
carplay.elf:     file format elf64-littleriscv


Disassembly of section .mod.text:

00000000e8800000 <memcmp>:
    e8800000:	479d                	li	a5,7
    e8800002:	02c7f063          	bgeu	a5,a2,e8800022 <memcmp+0x22>
    e8800006:	00b567b3          	or	a5,a0,a1
    e880000a:	8b9d                	andi	a5,a5,7
    e880000c:	469d                	li	a3,7
    e880000e:	e7b9                	bnez	a5,e880005c <memcmp+0x5c>
    e8800010:	6118                	ld	a4,0(a0)
    e8800012:	619c                	ld	a5,0(a1)
    e8800014:	04f71463          	bne	a4,a5,e880005c <memcmp+0x5c>
    e8800018:	1661                	addi	a2,a2,-8
    e880001a:	0521                	addi	a0,a0,8
    e880001c:	05a1                	addi	a1,a1,8
    e880001e:	fec6e9e3          	bltu	a3,a2,e8800010 <memcmp+0x10>
    e8800022:	fff60793          	addi	a5,a2,-1
    e8800026:	ca0d                	beqz	a2,e8800058 <memcmp+0x58>
    e8800028:	0005c683          	lbu	a3,0(a1)
    e880002c:	00054703          	lbu	a4,0(a0)
    e8800030:	00178613          	addi	a2,a5,1
    e8800034:	15fd                	addi	a1,a1,-1
    e8800036:	4785                	li	a5,1
    e8800038:	00e69d63          	bne	a3,a4,e8800052 <memcmp+0x52>
    e880003c:	00000013          	nop
    e8800040:	00c78c63          	beq	a5,a2,e8800058 <memcmp+0x58>
    e8800044:	80f5470b          	lrbu	a4,a0,a5,0
    e8800048:	0785                	addi	a5,a5,1
    e880004a:	80f5c68b          	lrbu	a3,a1,a5,0
    e880004e:	fed709e3          	beq	a4,a3,e8800040 <memcmp+0x40>
    e8800052:	40d7053b          	subw	a0,a4,a3
    e8800056:	8082                	ret
    e8800058:	4501                	li	a0,0
    e880005a:	8082                	ret
    e880005c:	fff60793          	addi	a5,a2,-1
    e8800060:	b7e1                	j	e8800028 <memcmp+0x28>
    e8800062:	0000                	unimp
    e8800064:	0000                	unimp
	...

00000000e8800068 <memcpy>:
    e8800068:	00a5c7b3          	xor	a5,a1,a0
    e880006c:	8b9d                	andi	a5,a5,7
    e880006e:	00c50333          	add	t1,a0,a2
    e8800072:	e7b9                	bnez	a5,e88000c0 <memcpy+0x58>
    e8800074:	471d                	li	a4,7
    e8800076:	04c77563          	bgeu	a4,a2,e88000c0 <memcpy+0x58>
    e880007a:	00757693          	andi	a3,a0,7
    e880007e:	872a                	mv	a4,a0
    e8800080:	eea1                	bnez	a3,e88000d8 <memcpy+0x70>
    e8800082:	ff837693          	andi	a3,t1,-8
    e8800086:	fc068613          	addi	a2,a3,-64
    e880008a:	06c76763          	bltu	a4,a2,e88000f8 <memcpy+0x90>
    e880008e:	02d77663          	bgeu	a4,a3,e88000ba <memcpy+0x52>
    e8800092:	16fd                	addi	a3,a3,-1
    e8800094:	8e99                	sub	a3,a3,a4
    e8800096:	828d                	srli	a3,a3,0x3
    e8800098:	00168893          	addi	a7,a3,1
    e880009c:	a019                	j	e88000a2 <memcpy+0x3a>
    e880009e:	0001                	nop
    e88000a0:	87c2                	mv	a5,a6
    e88000a2:	66f5c60b          	lrd	a2,a1,a5,3
    e88000a6:	00178813          	addi	a6,a5,1
    e88000aa:	66f7560b          	srd	a2,a4,a5,3
    e88000ae:	fed799e3          	bne	a5,a3,e88000a0 <memcpy+0x38>
    e88000b2:	00389793          	slli	a5,a7,0x3
    e88000b6:	973e                	add	a4,a4,a5
    e88000b8:	95be                	add	a1,a1,a5
    e88000ba:	00676763          	bltu	a4,t1,e88000c8 <memcpy+0x60>
    e88000be:	8082                	ret
    e88000c0:	872a                	mv	a4,a0
    e88000c2:	fe657ee3          	bgeu	a0,t1,e88000be <memcpy+0x56>
    e88000c6:	0001                	nop
    e88000c8:	9815c78b          	lbuia	a5,(a1),1,0
    e88000cc:	1817578b          	sbia	a5,(a4),1,0
    e88000d0:	fe676ce3          	bltu	a4,t1,e88000c8 <memcpy+0x60>
    e88000d4:	8082                	ret
    e88000d6:	0001                	nop
    e88000d8:	9815c68b          	lbuia	a3,(a1),1,0
    e88000dc:	1817568b          	sbia	a3,(a4),1,0
    e88000e0:	00777693          	andi	a3,a4,7
    e88000e4:	ded9                	beqz	a3,e8800082 <memcpy+0x1a>
    e88000e6:	9815c68b          	lbuia	a3,(a1),1,0
    e88000ea:	1817568b          	sbia	a3,(a4),1,0
    e88000ee:	00777693          	andi	a3,a4,7
    e88000f2:	f2fd                	bnez	a3,e88000d8 <memcpy+0x70>
    e88000f4:	b779                	j	e8800082 <memcpy+0x1a>
    e88000f6:	0001                	nop
    e88000f8:	f875c80b          	ldd	a6,t2,(a1),0,4
    e88000fc:	fbf5c28b          	ldd	t0,t6,(a1),1,4
    e8800100:	fdd5cf0b          	ldd	t5,t4,(a1),2,4
    e8800104:	ff15ce0b          	ldd	t3,a7,(a1),3,4
    e8800108:	04858593          	addi	a1,a1,72
    e880010c:	01073023          	sd	a6,0(a4)
    e8800110:	ff85b803          	ld	a6,-8(a1)
    e8800114:	00773423          	sd	t2,8(a4)
    e8800118:	fbf7528b          	sdd	t0,t6,(a4),1,4
    e880011c:	fdd75f0b          	sdd	t5,t4,(a4),2,4
    e8800120:	ff175e0b          	sdd	t3,a7,(a4),3,4
    e8800124:	04870713          	addi	a4,a4,72
    e8800128:	ff073c23          	sd	a6,-8(a4)
    e880012c:	fcc766e3          	bltu	a4,a2,e88000f8 <memcpy+0x90>
    e8800130:	bfb9                	j	e880008e <memcpy+0x26>
    e8800132:	0000                	unimp
    e8800134:	0000                	unimp
	...

00000000e8800138 <memset>:
    e8800138:	433d                	li	t1,15
    e880013a:	872a                	mv	a4,a0
    e880013c:	02c37163          	bgeu	t1,a2,e880015e <memset+0x26>
    e8800140:	00f77793          	andi	a5,a4,15
    e8800144:	e3c1                	bnez	a5,e88001c4 <memset+0x8c>
    e8800146:	e1bd                	bnez	a1,e88001ac <memset+0x74>
    e8800148:	ff067693          	andi	a3,a2,-16
    e880014c:	8a3d                	andi	a2,a2,15
    e880014e:	96ba                	add	a3,a3,a4
    e8800150:	e30c                	sd	a1,0(a4)
    e8800152:	e70c                	sd	a1,8(a4)
    e8800154:	0741                	addi	a4,a4,16
    e8800156:	fed76de3          	bltu	a4,a3,e8800150 <memset+0x18>
    e880015a:	e211                	bnez	a2,e880015e <memset+0x26>
    e880015c:	8082                	ret
    e880015e:	40c306b3          	sub	a3,t1,a2
    e8800162:	068a                	slli	a3,a3,0x2
    e8800164:	00000297          	auipc	t0,0x0
    e8800168:	9696                	add	a3,a3,t0
    e880016a:	00a68067          	jr	10(a3)
    e880016e:	00b70723          	sb	a1,14(a4)
    e8800172:	00b706a3          	sb	a1,13(a4)
    e8800176:	00b70623          	sb	a1,12(a4)
    e880017a:	00b705a3          	sb	a1,11(a4)
    e880017e:	00b70523          	sb	a1,10(a4)
    e8800182:	00b704a3          	sb	a1,9(a4)
    e8800186:	00b70423          	sb	a1,8(a4)
    e880018a:	00b703a3          	sb	a1,7(a4)
    e880018e:	00b70323          	sb	a1,6(a4)
    e8800192:	00b702a3          	sb	a1,5(a4)
    e8800196:	00b70223          	sb	a1,4(a4)
    e880019a:	00b701a3          	sb	a1,3(a4)
    e880019e:	00b70123          	sb	a1,2(a4)
    e88001a2:	00b700a3          	sb	a1,1(a4)
    e88001a6:	00b70023          	sb	a1,0(a4)
    e88001aa:	8082                	ret
    e88001ac:	0ff5f593          	andi	a1,a1,255
    e88001b0:	00859693          	slli	a3,a1,0x8
    e88001b4:	8dd5                	or	a1,a1,a3
    e88001b6:	01059693          	slli	a3,a1,0x10
    e88001ba:	8dd5                	or	a1,a1,a3
    e88001bc:	02059693          	slli	a3,a1,0x20
    e88001c0:	8dd5                	or	a1,a1,a3
    e88001c2:	b759                	j	e8800148 <memset+0x10>
    e88001c4:	00279693          	slli	a3,a5,0x2
    e88001c8:	00000297          	auipc	t0,0x0
    e88001cc:	9696                	add	a3,a3,t0
    e88001ce:	8286                	mv	t0,ra
    e88001d0:	fa2680e7          	jalr	-94(a3)
    e88001d4:	8096                	mv	ra,t0
    e88001d6:	17c1                	addi	a5,a5,-16
    e88001d8:	8f1d                	sub	a4,a4,a5
    e88001da:	963e                	add	a2,a2,a5
    e88001dc:	f8c371e3          	bgeu	t1,a2,e880015e <memset+0x26>
    e88001e0:	b79d                	j	e8800146 <memset+0xe>
	...

00000000e88001f0 <_printf_r>:
    e88001f0:	715d                	addi	sp,sp,-80
    e88001f2:	fcd1560b          	sdd	a2,a3,(sp),2,4
    e88001f6:	fef1570b          	sdd	a4,a5,(sp),3,4
    e88001fa:	e0c2                	sd	a6,64(sp)
    e88001fc:	e4c6                	sd	a7,72(sp)
    e88001fe:	862e                	mv	a2,a1
    e8800200:	690c                	ld	a1,16(a0)
    e8800202:	101c                	addi	a5,sp,32
    e8800204:	86be                	mv	a3,a5
    e8800206:	ec06                	sd	ra,24(sp)
    e8800208:	e43e                	sd	a5,8(sp)
    e880020a:	266000ef          	jal	ra,e8800470 <_vfprintf_r>
    e880020e:	60e2                	ld	ra,24(sp)
    e8800210:	6161                	addi	sp,sp,80
    e8800212:	8082                	ret
    e8800214:	00000013          	nop
    e8800218:	00000013          	nop
    e880021c:	00000013          	nop

00000000e8800220 <printf>:
    e8800220:	000d4317          	auipc	t1,0xd4
    e8800224:	ee830313          	addi	t1,t1,-280 # e88d4108 <_impure_ptr>
    e8800228:	00033303          	ld	t1,0(t1)
    e880022c:	711d                	addi	sp,sp,-96
    e880022e:	fed1560b          	sdd	a2,a3,(sp),3,4
    e8800232:	e4be                	sd	a5,72(sp)
    e8800234:	f42e                	sd	a1,40(sp)
    e8800236:	e0ba                	sd	a4,64(sp)
    e8800238:	e8c2                	sd	a6,80(sp)
    e880023a:	ecc6                	sd	a7,88(sp)
    e880023c:	01033583          	ld	a1,16(t1)
    e8800240:	103c                	addi	a5,sp,40
    e8800242:	862a                	mv	a2,a0
    e8800244:	86be                	mv	a3,a5
    e8800246:	851a                	mv	a0,t1
    e8800248:	ec06                	sd	ra,24(sp)
    e880024a:	e43e                	sd	a5,8(sp)
    e880024c:	224000ef          	jal	ra,e8800470 <_vfprintf_r>
    e8800250:	60e2                	ld	ra,24(sp)
    e8800252:	6125                	addi	sp,sp,96
    e8800254:	8082                	ret
	...

00000000e8800260 <strcat>:
    e8800260:	1141                	addi	sp,sp,-16
    e8800262:	e022                	sd	s0,0(sp)
    e8800264:	e406                	sd	ra,8(sp)
    e8800266:	00757793          	andi	a5,a0,7
    e880026a:	842a                	mv	s0,a0
    e880026c:	e79d                	bnez	a5,e880029a <strcat+0x3a>
    e880026e:	000d4797          	auipc	a5,0xd4
    e8800272:	b1278793          	addi	a5,a5,-1262 # e88d3d80 <dhcp_discover_request_options+0x578>
    e8800276:	6390                	ld	a2,0(a5)
    e8800278:	000d4797          	auipc	a5,0xd4
    e880027c:	b1078793          	addi	a5,a5,-1264 # e88d3d88 <dhcp_discover_request_options+0x580>
    e8800280:	6118                	ld	a4,0(a0)
    e8800282:	6394                	ld	a3,0(a5)
    e8800284:	a021                	j	e880028c <strcat+0x2c>
    e8800286:	0001                	nop
    e8800288:	6885470b          	ldib	a4,(a0),8,0
    e880028c:	00c707b3          	add	a5,a4,a2
    e8800290:	fff74713          	not	a4,a4
    e8800294:	8ff9                	and	a5,a5,a4
    e8800296:	8ff5                	and	a5,a5,a3
    e8800298:	dbe5                	beqz	a5,e8800288 <strcat+0x28>
    e880029a:	00054783          	lbu	a5,0(a0)
    e880029e:	c781                	beqz	a5,e88002a6 <strcat+0x46>
    e88002a0:	8815478b          	lbuib	a5,(a0),1,0
    e88002a4:	fff5                	bnez	a5,e88002a0 <strcat+0x40>
    e88002a6:	012000ef          	jal	ra,e88002b8 <strcpy>
    e88002aa:	8522                	mv	a0,s0
    e88002ac:	60a2                	ld	ra,8(sp)
    e88002ae:	6402                	ld	s0,0(sp)
    e88002b0:	0141                	addi	sp,sp,16
    e88002b2:	8082                	ret
    e88002b4:	0000                	unimp
	...

00000000e88002b8 <strcpy>:
    e88002b8:	00b567b3          	or	a5,a0,a1
    e88002bc:	8b9d                	andi	a5,a5,7
    e88002be:	e3c9                	bnez	a5,e8800340 <strcpy+0x88>
    e88002c0:	000d4797          	auipc	a5,0xd4
    e88002c4:	ad078793          	addi	a5,a5,-1328 # e88d3d90 <dhcp_discover_request_options+0x588>
    e88002c8:	6394                	ld	a3,0(a5)
    e88002ca:	6198                	ld	a4,0(a1)
    e88002cc:	567d                	li	a2,-1
    e88002ce:	00d777b3          	and	a5,a4,a3
    e88002d2:	97b6                	add	a5,a5,a3
    e88002d4:	8fd9                	or	a5,a5,a4
    e88002d6:	8fd5                	or	a5,a5,a3
    e88002d8:	08c79063          	bne	a5,a2,e8800358 <strcpy+0xa0>
    e88002dc:	862a                	mv	a2,a0
    e88002de:	587d                	li	a6,-1
    e88002e0:	7886570b          	sdia	a4,(a2),8,0
    e88002e4:	6885c70b          	ldib	a4,(a1),8,0
    e88002e8:	00d777b3          	and	a5,a4,a3
    e88002ec:	97b6                	add	a5,a5,a3
    e88002ee:	8fd9                	or	a5,a5,a4
    e88002f0:	8fd5                	or	a5,a5,a3
    e88002f2:	ff0787e3          	beq	a5,a6,e88002e0 <strcpy+0x28>
    e88002f6:	0005c783          	lbu	a5,0(a1)
    e88002fa:	0015c703          	lbu	a4,1(a1)
    e88002fe:	0025c683          	lbu	a3,2(a1)
    e8800302:	00f60023          	sb	a5,0(a2)
    e8800306:	cb9d                	beqz	a5,e880033c <strcpy+0x84>
    e8800308:	00e600a3          	sb	a4,1(a2)
    e880030c:	cb05                	beqz	a4,e880033c <strcpy+0x84>
    e880030e:	0035c783          	lbu	a5,3(a1)
    e8800312:	00d60123          	sb	a3,2(a2)
    e8800316:	c29d                	beqz	a3,e880033c <strcpy+0x84>
    e8800318:	0045c703          	lbu	a4,4(a1)
    e880031c:	00f601a3          	sb	a5,3(a2)
    e8800320:	cf91                	beqz	a5,e880033c <strcpy+0x84>
    e8800322:	0055c783          	lbu	a5,5(a1)
    e8800326:	00e60223          	sb	a4,4(a2)
    e880032a:	cb09                	beqz	a4,e880033c <strcpy+0x84>
    e880032c:	0065c703          	lbu	a4,6(a1)
    e8800330:	00f602a3          	sb	a5,5(a2)
    e8800334:	c781                	beqz	a5,e880033c <strcpy+0x84>
    e8800336:	00e60323          	sb	a4,6(a2)
    e880033a:	e30d                	bnez	a4,e880035c <strcpy+0xa4>
    e880033c:	8082                	ret
    e880033e:	0001                	nop
    e8800340:	4781                	li	a5,0
    e8800342:	0001                	nop
    e8800344:	00000013          	nop
    e8800348:	80f5c70b          	lrbu	a4,a1,a5,0
    e880034c:	00f5570b          	srb	a4,a0,a5,0
    e8800350:	0785                	addi	a5,a5,1
    e8800352:	fb7d                	bnez	a4,e8800348 <strcpy+0x90>
    e8800354:	8082                	ret
    e8800356:	0001                	nop
    e8800358:	862a                	mv	a2,a0
    e880035a:	bf71                	j	e88002f6 <strcpy+0x3e>
    e880035c:	000603a3          	sb	zero,7(a2)
    e8800360:	8082                	ret
    e8800362:	0000                	unimp
    e8800364:	0000                	unimp
	...

00000000e8800368 <strlen>:
    e8800368:	00757793          	andi	a5,a0,7
    e880036c:	872a                	mv	a4,a0
    e880036e:	efb1                	bnez	a5,e88003ca <strlen+0x62>
    e8800370:	000d4797          	auipc	a5,0xd4
    e8800374:	a2078793          	addi	a5,a5,-1504 # e88d3d90 <dhcp_discover_request_options+0x588>
    e8800378:	6394                	ld	a3,0(a5)
    e880037a:	55fd                	li	a1,-1
    e880037c:	00000013          	nop
    e8800380:	7887460b          	ldia	a2,(a4),8,0
    e8800384:	00d677b3          	and	a5,a2,a3
    e8800388:	97b6                	add	a5,a5,a3
    e880038a:	8fd1                	or	a5,a5,a2
    e880038c:	8fd5                	or	a5,a5,a3
    e880038e:	feb789e3          	beq	a5,a1,e8800380 <strlen+0x18>
    e8800392:	ff874783          	lbu	a5,-8(a4)
    e8800396:	40a706b3          	sub	a3,a4,a0
    e880039a:	c7a9                	beqz	a5,e88003e4 <strlen+0x7c>
    e880039c:	ff974783          	lbu	a5,-7(a4)
    e88003a0:	cf95                	beqz	a5,e88003dc <strlen+0x74>
    e88003a2:	ffa74783          	lbu	a5,-6(a4)
    e88003a6:	c7b9                	beqz	a5,e88003f4 <strlen+0x8c>
    e88003a8:	ffb74783          	lbu	a5,-5(a4)
    e88003ac:	c3a1                	beqz	a5,e88003ec <strlen+0x84>
    e88003ae:	ffc74603          	lbu	a2,-4(a4)
    e88003b2:	ffd74583          	lbu	a1,-3(a4)
    e88003b6:	ffe74783          	lbu	a5,-2(a4)
    e88003ba:	c221                	beqz	a2,e88003fa <strlen+0x92>
    e88003bc:	c1b1                	beqz	a1,e8800400 <strlen+0x98>
    e88003be:	00f03533          	snez	a0,a5
    e88003c2:	9536                	add	a0,a0,a3
    e88003c4:	1579                	addi	a0,a0,-2
    e88003c6:	8082                	ret
    e88003c8:	d6c5                	beqz	a3,e8800370 <strlen+0x8>
    e88003ca:	9817478b          	lbuia	a5,(a4),1,0
    e88003ce:	00777693          	andi	a3,a4,7
    e88003d2:	fbfd                	bnez	a5,e88003c8 <strlen+0x60>
    e88003d4:	8f09                	sub	a4,a4,a0
    e88003d6:	fff70513          	addi	a0,a4,-1
    e88003da:	8082                	ret
    e88003dc:	ff968513          	addi	a0,a3,-7
    e88003e0:	8082                	ret
    e88003e2:	0001                	nop
    e88003e4:	ff868513          	addi	a0,a3,-8
    e88003e8:	8082                	ret
    e88003ea:	0001                	nop
    e88003ec:	ffb68513          	addi	a0,a3,-5
    e88003f0:	8082                	ret
    e88003f2:	0001                	nop
    e88003f4:	ffa68513          	addi	a0,a3,-6
    e88003f8:	8082                	ret
    e88003fa:	ffc68513          	addi	a0,a3,-4
    e88003fe:	8082                	ret
    e8800400:	ffd68513          	addi	a0,a3,-3
    e8800404:	8082                	ret
	...

00000000e8800410 <close>:
    e8800410:	000d4797          	auipc	a5,0xd4
    e8800414:	cf878793          	addi	a5,a5,-776 # e88d4108 <_impure_ptr>
    e8800418:	85aa                	mv	a1,a0
    e880041a:	6388                	ld	a0,0(a5)
    e880041c:	4eb7b06f          	j	e887c106 <_close_r>
	...

00000000e8800430 <open>:
    e8800430:	715d                	addi	sp,sp,-80
    e8800432:	fcd1560b          	sdd	a2,a3,(sp),2,4
    e8800436:	0006069b          	sext.w	a3,a2
    e880043a:	862e                	mv	a2,a1
    e880043c:	85aa                	mv	a1,a0
    e880043e:	000d4517          	auipc	a0,0xd4
    e8800442:	cca50513          	addi	a0,a0,-822 # e88d4108 <_impure_ptr>
    e8800446:	6108                	ld	a0,0(a0)
    e8800448:	fef1570b          	sdd	a4,a5,(sp),3,4
    e880044c:	101c                	addi	a5,sp,32
    e880044e:	ec06                	sd	ra,24(sp)
    e8800450:	e0c2                	sd	a6,64(sp)
    e8800452:	e4c6                	sd	a7,72(sp)
    e8800454:	e43e                	sd	a5,8(sp)
    e8800456:	4f97b0ef          	jal	ra,e887c14e <_open_r>
    e880045a:	60e2                	ld	ra,24(sp)
    e880045c:	6161                	addi	sp,sp,80
    e880045e:	8082                	ret
	...

00000000e8800470 <_vfprintf_r>:
    e8800470:	d8010113          	addi	sp,sp,-640
    e8800474:	26113c23          	sd	ra,632(sp)
    e8800478:	25413823          	sd	s4,592(sp)
    e880047c:	25513423          	sd	s5,584(sp)
    e8800480:	23a13023          	sd	s10,544(sp)
    e8800484:	8a2e                	mv	s4,a1
    e8800486:	8d32                	mv	s10,a2
    e8800488:	e836                	sd	a3,16(sp)
    e880048a:	26813823          	sd	s0,624(sp)
    e880048e:	26913423          	sd	s1,616(sp)
    e8800492:	27213023          	sd	s2,608(sp)
    e8800496:	25313c23          	sd	s3,600(sp)
    e880049a:	25613023          	sd	s6,576(sp)
    e880049e:	23713c23          	sd	s7,568(sp)
    e88004a2:	23813823          	sd	s8,560(sp)
    e88004a6:	23913423          	sd	s9,552(sp)
    e88004aa:	21b13c23          	sd	s11,536(sp)
    e88004ae:	8aaa                	mv	s5,a0
    e88004b0:	510040ef          	jal	ra,e88049c0 <_localeconv_r>
    e88004b4:	611c                	ld	a5,0(a0)
    e88004b6:	853e                	mv	a0,a5
    e88004b8:	fcbe                	sd	a5,120(sp)
    e88004ba:	eafff0ef          	jal	ra,e8800368 <strlen>
    e88004be:	f8aa                	sd	a0,112(sp)
    e88004c0:	e202                	sd	zero,256(sp)
    e88004c2:	e602                	sd	zero,264(sp)
    e88004c4:	000a8663          	beqz	s5,e88004d0 <_vfprintf_r+0x60>
    e88004c8:	050aa783          	lw	a5,80(s5)
    e88004cc:	1a0789e3          	beqz	a5,e8800e7e <_vfprintf_r+0xa0e>
    e88004d0:	010a1703          	lh	a4,16(s4)
    e88004d4:	3c07378b          	extu	a5,a4,15,0
    e88004d8:	03279693          	slli	a3,a5,0x32
    e88004dc:	0006cf63          	bltz	a3,e88004fa <_vfprintf_r+0x8a>
    e88004e0:	0aca2683          	lw	a3,172(s4)
    e88004e4:	6789                	lui	a5,0x2
    e88004e6:	8fd9                	or	a5,a5,a4
    e88004e8:	7779                	lui	a4,0xffffe
    e88004ea:	177d                	addi	a4,a4,-1
    e88004ec:	8f75                	and	a4,a4,a3
    e88004ee:	00fa1823          	sh	a5,16(s4)
    e88004f2:	0aea2623          	sw	a4,172(s4)
    e88004f6:	3c07b78b          	extu	a5,a5,15,0
    e88004fa:	0087f713          	andi	a4,a5,8
    e88004fe:	1a070d63          	beqz	a4,e88006b8 <_vfprintf_r+0x248>
    e8800502:	018a3703          	ld	a4,24(s4)
    e8800506:	1a070963          	beqz	a4,e88006b8 <_vfprintf_r+0x248>
    e880050a:	8be9                	andi	a5,a5,26
    e880050c:	4729                	li	a4,10
    e880050e:	1ce78263          	beq	a5,a4,e88006d2 <_vfprintf_r+0x262>
    e8800512:	19010b13          	addi	s6,sp,400
    e8800516:	000d4783          	lbu	a5,0(s10)
    e880051a:	ea5a                	sd	s6,272(sp)
    e880051c:	f202                	sd	zero,288(sp)
    e880051e:	10012c23          	sw	zero,280(sp)
    e8800522:	f002                	sd	zero,32(sp)
    e8800524:	f402                	sd	zero,40(sp)
    e8800526:	e502                	sd	zero,136(sp)
    e8800528:	f482                	sd	zero,104(sp)
    e880052a:	e102                	sd	zero,128(sp)
    e880052c:	e902                	sd	zero,144(sp)
    e880052e:	e002                	sd	zero,0(sp)
    e8800530:	835a                	mv	t1,s6
    e8800532:	4dc1                	li	s11,16
    e8800534:	0009f997          	auipc	s3,0x9f
    e8800538:	a1c98993          	addi	s3,s3,-1508 # e889ef50 <zeroes.4591>
    e880053c:	74078e63          	beqz	a5,e8800c98 <_vfprintf_r+0x828>
    e8800540:	02500713          	li	a4,37
    e8800544:	00e79463          	bne	a5,a4,e880054c <_vfprintf_r+0xdc>
    e8800548:	04e0106f          	j	e8801596 <_vfprintf_r+0x1126>
    e880054c:	846a                	mv	s0,s10
    e880054e:	a021                	j	e8800556 <_vfprintf_r+0xe6>
    e8800550:	18e78e63          	beq	a5,a4,e88006ec <_vfprintf_r+0x27c>
    e8800554:	8426                	mv	s0,s1
    e8800556:	00144783          	lbu	a5,1(s0)
    e880055a:	00140493          	addi	s1,s0,1
    e880055e:	fbed                	bnez	a5,e8800550 <_vfprintf_r+0xe0>
    e8800560:	41a4893b          	subw	s2,s1,s10
    e8800564:	72090a63          	beqz	s2,e8800c98 <_vfprintf_r+0x828>
    e8800568:	7712                	ld	a4,288(sp)
    e880056a:	11812783          	lw	a5,280(sp)
    e880056e:	01a33023          	sd	s10,0(t1)
    e8800572:	974a                	add	a4,a4,s2
    e8800574:	2785                	addiw	a5,a5,1
    e8800576:	01233423          	sd	s2,8(t1)
    e880057a:	f23a                	sd	a4,288(sp)
    e880057c:	10f12c23          	sw	a5,280(sp)
    e8800580:	471d                	li	a4,7
    e8800582:	0341                	addi	t1,t1,16
    e8800584:	16f74a63          	blt	a4,a5,e88006f8 <_vfprintf_r+0x288>
    e8800588:	6702                	ld	a4,0(sp)
    e880058a:	00144783          	lbu	a5,1(s0)
    e880058e:	0127073b          	addw	a4,a4,s2
    e8800592:	e03a                	sd	a4,0(sp)
    e8800594:	70078263          	beqz	a5,e8800c98 <_vfprintf_r+0x828>
    e8800598:	00148913          	addi	s2,s1,1
    e880059c:	0014cf03          	lbu	t5,1(s1)
    e88005a0:	0c010fa3          	sb	zero,223(sp)
    e88005a4:	5efd                	li	t4,-1
    e88005a6:	4b81                	li	s7,0
    e88005a8:	4401                	li	s0,0
    e88005aa:	4c25                	li	s8,9
    e88005ac:	02a00493          	li	s1,42
    e88005b0:	0905                	addi	s2,s2,1
    e88005b2:	8cfa                	mv	s9,t5
    e88005b4:	05a00693          	li	a3,90
    e88005b8:	fe0c871b          	addiw	a4,s9,-32
    e88005bc:	87ba                	mv	a5,a4
    e88005be:	22e6e063          	bltu	a3,a4,e88007de <_vfprintf_r+0x36e>
    e88005c2:	0009f717          	auipc	a4,0x9f
    e88005c6:	80e70713          	addi	a4,a4,-2034 # e889edd0 <icmp6_param_problem+0x1d62>
    e88005ca:	54f7478b          	lurw	a5,a4,a5,2
    e88005ce:	97ba                	add	a5,a5,a4
    e88005d0:	8782                	jr	a5
    e88005d2:	0001                	nop
    e88005d4:	01046413          	ori	s0,s0,16
    e88005d8:	2401                	sext.w	s0,s0
    e88005da:	00094f03          	lbu	t5,0(s2)
    e88005de:	bfc9                	j	e88005b0 <_vfprintf_r+0x140>
    e88005e0:	01046413          	ori	s0,s0,16
    e88005e4:	2401                	sext.w	s0,s0
    e88005e6:	66c2                	ld	a3,16(sp)
    e88005e8:	02047793          	andi	a5,s0,32
    e88005ec:	00868713          	addi	a4,a3,8
    e88005f0:	060789e3          	beqz	a5,e8800e62 <_vfprintf_r+0x9f2>
    e88005f4:	6284                	ld	s1,0(a3)
    e88005f6:	bff47693          	andi	a3,s0,-1025
    e88005fa:	2681                	sext.w	a3,a3
    e88005fc:	e83a                	sd	a4,16(sp)
    e88005fe:	4781                	li	a5,0
    e8800600:	0c010fa3          	sb	zero,223(sp)
    e8800604:	577d                	li	a4,-1
    e8800606:	00ee89e3          	beq	t4,a4,e8800e18 <_vfprintf_r+0x9a8>
    e880060a:	f7f6f413          	andi	s0,a3,-129
    e880060e:	2401                	sext.w	s0,s0
    e8800610:	340496e3          	bnez	s1,e880115c <_vfprintf_r+0xcec>
    e8800614:	480e9ae3          	bnez	t4,e88012a8 <_vfprintf_r+0xe38>
    e8800618:	ebbd                	bnez	a5,e880068e <_vfprintf_r+0x21e>
    e880061a:	0016fc13          	andi	s8,a3,1
    e880061e:	18c10d13          	addi	s10,sp,396
    e8800622:	000c0b63          	beqz	s8,e8800638 <_vfprintf_r+0x1c8>
    e8800626:	03000793          	li	a5,48
    e880062a:	18f105a3          	sb	a5,395(sp)
    e880062e:	18b10d13          	addi	s10,sp,395
    e8800632:	0001                	nop
    e8800634:	00000013          	nop
    e8800638:	01dc24b3          	slt	s1,s8,t4
    e880063c:	87f6                	mv	a5,t4
    e880063e:	409c178b          	mveqz	a5,s8,s1
    e8800642:	0007849b          	sext.w	s1,a5
    e8800646:	0df14783          	lbu	a5,223(sp)
    e880064a:	ec02                	sd	zero,24(sp)
    e880064c:	e882                	sd	zero,80(sp)
    e880064e:	f082                	sd	zero,96(sp)
    e8800650:	ec82                	sd	zero,88(sp)
    e8800652:	56078363          	beqz	a5,e8800bb8 <_vfprintf_r+0x748>
    e8800656:	2485                	addiw	s1,s1,1
    e8800658:	a385                	j	e8800bb8 <_vfprintf_r+0x748>
    e880065a:	01046413          	ori	s0,s0,16
    e880065e:	2401                	sext.w	s0,s0
    e8800660:	66c2                	ld	a3,16(sp)
    e8800662:	02047793          	andi	a5,s0,32
    e8800666:	00868713          	addi	a4,a3,8
    e880066a:	76078b63          	beqz	a5,e8800de0 <_vfprintf_r+0x970>
    e880066e:	629c                	ld	a5,0(a3)
    e8800670:	84be                	mv	s1,a5
    e8800672:	7807c563          	bltz	a5,e8800dfc <_vfprintf_r+0x98c>
    e8800676:	57fd                	li	a5,-1
    e8800678:	62fe89e3          	beq	t4,a5,e88014aa <_vfprintf_r+0x103a>
    e880067c:	e83a                	sd	a4,16(sp)
    e880067e:	f7f47693          	andi	a3,s0,-129
    e8800682:	2681                	sext.w	a3,a3
    e8800684:	2e0490e3          	bnez	s1,e8801164 <_vfprintf_r+0xcf4>
    e8800688:	2e0e91e3          	bnez	t4,e880116a <_vfprintf_r+0xcfa>
    e880068c:	8436                	mv	s0,a3
    e880068e:	4e81                	li	t4,0
    e8800690:	4c01                	li	s8,0
    e8800692:	18c10d13          	addi	s10,sp,396
    e8800696:	b74d                	j	e8800638 <_vfprintf_r+0x1c8>
    e8800698:	01046413          	ori	s0,s0,16
    e880069c:	2401                	sext.w	s0,s0
    e880069e:	66c2                	ld	a3,16(sp)
    e88006a0:	02047793          	andi	a5,s0,32
    e88006a4:	00868713          	addi	a4,a3,8
    e88006a8:	70078b63          	beqz	a5,e8800dbe <_vfprintf_r+0x94e>
    e88006ac:	6284                	ld	s1,0(a3)
    e88006ae:	e83a                	sd	a4,16(sp)
    e88006b0:	86a2                	mv	a3,s0
    e88006b2:	4785                	li	a5,1
    e88006b4:	b7b1                	j	e8800600 <_vfprintf_r+0x190>
    e88006b6:	0001                	nop
    e88006b8:	85d2                	mv	a1,s4
    e88006ba:	8556                	mv	a0,s5
    e88006bc:	1c5010ef          	jal	ra,e8802080 <__swsetup_r>
    e88006c0:	c119                	beqz	a0,e88006c6 <_vfprintf_r+0x256>
    e88006c2:	64a0106f          	j	e8801d0c <_vfprintf_r+0x189c>
    e88006c6:	010a5783          	lhu	a5,16(s4)
    e88006ca:	4729                	li	a4,10
    e88006cc:	8be9                	andi	a5,a5,26
    e88006ce:	e4e792e3          	bne	a5,a4,e8800512 <_vfprintf_r+0xa2>
    e88006d2:	012a1783          	lh	a5,18(s4)
    e88006d6:	e207cee3          	bltz	a5,e8800512 <_vfprintf_r+0xa2>
    e88006da:	66c2                	ld	a3,16(sp)
    e88006dc:	866a                	mv	a2,s10
    e88006de:	85d2                	mv	a1,s4
    e88006e0:	8556                	mv	a0,s5
    e88006e2:	0ef010ef          	jal	ra,e8801fd0 <__sbprintf>
    e88006e6:	e02a                	sd	a0,0(sp)
    e88006e8:	a0a9                	j	e8800732 <_vfprintf_r+0x2c2>
    e88006ea:	0001                	nop
    e88006ec:	41a4893b          	subw	s2,s1,s10
    e88006f0:	ea0904e3          	beqz	s2,e8800598 <_vfprintf_r+0x128>
    e88006f4:	bd95                	j	e8800568 <_vfprintf_r+0xf8>
    e88006f6:	0001                	nop
    e88006f8:	0a10                	addi	a2,sp,272
    e88006fa:	85d2                	mv	a1,s4
    e88006fc:	8556                	mv	a0,s5
    e88006fe:	062070ef          	jal	ra,e8807760 <__sprint_r>
    e8800702:	e10d                	bnez	a0,e8800724 <_vfprintf_r+0x2b4>
    e8800704:	835a                	mv	t1,s6
    e8800706:	b549                	j	e8800588 <_vfprintf_r+0x118>
    e8800708:	0a10                	addi	a2,sp,272
    e880070a:	85d2                	mv	a1,s4
    e880070c:	8556                	mv	a0,s5
    e880070e:	052070ef          	jal	ra,e8807760 <__sprint_r>
    e8800712:	56050563          	beqz	a0,e8800c7c <_vfprintf_r+0x80c>
    e8800716:	0001                	nop
    e8800718:	67e2                	ld	a5,24(sp)
    e880071a:	c789                	beqz	a5,e8800724 <_vfprintf_r+0x2b4>
    e880071c:	85be                	mv	a1,a5
    e880071e:	8556                	mv	a0,s5
    e8800720:	2b57b0ef          	jal	ra,e887c1d4 <_free_r>
    e8800724:	010a5783          	lhu	a5,16(s4)
    e8800728:	0407f793          	andi	a5,a5,64
    e880072c:	c399                	beqz	a5,e8800732 <_vfprintf_r+0x2c2>
    e880072e:	5de0106f          	j	e8801d0c <_vfprintf_r+0x189c>
    e8800732:	27813083          	ld	ra,632(sp)
    e8800736:	27013403          	ld	s0,624(sp)
    e880073a:	6502                	ld	a0,0(sp)
    e880073c:	26813483          	ld	s1,616(sp)
    e8800740:	26013903          	ld	s2,608(sp)
    e8800744:	25813983          	ld	s3,600(sp)
    e8800748:	25013a03          	ld	s4,592(sp)
    e880074c:	24813a83          	ld	s5,584(sp)
    e8800750:	24013b03          	ld	s6,576(sp)
    e8800754:	23813b83          	ld	s7,568(sp)
    e8800758:	23013c03          	ld	s8,560(sp)
    e880075c:	22813c83          	ld	s9,552(sp)
    e8800760:	22013d03          	ld	s10,544(sp)
    e8800764:	21813d83          	ld	s11,536(sp)
    e8800768:	28010113          	addi	sp,sp,640
    e880076c:	8082                	ret
    e880076e:	000a3797          	auipc	a5,0xa3
    e8800772:	a3a78793          	addi	a5,a5,-1478 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e8800776:	66c2                	ld	a3,16(sp)
    e8800778:	f43e                	sd	a5,40(sp)
    e880077a:	02047793          	andi	a5,s0,32
    e880077e:	00868713          	addi	a4,a3,8
    e8800782:	c7c1                	beqz	a5,e880080a <_vfprintf_r+0x39a>
    e8800784:	6284                	ld	s1,0(a3)
    e8800786:	00147793          	andi	a5,s0,1
    e880078a:	cb99                	beqz	a5,e88007a0 <_vfprintf_r+0x330>
    e880078c:	c891                	beqz	s1,e88007a0 <_vfprintf_r+0x330>
    e880078e:	00246413          	ori	s0,s0,2
    e8800792:	03000793          	li	a5,48
    e8800796:	0ef10023          	sb	a5,224(sp)
    e880079a:	0f9100a3          	sb	s9,225(sp)
    e880079e:	2401                	sext.w	s0,s0
    e88007a0:	bff47693          	andi	a3,s0,-1025
    e88007a4:	2681                	sext.w	a3,a3
    e88007a6:	e83a                	sd	a4,16(sp)
    e88007a8:	4789                	li	a5,2
    e88007aa:	bd99                	j	e8800600 <_vfprintf_r+0x190>
    e88007ac:	4b81                	li	s7,0
    e88007ae:	0001                	nop
    e88007b0:	9819470b          	lbuia	a4,(s2),1,0
    e88007b4:	002b979b          	slliw	a5,s7,0x2
    e88007b8:	01778bbb          	addw	s7,a5,s7
    e88007bc:	fd0c8f1b          	addiw	t5,s9,-48
    e88007c0:	001b9b9b          	slliw	s7,s7,0x1
    e88007c4:	fd07079b          	addiw	a5,a4,-48
    e88007c8:	017f0bbb          	addw	s7,t5,s7
    e88007cc:	00070c9b          	sext.w	s9,a4
    e88007d0:	fefc70e3          	bgeu	s8,a5,e88007b0 <_vfprintf_r+0x340>
    e88007d4:	fe0c871b          	addiw	a4,s9,-32
    e88007d8:	87ba                	mv	a5,a4
    e88007da:	dee6f4e3          	bgeu	a3,a4,e88005c2 <_vfprintf_r+0x152>
    e88007de:	4a0c8d63          	beqz	s9,e8800c98 <_vfprintf_r+0x828>
    e88007e2:	13910423          	sb	s9,296(sp)
    e88007e6:	0c010fa3          	sb	zero,223(sp)
    e88007ea:	4485                	li	s1,1
    e88007ec:	4c05                	li	s8,1
    e88007ee:	12810d13          	addi	s10,sp,296
    e88007f2:	ae5d                	j	e8800ba8 <_vfprintf_r+0x738>
    e88007f4:	0009f797          	auipc	a5,0x9f
    e88007f8:	66c78793          	addi	a5,a5,1644 # e889fe60 <TWO52+0x268>
    e88007fc:	66c2                	ld	a3,16(sp)
    e88007fe:	f43e                	sd	a5,40(sp)
    e8800800:	02047793          	andi	a5,s0,32
    e8800804:	00868713          	addi	a4,a3,8
    e8800808:	ffb5                	bnez	a5,e8800784 <_vfprintf_r+0x314>
    e880080a:	01047793          	andi	a5,s0,16
    e880080e:	480791e3          	bnez	a5,e8801490 <_vfprintf_r+0x1020>
    e8800812:	66c2                	ld	a3,16(sp)
    e8800814:	04047793          	andi	a5,s0,64
    e8800818:	4284                	lw	s1,0(a3)
    e880081a:	6a078be3          	beqz	a5,e88016d0 <_vfprintf_r+0x1260>
    e880081e:	3c04b48b          	extu	s1,s1,15,0
    e8800822:	b795                	j	e8800786 <_vfprintf_r+0x316>
    e8800824:	00094f03          	lbu	t5,0(s2)
    e8800828:	00446413          	ori	s0,s0,4
    e880082c:	2401                	sext.w	s0,s0
    e880082e:	b349                	j	e88005b0 <_vfprintf_r+0x140>
    e8800830:	02b00793          	li	a5,43
    e8800834:	0cf10fa3          	sb	a5,223(sp)
    e8800838:	00094f03          	lbu	t5,0(s2)
    e880083c:	bb95                	j	e88005b0 <_vfprintf_r+0x140>
    e880083e:	00847793          	andi	a5,s0,8
    e8800842:	42079be3          	bnez	a5,e8801478 <_vfprintf_r+0x1008>
    e8800846:	67c2                	ld	a5,16(sp)
    e8800848:	ec1a                	sd	t1,24(sp)
    e880084a:	e476                	sd	t4,8(sp)
    e880084c:	2388                	fld	fa0,0(a5)
    e880084e:	07a1                	addi	a5,a5,8
    e8800850:	e83e                	sd	a5,16(sp)
    e8800852:	2bc0a0ef          	jal	ra,e880ab0e <__extenddftf2>
    e8800856:	e22a                	sd	a0,256(sp)
    e8800858:	6362                	ld	t1,24(sp)
    e880085a:	6ea2                	ld	t4,8(sp)
    e880085c:	e62e                	sd	a1,264(sp)
    e880085e:	0208                	addi	a0,sp,256
    e8800860:	ec1a                	sd	t1,24(sp)
    e8800862:	e476                	sd	t4,8(sp)
    e8800864:	10c040ef          	jal	ra,e8804970 <_ldcheck>
    e8800868:	d5aa                	sw	a0,232(sp)
    e880086a:	4789                	li	a5,2
    e880086c:	6ea2                	ld	t4,8(sp)
    e880086e:	6362                	ld	t1,24(sp)
    e8800870:	5cf50ce3          	beq	a0,a5,e8801648 <_vfprintf_r+0x11d8>
    e8800874:	4785                	li	a5,1
    e8800876:	6af506e3          	beq	a0,a5,e8801722 <_vfprintf_r+0x12b2>
    e880087a:	06100713          	li	a4,97
    e880087e:	00ec9463          	bne	s9,a4,e8800886 <_vfprintf_r+0x416>
    e8800882:	5220106f          	j	e8801da4 <_vfprintf_r+0x1934>
    e8800886:	04100713          	li	a4,65
    e880088a:	00ec9463          	bne	s9,a4,e8800892 <_vfprintf_r+0x422>
    e880088e:	0e40106f          	j	e8801972 <_vfprintf_r+0x1502>
    e8800892:	fdfcf713          	andi	a4,s9,-33
    e8800896:	f13a                	sd	a4,160(sp)
    e8800898:	fb970713          	addi	a4,a4,-71
    e880089c:	001e8693          	addi	a3,t4,1
    e88008a0:	43de978b          	mvnez	a5,t4,t4
    e88008a4:	00173713          	seqz	a4,a4
    e88008a8:	6c32                	ld	s8,264(sp)
    e88008aa:	42e79e8b          	mvnez	t4,a5,a4
    e88008ae:	00d03733          	snez	a4,a3
    e88008b2:	10046793          	ori	a5,s0,256
    e88008b6:	4699                	li	a3,6
    e88008b8:	40e69e8b          	mveqz	t4,a3,a4
    e88008bc:	2781                	sext.w	a5,a5
    e88008be:	6f92                	ld	t6,256(sp)
    e88008c0:	000c5463          	bgez	s8,e88008c8 <_vfprintf_r+0x458>
    e88008c4:	3440106f          	j	e8801c08 <_vfprintf_r+0x1798>
    e88008c8:	e1a2                	sd	s0,192(sp)
    e88008ca:	e582                	sd	zero,200(sp)
    e88008cc:	843e                	mv	s0,a5
    e88008ce:	ec02                	sd	zero,24(sp)
    e88008d0:	770a                	ld	a4,160(sp)
    e88008d2:	04600793          	li	a5,70
    e88008d6:	00f71463          	bne	a4,a5,e88008de <_vfprintf_r+0x46e>
    e88008da:	26a0106f          	j	e8801b44 <_vfprintf_r+0x16d4>
    e88008de:	f81a                	sd	t1,48(sp)
    e88008e0:	04500793          	li	a5,69
    e88008e4:	00f71463          	bne	a4,a5,e88008ec <_vfprintf_r+0x47c>
    e88008e8:	4ca0106f          	j	e8801db2 <_vfprintf_r+0x1942>
    e88008ec:	8776                	mv	a4,t4
    e88008ee:	11bc                	addi	a5,sp,232
    e88008f0:	85fe                	mv	a1,t6
    e88008f2:	0f810893          	addi	a7,sp,248
    e88008f6:	0ec10813          	addi	a6,sp,236
    e88008fa:	4689                	li	a3,2
    e88008fc:	8662                	mv	a2,s8
    e88008fe:	8556                	mv	a0,s5
    e8800900:	f076                	sd	t4,32(sp)
    e8800902:	e47e                	sd	t6,8(sp)
    e8800904:	1fc030ef          	jal	ra,e8803b00 <_ldtoa_r>
    e8800908:	8d2a                	mv	s10,a0
    e880090a:	770a                	ld	a4,160(sp)
    e880090c:	04700793          	li	a5,71
    e8800910:	6fa2                	ld	t6,8(sp)
    e8800912:	7e82                	ld	t4,32(sp)
    e8800914:	7342                	ld	t1,48(sp)
    e8800916:	00f70463          	beq	a4,a5,e880091e <_vfprintf_r+0x4ae>
    e880091a:	67e0106f          	j	e8801f98 <_vfprintf_r+0x1b28>
    e880091e:	678e                	ld	a5,192(sp)
    e8800920:	01d504b3          	add	s1,a0,t4
    e8800924:	8b85                	andi	a5,a5,1
    e8800926:	c399                	beqz	a5,e880092c <_vfprintf_r+0x4bc>
    e8800928:	2560106f          	j	e8801b7e <_vfprintf_r+0x170e>
    e880092c:	77ee                	ld	a5,248(sp)
    e880092e:	41a787bb          	subw	a5,a5,s10
    e8800932:	f03e                	sd	a5,32(sp)
    e8800934:	572e                	lw	a4,232(sp)
    e8800936:	04700793          	li	a5,71
    e880093a:	ecba                	sd	a4,88(sp)
    e880093c:	770a                	ld	a4,160(sp)
    e880093e:	00f71463          	bne	a4,a5,e8800946 <_vfprintf_r+0x4d6>
    e8800942:	1ea0106f          	j	e8801b2c <_vfprintf_r+0x16bc>
    e8800946:	770a                	ld	a4,160(sp)
    e8800948:	04600793          	li	a5,70
    e880094c:	00f71463          	bne	a4,a5,e8800954 <_vfprintf_r+0x4e4>
    e8800950:	3a00106f          	j	e8801cf0 <_vfprintf_r+0x1880>
    e8800954:	67e6                	ld	a5,88(sp)
    e8800956:	758a                	ld	a1,160(sp)
    e8800958:	04100693          	li	a3,65
    e880095c:	37fd                	addiw	a5,a5,-1
    e880095e:	d5be                	sw	a5,232(sp)
    e8800960:	0ffcf713          	andi	a4,s9,255
    e8800964:	4601                	li	a2,0
    e8800966:	00d59663          	bne	a1,a3,e8800972 <_vfprintf_r+0x502>
    e880096a:	273d                	addiw	a4,a4,15
    e880096c:	0ff77713          	andi	a4,a4,255
    e8800970:	4605                	li	a2,1
    e8800972:	0ee10823          	sb	a4,240(sp)
    e8800976:	02b00713          	li	a4,43
    e880097a:	0007d763          	bgez	a5,e8800988 <_vfprintf_r+0x518>
    e880097e:	6766                	ld	a4,88(sp)
    e8800980:	4785                	li	a5,1
    e8800982:	9f99                	subw	a5,a5,a4
    e8800984:	02d00713          	li	a4,45
    e8800988:	0ee108a3          	sb	a4,241(sp)
    e880098c:	4725                	li	a4,9
    e880098e:	00f74463          	blt	a4,a5,e8800996 <_vfprintf_r+0x526>
    e8800992:	5080106f          	j	e8801e9a <_vfprintf_r+0x1a2a>
    e8800996:	0ff10593          	addi	a1,sp,255
    e880099a:	862e                	mv	a2,a1
    e880099c:	4529                	li	a0,10
    e880099e:	06300893          	li	a7,99
    e88009a2:	a019                	j	e88009a8 <_vfprintf_r+0x538>
    e88009a4:	8636                	mv	a2,a3
    e88009a6:	87ba                	mv	a5,a4
    e88009a8:	02a7e73b          	remw	a4,a5,a0
    e88009ac:	fff60693          	addi	a3,a2,-1
    e88009b0:	0307071b          	addiw	a4,a4,48
    e88009b4:	fee60fa3          	sb	a4,-1(a2)
    e88009b8:	02a7c73b          	divw	a4,a5,a0
    e88009bc:	fef8c4e3          	blt	a7,a5,e88009a4 <_vfprintf_r+0x534>
    e88009c0:	0307079b          	addiw	a5,a4,48
    e88009c4:	0ff7f793          	andi	a5,a5,255
    e88009c8:	fef68fa3          	sb	a5,-1(a3)
    e88009cc:	ffe60713          	addi	a4,a2,-2
    e88009d0:	00b76463          	bltu	a4,a1,e88009d8 <_vfprintf_r+0x568>
    e88009d4:	5cc0106f          	j	e8801fa0 <_vfprintf_r+0x1b30>
    e88009d8:	8d91                	sub	a1,a1,a2
    e88009da:	56fd                	li	a3,-1
    e88009dc:	1998                	addi	a4,sp,240
    e88009de:	a021                	j	e88009e6 <_vfprintf_r+0x576>
    e88009e0:	80d6478b          	lrbu	a5,a2,a3,0
    e88009e4:	0685                	addi	a3,a3,1
    e88009e6:	00d70533          	add	a0,a4,a3
    e88009ea:	00f501a3          	sb	a5,3(a0)
    e88009ee:	fed599e3          	bne	a1,a3,e88009e0 <_vfprintf_r+0x570>
    e88009f2:	10110793          	addi	a5,sp,257
    e88009f6:	8f91                	sub	a5,a5,a2
    e88009f8:	0f210693          	addi	a3,sp,242
    e88009fc:	97b6                	add	a5,a5,a3
    e88009fe:	9f99                	subw	a5,a5,a4
    e8800a00:	e53e                	sd	a5,136(sp)
    e8800a02:	67aa                	ld	a5,136(sp)
    e8800a04:	7682                	ld	a3,32(sp)
    e8800a06:	4705                	li	a4,1
    e8800a08:	00f68c3b          	addw	s8,a3,a5
    e8800a0c:	87e2                	mv	a5,s8
    e8800a0e:	00d74463          	blt	a4,a3,e8800a16 <_vfprintf_r+0x5a6>
    e8800a12:	5220106f          	j	e8801f34 <_vfprintf_r+0x1ac4>
    e8800a16:	7746                	ld	a4,112(sp)
    e8800a18:	00e78c3b          	addw	s8,a5,a4
    e8800a1c:	678e                	ld	a5,192(sp)
    e8800a1e:	fffc4493          	not	s1,s8
    e8800a22:	94fd                	srai	s1,s1,0x3f
    e8800a24:	bff7f413          	andi	s0,a5,-1025
    e8800a28:	2401                	sext.w	s0,s0
    e8800a2a:	009c74b3          	and	s1,s8,s1
    e8800a2e:	10046413          	ori	s0,s0,256
    e8800a32:	2481                	sext.w	s1,s1
    e8800a34:	e882                	sd	zero,80(sp)
    e8800a36:	f082                	sd	zero,96(sp)
    e8800a38:	ec82                	sd	zero,88(sp)
    e8800a3a:	67ae                	ld	a5,200(sp)
    e8800a3c:	e399                	bnez	a5,e8800a42 <_vfprintf_r+0x5d2>
    e8800a3e:	1ba0106f          	j	e8801bf8 <_vfprintf_r+0x1788>
    e8800a42:	02d00793          	li	a5,45
    e8800a46:	0cf10fa3          	sb	a5,223(sp)
    e8800a4a:	4e81                	li	t4,0
    e8800a4c:	2485                	addiw	s1,s1,1
    e8800a4e:	a2ad                	j	e8800bb8 <_vfprintf_r+0x748>
    e8800a50:	00094f03          	lbu	t5,0(s2)
    e8800a54:	06800793          	li	a5,104
    e8800a58:	2aff0fe3          	beq	t5,a5,e8801516 <_vfprintf_r+0x10a6>
    e8800a5c:	04046413          	ori	s0,s0,64
    e8800a60:	2401                	sext.w	s0,s0
    e8800a62:	b6b9                	j	e88005b0 <_vfprintf_r+0x140>
    e8800a64:	08046413          	ori	s0,s0,128
    e8800a68:	2401                	sext.w	s0,s0
    e8800a6a:	00094f03          	lbu	t5,0(s2)
    e8800a6e:	b689                	j	e88005b0 <_vfprintf_r+0x140>
    e8800a70:	87ca                	mv	a5,s2
    e8800a72:	9817cc8b          	lbuia	s9,(a5),1,0
    e8800a76:	009c9463          	bne	s9,s1,e8800a7e <_vfprintf_r+0x60e>
    e8800a7a:	4f60106f          	j	e8801f70 <_vfprintf_r+0x1b00>
    e8800a7e:	fd0c871b          	addiw	a4,s9,-48
    e8800a82:	893e                	mv	s2,a5
    e8800a84:	4e81                	li	t4,0
    e8800a86:	b2ec69e3          	bltu	s8,a4,e88005b8 <_vfprintf_r+0x148>
    e8800a8a:	0001                	nop
    e8800a8c:	00000013          	nop
    e8800a90:	002e979b          	slliw	a5,t4,0x2
    e8800a94:	98194c8b          	lbuia	s9,(s2),1,0
    e8800a98:	01d78ebb          	addw	t4,a5,t4
    e8800a9c:	001e9e9b          	slliw	t4,t4,0x1
    e8800aa0:	00ee8ebb          	addw	t4,t4,a4
    e8800aa4:	fd0c871b          	addiw	a4,s9,-48
    e8800aa8:	feec74e3          	bgeu	s8,a4,e8800a90 <_vfprintf_r+0x620>
    e8800aac:	b631                	j	e88005b8 <_vfprintf_r+0x148>
    e8800aae:	67c2                	ld	a5,16(sp)
    e8800ab0:	00094f03          	lbu	t5,0(s2)
    e8800ab4:	5887cb8b          	lwia	s7,(a5),8,0
    e8800ab8:	e83e                	sd	a5,16(sp)
    e8800aba:	ae0bdbe3          	bgez	s7,e88005b0 <_vfprintf_r+0x140>
    e8800abe:	41700bbb          	negw	s7,s7
    e8800ac2:	2b81                	sext.w	s7,s7
    e8800ac4:	b395                	j	e8800828 <_vfprintf_r+0x3b8>
    e8800ac6:	8556                	mv	a0,s5
    e8800ac8:	ec1a                	sd	t1,24(sp)
    e8800aca:	e476                	sd	t4,8(sp)
    e8800acc:	6f5030ef          	jal	ra,e88049c0 <_localeconv_r>
    e8800ad0:	651c                	ld	a5,8(a0)
    e8800ad2:	853e                	mv	a0,a5
    e8800ad4:	e93e                	sd	a5,144(sp)
    e8800ad6:	893ff0ef          	jal	ra,e8800368 <strlen>
    e8800ada:	e12a                	sd	a0,128(sp)
    e8800adc:	8caa                	mv	s9,a0
    e8800ade:	8556                	mv	a0,s5
    e8800ae0:	6e1030ef          	jal	ra,e88049c0 <_localeconv_r>
    e8800ae4:	6918                	ld	a4,16(a0)
    e8800ae6:	6ea2                	ld	t4,8(sp)
    e8800ae8:	6362                	ld	t1,24(sp)
    e8800aea:	f4ba                	sd	a4,104(sp)
    e8800aec:	00094f03          	lbu	t5,0(s2)
    e8800af0:	ac0c80e3          	beqz	s9,e88005b0 <_vfprintf_r+0x140>
    e8800af4:	aa070ee3          	beqz	a4,e88005b0 <_vfprintf_r+0x140>
    e8800af8:	00074703          	lbu	a4,0(a4)
    e8800afc:	40046793          	ori	a5,s0,1024
    e8800b00:	2781                	sext.w	a5,a5
    e8800b02:	42e7940b          	mvnez	s0,a5,a4
    e8800b06:	b46d                	j	e88005b0 <_vfprintf_r+0x140>
    e8800b08:	00146413          	ori	s0,s0,1
    e8800b0c:	2401                	sext.w	s0,s0
    e8800b0e:	00094f03          	lbu	t5,0(s2)
    e8800b12:	bc79                	j	e88005b0 <_vfprintf_r+0x140>
    e8800b14:	0df14783          	lbu	a5,223(sp)
    e8800b18:	00094f03          	lbu	t5,0(s2)
    e8800b1c:	a8079ae3          	bnez	a5,e88005b0 <_vfprintf_r+0x140>
    e8800b20:	02000793          	li	a5,32
    e8800b24:	0cf10fa3          	sb	a5,223(sp)
    e8800b28:	b461                	j	e88005b0 <_vfprintf_r+0x140>
    e8800b2a:	6742                	ld	a4,16(sp)
    e8800b2c:	0c010fa3          	sb	zero,223(sp)
    e8800b30:	78874d0b          	ldia	s10,(a4),8,0
    e8800b34:	200d01e3          	beqz	s10,e8801536 <_vfprintf_r+0x10c6>
    e8800b38:	57fd                	li	a5,-1
    e8800b3a:	36fe81e3          	beq	t4,a5,e880169c <_vfprintf_r+0x122c>
    e8800b3e:	8676                	mv	a2,t4
    e8800b40:	4581                	li	a1,0
    e8800b42:	856a                	mv	a0,s10
    e8800b44:	f83a                	sd	a4,48(sp)
    e8800b46:	e81a                	sd	t1,16(sp)
    e8800b48:	e476                	sd	t4,8(sp)
    e8800b4a:	4eb7a0ef          	jal	ra,e887b834 <memchr>
    e8800b4e:	ec2a                	sd	a0,24(sp)
    e8800b50:	6ea2                	ld	t4,8(sp)
    e8800b52:	6342                	ld	t1,16(sp)
    e8800b54:	7742                	ld	a4,48(sp)
    e8800b56:	e119                	bnez	a0,e8800b5c <_vfprintf_r+0x6ec>
    e8800b58:	1320106f          	j	e8801c8a <_vfprintf_r+0x181a>
    e8800b5c:	67e2                	ld	a5,24(sp)
    e8800b5e:	e83a                	sd	a4,16(sp)
    e8800b60:	ec02                	sd	zero,24(sp)
    e8800b62:	41a78c3b          	subw	s8,a5,s10
    e8800b66:	fffc4493          	not	s1,s8
    e8800b6a:	0df14783          	lbu	a5,223(sp)
    e8800b6e:	94fd                	srai	s1,s1,0x3f
    e8800b70:	e882                	sd	zero,80(sp)
    e8800b72:	f082                	sd	zero,96(sp)
    e8800b74:	ec82                	sd	zero,88(sp)
    e8800b76:	009c74b3          	and	s1,s8,s1
    e8800b7a:	2481                	sext.w	s1,s1
    e8800b7c:	4e81                	li	t4,0
    e8800b7e:	ac079ce3          	bnez	a5,e8800656 <_vfprintf_r+0x1e6>
    e8800b82:	a81d                	j	e8800bb8 <_vfprintf_r+0x748>
    e8800b84:	00846413          	ori	s0,s0,8
    e8800b88:	2401                	sext.w	s0,s0
    e8800b8a:	00094f03          	lbu	t5,0(s2)
    e8800b8e:	b40d                	j	e88005b0 <_vfprintf_r+0x140>
    e8800b90:	6d42                	ld	s10,16(sp)
    e8800b92:	0c010fa3          	sb	zero,223(sp)
    e8800b96:	4485                	li	s1,1
    e8800b98:	588d478b          	lwia	a5,(s10),8,0
    e8800b9c:	4c05                	li	s8,1
    e8800b9e:	e86a                	sd	s10,16(sp)
    e8800ba0:	12f10423          	sb	a5,296(sp)
    e8800ba4:	12810d13          	addi	s10,sp,296
    e8800ba8:	ec02                	sd	zero,24(sp)
    e8800baa:	4e81                	li	t4,0
    e8800bac:	e882                	sd	zero,80(sp)
    e8800bae:	f082                	sd	zero,96(sp)
    e8800bb0:	ec82                	sd	zero,88(sp)
    e8800bb2:	0001                	nop
    e8800bb4:	00000013          	nop
    e8800bb8:	0024879b          	addiw	a5,s1,2
    e8800bbc:	00247893          	andi	a7,s0,2
    e8800bc0:	2881                	sext.w	a7,a7
    e8800bc2:	08447293          	andi	t0,s0,132
    e8800bc6:	4317948b          	mvnez	s1,a5,a7
    e8800bca:	7792                	ld	a5,288(sp)
    e8800bcc:	00029663          	bnez	t0,e8800bd8 <_vfprintf_r+0x768>
    e8800bd0:	409b86bb          	subw	a3,s7,s1
    e8800bd4:	5ad04663          	bgtz	a3,e8801180 <_vfprintf_r+0xd10>
    e8800bd8:	0df14703          	lbu	a4,223(sp)
    e8800bdc:	c31d                	beqz	a4,e8800c02 <_vfprintf_r+0x792>
    e8800bde:	11812703          	lw	a4,280(sp)
    e8800be2:	0df10693          	addi	a3,sp,223
    e8800be6:	00d33023          	sd	a3,0(t1)
    e8800bea:	2705                	addiw	a4,a4,1
    e8800bec:	4685                	li	a3,1
    e8800bee:	0785                	addi	a5,a5,1
    e8800bf0:	00d33423          	sd	a3,8(t1)
    e8800bf4:	f23e                	sd	a5,288(sp)
    e8800bf6:	10e12c23          	sw	a4,280(sp)
    e8800bfa:	469d                	li	a3,7
    e8800bfc:	0341                	addi	t1,t1,16
    e8800bfe:	0ae6c763          	blt	a3,a4,e8800cac <_vfprintf_r+0x83c>
    e8800c02:	02088363          	beqz	a7,e8800c28 <_vfprintf_r+0x7b8>
    e8800c06:	11812703          	lw	a4,280(sp)
    e8800c0a:	1194                	addi	a3,sp,224
    e8800c0c:	00d33023          	sd	a3,0(t1)
    e8800c10:	2705                	addiw	a4,a4,1
    e8800c12:	4689                	li	a3,2
    e8800c14:	0789                	addi	a5,a5,2
    e8800c16:	00d33423          	sd	a3,8(t1)
    e8800c1a:	f23e                	sd	a5,288(sp)
    e8800c1c:	10e12c23          	sw	a4,280(sp)
    e8800c20:	469d                	li	a3,7
    e8800c22:	0341                	addi	t1,t1,16
    e8800c24:	5ee6ca63          	blt	a3,a4,e8801218 <_vfprintf_r+0xda8>
    e8800c28:	08000713          	li	a4,128
    e8800c2c:	38e28063          	beq	t0,a4,e8800fac <_vfprintf_r+0xb3c>
    e8800c30:	418e8ebb          	subw	t4,t4,s8
    e8800c34:	3fd04e63          	bgtz	t4,e8801030 <_vfprintf_r+0xbc0>
    e8800c38:	10047713          	andi	a4,s0,256
    e8800c3c:	2a071463          	bnez	a4,e8800ee4 <_vfprintf_r+0xa74>
    e8800c40:	11812703          	lw	a4,280(sp)
    e8800c44:	97e2                	add	a5,a5,s8
    e8800c46:	01a33023          	sd	s10,0(t1)
    e8800c4a:	2705                	addiw	a4,a4,1
    e8800c4c:	01833423          	sd	s8,8(t1)
    e8800c50:	469d                	li	a3,7
    e8800c52:	f23e                	sd	a5,288(sp)
    e8800c54:	10e12c23          	sw	a4,280(sp)
    e8800c58:	0ce6c863          	blt	a3,a4,e8800d28 <_vfprintf_r+0x8b8>
    e8800c5c:	0341                	addi	t1,t1,16
    e8800c5e:	8811                	andi	s0,s0,4
    e8800c60:	c409                	beqz	s0,e8800c6a <_vfprintf_r+0x7fa>
    e8800c62:	409b843b          	subw	s0,s7,s1
    e8800c66:	5c804763          	bgtz	s0,e8801234 <_vfprintf_r+0xdc4>
    e8800c6a:	009ba733          	slt	a4,s7,s1
    e8800c6e:	40eb948b          	mveqz	s1,s7,a4
    e8800c72:	6702                	ld	a4,0(sp)
    e8800c74:	9f25                	addw	a4,a4,s1
    e8800c76:	e03a                	sd	a4,0(sp)
    e8800c78:	a80798e3          	bnez	a5,e8800708 <_vfprintf_r+0x298>
    e8800c7c:	67e2                	ld	a5,24(sp)
    e8800c7e:	10012c23          	sw	zero,280(sp)
    e8800c82:	c789                	beqz	a5,e8800c8c <_vfprintf_r+0x81c>
    e8800c84:	65e2                	ld	a1,24(sp)
    e8800c86:	8556                	mv	a0,s5
    e8800c88:	54c7b0ef          	jal	ra,e887c1d4 <_free_r>
    e8800c8c:	835a                	mv	t1,s6
    e8800c8e:	8d4a                	mv	s10,s2
    e8800c90:	000d4783          	lbu	a5,0(s10)
    e8800c94:	8a0796e3          	bnez	a5,e8800540 <_vfprintf_r+0xd0>
    e8800c98:	7792                	ld	a5,288(sp)
    e8800c9a:	a80785e3          	beqz	a5,e8800724 <_vfprintf_r+0x2b4>
    e8800c9e:	0a10                	addi	a2,sp,272
    e8800ca0:	85d2                	mv	a1,s4
    e8800ca2:	8556                	mv	a0,s5
    e8800ca4:	2bd060ef          	jal	ra,e8807760 <__sprint_r>
    e8800ca8:	bcb5                	j	e8800724 <_vfprintf_r+0x2b4>
    e8800caa:	0001                	nop
    e8800cac:	0a10                	addi	a2,sp,272
    e8800cae:	85d2                	mv	a1,s4
    e8800cb0:	8556                	mv	a0,s5
    e8800cb2:	fc76                	sd	t4,56(sp)
    e8800cb4:	f816                	sd	t0,48(sp)
    e8800cb6:	e446                	sd	a7,8(sp)
    e8800cb8:	2a9060ef          	jal	ra,e8807760 <__sprint_r>
    e8800cbc:	a4051ee3          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8800cc0:	7792                	ld	a5,288(sp)
    e8800cc2:	835a                	mv	t1,s6
    e8800cc4:	7ee2                	ld	t4,56(sp)
    e8800cc6:	72c2                	ld	t0,48(sp)
    e8800cc8:	68a2                	ld	a7,8(sp)
    e8800cca:	bf25                	j	e8800c02 <_vfprintf_r+0x792>
    e8800ccc:	7766                	ld	a4,120(sp)
    e8800cce:	7646                	ld	a2,112(sp)
    e8800cd0:	0341                	addi	t1,t1,16
    e8800cd2:	fee33823          	sd	a4,-16(t1)
    e8800cd6:	11812703          	lw	a4,280(sp)
    e8800cda:	97b2                	add	a5,a5,a2
    e8800cdc:	fec33c23          	sd	a2,-8(t1)
    e8800ce0:	2705                	addiw	a4,a4,1
    e8800ce2:	f23e                	sd	a5,288(sp)
    e8800ce4:	10e12c23          	sw	a4,280(sp)
    e8800ce8:	461d                	li	a2,7
    e8800cea:	00e65e63          	bge	a2,a4,e8800d06 <_vfprintf_r+0x896>
    e8800cee:	0a10                	addi	a2,sp,272
    e8800cf0:	85d2                	mv	a1,s4
    e8800cf2:	8556                	mv	a0,s5
    e8800cf4:	26d060ef          	jal	ra,e8807760 <__sprint_r>
    e8800cf8:	a20510e3          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8800cfc:	56ae                	lw	a3,232(sp)
    e8800cfe:	7792                	ld	a5,288(sp)
    e8800d00:	11812703          	lw	a4,280(sp)
    e8800d04:	835a                	mv	t1,s6
    e8800d06:	0006d463          	bgez	a3,e8800d0e <_vfprintf_r+0x89e>
    e8800d0a:	00a0106f          	j	e8801d14 <_vfprintf_r+0x18a4>
    e8800d0e:	7682                	ld	a3,32(sp)
    e8800d10:	2705                	addiw	a4,a4,1
    e8800d12:	10e12c23          	sw	a4,280(sp)
    e8800d16:	97b6                	add	a5,a5,a3
    e8800d18:	f8d35d0b          	sdd	s10,a3,(t1),0,4
    e8800d1c:	f23e                	sd	a5,288(sp)
    e8800d1e:	469d                	li	a3,7
    e8800d20:	f2e6dee3          	bge	a3,a4,e8800c5c <_vfprintf_r+0x7ec>
    e8800d24:	00000013          	nop
    e8800d28:	0a10                	addi	a2,sp,272
    e8800d2a:	85d2                	mv	a1,s4
    e8800d2c:	8556                	mv	a0,s5
    e8800d2e:	233060ef          	jal	ra,e8807760 <__sprint_r>
    e8800d32:	9e0513e3          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8800d36:	7792                	ld	a5,288(sp)
    e8800d38:	835a                	mv	t1,s6
    e8800d3a:	b715                	j	e8800c5e <_vfprintf_r+0x7ee>
    e8800d3c:	02046413          	ori	s0,s0,32
    e8800d40:	2401                	sext.w	s0,s0
    e8800d42:	00094f03          	lbu	t5,0(s2)
    e8800d46:	b0ad                	j	e88005b0 <_vfprintf_r+0x140>
    e8800d48:	6d42                	ld	s10,16(sp)
    e8800d4a:	77e1                	lui	a5,0xffff8
    e8800d4c:	8307c793          	xori	a5,a5,-2000
    e8800d50:	788d448b          	ldia	s1,(s10),8,0
    e8800d54:	0ef11023          	sh	a5,224(sp)
    e8800d58:	000a2797          	auipc	a5,0xa2
    e8800d5c:	45078793          	addi	a5,a5,1104 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e8800d60:	00246693          	ori	a3,s0,2
    e8800d64:	f43e                	sd	a5,40(sp)
    e8800d66:	2681                	sext.w	a3,a3
    e8800d68:	e86a                	sd	s10,16(sp)
    e8800d6a:	4789                	li	a5,2
    e8800d6c:	07800c93          	li	s9,120
    e8800d70:	b841                	j	e8800600 <_vfprintf_r+0x190>
    e8800d72:	66c2                	ld	a3,16(sp)
    e8800d74:	02047793          	andi	a5,s0,32
    e8800d78:	7886c70b          	ldia	a4,(a3),8,0
    e8800d7c:	e836                	sd	a3,16(sp)
    e8800d7e:	6e079163          	bnez	a5,e8801460 <_vfprintf_r+0xff0>
    e8800d82:	01047793          	andi	a5,s0,16
    e8800d86:	6c079d63          	bnez	a5,e8801460 <_vfprintf_r+0xff0>
    e8800d8a:	04047793          	andi	a5,s0,64
    e8800d8e:	3c0795e3          	bnez	a5,e8801958 <_vfprintf_r+0x14e8>
    e8800d92:	20047413          	andi	s0,s0,512
    e8800d96:	6782                	ld	a5,0(sp)
    e8800d98:	e019                	bnez	s0,e8800d9e <_vfprintf_r+0x92e>
    e8800d9a:	09c0106f          	j	e8801e36 <_vfprintf_r+0x19c6>
    e8800d9e:	00f70023          	sb	a5,0(a4)
    e8800da2:	8d4a                	mv	s10,s2
    e8800da4:	b5f5                	j	e8800c90 <_vfprintf_r+0x820>
    e8800da6:	0001                	nop
    e8800da8:	00094f03          	lbu	t5,0(s2)
    e8800dac:	06c00793          	li	a5,108
    e8800db0:	76ff0b63          	beq	t5,a5,e8801526 <_vfprintf_r+0x10b6>
    e8800db4:	01046413          	ori	s0,s0,16
    e8800db8:	2401                	sext.w	s0,s0
    e8800dba:	ff6ff06f          	j	e88005b0 <_vfprintf_r+0x140>
    e8800dbe:	01047793          	andi	a5,s0,16
    e8800dc2:	6a079463          	bnez	a5,e880146a <_vfprintf_r+0xffa>
    e8800dc6:	66c2                	ld	a3,16(sp)
    e8800dc8:	04047793          	andi	a5,s0,64
    e8800dcc:	4284                	lw	s1,0(a3)
    e8800dce:	120785e3          	beqz	a5,e88016f8 <_vfprintf_r+0x1288>
    e8800dd2:	3c04b48b          	extu	s1,s1,15,0
    e8800dd6:	e83a                	sd	a4,16(sp)
    e8800dd8:	86a2                	mv	a3,s0
    e8800dda:	4785                	li	a5,1
    e8800ddc:	825ff06f          	j	e8800600 <_vfprintf_r+0x190>
    e8800de0:	01047793          	andi	a5,s0,16
    e8800de4:	6a079a63          	bnez	a5,e8801498 <_vfprintf_r+0x1028>
    e8800de8:	04047793          	andi	a5,s0,64
    e8800dec:	120781e3          	beqz	a5,e880170e <_vfprintf_r+0x129e>
    e8800df0:	67c2                	ld	a5,16(sp)
    e8800df2:	00079483          	lh	s1,0(a5)
    e8800df6:	87a6                	mv	a5,s1
    e8800df8:	8607dfe3          	bgez	a5,e8800676 <_vfprintf_r+0x206>
    e8800dfc:	02d00793          	li	a5,45
    e8800e00:	0cf10fa3          	sb	a5,223(sp)
    e8800e04:	e83a                	sd	a4,16(sp)
    e8800e06:	577d                	li	a4,-1
    e8800e08:	409004b3          	neg	s1,s1
    e8800e0c:	86a2                	mv	a3,s0
    e8800e0e:	4785                	li	a5,1
    e8800e10:	feee9d63          	bne	t4,a4,e880060a <_vfprintf_r+0x19a>
    e8800e14:	00000013          	nop
    e8800e18:	4705                	li	a4,1
    e8800e1a:	34e78563          	beq	a5,a4,e8801164 <_vfprintf_r+0xcf4>
    e8800e1e:	4709                	li	a4,2
    e8800e20:	48e78c63          	beq	a5,a4,e88012b8 <_vfprintf_r+0xe48>
    e8800e24:	18c10c13          	addi	s8,sp,396
    e8800e28:	8762                	mv	a4,s8
    e8800e2a:	a011                	j	e8800e2e <_vfprintf_r+0x9be>
    e8800e2c:	876a                	mv	a4,s10
    e8800e2e:	0074f793          	andi	a5,s1,7
    e8800e32:	03078793          	addi	a5,a5,48
    e8800e36:	fef70fa3          	sb	a5,-1(a4)
    e8800e3a:	808d                	srli	s1,s1,0x3
    e8800e3c:	fff70d13          	addi	s10,a4,-1
    e8800e40:	f4f5                	bnez	s1,e8800e2c <_vfprintf_r+0x9bc>
    e8800e42:	0016f613          	andi	a2,a3,1
    e8800e46:	ca49                	beqz	a2,e8800ed8 <_vfprintf_r+0xa68>
    e8800e48:	03000613          	li	a2,48
    e8800e4c:	08c78663          	beq	a5,a2,e8800ed8 <_vfprintf_r+0xa68>
    e8800e50:	1779                	addi	a4,a4,-2
    e8800e52:	fecd0fa3          	sb	a2,-1(s10)
    e8800e56:	40ec0c3b          	subw	s8,s8,a4
    e8800e5a:	8436                	mv	s0,a3
    e8800e5c:	8d3a                	mv	s10,a4
    e8800e5e:	fdaff06f          	j	e8800638 <_vfprintf_r+0x1c8>
    e8800e62:	01047793          	andi	a5,s0,16
    e8800e66:	62079e63          	bnez	a5,e88014a2 <_vfprintf_r+0x1032>
    e8800e6a:	66c2                	ld	a3,16(sp)
    e8800e6c:	04047793          	andi	a5,s0,64
    e8800e70:	4284                	lw	s1,0(a3)
    e8800e72:	060789e3          	beqz	a5,e88016e4 <_vfprintf_r+0x1274>
    e8800e76:	3c04b48b          	extu	s1,s1,15,0
    e8800e7a:	f7cff06f          	j	e88005f6 <_vfprintf_r+0x186>
    e8800e7e:	8556                	mv	a0,s5
    e8800e80:	7d0010ef          	jal	ra,e8802650 <__sinit>
    e8800e84:	e4cff06f          	j	e88004d0 <_vfprintf_r+0x60>
    e8800e88:	4006f793          	andi	a5,a3,1024
    e8800e8c:	18c10c13          	addi	s8,sp,396
    e8800e90:	2781                	sext.w	a5,a5
    e8800e92:	f002                	sd	zero,32(sp)
    e8800e94:	85e2                	mv	a1,s8
    e8800e96:	4429                	li	s0,10
    e8800e98:	4725                	li	a4,9
    e8800e9a:	0ff00893          	li	a7,255
    e8800e9e:	a039                	j	e8800eac <_vfprintf_r+0xa3c>
    e8800ea0:	0284d633          	divu	a2,s1,s0
    e8800ea4:	02977a63          	bgeu	a4,s1,e8800ed8 <_vfprintf_r+0xa68>
    e8800ea8:	84b2                	mv	s1,a2
    e8800eaa:	85ea                	mv	a1,s10
    e8800eac:	7502                	ld	a0,32(sp)
    e8800eae:	fff58d13          	addi	s10,a1,-1
    e8800eb2:	2505                	addiw	a0,a0,1
    e8800eb4:	f02a                	sd	a0,32(sp)
    e8800eb6:	0284f633          	remu	a2,s1,s0
    e8800eba:	0306061b          	addiw	a2,a2,48
    e8800ebe:	fec58fa3          	sb	a2,-1(a1)
    e8800ec2:	dff9                	beqz	a5,e8800ea0 <_vfprintf_r+0xa30>
    e8800ec4:	7626                	ld	a2,104(sp)
    e8800ec6:	00064603          	lbu	a2,0(a2)
    e8800eca:	fcc51be3          	bne	a0,a2,e8800ea0 <_vfprintf_r+0xa30>
    e8800ece:	fd1609e3          	beq	a2,a7,e8800ea0 <_vfprintf_r+0xa30>
    e8800ed2:	20976ae3          	bltu	a4,s1,e88018e6 <_vfprintf_r+0x1476>
    e8800ed6:	0001                	nop
    e8800ed8:	41ac0c3b          	subw	s8,s8,s10
    e8800edc:	8436                	mv	s0,a3
    e8800ede:	f5aff06f          	j	e8800638 <_vfprintf_r+0x1c8>
    e8800ee2:	0001                	nop
    e8800ee4:	06500713          	li	a4,101
    e8800ee8:	1b975e63          	bge	a4,s9,e88010a4 <_vfprintf_r+0xc34>
    e8800eec:	6512                	ld	a0,256(sp)
    e8800eee:	65b2                	ld	a1,264(sp)
    e8800ef0:	4601                	li	a2,0
    e8800ef2:	4681                	li	a3,0
    e8800ef4:	f83e                	sd	a5,48(sp)
    e8800ef6:	e41a                	sd	t1,8(sp)
    e8800ef8:	34f080ef          	jal	ra,e8809a46 <__eqtf2>
    e8800efc:	6322                	ld	t1,8(sp)
    e8800efe:	77c2                	ld	a5,48(sp)
    e8800f00:	3c051e63          	bnez	a0,e88012dc <_vfprintf_r+0xe6c>
    e8800f04:	11812703          	lw	a4,280(sp)
    e8800f08:	000ce697          	auipc	a3,0xce
    e8800f0c:	2b868693          	addi	a3,a3,696 # e88cf1c0 <err_to_errno_table+0xe8>
    e8800f10:	0785                	addi	a5,a5,1
    e8800f12:	00d33023          	sd	a3,0(t1)
    e8800f16:	2705                	addiw	a4,a4,1
    e8800f18:	4685                	li	a3,1
    e8800f1a:	00d33423          	sd	a3,8(t1)
    e8800f1e:	f23e                	sd	a5,288(sp)
    e8800f20:	10e12c23          	sw	a4,280(sp)
    e8800f24:	479d                	li	a5,7
    e8800f26:	0341                	addi	t1,t1,16
    e8800f28:	70e7c163          	blt	a5,a4,e880162a <_vfprintf_r+0x11ba>
    e8800f2c:	57ae                	lw	a5,232(sp)
    e8800f2e:	7702                	ld	a4,32(sp)
    e8800f30:	00e7c763          	blt	a5,a4,e8800f3e <_vfprintf_r+0xace>
    e8800f34:	00147793          	andi	a5,s0,1
    e8800f38:	e399                	bnez	a5,e8800f3e <_vfprintf_r+0xace>
    e8800f3a:	7792                	ld	a5,288(sp)
    e8800f3c:	b30d                	j	e8800c5e <_vfprintf_r+0x7ee>
    e8800f3e:	77e6                	ld	a5,120(sp)
    e8800f40:	76c6                	ld	a3,112(sp)
    e8800f42:	11812703          	lw	a4,280(sp)
    e8800f46:	00f33023          	sd	a5,0(t1)
    e8800f4a:	7792                	ld	a5,288(sp)
    e8800f4c:	2705                	addiw	a4,a4,1
    e8800f4e:	00d33423          	sd	a3,8(t1)
    e8800f52:	97b6                	add	a5,a5,a3
    e8800f54:	f23e                	sd	a5,288(sp)
    e8800f56:	10e12c23          	sw	a4,280(sp)
    e8800f5a:	469d                	li	a3,7
    e8800f5c:	0341                	addi	t1,t1,16
    e8800f5e:	5ae6c263          	blt	a3,a4,e8801502 <_vfprintf_r+0x1092>
    e8800f62:	7702                	ld	a4,32(sp)
    e8800f64:	fff70c1b          	addiw	s8,a4,-1
    e8800f68:	cf805be3          	blez	s8,e8800c5e <_vfprintf_r+0x7ee>
    e8800f6c:	11812703          	lw	a4,280(sp)
    e8800f70:	6d8dd663          	bge	s11,s8,e880163c <_vfprintf_r+0x11cc>
    e8800f74:	4c9d                	li	s9,7
    e8800f76:	a021                	j	e8800f7e <_vfprintf_r+0xb0e>
    e8800f78:	3c41                	addiw	s8,s8,-16
    e8800f7a:	6d8dd163          	bge	s11,s8,e880163c <_vfprintf_r+0x11cc>
    e8800f7e:	2705                	addiw	a4,a4,1
    e8800f80:	07c1                	addi	a5,a5,16
    e8800f82:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8800f86:	f23e                	sd	a5,288(sp)
    e8800f88:	10e12c23          	sw	a4,280(sp)
    e8800f8c:	0341                	addi	t1,t1,16
    e8800f8e:	feecd5e3          	bge	s9,a4,e8800f78 <_vfprintf_r+0xb08>
    e8800f92:	0a10                	addi	a2,sp,272
    e8800f94:	85d2                	mv	a1,s4
    e8800f96:	8556                	mv	a0,s5
    e8800f98:	7c8060ef          	jal	ra,e8807760 <__sprint_r>
    e8800f9c:	f6051e63          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8800fa0:	7792                	ld	a5,288(sp)
    e8800fa2:	11812703          	lw	a4,280(sp)
    e8800fa6:	835a                	mv	t1,s6
    e8800fa8:	bfc1                	j	e8800f78 <_vfprintf_r+0xb08>
    e8800faa:	0001                	nop
    e8800fac:	409b86bb          	subw	a3,s7,s1
    e8800fb0:	c8d050e3          	blez	a3,e8800c30 <_vfprintf_r+0x7c0>
    e8800fb4:	11812703          	lw	a4,280(sp)
    e8800fb8:	04ddd463          	bge	s11,a3,e8801000 <_vfprintf_r+0xb90>
    e8800fbc:	489d                	li	a7,7
    e8800fbe:	a021                	j	e8800fc6 <_vfprintf_r+0xb56>
    e8800fc0:	36c1                	addiw	a3,a3,-16
    e8800fc2:	02dddf63          	bge	s11,a3,e8801000 <_vfprintf_r+0xb90>
    e8800fc6:	2705                	addiw	a4,a4,1
    e8800fc8:	07c1                	addi	a5,a5,16
    e8800fca:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8800fce:	f23e                	sd	a5,288(sp)
    e8800fd0:	10e12c23          	sw	a4,280(sp)
    e8800fd4:	0341                	addi	t1,t1,16
    e8800fd6:	fee8d5e3          	bge	a7,a4,e8800fc0 <_vfprintf_r+0xb50>
    e8800fda:	0a10                	addi	a2,sp,272
    e8800fdc:	85d2                	mv	a1,s4
    e8800fde:	8556                	mv	a0,s5
    e8800fe0:	f836                	sd	a3,48(sp)
    e8800fe2:	e476                	sd	t4,8(sp)
    e8800fe4:	77c060ef          	jal	ra,e8807760 <__sprint_r>
    e8800fe8:	f2051863          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8800fec:	76c2                	ld	a3,48(sp)
    e8800fee:	7792                	ld	a5,288(sp)
    e8800ff0:	11812703          	lw	a4,280(sp)
    e8800ff4:	36c1                	addiw	a3,a3,-16
    e8800ff6:	835a                	mv	t1,s6
    e8800ff8:	489d                	li	a7,7
    e8800ffa:	6ea2                	ld	t4,8(sp)
    e8800ffc:	fcddc5e3          	blt	s11,a3,e8800fc6 <_vfprintf_r+0xb56>
    e8801000:	97b6                	add	a5,a5,a3
    e8801002:	2705                	addiw	a4,a4,1
    e8801004:	f8d3598b          	sdd	s3,a3,(t1),0,4
    e8801008:	f23e                	sd	a5,288(sp)
    e880100a:	10e12c23          	sw	a4,280(sp)
    e880100e:	469d                	li	a3,7
    e8801010:	0341                	addi	t1,t1,16
    e8801012:	c0e6dfe3          	bge	a3,a4,e8800c30 <_vfprintf_r+0x7c0>
    e8801016:	0a10                	addi	a2,sp,272
    e8801018:	85d2                	mv	a1,s4
    e880101a:	8556                	mv	a0,s5
    e880101c:	e476                	sd	t4,8(sp)
    e880101e:	742060ef          	jal	ra,e8807760 <__sprint_r>
    e8801022:	ee051b63          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8801026:	7792                	ld	a5,288(sp)
    e8801028:	835a                	mv	t1,s6
    e880102a:	6ea2                	ld	t4,8(sp)
    e880102c:	b111                	j	e8800c30 <_vfprintf_r+0x7c0>
    e880102e:	0001                	nop
    e8801030:	11812703          	lw	a4,280(sp)
    e8801034:	05ddd263          	bge	s11,t4,e8801078 <_vfprintf_r+0xc08>
    e8801038:	469d                	li	a3,7
    e880103a:	a021                	j	e8801042 <_vfprintf_r+0xbd2>
    e880103c:	3ec1                	addiw	t4,t4,-16
    e880103e:	03dddd63          	bge	s11,t4,e8801078 <_vfprintf_r+0xc08>
    e8801042:	2705                	addiw	a4,a4,1
    e8801044:	07c1                	addi	a5,a5,16
    e8801046:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e880104a:	f23e                	sd	a5,288(sp)
    e880104c:	10e12c23          	sw	a4,280(sp)
    e8801050:	0341                	addi	t1,t1,16
    e8801052:	fee6d5e3          	bge	a3,a4,e880103c <_vfprintf_r+0xbcc>
    e8801056:	0a10                	addi	a2,sp,272
    e8801058:	85d2                	mv	a1,s4
    e880105a:	8556                	mv	a0,s5
    e880105c:	e476                	sd	t4,8(sp)
    e880105e:	702060ef          	jal	ra,e8807760 <__sprint_r>
    e8801062:	ea051b63          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8801066:	6ea2                	ld	t4,8(sp)
    e8801068:	7792                	ld	a5,288(sp)
    e880106a:	11812703          	lw	a4,280(sp)
    e880106e:	3ec1                	addiw	t4,t4,-16
    e8801070:	835a                	mv	t1,s6
    e8801072:	469d                	li	a3,7
    e8801074:	fdddc7e3          	blt	s11,t4,e8801042 <_vfprintf_r+0xbd2>
    e8801078:	2705                	addiw	a4,a4,1
    e880107a:	97f6                	add	a5,a5,t4
    e880107c:	f9d3598b          	sdd	s3,t4,(t1),0,4
    e8801080:	f23e                	sd	a5,288(sp)
    e8801082:	10e12c23          	sw	a4,280(sp)
    e8801086:	469d                	li	a3,7
    e8801088:	0341                	addi	t1,t1,16
    e880108a:	bae6d7e3          	bge	a3,a4,e8800c38 <_vfprintf_r+0x7c8>
    e880108e:	0a10                	addi	a2,sp,272
    e8801090:	85d2                	mv	a1,s4
    e8801092:	8556                	mv	a0,s5
    e8801094:	6cc060ef          	jal	ra,e8807760 <__sprint_r>
    e8801098:	e8051063          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e880109c:	7792                	ld	a5,288(sp)
    e880109e:	835a                	mv	t1,s6
    e88010a0:	be61                	j	e8800c38 <_vfprintf_r+0x7c8>
    e88010a2:	0001                	nop
    e88010a4:	11812f03          	lw	t5,280(sp)
    e88010a8:	7582                	ld	a1,32(sp)
    e88010aa:	01a33023          	sd	s10,0(t1)
    e88010ae:	001f071b          	addiw	a4,t5,1
    e88010b2:	4605                	li	a2,1
    e88010b4:	0785                	addi	a5,a5,1
    e88010b6:	86ba                	mv	a3,a4
    e88010b8:	01030c13          	addi	s8,t1,16
    e88010bc:	32b65d63          	bge	a2,a1,e88013f6 <_vfprintf_r+0xf86>
    e88010c0:	4605                	li	a2,1
    e88010c2:	10d12c23          	sw	a3,280(sp)
    e88010c6:	00c33423          	sd	a2,8(t1)
    e88010ca:	f23e                	sd	a5,288(sp)
    e88010cc:	469d                	li	a3,7
    e88010ce:	4ce6c763          	blt	a3,a4,e880159c <_vfprintf_r+0x112c>
    e88010d2:	76c6                	ld	a3,112(sp)
    e88010d4:	7666                	ld	a2,120(sp)
    e88010d6:	2705                	addiw	a4,a4,1
    e88010d8:	97b6                	add	a5,a5,a3
    e88010da:	f8dc560b          	sdd	a2,a3,(s8),0,4
    e88010de:	f23e                	sd	a5,288(sp)
    e88010e0:	10e12c23          	sw	a4,280(sp)
    e88010e4:	469d                	li	a3,7
    e88010e6:	0c41                	addi	s8,s8,16
    e88010e8:	4ce6c663          	blt	a3,a4,e88015b4 <_vfprintf_r+0x1144>
    e88010ec:	e0be                	sd	a5,64(sp)
    e88010ee:	7782                	ld	a5,32(sp)
    e88010f0:	6512                	ld	a0,256(sp)
    e88010f2:	65b2                	ld	a1,264(sp)
    e88010f4:	00170e9b          	addiw	t4,a4,1
    e88010f8:	fff7889b          	addiw	a7,a5,-1
    e88010fc:	010c0313          	addi	t1,s8,16
    e8801100:	4601                	li	a2,0
    e8801102:	4681                	li	a3,0
    e8801104:	8cf6                	mv	s9,t4
    e8801106:	fc76                	sd	t4,56(sp)
    e8801108:	f81a                	sd	t1,48(sp)
    e880110a:	e446                	sd	a7,8(sp)
    e880110c:	e4ba                	sd	a4,72(sp)
    e880110e:	139080ef          	jal	ra,e8809a46 <__eqtf2>
    e8801112:	68a2                	ld	a7,8(sp)
    e8801114:	ffd1430b          	ldd	t1,t4,(sp),3,4
    e8801118:	6786                	ld	a5,64(sp)
    e880111a:	2e050f63          	beqz	a0,e8801418 <_vfprintf_r+0xfa8>
    e880111e:	001d0813          	addi	a6,s10,1
    e8801122:	97c6                	add	a5,a5,a7
    e8801124:	f91c580b          	sdd	a6,a7,(s8),0,4
    e8801128:	f23e                	sd	a5,288(sp)
    e880112a:	11d12c23          	sw	t4,280(sp)
    e880112e:	469d                	li	a3,7
    e8801130:	3996cd63          	blt	a3,s9,e88014ca <_vfprintf_r+0x105a>
    e8801134:	6726                	ld	a4,72(sp)
    e8801136:	020c0693          	addi	a3,s8,32
    e880113a:	8c1a                	mv	s8,t1
    e880113c:	00270c9b          	addiw	s9,a4,2
    e8801140:	8336                	mv	t1,a3
    e8801142:	66aa                	ld	a3,136(sp)
    e8801144:	1998                	addi	a4,sp,240
    e8801146:	11912c23          	sw	s9,280(sp)
    e880114a:	97b6                	add	a5,a5,a3
    e880114c:	f8dc570b          	sdd	a4,a3,(s8),0,4
    e8801150:	f23e                	sd	a5,288(sp)
    e8801152:	471d                	li	a4,7
    e8801154:	b19755e3          	bge	a4,s9,e8800c5e <_vfprintf_r+0x7ee>
    e8801158:	bec1                	j	e8800d28 <_vfprintf_r+0x8b8>
    e880115a:	0001                	nop
    e880115c:	4705                	li	a4,1
    e880115e:	86a2                	mv	a3,s0
    e8801160:	cae79fe3          	bne	a5,a4,e8800e1e <_vfprintf_r+0x9ae>
    e8801164:	47a5                	li	a5,9
    e8801166:	d297e1e3          	bltu	a5,s1,e8800e88 <_vfprintf_r+0xa18>
    e880116a:	0304849b          	addiw	s1,s1,48
    e880116e:	189105a3          	sb	s1,395(sp)
    e8801172:	8436                	mv	s0,a3
    e8801174:	4c05                	li	s8,1
    e8801176:	18b10d13          	addi	s10,sp,395
    e880117a:	cbeff06f          	j	e8800638 <_vfprintf_r+0x1c8>
    e880117e:	0001                	nop
    e8801180:	11812703          	lw	a4,280(sp)
    e8801184:	0009ef97          	auipc	t6,0x9e
    e8801188:	dbcf8f93          	addi	t6,t6,-580 # e889ef40 <blanks.4590>
    e880118c:	439d                	li	t2,7
    e880118e:	00ddc663          	blt	s11,a3,e880119a <_vfprintf_r+0xd2a>
    e8801192:	a0b9                	j	e88011e0 <_vfprintf_r+0xd70>
    e8801194:	36c1                	addiw	a3,a3,-16
    e8801196:	04ddd563          	bge	s11,a3,e88011e0 <_vfprintf_r+0xd70>
    e880119a:	2705                	addiw	a4,a4,1
    e880119c:	07c1                	addi	a5,a5,16
    e880119e:	f9b35f8b          	sdd	t6,s11,(t1),0,4
    e88011a2:	f23e                	sd	a5,288(sp)
    e88011a4:	10e12c23          	sw	a4,280(sp)
    e88011a8:	0341                	addi	t1,t1,16
    e88011aa:	fee3d5e3          	bge	t2,a4,e8801194 <_vfprintf_r+0xd24>
    e88011ae:	0a10                	addi	a2,sp,272
    e88011b0:	85d2                	mv	a1,s4
    e88011b2:	8556                	mv	a0,s5
    e88011b4:	e4fe                	sd	t6,72(sp)
    e88011b6:	e0b6                	sd	a3,64(sp)
    e88011b8:	fc76                	sd	t4,56(sp)
    e88011ba:	f816                	sd	t0,48(sp)
    e88011bc:	e446                	sd	a7,8(sp)
    e88011be:	5a2060ef          	jal	ra,e8807760 <__sprint_r>
    e88011c2:	d4051b63          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e88011c6:	6686                	ld	a3,64(sp)
    e88011c8:	7792                	ld	a5,288(sp)
    e88011ca:	11812703          	lw	a4,280(sp)
    e88011ce:	36c1                	addiw	a3,a3,-16
    e88011d0:	835a                	mv	t1,s6
    e88011d2:	6fa6                	ld	t6,72(sp)
    e88011d4:	439d                	li	t2,7
    e88011d6:	7ee2                	ld	t4,56(sp)
    e88011d8:	72c2                	ld	t0,48(sp)
    e88011da:	68a2                	ld	a7,8(sp)
    e88011dc:	faddcfe3          	blt	s11,a3,e880119a <_vfprintf_r+0xd2a>
    e88011e0:	97b6                	add	a5,a5,a3
    e88011e2:	2705                	addiw	a4,a4,1
    e88011e4:	f8d35f8b          	sdd	t6,a3,(t1),0,4
    e88011e8:	f23e                	sd	a5,288(sp)
    e88011ea:	10e12c23          	sw	a4,280(sp)
    e88011ee:	469d                	li	a3,7
    e88011f0:	0341                	addi	t1,t1,16
    e88011f2:	9ee6d3e3          	bge	a3,a4,e8800bd8 <_vfprintf_r+0x768>
    e88011f6:	0a10                	addi	a2,sp,272
    e88011f8:	85d2                	mv	a1,s4
    e88011fa:	8556                	mv	a0,s5
    e88011fc:	fc76                	sd	t4,56(sp)
    e88011fe:	f816                	sd	t0,48(sp)
    e8801200:	e446                	sd	a7,8(sp)
    e8801202:	55e060ef          	jal	ra,e8807760 <__sprint_r>
    e8801206:	d0051963          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e880120a:	7792                	ld	a5,288(sp)
    e880120c:	835a                	mv	t1,s6
    e880120e:	7ee2                	ld	t4,56(sp)
    e8801210:	72c2                	ld	t0,48(sp)
    e8801212:	68a2                	ld	a7,8(sp)
    e8801214:	b2d1                	j	e8800bd8 <_vfprintf_r+0x768>
    e8801216:	0001                	nop
    e8801218:	0a10                	addi	a2,sp,272
    e880121a:	85d2                	mv	a1,s4
    e880121c:	8556                	mv	a0,s5
    e880121e:	f876                	sd	t4,48(sp)
    e8801220:	e416                	sd	t0,8(sp)
    e8801222:	53e060ef          	jal	ra,e8807760 <__sprint_r>
    e8801226:	ce051963          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e880122a:	7792                	ld	a5,288(sp)
    e880122c:	835a                	mv	t1,s6
    e880122e:	7ec2                	ld	t4,48(sp)
    e8801230:	62a2                	ld	t0,8(sp)
    e8801232:	badd                	j	e8800c28 <_vfprintf_r+0x7b8>
    e8801234:	11812703          	lw	a4,280(sp)
    e8801238:	0009ef97          	auipc	t6,0x9e
    e880123c:	d08f8f93          	addi	t6,t6,-760 # e889ef40 <blanks.4590>
    e8801240:	4c1d                	li	s8,7
    e8801242:	008dc663          	blt	s11,s0,e880124e <_vfprintf_r+0xdde>
    e8801246:	a835                	j	e8801282 <_vfprintf_r+0xe12>
    e8801248:	3441                	addiw	s0,s0,-16
    e880124a:	028ddc63          	bge	s11,s0,e8801282 <_vfprintf_r+0xe12>
    e880124e:	2705                	addiw	a4,a4,1
    e8801250:	07c1                	addi	a5,a5,16
    e8801252:	f9b35f8b          	sdd	t6,s11,(t1),0,4
    e8801256:	f23e                	sd	a5,288(sp)
    e8801258:	10e12c23          	sw	a4,280(sp)
    e880125c:	0341                	addi	t1,t1,16
    e880125e:	feec55e3          	bge	s8,a4,e8801248 <_vfprintf_r+0xdd8>
    e8801262:	0a10                	addi	a2,sp,272
    e8801264:	85d2                	mv	a1,s4
    e8801266:	8556                	mv	a0,s5
    e8801268:	e47e                	sd	t6,8(sp)
    e880126a:	4f6060ef          	jal	ra,e8807760 <__sprint_r>
    e880126e:	ca051563          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8801272:	3441                	addiw	s0,s0,-16
    e8801274:	7792                	ld	a5,288(sp)
    e8801276:	11812703          	lw	a4,280(sp)
    e880127a:	835a                	mv	t1,s6
    e880127c:	6fa2                	ld	t6,8(sp)
    e880127e:	fc8dc8e3          	blt	s11,s0,e880124e <_vfprintf_r+0xdde>
    e8801282:	2705                	addiw	a4,a4,1
    e8801284:	97a2                	add	a5,a5,s0
    e8801286:	f8835f8b          	sdd	t6,s0,(t1),0,4
    e880128a:	f23e                	sd	a5,288(sp)
    e880128c:	10e12c23          	sw	a4,280(sp)
    e8801290:	469d                	li	a3,7
    e8801292:	9ce6dce3          	bge	a3,a4,e8800c6a <_vfprintf_r+0x7fa>
    e8801296:	0a10                	addi	a2,sp,272
    e8801298:	85d2                	mv	a1,s4
    e880129a:	8556                	mv	a0,s5
    e880129c:	4c4060ef          	jal	ra,e8807760 <__sprint_r>
    e88012a0:	c6051c63          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e88012a4:	7792                	ld	a5,288(sp)
    e88012a6:	b2d1                	j	e8800c6a <_vfprintf_r+0x7fa>
    e88012a8:	4705                	li	a4,1
    e88012aa:	38e783e3          	beq	a5,a4,e8801e30 <_vfprintf_r+0x19c0>
    e88012ae:	4709                	li	a4,2
    e88012b0:	86a2                	mv	a3,s0
    e88012b2:	b6e799e3          	bne	a5,a4,e8800e24 <_vfprintf_r+0x9b4>
    e88012b6:	0001                	nop
    e88012b8:	18c10c13          	addi	s8,sp,396
    e88012bc:	8d62                	mv	s10,s8
    e88012be:	0001                	nop
    e88012c0:	7722                	ld	a4,40(sp)
    e88012c2:	00f4f793          	andi	a5,s1,15
    e88012c6:	8091                	srli	s1,s1,0x4
    e88012c8:	80f7478b          	lrbu	a5,a4,a5,0
    e88012cc:	09fd578b          	sbib	a5,(s10),-1,0
    e88012d0:	f8e5                	bnez	s1,e88012c0 <_vfprintf_r+0xe50>
    e88012d2:	41ac0c3b          	subw	s8,s8,s10
    e88012d6:	8436                	mv	s0,a3
    e88012d8:	b60ff06f          	j	e8800638 <_vfprintf_r+0x1c8>
    e88012dc:	56ae                	lw	a3,232(sp)
    e88012de:	2ed05763          	blez	a3,e88015cc <_vfprintf_r+0x115c>
    e88012e2:	7702                	ld	a4,32(sp)
    e88012e4:	66e6                	ld	a3,88(sp)
    e88012e6:	00e6ac33          	slt	s8,a3,a4
    e88012ea:	4386970b          	mvnez	a4,a3,s8
    e88012ee:	00070c1b          	sext.w	s8,a4
    e88012f2:	03805163          	blez	s8,e8801314 <_vfprintf_r+0xea4>
    e88012f6:	11812703          	lw	a4,280(sp)
    e88012fa:	97e2                	add	a5,a5,s8
    e88012fc:	01a33023          	sd	s10,0(t1)
    e8801300:	2705                	addiw	a4,a4,1
    e8801302:	01833423          	sd	s8,8(t1)
    e8801306:	f23e                	sd	a5,288(sp)
    e8801308:	10e12c23          	sw	a4,280(sp)
    e880130c:	469d                	li	a3,7
    e880130e:	0341                	addi	t1,t1,16
    e8801310:	5ce6c063          	blt	a3,a4,e88018d0 <_vfprintf_r+0x1460>
    e8801314:	fffc4713          	not	a4,s8
    e8801318:	977d                	srai	a4,a4,0x3f
    e880131a:	00ec7c33          	and	s8,s8,a4
    e880131e:	6766                	ld	a4,88(sp)
    e8801320:	41870c3b          	subw	s8,a4,s8
    e8801324:	23804a63          	bgtz	s8,e8801558 <_vfprintf_r+0x10e8>
    e8801328:	66e6                	ld	a3,88(sp)
    e880132a:	40047713          	andi	a4,s0,1024
    e880132e:	00dd0c33          	add	s8,s10,a3
    e8801332:	44071263          	bnez	a4,e8801776 <_vfprintf_r+0x1306>
    e8801336:	572e                	lw	a4,232(sp)
    e8801338:	7682                	ld	a3,32(sp)
    e880133a:	00d74663          	blt	a4,a3,e8801346 <_vfprintf_r+0xed6>
    e880133e:	00147693          	andi	a3,s0,1
    e8801342:	5e068163          	beqz	a3,e8801924 <_vfprintf_r+0x14b4>
    e8801346:	76e6                	ld	a3,120(sp)
    e8801348:	7646                	ld	a2,112(sp)
    e880134a:	0341                	addi	t1,t1,16
    e880134c:	fed33823          	sd	a3,-16(t1)
    e8801350:	11812683          	lw	a3,280(sp)
    e8801354:	97b2                	add	a5,a5,a2
    e8801356:	fec33c23          	sd	a2,-8(t1)
    e880135a:	2685                	addiw	a3,a3,1
    e880135c:	f23e                	sd	a5,288(sp)
    e880135e:	10d12c23          	sw	a3,280(sp)
    e8801362:	461d                	li	a2,7
    e8801364:	0ed643e3          	blt	a2,a3,e8801c4a <_vfprintf_r+0x17da>
    e8801368:	7682                	ld	a3,32(sp)
    e880136a:	40e6873b          	subw	a4,a3,a4
    e880136e:	00dd0633          	add	a2,s10,a3
    e8801372:	4186063b          	subw	a2,a2,s8
    e8801376:	86ba                	mv	a3,a4
    e8801378:	00d625b3          	slt	a1,a2,a3
    e880137c:	42b6170b          	mvnez	a4,a2,a1
    e8801380:	8cba                	mv	s9,a4
    e8801382:	03905163          	blez	s9,e88013a4 <_vfprintf_r+0xf34>
    e8801386:	11812603          	lw	a2,280(sp)
    e880138a:	97e6                	add	a5,a5,s9
    e880138c:	01833023          	sd	s8,0(t1)
    e8801390:	2605                	addiw	a2,a2,1
    e8801392:	01933423          	sd	s9,8(t1)
    e8801396:	f23e                	sd	a5,288(sp)
    e8801398:	10c12c23          	sw	a2,280(sp)
    e880139c:	459d                	li	a1,7
    e880139e:	0341                	addi	t1,t1,16
    e88013a0:	10c5c3e3          	blt	a1,a2,e8801ca6 <_vfprintf_r+0x1836>
    e88013a4:	fffccc13          	not	s8,s9
    e88013a8:	43fc5c13          	srai	s8,s8,0x3f
    e88013ac:	018cfc33          	and	s8,s9,s8
    e88013b0:	41868c3b          	subw	s8,a3,s8
    e88013b4:	8b8055e3          	blez	s8,e8800c5e <_vfprintf_r+0x7ee>
    e88013b8:	11812703          	lw	a4,280(sp)
    e88013bc:	298dd063          	bge	s11,s8,e880163c <_vfprintf_r+0x11cc>
    e88013c0:	4c9d                	li	s9,7
    e88013c2:	a021                	j	e88013ca <_vfprintf_r+0xf5a>
    e88013c4:	3c41                	addiw	s8,s8,-16
    e88013c6:	278ddb63          	bge	s11,s8,e880163c <_vfprintf_r+0x11cc>
    e88013ca:	2705                	addiw	a4,a4,1
    e88013cc:	07c1                	addi	a5,a5,16
    e88013ce:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e88013d2:	f23e                	sd	a5,288(sp)
    e88013d4:	10e12c23          	sw	a4,280(sp)
    e88013d8:	0341                	addi	t1,t1,16
    e88013da:	feecd5e3          	bge	s9,a4,e88013c4 <_vfprintf_r+0xf54>
    e88013de:	0a10                	addi	a2,sp,272
    e88013e0:	85d2                	mv	a1,s4
    e88013e2:	8556                	mv	a0,s5
    e88013e4:	37c060ef          	jal	ra,e8807760 <__sprint_r>
    e88013e8:	b2051863          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e88013ec:	7792                	ld	a5,288(sp)
    e88013ee:	11812703          	lw	a4,280(sp)
    e88013f2:	835a                	mv	t1,s6
    e88013f4:	bfc1                	j	e88013c4 <_vfprintf_r+0xf54>
    e88013f6:	00147593          	andi	a1,s0,1
    e88013fa:	cc0593e3          	bnez	a1,e88010c0 <_vfprintf_r+0xc50>
    e88013fe:	00c33423          	sd	a2,8(t1)
    e8801402:	f23e                	sd	a5,288(sp)
    e8801404:	10e12c23          	sw	a4,280(sp)
    e8801408:	469d                	li	a3,7
    e880140a:	0ce6c063          	blt	a3,a4,e88014ca <_vfprintf_r+0x105a>
    e880140e:	002f0c9b          	addiw	s9,t5,2
    e8801412:	02030313          	addi	t1,t1,32
    e8801416:	b335                	j	e8801142 <_vfprintf_r+0xcd2>
    e8801418:	d31055e3          	blez	a7,e8801142 <_vfprintf_r+0xcd2>
    e880141c:	331dd3e3          	bge	s11,a7,e8801f42 <_vfprintf_r+0x1ad2>
    e8801420:	4c9d                	li	s9,7
    e8801422:	a031                	j	e880142e <_vfprintf_r+0xfbe>
    e8801424:	38c1                	addiw	a7,a7,-16
    e8801426:	091dd563          	bge	s11,a7,e88014b0 <_vfprintf_r+0x1040>
    e880142a:	00170e9b          	addiw	t4,a4,1
    e880142e:	07c1                	addi	a5,a5,16
    e8801430:	f9bc598b          	sdd	s3,s11,(s8),0,4
    e8801434:	f23e                	sd	a5,288(sp)
    e8801436:	11d12c23          	sw	t4,280(sp)
    e880143a:	000e871b          	sext.w	a4,t4
    e880143e:	0c41                	addi	s8,s8,16
    e8801440:	feecd2e3          	bge	s9,a4,e8801424 <_vfprintf_r+0xfb4>
    e8801444:	0a10                	addi	a2,sp,272
    e8801446:	85d2                	mv	a1,s4
    e8801448:	8556                	mv	a0,s5
    e880144a:	e446                	sd	a7,8(sp)
    e880144c:	314060ef          	jal	ra,e8807760 <__sprint_r>
    e8801450:	ac051463          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8801454:	7792                	ld	a5,288(sp)
    e8801456:	11812703          	lw	a4,280(sp)
    e880145a:	8c5a                	mv	s8,s6
    e880145c:	68a2                	ld	a7,8(sp)
    e880145e:	b7d9                	j	e8801424 <_vfprintf_r+0xfb4>
    e8801460:	6782                	ld	a5,0(sp)
    e8801462:	8d4a                	mv	s10,s2
    e8801464:	e31c                	sd	a5,0(a4)
    e8801466:	82bff06f          	j	e8800c90 <_vfprintf_r+0x820>
    e880146a:	67c2                	ld	a5,16(sp)
    e880146c:	86a2                	mv	a3,s0
    e880146e:	e83a                	sd	a4,16(sp)
    e8801470:	6384                	ld	s1,0(a5)
    e8801472:	4785                	li	a5,1
    e8801474:	98cff06f          	j	e8800600 <_vfprintf_r+0x190>
    e8801478:	67c2                	ld	a5,16(sp)
    e880147a:	07bd                	addi	a5,a5,15
    e880147c:	9bc1                	andi	a5,a5,-16
    e880147e:	86be                	mv	a3,a5
    e8801480:	7a86c70b          	ldia	a4,(a3),8,1
    e8801484:	679c                	ld	a5,8(a5)
    e8801486:	e836                	sd	a3,16(sp)
    e8801488:	e23a                	sd	a4,256(sp)
    e880148a:	e63e                	sd	a5,264(sp)
    e880148c:	bd2ff06f          	j	e880085e <_vfprintf_r+0x3ee>
    e8801490:	67c2                	ld	a5,16(sp)
    e8801492:	6384                	ld	s1,0(a5)
    e8801494:	af2ff06f          	j	e8800786 <_vfprintf_r+0x316>
    e8801498:	67c2                	ld	a5,16(sp)
    e880149a:	639c                	ld	a5,0(a5)
    e880149c:	84be                	mv	s1,a5
    e880149e:	9d4ff06f          	j	e8800672 <_vfprintf_r+0x202>
    e88014a2:	67c2                	ld	a5,16(sp)
    e88014a4:	6384                	ld	s1,0(a5)
    e88014a6:	950ff06f          	j	e88005f6 <_vfprintf_r+0x186>
    e88014aa:	86a2                	mv	a3,s0
    e88014ac:	e83a                	sd	a4,16(sp)
    e88014ae:	b95d                	j	e8801164 <_vfprintf_r+0xcf4>
    e88014b0:	00170c9b          	addiw	s9,a4,1
    e88014b4:	010c0713          	addi	a4,s8,16
    e88014b8:	97c6                	add	a5,a5,a7
    e88014ba:	f91c598b          	sdd	s3,a7,(s8),0,4
    e88014be:	f23e                	sd	a5,288(sp)
    e88014c0:	11912c23          	sw	s9,280(sp)
    e88014c4:	469d                	li	a3,7
    e88014c6:	3f96d463          	bge	a3,s9,e88018ae <_vfprintf_r+0x143e>
    e88014ca:	0a10                	addi	a2,sp,272
    e88014cc:	85d2                	mv	a1,s4
    e88014ce:	8556                	mv	a0,s5
    e88014d0:	290060ef          	jal	ra,e8807760 <__sprint_r>
    e88014d4:	a4051263          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e88014d8:	7792                	ld	a5,288(sp)
    e88014da:	11812f03          	lw	t5,280(sp)
    e88014de:	66aa                	ld	a3,136(sp)
    e88014e0:	1998                	addi	a4,sp,240
    e88014e2:	001f0c9b          	addiw	s9,t5,1
    e88014e6:	8c5a                	mv	s8,s6
    e88014e8:	97b6                	add	a5,a5,a3
    e88014ea:	f8dc570b          	sdd	a4,a3,(s8),0,4
    e88014ee:	f23e                	sd	a5,288(sp)
    e88014f0:	11912c23          	sw	s9,280(sp)
    e88014f4:	471d                	li	a4,7
    e88014f6:	1a010313          	addi	t1,sp,416
    e88014fa:	f7975263          	bge	a4,s9,e8800c5e <_vfprintf_r+0x7ee>
    e88014fe:	82bff06f          	j	e8800d28 <_vfprintf_r+0x8b8>
    e8801502:	0a10                	addi	a2,sp,272
    e8801504:	85d2                	mv	a1,s4
    e8801506:	8556                	mv	a0,s5
    e8801508:	258060ef          	jal	ra,e8807760 <__sprint_r>
    e880150c:	a0051663          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8801510:	7792                	ld	a5,288(sp)
    e8801512:	835a                	mv	t1,s6
    e8801514:	b4b9                	j	e8800f62 <_vfprintf_r+0xaf2>
    e8801516:	20046413          	ori	s0,s0,512
    e880151a:	00194f03          	lbu	t5,1(s2)
    e880151e:	2401                	sext.w	s0,s0
    e8801520:	0905                	addi	s2,s2,1
    e8801522:	88eff06f          	j	e88005b0 <_vfprintf_r+0x140>
    e8801526:	02046413          	ori	s0,s0,32
    e880152a:	00194f03          	lbu	t5,1(s2)
    e880152e:	2401                	sext.w	s0,s0
    e8801530:	0905                	addi	s2,s2,1
    e8801532:	87eff06f          	j	e88005b0 <_vfprintf_r+0x140>
    e8801536:	000e8c1b          	sext.w	s8,t4
    e880153a:	4799                	li	a5,6
    e880153c:	0187bc33          	sltu	s8,a5,s8
    e8801540:	43879e8b          	mvnez	t4,a5,s8
    e8801544:	000e8c1b          	sext.w	s8,t4
    e8801548:	84e2                	mv	s1,s8
    e880154a:	e83a                	sd	a4,16(sp)
    e880154c:	000d3d17          	auipc	s10,0xd3
    e8801550:	8a4d0d13          	addi	s10,s10,-1884 # e88d3df0 <dhcp_discover_request_options+0x5e8>
    e8801554:	e54ff06f          	j	e8800ba8 <_vfprintf_r+0x738>
    e8801558:	11812703          	lw	a4,280(sp)
    e880155c:	1f8dd763          	bge	s11,s8,e880174a <_vfprintf_r+0x12da>
    e8801560:	4c9d                	li	s9,7
    e8801562:	a021                	j	e880156a <_vfprintf_r+0x10fa>
    e8801564:	3c41                	addiw	s8,s8,-16
    e8801566:	1f8dd263          	bge	s11,s8,e880174a <_vfprintf_r+0x12da>
    e880156a:	2705                	addiw	a4,a4,1
    e880156c:	07c1                	addi	a5,a5,16
    e880156e:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8801572:	f23e                	sd	a5,288(sp)
    e8801574:	10e12c23          	sw	a4,280(sp)
    e8801578:	0341                	addi	t1,t1,16
    e880157a:	feecd5e3          	bge	s9,a4,e8801564 <_vfprintf_r+0x10f4>
    e880157e:	0a10                	addi	a2,sp,272
    e8801580:	85d2                	mv	a1,s4
    e8801582:	8556                	mv	a0,s5
    e8801584:	1dc060ef          	jal	ra,e8807760 <__sprint_r>
    e8801588:	98051863          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e880158c:	7792                	ld	a5,288(sp)
    e880158e:	11812703          	lw	a4,280(sp)
    e8801592:	835a                	mv	t1,s6
    e8801594:	bfc1                	j	e8801564 <_vfprintf_r+0x10f4>
    e8801596:	84ea                	mv	s1,s10
    e8801598:	800ff06f          	j	e8800598 <_vfprintf_r+0x128>
    e880159c:	0a10                	addi	a2,sp,272
    e880159e:	85d2                	mv	a1,s4
    e88015a0:	8556                	mv	a0,s5
    e88015a2:	1be060ef          	jal	ra,e8807760 <__sprint_r>
    e88015a6:	96051963          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e88015aa:	7792                	ld	a5,288(sp)
    e88015ac:	11812703          	lw	a4,280(sp)
    e88015b0:	8c5a                	mv	s8,s6
    e88015b2:	b605                	j	e88010d2 <_vfprintf_r+0xc62>
    e88015b4:	0a10                	addi	a2,sp,272
    e88015b6:	85d2                	mv	a1,s4
    e88015b8:	8556                	mv	a0,s5
    e88015ba:	1a6060ef          	jal	ra,e8807760 <__sprint_r>
    e88015be:	94051d63          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e88015c2:	7792                	ld	a5,288(sp)
    e88015c4:	11812703          	lw	a4,280(sp)
    e88015c8:	8c5a                	mv	s8,s6
    e88015ca:	b60d                	j	e88010ec <_vfprintf_r+0xc7c>
    e88015cc:	11812703          	lw	a4,280(sp)
    e88015d0:	000ce617          	auipc	a2,0xce
    e88015d4:	bf060613          	addi	a2,a2,-1040 # e88cf1c0 <err_to_errno_table+0xe8>
    e88015d8:	00c33023          	sd	a2,0(t1)
    e88015dc:	2705                	addiw	a4,a4,1
    e88015de:	4605                	li	a2,1
    e88015e0:	0785                	addi	a5,a5,1
    e88015e2:	00c33423          	sd	a2,8(t1)
    e88015e6:	f23e                	sd	a5,288(sp)
    e88015e8:	10e12c23          	sw	a4,280(sp)
    e88015ec:	461d                	li	a2,7
    e88015ee:	0341                	addi	t1,t1,16
    e88015f0:	2ce64463          	blt	a2,a4,e88018b8 <_vfprintf_r+0x1448>
    e88015f4:	ec069c63          	bnez	a3,e8800ccc <_vfprintf_r+0x85c>
    e88015f8:	7682                	ld	a3,32(sp)
    e88015fa:	00147713          	andi	a4,s0,1
    e88015fe:	8f55                	or	a4,a4,a3
    e8801600:	e4070f63          	beqz	a4,e8800c5e <_vfprintf_r+0x7ee>
    e8801604:	7766                	ld	a4,120(sp)
    e8801606:	76c6                	ld	a3,112(sp)
    e8801608:	00e33023          	sd	a4,0(t1)
    e880160c:	11812703          	lw	a4,280(sp)
    e8801610:	97b6                	add	a5,a5,a3
    e8801612:	00d33423          	sd	a3,8(t1)
    e8801616:	2705                	addiw	a4,a4,1
    e8801618:	f23e                	sd	a5,288(sp)
    e880161a:	10e12c23          	sw	a4,280(sp)
    e880161e:	469d                	li	a3,7
    e8801620:	ece6c763          	blt	a3,a4,e8800cee <_vfprintf_r+0x87e>
    e8801624:	0341                	addi	t1,t1,16
    e8801626:	ee8ff06f          	j	e8800d0e <_vfprintf_r+0x89e>
    e880162a:	0a10                	addi	a2,sp,272
    e880162c:	85d2                	mv	a1,s4
    e880162e:	8556                	mv	a0,s5
    e8801630:	130060ef          	jal	ra,e8807760 <__sprint_r>
    e8801634:	8e051263          	bnez	a0,e8800718 <_vfprintf_r+0x2a8>
    e8801638:	835a                	mv	t1,s6
    e880163a:	b8cd                	j	e8800f2c <_vfprintf_r+0xabc>
    e880163c:	2705                	addiw	a4,a4,1
    e880163e:	97e2                	add	a5,a5,s8
    e8801640:	01333023          	sd	s3,0(t1)
    e8801644:	e08ff06f          	j	e8800c4c <_vfprintf_r+0x7dc>
    e8801648:	6512                	ld	a0,256(sp)
    e880164a:	65b2                	ld	a1,264(sp)
    e880164c:	4601                	li	a2,0
    e880164e:	4681                	li	a3,0
    e8801650:	e41a                	sd	t1,8(sp)
    e8801652:	52c080ef          	jal	ra,e8809b7e <__letf2>
    e8801656:	6322                	ld	t1,8(sp)
    e8801658:	5e054263          	bltz	a0,e8801c3c <_vfprintf_r+0x17cc>
    e880165c:	0df14783          	lbu	a5,223(sp)
    e8801660:	04700813          	li	a6,71
    e8801664:	01982833          	slt	a6,a6,s9
    e8801668:	f7f47413          	andi	s0,s0,-129
    e880166c:	000d2697          	auipc	a3,0xd2
    e8801670:	76c68693          	addi	a3,a3,1900 # e88d3dd8 <dhcp_discover_request_options+0x5d0>
    e8801674:	000d2717          	auipc	a4,0xd2
    e8801678:	75c70713          	addi	a4,a4,1884 # e88d3dd0 <dhcp_discover_request_options+0x5c8>
    e880167c:	ec02                	sd	zero,24(sp)
    e880167e:	e882                	sd	zero,80(sp)
    e8801680:	f082                	sd	zero,96(sp)
    e8801682:	ec82                	sd	zero,88(sp)
    e8801684:	4306970b          	mvnez	a4,a3,a6
    e8801688:	8d3a                	mv	s10,a4
    e880168a:	2401                	sext.w	s0,s0
    e880168c:	448d                	li	s1,3
    e880168e:	4c0d                	li	s8,3
    e8801690:	4e81                	li	t4,0
    e8801692:	c399                	beqz	a5,e8801698 <_vfprintf_r+0x1228>
    e8801694:	fc3fe06f          	j	e8800656 <_vfprintf_r+0x1e6>
    e8801698:	d20ff06f          	j	e8800bb8 <_vfprintf_r+0x748>
    e880169c:	856a                	mv	a0,s10
    e880169e:	e41a                	sd	t1,8(sp)
    e88016a0:	e83a                	sd	a4,16(sp)
    e88016a2:	cc7fe0ef          	jal	ra,e8800368 <strlen>
    e88016a6:	00050c1b          	sext.w	s8,a0
    e88016aa:	fffc4493          	not	s1,s8
    e88016ae:	0df14783          	lbu	a5,223(sp)
    e88016b2:	94fd                	srai	s1,s1,0x3f
    e88016b4:	ec02                	sd	zero,24(sp)
    e88016b6:	e882                	sd	zero,80(sp)
    e88016b8:	f082                	sd	zero,96(sp)
    e88016ba:	ec82                	sd	zero,88(sp)
    e88016bc:	009c74b3          	and	s1,s8,s1
    e88016c0:	2481                	sext.w	s1,s1
    e88016c2:	4e81                	li	t4,0
    e88016c4:	6322                	ld	t1,8(sp)
    e88016c6:	c399                	beqz	a5,e88016cc <_vfprintf_r+0x125c>
    e88016c8:	f8ffe06f          	j	e8800656 <_vfprintf_r+0x1e6>
    e88016cc:	cecff06f          	j	e8800bb8 <_vfprintf_r+0x748>
    e88016d0:	0ff4f693          	andi	a3,s1,255
    e88016d4:	20047793          	andi	a5,s0,512
    e88016d8:	7c04b48b          	extu	s1,s1,31,0
    e88016dc:	42f6948b          	mvnez	s1,a3,a5
    e88016e0:	8a6ff06f          	j	e8800786 <_vfprintf_r+0x316>
    e88016e4:	0ff4f693          	andi	a3,s1,255
    e88016e8:	20047793          	andi	a5,s0,512
    e88016ec:	7c04b48b          	extu	s1,s1,31,0
    e88016f0:	42f6948b          	mvnez	s1,a3,a5
    e88016f4:	f03fe06f          	j	e88005f6 <_vfprintf_r+0x186>
    e88016f8:	20047793          	andi	a5,s0,512
    e88016fc:	24078763          	beqz	a5,e880194a <_vfprintf_r+0x14da>
    e8801700:	0ff4f493          	andi	s1,s1,255
    e8801704:	e83a                	sd	a4,16(sp)
    e8801706:	86a2                	mv	a3,s0
    e8801708:	4785                	li	a5,1
    e880170a:	ef7fe06f          	j	e8800600 <_vfprintf_r+0x190>
    e880170e:	20047793          	andi	a5,s0,512
    e8801712:	22078763          	beqz	a5,e8801940 <_vfprintf_r+0x14d0>
    e8801716:	67c2                	ld	a5,16(sp)
    e8801718:	00078483          	lb	s1,0(a5)
    e880171c:	87a6                	mv	a5,s1
    e880171e:	f55fe06f          	j	e8800672 <_vfprintf_r+0x202>
    e8801722:	67b2                	ld	a5,264(sp)
    e8801724:	2407c063          	bltz	a5,e8801964 <_vfprintf_r+0x14f4>
    e8801728:	0df14783          	lbu	a5,223(sp)
    e880172c:	04700813          	li	a6,71
    e8801730:	01982833          	slt	a6,a6,s9
    e8801734:	f7f47413          	andi	s0,s0,-129
    e8801738:	000d2697          	auipc	a3,0xd2
    e880173c:	6b068693          	addi	a3,a3,1712 # e88d3de8 <dhcp_discover_request_options+0x5e0>
    e8801740:	000d2717          	auipc	a4,0xd2
    e8801744:	6a070713          	addi	a4,a4,1696 # e88d3de0 <dhcp_discover_request_options+0x5d8>
    e8801748:	bf15                	j	e880167c <_vfprintf_r+0x120c>
    e880174a:	2705                	addiw	a4,a4,1
    e880174c:	97e2                	add	a5,a5,s8
    e880174e:	f983598b          	sdd	s3,s8,(t1),0,4
    e8801752:	f23e                	sd	a5,288(sp)
    e8801754:	10e12c23          	sw	a4,280(sp)
    e8801758:	469d                	li	a3,7
    e880175a:	0341                	addi	t1,t1,16
    e880175c:	bce6d6e3          	bge	a3,a4,e8801328 <_vfprintf_r+0xeb8>
    e8801760:	0a10                	addi	a2,sp,272
    e8801762:	85d2                	mv	a1,s4
    e8801764:	8556                	mv	a0,s5
    e8801766:	7fb050ef          	jal	ra,e8807760 <__sprint_r>
    e880176a:	c119                	beqz	a0,e8801770 <_vfprintf_r+0x1300>
    e880176c:	fadfe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e8801770:	7792                	ld	a5,288(sp)
    e8801772:	835a                	mv	t1,s6
    e8801774:	be55                	j	e8801328 <_vfprintf_r+0xeb8>
    e8801776:	7702                	ld	a4,32(sp)
    e8801778:	4c9d                	li	s9,7
    e880177a:	976a                	add	a4,a4,s10
    e880177c:	f83a                	sd	a4,48(sp)
    e880177e:	7706                	ld	a4,96(sp)
    e8801780:	c349                	beqz	a4,e8801802 <_vfprintf_r+0x1392>
    e8801782:	6746                	ld	a4,80(sp)
    e8801784:	e351                	bnez	a4,e8801808 <_vfprintf_r+0x1398>
    e8801786:	7726                	ld	a4,104(sp)
    e8801788:	177d                	addi	a4,a4,-1
    e880178a:	f4ba                	sd	a4,104(sp)
    e880178c:	7706                	ld	a4,96(sp)
    e880178e:	377d                	addiw	a4,a4,-1
    e8801790:	f0ba                	sd	a4,96(sp)
    e8801792:	674a                	ld	a4,144(sp)
    e8801794:	668a                	ld	a3,128(sp)
    e8801796:	0341                	addi	t1,t1,16
    e8801798:	fee33823          	sd	a4,-16(t1)
    e880179c:	11812703          	lw	a4,280(sp)
    e88017a0:	97b6                	add	a5,a5,a3
    e88017a2:	fed33c23          	sd	a3,-8(t1)
    e88017a6:	2705                	addiw	a4,a4,1
    e88017a8:	f23e                	sd	a5,288(sp)
    e88017aa:	10e12c23          	sw	a4,280(sp)
    e88017ae:	0cecc463          	blt	s9,a4,e8801876 <_vfprintf_r+0x1406>
    e88017b2:	7526                	ld	a0,104(sp)
    e88017b4:	7742                	ld	a4,48(sp)
    e88017b6:	00054603          	lbu	a2,0(a0)
    e88017ba:	4187073b          	subw	a4,a4,s8
    e88017be:	00c725b3          	slt	a1,a4,a2
    e88017c2:	40b6170b          	mveqz	a4,a2,a1
    e88017c6:	86b2                	mv	a3,a2
    e88017c8:	02e05363          	blez	a4,e88017ee <_vfprintf_r+0x137e>
    e88017cc:	11812683          	lw	a3,280(sp)
    e88017d0:	97ba                	add	a5,a5,a4
    e88017d2:	01833023          	sd	s8,0(t1)
    e88017d6:	2685                	addiw	a3,a3,1
    e88017d8:	00e33423          	sd	a4,8(t1)
    e88017dc:	f23e                	sd	a5,288(sp)
    e88017de:	10d12c23          	sw	a3,280(sp)
    e88017e2:	0adcc563          	blt	s9,a3,e880188c <_vfprintf_r+0x141c>
    e88017e6:	00054603          	lbu	a2,0(a0)
    e88017ea:	0341                	addi	t1,t1,16
    e88017ec:	86b2                	mv	a3,a2
    e88017ee:	fff74593          	not	a1,a4
    e88017f2:	95fd                	srai	a1,a1,0x3f
    e88017f4:	8f6d                	and	a4,a4,a1
    e88017f6:	9e99                	subw	a3,a3,a4
    e88017f8:	00d04c63          	bgtz	a3,e8801810 <_vfprintf_r+0x13a0>
    e88017fc:	9c32                	add	s8,s8,a2
    e88017fe:	7706                	ld	a4,96(sp)
    e8801800:	f349                	bnez	a4,e8801782 <_vfprintf_r+0x1312>
    e8801802:	6746                	ld	a4,80(sp)
    e8801804:	30070b63          	beqz	a4,e8801b1a <_vfprintf_r+0x16aa>
    e8801808:	6746                	ld	a4,80(sp)
    e880180a:	377d                	addiw	a4,a4,-1
    e880180c:	e8ba                	sd	a4,80(sp)
    e880180e:	b751                	j	e8801792 <_vfprintf_r+0x1322>
    e8801810:	11812703          	lw	a4,280(sp)
    e8801814:	00ddc763          	blt	s11,a3,e8801822 <_vfprintf_r+0x13b2>
    e8801818:	a081                	j	e8801858 <_vfprintf_r+0x13e8>
    e880181a:	0001                	nop
    e880181c:	36c1                	addiw	a3,a3,-16
    e880181e:	02dddd63          	bge	s11,a3,e8801858 <_vfprintf_r+0x13e8>
    e8801822:	2705                	addiw	a4,a4,1
    e8801824:	07c1                	addi	a5,a5,16
    e8801826:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e880182a:	f23e                	sd	a5,288(sp)
    e880182c:	10e12c23          	sw	a4,280(sp)
    e8801830:	0341                	addi	t1,t1,16
    e8801832:	feecd5e3          	bge	s9,a4,e880181c <_vfprintf_r+0x13ac>
    e8801836:	0a10                	addi	a2,sp,272
    e8801838:	85d2                	mv	a1,s4
    e880183a:	8556                	mv	a0,s5
    e880183c:	e436                	sd	a3,8(sp)
    e880183e:	723050ef          	jal	ra,e8807760 <__sprint_r>
    e8801842:	c119                	beqz	a0,e8801848 <_vfprintf_r+0x13d8>
    e8801844:	ed5fe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e8801848:	66a2                	ld	a3,8(sp)
    e880184a:	7792                	ld	a5,288(sp)
    e880184c:	11812703          	lw	a4,280(sp)
    e8801850:	36c1                	addiw	a3,a3,-16
    e8801852:	835a                	mv	t1,s6
    e8801854:	fcddc7e3          	blt	s11,a3,e8801822 <_vfprintf_r+0x13b2>
    e8801858:	2705                	addiw	a4,a4,1
    e880185a:	97b6                	add	a5,a5,a3
    e880185c:	f8d3598b          	sdd	s3,a3,(t1),0,4
    e8801860:	f23e                	sd	a5,288(sp)
    e8801862:	10e12c23          	sw	a4,280(sp)
    e8801866:	3aeccc63          	blt	s9,a4,e8801c1e <_vfprintf_r+0x17ae>
    e880186a:	7726                	ld	a4,104(sp)
    e880186c:	0341                	addi	t1,t1,16
    e880186e:	00074603          	lbu	a2,0(a4)
    e8801872:	9c32                	add	s8,s8,a2
    e8801874:	b769                	j	e88017fe <_vfprintf_r+0x138e>
    e8801876:	0a10                	addi	a2,sp,272
    e8801878:	85d2                	mv	a1,s4
    e880187a:	8556                	mv	a0,s5
    e880187c:	6e5050ef          	jal	ra,e8807760 <__sprint_r>
    e8801880:	c119                	beqz	a0,e8801886 <_vfprintf_r+0x1416>
    e8801882:	e97fe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e8801886:	7792                	ld	a5,288(sp)
    e8801888:	835a                	mv	t1,s6
    e880188a:	b725                	j	e88017b2 <_vfprintf_r+0x1342>
    e880188c:	0a10                	addi	a2,sp,272
    e880188e:	85d2                	mv	a1,s4
    e8801890:	8556                	mv	a0,s5
    e8801892:	e43a                	sd	a4,8(sp)
    e8801894:	6cd050ef          	jal	ra,e8807760 <__sprint_r>
    e8801898:	c119                	beqz	a0,e880189e <_vfprintf_r+0x142e>
    e880189a:	e7ffe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e880189e:	77a6                	ld	a5,104(sp)
    e88018a0:	835a                	mv	t1,s6
    e88018a2:	6722                	ld	a4,8(sp)
    e88018a4:	0007c603          	lbu	a2,0(a5)
    e88018a8:	7792                	ld	a5,288(sp)
    e88018aa:	86b2                	mv	a3,a2
    e88018ac:	b789                	j	e88017ee <_vfprintf_r+0x137e>
    e88018ae:	2c85                	addiw	s9,s9,1
    e88018b0:	01070313          	addi	t1,a4,16
    e88018b4:	8c3a                	mv	s8,a4
    e88018b6:	b071                	j	e8801142 <_vfprintf_r+0xcd2>
    e88018b8:	0a10                	addi	a2,sp,272
    e88018ba:	85d2                	mv	a1,s4
    e88018bc:	8556                	mv	a0,s5
    e88018be:	6a3050ef          	jal	ra,e8807760 <__sprint_r>
    e88018c2:	c119                	beqz	a0,e88018c8 <_vfprintf_r+0x1458>
    e88018c4:	e55fe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e88018c8:	56ae                	lw	a3,232(sp)
    e88018ca:	7792                	ld	a5,288(sp)
    e88018cc:	835a                	mv	t1,s6
    e88018ce:	b31d                	j	e88015f4 <_vfprintf_r+0x1184>
    e88018d0:	0a10                	addi	a2,sp,272
    e88018d2:	85d2                	mv	a1,s4
    e88018d4:	8556                	mv	a0,s5
    e88018d6:	68b050ef          	jal	ra,e8807760 <__sprint_r>
    e88018da:	c119                	beqz	a0,e88018e0 <_vfprintf_r+0x1470>
    e88018dc:	e3dfe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e88018e0:	7792                	ld	a5,288(sp)
    e88018e2:	835a                	mv	t1,s6
    e88018e4:	bc05                	j	e8801314 <_vfprintf_r+0xea4>
    e88018e6:	fc3e                	sd	a5,56(sp)
    e88018e8:	678a                	ld	a5,128(sp)
    e88018ea:	65ca                	ld	a1,144(sp)
    e88018ec:	f81a                	sd	t1,48(sp)
    e88018ee:	40fd0d33          	sub	s10,s10,a5
    e88018f2:	863e                	mv	a2,a5
    e88018f4:	856a                	mv	a0,s10
    e88018f6:	ec76                	sd	t4,24(sp)
    e88018f8:	e436                	sd	a3,8(sp)
    e88018fa:	256040ef          	jal	ra,e8805b50 <strncpy>
    e88018fe:	f002                	sd	zero,32(sp)
    e8801900:	77a6                	ld	a5,104(sp)
    e8801902:	0284d633          	divu	a2,s1,s0
    e8801906:	66a2                	ld	a3,8(sp)
    e8801908:	0017c583          	lbu	a1,1(a5)
    e880190c:	6ee2                	ld	t4,24(sp)
    e880190e:	4725                	li	a4,9
    e8801910:	00b035b3          	snez	a1,a1
    e8801914:	97ae                	add	a5,a5,a1
    e8801916:	f4be                	sd	a5,104(sp)
    e8801918:	0ff00893          	li	a7,255
    e880191c:	fef1430b          	ldd	t1,a5,(sp),3,4
    e8801920:	d88ff06f          	j	e8800ea8 <_vfprintf_r+0xa38>
    e8801924:	7682                	ld	a3,32(sp)
    e8801926:	40e6873b          	subw	a4,a3,a4
    e880192a:	00dd0833          	add	a6,s10,a3
    e880192e:	41880ebb          	subw	t4,a6,s8
    e8801932:	86ba                	mv	a3,a4
    e8801934:	00dea633          	slt	a2,t4,a3
    e8801938:	42ce970b          	mvnez	a4,t4,a2
    e880193c:	8cba                	mv	s9,a4
    e880193e:	b49d                	j	e88013a4 <_vfprintf_r+0xf34>
    e8801940:	67c2                	ld	a5,16(sp)
    e8801942:	4384                	lw	s1,0(a5)
    e8801944:	87a6                	mv	a5,s1
    e8801946:	d2dfe06f          	j	e8800672 <_vfprintf_r+0x202>
    e880194a:	7c04b48b          	extu	s1,s1,31,0
    e880194e:	e83a                	sd	a4,16(sp)
    e8801950:	86a2                	mv	a3,s0
    e8801952:	4785                	li	a5,1
    e8801954:	cadfe06f          	j	e8800600 <_vfprintf_r+0x190>
    e8801958:	6782                	ld	a5,0(sp)
    e880195a:	8d4a                	mv	s10,s2
    e880195c:	00f71023          	sh	a5,0(a4)
    e8801960:	b30ff06f          	j	e8800c90 <_vfprintf_r+0x820>
    e8801964:	02d00793          	li	a5,45
    e8801968:	0cf10fa3          	sb	a5,223(sp)
    e880196c:	02d00793          	li	a5,45
    e8801970:	bb75                	j	e880172c <_vfprintf_r+0x12bc>
    e8801972:	03000793          	li	a5,48
    e8801976:	0ef10023          	sb	a5,224(sp)
    e880197a:	05800793          	li	a5,88
    e880197e:	0ef100a3          	sb	a5,225(sp)
    e8801982:	00246793          	ori	a5,s0,2
    e8801986:	2781                	sext.w	a5,a5
    e8801988:	e1be                	sd	a5,192(sp)
    e880198a:	ec02                	sd	zero,24(sp)
    e880198c:	06300713          	li	a4,99
    e8801990:	12810d13          	addi	s10,sp,296
    e8801994:	3fd74a63          	blt	a4,t4,e8801d88 <_vfprintf_r+0x1918>
    e8801998:	fdfcf793          	andi	a5,s9,-33
    e880199c:	6c32                	ld	s8,264(sp)
    e880199e:	f13e                	sd	a5,160(sp)
    e88019a0:	e582                	sd	zero,200(sp)
    e88019a2:	10246413          	ori	s0,s0,258
    e88019a6:	2401                	sext.w	s0,s0
    e88019a8:	6f92                	ld	t6,256(sp)
    e88019aa:	260c4263          	bltz	s8,e8801c0e <_vfprintf_r+0x179e>
    e88019ae:	06100793          	li	a5,97
    e88019b2:	48fc8e63          	beq	s9,a5,e8801e4e <_vfprintf_r+0x19de>
    e88019b6:	04100793          	li	a5,65
    e88019ba:	00fc8463          	beq	s9,a5,e88019c2 <_vfprintf_r+0x1552>
    e88019be:	f13fe06f          	j	e88008d0 <_vfprintf_r+0x460>
    e88019c2:	857e                	mv	a0,t6
    e88019c4:	85e2                	mv	a1,s8
    e88019c6:	fc1a                	sd	t1,56(sp)
    e88019c8:	f876                	sd	t4,48(sp)
    e88019ca:	204090ef          	jal	ra,e880abce <__trunctfdf2>
    e88019ce:	11a8                	addi	a0,sp,232
    e88019d0:	6b1030ef          	jal	ra,e8805880 <frexp>
    e88019d4:	13a090ef          	jal	ra,e880ab0e <__extenddftf2>
    e88019d8:	000d2797          	auipc	a5,0xd2
    e88019dc:	3e878793          	addi	a5,a5,1000 # e88d3dc0 <dhcp_discover_request_options+0x5b8>
    e88019e0:	f8d7c60b          	ldd	a2,a3,(a5),0,4
    e88019e4:	23e080ef          	jal	ra,e8809c22 <__multf3>
    e88019e8:	f02a                	sd	a0,32(sp)
    e88019ea:	4601                	li	a2,0
    e88019ec:	4681                	li	a3,0
    e88019ee:	e42e                	sd	a1,8(sp)
    e88019f0:	056080ef          	jal	ra,e8809a46 <__eqtf2>
    e88019f4:	6722                	ld	a4,8(sp)
    e88019f6:	7882                	ld	a7,32(sp)
    e88019f8:	fe614e8b          	ldd	t4,t1,(sp),3,4
    e88019fc:	e119                	bnez	a0,e8801a02 <_vfprintf_r+0x1592>
    e88019fe:	4785                	li	a5,1
    e8801a00:	d5be                	sw	a5,232(sp)
    e8801a02:	0009e797          	auipc	a5,0x9e
    e8801a06:	45e78793          	addi	a5,a5,1118 # e889fe60 <TWO52+0x268>
    e8801a0a:	f0be                	sd	a5,96(sp)
    e8801a0c:	000e869b          	sext.w	a3,t4
    e8801a10:	7c06b48b          	extu	s1,a3,31,0
    e8801a14:	00dd06bb          	addw	a3,s10,a3
    e8801a18:	000d2797          	auipc	a5,0xd2
    e8801a1c:	38878793          	addi	a5,a5,904 # e88d3da0 <dhcp_discover_request_options+0x598>
    e8801a20:	d736                	sw	a3,172(sp)
    e8801a22:	6394                	ld	a3,0(a5)
    e8801a24:	679c                	ld	a5,8(a5)
    e8801a26:	0485                	addi	s1,s1,1
    e8801a28:	94ea                	add	s1,s1,s10
    e8801a2a:	e46a                	sd	s10,8(sp)
    e8801a2c:	f936                	sd	a3,176(sp)
    e8801a2e:	fd3e                	sd	a5,184(sp)
    e8801a30:	a00d                	j	e8801a52 <_vfprintf_r+0x15e2>
    e8801a32:	4601                	li	a2,0
    e8801a34:	4681                	li	a3,0
    e8801a36:	ecae                	sd	a1,88(sp)
    e8801a38:	e8aa                	sd	a0,80(sp)
    e8801a3a:	00c080ef          	jal	ra,e8809a46 <__eqtf2>
    e8801a3e:	7ee2                	ld	t4,56(sp)
    e8801a40:	6306                	ld	t1,64(sp)
    e8801a42:	62c6                	ld	t0,80(sp)
    e8801a44:	6fe6                	ld	t6,88(sp)
    e8801a46:	7782                	ld	a5,32(sp)
    e8801a48:	7742                	ld	a4,48(sp)
    e8801a4a:	68a6                	ld	a7,72(sp)
    e8801a4c:	3e050063          	beqz	a0,e8801e2c <_vfprintf_r+0x19bc>
    e8801a50:	e43e                	sd	a5,8(sp)
    e8801a52:	764a                	ld	a2,176(sp)
    e8801a54:	76ea                	ld	a3,184(sp)
    e8801a56:	8546                	mv	a0,a7
    e8801a58:	85ba                	mv	a1,a4
    e8801a5a:	e09a                	sd	t1,64(sp)
    e8801a5c:	fc76                	sd	t4,56(sp)
    e8801a5e:	1c4080ef          	jal	ra,e8809c22 <__multf3>
    e8801a62:	f02e                	sd	a1,32(sp)
    e8801a64:	f82a                	sd	a0,48(sp)
    e8801a66:	7b9080ef          	jal	ra,e880aa1e <__fixtfsi>
    e8801a6a:	00050c1b          	sext.w	s8,a0
    e8801a6e:	040090ef          	jal	ra,e880aaae <__floatsitf>
    e8801a72:	862a                	mv	a2,a0
    e8801a74:	7742                	ld	a4,48(sp)
    e8801a76:	7782                	ld	a5,32(sp)
    e8801a78:	86ae                	mv	a3,a1
    e8801a7a:	853a                	mv	a0,a4
    e8801a7c:	85be                	mv	a1,a5
    e8801a7e:	782080ef          	jal	ra,e880a200 <__subtf3>
    e8801a82:	e4aa                	sd	a0,72(sp)
    e8801a84:	7786                	ld	a5,96(sp)
    e8801a86:	f82e                	sd	a1,48(sp)
    e8801a88:	82aa                	mv	t0,a0
    e8801a8a:	8187c70b          	lrbu	a4,a5,s8,0
    e8801a8e:	67a2                	ld	a5,8(sp)
    e8801a90:	8fae                	mv	t6,a1
    e8801a92:	7ee2                	ld	t4,56(sp)
    e8801a94:	1817d70b          	sbia	a4,(a5),1,0
    e8801a98:	573a                	lw	a4,172(sp)
    e8801a9a:	f03e                	sd	a5,32(sp)
    e8801a9c:	6306                	ld	t1,64(sp)
    e8801a9e:	9f1d                	subw	a4,a4,a5
    e8801aa0:	ed3a                	sd	a4,152(sp)
    e8801aa2:	f8f498e3          	bne	s1,a5,e8801a32 <_vfprintf_r+0x15c2>
    e8801aa6:	57fd                	li	a5,-1
    e8801aa8:	ed3e                	sd	a5,152(sp)
    e8801aaa:	000d2797          	auipc	a5,0xd2
    e8801aae:	30678793          	addi	a5,a5,774 # e88d3db0 <dhcp_discover_request_options+0x5a8>
    e8801ab2:	6398                	ld	a4,0(a5)
    e8801ab4:	679c                	ld	a5,8(a5)
    e8801ab6:	8516                	mv	a0,t0
    e8801ab8:	863a                	mv	a2,a4
    e8801aba:	86be                	mv	a3,a5
    e8801abc:	85fe                	mv	a1,t6
    e8801abe:	f81a                	sd	t1,48(sp)
    e8801ac0:	f076                	sd	t4,32(sp)
    e8801ac2:	e896                	sd	t0,80(sp)
    e8801ac4:	e4ba                	sd	a4,72(sp)
    e8801ac6:	e0be                	sd	a5,64(sp)
    e8801ac8:	fc7e                	sd	t6,56(sp)
    e8801aca:	010080ef          	jal	ra,e8809ada <__getf2>
    e8801ace:	7e82                	ld	t4,32(sp)
    e8801ad0:	7342                	ld	t1,48(sp)
    e8801ad2:	30a04663          	bgtz	a0,e8801dde <_vfprintf_r+0x196e>
    e8801ad6:	6726                	ld	a4,72(sp)
    e8801ad8:	6786                	ld	a5,64(sp)
    e8801ada:	62c6                	ld	t0,80(sp)
    e8801adc:	7fe2                	ld	t6,56(sp)
    e8801ade:	863a                	mv	a2,a4
    e8801ae0:	86be                	mv	a3,a5
    e8801ae2:	8516                	mv	a0,t0
    e8801ae4:	85fe                	mv	a1,t6
    e8801ae6:	761070ef          	jal	ra,e8809a46 <__eqtf2>
    e8801aea:	7e82                	ld	t4,32(sp)
    e8801aec:	7342                	ld	t1,48(sp)
    e8801aee:	e509                	bnez	a0,e8801af8 <_vfprintf_r+0x1688>
    e8801af0:	001c7c13          	andi	s8,s8,1
    e8801af4:	2e0c1563          	bnez	s8,e8801dde <_vfprintf_r+0x196e>
    e8801af8:	66ea                	ld	a3,152(sp)
    e8801afa:	03000713          	li	a4,48
    e8801afe:	00168793          	addi	a5,a3,1
    e8801b02:	97a6                	add	a5,a5,s1
    e8801b04:	0006c663          	bltz	a3,e8801b10 <_vfprintf_r+0x16a0>
    e8801b08:	1814d70b          	sbia	a4,(s1),1,0
    e8801b0c:	fe979ee3          	bne	a5,s1,e8801b08 <_vfprintf_r+0x1698>
    e8801b10:	41a487bb          	subw	a5,s1,s10
    e8801b14:	f03e                	sd	a5,32(sp)
    e8801b16:	e1ffe06f          	j	e8800934 <_vfprintf_r+0x4c4>
    e8801b1a:	7702                	ld	a4,32(sp)
    e8801b1c:	976a                	add	a4,a4,s10
    e8801b1e:	018736b3          	sltu	a3,a4,s8
    e8801b22:	42d71c0b          	mvnez	s8,a4,a3
    e8801b26:	811ff06f          	j	e8801336 <_vfprintf_r+0xec6>
    e8801b2a:	0001                	nop
    e8801b2c:	6766                	ld	a4,88(sp)
    e8801b2e:	57f5                	li	a5,-3
    e8801b30:	00f74463          	blt	a4,a5,e8801b38 <_vfprintf_r+0x16c8>
    e8801b34:	08eed463          	bge	t4,a4,e8801bbc <_vfprintf_r+0x174c>
    e8801b38:	3cf9                	addiw	s9,s9,-2
    e8801b3a:	fdfcf793          	andi	a5,s9,-33
    e8801b3e:	f13e                	sd	a5,160(sp)
    e8801b40:	e15fe06f          	j	e8800954 <_vfprintf_r+0x4e4>
    e8801b44:	8776                	mv	a4,t4
    e8801b46:	11bc                	addi	a5,sp,232
    e8801b48:	85fe                	mv	a1,t6
    e8801b4a:	0f810893          	addi	a7,sp,248
    e8801b4e:	0ec10813          	addi	a6,sp,236
    e8801b52:	468d                	li	a3,3
    e8801b54:	8662                	mv	a2,s8
    e8801b56:	8556                	mv	a0,s5
    e8801b58:	f81a                	sd	t1,48(sp)
    e8801b5a:	f076                	sd	t4,32(sp)
    e8801b5c:	e47e                	sd	t6,8(sp)
    e8801b5e:	7a3010ef          	jal	ra,e8803b00 <_ldtoa_r>
    e8801b62:	00054703          	lbu	a4,0(a0)
    e8801b66:	03000793          	li	a5,48
    e8801b6a:	8d2a                	mv	s10,a0
    e8801b6c:	6fa2                	ld	t6,8(sp)
    e8801b6e:	7e82                	ld	t4,32(sp)
    e8801b70:	7342                	ld	t1,48(sp)
    e8801b72:	0ef70963          	beq	a4,a5,e8801c64 <_vfprintf_r+0x17f4>
    e8801b76:	57ae                	lw	a5,232(sp)
    e8801b78:	97f6                	add	a5,a5,t4
    e8801b7a:	00fd04b3          	add	s1,s10,a5
    e8801b7e:	4601                	li	a2,0
    e8801b80:	4681                	li	a3,0
    e8801b82:	857e                	mv	a0,t6
    e8801b84:	85e2                	mv	a1,s8
    e8801b86:	f01a                	sd	t1,32(sp)
    e8801b88:	e476                	sd	t4,8(sp)
    e8801b8a:	6bd070ef          	jal	ra,e8809a46 <__eqtf2>
    e8801b8e:	87a6                	mv	a5,s1
    e8801b90:	6ea2                	ld	t4,8(sp)
    e8801b92:	7302                	ld	t1,32(sp)
    e8801b94:	e119                	bnez	a0,e8801b9a <_vfprintf_r+0x172a>
    e8801b96:	d99fe06f          	j	e880092e <_vfprintf_r+0x4be>
    e8801b9a:	77ee                	ld	a5,248(sp)
    e8801b9c:	03000693          	li	a3,48
    e8801ba0:	0097e463          	bltu	a5,s1,e8801ba8 <_vfprintf_r+0x1738>
    e8801ba4:	d8bfe06f          	j	e880092e <_vfprintf_r+0x4be>
    e8801ba8:	00178713          	addi	a4,a5,1
    e8801bac:	fdba                	sd	a4,248(sp)
    e8801bae:	00d78023          	sb	a3,0(a5)
    e8801bb2:	77ee                	ld	a5,248(sp)
    e8801bb4:	fe97eae3          	bltu	a5,s1,e8801ba8 <_vfprintf_r+0x1738>
    e8801bb8:	d77fe06f          	j	e880092e <_vfprintf_r+0x4be>
    e8801bbc:	7782                	ld	a5,32(sp)
    e8801bbe:	66e6                	ld	a3,88(sp)
    e8801bc0:	10f6c363          	blt	a3,a5,e8801cc6 <_vfprintf_r+0x1856>
    e8801bc4:	670e                	ld	a4,192(sp)
    e8801bc6:	77c6                	ld	a5,112(sp)
    e8801bc8:	00177c13          	andi	s8,a4,1
    e8801bcc:	9fb5                	addw	a5,a5,a3
    e8801bce:	4387968b          	mvnez	a3,a5,s8
    e8801bd2:	40077713          	andi	a4,a4,1024
    e8801bd6:	8c36                	mv	s8,a3
    e8801bd8:	c701                	beqz	a4,e8801be0 <_vfprintf_r+0x1770>
    e8801bda:	67e6                	ld	a5,88(sp)
    e8801bdc:	2ef04263          	bgtz	a5,e8801ec0 <_vfprintf_r+0x1a50>
    e8801be0:	fffc4493          	not	s1,s8
    e8801be4:	94fd                	srai	s1,s1,0x3f
    e8801be6:	009c74b3          	and	s1,s8,s1
    e8801bea:	2481                	sext.w	s1,s1
    e8801bec:	06700c93          	li	s9,103
    e8801bf0:	e882                	sd	zero,80(sp)
    e8801bf2:	f082                	sd	zero,96(sp)
    e8801bf4:	e47fe06f          	j	e8800a3a <_vfprintf_r+0x5ca>
    e8801bf8:	0df14783          	lbu	a5,223(sp)
    e8801bfc:	4e81                	li	t4,0
    e8801bfe:	c399                	beqz	a5,e8801c04 <_vfprintf_r+0x1794>
    e8801c00:	a57fe06f          	j	e8800656 <_vfprintf_r+0x1e6>
    e8801c04:	fb5fe06f          	j	e8800bb8 <_vfprintf_r+0x748>
    e8801c08:	e1a2                	sd	s0,192(sp)
    e8801c0a:	ec02                	sd	zero,24(sp)
    e8801c0c:	843e                	mv	s0,a5
    e8801c0e:	57fd                	li	a5,-1
    e8801c10:	17fe                	slli	a5,a5,0x3f
    e8801c12:	00fc4c33          	xor	s8,s8,a5
    e8801c16:	02d00793          	li	a5,45
    e8801c1a:	e5be                	sd	a5,200(sp)
    e8801c1c:	bb49                	j	e88019ae <_vfprintf_r+0x153e>
    e8801c1e:	0a10                	addi	a2,sp,272
    e8801c20:	85d2                	mv	a1,s4
    e8801c22:	8556                	mv	a0,s5
    e8801c24:	33d050ef          	jal	ra,e8807760 <__sprint_r>
    e8801c28:	c119                	beqz	a0,e8801c2e <_vfprintf_r+0x17be>
    e8801c2a:	aeffe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e8801c2e:	77a6                	ld	a5,104(sp)
    e8801c30:	835a                	mv	t1,s6
    e8801c32:	0007c603          	lbu	a2,0(a5)
    e8801c36:	7792                	ld	a5,288(sp)
    e8801c38:	9c32                	add	s8,s8,a2
    e8801c3a:	b6d1                	j	e88017fe <_vfprintf_r+0x138e>
    e8801c3c:	02d00793          	li	a5,45
    e8801c40:	0cf10fa3          	sb	a5,223(sp)
    e8801c44:	02d00793          	li	a5,45
    e8801c48:	bc21                	j	e8801660 <_vfprintf_r+0x11f0>
    e8801c4a:	0a10                	addi	a2,sp,272
    e8801c4c:	85d2                	mv	a1,s4
    e8801c4e:	8556                	mv	a0,s5
    e8801c50:	311050ef          	jal	ra,e8807760 <__sprint_r>
    e8801c54:	c119                	beqz	a0,e8801c5a <_vfprintf_r+0x17ea>
    e8801c56:	ac3fe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e8801c5a:	572e                	lw	a4,232(sp)
    e8801c5c:	7792                	ld	a5,288(sp)
    e8801c5e:	835a                	mv	t1,s6
    e8801c60:	f08ff06f          	j	e8801368 <_vfprintf_r+0xef8>
    e8801c64:	857e                	mv	a0,t6
    e8801c66:	4601                	li	a2,0
    e8801c68:	4681                	li	a3,0
    e8801c6a:	85e2                	mv	a1,s8
    e8801c6c:	f81a                	sd	t1,48(sp)
    e8801c6e:	f076                	sd	t4,32(sp)
    e8801c70:	e47e                	sd	t6,8(sp)
    e8801c72:	5d5070ef          	jal	ra,e8809a46 <__eqtf2>
    e8801c76:	6fa2                	ld	t6,8(sp)
    e8801c78:	7e82                	ld	t4,32(sp)
    e8801c7a:	7342                	ld	t1,48(sp)
    e8801c7c:	ee050de3          	beqz	a0,e8801b76 <_vfprintf_r+0x1706>
    e8801c80:	4705                	li	a4,1
    e8801c82:	41d707bb          	subw	a5,a4,t4
    e8801c86:	d5be                	sw	a5,232(sp)
    e8801c88:	bdc5                	j	e8801b78 <_vfprintf_r+0x1708>
    e8801c8a:	0df14783          	lbu	a5,223(sp)
    e8801c8e:	e83a                	sd	a4,16(sp)
    e8801c90:	e882                	sd	zero,80(sp)
    e8801c92:	f082                	sd	zero,96(sp)
    e8801c94:	ec82                	sd	zero,88(sp)
    e8801c96:	84f6                	mv	s1,t4
    e8801c98:	8c76                	mv	s8,t4
    e8801c9a:	4e81                	li	t4,0
    e8801c9c:	c399                	beqz	a5,e8801ca2 <_vfprintf_r+0x1832>
    e8801c9e:	9b9fe06f          	j	e8800656 <_vfprintf_r+0x1e6>
    e8801ca2:	f17fe06f          	j	e8800bb8 <_vfprintf_r+0x748>
    e8801ca6:	0a10                	addi	a2,sp,272
    e8801ca8:	85d2                	mv	a1,s4
    e8801caa:	8556                	mv	a0,s5
    e8801cac:	2b5050ef          	jal	ra,e8807760 <__sprint_r>
    e8801cb0:	c119                	beqz	a0,e8801cb6 <_vfprintf_r+0x1846>
    e8801cb2:	a67fe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e8801cb6:	56ae                	lw	a3,232(sp)
    e8801cb8:	7702                	ld	a4,32(sp)
    e8801cba:	7792                	ld	a5,288(sp)
    e8801cbc:	835a                	mv	t1,s6
    e8801cbe:	40d706bb          	subw	a3,a4,a3
    e8801cc2:	ee2ff06f          	j	e88013a4 <_vfprintf_r+0xf34>
    e8801cc6:	7702                	ld	a4,32(sp)
    e8801cc8:	77c6                	ld	a5,112(sp)
    e8801cca:	06700c93          	li	s9,103
    e8801cce:	00e78c3b          	addw	s8,a5,a4
    e8801cd2:	6766                	ld	a4,88(sp)
    e8801cd4:	24e05763          	blez	a4,e8801f22 <_vfprintf_r+0x1ab2>
    e8801cd8:	678e                	ld	a5,192(sp)
    e8801cda:	4007f793          	andi	a5,a5,1024
    e8801cde:	1e079363          	bnez	a5,e8801ec4 <_vfprintf_r+0x1a54>
    e8801ce2:	fffc4493          	not	s1,s8
    e8801ce6:	94fd                	srai	s1,s1,0x3f
    e8801ce8:	009c74b3          	and	s1,s8,s1
    e8801cec:	2481                	sext.w	s1,s1
    e8801cee:	b709                	j	e8801bf0 <_vfprintf_r+0x1780>
    e8801cf0:	678e                	ld	a5,192(sp)
    e8801cf2:	6766                	ld	a4,88(sp)
    e8801cf4:	8b85                	andi	a5,a5,1
    e8801cf6:	00fee7b3          	or	a5,t4,a5
    e8801cfa:	2781                	sext.w	a5,a5
    e8801cfc:	24e05663          	blez	a4,e8801f48 <_vfprintf_r+0x1ad8>
    e8801d00:	12079f63          	bnez	a5,e8801e3e <_vfprintf_r+0x19ce>
    e8801d04:	6c66                	ld	s8,88(sp)
    e8801d06:	06600c93          	li	s9,102
    e8801d0a:	b7f9                	j	e8801cd8 <_vfprintf_r+0x1868>
    e8801d0c:	57fd                	li	a5,-1
    e8801d0e:	e03e                	sd	a5,0(sp)
    e8801d10:	a23fe06f          	j	e8800732 <_vfprintf_r+0x2c2>
    e8801d14:	40d00c3b          	negw	s8,a3
    e8801d18:	5641                	li	a2,-16
    e8801d1a:	2c01                	sext.w	s8,s8
    e8801d1c:	02c6de63          	bge	a3,a2,e8801d58 <_vfprintf_r+0x18e8>
    e8801d20:	4c9d                	li	s9,7
    e8801d22:	a021                	j	e8801d2a <_vfprintf_r+0x18ba>
    e8801d24:	3c41                	addiw	s8,s8,-16
    e8801d26:	038dd963          	bge	s11,s8,e8801d58 <_vfprintf_r+0x18e8>
    e8801d2a:	2705                	addiw	a4,a4,1
    e8801d2c:	07c1                	addi	a5,a5,16
    e8801d2e:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8801d32:	f23e                	sd	a5,288(sp)
    e8801d34:	10e12c23          	sw	a4,280(sp)
    e8801d38:	0341                	addi	t1,t1,16
    e8801d3a:	feecd5e3          	bge	s9,a4,e8801d24 <_vfprintf_r+0x18b4>
    e8801d3e:	0a10                	addi	a2,sp,272
    e8801d40:	85d2                	mv	a1,s4
    e8801d42:	8556                	mv	a0,s5
    e8801d44:	21d050ef          	jal	ra,e8807760 <__sprint_r>
    e8801d48:	c119                	beqz	a0,e8801d4e <_vfprintf_r+0x18de>
    e8801d4a:	9cffe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e8801d4e:	7792                	ld	a5,288(sp)
    e8801d50:	11812703          	lw	a4,280(sp)
    e8801d54:	835a                	mv	t1,s6
    e8801d56:	b7f9                	j	e8801d24 <_vfprintf_r+0x18b4>
    e8801d58:	2705                	addiw	a4,a4,1
    e8801d5a:	97e2                	add	a5,a5,s8
    e8801d5c:	f983598b          	sdd	s3,s8,(t1),0,4
    e8801d60:	f23e                	sd	a5,288(sp)
    e8801d62:	10e12c23          	sw	a4,280(sp)
    e8801d66:	469d                	li	a3,7
    e8801d68:	8ae6dee3          	bge	a3,a4,e8801624 <_vfprintf_r+0x11b4>
    e8801d6c:	0a10                	addi	a2,sp,272
    e8801d6e:	85d2                	mv	a1,s4
    e8801d70:	8556                	mv	a0,s5
    e8801d72:	1ef050ef          	jal	ra,e8807760 <__sprint_r>
    e8801d76:	c119                	beqz	a0,e8801d7c <_vfprintf_r+0x190c>
    e8801d78:	9a1fe06f          	j	e8800718 <_vfprintf_r+0x2a8>
    e8801d7c:	7792                	ld	a5,288(sp)
    e8801d7e:	11812703          	lw	a4,280(sp)
    e8801d82:	835a                	mv	t1,s6
    e8801d84:	f8bfe06f          	j	e8800d0e <_vfprintf_r+0x89e>
    e8801d88:	001e859b          	addiw	a1,t4,1
    e8801d8c:	8556                	mv	a0,s5
    e8801d8e:	ec1a                	sd	t1,24(sp)
    e8801d90:	e476                	sd	t4,8(sp)
    e8801d92:	4007a0ef          	jal	ra,e887c192 <_malloc_r>
    e8801d96:	8d2a                	mv	s10,a0
    e8801d98:	6ea2                	ld	t4,8(sp)
    e8801d9a:	6362                	ld	t1,24(sp)
    e8801d9c:	1e050663          	beqz	a0,e8801f88 <_vfprintf_r+0x1b18>
    e8801da0:	ec2a                	sd	a0,24(sp)
    e8801da2:	bedd                	j	e8801998 <_vfprintf_r+0x1528>
    e8801da4:	03000793          	li	a5,48
    e8801da8:	0ef10023          	sb	a5,224(sp)
    e8801dac:	07800793          	li	a5,120
    e8801db0:	b6f9                	j	e880197e <_vfprintf_r+0x150e>
    e8801db2:	001e849b          	addiw	s1,t4,1
    e8801db6:	8726                	mv	a4,s1
    e8801db8:	85fe                	mv	a1,t6
    e8801dba:	0f810893          	addi	a7,sp,248
    e8801dbe:	0ec10813          	addi	a6,sp,236
    e8801dc2:	11bc                	addi	a5,sp,232
    e8801dc4:	4689                	li	a3,2
    e8801dc6:	8662                	mv	a2,s8
    e8801dc8:	8556                	mv	a0,s5
    e8801dca:	f076                	sd	t4,32(sp)
    e8801dcc:	e47e                	sd	t6,8(sp)
    e8801dce:	533010ef          	jal	ra,e8803b00 <_ldtoa_r>
    e8801dd2:	8d2a                	mv	s10,a0
    e8801dd4:	6fa2                	ld	t6,8(sp)
    e8801dd6:	7e82                	ld	t4,32(sp)
    e8801dd8:	7342                	ld	t1,48(sp)
    e8801dda:	94ea                	add	s1,s1,s10
    e8801ddc:	b34d                	j	e8801b7e <_vfprintf_r+0x170e>
    e8801dde:	67a2                	ld	a5,8(sp)
    e8801de0:	fdbe                	sd	a5,248(sp)
    e8801de2:	7786                	ld	a5,96(sp)
    e8801de4:	fff4c703          	lbu	a4,-1(s1)
    e8801de8:	00f7c683          	lbu	a3,15(a5)
    e8801dec:	87a6                	mv	a5,s1
    e8801dee:	00e69e63          	bne	a3,a4,e8801e0a <_vfprintf_r+0x199a>
    e8801df2:	03000613          	li	a2,48
    e8801df6:	fec78fa3          	sb	a2,-1(a5)
    e8801dfa:	77ee                	ld	a5,248(sp)
    e8801dfc:	fff78713          	addi	a4,a5,-1
    e8801e00:	fdba                	sd	a4,248(sp)
    e8801e02:	fff7c703          	lbu	a4,-1(a5)
    e8801e06:	fee688e3          	beq	a3,a4,e8801df6 <_vfprintf_r+0x1986>
    e8801e0a:	0017069b          	addiw	a3,a4,1
    e8801e0e:	03900613          	li	a2,57
    e8801e12:	0ff6f693          	andi	a3,a3,255
    e8801e16:	00c70563          	beq	a4,a2,e8801e20 <_vfprintf_r+0x19b0>
    e8801e1a:	fed78fa3          	sb	a3,-1(a5)
    e8801e1e:	b9cd                	j	e8801b10 <_vfprintf_r+0x16a0>
    e8801e20:	7706                	ld	a4,96(sp)
    e8801e22:	00a74683          	lbu	a3,10(a4)
    e8801e26:	fed78fa3          	sb	a3,-1(a5)
    e8801e2a:	b1dd                	j	e8801b10 <_vfprintf_r+0x16a0>
    e8801e2c:	84be                	mv	s1,a5
    e8801e2e:	b9b5                	j	e8801aaa <_vfprintf_r+0x163a>
    e8801e30:	86a2                	mv	a3,s0
    e8801e32:	b38ff06f          	j	e880116a <_vfprintf_r+0xcfa>
    e8801e36:	c31c                	sw	a5,0(a4)
    e8801e38:	8d4a                	mv	s10,s2
    e8801e3a:	e57fe06f          	j	e8800c90 <_vfprintf_r+0x820>
    e8801e3e:	77c6                	ld	a5,112(sp)
    e8801e40:	06600c93          	li	s9,102
    e8801e44:	00e78c3b          	addw	s8,a5,a4
    e8801e48:	01dc0c3b          	addw	s8,s8,t4
    e8801e4c:	b571                	j	e8801cd8 <_vfprintf_r+0x1868>
    e8801e4e:	857e                	mv	a0,t6
    e8801e50:	85e2                	mv	a1,s8
    e8801e52:	fc1a                	sd	t1,56(sp)
    e8801e54:	f876                	sd	t4,48(sp)
    e8801e56:	579080ef          	jal	ra,e880abce <__trunctfdf2>
    e8801e5a:	11a8                	addi	a0,sp,232
    e8801e5c:	225030ef          	jal	ra,e8805880 <frexp>
    e8801e60:	4af080ef          	jal	ra,e880ab0e <__extenddftf2>
    e8801e64:	000d2797          	auipc	a5,0xd2
    e8801e68:	f5c78793          	addi	a5,a5,-164 # e88d3dc0 <dhcp_discover_request_options+0x5b8>
    e8801e6c:	f8d7c60b          	ldd	a2,a3,(a5),0,4
    e8801e70:	5b3070ef          	jal	ra,e8809c22 <__multf3>
    e8801e74:	f02a                	sd	a0,32(sp)
    e8801e76:	4601                	li	a2,0
    e8801e78:	4681                	li	a3,0
    e8801e7a:	e42e                	sd	a1,8(sp)
    e8801e7c:	3cb070ef          	jal	ra,e8809a46 <__eqtf2>
    e8801e80:	6722                	ld	a4,8(sp)
    e8801e82:	7882                	ld	a7,32(sp)
    e8801e84:	fe614e8b          	ldd	t4,t1,(sp),3,4
    e8801e88:	e119                	bnez	a0,e8801e8e <_vfprintf_r+0x1a1e>
    e8801e8a:	4785                	li	a5,1
    e8801e8c:	d5be                	sw	a5,232(sp)
    e8801e8e:	000a1797          	auipc	a5,0xa1
    e8801e92:	31a78793          	addi	a5,a5,794 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e8801e96:	f0be                	sd	a5,96(sp)
    e8801e98:	be95                	j	e8801a0c <_vfprintf_r+0x159c>
    e8801e9a:	0f210693          	addi	a3,sp,242
    e8801e9e:	e619                	bnez	a2,e8801eac <_vfprintf_r+0x1a3c>
    e8801ea0:	03000713          	li	a4,48
    e8801ea4:	0ee10923          	sb	a4,242(sp)
    e8801ea8:	0f310693          	addi	a3,sp,243
    e8801eac:	0307879b          	addiw	a5,a5,48
    e8801eb0:	1816d78b          	sbia	a5,(a3),1,0
    e8801eb4:	1998                	addi	a4,sp,240
    e8801eb6:	40e687bb          	subw	a5,a3,a4
    e8801eba:	e53e                	sd	a5,136(sp)
    e8801ebc:	b47fe06f          	j	e8800a02 <_vfprintf_r+0x592>
    e8801ec0:	06700c93          	li	s9,103
    e8801ec4:	77a6                	ld	a5,104(sp)
    e8801ec6:	e882                	sd	zero,80(sp)
    e8801ec8:	f082                	sd	zero,96(sp)
    e8801eca:	0007c783          	lbu	a5,0(a5)
    e8801ece:	0ff00613          	li	a2,255
    e8801ed2:	02c78a63          	beq	a5,a2,e8801f06 <_vfprintf_r+0x1a96>
    e8801ed6:	65e6                	ld	a1,88(sp)
    e8801ed8:	0007871b          	sext.w	a4,a5
    e8801edc:	02b75563          	bge	a4,a1,e8801f06 <_vfprintf_r+0x1a96>
    e8801ee0:	7526                	ld	a0,104(sp)
    e8801ee2:	40e5873b          	subw	a4,a1,a4
    e8801ee6:	ecba                	sd	a4,88(sp)
    e8801ee8:	00154683          	lbu	a3,1(a0)
    e8801eec:	ca89                	beqz	a3,e8801efe <_vfprintf_r+0x1a8e>
    e8801eee:	7786                	ld	a5,96(sp)
    e8801ef0:	2785                	addiw	a5,a5,1
    e8801ef2:	f0be                	sd	a5,96(sp)
    e8801ef4:	00150793          	addi	a5,a0,1
    e8801ef8:	f4be                	sd	a5,104(sp)
    e8801efa:	87b6                	mv	a5,a3
    e8801efc:	bfd9                	j	e8801ed2 <_vfprintf_r+0x1a62>
    e8801efe:	6746                	ld	a4,80(sp)
    e8801f00:	2705                	addiw	a4,a4,1
    e8801f02:	e8ba                	sd	a4,80(sp)
    e8801f04:	b7f9                	j	e8801ed2 <_vfprintf_r+0x1a62>
    e8801f06:	6746                	ld	a4,80(sp)
    e8801f08:	7786                	ld	a5,96(sp)
    e8801f0a:	84e2                	mv	s1,s8
    e8801f0c:	9fb9                	addw	a5,a5,a4
    e8801f0e:	670a                	ld	a4,128(sp)
    e8801f10:	24e7948b          	mulaw	s1,a5,a4
    e8801f14:	8c26                	mv	s8,s1
    e8801f16:	fffc4793          	not	a5,s8
    e8801f1a:	97fd                	srai	a5,a5,0x3f
    e8801f1c:	8cfd                	and	s1,s1,a5
    e8801f1e:	b1dfe06f          	j	e8800a3a <_vfprintf_r+0x5ca>
    e8801f22:	40ec04bb          	subw	s1,s8,a4
    e8801f26:	2485                	addiw	s1,s1,1
    e8801f28:	8c26                	mv	s8,s1
    e8801f2a:	fffc4793          	not	a5,s8
    e8801f2e:	97fd                	srai	a5,a5,0x3f
    e8801f30:	8cfd                	and	s1,s1,a5
    e8801f32:	b97d                	j	e8801bf0 <_vfprintf_r+0x1780>
    e8801f34:	670e                	ld	a4,192(sp)
    e8801f36:	8b05                	andi	a4,a4,1
    e8801f38:	e319                	bnez	a4,e8801f3e <_vfprintf_r+0x1ace>
    e8801f3a:	ae3fe06f          	j	e8800a1c <_vfprintf_r+0x5ac>
    e8801f3e:	ad9fe06f          	j	e8800a16 <_vfprintf_r+0x5a6>
    e8801f42:	871a                	mv	a4,t1
    e8801f44:	d74ff06f          	j	e88014b8 <_vfprintf_r+0x1048>
    e8801f48:	e791                	bnez	a5,e8801f54 <_vfprintf_r+0x1ae4>
    e8801f4a:	4485                	li	s1,1
    e8801f4c:	06600c93          	li	s9,102
    e8801f50:	4c05                	li	s8,1
    e8801f52:	b979                	j	e8801bf0 <_vfprintf_r+0x1780>
    e8801f54:	77c6                	ld	a5,112(sp)
    e8801f56:	06600c93          	li	s9,102
    e8801f5a:	0017849b          	addiw	s1,a5,1
    e8801f5e:	01d48ebb          	addw	t4,s1,t4
    e8801f62:	8c76                	mv	s8,t4
    e8801f64:	fffc4493          	not	s1,s8
    e8801f68:	94fd                	srai	s1,s1,0x3f
    e8801f6a:	009ef4b3          	and	s1,t4,s1
    e8801f6e:	b149                	j	e8801bf0 <_vfprintf_r+0x1780>
    e8801f70:	6742                	ld	a4,16(sp)
    e8801f72:	58874e8b          	lwia	t4,(a4),8,0
    e8801f76:	000ed363          	bgez	t4,e8801f7c <_vfprintf_r+0x1b0c>
    e8801f7a:	5efd                	li	t4,-1
    e8801f7c:	00194f03          	lbu	t5,1(s2)
    e8801f80:	e83a                	sd	a4,16(sp)
    e8801f82:	893e                	mv	s2,a5
    e8801f84:	e2cfe06f          	j	e88005b0 <_vfprintf_r+0x140>
    e8801f88:	010a5783          	lhu	a5,16(s4)
    e8801f8c:	0407e793          	ori	a5,a5,64
    e8801f90:	00fa1823          	sh	a5,16(s4)
    e8801f94:	f90fe06f          	j	e8800724 <_vfprintf_r+0x2b4>
    e8801f98:	84f6                	mv	s1,t4
    e8801f9a:	94ea                	add	s1,s1,s10
    e8801f9c:	b6cd                	j	e8801b7e <_vfprintf_r+0x170e>
    e8801f9e:	0001                	nop
    e8801fa0:	4789                	li	a5,2
    e8801fa2:	e53e                	sd	a5,136(sp)
    e8801fa4:	a5ffe06f          	j	e8800a02 <_vfprintf_r+0x592>
    e8801fa8:	00000013          	nop
    e8801fac:	00000013          	nop

00000000e8801fb0 <vfprintf>:
    e8801fb0:	000d2797          	auipc	a5,0xd2
    e8801fb4:	15878793          	addi	a5,a5,344 # e88d4108 <_impure_ptr>
    e8801fb8:	86b2                	mv	a3,a2
    e8801fba:	862e                	mv	a2,a1
    e8801fbc:	85aa                	mv	a1,a0
    e8801fbe:	6388                	ld	a0,0(a5)
    e8801fc0:	cb0fe06f          	j	e8800470 <_vfprintf_r>
    e8801fc4:	00000013          	nop
    e8801fc8:	00000013          	nop
    e8801fcc:	00000013          	nop

00000000e8801fd0 <__sbprintf>:
    e8801fd0:	0105d783          	lhu	a5,16(a1)
    e8801fd4:	b3010113          	addi	sp,sp,-1232
    e8801fd8:	0ac5ae03          	lw	t3,172(a1)
    e8801fdc:	9bf5                	andi	a5,a5,-3
    e8801fde:	0125d303          	lhu	t1,18(a1)
    e8801fe2:	0305b883          	ld	a7,48(a1)
    e8801fe6:	0405b803          	ld	a6,64(a1)
    e8801fea:	40000713          	li	a4,1024
    e8801fee:	00f11823          	sh	a5,16(sp)
    e8801ff2:	191c                	addi	a5,sp,176
    e8801ff4:	4c813023          	sd	s0,1216(sp)
    e8801ff8:	842e                	mv	s0,a1
    e8801ffa:	858a                	mv	a1,sp
    e8801ffc:	4a913c23          	sd	s1,1208(sp)
    e8802000:	4b213823          	sd	s2,1200(sp)
    e8802004:	4c113423          	sd	ra,1224(sp)
    e8802008:	892a                	mv	s2,a0
    e880200a:	d772                	sw	t3,172(sp)
    e880200c:	00611923          	sh	t1,18(sp)
    e8802010:	f846                	sd	a7,48(sp)
    e8802012:	e0c2                	sd	a6,64(sp)
    e8802014:	e03e                	sd	a5,0(sp)
    e8802016:	ec3e                	sd	a5,24(sp)
    e8802018:	c63a                	sw	a4,12(sp)
    e880201a:	d03a                	sw	a4,32(sp)
    e880201c:	d402                	sw	zero,40(sp)
    e880201e:	c52fe0ef          	jal	ra,e8800470 <_vfprintf_r>
    e8802022:	84aa                	mv	s1,a0
    e8802024:	00054963          	bltz	a0,e8802036 <__sbprintf+0x66>
    e8802028:	858a                	mv	a1,sp
    e880202a:	854a                	mv	a0,s2
    e880202c:	304000ef          	jal	ra,e8802330 <_fflush_r>
    e8802030:	57fd                	li	a5,-1
    e8802032:	42a7948b          	mvnez	s1,a5,a0
    e8802036:	01015783          	lhu	a5,16(sp)
    e880203a:	0407f793          	andi	a5,a5,64
    e880203e:	c799                	beqz	a5,e880204c <__sbprintf+0x7c>
    e8802040:	01045783          	lhu	a5,16(s0)
    e8802044:	0407e793          	ori	a5,a5,64
    e8802048:	00f41823          	sh	a5,16(s0)
    e880204c:	4c813083          	ld	ra,1224(sp)
    e8802050:	4c013403          	ld	s0,1216(sp)
    e8802054:	8526                	mv	a0,s1
    e8802056:	4b013903          	ld	s2,1200(sp)
    e880205a:	4b813483          	ld	s1,1208(sp)
    e880205e:	4d010113          	addi	sp,sp,1232
    e8802062:	8082                	ret
	...

00000000e8802080 <__swsetup_r>:
    e8802080:	000d2797          	auipc	a5,0xd2
    e8802084:	08878793          	addi	a5,a5,136 # e88d4108 <_impure_ptr>
    e8802088:	1101                	addi	sp,sp,-32
    e880208a:	639c                	ld	a5,0(a5)
    e880208c:	e422                	sd	s0,8(sp)
    e880208e:	e826                	sd	s1,16(sp)
    e8802090:	ec06                	sd	ra,24(sp)
    e8802092:	84aa                	mv	s1,a0
    e8802094:	842e                	mv	s0,a1
    e8802096:	c399                	beqz	a5,e880209c <__swsetup_r+0x1c>
    e8802098:	4bb8                	lw	a4,80(a5)
    e880209a:	cf29                	beqz	a4,e88020f4 <__swsetup_r+0x74>
    e880209c:	01041703          	lh	a4,16(s0)
    e88020a0:	3c07378b          	extu	a5,a4,15,0
    e88020a4:	0087f693          	andi	a3,a5,8
    e88020a8:	c2a5                	beqz	a3,e8802108 <__swsetup_r+0x88>
    e88020aa:	6c14                	ld	a3,24(s0)
    e88020ac:	cabd                	beqz	a3,e8802122 <__swsetup_r+0xa2>
    e88020ae:	0017f713          	andi	a4,a5,1
    e88020b2:	cf19                	beqz	a4,e88020d0 <__swsetup_r+0x50>
    e88020b4:	501c                	lw	a5,32(s0)
    e88020b6:	00042623          	sw	zero,12(s0)
    e88020ba:	4501                	li	a0,0
    e88020bc:	40f007bb          	negw	a5,a5
    e88020c0:	d41c                	sw	a5,40(s0)
    e88020c2:	ce91                	beqz	a3,e88020de <__swsetup_r+0x5e>
    e88020c4:	60e2                	ld	ra,24(sp)
    e88020c6:	6422                	ld	s0,8(sp)
    e88020c8:	64c2                	ld	s1,16(sp)
    e88020ca:	6105                	addi	sp,sp,32
    e88020cc:	8082                	ret
    e88020ce:	0001                	nop
    e88020d0:	8b89                	andi	a5,a5,2
    e88020d2:	4701                	li	a4,0
    e88020d4:	e391                	bnez	a5,e88020d8 <__swsetup_r+0x58>
    e88020d6:	5018                	lw	a4,32(s0)
    e88020d8:	c458                	sw	a4,12(s0)
    e88020da:	4501                	li	a0,0
    e88020dc:	f6e5                	bnez	a3,e88020c4 <__swsetup_r+0x44>
    e88020de:	01041783          	lh	a5,16(s0)
    e88020e2:	0807f713          	andi	a4,a5,128
    e88020e6:	df79                	beqz	a4,e88020c4 <__swsetup_r+0x44>
    e88020e8:	0407e793          	ori	a5,a5,64
    e88020ec:	00f41823          	sh	a5,16(s0)
    e88020f0:	557d                	li	a0,-1
    e88020f2:	bfc9                	j	e88020c4 <__swsetup_r+0x44>
    e88020f4:	853e                	mv	a0,a5
    e88020f6:	55a000ef          	jal	ra,e8802650 <__sinit>
    e88020fa:	01041703          	lh	a4,16(s0)
    e88020fe:	3c07378b          	extu	a5,a4,15,0
    e8802102:	0087f693          	andi	a3,a5,8
    e8802106:	f2d5                	bnez	a3,e88020aa <__swsetup_r+0x2a>
    e8802108:	0107f693          	andi	a3,a5,16
    e880210c:	ceb1                	beqz	a3,e8802168 <__swsetup_r+0xe8>
    e880210e:	8b91                	andi	a5,a5,4
    e8802110:	eb85                	bnez	a5,e8802140 <__swsetup_r+0xc0>
    e8802112:	6c14                	ld	a3,24(s0)
    e8802114:	00876793          	ori	a5,a4,8
    e8802118:	00f41823          	sh	a5,16(s0)
    e880211c:	3c07b78b          	extu	a5,a5,15,0
    e8802120:	f6d9                	bnez	a3,e88020ae <__swsetup_r+0x2e>
    e8802122:	2807f713          	andi	a4,a5,640
    e8802126:	20000613          	li	a2,512
    e880212a:	f8c702e3          	beq	a4,a2,e88020ae <__swsetup_r+0x2e>
    e880212e:	85a2                	mv	a1,s0
    e8802130:	8526                	mv	a0,s1
    e8802132:	23f020ef          	jal	ra,e8804b70 <__smakebuf_r>
    e8802136:	01045783          	lhu	a5,16(s0)
    e880213a:	6c14                	ld	a3,24(s0)
    e880213c:	bf8d                	j	e88020ae <__swsetup_r+0x2e>
    e880213e:	0001                	nop
    e8802140:	6c2c                	ld	a1,88(s0)
    e8802142:	cd81                	beqz	a1,e880215a <__swsetup_r+0xda>
    e8802144:	07440793          	addi	a5,s0,116
    e8802148:	00f58763          	beq	a1,a5,e8802156 <__swsetup_r+0xd6>
    e880214c:	8526                	mv	a0,s1
    e880214e:	0867a0ef          	jal	ra,e887c1d4 <_free_r>
    e8802152:	01041703          	lh	a4,16(s0)
    e8802156:	04043c23          	sd	zero,88(s0)
    e880215a:	6c14                	ld	a3,24(s0)
    e880215c:	fdb77713          	andi	a4,a4,-37
    e8802160:	00042423          	sw	zero,8(s0)
    e8802164:	e014                	sd	a3,0(s0)
    e8802166:	b77d                	j	e8802114 <__swsetup_r+0x94>
    e8802168:	47a5                	li	a5,9
    e880216a:	c09c                	sw	a5,0(s1)
    e880216c:	04076713          	ori	a4,a4,64
    e8802170:	00e41823          	sh	a4,16(s0)
    e8802174:	557d                	li	a0,-1
    e8802176:	b7b9                	j	e88020c4 <__swsetup_r+0x44>
	...

00000000e8802190 <__sflush_r>:
    e8802190:	01059783          	lh	a5,16(a1)
    e8802194:	7179                	addi	sp,sp,-48
    e8802196:	e422                	sd	s0,8(sp)
    e8802198:	f04e                	sd	s3,32(sp)
    e880219a:	3c07b70b          	extu	a4,a5,15,0
    e880219e:	f406                	sd	ra,40(sp)
    e88021a0:	e826                	sd	s1,16(sp)
    e88021a2:	ec4a                	sd	s2,24(sp)
    e88021a4:	00877693          	andi	a3,a4,8
    e88021a8:	842e                	mv	s0,a1
    e88021aa:	89aa                	mv	s3,a0
    e88021ac:	eec5                	bnez	a3,e8802264 <__sflush_r+0xd4>
    e88021ae:	6705                	lui	a4,0x1
    e88021b0:	80070713          	addi	a4,a4,-2048 # 800 <memcmp-0xe87ff800>
    e88021b4:	8fd9                	or	a5,a5,a4
    e88021b6:	4598                	lw	a4,8(a1)
    e88021b8:	00f59823          	sh	a5,16(a1)
    e88021bc:	10e05063          	blez	a4,e88022bc <__sflush_r+0x12c>
    e88021c0:	6438                	ld	a4,72(s0)
    e88021c2:	cb49                	beqz	a4,e8802254 <__sflush_r+0xc4>
    e88021c4:	0009a483          	lw	s1,0(s3)
    e88021c8:	3c07b78b          	extu	a5,a5,15,0
    e88021cc:	0009a023          	sw	zero,0(s3)
    e88021d0:	03379693          	slli	a3,a5,0x33
    e88021d4:	780c                	ld	a1,48(s0)
    e88021d6:	0e06c763          	bltz	a3,e88022c4 <__sflush_r+0x134>
    e88021da:	4601                	li	a2,0
    e88021dc:	4685                	li	a3,1
    e88021de:	854e                	mv	a0,s3
    e88021e0:	9702                	jalr	a4
    e88021e2:	862a                	mv	a2,a0
    e88021e4:	57fd                	li	a5,-1
    e88021e6:	10f50563          	beq	a0,a5,e88022f0 <__sflush_r+0x160>
    e88021ea:	01045783          	lhu	a5,16(s0)
    e88021ee:	6438                	ld	a4,72(s0)
    e88021f0:	780c                	ld	a1,48(s0)
    e88021f2:	8b91                	andi	a5,a5,4
    e88021f4:	c799                	beqz	a5,e8802202 <__sflush_r+0x72>
    e88021f6:	4414                	lw	a3,8(s0)
    e88021f8:	6c3c                	ld	a5,88(s0)
    e88021fa:	8e15                	sub	a2,a2,a3
    e88021fc:	c399                	beqz	a5,e8802202 <__sflush_r+0x72>
    e88021fe:	583c                	lw	a5,112(s0)
    e8802200:	8e1d                	sub	a2,a2,a5
    e8802202:	4681                	li	a3,0
    e8802204:	854e                	mv	a0,s3
    e8802206:	9702                	jalr	a4
    e8802208:	57fd                	li	a5,-1
    e880220a:	0af51f63          	bne	a0,a5,e88022c8 <__sflush_r+0x138>
    e880220e:	0009a703          	lw	a4,0(s3)
    e8802212:	01041783          	lh	a5,16(s0)
    e8802216:	0e070b63          	beqz	a4,e880230c <__sflush_r+0x17c>
    e880221a:	46f5                	li	a3,29
    e880221c:	00d70563          	beq	a4,a3,e8802226 <__sflush_r+0x96>
    e8802220:	46d9                	li	a3,22
    e8802222:	0ed71b63          	bne	a4,a3,e8802318 <__sflush_r+0x188>
    e8802226:	6c14                	ld	a3,24(s0)
    e8802228:	777d                	lui	a4,0xfffff
    e880222a:	7ff70713          	addi	a4,a4,2047 # fffffffffffff7ff <__DRAM0_INF_BASE+0xffffffff0000f7ff>
    e880222e:	8ff9                	and	a5,a5,a4
    e8802230:	00f41823          	sh	a5,16(s0)
    e8802234:	00042423          	sw	zero,8(s0)
    e8802238:	e014                	sd	a3,0(s0)
    e880223a:	6c2c                	ld	a1,88(s0)
    e880223c:	0099a023          	sw	s1,0(s3)
    e8802240:	c991                	beqz	a1,e8802254 <__sflush_r+0xc4>
    e8802242:	07440793          	addi	a5,s0,116
    e8802246:	00f58563          	beq	a1,a5,e8802250 <__sflush_r+0xc0>
    e880224a:	854e                	mv	a0,s3
    e880224c:	789790ef          	jal	ra,e887c1d4 <_free_r>
    e8802250:	04043c23          	sd	zero,88(s0)
    e8802254:	4501                	li	a0,0
    e8802256:	70a2                	ld	ra,40(sp)
    e8802258:	6422                	ld	s0,8(sp)
    e880225a:	64c2                	ld	s1,16(sp)
    e880225c:	6962                	ld	s2,24(sp)
    e880225e:	7982                	ld	s3,32(sp)
    e8802260:	6145                	addi	sp,sp,48
    e8802262:	8082                	ret
    e8802264:	0185b903          	ld	s2,24(a1)
    e8802268:	fe0906e3          	beqz	s2,e8802254 <__sflush_r+0xc4>
    e880226c:	6184                	ld	s1,0(a1)
    e880226e:	0125b023          	sd	s2,0(a1)
    e8802272:	8b0d                	andi	a4,a4,3
    e8802274:	412484bb          	subw	s1,s1,s2
    e8802278:	4781                	li	a5,0
    e880227a:	e311                	bnez	a4,e880227e <__sflush_r+0xee>
    e880227c:	519c                	lw	a5,32(a1)
    e880227e:	c45c                	sw	a5,12(s0)
    e8802280:	00904763          	bgtz	s1,e880228e <__sflush_r+0xfe>
    e8802284:	bfc1                	j	e8802254 <__sflush_r+0xc4>
    e8802286:	0001                	nop
    e8802288:	992a                	add	s2,s2,a0
    e880228a:	fc9055e3          	blez	s1,e8802254 <__sflush_r+0xc4>
    e880228e:	603c                	ld	a5,64(s0)
    e8802290:	780c                	ld	a1,48(s0)
    e8802292:	86a6                	mv	a3,s1
    e8802294:	864a                	mv	a2,s2
    e8802296:	854e                	mv	a0,s3
    e8802298:	9782                	jalr	a5
    e880229a:	9c89                	subw	s1,s1,a0
    e880229c:	fea046e3          	bgtz	a0,e8802288 <__sflush_r+0xf8>
    e88022a0:	01045783          	lhu	a5,16(s0)
    e88022a4:	70a2                	ld	ra,40(sp)
    e88022a6:	64c2                	ld	s1,16(sp)
    e88022a8:	0407e793          	ori	a5,a5,64
    e88022ac:	00f41823          	sh	a5,16(s0)
    e88022b0:	6422                	ld	s0,8(sp)
    e88022b2:	6962                	ld	s2,24(sp)
    e88022b4:	7982                	ld	s3,32(sp)
    e88022b6:	557d                	li	a0,-1
    e88022b8:	6145                	addi	sp,sp,48
    e88022ba:	8082                	ret
    e88022bc:	59b8                	lw	a4,112(a1)
    e88022be:	f0e041e3          	bgtz	a4,e88021c0 <__sflush_r+0x30>
    e88022c2:	bf49                	j	e8802254 <__sflush_r+0xc4>
    e88022c4:	6850                	ld	a2,144(s0)
    e88022c6:	b735                	j	e88021f2 <__sflush_r+0x62>
    e88022c8:	01045783          	lhu	a5,16(s0)
    e88022cc:	777d                	lui	a4,0xfffff
    e88022ce:	7ff70713          	addi	a4,a4,2047 # fffffffffffff7ff <__DRAM0_INF_BASE+0xffffffff0000f7ff>
    e88022d2:	6c14                	ld	a3,24(s0)
    e88022d4:	8ff9                	and	a5,a5,a4
    e88022d6:	3c07a78b          	ext	a5,a5,15,0
    e88022da:	00f41823          	sh	a5,16(s0)
    e88022de:	00042423          	sw	zero,8(s0)
    e88022e2:	e014                	sd	a3,0(s0)
    e88022e4:	03379713          	slli	a4,a5,0x33
    e88022e8:	f40759e3          	bgez	a4,e880223a <__sflush_r+0xaa>
    e88022ec:	e848                	sd	a0,144(s0)
    e88022ee:	b7b1                	j	e880223a <__sflush_r+0xaa>
    e88022f0:	0009a783          	lw	a5,0(s3)
    e88022f4:	ee078be3          	beqz	a5,e88021ea <__sflush_r+0x5a>
    e88022f8:	4775                	li	a4,29
    e88022fa:	00e78563          	beq	a5,a4,e8802304 <__sflush_r+0x174>
    e88022fe:	4759                	li	a4,22
    e8802300:	fae790e3          	bne	a5,a4,e88022a0 <__sflush_r+0x110>
    e8802304:	0099a023          	sw	s1,0(s3)
    e8802308:	4501                	li	a0,0
    e880230a:	b7b1                	j	e8802256 <__sflush_r+0xc6>
    e880230c:	777d                	lui	a4,0xfffff
    e880230e:	7ff70713          	addi	a4,a4,2047 # fffffffffffff7ff <__DRAM0_INF_BASE+0xffffffff0000f7ff>
    e8802312:	6c14                	ld	a3,24(s0)
    e8802314:	8ff9                	and	a5,a5,a4
    e8802316:	b7d1                	j	e88022da <__sflush_r+0x14a>
    e8802318:	0407e793          	ori	a5,a5,64
    e880231c:	00f41823          	sh	a5,16(s0)
    e8802320:	557d                	li	a0,-1
    e8802322:	bf15                	j	e8802256 <__sflush_r+0xc6>
    e8802324:	00000013          	nop
    e8802328:	00000013          	nop
    e880232c:	00000013          	nop

00000000e8802330 <_fflush_r>:
    e8802330:	1101                	addi	sp,sp,-32
    e8802332:	e822                	sd	s0,16(sp)
    e8802334:	ec06                	sd	ra,24(sp)
    e8802336:	842a                	mv	s0,a0
    e8802338:	c119                	beqz	a0,e880233e <_fflush_r+0xe>
    e880233a:	493c                	lw	a5,80(a0)
    e880233c:	cb91                	beqz	a5,e8802350 <_fflush_r+0x20>
    e880233e:	01059783          	lh	a5,16(a1)
    e8802342:	ef91                	bnez	a5,e880235e <_fflush_r+0x2e>
    e8802344:	60e2                	ld	ra,24(sp)
    e8802346:	6442                	ld	s0,16(sp)
    e8802348:	4501                	li	a0,0
    e880234a:	6105                	addi	sp,sp,32
    e880234c:	8082                	ret
    e880234e:	0001                	nop
    e8802350:	e42e                	sd	a1,8(sp)
    e8802352:	2fe000ef          	jal	ra,e8802650 <__sinit>
    e8802356:	65a2                	ld	a1,8(sp)
    e8802358:	01059783          	lh	a5,16(a1)
    e880235c:	d7e5                	beqz	a5,e8802344 <_fflush_r+0x14>
    e880235e:	8522                	mv	a0,s0
    e8802360:	6442                	ld	s0,16(sp)
    e8802362:	60e2                	ld	ra,24(sp)
    e8802364:	6105                	addi	sp,sp,32
    e8802366:	e2bff06f          	j	e8802190 <__sflush_r>
    e880236a:	00000013          	nop
    e880236e:	0001                	nop

00000000e8802370 <fflush>:
    e8802370:	85aa                	mv	a1,a0
    e8802372:	c909                	beqz	a0,e8802384 <fflush+0x14>
    e8802374:	000d2797          	auipc	a5,0xd2
    e8802378:	d9478793          	addi	a5,a5,-620 # e88d4108 <_impure_ptr>
    e880237c:	6388                	ld	a0,0(a5)
    e880237e:	fb3ff06f          	j	e8802330 <_fflush_r>
    e8802382:	0001                	nop
    e8802384:	0009d797          	auipc	a5,0x9d
    e8802388:	bdc78793          	addi	a5,a5,-1060 # e889ef60 <_global_impure_ptr>
    e880238c:	6388                	ld	a0,0(a5)
    e880238e:	00000597          	auipc	a1,0x0
    e8802392:	fa258593          	addi	a1,a1,-94 # e8802330 <_fflush_r>
    e8802396:	3ea0006f          	j	e8802780 <_fwalk_reent>
	...

00000000e88023b0 <__fp_lock>:
    e88023b0:	4501                	li	a0,0
    e88023b2:	8082                	ret
    e88023b4:	00000013          	nop
    e88023b8:	00000013          	nop
    e88023bc:	00000013          	nop

00000000e88023c0 <_cleanup_r>:
    e88023c0:	00006597          	auipc	a1,0x6
    e88023c4:	1b058593          	addi	a1,a1,432 # e8808570 <_fclose_r>
    e88023c8:	3b80006f          	j	e8802780 <_fwalk_reent>
    e88023cc:	00000013          	nop

00000000e88023d0 <__sinit.part.0>:
    e88023d0:	7139                	addi	sp,sp,-64
    e88023d2:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88023d6:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e88023da:	fc06                	sd	ra,56(sp)
    e88023dc:	f891540b          	sdd	s0,s1,(sp),0,4
    e88023e0:	f85a                	sd	s6,48(sp)
    e88023e2:	00000717          	auipc	a4,0x0
    e88023e6:	fde70713          	addi	a4,a4,-34 # e88023c0 <_cleanup_r>
    e88023ea:	6500                	ld	s0,8(a0)
    e88023ec:	ed38                	sd	a4,88(a0)
    e88023ee:	53850793          	addi	a5,a0,1336
    e88023f2:	470d                	li	a4,3
    e88023f4:	52e52423          	sw	a4,1320(a0)
    e88023f8:	52f53823          	sd	a5,1328(a0)
    e88023fc:	52053023          	sd	zero,1312(a0)
    e8802400:	4791                	li	a5,4
    e8802402:	892a                	mv	s2,a0
    e8802404:	c81c                	sw	a5,16(s0)
    e8802406:	4621                	li	a2,8
    e8802408:	4581                	li	a1,0
    e880240a:	0a042623          	sw	zero,172(s0)
    e880240e:	00043023          	sd	zero,0(s0)
    e8802412:	00043423          	sd	zero,8(s0)
    e8802416:	00043c23          	sd	zero,24(s0)
    e880241a:	02042023          	sw	zero,32(s0)
    e880241e:	02042423          	sw	zero,40(s0)
    e8802422:	0a440513          	addi	a0,s0,164
    e8802426:	d13fd0ef          	jal	ra,e8800138 <memset>
    e880242a:	00003b17          	auipc	s6,0x3
    e880242e:	586b0b13          	addi	s6,s6,1414 # e88059b0 <__sread>
    e8802432:	01093483          	ld	s1,16(s2)
    e8802436:	00003a97          	auipc	s5,0x3
    e880243a:	5caa8a93          	addi	s5,s5,1482 # e8805a00 <__swrite>
    e880243e:	00003a17          	auipc	s4,0x3
    e8802442:	622a0a13          	addi	s4,s4,1570 # e8805a60 <__sseek>
    e8802446:	00003997          	auipc	s3,0x3
    e880244a:	66a98993          	addi	s3,s3,1642 # e8805ab0 <__sclose>
    e880244e:	ff64540b          	sdd	s0,s6,(s0),3,4
    e8802452:	05543023          	sd	s5,64(s0)
    e8802456:	05443423          	sd	s4,72(s0)
    e880245a:	05343823          	sd	s3,80(s0)
    e880245e:	67c1                	lui	a5,0x10
    e8802460:	27a5                	addiw	a5,a5,9
    e8802462:	c89c                	sw	a5,16(s1)
    e8802464:	4621                	li	a2,8
    e8802466:	4581                	li	a1,0
    e8802468:	0a04a623          	sw	zero,172(s1)
    e880246c:	0004b023          	sd	zero,0(s1)
    e8802470:	0004b423          	sd	zero,8(s1)
    e8802474:	0004bc23          	sd	zero,24(s1)
    e8802478:	0204a023          	sw	zero,32(s1)
    e880247c:	0204a423          	sw	zero,40(s1)
    e8802480:	0a448513          	addi	a0,s1,164
    e8802484:	cb5fd0ef          	jal	ra,e8800138 <memset>
    e8802488:	01893403          	ld	s0,24(s2)
    e880248c:	000207b7          	lui	a5,0x20
    e8802490:	ff64d48b          	sdd	s1,s6,(s1),3,4
    e8802494:	0554b023          	sd	s5,64(s1)
    e8802498:	0544b423          	sd	s4,72(s1)
    e880249c:	0534b823          	sd	s3,80(s1)
    e88024a0:	27c9                	addiw	a5,a5,18
    e88024a2:	c81c                	sw	a5,16(s0)
    e88024a4:	0a042623          	sw	zero,172(s0)
    e88024a8:	00043023          	sd	zero,0(s0)
    e88024ac:	00043423          	sd	zero,8(s0)
    e88024b0:	00043c23          	sd	zero,24(s0)
    e88024b4:	02042023          	sw	zero,32(s0)
    e88024b8:	02042423          	sw	zero,40(s0)
    e88024bc:	0a440513          	addi	a0,s0,164
    e88024c0:	4621                	li	a2,8
    e88024c2:	4581                	li	a1,0
    e88024c4:	c75fd0ef          	jal	ra,e8800138 <memset>
    e88024c8:	ff64540b          	sdd	s0,s6,(s0),3,4
    e88024cc:	05543023          	sd	s5,64(s0)
    e88024d0:	05443423          	sd	s4,72(s0)
    e88024d4:	05343823          	sd	s3,80(s0)
    e88024d8:	4785                	li	a5,1
    e88024da:	04f92823          	sw	a5,80(s2)
    e88024de:	70e2                	ld	ra,56(sp)
    e88024e0:	f891440b          	ldd	s0,s1,(sp),0,4
    e88024e4:	7b42                	ld	s6,48(sp)
    e88024e6:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88024ea:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88024ee:	6121                	addi	sp,sp,64
    e88024f0:	8082                	ret
    e88024f2:	0001                	nop
    e88024f4:	00000013          	nop
    e88024f8:	00000013          	nop
    e88024fc:	00000013          	nop

00000000e8802500 <__fp_unlock>:
    e8802500:	4501                	li	a0,0
    e8802502:	8082                	ret
    e8802504:	00000013          	nop
    e8802508:	00000013          	nop
    e880250c:	00000013          	nop

00000000e8802510 <__sfmoreglue>:
    e8802510:	1101                	addi	sp,sp,-32
    e8802512:	f891540b          	sdd	s0,s1,(sp),0,4
    e8802516:	0b000613          	li	a2,176
    e880251a:	fff5849b          	addiw	s1,a1,-1
    e880251e:	02c484b3          	mul	s1,s1,a2
    e8802522:	e84a                	sd	s2,16(sp)
    e8802524:	892e                	mv	s2,a1
    e8802526:	ec06                	sd	ra,24(sp)
    e8802528:	0c848593          	addi	a1,s1,200
    e880252c:	467790ef          	jal	ra,e887c192 <_malloc_r>
    e8802530:	842a                	mv	s0,a0
    e8802532:	cd01                	beqz	a0,e880254a <__sfmoreglue+0x3a>
    e8802534:	0561                	addi	a0,a0,24
    e8802536:	00043023          	sd	zero,0(s0)
    e880253a:	01242423          	sw	s2,8(s0)
    e880253e:	e808                	sd	a0,16(s0)
    e8802540:	0b048613          	addi	a2,s1,176
    e8802544:	4581                	li	a1,0
    e8802546:	bf3fd0ef          	jal	ra,e8800138 <memset>
    e880254a:	8522                	mv	a0,s0
    e880254c:	60e2                	ld	ra,24(sp)
    e880254e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8802552:	6942                	ld	s2,16(sp)
    e8802554:	6105                	addi	sp,sp,32
    e8802556:	8082                	ret
    e8802558:	00000013          	nop
    e880255c:	00000013          	nop

00000000e8802560 <__sfp>:
    e8802560:	7179                	addi	sp,sp,-48
    e8802562:	0009d797          	auipc	a5,0x9d
    e8802566:	9fe78793          	addi	a5,a5,-1538 # e889ef60 <_global_impure_ptr>
    e880256a:	e826                	sd	s1,16(sp)
    e880256c:	6384                	ld	s1,0(a5)
    e880256e:	f04e                	sd	s3,32(sp)
    e8802570:	f406                	sd	ra,40(sp)
    e8802572:	48bc                	lw	a5,80(s1)
    e8802574:	e422                	sd	s0,8(sp)
    e8802576:	ec4a                	sd	s2,24(sp)
    e8802578:	89aa                	mv	s3,a0
    e880257a:	c7d9                	beqz	a5,e8802608 <__sfp+0xa8>
    e880257c:	52048493          	addi	s1,s1,1312
    e8802580:	0b000913          	li	s2,176
    e8802584:	449c                	lw	a5,8(s1)
    e8802586:	6880                	ld	s0,16(s1)
    e8802588:	02f05563          	blez	a5,e88025b2 <__sfp+0x52>
    e880258c:	01041703          	lh	a4,16(s0)
    e8802590:	c715                	beqz	a4,e88025bc <__sfp+0x5c>
    e8802592:	37fd                	addiw	a5,a5,-1
    e8802594:	7c07b78b          	extu	a5,a5,31,0
    e8802598:	0785                	addi	a5,a5,1
    e880259a:	8722                	mv	a4,s0
    e880259c:	2127970b          	mula	a4,a5,s2
    e88025a0:	a029                	j	e88025aa <__sfp+0x4a>
    e88025a2:	0001                	nop
    e88025a4:	01041783          	lh	a5,16(s0)
    e88025a8:	cb91                	beqz	a5,e88025bc <__sfp+0x5c>
    e88025aa:	0b040413          	addi	s0,s0,176
    e88025ae:	fee41be3          	bne	s0,a4,e88025a4 <__sfp+0x44>
    e88025b2:	6080                	ld	s0,0(s1)
    e88025b4:	cc31                	beqz	s0,e8802610 <__sfp+0xb0>
    e88025b6:	84a2                	mv	s1,s0
    e88025b8:	b7f1                	j	e8802584 <__sfp+0x24>
    e88025ba:	0001                	nop
    e88025bc:	77c1                	lui	a5,0xffff0
    e88025be:	2785                	addiw	a5,a5,1
    e88025c0:	0a042623          	sw	zero,172(s0)
    e88025c4:	00043023          	sd	zero,0(s0)
    e88025c8:	00043423          	sd	zero,8(s0)
    e88025cc:	c81c                	sw	a5,16(s0)
    e88025ce:	00043c23          	sd	zero,24(s0)
    e88025d2:	02042023          	sw	zero,32(s0)
    e88025d6:	02042423          	sw	zero,40(s0)
    e88025da:	4621                	li	a2,8
    e88025dc:	4581                	li	a1,0
    e88025de:	0a440513          	addi	a0,s0,164
    e88025e2:	b57fd0ef          	jal	ra,e8800138 <memset>
    e88025e6:	04043c23          	sd	zero,88(s0)
    e88025ea:	06042023          	sw	zero,96(s0)
    e88025ee:	06043c23          	sd	zero,120(s0)
    e88025f2:	08042023          	sw	zero,128(s0)
    e88025f6:	8522                	mv	a0,s0
    e88025f8:	70a2                	ld	ra,40(sp)
    e88025fa:	6422                	ld	s0,8(sp)
    e88025fc:	64c2                	ld	s1,16(sp)
    e88025fe:	6962                	ld	s2,24(sp)
    e8802600:	7982                	ld	s3,32(sp)
    e8802602:	6145                	addi	sp,sp,48
    e8802604:	8082                	ret
    e8802606:	0001                	nop
    e8802608:	8526                	mv	a0,s1
    e880260a:	dc7ff0ef          	jal	ra,e88023d0 <__sinit.part.0>
    e880260e:	b7bd                	j	e880257c <__sfp+0x1c>
    e8802610:	4591                	li	a1,4
    e8802612:	854e                	mv	a0,s3
    e8802614:	efdff0ef          	jal	ra,e8802510 <__sfmoreglue>
    e8802618:	e088                	sd	a0,0(s1)
    e880261a:	842a                	mv	s0,a0
    e880261c:	fd49                	bnez	a0,e88025b6 <__sfp+0x56>
    e880261e:	47b1                	li	a5,12
    e8802620:	00f9a023          	sw	a5,0(s3)
    e8802624:	bfc9                	j	e88025f6 <__sfp+0x96>
    e8802626:	00000013          	nop
    e880262a:	00000013          	nop
    e880262e:	0001                	nop

00000000e8802630 <_cleanup>:
    e8802630:	0009d797          	auipc	a5,0x9d
    e8802634:	93078793          	addi	a5,a5,-1744 # e889ef60 <_global_impure_ptr>
    e8802638:	6388                	ld	a0,0(a5)
    e880263a:	00006597          	auipc	a1,0x6
    e880263e:	f3658593          	addi	a1,a1,-202 # e8808570 <_fclose_r>
    e8802642:	13e0006f          	j	e8802780 <_fwalk_reent>
    e8802646:	00000013          	nop
    e880264a:	00000013          	nop
    e880264e:	0001                	nop

00000000e8802650 <__sinit>:
    e8802650:	493c                	lw	a5,80(a0)
    e8802652:	c399                	beqz	a5,e8802658 <__sinit+0x8>
    e8802654:	8082                	ret
    e8802656:	0001                	nop
    e8802658:	d79ff06f          	j	e88023d0 <__sinit.part.0>
    e880265c:	00000013          	nop

00000000e8802660 <__sfp_lock_acquire>:
    e8802660:	8082                	ret
    e8802662:	0001                	nop
    e8802664:	00000013          	nop
    e8802668:	00000013          	nop
    e880266c:	00000013          	nop

00000000e8802670 <__sfp_lock_release>:
    e8802670:	8082                	ret
    e8802672:	0001                	nop
    e8802674:	00000013          	nop
    e8802678:	00000013          	nop
    e880267c:	00000013          	nop

00000000e8802680 <__sinit_lock_acquire>:
    e8802680:	8082                	ret
    e8802682:	0001                	nop
    e8802684:	00000013          	nop
    e8802688:	00000013          	nop
    e880268c:	00000013          	nop

00000000e8802690 <__sinit_lock_release>:
    e8802690:	8082                	ret
    e8802692:	0001                	nop
    e8802694:	00000013          	nop
    e8802698:	00000013          	nop
    e880269c:	00000013          	nop

00000000e88026a0 <__fp_lock_all>:
    e88026a0:	000d2797          	auipc	a5,0xd2
    e88026a4:	a6878793          	addi	a5,a5,-1432 # e88d4108 <_impure_ptr>
    e88026a8:	6388                	ld	a0,0(a5)
    e88026aa:	00000597          	auipc	a1,0x0
    e88026ae:	d0658593          	addi	a1,a1,-762 # e88023b0 <__fp_lock>
    e88026b2:	03e0006f          	j	e88026f0 <_fwalk>
    e88026b6:	00000013          	nop
    e88026ba:	00000013          	nop
    e88026be:	0001                	nop

00000000e88026c0 <__fp_unlock_all>:
    e88026c0:	000d2797          	auipc	a5,0xd2
    e88026c4:	a4878793          	addi	a5,a5,-1464 # e88d4108 <_impure_ptr>
    e88026c8:	6388                	ld	a0,0(a5)
    e88026ca:	00000597          	auipc	a1,0x0
    e88026ce:	e3658593          	addi	a1,a1,-458 # e8802500 <__fp_unlock>
    e88026d2:	01e0006f          	j	e88026f0 <_fwalk>
	...

00000000e88026f0 <_fwalk>:
    e88026f0:	715d                	addi	sp,sp,-80
    e88026f2:	f052                	sd	s4,32(sp)
    e88026f4:	e486                	sd	ra,72(sp)
    e88026f6:	e0a2                	sd	s0,64(sp)
    e88026f8:	fc26                	sd	s1,56(sp)
    e88026fa:	f84a                	sd	s2,48(sp)
    e88026fc:	f44e                	sd	s3,40(sp)
    e88026fe:	ec56                	sd	s5,24(sp)
    e8802700:	e85a                	sd	s6,16(sp)
    e8802702:	e45e                	sd	s7,8(sp)
    e8802704:	52050a13          	addi	s4,a0,1312
    e8802708:	060a0863          	beqz	s4,e8802778 <_fwalk+0x88>
    e880270c:	8b2e                	mv	s6,a1
    e880270e:	4481                	li	s1,0
    e8802710:	0b000b93          	li	s7,176
    e8802714:	4985                	li	s3,1
    e8802716:	5afd                	li	s5,-1
    e8802718:	008a2783          	lw	a5,8(s4)
    e880271c:	010a3403          	ld	s0,16(s4)
    e8802720:	02f05c63          	blez	a5,e8802758 <_fwalk+0x68>
    e8802724:	37fd                	addiw	a5,a5,-1
    e8802726:	7c07b78b          	extu	a5,a5,31,0
    e880272a:	0785                	addi	a5,a5,1
    e880272c:	8922                	mv	s2,s0
    e880272e:	2177990b          	mula	s2,a5,s7
    e8802732:	0001                	nop
    e8802734:	00000013          	nop
    e8802738:	01045783          	lhu	a5,16(s0)
    e880273c:	00f9fa63          	bgeu	s3,a5,e8802750 <_fwalk+0x60>
    e8802740:	01241783          	lh	a5,18(s0)
    e8802744:	8522                	mv	a0,s0
    e8802746:	01578563          	beq	a5,s5,e8802750 <_fwalk+0x60>
    e880274a:	9b02                	jalr	s6
    e880274c:	8cc9                	or	s1,s1,a0
    e880274e:	2481                	sext.w	s1,s1
    e8802750:	0b040413          	addi	s0,s0,176
    e8802754:	ff2412e3          	bne	s0,s2,e8802738 <_fwalk+0x48>
    e8802758:	000a3a03          	ld	s4,0(s4)
    e880275c:	fa0a1ee3          	bnez	s4,e8802718 <_fwalk+0x28>
    e8802760:	60a6                	ld	ra,72(sp)
    e8802762:	6406                	ld	s0,64(sp)
    e8802764:	8526                	mv	a0,s1
    e8802766:	7942                	ld	s2,48(sp)
    e8802768:	74e2                	ld	s1,56(sp)
    e880276a:	79a2                	ld	s3,40(sp)
    e880276c:	7a02                	ld	s4,32(sp)
    e880276e:	6ae2                	ld	s5,24(sp)
    e8802770:	6b42                	ld	s6,16(sp)
    e8802772:	6ba2                	ld	s7,8(sp)
    e8802774:	6161                	addi	sp,sp,80
    e8802776:	8082                	ret
    e8802778:	4481                	li	s1,0
    e880277a:	b7dd                	j	e8802760 <_fwalk+0x70>
    e880277c:	00000013          	nop

00000000e8802780 <_fwalk_reent>:
    e8802780:	715d                	addi	sp,sp,-80
    e8802782:	f052                	sd	s4,32(sp)
    e8802784:	e486                	sd	ra,72(sp)
    e8802786:	e0a2                	sd	s0,64(sp)
    e8802788:	fc26                	sd	s1,56(sp)
    e880278a:	f84a                	sd	s2,48(sp)
    e880278c:	f44e                	sd	s3,40(sp)
    e880278e:	ec56                	sd	s5,24(sp)
    e8802790:	e85a                	sd	s6,16(sp)
    e8802792:	e45e                	sd	s7,8(sp)
    e8802794:	e062                	sd	s8,0(sp)
    e8802796:	52050a13          	addi	s4,a0,1312
    e880279a:	060a0d63          	beqz	s4,e8802814 <_fwalk_reent+0x94>
    e880279e:	8bae                	mv	s7,a1
    e88027a0:	8aaa                	mv	s5,a0
    e88027a2:	4481                	li	s1,0
    e88027a4:	0b000c13          	li	s8,176
    e88027a8:	4985                	li	s3,1
    e88027aa:	5b7d                	li	s6,-1
    e88027ac:	00000013          	nop
    e88027b0:	008a2783          	lw	a5,8(s4)
    e88027b4:	010a3403          	ld	s0,16(s4)
    e88027b8:	02f05d63          	blez	a5,e88027f2 <_fwalk_reent+0x72>
    e88027bc:	37fd                	addiw	a5,a5,-1
    e88027be:	7c07b78b          	extu	a5,a5,31,0
    e88027c2:	0785                	addi	a5,a5,1
    e88027c4:	8922                	mv	s2,s0
    e88027c6:	2187990b          	mula	s2,a5,s8
    e88027ca:	0001                	nop
    e88027cc:	00000013          	nop
    e88027d0:	01045783          	lhu	a5,16(s0)
    e88027d4:	00f9fb63          	bgeu	s3,a5,e88027ea <_fwalk_reent+0x6a>
    e88027d8:	01241783          	lh	a5,18(s0)
    e88027dc:	85a2                	mv	a1,s0
    e88027de:	8556                	mv	a0,s5
    e88027e0:	01678563          	beq	a5,s6,e88027ea <_fwalk_reent+0x6a>
    e88027e4:	9b82                	jalr	s7
    e88027e6:	8cc9                	or	s1,s1,a0
    e88027e8:	2481                	sext.w	s1,s1
    e88027ea:	0b040413          	addi	s0,s0,176
    e88027ee:	ff2411e3          	bne	s0,s2,e88027d0 <_fwalk_reent+0x50>
    e88027f2:	000a3a03          	ld	s4,0(s4)
    e88027f6:	fa0a1de3          	bnez	s4,e88027b0 <_fwalk_reent+0x30>
    e88027fa:	60a6                	ld	ra,72(sp)
    e88027fc:	6406                	ld	s0,64(sp)
    e88027fe:	8526                	mv	a0,s1
    e8802800:	7942                	ld	s2,48(sp)
    e8802802:	74e2                	ld	s1,56(sp)
    e8802804:	79a2                	ld	s3,40(sp)
    e8802806:	7a02                	ld	s4,32(sp)
    e8802808:	6ae2                	ld	s5,24(sp)
    e880280a:	6b42                	ld	s6,16(sp)
    e880280c:	6ba2                	ld	s7,8(sp)
    e880280e:	6c02                	ld	s8,0(sp)
    e8802810:	6161                	addi	sp,sp,80
    e8802812:	8082                	ret
    e8802814:	4481                	li	s1,0
    e8802816:	b7d5                	j	e88027fa <_fwalk_reent+0x7a>
	...

00000000e8802820 <eshdn1>:
    e8802820:	00450693          	addi	a3,a0,4
    e8802824:	4781                	li	a5,0
    e8802826:	0569                	addi	a0,a0,26
    e8802828:	7861                	lui	a6,0xffff8
    e880282a:	a811                	j	e880283e <eshdn1+0x1e>
    e880282c:	00e69023          	sh	a4,0(a3)
    e8802830:	0017979b          	slliw	a5,a5,0x1
    e8802834:	0689                	addi	a3,a3,2
    e8802836:	3c07b78b          	extu	a5,a5,15,0
    e880283a:	02d50b63          	beq	a0,a3,e8802870 <eshdn1+0x50>
    e880283e:	0006d703          	lhu	a4,0(a3)
    e8802842:	0017e613          	ori	a2,a5,1
    e8802846:	3c06360b          	extu	a2,a2,15,0
    e880284a:	00177593          	andi	a1,a4,1
    e880284e:	42b6178b          	mvnez	a5,a2,a1
    e8802852:	8305                	srli	a4,a4,0x1
    e8802854:	0027f613          	andi	a2,a5,2
    e8802858:	010765b3          	or	a1,a4,a6
    e880285c:	da61                	beqz	a2,e880282c <eshdn1+0xc>
    e880285e:	00b69023          	sh	a1,0(a3)
    e8802862:	0017979b          	slliw	a5,a5,0x1
    e8802866:	0689                	addi	a3,a3,2
    e8802868:	3c07b78b          	extu	a5,a5,15,0
    e880286c:	fcd519e3          	bne	a0,a3,e880283e <eshdn1+0x1e>
    e8802870:	8082                	ret
    e8802872:	0001                	nop
    e8802874:	00000013          	nop
    e8802878:	00000013          	nop
    e880287c:	00000013          	nop

00000000e8802880 <eshup1>:
    e8802880:	01850713          	addi	a4,a0,24
    e8802884:	4781                	li	a5,0
    e8802886:	0509                	addi	a0,a0,2
    e8802888:	a819                	j	e880289e <eshup1+0x1e>
    e880288a:	0001                	nop
    e880288c:	00d71023          	sh	a3,0(a4)
    e8802890:	0017979b          	slliw	a5,a5,0x1
    e8802894:	1779                	addi	a4,a4,-2
    e8802896:	3c07b78b          	extu	a5,a5,15,0
    e880289a:	02e50b63          	beq	a0,a4,e88028d0 <eshup1+0x50>
    e880289e:	00075603          	lhu	a2,0(a4)
    e88028a2:	fcf6358b          	extu	a1,a2,63,15
    e88028a6:	0016169b          	slliw	a3,a2,0x1
    e88028aa:	c199                	beqz	a1,e88028b0 <eshup1+0x30>
    e88028ac:	0017e793          	ori	a5,a5,1
    e88028b0:	3c06b68b          	extu	a3,a3,15,0
    e88028b4:	0027f613          	andi	a2,a5,2
    e88028b8:	0016e593          	ori	a1,a3,1
    e88028bc:	da61                	beqz	a2,e880288c <eshup1+0xc>
    e88028be:	00b71023          	sh	a1,0(a4)
    e88028c2:	0017979b          	slliw	a5,a5,0x1
    e88028c6:	1779                	addi	a4,a4,-2
    e88028c8:	3c07b78b          	extu	a5,a5,15,0
    e88028cc:	fce519e3          	bne	a0,a4,e880289e <eshup1+0x1e>
    e88028d0:	8082                	ret
    e88028d2:	0001                	nop
    e88028d4:	00000013          	nop
    e88028d8:	00000013          	nop
    e88028dc:	00000013          	nop

00000000e88028e0 <m16m>:
    e88028e0:	1101                	addi	sp,sp,-32
    e88028e2:	00012b23          	sw	zero,22(sp)
    e88028e6:	05e1                	addi	a1,a1,24
    e88028e8:	0838                	addi	a4,sp,24
    e88028ea:	00410813          	addi	a6,sp,4
    e88028ee:	0001                	nop
    e88028f0:	b9e5c78b          	lhuia	a5,(a1),-2,0
    e88028f4:	1779                	addi	a4,a4,-2
    e88028f6:	e78d                	bnez	a5,e8802920 <m16m+0x40>
    e88028f8:	fe071f23          	sh	zero,-2(a4)
    e88028fc:	ff071ae3          	bne	a4,a6,e88028f0 <m16m+0x10>
    e8802900:	4781                	li	a5,0
    e8802902:	0611                	addi	a2,a2,4
    e8802904:	46d9                	li	a3,22
    e8802906:	0001                	nop
    e8802908:	00f10733          	add	a4,sp,a5
    e880290c:	00475703          	lhu	a4,4(a4)
    e8802910:	20f6570b          	srh	a4,a2,a5,0
    e8802914:	0789                	addi	a5,a5,2
    e8802916:	fed799e3          	bne	a5,a3,e8802908 <m16m+0x28>
    e880291a:	6105                	addi	sp,sp,32
    e880291c:	8082                	ret
    e880291e:	0001                	nop
    e8802920:	02a787b3          	mul	a5,a5,a0
    e8802924:	00275883          	lhu	a7,2(a4)
    e8802928:	00075303          	lhu	t1,0(a4)
    e880292c:	3c07b68b          	extu	a3,a5,15,0
    e8802930:	96c6                	add	a3,a3,a7
    e8802932:	83c1                	srli	a5,a5,0x10
    e8802934:	0106d893          	srli	a7,a3,0x10
    e8802938:	979a                	add	a5,a5,t1
    e880293a:	97c6                	add	a5,a5,a7
    e880293c:	0107d893          	srli	a7,a5,0x10
    e8802940:	00d71123          	sh	a3,2(a4)
    e8802944:	00f71023          	sh	a5,0(a4)
    e8802948:	ff171f23          	sh	a7,-2(a4)
    e880294c:	fb0712e3          	bne	a4,a6,e88028f0 <m16m+0x10>
    e8802950:	bf45                	j	e8802900 <m16m+0x20>
    e8802952:	0001                	nop
    e8802954:	00000013          	nop
    e8802958:	00000013          	nop
    e880295c:	00000013          	nop

00000000e8802960 <eisnan.part.0>:
    e8802960:	01250713          	addi	a4,a0,18
    e8802964:	00000013          	nop
    e8802968:	b825478b          	lhuia	a5,(a0),2,0
    e880296c:	e791                	bnez	a5,e8802978 <eisnan.part.0+0x18>
    e880296e:	fee51de3          	bne	a0,a4,e8802968 <eisnan.part.0+0x8>
    e8802972:	4501                	li	a0,0
    e8802974:	8082                	ret
    e8802976:	0001                	nop
    e8802978:	4505                	li	a0,1
    e880297a:	8082                	ret
    e880297c:	00000013          	nop

00000000e8802980 <eneg>:
    e8802980:	1101                	addi	sp,sp,-32
    e8802982:	e422                	sd	s0,8(sp)
    e8802984:	01255403          	lhu	s0,18(a0)
    e8802988:	e826                	sd	s1,16(sp)
    e880298a:	ec06                	sd	ra,24(sp)
    e880298c:	fff44793          	not	a5,s0
    e8802990:	03179713          	slli	a4,a5,0x31
    e8802994:	84aa                	mv	s1,a0
    e8802996:	e701                	bnez	a4,e880299e <eneg+0x1e>
    e8802998:	fc9ff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e880299c:	e509                	bnez	a0,e88029a6 <eneg+0x26>
    e880299e:	77e1                	lui	a5,0xffff8
    e88029a0:	8c3d                	xor	s0,s0,a5
    e88029a2:	00849923          	sh	s0,18(s1)
    e88029a6:	60e2                	ld	ra,24(sp)
    e88029a8:	6422                	ld	s0,8(sp)
    e88029aa:	64c2                	ld	s1,16(sp)
    e88029ac:	6105                	addi	sp,sp,32
    e88029ae:	8082                	ret

00000000e88029b0 <eisneg>:
    e88029b0:	1141                	addi	sp,sp,-16
    e88029b2:	e022                	sd	s0,0(sp)
    e88029b4:	01255403          	lhu	s0,18(a0)
    e88029b8:	e406                	sd	ra,8(sp)
    e88029ba:	fff44793          	not	a5,s0
    e88029be:	03179713          	slli	a4,a5,0x31
    e88029c2:	e709                	bnez	a4,e88029cc <eisneg+0x1c>
    e88029c4:	f9dff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e88029c8:	4781                	li	a5,0
    e88029ca:	e119                	bnez	a0,e88029d0 <eisneg+0x20>
    e88029cc:	00f45793          	srli	a5,s0,0xf
    e88029d0:	60a2                	ld	ra,8(sp)
    e88029d2:	6402                	ld	s0,0(sp)
    e88029d4:	853e                	mv	a0,a5
    e88029d6:	0141                	addi	sp,sp,16
    e88029d8:	8082                	ret
    e88029da:	00000013          	nop
    e88029de:	0001                	nop

00000000e88029e0 <emovi>:
    e88029e0:	1101                	addi	sp,sp,-32
    e88029e2:	f891540b          	sdd	s0,s1,(sp),0,4
    e88029e6:	01255703          	lhu	a4,18(a0)
    e88029ea:	ec06                	sd	ra,24(sp)
    e88029ec:	e84a                	sd	s2,16(sp)
    e88029ee:	00f7571b          	srliw	a4,a4,0xf
    e88029f2:	40e0073b          	negw	a4,a4
    e88029f6:	00e59023          	sh	a4,0(a1)
    e88029fa:	01255703          	lhu	a4,18(a0)
    e88029fe:	66a1                	lui	a3,0x8
    e8802a00:	16fd                	addi	a3,a3,-1
    e8802a02:	3807370b          	extu	a4,a4,14,0
    e8802a06:	3c07370b          	extu	a4,a4,15,0
    e8802a0a:	00e59123          	sh	a4,2(a1)
    e8802a0e:	2701                	sext.w	a4,a4
    e8802a10:	84aa                	mv	s1,a0
    e8802a12:	01050413          	addi	s0,a0,16
    e8802a16:	02d70763          	beq	a4,a3,e8802a44 <emovi+0x64>
    e8802a1a:	00658713          	addi	a4,a1,6
    e8802a1e:	00059223          	sh	zero,4(a1)
    e8802a22:	1579                	addi	a0,a0,-2
    e8802a24:	00000013          	nop
    e8802a28:	b9e4478b          	lhuia	a5,(s0),-2,0
    e8802a2c:	3827578b          	shia	a5,(a4),2,0
    e8802a30:	fe851ce3          	bne	a0,s0,e8802a28 <emovi+0x48>
    e8802a34:	00059c23          	sh	zero,24(a1)
    e8802a38:	60e2                	ld	ra,24(sp)
    e8802a3a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8802a3e:	6942                	ld	s2,16(sp)
    e8802a40:	6105                	addi	sp,sp,32
    e8802a42:	8082                	ret
    e8802a44:	01255783          	lhu	a5,18(a0)
    e8802a48:	892e                	mv	s2,a1
    e8802a4a:	3807b78b          	extu	a5,a5,14,0
    e8802a4e:	02e79563          	bne	a5,a4,e8802a78 <emovi+0x98>
    e8802a52:	f0fff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e8802a56:	c10d                	beqz	a0,e8802a78 <emovi+0x98>
    e8802a58:	00690713          	addi	a4,s2,6
    e8802a5c:	00091223          	sh	zero,4(s2)
    e8802a60:	ffc48793          	addi	a5,s1,-4
    e8802a64:	00000013          	nop
    e8802a68:	b9e4468b          	lhuia	a3,(s0),-2,0
    e8802a6c:	3827568b          	shia	a3,(a4),2,0
    e8802a70:	fe879ce3          	bne	a5,s0,e8802a68 <emovi+0x88>
    e8802a74:	b7d1                	j	e8802a38 <emovi+0x58>
    e8802a76:	0001                	nop
    e8802a78:	00490793          	addi	a5,s2,4
    e8802a7c:	01a90593          	addi	a1,s2,26
    e8802a80:	3827d00b          	shia	zero,(a5),2,0
    e8802a84:	fef59ee3          	bne	a1,a5,e8802a80 <emovi+0xa0>
    e8802a88:	60e2                	ld	ra,24(sp)
    e8802a8a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8802a8e:	6942                	ld	s2,16(sp)
    e8802a90:	6105                	addi	sp,sp,32
    e8802a92:	8082                	ret
    e8802a94:	00000013          	nop
    e8802a98:	00000013          	nop
    e8802a9c:	00000013          	nop

00000000e8802aa0 <ecmp>:
    e8802aa0:	01255703          	lhu	a4,18(a0)
    e8802aa4:	711d                	addi	sp,sp,-96
    e8802aa6:	e8a2                	sd	s0,80(sp)
    e8802aa8:	e4a6                	sd	s1,72(sp)
    e8802aaa:	67a1                	lui	a5,0x8
    e8802aac:	ec86                	sd	ra,88(sp)
    e8802aae:	17fd                	addi	a5,a5,-1
    e8802ab0:	3807370b          	extu	a4,a4,14,0
    e8802ab4:	84aa                	mv	s1,a0
    e8802ab6:	842e                	mv	s0,a1
    e8802ab8:	00f71563          	bne	a4,a5,e8802ac2 <ecmp+0x22>
    e8802abc:	ea5ff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e8802ac0:	e525                	bnez	a0,e8802b28 <ecmp+0x88>
    e8802ac2:	01245703          	lhu	a4,18(s0)
    e8802ac6:	67a1                	lui	a5,0x8
    e8802ac8:	17fd                	addi	a5,a5,-1
    e8802aca:	3807370b          	extu	a4,a4,14,0
    e8802ace:	04f70963          	beq	a4,a5,e8802b20 <ecmp+0x80>
    e8802ad2:	858a                	mv	a1,sp
    e8802ad4:	8526                	mv	a0,s1
    e8802ad6:	f0bff0ef          	jal	ra,e88029e0 <emovi>
    e8802ada:	100c                	addi	a1,sp,32
    e8802adc:	8522                	mv	a0,s0
    e8802ade:	f03ff0ef          	jal	ra,e88029e0 <emovi>
    e8802ae2:	00015603          	lhu	a2,0(sp)
    e8802ae6:	02015783          	lhu	a5,32(sp)
    e8802aea:	04c78163          	beq	a5,a2,e8802b2c <ecmp+0x8c>
    e8802aee:	4781                	li	a5,0
    e8802af0:	45d9                	li	a1,22
    e8802af2:	0001                	nop
    e8802af4:	00000013          	nop
    e8802af8:	00f10733          	add	a4,sp,a5
    e8802afc:	00275703          	lhu	a4,2(a4)
    e8802b00:	1014                	addi	a3,sp,32
    e8802b02:	96be                	add	a3,a3,a5
    e8802b04:	0789                	addi	a5,a5,2
    e8802b06:	ef2d                	bnez	a4,e8802b80 <ecmp+0xe0>
    e8802b08:	0026d703          	lhu	a4,2(a3) # 8002 <memcmp-0xe87f7ffe>
    e8802b0c:	eb35                	bnez	a4,e8802b80 <ecmp+0xe0>
    e8802b0e:	feb795e3          	bne	a5,a1,e8802af8 <ecmp+0x58>
    e8802b12:	4501                	li	a0,0
    e8802b14:	60e6                	ld	ra,88(sp)
    e8802b16:	6446                	ld	s0,80(sp)
    e8802b18:	64a6                	ld	s1,72(sp)
    e8802b1a:	6125                	addi	sp,sp,96
    e8802b1c:	8082                	ret
    e8802b1e:	0001                	nop
    e8802b20:	8522                	mv	a0,s0
    e8802b22:	e3fff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e8802b26:	d555                	beqz	a0,e8802ad2 <ecmp+0x32>
    e8802b28:	5579                	li	a0,-2
    e8802b2a:	b7ed                	j	e8802b14 <ecmp+0x74>
    e8802b2c:	57fd                	li	a5,-1
    e8802b2e:	4505                	li	a0,1
    e8802b30:	42c7950b          	mvnez	a0,a5,a2
    e8802b34:	4781                	li	a5,0
    e8802b36:	00f10733          	add	a4,sp,a5
    e8802b3a:	1014                	addi	a3,sp,32
    e8802b3c:	0789                	addi	a5,a5,2
    e8802b3e:	00275703          	lhu	a4,2(a4)
    e8802b42:	a0f6c68b          	lrhu	a3,a3,a5,0
    e8802b46:	4659                	li	a2,22
    e8802b48:	02d71063          	bne	a4,a3,e8802b68 <ecmp+0xc8>
    e8802b4c:	00000013          	nop
    e8802b50:	fcc781e3          	beq	a5,a2,e8802b12 <ecmp+0x72>
    e8802b54:	00f10733          	add	a4,sp,a5
    e8802b58:	1014                	addi	a3,sp,32
    e8802b5a:	0789                	addi	a5,a5,2
    e8802b5c:	00275703          	lhu	a4,2(a4)
    e8802b60:	a0f6c68b          	lrhu	a3,a3,a5,0
    e8802b64:	fed706e3          	beq	a4,a3,e8802b50 <ecmp+0xb0>
    e8802b68:	60e6                	ld	ra,88(sp)
    e8802b6a:	6446                	ld	s0,80(sp)
    e8802b6c:	40a007bb          	negw	a5,a0
    e8802b70:	2781                	sext.w	a5,a5
    e8802b72:	00e6b733          	sltu	a4,a3,a4
    e8802b76:	64a6                	ld	s1,72(sp)
    e8802b78:	40e7950b          	mveqz	a0,a5,a4
    e8802b7c:	6125                	addi	sp,sp,96
    e8802b7e:	8082                	ret
    e8802b80:	60e6                	ld	ra,88(sp)
    e8802b82:	6446                	ld	s0,80(sp)
    e8802b84:	57fd                	li	a5,-1
    e8802b86:	4505                	li	a0,1
    e8802b88:	64a6                	ld	s1,72(sp)
    e8802b8a:	42c7950b          	mvnez	a0,a5,a2
    e8802b8e:	6125                	addi	sp,sp,96
    e8802b90:	8082                	ret
    e8802b92:	0001                	nop
    e8802b94:	00000013          	nop
    e8802b98:	00000013          	nop
    e8802b9c:	00000013          	nop

00000000e8802ba0 <eisinf.part.1>:
    e8802ba0:	1141                	addi	sp,sp,-16
    e8802ba2:	e406                	sd	ra,8(sp)
    e8802ba4:	dbdff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e8802ba8:	00153513          	seqz	a0,a0
    e8802bac:	60a2                	ld	ra,8(sp)
    e8802bae:	0141                	addi	sp,sp,16
    e8802bb0:	8082                	ret
    e8802bb2:	0001                	nop
    e8802bb4:	00000013          	nop
    e8802bb8:	00000013          	nop
    e8802bbc:	00000013          	nop

00000000e8802bc0 <eshift.part.3>:
    e8802bc0:	1101                	addi	sp,sp,-32
    e8802bc2:	e84a                	sd	s2,16(sp)
    e8802bc4:	f891540b          	sdd	s0,s1,(sp),0,4
    e8802bc8:	ec06                	sd	ra,24(sp)
    e8802bca:	892e                	mv	s2,a1
    e8802bcc:	842a                	mv	s0,a0
    e8802bce:	0805c663          	bltz	a1,e8802c5a <eshift.part.3+0x9a>
    e8802bd2:	47bd                	li	a5,15
    e8802bd4:	862e                	mv	a2,a1
    e8802bd6:	0511                	addi	a0,a0,4
    e8802bd8:	01840693          	addi	a3,s0,24
    e8802bdc:	45bd                	li	a1,15
    e8802bde:	0327d663          	bge	a5,s2,e8802c0a <eshift.part.3+0x4a>
    e8802be2:	0001                	nop
    e8802be4:	00000013          	nop
    e8802be8:	87aa                	mv	a5,a0
    e8802bea:	0001                	nop
    e8802bec:	00000013          	nop
    e8802bf0:	a827c70b          	lhuib	a4,(a5),2,0
    e8802bf4:	fee79f23          	sh	a4,-2(a5) # 7ffe <memcmp-0xe87f8002>
    e8802bf8:	fed79ce3          	bne	a5,a3,e8802bf0 <eshift.part.3+0x30>
    e8802bfc:	00041c23          	sh	zero,24(s0)
    e8802c00:	3641                	addiw	a2,a2,-16
    e8802c02:	fec5c3e3          	blt	a1,a2,e8802be8 <eshift.part.3+0x28>
    e8802c06:	00f97913          	andi	s2,s2,15
    e8802c0a:	479d                	li	a5,7
    e8802c0c:	0327d663          	bge	a5,s2,e8802c38 <eshift.part.3+0x78>
    e8802c10:	01840713          	addi	a4,s0,24
    e8802c14:	00240593          	addi	a1,s0,2
    e8802c18:	4781                	li	a5,0
    e8802c1a:	0001                	nop
    e8802c1c:	00000013          	nop
    e8802c20:	00075683          	lhu	a3,0(a4)
    e8802c24:	00869613          	slli	a2,a3,0x8
    e8802c28:	8fd1                	or	a5,a5,a2
    e8802c2a:	39e7578b          	shia	a5,(a4),-2,0
    e8802c2e:	0086d793          	srli	a5,a3,0x8
    e8802c32:	feb717e3          	bne	a4,a1,e8802c20 <eshift.part.3+0x60>
    e8802c36:	3961                	addiw	s2,s2,-8
    e8802c38:	00090a63          	beqz	s2,e8802c4c <eshift.part.3+0x8c>
    e8802c3c:	00000013          	nop
    e8802c40:	397d                	addiw	s2,s2,-1
    e8802c42:	8522                	mv	a0,s0
    e8802c44:	c3dff0ef          	jal	ra,e8802880 <eshup1>
    e8802c48:	fe091ce3          	bnez	s2,e8802c40 <eshift.part.3+0x80>
    e8802c4c:	60e2                	ld	ra,24(sp)
    e8802c4e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8802c52:	6942                	ld	s2,16(sp)
    e8802c54:	4501                	li	a0,0
    e8802c56:	6105                	addi	sp,sp,32
    e8802c58:	8082                	ret
    e8802c5a:	40b004bb          	negw	s1,a1
    e8802c5e:	57c5                	li	a5,-15
    e8802c60:	2481                	sext.w	s1,s1
    e8802c62:	0af5d163          	bge	a1,a5,e8802d04 <eshift.part.3+0x144>
    e8802c66:	01850593          	addi	a1,a0,24
    e8802c6a:	4901                	li	s2,0
    e8802c6c:	00450693          	addi	a3,a0,4
    e8802c70:	463d                	li	a2,15
    e8802c72:	0001                	nop
    e8802c74:	00000013          	nop
    e8802c78:	01845703          	lhu	a4,24(s0)
    e8802c7c:	87ae                	mv	a5,a1
    e8802c7e:	00e96933          	or	s2,s2,a4
    e8802c82:	0001                	nop
    e8802c84:	00000013          	nop
    e8802c88:	a9e7c70b          	lhuib	a4,(a5),-2,0
    e8802c8c:	00e79123          	sh	a4,2(a5)
    e8802c90:	fed79ce3          	bne	a5,a3,e8802c88 <eshift.part.3+0xc8>
    e8802c94:	00041223          	sh	zero,4(s0)
    e8802c98:	34c1                	addiw	s1,s1,-16
    e8802c9a:	fc964fe3          	blt	a2,s1,e8802c78 <eshift.part.3+0xb8>
    e8802c9e:	479d                	li	a5,7
    e8802ca0:	0297de63          	bge	a5,s1,e8802cdc <eshift.part.3+0x11c>
    e8802ca4:	3c09290b          	ext	s2,s2,15,0
    e8802ca8:	01844783          	lbu	a5,24(s0)
    e8802cac:	01a40593          	addi	a1,s0,26
    e8802cb0:	4701                	li	a4,0
    e8802cb2:	00f96933          	or	s2,s2,a5
    e8802cb6:	3c09390b          	extu	s2,s2,15,0
    e8802cba:	0001                	nop
    e8802cbc:	00000013          	nop
    e8802cc0:	0006d783          	lhu	a5,0(a3)
    e8802cc4:	5c87b60b          	extu	a2,a5,23,8
    e8802cc8:	8f51                	or	a4,a4,a2
    e8802cca:	0087979b          	slliw	a5,a5,0x8
    e8802cce:	3826d70b          	shia	a4,(a3),2,0
    e8802cd2:	3c07b70b          	extu	a4,a5,15,0
    e8802cd6:	feb695e3          	bne	a3,a1,e8802cc0 <eshift.part.3+0x100>
    e8802cda:	34e1                	addiw	s1,s1,-8
    e8802cdc:	cc81                	beqz	s1,e8802cf4 <eshift.part.3+0x134>
    e8802cde:	0001                	nop
    e8802ce0:	01845783          	lhu	a5,24(s0)
    e8802ce4:	34fd                	addiw	s1,s1,-1
    e8802ce6:	8522                	mv	a0,s0
    e8802ce8:	8b85                	andi	a5,a5,1
    e8802cea:	0127e933          	or	s2,a5,s2
    e8802cee:	b33ff0ef          	jal	ra,e8802820 <eshdn1>
    e8802cf2:	f4fd                	bnez	s1,e8802ce0 <eshift.part.3+0x120>
    e8802cf4:	60e2                	ld	ra,24(sp)
    e8802cf6:	f891440b          	ldd	s0,s1,(sp),0,4
    e8802cfa:	01203533          	snez	a0,s2
    e8802cfe:	6942                	ld	s2,16(sp)
    e8802d00:	6105                	addi	sp,sp,32
    e8802d02:	8082                	ret
    e8802d04:	57e5                	li	a5,-7
    e8802d06:	00f5c463          	blt	a1,a5,e8802d0e <eshift.part.3+0x14e>
    e8802d0a:	4901                	li	s2,0
    e8802d0c:	bfd1                	j	e8802ce0 <eshift.part.3+0x120>
    e8802d0e:	4901                	li	s2,0
    e8802d10:	00440693          	addi	a3,s0,4
    e8802d14:	bf51                	j	e8802ca8 <eshift.part.3+0xe8>
    e8802d16:	00000013          	nop
    e8802d1a:	00000013          	nop
    e8802d1e:	0001                	nop

00000000e8802d20 <enormlz>:
    e8802d20:	1101                	addi	sp,sp,-32
    e8802d22:	f891540b          	sdd	s0,s1,(sp),0,4
    e8802d26:	00455783          	lhu	a5,4(a0)
    e8802d2a:	ec06                	sd	ra,24(sp)
    e8802d2c:	e84a                	sd	s2,16(sp)
    e8802d2e:	84aa                	mv	s1,a0
    e8802d30:	e3d5                	bnez	a5,e8802dd4 <enormlz+0xb4>
    e8802d32:	00655703          	lhu	a4,6(a0)
    e8802d36:	4401                	li	s0,0
    e8802d38:	fcf7378b          	extu	a5,a4,63,15
    e8802d3c:	e7c9                	bnez	a5,e8802dc6 <enormlz+0xa6>
    e8802d3e:	01a50693          	addi	a3,a0,26
    e8802d42:	0a000613          	li	a2,160
    e8802d46:	e705                	bnez	a4,e8802d6e <enormlz+0x4e>
    e8802d48:	00648793          	addi	a5,s1,6
    e8802d4c:	a021                	j	e8802d54 <enormlz+0x34>
    e8802d4e:	0001                	nop
    e8802d50:	0007d703          	lhu	a4,0(a5)
    e8802d54:	0789                	addi	a5,a5,2
    e8802d56:	fee79e23          	sh	a4,-4(a5)
    e8802d5a:	fef69be3          	bne	a3,a5,e8802d50 <enormlz+0x30>
    e8802d5e:	00049c23          	sh	zero,24(s1)
    e8802d62:	2441                	addiw	s0,s0,16
    e8802d64:	06c40163          	beq	s0,a2,e8802dc6 <enormlz+0xa6>
    e8802d68:	0064d703          	lhu	a4,6(s1)
    e8802d6c:	df71                	beqz	a4,e8802d48 <enormlz+0x28>
    e8802d6e:	f0077793          	andi	a5,a4,-256
    e8802d72:	ef85                	bnez	a5,e8802daa <enormlz+0x8a>
    e8802d74:	01848513          	addi	a0,s1,24
    e8802d78:	00248593          	addi	a1,s1,2
    e8802d7c:	00000013          	nop
    e8802d80:	4701                	li	a4,0
    e8802d82:	87aa                	mv	a5,a0
    e8802d84:	00000013          	nop
    e8802d88:	0007d683          	lhu	a3,0(a5)
    e8802d8c:	00869613          	slli	a2,a3,0x8
    e8802d90:	8f51                	or	a4,a4,a2
    e8802d92:	39e7d70b          	shia	a4,(a5),-2,0
    e8802d96:	0086d713          	srli	a4,a3,0x8
    e8802d9a:	fef597e3          	bne	a1,a5,e8802d88 <enormlz+0x68>
    e8802d9e:	0064d703          	lhu	a4,6(s1)
    e8802da2:	2421                	addiw	s0,s0,8
    e8802da4:	f0077793          	andi	a5,a4,-256
    e8802da8:	dfe1                	beqz	a5,e8802d80 <enormlz+0x60>
    e8802daa:	0a000913          	li	s2,160
    e8802dae:	a801                	j	e8802dbe <enormlz+0x9e>
    e8802db0:	2405                	addiw	s0,s0,1
    e8802db2:	acfff0ef          	jal	ra,e8802880 <eshup1>
    e8802db6:	00894863          	blt	s2,s0,e8802dc6 <enormlz+0xa6>
    e8802dba:	0064d703          	lhu	a4,6(s1)
    e8802dbe:	fcf7378b          	extu	a5,a4,63,15
    e8802dc2:	8526                	mv	a0,s1
    e8802dc4:	d7f5                	beqz	a5,e8802db0 <enormlz+0x90>
    e8802dc6:	8522                	mv	a0,s0
    e8802dc8:	60e2                	ld	ra,24(sp)
    e8802dca:	f891440b          	ldd	s0,s1,(sp),0,4
    e8802dce:	6942                	ld	s2,16(sp)
    e8802dd0:	6105                	addi	sp,sp,32
    e8802dd2:	8082                	ret
    e8802dd4:	f007f713          	andi	a4,a5,-256
    e8802dd8:	4401                	li	s0,0
    e8802dda:	e70d                	bnez	a4,e8802e04 <enormlz+0xe4>
    e8802ddc:	f6f00913          	li	s2,-145
    e8802de0:	a809                	j	e8802df2 <enormlz+0xd2>
    e8802de2:	0001                	nop
    e8802de4:	347d                	addiw	s0,s0,-1
    e8802de6:	a3bff0ef          	jal	ra,e8802820 <eshdn1>
    e8802dea:	fd240ee3          	beq	s0,s2,e8802dc6 <enormlz+0xa6>
    e8802dee:	0044d783          	lhu	a5,4(s1)
    e8802df2:	8526                	mv	a0,s1
    e8802df4:	fbe5                	bnez	a5,e8802de4 <enormlz+0xc4>
    e8802df6:	8522                	mv	a0,s0
    e8802df8:	60e2                	ld	ra,24(sp)
    e8802dfa:	f891440b          	ldd	s0,s1,(sp),0,4
    e8802dfe:	6942                	ld	s2,16(sp)
    e8802e00:	6105                	addi	sp,sp,32
    e8802e02:	8082                	ret
    e8802e04:	00450693          	addi	a3,a0,4
    e8802e08:	01a50593          	addi	a1,a0,26
    e8802e0c:	4701                	li	a4,0
    e8802e0e:	a019                	j	e8802e14 <enormlz+0xf4>
    e8802e10:	0006d783          	lhu	a5,0(a3)
    e8802e14:	5c87b60b          	extu	a2,a5,23,8
    e8802e18:	8f51                	or	a4,a4,a2
    e8802e1a:	0087979b          	slliw	a5,a5,0x8
    e8802e1e:	3826d70b          	shia	a4,(a3),2,0
    e8802e22:	3c07b70b          	extu	a4,a5,15,0
    e8802e26:	feb695e3          	bne	a3,a1,e8802e10 <enormlz+0xf0>
    e8802e2a:	0044d783          	lhu	a5,4(s1)
    e8802e2e:	5461                	li	s0,-8
    e8802e30:	b775                	j	e8802ddc <enormlz+0xbc>
    e8802e32:	0001                	nop
    e8802e34:	00000013          	nop
    e8802e38:	00000013          	nop
    e8802e3c:	00000013          	nop

00000000e8802e40 <emdnorm>:
    e8802e40:	7139                	addi	sp,sp,-64
    e8802e42:	e422                	sd	s0,8(sp)
    e8802e44:	e826                	sd	s1,16(sp)
    e8802e46:	ec4a                	sd	s2,24(sp)
    e8802e48:	f04e                	sd	s3,32(sp)
    e8802e4a:	f452                	sd	s4,40(sp)
    e8802e4c:	f856                	sd	s5,48(sp)
    e8802e4e:	8936                	mv	s2,a3
    e8802e50:	84be                	mv	s1,a5
    e8802e52:	fc06                	sd	ra,56(sp)
    e8802e54:	842a                	mv	s0,a0
    e8802e56:	89ae                	mv	s3,a1
    e8802e58:	8a32                	mv	s4,a2
    e8802e5a:	8aba                	mv	s5,a4
    e8802e5c:	ec5ff0ef          	jal	ra,e8802d20 <enormlz>
    e8802e60:	40a90933          	sub	s2,s2,a0
    e8802e64:	09000793          	li	a5,144
    e8802e68:	06a7d063          	bge	a5,a0,e8802ec8 <emdnorm+0x88>
    e8802e6c:	67a1                	lui	a5,0x8
    e8802e6e:	17f9                	addi	a5,a5,-2
    e8802e70:	1d27d263          	bge	a5,s2,e8803034 <emdnorm+0x1f4>
    e8802e74:	180a8e63          	beqz	s5,e8803010 <emdnorm+0x1d0>
    e8802e78:	40c8                	lw	a0,4(s1)
    e8802e7a:	409c                	lw	a5,0(s1)
    e8802e7c:	0ca78763          	beq	a5,a0,e8802f4a <emdnorm+0x10a>
    e8802e80:	01a48713          	addi	a4,s1,26
    e8802e84:	03448793          	addi	a5,s1,52
    e8802e88:	3827500b          	shia	zero,(a4),2,0
    e8802e8c:	fef71ee3          	bne	a4,a5,e8802e88 <emdnorm+0x48>
    e8802e90:	03800793          	li	a5,56
    e8802e94:	2cf50663          	beq	a0,a5,e8803160 <emdnorm+0x320>
    e8802e98:	04a7da63          	bge	a5,a0,e8802eec <emdnorm+0xac>
    e8802e9c:	04000793          	li	a5,64
    e8802ea0:	28f50063          	beq	a0,a5,e8803120 <emdnorm+0x2e0>
    e8802ea4:	07100793          	li	a5,113
    e8802ea8:	28f51a63          	bne	a0,a5,e880313c <emdnorm+0x2fc>
    e8802eac:	40008737          	lui	a4,0x40008
    e8802eb0:	377d                	addiw	a4,a4,-1
    e8802eb2:	47a9                	li	a5,10
    e8802eb4:	1782                	slli	a5,a5,0x20
    e8802eb6:	07a9                	addi	a5,a5,10
    e8802eb8:	c8d8                	sw	a4,20(s1)
    e8802eba:	7761                	lui	a4,0xffff8
    e8802ebc:	00e49c23          	sh	a4,24(s1)
    e8802ec0:	e49c                	sd	a5,8(s1)
    e8802ec2:	6721                	lui	a4,0x8
    e8802ec4:	47a9                	li	a5,10
    e8802ec6:	a8a9                	j	e8802f20 <emdnorm+0xe0>
    e8802ec8:	1a095263          	bgez	s2,e880306c <emdnorm+0x22c>
    e8802ecc:	f7000793          	li	a5,-144
    e8802ed0:	16f95e63          	bge	s2,a5,e880304c <emdnorm+0x20c>
    e8802ed4:	00240793          	addi	a5,s0,2
    e8802ed8:	0469                	addi	s0,s0,26
    e8802eda:	0001                	nop
    e8802edc:	00000013          	nop
    e8802ee0:	3827d00b          	shia	zero,(a5),2,0
    e8802ee4:	fe879ee3          	bne	a5,s0,e8802ee0 <emdnorm+0xa0>
    e8802ee8:	aa11                	j	e8802ffc <emdnorm+0x1bc>
    e8802eea:	0001                	nop
    e8802eec:	47e1                	li	a5,24
    e8802eee:	20f50763          	beq	a0,a5,e88030fc <emdnorm+0x2bc>
    e8802ef2:	03500793          	li	a5,53
    e8802ef6:	24f51363          	bne	a0,a5,e880313c <emdnorm+0x2fc>
    e8802efa:	04000737          	lui	a4,0x4000
    e8802efe:	7ff7071b          	addiw	a4,a4,2047
    e8802f02:	4799                	li	a5,6
    e8802f04:	c8d8                	sw	a4,20(s1)
    e8802f06:	6705                	lui	a4,0x1
    e8802f08:	8007071b          	addiw	a4,a4,-2048
    e8802f0c:	1782                	slli	a5,a5,0x20
    e8802f0e:	0799                	addi	a5,a5,6
    e8802f10:	00e49c23          	sh	a4,24(s1)
    e8802f14:	6705                	lui	a4,0x1
    e8802f16:	e49c                	sd	a5,8(s1)
    e8802f18:	80070713          	addi	a4,a4,-2048 # 800 <memcmp-0xe87ff800>
    e8802f1c:	4799                	li	a5,6
    e8802f1e:	0001                	nop
    e8802f20:	02f4978b          	addsl	a5,s1,a5,1
    e8802f24:	00e79d23          	sh	a4,26(a5) # 801a <memcmp-0xe87f7fe6>
    e8802f28:	c088                	sw	a0,0(s1)
    e8802f2a:	03204063          	bgtz	s2,e8802f4a <emdnorm+0x10a>
    e8802f2e:	09000793          	li	a5,144
    e8802f32:	1af50363          	beq	a0,a5,e88030d8 <emdnorm+0x298>
    e8802f36:	01845783          	lhu	a5,24(s0)
    e8802f3a:	8522                	mv	a0,s0
    e8802f3c:	8b85                	andi	a5,a5,1
    e8802f3e:	00f9e9b3          	or	s3,s3,a5
    e8802f42:	8dfff0ef          	jal	ra,e8802820 <eshdn1>
    e8802f46:	2981                	sext.w	s3,s3
    e8802f48:	40c8                	lw	a0,4(s1)
    e8802f4a:	0084a883          	lw	a7,8(s1)
    e8802f4e:	0144d783          	lhu	a5,20(s1)
    e8802f52:	08f00713          	li	a4,143
    e8802f56:	a314468b          	lrhu	a3,s0,a7,1
    e8802f5a:	0314130b          	addsl	t1,s0,a7,1
    e8802f5e:	00f6f633          	and	a2,a3,a5
    e8802f62:	02a74e63          	blt	a4,a0,e8802f9e <emdnorm+0x15e>
    e8802f66:	0018871b          	addiw	a4,a7,1
    e8802f6a:	45b1                	li	a1,12
    e8802f6c:	02e5c963          	blt	a1,a4,e8802f9e <emdnorm+0x15e>
    e8802f70:	4831                	li	a6,12
    e8802f72:	0001                	nop
    e8802f74:	00000013          	nop
    e8802f78:	a2e4458b          	lrhu	a1,s0,a4,1
    e8802f7c:	00166793          	ori	a5,a2,1
    e8802f80:	22e4500b          	srh	zero,s0,a4,1
    e8802f84:	0705                	addi	a4,a4,1
    e8802f86:	3c07b78b          	extu	a5,a5,15,0
    e8802f8a:	0007069b          	sext.w	a3,a4
    e8802f8e:	42b7960b          	mvnez	a2,a5,a1
    e8802f92:	fed853e3          	bge	a6,a3,e8802f78 <emdnorm+0x138>
    e8802f96:	a314468b          	lrhu	a3,s0,a7,1
    e8802f9a:	0144d783          	lhu	a5,20(s1)
    e8802f9e:	fff7c793          	not	a5,a5
    e8802fa2:	8ff5                	and	a5,a5,a3
    e8802fa4:	00f31023          	sh	a5,0(t1)
    e8802fa8:	0164d783          	lhu	a5,22(s1)
    e8802fac:	00c7f733          	and	a4,a5,a2
    e8802fb0:	cb0d                	beqz	a4,e8802fe2 <emdnorm+0x1a2>
    e8802fb2:	2601                	sext.w	a2,a2
    e8802fb4:	0ec78463          	beq	a5,a2,e880309c <emdnorm+0x25c>
    e8802fb8:	01840693          	addi	a3,s0,24
    e8802fbc:	4701                	li	a4,0
    e8802fbe:	4601                	li	a2,0
    e8802fc0:	03248493          	addi	s1,s1,50
    e8802fc4:	5829                	li	a6,-22
    e8802fc6:	0001                	nop
    e8802fc8:	a0e4c78b          	lrhu	a5,s1,a4,0
    e8802fcc:	a0e6c58b          	lrhu	a1,a3,a4,0
    e8802fd0:	97ae                	add	a5,a5,a1
    e8802fd2:	97b2                	add	a5,a5,a2
    e8802fd4:	20e6d78b          	srh	a5,a3,a4,0
    e8802fd8:	1779                	addi	a4,a4,-2
    e8802fda:	4107b60b          	extu	a2,a5,16,16
    e8802fde:	ff0715e3          	bne	a4,a6,e8802fc8 <emdnorm+0x188>
    e8802fe2:	0d205b63          	blez	s2,e88030b8 <emdnorm+0x278>
    e8802fe6:	00445783          	lhu	a5,4(s0)
    e8802fea:	ebc9                	bnez	a5,e880307c <emdnorm+0x23c>
    e8802fec:	67a1                	lui	a5,0x8
    e8802fee:	00041c23          	sh	zero,24(s0)
    e8802ff2:	17f9                	addi	a5,a5,-2
    e8802ff4:	0327c063          	blt	a5,s2,e8803014 <emdnorm+0x1d4>
    e8802ff8:	01241123          	sh	s2,2(s0)
    e8802ffc:	70e2                	ld	ra,56(sp)
    e8802ffe:	6422                	ld	s0,8(sp)
    e8803000:	64c2                	ld	s1,16(sp)
    e8803002:	6962                	ld	s2,24(sp)
    e8803004:	7982                	ld	s3,32(sp)
    e8803006:	7a22                	ld	s4,40(sp)
    e8803008:	7ac2                	ld	s5,48(sp)
    e880300a:	6121                	addi	sp,sp,64
    e880300c:	8082                	ret
    e880300e:	0001                	nop
    e8803010:	00041c23          	sh	zero,24(s0)
    e8803014:	77e1                	lui	a5,0xffff8
    e8803016:	fff7c793          	not	a5,a5
    e880301a:	00f41123          	sh	a5,2(s0)
    e880301e:	00440793          	addi	a5,s0,4
    e8803022:	0461                	addi	s0,s0,24
    e8803024:	00000013          	nop
    e8803028:	3827d00b          	shia	zero,(a5),2,0
    e880302c:	fef41ee3          	bne	s0,a5,e8803028 <emdnorm+0x1e8>
    e8803030:	b7f1                	j	e8802ffc <emdnorm+0x1bc>
    e8803032:	0001                	nop
    e8803034:	00240793          	addi	a5,s0,2
    e8803038:	0469                	addi	s0,s0,26
    e880303a:	0001                	nop
    e880303c:	00000013          	nop
    e8803040:	3827d00b          	shia	zero,(a5),2,0
    e8803044:	fe879ee3          	bne	a5,s0,e8803040 <emdnorm+0x200>
    e8803048:	bf55                	j	e8802ffc <emdnorm+0x1bc>
    e880304a:	0001                	nop
    e880304c:	0009059b          	sext.w	a1,s2
    e8803050:	8522                	mv	a0,s0
    e8803052:	b6fff0ef          	jal	ra,e8802bc0 <eshift.part.3>
    e8803056:	4785                	li	a5,1
    e8803058:	42a7998b          	mvnez	s3,a5,a0
    e880305c:	080a8a63          	beqz	s5,e88030f0 <emdnorm+0x2b0>
    e8803060:	40c8                	lw	a0,4(s1)
    e8803062:	409c                	lw	a5,0(s1)
    e8803064:	e0a79ee3          	bne	a5,a0,e8802e80 <emdnorm+0x40>
    e8803068:	b5d9                	j	e8802f2e <emdnorm+0xee>
    e880306a:	0001                	nop
    e880306c:	f80a80e3          	beqz	s5,e8802fec <emdnorm+0x1ac>
    e8803070:	40c8                	lw	a0,4(s1)
    e8803072:	409c                	lw	a5,0(s1)
    e8803074:	e0a796e3          	bne	a5,a0,e8802e80 <emdnorm+0x40>
    e8803078:	bd4d                	j	e8802f2a <emdnorm+0xea>
    e880307a:	0001                	nop
    e880307c:	8522                	mv	a0,s0
    e880307e:	fa2ff0ef          	jal	ra,e8802820 <eshdn1>
    e8803082:	00041c23          	sh	zero,24(s0)
    e8803086:	67a1                	lui	a5,0x8
    e8803088:	0905                	addi	s2,s2,1
    e880308a:	17f9                	addi	a5,a5,-2
    e880308c:	f927c4e3          	blt	a5,s2,e8803014 <emdnorm+0x1d4>
    e8803090:	f60954e3          	bgez	s2,e8802ff8 <emdnorm+0x1b8>
    e8803094:	00041123          	sh	zero,2(s0)
    e8803098:	b795                	j	e8802ffc <emdnorm+0x1bc>
    e880309a:	0001                	nop
    e880309c:	0a099e63          	bnez	s3,e8803158 <emdnorm+0x318>
    e88030a0:	44dc                	lw	a5,12(s1)
    e88030a2:	0184d703          	lhu	a4,24(s1)
    e88030a6:	a2f4478b          	lrhu	a5,s0,a5,1
    e88030aa:	8ff9                	and	a5,a5,a4
    e88030ac:	f00796e3          	bnez	a5,e8802fb8 <emdnorm+0x178>
    e88030b0:	f3204be3          	bgtz	s2,e8802fe6 <emdnorm+0x1a6>
    e88030b4:	00000013          	nop
    e88030b8:	09000793          	li	a5,144
    e88030bc:	00f50563          	beq	a0,a5,e88030c6 <emdnorm+0x286>
    e88030c0:	8522                	mv	a0,s0
    e88030c2:	fbeff0ef          	jal	ra,e8802880 <eshup1>
    e88030c6:	00445783          	lhu	a5,4(s0)
    e88030ca:	fbcd                	bnez	a5,e880307c <emdnorm+0x23c>
    e88030cc:	00041c23          	sh	zero,24(s0)
    e88030d0:	fc0942e3          	bltz	s2,e8803094 <emdnorm+0x254>
    e88030d4:	b715                	j	e8802ff8 <emdnorm+0x1b8>
    e88030d6:	0001                	nop
    e88030d8:	0084a303          	lw	t1,8(s1)
    e88030dc:	0144d783          	lhu	a5,20(s1)
    e88030e0:	a264468b          	lrhu	a3,s0,t1,1
    e88030e4:	0264130b          	addsl	t1,s0,t1,1
    e88030e8:	00d7f633          	and	a2,a5,a3
    e88030ec:	bd4d                	j	e8802f9e <emdnorm+0x15e>
    e88030ee:	0001                	nop
    e88030f0:	00041c23          	sh	zero,24(s0)
    e88030f4:	00041123          	sh	zero,2(s0)
    e88030f8:	b711                	j	e8802ffc <emdnorm+0x1bc>
    e88030fa:	0001                	nop
    e88030fc:	00800737          	lui	a4,0x800
    e8803100:	0ff7071b          	addiw	a4,a4,255
    e8803104:	4791                	li	a5,4
    e8803106:	1782                	slli	a5,a5,0x20
    e8803108:	0791                	addi	a5,a5,4
    e880310a:	c8d8                	sw	a4,20(s1)
    e880310c:	10000713          	li	a4,256
    e8803110:	00e49c23          	sh	a4,24(s1)
    e8803114:	e49c                	sd	a5,8(s1)
    e8803116:	10000713          	li	a4,256
    e880311a:	4791                	li	a5,4
    e880311c:	b511                	j	e8802f20 <emdnorm+0xe0>
    e880311e:	0001                	nop
    e8803120:	80010737          	lui	a4,0x80010
    e8803124:	377d                	addiw	a4,a4,-1
    e8803126:	478d                	li	a5,3
    e8803128:	1786                	slli	a5,a5,0x21
    e880312a:	079d                	addi	a5,a5,7
    e880312c:	c8d8                	sw	a4,20(s1)
    e880312e:	4705                	li	a4,1
    e8803130:	00e49c23          	sh	a4,24(s1)
    e8803134:	e49c                	sd	a5,8(s1)
    e8803136:	4705                	li	a4,1
    e8803138:	4799                	li	a5,6
    e880313a:	b3dd                	j	e8802f20 <emdnorm+0xe0>
    e880313c:	80010737          	lui	a4,0x80010
    e8803140:	377d                	addiw	a4,a4,-1
    e8803142:	47ad                	li	a5,11
    e8803144:	1782                	slli	a5,a5,0x20
    e8803146:	07b1                	addi	a5,a5,12
    e8803148:	c8d8                	sw	a4,20(s1)
    e880314a:	4705                	li	a4,1
    e880314c:	00e49c23          	sh	a4,24(s1)
    e8803150:	e49c                	sd	a5,8(s1)
    e8803152:	4705                	li	a4,1
    e8803154:	47ad                	li	a5,11
    e8803156:	b3e9                	j	e8802f20 <emdnorm+0xe0>
    e8803158:	e60a00e3          	beqz	s4,e8802fb8 <emdnorm+0x178>
    e880315c:	b559                	j	e8802fe2 <emdnorm+0x1a2>
    e880315e:	0001                	nop
    e8803160:	00800737          	lui	a4,0x800
    e8803164:	0ff7071b          	addiw	a4,a4,255
    e8803168:	4799                	li	a5,6
    e880316a:	1782                	slli	a5,a5,0x20
    e880316c:	0799                	addi	a5,a5,6
    e880316e:	c8d8                	sw	a4,20(s1)
    e8803170:	10000713          	li	a4,256
    e8803174:	00e49c23          	sh	a4,24(s1)
    e8803178:	e49c                	sd	a5,8(s1)
    e880317a:	10000713          	li	a4,256
    e880317e:	4799                	li	a5,6
    e8803180:	b345                	j	e8802f20 <emdnorm+0xe0>
    e8803182:	0001                	nop
    e8803184:	00000013          	nop
    e8803188:	00000013          	nop
    e880318c:	00000013          	nop

00000000e8803190 <eiremain>:
    e8803190:	715d                	addi	sp,sp,-80
    e8803192:	f44e                	sd	s3,40(sp)
    e8803194:	00255983          	lhu	s3,2(a0)
    e8803198:	e486                	sd	ra,72(sp)
    e880319a:	e0a2                	sd	s0,64(sp)
    e880319c:	fc26                	sd	s1,56(sp)
    e880319e:	842e                	mv	s0,a1
    e88031a0:	f84a                	sd	s2,48(sp)
    e88031a2:	f052                	sd	s4,32(sp)
    e88031a4:	8932                	mv	s2,a2
    e88031a6:	ec56                	sd	s5,24(sp)
    e88031a8:	e85a                	sd	s6,16(sp)
    e88031aa:	e45e                	sd	s7,8(sp)
    e88031ac:	e062                	sd	s8,0(sp)
    e88031ae:	8aaa                	mv	s5,a0
    e88031b0:	b71ff0ef          	jal	ra,e8802d20 <enormlz>
    e88031b4:	40a989b3          	sub	s3,s3,a0
    e88031b8:	00245483          	lhu	s1,2(s0)
    e88031bc:	8522                	mv	a0,s0
    e88031be:	b63ff0ef          	jal	ra,e8802d20 <enormlz>
    e88031c2:	03490a13          	addi	s4,s2,52
    e88031c6:	8c89                	sub	s1,s1,a0
    e88031c8:	04e90713          	addi	a4,s2,78
    e88031cc:	87d2                	mv	a5,s4
    e88031ce:	0001                	nop
    e88031d0:	3827d00b          	shia	zero,(a5),2,0
    e88031d4:	fee79ee3          	bne	a5,a4,e88031d0 <eiremain+0x40>
    e88031d8:	0734c563          	blt	s1,s3,e8803242 <eiremain+0xb2>
    e88031dc:	19fd                	addi	s3,s3,-1
    e88031de:	4be9                	li	s7,26
    e88031e0:	4b09                	li	s6,2
    e88031e2:	0001                	nop
    e88031e4:	00000013          	nop
    e88031e8:	4791                	li	a5,4
    e88031ea:	0001                	nop
    e88031ec:	00000013          	nop
    e88031f0:	a0fac68b          	lrhu	a3,s5,a5,0
    e88031f4:	a0f4470b          	lrhu	a4,s0,a5,0
    e88031f8:	0789                	addi	a5,a5,2
    e88031fa:	06e69763          	bne	a3,a4,e8803268 <eiremain+0xd8>
    e88031fe:	ff7799e3          	bne	a5,s7,e88031f0 <eiremain+0x60>
    e8803202:	4761                	li	a4,24
    e8803204:	4681                	li	a3,0
    e8803206:	0001                	nop
    e8803208:	a0e4478b          	lrhu	a5,s0,a4,0
    e880320c:	a0eac60b          	lrhu	a2,s5,a4,0
    e8803210:	8f95                	sub	a5,a5,a3
    e8803212:	8f91                	sub	a5,a5,a2
    e8803214:	20e4578b          	srh	a5,s0,a4,0
    e8803218:	1779                	addi	a4,a4,-2
    e880321a:	4107b68b          	extu	a3,a5,16,16
    e880321e:	ff6715e3          	bne	a4,s6,e8803208 <eiremain+0x78>
    e8803222:	4c05                	li	s8,1
    e8803224:	8552                	mv	a0,s4
    e8803226:	e5aff0ef          	jal	ra,e8802880 <eshup1>
    e880322a:	14fd                	addi	s1,s1,-1
    e880322c:	04c95783          	lhu	a5,76(s2)
    e8803230:	8522                	mv	a0,s0
    e8803232:	00fc6c33          	or	s8,s8,a5
    e8803236:	05891623          	sh	s8,76(s2)
    e880323a:	e46ff0ef          	jal	ra,e8802880 <eshup1>
    e880323e:	fb3495e3          	bne	s1,s3,e88031e8 <eiremain+0x58>
    e8803242:	8522                	mv	a0,s0
    e8803244:	6406                	ld	s0,64(sp)
    e8803246:	60a6                	ld	ra,72(sp)
    e8803248:	79a2                	ld	s3,40(sp)
    e880324a:	7a02                	ld	s4,32(sp)
    e880324c:	6ae2                	ld	s5,24(sp)
    e880324e:	6b42                	ld	s6,16(sp)
    e8803250:	6ba2                	ld	s7,8(sp)
    e8803252:	6c02                	ld	s8,0(sp)
    e8803254:	87ca                	mv	a5,s2
    e8803256:	86a6                	mv	a3,s1
    e8803258:	7942                	ld	s2,48(sp)
    e880325a:	74e2                	ld	s1,56(sp)
    e880325c:	4701                	li	a4,0
    e880325e:	4601                	li	a2,0
    e8803260:	4581                	li	a1,0
    e8803262:	6161                	addi	sp,sp,80
    e8803264:	bddff06f          	j	e8802e40 <emdnorm>
    e8803268:	4c01                	li	s8,0
    e880326a:	fad76de3          	bltu	a4,a3,e8803224 <eiremain+0x94>
    e880326e:	bf51                	j	e8803202 <eiremain+0x72>

00000000e8803270 <emovo.isra.6>:
    e8803270:	00255783          	lhu	a5,2(a0)
    e8803274:	00055683          	lhu	a3,0(a0)
    e8803278:	6721                	lui	a4,0x8
    e880327a:	8f5d                	or	a4,a4,a5
    e880327c:	42d7178b          	mvnez	a5,a4,a3
    e8803280:	00f59923          	sh	a5,18(a1)
    e8803284:	00255703          	lhu	a4,2(a0)
    e8803288:	67a1                	lui	a5,0x8
    e880328a:	17fd                	addi	a5,a5,-1
    e880328c:	00f70e63          	beq	a4,a5,e88032a8 <emovo.isra.6+0x38>
    e8803290:	00650793          	addi	a5,a0,6
    e8803294:	05c1                	addi	a1,a1,16
    e8803296:	0561                	addi	a0,a0,24
    e8803298:	b827c70b          	lhuia	a4,(a5),2,0
    e880329c:	39e5d70b          	shia	a4,(a1),-2,0
    e88032a0:	fea79ce3          	bne	a5,a0,e8803298 <emovo.isra.6+0x28>
    e88032a4:	8082                	ret
    e88032a6:	0001                	nop
    e88032a8:	00650793          	addi	a5,a0,6
    e88032ac:	0569                	addi	a0,a0,26
    e88032ae:	0001                	nop
    e88032b0:	0007d703          	lhu	a4,0(a5) # 8000 <memcmp-0xe87f8000>
    e88032b4:	0789                	addi	a5,a5,2
    e88032b6:	e70d                	bnez	a4,e88032e0 <emovo.isra.6+0x70>
    e88032b8:	fea79ce3          	bne	a5,a0,e88032b0 <emovo.isra.6+0x40>
    e88032bc:	01258713          	addi	a4,a1,18
    e88032c0:	87ae                	mv	a5,a1
    e88032c2:	0001                	nop
    e88032c4:	00000013          	nop
    e88032c8:	3827d00b          	shia	zero,(a5),2,0
    e88032cc:	fef71ee3          	bne	a4,a5,e88032c8 <emovo.isra.6+0x58>
    e88032d0:	0125d783          	lhu	a5,18(a1)
    e88032d4:	6721                	lui	a4,0x8
    e88032d6:	177d                	addi	a4,a4,-1
    e88032d8:	8fd9                	or	a5,a5,a4
    e88032da:	00f59923          	sh	a5,18(a1)
    e88032de:	8082                	ret
    e88032e0:	01058713          	addi	a4,a1,16
    e88032e4:	87ae                	mv	a5,a1
    e88032e6:	0001                	nop
    e88032e8:	3827d00b          	shia	zero,(a5),2,0
    e88032ec:	fef71ee3          	bne	a4,a5,e88032e8 <emovo.isra.6+0x78>
    e88032f0:	7fffc7b7          	lui	a5,0x7fffc
    e88032f4:	c99c                	sw	a5,16(a1)
    e88032f6:	8082                	ret
    e88032f8:	00000013          	nop
    e88032fc:	00000013          	nop

00000000e8803300 <emul>:
    e8803300:	7131                	addi	sp,sp,-192
    e8803302:	e15a                	sd	s6,128(sp)
    e8803304:	01255b03          	lhu	s6,18(a0)
    e8803308:	f922                	sd	s0,176(sp)
    e880330a:	f526                	sd	s1,168(sp)
    e880330c:	f14a                	sd	s2,160(sp)
    e880330e:	ed4e                	sd	s3,152(sp)
    e8803310:	e952                	sd	s4,144(sp)
    e8803312:	67a1                	lui	a5,0x8
    e8803314:	fd06                	sd	ra,184(sp)
    e8803316:	e556                	sd	s5,136(sp)
    e8803318:	fcde                	sd	s7,120(sp)
    e880331a:	f8e2                	sd	s8,112(sp)
    e880331c:	f4e6                	sd	s9,104(sp)
    e880331e:	17fd                	addi	a5,a5,-1
    e8803320:	380b3a0b          	extu	s4,s6,14,0
    e8803324:	892a                	mv	s2,a0
    e8803326:	89ae                	mv	s3,a1
    e8803328:	8432                	mv	s0,a2
    e880332a:	84b6                	mv	s1,a3
    e880332c:	08fa1c63          	bne	s4,a5,e88033c4 <emul+0xc4>
    e8803330:	e30ff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e8803334:	18051c63          	bnez	a0,e88034cc <emul+0x1cc>
    e8803338:	0129da83          	lhu	s5,18(s3)
    e880333c:	380ab78b          	extu	a5,s5,14,0
    e8803340:	1b479063          	bne	a5,s4,e88034e0 <emul+0x1e0>
    e8803344:	854e                	mv	a0,s3
    e8803346:	e1aff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e880334a:	24051f63          	bnez	a0,e88035a8 <emul+0x2a8>
    e880334e:	67a1                	lui	a5,0x8
    e8803350:	17fd                	addi	a5,a5,-1
    e8803352:	00fa1763          	bne	s4,a5,e8803360 <emul+0x60>
    e8803356:	854a                	mv	a0,s2
    e8803358:	849ff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e880335c:	18051663          	bnez	a0,e88034e8 <emul+0x1e8>
    e8803360:	67a1                	lui	a5,0x8
    e8803362:	380aba8b          	extu	s5,s5,14,0
    e8803366:	17fd                	addi	a5,a5,-1
    e8803368:	20fa9963          	bne	s5,a5,e880357a <emul+0x27a>
    e880336c:	854e                	mv	a0,s3
    e880336e:	833ff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e8803372:	26051963          	bnez	a0,e88035e4 <emul+0x2e4>
    e8803376:	01295783          	lhu	a5,18(s2)
    e880337a:	3807b78b          	extu	a5,a5,14,0
    e880337e:	19578163          	beq	a5,s5,e8803500 <emul+0x200>
    e8803382:	854a                	mv	a0,s2
    e8803384:	858a                	mv	a1,sp
    e8803386:	e5aff0ef          	jal	ra,e88029e0 <emovi>
    e880338a:	854e                	mv	a0,s3
    e880338c:	100c                	addi	a1,sp,32
    e880338e:	e52ff0ef          	jal	ra,e88029e0 <emovi>
    e8803392:	00215903          	lhu	s2,2(sp)
    e8803396:	02215983          	lhu	s3,34(sp)
    e880339a:	02091d63          	bnez	s2,e88033d4 <emul+0xd4>
    e880339e:	005c                	addi	a5,sp,4
    e88033a0:	0834                	addi	a3,sp,24
    e88033a2:	0001                	nop
    e88033a4:	00000013          	nop
    e88033a8:	20f68c63          	beq	a3,a5,e88035c0 <emul+0x2c0>
    e88033ac:	b827c70b          	lhuia	a4,(a5),2,0
    e88033b0:	df65                	beqz	a4,e88033a8 <emul+0xa8>
    e88033b2:	850a                	mv	a0,sp
    e88033b4:	96dff0ef          	jal	ra,e8802d20 <enormlz>
    e88033b8:	40a00933          	neg	s2,a0
    e88033bc:	02215703          	lhu	a4,34(sp)
    e88033c0:	a819                	j	e88033d6 <emul+0xd6>
    e88033c2:	0001                	nop
    e88033c4:	0125da83          	lhu	s5,18(a1)
    e88033c8:	380ab70b          	extu	a4,s5,14,0
    e88033cc:	faf71be3          	bne	a4,a5,e8803382 <emul+0x82>
    e88033d0:	bf95                	j	e8803344 <emul+0x44>
    e88033d2:	0001                	nop
    e88033d4:	874e                	mv	a4,s3
    e88033d6:	8bce                	mv	s7,s3
    e88033d8:	105c                	addi	a5,sp,36
    e88033da:	1834                	addi	a3,sp,56
    e88033dc:	ef11                	bnez	a4,e88033f8 <emul+0xf8>
    e88033de:	0001                	nop
    e88033e0:	1ef68a63          	beq	a3,a5,e88035d4 <emul+0x2d4>
    e88033e4:	b827c70b          	lhuia	a4,(a5),2,0
    e88033e8:	df65                	beqz	a4,e88033e0 <emul+0xe0>
    e88033ea:	1008                	addi	a0,sp,32
    e88033ec:	935ff0ef          	jal	ra,e8802d20 <enormlz>
    e88033f0:	40a98bb3          	sub	s7,s3,a0
    e88033f4:	02215703          	lhu	a4,34(sp)
    e88033f8:	02015783          	lhu	a5,32(sp)
    e88033fc:	03848a93          	addi	s5,s1,56
    e8803400:	02e49b23          	sh	a4,54(s1)
    e8803404:	02f49a23          	sh	a5,52(s1)
    e8803408:	04e48713          	addi	a4,s1,78
    e880340c:	87d6                	mv	a5,s5
    e880340e:	0001                	nop
    e8803410:	3827d00b          	shia	zero,(a5),2,0
    e8803414:	fee79ee3          	bne	a5,a4,e8803410 <emul+0x110>
    e8803418:	04c48b13          	addi	s6,s1,76
    e880341c:	4a01                	li	s4,0
    e880341e:	01810993          	addi	s3,sp,24
    e8803422:	00410c93          	addi	s9,sp,4
    e8803426:	04210c13          	addi	s8,sp,66
    e880342a:	0001                	nop
    e880342c:	00000013          	nop
    e8803430:	b9e9c50b          	lhuia	a0,(s3),-2,0
    e8803434:	10051e63          	bnez	a0,e8803550 <emul+0x250>
    e8803438:	04c4d703          	lhu	a4,76(s1)
    e880343c:	87da                	mv	a5,s6
    e880343e:	00ea6a33          	or	s4,s4,a4
    e8803442:	0001                	nop
    e8803444:	00000013          	nop
    e8803448:	a9e7c70b          	lhuib	a4,(a5),-2,0
    e880344c:	00e79123          	sh	a4,2(a5) # 8002 <memcmp-0xe87f7ffe>
    e8803450:	fefa9ce3          	bne	s5,a5,e8803448 <emul+0x148>
    e8803454:	02049c23          	sh	zero,56(s1)
    e8803458:	fd999ce3          	bne	s3,s9,e8803430 <emul+0x130>
    e880345c:	4785                	li	a5,1
    e880345e:	03248593          	addi	a1,s1,50
    e8803462:	46b9                	li	a3,14
    e8803464:	00000013          	nop
    e8803468:	a2f5c60b          	lrhu	a2,a1,a5,1
    e880346c:	1018                	addi	a4,sp,32
    e880346e:	02f7170b          	addsl	a4,a4,a5,1
    e8803472:	fec71f23          	sh	a2,-2(a4) # 7ffe <memcmp-0xe87f8002>
    e8803476:	0785                	addi	a5,a5,1
    e8803478:	fed798e3          	bne	a5,a3,e8803468 <emul+0x168>
    e880347c:	76f1                	lui	a3,0xffffc
    e880347e:	995e                	add	s2,s2,s7
    e8803480:	0689                	addi	a3,a3,2
    e8803482:	85d2                	mv	a1,s4
    e8803484:	1008                	addi	a0,sp,32
    e8803486:	87a6                	mv	a5,s1
    e8803488:	04000713          	li	a4,64
    e880348c:	96ca                	add	a3,a3,s2
    e880348e:	4601                	li	a2,0
    e8803490:	9b1ff0ef          	jal	ra,e8802e40 <emdnorm>
    e8803494:	02015703          	lhu	a4,32(sp)
    e8803498:	00015783          	lhu	a5,0(sp)
    e880349c:	85a2                	mv	a1,s0
    e880349e:	1008                	addi	a0,sp,32
    e88034a0:	8f99                	sub	a5,a5,a4
    e88034a2:	00f037b3          	snez	a5,a5
    e88034a6:	40f007bb          	negw	a5,a5
    e88034aa:	02f11023          	sh	a5,32(sp)
    e88034ae:	dc3ff0ef          	jal	ra,e8803270 <emovo.isra.6>
    e88034b2:	70ea                	ld	ra,184(sp)
    e88034b4:	744a                	ld	s0,176(sp)
    e88034b6:	74aa                	ld	s1,168(sp)
    e88034b8:	790a                	ld	s2,160(sp)
    e88034ba:	69ea                	ld	s3,152(sp)
    e88034bc:	6a4a                	ld	s4,144(sp)
    e88034be:	6aaa                	ld	s5,136(sp)
    e88034c0:	6b0a                	ld	s6,128(sp)
    e88034c2:	7be6                	ld	s7,120(sp)
    e88034c4:	7c46                	ld	s8,112(sp)
    e88034c6:	7ca6                	ld	s9,104(sp)
    e88034c8:	6129                	addi	sp,sp,192
    e88034ca:	8082                	ret
    e88034cc:	4781                	li	a5,0
    e88034ce:	46d1                	li	a3,20
    e88034d0:	a0f9470b          	lrhu	a4,s2,a5,0
    e88034d4:	20f4570b          	srh	a4,s0,a5,0
    e88034d8:	0789                	addi	a5,a5,2
    e88034da:	fed79be3          	bne	a5,a3,e88034d0 <emul+0x1d0>
    e88034de:	bfd1                	j	e88034b2 <emul+0x1b2>
    e88034e0:	854a                	mv	a0,s2
    e88034e2:	ebeff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e88034e6:	cd49                	beqz	a0,e8803580 <emul+0x280>
    e88034e8:	0009c597          	auipc	a1,0x9c
    e88034ec:	a8058593          	addi	a1,a1,-1408 # e889ef68 <ezero>
    e88034f0:	854e                	mv	a0,s3
    e88034f2:	daeff0ef          	jal	ra,e8802aa0 <ecmp>
    e88034f6:	10050763          	beqz	a0,e8803604 <emul+0x304>
    e88034fa:	0129da83          	lhu	s5,18(s3)
    e88034fe:	b58d                	j	e8803360 <emul+0x60>
    e8803500:	854a                	mv	a0,s2
    e8803502:	e9eff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e8803506:	e511                	bnez	a0,e8803512 <emul+0x212>
    e8803508:	854e                	mv	a0,s3
    e880350a:	e96ff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e880350e:	e6050ae3          	beqz	a0,e8803382 <emul+0x82>
    e8803512:	854a                	mv	a0,s2
    e8803514:	c9cff0ef          	jal	ra,e88029b0 <eisneg>
    e8803518:	84aa                	mv	s1,a0
    e880351a:	854e                	mv	a0,s3
    e880351c:	c94ff0ef          	jal	ra,e88029b0 <eisneg>
    e8803520:	40a48533          	sub	a0,s1,a0
    e8803524:	00a03533          	snez	a0,a0
    e8803528:	053e                	slli	a0,a0,0xf
    e880352a:	8722                	mv	a4,s0
    e880352c:	2a97550b          	shib	a0,(a4),9,1
    e8803530:	87a2                	mv	a5,s0
    e8803532:	0001                	nop
    e8803534:	00000013          	nop
    e8803538:	3827d00b          	shia	zero,(a5),2,0
    e880353c:	fef71ee3          	bne	a4,a5,e8803538 <emul+0x238>
    e8803540:	01245783          	lhu	a5,18(s0)
    e8803544:	6721                	lui	a4,0x8
    e8803546:	177d                	addi	a4,a4,-1
    e8803548:	8fd9                	or	a5,a5,a4
    e880354a:	00f41923          	sh	a5,18(s0)
    e880354e:	b795                	j	e88034b2 <emul+0x1b2>
    e8803550:	0090                	addi	a2,sp,64
    e8803552:	100c                	addi	a1,sp,32
    e8803554:	b8cff0ef          	jal	ra,e88028e0 <m16m>
    e8803558:	85da                	mv	a1,s6
    e880355a:	4781                	li	a5,0
    e880355c:	08b0                	addi	a2,sp,88
    e880355e:	0001                	nop
    e8803560:	0005d503          	lhu	a0,0(a1)
    e8803564:	b9e6470b          	lhuia	a4,(a2),-2,0
    e8803568:	972a                	add	a4,a4,a0
    e880356a:	97ba                	add	a5,a5,a4
    e880356c:	39e5d78b          	shia	a5,(a1),-2,0
    e8803570:	4107b78b          	extu	a5,a5,16,16
    e8803574:	ff8616e3          	bne	a2,s8,e8803560 <emul+0x260>
    e8803578:	b5c1                	j	e8803438 <emul+0x138>
    e880357a:	01295b03          	lhu	s6,18(s2)
    e880357e:	0001                	nop
    e8803580:	67a1                	lui	a5,0x8
    e8803582:	380b3b0b          	extu	s6,s6,14,0
    e8803586:	17fd                	addi	a5,a5,-1
    e8803588:	defb1de3          	bne	s6,a5,e8803382 <emul+0x82>
    e880358c:	854a                	mv	a0,s2
    e880358e:	e12ff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e8803592:	f141                	bnez	a0,e8803512 <emul+0x212>
    e8803594:	0129d703          	lhu	a4,18(s3)
    e8803598:	67a1                	lui	a5,0x8
    e880359a:	17fd                	addi	a5,a5,-1
    e880359c:	3807370b          	extu	a4,a4,14,0
    e88035a0:	def711e3          	bne	a4,a5,e8803382 <emul+0x82>
    e88035a4:	b795                	j	e8803508 <emul+0x208>
    e88035a6:	0001                	nop
    e88035a8:	4781                	li	a5,0
    e88035aa:	46d1                	li	a3,20
    e88035ac:	00000013          	nop
    e88035b0:	a0f9c70b          	lrhu	a4,s3,a5,0
    e88035b4:	20f4570b          	srh	a4,s0,a5,0
    e88035b8:	0789                	addi	a5,a5,2
    e88035ba:	fed79be3          	bne	a5,a3,e88035b0 <emul+0x2b0>
    e88035be:	bdd5                	j	e88034b2 <emul+0x1b2>
    e88035c0:	01440793          	addi	a5,s0,20
    e88035c4:	00000013          	nop
    e88035c8:	3824500b          	shia	zero,(s0),2,0
    e88035cc:	fef41ee3          	bne	s0,a5,e88035c8 <emul+0x2c8>
    e88035d0:	b5cd                	j	e88034b2 <emul+0x1b2>
    e88035d2:	0001                	nop
    e88035d4:	01440793          	addi	a5,s0,20
    e88035d8:	3824500b          	shia	zero,(s0),2,0
    e88035dc:	fef41ee3          	bne	s0,a5,e88035d8 <emul+0x2d8>
    e88035e0:	bdc9                	j	e88034b2 <emul+0x1b2>
    e88035e2:	0001                	nop
    e88035e4:	0009c597          	auipc	a1,0x9c
    e88035e8:	98458593          	addi	a1,a1,-1660 # e889ef68 <ezero>
    e88035ec:	854a                	mv	a0,s2
    e88035ee:	cb2ff0ef          	jal	ra,e8802aa0 <ecmp>
    e88035f2:	c909                	beqz	a0,e8803604 <emul+0x304>
    e88035f4:	01295783          	lhu	a5,18(s2)
    e88035f8:	3807b78b          	extu	a5,a5,14,0
    e88035fc:	f95788e3          	beq	a5,s5,e880358c <emul+0x28c>
    e8803600:	bf51                	j	e8803594 <emul+0x294>
    e8803602:	0001                	nop
    e8803604:	01040713          	addi	a4,s0,16
    e8803608:	87a2                	mv	a5,s0
    e880360a:	0001                	nop
    e880360c:	00000013          	nop
    e8803610:	3827d00b          	shia	zero,(a5),2,0
    e8803614:	fee79ee3          	bne	a5,a4,e8803610 <emul+0x310>
    e8803618:	7fffc7b7          	lui	a5,0x7fffc
    e880361c:	c81c                	sw	a5,16(s0)
    e880361e:	bd51                	j	e88034b2 <emul+0x1b2>

00000000e8803620 <ediv>:
    e8803620:	01255703          	lhu	a4,18(a0)
    e8803624:	7115                	addi	sp,sp,-224
    e8803626:	e9a2                	sd	s0,208(sp)
    e8803628:	e5a6                	sd	s1,200(sp)
    e880362a:	f556                	sd	s5,168(sp)
    e880362c:	e566                	sd	s9,136(sp)
    e880362e:	67a1                	lui	a5,0x8
    e8803630:	ed86                	sd	ra,216(sp)
    e8803632:	e1ca                	sd	s2,192(sp)
    e8803634:	fd4e                	sd	s3,184(sp)
    e8803636:	f952                	sd	s4,176(sp)
    e8803638:	f15a                	sd	s6,160(sp)
    e880363a:	ed5e                	sd	s7,152(sp)
    e880363c:	e962                	sd	s8,144(sp)
    e880363e:	e16a                	sd	s10,128(sp)
    e8803640:	fcee                	sd	s11,120(sp)
    e8803642:	17fd                	addi	a5,a5,-1
    e8803644:	3807370b          	extu	a4,a4,14,0
    e8803648:	842a                	mv	s0,a0
    e880364a:	84ae                	mv	s1,a1
    e880364c:	8cb2                	mv	s9,a2
    e880364e:	8ab6                	mv	s5,a3
    e8803650:	00f71663          	bne	a4,a5,e880365c <ediv+0x3c>
    e8803654:	b0cff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e8803658:	2a051c63          	bnez	a0,e8803910 <ediv+0x2f0>
    e880365c:	0124d703          	lhu	a4,18(s1)
    e8803660:	67a1                	lui	a5,0x8
    e8803662:	17fd                	addi	a5,a5,-1
    e8803664:	3807370b          	extu	a4,a4,14,0
    e8803668:	06f70863          	beq	a4,a5,e88036d8 <ediv+0xb8>
    e880366c:	0009c597          	auipc	a1,0x9c
    e8803670:	8fc58593          	addi	a1,a1,-1796 # e889ef68 <ezero>
    e8803674:	8522                	mv	a0,s0
    e8803676:	c2aff0ef          	jal	ra,e8802aa0 <ecmp>
    e880367a:	c169                	beqz	a0,e880373c <ediv+0x11c>
    e880367c:	01245903          	lhu	s2,18(s0)
    e8803680:	0124d783          	lhu	a5,18(s1)
    e8803684:	6721                	lui	a4,0x8
    e8803686:	3809390b          	extu	s2,s2,14,0
    e880368a:	3807b78b          	extu	a5,a5,14,0
    e880368e:	177d                	addi	a4,a4,-1
    e8803690:	3c07b98b          	extu	s3,a5,15,0
    e8803694:	06e91263          	bne	s2,a4,e88036f8 <ediv+0xd8>
    e8803698:	8522                	mv	a0,s0
    e880369a:	d06ff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e880369e:	c579                	beqz	a0,e880376c <ediv+0x14c>
    e88036a0:	01299663          	bne	s3,s2,e88036ac <ediv+0x8c>
    e88036a4:	8526                	mv	a0,s1
    e88036a6:	cfaff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e88036aa:	e14d                	bnez	a0,e880374c <ediv+0x12c>
    e88036ac:	014c8793          	addi	a5,s9,20
    e88036b0:	382cd00b          	shia	zero,(s9),2,0
    e88036b4:	fefc9ee3          	bne	s9,a5,e88036b0 <ediv+0x90>
    e88036b8:	60ee                	ld	ra,216(sp)
    e88036ba:	644e                	ld	s0,208(sp)
    e88036bc:	64ae                	ld	s1,200(sp)
    e88036be:	690e                	ld	s2,192(sp)
    e88036c0:	79ea                	ld	s3,184(sp)
    e88036c2:	7a4a                	ld	s4,176(sp)
    e88036c4:	7aaa                	ld	s5,168(sp)
    e88036c6:	7b0a                	ld	s6,160(sp)
    e88036c8:	6bea                	ld	s7,152(sp)
    e88036ca:	6c4a                	ld	s8,144(sp)
    e88036cc:	6caa                	ld	s9,136(sp)
    e88036ce:	6d0a                	ld	s10,128(sp)
    e88036d0:	7de6                	ld	s11,120(sp)
    e88036d2:	612d                	addi	sp,sp,224
    e88036d4:	8082                	ret
    e88036d6:	0001                	nop
    e88036d8:	8526                	mv	a0,s1
    e88036da:	a86ff0ef          	jal	ra,e8802960 <eisnan.part.0>
    e88036de:	d559                	beqz	a0,e880366c <ediv+0x4c>
    e88036e0:	4781                	li	a5,0
    e88036e2:	46d1                	li	a3,20
    e88036e4:	00000013          	nop
    e88036e8:	a0f4c70b          	lrhu	a4,s1,a5,0
    e88036ec:	20fcd70b          	srh	a4,s9,a5,0
    e88036f0:	0789                	addi	a5,a5,2
    e88036f2:	fed79be3          	bne	a5,a3,e88036e8 <ediv+0xc8>
    e88036f6:	b7c9                	j	e88036b8 <ediv+0x98>
    e88036f8:	06e98c63          	beq	s3,a4,e8803770 <ediv+0x150>
    e88036fc:	8522                	mv	a0,s0
    e88036fe:	080c                	addi	a1,sp,16
    e8803700:	ae0ff0ef          	jal	ra,e88029e0 <emovi>
    e8803704:	180c                	addi	a1,sp,48
    e8803706:	8526                	mv	a0,s1
    e8803708:	ad8ff0ef          	jal	ra,e88029e0 <emovi>
    e880370c:	03215b03          	lhu	s6,50(sp)
    e8803710:	01215403          	lhu	s0,18(sp)
    e8803714:	080b1e63          	bnez	s6,e88037b0 <ediv+0x190>
    e8803718:	185c                	addi	a5,sp,52
    e880371a:	04810d93          	addi	s11,sp,72
    e880371e:	0001                	nop
    e8803720:	28fd8a63          	beq	s11,a5,e88039b4 <ediv+0x394>
    e8803724:	b827c70b          	lhuia	a4,(a5),2,0
    e8803728:	df65                	beqz	a4,e8803720 <ediv+0x100>
    e880372a:	1808                	addi	a0,sp,48
    e880372c:	df4ff0ef          	jal	ra,e8802d20 <enormlz>
    e8803730:	40a007b3          	neg	a5,a0
    e8803734:	e43e                	sd	a5,8(sp)
    e8803736:	01215603          	lhu	a2,18(sp)
    e880373a:	a8ad                	j	e88037b4 <ediv+0x194>
    e880373c:	0009c597          	auipc	a1,0x9c
    e8803740:	82c58593          	addi	a1,a1,-2004 # e889ef68 <ezero>
    e8803744:	8526                	mv	a0,s1
    e8803746:	b5aff0ef          	jal	ra,e8802aa0 <ecmp>
    e880374a:	f90d                	bnez	a0,e880367c <ediv+0x5c>
    e880374c:	010c8713          	addi	a4,s9,16
    e8803750:	87e6                	mv	a5,s9
    e8803752:	0001                	nop
    e8803754:	00000013          	nop
    e8803758:	3827d00b          	shia	zero,(a5),2,0
    e880375c:	fee79ee3          	bne	a5,a4,e8803758 <ediv+0x138>
    e8803760:	7fffc7b7          	lui	a5,0x7fffc
    e8803764:	00fca823          	sw	a5,16(s9)
    e8803768:	bf81                	j	e88036b8 <ediv+0x98>
    e880376a:	0001                	nop
    e880376c:	f92998e3          	bne	s3,s2,e88036fc <ediv+0xdc>
    e8803770:	8526                	mv	a0,s1
    e8803772:	c2eff0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e8803776:	d159                	beqz	a0,e88036fc <ediv+0xdc>
    e8803778:	8522                	mv	a0,s0
    e880377a:	a36ff0ef          	jal	ra,e88029b0 <eisneg>
    e880377e:	842a                	mv	s0,a0
    e8803780:	8526                	mv	a0,s1
    e8803782:	a2eff0ef          	jal	ra,e88029b0 <eisneg>
    e8803786:	40a40533          	sub	a0,s0,a0
    e880378a:	00a03533          	snez	a0,a0
    e880378e:	053e                	slli	a0,a0,0xf
    e8803790:	8766                	mv	a4,s9
    e8803792:	2a97550b          	shib	a0,(a4),9,1
    e8803796:	87e6                	mv	a5,s9
    e8803798:	3827d00b          	shia	zero,(a5),2,0
    e880379c:	fee79ee3          	bne	a5,a4,e8803798 <ediv+0x178>
    e88037a0:	012cd783          	lhu	a5,18(s9)
    e88037a4:	6721                	lui	a4,0x8
    e88037a6:	177d                	addi	a4,a4,-1
    e88037a8:	8fd9                	or	a5,a5,a4
    e88037aa:	00fc9923          	sh	a5,18(s9)
    e88037ae:	b729                	j	e88036b8 <ediv+0x98>
    e88037b0:	e45a                	sd	s6,8(sp)
    e88037b2:	8622                	mv	a2,s0
    e88037b4:	e022                	sd	s0,0(sp)
    e88037b6:	085c                	addi	a5,sp,20
    e88037b8:	1034                	addi	a3,sp,40
    e88037ba:	ee11                	bnez	a2,e88037d6 <ediv+0x1b6>
    e88037bc:	00000013          	nop
    e88037c0:	20f68263          	beq	a3,a5,e88039c4 <ediv+0x3a4>
    e88037c4:	b827c70b          	lhuia	a4,(a5),2,0
    e88037c8:	df65                	beqz	a4,e88037c0 <ediv+0x1a0>
    e88037ca:	0808                	addi	a0,sp,16
    e88037cc:	d54ff0ef          	jal	ra,e8802d20 <enormlz>
    e88037d0:	40a407b3          	sub	a5,s0,a0
    e88037d4:	e03e                	sd	a5,0(sp)
    e88037d6:	5742                	lw	a4,48(sp)
    e88037d8:	038a8d13          	addi	s10,s5,56
    e88037dc:	87ea                	mv	a5,s10
    e88037de:	02eaaa23          	sw	a4,52(s5)
    e88037e2:	04ea8413          	addi	s0,s5,78
    e88037e6:	0001                	nop
    e88037e8:	3827d00b          	shia	zero,(a5),2,0
    e88037ec:	fef41ee3          	bne	s0,a5,e88037e8 <ediv+0x1c8>
    e88037f0:	1808                	addi	a0,sp,48
    e88037f2:	82eff0ef          	jal	ra,e8802820 <eshdn1>
    e88037f6:	01615b83          	lhu	s7,22(sp)
    e88037fa:	6941                	lui	s2,0x10
    e88037fc:	04810d93          	addi	s11,sp,72
    e8803800:	010b9993          	slli	s3,s7,0x10
    e8803804:	417989b3          	sub	s3,s3,s7
    e8803808:	03210a13          	addi	s4,sp,50
    e880380c:	197d                	addi	s2,s2,-1
    e880380e:	4c59                	li	s8,22
    e8803810:	05210493          	addi	s1,sp,82
    e8803814:	00000013          	nop
    e8803818:	03415503          	lhu	a0,52(sp)
    e880381c:	03615783          	lhu	a5,54(sp)
    e8803820:	8b4a                	mv	s6,s2
    e8803822:	0542                	slli	a0,a0,0x10
    e8803824:	953e                	add	a0,a0,a5
    e8803826:	00a9e663          	bltu	s3,a0,e8803832 <ediv+0x212>
    e880382a:	03755533          	divu	a0,a0,s7
    e880382e:	3c053b0b          	extu	s6,a0,15,0
    e8803832:	0890                	addi	a2,sp,80
    e8803834:	080c                	addi	a1,sp,16
    e8803836:	855a                	mv	a0,s6
    e8803838:	8a8ff0ef          	jal	ra,e88028e0 <m16m>
    e880383c:	4781                	li	a5,0
    e880383e:	0001                	nop
    e8803840:	0898                	addi	a4,sp,80
    e8803842:	00f705b3          	add	a1,a4,a5
    e8803846:	1818                	addi	a4,sp,48
    e8803848:	00f70633          	add	a2,a4,a5
    e880384c:	0045d583          	lhu	a1,4(a1)
    e8803850:	00465603          	lhu	a2,4(a2)
    e8803854:	0789                	addi	a5,a5,2
    e8803856:	0cc59963          	bne	a1,a2,e8803928 <ediv+0x308>
    e880385a:	ff8793e3          	bne	a5,s8,e8803840 <ediv+0x220>
    e880385e:	4501                	li	a0,0
    e8803860:	10ac                	addi	a1,sp,104
    e8803862:	866e                	mv	a2,s11
    e8803864:	00000013          	nop
    e8803868:	00065783          	lhu	a5,0(a2)
    e880386c:	b9e5c80b          	lhuia	a6,(a1),-2,0
    e8803870:	8f89                	sub	a5,a5,a0
    e8803872:	410787b3          	sub	a5,a5,a6
    e8803876:	39e6578b          	shia	a5,(a2),-2,0
    e880387a:	4107b50b          	extu	a0,a5,16,16
    e880387e:	ff4615e3          	bne	a2,s4,e8803868 <ediv+0x248>
    e8803882:	016d1023          	sh	s6,0(s10)
    e8803886:	185c                	addi	a5,sp,52
    e8803888:	a827c68b          	lhuib	a3,(a5),2,0
    e880388c:	fed79f23          	sh	a3,-2(a5) # 7fffbffe <memcmp-0x68804002>
    e8803890:	ffb79ce3          	bne	a5,s11,e8803888 <ediv+0x268>
    e8803894:	04011423          	sh	zero,72(sp)
    e8803898:	0d09                	addi	s10,s10,2
    e880389a:	f7a41fe3          	bne	s0,s10,e8803818 <ediv+0x1f8>
    e880389e:	4581                	li	a1,0
    e88038a0:	185c                	addi	a5,sp,52
    e88038a2:	04a10693          	addi	a3,sp,74
    e88038a6:	0001                	nop
    e88038a8:	b827c70b          	lhuia	a4,(a5),2,0
    e88038ac:	8dd9                	or	a1,a1,a4
    e88038ae:	fed79de3          	bne	a5,a3,e88038a8 <ediv+0x288>
    e88038b2:	2581                	sext.w	a1,a1
    e88038b4:	00b035b3          	snez	a1,a1
    e88038b8:	4785                	li	a5,1
    e88038ba:	032a8513          	addi	a0,s5,50
    e88038be:	4639                	li	a2,14
    e88038c0:	a2f5468b          	lrhu	a3,a0,a5,1
    e88038c4:	1818                	addi	a4,sp,48
    e88038c6:	02f7170b          	addsl	a4,a4,a5,1
    e88038ca:	fed71f23          	sh	a3,-2(a4) # 7ffe <memcmp-0xe87f8002>
    e88038ce:	0785                	addi	a5,a5,1
    e88038d0:	fec798e3          	bne	a5,a2,e88038c0 <ediv+0x2a0>
    e88038d4:	67a2                	ld	a5,8(sp)
    e88038d6:	6702                	ld	a4,0(sp)
    e88038d8:	6691                	lui	a3,0x4
    e88038da:	16fd                	addi	a3,a3,-1
    e88038dc:	40e78b33          	sub	s6,a5,a4
    e88038e0:	1808                	addi	a0,sp,48
    e88038e2:	87d6                	mv	a5,s5
    e88038e4:	04000713          	li	a4,64
    e88038e8:	96da                	add	a3,a3,s6
    e88038ea:	4601                	li	a2,0
    e88038ec:	d54ff0ef          	jal	ra,e8802e40 <emdnorm>
    e88038f0:	03015703          	lhu	a4,48(sp)
    e88038f4:	01015783          	lhu	a5,16(sp)
    e88038f8:	85e6                	mv	a1,s9
    e88038fa:	1808                	addi	a0,sp,48
    e88038fc:	8f99                	sub	a5,a5,a4
    e88038fe:	00f037b3          	snez	a5,a5
    e8803902:	40f007bb          	negw	a5,a5
    e8803906:	02f11823          	sh	a5,48(sp)
    e880390a:	967ff0ef          	jal	ra,e8803270 <emovo.isra.6>
    e880390e:	b36d                	j	e88036b8 <ediv+0x98>
    e8803910:	4781                	li	a5,0
    e8803912:	46d1                	li	a3,20
    e8803914:	00000013          	nop
    e8803918:	a0f4470b          	lrhu	a4,s0,a5,0
    e880391c:	20fcd70b          	srh	a4,s9,a5,0
    e8803920:	0789                	addi	a5,a5,2
    e8803922:	fed79be3          	bne	a5,a3,e8803918 <ediv+0x2f8>
    e8803926:	bb49                	j	e88036b8 <ediv+0x98>
    e8803928:	f2b67be3          	bgeu	a2,a1,e880385e <ediv+0x23e>
    e880392c:	fffb079b          	addiw	a5,s6,-1
    e8803930:	3c07b88b          	extu	a7,a5,15,0
    e8803934:	4501                	li	a0,0
    e8803936:	102c                	addi	a1,sp,40
    e8803938:	10b0                	addi	a2,sp,104
    e880393a:	0001                	nop
    e880393c:	00000013          	nop
    e8803940:	00065783          	lhu	a5,0(a2)
    e8803944:	b9e5c80b          	lhuia	a6,(a1),-2,0
    e8803948:	8f89                	sub	a5,a5,a0
    e880394a:	410787b3          	sub	a5,a5,a6
    e880394e:	39e6578b          	shia	a5,(a2),-2,0
    e8803952:	4107b50b          	extu	a0,a5,16,16
    e8803956:	fe9615e3          	bne	a2,s1,e8803940 <ediv+0x320>
    e880395a:	4781                	li	a5,0
    e880395c:	00000013          	nop
    e8803960:	0898                	addi	a4,sp,80
    e8803962:	00f705b3          	add	a1,a4,a5
    e8803966:	1818                	addi	a4,sp,48
    e8803968:	00f70633          	add	a2,a4,a5
    e880396c:	0045d583          	lhu	a1,4(a1)
    e8803970:	00465603          	lhu	a2,4(a2)
    e8803974:	0789                	addi	a5,a5,2
    e8803976:	00c59763          	bne	a1,a2,e8803984 <ediv+0x364>
    e880397a:	ff8793e3          	bne	a5,s8,e8803960 <ediv+0x340>
    e880397e:	8b46                	mv	s6,a7
    e8803980:	bdf9                	j	e880385e <ediv+0x23e>
    e8803982:	0001                	nop
    e8803984:	feb67de3          	bgeu	a2,a1,e880397e <ediv+0x35e>
    e8803988:	ffeb051b          	addiw	a0,s6,-2
    e880398c:	3c053b0b          	extu	s6,a0,15,0
    e8803990:	102c                	addi	a1,sp,40
    e8803992:	4501                	li	a0,0
    e8803994:	10b0                	addi	a2,sp,104
    e8803996:	0001                	nop
    e8803998:	00065783          	lhu	a5,0(a2)
    e880399c:	b9e5c80b          	lhuia	a6,(a1),-2,0
    e88039a0:	8f89                	sub	a5,a5,a0
    e88039a2:	410787b3          	sub	a5,a5,a6
    e88039a6:	39e6578b          	shia	a5,(a2),-2,0
    e88039aa:	4107b50b          	extu	a0,a5,16,16
    e88039ae:	fe9615e3          	bne	a2,s1,e8803998 <ediv+0x378>
    e88039b2:	b575                	j	e880385e <ediv+0x23e>
    e88039b4:	014c8793          	addi	a5,s9,20
    e88039b8:	382cd00b          	shia	zero,(s9),2,0
    e88039bc:	ff979ee3          	bne	a5,s9,e88039b8 <ediv+0x398>
    e88039c0:	b9e5                	j	e88036b8 <ediv+0x98>
    e88039c2:	0001                	nop
    e88039c4:	03015683          	lhu	a3,48(sp)
    e88039c8:	01015783          	lhu	a5,16(sp)
    e88039cc:	8766                	mv	a4,s9
    e88039ce:	8f95                	sub	a5,a5,a3
    e88039d0:	00f037b3          	snez	a5,a5
    e88039d4:	66a1                	lui	a3,0x8
    e88039d6:	42f6960b          	mvnez	a2,a3,a5
    e88039da:	2a97560b          	shib	a2,(a4),9,1
    e88039de:	87e6                	mv	a5,s9
    e88039e0:	3827d00b          	shia	zero,(a5),2,0
    e88039e4:	fef71ee3          	bne	a4,a5,e88039e0 <ediv+0x3c0>
    e88039e8:	012cd783          	lhu	a5,18(s9)
    e88039ec:	6721                	lui	a4,0x8
    e88039ee:	177d                	addi	a4,a4,-1
    e88039f0:	8fd9                	or	a5,a5,a4
    e88039f2:	00fc9923          	sh	a5,18(s9)
    e88039f6:	b1c9                	j	e88036b8 <ediv+0x98>
    e88039f8:	00000013          	nop
    e88039fc:	00000013          	nop

00000000e8803a00 <e113toe.isra.8>:
    e8803a00:	7179                	addi	sp,sp,-48
    e8803a02:	f022                	sd	s0,32(sp)
    e8803a04:	f406                	sd	ra,40(sp)
    e8803a06:	842e                	mv	s0,a1
    e8803a08:	878a                	mv	a5,sp
    e8803a0a:	01a10713          	addi	a4,sp,26
    e8803a0e:	0001                	nop
    e8803a10:	3827d00b          	shia	zero,(a5),2,0
    e8803a14:	fee79ee3          	bne	a5,a4,e8803a10 <e113toe.isra.8+0x10>
    e8803a18:	00e55603          	lhu	a2,14(a0)
    e8803a1c:	fcf6378b          	extu	a5,a2,63,15
    e8803a20:	efb1                	bnez	a5,e8803a7c <e113toe.isra.8+0x7c>
    e8803a22:	3806360b          	extu	a2,a2,14,0
    e8803a26:	67a1                	lui	a5,0x8
    e8803a28:	00011023          	sh	zero,0(sp)
    e8803a2c:	3c06360b          	extu	a2,a2,15,0
    e8803a30:	17fd                	addi	a5,a5,-1
    e8803a32:	06f60063          	beq	a2,a5,e8803a92 <e113toe.isra.8+0x92>
    e8803a36:	00e50793          	addi	a5,a0,14
    e8803a3a:	00c11123          	sh	a2,2(sp)
    e8803a3e:	00610713          	addi	a4,sp,6
    e8803a42:	0001                	nop
    e8803a44:	00000013          	nop
    e8803a48:	a9e7c68b          	lhuib	a3,(a5),-2,0
    e8803a4c:	3827568b          	shia	a3,(a4),2,0
    e8803a50:	fef51ce3          	bne	a0,a5,e8803a48 <e113toe.isra.8+0x48>
    e8803a54:	ee01                	bnez	a2,e8803a6c <e113toe.isra.8+0x6c>
    e8803a56:	00011223          	sh	zero,4(sp)
    e8803a5a:	85a2                	mv	a1,s0
    e8803a5c:	850a                	mv	a0,sp
    e8803a5e:	813ff0ef          	jal	ra,e8803270 <emovo.isra.6>
    e8803a62:	70a2                	ld	ra,40(sp)
    e8803a64:	7402                	ld	s0,32(sp)
    e8803a66:	6145                	addi	sp,sp,48
    e8803a68:	8082                	ret
    e8803a6a:	0001                	nop
    e8803a6c:	4785                	li	a5,1
    e8803a6e:	55fd                	li	a1,-1
    e8803a70:	850a                	mv	a0,sp
    e8803a72:	00f11223          	sh	a5,4(sp)
    e8803a76:	94aff0ef          	jal	ra,e8802bc0 <eshift.part.3>
    e8803a7a:	b7c5                	j	e8803a5a <e113toe.isra.8+0x5a>
    e8803a7c:	57fd                	li	a5,-1
    e8803a7e:	00f11023          	sh	a5,0(sp)
    e8803a82:	3806360b          	extu	a2,a2,14,0
    e8803a86:	67a1                	lui	a5,0x8
    e8803a88:	3c06360b          	extu	a2,a2,15,0
    e8803a8c:	17fd                	addi	a5,a5,-1
    e8803a8e:	faf614e3          	bne	a2,a5,e8803a36 <e113toe.isra.8+0x36>
    e8803a92:	87aa                	mv	a5,a0
    e8803a94:	00e50693          	addi	a3,a0,14
    e8803a98:	0007d703          	lhu	a4,0(a5) # 8000 <memcmp-0xe87f8000>
    e8803a9c:	0789                	addi	a5,a5,2
    e8803a9e:	e721                	bnez	a4,e8803ae6 <e113toe.isra.8+0xe6>
    e8803aa0:	fed79ce3          	bne	a5,a3,e8803a98 <e113toe.isra.8+0x98>
    e8803aa4:	01440713          	addi	a4,s0,20
    e8803aa8:	87a2                	mv	a5,s0
    e8803aaa:	0001                	nop
    e8803aac:	00000013          	nop
    e8803ab0:	3827d00b          	shia	zero,(a5),2,0
    e8803ab4:	fef71ee3          	bne	a4,a5,e8803ab0 <e113toe.isra.8+0xb0>
    e8803ab8:	01240713          	addi	a4,s0,18
    e8803abc:	87a2                	mv	a5,s0
    e8803abe:	0001                	nop
    e8803ac0:	3827d00b          	shia	zero,(a5),2,0
    e8803ac4:	fef71ee3          	bne	a4,a5,e8803ac0 <e113toe.isra.8+0xc0>
    e8803ac8:	01245783          	lhu	a5,18(s0)
    e8803acc:	6721                	lui	a4,0x8
    e8803ace:	177d                	addi	a4,a4,-1
    e8803ad0:	8fd9                	or	a5,a5,a4
    e8803ad2:	00f41923          	sh	a5,18(s0)
    e8803ad6:	00e51783          	lh	a5,14(a0)
    e8803ada:	f807d4e3          	bgez	a5,e8803a62 <e113toe.isra.8+0x62>
    e8803ade:	8522                	mv	a0,s0
    e8803ae0:	ea1fe0ef          	jal	ra,e8802980 <eneg>
    e8803ae4:	bfbd                	j	e8803a62 <e113toe.isra.8+0x62>
    e8803ae6:	01040713          	addi	a4,s0,16
    e8803aea:	87a2                	mv	a5,s0
    e8803aec:	00000013          	nop
    e8803af0:	3827d00b          	shia	zero,(a5),2,0
    e8803af4:	fef71ee3          	bne	a4,a5,e8803af0 <e113toe.isra.8+0xf0>
    e8803af8:	7fffc7b7          	lui	a5,0x7fffc
    e8803afc:	c81c                	sw	a5,16(s0)
    e8803afe:	b795                	j	e8803a62 <e113toe.isra.8+0x62>

00000000e8803b00 <_ldtoa_r>:
    e8803b00:	09100313          	li	t1,145
    e8803b04:	1302                	slli	t1,t1,0x20
    e8803b06:	db010113          	addi	sp,sp,-592
    e8803b0a:	137d                	addi	t1,t1,-1
    e8803b0c:	06053e03          	ld	t3,96(a0)
    e8803b10:	24813023          	sd	s0,576(sp)
    e8803b14:	21613823          	sd	s6,528(sp)
    e8803b18:	21813023          	sd	s8,512(sp)
    e8803b1c:	24113423          	sd	ra,584(sp)
    e8803b20:	22913c23          	sd	s1,568(sp)
    e8803b24:	23213823          	sd	s2,560(sp)
    e8803b28:	23313423          	sd	s3,552(sp)
    e8803b2c:	23413023          	sd	s4,544(sp)
    e8803b30:	21513c23          	sd	s5,536(sp)
    e8803b34:	21713423          	sd	s7,520(sp)
    e8803b38:	ffe6                	sd	s9,504(sp)
    e8803b3a:	fbea                	sd	s10,496(sp)
    e8803b3c:	f7ee                	sd	s11,488(sp)
    e8803b3e:	e0ae                	sd	a1,64(sp)
    e8803b40:	e4b2                	sd	a2,72(sp)
    e8803b42:	eb1a                	sd	t1,400(sp)
    e8803b44:	e43a                	sd	a4,8(sp)
    e8803b46:	e83e                	sd	a5,16(sp)
    e8803b48:	f446                	sd	a7,40(sp)
    e8803b4a:	8b2a                	mv	s6,a0
    e8803b4c:	8c36                	mv	s8,a3
    e8803b4e:	8442                	mv	s0,a6
    e8803b50:	000e0d63          	beqz	t3,e8803b6a <_ldtoa_r+0x6a>
    e8803b54:	5538                	lw	a4,104(a0)
    e8803b56:	4785                	li	a5,1
    e8803b58:	85f2                	mv	a1,t3
    e8803b5a:	00e797bb          	sllw	a5,a5,a4
    e8803b5e:	e2fe570b          	swd	a4,a5,(t3),1,3
    e8803b62:	1ae010ef          	jal	ra,e8804d10 <_Bfree>
    e8803b66:	060b3023          	sd	zero,96(s6)
    e8803b6a:	188c                	addi	a1,sp,112
    e8803b6c:	0088                	addi	a0,sp,64
    e8803b6e:	e93ff0ef          	jal	ra,e8803a00 <e113toe.isra.8>
    e8803b72:	1888                	addi	a0,sp,112
    e8803b74:	e3dfe0ef          	jal	ra,e88029b0 <eisneg>
    e8803b78:	00a03533          	snez	a0,a0
    e8803b7c:	c008                	sw	a0,0(s0)
    e8803b7e:	478d                	li	a5,3
    e8803b80:	78fc0863          	beq	s8,a5,e8804310 <_ldtoa_r+0x810>
    e8803b84:	47d1                	li	a5,20
    e8803b86:	e03e                	sd	a5,0(sp)
    e8803b88:	1c0c1ce3          	bnez	s8,e8804560 <_ldtoa_r+0xa60>
    e8803b8c:	19412683          	lw	a3,404(sp)
    e8803b90:	08215703          	lhu	a4,130(sp)
    e8803b94:	67a1                	lui	a5,0x8
    e8803b96:	f036                	sd	a3,32(sp)
    e8803b98:	17fd                	addi	a5,a5,-1
    e8803b9a:	3807370b          	extu	a4,a4,14,0
    e8803b9e:	00f71763          	bne	a4,a5,e8803bac <_ldtoa_r+0xac>
    e8803ba2:	1888                	addi	a0,sp,112
    e8803ba4:	dbdfe0ef          	jal	ra,e8802960 <eisnan.part.0>
    e8803ba8:	18051ee3          	bnez	a0,e8804544 <_ldtoa_r+0xa44>
    e8803bac:	09000793          	li	a5,144
    e8803bb0:	18f12a23          	sw	a5,404(sp)
    e8803bb4:	0918                	addi	a4,sp,144
    e8803bb6:	189c                	addi	a5,sp,112
    e8803bb8:	0150                	addi	a2,sp,132
    e8803bba:	0001                	nop
    e8803bbc:	00000013          	nop
    e8803bc0:	b827c68b          	lhuia	a3,(a5),2,0
    e8803bc4:	3827568b          	shia	a3,(a4),2,0
    e8803bc8:	fec79ce3          	bne	a5,a2,e8803bc0 <_ldtoa_r+0xc0>
    e8803bcc:	0a215603          	lhu	a2,162(sp)
    e8803bd0:	ec02                	sd	zero,24(sp)
    e8803bd2:	fcf6378b          	extu	a5,a2,63,15
    e8803bd6:	cb91                	beqz	a5,e8803bea <_ldtoa_r+0xea>
    e8803bd8:	3806360b          	extu	a2,a2,14,0
    e8803bdc:	67c1                	lui	a5,0x10
    e8803bde:	3c06360b          	extu	a2,a2,15,0
    e8803be2:	17fd                	addi	a5,a5,-1
    e8803be4:	0ac11123          	sh	a2,162(sp)
    e8803be8:	ec3e                	sd	a5,24(sp)
    e8803bea:	4681                	li	a3,0
    e8803bec:	191c                	addi	a5,sp,176
    e8803bee:	0009b717          	auipc	a4,0x9b
    e8803bf2:	39270713          	addi	a4,a4,914 # e889ef80 <eone>
    e8803bf6:	0c410d93          	addi	s11,sp,196
    e8803bfa:	a019                	j	e8803c00 <_ldtoa_r+0x100>
    e8803bfc:	00075683          	lhu	a3,0(a4)
    e8803c00:	3827d68b          	shia	a3,(a5),2,0
    e8803c04:	0709                	addi	a4,a4,2
    e8803c06:	ffb79be3          	bne	a5,s11,e8803bfc <_ldtoa_r+0xfc>
    e8803c0a:	12060363          	beqz	a2,e8803d30 <_ldtoa_r+0x230>
    e8803c0e:	67a1                	lui	a5,0x8
    e8803c10:	17fd                	addi	a5,a5,-1
    e8803c12:	16f60ce3          	beq	a2,a5,e880458a <_ldtoa_r+0xa8a>
    e8803c16:	0a011783          	lh	a5,160(sp)
    e8803c1a:	1c07dde3          	bgez	a5,e88045f4 <_ldtoa_r+0xaf4>
    e8803c1e:	090c                	addi	a1,sp,144
    e8803c20:	0009b517          	auipc	a0,0x9b
    e8803c24:	36050513          	addi	a0,a0,864 # e889ef80 <eone>
    e8803c28:	e79fe0ef          	jal	ra,e8802aa0 <ecmp>
    e8803c2c:	10050d63          	beqz	a0,e8803d46 <_ldtoa_r+0x246>
    e8803c30:	70054463          	bltz	a0,e8804338 <_ldtoa_r+0x838>
    e8803c34:	0a215783          	lhu	a5,162(sp)
    e8803c38:	22079de3          	bnez	a5,e8804672 <_ldtoa_r+0xb72>
    e8803c3c:	0a011783          	lh	a5,160(sp)
    e8803c40:	4481                	li	s1,0
    e8803c42:	19010993          	addi	s3,sp,400
    e8803c46:	0207c463          	bltz	a5,e8803c6e <_ldtoa_r+0x16e>
    e8803c4a:	0009b417          	auipc	s0,0x9b
    e8803c4e:	43e40413          	addi	s0,s0,1086 # e889f088 <etens+0xf0>
    e8803c52:	0001                	nop
    e8803c54:	00000013          	nop
    e8803c58:	0910                	addi	a2,sp,144
    e8803c5a:	86ce                	mv	a3,s3
    e8803c5c:	85b2                	mv	a1,a2
    e8803c5e:	8522                	mv	a0,s0
    e8803c60:	ea0ff0ef          	jal	ra,e8803300 <emul>
    e8803c64:	34fd                	addiw	s1,s1,-1
    e8803c66:	0a011783          	lh	a5,160(sp)
    e8803c6a:	fe07d7e3          	bgez	a5,e8803c58 <_ldtoa_r+0x158>
    e8803c6e:	1980                	addi	s0,sp,240
    e8803c70:	10810a13          	addi	s4,sp,264
    e8803c74:	86a2                	mv	a3,s0
    e8803c76:	091c                	addi	a5,sp,144
    e8803c78:	114c                	addi	a1,sp,164
    e8803c7a:	0001                	nop
    e8803c7c:	00000013          	nop
    e8803c80:	b827c60b          	lhuia	a2,(a5),2,0
    e8803c84:	3826d60b          	shia	a2,(a3),2,0
    e8803c88:	feb79ce3          	bne	a5,a1,e8803c80 <_ldtoa_r+0x180>
    e8803c8c:	4601                	li	a2,0
    e8803c8e:	191c                	addi	a5,sp,176
    e8803c90:	0009b697          	auipc	a3,0x9b
    e8803c94:	2f068693          	addi	a3,a3,752 # e889ef80 <eone>
    e8803c98:	a021                	j	e8803ca0 <_ldtoa_r+0x1a0>
    e8803c9a:	0001                	nop
    e8803c9c:	0006d603          	lhu	a2,0(a3)
    e8803ca0:	3827d60b          	shia	a2,(a5),2,0
    e8803ca4:	0689                	addi	a3,a3,2
    e8803ca6:	ffb79be3          	bne	a5,s11,e8803c9c <_ldtoa_r+0x19c>
    e8803caa:	7afd                	lui	s5,0xfffff
    e8803cac:	0009b917          	auipc	s2,0x9b
    e8803cb0:	2ec90913          	addi	s2,s2,748 # e889ef98 <etens>
    e8803cb4:	0009bd97          	auipc	s11,0x9b
    e8803cb8:	3ecd8d93          	addi	s11,s11,1004 # e889f0a0 <emtens>
    e8803cbc:	0009bc97          	auipc	s9,0x9b
    e8803cc0:	2c4c8c93          	addi	s9,s9,708 # e889ef80 <eone>
    e8803cc4:	0009bb97          	auipc	s7,0x9b
    e8803cc8:	3c4b8b93          	addi	s7,s7,964 # e889f088 <etens+0xf0>
    e8803ccc:	a021                	j	e8803cd4 <_ldtoa_r+0x1d4>
    e8803cce:	0001                	nop
    e8803cd0:	0dd1                	addi	s11,s11,20
    e8803cd2:	0951                	addi	s2,s2,20
    e8803cd4:	85a2                	mv	a1,s0
    e8803cd6:	8566                	mv	a0,s9
    e8803cd8:	dc9fe0ef          	jal	ra,e8802aa0 <ecmp>
    e8803cdc:	02a05e63          	blez	a0,e8803d18 <_ldtoa_r+0x218>
    e8803ce0:	85a2                	mv	a1,s0
    e8803ce2:	856e                	mv	a0,s11
    e8803ce4:	dbdfe0ef          	jal	ra,e8802aa0 <ecmp>
    e8803ce8:	02054063          	bltz	a0,e8803d08 <_ldtoa_r+0x208>
    e8803cec:	86ce                	mv	a3,s3
    e8803cee:	8622                	mv	a2,s0
    e8803cf0:	85a2                	mv	a1,s0
    e8803cf2:	854a                	mv	a0,s2
    e8803cf4:	e0cff0ef          	jal	ra,e8803300 <emul>
    e8803cf8:	009a84bb          	addw	s1,s5,s1
    e8803cfc:	1910                	addi	a2,sp,176
    e8803cfe:	86ce                	mv	a3,s3
    e8803d00:	85b2                	mv	a1,a2
    e8803d02:	854a                	mv	a0,s2
    e8803d04:	dfcff0ef          	jal	ra,e8803300 <emul>
    e8803d08:	01fad79b          	srliw	a5,s5,0x1f
    e8803d0c:	01578abb          	addw	s5,a5,s5
    e8803d10:	401ada9b          	sraiw	s5,s5,0x1
    e8803d14:	fb791ee3          	bne	s2,s7,e8803cd0 <_ldtoa_r+0x1d0>
    e8803d18:	1910                	addi	a2,sp,176
    e8803d1a:	86ce                	mv	a3,s3
    e8803d1c:	0009b597          	auipc	a1,0x9b
    e8803d20:	26458593          	addi	a1,a1,612 # e889ef80 <eone>
    e8803d24:	8532                	mv	a0,a2
    e8803d26:	8fbff0ef          	jal	ra,e8803620 <ediv>
    e8803d2a:	15010913          	addi	s2,sp,336
    e8803d2e:	a025                	j	e8803d56 <_ldtoa_r+0x256>
    e8803d30:	091c                	addi	a5,sp,144
    e8803d32:	0a210693          	addi	a3,sp,162
    e8803d36:	0001                	nop
    e8803d38:	0007d703          	lhu	a4,0(a5) # 8000 <memcmp-0xe87f8000>
    e8803d3c:	0789                	addi	a5,a5,2
    e8803d3e:	ee0710e3          	bnez	a4,e8803c1e <_ldtoa_r+0x11e>
    e8803d42:	fef69be3          	bne	a3,a5,e8803d38 <_ldtoa_r+0x238>
    e8803d46:	4481                	li	s1,0
    e8803d48:	15010913          	addi	s2,sp,336
    e8803d4c:	19010993          	addi	s3,sp,400
    e8803d50:	1980                	addi	s0,sp,240
    e8803d52:	10810a13          	addi	s4,sp,264
    e8803d56:	85a2                	mv	a1,s0
    e8803d58:	1908                	addi	a0,sp,176
    e8803d5a:	c87fe0ef          	jal	ra,e88029e0 <emovi>
    e8803d5e:	1914                	addi	a3,sp,176
    e8803d60:	87a2                	mv	a5,s0
    e8803d62:	0001                	nop
    e8803d64:	00000013          	nop
    e8803d68:	b827c60b          	lhuia	a2,(a5),2,0
    e8803d6c:	3826d60b          	shia	a2,(a3),2,0
    e8803d70:	ff479ce3          	bne	a5,s4,e8803d68 <_ldtoa_r+0x268>
    e8803d74:	85a2                	mv	a1,s0
    e8803d76:	0908                	addi	a0,sp,144
    e8803d78:	0c011423          	sh	zero,200(sp)
    e8803d7c:	c65fe0ef          	jal	ra,e88029e0 <emovi>
    e8803d80:	091c                	addi	a5,sp,144
    e8803d82:	0001                	nop
    e8803d84:	00000013          	nop
    e8803d88:	b824468b          	lhuia	a3,(s0),2,0
    e8803d8c:	3827d68b          	shia	a3,(a5),2,0
    e8803d90:	ff441ce3          	bne	s0,s4,e8803d88 <_ldtoa_r+0x288>
    e8803d94:	864e                	mv	a2,s3
    e8803d96:	090c                	addi	a1,sp,144
    e8803d98:	1908                	addi	a0,sp,176
    e8803d9a:	0a011423          	sh	zero,168(sp)
    e8803d9e:	bf2ff0ef          	jal	ra,e8803190 <eiremain>
    e8803da2:	1dc15d83          	lhu	s11,476(sp)
    e8803da6:	140d9c63          	bnez	s11,e8803efe <_ldtoa_r+0x3fe>
    e8803daa:	0009ba97          	auipc	s5,0x9b
    e8803dae:	1bea8a93          	addi	s5,s5,446 # e889ef68 <ezero>
    e8803db2:	0a810b93          	addi	s7,sp,168
    e8803db6:	09210413          	addi	s0,sp,146
    e8803dba:	0d210a13          	addi	s4,sp,210
    e8803dbe:	0001                	nop
    e8803dc0:	85d6                	mv	a1,s5
    e8803dc2:	0908                	addi	a0,sp,144
    e8803dc4:	cddfe0ef          	jal	ra,e8802aa0 <ecmp>
    e8803dc8:	12050b63          	beqz	a0,e8803efe <_ldtoa_r+0x3fe>
    e8803dcc:	4781                	li	a5,0
    e8803dce:	875e                	mv	a4,s7
    e8803dd0:	a819                	j	e8803de6 <_ldtoa_r+0x2e6>
    e8803dd2:	0001                	nop
    e8803dd4:	00c71023          	sh	a2,0(a4)
    e8803dd8:	0017979b          	slliw	a5,a5,0x1
    e8803ddc:	1779                	addi	a4,a4,-2
    e8803dde:	3c07b78b          	extu	a5,a5,15,0
    e8803de2:	02870b63          	beq	a4,s0,e8803e18 <_ldtoa_r+0x318>
    e8803de6:	00075583          	lhu	a1,0(a4)
    e8803dea:	fcf5b68b          	extu	a3,a1,63,15
    e8803dee:	0015961b          	slliw	a2,a1,0x1
    e8803df2:	c299                	beqz	a3,e8803df8 <_ldtoa_r+0x2f8>
    e8803df4:	0017e793          	ori	a5,a5,1
    e8803df8:	3c06360b          	extu	a2,a2,15,0
    e8803dfc:	0027f593          	andi	a1,a5,2
    e8803e00:	00166513          	ori	a0,a2,1
    e8803e04:	d9e1                	beqz	a1,e8803dd4 <_ldtoa_r+0x2d4>
    e8803e06:	00a71023          	sh	a0,0(a4)
    e8803e0a:	0017979b          	slliw	a5,a5,0x1
    e8803e0e:	1779                	addi	a4,a4,-2
    e8803e10:	3c07b78b          	extu	a5,a5,15,0
    e8803e14:	fc8719e3          	bne	a4,s0,e8803de6 <_ldtoa_r+0x2e6>
    e8803e18:	0998                	addi	a4,sp,208
    e8803e1a:	091c                	addi	a5,sp,144
    e8803e1c:	00000013          	nop
    e8803e20:	b827c60b          	lhuia	a2,(a5),2,0
    e8803e24:	3827560b          	shia	a2,(a4),2,0
    e8803e28:	ff779ce3          	bne	a5,s7,e8803e20 <_ldtoa_r+0x320>
    e8803e2c:	0e011423          	sh	zero,232(sp)
    e8803e30:	4781                	li	a5,0
    e8803e32:	11b8                	addi	a4,sp,232
    e8803e34:	a819                	j	e8803e4a <_ldtoa_r+0x34a>
    e8803e36:	0001                	nop
    e8803e38:	00c71023          	sh	a2,0(a4)
    e8803e3c:	0017979b          	slliw	a5,a5,0x1
    e8803e40:	1779                	addi	a4,a4,-2
    e8803e42:	3c07b78b          	extu	a5,a5,15,0
    e8803e46:	03470b63          	beq	a4,s4,e8803e7c <_ldtoa_r+0x37c>
    e8803e4a:	00075583          	lhu	a1,0(a4)
    e8803e4e:	fcf5b68b          	extu	a3,a1,63,15
    e8803e52:	0015961b          	slliw	a2,a1,0x1
    e8803e56:	c299                	beqz	a3,e8803e5c <_ldtoa_r+0x35c>
    e8803e58:	0017e793          	ori	a5,a5,1
    e8803e5c:	3c06360b          	extu	a2,a2,15,0
    e8803e60:	0027f593          	andi	a1,a5,2
    e8803e64:	00166513          	ori	a0,a2,1
    e8803e68:	d9e1                	beqz	a1,e8803e38 <_ldtoa_r+0x338>
    e8803e6a:	00a71023          	sh	a0,0(a4)
    e8803e6e:	0017979b          	slliw	a5,a5,0x1
    e8803e72:	1779                	addi	a4,a4,-2
    e8803e74:	3c07b78b          	extu	a5,a5,15,0
    e8803e78:	fd4719e3          	bne	a4,s4,e8803e4a <_ldtoa_r+0x34a>
    e8803e7c:	4781                	li	a5,0
    e8803e7e:	11b8                	addi	a4,sp,232
    e8803e80:	a819                	j	e8803e96 <_ldtoa_r+0x396>
    e8803e82:	0001                	nop
    e8803e84:	00c71023          	sh	a2,0(a4)
    e8803e88:	0017979b          	slliw	a5,a5,0x1
    e8803e8c:	1779                	addi	a4,a4,-2
    e8803e8e:	3c07b78b          	extu	a5,a5,15,0
    e8803e92:	03470b63          	beq	a4,s4,e8803ec8 <_ldtoa_r+0x3c8>
    e8803e96:	00075583          	lhu	a1,0(a4)
    e8803e9a:	fcf5b68b          	extu	a3,a1,63,15
    e8803e9e:	0015961b          	slliw	a2,a1,0x1
    e8803ea2:	c299                	beqz	a3,e8803ea8 <_ldtoa_r+0x3a8>
    e8803ea4:	0017e793          	ori	a5,a5,1
    e8803ea8:	3c06360b          	extu	a2,a2,15,0
    e8803eac:	0027f593          	andi	a1,a5,2
    e8803eb0:	00166513          	ori	a0,a2,1
    e8803eb4:	d9e1                	beqz	a1,e8803e84 <_ldtoa_r+0x384>
    e8803eb6:	00a71023          	sh	a0,0(a4)
    e8803eba:	0017979b          	slliw	a5,a5,0x1
    e8803ebe:	1779                	addi	a4,a4,-2
    e8803ec0:	3c07b78b          	extu	a5,a5,15,0
    e8803ec4:	fd4719e3          	bne	a4,s4,e8803e96 <_ldtoa_r+0x396>
    e8803ec8:	4781                	li	a5,0
    e8803eca:	85de                	mv	a1,s7
    e8803ecc:	11b0                	addi	a2,sp,232
    e8803ece:	0001                	nop
    e8803ed0:	0005d503          	lhu	a0,0(a1)
    e8803ed4:	b9e6470b          	lhuia	a4,(a2),-2,0
    e8803ed8:	972a                	add	a4,a4,a0
    e8803eda:	97ba                	add	a5,a5,a4
    e8803edc:	39e5d78b          	shia	a5,(a1),-2,0
    e8803ee0:	4107b78b          	extu	a5,a5,16,16
    e8803ee4:	ff4616e3          	bne	a2,s4,e8803ed0 <_ldtoa_r+0x3d0>
    e8803ee8:	864e                	mv	a2,s3
    e8803eea:	090c                	addi	a1,sp,144
    e8803eec:	1908                	addi	a0,sp,176
    e8803eee:	aa2ff0ef          	jal	ra,e8803190 <eiremain>
    e8803ef2:	34fd                	addiw	s1,s1,-1
    e8803ef4:	1dc15783          	lhu	a5,476(sp)
    e8803ef8:	ec0784e3          	beqz	a5,e8803dc0 <_ldtoa_r+0x2c0>
    e8803efc:	8dbe                	mv	s11,a5
    e8803efe:	66e2                	ld	a3,24(sp)
    e8803f00:	02000793          	li	a5,32
    e8803f04:	02d00713          	li	a4,45
    e8803f08:	42d7178b          	mvnez	a5,a4,a3
    e8803f0c:	14f10823          	sb	a5,336(sp)
    e8803f10:	478d                	li	a5,3
    e8803f12:	6402                	ld	s0,0(sp)
    e8803f14:	02fc0263          	beq	s8,a5,e8803f38 <_ldtoa_r+0x438>
    e8803f18:	47a9                	li	a5,10
    e8803f1a:	68fd8763          	beq	s11,a5,e88045a8 <_ldtoa_r+0xaa8>
    e8803f1e:	030d8d9b          	addiw	s11,s11,48
    e8803f22:	02e00793          	li	a5,46
    e8803f26:	15b108a3          	sb	s11,337(sp)
    e8803f2a:	14f10923          	sb	a5,338(sp)
    e8803f2e:	60044463          	bltz	s0,e8804536 <_ldtoa_r+0xa36>
    e8803f32:	15310d93          	addi	s11,sp,339
    e8803f36:	a02d                	j	e8803f60 <_ldtoa_r+0x460>
    e8803f38:	9c25                	addw	s0,s0,s1
    e8803f3a:	02a00793          	li	a5,42
    e8803f3e:	fc87dde3          	bge	a5,s0,e8803f18 <_ldtoa_r+0x418>
    e8803f42:	47a9                	li	a5,10
    e8803f44:	66fd8f63          	beq	s11,a5,e88045c2 <_ldtoa_r+0xac2>
    e8803f48:	030d8d9b          	addiw	s11,s11,48
    e8803f4c:	02e00793          	li	a5,46
    e8803f50:	15b108a3          	sb	s11,337(sp)
    e8803f54:	14f10923          	sb	a5,338(sp)
    e8803f58:	15310d93          	addi	s11,sp,339
    e8803f5c:	02a00413          	li	s0,42
    e8803f60:	4b81                	li	s7,0
    e8803f62:	0d010a93          	addi	s5,sp,208
    e8803f66:	0a810a13          	addi	s4,sp,168
    e8803f6a:	09210c93          	addi	s9,sp,146
    e8803f6e:	0d210d13          	addi	s10,sp,210
    e8803f72:	0001                	nop
    e8803f74:	00000013          	nop
    e8803f78:	4781                	li	a5,0
    e8803f7a:	8752                	mv	a4,s4
    e8803f7c:	a819                	j	e8803f92 <_ldtoa_r+0x492>
    e8803f7e:	0001                	nop
    e8803f80:	00c71023          	sh	a2,0(a4)
    e8803f84:	0017979b          	slliw	a5,a5,0x1
    e8803f88:	1779                	addi	a4,a4,-2
    e8803f8a:	3c07b78b          	extu	a5,a5,15,0
    e8803f8e:	03970b63          	beq	a4,s9,e8803fc4 <_ldtoa_r+0x4c4>
    e8803f92:	00075583          	lhu	a1,0(a4)
    e8803f96:	fcf5b68b          	extu	a3,a1,63,15
    e8803f9a:	0015961b          	slliw	a2,a1,0x1
    e8803f9e:	c299                	beqz	a3,e8803fa4 <_ldtoa_r+0x4a4>
    e8803fa0:	0017e793          	ori	a5,a5,1
    e8803fa4:	3c06360b          	extu	a2,a2,15,0
    e8803fa8:	0027f593          	andi	a1,a5,2
    e8803fac:	00166513          	ori	a0,a2,1
    e8803fb0:	d9e1                	beqz	a1,e8803f80 <_ldtoa_r+0x480>
    e8803fb2:	00a71023          	sh	a0,0(a4)
    e8803fb6:	0017979b          	slliw	a5,a5,0x1
    e8803fba:	1779                	addi	a4,a4,-2
    e8803fbc:	3c07b78b          	extu	a5,a5,15,0
    e8803fc0:	fd9719e3          	bne	a4,s9,e8803f92 <_ldtoa_r+0x492>
    e8803fc4:	8756                	mv	a4,s5
    e8803fc6:	091c                	addi	a5,sp,144
    e8803fc8:	b827c60b          	lhuia	a2,(a5),2,0
    e8803fcc:	3827560b          	shia	a2,(a4),2,0
    e8803fd0:	ff479ce3          	bne	a5,s4,e8803fc8 <_ldtoa_r+0x4c8>
    e8803fd4:	0e011423          	sh	zero,232(sp)
    e8803fd8:	4781                	li	a5,0
    e8803fda:	11b8                	addi	a4,sp,232
    e8803fdc:	a819                	j	e8803ff2 <_ldtoa_r+0x4f2>
    e8803fde:	0001                	nop
    e8803fe0:	00c71023          	sh	a2,0(a4)
    e8803fe4:	0017979b          	slliw	a5,a5,0x1
    e8803fe8:	1779                	addi	a4,a4,-2
    e8803fea:	3c07b78b          	extu	a5,a5,15,0
    e8803fee:	03a70b63          	beq	a4,s10,e8804024 <_ldtoa_r+0x524>
    e8803ff2:	00075583          	lhu	a1,0(a4)
    e8803ff6:	fcf5b68b          	extu	a3,a1,63,15
    e8803ffa:	0015961b          	slliw	a2,a1,0x1
    e8803ffe:	c299                	beqz	a3,e8804004 <_ldtoa_r+0x504>
    e8804000:	0017e793          	ori	a5,a5,1
    e8804004:	3c06360b          	extu	a2,a2,15,0
    e8804008:	0027f593          	andi	a1,a5,2
    e880400c:	00166513          	ori	a0,a2,1
    e8804010:	d9e1                	beqz	a1,e8803fe0 <_ldtoa_r+0x4e0>
    e8804012:	00a71023          	sh	a0,0(a4)
    e8804016:	0017979b          	slliw	a5,a5,0x1
    e880401a:	1779                	addi	a4,a4,-2
    e880401c:	3c07b78b          	extu	a5,a5,15,0
    e8804020:	fda719e3          	bne	a4,s10,e8803ff2 <_ldtoa_r+0x4f2>
    e8804024:	4781                	li	a5,0
    e8804026:	11b8                	addi	a4,sp,232
    e8804028:	a819                	j	e880403e <_ldtoa_r+0x53e>
    e880402a:	0001                	nop
    e880402c:	00c71023          	sh	a2,0(a4)
    e8804030:	0017979b          	slliw	a5,a5,0x1
    e8804034:	1779                	addi	a4,a4,-2
    e8804036:	3c07b78b          	extu	a5,a5,15,0
    e880403a:	03a70b63          	beq	a4,s10,e8804070 <_ldtoa_r+0x570>
    e880403e:	00075583          	lhu	a1,0(a4)
    e8804042:	fcf5b68b          	extu	a3,a1,63,15
    e8804046:	0015961b          	slliw	a2,a1,0x1
    e880404a:	c299                	beqz	a3,e8804050 <_ldtoa_r+0x550>
    e880404c:	0017e793          	ori	a5,a5,1
    e8804050:	3c06360b          	extu	a2,a2,15,0
    e8804054:	0027f593          	andi	a1,a5,2
    e8804058:	00166513          	ori	a0,a2,1
    e880405c:	d9e1                	beqz	a1,e880402c <_ldtoa_r+0x52c>
    e880405e:	00a71023          	sh	a0,0(a4)
    e8804062:	0017979b          	slliw	a5,a5,0x1
    e8804066:	1779                	addi	a4,a4,-2
    e8804068:	3c07b78b          	extu	a5,a5,15,0
    e880406c:	fda719e3          	bne	a4,s10,e880403e <_ldtoa_r+0x53e>
    e8804070:	4781                	li	a5,0
    e8804072:	85d2                	mv	a1,s4
    e8804074:	11b0                	addi	a2,sp,232
    e8804076:	0001                	nop
    e8804078:	0005d503          	lhu	a0,0(a1)
    e880407c:	b9e6470b          	lhuia	a4,(a2),-2,0
    e8804080:	972a                	add	a4,a4,a0
    e8804082:	97ba                	add	a5,a5,a4
    e8804084:	39e5d78b          	shia	a5,(a1),-2,0
    e8804088:	4107b78b          	extu	a5,a5,16,16
    e880408c:	ffa616e3          	bne	a2,s10,e8804078 <_ldtoa_r+0x578>
    e8804090:	864e                	mv	a2,s3
    e8804092:	090c                	addi	a1,sp,144
    e8804094:	1908                	addi	a0,sp,176
    e8804096:	8faff0ef          	jal	ra,e8803190 <eiremain>
    e880409a:	1dc15783          	lhu	a5,476(sp)
    e880409e:	0307871b          	addiw	a4,a5,48
    e88040a2:	017dd70b          	srb	a4,s11,s7,0
    e88040a6:	0b85                	addi	s7,s7,1
    e88040a8:	000b871b          	sext.w	a4,s7
    e88040ac:	ece456e3          	bge	s0,a4,e8803f78 <_ldtoa_r+0x478>
    e88040b0:	00140993          	addi	s3,s0,1
    e88040b4:	99ee                	add	s3,s3,s11
    e88040b6:	9da2                	add	s11,s11,s0
    e88040b8:	4711                	li	a4,4
    e88040ba:	06f75b63          	bge	a4,a5,e8804130 <_ldtoa_r+0x630>
    e88040be:	4715                	li	a4,5
    e88040c0:	56e78263          	beq	a5,a4,e8804624 <_ldtoa_r+0xb24>
    e88040c4:	ffe9c783          	lbu	a5,-2(s3)
    e88040c8:	ffe98713          	addi	a4,s3,-2
    e88040cc:	07f7f793          	andi	a5,a5,127
    e88040d0:	0007881b          	sext.w	a6,a5
    e88040d4:	50044a63          	bltz	s0,e88045e8 <_ldtoa_r+0xae8>
    e88040d8:	02e00693          	li	a3,46
    e88040dc:	02d78e63          	beq	a5,a3,e8804118 <_ldtoa_r+0x618>
    e88040e0:	2785                	addiw	a5,a5,1
    e88040e2:	00f70023          	sb	a5,0(a4)
    e88040e6:	03800793          	li	a5,56
    e88040ea:	03000593          	li	a1,48
    e88040ee:	02e00613          	li	a2,46
    e88040f2:	03800513          	li	a0,56
    e88040f6:	0107c763          	blt	a5,a6,e8804104 <_ldtoa_r+0x604>
    e88040fa:	a81d                	j	e8804130 <_ldtoa_r+0x630>
    e88040fc:	00d70023          	sb	a3,0(a4)
    e8804100:	02f57863          	bgeu	a0,a5,e8804130 <_ldtoa_r+0x630>
    e8804104:	00b70023          	sb	a1,0(a4)
    e8804108:	89f7478b          	lbuib	a5,(a4),-1,0
    e880410c:	07f7f793          	andi	a5,a5,127
    e8804110:	0017869b          	addiw	a3,a5,1
    e8804114:	fec794e3          	bne	a5,a2,e88040fc <_ldtoa_r+0x5fc>
    e8804118:	fff74783          	lbu	a5,-1(a4)
    e880411c:	03800693          	li	a3,56
    e8804120:	54f6f563          	bgeu	a3,a5,e880466a <_ldtoa_r+0xb6a>
    e8804124:	03100793          	li	a5,49
    e8804128:	2485                	addiw	s1,s1,1
    e880412a:	fef70fa3          	sb	a5,-1(a4)
    e880412e:	0001                	nop
    e8804130:	8626                	mv	a2,s1
    e8804132:	000d0597          	auipc	a1,0xd0
    e8804136:	cf658593          	addi	a1,a1,-778 # e88d3e28 <dhcp_discover_request_options+0x620>
    e880413a:	856e                	mv	a0,s11
    e880413c:	015010ef          	jal	ra,e8805950 <sprintf>
    e8804140:	7782                	ld	a5,32(sp)
    e8804142:	08215703          	lhu	a4,130(sp)
    e8804146:	1a912023          	sw	s1,416(sp)
    e880414a:	18f12a23          	sw	a5,404(sp)
    e880414e:	67a1                	lui	a5,0x8
    e8804150:	3807370b          	extu	a4,a4,14,0
    e8804154:	17fd                	addi	a5,a5,-1
    e8804156:	00f71c63          	bne	a4,a5,e880416e <_ldtoa_r+0x66e>
    e880415a:	1888                	addi	a0,sp,112
    e880415c:	a45fe0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e8804160:	1c051663          	bnez	a0,e880432c <_ldtoa_r+0x82c>
    e8804164:	1888                	addi	a0,sp,112
    e8804166:	ffafe0ef          	jal	ra,e8802960 <eisnan.part.0>
    e880416a:	1c051163          	bnez	a0,e880432c <_ldtoa_r+0x82c>
    e880416e:	66c2                	ld	a3,16(sp)
    e8804170:	0014871b          	addiw	a4,s1,1
    e8804174:	15014783          	lbu	a5,336(sp)
    e8804178:	c298                	sw	a4,0(a3)
    e880417a:	6c078c63          	beqz	a5,e8804852 <_ldtoa_r+0xd52>
    e880417e:	02e00713          	li	a4,46
    e8804182:	04e78763          	beq	a5,a4,e88041d0 <_ldtoa_r+0x6d0>
    e8804186:	87ca                	mv	a5,s2
    e8804188:	02e00693          	li	a3,46
    e880418c:	a021                	j	e8804194 <_ldtoa_r+0x694>
    e880418e:	0001                	nop
    e8804190:	04d70463          	beq	a4,a3,e88041d8 <_ldtoa_r+0x6d8>
    e8804194:	8817c70b          	lbuib	a4,(a5),1,0
    e8804198:	ff65                	bnez	a4,e8804190 <_ldtoa_r+0x690>
    e880419a:	04500693          	li	a3,69
    e880419e:	00f96563          	bltu	s2,a5,e88041a8 <_ldtoa_r+0x6a8>
    e88041a2:	a039                	j	e88041b0 <_ldtoa_r+0x6b0>
    e88041a4:	01278663          	beq	a5,s2,e88041b0 <_ldtoa_r+0x6b0>
    e88041a8:	89f7c70b          	lbuib	a4,(a5),-1,0
    e88041ac:	fed71ce3          	bne	a4,a3,e88041a4 <_ldtoa_r+0x6a4>
    e88041b0:	00078023          	sb	zero,0(a5) # 8000 <memcmp-0xe87f8000>
    e88041b4:	87ca                	mv	a5,s2
    e88041b6:	02000693          	li	a3,32
    e88041ba:	02d00613          	li	a2,45
    e88041be:	0001                	nop
    e88041c0:	0007c703          	lbu	a4,0(a5)
    e88041c4:	00d70463          	beq	a4,a3,e88041cc <_ldtoa_r+0x6cc>
    e88041c8:	02c71463          	bne	a4,a2,e88041f0 <_ldtoa_r+0x6f0>
    e88041cc:	0785                	addi	a5,a5,1
    e88041ce:	bfcd                	j	e88041c0 <_ldtoa_r+0x6c0>
    e88041d0:	87ca                	mv	a5,s2
    e88041d2:	0001                	nop
    e88041d4:	00000013          	nop
    e88041d8:	0017c703          	lbu	a4,1(a5)
    e88041dc:	1817d70b          	sbia	a4,(a5),1,0
    e88041e0:	df4d                	beqz	a4,e880419a <_ldtoa_r+0x69a>
    e88041e2:	0017c703          	lbu	a4,1(a5)
    e88041e6:	1817d70b          	sbia	a4,(a5),1,0
    e88041ea:	f77d                	bnez	a4,e88041d8 <_ldtoa_r+0x6d8>
    e88041ec:	b77d                	j	e880419a <_ldtoa_r+0x69a>
    e88041ee:	0001                	nop
    e88041f0:	844a                	mv	s0,s2
    e88041f2:	a021                	j	e88041fa <_ldtoa_r+0x6fa>
    e88041f4:	0007c703          	lbu	a4,0(a5)
    e88041f8:	8436                	mv	s0,a3
    e88041fa:	86a2                	mv	a3,s0
    e88041fc:	1816d70b          	sbia	a4,(a3),1,0
    e8804200:	0785                	addi	a5,a5,1
    e8804202:	fb6d                	bnez	a4,e88041f4 <_ldtoa_r+0x6f4>
    e8804204:	4789                	li	a5,2
    e8804206:	fff44703          	lbu	a4,-1(s0)
    e880420a:	0efc0963          	beq	s8,a5,e88042fc <_ldtoa_r+0x7fc>
    e880420e:	6782                	ld	a5,0(sp)
    e8804210:	0097a6b3          	slt	a3,a5,s1
    e8804214:	42d4978b          	mvnez	a5,s1,a3
    e8804218:	0007869b          	sext.w	a3,a5
    e880421c:	03000793          	li	a5,48
    e8804220:	02f71463          	bne	a4,a5,e8804248 <_ldtoa_r+0x748>
    e8804224:	412407b3          	sub	a5,s0,s2
    e8804228:	02f6d063          	bge	a3,a5,e8804248 <_ldtoa_r+0x748>
    e880422c:	03000613          	li	a2,48
    e8804230:	a021                	j	e8804238 <_ldtoa_r+0x738>
    e8804232:	0001                	nop
    e8804234:	00e6da63          	bge	a3,a4,e8804248 <_ldtoa_r+0x748>
    e8804238:	09f4500b          	sbib	zero,(s0),-1,0
    e880423c:	fff44783          	lbu	a5,-1(s0)
    e8804240:	41240733          	sub	a4,s0,s2
    e8804244:	fec788e3          	beq	a5,a2,e8804234 <_ldtoa_r+0x734>
    e8804248:	478d                	li	a5,3
    e880424a:	08fc0563          	beq	s8,a5,e88042d4 <_ldtoa_r+0x7d4>
    e880424e:	67a2                	ld	a5,8(sp)
    e8804250:	060b2423          	sw	zero,104(s6)
    e8804254:	00978a1b          	addiw	s4,a5,9
    e8804258:	47fd                	li	a5,31
    e880425a:	0947fe63          	bgeu	a5,s4,e88042f6 <_ldtoa_r+0x7f6>
    e880425e:	4705                	li	a4,1
    e8804260:	4791                	li	a5,4
    e8804262:	0001                	nop
    e8804264:	00000013          	nop
    e8804268:	0017979b          	slliw	a5,a5,0x1
    e880426c:	01c78693          	addi	a3,a5,28
    e8804270:	0007059b          	sext.w	a1,a4
    e8804274:	2705                	addiw	a4,a4,1
    e8804276:	feda79e3          	bgeu	s4,a3,e8804268 <_ldtoa_r+0x768>
    e880427a:	06bb2423          	sw	a1,104(s6)
    e880427e:	855a                	mv	a0,s6
    e8804280:	221000ef          	jal	ra,e8804ca0 <_Balloc>
    e8804284:	06ab3023          	sd	a0,96(s6)
    e8804288:	85ca                	mv	a1,s2
    e880428a:	84aa                	mv	s1,a0
    e880428c:	82cfc0ef          	jal	ra,e88002b8 <strcpy>
    e8804290:	77a2                	ld	a5,40(sp)
    e8804292:	c789                	beqz	a5,e880429c <_ldtoa_r+0x79c>
    e8804294:	41240433          	sub	s0,s0,s2
    e8804298:	9426                	add	s0,s0,s1
    e880429a:	e380                	sd	s0,0(a5)
    e880429c:	24813083          	ld	ra,584(sp)
    e88042a0:	24013403          	ld	s0,576(sp)
    e88042a4:	8526                	mv	a0,s1
    e88042a6:	23013903          	ld	s2,560(sp)
    e88042aa:	23813483          	ld	s1,568(sp)
    e88042ae:	22813983          	ld	s3,552(sp)
    e88042b2:	22013a03          	ld	s4,544(sp)
    e88042b6:	21813a83          	ld	s5,536(sp)
    e88042ba:	21013b03          	ld	s6,528(sp)
    e88042be:	20813b83          	ld	s7,520(sp)
    e88042c2:	20013c03          	ld	s8,512(sp)
    e88042c6:	7cfe                	ld	s9,504(sp)
    e88042c8:	7d5e                	ld	s10,496(sp)
    e88042ca:	7dbe                	ld	s11,488(sp)
    e88042cc:	25010113          	addi	sp,sp,592
    e88042d0:	8082                	ret
    e88042d2:	0001                	nop
    e88042d4:	6782                	ld	a5,0(sp)
    e88042d6:	9cbd                	addw	s1,s1,a5
    e88042d8:	2804c863          	bltz	s1,e8804568 <_ldtoa_r+0xa68>
    e88042dc:	67c2                	ld	a5,16(sp)
    e88042de:	6722                	ld	a4,8(sp)
    e88042e0:	439c                	lw	a5,0(a5)
    e88042e2:	9fb9                	addw	a5,a5,a4
    e88042e4:	e43e                	sd	a5,8(sp)
    e88042e6:	67a2                	ld	a5,8(sp)
    e88042e8:	060b2423          	sw	zero,104(s6)
    e88042ec:	00378a1b          	addiw	s4,a5,3
    e88042f0:	47fd                	li	a5,31
    e88042f2:	f747e6e3          	bltu	a5,s4,e880425e <_ldtoa_r+0x75e>
    e88042f6:	4581                	li	a1,0
    e88042f8:	b759                	j	e880427e <_ldtoa_r+0x77e>
    e88042fa:	0001                	nop
    e88042fc:	03000793          	li	a5,48
    e8804300:	f4f717e3          	bne	a4,a5,e880424e <_ldtoa_r+0x74e>
    e8804304:	412407b3          	sub	a5,s0,s2
    e8804308:	4685                	li	a3,1
    e880430a:	f2f6c1e3          	blt	a3,a5,e880422c <_ldtoa_r+0x72c>
    e880430e:	b781                	j	e880424e <_ldtoa_r+0x74e>
    e8804310:	67a2                	ld	a5,8(sp)
    e8804312:	02a00b93          	li	s7,42
    e8804316:	00fbabb3          	slt	s7,s7,a5
    e880431a:	02a00713          	li	a4,42
    e880431e:	4177970b          	mveqz	a4,a5,s7
    e8804322:	0007079b          	sext.w	a5,a4
    e8804326:	e03e                	sd	a5,0(sp)
    e8804328:	865ff06f          	j	e8803b8c <_ldtoa_r+0x8c>
    e880432c:	6742                	ld	a4,16(sp)
    e880432e:	6789                	lui	a5,0x2
    e8804330:	70f7879b          	addiw	a5,a5,1807
    e8804334:	c31c                	sw	a5,0(a4)
    e8804336:	bdbd                	j	e88041b4 <_ldtoa_r+0x6b4>
    e8804338:	0d010a93          	addi	s5,sp,208
    e880433c:	8756                	mv	a4,s5
    e880433e:	091c                	addi	a5,sp,144
    e8804340:	114c                	addi	a1,sp,164
    e8804342:	0001                	nop
    e8804344:	00000013          	nop
    e8804348:	b827c68b          	lhuia	a3,(a5),2,0
    e880434c:	3827568b          	shia	a3,(a4),2,0
    e8804350:	feb79ce3          	bne	a5,a1,e8804348 <_ldtoa_r+0x848>
    e8804354:	6791                	lui	a5,0x4
    e8804356:	08e7879b          	addiw	a5,a5,142
    e880435a:	0ef11123          	sh	a5,226(sp)
    e880435e:	77f1                	lui	a5,0xffffc
    e8804360:	00278d1b          	addiw	s10,a5,2
    e8804364:	67a1                	lui	a5,0x8
    e8804366:	17fd                	addi	a5,a5,-1
    e8804368:	4bc1                	li	s7,16
    e880436a:	4481                	li	s1,0
    e880436c:	0009ba17          	auipc	s4,0x9b
    e8804370:	ccca0a13          	addi	s4,s4,-820 # e889f038 <etens+0xa0>
    e8804374:	15010913          	addi	s2,sp,336
    e8804378:	19010993          	addi	s3,sp,400
    e880437c:	1980                	addi	s0,sp,240
    e880437e:	4ca9                	li	s9,10
    e8804380:	f83e                	sd	a5,48(sp)
    e8804382:	0001                	nop
    e8804384:	00000013          	nop
    e8804388:	86ce                	mv	a3,s3
    e880438a:	1910                	addi	a2,sp,176
    e880438c:	85d6                	mv	a1,s5
    e880438e:	8552                	mv	a0,s4
    e8804390:	a90ff0ef          	jal	ra,e8803620 <ediv>
    e8804394:	08b8                	addi	a4,sp,88
    e8804396:	191c                	addi	a5,sp,176
    e8804398:	b827c68b          	lhuia	a3,(a5),2,0
    e880439c:	3827568b          	shia	a3,(a4),2,0
    e88043a0:	ffb79ce3          	bne	a5,s11,e8804398 <_ldtoa_r+0x898>
    e88043a4:	06a15503          	lhu	a0,106(sp)
    e88043a8:	38053e8b          	extu	t4,a0,14,0
    e88043ac:	01dd07bb          	addw	a5,s10,t4
    e88043b0:	8ebe                	mv	t4,a5
    e88043b2:	1cf05363          	blez	a5,e8804578 <_ldtoa_r+0xa78>
    e88043b6:	09000593          	li	a1,144
    e88043ba:	40f58f3b          	subw	t5,a1,a5
    e88043be:	85fa                	mv	a1,t5
    e88043c0:	8722                	mv	a4,s0
    e88043c2:	08bc                	addi	a5,sp,88
    e88043c4:	10f0                	addi	a2,sp,108
    e88043c6:	0001                	nop
    e88043c8:	b827c68b          	lhuia	a3,(a5),2,0
    e88043cc:	3827568b          	shia	a3,(a4),2,0
    e88043d0:	fec79ce3          	bne	a5,a2,e88043c8 <_ldtoa_r+0x8c8>
    e88043d4:	05e05b63          	blez	t5,e880442a <_ldtoa_r+0x92a>
    e88043d8:	47bd                	li	a5,15
    e88043da:	8722                	mv	a4,s0
    e88043dc:	03e7d663          	bge	a5,t5,e8804408 <_ldtoa_r+0x908>
    e88043e0:	35c1                	addiw	a1,a1,-16
    e88043e2:	0045d71b          	srliw	a4,a1,0x4
    e88043e6:	85ba                	mv	a1,a4
    e88043e8:	0705                	addi	a4,a4,1
    e88043ea:	02e4170b          	addsl	a4,s0,a4,1
    e88043ee:	87a2                	mv	a5,s0
    e88043f0:	3827d00b          	shia	zero,(a5),2,0
    e88043f4:	fee79ee3          	bne	a5,a4,e88043f0 <_ldtoa_r+0x8f0>
    e88043f8:	08000f13          	li	t5,128
    e88043fc:	41df0ebb          	subw	t4,t5,t4
    e8804400:	0045959b          	slliw	a1,a1,0x4
    e8804404:	40be8f3b          	subw	t5,t4,a1
    e8804408:	0009b597          	auipc	a1,0x9b
    e880440c:	b6058593          	addi	a1,a1,-1184 # e889ef68 <ezero>
    e8804410:	03e5958b          	addsl	a1,a1,t5,1
    e8804414:	00075783          	lhu	a5,0(a4)
    e8804418:	2405d683          	lhu	a3,576(a1)
    e880441c:	8ff5                	and	a5,a5,a3
    e880441e:	00f71023          	sh	a5,0(a4)
    e8804422:	fcf5378b          	extu	a5,a0,63,15
    e8804426:	0e079563          	bnez	a5,e8804510 <_ldtoa_r+0xa10>
    e880442a:	4705                	li	a4,1
    e880442c:	00000013          	nop
    e8804430:	00171793          	slli	a5,a4,0x1
    e8804434:	1914                	addi	a3,sp,176
    e8804436:	96be                	add	a3,a3,a5
    e8804438:	97a2                	add	a5,a5,s0
    e880443a:	ffe6d683          	lhu	a3,-2(a3)
    e880443e:	ffe7d783          	lhu	a5,-2(a5) # 7ffe <memcmp-0xe87f8002>
    e8804442:	0705                	addi	a4,a4,1
    e8804444:	00f69e63          	bne	a3,a5,e8804460 <_ldtoa_r+0x960>
    e8804448:	ff9714e3          	bne	a4,s9,e8804430 <_ldtoa_r+0x930>
    e880444c:	8756                	mv	a4,s5
    e880444e:	191c                	addi	a5,sp,176
    e8804450:	b827c68b          	lhuia	a3,(a5),2,0
    e8804454:	3827568b          	shia	a3,(a4),2,0
    e8804458:	ffb79ce3          	bne	a5,s11,e8804450 <_ldtoa_r+0x950>
    e880445c:	009b84bb          	addw	s1,s7,s1
    e8804460:	0a51                	addi	s4,s4,20
    e8804462:	0009b797          	auipc	a5,0x9b
    e8804466:	c3a78793          	addi	a5,a5,-966 # e889f09c <etens+0x104>
    e880446a:	001bdb93          	srli	s7,s7,0x1
    e880446e:	f0fa1de3          	bne	s4,a5,e8804388 <_ldtoa_r+0x888>
    e8804472:	0e215783          	lhu	a5,226(sp)
    e8804476:	0a215703          	lhu	a4,162(sp)
    e880447a:	11d0                	addi	a2,sp,228
    e880447c:	9fb9                	addw	a5,a5,a4
    e880447e:	7771                	lui	a4,0xffffc
    e8804480:	f727071b          	addiw	a4,a4,-142
    e8804484:	9fb9                	addw	a5,a5,a4
    e8804486:	0ef11123          	sh	a5,226(sp)
    e880448a:	0918                	addi	a4,sp,144
    e880448c:	87d6                	mv	a5,s5
    e880448e:	0001                	nop
    e8804490:	b827c68b          	lhuia	a3,(a5),2,0
    e8804494:	3827568b          	shia	a3,(a4),2,0
    e8804498:	fec79ce3          	bne	a5,a2,e8804490 <_ldtoa_r+0x990>
    e880449c:	4681                	li	a3,0
    e880449e:	191c                	addi	a5,sp,176
    e88044a0:	0009b717          	auipc	a4,0x9b
    e88044a4:	ae070713          	addi	a4,a4,-1312 # e889ef80 <eone>
    e88044a8:	a021                	j	e88044b0 <_ldtoa_r+0x9b0>
    e88044aa:	0001                	nop
    e88044ac:	00075683          	lhu	a3,0(a4)
    e88044b0:	3827d68b          	shia	a3,(a5),2,0
    e88044b4:	0709                	addi	a4,a4,2
    e88044b6:	ffb79be3          	bne	a5,s11,e88044ac <_ldtoa_r+0x9ac>
    e88044ba:	6b85                	lui	s7,0x1
    e88044bc:	0009bd97          	auipc	s11,0x9b
    e88044c0:	adcd8d93          	addi	s11,s11,-1316 # e889ef98 <etens>
    e88044c4:	0009ba17          	auipc	s4,0x9b
    e88044c8:	bc4a0a13          	addi	s4,s4,-1084 # e889f088 <etens+0xf0>
    e88044cc:	a039                	j	e88044da <_ldtoa_r+0x9da>
    e88044ce:	0001                	nop
    e88044d0:	001bdb93          	srli	s7,s7,0x1
    e88044d4:	114d8663          	beq	s11,s4,e88045e0 <_ldtoa_r+0xae0>
    e88044d8:	0dd1                	addi	s11,s11,20
    e88044da:	85d6                	mv	a1,s5
    e88044dc:	8552                	mv	a0,s4
    e88044de:	dc2fe0ef          	jal	ra,e8802aa0 <ecmp>
    e88044e2:	0ea04f63          	bgtz	a0,e88045e0 <_ldtoa_r+0xae0>
    e88044e6:	85d6                	mv	a1,s5
    e88044e8:	856e                	mv	a0,s11
    e88044ea:	db6fe0ef          	jal	ra,e8802aa0 <ecmp>
    e88044ee:	fea041e3          	bgtz	a0,e88044d0 <_ldtoa_r+0x9d0>
    e88044f2:	86ce                	mv	a3,s3
    e88044f4:	8656                	mv	a2,s5
    e88044f6:	85d6                	mv	a1,s5
    e88044f8:	856e                	mv	a0,s11
    e88044fa:	926ff0ef          	jal	ra,e8803620 <ediv>
    e88044fe:	009b84bb          	addw	s1,s7,s1
    e8804502:	1910                	addi	a2,sp,176
    e8804504:	86ce                	mv	a3,s3
    e8804506:	85b2                	mv	a1,a2
    e8804508:	856e                	mv	a0,s11
    e880450a:	df7fe0ef          	jal	ra,e8803300 <emul>
    e880450e:	b7c9                	j	e88044d0 <_ldtoa_r+0x9d0>
    e8804510:	4705                	li	a4,1
    e8804512:	0001                	nop
    e8804514:	00000013          	nop
    e8804518:	00171793          	slli	a5,a4,0x1
    e880451c:	08b4                	addi	a3,sp,88
    e880451e:	96be                	add	a3,a3,a5
    e8804520:	97a2                	add	a5,a5,s0
    e8804522:	ffe6d683          	lhu	a3,-2(a3)
    e8804526:	ffe7d783          	lhu	a5,-2(a5)
    e880452a:	0705                	addi	a4,a4,1
    e880452c:	20f69d63          	bne	a3,a5,e8804746 <_ldtoa_r+0xc46>
    e8804530:	ff9714e3          	bne	a4,s9,e8804518 <_ldtoa_r+0xa18>
    e8804534:	bddd                	j	e880442a <_ldtoa_r+0x92a>
    e8804536:	1dc15783          	lhu	a5,476(sp)
    e880453a:	15210d93          	addi	s11,sp,338
    e880453e:	15310993          	addi	s3,sp,339
    e8804542:	be9d                	j	e88040b8 <_ldtoa_r+0x5b8>
    e8804544:	15010913          	addi	s2,sp,336
    e8804548:	000d0597          	auipc	a1,0xd0
    e880454c:	8b058593          	addi	a1,a1,-1872 # e88d3df8 <dhcp_discover_request_options+0x5f0>
    e8804550:	854a                	mv	a0,s2
    e8804552:	6489                	lui	s1,0x2
    e8804554:	3fc010ef          	jal	ra,e8805950 <sprintf>
    e8804558:	70f48493          	addi	s1,s1,1807 # 270f <memcmp-0xe87fd8f1>
    e880455c:	b6d5                	j	e8804140 <_ldtoa_r+0x640>
    e880455e:	0001                	nop
    e8804560:	67a2                	ld	a5,8(sp)
    e8804562:	37fd                	addiw	a5,a5,-1
    e8804564:	b37d                	j	e8804312 <_ldtoa_r+0x812>
    e8804566:	0001                	nop
    e8804568:	67c2                	ld	a5,16(sp)
    e880456a:	14010823          	sb	zero,336(sp)
    e880456e:	844a                	mv	s0,s2
    e8804570:	0007a023          	sw	zero,0(a5)
    e8804574:	bb8d                	j	e88042e6 <_ldtoa_r+0x7e6>
    e8804576:	0001                	nop
    e8804578:	87a2                	mv	a5,s0
    e880457a:	0258                	addi	a4,sp,260
    e880457c:	00000013          	nop
    e8804580:	3827d00b          	shia	zero,(a5),2,0
    e8804584:	fee79ee3          	bne	a5,a4,e8804580 <_ldtoa_r+0xa80>
    e8804588:	bd69                	j	e8804422 <_ldtoa_r+0x922>
    e880458a:	67e2                	ld	a5,24(sp)
    e880458c:	15010913          	addi	s2,sp,336
    e8804590:	cfbd                	beqz	a5,e880460e <_ldtoa_r+0xb0e>
    e8804592:	000d0597          	auipc	a1,0xd0
    e8804596:	86e58593          	addi	a1,a1,-1938 # e88d3e00 <dhcp_discover_request_options+0x5f8>
    e880459a:	854a                	mv	a0,s2
    e880459c:	6489                	lui	s1,0x2
    e880459e:	3b2010ef          	jal	ra,e8805950 <sprintf>
    e88045a2:	70f48493          	addi	s1,s1,1807 # 270f <memcmp-0xe87fd8f1>
    e88045a6:	be69                	j	e8804140 <_ldtoa_r+0x640>
    e88045a8:	678d                	lui	a5,0x3
    e88045aa:	e317879b          	addiw	a5,a5,-463
    e88045ae:	14f118a3          	sh	a5,337(sp)
    e88045b2:	2485                	addiw	s1,s1,1
    e88045b4:	2a804163          	bgtz	s0,e8804856 <_ldtoa_r+0xd56>
    e88045b8:	15310d93          	addi	s11,sp,339
    e88045bc:	b6041ae3          	bnez	s0,e8804130 <_ldtoa_r+0x630>
    e88045c0:	b245                	j	e8803f60 <_ldtoa_r+0x460>
    e88045c2:	678d                	lui	a5,0x3
    e88045c4:	e317879b          	addiw	a5,a5,-463
    e88045c8:	14f118a3          	sh	a5,337(sp)
    e88045cc:	2485                	addiw	s1,s1,1
    e88045ce:	02900413          	li	s0,41
    e88045d2:	03000793          	li	a5,48
    e88045d6:	14f109a3          	sb	a5,339(sp)
    e88045da:	15410d93          	addi	s11,sp,340
    e88045de:	b249                	j	e8803f60 <_ldtoa_r+0x460>
    e88045e0:	10810a13          	addi	s4,sp,264
    e88045e4:	f72ff06f          	j	e8803d56 <_ldtoa_r+0x256>
    e88045e8:	03100793          	li	a5,49
    e88045ec:	fef98f23          	sb	a5,-2(s3)
    e88045f0:	2485                	addiw	s1,s1,1
    e88045f2:	be3d                	j	e8804130 <_ldtoa_r+0x630>
    e88045f4:	15010913          	addi	s2,sp,336
    e88045f8:	000d0597          	auipc	a1,0xd0
    e88045fc:	82858593          	addi	a1,a1,-2008 # e88d3e20 <dhcp_discover_request_options+0x618>
    e8804600:	854a                	mv	a0,s2
    e8804602:	6489                	lui	s1,0x2
    e8804604:	34c010ef          	jal	ra,e8805950 <sprintf>
    e8804608:	70f48493          	addi	s1,s1,1807 # 270f <memcmp-0xe87fd8f1>
    e880460c:	be15                	j	e8804140 <_ldtoa_r+0x640>
    e880460e:	000d0597          	auipc	a1,0xd0
    e8804612:	80258593          	addi	a1,a1,-2046 # e88d3e10 <dhcp_discover_request_options+0x608>
    e8804616:	854a                	mv	a0,s2
    e8804618:	6489                	lui	s1,0x2
    e880461a:	336010ef          	jal	ra,e8805950 <sprintf>
    e880461e:	70f48493          	addi	s1,s1,1807 # 270f <memcmp-0xe87fd8f1>
    e8804622:	be39                	j	e8804140 <_ldtoa_r+0x640>
    e8804624:	190c                	addi	a1,sp,176
    e8804626:	0908                	addi	a0,sp,144
    e8804628:	c49fe0ef          	jal	ra,e8803270 <emovo.isra.6>
    e880462c:	0009b597          	auipc	a1,0x9b
    e8804630:	93c58593          	addi	a1,a1,-1732 # e889ef68 <ezero>
    e8804634:	1908                	addi	a0,sp,176
    e8804636:	c6afe0ef          	jal	ra,e8802aa0 <ecmp>
    e880463a:	a80515e3          	bnez	a0,e88040c4 <_ldtoa_r+0x5c4>
    e880463e:	ae0449e3          	bltz	s0,e8804130 <_ldtoa_r+0x630>
    e8804642:	ffe9c783          	lbu	a5,-2(s3)
    e8804646:	fd278713          	addi	a4,a5,-46 # 2fd2 <memcmp-0xe87fd02e>
    e880464a:	00173713          	seqz	a4,a4
    e880464e:	fff74713          	not	a4,a4
    e8804652:	80edc70b          	lrbu	a4,s11,a4,0
    e8804656:	8b05                	andi	a4,a4,1
    e8804658:	ac070ce3          	beqz	a4,e8804130 <_ldtoa_r+0x630>
    e880465c:	07f7f793          	andi	a5,a5,127
    e8804660:	ffe98713          	addi	a4,s3,-2
    e8804664:	0007881b          	sext.w	a6,a5
    e8804668:	bc85                	j	e88040d8 <_ldtoa_r+0x5d8>
    e880466a:	2785                	addiw	a5,a5,1
    e880466c:	fef70fa3          	sb	a5,-1(a4)
    e8804670:	b4c1                	j	e8804130 <_ldtoa_r+0x630>
    e8804672:	1980                	addi	s0,sp,240
    e8804674:	85a2                	mv	a1,s0
    e8804676:	0908                	addi	a0,sp,144
    e8804678:	6a91                	lui	s5,0x4
    e880467a:	b66fe0ef          	jal	ra,e88029e0 <emovi>
    e880467e:	4481                	li	s1,0
    e8804680:	10810a13          	addi	s4,sp,264
    e8804684:	0e810913          	addi	s2,sp,232
    e8804688:	0f210993          	addi	s3,sp,242
    e880468c:	1af9                	addi	s5,s5,-2
    e880468e:	fd500b93          	li	s7,-43
    e8804692:	0001                	nop
    e8804694:	00000013          	nop
    e8804698:	10815783          	lhu	a5,264(sp)
    e880469c:	8b9d                	andi	a5,a5,7
    e880469e:	efc1                	bnez	a5,e8804736 <_ldtoa_r+0xc36>
    e88046a0:	0994                	addi	a3,sp,208
    e88046a2:	87a2                	mv	a5,s0
    e88046a4:	00000013          	nop
    e88046a8:	b827c60b          	lhuia	a2,(a5),2,0
    e88046ac:	3826d60b          	shia	a2,(a3),2,0
    e88046b0:	ff479ce3          	bne	a5,s4,e88046a8 <_ldtoa_r+0xba8>
    e88046b4:	0988                	addi	a0,sp,208
    e88046b6:	0e011423          	sh	zero,232(sp)
    e88046ba:	966fe0ef          	jal	ra,e8802820 <eshdn1>
    e88046be:	0988                	addi	a0,sp,208
    e88046c0:	960fe0ef          	jal	ra,e8802820 <eshdn1>
    e88046c4:	4781                	li	a5,0
    e88046c6:	85ca                	mv	a1,s2
    e88046c8:	8652                	mv	a2,s4
    e88046ca:	0001                	nop
    e88046cc:	00000013          	nop
    e88046d0:	0005d503          	lhu	a0,0(a1)
    e88046d4:	b9e6468b          	lhuia	a3,(a2),-2,0
    e88046d8:	96aa                	add	a3,a3,a0
    e88046da:	97b6                	add	a5,a5,a3
    e88046dc:	39e5d78b          	shia	a5,(a1),-2,0
    e88046e0:	4107b78b          	extu	a5,a5,16,16
    e88046e4:	ff3616e3          	bne	a2,s3,e88046d0 <_ldtoa_r+0xbd0>
    e88046e8:	0d215783          	lhu	a5,210(sp)
    e88046ec:	0d415683          	lhu	a3,212(sp)
    e88046f0:	278d                	addiw	a5,a5,3
    e88046f2:	0cf11923          	sh	a5,210(sp)
    e88046f6:	ce81                	beqz	a3,e880470e <_ldtoa_r+0xc0e>
    e88046f8:	0988                	addi	a0,sp,208
    e88046fa:	926fe0ef          	jal	ra,e8802820 <eshdn1>
    e88046fe:	0d215783          	lhu	a5,210(sp)
    e8804702:	0d415683          	lhu	a3,212(sp)
    e8804706:	2785                	addiw	a5,a5,1
    e8804708:	0cf11923          	sh	a5,210(sp)
    e880470c:	f6f5                	bnez	a3,e88046f8 <_ldtoa_r+0xbf8>
    e880470e:	0e815783          	lhu	a5,232(sp)
    e8804712:	e395                	bnez	a5,e8804736 <_ldtoa_r+0xc36>
    e8804714:	0d215783          	lhu	a5,210(sp)
    e8804718:	00faef63          	bltu	s5,a5,e8804736 <_ldtoa_r+0xc36>
    e880471c:	86a2                	mv	a3,s0
    e880471e:	099c                	addi	a5,sp,208
    e8804720:	b827c60b          	lhuia	a2,(a5),2,0
    e8804724:	3826d60b          	shia	a2,(a3),2,0
    e8804728:	ff279ce3          	bne	a5,s2,e8804720 <_ldtoa_r+0xc20>
    e880472c:	10011423          	sh	zero,264(sp)
    e8804730:	34fd                	addiw	s1,s1,-1
    e8804732:	f77493e3          	bne	s1,s7,e8804698 <_ldtoa_r+0xb98>
    e8804736:	090c                	addi	a1,sp,144
    e8804738:	8522                	mv	a0,s0
    e880473a:	b37fe0ef          	jal	ra,e8803270 <emovo.isra.6>
    e880473e:	19010993          	addi	s3,sp,400
    e8804742:	d32ff06f          	j	e8803c74 <_ldtoa_r+0x174>
    e8804746:	10215783          	lhu	a5,258(sp)
    e880474a:	7742                	ld	a4,48(sp)
    e880474c:	3807b78b          	extu	a5,a5,14,0
    e8804750:	00e79c63          	bne	a5,a4,e8804768 <_ldtoa_r+0xc68>
    e8804754:	8522                	mv	a0,s0
    e8804756:	a0afe0ef          	jal	ra,e8802960 <eisnan.part.0>
    e880475a:	cc0518e3          	bnez	a0,e880442a <_ldtoa_r+0x92a>
    e880475e:	8522                	mv	a0,s0
    e8804760:	c40fe0ef          	jal	ra,e8802ba0 <eisinf.part.1>
    e8804764:	cc0513e3          	bnez	a0,e880442a <_ldtoa_r+0x92a>
    e8804768:	0a0c                	addi	a1,sp,272
    e880476a:	0009b517          	auipc	a0,0x9b
    e880476e:	81650513          	addi	a0,a0,-2026 # e889ef80 <eone>
    e8804772:	a6efe0ef          	jal	ra,e88029e0 <emovi>
    e8804776:	1a0c                	addi	a1,sp,304
    e8804778:	8522                	mv	a0,s0
    e880477a:	a66fe0ef          	jal	ra,e88029e0 <emovi>
    e880477e:	11015603          	lhu	a2,272(sp)
    e8804782:	13215503          	lhu	a0,306(sp)
    e8804786:	11215e83          	lhu	t4,274(sp)
    e880478a:	fff64613          	not	a2,a2
    e880478e:	3c06360b          	extu	a2,a2,15,0
    e8804792:	10c11823          	sh	a2,272(sp)
    e8804796:	40ae85b3          	sub	a1,t4,a0
    e880479a:	86aa                	mv	a3,a0
    e880479c:	04b05b63          	blez	a1,e88047f2 <_ldtoa_r+0xcf2>
    e88047a0:	86ca                	mv	a3,s2
    e88047a2:	1a18                	addi	a4,sp,304
    e88047a4:	02bc                	addi	a5,sp,328
    e88047a6:	0001                	nop
    e88047a8:	b827458b          	lhuia	a1,(a4),2,0
    e88047ac:	3826d58b          	shia	a1,(a3),2,0
    e88047b0:	fef71ce3          	bne	a4,a5,e88047a8 <_ldtoa_r+0xca8>
    e88047b4:	16011423          	sh	zero,360(sp)
    e88047b8:	1a18                	addi	a4,sp,304
    e88047ba:	0a14                	addi	a3,sp,272
    e88047bc:	a021                	j	e88047c4 <_ldtoa_r+0xcc4>
    e88047be:	0001                	nop
    e88047c0:	0006d603          	lhu	a2,0(a3)
    e88047c4:	3827560b          	shia	a2,(a4),2,0
    e88047c8:	0689                	addi	a3,a3,2
    e88047ca:	fef71be3          	bne	a4,a5,e88047c0 <_ldtoa_r+0xcc0>
    e88047ce:	14011423          	sh	zero,328(sp)
    e88047d2:	0a18                	addi	a4,sp,272
    e88047d4:	87ca                	mv	a5,s2
    e88047d6:	12ac                	addi	a1,sp,360
    e88047d8:	b827c68b          	lhuia	a3,(a5),2,0
    e88047dc:	3827568b          	shia	a3,(a4),2,0
    e88047e0:	feb79ce3          	bne	a5,a1,e88047d8 <_ldtoa_r+0xcd8>
    e88047e4:	13215683          	lhu	a3,306(sp)
    e88047e8:	41d505b3          	sub	a1,a0,t4
    e88047ec:	12011423          	sh	zero,296(sp)
    e88047f0:	8536                	mv	a0,a3
    e88047f2:	c5a5                	beqz	a1,e880485a <_ldtoa_r+0xd5a>
    e88047f4:	fc36                	sd	a3,56(sp)
    e88047f6:	f6f00793          	li	a5,-145
    e88047fa:	04f5c763          	blt	a1,a5,e8804848 <_ldtoa_r+0xd48>
    e88047fe:	2581                	sext.w	a1,a1
    e8804800:	0a08                	addi	a0,sp,272
    e8804802:	bbefe0ef          	jal	ra,e8802bc0 <eshift.part.3>
    e8804806:	85aa                	mv	a1,a0
    e8804808:	76e2                	ld	a3,56(sp)
    e880480a:	02bc                	addi	a5,sp,328
    e880480c:	1230                	addi	a2,sp,296
    e880480e:	11015503          	lhu	a0,272(sp)
    e8804812:	13015703          	lhu	a4,304(sp)
    e8804816:	08e50563          	beq	a0,a4,e88048a0 <_ldtoa_r+0xda0>
    e880481a:	4501                	li	a0,0
    e880481c:	0007d703          	lhu	a4,0(a5)
    e8804820:	b9e64e8b          	lhuia	t4,(a2),-2,0
    e8804824:	8f09                	sub	a4,a4,a0
    e8804826:	41d70733          	sub	a4,a4,t4
    e880482a:	39e7d70b          	shia	a4,(a5),-2,0
    e880482e:	4107350b          	extu	a0,a4,16,16
    e8804832:	13210713          	addi	a4,sp,306
    e8804836:	fee793e3          	bne	a5,a4,e880481c <_ldtoa_r+0xd1c>
    e880483a:	4605                	li	a2,1
    e880483c:	87ce                	mv	a5,s3
    e880483e:	04000713          	li	a4,64
    e8804842:	1a08                	addi	a0,sp,304
    e8804844:	dfcfe0ef          	jal	ra,e8802e40 <emdnorm>
    e8804848:	85a2                	mv	a1,s0
    e880484a:	1a08                	addi	a0,sp,304
    e880484c:	a25fe0ef          	jal	ra,e8803270 <emovo.isra.6>
    e8804850:	bee9                	j	e880442a <_ldtoa_r+0x92a>
    e8804852:	87ca                	mv	a5,s2
    e8804854:	bab1                	j	e88041b0 <_ldtoa_r+0x6b0>
    e8804856:	347d                	addiw	s0,s0,-1
    e8804858:	bbad                	j	e88045d2 <_ldtoa_r+0xad2>
    e880485a:	4781                	li	a5,0
    e880485c:	45d9                	li	a1,22
    e880485e:	0a18                	addi	a4,sp,272
    e8804860:	00f70633          	add	a2,a4,a5
    e8804864:	1a18                	addi	a4,sp,304
    e8804866:	973e                	add	a4,a4,a5
    e8804868:	00465603          	lhu	a2,4(a2)
    e880486c:	00475703          	lhu	a4,4(a4)
    e8804870:	0789                	addi	a5,a5,2
    e8804872:	02e61163          	bne	a2,a4,e8804894 <_ldtoa_r+0xd94>
    e8804876:	feb794e3          	bne	a5,a1,e880485e <_ldtoa_r+0xd5e>
    e880487a:	11015703          	lhu	a4,272(sp)
    e880487e:	13015783          	lhu	a5,304(sp)
    e8804882:	04f70163          	beq	a4,a5,e88048c4 <_ldtoa_r+0xdc4>
    e8804886:	87a2                	mv	a5,s0
    e8804888:	0258                	addi	a4,sp,260
    e880488a:	3827d00b          	shia	zero,(a5),2,0
    e880488e:	fee79ee3          	bne	a5,a4,e880488a <_ldtoa_r+0xd8a>
    e8804892:	be61                	j	e880442a <_ldtoa_r+0x92a>
    e8804894:	08c76663          	bltu	a4,a2,e8804920 <_ldtoa_r+0xe20>
    e8804898:	4581                	li	a1,0
    e880489a:	02bc                	addi	a5,sp,328
    e880489c:	1230                	addi	a2,sp,296
    e880489e:	bf85                	j	e880480e <_ldtoa_r+0xd0e>
    e88048a0:	4701                	li	a4,0
    e88048a2:	8532                	mv	a0,a2
    e88048a4:	11210f13          	addi	t5,sp,274
    e88048a8:	0007de83          	lhu	t4,0(a5)
    e88048ac:	b9e5460b          	lhuia	a2,(a0),-2,0
    e88048b0:	9676                	add	a2,a2,t4
    e88048b2:	9732                	add	a4,a4,a2
    e88048b4:	39e7d70b          	shia	a4,(a5),-2,0
    e88048b8:	4107370b          	extu	a4,a4,16,16
    e88048bc:	ffe516e3          	bne	a0,t5,e88048a8 <_ldtoa_r+0xda8>
    e88048c0:	4601                	li	a2,0
    e88048c2:	bfad                	j	e880483c <_ldtoa_r+0xd3c>
    e88048c4:	8736                	mv	a4,a3
    e88048c6:	e6a9                	bnez	a3,e8804910 <_ldtoa_r+0xe10>
    e88048c8:	13611783          	lh	a5,310(sp)
    e88048cc:	0407c263          	bltz	a5,e8804910 <_ldtoa_r+0xe10>
    e88048d0:	02bc                	addi	a5,sp,328
    e88048d2:	a821                	j	e88048ea <_ldtoa_r+0xdea>
    e88048d4:	00d79023          	sh	a3,0(a5)
    e88048d8:	0017171b          	slliw	a4,a4,0x1
    e88048dc:	17f9                	addi	a5,a5,-2
    e88048de:	13210693          	addi	a3,sp,306
    e88048e2:	3c07370b          	extu	a4,a4,15,0
    e88048e6:	f6d781e3          	beq	a5,a3,e8804848 <_ldtoa_r+0xd48>
    e88048ea:	0007d603          	lhu	a2,0(a5)
    e88048ee:	fcf6358b          	extu	a1,a2,63,15
    e88048f2:	0016169b          	slliw	a3,a2,0x1
    e88048f6:	c199                	beqz	a1,e88048fc <_ldtoa_r+0xdfc>
    e88048f8:	00176713          	ori	a4,a4,1
    e88048fc:	3c06b68b          	extu	a3,a3,15,0
    e8804900:	00277613          	andi	a2,a4,2
    e8804904:	0016e593          	ori	a1,a3,1
    e8804908:	d671                	beqz	a2,e88048d4 <_ldtoa_r+0xdd4>
    e880490a:	00b79023          	sh	a1,0(a5)
    e880490e:	b7e9                	j	e88048d8 <_ldtoa_r+0xdd8>
    e8804910:	1a50                	addi	a2,sp,308
    e8804912:	02bc                	addi	a5,sp,328
    e8804914:	eb29                	bnez	a4,e8804966 <_ldtoa_r+0xe66>
    e8804916:	04c78a63          	beq	a5,a2,e880496a <_ldtoa_r+0xe6a>
    e880491a:	b826470b          	lhuia	a4,(a2),2,0
    e880491e:	bfdd                	j	e8804914 <_ldtoa_r+0xe14>
    e8804920:	864a                	mv	a2,s2
    e8804922:	1a18                	addi	a4,sp,304
    e8804924:	02bc                	addi	a5,sp,328
    e8804926:	b827458b          	lhuia	a1,(a4),2,0
    e880492a:	3826558b          	shia	a1,(a2),2,0
    e880492e:	fef71ce3          	bne	a4,a5,e8804926 <_ldtoa_r+0xe26>
    e8804932:	16011423          	sh	zero,360(sp)
    e8804936:	1a0c                	addi	a1,sp,304
    e8804938:	0a18                	addi	a4,sp,272
    e880493a:	1230                	addi	a2,sp,296
    e880493c:	b827450b          	lhuia	a0,(a4),2,0
    e8804940:	3825d50b          	shia	a0,(a1),2,0
    e8804944:	fec71ce3          	bne	a4,a2,e880493c <_ldtoa_r+0xe3c>
    e8804948:	14011423          	sh	zero,328(sp)
    e880494c:	0a08                	addi	a0,sp,272
    e880494e:	874a                	mv	a4,s2
    e8804950:	12ac                	addi	a1,sp,360
    e8804952:	b8274e8b          	lhuia	t4,(a4),2,0
    e8804956:	38255e8b          	shia	t4,(a0),2,0
    e880495a:	feb71ce3          	bne	a4,a1,e8804952 <_ldtoa_r+0xe52>
    e880495e:	12011423          	sh	zero,296(sp)
    e8804962:	4581                	li	a1,0
    e8804964:	b56d                	j	e880480e <_ldtoa_r+0xd0e>
    e8804966:	00168513          	addi	a0,a3,1
    e880496a:	12a11923          	sh	a0,306(sp)
    e880496e:	bde9                	j	e8804848 <_ldtoa_r+0xd48>

00000000e8804970 <_ldcheck>:
    e8804970:	f8f5470b          	ldd	a4,a5,(a0),0,4
    e8804974:	7139                	addi	sp,sp,-64
    e8804976:	850a                	mv	a0,sp
    e8804978:	080c                	addi	a1,sp,16
    e880497a:	f8f1570b          	sdd	a4,a5,(sp),0,4
    e880497e:	fc06                	sd	ra,56(sp)
    e8804980:	880ff0ef          	jal	ra,e8803a00 <e113toe.isra.8>
    e8804984:	02215703          	lhu	a4,34(sp)
    e8804988:	67a1                	lui	a5,0x8
    e880498a:	17fd                	addi	a5,a5,-1
    e880498c:	3807370b          	extu	a4,a4,14,0
    e8804990:	4501                	li	a0,0
    e8804992:	00f71863          	bne	a4,a5,e88049a2 <_ldcheck+0x32>
    e8804996:	0808                	addi	a0,sp,16
    e8804998:	fc9fd0ef          	jal	ra,e8802960 <eisnan.part.0>
    e880499c:	00153513          	seqz	a0,a0
    e88049a0:	0505                	addi	a0,a0,1
    e88049a2:	70e2                	ld	ra,56(sp)
    e88049a4:	6121                	addi	sp,sp,64
    e88049a6:	8082                	ret
	...

00000000e88049b0 <__localeconv_l>:
    e88049b0:	10050513          	addi	a0,a0,256
    e88049b4:	8082                	ret
    e88049b6:	00000013          	nop
    e88049ba:	00000013          	nop
    e88049be:	0001                	nop

00000000e88049c0 <_localeconv_r>:
    e88049c0:	000cf797          	auipc	a5,0xcf
    e88049c4:	74878793          	addi	a5,a5,1864 # e88d4108 <_impure_ptr>
    e88049c8:	639c                	ld	a5,0(a5)
    e88049ca:	67a8                	ld	a0,72(a5)
    e88049cc:	000d0797          	auipc	a5,0xd0
    e88049d0:	e8c78793          	addi	a5,a5,-372 # e88d4858 <__global_locale>
    e88049d4:	40a7950b          	mveqz	a0,a5,a0
    e88049d8:	10050513          	addi	a0,a0,256
    e88049dc:	8082                	ret
    e88049de:	0001                	nop

00000000e88049e0 <localeconv>:
    e88049e0:	000cf797          	auipc	a5,0xcf
    e88049e4:	72878793          	addi	a5,a5,1832 # e88d4108 <_impure_ptr>
    e88049e8:	639c                	ld	a5,0(a5)
    e88049ea:	67a8                	ld	a0,72(a5)
    e88049ec:	000d0797          	auipc	a5,0xd0
    e88049f0:	e6c78793          	addi	a5,a5,-404 # e88d4858 <__global_locale>
    e88049f4:	40a7950b          	mveqz	a0,a5,a0
    e88049f8:	10050513          	addi	a0,a0,256
    e88049fc:	8082                	ret
	...

00000000e8804a10 <_setlocale_r>:
    e8804a10:	c615                	beqz	a2,e8804a3c <_setlocale_r+0x2c>
    e8804a12:	1141                	addi	sp,sp,-16
    e8804a14:	000cf597          	auipc	a1,0xcf
    e8804a18:	42458593          	addi	a1,a1,1060 # e88d3e38 <dhcp_discover_request_options+0x630>
    e8804a1c:	8532                	mv	a0,a2
    e8804a1e:	e022                	sd	s0,0(sp)
    e8804a20:	e406                	sd	ra,8(sp)
    e8804a22:	8432                	mv	s0,a2
    e8804a24:	09c010ef          	jal	ra,e8805ac0 <strcmp>
    e8804a28:	e105                	bnez	a0,e8804a48 <_setlocale_r+0x38>
    e8804a2a:	000cf517          	auipc	a0,0xcf
    e8804a2e:	40650513          	addi	a0,a0,1030 # e88d3e30 <dhcp_discover_request_options+0x628>
    e8804a32:	60a2                	ld	ra,8(sp)
    e8804a34:	6402                	ld	s0,0(sp)
    e8804a36:	0141                	addi	sp,sp,16
    e8804a38:	8082                	ret
    e8804a3a:	0001                	nop
    e8804a3c:	000cf517          	auipc	a0,0xcf
    e8804a40:	3f450513          	addi	a0,a0,1012 # e88d3e30 <dhcp_discover_request_options+0x628>
    e8804a44:	8082                	ret
    e8804a46:	0001                	nop
    e8804a48:	000cf597          	auipc	a1,0xcf
    e8804a4c:	3e858593          	addi	a1,a1,1000 # e88d3e30 <dhcp_discover_request_options+0x628>
    e8804a50:	8522                	mv	a0,s0
    e8804a52:	06e010ef          	jal	ra,e8805ac0 <strcmp>
    e8804a56:	d971                	beqz	a0,e8804a2a <_setlocale_r+0x1a>
    e8804a58:	000bd597          	auipc	a1,0xbd
    e8804a5c:	81858593          	addi	a1,a1,-2024 # e88c1270 <kHTTPServerClass+0x90>
    e8804a60:	8522                	mv	a0,s0
    e8804a62:	05e010ef          	jal	ra,e8805ac0 <strcmp>
    e8804a66:	d171                	beqz	a0,e8804a2a <_setlocale_r+0x1a>
    e8804a68:	4501                	li	a0,0
    e8804a6a:	b7e1                	j	e8804a32 <_setlocale_r+0x22>
    e8804a6c:	00000013          	nop

00000000e8804a70 <__locale_mb_cur_max>:
    e8804a70:	000cf797          	auipc	a5,0xcf
    e8804a74:	69878793          	addi	a5,a5,1688 # e88d4108 <_impure_ptr>
    e8804a78:	639c                	ld	a5,0(a5)
    e8804a7a:	000d0717          	auipc	a4,0xd0
    e8804a7e:	dde70713          	addi	a4,a4,-546 # e88d4858 <__global_locale>
    e8804a82:	67bc                	ld	a5,72(a5)
    e8804a84:	40f7178b          	mveqz	a5,a4,a5
    e8804a88:	1607c503          	lbu	a0,352(a5)
    e8804a8c:	8082                	ret
    e8804a8e:	0001                	nop

00000000e8804a90 <__locale_ctype_ptr_l>:
    e8804a90:	7d68                	ld	a0,248(a0)
    e8804a92:	8082                	ret
    e8804a94:	00000013          	nop
    e8804a98:	00000013          	nop
    e8804a9c:	00000013          	nop

00000000e8804aa0 <__locale_ctype_ptr>:
    e8804aa0:	000cf797          	auipc	a5,0xcf
    e8804aa4:	66878793          	addi	a5,a5,1640 # e88d4108 <_impure_ptr>
    e8804aa8:	639c                	ld	a5,0(a5)
    e8804aaa:	000d0717          	auipc	a4,0xd0
    e8804aae:	dae70713          	addi	a4,a4,-594 # e88d4858 <__global_locale>
    e8804ab2:	67bc                	ld	a5,72(a5)
    e8804ab4:	40f7178b          	mveqz	a5,a4,a5
    e8804ab8:	7fe8                	ld	a0,248(a5)
    e8804aba:	8082                	ret
    e8804abc:	00000013          	nop

00000000e8804ac0 <setlocale>:
    e8804ac0:	000cf797          	auipc	a5,0xcf
    e8804ac4:	64878793          	addi	a5,a5,1608 # e88d4108 <_impure_ptr>
    e8804ac8:	862e                	mv	a2,a1
    e8804aca:	85aa                	mv	a1,a0
    e8804acc:	6388                	ld	a0,0(a5)
    e8804ace:	f43ff06f          	j	e8804a10 <_setlocale_r>
	...

00000000e8804ae0 <__swhatbuf_r>:
    e8804ae0:	7175                	addi	sp,sp,-144
    e8804ae2:	e122                	sd	s0,128(sp)
    e8804ae4:	842e                	mv	s0,a1
    e8804ae6:	01259583          	lh	a1,18(a1)
    e8804aea:	fca6                	sd	s1,120(sp)
    e8804aec:	f8ca                	sd	s2,112(sp)
    e8804aee:	e506                	sd	ra,136(sp)
    e8804af0:	84b2                	mv	s1,a2
    e8804af2:	8936                	mv	s2,a3
    e8804af4:	0205cc63          	bltz	a1,e8804b2c <__swhatbuf_r+0x4c>
    e8804af8:	0030                	addi	a2,sp,8
    e8804afa:	624770ef          	jal	ra,e887c11e <_fstat_r>
    e8804afe:	02054763          	bltz	a0,e8804b2c <__swhatbuf_r+0x4c>
    e8804b02:	47b2                	lw	a5,12(sp)
    e8804b04:	673d                	lui	a4,0xf
    e8804b06:	60aa                	ld	ra,136(sp)
    e8804b08:	8ff9                	and	a5,a5,a4
    e8804b0a:	6709                	lui	a4,0x2
    e8804b0c:	8f99                	sub	a5,a5,a4
    e8804b0e:	0017b793          	seqz	a5,a5
    e8804b12:	00f92023          	sw	a5,0(s2)
    e8804b16:	640a                	ld	s0,128(sp)
    e8804b18:	40000793          	li	a5,1024
    e8804b1c:	e09c                	sd	a5,0(s1)
    e8804b1e:	6505                	lui	a0,0x1
    e8804b20:	74e6                	ld	s1,120(sp)
    e8804b22:	7946                	ld	s2,112(sp)
    e8804b24:	80050513          	addi	a0,a0,-2048 # 800 <memcmp-0xe87ff800>
    e8804b28:	6149                	addi	sp,sp,144
    e8804b2a:	8082                	ret
    e8804b2c:	01044783          	lbu	a5,16(s0)
    e8804b30:	00092023          	sw	zero,0(s2)
    e8804b34:	fc77b70b          	extu	a4,a5,63,7
    e8804b38:	cf01                	beqz	a4,e8804b50 <__swhatbuf_r+0x70>
    e8804b3a:	60aa                	ld	ra,136(sp)
    e8804b3c:	640a                	ld	s0,128(sp)
    e8804b3e:	04000793          	li	a5,64
    e8804b42:	e09c                	sd	a5,0(s1)
    e8804b44:	7946                	ld	s2,112(sp)
    e8804b46:	74e6                	ld	s1,120(sp)
    e8804b48:	4501                	li	a0,0
    e8804b4a:	6149                	addi	sp,sp,144
    e8804b4c:	8082                	ret
    e8804b4e:	0001                	nop
    e8804b50:	60aa                	ld	ra,136(sp)
    e8804b52:	640a                	ld	s0,128(sp)
    e8804b54:	40000793          	li	a5,1024
    e8804b58:	e09c                	sd	a5,0(s1)
    e8804b5a:	7946                	ld	s2,112(sp)
    e8804b5c:	74e6                	ld	s1,120(sp)
    e8804b5e:	4501                	li	a0,0
    e8804b60:	6149                	addi	sp,sp,144
    e8804b62:	8082                	ret
    e8804b64:	00000013          	nop
    e8804b68:	00000013          	nop
    e8804b6c:	00000013          	nop

00000000e8804b70 <__smakebuf_r>:
    e8804b70:	7179                	addi	sp,sp,-48
    e8804b72:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8804b76:	0105d703          	lhu	a4,16(a1)
    e8804b7a:	f406                	sd	ra,40(sp)
    e8804b7c:	f04a                	sd	s2,32(sp)
    e8804b7e:	8b09                	andi	a4,a4,2
    e8804b80:	842e                	mv	s0,a1
    e8804b82:	cf09                	beqz	a4,e8804b9c <__smakebuf_r+0x2c>
    e8804b84:	07758713          	addi	a4,a1,119
    e8804b88:	e198                	sd	a4,0(a1)
    e8804b8a:	ed98                	sd	a4,24(a1)
    e8804b8c:	4705                	li	a4,1
    e8804b8e:	d198                	sw	a4,32(a1)
    e8804b90:	70a2                	ld	ra,40(sp)
    e8804b92:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8804b96:	7902                	ld	s2,32(sp)
    e8804b98:	6145                	addi	sp,sp,48
    e8804b9a:	8082                	ret
    e8804b9c:	0054                	addi	a3,sp,4
    e8804b9e:	0030                	addi	a2,sp,8
    e8804ba0:	84aa                	mv	s1,a0
    e8804ba2:	f3fff0ef          	jal	ra,e8804ae0 <__swhatbuf_r>
    e8804ba6:	892a                	mv	s2,a0
    e8804ba8:	65a2                	ld	a1,8(sp)
    e8804baa:	8526                	mv	a0,s1
    e8804bac:	5e6770ef          	jal	ra,e887c192 <_malloc_r>
    e8804bb0:	01041783          	lh	a5,16(s0)
    e8804bb4:	c915                	beqz	a0,e8804be8 <__smakebuf_r+0x78>
    e8804bb6:	ffffe717          	auipc	a4,0xffffe
    e8804bba:	80a70713          	addi	a4,a4,-2038 # e88023c0 <_cleanup_r>
    e8804bbe:	66a2                	ld	a3,8(sp)
    e8804bc0:	ecb8                	sd	a4,88(s1)
    e8804bc2:	0807e793          	ori	a5,a5,128
    e8804bc6:	4712                	lw	a4,4(sp)
    e8804bc8:	00f41823          	sh	a5,16(s0)
    e8804bcc:	e008                	sd	a0,0(s0)
    e8804bce:	ec08                	sd	a0,24(s0)
    e8804bd0:	d014                	sw	a3,32(s0)
    e8804bd2:	eb1d                	bnez	a4,e8804c08 <__smakebuf_r+0x98>
    e8804bd4:	0127e7b3          	or	a5,a5,s2
    e8804bd8:	00f41823          	sh	a5,16(s0)
    e8804bdc:	70a2                	ld	ra,40(sp)
    e8804bde:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8804be2:	7902                	ld	s2,32(sp)
    e8804be4:	6145                	addi	sp,sp,48
    e8804be6:	8082                	ret
    e8804be8:	2007f713          	andi	a4,a5,512
    e8804bec:	f355                	bnez	a4,e8804b90 <__smakebuf_r+0x20>
    e8804bee:	9bf1                	andi	a5,a5,-4
    e8804bf0:	0027e793          	ori	a5,a5,2
    e8804bf4:	07740713          	addi	a4,s0,119
    e8804bf8:	00f41823          	sh	a5,16(s0)
    e8804bfc:	4785                	li	a5,1
    e8804bfe:	e018                	sd	a4,0(s0)
    e8804c00:	ec18                	sd	a4,24(s0)
    e8804c02:	d01c                	sw	a5,32(s0)
    e8804c04:	b771                	j	e8804b90 <__smakebuf_r+0x20>
    e8804c06:	0001                	nop
    e8804c08:	01241583          	lh	a1,18(s0)
    e8804c0c:	8526                	mv	a0,s1
    e8804c0e:	5dc770ef          	jal	ra,e887c1ea <_isatty_r>
    e8804c12:	e509                	bnez	a0,e8804c1c <__smakebuf_r+0xac>
    e8804c14:	01041783          	lh	a5,16(s0)
    e8804c18:	bf75                	j	e8804bd4 <__smakebuf_r+0x64>
    e8804c1a:	0001                	nop
    e8804c1c:	01045783          	lhu	a5,16(s0)
    e8804c20:	9bf1                	andi	a5,a5,-4
    e8804c22:	0017e793          	ori	a5,a5,1
    e8804c26:	3c07a78b          	ext	a5,a5,15,0
    e8804c2a:	b76d                	j	e8804bd4 <__smakebuf_r+0x64>
	...

00000000e8804c40 <_mbtowc_r>:
    e8804c40:	000cf797          	auipc	a5,0xcf
    e8804c44:	4c878793          	addi	a5,a5,1224 # e88d4108 <_impure_ptr>
    e8804c48:	639c                	ld	a5,0(a5)
    e8804c4a:	000d0817          	auipc	a6,0xd0
    e8804c4e:	c0e80813          	addi	a6,a6,-1010 # e88d4858 <__global_locale>
    e8804c52:	67bc                	ld	a5,72(a5)
    e8804c54:	40f8178b          	mveqz	a5,a6,a5
    e8804c58:	0e87b303          	ld	t1,232(a5)
    e8804c5c:	8302                	jr	t1
    e8804c5e:	0001                	nop

00000000e8804c60 <__ascii_mbtowc>:
    e8804c60:	1141                	addi	sp,sp,-16
    e8804c62:	007c                	addi	a5,sp,12
    e8804c64:	40b7958b          	mveqz	a1,a5,a1
    e8804c68:	ce01                	beqz	a2,e8804c80 <__ascii_mbtowc+0x20>
    e8804c6a:	ce91                	beqz	a3,e8804c86 <__ascii_mbtowc+0x26>
    e8804c6c:	00064783          	lbu	a5,0(a2)
    e8804c70:	c19c                	sw	a5,0(a1)
    e8804c72:	00064503          	lbu	a0,0(a2)
    e8804c76:	00a03533          	snez	a0,a0
    e8804c7a:	0141                	addi	sp,sp,16
    e8804c7c:	8082                	ret
    e8804c7e:	0001                	nop
    e8804c80:	4501                	li	a0,0
    e8804c82:	0141                	addi	sp,sp,16
    e8804c84:	8082                	ret
    e8804c86:	5579                	li	a0,-2
    e8804c88:	bfcd                	j	e8804c7a <__ascii_mbtowc+0x1a>
	...

00000000e8804ca0 <_Balloc>:
    e8804ca0:	1101                	addi	sp,sp,-32
    e8804ca2:	f891540b          	sdd	s0,s1,(sp),0,4
    e8804ca6:	7d3c                	ld	a5,120(a0)
    e8804ca8:	ec06                	sd	ra,24(sp)
    e8804caa:	e84a                	sd	s2,16(sp)
    e8804cac:	84aa                	mv	s1,a0
    e8804cae:	842e                	mv	s0,a1
    e8804cb0:	c385                	beqz	a5,e8804cd0 <_Balloc+0x30>
    e8804cb2:	6687c50b          	lrd	a0,a5,s0,3
    e8804cb6:	c51d                	beqz	a0,e8804ce4 <_Balloc+0x44>
    e8804cb8:	6118                	ld	a4,0(a0)
    e8804cba:	6687d70b          	srd	a4,a5,s0,3
    e8804cbe:	00053823          	sd	zero,16(a0)
    e8804cc2:	60e2                	ld	ra,24(sp)
    e8804cc4:	f891440b          	ldd	s0,s1,(sp),0,4
    e8804cc8:	6942                	ld	s2,16(sp)
    e8804cca:	6105                	addi	sp,sp,32
    e8804ccc:	8082                	ret
    e8804cce:	0001                	nop
    e8804cd0:	04100613          	li	a2,65
    e8804cd4:	45a1                	li	a1,8
    e8804cd6:	4e8770ef          	jal	ra,e887c1be <_calloc_r>
    e8804cda:	fca8                	sd	a0,120(s1)
    e8804cdc:	87aa                	mv	a5,a0
    e8804cde:	f971                	bnez	a0,e8804cb2 <_Balloc+0x12>
    e8804ce0:	4501                	li	a0,0
    e8804ce2:	b7c5                	j	e8804cc2 <_Balloc+0x22>
    e8804ce4:	4905                	li	s2,1
    e8804ce6:	0089193b          	sllw	s2,s2,s0
    e8804cea:	fff9061b          	addiw	a2,s2,-1
    e8804cee:	0621                	addi	a2,a2,8
    e8804cf0:	060a                	slli	a2,a2,0x2
    e8804cf2:	4585                	li	a1,1
    e8804cf4:	8526                	mv	a0,s1
    e8804cf6:	4c8770ef          	jal	ra,e887c1be <_calloc_r>
    e8804cfa:	d17d                	beqz	a0,e8804ce0 <_Balloc+0x40>
    e8804cfc:	e325540b          	swd	s0,s2,(a0),1,3
    e8804d00:	bf7d                	j	e8804cbe <_Balloc+0x1e>
    e8804d02:	0001                	nop
    e8804d04:	00000013          	nop
    e8804d08:	00000013          	nop
    e8804d0c:	00000013          	nop

00000000e8804d10 <_Bfree>:
    e8804d10:	c981                	beqz	a1,e8804d20 <_Bfree+0x10>
    e8804d12:	7d3c                	ld	a5,120(a0)
    e8804d14:	4598                	lw	a4,8(a1)
    e8804d16:	66e7c68b          	lrd	a3,a5,a4,3
    e8804d1a:	e194                	sd	a3,0(a1)
    e8804d1c:	66e7d58b          	srd	a1,a5,a4,3
    e8804d20:	8082                	ret
    e8804d22:	0001                	nop
    e8804d24:	00000013          	nop
    e8804d28:	00000013          	nop
    e8804d2c:	00000013          	nop

00000000e8804d30 <__multadd>:
    e8804d30:	7139                	addi	sp,sp,-64
    e8804d32:	ec22                	sd	s0,24(sp)
    e8804d34:	49c0                	lw	s0,20(a1)
    e8804d36:	f026                	sd	s1,32(sp)
    e8804d38:	f44a                	sd	s2,40(sp)
    e8804d3a:	fc06                	sd	ra,56(sp)
    e8804d3c:	892a                	mv	s2,a0
    e8804d3e:	f84e                	sd	s3,48(sp)
    e8804d40:	84ae                	mv	s1,a1
    e8804d42:	4781                	li	a5,0
    e8804d44:	01858513          	addi	a0,a1,24
    e8804d48:	44f5470b          	lrw	a4,a0,a5,2
    e8804d4c:	3c07358b          	extu	a1,a4,15,0
    e8804d50:	24c5968b          	mulaw	a3,a1,a2
    e8804d54:	0107559b          	srliw	a1,a4,0x10
    e8804d58:	0106d71b          	srliw	a4,a3,0x10
    e8804d5c:	24c5970b          	mulaw	a4,a1,a2
    e8804d60:	3c06b68b          	extu	a3,a3,15,0
    e8804d64:	0107159b          	slliw	a1,a4,0x10
    e8804d68:	9ead                	addw	a3,a3,a1
    e8804d6a:	44f5568b          	srw	a3,a0,a5,2
    e8804d6e:	0785                	addi	a5,a5,1
    e8804d70:	0007859b          	sext.w	a1,a5
    e8804d74:	7d07368b          	extu	a3,a4,31,16
    e8804d78:	fc85c8e3          	blt	a1,s0,e8804d48 <__multadd+0x18>
    e8804d7c:	ca89                	beqz	a3,e8804d8e <__multadd+0x5e>
    e8804d7e:	44dc                	lw	a5,12(s1)
    e8804d80:	02f45063          	bge	s0,a5,e8804da0 <__multadd+0x70>
    e8804d84:	0484978b          	addsl	a5,s1,s0,2
    e8804d88:	cf94                	sw	a3,24(a5)
    e8804d8a:	2405                	addiw	s0,s0,1
    e8804d8c:	c8c0                	sw	s0,20(s1)
    e8804d8e:	70e2                	ld	ra,56(sp)
    e8804d90:	6462                	ld	s0,24(sp)
    e8804d92:	8526                	mv	a0,s1
    e8804d94:	7922                	ld	s2,40(sp)
    e8804d96:	7482                	ld	s1,32(sp)
    e8804d98:	79c2                	ld	s3,48(sp)
    e8804d9a:	6121                	addi	sp,sp,64
    e8804d9c:	8082                	ret
    e8804d9e:	0001                	nop
    e8804da0:	448c                	lw	a1,8(s1)
    e8804da2:	854a                	mv	a0,s2
    e8804da4:	e436                	sd	a3,8(sp)
    e8804da6:	2585                	addiw	a1,a1,1
    e8804da8:	ef9ff0ef          	jal	ra,e8804ca0 <_Balloc>
    e8804dac:	89aa                	mv	s3,a0
    e8804dae:	48d0                	lw	a2,20(s1)
    e8804db0:	01048593          	addi	a1,s1,16
    e8804db4:	0541                	addi	a0,a0,16
    e8804db6:	0609                	addi	a2,a2,2
    e8804db8:	060a                	slli	a2,a2,0x2
    e8804dba:	aaefb0ef          	jal	ra,e8800068 <memcpy>
    e8804dbe:	07893783          	ld	a5,120(s2)
    e8804dc2:	4498                	lw	a4,8(s1)
    e8804dc4:	66a2                	ld	a3,8(sp)
    e8804dc6:	66e7c60b          	lrd	a2,a5,a4,3
    e8804dca:	e090                	sd	a2,0(s1)
    e8804dcc:	66e7d48b          	srd	s1,a5,a4,3
    e8804dd0:	84ce                	mv	s1,s3
    e8804dd2:	0484978b          	addsl	a5,s1,s0,2
    e8804dd6:	cf94                	sw	a3,24(a5)
    e8804dd8:	2405                	addiw	s0,s0,1
    e8804dda:	c8c0                	sw	s0,20(s1)
    e8804ddc:	bf4d                	j	e8804d8e <__multadd+0x5e>
    e8804dde:	0001                	nop

00000000e8804de0 <__s2b>:
    e8804de0:	7139                	addi	sp,sp,-64
    e8804de2:	f891540b          	sdd	s0,s1,(sp),0,4
    e8804de6:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8804dea:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8804dee:	fc06                	sd	ra,56(sp)
    e8804df0:	f85a                	sd	s6,48(sp)
    e8804df2:	84b6                	mv	s1,a3
    e8804df4:	89ba                	mv	s3,a4
    e8804df6:	26a1                	addiw	a3,a3,8
    e8804df8:	4725                	li	a4,9
    e8804dfa:	47a5                	li	a5,9
    e8804dfc:	892a                	mv	s2,a0
    e8804dfe:	842e                	mv	s0,a1
    e8804e00:	8a32                	mv	s4,a2
    e8804e02:	02e6c6bb          	divw	a3,a3,a4
    e8804e06:	0a97d363          	bge	a5,s1,e8804eac <__s2b+0xcc>
    e8804e0a:	4785                	li	a5,1
    e8804e0c:	4581                	li	a1,0
    e8804e0e:	0001                	nop
    e8804e10:	0017979b          	slliw	a5,a5,0x1
    e8804e14:	2585                	addiw	a1,a1,1
    e8804e16:	fed7cde3          	blt	a5,a3,e8804e10 <__s2b+0x30>
    e8804e1a:	854a                	mv	a0,s2
    e8804e1c:	e85ff0ef          	jal	ra,e8804ca0 <_Balloc>
    e8804e20:	01352c23          	sw	s3,24(a0)
    e8804e24:	4785                	li	a5,1
    e8804e26:	c95c                	sw	a5,20(a0)
    e8804e28:	47a5                	li	a5,9
    e8804e2a:	0747dd63          	bge	a5,s4,e8804ea4 <__s2b+0xc4>
    e8804e2e:	ff6a0a9b          	addiw	s5,s4,-10
    e8804e32:	7c0aba8b          	extu	s5,s5,31,0
    e8804e36:	00940b13          	addi	s6,s0,9
    e8804e3a:	00aa8793          	addi	a5,s5,10 # 400a <memcmp-0xe87fbff6>
    e8804e3e:	943e                	add	s0,s0,a5
    e8804e40:	89da                	mv	s3,s6
    e8804e42:	0001                	nop
    e8804e44:	00000013          	nop
    e8804e48:	9819c68b          	lbuia	a3,(s3),1,0
    e8804e4c:	85aa                	mv	a1,a0
    e8804e4e:	4629                	li	a2,10
    e8804e50:	fd06869b          	addiw	a3,a3,-48
    e8804e54:	854a                	mv	a0,s2
    e8804e56:	edbff0ef          	jal	ra,e8804d30 <__multadd>
    e8804e5a:	fe8997e3          	bne	s3,s0,e8804e48 <__s2b+0x68>
    e8804e5e:	002a8413          	addi	s0,s5,2
    e8804e62:	945a                	add	s0,s0,s6
    e8804e64:	029a5563          	bge	s4,s1,e8804e8e <__s2b+0xae>
    e8804e68:	34fd                	addiw	s1,s1,-1
    e8804e6a:	414484bb          	subw	s1,s1,s4
    e8804e6e:	7c04b48b          	extu	s1,s1,31,0
    e8804e72:	0485                	addi	s1,s1,1
    e8804e74:	94a2                	add	s1,s1,s0
    e8804e76:	0001                	nop
    e8804e78:	9814468b          	lbuia	a3,(s0),1,0
    e8804e7c:	85aa                	mv	a1,a0
    e8804e7e:	4629                	li	a2,10
    e8804e80:	fd06869b          	addiw	a3,a3,-48
    e8804e84:	854a                	mv	a0,s2
    e8804e86:	eabff0ef          	jal	ra,e8804d30 <__multadd>
    e8804e8a:	fe9417e3          	bne	s0,s1,e8804e78 <__s2b+0x98>
    e8804e8e:	70e2                	ld	ra,56(sp)
    e8804e90:	f891440b          	ldd	s0,s1,(sp),0,4
    e8804e94:	7b42                	ld	s6,48(sp)
    e8804e96:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8804e9a:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8804e9e:	6121                	addi	sp,sp,64
    e8804ea0:	8082                	ret
    e8804ea2:	0001                	nop
    e8804ea4:	0429                	addi	s0,s0,10
    e8804ea6:	4a25                	li	s4,9
    e8804ea8:	bf75                	j	e8804e64 <__s2b+0x84>
    e8804eaa:	0001                	nop
    e8804eac:	4581                	li	a1,0
    e8804eae:	b7b5                	j	e8804e1a <__s2b+0x3a>

00000000e8804eb0 <__hi0bits>:
    e8804eb0:	7741                	lui	a4,0xffff0
    e8804eb2:	8f69                	and	a4,a4,a0
    e8804eb4:	87aa                	mv	a5,a0
    e8804eb6:	4501                	li	a0,0
    e8804eb8:	e701                	bnez	a4,e8804ec0 <__hi0bits+0x10>
    e8804eba:	0107979b          	slliw	a5,a5,0x10
    e8804ebe:	4541                	li	a0,16
    e8804ec0:	ff000737          	lui	a4,0xff000
    e8804ec4:	8f7d                	and	a4,a4,a5
    e8804ec6:	e701                	bnez	a4,e8804ece <__hi0bits+0x1e>
    e8804ec8:	0087979b          	slliw	a5,a5,0x8
    e8804ecc:	2521                	addiw	a0,a0,8
    e8804ece:	f0000737          	lui	a4,0xf0000
    e8804ed2:	8f7d                	and	a4,a4,a5
    e8804ed4:	e701                	bnez	a4,e8804edc <__hi0bits+0x2c>
    e8804ed6:	0047979b          	slliw	a5,a5,0x4
    e8804eda:	2511                	addiw	a0,a0,4
    e8804edc:	c0000737          	lui	a4,0xc0000
    e8804ee0:	8f7d                	and	a4,a4,a5
    e8804ee2:	e701                	bnez	a4,e8804eea <__hi0bits+0x3a>
    e8804ee4:	0027979b          	slliw	a5,a5,0x2
    e8804ee8:	2509                	addiw	a0,a0,2
    e8804eea:	0007c963          	bltz	a5,e8804efc <__hi0bits+0x4c>
    e8804eee:	2505                	addiw	a0,a0,1
    e8804ef0:	79e7b78b          	extu	a5,a5,30,30
    e8804ef4:	02000713          	li	a4,32
    e8804ef8:	40f7150b          	mveqz	a0,a4,a5
    e8804efc:	8082                	ret
    e8804efe:	0001                	nop

00000000e8804f00 <__lo0bits>:
    e8804f00:	411c                	lw	a5,0(a0)
    e8804f02:	0077f713          	andi	a4,a5,7
    e8804f06:	863e                	mv	a2,a5
    e8804f08:	cf11                	beqz	a4,e8804f24 <__lo0bits+0x24>
    e8804f0a:	0017f693          	andi	a3,a5,1
    e8804f0e:	4701                	li	a4,0
    e8804f10:	e699                	bnez	a3,e8804f1e <__lo0bits+0x1e>
    e8804f12:	8a09                	andi	a2,a2,2
    e8804f14:	c225                	beqz	a2,e8804f74 <__lo0bits+0x74>
    e8804f16:	0017d79b          	srliw	a5,a5,0x1
    e8804f1a:	c11c                	sw	a5,0(a0)
    e8804f1c:	4705                	li	a4,1
    e8804f1e:	853a                	mv	a0,a4
    e8804f20:	8082                	ret
    e8804f22:	0001                	nop
    e8804f24:	3c07b68b          	extu	a3,a5,15,0
    e8804f28:	4701                	li	a4,0
    e8804f2a:	e681                	bnez	a3,e8804f32 <__lo0bits+0x32>
    e8804f2c:	7d07b78b          	extu	a5,a5,31,16
    e8804f30:	4741                	li	a4,16
    e8804f32:	0ff7f693          	andi	a3,a5,255
    e8804f36:	e681                	bnez	a3,e8804f3e <__lo0bits+0x3e>
    e8804f38:	2721                	addiw	a4,a4,8
    e8804f3a:	7c87b78b          	extu	a5,a5,31,8
    e8804f3e:	00f7f693          	andi	a3,a5,15
    e8804f42:	e681                	bnez	a3,e8804f4a <__lo0bits+0x4a>
    e8804f44:	2711                	addiw	a4,a4,4
    e8804f46:	7c47b78b          	extu	a5,a5,31,4
    e8804f4a:	0037f693          	andi	a3,a5,3
    e8804f4e:	e681                	bnez	a3,e8804f56 <__lo0bits+0x56>
    e8804f50:	2709                	addiw	a4,a4,2
    e8804f52:	7c27b78b          	extu	a5,a5,31,2
    e8804f56:	0017f693          	andi	a3,a5,1
    e8804f5a:	e689                	bnez	a3,e8804f64 <__lo0bits+0x64>
    e8804f5c:	7c17b78b          	extu	a5,a5,31,1
    e8804f60:	2705                	addiw	a4,a4,1
    e8804f62:	c789                	beqz	a5,e8804f6c <__lo0bits+0x6c>
    e8804f64:	c11c                	sw	a5,0(a0)
    e8804f66:	853a                	mv	a0,a4
    e8804f68:	8082                	ret
    e8804f6a:	0001                	nop
    e8804f6c:	02000713          	li	a4,32
    e8804f70:	b77d                	j	e8804f1e <__lo0bits+0x1e>
    e8804f72:	0001                	nop
    e8804f74:	0027d79b          	srliw	a5,a5,0x2
    e8804f78:	4709                	li	a4,2
    e8804f7a:	c11c                	sw	a5,0(a0)
    e8804f7c:	853a                	mv	a0,a4
    e8804f7e:	8082                	ret

00000000e8804f80 <__i2b>:
    e8804f80:	1141                	addi	sp,sp,-16
    e8804f82:	e022                	sd	s0,0(sp)
    e8804f84:	842e                	mv	s0,a1
    e8804f86:	4585                	li	a1,1
    e8804f88:	e406                	sd	ra,8(sp)
    e8804f8a:	d17ff0ef          	jal	ra,e8804ca0 <_Balloc>
    e8804f8e:	cd00                	sw	s0,24(a0)
    e8804f90:	60a2                	ld	ra,8(sp)
    e8804f92:	6402                	ld	s0,0(sp)
    e8804f94:	4705                	li	a4,1
    e8804f96:	c958                	sw	a4,20(a0)
    e8804f98:	0141                	addi	sp,sp,16
    e8804f9a:	8082                	ret
    e8804f9c:	00000013          	nop

00000000e8804fa0 <__multiply>:
    e8804fa0:	7179                	addi	sp,sp,-48
    e8804fa2:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8804fa6:	f891540b          	sdd	s0,s1,(sp),0,4
    e8804faa:	4a44                	lw	s1,20(a2)
    e8804fac:	0145a983          	lw	s3,20(a1)
    e8804fb0:	f052                	sd	s4,32(sp)
    e8804fb2:	f406                	sd	ra,40(sp)
    e8804fb4:	892e                	mv	s2,a1
    e8804fb6:	8a32                	mv	s4,a2
    e8804fb8:	0099c763          	blt	s3,s1,e8804fc6 <__multiply+0x26>
    e8804fbc:	87a6                	mv	a5,s1
    e8804fbe:	8a2e                	mv	s4,a1
    e8804fc0:	84ce                	mv	s1,s3
    e8804fc2:	8932                	mv	s2,a2
    e8804fc4:	89be                	mv	s3,a5
    e8804fc6:	e2fa470b          	lwd	a4,a5,(s4),1,3
    e8804fca:	0134843b          	addw	s0,s1,s3
    e8804fce:	0087a7b3          	slt	a5,a5,s0
    e8804fd2:	0017059b          	addiw	a1,a4,1
    e8804fd6:	40f7158b          	mveqz	a1,a4,a5
    e8804fda:	cc7ff0ef          	jal	ra,e8804ca0 <_Balloc>
    e8804fde:	01850313          	addi	t1,a0,24
    e8804fe2:	0483188b          	addsl	a7,t1,s0,2
    e8804fe6:	879a                	mv	a5,t1
    e8804fe8:	01137863          	bgeu	t1,a7,e8804ff8 <__multiply+0x58>
    e8804fec:	00000013          	nop
    e8804ff0:	5847d00b          	swia	zero,(a5),4,0
    e8804ff4:	ff17eee3          	bltu	a5,a7,e8804ff0 <__multiply+0x50>
    e8804ff8:	01890593          	addi	a1,s2,24
    e8804ffc:	018a0613          	addi	a2,s4,24
    e8805000:	05359e0b          	addsl	t3,a1,s3,2
    e8805004:	0496180b          	addsl	a6,a2,s1,2
    e8805008:	01c5ec63          	bltu	a1,t3,e8805020 <__multiply+0x80>
    e880500c:	a8e1                	j	e88050e4 <__multiply+0x144>
    e880500e:	0001                	nop
    e8805010:	7d0ebe8b          	extu	t4,t4,31,16
    e8805014:	060e9963          	bnez	t4,e8805086 <__multiply+0xe6>
    e8805018:	0591                	addi	a1,a1,4
    e880501a:	0311                	addi	t1,t1,4
    e880501c:	0dc5f463          	bgeu	a1,t3,e88050e4 <__multiply+0x144>
    e8805020:	0005ae83          	lw	t4,0(a1)
    e8805024:	3c0eb28b          	extu	t0,t4,15,0
    e8805028:	fe0284e3          	beqz	t0,e8805010 <__multiply+0x70>
    e880502c:	8f1a                	mv	t5,t1
    e880502e:	8fb2                	mv	t6,a2
    e8805030:	4701                	li	a4,0
    e8805032:	0001                	nop
    e8805034:	00000013          	nop
    e8805038:	584fce8b          	lwia	t4,(t6),4,0
    e880503c:	000f2683          	lw	a3,0(t5)
    e8805040:	3c0eb38b          	extu	t2,t4,15,0
    e8805044:	3c06b78b          	extu	a5,a3,15,0
    e8805048:	2453978b          	mulaw	a5,t2,t0
    e880504c:	010ede9b          	srliw	t4,t4,0x10
    e8805050:	0106d69b          	srliw	a3,a3,0x10
    e8805054:	245e968b          	mulaw	a3,t4,t0
    e8805058:	9fb9                	addw	a5,a5,a4
    e880505a:	0107d71b          	srliw	a4,a5,0x10
    e880505e:	3c07b78b          	extu	a5,a5,15,0
    e8805062:	9f35                	addw	a4,a4,a3
    e8805064:	0107169b          	slliw	a3,a4,0x10
    e8805068:	8fd5                	or	a5,a5,a3
    e880506a:	584f578b          	swia	a5,(t5),4,0
    e880506e:	7d07370b          	extu	a4,a4,31,16
    e8805072:	fd0fe3e3          	bltu	t6,a6,e8805038 <__multiply+0x98>
    e8805076:	00ef2023          	sw	a4,0(t5)
    e880507a:	0005ae83          	lw	t4,0(a1)
    e880507e:	7d0ebe8b          	extu	t4,t4,31,16
    e8805082:	f80e8be3          	beqz	t4,e8805018 <__multiply+0x78>
    e8805086:	00032683          	lw	a3,0(t1)
    e880508a:	829a                	mv	t0,t1
    e880508c:	8f32                	mv	t5,a2
    e880508e:	87b6                	mv	a5,a3
    e8805090:	4701                	li	a4,0
    e8805092:	0001                	nop
    e8805094:	00000013          	nop
    e8805098:	000f5f83          	lhu	t6,0(t5)
    e880509c:	0107d79b          	srliw	a5,a5,0x10
    e88050a0:	3c06b68b          	extu	a3,a3,15,0
    e88050a4:	25df978b          	mulaw	a5,t6,t4
    e88050a8:	9f3d                	addw	a4,a4,a5
    e88050aa:	0107179b          	slliw	a5,a4,0x10
    e88050ae:	8edd                	or	a3,a3,a5
    e88050b0:	5842d68b          	swia	a3,(t0),4,0
    e88050b4:	0002a783          	lw	a5,0(t0) # e88001c8 <memset+0x90>
    e88050b8:	584f4f8b          	lwia	t6,(t5),4,0
    e88050bc:	0107571b          	srliw	a4,a4,0x10
    e88050c0:	3c07b68b          	extu	a3,a5,15,0
    e88050c4:	010fdf9b          	srliw	t6,t6,0x10
    e88050c8:	25df968b          	mulaw	a3,t6,t4
    e88050cc:	9f35                	addw	a4,a4,a3
    e88050ce:	86ba                	mv	a3,a4
    e88050d0:	7d07370b          	extu	a4,a4,31,16
    e88050d4:	fd0f62e3          	bltu	t5,a6,e8805098 <__multiply+0xf8>
    e88050d8:	00d2a023          	sw	a3,0(t0)
    e88050dc:	0591                	addi	a1,a1,4
    e88050de:	0311                	addi	t1,t1,4
    e88050e0:	f5c5e0e3          	bltu	a1,t3,e8805020 <__multiply+0x80>
    e88050e4:	00805d63          	blez	s0,e88050fe <__multiply+0x15e>
    e88050e8:	ffc8a783          	lw	a5,-4(a7)
    e88050ec:	18f1                	addi	a7,a7,-4
    e88050ee:	c791                	beqz	a5,e88050fa <__multiply+0x15a>
    e88050f0:	a039                	j	e88050fe <__multiply+0x15e>
    e88050f2:	0001                	nop
    e88050f4:	49c8c78b          	lwib	a5,(a7),-4,0
    e88050f8:	e399                	bnez	a5,e88050fe <__multiply+0x15e>
    e88050fa:	347d                	addiw	s0,s0,-1
    e88050fc:	fc65                	bnez	s0,e88050f4 <__multiply+0x154>
    e88050fe:	c940                	sw	s0,20(a0)
    e8805100:	70a2                	ld	ra,40(sp)
    e8805102:	f891440b          	ldd	s0,s1,(sp),0,4
    e8805106:	7a02                	ld	s4,32(sp)
    e8805108:	fb31490b          	ldd	s2,s3,(sp),1,4
    e880510c:	6145                	addi	sp,sp,48
    e880510e:	8082                	ret

00000000e8805110 <__pow5mult>:
    e8805110:	7179                	addi	sp,sp,-48
    e8805112:	f052                	sd	s4,32(sp)
    e8805114:	f891540b          	sdd	s0,s1,(sp),0,4
    e8805118:	fb31590b          	sdd	s2,s3,(sp),1,4
    e880511c:	f406                	sd	ra,40(sp)
    e880511e:	00367793          	andi	a5,a2,3
    e8805122:	8432                	mv	s0,a2
    e8805124:	89aa                	mv	s3,a0
    e8805126:	8a2e                	mv	s4,a1
    e8805128:	efb5                	bnez	a5,e88051a4 <__pow5mult+0x94>
    e880512a:	8409                	srai	s0,s0,0x2
    e880512c:	8952                	mv	s2,s4
    e880512e:	c429                	beqz	s0,e8805178 <__pow5mult+0x68>
    e8805130:	0709b483          	ld	s1,112(s3)
    e8805134:	c4c1                	beqz	s1,e88051bc <__pow5mult+0xac>
    e8805136:	00147793          	andi	a5,s0,1
    e880513a:	8952                	mv	s2,s4
    e880513c:	eb91                	bnez	a5,e8805150 <__pow5mult+0x40>
    e880513e:	0001                	nop
    e8805140:	8405                	srai	s0,s0,0x1
    e8805142:	c81d                	beqz	s0,e8805178 <__pow5mult+0x68>
    e8805144:	6088                	ld	a0,0(s1)
    e8805146:	c139                	beqz	a0,e880518c <__pow5mult+0x7c>
    e8805148:	84aa                	mv	s1,a0
    e880514a:	00147793          	andi	a5,s0,1
    e880514e:	dbed                	beqz	a5,e8805140 <__pow5mult+0x30>
    e8805150:	8626                	mv	a2,s1
    e8805152:	85ca                	mv	a1,s2
    e8805154:	854e                	mv	a0,s3
    e8805156:	e4bff0ef          	jal	ra,e8804fa0 <__multiply>
    e880515a:	04090363          	beqz	s2,e88051a0 <__pow5mult+0x90>
    e880515e:	00892703          	lw	a4,8(s2)
    e8805162:	0789b783          	ld	a5,120(s3)
    e8805166:	8405                	srai	s0,s0,0x1
    e8805168:	66e7c68b          	lrd	a3,a5,a4,3
    e880516c:	00d93023          	sd	a3,0(s2)
    e8805170:	66e7d90b          	srd	s2,a5,a4,3
    e8805174:	892a                	mv	s2,a0
    e8805176:	f479                	bnez	s0,e8805144 <__pow5mult+0x34>
    e8805178:	70a2                	ld	ra,40(sp)
    e880517a:	f891440b          	ldd	s0,s1,(sp),0,4
    e880517e:	854a                	mv	a0,s2
    e8805180:	7a02                	ld	s4,32(sp)
    e8805182:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8805186:	6145                	addi	sp,sp,48
    e8805188:	8082                	ret
    e880518a:	0001                	nop
    e880518c:	8626                	mv	a2,s1
    e880518e:	85a6                	mv	a1,s1
    e8805190:	854e                	mv	a0,s3
    e8805192:	e0fff0ef          	jal	ra,e8804fa0 <__multiply>
    e8805196:	e088                	sd	a0,0(s1)
    e8805198:	84aa                	mv	s1,a0
    e880519a:	00053023          	sd	zero,0(a0)
    e880519e:	b775                	j	e880514a <__pow5mult+0x3a>
    e88051a0:	892a                	mv	s2,a0
    e88051a2:	bf79                	j	e8805140 <__pow5mult+0x30>
    e88051a4:	37fd                	addiw	a5,a5,-1
    e88051a6:	0009a717          	auipc	a4,0x9a
    e88051aa:	02a70713          	addi	a4,a4,42 # e889f1d0 <p05.3384>
    e88051ae:	44f7460b          	lrw	a2,a4,a5,2
    e88051b2:	4681                	li	a3,0
    e88051b4:	b7dff0ef          	jal	ra,e8804d30 <__multadd>
    e88051b8:	8a2a                	mv	s4,a0
    e88051ba:	bf85                	j	e880512a <__pow5mult+0x1a>
    e88051bc:	4585                	li	a1,1
    e88051be:	854e                	mv	a0,s3
    e88051c0:	ae1ff0ef          	jal	ra,e8804ca0 <_Balloc>
    e88051c4:	84aa                	mv	s1,a0
    e88051c6:	27100793          	li	a5,625
    e88051ca:	1782                	slli	a5,a5,0x20
    e88051cc:	0785                	addi	a5,a5,1
    e88051ce:	00f53a23          	sd	a5,20(a0)
    e88051d2:	06a9b823          	sd	a0,112(s3)
    e88051d6:	00053023          	sd	zero,0(a0)
    e88051da:	bfb1                	j	e8805136 <__pow5mult+0x26>
    e88051dc:	00000013          	nop

00000000e88051e0 <__lshift>:
    e88051e0:	7139                	addi	sp,sp,-64
    e88051e2:	f891540b          	sdd	s0,s1,(sp),0,4
    e88051e6:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88051ea:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e88051ee:	0145aa03          	lw	s4,20(a1)
    e88051f2:	f85a                	sd	s6,48(sp)
    e88051f4:	45dc                	lw	a5,12(a1)
    e88051f6:	40565b1b          	sraiw	s6,a2,0x5
    e88051fa:	016a0a3b          	addw	s4,s4,s6
    e88051fe:	fc06                	sd	ra,56(sp)
    e8805200:	001a041b          	addiw	s0,s4,1
    e8805204:	89ae                	mv	s3,a1
    e8805206:	8932                	mv	s2,a2
    e8805208:	84da                	mv	s1,s6
    e880520a:	8aaa                	mv	s5,a0
    e880520c:	458c                	lw	a1,8(a1)
    e880520e:	0087da63          	bge	a5,s0,e8805222 <__lshift+0x42>
    e8805212:	0001                	nop
    e8805214:	00000013          	nop
    e8805218:	0017979b          	slliw	a5,a5,0x1
    e880521c:	2585                	addiw	a1,a1,1
    e880521e:	fe87cde3          	blt	a5,s0,e8805218 <__lshift+0x38>
    e8805222:	8556                	mv	a0,s5
    e8805224:	a7dff0ef          	jal	ra,e8804ca0 <_Balloc>
    e8805228:	01850693          	addi	a3,a0,24
    e880522c:	03605163          	blez	s6,e880524e <__lshift+0x6e>
    e8805230:	34fd                	addiw	s1,s1,-1
    e8805232:	7c04b48b          	extu	s1,s1,31,0
    e8805236:	00748713          	addi	a4,s1,7
    e880523a:	04e5170b          	addsl	a4,a0,a4,2
    e880523e:	87b6                	mv	a5,a3
    e8805240:	5847d00b          	swia	zero,(a5),4,0
    e8805244:	fee79ee3          	bne	a5,a4,e8805240 <__lshift+0x60>
    e8805248:	0485                	addi	s1,s1,1
    e880524a:	0496968b          	addsl	a3,a3,s1,2
    e880524e:	0149a803          	lw	a6,20(s3)
    e8805252:	01898793          	addi	a5,s3,24
    e8805256:	01f97613          	andi	a2,s2,31
    e880525a:	0507980b          	addsl	a6,a5,a6,2
    e880525e:	ce39                	beqz	a2,e88052bc <__lshift+0xdc>
    e8805260:	02000893          	li	a7,32
    e8805264:	40c888bb          	subw	a7,a7,a2
    e8805268:	4701                	li	a4,0
    e880526a:	0001                	nop
    e880526c:	00000013          	nop
    e8805270:	438c                	lw	a1,0(a5)
    e8805272:	00c595bb          	sllw	a1,a1,a2
    e8805276:	8f4d                	or	a4,a4,a1
    e8805278:	5846d70b          	swia	a4,(a3),4,0
    e880527c:	5847c70b          	lwia	a4,(a5),4,0
    e8805280:	0117573b          	srlw	a4,a4,a7
    e8805284:	ff07e6e3          	bltu	a5,a6,e8805270 <__lshift+0x90>
    e8805288:	c298                	sw	a4,0(a3)
    e880528a:	42e41a0b          	mvnez	s4,s0,a4
    e880528e:	078ab783          	ld	a5,120(s5)
    e8805292:	0089a703          	lw	a4,8(s3)
    e8805296:	01452a23          	sw	s4,20(a0)
    e880529a:	70e2                	ld	ra,56(sp)
    e880529c:	66e7c68b          	lrd	a3,a5,a4,3
    e88052a0:	7b42                	ld	s6,48(sp)
    e88052a2:	00d9b023          	sd	a3,0(s3)
    e88052a6:	66e7d98b          	srd	s3,a5,a4,3
    e88052aa:	f891440b          	ldd	s0,s1,(sp),0,4
    e88052ae:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88052b2:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88052b6:	6121                	addi	sp,sp,64
    e88052b8:	8082                	ret
    e88052ba:	0001                	nop
    e88052bc:	5847c70b          	lwia	a4,(a5),4,0
    e88052c0:	5846d70b          	swia	a4,(a3),4,0
    e88052c4:	fd07f5e3          	bgeu	a5,a6,e880528e <__lshift+0xae>
    e88052c8:	5847c70b          	lwia	a4,(a5),4,0
    e88052cc:	5846d70b          	swia	a4,(a3),4,0
    e88052d0:	ff07e6e3          	bltu	a5,a6,e88052bc <__lshift+0xdc>
    e88052d4:	bf6d                	j	e880528e <__lshift+0xae>
    e88052d6:	00000013          	nop
    e88052da:	00000013          	nop
    e88052de:	0001                	nop

00000000e88052e0 <__mcmp>:
    e88052e0:	4958                	lw	a4,20(a0)
    e88052e2:	49dc                	lw	a5,20(a1)
    e88052e4:	862a                	mv	a2,a0
    e88052e6:	40f7053b          	subw	a0,a4,a5
    e88052ea:	e90d                	bnez	a0,e880531c <__mcmp+0x3c>
    e88052ec:	00279713          	slli	a4,a5,0x2
    e88052f0:	0661                	addi	a2,a2,24
    e88052f2:	05e1                	addi	a1,a1,24
    e88052f4:	00e607b3          	add	a5,a2,a4
    e88052f8:	95ba                	add	a1,a1,a4
    e88052fa:	a019                	j	e8805300 <__mcmp+0x20>
    e88052fc:	02f67063          	bgeu	a2,a5,e880531c <__mcmp+0x3c>
    e8805300:	49c7c70b          	lwib	a4,(a5),-4,0
    e8805304:	49c5c68b          	lwib	a3,(a1),-4,0
    e8805308:	fed70ae3          	beq	a4,a3,e88052fc <__mcmp+0x1c>
    e880530c:	00d73733          	sltu	a4,a4,a3
    e8805310:	57fd                	li	a5,-1
    e8805312:	4505                	li	a0,1
    e8805314:	42e7950b          	mvnez	a0,a5,a4
    e8805318:	8082                	ret
    e880531a:	0001                	nop
    e880531c:	8082                	ret
    e880531e:	0001                	nop

00000000e8805320 <__mdiff>:
    e8805320:	7179                	addi	sp,sp,-48
    e8805322:	f891540b          	sdd	s0,s1,(sp),0,4
    e8805326:	fb31590b          	sdd	s2,s3,(sp),1,4
    e880532a:	0145a903          	lw	s2,20(a1)
    e880532e:	4a58                	lw	a4,20(a2)
    e8805330:	f052                	sd	s4,32(sp)
    e8805332:	f406                	sd	ra,40(sp)
    e8805334:	40e9093b          	subw	s2,s2,a4
    e8805338:	89ae                	mv	s3,a1
    e880533a:	8a32                	mv	s4,a2
    e880533c:	01858413          	addi	s0,a1,24
    e8805340:	01860493          	addi	s1,a2,24
    e8805344:	02091a63          	bnez	s2,e8805378 <__mdiff+0x58>
    e8805348:	070a                	slli	a4,a4,0x2
    e880534a:	00e407b3          	add	a5,s0,a4
    e880534e:	9726                	add	a4,a4,s1
    e8805350:	a021                	j	e8805358 <__mdiff+0x38>
    e8805352:	0001                	nop
    e8805354:	0ef47c63          	bgeu	s0,a5,e880544c <__mdiff+0x12c>
    e8805358:	49c7c58b          	lwib	a1,(a5),-4,0
    e880535c:	49c7468b          	lwib	a3,(a4),-4,0
    e8805360:	fed58ae3          	beq	a1,a3,e8805354 <__mdiff+0x34>
    e8805364:	00d5fd63          	bgeu	a1,a3,e880537e <__mdiff+0x5e>
    e8805368:	8722                	mv	a4,s0
    e880536a:	87ce                	mv	a5,s3
    e880536c:	8426                	mv	s0,s1
    e880536e:	89d2                	mv	s3,s4
    e8805370:	84ba                	mv	s1,a4
    e8805372:	8a3e                	mv	s4,a5
    e8805374:	4905                	li	s2,1
    e8805376:	a021                	j	e880537e <__mdiff+0x5e>
    e8805378:	fe0948e3          	bltz	s2,e8805368 <__mdiff+0x48>
    e880537c:	4901                	li	s2,0
    e880537e:	0089a583          	lw	a1,8(s3)
    e8805382:	91fff0ef          	jal	ra,e8804ca0 <_Balloc>
    e8805386:	01850813          	addi	a6,a0,24
    e880538a:	0149a303          	lw	t1,20(s3)
    e880538e:	014a2e03          	lw	t3,20(s4)
    e8805392:	4681                	li	a3,0
    e8805394:	01252823          	sw	s2,16(a0)
    e8805398:	04641e8b          	addsl	t4,s0,t1,2
    e880539c:	05c49e0b          	addsl	t3,s1,t3,2
    e88053a0:	a019                	j	e88053a6 <__mdiff+0x86>
    e88053a2:	0001                	nop
    e88053a4:	8846                	mv	a6,a7
    e88053a6:	5844460b          	lwia	a2,(s0),4,0
    e88053aa:	5844c58b          	lwia	a1,(s1),4,0
    e88053ae:	88c2                	mv	a7,a6
    e88053b0:	3c06370b          	extu	a4,a2,15,0
    e88053b4:	3c05b78b          	extu	a5,a1,15,0
    e88053b8:	9f35                	addw	a4,a4,a3
    e88053ba:	9f1d                	subw	a4,a4,a5
    e88053bc:	0106569b          	srliw	a3,a2,0x10
    e88053c0:	0105d59b          	srliw	a1,a1,0x10
    e88053c4:	4107579b          	sraiw	a5,a4,0x10
    e88053c8:	9e8d                	subw	a3,a3,a1
    e88053ca:	9ebd                	addw	a3,a3,a5
    e88053cc:	0106961b          	slliw	a2,a3,0x10
    e88053d0:	3c07378b          	extu	a5,a4,15,0
    e88053d4:	8fd1                	or	a5,a5,a2
    e88053d6:	2781                	sext.w	a5,a5
    e88053d8:	5848d78b          	swia	a5,(a7),4,0
    e88053dc:	4106d69b          	sraiw	a3,a3,0x10
    e88053e0:	fdc4e2e3          	bltu	s1,t3,e88053a4 <__mdiff+0x84>
    e88053e4:	05d47563          	bgeu	s0,t4,e880542e <__mdiff+0x10e>
    e88053e8:	fffe8813          	addi	a6,t4,-1
    e88053ec:	40880833          	sub	a6,a6,s0
    e88053f0:	00285813          	srli	a6,a6,0x2
    e88053f4:	4581                	li	a1,0
    e88053f6:	a011                	j	e88053fa <__mdiff+0xda>
    e88053f8:	85f2                	mv	a1,t3
    e88053fa:	44b4460b          	lrw	a2,s0,a1,2
    e88053fe:	00158e13          	addi	t3,a1,1
    e8805402:	3c06370b          	extu	a4,a2,15,0
    e8805406:	9f35                	addw	a4,a4,a3
    e8805408:	4107579b          	sraiw	a5,a4,0x10
    e880540c:	0106569b          	srliw	a3,a2,0x10
    e8805410:	9ebd                	addw	a3,a3,a5
    e8805412:	0106961b          	slliw	a2,a3,0x10
    e8805416:	3c07378b          	extu	a5,a4,15,0
    e880541a:	8fd1                	or	a5,a5,a2
    e880541c:	2781                	sext.w	a5,a5
    e880541e:	44b8d78b          	srw	a5,a7,a1,2
    e8805422:	4106d69b          	sraiw	a3,a3,0x10
    e8805426:	fcb819e3          	bne	a6,a1,e88053f8 <__mdiff+0xd8>
    e880542a:	0508980b          	addsl	a6,a7,a6,2
    e880542e:	e789                	bnez	a5,e8805438 <__mdiff+0x118>
    e8805430:	49c8478b          	lwib	a5,(a6),-4,0
    e8805434:	337d                	addiw	t1,t1,-1
    e8805436:	dfed                	beqz	a5,e8805430 <__mdiff+0x110>
    e8805438:	00652a23          	sw	t1,20(a0)
    e880543c:	70a2                	ld	ra,40(sp)
    e880543e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8805442:	7a02                	ld	s4,32(sp)
    e8805444:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8805448:	6145                	addi	sp,sp,48
    e880544a:	8082                	ret
    e880544c:	4581                	li	a1,0
    e880544e:	853ff0ef          	jal	ra,e8804ca0 <_Balloc>
    e8805452:	4785                	li	a5,1
    e8805454:	00f53a23          	sd	a5,20(a0)
    e8805458:	f891440b          	ldd	s0,s1,(sp),0,4
    e880545c:	70a2                	ld	ra,40(sp)
    e880545e:	7a02                	ld	s4,32(sp)
    e8805460:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8805464:	6145                	addi	sp,sp,48
    e8805466:	8082                	ret
    e8805468:	00000013          	nop
    e880546c:	00000013          	nop

00000000e8805470 <__ulp>:
    e8805470:	e20507d3          	fmv.x.d	a5,fa0
    e8805474:	7ff00737          	lui	a4,0x7ff00
    e8805478:	fe07b78b          	extu	a5,a5,63,32
    e880547c:	8f7d                	and	a4,a4,a5
    e880547e:	fcc007b7          	lui	a5,0xfcc00
    e8805482:	9fb9                	addw	a5,a5,a4
    e8805484:	873e                	mv	a4,a5
    e8805486:	00e05763          	blez	a4,e8805494 <__ulp+0x24>
    e880548a:	1782                	slli	a5,a5,0x20
    e880548c:	f2078553          	fmv.d.x	fa0,a5
    e8805490:	8082                	ret
    e8805492:	0001                	nop
    e8805494:	40f007bb          	negw	a5,a5
    e8805498:	4147d71b          	sraiw	a4,a5,0x14
    e880549c:	46cd                	li	a3,19
    e880549e:	00e6c763          	blt	a3,a4,e88054ac <__ulp+0x3c>
    e88054a2:	000807b7          	lui	a5,0x80
    e88054a6:	40e7d7bb          	sraw	a5,a5,a4
    e88054aa:	b7c5                	j	e880548a <__ulp+0x1a>
    e88054ac:	46f9                	li	a3,30
    e88054ae:	fec7079b          	addiw	a5,a4,-20
    e88054b2:	80000737          	lui	a4,0x80000
    e88054b6:	00f7573b          	srlw	a4,a4,a5
    e88054ba:	00f6a7b3          	slt	a5,a3,a5
    e88054be:	4685                	li	a3,1
    e88054c0:	40f7168b          	mveqz	a3,a4,a5
    e88054c4:	7c06b78b          	extu	a5,a3,31,0
    e88054c8:	f2078553          	fmv.d.x	fa0,a5
    e88054cc:	8082                	ret
    e88054ce:	0001                	nop

00000000e88054d0 <__b2d>:
    e88054d0:	7179                	addi	sp,sp,-48
    e88054d2:	f891540b          	sdd	s0,s1,(sp),0,4
    e88054d6:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88054da:	01452903          	lw	s2,20(a0)
    e88054de:	01850493          	addi	s1,a0,24
    e88054e2:	f052                	sd	s4,32(sp)
    e88054e4:	0524990b          	addsl	s2,s1,s2,2
    e88054e8:	ffc92403          	lw	s0,-4(s2)
    e88054ec:	8a2e                	mv	s4,a1
    e88054ee:	f406                	sd	ra,40(sp)
    e88054f0:	8522                	mv	a0,s0
    e88054f2:	9bfff0ef          	jal	ra,e8804eb0 <__hi0bits>
    e88054f6:	ffc90993          	addi	s3,s2,-4
    e88054fa:	02000693          	li	a3,32
    e88054fe:	40a687bb          	subw	a5,a3,a0
    e8805502:	00fa2023          	sw	a5,0(s4)
    e8805506:	47a9                	li	a5,10
    e8805508:	08a7d663          	bge	a5,a0,e8805594 <__b2d+0xc4>
    e880550c:	ff55079b          	addiw	a5,a0,-11
    e8805510:	0534fe63          	bgeu	s1,s3,e880556c <__b2d+0x9c>
    e8805514:	ff892703          	lw	a4,-8(s2)
    e8805518:	cfa1                	beqz	a5,e8805570 <__b2d+0xa0>
    e880551a:	40f6853b          	subw	a0,a3,a5
    e880551e:	00f416bb          	sllw	a3,s0,a5
    e8805522:	00a7543b          	srlw	s0,a4,a0
    e8805526:	8ec1                	or	a3,a3,s0
    e8805528:	3ff00437          	lui	s0,0x3ff00
    e880552c:	8ec1                	or	a3,a3,s0
    e880552e:	00f7173b          	sllw	a4,a4,a5
    e8805532:	ff890613          	addi	a2,s2,-8
    e8805536:	02069793          	slli	a5,a3,0x20
    e880553a:	86ba                	mv	a3,a4
    e880553c:	00c4f863          	bgeu	s1,a2,e880554c <__b2d+0x7c>
    e8805540:	ff492683          	lw	a3,-12(s2)
    e8805544:	00a6d53b          	srlw	a0,a3,a0
    e8805548:	00e566b3          	or	a3,a0,a4
    e880554c:	70a2                	ld	ra,40(sp)
    e880554e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8805552:	9381                	srli	a5,a5,0x20
    e8805554:	7c06b68b          	extu	a3,a3,31,0
    e8805558:	1782                	slli	a5,a5,0x20
    e880555a:	8fd5                	or	a5,a5,a3
    e880555c:	7a02                	ld	s4,32(sp)
    e880555e:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8805562:	f2078553          	fmv.d.x	fa0,a5
    e8805566:	6145                	addi	sp,sp,48
    e8805568:	8082                	ret
    e880556a:	0001                	nop
    e880556c:	4701                	li	a4,0
    e880556e:	e7ad                	bnez	a5,e88055d8 <__b2d+0x108>
    e8805570:	3ff007b7          	lui	a5,0x3ff00
    e8805574:	8fc1                	or	a5,a5,s0
    e8805576:	70a2                	ld	ra,40(sp)
    e8805578:	f891440b          	ldd	s0,s1,(sp),0,4
    e880557c:	7c07370b          	extu	a4,a4,31,0
    e8805580:	1782                	slli	a5,a5,0x20
    e8805582:	8fd9                	or	a5,a5,a4
    e8805584:	7a02                	ld	s4,32(sp)
    e8805586:	fb31490b          	ldd	s2,s3,(sp),1,4
    e880558a:	f2078553          	fmv.d.x	fa0,a5
    e880558e:	6145                	addi	sp,sp,48
    e8805590:	8082                	ret
    e8805592:	0001                	nop
    e8805594:	46ad                	li	a3,11
    e8805596:	9e89                	subw	a3,a3,a0
    e8805598:	3ff00737          	lui	a4,0x3ff00
    e880559c:	00d457bb          	srlw	a5,s0,a3
    e88055a0:	8fd9                	or	a5,a5,a4
    e88055a2:	1782                	slli	a5,a5,0x20
    e88055a4:	4701                	li	a4,0
    e88055a6:	0134f663          	bgeu	s1,s3,e88055b2 <__b2d+0xe2>
    e88055aa:	ff892703          	lw	a4,-8(s2)
    e88055ae:	00d7573b          	srlw	a4,a4,a3
    e88055b2:	2555                	addiw	a0,a0,21
    e88055b4:	00a4143b          	sllw	s0,s0,a0
    e88055b8:	8c59                	or	s0,s0,a4
    e88055ba:	7c04340b          	extu	s0,s0,31,0
    e88055be:	9381                	srli	a5,a5,0x20
    e88055c0:	1782                	slli	a5,a5,0x20
    e88055c2:	8fc1                	or	a5,a5,s0
    e88055c4:	70a2                	ld	ra,40(sp)
    e88055c6:	f891440b          	ldd	s0,s1,(sp),0,4
    e88055ca:	7a02                	ld	s4,32(sp)
    e88055cc:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88055d0:	f2078553          	fmv.d.x	fa0,a5
    e88055d4:	6145                	addi	sp,sp,48
    e88055d6:	8082                	ret
    e88055d8:	00f417bb          	sllw	a5,s0,a5
    e88055dc:	3ff00437          	lui	s0,0x3ff00
    e88055e0:	8fc1                	or	a5,a5,s0
    e88055e2:	1782                	slli	a5,a5,0x20
    e88055e4:	4681                	li	a3,0
    e88055e6:	b79d                	j	e880554c <__b2d+0x7c>
    e88055e8:	00000013          	nop
    e88055ec:	00000013          	nop

00000000e88055f0 <__d2b>:
    e88055f0:	7139                	addi	sp,sp,-64
    e88055f2:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88055f6:	fd31590b          	sdd	s2,s3,(sp),2,4
    e88055fa:	e2050453          	fmv.x.d	s0,fa0
    e88055fe:	89ae                	mv	s3,a1
    e8805600:	4585                	li	a1,1
    e8805602:	f852                	sd	s4,48(sp)
    e8805604:	fc06                	sd	ra,56(sp)
    e8805606:	8932                	mv	s2,a2
    e8805608:	e98ff0ef          	jal	ra,e8804ca0 <_Balloc>
    e880560c:	fb44348b          	extu	s1,s0,62,52
    e8805610:	ce04370b          	extu	a4,s0,51,32
    e8805614:	001007b7          	lui	a5,0x100
    e8805618:	8fd9                	or	a5,a5,a4
    e880561a:	4097178b          	mveqz	a5,a4,s1
    e880561e:	c63e                	sw	a5,12(sp)
    e8805620:	2401                	sext.w	s0,s0
    e8805622:	8a2a                	mv	s4,a0
    e8805624:	c435                	beqz	s0,e8805690 <__d2b+0xa0>
    e8805626:	0028                	addi	a0,sp,8
    e8805628:	c422                	sw	s0,8(sp)
    e880562a:	8d7ff0ef          	jal	ra,e8804f00 <__lo0bits>
    e880562e:	e129                	bnez	a0,e8805670 <__d2b+0x80>
    e8805630:	4722                	lw	a4,8(sp)
    e8805632:	47b2                	lw	a5,12(sp)
    e8805634:	00ea2c23          	sw	a4,24(s4)
    e8805638:	00f03433          	snez	s0,a5
    e880563c:	0405                	addi	s0,s0,1
    e880563e:	00fa2e23          	sw	a5,28(s4)
    e8805642:	008a2a23          	sw	s0,20(s4)
    e8805646:	c0b5                	beqz	s1,e88056aa <__d2b+0xba>
    e8805648:	bcd4849b          	addiw	s1,s1,-1075
    e880564c:	9ca9                	addw	s1,s1,a0
    e880564e:	0099a023          	sw	s1,0(s3)
    e8805652:	03500793          	li	a5,53
    e8805656:	40a7853b          	subw	a0,a5,a0
    e880565a:	00a92023          	sw	a0,0(s2)
    e880565e:	70e2                	ld	ra,56(sp)
    e8805660:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8805664:	8552                	mv	a0,s4
    e8805666:	fd31490b          	ldd	s2,s3,(sp),2,4
    e880566a:	7a42                	ld	s4,48(sp)
    e880566c:	6121                	addi	sp,sp,64
    e880566e:	8082                	ret
    e8805670:	4732                	lw	a4,12(sp)
    e8805672:	46a2                	lw	a3,8(sp)
    e8805674:	02000793          	li	a5,32
    e8805678:	9f89                	subw	a5,a5,a0
    e880567a:	00f717bb          	sllw	a5,a4,a5
    e880567e:	8fd5                	or	a5,a5,a3
    e8805680:	00a7573b          	srlw	a4,a4,a0
    e8805684:	00fa2c23          	sw	a5,24(s4)
    e8805688:	c63a                	sw	a4,12(sp)
    e880568a:	87ba                	mv	a5,a4
    e880568c:	b775                	j	e8805638 <__d2b+0x48>
    e880568e:	0001                	nop
    e8805690:	0068                	addi	a0,sp,12
    e8805692:	86fff0ef          	jal	ra,e8804f00 <__lo0bits>
    e8805696:	0205051b          	addiw	a0,a0,32
    e880569a:	4785                	li	a5,1
    e880569c:	00fa2a23          	sw	a5,20(s4)
    e88056a0:	47b2                	lw	a5,12(sp)
    e88056a2:	4405                	li	s0,1
    e88056a4:	00fa2c23          	sw	a5,24(s4)
    e88056a8:	f0c5                	bnez	s1,e8805648 <__d2b+0x58>
    e88056aa:	bce5051b          	addiw	a0,a0,-1074
    e88056ae:	048a178b          	addsl	a5,s4,s0,2
    e88056b2:	00a9a023          	sw	a0,0(s3)
    e88056b6:	4bc8                	lw	a0,20(a5)
    e88056b8:	0054141b          	slliw	s0,s0,0x5
    e88056bc:	ff4ff0ef          	jal	ra,e8804eb0 <__hi0bits>
    e88056c0:	9c09                	subw	s0,s0,a0
    e88056c2:	00892023          	sw	s0,0(s2)
    e88056c6:	70e2                	ld	ra,56(sp)
    e88056c8:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88056cc:	8552                	mv	a0,s4
    e88056ce:	fd31490b          	ldd	s2,s3,(sp),2,4
    e88056d2:	7a42                	ld	s4,48(sp)
    e88056d4:	6121                	addi	sp,sp,64
    e88056d6:	8082                	ret
    e88056d8:	00000013          	nop
    e88056dc:	00000013          	nop

00000000e88056e0 <__ratio>:
    e88056e0:	7179                	addi	sp,sp,-48
    e88056e2:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88056e6:	84ae                	mv	s1,a1
    e88056e8:	002c                	addi	a1,sp,8
    e88056ea:	f406                	sd	ra,40(sp)
    e88056ec:	f04a                	sd	s2,32(sp)
    e88056ee:	892a                	mv	s2,a0
    e88056f0:	de1ff0ef          	jal	ra,e88054d0 <__b2d>
    e88056f4:	e2050453          	fmv.x.d	s0,fa0
    e88056f8:	006c                	addi	a1,sp,12
    e88056fa:	8526                	mv	a0,s1
    e88056fc:	dd5ff0ef          	jal	ra,e88054d0 <__b2d>
    e8805700:	e2050753          	fmv.x.d	a4,fa0
    e8805704:	48d4                	lw	a3,20(s1)
    e8805706:	01492783          	lw	a5,20(s2)
    e880570a:	9f95                	subw	a5,a5,a3
    e880570c:	e2c1468b          	lwd	a3,a2,(sp),1,3
    e8805710:	0057979b          	slliw	a5,a5,0x5
    e8805714:	9e91                	subw	a3,a3,a2
    e8805716:	9ebd                	addw	a3,a3,a5
    e8805718:	87b6                	mv	a5,a3
    e880571a:	02d05763          	blez	a3,e8805748 <__ratio+0x68>
    e880571e:	fe04368b          	extu	a3,s0,63,32
    e8805722:	0147979b          	slliw	a5,a5,0x14
    e8805726:	9fb5                	addw	a5,a5,a3
    e8805728:	1782                	slli	a5,a5,0x20
    e880572a:	7c04340b          	extu	s0,s0,31,0
    e880572e:	8c5d                	or	s0,s0,a5
    e8805730:	f20407d3          	fmv.d.x	fa5,s0
    e8805734:	70a2                	ld	ra,40(sp)
    e8805736:	fa91440b          	ldd	s0,s1,(sp),1,4
    e880573a:	f2070753          	fmv.d.x	fa4,a4
    e880573e:	7902                	ld	s2,32(sp)
    e8805740:	1ae7f553          	fdiv.d	fa0,fa5,fa4
    e8805744:	6145                	addi	sp,sp,48
    e8805746:	8082                	ret
    e8805748:	fe07368b          	extu	a3,a4,63,32
    e880574c:	0147979b          	slliw	a5,a5,0x14
    e8805750:	40f687bb          	subw	a5,a3,a5
    e8805754:	1782                	slli	a5,a5,0x20
    e8805756:	7c07370b          	extu	a4,a4,31,0
    e880575a:	8f5d                	or	a4,a4,a5
    e880575c:	f20407d3          	fmv.d.x	fa5,s0
    e8805760:	70a2                	ld	ra,40(sp)
    e8805762:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8805766:	f2070753          	fmv.d.x	fa4,a4
    e880576a:	7902                	ld	s2,32(sp)
    e880576c:	1ae7f553          	fdiv.d	fa0,fa5,fa4
    e8805770:	6145                	addi	sp,sp,48
    e8805772:	8082                	ret
    e8805774:	00000013          	nop
    e8805778:	00000013          	nop
    e880577c:	00000013          	nop

00000000e8805780 <_mprec_log10>:
    e8805780:	47dd                	li	a5,23
    e8805782:	02a7d163          	bge	a5,a0,e88057a4 <_mprec_log10+0x24>
    e8805786:	000b9797          	auipc	a5,0xb9
    e880578a:	6f27b507          	fld	fa0,1778(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880578e:	000be797          	auipc	a5,0xbe
    e8805792:	1d27b787          	fld	fa5,466(a5) # e88c3960 <kSRPParameters_3072_SHA512+0xd0>
    e8805796:	0001                	nop
    e8805798:	357d                	addiw	a0,a0,-1
    e880579a:	12f57553          	fmul.d	fa0,fa0,fa5
    e880579e:	fd6d                	bnez	a0,e8805798 <_mprec_log10+0x18>
    e88057a0:	8082                	ret
    e88057a2:	0001                	nop
    e88057a4:	0009a797          	auipc	a5,0x9a
    e88057a8:	a2c78793          	addi	a5,a5,-1492 # e889f1d0 <p05.3384>
    e88057ac:	06a7950b          	addsl	a0,a5,a0,3
    e88057b0:	2908                	fld	fa0,16(a0)
    e88057b2:	8082                	ret
    e88057b4:	00000013          	nop
    e88057b8:	00000013          	nop
    e88057bc:	00000013          	nop

00000000e88057c0 <__copybits>:
    e88057c0:	4a58                	lw	a4,20(a2)
    e88057c2:	35fd                	addiw	a1,a1,-1
    e88057c4:	4055d59b          	sraiw	a1,a1,0x5
    e88057c8:	01860813          	addi	a6,a2,24
    e88057cc:	0585                	addi	a1,a1,1
    e88057ce:	04e8170b          	addsl	a4,a6,a4,2
    e88057d2:	04b5158b          	addsl	a1,a0,a1,2
    e88057d6:	02e87463          	bgeu	a6,a4,e88057fe <__copybits+0x3e>
    e88057da:	8f11                	sub	a4,a4,a2
    e88057dc:	171d                	addi	a4,a4,-25
    e88057de:	8309                	srli	a4,a4,0x2
    e88057e0:	00170893          	addi	a7,a4,1 # 3ff00001 <memcmp-0xa88fffff>
    e88057e4:	4781                	li	a5,0
    e88057e6:	a011                	j	e88057ea <__copybits+0x2a>
    e88057e8:	87b2                	mv	a5,a2
    e88057ea:	44f8468b          	lrw	a3,a6,a5,2
    e88057ee:	00178613          	addi	a2,a5,1
    e88057f2:	44f5568b          	srw	a3,a0,a5,2
    e88057f6:	fee799e3          	bne	a5,a4,e88057e8 <__copybits+0x28>
    e88057fa:	0515150b          	addsl	a0,a0,a7,2
    e88057fe:	00b57963          	bgeu	a0,a1,e8805810 <__copybits+0x50>
    e8805802:	0001                	nop
    e8805804:	00000013          	nop
    e8805808:	5845500b          	swia	zero,(a0),4,0
    e880580c:	feb56ee3          	bltu	a0,a1,e8805808 <__copybits+0x48>
    e8805810:	8082                	ret
    e8805812:	0001                	nop
    e8805814:	00000013          	nop
    e8805818:	00000013          	nop
    e880581c:	00000013          	nop

00000000e8805820 <__any_on>:
    e8805820:	4950                	lw	a2,20(a0)
    e8805822:	4055d713          	srai	a4,a1,0x5
    e8805826:	01850693          	addi	a3,a0,24
    e880582a:	02e65363          	bge	a2,a4,e8805850 <__any_on+0x30>
    e880582e:	04c6978b          	addsl	a5,a3,a2,2
    e8805832:	04f6f063          	bgeu	a3,a5,e8805872 <__any_on+0x52>
    e8805836:	ffc7a503          	lw	a0,-4(a5)
    e880583a:	17f1                	addi	a5,a5,-4
    e880583c:	e519                	bnez	a0,e880584a <__any_on+0x2a>
    e880583e:	0001                	nop
    e8805840:	02f6f863          	bgeu	a3,a5,e8805870 <__any_on+0x50>
    e8805844:	49c7c70b          	lwib	a4,(a5),-4,0
    e8805848:	df65                	beqz	a4,e8805840 <__any_on+0x20>
    e880584a:	4505                	li	a0,1
    e880584c:	8082                	ret
    e880584e:	0001                	nop
    e8805850:	04e6978b          	addsl	a5,a3,a4,2
    e8805854:	fcc75fe3          	bge	a4,a2,e8805832 <__any_on+0x12>
    e8805858:	89fd                	andi	a1,a1,31
    e880585a:	dde1                	beqz	a1,e8805832 <__any_on+0x12>
    e880585c:	44e6c60b          	lrw	a2,a3,a4,2
    e8805860:	4505                	li	a0,1
    e8805862:	00b6573b          	srlw	a4,a2,a1
    e8805866:	00b715bb          	sllw	a1,a4,a1
    e880586a:	fcc584e3          	beq	a1,a2,e8805832 <__any_on+0x12>
    e880586e:	8082                	ret
    e8805870:	8082                	ret
    e8805872:	4501                	li	a0,0
    e8805874:	8082                	ret
	...

00000000e8805880 <frexp>:
    e8805880:	e20507d3          	fmv.x.d	a5,fa0
    e8805884:	00052023          	sw	zero,0(a0)
    e8805888:	7ff00637          	lui	a2,0x7ff00
    e880588c:	fa07b70b          	extu	a4,a5,62,32
    e8805890:	4207d693          	srai	a3,a5,0x20
    e8805894:	04c75c63          	bge	a4,a2,e88058ec <frexp+0x6c>
    e8805898:	00f76633          	or	a2,a4,a5
    e880589c:	2601                	sext.w	a2,a2
    e880589e:	c639                	beqz	a2,e88058ec <frexp+0x6c>
    e88058a0:	7ff00637          	lui	a2,0x7ff00
    e88058a4:	8e75                	and	a2,a2,a3
    e88058a6:	4581                	li	a1,0
    e88058a8:	e20d                	bnez	a2,e88058ca <frexp+0x4a>
    e88058aa:	000ce717          	auipc	a4,0xce
    e88058ae:	59673787          	fld	fa5,1430(a4) # e88d3e40 <dhcp_discover_request_options+0x638>
    e88058b2:	12f577d3          	fmul.d	fa5,fa0,fa5
    e88058b6:	fca00593          	li	a1,-54
    e88058ba:	e20787d3          	fmv.x.d	a5,fa5
    e88058be:	fe07b68b          	extu	a3,a5,63,32
    e88058c2:	7806b70b          	extu	a4,a3,30,0
    e88058c6:	2701                	sext.w	a4,a4
    e88058c8:	2681                	sext.w	a3,a3
    e88058ca:	80100637          	lui	a2,0x80100
    e88058ce:	167d                	addi	a2,a2,-1
    e88058d0:	8ef1                	and	a3,a3,a2
    e88058d2:	4147571b          	sraiw	a4,a4,0x14
    e88058d6:	3fe00637          	lui	a2,0x3fe00
    e88058da:	c027071b          	addiw	a4,a4,-1022
    e88058de:	8ed1                	or	a3,a3,a2
    e88058e0:	9f2d                	addw	a4,a4,a1
    e88058e2:	1682                	slli	a3,a3,0x20
    e88058e4:	7c07b78b          	extu	a5,a5,31,0
    e88058e8:	c118                	sw	a4,0(a0)
    e88058ea:	8fd5                	or	a5,a5,a3
    e88058ec:	f2078553          	fmv.d.x	fa0,a5
    e88058f0:	8082                	ret
	...

00000000e8805900 <_sprintf_r>:
    e8805900:	7111                	addi	sp,sp,-256
    e8805902:	e0411337          	lui	t1,0xe0411
    e8805906:	f5be                	sd	a5,232(sp)
    e8805908:	034e                	slli	t1,t1,0x13
    e880590a:	800007b7          	lui	a5,0x80000
    e880590e:	0d810e13          	addi	t3,sp,216
    e8805912:	8eae                	mv	t4,a1
    e8805914:	fff7c793          	not	a5,a5
    e8805918:	137d                	addi	t1,t1,-1
    e880591a:	edb6                	sd	a3,216(sp)
    e880591c:	080c                	addi	a1,sp,16
    e880591e:	86f2                	mv	a3,t3
    e8805920:	e586                	sd	ra,200(sp)
    e8805922:	d83e                	sw	a5,48(sp)
    e8805924:	f1ba                	sd	a4,224(sp)
    e8805926:	f9c2                	sd	a6,240(sp)
    e8805928:	fdc6                	sd	a7,248(sp)
    e880592a:	e876                	sd	t4,16(sp)
    e880592c:	f476                	sd	t4,40(sp)
    e880592e:	00613e23          	sd	t1,28(sp)
    e8805932:	e472                	sd	t3,8(sp)
    e8805934:	2cc000ef          	jal	ra,e8805c00 <_svfprintf_r>
    e8805938:	67c2                	ld	a5,16(sp)
    e880593a:	00078023          	sb	zero,0(a5) # ffffffff80000000 <__DRAM0_INF_BASE+0xfffffffe80010000>
    e880593e:	60ae                	ld	ra,200(sp)
    e8805940:	6111                	addi	sp,sp,256
    e8805942:	8082                	ret
    e8805944:	00000013          	nop
    e8805948:	00000013          	nop
    e880594c:	00000013          	nop

00000000e8805950 <sprintf>:
    e8805950:	7111                	addi	sp,sp,-256
    e8805952:	8eaa                	mv	t4,a0
    e8805954:	e0411337          	lui	t1,0xe0411
    e8805958:	000ce517          	auipc	a0,0xce
    e880595c:	7b050513          	addi	a0,a0,1968 # e88d4108 <_impure_ptr>
    e8805960:	6108                	ld	a0,0(a0)
    e8805962:	034e                	slli	t1,t1,0x13
    e8805964:	f5be                	sd	a5,232(sp)
    e8805966:	800007b7          	lui	a5,0x80000
    e880596a:	0d010e13          	addi	t3,sp,208
    e880596e:	fff7c793          	not	a5,a5
    e8805972:	137d                	addi	t1,t1,-1
    e8805974:	e9b2                	sd	a2,208(sp)
    e8805976:	edb6                	sd	a3,216(sp)
    e8805978:	862e                	mv	a2,a1
    e880597a:	86f2                	mv	a3,t3
    e880597c:	080c                	addi	a1,sp,16
    e880597e:	e586                	sd	ra,200(sp)
    e8805980:	d83e                	sw	a5,48(sp)
    e8805982:	f1ba                	sd	a4,224(sp)
    e8805984:	f9c2                	sd	a6,240(sp)
    e8805986:	fdc6                	sd	a7,248(sp)
    e8805988:	e876                	sd	t4,16(sp)
    e880598a:	f476                	sd	t4,40(sp)
    e880598c:	00613e23          	sd	t1,28(sp)
    e8805990:	e472                	sd	t3,8(sp)
    e8805992:	26e000ef          	jal	ra,e8805c00 <_svfprintf_r>
    e8805996:	67c2                	ld	a5,16(sp)
    e8805998:	00078023          	sb	zero,0(a5) # ffffffff80000000 <__DRAM0_INF_BASE+0xfffffffe80010000>
    e880599c:	60ae                	ld	ra,200(sp)
    e880599e:	6111                	addi	sp,sp,256
    e88059a0:	8082                	ret
	...

00000000e88059b0 <__sread>:
    e88059b0:	1141                	addi	sp,sp,-16
    e88059b2:	e022                	sd	s0,0(sp)
    e88059b4:	842e                	mv	s0,a1
    e88059b6:	01259583          	lh	a1,18(a1)
    e88059ba:	e406                	sd	ra,8(sp)
    e88059bc:	7aa760ef          	jal	ra,e887c166 <_read_r>
    e88059c0:	00054a63          	bltz	a0,e88059d4 <__sread+0x24>
    e88059c4:	685c                	ld	a5,144(s0)
    e88059c6:	60a2                	ld	ra,8(sp)
    e88059c8:	97aa                	add	a5,a5,a0
    e88059ca:	e85c                	sd	a5,144(s0)
    e88059cc:	6402                	ld	s0,0(sp)
    e88059ce:	0141                	addi	sp,sp,16
    e88059d0:	8082                	ret
    e88059d2:	0001                	nop
    e88059d4:	01045783          	lhu	a5,16(s0) # 3ff00010 <memcmp-0xa88ffff0>
    e88059d8:	777d                	lui	a4,0xfffff
    e88059da:	177d                	addi	a4,a4,-1
    e88059dc:	8ff9                	and	a5,a5,a4
    e88059de:	00f41823          	sh	a5,16(s0)
    e88059e2:	60a2                	ld	ra,8(sp)
    e88059e4:	6402                	ld	s0,0(sp)
    e88059e6:	0141                	addi	sp,sp,16
    e88059e8:	8082                	ret
    e88059ea:	00000013          	nop
    e88059ee:	0001                	nop

00000000e88059f0 <__seofread>:
    e88059f0:	4501                	li	a0,0
    e88059f2:	8082                	ret
    e88059f4:	00000013          	nop
    e88059f8:	00000013          	nop
    e88059fc:	00000013          	nop

00000000e8805a00 <__swrite>:
    e8805a00:	01059783          	lh	a5,16(a1)
    e8805a04:	7179                	addi	sp,sp,-48
    e8805a06:	e422                	sd	s0,8(sp)
    e8805a08:	e826                	sd	s1,16(sp)
    e8805a0a:	ec4a                	sd	s2,24(sp)
    e8805a0c:	f04e                	sd	s3,32(sp)
    e8805a0e:	f406                	sd	ra,40(sp)
    e8805a10:	1007f713          	andi	a4,a5,256
    e8805a14:	842e                	mv	s0,a1
    e8805a16:	84aa                	mv	s1,a0
    e8805a18:	8932                	mv	s2,a2
    e8805a1a:	89b6                	mv	s3,a3
    e8805a1c:	01259583          	lh	a1,18(a1)
    e8805a20:	e315                	bnez	a4,e8805a44 <__swrite+0x44>
    e8805a22:	777d                	lui	a4,0xfffff
    e8805a24:	177d                	addi	a4,a4,-1
    e8805a26:	8ff9                	and	a5,a5,a4
    e8805a28:	00f41823          	sh	a5,16(s0)
    e8805a2c:	6422                	ld	s0,8(sp)
    e8805a2e:	70a2                	ld	ra,40(sp)
    e8805a30:	86ce                	mv	a3,s3
    e8805a32:	864a                	mv	a2,s2
    e8805a34:	7982                	ld	s3,32(sp)
    e8805a36:	6962                	ld	s2,24(sp)
    e8805a38:	8526                	mv	a0,s1
    e8805a3a:	64c2                	ld	s1,16(sp)
    e8805a3c:	6145                	addi	sp,sp,48
    e8805a3e:	73e7606f          	j	e887c17c <_write_r>
    e8805a42:	0001                	nop
    e8805a44:	4689                	li	a3,2
    e8805a46:	4601                	li	a2,0
    e8805a48:	6ee760ef          	jal	ra,e887c136 <_lseek_r>
    e8805a4c:	01041783          	lh	a5,16(s0)
    e8805a50:	01241583          	lh	a1,18(s0)
    e8805a54:	b7f9                	j	e8805a22 <__swrite+0x22>
    e8805a56:	00000013          	nop
    e8805a5a:	00000013          	nop
    e8805a5e:	0001                	nop

00000000e8805a60 <__sseek>:
    e8805a60:	1141                	addi	sp,sp,-16
    e8805a62:	e022                	sd	s0,0(sp)
    e8805a64:	842e                	mv	s0,a1
    e8805a66:	01259583          	lh	a1,18(a1)
    e8805a6a:	e406                	sd	ra,8(sp)
    e8805a6c:	6ca760ef          	jal	ra,e887c136 <_lseek_r>
    e8805a70:	57fd                	li	a5,-1
    e8805a72:	00f50d63          	beq	a0,a5,e8805a8c <__sseek+0x2c>
    e8805a76:	01045783          	lhu	a5,16(s0)
    e8805a7a:	6705                	lui	a4,0x1
    e8805a7c:	e848                	sd	a0,144(s0)
    e8805a7e:	8fd9                	or	a5,a5,a4
    e8805a80:	00f41823          	sh	a5,16(s0)
    e8805a84:	60a2                	ld	ra,8(sp)
    e8805a86:	6402                	ld	s0,0(sp)
    e8805a88:	0141                	addi	sp,sp,16
    e8805a8a:	8082                	ret
    e8805a8c:	01045783          	lhu	a5,16(s0)
    e8805a90:	777d                	lui	a4,0xfffff
    e8805a92:	177d                	addi	a4,a4,-1
    e8805a94:	8ff9                	and	a5,a5,a4
    e8805a96:	00f41823          	sh	a5,16(s0)
    e8805a9a:	60a2                	ld	ra,8(sp)
    e8805a9c:	6402                	ld	s0,0(sp)
    e8805a9e:	0141                	addi	sp,sp,16
    e8805aa0:	8082                	ret
    e8805aa2:	0001                	nop
    e8805aa4:	00000013          	nop
    e8805aa8:	00000013          	nop
    e8805aac:	00000013          	nop

00000000e8805ab0 <__sclose>:
    e8805ab0:	01259583          	lh	a1,18(a1)
    e8805ab4:	6527606f          	j	e887c106 <_close_r>
	...

00000000e8805ac0 <strcmp>:
    e8805ac0:	00b56733          	or	a4,a0,a1
    e8805ac4:	8b1d                	andi	a4,a4,7
    e8805ac6:	e33d                	bnez	a4,e8805b2c <strcmp+0x6c>
    e8805ac8:	6110                	ld	a2,0(a0)
    e8805aca:	6194                	ld	a3,0(a1)
    e8805acc:	8006128b          	tstnbz	t0,a2
    e8805ad0:	00d64333          	xor	t1,a2,a3
    e8805ad4:	0062e3b3          	or	t2,t0,t1
    e8805ad8:	02039963          	bnez	t2,e8805b0a <strcmp+0x4a>
    e8805adc:	6510                	ld	a2,8(a0)
    e8805ade:	6594                	ld	a3,8(a1)
    e8805ae0:	8006128b          	tstnbz	t0,a2
    e8805ae4:	00d64333          	xor	t1,a2,a3
    e8805ae8:	0062e3b3          	or	t2,t0,t1
    e8805aec:	00039f63          	bnez	t2,e8805b0a <strcmp+0x4a>
    e8805af0:	6910                	ld	a2,16(a0)
    e8805af2:	6994                	ld	a3,16(a1)
    e8805af4:	8006128b          	tstnbz	t0,a2
    e8805af8:	00d64333          	xor	t1,a2,a3
    e8805afc:	0062e3b3          	or	t2,t0,t1
    e8805b00:	00039563          	bnez	t2,e8805b0a <strcmp+0x4a>
    e8805b04:	0561                	addi	a0,a0,24
    e8805b06:	05e1                	addi	a1,a1,24
    e8805b08:	b7c1                	j	e8805ac8 <strcmp+0x8>
    e8805b0a:	8203930b          	rev	t1,t2
    e8805b0e:	8603128b          	ff1	t0,t1
    e8805b12:	0f82f293          	andi	t0,t0,248
    e8805b16:	00565333          	srl	t1,a2,t0
    e8805b1a:	0ff37313          	andi	t1,t1,255
    e8805b1e:	0056d3b3          	srl	t2,a3,t0
    e8805b22:	0ff3f393          	andi	t2,t2,255
    e8805b26:	40730533          	sub	a0,t1,t2
    e8805b2a:	8082                	ret
    e8805b2c:	00054603          	lbu	a2,0(a0)
    e8805b30:	0005c683          	lbu	a3,0(a1)
    e8805b34:	0505                	addi	a0,a0,1
    e8805b36:	0585                	addi	a1,a1,1
    e8805b38:	00d61363          	bne	a2,a3,e8805b3e <strcmp+0x7e>
    e8805b3c:	fa65                	bnez	a2,e8805b2c <strcmp+0x6c>
    e8805b3e:	40d60533          	sub	a0,a2,a3
    e8805b42:	8082                	ret
	...

00000000e8805b50 <strncpy>:
    e8805b50:	00a5e7b3          	or	a5,a1,a0
    e8805b54:	8b9d                	andi	a5,a5,7
    e8805b56:	efad                	bnez	a5,e8805bd0 <strncpy+0x80>
    e8805b58:	479d                	li	a5,7
    e8805b5a:	06c7fb63          	bgeu	a5,a2,e8805bd0 <strncpy+0x80>
    e8805b5e:	000ce797          	auipc	a5,0xce
    e8805b62:	22278793          	addi	a5,a5,546 # e88d3d80 <dhcp_discover_request_options+0x578>
    e8805b66:	0007b303          	ld	t1,0(a5)
    e8805b6a:	000ce797          	auipc	a5,0xce
    e8805b6e:	21e78793          	addi	a5,a5,542 # e88d3d88 <dhcp_discover_request_options+0x580>
    e8805b72:	0007b883          	ld	a7,0(a5)
    e8805b76:	4e1d                	li	t3,7
    e8805b78:	87aa                	mv	a5,a0
    e8805b7a:	0001                	nop
    e8805b7c:	00000013          	nop
    e8805b80:	6194                	ld	a3,0(a1)
    e8805b82:	00668733          	add	a4,a3,t1
    e8805b86:	fff6c813          	not	a6,a3
    e8805b8a:	01077733          	and	a4,a4,a6
    e8805b8e:	01177733          	and	a4,a4,a7
    e8805b92:	eb01                	bnez	a4,e8805ba2 <strncpy+0x52>
    e8805b94:	7887d68b          	sdia	a3,(a5),8,0
    e8805b98:	1661                	addi	a2,a2,-8
    e8805b9a:	05a1                	addi	a1,a1,8
    e8805b9c:	fece62e3          	bltu	t3,a2,e8805b80 <strncpy+0x30>
    e8805ba0:	c621                	beqz	a2,e8805be8 <strncpy+0x98>
    e8805ba2:	0005c703          	lbu	a4,0(a1)
    e8805ba6:	167d                	addi	a2,a2,-1
    e8805ba8:	86b2                	mv	a3,a2
    e8805baa:	1817d70b          	sbia	a4,(a5),1,0
    e8805bae:	c31d                	beqz	a4,e8805bd4 <strncpy+0x84>
    e8805bb0:	95b2                	add	a1,a1,a2
    e8805bb2:	4805                	li	a6,1
    e8805bb4:	a811                	j	e8805bc8 <strncpy+0x78>
    e8805bb6:	0001                	nop
    e8805bb8:	80e5c70b          	lrbu	a4,a1,a4,0
    e8805bbc:	fff60693          	addi	a3,a2,-1 # 3fdfffff <memcmp-0xa8a00001>
    e8805bc0:	8636                	mv	a2,a3
    e8805bc2:	1817d70b          	sbia	a4,(a5),1,0
    e8805bc6:	c719                	beqz	a4,e8805bd4 <strncpy+0x84>
    e8805bc8:	40c80733          	sub	a4,a6,a2
    e8805bcc:	f675                	bnez	a2,e8805bb8 <strncpy+0x68>
    e8805bce:	8082                	ret
    e8805bd0:	87aa                	mv	a5,a0
    e8805bd2:	b7f9                	j	e8805ba0 <strncpy+0x50>
    e8805bd4:	00d78733          	add	a4,a5,a3
    e8805bd8:	ca89                	beqz	a3,e8805bea <strncpy+0x9a>
    e8805bda:	0001                	nop
    e8805bdc:	00000013          	nop
    e8805be0:	1817d00b          	sbia	zero,(a5),1,0
    e8805be4:	fee79ee3          	bne	a5,a4,e8805be0 <strncpy+0x90>
    e8805be8:	8082                	ret
    e8805bea:	8082                	ret
	...

00000000e8805c00 <_svfprintf_r>:
    e8805c00:	d8010113          	addi	sp,sp,-640
    e8805c04:	26113c23          	sd	ra,632(sp)
    e8805c08:	25413823          	sd	s4,592(sp)
    e8805c0c:	25613023          	sd	s6,576(sp)
    e8805c10:	23a13023          	sd	s10,544(sp)
    e8805c14:	8b2e                	mv	s6,a1
    e8805c16:	8d32                	mv	s10,a2
    e8805c18:	e836                	sd	a3,16(sp)
    e8805c1a:	26813823          	sd	s0,624(sp)
    e8805c1e:	26913423          	sd	s1,616(sp)
    e8805c22:	27213023          	sd	s2,608(sp)
    e8805c26:	25313c23          	sd	s3,600(sp)
    e8805c2a:	25513423          	sd	s5,584(sp)
    e8805c2e:	23713c23          	sd	s7,568(sp)
    e8805c32:	23813823          	sd	s8,560(sp)
    e8805c36:	23913423          	sd	s9,552(sp)
    e8805c3a:	21b13c23          	sd	s11,536(sp)
    e8805c3e:	8a2a                	mv	s4,a0
    e8805c40:	d81fe0ef          	jal	ra,e88049c0 <_localeconv_r>
    e8805c44:	611c                	ld	a5,0(a0)
    e8805c46:	853e                	mv	a0,a5
    e8805c48:	fcbe                	sd	a5,120(sp)
    e8805c4a:	f1efa0ef          	jal	ra,e8800368 <strlen>
    e8805c4e:	f8aa                	sd	a0,112(sp)
    e8805c50:	010b4783          	lbu	a5,16(s6)
    e8805c54:	e202                	sd	zero,256(sp)
    e8805c56:	e602                	sd	zero,264(sp)
    e8805c58:	fc77b70b          	extu	a4,a5,63,7
    e8805c5c:	c711                	beqz	a4,e8805c68 <_svfprintf_r+0x68>
    e8805c5e:	018b3783          	ld	a5,24(s6)
    e8805c62:	e399                	bnez	a5,e8805c68 <_svfprintf_r+0x68>
    e8805c64:	7790006f          	j	e8806bdc <_svfprintf_r+0xfdc>
    e8805c68:	19010a93          	addi	s5,sp,400
    e8805c6c:	000d4783          	lbu	a5,0(s10)
    e8805c70:	ea56                	sd	s5,272(sp)
    e8805c72:	f202                	sd	zero,288(sp)
    e8805c74:	10012c23          	sw	zero,280(sp)
    e8805c78:	f002                	sd	zero,32(sp)
    e8805c7a:	f402                	sd	zero,40(sp)
    e8805c7c:	e502                	sd	zero,136(sp)
    e8805c7e:	f482                	sd	zero,104(sp)
    e8805c80:	e102                	sd	zero,128(sp)
    e8805c82:	e902                	sd	zero,144(sp)
    e8805c84:	e002                	sd	zero,0(sp)
    e8805c86:	8356                	mv	t1,s5
    e8805c88:	4dc1                	li	s11,16
    e8805c8a:	00099997          	auipc	s3,0x99
    e8805c8e:	7ee98993          	addi	s3,s3,2030 # e889f478 <zeroes.4576>
    e8805c92:	70078363          	beqz	a5,e8806398 <_svfprintf_r+0x798>
    e8805c96:	02500713          	li	a4,37
    e8805c9a:	68e789e3          	beq	a5,a4,e8806b2c <_svfprintf_r+0xf2c>
    e8805c9e:	846a                	mv	s0,s10
    e8805ca0:	a029                	j	e8805caa <_svfprintf_r+0xaa>
    e8805ca2:	0001                	nop
    e8805ca4:	16e78263          	beq	a5,a4,e8805e08 <_svfprintf_r+0x208>
    e8805ca8:	8426                	mv	s0,s1
    e8805caa:	00144783          	lbu	a5,1(s0)
    e8805cae:	00140493          	addi	s1,s0,1
    e8805cb2:	fbed                	bnez	a5,e8805ca4 <_svfprintf_r+0xa4>
    e8805cb4:	41a4893b          	subw	s2,s1,s10
    e8805cb8:	6e090063          	beqz	s2,e8806398 <_svfprintf_r+0x798>
    e8805cbc:	7712                	ld	a4,288(sp)
    e8805cbe:	11812783          	lw	a5,280(sp)
    e8805cc2:	01a33023          	sd	s10,0(t1) # ffffffffe0411000 <__DRAM0_INF_BASE+0xfffffffee0421000>
    e8805cc6:	974a                	add	a4,a4,s2
    e8805cc8:	2785                	addiw	a5,a5,1
    e8805cca:	01233423          	sd	s2,8(t1)
    e8805cce:	f23a                	sd	a4,288(sp)
    e8805cd0:	10f12c23          	sw	a5,280(sp)
    e8805cd4:	471d                	li	a4,7
    e8805cd6:	0341                	addi	t1,t1,16
    e8805cd8:	12f74e63          	blt	a4,a5,e8805e14 <_svfprintf_r+0x214>
    e8805cdc:	6702                	ld	a4,0(sp)
    e8805cde:	00144783          	lbu	a5,1(s0)
    e8805ce2:	0127073b          	addw	a4,a4,s2
    e8805ce6:	e03a                	sd	a4,0(sp)
    e8805ce8:	6a078863          	beqz	a5,e8806398 <_svfprintf_r+0x798>
    e8805cec:	00148913          	addi	s2,s1,1
    e8805cf0:	0014cf03          	lbu	t5,1(s1)
    e8805cf4:	0c010fa3          	sb	zero,223(sp)
    e8805cf8:	5efd                	li	t4,-1
    e8805cfa:	4b81                	li	s7,0
    e8805cfc:	4401                	li	s0,0
    e8805cfe:	4c25                	li	s8,9
    e8805d00:	02a00493          	li	s1,42
    e8805d04:	0905                	addi	s2,s2,1
    e8805d06:	8cfa                	mv	s9,t5
    e8805d08:	05a00693          	li	a3,90
    e8805d0c:	fe0c871b          	addiw	a4,s9,-32
    e8805d10:	87ba                	mv	a5,a4
    e8805d12:	1ee6ea63          	bltu	a3,a4,e8805f06 <_svfprintf_r+0x306>
    e8805d16:	00099717          	auipc	a4,0x99
    e8805d1a:	5e270713          	addi	a4,a4,1506 # e889f2f8 <__mprec_bigtens+0x28>
    e8805d1e:	54f7478b          	lurw	a5,a4,a5,2
    e8805d22:	97ba                	add	a5,a5,a4
    e8805d24:	8782                	jr	a5
    e8805d26:	0001                	nop
    e8805d28:	01046413          	ori	s0,s0,16
    e8805d2c:	2401                	sext.w	s0,s0
    e8805d2e:	00094f03          	lbu	t5,0(s2)
    e8805d32:	bfc9                	j	e8805d04 <_svfprintf_r+0x104>
    e8805d34:	01046413          	ori	s0,s0,16
    e8805d38:	2401                	sext.w	s0,s0
    e8805d3a:	66c2                	ld	a3,16(sp)
    e8805d3c:	02047793          	andi	a5,s0,32
    e8805d40:	00868713          	addi	a4,a3,8
    e8805d44:	06078fe3          	beqz	a5,e88065c2 <_svfprintf_r+0x9c2>
    e8805d48:	6284                	ld	s1,0(a3)
    e8805d4a:	bff47693          	andi	a3,s0,-1025
    e8805d4e:	2681                	sext.w	a3,a3
    e8805d50:	e83a                	sd	a4,16(sp)
    e8805d52:	4781                	li	a5,0
    e8805d54:	0c010fa3          	sb	zero,223(sp)
    e8805d58:	577d                	li	a4,-1
    e8805d5a:	00ee8fe3          	beq	t4,a4,e8806578 <_svfprintf_r+0x978>
    e8805d5e:	f7f6f413          	andi	s0,a3,-129
    e8805d62:	2401                	sext.w	s0,s0
    e8805d64:	2c0494e3          	bnez	s1,e880682c <_svfprintf_r+0xc2c>
    e8805d68:	400e98e3          	bnez	t4,e8806978 <_svfprintf_r+0xd78>
    e8805d6c:	ebad                	bnez	a5,e8805dde <_svfprintf_r+0x1de>
    e8805d6e:	0016fc13          	andi	s8,a3,1
    e8805d72:	18c10d13          	addi	s10,sp,396
    e8805d76:	000c0963          	beqz	s8,e8805d88 <_svfprintf_r+0x188>
    e8805d7a:	03000793          	li	a5,48
    e8805d7e:	18f105a3          	sb	a5,395(sp)
    e8805d82:	18b10d13          	addi	s10,sp,395
    e8805d86:	0001                	nop
    e8805d88:	01dc24b3          	slt	s1,s8,t4
    e8805d8c:	87f6                	mv	a5,t4
    e8805d8e:	409c178b          	mveqz	a5,s8,s1
    e8805d92:	0007849b          	sext.w	s1,a5
    e8805d96:	0df14783          	lbu	a5,223(sp)
    e8805d9a:	ec02                	sd	zero,24(sp)
    e8805d9c:	e882                	sd	zero,80(sp)
    e8805d9e:	f082                	sd	zero,96(sp)
    e8805da0:	ec82                	sd	zero,88(sp)
    e8805da2:	50078b63          	beqz	a5,e88062b8 <_svfprintf_r+0x6b8>
    e8805da6:	2485                	addiw	s1,s1,1
    e8805da8:	ab01                	j	e88062b8 <_svfprintf_r+0x6b8>
    e8805daa:	01046413          	ori	s0,s0,16
    e8805dae:	2401                	sext.w	s0,s0
    e8805db0:	66c2                	ld	a3,16(sp)
    e8805db2:	02047793          	andi	a5,s0,32
    e8805db6:	00868713          	addi	a4,a3,8
    e8805dba:	78078263          	beqz	a5,e880653e <_svfprintf_r+0x93e>
    e8805dbe:	629c                	ld	a5,0(a3)
    e8805dc0:	84be                	mv	s1,a5
    e8805dc2:	7807cc63          	bltz	a5,e880655a <_svfprintf_r+0x95a>
    e8805dc6:	57fd                	li	a5,-1
    e8805dc8:	5cfe8de3          	beq	t4,a5,e8806ba2 <_svfprintf_r+0xfa2>
    e8805dcc:	e83a                	sd	a4,16(sp)
    e8805dce:	f7f47693          	andi	a3,s0,-129
    e8805dd2:	2681                	sext.w	a3,a3
    e8805dd4:	260490e3          	bnez	s1,e8806834 <_svfprintf_r+0xc34>
    e8805dd8:	260e91e3          	bnez	t4,e880683a <_svfprintf_r+0xc3a>
    e8805ddc:	8436                	mv	s0,a3
    e8805dde:	4e81                	li	t4,0
    e8805de0:	4c01                	li	s8,0
    e8805de2:	18c10d13          	addi	s10,sp,396
    e8805de6:	b74d                	j	e8805d88 <_svfprintf_r+0x188>
    e8805de8:	01046413          	ori	s0,s0,16
    e8805dec:	2401                	sext.w	s0,s0
    e8805dee:	66c2                	ld	a3,16(sp)
    e8805df0:	02047793          	andi	a5,s0,32
    e8805df4:	00868713          	addi	a4,a3,8
    e8805df8:	7e078363          	beqz	a5,e88065de <_svfprintf_r+0x9de>
    e8805dfc:	6284                	ld	s1,0(a3)
    e8805dfe:	e83a                	sd	a4,16(sp)
    e8805e00:	86a2                	mv	a3,s0
    e8805e02:	4785                	li	a5,1
    e8805e04:	bf81                	j	e8805d54 <_svfprintf_r+0x154>
    e8805e06:	0001                	nop
    e8805e08:	41a4893b          	subw	s2,s1,s10
    e8805e0c:	ee0900e3          	beqz	s2,e8805cec <_svfprintf_r+0xec>
    e8805e10:	b575                	j	e8805cbc <_svfprintf_r+0xbc>
    e8805e12:	0001                	nop
    e8805e14:	0a10                	addi	a2,sp,272
    e8805e16:	85da                	mv	a1,s6
    e8805e18:	8552                	mv	a0,s4
    e8805e1a:	5c7020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8805e1e:	e11d                	bnez	a0,e8805e44 <_svfprintf_r+0x244>
    e8805e20:	8356                	mv	t1,s5
    e8805e22:	bd6d                	j	e8805cdc <_svfprintf_r+0xdc>
    e8805e24:	0a10                	addi	a2,sp,272
    e8805e26:	85da                	mv	a1,s6
    e8805e28:	8552                	mv	a0,s4
    e8805e2a:	5b7020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8805e2e:	54050763          	beqz	a0,e880637c <_svfprintf_r+0x77c>
    e8805e32:	0001                	nop
    e8805e34:	00000013          	nop
    e8805e38:	67e2                	ld	a5,24(sp)
    e8805e3a:	c789                	beqz	a5,e8805e44 <_svfprintf_r+0x244>
    e8805e3c:	65e2                	ld	a1,24(sp)
    e8805e3e:	8552                	mv	a0,s4
    e8805e40:	394760ef          	jal	ra,e887c1d4 <_free_r>
    e8805e44:	010b5783          	lhu	a5,16(s6)
    e8805e48:	6682                	ld	a3,0(sp)
    e8805e4a:	0407f793          	andi	a5,a5,64
    e8805e4e:	577d                	li	a4,-1
    e8805e50:	42f7168b          	mvnez	a3,a4,a5
    e8805e54:	e036                	sd	a3,0(sp)
    e8805e56:	27813083          	ld	ra,632(sp)
    e8805e5a:	27013403          	ld	s0,624(sp)
    e8805e5e:	6502                	ld	a0,0(sp)
    e8805e60:	26813483          	ld	s1,616(sp)
    e8805e64:	26013903          	ld	s2,608(sp)
    e8805e68:	25813983          	ld	s3,600(sp)
    e8805e6c:	25013a03          	ld	s4,592(sp)
    e8805e70:	24813a83          	ld	s5,584(sp)
    e8805e74:	24013b03          	ld	s6,576(sp)
    e8805e78:	23813b83          	ld	s7,568(sp)
    e8805e7c:	23013c03          	ld	s8,560(sp)
    e8805e80:	22813c83          	ld	s9,552(sp)
    e8805e84:	22013d03          	ld	s10,544(sp)
    e8805e88:	21813d83          	ld	s11,536(sp)
    e8805e8c:	28010113          	addi	sp,sp,640
    e8805e90:	8082                	ret
    e8805e92:	0009d797          	auipc	a5,0x9d
    e8805e96:	31678793          	addi	a5,a5,790 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e8805e9a:	66c2                	ld	a3,16(sp)
    e8805e9c:	f43e                	sd	a5,40(sp)
    e8805e9e:	02047793          	andi	a5,s0,32
    e8805ea2:	00868713          	addi	a4,a3,8
    e8805ea6:	c7d1                	beqz	a5,e8805f32 <_svfprintf_r+0x332>
    e8805ea8:	6284                	ld	s1,0(a3)
    e8805eaa:	00147793          	andi	a5,s0,1
    e8805eae:	cb99                	beqz	a5,e8805ec4 <_svfprintf_r+0x2c4>
    e8805eb0:	c891                	beqz	s1,e8805ec4 <_svfprintf_r+0x2c4>
    e8805eb2:	00246413          	ori	s0,s0,2
    e8805eb6:	03000793          	li	a5,48
    e8805eba:	0ef10023          	sb	a5,224(sp)
    e8805ebe:	0f9100a3          	sb	s9,225(sp)
    e8805ec2:	2401                	sext.w	s0,s0
    e8805ec4:	bff47693          	andi	a3,s0,-1025
    e8805ec8:	2681                	sext.w	a3,a3
    e8805eca:	e83a                	sd	a4,16(sp)
    e8805ecc:	4789                	li	a5,2
    e8805ece:	b559                	j	e8805d54 <_svfprintf_r+0x154>
    e8805ed0:	4b81                	li	s7,0
    e8805ed2:	0001                	nop
    e8805ed4:	00000013          	nop
    e8805ed8:	9819470b          	lbuia	a4,(s2),1,0
    e8805edc:	002b979b          	slliw	a5,s7,0x2
    e8805ee0:	01778bbb          	addw	s7,a5,s7
    e8805ee4:	fd0c8f1b          	addiw	t5,s9,-48
    e8805ee8:	001b9b9b          	slliw	s7,s7,0x1
    e8805eec:	fd07079b          	addiw	a5,a4,-48
    e8805ef0:	017f0bbb          	addw	s7,t5,s7
    e8805ef4:	00070c9b          	sext.w	s9,a4
    e8805ef8:	fefc70e3          	bgeu	s8,a5,e8805ed8 <_svfprintf_r+0x2d8>
    e8805efc:	fe0c871b          	addiw	a4,s9,-32
    e8805f00:	87ba                	mv	a5,a4
    e8805f02:	e0e6fae3          	bgeu	a3,a4,e8805d16 <_svfprintf_r+0x116>
    e8805f06:	480c8963          	beqz	s9,e8806398 <_svfprintf_r+0x798>
    e8805f0a:	13910423          	sb	s9,296(sp)
    e8805f0e:	0c010fa3          	sb	zero,223(sp)
    e8805f12:	4485                	li	s1,1
    e8805f14:	4c05                	li	s8,1
    e8805f16:	12810d13          	addi	s10,sp,296
    e8805f1a:	ae51                	j	e88062ae <_svfprintf_r+0x6ae>
    e8805f1c:	0009a797          	auipc	a5,0x9a
    e8805f20:	f4478793          	addi	a5,a5,-188 # e889fe60 <TWO52+0x268>
    e8805f24:	66c2                	ld	a3,16(sp)
    e8805f26:	f43e                	sd	a5,40(sp)
    e8805f28:	02047793          	andi	a5,s0,32
    e8805f2c:	00868713          	addi	a4,a3,8
    e8805f30:	ffa5                	bnez	a5,e8805ea8 <_svfprintf_r+0x2a8>
    e8805f32:	01047793          	andi	a5,s0,16
    e8805f36:	440797e3          	bnez	a5,e8806b84 <_svfprintf_r+0xf84>
    e8805f3a:	66c2                	ld	a3,16(sp)
    e8805f3c:	04047793          	andi	a5,s0,64
    e8805f40:	4284                	lw	s1,0(a3)
    e8805f42:	e399                	bnez	a5,e8805f48 <_svfprintf_r+0x348>
    e8805f44:	0360106f          	j	e8806f7a <_svfprintf_r+0x137a>
    e8805f48:	3c04b48b          	extu	s1,s1,15,0
    e8805f4c:	bfb9                	j	e8805eaa <_svfprintf_r+0x2aa>
    e8805f4e:	00094f03          	lbu	t5,0(s2)
    e8805f52:	00446413          	ori	s0,s0,4
    e8805f56:	2401                	sext.w	s0,s0
    e8805f58:	b375                	j	e8805d04 <_svfprintf_r+0x104>
    e8805f5a:	02b00793          	li	a5,43
    e8805f5e:	0cf10fa3          	sb	a5,223(sp)
    e8805f62:	00094f03          	lbu	t5,0(s2)
    e8805f66:	bb79                	j	e8805d04 <_svfprintf_r+0x104>
    e8805f68:	67c2                	ld	a5,16(sp)
    e8805f6a:	00094f03          	lbu	t5,0(s2)
    e8805f6e:	5887cb8b          	lwia	s7,(a5),8,0
    e8805f72:	e83e                	sd	a5,16(sp)
    e8805f74:	d80bd8e3          	bgez	s7,e8805d04 <_svfprintf_r+0x104>
    e8805f78:	41700bbb          	negw	s7,s7
    e8805f7c:	2b81                	sext.w	s7,s7
    e8805f7e:	bfd1                	j	e8805f52 <_svfprintf_r+0x352>
    e8805f80:	8552                	mv	a0,s4
    e8805f82:	ec1a                	sd	t1,24(sp)
    e8805f84:	e476                	sd	t4,8(sp)
    e8805f86:	a3bfe0ef          	jal	ra,e88049c0 <_localeconv_r>
    e8805f8a:	651c                	ld	a5,8(a0)
    e8805f8c:	853e                	mv	a0,a5
    e8805f8e:	e93e                	sd	a5,144(sp)
    e8805f90:	bd8fa0ef          	jal	ra,e8800368 <strlen>
    e8805f94:	e12a                	sd	a0,128(sp)
    e8805f96:	8caa                	mv	s9,a0
    e8805f98:	8552                	mv	a0,s4
    e8805f9a:	a27fe0ef          	jal	ra,e88049c0 <_localeconv_r>
    e8805f9e:	6918                	ld	a4,16(a0)
    e8805fa0:	6ea2                	ld	t4,8(sp)
    e8805fa2:	6362                	ld	t1,24(sp)
    e8805fa4:	f4ba                	sd	a4,104(sp)
    e8805fa6:	00094f03          	lbu	t5,0(s2)
    e8805faa:	d40c8de3          	beqz	s9,e8805d04 <_svfprintf_r+0x104>
    e8805fae:	d4070be3          	beqz	a4,e8805d04 <_svfprintf_r+0x104>
    e8805fb2:	00074703          	lbu	a4,0(a4)
    e8805fb6:	40046793          	ori	a5,s0,1024
    e8805fba:	2781                	sext.w	a5,a5
    e8805fbc:	42e7940b          	mvnez	s0,a5,a4
    e8805fc0:	b391                	j	e8805d04 <_svfprintf_r+0x104>
    e8805fc2:	08046413          	ori	s0,s0,128
    e8805fc6:	2401                	sext.w	s0,s0
    e8805fc8:	00094f03          	lbu	t5,0(s2)
    e8805fcc:	bb25                	j	e8805d04 <_svfprintf_r+0x104>
    e8805fce:	87ca                	mv	a5,s2
    e8805fd0:	9817cc8b          	lbuia	s9,(a5),1,0
    e8805fd4:	009c9463          	bne	s9,s1,e8805fdc <_svfprintf_r+0x3dc>
    e8805fd8:	6960106f          	j	e880766e <_svfprintf_r+0x1a6e>
    e8805fdc:	fd0c871b          	addiw	a4,s9,-48
    e8805fe0:	893e                	mv	s2,a5
    e8805fe2:	4e81                	li	t4,0
    e8805fe4:	d2ec64e3          	bltu	s8,a4,e8805d0c <_svfprintf_r+0x10c>
    e8805fe8:	002e979b          	slliw	a5,t4,0x2
    e8805fec:	98194c8b          	lbuia	s9,(s2),1,0
    e8805ff0:	01d78ebb          	addw	t4,a5,t4
    e8805ff4:	001e9e9b          	slliw	t4,t4,0x1
    e8805ff8:	00ee8ebb          	addw	t4,t4,a4
    e8805ffc:	fd0c871b          	addiw	a4,s9,-48
    e8806000:	feec74e3          	bgeu	s8,a4,e8805fe8 <_svfprintf_r+0x3e8>
    e8806004:	b321                	j	e8805d0c <_svfprintf_r+0x10c>
    e8806006:	00847793          	andi	a5,s0,8
    e880600a:	360791e3          	bnez	a5,e8806b6c <_svfprintf_r+0xf6c>
    e880600e:	67c2                	ld	a5,16(sp)
    e8806010:	ec1a                	sd	t1,24(sp)
    e8806012:	e476                	sd	t4,8(sp)
    e8806014:	2388                	fld	fa0,0(a5)
    e8806016:	07a1                	addi	a5,a5,8
    e8806018:	e83e                	sd	a5,16(sp)
    e880601a:	2f5040ef          	jal	ra,e880ab0e <__extenddftf2>
    e880601e:	e22a                	sd	a0,256(sp)
    e8806020:	6362                	ld	t1,24(sp)
    e8806022:	6ea2                	ld	t4,8(sp)
    e8806024:	e62e                	sd	a1,264(sp)
    e8806026:	0208                	addi	a0,sp,256
    e8806028:	ec1a                	sd	t1,24(sp)
    e880602a:	e476                	sd	t4,8(sp)
    e880602c:	945fe0ef          	jal	ra,e8804970 <_ldcheck>
    e8806030:	d5aa                	sw	a0,232(sp)
    e8806032:	4789                	li	a5,2
    e8806034:	6ea2                	ld	t4,8(sp)
    e8806036:	6362                	ld	t1,24(sp)
    e8806038:	62f504e3          	beq	a0,a5,e8806e60 <_svfprintf_r+0x1260>
    e880603c:	4785                	li	a5,1
    e880603e:	00f51463          	bne	a0,a5,e8806046 <_svfprintf_r+0x446>
    e8806042:	7870006f          	j	e8806fc8 <_svfprintf_r+0x13c8>
    e8806046:	06100713          	li	a4,97
    e880604a:	00ec9463          	bne	s9,a4,e8806052 <_svfprintf_r+0x452>
    e880604e:	4520106f          	j	e88074a0 <_svfprintf_r+0x18a0>
    e8806052:	04100713          	li	a4,65
    e8806056:	00ec9463          	bne	s9,a4,e880605e <_svfprintf_r+0x45e>
    e880605a:	3da0106f          	j	e8807434 <_svfprintf_r+0x1834>
    e880605e:	fdfcf713          	andi	a4,s9,-33
    e8806062:	ed3a                	sd	a4,152(sp)
    e8806064:	fb970713          	addi	a4,a4,-71
    e8806068:	001e8693          	addi	a3,t4,1
    e880606c:	43de978b          	mvnez	a5,t4,t4
    e8806070:	00173713          	seqz	a4,a4
    e8806074:	6c32                	ld	s8,264(sp)
    e8806076:	42e79e8b          	mvnez	t4,a5,a4
    e880607a:	00d03733          	snez	a4,a3
    e880607e:	10046793          	ori	a5,s0,256
    e8806082:	4699                	li	a3,6
    e8806084:	40e69e8b          	mveqz	t4,a3,a4
    e8806088:	2781                	sext.w	a5,a5
    e880608a:	6f92                	ld	t6,256(sp)
    e880608c:	000c5463          	bgez	s8,e8806094 <_svfprintf_r+0x494>
    e8806090:	0320106f          	j	e88070c2 <_svfprintf_r+0x14c2>
    e8806094:	e1a2                	sd	s0,192(sp)
    e8806096:	e582                	sd	zero,200(sp)
    e8806098:	843e                	mv	s0,a5
    e880609a:	ec02                	sd	zero,24(sp)
    e880609c:	676a                	ld	a4,152(sp)
    e880609e:	04600793          	li	a5,70
    e88060a2:	00f71463          	bne	a4,a5,e88060aa <_svfprintf_r+0x4aa>
    e88060a6:	2060106f          	j	e88072ac <_svfprintf_r+0x16ac>
    e88060aa:	f81a                	sd	t1,48(sp)
    e88060ac:	04500793          	li	a5,69
    e88060b0:	00f71463          	bne	a4,a5,e88060b8 <_svfprintf_r+0x4b8>
    e88060b4:	4160106f          	j	e88074ca <_svfprintf_r+0x18ca>
    e88060b8:	8776                	mv	a4,t4
    e88060ba:	11bc                	addi	a5,sp,232
    e88060bc:	85fe                	mv	a1,t6
    e88060be:	0f810893          	addi	a7,sp,248
    e88060c2:	0ec10813          	addi	a6,sp,236
    e88060c6:	4689                	li	a3,2
    e88060c8:	8662                	mv	a2,s8
    e88060ca:	8552                	mv	a0,s4
    e88060cc:	f076                	sd	t4,32(sp)
    e88060ce:	e47e                	sd	t6,8(sp)
    e88060d0:	a31fd0ef          	jal	ra,e8803b00 <_ldtoa_r>
    e88060d4:	8d2a                	mv	s10,a0
    e88060d6:	676a                	ld	a4,152(sp)
    e88060d8:	04700793          	li	a5,71
    e88060dc:	6fa2                	ld	t6,8(sp)
    e88060de:	7e82                	ld	t4,32(sp)
    e88060e0:	7342                	ld	t1,48(sp)
    e88060e2:	00f70463          	beq	a4,a5,e88060ea <_svfprintf_r+0x4ea>
    e88060e6:	5b60106f          	j	e880769c <_svfprintf_r+0x1a9c>
    e88060ea:	678e                	ld	a5,192(sp)
    e88060ec:	01d504b3          	add	s1,a0,t4
    e88060f0:	8b85                	andi	a5,a5,1
    e88060f2:	c399                	beqz	a5,e88060f8 <_svfprintf_r+0x4f8>
    e88060f4:	2120106f          	j	e8807306 <_svfprintf_r+0x1706>
    e88060f8:	77ee                	ld	a5,248(sp)
    e88060fa:	572e                	lw	a4,232(sp)
    e88060fc:	41a787bb          	subw	a5,a5,s10
    e8806100:	f03e                	sd	a5,32(sp)
    e8806102:	ecba                	sd	a4,88(sp)
    e8806104:	676a                	ld	a4,152(sp)
    e8806106:	04700793          	li	a5,71
    e880610a:	00f71463          	bne	a4,a5,e8806112 <_svfprintf_r+0x512>
    e880610e:	14a0106f          	j	e8807258 <_svfprintf_r+0x1658>
    e8806112:	676a                	ld	a4,152(sp)
    e8806114:	04600793          	li	a5,70
    e8806118:	00f71463          	bne	a4,a5,e8806120 <_svfprintf_r+0x520>
    e880611c:	2a20106f          	j	e88073be <_svfprintf_r+0x17be>
    e8806120:	67e6                	ld	a5,88(sp)
    e8806122:	65ea                	ld	a1,152(sp)
    e8806124:	04100693          	li	a3,65
    e8806128:	37fd                	addiw	a5,a5,-1
    e880612a:	d5be                	sw	a5,232(sp)
    e880612c:	0ffcf713          	andi	a4,s9,255
    e8806130:	4601                	li	a2,0
    e8806132:	00d59663          	bne	a1,a3,e880613e <_svfprintf_r+0x53e>
    e8806136:	273d                	addiw	a4,a4,15
    e8806138:	0ff77713          	andi	a4,a4,255
    e880613c:	4605                	li	a2,1
    e880613e:	0ee10823          	sb	a4,240(sp)
    e8806142:	02b00713          	li	a4,43
    e8806146:	0007d763          	bgez	a5,e8806154 <_svfprintf_r+0x554>
    e880614a:	6766                	ld	a4,88(sp)
    e880614c:	4785                	li	a5,1
    e880614e:	9f99                	subw	a5,a5,a4
    e8806150:	02d00713          	li	a4,45
    e8806154:	0ee108a3          	sb	a4,241(sp)
    e8806158:	4725                	li	a4,9
    e880615a:	00f74463          	blt	a4,a5,e8806162 <_svfprintf_r+0x562>
    e880615e:	3f40106f          	j	e8807552 <_svfprintf_r+0x1952>
    e8806162:	0ff10593          	addi	a1,sp,255
    e8806166:	862e                	mv	a2,a1
    e8806168:	4529                	li	a0,10
    e880616a:	06300893          	li	a7,99
    e880616e:	a019                	j	e8806174 <_svfprintf_r+0x574>
    e8806170:	8636                	mv	a2,a3
    e8806172:	87ba                	mv	a5,a4
    e8806174:	02a7e73b          	remw	a4,a5,a0
    e8806178:	fff60693          	addi	a3,a2,-1
    e880617c:	0307071b          	addiw	a4,a4,48
    e8806180:	fee60fa3          	sb	a4,-1(a2)
    e8806184:	02a7c73b          	divw	a4,a5,a0
    e8806188:	fef8c4e3          	blt	a7,a5,e8806170 <_svfprintf_r+0x570>
    e880618c:	0307079b          	addiw	a5,a4,48
    e8806190:	0ff7f793          	andi	a5,a5,255
    e8806194:	fef68fa3          	sb	a5,-1(a3)
    e8806198:	ffe60713          	addi	a4,a2,-2
    e880619c:	00b76463          	bltu	a4,a1,e88061a4 <_svfprintf_r+0x5a4>
    e88061a0:	4e60106f          	j	e8807686 <_svfprintf_r+0x1a86>
    e88061a4:	8d91                	sub	a1,a1,a2
    e88061a6:	56fd                	li	a3,-1
    e88061a8:	1998                	addi	a4,sp,240
    e88061aa:	a021                	j	e88061b2 <_svfprintf_r+0x5b2>
    e88061ac:	80d6478b          	lrbu	a5,a2,a3,0
    e88061b0:	0685                	addi	a3,a3,1
    e88061b2:	00d70533          	add	a0,a4,a3
    e88061b6:	00f501a3          	sb	a5,3(a0)
    e88061ba:	feb699e3          	bne	a3,a1,e88061ac <_svfprintf_r+0x5ac>
    e88061be:	10110793          	addi	a5,sp,257
    e88061c2:	8f91                	sub	a5,a5,a2
    e88061c4:	0f210693          	addi	a3,sp,242
    e88061c8:	97b6                	add	a5,a5,a3
    e88061ca:	9f99                	subw	a5,a5,a4
    e88061cc:	e53e                	sd	a5,136(sp)
    e88061ce:	67aa                	ld	a5,136(sp)
    e88061d0:	7682                	ld	a3,32(sp)
    e88061d2:	4705                	li	a4,1
    e88061d4:	00f68c3b          	addw	s8,a3,a5
    e88061d8:	87e2                	mv	a5,s8
    e88061da:	00d74463          	blt	a4,a3,e88061e2 <_svfprintf_r+0x5e2>
    e88061de:	4560106f          	j	e8807634 <_svfprintf_r+0x1a34>
    e88061e2:	7746                	ld	a4,112(sp)
    e88061e4:	00e78c3b          	addw	s8,a5,a4
    e88061e8:	678e                	ld	a5,192(sp)
    e88061ea:	fffc4493          	not	s1,s8
    e88061ee:	94fd                	srai	s1,s1,0x3f
    e88061f0:	bff7f413          	andi	s0,a5,-1025
    e88061f4:	2401                	sext.w	s0,s0
    e88061f6:	009c74b3          	and	s1,s8,s1
    e88061fa:	10046413          	ori	s0,s0,256
    e88061fe:	2481                	sext.w	s1,s1
    e8806200:	e882                	sd	zero,80(sp)
    e8806202:	f082                	sd	zero,96(sp)
    e8806204:	ec82                	sd	zero,88(sp)
    e8806206:	67ae                	ld	a5,200(sp)
    e8806208:	e399                	bnez	a5,e880620e <_svfprintf_r+0x60e>
    e880620a:	13a0106f          	j	e8807344 <_svfprintf_r+0x1744>
    e880620e:	02d00793          	li	a5,45
    e8806212:	0cf10fa3          	sb	a5,223(sp)
    e8806216:	4e81                	li	t4,0
    e8806218:	2485                	addiw	s1,s1,1
    e880621a:	a879                	j	e88062b8 <_svfprintf_r+0x6b8>
    e880621c:	00094f03          	lbu	t5,0(s2)
    e8806220:	06800793          	li	a5,104
    e8806224:	1aff04e3          	beq	t5,a5,e8806bcc <_svfprintf_r+0xfcc>
    e8806228:	04046413          	ori	s0,s0,64
    e880622c:	2401                	sext.w	s0,s0
    e880622e:	bcd9                	j	e8805d04 <_svfprintf_r+0x104>
    e8806230:	6742                	ld	a4,16(sp)
    e8806232:	0c010fa3          	sb	zero,223(sp)
    e8806236:	78874d0b          	ldia	s10,(a4),8,0
    e880623a:	1c0d02e3          	beqz	s10,e8806bfe <_svfprintf_r+0xffe>
    e880623e:	57fd                	li	a5,-1
    e8806240:	4efe80e3          	beq	t4,a5,e8806f20 <_svfprintf_r+0x1320>
    e8806244:	8676                	mv	a2,t4
    e8806246:	4581                	li	a1,0
    e8806248:	856a                	mv	a0,s10
    e880624a:	f83a                	sd	a4,48(sp)
    e880624c:	e81a                	sd	t1,16(sp)
    e880624e:	e476                	sd	t4,8(sp)
    e8806250:	5e4750ef          	jal	ra,e887b834 <memchr>
    e8806254:	ec2a                	sd	a0,24(sp)
    e8806256:	6ea2                	ld	t4,8(sp)
    e8806258:	6342                	ld	t1,16(sp)
    e880625a:	7742                	ld	a4,48(sp)
    e880625c:	e119                	bnez	a0,e8806262 <_svfprintf_r+0x662>
    e880625e:	1440106f          	j	e88073a2 <_svfprintf_r+0x17a2>
    e8806262:	67e2                	ld	a5,24(sp)
    e8806264:	e83a                	sd	a4,16(sp)
    e8806266:	ec02                	sd	zero,24(sp)
    e8806268:	41a78c3b          	subw	s8,a5,s10
    e880626c:	fffc4493          	not	s1,s8
    e8806270:	0df14783          	lbu	a5,223(sp)
    e8806274:	94fd                	srai	s1,s1,0x3f
    e8806276:	e882                	sd	zero,80(sp)
    e8806278:	f082                	sd	zero,96(sp)
    e880627a:	ec82                	sd	zero,88(sp)
    e880627c:	009c74b3          	and	s1,s8,s1
    e8806280:	2481                	sext.w	s1,s1
    e8806282:	4e81                	li	t4,0
    e8806284:	b20791e3          	bnez	a5,e8805da6 <_svfprintf_r+0x1a6>
    e8806288:	a805                	j	e88062b8 <_svfprintf_r+0x6b8>
    e880628a:	00846413          	ori	s0,s0,8
    e880628e:	2401                	sext.w	s0,s0
    e8806290:	00094f03          	lbu	t5,0(s2)
    e8806294:	bc85                	j	e8805d04 <_svfprintf_r+0x104>
    e8806296:	6d42                	ld	s10,16(sp)
    e8806298:	0c010fa3          	sb	zero,223(sp)
    e880629c:	4485                	li	s1,1
    e880629e:	588d478b          	lwia	a5,(s10),8,0
    e88062a2:	4c05                	li	s8,1
    e88062a4:	e86a                	sd	s10,16(sp)
    e88062a6:	12f10423          	sb	a5,296(sp)
    e88062aa:	12810d13          	addi	s10,sp,296
    e88062ae:	ec02                	sd	zero,24(sp)
    e88062b0:	4e81                	li	t4,0
    e88062b2:	e882                	sd	zero,80(sp)
    e88062b4:	f082                	sd	zero,96(sp)
    e88062b6:	ec82                	sd	zero,88(sp)
    e88062b8:	0024879b          	addiw	a5,s1,2
    e88062bc:	00247893          	andi	a7,s0,2
    e88062c0:	2881                	sext.w	a7,a7
    e88062c2:	08447293          	andi	t0,s0,132
    e88062c6:	4317948b          	mvnez	s1,a5,a7
    e88062ca:	7792                	ld	a5,288(sp)
    e88062cc:	00029663          	bnez	t0,e88062d8 <_svfprintf_r+0x6d8>
    e88062d0:	409b86bb          	subw	a3,s7,s1
    e88062d4:	56d04e63          	bgtz	a3,e8806850 <_svfprintf_r+0xc50>
    e88062d8:	0df14703          	lbu	a4,223(sp)
    e88062dc:	c31d                	beqz	a4,e8806302 <_svfprintf_r+0x702>
    e88062de:	11812703          	lw	a4,280(sp)
    e88062e2:	0df10693          	addi	a3,sp,223
    e88062e6:	00d33023          	sd	a3,0(t1)
    e88062ea:	2705                	addiw	a4,a4,1
    e88062ec:	4685                	li	a3,1
    e88062ee:	0785                	addi	a5,a5,1
    e88062f0:	00d33423          	sd	a3,8(t1)
    e88062f4:	f23e                	sd	a5,288(sp)
    e88062f6:	10e12c23          	sw	a4,280(sp)
    e88062fa:	469d                	li	a3,7
    e88062fc:	0341                	addi	t1,t1,16
    e88062fe:	0ae6c963          	blt	a3,a4,e88063b0 <_svfprintf_r+0x7b0>
    e8806302:	02088363          	beqz	a7,e8806328 <_svfprintf_r+0x728>
    e8806306:	11812703          	lw	a4,280(sp)
    e880630a:	1194                	addi	a3,sp,224
    e880630c:	00d33023          	sd	a3,0(t1)
    e8806310:	2705                	addiw	a4,a4,1
    e8806312:	4689                	li	a3,2
    e8806314:	0789                	addi	a5,a5,2
    e8806316:	00d33423          	sd	a3,8(t1)
    e880631a:	f23e                	sd	a5,288(sp)
    e880631c:	10e12c23          	sw	a4,280(sp)
    e8806320:	469d                	li	a3,7
    e8806322:	0341                	addi	t1,t1,16
    e8806324:	5ce6c263          	blt	a3,a4,e88068e8 <_svfprintf_r+0xce8>
    e8806328:	08000713          	li	a4,128
    e880632c:	40e28063          	beq	t0,a4,e880672c <_svfprintf_r+0xb2c>
    e8806330:	418e8ebb          	subw	t4,t4,s8
    e8806334:	49d04263          	bgtz	t4,e88067b8 <_svfprintf_r+0xbb8>
    e8806338:	10047713          	andi	a4,s0,256
    e880633c:	32071463          	bnez	a4,e8806664 <_svfprintf_r+0xa64>
    e8806340:	11812703          	lw	a4,280(sp)
    e8806344:	97e2                	add	a5,a5,s8
    e8806346:	01a33023          	sd	s10,0(t1)
    e880634a:	2705                	addiw	a4,a4,1
    e880634c:	01833423          	sd	s8,8(t1)
    e8806350:	469d                	li	a3,7
    e8806352:	f23e                	sd	a5,288(sp)
    e8806354:	10e12c23          	sw	a4,280(sp)
    e8806358:	12e6c663          	blt	a3,a4,e8806484 <_svfprintf_r+0x884>
    e880635c:	0341                	addi	t1,t1,16
    e880635e:	8811                	andi	s0,s0,4
    e8806360:	c409                	beqz	s0,e880636a <_svfprintf_r+0x76a>
    e8806362:	409b843b          	subw	s0,s7,s1
    e8806366:	58804f63          	bgtz	s0,e8806904 <_svfprintf_r+0xd04>
    e880636a:	009ba733          	slt	a4,s7,s1
    e880636e:	40eb948b          	mveqz	s1,s7,a4
    e8806372:	6702                	ld	a4,0(sp)
    e8806374:	9f25                	addw	a4,a4,s1
    e8806376:	e03a                	sd	a4,0(sp)
    e8806378:	aa0796e3          	bnez	a5,e8805e24 <_svfprintf_r+0x224>
    e880637c:	67e2                	ld	a5,24(sp)
    e880637e:	10012c23          	sw	zero,280(sp)
    e8806382:	c789                	beqz	a5,e880638c <_svfprintf_r+0x78c>
    e8806384:	65e2                	ld	a1,24(sp)
    e8806386:	8552                	mv	a0,s4
    e8806388:	64d750ef          	jal	ra,e887c1d4 <_free_r>
    e880638c:	8356                	mv	t1,s5
    e880638e:	8d4a                	mv	s10,s2
    e8806390:	000d4783          	lbu	a5,0(s10)
    e8806394:	900791e3          	bnez	a5,e8805c96 <_svfprintf_r+0x96>
    e8806398:	7792                	ld	a5,288(sp)
    e880639a:	aa0785e3          	beqz	a5,e8805e44 <_svfprintf_r+0x244>
    e880639e:	0a10                	addi	a2,sp,272
    e88063a0:	85da                	mv	a1,s6
    e88063a2:	8552                	mv	a0,s4
    e88063a4:	03d020ef          	jal	ra,e8808be0 <__ssprint_r>
    e88063a8:	010b5783          	lhu	a5,16(s6)
    e88063ac:	bc71                	j	e8805e48 <_svfprintf_r+0x248>
    e88063ae:	0001                	nop
    e88063b0:	0a10                	addi	a2,sp,272
    e88063b2:	85da                	mv	a1,s6
    e88063b4:	8552                	mv	a0,s4
    e88063b6:	fc76                	sd	t4,56(sp)
    e88063b8:	f816                	sd	t0,48(sp)
    e88063ba:	e446                	sd	a7,8(sp)
    e88063bc:	025020ef          	jal	ra,e8808be0 <__ssprint_r>
    e88063c0:	a6051ce3          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e88063c4:	7792                	ld	a5,288(sp)
    e88063c6:	8356                	mv	t1,s5
    e88063c8:	7ee2                	ld	t4,56(sp)
    e88063ca:	72c2                	ld	t0,48(sp)
    e88063cc:	68a2                	ld	a7,8(sp)
    e88063ce:	bf15                	j	e8806302 <_svfprintf_r+0x702>
    e88063d0:	11812f03          	lw	t5,280(sp)
    e88063d4:	7582                	ld	a1,32(sp)
    e88063d6:	01a33023          	sd	s10,0(t1)
    e88063da:	001f071b          	addiw	a4,t5,1
    e88063de:	4605                	li	a2,1
    e88063e0:	0785                	addi	a5,a5,1
    e88063e2:	86ba                	mv	a3,a4
    e88063e4:	01030c13          	addi	s8,t1,16
    e88063e8:	6cb65d63          	bge	a2,a1,e8806ac2 <_svfprintf_r+0xec2>
    e88063ec:	4605                	li	a2,1
    e88063ee:	10d12c23          	sw	a3,280(sp)
    e88063f2:	00c33423          	sd	a2,8(t1)
    e88063f6:	f23e                	sd	a5,288(sp)
    e88063f8:	469d                	li	a3,7
    e88063fa:	72e6cc63          	blt	a3,a4,e8806b32 <_svfprintf_r+0xf32>
    e88063fe:	76c6                	ld	a3,112(sp)
    e8806400:	7666                	ld	a2,120(sp)
    e8806402:	2705                	addiw	a4,a4,1
    e8806404:	97b6                	add	a5,a5,a3
    e8806406:	f8dc560b          	sdd	a2,a3,(s8),0,4
    e880640a:	f23e                	sd	a5,288(sp)
    e880640c:	10e12c23          	sw	a4,280(sp)
    e8806410:	469d                	li	a3,7
    e8806412:	0c41                	addi	s8,s8,16
    e8806414:	72e6cb63          	blt	a3,a4,e8806b4a <_svfprintf_r+0xf4a>
    e8806418:	e0be                	sd	a5,64(sp)
    e880641a:	7782                	ld	a5,32(sp)
    e880641c:	6512                	ld	a0,256(sp)
    e880641e:	65b2                	ld	a1,264(sp)
    e8806420:	00170e9b          	addiw	t4,a4,1
    e8806424:	fff7889b          	addiw	a7,a5,-1
    e8806428:	010c0313          	addi	t1,s8,16
    e880642c:	4601                	li	a2,0
    e880642e:	4681                	li	a3,0
    e8806430:	8cf6                	mv	s9,t4
    e8806432:	fc76                	sd	t4,56(sp)
    e8806434:	f81a                	sd	t1,48(sp)
    e8806436:	e446                	sd	a7,8(sp)
    e8806438:	e4ba                	sd	a4,72(sp)
    e880643a:	60c030ef          	jal	ra,e8809a46 <__eqtf2>
    e880643e:	68a2                	ld	a7,8(sp)
    e8806440:	ffd1430b          	ldd	t1,t4,(sp),3,4
    e8806444:	6786                	ld	a5,64(sp)
    e8806446:	68050f63          	beqz	a0,e8806ae4 <_svfprintf_r+0xee4>
    e880644a:	001d0813          	addi	a6,s10,1
    e880644e:	97c6                	add	a5,a5,a7
    e8806450:	f91c580b          	sdd	a6,a7,(s8),0,4
    e8806454:	f23e                	sd	a5,288(sp)
    e8806456:	11d12c23          	sw	t4,280(sp)
    e880645a:	469d                	li	a3,7
    e880645c:	1196cae3          	blt	a3,s9,e8806d70 <_svfprintf_r+0x1170>
    e8806460:	6726                	ld	a4,72(sp)
    e8806462:	020c0693          	addi	a3,s8,32
    e8806466:	8c1a                	mv	s8,t1
    e8806468:	00270c9b          	addiw	s9,a4,2
    e880646c:	8336                	mv	t1,a3
    e880646e:	66aa                	ld	a3,136(sp)
    e8806470:	1998                	addi	a4,sp,240
    e8806472:	11912c23          	sw	s9,280(sp)
    e8806476:	97b6                	add	a5,a5,a3
    e8806478:	f8dc570b          	sdd	a4,a3,(s8),0,4
    e880647c:	f23e                	sd	a5,288(sp)
    e880647e:	471d                	li	a4,7
    e8806480:	ed975fe3          	bge	a4,s9,e880635e <_svfprintf_r+0x75e>
    e8806484:	0a10                	addi	a2,sp,272
    e8806486:	85da                	mv	a1,s6
    e8806488:	8552                	mv	a0,s4
    e880648a:	756020ef          	jal	ra,e8808be0 <__ssprint_r>
    e880648e:	9a0515e3          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806492:	7792                	ld	a5,288(sp)
    e8806494:	8356                	mv	t1,s5
    e8806496:	b5e1                	j	e880635e <_svfprintf_r+0x75e>
    e8806498:	00146413          	ori	s0,s0,1
    e880649c:	2401                	sext.w	s0,s0
    e880649e:	00094f03          	lbu	t5,0(s2)
    e88064a2:	b08d                	j	e8805d04 <_svfprintf_r+0x104>
    e88064a4:	0df14783          	lbu	a5,223(sp)
    e88064a8:	00094f03          	lbu	t5,0(s2)
    e88064ac:	84079ce3          	bnez	a5,e8805d04 <_svfprintf_r+0x104>
    e88064b0:	02000793          	li	a5,32
    e88064b4:	0cf10fa3          	sb	a5,223(sp)
    e88064b8:	84dff06f          	j	e8805d04 <_svfprintf_r+0x104>
    e88064bc:	02046413          	ori	s0,s0,32
    e88064c0:	2401                	sext.w	s0,s0
    e88064c2:	00094f03          	lbu	t5,0(s2)
    e88064c6:	83fff06f          	j	e8805d04 <_svfprintf_r+0x104>
    e88064ca:	6d42                	ld	s10,16(sp)
    e88064cc:	77e1                	lui	a5,0xffff8
    e88064ce:	8307c793          	xori	a5,a5,-2000
    e88064d2:	788d448b          	ldia	s1,(s10),8,0
    e88064d6:	0ef11023          	sh	a5,224(sp)
    e88064da:	0009d797          	auipc	a5,0x9d
    e88064de:	cce78793          	addi	a5,a5,-818 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e88064e2:	00246693          	ori	a3,s0,2
    e88064e6:	f43e                	sd	a5,40(sp)
    e88064e8:	2681                	sext.w	a3,a3
    e88064ea:	e86a                	sd	s10,16(sp)
    e88064ec:	4789                	li	a5,2
    e88064ee:	07800c93          	li	s9,120
    e88064f2:	b08d                	j	e8805d54 <_svfprintf_r+0x154>
    e88064f4:	66c2                	ld	a3,16(sp)
    e88064f6:	02047793          	andi	a5,s0,32
    e88064fa:	7886c70b          	ldia	a4,(a3),8,0
    e88064fe:	e836                	sd	a3,16(sp)
    e8806500:	10079063          	bnez	a5,e8806600 <_svfprintf_r+0xa00>
    e8806504:	01047793          	andi	a5,s0,16
    e8806508:	efe5                	bnez	a5,e8806600 <_svfprintf_r+0xa00>
    e880650a:	04047793          	andi	a5,s0,64
    e880650e:	360791e3          	bnez	a5,e8807070 <_svfprintf_r+0x1470>
    e8806512:	20047413          	andi	s0,s0,512
    e8806516:	6782                	ld	a5,0(sp)
    e8806518:	e019                	bnez	s0,e880651e <_svfprintf_r+0x91e>
    e880651a:	0300106f          	j	e880754a <_svfprintf_r+0x194a>
    e880651e:	00f70023          	sb	a5,0(a4)
    e8806522:	8d4a                	mv	s10,s2
    e8806524:	b5b5                	j	e8806390 <_svfprintf_r+0x790>
    e8806526:	0001                	nop
    e8806528:	00094f03          	lbu	t5,0(s2)
    e880652c:	06c00793          	li	a5,108
    e8806530:	68ff0663          	beq	t5,a5,e8806bbc <_svfprintf_r+0xfbc>
    e8806534:	01046413          	ori	s0,s0,16
    e8806538:	2401                	sext.w	s0,s0
    e880653a:	fcaff06f          	j	e8805d04 <_svfprintf_r+0x104>
    e880653e:	01047793          	andi	a5,s0,16
    e8806542:	62079063          	bnez	a5,e8806b62 <_svfprintf_r+0xf62>
    e8806546:	04047793          	andi	a5,s0,64
    e880654a:	260786e3          	beqz	a5,e8806fb6 <_svfprintf_r+0x13b6>
    e880654e:	67c2                	ld	a5,16(sp)
    e8806550:	00079483          	lh	s1,0(a5)
    e8806554:	87a6                	mv	a5,s1
    e8806556:	8607d8e3          	bgez	a5,e8805dc6 <_svfprintf_r+0x1c6>
    e880655a:	02d00793          	li	a5,45
    e880655e:	0cf10fa3          	sb	a5,223(sp)
    e8806562:	e83a                	sd	a4,16(sp)
    e8806564:	577d                	li	a4,-1
    e8806566:	409004b3          	neg	s1,s1
    e880656a:	86a2                	mv	a3,s0
    e880656c:	4785                	li	a5,1
    e880656e:	feee9863          	bne	t4,a4,e8805d5e <_svfprintf_r+0x15e>
    e8806572:	0001                	nop
    e8806574:	00000013          	nop
    e8806578:	4705                	li	a4,1
    e880657a:	2ae78d63          	beq	a5,a4,e8806834 <_svfprintf_r+0xc34>
    e880657e:	4709                	li	a4,2
    e8806580:	40e78463          	beq	a5,a4,e8806988 <_svfprintf_r+0xd88>
    e8806584:	18c10c13          	addi	s8,sp,396
    e8806588:	8762                	mv	a4,s8
    e880658a:	a011                	j	e880658e <_svfprintf_r+0x98e>
    e880658c:	876a                	mv	a4,s10
    e880658e:	0074f793          	andi	a5,s1,7
    e8806592:	03078793          	addi	a5,a5,48
    e8806596:	fef70fa3          	sb	a5,-1(a4)
    e880659a:	808d                	srli	s1,s1,0x3
    e880659c:	fff70d13          	addi	s10,a4,-1
    e88065a0:	f4f5                	bnez	s1,e880658c <_svfprintf_r+0x98c>
    e88065a2:	0016f613          	andi	a2,a3,1
    e88065a6:	ca4d                	beqz	a2,e8806658 <_svfprintf_r+0xa58>
    e88065a8:	03000613          	li	a2,48
    e88065ac:	0ac78663          	beq	a5,a2,e8806658 <_svfprintf_r+0xa58>
    e88065b0:	1779                	addi	a4,a4,-2
    e88065b2:	fecd0fa3          	sb	a2,-1(s10)
    e88065b6:	40ec0c3b          	subw	s8,s8,a4
    e88065ba:	8436                	mv	s0,a3
    e88065bc:	8d3a                	mv	s10,a4
    e88065be:	fcaff06f          	j	e8805d88 <_svfprintf_r+0x188>
    e88065c2:	01047793          	andi	a5,s0,16
    e88065c6:	5c079a63          	bnez	a5,e8806b9a <_svfprintf_r+0xf9a>
    e88065ca:	66c2                	ld	a3,16(sp)
    e88065cc:	04047793          	andi	a5,s0,64
    e88065d0:	4284                	lw	s1,0(a3)
    e88065d2:	1a078ee3          	beqz	a5,e8806f8e <_svfprintf_r+0x138e>
    e88065d6:	3c04b48b          	extu	s1,s1,15,0
    e88065da:	f70ff06f          	j	e8805d4a <_svfprintf_r+0x14a>
    e88065de:	01047793          	andi	a5,s0,16
    e88065e2:	5a079563          	bnez	a5,e8806b8c <_svfprintf_r+0xf8c>
    e88065e6:	66c2                	ld	a3,16(sp)
    e88065e8:	04047793          	andi	a5,s0,64
    e88065ec:	4284                	lw	s1,0(a3)
    e88065ee:	1a078ae3          	beqz	a5,e8806fa2 <_svfprintf_r+0x13a2>
    e88065f2:	3c04b48b          	extu	s1,s1,15,0
    e88065f6:	e83a                	sd	a4,16(sp)
    e88065f8:	86a2                	mv	a3,s0
    e88065fa:	4785                	li	a5,1
    e88065fc:	f58ff06f          	j	e8805d54 <_svfprintf_r+0x154>
    e8806600:	6782                	ld	a5,0(sp)
    e8806602:	8d4a                	mv	s10,s2
    e8806604:	e31c                	sd	a5,0(a4)
    e8806606:	b369                	j	e8806390 <_svfprintf_r+0x790>
    e8806608:	4006f793          	andi	a5,a3,1024
    e880660c:	18c10c13          	addi	s8,sp,396
    e8806610:	2781                	sext.w	a5,a5
    e8806612:	f002                	sd	zero,32(sp)
    e8806614:	85e2                	mv	a1,s8
    e8806616:	4429                	li	s0,10
    e8806618:	4725                	li	a4,9
    e880661a:	0ff00893          	li	a7,255
    e880661e:	a039                	j	e880662c <_svfprintf_r+0xa2c>
    e8806620:	0284d633          	divu	a2,s1,s0
    e8806624:	02977a63          	bgeu	a4,s1,e8806658 <_svfprintf_r+0xa58>
    e8806628:	84b2                	mv	s1,a2
    e880662a:	85ea                	mv	a1,s10
    e880662c:	7502                	ld	a0,32(sp)
    e880662e:	fff58d13          	addi	s10,a1,-1
    e8806632:	2505                	addiw	a0,a0,1
    e8806634:	f02a                	sd	a0,32(sp)
    e8806636:	0284f633          	remu	a2,s1,s0
    e880663a:	0306061b          	addiw	a2,a2,48
    e880663e:	fec58fa3          	sb	a2,-1(a1)
    e8806642:	dff9                	beqz	a5,e8806620 <_svfprintf_r+0xa20>
    e8806644:	7626                	ld	a2,104(sp)
    e8806646:	00064603          	lbu	a2,0(a2)
    e880664a:	fcc51be3          	bne	a0,a2,e8806620 <_svfprintf_r+0xa20>
    e880664e:	fd1609e3          	beq	a2,a7,e8806620 <_svfprintf_r+0xa20>
    e8806652:	1e9760e3          	bltu	a4,s1,e8807032 <_svfprintf_r+0x1432>
    e8806656:	0001                	nop
    e8806658:	41ac0c3b          	subw	s8,s8,s10
    e880665c:	8436                	mv	s0,a3
    e880665e:	f2aff06f          	j	e8805d88 <_svfprintf_r+0x188>
    e8806662:	0001                	nop
    e8806664:	06500713          	li	a4,101
    e8806668:	d79754e3          	bge	a4,s9,e88063d0 <_svfprintf_r+0x7d0>
    e880666c:	6512                	ld	a0,256(sp)
    e880666e:	65b2                	ld	a1,264(sp)
    e8806670:	4601                	li	a2,0
    e8806672:	4681                	li	a3,0
    e8806674:	f81a                	sd	t1,48(sp)
    e8806676:	e43e                	sd	a5,8(sp)
    e8806678:	3ce030ef          	jal	ra,e8809a46 <__eqtf2>
    e880667c:	67a2                	ld	a5,8(sp)
    e880667e:	7342                	ld	t1,48(sp)
    e8806680:	32051663          	bnez	a0,e88069ac <_svfprintf_r+0xdac>
    e8806684:	11812703          	lw	a4,280(sp)
    e8806688:	000c9697          	auipc	a3,0xc9
    e880668c:	b3868693          	addi	a3,a3,-1224 # e88cf1c0 <err_to_errno_table+0xe8>
    e8806690:	0785                	addi	a5,a5,1
    e8806692:	00d33023          	sd	a3,0(t1)
    e8806696:	2705                	addiw	a4,a4,1
    e8806698:	4685                	li	a3,1
    e880669a:	00d33423          	sd	a3,8(t1)
    e880669e:	f23e                	sd	a5,288(sp)
    e88066a0:	10e12c23          	sw	a4,280(sp)
    e88066a4:	479d                	li	a5,7
    e88066a6:	0341                	addi	t1,t1,16
    e88066a8:	76e7cb63          	blt	a5,a4,e8806e1e <_svfprintf_r+0x121e>
    e88066ac:	57ae                	lw	a5,232(sp)
    e88066ae:	7702                	ld	a4,32(sp)
    e88066b0:	00e7c763          	blt	a5,a4,e88066be <_svfprintf_r+0xabe>
    e88066b4:	00147793          	andi	a5,s0,1
    e88066b8:	e399                	bnez	a5,e88066be <_svfprintf_r+0xabe>
    e88066ba:	7792                	ld	a5,288(sp)
    e88066bc:	b14d                	j	e880635e <_svfprintf_r+0x75e>
    e88066be:	77e6                	ld	a5,120(sp)
    e88066c0:	76c6                	ld	a3,112(sp)
    e88066c2:	11812703          	lw	a4,280(sp)
    e88066c6:	00f33023          	sd	a5,0(t1)
    e88066ca:	7792                	ld	a5,288(sp)
    e88066cc:	2705                	addiw	a4,a4,1
    e88066ce:	00d33423          	sd	a3,8(t1)
    e88066d2:	97b6                	add	a5,a5,a3
    e88066d4:	f23e                	sd	a5,288(sp)
    e88066d6:	10e12c23          	sw	a4,280(sp)
    e88066da:	469d                	li	a3,7
    e88066dc:	0341                	addi	t1,t1,16
    e88066de:	4ce6c563          	blt	a3,a4,e8806ba8 <_svfprintf_r+0xfa8>
    e88066e2:	7702                	ld	a4,32(sp)
    e88066e4:	fff70c1b          	addiw	s8,a4,-1
    e88066e8:	c7805be3          	blez	s8,e880635e <_svfprintf_r+0x75e>
    e88066ec:	11812703          	lw	a4,280(sp)
    e88066f0:	758dd163          	bge	s11,s8,e8806e32 <_svfprintf_r+0x1232>
    e88066f4:	4c9d                	li	s9,7
    e88066f6:	a021                	j	e88066fe <_svfprintf_r+0xafe>
    e88066f8:	3c41                	addiw	s8,s8,-16
    e88066fa:	738ddc63          	bge	s11,s8,e8806e32 <_svfprintf_r+0x1232>
    e88066fe:	2705                	addiw	a4,a4,1
    e8806700:	07c1                	addi	a5,a5,16
    e8806702:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8806706:	f23e                	sd	a5,288(sp)
    e8806708:	10e12c23          	sw	a4,280(sp)
    e880670c:	0341                	addi	t1,t1,16
    e880670e:	feecd5e3          	bge	s9,a4,e88066f8 <_svfprintf_r+0xaf8>
    e8806712:	0a10                	addi	a2,sp,272
    e8806714:	85da                	mv	a1,s6
    e8806716:	8552                	mv	a0,s4
    e8806718:	4c8020ef          	jal	ra,e8808be0 <__ssprint_r>
    e880671c:	f0051e63          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806720:	7792                	ld	a5,288(sp)
    e8806722:	11812703          	lw	a4,280(sp)
    e8806726:	8356                	mv	t1,s5
    e8806728:	bfc1                	j	e88066f8 <_svfprintf_r+0xaf8>
    e880672a:	0001                	nop
    e880672c:	409b86bb          	subw	a3,s7,s1
    e8806730:	c0d050e3          	blez	a3,e8806330 <_svfprintf_r+0x730>
    e8806734:	11812703          	lw	a4,280(sp)
    e8806738:	04ddd463          	bge	s11,a3,e8806780 <_svfprintf_r+0xb80>
    e880673c:	489d                	li	a7,7
    e880673e:	a021                	j	e8806746 <_svfprintf_r+0xb46>
    e8806740:	36c1                	addiw	a3,a3,-16
    e8806742:	02dddf63          	bge	s11,a3,e8806780 <_svfprintf_r+0xb80>
    e8806746:	2705                	addiw	a4,a4,1
    e8806748:	07c1                	addi	a5,a5,16
    e880674a:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e880674e:	f23e                	sd	a5,288(sp)
    e8806750:	10e12c23          	sw	a4,280(sp)
    e8806754:	0341                	addi	t1,t1,16
    e8806756:	fee8d5e3          	bge	a7,a4,e8806740 <_svfprintf_r+0xb40>
    e880675a:	0a10                	addi	a2,sp,272
    e880675c:	85da                	mv	a1,s6
    e880675e:	8552                	mv	a0,s4
    e8806760:	f836                	sd	a3,48(sp)
    e8806762:	e476                	sd	t4,8(sp)
    e8806764:	47c020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806768:	ec051863          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e880676c:	76c2                	ld	a3,48(sp)
    e880676e:	7792                	ld	a5,288(sp)
    e8806770:	11812703          	lw	a4,280(sp)
    e8806774:	36c1                	addiw	a3,a3,-16
    e8806776:	8356                	mv	t1,s5
    e8806778:	489d                	li	a7,7
    e880677a:	6ea2                	ld	t4,8(sp)
    e880677c:	fcddc5e3          	blt	s11,a3,e8806746 <_svfprintf_r+0xb46>
    e8806780:	97b6                	add	a5,a5,a3
    e8806782:	2705                	addiw	a4,a4,1
    e8806784:	f8d3598b          	sdd	s3,a3,(t1),0,4
    e8806788:	f23e                	sd	a5,288(sp)
    e880678a:	10e12c23          	sw	a4,280(sp)
    e880678e:	469d                	li	a3,7
    e8806790:	0341                	addi	t1,t1,16
    e8806792:	b8e6dfe3          	bge	a3,a4,e8806330 <_svfprintf_r+0x730>
    e8806796:	0a10                	addi	a2,sp,272
    e8806798:	85da                	mv	a1,s6
    e880679a:	8552                	mv	a0,s4
    e880679c:	e476                	sd	t4,8(sp)
    e880679e:	442020ef          	jal	ra,e8808be0 <__ssprint_r>
    e88067a2:	e8051b63          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e88067a6:	6ea2                	ld	t4,8(sp)
    e88067a8:	7792                	ld	a5,288(sp)
    e88067aa:	8356                	mv	t1,s5
    e88067ac:	418e8ebb          	subw	t4,t4,s8
    e88067b0:	b9d054e3          	blez	t4,e8806338 <_svfprintf_r+0x738>
    e88067b4:	00000013          	nop
    e88067b8:	11812703          	lw	a4,280(sp)
    e88067bc:	05ddd263          	bge	s11,t4,e8806800 <_svfprintf_r+0xc00>
    e88067c0:	469d                	li	a3,7
    e88067c2:	a021                	j	e88067ca <_svfprintf_r+0xbca>
    e88067c4:	3ec1                	addiw	t4,t4,-16
    e88067c6:	03dddd63          	bge	s11,t4,e8806800 <_svfprintf_r+0xc00>
    e88067ca:	2705                	addiw	a4,a4,1
    e88067cc:	07c1                	addi	a5,a5,16
    e88067ce:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e88067d2:	f23e                	sd	a5,288(sp)
    e88067d4:	10e12c23          	sw	a4,280(sp)
    e88067d8:	0341                	addi	t1,t1,16
    e88067da:	fee6d5e3          	bge	a3,a4,e88067c4 <_svfprintf_r+0xbc4>
    e88067de:	0a10                	addi	a2,sp,272
    e88067e0:	85da                	mv	a1,s6
    e88067e2:	8552                	mv	a0,s4
    e88067e4:	e476                	sd	t4,8(sp)
    e88067e6:	3fa020ef          	jal	ra,e8808be0 <__ssprint_r>
    e88067ea:	e4051763          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e88067ee:	6ea2                	ld	t4,8(sp)
    e88067f0:	7792                	ld	a5,288(sp)
    e88067f2:	11812703          	lw	a4,280(sp)
    e88067f6:	3ec1                	addiw	t4,t4,-16
    e88067f8:	8356                	mv	t1,s5
    e88067fa:	469d                	li	a3,7
    e88067fc:	fdddc7e3          	blt	s11,t4,e88067ca <_svfprintf_r+0xbca>
    e8806800:	2705                	addiw	a4,a4,1
    e8806802:	97f6                	add	a5,a5,t4
    e8806804:	f9d3598b          	sdd	s3,t4,(t1),0,4
    e8806808:	f23e                	sd	a5,288(sp)
    e880680a:	10e12c23          	sw	a4,280(sp)
    e880680e:	469d                	li	a3,7
    e8806810:	0341                	addi	t1,t1,16
    e8806812:	b2e6d3e3          	bge	a3,a4,e8806338 <_svfprintf_r+0x738>
    e8806816:	0a10                	addi	a2,sp,272
    e8806818:	85da                	mv	a1,s6
    e880681a:	8552                	mv	a0,s4
    e880681c:	3c4020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806820:	e0051c63          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806824:	7792                	ld	a5,288(sp)
    e8806826:	8356                	mv	t1,s5
    e8806828:	be01                	j	e8806338 <_svfprintf_r+0x738>
    e880682a:	0001                	nop
    e880682c:	4705                	li	a4,1
    e880682e:	86a2                	mv	a3,s0
    e8806830:	d4e797e3          	bne	a5,a4,e880657e <_svfprintf_r+0x97e>
    e8806834:	47a5                	li	a5,9
    e8806836:	dc97e9e3          	bltu	a5,s1,e8806608 <_svfprintf_r+0xa08>
    e880683a:	0304849b          	addiw	s1,s1,48
    e880683e:	189105a3          	sb	s1,395(sp)
    e8806842:	8436                	mv	s0,a3
    e8806844:	4c05                	li	s8,1
    e8806846:	18b10d13          	addi	s10,sp,395
    e880684a:	d3eff06f          	j	e8805d88 <_svfprintf_r+0x188>
    e880684e:	0001                	nop
    e8806850:	11812703          	lw	a4,280(sp)
    e8806854:	00099f97          	auipc	t6,0x99
    e8806858:	c14f8f93          	addi	t6,t6,-1004 # e889f468 <blanks.4575>
    e880685c:	439d                	li	t2,7
    e880685e:	00ddc663          	blt	s11,a3,e880686a <_svfprintf_r+0xc6a>
    e8806862:	a0b9                	j	e88068b0 <_svfprintf_r+0xcb0>
    e8806864:	36c1                	addiw	a3,a3,-16
    e8806866:	04ddd563          	bge	s11,a3,e88068b0 <_svfprintf_r+0xcb0>
    e880686a:	2705                	addiw	a4,a4,1
    e880686c:	07c1                	addi	a5,a5,16
    e880686e:	f9b35f8b          	sdd	t6,s11,(t1),0,4
    e8806872:	f23e                	sd	a5,288(sp)
    e8806874:	10e12c23          	sw	a4,280(sp)
    e8806878:	0341                	addi	t1,t1,16
    e880687a:	fee3d5e3          	bge	t2,a4,e8806864 <_svfprintf_r+0xc64>
    e880687e:	0a10                	addi	a2,sp,272
    e8806880:	85da                	mv	a1,s6
    e8806882:	8552                	mv	a0,s4
    e8806884:	e4fe                	sd	t6,72(sp)
    e8806886:	e0b6                	sd	a3,64(sp)
    e8806888:	fc76                	sd	t4,56(sp)
    e880688a:	f816                	sd	t0,48(sp)
    e880688c:	e446                	sd	a7,8(sp)
    e880688e:	352020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806892:	da051363          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806896:	6686                	ld	a3,64(sp)
    e8806898:	7792                	ld	a5,288(sp)
    e880689a:	11812703          	lw	a4,280(sp)
    e880689e:	36c1                	addiw	a3,a3,-16
    e88068a0:	8356                	mv	t1,s5
    e88068a2:	6fa6                	ld	t6,72(sp)
    e88068a4:	439d                	li	t2,7
    e88068a6:	7ee2                	ld	t4,56(sp)
    e88068a8:	72c2                	ld	t0,48(sp)
    e88068aa:	68a2                	ld	a7,8(sp)
    e88068ac:	faddcfe3          	blt	s11,a3,e880686a <_svfprintf_r+0xc6a>
    e88068b0:	97b6                	add	a5,a5,a3
    e88068b2:	2705                	addiw	a4,a4,1
    e88068b4:	f8d35f8b          	sdd	t6,a3,(t1),0,4
    e88068b8:	f23e                	sd	a5,288(sp)
    e88068ba:	10e12c23          	sw	a4,280(sp)
    e88068be:	469d                	li	a3,7
    e88068c0:	0341                	addi	t1,t1,16
    e88068c2:	a0e6dbe3          	bge	a3,a4,e88062d8 <_svfprintf_r+0x6d8>
    e88068c6:	0a10                	addi	a2,sp,272
    e88068c8:	85da                	mv	a1,s6
    e88068ca:	8552                	mv	a0,s4
    e88068cc:	fc76                	sd	t4,56(sp)
    e88068ce:	f816                	sd	t0,48(sp)
    e88068d0:	e446                	sd	a7,8(sp)
    e88068d2:	30e020ef          	jal	ra,e8808be0 <__ssprint_r>
    e88068d6:	d6051163          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e88068da:	7792                	ld	a5,288(sp)
    e88068dc:	8356                	mv	t1,s5
    e88068de:	7ee2                	ld	t4,56(sp)
    e88068e0:	72c2                	ld	t0,48(sp)
    e88068e2:	68a2                	ld	a7,8(sp)
    e88068e4:	bad5                	j	e88062d8 <_svfprintf_r+0x6d8>
    e88068e6:	0001                	nop
    e88068e8:	0a10                	addi	a2,sp,272
    e88068ea:	85da                	mv	a1,s6
    e88068ec:	8552                	mv	a0,s4
    e88068ee:	f876                	sd	t4,48(sp)
    e88068f0:	e416                	sd	t0,8(sp)
    e88068f2:	2ee020ef          	jal	ra,e8808be0 <__ssprint_r>
    e88068f6:	d4051163          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e88068fa:	7792                	ld	a5,288(sp)
    e88068fc:	8356                	mv	t1,s5
    e88068fe:	7ec2                	ld	t4,48(sp)
    e8806900:	62a2                	ld	t0,8(sp)
    e8806902:	b41d                	j	e8806328 <_svfprintf_r+0x728>
    e8806904:	11812703          	lw	a4,280(sp)
    e8806908:	00099f97          	auipc	t6,0x99
    e880690c:	b60f8f93          	addi	t6,t6,-1184 # e889f468 <blanks.4575>
    e8806910:	4c1d                	li	s8,7
    e8806912:	008dc663          	blt	s11,s0,e880691e <_svfprintf_r+0xd1e>
    e8806916:	a835                	j	e8806952 <_svfprintf_r+0xd52>
    e8806918:	3441                	addiw	s0,s0,-16
    e880691a:	028ddc63          	bge	s11,s0,e8806952 <_svfprintf_r+0xd52>
    e880691e:	2705                	addiw	a4,a4,1
    e8806920:	07c1                	addi	a5,a5,16
    e8806922:	f9b35f8b          	sdd	t6,s11,(t1),0,4
    e8806926:	f23e                	sd	a5,288(sp)
    e8806928:	10e12c23          	sw	a4,280(sp)
    e880692c:	0341                	addi	t1,t1,16
    e880692e:	feec55e3          	bge	s8,a4,e8806918 <_svfprintf_r+0xd18>
    e8806932:	0a10                	addi	a2,sp,272
    e8806934:	85da                	mv	a1,s6
    e8806936:	8552                	mv	a0,s4
    e8806938:	e47e                	sd	t6,8(sp)
    e880693a:	2a6020ef          	jal	ra,e8808be0 <__ssprint_r>
    e880693e:	ce051d63          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806942:	3441                	addiw	s0,s0,-16
    e8806944:	7792                	ld	a5,288(sp)
    e8806946:	11812703          	lw	a4,280(sp)
    e880694a:	8356                	mv	t1,s5
    e880694c:	6fa2                	ld	t6,8(sp)
    e880694e:	fc8dc8e3          	blt	s11,s0,e880691e <_svfprintf_r+0xd1e>
    e8806952:	2705                	addiw	a4,a4,1
    e8806954:	97a2                	add	a5,a5,s0
    e8806956:	f8835f8b          	sdd	t6,s0,(t1),0,4
    e880695a:	f23e                	sd	a5,288(sp)
    e880695c:	10e12c23          	sw	a4,280(sp)
    e8806960:	469d                	li	a3,7
    e8806962:	a0e6d4e3          	bge	a3,a4,e880636a <_svfprintf_r+0x76a>
    e8806966:	0a10                	addi	a2,sp,272
    e8806968:	85da                	mv	a1,s6
    e880696a:	8552                	mv	a0,s4
    e880696c:	274020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806970:	cc051463          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806974:	7792                	ld	a5,288(sp)
    e8806976:	bad5                	j	e880636a <_svfprintf_r+0x76a>
    e8806978:	4705                	li	a4,1
    e880697a:	3ce785e3          	beq	a5,a4,e8807544 <_svfprintf_r+0x1944>
    e880697e:	4709                	li	a4,2
    e8806980:	86a2                	mv	a3,s0
    e8806982:	c0e791e3          	bne	a5,a4,e8806584 <_svfprintf_r+0x984>
    e8806986:	0001                	nop
    e8806988:	18c10c13          	addi	s8,sp,396
    e880698c:	8d62                	mv	s10,s8
    e880698e:	0001                	nop
    e8806990:	7722                	ld	a4,40(sp)
    e8806992:	00f4f793          	andi	a5,s1,15
    e8806996:	8091                	srli	s1,s1,0x4
    e8806998:	80f7478b          	lrbu	a5,a4,a5,0
    e880699c:	09fd578b          	sbib	a5,(s10),-1,0
    e88069a0:	f8e5                	bnez	s1,e8806990 <_svfprintf_r+0xd90>
    e88069a2:	41ac0c3b          	subw	s8,s8,s10
    e88069a6:	8436                	mv	s0,a3
    e88069a8:	be0ff06f          	j	e8805d88 <_svfprintf_r+0x188>
    e88069ac:	56ae                	lw	a3,232(sp)
    e88069ae:	3ed05263          	blez	a3,e8806d92 <_svfprintf_r+0x1192>
    e88069b2:	7702                	ld	a4,32(sp)
    e88069b4:	66e6                	ld	a3,88(sp)
    e88069b6:	00e6ac33          	slt	s8,a3,a4
    e88069ba:	4386970b          	mvnez	a4,a3,s8
    e88069be:	00070c1b          	sext.w	s8,a4
    e88069c2:	03805163          	blez	s8,e88069e4 <_svfprintf_r+0xde4>
    e88069c6:	11812703          	lw	a4,280(sp)
    e88069ca:	97e2                	add	a5,a5,s8
    e88069cc:	01a33023          	sd	s10,0(t1)
    e88069d0:	2705                	addiw	a4,a4,1
    e88069d2:	01833423          	sd	s8,8(t1)
    e88069d6:	f23e                	sd	a5,288(sp)
    e88069d8:	10e12c23          	sw	a4,280(sp)
    e88069dc:	469d                	li	a3,7
    e88069de:	0341                	addi	t1,t1,16
    e88069e0:	62e6ce63          	blt	a3,a4,e880701c <_svfprintf_r+0x141c>
    e88069e4:	fffc4713          	not	a4,s8
    e88069e8:	977d                	srai	a4,a4,0x3f
    e88069ea:	00ec7c33          	and	s8,s8,a4
    e88069ee:	6766                	ld	a4,88(sp)
    e88069f0:	41870c3b          	subw	s8,a4,s8
    e88069f4:	23804663          	bgtz	s8,e8806c20 <_svfprintf_r+0x1020>
    e88069f8:	66e6                	ld	a3,88(sp)
    e88069fa:	40047713          	andi	a4,s0,1024
    e88069fe:	00dd0cb3          	add	s9,s10,a3
    e8806a02:	24071e63          	bnez	a4,e8806c5e <_svfprintf_r+0x105e>
    e8806a06:	572e                	lw	a4,232(sp)
    e8806a08:	7682                	ld	a3,32(sp)
    e8806a0a:	00d74663          	blt	a4,a3,e8806a16 <_svfprintf_r+0xe16>
    e8806a0e:	00147693          	andi	a3,s0,1
    e8806a12:	940686e3          	beqz	a3,e880635e <_svfprintf_r+0x75e>
    e8806a16:	76e6                	ld	a3,120(sp)
    e8806a18:	7646                	ld	a2,112(sp)
    e8806a1a:	0341                	addi	t1,t1,16
    e8806a1c:	fed33823          	sd	a3,-16(t1)
    e8806a20:	11812683          	lw	a3,280(sp)
    e8806a24:	97b2                	add	a5,a5,a2
    e8806a26:	fec33c23          	sd	a2,-8(t1)
    e8806a2a:	2685                	addiw	a3,a3,1
    e8806a2c:	f23e                	sd	a5,288(sp)
    e8806a2e:	10d12c23          	sw	a3,280(sp)
    e8806a32:	461d                	li	a2,7
    e8806a34:	14d643e3          	blt	a2,a3,e880737a <_svfprintf_r+0x177a>
    e8806a38:	7682                	ld	a3,32(sp)
    e8806a3a:	40e68c3b          	subw	s8,a3,a4
    e8806a3e:	96ea                	add	a3,a3,s10
    e8806a40:	419686bb          	subw	a3,a3,s9
    e8806a44:	8762                	mv	a4,s8
    e8806a46:	0186a633          	slt	a2,a3,s8
    e8806a4a:	42c6970b          	mvnez	a4,a3,a2
    e8806a4e:	8d3a                	mv	s10,a4
    e8806a50:	03a05163          	blez	s10,e8806a72 <_svfprintf_r+0xe72>
    e8806a54:	11812683          	lw	a3,280(sp)
    e8806a58:	97ea                	add	a5,a5,s10
    e8806a5a:	01933023          	sd	s9,0(t1)
    e8806a5e:	2685                	addiw	a3,a3,1
    e8806a60:	01a33423          	sd	s10,8(t1)
    e8806a64:	f23e                	sd	a5,288(sp)
    e8806a66:	10d12c23          	sw	a3,280(sp)
    e8806a6a:	461d                	li	a2,7
    e8806a6c:	0341                	addi	t1,t1,16
    e8806a6e:	1ad643e3          	blt	a2,a3,e8807414 <_svfprintf_r+0x1814>
    e8806a72:	fffd4693          	not	a3,s10
    e8806a76:	96fd                	srai	a3,a3,0x3f
    e8806a78:	00dd7733          	and	a4,s10,a3
    e8806a7c:	40ec0c3b          	subw	s8,s8,a4
    e8806a80:	8d805fe3          	blez	s8,e880635e <_svfprintf_r+0x75e>
    e8806a84:	11812703          	lw	a4,280(sp)
    e8806a88:	3b8dd563          	bge	s11,s8,e8806e32 <_svfprintf_r+0x1232>
    e8806a8c:	4c9d                	li	s9,7
    e8806a8e:	a021                	j	e8806a96 <_svfprintf_r+0xe96>
    e8806a90:	3c41                	addiw	s8,s8,-16
    e8806a92:	3b8dd063          	bge	s11,s8,e8806e32 <_svfprintf_r+0x1232>
    e8806a96:	2705                	addiw	a4,a4,1
    e8806a98:	07c1                	addi	a5,a5,16
    e8806a9a:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8806a9e:	f23e                	sd	a5,288(sp)
    e8806aa0:	10e12c23          	sw	a4,280(sp)
    e8806aa4:	0341                	addi	t1,t1,16
    e8806aa6:	feecd5e3          	bge	s9,a4,e8806a90 <_svfprintf_r+0xe90>
    e8806aaa:	0a10                	addi	a2,sp,272
    e8806aac:	85da                	mv	a1,s6
    e8806aae:	8552                	mv	a0,s4
    e8806ab0:	130020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806ab4:	b8051263          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806ab8:	7792                	ld	a5,288(sp)
    e8806aba:	11812703          	lw	a4,280(sp)
    e8806abe:	8356                	mv	t1,s5
    e8806ac0:	bfc1                	j	e8806a90 <_svfprintf_r+0xe90>
    e8806ac2:	00147593          	andi	a1,s0,1
    e8806ac6:	920593e3          	bnez	a1,e88063ec <_svfprintf_r+0x7ec>
    e8806aca:	00c33423          	sd	a2,8(t1)
    e8806ace:	f23e                	sd	a5,288(sp)
    e8806ad0:	10e12c23          	sw	a4,280(sp)
    e8806ad4:	469d                	li	a3,7
    e8806ad6:	28e6cd63          	blt	a3,a4,e8806d70 <_svfprintf_r+0x1170>
    e8806ada:	002f0c9b          	addiw	s9,t5,2
    e8806ade:	02030313          	addi	t1,t1,32
    e8806ae2:	b271                	j	e880646e <_svfprintf_r+0x86e>
    e8806ae4:	991055e3          	blez	a7,e880646e <_svfprintf_r+0x86e>
    e8806ae8:	391dd1e3          	bge	s11,a7,e880766a <_svfprintf_r+0x1a6a>
    e8806aec:	4c9d                	li	s9,7
    e8806aee:	a031                	j	e8806afa <_svfprintf_r+0xefa>
    e8806af0:	38c1                	addiw	a7,a7,-16
    e8806af2:	471dd163          	bge	s11,a7,e8806f54 <_svfprintf_r+0x1354>
    e8806af6:	00170e9b          	addiw	t4,a4,1
    e8806afa:	07c1                	addi	a5,a5,16
    e8806afc:	f9bc598b          	sdd	s3,s11,(s8),0,4
    e8806b00:	f23e                	sd	a5,288(sp)
    e8806b02:	11d12c23          	sw	t4,280(sp)
    e8806b06:	000e871b          	sext.w	a4,t4
    e8806b0a:	0c41                	addi	s8,s8,16
    e8806b0c:	feecd2e3          	bge	s9,a4,e8806af0 <_svfprintf_r+0xef0>
    e8806b10:	0a10                	addi	a2,sp,272
    e8806b12:	85da                	mv	a1,s6
    e8806b14:	8552                	mv	a0,s4
    e8806b16:	e446                	sd	a7,8(sp)
    e8806b18:	0c8020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806b1c:	b0051e63          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806b20:	7792                	ld	a5,288(sp)
    e8806b22:	11812703          	lw	a4,280(sp)
    e8806b26:	8c56                	mv	s8,s5
    e8806b28:	68a2                	ld	a7,8(sp)
    e8806b2a:	b7d9                	j	e8806af0 <_svfprintf_r+0xef0>
    e8806b2c:	84ea                	mv	s1,s10
    e8806b2e:	9beff06f          	j	e8805cec <_svfprintf_r+0xec>
    e8806b32:	0a10                	addi	a2,sp,272
    e8806b34:	85da                	mv	a1,s6
    e8806b36:	8552                	mv	a0,s4
    e8806b38:	0a8020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806b3c:	ae051e63          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806b40:	7792                	ld	a5,288(sp)
    e8806b42:	11812703          	lw	a4,280(sp)
    e8806b46:	8c56                	mv	s8,s5
    e8806b48:	b85d                	j	e88063fe <_svfprintf_r+0x7fe>
    e8806b4a:	0a10                	addi	a2,sp,272
    e8806b4c:	85da                	mv	a1,s6
    e8806b4e:	8552                	mv	a0,s4
    e8806b50:	090020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806b54:	ae051263          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806b58:	7792                	ld	a5,288(sp)
    e8806b5a:	11812703          	lw	a4,280(sp)
    e8806b5e:	8c56                	mv	s8,s5
    e8806b60:	b865                	j	e8806418 <_svfprintf_r+0x818>
    e8806b62:	67c2                	ld	a5,16(sp)
    e8806b64:	639c                	ld	a5,0(a5)
    e8806b66:	84be                	mv	s1,a5
    e8806b68:	a5aff06f          	j	e8805dc2 <_svfprintf_r+0x1c2>
    e8806b6c:	67c2                	ld	a5,16(sp)
    e8806b6e:	07bd                	addi	a5,a5,15
    e8806b70:	9bc1                	andi	a5,a5,-16
    e8806b72:	86be                	mv	a3,a5
    e8806b74:	7a86c70b          	ldia	a4,(a3),8,1
    e8806b78:	679c                	ld	a5,8(a5)
    e8806b7a:	e836                	sd	a3,16(sp)
    e8806b7c:	e23a                	sd	a4,256(sp)
    e8806b7e:	e63e                	sd	a5,264(sp)
    e8806b80:	ca6ff06f          	j	e8806026 <_svfprintf_r+0x426>
    e8806b84:	67c2                	ld	a5,16(sp)
    e8806b86:	6384                	ld	s1,0(a5)
    e8806b88:	b22ff06f          	j	e8805eaa <_svfprintf_r+0x2aa>
    e8806b8c:	67c2                	ld	a5,16(sp)
    e8806b8e:	86a2                	mv	a3,s0
    e8806b90:	e83a                	sd	a4,16(sp)
    e8806b92:	6384                	ld	s1,0(a5)
    e8806b94:	4785                	li	a5,1
    e8806b96:	9beff06f          	j	e8805d54 <_svfprintf_r+0x154>
    e8806b9a:	67c2                	ld	a5,16(sp)
    e8806b9c:	6384                	ld	s1,0(a5)
    e8806b9e:	9acff06f          	j	e8805d4a <_svfprintf_r+0x14a>
    e8806ba2:	86a2                	mv	a3,s0
    e8806ba4:	e83a                	sd	a4,16(sp)
    e8806ba6:	b179                	j	e8806834 <_svfprintf_r+0xc34>
    e8806ba8:	0a10                	addi	a2,sp,272
    e8806baa:	85da                	mv	a1,s6
    e8806bac:	8552                	mv	a0,s4
    e8806bae:	032020ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806bb2:	a8051363          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806bb6:	7792                	ld	a5,288(sp)
    e8806bb8:	8356                	mv	t1,s5
    e8806bba:	b625                	j	e88066e2 <_svfprintf_r+0xae2>
    e8806bbc:	02046413          	ori	s0,s0,32
    e8806bc0:	00194f03          	lbu	t5,1(s2)
    e8806bc4:	2401                	sext.w	s0,s0
    e8806bc6:	0905                	addi	s2,s2,1
    e8806bc8:	93cff06f          	j	e8805d04 <_svfprintf_r+0x104>
    e8806bcc:	20046413          	ori	s0,s0,512
    e8806bd0:	00194f03          	lbu	t5,1(s2)
    e8806bd4:	2401                	sext.w	s0,s0
    e8806bd6:	0905                	addi	s2,s2,1
    e8806bd8:	92cff06f          	j	e8805d04 <_svfprintf_r+0x104>
    e8806bdc:	04000593          	li	a1,64
    e8806be0:	8552                	mv	a0,s4
    e8806be2:	5b0750ef          	jal	ra,e887c192 <_malloc_r>
    e8806be6:	00ab3023          	sd	a0,0(s6)
    e8806bea:	00ab3c23          	sd	a0,24(s6)
    e8806bee:	2a0500e3          	beqz	a0,e880768e <_svfprintf_r+0x1a8e>
    e8806bf2:	04000793          	li	a5,64
    e8806bf6:	02fb2023          	sw	a5,32(s6)
    e8806bfa:	86eff06f          	j	e8805c68 <_svfprintf_r+0x68>
    e8806bfe:	000e8c1b          	sext.w	s8,t4
    e8806c02:	4799                	li	a5,6
    e8806c04:	0187bc33          	sltu	s8,a5,s8
    e8806c08:	43879e8b          	mvnez	t4,a5,s8
    e8806c0c:	000e8c1b          	sext.w	s8,t4
    e8806c10:	84e2                	mv	s1,s8
    e8806c12:	e83a                	sd	a4,16(sp)
    e8806c14:	000cdd17          	auipc	s10,0xcd
    e8806c18:	1dcd0d13          	addi	s10,s10,476 # e88d3df0 <dhcp_discover_request_options+0x5e8>
    e8806c1c:	e92ff06f          	j	e88062ae <_svfprintf_r+0x6ae>
    e8806c20:	11812703          	lw	a4,280(sp)
    e8806c24:	3d8dd663          	bge	s11,s8,e8806ff0 <_svfprintf_r+0x13f0>
    e8806c28:	4c9d                	li	s9,7
    e8806c2a:	a021                	j	e8806c32 <_svfprintf_r+0x1032>
    e8806c2c:	3c41                	addiw	s8,s8,-16
    e8806c2e:	3d8dd163          	bge	s11,s8,e8806ff0 <_svfprintf_r+0x13f0>
    e8806c32:	2705                	addiw	a4,a4,1
    e8806c34:	07c1                	addi	a5,a5,16
    e8806c36:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8806c3a:	f23e                	sd	a5,288(sp)
    e8806c3c:	10e12c23          	sw	a4,280(sp)
    e8806c40:	0341                	addi	t1,t1,16
    e8806c42:	feecd5e3          	bge	s9,a4,e8806c2c <_svfprintf_r+0x102c>
    e8806c46:	0a10                	addi	a2,sp,272
    e8806c48:	85da                	mv	a1,s6
    e8806c4a:	8552                	mv	a0,s4
    e8806c4c:	795010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806c50:	9e051463          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806c54:	7792                	ld	a5,288(sp)
    e8806c56:	11812703          	lw	a4,280(sp)
    e8806c5a:	8356                	mv	t1,s5
    e8806c5c:	bfc1                	j	e8806c2c <_svfprintf_r+0x102c>
    e8806c5e:	7702                	ld	a4,32(sp)
    e8806c60:	4c1d                	li	s8,7
    e8806c62:	976a                	add	a4,a4,s10
    e8806c64:	f83a                	sd	a4,48(sp)
    e8806c66:	7706                	ld	a4,96(sp)
    e8806c68:	c349                	beqz	a4,e8806cea <_svfprintf_r+0x10ea>
    e8806c6a:	6746                	ld	a4,80(sp)
    e8806c6c:	e351                	bnez	a4,e8806cf0 <_svfprintf_r+0x10f0>
    e8806c6e:	7726                	ld	a4,104(sp)
    e8806c70:	177d                	addi	a4,a4,-1
    e8806c72:	f4ba                	sd	a4,104(sp)
    e8806c74:	7706                	ld	a4,96(sp)
    e8806c76:	377d                	addiw	a4,a4,-1
    e8806c78:	f0ba                	sd	a4,96(sp)
    e8806c7a:	674a                	ld	a4,144(sp)
    e8806c7c:	668a                	ld	a3,128(sp)
    e8806c7e:	0341                	addi	t1,t1,16
    e8806c80:	fee33823          	sd	a4,-16(t1)
    e8806c84:	11812703          	lw	a4,280(sp)
    e8806c88:	97b6                	add	a5,a5,a3
    e8806c8a:	fed33c23          	sd	a3,-8(t1)
    e8806c8e:	2705                	addiw	a4,a4,1
    e8806c90:	f23e                	sd	a5,288(sp)
    e8806c92:	10e12c23          	sw	a4,280(sp)
    e8806c96:	0cec4363          	blt	s8,a4,e8806d5c <_svfprintf_r+0x115c>
    e8806c9a:	7526                	ld	a0,104(sp)
    e8806c9c:	7742                	ld	a4,48(sp)
    e8806c9e:	00054603          	lbu	a2,0(a0)
    e8806ca2:	4197073b          	subw	a4,a4,s9
    e8806ca6:	00c725b3          	slt	a1,a4,a2
    e8806caa:	40b6170b          	mveqz	a4,a2,a1
    e8806cae:	86b2                	mv	a3,a2
    e8806cb0:	02e05363          	blez	a4,e8806cd6 <_svfprintf_r+0x10d6>
    e8806cb4:	11812683          	lw	a3,280(sp)
    e8806cb8:	97ba                	add	a5,a5,a4
    e8806cba:	01933023          	sd	s9,0(t1)
    e8806cbe:	2685                	addiw	a3,a3,1
    e8806cc0:	00e33423          	sd	a4,8(t1)
    e8806cc4:	f23e                	sd	a5,288(sp)
    e8806cc6:	10d12c23          	sw	a3,280(sp)
    e8806cca:	16dc4a63          	blt	s8,a3,e8806e3e <_svfprintf_r+0x123e>
    e8806cce:	00054603          	lbu	a2,0(a0)
    e8806cd2:	0341                	addi	t1,t1,16
    e8806cd4:	86b2                	mv	a3,a2
    e8806cd6:	fff74593          	not	a1,a4
    e8806cda:	95fd                	srai	a1,a1,0x3f
    e8806cdc:	8f6d                	and	a4,a4,a1
    e8806cde:	9e99                	subw	a3,a3,a4
    e8806ce0:	00d04c63          	bgtz	a3,e8806cf8 <_svfprintf_r+0x10f8>
    e8806ce4:	9cb2                	add	s9,s9,a2
    e8806ce6:	7706                	ld	a4,96(sp)
    e8806ce8:	f349                	bnez	a4,e8806c6a <_svfprintf_r+0x106a>
    e8806cea:	6746                	ld	a4,80(sp)
    e8806cec:	54070e63          	beqz	a4,e8807248 <_svfprintf_r+0x1648>
    e8806cf0:	6746                	ld	a4,80(sp)
    e8806cf2:	377d                	addiw	a4,a4,-1
    e8806cf4:	e8ba                	sd	a4,80(sp)
    e8806cf6:	b751                	j	e8806c7a <_svfprintf_r+0x107a>
    e8806cf8:	11812703          	lw	a4,280(sp)
    e8806cfc:	00ddc763          	blt	s11,a3,e8806d0a <_svfprintf_r+0x110a>
    e8806d00:	a83d                	j	e8806d3e <_svfprintf_r+0x113e>
    e8806d02:	0001                	nop
    e8806d04:	36c1                	addiw	a3,a3,-16
    e8806d06:	02dddc63          	bge	s11,a3,e8806d3e <_svfprintf_r+0x113e>
    e8806d0a:	2705                	addiw	a4,a4,1
    e8806d0c:	07c1                	addi	a5,a5,16
    e8806d0e:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8806d12:	f23e                	sd	a5,288(sp)
    e8806d14:	10e12c23          	sw	a4,280(sp)
    e8806d18:	0341                	addi	t1,t1,16
    e8806d1a:	feec55e3          	bge	s8,a4,e8806d04 <_svfprintf_r+0x1104>
    e8806d1e:	0a10                	addi	a2,sp,272
    e8806d20:	85da                	mv	a1,s6
    e8806d22:	8552                	mv	a0,s4
    e8806d24:	e436                	sd	a3,8(sp)
    e8806d26:	6bb010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806d2a:	90051763          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806d2e:	66a2                	ld	a3,8(sp)
    e8806d30:	7792                	ld	a5,288(sp)
    e8806d32:	11812703          	lw	a4,280(sp)
    e8806d36:	36c1                	addiw	a3,a3,-16
    e8806d38:	8356                	mv	t1,s5
    e8806d3a:	fcddc8e3          	blt	s11,a3,e8806d0a <_svfprintf_r+0x110a>
    e8806d3e:	2705                	addiw	a4,a4,1
    e8806d40:	97b6                	add	a5,a5,a3
    e8806d42:	f8d3598b          	sdd	s3,a3,(t1),0,4
    e8806d46:	f23e                	sd	a5,288(sp)
    e8806d48:	10e12c23          	sw	a4,280(sp)
    e8806d4c:	60ec4463          	blt	s8,a4,e8807354 <_svfprintf_r+0x1754>
    e8806d50:	7726                	ld	a4,104(sp)
    e8806d52:	0341                	addi	t1,t1,16
    e8806d54:	00074603          	lbu	a2,0(a4)
    e8806d58:	9cb2                	add	s9,s9,a2
    e8806d5a:	b771                	j	e8806ce6 <_svfprintf_r+0x10e6>
    e8806d5c:	0a10                	addi	a2,sp,272
    e8806d5e:	85da                	mv	a1,s6
    e8806d60:	8552                	mv	a0,s4
    e8806d62:	67f010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806d66:	8c051963          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806d6a:	7792                	ld	a5,288(sp)
    e8806d6c:	8356                	mv	t1,s5
    e8806d6e:	b735                	j	e8806c9a <_svfprintf_r+0x109a>
    e8806d70:	0a10                	addi	a2,sp,272
    e8806d72:	85da                	mv	a1,s6
    e8806d74:	8552                	mv	a0,s4
    e8806d76:	66b010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806d7a:	8a051f63          	bnez	a0,e8805e38 <_svfprintf_r+0x238>
    e8806d7e:	11812f03          	lw	t5,280(sp)
    e8806d82:	7792                	ld	a5,288(sp)
    e8806d84:	1a010313          	addi	t1,sp,416
    e8806d88:	001f0c9b          	addiw	s9,t5,1
    e8806d8c:	8c56                	mv	s8,s5
    e8806d8e:	ee0ff06f          	j	e880646e <_svfprintf_r+0x86e>
    e8806d92:	11812703          	lw	a4,280(sp)
    e8806d96:	000c8617          	auipc	a2,0xc8
    e8806d9a:	42a60613          	addi	a2,a2,1066 # e88cf1c0 <err_to_errno_table+0xe8>
    e8806d9e:	00c33023          	sd	a2,0(t1)
    e8806da2:	2705                	addiw	a4,a4,1
    e8806da4:	4605                	li	a2,1
    e8806da6:	0785                	addi	a5,a5,1
    e8806da8:	00c33423          	sd	a2,8(t1)
    e8806dac:	f23e                	sd	a5,288(sp)
    e8806dae:	10e12c23          	sw	a4,280(sp)
    e8806db2:	461d                	li	a2,7
    e8806db4:	0341                	addi	t1,t1,16
    e8806db6:	04e64863          	blt	a2,a4,e8806e06 <_svfprintf_r+0x1206>
    e8806dba:	0e069d63          	bnez	a3,e8806eb4 <_svfprintf_r+0x12b4>
    e8806dbe:	7682                	ld	a3,32(sp)
    e8806dc0:	00147713          	andi	a4,s0,1
    e8806dc4:	8f55                	or	a4,a4,a3
    e8806dc6:	d8070c63          	beqz	a4,e880635e <_svfprintf_r+0x75e>
    e8806dca:	7766                	ld	a4,120(sp)
    e8806dcc:	76c6                	ld	a3,112(sp)
    e8806dce:	00e33023          	sd	a4,0(t1)
    e8806dd2:	11812703          	lw	a4,280(sp)
    e8806dd6:	97b6                	add	a5,a5,a3
    e8806dd8:	00d33423          	sd	a3,8(t1)
    e8806ddc:	2705                	addiw	a4,a4,1
    e8806dde:	f23e                	sd	a5,288(sp)
    e8806de0:	10e12c23          	sw	a4,280(sp)
    e8806de4:	469d                	li	a3,7
    e8806de6:	2ae6ce63          	blt	a3,a4,e88070a2 <_svfprintf_r+0x14a2>
    e8806dea:	0341                	addi	t1,t1,16
    e8806dec:	7682                	ld	a3,32(sp)
    e8806dee:	2705                	addiw	a4,a4,1
    e8806df0:	10e12c23          	sw	a4,280(sp)
    e8806df4:	97b6                	add	a5,a5,a3
    e8806df6:	f8d35d0b          	sdd	s10,a3,(t1),0,4
    e8806dfa:	f23e                	sd	a5,288(sp)
    e8806dfc:	469d                	li	a3,7
    e8806dfe:	d4e6df63          	bge	a3,a4,e880635c <_svfprintf_r+0x75c>
    e8806e02:	e82ff06f          	j	e8806484 <_svfprintf_r+0x884>
    e8806e06:	0a10                	addi	a2,sp,272
    e8806e08:	85da                	mv	a1,s6
    e8806e0a:	8552                	mv	a0,s4
    e8806e0c:	5d5010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806e10:	c119                	beqz	a0,e8806e16 <_svfprintf_r+0x1216>
    e8806e12:	826ff06f          	j	e8805e38 <_svfprintf_r+0x238>
    e8806e16:	56ae                	lw	a3,232(sp)
    e8806e18:	7792                	ld	a5,288(sp)
    e8806e1a:	8356                	mv	t1,s5
    e8806e1c:	bf79                	j	e8806dba <_svfprintf_r+0x11ba>
    e8806e1e:	0a10                	addi	a2,sp,272
    e8806e20:	85da                	mv	a1,s6
    e8806e22:	8552                	mv	a0,s4
    e8806e24:	5bd010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806e28:	c119                	beqz	a0,e8806e2e <_svfprintf_r+0x122e>
    e8806e2a:	80eff06f          	j	e8805e38 <_svfprintf_r+0x238>
    e8806e2e:	8356                	mv	t1,s5
    e8806e30:	b8b5                	j	e88066ac <_svfprintf_r+0xaac>
    e8806e32:	2705                	addiw	a4,a4,1
    e8806e34:	97e2                	add	a5,a5,s8
    e8806e36:	01333023          	sd	s3,0(t1)
    e8806e3a:	d12ff06f          	j	e880634c <_svfprintf_r+0x74c>
    e8806e3e:	0a10                	addi	a2,sp,272
    e8806e40:	85da                	mv	a1,s6
    e8806e42:	8552                	mv	a0,s4
    e8806e44:	e43a                	sd	a4,8(sp)
    e8806e46:	59b010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806e4a:	c119                	beqz	a0,e8806e50 <_svfprintf_r+0x1250>
    e8806e4c:	fedfe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e8806e50:	77a6                	ld	a5,104(sp)
    e8806e52:	8356                	mv	t1,s5
    e8806e54:	6722                	ld	a4,8(sp)
    e8806e56:	0007c603          	lbu	a2,0(a5)
    e8806e5a:	7792                	ld	a5,288(sp)
    e8806e5c:	86b2                	mv	a3,a2
    e8806e5e:	bda5                	j	e8806cd6 <_svfprintf_r+0x10d6>
    e8806e60:	6512                	ld	a0,256(sp)
    e8806e62:	65b2                	ld	a1,264(sp)
    e8806e64:	4601                	li	a2,0
    e8806e66:	4681                	li	a3,0
    e8806e68:	e41a                	sd	t1,8(sp)
    e8806e6a:	515020ef          	jal	ra,e8809b7e <__letf2>
    e8806e6e:	6322                	ld	t1,8(sp)
    e8806e70:	52054263          	bltz	a0,e8807394 <_svfprintf_r+0x1794>
    e8806e74:	0df14783          	lbu	a5,223(sp)
    e8806e78:	04700813          	li	a6,71
    e8806e7c:	01982833          	slt	a6,a6,s9
    e8806e80:	f7f47413          	andi	s0,s0,-129
    e8806e84:	000cd697          	auipc	a3,0xcd
    e8806e88:	f5468693          	addi	a3,a3,-172 # e88d3dd8 <dhcp_discover_request_options+0x5d0>
    e8806e8c:	000cd717          	auipc	a4,0xcd
    e8806e90:	f4470713          	addi	a4,a4,-188 # e88d3dd0 <dhcp_discover_request_options+0x5c8>
    e8806e94:	ec02                	sd	zero,24(sp)
    e8806e96:	e882                	sd	zero,80(sp)
    e8806e98:	f082                	sd	zero,96(sp)
    e8806e9a:	ec82                	sd	zero,88(sp)
    e8806e9c:	4306970b          	mvnez	a4,a3,a6
    e8806ea0:	8d3a                	mv	s10,a4
    e8806ea2:	2401                	sext.w	s0,s0
    e8806ea4:	448d                	li	s1,3
    e8806ea6:	4c0d                	li	s8,3
    e8806ea8:	4e81                	li	t4,0
    e8806eaa:	c399                	beqz	a5,e8806eb0 <_svfprintf_r+0x12b0>
    e8806eac:	efbfe06f          	j	e8805da6 <_svfprintf_r+0x1a6>
    e8806eb0:	c08ff06f          	j	e88062b8 <_svfprintf_r+0x6b8>
    e8806eb4:	7766                	ld	a4,120(sp)
    e8806eb6:	7646                	ld	a2,112(sp)
    e8806eb8:	0341                	addi	t1,t1,16
    e8806eba:	fee33823          	sd	a4,-16(t1)
    e8806ebe:	11812703          	lw	a4,280(sp)
    e8806ec2:	97b2                	add	a5,a5,a2
    e8806ec4:	fec33c23          	sd	a2,-8(t1)
    e8806ec8:	2705                	addiw	a4,a4,1
    e8806eca:	f23e                	sd	a5,288(sp)
    e8806ecc:	10e12c23          	sw	a4,280(sp)
    e8806ed0:	461d                	li	a2,7
    e8806ed2:	1ce64863          	blt	a2,a4,e88070a2 <_svfprintf_r+0x14a2>
    e8806ed6:	f006dbe3          	bgez	a3,e8806dec <_svfprintf_r+0x11ec>
    e8806eda:	40d00c3b          	negw	s8,a3
    e8806ede:	5641                	li	a2,-16
    e8806ee0:	2c01                	sext.w	s8,s8
    e8806ee2:	58c6d863          	bge	a3,a2,e8807472 <_svfprintf_r+0x1872>
    e8806ee6:	4c9d                	li	s9,7
    e8806ee8:	a029                	j	e8806ef2 <_svfprintf_r+0x12f2>
    e8806eea:	0001                	nop
    e8806eec:	3c41                	addiw	s8,s8,-16
    e8806eee:	598dd263          	bge	s11,s8,e8807472 <_svfprintf_r+0x1872>
    e8806ef2:	2705                	addiw	a4,a4,1
    e8806ef4:	07c1                	addi	a5,a5,16
    e8806ef6:	f9b3598b          	sdd	s3,s11,(t1),0,4
    e8806efa:	f23e                	sd	a5,288(sp)
    e8806efc:	10e12c23          	sw	a4,280(sp)
    e8806f00:	0341                	addi	t1,t1,16
    e8806f02:	feecd5e3          	bge	s9,a4,e8806eec <_svfprintf_r+0x12ec>
    e8806f06:	0a10                	addi	a2,sp,272
    e8806f08:	85da                	mv	a1,s6
    e8806f0a:	8552                	mv	a0,s4
    e8806f0c:	4d5010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8806f10:	c119                	beqz	a0,e8806f16 <_svfprintf_r+0x1316>
    e8806f12:	f27fe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e8806f16:	7792                	ld	a5,288(sp)
    e8806f18:	11812703          	lw	a4,280(sp)
    e8806f1c:	8356                	mv	t1,s5
    e8806f1e:	b7f9                	j	e8806eec <_svfprintf_r+0x12ec>
    e8806f20:	856a                	mv	a0,s10
    e8806f22:	e41a                	sd	t1,8(sp)
    e8806f24:	e83a                	sd	a4,16(sp)
    e8806f26:	c42f90ef          	jal	ra,e8800368 <strlen>
    e8806f2a:	00050c1b          	sext.w	s8,a0
    e8806f2e:	fffc4493          	not	s1,s8
    e8806f32:	0df14783          	lbu	a5,223(sp)
    e8806f36:	94fd                	srai	s1,s1,0x3f
    e8806f38:	ec02                	sd	zero,24(sp)
    e8806f3a:	e882                	sd	zero,80(sp)
    e8806f3c:	f082                	sd	zero,96(sp)
    e8806f3e:	ec82                	sd	zero,88(sp)
    e8806f40:	009c74b3          	and	s1,s8,s1
    e8806f44:	2481                	sext.w	s1,s1
    e8806f46:	4e81                	li	t4,0
    e8806f48:	6322                	ld	t1,8(sp)
    e8806f4a:	c399                	beqz	a5,e8806f50 <_svfprintf_r+0x1350>
    e8806f4c:	e5bfe06f          	j	e8805da6 <_svfprintf_r+0x1a6>
    e8806f50:	b68ff06f          	j	e88062b8 <_svfprintf_r+0x6b8>
    e8806f54:	00170c9b          	addiw	s9,a4,1
    e8806f58:	010c0713          	addi	a4,s8,16
    e8806f5c:	97c6                	add	a5,a5,a7
    e8806f5e:	f91c598b          	sdd	s3,a7,(s8),0,4
    e8806f62:	f23e                	sd	a5,288(sp)
    e8806f64:	11912c23          	sw	s9,280(sp)
    e8806f68:	469d                	li	a3,7
    e8806f6a:	e196c3e3          	blt	a3,s9,e8806d70 <_svfprintf_r+0x1170>
    e8806f6e:	2c85                	addiw	s9,s9,1
    e8806f70:	01070313          	addi	t1,a4,16
    e8806f74:	8c3a                	mv	s8,a4
    e8806f76:	cf8ff06f          	j	e880646e <_svfprintf_r+0x86e>
    e8806f7a:	0ff4f693          	andi	a3,s1,255
    e8806f7e:	20047793          	andi	a5,s0,512
    e8806f82:	7c04b48b          	extu	s1,s1,31,0
    e8806f86:	42f6948b          	mvnez	s1,a3,a5
    e8806f8a:	f21fe06f          	j	e8805eaa <_svfprintf_r+0x2aa>
    e8806f8e:	0ff4f693          	andi	a3,s1,255
    e8806f92:	20047793          	andi	a5,s0,512
    e8806f96:	7c04b48b          	extu	s1,s1,31,0
    e8806f9a:	42f6948b          	mvnez	s1,a3,a5
    e8806f9e:	dadfe06f          	j	e8805d4a <_svfprintf_r+0x14a>
    e8806fa2:	20047793          	andi	a5,s0,512
    e8806fa6:	c3e5                	beqz	a5,e8807086 <_svfprintf_r+0x1486>
    e8806fa8:	0ff4f493          	andi	s1,s1,255
    e8806fac:	e83a                	sd	a4,16(sp)
    e8806fae:	86a2                	mv	a3,s0
    e8806fb0:	4785                	li	a5,1
    e8806fb2:	da3fe06f          	j	e8805d54 <_svfprintf_r+0x154>
    e8806fb6:	20047793          	andi	a5,s0,512
    e8806fba:	c3e9                	beqz	a5,e880707c <_svfprintf_r+0x147c>
    e8806fbc:	67c2                	ld	a5,16(sp)
    e8806fbe:	00078483          	lb	s1,0(a5)
    e8806fc2:	87a6                	mv	a5,s1
    e8806fc4:	dfffe06f          	j	e8805dc2 <_svfprintf_r+0x1c2>
    e8806fc8:	67b2                	ld	a5,264(sp)
    e8806fca:	0c07c563          	bltz	a5,e8807094 <_svfprintf_r+0x1494>
    e8806fce:	0df14783          	lbu	a5,223(sp)
    e8806fd2:	04700813          	li	a6,71
    e8806fd6:	01982833          	slt	a6,a6,s9
    e8806fda:	f7f47413          	andi	s0,s0,-129
    e8806fde:	000cd697          	auipc	a3,0xcd
    e8806fe2:	e0a68693          	addi	a3,a3,-502 # e88d3de8 <dhcp_discover_request_options+0x5e0>
    e8806fe6:	000cd717          	auipc	a4,0xcd
    e8806fea:	dfa70713          	addi	a4,a4,-518 # e88d3de0 <dhcp_discover_request_options+0x5d8>
    e8806fee:	b55d                	j	e8806e94 <_svfprintf_r+0x1294>
    e8806ff0:	2705                	addiw	a4,a4,1
    e8806ff2:	97e2                	add	a5,a5,s8
    e8806ff4:	f983598b          	sdd	s3,s8,(t1),0,4
    e8806ff8:	f23e                	sd	a5,288(sp)
    e8806ffa:	10e12c23          	sw	a4,280(sp)
    e8806ffe:	469d                	li	a3,7
    e8807000:	0341                	addi	t1,t1,16
    e8807002:	9ee6dbe3          	bge	a3,a4,e88069f8 <_svfprintf_r+0xdf8>
    e8807006:	0a10                	addi	a2,sp,272
    e8807008:	85da                	mv	a1,s6
    e880700a:	8552                	mv	a0,s4
    e880700c:	3d5010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8807010:	c119                	beqz	a0,e8807016 <_svfprintf_r+0x1416>
    e8807012:	e27fe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e8807016:	7792                	ld	a5,288(sp)
    e8807018:	8356                	mv	t1,s5
    e880701a:	baf9                	j	e88069f8 <_svfprintf_r+0xdf8>
    e880701c:	0a10                	addi	a2,sp,272
    e880701e:	85da                	mv	a1,s6
    e8807020:	8552                	mv	a0,s4
    e8807022:	3bf010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8807026:	c119                	beqz	a0,e880702c <_svfprintf_r+0x142c>
    e8807028:	e11fe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e880702c:	7792                	ld	a5,288(sp)
    e880702e:	8356                	mv	t1,s5
    e8807030:	ba55                	j	e88069e4 <_svfprintf_r+0xde4>
    e8807032:	fc3e                	sd	a5,56(sp)
    e8807034:	678a                	ld	a5,128(sp)
    e8807036:	65ca                	ld	a1,144(sp)
    e8807038:	f81a                	sd	t1,48(sp)
    e880703a:	40fd0d33          	sub	s10,s10,a5
    e880703e:	863e                	mv	a2,a5
    e8807040:	856a                	mv	a0,s10
    e8807042:	ec76                	sd	t4,24(sp)
    e8807044:	e436                	sd	a3,8(sp)
    e8807046:	b0bfe0ef          	jal	ra,e8805b50 <strncpy>
    e880704a:	f002                	sd	zero,32(sp)
    e880704c:	77a6                	ld	a5,104(sp)
    e880704e:	0284d633          	divu	a2,s1,s0
    e8807052:	66a2                	ld	a3,8(sp)
    e8807054:	0017c583          	lbu	a1,1(a5)
    e8807058:	6ee2                	ld	t4,24(sp)
    e880705a:	4725                	li	a4,9
    e880705c:	00b035b3          	snez	a1,a1
    e8807060:	97ae                	add	a5,a5,a1
    e8807062:	f4be                	sd	a5,104(sp)
    e8807064:	0ff00893          	li	a7,255
    e8807068:	fef1430b          	ldd	t1,a5,(sp),3,4
    e880706c:	dbcff06f          	j	e8806628 <_svfprintf_r+0xa28>
    e8807070:	6782                	ld	a5,0(sp)
    e8807072:	8d4a                	mv	s10,s2
    e8807074:	00f71023          	sh	a5,0(a4)
    e8807078:	b18ff06f          	j	e8806390 <_svfprintf_r+0x790>
    e880707c:	67c2                	ld	a5,16(sp)
    e880707e:	4384                	lw	s1,0(a5)
    e8807080:	87a6                	mv	a5,s1
    e8807082:	d41fe06f          	j	e8805dc2 <_svfprintf_r+0x1c2>
    e8807086:	7c04b48b          	extu	s1,s1,31,0
    e880708a:	e83a                	sd	a4,16(sp)
    e880708c:	86a2                	mv	a3,s0
    e880708e:	4785                	li	a5,1
    e8807090:	cc5fe06f          	j	e8805d54 <_svfprintf_r+0x154>
    e8807094:	02d00793          	li	a5,45
    e8807098:	0cf10fa3          	sb	a5,223(sp)
    e880709c:	02d00793          	li	a5,45
    e88070a0:	bf0d                	j	e8806fd2 <_svfprintf_r+0x13d2>
    e88070a2:	0a10                	addi	a2,sp,272
    e88070a4:	85da                	mv	a1,s6
    e88070a6:	8552                	mv	a0,s4
    e88070a8:	339010ef          	jal	ra,e8808be0 <__ssprint_r>
    e88070ac:	c119                	beqz	a0,e88070b2 <_svfprintf_r+0x14b2>
    e88070ae:	d8bfe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e88070b2:	56ae                	lw	a3,232(sp)
    e88070b4:	7792                	ld	a5,288(sp)
    e88070b6:	11812703          	lw	a4,280(sp)
    e88070ba:	8356                	mv	t1,s5
    e88070bc:	d206d8e3          	bgez	a3,e8806dec <_svfprintf_r+0x11ec>
    e88070c0:	bd29                	j	e8806eda <_svfprintf_r+0x12da>
    e88070c2:	e1a2                	sd	s0,192(sp)
    e88070c4:	ec02                	sd	zero,24(sp)
    e88070c6:	843e                	mv	s0,a5
    e88070c8:	57fd                	li	a5,-1
    e88070ca:	17fe                	slli	a5,a5,0x3f
    e88070cc:	00fc4c33          	xor	s8,s8,a5
    e88070d0:	02d00793          	li	a5,45
    e88070d4:	e5be                	sd	a5,200(sp)
    e88070d6:	06100793          	li	a5,97
    e88070da:	48fc8f63          	beq	s9,a5,e8807578 <_svfprintf_r+0x1978>
    e88070de:	04100793          	li	a5,65
    e88070e2:	00fc8463          	beq	s9,a5,e88070ea <_svfprintf_r+0x14ea>
    e88070e6:	fb7fe06f          	j	e880609c <_svfprintf_r+0x49c>
    e88070ea:	857e                	mv	a0,t6
    e88070ec:	85e2                	mv	a1,s8
    e88070ee:	fc1a                	sd	t1,56(sp)
    e88070f0:	f876                	sd	t4,48(sp)
    e88070f2:	2dd030ef          	jal	ra,e880abce <__trunctfdf2>
    e88070f6:	11a8                	addi	a0,sp,232
    e88070f8:	f88fe0ef          	jal	ra,e8805880 <frexp>
    e88070fc:	213030ef          	jal	ra,e880ab0e <__extenddftf2>
    e8807100:	000cd797          	auipc	a5,0xcd
    e8807104:	cc078793          	addi	a5,a5,-832 # e88d3dc0 <dhcp_discover_request_options+0x5b8>
    e8807108:	f8d7c60b          	ldd	a2,a3,(a5),0,4
    e880710c:	317020ef          	jal	ra,e8809c22 <__multf3>
    e8807110:	f02a                	sd	a0,32(sp)
    e8807112:	4601                	li	a2,0
    e8807114:	4681                	li	a3,0
    e8807116:	e42e                	sd	a1,8(sp)
    e8807118:	12f020ef          	jal	ra,e8809a46 <__eqtf2>
    e880711c:	6722                	ld	a4,8(sp)
    e880711e:	7882                	ld	a7,32(sp)
    e8807120:	fe614e8b          	ldd	t4,t1,(sp),3,4
    e8807124:	e119                	bnez	a0,e880712a <_svfprintf_r+0x152a>
    e8807126:	4785                	li	a5,1
    e8807128:	d5be                	sw	a5,232(sp)
    e880712a:	00099497          	auipc	s1,0x99
    e880712e:	d3648493          	addi	s1,s1,-714 # e889fe60 <TWO52+0x268>
    e8807132:	000e861b          	sext.w	a2,t4
    e8807136:	7c06378b          	extu	a5,a2,31,0
    e880713a:	0785                	addi	a5,a5,1
    e880713c:	97ea                	add	a5,a5,s10
    e880713e:	f13e                	sd	a5,160(sp)
    e8807140:	00cd07bb          	addw	a5,s10,a2
    e8807144:	000cd697          	auipc	a3,0xcd
    e8807148:	c5c68693          	addi	a3,a3,-932 # e88d3da0 <dhcp_discover_request_options+0x598>
    e880714c:	d73e                	sw	a5,172(sp)
    e880714e:	629c                	ld	a5,0(a3)
    e8807150:	e46a                	sd	s10,8(sp)
    e8807152:	f93e                	sd	a5,176(sp)
    e8807154:	669c                	ld	a5,8(a3)
    e8807156:	fd3e                	sd	a5,184(sp)
    e8807158:	a005                	j	e8807178 <_svfprintf_r+0x1578>
    e880715a:	4601                	li	a2,0
    e880715c:	4681                	li	a3,0
    e880715e:	ecae                	sd	a1,88(sp)
    e8807160:	e8aa                	sd	a0,80(sp)
    e8807162:	0e5020ef          	jal	ra,e8809a46 <__eqtf2>
    e8807166:	7ee2                	ld	t4,56(sp)
    e8807168:	6306                	ld	t1,64(sp)
    e880716a:	62c6                	ld	t0,80(sp)
    e880716c:	6fe6                	ld	t6,88(sp)
    e880716e:	7782                	ld	a5,32(sp)
    e8807170:	7742                	ld	a4,48(sp)
    e8807172:	68a6                	ld	a7,72(sp)
    e8807174:	cd39                	beqz	a0,e88071d2 <_svfprintf_r+0x15d2>
    e8807176:	e43e                	sd	a5,8(sp)
    e8807178:	764a                	ld	a2,176(sp)
    e880717a:	76ea                	ld	a3,184(sp)
    e880717c:	8546                	mv	a0,a7
    e880717e:	85ba                	mv	a1,a4
    e8807180:	e09a                	sd	t1,64(sp)
    e8807182:	fc76                	sd	t4,56(sp)
    e8807184:	29f020ef          	jal	ra,e8809c22 <__multf3>
    e8807188:	f02e                	sd	a1,32(sp)
    e880718a:	f82a                	sd	a0,48(sp)
    e880718c:	093030ef          	jal	ra,e880aa1e <__fixtfsi>
    e8807190:	00050c1b          	sext.w	s8,a0
    e8807194:	11b030ef          	jal	ra,e880aaae <__floatsitf>
    e8807198:	862a                	mv	a2,a0
    e880719a:	7742                	ld	a4,48(sp)
    e880719c:	7782                	ld	a5,32(sp)
    e880719e:	86ae                	mv	a3,a1
    e88071a0:	853a                	mv	a0,a4
    e88071a2:	85be                	mv	a1,a5
    e88071a4:	05c030ef          	jal	ra,e880a200 <__subtf3>
    e88071a8:	e4aa                	sd	a0,72(sp)
    e88071aa:	67a2                	ld	a5,8(sp)
    e88071ac:	8184c70b          	lrbu	a4,s1,s8,0
    e88071b0:	f82e                	sd	a1,48(sp)
    e88071b2:	82aa                	mv	t0,a0
    e88071b4:	1817d70b          	sbia	a4,(a5),1,0
    e88071b8:	573a                	lw	a4,172(sp)
    e88071ba:	f03e                	sd	a5,32(sp)
    e88071bc:	8fae                	mv	t6,a1
    e88071be:	9f1d                	subw	a4,a4,a5
    e88071c0:	f0ba                	sd	a4,96(sp)
    e88071c2:	770a                	ld	a4,160(sp)
    e88071c4:	7ee2                	ld	t4,56(sp)
    e88071c6:	6306                	ld	t1,64(sp)
    e88071c8:	f8e799e3          	bne	a5,a4,e880715a <_svfprintf_r+0x155a>
    e88071cc:	778a                	ld	a5,160(sp)
    e88071ce:	577d                	li	a4,-1
    e88071d0:	f0ba                	sd	a4,96(sp)
    e88071d2:	000cd717          	auipc	a4,0xcd
    e88071d6:	bde70713          	addi	a4,a4,-1058 # e88d3db0 <dhcp_discover_request_options+0x5a8>
    e88071da:	00073883          	ld	a7,0(a4)
    e88071de:	6718                	ld	a4,8(a4)
    e88071e0:	8516                	mv	a0,t0
    e88071e2:	8646                	mv	a2,a7
    e88071e4:	86ba                	mv	a3,a4
    e88071e6:	85fe                	mv	a1,t6
    e88071e8:	fc3e                	sd	a5,56(sp)
    e88071ea:	f81a                	sd	t1,48(sp)
    e88071ec:	f076                	sd	t4,32(sp)
    e88071ee:	ec96                	sd	t0,88(sp)
    e88071f0:	e8c6                	sd	a7,80(sp)
    e88071f2:	e4ba                	sd	a4,72(sp)
    e88071f4:	e0fe                	sd	t6,64(sp)
    e88071f6:	0e5020ef          	jal	ra,e8809ada <__getf2>
    e88071fa:	7e82                	ld	t4,32(sp)
    e88071fc:	fef1430b          	ldd	t1,a5,(sp),3,4
    e8807200:	2ea04b63          	bgtz	a0,e88074f6 <_svfprintf_r+0x18f6>
    e8807204:	68c6                	ld	a7,80(sp)
    e8807206:	6726                	ld	a4,72(sp)
    e8807208:	62e6                	ld	t0,88(sp)
    e880720a:	6f86                	ld	t6,64(sp)
    e880720c:	8646                	mv	a2,a7
    e880720e:	86ba                	mv	a3,a4
    e8807210:	8516                	mv	a0,t0
    e8807212:	85fe                	mv	a1,t6
    e8807214:	033020ef          	jal	ra,e8809a46 <__eqtf2>
    e8807218:	7e82                	ld	t4,32(sp)
    e880721a:	fef1430b          	ldd	t1,a5,(sp),3,4
    e880721e:	e509                	bnez	a0,e8807228 <_svfprintf_r+0x1628>
    e8807220:	001c7c13          	andi	s8,s8,1
    e8807224:	2c0c1963          	bnez	s8,e88074f6 <_svfprintf_r+0x18f6>
    e8807228:	7606                	ld	a2,96(sp)
    e880722a:	03000693          	li	a3,48
    e880722e:	00160713          	addi	a4,a2,1
    e8807232:	973e                	add	a4,a4,a5
    e8807234:	00065463          	bgez	a2,e880723c <_svfprintf_r+0x163c>
    e8807238:	ec3fe06f          	j	e88060fa <_svfprintf_r+0x4fa>
    e880723c:	1817d68b          	sbia	a3,(a5),1,0
    e8807240:	fee79ee3          	bne	a5,a4,e880723c <_svfprintf_r+0x163c>
    e8807244:	eb7fe06f          	j	e88060fa <_svfprintf_r+0x4fa>
    e8807248:	7702                	ld	a4,32(sp)
    e880724a:	976a                	add	a4,a4,s10
    e880724c:	019736b3          	sltu	a3,a4,s9
    e8807250:	42d71c8b          	mvnez	s9,a4,a3
    e8807254:	fb2ff06f          	j	e8806a06 <_svfprintf_r+0xe06>
    e8807258:	6766                	ld	a4,88(sp)
    e880725a:	57f5                	li	a5,-3
    e880725c:	00f74463          	blt	a4,a5,e8807264 <_svfprintf_r+0x1664>
    e8807260:	00eed863          	bge	t4,a4,e8807270 <_svfprintf_r+0x1670>
    e8807264:	3cf9                	addiw	s9,s9,-2
    e8807266:	fdfcf793          	andi	a5,s9,-33
    e880726a:	ed3e                	sd	a5,152(sp)
    e880726c:	eb5fe06f          	j	e8806120 <_svfprintf_r+0x520>
    e8807270:	7782                	ld	a5,32(sp)
    e8807272:	66e6                	ld	a3,88(sp)
    e8807274:	16f6ce63          	blt	a3,a5,e88073f0 <_svfprintf_r+0x17f0>
    e8807278:	670e                	ld	a4,192(sp)
    e880727a:	77c6                	ld	a5,112(sp)
    e880727c:	00177c13          	andi	s8,a4,1
    e8807280:	9fb5                	addw	a5,a5,a3
    e8807282:	4387968b          	mvnez	a3,a5,s8
    e8807286:	40077713          	andi	a4,a4,1024
    e880728a:	8c36                	mv	s8,a3
    e880728c:	c701                	beqz	a4,e8807294 <_svfprintf_r+0x1694>
    e880728e:	67e6                	ld	a5,88(sp)
    e8807290:	32f04963          	bgtz	a5,e88075c2 <_svfprintf_r+0x19c2>
    e8807294:	fffc4493          	not	s1,s8
    e8807298:	94fd                	srai	s1,s1,0x3f
    e880729a:	009c74b3          	and	s1,s8,s1
    e880729e:	2481                	sext.w	s1,s1
    e88072a0:	06700c93          	li	s9,103
    e88072a4:	e882                	sd	zero,80(sp)
    e88072a6:	f082                	sd	zero,96(sp)
    e88072a8:	f5ffe06f          	j	e8806206 <_svfprintf_r+0x606>
    e88072ac:	8776                	mv	a4,t4
    e88072ae:	11bc                	addi	a5,sp,232
    e88072b0:	85fe                	mv	a1,t6
    e88072b2:	0f810893          	addi	a7,sp,248
    e88072b6:	0ec10813          	addi	a6,sp,236
    e88072ba:	468d                	li	a3,3
    e88072bc:	8662                	mv	a2,s8
    e88072be:	8552                	mv	a0,s4
    e88072c0:	f81a                	sd	t1,48(sp)
    e88072c2:	f076                	sd	t4,32(sp)
    e88072c4:	e47e                	sd	t6,8(sp)
    e88072c6:	83bfc0ef          	jal	ra,e8803b00 <_ldtoa_r>
    e88072ca:	00054703          	lbu	a4,0(a0)
    e88072ce:	03000793          	li	a5,48
    e88072d2:	8d2a                	mv	s10,a0
    e88072d4:	6fa2                	ld	t6,8(sp)
    e88072d6:	7e82                	ld	t4,32(sp)
    e88072d8:	7342                	ld	t1,48(sp)
    e88072da:	08f71c63          	bne	a4,a5,e8807372 <_svfprintf_r+0x1772>
    e88072de:	857e                	mv	a0,t6
    e88072e0:	4601                	li	a2,0
    e88072e2:	4681                	li	a3,0
    e88072e4:	85e2                	mv	a1,s8
    e88072e6:	f81a                	sd	t1,48(sp)
    e88072e8:	f076                	sd	t4,32(sp)
    e88072ea:	e47e                	sd	t6,8(sp)
    e88072ec:	75a020ef          	jal	ra,e8809a46 <__eqtf2>
    e88072f0:	6fa2                	ld	t6,8(sp)
    e88072f2:	7e82                	ld	t4,32(sp)
    e88072f4:	7342                	ld	t1,48(sp)
    e88072f6:	cd35                	beqz	a0,e8807372 <_svfprintf_r+0x1772>
    e88072f8:	4705                	li	a4,1
    e88072fa:	41d707bb          	subw	a5,a4,t4
    e88072fe:	d5be                	sw	a5,232(sp)
    e8807300:	01d784b3          	add	s1,a5,t4
    e8807304:	94ea                	add	s1,s1,s10
    e8807306:	4601                	li	a2,0
    e8807308:	4681                	li	a3,0
    e880730a:	857e                	mv	a0,t6
    e880730c:	85e2                	mv	a1,s8
    e880730e:	f01a                	sd	t1,32(sp)
    e8807310:	e476                	sd	t4,8(sp)
    e8807312:	734020ef          	jal	ra,e8809a46 <__eqtf2>
    e8807316:	87a6                	mv	a5,s1
    e8807318:	6ea2                	ld	t4,8(sp)
    e880731a:	7302                	ld	t1,32(sp)
    e880731c:	e119                	bnez	a0,e8807322 <_svfprintf_r+0x1722>
    e880731e:	dddfe06f          	j	e88060fa <_svfprintf_r+0x4fa>
    e8807322:	77ee                	ld	a5,248(sp)
    e8807324:	03000693          	li	a3,48
    e8807328:	0097e463          	bltu	a5,s1,e8807330 <_svfprintf_r+0x1730>
    e880732c:	dcffe06f          	j	e88060fa <_svfprintf_r+0x4fa>
    e8807330:	00178713          	addi	a4,a5,1
    e8807334:	fdba                	sd	a4,248(sp)
    e8807336:	00d78023          	sb	a3,0(a5)
    e880733a:	77ee                	ld	a5,248(sp)
    e880733c:	fe97eae3          	bltu	a5,s1,e8807330 <_svfprintf_r+0x1730>
    e8807340:	dbbfe06f          	j	e88060fa <_svfprintf_r+0x4fa>
    e8807344:	0df14783          	lbu	a5,223(sp)
    e8807348:	4e81                	li	t4,0
    e880734a:	c399                	beqz	a5,e8807350 <_svfprintf_r+0x1750>
    e880734c:	a5bfe06f          	j	e8805da6 <_svfprintf_r+0x1a6>
    e8807350:	f69fe06f          	j	e88062b8 <_svfprintf_r+0x6b8>
    e8807354:	0a10                	addi	a2,sp,272
    e8807356:	85da                	mv	a1,s6
    e8807358:	8552                	mv	a0,s4
    e880735a:	087010ef          	jal	ra,e8808be0 <__ssprint_r>
    e880735e:	c119                	beqz	a0,e8807364 <_svfprintf_r+0x1764>
    e8807360:	ad9fe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e8807364:	77a6                	ld	a5,104(sp)
    e8807366:	8356                	mv	t1,s5
    e8807368:	0007c603          	lbu	a2,0(a5)
    e880736c:	7792                	ld	a5,288(sp)
    e880736e:	9cb2                	add	s9,s9,a2
    e8807370:	ba9d                	j	e8806ce6 <_svfprintf_r+0x10e6>
    e8807372:	57ae                	lw	a5,232(sp)
    e8807374:	01d784b3          	add	s1,a5,t4
    e8807378:	b771                	j	e8807304 <_svfprintf_r+0x1704>
    e880737a:	0a10                	addi	a2,sp,272
    e880737c:	85da                	mv	a1,s6
    e880737e:	8552                	mv	a0,s4
    e8807380:	061010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8807384:	c119                	beqz	a0,e880738a <_svfprintf_r+0x178a>
    e8807386:	ab3fe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e880738a:	572e                	lw	a4,232(sp)
    e880738c:	7792                	ld	a5,288(sp)
    e880738e:	8356                	mv	t1,s5
    e8807390:	ea8ff06f          	j	e8806a38 <_svfprintf_r+0xe38>
    e8807394:	02d00793          	li	a5,45
    e8807398:	0cf10fa3          	sb	a5,223(sp)
    e880739c:	02d00793          	li	a5,45
    e88073a0:	bce1                	j	e8806e78 <_svfprintf_r+0x1278>
    e88073a2:	0df14783          	lbu	a5,223(sp)
    e88073a6:	e83a                	sd	a4,16(sp)
    e88073a8:	e882                	sd	zero,80(sp)
    e88073aa:	f082                	sd	zero,96(sp)
    e88073ac:	ec82                	sd	zero,88(sp)
    e88073ae:	84f6                	mv	s1,t4
    e88073b0:	8c76                	mv	s8,t4
    e88073b2:	4e81                	li	t4,0
    e88073b4:	c399                	beqz	a5,e88073ba <_svfprintf_r+0x17ba>
    e88073b6:	9f1fe06f          	j	e8805da6 <_svfprintf_r+0x1a6>
    e88073ba:	efffe06f          	j	e88062b8 <_svfprintf_r+0x6b8>
    e88073be:	678e                	ld	a5,192(sp)
    e88073c0:	6766                	ld	a4,88(sp)
    e88073c2:	8b85                	andi	a5,a5,1
    e88073c4:	00fee7b3          	or	a5,t4,a5
    e88073c8:	2781                	sext.w	a5,a5
    e88073ca:	26e05c63          	blez	a4,e8807642 <_svfprintf_r+0x1a42>
    e88073ce:	24079b63          	bnez	a5,e8807624 <_svfprintf_r+0x1a24>
    e88073d2:	6c66                	ld	s8,88(sp)
    e88073d4:	06600c93          	li	s9,102
    e88073d8:	678e                	ld	a5,192(sp)
    e88073da:	4007f793          	andi	a5,a5,1024
    e88073de:	1e079463          	bnez	a5,e88075c6 <_svfprintf_r+0x19c6>
    e88073e2:	fffc4493          	not	s1,s8
    e88073e6:	94fd                	srai	s1,s1,0x3f
    e88073e8:	009c74b3          	and	s1,s8,s1
    e88073ec:	2481                	sext.w	s1,s1
    e88073ee:	bd5d                	j	e88072a4 <_svfprintf_r+0x16a4>
    e88073f0:	7702                	ld	a4,32(sp)
    e88073f2:	77c6                	ld	a5,112(sp)
    e88073f4:	06700c93          	li	s9,103
    e88073f8:	00e78c3b          	addw	s8,a5,a4
    e88073fc:	6766                	ld	a4,88(sp)
    e88073fe:	fce04de3          	bgtz	a4,e88073d8 <_svfprintf_r+0x17d8>
    e8807402:	40ec04bb          	subw	s1,s8,a4
    e8807406:	2485                	addiw	s1,s1,1
    e8807408:	8c26                	mv	s8,s1
    e880740a:	fffc4793          	not	a5,s8
    e880740e:	97fd                	srai	a5,a5,0x3f
    e8807410:	8cfd                	and	s1,s1,a5
    e8807412:	bd49                	j	e88072a4 <_svfprintf_r+0x16a4>
    e8807414:	0a10                	addi	a2,sp,272
    e8807416:	85da                	mv	a1,s6
    e8807418:	8552                	mv	a0,s4
    e880741a:	7c6010ef          	jal	ra,e8808be0 <__ssprint_r>
    e880741e:	c119                	beqz	a0,e8807424 <_svfprintf_r+0x1824>
    e8807420:	a19fe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e8807424:	5c2e                	lw	s8,232(sp)
    e8807426:	7702                	ld	a4,32(sp)
    e8807428:	7792                	ld	a5,288(sp)
    e880742a:	8356                	mv	t1,s5
    e880742c:	41870c3b          	subw	s8,a4,s8
    e8807430:	e42ff06f          	j	e8806a72 <_svfprintf_r+0xe72>
    e8807434:	03000793          	li	a5,48
    e8807438:	0ef10023          	sb	a5,224(sp)
    e880743c:	05800793          	li	a5,88
    e8807440:	0ef100a3          	sb	a5,225(sp)
    e8807444:	00246793          	ori	a5,s0,2
    e8807448:	2781                	sext.w	a5,a5
    e880744a:	e1be                	sd	a5,192(sp)
    e880744c:	ec02                	sd	zero,24(sp)
    e880744e:	06300713          	li	a4,99
    e8807452:	12810d13          	addi	s10,sp,296
    e8807456:	05d74c63          	blt	a4,t4,e88074ae <_svfprintf_r+0x18ae>
    e880745a:	fdfcf793          	andi	a5,s9,-33
    e880745e:	6c32                	ld	s8,264(sp)
    e8807460:	ed3e                	sd	a5,152(sp)
    e8807462:	e582                	sd	zero,200(sp)
    e8807464:	10246413          	ori	s0,s0,258
    e8807468:	2401                	sext.w	s0,s0
    e880746a:	6f92                	ld	t6,256(sp)
    e880746c:	c60c55e3          	bgez	s8,e88070d6 <_svfprintf_r+0x14d6>
    e8807470:	b9a1                	j	e88070c8 <_svfprintf_r+0x14c8>
    e8807472:	2705                	addiw	a4,a4,1
    e8807474:	97e2                	add	a5,a5,s8
    e8807476:	f983598b          	sdd	s3,s8,(t1),0,4
    e880747a:	f23e                	sd	a5,288(sp)
    e880747c:	10e12c23          	sw	a4,280(sp)
    e8807480:	469d                	li	a3,7
    e8807482:	96e6d4e3          	bge	a3,a4,e8806dea <_svfprintf_r+0x11ea>
    e8807486:	0a10                	addi	a2,sp,272
    e8807488:	85da                	mv	a1,s6
    e880748a:	8552                	mv	a0,s4
    e880748c:	754010ef          	jal	ra,e8808be0 <__ssprint_r>
    e8807490:	c119                	beqz	a0,e8807496 <_svfprintf_r+0x1896>
    e8807492:	9a7fe06f          	j	e8805e38 <_svfprintf_r+0x238>
    e8807496:	7792                	ld	a5,288(sp)
    e8807498:	11812703          	lw	a4,280(sp)
    e880749c:	8356                	mv	t1,s5
    e880749e:	b2b9                	j	e8806dec <_svfprintf_r+0x11ec>
    e88074a0:	03000793          	li	a5,48
    e88074a4:	0ef10023          	sb	a5,224(sp)
    e88074a8:	07800793          	li	a5,120
    e88074ac:	bf51                	j	e8807440 <_svfprintf_r+0x1840>
    e88074ae:	001e859b          	addiw	a1,t4,1
    e88074b2:	8552                	mv	a0,s4
    e88074b4:	ec1a                	sd	t1,24(sp)
    e88074b6:	e476                	sd	t4,8(sp)
    e88074b8:	4db740ef          	jal	ra,e887c192 <_malloc_r>
    e88074bc:	8d2a                	mv	s10,a0
    e88074be:	6ea2                	ld	t4,8(sp)
    e88074c0:	6362                	ld	t1,24(sp)
    e88074c2:	1e050063          	beqz	a0,e88076a2 <_svfprintf_r+0x1aa2>
    e88074c6:	ec2a                	sd	a0,24(sp)
    e88074c8:	bf49                	j	e880745a <_svfprintf_r+0x185a>
    e88074ca:	001e849b          	addiw	s1,t4,1
    e88074ce:	8726                	mv	a4,s1
    e88074d0:	85fe                	mv	a1,t6
    e88074d2:	0f810893          	addi	a7,sp,248
    e88074d6:	0ec10813          	addi	a6,sp,236
    e88074da:	11bc                	addi	a5,sp,232
    e88074dc:	4689                	li	a3,2
    e88074de:	8662                	mv	a2,s8
    e88074e0:	8552                	mv	a0,s4
    e88074e2:	f076                	sd	t4,32(sp)
    e88074e4:	e47e                	sd	t6,8(sp)
    e88074e6:	e1afc0ef          	jal	ra,e8803b00 <_ldtoa_r>
    e88074ea:	8d2a                	mv	s10,a0
    e88074ec:	6fa2                	ld	t6,8(sp)
    e88074ee:	7e82                	ld	t4,32(sp)
    e88074f0:	7342                	ld	t1,48(sp)
    e88074f2:	94ea                	add	s1,s1,s10
    e88074f4:	bd09                	j	e8807306 <_svfprintf_r+0x1706>
    e88074f6:	6722                	ld	a4,8(sp)
    e88074f8:	00f4c603          	lbu	a2,15(s1)
    e88074fc:	fdba                	sd	a4,248(sp)
    e88074fe:	fff7c683          	lbu	a3,-1(a5)
    e8807502:	873e                	mv	a4,a5
    e8807504:	00d61e63          	bne	a2,a3,e8807520 <_svfprintf_r+0x1920>
    e8807508:	03000593          	li	a1,48
    e880750c:	feb70fa3          	sb	a1,-1(a4)
    e8807510:	776e                	ld	a4,248(sp)
    e8807512:	fff70693          	addi	a3,a4,-1
    e8807516:	fdb6                	sd	a3,248(sp)
    e8807518:	fff74683          	lbu	a3,-1(a4)
    e880751c:	fed608e3          	beq	a2,a3,e880750c <_svfprintf_r+0x190c>
    e8807520:	0016861b          	addiw	a2,a3,1
    e8807524:	03900593          	li	a1,57
    e8807528:	0ff67613          	andi	a2,a2,255
    e880752c:	00b68663          	beq	a3,a1,e8807538 <_svfprintf_r+0x1938>
    e8807530:	fec70fa3          	sb	a2,-1(a4)
    e8807534:	bc7fe06f          	j	e88060fa <_svfprintf_r+0x4fa>
    e8807538:	00a4c603          	lbu	a2,10(s1)
    e880753c:	fec70fa3          	sb	a2,-1(a4)
    e8807540:	bbbfe06f          	j	e88060fa <_svfprintf_r+0x4fa>
    e8807544:	86a2                	mv	a3,s0
    e8807546:	af4ff06f          	j	e880683a <_svfprintf_r+0xc3a>
    e880754a:	c31c                	sw	a5,0(a4)
    e880754c:	8d4a                	mv	s10,s2
    e880754e:	e43fe06f          	j	e8806390 <_svfprintf_r+0x790>
    e8807552:	0f210693          	addi	a3,sp,242
    e8807556:	e619                	bnez	a2,e8807564 <_svfprintf_r+0x1964>
    e8807558:	03000713          	li	a4,48
    e880755c:	0ee10923          	sb	a4,242(sp)
    e8807560:	0f310693          	addi	a3,sp,243
    e8807564:	0307879b          	addiw	a5,a5,48
    e8807568:	1816d78b          	sbia	a5,(a3),1,0
    e880756c:	1998                	addi	a4,sp,240
    e880756e:	40e687bb          	subw	a5,a3,a4
    e8807572:	e53e                	sd	a5,136(sp)
    e8807574:	c5bfe06f          	j	e88061ce <_svfprintf_r+0x5ce>
    e8807578:	857e                	mv	a0,t6
    e880757a:	85e2                	mv	a1,s8
    e880757c:	fc1a                	sd	t1,56(sp)
    e880757e:	f876                	sd	t4,48(sp)
    e8807580:	64e030ef          	jal	ra,e880abce <__trunctfdf2>
    e8807584:	11a8                	addi	a0,sp,232
    e8807586:	afafe0ef          	jal	ra,e8805880 <frexp>
    e880758a:	584030ef          	jal	ra,e880ab0e <__extenddftf2>
    e880758e:	000cd797          	auipc	a5,0xcd
    e8807592:	83278793          	addi	a5,a5,-1998 # e88d3dc0 <dhcp_discover_request_options+0x5b8>
    e8807596:	f8d7c60b          	ldd	a2,a3,(a5),0,4
    e880759a:	688020ef          	jal	ra,e8809c22 <__multf3>
    e880759e:	f02a                	sd	a0,32(sp)
    e88075a0:	4601                	li	a2,0
    e88075a2:	4681                	li	a3,0
    e88075a4:	e42e                	sd	a1,8(sp)
    e88075a6:	4a0020ef          	jal	ra,e8809a46 <__eqtf2>
    e88075aa:	6722                	ld	a4,8(sp)
    e88075ac:	7882                	ld	a7,32(sp)
    e88075ae:	fe614e8b          	ldd	t4,t1,(sp),3,4
    e88075b2:	e119                	bnez	a0,e88075b8 <_svfprintf_r+0x19b8>
    e88075b4:	4785                	li	a5,1
    e88075b6:	d5be                	sw	a5,232(sp)
    e88075b8:	0009c497          	auipc	s1,0x9c
    e88075bc:	bf048493          	addi	s1,s1,-1040 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e88075c0:	be8d                	j	e8807132 <_svfprintf_r+0x1532>
    e88075c2:	06700c93          	li	s9,103
    e88075c6:	77a6                	ld	a5,104(sp)
    e88075c8:	e882                	sd	zero,80(sp)
    e88075ca:	f082                	sd	zero,96(sp)
    e88075cc:	0007c783          	lbu	a5,0(a5)
    e88075d0:	0ff00613          	li	a2,255
    e88075d4:	02c78a63          	beq	a5,a2,e8807608 <_svfprintf_r+0x1a08>
    e88075d8:	65e6                	ld	a1,88(sp)
    e88075da:	0007871b          	sext.w	a4,a5
    e88075de:	02b75563          	bge	a4,a1,e8807608 <_svfprintf_r+0x1a08>
    e88075e2:	7526                	ld	a0,104(sp)
    e88075e4:	40e5873b          	subw	a4,a1,a4
    e88075e8:	ecba                	sd	a4,88(sp)
    e88075ea:	00154683          	lbu	a3,1(a0)
    e88075ee:	ca89                	beqz	a3,e8807600 <_svfprintf_r+0x1a00>
    e88075f0:	7786                	ld	a5,96(sp)
    e88075f2:	2785                	addiw	a5,a5,1
    e88075f4:	f0be                	sd	a5,96(sp)
    e88075f6:	00150793          	addi	a5,a0,1
    e88075fa:	f4be                	sd	a5,104(sp)
    e88075fc:	87b6                	mv	a5,a3
    e88075fe:	bfd9                	j	e88075d4 <_svfprintf_r+0x19d4>
    e8807600:	6746                	ld	a4,80(sp)
    e8807602:	2705                	addiw	a4,a4,1
    e8807604:	e8ba                	sd	a4,80(sp)
    e8807606:	b7f9                	j	e88075d4 <_svfprintf_r+0x19d4>
    e8807608:	6746                	ld	a4,80(sp)
    e880760a:	7786                	ld	a5,96(sp)
    e880760c:	84e2                	mv	s1,s8
    e880760e:	9fb9                	addw	a5,a5,a4
    e8807610:	670a                	ld	a4,128(sp)
    e8807612:	24e7948b          	mulaw	s1,a5,a4
    e8807616:	8c26                	mv	s8,s1
    e8807618:	fffc4793          	not	a5,s8
    e880761c:	97fd                	srai	a5,a5,0x3f
    e880761e:	8cfd                	and	s1,s1,a5
    e8807620:	be7fe06f          	j	e8806206 <_svfprintf_r+0x606>
    e8807624:	77c6                	ld	a5,112(sp)
    e8807626:	06600c93          	li	s9,102
    e880762a:	00e78c3b          	addw	s8,a5,a4
    e880762e:	01dc0c3b          	addw	s8,s8,t4
    e8807632:	b35d                	j	e88073d8 <_svfprintf_r+0x17d8>
    e8807634:	670e                	ld	a4,192(sp)
    e8807636:	8b05                	andi	a4,a4,1
    e8807638:	e319                	bnez	a4,e880763e <_svfprintf_r+0x1a3e>
    e880763a:	baffe06f          	j	e88061e8 <_svfprintf_r+0x5e8>
    e880763e:	ba5fe06f          	j	e88061e2 <_svfprintf_r+0x5e2>
    e8807642:	e791                	bnez	a5,e880764e <_svfprintf_r+0x1a4e>
    e8807644:	4485                	li	s1,1
    e8807646:	06600c93          	li	s9,102
    e880764a:	4c05                	li	s8,1
    e880764c:	b9a1                	j	e88072a4 <_svfprintf_r+0x16a4>
    e880764e:	77c6                	ld	a5,112(sp)
    e8807650:	06600c93          	li	s9,102
    e8807654:	0017849b          	addiw	s1,a5,1
    e8807658:	01d48ebb          	addw	t4,s1,t4
    e880765c:	8c76                	mv	s8,t4
    e880765e:	fffc4493          	not	s1,s8
    e8807662:	94fd                	srai	s1,s1,0x3f
    e8807664:	009ef4b3          	and	s1,t4,s1
    e8807668:	b935                	j	e88072a4 <_svfprintf_r+0x16a4>
    e880766a:	871a                	mv	a4,t1
    e880766c:	b8c5                	j	e8806f5c <_svfprintf_r+0x135c>
    e880766e:	6742                	ld	a4,16(sp)
    e8807670:	58874e8b          	lwia	t4,(a4),8,0
    e8807674:	000ed363          	bgez	t4,e880767a <_svfprintf_r+0x1a7a>
    e8807678:	5efd                	li	t4,-1
    e880767a:	00194f03          	lbu	t5,1(s2)
    e880767e:	e83a                	sd	a4,16(sp)
    e8807680:	893e                	mv	s2,a5
    e8807682:	e82fe06f          	j	e8805d04 <_svfprintf_r+0x104>
    e8807686:	4789                	li	a5,2
    e8807688:	e53e                	sd	a5,136(sp)
    e880768a:	b45fe06f          	j	e88061ce <_svfprintf_r+0x5ce>
    e880768e:	47b1                	li	a5,12
    e8807690:	00fa2023          	sw	a5,0(s4)
    e8807694:	57fd                	li	a5,-1
    e8807696:	e03e                	sd	a5,0(sp)
    e8807698:	fbefe06f          	j	e8805e56 <_svfprintf_r+0x256>
    e880769c:	84f6                	mv	s1,t4
    e880769e:	94ea                	add	s1,s1,s10
    e88076a0:	b19d                	j	e8807306 <_svfprintf_r+0x1706>
    e88076a2:	010b5783          	lhu	a5,16(s6)
    e88076a6:	0407e713          	ori	a4,a5,64
    e88076aa:	87ba                	mv	a5,a4
    e88076ac:	00eb1823          	sh	a4,16(s6)
    e88076b0:	f98fe06f          	j	e8805e48 <_svfprintf_r+0x248>
	...

00000000e88076c0 <__sprint_r.part.0>:
    e88076c0:	0ac5a783          	lw	a5,172(a1)
    e88076c4:	715d                	addi	sp,sp,-80
    e88076c6:	ec56                	sd	s5,24(sp)
    e88076c8:	e486                	sd	ra,72(sp)
    e88076ca:	e0a2                	sd	s0,64(sp)
    e88076cc:	fc26                	sd	s1,56(sp)
    e88076ce:	f84a                	sd	s2,48(sp)
    e88076d0:	f44e                	sd	s3,40(sp)
    e88076d2:	f052                	sd	s4,32(sp)
    e88076d4:	e85a                	sd	s6,16(sp)
    e88076d6:	e45e                	sd	s7,8(sp)
    e88076d8:	03279713          	slli	a4,a5,0x32
    e88076dc:	8ab2                	mv	s5,a2
    e88076de:	06075b63          	bgez	a4,e8807754 <__sprint_r.part.0+0x94>
    e88076e2:	6a1c                	ld	a5,16(a2)
    e88076e4:	892e                	mv	s2,a1
    e88076e6:	89aa                	mv	s3,a0
    e88076e8:	00063b03          	ld	s6,0(a2)
    e88076ec:	5a7d                	li	s4,-1
    e88076ee:	c3ad                	beqz	a5,e8807750 <__sprint_r.part.0+0x90>
    e88076f0:	008b3483          	ld	s1,8(s6)
    e88076f4:	000b3b83          	ld	s7,0(s6)
    e88076f8:	8089                	srli	s1,s1,0x2
    e88076fa:	2481                	sext.w	s1,s1
    e88076fc:	04905463          	blez	s1,e8807744 <__sprint_r.part.0+0x84>
    e8807700:	4401                	li	s0,0
    e8807702:	a019                	j	e8807708 <__sprint_r.part.0+0x48>
    e8807704:	0297de63          	bge	a5,s1,e8807740 <__sprint_r.part.0+0x80>
    e8807708:	448bc58b          	lrw	a1,s7,s0,2
    e880770c:	864a                	mv	a2,s2
    e880770e:	854e                	mv	a0,s3
    e8807710:	7f1000ef          	jal	ra,e8808700 <_fputwc_r>
    e8807714:	0405                	addi	s0,s0,1
    e8807716:	2501                	sext.w	a0,a0
    e8807718:	0004079b          	sext.w	a5,s0
    e880771c:	ff4514e3          	bne	a0,s4,e8807704 <__sprint_r.part.0+0x44>
    e8807720:	557d                	li	a0,-1
    e8807722:	60a6                	ld	ra,72(sp)
    e8807724:	6406                	ld	s0,64(sp)
    e8807726:	000ab823          	sd	zero,16(s5)
    e880772a:	000aa423          	sw	zero,8(s5)
    e880772e:	74e2                	ld	s1,56(sp)
    e8807730:	7942                	ld	s2,48(sp)
    e8807732:	79a2                	ld	s3,40(sp)
    e8807734:	7a02                	ld	s4,32(sp)
    e8807736:	6ae2                	ld	s5,24(sp)
    e8807738:	6b42                	ld	s6,16(sp)
    e880773a:	6ba2                	ld	s7,8(sp)
    e880773c:	6161                	addi	sp,sp,80
    e880773e:	8082                	ret
    e8807740:	010ab783          	ld	a5,16(s5)
    e8807744:	048a                	slli	s1,s1,0x2
    e8807746:	8f85                	sub	a5,a5,s1
    e8807748:	00fab823          	sd	a5,16(s5)
    e880774c:	0b41                	addi	s6,s6,16
    e880774e:	f3cd                	bnez	a5,e88076f0 <__sprint_r.part.0+0x30>
    e8807750:	4501                	li	a0,0
    e8807752:	bfc1                	j	e8807722 <__sprint_r.part.0+0x62>
    e8807754:	04c010ef          	jal	ra,e88087a0 <__sfvwrite_r>
    e8807758:	b7e9                	j	e8807722 <__sprint_r.part.0+0x62>
    e880775a:	00000013          	nop
    e880775e:	0001                	nop

00000000e8807760 <__sprint_r>:
    e8807760:	6a18                	ld	a4,16(a2)
    e8807762:	c319                	beqz	a4,e8807768 <__sprint_r+0x8>
    e8807764:	f5dff06f          	j	e88076c0 <__sprint_r.part.0>
    e8807768:	00062423          	sw	zero,8(a2)
    e880776c:	4501                	li	a0,0
    e880776e:	8082                	ret

00000000e8807770 <_vfiprintf_r>:
    e8807770:	7145                	addi	sp,sp,-464
    e8807772:	f74e                	sd	s3,424(sp)
    e8807774:	f352                	sd	s4,416(sp)
    e8807776:	f6ee                	sd	s11,360(sp)
    e8807778:	e786                	sd	ra,456(sp)
    e880777a:	e3a2                	sd	s0,448(sp)
    e880777c:	ff26                	sd	s1,440(sp)
    e880777e:	fb4a                	sd	s2,432(sp)
    e8807780:	ef56                	sd	s5,408(sp)
    e8807782:	eb5a                	sd	s6,400(sp)
    e8807784:	e75e                	sd	s7,392(sp)
    e8807786:	e362                	sd	s8,384(sp)
    e8807788:	fee6                	sd	s9,376(sp)
    e880778a:	faea                	sd	s10,368(sp)
    e880778c:	e436                	sd	a3,8(sp)
    e880778e:	8a2a                	mv	s4,a0
    e8807790:	89ae                	mv	s3,a1
    e8807792:	8db2                	mv	s11,a2
    e8807794:	c501                	beqz	a0,e880779c <_vfiprintf_r+0x2c>
    e8807796:	493c                	lw	a5,80(a0)
    e8807798:	6a078a63          	beqz	a5,e8807e4c <_vfiprintf_r+0x6dc>
    e880779c:	01099703          	lh	a4,16(s3)
    e88077a0:	3c07378b          	extu	a5,a4,15,0
    e88077a4:	03279693          	slli	a3,a5,0x32
    e88077a8:	0006cf63          	bltz	a3,e88077c6 <_vfiprintf_r+0x56>
    e88077ac:	0ac9a683          	lw	a3,172(s3)
    e88077b0:	6789                	lui	a5,0x2
    e88077b2:	8fd9                	or	a5,a5,a4
    e88077b4:	7779                	lui	a4,0xffffe
    e88077b6:	177d                	addi	a4,a4,-1
    e88077b8:	8f75                	and	a4,a4,a3
    e88077ba:	00f99823          	sh	a5,16(s3)
    e88077be:	0ae9a623          	sw	a4,172(s3)
    e88077c2:	3c07b78b          	extu	a5,a5,15,0
    e88077c6:	0087f713          	andi	a4,a5,8
    e88077ca:	1c070d63          	beqz	a4,e88079a4 <_vfiprintf_r+0x234>
    e88077ce:	0189b703          	ld	a4,24(s3)
    e88077d2:	1c070963          	beqz	a4,e88079a4 <_vfiprintf_r+0x234>
    e88077d6:	8be9                	andi	a5,a5,26
    e88077d8:	4729                	li	a4,10
    e88077da:	1ee78163          	beq	a5,a4,e88079bc <_vfiprintf_r+0x24c>
    e88077de:	77e1                	lui	a5,0xffff8
    e88077e0:	1184                	addi	s1,sp,224
    e88077e2:	8307c793          	xori	a5,a5,-2000
    e88077e6:	f0a6                	sd	s1,96(sp)
    e88077e8:	f882                	sd	zero,112(sp)
    e88077ea:	d482                	sw	zero,104(sp)
    e88077ec:	8726                	mv	a4,s1
    e88077ee:	e802                	sd	zero,16(sp)
    e88077f0:	f802                	sd	zero,48(sp)
    e88077f2:	e082                	sd	zero,64(sp)
    e88077f4:	fc02                	sd	zero,56(sp)
    e88077f6:	e002                	sd	zero,0(sp)
    e88077f8:	00098b17          	auipc	s6,0x98
    e88077fc:	c90b0b13          	addi	s6,s6,-880 # e889f488 <zeroes.4576+0x10>
    e8807800:	04f11723          	sh	a5,78(sp)
    e8807804:	000dc783          	lbu	a5,0(s11)
    e8807808:	1c078b63          	beqz	a5,e88079de <_vfiprintf_r+0x26e>
    e880780c:	02500693          	li	a3,37
    e8807810:	1cd78be3          	beq	a5,a3,e88081e6 <_vfiprintf_r+0xa76>
    e8807814:	846e                	mv	s0,s11
    e8807816:	a021                	j	e880781e <_vfiprintf_r+0xae>
    e8807818:	1ad78e63          	beq	a5,a3,e88079d4 <_vfiprintf_r+0x264>
    e880781c:	844a                	mv	s0,s2
    e880781e:	00144783          	lbu	a5,1(s0)
    e8807822:	00140913          	addi	s2,s0,1
    e8807826:	fbed                	bnez	a5,e8807818 <_vfiprintf_r+0xa8>
    e8807828:	41b90abb          	subw	s5,s2,s11
    e880782c:	1a0a8963          	beqz	s5,e88079de <_vfiprintf_r+0x26e>
    e8807830:	76c6                	ld	a3,112(sp)
    e8807832:	57a6                	lw	a5,104(sp)
    e8807834:	01b73023          	sd	s11,0(a4) # ffffffffffffe000 <__DRAM0_INF_BASE+0xffffffff0000e000>
    e8807838:	96d6                	add	a3,a3,s5
    e880783a:	2785                	addiw	a5,a5,1
    e880783c:	01573423          	sd	s5,8(a4)
    e8807840:	f8b6                	sd	a3,112(sp)
    e8807842:	d4be                	sw	a5,104(sp)
    e8807844:	461d                	li	a2,7
    e8807846:	0741                	addi	a4,a4,16
    e8807848:	00f65c63          	bge	a2,a5,e8807860 <_vfiprintf_r+0xf0>
    e880784c:	16068de3          	beqz	a3,e88081c6 <_vfiprintf_r+0xa56>
    e8807850:	1090                	addi	a2,sp,96
    e8807852:	85ce                	mv	a1,s3
    e8807854:	8552                	mv	a0,s4
    e8807856:	e6bff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e880785a:	18051b63          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e880785e:	8726                	mv	a4,s1
    e8807860:	6682                	ld	a3,0(sp)
    e8807862:	00144783          	lbu	a5,1(s0)
    e8807866:	00da86bb          	addw	a3,s5,a3
    e880786a:	e036                	sd	a3,0(sp)
    e880786c:	16078963          	beqz	a5,e88079de <_vfiprintf_r+0x26e>
    e8807870:	00190d93          	addi	s11,s2,1
    e8807874:	00194783          	lbu	a5,1(s2)
    e8807878:	04010ba3          	sb	zero,87(sp)
    e880787c:	5cfd                	li	s9,-1
    e880787e:	4901                	li	s2,0
    e8807880:	4d01                	li	s10,0
    e8807882:	4aa5                	li	s5,9
    e8807884:	02a00413          	li	s0,42
    e8807888:	0d85                	addi	s11,s11,1
    e880788a:	05a00513          	li	a0,90
    e880788e:	fe07859b          	addiw	a1,a5,-32
    e8807892:	1eb56563          	bltu	a0,a1,e8807a7c <_vfiprintf_r+0x30c>
    e8807896:	54bb460b          	lurw	a2,s6,a1,2
    e880789a:	965a                	add	a2,a2,s6
    e880789c:	8602                	jr	a2
    e880789e:	0001                	nop
    e88078a0:	010d6813          	ori	a6,s10,16
    e88078a4:	00080d1b          	sext.w	s10,a6
    e88078a8:	000dc783          	lbu	a5,0(s11)
    e88078ac:	bff1                	j	e8807888 <_vfiprintf_r+0x118>
    e88078ae:	010d6813          	ori	a6,s10,16
    e88078b2:	00080d1b          	sext.w	s10,a6
    e88078b6:	66a2                	ld	a3,8(sp)
    e88078b8:	020d7793          	andi	a5,s10,32
    e88078bc:	00868613          	addi	a2,a3,8
    e88078c0:	36078e63          	beqz	a5,e8807c3c <_vfiprintf_r+0x4cc>
    e88078c4:	6280                	ld	s0,0(a3)
    e88078c6:	bffd7813          	andi	a6,s10,-1025
    e88078ca:	0008031b          	sext.w	t1,a6
    e88078ce:	e432                	sd	a2,8(sp)
    e88078d0:	4781                	li	a5,0
    e88078d2:	04010ba3          	sb	zero,87(sp)
    e88078d6:	567d                	li	a2,-1
    e88078d8:	30cc8063          	beq	s9,a2,e8807bd8 <_vfiprintf_r+0x468>
    e88078dc:	f7f37813          	andi	a6,t1,-129
    e88078e0:	00080d1b          	sext.w	s10,a6
    e88078e4:	74041a63          	bnez	s0,e8808038 <_vfiprintf_r+0x8c8>
    e88078e8:	560c9863          	bnez	s9,e8807e58 <_vfiprintf_r+0x6e8>
    e88078ec:	eba5                	bnez	a5,e880795c <_vfiprintf_r+0x1ec>
    e88078ee:	00137a93          	andi	s5,t1,1
    e88078f2:	0dc10c13          	addi	s8,sp,220
    e88078f6:	000a8863          	beqz	s5,e8807906 <_vfiprintf_r+0x196>
    e88078fa:	03000793          	li	a5,48
    e88078fe:	0cf10da3          	sb	a5,219(sp)
    e8807902:	0db10c13          	addi	s8,sp,219
    e8807906:	015ca7b3          	slt	a5,s9,s5
    e880790a:	86d6                	mv	a3,s5
    e880790c:	05714403          	lbu	s0,87(sp)
    e8807910:	40fc968b          	mveqz	a3,s9,a5
    e8807914:	0006879b          	sext.w	a5,a3
    e8807918:	0017861b          	addiw	a2,a5,1
    e880791c:	4087960b          	mveqz	a2,a5,s0
    e8807920:	8432                	mv	s0,a2
    e8807922:	a2bd                	j	e8807a90 <_vfiprintf_r+0x320>
    e8807924:	010d6813          	ori	a6,s10,16
    e8807928:	00080d1b          	sext.w	s10,a6
    e880792c:	66a2                	ld	a3,8(sp)
    e880792e:	020d7793          	andi	a5,s10,32
    e8807932:	00868613          	addi	a2,a3,8
    e8807936:	26078463          	beqz	a5,e8807b9e <_vfiprintf_r+0x42e>
    e880793a:	629c                	ld	a5,0(a3)
    e880793c:	843e                	mv	s0,a5
    e880793e:	2607ce63          	bltz	a5,e8807bba <_vfiprintf_r+0x44a>
    e8807942:	57fd                	li	a5,-1
    e8807944:	1afc8fe3          	beq	s9,a5,e8808302 <_vfiprintf_r+0xb92>
    e8807948:	f7fd7813          	andi	a6,s10,-129
    e880794c:	0008031b          	sext.w	t1,a6
    e8807950:	100413e3          	bnez	s0,e8808256 <_vfiprintf_r+0xae6>
    e8807954:	2c0c9ae3          	bnez	s9,e8808428 <_vfiprintf_r+0xcb8>
    e8807958:	8d1a                	mv	s10,t1
    e880795a:	e432                	sd	a2,8(sp)
    e880795c:	4c81                	li	s9,0
    e880795e:	4a81                	li	s5,0
    e8807960:	015ca7b3          	slt	a5,s9,s5
    e8807964:	86d6                	mv	a3,s5
    e8807966:	05714403          	lbu	s0,87(sp)
    e880796a:	40fc968b          	mveqz	a3,s9,a5
    e880796e:	0006879b          	sext.w	a5,a3
    e8807972:	0017861b          	addiw	a2,a5,1
    e8807976:	4087960b          	mveqz	a2,a5,s0
    e880797a:	0dc10c13          	addi	s8,sp,220
    e880797e:	8432                	mv	s0,a2
    e8807980:	aa01                	j	e8807a90 <_vfiprintf_r+0x320>
    e8807982:	010d6813          	ori	a6,s10,16
    e8807986:	00080d1b          	sext.w	s10,a6
    e880798a:	66a2                	ld	a3,8(sp)
    e880798c:	020d7793          	andi	a5,s10,32
    e8807990:	00868613          	addi	a2,a3,8
    e8807994:	1e078563          	beqz	a5,e8807b7e <_vfiprintf_r+0x40e>
    e8807998:	6280                	ld	s0,0(a3)
    e880799a:	836a                	mv	t1,s10
    e880799c:	e432                	sd	a2,8(sp)
    e880799e:	4785                	li	a5,1
    e88079a0:	bf0d                	j	e88078d2 <_vfiprintf_r+0x162>
    e88079a2:	0001                	nop
    e88079a4:	85ce                	mv	a1,s3
    e88079a6:	8552                	mv	a0,s4
    e88079a8:	ed8fa0ef          	jal	ra,e8802080 <__swsetup_r>
    e88079ac:	260515e3          	bnez	a0,e8808416 <_vfiprintf_r+0xca6>
    e88079b0:	0109d783          	lhu	a5,16(s3)
    e88079b4:	4729                	li	a4,10
    e88079b6:	8be9                	andi	a5,a5,26
    e88079b8:	e2e793e3          	bne	a5,a4,e88077de <_vfiprintf_r+0x6e>
    e88079bc:	01299783          	lh	a5,18(s3)
    e88079c0:	e007cfe3          	bltz	a5,e88077de <_vfiprintf_r+0x6e>
    e88079c4:	66a2                	ld	a3,8(sp)
    e88079c6:	866e                	mv	a2,s11
    e88079c8:	85ce                	mv	a1,s3
    e88079ca:	8552                	mv	a0,s4
    e88079cc:	2a5000ef          	jal	ra,e8808470 <__sbprintf>
    e88079d0:	e02a                	sd	a0,0(sp)
    e88079d2:	a02d                	j	e88079fc <_vfiprintf_r+0x28c>
    e88079d4:	41b90abb          	subw	s5,s2,s11
    e88079d8:	e80a8ce3          	beqz	s5,e8807870 <_vfiprintf_r+0x100>
    e88079dc:	bd91                	j	e8807830 <_vfiprintf_r+0xc0>
    e88079de:	77c6                	ld	a5,112(sp)
    e88079e0:	cb81                	beqz	a5,e88079f0 <_vfiprintf_r+0x280>
    e88079e2:	1090                	addi	a2,sp,96
    e88079e4:	85ce                	mv	a1,s3
    e88079e6:	8552                	mv	a0,s4
    e88079e8:	cd9ff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e88079ec:	00000013          	nop
    e88079f0:	0109d783          	lhu	a5,16(s3)
    e88079f4:	0407f793          	andi	a5,a5,64
    e88079f8:	20079fe3          	bnez	a5,e8808416 <_vfiprintf_r+0xca6>
    e88079fc:	60be                	ld	ra,456(sp)
    e88079fe:	641e                	ld	s0,448(sp)
    e8807a00:	6502                	ld	a0,0(sp)
    e8807a02:	74fa                	ld	s1,440(sp)
    e8807a04:	795a                	ld	s2,432(sp)
    e8807a06:	79ba                	ld	s3,424(sp)
    e8807a08:	7a1a                	ld	s4,416(sp)
    e8807a0a:	6afa                	ld	s5,408(sp)
    e8807a0c:	6b5a                	ld	s6,400(sp)
    e8807a0e:	6bba                	ld	s7,392(sp)
    e8807a10:	6c1a                	ld	s8,384(sp)
    e8807a12:	7cf6                	ld	s9,376(sp)
    e8807a14:	7d56                	ld	s10,368(sp)
    e8807a16:	7db6                	ld	s11,360(sp)
    e8807a18:	6179                	addi	sp,sp,464
    e8807a1a:	8082                	ret
    e8807a1c:	00098697          	auipc	a3,0x98
    e8807a20:	44468693          	addi	a3,a3,1092 # e889fe60 <TWO52+0x268>
    e8807a24:	e836                	sd	a3,16(sp)
    e8807a26:	66a2                	ld	a3,8(sp)
    e8807a28:	020d7613          	andi	a2,s10,32
    e8807a2c:	00868593          	addi	a1,a3,8
    e8807a30:	3c061d63          	bnez	a2,e8807e0a <_vfiprintf_r+0x69a>
    e8807a34:	010d7613          	andi	a2,s10,16
    e8807a38:	7e061963          	bnez	a2,e880822a <_vfiprintf_r+0xaba>
    e8807a3c:	66a2                	ld	a3,8(sp)
    e8807a3e:	040d7613          	andi	a2,s10,64
    e8807a42:	4280                	lw	s0,0(a3)
    e8807a44:	10060fe3          	beqz	a2,e8808362 <_vfiprintf_r+0xbf2>
    e8807a48:	3c04340b          	extu	s0,s0,15,0
    e8807a4c:	a6c1                	j	e8807e0c <_vfiprintf_r+0x69c>
    e8807a4e:	4901                	li	s2,0
    e8807a50:	981dc58b          	lbuia	a1,(s11),1,0
    e8807a54:	0029161b          	slliw	a2,s2,0x2
    e8807a58:	0126093b          	addw	s2,a2,s2
    e8807a5c:	fd07879b          	addiw	a5,a5,-48
    e8807a60:	0019191b          	slliw	s2,s2,0x1
    e8807a64:	fd05861b          	addiw	a2,a1,-48
    e8807a68:	0127893b          	addw	s2,a5,s2
    e8807a6c:	0005879b          	sext.w	a5,a1
    e8807a70:	fecaf0e3          	bgeu	s5,a2,e8807a50 <_vfiprintf_r+0x2e0>
    e8807a74:	fe07859b          	addiw	a1,a5,-32
    e8807a78:	e0b57fe3          	bgeu	a0,a1,e8807896 <_vfiprintf_r+0x126>
    e8807a7c:	d3ad                	beqz	a5,e88079de <_vfiprintf_r+0x26e>
    e8807a7e:	06f10c23          	sb	a5,120(sp)
    e8807a82:	04010ba3          	sb	zero,87(sp)
    e8807a86:	4405                	li	s0,1
    e8807a88:	4a85                	li	s5,1
    e8807a8a:	07810c13          	addi	s8,sp,120
    e8807a8e:	4c81                	li	s9,0
    e8807a90:	5626                	lw	a2,104(sp)
    e8807a92:	0024079b          	addiw	a5,s0,2
    e8807a96:	002d7e93          	andi	t4,s10,2
    e8807a9a:	2e81                	sext.w	t4,t4
    e8807a9c:	0016059b          	addiw	a1,a2,1
    e8807aa0:	084d7293          	andi	t0,s10,132
    e8807aa4:	43d7940b          	mvnez	s0,a5,t4
    e8807aa8:	852e                	mv	a0,a1
    e8807aaa:	77c6                	ld	a5,112(sp)
    e8807aac:	00029663          	bnez	t0,e8807ab8 <_vfiprintf_r+0x348>
    e8807ab0:	40890bbb          	subw	s7,s2,s0
    e8807ab4:	5d704063          	bgtz	s7,e8808074 <_vfiprintf_r+0x904>
    e8807ab8:	05714303          	lbu	t1,87(sp)
    e8807abc:	01070513          	addi	a0,a4,16
    e8807ac0:	02030163          	beqz	t1,e8807ae2 <_vfiprintf_r+0x372>
    e8807ac4:	05710613          	addi	a2,sp,87
    e8807ac8:	e310                	sd	a2,0(a4)
    e8807aca:	0785                	addi	a5,a5,1
    e8807acc:	4605                	li	a2,1
    e8807ace:	e710                	sd	a2,8(a4)
    e8807ad0:	f8be                	sd	a5,112(sp)
    e8807ad2:	d4ae                	sw	a1,104(sp)
    e8807ad4:	471d                	li	a4,7
    e8807ad6:	50b74563          	blt	a4,a1,e8807fe0 <_vfiprintf_r+0x870>
    e8807ada:	862e                	mv	a2,a1
    e8807adc:	872a                	mv	a4,a0
    e8807ade:	2585                	addiw	a1,a1,1
    e8807ae0:	0541                	addi	a0,a0,16
    e8807ae2:	020e8f63          	beqz	t4,e8807b20 <_vfiprintf_r+0x3b0>
    e8807ae6:	08b0                	addi	a2,sp,88
    e8807ae8:	e310                	sd	a2,0(a4)
    e8807aea:	0789                	addi	a5,a5,2
    e8807aec:	4609                	li	a2,2
    e8807aee:	e710                	sd	a2,8(a4)
    e8807af0:	f8be                	sd	a5,112(sp)
    e8807af2:	d4ae                	sw	a1,104(sp)
    e8807af4:	471d                	li	a4,7
    e8807af6:	52b75963          	bge	a4,a1,e8808028 <_vfiprintf_r+0x8b8>
    e8807afa:	6c078a63          	beqz	a5,e88081ce <_vfiprintf_r+0xa5e>
    e8807afe:	1090                	addi	a2,sp,96
    e8807b00:	85ce                	mv	a1,s3
    e8807b02:	8552                	mv	a0,s4
    e8807b04:	ec16                	sd	t0,24(sp)
    e8807b06:	bbbff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8807b0a:	ee0513e3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e8807b0e:	5626                	lw	a2,104(sp)
    e8807b10:	77c6                	ld	a5,112(sp)
    e8807b12:	62e2                	ld	t0,24(sp)
    e8807b14:	1988                	addi	a0,sp,240
    e8807b16:	0016059b          	addiw	a1,a2,1
    e8807b1a:	8726                	mv	a4,s1
    e8807b1c:	00000013          	nop
    e8807b20:	08000313          	li	t1,128
    e8807b24:	38628263          	beq	t0,t1,e8807ea8 <_vfiprintf_r+0x738>
    e8807b28:	415c8cbb          	subw	s9,s9,s5
    e8807b2c:	41904e63          	bgtz	s9,e8807f48 <_vfiprintf_r+0x7d8>
    e8807b30:	97d6                	add	a5,a5,s5
    e8807b32:	f9575c0b          	sdd	s8,s5,(a4),0,4
    e8807b36:	f8be                	sd	a5,112(sp)
    e8807b38:	d4ae                	sw	a1,104(sp)
    e8807b3a:	471d                	li	a4,7
    e8807b3c:	00b75d63          	bge	a4,a1,e8807b56 <_vfiprintf_r+0x3e6>
    e8807b40:	5a078e63          	beqz	a5,e88080fc <_vfiprintf_r+0x98c>
    e8807b44:	1090                	addi	a2,sp,96
    e8807b46:	85ce                	mv	a1,s3
    e8807b48:	8552                	mv	a0,s4
    e8807b4a:	b77ff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8807b4e:	ea0511e3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e8807b52:	77c6                	ld	a5,112(sp)
    e8807b54:	8526                	mv	a0,s1
    e8807b56:	004d7813          	andi	a6,s10,4
    e8807b5a:	00080663          	beqz	a6,e8807b66 <_vfiprintf_r+0x3f6>
    e8807b5e:	40890abb          	subw	s5,s2,s0
    e8807b62:	5b504763          	bgtz	s5,e8808110 <_vfiprintf_r+0x9a0>
    e8807b66:	00892733          	slt	a4,s2,s0
    e8807b6a:	40e9140b          	mveqz	s0,s2,a4
    e8807b6e:	6702                	ld	a4,0(sp)
    e8807b70:	9f21                	addw	a4,a4,s0
    e8807b72:	e03a                	sd	a4,0(sp)
    e8807b74:	44079a63          	bnez	a5,e8807fc8 <_vfiprintf_r+0x858>
    e8807b78:	d482                	sw	zero,104(sp)
    e8807b7a:	8726                	mv	a4,s1
    e8807b7c:	b161                	j	e8807804 <_vfiprintf_r+0x94>
    e8807b7e:	010d7793          	andi	a5,s10,16
    e8807b82:	68079d63          	bnez	a5,e880821c <_vfiprintf_r+0xaac>
    e8807b86:	66a2                	ld	a3,8(sp)
    e8807b88:	040d7793          	andi	a5,s10,64
    e8807b8c:	4280                	lw	s0,0(a3)
    e8807b8e:	7c078063          	beqz	a5,e880834e <_vfiprintf_r+0xbde>
    e8807b92:	3c04340b          	extu	s0,s0,15,0
    e8807b96:	e432                	sd	a2,8(sp)
    e8807b98:	836a                	mv	t1,s10
    e8807b9a:	4785                	li	a5,1
    e8807b9c:	bb1d                	j	e88078d2 <_vfiprintf_r+0x162>
    e8807b9e:	010d7793          	andi	a5,s10,16
    e8807ba2:	68079e63          	bnez	a5,e880823e <_vfiprintf_r+0xace>
    e8807ba6:	040d7793          	andi	a5,s10,64
    e8807baa:	7c078f63          	beqz	a5,e8808388 <_vfiprintf_r+0xc18>
    e8807bae:	67a2                	ld	a5,8(sp)
    e8807bb0:	00079403          	lh	s0,0(a5) # ffffffffffff8000 <__DRAM0_INF_BASE+0xffffffff00008000>
    e8807bb4:	87a2                	mv	a5,s0
    e8807bb6:	d807d6e3          	bgez	a5,e8807942 <_vfiprintf_r+0x1d2>
    e8807bba:	02d00793          	li	a5,45
    e8807bbe:	04f10ba3          	sb	a5,87(sp)
    e8807bc2:	e432                	sd	a2,8(sp)
    e8807bc4:	567d                	li	a2,-1
    e8807bc6:	40800433          	neg	s0,s0
    e8807bca:	836a                	mv	t1,s10
    e8807bcc:	4785                	li	a5,1
    e8807bce:	d0cc97e3          	bne	s9,a2,e88078dc <_vfiprintf_r+0x16c>
    e8807bd2:	0001                	nop
    e8807bd4:	00000013          	nop
    e8807bd8:	4605                	li	a2,1
    e8807bda:	46c78363          	beq	a5,a2,e8808040 <_vfiprintf_r+0x8d0>
    e8807bde:	4609                	li	a2,2
    e8807be0:	28c78463          	beq	a5,a2,e8807e68 <_vfiprintf_r+0x6f8>
    e8807be4:	09f0                	addi	a2,sp,220
    e8807be6:	a011                	j	e8807bea <_vfiprintf_r+0x47a>
    e8807be8:	8662                	mv	a2,s8
    e8807bea:	00747793          	andi	a5,s0,7
    e8807bee:	03078793          	addi	a5,a5,48
    e8807bf2:	fef60fa3          	sb	a5,-1(a2)
    e8807bf6:	800d                	srli	s0,s0,0x3
    e8807bf8:	fff60c13          	addi	s8,a2,-1
    e8807bfc:	f475                	bnez	s0,e8807be8 <_vfiprintf_r+0x478>
    e8807bfe:	00137593          	andi	a1,t1,1
    e8807c02:	28058063          	beqz	a1,e8807e82 <_vfiprintf_r+0x712>
    e8807c06:	03000593          	li	a1,48
    e8807c0a:	26b78c63          	beq	a5,a1,e8807e82 <_vfiprintf_r+0x712>
    e8807c0e:	1679                	addi	a2,a2,-2
    e8807c10:	09fc                	addi	a5,sp,220
    e8807c12:	40c78abb          	subw	s5,a5,a2
    e8807c16:	015ca7b3          	slt	a5,s9,s5
    e8807c1a:	86d6                	mv	a3,s5
    e8807c1c:	05714403          	lbu	s0,87(sp)
    e8807c20:	40fc968b          	mveqz	a3,s9,a5
    e8807c24:	0006879b          	sext.w	a5,a3
    e8807c28:	febc0fa3          	sb	a1,-1(s8)
    e8807c2c:	8c32                	mv	s8,a2
    e8807c2e:	0017861b          	addiw	a2,a5,1
    e8807c32:	4087960b          	mveqz	a2,a5,s0
    e8807c36:	8d1a                	mv	s10,t1
    e8807c38:	8432                	mv	s0,a2
    e8807c3a:	bd99                	j	e8807a90 <_vfiprintf_r+0x320>
    e8807c3c:	010d7793          	andi	a5,s10,16
    e8807c40:	5e079b63          	bnez	a5,e8808236 <_vfiprintf_r+0xac6>
    e8807c44:	66a2                	ld	a3,8(sp)
    e8807c46:	040d7793          	andi	a5,s10,64
    e8807c4a:	4280                	lw	s0,0(a3)
    e8807c4c:	72078463          	beqz	a5,e8808374 <_vfiprintf_r+0xc04>
    e8807c50:	3c04340b          	extu	s0,s0,15,0
    e8807c54:	b98d                	j	e88078c6 <_vfiprintf_r+0x156>
    e8807c56:	02b00793          	li	a5,43
    e8807c5a:	04f10ba3          	sb	a5,87(sp)
    e8807c5e:	000dc783          	lbu	a5,0(s11)
    e8807c62:	b11d                	j	e8807888 <_vfiprintf_r+0x118>
    e8807c64:	6ba2                	ld	s7,8(sp)
    e8807c66:	000dc783          	lbu	a5,0(s11)
    e8807c6a:	588bc90b          	lwia	s2,(s7),8,0
    e8807c6e:	e45e                	sd	s7,8(sp)
    e8807c70:	c0095ce3          	bgez	s2,e8807888 <_vfiprintf_r+0x118>
    e8807c74:	4120093b          	negw	s2,s2
    e8807c78:	2901                	sext.w	s2,s2
    e8807c7a:	a8dd                	j	e8807d70 <_vfiprintf_r+0x600>
    e8807c7c:	8552                	mv	a0,s4
    e8807c7e:	ec3a                	sd	a4,24(sp)
    e8807c80:	d41fc0ef          	jal	ra,e88049c0 <_localeconv_r>
    e8807c84:	651c                	ld	a5,8(a0)
    e8807c86:	853e                	mv	a0,a5
    e8807c88:	fc3e                	sd	a5,56(sp)
    e8807c8a:	edef80ef          	jal	ra,e8800368 <strlen>
    e8807c8e:	e0aa                	sd	a0,64(sp)
    e8807c90:	8baa                	mv	s7,a0
    e8807c92:	8552                	mv	a0,s4
    e8807c94:	d2dfc0ef          	jal	ra,e88049c0 <_localeconv_r>
    e8807c98:	6914                	ld	a3,16(a0)
    e8807c9a:	6762                	ld	a4,24(sp)
    e8807c9c:	f836                	sd	a3,48(sp)
    e8807c9e:	580b8863          	beqz	s7,e880822e <_vfiprintf_r+0xabe>
    e8807ca2:	000dc783          	lbu	a5,0(s11)
    e8807ca6:	be0681e3          	beqz	a3,e8807888 <_vfiprintf_r+0x118>
    e8807caa:	0006c583          	lbu	a1,0(a3)
    e8807cae:	400d6613          	ori	a2,s10,1024
    e8807cb2:	2601                	sext.w	a2,a2
    e8807cb4:	42b61d0b          	mvnez	s10,a2,a1
    e8807cb8:	bec1                	j	e8807888 <_vfiprintf_r+0x118>
    e8807cba:	001d6813          	ori	a6,s10,1
    e8807cbe:	00080d1b          	sext.w	s10,a6
    e8807cc2:	000dc783          	lbu	a5,0(s11)
    e8807cc6:	b6c9                	j	e8807888 <_vfiprintf_r+0x118>
    e8807cc8:	05714603          	lbu	a2,87(sp)
    e8807ccc:	000dc783          	lbu	a5,0(s11)
    e8807cd0:	ba061ce3          	bnez	a2,e8807888 <_vfiprintf_r+0x118>
    e8807cd4:	02000613          	li	a2,32
    e8807cd8:	04c10ba3          	sb	a2,87(sp)
    e8807cdc:	b675                	j	e8807888 <_vfiprintf_r+0x118>
    e8807cde:	6ba2                	ld	s7,8(sp)
    e8807ce0:	04010ba3          	sb	zero,87(sp)
    e8807ce4:	788bcc0b          	ldia	s8,(s7),8,0
    e8807ce8:	640c0263          	beqz	s8,e880832c <_vfiprintf_r+0xbbc>
    e8807cec:	57fd                	li	a5,-1
    e8807cee:	5efc8663          	beq	s9,a5,e88082da <_vfiprintf_r+0xb6a>
    e8807cf2:	8666                	mv	a2,s9
    e8807cf4:	4581                	li	a1,0
    e8807cf6:	8562                	mv	a0,s8
    e8807cf8:	e43a                	sd	a4,8(sp)
    e8807cfa:	33b730ef          	jal	ra,e887b834 <memchr>
    e8807cfe:	6722                	ld	a4,8(sp)
    e8807d00:	6e050363          	beqz	a0,e88083e6 <_vfiprintf_r+0xc76>
    e8807d04:	41850abb          	subw	s5,a0,s8
    e8807d08:	e45e                	sd	s7,8(sp)
    e8807d0a:	4c81                	li	s9,0
    e8807d0c:	beed                	j	e8807906 <_vfiprintf_r+0x196>
    e8807d0e:	6ba2                	ld	s7,8(sp)
    e8807d10:	04010ba3          	sb	zero,87(sp)
    e8807d14:	4405                	li	s0,1
    e8807d16:	588bc78b          	lwia	a5,(s7),8,0
    e8807d1a:	4a85                	li	s5,1
    e8807d1c:	07810c13          	addi	s8,sp,120
    e8807d20:	06f10c23          	sb	a5,120(sp)
    e8807d24:	e45e                	sd	s7,8(sp)
    e8807d26:	b3a5                	j	e8807a8e <_vfiprintf_r+0x31e>
    e8807d28:	866e                	mv	a2,s11
    e8807d2a:	9816478b          	lbuia	a5,(a2),1,0
    e8807d2e:	6e878f63          	beq	a5,s0,e880842c <_vfiprintf_r+0xcbc>
    e8807d32:	fd07859b          	addiw	a1,a5,-48
    e8807d36:	8db2                	mv	s11,a2
    e8807d38:	4c81                	li	s9,0
    e8807d3a:	b4baeae3          	bltu	s5,a1,e880788e <_vfiprintf_r+0x11e>
    e8807d3e:	0001                	nop
    e8807d40:	002c961b          	slliw	a2,s9,0x2
    e8807d44:	981dc78b          	lbuia	a5,(s11),1,0
    e8807d48:	019606bb          	addw	a3,a2,s9
    e8807d4c:	0016969b          	slliw	a3,a3,0x1
    e8807d50:	00b68cbb          	addw	s9,a3,a1
    e8807d54:	fd07859b          	addiw	a1,a5,-48
    e8807d58:	febaf4e3          	bgeu	s5,a1,e8807d40 <_vfiprintf_r+0x5d0>
    e8807d5c:	be0d                	j	e880788e <_vfiprintf_r+0x11e>
    e8807d5e:	080d6813          	ori	a6,s10,128
    e8807d62:	00080d1b          	sext.w	s10,a6
    e8807d66:	000dc783          	lbu	a5,0(s11)
    e8807d6a:	be39                	j	e8807888 <_vfiprintf_r+0x118>
    e8807d6c:	000dc783          	lbu	a5,0(s11)
    e8807d70:	004d6813          	ori	a6,s10,4
    e8807d74:	00080d1b          	sext.w	s10,a6
    e8807d78:	be01                	j	e8807888 <_vfiprintf_r+0x118>
    e8807d7a:	6622                	ld	a2,8(sp)
    e8807d7c:	020d7793          	andi	a5,s10,32
    e8807d80:	7886468b          	ldia	a3,(a2),8,0
    e8807d84:	e432                	sd	a2,8(sp)
    e8807d86:	e7f1                	bnez	a5,e8807e52 <_vfiprintf_r+0x6e2>
    e8807d88:	010d7793          	andi	a5,s10,16
    e8807d8c:	e3f9                	bnez	a5,e8807e52 <_vfiprintf_r+0x6e2>
    e8807d8e:	040d7793          	andi	a5,s10,64
    e8807d92:	62079963          	bnez	a5,e88083c4 <_vfiprintf_r+0xc54>
    e8807d96:	200d7813          	andi	a6,s10,512
    e8807d9a:	6782                	ld	a5,0(sp)
    e8807d9c:	68080363          	beqz	a6,e8808422 <_vfiprintf_r+0xcb2>
    e8807da0:	00f68023          	sb	a5,0(a3)
    e8807da4:	b485                	j	e8807804 <_vfiprintf_r+0x94>
    e8807da6:	0001                	nop
    e8807da8:	000dc783          	lbu	a5,0(s11)
    e8807dac:	06c00613          	li	a2,108
    e8807db0:	56c78563          	beq	a5,a2,e880831a <_vfiprintf_r+0xbaa>
    e8807db4:	010d6813          	ori	a6,s10,16
    e8807db8:	00080d1b          	sext.w	s10,a6
    e8807dbc:	b4f1                	j	e8807888 <_vfiprintf_r+0x118>
    e8807dbe:	020d6813          	ori	a6,s10,32
    e8807dc2:	00080d1b          	sext.w	s10,a6
    e8807dc6:	000dc783          	lbu	a5,0(s11)
    e8807dca:	bc7d                	j	e8807888 <_vfiprintf_r+0x118>
    e8807dcc:	6ba2                	ld	s7,8(sp)
    e8807dce:	04e15783          	lhu	a5,78(sp)
    e8807dd2:	002d6813          	ori	a6,s10,2
    e8807dd6:	788bc40b          	ldia	s0,(s7),8,0
    e8807dda:	04f11c23          	sh	a5,88(sp)
    e8807dde:	0009b797          	auipc	a5,0x9b
    e8807de2:	3ca78793          	addi	a5,a5,970 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e8807de6:	e83e                	sd	a5,16(sp)
    e8807de8:	0008031b          	sext.w	t1,a6
    e8807dec:	e45e                	sd	s7,8(sp)
    e8807dee:	4789                	li	a5,2
    e8807df0:	b4cd                	j	e88078d2 <_vfiprintf_r+0x162>
    e8807df2:	0009b697          	auipc	a3,0x9b
    e8807df6:	3b668693          	addi	a3,a3,950 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e8807dfa:	e836                	sd	a3,16(sp)
    e8807dfc:	66a2                	ld	a3,8(sp)
    e8807dfe:	020d7613          	andi	a2,s10,32
    e8807e02:	00868593          	addi	a1,a3,8
    e8807e06:	c20607e3          	beqz	a2,e8807a34 <_vfiprintf_r+0x2c4>
    e8807e0a:	6280                	ld	s0,0(a3)
    e8807e0c:	001d7613          	andi	a2,s10,1
    e8807e10:	ce01                	beqz	a2,e8807e28 <_vfiprintf_r+0x6b8>
    e8807e12:	c819                	beqz	s0,e8807e28 <_vfiprintf_r+0x6b8>
    e8807e14:	002d6813          	ori	a6,s10,2
    e8807e18:	03000613          	li	a2,48
    e8807e1c:	04c10c23          	sb	a2,88(sp)
    e8807e20:	04f10ca3          	sb	a5,89(sp)
    e8807e24:	00080d1b          	sext.w	s10,a6
    e8807e28:	bffd7813          	andi	a6,s10,-1025
    e8807e2c:	0008031b          	sext.w	t1,a6
    e8807e30:	e42e                	sd	a1,8(sp)
    e8807e32:	4789                	li	a5,2
    e8807e34:	bc79                	j	e88078d2 <_vfiprintf_r+0x162>
    e8807e36:	000dc783          	lbu	a5,0(s11)
    e8807e3a:	06800613          	li	a2,104
    e8807e3e:	4cc78563          	beq	a5,a2,e8808308 <_vfiprintf_r+0xb98>
    e8807e42:	040d6813          	ori	a6,s10,64
    e8807e46:	00080d1b          	sext.w	s10,a6
    e8807e4a:	bc3d                	j	e8807888 <_vfiprintf_r+0x118>
    e8807e4c:	805fa0ef          	jal	ra,e8802650 <__sinit>
    e8807e50:	b2b1                	j	e880779c <_vfiprintf_r+0x2c>
    e8807e52:	6782                	ld	a5,0(sp)
    e8807e54:	e29c                	sd	a5,0(a3)
    e8807e56:	b27d                	j	e8807804 <_vfiprintf_r+0x94>
    e8807e58:	4605                	li	a2,1
    e8807e5a:	5cc78263          	beq	a5,a2,e880841e <_vfiprintf_r+0xcae>
    e8807e5e:	4609                	li	a2,2
    e8807e60:	836a                	mv	t1,s10
    e8807e62:	d8c791e3          	bne	a5,a2,e8807be4 <_vfiprintf_r+0x474>
    e8807e66:	0001                	nop
    e8807e68:	0dc10c13          	addi	s8,sp,220
    e8807e6c:	00000013          	nop
    e8807e70:	66c2                	ld	a3,16(sp)
    e8807e72:	00f47793          	andi	a5,s0,15
    e8807e76:	8011                	srli	s0,s0,0x4
    e8807e78:	80f6c78b          	lrbu	a5,a3,a5,0
    e8807e7c:	09fc578b          	sbib	a5,(s8),-1,0
    e8807e80:	f865                	bnez	s0,e8807e70 <_vfiprintf_r+0x700>
    e8807e82:	09fc                	addi	a5,sp,220
    e8807e84:	41878abb          	subw	s5,a5,s8
    e8807e88:	015ca7b3          	slt	a5,s9,s5
    e8807e8c:	86d6                	mv	a3,s5
    e8807e8e:	05714403          	lbu	s0,87(sp)
    e8807e92:	40fc968b          	mveqz	a3,s9,a5
    e8807e96:	0006879b          	sext.w	a5,a3
    e8807e9a:	0017861b          	addiw	a2,a5,1
    e8807e9e:	4087960b          	mveqz	a2,a5,s0
    e8807ea2:	8d1a                	mv	s10,t1
    e8807ea4:	8432                	mv	s0,a2
    e8807ea6:	b6ed                	j	e8807a90 <_vfiprintf_r+0x320>
    e8807ea8:	4089033b          	subw	t1,s2,s0
    e8807eac:	c6605ee3          	blez	t1,e8807b28 <_vfiprintf_r+0x3b8>
    e8807eb0:	4ec1                	li	t4,16
    e8807eb2:	546edb63          	bge	t4,t1,e8808408 <_vfiprintf_r+0xc98>
    e8807eb6:	00097b97          	auipc	s7,0x97
    e8807eba:	752b8b93          	addi	s7,s7,1874 # e889f608 <zeroes.4567>
    e8807ebe:	4f9d                	li	t6,7
    e8807ec0:	a809                	j	e8807ed2 <_vfiprintf_r+0x762>
    e8807ec2:	0001                	nop
    e8807ec4:	0026029b          	addiw	t0,a2,2
    e8807ec8:	0741                	addi	a4,a4,16
    e8807eca:	862e                	mv	a2,a1
    e8807ecc:	3341                	addiw	t1,t1,-16
    e8807ece:	046ed063          	bge	t4,t1,e8807f0e <_vfiprintf_r+0x79e>
    e8807ed2:	0016059b          	addiw	a1,a2,1
    e8807ed6:	07c1                	addi	a5,a5,16
    e8807ed8:	f9d75b8b          	sdd	s7,t4,(a4),0,4
    e8807edc:	f8be                	sd	a5,112(sp)
    e8807ede:	d4ae                	sw	a1,104(sp)
    e8807ee0:	febfd2e3          	bge	t6,a1,e8807ec4 <_vfiprintf_r+0x754>
    e8807ee4:	0e078a63          	beqz	a5,e8807fd8 <_vfiprintf_r+0x868>
    e8807ee8:	1090                	addi	a2,sp,96
    e8807eea:	85ce                	mv	a1,s3
    e8807eec:	8552                	mv	a0,s4
    e8807eee:	ec1a                	sd	t1,24(sp)
    e8807ef0:	fd0ff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8807ef4:	ae051ee3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e8807ef8:	6362                	ld	t1,24(sp)
    e8807efa:	5626                	lw	a2,104(sp)
    e8807efc:	4ec1                	li	t4,16
    e8807efe:	3341                	addiw	t1,t1,-16
    e8807f00:	77c6                	ld	a5,112(sp)
    e8807f02:	8726                	mv	a4,s1
    e8807f04:	0016029b          	addiw	t0,a2,1
    e8807f08:	4f9d                	li	t6,7
    e8807f0a:	fc6ec4e3          	blt	t4,t1,e8807ed2 <_vfiprintf_r+0x762>
    e8807f0e:	01070e93          	addi	t4,a4,16
    e8807f12:	979a                	add	a5,a5,t1
    e8807f14:	f8675b8b          	sdd	s7,t1,(a4),0,4
    e8807f18:	f8be                	sd	a5,112(sp)
    e8807f1a:	d496                	sw	t0,104(sp)
    e8807f1c:	471d                	li	a4,7
    e8807f1e:	2e575863          	bge	a4,t0,e880820e <_vfiprintf_r+0xa9e>
    e8807f22:	48078263          	beqz	a5,e88083a6 <_vfiprintf_r+0xc36>
    e8807f26:	1090                	addi	a2,sp,96
    e8807f28:	85ce                	mv	a1,s3
    e8807f2a:	8552                	mv	a0,s4
    e8807f2c:	f94ff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8807f30:	ac0510e3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e8807f34:	5626                	lw	a2,104(sp)
    e8807f36:	415c8cbb          	subw	s9,s9,s5
    e8807f3a:	77c6                	ld	a5,112(sp)
    e8807f3c:	1988                	addi	a0,sp,240
    e8807f3e:	0016059b          	addiw	a1,a2,1
    e8807f42:	8726                	mv	a4,s1
    e8807f44:	bf9056e3          	blez	s9,e8807b30 <_vfiprintf_r+0x3c0>
    e8807f48:	46c1                	li	a3,16
    e8807f4a:	4596d863          	bge	a3,s9,e880839a <_vfiprintf_r+0xc2a>
    e8807f4e:	00097b97          	auipc	s7,0x97
    e8807f52:	6bab8b93          	addi	s7,s7,1722 # e889f608 <zeroes.4567>
    e8807f56:	4ec1                	li	t4,16
    e8807f58:	4f9d                	li	t6,7
    e8807f5a:	a801                	j	e8807f6a <_vfiprintf_r+0x7fa>
    e8807f5c:	0026059b          	addiw	a1,a2,2
    e8807f60:	0741                	addi	a4,a4,16
    e8807f62:	8636                	mv	a2,a3
    e8807f64:	3cc1                	addiw	s9,s9,-16
    e8807f66:	039edd63          	bge	t4,s9,e8807fa0 <_vfiprintf_r+0x830>
    e8807f6a:	0016069b          	addiw	a3,a2,1
    e8807f6e:	07c1                	addi	a5,a5,16
    e8807f70:	f9d75b8b          	sdd	s7,t4,(a4),0,4
    e8807f74:	f8be                	sd	a5,112(sp)
    e8807f76:	d4b6                	sw	a3,104(sp)
    e8807f78:	fedfd2e3          	bge	t6,a3,e8807f5c <_vfiprintf_r+0x7ec>
    e8807f7c:	c3b1                	beqz	a5,e8807fc0 <_vfiprintf_r+0x850>
    e8807f7e:	1090                	addi	a2,sp,96
    e8807f80:	85ce                	mv	a1,s3
    e8807f82:	8552                	mv	a0,s4
    e8807f84:	f3cff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8807f88:	a60514e3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e8807f8c:	5626                	lw	a2,104(sp)
    e8807f8e:	4ec1                	li	t4,16
    e8807f90:	3cc1                	addiw	s9,s9,-16
    e8807f92:	77c6                	ld	a5,112(sp)
    e8807f94:	8726                	mv	a4,s1
    e8807f96:	0016059b          	addiw	a1,a2,1
    e8807f9a:	4f9d                	li	t6,7
    e8807f9c:	fd9ec7e3          	blt	t4,s9,e8807f6a <_vfiprintf_r+0x7fa>
    e8807fa0:	01070693          	addi	a3,a4,16
    e8807fa4:	97e6                	add	a5,a5,s9
    e8807fa6:	f9975b8b          	sdd	s7,s9,(a4),0,4
    e8807faa:	f8be                	sd	a5,112(sp)
    e8807fac:	d4ae                	sw	a1,104(sp)
    e8807fae:	471d                	li	a4,7
    e8807fb0:	1eb74c63          	blt	a4,a1,e88081a8 <_vfiprintf_r+0xa38>
    e8807fb4:	2585                	addiw	a1,a1,1
    e8807fb6:	01068513          	addi	a0,a3,16
    e8807fba:	8736                	mv	a4,a3
    e8807fbc:	be95                	j	e8807b30 <_vfiprintf_r+0x3c0>
    e8807fbe:	0001                	nop
    e8807fc0:	4585                	li	a1,1
    e8807fc2:	4601                	li	a2,0
    e8807fc4:	8726                	mv	a4,s1
    e8807fc6:	bf79                	j	e8807f64 <_vfiprintf_r+0x7f4>
    e8807fc8:	1090                	addi	a2,sp,96
    e8807fca:	85ce                	mv	a1,s3
    e8807fcc:	8552                	mv	a0,s4
    e8807fce:	ef2ff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8807fd2:	ba0503e3          	beqz	a0,e8807b78 <_vfiprintf_r+0x408>
    e8807fd6:	bc29                	j	e88079f0 <_vfiprintf_r+0x280>
    e8807fd8:	4285                	li	t0,1
    e8807fda:	4601                	li	a2,0
    e8807fdc:	8726                	mv	a4,s1
    e8807fde:	b5fd                	j	e8807ecc <_vfiprintf_r+0x75c>
    e8807fe0:	1e078c63          	beqz	a5,e88081d8 <_vfiprintf_r+0xa68>
    e8807fe4:	1090                	addi	a2,sp,96
    e8807fe6:	85ce                	mv	a1,s3
    e8807fe8:	8552                	mv	a0,s4
    e8807fea:	f016                	sd	t0,32(sp)
    e8807fec:	ec76                	sd	t4,24(sp)
    e8807fee:	ed2ff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8807ff2:	9e051fe3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e8807ff6:	5626                	lw	a2,104(sp)
    e8807ff8:	77c6                	ld	a5,112(sp)
    e8807ffa:	1988                	addi	a0,sp,240
    e8807ffc:	0016059b          	addiw	a1,a2,1
    e8808000:	8726                	mv	a4,s1
    e8808002:	7282                	ld	t0,32(sp)
    e8808004:	6ee2                	ld	t4,24(sp)
    e8808006:	bcf1                	j	e8807ae2 <_vfiprintf_r+0x372>
    e8808008:	1e079263          	bnez	a5,e88081ec <_vfiprintf_r+0xa7c>
    e880800c:	05714703          	lbu	a4,87(sp)
    e8808010:	3a071163          	bnez	a4,e88083b2 <_vfiprintf_r+0xc42>
    e8808014:	1c0e8463          	beqz	t4,e88081dc <_vfiprintf_r+0xa6c>
    e8808018:	08bc                	addi	a5,sp,88
    e880801a:	f1be                	sd	a5,224(sp)
    e880801c:	4789                	li	a5,2
    e880801e:	f5be                	sd	a5,232(sp)
    e8808020:	1988                	addi	a0,sp,240
    e8808022:	4585                	li	a1,1
    e8808024:	00000013          	nop
    e8808028:	872a                	mv	a4,a0
    e880802a:	862e                	mv	a2,a1
    e880802c:	0016059b          	addiw	a1,a2,1
    e8808030:	01070513          	addi	a0,a4,16
    e8808034:	b4f5                	j	e8807b20 <_vfiprintf_r+0x3b0>
    e8808036:	0001                	nop
    e8808038:	4605                	li	a2,1
    e880803a:	836a                	mv	t1,s10
    e880803c:	bac791e3          	bne	a5,a2,e8807bde <_vfiprintf_r+0x46e>
    e8808040:	47a5                	li	a5,9
    e8808042:	2087ee63          	bltu	a5,s0,e880825e <_vfiprintf_r+0xaee>
    e8808046:	0304041b          	addiw	s0,s0,48
    e880804a:	4a85                	li	s5,1
    e880804c:	015ca7b3          	slt	a5,s9,s5
    e8808050:	86d6                	mv	a3,s5
    e8808052:	0c810da3          	sb	s0,219(sp)
    e8808056:	40fc968b          	mveqz	a3,s9,a5
    e880805a:	05714403          	lbu	s0,87(sp)
    e880805e:	0006879b          	sext.w	a5,a3
    e8808062:	0017861b          	addiw	a2,a5,1
    e8808066:	4087960b          	mveqz	a2,a5,s0
    e880806a:	8d1a                	mv	s10,t1
    e880806c:	0db10c13          	addi	s8,sp,219
    e8808070:	8432                	mv	s0,a2
    e8808072:	bc39                	j	e8807a90 <_vfiprintf_r+0x320>
    e8808074:	4f41                	li	t5,16
    e8808076:	377f5d63          	bge	t5,s7,e88083f0 <_vfiprintf_r+0xc80>
    e880807a:	00097f17          	auipc	t5,0x97
    e880807e:	57ef0f13          	addi	t5,t5,1406 # e889f5f8 <blanks.4566>
    e8808082:	4fc1                	li	t6,16
    e8808084:	439d                	li	t2,7
    e8808086:	a811                	j	e880809a <_vfiprintf_r+0x92a>
    e8808088:	0026051b          	addiw	a0,a2,2
    e880808c:	0741                	addi	a4,a4,16
    e880808e:	862e                	mv	a2,a1
    e8808090:	3bc1                	addiw	s7,s7,-16
    e8808092:	057fd463          	bge	t6,s7,e88080da <_vfiprintf_r+0x96a>
    e8808096:	0016051b          	addiw	a0,a2,1
    e880809a:	07c1                	addi	a5,a5,16
    e880809c:	f9f75f0b          	sdd	t5,t6,(a4),0,4
    e88080a0:	f8be                	sd	a5,112(sp)
    e88080a2:	d4aa                	sw	a0,104(sp)
    e88080a4:	85aa                	mv	a1,a0
    e88080a6:	fea3d1e3          	bge	t2,a0,e8808088 <_vfiprintf_r+0x918>
    e88080aa:	c7a9                	beqz	a5,e88080f4 <_vfiprintf_r+0x984>
    e88080ac:	1090                	addi	a2,sp,96
    e88080ae:	85ce                	mv	a1,s3
    e88080b0:	8552                	mv	a0,s4
    e88080b2:	f47a                	sd	t5,40(sp)
    e88080b4:	f016                	sd	t0,32(sp)
    e88080b6:	ec76                	sd	t4,24(sp)
    e88080b8:	e08ff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e88080bc:	92051ae3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e88080c0:	5626                	lw	a2,104(sp)
    e88080c2:	4fc1                	li	t6,16
    e88080c4:	3bc1                	addiw	s7,s7,-16
    e88080c6:	77c6                	ld	a5,112(sp)
    e88080c8:	8726                	mv	a4,s1
    e88080ca:	0016051b          	addiw	a0,a2,1
    e88080ce:	7f22                	ld	t5,40(sp)
    e88080d0:	439d                	li	t2,7
    e88080d2:	7282                	ld	t0,32(sp)
    e88080d4:	6ee2                	ld	t4,24(sp)
    e88080d6:	fd7fc0e3          	blt	t6,s7,e8808096 <_vfiprintf_r+0x926>
    e88080da:	97de                	add	a5,a5,s7
    e88080dc:	f9775f0b          	sdd	t5,s7,(a4),0,4
    e88080e0:	f8be                	sd	a5,112(sp)
    e88080e2:	d4aa                	sw	a0,104(sp)
    e88080e4:	461d                	li	a2,7
    e88080e6:	f2a641e3          	blt	a2,a0,e8808008 <_vfiprintf_r+0x898>
    e88080ea:	0741                	addi	a4,a4,16
    e88080ec:	0015059b          	addiw	a1,a0,1
    e88080f0:	862a                	mv	a2,a0
    e88080f2:	b2d9                	j	e8807ab8 <_vfiprintf_r+0x348>
    e88080f4:	4601                	li	a2,0
    e88080f6:	4505                	li	a0,1
    e88080f8:	8726                	mv	a4,s1
    e88080fa:	bf59                	j	e8808090 <_vfiprintf_r+0x920>
    e88080fc:	d482                	sw	zero,104(sp)
    e88080fe:	004d7813          	andi	a6,s10,4
    e8808102:	08080b63          	beqz	a6,e8808198 <_vfiprintf_r+0xa28>
    e8808106:	40890abb          	subw	s5,s2,s0
    e880810a:	09505763          	blez	s5,e8808198 <_vfiprintf_r+0xa28>
    e880810e:	8526                	mv	a0,s1
    e8808110:	4741                	li	a4,16
    e8808112:	56a6                	lw	a3,104(sp)
    e8808114:	2f575363          	bge	a4,s5,e88083fa <_vfiprintf_r+0xc8a>
    e8808118:	00097f17          	auipc	t5,0x97
    e880811c:	4e0f0f13          	addi	t5,t5,1248 # e889f5f8 <blanks.4566>
    e8808120:	4cc1                	li	s9,16
    e8808122:	4c1d                	li	s8,7
    e8808124:	a809                	j	e8808136 <_vfiprintf_r+0x9c6>
    e8808126:	0001                	nop
    e8808128:	0026861b          	addiw	a2,a3,2
    e880812c:	0541                	addi	a0,a0,16
    e880812e:	86ba                	mv	a3,a4
    e8808130:	3ac1                	addiw	s5,s5,-16
    e8808132:	035cdd63          	bge	s9,s5,e880816c <_vfiprintf_r+0x9fc>
    e8808136:	0016871b          	addiw	a4,a3,1
    e880813a:	07c1                	addi	a5,a5,16
    e880813c:	f9955f0b          	sdd	t5,s9,(a0),0,4
    e8808140:	f8be                	sd	a5,112(sp)
    e8808142:	d4ba                	sw	a4,104(sp)
    e8808144:	feec52e3          	bge	s8,a4,e8808128 <_vfiprintf_r+0x9b8>
    e8808148:	c7a1                	beqz	a5,e8808190 <_vfiprintf_r+0xa20>
    e880814a:	1090                	addi	a2,sp,96
    e880814c:	85ce                	mv	a1,s3
    e880814e:	8552                	mv	a0,s4
    e8808150:	ec7a                	sd	t5,24(sp)
    e8808152:	d6eff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8808156:	88051de3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e880815a:	56a6                	lw	a3,104(sp)
    e880815c:	3ac1                	addiw	s5,s5,-16
    e880815e:	77c6                	ld	a5,112(sp)
    e8808160:	8526                	mv	a0,s1
    e8808162:	0016861b          	addiw	a2,a3,1
    e8808166:	6f62                	ld	t5,24(sp)
    e8808168:	fd5cc7e3          	blt	s9,s5,e8808136 <_vfiprintf_r+0x9c6>
    e880816c:	97d6                	add	a5,a5,s5
    e880816e:	f9555f0b          	sdd	t5,s5,(a0),0,4
    e8808172:	f8be                	sd	a5,112(sp)
    e8808174:	d4b2                	sw	a2,104(sp)
    e8808176:	471d                	li	a4,7
    e8808178:	9ec757e3          	bge	a4,a2,e8807b66 <_vfiprintf_r+0x3f6>
    e880817c:	cf91                	beqz	a5,e8808198 <_vfiprintf_r+0xa28>
    e880817e:	1090                	addi	a2,sp,96
    e8808180:	85ce                	mv	a1,s3
    e8808182:	8552                	mv	a0,s4
    e8808184:	d3cff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e8808188:	860514e3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e880818c:	77c6                	ld	a5,112(sp)
    e880818e:	bae1                	j	e8807b66 <_vfiprintf_r+0x3f6>
    e8808190:	4605                	li	a2,1
    e8808192:	4681                	li	a3,0
    e8808194:	8526                	mv	a0,s1
    e8808196:	bf69                	j	e8808130 <_vfiprintf_r+0x9c0>
    e8808198:	008927b3          	slt	a5,s2,s0
    e880819c:	40f9140b          	mveqz	s0,s2,a5
    e88081a0:	6782                	ld	a5,0(sp)
    e88081a2:	9fa1                	addw	a5,a5,s0
    e88081a4:	e03e                	sd	a5,0(sp)
    e88081a6:	bac9                	j	e8807b78 <_vfiprintf_r+0x408>
    e88081a8:	14078463          	beqz	a5,e88082f0 <_vfiprintf_r+0xb80>
    e88081ac:	1090                	addi	a2,sp,96
    e88081ae:	85ce                	mv	a1,s3
    e88081b0:	8552                	mv	a0,s4
    e88081b2:	d0eff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e88081b6:	82051de3          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e88081ba:	55a6                	lw	a1,104(sp)
    e88081bc:	77c6                	ld	a5,112(sp)
    e88081be:	1988                	addi	a0,sp,240
    e88081c0:	2585                	addiw	a1,a1,1
    e88081c2:	8726                	mv	a4,s1
    e88081c4:	b2b5                	j	e8807b30 <_vfiprintf_r+0x3c0>
    e88081c6:	d482                	sw	zero,104(sp)
    e88081c8:	8726                	mv	a4,s1
    e88081ca:	e96ff06f          	j	e8807860 <_vfiprintf_r+0xf0>
    e88081ce:	1988                	addi	a0,sp,240
    e88081d0:	4585                	li	a1,1
    e88081d2:	4601                	li	a2,0
    e88081d4:	8726                	mv	a4,s1
    e88081d6:	b2a9                	j	e8807b20 <_vfiprintf_r+0x3b0>
    e88081d8:	060e9863          	bnez	t4,e8808248 <_vfiprintf_r+0xad8>
    e88081dc:	4601                	li	a2,0
    e88081de:	1988                	addi	a0,sp,240
    e88081e0:	4585                	li	a1,1
    e88081e2:	8726                	mv	a4,s1
    e88081e4:	ba35                	j	e8807b20 <_vfiprintf_r+0x3b0>
    e88081e6:	896e                	mv	s2,s11
    e88081e8:	e88ff06f          	j	e8807870 <_vfiprintf_r+0x100>
    e88081ec:	1090                	addi	a2,sp,96
    e88081ee:	85ce                	mv	a1,s3
    e88081f0:	8552                	mv	a0,s4
    e88081f2:	f016                	sd	t0,32(sp)
    e88081f4:	ec76                	sd	t4,24(sp)
    e88081f6:	ccaff0ef          	jal	ra,e88076c0 <__sprint_r.part.0>
    e88081fa:	fe051b63          	bnez	a0,e88079f0 <_vfiprintf_r+0x280>
    e88081fe:	5626                	lw	a2,104(sp)
    e8808200:	77c6                	ld	a5,112(sp)
    e8808202:	8726                	mv	a4,s1
    e8808204:	0016059b          	addiw	a1,a2,1
    e8808208:	7282                	ld	t0,32(sp)
    e880820a:	6ee2                	ld	t4,24(sp)
    e880820c:	b075                	j	e8807ab8 <_vfiprintf_r+0x348>
    e880820e:	0012859b          	addiw	a1,t0,1
    e8808212:	010e8513          	addi	a0,t4,16
    e8808216:	8616                	mv	a2,t0
    e8808218:	8776                	mv	a4,t4
    e880821a:	b239                	j	e8807b28 <_vfiprintf_r+0x3b8>
    e880821c:	67a2                	ld	a5,8(sp)
    e880821e:	836a                	mv	t1,s10
    e8808220:	e432                	sd	a2,8(sp)
    e8808222:	6380                	ld	s0,0(a5)
    e8808224:	4785                	li	a5,1
    e8808226:	eacff06f          	j	e88078d2 <_vfiprintf_r+0x162>
    e880822a:	66a2                	ld	a3,8(sp)
    e880822c:	bef9                	j	e8807e0a <_vfiprintf_r+0x69a>
    e880822e:	000dc783          	lbu	a5,0(s11)
    e8808232:	e56ff06f          	j	e8807888 <_vfiprintf_r+0x118>
    e8808236:	67a2                	ld	a5,8(sp)
    e8808238:	6380                	ld	s0,0(a5)
    e880823a:	e8cff06f          	j	e88078c6 <_vfiprintf_r+0x156>
    e880823e:	67a2                	ld	a5,8(sp)
    e8808240:	639c                	ld	a5,0(a5)
    e8808242:	843e                	mv	s0,a5
    e8808244:	efaff06f          	j	e880793e <_vfiprintf_r+0x1ce>
    e8808248:	08bc                	addi	a5,sp,88
    e880824a:	f1be                	sd	a5,224(sp)
    e880824c:	4789                	li	a5,2
    e880824e:	f5be                	sd	a5,232(sp)
    e8808250:	1998                	addi	a4,sp,240
    e8808252:	4605                	li	a2,1
    e8808254:	bbe1                	j	e880802c <_vfiprintf_r+0x8bc>
    e8808256:	e432                	sd	a2,8(sp)
    e8808258:	47a5                	li	a5,9
    e880825a:	de87f6e3          	bgeu	a5,s0,e8808046 <_vfiprintf_r+0x8d6>
    e880825e:	40037813          	andi	a6,t1,1024
    e8808262:	2801                	sext.w	a6,a6
    e8808264:	4581                	li	a1,0
    e8808266:	09f0                	addi	a2,sp,220
    e8808268:	4aa9                	li	s5,10
    e880826a:	4d25                	li	s10,9
    e880826c:	0ff00b93          	li	s7,255
    e8808270:	a801                	j	e8808280 <_vfiprintf_r+0xb10>
    e8808272:	0001                	nop
    e8808274:	035457b3          	divu	a5,s0,s5
    e8808278:	c08d75e3          	bgeu	s10,s0,e8807e82 <_vfiprintf_r+0x712>
    e880827c:	843e                	mv	s0,a5
    e880827e:	8662                	mv	a2,s8
    e8808280:	fff60c13          	addi	s8,a2,-1
    e8808284:	2585                	addiw	a1,a1,1
    e8808286:	035477b3          	remu	a5,s0,s5
    e880828a:	0307879b          	addiw	a5,a5,48
    e880828e:	fef60fa3          	sb	a5,-1(a2)
    e8808292:	fe0801e3          	beqz	a6,e8808274 <_vfiprintf_r+0xb04>
    e8808296:	77c2                	ld	a5,48(sp)
    e8808298:	0007c783          	lbu	a5,0(a5)
    e880829c:	fcb79ce3          	bne	a5,a1,e8808274 <_vfiprintf_r+0xb04>
    e88082a0:	fd778ae3          	beq	a5,s7,e8808274 <_vfiprintf_r+0xb04>
    e88082a4:	bc8d7fe3          	bgeu	s10,s0,e8807e82 <_vfiprintf_r+0x712>
    e88082a8:	6786                	ld	a5,64(sp)
    e88082aa:	75e2                	ld	a1,56(sp)
    e88082ac:	f442                	sd	a6,40(sp)
    e88082ae:	40fc0c33          	sub	s8,s8,a5
    e88082b2:	863e                	mv	a2,a5
    e88082b4:	8562                	mv	a0,s8
    e88082b6:	f03a                	sd	a4,32(sp)
    e88082b8:	ec1a                	sd	t1,24(sp)
    e88082ba:	897fd0ef          	jal	ra,e8805b50 <strncpy>
    e88082be:	7742                	ld	a4,48(sp)
    e88082c0:	035457b3          	divu	a5,s0,s5
    e88082c4:	4581                	li	a1,0
    e88082c6:	00174603          	lbu	a2,1(a4)
    e88082ca:	6362                	ld	t1,24(sp)
    e88082cc:	00c03633          	snez	a2,a2
    e88082d0:	9732                	add	a4,a4,a2
    e88082d2:	f83a                	sd	a4,48(sp)
    e88082d4:	fd01470b          	ldd	a4,a6,(sp),2,4
    e88082d8:	b755                	j	e880827c <_vfiprintf_r+0xb0c>
    e88082da:	8562                	mv	a0,s8
    e88082dc:	ec3a                	sd	a4,24(sp)
    e88082de:	88af80ef          	jal	ra,e8800368 <strlen>
    e88082e2:	00050a9b          	sext.w	s5,a0
    e88082e6:	e45e                	sd	s7,8(sp)
    e88082e8:	4c81                	li	s9,0
    e88082ea:	6762                	ld	a4,24(sp)
    e88082ec:	e1aff06f          	j	e8807906 <_vfiprintf_r+0x196>
    e88082f0:	4705                	li	a4,1
    e88082f2:	87d6                	mv	a5,s5
    e88082f4:	f1e2                	sd	s8,224(sp)
    e88082f6:	f5d6                	sd	s5,232(sp)
    e88082f8:	f8d6                	sd	s5,112(sp)
    e88082fa:	d4ba                	sw	a4,104(sp)
    e88082fc:	1988                	addi	a0,sp,240
    e88082fe:	859ff06f          	j	e8807b56 <_vfiprintf_r+0x3e6>
    e8808302:	836a                	mv	t1,s10
    e8808304:	e432                	sd	a2,8(sp)
    e8808306:	bb2d                	j	e8808040 <_vfiprintf_r+0x8d0>
    e8808308:	200d6813          	ori	a6,s10,512
    e880830c:	001dc783          	lbu	a5,1(s11)
    e8808310:	00080d1b          	sext.w	s10,a6
    e8808314:	0d85                	addi	s11,s11,1
    e8808316:	d72ff06f          	j	e8807888 <_vfiprintf_r+0x118>
    e880831a:	020d6813          	ori	a6,s10,32
    e880831e:	001dc783          	lbu	a5,1(s11)
    e8808322:	00080d1b          	sext.w	s10,a6
    e8808326:	0d85                	addi	s11,s11,1
    e8808328:	d60ff06f          	j	e8807888 <_vfiprintf_r+0x118>
    e880832c:	4799                	li	a5,6
    e880832e:	000c8a9b          	sext.w	s5,s9
    e8808332:	0157bab3          	sltu	s5,a5,s5
    e8808336:	415c978b          	mveqz	a5,s9,s5
    e880833a:	00078a9b          	sext.w	s5,a5
    e880833e:	8456                	mv	s0,s5
    e8808340:	e45e                	sd	s7,8(sp)
    e8808342:	000ccc17          	auipc	s8,0xcc
    e8808346:	aaec0c13          	addi	s8,s8,-1362 # e88d3df0 <dhcp_discover_request_options+0x5e8>
    e880834a:	f44ff06f          	j	e8807a8e <_vfiprintf_r+0x31e>
    e880834e:	200d7793          	andi	a5,s10,512
    e8808352:	c3d9                	beqz	a5,e88083d8 <_vfiprintf_r+0xc68>
    e8808354:	0ff47413          	andi	s0,s0,255
    e8808358:	e432                	sd	a2,8(sp)
    e880835a:	836a                	mv	t1,s10
    e880835c:	4785                	li	a5,1
    e880835e:	d74ff06f          	j	e88078d2 <_vfiprintf_r+0x162>
    e8808362:	0ff47513          	andi	a0,s0,255
    e8808366:	200d7613          	andi	a2,s10,512
    e880836a:	7c04340b          	extu	s0,s0,31,0
    e880836e:	42c5140b          	mvnez	s0,a0,a2
    e8808372:	bc69                	j	e8807e0c <_vfiprintf_r+0x69c>
    e8808374:	0ff47593          	andi	a1,s0,255
    e8808378:	200d7793          	andi	a5,s10,512
    e880837c:	7c04340b          	extu	s0,s0,31,0
    e8808380:	42f5940b          	mvnez	s0,a1,a5
    e8808384:	d42ff06f          	j	e88078c6 <_vfiprintf_r+0x156>
    e8808388:	200d7793          	andi	a5,s10,512
    e880838c:	c3a9                	beqz	a5,e88083ce <_vfiprintf_r+0xc5e>
    e880838e:	67a2                	ld	a5,8(sp)
    e8808390:	00078403          	lb	s0,0(a5)
    e8808394:	87a2                	mv	a5,s0
    e8808396:	da8ff06f          	j	e880793e <_vfiprintf_r+0x1ce>
    e880839a:	86aa                	mv	a3,a0
    e880839c:	00097b97          	auipc	s7,0x97
    e88083a0:	26cb8b93          	addi	s7,s7,620 # e889f608 <zeroes.4567>
    e88083a4:	b101                	j	e8807fa4 <_vfiprintf_r+0x834>
    e88083a6:	1988                	addi	a0,sp,240
    e88083a8:	4585                	li	a1,1
    e88083aa:	4601                	li	a2,0
    e88083ac:	8726                	mv	a4,s1
    e88083ae:	f7aff06f          	j	e8807b28 <_vfiprintf_r+0x3b8>
    e88083b2:	05710793          	addi	a5,sp,87
    e88083b6:	f1be                	sd	a5,224(sp)
    e88083b8:	4785                	li	a5,1
    e88083ba:	f5be                	sd	a5,232(sp)
    e88083bc:	4585                	li	a1,1
    e88083be:	1988                	addi	a0,sp,240
    e88083c0:	f1aff06f          	j	e8807ada <_vfiprintf_r+0x36a>
    e88083c4:	6782                	ld	a5,0(sp)
    e88083c6:	00f69023          	sh	a5,0(a3)
    e88083ca:	c3aff06f          	j	e8807804 <_vfiprintf_r+0x94>
    e88083ce:	67a2                	ld	a5,8(sp)
    e88083d0:	4380                	lw	s0,0(a5)
    e88083d2:	87a2                	mv	a5,s0
    e88083d4:	d6aff06f          	j	e880793e <_vfiprintf_r+0x1ce>
    e88083d8:	7c04340b          	extu	s0,s0,31,0
    e88083dc:	e432                	sd	a2,8(sp)
    e88083de:	836a                	mv	t1,s10
    e88083e0:	4785                	li	a5,1
    e88083e2:	cf0ff06f          	j	e88078d2 <_vfiprintf_r+0x162>
    e88083e6:	8ae6                	mv	s5,s9
    e88083e8:	e45e                	sd	s7,8(sp)
    e88083ea:	4c81                	li	s9,0
    e88083ec:	d1aff06f          	j	e8807906 <_vfiprintf_r+0x196>
    e88083f0:	00097f17          	auipc	t5,0x97
    e88083f4:	208f0f13          	addi	t5,t5,520 # e889f5f8 <blanks.4566>
    e88083f8:	b1cd                	j	e88080da <_vfiprintf_r+0x96a>
    e88083fa:	0016861b          	addiw	a2,a3,1
    e88083fe:	00097f17          	auipc	t5,0x97
    e8808402:	1faf0f13          	addi	t5,t5,506 # e889f5f8 <blanks.4566>
    e8808406:	b39d                	j	e880816c <_vfiprintf_r+0x9fc>
    e8808408:	8eaa                	mv	t4,a0
    e880840a:	82ae                	mv	t0,a1
    e880840c:	00097b97          	auipc	s7,0x97
    e8808410:	1fcb8b93          	addi	s7,s7,508 # e889f608 <zeroes.4567>
    e8808414:	bcfd                	j	e8807f12 <_vfiprintf_r+0x7a2>
    e8808416:	57fd                	li	a5,-1
    e8808418:	e03e                	sd	a5,0(sp)
    e880841a:	de2ff06f          	j	e88079fc <_vfiprintf_r+0x28c>
    e880841e:	836a                	mv	t1,s10
    e8808420:	b11d                	j	e8808046 <_vfiprintf_r+0x8d6>
    e8808422:	c29c                	sw	a5,0(a3)
    e8808424:	be0ff06f          	j	e8807804 <_vfiprintf_r+0x94>
    e8808428:	e432                	sd	a2,8(sp)
    e880842a:	b931                	j	e8808046 <_vfiprintf_r+0x8d6>
    e880842c:	6ba2                	ld	s7,8(sp)
    e880842e:	588bc68b          	lwia	a3,(s7),8,0
    e8808432:	0006d363          	bgez	a3,e8808438 <_vfiprintf_r+0xcc8>
    e8808436:	56fd                	li	a3,-1
    e8808438:	001dc783          	lbu	a5,1(s11)
    e880843c:	8cb6                	mv	s9,a3
    e880843e:	e45e                	sd	s7,8(sp)
    e8808440:	8db2                	mv	s11,a2
    e8808442:	c46ff06f          	j	e8807888 <_vfiprintf_r+0x118>
    e8808446:	00000013          	nop
    e880844a:	00000013          	nop
    e880844e:	0001                	nop

00000000e8808450 <vfiprintf>:
    e8808450:	000cc797          	auipc	a5,0xcc
    e8808454:	cb878793          	addi	a5,a5,-840 # e88d4108 <_impure_ptr>
    e8808458:	86b2                	mv	a3,a2
    e880845a:	862e                	mv	a2,a1
    e880845c:	85aa                	mv	a1,a0
    e880845e:	6388                	ld	a0,0(a5)
    e8808460:	b10ff06f          	j	e8807770 <_vfiprintf_r>
    e8808464:	00000013          	nop
    e8808468:	00000013          	nop
    e880846c:	00000013          	nop

00000000e8808470 <__sbprintf>:
    e8808470:	0105d783          	lhu	a5,16(a1)
    e8808474:	b3010113          	addi	sp,sp,-1232
    e8808478:	0ac5ae03          	lw	t3,172(a1)
    e880847c:	9bf5                	andi	a5,a5,-3
    e880847e:	0125d303          	lhu	t1,18(a1)
    e8808482:	0305b883          	ld	a7,48(a1)
    e8808486:	0405b803          	ld	a6,64(a1)
    e880848a:	40000713          	li	a4,1024
    e880848e:	00f11823          	sh	a5,16(sp)
    e8808492:	191c                	addi	a5,sp,176
    e8808494:	4c813023          	sd	s0,1216(sp)
    e8808498:	842e                	mv	s0,a1
    e880849a:	858a                	mv	a1,sp
    e880849c:	4a913c23          	sd	s1,1208(sp)
    e88084a0:	4b213823          	sd	s2,1200(sp)
    e88084a4:	4c113423          	sd	ra,1224(sp)
    e88084a8:	892a                	mv	s2,a0
    e88084aa:	d772                	sw	t3,172(sp)
    e88084ac:	00611923          	sh	t1,18(sp)
    e88084b0:	f846                	sd	a7,48(sp)
    e88084b2:	e0c2                	sd	a6,64(sp)
    e88084b4:	e03e                	sd	a5,0(sp)
    e88084b6:	ec3e                	sd	a5,24(sp)
    e88084b8:	c63a                	sw	a4,12(sp)
    e88084ba:	d03a                	sw	a4,32(sp)
    e88084bc:	d402                	sw	zero,40(sp)
    e88084be:	ab2ff0ef          	jal	ra,e8807770 <_vfiprintf_r>
    e88084c2:	84aa                	mv	s1,a0
    e88084c4:	00054963          	bltz	a0,e88084d6 <__sbprintf+0x66>
    e88084c8:	858a                	mv	a1,sp
    e88084ca:	854a                	mv	a0,s2
    e88084cc:	e65f90ef          	jal	ra,e8802330 <_fflush_r>
    e88084d0:	57fd                	li	a5,-1
    e88084d2:	42a7948b          	mvnez	s1,a5,a0
    e88084d6:	01015783          	lhu	a5,16(sp)
    e88084da:	0407f793          	andi	a5,a5,64
    e88084de:	c799                	beqz	a5,e88084ec <__sbprintf+0x7c>
    e88084e0:	01045783          	lhu	a5,16(s0)
    e88084e4:	0407e793          	ori	a5,a5,64
    e88084e8:	00f41823          	sh	a5,16(s0)
    e88084ec:	4c813083          	ld	ra,1224(sp)
    e88084f0:	4c013403          	ld	s0,1216(sp)
    e88084f4:	8526                	mv	a0,s1
    e88084f6:	4b013903          	ld	s2,1200(sp)
    e88084fa:	4b813483          	ld	s1,1208(sp)
    e88084fe:	4d010113          	addi	sp,sp,1232
    e8808502:	8082                	ret
	...

00000000e8808510 <_wctomb_r>:
    e8808510:	000cc797          	auipc	a5,0xcc
    e8808514:	bf878793          	addi	a5,a5,-1032 # e88d4108 <_impure_ptr>
    e8808518:	639c                	ld	a5,0(a5)
    e880851a:	000cc717          	auipc	a4,0xcc
    e880851e:	33e70713          	addi	a4,a4,830 # e88d4858 <__global_locale>
    e8808522:	67bc                	ld	a5,72(a5)
    e8808524:	40f7178b          	mveqz	a5,a4,a5
    e8808528:	0e07b303          	ld	t1,224(a5)
    e880852c:	8302                	jr	t1
    e880852e:	0001                	nop

00000000e8808530 <__ascii_wctomb>:
    e8808530:	0006079b          	sext.w	a5,a2
    e8808534:	c185                	beqz	a1,e8808554 <__ascii_wctomb+0x24>
    e8808536:	0ff00713          	li	a4,255
    e880853a:	00f76763          	bltu	a4,a5,e8808548 <__ascii_wctomb+0x18>
    e880853e:	00c58023          	sb	a2,0(a1)
    e8808542:	4505                	li	a0,1
    e8808544:	8082                	ret
    e8808546:	0001                	nop
    e8808548:	08a00793          	li	a5,138
    e880854c:	c11c                	sw	a5,0(a0)
    e880854e:	557d                	li	a0,-1
    e8808550:	8082                	ret
    e8808552:	0001                	nop
    e8808554:	4501                	li	a0,0
    e8808556:	8082                	ret
	...

00000000e8808570 <_fclose_r>:
    e8808570:	1101                	addi	sp,sp,-32
    e8808572:	ec06                	sd	ra,24(sp)
    e8808574:	e84a                	sd	s2,16(sp)
    e8808576:	f891540b          	sdd	s0,s1,(sp),0,4
    e880857a:	c989                	beqz	a1,e880858c <_fclose_r+0x1c>
    e880857c:	84aa                	mv	s1,a0
    e880857e:	842e                	mv	s0,a1
    e8808580:	c119                	beqz	a0,e8808586 <_fclose_r+0x16>
    e8808582:	493c                	lw	a5,80(a0)
    e8808584:	cfa5                	beqz	a5,e88085fc <_fclose_r+0x8c>
    e8808586:	01041783          	lh	a5,16(s0)
    e880858a:	eb89                	bnez	a5,e880859c <_fclose_r+0x2c>
    e880858c:	60e2                	ld	ra,24(sp)
    e880858e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8808592:	4901                	li	s2,0
    e8808594:	854a                	mv	a0,s2
    e8808596:	6942                	ld	s2,16(sp)
    e8808598:	6105                	addi	sp,sp,32
    e880859a:	8082                	ret
    e880859c:	85a2                	mv	a1,s0
    e880859e:	8526                	mv	a0,s1
    e88085a0:	bf1f90ef          	jal	ra,e8802190 <__sflush_r>
    e88085a4:	892a                	mv	s2,a0
    e88085a6:	683c                	ld	a5,80(s0)
    e88085a8:	c791                	beqz	a5,e88085b4 <_fclose_r+0x44>
    e88085aa:	780c                	ld	a1,48(s0)
    e88085ac:	8526                	mv	a0,s1
    e88085ae:	9782                	jalr	a5
    e88085b0:	04054c63          	bltz	a0,e8808608 <_fclose_r+0x98>
    e88085b4:	01044783          	lbu	a5,16(s0)
    e88085b8:	fc77b70b          	extu	a4,a5,63,7
    e88085bc:	ef21                	bnez	a4,e8808614 <_fclose_r+0xa4>
    e88085be:	6c2c                	ld	a1,88(s0)
    e88085c0:	c991                	beqz	a1,e88085d4 <_fclose_r+0x64>
    e88085c2:	07440793          	addi	a5,s0,116
    e88085c6:	00f58563          	beq	a1,a5,e88085d0 <_fclose_r+0x60>
    e88085ca:	8526                	mv	a0,s1
    e88085cc:	409730ef          	jal	ra,e887c1d4 <_free_r>
    e88085d0:	04043c23          	sd	zero,88(s0)
    e88085d4:	7c2c                	ld	a1,120(s0)
    e88085d6:	c591                	beqz	a1,e88085e2 <_fclose_r+0x72>
    e88085d8:	8526                	mv	a0,s1
    e88085da:	3fb730ef          	jal	ra,e887c1d4 <_free_r>
    e88085de:	06043c23          	sd	zero,120(s0)
    e88085e2:	87efa0ef          	jal	ra,e8802660 <__sfp_lock_acquire>
    e88085e6:	00041823          	sh	zero,16(s0)
    e88085ea:	886fa0ef          	jal	ra,e8802670 <__sfp_lock_release>
    e88085ee:	f891440b          	ldd	s0,s1,(sp),0,4
    e88085f2:	60e2                	ld	ra,24(sp)
    e88085f4:	854a                	mv	a0,s2
    e88085f6:	6942                	ld	s2,16(sp)
    e88085f8:	6105                	addi	sp,sp,32
    e88085fa:	8082                	ret
    e88085fc:	854fa0ef          	jal	ra,e8802650 <__sinit>
    e8808600:	01041783          	lh	a5,16(s0)
    e8808604:	d7c1                	beqz	a5,e880858c <_fclose_r+0x1c>
    e8808606:	bf59                	j	e880859c <_fclose_r+0x2c>
    e8808608:	01044783          	lbu	a5,16(s0)
    e880860c:	597d                	li	s2,-1
    e880860e:	fc77b70b          	extu	a4,a5,63,7
    e8808612:	d755                	beqz	a4,e88085be <_fclose_r+0x4e>
    e8808614:	6c0c                	ld	a1,24(s0)
    e8808616:	8526                	mv	a0,s1
    e8808618:	3bd730ef          	jal	ra,e887c1d4 <_free_r>
    e880861c:	b74d                	j	e88085be <_fclose_r+0x4e>
    e880861e:	0001                	nop

00000000e8808620 <fclose>:
    e8808620:	000cc797          	auipc	a5,0xcc
    e8808624:	ae878793          	addi	a5,a5,-1304 # e88d4108 <_impure_ptr>
    e8808628:	85aa                	mv	a1,a0
    e880862a:	6388                	ld	a0,0(a5)
    e880862c:	f45ff06f          	j	e8808570 <_fclose_r>

00000000e8808630 <__fputwc>:
    e8808630:	711d                	addi	sp,sp,-96
    e8808632:	e8a2                	sd	s0,80(sp)
    e8808634:	fc4e                	sd	s3,56(sp)
    e8808636:	f852                	sd	s4,48(sp)
    e8808638:	ec86                	sd	ra,88(sp)
    e880863a:	e4a6                	sd	s1,72(sp)
    e880863c:	e0ca                	sd	s2,64(sp)
    e880863e:	f456                	sd	s5,40(sp)
    e8808640:	f05a                	sd	s6,32(sp)
    e8808642:	ec5e                	sd	s7,24(sp)
    e8808644:	89aa                	mv	s3,a0
    e8808646:	8a2e                	mv	s4,a1
    e8808648:	8432                	mv	s0,a2
    e880864a:	c26fc0ef          	jal	ra,e8804a70 <__locale_mb_cur_max>
    e880864e:	4785                	li	a5,1
    e8808650:	00f51e63          	bne	a0,a5,e880866c <__fputwc+0x3c>
    e8808654:	fffa079b          	addiw	a5,s4,-1
    e8808658:	0fe00713          	li	a4,254
    e880865c:	00f76863          	bltu	a4,a5,e880866c <__fputwc+0x3c>
    e8808660:	0ffa7713          	andi	a4,s4,255
    e8808664:	00e10423          	sb	a4,8(sp)
    e8808668:	4905                	li	s2,1
    e880866a:	a839                	j	e8808688 <__fputwc+0x58>
    e880866c:	0a440693          	addi	a3,s0,164
    e8808670:	8652                	mv	a2,s4
    e8808672:	002c                	addi	a1,sp,8
    e8808674:	854e                	mv	a0,s3
    e8808676:	30a010ef          	jal	ra,e8809980 <_wcrtomb_r>
    e880867a:	892a                	mv	s2,a0
    e880867c:	57fd                	li	a5,-1
    e880867e:	06f50763          	beq	a0,a5,e88086ec <__fputwc+0xbc>
    e8808682:	c12d                	beqz	a0,e88086e4 <__fputwc+0xb4>
    e8808684:	00814703          	lbu	a4,8(sp)
    e8808688:	4481                	li	s1,0
    e880868a:	5afd                	li	s5,-1
    e880868c:	4ba9                	li	s7,10
    e880868e:	00810b13          	addi	s6,sp,8
    e8808692:	a821                	j	e88086aa <__fputwc+0x7a>
    e8808694:	601c                	ld	a5,0(s0)
    e8808696:	00178693          	addi	a3,a5,1
    e880869a:	e014                	sd	a3,0(s0)
    e880869c:	00e78023          	sb	a4,0(a5)
    e88086a0:	0485                	addi	s1,s1,1
    e88086a2:	0524f163          	bgeu	s1,s2,e88086e4 <__fputwc+0xb4>
    e88086a6:	8164c70b          	lrbu	a4,s1,s6,0
    e88086aa:	445c                	lw	a5,12(s0)
    e88086ac:	37fd                	addiw	a5,a5,-1
    e88086ae:	c45c                	sw	a5,12(s0)
    e88086b0:	fe07d2e3          	bgez	a5,e8808694 <__fputwc+0x64>
    e88086b4:	5414                	lw	a3,40(s0)
    e88086b6:	85ba                	mv	a1,a4
    e88086b8:	8622                	mv	a2,s0
    e88086ba:	854e                	mv	a0,s3
    e88086bc:	00d7c463          	blt	a5,a3,e88086c4 <__fputwc+0x94>
    e88086c0:	fd771ae3          	bne	a4,s7,e8808694 <__fputwc+0x64>
    e88086c4:	19c010ef          	jal	ra,e8809860 <__swbuf_r>
    e88086c8:	fd551ce3          	bne	a0,s5,e88086a0 <__fputwc+0x70>
    e88086cc:	557d                	li	a0,-1
    e88086ce:	60e6                	ld	ra,88(sp)
    e88086d0:	6446                	ld	s0,80(sp)
    e88086d2:	64a6                	ld	s1,72(sp)
    e88086d4:	6906                	ld	s2,64(sp)
    e88086d6:	79e2                	ld	s3,56(sp)
    e88086d8:	7a42                	ld	s4,48(sp)
    e88086da:	7aa2                	ld	s5,40(sp)
    e88086dc:	7b02                	ld	s6,32(sp)
    e88086de:	6be2                	ld	s7,24(sp)
    e88086e0:	6125                	addi	sp,sp,96
    e88086e2:	8082                	ret
    e88086e4:	000a051b          	sext.w	a0,s4
    e88086e8:	b7dd                	j	e88086ce <__fputwc+0x9e>
    e88086ea:	0001                	nop
    e88086ec:	01045783          	lhu	a5,16(s0)
    e88086f0:	557d                	li	a0,-1
    e88086f2:	0407e793          	ori	a5,a5,64
    e88086f6:	00f41823          	sh	a5,16(s0)
    e88086fa:	bfd1                	j	e88086ce <__fputwc+0x9e>
    e88086fc:	00000013          	nop

00000000e8808700 <_fputwc_r>:
    e8808700:	01061783          	lh	a5,16(a2)
    e8808704:	03279713          	slli	a4,a5,0x32
    e8808708:	00074c63          	bltz	a4,e8808720 <_fputwc_r+0x20>
    e880870c:	0ac62703          	lw	a4,172(a2)
    e8808710:	6689                	lui	a3,0x2
    e8808712:	8fd5                	or	a5,a5,a3
    e8808714:	6689                	lui	a3,0x2
    e8808716:	8f55                	or	a4,a4,a3
    e8808718:	00f61823          	sh	a5,16(a2)
    e880871c:	0ae62623          	sw	a4,172(a2)
    e8808720:	f11ff06f          	j	e8808630 <__fputwc>
    e8808724:	00000013          	nop
    e8808728:	00000013          	nop
    e880872c:	00000013          	nop

00000000e8808730 <fputwc>:
    e8808730:	7179                	addi	sp,sp,-48
    e8808732:	000cc797          	auipc	a5,0xcc
    e8808736:	9d678793          	addi	a5,a5,-1578 # e88d4108 <_impure_ptr>
    e880873a:	ec22                	sd	s0,24(sp)
    e880873c:	6380                	ld	s0,0(a5)
    e880873e:	f026                	sd	s1,32(sp)
    e8808740:	f406                	sd	ra,40(sp)
    e8808742:	84aa                	mv	s1,a0
    e8808744:	862e                	mv	a2,a1
    e8808746:	c019                	beqz	s0,e880874c <fputwc+0x1c>
    e8808748:	483c                	lw	a5,80(s0)
    e880874a:	cb8d                	beqz	a5,e880877c <fputwc+0x4c>
    e880874c:	01061783          	lh	a5,16(a2)
    e8808750:	03279713          	slli	a4,a5,0x32
    e8808754:	00074c63          	bltz	a4,e880876c <fputwc+0x3c>
    e8808758:	0ac62703          	lw	a4,172(a2)
    e880875c:	6689                	lui	a3,0x2
    e880875e:	8fd5                	or	a5,a5,a3
    e8808760:	6689                	lui	a3,0x2
    e8808762:	8f55                	or	a4,a4,a3
    e8808764:	00f61823          	sh	a5,16(a2)
    e8808768:	0ae62623          	sw	a4,172(a2)
    e880876c:	8522                	mv	a0,s0
    e880876e:	6462                	ld	s0,24(sp)
    e8808770:	70a2                	ld	ra,40(sp)
    e8808772:	85a6                	mv	a1,s1
    e8808774:	7482                	ld	s1,32(sp)
    e8808776:	6145                	addi	sp,sp,48
    e8808778:	eb9ff06f          	j	e8808630 <__fputwc>
    e880877c:	8522                	mv	a0,s0
    e880877e:	e42e                	sd	a1,8(sp)
    e8808780:	ed1f90ef          	jal	ra,e8802650 <__sinit>
    e8808784:	6622                	ld	a2,8(sp)
    e8808786:	b7d9                	j	e880874c <fputwc+0x1c>
	...

00000000e88087a0 <__sfvwrite_r>:
    e88087a0:	6a1c                	ld	a5,16(a2)
    e88087a2:	1c078763          	beqz	a5,e8808970 <__sfvwrite_r+0x1d0>
    e88087a6:	0105d683          	lhu	a3,16(a1)
    e88087aa:	711d                	addi	sp,sp,-96
    e88087ac:	e8a2                	sd	s0,80(sp)
    e88087ae:	f852                	sd	s4,48(sp)
    e88087b0:	f456                	sd	s5,40(sp)
    e88087b2:	ec86                	sd	ra,88(sp)
    e88087b4:	e4a6                	sd	s1,72(sp)
    e88087b6:	e0ca                	sd	s2,64(sp)
    e88087b8:	fc4e                	sd	s3,56(sp)
    e88087ba:	f05a                	sd	s6,32(sp)
    e88087bc:	ec5e                	sd	s7,24(sp)
    e88087be:	e862                	sd	s8,16(sp)
    e88087c0:	e466                	sd	s9,8(sp)
    e88087c2:	e06a                	sd	s10,0(sp)
    e88087c4:	0086f793          	andi	a5,a3,8
    e88087c8:	842e                	mv	s0,a1
    e88087ca:	8a2a                	mv	s4,a0
    e88087cc:	8ab2                	mv	s5,a2
    e88087ce:	cfb9                	beqz	a5,e880882c <__sfvwrite_r+0x8c>
    e88087d0:	6d9c                	ld	a5,24(a1)
    e88087d2:	cfa9                	beqz	a5,e880882c <__sfvwrite_r+0x8c>
    e88087d4:	0026f793          	andi	a5,a3,2
    e88087d8:	000ab483          	ld	s1,0(s5)
    e88087dc:	c7ad                	beqz	a5,e8808846 <__sfvwrite_r+0xa6>
    e88087de:	6038                	ld	a4,64(s0)
    e88087e0:	781c                	ld	a5,48(s0)
    e88087e2:	80000b37          	lui	s6,0x80000
    e88087e6:	4981                	li	s3,0
    e88087e8:	4901                	li	s2,0
    e88087ea:	c00b4b13          	xori	s6,s6,-1024
    e88087ee:	0001                	nop
    e88087f0:	012b36b3          	sltu	a3,s6,s2
    e88087f4:	865a                	mv	a2,s6
    e88087f6:	40d9160b          	mveqz	a2,s2,a3
    e88087fa:	86b2                	mv	a3,a2
    e88087fc:	85be                	mv	a1,a5
    e88087fe:	864e                	mv	a2,s3
    e8808800:	2681                	sext.w	a3,a3
    e8808802:	8552                	mv	a0,s4
    e8808804:	0a090c63          	beqz	s2,e88088bc <__sfvwrite_r+0x11c>
    e8808808:	9702                	jalr	a4
    e880880a:	14a05b63          	blez	a0,e8808960 <__sfvwrite_r+0x1c0>
    e880880e:	010ab783          	ld	a5,16(s5)
    e8808812:	99aa                	add	s3,s3,a0
    e8808814:	40a90933          	sub	s2,s2,a0
    e8808818:	40a78533          	sub	a0,a5,a0
    e880881c:	00aab823          	sd	a0,16(s5)
    e8808820:	10050863          	beqz	a0,e8808930 <__sfvwrite_r+0x190>
    e8808824:	6038                	ld	a4,64(s0)
    e8808826:	781c                	ld	a5,48(s0)
    e8808828:	b7e1                	j	e88087f0 <__sfvwrite_r+0x50>
    e880882a:	0001                	nop
    e880882c:	85a2                	mv	a1,s0
    e880882e:	8552                	mv	a0,s4
    e8808830:	851f90ef          	jal	ra,e8802080 <__swsetup_r>
    e8808834:	2a051f63          	bnez	a0,e8808af2 <__sfvwrite_r+0x352>
    e8808838:	01045683          	lhu	a3,16(s0)
    e880883c:	000ab483          	ld	s1,0(s5)
    e8808840:	0026f793          	andi	a5,a3,2
    e8808844:	ffc9                	bnez	a5,e88087de <__sfvwrite_r+0x3e>
    e8808846:	0016f793          	andi	a5,a3,1
    e880884a:	efad                	bnez	a5,e88088c4 <__sfvwrite_r+0x124>
    e880884c:	445c                	lw	a5,12(s0)
    e880884e:	6008                	ld	a0,0(s0)
    e8808850:	80000b37          	lui	s6,0x80000
    e8808854:	ffeb4b93          	xori	s7,s6,-2
    e8808858:	4c01                	li	s8,0
    e880885a:	4901                	li	s2,0
    e880885c:	fffb4b13          	not	s6,s6
    e8808860:	8cbe                	mv	s9,a5
    e8808862:	04090963          	beqz	s2,e88088b4 <__sfvwrite_r+0x114>
    e8808866:	2006f713          	andi	a4,a3,512
    e880886a:	14070763          	beqz	a4,e88089b8 <__sfvwrite_r+0x218>
    e880886e:	8d3e                	mv	s10,a5
    e8808870:	1af97863          	bgeu	s2,a5,e8808a20 <__sfvwrite_r+0x280>
    e8808874:	8cca                	mv	s9,s2
    e8808876:	8d4a                	mv	s10,s2
    e8808878:	866a                	mv	a2,s10
    e880887a:	85e2                	mv	a1,s8
    e880887c:	284000ef          	jal	ra,e8808b00 <memmove>
    e8808880:	89ca                	mv	s3,s2
    e8808882:	445c                	lw	a5,12(s0)
    e8808884:	6010                	ld	a2,0(s0)
    e8808886:	4901                	li	s2,0
    e8808888:	41978cbb          	subw	s9,a5,s9
    e880888c:	966a                	add	a2,a2,s10
    e880888e:	01942623          	sw	s9,12(s0)
    e8808892:	e010                	sd	a2,0(s0)
    e8808894:	010ab783          	ld	a5,16(s5)
    e8808898:	9c4e                	add	s8,s8,s3
    e880889a:	413789b3          	sub	s3,a5,s3
    e880889e:	013ab823          	sd	s3,16(s5)
    e88088a2:	08098763          	beqz	s3,e8808930 <__sfvwrite_r+0x190>
    e88088a6:	445c                	lw	a5,12(s0)
    e88088a8:	6008                	ld	a0,0(s0)
    e88088aa:	01045683          	lhu	a3,16(s0)
    e88088ae:	8cbe                	mv	s9,a5
    e88088b0:	fa091be3          	bnez	s2,e8808866 <__sfvwrite_r+0xc6>
    e88088b4:	f924cc0b          	ldd	s8,s2,(s1),0,4
    e88088b8:	04c1                	addi	s1,s1,16
    e88088ba:	b75d                	j	e8808860 <__sfvwrite_r+0xc0>
    e88088bc:	f924c98b          	ldd	s3,s2,(s1),0,4
    e88088c0:	04c1                	addi	s1,s1,16
    e88088c2:	b73d                	j	e88087f0 <__sfvwrite_r+0x50>
    e88088c4:	4b01                	li	s6,0
    e88088c6:	4501                	li	a0,0
    e88088c8:	4c81                	li	s9,0
    e88088ca:	4981                	li	s3,0
    e88088cc:	00000013          	nop
    e88088d0:	0a098263          	beqz	s3,e8808974 <__sfvwrite_r+0x1d4>
    e88088d4:	c55d                	beqz	a0,e8808982 <__sfvwrite_r+0x1e2>
    e88088d6:	6008                	ld	a0,0(s0)
    e88088d8:	6c1c                	ld	a5,24(s0)
    e88088da:	0169b933          	sltu	s2,s3,s6
    e88088de:	874e                	mv	a4,s3
    e88088e0:	412b170b          	mveqz	a4,s6,s2
    e88088e4:	893a                	mv	s2,a4
    e88088e6:	8c3a                	mv	s8,a4
    e88088e8:	5014                	lw	a3,32(s0)
    e88088ea:	00a7f763          	bgeu	a5,a0,e88088f8 <__sfvwrite_r+0x158>
    e88088ee:	4450                	lw	a2,12(s0)
    e88088f0:	00d60bbb          	addw	s7,a2,a3
    e88088f4:	0aebc263          	blt	s7,a4,e8808998 <__sfvwrite_r+0x1f8>
    e88088f8:	1adc4463          	blt	s8,a3,e8808aa0 <__sfvwrite_r+0x300>
    e88088fc:	603c                	ld	a5,64(s0)
    e88088fe:	780c                	ld	a1,48(s0)
    e8808900:	8666                	mv	a2,s9
    e8808902:	8552                	mv	a0,s4
    e8808904:	9782                	jalr	a5
    e8808906:	892a                	mv	s2,a0
    e8808908:	04a05c63          	blez	a0,e8808960 <__sfvwrite_r+0x1c0>
    e880890c:	0005061b          	sext.w	a2,a0
    e8808910:	40cb0b3b          	subw	s6,s6,a2
    e8808914:	4505                	li	a0,1
    e8808916:	020b0d63          	beqz	s6,e8808950 <__sfvwrite_r+0x1b0>
    e880891a:	010ab783          	ld	a5,16(s5)
    e880891e:	9cca                	add	s9,s9,s2
    e8808920:	412989b3          	sub	s3,s3,s2
    e8808924:	41278933          	sub	s2,a5,s2
    e8808928:	012ab823          	sd	s2,16(s5)
    e880892c:	fa0912e3          	bnez	s2,e88088d0 <__sfvwrite_r+0x130>
    e8808930:	4501                	li	a0,0
    e8808932:	60e6                	ld	ra,88(sp)
    e8808934:	6446                	ld	s0,80(sp)
    e8808936:	64a6                	ld	s1,72(sp)
    e8808938:	6906                	ld	s2,64(sp)
    e880893a:	79e2                	ld	s3,56(sp)
    e880893c:	7a42                	ld	s4,48(sp)
    e880893e:	7aa2                	ld	s5,40(sp)
    e8808940:	7b02                	ld	s6,32(sp)
    e8808942:	6be2                	ld	s7,24(sp)
    e8808944:	6c42                	ld	s8,16(sp)
    e8808946:	6ca2                	ld	s9,8(sp)
    e8808948:	6d02                	ld	s10,0(sp)
    e880894a:	6125                	addi	sp,sp,96
    e880894c:	8082                	ret
    e880894e:	0001                	nop
    e8808950:	85a2                	mv	a1,s0
    e8808952:	8552                	mv	a0,s4
    e8808954:	9ddf90ef          	jal	ra,e8802330 <_fflush_r>
    e8808958:	d169                	beqz	a0,e880891a <__sfvwrite_r+0x17a>
    e880895a:	0001                	nop
    e880895c:	00000013          	nop
    e8808960:	01041783          	lh	a5,16(s0)
    e8808964:	0407e793          	ori	a5,a5,64
    e8808968:	00f41823          	sh	a5,16(s0)
    e880896c:	557d                	li	a0,-1
    e880896e:	b7d1                	j	e8808932 <__sfvwrite_r+0x192>
    e8808970:	4501                	li	a0,0
    e8808972:	8082                	ret
    e8808974:	0084b983          	ld	s3,8(s1)
    e8808978:	0004bc83          	ld	s9,0(s1)
    e880897c:	04c1                	addi	s1,s1,16
    e880897e:	fe098be3          	beqz	s3,e8808974 <__sfvwrite_r+0x1d4>
    e8808982:	864e                	mv	a2,s3
    e8808984:	45a9                	li	a1,10
    e8808986:	8566                	mv	a0,s9
    e8808988:	6ad720ef          	jal	ra,e887b834 <memchr>
    e880898c:	14050a63          	beqz	a0,e8808ae0 <__sfvwrite_r+0x340>
    e8808990:	0505                	addi	a0,a0,1
    e8808992:	41950b3b          	subw	s6,a0,s9
    e8808996:	b781                	j	e88088d6 <__sfvwrite_r+0x136>
    e8808998:	85e6                	mv	a1,s9
    e880899a:	865e                	mv	a2,s7
    e880899c:	164000ef          	jal	ra,e8808b00 <memmove>
    e88089a0:	601c                	ld	a5,0(s0)
    e88089a2:	85a2                	mv	a1,s0
    e88089a4:	8552                	mv	a0,s4
    e88089a6:	97de                	add	a5,a5,s7
    e88089a8:	e01c                	sd	a5,0(s0)
    e88089aa:	987f90ef          	jal	ra,e8802330 <_fflush_r>
    e88089ae:	f94d                	bnez	a0,e8808960 <__sfvwrite_r+0x1c0>
    e88089b0:	865e                	mv	a2,s7
    e88089b2:	895e                	mv	s2,s7
    e88089b4:	bfb1                	j	e8808910 <__sfvwrite_r+0x170>
    e88089b6:	0001                	nop
    e88089b8:	6c18                	ld	a4,24(s0)
    e88089ba:	02a76963          	bltu	a4,a0,e88089ec <__sfvwrite_r+0x24c>
    e88089be:	5018                	lw	a4,32(s0)
    e88089c0:	02e96663          	bltu	s2,a4,e88089ec <__sfvwrite_r+0x24c>
    e88089c4:	012bb6b3          	sltu	a3,s7,s2
    e88089c8:	87ca                	mv	a5,s2
    e88089ca:	42db178b          	mvnez	a5,s6,a3
    e88089ce:	02e7c6bb          	divw	a3,a5,a4
    e88089d2:	780c                	ld	a1,48(s0)
    e88089d4:	603c                	ld	a5,64(s0)
    e88089d6:	8662                	mv	a2,s8
    e88089d8:	8552                	mv	a0,s4
    e88089da:	02e686bb          	mulw	a3,a3,a4
    e88089de:	9782                	jalr	a5
    e88089e0:	f8a050e3          	blez	a0,e8808960 <__sfvwrite_r+0x1c0>
    e88089e4:	89aa                	mv	s3,a0
    e88089e6:	41390933          	sub	s2,s2,s3
    e88089ea:	b56d                	j	e8808894 <__sfvwrite_r+0xf4>
    e88089ec:	00f939b3          	sltu	s3,s2,a5
    e88089f0:	4339178b          	mvnez	a5,s2,s3
    e88089f4:	863e                	mv	a2,a5
    e88089f6:	85e2                	mv	a1,s8
    e88089f8:	89be                	mv	s3,a5
    e88089fa:	106000ef          	jal	ra,e8808b00 <memmove>
    e88089fe:	445c                	lw	a5,12(s0)
    e8808a00:	6018                	ld	a4,0(s0)
    e8808a02:	413787bb          	subw	a5,a5,s3
    e8808a06:	974e                	add	a4,a4,s3
    e8808a08:	c45c                	sw	a5,12(s0)
    e8808a0a:	e018                	sd	a4,0(s0)
    e8808a0c:	ffe9                	bnez	a5,e88089e6 <__sfvwrite_r+0x246>
    e8808a0e:	85a2                	mv	a1,s0
    e8808a10:	8552                	mv	a0,s4
    e8808a12:	91ff90ef          	jal	ra,e8802330 <_fflush_r>
    e8808a16:	f529                	bnez	a0,e8808960 <__sfvwrite_r+0x1c0>
    e8808a18:	41390933          	sub	s2,s2,s3
    e8808a1c:	bda5                	j	e8808894 <__sfvwrite_r+0xf4>
    e8808a1e:	0001                	nop
    e8808a20:	4806f793          	andi	a5,a3,1152
    e8808a24:	e4078ae3          	beqz	a5,e8808878 <__sfvwrite_r+0xd8>
    e8808a28:	02042983          	lw	s3,32(s0)
    e8808a2c:	6c0c                	ld	a1,24(s0)
    e8808a2e:	00190793          	addi	a5,s2,1
    e8808a32:	0019971b          	slliw	a4,s3,0x1
    e8808a36:	0137073b          	addw	a4,a4,s3
    e8808a3a:	8d0d                	sub	a0,a0,a1
    e8808a3c:	01f7599b          	srliw	s3,a4,0x1f
    e8808a40:	00050c9b          	sext.w	s9,a0
    e8808a44:	00e989bb          	addw	s3,s3,a4
    e8808a48:	4019d99b          	sraiw	s3,s3,0x1
    e8808a4c:	97e6                	add	a5,a5,s9
    e8808a4e:	0019071b          	addiw	a4,s2,1
    e8808a52:	9d39                	addw	a0,a0,a4
    e8808a54:	00f9b7b3          	sltu	a5,s3,a5
    e8808a58:	4006f693          	andi	a3,a3,1024
    e8808a5c:	42f5198b          	mvnez	s3,a0,a5
    e8808a60:	ceb1                	beqz	a3,e8808abc <__sfvwrite_r+0x31c>
    e8808a62:	85ce                	mv	a1,s3
    e8808a64:	8552                	mv	a0,s4
    e8808a66:	72c730ef          	jal	ra,e887c192 <_malloc_r>
    e8808a6a:	8d2a                	mv	s10,a0
    e8808a6c:	cd2d                	beqz	a0,e8808ae6 <__sfvwrite_r+0x346>
    e8808a6e:	6c0c                	ld	a1,24(s0)
    e8808a70:	8666                	mv	a2,s9
    e8808a72:	df6f70ef          	jal	ra,e8800068 <memcpy>
    e8808a76:	01045783          	lhu	a5,16(s0)
    e8808a7a:	b7f7f793          	andi	a5,a5,-1153
    e8808a7e:	0807e793          	ori	a5,a5,128
    e8808a82:	00f41823          	sh	a5,16(s0)
    e8808a86:	019d0533          	add	a0,s10,s9
    e8808a8a:	419987bb          	subw	a5,s3,s9
    e8808a8e:	01a43c23          	sd	s10,24(s0)
    e8808a92:	e008                	sd	a0,0(s0)
    e8808a94:	03342023          	sw	s3,32(s0)
    e8808a98:	8cca                	mv	s9,s2
    e8808a9a:	c45c                	sw	a5,12(s0)
    e8808a9c:	8d4a                	mv	s10,s2
    e8808a9e:	bbe9                	j	e8808878 <__sfvwrite_r+0xd8>
    e8808aa0:	8662                	mv	a2,s8
    e8808aa2:	85e6                	mv	a1,s9
    e8808aa4:	05c000ef          	jal	ra,e8808b00 <memmove>
    e8808aa8:	4458                	lw	a4,12(s0)
    e8808aaa:	601c                	ld	a5,0(s0)
    e8808aac:	000c061b          	sext.w	a2,s8
    e8808ab0:	9f11                	subw	a4,a4,a2
    e8808ab2:	9c3e                	add	s8,s8,a5
    e8808ab4:	c458                	sw	a4,12(s0)
    e8808ab6:	01843023          	sd	s8,0(s0)
    e8808aba:	bd99                	j	e8808910 <__sfvwrite_r+0x170>
    e8808abc:	864e                	mv	a2,s3
    e8808abe:	8552                	mv	a0,s4
    e8808ac0:	6e8730ef          	jal	ra,e887c1a8 <_realloc_r>
    e8808ac4:	8d2a                	mv	s10,a0
    e8808ac6:	f161                	bnez	a0,e8808a86 <__sfvwrite_r+0x2e6>
    e8808ac8:	6c0c                	ld	a1,24(s0)
    e8808aca:	8552                	mv	a0,s4
    e8808acc:	708730ef          	jal	ra,e887c1d4 <_free_r>
    e8808ad0:	01041783          	lh	a5,16(s0)
    e8808ad4:	4731                	li	a4,12
    e8808ad6:	00ea2023          	sw	a4,0(s4)
    e8808ada:	f7f7f793          	andi	a5,a5,-129
    e8808ade:	b559                	j	e8808964 <__sfvwrite_r+0x1c4>
    e8808ae0:	00198b1b          	addiw	s6,s3,1
    e8808ae4:	bbcd                	j	e88088d6 <__sfvwrite_r+0x136>
    e8808ae6:	47b1                	li	a5,12
    e8808ae8:	00fa2023          	sw	a5,0(s4)
    e8808aec:	01041783          	lh	a5,16(s0)
    e8808af0:	bd95                	j	e8808964 <__sfvwrite_r+0x1c4>
    e8808af2:	557d                	li	a0,-1
    e8808af4:	bd3d                	j	e8808932 <__sfvwrite_r+0x192>
	...

00000000e8808b00 <memmove>:
    e8808b00:	02a5f263          	bgeu	a1,a0,e8808b24 <memmove+0x24>
    e8808b04:	00c587b3          	add	a5,a1,a2
    e8808b08:	00f57e63          	bgeu	a0,a5,e8808b24 <memmove+0x24>
    e8808b0c:	fff60793          	addi	a5,a2,-1
    e8808b10:	ca4d                	beqz	a2,e8808bc2 <memmove+0xc2>
    e8808b12:	56fd                	li	a3,-1
    e8808b14:	80f5c70b          	lrbu	a4,a1,a5,0
    e8808b18:	00f5570b          	srb	a4,a0,a5,0
    e8808b1c:	17fd                	addi	a5,a5,-1
    e8808b1e:	fed79be3          	bne	a5,a3,e8808b14 <memmove+0x14>
    e8808b22:	8082                	ret
    e8808b24:	47fd                	li	a5,31
    e8808b26:	02c7e263          	bltu	a5,a2,e8808b4a <memmove+0x4a>
    e8808b2a:	872a                	mv	a4,a0
    e8808b2c:	fff60813          	addi	a6,a2,-1
    e8808b30:	ce51                	beqz	a2,e8808bcc <memmove+0xcc>
    e8808b32:	4781                	li	a5,0
    e8808b34:	a011                	j	e8808b38 <memmove+0x38>
    e8808b36:	87b2                	mv	a5,a2
    e8808b38:	80f5c68b          	lrbu	a3,a1,a5,0
    e8808b3c:	00178613          	addi	a2,a5,1
    e8808b40:	00f7568b          	srb	a3,a4,a5,0
    e8808b44:	fef819e3          	bne	a6,a5,e8808b36 <memmove+0x36>
    e8808b48:	8082                	ret
    e8808b4a:	00a5e6b3          	or	a3,a1,a0
    e8808b4e:	8a9d                	andi	a3,a3,7
    e8808b50:	eab5                	bnez	a3,e8808bc4 <memmove+0xc4>
    e8808b52:	fe060313          	addi	t1,a2,-32
    e8808b56:	fe037313          	andi	t1,t1,-32
    e8808b5a:	02030313          	addi	t1,t1,32
    e8808b5e:	006508b3          	add	a7,a0,t1
    e8808b62:	87ae                	mv	a5,a1
    e8808b64:	872a                	mv	a4,a0
    e8808b66:	0007b803          	ld	a6,0(a5)
    e8808b6a:	02070713          	addi	a4,a4,32
    e8808b6e:	02078793          	addi	a5,a5,32
    e8808b72:	ff073023          	sd	a6,-32(a4)
    e8808b76:	fe87b803          	ld	a6,-24(a5)
    e8808b7a:	ff073423          	sd	a6,-24(a4)
    e8808b7e:	ff07b803          	ld	a6,-16(a5)
    e8808b82:	ff073823          	sd	a6,-16(a4)
    e8808b86:	ff87b803          	ld	a6,-8(a5)
    e8808b8a:	ff073c23          	sd	a6,-8(a4)
    e8808b8e:	fce89ce3          	bne	a7,a4,e8808b66 <memmove+0x66>
    e8808b92:	01867813          	andi	a6,a2,24
    e8808b96:	959a                	add	a1,a1,t1
    e8808b98:	01f67793          	andi	a5,a2,31
    e8808b9c:	02080963          	beqz	a6,e8808bce <memmove+0xce>
    e8808ba0:	489d                	li	a7,7
    e8808ba2:	60d5c80b          	lrd	a6,a1,a3,0
    e8808ba6:	60d7580b          	srd	a6,a4,a3,0
    e8808baa:	06a1                	addi	a3,a3,8
    e8808bac:	40d78833          	sub	a6,a5,a3
    e8808bb0:	ff08e9e3          	bltu	a7,a6,e8808ba2 <memmove+0xa2>
    e8808bb4:	17e1                	addi	a5,a5,-8
    e8808bb6:	9be1                	andi	a5,a5,-8
    e8808bb8:	07a1                	addi	a5,a5,8
    e8808bba:	8a1d                	andi	a2,a2,7
    e8808bbc:	973e                	add	a4,a4,a5
    e8808bbe:	95be                	add	a1,a1,a5
    e8808bc0:	b7b5                	j	e8808b2c <memmove+0x2c>
    e8808bc2:	8082                	ret
    e8808bc4:	fff60813          	addi	a6,a2,-1
    e8808bc8:	872a                	mv	a4,a0
    e8808bca:	b7a5                	j	e8808b32 <memmove+0x32>
    e8808bcc:	8082                	ret
    e8808bce:	863e                	mv	a2,a5
    e8808bd0:	bfb1                	j	e8808b2c <memmove+0x2c>
	...

00000000e8808be0 <__ssprint_r>:
    e8808be0:	715d                	addi	sp,sp,-80
    e8808be2:	6a1c                	ld	a5,16(a2)
    e8808be4:	f052                	sd	s4,32(sp)
    e8808be6:	e486                	sd	ra,72(sp)
    e8808be8:	e0a2                	sd	s0,64(sp)
    e8808bea:	fc26                	sd	s1,56(sp)
    e8808bec:	f84a                	sd	s2,48(sp)
    e8808bee:	f44e                	sd	s3,40(sp)
    e8808bf0:	ec56                	sd	s5,24(sp)
    e8808bf2:	e85a                	sd	s6,16(sp)
    e8808bf4:	e45e                	sd	s7,8(sp)
    e8808bf6:	e062                	sd	s8,0(sp)
    e8808bf8:	8a32                	mv	s4,a2
    e8808bfa:	c3fd                	beqz	a5,e8808ce0 <__ssprint_r+0x100>
    e8808bfc:	8aaa                	mv	s5,a0
    e8808bfe:	00063983          	ld	s3,0(a2)
    e8808c02:	6188                	ld	a0,0(a1)
    e8808c04:	45c0                	lw	s0,12(a1)
    e8808c06:	892e                	mv	s2,a1
    e8808c08:	4b01                	li	s6,0
    e8808c0a:	4481                	li	s1,0
    e8808c0c:	00000013          	nop
    e8808c10:	c8e5                	beqz	s1,e8808d00 <__ssprint_r+0x120>
    e8808c12:	8c22                	mv	s8,s0
    e8808c14:	0004879b          	sext.w	a5,s1
    e8808c18:	0e84e863          	bltu	s1,s0,e8808d08 <__ssprint_r+0x128>
    e8808c1c:	01095703          	lhu	a4,16(s2)
    e8808c20:	00048b9b          	sext.w	s7,s1
    e8808c24:	48077793          	andi	a5,a4,1152
    e8808c28:	c3d9                	beqz	a5,e8808cae <__ssprint_r+0xce>
    e8808c2a:	02092683          	lw	a3,32(s2)
    e8808c2e:	01893583          	ld	a1,24(s2)
    e8808c32:	00148793          	addi	a5,s1,1
    e8808c36:	0016941b          	slliw	s0,a3,0x1
    e8808c3a:	9ea1                	addw	a3,a3,s0
    e8808c3c:	8d0d                	sub	a0,a0,a1
    e8808c3e:	01f6d41b          	srliw	s0,a3,0x1f
    e8808c42:	00050b9b          	sext.w	s7,a0
    e8808c46:	9c35                	addw	s0,s0,a3
    e8808c48:	4014541b          	sraiw	s0,s0,0x1
    e8808c4c:	97de                	add	a5,a5,s7
    e8808c4e:	0014869b          	addiw	a3,s1,1
    e8808c52:	9d35                	addw	a0,a0,a3
    e8808c54:	00f437b3          	sltu	a5,s0,a5
    e8808c58:	40077713          	andi	a4,a4,1024
    e8808c5c:	42f5140b          	mvnez	s0,a0,a5
    e8808c60:	cb45                	beqz	a4,e8808d10 <__ssprint_r+0x130>
    e8808c62:	85a2                	mv	a1,s0
    e8808c64:	8556                	mv	a0,s5
    e8808c66:	52c730ef          	jal	ra,e887c192 <_malloc_r>
    e8808c6a:	8c2a                	mv	s8,a0
    e8808c6c:	cd4d                	beqz	a0,e8808d26 <__ssprint_r+0x146>
    e8808c6e:	01893583          	ld	a1,24(s2)
    e8808c72:	865e                	mv	a2,s7
    e8808c74:	bf4f70ef          	jal	ra,e8800068 <memcpy>
    e8808c78:	01095783          	lhu	a5,16(s2)
    e8808c7c:	b7f7f793          	andi	a5,a5,-1153
    e8808c80:	0807e793          	ori	a5,a5,128
    e8808c84:	00f91823          	sh	a5,16(s2)
    e8808c88:	017c0533          	add	a0,s8,s7
    e8808c8c:	41740bbb          	subw	s7,s0,s7
    e8808c90:	01893c23          	sd	s8,24(s2)
    e8808c94:	02892023          	sw	s0,32(s2)
    e8808c98:	01792623          	sw	s7,12(s2)
    e8808c9c:	00a93023          	sd	a0,0(s2)
    e8808ca0:	0004879b          	sext.w	a5,s1
    e8808ca4:	843e                	mv	s0,a5
    e8808ca6:	8c3e                	mv	s8,a5
    e8808ca8:	8bbe                	mv	s7,a5
    e8808caa:	04f4ef63          	bltu	s1,a5,e8808d08 <__ssprint_r+0x128>
    e8808cae:	8622                	mv	a2,s0
    e8808cb0:	85da                	mv	a1,s6
    e8808cb2:	e4fff0ef          	jal	ra,e8808b00 <memmove>
    e8808cb6:	9b5e                	add	s6,s6,s7
    e8808cb8:	00c92703          	lw	a4,12(s2)
    e8808cbc:	00093503          	ld	a0,0(s2)
    e8808cc0:	010a3783          	ld	a5,16(s4)
    e8808cc4:	4087043b          	subw	s0,a4,s0
    e8808cc8:	9562                	add	a0,a0,s8
    e8808cca:	00892623          	sw	s0,12(s2)
    e8808cce:	00a93023          	sd	a0,0(s2)
    e8808cd2:	417787b3          	sub	a5,a5,s7
    e8808cd6:	00fa3823          	sd	a5,16(s4)
    e8808cda:	417484b3          	sub	s1,s1,s7
    e8808cde:	fb8d                	bnez	a5,e8808c10 <__ssprint_r+0x30>
    e8808ce0:	000a2423          	sw	zero,8(s4)
    e8808ce4:	4501                	li	a0,0
    e8808ce6:	60a6                	ld	ra,72(sp)
    e8808ce8:	6406                	ld	s0,64(sp)
    e8808cea:	74e2                	ld	s1,56(sp)
    e8808cec:	7942                	ld	s2,48(sp)
    e8808cee:	79a2                	ld	s3,40(sp)
    e8808cf0:	7a02                	ld	s4,32(sp)
    e8808cf2:	6ae2                	ld	s5,24(sp)
    e8808cf4:	6b42                	ld	s6,16(sp)
    e8808cf6:	6ba2                	ld	s7,8(sp)
    e8808cf8:	6c02                	ld	s8,0(sp)
    e8808cfa:	6161                	addi	sp,sp,80
    e8808cfc:	8082                	ret
    e8808cfe:	0001                	nop
    e8808d00:	f899cb0b          	ldd	s6,s1,(s3),0,4
    e8808d04:	09c1                	addi	s3,s3,16
    e8808d06:	b729                	j	e8808c10 <__ssprint_r+0x30>
    e8808d08:	843e                	mv	s0,a5
    e8808d0a:	8c3e                	mv	s8,a5
    e8808d0c:	8bbe                	mv	s7,a5
    e8808d0e:	b745                	j	e8808cae <__ssprint_r+0xce>
    e8808d10:	8622                	mv	a2,s0
    e8808d12:	8556                	mv	a0,s5
    e8808d14:	494730ef          	jal	ra,e887c1a8 <_realloc_r>
    e8808d18:	8c2a                	mv	s8,a0
    e8808d1a:	f53d                	bnez	a0,e8808c88 <__ssprint_r+0xa8>
    e8808d1c:	01893583          	ld	a1,24(s2)
    e8808d20:	8556                	mv	a0,s5
    e8808d22:	4b2730ef          	jal	ra,e887c1d4 <_free_r>
    e8808d26:	47b1                	li	a5,12
    e8808d28:	00faa023          	sw	a5,0(s5)
    e8808d2c:	01095783          	lhu	a5,16(s2)
    e8808d30:	557d                	li	a0,-1
    e8808d32:	0407e793          	ori	a5,a5,64
    e8808d36:	00f91823          	sh	a5,16(s2)
    e8808d3a:	000a3823          	sd	zero,16(s4)
    e8808d3e:	000a2423          	sw	zero,8(s4)
    e8808d42:	b755                	j	e8808ce6 <__ssprint_r+0x106>
    e8808d44:	00000013          	nop
    e8808d48:	00000013          	nop
    e8808d4c:	00000013          	nop

00000000e8808d50 <_svfiprintf_r>:
    e8808d50:	0105c783          	lbu	a5,16(a1)
    e8808d54:	7145                	addi	sp,sp,-464
    e8808d56:	f352                	sd	s4,416(sp)
    e8808d58:	ef56                	sd	s5,408(sp)
    e8808d5a:	f6ee                	sd	s11,360(sp)
    e8808d5c:	e786                	sd	ra,456(sp)
    e8808d5e:	e3a2                	sd	s0,448(sp)
    e8808d60:	ff26                	sd	s1,440(sp)
    e8808d62:	fb4a                	sd	s2,432(sp)
    e8808d64:	f74e                	sd	s3,424(sp)
    e8808d66:	eb5a                	sd	s6,400(sp)
    e8808d68:	e75e                	sd	s7,392(sp)
    e8808d6a:	e362                	sd	s8,384(sp)
    e8808d6c:	fee6                	sd	s9,376(sp)
    e8808d6e:	faea                	sd	s10,368(sp)
    e8808d70:	e036                	sd	a3,0(sp)
    e8808d72:	fc77b70b          	extu	a4,a5,63,7
    e8808d76:	8a2e                	mv	s4,a1
    e8808d78:	8aaa                	mv	s5,a0
    e8808d7a:	8db2                	mv	s11,a2
    e8808d7c:	c701                	beqz	a4,e8808d84 <_svfiprintf_r+0x34>
    e8808d7e:	6d9c                	ld	a5,24(a1)
    e8808d80:	100785e3          	beqz	a5,e880968a <_svfiprintf_r+0x93a>
    e8808d84:	77e1                	lui	a5,0xffff8
    e8808d86:	0e010913          	addi	s2,sp,224
    e8808d8a:	8307c793          	xori	a5,a5,-2000
    e8808d8e:	f0ca                	sd	s2,96(sp)
    e8808d90:	f882                	sd	zero,112(sp)
    e8808d92:	d482                	sw	zero,104(sp)
    e8808d94:	874a                	mv	a4,s2
    e8808d96:	e802                	sd	zero,16(sp)
    e8808d98:	f802                	sd	zero,48(sp)
    e8808d9a:	e082                	sd	zero,64(sp)
    e8808d9c:	fc02                	sd	zero,56(sp)
    e8808d9e:	4c01                	li	s8,0
    e8808da0:	00097b17          	auipc	s6,0x97
    e8808da4:	980b0b13          	addi	s6,s6,-1664 # e889f720 <_ctype_+0x108>
    e8808da8:	04f11723          	sh	a5,78(sp)
    e8808dac:	000dc783          	lbu	a5,0(s11)
    e8808db0:	18078663          	beqz	a5,e8808f3c <_svfiprintf_r+0x1ec>
    e8808db4:	02500693          	li	a3,37
    e8808db8:	08d786e3          	beq	a5,a3,e8809644 <_svfiprintf_r+0x8f4>
    e8808dbc:	846e                	mv	s0,s11
    e8808dbe:	a021                	j	e8808dc6 <_svfiprintf_r+0x76>
    e8808dc0:	16d78063          	beq	a5,a3,e8808f20 <_svfiprintf_r+0x1d0>
    e8808dc4:	8426                	mv	s0,s1
    e8808dc6:	00144783          	lbu	a5,1(s0)
    e8808dca:	00140493          	addi	s1,s0,1
    e8808dce:	fbed                	bnez	a5,e8808dc0 <_svfiprintf_r+0x70>
    e8808dd0:	41b489bb          	subw	s3,s1,s11
    e8808dd4:	16098463          	beqz	s3,e8808f3c <_svfiprintf_r+0x1ec>
    e8808dd8:	76c6                	ld	a3,112(sp)
    e8808dda:	57a6                	lw	a5,104(sp)
    e8808ddc:	01b73023          	sd	s11,0(a4)
    e8808de0:	96ce                	add	a3,a3,s3
    e8808de2:	2785                	addiw	a5,a5,1
    e8808de4:	01373423          	sd	s3,8(a4)
    e8808de8:	f8b6                	sd	a3,112(sp)
    e8808dea:	d4be                	sw	a5,104(sp)
    e8808dec:	469d                	li	a3,7
    e8808dee:	0741                	addi	a4,a4,16
    e8808df0:	12f6ce63          	blt	a3,a5,e8808f2c <_svfiprintf_r+0x1dc>
    e8808df4:	00144783          	lbu	a5,1(s0)
    e8808df8:	013c0c3b          	addw	s8,s8,s3
    e8808dfc:	14078063          	beqz	a5,e8808f3c <_svfiprintf_r+0x1ec>
    e8808e00:	00148d93          	addi	s11,s1,1
    e8808e04:	0014c783          	lbu	a5,1(s1)
    e8808e08:	04010ba3          	sb	zero,87(sp)
    e8808e0c:	5cfd                	li	s9,-1
    e8808e0e:	4481                	li	s1,0
    e8808e10:	4d01                	li	s10,0
    e8808e12:	49a5                	li	s3,9
    e8808e14:	02a00413          	li	s0,42
    e8808e18:	0d85                	addi	s11,s11,1
    e8808e1a:	05a00513          	li	a0,90
    e8808e1e:	fe07859b          	addiw	a1,a5,-32
    e8808e22:	1ab56f63          	bltu	a0,a1,e8808fe0 <_svfiprintf_r+0x290>
    e8808e26:	54bb460b          	lurw	a2,s6,a1,2
    e8808e2a:	965a                	add	a2,a2,s6
    e8808e2c:	8602                	jr	a2
    e8808e2e:	0001                	nop
    e8808e30:	010d6893          	ori	a7,s10,16
    e8808e34:	00088d1b          	sext.w	s10,a7
    e8808e38:	000dc783          	lbu	a5,0(s11)
    e8808e3c:	bff1                	j	e8808e18 <_svfiprintf_r+0xc8>
    e8808e3e:	010d6893          	ori	a7,s10,16
    e8808e42:	00088d1b          	sext.w	s10,a7
    e8808e46:	6682                	ld	a3,0(sp)
    e8808e48:	020d7793          	andi	a5,s10,32
    e8808e4c:	00868613          	addi	a2,a3,8 # 2008 <memcmp-0xe87fdff8>
    e8808e50:	36078463          	beqz	a5,e88091b8 <_svfiprintf_r+0x468>
    e8808e54:	6280                	ld	s0,0(a3)
    e8808e56:	bffd7893          	andi	a7,s10,-1025
    e8808e5a:	0008831b          	sext.w	t1,a7
    e8808e5e:	e032                	sd	a2,0(sp)
    e8808e60:	4781                	li	a5,0
    e8808e62:	04010ba3          	sb	zero,87(sp)
    e8808e66:	567d                	li	a2,-1
    e8808e68:	30cc8463          	beq	s9,a2,e8809170 <_svfiprintf_r+0x420>
    e8808e6c:	f7f37893          	andi	a7,t1,-129
    e8808e70:	00088d1b          	sext.w	s10,a7
    e8808e74:	66041063          	bnez	s0,e88094d4 <_svfiprintf_r+0x784>
    e8808e78:	4e0c9e63          	bnez	s9,e8809374 <_svfiprintf_r+0x624>
    e8808e7c:	7a079263          	bnez	a5,e8809620 <_svfiprintf_r+0x8d0>
    e8808e80:	00137993          	andi	s3,t1,1
    e8808e84:	0dc10b93          	addi	s7,sp,220
    e8808e88:	00098863          	beqz	s3,e8808e98 <_svfiprintf_r+0x148>
    e8808e8c:	03000793          	li	a5,48
    e8808e90:	0cf10da3          	sb	a5,219(sp)
    e8808e94:	0db10b93          	addi	s7,sp,219
    e8808e98:	013ca7b3          	slt	a5,s9,s3
    e8808e9c:	86ce                	mv	a3,s3
    e8808e9e:	05714403          	lbu	s0,87(sp)
    e8808ea2:	40fc968b          	mveqz	a3,s9,a5
    e8808ea6:	0006879b          	sext.w	a5,a3
    e8808eaa:	0017861b          	addiw	a2,a5,1
    e8808eae:	4087960b          	mveqz	a2,a5,s0
    e8808eb2:	8432                	mv	s0,a2
    e8808eb4:	a291                	j	e8808ff8 <_svfiprintf_r+0x2a8>
    e8808eb6:	010d6893          	ori	a7,s10,16
    e8808eba:	00088d1b          	sext.w	s10,a7
    e8808ebe:	6682                	ld	a3,0(sp)
    e8808ec0:	020d7793          	andi	a5,s10,32
    e8808ec4:	00868613          	addi	a2,a3,8
    e8808ec8:	26078763          	beqz	a5,e8809136 <_svfiprintf_r+0x3e6>
    e8808ecc:	629c                	ld	a5,0(a3)
    e8808ece:	843e                	mv	s0,a5
    e8808ed0:	2807c163          	bltz	a5,e8809152 <_svfiprintf_r+0x402>
    e8808ed4:	57fd                	li	a5,-1
    e8808ed6:	7cfc8a63          	beq	s9,a5,e88096aa <_svfiprintf_r+0x95a>
    e8808eda:	e032                	sd	a2,0(sp)
    e8808edc:	f7fd7893          	andi	a7,s10,-129
    e8808ee0:	0008831b          	sext.w	t1,a7
    e8808ee4:	72040b63          	beqz	s0,e880961a <_svfiprintf_r+0x8ca>
    e8808ee8:	47a5                	li	a5,9
    e8808eea:	7c87e563          	bltu	a5,s0,e88096b4 <_svfiprintf_r+0x964>
    e8808eee:	0304041b          	addiw	s0,s0,48
    e8808ef2:	0c810da3          	sb	s0,219(sp)
    e8808ef6:	8d1a                	mv	s10,t1
    e8808ef8:	4985                	li	s3,1
    e8808efa:	0db10b93          	addi	s7,sp,219
    e8808efe:	bf69                	j	e8808e98 <_svfiprintf_r+0x148>
    e8808f00:	010d6893          	ori	a7,s10,16
    e8808f04:	00088d1b          	sext.w	s10,a7
    e8808f08:	6682                	ld	a3,0(sp)
    e8808f0a:	020d7793          	andi	a5,s10,32
    e8808f0e:	00868613          	addi	a2,a3,8
    e8808f12:	20078263          	beqz	a5,e8809116 <_svfiprintf_r+0x3c6>
    e8808f16:	6280                	ld	s0,0(a3)
    e8808f18:	836a                	mv	t1,s10
    e8808f1a:	e032                	sd	a2,0(sp)
    e8808f1c:	4785                	li	a5,1
    e8808f1e:	b791                	j	e8808e62 <_svfiprintf_r+0x112>
    e8808f20:	41b489bb          	subw	s3,s1,s11
    e8808f24:	ec098ee3          	beqz	s3,e8808e00 <_svfiprintf_r+0xb0>
    e8808f28:	bd45                	j	e8808dd8 <_svfiprintf_r+0x88>
    e8808f2a:	0001                	nop
    e8808f2c:	1090                	addi	a2,sp,96
    e8808f2e:	85d2                	mv	a1,s4
    e8808f30:	8556                	mv	a0,s5
    e8808f32:	cafff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8808f36:	ed09                	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e8808f38:	874a                	mv	a4,s2
    e8808f3a:	bd6d                	j	e8808df4 <_svfiprintf_r+0xa4>
    e8808f3c:	77c6                	ld	a5,112(sp)
    e8808f3e:	cb89                	beqz	a5,e8808f50 <_svfiprintf_r+0x200>
    e8808f40:	1090                	addi	a2,sp,96
    e8808f42:	85d2                	mv	a1,s4
    e8808f44:	8556                	mv	a0,s5
    e8808f46:	c9bff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8808f4a:	0001                	nop
    e8808f4c:	00000013          	nop
    e8808f50:	010a5783          	lhu	a5,16(s4)
    e8808f54:	577d                	li	a4,-1
    e8808f56:	0407f793          	andi	a5,a5,64
    e8808f5a:	42f71c0b          	mvnez	s8,a4,a5
    e8808f5e:	60be                	ld	ra,456(sp)
    e8808f60:	641e                	ld	s0,448(sp)
    e8808f62:	8562                	mv	a0,s8
    e8808f64:	74fa                	ld	s1,440(sp)
    e8808f66:	795a                	ld	s2,432(sp)
    e8808f68:	79ba                	ld	s3,424(sp)
    e8808f6a:	7a1a                	ld	s4,416(sp)
    e8808f6c:	6afa                	ld	s5,408(sp)
    e8808f6e:	6b5a                	ld	s6,400(sp)
    e8808f70:	6bba                	ld	s7,392(sp)
    e8808f72:	6c1a                	ld	s8,384(sp)
    e8808f74:	7cf6                	ld	s9,376(sp)
    e8808f76:	7d56                	ld	s10,368(sp)
    e8808f78:	7db6                	ld	s11,360(sp)
    e8808f7a:	6179                	addi	sp,sp,464
    e8808f7c:	8082                	ret
    e8808f7e:	00097697          	auipc	a3,0x97
    e8808f82:	ee268693          	addi	a3,a3,-286 # e889fe60 <TWO52+0x268>
    e8808f86:	e836                	sd	a3,16(sp)
    e8808f88:	6682                	ld	a3,0(sp)
    e8808f8a:	020d7613          	andi	a2,s10,32
    e8808f8e:	00868593          	addi	a1,a3,8
    e8808f92:	2c061863          	bnez	a2,e8809262 <_svfiprintf_r+0x512>
    e8808f96:	010d7613          	andi	a2,s10,16
    e8808f9a:	6c061463          	bnez	a2,e8809662 <_svfiprintf_r+0x912>
    e8808f9e:	6682                	ld	a3,0(sp)
    e8808fa0:	040d7613          	andi	a2,s10,64
    e8808fa4:	4280                	lw	s0,0(a3)
    e8808fa6:	000600e3          	beqz	a2,e88097a6 <_svfiprintf_r+0xa56>
    e8808faa:	3c04340b          	extu	s0,s0,15,0
    e8808fae:	ac5d                	j	e8809264 <_svfiprintf_r+0x514>
    e8808fb0:	4481                	li	s1,0
    e8808fb2:	0001                	nop
    e8808fb4:	00000013          	nop
    e8808fb8:	981dc58b          	lbuia	a1,(s11),1,0
    e8808fbc:	0024961b          	slliw	a2,s1,0x2
    e8808fc0:	9cb1                	addw	s1,s1,a2
    e8808fc2:	fd07879b          	addiw	a5,a5,-48
    e8808fc6:	0014949b          	slliw	s1,s1,0x1
    e8808fca:	fd05861b          	addiw	a2,a1,-48
    e8808fce:	9cbd                	addw	s1,s1,a5
    e8808fd0:	0005879b          	sext.w	a5,a1
    e8808fd4:	fec9f2e3          	bgeu	s3,a2,e8808fb8 <_svfiprintf_r+0x268>
    e8808fd8:	fe07859b          	addiw	a1,a5,-32
    e8808fdc:	e4b575e3          	bgeu	a0,a1,e8808e26 <_svfiprintf_r+0xd6>
    e8808fe0:	dfb1                	beqz	a5,e8808f3c <_svfiprintf_r+0x1ec>
    e8808fe2:	06f10c23          	sb	a5,120(sp)
    e8808fe6:	04010ba3          	sb	zero,87(sp)
    e8808fea:	4405                	li	s0,1
    e8808fec:	4985                	li	s3,1
    e8808fee:	07810b93          	addi	s7,sp,120
    e8808ff2:	4c81                	li	s9,0
    e8808ff4:	00000013          	nop
    e8808ff8:	0024079b          	addiw	a5,s0,2
    e8808ffc:	002d7e93          	andi	t4,s10,2
    e8809000:	2e81                	sext.w	t4,t4
    e8809002:	084d7293          	andi	t0,s10,132
    e8809006:	43d7940b          	mvnez	s0,a5,t4
    e880900a:	7646                	ld	a2,112(sp)
    e880900c:	57a6                	lw	a5,104(sp)
    e880900e:	00029663          	bnez	t0,e880901a <_svfiprintf_r+0x2ca>
    e8809012:	4084833b          	subw	t1,s1,s0
    e8809016:	4c604163          	bgtz	t1,e88094d8 <_svfiprintf_r+0x788>
    e880901a:	05714f03          	lbu	t5,87(sp)
    e880901e:	0017851b          	addiw	a0,a5,1
    e8809022:	01070593          	addi	a1,a4,16
    e8809026:	020f0763          	beqz	t5,e8809054 <_svfiprintf_r+0x304>
    e880902a:	05710f13          	addi	t5,sp,87
    e880902e:	0605                	addi	a2,a2,1
    e8809030:	01e73023          	sd	t5,0(a4)
    e8809034:	4f05                	li	t5,1
    e8809036:	01e73423          	sd	t5,8(a4)
    e880903a:	f8b2                	sd	a2,112(sp)
    e880903c:	d4aa                	sw	a0,104(sp)
    e880903e:	431d                	li	t1,7
    e8809040:	52a34263          	blt	t1,a0,e8809564 <_svfiprintf_r+0x814>
    e8809044:	00278f1b          	addiw	t5,a5,2
    e8809048:	02070313          	addi	t1,a4,32
    e880904c:	87aa                	mv	a5,a0
    e880904e:	872e                	mv	a4,a1
    e8809050:	857a                	mv	a0,t5
    e8809052:	859a                	mv	a1,t1
    e8809054:	020e8063          	beqz	t4,e8809074 <_svfiprintf_r+0x324>
    e8809058:	08bc                	addi	a5,sp,88
    e880905a:	0609                	addi	a2,a2,2
    e880905c:	e31c                	sd	a5,0(a4)
    e880905e:	4789                	li	a5,2
    e8809060:	e71c                	sd	a5,8(a4)
    e8809062:	f8b2                	sd	a2,112(sp)
    e8809064:	d4aa                	sw	a0,104(sp)
    e8809066:	479d                	li	a5,7
    e8809068:	52a7c063          	blt	a5,a0,e8809588 <_svfiprintf_r+0x838>
    e880906c:	87aa                	mv	a5,a0
    e880906e:	872e                	mv	a4,a1
    e8809070:	2505                	addiw	a0,a0,1
    e8809072:	05c1                	addi	a1,a1,16
    e8809074:	08000313          	li	t1,128
    e8809078:	32628a63          	beq	t0,t1,e88093ac <_svfiprintf_r+0x65c>
    e880907c:	413c8cbb          	subw	s9,s9,s3
    e8809080:	3b904863          	bgtz	s9,e8809430 <_svfiprintf_r+0x6e0>
    e8809084:	964e                	add	a2,a2,s3
    e8809086:	f9375b8b          	sdd	s7,s3,(a4),0,4
    e880908a:	f8b2                	sd	a2,112(sp)
    e880908c:	d4aa                	sw	a0,104(sp)
    e880908e:	479d                	li	a5,7
    e8809090:	42a7c063          	blt	a5,a0,e88094b0 <_svfiprintf_r+0x760>
    e8809094:	004d7893          	andi	a7,s10,4
    e8809098:	00088663          	beqz	a7,e88090a4 <_svfiprintf_r+0x354>
    e880909c:	408489bb          	subw	s3,s1,s0
    e88090a0:	51304463          	bgtz	s3,e88095a8 <_svfiprintf_r+0x858>
    e88090a4:	0084a7b3          	slt	a5,s1,s0
    e88090a8:	40f4940b          	mveqz	s0,s1,a5
    e88090ac:	01840c3b          	addw	s8,s0,s8
    e88090b0:	40061a63          	bnez	a2,e88094c4 <_svfiprintf_r+0x774>
    e88090b4:	d482                	sw	zero,104(sp)
    e88090b6:	874a                	mv	a4,s2
    e88090b8:	b9d5                	j	e8808dac <_svfiprintf_r+0x5c>
    e88090ba:	6802                	ld	a6,0(sp)
    e88090bc:	04010ba3          	sb	zero,87(sp)
    e88090c0:	78884b8b          	ldia	s7,(a6),8,0
    e88090c4:	6a0b8663          	beqz	s7,e8809770 <_svfiprintf_r+0xa20>
    e88090c8:	57fd                	li	a5,-1
    e88090ca:	5afc8563          	beq	s9,a5,e8809674 <_svfiprintf_r+0x924>
    e88090ce:	8666                	mv	a2,s9
    e88090d0:	4581                	li	a1,0
    e88090d2:	855e                	mv	a0,s7
    e88090d4:	e442                	sd	a6,8(sp)
    e88090d6:	e03a                	sd	a4,0(sp)
    e88090d8:	75c720ef          	jal	ra,e887b834 <memchr>
    e88090dc:	f901470b          	ldd	a4,a6,(sp),0,4
    e88090e0:	72050563          	beqz	a0,e880980a <_svfiprintf_r+0xaba>
    e88090e4:	417509bb          	subw	s3,a0,s7
    e88090e8:	e042                	sd	a6,0(sp)
    e88090ea:	4c81                	li	s9,0
    e88090ec:	b375                	j	e8808e98 <_svfiprintf_r+0x148>
    e88090ee:	6b82                	ld	s7,0(sp)
    e88090f0:	04010ba3          	sb	zero,87(sp)
    e88090f4:	4405                	li	s0,1
    e88090f6:	588bc78b          	lwia	a5,(s7),8,0
    e88090fa:	4985                	li	s3,1
    e88090fc:	e05e                	sd	s7,0(sp)
    e88090fe:	06f10c23          	sb	a5,120(sp)
    e8809102:	07810b93          	addi	s7,sp,120
    e8809106:	b5f5                	j	e8808ff2 <_svfiprintf_r+0x2a2>
    e8809108:	080d6893          	ori	a7,s10,128
    e880910c:	00088d1b          	sext.w	s10,a7
    e8809110:	000dc783          	lbu	a5,0(s11)
    e8809114:	b311                	j	e8808e18 <_svfiprintf_r+0xc8>
    e8809116:	010d7793          	andi	a5,s10,16
    e880911a:	54079663          	bnez	a5,e8809666 <_svfiprintf_r+0x916>
    e880911e:	6682                	ld	a3,0(sp)
    e8809120:	040d7793          	andi	a5,s10,64
    e8809124:	4280                	lw	s0,0(a3)
    e8809126:	66078663          	beqz	a5,e8809792 <_svfiprintf_r+0xa42>
    e880912a:	3c04340b          	extu	s0,s0,15,0
    e880912e:	e032                	sd	a2,0(sp)
    e8809130:	836a                	mv	t1,s10
    e8809132:	4785                	li	a5,1
    e8809134:	b33d                	j	e8808e62 <_svfiprintf_r+0x112>
    e8809136:	010d7793          	andi	a5,s10,16
    e880913a:	52079063          	bnez	a5,e880965a <_svfiprintf_r+0x90a>
    e880913e:	040d7793          	andi	a5,s10,64
    e8809142:	68078563          	beqz	a5,e88097cc <_svfiprintf_r+0xa7c>
    e8809146:	6782                	ld	a5,0(sp)
    e8809148:	00079403          	lh	s0,0(a5) # ffffffffffff8000 <__DRAM0_INF_BASE+0xffffffff00008000>
    e880914c:	87a2                	mv	a5,s0
    e880914e:	d807d3e3          	bgez	a5,e8808ed4 <_svfiprintf_r+0x184>
    e8809152:	02d00793          	li	a5,45
    e8809156:	04f10ba3          	sb	a5,87(sp)
    e880915a:	e032                	sd	a2,0(sp)
    e880915c:	567d                	li	a2,-1
    e880915e:	40800433          	neg	s0,s0
    e8809162:	836a                	mv	t1,s10
    e8809164:	4785                	li	a5,1
    e8809166:	d0cc93e3          	bne	s9,a2,e8808e6c <_svfiprintf_r+0x11c>
    e880916a:	0001                	nop
    e880916c:	00000013          	nop
    e8809170:	4605                	li	a2,1
    e8809172:	d6c78be3          	beq	a5,a2,e8808ee8 <_svfiprintf_r+0x198>
    e8809176:	4609                	li	a2,2
    e8809178:	20c78863          	beq	a5,a2,e8809388 <_svfiprintf_r+0x638>
    e880917c:	09f0                	addi	a2,sp,220
    e880917e:	a011                	j	e8809182 <_svfiprintf_r+0x432>
    e8809180:	865e                	mv	a2,s7
    e8809182:	00747793          	andi	a5,s0,7
    e8809186:	03078793          	addi	a5,a5,48
    e880918a:	fef60fa3          	sb	a5,-1(a2)
    e880918e:	800d                	srli	s0,s0,0x3
    e8809190:	fff60b93          	addi	s7,a2,-1
    e8809194:	f475                	bnez	s0,e8809180 <_svfiprintf_r+0x430>
    e8809196:	00137593          	andi	a1,t1,1
    e880919a:	20058463          	beqz	a1,e88093a2 <_svfiprintf_r+0x652>
    e880919e:	03000593          	li	a1,48
    e88091a2:	20b78063          	beq	a5,a1,e88093a2 <_svfiprintf_r+0x652>
    e88091a6:	1679                	addi	a2,a2,-2
    e88091a8:	09fc                	addi	a5,sp,220
    e88091aa:	febb8fa3          	sb	a1,-1(s7)
    e88091ae:	40c789bb          	subw	s3,a5,a2
    e88091b2:	8d1a                	mv	s10,t1
    e88091b4:	8bb2                	mv	s7,a2
    e88091b6:	b1cd                	j	e8808e98 <_svfiprintf_r+0x148>
    e88091b8:	010d7793          	andi	a5,s10,16
    e88091bc:	48079b63          	bnez	a5,e8809652 <_svfiprintf_r+0x902>
    e88091c0:	6682                	ld	a3,0(sp)
    e88091c2:	040d7793          	andi	a5,s10,64
    e88091c6:	4280                	lw	s0,0(a3)
    e88091c8:	5e078863          	beqz	a5,e88097b8 <_svfiprintf_r+0xa68>
    e88091cc:	3c04340b          	extu	s0,s0,15,0
    e88091d0:	b159                	j	e8808e56 <_svfiprintf_r+0x106>
    e88091d2:	6602                	ld	a2,0(sp)
    e88091d4:	020d7793          	andi	a5,s10,32
    e88091d8:	7886468b          	ldia	a3,(a2),8,0
    e88091dc:	e032                	sd	a2,0(sp)
    e88091de:	18079863          	bnez	a5,e880936e <_svfiprintf_r+0x61e>
    e88091e2:	010d7793          	andi	a5,s10,16
    e88091e6:	18079463          	bnez	a5,e880936e <_svfiprintf_r+0x61e>
    e88091ea:	040d7793          	andi	a5,s10,64
    e88091ee:	60079a63          	bnez	a5,e8809802 <_svfiprintf_r+0xab2>
    e88091f2:	200d7893          	andi	a7,s10,512
    e88091f6:	62088663          	beqz	a7,e8809822 <_svfiprintf_r+0xad2>
    e88091fa:	01868023          	sb	s8,0(a3)
    e88091fe:	b67d                	j	e8808dac <_svfiprintf_r+0x5c>
    e8809200:	000dc783          	lbu	a5,0(s11)
    e8809204:	06c00613          	li	a2,108
    e8809208:	54c78b63          	beq	a5,a2,e880975e <_svfiprintf_r+0xa0e>
    e880920c:	010d6893          	ori	a7,s10,16
    e8809210:	00088d1b          	sext.w	s10,a7
    e8809214:	b111                	j	e8808e18 <_svfiprintf_r+0xc8>
    e8809216:	020d6893          	ori	a7,s10,32
    e880921a:	00088d1b          	sext.w	s10,a7
    e880921e:	000dc783          	lbu	a5,0(s11)
    e8809222:	bedd                	j	e8808e18 <_svfiprintf_r+0xc8>
    e8809224:	6b82                	ld	s7,0(sp)
    e8809226:	04e15783          	lhu	a5,78(sp)
    e880922a:	002d6893          	ori	a7,s10,2
    e880922e:	788bc40b          	ldia	s0,(s7),8,0
    e8809232:	04f11c23          	sh	a5,88(sp)
    e8809236:	0009a797          	auipc	a5,0x9a
    e880923a:	f7278793          	addi	a5,a5,-142 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e880923e:	e83e                	sd	a5,16(sp)
    e8809240:	0008831b          	sext.w	t1,a7
    e8809244:	e05e                	sd	s7,0(sp)
    e8809246:	4789                	li	a5,2
    e8809248:	b929                	j	e8808e62 <_svfiprintf_r+0x112>
    e880924a:	0009a697          	auipc	a3,0x9a
    e880924e:	f5e68693          	addi	a3,a3,-162 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e8809252:	e836                	sd	a3,16(sp)
    e8809254:	6682                	ld	a3,0(sp)
    e8809256:	020d7613          	andi	a2,s10,32
    e880925a:	00868593          	addi	a1,a3,8
    e880925e:	d2060ce3          	beqz	a2,e8808f96 <_svfiprintf_r+0x246>
    e8809262:	6280                	ld	s0,0(a3)
    e8809264:	001d7613          	andi	a2,s10,1
    e8809268:	ce01                	beqz	a2,e8809280 <_svfiprintf_r+0x530>
    e880926a:	c819                	beqz	s0,e8809280 <_svfiprintf_r+0x530>
    e880926c:	002d6893          	ori	a7,s10,2
    e8809270:	03000613          	li	a2,48
    e8809274:	04c10c23          	sb	a2,88(sp)
    e8809278:	04f10ca3          	sb	a5,89(sp)
    e880927c:	00088d1b          	sext.w	s10,a7
    e8809280:	bffd7893          	andi	a7,s10,-1025
    e8809284:	0008831b          	sext.w	t1,a7
    e8809288:	e02e                	sd	a1,0(sp)
    e880928a:	4789                	li	a5,2
    e880928c:	bed9                	j	e8808e62 <_svfiprintf_r+0x112>
    e880928e:	000dc783          	lbu	a5,0(s11)
    e8809292:	06800613          	li	a2,104
    e8809296:	4ac78b63          	beq	a5,a2,e880974c <_svfiprintf_r+0x9fc>
    e880929a:	040d6893          	ori	a7,s10,64
    e880929e:	00088d1b          	sext.w	s10,a7
    e88092a2:	be9d                	j	e8808e18 <_svfiprintf_r+0xc8>
    e88092a4:	6b82                	ld	s7,0(sp)
    e88092a6:	000dc783          	lbu	a5,0(s11)
    e88092aa:	588bc48b          	lwia	s1,(s7),8,0
    e88092ae:	e05e                	sd	s7,0(sp)
    e88092b0:	b604d4e3          	bgez	s1,e8808e18 <_svfiprintf_r+0xc8>
    e88092b4:	409004bb          	negw	s1,s1
    e88092b8:	2481                	sext.w	s1,s1
    e88092ba:	a0a5                	j	e8809322 <_svfiprintf_r+0x5d2>
    e88092bc:	8556                	mv	a0,s5
    e88092be:	e43a                	sd	a4,8(sp)
    e88092c0:	f00fb0ef          	jal	ra,e88049c0 <_localeconv_r>
    e88092c4:	651c                	ld	a5,8(a0)
    e88092c6:	853e                	mv	a0,a5
    e88092c8:	fc3e                	sd	a5,56(sp)
    e88092ca:	89ef70ef          	jal	ra,e8800368 <strlen>
    e88092ce:	e0aa                	sd	a0,64(sp)
    e88092d0:	8baa                	mv	s7,a0
    e88092d2:	8556                	mv	a0,s5
    e88092d4:	eecfb0ef          	jal	ra,e88049c0 <_localeconv_r>
    e88092d8:	6914                	ld	a3,16(a0)
    e88092da:	6722                	ld	a4,8(sp)
    e88092dc:	f836                	sd	a3,48(sp)
    e88092de:	360b8663          	beqz	s7,e880964a <_svfiprintf_r+0x8fa>
    e88092e2:	000dc783          	lbu	a5,0(s11)
    e88092e6:	b20689e3          	beqz	a3,e8808e18 <_svfiprintf_r+0xc8>
    e88092ea:	0006c583          	lbu	a1,0(a3)
    e88092ee:	400d6613          	ori	a2,s10,1024
    e88092f2:	2601                	sext.w	a2,a2
    e88092f4:	42b61d0b          	mvnez	s10,a2,a1
    e88092f8:	b605                	j	e8808e18 <_svfiprintf_r+0xc8>
    e88092fa:	001d6893          	ori	a7,s10,1
    e88092fe:	00088d1b          	sext.w	s10,a7
    e8809302:	000dc783          	lbu	a5,0(s11)
    e8809306:	be09                	j	e8808e18 <_svfiprintf_r+0xc8>
    e8809308:	05714603          	lbu	a2,87(sp)
    e880930c:	000dc783          	lbu	a5,0(s11)
    e8809310:	b00614e3          	bnez	a2,e8808e18 <_svfiprintf_r+0xc8>
    e8809314:	02000613          	li	a2,32
    e8809318:	04c10ba3          	sb	a2,87(sp)
    e880931c:	bcf5                	j	e8808e18 <_svfiprintf_r+0xc8>
    e880931e:	000dc783          	lbu	a5,0(s11)
    e8809322:	004d6893          	ori	a7,s10,4
    e8809326:	00088d1b          	sext.w	s10,a7
    e880932a:	b4fd                	j	e8808e18 <_svfiprintf_r+0xc8>
    e880932c:	02b00793          	li	a5,43
    e8809330:	04f10ba3          	sb	a5,87(sp)
    e8809334:	000dc783          	lbu	a5,0(s11)
    e8809338:	b4c5                	j	e8808e18 <_svfiprintf_r+0xc8>
    e880933a:	866e                	mv	a2,s11
    e880933c:	9816478b          	lbuia	a5,(a2),1,0
    e8809340:	4e878863          	beq	a5,s0,e8809830 <_svfiprintf_r+0xae0>
    e8809344:	fd07859b          	addiw	a1,a5,-48
    e8809348:	8db2                	mv	s11,a2
    e880934a:	4c81                	li	s9,0
    e880934c:	acb9e9e3          	bltu	s3,a1,e8808e1e <_svfiprintf_r+0xce>
    e8809350:	002c961b          	slliw	a2,s9,0x2
    e8809354:	981dc78b          	lbuia	a5,(s11),1,0
    e8809358:	019606bb          	addw	a3,a2,s9
    e880935c:	0016969b          	slliw	a3,a3,0x1
    e8809360:	00b68cbb          	addw	s9,a3,a1
    e8809364:	fd07859b          	addiw	a1,a5,-48
    e8809368:	feb9f4e3          	bgeu	s3,a1,e8809350 <_svfiprintf_r+0x600>
    e880936c:	bc4d                	j	e8808e1e <_svfiprintf_r+0xce>
    e880936e:	0186b023          	sd	s8,0(a3)
    e8809372:	bc2d                	j	e8808dac <_svfiprintf_r+0x5c>
    e8809374:	4605                	li	a2,1
    e8809376:	4ac78a63          	beq	a5,a2,e880982a <_svfiprintf_r+0xada>
    e880937a:	4609                	li	a2,2
    e880937c:	836a                	mv	t1,s10
    e880937e:	dec79fe3          	bne	a5,a2,e880917c <_svfiprintf_r+0x42c>
    e8809382:	0001                	nop
    e8809384:	00000013          	nop
    e8809388:	0dc10b93          	addi	s7,sp,220
    e880938c:	00000013          	nop
    e8809390:	66c2                	ld	a3,16(sp)
    e8809392:	00f47793          	andi	a5,s0,15
    e8809396:	8011                	srli	s0,s0,0x4
    e8809398:	80f6c78b          	lrbu	a5,a3,a5,0
    e880939c:	09fbd78b          	sbib	a5,(s7),-1,0
    e88093a0:	f865                	bnez	s0,e8809390 <_svfiprintf_r+0x640>
    e88093a2:	09fc                	addi	a5,sp,220
    e88093a4:	417789bb          	subw	s3,a5,s7
    e88093a8:	8d1a                	mv	s10,t1
    e88093aa:	b4fd                	j	e8808e98 <_svfiprintf_r+0x148>
    e88093ac:	4084833b          	subw	t1,s1,s0
    e88093b0:	cc6056e3          	blez	t1,e880907c <_svfiprintf_r+0x32c>
    e88093b4:	4ec1                	li	t4,16
    e88093b6:	446edf63          	bge	t4,t1,e8809814 <_svfiprintf_r+0xac4>
    e88093ba:	00096e97          	auipc	t4,0x96
    e88093be:	4e6e8e93          	addi	t4,t4,1254 # e889f8a0 <zeroes.4553>
    e88093c2:	4f41                	li	t5,16
    e88093c4:	4f9d                	li	t6,7
    e88093c6:	a021                	j	e88093ce <_svfiprintf_r+0x67e>
    e88093c8:	3341                	addiw	t1,t1,-16
    e88093ca:	026f5e63          	bge	t5,t1,e8809406 <_svfiprintf_r+0x6b6>
    e88093ce:	2785                	addiw	a5,a5,1
    e88093d0:	0641                	addi	a2,a2,16
    e88093d2:	f9e75e8b          	sdd	t4,t5,(a4),0,4
    e88093d6:	f8b2                	sd	a2,112(sp)
    e88093d8:	d4be                	sw	a5,104(sp)
    e88093da:	0741                	addi	a4,a4,16
    e88093dc:	feffd6e3          	bge	t6,a5,e88093c8 <_svfiprintf_r+0x678>
    e88093e0:	1090                	addi	a2,sp,96
    e88093e2:	85d2                	mv	a1,s4
    e88093e4:	8556                	mv	a0,s5
    e88093e6:	ec76                	sd	t4,24(sp)
    e88093e8:	e41a                	sd	t1,8(sp)
    e88093ea:	ff6ff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e88093ee:	b60511e3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e88093f2:	6322                	ld	t1,8(sp)
    e88093f4:	4f41                	li	t5,16
    e88093f6:	7646                	ld	a2,112(sp)
    e88093f8:	3341                	addiw	t1,t1,-16
    e88093fa:	57a6                	lw	a5,104(sp)
    e88093fc:	874a                	mv	a4,s2
    e88093fe:	6ee2                	ld	t4,24(sp)
    e8809400:	4f9d                	li	t6,7
    e8809402:	fc6f46e3          	blt	t5,t1,e88093ce <_svfiprintf_r+0x67e>
    e8809406:	2785                	addiw	a5,a5,1
    e8809408:	01070f13          	addi	t5,a4,16
    e880940c:	961a                	add	a2,a2,t1
    e880940e:	f8675e8b          	sdd	t4,t1,(a4),0,4
    e8809412:	f8b2                	sd	a2,112(sp)
    e8809414:	d4be                	sw	a5,104(sp)
    e8809416:	471d                	li	a4,7
    e8809418:	30f74c63          	blt	a4,a5,e8809730 <_svfiprintf_r+0x9e0>
    e880941c:	413c8cbb          	subw	s9,s9,s3
    e8809420:	0017851b          	addiw	a0,a5,1
    e8809424:	010f0593          	addi	a1,t5,16
    e8809428:	877a                	mv	a4,t5
    e880942a:	c5905de3          	blez	s9,e8809084 <_svfiprintf_r+0x334>
    e880942e:	0001                	nop
    e8809430:	4341                	li	t1,16
    e8809432:	3b935663          	bge	t1,s9,e88097de <_svfiprintf_r+0xa8e>
    e8809436:	00096e97          	auipc	t4,0x96
    e880943a:	46ae8e93          	addi	t4,t4,1130 # e889f8a0 <zeroes.4553>
    e880943e:	4f1d                	li	t5,7
    e8809440:	a029                	j	e880944a <_svfiprintf_r+0x6fa>
    e8809442:	0001                	nop
    e8809444:	3cc1                	addiw	s9,s9,-16
    e8809446:	03935c63          	bge	t1,s9,e880947e <_svfiprintf_r+0x72e>
    e880944a:	2785                	addiw	a5,a5,1
    e880944c:	0641                	addi	a2,a2,16
    e880944e:	f8675e8b          	sdd	t4,t1,(a4),0,4
    e8809452:	f8b2                	sd	a2,112(sp)
    e8809454:	d4be                	sw	a5,104(sp)
    e8809456:	0741                	addi	a4,a4,16
    e8809458:	feff56e3          	bge	t5,a5,e8809444 <_svfiprintf_r+0x6f4>
    e880945c:	1090                	addi	a2,sp,96
    e880945e:	85d2                	mv	a1,s4
    e8809460:	8556                	mv	a0,s5
    e8809462:	e476                	sd	t4,8(sp)
    e8809464:	f7cff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8809468:	ae0514e3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e880946c:	4341                	li	t1,16
    e880946e:	3cc1                	addiw	s9,s9,-16
    e8809470:	7646                	ld	a2,112(sp)
    e8809472:	57a6                	lw	a5,104(sp)
    e8809474:	874a                	mv	a4,s2
    e8809476:	6ea2                	ld	t4,8(sp)
    e8809478:	4f1d                	li	t5,7
    e880947a:	fd9348e3          	blt	t1,s9,e880944a <_svfiprintf_r+0x6fa>
    e880947e:	0017851b          	addiw	a0,a5,1
    e8809482:	01070793          	addi	a5,a4,16
    e8809486:	9666                	add	a2,a2,s9
    e8809488:	f9975e8b          	sdd	t4,s9,(a4),0,4
    e880948c:	f8b2                	sd	a2,112(sp)
    e880948e:	d4aa                	sw	a0,104(sp)
    e8809490:	471d                	li	a4,7
    e8809492:	18a74c63          	blt	a4,a0,e880962a <_svfiprintf_r+0x8da>
    e8809496:	873e                	mv	a4,a5
    e8809498:	2505                	addiw	a0,a0,1
    e880949a:	964e                	add	a2,a2,s3
    e880949c:	f9375b8b          	sdd	s7,s3,(a4),0,4
    e88094a0:	f8b2                	sd	a2,112(sp)
    e88094a2:	d4aa                	sw	a0,104(sp)
    e88094a4:	01078593          	addi	a1,a5,16
    e88094a8:	479d                	li	a5,7
    e88094aa:	bea7d5e3          	bge	a5,a0,e8809094 <_svfiprintf_r+0x344>
    e88094ae:	0001                	nop
    e88094b0:	1090                	addi	a2,sp,96
    e88094b2:	85d2                	mv	a1,s4
    e88094b4:	8556                	mv	a0,s5
    e88094b6:	f2aff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e88094ba:	a8051be3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e88094be:	7646                	ld	a2,112(sp)
    e88094c0:	85ca                	mv	a1,s2
    e88094c2:	bec9                	j	e8809094 <_svfiprintf_r+0x344>
    e88094c4:	1090                	addi	a2,sp,96
    e88094c6:	85d2                	mv	a1,s4
    e88094c8:	8556                	mv	a0,s5
    e88094ca:	f16ff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e88094ce:	be0503e3          	beqz	a0,e88090b4 <_svfiprintf_r+0x364>
    e88094d2:	bcbd                	j	e8808f50 <_svfiprintf_r+0x200>
    e88094d4:	836a                	mv	t1,s10
    e88094d6:	b969                	j	e8809170 <_svfiprintf_r+0x420>
    e88094d8:	45c1                	li	a1,16
    e88094da:	00096f17          	auipc	t5,0x96
    e88094de:	3b6f0f13          	addi	t5,t5,950 # e889f890 <blanks.4552>
    e88094e2:	4fc1                	li	t6,16
    e88094e4:	439d                	li	t2,7
    e88094e6:	0065c663          	blt	a1,t1,e88094f2 <_svfiprintf_r+0x7a2>
    e88094ea:	a0a1                	j	e8809532 <_svfiprintf_r+0x7e2>
    e88094ec:	3341                	addiw	t1,t1,-16
    e88094ee:	046fd263          	bge	t6,t1,e8809532 <_svfiprintf_r+0x7e2>
    e88094f2:	2785                	addiw	a5,a5,1
    e88094f4:	0641                	addi	a2,a2,16
    e88094f6:	f9f75f0b          	sdd	t5,t6,(a4),0,4
    e88094fa:	f8b2                	sd	a2,112(sp)
    e88094fc:	d4be                	sw	a5,104(sp)
    e88094fe:	0741                	addi	a4,a4,16
    e8809500:	fef3d6e3          	bge	t2,a5,e88094ec <_svfiprintf_r+0x79c>
    e8809504:	1090                	addi	a2,sp,96
    e8809506:	85d2                	mv	a1,s4
    e8809508:	8556                	mv	a0,s5
    e880950a:	f47a                	sd	t5,40(sp)
    e880950c:	f01a                	sd	t1,32(sp)
    e880950e:	ec16                	sd	t0,24(sp)
    e8809510:	e476                	sd	t4,8(sp)
    e8809512:	eceff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8809516:	a2051de3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e880951a:	7302                	ld	t1,32(sp)
    e880951c:	4fc1                	li	t6,16
    e880951e:	7646                	ld	a2,112(sp)
    e8809520:	3341                	addiw	t1,t1,-16
    e8809522:	57a6                	lw	a5,104(sp)
    e8809524:	874a                	mv	a4,s2
    e8809526:	7f22                	ld	t5,40(sp)
    e8809528:	439d                	li	t2,7
    e880952a:	62e2                	ld	t0,24(sp)
    e880952c:	6ea2                	ld	t4,8(sp)
    e880952e:	fc6fc2e3          	blt	t6,t1,e88094f2 <_svfiprintf_r+0x7a2>
    e8809532:	2785                	addiw	a5,a5,1
    e8809534:	961a                	add	a2,a2,t1
    e8809536:	f8675f0b          	sdd	t5,t1,(a4),0,4
    e880953a:	f8b2                	sd	a2,112(sp)
    e880953c:	d4be                	sw	a5,104(sp)
    e880953e:	459d                	li	a1,7
    e8809540:	0741                	addi	a4,a4,16
    e8809542:	acf5dce3          	bge	a1,a5,e880901a <_svfiprintf_r+0x2ca>
    e8809546:	1090                	addi	a2,sp,96
    e8809548:	85d2                	mv	a1,s4
    e880954a:	8556                	mv	a0,s5
    e880954c:	ec16                	sd	t0,24(sp)
    e880954e:	e476                	sd	t4,8(sp)
    e8809550:	e90ff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8809554:	9e051ee3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e8809558:	7646                	ld	a2,112(sp)
    e880955a:	57a6                	lw	a5,104(sp)
    e880955c:	874a                	mv	a4,s2
    e880955e:	62e2                	ld	t0,24(sp)
    e8809560:	6ea2                	ld	t4,8(sp)
    e8809562:	bc65                	j	e880901a <_svfiprintf_r+0x2ca>
    e8809564:	1090                	addi	a2,sp,96
    e8809566:	85d2                	mv	a1,s4
    e8809568:	8556                	mv	a0,s5
    e880956a:	ec16                	sd	t0,24(sp)
    e880956c:	e476                	sd	t4,8(sp)
    e880956e:	e72ff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8809572:	9c051fe3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e8809576:	57a6                	lw	a5,104(sp)
    e8809578:	7646                	ld	a2,112(sp)
    e880957a:	198c                	addi	a1,sp,240
    e880957c:	0017851b          	addiw	a0,a5,1
    e8809580:	874a                	mv	a4,s2
    e8809582:	62e2                	ld	t0,24(sp)
    e8809584:	6ea2                	ld	t4,8(sp)
    e8809586:	b4f9                	j	e8809054 <_svfiprintf_r+0x304>
    e8809588:	1090                	addi	a2,sp,96
    e880958a:	85d2                	mv	a1,s4
    e880958c:	8556                	mv	a0,s5
    e880958e:	e416                	sd	t0,8(sp)
    e8809590:	e50ff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8809594:	9a051ee3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e8809598:	57a6                	lw	a5,104(sp)
    e880959a:	7646                	ld	a2,112(sp)
    e880959c:	198c                	addi	a1,sp,240
    e880959e:	0017851b          	addiw	a0,a5,1
    e88095a2:	874a                	mv	a4,s2
    e88095a4:	62a2                	ld	t0,8(sp)
    e88095a6:	b4f9                	j	e8809074 <_svfiprintf_r+0x324>
    e88095a8:	4741                	li	a4,16
    e88095aa:	57a6                	lw	a5,104(sp)
    e88095ac:	00096f17          	auipc	t5,0x96
    e88095b0:	2e4f0f13          	addi	t5,t5,740 # e889f890 <blanks.4552>
    e88095b4:	4cc1                	li	s9,16
    e88095b6:	4b9d                	li	s7,7
    e88095b8:	01374763          	blt	a4,s3,e88095c6 <_svfiprintf_r+0x876>
    e88095bc:	a82d                	j	e88095f6 <_svfiprintf_r+0x8a6>
    e88095be:	0001                	nop
    e88095c0:	39c1                	addiw	s3,s3,-16
    e88095c2:	033cda63          	bge	s9,s3,e88095f6 <_svfiprintf_r+0x8a6>
    e88095c6:	2785                	addiw	a5,a5,1
    e88095c8:	0641                	addi	a2,a2,16
    e88095ca:	f995df0b          	sdd	t5,s9,(a1),0,4
    e88095ce:	f8b2                	sd	a2,112(sp)
    e88095d0:	d4be                	sw	a5,104(sp)
    e88095d2:	05c1                	addi	a1,a1,16
    e88095d4:	fefbd6e3          	bge	s7,a5,e88095c0 <_svfiprintf_r+0x870>
    e88095d8:	1090                	addi	a2,sp,96
    e88095da:	85d2                	mv	a1,s4
    e88095dc:	8556                	mv	a0,s5
    e88095de:	e47a                	sd	t5,8(sp)
    e88095e0:	e00ff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e88095e4:	960516e3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e88095e8:	39c1                	addiw	s3,s3,-16
    e88095ea:	7646                	ld	a2,112(sp)
    e88095ec:	57a6                	lw	a5,104(sp)
    e88095ee:	85ca                	mv	a1,s2
    e88095f0:	6f22                	ld	t5,8(sp)
    e88095f2:	fd3ccae3          	blt	s9,s3,e88095c6 <_svfiprintf_r+0x876>
    e88095f6:	2785                	addiw	a5,a5,1
    e88095f8:	964e                	add	a2,a2,s3
    e88095fa:	f935df0b          	sdd	t5,s3,(a1),0,4
    e88095fe:	f8b2                	sd	a2,112(sp)
    e8809600:	d4be                	sw	a5,104(sp)
    e8809602:	471d                	li	a4,7
    e8809604:	aaf750e3          	bge	a4,a5,e88090a4 <_svfiprintf_r+0x354>
    e8809608:	1090                	addi	a2,sp,96
    e880960a:	85d2                	mv	a1,s4
    e880960c:	8556                	mv	a0,s5
    e880960e:	dd2ff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8809612:	92051fe3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e8809616:	7646                	ld	a2,112(sp)
    e8809618:	b471                	j	e88090a4 <_svfiprintf_r+0x354>
    e880961a:	8c0c9ae3          	bnez	s9,e8808eee <_svfiprintf_r+0x19e>
    e880961e:	8d1a                	mv	s10,t1
    e8809620:	4c81                	li	s9,0
    e8809622:	4981                	li	s3,0
    e8809624:	0dc10b93          	addi	s7,sp,220
    e8809628:	b885                	j	e8808e98 <_svfiprintf_r+0x148>
    e880962a:	1090                	addi	a2,sp,96
    e880962c:	85d2                	mv	a1,s4
    e880962e:	8556                	mv	a0,s5
    e8809630:	db0ff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e8809634:	90051ee3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e8809638:	5526                	lw	a0,104(sp)
    e880963a:	7646                	ld	a2,112(sp)
    e880963c:	198c                	addi	a1,sp,240
    e880963e:	2505                	addiw	a0,a0,1
    e8809640:	874a                	mv	a4,s2
    e8809642:	b489                	j	e8809084 <_svfiprintf_r+0x334>
    e8809644:	84ee                	mv	s1,s11
    e8809646:	fbaff06f          	j	e8808e00 <_svfiprintf_r+0xb0>
    e880964a:	000dc783          	lbu	a5,0(s11)
    e880964e:	fcaff06f          	j	e8808e18 <_svfiprintf_r+0xc8>
    e8809652:	6782                	ld	a5,0(sp)
    e8809654:	6380                	ld	s0,0(a5)
    e8809656:	801ff06f          	j	e8808e56 <_svfiprintf_r+0x106>
    e880965a:	6782                	ld	a5,0(sp)
    e880965c:	639c                	ld	a5,0(a5)
    e880965e:	843e                	mv	s0,a5
    e8809660:	b885                	j	e8808ed0 <_svfiprintf_r+0x180>
    e8809662:	6682                	ld	a3,0(sp)
    e8809664:	befd                	j	e8809262 <_svfiprintf_r+0x512>
    e8809666:	6782                	ld	a5,0(sp)
    e8809668:	836a                	mv	t1,s10
    e880966a:	e032                	sd	a2,0(sp)
    e880966c:	6380                	ld	s0,0(a5)
    e880966e:	4785                	li	a5,1
    e8809670:	ff2ff06f          	j	e8808e62 <_svfiprintf_r+0x112>
    e8809674:	855e                	mv	a0,s7
    e8809676:	f8e1580b          	sdd	a6,a4,(sp),0,4
    e880967a:	ceff60ef          	jal	ra,e8800368 <strlen>
    e880967e:	0005099b          	sext.w	s3,a0
    e8809682:	4c81                	li	s9,0
    e8809684:	6722                	ld	a4,8(sp)
    e8809686:	813ff06f          	j	e8808e98 <_svfiprintf_r+0x148>
    e880968a:	04000593          	li	a1,64
    e880968e:	305720ef          	jal	ra,e887c192 <_malloc_r>
    e8809692:	00aa3023          	sd	a0,0(s4)
    e8809696:	00aa3c23          	sd	a0,24(s4)
    e880969a:	1a050863          	beqz	a0,e880984a <_svfiprintf_r+0xafa>
    e880969e:	04000793          	li	a5,64
    e88096a2:	02fa2023          	sw	a5,32(s4)
    e88096a6:	edeff06f          	j	e8808d84 <_svfiprintf_r+0x34>
    e88096aa:	e032                	sd	a2,0(sp)
    e88096ac:	47a5                	li	a5,9
    e88096ae:	836a                	mv	t1,s10
    e88096b0:	8287ffe3          	bgeu	a5,s0,e8808eee <_svfiprintf_r+0x19e>
    e88096b4:	40037893          	andi	a7,t1,1024
    e88096b8:	2881                	sext.w	a7,a7
    e88096ba:	4581                	li	a1,0
    e88096bc:	09f0                	addi	a2,sp,220
    e88096be:	49a9                	li	s3,10
    e88096c0:	4ea5                	li	t4,9
    e88096c2:	0ff00d13          	li	s10,255
    e88096c6:	a039                	j	e88096d4 <_svfiprintf_r+0x984>
    e88096c8:	033457b3          	divu	a5,s0,s3
    e88096cc:	cc8efbe3          	bgeu	t4,s0,e88093a2 <_svfiprintf_r+0x652>
    e88096d0:	843e                	mv	s0,a5
    e88096d2:	865e                	mv	a2,s7
    e88096d4:	fff60b93          	addi	s7,a2,-1
    e88096d8:	2585                	addiw	a1,a1,1
    e88096da:	033477b3          	remu	a5,s0,s3
    e88096de:	0307879b          	addiw	a5,a5,48
    e88096e2:	fef60fa3          	sb	a5,-1(a2)
    e88096e6:	fe0881e3          	beqz	a7,e88096c8 <_svfiprintf_r+0x978>
    e88096ea:	77c2                	ld	a5,48(sp)
    e88096ec:	0007c783          	lbu	a5,0(a5)
    e88096f0:	fcb79ce3          	bne	a5,a1,e88096c8 <_svfiprintf_r+0x978>
    e88096f4:	fda78ae3          	beq	a5,s10,e88096c8 <_svfiprintf_r+0x978>
    e88096f8:	ca8ef5e3          	bgeu	t4,s0,e88093a2 <_svfiprintf_r+0x652>
    e88096fc:	6786                	ld	a5,64(sp)
    e88096fe:	75e2                	ld	a1,56(sp)
    e8809700:	f046                	sd	a7,32(sp)
    e8809702:	40fb8bb3          	sub	s7,s7,a5
    e8809706:	863e                	mv	a2,a5
    e8809708:	855e                	mv	a0,s7
    e880970a:	ec1a                	sd	t1,24(sp)
    e880970c:	e43a                	sd	a4,8(sp)
    e880970e:	c42fc0ef          	jal	ra,e8805b50 <strncpy>
    e8809712:	7742                	ld	a4,48(sp)
    e8809714:	033457b3          	divu	a5,s0,s3
    e8809718:	4581                	li	a1,0
    e880971a:	00174603          	lbu	a2,1(a4)
    e880971e:	6362                	ld	t1,24(sp)
    e8809720:	7882                	ld	a7,32(sp)
    e8809722:	00c03633          	snez	a2,a2
    e8809726:	9732                	add	a4,a4,a2
    e8809728:	f83a                	sd	a4,48(sp)
    e880972a:	4ea5                	li	t4,9
    e880972c:	6722                	ld	a4,8(sp)
    e880972e:	b74d                	j	e88096d0 <_svfiprintf_r+0x980>
    e8809730:	1090                	addi	a2,sp,96
    e8809732:	85d2                	mv	a1,s4
    e8809734:	8556                	mv	a0,s5
    e8809736:	caaff0ef          	jal	ra,e8808be0 <__ssprint_r>
    e880973a:	80051be3          	bnez	a0,e8808f50 <_svfiprintf_r+0x200>
    e880973e:	57a6                	lw	a5,104(sp)
    e8809740:	7646                	ld	a2,112(sp)
    e8809742:	198c                	addi	a1,sp,240
    e8809744:	0017851b          	addiw	a0,a5,1
    e8809748:	874a                	mv	a4,s2
    e880974a:	ba0d                	j	e880907c <_svfiprintf_r+0x32c>
    e880974c:	200d6893          	ori	a7,s10,512
    e8809750:	001dc783          	lbu	a5,1(s11)
    e8809754:	00088d1b          	sext.w	s10,a7
    e8809758:	0d85                	addi	s11,s11,1
    e880975a:	ebeff06f          	j	e8808e18 <_svfiprintf_r+0xc8>
    e880975e:	020d6893          	ori	a7,s10,32
    e8809762:	001dc783          	lbu	a5,1(s11)
    e8809766:	00088d1b          	sext.w	s10,a7
    e880976a:	0d85                	addi	s11,s11,1
    e880976c:	eacff06f          	j	e8808e18 <_svfiprintf_r+0xc8>
    e8809770:	4799                	li	a5,6
    e8809772:	000c899b          	sext.w	s3,s9
    e8809776:	0137b9b3          	sltu	s3,a5,s3
    e880977a:	413c978b          	mveqz	a5,s9,s3
    e880977e:	0007899b          	sext.w	s3,a5
    e8809782:	844e                	mv	s0,s3
    e8809784:	e042                	sd	a6,0(sp)
    e8809786:	000cab97          	auipc	s7,0xca
    e880978a:	66ab8b93          	addi	s7,s7,1642 # e88d3df0 <dhcp_discover_request_options+0x5e8>
    e880978e:	865ff06f          	j	e8808ff2 <_svfiprintf_r+0x2a2>
    e8809792:	200d7793          	andi	a5,s10,512
    e8809796:	cfb9                	beqz	a5,e88097f4 <_svfiprintf_r+0xaa4>
    e8809798:	0ff47413          	andi	s0,s0,255
    e880979c:	e032                	sd	a2,0(sp)
    e880979e:	836a                	mv	t1,s10
    e88097a0:	4785                	li	a5,1
    e88097a2:	ec0ff06f          	j	e8808e62 <_svfiprintf_r+0x112>
    e88097a6:	0ff47513          	andi	a0,s0,255
    e88097aa:	200d7613          	andi	a2,s10,512
    e88097ae:	7c04340b          	extu	s0,s0,31,0
    e88097b2:	42c5140b          	mvnez	s0,a0,a2
    e88097b6:	b47d                	j	e8809264 <_svfiprintf_r+0x514>
    e88097b8:	0ff47593          	andi	a1,s0,255
    e88097bc:	200d7793          	andi	a5,s10,512
    e88097c0:	7c04340b          	extu	s0,s0,31,0
    e88097c4:	42f5940b          	mvnez	s0,a1,a5
    e88097c8:	e8eff06f          	j	e8808e56 <_svfiprintf_r+0x106>
    e88097cc:	200d7793          	andi	a5,s10,512
    e88097d0:	cf89                	beqz	a5,e88097ea <_svfiprintf_r+0xa9a>
    e88097d2:	6782                	ld	a5,0(sp)
    e88097d4:	00078403          	lb	s0,0(a5)
    e88097d8:	87a2                	mv	a5,s0
    e88097da:	ef6ff06f          	j	e8808ed0 <_svfiprintf_r+0x180>
    e88097de:	87ae                	mv	a5,a1
    e88097e0:	00096e97          	auipc	t4,0x96
    e88097e4:	0c0e8e93          	addi	t4,t4,192 # e889f8a0 <zeroes.4553>
    e88097e8:	b979                	j	e8809486 <_svfiprintf_r+0x736>
    e88097ea:	6782                	ld	a5,0(sp)
    e88097ec:	4380                	lw	s0,0(a5)
    e88097ee:	87a2                	mv	a5,s0
    e88097f0:	ee0ff06f          	j	e8808ed0 <_svfiprintf_r+0x180>
    e88097f4:	7c04340b          	extu	s0,s0,31,0
    e88097f8:	e032                	sd	a2,0(sp)
    e88097fa:	836a                	mv	t1,s10
    e88097fc:	4785                	li	a5,1
    e88097fe:	e64ff06f          	j	e8808e62 <_svfiprintf_r+0x112>
    e8809802:	01869023          	sh	s8,0(a3)
    e8809806:	da6ff06f          	j	e8808dac <_svfiprintf_r+0x5c>
    e880980a:	89e6                	mv	s3,s9
    e880980c:	e042                	sd	a6,0(sp)
    e880980e:	4c81                	li	s9,0
    e8809810:	e88ff06f          	j	e8808e98 <_svfiprintf_r+0x148>
    e8809814:	8f2e                	mv	t5,a1
    e8809816:	87aa                	mv	a5,a0
    e8809818:	00096e97          	auipc	t4,0x96
    e880981c:	088e8e93          	addi	t4,t4,136 # e889f8a0 <zeroes.4553>
    e8809820:	b6f5                	j	e880940c <_svfiprintf_r+0x6bc>
    e8809822:	0186a023          	sw	s8,0(a3)
    e8809826:	d86ff06f          	j	e8808dac <_svfiprintf_r+0x5c>
    e880982a:	836a                	mv	t1,s10
    e880982c:	ec2ff06f          	j	e8808eee <_svfiprintf_r+0x19e>
    e8809830:	6b82                	ld	s7,0(sp)
    e8809832:	588bc68b          	lwia	a3,(s7),8,0
    e8809836:	0006d363          	bgez	a3,e880983c <_svfiprintf_r+0xaec>
    e880983a:	56fd                	li	a3,-1
    e880983c:	001dc783          	lbu	a5,1(s11)
    e8809840:	8cb6                	mv	s9,a3
    e8809842:	e05e                	sd	s7,0(sp)
    e8809844:	8db2                	mv	s11,a2
    e8809846:	dd2ff06f          	j	e8808e18 <_svfiprintf_r+0xc8>
    e880984a:	47b1                	li	a5,12
    e880984c:	00faa023          	sw	a5,0(s5)
    e8809850:	5c7d                	li	s8,-1
    e8809852:	f0cff06f          	j	e8808f5e <_svfiprintf_r+0x20e>
	...

00000000e8809860 <__swbuf_r>:
    e8809860:	7179                	addi	sp,sp,-48
    e8809862:	e422                	sd	s0,8(sp)
    e8809864:	e826                	sd	s1,16(sp)
    e8809866:	ec4a                	sd	s2,24(sp)
    e8809868:	f406                	sd	ra,40(sp)
    e880986a:	f04e                	sd	s3,32(sp)
    e880986c:	892a                	mv	s2,a0
    e880986e:	84ae                	mv	s1,a1
    e8809870:	8432                	mv	s0,a2
    e8809872:	c119                	beqz	a0,e8809878 <__swbuf_r+0x18>
    e8809874:	493c                	lw	a5,80(a0)
    e8809876:	c3ed                	beqz	a5,e8809958 <__swbuf_r+0xf8>
    e8809878:	541c                	lw	a5,40(s0)
    e880987a:	01041703          	lh	a4,16(s0)
    e880987e:	c45c                	sw	a5,12(s0)
    e8809880:	3c07368b          	extu	a3,a4,15,0
    e8809884:	0086f793          	andi	a5,a3,8
    e8809888:	cfa1                	beqz	a5,e88098e0 <__swbuf_r+0x80>
    e880988a:	6c1c                	ld	a5,24(s0)
    e880988c:	cbb1                	beqz	a5,e88098e0 <__swbuf_r+0x80>
    e880988e:	0ff4f993          	andi	s3,s1,255
    e8809892:	03269613          	slli	a2,a3,0x32
    e8809896:	84ce                	mv	s1,s3
    e8809898:	06065563          	bgez	a2,e8809902 <__swbuf_r+0xa2>
    e880989c:	6018                	ld	a4,0(s0)
    e880989e:	5014                	lw	a3,32(s0)
    e88098a0:	40f707bb          	subw	a5,a4,a5
    e88098a4:	08d7d063          	bge	a5,a3,e8809924 <__swbuf_r+0xc4>
    e88098a8:	4454                	lw	a3,12(s0)
    e88098aa:	00170613          	addi	a2,a4,1
    e88098ae:	e010                	sd	a2,0(s0)
    e88098b0:	36fd                	addiw	a3,a3,-1
    e88098b2:	c454                	sw	a3,12(s0)
    e88098b4:	2785                	addiw	a5,a5,1
    e88098b6:	01370023          	sb	s3,0(a4)
    e88098ba:	5018                	lw	a4,32(s0)
    e88098bc:	08f70663          	beq	a4,a5,e8809948 <__swbuf_r+0xe8>
    e88098c0:	01045783          	lhu	a5,16(s0)
    e88098c4:	8b85                	andi	a5,a5,1
    e88098c6:	c781                	beqz	a5,e88098ce <__swbuf_r+0x6e>
    e88098c8:	47a9                	li	a5,10
    e88098ca:	06f48f63          	beq	s1,a5,e8809948 <__swbuf_r+0xe8>
    e88098ce:	70a2                	ld	ra,40(sp)
    e88098d0:	6422                	ld	s0,8(sp)
    e88098d2:	8526                	mv	a0,s1
    e88098d4:	6962                	ld	s2,24(sp)
    e88098d6:	64c2                	ld	s1,16(sp)
    e88098d8:	7982                	ld	s3,32(sp)
    e88098da:	6145                	addi	sp,sp,48
    e88098dc:	8082                	ret
    e88098de:	0001                	nop
    e88098e0:	85a2                	mv	a1,s0
    e88098e2:	854a                	mv	a0,s2
    e88098e4:	f9cf80ef          	jal	ra,e8802080 <__swsetup_r>
    e88098e8:	e52d                	bnez	a0,e8809952 <__swbuf_r+0xf2>
    e88098ea:	01041703          	lh	a4,16(s0)
    e88098ee:	0ff4f993          	andi	s3,s1,255
    e88098f2:	6c1c                	ld	a5,24(s0)
    e88098f4:	3c07368b          	extu	a3,a4,15,0
    e88098f8:	03269613          	slli	a2,a3,0x32
    e88098fc:	84ce                	mv	s1,s3
    e88098fe:	f8064fe3          	bltz	a2,e880989c <__swbuf_r+0x3c>
    e8809902:	6609                	lui	a2,0x2
    e8809904:	0ac42683          	lw	a3,172(s0)
    e8809908:	8f51                	or	a4,a4,a2
    e880990a:	7679                	lui	a2,0xffffe
    e880990c:	167d                	addi	a2,a2,-1
    e880990e:	8ef1                	and	a3,a3,a2
    e8809910:	00e41823          	sh	a4,16(s0)
    e8809914:	6018                	ld	a4,0(s0)
    e8809916:	0ad42623          	sw	a3,172(s0)
    e880991a:	5014                	lw	a3,32(s0)
    e880991c:	40f707bb          	subw	a5,a4,a5
    e8809920:	f8d7c4e3          	blt	a5,a3,e88098a8 <__swbuf_r+0x48>
    e8809924:	85a2                	mv	a1,s0
    e8809926:	854a                	mv	a0,s2
    e8809928:	a09f80ef          	jal	ra,e8802330 <_fflush_r>
    e880992c:	e11d                	bnez	a0,e8809952 <__swbuf_r+0xf2>
    e880992e:	6018                	ld	a4,0(s0)
    e8809930:	4454                	lw	a3,12(s0)
    e8809932:	4785                	li	a5,1
    e8809934:	00170613          	addi	a2,a4,1
    e8809938:	36fd                	addiw	a3,a3,-1
    e880993a:	e010                	sd	a2,0(s0)
    e880993c:	c454                	sw	a3,12(s0)
    e880993e:	01370023          	sb	s3,0(a4)
    e8809942:	5018                	lw	a4,32(s0)
    e8809944:	f6f71ee3          	bne	a4,a5,e88098c0 <__swbuf_r+0x60>
    e8809948:	85a2                	mv	a1,s0
    e880994a:	854a                	mv	a0,s2
    e880994c:	9e5f80ef          	jal	ra,e8802330 <_fflush_r>
    e8809950:	dd3d                	beqz	a0,e88098ce <__swbuf_r+0x6e>
    e8809952:	54fd                	li	s1,-1
    e8809954:	bfad                	j	e88098ce <__swbuf_r+0x6e>
    e8809956:	0001                	nop
    e8809958:	cf9f80ef          	jal	ra,e8802650 <__sinit>
    e880995c:	bf31                	j	e8809878 <__swbuf_r+0x18>
    e880995e:	0001                	nop

00000000e8809960 <__swbuf>:
    e8809960:	000ca797          	auipc	a5,0xca
    e8809964:	7a878793          	addi	a5,a5,1960 # e88d4108 <_impure_ptr>
    e8809968:	862e                	mv	a2,a1
    e880996a:	85aa                	mv	a1,a0
    e880996c:	6388                	ld	a0,0(a5)
    e880996e:	ef3ff06f          	j	e8809860 <__swbuf_r>
	...

00000000e8809980 <_wcrtomb_r>:
    e8809980:	000ca797          	auipc	a5,0xca
    e8809984:	78878793          	addi	a5,a5,1928 # e88d4108 <_impure_ptr>
    e8809988:	639c                	ld	a5,0(a5)
    e880998a:	7179                	addi	sp,sp,-48
    e880998c:	ec22                	sd	s0,24(sp)
    e880998e:	67bc                	ld	a5,72(a5)
    e8809990:	f026                	sd	s1,32(sp)
    e8809992:	000cb717          	auipc	a4,0xcb
    e8809996:	ec670713          	addi	a4,a4,-314 # e88d4858 <__global_locale>
    e880999a:	f406                	sd	ra,40(sp)
    e880999c:	40f7178b          	mveqz	a5,a4,a5
    e88099a0:	842a                	mv	s0,a0
    e88099a2:	84b6                	mv	s1,a3
    e88099a4:	73fc                	ld	a5,224(a5)
    e88099a6:	c999                	beqz	a1,e88099bc <_wcrtomb_r+0x3c>
    e88099a8:	9782                	jalr	a5
    e88099aa:	57fd                	li	a5,-1
    e88099ac:	00f50e63          	beq	a0,a5,e88099c8 <_wcrtomb_r+0x48>
    e88099b0:	70a2                	ld	ra,40(sp)
    e88099b2:	6462                	ld	s0,24(sp)
    e88099b4:	7482                	ld	s1,32(sp)
    e88099b6:	6145                	addi	sp,sp,48
    e88099b8:	8082                	ret
    e88099ba:	0001                	nop
    e88099bc:	4601                	li	a2,0
    e88099be:	858a                	mv	a1,sp
    e88099c0:	9782                	jalr	a5
    e88099c2:	57fd                	li	a5,-1
    e88099c4:	fef516e3          	bne	a0,a5,e88099b0 <_wcrtomb_r+0x30>
    e88099c8:	0004a023          	sw	zero,0(s1)
    e88099cc:	08a00793          	li	a5,138
    e88099d0:	c01c                	sw	a5,0(s0)
    e88099d2:	70a2                	ld	ra,40(sp)
    e88099d4:	6462                	ld	s0,24(sp)
    e88099d6:	7482                	ld	s1,32(sp)
    e88099d8:	6145                	addi	sp,sp,48
    e88099da:	8082                	ret
    e88099dc:	00000013          	nop

00000000e88099e0 <wcrtomb>:
    e88099e0:	7179                	addi	sp,sp,-48
    e88099e2:	000ca797          	auipc	a5,0xca
    e88099e6:	72678793          	addi	a5,a5,1830 # e88d4108 <_impure_ptr>
    e88099ea:	ec22                	sd	s0,24(sp)
    e88099ec:	6380                	ld	s0,0(a5)
    e88099ee:	f026                	sd	s1,32(sp)
    e88099f0:	000cb717          	auipc	a4,0xcb
    e88099f4:	e6870713          	addi	a4,a4,-408 # e88d4858 <__global_locale>
    e88099f8:	643c                	ld	a5,72(s0)
    e88099fa:	f406                	sd	ra,40(sp)
    e88099fc:	84b2                	mv	s1,a2
    e88099fe:	40f7178b          	mveqz	a5,a4,a5
    e8809a02:	73fc                	ld	a5,224(a5)
    e8809a04:	86b2                	mv	a3,a2
    e8809a06:	cd09                	beqz	a0,e8809a20 <wcrtomb+0x40>
    e8809a08:	862e                	mv	a2,a1
    e8809a0a:	85aa                	mv	a1,a0
    e8809a0c:	8522                	mv	a0,s0
    e8809a0e:	9782                	jalr	a5
    e8809a10:	57fd                	li	a5,-1
    e8809a12:	00f50e63          	beq	a0,a5,e8809a2e <wcrtomb+0x4e>
    e8809a16:	70a2                	ld	ra,40(sp)
    e8809a18:	6462                	ld	s0,24(sp)
    e8809a1a:	7482                	ld	s1,32(sp)
    e8809a1c:	6145                	addi	sp,sp,48
    e8809a1e:	8082                	ret
    e8809a20:	4601                	li	a2,0
    e8809a22:	858a                	mv	a1,sp
    e8809a24:	8522                	mv	a0,s0
    e8809a26:	9782                	jalr	a5
    e8809a28:	57fd                	li	a5,-1
    e8809a2a:	fef516e3          	bne	a0,a5,e8809a16 <wcrtomb+0x36>
    e8809a2e:	0004a023          	sw	zero,0(s1)
    e8809a32:	08a00793          	li	a5,138
    e8809a36:	c01c                	sw	a5,0(s0)
    e8809a38:	70a2                	ld	ra,40(sp)
    e8809a3a:	6462                	ld	s0,24(sp)
    e8809a3c:	7482                	ld	s1,32(sp)
    e8809a3e:	6145                	addi	sp,sp,48
    e8809a40:	8082                	ret
    e8809a42:	0000                	unimp
	...

00000000e8809a46 <__eqtf2>:
    e8809a46:	002027f3          	frrm	a5
    e8809a4a:	67a1                	lui	a5,0x8
    e8809a4c:	fb05b80b          	extu	a6,a1,62,48
    e8809a50:	17fd                	addi	a5,a5,-1
    e8809a52:	bc05b70b          	extu	a4,a1,47,0
    e8809a56:	bc06b30b          	extu	t1,a3,47,0
    e8809a5a:	fb06b88b          	extu	a7,a3,62,48
    e8809a5e:	91fd                	srli	a1,a1,0x3f
    e8809a60:	92fd                	srli	a3,a3,0x3f
    e8809a62:	00f81963          	bne	a6,a5,e8809a74 <__eqtf2+0x2e>
    e8809a66:	00a767b3          	or	a5,a4,a0
    e8809a6a:	e7b9                	bnez	a5,e8809ab8 <__eqtf2+0x72>
    e8809a6c:	4785                	li	a5,1
    e8809a6e:	03089763          	bne	a7,a6,e8809a9c <__eqtf2+0x56>
    e8809a72:	a019                	j	e8809a78 <__eqtf2+0x32>
    e8809a74:	00f89563          	bne	a7,a5,e8809a7e <__eqtf2+0x38>
    e8809a78:	00c367b3          	or	a5,t1,a2
    e8809a7c:	e79d                	bnez	a5,e8809aaa <__eqtf2+0x64>
    e8809a7e:	4785                	li	a5,1
    e8809a80:	01181e63          	bne	a6,a7,e8809a9c <__eqtf2+0x56>
    e8809a84:	00671c63          	bne	a4,t1,e8809a9c <__eqtf2+0x56>
    e8809a88:	00c51a63          	bne	a0,a2,e8809a9c <__eqtf2+0x56>
    e8809a8c:	00d58a63          	beq	a1,a3,e8809aa0 <__eqtf2+0x5a>
    e8809a90:	00081663          	bnez	a6,e8809a9c <__eqtf2+0x56>
    e8809a94:	00a767b3          	or	a5,a4,a0
    e8809a98:	00f037b3          	snez	a5,a5
    e8809a9c:	853e                	mv	a0,a5
    e8809a9e:	8082                	ret
    e8809aa0:	4781                	li	a5,0
    e8809aa2:	bfed                	j	e8809a9c <__eqtf2+0x56>
    e8809aa4:	00186073          	csrsi	fflags,16
    e8809aa8:	a035                	j	e8809ad4 <__eqtf2+0x8e>
    e8809aaa:	67a1                	lui	a5,0x8
    e8809aac:	17fd                	addi	a5,a5,-1
    e8809aae:	02f81063          	bne	a6,a5,e8809ace <__eqtf2+0x88>
    e8809ab2:	00a767b3          	or	a5,a4,a0
    e8809ab6:	cf81                	beqz	a5,e8809ace <__eqtf2+0x88>
    e8809ab8:	fef7378b          	extu	a5,a4,63,47
    e8809abc:	d7e5                	beqz	a5,e8809aa4 <__eqtf2+0x5e>
    e8809abe:	67a1                	lui	a5,0x8
    e8809ac0:	17fd                	addi	a5,a5,-1
    e8809ac2:	4505                	li	a0,1
    e8809ac4:	00f89a63          	bne	a7,a5,e8809ad8 <__eqtf2+0x92>
    e8809ac8:	00c36633          	or	a2,t1,a2
    e8809acc:	c611                	beqz	a2,e8809ad8 <__eqtf2+0x92>
    e8809ace:	fef3378b          	extu	a5,t1,63,47
    e8809ad2:	dbe9                	beqz	a5,e8809aa4 <__eqtf2+0x5e>
    e8809ad4:	4505                	li	a0,1
    e8809ad6:	8082                	ret
    e8809ad8:	8082                	ret

00000000e8809ada <__getf2>:
    e8809ada:	002027f3          	frrm	a5
    e8809ade:	6321                	lui	t1,0x8
    e8809ae0:	fb05b80b          	extu	a6,a1,62,48
    e8809ae4:	137d                	addi	t1,t1,-1
    e8809ae6:	bc05b70b          	extu	a4,a1,47,0
    e8809aea:	bc06b88b          	extu	a7,a3,47,0
    e8809aee:	fb06b78b          	extu	a5,a3,62,48
    e8809af2:	91fd                	srli	a1,a1,0x3f
    e8809af4:	92fd                	srli	a3,a3,0x3f
    e8809af6:	00681a63          	bne	a6,t1,e8809b0a <__getf2+0x30>
    e8809afa:	00a76333          	or	t1,a4,a0
    e8809afe:	06030b63          	beqz	t1,e8809b74 <__getf2+0x9a>
    e8809b02:	00186073          	csrsi	fflags,16
    e8809b06:	55f9                	li	a1,-2
    e8809b08:	a835                	j	e8809b44 <__getf2+0x6a>
    e8809b0a:	00679663          	bne	a5,t1,e8809b16 <__getf2+0x3c>
    e8809b0e:	00c8e333          	or	t1,a7,a2
    e8809b12:	fe0318e3          	bnez	t1,e8809b02 <__getf2+0x28>
    e8809b16:	06081163          	bnez	a6,e8809b78 <__getf2+0x9e>
    e8809b1a:	00a76333          	or	t1,a4,a0
    e8809b1e:	00133313          	seqz	t1,t1
    e8809b22:	e789                	bnez	a5,e8809b2c <__getf2+0x52>
    e8809b24:	00c8ee33          	or	t3,a7,a2
    e8809b28:	040e0063          	beqz	t3,e8809b68 <__getf2+0x8e>
    e8809b2c:	00031963          	bnez	t1,e8809b3e <__getf2+0x64>
    e8809b30:	00d59463          	bne	a1,a3,e8809b38 <__getf2+0x5e>
    e8809b34:	0107da63          	bge	a5,a6,e8809b48 <__getf2+0x6e>
    e8809b38:	c595                	beqz	a1,e8809b64 <__getf2+0x8a>
    e8809b3a:	55fd                	li	a1,-1
    e8809b3c:	a021                	j	e8809b44 <__getf2+0x6a>
    e8809b3e:	55fd                	li	a1,-1
    e8809b40:	42d6958b          	mvnez	a1,a3,a3
    e8809b44:	852e                	mv	a0,a1
    e8809b46:	8082                	ret
    e8809b48:	00f85463          	bge	a6,a5,e8809b50 <__getf2+0x76>
    e8809b4c:	fde5                	bnez	a1,e8809b44 <__getf2+0x6a>
    e8809b4e:	b7f5                	j	e8809b3a <__getf2+0x60>
    e8809b50:	fee8e4e3          	bltu	a7,a4,e8809b38 <__getf2+0x5e>
    e8809b54:	01171d63          	bne	a4,a7,e8809b6e <__getf2+0x94>
    e8809b58:	fea660e3          	bltu	a2,a0,e8809b38 <__getf2+0x5e>
    e8809b5c:	fec568e3          	bltu	a0,a2,e8809b4c <__getf2+0x72>
    e8809b60:	4581                	li	a1,0
    e8809b62:	b7cd                	j	e8809b44 <__getf2+0x6a>
    e8809b64:	4585                	li	a1,1
    e8809b66:	bff9                	j	e8809b44 <__getf2+0x6a>
    e8809b68:	fe031ce3          	bnez	t1,e8809b60 <__getf2+0x86>
    e8809b6c:	b7f1                	j	e8809b38 <__getf2+0x5e>
    e8809b6e:	fd176fe3          	bltu	a4,a7,e8809b4c <__getf2+0x72>
    e8809b72:	b7fd                	j	e8809b60 <__getf2+0x86>
    e8809b74:	f9078de3          	beq	a5,a6,e8809b0e <__getf2+0x34>
    e8809b78:	ffc5                	bnez	a5,e8809b30 <__getf2+0x56>
    e8809b7a:	4301                	li	t1,0
    e8809b7c:	b765                	j	e8809b24 <__getf2+0x4a>

00000000e8809b7e <__letf2>:
    e8809b7e:	002027f3          	frrm	a5
    e8809b82:	6321                	lui	t1,0x8
    e8809b84:	fb05b80b          	extu	a6,a1,62,48
    e8809b88:	137d                	addi	t1,t1,-1
    e8809b8a:	bc05b70b          	extu	a4,a1,47,0
    e8809b8e:	bc06b88b          	extu	a7,a3,47,0
    e8809b92:	fb06b78b          	extu	a5,a3,62,48
    e8809b96:	91fd                	srli	a1,a1,0x3f
    e8809b98:	92fd                	srli	a3,a3,0x3f
    e8809b9a:	00681a63          	bne	a6,t1,e8809bae <__letf2+0x30>
    e8809b9e:	00a76333          	or	t1,a4,a0
    e8809ba2:	06030b63          	beqz	t1,e8809c18 <__letf2+0x9a>
    e8809ba6:	00186073          	csrsi	fflags,16
    e8809baa:	4589                	li	a1,2
    e8809bac:	a835                	j	e8809be8 <__letf2+0x6a>
    e8809bae:	00679663          	bne	a5,t1,e8809bba <__letf2+0x3c>
    e8809bb2:	00c8e333          	or	t1,a7,a2
    e8809bb6:	fe0318e3          	bnez	t1,e8809ba6 <__letf2+0x28>
    e8809bba:	06081163          	bnez	a6,e8809c1c <__letf2+0x9e>
    e8809bbe:	00a76333          	or	t1,a4,a0
    e8809bc2:	00133313          	seqz	t1,t1
    e8809bc6:	e789                	bnez	a5,e8809bd0 <__letf2+0x52>
    e8809bc8:	00c8ee33          	or	t3,a7,a2
    e8809bcc:	040e0063          	beqz	t3,e8809c0c <__letf2+0x8e>
    e8809bd0:	00031963          	bnez	t1,e8809be2 <__letf2+0x64>
    e8809bd4:	00d59463          	bne	a1,a3,e8809bdc <__letf2+0x5e>
    e8809bd8:	0107da63          	bge	a5,a6,e8809bec <__letf2+0x6e>
    e8809bdc:	c595                	beqz	a1,e8809c08 <__letf2+0x8a>
    e8809bde:	55fd                	li	a1,-1
    e8809be0:	a021                	j	e8809be8 <__letf2+0x6a>
    e8809be2:	55fd                	li	a1,-1
    e8809be4:	42d6958b          	mvnez	a1,a3,a3
    e8809be8:	852e                	mv	a0,a1
    e8809bea:	8082                	ret
    e8809bec:	00f85463          	bge	a6,a5,e8809bf4 <__letf2+0x76>
    e8809bf0:	fde5                	bnez	a1,e8809be8 <__letf2+0x6a>
    e8809bf2:	b7f5                	j	e8809bde <__letf2+0x60>
    e8809bf4:	fee8e4e3          	bltu	a7,a4,e8809bdc <__letf2+0x5e>
    e8809bf8:	01171d63          	bne	a4,a7,e8809c12 <__letf2+0x94>
    e8809bfc:	fea660e3          	bltu	a2,a0,e8809bdc <__letf2+0x5e>
    e8809c00:	fec568e3          	bltu	a0,a2,e8809bf0 <__letf2+0x72>
    e8809c04:	4581                	li	a1,0
    e8809c06:	b7cd                	j	e8809be8 <__letf2+0x6a>
    e8809c08:	4585                	li	a1,1
    e8809c0a:	bff9                	j	e8809be8 <__letf2+0x6a>
    e8809c0c:	fe031ce3          	bnez	t1,e8809c04 <__letf2+0x86>
    e8809c10:	b7f1                	j	e8809bdc <__letf2+0x5e>
    e8809c12:	fd176fe3          	bltu	a4,a7,e8809bf0 <__letf2+0x72>
    e8809c16:	b7fd                	j	e8809c04 <__letf2+0x86>
    e8809c18:	f9078de3          	beq	a5,a6,e8809bb2 <__letf2+0x34>
    e8809c1c:	ffc5                	bnez	a5,e8809bd4 <__letf2+0x56>
    e8809c1e:	4301                	li	t1,0
    e8809c20:	b765                	j	e8809bc8 <__letf2+0x4a>

00000000e8809c22 <__multf3>:
    e8809c22:	711d                	addi	sp,sp,-96
    e8809c24:	f05a                	sd	s6,32(sp)
    e8809c26:	e466                	sd	s9,8(sp)
    e8809c28:	ec86                	sd	ra,88(sp)
    e8809c2a:	e8a2                	sd	s0,80(sp)
    e8809c2c:	e4a6                	sd	s1,72(sp)
    e8809c2e:	e0ca                	sd	s2,64(sp)
    e8809c30:	fc4e                	sd	s3,56(sp)
    e8809c32:	f852                	sd	s4,48(sp)
    e8809c34:	f456                	sd	s5,40(sp)
    e8809c36:	ec5e                	sd	s7,24(sp)
    e8809c38:	e862                	sd	s8,16(sp)
    e8809c3a:	8cb2                	mv	s9,a2
    e8809c3c:	8b36                	mv	s6,a3
    e8809c3e:	002029f3          	frrm	s3
    e8809c42:	fb05b78b          	extu	a5,a1,62,48
    e8809c46:	2981                	sext.w	s3,s3
    e8809c48:	bc05b90b          	extu	s2,a1,47,0
    e8809c4c:	03f5db93          	srli	s7,a1,0x3f
    e8809c50:	cb8d                	beqz	a5,e8809c82 <__multf3+0x60>
    e8809c52:	6721                	lui	a4,0x8
    e8809c54:	00078a9b          	sext.w	s5,a5
    e8809c58:	177d                	addi	a4,a4,-1
    e8809c5a:	8a2a                	mv	s4,a0
    e8809c5c:	08ea8463          	beq	s5,a4,e8809ce4 <__multf3+0xc2>
    e8809c60:	090e                	slli	s2,s2,0x3
    e8809c62:	03d55713          	srli	a4,a0,0x3d
    e8809c66:	01276733          	or	a4,a4,s2
    e8809c6a:	7af1                	lui	s5,0xffffc
    e8809c6c:	4905                	li	s2,1
    e8809c6e:	194e                	slli	s2,s2,0x33
    e8809c70:	0a85                	addi	s5,s5,1
    e8809c72:	01276933          	or	s2,a4,s2
    e8809c76:	00351a13          	slli	s4,a0,0x3
    e8809c7a:	9abe                	add	s5,s5,a5
    e8809c7c:	4c01                	li	s8,0
    e8809c7e:	4481                	li	s1,0
    e8809c80:	a89d                	j	e8809cf6 <__multf3+0xd4>
    e8809c82:	00a967b3          	or	a5,s2,a0
    e8809c86:	842a                	mv	s0,a0
    e8809c88:	c7f1                	beqz	a5,e8809d54 <__multf3+0x132>
    e8809c8a:	04090163          	beqz	s2,e8809ccc <__multf3+0xaa>
    e8809c8e:	854a                	mv	a0,s2
    e8809c90:	166010ef          	jal	ra,e880adf6 <__clzdi2>
    e8809c94:	2501                	sext.w	a0,a0
    e8809c96:	ff150713          	addi	a4,a0,-15
    e8809c9a:	03c00693          	li	a3,60
    e8809c9e:	0007079b          	sext.w	a5,a4
    e8809ca2:	02e6cb63          	blt	a3,a4,e8809cd8 <__multf3+0xb6>
    e8809ca6:	03d00713          	li	a4,61
    e8809caa:	00378a1b          	addiw	s4,a5,3
    e8809cae:	40f707bb          	subw	a5,a4,a5
    e8809cb2:	01491933          	sll	s2,s2,s4
    e8809cb6:	00f457b3          	srl	a5,s0,a5
    e8809cba:	0127e933          	or	s2,a5,s2
    e8809cbe:	01441a33          	sll	s4,s0,s4
    e8809cc2:	7af1                	lui	s5,0xffffc
    e8809cc4:	0ac5                	addi	s5,s5,17
    e8809cc6:	40aa8ab3          	sub	s5,s5,a0
    e8809cca:	bf4d                	j	e8809c7c <__multf3+0x5a>
    e8809ccc:	12a010ef          	jal	ra,e880adf6 <__clzdi2>
    e8809cd0:	2501                	sext.w	a0,a0
    e8809cd2:	04050513          	addi	a0,a0,64
    e8809cd6:	b7c1                	j	e8809c96 <__multf3+0x74>
    e8809cd8:	fc37891b          	addiw	s2,a5,-61
    e8809cdc:	01241933          	sll	s2,s0,s2
    e8809ce0:	4a01                	li	s4,0
    e8809ce2:	b7c5                	j	e8809cc2 <__multf3+0xa0>
    e8809ce4:	00a967b3          	or	a5,s2,a0
    e8809ce8:	cbbd                	beqz	a5,e8809d5e <__multf3+0x13c>
    e8809cea:	01091793          	slli	a5,s2,0x10
    e8809cee:	4c0d                	li	s8,3
    e8809cf0:	44c1                	li	s1,16
    e8809cf2:	f807c6e3          	bltz	a5,e8809c7e <__multf3+0x5c>
    e8809cf6:	fb0b370b          	extu	a4,s6,62,48
    e8809cfa:	bc0b340b          	extu	s0,s6,47,0
    e8809cfe:	87e6                	mv	a5,s9
    e8809d00:	03fb5b13          	srli	s6,s6,0x3f
    e8809d04:	c32d                	beqz	a4,e8809d66 <__multf3+0x144>
    e8809d06:	66a1                	lui	a3,0x8
    e8809d08:	0007051b          	sext.w	a0,a4
    e8809d0c:	16fd                	addi	a3,a3,-1
    e8809d0e:	0ad50b63          	beq	a0,a3,e8809dc4 <__multf3+0x1a2>
    e8809d12:	040e                	slli	s0,s0,0x3
    e8809d14:	03dcd693          	srli	a3,s9,0x3d
    e8809d18:	8ec1                	or	a3,a3,s0
    e8809d1a:	7571                	lui	a0,0xffffc
    e8809d1c:	4405                	li	s0,1
    e8809d1e:	144e                	slli	s0,s0,0x33
    e8809d20:	0505                	addi	a0,a0,1
    e8809d22:	8c55                	or	s0,s0,a3
    e8809d24:	003c9793          	slli	a5,s9,0x3
    e8809d28:	953a                	add	a0,a0,a4
    e8809d2a:	4701                	li	a4,0
    e8809d2c:	002c1693          	slli	a3,s8,0x2
    e8809d30:	8ed9                	or	a3,a3,a4
    e8809d32:	9aaa                	add	s5,s5,a0
    e8809d34:	16fd                	addi	a3,a3,-1
    e8809d36:	45b9                	li	a1,14
    e8809d38:	016bc633          	xor	a2,s7,s6
    e8809d3c:	001a8813          	addi	a6,s5,1 # ffffffffffffc001 <__DRAM0_INF_BASE+0xffffffff0000c001>
    e8809d40:	0ed5e663          	bltu	a1,a3,e8809e2c <__multf3+0x20a>
    e8809d44:	00096597          	auipc	a1,0x96
    e8809d48:	b6c58593          	addi	a1,a1,-1172 # e889f8b0 <zeroes.4553+0x10>
    e8809d4c:	44d5c68b          	lrw	a3,a1,a3,2
    e8809d50:	96ae                	add	a3,a3,a1
    e8809d52:	8682                	jr	a3
    e8809d54:	4901                	li	s2,0
    e8809d56:	4a01                	li	s4,0
    e8809d58:	4a81                	li	s5,0
    e8809d5a:	4c05                	li	s8,1
    e8809d5c:	b70d                	j	e8809c7e <__multf3+0x5c>
    e8809d5e:	4901                	li	s2,0
    e8809d60:	4a01                	li	s4,0
    e8809d62:	4c09                	li	s8,2
    e8809d64:	bf29                	j	e8809c7e <__multf3+0x5c>
    e8809d66:	019467b3          	or	a5,s0,s9
    e8809d6a:	c7bd                	beqz	a5,e8809dd8 <__multf3+0x1b6>
    e8809d6c:	cc1d                	beqz	s0,e8809daa <__multf3+0x188>
    e8809d6e:	8522                	mv	a0,s0
    e8809d70:	086010ef          	jal	ra,e880adf6 <__clzdi2>
    e8809d74:	2501                	sext.w	a0,a0
    e8809d76:	ff150793          	addi	a5,a0,-15 # ffffffffffffbff1 <__DRAM0_INF_BASE+0xffffffff0000bff1>
    e8809d7a:	03c00693          	li	a3,60
    e8809d7e:	0007871b          	sext.w	a4,a5
    e8809d82:	02f6cb63          	blt	a3,a5,e8809db8 <__multf3+0x196>
    e8809d86:	03d00693          	li	a3,61
    e8809d8a:	0037079b          	addiw	a5,a4,3
    e8809d8e:	40e6873b          	subw	a4,a3,a4
    e8809d92:	00f41433          	sll	s0,s0,a5
    e8809d96:	00ecd733          	srl	a4,s9,a4
    e8809d9a:	8c59                	or	s0,s0,a4
    e8809d9c:	00fc97b3          	sll	a5,s9,a5
    e8809da0:	7771                	lui	a4,0xffffc
    e8809da2:	0745                	addi	a4,a4,17
    e8809da4:	40a70533          	sub	a0,a4,a0
    e8809da8:	b749                	j	e8809d2a <__multf3+0x108>
    e8809daa:	8566                	mv	a0,s9
    e8809dac:	04a010ef          	jal	ra,e880adf6 <__clzdi2>
    e8809db0:	2501                	sext.w	a0,a0
    e8809db2:	04050513          	addi	a0,a0,64
    e8809db6:	b7c1                	j	e8809d76 <__multf3+0x154>
    e8809db8:	fc37041b          	addiw	s0,a4,-61
    e8809dbc:	008c9433          	sll	s0,s9,s0
    e8809dc0:	4781                	li	a5,0
    e8809dc2:	bff9                	j	e8809da0 <__multf3+0x17e>
    e8809dc4:	01946733          	or	a4,s0,s9
    e8809dc8:	cf09                	beqz	a4,e8809de2 <__multf3+0x1c0>
    e8809dca:	01041713          	slli	a4,s0,0x10
    e8809dce:	00074e63          	bltz	a4,e8809dea <__multf3+0x1c8>
    e8809dd2:	470d                	li	a4,3
    e8809dd4:	44c1                	li	s1,16
    e8809dd6:	bf99                	j	e8809d2c <__multf3+0x10a>
    e8809dd8:	4401                	li	s0,0
    e8809dda:	4781                	li	a5,0
    e8809ddc:	4501                	li	a0,0
    e8809dde:	4705                	li	a4,1
    e8809de0:	b7b1                	j	e8809d2c <__multf3+0x10a>
    e8809de2:	4401                	li	s0,0
    e8809de4:	4781                	li	a5,0
    e8809de6:	4709                	li	a4,2
    e8809de8:	b791                	j	e8809d2c <__multf3+0x10a>
    e8809dea:	470d                	li	a4,3
    e8809dec:	b781                	j	e8809d2c <__multf3+0x10a>
    e8809dee:	4405                	li	s0,1
    e8809df0:	6721                	lui	a4,0x8
    e8809df2:	143e                	slli	s0,s0,0x2f
    e8809df4:	4501                	li	a0,0
    e8809df6:	177d                	addi	a4,a4,-1
    e8809df8:	4601                	li	a2,0
    e8809dfa:	44c1                	li	s1,16
    e8809dfc:	3807358b          	extu	a1,a4,14,0
    e8809e00:	bc04340b          	extu	s0,s0,47,0
    e8809e04:	15c2                	slli	a1,a1,0x30
    e8809e06:	167e                	slli	a2,a2,0x3f
    e8809e08:	8dc1                	or	a1,a1,s0
    e8809e0a:	8dd1                	or	a1,a1,a2
    e8809e0c:	c099                	beqz	s1,e8809e12 <__multf3+0x1f0>
    e8809e0e:	0014a073          	csrs	fflags,s1
    e8809e12:	60e6                	ld	ra,88(sp)
    e8809e14:	6446                	ld	s0,80(sp)
    e8809e16:	64a6                	ld	s1,72(sp)
    e8809e18:	6906                	ld	s2,64(sp)
    e8809e1a:	79e2                	ld	s3,56(sp)
    e8809e1c:	7a42                	ld	s4,48(sp)
    e8809e1e:	7aa2                	ld	s5,40(sp)
    e8809e20:	7b02                	ld	s6,32(sp)
    e8809e22:	6be2                	ld	s7,24(sp)
    e8809e24:	6c42                	ld	s8,16(sp)
    e8809e26:	6ca2                	ld	s9,8(sp)
    e8809e28:	6125                	addi	sp,sp,96
    e8809e2a:	8082                	ret
    e8809e2c:	01490b33          	add	s6,s2,s4
    e8809e30:	008783b3          	add	t2,a5,s0
    e8809e34:	0207d593          	srli	a1,a5,0x20
    e8809e38:	020a5f13          	srli	t5,s4,0x20
    e8809e3c:	014b3fb3          	sltu	t6,s6,s4
    e8809e40:	00f3b2b3          	sltu	t0,t2,a5
    e8809e44:	7c0a3a0b          	extu	s4,s4,31,0
    e8809e48:	7c07b78b          	extu	a5,a5,31,0
    e8809e4c:	034786b3          	mul	a3,a5,s4
    e8809e50:	000f8e1b          	sext.w	t3,t6
    e8809e54:	0002851b          	sext.w	a0,t0
    e8809e58:	02ff07b3          	mul	a5,t5,a5
    e8809e5c:	88be                	mv	a7,a5
    e8809e5e:	2145988b          	mula	a7,a1,s4
    e8809e62:	02bf0733          	mul	a4,t5,a1
    e8809e66:	85c6                	mv	a1,a7
    e8809e68:	0206d893          	srli	a7,a3,0x20
    e8809e6c:	98ae                	add	a7,a7,a1
    e8809e6e:	00f8f563          	bgeu	a7,a5,e8809e78 <__multf3+0x256>
    e8809e72:	4785                	li	a5,1
    e8809e74:	1782                	slli	a5,a5,0x20
    e8809e76:	973e                	add	a4,a4,a5
    e8809e78:	0208df13          	srli	t5,a7,0x20
    e8809e7c:	7c0b378b          	extu	a5,s6,31,0
    e8809e80:	020b5e93          	srli	t4,s6,0x20
    e8809e84:	9f3a                	add	t5,t5,a4
    e8809e86:	7c03b70b          	extu	a4,t2,31,0
    e8809e8a:	02e78a33          	mul	s4,a5,a4
    e8809e8e:	7c06b68b          	extu	a3,a3,31,0
    e8809e92:	1882                	slli	a7,a7,0x20
    e8809e94:	98b6                	add	a7,a7,a3
    e8809e96:	0203d693          	srli	a3,t2,0x20
    e8809e9a:	02ee8733          	mul	a4,t4,a4
    e8809e9e:	85ba                	mv	a1,a4
    e8809ea0:	20f6958b          	mula	a1,a3,a5
    e8809ea4:	020a5793          	srli	a5,s4,0x20
    e8809ea8:	97ae                	add	a5,a5,a1
    e8809eaa:	02de8333          	mul	t1,t4,a3
    e8809eae:	00e7f563          	bgeu	a5,a4,e8809eb8 <__multf3+0x296>
    e8809eb2:	4705                	li	a4,1
    e8809eb4:	1702                	slli	a4,a4,0x20
    e8809eb6:	933a                	add	t1,t1,a4
    e8809eb8:	0207de93          	srli	t4,a5,0x20
    e8809ebc:	1782                	slli	a5,a5,0x20
    e8809ebe:	7c0a3a0b          	extu	s4,s4,31,0
    e8809ec2:	02095593          	srli	a1,s2,0x20
    e8809ec6:	9a3e                	add	s4,s4,a5
    e8809ec8:	7c09390b          	extu	s2,s2,31,0
    e8809ecc:	02045793          	srli	a5,s0,0x20
    e8809ed0:	7c04340b          	extu	s0,s0,31,0
    e8809ed4:	03240bb3          	mul	s7,s0,s2
    e8809ed8:	02858433          	mul	s0,a1,s0
    e8809edc:	8722                	mv	a4,s0
    e8809ede:	2127970b          	mula	a4,a5,s2
    e8809ee2:	02f585b3          	mul	a1,a1,a5
    e8809ee6:	87ba                	mv	a5,a4
    e8809ee8:	020bd713          	srli	a4,s7,0x20
    e8809eec:	973e                	add	a4,a4,a5
    e8809eee:	00877563          	bgeu	a4,s0,e8809ef8 <__multf3+0x2d6>
    e8809ef2:	4785                	li	a5,1
    e8809ef4:	1782                	slli	a5,a5,0x20
    e8809ef6:	95be                	add	a1,a1,a5
    e8809ef8:	02075693          	srli	a3,a4,0x20
    e8809efc:	00b687b3          	add	a5,a3,a1
    e8809f00:	01ea06b3          	add	a3,s4,t5
    e8809f04:	01e6b5b3          	sltu	a1,a3,t5
    e8809f08:	9eae                	add	t4,t4,a1
    e8809f0a:	40a00533          	neg	a0,a0
    e8809f0e:	9e9a                	add	t4,t4,t1
    e8809f10:	01657533          	and	a0,a0,s6
    e8809f14:	41c00333          	neg	t1,t3
    e8809f18:	9576                	add	a0,a0,t4
    e8809f1a:	00737333          	and	t1,t1,t2
    e8809f1e:	932a                	add	t1,t1,a0
    e8809f20:	00beb5b3          	sltu	a1,t4,a1
    e8809f24:	005ff433          	and	s0,t6,t0
    e8809f28:	01d53eb3          	sltu	t4,a0,t4
    e8809f2c:	942e                	add	s0,s0,a1
    e8809f2e:	00a33533          	sltu	a0,t1,a0
    e8809f32:	9476                	add	s0,s0,t4
    e8809f34:	41168e33          	sub	t3,a3,a7
    e8809f38:	942a                	add	s0,s0,a0
    e8809f3a:	01c6b533          	sltu	a0,a3,t3
    e8809f3e:	41e305b3          	sub	a1,t1,t5
    e8809f42:	1702                	slli	a4,a4,0x20
    e8809f44:	7c0bbb8b          	extu	s7,s7,31,0
    e8809f48:	00b33eb3          	sltu	t4,t1,a1
    e8809f4c:	975e                	add	a4,a4,s7
    e8809f4e:	8d89                	sub	a1,a1,a0
    e8809f50:	4501                	li	a0,0
    e8809f52:	01c6f663          	bgeu	a3,t3,e8809f5e <__multf3+0x33c>
    e8809f56:	406f0333          	sub	t1,t5,t1
    e8809f5a:	00133513          	seqz	a0,t1
    e8809f5e:	01d56333          	or	t1,a0,t4
    e8809f62:	40ee0533          	sub	a0,t3,a4
    e8809f66:	40f586b3          	sub	a3,a1,a5
    e8809f6a:	943e                	add	s0,s0,a5
    e8809f6c:	00ae37b3          	sltu	a5,t3,a0
    e8809f70:	00d5b5b3          	sltu	a1,a1,a3
    e8809f74:	40f707b3          	sub	a5,a4,a5
    e8809f78:	4e81                	li	t4,0
    e8809f7a:	00ae7463          	bgeu	t3,a0,e8809f82 <__multf3+0x360>
    e8809f7e:	0016be93          	seqz	t4,a3
    e8809f82:	96be                	add	a3,a3,a5
    e8809f84:	00e6b733          	sltu	a4,a3,a4
    e8809f88:	943a                	add	s0,s0,a4
    e8809f8a:	40640433          	sub	s0,s0,t1
    e8809f8e:	00bee5b3          	or	a1,t4,a1
    e8809f92:	0336d793          	srli	a5,a3,0x33
    e8809f96:	8c0d                	sub	s0,s0,a1
    e8809f98:	0436                	slli	s0,s0,0xd
    e8809f9a:	8c5d                	or	s0,s0,a5
    e8809f9c:	00d51793          	slli	a5,a0,0xd
    e8809fa0:	0117e7b3          	or	a5,a5,a7
    e8809fa4:	00f037b3          	snez	a5,a5
    e8809fa8:	914d                	srli	a0,a0,0x33
    e8809faa:	8fc9                	or	a5,a5,a0
    e8809fac:	06b6                	slli	a3,a3,0xd
    e8809fae:	00b41713          	slli	a4,s0,0xb
    e8809fb2:	8fd5                	or	a5,a5,a3
    e8809fb4:	06075a63          	bgez	a4,e880a028 <__multf3+0x406>
    e8809fb8:	0017d713          	srli	a4,a5,0x1
    e8809fbc:	8b85                	andi	a5,a5,1
    e8809fbe:	03f41513          	slli	a0,s0,0x3f
    e8809fc2:	8fd9                	or	a5,a5,a4
    e8809fc4:	8fc9                	or	a5,a5,a0
    e8809fc6:	8005                	srli	s0,s0,0x1
    e8809fc8:	6711                	lui	a4,0x4
    e8809fca:	177d                	addi	a4,a4,-1
    e8809fcc:	9742                	add	a4,a4,a6
    e8809fce:	0ae05f63          	blez	a4,e880a08c <__multf3+0x46a>
    e8809fd2:	0077f693          	andi	a3,a5,7
    e8809fd6:	c2a5                	beqz	a3,e880a036 <__multf3+0x414>
    e8809fd8:	4689                	li	a3,2
    e8809fda:	0014e493          	ori	s1,s1,1
    e8809fde:	04d98b63          	beq	s3,a3,e880a034 <__multf3+0x412>
    e8809fe2:	468d                	li	a3,3
    e8809fe4:	04d98463          	beq	s3,a3,e880a02c <__multf3+0x40a>
    e8809fe8:	04099763          	bnez	s3,e880a036 <__multf3+0x414>
    e8809fec:	00f7f693          	andi	a3,a5,15
    e8809ff0:	4591                	li	a1,4
    e8809ff2:	04b68263          	beq	a3,a1,e880a036 <__multf3+0x414>
    e8809ff6:	00478693          	addi	a3,a5,4 # 8004 <memcmp-0xe87f7ffc>
    e8809ffa:	00f6b7b3          	sltu	a5,a3,a5
    e8809ffe:	943e                	add	s0,s0,a5
    e880a000:	87b6                	mv	a5,a3
    e880a002:	a815                	j	e880a036 <__multf3+0x414>
    e880a004:	865e                	mv	a2,s7
    e880a006:	844a                	mv	s0,s2
    e880a008:	87d2                	mv	a5,s4
    e880a00a:	8762                	mv	a4,s8
    e880a00c:	4689                	li	a3,2
    e880a00e:	1cd70d63          	beq	a4,a3,e880a1e8 <__multf3+0x5c6>
    e880a012:	468d                	li	a3,3
    e880a014:	1cd70f63          	beq	a4,a3,e880a1f2 <__multf3+0x5d0>
    e880a018:	4685                	li	a3,1
    e880a01a:	fad717e3          	bne	a4,a3,e8809fc8 <__multf3+0x3a6>
    e880a01e:	4401                	li	s0,0
    e880a020:	4501                	li	a0,0
    e880a022:	aa75                	j	e880a1de <__multf3+0x5bc>
    e880a024:	865a                	mv	a2,s6
    e880a026:	b7dd                	j	e880a00c <__multf3+0x3ea>
    e880a028:	8856                	mv	a6,s5
    e880a02a:	bf79                	j	e8809fc8 <__multf3+0x3a6>
    e880a02c:	e609                	bnez	a2,e880a036 <__multf3+0x414>
    e880a02e:	00878693          	addi	a3,a5,8
    e880a032:	b7e1                	j	e8809ffa <__multf3+0x3d8>
    e880a034:	fe6d                	bnez	a2,e880a02e <__multf3+0x40c>
    e880a036:	00b41693          	slli	a3,s0,0xb
    e880a03a:	0006d863          	bgez	a3,e880a04a <__multf3+0x428>
    e880a03e:	577d                	li	a4,-1
    e880a040:	1752                	slli	a4,a4,0x34
    e880a042:	177d                	addi	a4,a4,-1
    e880a044:	8c79                	and	s0,s0,a4
    e880a046:	6711                	lui	a4,0x4
    e880a048:	9742                	add	a4,a4,a6
    e880a04a:	66a1                	lui	a3,0x8
    e880a04c:	ffe68593          	addi	a1,a3,-2 # 7ffe <memcmp-0xe87f8002>
    e880a050:	00e5c963          	blt	a1,a4,e880a062 <__multf3+0x440>
    e880a054:	0037d513          	srli	a0,a5,0x3
    e880a058:	03d41793          	slli	a5,s0,0x3d
    e880a05c:	8d5d                	or	a0,a0,a5
    e880a05e:	800d                	srli	s0,s0,0x3
    e880a060:	bb71                	j	e8809dfc <__multf3+0x1da>
    e880a062:	4789                	li	a5,2
    e880a064:	02f98263          	beq	s3,a5,e880a088 <__multf3+0x466>
    e880a068:	478d                	li	a5,3
    e880a06a:	00f98a63          	beq	s3,a5,e880a07e <__multf3+0x45c>
    e880a06e:	00098963          	beqz	s3,e880a080 <__multf3+0x45e>
    e880a072:	557d                	li	a0,-1
    e880a074:	872e                	mv	a4,a1
    e880a076:	0054e493          	ori	s1,s1,5
    e880a07a:	842a                	mv	s0,a0
    e880a07c:	b341                	j	e8809dfc <__multf3+0x1da>
    e880a07e:	fa75                	bnez	a2,e880a072 <__multf3+0x450>
    e880a080:	4501                	li	a0,0
    e880a082:	fff68713          	addi	a4,a3,-1
    e880a086:	bfc5                	j	e880a076 <__multf3+0x454>
    e880a088:	fe65                	bnez	a2,e880a080 <__multf3+0x45e>
    e880a08a:	b7e5                	j	e880a072 <__multf3+0x450>
    e880a08c:	4685                	li	a3,1
    e880a08e:	e731                	bnez	a4,e880a0da <__multf3+0x4b8>
    e880a090:	0077f593          	andi	a1,a5,7
    e880a094:	86a2                	mv	a3,s0
    e880a096:	cd95                	beqz	a1,e880a0d2 <__multf3+0x4b0>
    e880a098:	4689                	li	a3,2
    e880a09a:	0014e493          	ori	s1,s1,1
    e880a09e:	02d98863          	beq	s3,a3,e880a0ce <__multf3+0x4ac>
    e880a0a2:	468d                	li	a3,3
    e880a0a4:	02d98063          	beq	s3,a3,e880a0c4 <__multf3+0x4a2>
    e880a0a8:	86a2                	mv	a3,s0
    e880a0aa:	02099463          	bnez	s3,e880a0d2 <__multf3+0x4b0>
    e880a0ae:	00f7f593          	andi	a1,a5,15
    e880a0b2:	4511                	li	a0,4
    e880a0b4:	00a58f63          	beq	a1,a0,e880a0d2 <__multf3+0x4b0>
    e880a0b8:	ffc7b693          	sltiu	a3,a5,-4
    e880a0bc:	0016c693          	xori	a3,a3,1
    e880a0c0:	96a2                	add	a3,a3,s0
    e880a0c2:	a801                	j	e880a0d2 <__multf3+0x4b0>
    e880a0c4:	86a2                	mv	a3,s0
    e880a0c6:	e611                	bnez	a2,e880a0d2 <__multf3+0x4b0>
    e880a0c8:	ff87b693          	sltiu	a3,a5,-8
    e880a0cc:	bfc5                	j	e880a0bc <__multf3+0x49a>
    e880a0ce:	86a2                	mv	a3,s0
    e880a0d0:	fe65                	bnez	a2,e880a0c8 <__multf3+0x4a6>
    e880a0d2:	92d1                	srli	a3,a3,0x34
    e880a0d4:	0016c693          	xori	a3,a3,1
    e880a0d8:	8a85                	andi	a3,a3,1
    e880a0da:	4585                	li	a1,1
    e880a0dc:	8d99                	sub	a1,a1,a4
    e880a0de:	07400713          	li	a4,116
    e880a0e2:	0cb74763          	blt	a4,a1,e880a1b0 <__multf3+0x58e>
    e880a0e6:	03f00513          	li	a0,63
    e880a0ea:	0005871b          	sext.w	a4,a1
    e880a0ee:	04b54b63          	blt	a0,a1,e880a144 <__multf3+0x522>
    e880a0f2:	04000593          	li	a1,64
    e880a0f6:	9d99                	subw	a1,a1,a4
    e880a0f8:	00b41533          	sll	a0,s0,a1
    e880a0fc:	00e7d833          	srl	a6,a5,a4
    e880a100:	00b797b3          	sll	a5,a5,a1
    e880a104:	01056533          	or	a0,a0,a6
    e880a108:	00f037b3          	snez	a5,a5
    e880a10c:	8d5d                	or	a0,a0,a5
    e880a10e:	00e45433          	srl	s0,s0,a4
    e880a112:	00757793          	andi	a5,a0,7
    e880a116:	c3b5                	beqz	a5,e880a17a <__multf3+0x558>
    e880a118:	4789                	li	a5,2
    e880a11a:	0014e493          	ori	s1,s1,1
    e880a11e:	04f98d63          	beq	s3,a5,e880a178 <__multf3+0x556>
    e880a122:	478d                	li	a5,3
    e880a124:	04f98663          	beq	s3,a5,e880a170 <__multf3+0x54e>
    e880a128:	04099963          	bnez	s3,e880a17a <__multf3+0x558>
    e880a12c:	00f57793          	andi	a5,a0,15
    e880a130:	4711                	li	a4,4
    e880a132:	04e78463          	beq	a5,a4,e880a17a <__multf3+0x558>
    e880a136:	00450793          	addi	a5,a0,4
    e880a13a:	00a7b533          	sltu	a0,a5,a0
    e880a13e:	942a                	add	s0,s0,a0
    e880a140:	853e                	mv	a0,a5
    e880a142:	a825                	j	e880a17a <__multf3+0x558>
    e880a144:	fc07051b          	addiw	a0,a4,-64
    e880a148:	04000893          	li	a7,64
    e880a14c:	00a45533          	srl	a0,s0,a0
    e880a150:	4801                	li	a6,0
    e880a152:	01158863          	beq	a1,a7,e880a162 <__multf3+0x540>
    e880a156:	08000813          	li	a6,128
    e880a15a:	40e8073b          	subw	a4,a6,a4
    e880a15e:	00e41833          	sll	a6,s0,a4
    e880a162:	00f867b3          	or	a5,a6,a5
    e880a166:	00f037b3          	snez	a5,a5
    e880a16a:	8d5d                	or	a0,a0,a5
    e880a16c:	4401                	li	s0,0
    e880a16e:	b755                	j	e880a112 <__multf3+0x4f0>
    e880a170:	e609                	bnez	a2,e880a17a <__multf3+0x558>
    e880a172:	00850793          	addi	a5,a0,8
    e880a176:	b7d1                	j	e880a13a <__multf3+0x518>
    e880a178:	fe6d                	bnez	a2,e880a172 <__multf3+0x550>
    e880a17a:	00c41793          	slli	a5,s0,0xc
    e880a17e:	0007dc63          	bgez	a5,e880a196 <__multf3+0x574>
    e880a182:	0014e493          	ori	s1,s1,1
    e880a186:	4401                	li	s0,0
    e880a188:	4501                	li	a0,0
    e880a18a:	4705                	li	a4,1
    e880a18c:	c60688e3          	beqz	a3,e8809dfc <__multf3+0x1da>
    e880a190:	0024e493          	ori	s1,s1,2
    e880a194:	b1a5                	j	e8809dfc <__multf3+0x1da>
    e880a196:	03d41793          	slli	a5,s0,0x3d
    e880a19a:	810d                	srli	a0,a0,0x3
    e880a19c:	8d5d                	or	a0,a0,a5
    e880a19e:	800d                	srli	s0,s0,0x3
    e880a1a0:	4701                	li	a4,0
    e880a1a2:	c4068de3          	beqz	a3,e8809dfc <__multf3+0x1da>
    e880a1a6:	0014f793          	andi	a5,s1,1
    e880a1aa:	c40789e3          	beqz	a5,e8809dfc <__multf3+0x1da>
    e880a1ae:	b7cd                	j	e880a190 <__multf3+0x56e>
    e880a1b0:	0087e533          	or	a0,a5,s0
    e880a1b4:	c115                	beqz	a0,e880a1d8 <__multf3+0x5b6>
    e880a1b6:	4789                	li	a5,2
    e880a1b8:	0014e493          	ori	s1,s1,1
    e880a1bc:	02f98363          	beq	s3,a5,e880a1e2 <__multf3+0x5c0>
    e880a1c0:	478d                	li	a5,3
    e880a1c2:	00f98763          	beq	s3,a5,e880a1d0 <__multf3+0x5ae>
    e880a1c6:	4795                	li	a5,5
    e880a1c8:	00098663          	beqz	s3,e880a1d4 <__multf3+0x5b2>
    e880a1cc:	4785                	li	a5,1
    e880a1ce:	a019                	j	e880a1d4 <__multf3+0x5b2>
    e880a1d0:	47a5                	li	a5,9
    e880a1d2:	fe6d                	bnez	a2,e880a1cc <__multf3+0x5aa>
    e880a1d4:	0037d513          	srli	a0,a5,0x3
    e880a1d8:	0024e493          	ori	s1,s1,2
    e880a1dc:	4401                	li	s0,0
    e880a1de:	4701                	li	a4,0
    e880a1e0:	b931                	j	e8809dfc <__multf3+0x1da>
    e880a1e2:	47a5                	li	a5,9
    e880a1e4:	fa65                	bnez	a2,e880a1d4 <__multf3+0x5b2>
    e880a1e6:	b7dd                	j	e880a1cc <__multf3+0x5aa>
    e880a1e8:	6721                	lui	a4,0x8
    e880a1ea:	4401                	li	s0,0
    e880a1ec:	4501                	li	a0,0
    e880a1ee:	177d                	addi	a4,a4,-1
    e880a1f0:	b131                	j	e8809dfc <__multf3+0x1da>
    e880a1f2:	4405                	li	s0,1
    e880a1f4:	6721                	lui	a4,0x8
    e880a1f6:	143e                	slli	s0,s0,0x2f
    e880a1f8:	4501                	li	a0,0
    e880a1fa:	177d                	addi	a4,a4,-1
    e880a1fc:	4601                	li	a2,0
    e880a1fe:	befd                	j	e8809dfc <__multf3+0x1da>

00000000e880a200 <__subtf3>:
    e880a200:	7179                	addi	sp,sp,-48
    e880a202:	f406                	sd	ra,40(sp)
    e880a204:	f052                	sd	s4,32(sp)
    e880a206:	f891540b          	sdd	s0,s1,(sp),0,4
    e880a20a:	fb31590b          	sdd	s2,s3,(sp),1,4
    e880a20e:	002024f3          	frrm	s1
    e880a212:	fb05b30b          	extu	t1,a1,62,48
    e880a216:	03f5d413          	srli	s0,a1,0x3f
    e880a21a:	bc05b58b          	extu	a1,a1,47,0
    e880a21e:	058e                	slli	a1,a1,0x3
    e880a220:	03d55793          	srli	a5,a0,0x3d
    e880a224:	03d65713          	srli	a4,a2,0x3d
    e880a228:	8fcd                	or	a5,a5,a1
    e880a22a:	03f6de13          	srli	t3,a3,0x3f
    e880a22e:	fb06b58b          	extu	a1,a3,62,48
    e880a232:	bc06b68b          	extu	a3,a3,47,0
    e880a236:	068e                	slli	a3,a3,0x3
    e880a238:	8ed9                	or	a3,a3,a4
    e880a23a:	6721                	lui	a4,0x8
    e880a23c:	177d                	addi	a4,a4,-1
    e880a23e:	2481                	sext.w	s1,s1
    e880a240:	899a                	mv	s3,t1
    e880a242:	050e                	slli	a0,a0,0x3
    e880a244:	88ae                	mv	a7,a1
    e880a246:	00361e93          	slli	t4,a2,0x3
    e880a24a:	00e59563          	bne	a1,a4,e880a254 <__subtf3+0x54>
    e880a24e:	01d6e733          	or	a4,a3,t4
    e880a252:	e319                	bnez	a4,e880a258 <__subtf3+0x58>
    e880a254:	001e4e13          	xori	t3,t3,1
    e880a258:	40b3073b          	subw	a4,t1,a1
    e880a25c:	6f21                	lui	t5,0x8
    e880a25e:	883a                	mv	a6,a4
    e880a260:	ffff0613          	addi	a2,t5,-1 # 7fff <memcmp-0xe87f8001>
    e880a264:	368e1d63          	bne	t3,s0,e880a5de <__subtf3+0x3de>
    e880a268:	0f005f63          	blez	a6,e880a366 <__subtf3+0x166>
    e880a26c:	edad                	bnez	a1,e880a2e6 <__subtf3+0xe6>
    e880a26e:	01d6e5b3          	or	a1,a3,t4
    e880a272:	e591                	bnez	a1,e880a27e <__subtf3+0x7e>
    e880a274:	04c30d63          	beq	t1,a2,e880a2ce <__subtf3+0xce>
    e880a278:	86be                	mv	a3,a5
    e880a27a:	8eaa                	mv	t4,a0
    e880a27c:	a5dd                	j	e880a962 <__subtf3+0x762>
    e880a27e:	fff7081b          	addiw	a6,a4,-1
    e880a282:	04081463          	bnez	a6,e880a2ca <__subtf3+0xca>
    e880a286:	9eaa                	add	t4,t4,a0
    e880a288:	97b6                	add	a5,a5,a3
    e880a28a:	00aeb733          	sltu	a4,t4,a0
    e880a28e:	00e786b3          	add	a3,a5,a4
    e880a292:	00c69793          	slli	a5,a3,0xc
    e880a296:	6c07d663          	bgez	a5,e880a962 <__subtf3+0x762>
    e880a29a:	6721                	lui	a4,0x8
    e880a29c:	00198893          	addi	a7,s3,1
    e880a2a0:	fff70793          	addi	a5,a4,-1 # 7fff <memcmp-0xe87f8001>
    e880a2a4:	30f88d63          	beq	a7,a5,e880a5be <__subtf3+0x3be>
    e880a2a8:	57fd                	li	a5,-1
    e880a2aa:	17ce                	slli	a5,a5,0x33
    e880a2ac:	001ed513          	srli	a0,t4,0x1
    e880a2b0:	17fd                	addi	a5,a5,-1
    e880a2b2:	8ff5                	and	a5,a5,a3
    e880a2b4:	001efe93          	andi	t4,t4,1
    e880a2b8:	01d56eb3          	or	t4,a0,t4
    e880a2bc:	03f79513          	slli	a0,a5,0x3f
    e880a2c0:	01d56533          	or	a0,a0,t4
    e880a2c4:	8385                	srli	a5,a5,0x1
    e880a2c6:	4801                	li	a6,0
    e880a2c8:	a455                	j	e880a56c <__subtf3+0x36c>
    e880a2ca:	02c31363          	bne	t1,a2,e880a2f0 <__subtf3+0xf0>
    e880a2ce:	00a7e733          	or	a4,a5,a0
    e880a2d2:	6c070d63          	beqz	a4,e880a9ac <__subtf3+0x7ac>
    e880a2d6:	00d79713          	slli	a4,a5,0xd
    e880a2da:	889a                	mv	a7,t1
    e880a2dc:	4801                	li	a6,0
    e880a2de:	28074763          	bltz	a4,e880a56c <__subtf3+0x36c>
    e880a2e2:	4741                	li	a4,16
    e880a2e4:	a245                	j	e880a484 <__subtf3+0x284>
    e880a2e6:	fec304e3          	beq	t1,a2,e880a2ce <__subtf3+0xce>
    e880a2ea:	4705                	li	a4,1
    e880a2ec:	174e                	slli	a4,a4,0x33
    e880a2ee:	8ed9                	or	a3,a3,a4
    e880a2f0:	07400713          	li	a4,116
    e880a2f4:	07074463          	blt	a4,a6,e880a35c <__subtf3+0x15c>
    e880a2f8:	03f00713          	li	a4,63
    e880a2fc:	03074963          	blt	a4,a6,e880a32e <__subtf3+0x12e>
    e880a300:	04000613          	li	a2,64
    e880a304:	4106063b          	subw	a2,a2,a6
    e880a308:	00c69733          	sll	a4,a3,a2
    e880a30c:	010ed5b3          	srl	a1,t4,a6
    e880a310:	00ce9eb3          	sll	t4,t4,a2
    e880a314:	8f4d                	or	a4,a4,a1
    e880a316:	01d03eb3          	snez	t4,t4
    e880a31a:	01d76eb3          	or	t4,a4,t4
    e880a31e:	0106d6b3          	srl	a3,a3,a6
    e880a322:	9eaa                	add	t4,t4,a0
    e880a324:	96be                	add	a3,a3,a5
    e880a326:	00aeb7b3          	sltu	a5,t4,a0
    e880a32a:	96be                	add	a3,a3,a5
    e880a32c:	b79d                	j	e880a292 <__subtf3+0x92>
    e880a32e:	fc08071b          	addiw	a4,a6,-64
    e880a332:	04000593          	li	a1,64
    e880a336:	00e6d733          	srl	a4,a3,a4
    e880a33a:	4601                	li	a2,0
    e880a33c:	00b80863          	beq	a6,a1,e880a34c <__subtf3+0x14c>
    e880a340:	08000613          	li	a2,128
    e880a344:	4106083b          	subw	a6,a2,a6
    e880a348:	01069633          	sll	a2,a3,a6
    e880a34c:	01d66eb3          	or	t4,a2,t4
    e880a350:	01d03eb3          	snez	t4,t4
    e880a354:	01d76eb3          	or	t4,a4,t4
    e880a358:	4681                	li	a3,0
    e880a35a:	b7e1                	j	e880a322 <__subtf3+0x122>
    e880a35c:	01d6eeb3          	or	t4,a3,t4
    e880a360:	01d03eb3          	snez	t4,t4
    e880a364:	bfd5                	j	e880a358 <__subtf3+0x158>
    e880a366:	0c080d63          	beqz	a6,e880a440 <__subtf3+0x240>
    e880a36a:	08031863          	bnez	t1,e880a3fa <__subtf3+0x1fa>
    e880a36e:	00a7e333          	or	t1,a5,a0
    e880a372:	02031163          	bnez	t1,e880a394 <__subtf3+0x194>
    e880a376:	89ae                	mv	s3,a1
    e880a378:	5ec59563          	bne	a1,a2,e880a962 <__subtf3+0x762>
    e880a37c:	01d6e533          	or	a0,a3,t4
    e880a380:	62050063          	beqz	a0,e880a9a0 <__subtf3+0x7a0>
    e880a384:	00d69793          	slli	a5,a3,0xd
    e880a388:	6007cf63          	bltz	a5,e880a9a6 <__subtf3+0x7a6>
    e880a38c:	87b6                	mv	a5,a3
    e880a38e:	8576                	mv	a0,t4
    e880a390:	4801                	li	a6,0
    e880a392:	bf81                	j	e880a2e2 <__subtf3+0xe2>
    e880a394:	537d                	li	t1,-1
    e880a396:	00681c63          	bne	a6,t1,e880a3ae <__subtf3+0x1ae>
    e880a39a:	01d50733          	add	a4,a0,t4
    e880a39e:	01d73eb3          	sltu	t4,a4,t4
    e880a3a2:	97b6                	add	a5,a5,a3
    e880a3a4:	01d786b3          	add	a3,a5,t4
    e880a3a8:	8eba                	mv	t4,a4
    e880a3aa:	89ae                	mv	s3,a1
    e880a3ac:	b5dd                	j	e880a292 <__subtf3+0x92>
    e880a3ae:	fcc587e3          	beq	a1,a2,e880a37c <__subtf3+0x17c>
    e880a3b2:	fff74713          	not	a4,a4
    e880a3b6:	2701                	sext.w	a4,a4
    e880a3b8:	07400613          	li	a2,116
    e880a3bc:	06e64e63          	blt	a2,a4,e880a438 <__subtf3+0x238>
    e880a3c0:	03f00613          	li	a2,63
    e880a3c4:	04e64463          	blt	a2,a4,e880a40c <__subtf3+0x20c>
    e880a3c8:	04000813          	li	a6,64
    e880a3cc:	40e8083b          	subw	a6,a6,a4
    e880a3d0:	00e558b3          	srl	a7,a0,a4
    e880a3d4:	01079633          	sll	a2,a5,a6
    e880a3d8:	01051533          	sll	a0,a0,a6
    e880a3dc:	01166633          	or	a2,a2,a7
    e880a3e0:	00a03533          	snez	a0,a0
    e880a3e4:	8d51                	or	a0,a0,a2
    e880a3e6:	00e7d733          	srl	a4,a5,a4
    e880a3ea:	9576                	add	a0,a0,t4
    e880a3ec:	00d707b3          	add	a5,a4,a3
    e880a3f0:	01d536b3          	sltu	a3,a0,t4
    e880a3f4:	96be                	add	a3,a3,a5
    e880a3f6:	8eaa                	mv	t4,a0
    e880a3f8:	bf4d                	j	e880a3aa <__subtf3+0x1aa>
    e880a3fa:	f8c581e3          	beq	a1,a2,e880a37c <__subtf3+0x17c>
    e880a3fe:	4605                	li	a2,1
    e880a400:	40e0073b          	negw	a4,a4
    e880a404:	164e                	slli	a2,a2,0x33
    e880a406:	2701                	sext.w	a4,a4
    e880a408:	8fd1                	or	a5,a5,a2
    e880a40a:	b77d                	j	e880a3b8 <__subtf3+0x1b8>
    e880a40c:	fc07061b          	addiw	a2,a4,-64
    e880a410:	04000893          	li	a7,64
    e880a414:	00c7d633          	srl	a2,a5,a2
    e880a418:	4801                	li	a6,0
    e880a41a:	01170863          	beq	a4,a7,e880a42a <__subtf3+0x22a>
    e880a41e:	08000813          	li	a6,128
    e880a422:	40e8073b          	subw	a4,a6,a4
    e880a426:	00e79833          	sll	a6,a5,a4
    e880a42a:	00a86533          	or	a0,a6,a0
    e880a42e:	00a03533          	snez	a0,a0
    e880a432:	8d51                	or	a0,a0,a2
    e880a434:	4701                	li	a4,0
    e880a436:	bf55                	j	e880a3ea <__subtf3+0x1ea>
    e880a438:	8d5d                	or	a0,a0,a5
    e880a43a:	00a03533          	snez	a0,a0
    e880a43e:	bfdd                	j	e880a434 <__subtf3+0x234>
    e880a440:	00130893          	addi	a7,t1,1 # 8001 <memcmp-0xe87f7fff>
    e880a444:	ffef0713          	addi	a4,t5,-2
    e880a448:	00e8fe33          	and	t3,a7,a4
    e880a44c:	100e1263          	bnez	t3,e880a550 <__subtf3+0x350>
    e880a450:	00a7e8b3          	or	a7,a5,a0
    e880a454:	04031463          	bnez	t1,e880a49c <__subtf3+0x29c>
    e880a458:	50088e63          	beqz	a7,e880a974 <__subtf3+0x774>
    e880a45c:	01d6e733          	or	a4,a3,t4
    e880a460:	34070563          	beqz	a4,e880a7aa <__subtf3+0x5aa>
    e880a464:	9eaa                	add	t4,t4,a0
    e880a466:	97b6                	add	a5,a5,a3
    e880a468:	00aeb533          	sltu	a0,t4,a0
    e880a46c:	97aa                	add	a5,a5,a0
    e880a46e:	00c79713          	slli	a4,a5,0xc
    e880a472:	50075263          	bgez	a4,e880a976 <__subtf3+0x776>
    e880a476:	577d                	li	a4,-1
    e880a478:	174e                	slli	a4,a4,0x33
    e880a47a:	177d                	addi	a4,a4,-1
    e880a47c:	8ff9                	and	a5,a5,a4
    e880a47e:	8576                	mv	a0,t4
    e880a480:	4701                	li	a4,0
    e880a482:	4885                	li	a7,1
    e880a484:	00757693          	andi	a3,a0,7
    e880a488:	10069563          	bnez	a3,e880a592 <__subtf3+0x392>
    e880a48c:	06080163          	beqz	a6,e880a4ee <__subtf3+0x2ee>
    e880a490:	00177693          	andi	a3,a4,1
    e880a494:	cea9                	beqz	a3,e880a4ee <__subtf3+0x2ee>
    e880a496:	00276713          	ori	a4,a4,2
    e880a49a:	a891                	j	e880a4ee <__subtf3+0x2ee>
    e880a49c:	02c31a63          	bne	t1,a2,e880a4d0 <__subtf3+0x2d0>
    e880a4a0:	56088b63          	beqz	a7,e880aa16 <__subtf3+0x816>
    e880a4a4:	cb27b70b          	extu	a4,a5,50,50
    e880a4a8:	00173713          	seqz	a4,a4
    e880a4ac:	0712                	slli	a4,a4,0x4
    e880a4ae:	02659663          	bne	a1,t1,e880a4da <__subtf3+0x2da>
    e880a4b2:	01d6e633          	or	a2,a3,t4
    e880a4b6:	c611                	beqz	a2,e880a4c2 <__subtf3+0x2c2>
    e880a4b8:	00d69613          	slli	a2,a3,0xd
    e880a4bc:	00064363          	bltz	a2,e880a4c2 <__subtf3+0x2c2>
    e880a4c0:	4741                	li	a4,16
    e880a4c2:	00089c63          	bnez	a7,e880a4da <__subtf3+0x2da>
    e880a4c6:	87b6                	mv	a5,a3
    e880a4c8:	8576                	mv	a0,t4
    e880a4ca:	68a1                	lui	a7,0x8
    e880a4cc:	18fd                	addi	a7,a7,-1
    e880a4ce:	bf5d                	j	e880a484 <__subtf3+0x284>
    e880a4d0:	4701                	li	a4,0
    e880a4d2:	fec598e3          	bne	a1,a2,e880a4c2 <__subtf3+0x2c2>
    e880a4d6:	4701                	li	a4,0
    e880a4d8:	bfe9                	j	e880a4b2 <__subtf3+0x2b2>
    e880a4da:	01d6e6b3          	or	a3,a3,t4
    e880a4de:	d6f5                	beqz	a3,e880a4ca <__subtf3+0x2ca>
    e880a4e0:	4505                	li	a0,1
    e880a4e2:	68a1                	lui	a7,0x8
    e880a4e4:	03251793          	slli	a5,a0,0x32
    e880a4e8:	4401                	li	s0,0
    e880a4ea:	4501                	li	a0,0
    e880a4ec:	18fd                	addi	a7,a7,-1
    e880a4ee:	00c79693          	slli	a3,a5,0xc
    e880a4f2:	0006dc63          	bgez	a3,e880a50a <__subtf3+0x30a>
    e880a4f6:	66a1                	lui	a3,0x8
    e880a4f8:	0885                	addi	a7,a7,1
    e880a4fa:	fff68613          	addi	a2,a3,-1 # 7fff <memcmp-0xe87f8001>
    e880a4fe:	4ec88663          	beq	a7,a2,e880a9ea <__subtf3+0x7ea>
    e880a502:	56fd                	li	a3,-1
    e880a504:	16ce                	slli	a3,a3,0x33
    e880a506:	16fd                	addi	a3,a3,-1
    e880a508:	8ff5                	and	a5,a5,a3
    e880a50a:	03d79693          	slli	a3,a5,0x3d
    e880a50e:	810d                	srli	a0,a0,0x3
    e880a510:	8d55                	or	a0,a0,a3
    e880a512:	66a1                	lui	a3,0x8
    e880a514:	16fd                	addi	a3,a3,-1
    e880a516:	838d                	srli	a5,a5,0x3
    e880a518:	00d89963          	bne	a7,a3,e880a52a <__subtf3+0x32a>
    e880a51c:	8d5d                	or	a0,a0,a5
    e880a51e:	4781                	li	a5,0
    e880a520:	c509                	beqz	a0,e880a52a <__subtf3+0x32a>
    e880a522:	4785                	li	a5,1
    e880a524:	17be                	slli	a5,a5,0x2f
    e880a526:	4501                	li	a0,0
    e880a528:	4401                	li	s0,0
    e880a52a:	3808b58b          	extu	a1,a7,14,0
    e880a52e:	bc07b78b          	extu	a5,a5,47,0
    e880a532:	15c2                	slli	a1,a1,0x30
    e880a534:	147e                	slli	s0,s0,0x3f
    e880a536:	8ddd                	or	a1,a1,a5
    e880a538:	8dc1                	or	a1,a1,s0
    e880a53a:	c319                	beqz	a4,e880a540 <__subtf3+0x340>
    e880a53c:	00172073          	csrs	fflags,a4
    e880a540:	70a2                	ld	ra,40(sp)
    e880a542:	f891440b          	ldd	s0,s1,(sp),0,4
    e880a546:	7a02                	ld	s4,32(sp)
    e880a548:	fb31490b          	ldd	s2,s3,(sp),1,4
    e880a54c:	6145                	addi	sp,sp,48
    e880a54e:	8082                	ret
    e880a550:	02c88063          	beq	a7,a2,e880a570 <__subtf3+0x370>
    e880a554:	9eaa                	add	t4,t4,a0
    e880a556:	00aeb533          	sltu	a0,t4,a0
    e880a55a:	97b6                	add	a5,a5,a3
    e880a55c:	97aa                	add	a5,a5,a0
    e880a55e:	03f79513          	slli	a0,a5,0x3f
    e880a562:	001ede93          	srli	t4,t4,0x1
    e880a566:	01d56533          	or	a0,a0,t4
    e880a56a:	8385                	srli	a5,a5,0x1
    e880a56c:	4701                	li	a4,0
    e880a56e:	bf19                	j	e880a484 <__subtf3+0x284>
    e880a570:	c489                	beqz	s1,e880a57a <__subtf3+0x37a>
    e880a572:	478d                	li	a5,3
    e880a574:	00f49763          	bne	s1,a5,e880a582 <__subtf3+0x382>
    e880a578:	e809                	bnez	s0,e880a58a <__subtf3+0x38a>
    e880a57a:	4781                	li	a5,0
    e880a57c:	4501                	li	a0,0
    e880a57e:	4715                	li	a4,5
    e880a580:	b7bd                	j	e880a4ee <__subtf3+0x2ee>
    e880a582:	4789                	li	a5,2
    e880a584:	00f49363          	bne	s1,a5,e880a58a <__subtf3+0x38a>
    e880a588:	f86d                	bnez	s0,e880a57a <__subtf3+0x37a>
    e880a58a:	57fd                	li	a5,-1
    e880a58c:	557d                	li	a0,-1
    e880a58e:	88ba                	mv	a7,a4
    e880a590:	4715                	li	a4,5
    e880a592:	4689                	li	a3,2
    e880a594:	00176713          	ori	a4,a4,1
    e880a598:	44d48563          	beq	s1,a3,e880a9e2 <__subtf3+0x7e2>
    e880a59c:	468d                	li	a3,3
    e880a59e:	42d48e63          	beq	s1,a3,e880a9da <__subtf3+0x7da>
    e880a5a2:	44049163          	bnez	s1,e880a9e4 <__subtf3+0x7e4>
    e880a5a6:	00f57693          	andi	a3,a0,15
    e880a5aa:	4611                	li	a2,4
    e880a5ac:	42c68c63          	beq	a3,a2,e880a9e4 <__subtf3+0x7e4>
    e880a5b0:	00450693          	addi	a3,a0,4
    e880a5b4:	00a6b533          	sltu	a0,a3,a0
    e880a5b8:	97aa                	add	a5,a5,a0
    e880a5ba:	8536                	mv	a0,a3
    e880a5bc:	a125                	j	e880a9e4 <__subtf3+0x7e4>
    e880a5be:	dcd5                	beqz	s1,e880a57a <__subtf3+0x37a>
    e880a5c0:	478d                	li	a5,3
    e880a5c2:	00f49963          	bne	s1,a5,e880a5d4 <__subtf3+0x3d4>
    e880a5c6:	d855                	beqz	s0,e880a57a <__subtf3+0x37a>
    e880a5c8:	57fd                	li	a5,-1
    e880a5ca:	557d                	li	a0,-1
    e880a5cc:	ffe70893          	addi	a7,a4,-2
    e880a5d0:	4801                	li	a6,0
    e880a5d2:	bf7d                	j	e880a590 <__subtf3+0x390>
    e880a5d4:	4789                	li	a5,2
    e880a5d6:	fef499e3          	bne	s1,a5,e880a5c8 <__subtf3+0x3c8>
    e880a5da:	f045                	bnez	s0,e880a57a <__subtf3+0x37a>
    e880a5dc:	b7f5                	j	e880a5c8 <__subtf3+0x3c8>
    e880a5de:	0b005f63          	blez	a6,e880a69c <__subtf3+0x49c>
    e880a5e2:	e9bd                	bnez	a1,e880a658 <__subtf3+0x458>
    e880a5e4:	01d6e5b3          	or	a1,a3,t4
    e880a5e8:	c80586e3          	beqz	a1,e880a274 <__subtf3+0x74>
    e880a5ec:	fff7081b          	addiw	a6,a4,-1
    e880a5f0:	02081163          	bnez	a6,e880a612 <__subtf3+0x412>
    e880a5f4:	41d50eb3          	sub	t4,a0,t4
    e880a5f8:	8f95                	sub	a5,a5,a3
    e880a5fa:	01d53533          	sltu	a0,a0,t4
    e880a5fe:	40a786b3          	sub	a3,a5,a0
    e880a602:	00c69793          	slli	a5,a3,0xc
    e880a606:	3407de63          	bgez	a5,e880a962 <__subtf3+0x762>
    e880a60a:	c806b90b          	extu	s2,a3,50,0
    e880a60e:	8a76                	mv	s4,t4
    e880a610:	ac51                	j	e880a8a4 <__subtf3+0x6a4>
    e880a612:	cac30ee3          	beq	t1,a2,e880a2ce <__subtf3+0xce>
    e880a616:	07400713          	li	a4,116
    e880a61a:	07074c63          	blt	a4,a6,e880a692 <__subtf3+0x492>
    e880a61e:	03f00713          	li	a4,63
    e880a622:	05074163          	blt	a4,a6,e880a664 <__subtf3+0x464>
    e880a626:	04000613          	li	a2,64
    e880a62a:	4106063b          	subw	a2,a2,a6
    e880a62e:	00c69733          	sll	a4,a3,a2
    e880a632:	010ed5b3          	srl	a1,t4,a6
    e880a636:	00ce9eb3          	sll	t4,t4,a2
    e880a63a:	8f4d                	or	a4,a4,a1
    e880a63c:	01d03eb3          	snez	t4,t4
    e880a640:	01d76eb3          	or	t4,a4,t4
    e880a644:	0106d6b3          	srl	a3,a3,a6
    e880a648:	41d50eb3          	sub	t4,a0,t4
    e880a64c:	40d786b3          	sub	a3,a5,a3
    e880a650:	01d537b3          	sltu	a5,a0,t4
    e880a654:	8e9d                	sub	a3,a3,a5
    e880a656:	b775                	j	e880a602 <__subtf3+0x402>
    e880a658:	c6c30be3          	beq	t1,a2,e880a2ce <__subtf3+0xce>
    e880a65c:	4705                	li	a4,1
    e880a65e:	174e                	slli	a4,a4,0x33
    e880a660:	8ed9                	or	a3,a3,a4
    e880a662:	bf55                	j	e880a616 <__subtf3+0x416>
    e880a664:	fc08071b          	addiw	a4,a6,-64
    e880a668:	04000593          	li	a1,64
    e880a66c:	00e6d733          	srl	a4,a3,a4
    e880a670:	4601                	li	a2,0
    e880a672:	00b80863          	beq	a6,a1,e880a682 <__subtf3+0x482>
    e880a676:	08000613          	li	a2,128
    e880a67a:	4106083b          	subw	a6,a2,a6
    e880a67e:	01069633          	sll	a2,a3,a6
    e880a682:	01d66eb3          	or	t4,a2,t4
    e880a686:	01d03eb3          	snez	t4,t4
    e880a68a:	01d76eb3          	or	t4,a4,t4
    e880a68e:	4681                	li	a3,0
    e880a690:	bf65                	j	e880a648 <__subtf3+0x448>
    e880a692:	01d6eeb3          	or	t4,a3,t4
    e880a696:	01d03eb3          	snez	t4,t4
    e880a69a:	bfd5                	j	e880a68e <__subtf3+0x48e>
    e880a69c:	0e080063          	beqz	a6,e880a77c <__subtf3+0x57c>
    e880a6a0:	08031b63          	bnez	t1,e880a736 <__subtf3+0x536>
    e880a6a4:	00a7e333          	or	t1,a5,a0
    e880a6a8:	02031063          	bnez	t1,e880a6c8 <__subtf3+0x4c8>
    e880a6ac:	2cc59163          	bne	a1,a2,e880a96e <__subtf3+0x76e>
    e880a6b0:	01d6e533          	or	a0,a3,t4
    e880a6b4:	30050063          	beqz	a0,e880a9b4 <__subtf3+0x7b4>
    e880a6b8:	00d69793          	slli	a5,a3,0xd
    e880a6bc:	2e07cf63          	bltz	a5,e880a9ba <__subtf3+0x7ba>
    e880a6c0:	87b6                	mv	a5,a3
    e880a6c2:	8576                	mv	a0,t4
    e880a6c4:	8472                	mv	s0,t3
    e880a6c6:	b1e9                	j	e880a390 <__subtf3+0x190>
    e880a6c8:	537d                	li	t1,-1
    e880a6ca:	00681e63          	bne	a6,t1,e880a6e6 <__subtf3+0x4e6>
    e880a6ce:	40ae8733          	sub	a4,t4,a0
    e880a6d2:	00eebeb3          	sltu	t4,t4,a4
    e880a6d6:	40f687b3          	sub	a5,a3,a5
    e880a6da:	41d786b3          	sub	a3,a5,t4
    e880a6de:	8eba                	mv	t4,a4
    e880a6e0:	89ae                	mv	s3,a1
    e880a6e2:	8472                	mv	s0,t3
    e880a6e4:	bf39                	j	e880a602 <__subtf3+0x402>
    e880a6e6:	fcc585e3          	beq	a1,a2,e880a6b0 <__subtf3+0x4b0>
    e880a6ea:	fff74713          	not	a4,a4
    e880a6ee:	2701                	sext.w	a4,a4
    e880a6f0:	07400613          	li	a2,116
    e880a6f4:	08e64063          	blt	a2,a4,e880a774 <__subtf3+0x574>
    e880a6f8:	03f00613          	li	a2,63
    e880a6fc:	04e64663          	blt	a2,a4,e880a748 <__subtf3+0x548>
    e880a700:	04000813          	li	a6,64
    e880a704:	40e8083b          	subw	a6,a6,a4
    e880a708:	00e558b3          	srl	a7,a0,a4
    e880a70c:	01079633          	sll	a2,a5,a6
    e880a710:	01051533          	sll	a0,a0,a6
    e880a714:	01166633          	or	a2,a2,a7
    e880a718:	00a03533          	snez	a0,a0
    e880a71c:	8d51                	or	a0,a0,a2
    e880a71e:	00e7d733          	srl	a4,a5,a4
    e880a722:	40ae8533          	sub	a0,t4,a0
    e880a726:	40e687b3          	sub	a5,a3,a4
    e880a72a:	00aeb6b3          	sltu	a3,t4,a0
    e880a72e:	40d786b3          	sub	a3,a5,a3
    e880a732:	8eaa                	mv	t4,a0
    e880a734:	b775                	j	e880a6e0 <__subtf3+0x4e0>
    e880a736:	f6c58de3          	beq	a1,a2,e880a6b0 <__subtf3+0x4b0>
    e880a73a:	4605                	li	a2,1
    e880a73c:	40e0073b          	negw	a4,a4
    e880a740:	164e                	slli	a2,a2,0x33
    e880a742:	2701                	sext.w	a4,a4
    e880a744:	8fd1                	or	a5,a5,a2
    e880a746:	b76d                	j	e880a6f0 <__subtf3+0x4f0>
    e880a748:	fc07061b          	addiw	a2,a4,-64
    e880a74c:	04000893          	li	a7,64
    e880a750:	00c7d633          	srl	a2,a5,a2
    e880a754:	4801                	li	a6,0
    e880a756:	01170863          	beq	a4,a7,e880a766 <__subtf3+0x566>
    e880a75a:	08000813          	li	a6,128
    e880a75e:	40e8073b          	subw	a4,a6,a4
    e880a762:	00e79833          	sll	a6,a5,a4
    e880a766:	00a86533          	or	a0,a6,a0
    e880a76a:	00a03533          	snez	a0,a0
    e880a76e:	8d51                	or	a0,a0,a2
    e880a770:	4701                	li	a4,0
    e880a772:	bf45                	j	e880a722 <__subtf3+0x522>
    e880a774:	8d5d                	or	a0,a0,a5
    e880a776:	00a03533          	snez	a0,a0
    e880a77a:	bfdd                	j	e880a770 <__subtf3+0x570>
    e880a77c:	00130893          	addi	a7,t1,1
    e880a780:	ffef0713          	addi	a4,t5,-2
    e880a784:	00e8f733          	and	a4,a7,a4
    e880a788:	eb6d                	bnez	a4,e880a87a <__subtf3+0x67a>
    e880a78a:	00a7ef33          	or	t5,a5,a0
    e880a78e:	01d6e8b3          	or	a7,a3,t4
    e880a792:	0a031263          	bnez	t1,e880a836 <__subtf3+0x636>
    e880a796:	040f1f63          	bnez	t5,e880a7f4 <__subtf3+0x5f4>
    e880a79a:	1e089063          	bnez	a7,e880a97a <__subtf3+0x77a>
    e880a79e:	ffe48413          	addi	s0,s1,-2
    e880a7a2:	00143413          	seqz	s0,s0
    e880a7a6:	4781                	li	a5,0
    e880a7a8:	4501                	li	a0,0
    e880a7aa:	00f56733          	or	a4,a0,a5
    e880a7ae:	22070263          	beqz	a4,e880a9d2 <__subtf3+0x7d2>
    e880a7b2:	00151613          	slli	a2,a0,0x1
    e880a7b6:	03f55813          	srli	a6,a0,0x3f
    e880a7ba:	00767693          	andi	a3,a2,7
    e880a7be:	02f8180b          	addsl	a6,a6,a5,1
    e880a7c2:	4701                	li	a4,0
    e880a7c4:	c285                	beqz	a3,e880a7e4 <__subtf3+0x5e4>
    e880a7c6:	4709                	li	a4,2
    e880a7c8:	1ce48863          	beq	s1,a4,e880a998 <__subtf3+0x798>
    e880a7cc:	470d                	li	a4,3
    e880a7ce:	1ae48c63          	beq	s1,a4,e880a986 <__subtf3+0x786>
    e880a7d2:	4705                	li	a4,1
    e880a7d4:	e881                	bnez	s1,e880a7e4 <__subtf3+0x5e4>
    e880a7d6:	00f67693          	andi	a3,a2,15
    e880a7da:	4591                	li	a1,4
    e880a7dc:	ffc63613          	sltiu	a2,a2,-4
    e880a7e0:	1ab69863          	bne	a3,a1,e880a990 <__subtf3+0x790>
    e880a7e4:	03485813          	srli	a6,a6,0x34
    e880a7e8:	00184813          	xori	a6,a6,1
    e880a7ec:	00187813          	andi	a6,a6,1
    e880a7f0:	4881                	li	a7,0
    e880a7f2:	b949                	j	e880a484 <__subtf3+0x284>
    e880a7f4:	fa088be3          	beqz	a7,e880a7aa <__subtf3+0x5aa>
    e880a7f8:	41d50633          	sub	a2,a0,t4
    e880a7fc:	00c535b3          	sltu	a1,a0,a2
    e880a800:	40d78733          	sub	a4,a5,a3
    e880a804:	8f0d                	sub	a4,a4,a1
    e880a806:	00c71593          	slli	a1,a4,0xc
    e880a80a:	0005dc63          	bgez	a1,e880a822 <__subtf3+0x622>
    e880a80e:	40ae8533          	sub	a0,t4,a0
    e880a812:	40f687b3          	sub	a5,a3,a5
    e880a816:	00aebeb3          	sltu	t4,t4,a0
    e880a81a:	41d787b3          	sub	a5,a5,t4
    e880a81e:	8472                	mv	s0,t3
    e880a820:	b769                	j	e880a7aa <__subtf3+0x5aa>
    e880a822:	00e66533          	or	a0,a2,a4
    e880a826:	14051d63          	bnez	a0,e880a980 <__subtf3+0x780>
    e880a82a:	ffe48413          	addi	s0,s1,-2
    e880a82e:	00143413          	seqz	s0,s0
    e880a832:	4781                	li	a5,0
    e880a834:	bf9d                	j	e880a7aa <__subtf3+0x5aa>
    e880a836:	02c31a63          	bne	t1,a2,e880a86a <__subtf3+0x66a>
    e880a83a:	1c0f0a63          	beqz	t5,e880aa0e <__subtf3+0x80e>
    e880a83e:	cb27b70b          	extu	a4,a5,50,50
    e880a842:	00173713          	seqz	a4,a4
    e880a846:	0712                	slli	a4,a4,0x4
    e880a848:	02659663          	bne	a1,t1,e880a874 <__subtf3+0x674>
    e880a84c:	00088763          	beqz	a7,e880a85a <__subtf3+0x65a>
    e880a850:	00d69613          	slli	a2,a3,0xd
    e880a854:	00064363          	bltz	a2,e880a85a <__subtf3+0x65a>
    e880a858:	4741                	li	a4,16
    e880a85a:	000f1d63          	bnez	t5,e880a874 <__subtf3+0x674>
    e880a85e:	16088263          	beqz	a7,e880a9c2 <__subtf3+0x7c2>
    e880a862:	87b6                	mv	a5,a3
    e880a864:	8576                	mv	a0,t4
    e880a866:	8472                	mv	s0,t3
    e880a868:	b18d                	j	e880a4ca <__subtf3+0x2ca>
    e880a86a:	4701                	li	a4,0
    e880a86c:	fec597e3          	bne	a1,a2,e880a85a <__subtf3+0x65a>
    e880a870:	4701                	li	a4,0
    e880a872:	bfe9                	j	e880a84c <__subtf3+0x64c>
    e880a874:	c4088be3          	beqz	a7,e880a4ca <__subtf3+0x2ca>
    e880a878:	b1a5                	j	e880a4e0 <__subtf3+0x2e0>
    e880a87a:	41d50a33          	sub	s4,a0,t4
    e880a87e:	40d78933          	sub	s2,a5,a3
    e880a882:	01453633          	sltu	a2,a0,s4
    e880a886:	40c90933          	sub	s2,s2,a2
    e880a88a:	00c91713          	slli	a4,s2,0xc
    e880a88e:	06075d63          	bgez	a4,e880a908 <__subtf3+0x708>
    e880a892:	40ae8a33          	sub	s4,t4,a0
    e880a896:	40f687b3          	sub	a5,a3,a5
    e880a89a:	014eb6b3          	sltu	a3,t4,s4
    e880a89e:	40d78933          	sub	s2,a5,a3
    e880a8a2:	8472                	mv	s0,t3
    e880a8a4:	06090663          	beqz	s2,e880a910 <__subtf3+0x710>
    e880a8a8:	854a                	mv	a0,s2
    e880a8aa:	54c000ef          	jal	ra,e880adf6 <__clzdi2>
    e880a8ae:	2501                	sext.w	a0,a0
    e880a8b0:	ff45061b          	addiw	a2,a0,-12
    e880a8b4:	03f00793          	li	a5,63
    e880a8b8:	8732                	mv	a4,a2
    e880a8ba:	06c7c163          	blt	a5,a2,e880a91c <__subtf3+0x71c>
    e880a8be:	04000793          	li	a5,64
    e880a8c2:	9f91                	subw	a5,a5,a2
    e880a8c4:	00c91933          	sll	s2,s2,a2
    e880a8c8:	00fa57b3          	srl	a5,s4,a5
    e880a8cc:	0127e7b3          	or	a5,a5,s2
    e880a8d0:	00ca1eb3          	sll	t4,s4,a2
    e880a8d4:	07364f63          	blt	a2,s3,e880a952 <__subtf3+0x752>
    e880a8d8:	413709bb          	subw	s3,a4,s3
    e880a8dc:	0019861b          	addiw	a2,s3,1
    e880a8e0:	03f00713          	li	a4,63
    e880a8e4:	04c74263          	blt	a4,a2,e880a928 <__subtf3+0x728>
    e880a8e8:	04000693          	li	a3,64
    e880a8ec:	9e91                	subw	a3,a3,a2
    e880a8ee:	00d79533          	sll	a0,a5,a3
    e880a8f2:	00ced733          	srl	a4,t4,a2
    e880a8f6:	00de96b3          	sll	a3,t4,a3
    e880a8fa:	8d59                	or	a0,a0,a4
    e880a8fc:	00d036b3          	snez	a3,a3
    e880a900:	8d55                	or	a0,a0,a3
    e880a902:	00c7d7b3          	srl	a5,a5,a2
    e880a906:	b555                	j	e880a7aa <__subtf3+0x5aa>
    e880a908:	012a6533          	or	a0,s4,s2
    e880a90c:	fd41                	bnez	a0,e880a8a4 <__subtf3+0x6a4>
    e880a90e:	bf31                	j	e880a82a <__subtf3+0x62a>
    e880a910:	8552                	mv	a0,s4
    e880a912:	4e4000ef          	jal	ra,e880adf6 <__clzdi2>
    e880a916:	0405051b          	addiw	a0,a0,64
    e880a91a:	bf59                	j	e880a8b0 <__subtf3+0x6b0>
    e880a91c:	fb45079b          	addiw	a5,a0,-76
    e880a920:	00fa17b3          	sll	a5,s4,a5
    e880a924:	4e81                	li	t4,0
    e880a926:	b77d                	j	e880a8d4 <__subtf3+0x6d4>
    e880a928:	fc19899b          	addiw	s3,s3,-63
    e880a92c:	04000713          	li	a4,64
    e880a930:	0137d9b3          	srl	s3,a5,s3
    e880a934:	4681                	li	a3,0
    e880a936:	00e60763          	beq	a2,a4,e880a944 <__subtf3+0x744>
    e880a93a:	08000693          	li	a3,128
    e880a93e:	9e91                	subw	a3,a3,a2
    e880a940:	00d796b3          	sll	a3,a5,a3
    e880a944:	00dee6b3          	or	a3,t4,a3
    e880a948:	00d03eb3          	snez	t4,a3
    e880a94c:	01d9e533          	or	a0,s3,t4
    e880a950:	b5cd                	j	e880a832 <__subtf3+0x632>
    e880a952:	56fd                	li	a3,-1
    e880a954:	16ce                	slli	a3,a3,0x33
    e880a956:	fff68513          	addi	a0,a3,-1 # 7fff <memcmp-0xe87f8001>
    e880a95a:	40c989b3          	sub	s3,s3,a2
    e880a95e:	00a7f6b3          	and	a3,a5,a0
    e880a962:	87b6                	mv	a5,a3
    e880a964:	8576                	mv	a0,t4
    e880a966:	e40982e3          	beqz	s3,e880a7aa <__subtf3+0x5aa>
    e880a96a:	88ce                	mv	a7,s3
    e880a96c:	baa9                	j	e880a2c6 <__subtf3+0xc6>
    e880a96e:	89ae                	mv	s3,a1
    e880a970:	8472                	mv	s0,t3
    e880a972:	bfc5                	j	e880a962 <__subtf3+0x762>
    e880a974:	87b6                	mv	a5,a3
    e880a976:	8576                	mv	a0,t4
    e880a978:	bd0d                	j	e880a7aa <__subtf3+0x5aa>
    e880a97a:	87b6                	mv	a5,a3
    e880a97c:	8576                	mv	a0,t4
    e880a97e:	b545                	j	e880a81e <__subtf3+0x61e>
    e880a980:	87ba                	mv	a5,a4
    e880a982:	8532                	mv	a0,a2
    e880a984:	b51d                	j	e880a7aa <__subtf3+0x5aa>
    e880a986:	4705                	li	a4,1
    e880a988:	e4041ee3          	bnez	s0,e880a7e4 <__subtf3+0x5e4>
    e880a98c:	ff863613          	sltiu	a2,a2,-8
    e880a990:	00164613          	xori	a2,a2,1
    e880a994:	9832                	add	a6,a6,a2
    e880a996:	b5b9                	j	e880a7e4 <__subtf3+0x5e4>
    e880a998:	4705                	li	a4,1
    e880a99a:	e40405e3          	beqz	s0,e880a7e4 <__subtf3+0x5e4>
    e880a99e:	b7fd                	j	e880a98c <__subtf3+0x78c>
    e880a9a0:	4781                	li	a5,0
    e880a9a2:	4701                	li	a4,0
    e880a9a4:	b6a9                	j	e880a4ee <__subtf3+0x2ee>
    e880a9a6:	87b6                	mv	a5,a3
    e880a9a8:	8576                	mv	a0,t4
    e880a9aa:	ba31                	j	e880a2c6 <__subtf3+0xc6>
    e880a9ac:	4781                	li	a5,0
    e880a9ae:	4501                	li	a0,0
    e880a9b0:	889a                	mv	a7,t1
    e880a9b2:	bfc5                	j	e880a9a2 <__subtf3+0x7a2>
    e880a9b4:	4781                	li	a5,0
    e880a9b6:	8472                	mv	s0,t3
    e880a9b8:	b7ed                	j	e880a9a2 <__subtf3+0x7a2>
    e880a9ba:	87b6                	mv	a5,a3
    e880a9bc:	8576                	mv	a0,t4
    e880a9be:	8472                	mv	s0,t3
    e880a9c0:	b219                	j	e880a2c6 <__subtf3+0xc6>
    e880a9c2:	4785                	li	a5,1
    e880a9c4:	68a1                	lui	a7,0x8
    e880a9c6:	4501                	li	a0,0
    e880a9c8:	4401                	li	s0,0
    e880a9ca:	17ca                	slli	a5,a5,0x32
    e880a9cc:	18fd                	addi	a7,a7,-1
    e880a9ce:	4741                	li	a4,16
    e880a9d0:	be39                	j	e880a4ee <__subtf3+0x2ee>
    e880a9d2:	4781                	li	a5,0
    e880a9d4:	4501                	li	a0,0
    e880a9d6:	4881                	li	a7,0
    e880a9d8:	b7e9                	j	e880a9a2 <__subtf3+0x7a2>
    e880a9da:	e409                	bnez	s0,e880a9e4 <__subtf3+0x7e4>
    e880a9dc:	00850693          	addi	a3,a0,8
    e880a9e0:	bed1                	j	e880a5b4 <__subtf3+0x3b4>
    e880a9e2:	fc6d                	bnez	s0,e880a9dc <__subtf3+0x7dc>
    e880a9e4:	aa0819e3          	bnez	a6,e880a496 <__subtf3+0x296>
    e880a9e8:	b619                	j	e880a4ee <__subtf3+0x2ee>
    e880a9ea:	4501                	li	a0,0
    e880a9ec:	cc89                	beqz	s1,e880aa06 <__subtf3+0x806>
    e880a9ee:	478d                	li	a5,3
    e880a9f0:	00f49763          	bne	s1,a5,e880a9fe <__subtf3+0x7fe>
    e880a9f4:	c809                	beqz	s0,e880aa06 <__subtf3+0x806>
    e880a9f6:	557d                	li	a0,-1
    e880a9f8:	ffe68893          	addi	a7,a3,-2
    e880a9fc:	a029                	j	e880aa06 <__subtf3+0x806>
    e880a9fe:	4789                	li	a5,2
    e880aa00:	fef49be3          	bne	s1,a5,e880a9f6 <__subtf3+0x7f6>
    e880aa04:	d86d                	beqz	s0,e880a9f6 <__subtf3+0x7f6>
    e880aa06:	00576713          	ori	a4,a4,5
    e880aa0a:	87aa                	mv	a5,a0
    e880aa0c:	bcfd                	j	e880a50a <__subtf3+0x30a>
    e880aa0e:	4701                	li	a4,0
    e880aa10:	e46597e3          	bne	a1,t1,e880a85e <__subtf3+0x65e>
    e880aa14:	bdb1                	j	e880a870 <__subtf3+0x670>
    e880aa16:	4701                	li	a4,0
    e880aa18:	aa6597e3          	bne	a1,t1,e880a4c6 <__subtf3+0x2c6>
    e880aa1c:	bc6d                	j	e880a4d6 <__subtf3+0x2d6>

00000000e880aa1e <__fixtfsi>:
    e880aa1e:	002027f3          	frrm	a5
    e880aa22:	6611                	lui	a2,0x4
    e880aa24:	fb05b68b          	extu	a3,a1,62,48
    e880aa28:	ffe60713          	addi	a4,a2,-2 # 3ffe <memcmp-0xe87fc002>
    e880aa2c:	bc05b78b          	extu	a5,a1,47,0
    e880aa30:	91fd                	srli	a1,a1,0x3f
    e880aa32:	00d74863          	blt	a4,a3,e880aa42 <__fixtfsi+0x24>
    e880aa36:	e6b5                	bnez	a3,e880aaa2 <__fixtfsi+0x84>
    e880aa38:	8fc9                	or	a5,a5,a0
    e880aa3a:	4701                	li	a4,0
    e880aa3c:	e3ad                	bnez	a5,e880aa9e <__fixtfsi+0x80>
    e880aa3e:	853a                	mv	a0,a4
    e880aa40:	8082                	ret
    e880aa42:	01d60713          	addi	a4,a2,29
    e880aa46:	02d75363          	bge	a4,a3,e880aa6c <__fixtfsi+0x4e>
    e880aa4a:	80000737          	lui	a4,0x80000
    e880aa4e:	fff74713          	not	a4,a4
    e880aa52:	9f2d                	addw	a4,a4,a1
    e880aa54:	c9a9                	beqz	a1,e880aaa6 <__fixtfsi+0x88>
    e880aa56:	01e60593          	addi	a1,a2,30
    e880aa5a:	4641                	li	a2,16
    e880aa5c:	04b69663          	bne	a3,a1,e880aaa8 <__fixtfsi+0x8a>
    e880aa60:	fd17b68b          	extu	a3,a5,63,17
    e880aa64:	e2b1                	bnez	a3,e880aaa8 <__fixtfsi+0x8a>
    e880aa66:	17be                	slli	a5,a5,0x2f
    e880aa68:	8fc9                	or	a5,a5,a0
    e880aa6a:	bfc9                	j	e880aa3c <__fixtfsi+0x1e>
    e880aa6c:	4705                	li	a4,1
    e880aa6e:	1742                	slli	a4,a4,0x30
    e880aa70:	8fd9                	or	a5,a5,a4
    e880aa72:	7771                	lui	a4,0xffffc
    e880aa74:	2681                	sext.w	a3,a3
    e880aa76:	2745                	addiw	a4,a4,17
    e880aa78:	9f35                	addw	a4,a4,a3
    e880aa7a:	00e79733          	sll	a4,a5,a4
    e880aa7e:	8d59                	or	a0,a0,a4
    e880aa80:	6711                	lui	a4,0x4
    e880aa82:	02f7071b          	addiw	a4,a4,47
    e880aa86:	40d706bb          	subw	a3,a4,a3
    e880aa8a:	00d7d7b3          	srl	a5,a5,a3
    e880aa8e:	0007871b          	sext.w	a4,a5
    e880aa92:	c589                	beqz	a1,e880aa9c <__fixtfsi+0x7e>
    e880aa94:	40e007bb          	negw	a5,a4
    e880aa98:	0007871b          	sext.w	a4,a5
    e880aa9c:	d14d                	beqz	a0,e880aa3e <__fixtfsi+0x20>
    e880aa9e:	4605                	li	a2,1
    e880aaa0:	a021                	j	e880aaa8 <__fixtfsi+0x8a>
    e880aaa2:	4701                	li	a4,0
    e880aaa4:	bfed                	j	e880aa9e <__fixtfsi+0x80>
    e880aaa6:	4641                	li	a2,16
    e880aaa8:	00162073          	csrs	fflags,a2
    e880aaac:	bf49                	j	e880aa3e <__fixtfsi+0x20>

00000000e880aaae <__floatsitf>:
    e880aaae:	1101                	addi	sp,sp,-32
    e880aab0:	ec06                	sd	ra,24(sp)
    e880aab2:	e422                	sd	s0,8(sp)
    e880aab4:	e826                	sd	s1,16(sp)
    e880aab6:	c921                	beqz	a0,e880ab06 <__floatsitf+0x58>
    e880aab8:	0005079b          	sext.w	a5,a0
    e880aabc:	03f55493          	srli	s1,a0,0x3f
    e880aac0:	00055563          	bgez	a0,e880aaca <__floatsitf+0x1c>
    e880aac4:	40f007bb          	negw	a5,a5
    e880aac8:	2781                	sext.w	a5,a5
    e880aaca:	7c07b40b          	extu	s0,a5,31,0
    e880aace:	8522                	mv	a0,s0
    e880aad0:	326000ef          	jal	ra,e880adf6 <__clzdi2>
    e880aad4:	6691                	lui	a3,0x4
    e880aad6:	03e6879b          	addiw	a5,a3,62
    e880aada:	40a7873b          	subw	a4,a5,a0
    e880aade:	02f6869b          	addiw	a3,a3,47
    e880aae2:	9e99                	subw	a3,a3,a4
    e880aae4:	00d417b3          	sll	a5,s0,a3
    e880aae8:	60e2                	ld	ra,24(sp)
    e880aaea:	6422                	ld	s0,8(sp)
    e880aaec:	3807370b          	extu	a4,a4,14,0
    e880aaf0:	bc07b78b          	extu	a5,a5,47,0
    e880aaf4:	1742                	slli	a4,a4,0x30
    e880aaf6:	03f49593          	slli	a1,s1,0x3f
    e880aafa:	8fd9                	or	a5,a5,a4
    e880aafc:	64c2                	ld	s1,16(sp)
    e880aafe:	4501                	li	a0,0
    e880ab00:	8ddd                	or	a1,a1,a5
    e880ab02:	6105                	addi	sp,sp,32
    e880ab04:	8082                	ret
    e880ab06:	4781                	li	a5,0
    e880ab08:	4701                	li	a4,0
    e880ab0a:	4481                	li	s1,0
    e880ab0c:	bff1                	j	e880aae8 <__floatsitf+0x3a>

00000000e880ab0e <__extenddftf2>:
    e880ab0e:	1101                	addi	sp,sp,-32
    e880ab10:	ec06                	sd	ra,24(sp)
    e880ab12:	e422                	sd	s0,8(sp)
    e880ab14:	e826                	sd	s1,16(sp)
    e880ab16:	e20505d3          	fmv.x.d	a1,fa0
    e880ab1a:	002027f3          	frrm	a5
    e880ab1e:	fb45b50b          	extu	a0,a1,62,52
    e880ab22:	00150713          	addi	a4,a0,1
    e880ab26:	7fe77713          	andi	a4,a4,2046
    e880ab2a:	cc05b40b          	extu	s0,a1,51,0
    e880ab2e:	03f5d493          	srli	s1,a1,0x3f
    e880ab32:	cb11                	beqz	a4,e880ab46 <__extenddftf2+0x38>
    e880ab34:	6711                	lui	a4,0x4
    e880ab36:	c0070713          	addi	a4,a4,-1024 # 3c00 <memcmp-0xe87fc400>
    e880ab3a:	00445793          	srli	a5,s0,0x4
    e880ab3e:	953a                	add	a0,a0,a4
    e880ab40:	1472                	slli	s0,s0,0x3c
    e880ab42:	4701                	li	a4,0
    e880ab44:	a8b9                	j	e880aba2 <__extenddftf2+0x94>
    e880ab46:	ed1d                	bnez	a0,e880ab84 <__extenddftf2+0x76>
    e880ab48:	4781                	li	a5,0
    e880ab4a:	dc65                	beqz	s0,e880ab42 <__extenddftf2+0x34>
    e880ab4c:	8522                	mv	a0,s0
    e880ab4e:	2a8000ef          	jal	ra,e880adf6 <__clzdi2>
    e880ab52:	0005071b          	sext.w	a4,a0
    e880ab56:	47b9                	li	a5,14
    e880ab58:	02e7c063          	blt	a5,a4,e880ab78 <__extenddftf2+0x6a>
    e880ab5c:	47bd                	li	a5,15
    e880ab5e:	9f89                	subw	a5,a5,a0
    e880ab60:	0315071b          	addiw	a4,a0,49
    e880ab64:	00f457b3          	srl	a5,s0,a5
    e880ab68:	00e41433          	sll	s0,s0,a4
    e880ab6c:	6711                	lui	a4,0x4
    e880ab6e:	c0c7071b          	addiw	a4,a4,-1012
    e880ab72:	40a7053b          	subw	a0,a4,a0
    e880ab76:	b7f1                	j	e880ab42 <__extenddftf2+0x34>
    e880ab78:	ff15079b          	addiw	a5,a0,-15
    e880ab7c:	00f417b3          	sll	a5,s0,a5
    e880ab80:	4401                	li	s0,0
    e880ab82:	b7ed                	j	e880ab6c <__extenddftf2+0x5e>
    e880ab84:	c029                	beqz	s0,e880abc6 <__extenddftf2+0xb8>
    e880ab86:	4685                	li	a3,1
    e880ab88:	03369713          	slli	a4,a3,0x33
    e880ab8c:	8f61                	and	a4,a4,s0
    e880ab8e:	00445793          	srli	a5,s0,0x4
    e880ab92:	00173713          	seqz	a4,a4
    e880ab96:	16be                	slli	a3,a3,0x2f
    e880ab98:	6521                	lui	a0,0x8
    e880ab9a:	0712                	slli	a4,a4,0x4
    e880ab9c:	8fd5                	or	a5,a5,a3
    e880ab9e:	1472                	slli	s0,s0,0x3c
    e880aba0:	157d                	addi	a0,a0,-1
    e880aba2:	3805358b          	extu	a1,a0,14,0
    e880aba6:	bc07b78b          	extu	a5,a5,47,0
    e880abaa:	15c2                	slli	a1,a1,0x30
    e880abac:	03f49693          	slli	a3,s1,0x3f
    e880abb0:	8ddd                	or	a1,a1,a5
    e880abb2:	8dd5                	or	a1,a1,a3
    e880abb4:	c319                	beqz	a4,e880abba <__extenddftf2+0xac>
    e880abb6:	00172073          	csrs	fflags,a4
    e880abba:	8522                	mv	a0,s0
    e880abbc:	60e2                	ld	ra,24(sp)
    e880abbe:	6422                	ld	s0,8(sp)
    e880abc0:	64c2                	ld	s1,16(sp)
    e880abc2:	6105                	addi	sp,sp,32
    e880abc4:	8082                	ret
    e880abc6:	6521                	lui	a0,0x8
    e880abc8:	4781                	li	a5,0
    e880abca:	157d                	addi	a0,a0,-1
    e880abcc:	bf9d                	j	e880ab42 <__extenddftf2+0x34>

00000000e880abce <__trunctfdf2>:
    e880abce:	002026f3          	frrm	a3
    e880abd2:	fb05b88b          	extu	a7,a1,62,48
    e880abd6:	03f5d613          	srli	a2,a1,0x3f
    e880abda:	bc05b58b          	extu	a1,a1,47,0
    e880abde:	00359793          	slli	a5,a1,0x3
    e880abe2:	6321                	lui	t1,0x8
    e880abe4:	03d55593          	srli	a1,a0,0x3d
    e880abe8:	8ddd                	or	a1,a1,a5
    e880abea:	ffe30713          	addi	a4,t1,-2 # 7ffe <memcmp-0xe87f8002>
    e880abee:	00188793          	addi	a5,a7,1 # 8001 <memcmp-0xe87f7fff>
    e880abf2:	8ff9                	and	a5,a5,a4
    e880abf4:	2681                	sext.w	a3,a3
    e880abf6:	00351e93          	slli	t4,a0,0x3
    e880abfa:	16078d63          	beqz	a5,e880ad74 <__trunctfdf2+0x1a6>
    e880abfe:	7771                	lui	a4,0xffffc
    e880ac00:	40070713          	addi	a4,a4,1024 # ffffffffffffc400 <__DRAM0_INF_BASE+0xffffffff0000c400>
    e880ac04:	98ba                	add	a7,a7,a4
    e880ac06:	7fe00793          	li	a5,2046
    e880ac0a:	0917dd63          	bge	a5,a7,e880aca4 <__trunctfdf2+0xd6>
    e880ac0e:	c2a9                	beqz	a3,e880ac50 <__trunctfdf2+0x82>
    e880ac10:	478d                	li	a5,3
    e880ac12:	02f69b63          	bne	a3,a5,e880ac48 <__trunctfdf2+0x7a>
    e880ac16:	ce0d                	beqz	a2,e880ac50 <__trunctfdf2+0x82>
    e880ac18:	57fd                	li	a5,-1
    e880ac1a:	7fe00893          	li	a7,2046
    e880ac1e:	4701                	li	a4,0
    e880ac20:	4e15                	li	t3,5
    e880ac22:	4589                	li	a1,2
    e880ac24:	001e6e13          	ori	t3,t3,1
    e880ac28:	1ab68363          	beq	a3,a1,e880adce <__trunctfdf2+0x200>
    e880ac2c:	458d                	li	a1,3
    e880ac2e:	18b68c63          	beq	a3,a1,e880adc6 <__trunctfdf2+0x1f8>
    e880ac32:	e699                	bnez	a3,e880ac40 <__trunctfdf2+0x72>
    e880ac34:	00f7f593          	andi	a1,a5,15
    e880ac38:	4511                	li	a0,4
    e880ac3a:	00a58363          	beq	a1,a0,e880ac40 <__trunctfdf2+0x72>
    e880ac3e:	0791                	addi	a5,a5,4
    e880ac40:	cf01                	beqz	a4,e880ac58 <__trunctfdf2+0x8a>
    e880ac42:	002e6e13          	ori	t3,t3,2
    e880ac46:	a809                	j	e880ac58 <__trunctfdf2+0x8a>
    e880ac48:	4789                	li	a5,2
    e880ac4a:	fcf697e3          	bne	a3,a5,e880ac18 <__trunctfdf2+0x4a>
    e880ac4e:	d669                	beqz	a2,e880ac18 <__trunctfdf2+0x4a>
    e880ac50:	4781                	li	a5,0
    e880ac52:	7ff00893          	li	a7,2047
    e880ac56:	4e15                	li	t3,5
    e880ac58:	00879713          	slli	a4,a5,0x8
    e880ac5c:	00075b63          	bgez	a4,e880ac72 <__trunctfdf2+0xa4>
    e880ac60:	0885                	addi	a7,a7,1
    e880ac62:	7ff00713          	li	a4,2047
    e880ac66:	16e88763          	beq	a7,a4,e880add4 <__trunctfdf2+0x206>
    e880ac6a:	56fd                	li	a3,-1
    e880ac6c:	16de                	slli	a3,a3,0x37
    e880ac6e:	16fd                	addi	a3,a3,-1
    e880ac70:	8ff5                	and	a5,a5,a3
    e880ac72:	7ff00713          	li	a4,2047
    e880ac76:	838d                	srli	a5,a5,0x3
    e880ac78:	00e89663          	bne	a7,a4,e880ac84 <__trunctfdf2+0xb6>
    e880ac7c:	c781                	beqz	a5,e880ac84 <__trunctfdf2+0xb6>
    e880ac7e:	4785                	li	a5,1
    e880ac80:	17ce                	slli	a5,a5,0x33
    e880ac82:	4601                	li	a2,0
    e880ac84:	7ff8f893          	andi	a7,a7,2047
    e880ac88:	cc07b78b          	extu	a5,a5,51,0
    e880ac8c:	18d2                	slli	a7,a7,0x34
    e880ac8e:	167e                	slli	a2,a2,0x3f
    e880ac90:	0117e7b3          	or	a5,a5,a7
    e880ac94:	8fd1                	or	a5,a5,a2
    e880ac96:	000e0463          	beqz	t3,e880ac9e <__trunctfdf2+0xd0>
    e880ac9a:	001e2073          	csrs	fflags,t3
    e880ac9e:	f2078553          	fmv.d.x	fa0,a5
    e880aca2:	8082                	ret
    e880aca4:	0b104363          	bgtz	a7,e880ad4a <__trunctfdf2+0x17c>
    e880aca8:	fcc00793          	li	a5,-52
    e880acac:	10f8c163          	blt	a7,a5,e880adae <__trunctfdf2+0x1e0>
    e880acb0:	4785                	li	a5,1
    e880acb2:	17ce                	slli	a5,a5,0x33
    e880acb4:	03d00e13          	li	t3,61
    e880acb8:	8ddd                	or	a1,a1,a5
    e880acba:	411e0e33          	sub	t3,t3,a7
    e880acbe:	03f00793          	li	a5,63
    e880acc2:	2881                	sext.w	a7,a7
    e880acc4:	05c7ce63          	blt	a5,t3,e880ad20 <__trunctfdf2+0x152>
    e880acc8:	0038851b          	addiw	a0,a7,3
    e880accc:	03d00713          	li	a4,61
    e880acd0:	4117073b          	subw	a4,a4,a7
    e880acd4:	00ae97b3          	sll	a5,t4,a0
    e880acd8:	00eed733          	srl	a4,t4,a4
    e880acdc:	00f037b3          	snez	a5,a5
    e880ace0:	8fd9                	or	a5,a5,a4
    e880ace2:	00a595b3          	sll	a1,a1,a0
    e880ace6:	8fcd                	or	a5,a5,a1
    e880ace8:	4881                	li	a7,0
    e880acea:	cfe1                	beqz	a5,e880adc2 <__trunctfdf2+0x1f4>
    e880acec:	00179713          	slli	a4,a5,0x1
    e880acf0:	00777593          	andi	a1,a4,7
    e880acf4:	4e01                	li	t3,0
    e880acf6:	cd99                	beqz	a1,e880ad14 <__trunctfdf2+0x146>
    e880acf8:	4589                	li	a1,2
    e880acfa:	0ab68f63          	beq	a3,a1,e880adb8 <__trunctfdf2+0x1ea>
    e880acfe:	458d                	li	a1,3
    e880ad00:	4e05                	li	t3,1
    e880ad02:	0ab68863          	beq	a3,a1,e880adb2 <__trunctfdf2+0x1e4>
    e880ad06:	e699                	bnez	a3,e880ad14 <__trunctfdf2+0x146>
    e880ad08:	00f77593          	andi	a1,a4,15
    e880ad0c:	4511                	li	a0,4
    e880ad0e:	00a58363          	beq	a1,a0,e880ad14 <__trunctfdf2+0x146>
    e880ad12:	0711                	addi	a4,a4,4
    e880ad14:	9361                	srli	a4,a4,0x38
    e880ad16:	00174713          	xori	a4,a4,1
    e880ad1a:	8b05                	andi	a4,a4,1
    e880ad1c:	4881                	li	a7,0
    e880ad1e:	a091                	j	e880ad62 <__trunctfdf2+0x194>
    e880ad20:	5375                	li	t1,-3
    e880ad22:	4113033b          	subw	t1,t1,a7
    e880ad26:	04000793          	li	a5,64
    e880ad2a:	0065d333          	srl	t1,a1,t1
    e880ad2e:	4801                	li	a6,0
    e880ad30:	00fe0663          	beq	t3,a5,e880ad3c <__trunctfdf2+0x16e>
    e880ad34:	0438871b          	addiw	a4,a7,67
    e880ad38:	00e59833          	sll	a6,a1,a4
    e880ad3c:	01d86833          	or	a6,a6,t4
    e880ad40:	01003833          	snez	a6,a6
    e880ad44:	010367b3          	or	a5,t1,a6
    e880ad48:	b745                	j	e880ace8 <__trunctfdf2+0x11a>
    e880ad4a:	00751793          	slli	a5,a0,0x7
    e880ad4e:	00f037b3          	snez	a5,a5
    e880ad52:	03ced813          	srli	a6,t4,0x3c
    e880ad56:	0107e7b3          	or	a5,a5,a6
    e880ad5a:	0592                	slli	a1,a1,0x4
    e880ad5c:	8fcd                	or	a5,a5,a1
    e880ad5e:	4701                	li	a4,0
    e880ad60:	4e01                	li	t3,0
    e880ad62:	0077f593          	andi	a1,a5,7
    e880ad66:	ea059ee3          	bnez	a1,e880ac22 <__trunctfdf2+0x54>
    e880ad6a:	ee0707e3          	beqz	a4,e880ac58 <__trunctfdf2+0x8a>
    e880ad6e:	001e7713          	andi	a4,t3,1
    e880ad72:	b5f9                	j	e880ac40 <__trunctfdf2+0x72>
    e880ad74:	01d5e7b3          	or	a5,a1,t4
    e880ad78:	00089563          	bnez	a7,e880ad82 <__trunctfdf2+0x1b4>
    e880ad7c:	00f037b3          	snez	a5,a5
    e880ad80:	b7a5                	j	e880ace8 <__trunctfdf2+0x11a>
    e880ad82:	cf95                	beqz	a5,e880adbe <__trunctfdf2+0x1f0>
    e880ad84:	137d                	addi	t1,t1,-1
    e880ad86:	4e01                	li	t3,0
    e880ad88:	00689763          	bne	a7,t1,e880ad96 <__trunctfdf2+0x1c8>
    e880ad8c:	0325de13          	srli	t3,a1,0x32
    e880ad90:	001e3e13          	seqz	t3,t3
    e880ad94:	0e12                	slli	t3,t3,0x4
    e880ad96:	03ced793          	srli	a5,t4,0x3c
    e880ad9a:	0592                	slli	a1,a1,0x4
    e880ad9c:	8ddd                	or	a1,a1,a5
    e880ad9e:	4785                	li	a5,1
    e880ada0:	99e1                	andi	a1,a1,-8
    e880ada2:	17da                	slli	a5,a5,0x36
    e880ada4:	8fcd                	or	a5,a5,a1
    e880ada6:	7ff00893          	li	a7,2047
    e880adaa:	4701                	li	a4,0
    e880adac:	bf5d                	j	e880ad62 <__trunctfdf2+0x194>
    e880adae:	4785                	li	a5,1
    e880adb0:	bf35                	j	e880acec <__trunctfdf2+0x11e>
    e880adb2:	f22d                	bnez	a2,e880ad14 <__trunctfdf2+0x146>
    e880adb4:	0721                	addi	a4,a4,8
    e880adb6:	bfb9                	j	e880ad14 <__trunctfdf2+0x146>
    e880adb8:	4e05                	li	t3,1
    e880adba:	de29                	beqz	a2,e880ad14 <__trunctfdf2+0x146>
    e880adbc:	bfe5                	j	e880adb4 <__trunctfdf2+0x1e6>
    e880adbe:	7ff00893          	li	a7,2047
    e880adc2:	4e01                	li	t3,0
    e880adc4:	bd51                	j	e880ac58 <__trunctfdf2+0x8a>
    e880adc6:	e6061de3          	bnez	a2,e880ac40 <__trunctfdf2+0x72>
    e880adca:	07a1                	addi	a5,a5,8
    e880adcc:	bd95                	j	e880ac40 <__trunctfdf2+0x72>
    e880adce:	e60609e3          	beqz	a2,e880ac40 <__trunctfdf2+0x72>
    e880add2:	bfe5                	j	e880adca <__trunctfdf2+0x1fc>
    e880add4:	4781                	li	a5,0
    e880add6:	ce89                	beqz	a3,e880adf0 <__trunctfdf2+0x222>
    e880add8:	470d                	li	a4,3
    e880adda:	00e69763          	bne	a3,a4,e880ade8 <__trunctfdf2+0x21a>
    e880adde:	ca09                	beqz	a2,e880adf0 <__trunctfdf2+0x222>
    e880ade0:	57fd                	li	a5,-1
    e880ade2:	7fe00893          	li	a7,2046
    e880ade6:	a029                	j	e880adf0 <__trunctfdf2+0x222>
    e880ade8:	4709                	li	a4,2
    e880adea:	fee69be3          	bne	a3,a4,e880ade0 <__trunctfdf2+0x212>
    e880adee:	da6d                	beqz	a2,e880ade0 <__trunctfdf2+0x212>
    e880adf0:	005e6e13          	ori	t3,t3,5
    e880adf4:	bdbd                	j	e880ac72 <__trunctfdf2+0xa4>

00000000e880adf6 <__clzdi2>:
    e880adf6:	03800793          	li	a5,56
    e880adfa:	00f55733          	srl	a4,a0,a5
    e880adfe:	0ff77713          	andi	a4,a4,255
    e880ae02:	e319                	bnez	a4,e880ae08 <__clzdi2+0x12>
    e880ae04:	17e1                	addi	a5,a5,-8
    e880ae06:	fbf5                	bnez	a5,e880adfa <__clzdi2+0x4>
    e880ae08:	04000713          	li	a4,64
    e880ae0c:	8f1d                	sub	a4,a4,a5
    e880ae0e:	00095697          	auipc	a3,0x95
    e880ae12:	ae268693          	addi	a3,a3,-1310 # e889f8f0 <__clz_tab>
    e880ae16:	00f557b3          	srl	a5,a0,a5
    e880ae1a:	80f6c50b          	lrbu	a0,a3,a5,0
    e880ae1e:	40a7053b          	subw	a0,a4,a0
    e880ae22:	8082                	ret
	...

00000000e880ae30 <cos>:
    e880ae30:	e20507d3          	fmv.x.d	a5,fa0
    e880ae34:	1101                	addi	sp,sp,-32
    e880ae36:	3fe92737          	lui	a4,0x3fe92
    e880ae3a:	ec06                	sd	ra,24(sp)
    e880ae3c:	1fb70713          	addi	a4,a4,507 # 3fe921fb <memcmp-0xa896de05>
    e880ae40:	fa07b68b          	extu	a3,a5,62,32
    e880ae44:	02d75e63          	bge	a4,a3,e880ae80 <cos+0x50>
    e880ae48:	7ff00737          	lui	a4,0x7ff00
    e880ae4c:	00e6c863          	blt	a3,a4,e880ae5c <cos+0x2c>
    e880ae50:	0aa57553          	fsub.d	fa0,fa0,fa0
    e880ae54:	60e2                	ld	ra,24(sp)
    e880ae56:	6105                	addi	sp,sp,32
    e880ae58:	8082                	ret
    e880ae5a:	0001                	nop
    e880ae5c:	850a                	mv	a0,sp
    e880ae5e:	322010ef          	jal	ra,e880c180 <__ieee754_rem_pio2>
    e880ae62:	890d                	andi	a0,a0,3
    e880ae64:	4785                	li	a5,1
    e880ae66:	02f50563          	beq	a0,a5,e880ae90 <cos+0x60>
    e880ae6a:	4789                	li	a5,2
    e880ae6c:	25a2                	fld	fa1,8(sp)
    e880ae6e:	2502                	fld	fa0,0(sp)
    e880ae70:	02f50c63          	beq	a0,a5,e880aea8 <cos+0x78>
    e880ae74:	c515                	beqz	a0,e880aea0 <cos+0x70>
    e880ae76:	4505                	li	a0,1
    e880ae78:	058020ef          	jal	ra,e880ced0 <__kernel_sin>
    e880ae7c:	bfe1                	j	e880ae54 <cos+0x24>
    e880ae7e:	0001                	nop
    e880ae80:	f20005d3          	fmv.d.x	fa1,zero
    e880ae84:	7dc010ef          	jal	ra,e880c660 <__kernel_cos>
    e880ae88:	60e2                	ld	ra,24(sp)
    e880ae8a:	6105                	addi	sp,sp,32
    e880ae8c:	8082                	ret
    e880ae8e:	0001                	nop
    e880ae90:	25a2                	fld	fa1,8(sp)
    e880ae92:	2502                	fld	fa0,0(sp)
    e880ae94:	4505                	li	a0,1
    e880ae96:	03a020ef          	jal	ra,e880ced0 <__kernel_sin>
    e880ae9a:	22a51553          	fneg.d	fa0,fa0
    e880ae9e:	bf5d                	j	e880ae54 <cos+0x24>
    e880aea0:	7c0010ef          	jal	ra,e880c660 <__kernel_cos>
    e880aea4:	bf45                	j	e880ae54 <cos+0x24>
    e880aea6:	0001                	nop
    e880aea8:	7b8010ef          	jal	ra,e880c660 <__kernel_cos>
    e880aeac:	22a51553          	fneg.d	fa0,fa0
    e880aeb0:	b755                	j	e880ae54 <cos+0x24>
	...

00000000e880aec0 <sin>:
    e880aec0:	e20507d3          	fmv.x.d	a5,fa0
    e880aec4:	1101                	addi	sp,sp,-32
    e880aec6:	3fe92737          	lui	a4,0x3fe92
    e880aeca:	ec06                	sd	ra,24(sp)
    e880aecc:	1fb70713          	addi	a4,a4,507 # 3fe921fb <memcmp-0xa896de05>
    e880aed0:	fa07b68b          	extu	a3,a5,62,32
    e880aed4:	02d75e63          	bge	a4,a3,e880af10 <sin+0x50>
    e880aed8:	7ff00737          	lui	a4,0x7ff00
    e880aedc:	00e6c863          	blt	a3,a4,e880aeec <sin+0x2c>
    e880aee0:	0aa57553          	fsub.d	fa0,fa0,fa0
    e880aee4:	60e2                	ld	ra,24(sp)
    e880aee6:	6105                	addi	sp,sp,32
    e880aee8:	8082                	ret
    e880aeea:	0001                	nop
    e880aeec:	850a                	mv	a0,sp
    e880aeee:	292010ef          	jal	ra,e880c180 <__ieee754_rem_pio2>
    e880aef2:	890d                	andi	a0,a0,3
    e880aef4:	4785                	li	a5,1
    e880aef6:	02f50563          	beq	a0,a5,e880af20 <sin+0x60>
    e880aefa:	4789                	li	a5,2
    e880aefc:	25a2                	fld	fa1,8(sp)
    e880aefe:	2502                	fld	fa0,0(sp)
    e880af00:	02f50a63          	beq	a0,a5,e880af34 <sin+0x74>
    e880af04:	c505                	beqz	a0,e880af2c <sin+0x6c>
    e880af06:	75a010ef          	jal	ra,e880c660 <__kernel_cos>
    e880af0a:	22a51553          	fneg.d	fa0,fa0
    e880af0e:	bfd9                	j	e880aee4 <sin+0x24>
    e880af10:	f20005d3          	fmv.d.x	fa1,zero
    e880af14:	4501                	li	a0,0
    e880af16:	7bb010ef          	jal	ra,e880ced0 <__kernel_sin>
    e880af1a:	60e2                	ld	ra,24(sp)
    e880af1c:	6105                	addi	sp,sp,32
    e880af1e:	8082                	ret
    e880af20:	25a2                	fld	fa1,8(sp)
    e880af22:	2502                	fld	fa0,0(sp)
    e880af24:	73c010ef          	jal	ra,e880c660 <__kernel_cos>
    e880af28:	bf75                	j	e880aee4 <sin+0x24>
    e880af2a:	0001                	nop
    e880af2c:	4505                	li	a0,1
    e880af2e:	7a3010ef          	jal	ra,e880ced0 <__kernel_sin>
    e880af32:	bf4d                	j	e880aee4 <sin+0x24>
    e880af34:	4505                	li	a0,1
    e880af36:	79b010ef          	jal	ra,e880ced0 <__kernel_sin>
    e880af3a:	22a51553          	fneg.d	fa0,fa0
    e880af3e:	b75d                	j	e880aee4 <sin+0x24>
	...

00000000e880af50 <tanh>:
    e880af50:	e20507d3          	fmv.x.d	a5,fa0
    e880af54:	1141                	addi	sp,sp,-16
    e880af56:	e022                	sd	s0,0(sp)
    e880af58:	e406                	sd	ra,8(sp)
    e880af5a:	7ff006b7          	lui	a3,0x7ff00
    e880af5e:	fa07b70b          	extu	a4,a5,62,32
    e880af62:	4207d413          	srai	s0,a5,0x20
    e880af66:	02d74763          	blt	a4,a3,e880af94 <tanh+0x44>
    e880af6a:	000b4717          	auipc	a4,0xb4
    e880af6e:	f0e73787          	fld	fa5,-242(a4) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880af72:	1aa7f553          	fdiv.d	fa0,fa5,fa0
    e880af76:	00044963          	bltz	s0,e880af88 <tanh+0x38>
    e880af7a:	02f57553          	fadd.d	fa0,fa0,fa5
    e880af7e:	60a2                	ld	ra,8(sp)
    e880af80:	6402                	ld	s0,0(sp)
    e880af82:	0141                	addi	sp,sp,16
    e880af84:	8082                	ret
    e880af86:	0001                	nop
    e880af88:	60a2                	ld	ra,8(sp)
    e880af8a:	6402                	ld	s0,0(sp)
    e880af8c:	0af57553          	fsub.d	fa0,fa0,fa5
    e880af90:	0141                	addi	sp,sp,16
    e880af92:	8082                	ret
    e880af94:	403606b7          	lui	a3,0x40360
    e880af98:	04d75663          	bge	a4,a3,e880afe4 <tanh+0x94>
    e880af9c:	3c8006b7          	lui	a3,0x3c800
    e880afa0:	04d74a63          	blt	a4,a3,e880aff4 <tanh+0xa4>
    e880afa4:	3ff007b7          	lui	a5,0x3ff00
    e880afa8:	06f74263          	blt	a4,a5,e880b00c <tanh+0xbc>
    e880afac:	344020ef          	jal	ra,e880d2f0 <fabs>
    e880afb0:	02a57553          	fadd.d	fa0,fa0,fa0
    e880afb4:	7cd010ef          	jal	ra,e880cf80 <expm1>
    e880afb8:	000c9797          	auipc	a5,0xc9
    e880afbc:	e907b707          	fld	fa4,-368(a5) # e88d3e48 <dhcp_discover_request_options+0x640>
    e880afc0:	02e57553          	fadd.d	fa0,fa0,fa4
    e880afc4:	000b4797          	auipc	a5,0xb4
    e880afc8:	eb47b787          	fld	fa5,-332(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880afcc:	1aa77553          	fdiv.d	fa0,fa4,fa0
    e880afd0:	0aa7f553          	fsub.d	fa0,fa5,fa0
    e880afd4:	fa0455e3          	bgez	s0,e880af7e <tanh+0x2e>
    e880afd8:	60a2                	ld	ra,8(sp)
    e880afda:	6402                	ld	s0,0(sp)
    e880afdc:	22a51553          	fneg.d	fa0,fa0
    e880afe0:	0141                	addi	sp,sp,16
    e880afe2:	8082                	ret
    e880afe4:	000b4797          	auipc	a5,0xb4
    e880afe8:	e947b507          	fld	fa0,-364(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880afec:	f80459e3          	bgez	s0,e880af7e <tanh+0x2e>
    e880aff0:	b7e5                	j	e880afd8 <tanh+0x88>
    e880aff2:	0001                	nop
    e880aff4:	f20787d3          	fmv.d.x	fa5,a5
    e880aff8:	000b4717          	auipc	a4,0xb4
    e880affc:	e8073507          	fld	fa0,-384(a4) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880b000:	02a7f553          	fadd.d	fa0,fa5,fa0
    e880b004:	12f57553          	fmul.d	fa0,fa0,fa5
    e880b008:	bf9d                	j	e880af7e <tanh+0x2e>
    e880b00a:	0001                	nop
    e880b00c:	2e4020ef          	jal	ra,e880d2f0 <fabs>
    e880b010:	000c9797          	auipc	a5,0xc9
    e880b014:	e407b787          	fld	fa5,-448(a5) # e88d3e50 <dhcp_discover_request_options+0x648>
    e880b018:	12f57553          	fmul.d	fa0,fa0,fa5
    e880b01c:	765010ef          	jal	ra,e880cf80 <expm1>
    e880b020:	000c9797          	auipc	a5,0xc9
    e880b024:	e287b787          	fld	fa5,-472(a5) # e88d3e48 <dhcp_discover_request_options+0x640>
    e880b028:	02f577d3          	fadd.d	fa5,fa0,fa5
    e880b02c:	22a51553          	fneg.d	fa0,fa0
    e880b030:	1af57553          	fdiv.d	fa0,fa0,fa5
    e880b034:	f40455e3          	bgez	s0,e880af7e <tanh+0x2e>
    e880b038:	b745                	j	e880afd8 <tanh+0x88>
    e880b03a:	0000                	unimp
    e880b03c:	0000                	unimp
	...

00000000e880b040 <exp>:
    e880b040:	715d                	addi	sp,sp,-80
    e880b042:	e0a2                	sd	s0,64(sp)
    e880b044:	bc22                	fsd	fs0,56(sp)
    e880b046:	b826                	fsd	fs1,48(sp)
    e880b048:	e486                	sd	ra,72(sp)
    e880b04a:	22a50453          	fmv.d	fs0,fa0
    e880b04e:	4c2000ef          	jal	ra,e880b510 <__ieee754_exp>
    e880b052:	000ca417          	auipc	s0,0xca
    e880b056:	9ae40413          	addi	s0,s0,-1618 # e88d4a00 <__fdlib_version>
    e880b05a:	4018                	lw	a4,0(s0)
    e880b05c:	57fd                	li	a5,-1
    e880b05e:	22a504d3          	fmv.d	fs1,fa0
    e880b062:	02f70563          	beq	a4,a5,e880b08c <exp+0x4c>
    e880b066:	22840553          	fmv.d	fa0,fs0
    e880b06a:	2b6020ef          	jal	ra,e880d320 <finite>
    e880b06e:	cd19                	beqz	a0,e880b08c <exp+0x4c>
    e880b070:	000c9797          	auipc	a5,0xc9
    e880b074:	de87b787          	fld	fa5,-536(a5) # e88d3e58 <dhcp_discover_request_options+0x650>
    e880b078:	a28797d3          	flt.d	a5,fa5,fs0
    e880b07c:	e3d1                	bnez	a5,e880b100 <exp+0xc0>
    e880b07e:	000c9797          	auipc	a5,0xc9
    e880b082:	df27b787          	fld	fa5,-526(a5) # e88d3e70 <dhcp_discover_request_options+0x668>
    e880b086:	a2f417d3          	flt.d	a5,fs0,fa5
    e880b08a:	eb89                	bnez	a5,e880b09c <exp+0x5c>
    e880b08c:	60a6                	ld	ra,72(sp)
    e880b08e:	6406                	ld	s0,64(sp)
    e880b090:	22948553          	fmv.d	fa0,fs1
    e880b094:	3462                	fld	fs0,56(sp)
    e880b096:	34c2                	fld	fs1,48(sp)
    e880b098:	6161                	addi	sp,sp,80
    e880b09a:	8082                	ret
    e880b09c:	4791                	li	a5,4
    e880b09e:	c03e                	sw	a5,0(sp)
    e880b0a0:	4018                	lw	a4,0(s0)
    e880b0a2:	000c9797          	auipc	a5,0xc9
    e880b0a6:	dd678793          	addi	a5,a5,-554 # e88d3e78 <dhcp_discover_request_options+0x670>
    e880b0aa:	e43e                	sd	a5,8(sp)
    e880b0ac:	d402                	sw	zero,40(sp)
    e880b0ae:	ac22                	fsd	fs0,24(sp)
    e880b0b0:	a822                	fsd	fs0,16(sp)
    e880b0b2:	f002                	sd	zero,32(sp)
    e880b0b4:	4789                	li	a5,2
    e880b0b6:	02f70f63          	beq	a4,a5,e880b0f4 <exp+0xb4>
    e880b0ba:	850a                	mv	a0,sp
    e880b0bc:	3d4020ef          	jal	ra,e880d490 <matherr>
    e880b0c0:	c915                	beqz	a0,e880b0f4 <exp+0xb4>
    e880b0c2:	57a2                	lw	a5,40(sp)
    e880b0c4:	eb91                	bnez	a5,e880b0d8 <exp+0x98>
    e880b0c6:	3482                	fld	fs1,32(sp)
    e880b0c8:	60a6                	ld	ra,72(sp)
    e880b0ca:	6406                	ld	s0,64(sp)
    e880b0cc:	22948553          	fmv.d	fa0,fs1
    e880b0d0:	3462                	fld	fs0,56(sp)
    e880b0d2:	34c2                	fld	fs1,48(sp)
    e880b0d4:	6161                	addi	sp,sp,80
    e880b0d6:	8082                	ret
    e880b0d8:	6e8020ef          	jal	ra,e880d7c0 <__errno>
    e880b0dc:	3482                	fld	fs1,32(sp)
    e880b0de:	57a2                	lw	a5,40(sp)
    e880b0e0:	c11c                	sw	a5,0(a0)
    e880b0e2:	b7dd                	j	e880b0c8 <exp+0x88>
    e880b0e4:	000c9717          	auipc	a4,0xc9
    e880b0e8:	d8473787          	fld	fa5,-636(a4) # e88d3e68 <dhcp_discover_request_options+0x660>
    e880b0ec:	b03e                	fsd	fa5,32(sp)
    e880b0ee:	4709                	li	a4,2
    e880b0f0:	fce795e3          	bne	a5,a4,e880b0ba <exp+0x7a>
    e880b0f4:	6cc020ef          	jal	ra,e880d7c0 <__errno>
    e880b0f8:	02200793          	li	a5,34
    e880b0fc:	c11c                	sw	a5,0(a0)
    e880b0fe:	b7d1                	j	e880b0c2 <exp+0x82>
    e880b100:	470d                	li	a4,3
    e880b102:	c03a                	sw	a4,0(sp)
    e880b104:	401c                	lw	a5,0(s0)
    e880b106:	000c9717          	auipc	a4,0xc9
    e880b10a:	d7270713          	addi	a4,a4,-654 # e88d3e78 <dhcp_discover_request_options+0x670>
    e880b10e:	e43a                	sd	a4,8(sp)
    e880b110:	d402                	sw	zero,40(sp)
    e880b112:	ac22                	fsd	fs0,24(sp)
    e880b114:	a822                	fsd	fs0,16(sp)
    e880b116:	f7f9                	bnez	a5,e880b0e4 <exp+0xa4>
    e880b118:	000c9797          	auipc	a5,0xc9
    e880b11c:	d487b787          	fld	fa5,-696(a5) # e88d3e60 <dhcp_discover_request_options+0x658>
    e880b120:	b03e                	fsd	fa5,32(sp)
    e880b122:	bf61                	j	e880b0ba <exp+0x7a>
	...

00000000e880b130 <log>:
    e880b130:	715d                	addi	sp,sp,-80
    e880b132:	bc22                	fsd	fs0,56(sp)
    e880b134:	e486                	sd	ra,72(sp)
    e880b136:	22a50453          	fmv.d	fs0,fa0
    e880b13a:	676000ef          	jal	ra,e880b7b0 <__ieee754_log>
    e880b13e:	000ca797          	auipc	a5,0xca
    e880b142:	8c278793          	addi	a5,a5,-1854 # e88d4a00 <__fdlib_version>
    e880b146:	4398                	lw	a4,0(a5)
    e880b148:	57fd                	li	a5,-1
    e880b14a:	04f70863          	beq	a4,a5,e880b19a <log+0x6a>
    e880b14e:	a28427d3          	feq.d	a5,fs0,fs0
    e880b152:	c7a1                	beqz	a5,e880b19a <log+0x6a>
    e880b154:	f20007d3          	fmv.d.x	fa5,zero
    e880b158:	a28797d3          	flt.d	a5,fa5,fs0
    e880b15c:	ef9d                	bnez	a5,e880b19a <log+0x6a>
    e880b15e:	000c9797          	auipc	a5,0xc9
    e880b162:	d3278793          	addi	a5,a5,-718 # e88d3e90 <dhcp_discover_request_options+0x688>
    e880b166:	e43e                	sd	a5,8(sp)
    e880b168:	d402                	sw	zero,40(sp)
    e880b16a:	a822                	fsd	fs0,16(sp)
    e880b16c:	ac22                	fsd	fs0,24(sp)
    e880b16e:	cb1d                	beqz	a4,e880b1a4 <log+0x74>
    e880b170:	000c9797          	auipc	a5,0xc9
    e880b174:	d107b707          	fld	fa4,-752(a5) # e88d3e80 <dhcp_discover_request_options+0x678>
    e880b178:	b03a                	fsd	fa4,32(sp)
    e880b17a:	a2f427d3          	feq.d	a5,fs0,fa5
    e880b17e:	cbad                	beqz	a5,e880b1f0 <log+0xc0>
    e880b180:	4789                	li	a5,2
    e880b182:	c03e                	sw	a5,0(sp)
    e880b184:	4789                	li	a5,2
    e880b186:	04f71f63          	bne	a4,a5,e880b1e4 <log+0xb4>
    e880b18a:	636020ef          	jal	ra,e880d7c0 <__errno>
    e880b18e:	02200793          	li	a5,34
    e880b192:	c11c                	sw	a5,0(a0)
    e880b194:	57a2                	lw	a5,40(sp)
    e880b196:	ef95                	bnez	a5,e880b1d2 <log+0xa2>
    e880b198:	3502                	fld	fa0,32(sp)
    e880b19a:	60a6                	ld	ra,72(sp)
    e880b19c:	3462                	fld	fs0,56(sp)
    e880b19e:	6161                	addi	sp,sp,80
    e880b1a0:	8082                	ret
    e880b1a2:	0001                	nop
    e880b1a4:	000c9797          	auipc	a5,0xc9
    e880b1a8:	ce47b707          	fld	fa4,-796(a5) # e88d3e88 <dhcp_discover_request_options+0x680>
    e880b1ac:	b03a                	fsd	fa4,32(sp)
    e880b1ae:	a2f427d3          	feq.d	a5,fs0,fa5
    e880b1b2:	e79d                	bnez	a5,e880b1e0 <log+0xb0>
    e880b1b4:	4785                	li	a5,1
    e880b1b6:	c03e                	sw	a5,0(sp)
    e880b1b8:	850a                	mv	a0,sp
    e880b1ba:	2d6020ef          	jal	ra,e880d490 <matherr>
    e880b1be:	cd15                	beqz	a0,e880b1fa <log+0xca>
    e880b1c0:	000b6517          	auipc	a0,0xb6
    e880b1c4:	0b050513          	addi	a0,a0,176 # e88c1270 <kHTTPServerClass+0x90>
    e880b1c8:	2e8020ef          	jal	ra,e880d4b0 <nan>
    e880b1cc:	b02a                	fsd	fa0,32(sp)
    e880b1ce:	57a2                	lw	a5,40(sp)
    e880b1d0:	d7e1                	beqz	a5,e880b198 <log+0x68>
    e880b1d2:	5ee020ef          	jal	ra,e880d7c0 <__errno>
    e880b1d6:	57a2                	lw	a5,40(sp)
    e880b1d8:	3502                	fld	fa0,32(sp)
    e880b1da:	c11c                	sw	a5,0(a0)
    e880b1dc:	bf7d                	j	e880b19a <log+0x6a>
    e880b1de:	0001                	nop
    e880b1e0:	4789                	li	a5,2
    e880b1e2:	c03e                	sw	a5,0(sp)
    e880b1e4:	850a                	mv	a0,sp
    e880b1e6:	2aa020ef          	jal	ra,e880d490 <matherr>
    e880b1ea:	f175                	bnez	a0,e880b1ce <log+0x9e>
    e880b1ec:	bf79                	j	e880b18a <log+0x5a>
    e880b1ee:	0001                	nop
    e880b1f0:	4785                	li	a5,1
    e880b1f2:	c03e                	sw	a5,0(sp)
    e880b1f4:	4789                	li	a5,2
    e880b1f6:	fcf711e3          	bne	a4,a5,e880b1b8 <log+0x88>
    e880b1fa:	5c6020ef          	jal	ra,e880d7c0 <__errno>
    e880b1fe:	02100793          	li	a5,33
    e880b202:	c11c                	sw	a5,0(a0)
    e880b204:	bf75                	j	e880b1c0 <log+0x90>
	...

00000000e880b210 <pow>:
    e880b210:	711d                	addi	sp,sp,-96
    e880b212:	e8a2                	sd	s0,80(sp)
    e880b214:	a4a2                	fsd	fs0,72(sp)
    e880b216:	a0a6                	fsd	fs1,64(sp)
    e880b218:	bc4a                	fsd	fs2,56(sp)
    e880b21a:	ec86                	sd	ra,88(sp)
    e880b21c:	b84e                	fsd	fs3,48(sp)
    e880b21e:	22a504d3          	fmv.d	fs1,fa0
    e880b222:	22b58453          	fmv.d	fs0,fa1
    e880b226:	7da000ef          	jal	ra,e880ba00 <__ieee754_pow>
    e880b22a:	000c9417          	auipc	s0,0xc9
    e880b22e:	7d640413          	addi	s0,s0,2006 # e88d4a00 <__fdlib_version>
    e880b232:	4018                	lw	a4,0(s0)
    e880b234:	57fd                	li	a5,-1
    e880b236:	22a50953          	fmv.d	fs2,fa0
    e880b23a:	04f70063          	beq	a4,a5,e880b27a <pow+0x6a>
    e880b23e:	a28427d3          	feq.d	a5,fs0,fs0
    e880b242:	cf85                	beqz	a5,e880b27a <pow+0x6a>
    e880b244:	a294a7d3          	feq.d	a5,fs1,fs1
    e880b248:	cbe1                	beqz	a5,e880b318 <pow+0x108>
    e880b24a:	f20009d3          	fmv.d.x	fs3,zero
    e880b24e:	a334a7d3          	feq.d	a5,fs1,fs3
    e880b252:	cf9d                	beqz	a5,e880b290 <pow+0x80>
    e880b254:	a33427d3          	feq.d	a5,fs0,fs3
    e880b258:	cfb5                	beqz	a5,e880b2d4 <pow+0xc4>
    e880b25a:	4785                	li	a5,1
    e880b25c:	c03e                	sw	a5,0(sp)
    e880b25e:	000c9797          	auipc	a5,0xc9
    e880b262:	c3a78793          	addi	a5,a5,-966 # e88d3e98 <dhcp_discover_request_options+0x690>
    e880b266:	e43e                	sd	a5,8(sp)
    e880b268:	d402                	sw	zero,40(sp)
    e880b26a:	a826                	fsd	fs1,16(sp)
    e880b26c:	ac22                	fsd	fs0,24(sp)
    e880b26e:	b04e                	fsd	fs3,32(sp)
    e880b270:	cf61                	beqz	a4,e880b348 <pow+0x138>
    e880b272:	000b4797          	auipc	a5,0xb4
    e880b276:	c067b907          	fld	fs2,-1018(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880b27a:	60e6                	ld	ra,88(sp)
    e880b27c:	6446                	ld	s0,80(sp)
    e880b27e:	23290553          	fmv.d	fa0,fs2
    e880b282:	2426                	fld	fs0,72(sp)
    e880b284:	2486                	fld	fs1,64(sp)
    e880b286:	3962                	fld	fs2,56(sp)
    e880b288:	39c2                	fld	fs3,48(sp)
    e880b28a:	6125                	addi	sp,sp,96
    e880b28c:	8082                	ret
    e880b28e:	0001                	nop
    e880b290:	090020ef          	jal	ra,e880d320 <finite>
    e880b294:	c571                	beqz	a0,e880b360 <pow+0x150>
    e880b296:	f20007d3          	fmv.d.x	fa5,zero
    e880b29a:	a2f927d3          	feq.d	a5,fs2,fa5
    e880b29e:	dff1                	beqz	a5,e880b27a <pow+0x6a>
    e880b2a0:	22948553          	fmv.d	fa0,fs1
    e880b2a4:	07c020ef          	jal	ra,e880d320 <finite>
    e880b2a8:	d969                	beqz	a0,e880b27a <pow+0x6a>
    e880b2aa:	22840553          	fmv.d	fa0,fs0
    e880b2ae:	072020ef          	jal	ra,e880d320 <finite>
    e880b2b2:	d561                	beqz	a0,e880b27a <pow+0x6a>
    e880b2b4:	4791                	li	a5,4
    e880b2b6:	c03e                	sw	a5,0(sp)
    e880b2b8:	4018                	lw	a4,0(s0)
    e880b2ba:	000c9797          	auipc	a5,0xc9
    e880b2be:	bde78793          	addi	a5,a5,-1058 # e88d3e98 <dhcp_discover_request_options+0x690>
    e880b2c2:	e43e                	sd	a5,8(sp)
    e880b2c4:	d402                	sw	zero,40(sp)
    e880b2c6:	a826                	fsd	fs1,16(sp)
    e880b2c8:	ac22                	fsd	fs0,24(sp)
    e880b2ca:	f002                	sd	zero,32(sp)
    e880b2cc:	4789                	li	a5,2
    e880b2ce:	0ef71163          	bne	a4,a5,e880b3b0 <pow+0x1a0>
    e880b2d2:	a0dd                	j	e880b3b8 <pow+0x1a8>
    e880b2d4:	22840553          	fmv.d	fa0,fs0
    e880b2d8:	048020ef          	jal	ra,e880d320 <finite>
    e880b2dc:	dd59                	beqz	a0,e880b27a <pow+0x6a>
    e880b2de:	a33417d3          	flt.d	a5,fs0,fs3
    e880b2e2:	dfc1                	beqz	a5,e880b27a <pow+0x6a>
    e880b2e4:	4705                	li	a4,1
    e880b2e6:	c03a                	sw	a4,0(sp)
    e880b2e8:	401c                	lw	a5,0(s0)
    e880b2ea:	000c9717          	auipc	a4,0xc9
    e880b2ee:	bae70713          	addi	a4,a4,-1106 # e88d3e98 <dhcp_discover_request_options+0x690>
    e880b2f2:	e43a                	sd	a4,8(sp)
    e880b2f4:	d402                	sw	zero,40(sp)
    e880b2f6:	a826                	fsd	fs1,16(sp)
    e880b2f8:	ac22                	fsd	fs0,24(sp)
    e880b2fa:	e7e9                	bnez	a5,e880b3c4 <pow+0x1b4>
    e880b2fc:	f002                	sd	zero,32(sp)
    e880b2fe:	850a                	mv	a0,sp
    e880b300:	190020ef          	jal	ra,e880d490 <matherr>
    e880b304:	c961                	beqz	a0,e880b3d4 <pow+0x1c4>
    e880b306:	57a2                	lw	a5,40(sp)
    e880b308:	c789                	beqz	a5,e880b312 <pow+0x102>
    e880b30a:	4b6020ef          	jal	ra,e880d7c0 <__errno>
    e880b30e:	57a2                	lw	a5,40(sp)
    e880b310:	c11c                	sw	a5,0(a0)
    e880b312:	3902                	fld	fs2,32(sp)
    e880b314:	b79d                	j	e880b27a <pow+0x6a>
    e880b316:	0001                	nop
    e880b318:	f20007d3          	fmv.d.x	fa5,zero
    e880b31c:	a2f427d3          	feq.d	a5,fs0,fa5
    e880b320:	dfa9                	beqz	a5,e880b27a <pow+0x6a>
    e880b322:	000b4797          	auipc	a5,0xb4
    e880b326:	b567b907          	fld	fs2,-1194(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880b32a:	d402                	sw	zero,40(sp)
    e880b32c:	4785                	li	a5,1
    e880b32e:	c03e                	sw	a5,0(sp)
    e880b330:	000c9797          	auipc	a5,0xc9
    e880b334:	b6878793          	addi	a5,a5,-1176 # e88d3e98 <dhcp_discover_request_options+0x690>
    e880b338:	e43e                	sd	a5,8(sp)
    e880b33a:	a826                	fsd	fs1,16(sp)
    e880b33c:	ac22                	fsd	fs0,24(sp)
    e880b33e:	b04a                	fsd	fs2,32(sp)
    e880b340:	4789                	li	a5,2
    e880b342:	f2f70ce3          	beq	a4,a5,e880b27a <pow+0x6a>
    e880b346:	0001                	nop
    e880b348:	850a                	mv	a0,sp
    e880b34a:	146020ef          	jal	ra,e880d490 <matherr>
    e880b34e:	c949                	beqz	a0,e880b3e0 <pow+0x1d0>
    e880b350:	57a2                	lw	a5,40(sp)
    e880b352:	d3e1                	beqz	a5,e880b312 <pow+0x102>
    e880b354:	46c020ef          	jal	ra,e880d7c0 <__errno>
    e880b358:	3902                	fld	fs2,32(sp)
    e880b35a:	57a2                	lw	a5,40(sp)
    e880b35c:	c11c                	sw	a5,0(a0)
    e880b35e:	bf31                	j	e880b27a <pow+0x6a>
    e880b360:	22948553          	fmv.d	fa0,fs1
    e880b364:	7bd010ef          	jal	ra,e880d320 <finite>
    e880b368:	d51d                	beqz	a0,e880b296 <pow+0x86>
    e880b36a:	22840553          	fmv.d	fa0,fs0
    e880b36e:	7b3010ef          	jal	ra,e880d320 <finite>
    e880b372:	f20502e3          	beqz	a0,e880b296 <pow+0x86>
    e880b376:	a3292753          	feq.d	a4,fs2,fs2
    e880b37a:	4014                	lw	a3,0(s0)
    e880b37c:	c361                	beqz	a4,e880b43c <pow+0x22c>
    e880b37e:	478d                	li	a5,3
    e880b380:	c03e                	sw	a5,0(sp)
    e880b382:	000c9797          	auipc	a5,0xc9
    e880b386:	b1678793          	addi	a5,a5,-1258 # e88d3e98 <dhcp_discover_request_options+0x690>
    e880b38a:	e43e                	sd	a5,8(sp)
    e880b38c:	ac22                	fsd	fs0,24(sp)
    e880b38e:	d402                	sw	zero,40(sp)
    e880b390:	a826                	fsd	fs1,16(sp)
    e880b392:	000c0797          	auipc	a5,0xc0
    e880b396:	cce7b787          	fld	fa5,-818(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880b39a:	12f47453          	fmul.d	fs0,fs0,fa5
    e880b39e:	e6b9                	bnez	a3,e880b3ec <pow+0x1dc>
    e880b3a0:	000c9797          	auipc	a5,0xc9
    e880b3a4:	ac07b787          	fld	fa5,-1344(a5) # e88d3e60 <dhcp_discover_request_options+0x658>
    e880b3a8:	b03e                	fsd	fa5,32(sp)
    e880b3aa:	a33497d3          	flt.d	a5,fs1,fs3
    e880b3ae:	ebb9                	bnez	a5,e880b404 <pow+0x1f4>
    e880b3b0:	850a                	mv	a0,sp
    e880b3b2:	0de020ef          	jal	ra,e880d490 <matherr>
    e880b3b6:	f921                	bnez	a0,e880b306 <pow+0xf6>
    e880b3b8:	408020ef          	jal	ra,e880d7c0 <__errno>
    e880b3bc:	02200793          	li	a5,34
    e880b3c0:	c11c                	sw	a5,0(a0)
    e880b3c2:	b791                	j	e880b306 <pow+0xf6>
    e880b3c4:	000c9717          	auipc	a4,0xc9
    e880b3c8:	abc73787          	fld	fa5,-1348(a4) # e88d3e80 <dhcp_discover_request_options+0x678>
    e880b3cc:	b03e                	fsd	fa5,32(sp)
    e880b3ce:	4709                	li	a4,2
    e880b3d0:	f2e797e3          	bne	a5,a4,e880b2fe <pow+0xee>
    e880b3d4:	3ec020ef          	jal	ra,e880d7c0 <__errno>
    e880b3d8:	02100793          	li	a5,33
    e880b3dc:	c11c                	sw	a5,0(a0)
    e880b3de:	b725                	j	e880b306 <pow+0xf6>
    e880b3e0:	3e0020ef          	jal	ra,e880d7c0 <__errno>
    e880b3e4:	02100793          	li	a5,33
    e880b3e8:	c11c                	sw	a5,0(a0)
    e880b3ea:	b79d                	j	e880b350 <pow+0x140>
    e880b3ec:	000c9797          	auipc	a5,0xc9
    e880b3f0:	a7c7b787          	fld	fa5,-1412(a5) # e88d3e68 <dhcp_discover_request_options+0x660>
    e880b3f4:	b03e                	fsd	fa5,32(sp)
    e880b3f6:	a33497d3          	flt.d	a5,fs1,fs3
    e880b3fa:	e39d                	bnez	a5,e880b420 <pow+0x210>
    e880b3fc:	4789                	li	a5,2
    e880b3fe:	faf68de3          	beq	a3,a5,e880b3b8 <pow+0x1a8>
    e880b402:	b77d                	j	e880b3b0 <pow+0x1a0>
    e880b404:	22840553          	fmv.d	fa0,fs0
    e880b408:	0c8020ef          	jal	ra,e880d4d0 <rint>
    e880b40c:	a28527d3          	feq.d	a5,fa0,fs0
    e880b410:	e791                	bnez	a5,e880b41c <pow+0x20c>
    e880b412:	000c9797          	auipc	a5,0xc9
    e880b416:	a767b787          	fld	fa5,-1418(a5) # e88d3e88 <dhcp_discover_request_options+0x680>
    e880b41a:	b03e                	fsd	fa5,32(sp)
    e880b41c:	4014                	lw	a3,0(s0)
    e880b41e:	bff9                	j	e880b3fc <pow+0x1ec>
    e880b420:	22840553          	fmv.d	fa0,fs0
    e880b424:	0ac020ef          	jal	ra,e880d4d0 <rint>
    e880b428:	a28527d3          	feq.d	a5,fa0,fs0
    e880b42c:	4014                	lw	a3,0(s0)
    e880b42e:	f7f9                	bnez	a5,e880b3fc <pow+0x1ec>
    e880b430:	000c9797          	auipc	a5,0xc9
    e880b434:	a507b787          	fld	fa5,-1456(a5) # e88d3e80 <dhcp_discover_request_options+0x678>
    e880b438:	b03e                	fsd	fa5,32(sp)
    e880b43a:	b7c9                	j	e880b3fc <pow+0x1ec>
    e880b43c:	4785                	li	a5,1
    e880b43e:	c03e                	sw	a5,0(sp)
    e880b440:	000c9797          	auipc	a5,0xc9
    e880b444:	a5878793          	addi	a5,a5,-1448 # e88d3e98 <dhcp_discover_request_options+0x690>
    e880b448:	e43e                	sd	a5,8(sp)
    e880b44a:	d402                	sw	zero,40(sp)
    e880b44c:	a826                	fsd	fs1,16(sp)
    e880b44e:	ac22                	fsd	fs0,24(sp)
    e880b450:	ea0686e3          	beqz	a3,e880b2fc <pow+0xec>
    e880b454:	1b39f9d3          	fdiv.d	fs3,fs3,fs3
    e880b458:	4709                	li	a4,2
    e880b45a:	b04e                	fsd	fs3,32(sp)
    e880b45c:	f6e68ce3          	beq	a3,a4,e880b3d4 <pow+0x1c4>
    e880b460:	bd79                	j	e880b2fe <pow+0xee>
	...

00000000e880b470 <sqrt>:
    e880b470:	715d                	addi	sp,sp,-80
    e880b472:	bc22                	fsd	fs0,56(sp)
    e880b474:	e486                	sd	ra,72(sp)
    e880b476:	22a50453          	fmv.d	fs0,fa0
    e880b47a:	7d7000ef          	jal	ra,e880c450 <__ieee754_sqrt>
    e880b47e:	000c9797          	auipc	a5,0xc9
    e880b482:	58278793          	addi	a5,a5,1410 # e88d4a00 <__fdlib_version>
    e880b486:	439c                	lw	a5,0(a5)
    e880b488:	577d                	li	a4,-1
    e880b48a:	00e78a63          	beq	a5,a4,e880b49e <sqrt+0x2e>
    e880b48e:	a2842753          	feq.d	a4,fs0,fs0
    e880b492:	c711                	beqz	a4,e880b49e <sqrt+0x2e>
    e880b494:	f20007d3          	fmv.d.x	fa5,zero
    e880b498:	a2f41753          	flt.d	a4,fs0,fa5
    e880b49c:	e711                	bnez	a4,e880b4a8 <sqrt+0x38>
    e880b49e:	60a6                	ld	ra,72(sp)
    e880b4a0:	3462                	fld	fs0,56(sp)
    e880b4a2:	6161                	addi	sp,sp,80
    e880b4a4:	8082                	ret
    e880b4a6:	0001                	nop
    e880b4a8:	4705                	li	a4,1
    e880b4aa:	c03a                	sw	a4,0(sp)
    e880b4ac:	000c9717          	auipc	a4,0xc9
    e880b4b0:	9f470713          	addi	a4,a4,-1548 # e88d3ea0 <dhcp_discover_request_options+0x698>
    e880b4b4:	e43a                	sd	a4,8(sp)
    e880b4b6:	d402                	sw	zero,40(sp)
    e880b4b8:	ac22                	fsd	fs0,24(sp)
    e880b4ba:	a822                	fsd	fs0,16(sp)
    e880b4bc:	c785                	beqz	a5,e880b4e4 <sqrt+0x74>
    e880b4be:	1af7f7d3          	fdiv.d	fa5,fa5,fa5
    e880b4c2:	4709                	li	a4,2
    e880b4c4:	b03e                	fsd	fa5,32(sp)
    e880b4c6:	02e79063          	bne	a5,a4,e880b4e6 <sqrt+0x76>
    e880b4ca:	2f6020ef          	jal	ra,e880d7c0 <__errno>
    e880b4ce:	02100793          	li	a5,33
    e880b4d2:	c11c                	sw	a5,0(a0)
    e880b4d4:	57a2                	lw	a5,40(sp)
    e880b4d6:	ef91                	bnez	a5,e880b4f2 <sqrt+0x82>
    e880b4d8:	3502                	fld	fa0,32(sp)
    e880b4da:	60a6                	ld	ra,72(sp)
    e880b4dc:	3462                	fld	fs0,56(sp)
    e880b4de:	6161                	addi	sp,sp,80
    e880b4e0:	8082                	ret
    e880b4e2:	0001                	nop
    e880b4e4:	f002                	sd	zero,32(sp)
    e880b4e6:	850a                	mv	a0,sp
    e880b4e8:	7a9010ef          	jal	ra,e880d490 <matherr>
    e880b4ec:	dd79                	beqz	a0,e880b4ca <sqrt+0x5a>
    e880b4ee:	57a2                	lw	a5,40(sp)
    e880b4f0:	d7e5                	beqz	a5,e880b4d8 <sqrt+0x68>
    e880b4f2:	2ce020ef          	jal	ra,e880d7c0 <__errno>
    e880b4f6:	57a2                	lw	a5,40(sp)
    e880b4f8:	3502                	fld	fa0,32(sp)
    e880b4fa:	c11c                	sw	a5,0(a0)
    e880b4fc:	bff9                	j	e880b4da <sqrt+0x6a>
	...

00000000e880b510 <__ieee754_exp>:
    e880b510:	e2050653          	fmv.x.d	a2,fa0
    e880b514:	408636b7          	lui	a3,0x40863
    e880b518:	e4168693          	addi	a3,a3,-447 # 40862e41 <memcmp-0xa7f9d1bf>
    e880b51c:	fe06370b          	extu	a4,a2,63,32
    e880b520:	7807378b          	extu	a5,a4,30,0
    e880b524:	01f7551b          	srliw	a0,a4,0x1f
    e880b528:	2781                	sext.w	a5,a5
    e880b52a:	85aa                	mv	a1,a0
    e880b52c:	02f6f463          	bgeu	a3,a5,e880b554 <__ieee754_exp+0x44>
    e880b530:	7ff006b7          	lui	a3,0x7ff00
    e880b534:	0ad7e863          	bltu	a5,a3,e880b5e4 <__ieee754_exp+0xd4>
    e880b538:	4c07370b          	extu	a4,a4,19,0
    e880b53c:	8f51                	or	a4,a4,a2
    e880b53e:	2701                	sext.w	a4,a4
    e880b540:	1e071e63          	bnez	a4,e880b73c <__ieee754_exp+0x22c>
    e880b544:	00000793          	li	a5,0
    e880b548:	1c051263          	bnez	a0,e880b70c <__ieee754_exp+0x1fc>
    e880b54c:	e20507d3          	fmv.x.d	a5,fa0
    e880b550:	aa75                	j	e880b70c <__ieee754_exp+0x1fc>
    e880b552:	0001                	nop
    e880b554:	3fd63737          	lui	a4,0x3fd63
    e880b558:	e4270713          	addi	a4,a4,-446 # 3fd62e42 <memcmp-0xa8a9d1be>
    e880b55c:	0ef76863          	bltu	a4,a5,e880b64c <__ieee754_exp+0x13c>
    e880b560:	3e300737          	lui	a4,0x3e300
    e880b564:	1ae7e863          	bltu	a5,a4,e880b714 <__ieee754_exp+0x204>
    e880b568:	000b4797          	auipc	a5,0xb4
    e880b56c:	9107b707          	fld	fa4,-1776(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880b570:	f20607d3          	fmv.d.x	fa5,a2
    e880b574:	000c9797          	auipc	a5,0xc9
    e880b578:	9547b687          	fld	fa3,-1708(a5) # e88d3ec8 <dhcp_discover_request_options+0x6c0>
    e880b57c:	000c9797          	auipc	a5,0xc9
    e880b580:	9547b007          	fld	ft0,-1708(a5) # e88d3ed0 <dhcp_discover_request_options+0x6c8>
    e880b584:	12f7f7d3          	fmul.d	fa5,fa5,fa5
    e880b588:	000c9797          	auipc	a5,0xc9
    e880b58c:	9507b507          	fld	fa0,-1712(a5) # e88d3ed8 <dhcp_discover_request_options+0x6d0>
    e880b590:	000c9797          	auipc	a5,0xc9
    e880b594:	9507b587          	fld	fa1,-1712(a5) # e88d3ee0 <dhcp_discover_request_options+0x6d8>
    e880b598:	000c9797          	auipc	a5,0xc9
    e880b59c:	9507b607          	fld	fa2,-1712(a5) # e88d3ee8 <dhcp_discover_request_options+0x6e0>
    e880b5a0:	02d7f6c3          	fmadd.d	fa3,fa5,fa3,ft0
    e880b5a4:	52d7f6c3          	fmadd.d	fa3,fa5,fa3,fa0
    e880b5a8:	5ad7f6c3          	fmadd.d	fa3,fa5,fa3,fa1
    e880b5ac:	62d7f6c3          	fmadd.d	fa3,fa5,fa3,fa2
    e880b5b0:	f2060653          	fmv.d.x	fa2,a2
    e880b5b4:	62d7f7cb          	fnmsub.d	fa5,fa5,fa3,fa2
    e880b5b8:	12f67653          	fmul.d	fa2,fa2,fa5
    e880b5bc:	000c9797          	auipc	a5,0xc9
    e880b5c0:	88c7b687          	fld	fa3,-1908(a5) # e88d3e48 <dhcp_discover_request_options+0x640>
    e880b5c4:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e880b5c8:	f20606d3          	fmv.d.x	fa3,a2
    e880b5cc:	1af677d3          	fdiv.d	fa5,fa2,fa5
    e880b5d0:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e880b5d4:	0af777d3          	fsub.d	fa5,fa4,fa5
    e880b5d8:	e20787d3          	fmv.x.d	a5,fa5
    e880b5dc:	f2078553          	fmv.d.x	fa0,a5
    e880b5e0:	8082                	ret
    e880b5e2:	0001                	nop
    e880b5e4:	000c9797          	auipc	a5,0xc9
    e880b5e8:	8747b787          	fld	fa5,-1932(a5) # e88d3e58 <dhcp_discover_request_options+0x650>
    e880b5ec:	a2a797d3          	flt.d	a5,fa5,fa0
    e880b5f0:	14079e63          	bnez	a5,e880b74c <__ieee754_exp+0x23c>
    e880b5f4:	000c9797          	auipc	a5,0xc9
    e880b5f8:	87c7b787          	fld	fa5,-1924(a5) # e88d3e70 <dhcp_discover_request_options+0x668>
    e880b5fc:	a2f51753          	flt.d	a4,fa0,fa5
    e880b600:	00000793          	li	a5,0
    e880b604:	10071463          	bnez	a4,e880b70c <__ieee754_exp+0x1fc>
    e880b608:	00094797          	auipc	a5,0x94
    e880b60c:	3e878793          	addi	a5,a5,1000 # e889f9f0 <ln2HI>
    e880b610:	06a7950b          	addsl	a0,a5,a0,3
    e880b614:	f2060753          	fmv.d.x	fa4,a2
    e880b618:	3114                	fld	fa3,32(a0)
    e880b61a:	000c9797          	auipc	a5,0xc9
    e880b61e:	8967b787          	fld	fa5,-1898(a5) # e88d3eb0 <dhcp_discover_request_options+0x6a8>
    e880b622:	000c9797          	auipc	a5,0xc9
    e880b626:	8967b587          	fld	fa1,-1898(a5) # e88d3eb8 <dhcp_discover_request_options+0x6b0>
    e880b62a:	6af777c3          	fmadd.d	fa5,fa4,fa5,fa3
    e880b62e:	000c9797          	auipc	a5,0xc9
    e880b632:	8927b687          	fld	fa3,-1902(a5) # e88d3ec0 <dhcp_discover_request_options+0x6b8>
    e880b636:	c2079753          	fcvt.w.d	a4,fa5,rtz
    e880b63a:	d20707d3          	fcvt.d.w	fa5,a4
    e880b63e:	2701                	sext.w	a4,a4
    e880b640:	72b7f5cb          	fnmsub.d	fa1,fa5,fa1,fa4
    e880b644:	12d7f753          	fmul.d	fa4,fa5,fa3
    e880b648:	a035                	j	e880b674 <__ieee754_exp+0x164>
    e880b64a:	0001                	nop
    e880b64c:	3ff0a737          	lui	a4,0x3ff0a
    e880b650:	2b170713          	addi	a4,a4,689 # 3ff0a2b1 <memcmp-0xa88f5d4f>
    e880b654:	faf76ae3          	bltu	a4,a5,e880b608 <__ieee754_exp+0xf8>
    e880b658:	00094797          	auipc	a5,0x94
    e880b65c:	39878793          	addi	a5,a5,920 # e889f9f0 <ln2HI>
    e880b660:	66a7e58b          	flrd	fa1,a5,a0,3
    e880b664:	06a7950b          	addsl	a0,a5,a0,3
    e880b668:	4705                	li	a4,1
    e880b66a:	0ab575d3          	fsub.d	fa1,fa0,fa1
    e880b66e:	2918                	fld	fa4,16(a0)
    e880b670:	9f0d                	subw	a4,a4,a1
    e880b672:	9f0d                	subw	a4,a4,a1
    e880b674:	0ae5f7d3          	fsub.d	fa5,fa1,fa4
    e880b678:	000c9797          	auipc	a5,0xc9
    e880b67c:	8587b087          	fld	ft1,-1960(a5) # e88d3ed0 <dhcp_discover_request_options+0x6c8>
    e880b680:	000c9797          	auipc	a5,0xc9
    e880b684:	8587b007          	fld	ft0,-1960(a5) # e88d3ed8 <dhcp_discover_request_options+0x6d0>
    e880b688:	000c9797          	auipc	a5,0xc9
    e880b68c:	8587b507          	fld	fa0,-1960(a5) # e88d3ee0 <dhcp_discover_request_options+0x6d8>
    e880b690:	000c9797          	auipc	a5,0xc9
    e880b694:	8587b607          	fld	fa2,-1960(a5) # e88d3ee8 <dhcp_discover_request_options+0x6e0>
    e880b698:	e2078653          	fmv.x.d	a2,fa5
    e880b69c:	000c9797          	auipc	a5,0xc9
    e880b6a0:	82c7b787          	fld	fa5,-2004(a5) # e88d3ec8 <dhcp_discover_request_options+0x6c0>
    e880b6a4:	f20606d3          	fmv.d.x	fa3,a2
    e880b6a8:	12d6f6d3          	fmul.d	fa3,fa3,fa3
    e880b6ac:	0af6f7c3          	fmadd.d	fa5,fa3,fa5,ft1
    e880b6b0:	02d7f7c3          	fmadd.d	fa5,fa5,fa3,ft0
    e880b6b4:	52d7f7c3          	fmadd.d	fa5,fa5,fa3,fa0
    e880b6b8:	62d7f7c3          	fmadd.d	fa5,fa5,fa3,fa2
    e880b6bc:	f2060653          	fmv.d.x	fa2,a2
    e880b6c0:	62d7f7cb          	fnmsub.d	fa5,fa5,fa3,fa2
    e880b6c4:	12f67653          	fmul.d	fa2,fa2,fa5
    e880b6c8:	c761                	beqz	a4,e880b790 <__ieee754_exp+0x280>
    e880b6ca:	000c8797          	auipc	a5,0xc8
    e880b6ce:	77e7b687          	fld	fa3,1918(a5) # e88d3e48 <dhcp_discover_request_options+0x640>
    e880b6d2:	0af6f7d3          	fsub.d	fa5,fa3,fa5
    e880b6d6:	000b3797          	auipc	a5,0xb3
    e880b6da:	7a27b687          	fld	fa3,1954(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880b6de:	c0300613          	li	a2,-1021
    e880b6e2:	1af67653          	fdiv.d	fa2,fa2,fa5
    e880b6e6:	0ac77753          	fsub.d	fa4,fa4,fa2
    e880b6ea:	0ab77753          	fsub.d	fa4,fa4,fa1
    e880b6ee:	0ae6f7d3          	fsub.d	fa5,fa3,fa4
    e880b6f2:	e20786d3          	fmv.x.d	a3,fa5
    e880b6f6:	fe06b58b          	extu	a1,a3,63,32
    e880b6fa:	06c74363          	blt	a4,a2,e880b760 <__ieee754_exp+0x250>
    e880b6fe:	0147179b          	slliw	a5,a4,0x14
    e880b702:	9fad                	addw	a5,a5,a1
    e880b704:	1782                	slli	a5,a5,0x20
    e880b706:	7c06b68b          	extu	a3,a3,31,0
    e880b70a:	8fd5                	or	a5,a5,a3
    e880b70c:	f2078553          	fmv.d.x	fa0,a5
    e880b710:	8082                	ret
    e880b712:	0001                	nop
    e880b714:	000c8797          	auipc	a5,0xc8
    e880b718:	7947b787          	fld	fa5,1940(a5) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880b71c:	02f577d3          	fadd.d	fa5,fa0,fa5
    e880b720:	000b3797          	auipc	a5,0xb3
    e880b724:	7587b707          	fld	fa4,1880(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880b728:	a2f717d3          	flt.d	a5,fa4,fa5
    e880b72c:	e40782e3          	beqz	a5,e880b570 <__ieee754_exp+0x60>
    e880b730:	02e577d3          	fadd.d	fa5,fa0,fa4
    e880b734:	e20787d3          	fmv.x.d	a5,fa5
    e880b738:	bfd1                	j	e880b70c <__ieee754_exp+0x1fc>
    e880b73a:	0001                	nop
    e880b73c:	02a577d3          	fadd.d	fa5,fa0,fa0
    e880b740:	e20787d3          	fmv.x.d	a5,fa5
    e880b744:	f2078553          	fmv.d.x	fa0,a5
    e880b748:	8082                	ret
    e880b74a:	0001                	nop
    e880b74c:	000c8797          	auipc	a5,0xc8
    e880b750:	75c7b787          	fld	fa5,1884(a5) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880b754:	12f7f7d3          	fmul.d	fa5,fa5,fa5
    e880b758:	e20787d3          	fmv.x.d	a5,fa5
    e880b75c:	bf45                	j	e880b70c <__ieee754_exp+0x1fc>
    e880b75e:	0001                	nop
    e880b760:	3e87071b          	addiw	a4,a4,1000
    e880b764:	0147171b          	slliw	a4,a4,0x14
    e880b768:	00b707bb          	addw	a5,a4,a1
    e880b76c:	02079713          	slli	a4,a5,0x20
    e880b770:	7c06b78b          	extu	a5,a3,31,0
    e880b774:	8fd9                	or	a5,a5,a4
    e880b776:	f2078753          	fmv.d.x	fa4,a5
    e880b77a:	000c8717          	auipc	a4,0xc8
    e880b77e:	77673787          	fld	fa5,1910(a4) # e88d3ef0 <dhcp_discover_request_options+0x6e8>
    e880b782:	12e7f7d3          	fmul.d	fa5,fa5,fa4
    e880b786:	e20787d3          	fmv.x.d	a5,fa5
    e880b78a:	f2078553          	fmv.d.x	fa0,a5
    e880b78e:	8082                	ret
    e880b790:	000b3797          	auipc	a5,0xb3
    e880b794:	6e87b707          	fld	fa4,1768(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880b798:	b515                	j	e880b5bc <__ieee754_exp+0xac>
	...

00000000e880b7b0 <__ieee754_log>:
    e880b7b0:	e20507d3          	fmv.x.d	a5,fa0
    e880b7b4:	00100637          	lui	a2,0x100
    e880b7b8:	fe07b68b          	extu	a3,a5,63,32
    e880b7bc:	0006871b          	sext.w	a4,a3
    e880b7c0:	0ac75e63          	bge	a4,a2,e880b87c <__ieee754_log+0xcc>
    e880b7c4:	7806b68b          	extu	a3,a3,30,0
    e880b7c8:	8edd                	or	a3,a3,a5
    e880b7ca:	2681                	sext.w	a3,a3
    e880b7cc:	16068a63          	beqz	a3,e880b940 <__ieee754_log+0x190>
    e880b7d0:	1e074a63          	bltz	a4,e880b9c4 <__ieee754_log+0x214>
    e880b7d4:	000c8717          	auipc	a4,0xc8
    e880b7d8:	66c73787          	fld	fa5,1644(a4) # e88d3e40 <dhcp_discover_request_options+0x638>
    e880b7dc:	12f577d3          	fmul.d	fa5,fa0,fa5
    e880b7e0:	7ff006b7          	lui	a3,0x7ff00
    e880b7e4:	fca00513          	li	a0,-54
    e880b7e8:	e20787d3          	fmv.x.d	a5,fa5
    e880b7ec:	4207d713          	srai	a4,a5,0x20
    e880b7f0:	08d75b63          	bge	a4,a3,e880b886 <__ieee754_log+0xd6>
    e880b7f4:	4c07358b          	extu	a1,a4,19,0
    e880b7f8:	000966b7          	lui	a3,0x96
    e880b7fc:	2581                	sext.w	a1,a1
    e880b7fe:	00100637          	lui	a2,0x100
    e880b802:	f646869b          	addiw	a3,a3,-156
    e880b806:	9ead                	addw	a3,a3,a1
    e880b808:	8ef1                	and	a3,a3,a2
    e880b80a:	3ff00637          	lui	a2,0x3ff00
    e880b80e:	8e35                	xor	a2,a2,a3
    e880b810:	4147571b          	sraiw	a4,a4,0x14
    e880b814:	8e4d                	or	a2,a2,a1
    e880b816:	4146d69b          	sraiw	a3,a3,0x14
    e880b81a:	1602                	slli	a2,a2,0x20
    e880b81c:	c017071b          	addiw	a4,a4,-1023
    e880b820:	7c07b78b          	extu	a5,a5,31,0
    e880b824:	9f29                	addw	a4,a4,a0
    e880b826:	8fd1                	or	a5,a5,a2
    e880b828:	0025851b          	addiw	a0,a1,2
    e880b82c:	00e6863b          	addw	a2,a3,a4
    e880b830:	f2078753          	fmv.d.x	fa4,a5
    e880b834:	000b3697          	auipc	a3,0xb3
    e880b838:	6446b787          	fld	fa5,1604(a3) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880b83c:	4c05368b          	extu	a3,a0,19,0
    e880b840:	4509                	li	a0,2
    e880b842:	0af777d3          	fsub.d	fa5,fa4,fa5
    e880b846:	04d54563          	blt	a0,a3,e880b890 <__ieee754_log+0xe0>
    e880b84a:	f2000753          	fmv.d.x	fa4,zero
    e880b84e:	a2e7a7d3          	feq.d	a5,fa5,fa4
    e880b852:	10078163          	beqz	a5,e880b954 <__ieee754_log+0x1a4>
    e880b856:	22e70553          	fmv.d	fa0,fa4
    e880b85a:	16060363          	beqz	a2,e880b9c0 <__ieee754_log+0x210>
    e880b85e:	d20607d3          	fcvt.d.w	fa5,a2
    e880b862:	000c8797          	auipc	a5,0xc8
    e880b866:	65e7b507          	fld	fa0,1630(a5) # e88d3ec0 <dhcp_discover_request_options+0x6b8>
    e880b86a:	000c8797          	auipc	a5,0xc8
    e880b86e:	64e7b707          	fld	fa4,1614(a5) # e88d3eb8 <dhcp_discover_request_options+0x6b0>
    e880b872:	12a7f553          	fmul.d	fa0,fa5,fa0
    e880b876:	52e7f543          	fmadd.d	fa0,fa5,fa4,fa0
    e880b87a:	8082                	ret
    e880b87c:	7ff006b7          	lui	a3,0x7ff00
    e880b880:	4501                	li	a0,0
    e880b882:	f6d749e3          	blt	a4,a3,e880b7f4 <__ieee754_log+0x44>
    e880b886:	f20787d3          	fmv.d.x	fa5,a5
    e880b88a:	02f7f553          	fadd.d	fa0,fa5,fa5
    e880b88e:	8082                	ret
    e880b890:	000c8797          	auipc	a5,0xc8
    e880b894:	5b87b507          	fld	fa0,1464(a5) # e88d3e48 <dhcp_discover_request_options+0x640>
    e880b898:	02a7f553          	fadd.d	fa0,fa5,fa0
    e880b89c:	000c8797          	auipc	a5,0xc8
    e880b8a0:	6847b687          	fld	fa3,1668(a5) # e88d3f20 <dhcp_discover_request_options+0x718>
    e880b8a4:	000c8797          	auipc	a5,0xc8
    e880b8a8:	6847b207          	fld	ft4,1668(a5) # e88d3f28 <dhcp_discover_request_options+0x720>
    e880b8ac:	000c8797          	auipc	a5,0xc8
    e880b8b0:	6847b107          	fld	ft2,1668(a5) # e88d3f30 <dhcp_discover_request_options+0x728>
    e880b8b4:	000c8797          	auipc	a5,0xc8
    e880b8b8:	6547b707          	fld	fa4,1620(a5) # e88d3f08 <dhcp_discover_request_options+0x700>
    e880b8bc:	000c8797          	auipc	a5,0xc8
    e880b8c0:	6547b187          	fld	ft3,1620(a5) # e88d3f10 <dhcp_discover_request_options+0x708>
    e880b8c4:	000c8797          	auipc	a5,0xc8
    e880b8c8:	6747b007          	fld	ft0,1652(a5) # e88d3f38 <dhcp_discover_request_options+0x730>
    e880b8cc:	1aa7f553          	fdiv.d	fa0,fa5,fa0
    e880b8d0:	000c8797          	auipc	a5,0xc8
    e880b8d4:	6487b087          	fld	ft1,1608(a5) # e88d3f18 <dhcp_discover_request_options+0x710>
    e880b8d8:	fff9f6b7          	lui	a3,0xfff9f
    e880b8dc:	0006c7b7          	lui	a5,0x6c
    e880b8e0:	8517879b          	addiw	a5,a5,-1967
    e880b8e4:	b866869b          	addiw	a3,a3,-1146
    e880b8e8:	9f8d                	subw	a5,a5,a1
    e880b8ea:	9db5                	addw	a1,a1,a3
    e880b8ec:	8ddd                	or	a1,a1,a5
    e880b8ee:	d20602d3          	fcvt.d.w	ft5,a2
    e880b8f2:	12a575d3          	fmul.d	fa1,fa0,fa0
    e880b8f6:	12b5f653          	fmul.d	fa2,fa1,fa1
    e880b8fa:	22d676c3          	fmadd.d	fa3,fa2,fa3,ft4
    e880b8fe:	1ae67743          	fmadd.d	fa4,fa2,fa4,ft3
    e880b902:	12c6f6c3          	fmadd.d	fa3,fa3,fa2,ft2
    e880b906:	0ac77743          	fmadd.d	fa4,fa4,fa2,ft1
    e880b90a:	02c6f6c3          	fmadd.d	fa3,fa3,fa2,ft0
    e880b90e:	12b6f6d3          	fmul.d	fa3,fa3,fa1
    e880b912:	6ac77743          	fmadd.d	fa4,fa4,fa2,fa3
    e880b916:	06b05f63          	blez	a1,e880b994 <__ieee754_log+0x1e4>
    e880b91a:	000bf797          	auipc	a5,0xbf
    e880b91e:	7467b687          	fld	fa3,1862(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880b922:	12d7f6d3          	fmul.d	fa3,fa5,fa3
    e880b926:	12f6f6d3          	fmul.d	fa3,fa3,fa5
    e880b92a:	02d77753          	fadd.d	fa4,fa4,fa3
    e880b92e:	12a77753          	fmul.d	fa4,fa4,fa0
    e880b932:	e24d                	bnez	a2,e880b9d4 <__ieee754_log+0x224>
    e880b934:	0ae6f553          	fsub.d	fa0,fa3,fa4
    e880b938:	0aa7f553          	fsub.d	fa0,fa5,fa0
    e880b93c:	8082                	ret
    e880b93e:	0001                	nop
    e880b940:	f2000553          	fmv.d.x	fa0,zero
    e880b944:	000c8797          	auipc	a5,0xc8
    e880b948:	5b47b787          	fld	fa5,1460(a5) # e88d3ef8 <dhcp_discover_request_options+0x6f0>
    e880b94c:	1aa7f553          	fdiv.d	fa0,fa5,fa0
    e880b950:	8082                	ret
    e880b952:	0001                	nop
    e880b954:	000bf797          	auipc	a5,0xbf
    e880b958:	70c7b707          	fld	fa4,1804(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880b95c:	000c8797          	auipc	a5,0xc8
    e880b960:	5a47b507          	fld	fa0,1444(a5) # e88d3f00 <dhcp_discover_request_options+0x6f8>
    e880b964:	72a7f54b          	fnmsub.d	fa0,fa5,fa0,fa4
    e880b968:	12f7f753          	fmul.d	fa4,fa5,fa5
    e880b96c:	12e57553          	fmul.d	fa0,fa0,fa4
    e880b970:	d661                	beqz	a2,e880b938 <__ieee754_log+0x188>
    e880b972:	d20606d3          	fcvt.d.w	fa3,a2
    e880b976:	000c8797          	auipc	a5,0xc8
    e880b97a:	54a7b707          	fld	fa4,1354(a5) # e88d3ec0 <dhcp_discover_request_options+0x6b8>
    e880b97e:	000c8797          	auipc	a5,0xc8
    e880b982:	53a7b607          	fld	fa2,1338(a5) # e88d3eb8 <dhcp_discover_request_options+0x6b0>
    e880b986:	52e6f54b          	fnmsub.d	fa0,fa3,fa4,fa0
    e880b98a:	0af57553          	fsub.d	fa0,fa0,fa5
    e880b98e:	52c6f547          	fmsub.d	fa0,fa3,fa2,fa0
    e880b992:	8082                	ret
    e880b994:	0ae7f753          	fsub.d	fa4,fa5,fa4
    e880b998:	12a77753          	fmul.d	fa4,fa4,fa0
    e880b99c:	e601                	bnez	a2,e880b9a4 <__ieee754_log+0x1f4>
    e880b99e:	0ae7f553          	fsub.d	fa0,fa5,fa4
    e880b9a2:	8082                	ret
    e880b9a4:	000c8797          	auipc	a5,0xc8
    e880b9a8:	51c7b507          	fld	fa0,1308(a5) # e88d3ec0 <dhcp_discover_request_options+0x6b8>
    e880b9ac:	72a2f54b          	fnmsub.d	fa0,ft5,fa0,fa4
    e880b9b0:	000c8797          	auipc	a5,0xc8
    e880b9b4:	5087b707          	fld	fa4,1288(a5) # e88d3eb8 <dhcp_discover_request_options+0x6b0>
    e880b9b8:	0af57553          	fsub.d	fa0,fa0,fa5
    e880b9bc:	52e2f547          	fmsub.d	fa0,ft5,fa4,fa0
    e880b9c0:	8082                	ret
    e880b9c2:	0001                	nop
    e880b9c4:	0aa577d3          	fsub.d	fa5,fa0,fa0
    e880b9c8:	f2000553          	fmv.d.x	fa0,zero
    e880b9cc:	1aa7f553          	fdiv.d	fa0,fa5,fa0
    e880b9d0:	8082                	ret
    e880b9d2:	0001                	nop
    e880b9d4:	000c8797          	auipc	a5,0xc8
    e880b9d8:	4ec7b507          	fld	fa0,1260(a5) # e88d3ec0 <dhcp_discover_request_options+0x6b8>
    e880b9dc:	72a2f543          	fmadd.d	fa0,ft5,fa0,fa4
    e880b9e0:	000c8797          	auipc	a5,0xc8
    e880b9e4:	4d87b607          	fld	fa2,1240(a5) # e88d3eb8 <dhcp_discover_request_options+0x6b0>
    e880b9e8:	0aa6f553          	fsub.d	fa0,fa3,fa0
    e880b9ec:	0af57553          	fsub.d	fa0,fa0,fa5
    e880b9f0:	52c2f547          	fmsub.d	fa0,ft5,fa2,fa0
    e880b9f4:	8082                	ret
	...

00000000e880ba00 <__ieee754_pow>:
    e880ba00:	e20587d3          	fmv.x.d	a5,fa1
    e880ba04:	711d                	addi	sp,sp,-96
    e880ba06:	fc4e                	sd	s3,56(sp)
    e880ba08:	0007871b          	sext.w	a4,a5
    e880ba0c:	fa07b98b          	extu	s3,a5,62,32
    e880ba10:	ec86                	sd	ra,88(sp)
    e880ba12:	e8a2                	sd	s0,80(sp)
    e880ba14:	e4a6                	sd	s1,72(sp)
    e880ba16:	e0ca                	sd	s2,64(sp)
    e880ba18:	f852                	sd	s4,48(sp)
    e880ba1a:	f456                	sd	s5,40(sp)
    e880ba1c:	f05a                	sd	s6,32(sp)
    e880ba1e:	ec5e                	sd	s7,24(sp)
    e880ba20:	a422                	fsd	fs0,8(sp)
    e880ba22:	00e9e633          	or	a2,s3,a4
    e880ba26:	ce41                	beqz	a2,e880babe <__ieee754_pow+0xbe>
    e880ba28:	e20506d3          	fmv.x.d	a3,fa0
    e880ba2c:	7ff005b7          	lui	a1,0x7ff00
    e880ba30:	fe06ba0b          	extu	s4,a3,63,32
    e880ba34:	000a0b1b          	sext.w	s6,s4
    e880ba38:	780b390b          	extu	s2,s6,30,0
    e880ba3c:	2901                	sext.w	s2,s2
    e880ba3e:	0006849b          	sext.w	s1,a3
    e880ba42:	0725c763          	blt	a1,s2,e880bab0 <__ieee754_pow+0xb0>
    e880ba46:	4207db93          	srai	s7,a5,0x20
    e880ba4a:	08b90f63          	beq	s2,a1,e880bae8 <__ieee754_pow+0xe8>
    e880ba4e:	0735c163          	blt	a1,s3,e880bab0 <__ieee754_pow+0xb0>
    e880ba52:	7ff00637          	lui	a2,0x7ff00
    e880ba56:	04c98b63          	beq	s3,a2,e880baac <__ieee754_pow+0xac>
    e880ba5a:	f2068453          	fmv.d.x	fs0,a3
    e880ba5e:	843e                	mv	s0,a5
    e880ba60:	4a81                	li	s5,0
    e880ba62:	0a0b4763          	bltz	s6,e880bb10 <__ieee754_pow+0x110>
    e880ba66:	e76d                	bnez	a4,e880bb50 <__ieee754_pow+0x150>
    e880ba68:	7ff007b7          	lui	a5,0x7ff00
    e880ba6c:	16f98c63          	beq	s3,a5,e880bbe4 <__ieee754_pow+0x1e4>
    e880ba70:	3ff007b7          	lui	a5,0x3ff00
    e880ba74:	18f98a63          	beq	s3,a5,e880bc08 <__ieee754_pow+0x208>
    e880ba78:	400007b7          	lui	a5,0x40000
    e880ba7c:	66fb8763          	beq	s7,a5,e880c0ea <__ieee754_pow+0x6ea>
    e880ba80:	3fe007b7          	lui	a5,0x3fe00
    e880ba84:	0cfb9663          	bne	s7,a5,e880bb50 <__ieee754_pow+0x150>
    e880ba88:	0c0b4463          	bltz	s6,e880bb50 <__ieee754_pow+0x150>
    e880ba8c:	6446                	ld	s0,80(sp)
    e880ba8e:	60e6                	ld	ra,88(sp)
    e880ba90:	64a6                	ld	s1,72(sp)
    e880ba92:	6906                	ld	s2,64(sp)
    e880ba94:	79e2                	ld	s3,56(sp)
    e880ba96:	7a42                	ld	s4,48(sp)
    e880ba98:	7aa2                	ld	s5,40(sp)
    e880ba9a:	7b02                	ld	s6,32(sp)
    e880ba9c:	6be2                	ld	s7,24(sp)
    e880ba9e:	22840553          	fmv.d	fa0,fs0
    e880baa2:	2422                	fld	fs0,8(sp)
    e880baa4:	6125                	addi	sp,sp,96
    e880baa6:	1ab0006f          	j	e880c450 <__ieee754_sqrt>
    e880baaa:	0001                	nop
    e880baac:	d75d                	beqz	a4,e880ba5a <__ieee754_pow+0x5a>
    e880baae:	0001                	nop
    e880bab0:	c01007b7          	lui	a5,0xc0100
    e880bab4:	012787bb          	addw	a5,a5,s2
    e880bab8:	8fc5                	or	a5,a5,s1
    e880baba:	2781                	sext.w	a5,a5
    e880babc:	eb8d                	bnez	a5,e880baee <__ieee754_pow+0xee>
    e880babe:	000b3797          	auipc	a5,0xb3
    e880bac2:	3ba7b787          	fld	fa5,954(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880bac6:	e20786d3          	fmv.x.d	a3,fa5
    e880baca:	60e6                	ld	ra,88(sp)
    e880bacc:	6446                	ld	s0,80(sp)
    e880bace:	64a6                	ld	s1,72(sp)
    e880bad0:	6906                	ld	s2,64(sp)
    e880bad2:	79e2                	ld	s3,56(sp)
    e880bad4:	7a42                	ld	s4,48(sp)
    e880bad6:	7aa2                	ld	s5,40(sp)
    e880bad8:	7b02                	ld	s6,32(sp)
    e880bada:	6be2                	ld	s7,24(sp)
    e880badc:	2422                	fld	fs0,8(sp)
    e880bade:	f2068553          	fmv.d.x	fa0,a3
    e880bae2:	6125                	addi	sp,sp,96
    e880bae4:	8082                	ret
    e880bae6:	0001                	nop
    e880bae8:	e099                	bnez	s1,e880baee <__ieee754_pow+0xee>
    e880baea:	f73954e3          	bge	s2,s3,e880ba52 <__ieee754_pow+0x52>
    e880baee:	6446                	ld	s0,80(sp)
    e880baf0:	60e6                	ld	ra,88(sp)
    e880baf2:	64a6                	ld	s1,72(sp)
    e880baf4:	6906                	ld	s2,64(sp)
    e880baf6:	79e2                	ld	s3,56(sp)
    e880baf8:	7a42                	ld	s4,48(sp)
    e880bafa:	7aa2                	ld	s5,40(sp)
    e880bafc:	7b02                	ld	s6,32(sp)
    e880bafe:	6be2                	ld	s7,24(sp)
    e880bb00:	2422                	fld	fs0,8(sp)
    e880bb02:	000b5517          	auipc	a0,0xb5
    e880bb06:	76e50513          	addi	a0,a0,1902 # e88c1270 <kHTTPServerClass+0x90>
    e880bb0a:	6125                	addi	sp,sp,96
    e880bb0c:	1a50106f          	j	e880d4b0 <nan>
    e880bb10:	434007b7          	lui	a5,0x43400
    e880bb14:	12f9d863          	bge	s3,a5,e880bc44 <__ieee754_pow+0x244>
    e880bb18:	3ff007b7          	lui	a5,0x3ff00
    e880bb1c:	02f9c863          	blt	s3,a5,e880bb4c <__ieee754_pow+0x14c>
    e880bb20:	4149d79b          	sraiw	a5,s3,0x14
    e880bb24:	c017861b          	addiw	a2,a5,-1023
    e880bb28:	46d1                	li	a3,20
    e880bb2a:	5cc6d563          	bge	a3,a2,e880c0f4 <__ieee754_pow+0x6f4>
    e880bb2e:	03400693          	li	a3,52
    e880bb32:	9e91                	subw	a3,a3,a2
    e880bb34:	00d7563b          	srlw	a2,a4,a3
    e880bb38:	00d617bb          	sllw	a5,a2,a3
    e880bb3c:	8f99                	sub	a5,a5,a4
    e880bb3e:	8a05                	andi	a2,a2,1
    e880bb40:	4689                	li	a3,2
    e880bb42:	9e91                	subw	a3,a3,a2
    e880bb44:	0017b793          	seqz	a5,a5
    e880bb48:	42f69a8b          	mvnez	s5,a3,a5
    e880bb4c:	d315                	beqz	a4,e880ba70 <__ieee754_pow+0x70>
    e880bb4e:	0001                	nop
    e880bb50:	22840553          	fmv.d	fa0,fs0
    e880bb54:	79c010ef          	jal	ra,e880d2f0 <fabs>
    e880bb58:	e20506d3          	fmv.x.d	a3,fa0
    e880bb5c:	c4b1                	beqz	s1,e880bba8 <__ieee754_pow+0x1a8>
    e880bb5e:	01fa5a1b          	srliw	s4,s4,0x1f
    e880bb62:	3a7d                	addiw	s4,s4,-1
    e880bb64:	014ae7b3          	or	a5,s5,s4
    e880bb68:	2781                	sext.w	a5,a5
    e880bb6a:	cff9                	beqz	a5,e880bc48 <__ieee754_pow+0x248>
    e880bb6c:	41e007b7          	lui	a5,0x41e00
    e880bb70:	0f37d463          	bge	a5,s3,e880bc58 <__ieee754_pow+0x258>
    e880bb74:	43f007b7          	lui	a5,0x43f00
    e880bb78:	4f37d863          	bge	a5,s3,e880c068 <__ieee754_pow+0x668>
    e880bb7c:	3ff007b7          	lui	a5,0x3ff00
    e880bb80:	0af94163          	blt	s2,a5,e880bc22 <__ieee754_pow+0x222>
    e880bb84:	07705f63          	blez	s7,e880bc02 <__ieee754_pow+0x202>
    e880bb88:	000c8797          	auipc	a5,0xc8
    e880bb8c:	3207b787          	fld	fa5,800(a5) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880bb90:	12f7f7d3          	fmul.d	fa5,fa5,fa5
    e880bb94:	e20786d3          	fmv.x.d	a3,fa5
    e880bb98:	bf0d                	j	e880baca <__ieee754_pow+0xca>
    e880bb9a:	22840553          	fmv.d	fa0,fs0
    e880bb9e:	752010ef          	jal	ra,e880d2f0 <fabs>
    e880bba2:	e20506d3          	fmv.x.d	a3,fa0
    e880bba6:	e0cd                	bnez	s1,e880bc48 <__ieee754_pow+0x248>
    e880bba8:	00090863          	beqz	s2,e880bbb8 <__ieee754_pow+0x1b8>
    e880bbac:	740b378b          	extu	a5,s6,29,0
    e880bbb0:	3ff00737          	lui	a4,0x3ff00
    e880bbb4:	fae795e3          	bne	a5,a4,e880bb5e <__ieee754_pow+0x15e>
    e880bbb8:	060bca63          	bltz	s7,e880bc2c <__ieee754_pow+0x22c>
    e880bbbc:	f00b57e3          	bgez	s6,e880baca <__ieee754_pow+0xca>
    e880bbc0:	c01007b7          	lui	a5,0xc0100
    e880bbc4:	012787bb          	addw	a5,a5,s2
    e880bbc8:	00fae7b3          	or	a5,s5,a5
    e880bbcc:	2781                	sext.w	a5,a5
    e880bbce:	54079d63          	bnez	a5,e880c128 <__ieee754_pow+0x728>
    e880bbd2:	f20687d3          	fmv.d.x	fa5,a3
    e880bbd6:	0af7f7d3          	fsub.d	fa5,fa5,fa5
    e880bbda:	1af7f7d3          	fdiv.d	fa5,fa5,fa5
    e880bbde:	e20786d3          	fmv.x.d	a3,fa5
    e880bbe2:	b5e5                	j	e880baca <__ieee754_pow+0xca>
    e880bbe4:	c0100637          	lui	a2,0xc0100
    e880bbe8:	0126063b          	addw	a2,a2,s2
    e880bbec:	8e45                	or	a2,a2,s1
    e880bbee:	2601                	sext.w	a2,a2
    e880bbf0:	ec0607e3          	beqz	a2,e880babe <__ieee754_pow+0xbe>
    e880bbf4:	3ff007b7          	lui	a5,0x3ff00
    e880bbf8:	44f94363          	blt	s2,a5,e880c03e <__ieee754_pow+0x63e>
    e880bbfc:	86a2                	mv	a3,s0
    e880bbfe:	ec0bd6e3          	bgez	s7,e880baca <__ieee754_pow+0xca>
    e880bc02:	00000693          	li	a3,0
    e880bc06:	b5d1                	j	e880baca <__ieee754_pow+0xca>
    e880bc08:	e20406d3          	fmv.x.d	a3,fs0
    e880bc0c:	ea0bdfe3          	bgez	s7,e880baca <__ieee754_pow+0xca>
    e880bc10:	000b3797          	auipc	a5,0xb3
    e880bc14:	2687b787          	fld	fa5,616(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880bc18:	1a87f7d3          	fdiv.d	fa5,fa5,fs0
    e880bc1c:	e20786d3          	fmv.x.d	a3,fa5
    e880bc20:	b56d                	j	e880baca <__ieee754_pow+0xca>
    e880bc22:	f60bc3e3          	bltz	s7,e880bb88 <__ieee754_pow+0x188>
    e880bc26:	00000693          	li	a3,0
    e880bc2a:	b545                	j	e880baca <__ieee754_pow+0xca>
    e880bc2c:	f2068753          	fmv.d.x	fa4,a3
    e880bc30:	000b3797          	auipc	a5,0xb3
    e880bc34:	2487b787          	fld	fa5,584(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880bc38:	1ae7f7d3          	fdiv.d	fa5,fa5,fa4
    e880bc3c:	e20786d3          	fmv.x.d	a3,fa5
    e880bc40:	bfb5                	j	e880bbbc <__ieee754_pow+0x1bc>
    e880bc42:	0001                	nop
    e880bc44:	4a89                	li	s5,2
    e880bc46:	b505                	j	e880ba66 <__ieee754_pow+0x66>
    e880bc48:	0a847453          	fsub.d	fs0,fs0,fs0
    e880bc4c:	1a8477d3          	fdiv.d	fa5,fs0,fs0
    e880bc50:	e20786d3          	fmv.x.d	a3,fa5
    e880bc54:	bd9d                	j	e880baca <__ieee754_pow+0xca>
    e880bc56:	0001                	nop
    e880bc58:	7ff007b7          	lui	a5,0x7ff00
    e880bc5c:	00fb7b33          	and	s6,s6,a5
    e880bc60:	4701                	li	a4,0
    e880bc62:	020b1063          	bnez	s6,e880bc82 <__ieee754_pow+0x282>
    e880bc66:	f2068753          	fmv.d.x	fa4,a3
    e880bc6a:	000c8797          	auipc	a5,0xc8
    e880bc6e:	2fe7b787          	fld	fa5,766(a5) # e88d3f68 <dhcp_discover_request_options+0x760>
    e880bc72:	fcb00713          	li	a4,-53
    e880bc76:	12f777d3          	fmul.d	fa5,fa4,fa5
    e880bc7a:	e20786d3          	fmv.x.d	a3,fa5
    e880bc7e:	4206d913          	srai	s2,a3,0x20
    e880bc82:	4149561b          	sraiw	a2,s2,0x14
    e880bc86:	c016061b          	addiw	a2,a2,-1023
    e880bc8a:	4c09378b          	extu	a5,s2,19,0
    e880bc8e:	0003a537          	lui	a0,0x3a
    e880bc92:	00e605bb          	addw	a1,a2,a4
    e880bc96:	2781                	sext.w	a5,a5
    e880bc98:	3ff00737          	lui	a4,0x3ff00
    e880bc9c:	88e50513          	addi	a0,a0,-1906 # 3988e <memcmp-0xe87c6772>
    e880bca0:	8f5d                	or	a4,a4,a5
    e880bca2:	3af55763          	bge	a0,a5,e880c050 <__ieee754_pow+0x650>
    e880bca6:	000bb537          	lui	a0,0xbb
    e880bcaa:	67950513          	addi	a0,a0,1657 # bb679 <memcmp-0xe8744987>
    e880bcae:	48f55763          	bge	a0,a5,e880c13c <__ieee754_pow+0x73c>
    e880bcb2:	f20002d3          	fmv.d.x	ft5,zero
    e880bcb6:	000b3797          	auipc	a5,0xb3
    e880bcba:	1c27b587          	fld	fa1,450(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880bcbe:	22b587d3          	fmv.d	fa5,fa1
    e880bcc2:	22528e53          	fmv.d	ft8,ft5
    e880bcc6:	fff007b7          	lui	a5,0xfff00
    e880bcca:	2585                	addiw	a1,a1,1
    e880bccc:	9f3d                	addw	a4,a4,a5
    e880bcce:	4601                	li	a2,0
    e880bcd0:	02071793          	slli	a5,a4,0x20
    e880bcd4:	7c06b68b          	extu	a3,a3,31,0
    e880bcd8:	8fd5                	or	a5,a5,a3
    e880bcda:	f2078753          	fmv.d.x	fa4,a5
    e880bcde:	200006b7          	lui	a3,0x20000
    e880bce2:	4017571b          	sraiw	a4,a4,0x1
    e880bce6:	02e7f1d3          	fadd.d	ft3,fa5,fa4
    e880bcea:	0af77253          	fsub.d	ft4,fa4,fa5
    e880bcee:	8f55                	or	a4,a4,a3
    e880bcf0:	000806b7          	lui	a3,0x80
    e880bcf4:	9f35                	addw	a4,a4,a3
    e880bcf6:	9f31                	addw	a4,a4,a2
    e880bcf8:	1702                	slli	a4,a4,0x20
    e880bcfa:	1a35f1d3          	fdiv.d	ft3,fa1,ft3
    e880bcfe:	f2070753          	fmv.d.x	fa4,a4
    e880bd02:	000c8697          	auipc	a3,0xc8
    e880bd06:	2766b007          	fld	ft0,630(a3) # e88d3f78 <dhcp_discover_request_options+0x770>
    e880bd0a:	000c8697          	auipc	a3,0xc8
    e880bd0e:	2666b687          	fld	fa3,614(a3) # e88d3f70 <dhcp_discover_request_options+0x768>
    e880bd12:	0af777d3          	fsub.d	fa5,fa4,fa5
    e880bd16:	f2078753          	fmv.d.x	fa4,a5
    e880bd1a:	d2058653          	fcvt.d.w	fa2,a1
    e880bd1e:	000c8797          	auipc	a5,0xc8
    e880bd22:	2827b107          	fld	ft2,642(a5) # e88d3fa0 <dhcp_discover_request_options+0x798>
    e880bd26:	000c8797          	auipc	a5,0xc8
    e880bd2a:	2927b387          	fld	ft7,658(a5) # e88d3fb8 <dhcp_discover_request_options+0x7b0>
    e880bd2e:	000c8797          	auipc	a5,0xc8
    e880bd32:	27a7b807          	fld	fa6,634(a5) # e88d3fa8 <dhcp_discover_request_options+0x7a0>
    e880bd36:	56fd                	li	a3,-1
    e880bd38:	0af777d3          	fsub.d	fa5,fa4,fa5
    e880bd3c:	000c8797          	auipc	a5,0xc8
    e880bd40:	2747b707          	fld	fa4,628(a5) # e88d3fb0 <dhcp_discover_request_options+0x7a8>
    e880bd44:	1682                	slli	a3,a3,0x20
    e880bd46:	f2070453          	fmv.d.x	fs0,a4
    e880bd4a:	000c8617          	auipc	a2,0xc8
    e880bd4e:	23663f87          	fld	ft11,566(a2) # e88d3f80 <dhcp_discover_request_options+0x778>
    e880bd52:	000c8617          	auipc	a2,0xc8
    e880bd56:	23663f07          	fld	ft10,566(a2) # e88d3f88 <dhcp_discover_request_options+0x780>
    e880bd5a:	000c8617          	auipc	a2,0xc8
    e880bd5e:	23663e87          	fld	ft9,566(a2) # e88d3f90 <dhcp_discover_request_options+0x788>
    e880bd62:	000c8617          	auipc	a2,0xc8
    e880bd66:	23663887          	fld	fa7,566(a2) # e88d3f98 <dhcp_discover_request_options+0x790>
    e880bd6a:	12327553          	fmul.d	fa0,ft4,ft3
    e880bd6e:	12a570d3          	fmul.d	ft1,fa0,fa0
    e880bd72:	e20505d3          	fmv.x.d	a1,fa0
    e880bd76:	00b6f7b3          	and	a5,a3,a1
    e880bd7a:	f2078553          	fmv.d.x	fa0,a5
    e880bd7e:	02d0f6c3          	fmadd.d	fa3,ft1,fa3,ft0
    e880bd82:	2285724b          	fnmsub.d	ft4,fa0,fs0,ft4
    e880bd86:	f2078453          	fmv.d.x	fs0,a5
    e880bd8a:	f2058553          	fmv.d.x	fa0,a1
    e880bd8e:	1210f053          	fmul.d	ft0,ft1,ft1
    e880bd92:	02857353          	fadd.d	ft6,fa0,fs0
    e880bd96:	fa16f6c3          	fmadd.d	fa3,fa3,ft1,ft11
    e880bd9a:	22f477cb          	fnmsub.d	fa5,fs0,fa5,ft4
    e880bd9e:	12847543          	fmadd.d	fa0,fs0,fs0,ft2
    e880bda2:	f216f6c3          	fmadd.d	fa3,fa3,ft1,ft10
    e880bda6:	1237f7d3          	fmul.d	fa5,fa5,ft3
    e880bdaa:	ea16f6c3          	fmadd.d	fa3,fa3,ft1,ft9
    e880bdae:	12f37353          	fmul.d	ft6,ft6,fa5
    e880bdb2:	8a16f6c3          	fmadd.d	fa3,fa3,ft1,fa7
    e880bdb6:	32d076c3          	fmadd.d	fa3,ft0,fa3,ft6
    e880bdba:	02d57553          	fadd.d	fa0,fa0,fa3
    e880bdbe:	e2050653          	fmv.x.d	a2,fa0
    e880bdc2:	8e75                	and	a2,a2,a3
    e880bdc4:	f2060553          	fmv.d.x	fa0,a2
    e880bdc8:	0a257553          	fsub.d	fa0,fa0,ft2
    e880bdcc:	5284754b          	fnmsub.d	fa0,fs0,fs0,fa0
    e880bdd0:	0aa6f6d3          	fsub.d	fa3,fa3,fa0
    e880bdd4:	f2058553          	fmv.d.x	fa0,a1
    e880bdd8:	12a6f6d3          	fmul.d	fa3,fa3,fa0
    e880bddc:	f2060553          	fmv.d.x	fa0,a2
    e880bde0:	6aa7f7c3          	fmadd.d	fa5,fa5,fa0,fa3
    e880bde4:	f20606d3          	fmv.d.x	fa3,a2
    e880bde8:	f2060553          	fmv.d.x	fa0,a2
    e880bdec:	7a86f6c3          	fmadd.d	fa3,fa3,fs0,fa5
    e880bdf0:	e2068753          	fmv.x.d	a4,fa3
    e880bdf4:	f20786d3          	fmv.d.x	fa3,a5
    e880bdf8:	8f75                	and	a4,a4,a3
    e880bdfa:	f2070453          	fmv.d.x	fs0,a4
    e880bdfe:	42a6f6cb          	fnmsub.d	fa3,fa3,fa0,fs0
    e880be02:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e880be06:	1307f7d3          	fmul.d	fa5,fa5,fa6
    e880be0a:	7a8777c3          	fmadd.d	fa5,fa4,fs0,fa5
    e880be0e:	03c7f7d3          	fadd.d	fa5,fa5,ft8
    e880be12:	7a83f743          	fmadd.d	fa4,ft7,fs0,fa5
    e880be16:	02577753          	fadd.d	fa4,fa4,ft5
    e880be1a:	02c77753          	fadd.d	fa4,fa4,fa2
    e880be1e:	e20707d3          	fmv.x.d	a5,fa4
    e880be22:	8ff5                	and	a5,a5,a3
    e880be24:	f2078753          	fmv.d.x	fa4,a5
    e880be28:	0ac776d3          	fsub.d	fa3,fa4,fa2
    e880be2c:	0a56f6d3          	fsub.d	fa3,fa3,ft5
    e880be30:	6a7476cb          	fnmsub.d	fa3,fs0,ft7,fa3
    e880be34:	0ad7f6d3          	fsub.d	fa3,fa5,fa3
    e880be38:	3afd                	addiw	s5,s5,-1
    e880be3a:	014aea33          	or	s4,s5,s4
    e880be3e:	22b58453          	fmv.d	fs0,fa1
    e880be42:	000a1663          	bnez	s4,e880be4e <__ieee754_pow+0x44e>
    e880be46:	000b8797          	auipc	a5,0xb8
    e880be4a:	b227b407          	fld	fs0,-1246(a5) # e88c3968 <kSRPParameters_3072_SHA512+0xd8>
    e880be4e:	02045793          	srli	a5,s0,0x20
    e880be52:	1782                	slli	a5,a5,0x20
    e880be54:	f2078653          	fmv.d.x	fa2,a5
    e880be58:	f20407d3          	fmv.d.x	fa5,s0
    e880be5c:	40900537          	lui	a0,0x40900
    e880be60:	0ac7f7d3          	fsub.d	fa5,fa5,fa2
    e880be64:	f2040653          	fmv.d.x	fa2,s0
    e880be68:	12c6f6d3          	fmul.d	fa3,fa3,fa2
    e880be6c:	f2078653          	fmv.d.x	fa2,a5
    e880be70:	12c77653          	fmul.d	fa2,fa4,fa2
    e880be74:	6ae7f7c3          	fmadd.d	fa5,fa5,fa4,fa3
    e880be78:	02c7f753          	fadd.d	fa4,fa5,fa2
    e880be7c:	e20707d3          	fmv.x.d	a5,fa4
    e880be80:	fe07b60b          	extu	a2,a5,63,32
    e880be84:	0006059b          	sext.w	a1,a2
    e880be88:	0007869b          	sext.w	a3,a5
    e880be8c:	16a5c763          	blt	a1,a0,e880bffa <__ieee754_pow+0x5fa>
    e880be90:	bf700737          	lui	a4,0xbf700
    e880be94:	9f31                	addw	a4,a4,a2
    e880be96:	8f55                	or	a4,a4,a3
    e880be98:	2701                	sext.w	a4,a4
    e880be9a:	14071563          	bnez	a4,e880bfe4 <__ieee754_pow+0x5e4>
    e880be9e:	f20786d3          	fmv.d.x	fa3,a5
    e880bea2:	000c8717          	auipc	a4,0xc8
    e880bea6:	11e73707          	fld	fa4,286(a4) # e88d3fc0 <dhcp_discover_request_options+0x7b8>
    e880beaa:	02e7f753          	fadd.d	fa4,fa5,fa4
    e880beae:	0ac6f6d3          	fsub.d	fa3,fa3,fa2
    e880beb2:	a2e697d3          	flt.d	a5,fa3,fa4
    e880beb6:	12079763          	bnez	a5,e880bfe4 <__ieee754_pow+0x5e4>
    e880beba:	7946370b          	extu	a4,a2,30,20
    e880bebe:	00100537          	lui	a0,0x100
    e880bec2:	c027079b          	addiw	a5,a4,-1022
    e880bec6:	40f557bb          	sraw	a5,a0,a5
    e880beca:	9fb1                	addw	a5,a5,a2
    e880becc:	7947b60b          	extu	a2,a5,30,20
    e880bed0:	c016061b          	addiw	a2,a2,-1023
    e880bed4:	fff5069b          	addiw	a3,a0,-1
    e880bed8:	40c6d6bb          	sraw	a3,a3,a2
    e880bedc:	4c07b70b          	extu	a4,a5,19,0
    e880bee0:	8f49                	or	a4,a4,a0
    e880bee2:	fff6c693          	not	a3,a3
    e880bee6:	4551                	li	a0,20
    e880bee8:	40c5063b          	subw	a2,a0,a2
    e880beec:	8ff5                	and	a5,a5,a3
    e880beee:	40c7553b          	sraw	a0,a4,a2
    e880bef2:	1782                	slli	a5,a5,0x20
    e880bef4:	0005d663          	bgez	a1,e880bf00 <__ieee754_pow+0x500>
    e880bef8:	40a0073b          	negw	a4,a0
    e880befc:	0007051b          	sext.w	a0,a4
    e880bf00:	f2078753          	fmv.d.x	fa4,a5
    e880bf04:	0145169b          	slliw	a3,a0,0x14
    e880bf08:	0ae67653          	fsub.d	fa2,fa2,fa4
    e880bf0c:	02c7f753          	fadd.d	fa4,fa5,fa2
    e880bf10:	e20707d3          	fmv.x.d	a5,fa4
    e880bf14:	9381                	srli	a5,a5,0x20
    e880bf16:	1782                	slli	a5,a5,0x20
    e880bf18:	f2078753          	fmv.d.x	fa4,a5
    e880bf1c:	000c8717          	auipc	a4,0xc8
    e880bf20:	0b473687          	fld	fa3,180(a4) # e88d3fd0 <dhcp_discover_request_options+0x7c8>
    e880bf24:	000c8717          	auipc	a4,0xc8
    e880bf28:	0b473287          	fld	ft5,180(a4) # e88d3fd8 <dhcp_discover_request_options+0x7d0>
    e880bf2c:	0ac77653          	fsub.d	fa2,fa4,fa2
    e880bf30:	12e6f6d3          	fmul.d	fa3,fa3,fa4
    e880bf34:	000c8717          	auipc	a4,0xc8
    e880bf38:	0ac73507          	fld	fa0,172(a4) # e88d3fe0 <dhcp_discover_request_options+0x7d8>
    e880bf3c:	000c8717          	auipc	a4,0xc8
    e880bf40:	f8c73707          	fld	fa4,-116(a4) # e88d3ec8 <dhcp_discover_request_options+0x6c0>
    e880bf44:	000c8717          	auipc	a4,0xc8
    e880bf48:	f8c73207          	fld	ft4,-116(a4) # e88d3ed0 <dhcp_discover_request_options+0x6c8>
    e880bf4c:	000c8717          	auipc	a4,0xc8
    e880bf50:	f8c73187          	fld	ft3,-116(a4) # e88d3ed8 <dhcp_discover_request_options+0x6d0>
    e880bf54:	000c8717          	auipc	a4,0xc8
    e880bf58:	f8c73107          	fld	ft2,-116(a4) # e88d3ee0 <dhcp_discover_request_options+0x6d8>
    e880bf5c:	0ac7f7d3          	fsub.d	fa5,fa5,fa2
    e880bf60:	000c8717          	auipc	a4,0xc8
    e880bf64:	f8873087          	fld	ft1,-120(a4) # e88d3ee8 <dhcp_discover_request_options+0x6e0>
    e880bf68:	000c8717          	auipc	a4,0xc8
    e880bf6c:	ee073007          	fld	ft0,-288(a4) # e88d3e48 <dhcp_discover_request_options+0x640>
    e880bf70:	6a57f7c3          	fmadd.d	fa5,fa5,ft5,fa3
    e880bf74:	f20786d3          	fmv.d.x	fa3,a5
    e880bf78:	f20782d3          	fmv.d.x	ft5,a5
    e880bf7c:	7ad57643          	fmadd.d	fa2,fa0,fa3,fa5
    e880bf80:	12c676d3          	fmul.d	fa3,fa2,fa2
    e880bf84:	62a2f54b          	fnmsub.d	fa0,ft5,fa0,fa2
    e880bf88:	22e6f743          	fmadd.d	fa4,fa3,fa4,ft4
    e880bf8c:	0aa7f7d3          	fsub.d	fa5,fa5,fa0
    e880bf90:	1ad77743          	fmadd.d	fa4,fa4,fa3,ft3
    e880bf94:	7af677c3          	fmadd.d	fa5,fa2,fa5,fa5
    e880bf98:	12d77743          	fmadd.d	fa4,fa4,fa3,ft2
    e880bf9c:	0ad77743          	fmadd.d	fa4,fa4,fa3,ft1
    e880bfa0:	62d7774b          	fnmsub.d	fa4,fa4,fa3,fa2
    e880bfa4:	12e676d3          	fmul.d	fa3,fa2,fa4
    e880bfa8:	0a077753          	fsub.d	fa4,fa4,ft0
    e880bfac:	1ae6f753          	fdiv.d	fa4,fa3,fa4
    e880bfb0:	0af777d3          	fsub.d	fa5,fa4,fa5
    e880bfb4:	0ac7f7d3          	fsub.d	fa5,fa5,fa2
    e880bfb8:	0af5f7d3          	fsub.d	fa5,fa1,fa5
    e880bfbc:	e20787d3          	fmv.x.d	a5,fa5
    e880bfc0:	fe07b70b          	extu	a4,a5,63,32
    e880bfc4:	9f35                	addw	a4,a4,a3
    e880bfc6:	4147569b          	sraiw	a3,a4,0x14
    e880bfca:	18d05c63          	blez	a3,e880c162 <__ieee754_pow+0x762>
    e880bfce:	1702                	slli	a4,a4,0x20
    e880bfd0:	7c07b68b          	extu	a3,a5,31,0
    e880bfd4:	8ed9                	or	a3,a3,a4
    e880bfd6:	f20687d3          	fmv.d.x	fa5,a3
    e880bfda:	1287f7d3          	fmul.d	fa5,fa5,fs0
    e880bfde:	e20786d3          	fmv.x.d	a3,fa5
    e880bfe2:	b4e5                	j	e880baca <__ieee754_pow+0xca>
    e880bfe4:	000c8797          	auipc	a5,0xc8
    e880bfe8:	ec47b787          	fld	fa5,-316(a5) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880bfec:	12f47453          	fmul.d	fs0,fs0,fa5
    e880bff0:	12f477d3          	fmul.d	fa5,fs0,fa5
    e880bff4:	e20786d3          	fmv.x.d	a3,fa5
    e880bff8:	bcc9                	j	e880baca <__ieee754_pow+0xca>
    e880bffa:	7805b70b          	extu	a4,a1,30,0
    e880bffe:	4090d537          	lui	a0,0x4090d
    e880c002:	2701                	sext.w	a4,a4
    e880c004:	bff50513          	addi	a0,a0,-1025 # 4090cbff <memcmp-0xa7ef3401>
    e880c008:	10e55863          	bge	a0,a4,e880c118 <__ieee754_pow+0x718>
    e880c00c:	3f6f3737          	lui	a4,0x3f6f3
    e880c010:	4007071b          	addiw	a4,a4,1024
    e880c014:	9f31                	addw	a4,a4,a2
    e880c016:	8f55                	or	a4,a4,a3
    e880c018:	2701                	sext.w	a4,a4
    e880c01a:	e719                	bnez	a4,e880c028 <__ieee754_pow+0x628>
    e880c01c:	0ac77753          	fsub.d	fa4,fa4,fa2
    e880c020:	a2e787d3          	fle.d	a5,fa5,fa4
    e880c024:	e8078be3          	beqz	a5,e880beba <__ieee754_pow+0x4ba>
    e880c028:	000c8797          	auipc	a5,0xc8
    e880c02c:	fa07b787          	fld	fa5,-96(a5) # e88d3fc8 <dhcp_discover_request_options+0x7c0>
    e880c030:	12f47453          	fmul.d	fs0,fs0,fa5
    e880c034:	12f477d3          	fmul.d	fa5,fs0,fa5
    e880c038:	e20786d3          	fmv.x.d	a3,fa5
    e880c03c:	b479                	j	e880baca <__ieee754_pow+0xca>
    e880c03e:	bc0bd2e3          	bgez	s7,e880bc02 <__ieee754_pow+0x202>
    e880c042:	f20407d3          	fmv.d.x	fa5,s0
    e880c046:	22f797d3          	fneg.d	fa5,fa5
    e880c04a:	e20786d3          	fmv.x.d	a3,fa5
    e880c04e:	bcb5                	j	e880baca <__ieee754_pow+0xca>
    e880c050:	f20002d3          	fmv.d.x	ft5,zero
    e880c054:	000b3797          	auipc	a5,0xb3
    e880c058:	e247b587          	fld	fa1,-476(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880c05c:	4601                	li	a2,0
    e880c05e:	22528e53          	fmv.d	ft8,ft5
    e880c062:	22b587d3          	fmv.d	fa5,fa1
    e880c066:	b1ad                	j	e880bcd0 <__ieee754_pow+0x2d0>
    e880c068:	3ff007b7          	lui	a5,0x3ff00
    e880c06c:	ffe78713          	addi	a4,a5,-2 # 3feffffe <memcmp-0xa8900002>
    e880c070:	bb2759e3          	bge	a4,s2,e880bc22 <__ieee754_pow+0x222>
    e880c074:	b127c8e3          	blt	a5,s2,e880bb84 <__ieee754_pow+0x184>
    e880c078:	f20687d3          	fmv.d.x	fa5,a3
    e880c07c:	000b3797          	auipc	a5,0xb3
    e880c080:	dfc7b587          	fld	fa1,-516(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880c084:	000c8797          	auipc	a5,0xc8
    e880c088:	e7c7b007          	fld	ft0,-388(a5) # e88d3f00 <dhcp_discover_request_options+0x6f8>
    e880c08c:	0ab7f7d3          	fsub.d	fa5,fa5,fa1
    e880c090:	000be797          	auipc	a5,0xbe
    e880c094:	7687b707          	fld	fa4,1896(a5) # e88ca7f8 <kAirPlayReceiverServerClass+0xe00>
    e880c098:	000bf797          	auipc	a5,0xbf
    e880c09c:	fc87b087          	fld	ft1,-56(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880c0a0:	000c8797          	auipc	a5,0xc8
    e880c0a4:	e107b507          	fld	fa0,-496(a5) # e88d3eb0 <dhcp_discover_request_options+0x6a8>
    e880c0a8:	000c8797          	auipc	a5,0xc8
    e880c0ac:	eb07b687          	fld	fa3,-336(a5) # e88d3f58 <dhcp_discover_request_options+0x750>
    e880c0b0:	000c8797          	auipc	a5,0xc8
    e880c0b4:	eb07b607          	fld	fa2,-336(a5) # e88d3f60 <dhcp_discover_request_options+0x758>
    e880c0b8:	02e7f74b          	fnmsub.d	fa4,fa5,fa4,ft0
    e880c0bc:	12f7f053          	fmul.d	ft0,fa5,fa5
    e880c0c0:	0af7774b          	fnmsub.d	fa4,fa4,fa5,ft1
    e880c0c4:	12077753          	fmul.d	fa4,fa4,ft0
    e880c0c8:	12a77753          	fmul.d	fa4,fa4,fa0
    e880c0cc:	72d7f6c7          	fmsub.d	fa3,fa5,fa3,fa4
    e880c0d0:	6ac7f743          	fmadd.d	fa4,fa5,fa2,fa3
    e880c0d4:	e20707d3          	fmv.x.d	a5,fa4
    e880c0d8:	9381                	srli	a5,a5,0x20
    e880c0da:	1782                	slli	a5,a5,0x20
    e880c0dc:	f2078753          	fmv.d.x	fa4,a5
    e880c0e0:	72c7f7cb          	fnmsub.d	fa5,fa5,fa2,fa4
    e880c0e4:	0af6f6d3          	fsub.d	fa3,fa3,fa5
    e880c0e8:	bb81                	j	e880be38 <__ieee754_pow+0x438>
    e880c0ea:	128477d3          	fmul.d	fa5,fs0,fs0
    e880c0ee:	e20786d3          	fmv.x.d	a3,fa5
    e880c0f2:	bae1                	j	e880baca <__ieee754_pow+0xca>
    e880c0f4:	aa0713e3          	bnez	a4,e880bb9a <__ieee754_pow+0x19a>
    e880c0f8:	4751                	li	a4,20
    e880c0fa:	9f11                	subw	a4,a4,a2
    e880c0fc:	40e9d6bb          	sraw	a3,s3,a4
    e880c100:	00e697bb          	sllw	a5,a3,a4
    e880c104:	413787b3          	sub	a5,a5,s3
    e880c108:	8a85                	andi	a3,a3,1
    e880c10a:	4709                	li	a4,2
    e880c10c:	9f15                	subw	a4,a4,a3
    e880c10e:	0017b793          	seqz	a5,a5
    e880c112:	42f71a8b          	mvnez	s5,a4,a5
    e880c116:	baa9                	j	e880ba70 <__ieee754_pow+0x70>
    e880c118:	3fe00837          	lui	a6,0x3fe00
    e880c11c:	4681                	li	a3,0
    e880c11e:	4501                	li	a0,0
    e880c120:	dee85ae3          	bge	a6,a4,e880bf14 <__ieee754_pow+0x514>
    e880c124:	8351                	srli	a4,a4,0x14
    e880c126:	bb61                	j	e880bebe <__ieee754_pow+0x4be>
    e880c128:	4785                	li	a5,1
    e880c12a:	9afa90e3          	bne	s5,a5,e880baca <__ieee754_pow+0xca>
    e880c12e:	f20687d3          	fmv.d.x	fa5,a3
    e880c132:	22f797d3          	fneg.d	fa5,fa5
    e880c136:	e20786d3          	fmv.x.d	a3,fa5
    e880c13a:	ba41                	j	e880baca <__ieee754_pow+0xca>
    e880c13c:	000c8797          	auipc	a5,0xc8
    e880c140:	e047b287          	fld	ft5,-508(a5) # e88d3f40 <dhcp_discover_request_options+0x738>
    e880c144:	000c8797          	auipc	a5,0xc8
    e880c148:	e047be07          	fld	ft8,-508(a5) # e88d3f48 <dhcp_discover_request_options+0x740>
    e880c14c:	00040637          	lui	a2,0x40
    e880c150:	000c8797          	auipc	a5,0xc8
    e880c154:	e007b787          	fld	fa5,-512(a5) # e88d3f50 <dhcp_discover_request_options+0x748>
    e880c158:	000b3797          	auipc	a5,0xb3
    e880c15c:	d207b587          	fld	fa1,-736(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880c160:	be85                	j	e880bcd0 <__ieee754_pow+0x2d0>
    e880c162:	22f78553          	fmv.d	fa0,fa5
    e880c166:	4da010ef          	jal	ra,e880d640 <scalbn>
    e880c16a:	e20506d3          	fmv.x.d	a3,fa0
    e880c16e:	b5a5                	j	e880bfd6 <__ieee754_pow+0x5d6>
	...

00000000e880c180 <__ieee754_rem_pio2>:
    e880c180:	e20507d3          	fmv.x.d	a5,fa0
    e880c184:	7139                	addi	sp,sp,-64
    e880c186:	fc91540b          	sdd	s0,s1,(sp),2,4
    e880c18a:	3fe92737          	lui	a4,0x3fe92
    e880c18e:	fc06                	sd	ra,56(sp)
    e880c190:	f84a                	sd	s2,48(sp)
    e880c192:	1fb70713          	addi	a4,a4,507 # 3fe921fb <memcmp-0xa896de05>
    e880c196:	fa07b40b          	extu	s0,a5,62,32
    e880c19a:	84aa                	mv	s1,a0
    e880c19c:	0e875c63          	bge	a4,s0,e880c294 <__ieee754_rem_pio2+0x114>
    e880c1a0:	4002e737          	lui	a4,0x4002e
    e880c1a4:	97b70713          	addi	a4,a4,-1669 # 4002d97b <memcmp-0xa87d2685>
    e880c1a8:	4207d913          	srai	s2,a5,0x20
    e880c1ac:	04874463          	blt	a4,s0,e880c1f4 <__ieee754_rem_pio2+0x74>
    e880c1b0:	000c8717          	auipc	a4,0xc8
    e880c1b4:	e3873787          	fld	fa5,-456(a4) # e88d3fe8 <dhcp_discover_request_options+0x7e0>
    e880c1b8:	3ff92737          	lui	a4,0x3ff92
    e880c1bc:	1fb70713          	addi	a4,a4,507 # 3ff921fb <memcmp-0xa886de05>
    e880c1c0:	23205963          	blez	s2,e880c3f2 <__ieee754_rem_pio2+0x272>
    e880c1c4:	0af577d3          	fsub.d	fa5,fa0,fa5
    e880c1c8:	0ee40663          	beq	s0,a4,e880c2b4 <__ieee754_rem_pio2+0x134>
    e880c1cc:	000c8797          	auipc	a5,0xc8
    e880c1d0:	e247b707          	fld	fa4,-476(a5) # e88d3ff0 <dhcp_discover_request_options+0x7e8>
    e880c1d4:	0ae7f6d3          	fsub.d	fa3,fa5,fa4
    e880c1d8:	4505                	li	a0,1
    e880c1da:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e880c1de:	a094                	fsd	fa3,0(s1)
    e880c1e0:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880c1e4:	a49c                	fsd	fa5,8(s1)
    e880c1e6:	70e2                	ld	ra,56(sp)
    e880c1e8:	fc91440b          	ldd	s0,s1,(sp),2,4
    e880c1ec:	7942                	ld	s2,48(sp)
    e880c1ee:	6121                	addi	sp,sp,64
    e880c1f0:	8082                	ret
    e880c1f2:	0001                	nop
    e880c1f4:	86be                	mv	a3,a5
    e880c1f6:	413927b7          	lui	a5,0x41392
    e880c1fa:	1fb78793          	addi	a5,a5,507 # 413921fb <memcmp-0xa746de05>
    e880c1fe:	0e87d563          	bge	a5,s0,e880c2e8 <__ieee754_rem_pio2+0x168>
    e880c202:	7ff007b7          	lui	a5,0x7ff00
    e880c206:	0af45163          	bge	s0,a5,e880c2a8 <__ieee754_rem_pio2+0x128>
    e880c20a:	4144561b          	sraiw	a2,s0,0x14
    e880c20e:	bea6061b          	addiw	a2,a2,-1046
    e880c212:	0146179b          	slliw	a5,a2,0x14
    e880c216:	9c1d                	subw	s0,s0,a5
    e880c218:	7c06b68b          	extu	a3,a3,31,0
    e880c21c:	1402                	slli	s0,s0,0x20
    e880c21e:	8c55                	or	s0,s0,a3
    e880c220:	f20407d3          	fmv.d.x	fa5,s0
    e880c224:	000c8717          	auipc	a4,0xc8
    e880c228:	dfc73687          	fld	fa3,-516(a4) # e88d4020 <dhcp_discover_request_options+0x818>
    e880c22c:	468d                	li	a3,3
    e880c22e:	c20797d3          	fcvt.w.d	a5,fa5,rtz
    e880c232:	d2078753          	fcvt.d.w	fa4,a5
    e880c236:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880c23a:	a43a                	fsd	fa4,8(sp)
    e880c23c:	12d7f7d3          	fmul.d	fa5,fa5,fa3
    e880c240:	c20797d3          	fcvt.w.d	a5,fa5,rtz
    e880c244:	d2078753          	fcvt.d.w	fa4,a5
    e880c248:	2781                	sext.w	a5,a5
    e880c24a:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880c24e:	a83a                	fsd	fa4,16(sp)
    e880c250:	f2000753          	fmv.d.x	fa4,zero
    e880c254:	12d7f7d3          	fmul.d	fa5,fa5,fa3
    e880c258:	a2e7a753          	feq.d	a4,fa5,fa4
    e880c25c:	ac3e                	fsd	fa5,24(sp)
    e880c25e:	c701                	beqz	a4,e880c266 <__ieee754_rem_pio2+0xe6>
    e880c260:	00f036b3          	snez	a3,a5
    e880c264:	0685                	addi	a3,a3,1
    e880c266:	00094797          	auipc	a5,0x94
    e880c26a:	83a78793          	addi	a5,a5,-1990 # e889faa0 <two_over_pi>
    e880c26e:	4709                	li	a4,2
    e880c270:	85a6                	mv	a1,s1
    e880c272:	0028                	addi	a0,sp,8
    e880c274:	53c000ef          	jal	ra,e880c7b0 <__kernel_rem_pio2>
    e880c278:	f60957e3          	bgez	s2,e880c1e6 <__ieee754_rem_pio2+0x66>
    e880c27c:	2098                	fld	fa4,0(s1)
    e880c27e:	249c                	fld	fa5,8(s1)
    e880c280:	40a0053b          	negw	a0,a0
    e880c284:	22e71753          	fneg.d	fa4,fa4
    e880c288:	22f797d3          	fneg.d	fa5,fa5
    e880c28c:	2501                	sext.w	a0,a0
    e880c28e:	a098                	fsd	fa4,0(s1)
    e880c290:	a49c                	fsd	fa5,8(s1)
    e880c292:	bf91                	j	e880c1e6 <__ieee754_rem_pio2+0x66>
    e880c294:	a088                	fsd	fa0,0(s1)
    e880c296:	70e2                	ld	ra,56(sp)
    e880c298:	00053423          	sd	zero,8(a0)
    e880c29c:	fc91440b          	ldd	s0,s1,(sp),2,4
    e880c2a0:	7942                	ld	s2,48(sp)
    e880c2a2:	4501                	li	a0,0
    e880c2a4:	6121                	addi	sp,sp,64
    e880c2a6:	8082                	ret
    e880c2a8:	0aa577d3          	fsub.d	fa5,fa0,fa0
    e880c2ac:	4501                	li	a0,0
    e880c2ae:	a49c                	fsd	fa5,8(s1)
    e880c2b0:	a09c                	fsd	fa5,0(s1)
    e880c2b2:	bf15                	j	e880c1e6 <__ieee754_rem_pio2+0x66>
    e880c2b4:	000c8797          	auipc	a5,0xc8
    e880c2b8:	d447b707          	fld	fa4,-700(a5) # e88d3ff8 <dhcp_discover_request_options+0x7f0>
    e880c2bc:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880c2c0:	000c8797          	auipc	a5,0xc8
    e880c2c4:	d407b707          	fld	fa4,-704(a5) # e88d4000 <dhcp_discover_request_options+0x7f8>
    e880c2c8:	70e2                	ld	ra,56(sp)
    e880c2ca:	7942                	ld	s2,48(sp)
    e880c2cc:	4505                	li	a0,1
    e880c2ce:	0ae7f6d3          	fsub.d	fa3,fa5,fa4
    e880c2d2:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e880c2d6:	a094                	fsd	fa3,0(s1)
    e880c2d8:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880c2dc:	a49c                	fsd	fa5,8(s1)
    e880c2de:	fc91440b          	ldd	s0,s1,(sp),2,4
    e880c2e2:	6121                	addi	sp,sp,64
    e880c2e4:	8082                	ret
    e880c2e6:	0001                	nop
    e880c2e8:	008010ef          	jal	ra,e880d2f0 <fabs>
    e880c2ec:	000bf797          	auipc	a5,0xbf
    e880c2f0:	d747b787          	fld	fa5,-652(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880c2f4:	000c8797          	auipc	a5,0xc8
    e880c2f8:	d147b687          	fld	fa3,-748(a5) # e88d4008 <dhcp_discover_request_options+0x800>
    e880c2fc:	7ad576c3          	fmadd.d	fa3,fa0,fa3,fa5
    e880c300:	000c8797          	auipc	a5,0xc8
    e880c304:	cf07b707          	fld	fa4,-784(a5) # e88d3ff0 <dhcp_discover_request_options+0x7e8>
    e880c308:	000c8797          	auipc	a5,0xc8
    e880c30c:	ce07b787          	fld	fa5,-800(a5) # e88d3fe8 <dhcp_discover_request_options+0x7e0>
    e880c310:	477d                	li	a4,31
    e880c312:	c20697d3          	fcvt.w.d	a5,fa3,rtz
    e880c316:	d20786d3          	fcvt.d.w	fa3,a5
    e880c31a:	0007851b          	sext.w	a0,a5
    e880c31e:	52f6f54b          	fnmsub.d	fa0,fa3,fa5,fa0
    e880c322:	12e6f7d3          	fmul.d	fa5,fa3,fa4
    e880c326:	04a74563          	blt	a4,a0,e880c370 <__ieee754_rem_pio2+0x1f0>
    e880c32a:	0af57753          	fsub.d	fa4,fa0,fa5
    e880c32e:	fff7871b          	addiw	a4,a5,-1
    e880c332:	00093697          	auipc	a3,0x93
    e880c336:	6ee68693          	addi	a3,a3,1774 # e889fa20 <npio2_hw>
    e880c33a:	44e6c68b          	lrw	a3,a3,a4,2
    e880c33e:	e2070753          	fmv.x.d	a4,fa4
    e880c342:	02868b63          	beq	a3,s0,e880c378 <__ieee754_rem_pio2+0x1f8>
    e880c346:	e098                	sd	a4,0(s1)
    e880c348:	f2070753          	fmv.d.x	fa4,a4
    e880c34c:	0ae57553          	fsub.d	fa0,fa0,fa4
    e880c350:	0af57553          	fsub.d	fa0,fa0,fa5
    e880c354:	a488                	fsd	fa0,8(s1)
    e880c356:	e80958e3          	bgez	s2,e880c1e6 <__ieee754_rem_pio2+0x66>
    e880c35a:	22e717d3          	fneg.d	fa5,fa4
    e880c35e:	22a51553          	fneg.d	fa0,fa0
    e880c362:	40f0053b          	negw	a0,a5
    e880c366:	a09c                	fsd	fa5,0(s1)
    e880c368:	a488                	fsd	fa0,8(s1)
    e880c36a:	2501                	sext.w	a0,a0
    e880c36c:	bdad                	j	e880c1e6 <__ieee754_rem_pio2+0x66>
    e880c36e:	0001                	nop
    e880c370:	0af57753          	fsub.d	fa4,fa0,fa5
    e880c374:	e2070753          	fmv.x.d	a4,fa4
    e880c378:	4144541b          	sraiw	s0,s0,0x14
    e880c37c:	fb47368b          	extu	a3,a4,62,52
    e880c380:	40d406bb          	subw	a3,s0,a3
    e880c384:	4641                	li	a2,16
    e880c386:	fcd650e3          	bge	a2,a3,e880c346 <__ieee754_rem_pio2+0x1c6>
    e880c38a:	000c8717          	auipc	a4,0xc8
    e880c38e:	c6e73607          	fld	fa2,-914(a4) # e88d3ff8 <dhcp_discover_request_options+0x7f0>
    e880c392:	52c6f74b          	fnmsub.d	fa4,fa3,fa2,fa0
    e880c396:	000c8717          	auipc	a4,0xc8
    e880c39a:	c6a73787          	fld	fa5,-918(a4) # e88d4000 <dhcp_discover_request_options+0x7f8>
    e880c39e:	03100693          	li	a3,49
    e880c3a2:	0ae57553          	fsub.d	fa0,fa0,fa4
    e880c3a6:	52c6f54b          	fnmsub.d	fa0,fa3,fa2,fa0
    e880c3aa:	52f6f7c7          	fmsub.d	fa5,fa3,fa5,fa0
    e880c3ae:	0af77653          	fsub.d	fa2,fa4,fa5
    e880c3b2:	e2060753          	fmv.x.d	a4,fa2
    e880c3b6:	fb47360b          	extu	a2,a4,62,52
    e880c3ba:	9c11                	subw	s0,s0,a2
    e880c3bc:	0086c663          	blt	a3,s0,e880c3c8 <__ieee754_rem_pio2+0x248>
    e880c3c0:	a090                	fsd	fa2,0(s1)
    e880c3c2:	22e70553          	fmv.d	fa0,fa4
    e880c3c6:	b749                	j	e880c348 <__ieee754_rem_pio2+0x1c8>
    e880c3c8:	000c8717          	auipc	a4,0xc8
    e880c3cc:	c4873607          	fld	fa2,-952(a4) # e88d4010 <dhcp_discover_request_options+0x808>
    e880c3d0:	72c6f54b          	fnmsub.d	fa0,fa3,fa2,fa4
    e880c3d4:	000c8717          	auipc	a4,0xc8
    e880c3d8:	c4473787          	fld	fa5,-956(a4) # e88d4018 <dhcp_discover_request_options+0x810>
    e880c3dc:	0aa77753          	fsub.d	fa4,fa4,fa0
    e880c3e0:	72c6f74b          	fnmsub.d	fa4,fa3,fa2,fa4
    e880c3e4:	72f6f7c7          	fmsub.d	fa5,fa3,fa5,fa4
    e880c3e8:	0af57753          	fsub.d	fa4,fa0,fa5
    e880c3ec:	e2070753          	fmv.x.d	a4,fa4
    e880c3f0:	bf99                	j	e880c346 <__ieee754_rem_pio2+0x1c6>
    e880c3f2:	02f577d3          	fadd.d	fa5,fa0,fa5
    e880c3f6:	02e40063          	beq	s0,a4,e880c416 <__ieee754_rem_pio2+0x296>
    e880c3fa:	000c8797          	auipc	a5,0xc8
    e880c3fe:	bf67b707          	fld	fa4,-1034(a5) # e88d3ff0 <dhcp_discover_request_options+0x7e8>
    e880c402:	02e7f6d3          	fadd.d	fa3,fa5,fa4
    e880c406:	557d                	li	a0,-1
    e880c408:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e880c40c:	a094                	fsd	fa3,0(s1)
    e880c40e:	02e7f7d3          	fadd.d	fa5,fa5,fa4
    e880c412:	a49c                	fsd	fa5,8(s1)
    e880c414:	bbc9                	j	e880c1e6 <__ieee754_rem_pio2+0x66>
    e880c416:	000c8797          	auipc	a5,0xc8
    e880c41a:	be27b707          	fld	fa4,-1054(a5) # e88d3ff8 <dhcp_discover_request_options+0x7f0>
    e880c41e:	02e7f7d3          	fadd.d	fa5,fa5,fa4
    e880c422:	000c8797          	auipc	a5,0xc8
    e880c426:	bde7b707          	fld	fa4,-1058(a5) # e88d4000 <dhcp_discover_request_options+0x7f8>
    e880c42a:	557d                	li	a0,-1
    e880c42c:	02e7f6d3          	fadd.d	fa3,fa5,fa4
    e880c430:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e880c434:	a094                	fsd	fa3,0(s1)
    e880c436:	02e7f7d3          	fadd.d	fa5,fa5,fa4
    e880c43a:	a49c                	fsd	fa5,8(s1)
    e880c43c:	b36d                	j	e880c1e6 <__ieee754_rem_pio2+0x66>
	...

00000000e880c450 <__ieee754_sqrt>:
    e880c450:	e2050853          	fmv.x.d	a6,fa0
    e880c454:	7ff00737          	lui	a4,0x7ff00
    e880c458:	7ff005b7          	lui	a1,0x7ff00
    e880c45c:	fe08360b          	extu	a2,a6,63,32
    e880c460:	0006079b          	sext.w	a5,a2
    e880c464:	8f7d                	and	a4,a4,a5
    e880c466:	0008069b          	sext.w	a3,a6
    e880c46a:	1ab70963          	beq	a4,a1,e880c61c <__ieee754_sqrt+0x1cc>
    e880c46e:	12f05363          	blez	a5,e880c594 <__ieee754_sqrt+0x144>
    e880c472:	4146559b          	sraiw	a1,a2,0x14
    e880c476:	1c058163          	beqz	a1,e880c638 <__ieee754_sqrt+0x1e8>
    e880c47a:	4c07b60b          	extu	a2,a5,19,0
    e880c47e:	001007b7          	lui	a5,0x100
    e880c482:	8e5d                	or	a2,a2,a5
    e880c484:	c015859b          	addiw	a1,a1,-1023
    e880c488:	0016161b          	slliw	a2,a2,0x1
    e880c48c:	01f6d79b          	srliw	a5,a3,0x1f
    e880c490:	0016971b          	slliw	a4,a3,0x1
    e880c494:	0015f813          	andi	a6,a1,1
    e880c498:	9fb1                	addw	a5,a5,a2
    e880c49a:	853a                	mv	a0,a4
    e880c49c:	00080963          	beqz	a6,e880c4ae <__ieee754_sqrt+0x5e>
    e880c4a0:	0017979b          	slliw	a5,a5,0x1
    e880c4a4:	01f5551b          	srliw	a0,a0,0x1f
    e880c4a8:	0026971b          	slliw	a4,a3,0x2
    e880c4ac:	9fa9                	addw	a5,a5,a0
    e880c4ae:	4015de9b          	sraiw	t4,a1,0x1
    e880c4b2:	4f01                	li	t5,0
    e880c4b4:	45d9                	li	a1,22
    e880c4b6:	4681                	li	a3,0
    e880c4b8:	00200637          	lui	a2,0x200
    e880c4bc:	00000013          	nop
    e880c4c0:	00c688bb          	addw	a7,a3,a2
    e880c4c4:	01f7581b          	srliw	a6,a4,0x1f
    e880c4c8:	35fd                	addiw	a1,a1,-1
    e880c4ca:	0017171b          	slliw	a4,a4,0x1
    e880c4ce:	0117c863          	blt	a5,a7,e880c4de <__ieee754_sqrt+0x8e>
    e880c4d2:	411787bb          	subw	a5,a5,a7
    e880c4d6:	00c886bb          	addw	a3,a7,a2
    e880c4da:	00cf0f3b          	addw	t5,t5,a2
    e880c4de:	0017979b          	slliw	a5,a5,0x1
    e880c4e2:	00f807bb          	addw	a5,a6,a5
    e880c4e6:	8205                	srli	a2,a2,0x1
    e880c4e8:	fde1                	bnez	a1,e880c4c0 <__ieee754_sqrt+0x70>
    e880c4ea:	4e01                	li	t3,0
    e880c4ec:	02000813          	li	a6,32
    e880c4f0:	80000637          	lui	a2,0x80000
    e880c4f4:	a005                	j	e880c514 <__ieee754_sqrt+0xc4>
    e880c4f6:	0001                	nop
    e880c4f8:	10d78063          	beq	a5,a3,e880c5f8 <__ieee754_sqrt+0x1a8>
    e880c4fc:	01f7551b          	srliw	a0,a4,0x1f
    e880c500:	0017979b          	slliw	a5,a5,0x1
    e880c504:	387d                	addiw	a6,a6,-1
    e880c506:	0017171b          	slliw	a4,a4,0x1
    e880c50a:	9fa9                	addw	a5,a5,a0
    e880c50c:	7c16360b          	extu	a2,a2,31,1
    e880c510:	04080463          	beqz	a6,e880c558 <__ieee754_sqrt+0x108>
    e880c514:	00b6053b          	addw	a0,a2,a1
    e880c518:	88aa                	mv	a7,a0
    e880c51a:	fcf6dfe3          	bge	a3,a5,e880c4f8 <__ieee754_sqrt+0xa8>
    e880c51e:	00c505bb          	addw	a1,a0,a2
    e880c522:	8336                	mv	t1,a3
    e880c524:	0c054463          	bltz	a0,e880c5ec <__ieee754_sqrt+0x19c>
    e880c528:	9f95                	subw	a5,a5,a3
    e880c52a:	fff7869b          	addiw	a3,a5,-1
    e880c52e:	00a73533          	sltu	a0,a4,a0
    e880c532:	42a6978b          	mvnez	a5,a3,a0
    e880c536:	4117073b          	subw	a4,a4,a7
    e880c53a:	01f7551b          	srliw	a0,a4,0x1f
    e880c53e:	0017979b          	slliw	a5,a5,0x1
    e880c542:	387d                	addiw	a6,a6,-1
    e880c544:	01c60e3b          	addw	t3,a2,t3
    e880c548:	869a                	mv	a3,t1
    e880c54a:	0017171b          	slliw	a4,a4,0x1
    e880c54e:	9fa9                	addw	a5,a5,a0
    e880c550:	7c16360b          	extu	a2,a2,31,1
    e880c554:	fc0810e3          	bnez	a6,e880c514 <__ieee754_sqrt+0xc4>
    e880c558:	8fd9                	or	a5,a5,a4
    e880c55a:	ebcd                	bnez	a5,e880c60c <__ieee754_sqrt+0x1bc>
    e880c55c:	7c1e380b          	extu	a6,t3,31,1
    e880c560:	401f579b          	sraiw	a5,t5,0x1
    e880c564:	80000737          	lui	a4,0x80000
    e880c568:	3fe006b7          	lui	a3,0x3fe00
    e880c56c:	00e86733          	or	a4,a6,a4
    e880c570:	9ebd                	addw	a3,a3,a5
    e880c572:	001f7793          	andi	a5,t5,1
    e880c576:	2701                	sext.w	a4,a4
    e880c578:	014e959b          	slliw	a1,t4,0x14
    e880c57c:	42f7180b          	mvnez	a6,a4,a5
    e880c580:	00d587bb          	addw	a5,a1,a3
    e880c584:	7c08380b          	extu	a6,a6,31,0
    e880c588:	1782                	slli	a5,a5,0x20
    e880c58a:	0107e833          	or	a6,a5,a6
    e880c58e:	f2080553          	fmv.d.x	fa0,a6
    e880c592:	8082                	ret
    e880c594:	7807b70b          	extu	a4,a5,30,0
    e880c598:	8f55                	or	a4,a4,a3
    e880c59a:	db75                	beqz	a4,e880c58e <__ieee754_sqrt+0x13e>
    e880c59c:	e7d9                	bnez	a5,e880c62a <__ieee754_sqrt+0x1da>
    e880c59e:	0001                	nop
    e880c5a0:	7cb6b58b          	extu	a1,a3,31,11
    e880c5a4:	37ad                	addiw	a5,a5,-21
    e880c5a6:	0156969b          	slliw	a3,a3,0x15
    e880c5aa:	872e                	mv	a4,a1
    e880c5ac:	d9f5                	beqz	a1,e880c5a0 <__ieee754_sqrt+0x150>
    e880c5ae:	fd45b60b          	extu	a2,a1,63,20
    e880c5b2:	ea41                	bnez	a2,e880c642 <__ieee754_sqrt+0x1f2>
    e880c5b4:	4601                	li	a2,0
    e880c5b6:	00100837          	lui	a6,0x100
    e880c5ba:	a011                	j	e880c5be <__ieee754_sqrt+0x16e>
    e880c5bc:	862a                	mv	a2,a0
    e880c5be:	0017171b          	slliw	a4,a4,0x1
    e880c5c2:	010775b3          	and	a1,a4,a6
    e880c5c6:	0016051b          	addiw	a0,a2,1
    e880c5ca:	d9ed                	beqz	a1,e880c5bc <__ieee754_sqrt+0x16c>
    e880c5cc:	02000893          	li	a7,32
    e880c5d0:	8836                	mv	a6,a3
    e880c5d2:	40a888bb          	subw	a7,a7,a0
    e880c5d6:	85ba                	mv	a1,a4
    e880c5d8:	00a696bb          	sllw	a3,a3,a0
    e880c5dc:	0118573b          	srlw	a4,a6,a7
    e880c5e0:	8f4d                	or	a4,a4,a1
    e880c5e2:	40c785bb          	subw	a1,a5,a2
    e880c5e6:	0007079b          	sext.w	a5,a4
    e880c5ea:	bd41                	j	e880c47a <__ieee754_sqrt+0x2a>
    e880c5ec:	8336                	mv	t1,a3
    e880c5ee:	f205cde3          	bltz	a1,e880c528 <__ieee754_sqrt+0xd8>
    e880c5f2:	0016831b          	addiw	t1,a3,1
    e880c5f6:	bf0d                	j	e880c528 <__ieee754_sqrt+0xd8>
    e880c5f8:	f0a762e3          	bltu	a4,a0,e880c4fc <__ieee754_sqrt+0xac>
    e880c5fc:	00c505bb          	addw	a1,a0,a2
    e880c600:	fe0546e3          	bltz	a0,e880c5ec <__ieee754_sqrt+0x19c>
    e880c604:	833e                	mv	t1,a5
    e880c606:	4781                	li	a5,0
    e880c608:	b73d                	j	e880c536 <__ieee754_sqrt+0xe6>
    e880c60a:	0001                	nop
    e880c60c:	57fd                	li	a5,-1
    e880c60e:	02fe0863          	beq	t3,a5,e880c63e <__ieee754_sqrt+0x1ee>
    e880c612:	001e081b          	addiw	a6,t3,1
    e880c616:	7c18380b          	extu	a6,a6,31,1
    e880c61a:	b799                	j	e880c560 <__ieee754_sqrt+0x110>
    e880c61c:	52a577c3          	fmadd.d	fa5,fa0,fa0,fa0
    e880c620:	e2078853          	fmv.x.d	a6,fa5
    e880c624:	f2080553          	fmv.d.x	fa0,a6
    e880c628:	8082                	ret
    e880c62a:	0aa577d3          	fsub.d	fa5,fa0,fa0
    e880c62e:	1af7f7d3          	fdiv.d	fa5,fa5,fa5
    e880c632:	e2078853          	fmv.x.d	a6,fa5
    e880c636:	bfa1                	j	e880c58e <__ieee754_sqrt+0x13e>
    e880c638:	873e                	mv	a4,a5
    e880c63a:	4781                	li	a5,0
    e880c63c:	bfa5                	j	e880c5b4 <__ieee754_sqrt+0x164>
    e880c63e:	2f05                	addiw	t5,t5,1
    e880c640:	b705                	j	e880c560 <__ieee754_sqrt+0x110>
    e880c642:	8836                	mv	a6,a3
    e880c644:	02000893          	li	a7,32
    e880c648:	567d                	li	a2,-1
    e880c64a:	bf49                	j	e880c5dc <__ieee754_sqrt+0x18c>
	...

00000000e880c660 <__kernel_cos>:
    e880c660:	e20507d3          	fmv.x.d	a5,fa0
    e880c664:	3e4006b7          	lui	a3,0x3e400
    e880c668:	fa07b70b          	extu	a4,a5,62,32
    e880c66c:	08d75063          	bge	a4,a3,e880c6ec <__kernel_cos+0x8c>
    e880c670:	c2051753          	fcvt.w.d	a4,fa0,rtz
    e880c674:	2701                	sext.w	a4,a4
    e880c676:	12070363          	beqz	a4,e880c79c <__kernel_cos+0x13c>
    e880c67a:	12a576d3          	fmul.d	fa3,fa0,fa0
    e880c67e:	000c8717          	auipc	a4,0xc8
    e880c682:	9c273087          	fld	ft1,-1598(a4) # e88d4040 <dhcp_discover_request_options+0x838>
    e880c686:	000c8717          	auipc	a4,0xc8
    e880c68a:	9b273507          	fld	fa0,-1614(a4) # e88d4038 <dhcp_discover_request_options+0x830>
    e880c68e:	000c8717          	auipc	a4,0xc8
    e880c692:	9ba73007          	fld	ft0,-1606(a4) # e88d4048 <dhcp_discover_request_options+0x840>
    e880c696:	000c8717          	auipc	a4,0xc8
    e880c69a:	9ba73607          	fld	fa2,-1606(a4) # e88d4050 <dhcp_discover_request_options+0x848>
    e880c69e:	000c8717          	auipc	a4,0xc8
    e880c6a2:	9ba73707          	fld	fa4,-1606(a4) # e88d4058 <dhcp_discover_request_options+0x850>
    e880c6a6:	000c8717          	auipc	a4,0xc8
    e880c6aa:	9ba73787          	fld	fa5,-1606(a4) # e88d4060 <dhcp_discover_request_options+0x858>
    e880c6ae:	0aa6f543          	fmadd.d	fa0,fa3,fa0,ft1
    e880c6b2:	02a6f543          	fmadd.d	fa0,fa3,fa0,ft0
    e880c6b6:	62a6f543          	fmadd.d	fa0,fa3,fa0,fa2
    e880c6ba:	72a6f543          	fmadd.d	fa0,fa3,fa0,fa4
    e880c6be:	7aa6f7c3          	fmadd.d	fa5,fa3,fa0,fa5
    e880c6c2:	12d7f7d3          	fmul.d	fa5,fa5,fa3
    e880c6c6:	f2078753          	fmv.d.x	fa4,a5
    e880c6ca:	000b2797          	auipc	a5,0xb2
    e880c6ce:	7ae7b507          	fld	fa0,1966(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880c6d2:	12b775d3          	fmul.d	fa1,fa4,fa1
    e880c6d6:	000bf797          	auipc	a5,0xbf
    e880c6da:	98a7b707          	fld	fa4,-1654(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880c6de:	5af6f7c7          	fmsub.d	fa5,fa3,fa5,fa1
    e880c6e2:	7ae6f7c7          	fmsub.d	fa5,fa3,fa4,fa5
    e880c6e6:	0af57553          	fsub.d	fa0,fa0,fa5
    e880c6ea:	8082                	ret
    e880c6ec:	12a576d3          	fmul.d	fa3,fa0,fa0
    e880c6f0:	000c8697          	auipc	a3,0xc8
    e880c6f4:	9486b707          	fld	fa4,-1720(a3) # e88d4038 <dhcp_discover_request_options+0x830>
    e880c6f8:	000c8697          	auipc	a3,0xc8
    e880c6fc:	9486b087          	fld	ft1,-1720(a3) # e88d4040 <dhcp_discover_request_options+0x838>
    e880c700:	000c8697          	auipc	a3,0xc8
    e880c704:	9486b787          	fld	fa5,-1720(a3) # e88d4048 <dhcp_discover_request_options+0x840>
    e880c708:	000c8697          	auipc	a3,0xc8
    e880c70c:	9486b007          	fld	ft0,-1720(a3) # e88d4050 <dhcp_discover_request_options+0x848>
    e880c710:	000c8697          	auipc	a3,0xc8
    e880c714:	9486b507          	fld	fa0,-1720(a3) # e88d4058 <dhcp_discover_request_options+0x850>
    e880c718:	000c8697          	auipc	a3,0xc8
    e880c71c:	9486b607          	fld	fa2,-1720(a3) # e88d4060 <dhcp_discover_request_options+0x858>
    e880c720:	0ae6f743          	fmadd.d	fa4,fa3,fa4,ft1
    e880c724:	3fd336b7          	lui	a3,0x3fd33
    e880c728:	33268693          	addi	a3,a3,818 # 3fd33332 <memcmp-0xa8acccce>
    e880c72c:	7ad777c3          	fmadd.d	fa5,fa4,fa3,fa5
    e880c730:	02d7f7c3          	fmadd.d	fa5,fa5,fa3,ft0
    e880c734:	52d7f7c3          	fmadd.d	fa5,fa5,fa3,fa0
    e880c738:	62d7f7c3          	fmadd.d	fa5,fa5,fa3,fa2
    e880c73c:	12d7f7d3          	fmul.d	fa5,fa5,fa3
    e880c740:	f8e6d3e3          	bge	a3,a4,e880c6c6 <__kernel_cos+0x66>
    e880c744:	3fe906b7          	lui	a3,0x3fe90
    e880c748:	04e6c063          	blt	a3,a4,e880c788 <__kernel_cos+0x128>
    e880c74c:	ffe006b7          	lui	a3,0xffe00
    e880c750:	9f35                	addw	a4,a4,a3
    e880c752:	1702                	slli	a4,a4,0x20
    e880c754:	f2070653          	fmv.d.x	fa2,a4
    e880c758:	000b2697          	auipc	a3,0xb2
    e880c75c:	7206b507          	fld	fa0,1824(a3) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880c760:	0ac57553          	fsub.d	fa0,fa0,fa2
    e880c764:	f2078753          	fmv.d.x	fa4,a5
    e880c768:	12b775d3          	fmul.d	fa1,fa4,fa1
    e880c76c:	000bf797          	auipc	a5,0xbf
    e880c770:	8f47b707          	fld	fa4,-1804(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880c774:	62e6f747          	fmsub.d	fa4,fa3,fa4,fa2
    e880c778:	5af6f7c7          	fmsub.d	fa5,fa3,fa5,fa1
    e880c77c:	0af777d3          	fsub.d	fa5,fa4,fa5
    e880c780:	0af57553          	fsub.d	fa0,fa0,fa5
    e880c784:	8082                	ret
    e880c786:	0001                	nop
    e880c788:	000c8717          	auipc	a4,0xc8
    e880c78c:	8a073507          	fld	fa0,-1888(a4) # e88d4028 <dhcp_discover_request_options+0x820>
    e880c790:	000c8717          	auipc	a4,0xc8
    e880c794:	8a073607          	fld	fa2,-1888(a4) # e88d4030 <dhcp_discover_request_options+0x828>
    e880c798:	b7f1                	j	e880c764 <__kernel_cos+0x104>
    e880c79a:	0001                	nop
    e880c79c:	000b2797          	auipc	a5,0xb2
    e880c7a0:	6dc7b507          	fld	fa0,1756(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880c7a4:	8082                	ret
	...

00000000e880c7b0 <__kernel_rem_pio2>:
    e880c7b0:	d0010113          	addi	sp,sp,-768
    e880c7b4:	2e813823          	sd	s0,752(sp)
    e880c7b8:	2f213023          	sd	s2,736(sp)
    e880c7bc:	2b813823          	sd	s8,688(sp)
    e880c7c0:	2b913423          	sd	s9,680(sp)
    e880c7c4:	29b13c23          	sd	s11,664(sp)
    e880c7c8:	e43a                	sd	a4,8(sp)
    e880c7ca:	e02e                	sd	a1,0(sp)
    e880c7cc:	2e113c23          	sd	ra,760(sp)
    e880c7d0:	2e913423          	sd	s1,744(sp)
    e880c7d4:	2d313c23          	sd	s3,728(sp)
    e880c7d8:	2d413823          	sd	s4,720(sp)
    e880c7dc:	2d513423          	sd	s5,712(sp)
    e880c7e0:	2d613023          	sd	s6,704(sp)
    e880c7e4:	2b713c23          	sd	s7,696(sp)
    e880c7e8:	2ba13023          	sd	s10,672(sp)
    e880c7ec:	28813427          	fsd	fs0,648(sp)
    e880c7f0:	28913027          	fsd	fs1,640(sp)
    e880c7f4:	27213c27          	fsd	fs2,632(sp)
    e880c7f8:	27313827          	fsd	fs3,624(sp)
    e880c7fc:	27413427          	fsd	fs4,616(sp)
    e880c800:	27513027          	fsd	fs5,608(sp)
    e880c804:	25613c27          	fsd	fs6,600(sp)
    e880c808:	843a                	mv	s0,a4
    e880c80a:	fff68c1b          	addiw	s8,a3,-1
    e880c80e:	8936                	mv	s2,a3
    e880c810:	00093597          	auipc	a1,0x93
    e880c814:	39858593          	addi	a1,a1,920 # e889fba8 <init_jk>
    e880c818:	56b1                	li	a3,-20
    e880c81a:	8762                	mv	a4,s8
    e880c81c:	8caa                	mv	s9,a0
    e880c81e:	4485cd8b          	lrw	s11,a1,s0,2
    e880c822:	64d64763          	blt	a2,a3,e880ce70 <__kernel_rem_pio2+0x6c0>
    e880c826:	46e1                	li	a3,24
    e880c828:	ffd6059b          	addiw	a1,a2,-3
    e880c82c:	02d5c5bb          	divw	a1,a1,a3
    e880c830:	0015869b          	addiw	a3,a1,1
    e880c834:	0026951b          	slliw	a0,a3,0x2
    e880c838:	9e89                	subw	a3,a3,a0
    e880c83a:	0036969b          	slliw	a3,a3,0x3
    e880c83e:	9eb1                	addw	a3,a3,a2
    e880c840:	c836                	sw	a3,16(sp)
    e880c842:	8b36                	mv	s6,a3
    e880c844:	01b706bb          	addw	a3,a4,s11
    e880c848:	40e5873b          	subw	a4,a1,a4
    e880c84c:	0206c963          	bltz	a3,e880c87e <__kernel_rem_pio2+0xce>
    e880c850:	0685                	addi	a3,a3,1
    e880c852:	40e00533          	neg	a0,a4
    e880c856:	00e68633          	add	a2,a3,a4
    e880c85a:	1894                	addi	a3,sp,112
    e880c85c:	06a6950b          	addsl	a0,a3,a0,3
    e880c860:	02071693          	slli	a3,a4,0x20
    e880c864:	f20007d3          	fmv.d.x	fa5,zero
    e880c868:	0006c663          	bltz	a3,e880c874 <__kernel_rem_pio2+0xc4>
    e880c86c:	44e7c68b          	lrw	a3,a5,a4,2
    e880c870:	d20687d3          	fcvt.d.w	fa5,a3
    e880c874:	66e5778b          	fsrd	fa5,a0,a4,3
    e880c878:	0705                	addi	a4,a4,1
    e880c87a:	fec713e3          	bne	a4,a2,e880c860 <__kernel_rem_pio2+0xb0>
    e880c87e:	1b010d13          	addi	s10,sp,432
    e880c882:	040dc963          	bltz	s11,e880c8d4 <__kernel_rem_pio2+0x124>
    e880c886:	002d8893          	addi	a7,s11,2
    e880c88a:	4505                	li	a0,1
    e880c88c:	1b010d13          	addi	s10,sp,432
    e880c890:	ffe9031b          	addiw	t1,s2,-2
    e880c894:	00000013          	nop
    e880c898:	f20007d3          	fmv.d.x	fa5,zero
    e880c89c:	020c4563          	bltz	s8,e880c8c6 <__kernel_rem_pio2+0x116>
    e880c8a0:	1898                	addi	a4,sp,112
    e880c8a2:	00a306bb          	addw	a3,t1,a0
    e880c8a6:	06d7168b          	addsl	a3,a4,a3,3
    e880c8aa:	4701                	li	a4,0
    e880c8ac:	00000013          	nop
    e880c8b0:	66ece68b          	flrd	fa3,s9,a4,3
    e880c8b4:	2298                	fld	fa4,0(a3)
    e880c8b6:	0705                	addi	a4,a4,1
    e880c8b8:	0007061b          	sext.w	a2,a4
    e880c8bc:	7ae6f7c3          	fmadd.d	fa5,fa3,fa4,fa5
    e880c8c0:	16e1                	addi	a3,a3,-8
    e880c8c2:	fecc57e3          	bge	s8,a2,e880c8b0 <__kernel_rem_pio2+0x100>
    e880c8c6:	06ad170b          	addsl	a4,s10,a0,3
    e880c8ca:	fef73c27          	fsd	fa5,-8(a4)
    e880c8ce:	0505                	addi	a0,a0,1
    e880c8d0:	fd1514e3          	bne	a0,a7,e880c898 <__kernel_rem_pio2+0xe8>
    e880c8d4:	04b79a0b          	addsl	s4,a5,a1,2
    e880c8d8:	000bf797          	auipc	a5,0xbf
    e880c8dc:	8787b487          	fld	fs1,-1928(a5) # e88cb150 <kAirPlayReceiverServerClass+0x1758>
    e880c8e0:	000c0797          	auipc	a5,0xc0
    e880c8e4:	7b07b407          	fld	fs0,1968(a5) # e88cd090 <kCurve25519BasePoint+0xd0>
    e880c8e8:	000b2797          	auipc	a5,0xb2
    e880c8ec:	5907b907          	fld	fs2,1424(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880c8f0:	000c7797          	auipc	a5,0xc7
    e880c8f4:	7807bb07          	fld	fs6,1920(a5) # e88d4070 <dhcp_discover_request_options+0x868>
    e880c8f8:	000c7797          	auipc	a5,0xc7
    e880c8fc:	7287ba87          	fld	fs5,1832(a5) # e88d4020 <dhcp_discover_request_options+0x818>
    e880c900:	fffd871b          	addiw	a4,s11,-1
    e880c904:	010007b7          	lui	a5,0x1000
    e880c908:	1014                	addi	a3,sp,32
    e880c90a:	fff7841b          	addiw	s0,a5,-1
    e880c90e:	05b6998b          	addsl	s3,a3,s11,2
    e880c912:	8aee                	mv	s5,s11
    e880c914:	000be797          	auipc	a5,0xbe
    e880c918:	74c7b987          	fld	fs3,1868(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880c91c:	00271493          	slli	s1,a4,0x2
    e880c920:	003a9793          	slli	a5,s5,0x3
    e880c924:	675d650b          	flrd	fa0,s10,s5,3
    e880c928:	05505263          	blez	s5,e880c96c <__kernel_rem_pio2+0x1bc>
    e880c92c:	17e1                	addi	a5,a5,-8
    e880c92e:	fffa861b          	addiw	a2,s5,-1
    e880c932:	7c06360b          	extu	a2,a2,31,0
    e880c936:	00fd0733          	add	a4,s10,a5
    e880c93a:	105c                	addi	a5,sp,36
    e880c93c:	1014                	addi	a3,sp,32
    e880c93e:	04c7960b          	addsl	a2,a5,a2,2
    e880c942:	0001                	nop
    e880c944:	00000013          	nop
    e880c948:	136577d3          	fmul.d	fa5,fa0,fs6
    e880c94c:	2314                	fld	fa3,0(a4)
    e880c94e:	1761                	addi	a4,a4,-8
    e880c950:	c20797d3          	fcvt.w.d	a5,fa5,rtz
    e880c954:	d20787d3          	fcvt.d.w	fa5,a5
    e880c958:	5357f74b          	fnmsub.d	fa4,fa5,fs5,fa0
    e880c95c:	02d7f553          	fadd.d	fa0,fa5,fa3
    e880c960:	c20717d3          	fcvt.w.d	a5,fa4,rtz
    e880c964:	5846d78b          	swia	a5,(a3),4,0
    e880c968:	fec690e3          	bne	a3,a2,e880c948 <__kernel_rem_pio2+0x198>
    e880c96c:	855a                	mv	a0,s6
    e880c96e:	4d3000ef          	jal	ra,e880d640 <scalbn>
    e880c972:	22a50a53          	fmv.d	fs4,fa0
    e880c976:	12957553          	fmul.d	fa0,fa0,fs1
    e880c97a:	1d7000ef          	jal	ra,e880d350 <floor>
    e880c97e:	a285754b          	fnmsub.d	fa0,fa0,fs0,fs4
    e880c982:	c2051753          	fcvt.w.d	a4,fa0,rtz
    e880c986:	d2070a53          	fcvt.d.w	fs4,a4
    e880c98a:	00070b9b          	sext.w	s7,a4
    e880c98e:	0b457a53          	fsub.d	fs4,fa0,fs4
    e880c992:	0f605e63          	blez	s6,e880ca8e <__kernel_rem_pio2+0x2de>
    e880c996:	fffa869b          	addiw	a3,s5,-1
    e880c99a:	101c                	addi	a5,sp,32
    e880c99c:	44d7c50b          	lrw	a0,a5,a3,2
    e880c9a0:	47e1                	li	a5,24
    e880c9a2:	416787bb          	subw	a5,a5,s6
    e880c9a6:	40f55e3b          	sraw	t3,a0,a5
    e880c9aa:	00fe163b          	sllw	a2,t3,a5
    e880c9ae:	40c5063b          	subw	a2,a0,a2
    e880c9b2:	47dd                	li	a5,23
    e880c9b4:	01c70bbb          	addw	s7,a4,t3
    e880c9b8:	1018                	addi	a4,sp,32
    e880c9ba:	416787bb          	subw	a5,a5,s6
    e880c9be:	44d7560b          	srw	a2,a4,a3,2
    e880c9c2:	40f6563b          	sraw	a2,a2,a5
    e880c9c6:	0cc04f63          	bgtz	a2,e880caa4 <__kernel_rem_pio2+0x2f4>
    e880c9ca:	f20007d3          	fmv.d.x	fa5,zero
    e880c9ce:	a2fa27d3          	feq.d	a5,fs4,fa5
    e880c9d2:	14078563          	beqz	a5,e880cb1c <__kernel_rem_pio2+0x36c>
    e880c9d6:	fffa831b          	addiw	t1,s5,-1
    e880c9da:	03b34963          	blt	t1,s11,e880ca0c <__kernel_rem_pio2+0x25c>
    e880c9de:	fffdc713          	not	a4,s11
    e880c9e2:	0157073b          	addw	a4,a4,s5
    e880c9e6:	7c07370b          	extu	a4,a4,31,0
    e880c9ea:	ffda8513          	addi	a0,s5,-3
    e880c9ee:	8d19                	sub	a0,a0,a4
    e880c9f0:	ffea879b          	addiw	a5,s5,-2
    e880c9f4:	4701                	li	a4,0
    e880c9f6:	0001                	nop
    e880c9f8:	1014                	addi	a3,sp,32
    e880c9fa:	04f6968b          	addsl	a3,a3,a5,2
    e880c9fe:	42d4                	lw	a3,4(a3)
    e880ca00:	17fd                	addi	a5,a5,-1
    e880ca02:	8f55                	or	a4,a4,a3
    e880ca04:	fea79ae3          	bne	a5,a0,e880c9f8 <__kernel_rem_pio2+0x248>
    e880ca08:	30071663          	bnez	a4,e880cd14 <__kernel_rem_pio2+0x564>
    e880ca0c:	101c                	addi	a5,sp,32
    e880ca0e:	4097c78b          	lrw	a5,a5,s1,0
    e880ca12:	2e079d63          	bnez	a5,e880cd0c <__kernel_rem_pio2+0x55c>
    e880ca16:	87ce                	mv	a5,s3
    e880ca18:	4705                	li	a4,1
    e880ca1a:	0001                	nop
    e880ca1c:	00000013          	nop
    e880ca20:	17f1                	addi	a5,a5,-4
    e880ca22:	ffc7a683          	lw	a3,-4(a5)
    e880ca26:	2705                	addiw	a4,a4,1
    e880ca28:	dee5                	beqz	a3,e880ca20 <__kernel_rem_pio2+0x270>
    e880ca2a:	00ea833b          	addw	t1,s5,a4
    e880ca2e:	001a861b          	addiw	a2,s5,1
    e880ca32:	00cc0533          	add	a0,s8,a2
    e880ca36:	015908b3          	add	a7,s2,s5
    e880ca3a:	00cc07bb          	addw	a5,s8,a2
    e880ca3e:	1898                	addi	a4,sp,112
    e880ca40:	06a7150b          	addsl	a0,a4,a0,3
    e880ca44:	411788b3          	sub	a7,a5,a7
    e880ca48:	44ca478b          	lrw	a5,s4,a2,2
    e880ca4c:	f2000753          	fmv.d.x	fa4,zero
    e880ca50:	d20787d3          	fcvt.d.w	fa5,a5
    e880ca54:	6715778b          	fsrd	fa5,a0,a7,3
    e880ca58:	020c4163          	bltz	s8,e880ca7a <__kernel_rem_pio2+0x2ca>
    e880ca5c:	872a                	mv	a4,a0
    e880ca5e:	4781                	li	a5,0
    e880ca60:	a019                	j	e880ca66 <__kernel_rem_pio2+0x2b6>
    e880ca62:	0001                	nop
    e880ca64:	231c                	fld	fa5,0(a4)
    e880ca66:	66fce68b          	flrd	fa3,s9,a5,3
    e880ca6a:	0785                	addi	a5,a5,1
    e880ca6c:	0007869b          	sext.w	a3,a5
    e880ca70:	72f6f743          	fmadd.d	fa4,fa3,fa5,fa4
    e880ca74:	1761                	addi	a4,a4,-8
    e880ca76:	fedc57e3          	bge	s8,a3,e880ca64 <__kernel_rem_pio2+0x2b4>
    e880ca7a:	66cd770b          	fsrd	fa4,s10,a2,3
    e880ca7e:	0605                	addi	a2,a2,1
    e880ca80:	0006079b          	sext.w	a5,a2
    e880ca84:	0521                	addi	a0,a0,8
    e880ca86:	fcf351e3          	bge	t1,a5,e880ca48 <__kernel_rem_pio2+0x298>
    e880ca8a:	8a9a                	mv	s5,t1
    e880ca8c:	bd51                	j	e880c920 <__kernel_rem_pio2+0x170>
    e880ca8e:	260b1263          	bnez	s6,e880ccf2 <__kernel_rem_pio2+0x542>
    e880ca92:	fffa879b          	addiw	a5,s5,-1
    e880ca96:	1018                	addi	a4,sp,32
    e880ca98:	44f7460b          	lrw	a2,a4,a5,2
    e880ca9c:	4176561b          	sraiw	a2,a2,0x17
    e880caa0:	f2c055e3          	blez	a2,e880c9ca <__kernel_rem_pio2+0x21a>
    e880caa4:	2b85                	addiw	s7,s7,1
    e880caa6:	3d505863          	blez	s5,e880ce76 <__kernel_rem_pio2+0x6c6>
    e880caaa:	5702                	lw	a4,32(sp)
    e880caac:	4785                	li	a5,1
    e880caae:	20071063          	bnez	a4,e880ccae <__kernel_rem_pio2+0x4fe>
    e880cab2:	00fa8d63          	beq	s5,a5,e880cacc <__kernel_rem_pio2+0x31c>
    e880cab6:	1048                	addi	a0,sp,36
    e880cab8:	4685                	li	a3,1
    e880caba:	4118                	lw	a4,0(a0)
    e880cabc:	0016879b          	addiw	a5,a3,1
    e880cac0:	0511                	addi	a0,a0,4
    e880cac2:	1e071763          	bnez	a4,e880ccb0 <__kernel_rem_pio2+0x500>
    e880cac6:	86be                	mv	a3,a5
    e880cac8:	fefa99e3          	bne	s5,a5,e880caba <__kernel_rem_pio2+0x30a>
    e880cacc:	03605263          	blez	s6,e880caf0 <__kernel_rem_pio2+0x340>
    e880cad0:	4785                	li	a5,1
    e880cad2:	38fb0463          	beq	s6,a5,e880ce5a <__kernel_rem_pio2+0x6aa>
    e880cad6:	4789                	li	a5,2
    e880cad8:	00fb1c63          	bne	s6,a5,e880caf0 <__kernel_rem_pio2+0x340>
    e880cadc:	fffa869b          	addiw	a3,s5,-1
    e880cae0:	101c                	addi	a5,sp,32
    e880cae2:	44d7c78b          	lrw	a5,a5,a3,2
    e880cae6:	100c                	addi	a1,sp,32
    e880cae8:	5407b78b          	extu	a5,a5,21,0
    e880caec:	44d5d78b          	srw	a5,a1,a3,2
    e880caf0:	4789                	li	a5,2
    e880caf2:	ecf61ce3          	bne	a2,a5,e880c9ca <__kernel_rem_pio2+0x21a>
    e880caf6:	0b497a53          	fsub.d	fs4,fs2,fs4
    e880cafa:	ec0708e3          	beqz	a4,e880c9ca <__kernel_rem_pio2+0x21a>
    e880cafe:	23290553          	fmv.d	fa0,fs2
    e880cb02:	855a                	mv	a0,s6
    e880cb04:	ec32                	sd	a2,24(sp)
    e880cb06:	33b000ef          	jal	ra,e880d640 <scalbn>
    e880cb0a:	0aaa7a53          	fsub.d	fs4,fs4,fa0
    e880cb0e:	f20007d3          	fmv.d.x	fa5,zero
    e880cb12:	6662                	ld	a2,24(sp)
    e880cb14:	a2fa27d3          	feq.d	a5,fs4,fa5
    e880cb18:	ea079fe3          	bnez	a5,e880c9d6 <__kernel_rem_pio2+0x226>
    e880cb1c:	4442                	lw	s0,16(sp)
    e880cb1e:	234a0553          	fmv.d	fa0,fs4
    e880cb22:	ec32                	sd	a2,24(sp)
    e880cb24:	4080053b          	negw	a0,s0
    e880cb28:	2501                	sext.w	a0,a0
    e880cb2a:	317000ef          	jal	ra,e880d640 <scalbn>
    e880cb2e:	000c7797          	auipc	a5,0xc7
    e880cb32:	4f27b687          	fld	fa3,1266(a5) # e88d4020 <dhcp_discover_request_options+0x818>
    e880cb36:	a2a687d3          	fle.d	a5,fa3,fa0
    e880cb3a:	6662                	ld	a2,24(sp)
    e880cb3c:	32078f63          	beqz	a5,e880ce7a <__kernel_rem_pio2+0x6ca>
    e880cb40:	000c7797          	auipc	a5,0xc7
    e880cb44:	5307b707          	fld	fa4,1328(a5) # e88d4070 <dhcp_discover_request_options+0x868>
    e880cb48:	12e57753          	fmul.d	fa4,fa0,fa4
    e880cb4c:	1014                	addi	a3,sp,32
    e880cb4e:	001a831b          	addiw	t1,s5,1
    e880cb52:	01840b1b          	addiw	s6,s0,24
    e880cb56:	c20717d3          	fcvt.w.d	a5,fa4,rtz
    e880cb5a:	d20787d3          	fcvt.d.w	fa5,a5
    e880cb5e:	52d7f7cb          	fnmsub.d	fa5,fa5,fa3,fa0
    e880cb62:	c2079753          	fcvt.w.d	a4,fa5,rtz
    e880cb66:	4556d70b          	srw	a4,a3,s5,2
    e880cb6a:	4466d78b          	srw	a5,a3,t1,2
    e880cb6e:	23290553          	fmv.d	fa0,fs2
    e880cb72:	855a                	mv	a0,s6
    e880cb74:	ec1a                	sd	t1,24(sp)
    e880cb76:	e832                	sd	a2,16(sp)
    e880cb78:	2c9000ef          	jal	ra,e880d640 <scalbn>
    e880cb7c:	fa61460b          	ldd	a2,t1,(sp),1,4
    e880cb80:	1c034663          	bltz	t1,e880cd4c <__kernel_rem_pio2+0x59c>
    e880cb84:	fff3089b          	addiw	a7,t1,-1
    e880cb88:	5ef9                	li	t4,-2
    e880cb8a:	8746                	mv	a4,a7
    e880cb8c:	000c7797          	auipc	a5,0xc7
    e880cb90:	4e47b707          	fld	fa4,1252(a5) # e88d4070 <dhcp_discover_request_options+0x868>
    e880cb94:	00000013          	nop
    e880cb98:	101c                	addi	a5,sp,32
    e880cb9a:	04e7978b          	addsl	a5,a5,a4,2
    e880cb9e:	43dc                	lw	a5,4(a5)
    e880cba0:	06ed168b          	addsl	a3,s10,a4,3
    e880cba4:	177d                	addi	a4,a4,-1
    e880cba6:	d20787d3          	fcvt.d.w	fa5,a5
    e880cbaa:	12a7f7d3          	fmul.d	fa5,fa5,fa0
    e880cbae:	12e57553          	fmul.d	fa0,fa0,fa4
    e880cbb2:	a69c                	fsd	fa5,8(a3)
    e880cbb4:	ffd712e3          	bne	a4,t4,e880cb98 <__kernel_rem_pio2+0x3e8>
    e880cbb8:	066d168b          	addsl	a3,s10,t1,3
    e880cbbc:	16e1                	addi	a3,a3,-8
    e880cbbe:	4801                	li	a6,0
    e880cbc0:	11010f13          	addi	t5,sp,272
    e880cbc4:	000c7797          	auipc	a5,0xc7
    e880cbc8:	4a47b607          	fld	fa2,1188(a5) # e88d4068 <dhcp_discover_request_options+0x860>
    e880cbcc:	00093517          	auipc	a0,0x93
    e880cbd0:	fec50513          	addi	a0,a0,-20 # e889fbb8 <PIo2>
    e880cbd4:	040dc163          	bltz	s11,e880cc16 <__kernel_rem_pio2+0x466>
    e880cbd8:	0008059b          	sext.w	a1,a6
    e880cbdc:	4785                	li	a5,1
    e880cbde:	22c60753          	fmv.d	fa4,fa2
    e880cbe2:	f20007d3          	fmv.d.x	fa5,zero
    e880cbe6:	a031                	j	e880cbf2 <__kernel_rem_pio2+0x442>
    e880cbe8:	00e5cd63          	blt	a1,a4,e880cc02 <__kernel_rem_pio2+0x452>
    e880cbec:	66f5670b          	flrd	fa4,a0,a5,3
    e880cbf0:	0785                	addi	a5,a5,1
    e880cbf2:	66f6e68b          	flrd	fa3,a3,a5,3
    e880cbf6:	0007871b          	sext.w	a4,a5
    e880cbfa:	7ae6f7c3          	fmadd.d	fa5,fa3,fa4,fa5
    e880cbfe:	feedd5e3          	bge	s11,a4,e880cbe8 <__kernel_rem_pio2+0x438>
    e880cc02:	670f778b          	fsrd	fa5,t5,a6,3
    e880cc06:	00180793          	addi	a5,a6,1 # 100001 <memcmp-0xe86fffff>
    e880cc0a:	16e1                	addi	a3,a3,-8
    e880cc0c:	01030e63          	beq	t1,a6,e880cc28 <__kernel_rem_pio2+0x478>
    e880cc10:	883e                	mv	a6,a5
    e880cc12:	fc0dd3e3          	bgez	s11,e880cbd8 <__kernel_rem_pio2+0x428>
    e880cc16:	f20007d3          	fmv.d.x	fa5,zero
    e880cc1a:	00180793          	addi	a5,a6,1
    e880cc1e:	16e1                	addi	a3,a3,-8
    e880cc20:	670f778b          	fsrd	fa5,t5,a6,3
    e880cc24:	ff0316e3          	bne	t1,a6,e880cc10 <__kernel_rem_pio2+0x460>
    e880cc28:	6722                	ld	a4,8(sp)
    e880cc2a:	4789                	li	a5,2
    e880cc2c:	18e7c163          	blt	a5,a4,e880cdae <__kernel_rem_pio2+0x5fe>
    e880cc30:	f20007d3          	fmv.d.x	fa5,zero
    e880cc34:	12e04a63          	bgtz	a4,e880cd68 <__kernel_rem_pio2+0x5b8>
    e880cc38:	ef11                	bnez	a4,e880cc54 <__kernel_rem_pio2+0x4a4>
    e880cc3a:	071f178b          	addsl	a5,t5,a7,3
    e880cc3e:	2798                	fld	fa4,8(a5)
    e880cc40:	18fd                	addi	a7,a7,-1
    e880cc42:	02e7f7d3          	fadd.d	fa5,fa5,fa4
    e880cc46:	ff1e9ae3          	bne	t4,a7,e880cc3a <__kernel_rem_pio2+0x48a>
    e880cc4a:	c219                	beqz	a2,e880cc50 <__kernel_rem_pio2+0x4a0>
    e880cc4c:	22f797d3          	fneg.d	fa5,fa5
    e880cc50:	6782                	ld	a5,0(sp)
    e880cc52:	a39c                	fsd	fa5,0(a5)
    e880cc54:	2f813083          	ld	ra,760(sp)
    e880cc58:	2f013403          	ld	s0,752(sp)
    e880cc5c:	007bf513          	andi	a0,s7,7
    e880cc60:	2e813483          	ld	s1,744(sp)
    e880cc64:	2e013903          	ld	s2,736(sp)
    e880cc68:	2d813983          	ld	s3,728(sp)
    e880cc6c:	2d013a03          	ld	s4,720(sp)
    e880cc70:	2c813a83          	ld	s5,712(sp)
    e880cc74:	2c013b03          	ld	s6,704(sp)
    e880cc78:	2b813b83          	ld	s7,696(sp)
    e880cc7c:	2b013c03          	ld	s8,688(sp)
    e880cc80:	2a813c83          	ld	s9,680(sp)
    e880cc84:	2a013d03          	ld	s10,672(sp)
    e880cc88:	29813d83          	ld	s11,664(sp)
    e880cc8c:	28813407          	fld	fs0,648(sp)
    e880cc90:	28013487          	fld	fs1,640(sp)
    e880cc94:	27813907          	fld	fs2,632(sp)
    e880cc98:	27013987          	fld	fs3,624(sp)
    e880cc9c:	26813a07          	fld	fs4,616(sp)
    e880cca0:	26013a87          	fld	fs5,608(sp)
    e880cca4:	25813b07          	fld	fs6,600(sp)
    e880cca8:	30010113          	addi	sp,sp,768
    e880ccac:	8082                	ret
    e880ccae:	4681                	li	a3,0
    e880ccb0:	010005b7          	lui	a1,0x1000
    e880ccb4:	40e5873b          	subw	a4,a1,a4
    e880ccb8:	100c                	addi	a1,sp,32
    e880ccba:	44d5d70b          	srw	a4,a1,a3,2
    e880ccbe:	0357d863          	bge	a5,s5,e880ccee <__kernel_rem_pio2+0x53e>
    e880ccc2:	fffa871b          	addiw	a4,s5,-1
    e880ccc6:	9f1d                	subw	a4,a4,a5
    e880ccc8:	7c07370b          	extu	a4,a4,31,0
    e880cccc:	44f5c68b          	lrw	a3,a1,a5,2
    e880ccd0:	973e                	add	a4,a4,a5
    e880ccd2:	04f5978b          	addsl	a5,a1,a5,2
    e880ccd6:	104c                	addi	a1,sp,36
    e880ccd8:	04e5970b          	addsl	a4,a1,a4,2
    e880ccdc:	a019                	j	e880cce2 <__kernel_rem_pio2+0x532>
    e880ccde:	0001                	nop
    e880cce0:	4394                	lw	a3,0(a5)
    e880cce2:	40d406bb          	subw	a3,s0,a3
    e880cce6:	5847d68b          	swia	a3,(a5),4,0
    e880ccea:	fee79be3          	bne	a5,a4,e880cce0 <__kernel_rem_pio2+0x530>
    e880ccee:	4705                	li	a4,1
    e880ccf0:	bbf1                	j	e880cacc <__kernel_rem_pio2+0x31c>
    e880ccf2:	a34987d3          	fle.d	a5,fs3,fs4
    e880ccf6:	4601                	li	a2,0
    e880ccf8:	cc0789e3          	beqz	a5,e880c9ca <__kernel_rem_pio2+0x21a>
    e880ccfc:	00170b9b          	addiw	s7,a4,1
    e880cd00:	4609                	li	a2,2
    e880cd02:	db5044e3          	bgtz	s5,e880caaa <__kernel_rem_pio2+0x2fa>
    e880cd06:	0b497a53          	fsub.d	fs4,fs2,fs4
    e880cd0a:	b1c1                	j	e880c9ca <__kernel_rem_pio2+0x21a>
    e880cd0c:	001a831b          	addiw	t1,s5,1
    e880cd10:	861a                	mv	a2,t1
    e880cd12:	b305                	j	e880ca32 <__kernel_rem_pio2+0x282>
    e880cd14:	101c                	addi	a5,sp,32
    e880cd16:	4467c70b          	lrw	a4,a5,t1,2
    e880cd1a:	47c2                	lw	a5,16(sp)
    e880cd1c:	fe878b1b          	addiw	s6,a5,-24
    e880cd20:	00231793          	slli	a5,t1,0x2
    e880cd24:	e40715e3          	bnez	a4,e880cb6e <__kernel_rem_pio2+0x3be>
    e880cd28:	1018                	addi	a4,sp,32
    e880cd2a:	97ba                	add	a5,a5,a4
    e880cd2c:	49c7c70b          	lwib	a4,(a5),-4,0
    e880cd30:	337d                	addiw	t1,t1,-1
    e880cd32:	3b21                	addiw	s6,s6,-24
    e880cd34:	df65                	beqz	a4,e880cd2c <__kernel_rem_pio2+0x57c>
    e880cd36:	23290553          	fmv.d	fa0,fs2
    e880cd3a:	855a                	mv	a0,s6
    e880cd3c:	ec1a                	sd	t1,24(sp)
    e880cd3e:	e832                	sd	a2,16(sp)
    e880cd40:	101000ef          	jal	ra,e880d640 <scalbn>
    e880cd44:	fa61460b          	ldd	a2,t1,(sp),1,4
    e880cd48:	e2035ee3          	bgez	t1,e880cb84 <__kernel_rem_pio2+0x3d4>
    e880cd4c:	6722                	ld	a4,8(sp)
    e880cd4e:	4789                	li	a5,2
    e880cd50:	04e7cf63          	blt	a5,a4,e880cdae <__kernel_rem_pio2+0x5fe>
    e880cd54:	f20007d3          	fmv.d.x	fa5,zero
    e880cd58:	02e04063          	bgtz	a4,e880cd78 <__kernel_rem_pio2+0x5c8>
    e880cd5c:	ee071ce3          	bnez	a4,e880cc54 <__kernel_rem_pio2+0x4a4>
    e880cd60:	ee0608e3          	beqz	a2,e880cc50 <__kernel_rem_pio2+0x4a0>
    e880cd64:	b5e5                	j	e880cc4c <__kernel_rem_pio2+0x49c>
    e880cd66:	0001                	nop
    e880cd68:	071f178b          	addsl	a5,t5,a7,3
    e880cd6c:	2798                	fld	fa4,8(a5)
    e880cd6e:	18fd                	addi	a7,a7,-1
    e880cd70:	02e7f7d3          	fadd.d	fa5,fa5,fa4
    e880cd74:	ff1e9ae3          	bne	t4,a7,e880cd68 <__kernel_rem_pio2+0x5b8>
    e880cd78:	2752                	fld	fa4,272(sp)
    e880cd7a:	0af77753          	fsub.d	fa4,fa4,fa5
    e880cd7e:	10061563          	bnez	a2,e880ce88 <__kernel_rem_pio2+0x6d8>
    e880cd82:	6782                	ld	a5,0(sp)
    e880cd84:	a39c                	fsd	fa5,0(a5)
    e880cd86:	02605163          	blez	t1,e880cda8 <__kernel_rem_pio2+0x5f8>
    e880cd8a:	4785                	li	a5,1
    e880cd8c:	11010f13          	addi	t5,sp,272
    e880cd90:	66ff678b          	flrd	fa5,t5,a5,3
    e880cd94:	0785                	addi	a5,a5,1
    e880cd96:	0007871b          	sext.w	a4,a5
    e880cd9a:	02f77753          	fadd.d	fa4,fa4,fa5
    e880cd9e:	fee359e3          	bge	t1,a4,e880cd90 <__kernel_rem_pio2+0x5e0>
    e880cda2:	c219                	beqz	a2,e880cda8 <__kernel_rem_pio2+0x5f8>
    e880cda4:	22e71753          	fneg.d	fa4,fa4
    e880cda8:	6782                	ld	a5,0(sp)
    e880cdaa:	a798                	fsd	fa4,8(a5)
    e880cdac:	b565                	j	e880cc54 <__kernel_rem_pio2+0x4a4>
    e880cdae:	6722                	ld	a4,8(sp)
    e880cdb0:	478d                	li	a5,3
    e880cdb2:	eaf711e3          	bne	a4,a5,e880cc54 <__kernel_rem_pio2+0x4a4>
    e880cdb6:	0e605d63          	blez	t1,e880ceb0 <__kernel_rem_pio2+0x700>
    e880cdba:	11010f13          	addi	t5,sp,272
    e880cdbe:	fff3071b          	addiw	a4,t1,-1
    e880cdc2:	00331593          	slli	a1,t1,0x3
    e880cdc6:	023c                	addi	a5,sp,264
    e880cdc8:	7c07370b          	extu	a4,a4,31,0
    e880cdcc:	666f668b          	flrd	fa3,t5,t1,3
    e880cdd0:	00b786b3          	add	a3,a5,a1
    e880cdd4:	070e                	slli	a4,a4,0x3
    e880cdd6:	00bf07b3          	add	a5,t5,a1
    e880cdda:	40e68733          	sub	a4,a3,a4
    e880cdde:	ff87b787          	fld	fa5,-8(a5)
    e880cde2:	17e1                	addi	a5,a5,-8
    e880cde4:	02d7f753          	fadd.d	fa4,fa5,fa3
    e880cde8:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880cdec:	a398                	fsd	fa4,0(a5)
    e880cdee:	02d7f7d3          	fadd.d	fa5,fa5,fa3
    e880cdf2:	22e706d3          	fmv.d	fa3,fa4
    e880cdf6:	a79c                	fsd	fa5,8(a5)
    e880cdf8:	fef713e3          	bne	a4,a5,e880cdde <__kernel_rem_pio2+0x62e>
    e880cdfc:	4785                	li	a5,1
    e880cdfe:	0a67d963          	bge	a5,t1,e880ceb0 <__kernel_rem_pio2+0x700>
    e880ce02:	ffe3079b          	addiw	a5,t1,-2
    e880ce06:	7c07b78b          	extu	a5,a5,31,0
    e880ce0a:	078e                	slli	a5,a5,0x3
    e880ce0c:	0238                	addi	a4,sp,264
    e880ce0e:	666f668b          	flrd	fa3,t5,t1,3
    e880ce12:	972e                	add	a4,a4,a1
    e880ce14:	9f2e                	add	t5,t5,a1
    e880ce16:	8f1d                	sub	a4,a4,a5
    e880ce18:	87fa                	mv	a5,t5
    e880ce1a:	ff87b787          	fld	fa5,-8(a5)
    e880ce1e:	17e1                	addi	a5,a5,-8
    e880ce20:	02d7f753          	fadd.d	fa4,fa5,fa3
    e880ce24:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880ce28:	a398                	fsd	fa4,0(a5)
    e880ce2a:	02d7f7d3          	fadd.d	fa5,fa5,fa3
    e880ce2e:	22e706d3          	fmv.d	fa3,fa4
    e880ce32:	a79c                	fsd	fa5,8(a5)
    e880ce34:	fef713e3          	bne	a4,a5,e880ce1a <__kernel_rem_pio2+0x66a>
    e880ce38:	f20007d3          	fmv.d.x	fa5,zero
    e880ce3c:	000f3707          	fld	fa4,0(t5)
    e880ce40:	1f61                	addi	t5,t5,-8
    e880ce42:	02e7f7d3          	fadd.d	fa5,fa5,fa4
    e880ce46:	ffe71be3          	bne	a4,t5,e880ce3c <__kernel_rem_pio2+0x68c>
    e880ce4a:	26d2                	fld	fa3,272(sp)
    e880ce4c:	2772                	fld	fa4,280(sp)
    e880ce4e:	e631                	bnez	a2,e880ce9a <__kernel_rem_pio2+0x6ea>
    e880ce50:	6782                	ld	a5,0(sp)
    e880ce52:	a394                	fsd	fa3,0(a5)
    e880ce54:	a798                	fsd	fa4,8(a5)
    e880ce56:	ab9c                	fsd	fa5,16(a5)
    e880ce58:	bbf5                	j	e880cc54 <__kernel_rem_pio2+0x4a4>
    e880ce5a:	fffa869b          	addiw	a3,s5,-1
    e880ce5e:	101c                	addi	a5,sp,32
    e880ce60:	44d7c78b          	lrw	a5,a5,a3,2
    e880ce64:	100c                	addi	a1,sp,32
    e880ce66:	5807b78b          	extu	a5,a5,22,0
    e880ce6a:	44d5d78b          	srw	a5,a1,a3,2
    e880ce6e:	b149                	j	e880caf0 <__kernel_rem_pio2+0x340>
    e880ce70:	56a1                	li	a3,-24
    e880ce72:	4581                	li	a1,0
    e880ce74:	b2e9                	j	e880c83e <__kernel_rem_pio2+0x8e>
    e880ce76:	4701                	li	a4,0
    e880ce78:	b991                	j	e880cacc <__kernel_rem_pio2+0x31c>
    e880ce7a:	c20517d3          	fcvt.w.d	a5,fa0,rtz
    e880ce7e:	1018                	addi	a4,sp,32
    e880ce80:	8356                	mv	t1,s5
    e880ce82:	4557578b          	srw	a5,a4,s5,2
    e880ce86:	b1e5                	j	e880cb6e <__kernel_rem_pio2+0x3be>
    e880ce88:	22f797d3          	fneg.d	fa5,fa5
    e880ce8c:	6782                	ld	a5,0(sp)
    e880ce8e:	a39c                	fsd	fa5,0(a5)
    e880ce90:	ee604de3          	bgtz	t1,e880cd8a <__kernel_rem_pio2+0x5da>
    e880ce94:	22e71753          	fneg.d	fa4,fa4
    e880ce98:	bf01                	j	e880cda8 <__kernel_rem_pio2+0x5f8>
    e880ce9a:	6782                	ld	a5,0(sp)
    e880ce9c:	22d696d3          	fneg.d	fa3,fa3
    e880cea0:	22e71753          	fneg.d	fa4,fa4
    e880cea4:	22f797d3          	fneg.d	fa5,fa5
    e880cea8:	a394                	fsd	fa3,0(a5)
    e880ceaa:	a798                	fsd	fa4,8(a5)
    e880ceac:	ab9c                	fsd	fa5,16(a5)
    e880ceae:	b35d                	j	e880cc54 <__kernel_rem_pio2+0x4a4>
    e880ceb0:	f20007d3          	fmv.d.x	fa5,zero
    e880ceb4:	bf59                	j	e880ce4a <__kernel_rem_pio2+0x69a>
	...

00000000e880ced0 <__kernel_sin>:
    e880ced0:	e20507d3          	fmv.x.d	a5,fa0
    e880ced4:	3e400737          	lui	a4,0x3e400
    e880ced8:	fa07b68b          	extu	a3,a5,62,32
    e880cedc:	00e6d663          	bge	a3,a4,e880cee8 <__kernel_sin+0x18>
    e880cee0:	c2051753          	fcvt.w.d	a4,fa0,rtz
    e880cee4:	2701                	sext.w	a4,a4
    e880cee6:	c749                	beqz	a4,e880cf70 <__kernel_sin+0xa0>
    e880cee8:	f20787d3          	fmv.d.x	fa5,a5
    e880ceec:	000c7717          	auipc	a4,0xc7
    e880cef0:	19473507          	fld	fa0,404(a4) # e88d4080 <dhcp_discover_request_options+0x878>
    e880cef4:	000c7717          	auipc	a4,0xc7
    e880cef8:	19473007          	fld	ft0,404(a4) # e88d4088 <dhcp_discover_request_options+0x880>
    e880cefc:	12f7f753          	fmul.d	fa4,fa5,fa5
    e880cf00:	000c7717          	auipc	a4,0xc7
    e880cf04:	17873787          	fld	fa5,376(a4) # e88d4078 <dhcp_discover_request_options+0x870>
    e880cf08:	000c7717          	auipc	a4,0xc7
    e880cf0c:	18873607          	fld	fa2,392(a4) # e88d4090 <dhcp_discover_request_options+0x888>
    e880cf10:	000c7717          	auipc	a4,0xc7
    e880cf14:	18873687          	fld	fa3,392(a4) # e88d4098 <dhcp_discover_request_options+0x890>
    e880cf18:	52f777c3          	fmadd.d	fa5,fa4,fa5,fa0
    e880cf1c:	f2078553          	fmv.d.x	fa0,a5
    e880cf20:	12e57553          	fmul.d	fa0,fa0,fa4
    e880cf24:	02e7f7c3          	fmadd.d	fa5,fa5,fa4,ft0
    e880cf28:	62e7f7c3          	fmadd.d	fa5,fa5,fa4,fa2
    e880cf2c:	6ae7f7c3          	fmadd.d	fa5,fa5,fa4,fa3
    e880cf30:	ed01                	bnez	a0,e880cf48 <__kernel_sin+0x78>
    e880cf32:	000c7717          	auipc	a4,0xc7
    e880cf36:	16e73587          	fld	fa1,366(a4) # e88d40a0 <dhcp_discover_request_options+0x898>
    e880cf3a:	5af777c3          	fmadd.d	fa5,fa4,fa5,fa1
    e880cf3e:	f2078753          	fmv.d.x	fa4,a5
    e880cf42:	72a7f543          	fmadd.d	fa0,fa5,fa0,fa4
    e880cf46:	8082                	ret
    e880cf48:	12f577d3          	fmul.d	fa5,fa0,fa5
    e880cf4c:	000be717          	auipc	a4,0xbe
    e880cf50:	11473687          	fld	fa3,276(a4) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880cf54:	000c7717          	auipc	a4,0xc7
    e880cf58:	15473607          	fld	fa2,340(a4) # e88d40a8 <dhcp_discover_request_options+0x8a0>
    e880cf5c:	7ad5f7c7          	fmsub.d	fa5,fa1,fa3,fa5
    e880cf60:	5ae7f7c7          	fmsub.d	fa5,fa5,fa4,fa1
    e880cf64:	7ac57543          	fmadd.d	fa0,fa0,fa2,fa5
    e880cf68:	f20787d3          	fmv.d.x	fa5,a5
    e880cf6c:	0aa7f553          	fsub.d	fa0,fa5,fa0
    e880cf70:	8082                	ret
	...

00000000e880cf80 <expm1>:
    e880cf80:	e20507d3          	fmv.x.d	a5,fa0
    e880cf84:	404376b7          	lui	a3,0x40437
    e880cf88:	87968693          	addi	a3,a3,-1927 # 40436879 <memcmp-0xa83c9787>
    e880cf8c:	fe07b60b          	extu	a2,a5,63,32
    e880cf90:	7806370b          	extu	a4,a2,30,0
    e880cf94:	2701                	sext.w	a4,a4
    e880cf96:	0006059b          	sext.w	a1,a2
    e880cf9a:	08e6fd63          	bgeu	a3,a4,e880d034 <expm1+0xb4>
    e880cf9e:	408636b7          	lui	a3,0x40863
    e880cfa2:	e4168693          	addi	a3,a3,-447 # 40862e41 <memcmp-0xa7f9d1bf>
    e880cfa6:	02e6f963          	bgeu	a3,a4,e880cfd8 <expm1+0x58>
    e880cfaa:	7ff006b7          	lui	a3,0x7ff00
    e880cfae:	00d76d63          	bltu	a4,a3,e880cfc8 <expm1+0x48>
    e880cfb2:	4c06360b          	extu	a2,a2,19,0
    e880cfb6:	8e5d                	or	a2,a2,a5
    e880cfb8:	2601                	sext.w	a2,a2
    e880cfba:	2c060763          	beqz	a2,e880d288 <expm1+0x308>
    e880cfbe:	02a577d3          	fadd.d	fa5,fa0,fa0
    e880cfc2:	e20787d3          	fmv.x.d	a5,fa5
    e880cfc6:	aa9d                	j	e880d13c <expm1+0x1bc>
    e880cfc8:	000c7717          	auipc	a4,0xc7
    e880cfcc:	e9073787          	fld	fa5,-368(a4) # e88d3e58 <dhcp_discover_request_options+0x650>
    e880cfd0:	a2a79753          	flt.d	a4,fa5,fa0
    e880cfd4:	2e071063          	bnez	a4,e880d2b4 <expm1+0x334>
    e880cfd8:	1605c663          	bltz	a1,e880d144 <expm1+0x1c4>
    e880cfdc:	f20787d3          	fmv.d.x	fa5,a5
    e880cfe0:	000c7717          	auipc	a4,0xc7
    e880cfe4:	ed073707          	fld	fa4,-304(a4) # e88d3eb0 <dhcp_discover_request_options+0x6a8>
    e880cfe8:	000be717          	auipc	a4,0xbe
    e880cfec:	07873587          	fld	fa1,120(a4) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880cff0:	12e7f753          	fmul.d	fa4,fa5,fa4
    e880cff4:	22b587d3          	fmv.d	fa5,fa1
    e880cff8:	02e7f6d3          	fadd.d	fa3,fa5,fa4
    e880cffc:	000c7717          	auipc	a4,0xc7
    e880d000:	ebc73707          	fld	fa4,-324(a4) # e88d3eb8 <dhcp_discover_request_options+0x6b0>
    e880d004:	000c7717          	auipc	a4,0xc7
    e880d008:	ebc73787          	fld	fa5,-324(a4) # e88d3ec0 <dhcp_discover_request_options+0x6b8>
    e880d00c:	c20696d3          	fcvt.w.d	a3,fa3,rtz
    e880d010:	f20786d3          	fmv.d.x	fa3,a5
    e880d014:	d2068653          	fcvt.d.w	fa2,a3
    e880d018:	2681                	sext.w	a3,a3
    e880d01a:	6ae6774b          	fnmsub.d	fa4,fa2,fa4,fa3
    e880d01e:	12f67653          	fmul.d	fa2,fa2,fa5
    e880d022:	0ac777d3          	fsub.d	fa5,fa4,fa2
    e880d026:	0af77753          	fsub.d	fa4,fa4,fa5
    e880d02a:	e20787d3          	fmv.x.d	a5,fa5
    e880d02e:	0ac77653          	fsub.d	fa2,fa4,fa2
    e880d032:	a005                	j	e880d052 <expm1+0xd2>
    e880d034:	3fd636b7          	lui	a3,0x3fd63
    e880d038:	e4268693          	addi	a3,a3,-446 # 3fd62e42 <memcmp-0xa8a9d1be>
    e880d03c:	16e6e863          	bltu	a3,a4,e880d1ac <expm1+0x22c>
    e880d040:	3c9006b7          	lui	a3,0x3c900
    e880d044:	18d76c63          	bltu	a4,a3,e880d1dc <expm1+0x25c>
    e880d048:	4681                	li	a3,0
    e880d04a:	000be717          	auipc	a4,0xbe
    e880d04e:	01673587          	fld	fa1,22(a4) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880d052:	f2078753          	fmv.d.x	fa4,a5
    e880d056:	f20786d3          	fmv.d.x	fa3,a5
    e880d05a:	000c7717          	auipc	a4,0xc7
    e880d05e:	06673787          	fld	fa5,102(a4) # e88d40c0 <dhcp_discover_request_options+0x8b8>
    e880d062:	12b77753          	fmul.d	fa4,fa4,fa1
    e880d066:	000c7717          	auipc	a4,0xc7
    e880d06a:	06273287          	fld	ft5,98(a4) # e88d40c8 <dhcp_discover_request_options+0x8c0>
    e880d06e:	000c7717          	auipc	a4,0xc7
    e880d072:	06273207          	fld	ft4,98(a4) # e88d40d0 <dhcp_discover_request_options+0x8c8>
    e880d076:	000c7717          	auipc	a4,0xc7
    e880d07a:	06273187          	fld	ft3,98(a4) # e88d40d8 <dhcp_discover_request_options+0x8d0>
    e880d07e:	000c7717          	auipc	a4,0xc7
    e880d082:	06273107          	fld	ft2,98(a4) # e88d40e0 <dhcp_discover_request_options+0x8d8>
    e880d086:	000b2717          	auipc	a4,0xb2
    e880d08a:	df273507          	fld	fa0,-526(a4) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e880d08e:	000c7717          	auipc	a4,0xc7
    e880d092:	f1273087          	fld	ft1,-238(a4) # e88d3fa0 <dhcp_discover_request_options+0x798>
    e880d096:	12e6f6d3          	fmul.d	fa3,fa3,fa4
    e880d09a:	000c7717          	auipc	a4,0xc7
    e880d09e:	04e73007          	fld	ft0,78(a4) # e88d40e8 <dhcp_discover_request_options+0x8e0>
    e880d0a2:	2af6f7c3          	fmadd.d	fa5,fa3,fa5,ft5
    e880d0a6:	22d7f7c3          	fmadd.d	fa5,fa5,fa3,ft4
    e880d0aa:	1ad7f7c3          	fmadd.d	fa5,fa5,fa3,ft3
    e880d0ae:	12d7f7c3          	fmadd.d	fa5,fa5,fa3,ft2
    e880d0b2:	52d7f7c3          	fmadd.d	fa5,fa5,fa3,fa0
    e880d0b6:	0af7774b          	fnmsub.d	fa4,fa4,fa5,ft1
    e880d0ba:	f20780d3          	fmv.d.x	ft1,a5
    e880d0be:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880d0c2:	02e0f74b          	fnmsub.d	fa4,ft1,fa4,ft0
    e880d0c6:	1ae7f7d3          	fdiv.d	fa5,fa5,fa4
    e880d0ca:	12d7f7d3          	fmul.d	fa5,fa5,fa3
    e880d0ce:	c2ad                	beqz	a3,e880d130 <expm1+0x1b0>
    e880d0d0:	0ac7f7d3          	fsub.d	fa5,fa5,fa2
    e880d0d4:	577d                	li	a4,-1
    e880d0d6:	6217f7c7          	fmsub.d	fa5,fa5,ft1,fa2
    e880d0da:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e880d0de:	14e68363          	beq	a3,a4,e880d224 <expm1+0x2a4>
    e880d0e2:	4705                	li	a4,1
    e880d0e4:	10e68c63          	beq	a3,a4,e880d1fc <expm1+0x27c>
    e880d0e8:	0016861b          	addiw	a2,a3,1
    e880d0ec:	03900713          	li	a4,57
    e880d0f0:	0146959b          	slliw	a1,a3,0x14
    e880d0f4:	08c76863          	bltu	a4,a2,e880d184 <expm1+0x204>
    e880d0f8:	474d                	li	a4,19
    e880d0fa:	14d74d63          	blt	a4,a3,e880d254 <expm1+0x2d4>
    e880d0fe:	00200737          	lui	a4,0x200
    e880d102:	0a17f7d3          	fsub.d	fa5,fa5,ft1
    e880d106:	40d756bb          	sraw	a3,a4,a3
    e880d10a:	3ff00737          	lui	a4,0x3ff00
    e880d10e:	9f15                	subw	a4,a4,a3
    e880d110:	1702                	slli	a4,a4,0x20
    e880d112:	f2070753          	fmv.d.x	fa4,a4
    e880d116:	0af777d3          	fsub.d	fa5,fa4,fa5
    e880d11a:	e2078753          	fmv.x.d	a4,fa5
    e880d11e:	fe07378b          	extu	a5,a4,63,32
    e880d122:	9fad                	addw	a5,a5,a1
    e880d124:	02079593          	slli	a1,a5,0x20
    e880d128:	7c07378b          	extu	a5,a4,31,0
    e880d12c:	8fcd                	or	a5,a5,a1
    e880d12e:	a039                	j	e880d13c <expm1+0x1bc>
    e880d130:	6af0f7c7          	fmsub.d	fa5,ft1,fa5,fa3
    e880d134:	0af0f7d3          	fsub.d	fa5,ft1,fa5
    e880d138:	e20787d3          	fmv.x.d	a5,fa5
    e880d13c:	f2078553          	fmv.d.x	fa0,a5
    e880d140:	8082                	ret
    e880d142:	0001                	nop
    e880d144:	f2078753          	fmv.d.x	fa4,a5
    e880d148:	000c7717          	auipc	a4,0xc7
    e880d14c:	e8073787          	fld	fa5,-384(a4) # e88d3fc8 <dhcp_discover_request_options+0x7c0>
    e880d150:	02f777d3          	fadd.d	fa5,fa4,fa5
    e880d154:	f2000753          	fmv.d.x	fa4,zero
    e880d158:	a2e79753          	flt.d	a4,fa5,fa4
    e880d15c:	12071863          	bnez	a4,e880d28c <expm1+0x30c>
    e880d160:	f20787d3          	fmv.d.x	fa5,a5
    e880d164:	000c7717          	auipc	a4,0xc7
    e880d168:	d4c73707          	fld	fa4,-692(a4) # e88d3eb0 <dhcp_discover_request_options+0x6a8>
    e880d16c:	12e7f753          	fmul.d	fa4,fa5,fa4
    e880d170:	000c7717          	auipc	a4,0xc7
    e880d174:	f4073787          	fld	fa5,-192(a4) # e88d40b0 <dhcp_discover_request_options+0x8a8>
    e880d178:	000be717          	auipc	a4,0xbe
    e880d17c:	ee873587          	fld	fa1,-280(a4) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880d180:	bda5                	j	e880cff8 <expm1+0x78>
    e880d182:	0001                	nop
    e880d184:	0a17f7d3          	fsub.d	fa5,fa5,ft1
    e880d188:	0af577d3          	fsub.d	fa5,fa0,fa5
    e880d18c:	e20787d3          	fmv.x.d	a5,fa5
    e880d190:	fe07b70b          	extu	a4,a5,63,32
    e880d194:	9f2d                	addw	a4,a4,a1
    e880d196:	1702                	slli	a4,a4,0x20
    e880d198:	7c07b78b          	extu	a5,a5,31,0
    e880d19c:	8fd9                	or	a5,a5,a4
    e880d19e:	f20787d3          	fmv.d.x	fa5,a5
    e880d1a2:	0aa7f7d3          	fsub.d	fa5,fa5,fa0
    e880d1a6:	e20787d3          	fmv.x.d	a5,fa5
    e880d1aa:	bf49                	j	e880d13c <expm1+0x1bc>
    e880d1ac:	3ff0a6b7          	lui	a3,0x3ff0a
    e880d1b0:	2b168693          	addi	a3,a3,689 # 3ff0a2b1 <memcmp-0xa88f5d4f>
    e880d1b4:	10e6e963          	bltu	a3,a4,e880d2c6 <expm1+0x346>
    e880d1b8:	000c7717          	auipc	a4,0xc7
    e880d1bc:	d0073707          	fld	fa4,-768(a4) # e88d3eb8 <dhcp_discover_request_options+0x6b0>
    e880d1c0:	0605ce63          	bltz	a1,e880d23c <expm1+0x2bc>
    e880d1c4:	0ae57753          	fsub.d	fa4,fa0,fa4
    e880d1c8:	4685                	li	a3,1
    e880d1ca:	000c7797          	auipc	a5,0xc7
    e880d1ce:	cf67b607          	fld	fa2,-778(a5) # e88d3ec0 <dhcp_discover_request_options+0x6b8>
    e880d1d2:	000be797          	auipc	a5,0xbe
    e880d1d6:	e8e7b587          	fld	fa1,-370(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880d1da:	b5a1                	j	e880d022 <expm1+0xa2>
    e880d1dc:	000c7717          	auipc	a4,0xc7
    e880d1e0:	ccc73787          	fld	fa5,-820(a4) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880d1e4:	02f577d3          	fadd.d	fa5,fa0,fa5
    e880d1e8:	0af7f7d3          	fsub.d	fa5,fa5,fa5
    e880d1ec:	0af577d3          	fsub.d	fa5,fa0,fa5
    e880d1f0:	e20787d3          	fmv.x.d	a5,fa5
    e880d1f4:	f2078553          	fmv.d.x	fa0,a5
    e880d1f8:	8082                	ret
    e880d1fa:	0001                	nop
    e880d1fc:	000c7717          	auipc	a4,0xc7
    e880d200:	ef473707          	fld	fa4,-268(a4) # e88d40f0 <dhcp_discover_request_options+0x8e8>
    e880d204:	a2e09753          	flt.d	a4,ft1,fa4
    e880d208:	cb51                	beqz	a4,e880d29c <expm1+0x31c>
    e880d20a:	02b0f5d3          	fadd.d	fa1,ft1,fa1
    e880d20e:	000c7797          	auipc	a5,0xc7
    e880d212:	c427b707          	fld	fa4,-958(a5) # e88d3e50 <dhcp_discover_request_options+0x648>
    e880d216:	0ab7f7d3          	fsub.d	fa5,fa5,fa1
    e880d21a:	12e7f7d3          	fmul.d	fa5,fa5,fa4
    e880d21e:	e20787d3          	fmv.x.d	a5,fa5
    e880d222:	bf29                	j	e880d13c <expm1+0x1bc>
    e880d224:	0af0f7d3          	fsub.d	fa5,ft1,fa5
    e880d228:	000c7797          	auipc	a5,0xc7
    e880d22c:	e887b707          	fld	fa4,-376(a5) # e88d40b0 <dhcp_discover_request_options+0x8a8>
    e880d230:	72b7f7c3          	fmadd.d	fa5,fa5,fa1,fa4
    e880d234:	e20787d3          	fmv.x.d	a5,fa5
    e880d238:	b711                	j	e880d13c <expm1+0x1bc>
    e880d23a:	0001                	nop
    e880d23c:	02e57753          	fadd.d	fa4,fa0,fa4
    e880d240:	56fd                	li	a3,-1
    e880d242:	000c7797          	auipc	a5,0xc7
    e880d246:	e767b607          	fld	fa2,-394(a5) # e88d40b8 <dhcp_discover_request_options+0x8b0>
    e880d24a:	000be797          	auipc	a5,0xbe
    e880d24e:	e167b587          	fld	fa1,-490(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880d252:	bbc1                	j	e880d022 <expm1+0xa2>
    e880d254:	3ff00613          	li	a2,1023
    e880d258:	40d606bb          	subw	a3,a2,a3
    e880d25c:	0146969b          	slliw	a3,a3,0x14
    e880d260:	1682                	slli	a3,a3,0x20
    e880d262:	f2068753          	fmv.d.x	fa4,a3
    e880d266:	02e7f7d3          	fadd.d	fa5,fa5,fa4
    e880d26a:	0af0f7d3          	fsub.d	fa5,ft1,fa5
    e880d26e:	02a7f7d3          	fadd.d	fa5,fa5,fa0
    e880d272:	e20787d3          	fmv.x.d	a5,fa5
    e880d276:	fe07b70b          	extu	a4,a5,63,32
    e880d27a:	9f2d                	addw	a4,a4,a1
    e880d27c:	1702                	slli	a4,a4,0x20
    e880d27e:	7c07b78b          	extu	a5,a5,31,0
    e880d282:	8fd9                	or	a5,a5,a4
    e880d284:	bd65                	j	e880d13c <expm1+0x1bc>
    e880d286:	0001                	nop
    e880d288:	ea05dae3          	bgez	a1,e880d13c <expm1+0x1bc>
    e880d28c:	000b6797          	auipc	a5,0xb6
    e880d290:	6dc7b787          	fld	fa5,1756(a5) # e88c3968 <kSRPParameters_3072_SHA512+0xd8>
    e880d294:	e20787d3          	fmv.x.d	a5,fa5
    e880d298:	b555                	j	e880d13c <expm1+0x1bc>
    e880d29a:	0001                	nop
    e880d29c:	0af0f7d3          	fsub.d	fa5,ft1,fa5
    e880d2a0:	000c7797          	auipc	a5,0xc7
    e880d2a4:	ba87b707          	fld	fa4,-1112(a5) # e88d3e48 <dhcp_discover_request_options+0x640>
    e880d2a8:	52e7f7c3          	fmadd.d	fa5,fa5,fa4,fa0
    e880d2ac:	e20787d3          	fmv.x.d	a5,fa5
    e880d2b0:	b571                	j	e880d13c <expm1+0x1bc>
    e880d2b2:	0001                	nop
    e880d2b4:	000c7797          	auipc	a5,0xc7
    e880d2b8:	bf47b787          	fld	fa5,-1036(a5) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880d2bc:	12f7f7d3          	fmul.d	fa5,fa5,fa5
    e880d2c0:	e20787d3          	fmv.x.d	a5,fa5
    e880d2c4:	bda5                	j	e880d13c <expm1+0x1bc>
    e880d2c6:	000c7717          	auipc	a4,0xc7
    e880d2ca:	bea73707          	fld	fa4,-1046(a4) # e88d3eb0 <dhcp_discover_request_options+0x6a8>
    e880d2ce:	12e57753          	fmul.d	fa4,fa0,fa4
    e880d2d2:	e805cfe3          	bltz	a1,e880d170 <expm1+0x1f0>
    e880d2d6:	000be717          	auipc	a4,0xbe
    e880d2da:	d8a73587          	fld	fa1,-630(a4) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e880d2de:	22b587d3          	fmv.d	fa5,fa1
    e880d2e2:	bb19                	j	e880cff8 <expm1+0x78>
	...

00000000e880d2f0 <fabs>:
    e880d2f0:	e20507d3          	fmv.x.d	a5,fa0
    e880d2f4:	fa07b70b          	extu	a4,a5,62,32
    e880d2f8:	1702                	slli	a4,a4,0x20
    e880d2fa:	7c07b78b          	extu	a5,a5,31,0
    e880d2fe:	8fd9                	or	a5,a5,a4
    e880d300:	f2078553          	fmv.d.x	fa0,a5
    e880d304:	8082                	ret
	...

00000000e880d320 <finite>:
    e880d320:	e2050553          	fmv.x.d	a0,fa0
    e880d324:	fa05378b          	extu	a5,a0,62,32
    e880d328:	80100537          	lui	a0,0x80100
    e880d32c:	9d3d                	addw	a0,a0,a5
    e880d32e:	01f5551b          	srliw	a0,a0,0x1f
    e880d332:	8082                	ret
	...

00000000e880d350 <floor>:
    e880d350:	e2050753          	fmv.x.d	a4,fa0
    e880d354:	454d                	li	a0,19
    e880d356:	fe07368b          	extu	a3,a4,63,32
    e880d35a:	7946b58b          	extu	a1,a3,30,20
    e880d35e:	0007079b          	sext.w	a5,a4
    e880d362:	c015861b          	addiw	a2,a1,-1023
    e880d366:	0006889b          	sext.w	a7,a3
    e880d36a:	833e                	mv	t1,a5
    e880d36c:	08c54263          	blt	a0,a2,e880d3f0 <floor+0xa0>
    e880d370:	06064063          	bltz	a2,e880d3d0 <floor+0x80>
    e880d374:	00100837          	lui	a6,0x100
    e880d378:	fff8059b          	addiw	a1,a6,-1
    e880d37c:	40c5d5bb          	sraw	a1,a1,a2
    e880d380:	8eed                	and	a3,a3,a1
    e880d382:	8edd                	or	a3,a3,a5
    e880d384:	2681                	sext.w	a3,a3
    e880d386:	e2050553          	fmv.x.d	a0,fa0
    e880d38a:	ce9d                	beqz	a3,e880d3c8 <floor+0x78>
    e880d38c:	000c7697          	auipc	a3,0xc7
    e880d390:	b1c6b787          	fld	fa5,-1252(a3) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880d394:	02f577d3          	fadd.d	fa5,fa0,fa5
    e880d398:	f2000753          	fmv.d.x	fa4,zero
    e880d39c:	a2f71753          	flt.d	a4,fa4,fa5
    e880d3a0:	cf11                	beqz	a4,e880d3bc <floor+0x6c>
    e880d3a2:	0008d663          	bgez	a7,e880d3ae <floor+0x5e>
    e880d3a6:	40c8563b          	sraw	a2,a6,a2
    e880d3aa:	011608bb          	addw	a7,a2,a7
    e880d3ae:	fff5c713          	not	a4,a1
    e880d3b2:	01177733          	and	a4,a4,a7
    e880d3b6:	0007089b          	sext.w	a7,a4
    e880d3ba:	4781                	li	a5,0
    e880d3bc:	7c07b78b          	extu	a5,a5,31,0
    e880d3c0:	02089713          	slli	a4,a7,0x20
    e880d3c4:	00f76533          	or	a0,a4,a5
    e880d3c8:	f2050553          	fmv.d.x	fa0,a0
    e880d3cc:	8082                	ret
    e880d3ce:	0001                	nop
    e880d3d0:	000c7697          	auipc	a3,0xc7
    e880d3d4:	ad86b787          	fld	fa5,-1320(a3) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880d3d8:	02f577d3          	fadd.d	fa5,fa0,fa5
    e880d3dc:	f2000753          	fmv.d.x	fa4,zero
    e880d3e0:	a2f71753          	flt.d	a4,fa4,fa5
    e880d3e4:	df61                	beqz	a4,e880d3bc <floor+0x6c>
    e880d3e6:	0608c363          	bltz	a7,e880d44c <floor+0xfc>
    e880d3ea:	4781                	li	a5,0
    e880d3ec:	4881                	li	a7,0
    e880d3ee:	b7f9                	j	e880d3bc <floor+0x6c>
    e880d3f0:	03300693          	li	a3,51
    e880d3f4:	00c6de63          	bge	a3,a2,e880d410 <floor+0xc0>
    e880d3f8:	40000793          	li	a5,1024
    e880d3fc:	e2050553          	fmv.x.d	a0,fa0
    e880d400:	fcf614e3          	bne	a2,a5,e880d3c8 <floor+0x78>
    e880d404:	02a577d3          	fadd.d	fa5,fa0,fa0
    e880d408:	e2078553          	fmv.x.d	a0,fa5
    e880d40c:	bf75                	j	e880d3c8 <floor+0x78>
    e880d40e:	0001                	nop
    e880d410:	56fd                	li	a3,-1
    e880d412:	bed5859b          	addiw	a1,a1,-1043
    e880d416:	00b6d5bb          	srlw	a1,a3,a1
    e880d41a:	00b7f6b3          	and	a3,a5,a1
    e880d41e:	2681                	sext.w	a3,a3
    e880d420:	e2050553          	fmv.x.d	a0,fa0
    e880d424:	d2d5                	beqz	a3,e880d3c8 <floor+0x78>
    e880d426:	000c7697          	auipc	a3,0xc7
    e880d42a:	a826b787          	fld	fa5,-1406(a3) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880d42e:	02f577d3          	fadd.d	fa5,fa0,fa5
    e880d432:	f2000753          	fmv.d.x	fa4,zero
    e880d436:	a2f71753          	flt.d	a4,fa4,fa5
    e880d43a:	d349                	beqz	a4,e880d3bc <floor+0x6c>
    e880d43c:	0208c463          	bltz	a7,e880d464 <floor+0x114>
    e880d440:	fff5c593          	not	a1,a1
    e880d444:	8fed                	and	a5,a5,a1
    e880d446:	2781                	sext.w	a5,a5
    e880d448:	bf95                	j	e880d3bc <floor+0x6c>
    e880d44a:	0001                	nop
    e880d44c:	7808b78b          	extu	a5,a7,30,0
    e880d450:	00f36333          	or	t1,t1,a5
    e880d454:	8746                	mv	a4,a7
    e880d456:	bff008b7          	lui	a7,0xbff00
    e880d45a:	4781                	li	a5,0
    e880d45c:	4067188b          	mveqz	a7,a4,t1
    e880d460:	bfb1                	j	e880d3bc <floor+0x6c>
    e880d462:	0001                	nop
    e880d464:	4751                	li	a4,20
    e880d466:	00e60f63          	beq	a2,a4,e880d484 <floor+0x134>
    e880d46a:	03400713          	li	a4,52
    e880d46e:	9f11                	subw	a4,a4,a2
    e880d470:	4805                	li	a6,1
    e880d472:	00e8183b          	sllw	a6,a6,a4
    e880d476:	00f8033b          	addw	t1,a6,a5
    e880d47a:	00f37763          	bgeu	t1,a5,e880d488 <floor+0x138>
    e880d47e:	2885                	addiw	a7,a7,1
    e880d480:	879a                	mv	a5,t1
    e880d482:	bf7d                	j	e880d440 <floor+0xf0>
    e880d484:	2885                	addiw	a7,a7,1
    e880d486:	bf6d                	j	e880d440 <floor+0xf0>
    e880d488:	879a                	mv	a5,t1
    e880d48a:	bf5d                	j	e880d440 <floor+0xf0>
    e880d48c:	0000                	unimp
	...

00000000e880d490 <matherr>:
    e880d490:	4501                	li	a0,0
    e880d492:	8082                	ret
	...

00000000e880d4b0 <nan>:
    e880d4b0:	000c7797          	auipc	a5,0xc7
    e880d4b4:	c487b507          	fld	fa0,-952(a5) # e88d40f8 <dhcp_discover_request_options+0x8f0>
    e880d4b8:	8082                	ret
	...

00000000e880d4d0 <rint>:
    e880d4d0:	e2050753          	fmv.x.d	a4,fa0
    e880d4d4:	454d                	li	a0,19
    e880d4d6:	1141                	addi	sp,sp,-16
    e880d4d8:	fe07378b          	extu	a5,a4,63,32
    e880d4dc:	7947b58b          	extu	a1,a5,30,20
    e880d4e0:	c015861b          	addiw	a2,a1,-1023
    e880d4e4:	01f7d81b          	srliw	a6,a5,0x1f
    e880d4e8:	0007889b          	sext.w	a7,a5
    e880d4ec:	0007069b          	sext.w	a3,a4
    e880d4f0:	0ec54863          	blt	a0,a2,e880d5e0 <rint+0x110>
    e880d4f4:	08064263          	bltz	a2,e880d578 <rint+0xa8>
    e880d4f8:	001005b7          	lui	a1,0x100
    e880d4fc:	35fd                	addiw	a1,a1,-1
    e880d4fe:	40c5d5bb          	sraw	a1,a1,a2
    e880d502:	00b7f333          	and	t1,a5,a1
    e880d506:	00d36333          	or	t1,t1,a3
    e880d50a:	2301                	sext.w	t1,t1
    e880d50c:	06030163          	beqz	t1,e880d56e <rint+0x9e>
    e880d510:	0015d59b          	srliw	a1,a1,0x1
    e880d514:	00b7f733          	and	a4,a5,a1
    e880d518:	8ed9                	or	a3,a3,a4
    e880d51a:	2681                	sext.w	a3,a3
    e880d51c:	c685                	beqz	a3,e880d544 <rint+0x74>
    e880d51e:	fff5c593          	not	a1,a1
    e880d522:	8dfd                	and	a1,a1,a5
    e880d524:	000407b7          	lui	a5,0x40
    e880d528:	40a60533          	sub	a0,a2,a0
    e880d52c:	00a03533          	snez	a0,a0
    e880d530:	40c7d63b          	sraw	a2,a5,a2
    e880d534:	800007b7          	lui	a5,0x80000
    e880d538:	8e4d                	or	a2,a2,a1
    e880d53a:	42a0178b          	mvnez	a5,zero,a0
    e880d53e:	86be                	mv	a3,a5
    e880d540:	0006089b          	sext.w	a7,a2
    e880d544:	00092797          	auipc	a5,0x92
    e880d548:	6b478793          	addi	a5,a5,1716 # e889fbf8 <TWO52>
    e880d54c:	6707e78b          	flrd	fa5,a5,a6,3
    e880d550:	02089613          	slli	a2,a7,0x20
    e880d554:	7c06b78b          	extu	a5,a3,31,0
    e880d558:	8fd1                	or	a5,a5,a2
    e880d55a:	f2078753          	fmv.d.x	fa4,a5
    e880d55e:	02e7f753          	fadd.d	fa4,fa5,fa4
    e880d562:	a43a                	fsd	fa4,8(sp)
    e880d564:	2722                	fld	fa4,8(sp)
    e880d566:	0af777d3          	fsub.d	fa5,fa4,fa5
    e880d56a:	e2078753          	fmv.x.d	a4,fa5
    e880d56e:	f2070553          	fmv.d.x	fa0,a4
    e880d572:	0141                	addi	sp,sp,16
    e880d574:	8082                	ret
    e880d576:	0001                	nop
    e880d578:	7807b60b          	extu	a2,a5,30,0
    e880d57c:	8e55                	or	a2,a2,a3
    e880d57e:	da65                	beqz	a2,e880d56e <rint+0x9e>
    e880d580:	4c07b78b          	extu	a5,a5,19,0
    e880d584:	8fd5                	or	a5,a5,a3
    e880d586:	40f006bb          	negw	a3,a5
    e880d58a:	8fd5                	or	a5,a5,a3
    e880d58c:	00c7d79b          	srliw	a5,a5,0xc
    e880d590:	000806b7          	lui	a3,0x80
    e880d594:	7601                	lui	a2,0xfffe0
    e880d596:	8ff5                	and	a5,a5,a3
    e880d598:	00c8f633          	and	a2,a7,a2
    e880d59c:	8fd1                	or	a5,a5,a2
    e880d59e:	7c07370b          	extu	a4,a4,31,0
    e880d5a2:	1782                	slli	a5,a5,0x20
    e880d5a4:	8fd9                	or	a5,a5,a4
    e880d5a6:	00092697          	auipc	a3,0x92
    e880d5aa:	65268693          	addi	a3,a3,1618 # e889fbf8 <TWO52>
    e880d5ae:	6706e70b          	flrd	fa4,a3,a6,3
    e880d5b2:	f20787d3          	fmv.d.x	fa5,a5
    e880d5b6:	01f8169b          	slliw	a3,a6,0x1f
    e880d5ba:	02f777d3          	fadd.d	fa5,fa4,fa5
    e880d5be:	a43e                	fsd	fa5,8(sp)
    e880d5c0:	27a2                	fld	fa5,8(sp)
    e880d5c2:	0141                	addi	sp,sp,16
    e880d5c4:	0ae7f7d3          	fsub.d	fa5,fa5,fa4
    e880d5c8:	e20787d3          	fmv.x.d	a5,fa5
    e880d5cc:	fa07b70b          	extu	a4,a5,62,32
    e880d5d0:	8ed9                	or	a3,a3,a4
    e880d5d2:	1682                	slli	a3,a3,0x20
    e880d5d4:	7c07b70b          	extu	a4,a5,31,0
    e880d5d8:	8f55                	or	a4,a4,a3
    e880d5da:	f2070553          	fmv.d.x	fa0,a4
    e880d5de:	8082                	ret
    e880d5e0:	03300793          	li	a5,51
    e880d5e4:	00c7dc63          	bge	a5,a2,e880d5fc <rint+0x12c>
    e880d5e8:	40000793          	li	a5,1024
    e880d5ec:	f8f611e3          	bne	a2,a5,e880d56e <rint+0x9e>
    e880d5f0:	02a577d3          	fadd.d	fa5,fa0,fa0
    e880d5f4:	e2078753          	fmv.x.d	a4,fa5
    e880d5f8:	bf9d                	j	e880d56e <rint+0x9e>
    e880d5fa:	0001                	nop
    e880d5fc:	bed5859b          	addiw	a1,a1,-1043
    e880d600:	557d                	li	a0,-1
    e880d602:	00b5553b          	srlw	a0,a0,a1
    e880d606:	00a6f7b3          	and	a5,a3,a0
    e880d60a:	2781                	sext.w	a5,a5
    e880d60c:	8636                	mv	a2,a3
    e880d60e:	d3a5                	beqz	a5,e880d56e <rint+0x9e>
    e880d610:	0015551b          	srliw	a0,a0,0x1
    e880d614:	00a6f7b3          	and	a5,a3,a0
    e880d618:	2781                	sext.w	a5,a5
    e880d61a:	d78d                	beqz	a5,e880d544 <rint+0x74>
    e880d61c:	fff54513          	not	a0,a0
    e880d620:	400007b7          	lui	a5,0x40000
    e880d624:	00c576b3          	and	a3,a0,a2
    e880d628:	40b7d5bb          	sraw	a1,a5,a1
    e880d62c:	8ecd                	or	a3,a3,a1
    e880d62e:	2681                	sext.w	a3,a3
    e880d630:	bf11                	j	e880d544 <rint+0x74>
	...

00000000e880d640 <scalbn>:
    e880d640:	e2050653          	fmv.x.d	a2,fa0
    e880d644:	fe06378b          	extu	a5,a2,63,32
    e880d648:	7947b70b          	extu	a4,a5,30,20
    e880d64c:	2781                	sext.w	a5,a5
    e880d64e:	e359                	bnez	a4,e880d6d4 <scalbn+0x94>
    e880d650:	7807b78b          	extu	a5,a5,30,0
    e880d654:	8fd1                	or	a5,a5,a2
    e880d656:	2781                	sext.w	a5,a5
    e880d658:	c7d1                	beqz	a5,e880d6e4 <scalbn+0xa4>
    e880d65a:	000c6797          	auipc	a5,0xc6
    e880d65e:	7e67b787          	fld	fa5,2022(a5) # e88d3e40 <dhcp_discover_request_options+0x638>
    e880d662:	12f577d3          	fmul.d	fa5,fa0,fa5
    e880d666:	76d1                	lui	a3,0xffff4
    e880d668:	cb068693          	addi	a3,a3,-848 # ffffffffffff3cb0 <__DRAM0_INF_BASE+0xffffffff00003cb0>
    e880d66c:	e2078653          	fmv.x.d	a2,fa5
    e880d670:	0ed54463          	blt	a0,a3,e880d758 <scalbn+0x118>
    e880d674:	fe06378b          	extu	a5,a2,63,32
    e880d678:	7947b70b          	extu	a4,a5,30,20
    e880d67c:	fca7071b          	addiw	a4,a4,-54
    e880d680:	2781                	sext.w	a5,a5
    e880d682:	1101                	addi	sp,sp,-32
    e880d684:	ec06                	sd	ra,24(sp)
    e880d686:	a422                	fsd	fs0,8(sp)
    e880d688:	9f29                	addw	a4,a4,a0
    e880d68a:	7fe00593          	li	a1,2046
    e880d68e:	86ba                	mv	a3,a4
    e880d690:	08e5cc63          	blt	a1,a4,e880d728 <scalbn+0xe8>
    e880d694:	0ae04063          	bgtz	a4,e880d734 <scalbn+0xf4>
    e880d698:	fcb00593          	li	a1,-53
    e880d69c:	04b75863          	bge	a4,a1,e880d6ec <scalbn+0xac>
    e880d6a0:	67b1                	lui	a5,0xc
    e880d6a2:	35078793          	addi	a5,a5,848 # c350 <memcmp-0xe87f3cb0>
    e880d6a6:	08a7c163          	blt	a5,a0,e880d728 <scalbn+0xe8>
    e880d6aa:	000c7797          	auipc	a5,0xc7
    e880d6ae:	91e7b407          	fld	fs0,-1762(a5) # e88d3fc8 <dhcp_discover_request_options+0x7c0>
    e880d6b2:	f20605d3          	fmv.d.x	fa1,a2
    e880d6b6:	22840553          	fmv.d	fa0,fs0
    e880d6ba:	0c6000ef          	jal	ra,e880d780 <copysign>
    e880d6be:	128577d3          	fmul.d	fa5,fa0,fs0
    e880d6c2:	60e2                	ld	ra,24(sp)
    e880d6c4:	2422                	fld	fs0,8(sp)
    e880d6c6:	6105                	addi	sp,sp,32
    e880d6c8:	e2078653          	fmv.x.d	a2,fa5
    e880d6cc:	f2060553          	fmv.d.x	fa0,a2
    e880d6d0:	8082                	ret
    e880d6d2:	0001                	nop
    e880d6d4:	7ff00693          	li	a3,2047
    e880d6d8:	fad715e3          	bne	a4,a3,e880d682 <scalbn+0x42>
    e880d6dc:	02a577d3          	fadd.d	fa5,fa0,fa0
    e880d6e0:	e2078653          	fmv.x.d	a2,fa5
    e880d6e4:	f2060553          	fmv.d.x	fa0,a2
    e880d6e8:	8082                	ret
    e880d6ea:	0001                	nop
    e880d6ec:	801006b7          	lui	a3,0x80100
    e880d6f0:	0367071b          	addiw	a4,a4,54
    e880d6f4:	16fd                	addi	a3,a3,-1
    e880d6f6:	0147171b          	slliw	a4,a4,0x14
    e880d6fa:	8efd                	and	a3,a3,a5
    e880d6fc:	8ed9                	or	a3,a3,a4
    e880d6fe:	02069713          	slli	a4,a3,0x20
    e880d702:	7c06360b          	extu	a2,a2,31,0
    e880d706:	8e59                	or	a2,a2,a4
    e880d708:	f2060753          	fmv.d.x	fa4,a2
    e880d70c:	000c7797          	auipc	a5,0xc7
    e880d710:	9f47b787          	fld	fa5,-1548(a5) # e88d4100 <dhcp_discover_request_options+0x8f8>
    e880d714:	60e2                	ld	ra,24(sp)
    e880d716:	12e7f7d3          	fmul.d	fa5,fa5,fa4
    e880d71a:	2422                	fld	fs0,8(sp)
    e880d71c:	6105                	addi	sp,sp,32
    e880d71e:	e2078653          	fmv.x.d	a2,fa5
    e880d722:	f2060553          	fmv.d.x	fa0,a2
    e880d726:	8082                	ret
    e880d728:	000c6797          	auipc	a5,0xc6
    e880d72c:	7807b407          	fld	fs0,1920(a5) # e88d3ea8 <dhcp_discover_request_options+0x6a0>
    e880d730:	b749                	j	e880d6b2 <scalbn+0x72>
    e880d732:	0001                	nop
    e880d734:	80100737          	lui	a4,0x80100
    e880d738:	177d                	addi	a4,a4,-1
    e880d73a:	8f7d                	and	a4,a4,a5
    e880d73c:	0146979b          	slliw	a5,a3,0x14
    e880d740:	60e2                	ld	ra,24(sp)
    e880d742:	8f5d                	or	a4,a4,a5
    e880d744:	02071793          	slli	a5,a4,0x20
    e880d748:	7c06360b          	extu	a2,a2,31,0
    e880d74c:	8e5d                	or	a2,a2,a5
    e880d74e:	2422                	fld	fs0,8(sp)
    e880d750:	f2060553          	fmv.d.x	fa0,a2
    e880d754:	6105                	addi	sp,sp,32
    e880d756:	8082                	ret
    e880d758:	f2060753          	fmv.d.x	fa4,a2
    e880d75c:	000c7797          	auipc	a5,0xc7
    e880d760:	86c7b787          	fld	fa5,-1940(a5) # e88d3fc8 <dhcp_discover_request_options+0x7c0>
    e880d764:	12f777d3          	fmul.d	fa5,fa4,fa5
    e880d768:	e2078653          	fmv.x.d	a2,fa5
    e880d76c:	f2060553          	fmv.d.x	fa0,a2
    e880d770:	8082                	ret
	...

00000000e880d780 <copysign>:
    e880d780:	e20586d3          	fmv.x.d	a3,fa1
    e880d784:	e20507d3          	fmv.x.d	a5,fa0
    e880d788:	80000637          	lui	a2,0x80000
    e880d78c:	fe06b68b          	extu	a3,a3,63,32
    e880d790:	fa07b70b          	extu	a4,a5,62,32
    e880d794:	8ef1                	and	a3,a3,a2
    e880d796:	8f55                	or	a4,a4,a3
    e880d798:	1702                	slli	a4,a4,0x20
    e880d79a:	7c07b78b          	extu	a5,a5,31,0
    e880d79e:	8fd9                	or	a5,a5,a4
    e880d7a0:	f2078553          	fmv.d.x	fa0,a5
    e880d7a4:	8082                	ret
	...

00000000e880d7c0 <__errno>:
    e880d7c0:	000c7797          	auipc	a5,0xc7
    e880d7c4:	94878793          	addi	a5,a5,-1720 # e88d4108 <_impure_ptr>
    e880d7c8:	6388                	ld	a0,0(a5)
    e880d7ca:	8082                	ret
    e880d7cc:	0000                	unimp
    e880d7ce:	0000                	unimp
	...

00000000e880d7d2 <iAP2LinkConnectedCB>:
}

//ص:ӶϿ
void iAP2LinkConnectedCB(struct iAP2Link_t* link,BOOL bConnected)
{
	printf("iAP2LinkConnectedCB %d\n",bConnected);
    e880d7d2:	00092517          	auipc	a0,0x92
    e880d7d6:	78650513          	addi	a0,a0,1926 # e889ff58 <TWO52+0x360>
    e880d7da:	2ed6e06f          	j	e887c2c6 <eLIBs_printf>

00000000e880d7de <iAP2LinkThread>:
	}
}

//
void iAP2LinkThread(void *inArg)
{
    e880d7de:	1141                	addi	sp,sp,-16
    e880d7e0:	e406                	sd	ra,8(sp)
    e880d7e2:	e022                	sd	s0,0(sp)
    e880d7e4:	842a                	mv	s0,a0
	iAP2LinkRunLoop_t* plinkRunLoop = (iAP2LinkRunLoop_t*)inArg;

    SetThreadName(GetCurrentThreadId(),_T("iAP2LinkThread"));
    e880d7e6:	69a6e0ef          	jal	ra,e887be80 <esKRNL_GetTIDCur>
    e880d7ea:	2501                	sext.w	a0,a0
    e880d7ec:	00093597          	auipc	a1,0x93
    e880d7f0:	8e458593          	addi	a1,a1,-1820 # e88a00d0 <TWO52+0x4d8>
    e880d7f4:	7116d0ef          	jal	ra,e887b704 <SetThreadName>

	printf("iAP2LinkThread start run\n");
    e880d7f8:	00093517          	auipc	a0,0x93
    e880d7fc:	8e850513          	addi	a0,a0,-1816 # e88a00e0 <TWO52+0x4e8>
    e880d800:	2c76e0ef          	jal	ra,e887c2c6 <eLIBs_printf>

	iAP2LinkRunLoopRun(plinkRunLoop);
    e880d804:	8522                	mv	a0,s0
    e880d806:	1d5030ef          	jal	ra,e88111da <iAP2LinkRunLoopRun>
	
	printf("iAP2LinkThread exit\n");
    e880d80a:	00093517          	auipc	a0,0x93
    e880d80e:	8f650513          	addi	a0,a0,-1802 # e88a0100 <TWO52+0x508>
    e880d812:	2b56e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pthread_exit(0);
	return NULL;
}
    e880d816:	6402                	ld	s0,0(sp)
    e880d818:	60a2                	ld	ra,8(sp)
    pthread_exit(0);
    e880d81a:	4501                	li	a0,0
}
    e880d81c:	0141                	addi	sp,sp,16
    pthread_exit(0);
    e880d81e:	1ec6e06f          	j	e887ba0a <pthread_exit>

00000000e880d822 <_iAP2TimeCallbackAfter>:
{
    e880d822:	7179                	addi	sp,sp,-48
	if(!bThreadRun)
    e880d824:	000ca797          	auipc	a5,0xca
    e880d828:	b7078793          	addi	a5,a5,-1168 # e88d7394 <bThreadRun>
{
    e880d82c:	ec22                	sd	s0,24(sp)
    e880d82e:	f026                	sd	s1,32(sp)
    e880d830:	f406                	sd	ra,40(sp)
	if(!bThreadRun)
    e880d832:	439c                	lw	a5,0(a5)
{
    e880d834:	842e                	mv	s0,a1
    e880d836:	84b2                	mv	s1,a2
	if(!bThreadRun)
    e880d838:	eb91                	bnez	a5,e880d84c <_iAP2TimeCallbackAfter+0x2a>
    e880d83a:	86aa                	mv	a3,a0
		pthread_create(&tidp,NULL,iAP2TimeThread,timer);
    e880d83c:	00000617          	auipc	a2,0x0
    e880d840:	05460613          	addi	a2,a2,84 # e880d890 <iAP2TimeThread>
    e880d844:	4581                	li	a1,0
    e880d846:	0068                	addi	a0,sp,12
    e880d848:	1fc6e0ef          	jal	ra,e887ba44 <pthread_create>
	timeOut = GetTickCount() + delayMs;
    e880d84c:	58d6d0ef          	jal	ra,e887b5d8 <GetTickCount>
    e880d850:	9d21                	addw	a0,a0,s0
}
    e880d852:	70a2                	ld	ra,40(sp)
    e880d854:	6462                	ld	s0,24(sp)
	timeOut = GetTickCount() + delayMs;
    e880d856:	000cb797          	auipc	a5,0xcb
    e880d85a:	b6a7a323          	sw	a0,-1178(a5) # e88d83bc <timeOut>
	timeOutCallback = callback;
    e880d85e:	000cb797          	auipc	a5,0xcb
    e880d862:	b697b123          	sd	s1,-1182(a5) # e88d83c0 <timeOutCallback>
}
    e880d866:	4505                	li	a0,1
    e880d868:	7482                	ld	s1,32(sp)
    e880d86a:	6145                	addi	sp,sp,48
    e880d86c:	8082                	ret

00000000e880d86e <_iAP2TimePerformCallback>:
{
    e880d86e:	1101                	addi	sp,sp,-32
    e880d870:	e422                	sd	s0,8(sp)
    e880d872:	e826                	sd	s1,16(sp)
    e880d874:	ec06                	sd	ra,24(sp)
    e880d876:	842e                	mv	s0,a1
    e880d878:	84aa                	mv	s1,a0
	callback(timer,GetTickCount());
    e880d87a:	55f6d0ef          	jal	ra,e887b5d8 <GetTickCount>
    e880d87e:	0005059b          	sext.w	a1,a0
    e880d882:	8322                	mv	t1,s0
}
    e880d884:	6422                	ld	s0,8(sp)
    e880d886:	60e2                	ld	ra,24(sp)
	callback(timer,GetTickCount());
    e880d888:	8526                	mv	a0,s1
}
    e880d88a:	64c2                	ld	s1,16(sp)
    e880d88c:	6105                	addi	sp,sp,32
	callback(timer,GetTickCount());
    e880d88e:	8302                	jr	t1

00000000e880d890 <iAP2TimeThread>:
	bThreadRun = TRUE;
    e880d890:	4785                	li	a5,1
{
    e880d892:	7179                	addi	sp,sp,-48
	bThreadRun = TRUE;
    e880d894:	000ca717          	auipc	a4,0xca
    e880d898:	b0f72023          	sw	a5,-1280(a4) # e88d7394 <bThreadRun>
{
    e880d89c:	f406                	sd	ra,40(sp)
    e880d89e:	e422                	sd	s0,8(sp)
    e880d8a0:	e826                	sd	s1,16(sp)
    e880d8a2:	ec4a                	sd	s2,24(sp)
    e880d8a4:	f04e                	sd	s3,32(sp)
    e880d8a6:	892a                	mv	s2,a0
	bThreadExit = FALSE;
    e880d8a8:	000ca797          	auipc	a5,0xca
    e880d8ac:	ae07a423          	sw	zero,-1304(a5) # e88d7390 <bThreadExit>
    SetThreadName(GetCurrentThreadId(),_T("iAP2TimeThread"));
    e880d8b0:	5d06e0ef          	jal	ra,e887be80 <esKRNL_GetTIDCur>
    e880d8b4:	2501                	sext.w	a0,a0
    e880d8b6:	00093597          	auipc	a1,0x93
    e880d8ba:	86258593          	addi	a1,a1,-1950 # e88a0118 <TWO52+0x520>
    e880d8be:	6476d0ef          	jal	ra,e887b704 <SetThreadName>
	while(!bThreadExit)
    e880d8c2:	000ca497          	auipc	s1,0xca
    e880d8c6:	ace48493          	addi	s1,s1,-1330 # e88d7390 <bThreadExit>
	printf("iAP2TimeThread start run\n");
    e880d8ca:	00093517          	auipc	a0,0x93
    e880d8ce:	85e50513          	addi	a0,a0,-1954 # e88a0128 <TWO52+0x530>
    e880d8d2:	1f56e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
		if(timeOutCallback != NULL)
    e880d8d6:	000cb417          	auipc	s0,0xcb
    e880d8da:	aea40413          	addi	s0,s0,-1302 # e88d83c0 <timeOutCallback>
			if(curTime > timeOut)
    e880d8de:	000cb997          	auipc	s3,0xcb
    e880d8e2:	ade98993          	addi	s3,s3,-1314 # e88d83bc <timeOut>
	while(!bThreadExit)
    e880d8e6:	409c                	lw	a5,0(s1)
    e880d8e8:	c795                	beqz	a5,e880d914 <iAP2TimeThread+0x84>
	printf("iAP2TimeThread exit\n");
    e880d8ea:	00093517          	auipc	a0,0x93
    e880d8ee:	85e50513          	addi	a0,a0,-1954 # e88a0148 <TWO52+0x550>
    e880d8f2:	1d56e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	bThreadRun = FALSE;
    e880d8f6:	000ca797          	auipc	a5,0xca
    e880d8fa:	a807af23          	sw	zero,-1378(a5) # e88d7394 <bThreadRun>
    pthread_exit(0);
    e880d8fe:	4501                	li	a0,0
    e880d900:	10a6e0ef          	jal	ra,e887ba0a <pthread_exit>
}
    e880d904:	6422                	ld	s0,8(sp)
    e880d906:	70a2                	ld	ra,40(sp)
    e880d908:	64c2                	ld	s1,16(sp)
    e880d90a:	6962                	ld	s2,24(sp)
    e880d90c:	7982                	ld	s3,32(sp)
    e880d90e:	4501                	li	a0,0
    e880d910:	6145                	addi	sp,sp,48
    e880d912:	8082                	ret
		Sleep(10);
    e880d914:	4505                	li	a0,1
    e880d916:	7006e0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		if(timeOutCallback != NULL)
    e880d91a:	601c                	ld	a5,0(s0)
    e880d91c:	d7e9                	beqz	a5,e880d8e6 <iAP2TimeThread+0x56>
			curTime = GetTickCount();
    e880d91e:	4bb6d0ef          	jal	ra,e887b5d8 <GetTickCount>
    e880d922:	2501                	sext.w	a0,a0
			if(curTime > timeOut)
    e880d924:	0009a783          	lw	a5,0(s3)
    e880d928:	faa7ffe3          	bgeu	a5,a0,e880d8e6 <iAP2TimeThread+0x56>
				iAP2TimeCB_t callback = timeOutCallback;
    e880d92c:	600c                	ld	a1,0(s0)
				_iAP2TimePerformCallback(timer,callback);
    e880d92e:	854a                	mv	a0,s2
				timeOutCallback = NULL;
    e880d930:	000cb797          	auipc	a5,0xcb
    e880d934:	a807b823          	sd	zero,-1392(a5) # e88d83c0 <timeOutCallback>
				_iAP2TimePerformCallback(timer,callback);
    e880d938:	f37ff0ef          	jal	ra,e880d86e <_iAP2TimePerformCallback>
    e880d93c:	b76d                	j	e880d8e6 <iAP2TimeThread+0x56>

00000000e880d93e <_iAP2TimeCancelCallback>:
	timeOutCallback = NULL;
    e880d93e:	000cb797          	auipc	a5,0xcb
    e880d942:	a807b123          	sd	zero,-1406(a5) # e88d83c0 <timeOutCallback>
}
    e880d946:	8082                	ret

00000000e880d948 <SendControlSession>:
{
    e880d948:	7139                	addi	sp,sp,-64
    e880d94a:	fd31590b          	sdd	s2,s3,(sp),2,4
	int payloadlen = parameterLen+6;
    e880d94e:	0066899b          	addiw	s3,a3,6
{
    e880d952:	f852                	sd	s4,48(sp)
    e880d954:	8a2a                	mv	s4,a0
	uint8_t* payload = (uint8_t*)malloc(payloadlen);
    e880d956:	854e                	mv	a0,s3
{
    e880d958:	892e                	mv	s2,a1
    e880d95a:	fa91540b          	sdd	s0,s1,(sp),1,4
    e880d95e:	fc06                	sd	ra,56(sp)
    e880d960:	e432                	sd	a2,8(sp)
	int payloadlen = parameterLen+6;
    e880d962:	e036                	sd	a3,0(sp)
	uint8_t* payload = (uint8_t*)malloc(payloadlen);
    e880d964:	6eb6d0ef          	jal	ra,e887b84e <my_malloc>
	payload[2] = (uint8_t)(payloadlen>>8)&0xFF;
    e880d968:	0089949b          	slliw	s1,s3,0x8
	payload[0] = 0x40;
    e880d96c:	6791                	lui	a5,0x4
    e880d96e:	0407879b          	addiw	a5,a5,64
    e880d972:	00f51023          	sh	a5,0(a0)
	payload[2] = (uint8_t)(payloadlen>>8)&0xFF;
    e880d976:	3c89b78b          	extu	a5,s3,15,8
    e880d97a:	8cdd                	or	s1,s1,a5
	payload[4] = (uint8_t)(messageID>>8)&0xFF;
    e880d97c:	00891793          	slli	a5,s2,0x8
    e880d980:	5c89390b          	extu	s2,s2,23,8
    e880d984:	0127e933          	or	s2,a5,s2
	if(parameter != NULL && parameterLen > 0)
    e880d988:	65a2                	ld	a1,8(sp)
	payload[2] = (uint8_t)(payloadlen>>8)&0xFF;
    e880d98a:	00951123          	sh	s1,2(a0)
	payload[4] = (uint8_t)(messageID>>8)&0xFF;
    e880d98e:	01251223          	sh	s2,4(a0)
	uint8_t* payload = (uint8_t*)malloc(payloadlen);
    e880d992:	842a                	mv	s0,a0
	if(parameter != NULL && parameterLen > 0)
    e880d994:	c599                	beqz	a1,e880d9a2 <SendControlSession+0x5a>
    e880d996:	6682                	ld	a3,0(sp)
    e880d998:	c689                	beqz	a3,e880d9a2 <SendControlSession+0x5a>
		memcpy(payload+6,parameter,parameterLen);
    e880d99a:	8636                	mv	a2,a3
    e880d99c:	0519                	addi	a0,a0,6
    e880d99e:	2036e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	iAP2LinkQueueSendData(link,payload,payloadlen,1,NULL,NULL);
    e880d9a2:	864e                	mv	a2,s3
    e880d9a4:	85a2                	mv	a1,s0
    e880d9a6:	8552                	mv	a0,s4
    e880d9a8:	4781                	li	a5,0
    e880d9aa:	4701                	li	a4,0
    e880d9ac:	4685                	li	a3,1
    e880d9ae:	5c3020ef          	jal	ra,e8810770 <iAP2LinkQueueSendData>
}
    e880d9b2:	7a42                	ld	s4,48(sp)
	free(payload);
    e880d9b4:	8522                	mv	a0,s0
}
    e880d9b6:	fa91440b          	ldd	s0,s1,(sp),1,4
    e880d9ba:	70e2                	ld	ra,56(sp)
    e880d9bc:	fd31490b          	ldd	s2,s3,(sp),2,4
    e880d9c0:	6121                	addi	sp,sp,64
	free(payload);
    e880d9c2:	13f6e06f          	j	e887c300 <eLIBs_free>

00000000e880d9c6 <GenerateParameter>:
	*parameterLen = subParameterLen + 4;
    e880d9c6:	0047079b          	addiw	a5,a4,4
    e880d9ca:	3c07b78b          	extu	a5,a5,15,0
    e880d9ce:	00f59023          	sh	a5,0(a1)
	parameter[0] = (*parameterLen>>8);
    e880d9d2:	0087d79b          	srliw	a5,a5,0x8
    e880d9d6:	00f50023          	sb	a5,0(a0)
	parameter[1] = *parameterLen;
    e880d9da:	0005d783          	lhu	a5,0(a1)
	memcpy(parameter+4,subParameter,subParameterLen);
    e880d9de:	863a                	mv	a2,a4
	parameter[2] = 0x00;
    e880d9e0:	00051123          	sh	zero,2(a0)
	parameter[1] = *parameterLen;
    e880d9e4:	00f500a3          	sb	a5,1(a0)
	memcpy(parameter+4,subParameter,subParameterLen);
    e880d9e8:	85b6                	mv	a1,a3
    e880d9ea:	0511                	addi	a0,a0,4
    e880d9ec:	1b56e06f          	j	e887c3a0 <eLIBs_memcpy>

00000000e880d9f0 <GetSubParameter>:
	if(parameterLen <= 0)
    e880d9f0:	00c05563          	blez	a2,e880d9fa <GetSubParameter+0xa>
	pDataEnd = parameter + parameterLen;
    e880d9f4:	962e                	add	a2,a2,a1
	while(pData < pDataEnd)
    e880d9f6:	00c5e463          	bltu	a1,a2,e880d9fe <GetSubParameter+0xe>
		return FALSE;
    e880d9fa:	4501                	li	a0,0
}
    e880d9fc:	8082                	ret
		len = ((uint16_t)pData[0] << 8) | pData[1];
    e880d9fe:	0005d803          	lhu	a6,0(a1)
		if(id == reqID)
    e880da02:	0035c883          	lbu	a7,3(a1)
    e880da06:	0088179b          	slliw	a5,a6,0x8
    e880da0a:	5c88380b          	extu	a6,a6,23,8
    e880da0e:	0107e7b3          	or	a5,a5,a6
    e880da12:	3c07b78b          	extu	a5,a5,15,0
    e880da16:	0007881b          	sext.w	a6,a5
    e880da1a:	00a89963          	bne	a7,a0,e880da2c <GetSubParameter+0x3c>
			*subParameter = pData + 4;
    e880da1e:	0591                	addi	a1,a1,4
    e880da20:	e28c                	sd	a1,0(a3)
			*subParameterLen = len - 4;
    e880da22:	3871                	addiw	a6,a6,-4
    e880da24:	01072023          	sw	a6,0(a4)
			return TRUE;
    e880da28:	4505                	li	a0,1
    e880da2a:	8082                	ret
		pData += len;
    e880da2c:	95be                	add	a1,a1,a5
    e880da2e:	b7e1                	j	e880d9f6 <GetSubParameter+0x6>

00000000e880da30 <BuildParameter>:
{
    e880da30:	7175                	addi	sp,sp,-144
    e880da32:	e122                	sd	s0,128(sp)
    e880da34:	fca6                	sd	s1,120(sp)
    e880da36:	f8ca                	sd	s2,112(sp)
    e880da38:	ecd6                	sd	s5,88(sp)
    e880da3a:	e8da                	sd	s6,80(sp)
    e880da3c:	e4de                	sd	s7,72(sp)
    e880da3e:	e0e2                	sd	s8,64(sp)
    e880da40:	fc66                	sd	s9,56(sp)
    e880da42:	f86a                	sd	s10,48(sp)
    e880da44:	e506                	sd	ra,136(sp)
    e880da46:	f4ce                	sd	s3,104(sp)
    e880da48:	f0d2                	sd	s4,96(sp)
    e880da4a:	f46e                	sd	s11,40(sp)
    e880da4c:	892a                	mv	s2,a0
    e880da4e:	4481                	li	s1,0
	uint8_t *pData = payLoad;
    e880da50:	842e                	mv	s0,a1
	for(i=0;;i++)
    e880da52:	4a81                	li	s5,0
		if(parameter[i].type == DATA_TYPE_NONE)
    e880da54:	06000b93          	li	s7,96
		switch(parameter[i].type)
    e880da58:	4c19                	li	s8,6
    e880da5a:	00092b17          	auipc	s6,0x92
    e880da5e:	1aeb0b13          	addi	s6,s6,430 # e889fc08 <TWO52+0x10>
				pData[0] = (uint8_t)(len >> 8);
    e880da62:	60000c93          	li	s9,1536
				pData[0] = (uint8_t)(len >> 8);
    e880da66:	50000d13          	li	s10,1280
		if(parameter[i].type == DATA_TYPE_NONE)
    e880da6a:	037a89b3          	mul	s3,s5,s7
    e880da6e:	01390a33          	add	s4,s2,s3
    e880da72:	002a4783          	lbu	a5,2(s4)
    e880da76:	1e078d63          	beqz	a5,e880dc70 <BuildParameter+0x240>
		switch(parameter[i].type)
    e880da7a:	37fd                	addiw	a5,a5,-1
    e880da7c:	0ff7f793          	andi	a5,a5,255
    e880da80:	02fc6563          	bltu	s8,a5,e880daaa <BuildParameter+0x7a>
    e880da84:	44fb478b          	lrw	a5,s6,a5,2
    e880da88:	97da                	add	a5,a5,s6
    e880da8a:	8782                	jr	a5
				pData[0] = (uint8_t)(len >> 8);
    e880da8c:	40000793          	li	a5,1024
    e880da90:	00f41023          	sh	a5,0(s0)
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880da94:	a139478b          	lrhu	a5,s2,s3,0
				len = 4 + 0;
    e880da98:	4491                	li	s1,4
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880da9a:	0087d79b          	srliw	a5,a5,0x8
    e880da9e:	00f40123          	sb	a5,2(s0)
				pData[3] = (uint8_t)(parameter[i].id);
    e880daa2:	a139478b          	lrhu	a5,s2,s3,0
    e880daa6:	00f401a3          	sb	a5,3(s0)
		pData += len;
    e880daaa:	9426                	add	s0,s0,s1
	for(i=0;;i++)
    e880daac:	2a85                	addiw	s5,s5,1
		if(parameter[i].type == DATA_TYPE_NONE)
    e880daae:	bf75                	j	e880da6a <BuildParameter+0x3a>
				pData[0] = (uint8_t)(len >> 8);
    e880dab0:	01a41023          	sh	s10,0(s0)
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880dab4:	a139478b          	lrhu	a5,s2,s3,0
				len = 4 + 1;
    e880dab8:	4495                	li	s1,5
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880daba:	0087d79b          	srliw	a5,a5,0x8
    e880dabe:	00f40123          	sb	a5,2(s0)
				pData[3] = (uint8_t)(parameter[i].id);
    e880dac2:	a139478b          	lrhu	a5,s2,s3,0
    e880dac6:	00f401a3          	sb	a5,3(s0)
				pData[4] = parameter[i].data.byte;
    e880daca:	008a4783          	lbu	a5,8(s4)
    e880dace:	00f40223          	sb	a5,4(s0)
				break;
    e880dad2:	bfe1                	j	e880daaa <BuildParameter+0x7a>
				pData[0] = (uint8_t)(len >> 8);
    e880dad4:	01941023          	sh	s9,0(s0)
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880dad8:	a139478b          	lrhu	a5,s2,s3,0
				len = 4 + 2;
    e880dadc:	4499                	li	s1,6
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880dade:	0087d79b          	srliw	a5,a5,0x8
    e880dae2:	00f40123          	sb	a5,2(s0)
				pData[3] = (uint8_t)(parameter[i].id);
    e880dae6:	a139478b          	lrhu	a5,s2,s3,0
    e880daea:	00f401a3          	sb	a5,3(s0)
				pData[4] = (uint8_t)(parameter[i].data.word >> 8);
    e880daee:	008a5783          	lhu	a5,8(s4)
    e880daf2:	0087d79b          	srliw	a5,a5,0x8
    e880daf6:	00f40223          	sb	a5,4(s0)
				pData[5] = (uint8_t)(parameter[i].data.word);
    e880dafa:	008a5783          	lhu	a5,8(s4)
    e880dafe:	00f402a3          	sb	a5,5(s0)
				break;
    e880db02:	b765                	j	e880daaa <BuildParameter+0x7a>
				len = 4 + strlen(parameter[i].data.str) + 1;
    e880db04:	008a3503          	ld	a0,8(s4)
    e880db08:	0116e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e880db0c:	2515                	addiw	a0,a0,5
    e880db0e:	3c05348b          	extu	s1,a0,15,0
				pData[0] = (uint8_t)(len >> 8);
    e880db12:	5c84b70b          	extu	a4,s1,23,8
    e880db16:	00849793          	slli	a5,s1,0x8
    e880db1a:	8fd9                	or	a5,a5,a4
    e880db1c:	00f41023          	sh	a5,0(s0)
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880db20:	a139478b          	lrhu	a5,s2,s3,0
    e880db24:	0087d79b          	srliw	a5,a5,0x8
    e880db28:	00f40123          	sb	a5,2(s0)
				pData[3] = (uint8_t)(parameter[i].id);
    e880db2c:	a139478b          	lrhu	a5,s2,s3,0
    e880db30:	00f401a3          	sb	a5,3(s0)
				memcpy(pData+4,(uint8_t*)parameter[i].data.str,strlen(parameter[i].data.str) + 1);
    e880db34:	008a3583          	ld	a1,8(s4)
    e880db38:	852e                	mv	a0,a1
    e880db3a:	e42e                	sd	a1,8(sp)
    e880db3c:	7dc6e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e880db40:	0015061b          	addiw	a2,a0,1
    e880db44:	65a2                	ld	a1,8(sp)
    e880db46:	7c06360b          	extu	a2,a2,31,0
    e880db4a:	00440513          	addi	a0,s0,4
    e880db4e:	0536e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
				break;
    e880db52:	bfa1                	j	e880daaa <BuildParameter+0x7a>
				len = 4 + parameter[i].data.wordArray.number * 2;
    e880db54:	008a4483          	lbu	s1,8(s4)
    e880db58:	2489                	addiw	s1,s1,2
    e880db5a:	0486                	slli	s1,s1,0x1
				pData[0] = (uint8_t)(len >> 8);
    e880db5c:	5c84b70b          	extu	a4,s1,23,8
    e880db60:	00849793          	slli	a5,s1,0x8
    e880db64:	8fd9                	or	a5,a5,a4
    e880db66:	00f41023          	sh	a5,0(s0)
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880db6a:	a139478b          	lrhu	a5,s2,s3,0
    e880db6e:	00440713          	addi	a4,s0,4
    e880db72:	0087d79b          	srliw	a5,a5,0x8
    e880db76:	00f40123          	sb	a5,2(s0)
				pData[3] = (uint8_t)(parameter[i].id);
    e880db7a:	a139478b          	lrhu	a5,s2,s3,0
    e880db7e:	00f401a3          	sb	a5,3(s0)
				for(j=0;j<parameter[i].data.wordArray.number;j++)
    e880db82:	4781                	li	a5,0
    e880db84:	008a4683          	lbu	a3,8(s4)
    e880db88:	f2d7d1e3          	bge	a5,a3,e880daaa <BuildParameter+0x7a>
					pData[4+2*j] = (uint8_t)(parameter[i].data.wordArray.word[j] >> 8);
    e880db8c:	02fa160b          	addsl	a2,s4,a5,1
    e880db90:	00a65683          	lhu	a3,10(a2)
				for(j=0;j<parameter[i].data.wordArray.number;j++)
    e880db94:	2785                	addiw	a5,a5,1
    e880db96:	0709                	addi	a4,a4,2
					pData[4+2*j] = (uint8_t)(parameter[i].data.wordArray.word[j] >> 8);
    e880db98:	0086d69b          	srliw	a3,a3,0x8
    e880db9c:	fed70f23          	sb	a3,-2(a4)
					pData[4+2*j+1] = (uint8_t)(parameter[i].data.wordArray.word[j]);
    e880dba0:	00a65683          	lhu	a3,10(a2)
    e880dba4:	fed70fa3          	sb	a3,-1(a4)
				for(j=0;j<parameter[i].data.wordArray.number;j++)
    e880dba8:	bff1                	j	e880db84 <BuildParameter+0x154>
					len += strlen(parameter[i].data.strArray.str[j])+1;
    e880dbaa:	07ba178b          	addsl	a5,s4,s11,3
    e880dbae:	6b88                	ld	a0,16(a5)
				for(j=0;j<parameter[i].data.strArray.number;j++)
    e880dbb0:	2d85                	addiw	s11,s11,1
					len += strlen(parameter[i].data.strArray.str[j])+1;
    e880dbb2:	7666e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e880dbb6:	2505                	addiw	a0,a0,1
    e880dbb8:	9ca9                	addw	s1,s1,a0
    e880dbba:	3c04b48b          	extu	s1,s1,15,0
				for(j=0;j<parameter[i].data.strArray.number;j++)
    e880dbbe:	008a4783          	lbu	a5,8(s4)
    e880dbc2:	fefdc4e3          	blt	s11,a5,e880dbaa <BuildParameter+0x17a>
				pData[0] = (uint8_t)(len >> 8);
    e880dbc6:	00849793          	slli	a5,s1,0x8
    e880dbca:	5c84b70b          	extu	a4,s1,23,8
    e880dbce:	8fd9                	or	a5,a5,a4
    e880dbd0:	00f41023          	sh	a5,0(s0)
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880dbd4:	a139478b          	lrhu	a5,s2,s3,0
				for(j=0;j<parameter[i].data.strArray.number;j++)
    e880dbd8:	4d81                	li	s11,0
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880dbda:	0087d79b          	srliw	a5,a5,0x8
    e880dbde:	00f40123          	sb	a5,2(s0)
				pData[3] = (uint8_t)(parameter[i].id);
    e880dbe2:	a139478b          	lrhu	a5,s2,s3,0
				lenTemp = 0;
    e880dbe6:	4981                	li	s3,0
				pData[3] = (uint8_t)(parameter[i].id);
    e880dbe8:	00f401a3          	sb	a5,3(s0)
				for(j=0;j<parameter[i].data.strArray.number;j++)
    e880dbec:	008a4783          	lbu	a5,8(s4)
    e880dbf0:	eafddde3          	bge	s11,a5,e880daaa <BuildParameter+0x7a>
					memcpy(pData+4+lenTemp,(uint8_t*)parameter[i].data.strArray.str[j],strlen(parameter[i].data.strArray.str[j])+1);
    e880dbf4:	07ba170b          	addsl	a4,s4,s11,3
    e880dbf8:	6b0c                	ld	a1,16(a4)
    e880dbfa:	00498793          	addi	a5,s3,4
    e880dbfe:	97a2                	add	a5,a5,s0
    e880dc00:	852e                	mv	a0,a1
    e880dc02:	e83a                	sd	a4,16(sp)
    e880dc04:	ec3e                	sd	a5,24(sp)
    e880dc06:	e42e                	sd	a1,8(sp)
    e880dc08:	7106e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e880dc0c:	0015061b          	addiw	a2,a0,1
    e880dc10:	67e2                	ld	a5,24(sp)
    e880dc12:	65a2                	ld	a1,8(sp)
    e880dc14:	7c06360b          	extu	a2,a2,31,0
    e880dc18:	853e                	mv	a0,a5
    e880dc1a:	7866e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
				for(j=0;j<parameter[i].data.strArray.number;j++)
    e880dc1e:	2d85                	addiw	s11,s11,1
					lenTemp += strlen(parameter[i].data.strArray.str[j])+1;
    e880dc20:	6742                	ld	a4,16(sp)
    e880dc22:	6b08                	ld	a0,16(a4)
    e880dc24:	6f46e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e880dc28:	2505                	addiw	a0,a0,1
    e880dc2a:	013509bb          	addw	s3,a0,s3
    e880dc2e:	3c09b98b          	extu	s3,s3,15,0
				for(j=0;j<parameter[i].data.strArray.number;j++)
    e880dc32:	bf6d                	j	e880dbec <BuildParameter+0x1bc>
				len = 4;
    e880dc34:	4491                	li	s1,4
				for(j=0;j<parameter[i].data.strArray.number;j++)
    e880dc36:	4d81                	li	s11,0
    e880dc38:	b759                	j	e880dbbe <BuildParameter+0x18e>
				len = BuildParameter((S_PARAMETER*)parameter[i].data.parameter,pData+4) - pData;
    e880dc3a:	008a3503          	ld	a0,8(s4)
    e880dc3e:	00440593          	addi	a1,s0,4
    e880dc42:	defff0ef          	jal	ra,e880da30 <BuildParameter>
    e880dc46:	8d01                	sub	a0,a0,s0
				pData[0] = (uint8_t)(len >> 8);
    e880dc48:	00851793          	slli	a5,a0,0x8
				len = BuildParameter((S_PARAMETER*)parameter[i].data.parameter,pData+4) - pData;
    e880dc4c:	3c05348b          	extu	s1,a0,15,0
				pData[0] = (uint8_t)(len >> 8);
    e880dc50:	3c85350b          	extu	a0,a0,15,8
    e880dc54:	8d5d                	or	a0,a0,a5
    e880dc56:	00a41023          	sh	a0,0(s0)
				pData[2] = (uint8_t)(parameter[i].id >> 8);
    e880dc5a:	a139478b          	lrhu	a5,s2,s3,0
    e880dc5e:	0087d79b          	srliw	a5,a5,0x8
    e880dc62:	00f40123          	sb	a5,2(s0)
				pData[3] = (uint8_t)(parameter[i].id);
    e880dc66:	a139478b          	lrhu	a5,s2,s3,0
    e880dc6a:	00f401a3          	sb	a5,3(s0)
				break;
    e880dc6e:	bd35                	j	e880daaa <BuildParameter+0x7a>
}
    e880dc70:	8522                	mv	a0,s0
    e880dc72:	60aa                	ld	ra,136(sp)
    e880dc74:	640a                	ld	s0,128(sp)
    e880dc76:	74e6                	ld	s1,120(sp)
    e880dc78:	7946                	ld	s2,112(sp)
    e880dc7a:	79a6                	ld	s3,104(sp)
    e880dc7c:	7a06                	ld	s4,96(sp)
    e880dc7e:	6ae6                	ld	s5,88(sp)
    e880dc80:	6b46                	ld	s6,80(sp)
    e880dc82:	6ba6                	ld	s7,72(sp)
    e880dc84:	6c06                	ld	s8,64(sp)
    e880dc86:	7ce2                	ld	s9,56(sp)
    e880dc88:	7d42                	ld	s10,48(sp)
    e880dc8a:	7da2                	ld	s11,40(sp)
    e880dc8c:	6149                	addi	sp,sp,144
    e880dc8e:	8082                	ret

00000000e880dc90 <SendCmd_AccessoryAuthenticationSerialNumber>:
{	//0xAA06
    e880dc90:	bd010113          	addi	sp,sp,-1072
    e880dc94:	42813023          	sd	s0,1056(sp)
    e880dc98:	842a                	mv	s0,a0
	printf("SendCmd_AccessoryAuthenticationSerialNumber\n");
    e880dc9a:	00092517          	auipc	a0,0x92
    e880dc9e:	1f650513          	addi	a0,a0,502 # e889fe90 <TWO52+0x298>
{	//0xAA06
    e880dca2:	42113423          	sd	ra,1064(sp)
    e880dca6:	e42e                	sd	a1,8(sp)
    e880dca8:	e032                	sd	a2,0(sp)
	printf("SendCmd_AccessoryAuthenticationSerialNumber\n");
    e880dcaa:	61c6e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	GenerateParameter(parameter,&parameterLen,0,serialNumber,serialNumberLen);
    e880dcae:	f8d1470b          	ldd	a4,a3,(sp),0,4
    e880dcb2:	01e10593          	addi	a1,sp,30
    e880dcb6:	1008                	addi	a0,sp,32
    e880dcb8:	4601                	li	a2,0
    e880dcba:	d0dff0ef          	jal	ra,e880d9c6 <GenerateParameter>
	SendControlSession(link,0xAA06,parameter,parameterLen);
    e880dcbe:	01e15683          	lhu	a3,30(sp)
    e880dcc2:	65ad                	lui	a1,0xb
    e880dcc4:	1010                	addi	a2,sp,32
    e880dcc6:	8522                	mv	a0,s0
    e880dcc8:	a0658593          	addi	a1,a1,-1530 # aa06 <memcmp-0xe87f55fa>
    e880dccc:	c7dff0ef          	jal	ra,e880d948 <SendControlSession>
}
    e880dcd0:	42013403          	ld	s0,1056(sp)
    e880dcd4:	42813083          	ld	ra,1064(sp)
    e880dcd8:	43010113          	addi	sp,sp,1072
    e880dcdc:	8082                	ret

00000000e880dcde <SendCmd_AuthenticationCertificate>:
{	//0xAA01
    e880dcde:	bd010113          	addi	sp,sp,-1072
    e880dce2:	42813023          	sd	s0,1056(sp)
    e880dce6:	842a                	mv	s0,a0
	printf("SendCmd_AuthenticationCertificate\n");
    e880dce8:	00092517          	auipc	a0,0x92
    e880dcec:	1d850513          	addi	a0,a0,472 # e889fec0 <TWO52+0x2c8>
{	//0xAA01
    e880dcf0:	42113423          	sd	ra,1064(sp)
    e880dcf4:	e42e                	sd	a1,8(sp)
    e880dcf6:	e032                	sd	a2,0(sp)
	printf("SendCmd_AuthenticationCertificate\n");
    e880dcf8:	5ce6e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	GenerateParameter(parameter,&parameterLen,0,certificatePtr,certificateLen);
    e880dcfc:	f8d1470b          	ldd	a4,a3,(sp),0,4
    e880dd00:	01e10593          	addi	a1,sp,30
    e880dd04:	1008                	addi	a0,sp,32
    e880dd06:	4601                	li	a2,0
    e880dd08:	cbfff0ef          	jal	ra,e880d9c6 <GenerateParameter>
	SendControlSession(link,0xAA01,parameter,parameterLen);
    e880dd0c:	01e15683          	lhu	a3,30(sp)
    e880dd10:	65ad                	lui	a1,0xb
    e880dd12:	1010                	addi	a2,sp,32
    e880dd14:	8522                	mv	a0,s0
    e880dd16:	a0158593          	addi	a1,a1,-1535 # aa01 <memcmp-0xe87f55ff>
    e880dd1a:	c2fff0ef          	jal	ra,e880d948 <SendControlSession>
}
    e880dd1e:	42013403          	ld	s0,1056(sp)
    e880dd22:	42813083          	ld	ra,1064(sp)
    e880dd26:	43010113          	addi	sp,sp,1072
    e880dd2a:	8082                	ret

00000000e880dd2c <SendCmd_AuthenticationResponse>:
{	//0xAA03
    e880dd2c:	bd010113          	addi	sp,sp,-1072
    e880dd30:	42813023          	sd	s0,1056(sp)
    e880dd34:	842a                	mv	s0,a0
	printf("SendCmd_AuthenticationResponse\n");
    e880dd36:	00092517          	auipc	a0,0x92
    e880dd3a:	1b250513          	addi	a0,a0,434 # e889fee8 <TWO52+0x2f0>
{	//0xAA03
    e880dd3e:	42113423          	sd	ra,1064(sp)
    e880dd42:	e42e                	sd	a1,8(sp)
    e880dd44:	e032                	sd	a2,0(sp)
	printf("SendCmd_AuthenticationResponse\n");
    e880dd46:	5806e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	GenerateParameter(parameter,&parameterLen,0,signaturePtr,signatureLen);
    e880dd4a:	f8d1470b          	ldd	a4,a3,(sp),0,4
    e880dd4e:	01e10593          	addi	a1,sp,30
    e880dd52:	1008                	addi	a0,sp,32
    e880dd54:	4601                	li	a2,0
    e880dd56:	c71ff0ef          	jal	ra,e880d9c6 <GenerateParameter>
	SendControlSession(link,0xAA03,parameter,parameterLen);
    e880dd5a:	01e15683          	lhu	a3,30(sp)
    e880dd5e:	65ad                	lui	a1,0xb
    e880dd60:	1010                	addi	a2,sp,32
    e880dd62:	8522                	mv	a0,s0
    e880dd64:	a0358593          	addi	a1,a1,-1533 # aa03 <memcmp-0xe87f55fd>
    e880dd68:	be1ff0ef          	jal	ra,e880d948 <SendControlSession>
}
    e880dd6c:	42013403          	ld	s0,1056(sp)
    e880dd70:	42813083          	ld	ra,1064(sp)
    e880dd74:	43010113          	addi	sp,sp,1072
    e880dd78:	8082                	ret

00000000e880dd7a <SendCmd_IdentificationInformation>:
{	//0x1D01
    e880dd7a:	7179                	addi	sp,sp,-48
    e880dd7c:	f406                	sd	ra,40(sp)
    e880dd7e:	ec22                	sd	s0,24(sp)
    e880dd80:	f026                	sd	s1,32(sp)
    e880dd82:	842a                	mv	s0,a0
    e880dd84:	81010113          	addi	sp,sp,-2032
	printf("SendCmd_IdentificationInformation\n");
    e880dd88:	00092517          	auipc	a0,0x92
    e880dd8c:	18050513          	addi	a0,a0,384 # e889ff08 <TWO52+0x310>
{	//0x1D01
    e880dd90:	84ae                	mv	s1,a1
	printf("SendCmd_IdentificationInformation\n");
    e880dd92:	5346e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	parameterLen = BuildParameter(IdentificationInformation,parameter) - parameter;
    e880dd96:	860a                	mv	a2,sp
    e880dd98:	85b2                	mv	a1,a2
    e880dd9a:	8526                	mv	a0,s1
    e880dd9c:	c95ff0ef          	jal	ra,e880da30 <BuildParameter>
    e880dda0:	860a                	mv	a2,sp
    e880dda2:	40c506b3          	sub	a3,a0,a2
	SendControlSession(link,0x1D01,parameter,parameterLen);
    e880dda6:	6589                	lui	a1,0x2
    e880dda8:	8522                	mv	a0,s0
    e880ddaa:	3c06b68b          	extu	a3,a3,15,0
    e880ddae:	d0158593          	addi	a1,a1,-767 # 1d01 <memcmp-0xe87fe2ff>
    e880ddb2:	b97ff0ef          	jal	ra,e880d948 <SendControlSession>
}
    e880ddb6:	7f010113          	addi	sp,sp,2032
    e880ddba:	70a2                	ld	ra,40(sp)
    e880ddbc:	6462                	ld	s0,24(sp)
    e880ddbe:	7482                	ld	s1,32(sp)
    e880ddc0:	6145                	addi	sp,sp,48
    e880ddc2:	8082                	ret

00000000e880ddc4 <SendCmd_StartPowerUpdates>:
{	//0xAE00
    e880ddc4:	83010113          	addi	sp,sp,-2000
    e880ddc8:	7c813023          	sd	s0,1984(sp)
	memclr(PowerUpdateComponent,sizeof(PowerUpdateComponent));
    e880ddcc:	3c000593          	li	a1,960
{	//0xAE00
    e880ddd0:	842a                	mv	s0,a0
	memclr(PowerUpdateComponent,sizeof(PowerUpdateComponent));
    e880ddd2:	850a                	mv	a0,sp
{	//0xAE00
    e880ddd4:	7c113423          	sd	ra,1992(sp)
	memclr(PowerUpdateComponent,sizeof(PowerUpdateComponent));
    e880ddd8:	5ac6e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	curParam->id = 0x0000;curParam->type = DATA_TYPE_NULL;
    e880dddc:	00011023          	sh	zero,0(sp)
    e880dde0:	4785                	li	a5,1
	parameterLen = BuildParameter(PowerUpdateComponent,parameter) - parameter;
    e880dde2:	0790                	addi	a2,sp,960
	curParam->id = 0x0000;curParam->type = DATA_TYPE_NULL;
    e880dde4:	00f10123          	sb	a5,2(sp)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_NULL;
    e880dde8:	4785                	li	a5,1
	parameterLen = BuildParameter(PowerUpdateComponent,parameter) - parameter;
    e880ddea:	85b2                	mv	a1,a2
    e880ddec:	850a                	mv	a0,sp
	curParam->id = 0x0001;curParam->type = DATA_TYPE_NULL;
    e880ddee:	06f11023          	sh	a5,96(sp)
    e880ddf2:	06f10123          	sb	a5,98(sp)
	parameterLen = BuildParameter(PowerUpdateComponent,parameter) - parameter;
    e880ddf6:	c3bff0ef          	jal	ra,e880da30 <BuildParameter>
    e880ddfa:	0790                	addi	a2,sp,960
    e880ddfc:	40c506b3          	sub	a3,a0,a2
	SendControlSession(link,0xAE00,parameter,parameterLen);
    e880de00:	65ad                	lui	a1,0xb
    e880de02:	8522                	mv	a0,s0
    e880de04:	3c06b68b          	extu	a3,a3,15,0
    e880de08:	e0058593          	addi	a1,a1,-512 # ae00 <memcmp-0xe87f5200>
    e880de0c:	b3dff0ef          	jal	ra,e880d948 <SendControlSession>
}
    e880de10:	7c013403          	ld	s0,1984(sp)
    e880de14:	7c813083          	ld	ra,1992(sp)
    e880de18:	7d010113          	addi	sp,sp,2000
    e880de1c:	8082                	ret

00000000e880de1e <SendCmd_PowerSourceUpate>:
{	//0xAE03
    e880de1e:	83010113          	addi	sp,sp,-2000
    e880de22:	7c813023          	sd	s0,1984(sp)
	memclr(PowerUpdateComponent,sizeof(PowerUpdateComponent));
    e880de26:	3c000593          	li	a1,960
{	//0xAE03
    e880de2a:	842a                	mv	s0,a0
	memclr(PowerUpdateComponent,sizeof(PowerUpdateComponent));
    e880de2c:	850a                	mv	a0,sp
{	//0xAE03
    e880de2e:	7c113423          	sd	ra,1992(sp)
	memclr(PowerUpdateComponent,sizeof(PowerUpdateComponent));
    e880de32:	5526e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	curParam->id = 0x0000;curParam->type = DATA_TYPE_WORD;curParam->data.word = 1000;
    e880de36:	00011023          	sh	zero,0(sp)
    e880de3a:	478d                	li	a5,3
    e880de3c:	00f10123          	sb	a5,2(sp)
    e880de40:	3e800793          	li	a5,1000
	parameterLen = BuildParameter(PowerUpdateComponent,parameter) - parameter;
    e880de44:	0790                	addi	a2,sp,960
	curParam->id = 0x0000;curParam->type = DATA_TYPE_WORD;curParam->data.word = 1000;
    e880de46:	00f11423          	sh	a5,8(sp)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_BYTE;curParam->data.word = 1;
    e880de4a:	4709                	li	a4,2
    e880de4c:	4785                	li	a5,1
	parameterLen = BuildParameter(PowerUpdateComponent,parameter) - parameter;
    e880de4e:	85b2                	mv	a1,a2
    e880de50:	850a                	mv	a0,sp
	curParam->id = 0x0001;curParam->type = DATA_TYPE_BYTE;curParam->data.word = 1;
    e880de52:	06f11023          	sh	a5,96(sp)
    e880de56:	06e10123          	sb	a4,98(sp)
    e880de5a:	06f11423          	sh	a5,104(sp)
	parameterLen = BuildParameter(PowerUpdateComponent,parameter) - parameter;
    e880de5e:	bd3ff0ef          	jal	ra,e880da30 <BuildParameter>
    e880de62:	0790                	addi	a2,sp,960
    e880de64:	40c506b3          	sub	a3,a0,a2
	SendControlSession(link,0xAE03,parameter,parameterLen);
    e880de68:	65ad                	lui	a1,0xb
    e880de6a:	8522                	mv	a0,s0
    e880de6c:	3c06b68b          	extu	a3,a3,15,0
    e880de70:	e0358593          	addi	a1,a1,-509 # ae03 <memcmp-0xe87f51fd>
    e880de74:	ad5ff0ef          	jal	ra,e880d948 <SendControlSession>
}
    e880de78:	7c013403          	ld	s0,1984(sp)
    e880de7c:	7c813083          	ld	ra,1992(sp)
    e880de80:	7d010113          	addi	sp,sp,2000
    e880de84:	8082                	ret

00000000e880de86 <SendCmd_StartNowPlayingUpdates>:
{
    e880de86:	81010113          	addi	sp,sp,-2032
    e880de8a:	7e113423          	sd	ra,2024(sp)
    e880de8e:	7e813023          	sd	s0,2016(sp)
    e880de92:	7c913c23          	sd	s1,2008(sp)
    e880de96:	7d213823          	sd	s2,2000(sp)
    e880de9a:	7d313423          	sd	s3,1992(sp)
    e880de9e:	7d413023          	sd	s4,1984(sp)
    e880dea2:	7b513c23          	sd	s5,1976(sp)
    e880dea6:	8a2a                	mv	s4,a0
    e880dea8:	86010113          	addi	sp,sp,-1952
	printf("SendCmd_StartNowPlayingUpdates\r\n");
    e880deac:	00092517          	auipc	a0,0x92
    e880deb0:	08450513          	addi	a0,a0,132 # e889ff30 <TWO52+0x338>
    e880deb4:	4126e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	memclr(MediaItemAttributesComponent,sizeof(MediaItemAttributesComponent));
    e880deb8:	6a85                	lui	s5,0x1
    e880deba:	0818                	addi	a4,sp,16
    e880debc:	797d                	lui	s2,0xfffff
    e880debe:	f40a8793          	addi	a5,s5,-192 # f40 <memcmp-0xe87ff0c0>
    e880dec2:	97ba                	add	a5,a5,a4
    e880dec4:	48090493          	addi	s1,s2,1152 # fffffffffffff480 <__DRAM0_INF_BASE+0xffffffff0000f480>
    e880dec8:	94be                	add	s1,s1,a5
    e880deca:	8526                	mv	a0,s1
    e880decc:	3c000593          	li	a1,960
    e880ded0:	4b46e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	memclr(PlaybackAttributesComponent,sizeof(PlaybackAttributesComponent));
    e880ded4:	79010993          	addi	s3,sp,1936
    e880ded8:	854e                	mv	a0,s3
    e880deda:	3c000593          	li	a1,960
    e880dede:	4a66e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	memclr(StartNowPlayingComponent,sizeof(StartNowPlayingComponent));
    e880dee2:	0c090413          	addi	s0,s2,192
    e880dee6:	0818                	addi	a4,sp,16
    e880dee8:	f40a8793          	addi	a5,s5,-192
    e880deec:	97ba                	add	a5,a5,a4
    e880deee:	943e                	add	s0,s0,a5
    e880def0:	8522                	mv	a0,s0
    e880def2:	3c000593          	li	a1,960
    e880def6:	48e6e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	curParam->id = 0;	curParam->type = DATA_TYPE_NULL;	
    e880defa:	78011823          	sh	zero,1936(sp)
	curParam->id = 1;	curParam->type = DATA_TYPE_NULL;	
    e880defe:	0818                	addi	a4,sp,16
    e880df00:	f40a8793          	addi	a5,s5,-192
    e880df04:	97ba                	add	a5,a5,a4
    e880df06:	97ca                	add	a5,a5,s2
    e880df08:	e43e                	sd	a5,8(sp)
    e880df0a:	6722                	ld	a4,8(sp)
    e880df0c:	4785                	li	a5,1
	curParam->id = 4;	curParam->type = DATA_TYPE_NULL;	
    e880df0e:	6622                	ld	a2,8(sp)
	curParam->id = 1;	curParam->type = DATA_TYPE_NULL;	
    e880df10:	48f71023          	sh	a5,1152(a4)
    e880df14:	48f70123          	sb	a5,1154(a4)
	curParam->id = 4;	curParam->type = DATA_TYPE_NULL;	
    e880df18:	4711                	li	a4,4
    e880df1a:	4ee61023          	sh	a4,1248(a2)
	curParam->id = 6;	curParam->type = DATA_TYPE_NULL;	
    e880df1e:	4719                	li	a4,6
    e880df20:	54e61023          	sh	a4,1344(a2)
	curParam->id = 12;	curParam->type = DATA_TYPE_NULL;	
    e880df24:	4731                	li	a4,12
	curParam->id = 7;	curParam->type = DATA_TYPE_NULL;	
    e880df26:	080c                	addi	a1,sp,16
	curParam->id = 4;	curParam->type = DATA_TYPE_NULL;	
    e880df28:	4ef60123          	sb	a5,1250(a2)
	curParam->id = 6;	curParam->type = DATA_TYPE_NULL;	
    e880df2c:	54f60123          	sb	a5,1346(a2)
	curParam->id = 12;	curParam->type = DATA_TYPE_NULL;	
    e880df30:	5ae61023          	sh	a4,1440(a2)
    e880df34:	5af60123          	sb	a5,1442(a2)
	curParam->id = 7;	curParam->type = DATA_TYPE_NULL;	
    e880df38:	840a8613          	addi	a2,s5,-1984
    e880df3c:	962e                	add	a2,a2,a1
    e880df3e:	471d                	li	a4,7
	curParam->id = 16;	curParam->type = DATA_TYPE_NULL;	
    e880df40:	0808                	addi	a0,sp,16
	curParam->id = 7;	curParam->type = DATA_TYPE_NULL;	
    e880df42:	00e61023          	sh	a4,0(a2)
	curParam->id = 16;	curParam->type = DATA_TYPE_NULL;	
    e880df46:	8a2a8613          	addi	a2,s5,-1886
    e880df4a:	962a                	add	a2,a2,a0
    e880df4c:	00f60023          	sb	a5,0(a2)
	curParam->id = 0;	curParam->type = DATA_TYPE_PARAMETER;	curParam->data.parameter = MediaItemAttributesComponent;
    e880df50:	6622                	ld	a2,8(sp)
	curParam->id = 7;	curParam->type = DATA_TYPE_NULL;	
    e880df52:	842a8693          	addi	a3,s5,-1982
    e880df56:	96ae                	add	a3,a3,a1
	curParam->id = 16;	curParam->type = DATA_TYPE_NULL;	
    e880df58:	8a0a8593          	addi	a1,s5,-1888
	curParam->id = 0;	curParam->type = DATA_TYPE_NULL;	
    e880df5c:	78f10923          	sb	a5,1938(sp)
	curParam->id = 1;	curParam->type = DATA_TYPE_NULL;	
    e880df60:	7ef11823          	sh	a5,2032(sp)
    e880df64:	7ef10923          	sb	a5,2034(sp)
	curParam->id = 7;	curParam->type = DATA_TYPE_NULL;	
    e880df68:	00f68023          	sb	a5,0(a3) # ffffffff80100000 <__DRAM0_INF_BASE+0xfffffffe80110000>
	curParam->id = 16;	curParam->type = DATA_TYPE_NULL;	
    e880df6c:	95aa                	add	a1,a1,a0
	curParam->id = 1;	curParam->type = DATA_TYPE_PARAMETER;	curParam->data.parameter = PlaybackAttributesComponent;
    e880df6e:	12f61023          	sh	a5,288(a2)
	parameterLen = BuildParameter(StartNowPlayingComponent,parameter) - parameter;
    e880df72:	b40a8793          	addi	a5,s5,-1216
	curParam->id = 16;	curParam->type = DATA_TYPE_NULL;	
    e880df76:	46c1                	li	a3,16
	curParam->id = 0;	curParam->type = DATA_TYPE_PARAMETER;	curParam->data.parameter = MediaItemAttributesComponent;
    e880df78:	0ce60123          	sb	a4,194(a2)
    e880df7c:	e664                	sd	s1,200(a2)
	curParam->id = 1;	curParam->type = DATA_TYPE_PARAMETER;	curParam->data.parameter = PlaybackAttributesComponent;
    e880df7e:	12e60123          	sb	a4,290(a2)
    e880df82:	13363423          	sd	s3,296(a2)
	curParam->id = 0;	curParam->type = DATA_TYPE_PARAMETER;	curParam->data.parameter = MediaItemAttributesComponent;
    e880df86:	0c061023          	sh	zero,192(a2)
	parameterLen = BuildParameter(StartNowPlayingComponent,parameter) - parameter;
    e880df8a:	00f50633          	add	a2,a0,a5
	curParam->id = 16;	curParam->type = DATA_TYPE_NULL;	
    e880df8e:	00d59023          	sh	a3,0(a1)
	parameterLen = BuildParameter(StartNowPlayingComponent,parameter) - parameter;
    e880df92:	8522                	mv	a0,s0
    e880df94:	85b2                	mv	a1,a2
    e880df96:	a9bff0ef          	jal	ra,e880da30 <BuildParameter>
    e880df9a:	6785                	lui	a5,0x1
    e880df9c:	b4078613          	addi	a2,a5,-1216 # b40 <memcmp-0xe87ff4c0>
    e880dfa0:	081c                	addi	a5,sp,16
    e880dfa2:	963e                	add	a2,a2,a5
    e880dfa4:	40c506b3          	sub	a3,a0,a2
	SendControlSession(link,0x5000,parameter,parameterLen);
    e880dfa8:	3c06b68b          	extu	a3,a3,15,0
    e880dfac:	8552                	mv	a0,s4
    e880dfae:	6595                	lui	a1,0x5
    e880dfb0:	999ff0ef          	jal	ra,e880d948 <SendControlSession>
}
    e880dfb4:	7a010113          	addi	sp,sp,1952
    e880dfb8:	7e813083          	ld	ra,2024(sp)
    e880dfbc:	7e013403          	ld	s0,2016(sp)
    e880dfc0:	7d813483          	ld	s1,2008(sp)
    e880dfc4:	7d013903          	ld	s2,2000(sp)
    e880dfc8:	7c813983          	ld	s3,1992(sp)
    e880dfcc:	7c013a03          	ld	s4,1984(sp)
    e880dfd0:	7b813a83          	ld	s5,1976(sp)
    e880dfd4:	7f010113          	addi	sp,sp,2032
    e880dfd8:	8082                	ret

00000000e880dfda <OnRecCmd_RequestAuthenticationCertificate>:
{
    e880dfda:	7159                	addi	sp,sp,-112
    e880dfdc:	e4ce                	sd	s3,72(sp)
    e880dfde:	89aa                	mv	s3,a0
	printf("RecCmd RequestAuthenticationCertificate\n");
    e880dfe0:	00092517          	auipc	a0,0x92
    e880dfe4:	d4050513          	addi	a0,a0,-704 # e889fd20 <TWO52+0x128>
{
    e880dfe8:	f486                	sd	ra,104(sp)
    e880dfea:	e42e                	sd	a1,8(sp)
    e880dfec:	e032                	sd	a2,0(sp)
    e880dfee:	f0a2                	sd	s0,96(sp)
    e880dff0:	eca6                	sd	s1,88(sp)
    e880dff2:	e8ca                	sd	s2,80(sp)
	printf("RecCmd RequestAuthenticationCertificate\n");
    e880dff4:	2d26e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	lib_iic_open();
    e880dff8:	133650ef          	jal	ra,e887392a <lib_iic_open>
	if(GetSubParameter(0,parameter,parameterLen,&subParameter,&subParameterLen))
    e880dffc:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e880e000:	0858                	addi	a4,sp,20
    e880e002:	0834                	addi	a3,sp,24
    e880e004:	4501                	li	a0,0
    e880e006:	9ebff0ef          	jal	ra,e880d9f0 <GetSubParameter>
    e880e00a:	c50d                	beqz	a0,e880e034 <OnRecCmd_RequestAuthenticationCertificate+0x5a>
		lib_iic_read(kMFiAuthReg_CertificateSerialNumber,buf,31);
    e880e00c:	467d                	li	a2,31
    e880e00e:	100c                	addi	a1,sp,32
    e880e010:	04e00513          	li	a0,78
    e880e014:	167650ef          	jal	ra,e887397a <lib_iic_read>
		SendCmd_AccessoryAuthenticationSerialNumber(link,buf,31);
    e880e018:	467d                	li	a2,31
    e880e01a:	100c                	addi	a1,sp,32
    e880e01c:	854e                	mv	a0,s3
    e880e01e:	c73ff0ef          	jal	ra,e880dc90 <SendCmd_AccessoryAuthenticationSerialNumber>
	lib_iic_close();
    e880e022:	137650ef          	jal	ra,e8873958 <lib_iic_close>
}
    e880e026:	7406                	ld	s0,96(sp)
    e880e028:	70a6                	ld	ra,104(sp)
    e880e02a:	64e6                	ld	s1,88(sp)
    e880e02c:	6946                	ld	s2,80(sp)
    e880e02e:	69a6                	ld	s3,72(sp)
    e880e030:	6165                	addi	sp,sp,112
    e880e032:	8082                	ret
		lib_iic_read(kMFiAuthReg_DeviceCertificateSize, buf, 2 );
    e880e034:	4609                	li	a2,2
    e880e036:	100c                	addi	a1,sp,32
    e880e038:	03000513          	li	a0,48
    e880e03c:	13f650ef          	jal	ra,e887397a <lib_iic_read>
		certificateLen = ( buf[ 0 ] << 8 ) | buf[ 1 ];
    e880e040:	02015783          	lhu	a5,32(sp)
        printf("certificateLen %d\n",certificateLen);
    e880e044:	00092517          	auipc	a0,0x92
    e880e048:	d0c50513          	addi	a0,a0,-756 # e889fd50 <TWO52+0x158>
    e880e04c:	0087941b          	slliw	s0,a5,0x8
    e880e050:	5c87b78b          	extu	a5,a5,23,8
    e880e054:	8c5d                	or	s0,s0,a5
    e880e056:	3c04340b          	extu	s0,s0,15,0
    e880e05a:	0004091b          	sext.w	s2,s0
    e880e05e:	85ca                	mv	a1,s2
    e880e060:	2666e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
		if(certificateLen > 0 && certificateLen < 1024)
    e880e064:	fff9071b          	addiw	a4,s2,-1
    e880e068:	3fe00793          	li	a5,1022
    e880e06c:	fae7ebe3          	bltu	a5,a4,e880e022 <OnRecCmd_RequestAuthenticationCertificate+0x48>
			certificatePtr = (uint8_t *) malloc( certificateLen );
    e880e070:	8522                	mv	a0,s0
    e880e072:	7dc6d0ef          	jal	ra,e887b84e <my_malloc>
    e880e076:	84aa                	mv	s1,a0
			lib_iic_read(kMFiAuthReg_DeviceCertificateData1, certificatePtr, certificateLen );
    e880e078:	864a                	mv	a2,s2
    e880e07a:	85aa                	mv	a1,a0
    e880e07c:	03100513          	li	a0,49
    e880e080:	0fb650ef          	jal	ra,e887397a <lib_iic_read>
			SendCmd_AuthenticationCertificate(link,certificatePtr,certificateLen);
    e880e084:	854e                	mv	a0,s3
    e880e086:	8622                	mv	a2,s0
    e880e088:	85a6                	mv	a1,s1
    e880e08a:	c55ff0ef          	jal	ra,e880dcde <SendCmd_AuthenticationCertificate>
			free( certificatePtr );
    e880e08e:	8526                	mv	a0,s1
    e880e090:	2706e0ef          	jal	ra,e887c300 <eLIBs_free>
    e880e094:	b779                	j	e880e022 <OnRecCmd_RequestAuthenticationCertificate+0x48>

00000000e880e096 <OnRecCmd_RequestAuthenticationChallengeResponse>:
{
    e880e096:	711d                	addi	sp,sp,-96
    e880e098:	e0ca                	sd	s2,64(sp)
    e880e09a:	892a                	mv	s2,a0
	printf("RecCmd RequestAuthenticationChallengeResponse\n");
    e880e09c:	00092517          	auipc	a0,0x92
    e880e0a0:	ccc50513          	addi	a0,a0,-820 # e889fd68 <TWO52+0x170>
{
    e880e0a4:	ec86                	sd	ra,88(sp)
    e880e0a6:	e8a2                	sd	s0,80(sp)
    e880e0a8:	e4a6                	sd	s1,72(sp)
    e880e0aa:	e42e                	sd	a1,8(sp)
    e880e0ac:	e032                	sd	a2,0(sp)
	printf("RecCmd RequestAuthenticationChallengeResponse\n");
    e880e0ae:	2186e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	if(!GetSubParameter(0,parameter,parameterLen,&inDigestPtr,&inDigestLen))
    e880e0b2:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e880e0b6:	0858                	addi	a4,sp,20
    e880e0b8:	0834                	addi	a3,sp,24
    e880e0ba:	4501                	li	a0,0
    e880e0bc:	935ff0ef          	jal	ra,e880d9f0 <GetSubParameter>
    e880e0c0:	cd51                	beqz	a0,e880e15c <OnRecCmd_RequestAuthenticationChallengeResponse+0xc6>
	lib_iic_open();
    e880e0c2:	069650ef          	jal	ra,e887392a <lib_iic_open>
    lib_iic_read(0x04,buf,4);
    e880e0c6:	4611                	li	a2,4
    e880e0c8:	100c                	addi	a1,sp,32
    e880e0ca:	4511                	li	a0,4
    e880e0cc:	0af650ef          	jal	ra,e887397a <lib_iic_read>
    printf("chip version %d,inDigestLen %d\n",buf[2],inDigestLen);
    e880e0d0:	4652                	lw	a2,20(sp)
    e880e0d2:	02214583          	lbu	a1,34(sp)
    e880e0d6:	00092517          	auipc	a0,0x92
    e880e0da:	cc250513          	addi	a0,a0,-830 # e889fd98 <TWO52+0x1a0>
    e880e0de:	1e86e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if(buf[2] == 2)
    e880e0e2:	02214703          	lbu	a4,34(sp)
    e880e0e6:	4789                	li	a5,2
    e880e0e8:	02f71163          	bne	a4,a5,e880e10a <OnRecCmd_RequestAuthenticationChallengeResponse+0x74>
    	buf[ 0 ] = (uint8_t)( ( inDigestLen >> 8 ) & 0xFF );
    e880e0ec:	01415783          	lhu	a5,20(sp)
    	err = lib_iic_write(kMFiAuthReg_ChallengeSize, buf, 2);
    e880e0f0:	4609                	li	a2,2
    e880e0f2:	100c                	addi	a1,sp,32
    	buf[ 0 ] = (uint8_t)( ( inDigestLen >> 8 ) & 0xFF );
    e880e0f4:	0087971b          	slliw	a4,a5,0x8
    e880e0f8:	5c87b78b          	extu	a5,a5,23,8
    e880e0fc:	8fd9                	or	a5,a5,a4
    	err = lib_iic_write(kMFiAuthReg_ChallengeSize, buf, 2);
    e880e0fe:	02000513          	li	a0,32
    	buf[ 0 ] = (uint8_t)( ( inDigestLen >> 8 ) & 0xFF );
    e880e102:	02f11023          	sh	a5,32(sp)
    	err = lib_iic_write(kMFiAuthReg_ChallengeSize, buf, 2);
    e880e106:	133650ef          	jal	ra,e8873a38 <lib_iic_write>
	memcpy( &buf[ 0 ], inDigestPtr, inDigestLen );
    e880e10a:	4652                	lw	a2,20(sp)
    e880e10c:	65e2                	ld	a1,24(sp)
    e880e10e:	1008                	addi	a0,sp,32
	Sleep(200);
    e880e110:	4429                	li	s0,10
	memcpy( &buf[ 0 ], inDigestPtr, inDigestLen );
    e880e112:	28e6e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	err = lib_iic_write(kMFiAuthReg_ChallengeData, buf, inDigestLen);
    e880e116:	4652                	lw	a2,20(sp)
    e880e118:	100c                	addi	a1,sp,32
    e880e11a:	02100513          	li	a0,33
    e880e11e:	11b650ef          	jal	ra,e8873a38 <lib_iic_write>
	buf[ 0 ] = kMFiAuthControl_GenerateSignature;
    e880e122:	4785                	li	a5,1
	err = lib_iic_write(kMFiAuthReg_AuthControlStatus, buf, 1 );
    e880e124:	4605                	li	a2,1
    e880e126:	100c                	addi	a1,sp,32
    e880e128:	4541                	li	a0,16
	buf[ 0 ] = kMFiAuthControl_GenerateSignature;
    e880e12a:	02f10023          	sb	a5,32(sp)
	err = lib_iic_write(kMFiAuthReg_AuthControlStatus, buf, 1 );
    e880e12e:	10b650ef          	jal	ra,e8873a38 <lib_iic_write>
	Sleep(200);
    e880e132:	4551                	li	a0,20
    e880e134:	6e36d0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		err = lib_iic_read(kMFiAuthReg_AuthControlStatus, buf, 1 );
    e880e138:	4605                	li	a2,1
    e880e13a:	100c                	addi	a1,sp,32
    e880e13c:	4541                	li	a0,16
    e880e13e:	03d650ef          	jal	ra,e887397a <lib_iic_read>
		if(buf[ 0 ] & kMFiAuthFlagError)
    e880e142:	02014783          	lbu	a5,32(sp)
    e880e146:	fc77b70b          	extu	a4,a5,63,7
    e880e14a:	cf19                	beqz	a4,e880e168 <OnRecCmd_RequestAuthenticationChallengeResponse+0xd2>
			printf("iap2 read kMFiAuthReg_AuthControlStatus fail\n");
    e880e14c:	00092517          	auipc	a0,0x92
    e880e150:	c6c50513          	addi	a0,a0,-916 # e889fdb8 <TWO52+0x1c0>
    e880e154:	1726e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	lib_iic_close();
    e880e158:	001650ef          	jal	ra,e8873958 <lib_iic_close>
}
    e880e15c:	60e6                	ld	ra,88(sp)
    e880e15e:	6446                	ld	s0,80(sp)
    e880e160:	64a6                	ld	s1,72(sp)
    e880e162:	6906                	ld	s2,64(sp)
    e880e164:	6125                	addi	sp,sp,96
    e880e166:	8082                	ret
		if((buf[ 0 ] & 0x70) == 0x10)
    e880e168:	0707f793          	andi	a5,a5,112
    e880e16c:	4741                	li	a4,16
    e880e16e:	04e79763          	bne	a5,a4,e880e1bc <OnRecCmd_RequestAuthenticationChallengeResponse+0x126>
			printf("iap2 read kMFiAuthReg_AuthControlStatus success\n");
    e880e172:	00092517          	auipc	a0,0x92
    e880e176:	c7650513          	addi	a0,a0,-906 # e889fde8 <TWO52+0x1f0>
    e880e17a:	14c6e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	err = lib_iic_read(kMFiAuthReg_SignatureSize, buf, 2 );
    e880e17e:	4609                	li	a2,2
    e880e180:	100c                	addi	a1,sp,32
    e880e182:	4545                	li	a0,17
    e880e184:	7f6650ef          	jal	ra,e887397a <lib_iic_read>
	signatureLen = ( buf[ 0 ] << 8 ) | buf[ 1 ];
    e880e188:	02014403          	lbu	s0,32(sp)
    e880e18c:	02114783          	lbu	a5,33(sp)
    e880e190:	0084141b          	slliw	s0,s0,0x8
    e880e194:	8c5d                	or	s0,s0,a5
	if(signatureLen > 0/* && signatureLen < 1024*/)
    e880e196:	d069                	beqz	s0,e880e158 <OnRecCmd_RequestAuthenticationChallengeResponse+0xc2>
		signaturePtr = (uint8_t *) malloc( signatureLen );
    e880e198:	8522                	mv	a0,s0
    e880e19a:	6b46d0ef          	jal	ra,e887b84e <my_malloc>
    e880e19e:	84aa                	mv	s1,a0
		err = lib_iic_read(kMFiAuthReg_SignatureData, signaturePtr, signatureLen );
    e880e1a0:	8622                	mv	a2,s0
    e880e1a2:	85aa                	mv	a1,a0
    e880e1a4:	4549                	li	a0,18
    e880e1a6:	7d4650ef          	jal	ra,e887397a <lib_iic_read>
		SendCmd_AuthenticationResponse(link,signaturePtr,signatureLen);
    e880e1aa:	854a                	mv	a0,s2
    e880e1ac:	8622                	mv	a2,s0
    e880e1ae:	85a6                	mv	a1,s1
    e880e1b0:	b7dff0ef          	jal	ra,e880dd2c <SendCmd_AuthenticationResponse>
		free( signaturePtr );
    e880e1b4:	8526                	mv	a0,s1
    e880e1b6:	14a6e0ef          	jal	ra,e887c300 <eLIBs_free>
    e880e1ba:	bf79                	j	e880e158 <OnRecCmd_RequestAuthenticationChallengeResponse+0xc2>
		Sleep(100);
    e880e1bc:	4529                	li	a0,10
    e880e1be:	347d                	addiw	s0,s0,-1
    e880e1c0:	6576d0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
	for(i=0;i<10;i++)
    e880e1c4:	f835                	bnez	s0,e880e138 <OnRecCmd_RequestAuthenticationChallengeResponse+0xa2>
    e880e1c6:	bf65                	j	e880e17e <OnRecCmd_RequestAuthenticationChallengeResponse+0xe8>

00000000e880e1c8 <OnRecCmd_StartIdentification>:
{
    e880e1c8:	7179                	addi	sp,sp,-48
    e880e1ca:	f04e                	sd	s3,32(sp)
    e880e1cc:	89aa                	mv	s3,a0
	printf("RecCmd StartIdentification\n");
    e880e1ce:	00092517          	auipc	a0,0x92
    e880e1d2:	c5a50513          	addi	a0,a0,-934 # e889fe28 <TWO52+0x230>
{
    e880e1d6:	f406                	sd	ra,40(sp)
    e880e1d8:	e422                	sd	s0,8(sp)
    e880e1da:	e826                	sd	s1,16(sp)
    e880e1dc:	ec4a                	sd	s2,24(sp)
	printf("RecCmd StartIdentification\n");
    e880e1de:	0e86e0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	memclr(USBHostTransportComponent,sizeof(USBHostTransportComponent));
    e880e1e2:	000c9417          	auipc	s0,0xc9
    e880e1e6:	a2e40413          	addi	s0,s0,-1490 # e88d6c10 <USBHostTransportComponent>
    e880e1ea:	8522                	mv	a0,s0
    e880e1ec:	3c000593          	li	a1,960
    e880e1f0:	1946e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	memclr(VehicleInformationComponent,sizeof(VehicleInformationComponent));
    e880e1f4:	000c9497          	auipc	s1,0xc9
    e880e1f8:	ddc48493          	addi	s1,s1,-548 # e88d6fd0 <VehicleInformationComponent>
    e880e1fc:	8526                	mv	a0,s1
    e880e1fe:	3c000593          	li	a1,960
    e880e202:	1826e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	memclr(LocationInformationComponent,sizeof(LocationInformationComponent));
    e880e206:	000c8917          	auipc	s2,0xc8
    e880e20a:	64a90913          	addi	s2,s2,1610 # e88d6850 <LocationInformationComponent>
    e880e20e:	854a                	mv	a0,s2
    e880e210:	3c000593          	li	a1,960
    e880e214:	1706e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	memclr(IdentificationInformation,sizeof(IdentificationInformation));
    e880e218:	6585                	lui	a1,0x1
    e880e21a:	2c058593          	addi	a1,a1,704 # 12c0 <memcmp-0xe87fed40>
    e880e21e:	000c7517          	auipc	a0,0xc7
    e880e222:	37250513          	addi	a0,a0,882 # e88d5590 <IdentificationInformation>
    e880e226:	15e6e0ef          	jal	ra,e887c384 <eLIBs_memclr>
	curParam->id = 0x0000;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e22a:	00041023          	sh	zero,0(s0)
    e880e22e:	478d                	li	a5,3
    e880e230:	00f40123          	sb	a5,2(s0)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "host";
    e880e234:	4791                	li	a5,4
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = carName;
    e880e236:	000c6597          	auipc	a1,0xc6
    e880e23a:	7d258593          	addi	a1,a1,2002 # e88d4a08 <carName>
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "host";
    e880e23e:	06f40123          	sb	a5,98(s0)
    e880e242:	00092797          	auipc	a5,0x92
    e880e246:	c0678793          	addi	a5,a5,-1018 # e889fe48 <TWO52+0x250>
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = carName;
    e880e24a:	f4ac                	sd	a1,104(s1)
	curParam->id = 0x0006;curParam->type = DATA_TYPE_STR;curParam->data.str = carName;
    e880e24c:	12b4b423          	sd	a1,296(s1)
	curParam++;curParam->id = 0x00011;curParam->type = DATA_TYPE_NULL;
    e880e250:	45c5                	li	a1,17
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "host";
    e880e252:	4705                	li	a4,1
	curParam->id = 0x0002;curParam->type = DATA_TYPE_NULL;
    e880e254:	4689                	li	a3,2
	curParam->id = 0x0003;curParam->type = DATA_TYPE_BYTE;curParam->data.byte = 0x01;
    e880e256:	460d                	li	a2,3
	curParam->id = 0x0006;curParam->type = DATA_TYPE_STR;curParam->data.str = carName;
    e880e258:	4519                	li	a0,6
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e25a:	00092817          	auipc	a6,0x92
    e880e25e:	bf680813          	addi	a6,a6,-1034 # e889fe50 <TWO52+0x258>
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "host";
    e880e262:	f43c                	sd	a5,104(s0)
	curParam->id = 0x0004;curParam->type = DATA_TYPE_NULL;
    e880e264:	4791                	li	a5,4
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "host";
    e880e266:	06e41023          	sh	a4,96(s0)
	curParam->id = 0x0002;curParam->type = DATA_TYPE_NULL;
    e880e26a:	0cd41023          	sh	a3,192(s0)
    e880e26e:	0ce40123          	sb	a4,194(s0)
	curParam->id = 0x0003;curParam->type = DATA_TYPE_BYTE;curParam->data.byte = 0x01;
    e880e272:	12c41023          	sh	a2,288(s0)
    e880e276:	12d40123          	sb	a3,290(s0)
    e880e27a:	12e40423          	sb	a4,296(s0)
	curParam->id = 0x0004;curParam->type = DATA_TYPE_NULL;
    e880e27e:	18e40123          	sb	a4,386(s0)
	curParam->id = 0x0000;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e282:	00c48123          	sb	a2,2(s1)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = carName;
    e880e286:	06e49023          	sh	a4,96(s1)
	curParam->id = 0x0002;curParam->type = DATA_TYPE_BYTE;curParam->data.byte = 0x00;
    e880e28a:	0cd49023          	sh	a3,192(s1)
    e880e28e:	0cd48123          	sb	a3,194(s1)
	curParam->id = 0x0006;curParam->type = DATA_TYPE_STR;curParam->data.str = carName;
    e880e292:	12a49023          	sh	a0,288(s1)
	curParam->id = 0x0000;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e296:	00c90123          	sb	a2,2(s2)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e29a:	06e91023          	sh	a4,96(s2)
    e880e29e:	07093423          	sd	a6,104(s2)
	curParam++;curParam->id = 0x00011;curParam->type = DATA_TYPE_NULL;
    e880e2a2:	0cb91023          	sh	a1,192(s2)
	curParam->id = 0x0000;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e2a6:	00041423          	sh	zero,8(s0)
	curParam->id = 0x0004;curParam->type = DATA_TYPE_NULL;
    e880e2aa:	18f41023          	sh	a5,384(s0)
	curParam->id = 0x0000;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e2ae:	00049023          	sh	zero,0(s1)
    e880e2b2:	00049423          	sh	zero,8(s1)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = carName;
    e880e2b6:	06f48123          	sb	a5,98(s1)
	curParam->id = 0x0002;curParam->type = DATA_TYPE_BYTE;curParam->data.byte = 0x00;
    e880e2ba:	0c048423          	sb	zero,200(s1)
	curParam->id = 0x0006;curParam->type = DATA_TYPE_STR;curParam->data.str = carName;
    e880e2be:	12f48123          	sb	a5,290(s1)
	curParam->id = 0x0000;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e2c2:	00091023          	sh	zero,0(s2)
    e880e2c6:	00091423          	sh	zero,8(s2)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e2ca:	06f90123          	sb	a5,98(s2)
	curParam++;curParam->id = 0x00012;curParam->type = DATA_TYPE_NULL;
    e880e2ce:	45c9                	li	a1,18
	curParam++;curParam->id = 0x00011;curParam->type = DATA_TYPE_NULL;
    e880e2d0:	0ce90123          	sb	a4,194(s2)
	curParam++;curParam->id = 0x00012;curParam->type = DATA_TYPE_NULL;
    e880e2d4:	12b91023          	sh	a1,288(s2)
	curParam->id = 0x00013;curParam->type = DATA_TYPE_NULL;
    e880e2d8:	45cd                	li	a1,19
    e880e2da:	18b91023          	sh	a1,384(s2)
	curParam->id = 0x0000;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e2de:	000c7597          	auipc	a1,0xc7
    e880e2e2:	2b258593          	addi	a1,a1,690 # e88d5590 <IdentificationInformation>
	curParam++;curParam->id = 0x00012;curParam->type = DATA_TYPE_NULL;
    e880e2e6:	12e90123          	sb	a4,290(s2)
	curParam->id = 0x00013;curParam->type = DATA_TYPE_NULL;
    e880e2ea:	18e90123          	sb	a4,386(s2)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "Melis";
    e880e2ee:	06e59023          	sh	a4,96(a1)
    e880e2f2:	00092717          	auipc	a4,0x92
    e880e2f6:	b6670713          	addi	a4,a4,-1178 # e889fe58 <TWO52+0x260>
    e880e2fa:	f5b8                	sd	a4,104(a1)
	curParam->id = 0x0004;curParam->type = DATA_TYPE_STR;curParam->data.str = "sw1.1.0";
    e880e2fc:	00092717          	auipc	a4,0x92
    e880e300:	b7c70713          	addi	a4,a4,-1156 # e889fe78 <TWO52+0x280>
    e880e304:	18e5b423          	sd	a4,392(a1)
	curParam->id = 0x0005;curParam->type = DATA_TYPE_STR;curParam->data.str = "hw1.1.0";
    e880e308:	00092717          	auipc	a4,0x92
    e880e30c:	b7870713          	addi	a4,a4,-1160 # e889fe80 <TWO52+0x288>
    e880e310:	1ee5b423          	sd	a4,488(a1)
	curParam->data.wordArray.number = 7;
    e880e314:	471d                	li	a4,7
    e880e316:	24e58423          	sb	a4,584(a1)
	curParam->data.wordArray.word[0] = 0xEA02;	//RequestAppLaunch
    e880e31a:	777d                	lui	a4,0xfffff
    e880e31c:	a027071b          	addiw	a4,a4,-1534
    e880e320:	24e59523          	sh	a4,586(a1)
	curParam->data.wordArray.word[1] = 0xAE00;	//StartPowerUpdates
    e880e324:	ae02b737          	lui	a4,0xae02b
    e880e328:	e007071b          	addiw	a4,a4,-512
    e880e32c:	24e5a623          	sw	a4,588(a1)
	curParam->data.wordArray.word[3] = 0xAE03;	//PowerSourceUpdate
    e880e330:	00092717          	auipc	a4,0x92
    e880e334:	af070713          	addi	a4,a4,-1296 # e889fe20 <TWO52+0x228>
    e880e338:	6318                	ld	a4,0(a4)
	curParam->id = 0x0000;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e33a:	0105b423          	sd	a6,8(a1)
	curParam->id = 0x0002;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e33e:	0d05b423          	sd	a6,200(a1)
	curParam->id = 0x0005;curParam->type = DATA_TYPE_STR;curParam->data.str = "hw1.1.0";
    e880e342:	4815                	li	a6,5
	curParam->id = 0x0003;curParam->type = DATA_TYPE_STR;curParam->data.str = "0123456789ABCDEF";
    e880e344:	00092897          	auipc	a7,0x92
    e880e348:	b1c88893          	addi	a7,a7,-1252 # e889fe60 <TWO52+0x268>
	curParam->id = 0x0005;curParam->type = DATA_TYPE_STR;curParam->data.str = "hw1.1.0";
    e880e34c:	1f059023          	sh	a6,480(a1)
	curParam->id = 0x0006;curParam->type = DATA_TYPE_WORD_ARRAY;
    e880e350:	25058123          	sb	a6,578(a1)
	curParam->data.wordArray.word[3] = 0xAE03;	//PowerSourceUpdate
    e880e354:	24e5b823          	sd	a4,592(a1)
	curParam->id = 0x0007;curParam->type = DATA_TYPE_WORD_ARRAY;
    e880e358:	2b058123          	sb	a6,674(a1)
    e880e35c:	471d                	li	a4,7
	curParam->data.wordArray.word[0] = 0xAE01;	//PowerUpdate
    e880e35e:	786d                	lui	a6,0xffffb
	curParam->id = 0x0002;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e360:	0cd59023          	sh	a3,192(a1)
	curParam->id = 0x0003;curParam->type = DATA_TYPE_STR;curParam->data.str = "0123456789ABCDEF";
    e880e364:	12c59023          	sh	a2,288(a1)
	curParam->id = 0x0006;curParam->type = DATA_TYPE_WORD_ARRAY;
    e880e368:	24a59023          	sh	a0,576(a1)
	curParam->id = 0x0007;curParam->type = DATA_TYPE_WORD_ARRAY;
    e880e36c:	2ae59023          	sh	a4,672(a1)
	curParam->data.wordArray.number = 3;
    e880e370:	2ac58423          	sb	a2,680(a1)
	curParam->data.wordArray.word[0] = 0xAE01;	//PowerUpdate
    e880e374:	e018081b          	addiw	a6,a6,-511
	curParam->id = 0x0000;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e378:	00059023          	sh	zero,0(a1)
    e880e37c:	00f58123          	sb	a5,2(a1)
	curParam->id = 0x0001;curParam->type = DATA_TYPE_STR;curParam->data.str = "Melis";
    e880e380:	06f58123          	sb	a5,98(a1)
	curParam->id = 0x0002;curParam->type = DATA_TYPE_STR;curParam->data.str = "LTT";
    e880e384:	0cf58123          	sb	a5,194(a1)
	curParam->id = 0x0003;curParam->type = DATA_TYPE_STR;curParam->data.str = "0123456789ABCDEF";
    e880e388:	12f58123          	sb	a5,290(a1)
    e880e38c:	1315b423          	sd	a7,296(a1)
	curParam->id = 0x0004;curParam->type = DATA_TYPE_STR;curParam->data.str = "sw1.1.0";
    e880e390:	18f59023          	sh	a5,384(a1)
    e880e394:	18f58123          	sb	a5,386(a1)
	curParam->id = 0x0005;curParam->type = DATA_TYPE_STR;curParam->data.str = "hw1.1.0";
    e880e398:	1ef58123          	sb	a5,482(a1)
	curParam->data.wordArray.word[0] = 0xAE01;	//PowerUpdate
    e880e39c:	2b059523          	sh	a6,682(a1)
	curParam->data.wordArray.word[1] = 0x5001;	//NowPlayingUpdate
    e880e3a0:	4e0b5837          	lui	a6,0x4e0b5
    e880e3a4:	2805                	addiw	a6,a6,1
    e880e3a6:	2b05a623          	sw	a6,684(a1)
	curParam->id = 0x0008;curParam->type = DATA_TYPE_BYTE;curParam->data.byte = 0x02;
    e880e3aa:	30d58123          	sb	a3,770(a1)
    e880e3ae:	30d58423          	sb	a3,776(a1)
	curParam->data.strArray.number = 2;
    e880e3b2:	42d58423          	sb	a3,1064(a1)
	curParam->id = 0x0008;curParam->type = DATA_TYPE_BYTE;curParam->data.byte = 0x02;
    e880e3b6:	4821                	li	a6,8
	curParam->data.strArray.str[1] = "zh";
    e880e3b8:	00092697          	auipc	a3,0x92
    e880e3bc:	ad068693          	addi	a3,a3,-1328 # e889fe88 <TWO52+0x290>
	curParam->id = 0x0008;curParam->type = DATA_TYPE_BYTE;curParam->data.byte = 0x02;
    e880e3c0:	31059023          	sh	a6,768(a1)
	curParam->id = 0x0009;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e3c4:	36c58123          	sb	a2,866(a1)
	curParam->data.strArray.str[1] = "zh";
    e880e3c8:	42d5bc23          	sd	a3,1080(a1)
	curParam->id = 0x0009;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e3cc:	4825                	li	a6,9
	curParam->id = 0x000c;curParam->type = DATA_TYPE_STR;curParam->data.str = "en";
    e880e3ce:	4631                	li	a2,12
	curParam->id = 0x0010;curParam->type = DATA_TYPE_PARAMETER;curParam->data.parameter = USBHostTransportComponent;
    e880e3d0:	46c1                	li	a3,16
	curParam->id = 0x0009;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e3d2:	37059023          	sh	a6,864(a1)
	curParam->id = 0x000c;curParam->type = DATA_TYPE_STR;curParam->data.str = "en";
    e880e3d6:	3cc59023          	sh	a2,960(a1)
	curParam->id = 0x0010;curParam->type = DATA_TYPE_PARAMETER;curParam->data.parameter = USBHostTransportComponent;
    e880e3da:	48d59023          	sh	a3,1152(a1)
    e880e3de:	48e58123          	sb	a4,1154(a1)
	curParam->id = 0x0014;curParam->type = DATA_TYPE_PARAMETER;curParam->data.parameter = VehicleInformationComponent;
    e880e3e2:	4ee58123          	sb	a4,1250(a1)
	curParam->id = 0x000c;curParam->type = DATA_TYPE_STR;curParam->data.str = "en";
    e880e3e6:	000c3617          	auipc	a2,0xc3
    e880e3ea:	9a260613          	addi	a2,a2,-1630 # e88d0d88 <memp_pools+0x598>
	curParam->id = 0x000d;curParam->type = DATA_TYPE_STR_ARRAY;
    e880e3ee:	4835                	li	a6,13
	curParam->id = 0x0014;curParam->type = DATA_TYPE_PARAMETER;curParam->data.parameter = VehicleInformationComponent;
    e880e3f0:	46d1                	li	a3,20
	curParam->id = 0x0022;curParam->type = DATA_TYPE_STR;curParam->data.str = "0123456789ABCDEF";
    e880e3f2:	02200713          	li	a4,34
	curParam->id = 0x000d;curParam->type = DATA_TYPE_STR_ARRAY;
    e880e3f6:	42a58123          	sb	a0,1058(a1)
	curParam->id = 0x0009;curParam->type = DATA_TYPE_WORD;curParam->data.word = 0x0000;
    e880e3fa:	36059423          	sh	zero,872(a1)
	curParam->id = 0x000c;curParam->type = DATA_TYPE_STR;curParam->data.str = "en";
    e880e3fe:	3cf58123          	sb	a5,962(a1)
    e880e402:	3cc5b423          	sd	a2,968(a1)
	curParam->id = 0x000d;curParam->type = DATA_TYPE_STR_ARRAY;
    e880e406:	43059023          	sh	a6,1056(a1)
	curParam->data.strArray.str[0] = "en";
    e880e40a:	42c5b823          	sd	a2,1072(a1)
	curParam->id = 0x0010;curParam->type = DATA_TYPE_PARAMETER;curParam->data.parameter = USBHostTransportComponent;
    e880e40e:	4885b423          	sd	s0,1160(a1)
	curParam->id = 0x0014;curParam->type = DATA_TYPE_PARAMETER;curParam->data.parameter = VehicleInformationComponent;
    e880e412:	4ed59023          	sh	a3,1248(a1)
    e880e416:	4e95b423          	sd	s1,1256(a1)
	curParam->id = 0x0022;curParam->type = DATA_TYPE_STR;curParam->data.str = "0123456789ABCDEF";
    e880e41a:	54e59023          	sh	a4,1344(a1)
    e880e41e:	54f58123          	sb	a5,1346(a1)
    e880e422:	5515b423          	sd	a7,1352(a1)
}
    e880e426:	6422                	ld	s0,8(sp)
    e880e428:	70a2                	ld	ra,40(sp)
    e880e42a:	64c2                	ld	s1,16(sp)
    e880e42c:	6962                	ld	s2,24(sp)
	SendCmd_IdentificationInformation(link,IdentificationInformation);
    e880e42e:	854e                	mv	a0,s3
}
    e880e430:	7982                	ld	s3,32(sp)
    e880e432:	6145                	addi	sp,sp,48
	SendCmd_IdentificationInformation(link,IdentificationInformation);
    e880e434:	947ff06f          	j	e880dd7a <SendCmd_IdentificationInformation>

00000000e880e438 <OnRecCmd_IdentificationAccepted>:
{
    e880e438:	1141                	addi	sp,sp,-16
    e880e43a:	e022                	sd	s0,0(sp)
    e880e43c:	842a                	mv	s0,a0
	printf("RecCmd IdentificationAccepted\n");
    e880e43e:	00092517          	auipc	a0,0x92
    e880e442:	8a250513          	addi	a0,a0,-1886 # e889fce0 <TWO52+0xe8>
{
    e880e446:	e406                	sd	ra,8(sp)
	printf("RecCmd IdentificationAccepted\n");
    e880e448:	67f6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	SendCmd_StartPowerUpdates(link);
    e880e44c:	8522                	mv	a0,s0
    e880e44e:	977ff0ef          	jal	ra,e880ddc4 <SendCmd_StartPowerUpdates>
	SendCmd_PowerSourceUpate(link);
    e880e452:	8522                	mv	a0,s0
}
    e880e454:	6402                	ld	s0,0(sp)
    e880e456:	60a2                	ld	ra,8(sp)
    e880e458:	0141                	addi	sp,sp,16
	SendCmd_PowerSourceUpate(link);
    e880e45a:	9c5ff06f          	j	e880de1e <SendCmd_PowerSourceUpate>

00000000e880e45e <OnRecCmd_NowPlayingUpdate>:
{
    e880e45e:	7149                	addi	sp,sp,-368
	if(GetSubParameter(0,parameter,parameterLen,&subParameter,&subParameterLen))
    e880e460:	0058                	addi	a4,sp,4
    e880e462:	0034                	addi	a3,sp,8
    e880e464:	4501                	li	a0,0
{
    e880e466:	fa5a                	sd	s6,304(sp)
    e880e468:	f65e                	sd	s7,296(sp)
    e880e46a:	f686                	sd	ra,360(sp)
    e880e46c:	f2a2                	sd	s0,352(sp)
    e880e46e:	eea6                	sd	s1,344(sp)
    e880e470:	eaca                	sd	s2,336(sp)
    e880e472:	e6ce                	sd	s3,328(sp)
    e880e474:	e2d2                	sd	s4,320(sp)
    e880e476:	fe56                	sd	s5,312(sp)
    e880e478:	f262                	sd	s8,288(sp)
    e880e47a:	ee66                	sd	s9,280(sp)
    e880e47c:	ea6a                	sd	s10,272(sp)
    e880e47e:	8b2e                	mv	s6,a1
    e880e480:	8bb2                	mv	s7,a2
	if(GetSubParameter(0,parameter,parameterLen,&subParameter,&subParameterLen))
    e880e482:	d6eff0ef          	jal	ra,e880d9f0 <GetSubParameter>
    e880e486:	e51d                	bnez	a0,e880e4b4 <OnRecCmd_NowPlayingUpdate+0x56>
	if(GetSubParameter(1,parameter,parameterLen,&subParameter,&subParameterLen))
    e880e488:	0058                	addi	a4,sp,4
    e880e48a:	0034                	addi	a3,sp,8
    e880e48c:	865e                	mv	a2,s7
    e880e48e:	85da                	mv	a1,s6
    e880e490:	4505                	li	a0,1
    e880e492:	d5eff0ef          	jal	ra,e880d9f0 <GetSubParameter>
    e880e496:	e969                	bnez	a0,e880e568 <OnRecCmd_NowPlayingUpdate+0x10a>
}
    e880e498:	70b6                	ld	ra,360(sp)
    e880e49a:	7416                	ld	s0,352(sp)
    e880e49c:	64f6                	ld	s1,344(sp)
    e880e49e:	6956                	ld	s2,336(sp)
    e880e4a0:	69b6                	ld	s3,328(sp)
    e880e4a2:	6a16                	ld	s4,320(sp)
    e880e4a4:	7af2                	ld	s5,312(sp)
    e880e4a6:	7b52                	ld	s6,304(sp)
    e880e4a8:	7bb2                	ld	s7,296(sp)
    e880e4aa:	7c12                	ld	s8,288(sp)
    e880e4ac:	6cf2                	ld	s9,280(sp)
    e880e4ae:	6d52                	ld	s10,272(sp)
    e880e4b0:	6175                	addi	sp,sp,368
    e880e4b2:	8082                	ret
		pData = subParameter;
    e880e4b4:	6422                	ld	s0,8(sp)
		pDataEnd = subParameter + subParameterLen;
    e880e4b6:	4992                	lw	s3,4(sp)
					memclr(str,sizeof(str));
    e880e4b8:	0804                	addi	s1,sp,16
			switch(id)
    e880e4ba:	4a91                	li	s5,4
		pDataEnd = subParameter + subParameterLen;
    e880e4bc:	99a2                	add	s3,s3,s0
			switch(id)
    e880e4be:	4c19                	li	s8,6
                    UpdateMediaInfo(CLink_MEDIA_INFO_ALBUM,str);
    e880e4c0:	00048a1b          	sext.w	s4,s1
			switch(id)
    e880e4c4:	4cb1                	li	s9,12
		while(pData < pDataEnd)
    e880e4c6:	fd3471e3          	bgeu	s0,s3,e880e488 <OnRecCmd_NowPlayingUpdate+0x2a>
			len = ((uint16_t)pData[0] << 8) | pData[1];
    e880e4ca:	00045783          	lhu	a5,0(s0)
    e880e4ce:	0087991b          	slliw	s2,a5,0x8
    e880e4d2:	5c87b78b          	extu	a5,a5,23,8
    e880e4d6:	00f967b3          	or	a5,s2,a5
    e880e4da:	3c07b90b          	extu	s2,a5,15,0
			id = ((uint16_t)pData[2] << 8) | pData[3];
    e880e4de:	00344783          	lbu	a5,3(s0)
    e880e4e2:	00090d1b          	sext.w	s10,s2
			switch(id)
    e880e4e6:	05578d63          	beq	a5,s5,e880e540 <OnRecCmd_NowPlayingUpdate+0xe2>
    e880e4ea:	00fae763          	bltu	s5,a5,e880e4f8 <OnRecCmd_NowPlayingUpdate+0x9a>
    e880e4ee:	4705                	li	a4,1
    e880e4f0:	02e78763          	beq	a5,a4,e880e51e <OnRecCmd_NowPlayingUpdate+0xc0>
			pData += len;
    e880e4f4:	944a                	add	s0,s0,s2
    e880e4f6:	bfc1                	j	e880e4c6 <OnRecCmd_NowPlayingUpdate+0x68>
			switch(id)
    e880e4f8:	05878963          	beq	a5,s8,e880e54a <OnRecCmd_NowPlayingUpdate+0xec>
    e880e4fc:	ff979ce3          	bne	a5,s9,e880e4f4 <OnRecCmd_NowPlayingUpdate+0x96>
					memclr(str,sizeof(str));
    e880e500:	0ff00593          	li	a1,255
    e880e504:	8526                	mv	a0,s1
    e880e506:	67f6d0ef          	jal	ra,e887c384 <eLIBs_memclr>
					memcpy(str,pData+4,len-4);
    e880e50a:	00440593          	addi	a1,s0,4
    e880e50e:	ffcd061b          	addiw	a2,s10,-4
    e880e512:	8526                	mv	a0,s1
    e880e514:	68d6d0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
                    UpdateMediaInfo(CLink_MEDIA_INFO_ARTIST,str);
    e880e518:	85d2                	mv	a1,s4
    e880e51a:	4515                	li	a0,5
    e880e51c:	a839                	j	e880e53a <OnRecCmd_NowPlayingUpdate+0xdc>
					memclr(str,sizeof(str));
    e880e51e:	0ff00593          	li	a1,255
    e880e522:	8526                	mv	a0,s1
    e880e524:	6616d0ef          	jal	ra,e887c384 <eLIBs_memclr>
					memcpy(str,pData+4,len-4);
    e880e528:	00440593          	addi	a1,s0,4
    e880e52c:	ffcd061b          	addiw	a2,s10,-4
    e880e530:	8526                	mv	a0,s1
    e880e532:	66f6d0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
                    UpdateMediaInfo(CLink_MEDIA_INFO_TITLE,str);
    e880e536:	85d2                	mv	a1,s4
    e880e538:	450d                	li	a0,3
                    UpdateMediaInfo(CLink_MEDIA_INFO_ARTIST,str);
    e880e53a:	774660ef          	jal	ra,e8874cae <UpdateMediaInfo>
					break;
    e880e53e:	bf5d                	j	e880e4f4 <OnRecCmd_NowPlayingUpdate+0x96>
                    UpdateMediaInfo(CLink_MEDIA_INFO_DURATION,value);
    e880e540:	404c                	lw	a1,4(s0)
    e880e542:	4505                	li	a0,1
    e880e544:	9005958b          	revw	a1,a1
    e880e548:	bfcd                	j	e880e53a <OnRecCmd_NowPlayingUpdate+0xdc>
					memclr(str,sizeof(str));
    e880e54a:	0ff00593          	li	a1,255
    e880e54e:	8526                	mv	a0,s1
    e880e550:	6356d0ef          	jal	ra,e887c384 <eLIBs_memclr>
					memcpy(str,pData+4,len-4);
    e880e554:	00440593          	addi	a1,s0,4
    e880e558:	ffcd061b          	addiw	a2,s10,-4
    e880e55c:	8526                	mv	a0,s1
    e880e55e:	6436d0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
                    UpdateMediaInfo(CLink_MEDIA_INFO_ALBUM,str);
    e880e562:	85d2                	mv	a1,s4
    e880e564:	4511                	li	a0,4
    e880e566:	bfd1                	j	e880e53a <OnRecCmd_NowPlayingUpdate+0xdc>
		pData = subParameter;
    e880e568:	6422                	ld	s0,8(sp)
		pDataEnd = subParameter + subParameterLen;
    e880e56a:	4912                	lw	s2,4(sp)
			switch(id)
    e880e56c:	4985                	li	s3,1
		pDataEnd = subParameter + subParameterLen;
    e880e56e:	9922                	add	s2,s2,s0
		while(pData < pDataEnd)
    e880e570:	f32474e3          	bgeu	s0,s2,e880e498 <OnRecCmd_NowPlayingUpdate+0x3a>
			len = ((uint16_t)pData[0] << 8) | pData[1];
    e880e574:	00045783          	lhu	a5,0(s0)
    e880e578:	0087949b          	slliw	s1,a5,0x8
    e880e57c:	5c87b78b          	extu	a5,a5,23,8
    e880e580:	8cdd                	or	s1,s1,a5
			id = ((uint16_t)pData[2] << 8) | pData[3];
    e880e582:	00344783          	lbu	a5,3(s0)
    e880e586:	3c04b48b          	extu	s1,s1,15,0
			switch(id)
    e880e58a:	c789                	beqz	a5,e880e594 <OnRecCmd_NowPlayingUpdate+0x136>
    e880e58c:	01378a63          	beq	a5,s3,e880e5a0 <OnRecCmd_NowPlayingUpdate+0x142>
			pData += len;
    e880e590:	9426                	add	s0,s0,s1
    e880e592:	bff9                	j	e880e570 <OnRecCmd_NowPlayingUpdate+0x112>
                    UpdateMediaInfo(CLink_MEDIA_INFO_STATUS,value);
    e880e594:	00444583          	lbu	a1,4(s0)
    e880e598:	4501                	li	a0,0
                    UpdateMediaInfo(CLink_MEDIA_INFO_POSITION,value);
    e880e59a:	714660ef          	jal	ra,e8874cae <UpdateMediaInfo>
					break;
    e880e59e:	bfcd                	j	e880e590 <OnRecCmd_NowPlayingUpdate+0x132>
                    UpdateMediaInfo(CLink_MEDIA_INFO_POSITION,value);
    e880e5a0:	404c                	lw	a1,4(s0)
    e880e5a2:	4509                	li	a0,2
    e880e5a4:	9005958b          	revw	a1,a1
    e880e5a8:	bfcd                	j	e880e59a <OnRecCmd_NowPlayingUpdate+0x13c>

00000000e880e5aa <OnRecCmd_DeviceTimeUpdate>:
{
    e880e5aa:	715d                	addi	sp,sp,-80
    e880e5ac:	fc26                	sd	s1,56(sp)
    e880e5ae:	f44e                	sd	s3,40(sp)
    e880e5b0:	84ae                	mv	s1,a1
    e880e5b2:	89b2                	mv	s3,a2
	printf("RecCmd_DeviceTimeUpdate\r\n");
    e880e5b4:	00091517          	auipc	a0,0x91
    e880e5b8:	6b450513          	addi	a0,a0,1716 # e889fc68 <TWO52+0x70>
{
    e880e5bc:	e0a2                	sd	s0,64(sp)
    e880e5be:	f052                	sd	s4,32(sp)
    e880e5c0:	ec56                	sd	s5,24(sp)
    e880e5c2:	e85a                	sd	s6,16(sp)
    e880e5c4:	e486                	sd	ra,72(sp)
    e880e5c6:	f84a                	sd	s2,48(sp)
    e880e5c8:	4401                	li	s0,0
	printf("RecCmd_DeviceTimeUpdate\r\n");
    e880e5ca:	4fd6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	pDataEnd = parameter + parameterLen;
    e880e5ce:	99a6                	add	s3,s3,s1
                printf("SecondsSinceReferenceDate %d\r\n",time_sec);
    e880e5d0:	00091a17          	auipc	s4,0x91
    e880e5d4:	6b8a0a13          	addi	s4,s4,1720 # e889fc88 <TWO52+0x90>
		switch(id)
    e880e5d8:	4a85                	li	s5,1
                printf("TimeZoneoffsetMinutes %d\r\n",time_zone);
    e880e5da:	00091b17          	auipc	s6,0x91
    e880e5de:	6ceb0b13          	addi	s6,s6,1742 # e889fca8 <TWO52+0xb0>
	while(pData < pDataEnd)
    e880e5e2:	0734e163          	bltu	s1,s3,e880e644 <OnRecCmd_DeviceTimeUpdate+0x9a>
    time_sec += time_zone*60;
    e880e5e6:	03c00793          	li	a5,60
    e880e5ea:	028787bb          	mulw	a5,a5,s0
    e880e5ee:	6422                	ld	s0,8(sp)
    tm = localtime(&time_sec);
    e880e5f0:	0028                	addi	a0,sp,8
    time_sec += time_zone*60;
    e880e5f2:	943e                	add	s0,s0,a5
    e880e5f4:	e422                	sd	s0,8(sp)
    tm = localtime(&time_sec);
    e880e5f6:	1126d0ef          	jal	ra,e887b708 <localtime>
    printf("time %d-%d-%d %d:%d:%d\n",tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);
    e880e5fa:	e4b5460b          	lwd	a2,a1,(a0),2,3
    e880e5fe:	e0f5480b          	lwd	a6,a5,(a0),0,3
    e880e602:	e2d5470b          	lwd	a4,a3,(a0),1,3
    tm = localtime(&time_sec);
    e880e606:	842a                	mv	s0,a0
    printf("time %d-%d-%d %d:%d:%d\n",tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);
    e880e608:	2605                	addiw	a2,a2,1
    e880e60a:	76c5859b          	addiw	a1,a1,1900
    e880e60e:	00091517          	auipc	a0,0x91
    e880e612:	6ba50513          	addi	a0,a0,1722 # e889fcc8 <TWO52+0xd0>
    e880e616:	4b16d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    UpdateDeviceTime(tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec);
    e880e61a:	e4a4458b          	lwd	a1,a0,(s0),2,3
    e880e61e:	e0e4478b          	lwd	a5,a4,(s0),0,3
    e880e622:	e2c4468b          	lwd	a3,a2,(s0),1,3
    e880e626:	2585                	addiw	a1,a1,1
    e880e628:	76c5051b          	addiw	a0,a0,1900
    e880e62c:	6a4660ef          	jal	ra,e8874cd0 <UpdateDeviceTime>
}
    e880e630:	6406                	ld	s0,64(sp)
    e880e632:	60a6                	ld	ra,72(sp)
    e880e634:	74e2                	ld	s1,56(sp)
    e880e636:	7942                	ld	s2,48(sp)
    e880e638:	79a2                	ld	s3,40(sp)
    e880e63a:	7a02                	ld	s4,32(sp)
    e880e63c:	6ae2                	ld	s5,24(sp)
    e880e63e:	6b42                	ld	s6,16(sp)
    e880e640:	6161                	addi	sp,sp,80
    e880e642:	8082                	ret
		len = ((uint16_t)pData[0] << 8) | pData[1];
    e880e644:	0004d783          	lhu	a5,0(s1)
    e880e648:	0087991b          	slliw	s2,a5,0x8
    e880e64c:	5c87b78b          	extu	a5,a5,23,8
    e880e650:	00f967b3          	or	a5,s2,a5
    e880e654:	3c07b90b          	extu	s2,a5,15,0
		id = ((uint16_t)pData[2] << 8) | pData[3];
    e880e658:	0034c783          	lbu	a5,3(s1)
		switch(id)
    e880e65c:	c789                	beqz	a5,e880e666 <OnRecCmd_DeviceTimeUpdate+0xbc>
    e880e65e:	01578d63          	beq	a5,s5,e880e678 <OnRecCmd_DeviceTimeUpdate+0xce>
		pData += len;
    e880e662:	94ca                	add	s1,s1,s2
    e880e664:	bfbd                	j	e880e5e2 <OnRecCmd_DeviceTimeUpdate+0x38>
                time_sec = ((uint64_t) (pData[4]) << 56) |
    e880e666:	0044b583          	ld	a1,4(s1)
                printf("SecondsSinceReferenceDate %d\r\n",time_sec);
    e880e66a:	8552                	mv	a0,s4
    e880e66c:	8205958b          	rev	a1,a1
                time_sec = ((uint64_t) (pData[4]) << 56) |
    e880e670:	e42e                	sd	a1,8(sp)
                printf("SecondsSinceReferenceDate %d\r\n",time_sec);
    e880e672:	4556d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
			    break;
    e880e676:	b7f5                	j	e880e662 <OnRecCmd_DeviceTimeUpdate+0xb8>
                time_zone = ((int16_t) (pData[4]) << 8) |
    e880e678:	0044c403          	lbu	s0,4(s1)
                        	((int16_t) (pData[5]));
    e880e67c:	0054c783          	lbu	a5,5(s1)
                printf("TimeZoneoffsetMinutes %d\r\n",time_zone);
    e880e680:	855a                	mv	a0,s6
                time_zone = ((int16_t) (pData[4]) << 8) |
    e880e682:	0084141b          	slliw	s0,s0,0x8
    e880e686:	8c5d                	or	s0,s0,a5
    e880e688:	3c04240b          	ext	s0,s0,15,0
                printf("TimeZoneoffsetMinutes %d\r\n",time_zone);
    e880e68c:	85a2                	mv	a1,s0
    e880e68e:	4396d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
			    break;
    e880e692:	bfc1                	j	e880e662 <OnRecCmd_DeviceTimeUpdate+0xb8>

00000000e880e694 <iAP2LinkDataReadyCB>:
{
    e880e694:	1141                	addi	sp,sp,-16
    e880e696:	e406                	sd	ra,8(sp)
    e880e698:	e022                	sd	s0,0(sp)
		uint16_t messageLen = (uint16_t)data[2]<<8|data[3];
    e880e69a:	0025c703          	lbu	a4,2(a1)
    e880e69e:	0035c603          	lbu	a2,3(a1)
		uint16_t messageID = (uint16_t)data[4]<<8|data[5];
    e880e6a2:	0045c783          	lbu	a5,4(a1)
    e880e6a6:	0055c683          	lbu	a3,5(a1)
		uint16_t messageLen = (uint16_t)data[2]<<8|data[3];
    e880e6aa:	0087171b          	slliw	a4,a4,0x8
    e880e6ae:	8f51                	or	a4,a4,a2
		uint16_t messageID = (uint16_t)data[4]<<8|data[5];
    e880e6b0:	0087979b          	slliw	a5,a5,0x8
		uint16_t messageLen = (uint16_t)data[2]<<8|data[3];
    e880e6b4:	3c07270b          	ext	a4,a4,15,0
		switch(messageID)
    e880e6b8:	6815                	lui	a6,0x5
		uint16_t parameterLen = messageLen - 6;
    e880e6ba:	ffa7061b          	addiw	a2,a4,-6
		switch(messageID)
    e880e6be:	8fd5                	or	a5,a5,a3
    e880e6c0:	00180693          	addi	a3,a6,1 # 5001 <memcmp-0xe87fafff>
		uint8_t* parameter = data + 6;
    e880e6c4:	0599                	addi	a1,a1,6
		uint16_t parameterLen = messageLen - 6;
    e880e6c6:	3c06360b          	extu	a2,a2,15,0
		switch(messageID)
    e880e6ca:	0cd78363          	beq	a5,a3,e880e790 <iAP2LinkDataReadyCB+0xfc>
    e880e6ce:	04f6e263          	bltu	a3,a5,e880e712 <iAP2LinkDataReadyCB+0x7e>
    e880e6d2:	6689                	lui	a3,0x2
    e880e6d4:	d0268893          	addi	a7,a3,-766 # 1d02 <memcmp-0xe87fe2fe>
    e880e6d8:	0b178463          	beq	a5,a7,e880e780 <iAP2LinkDataReadyCB+0xec>
    e880e6dc:	02f8e063          	bltu	a7,a5,e880e6fc <iAP2LinkDataReadyCB+0x68>
    e880e6e0:	d0068693          	addi	a3,a3,-768
    e880e6e4:	08d78b63          	beq	a5,a3,e880e77a <iAP2LinkDataReadyCB+0xe6>
				printf("unknow messageID 0x%x,messageLen 0x%x\r\n",messageID,messageLen);
    e880e6e8:	3c07360b          	extu	a2,a4,15,0
    e880e6ec:	85be                	mv	a1,a5
    e880e6ee:	00092517          	auipc	a0,0x92
    e880e6f2:	88250513          	addi	a0,a0,-1918 # e889ff70 <TWO52+0x378>
    e880e6f6:	3d16d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
				break;
    e880e6fa:	a0b1                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>
		switch(messageID)
    e880e6fc:	d0368693          	addi	a3,a3,-765
    e880e700:	08d78363          	beq	a5,a3,e880e786 <iAP2LinkDataReadyCB+0xf2>
    e880e704:	e0b80813          	addi	a6,a6,-501
    e880e708:	ff0790e3          	bne	a5,a6,e880e6e8 <iAP2LinkDataReadyCB+0x54>
				OnRecCmd_DeviceTimeUpdate(link,parameter,parameterLen);
    e880e70c:	e9fff0ef          	jal	ra,e880e5aa <OnRecCmd_DeviceTimeUpdate>
                break;
    e880e710:	a81d                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>
		switch(messageID)
    e880e712:	66ad                	lui	a3,0xb
    e880e714:	a0468813          	addi	a6,a3,-1532 # aa04 <memcmp-0xe87f55fc>
    e880e718:	03078f63          	beq	a5,a6,e880e756 <iAP2LinkDataReadyCB+0xc2>
    e880e71c:	00f86d63          	bltu	a6,a5,e880e736 <iAP2LinkDataReadyCB+0xa2>
    e880e720:	a0068813          	addi	a6,a3,-1536
    e880e724:	03078663          	beq	a5,a6,e880e750 <iAP2LinkDataReadyCB+0xbc>
    e880e728:	a0268693          	addi	a3,a3,-1534
    e880e72c:	fad79ee3          	bne	a5,a3,e880e6e8 <iAP2LinkDataReadyCB+0x54>
				OnRecCmd_RequestAuthenticationChallengeResponse(link,parameter,parameterLen);
    e880e730:	967ff0ef          	jal	ra,e880e096 <OnRecCmd_RequestAuthenticationChallengeResponse>
				break;
    e880e734:	a809                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>
		switch(messageID)
    e880e736:	a0568693          	addi	a3,a3,-1531
    e880e73a:	02d78563          	beq	a5,a3,e880e764 <iAP2LinkDataReadyCB+0xd0>
    e880e73e:	66c1                	lui	a3,0x10
    e880e740:	16e9                	addi	a3,a3,-6
    e880e742:	fad793e3          	bne	a5,a3,e880e6e8 <iAP2LinkDataReadyCB+0x54>
}
    e880e746:	60a2                	ld	ra,8(sp)
    e880e748:	6402                	ld	s0,0(sp)
    e880e74a:	4505                	li	a0,1
    e880e74c:	0141                	addi	sp,sp,16
    e880e74e:	8082                	ret
				OnRecCmd_RequestAuthenticationCertificate(link,parameter,parameterLen);
    e880e750:	88bff0ef          	jal	ra,e880dfda <OnRecCmd_RequestAuthenticationCertificate>
				break;
    e880e754:	bfcd                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>
	printf("RecCmd AuthenticationFailed\n");
    e880e756:	00091517          	auipc	a0,0x91
    e880e75a:	4d250513          	addi	a0,a0,1234 # e889fc28 <TWO52+0x30>
	printf("RecCmd IdentificationRejected\n");
    e880e75e:	3696d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e880e762:	b7d5                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>
    e880e764:	842a                	mv	s0,a0
	printf("RecCmd AuthenticationSucceeded\n");
    e880e766:	00091517          	auipc	a0,0x91
    e880e76a:	4e250513          	addi	a0,a0,1250 # e889fc48 <TWO52+0x50>
    e880e76e:	3596d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    SendCmd_StartNowPlayingUpdates(link);
    e880e772:	8522                	mv	a0,s0
    e880e774:	f12ff0ef          	jal	ra,e880de86 <SendCmd_StartNowPlayingUpdates>
    e880e778:	b7f9                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>
				OnRecCmd_StartIdentification(link,parameter,parameterLen);
    e880e77a:	a4fff0ef          	jal	ra,e880e1c8 <OnRecCmd_StartIdentification>
				break;
    e880e77e:	b7e1                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>
				OnRecCmd_IdentificationAccepted(link,parameter,parameterLen);
    e880e780:	cb9ff0ef          	jal	ra,e880e438 <OnRecCmd_IdentificationAccepted>
				break;
    e880e784:	b7c9                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>
	printf("RecCmd IdentificationRejected\n");
    e880e786:	00091517          	auipc	a0,0x91
    e880e78a:	57a50513          	addi	a0,a0,1402 # e889fd00 <TWO52+0x108>
    e880e78e:	bfc1                	j	e880e75e <iAP2LinkDataReadyCB+0xca>
				OnRecCmd_NowPlayingUpdate(link,parameter,parameterLen);
    e880e790:	ccfff0ef          	jal	ra,e880e45e <OnRecCmd_NowPlayingUpdate>
				break;
    e880e794:	bf4d                	j	e880e746 <iAP2LinkDataReadyCB+0xb2>

00000000e880e796 <iAP2LinkRunLoopInitImplementation>:
**
**
*****************************************************************
*/
void iAP2LinkRunLoopInitImplementation (iAP2LinkRunLoop_t* linkRunLoop)
{
    e880e796:	1101                	addi	sp,sp,-32
	pthread_t tidp;

	//pthread_mutex_init(&mutex,NULL);
	//pthread_cond_init(&cond,NULL);

	ret = pthread_create(&tidp,NULL,iAP2LinkThread,(void*)linkRunLoop);
    e880e798:	86aa                	mv	a3,a0
    e880e79a:	fffff617          	auipc	a2,0xfffff
    e880e79e:	04460613          	addi	a2,a2,68 # e880d7de <iAP2LinkThread>
    e880e7a2:	0068                	addi	a0,sp,12
    e880e7a4:	4581                	li	a1,0
{
    e880e7a6:	ec06                	sd	ra,24(sp)
	ret = pthread_create(&tidp,NULL,iAP2LinkThread,(void*)linkRunLoop);
    e880e7a8:	29c6d0ef          	jal	ra,e887ba44 <pthread_create>
}
    e880e7ac:	60e2                	ld	ra,24(sp)
    e880e7ae:	6105                	addi	sp,sp,32
    e880e7b0:	8082                	ret

00000000e880e7b2 <iAP2LinkRunLoopWait>:
**
**
*****************************************************************
*/
BOOL iAP2LinkRunLoopWait (iAP2LinkRunLoop_t* linkRunLoop)
{
    e880e7b2:	1141                	addi	sp,sp,-16
	printf("iAP2LinkRunLoopWait start\n");
    e880e7b4:	00092517          	auipc	a0,0x92
    e880e7b8:	8c450513          	addi	a0,a0,-1852 # e88a0078 <TWO52+0x480>
{
    e880e7bc:	e406                	sd	ra,8(sp)
    e880e7be:	e022                	sd	s0,0(sp)
	printf("iAP2LinkRunLoopWait start\n");
    e880e7c0:	3076d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	pthread_mutex_lock(&mutex);
    e880e7c4:	000ca417          	auipc	s0,0xca
    e880e7c8:	bf440413          	addi	s0,s0,-1036 # e88d83b8 <mutex>
    e880e7cc:	8522                	mv	a0,s0
    e880e7ce:	3506d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	pthread_cond_wait(&cond, &mutex);
    e880e7d2:	85a2                	mv	a1,s0
    e880e7d4:	000ca517          	auipc	a0,0xca
    e880e7d8:	bc450513          	addi	a0,a0,-1084 # e88d8398 <cond>
    e880e7dc:	52c6d0ef          	jal	ra,e887bd08 <pthread_cond_wait>
	pthread_mutex_unlock(&mutex);
    e880e7e0:	8522                	mv	a0,s0
    e880e7e2:	3806d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	printf("iAP2LinkRunLoopWait end\n");
    e880e7e6:	00092517          	auipc	a0,0x92
    e880e7ea:	8b250513          	addi	a0,a0,-1870 # e88a0098 <TWO52+0x4a0>
    e880e7ee:	2d96d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	return TRUE;
}
    e880e7f2:	6402                	ld	s0,0(sp)
    e880e7f4:	60a2                	ld	ra,8(sp)
    e880e7f6:	4505                	li	a0,1
    e880e7f8:	0141                	addi	sp,sp,16
    e880e7fa:	8082                	ret

00000000e880e7fc <iAP2LinkRunLoopSignal>:
*****************************************************************
*/
    void printf_backtrace(void);

void iAP2LinkRunLoopSignal (iAP2LinkRunLoop_t* linkRunLoop, void* arg)
{
    e880e7fc:	1101                	addi	sp,sp,-32
    e880e7fe:	e42e                	sd	a1,8(sp)
    e880e800:	ec06                	sd	ra,24(sp)
    printf_backtrace();
    e880e802:	0526d0ef          	jal	ra,e887b854 <printf_backtrace>
	printf("iAP2LinkRunLoopSignal start\n");
    e880e806:	00092517          	auipc	a0,0x92
    e880e80a:	83250513          	addi	a0,a0,-1998 # e88a0038 <TWO52+0x440>
    e880e80e:	2b96d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	pthread_mutex_lock(&mutex);
    e880e812:	000ca517          	auipc	a0,0xca
    e880e816:	ba650513          	addi	a0,a0,-1114 # e88d83b8 <mutex>
    e880e81a:	3046d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if(arg != NULL)
    e880e81e:	65a2                	ld	a1,8(sp)
    e880e820:	c589                	beqz	a1,e880e82a <iAP2LinkRunLoopSignal+0x2e>
	{
		g_pPacket = (iAP2Packet_t*)arg;
    e880e822:	000ca797          	auipc	a5,0xca
    e880e826:	b6b7bf23          	sd	a1,-1154(a5) # e88d83a0 <g_pPacket>
	}
	pthread_cond_signal(&cond);
    e880e82a:	000ca517          	auipc	a0,0xca
    e880e82e:	b6e50513          	addi	a0,a0,-1170 # e88d8398 <cond>
    e880e832:	4d26d0ef          	jal	ra,e887bd04 <pthread_cond_signal>
	pthread_mutex_unlock(&mutex);
    e880e836:	000ca517          	auipc	a0,0xca
    e880e83a:	b8250513          	addi	a0,a0,-1150 # e88d83b8 <mutex>
    e880e83e:	3246d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	printf("iAP2LinkRunLoopSignal end\n");
}
    e880e842:	60e2                	ld	ra,24(sp)
	printf("iAP2LinkRunLoopSignal end\n");
    e880e844:	00092517          	auipc	a0,0x92
    e880e848:	81450513          	addi	a0,a0,-2028 # e88a0058 <TWO52+0x460>
}
    e880e84c:	6105                	addi	sp,sp,32
	printf("iAP2LinkRunLoopSignal end\n");
    e880e84e:	2796d06f          	j	e887c2c6 <eLIBs_printf>

00000000e880e852 <iAP2LinkRunLoopProtectedCall>:
*****************************************************************
*/
BOOL iAP2LinkRunLoopProtectedCall (iAP2LinkRunLoop_t* linkRunLoop,
                                   void* arg,
                                   BOOL (*func)(iAP2LinkRunLoop_t* linkRunLoop, void* arg))
{
    e880e852:	7179                	addi	sp,sp,-48
    e880e854:	f04a                	sd	s2,32(sp)
    e880e856:	892a                	mv	s2,a0
	BOOL bRet;
	printf("iAP2LinkRunLoopProtectedCall start\n");
    e880e858:	00091517          	auipc	a0,0x91
    e880e85c:	74050513          	addi	a0,a0,1856 # e889ff98 <TWO52+0x3a0>
{
    e880e860:	f406                	sd	ra,40(sp)
    e880e862:	fa91540b          	sdd	s0,s1,(sp),1,4
    e880e866:	e432                	sd	a2,8(sp)
	printf("iAP2LinkRunLoopProtectedCall start\n");
    e880e868:	25f6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	pthread_mutex_lock(&mutex);
    e880e86c:	000ca417          	auipc	s0,0xca
    e880e870:	b4c40413          	addi	s0,s0,-1204 # e88d83b8 <mutex>
    e880e874:	8522                	mv	a0,s0
    e880e876:	2a86d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	bRet = func(linkRunLoop,g_pPacket);
    e880e87a:	000ca497          	auipc	s1,0xca
    e880e87e:	b2648493          	addi	s1,s1,-1242 # e88d83a0 <g_pPacket>
    e880e882:	608c                	ld	a1,0(s1)
    e880e884:	6622                	ld	a2,8(sp)
    e880e886:	854a                	mv	a0,s2
    e880e888:	9602                	jalr	a2
    e880e88a:	892a                	mv	s2,a0
	g_pPacket = NULL;	//
	pthread_mutex_unlock(&mutex);
    e880e88c:	8522                	mv	a0,s0
	g_pPacket = NULL;	//
    e880e88e:	0004b023          	sd	zero,0(s1)
	pthread_mutex_unlock(&mutex);
    e880e892:	2d06d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	printf("iAP2LinkRunLoopProtectedCall end\n");
    e880e896:	00091517          	auipc	a0,0x91
    e880e89a:	72a50513          	addi	a0,a0,1834 # e889ffc0 <TWO52+0x3c8>
    e880e89e:	2296d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	return bRet;
}
    e880e8a2:	fa91440b          	ldd	s0,s1,(sp),1,4
    e880e8a6:	70a2                	ld	ra,40(sp)
    e880e8a8:	854a                	mv	a0,s2
    e880e8aa:	7902                	ld	s2,32(sp)
    e880e8ac:	6145                	addi	sp,sp,48
    e880e8ae:	8082                	ret

00000000e880e8b0 <iAP2LinkRunLoopSetEventMaskBit>:
*****************************************************************
*/
void iAP2LinkRunLoopSetEventMaskBit (iAP2LinkRunLoop_t*         linkRunLoop,
                                     iAP2LinkRunLoopEventMask_t bit)
{
	if(linkRunLoop)
    e880e8b0:	c531                	beqz	a0,e880e8fc <iAP2LinkRunLoopSetEventMaskBit+0x4c>
{
    e880e8b2:	1101                	addi	sp,sp,-32
    e880e8b4:	e422                	sd	s0,8(sp)
    e880e8b6:	842a                	mv	s0,a0
	{
	printf("iAP2LinkRunLoopSetEventMaskBit start\n");
    e880e8b8:	00091517          	auipc	a0,0x91
    e880e8bc:	73050513          	addi	a0,a0,1840 # e889ffe8 <TWO52+0x3f0>
{
    e880e8c0:	ec06                	sd	ra,24(sp)
    e880e8c2:	e826                	sd	s1,16(sp)
    e880e8c4:	84ae                	mv	s1,a1
	printf("iAP2LinkRunLoopSetEventMaskBit start\n");
    e880e8c6:	2016d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
		pthread_mutex_lock(&mutex);
    e880e8ca:	000ca517          	auipc	a0,0xca
    e880e8ce:	aee50513          	addi	a0,a0,-1298 # e88d83b8 <mutex>
    e880e8d2:	24c6d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		linkRunLoop->eventMask |= bit;
    e880e8d6:	540c                	lw	a1,40(s0)
		pthread_mutex_unlock(&mutex);
    e880e8d8:	000ca517          	auipc	a0,0xca
    e880e8dc:	ae050513          	addi	a0,a0,-1312 # e88d83b8 <mutex>
		linkRunLoop->eventMask |= bit;
    e880e8e0:	8ccd                	or	s1,s1,a1
    e880e8e2:	d404                	sw	s1,40(s0)
		pthread_mutex_unlock(&mutex);
    e880e8e4:	27e6d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	printf("iAP2LinkRunLoopSetEventMaskBit end\n");
	}
}
    e880e8e8:	6422                	ld	s0,8(sp)
    e880e8ea:	60e2                	ld	ra,24(sp)
    e880e8ec:	64c2                	ld	s1,16(sp)
	printf("iAP2LinkRunLoopSetEventMaskBit end\n");
    e880e8ee:	00091517          	auipc	a0,0x91
    e880e8f2:	72250513          	addi	a0,a0,1826 # e88a0010 <TWO52+0x418>
}
    e880e8f6:	6105                	addi	sp,sp,32
	printf("iAP2LinkRunLoopSetEventMaskBit end\n");
    e880e8f8:	1cf6d06f          	j	e887c2c6 <eLIBs_printf>
    e880e8fc:	8082                	ret

00000000e880e8fe <iAP2LinkRunLoopGetResetEventMask>:
**                sure operation on linkRunLoop->eventMask is atomic.
**
*****************************************************************
*/
uint32_t iAP2LinkRunLoopGetResetEventMask (iAP2LinkRunLoop_t* linkRunLoop)
{ 
    e880e8fe:	87aa                	mv	a5,a0
	uint32_t  eventMask = kiAP2LinkRunLoopEventMaskNone;
	if(linkRunLoop)
    e880e900:	c509                	beqz	a0,e880e90a <iAP2LinkRunLoopGetResetEventMask+0xc>
	{
		//pthread_mutex_lock(&mutex);
		eventMask = linkRunLoop->eventMask;
    e880e902:	5508                	lw	a0,40(a0)
		linkRunLoop->eventMask = kiAP2LinkRunLoopEventMaskNone;
    e880e904:	0207a423          	sw	zero,40(a5)
    e880e908:	8082                	ret
	uint32_t  eventMask = kiAP2LinkRunLoopEventMaskNone;
    e880e90a:	4501                	li	a0,0
		//pthread_mutex_unlock(&mutex);
	}
	return eventMask;
}
    e880e90c:	8082                	ret

00000000e880e90e <SendDataToUsb>:
typedef int32_t (*fun_callback)(void *buf);
static fun_callback iap_callback;

//ݵUSB˿
BOOL SendDataToUsb(uint8_t *pData,int len)
{
    e880e90e:	7139                	addi	sp,sp,-64

	data[0] = IAP_DATA_USB_OUTPUT;
	data[1] = pData;
	data[2] = len;
	
	if(iap_callback)
    e880e910:	000ca797          	auipc	a5,0xca
    e880e914:	aa078793          	addi	a5,a5,-1376 # e88d83b0 <iap_callback>
{
    e880e918:	fc06                	sd	ra,56(sp)
	if(iap_callback)
    e880e91a:	639c                	ld	a5,0(a5)
	data[0] = IAP_DATA_USB_OUTPUT;
    e880e91c:	c402                	sw	zero,8(sp)
	data[1] = pData;
    e880e91e:	c62a                	sw	a0,12(sp)
	data[2] = len;
    e880e920:	c82e                	sw	a1,16(sp)
	if(iap_callback)
    e880e922:	c399                	beqz	a5,e880e928 <SendDataToUsb+0x1a>
	{
		iap_callback(data);
    e880e924:	0028                	addi	a0,sp,8
    e880e926:	9782                	jalr	a5
	}

	return TRUE;
}
    e880e928:	70e2                	ld	ra,56(sp)
    e880e92a:	4505                	li	a0,1
    e880e92c:	6121                	addi	sp,sp,64
    e880e92e:	8082                	ret

00000000e880e930 <iAP2LinkSendPacketCB>:
{
    e880e930:	1101                	addi	sp,sp,-32
	uint16_t dataLen = iAP2PacketGetPayloadLen (packet);
    e880e932:	852e                	mv	a0,a1
{
    e880e934:	ec06                	sd	ra,24(sp)
    e880e936:	f891540b          	sdd	s0,s1,(sp),0,4
    e880e93a:	e84a                	sd	s2,16(sp)
    e880e93c:	842e                	mv	s0,a1
	uint16_t dataLen = iAP2PacketGetPayloadLen (packet);
    e880e93e:	367020ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
    e880e942:	84aa                	mv	s1,a0
    packet->pckData->chk = iAP2PacketCalcChecksum (iAP2PacketGetBuffer(packet),
    e880e944:	8522                	mv	a0,s0
    e880e946:	353020ef          	jal	ra,e8811498 <iAP2PacketGetBuffer>
    e880e94a:	03843903          	ld	s2,56(s0)
    e880e94e:	45a1                	li	a1,8
    e880e950:	625020ef          	jal	ra,e8811774 <iAP2PacketCalcChecksum>
    e880e954:	00a90423          	sb	a0,8(s2)
    if (dataLen > 0)
    e880e958:	cc91                	beqz	s1,e880e974 <iAP2LinkSendPacketCB+0x44>
        packet->dataChecksum = iAP2PacketCalcChecksum (iAP2PacketGetPayload (packet),dataLen);
    e880e95a:	8522                	mv	a0,s0
    e880e95c:	343020ef          	jal	ra,e881149e <iAP2PacketGetPayload>
    e880e960:	2481                	sext.w	s1,s1
    e880e962:	85a6                	mv	a1,s1
    e880e964:	611020ef          	jal	ra,e8811774 <iAP2PacketCalcChecksum>
    e880e968:	02a40323          	sb	a0,38(s0)
		packet->pckData->data[dataLen] = packet->dataChecksum;
    e880e96c:	7c1c                	ld	a5,56(s0)
    e880e96e:	94be                	add	s1,s1,a5
    e880e970:	00a484a3          	sb	a0,9(s1)
	if(packet)
    e880e974:	c819                	beqz	s0,e880e98a <iAP2LinkSendPacketCB+0x5a>
		SendDataToUsb((uint8_t*)packet->pckData,packet->packetLen);
    e880e976:	02445583          	lhu	a1,36(s0)
    e880e97a:	7c08                	ld	a0,56(s0)
}
    e880e97c:	f891440b          	ldd	s0,s1,(sp),0,4
    e880e980:	60e2                	ld	ra,24(sp)
    e880e982:	6942                	ld	s2,16(sp)
    e880e984:	6105                	addi	sp,sp,32
		SendDataToUsb((uint8_t*)packet->pckData,packet->packetLen);
    e880e986:	f89ff06f          	j	e880e90e <SendDataToUsb>
}
    e880e98a:	60e2                	ld	ra,24(sp)
    e880e98c:	f891440b          	ldd	s0,s1,(sp),0,4
    e880e990:	6942                	ld	s2,16(sp)
    e880e992:	6105                	addi	sp,sp,32
    e880e994:	8082                	ret

00000000e880e996 <iAP2LinkSendDetectCB>:
{
    e880e996:	1101                	addi	sp,sp,-32
	printf("iAP2LinkSendDetectCB\n");
    e880e998:	00091517          	auipc	a0,0x91
    e880e99c:	72050513          	addi	a0,a0,1824 # e88a00b8 <TWO52+0x4c0>
{
    e880e9a0:	e42e                	sd	a1,8(sp)
    e880e9a2:	ec06                	sd	ra,24(sp)
	printf("iAP2LinkSendDetectCB\n");
    e880e9a4:	1236d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	if(bBad)
    e880e9a8:	65a2                	ld	a1,8(sp)
    e880e9aa:	cd91                	beqz	a1,e880e9c6 <iAP2LinkSendDetectCB+0x30>
		SendDataToUsb(kIap2PacketDetectBadData,kIap2PacketDetectBadDataLen);
    e880e9ac:	000c6797          	auipc	a5,0xc6
    e880e9b0:	09078793          	addi	a5,a5,144 # e88d4a3c <kIap2PacketDetectBadDataLen>
    e880e9b4:	438c                	lw	a1,0(a5)
    e880e9b6:	00092517          	auipc	a0,0x92
    e880e9ba:	d0a50513          	addi	a0,a0,-758 # e88a06c0 <kIap2PacketDetectBadData>
}
    e880e9be:	60e2                	ld	ra,24(sp)
    e880e9c0:	6105                	addi	sp,sp,32
		SendDataToUsb(kIap2PacketDetectData,kIap2PacketDetectDataLen);
    e880e9c2:	f4dff06f          	j	e880e90e <SendDataToUsb>
    e880e9c6:	000c6797          	auipc	a5,0xc6
    e880e9ca:	07a78793          	addi	a5,a5,122 # e88d4a40 <kIap2PacketDetectDataLen>
    e880e9ce:	438c                	lw	a1,0(a5)
    e880e9d0:	00092517          	auipc	a0,0x92
    e880e9d4:	cf850513          	addi	a0,a0,-776 # e88a06c8 <kIap2PacketDetectData>
    e880e9d8:	b7dd                	j	e880e9be <iAP2LinkSendDetectCB+0x28>

00000000e880e9da <lib_iap_init>:
		}
	}
}

void lib_iap_init(void *callback)
{
    e880e9da:	715d                	addi	sp,sp,-80
    e880e9dc:	e0a2                	sd	s0,64(sp)
    e880e9de:	842a                	mv	s0,a0
	printf("lib_iap_init\n");
    e880e9e0:	00091517          	auipc	a0,0x91
    e880e9e4:	7b050513          	addi	a0,a0,1968 # e88a0190 <TWO52+0x598>
{
    e880e9e8:	e486                	sd	ra,72(sp)
	printf("lib_iap_init\n");
    e880e9ea:	0dd6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>

	iap_callback = (fun_callback)callback;
    e880e9ee:	000ca797          	auipc	a5,0xca
    e880e9f2:	9c87b123          	sd	s0,-1598(a5) # e88d83b0 <iap_callback>
	synParam.sessionInfo[1].version = 1;
	synParam.sessionInfo[2].id = 3;
	synParam.sessionInfo[2].type = kIAP2PacketServiceTypeEA;
	synParam.sessionInfo[2].version = 1;

	pthread_mutex_init(&mutex,NULL);
    e880e9f6:	4581                	li	a1,0
	synParam.version               = 1;//kiAP2LinkSynDefaultVersion;
    e880e9f8:	00091797          	auipc	a5,0x91
    e880e9fc:	78878793          	addi	a5,a5,1928 # e88a0180 <TWO52+0x588>
    e880ea00:	639c                	ld	a5,0(a5)
	pthread_mutex_init(&mutex,NULL);
    e880ea02:	000ca517          	auipc	a0,0xca
    e880ea06:	9b650513          	addi	a0,a0,-1610 # e88d83b8 <mutex>
	synParam.version               = 1;//kiAP2LinkSynDefaultVersion;
    e880ea0a:	e83e                	sd	a5,16(sp)
	synParam.cumAckTimeout         = 1000;//kiAP2LinkSynDefaultCumAckTimeout;
    e880ea0c:	010107b7          	lui	a5,0x1010
    e880ea10:	3e87879b          	addiw	a5,a5,1000
    e880ea14:	cc3e                	sw	a5,24(sp)
	synParam.peerMaxPacketSize         = kiAP2LinkSynDefaultMaxPacketSize;
    e880ea16:	08000793          	li	a5,128
    e880ea1a:	00f11e23          	sh	a5,28(sp)
	synParam.sessionInfo[0].id = 1;
    e880ea1e:	00091797          	auipc	a5,0x91
    e880ea22:	76a78793          	addi	a5,a5,1898 # e88a0188 <TWO52+0x590>
    e880ea26:	639c                	ld	a5,0(a5)
    e880ea28:	f03e                	sd	a5,32(sp)
	synParam.sessionInfo[2].version = 1;
    e880ea2a:	4785                	li	a5,1
    e880ea2c:	02f10423          	sb	a5,40(sp)
	pthread_mutex_init(&mutex,NULL);
    e880ea30:	04a6d0ef          	jal	ra,e887ba7a <pthread_mutex_init>
	//pthread_mutex_init(&packet_mutex,NULL);
	pthread_cond_init(&cond,NULL);
    e880ea34:	4581                	li	a1,0
    e880ea36:	000ca517          	auipc	a0,0xca
    e880ea3a:	96250513          	addi	a0,a0,-1694 # e88d8398 <cond>
    e880ea3e:	2766d0ef          	jal	ra,e887bcb4 <pthread_cond_init>

	g_plinkRunLoop = iAP2LinkRunLoopCreateAccessory(&synParam,
    e880ea42:	e002                	sd	zero,0(sp)
    e880ea44:	00000797          	auipc	a5,0x0
    e880ea48:	f5278793          	addi	a5,a5,-174 # e880e996 <iAP2LinkSendDetectCB>
    e880ea4c:	0808                	addi	a0,sp,16
    e880ea4e:	48a1                	li	a7,8
    e880ea50:	4801                	li	a6,0
    e880ea52:	fffff717          	auipc	a4,0xfffff
    e880ea56:	d8070713          	addi	a4,a4,-640 # e880d7d2 <iAP2LinkConnectedCB>
    e880ea5a:	00000697          	auipc	a3,0x0
    e880ea5e:	c3a68693          	addi	a3,a3,-966 # e880e694 <iAP2LinkDataReadyCB>
    e880ea62:	00000617          	auipc	a2,0x0
    e880ea66:	ece60613          	addi	a2,a2,-306 # e880e930 <iAP2LinkSendPacketCB>
    e880ea6a:	4581                	li	a1,0
    e880ea6c:	74a020ef          	jal	ra,e88111b6 <iAP2LinkRunLoopCreateAccessory>
									iAP2LinkConnectedCB,
									iAP2LinkSendDetectCB,
									FALSE,
									8,
									NULL);
}
    e880ea70:	6406                	ld	s0,64(sp)
    e880ea72:	60a6                	ld	ra,72(sp)
	g_plinkRunLoop = iAP2LinkRunLoopCreateAccessory(&synParam,
    e880ea74:	000ca797          	auipc	a5,0xca
    e880ea78:	92a7ba23          	sd	a0,-1740(a5) # e88d83a8 <g_plinkRunLoop>
}
    e880ea7c:	6161                	addi	sp,sp,80
    e880ea7e:	8082                	ret

00000000e880ea80 <lib_iap_attach>:
	//pthread_mutex_destroy(&packet_mutex);
	pthread_cond_destroy(&cond);
}

void lib_iap_attach(void)
{
    e880ea80:	1141                	addi	sp,sp,-16
	printf("lib_iap_attach\n");
    e880ea82:	00091517          	auipc	a0,0x91
    e880ea86:	6de50513          	addi	a0,a0,1758 # e88a0160 <TWO52+0x568>
{
    e880ea8a:	e022                	sd	s0,0(sp)
    e880ea8c:	e406                	sd	ra,8(sp)
	printf("lib_iap_attach\n");
    e880ea8e:	0396d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	if(g_plinkRunLoop)
    e880ea92:	000ca417          	auipc	s0,0xca
    e880ea96:	91640413          	addi	s0,s0,-1770 # e88d83a8 <g_plinkRunLoop>
    e880ea9a:	601c                	ld	a5,0(s0)
    e880ea9c:	cb99                	beqz	a5,e880eab2 <lib_iap_attach+0x32>
	{
        if(iAP2LinkIsDetached(g_plinkRunLoop->link))
    e880ea9e:	6f88                	ld	a0,24(a5)
    e880eaa0:	3ab000ef          	jal	ra,e880f64a <iAP2LinkIsDetached>
    e880eaa4:	c519                	beqz	a0,e880eab2 <lib_iap_attach+0x32>
        {
            iAP2LinkRunLoopAttached(g_plinkRunLoop);
    e880eaa6:	6008                	ld	a0,0(s0)
    	/*pthread_mutex_lock(&packet_mutex);
    	wait_packet_process();
		iAP2LinkAttached(g_plinkRunLoop->link);
	    pthread_mutex_unlock(&packet_mutex);*/
	}
}
    e880eaa8:	6402                	ld	s0,0(sp)
    e880eaaa:	60a2                	ld	ra,8(sp)
    e880eaac:	0141                	addi	sp,sp,16
            iAP2LinkRunLoopAttached(g_plinkRunLoop);
    e880eaae:	7ae0206f          	j	e881125c <iAP2LinkRunLoopAttached>
}
    e880eab2:	60a2                	ld	ra,8(sp)
    e880eab4:	6402                	ld	s0,0(sp)
    e880eab6:	0141                	addi	sp,sp,16
    e880eab8:	8082                	ret

00000000e880eaba <lib_iap_detach>:

void lib_iap_detach(void)
{
    e880eaba:	1141                	addi	sp,sp,-16
	printf("lib_iap_detach\n");
    e880eabc:	00091517          	auipc	a0,0x91
    e880eac0:	6b450513          	addi	a0,a0,1716 # e88a0170 <TWO52+0x578>
{
    e880eac4:	e022                	sd	s0,0(sp)
    e880eac6:	e406                	sd	ra,8(sp)
	printf("lib_iap_detach\n");
    e880eac8:	7fe6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	if(g_plinkRunLoop)
    e880eacc:	000ca417          	auipc	s0,0xca
    e880ead0:	8dc40413          	addi	s0,s0,-1828 # e88d83a8 <g_plinkRunLoop>
    e880ead4:	601c                	ld	a5,0(s0)
    e880ead6:	cb99                	beqz	a5,e880eaec <lib_iap_detach+0x32>
	{
        if(!iAP2LinkIsDetached(g_plinkRunLoop->link))
    e880ead8:	6f88                	ld	a0,24(a5)
    e880eada:	371000ef          	jal	ra,e880f64a <iAP2LinkIsDetached>
    e880eade:	e519                	bnez	a0,e880eaec <lib_iap_detach+0x32>
        {
            iAP2LinkRunLoopDetached(g_plinkRunLoop);
    e880eae0:	6008                	ld	a0,0(s0)
    	/*pthread_mutex_lock(&packet_mutex);
    	wait_packet_process();
		iAP2LinkDetached(g_plinkRunLoop->link);
	    pthread_mutex_unlock(&packet_mutex);*/
	}
}
    e880eae2:	6402                	ld	s0,0(sp)
    e880eae4:	60a2                	ld	ra,8(sp)
    e880eae6:	0141                	addi	sp,sp,16
            iAP2LinkRunLoopDetached(g_plinkRunLoop);
    e880eae8:	7940206f          	j	e881127c <iAP2LinkRunLoopDetached>
}
    e880eaec:	60a2                	ld	ra,8(sp)
    e880eaee:	6402                	ld	s0,0(sp)
    e880eaf0:	0141                	addi	sp,sp,16
    e880eaf2:	8082                	ret

00000000e880eaf4 <lib_iap_usb_input>:
{
    SendCmd_RequestAppLaunch(g_plinkRunLoop->link,"com.apple.mobilephone");
}

void lib_iap_usb_input(uint8_t *pData,uint32_t len)
{
    e880eaf4:	715d                	addi	sp,sp,-80
    e880eaf6:	e0a2                	sd	s0,64(sp)
	int i;
	static uint8_t buf[4096];
	int bufLen = 0;
	iAP2Packet_t* pck = NULL;
	
	pck = iAP2PacketCreateEmptyRecvPacket (g_plinkRunLoop->link);
    e880eaf8:	000ca417          	auipc	s0,0xca
    e880eafc:	8b040413          	addi	s0,s0,-1872 # e88d83a8 <g_plinkRunLoop>
    e880eb00:	601c                	ld	a5,0(s0)
{
    e880eb02:	fc26                	sd	s1,56(sp)
    e880eb04:	f44e                	sd	s3,40(sp)
    e880eb06:	e486                	sd	ra,72(sp)
    e880eb08:	f84a                	sd	s2,48(sp)
    e880eb0a:	89aa                	mv	s3,a0
	pck = iAP2PacketCreateEmptyRecvPacket (g_plinkRunLoop->link);
    e880eb0c:	6f88                	ld	a0,24(a5)
{
    e880eb0e:	e42e                	sd	a1,8(sp)
	pck = iAP2PacketCreateEmptyRecvPacket (g_plinkRunLoop->link);
    e880eb10:	0ab020ef          	jal	ra,e88113ba <iAP2PacketCreateEmptyRecvPacket>
    e880eb14:	84aa                	mv	s1,a0

	if(bufLen + len > 4096)
    e880eb16:	65a2                	ld	a1,8(sp)
    e880eb18:	6785                	lui	a5,0x1
    e880eb1a:	6605                	lui	a2,0x1
    e880eb1c:	00b7e363          	bltu	a5,a1,e880eb22 <lib_iap_usb_input+0x2e>
    e880eb20:	862e                	mv	a2,a1
    e880eb22:	0006091b          	sext.w	s2,a2
	{
		len = 4096 - bufLen;
	}
	memcpy(buf+bufLen,pData,len);
    e880eb26:	85ce                	mv	a1,s3
    e880eb28:	7c06360b          	extu	a2,a2,31,0
    e880eb2c:	000c9517          	auipc	a0,0xc9
    e880eb30:	86c50513          	addi	a0,a0,-1940 # e88d7398 <buf.7430>
    e880eb34:	06d6d0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		if(g_pPacket == NULL)
    e880eb38:	000ca997          	auipc	s3,0xca
    e880eb3c:	86898993          	addi	s3,s3,-1944 # e88d83a0 <g_pPacket>
	{
		int parseLen = 0;
		BOOL bDetect;
		uint32_t failedChecksums;
		uint32_t sopDetect;
		parseLen = iAP2PacketParseBuffer(buf,bufLen,pck,MAX_PACKET_SIZE,&bDetect,&failedChecksums,&sopDetect);
    e880eb40:	85ca                	mv	a1,s2
    e880eb42:	01c10813          	addi	a6,sp,28
    e880eb46:	083c                	addi	a5,sp,24
    e880eb48:	0858                	addi	a4,sp,20
    e880eb4a:	10000693          	li	a3,256
    e880eb4e:	8626                	mv	a2,s1
    e880eb50:	000c9517          	auipc	a0,0xc9
    e880eb54:	84850513          	addi	a0,a0,-1976 # e88d7398 <buf.7430>
    e880eb58:	669020ef          	jal	ra,e88119c0 <iAP2PacketParseBuffer>
    e880eb5c:	7d000913          	li	s2,2000
		if(g_pPacket == NULL)
    e880eb60:	0009b783          	ld	a5,0(s3)
    e880eb64:	c799                	beqz	a5,e880eb72 <lib_iap_usb_input+0x7e>
		Sleep(10);
    e880eb66:	4505                	li	a0,1
    e880eb68:	397d                	addiw	s2,s2,-1
    e880eb6a:	4ac6d0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
	for(i=0;i<2000;i++)
    e880eb6e:	fe0919e3          	bnez	s2,e880eb60 <lib_iap_usb_input+0x6c>

		//ȴһ
    	//pthread_mutex_lock(&packet_mutex);
    	wait_packet_process();

		if(iAP2PacketIsComplete(pck))
    e880eb72:	8526                	mv	a0,s1
    e880eb74:	734020ef          	jal	ra,e88112a8 <iAP2PacketIsComplete>
    e880eb78:	c509                	beqz	a0,e880eb82 <lib_iap_usb_input+0x8e>
		{
			iAP2LinkRunLoopHandleReadyPacket(g_plinkRunLoop,pck);
    e880eb7a:	6008                	ld	a0,0(s0)
    e880eb7c:	85a6                	mv	a1,s1
    e880eb7e:	71e020ef          	jal	ra,e881129c <iAP2LinkRunLoopHandleReadyPacket>
		/*if(parseLen == 0)
		{
			break;
		}*/
	}
}
    e880eb82:	60a6                	ld	ra,72(sp)
    e880eb84:	6406                	ld	s0,64(sp)
    e880eb86:	74e2                	ld	s1,56(sp)
    e880eb88:	7942                	ld	s2,48(sp)
    e880eb8a:	79a2                	ld	s3,40(sp)
    e880eb8c:	6161                	addi	sp,sp,80
    e880eb8e:	8082                	ret

00000000e880eb90 <lib_carplay_car_name>:
{
}

void lib_carplay_car_name(char *name)
{
    strcpy(carName,name);
    e880eb90:	85aa                	mv	a1,a0
    e880eb92:	000c6517          	auipc	a0,0xc6
    e880eb96:	e7650513          	addi	a0,a0,-394 # e88d4a08 <carName>
    e880eb9a:	78a6d06f          	j	e887c324 <eLIBs_strcpy>

00000000e880eb9e <_ComparePckTimerIdCB>:
**  Callback functions used for iAP2ListArray()
**
****************************************************************
*/
static intptr_t _ComparePckTimerIdCB (void* a, void* b, uint8_t dataSize)
{
    e880eb9e:	1101                	addi	sp,sp,-32
    e880eba0:	ec06                	sd	ra,24(sp)
    e880eba2:	e422                	sd	s0,8(sp)
    e880eba4:	e826                	sd	s1,16(sp)
    iAP2Packet_t* aPck = *((iAP2Packet_t**) a);
    e880eba6:	6104                	ld	s1,0(a0)
    iAP2Packet_t* bPck = *((iAP2Packet_t**) b);
    e880eba8:	6180                	ld	s0,0(a1)
    assert(aPck && bPck && dataSize == sizeof(uintptr_t));
    e880ebaa:	c489                	beqz	s1,e880ebb4 <_ComparePckTimerIdCB+0x16>
    e880ebac:	c401                	beqz	s0,e880ebb4 <_ComparePckTimerIdCB+0x16>
    e880ebae:	47a1                	li	a5,8
    e880ebb0:	02f60463          	beq	a2,a5,e880ebd8 <_ComparePckTimerIdCB+0x3a>
    e880ebb4:	02f00593          	li	a1,47
    e880ebb8:	00091517          	auipc	a0,0x91
    e880ebbc:	5e850513          	addi	a0,a0,1512 # e88a01a0 <TWO52+0x5a8>
    e880ebc0:	7b86d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ebc4:	00150593          	addi	a1,a0,1
    e880ebc8:	0c900613          	li	a2,201
    e880ebcc:	00091517          	auipc	a0,0x91
    e880ebd0:	5e450513          	addi	a0,a0,1508 # e88a01b0 <TWO52+0x5b8>
    e880ebd4:	6f26d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return aPck->timer - bPck->timer;
    e880ebd8:	0294c503          	lbu	a0,41(s1)
    e880ebdc:	02944783          	lbu	a5,41(s0)
}
    e880ebe0:	60e2                	ld	ra,24(sp)
    e880ebe2:	6422                	ld	s0,8(sp)
    e880ebe4:	64c2                	ld	s1,16(sp)
    e880ebe6:	9d1d                	subw	a0,a0,a5
    e880ebe8:	6105                	addi	sp,sp,32
    e880ebea:	8082                	ret

00000000e880ebec <_iAP2LinkComparePacketSeq>:
**  return > 0 if packet1 has larger seq# than packet2
**
****************************************************************
*/
static intptr_t _iAP2LinkComparePacketSeq (void* a, void* b, uint8_t dataSize)
{
    e880ebec:	7179                	addi	sp,sp,-48
    e880ebee:	e422                	sd	s0,8(sp)
    e880ebf0:	ec4a                	sd	s2,24(sp)
    e880ebf2:	f406                	sd	ra,40(sp)
    e880ebf4:	e826                	sd	s1,16(sp)
    e880ebf6:	f04e                	sd	s3,32(sp)
    iAP2Packet_t* pck1 = *((iAP2Packet_t**) a);
    e880ebf8:	6104                	ld	s1,0(a0)
    iAP2Packet_t* pck2 = *((iAP2Packet_t**) b);
    e880ebfa:	0005b983          	ld	s3,0(a1)
    iAP2Link_t* link;
    long result = iAP2PacketCalcSeqGap (pck1->pckData->seq, pck2->pckData->seq);
    e880ebfe:	7c9c                	ld	a5,56(s1)
    e880ec00:	0389b703          	ld	a4,56(s3)
    e880ec04:	0057c503          	lbu	a0,5(a5) # 1005 <memcmp-0xe87feffb>
    e880ec08:	00574583          	lbu	a1,5(a4)
    e880ec0c:	3bf020ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
    e880ec10:	842a                	mv	s0,a0
    assert(pck1->link == pck2->link);
    e880ec12:	6098                	ld	a4,0(s1)
    e880ec14:	0009b783          	ld	a5,0(s3)
    long result = iAP2PacketCalcSeqGap (pck1->pckData->seq, pck2->pckData->seq);
    e880ec18:	892a                	mv	s2,a0
    assert(pck1->link == pck2->link);
    e880ec1a:	02f70463          	beq	a4,a5,e880ec42 <_iAP2LinkComparePacketSeq+0x56>
    e880ec1e:	02f00593          	li	a1,47
    e880ec22:	00091517          	auipc	a0,0x91
    e880ec26:	57e50513          	addi	a0,a0,1406 # e88a01a0 <TWO52+0x5a8>
    e880ec2a:	74e6d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ec2e:	00150593          	addi	a1,a0,1
    e880ec32:	11700613          	li	a2,279
    e880ec36:	00091517          	auipc	a0,0x91
    e880ec3a:	57a50513          	addi	a0,a0,1402 # e88a01b0 <TWO52+0x5b8>
    e880ec3e:	6886d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    link = (iAP2Link_t*) pck1->link;
    if (0 == result)
    e880ec42:	c801                	beqz	s0,e880ec52 <_iAP2LinkComparePacketSeq+0x66>
    {
        return result;
    }
    else if (result > link->param.peerMaxOutstandingPackets)
    e880ec44:	609c                	ld	a5,0(s1)
    e880ec46:	11f7c783          	lbu	a5,287(a5)
    e880ec4a:	0087f463          	bgeu	a5,s0,e880ec52 <_iAP2LinkComparePacketSeq+0x66>
    {
        return result - 256;
    e880ec4e:	f0040913          	addi	s2,s0,-256
    }
    return result;
}
    e880ec52:	70a2                	ld	ra,40(sp)
    e880ec54:	6422                	ld	s0,8(sp)
    e880ec56:	854a                	mv	a0,s2
    e880ec58:	64c2                	ld	s1,16(sp)
    e880ec5a:	6962                	ld	s2,24(sp)
    e880ec5c:	7982                	ld	s3,32(sp)
    e880ec5e:	6145                	addi	sp,sp,48
    e880ec60:	8082                	ret

00000000e880ec62 <_DeletePckCB>:
    if (item != NULL)
    e880ec62:	c509                	beqz	a0,e880ec6c <_DeletePckCB+0xa>
        iAP2Packet_t* pck = *((iAP2Packet_t**) item);
    e880ec64:	6108                	ld	a0,0(a0)
        if (pck)
    e880ec66:	c119                	beqz	a0,e880ec6c <_DeletePckCB+0xa>
            iAP2PacketDelete (pck);
    e880ec68:	7e20206f          	j	e881144a <iAP2PacketDelete>
}
    e880ec6c:	8082                	ret

00000000e880ec6e <iAP2LinkActionNone>:
**  iAP2LinkActionNone
**
****************************************************************
*/
void iAP2LinkActionNone (struct iAP2FSM_st* fsm, unsigned int* nextEvent)
{
    e880ec6e:	1141                	addi	sp,sp,-16
    e880ec70:	e022                	sd	s0,0(sp)
    e880ec72:	e406                	sd	ra,8(sp)
    e880ec74:	842e                	mv	s0,a1
    assert(fsm);
    e880ec76:	e11d                	bnez	a0,e880ec9c <iAP2LinkActionNone+0x2e>
    e880ec78:	02f00593          	li	a1,47
    e880ec7c:	00091517          	auipc	a0,0x91
    e880ec80:	52450513          	addi	a0,a0,1316 # e88a01a0 <TWO52+0x5a8>
    e880ec84:	6f46d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ec88:	00150593          	addi	a1,a0,1
    e880ec8c:	27b00613          	li	a2,635
    e880ec90:	00091517          	auipc	a0,0x91
    e880ec94:	52050513          	addi	a0,a0,1312 # e88a01b0 <TWO52+0x5b8>
    e880ec98:	62e6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880ec9c:	e01d                	bnez	s0,e880ecc2 <iAP2LinkActionNone+0x54>
    e880ec9e:	02f00593          	li	a1,47
    e880eca2:	00091517          	auipc	a0,0x91
    e880eca6:	4fe50513          	addi	a0,a0,1278 # e88a01a0 <TWO52+0x5a8>
    e880ecaa:	6ce6d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ecae:	00150593          	addi	a1,a0,1
    e880ecb2:	27c00613          	li	a2,636
    e880ecb6:	00091517          	auipc	a0,0x91
    e880ecba:	4fa50513          	addi	a0,a0,1274 # e88a01b0 <TWO52+0x5b8>
    e880ecbe:	6086d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880ecc2:	47d9                	li	a5,22
    e880ecc4:	c01c                	sw	a5,0(s0)
}
    e880ecc6:	60a2                	ld	ra,8(sp)
    e880ecc8:	6402                	ld	s0,0(sp)
    e880ecca:	0141                	addi	sp,sp,16
    e880eccc:	8082                	ret

00000000e880ecce <iAP2LinkActionHandleACK>:
**  iAP2LinkActionHandleACK
**
****************************************************************
*/
void iAP2LinkActionHandleACK (struct iAP2FSM_st* fsm, unsigned int* nextEvent)
{
    e880ecce:	1141                	addi	sp,sp,-16
    e880ecd0:	e022                	sd	s0,0(sp)
    e880ecd2:	e406                	sd	ra,8(sp)
    e880ecd4:	842e                	mv	s0,a1
    assert(fsm);
    e880ecd6:	e11d                	bnez	a0,e880ecfc <iAP2LinkActionHandleACK+0x2e>
    e880ecd8:	02f00593          	li	a1,47
    e880ecdc:	00091517          	auipc	a0,0x91
    e880ece0:	4c450513          	addi	a0,a0,1220 # e88a01a0 <TWO52+0x5a8>
    e880ece4:	6946d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ece8:	00150593          	addi	a1,a0,1
    e880ecec:	28900613          	li	a2,649
    e880ecf0:	00091517          	auipc	a0,0x91
    e880ecf4:	4c050513          	addi	a0,a0,1216 # e88a01b0 <TWO52+0x5b8>
    e880ecf8:	5ce6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880ecfc:	e01d                	bnez	s0,e880ed22 <iAP2LinkActionHandleACK+0x54>
    e880ecfe:	02f00593          	li	a1,47
    e880ed02:	00091517          	auipc	a0,0x91
    e880ed06:	49e50513          	addi	a0,a0,1182 # e88a01a0 <TWO52+0x5a8>
    e880ed0a:	66e6d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ed0e:	00150593          	addi	a1,a0,1
    e880ed12:	28a00613          	li	a2,650
    e880ed16:	00091517          	auipc	a0,0x91
    e880ed1a:	49a50513          	addi	a0,a0,1178 # e88a01b0 <TWO52+0x5b8>
    e880ed1e:	5a86d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880ed22:	47d9                	li	a5,22
    e880ed24:	c01c                	sw	a5,0(s0)
                    : "Device:HandleACK"),
                   link->sentSeq,
                   link->recvAck);
    }
#endif
}
    e880ed26:	60a2                	ld	ra,8(sp)
    e880ed28:	6402                	ld	s0,0(sp)
    e880ed2a:	0141                	addi	sp,sp,16
    e880ed2c:	8082                	ret

00000000e880ed2e <iAP2LinkActionDetach>:
**  iAP2LinkActionDetach
**
****************************************************************
*/
void iAP2LinkActionDetach (struct iAP2FSM_st* fsm, unsigned int* nextEvent)
{
    e880ed2e:	1101                	addi	sp,sp,-32
    e880ed30:	e422                	sd	s0,8(sp)
    e880ed32:	e826                	sd	s1,16(sp)
    e880ed34:	ec06                	sd	ra,24(sp)
    e880ed36:	842a                	mv	s0,a0
    e880ed38:	84ae                	mv	s1,a1
    iAP2Link_t* link;

    assert(fsm);
    e880ed3a:	e11d                	bnez	a0,e880ed60 <iAP2LinkActionDetach+0x32>
    e880ed3c:	02f00593          	li	a1,47
    e880ed40:	00091517          	auipc	a0,0x91
    e880ed44:	46050513          	addi	a0,a0,1120 # e88a01a0 <TWO52+0x5a8>
    e880ed48:	6306d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ed4c:	00150593          	addi	a1,a0,1
    e880ed50:	2bd00613          	li	a2,701
    e880ed54:	00091517          	auipc	a0,0x91
    e880ed58:	45c50513          	addi	a0,a0,1116 # e88a01b0 <TWO52+0x5b8>
    e880ed5c:	56a6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880ed60:	e09d                	bnez	s1,e880ed86 <iAP2LinkActionDetach+0x58>
    e880ed62:	02f00593          	li	a1,47
    e880ed66:	00091517          	auipc	a0,0x91
    e880ed6a:	43a50513          	addi	a0,a0,1082 # e88a01a0 <TWO52+0x5a8>
    e880ed6e:	60a6d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ed72:	00150593          	addi	a1,a0,1
    e880ed76:	2be00613          	li	a2,702
    e880ed7a:	00091517          	auipc	a0,0x91
    e880ed7e:	43650513          	addi	a0,a0,1078 # e88a01b0 <TWO52+0x5b8>
    e880ed82:	5446d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880ed86:	47d9                	li	a5,22
    e880ed88:	c09c                	sw	a5,0(s1)

    link = (iAP2Link_t*) fsm->data;
    e880ed8a:	6c08                	ld	a0,24(s0)

    /* Call connected callback */
    if (link->connectedCB)
    e880ed8c:	03053303          	ld	t1,48(a0)
    e880ed90:	00030863          	beqz	t1,e880eda0 <iAP2LinkActionDetach+0x72>
    {
        /* Notify about the connection establishment */
        (*link->connectedCB) (link, FALSE);
    }
}
    e880ed94:	6422                	ld	s0,8(sp)
    e880ed96:	60e2                	ld	ra,24(sp)
    e880ed98:	64c2                	ld	s1,16(sp)
        (*link->connectedCB) (link, FALSE);
    e880ed9a:	4581                	li	a1,0
}
    e880ed9c:	6105                	addi	sp,sp,32
        (*link->connectedCB) (link, FALSE);
    e880ed9e:	8302                	jr	t1
}
    e880eda0:	60e2                	ld	ra,24(sp)
    e880eda2:	6422                	ld	s0,8(sp)
    e880eda4:	64c2                	ld	s1,16(sp)
    e880eda6:	6105                	addi	sp,sp,32
    e880eda8:	8082                	ret

00000000e880edaa <iAP2LinkActionNotifyConnectionFail>:
**  iAP2LinkActionNotifyConnectionFail
**
****************************************************************
*/
void iAP2LinkActionNotifyConnectionFail (struct iAP2FSM_st* fsm, unsigned int* nextEvent)
{
    e880edaa:	1101                	addi	sp,sp,-32
    e880edac:	e422                	sd	s0,8(sp)
    e880edae:	e826                	sd	s1,16(sp)
    e880edb0:	ec06                	sd	ra,24(sp)
    e880edb2:	842a                	mv	s0,a0
    e880edb4:	84ae                	mv	s1,a1
    iAP2Link_t* link;

    assert(fsm);
    e880edb6:	e11d                	bnez	a0,e880eddc <iAP2LinkActionNotifyConnectionFail+0x32>
    e880edb8:	02f00593          	li	a1,47
    e880edbc:	00091517          	auipc	a0,0x91
    e880edc0:	3e450513          	addi	a0,a0,996 # e88a01a0 <TWO52+0x5a8>
    e880edc4:	5b46d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880edc8:	00150593          	addi	a1,a0,1
    e880edcc:	42000613          	li	a2,1056
    e880edd0:	00091517          	auipc	a0,0x91
    e880edd4:	3e050513          	addi	a0,a0,992 # e88a01b0 <TWO52+0x5b8>
    e880edd8:	4ee6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880eddc:	e09d                	bnez	s1,e880ee02 <iAP2LinkActionNotifyConnectionFail+0x58>
    e880edde:	02f00593          	li	a1,47
    e880ede2:	00091517          	auipc	a0,0x91
    e880ede6:	3be50513          	addi	a0,a0,958 # e88a01a0 <TWO52+0x5a8>
    e880edea:	58e6d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880edee:	00150593          	addi	a1,a0,1
    e880edf2:	42100613          	li	a2,1057
    e880edf6:	00091517          	auipc	a0,0x91
    e880edfa:	3ba50513          	addi	a0,a0,954 # e88a01b0 <TWO52+0x5b8>
    e880edfe:	4c86d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880ee02:	47d9                	li	a5,22
    e880ee04:	c09c                	sw	a5,0(s1)

    link = (iAP2Link_t*) fsm->data;
    e880ee06:	6c08                	ld	a0,24(s0)
               (link->type == kiAP2LinkTypeAccessory
                ? "Accessory:ConnectionFail"
                : "Device:ConnectionFail"),
               link->connectedCB);
#endif
    if (link->connectedCB)
    e880ee08:	03053303          	ld	t1,48(a0)
    e880ee0c:	00030863          	beqz	t1,e880ee1c <iAP2LinkActionNotifyConnectionFail+0x72>
    {
        /* Notify about the connection establishment */
        (*link->connectedCB) (link, FALSE);
    }
}
    e880ee10:	6422                	ld	s0,8(sp)
    e880ee12:	60e2                	ld	ra,24(sp)
    e880ee14:	64c2                	ld	s1,16(sp)
        (*link->connectedCB) (link, FALSE);
    e880ee16:	4581                	li	a1,0
}
    e880ee18:	6105                	addi	sp,sp,32
        (*link->connectedCB) (link, FALSE);
    e880ee1a:	8302                	jr	t1
}
    e880ee1c:	60e2                	ld	ra,24(sp)
    e880ee1e:	6422                	ld	s0,8(sp)
    e880ee20:	64c2                	ld	s1,16(sp)
    e880ee22:	6105                	addi	sp,sp,32
    e880ee24:	8082                	ret

00000000e880ee26 <iAP2LinkActionSwitchToiAP1>:
**  iAP2LinkActionSwitchToiAP1
**
****************************************************************
*/
void iAP2LinkActionSwitchToiAP1 (struct iAP2FSM_st* fsm, unsigned int* nextEvent)
{
    e880ee26:	1101                	addi	sp,sp,-32
    e880ee28:	e422                	sd	s0,8(sp)
    e880ee2a:	e826                	sd	s1,16(sp)
    e880ee2c:	ec06                	sd	ra,24(sp)
    e880ee2e:	842a                	mv	s0,a0
    e880ee30:	84ae                	mv	s1,a1
    iAP2Link_t* link;

    assert(fsm);
    e880ee32:	e11d                	bnez	a0,e880ee58 <iAP2LinkActionSwitchToiAP1+0x32>
    e880ee34:	02f00593          	li	a1,47
    e880ee38:	00091517          	auipc	a0,0x91
    e880ee3c:	36850513          	addi	a0,a0,872 # e88a01a0 <TWO52+0x5a8>
    e880ee40:	5386d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ee44:	00150593          	addi	a1,a0,1
    e880ee48:	44100613          	li	a2,1089
    e880ee4c:	00091517          	auipc	a0,0x91
    e880ee50:	36450513          	addi	a0,a0,868 # e88a01b0 <TWO52+0x5b8>
    e880ee54:	4726d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880ee58:	e09d                	bnez	s1,e880ee7e <iAP2LinkActionSwitchToiAP1+0x58>
    e880ee5a:	02f00593          	li	a1,47
    e880ee5e:	00091517          	auipc	a0,0x91
    e880ee62:	34250513          	addi	a0,a0,834 # e88a01a0 <TWO52+0x5a8>
    e880ee66:	5126d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ee6a:	00150593          	addi	a1,a0,1
    e880ee6e:	44200613          	li	a2,1090
    e880ee72:	00091517          	auipc	a0,0x91
    e880ee76:	33e50513          	addi	a0,a0,830 # e88a01b0 <TWO52+0x5b8>
    e880ee7a:	44c6d0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880ee7e:	47d9                	li	a5,22
    e880ee80:	c09c                	sw	a5,0(s1)

    link = (iAP2Link_t*) fsm->data;
    e880ee82:	6c00                	ld	s0,24(s0)
                ? "Accessory:SendDetect"
                : "Device:SendDetect"),
               link->sendDetectCB);
#endif

    if (link->sendDetectCB)
    e880ee84:	7c1c                	ld	a5,56(s0)
    e880ee86:	c781                	beqz	a5,e880ee8e <iAP2LinkActionSwitchToiAP1+0x68>
    {
        /* Send Detect BAD ACK byte seqeunce */
        (*link->sendDetectCB) (link, TRUE);
    e880ee88:	4585                	li	a1,1
    e880ee8a:	8522                	mv	a0,s0
    e880ee8c:	9782                	jalr	a5
    }
    if (link->connectedCB)
    e880ee8e:	03043303          	ld	t1,48(s0)
    e880ee92:	00030963          	beqz	t1,e880eea4 <iAP2LinkActionSwitchToiAP1+0x7e>
    {
        /* Notify about the connection failure */
        (*link->connectedCB) (link, FALSE);
    e880ee96:	8522                	mv	a0,s0
    }
}
    e880ee98:	6422                	ld	s0,8(sp)
    e880ee9a:	60e2                	ld	ra,24(sp)
    e880ee9c:	64c2                	ld	s1,16(sp)
        (*link->connectedCB) (link, FALSE);
    e880ee9e:	4581                	li	a1,0
}
    e880eea0:	6105                	addi	sp,sp,32
        (*link->connectedCB) (link, FALSE);
    e880eea2:	8302                	jr	t1
}
    e880eea4:	60e2                	ld	ra,24(sp)
    e880eea6:	6422                	ld	s0,8(sp)
    e880eea8:	64c2                	ld	s1,16(sp)
    e880eeaa:	6105                	addi	sp,sp,32
    e880eeac:	8082                	ret

00000000e880eeae <iAP2LinkSetDefaultSYNParam>:
**
****************************************************************
*/
void iAP2LinkSetDefaultSYNParam (iAP2PacketSYNData_t* param)
{
    if (param != NULL)
    e880eeae:	cd11                	beqz	a0,e880eeca <iAP2LinkSetDefaultSYNParam+0x1c>
    {
        param->version               = kiAP2LinkSynDefaultVersion;
    e880eeb0:	00091797          	auipc	a5,0x91
    e880eeb4:	6a878793          	addi	a5,a5,1704 # e88a0558 <__FUNCTION__.7541+0x398>
    e880eeb8:	639c                	ld	a5,0(a5)
    e880eeba:	e11c                	sd	a5,0(a0)
        param->maxOutstandingPackets = kiAP2LinkSynDefaultMaxOutstanding;
        param->maxPacketSize         = kiAP2LinkSynDefaultMaxPacketSize;
        param->retransmitTimeout     = kiAP2LinkSynDefaultRetransmitTimeout;
        param->cumAckTimeout         = kiAP2LinkSynDefaultCumAckTimeout;
    e880eebc:	010007b7          	lui	a5,0x1000
    e880eec0:	c51c                	sw	a5,8(a0)
        param->maxRetransmissions    = kiAP2LinkSynDefaultMaxRetransmit;
        param->maxCumAck             = kiAP2LinkSynDefaultMaxCumAck;
        param->numSessionInfo        = kiAP2LinkSynDefaultNumSessionInfo;
        param->peerMaxOutstandingPackets = kiAP2LinkSynDefaultMaxOutstanding;
        param->peerMaxPacketSize         = kiAP2LinkSynDefaultMaxPacketSize;
    e880eec2:	08000793          	li	a5,128
    e880eec6:	00f51623          	sh	a5,12(a0)
    }
}
    e880eeca:	8082                	ret

00000000e880eecc <iAP2LinkIsValidSynParam>:
****************************************************************
*/
BOOL iAP2LinkIsValidSynParam (iAP2PacketSYNData_t* synParam)
{
    BOOL result = FALSE;
    if (synParam != NULL)
    e880eecc:	12050563          	beqz	a0,e880eff6 <iAP2LinkIsValidSynParam+0x12a>
                  synParam->retransmitTimeout <= kiAP2LinkSynValRetransmitTimeoutMax &&
                  synParam->cumAckTimeout >= kiAP2LinkSynValCumAckTimeoutMin &&
                  synParam->cumAckTimeout <= kiAP2LinkSynValCumAckTimeoutMax &&
                  synParam->maxRetransmissions >= kiAP2LinkSynValMaxRetransmitMin &&
                  synParam->maxRetransmissions <= kiAP2LinkSynValMaxRetransmitMax &&
                  synParam->maxCumAck >= kiAP2LinkSynValMaxCumAckMin &&
    e880eed0:	00150783          	lb	a5,1(a0)
    e880eed4:	04f05b63          	blez	a5,e880ef2a <iAP2LinkIsValidSynParam+0x5e>
                  synParam->maxPacketSize >= kiAP2LinkSynValMaxPacketSizeMin &&
    e880eed8:	00455703          	lhu	a4,4(a0)
    e880eedc:	47dd                	li	a5,23
    e880eede:	04e7f663          	bgeu	a5,a4,e880ef2a <iAP2LinkIsValidSynParam+0x5e>
                  synParam->retransmitTimeout >= kiAP2LinkSynValRetransmitTimeoutMin &&
    e880eee2:	00655703          	lhu	a4,6(a0)
    e880eee6:	47cd                	li	a5,19
    e880eee8:	04e7f163          	bgeu	a5,a4,e880ef2a <iAP2LinkIsValidSynParam+0x5e>
                  synParam->retransmitTimeout <= kiAP2LinkSynValRetransmitTimeoutMax &&
    e880eeec:	00855783          	lhu	a5,8(a0)
    e880eef0:	6721                	lui	a4,0x8
    e880eef2:	1755                	addi	a4,a4,-11
    e880eef4:	37d9                	addiw	a5,a5,-10
    e880eef6:	3c07b78b          	extu	a5,a5,15,0
    e880eefa:	02f76863          	bltu	a4,a5,e880ef2a <iAP2LinkIsValidSynParam+0x5e>
                  synParam->cumAckTimeout <= kiAP2LinkSynValCumAckTimeoutMax &&
    e880eefe:	00254783          	lbu	a5,2(a0)
    e880ef02:	4775                	li	a4,29
    e880ef04:	37fd                	addiw	a5,a5,-1
    e880ef06:	0ff7f793          	andi	a5,a5,255
    e880ef0a:	02f76063          	bltu	a4,a5,e880ef2a <iAP2LinkIsValidSynParam+0x5e>
                  synParam->maxCumAck >= kiAP2LinkSynValMaxCumAckMin &&
    e880ef0e:	00350783          	lb	a5,3(a0)
    e880ef12:	0007cc63          	bltz	a5,e880ef2a <iAP2LinkIsValidSynParam+0x5e>
        {
            BOOL    bControlSessionFound = FALSE;
            iAP2PacketSYNData_t tempParam;
            uint32_t i;

            for (i = 0; i < synParam->numSessionInfo; ++i)
    e880ef16:	00a54583          	lbu	a1,10(a0)
    e880ef1a:	01050713          	addi	a4,a0,16
    e880ef1e:	4681                	li	a3,0
            BOOL    bControlSessionFound = FALSE;
    e880ef20:	4781                	li	a5,0
                tempParam.sessionInfo[tempParam.numSessionInfo].type    = synParam->sessionInfo[i].type;
                tempParam.sessionInfo[tempParam.numSessionInfo].version = synParam->sessionInfo[i].version;
                ++tempParam.numSessionInfo;

                /* Session ID 0x0 is reserved and shall not be used for any session types */
                if ((synParam->sessionInfo[i].id == kIAP2PacketReservedSessionID) ||
    e880ef22:	4809                	li	a6,2
            for (i = 0; i < synParam->numSessionInfo; ++i)
    e880ef24:	08b6ed63          	bltu	a3,a1,e880efbe <iAP2LinkIsValidSynParam+0xf2>
                    /* Required control session type has been found */
                    bControlSessionFound = TRUE;
                }
            }

            if (FALSE == bControlSessionFound)
    e880ef28:	ebe1                	bnez	a5,e880eff8 <iAP2LinkIsValidSynParam+0x12c>
{
    e880ef2a:	7179                	addi	sp,sp,-48
    e880ef2c:	f406                	sd	ra,40(sp)
    e880ef2e:	e422                	sd	s0,8(sp)
    e880ef30:	e826                	sd	s1,16(sp)
    e880ef32:	842a                	mv	s0,a0
    e880ef34:	ec4a                	sd	s2,24(sp)
    e880ef36:	f04e                	sd	s3,32(sp)

        if (!result)
        {
            int i;

            iAP2LogStart();
    e880ef38:	7c4030ef          	jal	ra,e88126fc <iAP2LogStart>
                           synParam->retransmitTimeout, synParam->cumAckTimeout);
            iAP2LogErrorNL("    maxRetransmissions=%d maxCumAck=%d\n",
                           synParam->maxRetransmissions, synParam->maxCumAck);
            iAP2LogErrorNL("    numSessionInfo=%u\n",
                           synParam->numSessionInfo);
            for (i = 0; i < synParam->numSessionInfo; ++i)
    e880ef3c:	4481                	li	s1,0
            iAP2LogErrorNL("Invalid SYN Params detected:\n");
    e880ef3e:	00091517          	auipc	a0,0x91
    e880ef42:	40250513          	addi	a0,a0,1026 # e88a0340 <__FUNCTION__.7541+0x180>
    e880ef46:	78a030ef          	jal	ra,e88126d0 <iAP2LogErrorNL>
            {
                iAP2LogErrorNL("    session %u [id=%u type=%u ver=%u]\n",
                               i,
                               synParam->sessionInfo[i].id,
                               synParam->sessionInfo[i].type,
                               synParam->sessionInfo[i].version);
    e880ef4a:	490d                	li	s2,3
            iAP2LogErrorNL("    maxOutstanding=%d maxPacketSize=%d\n",
    e880ef4c:	00445603          	lhu	a2,4(s0)
    e880ef50:	00144583          	lbu	a1,1(s0)
    e880ef54:	00091517          	auipc	a0,0x91
    e880ef58:	40c50513          	addi	a0,a0,1036 # e88a0360 <__FUNCTION__.7541+0x1a0>
                iAP2LogErrorNL("    session %u [id=%u type=%u ver=%u]\n",
    e880ef5c:	00091997          	auipc	s3,0x91
    e880ef60:	49c98993          	addi	s3,s3,1180 # e88a03f8 <__FUNCTION__.7541+0x238>
            iAP2LogErrorNL("    maxOutstanding=%d maxPacketSize=%d\n",
    e880ef64:	76c030ef          	jal	ra,e88126d0 <iAP2LogErrorNL>
            iAP2LogErrorNL("    retransmitTimeout=%d cumAckTimeout=%d\n",
    e880ef68:	00845603          	lhu	a2,8(s0)
    e880ef6c:	00645583          	lhu	a1,6(s0)
    e880ef70:	00091517          	auipc	a0,0x91
    e880ef74:	41850513          	addi	a0,a0,1048 # e88a0388 <__FUNCTION__.7541+0x1c8>
    e880ef78:	758030ef          	jal	ra,e88126d0 <iAP2LogErrorNL>
            iAP2LogErrorNL("    maxRetransmissions=%d maxCumAck=%d\n",
    e880ef7c:	00344603          	lbu	a2,3(s0)
    e880ef80:	00244583          	lbu	a1,2(s0)
    e880ef84:	00091517          	auipc	a0,0x91
    e880ef88:	43450513          	addi	a0,a0,1076 # e88a03b8 <__FUNCTION__.7541+0x1f8>
    e880ef8c:	744030ef          	jal	ra,e88126d0 <iAP2LogErrorNL>
            iAP2LogErrorNL("    numSessionInfo=%u\n",
    e880ef90:	00a44583          	lbu	a1,10(s0)
    e880ef94:	00091517          	auipc	a0,0x91
    e880ef98:	44c50513          	addi	a0,a0,1100 # e88a03e0 <__FUNCTION__.7541+0x220>
    e880ef9c:	734030ef          	jal	ra,e88126d0 <iAP2LogErrorNL>
            for (i = 0; i < synParam->numSessionInfo; ++i)
    e880efa0:	00a44783          	lbu	a5,10(s0)
    e880efa4:	02f4ca63          	blt	s1,a5,e880efd8 <iAP2LinkIsValidSynParam+0x10c>
            }
            iAP2LogStop();
    e880efa8:	756030ef          	jal	ra,e88126fe <iAP2LogStop>
        }
    }
    return result;
} /* iAP2LinkIsValidSynParam */
    e880efac:	6422                	ld	s0,8(sp)
    e880efae:	70a2                	ld	ra,40(sp)
            iAP2LogStop();
    e880efb0:	4781                	li	a5,0
} /* iAP2LinkIsValidSynParam */
    e880efb2:	64c2                	ld	s1,16(sp)
    e880efb4:	6962                	ld	s2,24(sp)
    e880efb6:	7982                	ld	s3,32(sp)
    e880efb8:	853e                	mv	a0,a5
    e880efba:	6145                	addi	sp,sp,48
    e880efbc:	8082                	ret
                if ((synParam->sessionInfo[i].id == kIAP2PacketReservedSessionID) ||
    e880efbe:	00074883          	lbu	a7,0(a4) # 8000 <memcmp-0xe87f8000>
                tempParam.sessionInfo[tempParam.numSessionInfo].type    = synParam->sessionInfo[i].type;
    e880efc2:	00174603          	lbu	a2,1(a4)
                if ((synParam->sessionInfo[i].id == kIAP2PacketReservedSessionID) ||
    e880efc6:	f60882e3          	beqz	a7,e880ef2a <iAP2LinkIsValidSynParam+0x5e>
    e880efca:	f6c860e3          	bltu	a6,a2,e880ef2a <iAP2LinkIsValidSynParam+0x5e>
                else if (synParam->sessionInfo[i].type == kIAP2PacketServiceTypeControl)
    e880efce:	e211                	bnez	a2,e880efd2 <iAP2LinkIsValidSynParam+0x106>
                    bControlSessionFound = TRUE;
    e880efd0:	4785                	li	a5,1
            for (i = 0; i < synParam->numSessionInfo; ++i)
    e880efd2:	2685                	addiw	a3,a3,1
    e880efd4:	070d                	addi	a4,a4,3
    e880efd6:	b7b9                	j	e880ef24 <iAP2LinkIsValidSynParam+0x58>
                               synParam->sessionInfo[i].version);
    e880efd8:	87a2                	mv	a5,s0
    e880efda:	2124978b          	mula	a5,s1,s2
                iAP2LogErrorNL("    session %u [id=%u type=%u ver=%u]\n",
    e880efde:	85a6                	mv	a1,s1
    e880efe0:	854e                	mv	a0,s3
            for (i = 0; i < synParam->numSessionInfo; ++i)
    e880efe2:	2485                	addiw	s1,s1,1
                iAP2LogErrorNL("    session %u [id=%u type=%u ver=%u]\n",
    e880efe4:	0127c703          	lbu	a4,18(a5) # 1000012 <memcmp-0xe77fffee>
    e880efe8:	0117c683          	lbu	a3,17(a5)
    e880efec:	0107c603          	lbu	a2,16(a5)
    e880eff0:	6e0030ef          	jal	ra,e88126d0 <iAP2LogErrorNL>
            for (i = 0; i < synParam->numSessionInfo; ++i)
    e880eff4:	b775                	j	e880efa0 <iAP2LinkIsValidSynParam+0xd4>
    BOOL result = FALSE;
    e880eff6:	4781                	li	a5,0
} /* iAP2LinkIsValidSynParam */
    e880eff8:	853e                	mv	a0,a5
    e880effa:	8082                	ret

00000000e880effc <iAP2LinkValidateSynParam>:
**      BOOL    returns TRUE if parameters were valid, else FALSE
**
****************************************************************
*/
BOOL iAP2LinkValidateSynParam (iAP2PacketSYNData_t* synParam)
{
    e880effc:	7175                	addi	sp,sp,-144
    e880effe:	fca6                	sd	s1,120(sp)
    e880f000:	e506                	sd	ra,136(sp)
    e880f002:	e122                	sd	s0,128(sp)
    e880f004:	f8ca                	sd	s2,112(sp)
    e880f006:	f4ce                	sd	s3,104(sp)
    e880f008:	f0d2                	sd	s4,96(sp)
    e880f00a:	ecd6                	sd	s5,88(sp)
    e880f00c:	e8da                	sd	s6,80(sp)
    e880f00e:	e4de                	sd	s7,72(sp)
    e880f010:	e0e2                	sd	s8,64(sp)
    e880f012:	fc66                	sd	s9,56(sp)
    iAP2PacketSYNData_t tempParam;
    BOOL bControlSessionFound;
    uint32_t i;
    BOOL result = FALSE;
    e880f014:	4481                	li	s1,0
    if (synParam != NULL)
    e880f016:	1e050463          	beqz	a0,e880f1fe <iAP2LinkValidateSynParam+0x202>
    {
        result = TRUE;

        if (synParam->retransmitTimeout < kiAP2LinkSynValRetransmitTimeoutMin)
    e880f01a:	00655583          	lhu	a1,6(a0)
    e880f01e:	47cd                	li	a5,19
    e880f020:	842a                	mv	s0,a0
        result = TRUE;
    e880f022:	4485                	li	s1,1
        if (synParam->retransmitTimeout < kiAP2LinkSynValRetransmitTimeoutMin)
    e880f024:	00b7ed63          	bltu	a5,a1,e880f03e <iAP2LinkValidateSynParam+0x42>
        {
            result = FALSE;
            iAP2LogError("Invalid SYN Params detected: retransmitTimeout=%d->%d\n",
    e880f028:	4651                	li	a2,20
    e880f02a:	00091517          	auipc	a0,0x91
    e880f02e:	53650513          	addi	a0,a0,1334 # e88a0560 <__FUNCTION__.7541+0x3a0>
    e880f032:	672030ef          	jal	ra,e88126a4 <iAP2LogError>
            result = FALSE;
    e880f036:	4481                	li	s1,0
                         synParam->retransmitTimeout, kiAP2LinkSynValRetransmitTimeoutMin);
            synParam->retransmitTimeout = kiAP2LinkSynValRetransmitTimeoutMin;
    e880f038:	47d1                	li	a5,20
    e880f03a:	00f41323          	sh	a5,6(s0)
            result = FALSE;
            iAP2LogError("Invalid SYN Params detected: retransmitTimeout=%d->%d\n",
                         synParam->retransmitTimeout, kiAP2LinkSynValRetransmitTimeoutMax);
            synParam->retransmitTimeout = kiAP2LinkSynValRetransmitTimeoutMax;
        }
        if (synParam->cumAckTimeout < kiAP2LinkSynValCumAckTimeoutMin)
    e880f03e:	00845583          	lhu	a1,8(s0)
    e880f042:	47a5                	li	a5,9
    e880f044:	00b7ed63          	bltu	a5,a1,e880f05e <iAP2LinkValidateSynParam+0x62>
        {
            result = FALSE;
            iAP2LogError("Invalid SYN Params detected: cumAckTimeout=%d->%d\n",
    e880f048:	4629                	li	a2,10
    e880f04a:	00091517          	auipc	a0,0x91
    e880f04e:	54e50513          	addi	a0,a0,1358 # e88a0598 <__FUNCTION__.7541+0x3d8>
    e880f052:	652030ef          	jal	ra,e88126a4 <iAP2LogError>
            result = FALSE;
    e880f056:	4481                	li	s1,0
                         synParam->cumAckTimeout, kiAP2LinkSynValCumAckTimeoutMin);
            synParam->cumAckTimeout = kiAP2LinkSynValCumAckTimeoutMin;
    e880f058:	47a9                	li	a5,10
    e880f05a:	00f41423          	sh	a5,8(s0)
        }
        if (synParam->cumAckTimeout > kiAP2LinkSynValCumAckTimeoutMax)
    e880f05e:	00845583          	lhu	a1,8(s0)
    e880f062:	fcf5b78b          	extu	a5,a1,63,15
    e880f066:	cf99                	beqz	a5,e880f084 <iAP2LinkValidateSynParam+0x88>
        {
            result = FALSE;
            iAP2LogError("Invalid SYN Params detected: cumAckTimeout=%d->%d\n",
    e880f068:	6621                	lui	a2,0x8
    e880f06a:	167d                	addi	a2,a2,-1
    e880f06c:	00091517          	auipc	a0,0x91
    e880f070:	52c50513          	addi	a0,a0,1324 # e88a0598 <__FUNCTION__.7541+0x3d8>
    e880f074:	630030ef          	jal	ra,e88126a4 <iAP2LogError>
            result = FALSE;
    e880f078:	4481                	li	s1,0
                         synParam->cumAckTimeout, kiAP2LinkSynValCumAckTimeoutMax);
            synParam->cumAckTimeout = kiAP2LinkSynValCumAckTimeoutMax;
    e880f07a:	77e1                	lui	a5,0xffff8
    e880f07c:	fff7c793          	not	a5,a5
    e880f080:	00f41423          	sh	a5,8(s0)
        }
        if (synParam->maxRetransmissions < kiAP2LinkSynValMaxRetransmitMin)
    e880f084:	00244783          	lbu	a5,2(s0)
    e880f088:	ef89                	bnez	a5,e880f0a2 <iAP2LinkValidateSynParam+0xa6>
        {
            result = FALSE;
            iAP2LogError("Invalid SYN Params detected: maxRetransmissions=%d->%d\n",
    e880f08a:	4605                	li	a2,1
    e880f08c:	4581                	li	a1,0
    e880f08e:	00091517          	auipc	a0,0x91
    e880f092:	54250513          	addi	a0,a0,1346 # e88a05d0 <__FUNCTION__.7541+0x410>
    e880f096:	60e030ef          	jal	ra,e88126a4 <iAP2LogError>
            result = FALSE;
    e880f09a:	4481                	li	s1,0
                         synParam->maxRetransmissions, kiAP2LinkSynValMaxRetransmitMin);
            synParam->maxRetransmissions = kiAP2LinkSynValMaxRetransmitMin;
    e880f09c:	4785                	li	a5,1
    e880f09e:	00f40123          	sb	a5,2(s0)
        }
        if (synParam->maxRetransmissions > kiAP2LinkSynValMaxRetransmitMax)
    e880f0a2:	00244583          	lbu	a1,2(s0)
    e880f0a6:	4979                	li	s2,30
    e880f0a8:	00b97c63          	bgeu	s2,a1,e880f0c0 <iAP2LinkValidateSynParam+0xc4>
        {
            result = FALSE;
            iAP2LogError("Invalid SYN Params detected: maxRetransmissions=%d->%d\n",
    e880f0ac:	4679                	li	a2,30
    e880f0ae:	00091517          	auipc	a0,0x91
    e880f0b2:	52250513          	addi	a0,a0,1314 # e88a05d0 <__FUNCTION__.7541+0x410>
    e880f0b6:	5ee030ef          	jal	ra,e88126a4 <iAP2LogError>
            result = FALSE;
    e880f0ba:	4481                	li	s1,0
                         synParam->maxRetransmissions, kiAP2LinkSynValMaxRetransmitMax);
            synParam->maxRetransmissions = kiAP2LinkSynValMaxRetransmitMax;
    e880f0bc:	01240123          	sb	s2,2(s0)
            result = FALSE;
            iAP2LogError("Invalid SYN Params detected: maxCumAck=%d->%d\n",
                         synParam->maxCumAck, kiAP2LinkSynValMaxCumAckMin);
            synParam->maxCumAck = kiAP2LinkSynValMaxCumAckMin;
        }
        if (synParam->maxCumAck > kiAP2LinkSynValMaxCumAckMax)
    e880f0c0:	00344583          	lbu	a1,3(s0)
    e880f0c4:	fc75b78b          	extu	a5,a1,63,7
    e880f0c8:	cf91                	beqz	a5,e880f0e4 <iAP2LinkValidateSynParam+0xe8>
        {
            result = FALSE;
            iAP2LogError("Invalid SYN Params detected: maxCumAck=%d->%d\n",
    e880f0ca:	07f00613          	li	a2,127
    e880f0ce:	00091517          	auipc	a0,0x91
    e880f0d2:	53a50513          	addi	a0,a0,1338 # e88a0608 <__FUNCTION__.7541+0x448>
    e880f0d6:	5ce030ef          	jal	ra,e88126a4 <iAP2LogError>
            result = FALSE;
    e880f0da:	4481                	li	s1,0
                         synParam->maxCumAck, kiAP2LinkSynValMaxCumAckMax);
            synParam->maxCumAck = kiAP2LinkSynValMaxCumAckMax;
    e880f0dc:	07f00793          	li	a5,127
    e880f0e0:	00f401a3          	sb	a5,3(s0)
        }

        tempParam.numSessionInfo = 0;
    e880f0e4:	00010523          	sb	zero,10(sp)
        bControlSessionFound = FALSE;
        for (i = 0; i < synParam->numSessionInfo; ++i)
    e880f0e8:	4901                	li	s2,0
        bControlSessionFound = FALSE;
    e880f0ea:	4a01                	li	s4,0
        {
            if (synParam->sessionInfo[i].type == kIAP2PacketServiceTypeControl) {
    e880f0ec:	498d                	li	s3,3
                                 synParam->sessionInfo[i].version);
                }
            }
            else
            {
                iAP2LogError("Invalid SYN Params detected: session %u [id=%u type=%u ver=%u]\n",
    e880f0ee:	00091a97          	auipc	s5,0x91
    e880f0f2:	54aa8a93          	addi	s5,s5,1354 # e88a0638 <__FUNCTION__.7541+0x478>
            if ((synParam->sessionInfo[i].id != kIAP2PacketReservedSessionID) &&
    e880f0f6:	4b09                	li	s6,2
                        = synParam->sessionInfo[i].id;
    e880f0f8:	01010b93          	addi	s7,sp,16
                        = synParam->sessionInfo[i].type;
    e880f0fc:	01110c13          	addi	s8,sp,17
                        = synParam->sessionInfo[i].version;
    e880f100:	01210c93          	addi	s9,sp,18
        for (i = 0; i < synParam->numSessionInfo; ++i)
    e880f104:	00a44783          	lbu	a5,10(s0)
    e880f108:	02f96963          	bltu	s2,a5,e880f13a <iAP2LinkValidateSynParam+0x13e>
                result = FALSE;
            }
        }
        
        /* Add control session if not present and max sessions not exceeded */
        if (!bControlSessionFound && tempParam.numSessionInfo < kIAP2PacketMaxSessions) {
    e880f10c:	0c0a1f63          	bnez	s4,e880f1ea <iAP2LinkValidateSynParam+0x1ee>
    e880f110:	00a14683          	lbu	a3,10(sp)
    e880f114:	47a5                	li	a5,9
    e880f116:	0cd7ea63          	bltu	a5,a3,e880f1ea <iAP2LinkValidateSynParam+0x1ee>
            /* find unique session id for the control session */
            uint8_t sessionId = (tempParam.numSessionInfo > 0
    e880f11a:	4785                	li	a5,1
    e880f11c:	ce81                	beqz	a3,e880f134 <iAP2LinkValidateSynParam+0x138>
                                 ? tempParam.sessionInfo[tempParam.numSessionInfo -1].id + 1
    e880f11e:	fff6879b          	addiw	a5,a3,-1
    e880f122:	470d                	li	a4,3
    e880f124:	1810                	addi	a2,sp,48
    e880f126:	20e7960b          	mula	a2,a5,a4
    e880f12a:	fe064783          	lbu	a5,-32(a2) # 7fe0 <memcmp-0xe87f8020>
            BOOL uniqueIdFound = FALSE;
            while (!uniqueIdFound) {
                uint8_t j;
                for (j = 0; j < tempParam.numSessionInfo; ++j) {
                    if (tempParam.sessionInfo[j].id == sessionId) {
                        sessionId++;
    e880f12e:	2785                	addiw	a5,a5,1
    e880f130:	0ff7f793          	andi	a5,a5,255
            while (!uniqueIdFound) {
    e880f134:	860a                	mv	a2,sp
                for (j = 0; j < tempParam.numSessionInfo; ++j) {
    e880f136:	4701                	li	a4,0
    e880f138:	a849                	j	e880f1ca <iAP2LinkValidateSynParam+0x1ce>
            if (synParam->sessionInfo[i].type == kIAP2PacketServiceTypeControl) {
    e880f13a:	7c09370b          	extu	a4,s2,31,0
    e880f13e:	87a2                	mv	a5,s0
    e880f140:	2137178b          	mula	a5,a4,s3
    e880f144:	0117c683          	lbu	a3,17(a5) # ffffffffffff8011 <__DRAM0_INF_BASE+0xffffffff00008011>
    e880f148:	e291                	bnez	a3,e880f14c <iAP2LinkValidateSynParam+0x150>
                bControlSessionFound = TRUE;
    e880f14a:	4a05                	li	s4,1
            if ((synParam->sessionInfo[i].id != kIAP2PacketReservedSessionID) &&
    e880f14c:	87a2                	mv	a5,s0
    e880f14e:	2137178b          	mula	a5,a4,s3
    e880f152:	0107c603          	lbu	a2,16(a5)
    e880f156:	c631                	beqz	a2,e880f1a2 <iAP2LinkValidateSynParam+0x1a6>
    e880f158:	04db6563          	bltu	s6,a3,e880f1a2 <iAP2LinkValidateSynParam+0x1a6>
    for (i = 0; i < synData->numSessionInfo; ++i)
    e880f15c:	00a14583          	lbu	a1,10(sp)
    e880f160:	850a                	mv	a0,sp
    e880f162:	4801                	li	a6,0
    e880f164:	87ae                	mv	a5,a1
    e880f166:	02f86363          	bltu	a6,a5,e880f18c <iAP2LinkValidateSynParam+0x190>
                        = synParam->sessionInfo[i].id;
    e880f16a:	033787b3          	mul	a5,a5,s3
                    ++tempParam.numSessionInfo;
    e880f16e:	2585                	addiw	a1,a1,1
    e880f170:	00b10523          	sb	a1,10(sp)
                        = synParam->sessionInfo[i].type;
    e880f174:	00fc568b          	srb	a3,s8,a5,0
                        = synParam->sessionInfo[i].version;
    e880f178:	86a2                	mv	a3,s0
    e880f17a:	2137168b          	mula	a3,a4,s3
                        = synParam->sessionInfo[i].id;
    e880f17e:	00fbd60b          	srb	a2,s7,a5,0
                        = synParam->sessionInfo[i].version;
    e880f182:	0126c703          	lbu	a4,18(a3)
    e880f186:	00fcd70b          	srb	a4,s9,a5,0
                    ++tempParam.numSessionInfo;
    e880f18a:	a035                	j	e880f1b6 <iAP2LinkValidateSynParam+0x1ba>
        if (synData->sessionInfo[i].id == session->id || synData->sessionInfo[i].type == session->type)
    e880f18c:	01054883          	lbu	a7,16(a0)
    e880f190:	08c88563          	beq	a7,a2,e880f21a <iAP2LinkValidateSynParam+0x21e>
    e880f194:	050d                	addi	a0,a0,3
    e880f196:	00e54883          	lbu	a7,14(a0)
    e880f19a:	08d88063          	beq	a7,a3,e880f21a <iAP2LinkValidateSynParam+0x21e>
    for (i = 0; i < synData->numSessionInfo; ++i)
    e880f19e:	2805                	addiw	a6,a6,1
    e880f1a0:	b7d9                	j	e880f166 <iAP2LinkValidateSynParam+0x16a>
                             synParam->sessionInfo[i].version);
    e880f1a2:	87a2                	mv	a5,s0
    e880f1a4:	2137178b          	mula	a5,a4,s3
                iAP2LogError("Invalid SYN Params detected: session %u [id=%u type=%u ver=%u]\n",
    e880f1a8:	85ca                	mv	a1,s2
    e880f1aa:	8556                	mv	a0,s5
                result = FALSE;
    e880f1ac:	4481                	li	s1,0
                iAP2LogError("Invalid SYN Params detected: session %u [id=%u type=%u ver=%u]\n",
    e880f1ae:	0127c703          	lbu	a4,18(a5)
    e880f1b2:	4f2030ef          	jal	ra,e88126a4 <iAP2LogError>
        for (i = 0; i < synParam->numSessionInfo; ++i)
    e880f1b6:	2905                	addiw	s2,s2,1
    e880f1b8:	b7b1                	j	e880f104 <iAP2LinkValidateSynParam+0x108>
                    if (tempParam.sessionInfo[j].id == sessionId) {
    e880f1ba:	060d                	addi	a2,a2,3
    e880f1bc:	00d64583          	lbu	a1,13(a2)
    e880f1c0:	f6f587e3          	beq	a1,a5,e880f12e <iAP2LinkValidateSynParam+0x132>
                for (j = 0; j < tempParam.numSessionInfo; ++j) {
    e880f1c4:	2705                	addiw	a4,a4,1
    e880f1c6:	0ff77713          	andi	a4,a4,255
    e880f1ca:	fed718e3          	bne	a4,a3,e880f1ba <iAP2LinkValidateSynParam+0x1be>
                if (j == tempParam.numSessionInfo) {
                    uniqueIdFound = TRUE;
                }
            }
            
            tempParam.sessionInfo[tempParam.numSessionInfo].id = sessionId;
    e880f1ce:	468d                	li	a3,3
    e880f1d0:	02d706b3          	mul	a3,a4,a3
    e880f1d4:	0810                	addi	a2,sp,16
            tempParam.sessionInfo[tempParam.numSessionInfo].type = kIAP2PacketServiceTypeControl;
            tempParam.sessionInfo[tempParam.numSessionInfo].version = 1;
            ++tempParam.numSessionInfo;
    e880f1d6:	2705                	addiw	a4,a4,1
            tempParam.sessionInfo[tempParam.numSessionInfo].id = sessionId;
    e880f1d8:	00d6578b          	srb	a5,a2,a3,0
            tempParam.sessionInfo[tempParam.numSessionInfo].type = kIAP2PacketServiceTypeControl;
    e880f1dc:	96b2                	add	a3,a3,a2
    e880f1de:	10000793          	li	a5,256
    e880f1e2:	00f690a3          	sh	a5,1(a3)
            ++tempParam.numSessionInfo;
    e880f1e6:	00e10523          	sb	a4,10(sp)
        }
        
        /* Copy the sessionInfo from tempParam to synParam incase it changed due to duplicates or adding a control session */
        synParam->numSessionInfo = tempParam.numSessionInfo;
    e880f1ea:	00a14783          	lbu	a5,10(sp)
        memcpy (&(synParam->sessionInfo),
    e880f1ee:	4679                	li	a2,30
    e880f1f0:	080c                	addi	a1,sp,16
        synParam->numSessionInfo = tempParam.numSessionInfo;
    e880f1f2:	00f40523          	sb	a5,10(s0)
        memcpy (&(synParam->sessionInfo),
    e880f1f6:	01040513          	addi	a0,s0,16
    e880f1fa:	1a66d0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
                &(tempParam.sessionInfo),
                sizeof(tempParam.sessionInfo));
    }
    return result;
} /* iAP2LinkValidateSynParam */
    e880f1fe:	60aa                	ld	ra,136(sp)
    e880f200:	640a                	ld	s0,128(sp)
    e880f202:	8526                	mv	a0,s1
    e880f204:	7946                	ld	s2,112(sp)
    e880f206:	74e6                	ld	s1,120(sp)
    e880f208:	79a6                	ld	s3,104(sp)
    e880f20a:	7a06                	ld	s4,96(sp)
    e880f20c:	6ae6                	ld	s5,88(sp)
    e880f20e:	6b46                	ld	s6,80(sp)
    e880f210:	6ba6                	ld	s7,72(sp)
    e880f212:	6c06                	ld	s8,64(sp)
    e880f214:	7ce2                	ld	s9,56(sp)
    e880f216:	6149                	addi	sp,sp,144
    e880f218:	8082                	ret
                                 synParam->sessionInfo[i].version);
    e880f21a:	87a2                	mv	a5,s0
    e880f21c:	2137178b          	mula	a5,a4,s3
                    iAP2LogError("Duplicate SYN Params detected: session %u [id=%u type=%u ver=%u]\n",
    e880f220:	85ca                	mv	a1,s2
    e880f222:	00091517          	auipc	a0,0x91
    e880f226:	45650513          	addi	a0,a0,1110 # e88a0678 <__FUNCTION__.7541+0x4b8>
    e880f22a:	0127c703          	lbu	a4,18(a5)
    e880f22e:	476030ef          	jal	ra,e88126a4 <iAP2LogError>
    e880f232:	b751                	j	e880f1b6 <iAP2LinkValidateSynParam+0x1ba>

00000000e880f234 <iAP2LinkGetBuffSize>:
**
**
****************************************************************
*/
uint32_t iAP2LinkGetBuffSize (uint8_t maxPacketSentRcvdAtOnce)
{
    e880f234:	1101                	addi	sp,sp,-32
    e880f236:	ec06                	sd	ra,24(sp)
    e880f238:	e422                	sd	s0,8(sp)
    e880f23a:	e826                	sd	s1,16(sp)
    e880f23c:	84aa                	mv	s1,a0
    ** TODO: this should be overridden by actual number of packets
    **       accessory is willing to send without ACK
    */
    uint8_t maxTimeouts = (maxPacketSentRcvdAtOnce +
                           2); /* +2, one for DETECT timeout and one for sendACK timeout */
    result += iAP2FSMGetBuffSize();
    e880f23e:	45d020ef          	jal	ra,e8811e9a <iAP2FSMGetBuffSize>
    e880f242:	0005041b          	sext.w	s0,a0
    uint8_t maxTimeouts = (maxPacketSentRcvdAtOnce +
    e880f246:	0024851b          	addiw	a0,s1,2
    result += iAP2TimeGetBuffSize(maxTimeouts);
    e880f24a:	0ff57513          	andi	a0,a0,255
    e880f24e:	5aa030ef          	jal	ra,e88127f8 <iAP2TimeGetBuffSize>
    e880f252:	9c29                	addw	s0,s0,a0
    /* Assume use malloc */
    /*
     ** TODO: this should be overridden by actual number/size of packets/buffers
     **       that should be supported
     */
    result += iAP2BuffPoolGetBuffSize (kiAP2BuffPoolTypeBuff, 0, 0);
    e880f254:	4601                	li	a2,0
    e880f256:	4581                	li	a1,0
    e880f258:	4501                	li	a0,0
    e880f25a:	2dd020ef          	jal	ra,e8811d36 <iAP2BuffPoolGetBuffSize>
    result += iAP2TimeGetBuffSize(maxTimeouts);
    e880f25e:	17c4041b          	addiw	s0,s0,380
    result += iAP2BuffPoolGetBuffSize (kiAP2BuffPoolTypeBuff, 0, 0);
    e880f262:	9c29                	addw	s0,s0,a0
    result += iAP2BuffPoolGetBuffSize (kiAP2BuffPoolTypeSendPacket, 0, 0);
    e880f264:	4601                	li	a2,0
    e880f266:	4581                	li	a1,0
    e880f268:	4505                	li	a0,1
    e880f26a:	2cd020ef          	jal	ra,e8811d36 <iAP2BuffPoolGetBuffSize>
    e880f26e:	9c29                	addw	s0,s0,a0
    result += iAP2BuffPoolGetBuffSize (kiAP2BuffPoolTypeRecvPacket, 0, 0);
    e880f270:	4601                	li	a2,0
    e880f272:	4581                	li	a1,0
    e880f274:	4509                	li	a0,2
    e880f276:	2c1020ef          	jal	ra,e8811d36 <iAP2BuffPoolGetBuffSize>
    e880f27a:	9c29                	addw	s0,s0,a0

    /* 3 lists, recv packet list, send packet list, and send buff list. */
    result += iAP2ListArrayGetBuffSize(maxPacketSentRcvdAtOnce, (uint8_t)sizeof(uintptr_t));
    e880f27c:	45a1                	li	a1,8
    e880f27e:	8526                	mv	a0,s1
    e880f280:	5e7020ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    e880f284:	9c29                	addw	s0,s0,a0
    result += iAP2ListArrayGetBuffSize(maxPacketSentRcvdAtOnce, (uint8_t)sizeof(uintptr_t));
    e880f286:	45a1                	li	a1,8
    e880f288:	8526                	mv	a0,s1
    e880f28a:	5dd020ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    e880f28e:	9c29                	addw	s0,s0,a0
    result += iAP2ListArrayGetBuffSize(maxPacketSentRcvdAtOnce, (uint8_t)sizeof(uintptr_t));
    e880f290:	45a1                	li	a1,8
    e880f292:	8526                	mv	a0,s1
    e880f294:	5d3020ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    e880f298:	9c29                	addw	s0,s0,a0
    e880f29a:	448d                	li	s1,3
    ** need to support all session types, only the supported ones need have
    ** the sessSendPckList created.
    */
    for (i = 0; i < kIAP2PacketServiceTypeCount; ++i)
    {
        result += iAP2ListArrayGetBuffSize (kiAP2ListArrayMaxCount, (uint8_t)sizeof(uintptr_t));
    e880f29c:	45a1                	li	a1,8
    e880f29e:	0ff00513          	li	a0,255
    e880f2a2:	5c5020ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    e880f2a6:	34fd                	addiw	s1,s1,-1
    e880f2a8:	9c29                	addw	s0,s0,a0
    for (i = 0; i < kIAP2PacketServiceTypeCount; ++i)
    e880f2aa:	f8ed                	bnez	s1,e880f29c <iAP2LinkGetBuffSize+0x68>
    }

    /* TODO: iAP2List should use preallocated buffers as well. */

    return result;
}
    e880f2ac:	8522                	mv	a0,s0
    e880f2ae:	60e2                	ld	ra,24(sp)
    e880f2b0:	6422                	ld	s0,8(sp)
    e880f2b2:	64c2                	ld	s1,16(sp)
    e880f2b4:	6105                	addi	sp,sp,32
    e880f2b6:	8082                	ret

00000000e880f2b8 <iAP2LinkCreate>:
                            iAP2LinkSendDetectCB_t      sendDetectCB,
                            iAP2LinkSignalSendBuffCB_t  signalSendBuffCB,
                            BOOL                        bValidateSYN,
                            uint8_t                     maxPacketSentAtOnce,
                            uint8_t*                    linkBuffer)
{
    e880f2b8:	7175                	addi	sp,sp,-144
    e880f2ba:	f4ce                	sd	s3,104(sp)
    e880f2bc:	79aa                	ld	s3,168(sp)
    e880f2be:	f8ca                	sd	s2,112(sp)
    e880f2c0:	f0d2                	sd	s4,96(sp)
    e880f2c2:	ecd6                	sd	s5,88(sp)
    e880f2c4:	e8da                	sd	s6,80(sp)
    e880f2c6:	e4de                	sd	s7,72(sp)
    e880f2c8:	e0e2                	sd	s8,64(sp)
    e880f2ca:	fc66                	sd	s9,56(sp)
    e880f2cc:	f86a                	sd	s10,48(sp)
    e880f2ce:	f46e                	sd	s11,40(sp)
    e880f2d0:	e506                	sd	ra,136(sp)
    e880f2d2:	e122                	sd	s0,128(sp)
    e880f2d4:	fca6                	sd	s1,120(sp)
    e880f2d6:	ec46                	sd	a7,24(sp)
    e880f2d8:	8a2a                	mv	s4,a0
    e880f2da:	8d2e                	mv	s10,a1
    e880f2dc:	8b32                	mv	s6,a2
    e880f2de:	8ab6                	mv	s5,a3
    e880f2e0:	8cba                	mv	s9,a4
    e880f2e2:	8c3e                	mv	s8,a5
    e880f2e4:	8bc2                	mv	s7,a6
    e880f2e6:	4dea                	lw	s11,152(sp)
    e880f2e8:	0a014903          	lbu	s2,160(sp)
    uint8_t     maxTimeouts = 0;
    int         i;
    iAP2Link_t* link;
    uint8_t*    linkBufferNext;
#if iAP2_LINK_ALLOW_MALLOC != 0
    if (NULL == linkBuffer)
    e880f2ec:	04099d63          	bnez	s3,e880f346 <iAP2LinkCreate+0x8e>
    {
        uint8_t* buff = malloc (iAP2LinkGetBuffSize(maxPacketSentAtOnce));
    e880f2f0:	854a                	mv	a0,s2
    e880f2f2:	f43ff0ef          	jal	ra,e880f234 <iAP2LinkGetBuffSize>
    e880f2f6:	7c05350b          	extu	a0,a0,31,0
    e880f2fa:	5546c0ef          	jal	ra,e887b84e <my_malloc>
    e880f2fe:	842a                	mv	s0,a0
        link             = (iAP2Link_t*) buff;
        linkBufferNext   = buff;
        link->linkBuffer = buff;
    e880f300:	e008                	sd	a0,0(s0)
    assert(linkBuffer);
    link             = (iAP2Link_t*) (linkBuffer);
    linkBufferNext   = linkBuffer;
    link->linkBuffer = linkBuffer;
#endif
    linkBufferNext += sizeof(iAP2Link_t);
    e880f302:	17840493          	addi	s1,s0,376
    assert(link);
    e880f306:	e01d                	bnez	s0,e880f32c <iAP2LinkCreate+0x74>
    e880f308:	02f00593          	li	a1,47
    e880f30c:	00091517          	auipc	a0,0x91
    e880f310:	e9450513          	addi	a0,a0,-364 # e88a01a0 <TWO52+0x5a8>
    e880f314:	0646d0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880f318:	00150593          	addi	a1,a0,1
    e880f31c:	66100613          	li	a2,1633
    e880f320:	00091517          	auipc	a0,0x91
    e880f324:	e9050513          	addi	a0,a0,-368 # e88a01b0 <TWO52+0x5b8>
    e880f328:	79f6c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (bValidateSYN && iAP2LinkIsValidSynParam(synParam) == FALSE)
    e880f32c:	020d8263          	beqz	s11,e880f350 <iAP2LinkCreate+0x98>
    e880f330:	855a                	mv	a0,s6
    e880f332:	b9bff0ef          	jal	ra,e880eecc <iAP2LinkIsValidSynParam>
    e880f336:	ed09                	bnez	a0,e880f350 <iAP2LinkCreate+0x98>
    {
#if iAP2_LINK_ALLOW_MALLOC != 0
        if (NULL == linkBuffer)
    e880f338:	00099563          	bnez	s3,e880f342 <iAP2LinkCreate+0x8a>
        {
            free (link);
    e880f33c:	8522                	mv	a0,s0
    e880f33e:	7c36c0ef          	jal	ra,e887c300 <eLIBs_free>
        }
#endif
        return NULL;
    e880f342:	4401                	li	s0,0
    e880f344:	ac35                	j	e880f580 <iAP2LinkCreate+0x2c8>
        link             = (iAP2Link_t*) (linkBuffer + iAP2_LINK_BUFFER_OFFSET);
    e880f346:	00498413          	addi	s0,s3,4
        link->linkBuffer = linkBuffer;
    e880f34a:	0139b223          	sd	s3,4(s3)
    e880f34e:	bf55                	j	e880f302 <iAP2LinkCreate+0x4a>
    }

    switch (type)
    e880f350:	000a0763          	beqz	s4,e880f35e <iAP2LinkCreate+0xa6>
    e880f354:	4785                	li	a5,1
    e880f356:	fefa16e3          	bne	s4,a5,e880f342 <iAP2LinkCreate+0x8a>
    uint8_t     maxTimeouts = 0;
    e880f35a:	4981                	li	s3,0
    e880f35c:	a825                	j	e880f394 <iAP2LinkCreate+0xdc>
            /* TODO: this should be overridden by actual number of packets
             *       accessory is willing to send without ACK
             */
            maxTimeouts = (maxPacketSentAtOnce +
                           2); /* +2, one for DETECT timeout and one for sendACK timeout */
            link->fsm = iAP2FSMCreate (kiAP2LinkStateCount,
    e880f35e:	e026                	sd	s1,0(sp)
    e880f360:	4881                	li	a7,0
    e880f362:	4801                	li	a6,0
    e880f364:	00091797          	auipc	a5,0x91
    e880f368:	f4478793          	addi	a5,a5,-188 # e88a02a8 <__FUNCTION__.7541+0xe8>
    e880f36c:	8722                	mv	a4,s0
    e880f36e:	00092697          	auipc	a3,0x92
    e880f372:	e5a68693          	addi	a3,a3,-422 # e88a11c8 <iAP2LinkAccessoryStates>
    e880f376:	4659                	li	a2,22
    e880f378:	4581                	li	a1,0
    e880f37a:	4521                	li	a0,8
    e880f37c:	325020ef          	jal	ra,e8811ea0 <iAP2FSMCreate>
    e880f380:	e808                	sd	a0,16(s0)
#else
                                       NULL,
                                       NULL,
#endif
                                       linkBufferNext);
            linkBufferNext += iAP2FSMGetBuffSize();
    e880f382:	319020ef          	jal	ra,e8811e9a <iAP2FSMGetBuffSize>
            maxTimeouts = (maxPacketSentAtOnce +
    e880f386:	0029099b          	addiw	s3,s2,2
            linkBufferNext += iAP2FSMGetBuffSize();
    e880f38a:	7c05350b          	extu	a0,a0,31,0
            maxTimeouts = (maxPacketSentAtOnce +
    e880f38e:	0ff9f993          	andi	s3,s3,255
            linkBufferNext += iAP2FSMGetBuffSize();
    e880f392:	94aa                	add	s1,s1,a0
    link->context          = context;
    link->sendPacketCB     = sendPacketCB;
    link->sendPacketWaitCB = sendPacketWaitCB;
    link->recvDataCB       = recvDataCB;
    link->connectedCB      = connectedCB;
    link->sendDetectCB     = sendDetectCB;
    e880f394:	67e2                	ld	a5,24(sp)
    link->signalSendBuffCB = signalSendBuffCB;
    link->startSeq         = (uint8_t) rand();
    e880f396:	80000537          	lui	a0,0x80000
    link->type             = type;
    e880f39a:	05440823          	sb	s4,80(s0)
    link->sendDetectCB     = sendDetectCB;
    e880f39e:	fc1c                	sd	a5,56(s0)
    link->signalSendBuffCB = signalSendBuffCB;
    e880f3a0:	67ca                	ld	a5,144(sp)
    link->context          = context;
    e880f3a2:	05a43423          	sd	s10,72(s0)
    link->sendPacketCB     = sendPacketCB;
    e880f3a6:	01543c23          	sd	s5,24(s0)
    link->signalSendBuffCB = signalSendBuffCB;
    e880f3aa:	e03c                	sd	a5,64(s0)
    link->recvDataCB       = recvDataCB;
    e880f3ac:	fd845c8b          	sdd	s9,s8,(s0),2,4
    link->connectedCB      = connectedCB;
    e880f3b0:	03743823          	sd	s7,48(s0)
    link->startSeq         = (uint8_t) rand();
    e880f3b4:	fff54513          	not	a0,a0
    e880f3b8:	73b6c0ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e880f3bc:	04a408a3          	sb	a0,81(s0)
    link->sentSeq          = 0;
    link->bValidSentSeq    = FALSE;
    link->recvSeq          = 0;
    link->bValidRecvSeq    = FALSE;
    e880f3c0:	05844783          	lbu	a5,88(s0)
    link->sentAck          = 0;
    link->bValidSentAck    = FALSE;
    link->recvAck          = 0;
    link->bValidRecvAck    = FALSE;
    link->recvPck          = NULL;
    link->mainTimer        = iAP2TimeCreate (link,
    e880f3c4:	8726                	mv	a4,s1
    e880f3c6:	86ce                	mv	a3,s3
    link->bValidRecvSeq    = FALSE;
    e880f3c8:	9bc1                	andi	a5,a5,-16
    e880f3ca:	04f40c23          	sb	a5,88(s0)
    link->mainTimer        = iAP2TimeCreate (link,
    e880f3ce:	00000617          	auipc	a2,0x0
    e880f3d2:	3da60613          	addi	a2,a2,986 # e880f7a8 <_iAP2LinkHandleTimerCancel>
    e880f3d6:	00001597          	auipc	a1,0x1
    e880f3da:	22e58593          	addi	a1,a1,558 # e8810604 <_iAP2LinkHandleTimerExpire>
    link->recvSeq          = 0;
    e880f3de:	04042923          	sw	zero,82(s0)
    link->recvPck          = NULL;
    e880f3e2:	08043423          	sd	zero,136(s0)
    link->mainTimer        = iAP2TimeCreate (link,
    e880f3e6:	8522                	mv	a0,s0
    e880f3e8:	424030ef          	jal	ra,e881280c <iAP2TimeCreate>
    e880f3ec:	f028                	sd	a0,96(s0)
                                             _iAP2LinkHandleTimerExpire,
                                             _iAP2LinkHandleTimerCancel,
                                             maxTimeouts,
                                             linkBufferNext);
    linkBufferNext += iAP2TimeGetBuffSize (maxTimeouts);
    e880f3ee:	854e                	mv	a0,s3
    e880f3f0:	408030ef          	jal	ra,e88127f8 <iAP2TimeGetBuffSize>
    e880f3f4:	7c05350b          	extu	a0,a0,31,0

    link->detectAckTimeoutID = INVALID_TIMEOUT_ID;
    e880f3f8:	57fd                	li	a5,-1
    e880f3fa:	04f41b23          	sh	a5,86(s0)
    link->sendAckTimeoutID = INVALID_TIMEOUT_ID;
    link->bUseiAP2LinkRunLoop = FALSE;
    e880f3fe:	05844783          	lbu	a5,88(s0)
    linkBufferNext += iAP2TimeGetBuffSize (maxTimeouts);
    e880f402:	94aa                	add	s1,s1,a0

    iAP2ListArrayInit (linkBufferNext, maxPacketSentAtOnce, (uint8_t)sizeof(uintptr_t));
    e880f404:	4621                	li	a2,8
    link->bUseiAP2LinkRunLoop = FALSE;
    e880f406:	9bbd                	andi	a5,a5,-17
    e880f408:	04f40c23          	sb	a5,88(s0)
    iAP2ListArrayInit (linkBufferNext, maxPacketSentAtOnce, (uint8_t)sizeof(uintptr_t));
    e880f40c:	85ca                	mv	a1,s2
    e880f40e:	8526                	mv	a0,s1
    e880f410:	465020ef          	jal	ra,e8812074 <iAP2ListArrayInit>
    link->recvPckList = linkBufferNext;
    e880f414:	e844                	sd	s1,144(s0)
    linkBufferNext += iAP2ListArrayGetBuffSize (maxPacketSentAtOnce, (uint8_t)sizeof(uintptr_t));
    e880f416:	45a1                	li	a1,8
    e880f418:	854a                	mv	a0,s2
    e880f41a:	44d020ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    e880f41e:	7c05350b          	extu	a0,a0,31,0
    e880f422:	94aa                	add	s1,s1,a0

    iAP2ListArrayInit (linkBufferNext, maxPacketSentAtOnce, (uint8_t)sizeof(uintptr_t));
    e880f424:	85ca                	mv	a1,s2
    e880f426:	4621                	li	a2,8
    e880f428:	8526                	mv	a0,s1
    e880f42a:	44b020ef          	jal	ra,e8812074 <iAP2ListArrayInit>
    link->sendPckList = linkBufferNext;
    e880f42e:	ec44                	sd	s1,152(s0)
    linkBufferNext += iAP2ListArrayGetBuffSize (maxPacketSentAtOnce, (uint8_t)sizeof(uintptr_t));
    e880f430:	854a                	mv	a0,s2
    e880f432:	45a1                	li	a1,8
    e880f434:	433020ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    e880f438:	7c05350b          	extu	a0,a0,31,0
    e880f43c:	94aa                	add	s1,s1,a0
    /*
    ** This supports all session types but if the implementation does not
    ** need to support all session types, only the supported ones need have
    ** the sessSendPckList created.
    */
    for (i = 0; i < kIAP2PacketServiceTypeCount; ++i)
    e880f43e:	0a040913          	addi	s2,s0,160
    e880f442:	0b840993          	addi	s3,s0,184
    {
        iAP2ListArrayInit (linkBufferNext, kiAP2ListArrayMaxCount, (uint8_t)sizeof(uintptr_t));
    e880f446:	4621                	li	a2,8
    e880f448:	0ff00593          	li	a1,255
    e880f44c:	8526                	mv	a0,s1
    e880f44e:	427020ef          	jal	ra,e8812074 <iAP2ListArrayInit>
        link->sessSendPckList[i] = linkBufferNext;
    e880f452:	7889548b          	sdia	s1,(s2),8,0
        linkBufferNext += iAP2ListArrayGetBuffSize (kiAP2ListArrayMaxCount, (uint8_t)sizeof(uintptr_t));
    e880f456:	45a1                	li	a1,8
    e880f458:	0ff00513          	li	a0,255
    e880f45c:	40b020ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    e880f460:	7c05350b          	extu	a0,a0,31,0
    e880f464:	94aa                	add	s1,s1,a0
    for (i = 0; i < kIAP2PacketServiceTypeCount; ++i)
    e880f466:	ff2990e3          	bne	s3,s2,e880f446 <iAP2LinkCreate+0x18e>
    }

    /* SYN params */
    link->initParam.version                = synParam->version;
    e880f46a:	000b4783          	lbu	a5,0(s6)
    link->initParam.maxRetransmissions     = synParam->maxRetransmissions;
    link->initParam.maxCumAck              = synParam->maxCumAck;
    link->initParam.peerMaxOutstandingPackets  = synParam->maxOutstandingPackets;
    link->initParam.peerMaxPacketSize          = synParam->maxPacketSize;
    link->initParam.numSessionInfo         = synParam->numSessionInfo;
    memcpy (link->initParam.sessionInfo,
    e880f46e:	4679                	li	a2,30
    e880f470:	010b0593          	addi	a1,s6,16
    link->initParam.version                = synParam->version;
    e880f474:	0af40c23          	sb	a5,184(s0)
    link->initParam.maxOutstandingPackets  = synParam->maxOutstandingPackets;
    e880f478:	001b4783          	lbu	a5,1(s6)
    memcpy (link->initParam.sessionInfo,
    e880f47c:	0c840513          	addi	a0,s0,200
    link->initParam.maxOutstandingPackets  = synParam->maxOutstandingPackets;
    e880f480:	0af40ca3          	sb	a5,185(s0)
    link->initParam.maxPacketSize          = synParam->maxPacketSize;
    e880f484:	004b5783          	lhu	a5,4(s6)
    e880f488:	0af41e23          	sh	a5,188(s0)
    link->initParam.retransmitTimeout      = synParam->retransmitTimeout;
    e880f48c:	006b5783          	lhu	a5,6(s6)
    e880f490:	0af41f23          	sh	a5,190(s0)
    link->initParam.cumAckTimeout          = synParam->cumAckTimeout;
    e880f494:	008b5783          	lhu	a5,8(s6)
    e880f498:	0cf41023          	sh	a5,192(s0)
    link->initParam.maxRetransmissions     = synParam->maxRetransmissions;
    e880f49c:	002b4783          	lbu	a5,2(s6)
    e880f4a0:	0af40d23          	sb	a5,186(s0)
    link->initParam.maxCumAck              = synParam->maxCumAck;
    e880f4a4:	003b4783          	lbu	a5,3(s6)
    e880f4a8:	0af40da3          	sb	a5,187(s0)
    link->initParam.peerMaxOutstandingPackets  = synParam->maxOutstandingPackets;
    e880f4ac:	001b4783          	lbu	a5,1(s6)
    e880f4b0:	0cf401a3          	sb	a5,195(s0)
    link->initParam.peerMaxPacketSize          = synParam->maxPacketSize;
    e880f4b4:	004b5783          	lhu	a5,4(s6)
    e880f4b8:	0cf41223          	sh	a5,196(s0)
    link->initParam.numSessionInfo         = synParam->numSessionInfo;
    e880f4bc:	00ab4783          	lbu	a5,10(s6)
    e880f4c0:	0cf40123          	sb	a5,194(s0)
    memcpy (link->initParam.sessionInfo,
    e880f4c4:	6dd6c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            synParam->sessionInfo,
            sizeof(synParam->sessionInfo[0]) * kIAP2PacketMaxSessions);

    memcpy (&(link->negotiatedParam),
    e880f4c8:	02e00613          	li	a2,46
    e880f4cc:	85ce                	mv	a1,s3
    e880f4ce:	0e640513          	addi	a0,s0,230
    e880f4d2:	6cf6c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            &(link->initParam),
            sizeof(link->initParam));

    iAP2LinkSetDefaultSYNParam (&(link->param));
    e880f4d6:	11440513          	addi	a0,s0,276
    e880f4da:	9d5ff0ef          	jal	ra,e880eeae <iAP2LinkSetDefaultSYNParam>

    /* Must be called after link is initilaized */
    link->recvPckPool = iAP2BuffPoolInit (kiAP2BuffPoolTypeRecvPacket,
    e880f4de:	8726                	mv	a4,s1
    e880f4e0:	4681                	li	a3,0
    e880f4e2:	4601                	li	a2,0
    e880f4e4:	85a2                	mv	a1,s0
    e880f4e6:	4509                	li	a0,2
    e880f4e8:	083020ef          	jal	ra,e8811d6a <iAP2BuffPoolInit>
    e880f4ec:	f828                	sd	a0,112(s0)
                                          (uintptr_t) link,
                                          0, 0, linkBufferNext);
    linkBufferNext += iAP2BuffPoolGetBuffSize (kiAP2BuffPoolTypeRecvPacket, 0, 0);
    e880f4ee:	4601                	li	a2,0
    e880f4f0:	4581                	li	a1,0
    e880f4f2:	4509                	li	a0,2
    e880f4f4:	043020ef          	jal	ra,e8811d36 <iAP2BuffPoolGetBuffSize>
    e880f4f8:	7c05350b          	extu	a0,a0,31,0
    e880f4fc:	94aa                	add	s1,s1,a0
    link->sendPckPool = iAP2BuffPoolInit (kiAP2BuffPoolTypeSendPacket,
    e880f4fe:	8726                	mv	a4,s1
    e880f500:	4681                	li	a3,0
    e880f502:	4601                	li	a2,0
    e880f504:	85a2                	mv	a1,s0
    e880f506:	4505                	li	a0,1
    e880f508:	063020ef          	jal	ra,e8811d6a <iAP2BuffPoolInit>
    e880f50c:	fc28                	sd	a0,120(s0)
                                          (uintptr_t) link,
                                          0, 0, linkBufferNext);
    linkBufferNext += iAP2BuffPoolGetBuffSize (kiAP2BuffPoolTypeSendPacket, 0, 0);
    e880f50e:	4601                	li	a2,0
    e880f510:	4581                	li	a1,0
    e880f512:	4505                	li	a0,1
    e880f514:	023020ef          	jal	ra,e8811d36 <iAP2BuffPoolGetBuffSize>
    e880f518:	7c05350b          	extu	a0,a0,31,0
    e880f51c:	94aa                	add	s1,s1,a0
    link->buffPool = iAP2BuffPoolInit (kiAP2BuffPoolTypeBuff,
    e880f51e:	8726                	mv	a4,s1
    e880f520:	4681                	li	a3,0
    e880f522:	4601                	li	a2,0
    e880f524:	85a2                	mv	a1,s0
    e880f526:	4501                	li	a0,0
    e880f528:	043020ef          	jal	ra,e8811d6a <iAP2BuffPoolInit>
    e880f52c:	e048                	sd	a0,128(s0)
                                       (uintptr_t) link,
                                       0, 0, linkBufferNext);
    linkBufferNext += iAP2BuffPoolGetBuffSize (kiAP2BuffPoolTypeBuff, 0, 0);
    e880f52e:	4601                	li	a2,0
    e880f530:	4581                	li	a1,0
    e880f532:	4501                	li	a0,0
    e880f534:	003020ef          	jal	ra,e8811d36 <iAP2BuffPoolGetBuffSize>
    e880f538:	7c05350b          	extu	a0,a0,31,0
    link->numACKDelays = 0;
    link->numResentACK = 0;
    link->numResentDATA = 0;
#endif /*#if iAP2_LINK_ALLOW_STATS*/

    link->bIgnoreSynRetryLimit = FALSE;
    e880f53c:	05844783          	lbu	a5,88(s0)
    linkBufferNext += iAP2BuffPoolGetBuffSize (kiAP2BuffPoolTypeBuff, 0, 0);
    e880f540:	94aa                	add	s1,s1,a0
    link->linkBufferNext = linkBufferNext;
    e880f542:	e404                	sd	s1,8(s0)
    link->bIgnoreSynRetryLimit = FALSE;
    e880f544:	fdf7f793          	andi	a5,a5,-33
    link->numRecvSYN = 0;
    e880f548:	14043223          	sd	zero,324(s0)
    link->numRecvCumSYN = 0;
    e880f54c:	14043623          	sd	zero,332(s0)
    link->numSentSYN = 0;
    e880f550:	14043a23          	sd	zero,340(s0)
    link->numSentCumSYN = 0;
    e880f554:	14043e23          	sd	zero,348(s0)
    link->numResentSYN = 0;
    e880f558:	16043223          	sd	zero,356(s0)
    link->numResentCumSYN = 0;
    e880f55c:	16043623          	sd	zero,364(s0)
    link->bIgnoreSynRetryLimit = FALSE;
    e880f560:	04f40c23          	sb	a5,88(s0)

    if (NULL == sendPacketCB)
    e880f564:	000a9e63          	bnez	s5,e880f580 <iAP2LinkCreate+0x2c8>
    {
        iAP2LogError("%s:%d NULL sendPacketCB!\n", __FILE__, __LINE__);
    e880f568:	72f00613          	li	a2,1839
    e880f56c:	00091597          	auipc	a1,0x91
    e880f570:	c3458593          	addi	a1,a1,-972 # e88a01a0 <TWO52+0x5a8>
    e880f574:	00091517          	auipc	a0,0x91
    e880f578:	d4450513          	addi	a0,a0,-700 # e88a02b8 <__FUNCTION__.7541+0xf8>
    e880f57c:	128030ef          	jal	ra,e88126a4 <iAP2LogError>
    }

    return link;
}
    e880f580:	8522                	mv	a0,s0
    e880f582:	60aa                	ld	ra,136(sp)
    e880f584:	640a                	ld	s0,128(sp)
    e880f586:	74e6                	ld	s1,120(sp)
    e880f588:	7946                	ld	s2,112(sp)
    e880f58a:	79a6                	ld	s3,104(sp)
    e880f58c:	7a06                	ld	s4,96(sp)
    e880f58e:	6ae6                	ld	s5,88(sp)
    e880f590:	6b46                	ld	s6,80(sp)
    e880f592:	6ba6                	ld	s7,72(sp)
    e880f594:	6c06                	ld	s8,64(sp)
    e880f596:	7ce2                	ld	s9,56(sp)
    e880f598:	7d42                	ld	s10,48(sp)
    e880f59a:	7da2                	ld	s11,40(sp)
    e880f59c:	6149                	addi	sp,sp,144
    e880f59e:	8082                	ret

00000000e880f5a0 <iAP2LinkGetMaxSendPayloadSize>:
**
****************************************************************
*/
uint32_t iAP2LinkGetMaxSendPayloadSize (iAP2Link_t* link)
{
    if (link)
    e880f5a0:	c509                	beqz	a0,e880f5aa <iAP2LinkGetMaxSendPayloadSize+0xa>
 */
uint32_t iAP2LinkGetMaxSendPacketSize (iAP2Link_t* link)
{
    if (link)
    {
        return link->param.peerMaxPacketSize;
    e880f5a2:	12055503          	lhu	a0,288(a0)
                - kIAP2PacketChksumLen);
    e880f5a6:	3559                	addiw	a0,a0,-10
    e880f5a8:	8082                	ret
    return 0;
    e880f5aa:	4501                	li	a0,0
}
    e880f5ac:	8082                	ret

00000000e880f5ae <iAP2LinkGetMaxRecvPacketSize>:
 **
 ****************************************************************
 */
uint32_t iAP2LinkGetMaxRecvPacketSize (iAP2Link_t* link)
{
    if (link)
    e880f5ae:	c911                	beqz	a0,e880f5c2 <iAP2LinkGetMaxRecvPacketSize+0x14>
    {
        uint32_t maxPacketSize = link->initParam.maxPacketSize;
    e880f5b0:	0bc55503          	lhu	a0,188(a0)
    e880f5b4:	08000793          	li	a5,128
    e880f5b8:	00f57663          	bgeu	a0,a5,e880f5c4 <iAP2LinkGetMaxRecvPacketSize+0x16>
    e880f5bc:	08000513          	li	a0,128
    e880f5c0:	8082                	ret
             */
            maxPacketSize = kiAP2LinkSynDefaultMaxPacketSize;
        }
        return maxPacketSize;
    }
    return 0;
    e880f5c2:	4501                	li	a0,0
}
    e880f5c4:	8082                	ret

00000000e880f5c6 <iAP2LinkGetMaxRecvPayloadSize>:
    if (link)
    e880f5c6:	c909                	beqz	a0,e880f5d8 <iAP2LinkGetMaxRecvPayloadSize+0x12>
{
    e880f5c8:	1141                	addi	sp,sp,-16
    e880f5ca:	e406                	sd	ra,8(sp)
        return (iAP2LinkGetMaxRecvPacketSize (link)
    e880f5cc:	fe3ff0ef          	jal	ra,e880f5ae <iAP2LinkGetMaxRecvPacketSize>
                - kIAP2PacketChksumLen);
    e880f5d0:	3559                	addiw	a0,a0,-10
}
    e880f5d2:	60a2                	ld	ra,8(sp)
    e880f5d4:	0141                	addi	sp,sp,16
    e880f5d6:	8082                	ret
    return 0;
    e880f5d8:	4501                	li	a0,0
}
    e880f5da:	8082                	ret

00000000e880f5dc <iAP2LinkStart>:
**
****************************************************************
*/
void iAP2LinkStart (iAP2Link_t* link)
{
    iAP2FSMHandleEvent(link->fsm, kiAP2LinkEventInitDone);
    e880f5dc:	6908                	ld	a0,16(a0)
    e880f5de:	4581                	li	a1,0
    e880f5e0:	1350206f          	j	e8811f14 <iAP2FSMHandleEvent>

00000000e880f5e4 <iAP2LinkAttached>:
**
****************************************************************
*/
void iAP2LinkAttached (iAP2Link_t* link)
{
    if (link != NULL)
    e880f5e4:	c905                	beqz	a0,e880f614 <iAP2LinkAttached+0x30>
{
    e880f5e6:	1141                	addi	sp,sp,-16
    e880f5e8:	e022                	sd	s0,0(sp)
    e880f5ea:	842a                	mv	s0,a0
    {
        link->startSeq = (uint8_t) rand();
    e880f5ec:	80000537          	lui	a0,0x80000
    e880f5f0:	fff54513          	not	a0,a0
{
    e880f5f4:	e406                	sd	ra,8(sp)
        link->startSeq = (uint8_t) rand();
    e880f5f6:	4fd6c0ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e880f5fa:	04a408a3          	sb	a0,81(s0)

        iAP2LinkSetDefaultSYNParam (&(link->param));
    e880f5fe:	11440513          	addi	a0,s0,276
    e880f602:	8adff0ef          	jal	ra,e880eeae <iAP2LinkSetDefaultSYNParam>

        iAP2FSMHandleEvent(link->fsm, kiAP2LinkEventAttach);
    e880f606:	6808                	ld	a0,16(s0)
    }
}
    e880f608:	6402                	ld	s0,0(sp)
    e880f60a:	60a2                	ld	ra,8(sp)
        iAP2FSMHandleEvent(link->fsm, kiAP2LinkEventAttach);
    e880f60c:	4585                	li	a1,1
}
    e880f60e:	0141                	addi	sp,sp,16
        iAP2FSMHandleEvent(link->fsm, kiAP2LinkEventAttach);
    e880f610:	1050206f          	j	e8811f14 <iAP2FSMHandleEvent>
    e880f614:	8082                	ret

00000000e880f616 <iAP2LinkDetached>:
**
****************************************************************
*/
void iAP2LinkDetached (iAP2Link_t* link)
{
    if (link != NULL)
    e880f616:	c90d                	beqz	a0,e880f648 <iAP2LinkDetached+0x32>
{
    e880f618:	1141                	addi	sp,sp,-16
    e880f61a:	e406                	sd	ra,8(sp)
    e880f61c:	e022                	sd	s0,0(sp)
    e880f61e:	842a                	mv	s0,a0
    {
        iAP2FSMHandleEvent(link->fsm, kiAP2LinkEventDetach);
    e880f620:	6908                	ld	a0,16(a0)
    e880f622:	45a5                	li	a1,9
    e880f624:	0f1020ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>

        /* Set to default */
        iAP2LinkSetDefaultSYNParam (&(link->param));
    e880f628:	11440513          	addi	a0,s0,276
    e880f62c:	883ff0ef          	jal	ra,e880eeae <iAP2LinkSetDefaultSYNParam>

        link->startSeq = (uint8_t) rand();
    e880f630:	80000537          	lui	a0,0x80000
    e880f634:	fff54513          	not	a0,a0
    e880f638:	4bb6c0ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e880f63c:	04a408a3          	sb	a0,81(s0)
    }
}
    e880f640:	60a2                	ld	ra,8(sp)
    e880f642:	6402                	ld	s0,0(sp)
    e880f644:	0141                	addi	sp,sp,16
    e880f646:	8082                	ret
    e880f648:	8082                	ret

00000000e880f64a <iAP2LinkIsDetached>:
**
****************************************************************
*/
BOOL iAP2LinkIsDetached (iAP2Link_t* link)
{
    if (link && link->fsm &&
    e880f64a:	c901                	beqz	a0,e880f65a <iAP2LinkIsDetached+0x10>
    e880f64c:	691c                	ld	a5,16(a0)
        link->fsm->currentState > kiAP2LinkStateDetached)
    {
        return FALSE;
    }
    return TRUE;
    e880f64e:	4505                	li	a0,1
    if (link && link->fsm &&
    e880f650:	c791                	beqz	a5,e880f65c <iAP2LinkIsDetached+0x12>
    e880f652:	4b88                	lw	a0,16(a5)
        return FALSE;
    e880f654:	00253513          	sltiu	a0,a0,2
    e880f658:	8082                	ret
    return TRUE;
    e880f65a:	4505                	li	a0,1
}
    e880f65c:	8082                	ret

00000000e880f65e <iAP2LinkSendWindowAvailable>:
****************************************************************
*/
BOOL iAP2LinkSendWindowAvailable (iAP2Link_t* link)
{
    BOOL result = FALSE;
    if (!link->bValidSentSeq || !link->bValidRecvAck ||
    e880f65e:	6d3c                	ld	a5,88(a0)
    e880f660:	4719                	li	a4,6
    e880f662:	8b99                	andi	a5,a5,6
    e880f664:	02e79563          	bne	a5,a4,e880f68e <iAP2LinkSendWindowAvailable+0x30>
{
    e880f668:	1141                	addi	sp,sp,-16
    e880f66a:	e022                	sd	s0,0(sp)
    e880f66c:	e406                	sd	ra,8(sp)
    e880f66e:	842a                	mv	s0,a0
        iAP2PacketCalcSeqGap (link->recvAck,
    e880f670:	05454583          	lbu	a1,84(a0) # ffffffff80000054 <__DRAM0_INF_BASE+0xfffffffe80010054>
    e880f674:	05354503          	lbu	a0,83(a0)
    e880f678:	152020ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
    if (!link->bValidSentSeq || !link->bValidRecvAck ||
    e880f67c:	2501                	sext.w	a0,a0
    e880f67e:	11f44783          	lbu	a5,287(s0)
                              link->sentSeq) < link->param.peerMaxOutstandingPackets)
    {
        result = TRUE;
    }
    return result;
}
    e880f682:	60a2                	ld	ra,8(sp)
    e880f684:	6402                	ld	s0,0(sp)
        result = TRUE;
    e880f686:	00f53533          	sltu	a0,a0,a5
}
    e880f68a:	0141                	addi	sp,sp,16
    e880f68c:	8082                	ret
        result = TRUE;
    e880f68e:	4505                	li	a0,1
}
    e880f690:	8082                	ret

00000000e880f692 <iAP2LinkProcessSendBuff>:
    if (link)
    e880f692:	e119                	bnez	a0,e880f698 <iAP2LinkProcessSendBuff+0x6>
    BOOL result = FALSE;
    e880f694:	4501                	li	a0,0
}
    e880f696:	8082                	ret
{
    e880f698:	1101                	addi	sp,sp,-32
    e880f69a:	f891540b          	sdd	s0,s1,(sp),0,4
    e880f69e:	e84a                	sd	s2,16(sp)
    e880f6a0:	ec06                	sd	ra,24(sp)
    e880f6a2:	842a                	mv	s0,a0
    e880f6a4:	0a050493          	addi	s1,a0,160
    e880f6a8:	0b850913          	addi	s2,a0,184
            if (iAP2ListArrayGetCount (link->sessSendPckList[i]) > 0)
    e880f6ac:	6088                	ld	a0,0(s1)
    e880f6ae:	37b020ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
    e880f6b2:	e919                	bnez	a0,e880f6c8 <iAP2LinkProcessSendBuff+0x36>
        for (i = 0; i < kIAP2PacketServiceTypeCount; ++i)
    e880f6b4:	04a1                	addi	s1,s1,8
    e880f6b6:	fe991be3          	bne	s2,s1,e880f6ac <iAP2LinkProcessSendBuff+0x1a>
    BOOL result = FALSE;
    e880f6ba:	4501                	li	a0,0
}
    e880f6bc:	60e2                	ld	ra,24(sp)
    e880f6be:	f891440b          	ldd	s0,s1,(sp),0,4
    e880f6c2:	6942                	ld	s2,16(sp)
    e880f6c4:	6105                	addi	sp,sp,32
    e880f6c6:	8082                	ret
            if (iAP2LinkSendWindowAvailable(link))
    e880f6c8:	8522                	mv	a0,s0
    e880f6ca:	f95ff0ef          	jal	ra,e880f65e <iAP2LinkSendWindowAvailable>
    e880f6ce:	d575                	beqz	a0,e880f6ba <iAP2LinkProcessSendBuff+0x28>
                iAP2FSMHandleEvent(link->fsm, kiAP2LinkEventDataToSend);
    e880f6d0:	6808                	ld	a0,16(s0)
    e880f6d2:	45b5                	li	a1,13
    e880f6d4:	041020ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>
                result = TRUE;
    e880f6d8:	4505                	li	a0,1
    return result;
    e880f6da:	b7cd                	j	e880f6bc <iAP2LinkProcessSendBuff+0x2a>

00000000e880f6dc <iAP2LinkHandleSuspend>:
**      None
**
****************************************************************
*/
void iAP2LinkHandleSuspend (struct iAP2Link_st* link)
{
    e880f6dc:	1141                	addi	sp,sp,-16
    e880f6de:	e022                	sd	s0,0(sp)
    e880f6e0:	e406                	sd	ra,8(sp)
    iAP2LogDbg("%s:%d suspend link=%p(type=%d state=%d)",
    e880f6e2:	691c                	ld	a5,16(a0)
    e880f6e4:	05054703          	lbu	a4,80(a0)
    e880f6e8:	6605                	lui	a2,0x1
{
    e880f6ea:	842a                	mv	s0,a0
    iAP2LogDbg("%s:%d suspend link=%p(type=%d state=%d)",
    e880f6ec:	86aa                	mv	a3,a0
    e880f6ee:	b0c60613          	addi	a2,a2,-1268 # b0c <memcmp-0xe87ff4f4>
    e880f6f2:	00091597          	auipc	a1,0x91
    e880f6f6:	ace58593          	addi	a1,a1,-1330 # e88a01c0 <__FUNCTION__.7541>
    e880f6fa:	00091517          	auipc	a0,0x91
    e880f6fe:	c1e50513          	addi	a0,a0,-994 # e88a0318 <__FUNCTION__.7541+0x158>
    e880f702:	75f020ef          	jal	ra,e8812660 <iAP2LogDbg>
               __FUNCTION__, __LINE__, link, link->type, link->fsm);
    if (link && link->fsm && (link->type == kiAP2LinkTypeDevice))
    e880f706:	cc11                	beqz	s0,e880f722 <iAP2LinkHandleSuspend+0x46>
    e880f708:	6808                	ld	a0,16(s0)
    e880f70a:	cd01                	beqz	a0,e880f722 <iAP2LinkHandleSuspend+0x46>
    e880f70c:	05044703          	lbu	a4,80(s0)
    e880f710:	4785                	li	a5,1
    e880f712:	00f71863          	bne	a4,a5,e880f722 <iAP2LinkHandleSuspend+0x46>
    {
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventSuspend);
    }
}
    e880f716:	6402                	ld	s0,0(sp)
    e880f718:	60a2                	ld	ra,8(sp)
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventSuspend);
    e880f71a:	45d5                	li	a1,21
}
    e880f71c:	0141                	addi	sp,sp,16
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventSuspend);
    e880f71e:	7f60206f          	j	e8811f14 <iAP2FSMHandleEvent>
}
    e880f722:	60a2                	ld	ra,8(sp)
    e880f724:	6402                	ld	s0,0(sp)
    e880f726:	0141                	addi	sp,sp,16
    e880f728:	8082                	ret

00000000e880f72a <iAP2LinkResetSeqAck>:
**      none
**
****************************************************************
*/
void iAP2LinkResetSeqAck (iAP2Link_t* link, BOOL bOnlySend)
{
    e880f72a:	1101                	addi	sp,sp,-32
    e880f72c:	ec06                	sd	ra,24(sp)
    e880f72e:	e422                	sd	s0,8(sp)
    e880f730:	e826                	sd	s1,16(sp)
    e880f732:	842a                	mv	s0,a0
    iAP2ListArrayCleanup (link->sendPckList, _DeletePckCB);
    e880f734:	6d48                	ld	a0,152(a0)
{
    e880f736:	84ae                	mv	s1,a1
    iAP2ListArrayCleanup (link->sendPckList, _DeletePckCB);
    e880f738:	fffff597          	auipc	a1,0xfffff
    e880f73c:	52a58593          	addi	a1,a1,1322 # e880ec62 <_DeletePckCB>
    e880f740:	213020ef          	jal	ra,e8812152 <iAP2ListArrayCleanup>
    _ResetAckedPackets (link);
    link->startSeq        = (uint8_t) rand();
    e880f744:	80000537          	lui	a0,0x80000
    e880f748:	fff54513          	not	a0,a0
    e880f74c:	3a76c0ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e880f750:	04a408a3          	sb	a0,81(s0)
    link->sentSeq         = 0;
    link->bValidSentSeq   = FALSE;
    e880f754:	05844783          	lbu	a5,88(s0)
    link->sentSeq         = 0;
    e880f758:	04041a23          	sh	zero,84(s0)
    link->sentAck         = 0;
    link->bValidSentAck   = FALSE;
    link->numSentSYN      = 0;
    e880f75c:	14043a23          	sd	zero,340(s0)
    link->bValidSentSeq   = FALSE;
    e880f760:	9bcd                	andi	a5,a5,-13
    e880f762:	04f40c23          	sb	a5,88(s0)
    link->numSentSYNACK   = 0;
    link->numResentSYN    = 0;
    e880f766:	16043223          	sd	zero,356(s0)
    link->numResentSYNACK = 0;
    if (!bOnlySend)
    e880f76a:	e08d                	bnez	s1,e880f78c <iAP2LinkResetSeqAck+0x62>
    iAP2ListArrayCleanup (link->sendPckList, _DeletePckCB);
    e880f76c:	6c48                	ld	a0,152(s0)
    e880f76e:	fffff597          	auipc	a1,0xfffff
    e880f772:	4f458593          	addi	a1,a1,1268 # e880ec62 <_DeletePckCB>
    e880f776:	1dd020ef          	jal	ra,e8812152 <iAP2ListArrayCleanup>
    {
        _ResetRecvPackets (link);
        link->recvSeq       = 0;
    e880f77a:	04041923          	sh	zero,82(s0)
        link->bValidRecvSeq = FALSE;
    e880f77e:	05844783          	lbu	a5,88(s0)
        link->recvAck       = 0;
        link->bValidRecvAck = FALSE;
        link->numRecvSYN    = 0;
    e880f782:	14043223          	sd	zero,324(s0)
        link->bValidRecvSeq = FALSE;
    e880f786:	9bf1                	andi	a5,a5,-4
    e880f788:	04f40c23          	sb	a5,88(s0)
        link->numRecvSYNACK = 0;
    }
}
    e880f78c:	60e2                	ld	ra,24(sp)
    e880f78e:	6422                	ld	s0,8(sp)
    e880f790:	64c2                	ld	s1,16(sp)
    e880f792:	6105                	addi	sp,sp,32
    e880f794:	8082                	ret

00000000e880f796 <iAP2LinkPacketForIndex>:
**      iAP2Packet_t*   pointer to packet, NULL if not found.
**
****************************************************************
*/
iAP2Packet_t* iAP2LinkPacketForIndex (uint8_t* listArrayBuffer, uint8_t index)
{
    e880f796:	1141                	addi	sp,sp,-16
    e880f798:	e406                	sd	ra,8(sp)
    iAP2Packet_t** pPck = (iAP2Packet_t**) iAP2ListArrayItemForIndex(listArrayBuffer, index);
    e880f79a:	25b020ef          	jal	ra,e88121f4 <iAP2ListArrayItemForIndex>
    if (pPck)
    e880f79e:	c111                	beqz	a0,e880f7a2 <iAP2LinkPacketForIndex+0xc>
    {
        return *pPck;
    e880f7a0:	6108                	ld	a0,0(a0)
    }
    return NULL;
}
    e880f7a2:	60a2                	ld	ra,8(sp)
    e880f7a4:	0141                	addi	sp,sp,16
    e880f7a6:	8082                	ret

00000000e880f7a8 <_iAP2LinkHandleTimerCancel>:
    if (timer)
    e880f7a8:	cd29                	beqz	a0,e880f802 <_iAP2LinkHandleTimerCancel+0x5a>
{
    e880f7aa:	7159                	addi	sp,sp,-112
        iAP2Packet_t* pTmpPck = &tmpPck;
    e880f7ac:	081c                	addi	a5,sp,16
    e880f7ae:	e43e                	sd	a5,8(sp)
{
    e880f7b0:	f486                	sd	ra,104(sp)
    e880f7b2:	f0a2                	sd	s0,96(sp)
    e880f7b4:	eca6                	sd	s1,88(sp)
    e880f7b6:	84ae                	mv	s1,a1
        iAP2Link_t*  link = iAP2TimeGetContext (timer);
    e880f7b8:	16c030ef          	jal	ra,e8812924 <iAP2TimeGetContext>
    e880f7bc:	842a                	mv	s0,a0
*/
uint8_t iAP2LinkFindPacket (uint8_t*                    listArrayBuffer,
                            iAP2Packet_t**              packet,
                            piAP2ListArrayCompareFunc   func)
{
    return iAP2ListArrayFindItem (listArrayBuffer, packet, func);
    e880f7be:	6d48                	ld	a0,152(a0)
    e880f7c0:	fffff617          	auipc	a2,0xfffff
    e880f7c4:	3de60613          	addi	a2,a2,990 # e880eb9e <_ComparePckTimerIdCB>
    e880f7c8:	002c                	addi	a1,sp,8
        tmpPck.timer = timerID;
    e880f7ca:	02910ca3          	sb	s1,57(sp)
    return iAP2ListArrayFindItem (listArrayBuffer, packet, func);
    e880f7ce:	1b5020ef          	jal	ra,e8812182 <iAP2ListArrayFindItem>
    e880f7d2:	84aa                	mv	s1,a0
        if (item != kiAP2ListArrayInvalidIndex)
    e880f7d4:	0ff00793          	li	a5,255
    e880f7d8:	00f50d63          	beq	a0,a5,e880f7f2 <_iAP2LinkHandleTimerCancel+0x4a>
            iAP2Packet_t* pck = iAP2LinkPacketForIndex (link->sendPckList, item);
    e880f7dc:	85aa                	mv	a1,a0
    e880f7de:	6c48                	ld	a0,152(s0)
                iAP2Packet_t* pck = iAP2LinkPacketForIndex (link->recvPckList, item);
    e880f7e0:	fb7ff0ef          	jal	ra,e880f796 <iAP2LinkPacketForIndex>
                iAP2PacketRemoveTimer (pck);
    e880f7e4:	51e020ef          	jal	ra,e8811d02 <iAP2PacketRemoveTimer>
}
    e880f7e8:	70a6                	ld	ra,104(sp)
    e880f7ea:	7406                	ld	s0,96(sp)
    e880f7ec:	64e6                	ld	s1,88(sp)
    e880f7ee:	6165                	addi	sp,sp,112
    e880f7f0:	8082                	ret
            item = iAP2ListArrayGetFirstItemIndex (link->recvPckList);
    e880f7f2:	6848                	ld	a0,144(s0)
    e880f7f4:	241020ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    e880f7f8:	85aa                	mv	a1,a0
            if (item != kiAP2ListArrayInvalidIndex)
    e880f7fa:	fe9507e3          	beq	a0,s1,e880f7e8 <_iAP2LinkHandleTimerCancel+0x40>
                iAP2Packet_t* pck = iAP2LinkPacketForIndex (link->recvPckList, item);
    e880f7fe:	6848                	ld	a0,144(s0)
    e880f800:	b7c5                	j	e880f7e0 <_iAP2LinkHandleTimerCancel+0x38>
    e880f802:	8082                	ret

00000000e880f804 <iAP2LinkAddPacketAfter>:
*/
uint8_t iAP2LinkAddPacketAfter (uint8_t*        listArrayBuffer,
                                uint8_t         prevItemIndex,
                                iAP2Packet_t**  packet)
{
    return iAP2ListArrayAddItemAfter (listArrayBuffer, prevItemIndex, packet);
    e880f804:	2710206f          	j	e8812274 <iAP2ListArrayAddItemAfter>

00000000e880f808 <_iAP2LinkSendPacketCommon.isra.12>:
static void _iAP2LinkSendPacketCommon (iAP2Link_t*    link,
    e880f808:	7179                	addi	sp,sp,-48
    e880f80a:	fa91540b          	sdd	s0,s1,(sp),1,4
    e880f80e:	f406                	sd	ra,40(sp)
    e880f810:	f04a                	sd	s2,32(sp)
    e880f812:	e42e                	sd	a1,8(sp)
    e880f814:	842a                	mv	s0,a0
    e880f816:	872e                	mv	a4,a1
    if (link != NULL && packet != NULL)
    e880f818:	c969                	beqz	a0,e880f8ea <_iAP2LinkSendPacketCommon.isra.12+0xe2>
    e880f81a:	c9e1                	beqz	a1,e880f8ea <_iAP2LinkSendPacketCommon.isra.12+0xe2>
        if ((packet->pckData->ctl & kIAP2PacketControlMaskACK) != 0)
    e880f81c:	7d9c                	ld	a5,56(a1)
    e880f81e:	84b2                	mv	s1,a2
    e880f820:	8936                	mv	s2,a3
    e880f822:	0047c703          	lbu	a4,4(a5)
    e880f826:	04077713          	andi	a4,a4,64
    e880f82a:	c70d                	beqz	a4,e880f854 <_iAP2LinkSendPacketCommon.isra.12+0x4c>
            if (packet->pckData->ack != link->recvSeq)
    e880f82c:	05254703          	lbu	a4,82(a0) # ffffffff80000052 <__DRAM0_INF_BASE+0xfffffffe80010052>
    e880f830:	0067c683          	lbu	a3,6(a5)
    e880f834:	00e68463          	beq	a3,a4,e880f83c <_iAP2LinkSendPacketCommon.isra.12+0x34>
                packet->pckData->ack = link->recvSeq;
    e880f838:	00e78323          	sb	a4,6(a5)
            link->sentAck = packet->pckData->ack;
    e880f83c:	67a2                	ld	a5,8(sp)
    e880f83e:	7f9c                	ld	a5,56(a5)
    e880f840:	0067c783          	lbu	a5,6(a5)
    e880f844:	04f40aa3          	sb	a5,85(s0)
            link->bValidSentAck = TRUE;
    e880f848:	05844783          	lbu	a5,88(s0)
    e880f84c:	0087e793          	ori	a5,a5,8
    e880f850:	04f40c23          	sb	a5,88(s0)
        curTimeMs = iAP2TimeGetCurTimeMs();
    e880f854:	7a1020ef          	jal	ra,e88127f4 <iAP2TimeGetCurTimeMs>
        packet->timeStamp = curTimeMs;
    e880f858:	67a2                	ld	a5,8(sp)
    e880f85a:	d388                	sw	a0,32(a5)
        if (packet->pckData->ctl & kIAP2PacketControlMaskACK)
    e880f85c:	7f9c                	ld	a5,56(a5)
    e880f85e:	0047c783          	lbu	a5,4(a5)
    e880f862:	0407f793          	andi	a5,a5,64
    e880f866:	cb89                	beqz	a5,e880f878 <_iAP2LinkSendPacketCommon.isra.12+0x70>
            iAP2TimeCancelTimer(link->mainTimer, link->sendAckTimeoutID);
    e880f868:	05744583          	lbu	a1,87(s0)
    e880f86c:	7028                	ld	a0,96(s0)
    e880f86e:	11c030ef          	jal	ra,e881298a <iAP2TimeCancelTimer>
            link->sendAckTimeoutID = INVALID_TIMEOUT_ID;
    e880f872:	57fd                	li	a5,-1
    e880f874:	04f40ba3          	sb	a5,87(s0)
        if (!bWaitSend)
    e880f878:	65a2                	ld	a1,8(sp)
    e880f87a:	06091663          	bnez	s2,e880f8e6 <_iAP2LinkSendPacketCommon.isra.12+0xde>
            (*link->sendPacketCB) (link, packet);
    e880f87e:	6c1c                	ld	a5,24(s0)
            (*link->sendPacketWaitCB) (link, packet);
    e880f880:	8522                	mv	a0,s0
    e880f882:	9782                	jalr	a5
        if (!bResend)
    e880f884:	e0a1                	bnez	s1,e880f8c4 <_iAP2LinkSendPacketCommon.isra.12+0xbc>
            link->sentSeq = packet->pckData->seq;
    e880f886:	6522                	ld	a0,8(sp)
    e880f888:	7d1c                	ld	a5,56(a0)
    e880f88a:	0057c783          	lbu	a5,5(a5)
    e880f88e:	04f40a23          	sb	a5,84(s0)
            link->bValidSentSeq = TRUE;
    e880f892:	05844783          	lbu	a5,88(s0)
    e880f896:	0047e793          	ori	a5,a5,4
    e880f89a:	04f40c23          	sb	a5,88(s0)
            if (iAP2PacketIsACKOnly(packet))
    e880f89e:	21d010ef          	jal	ra,e88112ba <iAP2PacketIsACKOnly>
    e880f8a2:	c501                	beqz	a0,e880f8aa <_iAP2LinkSendPacketCommon.isra.12+0xa2>
                packet->seqPlus = 0;    //by lzh
    e880f8a4:	67a2                	ld	a5,8(sp)
    e880f8a6:	020783a3          	sb	zero,39(a5)
            iAP2LinkAddPacketAfter (link->sendPckList,
    e880f8aa:	6c44                	ld	s1,152(s0)
    e880f8ac:	8526                	mv	a0,s1
    e880f8ae:	195020ef          	jal	ra,e8812242 <iAP2ListArrayGetLastItemIndex>
    e880f8b2:	85aa                	mv	a1,a0
    e880f8b4:	0030                	addi	a2,sp,8
    e880f8b6:	8526                	mv	a0,s1
    e880f8b8:	f4dff0ef          	jal	ra,e880f804 <iAP2LinkAddPacketAfter>
            if (iAP2PacketRequireACK(packet))
    e880f8bc:	6522                	ld	a0,8(sp)
    e880f8be:	06e020ef          	jal	ra,e881192c <iAP2PacketRequireACK>
    e880f8c2:	cd01                	beqz	a0,e880f8da <_iAP2LinkSendPacketCommon.isra.12+0xd2>
                uint8_t timerID = iAP2TimeCallbackAfter(link->mainTimer,
    e880f8c4:	11a45603          	lhu	a2,282(s0)
    e880f8c8:	7028                	ld	a0,96(s0)
    e880f8ca:	459d                	li	a1,7
    e880f8cc:	05c030ef          	jal	ra,e8812928 <iAP2TimeCallbackAfter>
                iAP2PacketAssignTimer (packet, timerID);
    e880f8d0:	3c05358b          	extu	a1,a0,15,0
    e880f8d4:	6522                	ld	a0,8(sp)
    e880f8d6:	3f0020ef          	jal	ra,e8811cc6 <iAP2PacketAssignTimer>
}
    e880f8da:	70a2                	ld	ra,40(sp)
    e880f8dc:	fa91440b          	ldd	s0,s1,(sp),1,4
    e880f8e0:	7902                	ld	s2,32(sp)
    e880f8e2:	6145                	addi	sp,sp,48
    e880f8e4:	8082                	ret
            (*link->sendPacketWaitCB) (link, packet);
    e880f8e6:	701c                	ld	a5,32(s0)
    e880f8e8:	bf61                	j	e880f880 <_iAP2LinkSendPacketCommon.isra.12+0x78>
        iAP2LogError("%s:%d Invalid link(%p) or packet(%p)\n",
    e880f8ea:	6605                	lui	a2,0x1
    e880f8ec:	86a2                	mv	a3,s0
    e880f8ee:	d2860613          	addi	a2,a2,-728 # d28 <memcmp-0xe87ff2d8>
    e880f8f2:	00091597          	auipc	a1,0x91
    e880f8f6:	8ae58593          	addi	a1,a1,-1874 # e88a01a0 <TWO52+0x5a8>
    e880f8fa:	00091517          	auipc	a0,0x91
    e880f8fe:	8de50513          	addi	a0,a0,-1826 # e88a01d8 <__FUNCTION__.7541+0x18>
    e880f902:	5a3020ef          	jal	ra,e88126a4 <iAP2LogError>
    e880f906:	bfd1                	j	e880f8da <_iAP2LinkSendPacketCommon.isra.12+0xd2>

00000000e880f908 <iAP2LinkSendPacket>:
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880f908:	4681                	li	a3,0
    e880f90a:	effff06f          	j	e880f808 <_iAP2LinkSendPacketCommon.isra.12>

00000000e880f90e <iAP2LinkActionSendACK>:
{
    e880f90e:	7139                	addi	sp,sp,-64
    e880f910:	f891540b          	sdd	s0,s1,(sp),0,4
    e880f914:	fc06                	sd	ra,56(sp)
    e880f916:	f85a                	sd	s6,48(sp)
    e880f918:	fb31590b          	sdd	s2,s3,(sp),1,4
    e880f91c:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e880f920:	842a                	mv	s0,a0
    e880f922:	84ae                	mv	s1,a1
    assert(fsm);
    e880f924:	e11d                	bnez	a0,e880f94a <iAP2LinkActionSendACK+0x3c>
    e880f926:	02f00593          	li	a1,47
    e880f92a:	00091517          	auipc	a0,0x91
    e880f92e:	87650513          	addi	a0,a0,-1930 # e88a01a0 <TWO52+0x5a8>
    e880f932:	2476c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880f936:	00150593          	addi	a1,a0,1
    e880f93a:	2d700613          	li	a2,727
    e880f93e:	00091517          	auipc	a0,0x91
    e880f942:	87250513          	addi	a0,a0,-1934 # e88a01b0 <TWO52+0x5b8>
    e880f946:	1816c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880f94a:	e09d                	bnez	s1,e880f970 <iAP2LinkActionSendACK+0x62>
    e880f94c:	02f00593          	li	a1,47
    e880f950:	00091517          	auipc	a0,0x91
    e880f954:	85050513          	addi	a0,a0,-1968 # e88a01a0 <TWO52+0x5a8>
    e880f958:	2216c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880f95c:	00150593          	addi	a1,a0,1
    e880f960:	2d800613          	li	a2,728
    e880f964:	00091517          	auipc	a0,0x91
    e880f968:	84c50513          	addi	a0,a0,-1972 # e88a01b0 <TWO52+0x5b8>
    e880f96c:	15b6c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880f970:	47d9                	li	a5,22
    e880f972:	c09c                	sw	a5,0(s1)
    link = (iAP2Link_t*) fsm->data;
    e880f974:	6c00                	ld	s0,24(s0)
    iAP2TimeCancelTimer(link->mainTimer, link->sendAckTimeoutID);
    e880f976:	7028                	ld	a0,96(s0)
    e880f978:	05744583          	lbu	a1,87(s0)
    e880f97c:	00e030ef          	jal	ra,e881298a <iAP2TimeCancelTimer>
    link->sendAckTimeoutID = INVALID_TIMEOUT_ID;
    e880f980:	57fd                	li	a5,-1
    if (link->recvPckList && iAP2ListArrayGetCount(link->recvPckList) > 0)
    e880f982:	6848                	ld	a0,144(s0)
    link->sendAckTimeoutID = INVALID_TIMEOUT_ID;
    e880f984:	04f40ba3          	sb	a5,87(s0)
    if (link->recvPckList && iAP2ListArrayGetCount(link->recvPckList) > 0)
    e880f988:	c159                	beqz	a0,e880fa0e <iAP2LinkActionSendACK+0x100>
    e880f98a:	09f020ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
    e880f98e:	c141                	beqz	a0,e880fa0e <iAP2LinkActionSendACK+0x100>
        uint8_t item = iAP2ListArrayGetFirstItemIndex (link->recvPckList);
    e880f990:	6848                	ld	a0,144(s0)
        uint8_t lowSeqDiff = 0xff;
    e880f992:	0ff00493          	li	s1,255
        while (item != kiAP2ListArrayInvalidIndex)
    e880f996:	0ff00993          	li	s3,255
        uint8_t item = iAP2ListArrayGetFirstItemIndex (link->recvPckList);
    e880f99a:	09b020ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    e880f99e:	892a                	mv	s2,a0
        while (item != kiAP2ListArrayInvalidIndex)
    e880f9a0:	03391863          	bne	s2,s3,e880f9d0 <iAP2LinkActionSendACK+0xc2>
        if (lowSeqDiff > 1 && lowSeqDiff <= link->param.maxOutstandingPackets)
    e880f9a4:	4785                	li	a5,1
    e880f9a6:	0697f463          	bgeu	a5,s1,e880fa0e <iAP2LinkActionSendACK+0x100>
    e880f9aa:	11544783          	lbu	a5,277(s0)
    e880f9ae:	0697e063          	bltu	a5,s1,e880fa0e <iAP2LinkActionSendACK+0x100>
        if (iAP2ListArrayGetCount(link->recvPckList))
    e880f9b2:	6848                	ld	a0,144(s0)
    e880f9b4:	075020ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
    e880f9b8:	e541                	bnez	a0,e880fa40 <iAP2LinkActionSendACK+0x132>
            assert(FALSE);
    e880f9ba:	02f00593          	li	a1,47
    e880f9be:	00090517          	auipc	a0,0x90
    e880f9c2:	7e250513          	addi	a0,a0,2018 # e88a01a0 <TWO52+0x5a8>
    e880f9c6:	1b36c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880f9ca:	31c00613          	li	a2,796
    e880f9ce:	a229                	j	e880fad8 <iAP2LinkActionSendACK+0x1ca>
            iAP2Packet_t* pck = iAP2LinkPacketForIndex (link->recvPckList, item);
    e880f9d0:	6848                	ld	a0,144(s0)
    e880f9d2:	85ca                	mv	a1,s2
    e880f9d4:	dc3ff0ef          	jal	ra,e880f796 <iAP2LinkPacketForIndex>
            if (pck)
    e880f9d8:	c50d                	beqz	a0,e880fa02 <iAP2LinkActionSendACK+0xf4>
                                   ? iAP2PacketCalcSeqGap (link->recvSeq, pck->pckData->seq)
    e880f9da:	05844703          	lbu	a4,88(s0)
                uint8_t seqDiff = (link->bValidRecvSeq
    e880f9de:	08000793          	li	a5,128
    e880f9e2:	8b05                	andi	a4,a4,1
    e880f9e4:	cb09                	beqz	a4,e880f9f6 <iAP2LinkActionSendACK+0xe8>
                                   ? iAP2PacketCalcSeqGap (link->recvSeq, pck->pckData->seq)
    e880f9e6:	7d1c                	ld	a5,56(a0)
    e880f9e8:	05244503          	lbu	a0,82(s0)
    e880f9ec:	0057c583          	lbu	a1,5(a5)
    e880f9f0:	5db010ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
    e880f9f4:	87aa                	mv	a5,a0
                if (seqDiff < lowSeqDiff)
    e880f9f6:	8726                	mv	a4,s1
    e880f9f8:	0097f363          	bgeu	a5,s1,e880f9fe <iAP2LinkActionSendACK+0xf0>
    e880f9fc:	873e                	mv	a4,a5
    e880f9fe:	0ff77493          	andi	s1,a4,255
            item = iAP2ListArrayGetNextItemIndex (link->recvPckList, item);
    e880fa02:	6848                	ld	a0,144(s0)
    e880fa04:	85ca                	mv	a1,s2
    e880fa06:	04b020ef          	jal	ra,e8812250 <iAP2ListArrayGetNextItemIndex>
    e880fa0a:	892a                	mv	s2,a0
    e880fa0c:	bf51                	j	e880f9a0 <iAP2LinkActionSendACK+0x92>
        iAP2Packet_t* pck = iAP2PacketCreateACKPacket (link,
    e880fa0e:	05244603          	lbu	a2,82(s0)
    e880fa12:	05444583          	lbu	a1,84(s0)
    e880fa16:	4681                	li	a3,0
    e880fa18:	4781                	li	a5,0
    e880fa1a:	4701                	li	a4,0
    e880fa1c:	8522                	mv	a0,s0
    e880fa1e:	3cf010ef          	jal	ra,e88115ec <iAP2PacketCreateACKPacket>
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880fa22:	85aa                	mv	a1,a0
    e880fa24:	4681                	li	a3,0
    e880fa26:	4601                	li	a2,0
    e880fa28:	8522                	mv	a0,s0
}
    e880fa2a:	f891440b          	ldd	s0,s1,(sp),0,4
    e880fa2e:	70e2                	ld	ra,56(sp)
    e880fa30:	7b42                	ld	s6,48(sp)
    e880fa32:	fb31490b          	ldd	s2,s3,(sp),1,4
    e880fa36:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e880fa3a:	6121                	addi	sp,sp,64
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880fa3c:	dcdff06f          	j	e880f808 <_iAP2LinkSendPacketCommon.isra.12>
    if (link)
    e880fa40:	c051                	beqz	s0,e880fac4 <iAP2LinkActionSendACK+0x1b6>
        uint8_t  max = iAP2ListArrayGetCount(link->recvPckList);
    e880fa42:	6848                	ld	a0,144(s0)
    e880fa44:	7e4020ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
    e880fa48:	8a2a                	mv	s4,a0
        if (max > iAP2LinkGetMaxSendPayloadSize (link))
    e880fa4a:	8522                	mv	a0,s0
    e880fa4c:	b55ff0ef          	jal	ra,e880f5a0 <iAP2LinkGetMaxSendPayloadSize>
    e880fa50:	2501                	sext.w	a0,a0
    e880fa52:	000a079b          	sext.w	a5,s4
    e880fa56:	00f57463          	bgeu	a0,a5,e880fa5e <iAP2LinkActionSendACK+0x150>
            max = iAP2LinkGetMaxSendPayloadSize (link);
    e880fa5a:	0ff57a13          	andi	s4,a0,255
        packet = iAP2PacketCreateEAKPacket (link,
    e880fa5e:	05244603          	lbu	a2,82(s0)
    e880fa62:	05444583          	lbu	a1,84(s0)
    e880fa66:	000a071b          	sext.w	a4,s4
    e880fa6a:	4681                	li	a3,0
    e880fa6c:	8522                	mv	a0,s0
    e880fa6e:	441010ef          	jal	ra,e88116ae <iAP2PacketCreateEAKPacket>
    e880fa72:	8aaa                	mv	s5,a0
        if (packet)
    e880fa74:	c921                	beqz	a0,e880fac4 <iAP2LinkActionSendACK+0x1b6>
            uint8_t* pt = packet->pckData->data;
    e880fa76:	7d1c                	ld	a5,56(a0)
            uint8_t  item = iAP2ListArrayGetFirstItemIndex (link->recvPckList);
    e880fa78:	6848                	ld	a0,144(s0)
            uint8_t  count = 0;
    e880fa7a:	4901                	li	s2,0
            uint8_t* pt = packet->pckData->data;
    e880fa7c:	00978493          	addi	s1,a5,9
            uint8_t  item = iAP2ListArrayGetFirstItemIndex (link->recvPckList);
    e880fa80:	7b4020ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    e880fa84:	89aa                	mv	s3,a0
            while (count < max && item != kiAP2ListArrayInvalidIndex)
    e880fa86:	0ff00b13          	li	s6,255
    e880fa8a:	01497463          	bgeu	s2,s4,e880fa92 <iAP2LinkActionSendACK+0x184>
    e880fa8e:	01699663          	bne	s3,s6,e880fa9a <iAP2LinkActionSendACK+0x18c>
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880fa92:	4681                	li	a3,0
    e880fa94:	4601                	li	a2,0
    e880fa96:	85d6                	mv	a1,s5
    e880fa98:	bf41                	j	e880fa28 <iAP2LinkActionSendACK+0x11a>
                iAP2Packet_t* pck = iAP2LinkPacketForIndex (link->recvPckList, item);
    e880fa9a:	6848                	ld	a0,144(s0)
    e880fa9c:	85ce                	mv	a1,s3
    e880fa9e:	cf9ff0ef          	jal	ra,e880f796 <iAP2LinkPacketForIndex>
                if (pck)
    e880faa2:	c919                	beqz	a0,e880fab8 <iAP2LinkActionSendACK+0x1aa>
                    *(pt++) = pck->pckData->seq;
    e880faa4:	7d18                	ld	a4,56(a0)
    e880faa6:	87a6                	mv	a5,s1
                    ++count;
    e880faa8:	2905                	addiw	s2,s2,1
                    *(pt++) = pck->pckData->seq;
    e880faaa:	00574703          	lbu	a4,5(a4)
                    ++count;
    e880faae:	0ff97913          	andi	s2,s2,255
                    *(pt++) = pck->pckData->seq;
    e880fab2:	1817d70b          	sbia	a4,(a5),1,0
    e880fab6:	84be                	mv	s1,a5
                item = iAP2ListArrayGetNextItemIndex (link->recvPckList, item);
    e880fab8:	6848                	ld	a0,144(s0)
    e880faba:	85ce                	mv	a1,s3
    e880fabc:	794020ef          	jal	ra,e8812250 <iAP2ListArrayGetNextItemIndex>
    e880fac0:	89aa                	mv	s3,a0
    e880fac2:	b7e1                	j	e880fa8a <iAP2LinkActionSendACK+0x17c>
                assert(FALSE);
    e880fac4:	02f00593          	li	a1,47
    e880fac8:	00090517          	auipc	a0,0x90
    e880facc:	6d850513          	addi	a0,a0,1752 # e88a01a0 <TWO52+0x5a8>
    e880fad0:	0a96c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880fad4:	31700613          	li	a2,791
}
    e880fad8:	f891440b          	ldd	s0,s1,(sp),0,4
    e880fadc:	70e2                	ld	ra,56(sp)
    e880fade:	7b42                	ld	s6,48(sp)
    e880fae0:	fb31490b          	ldd	s2,s3,(sp),1,4
    e880fae4:	fd514a0b          	ldd	s4,s5,(sp),2,4
            assert(FALSE);
    e880fae8:	00150593          	addi	a1,a0,1
    e880faec:	00090517          	auipc	a0,0x90
    e880faf0:	6c450513          	addi	a0,a0,1732 # e88a01b0 <TWO52+0x5b8>
}
    e880faf4:	6121                	addi	sp,sp,64
            assert(FALSE);
    e880faf6:	7d06c06f          	j	e887c2c6 <eLIBs_printf>

00000000e880fafa <iAP2LinkActionResendMissing>:
{
    e880fafa:	7175                	addi	sp,sp,-144
    e880fafc:	e122                	sd	s0,128(sp)
    e880fafe:	f4ce                	sd	s3,104(sp)
    e880fb00:	e506                	sd	ra,136(sp)
    e880fb02:	fca6                	sd	s1,120(sp)
    e880fb04:	f8ca                	sd	s2,112(sp)
    e880fb06:	f0d2                	sd	s4,96(sp)
    e880fb08:	ecd6                	sd	s5,88(sp)
    e880fb0a:	e8da                	sd	s6,80(sp)
    e880fb0c:	e4de                	sd	s7,72(sp)
    e880fb0e:	e0e2                	sd	s8,64(sp)
    e880fb10:	fc66                	sd	s9,56(sp)
    e880fb12:	f86a                	sd	s10,48(sp)
    e880fb14:	f46e                	sd	s11,40(sp)
    e880fb16:	842a                	mv	s0,a0
    e880fb18:	89ae                	mv	s3,a1
    assert(fsm);
    e880fb1a:	e11d                	bnez	a0,e880fb40 <iAP2LinkActionResendMissing+0x46>
    e880fb1c:	02f00593          	li	a1,47
    e880fb20:	00090517          	auipc	a0,0x90
    e880fb24:	68050513          	addi	a0,a0,1664 # e88a01a0 <TWO52+0x5a8>
    e880fb28:	0516c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880fb2c:	00150593          	addi	a1,a0,1
    e880fb30:	33000613          	li	a2,816
    e880fb34:	00090517          	auipc	a0,0x90
    e880fb38:	67c50513          	addi	a0,a0,1660 # e88a01b0 <TWO52+0x5b8>
    e880fb3c:	78a6c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880fb40:	02099463          	bnez	s3,e880fb68 <iAP2LinkActionResendMissing+0x6e>
    e880fb44:	02f00593          	li	a1,47
    e880fb48:	00090517          	auipc	a0,0x90
    e880fb4c:	65850513          	addi	a0,a0,1624 # e88a01a0 <TWO52+0x5a8>
    e880fb50:	0296c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880fb54:	00150593          	addi	a1,a0,1
    e880fb58:	33100613          	li	a2,817
    e880fb5c:	00090517          	auipc	a0,0x90
    e880fb60:	65450513          	addi	a0,a0,1620 # e88a01b0 <TWO52+0x5b8>
    e880fb64:	7626c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880fb68:	47d9                	li	a5,22
    e880fb6a:	00f9a023          	sw	a5,0(s3)
    link = (iAP2Link_t*) fsm->data;
    e880fb6e:	6c00                	ld	s0,24(s0)
    missing    = iAP2PacketGetMissingSeqFromEAK (eakPacket,
    e880fb70:	0850                	addi	a2,sp,20
    missingLen = 0;
    e880fb72:	ca02                	sw	zero,20(sp)
    missing    = iAP2PacketGetMissingSeqFromEAK (eakPacket,
    e880fb74:	11f44583          	lbu	a1,287(s0)
    e880fb78:	6448                	ld	a0,136(s0)
    e880fb7a:	467010ef          	jal	ra,e88117e0 <iAP2PacketGetMissingSeqFromEAK>
    e880fb7e:	84aa                	mv	s1,a0
    if (missing != NULL && missingLen > 0)
    e880fb80:	cd29                	beqz	a0,e880fbda <iAP2LinkActionResendMissing+0xe0>
    e880fb82:	47d2                	lw	a5,20(sp)
    e880fb84:	c7b9                	beqz	a5,e880fbd2 <iAP2LinkActionResendMissing+0xd8>
        uint8_t*      ptEnd = pt + missingLen;
    e880fb86:	7c07b78b          	extu	a5,a5,31,0
    e880fb8a:	97aa                	add	a5,a5,a0
        iAP2Packet_t* pTmpPck = iAP2PacketCreateEmptySendPacket (link);
    e880fb8c:	8522                	mv	a0,s0
        uint8_t*      ptEnd = pt + missingLen;
    e880fb8e:	e43e                	sd	a5,8(sp)
        iAP2Packet_t* pTmpPck = iAP2PacketCreateEmptySendPacket (link);
    e880fb90:	796010ef          	jal	ra,e8811326 <iAP2PacketCreateEmptySendPacket>
    e880fb94:	ec2a                	sd	a0,24(sp)
        while (pt < ptEnd)
    e880fb96:	8926                	mv	s2,s1
        pTmpPck->link = link;
    e880fb98:	e100                	sd	s0,0(a0)
            if (item != kiAP2ListArrayInvalidIndex)
    e880fb9a:	0ff00c13          	li	s8,255
                    iAP2ListArrayDeleteItem(link->sendPckList, item, _DeletePckCB);
    e880fb9e:	fffffc97          	auipc	s9,0xfffff
    e880fba2:	0c4c8c93          	addi	s9,s9,196 # e880ec62 <_DeletePckCB>
                        iAP2LogError("%s:%d %s Resend too many times!\n",
    e880fba6:	00090a97          	auipc	s5,0x90
    e880fbaa:	6aaa8a93          	addi	s5,s5,1706 # e88a0250 <__FUNCTION__.7541+0x90>
    e880fbae:	00090b17          	auipc	s6,0x90
    e880fbb2:	5f2b0b13          	addi	s6,s6,1522 # e88a01a0 <TWO52+0x5a8>
    e880fbb6:	00090d17          	auipc	s10,0x90
    e880fbba:	6cad0d13          	addi	s10,s10,1738 # e88a0280 <__FUNCTION__.7541+0xc0>
    e880fbbe:	00090d97          	auipc	s11,0x90
    e880fbc2:	6aad8d93          	addi	s11,s11,1706 # e88a0268 <__FUNCTION__.7541+0xa8>
        while (pt < ptEnd)
    e880fbc6:	67a2                	ld	a5,8(sp)
    e880fbc8:	6562                	ld	a0,24(sp)
    e880fbca:	02f96763          	bltu	s2,a5,e880fbf8 <iAP2LinkActionResendMissing+0xfe>
        iAP2PacketDelete (pTmpPck);
    e880fbce:	07d010ef          	jal	ra,e881144a <iAP2PacketDelete>
        iAP2BuffPoolReturn (link->buffPool, missing);
    e880fbd2:	6048                	ld	a0,128(s0)
    e880fbd4:	85a6                	mv	a1,s1
    e880fbd6:	204020ef          	jal	ra,e8811dda <iAP2BuffPoolReturn>
}
    e880fbda:	60aa                	ld	ra,136(sp)
    e880fbdc:	640a                	ld	s0,128(sp)
    e880fbde:	74e6                	ld	s1,120(sp)
    e880fbe0:	7946                	ld	s2,112(sp)
    e880fbe2:	79a6                	ld	s3,104(sp)
    e880fbe4:	7a06                	ld	s4,96(sp)
    e880fbe6:	6ae6                	ld	s5,88(sp)
    e880fbe8:	6b46                	ld	s6,80(sp)
    e880fbea:	6ba6                	ld	s7,72(sp)
    e880fbec:	6c06                	ld	s8,64(sp)
    e880fbee:	7ce2                	ld	s9,56(sp)
    e880fbf0:	7d42                	ld	s10,48(sp)
    e880fbf2:	7da2                	ld	s11,40(sp)
    e880fbf4:	6149                	addi	sp,sp,144
    e880fbf6:	8082                	ret
            pTmpPck->pckData->seq = *pt;
    e880fbf8:	7d1c                	ld	a5,56(a0)
    e880fbfa:	00094703          	lbu	a4,0(s2)
    return iAP2ListArrayFindItem (listArrayBuffer, packet, func);
    e880fbfe:	fffff617          	auipc	a2,0xfffff
    e880fc02:	fee60613          	addi	a2,a2,-18 # e880ebec <_iAP2LinkComparePacketSeq>
    e880fc06:	082c                	addi	a1,sp,24
            pTmpPck->pckData->seq = *pt;
    e880fc08:	00e782a3          	sb	a4,5(a5)
    return iAP2ListArrayFindItem (listArrayBuffer, packet, func);
    e880fc0c:	6c48                	ld	a0,152(s0)
    e880fc0e:	574020ef          	jal	ra,e8812182 <iAP2ListArrayFindItem>
    e880fc12:	8a2a                	mv	s4,a0
            if (item != kiAP2ListArrayInvalidIndex)
    e880fc14:	05850a63          	beq	a0,s8,e880fc68 <iAP2LinkActionResendMissing+0x16e>
                iAP2Packet_t* pck = iAP2LinkPacketForIndex (link->sendPckList, item);
    e880fc18:	85aa                	mv	a1,a0
    e880fc1a:	6c48                	ld	a0,152(s0)
    e880fc1c:	b7bff0ef          	jal	ra,e880f796 <iAP2LinkPacketForIndex>
    e880fc20:	8baa                	mv	s7,a0
                assert(pck);
    e880fc22:	e105                	bnez	a0,e880fc42 <iAP2LinkActionResendMissing+0x148>
    e880fc24:	02f00593          	li	a1,47
    e880fc28:	855a                	mv	a0,s6
    e880fc2a:	74e6c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880fc2e:	00150593          	addi	a1,a0,1
    e880fc32:	35300613          	li	a2,851
    e880fc36:	00090517          	auipc	a0,0x90
    e880fc3a:	57a50513          	addi	a0,a0,1402 # e88a01b0 <TWO52+0x5b8>
    e880fc3e:	6886c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
                if (!iAP2PacketIsACKOnly(pck))
    e880fc42:	855e                	mv	a0,s7
    e880fc44:	676010ef          	jal	ra,e88112ba <iAP2PacketIsACKOnly>
    e880fc48:	e129                	bnez	a0,e880fc8a <iAP2LinkActionResendMissing+0x190>
                    if (pck->retransmitCount < link->param.maxRetransmissions)
    e880fc4a:	028bc703          	lbu	a4,40(s7)
    e880fc4e:	11644683          	lbu	a3,278(s0)
    e880fc52:	00d77d63          	bgeu	a4,a3,e880fc6c <iAP2LinkActionResendMissing+0x172>
                        ++(pck->retransmitCount);
    e880fc56:	2705                	addiw	a4,a4,1
    e880fc58:	02eb8423          	sb	a4,40(s7)
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880fc5c:	4681                	li	a3,0
    e880fc5e:	4605                	li	a2,1
    e880fc60:	85de                	mv	a1,s7
    e880fc62:	8522                	mv	a0,s0
    e880fc64:	ba5ff0ef          	jal	ra,e880f808 <_iAP2LinkSendPacketCommon.isra.12>
            ++pt;
    e880fc68:	0905                	addi	s2,s2,1
    e880fc6a:	bfb1                	j	e880fbc6 <iAP2LinkActionResendMissing+0xcc>
                        iAP2LogError("%s:%d %s Resend too many times!\n",
    e880fc6c:	05044783          	lbu	a5,80(s0)
    e880fc70:	86ee                	mv	a3,s11
    e880fc72:	37000613          	li	a2,880
    e880fc76:	40fa968b          	mveqz	a3,s5,a5
    e880fc7a:	85da                	mv	a1,s6
    e880fc7c:	856a                	mv	a0,s10
    e880fc7e:	227020ef          	jal	ra,e88126a4 <iAP2LogError>
                        *nextEvent = kiAP2LinkEventMaxResend;
    e880fc82:	47b9                	li	a5,14
    e880fc84:	00f9a023          	sw	a5,0(s3)
    e880fc88:	b7c5                	j	e880fc68 <iAP2LinkActionResendMissing+0x16e>
                    iAP2ListArrayDeleteItem(link->sendPckList, item, _DeletePckCB);
    e880fc8a:	6c48                	ld	a0,152(s0)
    e880fc8c:	8666                	mv	a2,s9
    e880fc8e:	85d2                	mv	a1,s4
    e880fc90:	786020ef          	jal	ra,e8812416 <iAP2ListArrayDeleteItem>
    e880fc94:	bfd1                	j	e880fc68 <iAP2LinkActionResendMissing+0x16e>

00000000e880fc96 <iAP2LinkActionResendData>:
{
    e880fc96:	7159                	addi	sp,sp,-112
    e880fc98:	f0a2                	sd	s0,96(sp)
    e880fc9a:	e4ce                	sd	s3,72(sp)
    e880fc9c:	f486                	sd	ra,104(sp)
    e880fc9e:	eca6                	sd	s1,88(sp)
    e880fca0:	e8ca                	sd	s2,80(sp)
    e880fca2:	e0d2                	sd	s4,64(sp)
    e880fca4:	fc56                	sd	s5,56(sp)
    e880fca6:	f85a                	sd	s6,48(sp)
    e880fca8:	f45e                	sd	s7,40(sp)
    e880fcaa:	f062                	sd	s8,32(sp)
    e880fcac:	ec66                	sd	s9,24(sp)
    e880fcae:	e86a                	sd	s10,16(sp)
    e880fcb0:	e46e                	sd	s11,8(sp)
    e880fcb2:	842a                	mv	s0,a0
    e880fcb4:	89ae                	mv	s3,a1
    assert(fsm);
    e880fcb6:	e11d                	bnez	a0,e880fcdc <iAP2LinkActionResendData+0x46>
    e880fcb8:	02f00593          	li	a1,47
    e880fcbc:	00090517          	auipc	a0,0x90
    e880fcc0:	4e450513          	addi	a0,a0,1252 # e88a01a0 <TWO52+0x5a8>
    e880fcc4:	6b46c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880fcc8:	00150593          	addi	a1,a0,1
    e880fccc:	39600613          	li	a2,918
    e880fcd0:	00090517          	auipc	a0,0x90
    e880fcd4:	4e050513          	addi	a0,a0,1248 # e88a01b0 <TWO52+0x5b8>
    e880fcd8:	5ee6c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880fcdc:	02099463          	bnez	s3,e880fd04 <iAP2LinkActionResendData+0x6e>
    e880fce0:	02f00593          	li	a1,47
    e880fce4:	00090517          	auipc	a0,0x90
    e880fce8:	4bc50513          	addi	a0,a0,1212 # e88a01a0 <TWO52+0x5a8>
    e880fcec:	68c6c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880fcf0:	00150593          	addi	a1,a0,1
    e880fcf4:	39700613          	li	a2,919
    e880fcf8:	00090517          	auipc	a0,0x90
    e880fcfc:	4b850513          	addi	a0,a0,1208 # e88a01b0 <TWO52+0x5b8>
    e880fd00:	5c66c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880fd04:	47d9                	li	a5,22
    e880fd06:	00f9a023          	sw	a5,0(s3)
    link = (iAP2Link_t*) fsm->data;
    e880fd0a:	6c00                	ld	s0,24(s0)
    curTime = iAP2TimeGetCurTimeMs();
    e880fd0c:	2e9020ef          	jal	ra,e88127f4 <iAP2TimeGetCurTimeMs>
    e880fd10:	0005049b          	sext.w	s1,a0
    if (iAP2ListArrayGetCount(link->sendPckList) > 0)
    e880fd14:	6c48                	ld	a0,152(s0)
    expireTime = curTime + link->param.retransmitTimeout;
    e880fd16:	11a45903          	lhu	s2,282(s0)
    if (iAP2ListArrayGetCount(link->sendPckList) > 0)
    e880fd1a:	50e020ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
    e880fd1e:	c121                	beqz	a0,e880fd5e <iAP2LinkActionResendData+0xc8>
        uint8_t item = iAP2ListArrayGetFirstItemIndex (link->sendPckList);
    e880fd20:	6c48                	ld	a0,152(s0)
    expireTime = curTime + link->param.retransmitTimeout;
    e880fd22:	0099093b          	addw	s2,s2,s1
                    iAP2ListArrayDeleteItem (link->sendPckList, item, _DeletePckCB);
    e880fd26:	fffffb17          	auipc	s6,0xfffff
    e880fd2a:	f3cb0b13          	addi	s6,s6,-196 # e880ec62 <_DeletePckCB>
        uint8_t item = iAP2ListArrayGetFirstItemIndex (link->sendPckList);
    e880fd2e:	506020ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    e880fd32:	84aa                	mv	s1,a0
                        iAP2LogError("%s:%d %s Resend too many times!\n",
    e880fd34:	00090a17          	auipc	s4,0x90
    e880fd38:	4eca0a13          	addi	s4,s4,1260 # e88a0220 <__FUNCTION__.7541+0x60>
    e880fd3c:	00090b97          	auipc	s7,0x90
    e880fd40:	464b8b93          	addi	s7,s7,1124 # e88a01a0 <TWO52+0x5a8>
    e880fd44:	00090c17          	auipc	s8,0x90
    e880fd48:	53cc0c13          	addi	s8,s8,1340 # e88a0280 <__FUNCTION__.7541+0xc0>
                        *nextEvent = kiAP2LinkEventMaxResend;
    e880fd4c:	4cb9                	li	s9,14
                        iAP2LogError("%s:%d %s Resend too many times!\n",
    e880fd4e:	00090d17          	auipc	s10,0x90
    e880fd52:	4ead0d13          	addi	s10,s10,1258 # e88a0238 <__FUNCTION__.7541+0x78>
        while (item != kiAP2ListArrayInvalidIndex)
    e880fd56:	0ff00793          	li	a5,255
    e880fd5a:	02f49163          	bne	s1,a5,e880fd7c <iAP2LinkActionResendData+0xe6>
}
    e880fd5e:	70a6                	ld	ra,104(sp)
    e880fd60:	7406                	ld	s0,96(sp)
    e880fd62:	64e6                	ld	s1,88(sp)
    e880fd64:	6946                	ld	s2,80(sp)
    e880fd66:	69a6                	ld	s3,72(sp)
    e880fd68:	6a06                	ld	s4,64(sp)
    e880fd6a:	7ae2                	ld	s5,56(sp)
    e880fd6c:	7b42                	ld	s6,48(sp)
    e880fd6e:	7ba2                	ld	s7,40(sp)
    e880fd70:	7c02                	ld	s8,32(sp)
    e880fd72:	6ce2                	ld	s9,24(sp)
    e880fd74:	6d42                	ld	s10,16(sp)
    e880fd76:	6da2                	ld	s11,8(sp)
    e880fd78:	6165                	addi	sp,sp,112
    e880fd7a:	8082                	ret
            uint8_t nextItem = iAP2ListArrayGetNextItemIndex (link->sendPckList, item);
    e880fd7c:	6c48                	ld	a0,152(s0)
    e880fd7e:	85a6                	mv	a1,s1
    e880fd80:	4d0020ef          	jal	ra,e8812250 <iAP2ListArrayGetNextItemIndex>
    e880fd84:	8daa                	mv	s11,a0
            iAP2Packet_t* packet = iAP2LinkPacketForIndex (link->sendPckList, item);
    e880fd86:	6c48                	ld	a0,152(s0)
    e880fd88:	85a6                	mv	a1,s1
    e880fd8a:	a0dff0ef          	jal	ra,e880f796 <iAP2LinkPacketForIndex>
    e880fd8e:	8aaa                	mv	s5,a0
            if (packet && packet->timeStamp <= expireTime)
    e880fd90:	c931                	beqz	a0,e880fde4 <iAP2LinkActionResendData+0x14e>
    e880fd92:	5118                	lw	a4,32(a0)
    e880fd94:	04e96863          	bltu	s2,a4,e880fde4 <iAP2LinkActionResendData+0x14e>
                                   ? iAP2PacketCalcSeqGap (link->recvAck, packet->pckData->seq)
    e880fd98:	05844703          	lbu	a4,88(s0)
                uint8_t seqDiff = (link->bValidRecvSeq
    e880fd9c:	08000513          	li	a0,128
    e880fda0:	8b05                	andi	a4,a4,1
    e880fda2:	cb11                	beqz	a4,e880fdb6 <iAP2LinkActionResendData+0x120>
                                   ? iAP2PacketCalcSeqGap (link->recvAck, packet->pckData->seq)
    e880fda4:	038ab703          	ld	a4,56(s5)
    e880fda8:	05344503          	lbu	a0,83(s0)
    e880fdac:	00574583          	lbu	a1,5(a4)
    e880fdb0:	21b010ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
                if (seqDiff > 0 &&
    e880fdb4:	c921                	beqz	a0,e880fe04 <iAP2LinkActionResendData+0x16e>
    e880fdb6:	11544703          	lbu	a4,277(s0)
    e880fdba:	04a76563          	bltu	a4,a0,e880fe04 <iAP2LinkActionResendData+0x16e>
                    !iAP2PacketIsACKOnly(packet))
    e880fdbe:	8556                	mv	a0,s5
    e880fdc0:	4fa010ef          	jal	ra,e88112ba <iAP2PacketIsACKOnly>
                    seqDiff <= link->param.maxOutstandingPackets &&
    e880fdc4:	e121                	bnez	a0,e880fe04 <iAP2LinkActionResendData+0x16e>
                    if (packet->retransmitCount < link->param.maxRetransmissions)
    e880fdc6:	028ac703          	lbu	a4,40(s5)
    e880fdca:	11644683          	lbu	a3,278(s0)
    e880fdce:	00d77d63          	bgeu	a4,a3,e880fde8 <iAP2LinkActionResendData+0x152>
                        ++(packet->retransmitCount);
    e880fdd2:	2705                	addiw	a4,a4,1
    e880fdd4:	02ea8423          	sb	a4,40(s5)
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880fdd8:	4681                	li	a3,0
    e880fdda:	4605                	li	a2,1
    e880fddc:	85d6                	mv	a1,s5
    e880fdde:	8522                	mv	a0,s0
    e880fde0:	a29ff0ef          	jal	ra,e880f808 <_iAP2LinkSendPacketCommon.isra.12>
                        iAP2LogError("%s:%d %s Resend too many times!\n",
    e880fde4:	84ee                	mv	s1,s11
    e880fde6:	bf85                	j	e880fd56 <iAP2LinkActionResendData+0xc0>
    e880fde8:	05044783          	lbu	a5,80(s0)
    e880fdec:	86ea                	mv	a3,s10
    e880fdee:	3d200613          	li	a2,978
    e880fdf2:	40fa168b          	mveqz	a3,s4,a5
    e880fdf6:	85de                	mv	a1,s7
    e880fdf8:	8562                	mv	a0,s8
    e880fdfa:	0ab020ef          	jal	ra,e88126a4 <iAP2LogError>
                        *nextEvent = kiAP2LinkEventMaxResend;
    e880fdfe:	0199a023          	sw	s9,0(s3)
    e880fe02:	b7cd                	j	e880fde4 <iAP2LinkActionResendData+0x14e>
                    iAP2ListArrayDeleteItem (link->sendPckList, item, _DeletePckCB);
    e880fe04:	6c48                	ld	a0,152(s0)
    e880fe06:	865a                	mv	a2,s6
    e880fe08:	85a6                	mv	a1,s1
    e880fe0a:	60c020ef          	jal	ra,e8812416 <iAP2ListArrayDeleteItem>
    e880fe0e:	bfd9                	j	e880fde4 <iAP2LinkActionResendData+0x14e>

00000000e880fe10 <iAP2LinkProcessOutQueue>:
{
    e880fe10:	715d                	addi	sp,sp,-80
    e880fe12:	e0a2                	sd	s0,64(sp)
    e880fe14:	e486                	sd	ra,72(sp)
    e880fe16:	fc26                	sd	s1,56(sp)
    e880fe18:	f84a                	sd	s2,48(sp)
    e880fe1a:	f44e                	sd	s3,40(sp)
    e880fe1c:	f052                	sd	s4,32(sp)
    e880fe1e:	ec56                	sd	s5,24(sp)
    e880fe20:	e85a                	sd	s6,16(sp)
    e880fe22:	e45e                	sd	s7,8(sp)
    e880fe24:	842a                	mv	s0,a0
    assert(link);
    e880fe26:	e505                	bnez	a0,e880fe4e <iAP2LinkProcessOutQueue+0x3e>
    e880fe28:	02f00593          	li	a1,47
    e880fe2c:	00090517          	auipc	a0,0x90
    e880fe30:	37450513          	addi	a0,a0,884 # e88a01a0 <TWO52+0x5a8>
    e880fe34:	5446c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880fe38:	00150593          	addi	a1,a0,1
    e880fe3c:	6605                	lui	a2,0x1
    e880fe3e:	8ec60613          	addi	a2,a2,-1812 # 8ec <memcmp-0xe87ff714>
    e880fe42:	00090517          	auipc	a0,0x90
    e880fe46:	36e50513          	addi	a0,a0,878 # e88a01b0 <TWO52+0x5b8>
    e880fe4a:	47c6c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        bContinue = FALSE;
    e880fe4e:	4a19                	li	s4,6
    e880fe50:	0b840b93          	addi	s7,s0,184
    e880fe54:	3a7d                	addiw	s4,s4,-1
    while (bContinue && count-- > 0 && iAP2LinkSendWindowAvailable(link))
    e880fe56:	080a0e63          	beqz	s4,e880fef2 <iAP2LinkProcessOutQueue+0xe2>
    e880fe5a:	8522                	mv	a0,s0
    e880fe5c:	803ff0ef          	jal	ra,e880f65e <iAP2LinkSendWindowAvailable>
    e880fe60:	c949                	beqz	a0,e880fef2 <iAP2LinkProcessOutQueue+0xe2>
    e880fe62:	0a040993          	addi	s3,s0,160
        bContinue = FALSE;
    e880fe66:	4a81                	li	s5,0
    e880fe68:	a0a5                	j	e880fed0 <iAP2LinkProcessOutQueue+0xc0>
            uint8_t* pckList = link->sessSendPckList[i];
    e880fe6a:	0009b903          	ld	s2,0(s3)
            if (iAP2ListArrayGetCount (pckList) > 0)
    e880fe6e:	854a                	mv	a0,s2
    e880fe70:	3b8020ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
    e880fe74:	c939                	beqz	a0,e880feca <iAP2LinkProcessOutQueue+0xba>
                uint8_t item = iAP2ListArrayGetFirstItemIndex (pckList);
    e880fe76:	854a                	mv	a0,s2
    e880fe78:	3bc020ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
                iAP2Packet_t* pck = iAP2LinkPacketForIndex (pckList, item);
    e880fe7c:	85aa                	mv	a1,a0
                uint8_t item = iAP2ListArrayGetFirstItemIndex (pckList);
    e880fe7e:	8b2a                	mv	s6,a0
                iAP2Packet_t* pck = iAP2LinkPacketForIndex (pckList, item);
    e880fe80:	854a                	mv	a0,s2
    e880fe82:	915ff0ef          	jal	ra,e880f796 <iAP2LinkPacketForIndex>
    e880fe86:	84aa                	mv	s1,a0
                if (pck)
    e880fe88:	cd05                	beqz	a0,e880fec0 <iAP2LinkProcessOutQueue+0xb0>
                    iAP2ListArrayDeleteItem(pckList, item, NULL);
    e880fe8a:	4601                	li	a2,0
    e880fe8c:	85da                	mv	a1,s6
    e880fe8e:	854a                	mv	a0,s2
    e880fe90:	586020ef          	jal	ra,e8812416 <iAP2ListArrayDeleteItem>
                    pck->pckData->seq = link->sentSeq + 1;
    e880fe94:	05444783          	lbu	a5,84(s0)
    e880fe98:	7c98                	ld	a4,56(s1)
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880fe9a:	4681                	li	a3,0
                    pck->pckData->seq = link->sentSeq + 1;
    e880fe9c:	2785                	addiw	a5,a5,1
    e880fe9e:	00f702a3          	sb	a5,5(a4)
                    pck->pckData->ack = link->recvSeq;
    e880fea2:	7c9c                	ld	a5,56(s1)
    e880fea4:	05244703          	lbu	a4,82(s0)
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880fea8:	4601                	li	a2,0
    e880feaa:	85a6                	mv	a1,s1
                    pck->pckData->ack = link->recvSeq;
    e880feac:	00e78323          	sb	a4,6(a5)
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e880feb0:	8522                	mv	a0,s0
    e880feb2:	957ff0ef          	jal	ra,e880f808 <_iAP2LinkSendPacketCommon.isra.12>
                    if (pck->callbackOnSend != NULL)
    e880feb6:	689c                	ld	a5,16(s1)
    e880feb8:	c781                	beqz	a5,e880fec0 <iAP2LinkProcessOutQueue+0xb0>
                        callback (link, pck->cbContext);
    e880feba:	648c                	ld	a1,8(s1)
    e880febc:	8522                	mv	a0,s0
    e880febe:	9782                	jalr	a5
                if (iAP2ListArrayGetCount (pckList) > 0)
    e880fec0:	854a                	mv	a0,s2
    e880fec2:	366020ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
    e880fec6:	c111                	beqz	a0,e880feca <iAP2LinkProcessOutQueue+0xba>
                    bContinue = TRUE;
    e880fec8:	4a85                	li	s5,1
        for (i = 0; i < kIAP2PacketServiceTypeCount && iAP2LinkSendWindowAvailable(link); ++i)
    e880feca:	09a1                	addi	s3,s3,8
    e880fecc:	013b8663          	beq	s7,s3,e880fed8 <iAP2LinkProcessOutQueue+0xc8>
    e880fed0:	8522                	mv	a0,s0
    e880fed2:	f8cff0ef          	jal	ra,e880f65e <iAP2LinkSendWindowAvailable>
    e880fed6:	f951                	bnez	a0,e880fe6a <iAP2LinkProcessOutQueue+0x5a>
    while (bContinue && count-- > 0 && iAP2LinkSendWindowAvailable(link))
    e880fed8:	f60a9ee3          	bnez	s5,e880fe54 <iAP2LinkProcessOutQueue+0x44>
}
    e880fedc:	60a6                	ld	ra,72(sp)
    e880fede:	6406                	ld	s0,64(sp)
    e880fee0:	74e2                	ld	s1,56(sp)
    e880fee2:	7942                	ld	s2,48(sp)
    e880fee4:	79a2                	ld	s3,40(sp)
    e880fee6:	7a02                	ld	s4,32(sp)
    e880fee8:	6ae2                	ld	s5,24(sp)
    e880feea:	6b42                	ld	s6,16(sp)
    e880feec:	6ba2                	ld	s7,8(sp)
    e880feee:	6161                	addi	sp,sp,80
    e880fef0:	8082                	ret
        link->signalSendBuffCB (link);
    e880fef2:	04043303          	ld	t1,64(s0)
    e880fef6:	8522                	mv	a0,s0
}
    e880fef8:	6406                	ld	s0,64(sp)
    e880fefa:	60a6                	ld	ra,72(sp)
    e880fefc:	74e2                	ld	s1,56(sp)
    e880fefe:	7942                	ld	s2,48(sp)
    e880ff00:	79a2                	ld	s3,40(sp)
    e880ff02:	7a02                	ld	s4,32(sp)
    e880ff04:	6ae2                	ld	s5,24(sp)
    e880ff06:	6b42                	ld	s6,16(sp)
    e880ff08:	6ba2                	ld	s7,8(sp)
    e880ff0a:	6161                	addi	sp,sp,80
        link->signalSendBuffCB (link);
    e880ff0c:	8302                	jr	t1

00000000e880ff0e <iAP2LinkActionSendData>:
{
    e880ff0e:	1101                	addi	sp,sp,-32
    e880ff10:	e422                	sd	s0,8(sp)
    e880ff12:	e826                	sd	s1,16(sp)
    e880ff14:	ec06                	sd	ra,24(sp)
    e880ff16:	842a                	mv	s0,a0
    e880ff18:	84ae                	mv	s1,a1
    assert(fsm);
    e880ff1a:	e11d                	bnez	a0,e880ff40 <iAP2LinkActionSendData+0x32>
    e880ff1c:	02f00593          	li	a1,47
    e880ff20:	00090517          	auipc	a0,0x90
    e880ff24:	28050513          	addi	a0,a0,640 # e88a01a0 <TWO52+0x5a8>
    e880ff28:	4506c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ff2c:	00150593          	addi	a1,a0,1
    e880ff30:	2a800613          	li	a2,680
    e880ff34:	00090517          	auipc	a0,0x90
    e880ff38:	27c50513          	addi	a0,a0,636 # e88a01b0 <TWO52+0x5b8>
    e880ff3c:	38a6c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e880ff40:	e09d                	bnez	s1,e880ff66 <iAP2LinkActionSendData+0x58>
    e880ff42:	02f00593          	li	a1,47
    e880ff46:	00090517          	auipc	a0,0x90
    e880ff4a:	25a50513          	addi	a0,a0,602 # e88a01a0 <TWO52+0x5a8>
    e880ff4e:	42a6c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e880ff52:	00150593          	addi	a1,a0,1
    e880ff56:	2a900613          	li	a2,681
    e880ff5a:	00090517          	auipc	a0,0x90
    e880ff5e:	25650513          	addi	a0,a0,598 # e88a01b0 <TWO52+0x5b8>
    e880ff62:	3646c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e880ff66:	47d9                	li	a5,22
    e880ff68:	c09c                	sw	a5,0(s1)
    iAP2LinkProcessOutQueue (link);
    e880ff6a:	6c08                	ld	a0,24(s0)
}
    e880ff6c:	6422                	ld	s0,8(sp)
    e880ff6e:	60e2                	ld	ra,24(sp)
    e880ff70:	64c2                	ld	s1,16(sp)
    e880ff72:	6105                	addi	sp,sp,32
    iAP2LinkProcessOutQueue (link);
    e880ff74:	e9dff06f          	j	e880fe10 <iAP2LinkProcessOutQueue>

00000000e880ff78 <iAP2LinkProcessInOrderPacket>:
{
    e880ff78:	711d                	addi	sp,sp,-96
    e880ff7a:	e8a2                	sd	s0,80(sp)
    e880ff7c:	e4a6                	sd	s1,72(sp)
    e880ff7e:	ec86                	sd	ra,88(sp)
    e880ff80:	e0ca                	sd	s2,64(sp)
    e880ff82:	842a                	mv	s0,a0
    link->recvPck = packet;
    e880ff84:	e54c                	sd	a1,136(a0)
    if (packet->pckData->ctl & kIAP2PacketControlMaskSYN)
    e880ff86:	7d98                	ld	a4,56(a1)
{
    e880ff88:	84ae                	mv	s1,a1
    if (packet->pckData->ctl & kIAP2PacketControlMaskSYN)
    e880ff8a:	00474783          	lbu	a5,4(a4)
    e880ff8e:	fc77b68b          	extu	a3,a5,63,7
    e880ff92:	16068c63          	beqz	a3,e881010a <iAP2LinkProcessInOrderPacket+0x192>
    link->recvSeq = packet->pckData->seq;
    e880ff96:	00574783          	lbu	a5,5(a4)
    e880ff9a:	04f50923          	sb	a5,82(a0)
    link->bValidRecvSeq = TRUE;
    e880ff9e:	05854783          	lbu	a5,88(a0)
    e880ffa2:	0017e793          	ori	a5,a5,1
    e880ffa6:	04f50c23          	sb	a5,88(a0)
    if (packet->pckData->ctl & kIAP2PacketControlMaskACK)
    e880ffaa:	7d9c                	ld	a5,56(a1)
    e880ffac:	0047c783          	lbu	a5,4(a5)
    e880ffb0:	0407f793          	andi	a5,a5,64
    e880ffb4:	cfd1                	beqz	a5,e8810050 <iAP2LinkProcessInOrderPacket+0xd8>
        ++(link->numRecvSYNACK);
    e880ffb6:	14852783          	lw	a5,328(a0)
    e880ffba:	2785                	addiw	a5,a5,1
    e880ffbc:	14f52423          	sw	a5,328(a0)
        ++(link->numRecvCumSYNACK);
    e880ffc0:	15052783          	lw	a5,336(a0)
    e880ffc4:	2785                	addiw	a5,a5,1
    e880ffc6:	14f52823          	sw	a5,336(a0)
    if (!link->bIgnoreSynRetryLimit &&
    e880ffca:	05844783          	lbu	a5,88(s0)
    e880ffce:	0207f793          	andi	a5,a5,32
    e880ffd2:	ebd1                	bnez	a5,e8810066 <iAP2LinkProcessInOrderPacket+0xee>
        (link->numRecvSYNACK + link->numRecvSYN) > kiAP2LinkSynRetries)
    e880ffd4:	14442703          	lw	a4,324(s0)
    e880ffd8:	14842783          	lw	a5,328(s0)
    if (!link->bIgnoreSynRetryLimit &&
    e880ffdc:	9fb9                	addw	a5,a5,a4
    e880ffde:	4729                	li	a4,10
    e880ffe0:	08f77363          	bgeu	a4,a5,e8810066 <iAP2LinkProcessInOrderPacket+0xee>
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventMaxResend);
    e880ffe4:	6808                	ld	a0,16(s0)
    e880ffe6:	45b9                	li	a1,14
    e880ffe8:	72d010ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>
        iAP2LogStart();
    e880ffec:	710020ef          	jal	ra,e88126fc <iAP2LogStart>
        iAP2LogStop();
    e880fff0:	4905                	li	s2,1
                     packet->pckData->ctl, packet->pckData->seq,
    e880fff2:	7c9c                	ld	a5,56(s1)
        iAP2LogError("%s:%d Received Invalid Packet (control=0x%x seq=%u sentSeq=%u recvAck=%u recvSeq=%u sentAck=%u)\n",
    e880fff4:	00090597          	auipc	a1,0x90
    e880fff8:	1ac58593          	addi	a1,a1,428 # e88a01a0 <TWO52+0x5a8>
    e880fffc:	00090517          	auipc	a0,0x90
    e8810000:	42450513          	addi	a0,a0,1060 # e88a0420 <__FUNCTION__.7541+0x260>
    e8810004:	0057c703          	lbu	a4,5(a5)
    e8810008:	0047c683          	lbu	a3,4(a5)
    e881000c:	05544783          	lbu	a5,85(s0)
    e8810010:	e03e                	sd	a5,0(sp)
    e8810012:	05244883          	lbu	a7,82(s0)
    e8810016:	05344803          	lbu	a6,83(s0)
    e881001a:	05444783          	lbu	a5,84(s0)
    e881001e:	6405                	lui	s0,0x1
    e8810020:	c7b40613          	addi	a2,s0,-901 # c7b <memcmp-0xe87ff385>
    e8810024:	680020ef          	jal	ra,e88126a4 <iAP2LogError>
        iAP2PacketDebugPrintPacketNL(packet, __FILE__, __LINE__, "ProcessInOrderPacket", "");
    e8810028:	000b1717          	auipc	a4,0xb1
    e881002c:	24870713          	addi	a4,a4,584 # e88c1270 <kHTTPServerClass+0x90>
    e8810030:	00090697          	auipc	a3,0x90
    e8810034:	45868693          	addi	a3,a3,1112 # e88a0488 <__FUNCTION__.7541+0x2c8>
    e8810038:	c7f40613          	addi	a2,s0,-897
    e881003c:	00090597          	auipc	a1,0x90
    e8810040:	16458593          	addi	a1,a1,356 # e88a01a0 <TWO52+0x5a8>
    e8810044:	8526                	mv	a0,s1
    e8810046:	10d010ef          	jal	ra,e8811952 <iAP2PacketDebugPrintPacketNL>
        iAP2LogStop();
    e881004a:	6b4020ef          	jal	ra,e88126fe <iAP2LogStop>
    e881004e:	a065                	j	e88100f6 <iAP2LinkProcessInOrderPacket+0x17e>
        ++(link->numRecvSYN);
    e8810050:	14452783          	lw	a5,324(a0)
    e8810054:	2785                	addiw	a5,a5,1
    e8810056:	14f52223          	sw	a5,324(a0)
        ++(link->numRecvCumSYN);
    e881005a:	14c52783          	lw	a5,332(a0)
    e881005e:	2785                	addiw	a5,a5,1
    e8810060:	14f52623          	sw	a5,332(a0)
    e8810064:	b79d                	j	e880ffca <iAP2LinkProcessInOrderPacket+0x52>
    else if (packet->packetLen >= (kIAP2PacketHeaderLen
    e8810066:	0244d703          	lhu	a4,36(s1)
    e881006a:	47cd                	li	a5,19
    e881006c:	f8e7f0e3          	bgeu	a5,a4,e880ffec <iAP2LinkProcessInOrderPacket+0x74>
        iAP2PacketParseSYNData (iAP2PacketGetPayload (packet),
    e8810070:	8526                	mv	a0,s1
    e8810072:	42c010ef          	jal	ra,e881149e <iAP2PacketGetPayload>
    e8810076:	892a                	mv	s2,a0
                                iAP2PacketGetPayloadLen (packet),
    e8810078:	8526                	mv	a0,s1
    e881007a:	42a010ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
        iAP2PacketParseSYNData (iAP2PacketGetPayload (packet),
    e881007e:	0005059b          	sext.w	a1,a0
    e8810082:	0810                	addi	a2,sp,16
    e8810084:	854a                	mv	a0,s2
    e8810086:	63c010ef          	jal	ra,e88116c2 <iAP2PacketParseSYNData>
        validSYN = iAP2LinkIsValidSynParam (&synParam);
    e881008a:	0808                	addi	a0,sp,16
    e881008c:	e41fe0ef          	jal	ra,e880eecc <iAP2LinkIsValidSynParam>
        if (!validSYN || (packet->pckData->ctl & kIAP2PacketControlMaskACK) != 0)
    e8810090:	681c                	ld	a5,16(s0)
    e8810092:	c935                	beqz	a0,e8810106 <iAP2LinkProcessInOrderPacket+0x18e>
    e8810094:	7c94                	ld	a3,56(s1)
            iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvSYN);
    e8810096:	4589                	li	a1,2
        if (!validSYN || (packet->pckData->ctl & kIAP2PacketControlMaskACK) != 0)
    e8810098:	0046c703          	lbu	a4,4(a3)
    e881009c:	04077713          	andi	a4,a4,64
    e88100a0:	c739                	beqz	a4,e88100ee <iAP2LinkProcessInOrderPacket+0x176>
            if (validSYN &&
    e88100a2:	01615603          	lhu	a2,22(sp)
    e88100a6:	0ec45703          	lhu	a4,236(s0)
    e88100aa:	04e61e63          	bne	a2,a4,e8810106 <iAP2LinkProcessInOrderPacket+0x18e>
                synParam.retransmitTimeout  == link->negotiatedParam.retransmitTimeout  &&
    e88100ae:	01815603          	lhu	a2,24(sp)
    e88100b2:	0ee45703          	lhu	a4,238(s0)
    e88100b6:	04e61863          	bne	a2,a4,e8810106 <iAP2LinkProcessInOrderPacket+0x18e>
                synParam.cumAckTimeout      == link->negotiatedParam.cumAckTimeout      &&
    e88100ba:	01214603          	lbu	a2,18(sp)
    e88100be:	0e844703          	lbu	a4,232(s0)
    e88100c2:	04e61263          	bne	a2,a4,e8810106 <iAP2LinkProcessInOrderPacket+0x18e>
                synParam.maxRetransmissions == link->negotiatedParam.maxRetransmissions &&
    e88100c6:	01314603          	lbu	a2,19(sp)
    e88100ca:	0e944703          	lbu	a4,233(s0)
    e88100ce:	02e61c63          	bne	a2,a4,e8810106 <iAP2LinkProcessInOrderPacket+0x18e>
                synParam.maxCumAck          == link->negotiatedParam.maxCumAck          &&
    e88100d2:	01a14603          	lbu	a2,26(sp)
    e88100d6:	0f044703          	lbu	a4,240(s0)
    e88100da:	02e61663          	bne	a2,a4,e8810106 <iAP2LinkProcessInOrderPacket+0x18e>
                if (packet->pckData->ack == link->sentSeq)
    e88100de:	0066c683          	lbu	a3,6(a3)
    e88100e2:	05444703          	lbu	a4,84(s0)
                    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvSYNACK);
    e88100e6:	458d                	li	a1,3
                if (packet->pckData->ack == link->sentSeq)
    e88100e8:	00e68363          	beq	a3,a4,e88100ee <iAP2LinkProcessInOrderPacket+0x176>
                    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvSYNACKOLD);
    e88100ec:	4591                	li	a1,4
            iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvSYN);
    e88100ee:	853e                	mv	a0,a5
    e88100f0:	625010ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>
        link->signalSendBuffCB (link);
    e88100f4:	4901                	li	s2,0
}
    e88100f6:	60e6                	ld	ra,88(sp)
    e88100f8:	6446                	ld	s0,80(sp)
    e88100fa:	00194513          	xori	a0,s2,1
    e88100fe:	64a6                	ld	s1,72(sp)
    e8810100:	6906                	ld	s2,64(sp)
    e8810102:	6125                	addi	sp,sp,96
    e8810104:	8082                	ret
                iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvSYNACKNEW);
    e8810106:	4595                	li	a1,5
    e8810108:	b7dd                	j	e88100ee <iAP2LinkProcessInOrderPacket+0x176>
    else if (packet->pckData->ctl & kIAP2PacketControlMaskEAK)
    e881010a:	0207f693          	andi	a3,a5,32
    e881010e:	ca89                	beqz	a3,e8810120 <iAP2LinkProcessInOrderPacket+0x1a8>
    if (packet->packetLen > (kIAP2PacketHeaderLen + kIAP2PacketChksumLen))
    e8810110:	0245d703          	lhu	a4,36(a1)
    e8810114:	47a9                	li	a5,10
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventEAK);
    e8810116:	45b1                	li	a1,12
    if (packet->packetLen > (kIAP2PacketHeaderLen + kIAP2PacketChksumLen))
    e8810118:	ece7fae3          	bgeu	a5,a4,e880ffec <iAP2LinkProcessInOrderPacket+0x74>
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvRST);
    e881011c:	6808                	ld	a0,16(s0)
    e881011e:	bfc9                	j	e88100f0 <iAP2LinkProcessInOrderPacket+0x178>
    else if (packet->pckData->ctl & kIAP2PacketControlMaskRST)
    e8810120:	0107f693          	andi	a3,a5,16
    e8810124:	ca81                	beqz	a3,e8810134 <iAP2LinkProcessInOrderPacket+0x1bc>
    if (packet->packetLen == kIAP2PacketHeaderLen)
    e8810126:	0245d703          	lhu	a4,36(a1)
    e881012a:	47a5                	li	a5,9
    e881012c:	ecf710e3          	bne	a4,a5,e880ffec <iAP2LinkProcessInOrderPacket+0x74>
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvRST);
    e8810130:	4599                	li	a1,6
    e8810132:	b7ed                	j	e881011c <iAP2LinkProcessInOrderPacket+0x1a4>
    else if (packet->pckData->ctl & kIAP2PacketControlMaskACK)
    e8810134:	0407f693          	andi	a3,a5,64
    e8810138:	c2e1                	beqz	a3,e88101f8 <iAP2LinkProcessInOrderPacket+0x280>
    if (packet->packetLen > (kIAP2PacketHeaderLen + kIAP2PacketChksumLen))
    e881013a:	0245d783          	lhu	a5,36(a1)
    e881013e:	46a9                	li	a3,10
    e8810140:	06f6fb63          	bgeu	a3,a5,e88101b6 <iAP2LinkProcessInOrderPacket+0x23e>
        link->recvSeq = packet->pckData->seq;
    e8810144:	00574783          	lbu	a5,5(a4)
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvData);
    e8810148:	45a9                	li	a1,10
        link->recvSeq = packet->pckData->seq;
    e881014a:	04f50923          	sb	a5,82(a0)
        link->bValidRecvSeq = TRUE;
    e881014e:	05854783          	lbu	a5,88(a0)
    e8810152:	0017e793          	ori	a5,a5,1
    e8810156:	04f50c23          	sb	a5,88(a0)
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvData);
    e881015a:	6908                	ld	a0,16(a0)
    e881015c:	5b9010ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>
        gap = iAP2PacketCalcSeqGap(link->sentAck, link->recvSeq);
    e8810160:	05244583          	lbu	a1,82(s0)
    e8810164:	05544503          	lbu	a0,85(s0)
    e8810168:	662010ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
        if (gap > 0 && gap < kiAP2LinkSynValMaxOutstandingMax &&
    e881016c:	fff5079b          	addiw	a5,a0,-1
    e8810170:	0ff7f793          	andi	a5,a5,255
    e8810174:	07d00713          	li	a4,125
    e8810178:	02f76b63          	bltu	a4,a5,e88101ae <iAP2LinkProcessInOrderPacket+0x236>
            link->fsm->currentState >= kiAP2LinkStateConnected)
    e881017c:	681c                	ld	a5,16(s0)
        if (gap > 0 && gap < kiAP2LinkSynValMaxOutstandingMax &&
    e881017e:	4b98                	lw	a4,16(a5)
    e8810180:	4791                	li	a5,4
    e8810182:	02e7f663          	bgeu	a5,a4,e88101ae <iAP2LinkProcessInOrderPacket+0x236>
            if (gap >= link->param.maxCumAck)
    e8810186:	11744783          	lbu	a5,279(s0)
    e881018a:	02f56263          	bltu	a0,a5,e88101ae <iAP2LinkProcessInOrderPacket+0x236>
                pck = iAP2PacketCreateACKPacket (link,
    e881018e:	05244603          	lbu	a2,82(s0)
    e8810192:	05444583          	lbu	a1,84(s0)
    e8810196:	4681                	li	a3,0
    e8810198:	4781                	li	a5,0
    e881019a:	4701                	li	a4,0
    e881019c:	8522                	mv	a0,s0
    e881019e:	44e010ef          	jal	ra,e88115ec <iAP2PacketCreateACKPacket>
    _iAP2LinkSendPacketCommon (link, packet, bResend, tag, FALSE);
    e88101a2:	85aa                	mv	a1,a0
    e88101a4:	4681                	li	a3,0
    e88101a6:	4601                	li	a2,0
    e88101a8:	8522                	mv	a0,s0
    e88101aa:	e5eff0ef          	jal	ra,e880f808 <_iAP2LinkSendPacketCommon.isra.12>
        link->signalSendBuffCB (link);
    e88101ae:	603c                	ld	a5,64(s0)
    e88101b0:	8522                	mv	a0,s0
    e88101b2:	9782                	jalr	a5
    e88101b4:	b781                	j	e88100f4 <iAP2LinkProcessInOrderPacket+0x17c>
    else if (packet->packetLen == kIAP2PacketHeaderLen)
    e88101b6:	4725                	li	a4,9
    e88101b8:	e2e79ae3          	bne	a5,a4,e880ffec <iAP2LinkProcessInOrderPacket+0x74>
        memcpy (&synData,&link->negotiatedParam, sizeof(synData));
    e88101bc:	0e650593          	addi	a1,a0,230
    e88101c0:	02e00613          	li	a2,46
    e88101c4:	0808                	addi	a0,sp,16
    e88101c6:	1da6c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        synData.maxOutstandingPackets = synData.peerMaxOutstandingPackets;
    e88101ca:	01b14783          	lbu	a5,27(sp)
    e88101ce:	00f108a3          	sb	a5,17(sp)
        synData.maxPacketSize = synData.peerMaxPacketSize;
    e88101d2:	01c15783          	lhu	a5,28(sp)
    e88101d6:	00f11a23          	sh	a5,20(sp)
        if (link->fsm->currentState < kiAP2LinkStateConnected &&
    e88101da:	681c                	ld	a5,16(s0)
    e88101dc:	4b98                	lw	a4,16(a5)
    e88101de:	4791                	li	a5,4
    e88101e0:	00e7e763          	bltu	a5,a4,e88101ee <iAP2LinkProcessInOrderPacket+0x276>
            !iAP2LinkIsValidSynParam (&synData))
    e88101e4:	0808                	addi	a0,sp,16
    e88101e6:	ce7fe0ef          	jal	ra,e880eecc <iAP2LinkIsValidSynParam>
            iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvACKBadLink);
    e88101ea:	45c1                	li	a1,16
        if (link->fsm->currentState < kiAP2LinkStateConnected &&
    e88101ec:	c111                	beqz	a0,e88101f0 <iAP2LinkProcessInOrderPacket+0x278>
            iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvACK);
    e88101ee:	45bd                	li	a1,15
    e88101f0:	6808                	ld	a0,16(s0)
    e88101f2:	523010ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>
    if (!bInvalidPacket)
    e88101f6:	bf65                	j	e88101ae <iAP2LinkProcessInOrderPacket+0x236>
    else if (packet->pckData->ctl & kIAP2PacketControlMaskSUS)
    e88101f8:	8ba1                	andi	a5,a5,8
    BOOL bInvalidPacket = FALSE;
    e88101fa:	4901                	li	s2,0
    else if (packet->pckData->ctl & kIAP2PacketControlMaskSUS)
    e88101fc:	ee078de3          	beqz	a5,e88100f6 <iAP2LinkProcessInOrderPacket+0x17e>
    if (packet->packetLen == kIAP2PacketHeaderLen)
    e8810200:	0245d703          	lhu	a4,36(a1)
    e8810204:	47a5                	li	a5,9
    e8810206:	def713e3          	bne	a4,a5,e880ffec <iAP2LinkProcessInOrderPacket+0x74>
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventSuspend);
    e881020a:	6908                	ld	a0,16(a0)
    e881020c:	45d5                	li	a1,21
    e881020e:	507010ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>
    if (bInvalidPacket) /* Invalid Packet! */
    e8810212:	b5d5                	j	e88100f6 <iAP2LinkProcessInOrderPacket+0x17e>

00000000e8810214 <iAP2LinkHandleReadyPacket>:
{
    e8810214:	7159                	addi	sp,sp,-112
    e8810216:	f0a2                	sd	s0,96(sp)
    e8810218:	f486                	sd	ra,104(sp)
    e881021a:	eca6                	sd	s1,88(sp)
    e881021c:	e8ca                	sd	s2,80(sp)
    e881021e:	e4ce                	sd	s3,72(sp)
    e8810220:	e0d2                	sd	s4,64(sp)
    e8810222:	fc56                	sd	s5,56(sp)
    e8810224:	f85a                	sd	s6,48(sp)
    e8810226:	f45e                	sd	s7,40(sp)
    e8810228:	e42e                	sd	a1,8(sp)
    e881022a:	842a                	mv	s0,a0
    assert(packet);
    e881022c:	e585                	bnez	a1,e8810254 <iAP2LinkHandleReadyPacket+0x40>
    e881022e:	02f00593          	li	a1,47
    e8810232:	00090517          	auipc	a0,0x90
    e8810236:	f6e50513          	addi	a0,a0,-146 # e88a01a0 <TWO52+0x5a8>
    e881023a:	13e6c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e881023e:	00150593          	addi	a1,a0,1
    e8810242:	6605                	lui	a2,0x1
    e8810244:	a3b60613          	addi	a2,a2,-1477 # a3b <memcmp-0xe87ff5c5>
    e8810248:	00090517          	auipc	a0,0x90
    e881024c:	f6850513          	addi	a0,a0,-152 # e88a01b0 <TWO52+0x5b8>
    e8810250:	0766c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (packet->state == kiAP2PacketParseStateDETECT)
    e8810254:	67a2                	ld	a5,8(sp)
    e8810256:	46b1                	li	a3,12
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvDetect);
    e8810258:	45c5                	li	a1,17
    if (packet->state == kiAP2PacketParseStateDETECT)
    e881025a:	02c7c703          	lbu	a4,44(a5)
    e881025e:	00d70663          	beq	a4,a3,e881026a <iAP2LinkHandleReadyPacket+0x56>
    else if (packet->state == kiAP2PacketParseStateDETECTBAD)
    e8810262:	46b5                	li	a3,13
    e8810264:	02d71463          	bne	a4,a3,e881028c <iAP2LinkHandleReadyPacket+0x78>
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvDetectBad);
    e8810268:	45c9                	li	a1,18
    e881026a:	6808                	ld	a0,16(s0)
    e881026c:	4a9010ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>
        iAP2PacketDelete (packet);
    e8810270:	6522                	ld	a0,8(sp)
    e8810272:	1d8010ef          	jal	ra,e881144a <iAP2PacketDelete>
}
    e8810276:	70a6                	ld	ra,104(sp)
    e8810278:	7406                	ld	s0,96(sp)
    e881027a:	64e6                	ld	s1,88(sp)
    e881027c:	6946                	ld	s2,80(sp)
    e881027e:	69a6                	ld	s3,72(sp)
    e8810280:	6a06                	ld	s4,64(sp)
    e8810282:	7ae2                	ld	s5,56(sp)
    e8810284:	7b42                	ld	s6,48(sp)
    e8810286:	7ba2                	ld	s7,40(sp)
    e8810288:	6165                	addi	sp,sp,112
    e881028a:	8082                	ret
    if (packet->packetLen > link->param.maxPacketSize) {
    e881028c:	0247d603          	lhu	a2,36(a5)
    e8810290:	11845683          	lhu	a3,280(s0)
    e8810294:	00c6fc63          	bgeu	a3,a2,e88102ac <iAP2LinkHandleReadyPacket+0x98>
                       packet->pckData->seq, packet->packetLen, link->param.maxPacketSize);
    e8810298:	7f9c                	ld	a5,56(a5)
        iAP2LogErrorNL("Packet 0x%x has length = %d bytes > maxPacketLength (%d bytes)",
    e881029a:	00090517          	auipc	a0,0x90
    e881029e:	03e50513          	addi	a0,a0,62 # e88a02d8 <__FUNCTION__.7541+0x118>
    e88102a2:	0057c583          	lbu	a1,5(a5)
    e88102a6:	42a020ef          	jal	ra,e88126d0 <iAP2LogErrorNL>
    e88102aa:	b7d9                	j	e8810270 <iAP2LinkHandleReadyPacket+0x5c>
    link->recvPck = packet;
    e88102ac:	e45c                	sd	a5,136(s0)
    bSameAsLastReceivedPacket = (link->recvSeq == packet->pckData->seq);
    e88102ae:	7f9c                	ld	a5,56(a5)
    e88102b0:	05244a03          	lbu	s4,82(s0)
    e88102b4:	0057c983          	lbu	s3,5(a5)
    seqDiff = iAP2PacketCalcSeqGap (link->recvSeq,
    e88102b8:	8552                	mv	a0,s4
    e88102ba:	85ce                	mv	a1,s3
    e88102bc:	50e010ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
    e88102c0:	892a                	mv	s2,a0
    if ((packet->pckData->ctl & kIAP2PacketControlMaskRST) != 0)
    e88102c2:	6522                	ld	a0,8(sp)
    e88102c4:	7d1c                	ld	a5,56(a0)
    e88102c6:	0047c783          	lbu	a5,4(a5)
    else if ((packet->pckData->ctl & kIAP2PacketControlMaskSUS) != 0)
    e88102ca:	0187f713          	andi	a4,a5,24
    e88102ce:	26071b63          	bnez	a4,e8810544 <iAP2LinkHandleReadyPacket+0x330>
    else if ((packet->pckData->ctl & kIAP2PacketControlMaskSYN) != 0 ||
    e88102d2:	fc77b70b          	extu	a4,a5,63,7
    e88102d6:	eb01                	bnez	a4,e88102e6 <iAP2LinkHandleReadyPacket+0xd2>
             !link->bValidRecvSeq ||
    e88102d8:	05844783          	lbu	a5,88(s0)
    else if ((packet->pckData->ctl & kIAP2PacketControlMaskSYN) != 0 ||
    e88102dc:	8b85                	andi	a5,a5,1
    e88102de:	c781                	beqz	a5,e88102e6 <iAP2LinkHandleReadyPacket+0xd2>
             !link->bValidRecvSeq ||
    e88102e0:	4785                	li	a5,1
    e88102e2:	10f91163          	bne	s2,a5,e88103e4 <iAP2LinkHandleReadyPacket+0x1d0>
        iAP2LinkAddPacketAfter (link->recvPckList,
    e88102e6:	6844                	ld	s1,144(s0)
    e88102e8:	8526                	mv	a0,s1
    e88102ea:	759010ef          	jal	ra,e8812242 <iAP2ListArrayGetLastItemIndex>
    e88102ee:	85aa                	mv	a1,a0
    e88102f0:	0030                	addi	a2,sp,8
    e88102f2:	8526                	mv	a0,s1
    e88102f4:	d10ff0ef          	jal	ra,e880f804 <iAP2LinkAddPacketAfter>
        if ((packet->pckData->ctl & kIAP2PacketControlMaskSYN) != 0 &&
    e88102f8:	67a2                	ld	a5,8(sp)
    e88102fa:	7f9c                	ld	a5,56(a5)
    e88102fc:	0047c483          	lbu	s1,4(a5)
    e8810300:	fc74b78b          	extu	a5,s1,63,7
    e8810304:	ebf1                	bnez	a5,e88103d8 <iAP2LinkHandleReadyPacket+0x1c4>
        bDeletePacket = FALSE;
    e8810306:	4981                	li	s3,0
    BOOL bProcessPacket = FALSE;
    e8810308:	4481                	li	s1,0
        if (packet->pckData->ctl & kIAP2PacketControlMaskACK)
    e881030a:	67a2                	ld	a5,8(sp)
    e881030c:	7f98                	ld	a4,56(a5)
    e881030e:	00474783          	lbu	a5,4(a4)
    e8810312:	0407f793          	andi	a5,a5,64
    e8810316:	cfa9                	beqz	a5,e8810370 <iAP2LinkHandleReadyPacket+0x15c>
            seqDiff = iAP2PacketCalcSeqGap (link->recvAck,
    e8810318:	00674583          	lbu	a1,6(a4)
    e881031c:	05344503          	lbu	a0,83(s0)
    e8810320:	4aa010ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
            if (!link->bValidRecvAck || seqDiff <= kiAP2LinkSynValMaxOutstandingMax)
    e8810324:	05844783          	lbu	a5,88(s0)
    e8810328:	8b89                	andi	a5,a5,2
    e881032a:	c789                	beqz	a5,e8810334 <iAP2LinkHandleReadyPacket+0x120>
    e881032c:	1c05250b          	ext	a0,a0,7,0
    e8810330:	04054063          	bltz	a0,e8810370 <iAP2LinkHandleReadyPacket+0x15c>
                link->recvAck = packet->pckData->ack;
    e8810334:	67a2                	ld	a5,8(sp)
    uint8_t item = iAP2ListArrayGetFirstItemIndex (link->sendPckList);
    e8810336:	6c48                	ld	a0,152(s0)
    BOOL bNeedNotify = FALSE;
    e8810338:	4a01                	li	s4,0
                link->recvAck = packet->pckData->ack;
    e881033a:	7f9c                	ld	a5,56(a5)
    while (item != kiAP2ListArrayInvalidIndex)
    e881033c:	0ff00a93          	li	s5,255
            iAP2ListArrayDeleteItem (link->sendPckList, item, _DeletePckCB);
    e8810340:	fffffb17          	auipc	s6,0xfffff
    e8810344:	922b0b13          	addi	s6,s6,-1758 # e880ec62 <_DeletePckCB>
                link->recvAck = packet->pckData->ack;
    e8810348:	0067c783          	lbu	a5,6(a5)
    e881034c:	04f409a3          	sb	a5,83(s0)
                link->bValidRecvAck = TRUE;
    e8810350:	05844783          	lbu	a5,88(s0)
    e8810354:	0027e793          	ori	a5,a5,2
    e8810358:	04f40c23          	sb	a5,88(s0)
    uint8_t item = iAP2ListArrayGetFirstItemIndex (link->sendPckList);
    e881035c:	6d9010ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    e8810360:	892a                	mv	s2,a0
    while (item != kiAP2ListArrayInvalidIndex)
    e8810362:	15591963          	bne	s2,s5,e88104b4 <iAP2LinkHandleReadyPacket+0x2a0>
    if (bNeedNotify)
    e8810366:	000a0563          	beqz	s4,e8810370 <iAP2LinkHandleReadyPacket+0x15c>
        link->signalSendBuffCB (link);
    e881036a:	603c                	ld	a5,64(s0)
    e881036c:	8522                	mv	a0,s0
    e881036e:	9782                	jalr	a5
        if (bProcessPacket)
    e8810370:	c489                	beqz	s1,e881037a <iAP2LinkHandleReadyPacket+0x166>
            bInvalidPacket = (iAP2LinkProcessInOrderPacket (link, packet) == FALSE);
    e8810372:	65a2                	ld	a1,8(sp)
    e8810374:	8522                	mv	a0,s0
    e8810376:	c03ff0ef          	jal	ra,e880ff78 <iAP2LinkProcessInOrderPacket>
    uint8_t item = iAP2ListArrayGetFirstItemIndex (link->recvPckList);
    e881037a:	6848                	ld	a0,144(s0)
    while (item != kiAP2ListArrayInvalidIndex)
    e881037c:	0ff00b13          	li	s6,255
                iAP2ListArrayDeleteItem (link->recvPckList, item, _DeletePckCB);
    e8810380:	fffffb97          	auipc	s7,0xfffff
    e8810384:	8e2b8b93          	addi	s7,s7,-1822 # e880ec62 <_DeletePckCB>
    uint8_t item = iAP2ListArrayGetFirstItemIndex (link->recvPckList);
    e8810388:	6ad010ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    e881038c:	84aa                	mv	s1,a0
    while (item != kiAP2ListArrayInvalidIndex)
    e881038e:	11648063          	beq	s1,s6,e881048e <iAP2LinkHandleReadyPacket+0x27a>
        iAP2Packet_t* pck = iAP2LinkPacketForIndex (link->recvPckList, item);
    e8810392:	6848                	ld	a0,144(s0)
    e8810394:	85a6                	mv	a1,s1
    e8810396:	c00ff0ef          	jal	ra,e880f796 <iAP2LinkPacketForIndex>
    e881039a:	892a                	mv	s2,a0
        uint8_t nextItem = iAP2ListArrayGetNextItemIndex (link->recvPckList, item);
    e881039c:	6848                	ld	a0,144(s0)
    e881039e:	85a6                	mv	a1,s1
    e88103a0:	6b1010ef          	jal	ra,e8812250 <iAP2ListArrayGetNextItemIndex>
    e88103a4:	8a2a                	mv	s4,a0
        if (pck)
    e88103a6:	02090763          	beqz	s2,e88103d4 <iAP2LinkHandleReadyPacket+0x1c0>
                               ? iAP2PacketCalcSeqGap (link->recvSeq, pck->pckData->seq)
    e88103aa:	05844783          	lbu	a5,88(s0)
            uint8_t seqDiff = (link->bValidRecvSeq
    e88103ae:	8b85                	andi	a5,a5,1
    e88103b0:	14079363          	bnez	a5,e88104f6 <iAP2LinkHandleReadyPacket+0x2e2>
                iAP2ListArrayDeleteItem (link->recvPckList, item, NULL);
    e88103b4:	6848                	ld	a0,144(s0)
    e88103b6:	4601                	li	a2,0
    e88103b8:	85a6                	mv	a1,s1
    e88103ba:	05c020ef          	jal	ra,e8812416 <iAP2ListArrayDeleteItem>
                iAP2LinkProcessInOrderPacket (link, pck);
    e88103be:	85ca                	mv	a1,s2
    e88103c0:	8522                	mv	a0,s0
    e88103c2:	bb7ff0ef          	jal	ra,e880ff78 <iAP2LinkProcessInOrderPacket>
                iAP2PacketDelete (pck);
    e88103c6:	854a                	mv	a0,s2
    e88103c8:	082010ef          	jal	ra,e881144a <iAP2PacketDelete>
                nextItem = iAP2ListArrayGetFirstItemIndex (link->recvPckList);
    e88103cc:	6848                	ld	a0,144(s0)
    e88103ce:	667010ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    e88103d2:	8a2a                	mv	s4,a0
    BOOL bNeedNotify = FALSE;
    e88103d4:	84d2                	mv	s1,s4
    e88103d6:	bf65                	j	e881038e <iAP2LinkHandleReadyPacket+0x17a>
        if ((packet->pckData->ctl & kIAP2PacketControlMaskSYN) != 0 &&
    e88103d8:	0404c493          	xori	s1,s1,64
    BOOL bProcessPacket = FALSE;
    e88103dc:	1864b48b          	extu	s1,s1,6,6
                bDeletePacket = FALSE;
    e88103e0:	4981                	li	s3,0
    e88103e2:	b725                	j	e881030a <iAP2LinkHandleReadyPacket+0xf6>
    else if (seqDiff >= 0 && seqDiff <= link->param.maxOutstandingPackets &&
    e88103e4:	11544783          	lbu	a5,277(s0)
    e88103e8:	0b27e063          	bltu	a5,s2,e8810488 <iAP2LinkHandleReadyPacket+0x274>
             (iAP2PacketIsEAK (packet) || iAP2PacketIsACKOnly (packet)))
    e88103ec:	6f1000ef          	jal	ra,e88112dc <iAP2PacketIsEAK>
    else if (seqDiff >= 0 && seqDiff <= link->param.maxOutstandingPackets &&
    e88103f0:	14051a63          	bnez	a0,e8810544 <iAP2LinkHandleReadyPacket+0x330>
             (iAP2PacketIsEAK (packet) || iAP2PacketIsACKOnly (packet)))
    e88103f4:	6522                	ld	a0,8(sp)
    e88103f6:	6c5000ef          	jal	ra,e88112ba <iAP2PacketIsACKOnly>
    e88103fa:	84aa                	mv	s1,a0
    e88103fc:	14051463          	bnez	a0,e8810544 <iAP2LinkHandleReadyPacket+0x330>
    else if (seqDiff > 0 && seqDiff <= link->param.maxOutstandingPackets)
    e8810400:	6522                	ld	a0,8(sp)
    e8810402:	08090363          	beqz	s2,e8810488 <iAP2LinkHandleReadyPacket+0x274>
    e8810406:	11544783          	lbu	a5,277(s0)
    e881040a:	0727ef63          	bltu	a5,s2,e8810488 <iAP2LinkHandleReadyPacket+0x274>
        if (iAP2PacketRequireACK(packet))
    e881040e:	51e010ef          	jal	ra,e881192c <iAP2PacketRequireACK>
    e8810412:	67a2                	ld	a5,8(sp)
    e8810414:	c13d                	beqz	a0,e881047a <iAP2LinkHandleReadyPacket+0x266>
            if (!_IsReceivedPacket(link, packet))
    e8810416:	ec3e                	sd	a5,24(sp)
    uint8_t seqDiff = iAP2PacketCalcSeqGap (link->recvSeq, packet->pckData->seq);
    e8810418:	7f9c                	ld	a5,56(a5)
    e881041a:	05244503          	lbu	a0,82(s0)
    e881041e:	0057c583          	lbu	a1,5(a5)
    e8810422:	3a8010ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
    if (seqDiff <= link->param.maxOutstandingPackets)
    e8810426:	11544783          	lbu	a5,277(s0)
    e881042a:	00a7ef63          	bltu	a5,a0,e8810448 <iAP2LinkHandleReadyPacket+0x234>
    return iAP2ListArrayFindItem (listArrayBuffer, packet, func);
    e881042e:	6848                	ld	a0,144(s0)
    e8810430:	ffffe617          	auipc	a2,0xffffe
    e8810434:	7bc60613          	addi	a2,a2,1980 # e880ebec <_iAP2LinkComparePacketSeq>
    e8810438:	082c                	addi	a1,sp,24
    e881043a:	549010ef          	jal	ra,e8812182 <iAP2ListArrayFindItem>
    BOOL bDeletePacket = TRUE;
    e881043e:	4985                	li	s3,1
            if (!_IsReceivedPacket(link, packet))
    e8810440:	0ff00793          	li	a5,255
    e8810444:	ecf513e3          	bne	a0,a5,e881030a <iAP2LinkHandleReadyPacket+0xf6>
                iAP2LinkAddPacketAfter (link->recvPckList,
    e8810448:	09043903          	ld	s2,144(s0)
    e881044c:	854a                	mv	a0,s2
    e881044e:	5f5010ef          	jal	ra,e8812242 <iAP2ListArrayGetLastItemIndex>
    e8810452:	85aa                	mv	a1,a0
    e8810454:	0030                	addi	a2,sp,8
    e8810456:	854a                	mv	a0,s2
    e8810458:	bacff0ef          	jal	ra,e880f804 <iAP2LinkAddPacketAfter>
    if (INVALID_TIMEOUT_ID == link->sendAckTimeoutID)
    e881045c:	05744703          	lbu	a4,87(s0)
    e8810460:	0ff00793          	li	a5,255
    e8810464:	eaf711e3          	bne	a4,a5,e8810306 <iAP2LinkHandleReadyPacket+0xf2>
        link->sendAckTimeoutID = iAP2TimeCallbackAfter(link->mainTimer,
    e8810468:	11c45603          	lhu	a2,284(s0)
    e881046c:	7028                	ld	a0,96(s0)
    e881046e:	45a1                	li	a1,8
    e8810470:	4b8020ef          	jal	ra,e8812928 <iAP2TimeCallbackAfter>
    e8810474:	04a40ba3          	sb	a0,87(s0)
    e8810478:	b7a5                	j	e88103e0 <iAP2LinkHandleReadyPacket+0x1cc>
        else if (iAP2PacketIsACKOnly (packet))
    e881047a:	853e                	mv	a0,a5
    e881047c:	63f000ef          	jal	ra,e88112ba <iAP2PacketIsACKOnly>
    BOOL bProcessPacket = FALSE;
    e8810480:	00a034b3          	snez	s1,a0
    BOOL bDeletePacket = TRUE;
    e8810484:	4985                	li	s3,1
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvLastData);
    e8810486:	b551                	j	e881030a <iAP2LinkHandleReadyPacket+0xf6>
    else if (bSameAsLastReceivedPacket &&
    e8810488:	013a0c63          	beq	s4,s3,e88104a0 <iAP2LinkHandleReadyPacket+0x28c>
    BOOL bNeedNotify = FALSE;
    e881048c:	4985                	li	s3,1
    if (packet && bDeletePacket)
    e881048e:	6522                	ld	a0,8(sp)
    e8810490:	c509                	beqz	a0,e881049a <iAP2LinkHandleReadyPacket+0x286>
    e8810492:	00098463          	beqz	s3,e881049a <iAP2LinkHandleReadyPacket+0x286>
        iAP2PacketDelete (packet);
    e8810496:	7b5000ef          	jal	ra,e881144a <iAP2PacketDelete>
    link->recvPck = NULL;
    e881049a:	08043423          	sd	zero,136(s0)
    e881049e:	bbe1                	j	e8810276 <iAP2LinkHandleReadyPacket+0x62>
             !iAP2PacketIsACKOnly(packet))
    e88104a0:	6522                	ld	a0,8(sp)
    e88104a2:	619000ef          	jal	ra,e88112ba <iAP2PacketIsACKOnly>
    e88104a6:	84aa                	mv	s1,a0
    else if (bSameAsLastReceivedPacket &&
    e88104a8:	f175                	bnez	a0,e881048c <iAP2LinkHandleReadyPacket+0x278>
        iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventRecvLastData);
    e88104aa:	6808                	ld	a0,16(s0)
    e88104ac:	45ad                	li	a1,11
    e88104ae:	267010ef          	jal	ra,e8811f14 <iAP2FSMHandleEvent>
    e88104b2:	bfc9                	j	e8810484 <iAP2LinkHandleReadyPacket+0x270>
        uint8_t nextItem = iAP2ListArrayGetNextItemIndex (link->sendPckList, item);
    e88104b4:	6c48                	ld	a0,152(s0)
    e88104b6:	85ca                	mv	a1,s2
    e88104b8:	599010ef          	jal	ra,e8812250 <iAP2ListArrayGetNextItemIndex>
    e88104bc:	8baa                	mv	s7,a0
        iAP2Packet_t* pck = iAP2LinkPacketForIndex (link->sendPckList, item);
    e88104be:	6c48                	ld	a0,152(s0)
    e88104c0:	85ca                	mv	a1,s2
    e88104c2:	ad4ff0ef          	jal	ra,e880f796 <iAP2LinkPacketForIndex>
        if (pck &&
    e88104c6:	c515                	beqz	a0,e88104f2 <iAP2LinkHandleReadyPacket+0x2de>
            iAP2PacketIsSeqACKd (pck->pckData->seq + pck->seqPlus,
    e88104c8:	7d1c                	ld	a5,56(a0)
    e88104ca:	02754503          	lbu	a0,39(a0)
    e88104ce:	11f44603          	lbu	a2,287(s0)
    e88104d2:	0057c783          	lbu	a5,5(a5)
    e88104d6:	05344583          	lbu	a1,83(s0)
    e88104da:	9d3d                	addw	a0,a0,a5
    e88104dc:	0ff57513          	andi	a0,a0,255
    e88104e0:	430010ef          	jal	ra,e8811910 <iAP2PacketIsSeqACKd>
        if (pck &&
    e88104e4:	c519                	beqz	a0,e88104f2 <iAP2LinkHandleReadyPacket+0x2de>
            iAP2ListArrayDeleteItem (link->sendPckList, item, _DeletePckCB);
    e88104e6:	6c48                	ld	a0,152(s0)
    e88104e8:	865a                	mv	a2,s6
    e88104ea:	85ca                	mv	a1,s2
    e88104ec:	72b010ef          	jal	ra,e8812416 <iAP2ListArrayDeleteItem>
            bNeedNotify = TRUE;
    e88104f0:	4a05                	li	s4,1
    e88104f2:	895e                	mv	s2,s7
    e88104f4:	b5bd                	j	e8810362 <iAP2LinkHandleReadyPacket+0x14e>
                               ? iAP2PacketCalcSeqGap (link->recvSeq, pck->pckData->seq)
    e88104f6:	03893783          	ld	a5,56(s2)
    e88104fa:	05244503          	lbu	a0,82(s0)
    e88104fe:	0057c583          	lbu	a1,5(a5)
    e8810502:	2c8010ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
    e8810506:	8aaa                	mv	s5,a0
            if (!link->bValidRecvSeq ||
    e8810508:	05844783          	lbu	a5,88(s0)
    e881050c:	8b85                	andi	a5,a5,1
    e881050e:	ea0783e3          	beqz	a5,e88103b4 <iAP2LinkHandleReadyPacket+0x1a0>
    e8810512:	11544783          	lbu	a5,277(s0)
    e8810516:	00a7f863          	bgeu	a5,a0,e8810526 <iAP2LinkHandleReadyPacket+0x312>
                iAP2ListArrayDeleteItem (link->recvPckList, item, _DeletePckCB);
    e881051a:	6848                	ld	a0,144(s0)
    e881051c:	865e                	mv	a2,s7
    e881051e:	85a6                	mv	a1,s1
    e8810520:	6f7010ef          	jal	ra,e8812416 <iAP2ListArrayDeleteItem>
                __printPacketList (NULL, "RECV after deleteItem", link, link->recvPckList, TRUE, TRUE);
    e8810524:	bd45                	j	e88103d4 <iAP2LinkHandleReadyPacket+0x1c0>
                 iAP2PacketNextSeq(link->recvSeq) == pck->pckData->seq))
    e8810526:	05244503          	lbu	a0,82(s0)
    e881052a:	298010ef          	jal	ra,e88117c2 <iAP2PacketNextSeq>
    e881052e:	03893783          	ld	a5,56(s2)
                (seqDiff <= link->param.maxOutstandingPackets &&
    e8810532:	0057c783          	lbu	a5,5(a5)
    e8810536:	e6a78fe3          	beq	a5,a0,e88103b4 <iAP2LinkHandleReadyPacket+0x1a0>
            else if (seqDiff > link->param.maxOutstandingPackets)
    e881053a:	11544783          	lbu	a5,277(s0)
    e881053e:	e957fbe3          	bgeu	a5,s5,e88103d4 <iAP2LinkHandleReadyPacket+0x1c0>
    e8810542:	bfe1                	j	e881051a <iAP2LinkHandleReadyPacket+0x306>
    BOOL bDeletePacket = TRUE;
    e8810544:	4985                	li	s3,1
        bProcessPacket = TRUE;
    e8810546:	4485                	li	s1,1
    e8810548:	b3c9                	j	e881030a <iAP2LinkHandleReadyPacket+0xf6>

00000000e881054a <iAP2LinkHandleWaitACKTimeoutLink>:
**  Note: This function is called when the WaitACKTimer expires.
**
****************************************************************
*/
void iAP2LinkHandleWaitACKTimeoutLink (iAP2Link_t* link, uint32_t curTime)
{
    e881054a:	1141                	addi	sp,sp,-16
    e881054c:	e022                	sd	s0,0(sp)
    e881054e:	e406                	sd	ra,8(sp)
    e8810550:	842a                	mv	s0,a0
    assert(link);
    e8810552:	e505                	bnez	a0,e881057a <iAP2LinkHandleWaitACKTimeoutLink+0x30>
    e8810554:	02f00593          	li	a1,47
    e8810558:	00090517          	auipc	a0,0x90
    e881055c:	c4850513          	addi	a0,a0,-952 # e88a01a0 <TWO52+0x5a8>
    e8810560:	6196b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810564:	00150593          	addi	a1,a0,1
    e8810568:	6605                	lui	a2,0x1
    e881056a:	dfc60613          	addi	a2,a2,-516 # dfc <memcmp-0xe87ff204>
    e881056e:	00090517          	auipc	a0,0x90
    e8810572:	c4250513          	addi	a0,a0,-958 # e88a01b0 <TWO52+0x5b8>
    e8810576:	5516b0ef          	jal	ra,e887c2c6 <eLIBs_printf>

    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventWaitACKTimeout);
    e881057a:	6808                	ld	a0,16(s0)
}
    e881057c:	6402                	ld	s0,0(sp)
    e881057e:	60a2                	ld	ra,8(sp)
    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventWaitACKTimeout);
    e8810580:	459d                	li	a1,7
}
    e8810582:	0141                	addi	sp,sp,16
    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventWaitACKTimeout);
    e8810584:	1910106f          	j	e8811f14 <iAP2FSMHandleEvent>

00000000e8810588 <iAP2LinkHandleSendACKTimeoutLink>:
**  Note: This function is called when the SendACKTimer expires.
**
****************************************************************
*/
void iAP2LinkHandleSendACKTimeoutLink (iAP2Link_t* link, uint32_t curTime)
{
    e8810588:	1141                	addi	sp,sp,-16
    e881058a:	e022                	sd	s0,0(sp)
    e881058c:	e406                	sd	ra,8(sp)
    e881058e:	842a                	mv	s0,a0
    assert(link);
    e8810590:	e505                	bnez	a0,e88105b8 <iAP2LinkHandleSendACKTimeoutLink+0x30>
    e8810592:	02f00593          	li	a1,47
    e8810596:	00090517          	auipc	a0,0x90
    e881059a:	c0a50513          	addi	a0,a0,-1014 # e88a01a0 <TWO52+0x5a8>
    e881059e:	5db6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88105a2:	00150593          	addi	a1,a0,1
    e88105a6:	6605                	lui	a2,0x1
    e88105a8:	e1760613          	addi	a2,a2,-489 # e17 <memcmp-0xe87ff1e9>
    e88105ac:	00090517          	auipc	a0,0x90
    e88105b0:	c0450513          	addi	a0,a0,-1020 # e88a01b0 <TWO52+0x5b8>
    e88105b4:	5136b0ef          	jal	ra,e887c2c6 <eLIBs_printf>

    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventSendACKTimeout);
    e88105b8:	6808                	ld	a0,16(s0)
}
    e88105ba:	6402                	ld	s0,0(sp)
    e88105bc:	60a2                	ld	ra,8(sp)
    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventSendACKTimeout);
    e88105be:	45a1                	li	a1,8
}
    e88105c0:	0141                	addi	sp,sp,16
    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventSendACKTimeout);
    e88105c2:	1530106f          	j	e8811f14 <iAP2FSMHandleEvent>

00000000e88105c6 <iAP2LinkHandleWaitDetectTimeoutLink>:
**  Note: This function is called when the WaitDetectTimer expires.
**
****************************************************************
*/
void iAP2LinkHandleWaitDetectTimeoutLink (iAP2Link_t* link, uint32_t curTime)
{
    e88105c6:	1141                	addi	sp,sp,-16
    e88105c8:	e022                	sd	s0,0(sp)
    e88105ca:	e406                	sd	ra,8(sp)
    e88105cc:	842a                	mv	s0,a0
    assert(link);
    e88105ce:	e505                	bnez	a0,e88105f6 <iAP2LinkHandleWaitDetectTimeoutLink+0x30>
    e88105d0:	02f00593          	li	a1,47
    e88105d4:	00090517          	auipc	a0,0x90
    e88105d8:	bcc50513          	addi	a0,a0,-1076 # e88a01a0 <TWO52+0x5a8>
    e88105dc:	59d6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88105e0:	00150593          	addi	a1,a0,1
    e88105e4:	6605                	lui	a2,0x1
    e88105e6:	e3260613          	addi	a2,a2,-462 # e32 <memcmp-0xe87ff1ce>
    e88105ea:	00090517          	auipc	a0,0x90
    e88105ee:	bc650513          	addi	a0,a0,-1082 # e88a01b0 <TWO52+0x5b8>
    e88105f2:	4d56b0ef          	jal	ra,e887c2c6 <eLIBs_printf>

    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventWaitDetectTimeout);
    e88105f6:	6808                	ld	a0,16(s0)
}
    e88105f8:	6402                	ld	s0,0(sp)
    e88105fa:	60a2                	ld	ra,8(sp)
    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventWaitDetectTimeout);
    e88105fc:	45d1                	li	a1,20
}
    e88105fe:	0141                	addi	sp,sp,16
    iAP2FSMHandleEvent (link->fsm, kiAP2LinkEventWaitDetectTimeout);
    e8810600:	1150106f          	j	e8811f14 <iAP2FSMHandleEvent>

00000000e8810604 <_iAP2LinkHandleTimerExpire>:
    if (timer)
    e8810604:	c125                	beqz	a0,e8810664 <_iAP2LinkHandleTimerExpire+0x60>
{
    e8810606:	7179                	addi	sp,sp,-48
    e8810608:	f406                	sd	ra,40(sp)
    e881060a:	ec36                	sd	a3,24(sp)
    e881060c:	e832                	sd	a2,16(sp)
    e881060e:	e42e                	sd	a1,8(sp)
        iAP2Link_t* link = (iAP2Link_t*) iAP2TimeGetContext (timer);
    e8810610:	314020ef          	jal	ra,e8812924 <iAP2TimeGetContext>
        if (link)
    e8810614:	c529                	beqz	a0,e881065e <_iAP2LinkHandleTimerExpire+0x5a>
            if (link->bUseiAP2LinkRunLoop)
    e8810616:	05854703          	lbu	a4,88(a0)
    e881061a:	65a2                	ld	a1,8(sp)
    e881061c:	fad1460b          	ldd	a2,a3,(sp),1,4
    e8810620:	8b41                	andi	a4,a4,16
    e8810622:	c711                	beqz	a4,e881062e <_iAP2LinkHandleTimerExpire+0x2a>
}
    e8810624:	70a2                	ld	ra,40(sp)
                iAP2LinkRunLoopTimeout (link->context,
    e8810626:	6528                	ld	a0,72(a0)
}
    e8810628:	6145                	addi	sp,sp,48
                iAP2LinkRunLoopTimeout (link->context,
    e881062a:	3ed0006f          	j	e8811216 <iAP2LinkRunLoopTimeout>
                switch (timeoutType)
    e881062e:	47a1                	li	a5,8
    e8810630:	00f60d63          	beq	a2,a5,e881064a <_iAP2LinkHandleTimerExpire+0x46>
    e8810634:	47d1                	li	a5,20
    e8810636:	00f60f63          	beq	a2,a5,e8810654 <_iAP2LinkHandleTimerExpire+0x50>
    e881063a:	479d                	li	a5,7
    e881063c:	02f61163          	bne	a2,a5,e881065e <_iAP2LinkHandleTimerExpire+0x5a>
}
    e8810640:	70a2                	ld	ra,40(sp)
                        iAP2LinkHandleWaitACKTimeoutLink (link, curTime);
    e8810642:	85b6                	mv	a1,a3
}
    e8810644:	6145                	addi	sp,sp,48
                        iAP2LinkHandleWaitACKTimeoutLink (link, curTime);
    e8810646:	f05ff06f          	j	e881054a <iAP2LinkHandleWaitACKTimeoutLink>
}
    e881064a:	70a2                	ld	ra,40(sp)
                        iAP2LinkHandleSendACKTimeoutLink (link, curTime);
    e881064c:	85b6                	mv	a1,a3
}
    e881064e:	6145                	addi	sp,sp,48
                        iAP2LinkHandleSendACKTimeoutLink (link, curTime);
    e8810650:	f39ff06f          	j	e8810588 <iAP2LinkHandleSendACKTimeoutLink>
}
    e8810654:	70a2                	ld	ra,40(sp)
                        iAP2LinkHandleWaitDetectTimeoutLink (link, curTime);
    e8810656:	85b6                	mv	a1,a3
}
    e8810658:	6145                	addi	sp,sp,48
                        iAP2LinkHandleWaitDetectTimeoutLink (link, curTime);
    e881065a:	f6dff06f          	j	e88105c6 <iAP2LinkHandleWaitDetectTimeoutLink>
}
    e881065e:	70a2                	ld	ra,40(sp)
    e8810660:	6145                	addi	sp,sp,48
    e8810662:	8082                	ret
    e8810664:	8082                	ret

00000000e8810666 <iAP2LinkGetSessionInfo>:
*/
iAP2PacketSessionInfo_t* iAP2LinkGetSessionInfo (iAP2Link_t* link,
                                                 uint8_t     session)
{
    iAP2PacketSessionInfo_t* pSession = NULL;
    if (link && link->param.numSessionInfo)
    e8810666:	c51d                	beqz	a0,e8810694 <iAP2LinkGetSessionInfo+0x2e>
    e8810668:	11e54603          	lbu	a2,286(a0)
    e881066c:	c21d                	beqz	a2,e8810692 <iAP2LinkGetSessionInfo+0x2c>
    e881066e:	12450693          	addi	a3,a0,292
    {
        uint8_t i;
        for (i = 0; i < link->param.numSessionInfo; ++i)
    e8810672:	4781                	li	a5,0
    iAP2PacketSessionInfo_t* pSession = NULL;
    e8810674:	4501                	li	a0,0
        {
            if (link->param.sessionInfo[i].id == session)
    e8810676:	0006c703          	lbu	a4,0(a3)
        for (i = 0; i < link->param.numSessionInfo; ++i)
    e881067a:	2785                	addiw	a5,a5,1
    e881067c:	0ff7f793          	andi	a5,a5,255
            {
                pSession = &(link->param.sessionInfo[i]);
    e8810680:	8f0d                	sub	a4,a4,a1
    e8810682:	00e03733          	snez	a4,a4
    e8810686:	40e6950b          	mveqz	a0,a3,a4
        for (i = 0; i < link->param.numSessionInfo; ++i)
    e881068a:	068d                	addi	a3,a3,3
    e881068c:	fef615e3          	bne	a2,a5,e8810676 <iAP2LinkGetSessionInfo+0x10>
    e8810690:	8082                	ret
    iAP2PacketSessionInfo_t* pSession = NULL;
    e8810692:	4501                	li	a0,0
            }
        }
    }
    return pSession;
}
    e8810694:	8082                	ret

00000000e8810696 <iAP2LinkActionHandleData>:
{
    e8810696:	7179                	addi	sp,sp,-48
    e8810698:	fa91540b          	sdd	s0,s1,(sp),1,4
    e881069c:	f406                	sd	ra,40(sp)
    e881069e:	f04a                	sd	s2,32(sp)
    e88106a0:	842a                	mv	s0,a0
    e88106a2:	84ae                	mv	s1,a1
    assert(fsm);
    e88106a4:	e11d                	bnez	a0,e88106ca <iAP2LinkActionHandleData+0x34>
    e88106a6:	02f00593          	li	a1,47
    e88106aa:	00090517          	auipc	a0,0x90
    e88106ae:	af650513          	addi	a0,a0,-1290 # e88a01a0 <TWO52+0x5a8>
    e88106b2:	4c76b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88106b6:	00150593          	addi	a1,a0,1
    e88106ba:	3f200613          	li	a2,1010
    e88106be:	00090517          	auipc	a0,0x90
    e88106c2:	af250513          	addi	a0,a0,-1294 # e88a01b0 <TWO52+0x5b8>
    e88106c6:	4016b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e88106ca:	e09d                	bnez	s1,e88106f0 <iAP2LinkActionHandleData+0x5a>
    e88106cc:	02f00593          	li	a1,47
    e88106d0:	00090517          	auipc	a0,0x90
    e88106d4:	ad050513          	addi	a0,a0,-1328 # e88a01a0 <TWO52+0x5a8>
    e88106d8:	4a16b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88106dc:	00150593          	addi	a1,a0,1
    e88106e0:	3f300613          	li	a2,1011
    e88106e4:	00090517          	auipc	a0,0x90
    e88106e8:	acc50513          	addi	a0,a0,-1332 # e88a01b0 <TWO52+0x5b8>
    e88106ec:	3db6b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e88106f0:	47d9                	li	a5,22
    e88106f2:	c09c                	sw	a5,0(s1)
    link = (iAP2Link_t*) fsm->data;
    e88106f4:	6c00                	ld	s0,24(s0)
    pck = link->recvPck;
    e88106f6:	6444                	ld	s1,136(s0)
    pSession = iAP2LinkGetSessionInfo (link, pck->pckData->sess);
    e88106f8:	8522                	mv	a0,s0
    e88106fa:	7c9c                	ld	a5,56(s1)
    e88106fc:	0077c683          	lbu	a3,7(a5)
    e8810700:	85b6                	mv	a1,a3
    e8810702:	e436                	sd	a3,8(sp)
    e8810704:	f63ff0ef          	jal	ra,e8810666 <iAP2LinkGetSessionInfo>
    if (pSession)
    e8810708:	66a2                	ld	a3,8(sp)
    e881070a:	c531                	beqz	a0,e8810756 <iAP2LinkActionHandleData+0xc0>
        (*link->recvDataCB) (link,
    e881070c:	8526                	mv	a0,s1
    e881070e:	02843903          	ld	s2,40(s0)
    e8810712:	58d000ef          	jal	ra,e881149e <iAP2PacketGetPayload>
    e8810716:	e42a                	sd	a0,8(sp)
                             iAP2PacketGetPayloadLen (pck),
    e8810718:	8526                	mv	a0,s1
    e881071a:	58b000ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
        (*link->recvDataCB) (link,
    e881071e:	0005061b          	sext.w	a2,a0
    e8810722:	7c9c                	ld	a5,56(s1)
    e8810724:	65a2                	ld	a1,8(sp)
    e8810726:	8522                	mv	a0,s0
    e8810728:	0077c683          	lbu	a3,7(a5)
    e881072c:	9902                	jalr	s2
    if (INVALID_TIMEOUT_ID == link->sendAckTimeoutID)
    e881072e:	05744703          	lbu	a4,87(s0)
    e8810732:	0ff00793          	li	a5,255
    e8810736:	00f71a63          	bne	a4,a5,e881074a <iAP2LinkActionHandleData+0xb4>
        link->sendAckTimeoutID = iAP2TimeCallbackAfter(link->mainTimer,
    e881073a:	11c45603          	lhu	a2,284(s0)
    e881073e:	7028                	ld	a0,96(s0)
    e8810740:	45a1                	li	a1,8
    e8810742:	1e6020ef          	jal	ra,e8812928 <iAP2TimeCallbackAfter>
    e8810746:	04a40ba3          	sb	a0,87(s0)
}
    e881074a:	70a2                	ld	ra,40(sp)
    e881074c:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8810750:	7902                	ld	s2,32(sp)
    e8810752:	6145                	addi	sp,sp,48
    e8810754:	8082                	ret
        iAP2LogError("%s:%d Invalid session(%u)!\n", __FILE__, __LINE__, pck->pckData->sess);
    e8810756:	40e00613          	li	a2,1038
    e881075a:	00090597          	auipc	a1,0x90
    e881075e:	a4658593          	addi	a1,a1,-1466 # e88a01a0 <TWO52+0x5a8>
    e8810762:	00090517          	auipc	a0,0x90
    e8810766:	a9e50513          	addi	a0,a0,-1378 # e88a0200 <__FUNCTION__.7541+0x40>
    e881076a:	73b010ef          	jal	ra,e88126a4 <iAP2LogError>
    e881076e:	b7c1                	j	e881072e <iAP2LinkActionHandleData+0x98>

00000000e8810770 <iAP2LinkQueueSendData>:
{
    e8810770:	7175                	addi	sp,sp,-144
    e8810772:	e122                	sd	s0,128(sp)
    e8810774:	f4ce                	sd	s3,104(sp)
    e8810776:	f0d2                	sd	s4,96(sp)
    e8810778:	e506                	sd	ra,136(sp)
    e881077a:	fca6                	sd	s1,120(sp)
    e881077c:	f8ca                	sd	s2,112(sp)
    e881077e:	ecd6                	sd	s5,88(sp)
    e8810780:	e8da                	sd	s6,80(sp)
    e8810782:	e4de                	sd	s7,72(sp)
    e8810784:	e0e2                	sd	s8,64(sp)
    e8810786:	fc66                	sd	s9,56(sp)
    e8810788:	f86a                	sd	s10,48(sp)
    e881078a:	f46e                	sd	s11,40(sp)
    e881078c:	842a                	mv	s0,a0
    e881078e:	8a2e                	mv	s4,a1
    e8810790:	89b2                	mv	s3,a2
    if (link != NULL && payload != NULL && payloadLen > 0)
    e8810792:	10050e63          	beqz	a0,e88108ae <iAP2LinkQueueSendData+0x13e>
    e8810796:	10058c63          	beqz	a1,e88108ae <iAP2LinkQueueSendData+0x13e>
    e881079a:	10060a63          	beqz	a2,e88108ae <iAP2LinkQueueSendData+0x13e>
        iAP2PacketSessionInfo_t* pSession = iAP2LinkGetSessionInfo (link, session);
    e881079e:	85b6                	mv	a1,a3
    e88107a0:	8ab6                	mv	s5,a3
    e88107a2:	8bba                	mv	s7,a4
    e88107a4:	8c3e                	mv	s8,a5
    e88107a6:	ec1ff0ef          	jal	ra,e8810666 <iAP2LinkGetSessionInfo>
        if (pSession)
    e88107aa:	c175                	beqz	a0,e881088e <iAP2LinkQueueSendData+0x11e>
            uint8_t*        sessSendPckList = link->sessSendPckList[pSession->type];
    e88107ac:	00154783          	lbu	a5,1(a0)
    e88107b0:	07d1                	addi	a5,a5,20
    e88107b2:	66f44b0b          	lrd	s6,s0,a5,3
            if (sessSendPckList)
    e88107b6:	020b1663          	bnez	s6,e88107e2 <iAP2LinkQueueSendData+0x72>
            result = TRUE; /* assume success */
    e88107ba:	4485                	li	s1,1
            link->signalSendBuffCB (link);
    e88107bc:	603c                	ld	a5,64(s0)
    e88107be:	8522                	mv	a0,s0
    e88107c0:	9782                	jalr	a5
}
    e88107c2:	60aa                	ld	ra,136(sp)
    e88107c4:	640a                	ld	s0,128(sp)
    e88107c6:	8526                	mv	a0,s1
    e88107c8:	7946                	ld	s2,112(sp)
    e88107ca:	74e6                	ld	s1,120(sp)
    e88107cc:	79a6                	ld	s3,104(sp)
    e88107ce:	7a06                	ld	s4,96(sp)
    e88107d0:	6ae6                	ld	s5,88(sp)
    e88107d2:	6b46                	ld	s6,80(sp)
    e88107d4:	6ba6                	ld	s7,72(sp)
    e88107d6:	6c06                	ld	s8,64(sp)
    e88107d8:	7ce2                	ld	s9,56(sp)
    e88107da:	7d42                	ld	s10,48(sp)
    e88107dc:	7da2                	ld	s11,40(sp)
    e88107de:	6149                	addi	sp,sp,144
    e88107e0:	8082                	ret
            uint32_t        dataLen = iAP2LinkGetMaxSendPayloadSize (link);
    e88107e2:	8522                	mv	a0,s0
    e88107e4:	dbdfe0ef          	jal	ra,e880f5a0 <iAP2LinkGetMaxSendPayloadSize>
    e88107e8:	2501                	sext.w	a0,a0
    e88107ea:	01353933          	sltu	s2,a0,s3
    e88107ee:	87aa                	mv	a5,a0
    e88107f0:	4129978b          	mveqz	a5,s3,s2
    e88107f4:	0007891b          	sext.w	s2,a5
    e88107f8:	8cd2                	mv	s9,s4
            uint32_t        doneLen = 0;
    e88107fa:	4d01                	li	s10,0
                while (result && doneLen < payloadLen)
    e88107fc:	fb3d7fe3          	bgeu	s10,s3,e88107ba <iAP2LinkQueueSendData+0x4a>
                    if (dataLen > (payloadLen - doneLen))
    e8810800:	41a98dbb          	subw	s11,s3,s10
    e8810804:	01b934b3          	sltu	s1,s2,s11
    e8810808:	88ee                	mv	a7,s11
    e881080a:	4299188b          	mvnez	a7,s2,s1
                    packet = iAP2PacketCreateACKPacket (link,
    e881080e:	05544603          	lbu	a2,85(s0)
    e8810812:	05444583          	lbu	a1,84(s0)
    e8810816:	84c6                	mv	s1,a7
    e8810818:	87d6                	mv	a5,s5
    e881081a:	8726                	mv	a4,s1
    e881081c:	86e6                	mv	a3,s9
    e881081e:	8522                	mv	a0,s0
    e8810820:	5cd000ef          	jal	ra,e88115ec <iAP2PacketCreateACKPacket>
    e8810824:	ec2a                	sd	a0,24(sp)
                    if (packet)
    e8810826:	c91d                	beqz	a0,e881085c <iAP2LinkQueueSendData+0xec>
                        if (last)
    e8810828:	03b96563          	bltu	s2,s11,e8810852 <iAP2LinkQueueSendData+0xe2>
                            packet->cbContext      = context;
    e881082c:	01753423          	sd	s7,8(a0)
                            packet->callbackOnSend = (void*) callback;
    e8810830:	01853823          	sd	s8,16(a0)
                        iAP2LinkAddPacketAfter (sessSendPckList,
    e8810834:	855a                	mv	a0,s6
    e8810836:	20d010ef          	jal	ra,e8812242 <iAP2ListArrayGetLastItemIndex>
    e881083a:	85aa                	mv	a1,a0
    e881083c:	0830                	addi	a2,sp,24
    e881083e:	855a                	mv	a0,s6
    e8810840:	fc5fe0ef          	jal	ra,e880f804 <iAP2LinkAddPacketAfter>
                        doneLen += dataLen;
    e8810844:	01a48d3b          	addw	s10,s1,s10
                        data += dataLen;
    e8810848:	7c04b78b          	extu	a5,s1,31,0
    e881084c:	9cbe                	add	s9,s9,a5
                while (result && doneLen < payloadLen)
    e881084e:	8926                	mv	s2,s1
    e8810850:	b775                	j	e88107fc <iAP2LinkQueueSendData+0x8c>
                            packet->cbContext      = NULL;
    e8810852:	00053423          	sd	zero,8(a0)
                            packet->callbackOnSend = NULL;
    e8810856:	00053823          	sd	zero,16(a0)
    e881085a:	bfe9                	j	e8810834 <iAP2LinkQueueSendData+0xc4>
                                     __FILE__, __LINE__, iAP2ListArrayGetCount (sessSendPckList),
    e881085c:	855a                	mv	a0,s6
    e881085e:	1cb010ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
                        iAP2LogError("%s:%d QueueSendData Ran out of Send Packets! listCount=%u payload=%p payloadLen=%u data=%p dataLen=%u session=%u\n",
    e8810862:	0005069b          	sext.w	a3,a0
    e8810866:	6605                	lui	a2,0x1
    e8810868:	88a6                	mv	a7,s1
    e881086a:	e056                	sd	s5,0(sp)
    e881086c:	8866                	mv	a6,s9
    e881086e:	87ce                	mv	a5,s3
    e8810870:	8752                	mv	a4,s4
    e8810872:	99360613          	addi	a2,a2,-1645 # 993 <memcmp-0xe87ff66d>
    e8810876:	00090597          	auipc	a1,0x90
    e881087a:	92a58593          	addi	a1,a1,-1750 # e88a01a0 <TWO52+0x5a8>
    e881087e:	00090517          	auipc	a0,0x90
    e8810882:	c2250513          	addi	a0,a0,-990 # e88a04a0 <__FUNCTION__.7541+0x2e0>
    e8810886:	61f010ef          	jal	ra,e88126a4 <iAP2LogError>
                while (result && doneLen < payloadLen)
    e881088a:	4481                	li	s1,0
    e881088c:	bf05                	j	e88107bc <iAP2LinkQueueSendData+0x4c>
            iAP2LogError("%s:%d Invalid session(%u)!\n", __FILE__, __LINE__, session);
    e881088e:	6605                	lui	a2,0x1
    e8810890:	86d6                	mv	a3,s5
    e8810892:	99e60613          	addi	a2,a2,-1634 # 99e <memcmp-0xe87ff662>
    e8810896:	00090597          	auipc	a1,0x90
    e881089a:	90a58593          	addi	a1,a1,-1782 # e88a01a0 <TWO52+0x5a8>
    e881089e:	00090517          	auipc	a0,0x90
    e88108a2:	96250513          	addi	a0,a0,-1694 # e88a0200 <__FUNCTION__.7541+0x40>
    e88108a6:	5ff010ef          	jal	ra,e88126a4 <iAP2LogError>
    BOOL result = FALSE;
    e88108aa:	4481                	li	s1,0
    e88108ac:	bf19                	j	e88107c2 <iAP2LinkQueueSendData+0x52>
        iAP2LogError("%s:%d NULL link(%p) or payload(%p) or no payload (len=%u)!\n",
    e88108ae:	6605                	lui	a2,0x1
    e88108b0:	87ce                	mv	a5,s3
    e88108b2:	8752                	mv	a4,s4
    e88108b4:	86a2                	mv	a3,s0
    e88108b6:	9a460613          	addi	a2,a2,-1628 # 9a4 <memcmp-0xe87ff65c>
    e88108ba:	00090597          	auipc	a1,0x90
    e88108be:	8e658593          	addi	a1,a1,-1818 # e88a01a0 <TWO52+0x5a8>
    e88108c2:	00090517          	auipc	a0,0x90
    e88108c6:	c5650513          	addi	a0,a0,-938 # e88a0518 <__FUNCTION__.7541+0x358>
    e88108ca:	5db010ef          	jal	ra,e88126a4 <iAP2LogError>
    e88108ce:	bff1                	j	e88108aa <iAP2LinkQueueSendData+0x13a>

00000000e88108d0 <iAP2LinkGetMainTimer>:
****************************************************************
*/
iAP2Timer_t* iAP2LinkGetMainTimer (iAP2Link_t* link)
{
    return link->mainTimer;
}
    e88108d0:	7128                	ld	a0,96(a0)
    e88108d2:	8082                	ret

00000000e88108d4 <iAP2LinkSetUseiAP2LinkRunLoop>:
**
****************************************************************
*/
void iAP2LinkSetUseiAP2LinkRunLoop (iAP2Link_t* link)
{
    link->bUseiAP2LinkRunLoop = TRUE;
    e88108d4:	05854783          	lbu	a5,88(a0)
    e88108d8:	0107e793          	ori	a5,a5,16
    e88108dc:	04f50c23          	sb	a5,88(a0)
}
    e88108e0:	8082                	ret

00000000e88108e2 <iAP2LinkAccessoryActionHandleSuspend>:
**  iAP2LinkAccessoryActionHandleSuspend
**
****************************************************************
*/
void iAP2LinkAccessoryActionHandleSuspend (struct iAP2FSM_st* fsm, unsigned int* nextEvent)
{
    e88108e2:	1141                	addi	sp,sp,-16
    e88108e4:	e022                	sd	s0,0(sp)
    e88108e6:	e406                	sd	ra,8(sp)
    e88108e8:	842e                	mv	s0,a1
    assert(fsm);
    e88108ea:	e11d                	bnez	a0,e8810910 <iAP2LinkAccessoryActionHandleSuspend+0x2e>
    e88108ec:	02f00593          	li	a1,47
    e88108f0:	00090517          	auipc	a0,0x90
    e88108f4:	df850513          	addi	a0,a0,-520 # e88a06e8 <kIap2PacketDetectData+0x20>
    e88108f8:	2816b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88108fc:	00150593          	addi	a1,a0,1
    e8810900:	2dc00613          	li	a2,732
    e8810904:	00090517          	auipc	a0,0x90
    e8810908:	8ac50513          	addi	a0,a0,-1876 # e88a01b0 <TWO52+0x5b8>
    e881090c:	1bb6b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e8810910:	e01d                	bnez	s0,e8810936 <iAP2LinkAccessoryActionHandleSuspend+0x54>
    e8810912:	02f00593          	li	a1,47
    e8810916:	00090517          	auipc	a0,0x90
    e881091a:	dd250513          	addi	a0,a0,-558 # e88a06e8 <kIap2PacketDetectData+0x20>
    e881091e:	25b6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810922:	00150593          	addi	a1,a0,1
    e8810926:	2dd00613          	li	a2,733
    e881092a:	00090517          	auipc	a0,0x90
    e881092e:	88650513          	addi	a0,a0,-1914 # e88a01b0 <TWO52+0x5b8>
    e8810932:	1956b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e8810936:	47d9                	li	a5,22
    e8810938:	c01c                	sw	a5,0(s0)
}
    e881093a:	60a2                	ld	ra,8(sp)
    e881093c:	6402                	ld	s0,0(sp)
    e881093e:	0141                	addi	sp,sp,16
    e8810940:	8082                	ret

00000000e8810942 <iAP2LinkAccessoryActionSendDetect>:
{
    e8810942:	1101                	addi	sp,sp,-32
    e8810944:	e422                	sd	s0,8(sp)
    e8810946:	e826                	sd	s1,16(sp)
    e8810948:	ec06                	sd	ra,24(sp)
    e881094a:	842a                	mv	s0,a0
    e881094c:	84ae                	mv	s1,a1
    assert(fsm);
    e881094e:	e11d                	bnez	a0,e8810974 <iAP2LinkAccessoryActionSendDetect+0x32>
    e8810950:	02f00593          	li	a1,47
    e8810954:	00090517          	auipc	a0,0x90
    e8810958:	d9450513          	addi	a0,a0,-620 # e88a06e8 <kIap2PacketDetectData+0x20>
    e881095c:	21d6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810960:	00150593          	addi	a1,a0,1
    e8810964:	14b00613          	li	a2,331
    e8810968:	00090517          	auipc	a0,0x90
    e881096c:	84850513          	addi	a0,a0,-1976 # e88a01b0 <TWO52+0x5b8>
    e8810970:	1576b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e8810974:	e09d                	bnez	s1,e881099a <iAP2LinkAccessoryActionSendDetect+0x58>
    e8810976:	02f00593          	li	a1,47
    e881097a:	00090517          	auipc	a0,0x90
    e881097e:	d6e50513          	addi	a0,a0,-658 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810982:	1f76b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810986:	00150593          	addi	a1,a0,1
    e881098a:	14c00613          	li	a2,332
    e881098e:	00090517          	auipc	a0,0x90
    e8810992:	82250513          	addi	a0,a0,-2014 # e88a01b0 <TWO52+0x5b8>
    e8810996:	1316b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e881099a:	47d9                	li	a5,22
    e881099c:	c09c                	sw	a5,0(s1)
    link = (iAP2Link_t*) fsm->data;
    e881099e:	6c00                	ld	s0,24(s0)
    if (link->detectAckTimeoutID != INVALID_TIMEOUT_ID)
    e88109a0:	0ff00793          	li	a5,255
    e88109a4:	05644583          	lbu	a1,86(s0)
    e88109a8:	00f58863          	beq	a1,a5,e88109b8 <iAP2LinkAccessoryActionSendDetect+0x76>
        iAP2TimeCancelTimer (link->mainTimer, link->detectAckTimeoutID);
    e88109ac:	7028                	ld	a0,96(s0)
    e88109ae:	7dd010ef          	jal	ra,e881298a <iAP2TimeCancelTimer>
        link->detectAckTimeoutID = INVALID_TIMEOUT_ID;
    e88109b2:	57fd                	li	a5,-1
    e88109b4:	04f40b23          	sb	a5,86(s0)
    iAP2LinkResetSeqAck (link, FALSE);
    e88109b8:	4581                	li	a1,0
    e88109ba:	8522                	mv	a0,s0
    e88109bc:	d6ffe0ef          	jal	ra,e880f72a <iAP2LinkResetSeqAck>
    if (link->sendDetectCB)
    e88109c0:	7c1c                	ld	a5,56(s0)
    e88109c2:	cf81                	beqz	a5,e88109da <iAP2LinkAccessoryActionSendDetect+0x98>
        (*link->sendDetectCB) (link, FALSE);
    e88109c4:	4581                	li	a1,0
    e88109c6:	8522                	mv	a0,s0
    e88109c8:	9782                	jalr	a5
            link->detectAckTimeoutID = iAP2TimeCallbackAfter (link->mainTimer,
    e88109ca:	7028                	ld	a0,96(s0)
    e88109cc:	3e800613          	li	a2,1000
    e88109d0:	45d1                	li	a1,20
    e88109d2:	757010ef          	jal	ra,e8812928 <iAP2TimeCallbackAfter>
    e88109d6:	04a40b23          	sb	a0,86(s0)
}
    e88109da:	60e2                	ld	ra,24(sp)
    e88109dc:	6422                	ld	s0,8(sp)
    e88109de:	64c2                	ld	s1,16(sp)
    e88109e0:	6105                	addi	sp,sp,32
    e88109e2:	8082                	ret

00000000e88109e4 <iAP2LinkAccessoryActionResendSYN>:
{
    e88109e4:	7139                	addi	sp,sp,-64
    e88109e6:	f84a                	sd	s2,48(sp)
    e88109e8:	fc91540b          	sdd	s0,s1,(sp),2,4
    e88109ec:	fc06                	sd	ra,56(sp)
    e88109ee:	842a                	mv	s0,a0
    e88109f0:	892e                	mv	s2,a1
    assert(fsm);
    e88109f2:	e11d                	bnez	a0,e8810a18 <iAP2LinkAccessoryActionResendSYN+0x34>
    e88109f4:	02f00593          	li	a1,47
    e88109f8:	00090517          	auipc	a0,0x90
    e88109fc:	cf050513          	addi	a0,a0,-784 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810a00:	1796b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810a04:	00150593          	addi	a1,a0,1
    e8810a08:	17b00613          	li	a2,379
    e8810a0c:	0008f517          	auipc	a0,0x8f
    e8810a10:	7a450513          	addi	a0,a0,1956 # e88a01b0 <TWO52+0x5b8>
    e8810a14:	0b36b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e8810a18:	02091463          	bnez	s2,e8810a40 <iAP2LinkAccessoryActionResendSYN+0x5c>
    e8810a1c:	02f00593          	li	a1,47
    e8810a20:	00090517          	auipc	a0,0x90
    e8810a24:	cc850513          	addi	a0,a0,-824 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810a28:	1516b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810a2c:	00150593          	addi	a1,a0,1
    e8810a30:	17c00613          	li	a2,380
    e8810a34:	0008f517          	auipc	a0,0x8f
    e8810a38:	77c50513          	addi	a0,a0,1916 # e88a01b0 <TWO52+0x5b8>
    e8810a3c:	08b6b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e8810a40:	47d9                	li	a5,22
    e8810a42:	00f92023          	sw	a5,0(s2)
    link = (iAP2Link_t*) fsm->data;
    e8810a46:	6c00                	ld	s0,24(s0)
    if (link->detectAckTimeoutID != INVALID_TIMEOUT_ID)
    e8810a48:	0ff00793          	li	a5,255
    e8810a4c:	05644583          	lbu	a1,86(s0)
    e8810a50:	00f58863          	beq	a1,a5,e8810a60 <iAP2LinkAccessoryActionResendSYN+0x7c>
        iAP2TimeCancelTimer (link->mainTimer, link->detectAckTimeoutID);
    e8810a54:	7028                	ld	a0,96(s0)
    e8810a56:	735010ef          	jal	ra,e881298a <iAP2TimeCancelTimer>
        link->detectAckTimeoutID = INVALID_TIMEOUT_ID;
    e8810a5a:	57fd                	li	a5,-1
    e8810a5c:	04f40b23          	sb	a5,86(s0)
    memcpy (&(link->negotiatedParam),
    e8810a60:	02e00613          	li	a2,46
    e8810a64:	0b840593          	addi	a1,s0,184
    e8810a68:	0e640513          	addi	a0,s0,230
    e8810a6c:	1356b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    if (link->connectedCB)
    e8810a70:	781c                	ld	a5,48(s0)
    e8810a72:	c781                	beqz	a5,e8810a7a <iAP2LinkAccessoryActionResendSYN+0x96>
        (*link->connectedCB) (link, FALSE);
    e8810a74:	4581                	li	a1,0
    e8810a76:	8522                	mv	a0,s0
    e8810a78:	9782                	jalr	a5
    if (!link->bValidSentSeq)
    e8810a7a:	05844783          	lbu	a5,88(s0)
    e8810a7e:	0047f713          	andi	a4,a5,4
    e8810a82:	eb09                	bnez	a4,e8810a94 <iAP2LinkAccessoryActionResendSYN+0xb0>
        link->sentSeq = link->startSeq;
    e8810a84:	05144703          	lbu	a4,81(s0)
        link->bValidSentSeq = TRUE;
    e8810a88:	0047e793          	ori	a5,a5,4
    e8810a8c:	04f40c23          	sb	a5,88(s0)
        link->sentSeq = link->startSeq;
    e8810a90:	04e40a23          	sb	a4,84(s0)
                                     link->negotiatedParam.sessionInfo);
    e8810a94:	0f640613          	addi	a2,s0,246
    pck = iAP2PacketCreateSYNPacket (link,
    e8810a98:	0ea45783          	lhu	a5,234(s0)
    e8810a9c:	0e744703          	lbu	a4,231(s0)
    e8810aa0:	0ee45883          	lhu	a7,238(s0)
    e8810aa4:	0ec45803          	lhu	a6,236(s0)
    e8810aa8:	0b844683          	lbu	a3,184(s0)
    e8810aac:	05444583          	lbu	a1,84(s0)
    e8810ab0:	ec32                	sd	a2,24(sp)
    e8810ab2:	0f044603          	lbu	a2,240(s0)
    e8810ab6:	8522                	mv	a0,s0
    e8810ab8:	e832                	sd	a2,16(sp)
    e8810aba:	0e944603          	lbu	a2,233(s0)
    e8810abe:	e432                	sd	a2,8(sp)
    e8810ac0:	0e844603          	lbu	a2,232(s0)
    e8810ac4:	e032                	sd	a2,0(sp)
    e8810ac6:	4601                	li	a2,0
    e8810ac8:	339000ef          	jal	ra,e8811600 <iAP2PacketCreateSYNPacket>
    e8810acc:	84aa                	mv	s1,a0
    if (link->bIgnoreSynRetryLimit ||
    e8810ace:	05844703          	lbu	a4,88(s0)
    e8810ad2:	16442783          	lw	a5,356(s0)
    e8810ad6:	02077713          	andi	a4,a4,32
    e8810ada:	e709                	bnez	a4,e8810ae4 <iAP2LinkAccessoryActionResendSYN+0x100>
    e8810adc:	11644703          	lbu	a4,278(s0)
    e8810ae0:	02e7f563          	bgeu	a5,a4,e8810b0a <iAP2LinkAccessoryActionResendSYN+0x126>
        ++(link->numResentSYN);
    e8810ae4:	2785                	addiw	a5,a5,1
    e8810ae6:	16f42223          	sw	a5,356(s0)
        iAP2LinkSendPacket (link, pck, TRUE, "Accessory:ResendSYN");
    e8810aea:	85a6                	mv	a1,s1
        pck->retransmitCount = link->numResentSYN;
    e8810aec:	02f48423          	sb	a5,40(s1)
        iAP2LinkSendPacket (link, pck, TRUE, "Accessory:ResendSYN");
    e8810af0:	8522                	mv	a0,s0
}
    e8810af2:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8810af6:	70e2                	ld	ra,56(sp)
    e8810af8:	7942                	ld	s2,48(sp)
        iAP2LinkSendPacket (link, pck, TRUE, "Accessory:ResendSYN");
    e8810afa:	00090697          	auipc	a3,0x90
    e8810afe:	c8e68693          	addi	a3,a3,-882 # e88a0788 <kIap2PacketDetectData+0xc0>
    e8810b02:	4605                	li	a2,1
}
    e8810b04:	6121                	addi	sp,sp,64
        iAP2LinkSendPacket (link, pck, TRUE, "Accessory:ResendSYN");
    e8810b06:	e03fe06f          	j	e880f908 <iAP2LinkSendPacket>
        iAP2LogError("%s:%d %s Resend too many times! max=%d\n",
    e8810b0a:	00090517          	auipc	a0,0x90
    e8810b0e:	c9650513          	addi	a0,a0,-874 # e88a07a0 <kIap2PacketDetectData+0xd8>
    e8810b12:	00090697          	auipc	a3,0x90
    e8810b16:	c7668693          	addi	a3,a3,-906 # e88a0788 <kIap2PacketDetectData+0xc0>
    e8810b1a:	1b200613          	li	a2,434
    e8810b1e:	00090597          	auipc	a1,0x90
    e8810b22:	bca58593          	addi	a1,a1,-1078 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810b26:	37f010ef          	jal	ra,e88126a4 <iAP2LogError>
        *nextEvent = kiAP2LinkEventMaxResend;
    e8810b2a:	47b9                	li	a5,14
        iAP2PacketDelete (pck);
    e8810b2c:	8526                	mv	a0,s1
}
    e8810b2e:	fc91440b          	ldd	s0,s1,(sp),2,4
        *nextEvent = kiAP2LinkEventMaxResend;
    e8810b32:	00f92023          	sw	a5,0(s2)
}
    e8810b36:	70e2                	ld	ra,56(sp)
    e8810b38:	7942                	ld	s2,48(sp)
    e8810b3a:	6121                	addi	sp,sp,64
        iAP2PacketDelete (pck);
    e8810b3c:	10f0006f          	j	e881144a <iAP2PacketDelete>

00000000e8810b40 <iAP2LinkAccessoryActionSendSYNNewSeq>:
{
    e8810b40:	7139                	addi	sp,sp,-64
    e8810b42:	f422                	sd	s0,40(sp)
    e8810b44:	f826                	sd	s1,48(sp)
    e8810b46:	fc06                	sd	ra,56(sp)
    e8810b48:	842a                	mv	s0,a0
    e8810b4a:	84ae                	mv	s1,a1
    assert(fsm);
    e8810b4c:	e11d                	bnez	a0,e8810b72 <iAP2LinkAccessoryActionSendSYNNewSeq+0x32>
    e8810b4e:	02f00593          	li	a1,47
    e8810b52:	00090517          	auipc	a0,0x90
    e8810b56:	b9650513          	addi	a0,a0,-1130 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810b5a:	01f6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810b5e:	00150593          	addi	a1,a0,1
    e8810b62:	1c500613          	li	a2,453
    e8810b66:	0008f517          	auipc	a0,0x8f
    e8810b6a:	64a50513          	addi	a0,a0,1610 # e88a01b0 <TWO52+0x5b8>
    e8810b6e:	7586b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e8810b72:	e09d                	bnez	s1,e8810b98 <iAP2LinkAccessoryActionSendSYNNewSeq+0x58>
    e8810b74:	02f00593          	li	a1,47
    e8810b78:	00090517          	auipc	a0,0x90
    e8810b7c:	b7050513          	addi	a0,a0,-1168 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810b80:	7f86b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810b84:	00150593          	addi	a1,a0,1
    e8810b88:	1c600613          	li	a2,454
    e8810b8c:	0008f517          	auipc	a0,0x8f
    e8810b90:	62450513          	addi	a0,a0,1572 # e88a01b0 <TWO52+0x5b8>
    e8810b94:	7326b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e8810b98:	47d9                	li	a5,22
    e8810b9a:	c09c                	sw	a5,0(s1)
    link = (iAP2Link_t*) fsm->data;
    e8810b9c:	6c00                	ld	s0,24(s0)
    if (link->detectAckTimeoutID != INVALID_TIMEOUT_ID)
    e8810b9e:	0ff00793          	li	a5,255
    e8810ba2:	05644583          	lbu	a1,86(s0)
    e8810ba6:	00f58863          	beq	a1,a5,e8810bb6 <iAP2LinkAccessoryActionSendSYNNewSeq+0x76>
        iAP2TimeCancelTimer (link->mainTimer, link->detectAckTimeoutID);
    e8810baa:	7028                	ld	a0,96(s0)
    e8810bac:	5df010ef          	jal	ra,e881298a <iAP2TimeCancelTimer>
        link->detectAckTimeoutID = INVALID_TIMEOUT_ID;
    e8810bb0:	57fd                	li	a5,-1
    e8810bb2:	04f40b23          	sb	a5,86(s0)
    iAP2LinkSetDefaultSYNParam (&(link->param));
    e8810bb6:	11440513          	addi	a0,s0,276
    e8810bba:	af4fe0ef          	jal	ra,e880eeae <iAP2LinkSetDefaultSYNParam>
    iAP2LinkResetSeqAck (link, FALSE);
    e8810bbe:	4581                	li	a1,0
    e8810bc0:	8522                	mv	a0,s0
    e8810bc2:	b69fe0ef          	jal	ra,e880f72a <iAP2LinkResetSeqAck>
    memcpy (&(link->negotiatedParam),
    e8810bc6:	02e00613          	li	a2,46
    e8810bca:	0b840593          	addi	a1,s0,184
    e8810bce:	0e640513          	addi	a0,s0,230
    e8810bd2:	7ce6b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    if (!link->bValidSentSeq)
    e8810bd6:	05844783          	lbu	a5,88(s0)
    e8810bda:	0047f713          	andi	a4,a5,4
    e8810bde:	eb09                	bnez	a4,e8810bf0 <iAP2LinkAccessoryActionSendSYNNewSeq+0xb0>
        link->sentSeq = link->startSeq;
    e8810be0:	05144703          	lbu	a4,81(s0)
        link->bValidSentSeq = TRUE;
    e8810be4:	0047e793          	ori	a5,a5,4
    e8810be8:	04f40c23          	sb	a5,88(s0)
        link->sentSeq = link->startSeq;
    e8810bec:	04e40a23          	sb	a4,84(s0)
                                     link->negotiatedParam.sessionInfo);
    e8810bf0:	0f640613          	addi	a2,s0,246
    pck = iAP2PacketCreateSYNPacket (link,
    e8810bf4:	0ea45783          	lhu	a5,234(s0)
    e8810bf8:	0e744703          	lbu	a4,231(s0)
                                     link->sentSeq+1,
    e8810bfc:	05444583          	lbu	a1,84(s0)
    pck = iAP2PacketCreateSYNPacket (link,
    e8810c00:	0ee45883          	lhu	a7,238(s0)
    e8810c04:	0ec45803          	lhu	a6,236(s0)
    e8810c08:	0b844683          	lbu	a3,184(s0)
    e8810c0c:	ec32                	sd	a2,24(sp)
    e8810c0e:	0f044603          	lbu	a2,240(s0)
                                     link->sentSeq+1,
    e8810c12:	2585                	addiw	a1,a1,1
    pck = iAP2PacketCreateSYNPacket (link,
    e8810c14:	0ff5f593          	andi	a1,a1,255
    e8810c18:	e832                	sd	a2,16(sp)
    e8810c1a:	0e944603          	lbu	a2,233(s0)
    e8810c1e:	8522                	mv	a0,s0
    e8810c20:	e432                	sd	a2,8(sp)
    e8810c22:	0e844603          	lbu	a2,232(s0)
    e8810c26:	e032                	sd	a2,0(sp)
    e8810c28:	4601                	li	a2,0
    e8810c2a:	1d7000ef          	jal	ra,e8811600 <iAP2PacketCreateSYNPacket>
    e8810c2e:	85aa                	mv	a1,a0
    ++(link->numSentCumSYN);
    e8810c30:	15c42703          	lw	a4,348(s0)
    ++(link->numSentSYN);
    e8810c34:	15442783          	lw	a5,340(s0)
    ++(link->numSentCumSYN);
    e8810c38:	2705                	addiw	a4,a4,1
    e8810c3a:	14e42e23          	sw	a4,348(s0)
    if (!link->bIgnoreSynRetryLimit &&
    e8810c3e:	05844703          	lbu	a4,88(s0)
    ++(link->numSentSYN);
    e8810c42:	2785                	addiw	a5,a5,1
    e8810c44:	14f42a23          	sw	a5,340(s0)
    if (!link->bIgnoreSynRetryLimit &&
    e8810c48:	02077713          	andi	a4,a4,32
    e8810c4c:	eb09                	bnez	a4,e8810c5e <iAP2LinkAccessoryActionSendSYNNewSeq+0x11e>
        (link->numSentSYNACK + link->numSentSYN) > kiAP2LinkSynRetries)
    e8810c4e:	15842703          	lw	a4,344(s0)
    if (!link->bIgnoreSynRetryLimit &&
    e8810c52:	9fb9                	addw	a5,a5,a4
    e8810c54:	4729                	li	a4,10
    e8810c56:	00f77463          	bgeu	a4,a5,e8810c5e <iAP2LinkAccessoryActionSendSYNNewSeq+0x11e>
        *nextEvent = kiAP2LinkEventMaxResend;
    e8810c5a:	47b9                	li	a5,14
    e8810c5c:	c09c                	sw	a5,0(s1)
    iAP2LinkSendPacket (link, pck, FALSE, "Accessory:SendSYN");
    e8810c5e:	8522                	mv	a0,s0
}
    e8810c60:	7422                	ld	s0,40(sp)
    e8810c62:	70e2                	ld	ra,56(sp)
    e8810c64:	74c2                	ld	s1,48(sp)
    iAP2LinkSendPacket (link, pck, FALSE, "Accessory:SendSYN");
    e8810c66:	00090697          	auipc	a3,0x90
    e8810c6a:	baa68693          	addi	a3,a3,-1110 # e88a0810 <kIap2PacketDetectData+0x148>
    e8810c6e:	4601                	li	a2,0
}
    e8810c70:	6121                	addi	sp,sp,64
    iAP2LinkSendPacket (link, pck, FALSE, "Accessory:SendSYN");
    e8810c72:	c97fe06f          	j	e880f908 <iAP2LinkSendPacket>

00000000e8810c76 <iAP2LinkAccessoryActionConnectedACK>:
{
    e8810c76:	7159                	addi	sp,sp,-112
    e8810c78:	f0a2                	sd	s0,96(sp)
    e8810c7a:	eca6                	sd	s1,88(sp)
    e8810c7c:	f486                	sd	ra,104(sp)
    e8810c7e:	e8ca                	sd	s2,80(sp)
    e8810c80:	e4ce                	sd	s3,72(sp)
    e8810c82:	e0d2                	sd	s4,64(sp)
    e8810c84:	fc56                	sd	s5,56(sp)
    e8810c86:	84aa                	mv	s1,a0
    e8810c88:	842e                	mv	s0,a1
    assert(fsm);
    e8810c8a:	e11d                	bnez	a0,e8810cb0 <iAP2LinkAccessoryActionConnectedACK+0x3a>
    e8810c8c:	02f00593          	li	a1,47
    e8810c90:	00090517          	auipc	a0,0x90
    e8810c94:	a5850513          	addi	a0,a0,-1448 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810c98:	6e06b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810c9c:	00150593          	addi	a1,a0,1
    e8810ca0:	20600613          	li	a2,518
    e8810ca4:	0008f517          	auipc	a0,0x8f
    e8810ca8:	50c50513          	addi	a0,a0,1292 # e88a01b0 <TWO52+0x5b8>
    e8810cac:	61a6b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e8810cb0:	e01d                	bnez	s0,e8810cd6 <iAP2LinkAccessoryActionConnectedACK+0x60>
    e8810cb2:	02f00593          	li	a1,47
    e8810cb6:	00090517          	auipc	a0,0x90
    e8810cba:	a3250513          	addi	a0,a0,-1486 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810cbe:	6ba6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810cc2:	00150593          	addi	a1,a0,1
    e8810cc6:	20700613          	li	a2,519
    e8810cca:	0008f517          	auipc	a0,0x8f
    e8810cce:	4e650513          	addi	a0,a0,1254 # e88a01b0 <TWO52+0x5b8>
    e8810cd2:	5f46b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e8810cd6:	47d9                	li	a5,22
    e8810cd8:	c01c                	sw	a5,0(s0)
    if (fsm->currentState == kiAP2LinkStatePending)
    e8810cda:	4898                	lw	a4,16(s1)
    e8810cdc:	4791                	li	a5,4
    link = (iAP2Link_t*) fsm->data;
    e8810cde:	6c80                	ld	s0,24(s1)
    if (fsm->currentState == kiAP2LinkStatePending)
    e8810ce0:	00f71763          	bne	a4,a5,e8810cee <iAP2LinkAccessoryActionConnectedACK+0x78>
        if (link->connectedCB)
    e8810ce4:	781c                	ld	a5,48(s0)
    e8810ce6:	c781                	beqz	a5,e8810cee <iAP2LinkAccessoryActionConnectedACK+0x78>
            (*link->connectedCB) (link, FALSE);
    e8810ce8:	4581                	li	a1,0
    e8810cea:	8522                	mv	a0,s0
    e8810cec:	9782                	jalr	a5
    recvPck = link->recvPck;
    e8810cee:	6444                	ld	s1,136(s0)
    if (recvPck != NULL)
    e8810cf0:	0e640913          	addi	s2,s0,230
    e8810cf4:	c8bd                	beqz	s1,e8810d6a <iAP2LinkAccessoryActionConnectedACK+0xf4>
        assert((recvPck->pckData->ctl & kIAP2PacketControlMaskSYN) != 0);
    e8810cf6:	7c9c                	ld	a5,56(s1)
        uint8_t  maxOutstandingPackets  = link->negotiatedParam.maxOutstandingPackets;
    e8810cf8:	0e744a03          	lbu	s4,231(s0)
        uint16_t maxPacketSize          = link->negotiatedParam.maxPacketSize;
    e8810cfc:	0ea45983          	lhu	s3,234(s0)
        assert((recvPck->pckData->ctl & kIAP2PacketControlMaskSYN) != 0);
    e8810d00:	00478783          	lb	a5,4(a5)
    e8810d04:	0207c463          	bltz	a5,e8810d2c <iAP2LinkAccessoryActionConnectedACK+0xb6>
    e8810d08:	02f00593          	li	a1,47
    e8810d0c:	00090517          	auipc	a0,0x90
    e8810d10:	9dc50513          	addi	a0,a0,-1572 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810d14:	6646b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810d18:	00150593          	addi	a1,a0,1
    e8810d1c:	21c00613          	li	a2,540
    e8810d20:	0008f517          	auipc	a0,0x8f
    e8810d24:	49050513          	addi	a0,a0,1168 # e88a01b0 <TWO52+0x5b8>
    e8810d28:	59e6b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        iAP2PacketParseSYNData (iAP2PacketGetPayload (recvPck),
    e8810d2c:	8526                	mv	a0,s1
    e8810d2e:	770000ef          	jal	ra,e881149e <iAP2PacketGetPayload>
    e8810d32:	8aaa                	mv	s5,a0
                                iAP2PacketGetPayloadLen (recvPck),
    e8810d34:	8526                	mv	a0,s1
    e8810d36:	76e000ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
        iAP2PacketParseSYNData (iAP2PacketGetPayload (recvPck),
    e8810d3a:	0005059b          	sext.w	a1,a0
    e8810d3e:	860a                	mv	a2,sp
    e8810d40:	8556                	mv	a0,s5
    e8810d42:	181000ef          	jal	ra,e88116c2 <iAP2PacketParseSYNData>
        memcpy (&(link->negotiatedParam),
    e8810d46:	02e00613          	li	a2,46
    e8810d4a:	858a                	mv	a1,sp
    e8810d4c:	854a                	mv	a0,s2
    e8810d4e:	6526b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        link->negotiatedParam.maxOutstandingPackets     = maxOutstandingPackets;
    e8810d52:	0f4403a3          	sb	s4,231(s0)
        link->negotiatedParam.peerMaxOutstandingPackets = synParam.maxOutstandingPackets;
    e8810d56:	00114783          	lbu	a5,1(sp)
        link->negotiatedParam.maxPacketSize             = maxPacketSize;
    e8810d5a:	0f341523          	sh	s3,234(s0)
        link->negotiatedParam.peerMaxOutstandingPackets = synParam.maxOutstandingPackets;
    e8810d5e:	0ef408a3          	sb	a5,241(s0)
        link->negotiatedParam.peerMaxPacketSize         = synParam.maxPacketSize;
    e8810d62:	00415783          	lhu	a5,4(sp)
    e8810d66:	0ef41923          	sh	a5,242(s0)
    memcpy (&(link->param),
    e8810d6a:	02e00613          	li	a2,46
    e8810d6e:	85ca                	mv	a1,s2
    e8810d70:	11440513          	addi	a0,s0,276
    e8810d74:	62c6b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    pck = iAP2PacketCreateACKPacket (link,
    e8810d78:	05244603          	lbu	a2,82(s0)
    e8810d7c:	05444583          	lbu	a1,84(s0)
    e8810d80:	4781                	li	a5,0
    e8810d82:	4701                	li	a4,0
    e8810d84:	4681                	li	a3,0
    e8810d86:	8522                	mv	a0,s0
    e8810d88:	065000ef          	jal	ra,e88115ec <iAP2PacketCreateACKPacket>
    iAP2LinkSendPacket (link, pck, FALSE, "Accessory:SendACK");
    e8810d8c:	85aa                	mv	a1,a0
    e8810d8e:	00090697          	auipc	a3,0x90
    e8810d92:	94268693          	addi	a3,a3,-1726 # e88a06d0 <kIap2PacketDetectData+0x8>
    e8810d96:	4601                	li	a2,0
    e8810d98:	8522                	mv	a0,s0
    e8810d9a:	b6ffe0ef          	jal	ra,e880f908 <iAP2LinkSendPacket>
    if (link->connectedCB)
    e8810d9e:	781c                	ld	a5,48(s0)
    e8810da0:	c781                	beqz	a5,e8810da8 <iAP2LinkAccessoryActionConnectedACK+0x132>
        (*link->connectedCB) (link, TRUE);
    e8810da2:	4585                	li	a1,1
    e8810da4:	8522                	mv	a0,s0
    e8810da6:	9782                	jalr	a5
}
    e8810da8:	70a6                	ld	ra,104(sp)
    e8810daa:	7406                	ld	s0,96(sp)
    e8810dac:	64e6                	ld	s1,88(sp)
    e8810dae:	6946                	ld	s2,80(sp)
    e8810db0:	69a6                	ld	s3,72(sp)
    e8810db2:	6a06                	ld	s4,64(sp)
    e8810db4:	7ae2                	ld	s5,56(sp)
    e8810db6:	6165                	addi	sp,sp,112
    e8810db8:	8082                	ret

00000000e8810dba <iAP2LinkAccessoryActionSendSYNACK>:
{
    e8810dba:	7175                	addi	sp,sp,-144
    e8810dbc:	e122                	sd	s0,128(sp)
    e8810dbe:	fca6                	sd	s1,120(sp)
    e8810dc0:	e506                	sd	ra,136(sp)
    e8810dc2:	f8ca                	sd	s2,112(sp)
    e8810dc4:	f4ce                	sd	s3,104(sp)
    e8810dc6:	f0d2                	sd	s4,96(sp)
    e8810dc8:	ecd6                	sd	s5,88(sp)
    e8810dca:	842a                	mv	s0,a0
    e8810dcc:	84ae                	mv	s1,a1
    assert(fsm);
    e8810dce:	e11d                	bnez	a0,e8810df4 <iAP2LinkAccessoryActionSendSYNACK+0x3a>
    e8810dd0:	02f00593          	li	a1,47
    e8810dd4:	00090517          	auipc	a0,0x90
    e8810dd8:	91450513          	addi	a0,a0,-1772 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810ddc:	59c6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810de0:	00150593          	addi	a1,a0,1
    e8810de4:	25400613          	li	a2,596
    e8810de8:	0008f517          	auipc	a0,0x8f
    e8810dec:	3c850513          	addi	a0,a0,968 # e88a01b0 <TWO52+0x5b8>
    e8810df0:	4d66b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(nextEvent);
    e8810df4:	e09d                	bnez	s1,e8810e1a <iAP2LinkAccessoryActionSendSYNACK+0x60>
    e8810df6:	02f00593          	li	a1,47
    e8810dfa:	00090517          	auipc	a0,0x90
    e8810dfe:	8ee50513          	addi	a0,a0,-1810 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810e02:	5766b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810e06:	00150593          	addi	a1,a0,1
    e8810e0a:	25500613          	li	a2,597
    e8810e0e:	0008f517          	auipc	a0,0x8f
    e8810e12:	3a250513          	addi	a0,a0,930 # e88a01b0 <TWO52+0x5b8>
    e8810e16:	4b06b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    *nextEvent = kiAP2LinkEventCount;
    e8810e1a:	47d9                	li	a5,22
    e8810e1c:	c09c                	sw	a5,0(s1)
    link = (iAP2Link_t*) fsm->data;
    e8810e1e:	6c00                	ld	s0,24(s0)
    recvPck = link->recvPck;
    e8810e20:	08843903          	ld	s2,136(s0)
    if (recvPck != NULL)
    e8810e24:	0e640a13          	addi	s4,s0,230
    e8810e28:	0f640993          	addi	s3,s0,246
    e8810e2c:	16090a63          	beqz	s2,e8810fa0 <iAP2LinkAccessoryActionSendSYNACK+0x1e6>
        iAP2PacketParseSYNData (iAP2PacketGetPayload (recvPck),
    e8810e30:	854a                	mv	a0,s2
    e8810e32:	66c000ef          	jal	ra,e881149e <iAP2PacketGetPayload>
    e8810e36:	8aaa                	mv	s5,a0
                                iAP2PacketGetPayloadLen (recvPck),
    e8810e38:	854a                	mv	a0,s2
    e8810e3a:	66a000ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
        iAP2PacketParseSYNData (iAP2PacketGetPayload (recvPck),
    e8810e3e:	0005059b          	sext.w	a1,a0
    e8810e42:	1010                	addi	a2,sp,32
    e8810e44:	8556                	mv	a0,s5
    e8810e46:	07d000ef          	jal	ra,e88116c2 <iAP2PacketParseSYNData>
        if (link->negotiatedParam.version > synParam.version)
    e8810e4a:	0e644683          	lbu	a3,230(s0)
    e8810e4e:	02014703          	lbu	a4,32(sp)
    e8810e52:	02d77263          	bgeu	a4,a3,e8810e76 <iAP2LinkAccessoryActionSendSYNACK+0xbc>
            iAP2Log("%s:%d Older protocol Version detected (%d->%d)\n",
    e8810e56:	26400613          	li	a2,612
    e8810e5a:	00090597          	auipc	a1,0x90
    e8810e5e:	88e58593          	addi	a1,a1,-1906 # e88a06e8 <kIap2PacketDetectData+0x20>
    e8810e62:	00090517          	auipc	a0,0x90
    e8810e66:	96650513          	addi	a0,a0,-1690 # e88a07c8 <kIap2PacketDetectData+0x100>
    e8810e6a:	7b2010ef          	jal	ra,e881261c <iAP2Log>
            link->negotiatedParam.version = synParam.version;
    e8810e6e:	02014783          	lbu	a5,32(sp)
    e8810e72:	0ef40323          	sb	a5,230(s0)
        iAP2LinkValidateSynParam (&synParam);
    e8810e76:	1008                	addi	a0,sp,32
    e8810e78:	984fe0ef          	jal	ra,e880effc <iAP2LinkValidateSynParam>
        iAP2LinkValidateSynParam (&(link->negotiatedParam));
    e8810e7c:	8552                	mv	a0,s4
    e8810e7e:	97efe0ef          	jal	ra,e880effc <iAP2LinkValidateSynParam>
        if (link->negotiatedParam.version > synParam.version)
    e8810e82:	02014783          	lbu	a5,32(sp)
    e8810e86:	0e644703          	lbu	a4,230(s0)
    e8810e8a:	00e7f463          	bgeu	a5,a4,e8810e92 <iAP2LinkAccessoryActionSendSYNACK+0xd8>
            link->negotiatedParam.version = synParam.version;
    e8810e8e:	0ef40323          	sb	a5,230(s0)
        if (link->negotiatedParam.maxRetransmissions > synParam.maxRetransmissions)
    e8810e92:	02214783          	lbu	a5,34(sp)
    e8810e96:	0e844703          	lbu	a4,232(s0)
    e8810e9a:	00e7f463          	bgeu	a5,a4,e8810ea2 <iAP2LinkAccessoryActionSendSYNACK+0xe8>
            link->negotiatedParam.maxRetransmissions = synParam.maxRetransmissions;
    e8810e9e:	0ef40423          	sb	a5,232(s0)
        if (link->negotiatedParam.maxCumAck > synParam.maxCumAck)
    e8810ea2:	02314783          	lbu	a5,35(sp)
    e8810ea6:	0e944703          	lbu	a4,233(s0)
    e8810eaa:	00e7f463          	bgeu	a5,a4,e8810eb2 <iAP2LinkAccessoryActionSendSYNACK+0xf8>
            link->negotiatedParam.maxCumAck = synParam.maxCumAck;
    e8810eae:	0ef404a3          	sb	a5,233(s0)
        if (link->negotiatedParam.retransmitTimeout > synParam.retransmitTimeout)
    e8810eb2:	02615783          	lhu	a5,38(sp)
    e8810eb6:	0ec45703          	lhu	a4,236(s0)
    e8810eba:	00e7f463          	bgeu	a5,a4,e8810ec2 <iAP2LinkAccessoryActionSendSYNACK+0x108>
            link->negotiatedParam.retransmitTimeout = synParam.retransmitTimeout;
    e8810ebe:	0ef41623          	sh	a5,236(s0)
        if (link->negotiatedParam.cumAckTimeout > synParam.cumAckTimeout)
    e8810ec2:	02815783          	lhu	a5,40(sp)
    e8810ec6:	0ee45703          	lhu	a4,238(s0)
    e8810eca:	00e7f463          	bgeu	a5,a4,e8810ed2 <iAP2LinkAccessoryActionSendSYNACK+0x118>
            link->negotiatedParam.cumAckTimeout = synParam.cumAckTimeout;
    e8810ece:	0ef41723          	sh	a5,238(s0)
        link->negotiatedParam.peerMaxOutstandingPackets = synParam.maxOutstandingPackets;
    e8810ed2:	02114783          	lbu	a5,33(sp)
        memcpy (link->negotiatedParam.sessionInfo,
    e8810ed6:	460d                	li	a2,3
    e8810ed8:	180c                	addi	a1,sp,48
        link->negotiatedParam.peerMaxOutstandingPackets = synParam.maxOutstandingPackets;
    e8810eda:	0ef408a3          	sb	a5,241(s0)
        link->negotiatedParam.peerMaxPacketSize = synParam.maxPacketSize;
    e8810ede:	02415783          	lhu	a5,36(sp)
        memcpy (link->negotiatedParam.sessionInfo,
    e8810ee2:	854e                	mv	a0,s3
        link->negotiatedParam.peerMaxPacketSize = synParam.maxPacketSize;
    e8810ee4:	0ef41923          	sh	a5,242(s0)
        link->negotiatedParam.numSessionInfo = synParam.numSessionInfo;
    e8810ee8:	02a14783          	lbu	a5,42(sp)
        memcpy (link->negotiatedParam.sessionInfo,
    e8810eec:	02c78633          	mul	a2,a5,a2
        link->negotiatedParam.numSessionInfo = synParam.numSessionInfo;
    e8810ef0:	0ef40823          	sb	a5,240(s0)
        memcpy (&synParam, &link->negotiatedParam, sizeof(link->negotiatedParam));
    e8810ef4:	4ac6b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    if (!link->bValidSentSeq)
    e8810ef8:	05844783          	lbu	a5,88(s0)
    e8810efc:	0047f713          	andi	a4,a5,4
    e8810f00:	eb09                	bnez	a4,e8810f12 <iAP2LinkAccessoryActionSendSYNACK+0x158>
        link->sentSeq = link->startSeq;
    e8810f02:	05144703          	lbu	a4,81(s0)
        link->bValidSentSeq = TRUE;
    e8810f06:	0047e793          	ori	a5,a5,4
    e8810f0a:	04f40c23          	sb	a5,88(s0)
        link->sentSeq = link->startSeq;
    e8810f0e:	04e40a23          	sb	a4,84(s0)
    pck = iAP2PacketCreateSYNPacket (link,
    e8810f12:	0ea45783          	lhu	a5,234(s0)
    e8810f16:	0e744703          	lbu	a4,231(s0)
                                     link->sentSeq+1,
    e8810f1a:	05444583          	lbu	a1,84(s0)
    pck = iAP2PacketCreateSYNPacket (link,
    e8810f1e:	0ee45883          	lhu	a7,238(s0)
    e8810f22:	0ec45803          	lhu	a6,236(s0)
    e8810f26:	0b844683          	lbu	a3,184(s0)
    e8810f2a:	ec4e                	sd	s3,24(sp)
    e8810f2c:	0f044603          	lbu	a2,240(s0)
                                     link->sentSeq+1,
    e8810f30:	2585                	addiw	a1,a1,1
    pck = iAP2PacketCreateSYNPacket (link,
    e8810f32:	0ff5f593          	andi	a1,a1,255
    e8810f36:	e832                	sd	a2,16(sp)
    e8810f38:	0e944603          	lbu	a2,233(s0)
    e8810f3c:	8522                	mv	a0,s0
    e8810f3e:	e432                	sd	a2,8(sp)
    e8810f40:	0e844603          	lbu	a2,232(s0)
    e8810f44:	e032                	sd	a2,0(sp)
    e8810f46:	05240613          	addi	a2,s0,82
    e8810f4a:	6b6000ef          	jal	ra,e8811600 <iAP2PacketCreateSYNPacket>
    e8810f4e:	85aa                	mv	a1,a0
    ++(link->numSentCumSYNACK);
    e8810f50:	16042703          	lw	a4,352(s0)
    ++(link->numSentSYNACK);
    e8810f54:	15842783          	lw	a5,344(s0)
    ++(link->numSentCumSYNACK);
    e8810f58:	2705                	addiw	a4,a4,1
    e8810f5a:	16e42023          	sw	a4,352(s0)
    if (!link->bIgnoreSynRetryLimit &&
    e8810f5e:	05844703          	lbu	a4,88(s0)
    ++(link->numSentSYNACK);
    e8810f62:	2785                	addiw	a5,a5,1
    e8810f64:	14f42c23          	sw	a5,344(s0)
    if (!link->bIgnoreSynRetryLimit &&
    e8810f68:	02077713          	andi	a4,a4,32
    e8810f6c:	eb09                	bnez	a4,e8810f7e <iAP2LinkAccessoryActionSendSYNACK+0x1c4>
        (link->numSentSYNACK + link->numSentSYN) > kiAP2LinkSynRetries)
    e8810f6e:	15442703          	lw	a4,340(s0)
    if (!link->bIgnoreSynRetryLimit &&
    e8810f72:	9fb9                	addw	a5,a5,a4
    e8810f74:	4729                	li	a4,10
    e8810f76:	00f77463          	bgeu	a4,a5,e8810f7e <iAP2LinkAccessoryActionSendSYNACK+0x1c4>
        *nextEvent = kiAP2LinkEventMaxResend;
    e8810f7a:	47b9                	li	a5,14
    e8810f7c:	c09c                	sw	a5,0(s1)
    iAP2LinkSendPacket (link, pck, FALSE, "Accessory:SendSYNACK");
    e8810f7e:	8522                	mv	a0,s0
    e8810f80:	00090697          	auipc	a3,0x90
    e8810f84:	87868693          	addi	a3,a3,-1928 # e88a07f8 <kIap2PacketDetectData+0x130>
    e8810f88:	4601                	li	a2,0
    e8810f8a:	97ffe0ef          	jal	ra,e880f908 <iAP2LinkSendPacket>
}
    e8810f8e:	640a                	ld	s0,128(sp)
    e8810f90:	60aa                	ld	ra,136(sp)
    e8810f92:	74e6                	ld	s1,120(sp)
    e8810f94:	7946                	ld	s2,112(sp)
    e8810f96:	79a6                	ld	s3,104(sp)
    e8810f98:	7a06                	ld	s4,96(sp)
    e8810f9a:	6ae6                	ld	s5,88(sp)
    e8810f9c:	6149                	addi	sp,sp,144
    e8810f9e:	8082                	ret
        memcpy (&synParam, &link->negotiatedParam, sizeof(link->negotiatedParam));
    e8810fa0:	02e00613          	li	a2,46
    e8810fa4:	85d2                	mv	a1,s4
    e8810fa6:	1008                	addi	a0,sp,32
    e8810fa8:	b7b1                	j	e8810ef4 <iAP2LinkAccessoryActionSendSYNACK+0x13a>

00000000e8810faa <_iAP2LinkSignalSendBuffCallback>:


static void _iAP2LinkSignalSendBuffCallback (struct iAP2Link_st* link)
{
    iAP2LinkRunLoop_t* linkRunLoop = (iAP2LinkRunLoop_t*) link->context;
    iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e8810faa:	6528                	ld	a0,72(a0)
    e8810fac:	4581                	li	a1,0
    e8810fae:	84ffd06f          	j	e880e7fc <iAP2LinkRunLoopSignal>

00000000e8810fb2 <iAP2LinkRunLoopRunOnce>:
BOOL iAP2LinkRunLoopRunOnce (iAP2LinkRunLoop_t* linkRunLoop, void* arg)
{
    int i;
    iAP2Packet_t* packet = (iAP2Packet_t*) arg;
    BOOL bContinue = FALSE;
    if (linkRunLoop)
    e8810fb2:	e119                	bnez	a0,e8810fb8 <iAP2LinkRunLoopRunOnce+0x6>
    BOOL bContinue = FALSE;
    e8810fb4:	4501                	li	a0,0
                break;
            }
        }
    }
    return bContinue;
}
    e8810fb6:	8082                	ret
{
    e8810fb8:	1101                	addi	sp,sp,-32
    e8810fba:	f891540b          	sdd	s0,s1,(sp),0,4
    e8810fbe:	e84a                	sd	s2,16(sp)
    e8810fc0:	842a                	mv	s0,a0
    e8810fc2:	ec06                	sd	ra,24(sp)
    e8810fc4:	892e                	mv	s2,a1
        uint32_t eventMask = iAP2LinkRunLoopGetResetEventMask (linkRunLoop);
    e8810fc6:	939fd0ef          	jal	ra,e880e8fe <iAP2LinkRunLoopGetResetEventMask>
    e8810fca:	0005049b          	sext.w	s1,a0
        assert(linkRunLoop->link);
    e8810fce:	6c1c                	ld	a5,24(s0)
    e8810fd0:	e39d                	bnez	a5,e8810ff6 <iAP2LinkRunLoopRunOnce+0x44>
    e8810fd2:	02f00593          	li	a1,47
    e8810fd6:	00090517          	auipc	a0,0x90
    e8810fda:	39250513          	addi	a0,a0,914 # e88a1368 <iAP2LinkAccessorySuspendStateEvents+0x160>
    e8810fde:	39a6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8810fe2:	00150593          	addi	a1,a0,1
    e8810fe6:	14b00613          	li	a2,331
    e8810fea:	0008f517          	auipc	a0,0x8f
    e8810fee:	1c650513          	addi	a0,a0,454 # e88a01b0 <TWO52+0x5b8>
    e8810ff2:	2d46b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (eventMask & kiAP2LinkRunLoopEventMaskAttach)
    e8810ff6:	0014f793          	andi	a5,s1,1
    e8810ffa:	c781                	beqz	a5,e8811002 <iAP2LinkRunLoopRunOnce+0x50>
            iAP2LinkAttached (linkRunLoop->link);
    e8810ffc:	6c08                	ld	a0,24(s0)
    e8810ffe:	de6fe0ef          	jal	ra,e880f5e4 <iAP2LinkAttached>
        if (eventMask & kiAP2LinkRunLoopEventMaskDetach)
    e8811002:	0024f793          	andi	a5,s1,2
    e8811006:	c781                	beqz	a5,e881100e <iAP2LinkRunLoopRunOnce+0x5c>
            iAP2LinkDetached (linkRunLoop->link);
    e8811008:	6c08                	ld	a0,24(s0)
    e881100a:	e0cfe0ef          	jal	ra,e880f616 <iAP2LinkDetached>
        if (eventMask & kiAP2LinkRunLoopEventMaskSuspend)
    e881100e:	0044f793          	andi	a5,s1,4
    e8811012:	c781                	beqz	a5,e881101a <iAP2LinkRunLoopRunOnce+0x68>
            iAP2LinkHandleSuspend (linkRunLoop->link);
    e8811014:	6c08                	ld	a0,24(s0)
    e8811016:	ec6fe0ef          	jal	ra,e880f6dc <iAP2LinkHandleSuspend>
        if (packet)
    e881101a:	00090663          	beqz	s2,e8811026 <iAP2LinkRunLoopRunOnce+0x74>
            iAP2LinkHandleReadyPacket (linkRunLoop->link, packet);
    e881101e:	6c08                	ld	a0,24(s0)
    e8811020:	85ca                	mv	a1,s2
    e8811022:	9f2ff0ef          	jal	ra,e8810214 <iAP2LinkHandleReadyPacket>
        if (eventMask & kiAP2LinkRunLoopEventMaskTimeouts)
    e8811026:	0704f793          	andi	a5,s1,112
    e881102a:	cb95                	beqz	a5,e881105e <iAP2LinkRunLoopRunOnce+0xac>
            uint32_t curTime = iAP2TimeGetCurTimeMs();
    e881102c:	7c8010ef          	jal	ra,e88127f4 <iAP2TimeGetCurTimeMs>
    e8811030:	0005091b          	sext.w	s2,a0
            if (eventMask & kiAP2LinkRunLoopEventMaskWaitDetectTimeout)
    e8811034:	0404f793          	andi	a5,s1,64
    e8811038:	c789                	beqz	a5,e8811042 <iAP2LinkRunLoopRunOnce+0x90>
                iAP2LinkHandleWaitDetectTimeoutLink (linkRunLoop->link, curTime);
    e881103a:	6c08                	ld	a0,24(s0)
    e881103c:	85ca                	mv	a1,s2
    e881103e:	d88ff0ef          	jal	ra,e88105c6 <iAP2LinkHandleWaitDetectTimeoutLink>
            if (eventMask & kiAP2LinkRunLoopEventMaskWaitACKTimeout)
    e8811042:	0104f793          	andi	a5,s1,16
    e8811046:	c789                	beqz	a5,e8811050 <iAP2LinkRunLoopRunOnce+0x9e>
                iAP2LinkHandleWaitACKTimeoutLink (linkRunLoop->link, curTime);
    e8811048:	6c08                	ld	a0,24(s0)
    e881104a:	85ca                	mv	a1,s2
    e881104c:	cfeff0ef          	jal	ra,e881054a <iAP2LinkHandleWaitACKTimeoutLink>
            if (eventMask & kiAP2LinkRunLoopEventMaskSendACKTimeout)
    e8811050:	0204f493          	andi	s1,s1,32
    e8811054:	c489                	beqz	s1,e881105e <iAP2LinkRunLoopRunOnce+0xac>
                iAP2LinkHandleSendACKTimeoutLink (linkRunLoop->link, curTime);
    e8811056:	6c08                	ld	a0,24(s0)
    e8811058:	85ca                	mv	a1,s2
    e881105a:	d2eff0ef          	jal	ra,e8810588 <iAP2LinkHandleSendACKTimeoutLink>
        iAP2LinkProcessSendBuff (linkRunLoop->link);
    e881105e:	6c08                	ld	a0,24(s0)
        for (i = 0; i < kIAP2PacketServiceTypeCount; ++i)
    e8811060:	4481                	li	s1,0
    e8811062:	490d                	li	s2,3
        iAP2LinkProcessSendBuff (linkRunLoop->link);
    e8811064:	e2efe0ef          	jal	ra,e880f692 <iAP2LinkProcessSendBuff>
            if (iAP2ListArrayGetCount(linkRunLoop->link->sessSendPckList[i]) > 0)
    e8811068:	6c1c                	ld	a5,24(s0)
    e881106a:	01448713          	addi	a4,s1,20
    e881106e:	66e7c50b          	lrd	a0,a5,a4,3
    e8811072:	1b6010ef          	jal	ra,e8812228 <iAP2ListArrayGetCount>
    e8811076:	e919                	bnez	a0,e881108c <iAP2LinkRunLoopRunOnce+0xda>
        for (i = 0; i < kIAP2PacketServiceTypeCount; ++i)
    e8811078:	2485                	addiw	s1,s1,1
    e881107a:	ff2497e3          	bne	s1,s2,e8811068 <iAP2LinkRunLoopRunOnce+0xb6>
    BOOL bContinue = FALSE;
    e881107e:	4501                	li	a0,0
}
    e8811080:	60e2                	ld	ra,24(sp)
    e8811082:	f891440b          	ldd	s0,s1,(sp),0,4
    e8811086:	6942                	ld	s2,16(sp)
    e8811088:	6105                	addi	sp,sp,32
    e881108a:	8082                	ret
                bContinue = TRUE;
    e881108c:	4505                	li	a0,1
    e881108e:	bfcd                	j	e8811080 <iAP2LinkRunLoopRunOnce+0xce>

00000000e8811090 <iAP2LinkRunLoopGetBuffSize>:
{
    e8811090:	1141                	addi	sp,sp,-16
    e8811092:	e406                	sd	ra,8(sp)
    result += iAP2LinkGetBuffSize (maxPacketSentAtOnce);
    e8811094:	9a0fe0ef          	jal	ra,e880f234 <iAP2LinkGetBuffSize>
}
    e8811098:	03c5051b          	addiw	a0,a0,60
    e881109c:	60a2                	ld	ra,8(sp)
    e881109e:	0141                	addi	sp,sp,16
    e88110a0:	8082                	ret

00000000e88110a2 <iAP2LinkRunLoopCreate>:
{
    e88110a2:	7175                	addi	sp,sp,-144
    e88110a4:	f0d2                	sd	s4,96(sp)
    e88110a6:	8a32                	mv	s4,a2
    e88110a8:	760a                	ld	a2,160(sp)
    e88110aa:	f8ca                	sd	s2,112(sp)
    e88110ac:	f4ce                	sd	s3,104(sp)
    e88110ae:	ecd6                	sd	s5,88(sp)
    e88110b0:	e506                	sd	ra,136(sp)
    e88110b2:	e122                	sd	s0,128(sp)
    e88110b4:	fca6                	sd	s1,120(sp)
    e88110b6:	89aa                	mv	s3,a0
    e88110b8:	8aae                	mv	s5,a1
    e88110ba:	09814903          	lbu	s2,152(sp)
    if (NULL == linkRLBuffer)
    e88110be:	0e061763          	bnez	a2,e88111ac <iAP2LinkRunLoopCreate+0x10a>
        uint8_t* buff = malloc (iAP2LinkRunLoopGetBuffSize (maxPacketSentAtOnce));
    e88110c2:	854a                	mv	a0,s2
    e88110c4:	e4c6                	sd	a7,72(sp)
    e88110c6:	e0c2                	sd	a6,64(sp)
    e88110c8:	fc3e                	sd	a5,56(sp)
    e88110ca:	f83a                	sd	a4,48(sp)
    e88110cc:	f436                	sd	a3,40(sp)
    e88110ce:	fc3ff0ef          	jal	ra,e8811090 <iAP2LinkRunLoopGetBuffSize>
    e88110d2:	7c05350b          	extu	a0,a0,31,0
    e88110d6:	7786a0ef          	jal	ra,e887b84e <my_malloc>
    e88110da:	842a                	mv	s0,a0
        linkRunLoop->linkRLBuffer = buff;
    e88110dc:	76a2                	ld	a3,40(sp)
    e88110de:	fef1470b          	ldd	a4,a5,(sp),3,4
    e88110e2:	6806                	ld	a6,64(sp)
    e88110e4:	68a6                	ld	a7,72(sp)
    e88110e6:	e008                	sd	a0,0(s0)
    assert(linkRunLoop);
    e88110e8:	ec0d                	bnez	s0,e8811122 <iAP2LinkRunLoopCreate+0x80>
    e88110ea:	02f00593          	li	a1,47
    e88110ee:	00090517          	auipc	a0,0x90
    e88110f2:	27a50513          	addi	a0,a0,634 # e88a1368 <iAP2LinkAccessorySuspendStateEvents+0x160>
    e88110f6:	e4c6                	sd	a7,72(sp)
    e88110f8:	e0c2                	sd	a6,64(sp)
    e88110fa:	fc3e                	sd	a5,56(sp)
    e88110fc:	f83a                	sd	a4,48(sp)
    e88110fe:	f436                	sd	a3,40(sp)
    e8811100:	2786b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811104:	00150593          	addi	a1,a0,1
    e8811108:	0de00613          	li	a2,222
    e881110c:	0008f517          	auipc	a0,0x8f
    e8811110:	0a450513          	addi	a0,a0,164 # e88a01b0 <TWO52+0x5b8>
    e8811114:	1b26b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8811118:	68a6                	ld	a7,72(sp)
    e881111a:	6806                	ld	a6,64(sp)
    e881111c:	77e2                	ld	a5,56(sp)
    e881111e:	7742                	ld	a4,48(sp)
    e8811120:	76a2                	ld	a3,40(sp)
    linkRunLoop->link = iAP2LinkCreate (type,
    e8811122:	464a                	lw	a2,144(sp)
    linkRunLoop->context        = context;
    e8811124:	01543823          	sd	s5,16(s0)
    linkRunLoop->otherData      = NULL;
    e8811128:	02043023          	sd	zero,32(s0)
    linkRunLoop->eventMask      = 0;
    e881112c:	02043423          	sd	zero,40(s0)
    linkRLBufferNext += sizeof(iAP2LinkRunLoop_t);
    e8811130:	03840493          	addi	s1,s0,56
    linkRunLoop->link = iAP2LinkCreate (type,
    e8811134:	e432                	sd	a2,8(sp)
    e8811136:	00000617          	auipc	a2,0x0
    e881113a:	e7460613          	addi	a2,a2,-396 # e8810faa <_iAP2LinkSignalSendBuffCallback>
    e881113e:	ec26                	sd	s1,24(sp)
    e8811140:	e032                	sd	a2,0(sp)
    e8811142:	85a2                	mv	a1,s0
    e8811144:	8652                	mv	a2,s4
    e8811146:	e84a                	sd	s2,16(sp)
    e8811148:	854e                	mv	a0,s3
    e881114a:	96efe0ef          	jal	ra,e880f2b8 <iAP2LinkCreate>
    e881114e:	ec08                	sd	a0,24(s0)
    linkRLBufferNext += iAP2LinkGetBuffSize (maxPacketSentAtOnce);
    e8811150:	854a                	mv	a0,s2
    e8811152:	8e2fe0ef          	jal	ra,e880f234 <iAP2LinkGetBuffSize>
    e8811156:	7c05350b          	extu	a0,a0,31,0
    assert(linkRunLoop->link);
    e881115a:	6c1c                	ld	a5,24(s0)
    linkRLBufferNext += iAP2LinkGetBuffSize (maxPacketSentAtOnce);
    e881115c:	94aa                	add	s1,s1,a0
    assert(linkRunLoop->link);
    e881115e:	e39d                	bnez	a5,e8811184 <iAP2LinkRunLoopCreate+0xe2>
    e8811160:	02f00593          	li	a1,47
    e8811164:	00090517          	auipc	a0,0x90
    e8811168:	20450513          	addi	a0,a0,516 # e88a1368 <iAP2LinkAccessorySuspendStateEvents+0x160>
    e881116c:	20c6b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811170:	00150593          	addi	a1,a0,1
    e8811174:	0f700613          	li	a2,247
    e8811178:	0008f517          	auipc	a0,0x8f
    e881117c:	03850513          	addi	a0,a0,56 # e88a01b0 <TWO52+0x5b8>
    e8811180:	1466b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    iAP2LinkSetUseiAP2LinkRunLoop (linkRunLoop->link);
    e8811184:	6c08                	ld	a0,24(s0)
    linkRunLoop->linkRLBufferNext = linkRLBufferNext;
    e8811186:	e404                	sd	s1,8(s0)
    iAP2LinkSetUseiAP2LinkRunLoop (linkRunLoop->link);
    e8811188:	f4cff0ef          	jal	ra,e88108d4 <iAP2LinkSetUseiAP2LinkRunLoop>
    iAP2LinkStart (linkRunLoop->link);
    e881118c:	6c08                	ld	a0,24(s0)
    e881118e:	c4efe0ef          	jal	ra,e880f5dc <iAP2LinkStart>
    iAP2LinkRunLoopInitImplementation (linkRunLoop);
    e8811192:	8522                	mv	a0,s0
    e8811194:	e02fd0ef          	jal	ra,e880e796 <iAP2LinkRunLoopInitImplementation>
}
    e8811198:	74e6                	ld	s1,120(sp)
    e881119a:	8522                	mv	a0,s0
    e881119c:	60aa                	ld	ra,136(sp)
    e881119e:	640a                	ld	s0,128(sp)
    e88111a0:	7946                	ld	s2,112(sp)
    e88111a2:	79a6                	ld	s3,104(sp)
    e88111a4:	7a06                	ld	s4,96(sp)
    e88111a6:	6ae6                	ld	s5,88(sp)
    e88111a8:	6149                	addi	sp,sp,144
    e88111aa:	8082                	ret
        linkRunLoop               = (iAP2LinkRunLoop_t*) (linkRLBuffer + iAP2_LINK_RUNLOOP_BUFFER_OFFSET);
    e88111ac:	00460413          	addi	s0,a2,4
        linkRunLoop->linkRLBuffer = linkRLBuffer;
    e88111b0:	00c63223          	sd	a2,4(a2)
    e88111b4:	bf15                	j	e88110e8 <iAP2LinkRunLoopCreate+0x46>

00000000e88111b6 <iAP2LinkRunLoopCreateAccessory>:
{
    e88111b6:	7179                	addi	sp,sp,-48
    return iAP2LinkRunLoopCreate (kiAP2LinkTypeAccessory,
    e88111b8:	7342                	ld	t1,48(sp)
    e88111ba:	e446                	sd	a7,8(sp)
    e88111bc:	e042                	sd	a6,0(sp)
    e88111be:	e81a                	sd	t1,16(sp)
    e88111c0:	88be                	mv	a7,a5
    e88111c2:	883a                	mv	a6,a4
    e88111c4:	87b6                	mv	a5,a3
    e88111c6:	4701                	li	a4,0
    e88111c8:	86b2                	mv	a3,a2
    e88111ca:	862a                	mv	a2,a0
    e88111cc:	4501                	li	a0,0
{
    e88111ce:	f406                	sd	ra,40(sp)
    return iAP2LinkRunLoopCreate (kiAP2LinkTypeAccessory,
    e88111d0:	ed3ff0ef          	jal	ra,e88110a2 <iAP2LinkRunLoopCreate>
}
    e88111d4:	70a2                	ld	ra,40(sp)
    e88111d6:	6145                	addi	sp,sp,48
    e88111d8:	8082                	ret

00000000e88111da <iAP2LinkRunLoopRun>:
**          a dedicated thread with support for support for signal/wait.
**
*****************************************************************
*/
BOOL iAP2LinkRunLoopRun (iAP2LinkRunLoop_t* linkRunLoop)
{
    e88111da:	1101                	addi	sp,sp,-32
    e88111dc:	e422                	sd	s0,8(sp)
    e88111de:	e826                	sd	s1,16(sp)
    e88111e0:	ec06                	sd	ra,24(sp)
    e88111e2:	842a                	mv	s0,a0
    BOOL status = TRUE;
    if (linkRunLoop)
    {
        while ( status && ! linkRunLoop->shuttingDown )
        {
            if ( ! iAP2LinkRunLoopProtectedCall (linkRunLoop,
    e88111e4:	00000497          	auipc	s1,0x0
    e88111e8:	dce48493          	addi	s1,s1,-562 # e8810fb2 <iAP2LinkRunLoopRunOnce>
    if (linkRunLoop)
    e88111ec:	e10d                	bnez	a0,e881120e <iAP2LinkRunLoopRun+0x34>
            }
        }
    }
    else
    {
        status = FALSE;
    e88111ee:	4501                	li	a0,0
    }
    return status;
}
    e88111f0:	60e2                	ld	ra,24(sp)
    e88111f2:	6422                	ld	s0,8(sp)
    e88111f4:	64c2                	ld	s1,16(sp)
    e88111f6:	6105                	addi	sp,sp,32
    e88111f8:	8082                	ret
            if ( ! iAP2LinkRunLoopProtectedCall (linkRunLoop,
    e88111fa:	8626                	mv	a2,s1
    e88111fc:	4581                	li	a1,0
    e88111fe:	8522                	mv	a0,s0
    e8811200:	e52fd0ef          	jal	ra,e880e852 <iAP2LinkRunLoopProtectedCall>
    e8811204:	e509                	bnez	a0,e881120e <iAP2LinkRunLoopRun+0x34>
                if ( ! iAP2LinkRunLoopWait (linkRunLoop))
    e8811206:	8522                	mv	a0,s0
    e8811208:	daafd0ef          	jal	ra,e880e7b2 <iAP2LinkRunLoopWait>
    e881120c:	b7c5                	j	e88111ec <iAP2LinkRunLoopRun+0x12>
        while ( status && ! linkRunLoop->shuttingDown )
    e881120e:	545c                	lw	a5,44(s0)
    e8811210:	d7ed                	beqz	a5,e88111fa <iAP2LinkRunLoopRun+0x20>
    e8811212:	4505                	li	a0,1
    e8811214:	bff1                	j	e88111f0 <iAP2LinkRunLoopRun+0x16>

00000000e8811216 <iAP2LinkRunLoopTimeout>:
void iAP2LinkRunLoopTimeout (iAP2LinkRunLoop_t* linkRunLoop,
                             uint16_t           timeoutID,
                             uint8_t            timeoutType,
                             uint32_t           curTime)
{
    if (linkRunLoop)
    e8811216:	c131                	beqz	a0,e881125a <iAP2LinkRunLoopTimeout+0x44>
{
    e8811218:	1141                	addi	sp,sp,-16
    e881121a:	e022                	sd	s0,0(sp)
    e881121c:	e406                	sd	ra,8(sp)
    {
        switch (timeoutType)
    e881121e:	47a1                	li	a5,8
    e8811220:	842a                	mv	s0,a0
    e8811222:	02f60563          	beq	a2,a5,e881124c <iAP2LinkRunLoopTimeout+0x36>
    e8811226:	47d1                	li	a5,20
    e8811228:	00f60763          	beq	a2,a5,e8811236 <iAP2LinkRunLoopTimeout+0x20>
    e881122c:	479d                	li	a5,7
    e881122e:	02f61263          	bne	a2,a5,e8811252 <iAP2LinkRunLoopTimeout+0x3c>
            case kiAP2LinkEventWaitDetectTimeout:
                iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskWaitDetectTimeout);
                iAP2LinkRunLoopSignal (linkRunLoop, NULL);
                break;
            case kiAP2LinkEventWaitACKTimeout:
                iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskWaitACKTimeout);
    e8811232:	45c1                	li	a1,16
    e8811234:	a019                	j	e881123a <iAP2LinkRunLoopTimeout+0x24>
                iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskWaitDetectTimeout);
    e8811236:	04000593          	li	a1,64
                iAP2LinkRunLoopSignal (linkRunLoop, NULL);
                break;
            case kiAP2LinkEventSendACKTimeout:
                iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskSendACKTimeout);
    e881123a:	e76fd0ef          	jal	ra,e880e8b0 <iAP2LinkRunLoopSetEventMaskBit>
                iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e881123e:	8522                	mv	a0,s0
                break;
        }
    }
}
    e8811240:	6402                	ld	s0,0(sp)
    e8811242:	60a2                	ld	ra,8(sp)
                iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e8811244:	4581                	li	a1,0
}
    e8811246:	0141                	addi	sp,sp,16
                iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e8811248:	db4fd06f          	j	e880e7fc <iAP2LinkRunLoopSignal>
                iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskSendACKTimeout);
    e881124c:	02000593          	li	a1,32
    e8811250:	b7ed                	j	e881123a <iAP2LinkRunLoopTimeout+0x24>
}
    e8811252:	60a2                	ld	ra,8(sp)
    e8811254:	6402                	ld	s0,0(sp)
    e8811256:	0141                	addi	sp,sp,16
    e8811258:	8082                	ret
    e881125a:	8082                	ret

00000000e881125c <iAP2LinkRunLoopAttached>:
**
*****************************************************************
*/
void iAP2LinkRunLoopAttached (iAP2LinkRunLoop_t* linkRunLoop)
{
    if (linkRunLoop)
    e881125c:	cd19                	beqz	a0,e881127a <iAP2LinkRunLoopAttached+0x1e>
{
    e881125e:	1141                	addi	sp,sp,-16
    {
        iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskAttach);
    e8811260:	4585                	li	a1,1
{
    e8811262:	e022                	sd	s0,0(sp)
    e8811264:	e406                	sd	ra,8(sp)
    e8811266:	842a                	mv	s0,a0
        iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskAttach);
    e8811268:	e48fd0ef          	jal	ra,e880e8b0 <iAP2LinkRunLoopSetEventMaskBit>
        iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e881126c:	8522                	mv	a0,s0
    }
}
    e881126e:	6402                	ld	s0,0(sp)
    e8811270:	60a2                	ld	ra,8(sp)
        iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e8811272:	4581                	li	a1,0
}
    e8811274:	0141                	addi	sp,sp,16
        iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e8811276:	d86fd06f          	j	e880e7fc <iAP2LinkRunLoopSignal>
    e881127a:	8082                	ret

00000000e881127c <iAP2LinkRunLoopDetached>:
**
*****************************************************************
*/
void iAP2LinkRunLoopDetached (iAP2LinkRunLoop_t* linkRunLoop)
{
    if (linkRunLoop)
    e881127c:	cd19                	beqz	a0,e881129a <iAP2LinkRunLoopDetached+0x1e>
{
    e881127e:	1141                	addi	sp,sp,-16
    {
        iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskDetach);
    e8811280:	4589                	li	a1,2
{
    e8811282:	e022                	sd	s0,0(sp)
    e8811284:	e406                	sd	ra,8(sp)
    e8811286:	842a                	mv	s0,a0
        iAP2LinkRunLoopSetEventMaskBit (linkRunLoop, kiAP2LinkRunLoopEventMaskDetach);
    e8811288:	e28fd0ef          	jal	ra,e880e8b0 <iAP2LinkRunLoopSetEventMaskBit>
        iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e881128c:	8522                	mv	a0,s0
    }
}
    e881128e:	6402                	ld	s0,0(sp)
    e8811290:	60a2                	ld	ra,8(sp)
        iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e8811292:	4581                	li	a1,0
}
    e8811294:	0141                	addi	sp,sp,16
        iAP2LinkRunLoopSignal (linkRunLoop, NULL);
    e8811296:	d66fd06f          	j	e880e7fc <iAP2LinkRunLoopSignal>
    e881129a:	8082                	ret

00000000e881129c <iAP2LinkRunLoopHandleReadyPacket>:
*/
void iAP2LinkRunLoopHandleReadyPacket (iAP2LinkRunLoop_t* linkRunLoop,
                                       void*              packetArg)
{
    iAP2Packet_t* packet = (iAP2Packet_t*) packetArg;
    if (linkRunLoop)
    e881129c:	c119                	beqz	a0,e88112a2 <iAP2LinkRunLoopHandleReadyPacket+0x6>
    {
        iAP2LinkRunLoopSignal (linkRunLoop, packet);
    e881129e:	d5efd06f          	j	e880e7fc <iAP2LinkRunLoopSignal>
    }
    else
    {
        iAP2PacketDelete (packet);
    e88112a2:	852e                	mv	a0,a1
    e88112a4:	1a60006f          	j	e881144a <iAP2PacketDelete>

00000000e88112a8 <iAP2PacketIsComplete>:
****************************************************************
*/
BOOL iAP2PacketIsComplete (const iAP2Packet_t* pck)
{
    BOOL result = FALSE;
    if (pck)
    e88112a8:	c519                	beqz	a0,e88112b6 <iAP2PacketIsComplete+0xe>
    {
        result = (kiAP2PacketParseStateFINISH <= pck->state);
    e88112aa:	02c54503          	lbu	a0,44(a0)
    e88112ae:	47a9                	li	a5,10
    e88112b0:	00a7b533          	sltu	a0,a5,a0
    e88112b4:	8082                	ret
    BOOL result = FALSE;
    e88112b6:	4501                	li	a0,0
    }
    return result;
}
    e88112b8:	8082                	ret

00000000e88112ba <iAP2PacketIsACKOnly>:
**
****************************************************************
*/
BOOL iAP2PacketIsACKOnly (const iAP2Packet_t* pck)
{
    return ((pck->pckData->ctl & (kIAP2PacketControlMaskSYN |
    e88112ba:	7d1c                	ld	a5,56(a0)
                                 kIAP2PacketControlMaskEAK |
                                 kIAP2PacketControlMaskRST |
                                 kIAP2PacketControlMaskACK)) == kIAP2PacketControlMaskACK &&
    e88112bc:	04000713          	li	a4,64
    e88112c0:	0047c783          	lbu	a5,4(a5)
    e88112c4:	0f07f793          	andi	a5,a5,240
    e88112c8:	00e79863          	bne	a5,a4,e88112d8 <iAP2PacketIsACKOnly+0x1e>
    e88112cc:	02455503          	lhu	a0,36(a0)
    e88112d0:	155d                	addi	a0,a0,-9
    e88112d2:	00153513          	seqz	a0,a0
    e88112d6:	8082                	ret
    e88112d8:	4501                	li	a0,0
            pck->packetLen == kIAP2PacketHeaderLen);
}
    e88112da:	8082                	ret

00000000e88112dc <iAP2PacketIsEAK>:
**
****************************************************************
*/
BOOL iAP2PacketIsEAK (const iAP2Packet_t* pck)
{
    return ((pck->pckData->ctl & (kIAP2PacketControlMaskEAK)) == kIAP2PacketControlMaskEAK);
    e88112dc:	7d1c                	ld	a5,56(a0)
    e88112de:	0047c503          	lbu	a0,4(a5)
}
    e88112e2:	1455350b          	extu	a0,a0,5,5
    e88112e6:	8082                	ret

00000000e88112e8 <iAP2PacketResetPacket>:
**      None
**
****************************************************************
*/
void iAP2PacketResetPacket (iAP2Packet_t* pck)
{
    e88112e8:	1141                	addi	sp,sp,-16
    e88112ea:	e022                	sd	s0,0(sp)
    e88112ec:	e406                	sd	ra,8(sp)
    e88112ee:	842a                	mv	s0,a0
    pck->dataCurLen     = 0;
    e88112f0:	00053c23          	sd	zero,24(a0)
    pck->dataChecksum   = 0;
    pck->bufferLen      = 0;
    pck->packetLen      = 0;
    pck->timeStamp      = 0;
    e88112f4:	02053023          	sd	zero,32(a0)
    pck->seqPlus        = 0;
    pck->state          = kiAP2PacketParseStateSOP1;
    e88112f8:	02050623          	sb	zero,44(a0)
    /* clear the packet header information */
    memset (pck->pckData, 0, kIAP2PacketHeaderLen);
    e88112fc:	7d08                	ld	a0,56(a0)
    e88112fe:	4625                	li	a2,9
    e8811300:	4581                	li	a1,0
    e8811302:	0926b0ef          	jal	ra,e887c394 <eLIBs_memset>
    pck->cbContext      = NULL;
    e8811306:	00043423          	sd	zero,8(s0)
    pck->callbackOnSend = NULL;
    pck->recvEAK        = FALSE;
    e881130a:	02c45783          	lhu	a5,44(s0)
    pck->callbackOnSend = NULL;
    e881130e:	00043823          	sd	zero,16(s0)
    pck->retransmitCount = 0;
    e8811312:	02040423          	sb	zero,40(s0)
    pck->recvEAK        = FALSE;
    e8811316:	eff7f793          	andi	a5,a5,-257
    e881131a:	02f41623          	sh	a5,44(s0)
}
    e881131e:	60a2                	ld	ra,8(sp)
    e8811320:	6402                	ld	s0,0(sp)
    e8811322:	0141                	addi	sp,sp,16
    e8811324:	8082                	ret

00000000e8811326 <iAP2PacketCreateEmptySendPacket>:
{
    e8811326:	1101                	addi	sp,sp,-32
    e8811328:	ec06                	sd	ra,24(sp)
    e881132a:	e826                	sd	s1,16(sp)
    e881132c:	e422                	sd	s0,8(sp)
    iAP2Packet_t* pck = (iAP2Packet_t*) iAP2BuffPoolGet (((iAP2Link_t*)link)->sendPckPool,
    e881132e:	7d20                	ld	s0,120(a0)
{
    e8811330:	84aa                	mv	s1,a0
                                                         iAP2LinkGetMaxSendPayloadSize (link));
    e8811332:	a6efe0ef          	jal	ra,e880f5a0 <iAP2LinkGetMaxSendPayloadSize>
    iAP2Packet_t* pck = (iAP2Packet_t*) iAP2BuffPoolGet (((iAP2Link_t*)link)->sendPckPool,
    e8811336:	7c05358b          	extu	a1,a0,31,0
    e881133a:	8522                	mv	a0,s0
    e881133c:	277000ef          	jal	ra,e8811db2 <iAP2BuffPoolGet>
    e8811340:	842a                	mv	s0,a0
    assert(pck);
    e8811342:	e11d                	bnez	a0,e8811368 <iAP2PacketCreateEmptySendPacket+0x42>
    e8811344:	02f00593          	li	a1,47
    e8811348:	00090517          	auipc	a0,0x90
    e881134c:	12850513          	addi	a0,a0,296 # e88a1470 <iAP2LinkAccessorySuspendStateEvents+0x268>
    e8811350:	0286b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811354:	00150593          	addi	a1,a0,1
    e8811358:	27800613          	li	a2,632
    e881135c:	0008f517          	auipc	a0,0x8f
    e8811360:	e5450513          	addi	a0,a0,-428 # e88a01b0 <TWO52+0x5b8>
    e8811364:	7636a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(pck->pckData);
    e8811368:	7c1c                	ld	a5,56(s0)
    e881136a:	e39d                	bnez	a5,e8811390 <iAP2PacketCreateEmptySendPacket+0x6a>
    e881136c:	02f00593          	li	a1,47
    e8811370:	00090517          	auipc	a0,0x90
    e8811374:	10050513          	addi	a0,a0,256 # e88a1470 <iAP2LinkAccessorySuspendStateEvents+0x268>
    e8811378:	0006b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e881137c:	00150593          	addi	a1,a0,1
    e8811380:	27900613          	li	a2,633
    e8811384:	0008f517          	auipc	a0,0x8f
    e8811388:	e2c50513          	addi	a0,a0,-468 # e88a01b0 <TWO52+0x5b8>
    e881138c:	73b6a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pck->timer      = INVALID_TIMEOUT_ID;
    e8811390:	57fd                	li	a5,-1
    e8811392:	02f404a3          	sb	a5,41(s0)
    pck->sendPacket = TRUE;
    e8811396:	02d44783          	lbu	a5,45(s0)
    pck->link       = link;
    e881139a:	e004                	sd	s1,0(s0)
    iAP2PacketResetPacket(pck);
    e881139c:	8522                	mv	a0,s0
    pck->sendPacket = TRUE;
    e881139e:	fc17f793          	andi	a5,a5,-63
    e88113a2:	0027e793          	ori	a5,a5,2
    e88113a6:	02f406a3          	sb	a5,45(s0)
    iAP2PacketResetPacket(pck);
    e88113aa:	f3fff0ef          	jal	ra,e88112e8 <iAP2PacketResetPacket>
}
    e88113ae:	64c2                	ld	s1,16(sp)
    e88113b0:	8522                	mv	a0,s0
    e88113b2:	60e2                	ld	ra,24(sp)
    e88113b4:	6422                	ld	s0,8(sp)
    e88113b6:	6105                	addi	sp,sp,32
    e88113b8:	8082                	ret

00000000e88113ba <iAP2PacketCreateEmptyRecvPacket>:
{
    e88113ba:	1101                	addi	sp,sp,-32
    e88113bc:	ec06                	sd	ra,24(sp)
    e88113be:	e826                	sd	s1,16(sp)
    e88113c0:	e422                	sd	s0,8(sp)
    iAP2Packet_t* pck = (iAP2Packet_t*) iAP2BuffPoolGet (((iAP2Link_t*)link)->recvPckPool,
    e88113c2:	7920                	ld	s0,112(a0)
{
    e88113c4:	84aa                	mv	s1,a0
                                                         iAP2LinkGetMaxRecvPayloadSize (link));
    e88113c6:	a00fe0ef          	jal	ra,e880f5c6 <iAP2LinkGetMaxRecvPayloadSize>
    iAP2Packet_t* pck = (iAP2Packet_t*) iAP2BuffPoolGet (((iAP2Link_t*)link)->recvPckPool,
    e88113ca:	7c05358b          	extu	a1,a0,31,0
    e88113ce:	8522                	mv	a0,s0
    e88113d0:	1e3000ef          	jal	ra,e8811db2 <iAP2BuffPoolGet>
    e88113d4:	842a                	mv	s0,a0
    assert(pck);
    e88113d6:	e11d                	bnez	a0,e88113fc <iAP2PacketCreateEmptyRecvPacket+0x42>
    e88113d8:	02f00593          	li	a1,47
    e88113dc:	00090517          	auipc	a0,0x90
    e88113e0:	09450513          	addi	a0,a0,148 # e88a1470 <iAP2LinkAccessorySuspendStateEvents+0x268>
    e88113e4:	7956a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88113e8:	00150593          	addi	a1,a0,1
    e88113ec:	29900613          	li	a2,665
    e88113f0:	0008f517          	auipc	a0,0x8f
    e88113f4:	dc050513          	addi	a0,a0,-576 # e88a01b0 <TWO52+0x5b8>
    e88113f8:	6cf6a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(pck->pckData);
    e88113fc:	7c1c                	ld	a5,56(s0)
    e88113fe:	e39d                	bnez	a5,e8811424 <iAP2PacketCreateEmptyRecvPacket+0x6a>
    e8811400:	02f00593          	li	a1,47
    e8811404:	00090517          	auipc	a0,0x90
    e8811408:	06c50513          	addi	a0,a0,108 # e88a1470 <iAP2LinkAccessorySuspendStateEvents+0x268>
    e881140c:	76d6a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811410:	00150593          	addi	a1,a0,1
    e8811414:	29a00613          	li	a2,666
    e8811418:	0008f517          	auipc	a0,0x8f
    e881141c:	d9850513          	addi	a0,a0,-616 # e88a01b0 <TWO52+0x5b8>
    e8811420:	6a76a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pck->timer      = INVALID_TIMEOUT_ID;
    e8811424:	57fd                	li	a5,-1
    e8811426:	02f404a3          	sb	a5,41(s0)
    pck->sendPacket = FALSE;
    e881142a:	02d44783          	lbu	a5,45(s0)
    pck->link       = link;
    e881142e:	e004                	sd	s1,0(s0)
    iAP2PacketResetPacket(pck);
    e8811430:	8522                	mv	a0,s0
    pck->sendPacket = FALSE;
    e8811432:	fc17f793          	andi	a5,a5,-63
    e8811436:	02f406a3          	sb	a5,45(s0)
    iAP2PacketResetPacket(pck);
    e881143a:	eafff0ef          	jal	ra,e88112e8 <iAP2PacketResetPacket>
}
    e881143e:	64c2                	ld	s1,16(sp)
    e8811440:	8522                	mv	a0,s0
    e8811442:	60e2                	ld	ra,24(sp)
    e8811444:	6422                	ld	s0,8(sp)
    e8811446:	6105                	addi	sp,sp,32
    e8811448:	8082                	ret

00000000e881144a <iAP2PacketDelete>:
{
    e881144a:	1101                	addi	sp,sp,-32
    e881144c:	e422                	sd	s0,8(sp)
    e881144e:	ec06                	sd	ra,24(sp)
    e8811450:	e826                	sd	s1,16(sp)
    e8811452:	842a                	mv	s0,a0
    iAP2Link_t* link = (iAP2Link_t*) pck->link;
    e8811454:	6104                	ld	s1,0(a0)
    iAP2PacketResetPacket (pck);
    e8811456:	e93ff0ef          	jal	ra,e88112e8 <iAP2PacketResetPacket>
    if (pck->timer != INVALID_TIMEOUT_ID)
    e881145a:	02944703          	lbu	a4,41(s0)
    e881145e:	0ff00793          	li	a5,255
    e8811462:	00f70c63          	beq	a4,a5,e881147a <iAP2PacketDelete+0x30>
        iAP2TimeCancelTimer (iAP2LinkGetMainTimer(pck->link),
    e8811466:	6008                	ld	a0,0(s0)
    e8811468:	c68ff0ef          	jal	ra,e88108d0 <iAP2LinkGetMainTimer>
    e881146c:	02944583          	lbu	a1,41(s0)
    e8811470:	51a010ef          	jal	ra,e881298a <iAP2TimeCancelTimer>
        pck->timer = INVALID_TIMEOUT_ID;
    e8811474:	57fd                	li	a5,-1
    e8811476:	02f404a3          	sb	a5,41(s0)
    if (pck->sendPacket)
    e881147a:	02c45783          	lhu	a5,44(s0)
        iAP2BuffPoolReturn (((iAP2Link_t*)link)->sendPckPool, pck);
    e881147e:	85a2                	mv	a1,s0
    if (pck->sendPacket)
    e8811480:	2007f793          	andi	a5,a5,512
    e8811484:	cb81                	beqz	a5,e8811494 <iAP2PacketDelete+0x4a>
        iAP2BuffPoolReturn (((iAP2Link_t*)link)->sendPckPool, pck);
    e8811486:	7ca8                	ld	a0,120(s1)
}
    e8811488:	6422                	ld	s0,8(sp)
    e881148a:	60e2                	ld	ra,24(sp)
    e881148c:	64c2                	ld	s1,16(sp)
    e881148e:	6105                	addi	sp,sp,32
        iAP2BuffPoolReturn (((iAP2Link_t*)link)->recvPckPool, pck);
    e8811490:	14b0006f          	j	e8811dda <iAP2BuffPoolReturn>
    e8811494:	78a8                	ld	a0,112(s1)
    e8811496:	bfcd                	j	e8811488 <iAP2PacketDelete+0x3e>

00000000e8811498 <iAP2PacketGetBuffer>:
 **
 ****************************************************************
 */
uint8_t* iAP2PacketGetBuffer (iAP2Packet_t* packet)
{
    return (uint8_t*) (packet ? packet->pckData : NULL);
    e8811498:	c111                	beqz	a0,e881149c <iAP2PacketGetBuffer+0x4>
    e881149a:	7d08                	ld	a0,56(a0)
}
    e881149c:	8082                	ret

00000000e881149e <iAP2PacketGetPayload>:
 **
 ****************************************************************
 */
uint8_t* iAP2PacketGetPayload (iAP2Packet_t* packet)
{
    return packet->pckData->data;
    e881149e:	7d08                	ld	a0,56(a0)
}
    e88114a0:	0525                	addi	a0,a0,9
    e88114a2:	8082                	ret

00000000e88114a4 <iAP2PacketGetPayloadLen>:
 ****************************************************************
 */
uint16_t iAP2PacketGetPayloadLen (const iAP2Packet_t* packet)
{
    uint16_t payloadLen = 0;
    if (packet->packetLen > kIAP2PacketHeaderLen)
    e88114a4:	02455503          	lhu	a0,36(a0)
    e88114a8:	47a5                	li	a5,9
    e88114aa:	00a7f663          	bgeu	a5,a0,e88114b6 <iAP2PacketGetPayloadLen+0x12>
    {
        payloadLen = packet->packetLen - kIAP2PacketHeaderLen - kIAP2PacketChksumLen;
    e88114ae:	3559                	addiw	a0,a0,-10
    e88114b0:	3c05350b          	extu	a0,a0,15,0
    e88114b4:	8082                	ret
    uint16_t payloadLen = 0;
    e88114b6:	4501                	li	a0,0
    }
    return payloadLen;
}
    e88114b8:	8082                	ret

00000000e88114ba <iAP2PacketCreate>:
{
    e88114ba:	715d                	addi	sp,sp,-80
    e88114bc:	fc26                	sd	s1,56(sp)
    e88114be:	f84a                	sd	s2,48(sp)
    e88114c0:	f44e                	sd	s3,40(sp)
    e88114c2:	f052                	sd	s4,32(sp)
    e88114c4:	ec56                	sd	s5,24(sp)
    e88114c6:	e85a                	sd	s6,16(sp)
    e88114c8:	e45e                	sd	s7,8(sp)
    e88114ca:	e062                	sd	s8,0(sp)
    e88114cc:	e486                	sd	ra,72(sp)
    e88114ce:	e0a2                	sd	s0,64(sp)
    e88114d0:	8bae                	mv	s7,a1
    e88114d2:	8b32                	mv	s6,a2
    e88114d4:	8ab6                	mv	s5,a3
    e88114d6:	89ba                	mv	s3,a4
    e88114d8:	893e                	mv	s2,a5
    e88114da:	8a42                	mv	s4,a6
    e88114dc:	84c6                	mv	s1,a7
    uint16_t checkSumLen = (payloadLen > 0 ? kIAP2PacketChksumLen : 0);
    e88114de:	00f03c33          	snez	s8,a5
    if (sendPacket)
    e88114e2:	10088263          	beqz	a7,e88115e6 <iAP2PacketCreate+0x12c>
        pck = iAP2PacketCreateEmptySendPacket (link);
    e88114e6:	e41ff0ef          	jal	ra,e8811326 <iAP2PacketCreateEmptySendPacket>
        pck = iAP2PacketCreateEmptyRecvPacket (link);
    e88114ea:	842a                	mv	s0,a0
    assert(pck);
    e88114ec:	e11d                	bnez	a0,e8811512 <iAP2PacketCreate+0x58>
    e88114ee:	02f00593          	li	a1,47
    e88114f2:	00090517          	auipc	a0,0x90
    e88114f6:	f7e50513          	addi	a0,a0,-130 # e88a1470 <iAP2LinkAccessorySuspendStateEvents+0x268>
    e88114fa:	67f6a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88114fe:	00150593          	addi	a1,a0,1
    e8811502:	2d200613          	li	a2,722
    e8811506:	0008f517          	auipc	a0,0x8f
    e881150a:	caa50513          	addi	a0,a0,-854 # e88a01b0 <TWO52+0x5b8>
    e881150e:	5b96a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pck->packetLen      = kIAP2PacketHeaderLen + payloadLen + checkSumLen;
    e8811512:	0099079b          	addiw	a5,s2,9
    e8811516:	018787bb          	addw	a5,a5,s8
    e881151a:	02f41223          	sh	a5,36(s0)
    pck->pckData->sop1   = kIAP2PacketSYNC;
    e881151e:	7c1c                	ld	a5,56(s0)
    e8811520:	577d                	li	a4,-1
    pck->sendPacket     = sendPacket;
    e8811522:	8885                	andi	s1,s1,1
    pck->pckData->sop1   = kIAP2PacketSYNC;
    e8811524:	00e78023          	sb	a4,0(a5)
    pck->pckData->sop2   = kIAP2PacketSOP;
    e8811528:	7c1c                	ld	a5,56(s0)
    e881152a:	05a00713          	li	a4,90
    pck->sendPacket     = sendPacket;
    e881152e:	04a6                	slli	s1,s1,0x9
    pck->pckData->sop2   = kIAP2PacketSOP;
    e8811530:	00e780a3          	sb	a4,1(a5)
    pck->pckData->len1   = IAP2_HI_BYTE(pck->packetLen);
    e8811534:	02445783          	lhu	a5,36(s0)
    e8811538:	7c18                	ld	a4,56(s0)
    e881153a:	0087d79b          	srliw	a5,a5,0x8
    e881153e:	00f70123          	sb	a5,2(a4)
    pck->pckData->len2   = IAP2_LO_BYTE(pck->packetLen);
    e8811542:	7c1c                	ld	a5,56(s0)
    e8811544:	02445703          	lhu	a4,36(s0)
    e8811548:	00e781a3          	sb	a4,3(a5)
    pck->pckData->ctl    = control;
    e881154c:	7c1c                	ld	a5,56(s0)
    e881154e:	01778223          	sb	s7,4(a5)
    pck->pckData->seq    = seq;
    e8811552:	7c1c                	ld	a5,56(s0)
    e8811554:	016782a3          	sb	s6,5(a5)
    pck->pckData->ack    = ack;
    e8811558:	7c1c                	ld	a5,56(s0)
    e881155a:	01578323          	sb	s5,6(a5)
    pck->pckData->sess   = session;
    e881155e:	7c1c                	ld	a5,56(s0)
    e8811560:	014783a3          	sb	s4,7(a5)
    pck->pckData->chk    = 0;
    e8811564:	7c1c                	ld	a5,56(s0)
    e8811566:	00078423          	sb	zero,8(a5)
    pck->sendPacket     = sendPacket;
    e881156a:	02c45703          	lhu	a4,44(s0)
    pck->debugData      = 0;
    e881156e:	77f1                	lui	a5,0xffffc
    e8811570:	3ff78793          	addi	a5,a5,1023 # ffffffffffffc3ff <__DRAM0_INF_BASE+0xffffffff0000c3ff>
    pck->sendPacket     = sendPacket;
    e8811574:	dff77713          	andi	a4,a4,-513
    e8811578:	8f45                	or	a4,a4,s1
    pck->debugData      = 0;
    e881157a:	8f7d                	and	a4,a4,a5
    pck->bufferLen  = pck->packetLen;
    e881157c:	02445783          	lhu	a5,36(s0)
    pck->seqPlus        = 0;
    e8811580:	020403a3          	sb	zero,39(s0)
    pck->debugData      = 0;
    e8811584:	02e41623          	sh	a4,44(s0)
    pck->bufferLen  = pck->packetLen;
    e8811588:	cc5c                	sw	a5,28(s0)
    if (payload != NULL && payloadLen > 0)
    e881158a:	00098b63          	beqz	s3,e88115a0 <iAP2PacketCreate+0xe6>
    e881158e:	00090963          	beqz	s2,e88115a0 <iAP2PacketCreate+0xe6>
    return packet->pckData->data;
    e8811592:	7c08                	ld	a0,56(s0)
        memcpy (iAP2PacketGetPayload (pck), payload, payloadLen);
    e8811594:	7c09360b          	extu	a2,s2,31,0
    e8811598:	85ce                	mv	a1,s3
    e881159a:	0525                	addi	a0,a0,9
    e881159c:	6056a0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    pck->dataCurLen = iAP2PacketGetPayloadLen (pck);
    e88115a0:	8522                	mv	a0,s0
    e88115a2:	f03ff0ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
    e88115a6:	cc08                	sw	a0,24(s0)
    pck->state = kiAP2PacketParseStateFINISH;
    e88115a8:	02c45783          	lhu	a5,44(s0)
    pck->dataChecksum = 0;
    e88115ac:	02040323          	sb	zero,38(s0)
    pck->cbContext = NULL;
    e88115b0:	00043423          	sd	zero,8(s0)
    pck->state = kiAP2PacketParseStateFINISH;
    e88115b4:	e007f793          	andi	a5,a5,-512
    e88115b8:	00b7e793          	ori	a5,a5,11
    e88115bc:	02f41623          	sh	a5,44(s0)
    pck->retransmitCount = 0;
    e88115c0:	f0000793          	li	a5,-256
    e88115c4:	02f41423          	sh	a5,40(s0)
    pck->callbackOnSend = NULL;
    e88115c8:	00043823          	sd	zero,16(s0)
}
    e88115cc:	8522                	mv	a0,s0
    e88115ce:	60a6                	ld	ra,72(sp)
    e88115d0:	6406                	ld	s0,64(sp)
    e88115d2:	74e2                	ld	s1,56(sp)
    e88115d4:	7942                	ld	s2,48(sp)
    e88115d6:	79a2                	ld	s3,40(sp)
    e88115d8:	7a02                	ld	s4,32(sp)
    e88115da:	6ae2                	ld	s5,24(sp)
    e88115dc:	6b42                	ld	s6,16(sp)
    e88115de:	6ba2                	ld	s7,8(sp)
    e88115e0:	6c02                	ld	s8,0(sp)
    e88115e2:	6161                	addi	sp,sp,80
    e88115e4:	8082                	ret
        pck = iAP2PacketCreateEmptyRecvPacket (link);
    e88115e6:	dd5ff0ef          	jal	ra,e88113ba <iAP2PacketCreateEmptyRecvPacket>
    e88115ea:	b701                	j	e88114ea <iAP2PacketCreate+0x30>

00000000e88115ec <iAP2PacketCreateACKPacket>:
    iAP2Packet_t* pck = iAP2PacketCreate (link,
    e88115ec:	883e                	mv	a6,a5
    e88115ee:	4885                	li	a7,1
    e88115f0:	87ba                	mv	a5,a4
    e88115f2:	8736                	mv	a4,a3
    e88115f4:	86b2                	mv	a3,a2
    e88115f6:	862e                	mv	a2,a1
    e88115f8:	04000593          	li	a1,64
    e88115fc:	ebfff06f          	j	e88114ba <iAP2PacketCreate>

00000000e8811600 <iAP2PacketCreateSYNPacket>:
{
    e8811600:	7139                	addi	sp,sp,-64
    e8811602:	fc06                	sd	ra,56(sp)
    e8811604:	832e                	mv	t1,a1
    e8811606:	05014e03          	lbu	t3,80(sp)
    uint8_t control = (kIAP2PacketControlMaskSYN +
    e881160a:	08000593          	li	a1,128
    e881160e:	c219                	beqz	a2,e8811614 <iAP2PacketCreateSYNPacket+0x14>
    e8811610:	0c000593          	li	a1,192
    buff [kIAP2PacketSynDataIdxMaxOutstanding]      = maxOutstanding;
    e8811614:	00e104a3          	sb	a4,9(sp)
    buff [kIAP2PacketSynDataIdxMaxPacketSize]       = IAP2_HI_BYTE(maxPacketSize);
    e8811618:	00879713          	slli	a4,a5,0x8
    e881161c:	5c87b78b          	extu	a5,a5,23,8
    e8811620:	8fd9                	or	a5,a5,a4
    e8811622:	00f11523          	sh	a5,10(sp)
    buff [kIAP2PacketSynDataIdxMaxRetransmit]       = maxRetransmit;
    e8811626:	04014783          	lbu	a5,64(sp)
    buff [kIAP2PacketSynDataIdxRetransmitTimeout]   = IAP2_HI_BYTE(reTxTimeout);
    e881162a:	00881713          	slli	a4,a6,0x8
    e881162e:	5c88380b          	extu	a6,a6,23,8
    e8811632:	01076833          	or	a6,a4,a6
    buff [kIAP2PacketSynDataIdxMaxRetransmit]       = maxRetransmit;
    e8811636:	00f10823          	sb	a5,16(sp)
    buff [kIAP2PacketSynDataIdxCumAckTimeout]       = IAP2_HI_BYTE(cumAckTimeout);
    e881163a:	00889713          	slli	a4,a7,0x8
    buff [kIAP2PacketSynDataIdxMaxCumACK]           = maxCumAck;
    e881163e:	04814783          	lbu	a5,72(sp)
    buff [kIAP2PacketSynDataIdxCumAckTimeout]       = IAP2_HI_BYTE(cumAckTimeout);
    e8811642:	5c88b88b          	extu	a7,a7,23,8
    e8811646:	011768b3          	or	a7,a4,a7
    buff [kIAP2PacketSynDataIdxRetransmitTimeout]   = IAP2_HI_BYTE(reTxTimeout);
    e881164a:	01011623          	sh	a6,12(sp)
    e881164e:	6866                	ld	a6,88(sp)
    buff [kIAP2PacketSynDataIdxVersion]             = version;
    e8811650:	00d10423          	sb	a3,8(sp)
    buff [kIAP2PacketSynDataIdxCumAckTimeout+1]     = IAP2_LO_BYTE(cumAckTimeout);;
    e8811654:	0034                	addi	a3,sp,8
    buff [kIAP2PacketSynDataIdxCumAckTimeout]       = IAP2_HI_BYTE(cumAckTimeout);
    e8811656:	01111723          	sh	a7,14(sp)
    buff [kIAP2PacketSynDataIdxMaxCumACK]           = maxCumAck;
    e881165a:	00f108a3          	sb	a5,17(sp)
    for (i = 0, j = kIAP2PacketSynDataIdxSessionInfo;
    e881165e:	4881                	li	a7,0
    e8811660:	8736                	mv	a4,a3
    e8811662:	8ef2                	mv	t4,t3
         i < numSessionInfo && i < kIAP2PacketMaxSessions;
    e8811664:	47a9                	li	a5,10
    for (i = 0, j = kIAP2PacketSynDataIdxSessionInfo;
    e8811666:	01d8d563          	bge	a7,t4,e8811670 <iAP2PacketCreateSYNPacket+0x70>
    e881166a:	068d                	addi	a3,a3,3
         i < numSessionInfo && i < kIAP2PacketMaxSessions;
    e881166c:	02f89263          	bne	a7,a5,e8811690 <iAP2PacketCreateSYNPacket+0x90>
    pck = iAP2PacketCreate (link,
    e8811670:	4681                	li	a3,0
    e8811672:	c219                	beqz	a2,e8811678 <iAP2PacketCreateSYNPacket+0x78>
    e8811674:	00064683          	lbu	a3,0(a2)
                            kIAP2PacketSynDataBaseLen + numSessionInfo * sizeof(*sessionInfo),
    e8811678:	478d                	li	a5,3
    e881167a:	03c787bb          	mulw	a5,a5,t3
    pck = iAP2PacketCreate (link,
    e881167e:	4885                	li	a7,1
    e8811680:	4801                	li	a6,0
    e8811682:	861a                	mv	a2,t1
    e8811684:	07a9                	addi	a5,a5,10
    e8811686:	e35ff0ef          	jal	ra,e88114ba <iAP2PacketCreate>
}
    e881168a:	70e2                	ld	ra,56(sp)
    e881168c:	6121                	addi	sp,sp,64
    e881168e:	8082                	ret
        buff [j + kIAP2PacketSynSessionIdxID]       = sessionInfo[i].id;
    e8811690:	00084f03          	lbu	t5,0(a6)
         ++i, j += kIAP2PacketSynSessionSize)
    e8811694:	2885                	addiw	a7,a7,1
    e8811696:	080d                	addi	a6,a6,3
        buff [j + kIAP2PacketSynSessionIdxID]       = sessionInfo[i].id;
    e8811698:	01e683a3          	sb	t5,7(a3)
        buff [j + kIAP2PacketSynSessionIdxType]     = sessionInfo[i].type;
    e881169c:	ffe84f03          	lbu	t5,-2(a6)
    e88116a0:	01e68423          	sb	t5,8(a3)
        buff [j + kIAP2PacketSynSessionIdxVersion]  = sessionInfo[i].version;
    e88116a4:	fff84f03          	lbu	t5,-1(a6)
    e88116a8:	01e684a3          	sb	t5,9(a3)
         ++i, j += kIAP2PacketSynSessionSize)
    e88116ac:	bf6d                	j	e8811666 <iAP2PacketCreateSYNPacket+0x66>

00000000e88116ae <iAP2PacketCreateEAKPacket>:
    iAP2Packet_t* pck = iAP2PacketCreate (link,
    e88116ae:	87ba                	mv	a5,a4
    e88116b0:	4885                	li	a7,1
    e88116b2:	8736                	mv	a4,a3
    e88116b4:	4801                	li	a6,0
    e88116b6:	86b2                	mv	a3,a2
    e88116b8:	862e                	mv	a2,a1
    e88116ba:	06000593          	li	a1,96
    e88116be:	dfdff06f          	j	e88114ba <iAP2PacketCreate>

00000000e88116c2 <iAP2PacketParseSYNData>:
*/
void iAP2PacketParseSYNData (const uint8_t*         data,
                             uint32_t               dataLen,
                             iAP2PacketSYNData_t*   synData)
{
    if (kIAP2PacketSynDataBaseLen <= dataLen)
    e88116c2:	47a5                	li	a5,9
    e88116c4:	08b7f563          	bgeu	a5,a1,e881174e <iAP2PacketParseSYNData+0x8c>
    {
        uint8_t numSessionInfo = (dataLen - kIAP2PacketSynDataBaseLen) / kIAP2PacketSynSessionSize;
    e88116c8:	478d                	li	a5,3
    e88116ca:	35d9                	addiw	a1,a1,-10
    e88116cc:	02f5d5bb          	divuw	a1,a1,a5
        uint8_t i, j;

        synData->version               = data[kIAP2PacketSynDataIdxVersion];
    e88116d0:	00054783          	lbu	a5,0(a0)
    e88116d4:	00f60023          	sb	a5,0(a2)
        synData->maxOutstandingPackets = data[kIAP2PacketSynDataIdxMaxOutstanding];
    e88116d8:	00154783          	lbu	a5,1(a0)
    e88116dc:	00f600a3          	sb	a5,1(a2)
        synData->maxPacketSize         = data[kIAP2PacketSynDataIdxMaxPacketSize];
    e88116e0:	00254783          	lbu	a5,2(a0)
        synData->maxPacketSize       <<= 8;
    e88116e4:	07a2                	slli	a5,a5,0x8
    e88116e6:	00f61223          	sh	a5,4(a2)
        synData->maxPacketSize        += data[kIAP2PacketSynDataIdxMaxPacketSize+1];
    e88116ea:	00354703          	lbu	a4,3(a0)
    e88116ee:	9fb9                	addw	a5,a5,a4
    e88116f0:	00f61223          	sh	a5,4(a2)
        synData->retransmitTimeout     = data[kIAP2PacketSynDataIdxRetransmitTimeout];
    e88116f4:	00454783          	lbu	a5,4(a0)
        synData->retransmitTimeout   <<= 8;
    e88116f8:	07a2                	slli	a5,a5,0x8
    e88116fa:	00f61323          	sh	a5,6(a2)
        synData->retransmitTimeout    += data[kIAP2PacketSynDataIdxRetransmitTimeout+1];
    e88116fe:	00554703          	lbu	a4,5(a0)
    e8811702:	9fb9                	addw	a5,a5,a4
    e8811704:	00f61323          	sh	a5,6(a2)
        synData->cumAckTimeout         = data[kIAP2PacketSynDataIdxCumAckTimeout];
    e8811708:	00654783          	lbu	a5,6(a0)
        synData->cumAckTimeout       <<= 8;
    e881170c:	07a2                	slli	a5,a5,0x8
    e881170e:	00f61423          	sh	a5,8(a2)
        synData->cumAckTimeout        += data[kIAP2PacketSynDataIdxCumAckTimeout+1];
    e8811712:	00754703          	lbu	a4,7(a0)
        uint8_t numSessionInfo = (dataLen - kIAP2PacketSynDataBaseLen) / kIAP2PacketSynSessionSize;
    e8811716:	0ff5f593          	andi	a1,a1,255
        synData->cumAckTimeout        += data[kIAP2PacketSynDataIdxCumAckTimeout+1];
    e881171a:	9fb9                	addw	a5,a5,a4
    e881171c:	00f61423          	sh	a5,8(a2)
        synData->maxRetransmissions    = data[kIAP2PacketSynDataIdxMaxRetransmit];
    e8811720:	00854783          	lbu	a5,8(a0)
    e8811724:	4729                	li	a4,10
    e8811726:	00f60123          	sb	a5,2(a2)
        synData->maxCumAck             = data[kIAP2PacketSynDataIdxMaxCumACK];
    e881172a:	00954783          	lbu	a5,9(a0)
    e881172e:	00f601a3          	sb	a5,3(a2)
        if (numSessionInfo > kIAP2PacketMaxSessions)
    e8811732:	87ae                	mv	a5,a1
    e8811734:	00b77363          	bgeu	a4,a1,e881173a <iAP2PacketParseSYNData+0x78>
    e8811738:	47a9                	li	a5,10
    e881173a:	0ff7f693          	andi	a3,a5,255
        {
            numSessionInfo = kIAP2PacketMaxSessions;
        }
        for (i = 0, j = kIAP2PacketSynDataIdxSessionInfo;
    e881173e:	0529                	addi	a0,a0,10
    e8811740:	01060713          	addi	a4,a2,16
    e8811744:	4781                	li	a5,0
    e8811746:	00d79563          	bne	a5,a3,e8811750 <iAP2PacketParseSYNData+0x8e>
        {
            synData->sessionInfo[i].id      = data[j + kIAP2PacketSynSessionIdxID];
            synData->sessionInfo[i].type    = data[j + kIAP2PacketSynSessionIdxType];
            synData->sessionInfo[i].version = data[j + kIAP2PacketSynSessionIdxVersion];
        }
        synData->numSessionInfo = numSessionInfo;
    e881174a:	00f60523          	sb	a5,10(a2)
    }
}
    e881174e:	8082                	ret
            synData->sessionInfo[i].id      = data[j + kIAP2PacketSynSessionIdxID];
    e8811750:	00054583          	lbu	a1,0(a0)
             ++i, j += kIAP2PacketSynSessionSize)
    e8811754:	2785                	addiw	a5,a5,1
    e8811756:	0ff7f793          	andi	a5,a5,255
            synData->sessionInfo[i].id      = data[j + kIAP2PacketSynSessionIdxID];
    e881175a:	00b70023          	sb	a1,0(a4)
            synData->sessionInfo[i].type    = data[j + kIAP2PacketSynSessionIdxType];
    e881175e:	00154583          	lbu	a1,1(a0)
    e8811762:	070d                	addi	a4,a4,3
    e8811764:	050d                	addi	a0,a0,3
    e8811766:	feb70f23          	sb	a1,-2(a4)
            synData->sessionInfo[i].version = data[j + kIAP2PacketSynSessionIdxVersion];
    e881176a:	fff54583          	lbu	a1,-1(a0)
    e881176e:	feb70fa3          	sb	a1,-1(a4)
             ++i, j += kIAP2PacketSynSessionSize)
    e8811772:	bfd1                	j	e8811746 <iAP2PacketParseSYNData+0x84>

00000000e8811774 <iAP2PacketCalcChecksum>:
**
****************************************************************
*/
uint8_t iAP2PacketCalcChecksum (const uint8_t*  buffer,
                                uint32_t        bufferLen)
{
    e8811774:	86aa                	mv	a3,a0
    e8811776:	872e                	mv	a4,a1
    uint8_t checksum = 0;

    if (buffer != NULL && bufferLen > 0)
    e8811778:	c11d                	beqz	a0,e881179e <iAP2PacketCalcChecksum+0x2a>
    e881177a:	c195                	beqz	a1,e881179e <iAP2PacketCalcChecksum+0x2a>
    {
        const uint8_t* bufferEnd = buffer + bufferLen;
    e881177c:	7c05b70b          	extu	a4,a1,31,0
    e8811780:	972a                	add	a4,a4,a0
    uint8_t checksum = 0;
    e8811782:	4781                	li	a5,0

        while (buffer != bufferEnd)
    e8811784:	00d71763          	bne	a4,a3,e8811792 <iAP2PacketCalcChecksum+0x1e>
        {
            checksum += *buffer; /* add to checksum */
            buffer++;
        }

        checksum = (uint8_t)(0x100 - checksum); /* 2's complement negative checksum */
    e8811788:	40f0053b          	negw	a0,a5
    e881178c:	0ff57513          	andi	a0,a0,255
        iAP2LogError("%s:%d NULL buffer(%p) pointer or nothing to copy (len=%u)!\n",
                     __FILE__, __LINE__, buffer, bufferLen);
    }

    return checksum;
}
    e8811790:	8082                	ret
            checksum += *buffer; /* add to checksum */
    e8811792:	9816c50b          	lbuia	a0,(a3),1,0
    e8811796:	9fa9                	addw	a5,a5,a0
    e8811798:	0ff7f793          	andi	a5,a5,255
            buffer++;
    e881179c:	b7e5                	j	e8811784 <iAP2PacketCalcChecksum+0x10>
{
    e881179e:	1141                	addi	sp,sp,-16
        iAP2LogError("%s:%d NULL buffer(%p) pointer or nothing to copy (len=%u)!\n",
    e88117a0:	00090517          	auipc	a0,0x90
    e88117a4:	c9050513          	addi	a0,a0,-880 # e88a1430 <iAP2LinkAccessorySuspendStateEvents+0x228>
    e88117a8:	59c00613          	li	a2,1436
    e88117ac:	00090597          	auipc	a1,0x90
    e88117b0:	cc458593          	addi	a1,a1,-828 # e88a1470 <iAP2LinkAccessorySuspendStateEvents+0x268>
{
    e88117b4:	e406                	sd	ra,8(sp)
        iAP2LogError("%s:%d NULL buffer(%p) pointer or nothing to copy (len=%u)!\n",
    e88117b6:	6ef000ef          	jal	ra,e88126a4 <iAP2LogError>
}
    e88117ba:	60a2                	ld	ra,8(sp)
    uint8_t checksum = 0;
    e88117bc:	4501                	li	a0,0
}
    e88117be:	0141                	addi	sp,sp,16
    e88117c0:	8082                	ret

00000000e88117c2 <iAP2PacketNextSeq>:
**
****************************************************************
*/
uint8_t iAP2PacketNextSeq (uint8_t curSeq)
{
    return (uint8_t) (curSeq + 1);
    e88117c2:	2505                	addiw	a0,a0,1
}
    e88117c4:	0ff57513          	andi	a0,a0,255
    e88117c8:	8082                	ret

00000000e88117ca <iAP2PacketCalcSeqGap>:
**
****************************************************************
*/
uint8_t iAP2PacketCalcSeqGap (uint8_t curSeq, uint8_t nextSeq)
{
    if (curSeq < nextSeq)
    e88117ca:	00b57763          	bgeu	a0,a1,e88117d8 <iAP2PacketCalcSeqGap+0xe>
    {
        return nextSeq - curSeq;
    e88117ce:	40a5853b          	subw	a0,a1,a0
    e88117d2:	0ff57513          	andi	a0,a0,255
    e88117d6:	8082                	ret
    }
    else if (curSeq == nextSeq)
    e88117d8:	feb51be3          	bne	a0,a1,e88117ce <iAP2PacketCalcSeqGap+0x4>
    {
        return 0;
    e88117dc:	4501                	li	a0,0
    }

    return nextSeq + (0x100 - curSeq);
}
    e88117de:	8082                	ret

00000000e88117e0 <iAP2PacketGetMissingSeqFromEAK>:
{
    e88117e0:	7159                	addi	sp,sp,-112
    e88117e2:	eca6                	sd	s1,88(sp)
    e88117e4:	e4ce                	sd	s3,72(sp)
    e88117e6:	f486                	sd	ra,104(sp)
    e88117e8:	f0a2                	sd	s0,96(sp)
    e88117ea:	e8ca                	sd	s2,80(sp)
    e88117ec:	e0d2                	sd	s4,64(sp)
    e88117ee:	fc56                	sd	s5,56(sp)
    e88117f0:	f85a                	sd	s6,48(sp)
    e88117f2:	f45e                	sd	s7,40(sp)
    e88117f4:	f062                	sd	s8,32(sp)
    e88117f6:	ec66                	sd	s9,24(sp)
    e88117f8:	e86a                	sd	s10,16(sp)
    e88117fa:	e46e                	sd	s11,8(sp)
    e88117fc:	84aa                	mv	s1,a0
    e88117fe:	89b2                	mv	s3,a2
    if (eakPacket != NULL && missingLen != NULL)
    e8811800:	10050563          	beqz	a0,e881190a <iAP2PacketGetMissingSeqFromEAK+0x12a>
    e8811804:	c641                	beqz	a2,e881188c <iAP2PacketGetMissingSeqFromEAK+0xac>
        iAP2Link_t* link = eakPacket->link;
    e8811806:	00053a83          	ld	s5,0(a0)
        int16_t* tmpResult = iAP2BuffPoolGet (link->buffPool, window * sizeof(*tmpResult));
    e881180a:	00159a13          	slli	s4,a1,0x1
    e881180e:	8b2e                	mv	s6,a1
    e8811810:	080ab503          	ld	a0,128(s5)
    e8811814:	85d2                	mv	a1,s4
    e8811816:	59c000ef          	jal	ra,e8811db2 <iAP2BuffPoolGet>
    e881181a:	8c2a                	mv	s8,a0
        ack = eakPacket->pckData->ack;
    e881181c:	7c9c                	ld	a5,56(s1)
        ptEnd = tmpResult + window;
    e881181e:	9a2a                	add	s4,s4,a0
        pt = tmpResult;
    e8811820:	872a                	mv	a4,a0
        ack = eakPacket->pckData->ack;
    e8811822:	0067c783          	lbu	a5,6(a5)
        while (pt < ptEnd)
    e8811826:	09476363          	bltu	a4,s4,e88118ac <iAP2PacketGetMissingSeqFromEAK+0xcc>
        ack = eakPacket->pckData->ack;
    e881182a:	0384b903          	ld	s2,56(s1)
        dataEnd = data + iAP2PacketGetPayloadLen (eakPacket);
    e881182e:	8526                	mv	a0,s1
    e8811830:	c75ff0ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
        ack = eakPacket->pckData->ack;
    e8811834:	00694b83          	lbu	s7,6(s2)
    return packet->pckData->data;
    e8811838:	0925                	addi	s2,s2,9
        dataEnd = data + iAP2PacketGetPayloadLen (eakPacket);
    e881183a:	00a904b3          	add	s1,s2,a0
        resultLen = window;
    e881183e:	000b041b          	sext.w	s0,s6
        uint8_t  maxGap = 0;
    e8811842:	4c81                	li	s9,0
                if (tmpResult [gap - 1] != -1)
    e8811844:	5d7d                	li	s10,-1
                tmpResult [gap - 1] = -1;
    e8811846:	5dfd                	li	s11,-1
        while (data < dataEnd)
    e8811848:	06996863          	bltu	s2,s1,e88118b8 <iAP2PacketGetMissingSeqFromEAK+0xd8>
        resultLen -= (window - maxGap);
    e881184c:	419b0b3b          	subw	s6,s6,s9
    e8811850:	4164093b          	subw	s2,s0,s6
        if (resultLen > 0)
    e8811854:	7c09340b          	extu	s0,s2,31,0
    uint8_t* result = NULL;
    e8811858:	4481                	li	s1,0
        if (resultLen > 0)
    e881185a:	00090863          	beqz	s2,e881186a <iAP2PacketGetMissingSeqFromEAK+0x8a>
            result = iAP2BuffPoolGet (link->buffPool, resultLen);;
    e881185e:	080ab503          	ld	a0,128(s5)
    e8811862:	85a2                	mv	a1,s0
    e8811864:	54e000ef          	jal	ra,e8811db2 <iAP2BuffPoolGet>
    e8811868:	84aa                	mv	s1,a0
        dataEnd = data + resultLen;
    e881186a:	9426                	add	s0,s0,s1
        pt = tmpResult;
    e881186c:	8762                	mv	a4,s8
        data = result;
    e881186e:	87a6                	mv	a5,s1
        gap = 1;
    e8811870:	4685                	li	a3,1
            if (*pt != -1 && gap++ <= maxGap)
    e8811872:	557d                	li	a0,-1
        while (pt < ptEnd && data < dataEnd)
    e8811874:	01477463          	bgeu	a4,s4,e881187c <iAP2PacketGetMissingSeqFromEAK+0x9c>
    e8811878:	0687e963          	bltu	a5,s0,e88118ea <iAP2PacketGetMissingSeqFromEAK+0x10a>
        iAP2BuffPoolReturn (link->buffPool, tmpResult);
    e881187c:	080ab503          	ld	a0,128(s5)
    e8811880:	85e2                	mv	a1,s8
    e8811882:	558000ef          	jal	ra,e8811dda <iAP2BuffPoolReturn>
        *missingLen = resultLen;
    e8811886:	0129a023          	sw	s2,0(s3)
    e881188a:	89a6                	mv	s3,s1
}
    e881188c:	70a6                	ld	ra,104(sp)
    e881188e:	7406                	ld	s0,96(sp)
    e8811890:	854e                	mv	a0,s3
    e8811892:	64e6                	ld	s1,88(sp)
    e8811894:	6946                	ld	s2,80(sp)
    e8811896:	69a6                	ld	s3,72(sp)
    e8811898:	6a06                	ld	s4,64(sp)
    e881189a:	7ae2                	ld	s5,56(sp)
    e881189c:	7b42                	ld	s6,48(sp)
    e881189e:	7ba2                	ld	s7,40(sp)
    e88118a0:	7c02                	ld	s8,32(sp)
    e88118a2:	6ce2                	ld	s9,24(sp)
    e88118a4:	6d42                	ld	s10,16(sp)
    e88118a6:	6da2                	ld	s11,8(sp)
    e88118a8:	6165                	addi	sp,sp,112
    e88118aa:	8082                	ret
            *(pt++) = (++ack);
    e88118ac:	2785                	addiw	a5,a5,1
    e88118ae:	0ff7f793          	andi	a5,a5,255
    e88118b2:	3827578b          	shia	a5,(a4),2,0
    e88118b6:	bf85                	j	e8811826 <iAP2PacketGetMissingSeqFromEAK+0x46>
            gap = iAP2PacketCalcSeqGap (ack, *data);
    e88118b8:	00094583          	lbu	a1,0(s2)
    e88118bc:	855e                	mv	a0,s7
    e88118be:	f0dff0ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
            if (gap > 0 && gap <= window)
    e88118c2:	c115                	beqz	a0,e88118e6 <iAP2PacketGetMissingSeqFromEAK+0x106>
    e88118c4:	02ab6163          	bltu	s6,a0,e88118e6 <iAP2PacketGetMissingSeqFromEAK+0x106>
                if (gap > maxGap)
    e88118c8:	87e6                	mv	a5,s9
    e88118ca:	00acf363          	bgeu	s9,a0,e88118d0 <iAP2PacketGetMissingSeqFromEAK+0xf0>
    e88118ce:	87aa                	mv	a5,a0
                if (tmpResult [gap - 1] != -1)
    e88118d0:	0506                	slli	a0,a0,0x1
    e88118d2:	1579                	addi	a0,a0,-2
    e88118d4:	0ff7fc93          	andi	s9,a5,255
    e88118d8:	20ac478b          	lrh	a5,s8,a0,0
    e88118dc:	01a78363          	beq	a5,s10,e88118e2 <iAP2PacketGetMissingSeqFromEAK+0x102>
                    --resultLen;
    e88118e0:	347d                	addiw	s0,s0,-1
                tmpResult [gap - 1] = -1;
    e88118e2:	20ac5d8b          	srh	s11,s8,a0,0
            ++data;
    e88118e6:	0905                	addi	s2,s2,1
    e88118e8:	b785                	j	e8811848 <iAP2PacketGetMissingSeqFromEAK+0x68>
            if (*pt != -1 && gap++ <= maxGap)
    e88118ea:	00071583          	lh	a1,0(a4)
    e88118ee:	8636                	mv	a2,a3
    e88118f0:	00a58a63          	beq	a1,a0,e8811904 <iAP2PacketGetMissingSeqFromEAK+0x124>
    e88118f4:	0016861b          	addiw	a2,a3,1
    e88118f8:	0ff67613          	andi	a2,a2,255
    e88118fc:	00dce463          	bltu	s9,a3,e8811904 <iAP2PacketGetMissingSeqFromEAK+0x124>
                *(data++) = *pt;
    e8811900:	1817d58b          	sbia	a1,(a5),1,0
            ++pt;
    e8811904:	0709                	addi	a4,a4,2
    e8811906:	86b2                	mv	a3,a2
    e8811908:	b7b5                	j	e8811874 <iAP2PacketGetMissingSeqFromEAK+0x94>
    if (missingLen != NULL)
    e881190a:	d249                	beqz	a2,e881188c <iAP2PacketGetMissingSeqFromEAK+0xac>
    uint32_t resultLen = 0;
    e881190c:	4901                	li	s2,0
    e881190e:	bfa5                	j	e8811886 <iAP2PacketGetMissingSeqFromEAK+0xa6>

00000000e8811910 <iAP2PacketIsSeqACKd>:
**          already.
**
****************************************************************
*/
BOOL iAP2PacketIsSeqACKd (uint8_t seq, uint8_t ack, uint8_t window)
{
    e8811910:	1101                	addi	sp,sp,-32
    e8811912:	ec06                	sd	ra,24(sp)
    e8811914:	e432                	sd	a2,8(sp)
    uint8_t gap = iAP2PacketCalcSeqGap (seq, ack);
    e8811916:	eb5ff0ef          	jal	ra,e88117ca <iAP2PacketCalcSeqGap>
    if (gap > window)
    e881191a:	2501                	sext.w	a0,a0
    e881191c:	6622                	ld	a2,8(sp)
    {
        return FALSE;
    }
    return TRUE;
}
    e881191e:	60e2                	ld	ra,24(sp)
    if (gap > window)
    e8811920:	00a63533          	sltu	a0,a2,a0
}
    e8811924:	00154513          	xori	a0,a0,1
    e8811928:	6105                	addi	sp,sp,32
    e881192a:	8082                	ret

00000000e881192c <iAP2PacketRequireACK>:
    /*
    ** Packets that require ACK:
    ** - SYN packet and ACK packets that have data
    */

    if (packet->packetLen > kIAP2PacketHeaderLen &&
    e881192c:	02455703          	lhu	a4,36(a0)
    e8811930:	47a5                	li	a5,9
    e8811932:	00e7fe63          	bgeu	a5,a4,e881194e <iAP2PacketRequireACK+0x22>
        (packet->pckData->ctl & (kIAP2PacketControlMaskACK +
    e8811936:	7d1c                	ld	a5,56(a0)
                                kIAP2PacketControlMaskSYN)) != 0 &&
        (packet->pckData->ctl & kIAP2PacketControlMaskEAK) == 0)
    {
        return TRUE;
    }
    return FALSE;
    e8811938:	4501                	li	a0,0
        (packet->pckData->ctl & (kIAP2PacketControlMaskACK +
    e881193a:	0047c783          	lbu	a5,4(a5)
    if (packet->packetLen > kIAP2PacketHeaderLen &&
    e881193e:	0c07f713          	andi	a4,a5,192
    e8811942:	c719                	beqz	a4,e8811950 <iAP2PacketRequireACK+0x24>
                                kIAP2PacketControlMaskSYN)) != 0 &&
    e8811944:	0207c793          	xori	a5,a5,32
        return TRUE;
    e8811948:	1457b50b          	extu	a0,a5,5,5
    e881194c:	8082                	ret
    return FALSE;
    e881194e:	4501                	li	a0,0
}
    e8811950:	8082                	ret

00000000e8811952 <iAP2PacketDebugPrintPacketNL>:
    e8811952:	8082                	ret

00000000e8811954 <iAP2PacketCheckDetect>:
****************************************************************
*/
BOOL iAP2PacketCheckDetect (iAP2Packet_t* pck)
{
    return (kIAP2PacketDetectLEN  == pck->packetLen &&
            kIAP2PacketDetectCTRL == pck->pckData->ctl &&
    e8811954:	02455703          	lhu	a4,36(a0)
    e8811958:	20000793          	li	a5,512
    e881195c:	02f71063          	bne	a4,a5,e881197c <iAP2PacketCheckDetect+0x28>
    e8811960:	7d1c                	ld	a5,56(a0)
    return (kIAP2PacketDetectLEN  == pck->packetLen &&
    e8811962:	0ee00713          	li	a4,238
            kIAP2PacketDetectCTRL == pck->pckData->ctl &&
    e8811966:	4501                	li	a0,0
    return (kIAP2PacketDetectLEN  == pck->packetLen &&
    e8811968:	0047c683          	lbu	a3,4(a5)
    e881196c:	00e69963          	bne	a3,a4,e881197e <iAP2PacketCheckDetect+0x2a>
            kIAP2PacketDetectCTRL == pck->pckData->ctl &&
    e8811970:	0057c503          	lbu	a0,5(a5)
    e8811974:	1541                	addi	a0,a0,-16
    e8811976:	00153513          	seqz	a0,a0
    e881197a:	8082                	ret
    e881197c:	4501                	li	a0,0
            kIAP2PacketDetectSEQ  == pck->pckData->seq);
}
    e881197e:	8082                	ret

00000000e8811980 <iAP2PacketCheckDetectNACK>:
BOOL iAP2PacketCheckDetectNACK (iAP2Packet_t* pck)
{
    return (kIAP2PacketDetectNACKLEN    == pck->packetLen &&
            kIAP2PacketDetectNACKCTRL   == pck->pckData->ctl &&
            kIAP2PacketDetectNACKSEQ    == pck->pckData->seq &&
            kIAP2PacketDetectNACKACK    == pck->pckData->ack &&
    e8811980:	02455703          	lhu	a4,36(a0)
    e8811984:	40000793          	li	a5,1024
    e8811988:	02f71a63          	bne	a4,a5,e88119bc <iAP2PacketCheckDetectNACK+0x3c>
            kIAP2PacketDetectNACKCTRL   == pck->pckData->ctl &&
    e881198c:	7d1c                	ld	a5,56(a0)
    return (kIAP2PacketDetectNACKLEN    == pck->packetLen &&
    e881198e:	4709                	li	a4,2
            kIAP2PacketDetectNACKACK    == pck->pckData->ack &&
    e8811990:	4501                	li	a0,0
    return (kIAP2PacketDetectNACKLEN    == pck->packetLen &&
    e8811992:	0047c683          	lbu	a3,4(a5)
    e8811996:	02e69463          	bne	a3,a4,e88119be <iAP2PacketCheckDetectNACK+0x3e>
            kIAP2PacketDetectNACKCTRL   == pck->pckData->ctl &&
    e881199a:	0057c683          	lbu	a3,5(a5)
    e881199e:	4711                	li	a4,4
    e88119a0:	00e69f63          	bne	a3,a4,e88119be <iAP2PacketCheckDetectNACK+0x3e>
            kIAP2PacketDetectNACKSEQ    == pck->pckData->seq &&
    e88119a4:	0067c683          	lbu	a3,6(a5)
    e88119a8:	0ee00713          	li	a4,238
    e88119ac:	00e69963          	bne	a3,a4,e88119be <iAP2PacketCheckDetectNACK+0x3e>
            kIAP2PacketDetectNACKACK    == pck->pckData->ack &&
    e88119b0:	0077c503          	lbu	a0,7(a5)
    e88119b4:	1561                	addi	a0,a0,-8
    e88119b6:	00153513          	seqz	a0,a0
    e88119ba:	8082                	ret
    e88119bc:	4501                	li	a0,0
            kIAP2PacketDetectNACKSESSID == pck->pckData->sess);
}
    e88119be:	8082                	ret

00000000e88119c0 <iAP2PacketParseBuffer>:
{
    e88119c0:	7175                	addi	sp,sp,-144
    e88119c2:	fc66                	sd	s9,56(sp)
    e88119c4:	e506                	sd	ra,136(sp)
    e88119c6:	e122                	sd	s0,128(sp)
    e88119c8:	fca6                	sd	s1,120(sp)
    e88119ca:	f8ca                	sd	s2,112(sp)
    e88119cc:	f4ce                	sd	s3,104(sp)
    e88119ce:	f0d2                	sd	s4,96(sp)
    e88119d0:	ecd6                	sd	s5,88(sp)
    e88119d2:	e8da                	sd	s6,80(sp)
    e88119d4:	e4de                	sd	s7,72(sp)
    e88119d6:	e0e2                	sd	s8,64(sp)
    e88119d8:	f86a                	sd	s10,48(sp)
    e88119da:	f46e                	sd	s11,40(sp)
    e88119dc:	e036                	sd	a3,0(sp)
    *bDetect = FALSE;
    e88119de:	00072023          	sw	zero,0(a4)
    uint32_t totParsedLen = 0;
    e88119e2:	4c81                	li	s9,0
    if (buffer != NULL &&  packet != NULL)
    e88119e4:	cd0d                	beqz	a0,e8811a1e <iAP2PacketParseBuffer+0x5e>
    e88119e6:	8d32                	mv	s10,a2
    uint32_t totParsedLen = 0;
    e88119e8:	4c81                	li	s9,0
    if (buffer != NULL &&  packet != NULL)
    e88119ea:	ca15                	beqz	a2,e8811a1e <iAP2PacketParseBuffer+0x5e>
    e88119ec:	843e                	mv	s0,a5
        const uint8_t* ptEnd = pt + ptLen;
    e88119ee:	7c05b78b          	extu	a5,a1,31,0
    e88119f2:	97aa                	add	a5,a5,a0
    e88119f4:	8daa                	mv	s11,a0
    e88119f6:	8a2e                	mv	s4,a1
    e88119f8:	89ba                	mv	s3,a4
    e88119fa:	84c2                	mv	s1,a6
    e88119fc:	e43e                	sd	a5,8(sp)
            switch (packet->state)
    e88119fe:	4aa5                	li	s5,9
                    if (kIAP2PacketSYNC == *pt)
    e8811a00:	0ff00b13          	li	s6,255
            switch (packet->state)
    e8811a04:	00090b97          	auipc	s7,0x90
    e8811a08:	a04b8b93          	addi	s7,s7,-1532 # e88a1408 <iAP2LinkAccessorySuspendStateEvents+0x200>
                            packet->state = kiAP2PacketParseStateFINISH;
    e8811a0c:	4c2d                	li	s8,11
        while (pt < ptEnd && packet->state < kiAP2PacketParseStateFINISH)
    e8811a0e:	67a2                	ld	a5,8(sp)
    e8811a10:	00fdf763          	bgeu	s11,a5,e8811a1e <iAP2PacketParseBuffer+0x5e>
    e8811a14:	02cd4703          	lbu	a4,44(s10)
    e8811a18:	47a9                	li	a5,10
    e8811a1a:	02e7f263          	bgeu	a5,a4,e8811a3e <iAP2PacketParseBuffer+0x7e>
}
    e8811a1e:	60aa                	ld	ra,136(sp)
    e8811a20:	640a                	ld	s0,128(sp)
    e8811a22:	8566                	mv	a0,s9
    e8811a24:	74e6                	ld	s1,120(sp)
    e8811a26:	7946                	ld	s2,112(sp)
    e8811a28:	79a6                	ld	s3,104(sp)
    e8811a2a:	7a06                	ld	s4,96(sp)
    e8811a2c:	6ae6                	ld	s5,88(sp)
    e8811a2e:	6b46                	ld	s6,80(sp)
    e8811a30:	6ba6                	ld	s7,72(sp)
    e8811a32:	6c06                	ld	s8,64(sp)
    e8811a34:	7ce2                	ld	s9,56(sp)
    e8811a36:	7d42                	ld	s10,48(sp)
    e8811a38:	7da2                	ld	s11,40(sp)
    e8811a3a:	6149                	addi	sp,sp,144
    e8811a3c:	8082                	ret
            switch (packet->state)
    e8811a3e:	377d                	addiw	a4,a4,-1
    e8811a40:	0ff77713          	andi	a4,a4,255
    e8811a44:	00eae663          	bltu	s5,a4,e8811a50 <iAP2PacketParseBuffer+0x90>
    e8811a48:	44ebc70b          	lrw	a4,s7,a4,2
    e8811a4c:	975e                	add	a4,a4,s7
    e8811a4e:	8702                	jr	a4
                    packet->dataChecksum = 0;
    e8811a50:	020d0323          	sb	zero,38(s10)
                    packet->packetLen = 0;
    e8811a54:	020d1223          	sh	zero,36(s10)
                    packet->dataCurLen = 0;
    e8811a58:	000d3c23          	sd	zero,24(s10)
                    if (kIAP2PacketSYNC == *pt)
    e8811a5c:	000dc703          	lbu	a4,0(s11)
    e8811a60:	05671d63          	bne	a4,s6,e8811aba <iAP2PacketParseBuffer+0xfa>
                        packet->state = kiAP2PacketParseStateSOP2;
    e8811a64:	4785                	li	a5,1
    e8811a66:	02fd0623          	sb	a5,44(s10)
                        packet->pckData->sop1 = *pt;
    e8811a6a:	038d3703          	ld	a4,56(s10)
    e8811a6e:	000dc683          	lbu	a3,0(s11)
    e8811a72:	00d70023          	sb	a3,0(a4)
                        packet->bufferLen += 1;
    e8811a76:	01cd2703          	lw	a4,28(s10)
    e8811a7a:	2705                	addiw	a4,a4,1
    e8811a7c:	00ed2e23          	sw	a4,28(s10)
    e8811a80:	a82d                	j	e8811aba <iAP2PacketParseBuffer+0xfa>
                    if (kIAP2PacketSOP == *pt)
    e8811a82:	000dc703          	lbu	a4,0(s11)
    e8811a86:	05a00693          	li	a3,90
    e8811a8a:	02d71063          	bne	a4,a3,e8811aaa <iAP2PacketParseBuffer+0xea>
                        if (sopDetect)
    e8811a8e:	c481                	beqz	s1,e8811a96 <iAP2PacketParseBuffer+0xd6>
                            ++(*sopDetect);
    e8811a90:	4098                	lw	a4,0(s1)
    e8811a92:	2705                	addiw	a4,a4,1
    e8811a94:	c098                	sw	a4,0(s1)
                        packet->state = kiAP2PacketParseStateLEN1;
    e8811a96:	4709                	li	a4,2
    e8811a98:	02ed0623          	sb	a4,44(s10)
                        packet->pckData->sop2 = *pt;
    e8811a9c:	038d3703          	ld	a4,56(s10)
    e8811aa0:	000dc683          	lbu	a3,0(s11)
    e8811aa4:	00d700a3          	sb	a3,1(a4)
                        packet->bufferLen += 1;
    e8811aa8:	b7f9                	j	e8811a76 <iAP2PacketParseBuffer+0xb6>
                    else if (kIAP2PacketSOPOrig == *pt)
    e8811aaa:	05500693          	li	a3,85
    e8811aae:	fed700e3          	beq	a4,a3,e8811a8e <iAP2PacketParseBuffer+0xce>
                    else if (kIAP2PacketSYNC != *pt)
    e8811ab2:	01670463          	beq	a4,s6,e8811aba <iAP2PacketParseBuffer+0xfa>
                        packet->state = kiAP2PacketParseStateSOP1;
    e8811ab6:	020d0623          	sb	zero,44(s10)
                        totParsedLen += 1;
    e8811aba:	2c85                	addiw	s9,s9,1
                        pt += 1;
    e8811abc:	0d85                	addi	s11,s11,1
                        ptLen -= 1;
    e8811abe:	a035                	j	e8811aea <iAP2PacketParseBuffer+0x12a>
                    packet->pckData->len1 = *pt;
    e8811ac0:	000dc683          	lbu	a3,0(s11)
    e8811ac4:	038d3703          	ld	a4,56(s10)
    e8811ac8:	00d70123          	sb	a3,2(a4)
                    packet->packetLen = (((uint16_t) *pt) << 8);
    e8811acc:	981dc70b          	lbuia	a4,(s11),1,0
    e8811ad0:	0087171b          	slliw	a4,a4,0x8
    e8811ad4:	02ed1223          	sh	a4,36(s10)
                    packet->state = kiAP2PacketParseStateLEN2;
    e8811ad8:	470d                	li	a4,3
    e8811ada:	02ed0623          	sb	a4,44(s10)
                    packet->bufferLen += 1;
    e8811ade:	01cd2703          	lw	a4,28(s10)
                    totParsedLen += 1;
    e8811ae2:	2c85                	addiw	s9,s9,1
                    packet->bufferLen += 1;
    e8811ae4:	2705                	addiw	a4,a4,1
    e8811ae6:	00ed2e23          	sw	a4,28(s10)
                    ptLen -= 1;
    e8811aea:	3a7d                	addiw	s4,s4,-1
                    break;
    e8811aec:	b70d                	j	e8811a0e <iAP2PacketParseBuffer+0x4e>
                    packet->pckData->len2 = *pt;
    e8811aee:	000dc683          	lbu	a3,0(s11)
    e8811af2:	038d3703          	ld	a4,56(s10)
                    if (((maxPacketSize == 0 ||
    e8811af6:	6782                	ld	a5,0(sp)
                    packet->pckData->len2 = *pt;
    e8811af8:	00d701a3          	sb	a3,3(a4)
                    packet->packetLen += *pt;
    e8811afc:	000dc683          	lbu	a3,0(s11)
    e8811b00:	024d5703          	lhu	a4,36(s10)
    e8811b04:	9f35                	addw	a4,a4,a3
    e8811b06:	3c07370b          	extu	a4,a4,15,0
    e8811b0a:	02ed1223          	sh	a4,36(s10)
                    if (((maxPacketSize == 0 ||
    e8811b0e:	2701                	sext.w	a4,a4
    e8811b10:	c399                	beqz	a5,e8811b16 <iAP2PacketParseBuffer+0x156>
    e8811b12:	00e7e963          	bltu	a5,a4,e8811b24 <iAP2PacketParseBuffer+0x164>
                          packet->packetLen <= maxPacketSize) &&
    e8811b16:	46a1                	li	a3,8
    e8811b18:	00e6ee63          	bltu	a3,a4,e8811b34 <iAP2PacketParseBuffer+0x174>
                            iAP2PacketResetPacket (packet);
    e8811b1c:	856a                	mv	a0,s10
    e8811b1e:	fcaff0ef          	jal	ra,e88112e8 <iAP2PacketResetPacket>
    e8811b22:	b5f5                	j	e8811a0e <iAP2PacketParseBuffer+0x4e>
                         packet->packetLen >= kIAP2PacketHeaderLen) ||
    e8811b24:	20000693          	li	a3,512
    e8811b28:	00d70663          	beq	a4,a3,e8811b34 <iAP2PacketParseBuffer+0x174>
                        kIAP2PacketDetectLEN == packet->packetLen ||
    e8811b2c:	40000693          	li	a3,1024
    e8811b30:	fed716e3          	bne	a4,a3,e8811b1c <iAP2PacketParseBuffer+0x15c>
                        packet->state = kiAP2PacketParseStateCTRL;
    e8811b34:	4711                	li	a4,4
    e8811b36:	02ed0623          	sb	a4,44(s10)
    e8811b3a:	bf35                	j	e8811a76 <iAP2PacketParseBuffer+0xb6>
                    packet->pckData->ctl = *pt;
    e8811b3c:	038d3703          	ld	a4,56(s10)
    e8811b40:	981dc68b          	lbuia	a3,(s11),1,0
    e8811b44:	00d70223          	sb	a3,4(a4)
                    packet->state = kiAP2PacketParseStateSEQ;
    e8811b48:	4715                	li	a4,5
    e8811b4a:	bf41                	j	e8811ada <iAP2PacketParseBuffer+0x11a>
                    packet->pckData->seq = *pt;
    e8811b4c:	981dc68b          	lbuia	a3,(s11),1,0
    e8811b50:	038d3703          	ld	a4,56(s10)
                    if (iAP2PacketCheckDetect (packet))
    e8811b54:	856a                	mv	a0,s10
                    totParsedLen += 1;
    e8811b56:	2c85                	addiw	s9,s9,1
                    packet->pckData->seq = *pt;
    e8811b58:	00d702a3          	sb	a3,5(a4)
                    packet->bufferLen += 1;
    e8811b5c:	01cd2703          	lw	a4,28(s10)
                    ptLen -= 1;
    e8811b60:	3a7d                	addiw	s4,s4,-1
                    packet->bufferLen += 1;
    e8811b62:	2705                	addiw	a4,a4,1
    e8811b64:	00ed2e23          	sw	a4,28(s10)
                    if (iAP2PacketCheckDetect (packet))
    e8811b68:	dedff0ef          	jal	ra,e8811954 <iAP2PacketCheckDetect>
                        packet->state = kiAP2PacketParseStateDETECT;
    e8811b6c:	4731                	li	a4,12
                    if (iAP2PacketCheckDetect (packet))
    e8811b6e:	ed35                	bnez	a0,e8811bea <iAP2PacketParseBuffer+0x22a>
                        packet->state = kiAP2PacketParseStateACK;
    e8811b70:	4719                	li	a4,6
    e8811b72:	02ed0623          	sb	a4,44(s10)
    e8811b76:	bd61                	j	e8811a0e <iAP2PacketParseBuffer+0x4e>
                    packet->pckData->ack = *pt;
    e8811b78:	038d3703          	ld	a4,56(s10)
    e8811b7c:	981dc68b          	lbuia	a3,(s11),1,0
    e8811b80:	00d70323          	sb	a3,6(a4)
                    packet->state = kiAP2PacketParseStateSESSID;
    e8811b84:	471d                	li	a4,7
    e8811b86:	bf91                	j	e8811ada <iAP2PacketParseBuffer+0x11a>
                    packet->pckData->sess = *pt;
    e8811b88:	038d3703          	ld	a4,56(s10)
    e8811b8c:	981dc68b          	lbuia	a3,(s11),1,0
    e8811b90:	00d703a3          	sb	a3,7(a4)
                    packet->state = kiAP2PacketParseStateCHK;
    e8811b94:	4721                	li	a4,8
    e8811b96:	b791                	j	e8811ada <iAP2PacketParseBuffer+0x11a>
                    packet->pckData->chk = *pt;
    e8811b98:	981dc68b          	lbuia	a3,(s11),1,0
    e8811b9c:	038d3703          	ld	a4,56(s10)
                    packet->state = kiAP2PacketParseStatePAYLOAD;
    e8811ba0:	47a5                	li	a5,9
                    calcChecksum = iAP2PacketCalcChecksum (iAP2PacketGetBuffer(packet),
    e8811ba2:	45a1                	li	a1,8
                    packet->pckData->chk = *pt;
    e8811ba4:	00d70423          	sb	a3,8(a4)
                    packet->bufferLen += 1;
    e8811ba8:	01cd2703          	lw	a4,28(s10)
                    calcChecksum = iAP2PacketCalcChecksum (iAP2PacketGetBuffer(packet),
    e8811bac:	038d3503          	ld	a0,56(s10)
                    packet->state = kiAP2PacketParseStatePAYLOAD;
    e8811bb0:	02fd0623          	sb	a5,44(s10)
                    packet->bufferLen += 1;
    e8811bb4:	2705                	addiw	a4,a4,1
    e8811bb6:	00ed2e23          	sw	a4,28(s10)
                    calcChecksum = iAP2PacketCalcChecksum (iAP2PacketGetBuffer(packet),
    e8811bba:	bbbff0ef          	jal	ra,e8811774 <iAP2PacketCalcChecksum>
                    totParsedLen += 1;
    e8811bbe:	2c85                	addiw	s9,s9,1
                    if (calcChecksum == packet->pckData->chk)
    e8811bc0:	038d3703          	ld	a4,56(s10)
                    ptLen -= 1;
    e8811bc4:	3a7d                	addiw	s4,s4,-1
                    if (calcChecksum == packet->pckData->chk)
    e8811bc6:	00874703          	lbu	a4,8(a4)
    e8811bca:	00a71b63          	bne	a4,a0,e8811be0 <iAP2PacketParseBuffer+0x220>
                        if (packet->packetLen == kIAP2PacketHeaderLen)
    e8811bce:	024d5703          	lhu	a4,36(s10)
                        packet->dataCurLen = 0;
    e8811bd2:	000d2c23          	sw	zero,24(s10)
                        if (packet->packetLen == kIAP2PacketHeaderLen)
    e8811bd6:	e3571ce3          	bne	a4,s5,e8811a0e <iAP2PacketParseBuffer+0x4e>
                            packet->state = kiAP2PacketParseStateFINISH;
    e8811bda:	038d0623          	sb	s8,44(s10)
    e8811bde:	bd05                	j	e8811a0e <iAP2PacketParseBuffer+0x4e>
                    else if (iAP2PacketCheckDetectNACK (packet))
    e8811be0:	856a                	mv	a0,s10
    e8811be2:	d9fff0ef          	jal	ra,e8811980 <iAP2PacketCheckDetectNACK>
    e8811be6:	c971                	beqz	a0,e8811cba <iAP2PacketParseBuffer+0x2fa>
                        packet->state = kiAP2PacketParseStateDETECTBAD;
    e8811be8:	4735                	li	a4,13
    e8811bea:	02ed0623          	sb	a4,44(s10)
                        *bDetect = TRUE;
    e8811bee:	4705                	li	a4,1
    e8811bf0:	00e9a023          	sw	a4,0(s3)
    e8811bf4:	bd29                	j	e8811a0e <iAP2PacketParseBuffer+0x4e>
                    uint32_t bytesToCopy = iAP2PacketGetPayloadLen (packet) - packet->dataCurLen;
    e8811bf6:	856a                	mv	a0,s10
    e8811bf8:	8adff0ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
    e8811bfc:	018d2703          	lw	a4,24(s10)
    e8811c00:	40e5093b          	subw	s2,a0,a4
    e8811c04:	854a                	mv	a0,s2
                    if (bytesToCopy > 0)
    e8811c06:	04090e63          	beqz	s2,e8811c62 <iAP2PacketParseBuffer+0x2a2>
                        if (ptLen < bytesToCopy)
    e8811c0a:	01493933          	sltu	s2,s2,s4
    e8811c0e:	412a150b          	mveqz	a0,s4,s2
    e8811c12:	7c05368b          	extu	a3,a0,31,0
    return packet->pckData->data;
    e8811c16:	038d3503          	ld	a0,56(s10)
                        memcpy (&(iAP2PacketGetPayload (packet) [packet->dataCurLen]),
    e8811c1a:	7c07370b          	extu	a4,a4,31,0
    e8811c1e:	8636                	mv	a2,a3
    return packet->pckData->data;
    e8811c20:	0525                	addi	a0,a0,9
                        memcpy (&(iAP2PacketGetPayload (packet) [packet->dataCurLen]),
    e8811c22:	85ee                	mv	a1,s11
    e8811c24:	953a                	add	a0,a0,a4
    e8811c26:	8936                	mv	s2,a3
    e8811c28:	ec36                	sd	a3,24(sp)
    e8811c2a:	7766a0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
                        totParsedLen += bytesToCopy;
    e8811c2e:	01990cbb          	addw	s9,s2,s9
                        packet->dataCurLen += bytesToCopy;
    e8811c32:	018d2703          	lw	a4,24(s10)
                        pt += bytesToCopy;
    e8811c36:	66e2                	ld	a3,24(sp)
                    if (packet->dataCurLen == iAP2PacketGetPayloadLen (packet))
    e8811c38:	856a                	mv	a0,s10
                        packet->dataCurLen += bytesToCopy;
    e8811c3a:	0127063b          	addw	a2,a4,s2
                        packet->bufferLen += bytesToCopy;
    e8811c3e:	01cd2703          	lw	a4,28(s10)
                        packet->dataCurLen += bytesToCopy;
    e8811c42:	00cd2c23          	sw	a2,24(s10)
    e8811c46:	e832                	sd	a2,16(sp)
                        packet->bufferLen += bytesToCopy;
    e8811c48:	0127073b          	addw	a4,a4,s2
    e8811c4c:	00ed2e23          	sw	a4,28(s10)
                        pt += bytesToCopy;
    e8811c50:	9db6                	add	s11,s11,a3
                    if (packet->dataCurLen == iAP2PacketGetPayloadLen (packet))
    e8811c52:	853ff0ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
    e8811c56:	2501                	sext.w	a0,a0
    e8811c58:	6642                	ld	a2,16(sp)
                        ptLen -= bytesToCopy;
    e8811c5a:	412a0a3b          	subw	s4,s4,s2
                    if (packet->dataCurLen == iAP2PacketGetPayloadLen (packet))
    e8811c5e:	daa618e3          	bne	a2,a0,e8811a0e <iAP2PacketParseBuffer+0x4e>
                        packet->state = kiAP2PacketParseStatePAYLOADCHK;
    e8811c62:	47a9                	li	a5,10
    e8811c64:	02fd0623          	sb	a5,44(s10)
    e8811c68:	b35d                	j	e8811a0e <iAP2PacketParseBuffer+0x4e>
                    iAP2PacketGetPayload (packet) [packet->dataCurLen] = *pt;
    e8811c6a:	018d6603          	lwu	a2,24(s10)
    e8811c6e:	038d3703          	ld	a4,56(s10)
    e8811c72:	981dc68b          	lbuia	a3,(s11),1,0
                    totParsedLen += 1;
    e8811c76:	2c85                	addiw	s9,s9,1
                    iAP2PacketGetPayload (packet) [packet->dataCurLen] = *pt;
    e8811c78:	9732                	add	a4,a4,a2
    e8811c7a:	00d704a3          	sb	a3,9(a4)
                    packet->bufferLen += 1;
    e8811c7e:	01cd2703          	lw	a4,28(s10)
                    ptLen -= 1;
    e8811c82:	3a7d                	addiw	s4,s4,-1
                    packet->bufferLen += 1;
    e8811c84:	0017069b          	addiw	a3,a4,1
                    if (packet->packetLen == packet->bufferLen)
    e8811c88:	024d5703          	lhu	a4,36(s10)
                    packet->bufferLen += 1;
    e8811c8c:	00dd2e23          	sw	a3,28(s10)
                    if (packet->packetLen == packet->bufferLen)
    e8811c90:	d6d71fe3          	bne	a4,a3,e8811a0e <iAP2PacketParseBuffer+0x4e>
    return packet->pckData->data;
    e8811c94:	038d3903          	ld	s2,56(s10)
                        uint16_t payloadLen = iAP2PacketGetPayloadLen (packet);
    e8811c98:	856a                	mv	a0,s10
    e8811c9a:	80bff0ef          	jal	ra,e88114a4 <iAP2PacketGetPayloadLen>
    return packet->pckData->data;
    e8811c9e:	0925                	addi	s2,s2,9
                        packet->dataChecksum = iAP2PacketCalcChecksum (payload, payloadLen);
    e8811ca0:	0005059b          	sext.w	a1,a0
    e8811ca4:	e82a                	sd	a0,16(sp)
    e8811ca6:	854a                	mv	a0,s2
    e8811ca8:	acdff0ef          	jal	ra,e8811774 <iAP2PacketCalcChecksum>
    e8811cac:	02ad0323          	sb	a0,38(s10)
                        if (packet->dataChecksum == payload [payloadLen])
    e8811cb0:	6742                	ld	a4,16(sp)
    e8811cb2:	80e9470b          	lrbu	a4,s2,a4,0
    e8811cb6:	f2a702e3          	beq	a4,a0,e8811bda <iAP2PacketParseBuffer+0x21a>
                            if (failedChecksums)
    e8811cba:	e60401e3          	beqz	s0,e8811b1c <iAP2PacketParseBuffer+0x15c>
                                ++(*failedChecksums);
    e8811cbe:	4018                	lw	a4,0(s0)
    e8811cc0:	2705                	addiw	a4,a4,1
    e8811cc2:	c018                	sw	a4,0(s0)
    e8811cc4:	bda1                	j	e8811b1c <iAP2PacketParseBuffer+0x15c>

00000000e8811cc6 <iAP2PacketAssignTimer>:
**
****************************************************************
*/
void iAP2PacketAssignTimer (iAP2Packet_t* pck, uint16_t timer)
{
    if (pck != NULL)
    e8811cc6:	cd0d                	beqz	a0,e8811d00 <iAP2PacketAssignTimer+0x3a>
{
    e8811cc8:	1101                	addi	sp,sp,-32
    e8811cca:	e422                	sd	s0,8(sp)
    e8811ccc:	e826                	sd	s1,16(sp)
    e8811cce:	ec06                	sd	ra,24(sp)
    {
        if (pck->timer != INVALID_TIMEOUT_ID && pck->timer != timer)
    e8811cd0:	02954783          	lbu	a5,41(a0)
    e8811cd4:	0ff00713          	li	a4,255
    e8811cd8:	84ae                	mv	s1,a1
    e8811cda:	842a                	mv	s0,a0
    e8811cdc:	00e78b63          	beq	a5,a4,e8811cf2 <iAP2PacketAssignTimer+0x2c>
    e8811ce0:	00b78963          	beq	a5,a1,e8811cf2 <iAP2PacketAssignTimer+0x2c>
        {
            iAP2TimeCancelTimer (iAP2LinkGetMainTimer(pck->link),
    e8811ce4:	6108                	ld	a0,0(a0)
    e8811ce6:	bebfe0ef          	jal	ra,e88108d0 <iAP2LinkGetMainTimer>
    e8811cea:	02944583          	lbu	a1,41(s0)
    e8811cee:	49d000ef          	jal	ra,e881298a <iAP2TimeCancelTimer>
                                 pck->timer);
        }
        pck->timer = timer;
    e8811cf2:	029404a3          	sb	s1,41(s0)
    }
}
    e8811cf6:	60e2                	ld	ra,24(sp)
    e8811cf8:	6422                	ld	s0,8(sp)
    e8811cfa:	64c2                	ld	s1,16(sp)
    e8811cfc:	6105                	addi	sp,sp,32
    e8811cfe:	8082                	ret
    e8811d00:	8082                	ret

00000000e8811d02 <iAP2PacketRemoveTimer>:
**
****************************************************************
*/
void iAP2PacketRemoveTimer (iAP2Packet_t* pck)
{
    if (pck != NULL)
    e8811d02:	c90d                	beqz	a0,e8811d34 <iAP2PacketRemoveTimer+0x32>
{
    e8811d04:	1141                	addi	sp,sp,-16
    e8811d06:	e022                	sd	s0,0(sp)
    e8811d08:	e406                	sd	ra,8(sp)
    {
        if (pck->timer != INVALID_TIMEOUT_ID)
    e8811d0a:	02954703          	lbu	a4,41(a0)
    e8811d0e:	0ff00793          	li	a5,255
    e8811d12:	842a                	mv	s0,a0
    e8811d14:	00f70963          	beq	a4,a5,e8811d26 <iAP2PacketRemoveTimer+0x24>
        {
            iAP2TimeCancelTimer(iAP2LinkGetMainTimer(pck->link),
    e8811d18:	6108                	ld	a0,0(a0)
    e8811d1a:	bb7fe0ef          	jal	ra,e88108d0 <iAP2LinkGetMainTimer>
    e8811d1e:	02944583          	lbu	a1,41(s0)
    e8811d22:	469000ef          	jal	ra,e881298a <iAP2TimeCancelTimer>
                                pck->timer);
        }
        pck->timer = INVALID_TIMEOUT_ID;
    e8811d26:	57fd                	li	a5,-1
    e8811d28:	02f404a3          	sb	a5,41(s0)
    }
}
    e8811d2c:	60a2                	ld	ra,8(sp)
    e8811d2e:	6402                	ld	s0,0(sp)
    e8811d30:	0141                	addi	sp,sp,16
    e8811d32:	8082                	ret
    e8811d34:	8082                	ret

00000000e8811d36 <iAP2BuffPoolGetBuffSize>:
 ****************************************************************
 */
uint32_t iAP2BuffPoolGetBuffSize (uint8_t  buffType,
                                  uint32_t maxBuffSize,
                                  uint16_t maxBuffCount)
{
    e8811d36:	1141                	addi	sp,sp,-16
    e8811d38:	e406                	sd	ra,8(sp)
    e8811d3a:	87aa                	mv	a5,a0
    uint32_t result = sizeof (iAP2BuffPool_t);
    switch (buffType)
    e8811d3c:	4705                	li	a4,1
{
    e8811d3e:	852e                	mv	a0,a1
    e8811d40:	85b2                	mv	a1,a2
    switch (buffType)
    e8811d42:	00e78e63          	beq	a5,a4,e8811d5e <iAP2BuffPoolGetBuffSize+0x28>
    e8811d46:	cb81                	beqz	a5,e8811d56 <iAP2BuffPoolGetBuffSize+0x20>
    e8811d48:	4709                	li	a4,2
    e8811d4a:	00e78d63          	beq	a5,a4,e8811d64 <iAP2BuffPoolGetBuffSize+0x2e>
    uint32_t result = sizeof (iAP2BuffPool_t);
    e8811d4e:	4561                	li	a0,24
            //abort();
        }
            break;
    }
    return result;
}
    e8811d50:	60a2                	ld	ra,8(sp)
    e8811d52:	0141                	addi	sp,sp,16
    e8811d54:	8082                	ret
            result += __iAP2BuffPoolGetBuffSizeBuffList (maxBuffSize, maxBuffCount);
    e8811d56:	78a000ef          	jal	ra,e88124e0 <__iAP2BuffPoolGetBuffSizeBuffList>
            result += __iAP2BuffPoolGetBuffSizeRecvPacketList (maxBuffSize, maxBuffCount);
    e8811d5a:	2561                	addiw	a0,a0,24
            break;
    e8811d5c:	bfd5                	j	e8811d50 <iAP2BuffPoolGetBuffSize+0x1a>
            result += __iAP2BuffPoolGetBuffSizeSendPacketList (maxBuffSize, maxBuffCount);
    e8811d5e:	79a000ef          	jal	ra,e88124f8 <__iAP2BuffPoolGetBuffSizeSendPacketList>
    e8811d62:	bfe5                	j	e8811d5a <iAP2BuffPoolGetBuffSize+0x24>
            result += __iAP2BuffPoolGetBuffSizeRecvPacketList (maxBuffSize, maxBuffCount);
    e8811d64:	7f0000ef          	jal	ra,e8812554 <__iAP2BuffPoolGetBuffSizeRecvPacketList>
    e8811d68:	bfcd                	j	e8811d5a <iAP2BuffPoolGetBuffSize+0x24>

00000000e8811d6a <iAP2BuffPoolInit>:
iAP2BuffPool_t* iAP2BuffPoolInit (uint8_t   buffType,
                                  uintptr_t context,
                                  uint32_t  maxBuffSize,
                                  uint16_t  maxBuffCount,
                                  uint8_t*  buff)
{
    e8811d6a:	1141                	addi	sp,sp,-16
    e8811d6c:	e022                	sd	s0,0(sp)
    e8811d6e:	843a                	mv	s0,a4
    iAP2BuffPool_t* buffPool = (iAP2BuffPool_t*) buff;
    buff += sizeof(iAP2BuffPool_t);

    buffPool->type      = buffType;
    e8811d70:	1ac7550b          	sbia	a0,(a4),12,1
{
    e8811d74:	e406                	sd	ra,8(sp)
    buffPool->context   = context;
    e8811d76:	e40c                	sd	a1,8(s0)
    buffPool->buffSize  = maxBuffSize;
    e8811d78:	c050                	sw	a2,4(s0)
    buffPool->buffCount = maxBuffCount;
    e8811d7a:	00d41123          	sh	a3,2(s0)
    buffPool->data      = 0;
    e8811d7e:	00043823          	sd	zero,16(s0)

    switch (buffType)
    e8811d82:	4785                	li	a5,1
    e8811d84:	00f50f63          	beq	a0,a5,e8811da2 <iAP2BuffPoolInit+0x38>
    e8811d88:	c909                	beqz	a0,e8811d9a <iAP2BuffPoolInit+0x30>
    e8811d8a:	4789                	li	a5,2
    e8811d8c:	00f50f63          	beq	a0,a5,e8811daa <iAP2BuffPoolInit+0x40>
        }
            break;
    }

    return buffPool;
}
    e8811d90:	8522                	mv	a0,s0
    e8811d92:	60a2                	ld	ra,8(sp)
    e8811d94:	6402                	ld	s0,0(sp)
    e8811d96:	0141                	addi	sp,sp,16
    e8811d98:	8082                	ret
            __iAP2BuffPoolInitBuffList (buffPool, context, maxBuffSize, maxBuffCount, buff);
    e8811d9a:	8522                	mv	a0,s0
    e8811d9c:	748000ef          	jal	ra,e88124e4 <__iAP2BuffPoolInitBuffList>
            break;
    e8811da0:	bfc5                	j	e8811d90 <iAP2BuffPoolInit+0x26>
            __iAP2BuffPoolInitSendPacketList (buffPool, context, maxBuffSize, maxBuffCount, buff);
    e8811da2:	8522                	mv	a0,s0
    e8811da4:	758000ef          	jal	ra,e88124fc <__iAP2BuffPoolInitSendPacketList>
            break;
    e8811da8:	b7e5                	j	e8811d90 <iAP2BuffPoolInit+0x26>
            __iAP2BuffPoolInitRecvPacketList (buffPool, context, maxBuffSize, maxBuffCount, buff);
    e8811daa:	8522                	mv	a0,s0
    e8811dac:	7ac000ef          	jal	ra,e8812558 <__iAP2BuffPoolInitRecvPacketList>
            break;
    e8811db0:	b7c5                	j	e8811d90 <iAP2BuffPoolInit+0x26>

00000000e8811db2 <iAP2BuffPoolGet>:
*/
void* iAP2BuffPoolGet (iAP2BuffPool_t*  buffPool,
                       uintptr_t        param)
{
    void* buff = NULL;
    switch (buffPool->type)
    e8811db2:	00054783          	lbu	a5,0(a0)
    e8811db6:	4705                	li	a4,1
    e8811db8:	00e78b63          	beq	a5,a4,e8811dce <iAP2BuffPoolGet+0x1c>
    e8811dbc:	c791                	beqz	a5,e8811dc8 <iAP2BuffPoolGet+0x16>
    e8811dbe:	4709                	li	a4,2
    e8811dc0:	00e78a63          	beq	a5,a4,e8811dd4 <iAP2BuffPoolGet+0x22>
            //abort();
        }
            break;
    }
    return buff;
}
    e8811dc4:	4501                	li	a0,0
    e8811dc6:	8082                	ret
            buff = __iAP2BuffPoolGetBuff (buffPool, (uint32_t)param);
    e8811dc8:	2581                	sext.w	a1,a1
    e8811dca:	7200006f          	j	e88124ea <__iAP2BuffPoolGetBuff>
            buff = __iAP2BuffPoolGetSendPacket (buffPool, (uint32_t)param);
    e8811dce:	2581                	sext.w	a1,a1
    e8811dd0:	7320006f          	j	e8812502 <__iAP2BuffPoolGetSendPacket>
            buff = __iAP2BuffPoolGetRecvPacket (buffPool, (uint32_t)param);
    e8811dd4:	2581                	sext.w	a1,a1
    e8811dd6:	7880006f          	j	e881255e <__iAP2BuffPoolGetRecvPacket>

00000000e8811dda <iAP2BuffPoolReturn>:
****************************************************************
*/
void iAP2BuffPoolReturn (iAP2BuffPool_t*    buffPool,
                         void*              buff)
{
    switch (buffPool->type)
    e8811dda:	00054783          	lbu	a5,0(a0)
    e8811dde:	4705                	li	a4,1
    e8811de0:	00e78963          	beq	a5,a4,e8811df2 <iAP2BuffPoolReturn+0x18>
    e8811de4:	c789                	beqz	a5,e8811dee <iAP2BuffPoolReturn+0x14>
    e8811de6:	4709                	li	a4,2
    e8811de8:	00e78763          	beq	a5,a4,e8811df6 <iAP2BuffPoolReturn+0x1c>
    e8811dec:	8082                	ret
    {
        case kiAP2BuffPoolTypeBuff:
        {
            __iAP2BuffPoolReturnBuff (buffPool, buff);
    e8811dee:	7040006f          	j	e88124f2 <__iAP2BuffPoolReturnBuff>
        }
            break;
        case kiAP2BuffPoolTypeSendPacket:
        {
            __iAP2BuffPoolReturnSendPacket (buffPool, buff);
    e8811df2:	75c0006f          	j	e881254e <__iAP2BuffPoolReturnSendPacket>
        }
            break;
        case kiAP2BuffPoolTypeRecvPacket:
        {
            __iAP2BuffPoolReturnRecvPacket (buffPool, buff);
    e8811df6:	7b40006f          	j	e88125aa <__iAP2BuffPoolReturnRecvPacket>

00000000e8811dfa <iAP2FSMGetActionForEvent>:
**
****************************************************************
*/
iAP2FSMEventAction_t iAP2FSMGetActionForEvent (iAP2FSM_t*     fsm,
                                               unsigned int   event)
{
    e8811dfa:	1101                	addi	sp,sp,-32
    e8811dfc:	e422                	sd	s0,8(sp)
    e8811dfe:	e826                	sd	s1,16(sp)
    e8811e00:	ec06                	sd	ra,24(sp)
    e8811e02:	84aa                	mv	s1,a0
    e8811e04:	842e                	mv	s0,a1
    assert(fsm);
    e8811e06:	e11d                	bnez	a0,e8811e2c <iAP2FSMGetActionForEvent+0x32>
    e8811e08:	02f00593          	li	a1,47
    e8811e0c:	0008e517          	auipc	a0,0x8e
    e8811e10:	39450513          	addi	a0,a0,916 # e88a01a0 <TWO52+0x5a8>
    e8811e14:	5646a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811e18:	00150593          	addi	a1,a0,1
    e8811e1c:	05900613          	li	a2,89
    e8811e20:	0008e517          	auipc	a0,0x8e
    e8811e24:	39050513          	addi	a0,a0,912 # e88a01b0 <TWO52+0x5b8>
    e8811e28:	49e6a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return (fsm->states[fsm->currentState].events)[event].action;
    e8811e2c:	0104e703          	lwu	a4,16(s1)
    e8811e30:	609c                	ld	a5,0(s1)
    e8811e32:	7c04340b          	extu	s0,s0,31,0
    e8811e36:	0412                	slli	s0,s0,0x4
    e8811e38:	66e7c78b          	lrd	a5,a5,a4,3
}
    e8811e3c:	60e2                	ld	ra,24(sp)
    e8811e3e:	64c2                	ld	s1,16(sp)
    e8811e40:	6087c50b          	lrd	a0,a5,s0,0
    e8811e44:	6422                	ld	s0,8(sp)
    e8811e46:	6105                	addi	sp,sp,32
    e8811e48:	8082                	ret

00000000e8811e4a <iAP2FSMGetNextStateForEvent>:
**
****************************************************************
*/
unsigned int iAP2FSMGetNextStateForEvent (iAP2FSM_t*    fsm,
                                          unsigned int  event)
{
    e8811e4a:	1101                	addi	sp,sp,-32
    e8811e4c:	e422                	sd	s0,8(sp)
    e8811e4e:	e826                	sd	s1,16(sp)
    e8811e50:	ec06                	sd	ra,24(sp)
    e8811e52:	84aa                	mv	s1,a0
    e8811e54:	842e                	mv	s0,a1
    assert(fsm);
    e8811e56:	e11d                	bnez	a0,e8811e7c <iAP2FSMGetNextStateForEvent+0x32>
    e8811e58:	02f00593          	li	a1,47
    e8811e5c:	0008e517          	auipc	a0,0x8e
    e8811e60:	34450513          	addi	a0,a0,836 # e88a01a0 <TWO52+0x5a8>
    e8811e64:	5146a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811e68:	00150593          	addi	a1,a0,1
    e8811e6c:	07200613          	li	a2,114
    e8811e70:	0008e517          	auipc	a0,0x8e
    e8811e74:	34050513          	addi	a0,a0,832 # e88a01b0 <TWO52+0x5b8>
    e8811e78:	44e6a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return (fsm->states[fsm->currentState].events)[event].nextState;
    e8811e7c:	0104e703          	lwu	a4,16(s1)
    e8811e80:	609c                	ld	a5,0(s1)
    e8811e82:	7c04340b          	extu	s0,s0,31,0
    e8811e86:	0412                	slli	s0,s0,0x4
    e8811e88:	66e7c78b          	lrd	a5,a5,a4,3
}
    e8811e8c:	60e2                	ld	ra,24(sp)
    e8811e8e:	64c2                	ld	s1,16(sp)
    return (fsm->states[fsm->currentState].events)[event].nextState;
    e8811e90:	943e                	add	s0,s0,a5
}
    e8811e92:	4408                	lw	a0,8(s0)
    e8811e94:	6422                	ld	s0,8(sp)
    e8811e96:	6105                	addi	sp,sp,32
    e8811e98:	8082                	ret

00000000e8811e9a <iAP2FSMGetBuffSize>:
*/
uint32_t iAP2FSMGetBuffSize (void)
{
    uint32_t result = sizeof(iAP2FSM_t);
    return result;
}
    e8811e9a:	03800513          	li	a0,56
    e8811e9e:	8082                	ret

00000000e8811ea0 <iAP2FSMCreate>:
                          void*                         data,
                          const char*                   name,
                          const char**                  stateNames,
                          const char**                  eventNames,
                          uint8_t*                      fsmBuffer)
{
    e8811ea0:	711d                	addi	sp,sp,-96
    e8811ea2:	e8a2                	sd	s0,80(sp)
    e8811ea4:	7406                	ld	s0,96(sp)
    e8811ea6:	e4a6                	sd	s1,72(sp)
    e8811ea8:	e0ca                	sd	s2,64(sp)
    e8811eaa:	fc4e                	sd	s3,56(sp)
    e8811eac:	ec86                	sd	ra,88(sp)
    e8811eae:	89aa                	mv	s3,a0
    e8811eb0:	892e                	mv	s2,a1
    e8811eb2:	84b2                	mv	s1,a2
    iAP2FSM_t* fsm = (iAP2FSM_t*) fsmBuffer;
    assert(fsm);
    e8811eb4:	ec0d                	bnez	s0,e8811eee <iAP2FSMCreate+0x4e>
    e8811eb6:	02f00593          	li	a1,47
    e8811eba:	0008e517          	auipc	a0,0x8e
    e8811ebe:	2e650513          	addi	a0,a0,742 # e88a01a0 <TWO52+0x5a8>
    e8811ec2:	f446                	sd	a7,40(sp)
    e8811ec4:	f042                	sd	a6,32(sp)
    e8811ec6:	ec3e                	sd	a5,24(sp)
    e8811ec8:	e83a                	sd	a4,16(sp)
    e8811eca:	e436                	sd	a3,8(sp)
    e8811ecc:	4ac6a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811ed0:	00150593          	addi	a1,a0,1
    e8811ed4:	0b200613          	li	a2,178
    e8811ed8:	0008e517          	auipc	a0,0x8e
    e8811edc:	2d850513          	addi	a0,a0,728 # e88a01b0 <TWO52+0x5b8>
    e8811ee0:	3e66a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8811ee4:	78a2                	ld	a7,40(sp)
    e8811ee6:	7802                	ld	a6,32(sp)
    e8811ee8:	67e2                	ld	a5,24(sp)
    e8811eea:	6742                	ld	a4,16(sp)
    e8811eec:	66a2                	ld	a3,8(sp)

    fsm->states         = states;
    fsm->eventCount     = eventCount;
    fsm->stateCount     = stateCount;
    fsm->currentState   = initialState;
    fsm->currentEvent   = eventCount;
    e8811eee:	e494590b          	swd	s2,s1,(s0),2,3
    fsm->data           = data;
    fsm->name           = name;
    fsm->stateNames     = stateNames;
    e8811ef2:	fd04578b          	sdd	a5,a6,(s0),2,4
    fsm->states         = states;
    e8811ef6:	e014                	sd	a3,0(s0)
    fsm->eventCount     = eventCount;
    e8811ef8:	c444                	sw	s1,12(s0)
    fsm->stateCount     = stateCount;
    e8811efa:	01342423          	sw	s3,8(s0)
    fsm->data           = data;
    e8811efe:	ec18                	sd	a4,24(s0)
    fsm->eventNames     = eventNames;
    e8811f00:	03143823          	sd	a7,48(s0)

    return fsm;
}
    e8811f04:	8522                	mv	a0,s0
    e8811f06:	60e6                	ld	ra,88(sp)
    e8811f08:	6446                	ld	s0,80(sp)
    e8811f0a:	64a6                	ld	s1,72(sp)
    e8811f0c:	6906                	ld	s2,64(sp)
    e8811f0e:	79e2                	ld	s3,56(sp)
    e8811f10:	6125                	addi	sp,sp,96
    e8811f12:	8082                	ret

00000000e8811f14 <iAP2FSMHandleEvent>:
**      None
**
****************************************************************
*/
void iAP2FSMHandleEvent (iAP2FSM_t* fsm, unsigned int event)
{
    e8811f14:	7159                	addi	sp,sp,-112
    e8811f16:	f0a2                	sd	s0,96(sp)
    e8811f18:	f486                	sd	ra,104(sp)
    e8811f1a:	eca6                	sd	s1,88(sp)
    e8811f1c:	e8ca                	sd	s2,80(sp)
    e8811f1e:	e4ce                	sd	s3,72(sp)
    e8811f20:	e0d2                	sd	s4,64(sp)
    e8811f22:	fc56                	sd	s5,56(sp)
    unsigned int tmpEvent = event;
    e8811f24:	d62e                	sw	a1,44(sp)
{
    e8811f26:	842a                	mv	s0,a0
    e8811f28:	87ae                	mv	a5,a1
    if (fsm != NULL && tmpEvent < fsm->eventCount)
    e8811f2a:	10050a63          	beqz	a0,e881203e <iAP2FSMHandleEvent+0x12a>
    e8811f2e:	4558                	lw	a4,12(a0)
    e8811f30:	0ce5fb63          	bgeu	a1,a4,e8812006 <iAP2FSMHandleEvent+0xf2>
    {
        while (tmpEvent < fsm->eventCount)
        {
            iAP2FSMEventAction_t action = iAP2FSMGetActionForEvent (fsm, tmpEvent);
            assert(fsm->states);
    e8811f34:	0008e497          	auipc	s1,0x8e
    e8811f38:	26c48493          	addi	s1,s1,620 # e88a01a0 <TWO52+0x5a8>
    e8811f3c:	0008e997          	auipc	s3,0x8e
    e8811f40:	27498993          	addi	s3,s3,628 # e88a01b0 <TWO52+0x5b8>
#endif
                assert(fsm->currentState < fsm->stateCount);
            }
            else
            {
                iAP2LogError("%s:%d '%s'(%p): No handler for event(%d:%s) for state(%d:%s)\n",
    e8811f44:	0008fa17          	auipc	s4,0x8f
    e8811f48:	5cca0a13          	addi	s4,s4,1484 # e88a1510 <iAP2LinkAccessorySuspendStateEvents+0x308>
    e8811f4c:	000af917          	auipc	s2,0xaf
    e8811f50:	32490913          	addi	s2,s2,804 # e88c1270 <kHTTPServerClass+0x90>
        while (tmpEvent < fsm->eventCount)
    e8811f54:	445c                	lw	a5,12(s0)
    e8811f56:	55b2                	lw	a1,44(sp)
    e8811f58:	00f5ec63          	bltu	a1,a5,e8811f70 <iAP2FSMHandleEvent+0x5c>
                tmpEvent = fsm->eventCount;
            }
        }

        /* Finished processing events, set current event back to invalid */
        fsm->currentEvent = fsm->eventCount;
    e8811f5c:	c85c                	sw	a5,20(s0)
    {
        iAP2LogError("%s:%d '%s': NULL fsm(%p) pointer or invalid event(%d:%s)!\n",
                     __FILE__, __LINE__, (fsm && fsm->name ? fsm->name : ""), fsm,
                     tmpEvent, (fsm && fsm->eventNames ? fsm->eventNames[tmpEvent] : ""));
    }
}
    e8811f5e:	70a6                	ld	ra,104(sp)
    e8811f60:	7406                	ld	s0,96(sp)
    e8811f62:	64e6                	ld	s1,88(sp)
    e8811f64:	6946                	ld	s2,80(sp)
    e8811f66:	69a6                	ld	s3,72(sp)
    e8811f68:	6a06                	ld	s4,64(sp)
    e8811f6a:	7ae2                	ld	s5,56(sp)
    e8811f6c:	6165                	addi	sp,sp,112
    e8811f6e:	8082                	ret
            iAP2FSMEventAction_t action = iAP2FSMGetActionForEvent (fsm, tmpEvent);
    e8811f70:	8522                	mv	a0,s0
    e8811f72:	e89ff0ef          	jal	ra,e8811dfa <iAP2FSMGetActionForEvent>
    e8811f76:	8aaa                	mv	s5,a0
            assert(fsm->states);
    e8811f78:	601c                	ld	a5,0(s0)
    e8811f7a:	ef89                	bnez	a5,e8811f94 <iAP2FSMHandleEvent+0x80>
    e8811f7c:	02f00593          	li	a1,47
    e8811f80:	8526                	mv	a0,s1
    e8811f82:	3f66a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811f86:	00150593          	addi	a1,a0,1
    e8811f8a:	0f100613          	li	a2,241
    e8811f8e:	854e                	mv	a0,s3
    e8811f90:	3366a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
            if (action != NULL)
    e8811f94:	57b2                	lw	a5,44(sp)
    e8811f96:	020a8e63          	beqz	s5,e8811fd2 <iAP2FSMHandleEvent+0xbe>
                fsm->currentEvent = tmpEvent;
    e8811f9a:	c85c                	sw	a5,20(s0)
    e8811f9c:	ec3e                	sd	a5,24(sp)
                (*action) (fsm, &tmpEvent);
    e8811f9e:	106c                	addi	a1,sp,44
    e8811fa0:	8522                	mv	a0,s0
    e8811fa2:	9a82                	jalr	s5
                fsm->currentState = iAP2FSMGetNextStateForEvent (fsm, origEvent);
    e8811fa4:	67e2                	ld	a5,24(sp)
    e8811fa6:	8522                	mv	a0,s0
    e8811fa8:	85be                	mv	a1,a5
    e8811faa:	ea1ff0ef          	jal	ra,e8811e4a <iAP2FSMGetNextStateForEvent>
    e8811fae:	2501                	sext.w	a0,a0
                assert(fsm->currentState < fsm->stateCount);
    e8811fb0:	441c                	lw	a5,8(s0)
                fsm->currentState = iAP2FSMGetNextStateForEvent (fsm, origEvent);
    e8811fb2:	c808                	sw	a0,16(s0)
                assert(fsm->currentState < fsm->stateCount);
    e8811fb4:	faf560e3          	bltu	a0,a5,e8811f54 <iAP2FSMHandleEvent+0x40>
    e8811fb8:	02f00593          	li	a1,47
    e8811fbc:	8526                	mv	a0,s1
    e8811fbe:	3ba6a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8811fc2:	00150593          	addi	a1,a0,1
    e8811fc6:	10900613          	li	a2,265
    e8811fca:	854e                	mv	a0,s3
    e8811fcc:	2fa6a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8811fd0:	b751                	j	e8811f54 <iAP2FSMHandleEvent+0x40>
                             __FILE__, __LINE__, (fsm->name ? fsm->name : ""), fsm,
    e8811fd2:	7014                	ld	a3,32(s0)
                             tmpEvent, (fsm->eventNames ? fsm->eventNames[tmpEvent] : ""),
    e8811fd4:	7818                	ld	a4,48(s0)
                iAP2LogError("%s:%d '%s'(%p): No handler for event(%d:%s) for state(%d:%s)\n",
    e8811fd6:	884a                	mv	a6,s2
    e8811fd8:	40d9168b          	mveqz	a3,s2,a3
    e8811fdc:	c319                	beqz	a4,e8811fe2 <iAP2FSMHandleEvent+0xce>
    e8811fde:	76f7480b          	lurd	a6,a4,a5,3
                             fsm->currentState, (fsm->stateNames ? fsm->stateNames[fsm->currentState] : ""));
    e8811fe2:	7410                	ld	a2,40(s0)
                iAP2LogError("%s:%d '%s'(%p): No handler for event(%d:%s) for state(%d:%s)\n",
    e8811fe4:	01042883          	lw	a7,16(s0)
    e8811fe8:	874a                	mv	a4,s2
    e8811fea:	c219                	beqz	a2,e8811ff0 <iAP2FSMHandleEvent+0xdc>
    e8811fec:	7716470b          	lurd	a4,a2,a7,3
    e8811ff0:	e03a                	sd	a4,0(sp)
    e8811ff2:	10e00613          	li	a2,270
    e8811ff6:	8722                	mv	a4,s0
    e8811ff8:	85a6                	mv	a1,s1
    e8811ffa:	8552                	mv	a0,s4
    e8811ffc:	6a8000ef          	jal	ra,e88126a4 <iAP2LogError>
                tmpEvent = fsm->eventCount;
    e8812000:	445c                	lw	a5,12(s0)
    e8812002:	d63e                	sw	a5,44(sp)
    e8812004:	bf81                	j	e8811f54 <iAP2FSMHandleEvent+0x40>
                     __FILE__, __LINE__, (fsm && fsm->name ? fsm->name : ""), fsm,
    e8812006:	7114                	ld	a3,32(a0)
    e8812008:	e689                	bnez	a3,e8812012 <iAP2FSMHandleEvent+0xfe>
        iAP2LogError("%s:%d '%s': NULL fsm(%p) pointer or invalid event(%d:%s)!\n",
    e881200a:	000af697          	auipc	a3,0xaf
    e881200e:	26668693          	addi	a3,a3,614 # e88c1270 <kHTTPServerClass+0x90>
                     tmpEvent, (fsm && fsm->eventNames ? fsm->eventNames[tmpEvent] : ""));
    e8812012:	7818                	ld	a4,48(s0)
        iAP2LogError("%s:%d '%s': NULL fsm(%p) pointer or invalid event(%d:%s)!\n",
    e8812014:	000af817          	auipc	a6,0xaf
    e8812018:	25c80813          	addi	a6,a6,604 # e88c1270 <kHTTPServerClass+0x90>
                     tmpEvent, (fsm && fsm->eventNames ? fsm->eventNames[tmpEvent] : ""));
    e881201c:	c319                	beqz	a4,e8812022 <iAP2FSMHandleEvent+0x10e>
        iAP2LogError("%s:%d '%s': NULL fsm(%p) pointer or invalid event(%d:%s)!\n",
    e881201e:	76f7480b          	lurd	a6,a4,a5,3
    e8812022:	8722                	mv	a4,s0
    e8812024:	11b00613          	li	a2,283
    e8812028:	0008e597          	auipc	a1,0x8e
    e881202c:	17858593          	addi	a1,a1,376 # e88a01a0 <TWO52+0x5a8>
    e8812030:	0008f517          	auipc	a0,0x8f
    e8812034:	52050513          	addi	a0,a0,1312 # e88a1550 <iAP2LinkAccessorySuspendStateEvents+0x348>
    e8812038:	66c000ef          	jal	ra,e88126a4 <iAP2LogError>
}
    e881203c:	b70d                	j	e8811f5e <iAP2FSMHandleEvent+0x4a>
        iAP2LogError("%s:%d '%s': NULL fsm(%p) pointer or invalid event(%d:%s)!\n",
    e881203e:	000af697          	auipc	a3,0xaf
    e8812042:	23268693          	addi	a3,a3,562 # e88c1270 <kHTTPServerClass+0x90>
    e8812046:	8836                	mv	a6,a3
    e8812048:	bfe9                	j	e8812022 <iAP2FSMHandleEvent+0x10e>

00000000e881204a <_iAP2ListArrayItemFromIndex>:


static iAP2ListArrayItemHeader_t* _iAP2ListArrayItemFromIndex (iAP2ListArrayHeader_t* listArray,
                                                               uint8_t                index)
{
    if (listArray && index != kiAP2ListArrayInvalidIndex)
    e881204a:	cd09                	beqz	a0,e8812064 <_iAP2ListArrayItemFromIndex+0x1a>
    e881204c:	0ff00793          	li	a5,255
    e8812050:	00f58963          	beq	a1,a5,e8812062 <_iAP2ListArrayItemFromIndex+0x18>
    {
        iAP2ListArrayItemHeader_t* itemList = (iAP2ListArrayItemHeader_t*) (listArray + 1);
        uint8_t* buff = (uint8_t*) itemList;
        iAP2ListArrayItemHeader_t* item;
        item = (iAP2ListArrayItemHeader_t*) (buff + (index * (sizeof(iAP2ListArrayItemHeader_t)
                                                              + listArray->dataSize)));
    e8812054:	00554783          	lbu	a5,5(a0)
    e8812058:	0791                	addi	a5,a5,4
        item = (iAP2ListArrayItemHeader_t*) (buff + (index * (sizeof(iAP2ListArrayItemHeader_t)
    e881205a:	20b7950b          	mula	a0,a5,a1
    e881205e:	0521                	addi	a0,a0,8
        return item;
    e8812060:	8082                	ret
    }
    return NULL;
    e8812062:	4501                	li	a0,0
}
    e8812064:	8082                	ret

00000000e8812066 <iAP2ListArrayGetBuffSize>:
**
****************************************************************
*/
uint32_t iAP2ListArrayGetBuffSize (uint8_t maxCount, uint8_t dataSize)
{
    uint8_t itemSize = dataSize + sizeof(iAP2ListArrayItemHeader_t);
    e8812066:	2591                	addiw	a1,a1,4
    uint32_t result = sizeof(iAP2ListArrayHeader_t) + (maxCount * itemSize);
    e8812068:	0ff5f593          	andi	a1,a1,255
    e881206c:	02a5853b          	mulw	a0,a1,a0
    //assert(sizeof(iAP2ListArrayItemHeader_t) == 2);
    assert(sizeof(iAP2ListArrayHeader_t) == 8);
    return result;
}
    e8812070:	0521                	addi	a0,a0,8
    e8812072:	8082                	ret

00000000e8812074 <iAP2ListArrayInit>:
**
****************************************************************
*/
int iAP2ListArrayInit (uint8_t* buff, uint8_t maxCount, uint8_t dataSize)
{
    if (maxCount > 0 && maxCount <= kiAP2ListArrayInvalidIndex &&
    e8812074:	c1d9                	beqz	a1,e88120fa <iAP2ListArrayInit+0x86>
{
    e8812076:	1101                	addi	sp,sp,-32
    e8812078:	f891540b          	sdd	s0,s1,(sp),0,4
    e881207c:	ec06                	sd	ra,24(sp)
    e881207e:	e84a                	sd	s2,16(sp)
    if (maxCount > 0 && maxCount <= kiAP2ListArrayInvalidIndex &&
    e8812080:	0fd00793          	li	a5,253
    e8812084:	842a                	mv	s0,a0
        item = _iAP2ListArrayItemFromIndex (header, header->maxCount - 1);
        item->next = kiAP2ListArrayInvalidIndex;

        return 0;
    }
    return -1;
    e8812086:	557d                	li	a0,-1
    if (maxCount > 0 && maxCount <= kiAP2ListArrayInvalidIndex &&
    e8812088:	06c7e363          	bltu	a5,a2,e88120ee <iAP2ListArrayInit+0x7a>
        header->root        = kiAP2ListArrayInvalidIndex;
    e881208c:	57fd                	li	a5,-1
    e881208e:	892e                	mv	s2,a1
        header->count       = 0;
    e8812090:	00040023          	sb	zero,0(s0)
        header->maxCount    = maxCount;
    e8812094:	00b400a3          	sb	a1,1(s0)
        header->root        = kiAP2ListArrayInvalidIndex;
    e8812098:	00f41123          	sh	a5,2(s0)
        header->free        = 0;
    e881209c:	00040223          	sb	zero,4(s0)
        header->dataSize    = dataSize;
    e88120a0:	00c402a3          	sb	a2,5(s0)
        header->reserved1   = 0;
    e88120a4:	00041323          	sh	zero,6(s0)
        for (index = 0; index < maxCount; ++index)
    e88120a8:	4481                	li	s1,0
            item = _iAP2ListArrayItemFromIndex (header, index);
    e88120aa:	85a6                	mv	a1,s1
    e88120ac:	8522                	mv	a0,s0
    e88120ae:	f9dff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
            item->next = index + 1;
    e88120b2:	0014879b          	addiw	a5,s1,1
    e88120b6:	0ff7f793          	andi	a5,a5,255
            item->prev = index - 1;
    e88120ba:	34fd                	addiw	s1,s1,-1
    e88120bc:	009500a3          	sb	s1,1(a0)
            item->next = index + 1;
    e88120c0:	00f50023          	sb	a5,0(a0)
        for (index = 0; index < maxCount; ++index)
    e88120c4:	84be                	mv	s1,a5
    e88120c6:	fef912e3          	bne	s2,a5,e88120aa <iAP2ListArrayInit+0x36>
        item = _iAP2ListArrayItemFromIndex (header, 0);
    e88120ca:	4581                	li	a1,0
    e88120cc:	8522                	mv	a0,s0
    e88120ce:	f7dff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
        item->prev = kiAP2ListArrayInvalidIndex;
    e88120d2:	54fd                	li	s1,-1
    e88120d4:	009500a3          	sb	s1,1(a0)
        item = _iAP2ListArrayItemFromIndex (header, header->maxCount - 1);
    e88120d8:	00144583          	lbu	a1,1(s0)
    e88120dc:	8522                	mv	a0,s0
    e88120de:	35fd                	addiw	a1,a1,-1
    e88120e0:	0ff5f593          	andi	a1,a1,255
    e88120e4:	f67ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
        item->next = kiAP2ListArrayInvalidIndex;
    e88120e8:	00950023          	sb	s1,0(a0)
    e88120ec:	4501                	li	a0,0
}
    e88120ee:	60e2                	ld	ra,24(sp)
    e88120f0:	f891440b          	ldd	s0,s1,(sp),0,4
    e88120f4:	6942                	ld	s2,16(sp)
    e88120f6:	6105                	addi	sp,sp,32
    e88120f8:	8082                	ret
    return -1;
    e88120fa:	557d                	li	a0,-1
}
    e88120fc:	8082                	ret

00000000e88120fe <iAP2ListArrayForEach>:
****************************************************************
*/
void iAP2ListArrayForEach (uint8_t*           listArrayBuffer,
                           piAP2ListArrayFunc func)
{
    if (listArrayBuffer && func)
    e88120fe:	c929                	beqz	a0,e8812150 <iAP2ListArrayForEach+0x52>
    e8812100:	c9a1                	beqz	a1,e8812150 <iAP2ListArrayForEach+0x52>
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        uint8_t index = header->root;
        uint8_t count = header->count;
        if (count && index != kiAP2ListArrayInvalidIndex)
    e8812102:	00054783          	lbu	a5,0(a0)
    e8812106:	c7a9                	beqz	a5,e8812150 <iAP2ListArrayForEach+0x52>
        uint8_t index = header->root;
    e8812108:	00254783          	lbu	a5,2(a0)
        if (count && index != kiAP2ListArrayInvalidIndex)
    e881210c:	0ff00713          	li	a4,255
    e8812110:	04e78063          	beq	a5,a4,e8812150 <iAP2ListArrayForEach+0x52>
{
    e8812114:	7179                	addi	sp,sp,-48
    e8812116:	e422                	sd	s0,8(sp)
    e8812118:	e826                	sd	s1,16(sp)
    e881211a:	f04e                	sd	s3,32(sp)
    e881211c:	f406                	sd	ra,40(sp)
    e881211e:	ec4a                	sd	s2,24(sp)
    e8812120:	84ae                	mv	s1,a1
    e8812122:	842a                	mv	s0,a0
        {
            iAP2ListArrayItemHeader_t* item;
            uint8_t*                   data;

            while (index != kiAP2ListArrayInvalidIndex)
    e8812124:	0ff00993          	li	s3,255
            {
                item = _iAP2ListArrayItemFromIndex (header, index);
    e8812128:	85be                	mv	a1,a5
    e881212a:	8522                	mv	a0,s0
    e881212c:	f1fff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
    e8812130:	892a                	mv	s2,a0
    if (item)
    e8812132:	c901                	beqz	a0,e8812142 <iAP2ListArrayForEach+0x44>
        data = (uint8_t*) (item + 1);
    e8812134:	0511                	addi	a0,a0,4
                data = _iAP2ListArrayDataFromItem (item);
                if (item && data)
    e8812136:	c511                	beqz	a0,e8812142 <iAP2ListArrayForEach+0x44>
                {
                    func (data);
    e8812138:	9482                	jalr	s1
                    index = item->next;
    e881213a:	00094783          	lbu	a5,0(s2)
            while (index != kiAP2ListArrayInvalidIndex)
    e881213e:	ff3795e3          	bne	a5,s3,e8812128 <iAP2ListArrayForEach+0x2a>
                    index = kiAP2ListArrayInvalidIndex;
                }
            }
        }
    }
}
    e8812142:	70a2                	ld	ra,40(sp)
    e8812144:	6422                	ld	s0,8(sp)
    e8812146:	64c2                	ld	s1,16(sp)
    e8812148:	6962                	ld	s2,24(sp)
    e881214a:	7982                	ld	s3,32(sp)
    e881214c:	6145                	addi	sp,sp,48
    e881214e:	8082                	ret
    e8812150:	8082                	ret

00000000e8812152 <iAP2ListArrayCleanup>:
    if (listArrayBuffer && itemCleanupFunc)
    e8812152:	c51d                	beqz	a0,e8812180 <iAP2ListArrayCleanup+0x2e>
    e8812154:	c595                	beqz	a1,e8812180 <iAP2ListArrayCleanup+0x2e>
{
    e8812156:	7179                	addi	sp,sp,-48
    e8812158:	ec22                	sd	s0,24(sp)
    e881215a:	f406                	sd	ra,40(sp)
    e881215c:	f026                	sd	s1,32(sp)
        uint8_t dataSize = header->dataSize;
    e881215e:	00554603          	lbu	a2,5(a0)
        uint8_t maxCount = header->maxCount;
    e8812162:	00154483          	lbu	s1,1(a0)
    e8812166:	842a                	mv	s0,a0
        uint8_t dataSize = header->dataSize;
    e8812168:	e432                	sd	a2,8(sp)
            iAP2ListArrayForEach (listArrayBuffer, itemCleanupFunc);
    e881216a:	f95ff0ef          	jal	ra,e88120fe <iAP2ListArrayForEach>
        iAP2ListArrayInit (listArrayBuffer, maxCount, dataSize);
    e881216e:	8522                	mv	a0,s0
}
    e8812170:	6462                	ld	s0,24(sp)
        iAP2ListArrayInit (listArrayBuffer, maxCount, dataSize);
    e8812172:	6622                	ld	a2,8(sp)
}
    e8812174:	70a2                	ld	ra,40(sp)
        iAP2ListArrayInit (listArrayBuffer, maxCount, dataSize);
    e8812176:	85a6                	mv	a1,s1
}
    e8812178:	7482                	ld	s1,32(sp)
    e881217a:	6145                	addi	sp,sp,48
        iAP2ListArrayInit (listArrayBuffer, maxCount, dataSize);
    e881217c:	ef9ff06f          	j	e8812074 <iAP2ListArrayInit>
    e8812180:	8082                	ret

00000000e8812182 <iAP2ListArrayFindItem>:
****************************************************************
*/
uint8_t iAP2ListArrayFindItem (uint8_t*                  listArrayBuffer,
                               void*                     item,
                               piAP2ListArrayCompareFunc func)
{
    e8812182:	7139                	addi	sp,sp,-64
    e8812184:	fc06                	sd	ra,56(sp)
    e8812186:	f85a                	sd	s6,48(sp)
    e8812188:	f891540b          	sdd	s0,s1,(sp),0,4
    e881218c:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8812190:	fd515a0b          	sdd	s4,s5,(sp),2,4
    if (listArrayBuffer && func && item)
    e8812194:	c139                	beqz	a0,e88121da <iAP2ListArrayFindItem+0x58>
    e8812196:	c231                	beqz	a2,e88121da <iAP2ListArrayFindItem+0x58>
    e8812198:	c1a9                	beqz	a1,e88121da <iAP2ListArrayFindItem+0x58>
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        uint8_t index = header->root;
        uint8_t count = header->count;

        if (count && index != kiAP2ListArrayInvalidIndex)
    e881219a:	00054783          	lbu	a5,0(a0)
    e881219e:	cf95                	beqz	a5,e88121da <iAP2ListArrayFindItem+0x58>
        uint8_t index = header->root;
    e88121a0:	00254483          	lbu	s1,2(a0)
        if (count && index != kiAP2ListArrayInvalidIndex)
    e88121a4:	0ff00793          	li	a5,255
    e88121a8:	02f48963          	beq	s1,a5,e88121da <iAP2ListArrayFindItem+0x58>
        {
            uint8_t dataSize = header->dataSize;
    e88121ac:	00554b03          	lbu	s6,5(a0)
    e88121b0:	89b2                	mv	s3,a2
    e88121b2:	892e                	mv	s2,a1
    e88121b4:	842a                	mv	s0,a0

            while (index != kiAP2ListArrayInvalidIndex)
    e88121b6:	0ff00a93          	li	s5,255
            {
                iAP2ListArrayItemHeader_t* pItem = _iAP2ListArrayItemFromIndex(header, index);
    e88121ba:	85a6                	mv	a1,s1
    e88121bc:	8522                	mv	a0,s0
    e88121be:	e8dff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
    e88121c2:	8a2a                	mv	s4,a0
    if (item)
    e88121c4:	c919                	beqz	a0,e88121da <iAP2ListArrayFindItem+0x58>
        data = (uint8_t*) (item + 1);
    e88121c6:	0511                	addi	a0,a0,4
                uint8_t* data = _iAP2ListArrayDataFromItem (pItem);
                if (pItem && data)
    e88121c8:	c909                	beqz	a0,e88121da <iAP2ListArrayFindItem+0x58>
                {
                    if (func (data, item, dataSize) == 0)
    e88121ca:	865a                	mv	a2,s6
    e88121cc:	85ca                	mv	a1,s2
    e88121ce:	9982                	jalr	s3
    e88121d0:	c519                	beqz	a0,e88121de <iAP2ListArrayFindItem+0x5c>
                    {
                        return index;
                    }
                    index = pItem->next;
    e88121d2:	000a4483          	lbu	s1,0(s4)
            while (index != kiAP2ListArrayInvalidIndex)
    e88121d6:	ff5492e3          	bne	s1,s5,e88121ba <iAP2ListArrayFindItem+0x38>
                }
            }
        }
    }

    return kiAP2ListArrayInvalidIndex;
    e88121da:	0ff00493          	li	s1,255
}
    e88121de:	8526                	mv	a0,s1
    e88121e0:	70e2                	ld	ra,56(sp)
    e88121e2:	f891440b          	ldd	s0,s1,(sp),0,4
    e88121e6:	7b42                	ld	s6,48(sp)
    e88121e8:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88121ec:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88121f0:	6121                	addi	sp,sp,64
    e88121f2:	8082                	ret

00000000e88121f4 <iAP2ListArrayItemForIndex>:
**      void*   pointer to item data, NULL if not found.
**
****************************************************************
*/
void* iAP2ListArrayItemForIndex (uint8_t* listArrayBuffer, uint8_t index)
{
    e88121f4:	87aa                	mv	a5,a0
    if (listArrayBuffer && index != kiAP2ListArrayInvalidIndex)
    e88121f6:	c51d                	beqz	a0,e8812224 <iAP2ListArrayItemForIndex+0x30>
    e88121f8:	0ff00693          	li	a3,255
    e88121fc:	02d58363          	beq	a1,a3,e8812222 <iAP2ListArrayItemForIndex+0x2e>
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        if (index < header->maxCount)
    e8812200:	00154683          	lbu	a3,1(a0)
            iAP2ListArrayItemHeader_t* item = _iAP2ListArrayItemFromIndex (header, index);
            return _iAP2ListArrayDataFromItem (item);
        }
    }

    return NULL;
    e8812204:	4781                	li	a5,0
        if (index < header->maxCount)
    e8812206:	00d5ff63          	bgeu	a1,a3,e8812224 <iAP2ListArrayItemForIndex+0x30>
{
    e881220a:	1141                	addi	sp,sp,-16
    e881220c:	e406                	sd	ra,8(sp)
            iAP2ListArrayItemHeader_t* item = _iAP2ListArrayItemFromIndex (header, index);
    e881220e:	e3dff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
    e8812212:	87aa                	mv	a5,a0
    if (item)
    e8812214:	c119                	beqz	a0,e881221a <iAP2ListArrayItemForIndex+0x26>
        data = (uint8_t*) (item + 1);
    e8812216:	00450793          	addi	a5,a0,4
}
    e881221a:	60a2                	ld	ra,8(sp)
    e881221c:	853e                	mv	a0,a5
    e881221e:	0141                	addi	sp,sp,16
    e8812220:	8082                	ret
    return NULL;
    e8812222:	4781                	li	a5,0
}
    e8812224:	853e                	mv	a0,a5
    e8812226:	8082                	ret

00000000e8812228 <iAP2ListArrayGetCount>:
**
****************************************************************
*/
uint8_t iAP2ListArrayGetCount (uint8_t* listArrayBuffer)
{
    if (listArrayBuffer)
    e8812228:	c501                	beqz	a0,e8812230 <iAP2ListArrayGetCount+0x8>
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        return header->count;
    e881222a:	00054503          	lbu	a0,0(a0)
    e881222e:	8082                	ret
    }
    return 0;
    e8812230:	4501                	li	a0,0
}
    e8812232:	8082                	ret

00000000e8812234 <iAP2ListArrayGetFirstItemIndex>:
**
****************************************************************
*/
uint8_t iAP2ListArrayGetFirstItemIndex (uint8_t* listArrayBuffer)
{
    if (listArrayBuffer)
    e8812234:	c501                	beqz	a0,e881223c <iAP2ListArrayGetFirstItemIndex+0x8>
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        return header->root;
    e8812236:	00254503          	lbu	a0,2(a0)
    e881223a:	8082                	ret
    }
    return kiAP2ListArrayInvalidIndex;
    e881223c:	0ff00513          	li	a0,255
}
    e8812240:	8082                	ret

00000000e8812242 <iAP2ListArrayGetLastItemIndex>:
**
****************************************************************
*/
uint8_t iAP2ListArrayGetLastItemIndex (uint8_t* listArrayBuffer)
{
    if (listArrayBuffer)
    e8812242:	c501                	beqz	a0,e881224a <iAP2ListArrayGetLastItemIndex+0x8>
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        return header->last;
    e8812244:	00354503          	lbu	a0,3(a0)
    e8812248:	8082                	ret
    }
    return kiAP2ListArrayInvalidIndex;
    e881224a:	0ff00513          	li	a0,255
}
    e881224e:	8082                	ret

00000000e8812250 <iAP2ListArrayGetNextItemIndex>:
**
****************************************************************
*/
uint8_t iAP2ListArrayGetNextItemIndex (uint8_t* listArrayBuffer, uint8_t itemIndex)
{
    if (listArrayBuffer)
    e8812250:	cd11                	beqz	a0,e881226c <iAP2ListArrayGetNextItemIndex+0x1c>
{
    e8812252:	1141                	addi	sp,sp,-16
    e8812254:	e406                	sd	ra,8(sp)
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        iAP2ListArrayItemHeader_t* pItem = _iAP2ListArrayItemFromIndex (header, itemIndex);
    e8812256:	df5ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
        if (pItem)
        {
            return pItem->next;
        }
    }
    return kiAP2ListArrayInvalidIndex;
    e881225a:	0ff00793          	li	a5,255
        if (pItem)
    e881225e:	c119                	beqz	a0,e8812264 <iAP2ListArrayGetNextItemIndex+0x14>
            return pItem->next;
    e8812260:	00054783          	lbu	a5,0(a0)
}
    e8812264:	60a2                	ld	ra,8(sp)
    e8812266:	853e                	mv	a0,a5
    e8812268:	0141                	addi	sp,sp,16
    e881226a:	8082                	ret
    return kiAP2ListArrayInvalidIndex;
    e881226c:	0ff00793          	li	a5,255
}
    e8812270:	853e                	mv	a0,a5
    e8812272:	8082                	ret

00000000e8812274 <iAP2ListArrayAddItemAfter>:
****************************************************************
*/
uint8_t iAP2ListArrayAddItemAfter (uint8_t* listArrayBuffer,
                                   uint8_t  prevItemIndex,
                                   void*    item)
{
    e8812274:	715d                	addi	sp,sp,-80
    e8812276:	fc26                	sd	s1,56(sp)
    e8812278:	e486                	sd	ra,72(sp)
    e881227a:	e0a2                	sd	s0,64(sp)
    e881227c:	f84a                	sd	s2,48(sp)
    e881227e:	f44e                	sd	s3,40(sp)
    e8812280:	f052                	sd	s4,32(sp)
    e8812282:	ec56                	sd	s5,24(sp)
    e8812284:	e85a                	sd	s6,16(sp)
    e8812286:	e45e                	sd	s7,8(sp)
    uint8_t itemIndex = kiAP2ListArrayInvalidIndex;
    e8812288:	0ff00493          	li	s1,255
    iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
    if (listArrayBuffer && item && header->count < header->maxCount)
    e881228c:	c579                	beqz	a0,e881235a <iAP2ListArrayAddItemAfter+0xe6>
    e881228e:	c671                	beqz	a2,e881235a <iAP2ListArrayAddItemAfter+0xe6>
    e8812290:	00054703          	lbu	a4,0(a0)
    e8812294:	00154783          	lbu	a5,1(a0)
    e8812298:	0cf77163          	bgeu	a4,a5,e881235a <iAP2ListArrayAddItemAfter+0xe6>
        iAP2ListArrayItemHeader_t* pItem;
        iAP2ListArrayItemHeader_t* freeItem;
        uint8_t* data;

        /* Take an entry from the free list */
        itemIndex = header->free;
    e881229c:	00454483          	lbu	s1,4(a0)
        assert(itemIndex != kiAP2ListArrayInvalidIndex);
    e88122a0:	0ff00793          	li	a5,255
    e88122a4:	8ab2                	mv	s5,a2
    e88122a6:	892e                	mv	s2,a1
    e88122a8:	842a                	mv	s0,a0
        uint8_t root = header->root;
    e88122aa:	00254a03          	lbu	s4,2(a0)
        uint8_t last = header->last;
    e88122ae:	00354b83          	lbu	s7,3(a0)
        uint8_t dataSize = header->dataSize;
    e88122b2:	00554b03          	lbu	s6,5(a0)
        assert(itemIndex != kiAP2ListArrayInvalidIndex);
    e88122b6:	02f49463          	bne	s1,a5,e88122de <iAP2ListArrayAddItemAfter+0x6a>
    e88122ba:	02f00593          	li	a1,47
    e88122be:	0008f517          	auipc	a0,0x8f
    e88122c2:	2d250513          	addi	a0,a0,722 # e88a1590 <iAP2LinkAccessorySuspendStateEvents+0x388>
    e88122c6:	0b26a0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88122ca:	00150593          	addi	a1,a0,1
    e88122ce:	23800613          	li	a2,568
    e88122d2:	0008e517          	auipc	a0,0x8e
    e88122d6:	ede50513          	addi	a0,a0,-290 # e88a01b0 <TWO52+0x5b8>
    e88122da:	7ed690ef          	jal	ra,e887c2c6 <eLIBs_printf>
        pItem = _iAP2ListArrayItemFromIndex (header, itemIndex);
    e88122de:	85a6                	mv	a1,s1
    e88122e0:	8522                	mv	a0,s0
    e88122e2:	d69ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
        header->free = pItem->next;
    e88122e6:	00054583          	lbu	a1,0(a0)
        pItem = _iAP2ListArrayItemFromIndex (header, itemIndex);
    e88122ea:	89aa                	mv	s3,a0
        freeItem = _iAP2ListArrayItemFromIndex (header, header->free);
    e88122ec:	8522                	mv	a0,s0
        header->free = pItem->next;
    e88122ee:	00b40223          	sb	a1,4(s0)
        freeItem = _iAP2ListArrayItemFromIndex (header, header->free);
    e88122f2:	d59ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
        if (freeItem)
    e88122f6:	c501                	beqz	a0,e88122fe <iAP2ListArrayAddItemAfter+0x8a>
        {
            freeItem->prev = kiAP2ListArrayInvalidIndex;
    e88122f8:	57fd                	li	a5,-1
    e88122fa:	00f500a3          	sb	a5,1(a0)
        }

        /* Update new item with passed in data */
        pItem->prev = kiAP2ListArrayInvalidIndex;
        pItem->next = kiAP2ListArrayInvalidIndex;
    e88122fe:	57fd                	li	a5,-1
    e8812300:	00f99023          	sh	a5,0(s3)
    uint8_t* data = NULL;
    e8812304:	4501                	li	a0,0
    if (item)
    e8812306:	00098463          	beqz	s3,e881230e <iAP2ListArrayAddItemAfter+0x9a>
        data = (uint8_t*) (item + 1);
    e881230a:	00498513          	addi	a0,s3,4
        data = _iAP2ListArrayDataFromItem (pItem);
        memcpy (data, item, dataSize);
    e881230e:	865a                	mv	a2,s6
    e8812310:	85d6                	mv	a1,s5

        /* Insert item into list */
        if (prevItemIndex != kiAP2ListArrayInvalidIndex)
    e8812312:	0ff00b13          	li	s6,255
        memcpy (data, item, dataSize);
    e8812316:	08a6a0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        if (prevItemIndex != kiAP2ListArrayInvalidIndex)
    e881231a:	05690c63          	beq	s2,s6,e8812372 <iAP2ListArrayAddItemAfter+0xfe>
        {
            iAP2ListArrayItemHeader_t* prevItem = _iAP2ListArrayItemFromIndex (header, prevItemIndex);
    e881231e:	85ca                	mv	a1,s2
    e8812320:	8522                	mv	a0,s0
    e8812322:	d29ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
            uint8_t prevNext = prevItem->next;
    e8812326:	00054a03          	lbu	s4,0(a0)
            iAP2ListArrayItemHeader_t* prevItem = _iAP2ListArrayItemFromIndex (header, prevItemIndex);
    e881232a:	8aaa                	mv	s5,a0
            if (prevNext != kiAP2ListArrayInvalidIndex)
    e881232c:	016a0863          	beq	s4,s6,e881233c <iAP2ListArrayAddItemAfter+0xc8>
            {
                iAP2ListArrayItemHeader_t* prevNextItem = _iAP2ListArrayItemFromIndex (header, prevNext);
    e8812330:	85d2                	mv	a1,s4
    e8812332:	8522                	mv	a0,s0
    e8812334:	d17ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
                prevNextItem->prev = itemIndex;
    e8812338:	009500a3          	sb	s1,1(a0)
            }
            pItem->next     = prevNext;
    e881233c:	01498023          	sb	s4,0(s3)
            prevItem->next  = itemIndex;
    e8812340:	009a8023          	sb	s1,0(s5)
            pItem->prev     = prevItemIndex;
    e8812344:	012980a3          	sb	s2,1(s3)
                rootItem->prev  = itemIndex;
                pItem->next     = root;
            }
            header->root = itemIndex;
        }
        if (prevItemIndex == last)
    e8812348:	01791463          	bne	s2,s7,e8812350 <iAP2ListArrayAddItemAfter+0xdc>
        {
            header->last = itemIndex;
    e881234c:	009401a3          	sb	s1,3(s0)
        }
        header->count += 1;
    e8812350:	00044783          	lbu	a5,0(s0)
    e8812354:	2785                	addiw	a5,a5,1
    e8812356:	00f40023          	sb	a5,0(s0)
    }
    return itemIndex;
}
    e881235a:	60a6                	ld	ra,72(sp)
    e881235c:	6406                	ld	s0,64(sp)
    e881235e:	8526                	mv	a0,s1
    e8812360:	7942                	ld	s2,48(sp)
    e8812362:	74e2                	ld	s1,56(sp)
    e8812364:	79a2                	ld	s3,40(sp)
    e8812366:	7a02                	ld	s4,32(sp)
    e8812368:	6ae2                	ld	s5,24(sp)
    e881236a:	6b42                	ld	s6,16(sp)
    e881236c:	6ba2                	ld	s7,8(sp)
    e881236e:	6161                	addi	sp,sp,80
    e8812370:	8082                	ret
            if (root != kiAP2ListArrayInvalidIndex)
    e8812372:	012a0a63          	beq	s4,s2,e8812386 <iAP2ListArrayAddItemAfter+0x112>
                iAP2ListArrayItemHeader_t* rootItem = _iAP2ListArrayItemFromIndex (header, root);
    e8812376:	85d2                	mv	a1,s4
    e8812378:	8522                	mv	a0,s0
    e881237a:	cd1ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
                rootItem->prev  = itemIndex;
    e881237e:	009500a3          	sb	s1,1(a0)
                pItem->next     = root;
    e8812382:	01498023          	sb	s4,0(s3)
            header->root = itemIndex;
    e8812386:	00940123          	sb	s1,2(s0)
    e881238a:	bf7d                	j	e8812348 <iAP2ListArrayAddItemAfter+0xd4>

00000000e881238c <iAP2ListArrayAddItemInOrder>:
uint8_t iAP2ListArrayAddItemInOrder (uint8_t*                  listArrayBuffer,
                                     void*                     item,
                                     piAP2ListArrayCompareFunc func)
{
    uint8_t itemIndex = kiAP2ListArrayInvalidIndex;
    if (listArrayBuffer && func && item)
    e881238c:	c151                	beqz	a0,e8812410 <iAP2ListArrayAddItemInOrder+0x84>
    e881238e:	c249                	beqz	a2,e8812410 <iAP2ListArrayAddItemInOrder+0x84>
    e8812390:	c1c1                	beqz	a1,e8812410 <iAP2ListArrayAddItemInOrder+0x84>
{
    e8812392:	715d                	addi	sp,sp,-80
    e8812394:	e0a2                	sd	s0,64(sp)
    e8812396:	fc26                	sd	s1,56(sp)
    e8812398:	f84a                	sd	s2,48(sp)
    e881239a:	f44e                	sd	s3,40(sp)
    e881239c:	ec56                	sd	s5,24(sp)
    e881239e:	e062                	sd	s8,0(sp)
    e88123a0:	e486                	sd	ra,72(sp)
    e88123a2:	f052                	sd	s4,32(sp)
    e88123a4:	e85a                	sd	s6,16(sp)
    e88123a6:	e45e                	sd	s7,8(sp)
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        uint8_t index = header->root;
    e88123a8:	00254a03          	lbu	s4,2(a0)
    e88123ac:	84ae                	mv	s1,a1
        uint8_t prev = kiAP2ListArrayInvalidOffset;
        uint8_t dataSize = header->dataSize;
    e88123ae:	842a                	mv	s0,a0
        iAP2ListArrayItemHeader_t* foundItem = _iAP2ListArrayItemFromIndex(header, index);
    e88123b0:	85d2                	mv	a1,s4
    e88123b2:	8932                	mv	s2,a2
        uint8_t dataSize = header->dataSize;
    e88123b4:	00554b83          	lbu	s7,5(a0)
        iAP2ListArrayItemHeader_t* foundItem = _iAP2ListArrayItemFromIndex(header, index);
    e88123b8:	c93ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
    e88123bc:	89aa                	mv	s3,a0
        uint8_t prev = kiAP2ListArrayInvalidOffset;
    e88123be:	0ff00a93          	li	s5,255
        
        /* Find place to add item */
        while (foundItem &&
    e88123c2:	0ff00c13          	li	s8,255
    e88123c6:	02099263          	bnez	s3,e88123ea <iAP2ListArrayAddItemInOrder+0x5e>
            prev = index;
            index = foundItem->next;
            foundItem = _iAP2ListArrayItemFromIndex(header, index);
        }

        itemIndex = iAP2ListArrayAddItemAfter (listArrayBuffer, prev, item);
    e88123ca:	8522                	mv	a0,s0
    }

    return itemIndex;
}
    e88123cc:	6406                	ld	s0,64(sp)
    e88123ce:	60a6                	ld	ra,72(sp)
    e88123d0:	7942                	ld	s2,48(sp)
    e88123d2:	79a2                	ld	s3,40(sp)
    e88123d4:	7a02                	ld	s4,32(sp)
    e88123d6:	6b42                	ld	s6,16(sp)
    e88123d8:	6ba2                	ld	s7,8(sp)
    e88123da:	6c02                	ld	s8,0(sp)
        itemIndex = iAP2ListArrayAddItemAfter (listArrayBuffer, prev, item);
    e88123dc:	8626                	mv	a2,s1
    e88123de:	85d6                	mv	a1,s5
}
    e88123e0:	74e2                	ld	s1,56(sp)
    e88123e2:	6ae2                	ld	s5,24(sp)
    e88123e4:	6161                	addi	sp,sp,80
        itemIndex = iAP2ListArrayAddItemAfter (listArrayBuffer, prev, item);
    e88123e6:	e8fff06f          	j	e8812274 <iAP2ListArrayAddItemAfter>
        while (foundItem &&
    e88123ea:	ff8a00e3          	beq	s4,s8,e88123ca <iAP2ListArrayAddItemInOrder+0x3e>
               func (_iAP2ListArrayDataFromItem(foundItem), item, dataSize) <= 0)
    e88123ee:	865e                	mv	a2,s7
    e88123f0:	85a6                	mv	a1,s1
    e88123f2:	00498513          	addi	a0,s3,4
    e88123f6:	9902                	jalr	s2
               index != kiAP2ListArrayInvalidIndex &&
    e88123f8:	fca049e3          	bgtz	a0,e88123ca <iAP2ListArrayAddItemInOrder+0x3e>
            index = foundItem->next;
    e88123fc:	0009cb03          	lbu	s6,0(s3)
            foundItem = _iAP2ListArrayItemFromIndex(header, index);
    e8812400:	8522                	mv	a0,s0
    e8812402:	8ad2                	mv	s5,s4
    e8812404:	85da                	mv	a1,s6
    e8812406:	c45ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
    e881240a:	89aa                	mv	s3,a0
            index = foundItem->next;
    e881240c:	8a5a                	mv	s4,s6
    e881240e:	bf65                	j	e88123c6 <iAP2ListArrayAddItemInOrder+0x3a>
}
    e8812410:	0ff00513          	li	a0,255
    e8812414:	8082                	ret

00000000e8812416 <iAP2ListArrayDeleteItem>:
*/
void iAP2ListArrayDeleteItem (uint8_t*              listArrayBuffer,
                              uint8_t               index,
                              piAP2ListArrayFunc    itemCleanupFunc)
{
    if (listArrayBuffer && index != kiAP2ListArrayInvalidIndex)
    e8812416:	c561                	beqz	a0,e88124de <iAP2ListArrayDeleteItem+0xc8>
{
    e8812418:	715d                	addi	sp,sp,-80
    e881241a:	fc26                	sd	s1,56(sp)
    e881241c:	e486                	sd	ra,72(sp)
    e881241e:	e0a2                	sd	s0,64(sp)
    e8812420:	f84a                	sd	s2,48(sp)
    e8812422:	f44e                	sd	s3,40(sp)
    e8812424:	f052                	sd	s4,32(sp)
    e8812426:	ec56                	sd	s5,24(sp)
    e8812428:	e85a                	sd	s6,16(sp)
    e881242a:	e45e                	sd	s7,8(sp)
    if (listArrayBuffer && index != kiAP2ListArrayInvalidIndex)
    e881242c:	0ff00793          	li	a5,255
    e8812430:	84ae                	mv	s1,a1
    e8812432:	08f58b63          	beq	a1,a5,e88124c8 <iAP2ListArrayDeleteItem+0xb2>
    {
        iAP2ListArrayHeader_t* header = (iAP2ListArrayHeader_t*) listArrayBuffer;
        uint8_t count = header->count;
        if (count > 0)
    e8812436:	00054783          	lbu	a5,0(a0)
    e881243a:	842a                	mv	s0,a0
    e881243c:	c7d1                	beqz	a5,e88124c8 <iAP2ListArrayDeleteItem+0xb2>
    e881243e:	8b32                	mv	s6,a2
        {
            uint8_t root = header->root;
    e8812440:	00254b83          	lbu	s7,2(a0)
            uint8_t last = header->last;
            uint8_t free = header->free;
    e8812444:	00454a83          	lbu	s5,4(a0)
            iAP2ListArrayItemHeader_t* item = _iAP2ListArrayItemFromIndex (header, index);
    e8812448:	c03ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
    e881244c:	892a                	mv	s2,a0
            uint8_t next = item->next;
            uint8_t prev = item->prev;

            /* Remove item from list */
            if (index == last)
    e881244e:	00344783          	lbu	a5,3(s0)
            uint8_t next = item->next;
    e8812452:	00054a03          	lbu	s4,0(a0)
            uint8_t prev = item->prev;
    e8812456:	00154983          	lbu	s3,1(a0)
            if (index == last)
    e881245a:	00979463          	bne	a5,s1,e8812462 <iAP2ListArrayDeleteItem+0x4c>
            {
                header->last = prev;
    e881245e:	013401a3          	sb	s3,3(s0)
            }
            if (root == index)
    e8812462:	01749463          	bne	s1,s7,e881246a <iAP2ListArrayDeleteItem+0x54>
            {
                header->root = next;
    e8812466:	01440123          	sb	s4,2(s0)
            }
            if (prev != kiAP2ListArrayInvalidIndex)
    e881246a:	0ff00793          	li	a5,255
    e881246e:	00f98863          	beq	s3,a5,e881247e <iAP2ListArrayDeleteItem+0x68>
            {
                iAP2ListArrayItemHeader_t* prevItem = _iAP2ListArrayItemFromIndex (header, prev);
    e8812472:	85ce                	mv	a1,s3
    e8812474:	8522                	mv	a0,s0
    e8812476:	bd5ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
                prevItem->next = next;
    e881247a:	01450023          	sb	s4,0(a0)
            }
            if (next != kiAP2ListArrayInvalidIndex)
    e881247e:	0ff00793          	li	a5,255
    e8812482:	00fa0863          	beq	s4,a5,e8812492 <iAP2ListArrayDeleteItem+0x7c>
            {
                iAP2ListArrayItemHeader_t* nextItem = _iAP2ListArrayItemFromIndex (header, next);
    e8812486:	85d2                	mv	a1,s4
    e8812488:	8522                	mv	a0,s0
    e881248a:	bc1ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
                nextItem->prev = prev;
    e881248e:	013500a3          	sb	s3,1(a0)
            }
            header->count -= 1;
    e8812492:	00044783          	lbu	a5,0(s0)
    e8812496:	37fd                	addiw	a5,a5,-1
    e8812498:	00f40023          	sb	a5,0(s0)

            /* Cleanup the item data */
            if (itemCleanupFunc)
    e881249c:	000b0863          	beqz	s6,e88124ac <iAP2ListArrayDeleteItem+0x96>
    uint8_t* data = NULL;
    e88124a0:	4501                	li	a0,0
    if (item)
    e88124a2:	00090463          	beqz	s2,e88124aa <iAP2ListArrayDeleteItem+0x94>
        data = (uint8_t*) (item + 1);
    e88124a6:	00490513          	addi	a0,s2,4
            {
                itemCleanupFunc (_iAP2ListArrayDataFromItem (item));
    e88124aa:	9b02                	jalr	s6
            }
            
            /* Add removed item to the free list */
            if (free != kiAP2ListArrayInvalidIndex)
    e88124ac:	0ff00793          	li	a5,255
    e88124b0:	00fa8863          	beq	s5,a5,e88124c0 <iAP2ListArrayDeleteItem+0xaa>
            {
                iAP2ListArrayItemHeader_t* freeItem = _iAP2ListArrayItemFromIndex (header, free);
    e88124b4:	85d6                	mv	a1,s5
    e88124b6:	8522                	mv	a0,s0
    e88124b8:	b93ff0ef          	jal	ra,e881204a <_iAP2ListArrayItemFromIndex>
                freeItem->prev = index;
    e88124bc:	009500a3          	sb	s1,1(a0)
            }
            item->next   = free;
    e88124c0:	01590023          	sb	s5,0(s2)
            header->free = index;
    e88124c4:	00940223          	sb	s1,4(s0)
        }
    }
}
    e88124c8:	60a6                	ld	ra,72(sp)
    e88124ca:	6406                	ld	s0,64(sp)
    e88124cc:	74e2                	ld	s1,56(sp)
    e88124ce:	7942                	ld	s2,48(sp)
    e88124d0:	79a2                	ld	s3,40(sp)
    e88124d2:	7a02                	ld	s4,32(sp)
    e88124d4:	6ae2                	ld	s5,24(sp)
    e88124d6:	6b42                	ld	s6,16(sp)
    e88124d8:	6ba2                	ld	s7,8(sp)
    e88124da:	6161                	addi	sp,sp,80
    e88124dc:	8082                	ret
    e88124de:	8082                	ret

00000000e88124e0 <__iAP2BuffPoolGetBuffSizeBuffList>:
/*
    result += sizeof (__iAP2BuffPoolBuffListImplData_t);
    result += (maxBuffSize * maxBuffCount));
 */
    return result;
}
    e88124e0:	4501                	li	a0,0
    e88124e2:	8082                	ret

00000000e88124e4 <__iAP2BuffPoolInitBuffList>:
                                 uintptr_t       context,
                                 uint32_t        maxBuffSize,
                                 uint16_t        maxBuffCount,
                                 uint8_t*        buff)
{
    buffPool->data = 0;
    e88124e4:	00053823          	sd	zero,16(a0)

    /* Do nothing */
}
    e88124e8:	8082                	ret

00000000e88124ea <__iAP2BuffPoolGetBuff>:
}

/* Function to Get a send buff from the buffPool */
void* __iAP2BuffPoolGetBuff (iAP2BuffPool_t* buffPool, uint32_t buffLen)
{
    return malloc (buffLen);
    e88124ea:	7c05b50b          	extu	a0,a1,31,0
    e88124ee:	3606906f          	j	e887b84e <my_malloc>

00000000e88124f2 <__iAP2BuffPoolReturnBuff>:
}

/* Function to Return a send buff from the buffPool */
void __iAP2BuffPoolReturnBuff (iAP2BuffPool_t* buffPool, void* buff)
{
    free (buff);
    e88124f2:	852e                	mv	a0,a1
    e88124f4:	60d6906f          	j	e887c300 <eLIBs_free>

00000000e88124f8 <__iAP2BuffPoolGetBuffSizeSendPacketList>:
    e88124f8:	4501                	li	a0,0
    e88124fa:	8082                	ret

00000000e88124fc <__iAP2BuffPoolInitSendPacketList>:
    e88124fc:	00053823          	sd	zero,16(a0)
    e8812500:	8082                	ret

00000000e8812502 <__iAP2BuffPoolGetSendPacket>:

/* Function to Get a send packet from the buffPool */
void* __iAP2BuffPoolGetSendPacket (iAP2BuffPool_t* buffPool, uint32_t payloadLen)
{
    iAP2Packet_t* pck = NULL;
    uint32_t pckLen = kIAP2PacketHeaderLen + payloadLen + kIAP2PacketChksumLen;
    e8812502:	25a9                	addiw	a1,a1,10
#if iAP2_ALLOW_LARGE_PACKET_MALLOC
    pck = (iAP2Packet_t*) malloc (sizeof(iAP2Packet_t) + pckLen);
    e8812504:	7c05b50b          	extu	a0,a1,31,0
{
    e8812508:	1141                	addi	sp,sp,-16
    pck = (iAP2Packet_t*) malloc (sizeof(iAP2Packet_t) + pckLen);
    e881250a:	04050513          	addi	a0,a0,64
{
    e881250e:	e022                	sd	s0,0(sp)
    e8812510:	e406                	sd	ra,8(sp)
    pck = (iAP2Packet_t*) malloc (sizeof(iAP2Packet_t) + pckLen);
    e8812512:	33c690ef          	jal	ra,e887b84e <my_malloc>
    e8812516:	842a                	mv	s0,a0
    assert(pck);
    e8812518:	e11d                	bnez	a0,e881253e <__iAP2BuffPoolGetSendPacket+0x3c>
    e881251a:	02f00593          	li	a1,47
    e881251e:	0008f517          	auipc	a0,0x8f
    e8812522:	11250513          	addi	a0,a0,274 # e88a1630 <iAP2LinkAccessorySuspendStateEvents+0x428>
    e8812526:	653690ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e881252a:	00150593          	addi	a1,a0,1
    e881252e:	0b400613          	li	a2,180
    e8812532:	0008e517          	auipc	a0,0x8e
    e8812536:	c7e50513          	addi	a0,a0,-898 # e88a01b0 <TWO52+0x5b8>
    e881253a:	58d690ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pck->pckData = (iAP2PacketData_t*) (pck + 1);
    e881253e:	04040793          	addi	a5,s0,64
    e8812542:	fc1c                	sd	a5,56(s0)
        pck->pckData = (iAP2PacketData_t*) malloc (pckLen);
        assert(pck->pckData);
    }
#endif
    return pck;
}
    e8812544:	8522                	mv	a0,s0
    e8812546:	60a2                	ld	ra,8(sp)
    e8812548:	6402                	ld	s0,0(sp)
    e881254a:	0141                	addi	sp,sp,16
    e881254c:	8082                	ret

00000000e881254e <__iAP2BuffPoolReturnSendPacket>:
    e881254e:	852e                	mv	a0,a1
    e8812550:	5b16906f          	j	e887c300 <eLIBs_free>

00000000e8812554 <__iAP2BuffPoolGetBuffSizeRecvPacketList>:
    e8812554:	4501                	li	a0,0
    e8812556:	8082                	ret

00000000e8812558 <__iAP2BuffPoolInitRecvPacketList>:
    e8812558:	00053823          	sd	zero,16(a0)
    e881255c:	8082                	ret

00000000e881255e <__iAP2BuffPoolGetRecvPacket>:

/* Function to Get a recv packet from the buffPool */
void* __iAP2BuffPoolGetRecvPacket (iAP2BuffPool_t* buffPool, uint32_t payloadLen)
{
    iAP2Packet_t* pck = NULL;
    uint32_t pckLen = kIAP2PacketHeaderLen + payloadLen + kIAP2PacketChksumLen;
    e881255e:	25a9                	addiw	a1,a1,10
#if iAP2_ALLOW_LARGE_PACKET_MALLOC
    pck = (iAP2Packet_t*) malloc (sizeof(iAP2Packet_t) + pckLen);
    e8812560:	7c05b50b          	extu	a0,a1,31,0
{
    e8812564:	1141                	addi	sp,sp,-16
    pck = (iAP2Packet_t*) malloc (sizeof(iAP2Packet_t) + pckLen);
    e8812566:	04050513          	addi	a0,a0,64
{
    e881256a:	e022                	sd	s0,0(sp)
    e881256c:	e406                	sd	ra,8(sp)
    pck = (iAP2Packet_t*) malloc (sizeof(iAP2Packet_t) + pckLen);
    e881256e:	2e0690ef          	jal	ra,e887b84e <my_malloc>
    e8812572:	842a                	mv	s0,a0
    assert(pck);
    e8812574:	e11d                	bnez	a0,e881259a <__iAP2BuffPoolGetRecvPacket+0x3c>
    e8812576:	02f00593          	li	a1,47
    e881257a:	0008f517          	auipc	a0,0x8f
    e881257e:	0b650513          	addi	a0,a0,182 # e88a1630 <iAP2LinkAccessorySuspendStateEvents+0x428>
    e8812582:	5f7690ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8812586:	00150593          	addi	a1,a0,1
    e881258a:	10d00613          	li	a2,269
    e881258e:	0008e517          	auipc	a0,0x8e
    e8812592:	c2250513          	addi	a0,a0,-990 # e88a01b0 <TWO52+0x5b8>
    e8812596:	531690ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pck->pckData = (iAP2PacketData_t*) (pck + 1);
    e881259a:	04040793          	addi	a5,s0,64
    e881259e:	fc1c                	sd	a5,56(s0)
        pck->pckData = (iAP2PacketData_t*) malloc (pckLen);
        assert(pck->pckData);
    }
#endif
    return pck;
}
    e88125a0:	8522                	mv	a0,s0
    e88125a2:	60a2                	ld	ra,8(sp)
    e88125a4:	6402                	ld	s0,0(sp)
    e88125a6:	0141                	addi	sp,sp,16
    e88125a8:	8082                	ret

00000000e88125aa <__iAP2BuffPoolReturnRecvPacket>:
    e88125aa:	852e                	mv	a0,a1
    e88125ac:	5556906f          	j	e887c300 <eLIBs_free>

00000000e88125b0 <iAP2LogTypePureVNL.part.1>:
**  Note:   No lock is used for this call... use iAP2LogStart/Stop
**          to acquire/release locks.
**
****************************************************************
*/
void iAP2LogTypeVNL (iAP2LogType_t type, const char* format, va_list args)
    e88125b0:	1101                	addi	sp,sp,-32
    e88125b2:	e42a                	sd	a0,8(sp)
{
    if (g_Enable[type])
    {
        char*           tmpStr = malloc (LOG_STRING_SIZE);
    e88125b4:	1f400513          	li	a0,500
void iAP2LogTypeVNL (iAP2LogType_t type, const char* format, va_list args)
    e88125b8:	ec06                	sd	ra,24(sp)
    e88125ba:	e822                	sd	s0,16(sp)
    e88125bc:	e02e                	sd	a1,0(sp)
        char*           tmpStr = malloc (LOG_STRING_SIZE);
    e88125be:	290690ef          	jal	ra,e887b84e <my_malloc>
    e88125c2:	842a                	mv	s0,a0
        unsigned long   index = 0;
        //_PrintTime (tmpStr, LOG_STRING_SIZE, type, "", ": ");
        //index = strlen(tmpStr);
        vsnprintf (&tmpStr[index], LOG_STRING_SIZE-index, format, args);
    e88125c4:	f8c1468b          	ldd	a3,a2,(sp),0,4
    e88125c8:	1f400593          	li	a1,500
    e88125cc:	45d690ef          	jal	ra,e887c228 <eLIBs_vsnprintf>
#if iAP2_FOR_DEVICE
        syslog ((kiAP2LogTypeError == type ? LOG_WARNING : LOG_NOTICE), "%s", tmpStr);
#else
        printf ("%s", tmpStr);
    e88125d0:	85a2                	mv	a1,s0
    e88125d2:	00098517          	auipc	a0,0x98
    e88125d6:	dce50513          	addi	a0,a0,-562 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e88125da:	4ed690ef          	jal	ra,e887c2c6 <eLIBs_printf>
#endif
        free (tmpStr);
    e88125de:	8522                	mv	a0,s0
    }
}
    e88125e0:	6442                	ld	s0,16(sp)
    e88125e2:	60e2                	ld	ra,24(sp)
    e88125e4:	6105                	addi	sp,sp,32
        free (tmpStr);
    e88125e6:	51b6906f          	j	e887c300 <eLIBs_free>

00000000e88125ea <iAP2LogTypeVNL>:
    if (g_Enable[type])
    e88125ea:	000c2717          	auipc	a4,0xc2
    e88125ee:	45e70713          	addi	a4,a4,1118 # e88d4a48 <g_Enable>
    e88125f2:	44a7470b          	lrw	a4,a4,a0,2
{
    e88125f6:	87ae                	mv	a5,a1
    if (g_Enable[type])
    e88125f8:	c709                	beqz	a4,e8812602 <iAP2LogTypeVNL+0x18>
    e88125fa:	85b2                	mv	a1,a2
    e88125fc:	853e                	mv	a0,a5
    e88125fe:	fb3ff06f          	j	e88125b0 <iAP2LogTypePureVNL.part.1>
}
    e8812602:	8082                	ret

00000000e8812604 <iAP2LogVNL>:
**
****************************************************************
*/
void iAP2LogVNL (const char* format, va_list args)
{
    if (g_Enable[kiAP2LogTypeLog])
    e8812604:	000c2797          	auipc	a5,0xc2
    e8812608:	44478793          	addi	a5,a5,1092 # e88d4a48 <g_Enable>
    e881260c:	43dc                	lw	a5,4(a5)
{
    e881260e:	862e                	mv	a2,a1
    if (g_Enable[kiAP2LogTypeLog])
    e8812610:	c789                	beqz	a5,e881261a <iAP2LogVNL+0x16>
    {
        iAP2LogTypeVNL (kiAP2LogTypeLog, format, args);
    e8812612:	85aa                	mv	a1,a0
    e8812614:	4505                	li	a0,1
    e8812616:	fd5ff06f          	j	e88125ea <iAP2LogTypeVNL>
    }
}
    e881261a:	8082                	ret

00000000e881261c <iAP2Log>:
{
    e881261c:	711d                	addi	sp,sp,-96
    e881261e:	e4be                	sd	a5,72(sp)
    e8812620:	fed1560b          	sdd	a2,a3,(sp),3,4
    if (g_Enable[kiAP2LogTypeLog])
    e8812624:	000c2797          	auipc	a5,0xc2
    e8812628:	42478793          	addi	a5,a5,1060 # e88d4a48 <g_Enable>
{
    e881262c:	ec06                	sd	ra,24(sp)
    e881262e:	f42e                	sd	a1,40(sp)
    e8812630:	e0ba                	sd	a4,64(sp)
    e8812632:	e8c2                	sd	a6,80(sp)
    e8812634:	ecc6                	sd	a7,88(sp)
    if (g_Enable[kiAP2LogTypeLog])
    e8812636:	43dc                	lw	a5,4(a5)
    e8812638:	c789                	beqz	a5,e8812642 <iAP2Log+0x26>
        va_start (args, format);
    e881263a:	102c                	addi	a1,sp,40
    e881263c:	e42e                	sd	a1,8(sp)
        iAP2LogVNL (format, args);
    e881263e:	fc7ff0ef          	jal	ra,e8812604 <iAP2LogVNL>
}
    e8812642:	60e2                	ld	ra,24(sp)
    e8812644:	6125                	addi	sp,sp,96
    e8812646:	8082                	ret

00000000e8812648 <iAP2LogDbgVNL>:
**
****************************************************************
*/
void iAP2LogDbgVNL (const char* format, va_list args)
{
    if (g_Enable[kiAP2LogTypeLogDbg])
    e8812648:	000c2797          	auipc	a5,0xc2
    e881264c:	40078793          	addi	a5,a5,1024 # e88d4a48 <g_Enable>
    e8812650:	479c                	lw	a5,8(a5)
{
    e8812652:	862e                	mv	a2,a1
    if (g_Enable[kiAP2LogTypeLogDbg])
    e8812654:	c789                	beqz	a5,e881265e <iAP2LogDbgVNL+0x16>
    {
        iAP2LogTypeVNL (kiAP2LogTypeLogDbg, format, args);
    e8812656:	85aa                	mv	a1,a0
    e8812658:	4509                	li	a0,2
    e881265a:	f91ff06f          	j	e88125ea <iAP2LogTypeVNL>
    }
}
    e881265e:	8082                	ret

00000000e8812660 <iAP2LogDbg>:
{
    e8812660:	711d                	addi	sp,sp,-96
    e8812662:	e4be                	sd	a5,72(sp)
    e8812664:	fed1560b          	sdd	a2,a3,(sp),3,4
    if (g_Enable[kiAP2LogTypeLogDbg])
    e8812668:	000c2797          	auipc	a5,0xc2
    e881266c:	3e078793          	addi	a5,a5,992 # e88d4a48 <g_Enable>
{
    e8812670:	ec06                	sd	ra,24(sp)
    e8812672:	f42e                	sd	a1,40(sp)
    e8812674:	e0ba                	sd	a4,64(sp)
    e8812676:	e8c2                	sd	a6,80(sp)
    e8812678:	ecc6                	sd	a7,88(sp)
    if (g_Enable[kiAP2LogTypeLogDbg])
    e881267a:	479c                	lw	a5,8(a5)
    e881267c:	c789                	beqz	a5,e8812686 <iAP2LogDbg+0x26>
        va_start (args, format);
    e881267e:	102c                	addi	a1,sp,40
    e8812680:	e42e                	sd	a1,8(sp)
        iAP2LogDbgVNL (format, args);
    e8812682:	fc7ff0ef          	jal	ra,e8812648 <iAP2LogDbgVNL>
}
    e8812686:	60e2                	ld	ra,24(sp)
    e8812688:	6125                	addi	sp,sp,96
    e881268a:	8082                	ret

00000000e881268c <iAP2LogErrorVNL>:
**
****************************************************************
*/
void iAP2LogErrorVNL (const char* format, va_list args)
{
    if (g_Enable[kiAP2LogTypeError])
    e881268c:	000c2797          	auipc	a5,0xc2
    e8812690:	3bc78793          	addi	a5,a5,956 # e88d4a48 <g_Enable>
    e8812694:	439c                	lw	a5,0(a5)
{
    e8812696:	862e                	mv	a2,a1
    if (g_Enable[kiAP2LogTypeError])
    e8812698:	c789                	beqz	a5,e88126a2 <iAP2LogErrorVNL+0x16>
    {
        iAP2LogTypeVNL (kiAP2LogTypeError, format, args);
    e881269a:	85aa                	mv	a1,a0
    e881269c:	4501                	li	a0,0
    e881269e:	f4dff06f          	j	e88125ea <iAP2LogTypeVNL>
    }
}
    e88126a2:	8082                	ret

00000000e88126a4 <iAP2LogError>:
{
    e88126a4:	711d                	addi	sp,sp,-96
    e88126a6:	e4be                	sd	a5,72(sp)
    e88126a8:	fed1560b          	sdd	a2,a3,(sp),3,4
    if (g_Enable[kiAP2LogTypeError])
    e88126ac:	000c2797          	auipc	a5,0xc2
    e88126b0:	39c78793          	addi	a5,a5,924 # e88d4a48 <g_Enable>
{
    e88126b4:	ec06                	sd	ra,24(sp)
    e88126b6:	f42e                	sd	a1,40(sp)
    e88126b8:	e0ba                	sd	a4,64(sp)
    e88126ba:	e8c2                	sd	a6,80(sp)
    e88126bc:	ecc6                	sd	a7,88(sp)
    if (g_Enable[kiAP2LogTypeError])
    e88126be:	439c                	lw	a5,0(a5)
    e88126c0:	c789                	beqz	a5,e88126ca <iAP2LogError+0x26>
        va_start (args, format);
    e88126c2:	102c                	addi	a1,sp,40
    e88126c4:	e42e                	sd	a1,8(sp)
        iAP2LogErrorVNL (format, args);
    e88126c6:	fc7ff0ef          	jal	ra,e881268c <iAP2LogErrorVNL>
}
    e88126ca:	60e2                	ld	ra,24(sp)
    e88126cc:	6125                	addi	sp,sp,96
    e88126ce:	8082                	ret

00000000e88126d0 <iAP2LogErrorNL>:
{
    e88126d0:	711d                	addi	sp,sp,-96
    e88126d2:	e4be                	sd	a5,72(sp)
    e88126d4:	fed1560b          	sdd	a2,a3,(sp),3,4
    if (g_Enable[kiAP2LogTypeError])
    e88126d8:	000c2797          	auipc	a5,0xc2
    e88126dc:	37078793          	addi	a5,a5,880 # e88d4a48 <g_Enable>
{
    e88126e0:	ec06                	sd	ra,24(sp)
    e88126e2:	f42e                	sd	a1,40(sp)
    e88126e4:	e0ba                	sd	a4,64(sp)
    e88126e6:	e8c2                	sd	a6,80(sp)
    e88126e8:	ecc6                	sd	a7,88(sp)
    if (g_Enable[kiAP2LogTypeError])
    e88126ea:	439c                	lw	a5,0(a5)
    e88126ec:	c789                	beqz	a5,e88126f6 <iAP2LogErrorNL+0x26>
        va_start (args, format);
    e88126ee:	102c                	addi	a1,sp,40
    e88126f0:	e42e                	sd	a1,8(sp)
        iAP2LogErrorVNL (format, args);
    e88126f2:	f9bff0ef          	jal	ra,e881268c <iAP2LogErrorVNL>
}
    e88126f6:	60e2                	ld	ra,24(sp)
    e88126f8:	6125                	addi	sp,sp,96
    e88126fa:	8082                	ret

00000000e88126fc <iAP2LogStart>:
****************************************************************
*/
void iAP2LogStart (void)
{
    //pthread_mutex_lock(&g_LogLock);
}
    e88126fc:	8082                	ret

00000000e88126fe <iAP2LogStop>:
    e88126fe:	8082                	ret

00000000e8812700 <_iAP2TimeCompareID>:
*/
intptr_t _iAP2TimeCompareID (void* a, void* b, uint8_t dataSize)
{
    iAP2Timeout_t* aTime = (iAP2Timeout_t*) a;
    iAP2Timeout_t* bTime = (iAP2Timeout_t*) b;
    return aTime->id - bTime->id;
    e8812700:	00454503          	lbu	a0,4(a0)
    e8812704:	0045c783          	lbu	a5,4(a1)
}
    e8812708:	9d1d                	subw	a0,a0,a5
    e881270a:	8082                	ret

00000000e881270c <_iAP2TimeCompareTimeout>:
*/
intptr_t _iAP2TimeCompareTimeout (void* a, void* b, uint8_t dataSize)
{
    iAP2Timeout_t* aTime = (iAP2Timeout_t*) a;
    iAP2Timeout_t* bTime = (iAP2Timeout_t*) b;
    return aTime->timeout - bTime->timeout;
    e881270c:	4108                	lw	a0,0(a0)
    e881270e:	419c                	lw	a5,0(a1)
    e8812710:	9d1d                	subw	a0,a0,a5
}
    e8812712:	7c05350b          	extu	a0,a0,31,0
    e8812716:	8082                	ret

00000000e8812718 <_iAP2TimeCheckTimeouts>:
**      None
**
****************************************************************
*/
void _iAP2TimeCheckTimeouts (iAP2Timer_t* timer)
{
    e8812718:	1101                	addi	sp,sp,-32
    e881271a:	e422                	sd	s0,8(sp)
    e881271c:	ec06                	sd	ra,24(sp)
    e881271e:	e826                	sd	s1,16(sp)
    e8812720:	842a                	mv	s0,a0
    uint8_t index = iAP2ListArrayGetFirstItemIndex (timer->listBuffer);
    e8812722:	7908                	ld	a0,48(a0)
    e8812724:	b11ff0ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    iAP2Timeout_t* timeout = (iAP2Timeout_t*) iAP2ListArrayItemForIndex (timer->listBuffer, index);
    e8812728:	85aa                	mv	a1,a0
    e881272a:	7808                	ld	a0,48(s0)
    e881272c:	ac9ff0ef          	jal	ra,e88121f4 <iAP2ListArrayItemForIndex>
    if (timeout && (timeout->timeout < timer->runningTimeOut || timer->runningTimeOut == INVALID_TIMEOUT_VAL))
    e8812730:	c129                	beqz	a0,e8812772 <_iAP2TimeCheckTimeouts+0x5a>
    e8812732:	5c1c                	lw	a5,56(s0)
    e8812734:	4118                	lw	a4,0(a0)
    e8812736:	84aa                	mv	s1,a0
    e8812738:	02f76563          	bltu	a4,a5,e8812762 <_iAP2TimeCheckTimeouts+0x4a>
    e881273c:	577d                	li	a4,-1
    e881273e:	02e79a63          	bne	a5,a4,e8812772 <_iAP2TimeCheckTimeouts+0x5a>
	#if 0
    struct timeval tp;
    gettimeofday (&tp, NULL);
    timeMs = iAP2TimeValToMs(&tp);
	#else
	timeMs = GetTickCount();
    e8812742:	697680ef          	jal	ra,e887b5d8 <GetTickCount>
        timer->runningTimeOut = timeout->timeout;
    e8812746:	408c                	lw	a1,0(s1)
}
    e8812748:	60e2                	ld	ra,24(sp)
    e881274a:	64c2                	ld	s1,16(sp)
        timer->runningTimeOut = timeout->timeout;
    e881274c:	dc0c                	sw	a1,56(s0)
        _iAP2TimeCallbackAfter (timer,
    e881274e:	9d89                	subw	a1,a1,a0
    e8812750:	8522                	mv	a0,s0
}
    e8812752:	6422                	ld	s0,8(sp)
        _iAP2TimeCallbackAfter (timer,
    e8812754:	00000617          	auipc	a2,0x0
    e8812758:	02860613          	addi	a2,a2,40 # e881277c <_iAP2TimeHandleExpired>
}
    e881275c:	6105                	addi	sp,sp,32
        _iAP2TimeCallbackAfter (timer,
    e881275e:	8c4fb06f          	j	e880d822 <_iAP2TimeCallbackAfter>
        if (timer->runningTimeOut != INVALID_TIMEOUT_VAL)
    e8812762:	577d                	li	a4,-1
    e8812764:	fce78fe3          	beq	a5,a4,e8812742 <_iAP2TimeCheckTimeouts+0x2a>
            timer->runningTimeOut = INVALID_TIMEOUT_VAL;
    e8812768:	dc18                	sw	a4,56(s0)
            _iAP2TimeCancelCallback (timer);
    e881276a:	8522                	mv	a0,s0
    e881276c:	9d2fb0ef          	jal	ra,e880d93e <_iAP2TimeCancelCallback>
    e8812770:	bfc9                	j	e8812742 <_iAP2TimeCheckTimeouts+0x2a>
}
    e8812772:	60e2                	ld	ra,24(sp)
    e8812774:	6422                	ld	s0,8(sp)
    e8812776:	64c2                	ld	s1,16(sp)
    e8812778:	6105                	addi	sp,sp,32
    e881277a:	8082                	ret

00000000e881277c <_iAP2TimeHandleExpired>:
{
    e881277c:	7139                	addi	sp,sp,-64
    e881277e:	fc06                	sd	ra,56(sp)
    e8812780:	e422                	sd	s0,8(sp)
    e8812782:	e826                	sd	s1,16(sp)
    e8812784:	ec4a                	sd	s2,24(sp)
    e8812786:	842a                	mv	s0,a0
    e8812788:	f04e                	sd	s3,32(sp)
    e881278a:	f452                	sd	s4,40(sp)
    e881278c:	f856                	sd	s5,48(sp)
    index = iAP2ListArrayGetFirstItemIndex (timer->listBuffer);
    e881278e:	7908                	ld	a0,48(a0)
{
    e8812790:	892e                	mv	s2,a1
    index = iAP2ListArrayGetFirstItemIndex (timer->listBuffer);
    e8812792:	aa3ff0ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    timeout = (iAP2Timeout_t*) iAP2ListArrayItemForIndex (timer->listBuffer, index);
    e8812796:	85aa                	mv	a1,a0
    index = iAP2ListArrayGetFirstItemIndex (timer->listBuffer);
    e8812798:	84aa                	mv	s1,a0
    timeout = (iAP2Timeout_t*) iAP2ListArrayItemForIndex (timer->listBuffer, index);
    e881279a:	7808                	ld	a0,48(s0)
    e881279c:	a59ff0ef          	jal	ra,e88121f4 <iAP2ListArrayItemForIndex>
    timer->runningTimeOut = INVALID_TIMEOUT_VAL;
    e88127a0:	57fd                	li	a5,-1
    e88127a2:	dc1c                	sw	a5,56(s0)
    while (timeout && curTime >= timeout->timeout)
    e88127a4:	c501                	beqz	a0,e88127ac <_iAP2TimeHandleExpired+0x30>
    e88127a6:	411c                	lw	a5,0(a0)
    e88127a8:	00f97d63          	bgeu	s2,a5,e88127c2 <_iAP2TimeHandleExpired+0x46>
    _iAP2TimeCheckTimeouts (timer);
    e88127ac:	8522                	mv	a0,s0
}
    e88127ae:	6422                	ld	s0,8(sp)
    e88127b0:	70e2                	ld	ra,56(sp)
    e88127b2:	64c2                	ld	s1,16(sp)
    e88127b4:	6962                	ld	s2,24(sp)
    e88127b6:	7982                	ld	s3,32(sp)
    e88127b8:	7a22                	ld	s4,40(sp)
    e88127ba:	7ac2                	ld	s5,48(sp)
    e88127bc:	6121                	addi	sp,sp,64
    _iAP2TimeCheckTimeouts (timer);
    e88127be:	f5bff06f          	j	e8812718 <_iAP2TimeCheckTimeouts>
        uint8_t         timeoutID = timeout->id;
    e88127c2:	00454a03          	lbu	s4,4(a0)
        uint8_t         timeoutType = timeout->type;
    e88127c6:	00554a83          	lbu	s5,5(a0)
        iAP2ListArrayDeleteItem (timer->listBuffer, index, NULL);
    e88127ca:	7808                	ld	a0,48(s0)
    e88127cc:	85a6                	mv	a1,s1
    e88127ce:	4601                	li	a2,0
        iAP2TimeExpireCB_t  expiredCB = timer->expiredCB;
    e88127d0:	02043983          	ld	s3,32(s0)
        iAP2ListArrayDeleteItem (timer->listBuffer, index, NULL);
    e88127d4:	c43ff0ef          	jal	ra,e8812416 <iAP2ListArrayDeleteItem>
        expiredCB (timer, timeoutID, timeoutType, curTime);
    e88127d8:	85d2                	mv	a1,s4
    e88127da:	86ca                	mv	a3,s2
    e88127dc:	8656                	mv	a2,s5
    e88127de:	8522                	mv	a0,s0
    e88127e0:	9982                	jalr	s3
        index = iAP2ListArrayGetFirstItemIndex (timer->listBuffer);
    e88127e2:	7808                	ld	a0,48(s0)
    e88127e4:	a51ff0ef          	jal	ra,e8812234 <iAP2ListArrayGetFirstItemIndex>
    e88127e8:	84aa                	mv	s1,a0
        timeout = (iAP2Timeout_t*) iAP2ListArrayItemForIndex (timer->listBuffer, index);
    e88127ea:	85aa                	mv	a1,a0
    e88127ec:	7808                	ld	a0,48(s0)
    e88127ee:	a07ff0ef          	jal	ra,e88121f4 <iAP2ListArrayItemForIndex>
    e88127f2:	bf4d                	j	e88127a4 <_iAP2TimeHandleExpired+0x28>

00000000e88127f4 <iAP2TimeGetCurTimeMs>:
	timeMs = GetTickCount();
    e88127f4:	5e56806f          	j	e887b5d8 <GetTickCount>

00000000e88127f8 <iAP2TimeGetBuffSize>:
**      uint32_t    minimum size of timeBuff required for proper operation
**
****************************************************************
*/
uint32_t iAP2TimeGetBuffSize (uint8_t maxTimeouts)
{
    e88127f8:	1141                	addi	sp,sp,-16
    uint32_t result = sizeof(iAP2Timer_t) + iAP2ListArrayGetBuffSize (maxTimeouts, sizeof(iAP2Timeout_t));
    e88127fa:	45a1                	li	a1,8
{
    e88127fc:	e406                	sd	ra,8(sp)
    uint32_t result = sizeof(iAP2Timer_t) + iAP2ListArrayGetBuffSize (maxTimeouts, sizeof(iAP2Timeout_t));
    e88127fe:	869ff0ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    return result;
}
    e8812802:	0685051b          	addiw	a0,a0,104
    e8812806:	60a2                	ld	ra,8(sp)
    e8812808:	0141                	addi	sp,sp,16
    e881280a:	8082                	ret

00000000e881280c <iAP2TimeCreate>:
iAP2Timer_t* iAP2TimeCreate (void*               context,
                             iAP2TimeExpireCB_t  expiredCB,
                             iAP2TimeCancelCB_t  cancelCB,
                             uint8_t             maxTimeouts,
                             uint8_t*            timeBuff)
{
    e881280c:	7139                	addi	sp,sp,-64
    e881280e:	e422                	sd	s0,8(sp)
    e8812810:	ec4a                	sd	s2,24(sp)
    e8812812:	f04e                	sd	s3,32(sp)
    e8812814:	f452                	sd	s4,40(sp)
    e8812816:	f856                	sd	s5,48(sp)
    e8812818:	fc06                	sd	ra,56(sp)
    e881281a:	e826                	sd	s1,16(sp)
    e881281c:	8aaa                	mv	s5,a0
    e881281e:	89ae                	mv	s3,a1
    e8812820:	8a32                	mv	s4,a2
    e8812822:	8936                	mv	s2,a3
    e8812824:	843a                	mv	s0,a4
    iAP2Timer_t* timer;
    uint8_t* timeBuffNextFree = timeBuff;
    assert(timeBuff != NULL);
    e8812826:	e31d                	bnez	a4,e881284c <iAP2TimeCreate+0x40>
    e8812828:	02f00593          	li	a1,47
    e881282c:	0008f517          	auipc	a0,0x8f
    e8812830:	ec450513          	addi	a0,a0,-316 # e88a16f0 <iAP2LinkAccessorySuspendStateEvents+0x4e8>
    e8812834:	345690ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8812838:	00150593          	addi	a1,a0,1
    e881283c:	1da00613          	li	a2,474
    e8812840:	0008e517          	auipc	a0,0x8e
    e8812844:	97050513          	addi	a0,a0,-1680 # e88a01b0 <TWO52+0x5b8>
    e8812848:	27f690ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(expiredCB != NULL);
    e881284c:	02099463          	bnez	s3,e8812874 <iAP2TimeCreate+0x68>
    e8812850:	02f00593          	li	a1,47
    e8812854:	0008f517          	auipc	a0,0x8f
    e8812858:	e9c50513          	addi	a0,a0,-356 # e88a16f0 <iAP2LinkAccessorySuspendStateEvents+0x4e8>
    e881285c:	31d690ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8812860:	00150593          	addi	a1,a0,1
    e8812864:	1db00613          	li	a2,475
    e8812868:	0008e517          	auipc	a0,0x8e
    e881286c:	94850513          	addi	a0,a0,-1720 # e88a01b0 <TWO52+0x5b8>
    e8812870:	257690ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(maxTimeouts != INVALID_TIMEOUT_ID);
    e8812874:	0ff00793          	li	a5,255
    e8812878:	08f91963          	bne	s2,a5,e881290a <iAP2TimeCreate+0xfe>
    e881287c:	02f00593          	li	a1,47
    e8812880:	0008f517          	auipc	a0,0x8f
    e8812884:	e7050513          	addi	a0,a0,-400 # e88a16f0 <iAP2LinkAccessorySuspendStateEvents+0x4e8>
    e8812888:	2f1690ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e881288c:	1dc00613          	li	a2,476
    assert(maxTimeouts > 0);
    e8812890:	00150593          	addi	a1,a0,1
    e8812894:	0008e517          	auipc	a0,0x8e
    e8812898:	91c50513          	addi	a0,a0,-1764 # e88a01b0 <TWO52+0x5b8>
    e881289c:	22b690ef          	jal	ra,e887c2c6 <eLIBs_printf>
    timer->link         = context;
    timer->context3     = NULL;
    timer->expiredCB    = expiredCB;
    timer->cancelCB     = cancelCB;
    timer->maxTimeOuts  = maxTimeouts;
    timer->runningTimeOut = INVALID_TIMEOUT_VAL;
    e88128a0:	57fd                	li	a5,-1
    timeBuffNextFree += sizeof(iAP2Timer_t);
    e88128a2:	06840493          	addi	s1,s0,104
    timer->cancelCB     = cancelCB;
    e88128a6:	fd44598b          	sdd	s3,s4,(s0),2,4
    timer->runningTimeOut = INVALID_TIMEOUT_VAL;
    e88128aa:	dc1c                	sw	a5,56(s0)
    timer->link         = context;
    e88128ac:	01543823          	sd	s5,16(s0)
    timer->maxTimeOuts  = maxTimeouts;
    e88128b0:	03240ea3          	sb	s2,61(s0)
    timer->nextID       = 0;
    timer->listBuffer   = timeBuffNextFree;
    e88128b4:	f804                	sd	s1,48(s0)
    timer->context3     = NULL;
    e88128b6:	00043c23          	sd	zero,24(s0)
    timer->nextID       = 0;
    e88128ba:	02040e23          	sb	zero,60(s0)
    timeBuffNextFree += iAP2ListArrayGetBuffSize(timer->maxTimeOuts, sizeof(iAP2Timeout_t));
    e88128be:	45a1                	li	a1,8
    e88128c0:	854a                	mv	a0,s2
    e88128c2:	fa4ff0ef          	jal	ra,e8812066 <iAP2ListArrayGetBuffSize>
    e88128c6:	7c05350b          	extu	a0,a0,31,0
    e88128ca:	94aa                	add	s1,s1,a0
    iAP2ListArrayInit (timer->listBuffer,
    e88128cc:	03d44583          	lbu	a1,61(s0)
    e88128d0:	7808                	ld	a0,48(s0)
    e88128d2:	4621                	li	a2,8
    e88128d4:	fa0ff0ef          	jal	ra,e8812074 <iAP2ListArrayInit>
                       timer->maxTimeOuts,
                       sizeof(iAP2Timeout_t));
    timer->timeBuff     = timeBuff;
    timer->timeBuffNextFree = timeBuffNextFree;
    e88128d8:	f894540b          	sdd	s0,s1,(s0),0,4
    ** Following are for compatibility with previous implementation...
    ** can be removed once all dependent code is fixed.
    */
    timer->origTime     = 0;
    timer->timeout      = 0;
    timer->tag          = "mainTimer";
    e88128dc:	0008f797          	auipc	a5,0x8f
    e88128e0:	ebc78793          	addi	a5,a5,-324 # e88a1798 <iAP2LinkAccessorySuspendStateEvents+0x590>
    timer->origTime     = 0;
    e88128e4:	04043023          	sd	zero,64(s0)
    timer->tag          = "mainTimer";
    e88128e8:	e43c                	sd	a5,72(s0)
    timer->tagData      = 0;
    e88128ea:	04042823          	sw	zero,80(s0)
    timer->packet       = NULL;
    e88128ee:	04043c23          	sd	zero,88(s0)
    timer->inReleaseList = FALSE;
    e88128f2:	06042023          	sw	zero,96(s0)

    return timer;
}
    e88128f6:	8522                	mv	a0,s0
    e88128f8:	70e2                	ld	ra,56(sp)
    e88128fa:	6422                	ld	s0,8(sp)
    e88128fc:	64c2                	ld	s1,16(sp)
    e88128fe:	6962                	ld	s2,24(sp)
    e8812900:	7982                	ld	s3,32(sp)
    e8812902:	7a22                	ld	s4,40(sp)
    e8812904:	7ac2                	ld	s5,48(sp)
    e8812906:	6121                	addi	sp,sp,64
    e8812908:	8082                	ret
    assert(maxTimeouts > 0);
    e881290a:	f8091be3          	bnez	s2,e88128a0 <iAP2TimeCreate+0x94>
    e881290e:	02f00593          	li	a1,47
    e8812912:	0008f517          	auipc	a0,0x8f
    e8812916:	dde50513          	addi	a0,a0,-546 # e88a16f0 <iAP2LinkAccessorySuspendStateEvents+0x4e8>
    e881291a:	25f690ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e881291e:	1dd00613          	li	a2,477
    e8812922:	b7bd                	j	e8812890 <iAP2TimeCreate+0x84>

00000000e8812924 <iAP2TimeGetContext>:
****************************************************************
*/
void* iAP2TimeGetContext (iAP2Timer_t* timer)
{
    return timer->link;
}
    e8812924:	6908                	ld	a0,16(a0)
    e8812926:	8082                	ret

00000000e8812928 <iAP2TimeCallbackAfter>:
****************************************************************
*/
uint8_t iAP2TimeCallbackAfter (iAP2Timer_t* timer,
                               uint8_t      type,
                               uint32_t     delayMs)
{
    e8812928:	7139                	addi	sp,sp,-64
    e881292a:	f826                	sd	s1,48(sp)
    e881292c:	fc06                	sd	ra,56(sp)
    e881292e:	f422                	sd	s0,40(sp)
    uint8_t result = timer->nextID++;
    e8812930:	03c54403          	lbu	s0,60(a0)
    if (result == INVALID_TIMEOUT_ID)
    e8812934:	0ff00713          	li	a4,255
{
    e8812938:	84aa                	mv	s1,a0
    if (result == INVALID_TIMEOUT_ID)
    e881293a:	04e41363          	bne	s0,a4,e8812980 <iAP2TimeCallbackAfter+0x58>
        result = timer->nextID++;
    e881293e:	4785                	li	a5,1
    e8812940:	4401                	li	s0,0
    e8812942:	02f48e23          	sb	a5,60(s1)
	timeMs = GetTickCount();
    e8812946:	e432                	sd	a2,8(sp)
    e8812948:	e02e                	sd	a1,0(sp)
    e881294a:	48f680ef          	jal	ra,e887b5d8 <GetTickCount>
    uint8_t timeoutID = _iAP2TimeGetFreeTimeoutID(timer);
    iAP2Timeout_t timeout;
    timeout.timeout = iAP2TimeGetCurTimeMs() + delayMs;
    timeout.id      = timeoutID;
    e881294e:	00810e23          	sb	s0,28(sp)
    timeout.timeout = iAP2TimeGetCurTimeMs() + delayMs;
    e8812952:	6622                	ld	a2,8(sp)
    timeout.type    = type;
    e8812954:	6582                	ld	a1,0(sp)
    timeout.timeout = iAP2TimeGetCurTimeMs() + delayMs;
    e8812956:	9e29                	addw	a2,a2,a0
    iAP2ListArrayAddItemInOrder (timer->listBuffer, &timeout, _iAP2TimeCompareTimeout);
    e8812958:	7888                	ld	a0,48(s1)
    timeout.timeout = iAP2TimeGetCurTimeMs() + delayMs;
    e881295a:	cc32                	sw	a2,24(sp)
    timeout.type    = type;
    e881295c:	00b10ea3          	sb	a1,29(sp)
    iAP2ListArrayAddItemInOrder (timer->listBuffer, &timeout, _iAP2TimeCompareTimeout);
    e8812960:	00000617          	auipc	a2,0x0
    e8812964:	dac60613          	addi	a2,a2,-596 # e881270c <_iAP2TimeCompareTimeout>
    e8812968:	082c                	addi	a1,sp,24
    e881296a:	a23ff0ef          	jal	ra,e881238c <iAP2ListArrayAddItemInOrder>
    _iAP2TimeCheckTimeouts (timer);
    e881296e:	8526                	mv	a0,s1
    e8812970:	da9ff0ef          	jal	ra,e8812718 <_iAP2TimeCheckTimeouts>
    return timeoutID;
}
    e8812974:	74c2                	ld	s1,48(sp)
    e8812976:	8522                	mv	a0,s0
    e8812978:	70e2                	ld	ra,56(sp)
    e881297a:	7422                	ld	s0,40(sp)
    e881297c:	6121                	addi	sp,sp,64
    e881297e:	8082                	ret
    e8812980:	0014079b          	addiw	a5,s0,1
    e8812984:	0ff7f793          	andi	a5,a5,255
    e8812988:	bf6d                	j	e8812942 <iAP2TimeCallbackAfter+0x1a>

00000000e881298a <iAP2TimeCancelTimer>:
**
****************************************************************
*/
void iAP2TimeCancelTimer (iAP2Timer_t* timer,
                          uint8_t      timeoutID)
{
    e881298a:	7179                	addi	sp,sp,-48
    e881298c:	ec22                	sd	s0,24(sp)
    e881298e:	f026                	sd	s1,32(sp)
    e8812990:	f406                	sd	ra,40(sp)
    e8812992:	842a                	mv	s0,a0
    e8812994:	84ae                	mv	s1,a1
    uint8_t index;
    iAP2Timeout_t temp;
    assert(timer);
    e8812996:	e11d                	bnez	a0,e88129bc <iAP2TimeCancelTimer+0x32>
    e8812998:	02f00593          	li	a1,47
    e881299c:	0008f517          	auipc	a0,0x8f
    e88129a0:	d5450513          	addi	a0,a0,-684 # e88a16f0 <iAP2LinkAccessorySuspendStateEvents+0x4e8>
    e88129a4:	1d5690ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88129a8:	00150593          	addi	a1,a0,1
    e88129ac:	26a00613          	li	a2,618
    e88129b0:	0008e517          	auipc	a0,0x8e
    e88129b4:	80050513          	addi	a0,a0,-2048 # e88a01b0 <TWO52+0x5b8>
    e88129b8:	10f690ef          	jal	ra,e887c2c6 <eLIBs_printf>
    temp.id = timeoutID;
    index = iAP2ListArrayFindItem (timer->listBuffer, &temp, _iAP2TimeCompareID);
    e88129bc:	7808                	ld	a0,48(s0)
    e88129be:	002c                	addi	a1,sp,8
    e88129c0:	00000617          	auipc	a2,0x0
    e88129c4:	d4060613          	addi	a2,a2,-704 # e8812700 <_iAP2TimeCompareID>
    temp.id = timeoutID;
    e88129c8:	00910623          	sb	s1,12(sp)
    index = iAP2ListArrayFindItem (timer->listBuffer, &temp, _iAP2TimeCompareID);
    e88129cc:	fb6ff0ef          	jal	ra,e8812182 <iAP2ListArrayFindItem>
    e88129d0:	85aa                	mv	a1,a0
    if (index != kiAP2ListArrayInvalidIndex)
    e88129d2:	0ff00793          	li	a5,255
    e88129d6:	00f50963          	beq	a0,a5,e88129e8 <iAP2TimeCancelTimer+0x5e>
    {
        iAP2ListArrayDeleteItem (timer->listBuffer, index, NULL);
    e88129da:	7808                	ld	a0,48(s0)
    e88129dc:	4601                	li	a2,0
    e88129de:	a39ff0ef          	jal	ra,e8812416 <iAP2ListArrayDeleteItem>
        _iAP2TimeCheckTimeouts (timer);
    e88129e2:	8522                	mv	a0,s0
    e88129e4:	d35ff0ef          	jal	ra,e8812718 <_iAP2TimeCheckTimeouts>
    }
}
    e88129e8:	70a2                	ld	ra,40(sp)
    e88129ea:	6462                	ld	s0,24(sp)
    e88129ec:	7482                	ld	s1,32(sp)
    e88129ee:	6145                	addi	sp,sp,48
    e88129f0:	8082                	ret

00000000e88129f2 <MainLoop>:
    int result;
    mStatus status;
	mDNSBool gotData = mDNSfalse;
    CacheEntity *gRRCache;

    gRRCache = malloc(RR_CACHE_SIZE*sizeof(CacheEntity));
    e88129f2:	6571                	lui	a0,0x1c
{
    e88129f4:	711d                	addi	sp,sp,-96
    gRRCache = malloc(RR_CACHE_SIZE*sizeof(CacheEntity));
    e88129f6:	52050513          	addi	a0,a0,1312 # 1c520 <memcmp-0xe87e3ae0>
{
    e88129fa:	ec86                	sd	ra,88(sp)
    e88129fc:	e4a6                	sd	s1,72(sp)
    e88129fe:	e0ca                	sd	s2,64(sp)
    e8812a00:	fc4e                	sd	s3,56(sp)
    e8812a02:	f852                	sd	s4,48(sp)
    e8812a04:	e8a2                	sd	s0,80(sp)
	mDNSBool gotData = mDNSfalse;
    e8812a06:	00010fa3          	sb	zero,31(sp)
    gRRCache = malloc(RR_CACHE_SIZE*sizeof(CacheEntity));
    e8812a0a:	645680ef          	jal	ra,e887b84e <my_malloc>
    e8812a0e:	e42a                	sd	a0,8(sp)

    pthread_setname_np(pthread_self(),"mdnsloop");
    e8812a10:	7eb680ef          	jal	ra,e887b9fa <pthread_self>
    e8812a14:	2501                	sext.w	a0,a0
    e8812a16:	0008f597          	auipc	a1,0x8f
    e8812a1a:	d9258593          	addi	a1,a1,-622 # e88a17a8 <iAP2LinkAccessorySuspendStateEvents+0x5a0>
    e8812a1e:	3b6690ef          	jal	ra,e887bdd4 <pthread_setname_np>
        }
        else    // otherwise call EventLoop again with 0 timemout
            ticks = 0;

        timeout.tv_sec = ticks / mDNSPlatformOneSecond;
        timeout.tv_usec = (ticks % mDNSPlatformOneSecond) * 1000000 / mDNSPlatformOneSecond;
    e8812a22:	000f4937          	lui	s2,0xf4
    status = mDNS_Init(&mDNSStorage, &PlatformStorage,
    e8812a26:	6622                	ld	a2,8(sp)
    e8812a28:	4801                	li	a6,0
    e8812a2a:	4781                	li	a5,0
    e8812a2c:	4705                	li	a4,1
    e8812a2e:	1f400693          	li	a3,500
    e8812a32:	000c6597          	auipc	a1,0xc6
    e8812a36:	99658593          	addi	a1,a1,-1642 # e88d83c8 <PlatformStorage>
    e8812a3a:	000c6517          	auipc	a0,0xc6
    e8812a3e:	99e50513          	addi	a0,a0,-1634 # e88d83d8 <mDNSStorage>
    e8812a42:	7041c0ef          	jal	ra,e882f146 <mDNS_Init>
            mDNSs32 nextTimerEvent = mDNS_Execute(&mDNSStorage);
    e8812a46:	000c6497          	auipc	s1,0xc6
    e8812a4a:	99248493          	addi	s1,s1,-1646 # e88d83d8 <mDNSStorage>
        timeout.tv_sec = ticks / mDNSPlatformOneSecond;
    e8812a4e:	000c2997          	auipc	s3,0xc2
    e8812a52:	03298993          	addi	s3,s3,50 # e88d4a80 <mDNSPlatformOneSecond>
        timeout.tv_usec = (ticks % mDNSPlatformOneSecond) * 1000000 / mDNSPlatformOneSecond;
    e8812a56:	2409091b          	addiw	s2,s2,576

		mDNSPosixRunEventLoopOnce(&mDNSStorage,&timeout,&gotData);

		if(interfaceChange)
    e8812a5a:	000c6a17          	auipc	s4,0xc6
    e8812a5e:	976a0a13          	addi	s4,s4,-1674 # e88d83d0 <interfaceChange>
        if (!gotData)
    e8812a62:	01f14783          	lbu	a5,31(sp)
            ticks = 0;
    e8812a66:	4501                	li	a0,0
        if (!gotData)
    e8812a68:	ef91                	bnez	a5,e8812a84 <MainLoop+0x92>
            mDNSs32 nextTimerEvent = mDNS_Execute(&mDNSStorage);
    e8812a6a:	8526                	mv	a0,s1
    e8812a6c:	12c1b0ef          	jal	ra,e882db98 <mDNS_Execute>
    e8812a70:	842a                	mv	s0,a0
            ticks = nextTimerEvent - mDNS_TimeNow(&mDNSStorage);
    e8812a72:	8526                	mv	a0,s1
    e8812a74:	53b0d0ef          	jal	ra,e88207ae <mDNS_TimeNow>
    e8812a78:	40a407bb          	subw	a5,s0,a0
    e8812a7c:	853e                	mv	a0,a5
    e8812a7e:	00f04363          	bgtz	a5,e8812a84 <MainLoop+0x92>
    e8812a82:	4505                	li	a0,1
        timeout.tv_sec = ticks / mDNSPlatformOneSecond;
    e8812a84:	0009a783          	lw	a5,0(s3)
		mDNSPosixRunEventLoopOnce(&mDNSStorage,&timeout,&gotData);
    e8812a88:	01f10613          	addi	a2,sp,31
    e8812a8c:	100c                	addi	a1,sp,32
        timeout.tv_sec = ticks / mDNSPlatformOneSecond;
    e8812a8e:	02f5473b          	divw	a4,a0,a5
        timeout.tv_usec = (ticks % mDNSPlatformOneSecond) * 1000000 / mDNSPlatformOneSecond;
    e8812a92:	02f5653b          	remw	a0,a0,a5
        timeout.tv_sec = ticks / mDNSPlatformOneSecond;
    e8812a96:	f03a                	sd	a4,32(sp)
        timeout.tv_usec = (ticks % mDNSPlatformOneSecond) * 1000000 / mDNSPlatformOneSecond;
    e8812a98:	0325053b          	mulw	a0,a0,s2
    e8812a9c:	02f5453b          	divw	a0,a0,a5
    e8812aa0:	f42a                	sd	a0,40(sp)
		mDNSPosixRunEventLoopOnce(&mDNSStorage,&timeout,&gotData);
    e8812aa2:	8526                	mv	a0,s1
    e8812aa4:	75f1d0ef          	jal	ra,e8830a02 <mDNSPosixRunEventLoopOnce>
		if(interfaceChange)
    e8812aa8:	000a4783          	lbu	a5,0(s4)
    e8812aac:	dbdd                	beqz	a5,e8812a62 <MainLoop+0x70>
		{
			interfaceChange = 0;
			mDNSPlatformPosixRefreshInterfaceList(&mDNSStorage);
    e8812aae:	8526                	mv	a0,s1
			interfaceChange = 0;
    e8812ab0:	000c6797          	auipc	a5,0xc6
    e8812ab4:	92078023          	sb	zero,-1760(a5) # e88d83d0 <interfaceChange>
			mDNSPlatformPosixRefreshInterfaceList(&mDNSStorage);
    e8812ab8:	2e91d0ef          	jal	ra,e88305a0 <mDNSPlatformPosixRefreshInterfaceList>
	{
    e8812abc:	b75d                	j	e8812a62 <MainLoop+0x70>

00000000e8812abe <lib_dns_init>:
}

void lib_dns_init(void)
// The program's main entry point.  The program does a trivial
// mDNS query, looking for all AFP servers in the local domain.
{
    e8812abe:	1101                	addi	sp,sp,-32
	printf("lib_dns_init\r\n");
    e8812ac0:	0008f517          	auipc	a0,0x8f
    e8812ac4:	cf850513          	addi	a0,a0,-776 # e88a17b8 <iAP2LinkAccessorySuspendStateEvents+0x5b0>
{
    e8812ac8:	ec06                	sd	ra,24(sp)
	printf("lib_dns_init\r\n");
    e8812aca:	7fc690ef          	jal	ra,e887c2c6 <eLIBs_printf>
	u32_t tid = 0;
    e8812ace:	c202                	sw	zero,4(sp)
	pthread_attr_t attr;
	pthread_attr_init(&attr);
    e8812ad0:	0028                	addi	a0,sp,8
    e8812ad2:	741680ef          	jal	ra,e887ba12 <pthread_attr_init>
	pthread_attr_setstacksize(&attr,0x8000);
    e8812ad6:	65a1                	lui	a1,0x8
    e8812ad8:	0028                	addi	a0,sp,8
    e8812ada:	751680ef          	jal	ra,e887ba2a <pthread_attr_setstacksize>
	pthread_create( &tid, &attr, MainLoop, NULL );
    e8812ade:	002c                	addi	a1,sp,8
    e8812ae0:	4681                	li	a3,0
    e8812ae2:	00000617          	auipc	a2,0x0
    e8812ae6:	f1060613          	addi	a2,a2,-240 # e88129f2 <MainLoop>
    e8812aea:	0048                	addi	a0,sp,4
    e8812aec:	759680ef          	jal	ra,e887ba44 <pthread_create>
	pthread_attr_destroy(&attr);
    e8812af0:	0028                	addi	a0,sp,8
    e8812af2:	735680ef          	jal	ra,e887ba26 <pthread_attr_destroy>
}
    e8812af6:	60e2                	ld	ra,24(sp)
    e8812af8:	6105                	addi	sp,sp,32
    e8812afa:	8082                	ret

00000000e8812afc <lib_dns_net_change>:

void lib_dns_net_change(void)
{
    e8812afc:	1141                	addi	sp,sp,-16
	printf("lib_dns_net_change\r\n");
    e8812afe:	0008f517          	auipc	a0,0x8f
    e8812b02:	cca50513          	addi	a0,a0,-822 # e88a17c8 <iAP2LinkAccessorySuspendStateEvents+0x5c0>
{
    e8812b06:	e406                	sd	ra,8(sp)
	printf("lib_dns_net_change\r\n");
    e8812b08:	7be690ef          	jal	ra,e887c2c6 <eLIBs_printf>

	interfaceChange = 1;
    e8812b0c:	4785                	li	a5,1
	NotifyCarplayAction();
}
    e8812b0e:	60a2                	ld	ra,8(sp)
	interfaceChange = 1;
    e8812b10:	000c6717          	auipc	a4,0xc6
    e8812b14:	8cf70023          	sb	a5,-1856(a4) # e88d83d0 <interfaceChange>
}
    e8812b18:	0141                	addi	sp,sp,16
	NotifyCarplayAction();
    e8812b1a:	72f1c06f          	j	e882fa48 <NotifyCarplayAction>

00000000e8812b1e <AlgCreate>:
    EncAlgFuncs[alg] = func;
    return mStatus_NoError;
}

mDNSexport AlgContext *AlgCreate(AlgType type, mDNSu8 alg)
{
    e8812b1e:	7179                	addi	sp,sp,-48
    e8812b20:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8812b24:	f406                	sd	ra,40(sp)
    e8812b26:	f04a                	sd	s2,32(sp)
    e8812b28:	84aa                	mv	s1,a0
    AlgFuncs *func = mDNSNULL;
    AlgContext *ctx;

    if (type == CRYPTO_ALG)
    e8812b2a:	ed05                	bnez	a0,e8812b62 <AlgCreate+0x44>
    {
        if (alg >= CRYPTO_ALG_MAX) return mDNSNULL;
    e8812b2c:	47a9                	li	a5,10
    e8812b2e:	00b7f463          	bgeu	a5,a1,e8812b36 <AlgCreate+0x18>
            ctx->type = type;
            return ctx;
        }
        mDNSPlatformMemFree(ctx);
    }
    return mDNSNULL;
    e8812b32:	4401                	li	s0,0
    e8812b34:	a8b5                	j	e8812bb0 <AlgCreate+0x92>
        func = CryptoAlgFuncs[alg];
    e8812b36:	000d1797          	auipc	a5,0xd1
    e8812b3a:	f2278793          	addi	a5,a5,-222 # e88e3a58 <CryptoAlgFuncs>
        func = EncAlgFuncs[alg];
    e8812b3e:	66b7c90b          	lrd	s2,a5,a1,3
    if (!func)
    e8812b42:	04091563          	bnez	s2,e8812b8c <AlgCreate+0x6e>
        LogInfo("AlgCreate: func is NULL");
    e8812b46:	000c2797          	auipc	a5,0xc2
    e8812b4a:	f2e78793          	addi	a5,a5,-210 # e88d4a74 <mDNS_LoggingEnabled>
    e8812b4e:	439c                	lw	a5,0(a5)
    e8812b50:	d3ed                	beqz	a5,e8812b32 <AlgCreate+0x14>
    e8812b52:	0008f597          	auipc	a1,0x8f
    e8812b56:	cae58593          	addi	a1,a1,-850 # e88a1800 <iAP2LinkAccessorySuspendStateEvents+0x5f8>
    e8812b5a:	450d                	li	a0,3
    e8812b5c:	1511c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8812b60:	bfc9                	j	e8812b32 <AlgCreate+0x14>
    else if (type == DIGEST_ALG)
    e8812b62:	4785                	li	a5,1
    e8812b64:	00f51a63          	bne	a0,a5,e8812b78 <AlgCreate+0x5a>
        if (alg >= DIGEST_TYPE_MAX) return mDNSNULL;
    e8812b68:	4789                	li	a5,2
    e8812b6a:	fcb7e4e3          	bltu	a5,a1,e8812b32 <AlgCreate+0x14>
        func = DigestAlgFuncs[alg];
    e8812b6e:	000d1797          	auipc	a5,0xd1
    e8812b72:	f4278793          	addi	a5,a5,-190 # e88e3ab0 <DigestAlgFuncs>
    e8812b76:	b7e1                	j	e8812b3e <AlgCreate+0x20>
    else if (type == ENC_ALG)
    e8812b78:	4789                	li	a5,2
    e8812b7a:	fcf516e3          	bne	a0,a5,e8812b46 <AlgCreate+0x28>
        if (alg >= ENC_ALG_MAX) return mDNSNULL;
    e8812b7e:	fab56ae3          	bltu	a0,a1,e8812b32 <AlgCreate+0x14>
        func = EncAlgFuncs[alg];
    e8812b82:	000d1797          	auipc	a5,0xd1
    e8812b86:	f4678793          	addi	a5,a5,-186 # e88e3ac8 <EncAlgFuncs>
    e8812b8a:	bf55                	j	e8812b3e <AlgCreate+0x20>
    if (func->Create)
    e8812b8c:	00093783          	ld	a5,0(s2) # f4000 <memcmp-0xe870c000>
    e8812b90:	e42e                	sd	a1,8(sp)
    e8812b92:	d3c5                	beqz	a5,e8812b32 <AlgCreate+0x14>
        ctx = mDNSPlatformMemAllocate(sizeof(AlgContext));
    e8812b94:	4541                	li	a0,16
    e8812b96:	6cc1d0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8812b9a:	842a                	mv	s0,a0
        if (!ctx) return mDNSNULL;
    e8812b9c:	d959                	beqz	a0,e8812b32 <AlgCreate+0x14>
        ctx->alg = alg;
    e8812b9e:	65a2                	ld	a1,8(sp)
    e8812ba0:	00b504a3          	sb	a1,9(a0)
        err = func->Create(ctx);
    e8812ba4:	00093783          	ld	a5,0(s2)
    e8812ba8:	9782                	jalr	a5
        if (err == mStatus_NoError)
    e8812baa:	e911                	bnez	a0,e8812bbe <AlgCreate+0xa0>
            ctx->type = type;
    e8812bac:	00940423          	sb	s1,8(s0)
}
    e8812bb0:	8522                	mv	a0,s0
    e8812bb2:	70a2                	ld	ra,40(sp)
    e8812bb4:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8812bb8:	7902                	ld	s2,32(sp)
    e8812bba:	6145                	addi	sp,sp,48
    e8812bbc:	8082                	ret
        mDNSPlatformMemFree(ctx);
    e8812bbe:	8522                	mv	a0,s0
    e8812bc0:	6c21d0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    e8812bc4:	b7bd                	j	e8812b32 <AlgCreate+0x14>

00000000e8812bc6 <AlgDestroy>:

mDNSexport mStatus AlgDestroy(AlgContext *ctx)
{
    e8812bc6:	1141                	addi	sp,sp,-16
    e8812bc8:	e022                	sd	s0,0(sp)
    e8812bca:	e406                	sd	ra,8(sp)
    AlgFuncs *func = mDNSNULL;

    if (ctx->type == CRYPTO_ALG)
    e8812bcc:	00854783          	lbu	a5,8(a0)
{
    e8812bd0:	842a                	mv	s0,a0
    if (ctx->type == CRYPTO_ALG)
    e8812bd2:	eb95                	bnez	a5,e8812c06 <AlgDestroy+0x40>
        func = CryptoAlgFuncs[ctx->alg];
    e8812bd4:	00954703          	lbu	a4,9(a0)
    e8812bd8:	000d1797          	auipc	a5,0xd1
    e8812bdc:	e8078793          	addi	a5,a5,-384 # e88e3a58 <CryptoAlgFuncs>
    else if (ctx->type == DIGEST_ALG)
        func = DigestAlgFuncs[ctx->alg];
    else if (ctx->type == ENC_ALG)
        func = EncAlgFuncs[ctx->alg];
    e8812be0:	66e7c78b          	lrd	a5,a5,a4,3

    if (!func)
    e8812be4:	e7a9                	bnez	a5,e8812c2e <AlgDestroy+0x68>
    {
        LogMsg("AlgDestroy: ERROR!! func is NULL");
    e8812be6:	0008f597          	auipc	a1,0x8f
    e8812bea:	c3258593          	addi	a1,a1,-974 # e88a1818 <iAP2LinkAccessorySuspendStateEvents+0x610>
    e8812bee:	4501                	li	a0,0
    e8812bf0:	0bd1c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNSPlatformMemFree(ctx);
    e8812bf4:	8522                	mv	a0,s0
    e8812bf6:	68c1d0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
        return mStatus_BadParamErr;
    e8812bfa:	7541                	lui	a0,0xffff0
    e8812bfc:	1571                	addi	a0,a0,-4
    if (func->Destroy)
        func->Destroy(ctx);

    mDNSPlatformMemFree(ctx);
    return mStatus_NoError;
}
    e8812bfe:	60a2                	ld	ra,8(sp)
    e8812c00:	6402                	ld	s0,0(sp)
    e8812c02:	0141                	addi	sp,sp,16
    e8812c04:	8082                	ret
    else if (ctx->type == DIGEST_ALG)
    e8812c06:	4705                	li	a4,1
    e8812c08:	00e79963          	bne	a5,a4,e8812c1a <AlgDestroy+0x54>
        func = DigestAlgFuncs[ctx->alg];
    e8812c0c:	00954703          	lbu	a4,9(a0) # ffffffffffff0009 <__DRAM0_INF_BASE+0xffffffff00000009>
    e8812c10:	000d1797          	auipc	a5,0xd1
    e8812c14:	ea078793          	addi	a5,a5,-352 # e88e3ab0 <DigestAlgFuncs>
    e8812c18:	b7e1                	j	e8812be0 <AlgDestroy+0x1a>
    else if (ctx->type == ENC_ALG)
    e8812c1a:	4709                	li	a4,2
    e8812c1c:	fce795e3          	bne	a5,a4,e8812be6 <AlgDestroy+0x20>
        func = EncAlgFuncs[ctx->alg];
    e8812c20:	00954703          	lbu	a4,9(a0)
    e8812c24:	000d1797          	auipc	a5,0xd1
    e8812c28:	ea478793          	addi	a5,a5,-348 # e88e3ac8 <EncAlgFuncs>
    e8812c2c:	bf55                	j	e8812be0 <AlgDestroy+0x1a>
    if (func->Destroy)
    e8812c2e:	679c                	ld	a5,8(a5)
    e8812c30:	c399                	beqz	a5,e8812c36 <AlgDestroy+0x70>
        func->Destroy(ctx);
    e8812c32:	8522                	mv	a0,s0
    e8812c34:	9782                	jalr	a5
    mDNSPlatformMemFree(ctx);
    e8812c36:	8522                	mv	a0,s0
    e8812c38:	64a1d0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    return mStatus_NoError;
    e8812c3c:	4501                	li	a0,0
    e8812c3e:	b7c1                	j	e8812bfe <AlgDestroy+0x38>

00000000e8812c40 <AlgLength>:

mDNSexport mDNSu32 AlgLength(AlgContext *ctx)
{
    AlgFuncs *func = mDNSNULL;

    if (ctx->type == CRYPTO_ALG)
    e8812c40:	00854783          	lbu	a5,8(a0)
    e8812c44:	e79d                	bnez	a5,e8812c72 <AlgLength+0x32>
        func = CryptoAlgFuncs[ctx->alg];
    e8812c46:	00954703          	lbu	a4,9(a0)
    e8812c4a:	000d1797          	auipc	a5,0xd1
    e8812c4e:	e0e78793          	addi	a5,a5,-498 # e88e3a58 <CryptoAlgFuncs>
    else if (ctx->type == DIGEST_ALG)
        func = DigestAlgFuncs[ctx->alg];
    else if (ctx->type == ENC_ALG)
        func = EncAlgFuncs[ctx->alg];
    e8812c52:	66e7c78b          	lrd	a5,a5,a4,3

    // This should never happen as AlgCreate would have failed
    if (!func)
    e8812c56:	e3b1                	bnez	a5,e8812c9a <AlgLength+0x5a>
{
    e8812c58:	1141                	addi	sp,sp,-16
    {
        LogMsg("AlgLength: ERROR!! func is NULL");
    e8812c5a:	4501                	li	a0,0
    e8812c5c:	0008f597          	auipc	a1,0x8f
    e8812c60:	c0458593          	addi	a1,a1,-1020 # e88a1860 <iAP2LinkAccessorySuspendStateEvents+0x658>
{
    e8812c64:	e406                	sd	ra,8(sp)
        LogMsg("AlgLength: ERROR!! func is NULL");
    e8812c66:	0471c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>

    if (func->Length)
        return (func->Length(ctx));
    else
        return 0;
}
    e8812c6a:	60a2                	ld	ra,8(sp)
    e8812c6c:	4501                	li	a0,0
    e8812c6e:	0141                	addi	sp,sp,16
    e8812c70:	8082                	ret
    else if (ctx->type == DIGEST_ALG)
    e8812c72:	4705                	li	a4,1
    e8812c74:	00e79963          	bne	a5,a4,e8812c86 <AlgLength+0x46>
        func = DigestAlgFuncs[ctx->alg];
    e8812c78:	00954703          	lbu	a4,9(a0)
    e8812c7c:	000d1797          	auipc	a5,0xd1
    e8812c80:	e3478793          	addi	a5,a5,-460 # e88e3ab0 <DigestAlgFuncs>
    e8812c84:	b7f9                	j	e8812c52 <AlgLength+0x12>
    else if (ctx->type == ENC_ALG)
    e8812c86:	4709                	li	a4,2
    e8812c88:	fce798e3          	bne	a5,a4,e8812c58 <AlgLength+0x18>
        func = EncAlgFuncs[ctx->alg];
    e8812c8c:	00954703          	lbu	a4,9(a0)
    e8812c90:	000d1797          	auipc	a5,0xd1
    e8812c94:	e3878793          	addi	a5,a5,-456 # e88e3ac8 <EncAlgFuncs>
    e8812c98:	bf6d                	j	e8812c52 <AlgLength+0x12>
    if (func->Length)
    e8812c9a:	0107b303          	ld	t1,16(a5)
    e8812c9e:	00030363          	beqz	t1,e8812ca4 <AlgLength+0x64>
        return (func->Length(ctx));
    e8812ca2:	8302                	jr	t1
}
    e8812ca4:	4501                	li	a0,0
    e8812ca6:	8082                	ret

00000000e8812ca8 <AlgAdd>:

mDNSexport mStatus AlgAdd(AlgContext *ctx, const void *data, mDNSu32 len)
{
    AlgFuncs *func = mDNSNULL;

    if (ctx->type == CRYPTO_ALG)
    e8812ca8:	00854783          	lbu	a5,8(a0)
    e8812cac:	eb85                	bnez	a5,e8812cdc <AlgAdd+0x34>
        func = CryptoAlgFuncs[ctx->alg];
    e8812cae:	00954703          	lbu	a4,9(a0)
    e8812cb2:	000d1797          	auipc	a5,0xd1
    e8812cb6:	da678793          	addi	a5,a5,-602 # e88e3a58 <CryptoAlgFuncs>
    else if (ctx->type == DIGEST_ALG)
        func = DigestAlgFuncs[ctx->alg];
    else if (ctx->type == ENC_ALG)
        func = EncAlgFuncs[ctx->alg];
    e8812cba:	66e7c78b          	lrd	a5,a5,a4,3

    // This should never happen as AlgCreate would have failed
    if (!func)
    e8812cbe:	e3b9                	bnez	a5,e8812d04 <AlgAdd+0x5c>
{
    e8812cc0:	1141                	addi	sp,sp,-16
    {
        LogMsg("AlgAdd: ERROR!! func is NULL");
    e8812cc2:	4501                	li	a0,0
    e8812cc4:	0008f597          	auipc	a1,0x8f
    e8812cc8:	b1c58593          	addi	a1,a1,-1252 # e88a17e0 <iAP2LinkAccessorySuspendStateEvents+0x5d8>
{
    e8812ccc:	e406                	sd	ra,8(sp)
        LogMsg("AlgAdd: ERROR!! func is NULL");
    e8812cce:	7de1c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>

    if (func->Add)
        return (func->Add(ctx, data, len));
    else
        return mStatus_BadParamErr;
}
    e8812cd2:	60a2                	ld	ra,8(sp)
        return mStatus_BadParamErr;
    e8812cd4:	7541                	lui	a0,0xffff0
    e8812cd6:	1571                	addi	a0,a0,-4
}
    e8812cd8:	0141                	addi	sp,sp,16
    e8812cda:	8082                	ret
    else if (ctx->type == DIGEST_ALG)
    e8812cdc:	4705                	li	a4,1
    e8812cde:	00e79963          	bne	a5,a4,e8812cf0 <AlgAdd+0x48>
        func = DigestAlgFuncs[ctx->alg];
    e8812ce2:	00954703          	lbu	a4,9(a0) # ffffffffffff0009 <__DRAM0_INF_BASE+0xffffffff00000009>
    e8812ce6:	000d1797          	auipc	a5,0xd1
    e8812cea:	dca78793          	addi	a5,a5,-566 # e88e3ab0 <DigestAlgFuncs>
    e8812cee:	b7f1                	j	e8812cba <AlgAdd+0x12>
    else if (ctx->type == ENC_ALG)
    e8812cf0:	4709                	li	a4,2
    e8812cf2:	fce797e3          	bne	a5,a4,e8812cc0 <AlgAdd+0x18>
        func = EncAlgFuncs[ctx->alg];
    e8812cf6:	00954703          	lbu	a4,9(a0)
    e8812cfa:	000d1797          	auipc	a5,0xd1
    e8812cfe:	dce78793          	addi	a5,a5,-562 # e88e3ac8 <EncAlgFuncs>
    e8812d02:	bf65                	j	e8812cba <AlgAdd+0x12>
    if (func->Add)
    e8812d04:	0187b303          	ld	t1,24(a5)
    e8812d08:	00030363          	beqz	t1,e8812d0e <AlgAdd+0x66>
        return (func->Add(ctx, data, len));
    e8812d0c:	8302                	jr	t1
        return mStatus_BadParamErr;
    e8812d0e:	7541                	lui	a0,0xffff0
    e8812d10:	1571                	addi	a0,a0,-4
}
    e8812d12:	8082                	ret

00000000e8812d14 <AlgFinal>:

mDNSexport mStatus AlgFinal(AlgContext *ctx, void *data, mDNSu32 len)
{
    AlgFuncs *func = mDNSNULL;

    if (ctx->type == CRYPTO_ALG)
    e8812d14:	00854783          	lbu	a5,8(a0) # ffffffffffff0008 <__DRAM0_INF_BASE+0xffffffff00000008>
    e8812d18:	e79d                	bnez	a5,e8812d46 <AlgFinal+0x32>
        func = CryptoAlgFuncs[ctx->alg];
    e8812d1a:	00954703          	lbu	a4,9(a0)
    e8812d1e:	000d1797          	auipc	a5,0xd1
    e8812d22:	d3a78793          	addi	a5,a5,-710 # e88e3a58 <CryptoAlgFuncs>
    else if (ctx->type == DIGEST_ALG)
        func = DigestAlgFuncs[ctx->alg];
    else if (ctx->type == ENC_ALG)
        func = EncAlgFuncs[ctx->alg];
    e8812d26:	66e7c78b          	lrd	a5,a5,a4,3

    // This should never happen as AlgCreate would have failed
    if (!func)
    e8812d2a:	e3b1                	bnez	a5,e8812d6e <AlgFinal+0x5a>
{
    e8812d2c:	1141                	addi	sp,sp,-16
    {
        LogMsg("AlgEncode: ERROR!! func is NULL");
    e8812d2e:	4501                	li	a0,0
    e8812d30:	0008f597          	auipc	a1,0x8f
    e8812d34:	b1058593          	addi	a1,a1,-1264 # e88a1840 <iAP2LinkAccessorySuspendStateEvents+0x638>
{
    e8812d38:	e406                	sd	ra,8(sp)
        LogMsg("AlgEncode: ERROR!! func is NULL");
    e8812d3a:	7721c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>

    if (func->Final)
        return (func->Final(ctx, data, len));
    else
        return mStatus_BadParamErr;
}
    e8812d3e:	60a2                	ld	ra,8(sp)
        return mDNSNULL;
    e8812d40:	4501                	li	a0,0
}
    e8812d42:	0141                	addi	sp,sp,16
    e8812d44:	8082                	ret
    else if (ctx->type == DIGEST_ALG)
    e8812d46:	4705                	li	a4,1
    e8812d48:	00e79963          	bne	a5,a4,e8812d5a <AlgFinal+0x46>
        func = DigestAlgFuncs[ctx->alg];
    e8812d4c:	00954703          	lbu	a4,9(a0)
    e8812d50:	000d1797          	auipc	a5,0xd1
    e8812d54:	d6078793          	addi	a5,a5,-672 # e88e3ab0 <DigestAlgFuncs>
    e8812d58:	b7f9                	j	e8812d26 <AlgFinal+0x12>
    else if (ctx->type == ENC_ALG)
    e8812d5a:	4709                	li	a4,2
    e8812d5c:	fce798e3          	bne	a5,a4,e8812d2c <AlgFinal+0x18>
        func = EncAlgFuncs[ctx->alg];
    e8812d60:	00954703          	lbu	a4,9(a0)
    e8812d64:	000d1797          	auipc	a5,0xd1
    e8812d68:	d6478793          	addi	a5,a5,-668 # e88e3ac8 <EncAlgFuncs>
    e8812d6c:	bf6d                	j	e8812d26 <AlgFinal+0x12>
    if (func->Final)
    e8812d6e:	0307b303          	ld	t1,48(a5)
    e8812d72:	00030363          	beqz	t1,e8812d78 <AlgFinal+0x64>
        return (func->Final(ctx, data, len));
    e8812d76:	8302                	jr	t1
        return mStatus_BadParamErr;
    e8812d78:	7541                	lui	a0,0xffff0
    e8812d7a:	1571                	addi	a0,a0,-4
}
    e8812d7c:	8082                	ret

00000000e8812d7e <putVal32>:
mDNSlocal mDNSu8 *putVal32(mDNSu8 *ptr, mDNSu32 val)
{
    ptr[0] = (mDNSu8)((val >> 24) & 0xFF);
    ptr[1] = (mDNSu8)((val >> 16) & 0xFF);
    ptr[2] = (mDNSu8)((val >>  8) & 0xFF);
    ptr[3] = (mDNSu8)((val      ) & 0xFF);
    e8812d7e:	9005958b          	revw	a1,a1
    ptr[0] = (mDNSu8)((val >> 24) & 0xFF);
    e8812d82:	5845558b          	swia	a1,(a0),4,0
    return ptr + sizeof(mDNSu32);
}
    e8812d86:	8082                	ret

00000000e8812d88 <SanityCheckBitMap>:
    return(ptr + pktrdlength);
}

// Sanity check whether the NSEC/NSEC3 bitmap is good
mDNSlocal mDNSu8 *SanityCheckBitMap(const mDNSu8 *bmap, const mDNSu8 *end, int len)
{
    e8812d88:	1141                	addi	sp,sp,-16
    e8812d8a:	e022                	sd	s0,0(sp)
    e8812d8c:	e406                	sd	ra,8(sp)
    int win, wlen;

    while (bmap < end)
    e8812d8e:	842a                	mv	s0,a0
    {
        if (len < 3)
    e8812d90:	4689                	li	a3,2
        }

        win = *bmap++;
        wlen = *bmap++;
        len -= 2;
        if (len < wlen || wlen < 1 || wlen > 32)
    e8812d92:	02000513          	li	a0,32
    while (bmap < end)
    e8812d96:	00b47f63          	bgeu	s0,a1,e8812db4 <SanityCheckBitMap+0x2c>
        if (len < 3)
    e8812d9a:	02c6c263          	blt	a3,a2,e8812dbe <SanityCheckBitMap+0x36>
            LogInfo("SanityCheckBitMap: invalid length %d", len);
    e8812d9e:	000c2797          	auipc	a5,0xc2
    e8812da2:	cd678793          	addi	a5,a5,-810 # e88d4a74 <mDNS_LoggingEnabled>
    e8812da6:	439c                	lw	a5,0(a5)
            return mDNSNULL;
    e8812da8:	4401                	li	s0,0
            LogInfo("SanityCheckBitMap: invalid length %d", len);
    e8812daa:	00090597          	auipc	a1,0x90
    e8812dae:	a4658593          	addi	a1,a1,-1466 # e88a27f0 <SSHPort+0x68>
    e8812db2:	ef8d                	bnez	a5,e8812dec <SanityCheckBitMap+0x64>

        bmap += wlen;
        len -= wlen;
    }
    return (mDNSu8 *)bmap;
}
    e8812db4:	8522                	mv	a0,s0
    e8812db6:	60a2                	ld	ra,8(sp)
    e8812db8:	6402                	ld	s0,0(sp)
    e8812dba:	0141                	addi	sp,sp,16
    e8812dbc:	8082                	ret
        wlen = *bmap++;
    e8812dbe:	00240813          	addi	a6,s0,2
    e8812dc2:	00144403          	lbu	s0,1(s0)
        len -= 2;
    e8812dc6:	3679                	addiw	a2,a2,-2
        wlen = *bmap++;
    e8812dc8:	8722                	mv	a4,s0
        if (len < wlen || wlen < 1 || wlen > 32)
    e8812dca:	00864563          	blt	a2,s0,e8812dd4 <SanityCheckBitMap+0x4c>
    e8812dce:	c019                	beqz	s0,e8812dd4 <SanityCheckBitMap+0x4c>
    e8812dd0:	02855263          	bge	a0,s0,e8812df4 <SanityCheckBitMap+0x6c>
            LogInfo("SanityCheckBitMap: invalid window length %d", wlen);
    e8812dd4:	000c2797          	auipc	a5,0xc2
    e8812dd8:	ca078793          	addi	a5,a5,-864 # e88d4a74 <mDNS_LoggingEnabled>
    e8812ddc:	439c                	lw	a5,0(a5)
            return mDNSNULL;
    e8812dde:	4401                	li	s0,0
            LogInfo("SanityCheckBitMap: invalid window length %d", wlen);
    e8812de0:	dbf1                	beqz	a5,e8812db4 <SanityCheckBitMap+0x2c>
    e8812de2:	863a                	mv	a2,a4
    e8812de4:	00090597          	auipc	a1,0x90
    e8812de8:	a3458593          	addi	a1,a1,-1484 # e88a2818 <SSHPort+0x90>
    e8812dec:	450d                	li	a0,3
    e8812dee:	6be1c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8812df2:	b7c9                	j	e8812db4 <SanityCheckBitMap+0x2c>
        bmap += wlen;
    e8812df4:	9442                	add	s0,s0,a6
        len -= wlen;
    e8812df6:	9e19                	subw	a2,a2,a4
    e8812df8:	bf79                	j	e8812d96 <SanityCheckBitMap+0xe>

00000000e8812dfa <mDNSv4AddrIsRFC1918>:
    return ((addr->b[0] == 10) ||                                 // 10/8 prefix
    e8812dfa:	00054783          	lbu	a5,0(a0) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
            (addr->b[0] == 172 && (addr->b[1] & 0xF0) == 16) ||   // 172.16/12
    e8812dfe:	4729                	li	a4,10
    e8812e00:	02e78863          	beq	a5,a4,e8812e30 <mDNSv4AddrIsRFC1918+0x36>
    return ((addr->b[0] == 10) ||                                 // 10/8 prefix
    e8812e04:	0ac00713          	li	a4,172
    e8812e08:	00e79a63          	bne	a5,a4,e8812e1c <mDNSv4AddrIsRFC1918+0x22>
            (addr->b[0] == 172 && (addr->b[1] & 0xF0) == 16) ||   // 172.16/12
    e8812e0c:	00154703          	lbu	a4,1(a0)
    e8812e10:	46c1                	li	a3,16
    e8812e12:	4785                	li	a5,1
    e8812e14:	0f077713          	andi	a4,a4,240
    e8812e18:	00d70a63          	beq	a4,a3,e8812e2c <mDNSv4AddrIsRFC1918+0x32>
    e8812e1c:	00055783          	lhu	a5,0(a0)
    e8812e20:	652d                	lui	a0,0xb
    e8812e22:	8c050513          	addi	a0,a0,-1856 # a8c0 <memcmp-0xe87f5740>
    e8812e26:	8f89                	sub	a5,a5,a0
    e8812e28:	0017b793          	seqz	a5,a5
}
    e8812e2c:	853e                	mv	a0,a5
    e8812e2e:	8082                	ret
            (addr->b[0] == 172 && (addr->b[1] & 0xF0) == 16) ||   // 172.16/12
    e8812e30:	4785                	li	a5,1
    e8812e32:	bfed                	j	e8812e2c <mDNSv4AddrIsRFC1918+0x32>

00000000e8812e34 <mDNSAddrMapIPv4toIPv6>:
    out->w[4] = 0;
    e8812e34:	77c1                	lui	a5,0xffff0
    out->l[0] = 0;
    e8812e36:	0005b023          	sd	zero,0(a1)
    out->w[4] = 0;
    e8812e3a:	c59c                	sw	a5,8(a1)
    out->b[12] = in->b[0];
    e8812e3c:	00054783          	lbu	a5,0(a0)
    e8812e40:	00f58623          	sb	a5,12(a1)
    out->b[13] = in->b[1];
    e8812e44:	00154783          	lbu	a5,1(a0)
    e8812e48:	00f586a3          	sb	a5,13(a1)
    out->b[14] = in->b[2];
    e8812e4c:	00254783          	lbu	a5,2(a0)
    e8812e50:	00f58723          	sb	a5,14(a1)
    out->b[15] = in->b[3];
    e8812e54:	00354783          	lbu	a5,3(a0)
    e8812e58:	00f587a3          	sb	a5,15(a1)
}
    e8812e5c:	8082                	ret

00000000e8812e5e <mDNSAddrIPv4FromMappedIPv6>:
    if (in->l[0] != 0 || in->l[1] != 0 || in->w[4] != 0 || in->w[5] != 0xffff)
    e8812e5e:	411c                	lw	a5,0(a0)
    e8812e60:	ef81                	bnez	a5,e8812e78 <mDNSAddrIPv4FromMappedIPv6+0x1a>
    e8812e62:	4158                	lw	a4,4(a0)
    e8812e64:	eb01                	bnez	a4,e8812e74 <mDNSAddrIPv4FromMappedIPv6+0x16>
    e8812e66:	4514                	lw	a3,8(a0)
    e8812e68:	7741                	lui	a4,0xffff0
    e8812e6a:	00e69563          	bne	a3,a4,e8812e74 <mDNSAddrIPv4FromMappedIPv6+0x16>
    out->NotAnInteger = in->l[3];
    e8812e6e:	455c                	lw	a5,12(a0)
    e8812e70:	c19c                	sw	a5,0(a1)
    return mDNStrue;
    e8812e72:	4785                	li	a5,1
}
    e8812e74:	853e                	mv	a0,a5
    e8812e76:	8082                	ret
        return mDNSfalse;
    e8812e78:	4781                	li	a5,0
    e8812e7a:	bfed                	j	e8812e74 <mDNSAddrIPv4FromMappedIPv6+0x16>

00000000e8812e7c <GetFirstActiveInterface>:
    while (intf && !intf->InterfaceActive) intf = intf->next;
    e8812e7c:	c501                	beqz	a0,e8812e84 <GetFirstActiveInterface+0x8>
    e8812e7e:	00854783          	lbu	a5,8(a0)
    e8812e82:	c391                	beqz	a5,e8812e86 <GetFirstActiveInterface+0xa>
}
    e8812e84:	8082                	ret
    while (intf && !intf->InterfaceActive) intf = intf->next;
    e8812e86:	6108                	ld	a0,0(a0)
    e8812e88:	bfd5                	j	e8812e7c <GetFirstActiveInterface>

00000000e8812e8a <GetNextActiveInterfaceID>:
{
    e8812e8a:	1141                	addi	sp,sp,-16
    e8812e8c:	e406                	sd	ra,8(sp)
    const NetworkInterfaceInfo *next = GetFirstActiveInterface(intf->next);
    e8812e8e:	6108                	ld	a0,0(a0)
    e8812e90:	fedff0ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    if (next) return(next->InterfaceID);else return(mDNSNULL);
    e8812e94:	c509                	beqz	a0,e8812e9e <GetNextActiveInterfaceID+0x14>
    e8812e96:	6789                	lui	a5,0x2
    e8812e98:	953e                	add	a0,a0,a5
    e8812e9a:	9f053503          	ld	a0,-1552(a0)
}
    e8812e9e:	60a2                	ld	ra,8(sp)
    e8812ea0:	0141                	addi	sp,sp,16
    e8812ea2:	8082                	ret

00000000e8812ea4 <swap32>:
    return (mDNSu32)((mDNSu32)ptr[0] << 24 | (mDNSu32)ptr[1] << 16 | (mDNSu32)ptr[2] << 8 | ptr[3]);
    e8812ea4:	9005150b          	revw	a0,a0
}
    e8812ea8:	8082                	ret

00000000e8812eaa <swap16>:
    return (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]);
    e8812eaa:	0ff57793          	andi	a5,a0,255
    e8812eae:	0087979b          	slliw	a5,a5,0x8
    e8812eb2:	5c85350b          	extu	a0,a0,23,8
}
    e8812eb6:	8d5d                	or	a0,a0,a5
    e8812eb8:	8082                	ret

00000000e8812eba <NSEC3Parse>:
	const RDataBody2 *const rdb = (RDataBody2 *)rr->rdata->u.data;
    e8812eba:	02853803          	ld	a6,40(a0)
    mDNSu8 *p = (mDNSu8 *)&nsec3->salt;
    e8812ebe:	00980893          	addi	a7,a6,9
    if (salt)
    e8812ec2:	c981                	beqz	a1,e8812ed2 <NSEC3Parse+0x18>
        if (nsec3->saltLength)
    e8812ec4:	00884303          	lbu	t1,8(a6)
            *salt = p;
    e8812ec8:	8e46                	mv	t3,a7
    e8812eca:	40601e0b          	mveqz	t3,zero,t1
    e8812ece:	01c5b023          	sd	t3,0(a1)
    p += nsec3->saltLength;
    e8812ed2:	00884303          	lbu	t1,8(a6)
    e8812ed6:	006885b3          	add	a1,a7,t1
    hlen = (int)*p;
    e8812eda:	8068c88b          	lrbu	a7,a7,t1,0
    if (hashLength)
    e8812ede:	c219                	beqz	a2,e8812ee4 <NSEC3Parse+0x2a>
    hlen = (int)*p;
    e8812ee0:	01162023          	sw	a7,0(a2)
    p++;
    e8812ee4:	00158613          	addi	a2,a1,1
    if (nxtName)
    e8812ee8:	c291                	beqz	a3,e8812eec <NSEC3Parse+0x32>
        *nxtName = p;
    e8812eea:	e290                	sd	a2,0(a3)
    p += hlen;
    e8812eec:	9646                	add	a2,a2,a7
    if (bitmaplen)
    e8812eee:	cb11                	beqz	a4,e8812f02 <NSEC3Parse+0x48>
        *bitmaplen = rr->rdlength - (int)(p - rdb->data);
    e8812ef0:	00c55683          	lhu	a3,12(a0)
    e8812ef4:	0811                	addi	a6,a6,4
    e8812ef6:	41060833          	sub	a6,a2,a6
    e8812efa:	4106883b          	subw	a6,a3,a6
    e8812efe:	01072023          	sw	a6,0(a4) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    if (bitmap)
    e8812f02:	c391                	beqz	a5,e8812f06 <NSEC3Parse+0x4c>
        *bitmap = p;
    e8812f04:	e390                	sd	a2,0(a5)
}
    e8812f06:	8082                	ret

00000000e8812f08 <mDNSRandom>:
{
    e8812f08:	1101                	addi	sp,sp,-32
    e8812f0a:	e422                	sd	s0,8(sp)
    e8812f0c:	e826                	sd	s1,16(sp)
    e8812f0e:	ec06                	sd	ra,24(sp)
    e8812f10:	84aa                	mv	s1,a0
    mDNSu32 mask = 1;
    e8812f12:	4405                	li	s0,1
    while (mask < max) mask = (mask << 1) | 1;
    e8812f14:	00946d63          	bltu	s0,s1,e8812f2e <mDNSRandom+0x26>
    do ret = mDNSRandomNumber() & mask;
    e8812f18:	36e1d0ef          	jal	ra,e8830286 <mDNSPlatformRandomNumber>
    e8812f1c:	2501                	sext.w	a0,a0
    e8812f1e:	8d61                	and	a0,a0,s0
    while (ret > max);
    e8812f20:	fea4ece3          	bltu	s1,a0,e8812f18 <mDNSRandom+0x10>
}
    e8812f24:	60e2                	ld	ra,24(sp)
    e8812f26:	6422                	ld	s0,8(sp)
    e8812f28:	64c2                	ld	s1,16(sp)
    e8812f2a:	6105                	addi	sp,sp,32
    e8812f2c:	8082                	ret
    while (mask < max) mask = (mask << 1) | 1;
    e8812f2e:	0014141b          	slliw	s0,s0,0x1
    e8812f32:	00146413          	ori	s0,s0,1
    e8812f36:	2401                	sext.w	s0,s0
    e8812f38:	bff1                	j	e8812f14 <mDNSRandom+0xc>

00000000e8812f3a <mDNSSameAddress>:
    if (ip1->type == ip2->type)
    e8812f3a:	4118                	lw	a4,0(a0)
    e8812f3c:	419c                	lw	a5,0(a1)
    e8812f3e:	04e79663          	bne	a5,a4,e8812f8a <mDNSSameAddress+0x50>
        switch (ip1->type)
    e8812f42:	4711                	li	a4,4
    e8812f44:	00e78863          	beq	a5,a4,e8812f54 <mDNSSameAddress+0x1a>
    e8812f48:	4719                	li	a4,6
    e8812f4a:	00e78b63          	beq	a5,a4,e8812f60 <mDNSSameAddress+0x26>
    return(mDNSfalse);
    e8812f4e:	0017b513          	seqz	a0,a5
    e8812f52:	8082                	ret
        case mDNSAddrType_IPv4: return (mDNSBool)(mDNSSameIPv4Address(ip1->ip.v4, ip2->ip.v4));
    e8812f54:	4148                	lw	a0,4(a0)
    e8812f56:	41dc                	lw	a5,4(a1)
    e8812f58:	8d1d                	sub	a0,a0,a5
    e8812f5a:	00153513          	seqz	a0,a0
    e8812f5e:	8082                	ret
        case mDNSAddrType_IPv6: return (mDNSBool)(mDNSSameIPv6Address(ip1->ip.v6, ip2->ip.v6));
    e8812f60:	4154                	lw	a3,4(a0)
    e8812f62:	41d8                	lw	a4,4(a1)
    e8812f64:	4781                	li	a5,0
    e8812f66:	00e69f63          	bne	a3,a4,e8812f84 <mDNSSameAddress+0x4a>
    e8812f6a:	4514                	lw	a3,8(a0)
    e8812f6c:	4598                	lw	a4,8(a1)
    e8812f6e:	00e69b63          	bne	a3,a4,e8812f84 <mDNSSameAddress+0x4a>
    e8812f72:	4554                	lw	a3,12(a0)
    e8812f74:	45d8                	lw	a4,12(a1)
    e8812f76:	00e69763          	bne	a3,a4,e8812f84 <mDNSSameAddress+0x4a>
    e8812f7a:	491c                	lw	a5,16(a0)
    e8812f7c:	4988                	lw	a0,16(a1)
    e8812f7e:	8f89                	sub	a5,a5,a0
    e8812f80:	0017b793          	seqz	a5,a5
    e8812f84:	0ff7f513          	andi	a0,a5,255
    e8812f88:	8082                	ret
    return(mDNSfalse);
    e8812f8a:	4501                	li	a0,0
}
    e8812f8c:	8082                	ret

00000000e8812f8e <mDNSAddrIsDNSMulticast>:
    switch(ip->type)
    e8812f8e:	411c                	lw	a5,0(a0)
    e8812f90:	4711                	li	a4,4
    e8812f92:	00e78763          	beq	a5,a4,e8812fa0 <mDNSAddrIsDNSMulticast+0x12>
    e8812f96:	4719                	li	a4,6
    e8812f98:	00e78e63          	beq	a5,a4,e8812fb4 <mDNSAddrIsDNSMulticast+0x26>
    default: return(mDNSfalse);
    e8812f9c:	4501                	li	a0,0
    e8812f9e:	8082                	ret
    case mDNSAddrType_IPv4: return (mDNSBool)(mDNSSameIPv4Address(ip->ip.v4, AllDNSLinkGroup_v4.ip.v4));
    e8812fa0:	0008f797          	auipc	a5,0x8f
    e8812fa4:	b9078793          	addi	a5,a5,-1136 # e88a1b30 <AllDNSLinkGroup_v4>
    e8812fa8:	4148                	lw	a0,4(a0)
    e8812faa:	43dc                	lw	a5,4(a5)
    e8812fac:	8d1d                	sub	a0,a0,a5
    e8812fae:	00153513          	seqz	a0,a0
    e8812fb2:	8082                	ret
    case mDNSAddrType_IPv6: return (mDNSBool)(mDNSSameIPv6Address(ip->ip.v6, AllDNSLinkGroup_v6.ip.v6));
    e8812fb4:	0008f717          	auipc	a4,0x8f
    e8812fb8:	b9470713          	addi	a4,a4,-1132 # e88a1b48 <AllDNSLinkGroup_v6>
    e8812fbc:	4150                	lw	a2,4(a0)
    e8812fbe:	4354                	lw	a3,4(a4)
    e8812fc0:	4781                	li	a5,0
    e8812fc2:	00d61f63          	bne	a2,a3,e8812fe0 <mDNSAddrIsDNSMulticast+0x52>
    e8812fc6:	4510                	lw	a2,8(a0)
    e8812fc8:	4714                	lw	a3,8(a4)
    e8812fca:	00d61b63          	bne	a2,a3,e8812fe0 <mDNSAddrIsDNSMulticast+0x52>
    e8812fce:	4550                	lw	a2,12(a0)
    e8812fd0:	4754                	lw	a3,12(a4)
    e8812fd2:	00d61763          	bne	a2,a3,e8812fe0 <mDNSAddrIsDNSMulticast+0x52>
    e8812fd6:	4b1c                	lw	a5,16(a4)
    e8812fd8:	4908                	lw	a0,16(a0)
    e8812fda:	8d1d                	sub	a0,a0,a5
    e8812fdc:	00153793          	seqz	a5,a0
    e8812fe0:	0ff7f513          	andi	a0,a5,255
}
    e8812fe4:	8082                	ret

00000000e8812fe6 <SameDomainLabel>:
    const int len = *a++;
    e8812fe6:	00054703          	lbu	a4,0(a0)
    if (len > MAX_DOMAIN_LABEL)
    e8812fea:	03f00793          	li	a5,63
    const int len = *a++;
    e8812fee:	883a                	mv	a6,a4
    if (len > MAX_DOMAIN_LABEL)
    e8812ff0:	04e7cb63          	blt	a5,a4,e8813046 <SameDomainLabel+0x60>
    if (len != *b++) return(mDNSfalse);
    e8812ff4:	0005c683          	lbu	a3,0(a1)
    { debugf("Malformed label (too long)"); return(mDNSfalse); }
    e8812ff8:	4781                	li	a5,0
    if (len != *b++) return(mDNSfalse);
    e8812ffa:	00e69963          	bne	a3,a4,e881300c <SameDomainLabel+0x26>
    e8812ffe:	4685                	li	a3,1
        if (mDNSIsUpperCase(ac)) ac += 'a' - 'A';
    e8813000:	48e5                	li	a7,25
    for (i=0; i<len; i++)
    e8813002:	fff6879b          	addiw	a5,a3,-1
    e8813006:	0107c563          	blt	a5,a6,e8813010 <SameDomainLabel+0x2a>
    return(mDNStrue);
    e881300a:	4785                	li	a5,1
}
    e881300c:	853e                	mv	a0,a5
    e881300e:	8082                	ret
        mDNSu8 ac = *a++;
    e8813010:	80d5470b          	lrbu	a4,a0,a3,0
        mDNSu8 bc = *b++;
    e8813014:	80d5c78b          	lrbu	a5,a1,a3,0
        if (mDNSIsUpperCase(ac)) ac += 'a' - 'A';
    e8813018:	fbf7061b          	addiw	a2,a4,-65
    e881301c:	0ff67613          	andi	a2,a2,255
    e8813020:	00c8e663          	bltu	a7,a2,e881302c <SameDomainLabel+0x46>
    e8813024:	0207071b          	addiw	a4,a4,32
    e8813028:	0ff77713          	andi	a4,a4,255
        if (mDNSIsUpperCase(bc)) bc += 'a' - 'A';
    e881302c:	fbf7861b          	addiw	a2,a5,-65
    e8813030:	0ff67613          	andi	a2,a2,255
    e8813034:	00c8e663          	bltu	a7,a2,e8813040 <SameDomainLabel+0x5a>
    e8813038:	0207879b          	addiw	a5,a5,32
    e881303c:	0ff7f793          	andi	a5,a5,255
        if (ac != bc) return(mDNSfalse);
    e8813040:	0685                	addi	a3,a3,1
    e8813042:	fcf700e3          	beq	a4,a5,e8813002 <SameDomainLabel+0x1c>
    { debugf("Malformed label (too long)"); return(mDNSfalse); }
    e8813046:	4781                	li	a5,0
    e8813048:	b7d1                	j	e881300c <SameDomainLabel+0x26>

00000000e881304a <SameDomainName>:
{
    e881304a:	7179                	addi	sp,sp,-48
    e881304c:	e422                	sd	s0,8(sp)
    e881304e:	e826                	sd	s1,16(sp)
    e8813050:	f04e                	sd	s3,32(sp)
    e8813052:	f406                	sd	ra,40(sp)
    e8813054:	ec4a                	sd	s2,24(sp)
    const mDNSu8 *      a   = d1->c;
    e8813056:	842a                	mv	s0,a0
    const mDNSu8 *      b   = d2->c;
    e8813058:	84ae                	mv	s1,a1
    const mDNSu8 *const max = d1->c + MAX_DOMAIN_NAME;          // Maximum that's valid
    e881305a:	10050993          	addi	s3,a0,256
    while (*a || *b)
    e881305e:	00044903          	lbu	s2,0(s0)
    e8813062:	00091d63          	bnez	s2,e881307c <SameDomainName+0x32>
    e8813066:	0004c783          	lbu	a5,0(s1)
    e881306a:	eb89                	bnez	a5,e881307c <SameDomainName+0x32>
    return(mDNStrue);
    e881306c:	4505                	li	a0,1
}
    e881306e:	70a2                	ld	ra,40(sp)
    e8813070:	6422                	ld	s0,8(sp)
    e8813072:	64c2                	ld	s1,16(sp)
    e8813074:	6962                	ld	s2,24(sp)
    e8813076:	7982                	ld	s3,32(sp)
    e8813078:	6145                	addi	sp,sp,48
    e881307a:	8082                	ret
        if (a + 1 + *a >= max)
    e881307c:	00190793          	addi	a5,s2,1
    e8813080:	97a2                	add	a5,a5,s0
    e8813082:	0137fe63          	bgeu	a5,s3,e881309e <SameDomainName+0x54>
        if (!SameDomainLabel(a, b)) return(mDNSfalse);
    e8813086:	85a6                	mv	a1,s1
    e8813088:	8522                	mv	a0,s0
    e881308a:	f5dff0ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e881308e:	d165                	beqz	a0,e881306e <SameDomainName+0x24>
        b += 1 + *b;
    e8813090:	0004c783          	lbu	a5,0(s1)
        a += 1 + *a;
    e8813094:	0905                	addi	s2,s2,1
    e8813096:	944a                	add	s0,s0,s2
        b += 1 + *b;
    e8813098:	0785                	addi	a5,a5,1
    e881309a:	94be                	add	s1,s1,a5
    e881309c:	b7c9                	j	e881305e <SameDomainName+0x14>
        { debugf("Malformed domain name (more than 256 characters)"); return(mDNSfalse); }
    e881309e:	4501                	li	a0,0
    e88130a0:	b7f9                	j	e881306e <SameDomainName+0x24>

00000000e88130a2 <IsLocalDomain>:
{
    e88130a2:	1101                	addi	sp,sp,-32
    e88130a4:	e84a                	sd	s2,16(sp)
    e88130a6:	f891540b          	sdd	s0,s1,(sp),0,4
    e88130aa:	ec06                	sd	ra,24(sp)
    d1 = d2 = d3 = d4 = d5 = mDNSNULL;
    e88130ac:	4481                	li	s1,0
    e88130ae:	4901                	li	s2,0
    e88130b0:	4681                	li	a3,0
    e88130b2:	4701                	li	a4,0
    e88130b4:	4781                	li	a5,0
    while (d->c[0])
    e88130b6:	00054403          	lbu	s0,0(a0)
    e88130ba:	ec3d                	bnez	s0,e8813138 <IsLocalDomain+0x96>
    if (d1 && SameDomainName(d1, nL)) return(mDNStrue);
    e88130bc:	cb89                	beqz	a5,e88130ce <IsLocalDomain+0x2c>
    e88130be:	0008f597          	auipc	a1,0x8f
    e88130c2:	3ea58593          	addi	a1,a1,1002 # e88a24a8 <DiscardPort+0x498>
    e88130c6:	853e                	mv	a0,a5
    e88130c8:	f83ff0ef          	jal	ra,e881304a <SameDomainName>
    e88130cc:	ed35                	bnez	a0,e8813148 <IsLocalDomain+0xa6>
    if (d4 && SameDomainName(d4, nR)) return(mDNStrue);
    e88130ce:	00090a63          	beqz	s2,e88130e2 <IsLocalDomain+0x40>
    e88130d2:	0008f597          	auipc	a1,0x8f
    e88130d6:	3de58593          	addi	a1,a1,990 # e88a24b0 <DiscardPort+0x4a0>
    e88130da:	854a                	mv	a0,s2
    e88130dc:	f6fff0ef          	jal	ra,e881304a <SameDomainName>
    e88130e0:	e525                	bnez	a0,e8813148 <IsLocalDomain+0xa6>
    if (d5 && SameDomainName(d5, n8)) return(mDNStrue);
    e88130e2:	c4a1                	beqz	s1,e881312a <IsLocalDomain+0x88>
    e88130e4:	0008f597          	auipc	a1,0x8f
    e88130e8:	3e458593          	addi	a1,a1,996 # e88a24c8 <DiscardPort+0x4b8>
    e88130ec:	8526                	mv	a0,s1
    e88130ee:	f5dff0ef          	jal	ra,e881304a <SameDomainName>
    if (d1 && SameDomainName(d1, nL)) return(mDNStrue);
    e88130f2:	4405                	li	s0,1
    if (d5 && SameDomainName(d5, n8)) return(mDNStrue);
    e88130f4:	e91d                	bnez	a0,e881312a <IsLocalDomain+0x88>
    if (d5 && SameDomainName(d5, n9)) return(mDNStrue);
    e88130f6:	0008f597          	auipc	a1,0x8f
    e88130fa:	3e258593          	addi	a1,a1,994 # e88a24d8 <DiscardPort+0x4c8>
    e88130fe:	8526                	mv	a0,s1
    e8813100:	f4bff0ef          	jal	ra,e881304a <SameDomainName>
    e8813104:	e11d                	bnez	a0,e881312a <IsLocalDomain+0x88>
    if (d5 && SameDomainName(d5, nA)) return(mDNStrue);
    e8813106:	0008f597          	auipc	a1,0x8f
    e881310a:	3e258593          	addi	a1,a1,994 # e88a24e8 <DiscardPort+0x4d8>
    e881310e:	8526                	mv	a0,s1
    e8813110:	f3bff0ef          	jal	ra,e881304a <SameDomainName>
    e8813114:	e919                	bnez	a0,e881312a <IsLocalDomain+0x88>
    if (d5 && SameDomainName(d5, nB)) return(mDNStrue);
    e8813116:	0008f597          	auipc	a1,0x8f
    e881311a:	3e258593          	addi	a1,a1,994 # e88a24f8 <DiscardPort+0x4e8>
    e881311e:	8526                	mv	a0,s1
    e8813120:	f2bff0ef          	jal	ra,e881304a <SameDomainName>
    e8813124:	2501                	sext.w	a0,a0
    if (d1 && SameDomainName(d1, nL)) return(mDNStrue);
    e8813126:	00a03433          	snez	s0,a0
}
    e881312a:	8522                	mv	a0,s0
    e881312c:	60e2                	ld	ra,24(sp)
    e881312e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8813132:	6942                	ld	s2,16(sp)
    e8813134:	6105                	addi	sp,sp,32
    e8813136:	8082                	ret
        d = (const domainname*)(d->c + 1 + d->c[0]);
    e8813138:	0405                	addi	s0,s0,1
        d5 = d4; d4 = d3; d3 = d2; d2 = d1; d1 = d;
    e881313a:	84ca                	mv	s1,s2
    e881313c:	8936                	mv	s2,a3
    e881313e:	86ba                	mv	a3,a4
    e8813140:	873e                	mv	a4,a5
    e8813142:	87aa                	mv	a5,a0
        d = (const domainname*)(d->c + 1 + d->c[0]);
    e8813144:	9522                	add	a0,a0,s0
    e8813146:	bf85                	j	e88130b6 <IsLocalDomain+0x14>
    if (d1 && SameDomainName(d1, nL)) return(mDNStrue);
    e8813148:	4405                	li	s0,1
    e881314a:	b7c5                	j	e881312a <IsLocalDomain+0x88>

00000000e881314c <DomainNameLengthLimit>:
    const mDNSu8 *src = name->c;
    e881314c:	87aa                	mv	a5,a0
    while (src < limit && *src <= MAX_DOMAIN_LABEL)
    e881314e:	03f00693          	li	a3,63
    e8813152:	00b7f663          	bgeu	a5,a1,e881315e <DomainNameLengthLimit+0x12>
    e8813156:	0007c703          	lbu	a4,0(a5)
    e881315a:	00e6f563          	bgeu	a3,a4,e8813164 <DomainNameLengthLimit+0x18>
    return(MAX_DOMAIN_NAME+1);
    e881315e:	10100513          	li	a0,257
}
    e8813162:	8082                	ret
        if (*src == 0) return((mDNSu16)(src - name->c + 1));
    e8813164:	e719                	bnez	a4,e8813172 <DomainNameLengthLimit+0x26>
    e8813166:	40a78533          	sub	a0,a5,a0
    e881316a:	2505                	addiw	a0,a0,1
    e881316c:	3c05350b          	extu	a0,a0,15,0
    e8813170:	8082                	ret
        src += 1 + *src;
    e8813172:	0705                	addi	a4,a4,1
    e8813174:	97ba                	add	a5,a5,a4
    e8813176:	bff1                	j	e8813152 <DomainNameLengthLimit+0x6>

00000000e8813178 <SameDomainNameCS>:
{
    e8813178:	1101                	addi	sp,sp,-32
    e881317a:	f891540b          	sdd	s0,s1,(sp),0,4
    e881317e:	84ae                	mv	s1,a1
    mDNSu16 l1 = DomainNameLength(d1);
    e8813180:	10050593          	addi	a1,a0,256
{
    e8813184:	ec06                	sd	ra,24(sp)
    e8813186:	e84a                	sd	s2,16(sp)
    e8813188:	892a                	mv	s2,a0
    mDNSu16 l1 = DomainNameLength(d1);
    e881318a:	fc3ff0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881318e:	842a                	mv	s0,a0
    mDNSu16 l2 = DomainNameLength(d2);
    e8813190:	10048593          	addi	a1,s1,256
    e8813194:	8526                	mv	a0,s1
    e8813196:	fb7ff0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    return(l1 <= MAX_DOMAIN_NAME && l1 == l2 && mDNSPlatformMemSame(d1, d2, l1));
    e881319a:	0004061b          	sext.w	a2,s0
    e881319e:	10000793          	li	a5,256
    e88131a2:	02c7e463          	bltu	a5,a2,e88131ca <SameDomainNameCS+0x52>
    e88131a6:	0005079b          	sext.w	a5,a0
    e88131aa:	4501                	li	a0,0
    e88131ac:	00f61963          	bne	a2,a5,e88131be <SameDomainNameCS+0x46>
    e88131b0:	85a6                	mv	a1,s1
    e88131b2:	854a                	mv	a0,s2
    e88131b4:	0f51c0ef          	jal	ra,e882faa8 <mDNSPlatformMemSame>
    e88131b8:	2501                	sext.w	a0,a0
    e88131ba:	00a03533          	snez	a0,a0
}
    e88131be:	60e2                	ld	ra,24(sp)
    e88131c0:	f891440b          	ldd	s0,s1,(sp),0,4
    e88131c4:	6942                	ld	s2,16(sp)
    e88131c6:	6105                	addi	sp,sp,32
    e88131c8:	8082                	ret
    return(l1 <= MAX_DOMAIN_NAME && l1 == l2 && mDNSPlatformMemSame(d1, d2, l1));
    e88131ca:	4501                	li	a0,0
    e88131cc:	bfcd                	j	e88131be <SameDomainNameCS+0x46>

00000000e88131ce <CompressedDomainNameLength>:
{
    e88131ce:	7139                	addi	sp,sp,-64
    e88131d0:	ec4a                	sd	s2,24(sp)
    e88131d2:	f04e                	sd	s3,32(sp)
    e88131d4:	fc06                	sd	ra,56(sp)
    e88131d6:	e422                	sd	s0,8(sp)
    e88131d8:	e826                	sd	s1,16(sp)
    e88131da:	f452                	sd	s4,40(sp)
    e88131dc:	f856                	sd	s5,48(sp)
    e88131de:	89aa                	mv	s3,a0
    e88131e0:	892e                	mv	s2,a1
    if (parent && parent->c[0] == 0) parent = mDNSNULL;
    e88131e2:	c581                	beqz	a1,e88131ea <CompressedDomainNameLength+0x1c>
    e88131e4:	0005c783          	lbu	a5,0(a1)
    e88131e8:	cfa9                	beqz	a5,e8813242 <CompressedDomainNameLength+0x74>
    e88131ea:	844e                	mv	s0,s3
        if (*src > MAX_DOMAIN_LABEL) return(MAX_DOMAIN_NAME+1);
    e88131ec:	03f00a13          	li	s4,63
        if (src - name->c >= MAX_DOMAIN_NAME) return(MAX_DOMAIN_NAME+1);
    e88131f0:	0ff00a93          	li	s5,255
    while (*src)
    e88131f4:	00044483          	lbu	s1,0(s0)
    e88131f8:	e489                	bnez	s1,e8813202 <CompressedDomainNameLength+0x34>
    return((mDNSu16)(src - name->c + 1));
    e88131fa:	41340533          	sub	a0,s0,s3
    e88131fe:	2505                	addiw	a0,a0,1
    e8813200:	a829                	j	e881321a <CompressedDomainNameLength+0x4c>
        if (*src > MAX_DOMAIN_LABEL) return(MAX_DOMAIN_NAME+1);
    e8813202:	029a6d63          	bltu	s4,s1,e881323c <CompressedDomainNameLength+0x6e>
        if (parent && SameDomainName((const domainname *)src, parent)) return((mDNSu16)(src - name->c + 2));
    e8813206:	02090563          	beqz	s2,e8813230 <CompressedDomainNameLength+0x62>
    e881320a:	85ca                	mv	a1,s2
    e881320c:	8522                	mv	a0,s0
    e881320e:	e3dff0ef          	jal	ra,e881304a <SameDomainName>
    e8813212:	cd19                	beqz	a0,e8813230 <CompressedDomainNameLength+0x62>
    e8813214:	41340533          	sub	a0,s0,s3
    e8813218:	2509                	addiw	a0,a0,2
    return((mDNSu16)(src - name->c + 1));
    e881321a:	3c05350b          	extu	a0,a0,15,0
}
    e881321e:	70e2                	ld	ra,56(sp)
    e8813220:	6422                	ld	s0,8(sp)
    e8813222:	64c2                	ld	s1,16(sp)
    e8813224:	6962                	ld	s2,24(sp)
    e8813226:	7982                	ld	s3,32(sp)
    e8813228:	7a22                	ld	s4,40(sp)
    e881322a:	7ac2                	ld	s5,48(sp)
    e881322c:	6121                	addi	sp,sp,64
    e881322e:	8082                	ret
        src += 1 + *src;
    e8813230:	0485                	addi	s1,s1,1
    e8813232:	9426                	add	s0,s0,s1
        if (src - name->c >= MAX_DOMAIN_NAME) return(MAX_DOMAIN_NAME+1);
    e8813234:	413407b3          	sub	a5,s0,s3
    e8813238:	fafadee3          	bge	s5,a5,e88131f4 <CompressedDomainNameLength+0x26>
        if (*src > MAX_DOMAIN_LABEL) return(MAX_DOMAIN_NAME+1);
    e881323c:	10100513          	li	a0,257
    e8813240:	bff9                	j	e881321e <CompressedDomainNameLength+0x50>
    if (parent && parent->c[0] == 0) parent = mDNSNULL;
    e8813242:	4901                	li	s2,0
    e8813244:	b75d                	j	e88131ea <CompressedDomainNameLength+0x1c>

00000000e8813246 <CountLabels>:
    int count = 0;
    e8813246:	4701                	li	a4,0
    for (ptr = d->c; *ptr; ptr = ptr + ptr[0] + 1) count++;
    e8813248:	00054783          	lbu	a5,0(a0)
    e881324c:	e399                	bnez	a5,e8813252 <CountLabels+0xc>
}
    e881324e:	853a                	mv	a0,a4
    e8813250:	8082                	ret
    for (ptr = d->c; *ptr; ptr = ptr + ptr[0] + 1) count++;
    e8813252:	0785                	addi	a5,a5,1
    e8813254:	2705                	addiw	a4,a4,1
    e8813256:	953e                	add	a0,a0,a5
    e8813258:	bfc5                	j	e8813248 <CountLabels+0x2>

00000000e881325a <SkipLeadingLabels>:
    while (skip > 0 && d->c[0]) { d = (const domainname *)(d->c + 1 + d->c[0]); skip--; }
    e881325a:	00b05563          	blez	a1,e8813264 <SkipLeadingLabels+0xa>
    e881325e:	00054783          	lbu	a5,0(a0)
    e8813262:	e391                	bnez	a5,e8813266 <SkipLeadingLabels+0xc>
}
    e8813264:	8082                	ret
    while (skip > 0 && d->c[0]) { d = (const domainname *)(d->c + 1 + d->c[0]); skip--; }
    e8813266:	0785                	addi	a5,a5,1
    e8813268:	953e                	add	a0,a0,a5
    e881326a:	35fd                	addiw	a1,a1,-1
    e881326c:	b7fd                	j	e881325a <SkipLeadingLabels>

00000000e881326e <AppendLiteralLabelString>:
{
    e881326e:	1101                	addi	sp,sp,-32
    e8813270:	e826                	sd	s1,16(sp)
    e8813272:	84ae                	mv	s1,a1
    mDNSu8       *      ptr  = name->c + DomainNameLength(name) - 1;    // Find end of current name
    e8813274:	10050593          	addi	a1,a0,256
{
    e8813278:	e422                	sd	s0,8(sp)
    e881327a:	ec06                	sd	ra,24(sp)
    e881327c:	842a                	mv	s0,a0
    mDNSu8       *      ptr  = name->c + DomainNameLength(name) - 1;    // Find end of current name
    e881327e:	ecfff0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8813282:	fff50613          	addi	a2,a0,-1
    e8813286:	00c40733          	add	a4,s0,a2
    const mDNSu8 *const lim2 = ptr + 1 + MAX_DOMAIN_LABEL;
    e881328a:	04070593          	addi	a1,a4,64
    const mDNSu8 *const lim1 = name->c + MAX_DOMAIN_NAME - 1;           // Limit of how much we can add (not counting final zero)
    e881328e:	0ff40793          	addi	a5,s0,255
    const mDNSu8 *const lim  = (lim1 < lim2) ? lim1 : lim2;
    e8813292:	00b7b6b3          	sltu	a3,a5,a1
    e8813296:	40d5978b          	mveqz	a5,a1,a3
    e881329a:	86be                	mv	a3,a5
    mDNSu8       *lengthbyte = ptr++;                                   // Record where the length is going to go
    e881329c:	00a407b3          	add	a5,s0,a0
    while (*cstr && ptr < lim) *ptr++ = (mDNSu8)*cstr++;    // Copy the data
    e88132a0:	0004c583          	lbu	a1,0(s1)
    e88132a4:	00178513          	addi	a0,a5,1
    e88132a8:	c199                	beqz	a1,e88132ae <AppendLiteralLabelString+0x40>
    e88132aa:	02d7e263          	bltu	a5,a3,e88132ce <AppendLiteralLabelString+0x60>
    *lengthbyte = (mDNSu8)(ptr - lengthbyte - 1);           // Fill in the length byte
    e88132ae:	40e78733          	sub	a4,a5,a4
    e88132b2:	377d                	addiw	a4,a4,-1
    e88132b4:	00c4570b          	srb	a4,s0,a2,0
    *ptr++ = 0;                                             // Put the null root label on the end
    e88132b8:	00078023          	sb	zero,0(a5)
    if (*cstr) return(mDNSNULL);                            // Failure: We didn't successfully consume all input
    e88132bc:	0004c783          	lbu	a5,0(s1)
    e88132c0:	c391                	beqz	a5,e88132c4 <AppendLiteralLabelString+0x56>
    e88132c2:	4501                	li	a0,0
}
    e88132c4:	60e2                	ld	ra,24(sp)
    e88132c6:	6422                	ld	s0,8(sp)
    e88132c8:	64c2                	ld	s1,16(sp)
    e88132ca:	6105                	addi	sp,sp,32
    e88132cc:	8082                	ret
    while (*cstr && ptr < lim) *ptr++ = (mDNSu8)*cstr++;    // Copy the data
    e88132ce:	0485                	addi	s1,s1,1
    e88132d0:	feb50fa3          	sb	a1,-1(a0)
    e88132d4:	87aa                	mv	a5,a0
    e88132d6:	b7e9                	j	e88132a0 <AppendLiteralLabelString+0x32>

00000000e88132d8 <AppendDNSNameString>:
{
    e88132d8:	7179                	addi	sp,sp,-48
    e88132da:	e42e                	sd	a1,8(sp)
    mDNSu8       *      ptr = name->c + DomainNameLength(name) - 1; // Find end of current name
    e88132dc:	10050593          	addi	a1,a0,256
{
    e88132e0:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88132e4:	f406                	sd	ra,40(sp)
    e88132e6:	842a                	mv	s0,a0
    e88132e8:	f04a                	sd	s2,32(sp)
    mDNSu8       *      ptr = name->c + DomainNameLength(name) - 1; // Find end of current name
    e88132ea:	e63ff0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88132ee:	157d                	addi	a0,a0,-1
    const char   *cstr      = cstring;
    e88132f0:	6622                	ld	a2,8(sp)
    mDNSu8       *      ptr = name->c + DomainNameLength(name) - 1; // Find end of current name
    e88132f2:	00a406b3          	add	a3,s0,a0
        if (*cstr == '.') { LogMsg("AppendDNSNameString: Illegal empty label in name \"%s\"", cstring); return(mDNSNULL); }
    e88132f6:	02e00313          	li	t1,46
    const mDNSu8 *const lim = name->c + MAX_DOMAIN_NAME - 1;        // Limit of how much we can add (not counting final zero)
    e88132fa:	0ff40413          	addi	s0,s0,255
    const char   *cstr      = cstring;
    e88132fe:	87b2                	mv	a5,a2
            if (c == '\\')                                          // If escape character, check next character
    e8813300:	05c00f13          	li	t5,92
                if (mDNSIsDigit(cstr[-1]) && mDNSIsDigit(cstr[0]) && mDNSIsDigit(cstr[1]))
    e8813304:	4e25                	li	t3,9
                    int val = v0 * 100 + v1 * 10 + v2;
    e8813306:	06400f93          	li	t6,100
    e881330a:	42a9                	li	t0,10
                    if (val <= 255) { c = (mDNSu8)val; cstr += 2; } // If valid three-digit decimal value, use it
    e881330c:	0ff00393          	li	t2,255
        if (ptr - lengthbyte - 1 > MAX_DOMAIN_LABEL)                // If illegal label, abort
    e8813310:	03f00493          	li	s1,63
    while (*cstr && ptr < lim)                                      // While more characters, and space to put them...
    e8813314:	0007c703          	lbu	a4,0(a5)
    e8813318:	00168513          	addi	a0,a3,1
    e881331c:	c319                	beqz	a4,e8813322 <AppendDNSNameString+0x4a>
    e881331e:	0086ed63          	bltu	a3,s0,e8813338 <AppendDNSNameString+0x60>
    *ptr++ = 0;                                                     // Put the null root label on the end
    e8813322:	00068023          	sb	zero,0(a3)
    if (*cstr) return(mDNSNULL);                                    // Failure: We didn't successfully consume all input
    e8813326:	0007c783          	lbu	a5,0(a5)
    e881332a:	e385                	bnez	a5,e881334a <AppendDNSNameString+0x72>
}
    e881332c:	70a2                	ld	ra,40(sp)
    e881332e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8813332:	7902                	ld	s2,32(sp)
    e8813334:	6145                	addi	sp,sp,48
    e8813336:	8082                	ret
        if (*cstr == '.') { LogMsg("AppendDNSNameString: Illegal empty label in name \"%s\"", cstring); return(mDNSNULL); }
    e8813338:	06671763          	bne	a4,t1,e88133a6 <AppendDNSNameString+0xce>
    e881333c:	0008f597          	auipc	a1,0x8f
    e8813340:	89c58593          	addi	a1,a1,-1892 # e88a1bd8 <AllHosts_v6_Eth+0x68>
    e8813344:	4501                	li	a0,0
    e8813346:	1661c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (*cstr) return(mDNSNULL);                                    // Failure: We didn't successfully consume all input
    e881334a:	4501                	li	a0,0
    e881334c:	b7c5                	j	e881332c <AppendDNSNameString+0x54>
            mDNSu8 c = (mDNSu8)*cstr++;                             // Read the character
    e881334e:	00178813          	addi	a6,a5,1
            if (c == '\\')                                          // If escape character, check next character
    e8813352:	05e59763          	bne	a1,t5,e88133a0 <AppendDNSNameString+0xc8>
                if (*cstr == '\0') break;                           // If this is the end of the string, then break
    e8813356:	0017c583          	lbu	a1,1(a5)
    e881335a:	cdad                	beqz	a1,e88133d4 <AppendDNSNameString+0xfc>
                if (mDNSIsDigit(cstr[-1]) && mDNSIsDigit(cstr[0]) && mDNSIsDigit(cstr[1]))
    e881335c:	fd058e9b          	addiw	t4,a1,-48
    e8813360:	0ffef713          	andi	a4,t4,255
                c = (mDNSu8)*cstr++;                                // Assume we'll just take the next character
    e8813364:	00278813          	addi	a6,a5,2
                if (mDNSIsDigit(cstr[-1]) && mDNSIsDigit(cstr[0]) && mDNSIsDigit(cstr[1]))
    e8813368:	02ee6c63          	bltu	t3,a4,e88133a0 <AppendDNSNameString+0xc8>
    e881336c:	0027c883          	lbu	a7,2(a5)
    e8813370:	fd08889b          	addiw	a7,a7,-48
    e8813374:	0ff8f713          	andi	a4,a7,255
    e8813378:	02ee6463          	bltu	t3,a4,e88133a0 <AppendDNSNameString+0xc8>
    e881337c:	0037c703          	lbu	a4,3(a5)
    e8813380:	fd07071b          	addiw	a4,a4,-48
    e8813384:	0ff77913          	andi	s2,a4,255
    e8813388:	012e6c63          	bltu	t3,s2,e88133a0 <AppendDNSNameString+0xc8>
                    int val = v0 * 100 + v1 * 10 + v2;
    e881338c:	25fe970b          	mulaw	a4,t4,t6
    e8813390:	2458970b          	mulaw	a4,a7,t0
                    if (val <= 255) { c = (mDNSu8)val; cstr += 2; } // If valid three-digit decimal value, use it
    e8813394:	00e3c663          	blt	t2,a4,e88133a0 <AppendDNSNameString+0xc8>
    e8813398:	0ff77593          	andi	a1,a4,255
    e881339c:	00478813          	addi	a6,a5,4
            *ptr++ = c;                                             // Write the character
    e88133a0:	1815558b          	sbia	a1,(a0),1,0
    e88133a4:	87c2                	mv	a5,a6
        while (*cstr && *cstr != '.' && ptr < lim)                  // While we have characters in the label...
    e88133a6:	0007c583          	lbu	a1,0(a5)
    e88133aa:	c589                	beqz	a1,e88133b4 <AppendDNSNameString+0xdc>
    e88133ac:	00658463          	beq	a1,t1,e88133b4 <AppendDNSNameString+0xdc>
    e88133b0:	f8856fe3          	bltu	a0,s0,e881334e <AppendDNSNameString+0x76>
        if (*cstr == '.') cstr++;                                   // Skip over the trailing dot (if present)
    e88133b4:	0007c703          	lbu	a4,0(a5)
    e88133b8:	00671363          	bne	a4,t1,e88133be <AppendDNSNameString+0xe6>
    e88133bc:	0785                	addi	a5,a5,1
        if (ptr - lengthbyte - 1 > MAX_DOMAIN_LABEL)                // If illegal label, abort
    e88133be:	40d50733          	sub	a4,a0,a3
    e88133c2:	fff70593          	addi	a1,a4,-1
    e88133c6:	f8b4c2e3          	blt	s1,a1,e881334a <AppendDNSNameString+0x72>
        *lengthbyte = (mDNSu8)(ptr - lengthbyte - 1);               // Fill in the length byte
    e88133ca:	377d                	addiw	a4,a4,-1
    e88133cc:	00e68023          	sb	a4,0(a3)
    e88133d0:	86aa                	mv	a3,a0
    e88133d2:	b789                	j	e8813314 <AppendDNSNameString+0x3c>
            mDNSu8 c = (mDNSu8)*cstr++;                             // Read the character
    e88133d4:	87c2                	mv	a5,a6
    e88133d6:	bff9                	j	e88133b4 <AppendDNSNameString+0xdc>

00000000e88133d8 <AppendDomainLabel>:
{
    e88133d8:	1101                	addi	sp,sp,-32
    e88133da:	e84a                	sd	s2,16(sp)
    mDNSu8 *ptr = name->c + DomainNameLength(name) - 1;
    e88133dc:	10050913          	addi	s2,a0,256
{
    e88133e0:	f891540b          	sdd	s0,s1,(sp),0,4
    e88133e4:	84ae                	mv	s1,a1
    mDNSu8 *ptr = name->c + DomainNameLength(name) - 1;
    e88133e6:	85ca                	mv	a1,s2
{
    e88133e8:	842a                	mv	s0,a0
    e88133ea:	ec06                	sd	ra,24(sp)
    mDNSu8 *ptr = name->c + DomainNameLength(name) - 1;
    e88133ec:	d61ff0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88133f0:	157d                	addi	a0,a0,-1
    if (label->c[0] > MAX_DOMAIN_LABEL) return(mDNSNULL);
    e88133f2:	0004c703          	lbu	a4,0(s1)
    e88133f6:	03f00693          	li	a3,63
    mDNSu8 *ptr = name->c + DomainNameLength(name) - 1;
    e88133fa:	00a407b3          	add	a5,s0,a0
    if (label->c[0] > MAX_DOMAIN_LABEL) return(mDNSNULL);
    e88133fe:	4501                	li	a0,0
    e8813400:	00e6e863          	bltu	a3,a4,e8813410 <AppendDomainLabel+0x38>
    if (ptr + 1 + label->c[0] + 1 > name->c + MAX_DOMAIN_NAME) return(mDNSNULL);
    e8813404:	0709                	addi	a4,a4,2
    e8813406:	973e                	add	a4,a4,a5
    if (label->c[0] > MAX_DOMAIN_LABEL) return(mDNSNULL);
    e8813408:	4501                	li	a0,0
    for (i=0; i<=label->c[0]; i++) *ptr++ = label->c[i];    // Copy the label data
    e881340a:	4681                	li	a3,0
    if (ptr + 1 + label->c[0] + 1 > name->c + MAX_DOMAIN_NAME) return(mDNSNULL);
    e881340c:	00e97963          	bgeu	s2,a4,e881341e <AppendDomainLabel+0x46>
}
    e8813410:	60e2                	ld	ra,24(sp)
    e8813412:	f891440b          	ldd	s0,s1,(sp),0,4
    e8813416:	6942                	ld	s2,16(sp)
    e8813418:	6105                	addi	sp,sp,32
    e881341a:	8082                	ret
    for (i=0; i<=label->c[0]; i++) *ptr++ = label->c[i];    // Copy the label data
    e881341c:	87ba                	mv	a5,a4
    e881341e:	80d4c60b          	lrbu	a2,s1,a3,0
    e8813422:	873e                	mv	a4,a5
    e8813424:	2685                	addiw	a3,a3,1
    e8813426:	1817560b          	sbia	a2,(a4),1,0
    e881342a:	0004c603          	lbu	a2,0(s1)
    e881342e:	fed657e3          	bge	a2,a3,e881341c <AppendDomainLabel+0x44>
    *ptr++ = 0;                             // Put the null root label on the end
    e8813432:	00278513          	addi	a0,a5,2
    e8813436:	00070023          	sb	zero,0(a4)
    return(ptr);
    e881343a:	bfd9                	j	e8813410 <AppendDomainLabel+0x38>

00000000e881343c <AppendDomainName>:
{
    e881343c:	1101                	addi	sp,sp,-32
    e881343e:	e422                	sd	s0,8(sp)
    e8813440:	842e                	mv	s0,a1
    mDNSu8       *      ptr = name->c + DomainNameLength(name) - 1; // Find end of current name
    e8813442:	10050593          	addi	a1,a0,256
{
    e8813446:	e826                	sd	s1,16(sp)
    e8813448:	ec06                	sd	ra,24(sp)
    e881344a:	84aa                	mv	s1,a0
    mDNSu8       *      ptr = name->c + DomainNameLength(name) - 1; // Find end of current name
    e881344c:	d01ff0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8813450:	157d                	addi	a0,a0,-1
    e8813452:	9526                	add	a0,a0,s1
    const mDNSu8 *      src = append->c;
    e8813454:	85a2                	mv	a1,s0
    const mDNSu8 *const lim = name->c + MAX_DOMAIN_NAME - 1;        // Limit of how much we can add (not counting final zero)
    e8813456:	0ff48493          	addi	s1,s1,255
    while (src[0])
    e881345a:	0005c783          	lbu	a5,0(a1)
    e881345e:	e791                	bnez	a5,e881346a <AppendDomainName+0x2e>
}
    e8813460:	60e2                	ld	ra,24(sp)
    e8813462:	6422                	ld	s0,8(sp)
    e8813464:	64c2                	ld	s1,16(sp)
    e8813466:	6105                	addi	sp,sp,32
    e8813468:	8082                	ret
        if (ptr + 1 + src[0] > lim) return(mDNSNULL);
    e881346a:	0785                	addi	a5,a5,1
    e881346c:	97aa                	add	a5,a5,a0
    e881346e:	02f4e963          	bltu	s1,a5,e88134a0 <AppendDomainName+0x64>
    e8813472:	4781                	li	a5,0
    e8813474:	00150893          	addi	a7,a0,1
        for (i=0; i<=src[0]; i++) *ptr++ = src[i];
    e8813478:	80f5c68b          	lrbu	a3,a1,a5,0
    e881347c:	00f88733          	add	a4,a7,a5
    e8813480:	00f5568b          	srb	a3,a0,a5,0
    e8813484:	0005c803          	lbu	a6,0(a1)
    e8813488:	0017869b          	addiw	a3,a5,1
    e881348c:	0785                	addi	a5,a5,1
    e881348e:	0007861b          	sext.w	a2,a5
    e8813492:	fec853e3          	bge	a6,a2,e8813478 <AppendDomainName+0x3c>
        *ptr = 0;   // Put the null root label on the end
    e8813496:	00070023          	sb	zero,0(a4)
        src += i;
    e881349a:	95b6                	add	a1,a1,a3
    e881349c:	853a                	mv	a0,a4
    e881349e:	bf75                	j	e881345a <AppendDomainName+0x1e>
        if (ptr + 1 + src[0] > lim) return(mDNSNULL);
    e88134a0:	4501                	li	a0,0
    e88134a2:	bf7d                	j	e8813460 <AppendDomainName+0x24>

00000000e88134a4 <MakeDomainLabelFromLiteralString>:
    mDNSu8       *      ptr   = label->c + 1;                       // Where we're putting it
    e88134a4:	00150793          	addi	a5,a0,1
    while (*cstr && ptr < limit) *ptr++ = (mDNSu8)*cstr++;          // Copy the label
    e88134a8:	03f58693          	addi	a3,a1,63
    e88134ac:	0005c703          	lbu	a4,0(a1)
    e88134b0:	c319                	beqz	a4,e88134b6 <MakeDomainLabelFromLiteralString+0x12>
    e88134b2:	00d59b63          	bne	a1,a3,e88134c8 <MakeDomainLabelFromLiteralString+0x24>
    label->c[0] = (mDNSu8)(ptr - label->c - 1);                     // Set the length byte
    e88134b6:	8f89                	sub	a5,a5,a0
    e88134b8:	37fd                	addiw	a5,a5,-1
    e88134ba:	00f50023          	sb	a5,0(a0)
    return(*cstr == 0);                                             // Return mDNStrue if we successfully consumed all input
    e88134be:	0005c503          	lbu	a0,0(a1)
    e88134c2:	00153513          	seqz	a0,a0
}
    e88134c6:	8082                	ret
    while (*cstr && ptr < limit) *ptr++ = (mDNSu8)*cstr++;          // Copy the label
    e88134c8:	0585                	addi	a1,a1,1
    e88134ca:	1817d70b          	sbia	a4,(a5),1,0
    e88134ce:	bff9                	j	e88134ac <MakeDomainLabelFromLiteralString+0x8>

00000000e88134d0 <MakeDomainNameFromDNSNameString2>:
    name->c[0] = 0;                                 // Make an empty domain name
    e88134d0:	00050023          	sb	zero,0(a0)
    return(AppendDNSNameString(name, cstr));        // And then add this string to it
    e88134d4:	e05ff06f          	j	e88132d8 <AppendDNSNameString>

00000000e88134d8 <ConvertDomainLabelToCString_withescape>:
    const mDNSu8 len = *src++;                                  // Read length of this (non-null) label
    e88134d8:	9815478b          	lbuia	a5,(a0),1,0
    if (len > MAX_DOMAIN_LABEL) return(mDNSNULL);               // If illegal label, abort
    e88134dc:	03f00713          	li	a4,63
    const mDNSu8 *const end = src + len;                        // Work out where the label ends
    e88134e0:	00f50833          	add	a6,a0,a5
    if (len > MAX_DOMAIN_LABEL) return(mDNSNULL);               // If illegal label, abort
    e88134e4:	04f76d63          	bltu	a4,a5,e881353e <ConvertDomainLabelToCString_withescape+0x66>
            if (c == '.' || c == esc)                           // If character is a dot or the escape character
    e88134e8:	02e00893          	li	a7,46
            else if (c <= ' ')                                  // If non-printing ascii,
    e88134ec:	02000313          	li	t1,32
                *ptr++ = (char)  ('0' + (c / 100)     );
    e88134f0:	03000e13          	li	t3,48
                *ptr++ = (char)  ('0' + (c /  10) % 10);
    e88134f4:	46a9                	li	a3,10
    while (src < end)                                           // While we have characters in the label
    e88134f6:	01056663          	bltu	a0,a6,e8813502 <ConvertDomainLabelToCString_withescape+0x2a>
    *ptr = 0;                                                   // Null-terminate the string
    e88134fa:	00058023          	sb	zero,0(a1)
    return(ptr);                                                // and return
    e88134fe:	852e                	mv	a0,a1
    e8813500:	8082                	ret
        mDNSu8 c = *src++;
    e8813502:	9815478b          	lbuia	a5,(a0),1,0
        if (esc)
    e8813506:	c619                	beqz	a2,e8813514 <ConvertDomainLabelToCString_withescape+0x3c>
            if (c == '.' || c == esc)                           // If character is a dot or the escape character
    e8813508:	01178463          	beq	a5,a7,e8813510 <ConvertDomainLabelToCString_withescape+0x38>
    e881350c:	00c79763          	bne	a5,a2,e881351a <ConvertDomainLabelToCString_withescape+0x42>
                *ptr++ = esc;                                   // Output escape character
    e8813510:	1815d60b          	sbia	a2,(a1),1,0
        *ptr++ = (char)c;                                       // Copy the character
    e8813514:	1815d78b          	sbia	a5,(a1),1,0
    e8813518:	bff9                	j	e88134f6 <ConvertDomainLabelToCString_withescape+0x1e>
            else if (c <= ' ')                                  // If non-printing ascii,
    e881351a:	fef36de3          	bltu	t1,a5,e8813514 <ConvertDomainLabelToCString_withescape+0x3c>
                *ptr++ = (char)  ('0' + (c /  10) % 10);
    e881351e:	02d7d73b          	divuw	a4,a5,a3
                *ptr++ = esc;
    e8813522:	00c58023          	sb	a2,0(a1)
                *ptr++ = (char)  ('0' + (c / 100)     );
    e8813526:	01c580a3          	sb	t3,1(a1)
                *ptr++ = (char)  ('0' + (c /  10) % 10);
    e881352a:	058d                	addi	a1,a1,3
                c      = (mDNSu8)('0' + (c      ) % 10);
    e881352c:	02d7f7bb          	remuw	a5,a5,a3
                *ptr++ = (char)  ('0' + (c /  10) % 10);
    e8813530:	0307071b          	addiw	a4,a4,48
    e8813534:	fee58fa3          	sb	a4,-1(a1)
                c      = (mDNSu8)('0' + (c      ) % 10);
    e8813538:	03078793          	addi	a5,a5,48
    e881353c:	bfe1                	j	e8813514 <ConvertDomainLabelToCString_withescape+0x3c>
    if (len > MAX_DOMAIN_LABEL) return(mDNSNULL);               // If illegal label, abort
    e881353e:	4501                	li	a0,0
}
    e8813540:	8082                	ret

00000000e8813542 <ConvertDomainNameToCString_withescape>:
{
    e8813542:	7179                	addi	sp,sp,-48
    e8813544:	e422                	sd	s0,8(sp)
    e8813546:	e826                	sd	s1,16(sp)
    e8813548:	ec4a                	sd	s2,24(sp)
    e881354a:	f406                	sd	ra,40(sp)
    e881354c:	f04e                	sd	s3,32(sp)
    if (*src == 0) *ptr++ = '.';                                    // Special case: For root, just write a dot
    e881354e:	00054783          	lbu	a5,0(a0)
{
    e8813552:	8932                	mv	s2,a2
    const mDNSu8 *src         = name->c;                            // Domain name we're reading
    e8813554:	842a                	mv	s0,a0
    const mDNSu8 *const max   = name->c + MAX_DOMAIN_NAME;          // Maximum that's valid
    e8813556:	10050493          	addi	s1,a0,256
    if (*src == 0) *ptr++ = '.';                                    // Special case: For root, just write a dot
    e881355a:	e789                	bnez	a5,e8813564 <ConvertDomainNameToCString_withescape+0x22>
    e881355c:	02e00793          	li	a5,46
    e8813560:	1815d78b          	sbia	a5,(a1),1,0
        *ptr++ = '.';                                               // Write the dot after the label
    e8813564:	02e00993          	li	s3,46
    while (*src)                                                    // While more characters in the domain name
    e8813568:	00044783          	lbu	a5,0(s0)
    e881356c:	e789                	bnez	a5,e8813576 <ConvertDomainNameToCString_withescape+0x34>
    *ptr++ = 0;                                                     // Null-terminate the string
    e881356e:	852e                	mv	a0,a1
    e8813570:	1815500b          	sbia	zero,(a0),1,0
    return(ptr);                                                    // and return
    e8813574:	a031                	j	e8813580 <ConvertDomainNameToCString_withescape+0x3e>
        if (src + 1 + *src >= max) return(mDNSNULL);
    e8813576:	0785                	addi	a5,a5,1
    e8813578:	97a2                	add	a5,a5,s0
    e881357a:	0097ea63          	bltu	a5,s1,e881358e <ConvertDomainNameToCString_withescape+0x4c>
    e881357e:	4501                	li	a0,0
}
    e8813580:	70a2                	ld	ra,40(sp)
    e8813582:	6422                	ld	s0,8(sp)
    e8813584:	64c2                	ld	s1,16(sp)
    e8813586:	6962                	ld	s2,24(sp)
    e8813588:	7982                	ld	s3,32(sp)
    e881358a:	6145                	addi	sp,sp,48
    e881358c:	8082                	ret
        ptr = ConvertDomainLabelToCString_withescape((const domainlabel *)src, ptr, esc);
    e881358e:	864a                	mv	a2,s2
    e8813590:	8522                	mv	a0,s0
    e8813592:	f47ff0ef          	jal	ra,e88134d8 <ConvertDomainLabelToCString_withescape>
        if (!ptr) return(mDNSNULL);
    e8813596:	d565                	beqz	a0,e881357e <ConvertDomainNameToCString_withescape+0x3c>
        src += 1 + *src;
    e8813598:	00044783          	lbu	a5,0(s0)
        *ptr++ = '.';                                               // Write the dot after the label
    e881359c:	85aa                	mv	a1,a0
    e881359e:	1815d98b          	sbia	s3,(a1),1,0
        src += 1 + *src;
    e88135a2:	0785                	addi	a5,a5,1
    e88135a4:	943e                	add	s0,s0,a5
        *ptr++ = '.';                                               // Write the dot after the label
    e88135a6:	b7c9                	j	e8813568 <ConvertDomainNameToCString_withescape+0x26>

00000000e88135a8 <ConstructServiceName>:
{
    e88135a8:	715d                	addi	sp,sp,-80
    e88135aa:	e0a2                	sd	s0,64(sp)
    e88135ac:	f84a                	sd	s2,48(sp)
    e88135ae:	f052                	sd	s4,32(sp)
    e88135b0:	ec56                	sd	s5,24(sp)
    e88135b2:	e486                	sd	ra,72(sp)
    e88135b4:	fc26                	sd	s1,56(sp)
    e88135b6:	f44e                	sd	s3,40(sp)
    e88135b8:	e85a                	sd	s6,16(sp)
    e88135ba:	e45e                	sd	s7,8(sp)
    e88135bc:	8aaa                	mv	s5,a0
    e88135be:	8432                	mv	s0,a2
    e88135c0:	8a36                	mv	s4,a3
    mDNSu8 *dst = fqdn->c;
    e88135c2:	892a                	mv	s2,a0
    if (!name && type)
    e88135c4:	16059463          	bnez	a1,e881372c <ConstructServiceName+0x184>
        name = (domainlabel*)"";    // Set this up to be non-null, to avoid errors if we have to call LogMsg() below
    e88135c8:	000ae497          	auipc	s1,0xae
    e88135cc:	ca848493          	addi	s1,s1,-856 # e88c1270 <kHTTPServerClass+0x90>
    if (!name && type)
    e88135d0:	18060063          	beqz	a2,e8813750 <ConstructServiceName+0x1a8>
        if (s0[0] && s0[0] < 0x40)      // If legal first label (at least one character, and no more than 63)
    e88135d4:	00064783          	lbu	a5,0(a2)
    e88135d8:	03e00693          	li	a3,62
    e88135dc:	fff7871b          	addiw	a4,a5,-1
    e88135e0:	0ff77713          	andi	a4,a4,255
    e88135e4:	16e6e663          	bltu	a3,a4,e8813750 <ConstructServiceName+0x1a8>
            const mDNSu8 * s1 = s0 + 1 + s0[0];
    e88135e8:	00178713          	addi	a4,a5,1
    e88135ec:	00e609b3          	add	s3,a2,a4
            if (s1[0] && s1[0] < 0x40)  // and legal second label (at least one character, and no more than 63)
    e88135f0:	80e6470b          	lrbu	a4,a2,a4,0
    e88135f4:	fff7061b          	addiw	a2,a4,-1
    e88135f8:	0ff67613          	andi	a2,a2,255
    e88135fc:	14c6ea63          	bltu	a3,a2,e8813750 <ConstructServiceName+0x1a8>
                const mDNSu8 *s2 = s1 + 1 + s1[0];
    e8813600:	0705                	addi	a4,a4,1
    e8813602:	00e985b3          	add	a1,s3,a4
                if (s2[0] && s2[0] < 0x40 && s2[1+s2[0]] == 0)  // and we have three and only three labels
    e8813606:	80e9c70b          	lrbu	a4,s3,a4,0
    e881360a:	fff7061b          	addiw	a2,a4,-1
    e881360e:	0ff67613          	andi	a2,a2,255
    e8813612:	12c6ef63          	bltu	a3,a2,e8813750 <ConstructServiceName+0x1a8>
    e8813616:	0705                	addi	a4,a4,1
    e8813618:	80e5c70b          	lrbu	a4,a1,a4,0
    e881361c:	12071a63          	bnez	a4,e8813750 <ConstructServiceName+0x1a8>
                    for (i=0; i <= len;                      i++) *dst++ = *src++;
    e8813620:	80e4468b          	lrbu	a3,s0,a4,0
    e8813624:	0705                	addi	a4,a4,1
    e8813626:	1819568b          	sbia	a3,(s2),1,0
    e881362a:	0007069b          	sext.w	a3,a4
    e881362e:	fed7d9e3          	bge	a5,a3,e8813620 <ConstructServiceName+0x78>
                    for (i=0; i < (int)sizeof(SubTypeLabel); i++) *dst++ = SubTypeLabel[i];
    e8813632:	757367b7          	lui	a5,0x75736
    e8813636:	f047879b          	addiw	a5,a5,-252
    e881363a:	00f92023          	sw	a5,0(s2)
    e881363e:	06200793          	li	a5,98
    e8813642:	00f90223          	sb	a5,4(s2)
                    if (SameDomainName((domainname*)s0, (const domainname*)"\x09_services\x07_dns-sd\x04_udp"))
    e8813646:	0008e597          	auipc	a1,0x8e
    e881364a:	7c258593          	addi	a1,a1,1986 # e88a1e08 <AllHosts_v6_Eth+0x298>
    e881364e:	8522                	mv	a0,s0
    e8813650:	9fbff0ef          	jal	ra,e881304a <SameDomainName>
    e8813654:	e111                	bnez	a0,e8813658 <ConstructServiceName+0xb0>
                    for (i=0; i < (int)sizeof(SubTypeLabel); i++) *dst++ = SubTypeLabel[i];
    e8813656:	0915                	addi	s2,s2,5
                    type = (const domainname *)s1;
    e8813658:	844e                	mv	s0,s3
        name = (domainlabel*)"";    // Set this up to be non-null, to avoid errors if we have to call LogMsg() below
    e881365a:	000ae497          	auipc	s1,0xae
    e881365e:	c1648493          	addi	s1,s1,-1002 # e88c1270 <kHTTPServerClass+0x90>
    e8813662:	a0fd                	j	e8813750 <ConstructServiceName+0x1a8>
        LogMsg("Bad service type in %#s.%##s%##s Application protocol name must be underscore plus 1-15 characters. "
    e8813664:	8752                	mv	a4,s4
    e8813666:	86a2                	mv	a3,s0
    e8813668:	8626                	mv	a2,s1
    e881366a:	0008e597          	auipc	a1,0x8e
    e881366e:	7b658593          	addi	a1,a1,1974 # e88a1e20 <AllHosts_v6_Eth+0x2b0>
    e8813672:	4501                	li	a0,0
    e8813674:	6391b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (len < 2 || len >= 0x40 || (len > 16 && !SameDomainName(domain, &localdomain))) return(mDNSNULL);
    e8813678:	03d00793          	li	a5,61
    e881367c:	0f67f263          	bgeu	a5,s6,e8813760 <ConstructServiceName+0x1b8>
    return(mDNSNULL);
    e8813680:	4501                	li	a0,0
    e8813682:	a2d1                	j	e8813846 <ConstructServiceName+0x29e>
        if (mDNSIsLetter(src[i]) || mDNSIsDigit(src[i])) continue;
    e8813684:	00064683          	lbu	a3,0(a2)
    e8813688:	fdf6f713          	andi	a4,a3,-33
    e881368c:	fbf7071b          	addiw	a4,a4,-65
    e8813690:	0ff77713          	andi	a4,a4,255
    e8813694:	02e5f063          	bgeu	a1,a4,e88136b4 <ConstructServiceName+0x10c>
    e8813698:	fd06871b          	addiw	a4,a3,-48
    e881369c:	0ff77713          	andi	a4,a4,255
    e88136a0:	00e57a63          	bgeu	a0,a4,e88136b4 <ConstructServiceName+0x10c>
        if ((src[i] == '-' || src[i] == '_') && i > 2 && i < len)
    e88136a4:	01068463          	beq	a3,a6,e88136ac <ConstructServiceName+0x104>
    e88136a8:	04669e63          	bne	a3,t1,e8813704 <ConstructServiceName+0x15c>
    e88136ac:	05178c63          	beq	a5,a7,e8813704 <ConstructServiceName+0x15c>
    e88136b0:	0577da63          	bge	a5,s7,e8813704 <ConstructServiceName+0x15c>
    for (i=2; i<=len; i++)
    e88136b4:	2785                	addiw	a5,a5,1
    e88136b6:	0605                	addi	a2,a2,1
    e88136b8:	a8f9                	j	e8813796 <ConstructServiceName+0x1ee>
    if (!ValidTransportProtocol(src)) { errormsg = "Transport protocol name must be _udp or _tcp"; goto fail; }
    e88136ba:	07400693          	li	a3,116
    e88136be:	00d71a63          	bne	a4,a3,e88136d2 <ConstructServiceName+0x12a>
    e88136c2:	0039c703          	lbu	a4,3(s3)
    e88136c6:	06300693          	li	a3,99
    e88136ca:	02076713          	ori	a4,a4,32
    e88136ce:	10d70e63          	beq	a4,a3,e88137ea <ConstructServiceName+0x242>
    e88136d2:	0008e617          	auipc	a2,0x8e
    e88136d6:	66e60613          	addi	a2,a2,1646 # e88a1d40 <AllHosts_v6_Eth+0x1d0>
    e88136da:	a029                	j	e88136e4 <ConstructServiceName+0x13c>
        if (len >= 0x40) { errormsg = "Service instance name too long"; goto fail; }
    e88136dc:	0008e617          	auipc	a2,0x8e
    e88136e0:	6bc60613          	addi	a2,a2,1724 # e88a1d98 <AllHosts_v6_Eth+0x228>
    LogMsg("ConstructServiceName: %s: %#s.%##s%##s", errormsg, name->c, type->c, domain->c);
    e88136e4:	87d2                	mv	a5,s4
    e88136e6:	8722                	mv	a4,s0
    e88136e8:	86a6                	mv	a3,s1
    e88136ea:	0008e597          	auipc	a1,0x8e
    e88136ee:	7de58593          	addi	a1,a1,2014 # e88a1ec8 <AllHosts_v6_Eth+0x358>
    e88136f2:	4501                	li	a0,0
    e88136f4:	5b91b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88136f8:	b761                	j	e8813680 <ConstructServiceName+0xd8>
    if (src[1] != '_') { errormsg = "Application protocol name must begin with underscore"; goto fail; }
    e88136fa:	0008e617          	auipc	a2,0x8e
    e88136fe:	6be60613          	addi	a2,a2,1726 # e88a1db8 <AllHosts_v6_Eth+0x248>
    e8813702:	b7cd                	j	e88136e4 <ConstructServiceName+0x13c>
        errormsg = "Application protocol name must contain only letters, digits, and hyphens";
    e8813704:	0008e617          	auipc	a2,0x8e
    e8813708:	58460613          	addi	a2,a2,1412 # e88a1c88 <AllHosts_v6_Eth+0x118>
    e881370c:	bfe1                	j	e88136e4 <ConstructServiceName+0x13c>
    if (*src) { errormsg = "Service type must have only two labels"; goto fail; }
    e881370e:	0008e617          	auipc	a2,0x8e
    e8813712:	5ca60613          	addi	a2,a2,1482 # e88a1cd8 <AllHosts_v6_Eth+0x168>
    e8813716:	b7f9                	j	e88136e4 <ConstructServiceName+0x13c>
    if (!domain->c[0]) { errormsg = "Service domain must be non-empty"; goto fail; }
    e8813718:	0008e617          	auipc	a2,0x8e
    e881371c:	65860613          	addi	a2,a2,1624 # e88a1d70 <AllHosts_v6_Eth+0x200>
    e8813720:	b7d1                	j	e88136e4 <ConstructServiceName+0x13c>
    { errormsg = "Illegal domain \"local.arpa.\" Use \"local.\" (or empty string)"; goto fail; }
    e8813722:	0008e617          	auipc	a2,0x8e
    e8813726:	5de60613          	addi	a2,a2,1502 # e88a1d00 <AllHosts_v6_Eth+0x190>
    e881372a:	bf6d                	j	e88136e4 <ConstructServiceName+0x13c>
    if (name && name->c[0])
    e881372c:	0005c783          	lbu	a5,0(a1)
    e8813730:	84ae                	mv	s1,a1
    e8813732:	d785                	beqz	a5,e881365a <ConstructServiceName+0xb2>
        if (len >= 0x40) { errormsg = "Service instance name too long"; goto fail; }
    e8813734:	03f00713          	li	a4,63
    e8813738:	faf742e3          	blt	a4,a5,e88136dc <ConstructServiceName+0x134>
    e881373c:	4701                	li	a4,0
        for (i=0; i<=len; i++) *dst++ = *src++;
    e881373e:	80e4c68b          	lrbu	a3,s1,a4,0
    e8813742:	0705                	addi	a4,a4,1
    e8813744:	1819568b          	sbia	a3,(s2),1,0
    e8813748:	0007069b          	sext.w	a3,a4
    e881374c:	fed7d9e3          	bge	a5,a3,e881373e <ConstructServiceName+0x196>
    len = *src;
    e8813750:	00044b83          	lbu	s7,0(s0)
    if (len < 2 || len > 16)
    e8813754:	47b9                	li	a5,14
    src = type->c;                                      // Put the service type into the domain name
    e8813756:	89a2                	mv	s3,s0
    if (len < 2 || len > 16)
    e8813758:	ffeb8b1b          	addiw	s6,s7,-2
    e881375c:	f167e4e3          	bltu	a5,s6,e8813664 <ConstructServiceName+0xbc>
    if (len < 2 || len >= 0x40 || (len > 16 && !SameDomainName(domain, &localdomain))) return(mDNSNULL);
    e8813760:	47c1                	li	a5,16
    e8813762:	0177da63          	bge	a5,s7,e8813776 <ConstructServiceName+0x1ce>
    e8813766:	0008f597          	auipc	a1,0x8f
    e881376a:	d4258593          	addi	a1,a1,-702 # e88a24a8 <DiscardPort+0x498>
    e881376e:	8552                	mv	a0,s4
    e8813770:	8dbff0ef          	jal	ra,e881304a <SameDomainName>
    e8813774:	d511                	beqz	a0,e8813680 <ConstructServiceName+0xd8>
    if (src[1] != '_') { errormsg = "Application protocol name must begin with underscore"; goto fail; }
    e8813776:	00144703          	lbu	a4,1(s0)
    e881377a:	05f00793          	li	a5,95
    e881377e:	f6f71ee3          	bne	a4,a5,e88136fa <ConstructServiceName+0x152>
    e8813782:	00240613          	addi	a2,s0,2
    for (i=2; i<=len; i++)
    e8813786:	4789                	li	a5,2
        if (mDNSIsLetter(src[i]) || mDNSIsDigit(src[i])) continue;
    e8813788:	45e5                	li	a1,25
    e881378a:	4525                	li	a0,9
        if ((src[i] == '-' || src[i] == '_') && i > 2 && i < len)
    e881378c:	02d00813          	li	a6,45
    e8813790:	4889                	li	a7,2
    e8813792:	05f00313          	li	t1,95
    for (i=2; i<=len; i++)
    e8813796:	eefbd7e3          	bge	s7,a5,e8813684 <ConstructServiceName+0xdc>
    e881379a:	87ca                	mv	a5,s2
    for (i=0; i<=len; i++) *dst++ = *src++;
    e881379c:	9819c70b          	lbuia	a4,(s3),1,0
    e88137a0:	1817d70b          	sbia	a4,(a5),1,0
    e88137a4:	4127873b          	subw	a4,a5,s2
    e88137a8:	feebdae3          	bge	s7,a4,e881379c <ConstructServiceName+0x1f4>
    if (!ValidTransportProtocol(src)) { errormsg = "Transport protocol name must be _udp or _tcp"; goto fail; }
    e88137ac:	0009c683          	lbu	a3,0(s3)
    e88137b0:	4711                	li	a4,4
    e88137b2:	f2e690e3          	bne	a3,a4,e88136d2 <ConstructServiceName+0x12a>
    e88137b6:	0019c683          	lbu	a3,1(s3)
    e88137ba:	05f00713          	li	a4,95
    e88137be:	f0e69ae3          	bne	a3,a4,e88136d2 <ConstructServiceName+0x12a>
    e88137c2:	0029c703          	lbu	a4,2(s3)
    e88137c6:	07500693          	li	a3,117
    e88137ca:	02076713          	ori	a4,a4,32
    e88137ce:	eed716e3          	bne	a4,a3,e88136ba <ConstructServiceName+0x112>
    e88137d2:	0039c703          	lbu	a4,3(s3)
    e88137d6:	06400693          	li	a3,100
    e88137da:	0008e617          	auipc	a2,0x8e
    e88137de:	56660613          	addi	a2,a2,1382 # e88a1d40 <AllHosts_v6_Eth+0x1d0>
    e88137e2:	02076713          	ori	a4,a4,32
    e88137e6:	eed71fe3          	bne	a4,a3,e88136e4 <ConstructServiceName+0x13c>
    e88137ea:	0049c703          	lbu	a4,4(s3)
    e88137ee:	07000693          	li	a3,112
    e88137f2:	02076713          	ori	a4,a4,32
    e88137f6:	ecd71ee3          	bne	a4,a3,e88136d2 <ConstructServiceName+0x12a>
    e88137fa:	4701                	li	a4,0
    for (i=0; i<=len; i++) *dst++ = *src++;
    e88137fc:	4695                	li	a3,5
    e88137fe:	80e9c60b          	lrbu	a2,s3,a4,0
    e8813802:	00e7d60b          	srb	a2,a5,a4,0
    e8813806:	0705                	addi	a4,a4,1
    e8813808:	fed71be3          	bne	a4,a3,e88137fe <ConstructServiceName+0x256>
    if (*src) { errormsg = "Service type must have only two labels"; goto fail; }
    e881380c:	0059c703          	lbu	a4,5(s3)
    e8813810:	ee071fe3          	bnez	a4,e881370e <ConstructServiceName+0x166>
    *dst = 0;
    e8813814:	000782a3          	sb	zero,5(a5) # 75736005 <memcmp-0x730c9ffb>
    if (!domain->c[0]) { errormsg = "Service domain must be non-empty"; goto fail; }
    e8813818:	000a4783          	lbu	a5,0(s4)
    e881381c:	ee078ee3          	beqz	a5,e8813718 <ConstructServiceName+0x170>
    if (SameDomainName(domain, (const domainname*)"\x05" "local" "\x04" "arpa"))
    e8813820:	0008e597          	auipc	a1,0x8e
    e8813824:	69858593          	addi	a1,a1,1688 # e88a1eb8 <AllHosts_v6_Eth+0x348>
    e8813828:	8552                	mv	a0,s4
    e881382a:	821ff0ef          	jal	ra,e881304a <SameDomainName>
    e881382e:	ee051ae3          	bnez	a0,e8813722 <ConstructServiceName+0x17a>
    dst = AppendDomainName(fqdn, domain);
    e8813832:	85d2                	mv	a1,s4
    e8813834:	8556                	mv	a0,s5
    e8813836:	c07ff0ef          	jal	ra,e881343c <AppendDomainName>
    if (!dst) { errormsg = "Service domain too long"; goto fail; }
    e881383a:	0008e617          	auipc	a2,0x8e
    e881383e:	5b660613          	addi	a2,a2,1462 # e88a1df0 <AllHosts_v6_Eth+0x280>
    e8813842:	ea0501e3          	beqz	a0,e88136e4 <ConstructServiceName+0x13c>
}
    e8813846:	60a6                	ld	ra,72(sp)
    e8813848:	6406                	ld	s0,64(sp)
    e881384a:	74e2                	ld	s1,56(sp)
    e881384c:	7942                	ld	s2,48(sp)
    e881384e:	79a2                	ld	s3,40(sp)
    e8813850:	7a02                	ld	s4,32(sp)
    e8813852:	6ae2                	ld	s5,24(sp)
    e8813854:	6b42                	ld	s6,16(sp)
    e8813856:	6ba2                	ld	s7,8(sp)
    e8813858:	6161                	addi	sp,sp,80
    e881385a:	8082                	ret

00000000e881385c <DeconstructServiceName>:
    len = *src;
    e881385c:	00054783          	lbu	a5,0(a0)
    if (!len)         { debugf("DeconstructServiceName: FQDN empty!");                             return(mDNSfalse); }
    e8813860:	03e00813          	li	a6,62
    e8813864:	fff7871b          	addiw	a4,a5,-1
    e8813868:	0ff77713          	andi	a4,a4,255
    e881386c:	00e87463          	bgeu	a6,a4,e8813874 <DeconstructServiceName+0x18>
    e8813870:	4501                	li	a0,0
    e8813872:	8082                	ret
    const mDNSu8 *src = fqdn->c;
    e8813874:	882a                	mv	a6,a0
    len = *src;
    e8813876:	4701                	li	a4,0
    for (i=0; i<=len; i++) *dst++ = *src++;
    e8813878:	9818488b          	lbuia	a7,(a6),1,0
    e881387c:	00e5d88b          	srb	a7,a1,a4,0
    e8813880:	0705                	addi	a4,a4,1
    e8813882:	0007089b          	sext.w	a7,a4
    e8813886:	ff17d9e3          	bge	a5,a7,e8813878 <DeconstructServiceName+0x1c>
    len = *src;
    e881388a:	00084783          	lbu	a5,0(a6)
    if (!len)         { debugf("DeconstructServiceName: FQDN contains only one label!");           return(mDNSfalse); }
    e881388e:	03e00593          	li	a1,62
    e8813892:	fff7871b          	addiw	a4,a5,-1
    e8813896:	0ff77713          	andi	a4,a4,255
    e881389a:	fce5ebe3          	bltu	a1,a4,e8813870 <DeconstructServiceName+0x14>
    if (src[1] != '_') { debugf("DeconstructServiceName: No _ at start of application protocol");   return(mDNSfalse); }
    e881389e:	00184583          	lbu	a1,1(a6)
    e88138a2:	05f00713          	li	a4,95
    e88138a6:	fce595e3          	bne	a1,a4,e8813870 <DeconstructServiceName+0x14>
    len = *src;
    e88138aa:	85be                	mv	a1,a5
    for (i=0; i<=len; i++) *dst++ = *src++;
    e88138ac:	8742                	mv	a4,a6
    for (i=0; i<=len; i++) *dst++ = *src++;
    e88138ae:	87ba                	mv	a5,a4
    e88138b0:	9817c88b          	lbuia	a7,(a5),1,0
    e88138b4:	1816588b          	sbia	a7,(a2),1,0
    e88138b8:	410788bb          	subw	a7,a5,a6
    e88138bc:	0715dd63          	bge	a1,a7,e8813936 <DeconstructServiceName+0xda>
    if (!ValidTransportProtocol(src))
    e88138c0:	0007c803          	lbu	a6,0(a5)
    e88138c4:	4591                	li	a1,4
    e88138c6:	fab815e3          	bne	a6,a1,e8813870 <DeconstructServiceName+0x14>
    e88138ca:	0017c803          	lbu	a6,1(a5)
    e88138ce:	05f00593          	li	a1,95
    e88138d2:	f8b81fe3          	bne	a6,a1,e8813870 <DeconstructServiceName+0x14>
    e88138d6:	0027c583          	lbu	a1,2(a5)
    e88138da:	07500813          	li	a6,117
    e88138de:	0205e593          	ori	a1,a1,32
    e88138e2:	05059c63          	bne	a1,a6,e881393a <DeconstructServiceName+0xde>
    e88138e6:	0037c583          	lbu	a1,3(a5)
    e88138ea:	06400813          	li	a6,100
    e88138ee:	0205e593          	ori	a1,a1,32
    e88138f2:	f7059fe3          	bne	a1,a6,e8813870 <DeconstructServiceName+0x14>
    e88138f6:	0047c583          	lbu	a1,4(a5)
    e88138fa:	07000813          	li	a6,112
    e88138fe:	0205e593          	ori	a1,a1,32
    e8813902:	f70597e3          	bne	a1,a6,e8813870 <DeconstructServiceName+0x14>
    e8813906:	4581                	li	a1,0
    for (i=0; i<=len; i++) *dst++ = *src++;
    e8813908:	4815                	li	a6,5
    e881390a:	80b7c88b          	lrbu	a7,a5,a1,0
    e881390e:	00b6588b          	srb	a7,a2,a1,0
    e8813912:	0585                	addi	a1,a1,1
    e8813914:	ff059be3          	bne	a1,a6,e881390a <DeconstructServiceName+0xae>
    e8813918:	00670793          	addi	a5,a4,6
    const mDNSu8 *max = fqdn->c + MAX_DOMAIN_NAME;
    e881391c:	10050513          	addi	a0,a0,256
    *dst++ = 0;                                         // Put terminator on the end of service type
    e8813920:	000602a3          	sb	zero,5(a2)
        if (len >= 0x40)
    e8813924:	03f00593          	li	a1,63
    while (*src)
    e8813928:	0007c703          	lbu	a4,0(a5)
    e881392c:	e315                	bnez	a4,e8813950 <DeconstructServiceName+0xf4>
    *dst++ = 0;     // Put the null root label on the end
    e881392e:	00068023          	sb	zero,0(a3)
    return(mDNStrue);
    e8813932:	4505                	li	a0,1
}
    e8813934:	8082                	ret
    for (i=0; i<=len; i++) *dst++ = *src++;
    e8813936:	873e                	mv	a4,a5
    e8813938:	bf9d                	j	e88138ae <DeconstructServiceName+0x52>
    if (!ValidTransportProtocol(src))
    e881393a:	07400813          	li	a6,116
    e881393e:	f30599e3          	bne	a1,a6,e8813870 <DeconstructServiceName+0x14>
    e8813942:	0037c583          	lbu	a1,3(a5)
    e8813946:	06300813          	li	a6,99
    e881394a:	0205e593          	ori	a1,a1,32
    e881394e:	b755                	j	e88138f2 <DeconstructServiceName+0x96>
        len = *src;
    e8813950:	863a                	mv	a2,a4
        if (len >= 0x40)
    e8813952:	f0e5cfe3          	blt	a1,a4,e8813870 <DeconstructServiceName+0x14>
        if (src + 1 + len + 1 >= max)
    e8813956:	0709                	addi	a4,a4,2
    e8813958:	973e                	add	a4,a4,a5
    e881395a:	f0a77be3          	bgeu	a4,a0,e8813870 <DeconstructServiceName+0x14>
    e881395e:	873e                	mv	a4,a5
        for (i=0; i<=len; i++) *dst++ = *src++;
    e8813960:	9817480b          	lbuia	a6,(a4),1,0
    e8813964:	1816d80b          	sbia	a6,(a3),1,0
    e8813968:	40f7083b          	subw	a6,a4,a5
    e881396c:	ff065ae3          	bge	a2,a6,e8813960 <DeconstructServiceName+0x104>
    e8813970:	87ba                	mv	a5,a4
    e8813972:	bf5d                	j	e8813928 <DeconstructServiceName+0xcc>

00000000e8813974 <DNSNameToLowerCase>:
    const mDNSu8 *const max = d->c + MAX_DOMAIN_NAME;
    e8813974:	10050813          	addi	a6,a0,256
            if (mDNSIsUpperCase(ac)) ac += 'a' - 'A';
    e8813978:	48e5                	li	a7,25
    while (*a)
    e881397a:	00054783          	lbu	a5,0(a0)
    e881397e:	e789                	bnez	a5,e8813988 <DNSNameToLowerCase+0x14>
    *b = 0;
    e8813980:	00058023          	sb	zero,0(a1)
    return mStatus_NoError;
    e8813984:	4501                	li	a0,0
}
    e8813986:	8082                	ret
        if (a + 1 + *a >= max)
    e8813988:	00178713          	addi	a4,a5,1
    e881398c:	972a                	add	a4,a4,a0
    e881398e:	03076063          	bltu	a4,a6,e88139ae <DNSNameToLowerCase+0x3a>
{
    e8813992:	1141                	addi	sp,sp,-16
            LogMsg("DNSNameToLowerCase: ERROR!! Malformed Domain name");
    e8813994:	4501                	li	a0,0
    e8813996:	0008e597          	auipc	a1,0x8e
    e881399a:	55a58593          	addi	a1,a1,1370 # e88a1ef0 <AllHosts_v6_Eth+0x380>
{
    e881399e:	e406                	sd	ra,8(sp)
            LogMsg("DNSNameToLowerCase: ERROR!! Malformed Domain name");
    e88139a0:	30d1b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e88139a4:	60a2                	ld	ra,8(sp)
            LogMsg("DNSNameToLowerCase: ERROR!! Malformed Domain name");
    e88139a6:	7541                	lui	a0,0xffff0
    e88139a8:	1571                	addi	a0,a0,-4
}
    e88139aa:	0141                	addi	sp,sp,16
    e88139ac:	8082                	ret
        len = *a++;
    e88139ae:	833e                	mv	t1,a5
        *b++ = len;
    e88139b0:	00f58023          	sb	a5,0(a1)
    e88139b4:	4685                	li	a3,1
            mDNSu8 ac = *a++;
    e88139b6:	80d5470b          	lrbu	a4,a0,a3,0
            if (mDNSIsUpperCase(ac)) ac += 'a' - 'A';
    e88139ba:	fbf7061b          	addiw	a2,a4,-65
    e88139be:	0ff67613          	andi	a2,a2,255
    e88139c2:	00c8e663          	bltu	a7,a2,e88139ce <DNSNameToLowerCase+0x5a>
    e88139c6:	0207071b          	addiw	a4,a4,32
    e88139ca:	0ff77713          	andi	a4,a4,255
            *b++ = ac;
    e88139ce:	00d5d70b          	srb	a4,a1,a3,0
        for (i = 0; i < len; i++)
    e88139d2:	0685                	addi	a3,a3,1
    e88139d4:	fff6871b          	addiw	a4,a3,-1
    e88139d8:	fc674fe3          	blt	a4,t1,e88139b6 <DNSNameToLowerCase+0x42>
    e88139dc:	37fd                	addiw	a5,a5,-1
    e88139de:	7c07b78b          	extu	a5,a5,31,0
    e88139e2:	0789                	addi	a5,a5,2
    e88139e4:	953e                	add	a0,a0,a5
    e88139e6:	95be                	add	a1,a1,a5
    e88139e8:	bf49                	j	e881397a <DNSNameToLowerCase+0x6>

00000000e88139ea <NSEC3HashName>:
{
    e88139ea:	7109                	addi	sp,sp,-384
    e88139ec:	ead2                	sd	s4,336(sp)
    e88139ee:	fa62                	sd	s8,304(sp)
    e88139f0:	8a2e                	mv	s4,a1
    mDNSu8 *p = (mDNSu8 *)&nsec3->salt;
    e88139f2:	00558c13          	addi	s8,a1,5
    if (DNSNameToLowerCase((domainname *)name, &lname) != mStatus_NoError)
    e88139f6:	080c                	addi	a1,sp,16
{
    e88139f8:	fe5e                	sd	s7,312(sp)
    e88139fa:	f666                	sd	s9,296(sp)
    e88139fc:	f26a                	sd	s10,288(sp)
    e88139fe:	fe86                	sd	ra,376(sp)
    e8813a00:	faa2                	sd	s0,368(sp)
    e8813a02:	f6a6                	sd	s1,360(sp)
    e8813a04:	f2ca                	sd	s2,352(sp)
    e8813a06:	eece                	sd	s3,344(sp)
    e8813a08:	e6d6                	sd	s5,328(sp)
    e8813a0a:	e2da                	sd	s6,320(sp)
    e8813a0c:	ee6e                	sd	s11,280(sp)
    e8813a0e:	8cb2                	mv	s9,a2
    e8813a10:	8bb6                	mv	s7,a3
    e8813a12:	8d3a                	mv	s10,a4
    e8813a14:	e43e                	sd	a5,8(sp)
    if (DNSNameToLowerCase((domainname *)name, &lname) != mStatus_NoError)
    e8813a16:	f5fff0ef          	jal	ra,e8813974 <DNSNameToLowerCase>
    e8813a1a:	c90d                	beqz	a0,e8813a4c <NSEC3HashName+0x62>
        LogMsg("NSEC3HashName: ERROR!! DNSNameToLowerCase failed");
    e8813a1c:	0008f597          	auipc	a1,0x8f
    e8813a20:	b5458593          	addi	a1,a1,-1196 # e88a2570 <NATPMPPort+0x8>
    e8813a24:	4501                	li	a0,0
            LogMsg("NSEC3HashName: ERROR!! Cannot allocate context");
    e8813a26:	2871b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return mDNSNULL;
    e8813a2a:	4401                	li	s0,0
}
    e8813a2c:	8522                	mv	a0,s0
    e8813a2e:	70f6                	ld	ra,376(sp)
    e8813a30:	7456                	ld	s0,368(sp)
    e8813a32:	74b6                	ld	s1,360(sp)
    e8813a34:	7916                	ld	s2,352(sp)
    e8813a36:	69f6                	ld	s3,344(sp)
    e8813a38:	6a56                	ld	s4,336(sp)
    e8813a3a:	6ab6                	ld	s5,328(sp)
    e8813a3c:	6b16                	ld	s6,320(sp)
    e8813a3e:	7bf2                	ld	s7,312(sp)
    e8813a40:	7c52                	ld	s8,304(sp)
    e8813a42:	7cb2                	ld	s9,296(sp)
    e8813a44:	7d12                	ld	s10,288(sp)
    e8813a46:	6df2                	ld	s11,280(sp)
    e8813a48:	6119                	addi	sp,sp,384
    e8813a4a:	8082                	ret
    digestlen = DomainNameLength(&lname);
    e8813a4c:	0a0c                	addi	a1,sp,272
    e8813a4e:	0808                	addi	a0,sp,16
    e8813a50:	efcff0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8813a54:	0005099b          	sext.w	s3,a0
    iterations = swap16(nsec3->iterations);
    e8813a58:	002a5783          	lhu	a5,2(s4)
    mDNSBool first = mDNStrue;
    e8813a5c:	4b05                	li	s6,1
    digest = lname.c;
    e8813a5e:	0800                	addi	s0,sp,16
    return (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]);
    e8813a60:	0ff7f913          	andi	s2,a5,255
    e8813a64:	0089191b          	slliw	s2,s2,0x8
    e8813a68:	5c87b78b          	extu	a5,a5,23,8
    iterations = swap16(nsec3->iterations);
    e8813a6c:	00f96933          	or	s2,s2,a5
    for (i = 0; i <= iterations; i++)
    e8813a70:	4a81                	li	s5,0
            AlgAdd(ctx, AnonData, AnonDataLen);
    e8813a72:	000b8d9b          	sext.w	s11,s7
        ctx = AlgCreate(DIGEST_ALG, nsec3->alg);
    e8813a76:	000a4583          	lbu	a1,0(s4)
    e8813a7a:	4505                	li	a0,1
    e8813a7c:	8a2ff0ef          	jal	ra,e8812b1e <AlgCreate>
    e8813a80:	84aa                	mv	s1,a0
        if (!ctx)
    e8813a82:	e511                	bnez	a0,e8813a8e <NSEC3HashName+0xa4>
            LogMsg("NSEC3HashName: ERROR!! Cannot allocate context");
    e8813a84:	0008f597          	auipc	a1,0x8f
    e8813a88:	b2458593          	addi	a1,a1,-1244 # e88a25a8 <NATPMPPort+0x40>
    e8813a8c:	bf69                	j	e8813a26 <NSEC3HashName+0x3c>
        AlgAdd(ctx, digest, digestlen);
    e8813a8e:	864e                	mv	a2,s3
    e8813a90:	85a2                	mv	a1,s0
    e8813a92:	a16ff0ef          	jal	ra,e8812ca8 <AlgAdd>
        if (nsec3->saltLength)
    e8813a96:	004a4603          	lbu	a2,4(s4)
    e8813a9a:	c609                	beqz	a2,e8813aa4 <NSEC3HashName+0xba>
            AlgAdd(ctx, p, nsec3->saltLength);
    e8813a9c:	85e2                	mv	a1,s8
    e8813a9e:	8526                	mv	a0,s1
    e8813aa0:	a08ff0ef          	jal	ra,e8812ca8 <AlgAdd>
        if (AnonDataLen)
    e8813aa4:	000b8763          	beqz	s7,e8813ab2 <NSEC3HashName+0xc8>
            AlgAdd(ctx, AnonData, AnonDataLen);
    e8813aa8:	866e                	mv	a2,s11
    e8813aaa:	85e6                	mv	a1,s9
    e8813aac:	8526                	mv	a0,s1
    e8813aae:	9faff0ef          	jal	ra,e8812ca8 <AlgAdd>
        if (first)
    e8813ab2:	000b0863          	beqz	s6,e8813ac2 <NSEC3HashName+0xd8>
            digestlen = AlgLength(ctx);
    e8813ab6:	8526                	mv	a0,s1
    e8813ab8:	988ff0ef          	jal	ra,e8812c40 <AlgLength>
    e8813abc:	0005099b          	sext.w	s3,a0
            digest = hash;
    e8813ac0:	846a                	mv	s0,s10
        AlgFinal(ctx, (void *)digest, digestlen);
    e8813ac2:	864e                	mv	a2,s3
    e8813ac4:	85a2                	mv	a1,s0
    e8813ac6:	8526                	mv	a0,s1
    e8813ac8:	a4cff0ef          	jal	ra,e8812d14 <AlgFinal>
    for (i = 0; i <= iterations; i++)
    e8813acc:	2a85                	addiw	s5,s5,1
        AlgDestroy(ctx);
    e8813ace:	8526                	mv	a0,s1
    e8813ad0:	8f6ff0ef          	jal	ra,e8812bc6 <AlgDestroy>
    for (i = 0; i <= iterations; i++)
    e8813ad4:	4b01                	li	s6,0
    e8813ad6:	fb5970e3          	bgeu	s2,s5,e8813a76 <NSEC3HashName+0x8c>
    *dlen = digestlen;
    e8813ada:	67a2                	ld	a5,8(sp)
    e8813adc:	0137a023          	sw	s3,0(a5)
    return digest;
    e8813ae0:	b7b1                	j	e8813a2c <NSEC3HashName+0x42>

00000000e8813ae2 <TruncateUTF8ToLength>:
    if (length > max)
    e8813ae2:	02b67463          	bgeu	a2,a1,e8813b0a <TruncateUTF8ToLength+0x28>
        mDNSu8 c2 = (max+1 < length) ? string[max+1] : (mDNSu8)0xB0;    // Second byte after cut point
    e8813ae6:	0016081b          	addiw	a6,a2,1
        mDNSu8 c1 = string[max];                                        // First byte after cut point
    e8813aea:	90c5468b          	lurbu	a3,a0,a2,0
        mDNSu8 c2 = (max+1 < length) ? string[max+1] : (mDNSu8)0xB0;    // Second byte after cut point
    e8813aee:	0b000793          	li	a5,176
    e8813af2:	00b87463          	bgeu	a6,a1,e8813afa <TruncateUTF8ToLength+0x18>
    e8813af6:	9105478b          	lurbu	a5,a0,a6,0
    e8813afa:	85b2                	mv	a1,a2
            if (!continuation && !secondsurrogate) break;
    e8813afc:	08000813          	li	a6,128
            mDNSBool secondsurrogate = (c1 == 0xED && (c2 & 0xF0) == 0xB0);
    e8813b00:	0ed00613          	li	a2,237
    e8813b04:	0b000893          	li	a7,176
        while (length > 0)
    e8813b08:	e199                	bnez	a1,e8813b0e <TruncateUTF8ToLength+0x2c>
}
    e8813b0a:	852e                	mv	a0,a1
    e8813b0c:	8082                	ret
            mDNSBool continuation    = ((c1 & 0xC0) == 0x80);
    e8813b0e:	0c06f313          	andi	t1,a3,192
            mDNSBool secondsurrogate = (c1 == 0xED && (c2 & 0xF0) == 0xB0);
    e8813b12:	fff5871b          	addiw	a4,a1,-1
    e8813b16:	00c69b63          	bne	a3,a2,e8813b2c <TruncateUTF8ToLength+0x4a>
    e8813b1a:	0f07f793          	andi	a5,a5,240
    e8813b1e:	01179963          	bne	a5,a7,e8813b30 <TruncateUTF8ToLength+0x4e>
            c1 = string[--length];
    e8813b22:	87b6                	mv	a5,a3
    e8813b24:	85ba                	mv	a1,a4
    e8813b26:	90e5468b          	lurbu	a3,a0,a4,0
    e8813b2a:	bff9                	j	e8813b08 <TruncateUTF8ToLength+0x26>
            if (!continuation && !secondsurrogate) break;
    e8813b2c:	ff030be3          	beq	t1,a6,e8813b22 <TruncateUTF8ToLength+0x40>
    e8813b30:	7c07370b          	extu	a4,a4,31,0
    e8813b34:	953a                	add	a0,a0,a4
            c1 = string[--length];
    e8813b36:	87ae                	mv	a5,a1
        while (length > 0 && string[length-1] <= ' ') length--;
    e8813b38:	02000713          	li	a4,32
    e8813b3c:	00054683          	lbu	a3,0(a0) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    e8813b40:	fff7859b          	addiw	a1,a5,-1
    e8813b44:	00d77463          	bgeu	a4,a3,e8813b4c <TruncateUTF8ToLength+0x6a>
    e8813b48:	85be                	mv	a1,a5
    e8813b4a:	b7c1                	j	e8813b0a <TruncateUTF8ToLength+0x28>
    e8813b4c:	157d                	addi	a0,a0,-1
    e8813b4e:	87ae                	mv	a5,a1
    e8813b50:	f5f5                	bnez	a1,e8813b3c <TruncateUTF8ToLength+0x5a>
    e8813b52:	bf65                	j	e8813b0a <TruncateUTF8ToLength+0x28>

00000000e8813b54 <LabelContainsSuffix>:
    mDNSu16 l = name->c[0];
    e8813b54:	00054703          	lbu	a4,0(a0)
    e8813b58:	3c07378b          	extu	a5,a4,15,0
    if (RichText)
    e8813b5c:	0007869b          	sext.w	a3,a5
    e8813b60:	c9bd                	beqz	a1,e8813bd6 <LabelContainsSuffix+0x82>
        if (l < 4) return mDNSfalse;                            // Need at least " (2)"
    e8813b62:	460d                	li	a2,3
    e8813b64:	4581                	li	a1,0
    e8813b66:	06d67663          	bgeu	a2,a3,e8813bd2 <LabelContainsSuffix+0x7e>
        if (name->c[l--] != ')') return mDNSfalse;              // Last char must be ')'
    e8813b6a:	80e5468b          	lrbu	a3,a0,a4,0
    e8813b6e:	02900713          	li	a4,41
    e8813b72:	06e69063          	bne	a3,a4,e8813bd2 <LabelContainsSuffix+0x7e>
    e8813b76:	fff7871b          	addiw	a4,a5,-1
        if (!mDNSIsDigit(name->c[l])) return mDNSfalse;         // Preceeded by a digit
    e8813b7a:	3c07370b          	extu	a4,a4,15,0
    e8813b7e:	80e5470b          	lrbu	a4,a0,a4,0
    e8813b82:	46a5                	li	a3,9
    e8813b84:	fd07071b          	addiw	a4,a4,-48
    e8813b88:	0ff77713          	andi	a4,a4,255
    e8813b8c:	04e6e363          	bltu	a3,a4,e8813bd2 <LabelContainsSuffix+0x7e>
        l--;
    e8813b90:	37f9                	addiw	a5,a5,-2
    e8813b92:	3c07b78b          	extu	a5,a5,15,0
        while (l > 2 && mDNSIsDigit(name->c[l])) l--;           // Strip off digits
    e8813b96:	4589                	li	a1,2
    e8813b98:	4625                	li	a2,9
    e8813b9a:	3c07b70b          	extu	a4,a5,15,0
    e8813b9e:	00b70b63          	beq	a4,a1,e8813bb4 <LabelContainsSuffix+0x60>
    e8813ba2:	80f5468b          	lrbu	a3,a0,a5,0
    e8813ba6:	37fd                	addiw	a5,a5,-1
    e8813ba8:	fd06869b          	addiw	a3,a3,-48
    e8813bac:	0ff6f693          	andi	a3,a3,255
    e8813bb0:	fed675e3          	bgeu	a2,a3,e8813b9a <LabelContainsSuffix+0x46>
        return (name->c[l] == '(' && name->c[l - 1] == ' ');
    e8813bb4:	80e5468b          	lrbu	a3,a0,a4,0
    e8813bb8:	02800793          	li	a5,40
    e8813bbc:	4581                	li	a1,0
    e8813bbe:	00f69863          	bne	a3,a5,e8813bce <LabelContainsSuffix+0x7a>
    e8813bc2:	377d                	addiw	a4,a4,-1
    e8813bc4:	80e5458b          	lrbu	a1,a0,a4,0
    e8813bc8:	1581                	addi	a1,a1,-32
    e8813bca:	0015b593          	seqz	a1,a1
    e8813bce:	0ff5f593          	andi	a1,a1,255
}
    e8813bd2:	852e                	mv	a0,a1
    e8813bd4:	8082                	ret
        if (l < 2) return mDNSfalse;                            // Need at least "-2"
    e8813bd6:	4605                	li	a2,1
    e8813bd8:	fed67de3          	bgeu	a2,a3,e8813bd2 <LabelContainsSuffix+0x7e>
        if (!mDNSIsDigit(name->c[l])) return mDNSfalse;         // Last char must be a digit
    e8813bdc:	80e5470b          	lrbu	a4,a0,a4,0
    e8813be0:	46a5                	li	a3,9
    e8813be2:	fd07071b          	addiw	a4,a4,-48
    e8813be6:	0ff77713          	andi	a4,a4,255
    e8813bea:	fee6e4e3          	bltu	a3,a4,e8813bd2 <LabelContainsSuffix+0x7e>
        l--;
    e8813bee:	37fd                	addiw	a5,a5,-1
    e8813bf0:	3c07b78b          	extu	a5,a5,15,0
        while (l > 2 && mDNSIsDigit(name->c[l])) l--;           // Strip off digits
    e8813bf4:	4609                	li	a2,2
    e8813bf6:	80f5458b          	lrbu	a1,a0,a5,0
    e8813bfa:	00f67963          	bgeu	a2,a5,e8813c0c <LabelContainsSuffix+0xb8>
    e8813bfe:	fd05871b          	addiw	a4,a1,-48
    e8813c02:	0ff77713          	andi	a4,a4,255
    e8813c06:	37fd                	addiw	a5,a5,-1
    e8813c08:	fee6f7e3          	bgeu	a3,a4,e8813bf6 <LabelContainsSuffix+0xa2>
        return (name->c[l] == '-');
    e8813c0c:	fd358593          	addi	a1,a1,-45
    e8813c10:	0015b593          	seqz	a1,a1
    e8813c14:	bf7d                	j	e8813bd2 <LabelContainsSuffix+0x7e>

00000000e8813c16 <RemoveLabelSuffix>:
{
    e8813c16:	872a                	mv	a4,a0
    if (RichText && name->c[0] >= 1 && name->c[name->c[0]] == ')') name->c[0]--;
    e8813c18:	cd89                	beqz	a1,e8813c32 <RemoveLabelSuffix+0x1c>
    e8813c1a:	00054783          	lbu	a5,0(a0)
    e8813c1e:	cb91                	beqz	a5,e8813c32 <RemoveLabelSuffix+0x1c>
    e8813c20:	80f5460b          	lrbu	a2,a0,a5,0
    e8813c24:	02900693          	li	a3,41
    e8813c28:	00d61563          	bne	a2,a3,e8813c32 <RemoveLabelSuffix+0x1c>
    e8813c2c:	37fd                	addiw	a5,a5,-1
    e8813c2e:	00f50023          	sb	a5,0(a0)
{
    e8813c32:	4805                	li	a6,1
    e8813c34:	4501                	li	a0,0
    while (mDNSIsDigit(name->c[name->c[0]]))
    e8813c36:	4325                	li	t1,9
    { val += (name->c[name->c[0]] - '0') * multiplier; multiplier *= 10; name->c[0]--; }
    e8813c38:	4ea9                	li	t4,10
    while (mDNSIsDigit(name->c[name->c[0]]))
    e8813c3a:	00074783          	lbu	a5,0(a4)
    e8813c3e:	80f7460b          	lrbu	a2,a4,a5,0
    e8813c42:	fd06089b          	addiw	a7,a2,-48
    e8813c46:	0ff8fe13          	andi	t3,a7,255
    e8813c4a:	03c37463          	bgeu	t1,t3,e8813c72 <RemoveLabelSuffix+0x5c>
    if (RichText)
    e8813c4e:	c995                	beqz	a1,e8813c82 <RemoveLabelSuffix+0x6c>
        if (name->c[0] >= 2 && name->c[name->c[0]] == '(' && name->c[name->c[0]-1] == ' ') name->c[0] -= 2;
    e8813c50:	4585                	li	a1,1
    e8813c52:	00f5ff63          	bgeu	a1,a5,e8813c70 <RemoveLabelSuffix+0x5a>
    e8813c56:	02800593          	li	a1,40
    e8813c5a:	00b61b63          	bne	a2,a1,e8813c70 <RemoveLabelSuffix+0x5a>
    e8813c5e:	fff7869b          	addiw	a3,a5,-1
    e8813c62:	80d7460b          	lrbu	a2,a4,a3,0
    e8813c66:	02000693          	li	a3,32
    e8813c6a:	37f9                	addiw	a5,a5,-2
    e8813c6c:	02d60163          	beq	a2,a3,e8813c8e <RemoveLabelSuffix+0x78>
}
    e8813c70:	8082                	ret
    { val += (name->c[name->c[0]] - '0') * multiplier; multiplier *= 10; name->c[0]--; }
    e8813c72:	37fd                	addiw	a5,a5,-1
    e8813c74:	2508950b          	mulaw	a0,a7,a6
    e8813c78:	00f70023          	sb	a5,0(a4)
    e8813c7c:	030e883b          	mulw	a6,t4,a6
    e8813c80:	bf6d                	j	e8813c3a <RemoveLabelSuffix+0x24>
        if (name->c[0] >= 1 && name->c[name->c[0]] == '-') name->c[0] -= 1;
    e8813c82:	d7fd                	beqz	a5,e8813c70 <RemoveLabelSuffix+0x5a>
    e8813c84:	02d00693          	li	a3,45
    e8813c88:	fed614e3          	bne	a2,a3,e8813c70 <RemoveLabelSuffix+0x5a>
    e8813c8c:	37fd                	addiw	a5,a5,-1
    e8813c8e:	00f70023          	sb	a5,0(a4)
    e8813c92:	bff9                	j	e8813c70 <RemoveLabelSuffix+0x5a>

00000000e8813c94 <AppendLabelSuffix>:
{
    e8813c94:	7179                	addi	sp,sp,-48
    e8813c96:	e422                	sd	s0,8(sp)
    e8813c98:	ec4a                	sd	s2,24(sp)
    e8813c9a:	f04e                	sd	s3,32(sp)
    e8813c9c:	f406                	sd	ra,40(sp)
    e8813c9e:	e826                	sd	s1,16(sp)
    e8813ca0:	842a                	mv	s0,a0
    e8813ca2:	892e                	mv	s2,a1
    e8813ca4:	89b2                	mv	s3,a2
    if (RichText) while (name->c[name->c[0]] == ' ') name->c[0]--;
    e8813ca6:	02000713          	li	a4,32
    mDNSu32 divisor = 1, chars = 2; // Shortest possible RFC1034 name suffix is 2 characters ("-2")
    e8813caa:	4789                	li	a5,2
    if (RichText) chars = 4;        // Shortest possible RichText suffix is 4 characters (" (2)")
    e8813cac:	ca01                	beqz	a2,e8813cbc <AppendLabelSuffix+0x28>
    if (RichText) while (name->c[name->c[0]] == ' ') name->c[0]--;
    e8813cae:	00044783          	lbu	a5,0(s0)
    e8813cb2:	80f4468b          	lrbu	a3,s0,a5,0
    e8813cb6:	00e68d63          	beq	a3,a4,e8813cd0 <AppendLabelSuffix+0x3c>
    if (RichText) chars = 4;        // Shortest possible RichText suffix is 4 characters (" (2)")
    e8813cba:	4791                	li	a5,4
    e8813cbc:	0097861b          	addiw	a2,a5,9
    e8813cc0:	4705                	li	a4,1
    while (divisor < 0xFFFFFFFFUL/10 && val >= divisor * 10) { divisor *= 10; chars++; }
    e8813cc2:	46a9                	li	a3,10
    e8813cc4:	02e684bb          	mulw	s1,a3,a4
    e8813cc8:	00997863          	bgeu	s2,s1,e8813cd8 <AppendLabelSuffix+0x44>
    e8813ccc:	84ba                	mv	s1,a4
    e8813cce:	a809                	j	e8813ce0 <AppendLabelSuffix+0x4c>
    if (RichText) while (name->c[name->c[0]] == ' ') name->c[0]--;
    e8813cd0:	37fd                	addiw	a5,a5,-1
    e8813cd2:	00f40023          	sb	a5,0(s0)
    e8813cd6:	bfe1                	j	e8813cae <AppendLabelSuffix+0x1a>
    while (divisor < 0xFFFFFFFFUL/10 && val >= divisor * 10) { divisor *= 10; chars++; }
    e8813cd8:	2785                	addiw	a5,a5,1
    e8813cda:	8726                	mv	a4,s1
    e8813cdc:	fec794e3          	bne	a5,a2,e8813cc4 <AppendLabelSuffix+0x30>
    name->c[0] = (mDNSu8) TruncateUTF8ToLength(name->c+1, name->c[0], MAX_DOMAIN_LABEL - chars);
    e8813ce0:	8522                	mv	a0,s0
    e8813ce2:	9815458b          	lbuia	a1,(a0),1,0
    e8813ce6:	03f00613          	li	a2,63
    e8813cea:	9e1d                	subw	a2,a2,a5
    e8813cec:	df7ff0ef          	jal	ra,e8813ae2 <TruncateUTF8ToLength>
    e8813cf0:	0ff57513          	andi	a0,a0,255
    e8813cf4:	00a40023          	sb	a0,0(s0)
    if (RichText) { name->c[++name->c[0]] = ' '; name->c[++name->c[0]] = '('; }
    e8813cf8:	2505                	addiw	a0,a0,1
    e8813cfa:	0ff57513          	andi	a0,a0,255
    e8813cfe:	00a40023          	sb	a0,0(s0)
    e8813d02:	0005079b          	sext.w	a5,a0
    else          { name->c[++name->c[0]] = '-'; }
    e8813d06:	02d00713          	li	a4,45
    if (RichText) { name->c[++name->c[0]] = ' '; name->c[++name->c[0]] = '('; }
    e8813d0a:	00098f63          	beqz	s3,e8813d28 <AppendLabelSuffix+0x94>
    e8813d0e:	02000713          	li	a4,32
    e8813d12:	00f4570b          	srb	a4,s0,a5,0
    e8813d16:	00044783          	lbu	a5,0(s0)
    e8813d1a:	02800713          	li	a4,40
    e8813d1e:	2785                	addiw	a5,a5,1
    e8813d20:	0ff7f793          	andi	a5,a5,255
    e8813d24:	00f40023          	sb	a5,0(s0)
    else          { name->c[++name->c[0]] = '-'; }
    e8813d28:	00f4570b          	srb	a4,s0,a5,0
        divisor /= 10;
    e8813d2c:	46a9                	li	a3,10
    while (divisor)
    e8813d2e:	e48d                	bnez	s1,e8813d58 <AppendLabelSuffix+0xc4>
    if (RichText) name->c[++name->c[0]] = ')';
    e8813d30:	00098d63          	beqz	s3,e8813d4a <AppendLabelSuffix+0xb6>
    e8813d34:	00044783          	lbu	a5,0(s0)
    e8813d38:	02900713          	li	a4,41
    e8813d3c:	2785                	addiw	a5,a5,1
    e8813d3e:	0ff7f793          	andi	a5,a5,255
    e8813d42:	00f40023          	sb	a5,0(s0)
    e8813d46:	00f4570b          	srb	a4,s0,a5,0
}
    e8813d4a:	70a2                	ld	ra,40(sp)
    e8813d4c:	6422                	ld	s0,8(sp)
    e8813d4e:	64c2                	ld	s1,16(sp)
    e8813d50:	6962                	ld	s2,24(sp)
    e8813d52:	7982                	ld	s3,32(sp)
    e8813d54:	6145                	addi	sp,sp,48
    e8813d56:	8082                	ret
        name->c[++name->c[0]] = (mDNSu8)('0' + val / divisor);
    e8813d58:	0299573b          	divuw	a4,s2,s1
    e8813d5c:	00044783          	lbu	a5,0(s0)
    e8813d60:	2785                	addiw	a5,a5,1
    e8813d62:	0ff7f793          	andi	a5,a5,255
    e8813d66:	00f40023          	sb	a5,0(s0)
    e8813d6a:	0307071b          	addiw	a4,a4,48
        val     %= divisor;
    e8813d6e:	0299793b          	remuw	s2,s2,s1
        name->c[++name->c[0]] = (mDNSu8)('0' + val / divisor);
    e8813d72:	00f4570b          	srb	a4,s0,a5,0
        divisor /= 10;
    e8813d76:	02d4d4bb          	divuw	s1,s1,a3
    e8813d7a:	bf55                	j	e8813d2e <AppendLabelSuffix+0x9a>

00000000e8813d7c <IncrementLabelSuffix>:
{
    e8813d7c:	1101                	addi	sp,sp,-32
    e8813d7e:	f891540b          	sdd	s0,s1,(sp),0,4
    e8813d82:	ec06                	sd	ra,24(sp)
    e8813d84:	e84a                	sd	s2,16(sp)
    e8813d86:	842a                	mv	s0,a0
    e8813d88:	84ae                	mv	s1,a1
    if (LabelContainsSuffix(name, RichText))
    e8813d8a:	dcbff0ef          	jal	ra,e8813b54 <LabelContainsSuffix>
    e8813d8e:	e919                	bnez	a0,e8813da4 <IncrementLabelSuffix+0x28>
    if      (val == 0) val = 2;
    e8813d90:	4589                	li	a1,2
    AppendLabelSuffix(name, val, RichText);
    e8813d92:	8626                	mv	a2,s1
    e8813d94:	8522                	mv	a0,s0
}
    e8813d96:	f891440b          	ldd	s0,s1,(sp),0,4
    e8813d9a:	60e2                	ld	ra,24(sp)
    e8813d9c:	6942                	ld	s2,16(sp)
    e8813d9e:	6105                	addi	sp,sp,32
    AppendLabelSuffix(name, val, RichText);
    e8813da0:	ef5ff06f          	j	e8813c94 <AppendLabelSuffix>
        val = RemoveLabelSuffix(name, RichText);
    e8813da4:	85a6                	mv	a1,s1
    e8813da6:	8522                	mv	a0,s0
    e8813da8:	e6fff0ef          	jal	ra,e8813c16 <RemoveLabelSuffix>
    e8813dac:	2501                	sext.w	a0,a0
    if      (val == 0) val = 2;
    e8813dae:	d16d                	beqz	a0,e8813d90 <IncrementLabelSuffix+0x14>
    else if (val < 10) val++;
    e8813db0:	0015059b          	addiw	a1,a0,1
    e8813db4:	47a5                	li	a5,9
    e8813db6:	892e                	mv	s2,a1
    e8813db8:	fca7fde3          	bgeu	a5,a0,e8813d92 <IncrementLabelSuffix+0x16>
    else val += 1 + mDNSRandom(99);
    e8813dbc:	06300513          	li	a0,99
    e8813dc0:	948ff0ef          	jal	ra,e8812f08 <mDNSRandom>
    e8813dc4:	012505bb          	addw	a1,a0,s2
    e8813dc8:	b7e9                	j	e8813d92 <IncrementLabelSuffix+0x16>

00000000e8813dca <mDNS_SetupResourceRecord>:
{
    e8813dca:	715d                	addi	sp,sp,-80
    e8813dcc:	e0a2                	sd	s0,64(sp)
    e8813dce:	fc26                	sd	s1,56(sp)
    e8813dd0:	f84a                	sd	s2,48(sp)
    e8813dd2:	f44e                	sd	s3,40(sp)
    e8813dd4:	f052                	sd	s4,32(sp)
    e8813dd6:	ec56                	sd	s5,24(sp)
    e8813dd8:	e85a                	sd	s6,16(sp)
    e8813dda:	e45e                	sd	s7,8(sp)
    e8813ddc:	e486                	sd	ra,72(sp)
    e8813dde:	8b3e                	mv	s6,a5
    if (InterfaceID == mDNSInterface_LocalOnly && artype != AuthRecordLocalOnly)
    e8813de0:	57f9                	li	a5,-2
{
    e8813de2:	842a                	mv	s0,a0
    e8813de4:	89ae                	mv	s3,a1
    e8813de6:	8932                	mv	s2,a2
    e8813de8:	8a36                	mv	s4,a3
    e8813dea:	84ba                	mv	s1,a4
    e8813dec:	8bc2                	mv	s7,a6
    e8813dee:	8ac6                	mv	s5,a7
    if (InterfaceID == mDNSInterface_LocalOnly && artype != AuthRecordLocalOnly)
    e8813df0:	0ef61e63          	bne	a2,a5,e8813eec <mDNS_SetupResourceRecord+0x122>
    e8813df4:	4791                	li	a5,4
    e8813df6:	00f80a63          	beq	a6,a5,e8813e0a <mDNS_SetupResourceRecord+0x40>
        LogMsg("mDNS_SetupResourceRecord: ERROR!! Mismatch LocalOnly record InterfaceID %p called with artype %d", InterfaceID, artype);
    e8813dfa:	86c2                	mv	a3,a6
    e8813dfc:	0008f597          	auipc	a1,0x8f
    e8813e00:	1fc58593          	addi	a1,a1,508 # e88a2ff8 <mDNSInterface_Unicast+0x278>
        LogMsg("mDNS_SetupResourceRecord: ERROR!! Mismatch InterfaceAny record InterfaceID %p called with artype %d", InterfaceID, artype);
    e8813e04:	4501                	li	a0,0
    e8813e06:	6a61b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (ttl > 0x7FFFFFFFUL / mDNSPlatformOneSecond)
    e8813e0a:	000c1797          	auipc	a5,0xc1
    e8813e0e:	c7678793          	addi	a5,a5,-906 # e88d4a80 <mDNSPlatformOneSecond>
    e8813e12:	4398                	lw	a4,0(a5)
    e8813e14:	800007b7          	lui	a5,0x80000
    e8813e18:	fff7c793          	not	a5,a5
    e8813e1c:	02e7d7b3          	divu	a5,a5,a4
    e8813e20:	7c04b70b          	extu	a4,s1,31,0
    e8813e24:	0ee7fe63          	bgeu	a5,a4,e8813f20 <mDNS_SetupResourceRecord+0x156>
        ttl = 0x7FFFFFFFUL / mDNSPlatformOneSecond;
    e8813e28:	0007849b          	sext.w	s1,a5
    rr->resrec.name              = &rr->namestorage;
    e8813e2c:	20040793          	addi	a5,s0,512
    rr->resrec.rrclass           = kDNSClass_IN;
    e8813e30:	4705                	li	a4,1
    rr->resrec.RecordType        = RecordType;
    e8813e32:	01640423          	sb	s6,8(s0)
    rr->resrec.InterfaceID       = InterfaceID;
    e8813e36:	03243023          	sd	s2,32(s0)
    rr->resrec.name              = &rr->namestorage;
    e8813e3a:	f41c                	sd	a5,40(s0)
    rr->resrec.rrtype            = rrtype;
    e8813e3c:	01441523          	sh	s4,10(s0)
    rr->resrec.rrclass           = kDNSClass_IN;
    e8813e40:	00e41623          	sh	a4,12(s0)
    rr->resrec.rroriginalttl     = ttl;
    e8813e44:	c804                	sw	s1,16(s0)
    rr->resrec.rDNSServer        = mDNSNULL;
    e8813e46:	02043c23          	sd	zero,56(s0)
    rr->resrec.AnonInfo          = mDNSNULL;
    e8813e4a:	04043023          	sd	zero,64(s0)
    if (RDataStorage)
    e8813e4e:	0e098c63          	beqz	s3,e8813f46 <mDNS_SetupResourceRecord+0x17c>
        rr->resrec.rdata = RDataStorage;
    e8813e52:	03343823          	sd	s3,48(s0)
    rr->RecordContext     = Context;
    e8813e56:	6746                	ld	a4,80(sp)
    rr->RecordCallback    = Callback;
    e8813e58:	07543423          	sd	s5,104(s0)
    rr->ARType            = artype;
    e8813e5c:	0b740623          	sb	s7,172(s0)
    rr->Additional1       = mDNSNULL;
    e8813e60:	04043423          	sd	zero,72(s0)
    rr->Additional2       = mDNSNULL;
    e8813e64:	04043823          	sd	zero,80(s0)
    rr->DependentOn       = mDNSNULL;
    e8813e68:	04043c23          	sd	zero,88(s0)
    rr->RRSet             = mDNSNULL;
    e8813e6c:	06043023          	sd	zero,96(s0)
    rr->RecordContext     = Context;
    e8813e70:	f838                	sd	a4,112(s0)
    rr->WakeUp            = zeroOwner;
    e8813e72:	06043e23          	sd	zero,124(s0)
    e8813e76:	08043223          	sd	zero,132(s0)
    e8813e7a:	08042623          	sw	zero,140(s0)
    rr->AddressProxy      = zeroAddr;
    e8813e7e:	08043823          	sd	zero,144(s0)
    e8813e82:	08043c23          	sd	zero,152(s0)
    e8813e86:	0a042023          	sw	zero,160(s0)
    rr->TimeRcvd          = 0;
    e8813e8a:	0a043223          	sd	zero,164(s0)
    rr->AutoTarget        = Target_Manual;
    e8813e8e:	06042c23          	sw	zero,120(s0)
    rr->state             = regState_Zero;
    e8813e92:	14041623          	sh	zero,332(s0)
    rr->expire            = 0;
    e8813e96:	14042823          	sw	zero,336(s0)
    rr->Private           = 0;
    e8813e9a:	14040a23          	sb	zero,340(s0)
    rr->updateid          = zeroID;
    e8813e9e:	14041b23          	sh	zero,342(s0)
    rr->zone              = rr->resrec.name;
    e8813ea2:	16f43023          	sd	a5,352(s0)
    rr->nta               = mDNSNULL;
    e8813ea6:	16043423          	sd	zero,360(s0)
    rr->tcp               = mDNSNULL;
    e8813eaa:	16043823          	sd	zero,368(s0)
    rr->OrigRData         = 0;
    e8813eae:	1e043423          	sd	zero,488(s0)
    rr->InFlightRData     = 0;
    e8813eb2:	1e043823          	sd	zero,496(s0)
    rr->QueuedRData       = 0;
    e8813eb6:	1e043c23          	sd	zero,504(s0)
    rr->OrigRDLen         = 0;
    e8813eba:	1e042023          	sw	zero,480(s0)
    rr->QueuedRDLen       = 0;
    e8813ebe:	1e041223          	sh	zero,484(s0)
    mDNSPlatformMemZero(&rr->NATinfo, sizeof(rr->NATinfo));
    e8813ec2:	17840513          	addi	a0,s0,376
    e8813ec6:	05800593          	li	a1,88
    e8813eca:	42d1b0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    rr->SRVChanged = mDNSfalse;
    e8813ece:	1c041823          	sh	zero,464(s0)
    rr->namestorage.c[0]  = 0;      // MUST be set by client before calling mDNS_Register()
    e8813ed2:	20040023          	sb	zero,512(s0)
}
    e8813ed6:	60a6                	ld	ra,72(sp)
    e8813ed8:	6406                	ld	s0,64(sp)
    e8813eda:	74e2                	ld	s1,56(sp)
    e8813edc:	7942                	ld	s2,48(sp)
    e8813ede:	79a2                	ld	s3,40(sp)
    e8813ee0:	7a02                	ld	s4,32(sp)
    e8813ee2:	6ae2                	ld	s5,24(sp)
    e8813ee4:	6b42                	ld	s6,16(sp)
    e8813ee6:	6ba2                	ld	s7,8(sp)
    e8813ee8:	6161                	addi	sp,sp,80
    e8813eea:	8082                	ret
    else if (InterfaceID == mDNSInterface_P2P && artype != AuthRecordP2P)
    e8813eec:	57f1                	li	a5,-4
    e8813eee:	00f61b63          	bne	a2,a5,e8813f04 <mDNS_SetupResourceRecord+0x13a>
    e8813ef2:	4795                	li	a5,5
    e8813ef4:	f0f80be3          	beq	a6,a5,e8813e0a <mDNS_SetupResourceRecord+0x40>
        LogMsg("mDNS_SetupResourceRecord: ERROR!! Mismatch P2P record InterfaceID %p called with artype %d", InterfaceID, artype);
    e8813ef8:	86c2                	mv	a3,a6
    e8813efa:	0008f597          	auipc	a1,0x8f
    e8813efe:	16658593          	addi	a1,a1,358 # e88a3060 <mDNSInterface_Unicast+0x2e0>
    e8813f02:	b709                	j	e8813e04 <mDNS_SetupResourceRecord+0x3a>
    else if (!InterfaceID && (artype == AuthRecordP2P || artype == AuthRecordLocalOnly))
    e8813f04:	f219                	bnez	a2,e8813e0a <mDNS_SetupResourceRecord+0x40>
    e8813f06:	ffc8079b          	addiw	a5,a6,-4
    e8813f0a:	0ff7f793          	andi	a5,a5,255
    e8813f0e:	4705                	li	a4,1
    e8813f10:	eef76de3          	bltu	a4,a5,e8813e0a <mDNS_SetupResourceRecord+0x40>
        LogMsg("mDNS_SetupResourceRecord: ERROR!! Mismatch InterfaceAny record InterfaceID %p called with artype %d", InterfaceID, artype);
    e8813f14:	86c2                	mv	a3,a6
    e8813f16:	0008f597          	auipc	a1,0x8f
    e8813f1a:	1aa58593          	addi	a1,a1,426 # e88a30c0 <mDNSInterface_Unicast+0x340>
    e8813f1e:	b5dd                	j	e8813e04 <mDNS_SetupResourceRecord+0x3a>
    else if (ttl == 0)      // And Zero TTL is illegal
    e8813f20:	f491                	bnez	s1,e8813e2c <mDNS_SetupResourceRecord+0x62>
        ttl = DefaultTTLforRRType(rrtype);
    e8813f22:	000a079b          	sext.w	a5,s4
    e8813f26:	4705                	li	a4,1
    e8813f28:	07800493          	li	s1,120
    e8813f2c:	f0e780e3          	beq	a5,a4,e8813e2c <mDNS_SetupResourceRecord+0x62>
    e8813f30:	4771                	li	a4,28
    e8813f32:	eee78de3          	beq	a5,a4,e8813e2c <mDNS_SetupResourceRecord+0x62>
    e8813f36:	02100713          	li	a4,33
    e8813f3a:	eee789e3          	beq	a5,a4,e8813e2c <mDNS_SetupResourceRecord+0x62>
    e8813f3e:	6485                	lui	s1,0x1
    e8813f40:	19448493          	addi	s1,s1,404 # 1194 <memcmp-0xe87fee6c>
    e8813f44:	b5e5                	j	e8813e2c <mDNS_SetupResourceRecord+0x62>
        rr->resrec.rdata = &rr->rdatastorage;
    e8813f46:	30040713          	addi	a4,s0,768
    e8813f4a:	f818                	sd	a4,48(s0)
        rr->resrec.rdata->MaxRDLength = sizeof(RDataBody);
    e8813f4c:	10800713          	li	a4,264
    e8813f50:	30e41023          	sh	a4,768(s0)
    e8813f54:	b709                	j	e8813e56 <mDNS_SetupResourceRecord+0x8c>

00000000e8813f56 <mDNS_SetupQuestion>:
{
    e8813f56:	7179                	addi	sp,sp,-48
    e8813f58:	f891540b          	sdd	s0,s1,(sp),0,4
    e8813f5c:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8813f60:	f052                	sd	s4,32(sp)
    e8813f62:	f406                	sd	ra,40(sp)
    e8813f64:	842a                	mv	s0,a0
    q->InterfaceID         = InterfaceID;
    e8813f66:	1eb53823          	sd	a1,496(a0)
    q->flags               = 0;
    e8813f6a:	1e052c23          	sw	zero,504(a0)
    q->Target              = zeroAddr;
    e8813f6e:	1e053e23          	sd	zero,508(a0)
    e8813f72:	20053223          	sd	zero,516(a0)
    e8813f76:	20052623          	sw	zero,524(a0)
    AssignDomainName(&q->qname, name);
    e8813f7a:	10060593          	addi	a1,a2,256
    e8813f7e:	8532                	mv	a0,a2
{
    e8813f80:	8932                	mv	s2,a2
    e8813f82:	89be                	mv	s3,a5
    e8813f84:	84b6                	mv	s1,a3
    e8813f86:	8a3a                	mv	s4,a4
    AssignDomainName(&q->qname, name);
    e8813f88:	9c4ff0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8813f8c:	0005061b          	sext.w	a2,a0
    e8813f90:	10000793          	li	a5,256
    e8813f94:	06c7e863          	bltu	a5,a2,e8814004 <mDNS_SetupQuestion+0xae>
    e8813f98:	85ca                	mv	a1,s2
    e8813f9a:	21440513          	addi	a0,s0,532
    e8813f9e:	3031b0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    q->qclass              = kDNSClass_IN;
    e8813fa2:	4785                	li	a5,1
    q->qtype               = qtype;
    e8813fa4:	30941a23          	sh	s1,788(s0)
    q->LongLived           = (qtype == kDNSType_PTR);
    e8813fa8:	14d1                	addi	s1,s1,-12
    q->qclass              = kDNSClass_IN;
    e8813faa:	30f41b23          	sh	a5,790(s0)
    q->LongLived           = (qtype == kDNSType_PTR);
    e8813fae:	0014b793          	seqz	a5,s1
    q->ExpectUnique        = (qtype != kDNSType_PTR);
    e8813fb2:	009034b3          	snez	s1,s1
    q->LongLived           = (qtype == kDNSType_PTR);
    e8813fb6:	30f40c23          	sb	a5,792(s0)
    q->ExpectUnique        = (qtype != kDNSType_PTR);
    e8813fba:	30940ca3          	sb	s1,793(s0)
    q->ForceMCast          = mDNSfalse;
    e8813fbe:	30043d23          	sd	zero,794(s0)
    q->AppendSearchDomains = 0;
    e8813fc2:	32040123          	sb	zero,802(s0)
    q->ValidatingResponse  = 0;
    e8813fc6:	14040523          	sb	zero,330(s0)
    q->ValidationRequired  = 0;
    e8813fca:	32041223          	sh	zero,804(s0)
    q->qnameOrig           = mDNSNULL;
    e8813fce:	34043023          	sd	zero,832(s0)
    q->AnonInfo            = mDNSNULL;
    e8813fd2:	06043023          	sd	zero,96(s0)
    q->pid                 = mDNSPlatformGetPID();
    e8813fd6:	76a1c0ef          	jal	ra,e8830740 <mDNSPlatformGetPID>
    e8813fda:	32a42423          	sw	a0,808(s0)
    q->ServiceID           = -1;
    e8813fde:	57fd                	li	a5,-1
    q->QuestionCallback    = callback;
    e8813fe0:	35443423          	sd	s4,840(s0)
    q->QuestionContext     = context;
    e8813fe4:	35343823          	sd	s3,848(s0)
    q->euid                = 0;
    e8813fe8:	32042e23          	sw	zero,828(s0)
    q->DisallowPID         = mDNSfalse;
    e8813fec:	1e040323          	sb	zero,486(s0)
    q->ServiceID           = -1;
    e8813ff0:	1ef42423          	sw	a5,488(s0)
}
    e8813ff4:	70a2                	ld	ra,40(sp)
    e8813ff6:	f891440b          	ldd	s0,s1,(sp),0,4
    e8813ffa:	7a02                	ld	s4,32(sp)
    e8813ffc:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8814000:	6145                	addi	sp,sp,48
    e8814002:	8082                	ret
    AssignDomainName(&q->qname, name);
    e8814004:	20040a23          	sb	zero,532(s0)
    e8814008:	bf69                	j	e8813fa2 <mDNS_SetupQuestion+0x4c>

00000000e881400a <SameRDataBody>:
{
    e881400a:	7139                	addi	sp,sp,-64
    e881400c:	f891540b          	sdd	s0,s1,(sp),0,4
    e8814010:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8814014:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8814018:	fc06                	sd	ra,56(sp)
    e881401a:	f85a                	sd	s6,48(sp)
    switch(r1->rrtype)
    e881401c:	00255783          	lhu	a5,2(a0)
    e8814020:	02d00713          	li	a4,45
    const RDataBody2 *const b1 = (RDataBody2 *)r1->rdata->u.data;
    e8814024:	7504                	ld	s1,40(a0)
    switch(r1->rrtype)
    e8814026:	37f9                	addiw	a5,a5,-2
    e8814028:	3c07b68b          	extu	a3,a5,15,0
    e881402c:	16d76063          	bltu	a4,a3,e881418c <SameRDataBody+0x182>
    e8814030:	0008e717          	auipc	a4,0x8e
    e8814034:	85070713          	addi	a4,a4,-1968 # e88a1880 <iAP2LinkAccessorySuspendStateEvents+0x678>
    e8814038:	44d7478b          	lrw	a5,a4,a3,2
    e881403c:	8932                	mv	s2,a2
    e881403e:	842e                	mv	s0,a1
    e8814040:	97ba                	add	a5,a5,a4
    e8814042:	8a2a                	mv	s4,a0
    e8814044:	8782                	jr	a5
    case kDNSType_DNAME: return(SameDomainName(&b1->name, &b2->name));
    e8814046:	00448513          	addi	a0,s1,4
}
    e881404a:	f891440b          	ldd	s0,s1,(sp),0,4
    e881404e:	70e2                	ld	ra,56(sp)
    e8814050:	7b42                	ld	s6,48(sp)
    e8814052:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8814056:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e881405a:	6121                	addi	sp,sp,64
    case kDNSType_DNAME: return(SameDomainName(&b1->name, &b2->name));
    e881405c:	feffe06f          	j	e881304a <SameDomainName>
                                             samename(&b1->soa.mname, &b2->soa.mname) &&
    e8814060:	2044a703          	lw	a4,516(s1)
    e8814064:	2005a783          	lw	a5,512(a1)
    e8814068:	00f70663          	beq	a4,a5,e8814074 <SameRDataBody+0x6a>
                          samename((domainname *)b1->data, (domainname *)b2->data) &&
    e881406c:	4501                	li	a0,0
        return (mDNSBool)(dlen1 == dlen2 &&
    e881406e:	0ff57513          	andi	a0,a0,255
    e8814072:	a041                	j	e88140f2 <SameRDataBody+0xe8>
    case kDNSType_SOA:  return (mDNSBool)(   b1->soa.serial   == b2->soa.serial             &&
    e8814074:	2084a703          	lw	a4,520(s1)
    e8814078:	2045a783          	lw	a5,516(a1)
    e881407c:	fef718e3          	bne	a4,a5,e881406c <SameRDataBody+0x62>
                                             b1->soa.refresh  == b2->soa.refresh            &&
    e8814080:	20c4a703          	lw	a4,524(s1)
    e8814084:	2085a783          	lw	a5,520(a1)
    e8814088:	fef712e3          	bne	a4,a5,e881406c <SameRDataBody+0x62>
                                             b1->soa.retry    == b2->soa.retry              &&
    e881408c:	2104a703          	lw	a4,528(s1)
    e8814090:	20c5a783          	lw	a5,524(a1)
    e8814094:	fcf71ce3          	bne	a4,a5,e881406c <SameRDataBody+0x62>
                                             b1->soa.expire   == b2->soa.expire             &&
    e8814098:	2144a703          	lw	a4,532(s1)
    e881409c:	2105a783          	lw	a5,528(a1)
    e88140a0:	fcf716e3          	bne	a4,a5,e881406c <SameRDataBody+0x62>
                                             samename(&b1->soa.mname, &b2->soa.mname) &&
    e88140a4:	00448513          	addi	a0,s1,4
    e88140a8:	9602                	jalr	a2
                                             b1->soa.min      == b2->soa.min                &&
    e88140aa:	d169                	beqz	a0,e881406c <SameRDataBody+0x62>
                                             samename(&b1->soa.rname, &b2->soa.rname));
    e88140ac:	10040593          	addi	a1,s0,256
    e88140b0:	10448513          	addi	a0,s1,260
                                             samename(&b1->srv.target, &b2->srv.target));
    e88140b4:	9902                	jalr	s2
                          samename((domainname *)b1->data, (domainname *)b2->data) &&
    e88140b6:	2501                	sext.w	a0,a0
    e88140b8:	00a03533          	snez	a0,a0
    e88140bc:	bf4d                	j	e881406e <SameRDataBody+0x64>
    case kDNSType_KX:   return (mDNSBool)(   b1->mx.preference == b2->mx.preference &&
    e88140be:	0044d703          	lhu	a4,4(s1)
    e88140c2:	0005d783          	lhu	a5,0(a1)
    e88140c6:	4501                	li	a0,0
    e88140c8:	faf713e3          	bne	a4,a5,e881406e <SameRDataBody+0x64>
                                             samename(&b1->mx.exchange, &b2->mx.exchange));
    e88140cc:	0589                	addi	a1,a1,2
    e88140ce:	00648513          	addi	a0,s1,6
    e88140d2:	b7cd                	j	e88140b4 <SameRDataBody+0xaa>
    case kDNSType_RP:   return (mDNSBool)(   samename(&b1->rp.mbox, &b2->rp.mbox) &&
    e88140d4:	00448513          	addi	a0,s1,4
    e88140d8:	9602                	jalr	a2
    e88140da:	4781                	li	a5,0
    e88140dc:	c909                	beqz	a0,e88140ee <SameRDataBody+0xe4>
                                             samename(&b1->rp.txt,  &b2->rp.txt));
    e88140de:	10040593          	addi	a1,s0,256
    e88140e2:	10448513          	addi	a0,s1,260
    e88140e6:	9902                	jalr	s2
    case kDNSType_RP:   return (mDNSBool)(   samename(&b1->rp.mbox, &b2->rp.mbox) &&
    e88140e8:	2501                	sext.w	a0,a0
    e88140ea:	00a037b3          	snez	a5,a0
    e88140ee:	0ff7f513          	andi	a0,a5,255
}
    e88140f2:	70e2                	ld	ra,56(sp)
    e88140f4:	f891440b          	ldd	s0,s1,(sp),0,4
    e88140f8:	7b42                	ld	s6,48(sp)
    e88140fa:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88140fe:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8814102:	6121                	addi	sp,sp,64
    e8814104:	8082                	ret
                                             samename(&b1->px.map822,  &b2->px.map822) &&
    e8814106:	0044d703          	lhu	a4,4(s1)
    e881410a:	0005d783          	lhu	a5,0(a1)
    e881410e:	f4f71fe3          	bne	a4,a5,e881406c <SameRDataBody+0x62>
    e8814112:	0589                	addi	a1,a1,2
    e8814114:	00648513          	addi	a0,s1,6
    e8814118:	9602                	jalr	a2
    case kDNSType_PX:   return (mDNSBool)(   b1->px.preference == b2->px.preference          &&
    e881411a:	d929                	beqz	a0,e881406c <SameRDataBody+0x62>
                                             samename(&b1->px.mapx400, &b2->px.mapx400));
    e881411c:	10240593          	addi	a1,s0,258
    e8814120:	10648513          	addi	a0,s1,262
    e8814124:	bf41                	j	e88140b4 <SameRDataBody+0xaa>
                                             mDNSSameIPPort(b1->srv.port, b2->srv.port) &&
    e8814126:	40d8                	lw	a4,4(s1)
    e8814128:	419c                	lw	a5,0(a1)
    e881412a:	4501                	li	a0,0
    e881412c:	f4f711e3          	bne	a4,a5,e881406e <SameRDataBody+0x64>
                                             b1->srv.weight   == b2->srv.weight         &&
    e8814130:	0084d703          	lhu	a4,8(s1)
    e8814134:	0045d783          	lhu	a5,4(a1)
    e8814138:	f2f71be3          	bne	a4,a5,e881406e <SameRDataBody+0x64>
                                             samename(&b1->srv.target, &b2->srv.target));
    e881413c:	0599                	addi	a1,a1,6
    e881413e:	00a48513          	addi	a0,s1,10
    e8814142:	bf8d                	j	e88140b4 <SameRDataBody+0xaa>
        int dlen1 = DomainNameLength((domainname *)b1->data);
    e8814144:	00448993          	addi	s3,s1,4
    e8814148:	10448593          	addi	a1,s1,260
    e881414c:	854e                	mv	a0,s3
    e881414e:	ffffe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814152:	84aa                	mv	s1,a0
    e8814154:	00050b1b          	sext.w	s6,a0
        int dlen2 = DomainNameLength((domainname *)b2->data);
    e8814158:	10040593          	addi	a1,s0,256
    e881415c:	8522                	mv	a0,s0
    e881415e:	feffe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
                          samename((domainname *)b1->data, (domainname *)b2->data) &&
    e8814162:	0005079b          	sext.w	a5,a0
        int dlen2 = DomainNameLength((domainname *)b2->data);
    e8814166:	8aaa                	mv	s5,a0
                          samename((domainname *)b1->data, (domainname *)b2->data) &&
    e8814168:	f0fb12e3          	bne	s6,a5,e881406c <SameRDataBody+0x62>
    e881416c:	85a2                	mv	a1,s0
    e881416e:	854e                	mv	a0,s3
    e8814170:	9902                	jalr	s2
        return (mDNSBool)(dlen1 == dlen2 &&
    e8814172:	ee050de3          	beqz	a0,e881406c <SameRDataBody+0x62>
                          mDNSPlatformMemSame(b1->data + dlen1, b2->data + dlen2, r1->rdlength - dlen1));
    e8814176:	00ca5603          	lhu	a2,12(s4)
    e881417a:	015405b3          	add	a1,s0,s5
    e881417e:	00998533          	add	a0,s3,s1
    e8814182:	4166063b          	subw	a2,a2,s6
    e8814186:	1231b0ef          	jal	ra,e882faa8 <mDNSPlatformMemSame>
    e881418a:	b735                	j	e88140b6 <SameRDataBody+0xac>
    default:            return(mDNSPlatformMemSame(b1->data, b2->data, r1->rdlength));
    e881418c:	00c55603          	lhu	a2,12(a0)
    e8814190:	00448513          	addi	a0,s1,4
}
    e8814194:	f891440b          	ldd	s0,s1,(sp),0,4
    e8814198:	70e2                	ld	ra,56(sp)
    e881419a:	7b42                	ld	s6,48(sp)
    e881419c:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88141a0:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88141a4:	6121                	addi	sp,sp,64
    default:            return(mDNSPlatformMemSame(b1->data, b2->data, r1->rdlength));
    e88141a6:	1031b06f          	j	e882faa8 <mDNSPlatformMemSame>
    case kDNSType_OPT:  return mDNSfalse;       // OPT is a pseudo-RR container structure; makes no sense to compare
    e88141aa:	4501                	li	a0,0
    e88141ac:	b799                	j	e88140f2 <SameRDataBody+0xe8>

00000000e88141ae <BitmapTypeCheck>:
{
    e88141ae:	1141                	addi	sp,sp,-16
    e88141b0:	e406                	sd	ra,8(sp)
    e88141b2:	e022                	sd	s0,0(sp)
    e88141b4:	87b2                	mv	a5,a2
        if (bitmaplen < 3)
    e88141b6:	4889                	li	a7,2
        if (bitmaplen < wlen || wlen < 1 || wlen > 32)
    e88141b8:	02000313          	li	t1,32
        if (win == wintype)
    e88141bc:	00865e13          	srli	t3,a2,0x8
    while (bitmaplen > 0)
    e88141c0:	00b04463          	bgtz	a1,e88141c8 <BitmapTypeCheck+0x1a>
            return mDNSfalse;
    e88141c4:	4401                	li	s0,0
    e88141c6:	a015                	j	e88141ea <BitmapTypeCheck+0x3c>
        if (bitmaplen < 3)
    e88141c8:	02b8c663          	blt	a7,a1,e88141f4 <BitmapTypeCheck+0x46>
            LogInfo("BitmapTypeCheck: malformed nsec, bitmaplen %d short", bitmaplen);
    e88141cc:	000c1797          	auipc	a5,0xc1
    e88141d0:	8a878793          	addi	a5,a5,-1880 # e88d4a74 <mDNS_LoggingEnabled>
    e88141d4:	439c                	lw	a5,0(a5)
            return mDNSfalse;
    e88141d6:	4401                	li	s0,0
            LogInfo("BitmapTypeCheck: malformed nsec, bitmaplen %d short", bitmaplen);
    e88141d8:	cb89                	beqz	a5,e88141ea <BitmapTypeCheck+0x3c>
    e88141da:	862e                	mv	a2,a1
    e88141dc:	450d                	li	a0,3
    e88141de:	0008e597          	auipc	a1,0x8e
    e88141e2:	a3258593          	addi	a1,a1,-1486 # e88a1c10 <AllHosts_v6_Eth+0xa0>
    e88141e6:	2c61b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e88141ea:	8522                	mv	a0,s0
    e88141ec:	60a2                	ld	ra,8(sp)
    e88141ee:	6402                	ld	s0,0(sp)
    e88141f0:	0141                	addi	sp,sp,16
    e88141f2:	8082                	ret
        win = *bmap++;
    e88141f4:	882a                	mv	a6,a0
        wlen = *bmap++;
    e88141f6:	00154503          	lbu	a0,1(a0)
        bitmaplen -= 2;
    e88141fa:	ffe5861b          	addiw	a2,a1,-2
        win = *bmap++;
    e88141fe:	9828470b          	lbuia	a4,(a6),2,0
        wlen = *bmap++;
    e8814202:	86aa                	mv	a3,a0
        if (bitmaplen < wlen || wlen < 1 || wlen > 32)
    e8814204:	00a64563          	blt	a2,a0,e881420e <BitmapTypeCheck+0x60>
    e8814208:	c119                	beqz	a0,e881420e <BitmapTypeCheck+0x60>
    e881420a:	02a35163          	bge	t1,a0,e881422c <BitmapTypeCheck+0x7e>
            LogInfo("BitmapTypeCheck: malformed nsec, bitmaplen %d wlen %d, win %d", bitmaplen, wlen, win);
    e881420e:	000c1797          	auipc	a5,0xc1
    e8814212:	86678793          	addi	a5,a5,-1946 # e88d4a74 <mDNS_LoggingEnabled>
    e8814216:	439c                	lw	a5,0(a5)
            return mDNSfalse;
    e8814218:	4401                	li	s0,0
            LogInfo("BitmapTypeCheck: malformed nsec, bitmaplen %d wlen %d, win %d", bitmaplen, wlen, win);
    e881421a:	dbe1                	beqz	a5,e88141ea <BitmapTypeCheck+0x3c>
    e881421c:	0008e597          	auipc	a1,0x8e
    e8814220:	a2c58593          	addi	a1,a1,-1492 # e88a1c48 <AllHosts_v6_Eth+0xd8>
    e8814224:	450d                	li	a0,3
    e8814226:	2861b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881422a:	b7c1                	j	e88141ea <BitmapTypeCheck+0x3c>
        if (win == wintype)
    e881422c:	02ee1063          	bne	t3,a4,e881424c <BitmapTypeCheck+0x9e>
            int boff = (type & 0xff ) >> 3;
    e8814230:	1c37b70b          	extu	a4,a5,7,3
            return mDNSfalse;
    e8814234:	4401                	li	s0,0
            if (wlen <= boff)
    e8814236:	faa75ae3          	bge	a4,a0,e88141ea <BitmapTypeCheck+0x3c>
            return (bmap[boff] & (0x80 >> (type & 7)));
    e881423a:	80e8440b          	lrbu	s0,a6,a4,0
    e881423e:	8b9d                	andi	a5,a5,7
    e8814240:	08000613          	li	a2,128
    e8814244:	40f657bb          	sraw	a5,a2,a5
    e8814248:	8c7d                	and	s0,s0,a5
    e881424a:	b745                	j	e88141ea <BitmapTypeCheck+0x3c>
            bmap += wlen;
    e881424c:	9542                	add	a0,a0,a6
            bitmaplen -= wlen;
    e881424e:	40d605bb          	subw	a1,a2,a3
    e8814252:	b7bd                	j	e88141c0 <BitmapTypeCheck+0x12>

00000000e8814254 <RRAssertsExistence>:
    if (rr->rrtype != kDNSType_NSEC) return mDNSfalse;
    e8814254:	00255703          	lhu	a4,2(a0)
    e8814258:	02f00793          	li	a5,47
    e881425c:	02f71b63          	bne	a4,a5,e8814292 <RRAssertsExistence+0x3e>
{
    e8814260:	7179                	addi	sp,sp,-48
    e8814262:	ec22                	sd	s0,24(sp)
    e8814264:	f026                	sd	s1,32(sp)
    e8814266:	f406                	sd	ra,40(sp)
    e8814268:	e42e                	sd	a1,8(sp)
    const RDataBody2 *const rdb = (RDataBody2 *)rr->rdata->u.data;
    e881426a:	750c                	ld	a1,40(a0)
    e881426c:	842a                	mv	s0,a0
    mDNSu8 *nsec = (mDNSu8 *)rdb->data;
    e881426e:	00458493          	addi	s1,a1,4
    len = DomainNameLength((domainname *)nsec);
    e8814272:	8526                	mv	a0,s1
    e8814274:	10458593          	addi	a1,a1,260
    e8814278:	ed5fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    bitmaplen = rr->rdlength - len;
    e881427c:	00c45583          	lhu	a1,12(s0)
}
    e8814280:	6462                	ld	s0,24(sp)
    return (BitmapTypeCheck(bmap, bitmaplen, type));
    e8814282:	6622                	ld	a2,8(sp)
}
    e8814284:	70a2                	ld	ra,40(sp)
    return (BitmapTypeCheck(bmap, bitmaplen, type));
    e8814286:	9d89                	subw	a1,a1,a0
    e8814288:	9526                	add	a0,a0,s1
}
    e881428a:	7482                	ld	s1,32(sp)
    e881428c:	6145                	addi	sp,sp,48
    return (BitmapTypeCheck(bmap, bitmaplen, type));
    e881428e:	f21ff06f          	j	e88141ae <BitmapTypeCheck>
}
    e8814292:	4501                	li	a0,0
    e8814294:	8082                	ret

00000000e8814296 <RRAssertsNonexistence>:
    if (rr->rrtype != kDNSType_NSEC) return mDNSfalse;
    e8814296:	00255703          	lhu	a4,2(a0)
    e881429a:	02f00793          	li	a5,47
    e881429e:	00f71c63          	bne	a4,a5,e88142b6 <RRAssertsNonexistence+0x20>
{
    e88142a2:	1141                	addi	sp,sp,-16
    e88142a4:	e406                	sd	ra,8(sp)
    return !RRAssertsExistence(rr, type);
    e88142a6:	fafff0ef          	jal	ra,e8814254 <RRAssertsExistence>
    e88142aa:	2501                	sext.w	a0,a0
}
    e88142ac:	60a2                	ld	ra,8(sp)
    return !RRAssertsExistence(rr, type);
    e88142ae:	00153513          	seqz	a0,a0
}
    e88142b2:	0141                	addi	sp,sp,16
    e88142b4:	8082                	ret
    if (rr->rrtype != kDNSType_NSEC) return mDNSfalse;
    e88142b6:	4501                	li	a0,0
}
    e88142b8:	8082                	ret

00000000e88142ba <LocalOnlyRecordAnswersQuestion>:
{
    e88142ba:	1101                	addi	sp,sp,-32
    e88142bc:	f891540b          	sdd	s0,s1,(sp),0,4
    e88142c0:	ec06                	sd	ra,24(sp)
    e88142c2:	e84a                	sd	s2,16(sp)
    if (RRAny(ar))
    e88142c4:	0ac54703          	lbu	a4,172(a0)
    e88142c8:	478d                	li	a5,3
{
    e88142ca:	842a                	mv	s0,a0
    if (RRAny(ar))
    e88142cc:	02e7e163          	bltu	a5,a4,e88142ee <LocalOnlyRecordAnswersQuestion+0x34>
        LogMsg("LocalOnlyRecordAnswersQuestion: ERROR!! called with regular AuthRecordAny %##s", rr->name->c);
    e88142d0:	7510                	ld	a2,40(a0)
    e88142d2:	0008e597          	auipc	a1,0x8e
    e88142d6:	23658593          	addi	a1,a1,566 # e88a2508 <DiscardPort+0x4f8>
    e88142da:	4501                	li	a0,0
    e88142dc:	1d01b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->InterfaceID != q->InterfaceID) return(mDNSfalse);
    e88142e0:	4501                	li	a0,0
}
    e88142e2:	60e2                	ld	ra,24(sp)
    e88142e4:	f891440b          	ldd	s0,s1,(sp),0,4
    e88142e8:	6942                	ld	s2,16(sp)
    e88142ea:	6105                	addi	sp,sp,32
    e88142ec:	8082                	ret
    if (rr->InterfaceID &&
    e88142ee:	7114                	ld	a3,32(a0)
    e88142f0:	84ae                	mv	s1,a1
    e88142f2:	c295                	beqz	a3,e8814316 <LocalOnlyRecordAnswersQuestion+0x5c>
        q->InterfaceID && q->InterfaceID != mDNSInterface_LocalOnly && q->InterfaceID != mDNSInterface_Unicast &&
    e88142f4:	1f05b783          	ld	a5,496(a1)
    if (rr->InterfaceID &&
    e88142f8:	cb89                	beqz	a5,e881430a <LocalOnlyRecordAnswersQuestion+0x50>
        q->InterfaceID && q->InterfaceID != mDNSInterface_LocalOnly && q->InterfaceID != mDNSInterface_Unicast &&
    e88142fa:	5679                	li	a2,-2
    e88142fc:	00c78763          	beq	a5,a2,e881430a <LocalOnlyRecordAnswersQuestion+0x50>
    e8814300:	5675                	li	a2,-3
    e8814302:	00c78463          	beq	a5,a2,e881430a <LocalOnlyRecordAnswersQuestion+0x50>
    e8814306:	fcf69de3          	bne	a3,a5,e88142e0 <LocalOnlyRecordAnswersQuestion+0x26>
    if (ar->ARType != AuthRecordLocalOnly && rr->InterfaceID && !mDNSOpaque16IsZero(q->TargetQID)) return(mDNSfalse);
    e881430a:	4791                	li	a5,4
    e881430c:	00f70563          	beq	a4,a5,e8814316 <LocalOnlyRecordAnswersQuestion+0x5c>
    e8814310:	2124d783          	lhu	a5,530(s1)
    e8814314:	f7f1                	bnez	a5,e88142e0 <LocalOnlyRecordAnswersQuestion+0x26>
    if (!RRTypeAnswersQuestionType(rr,q->qtype)) return(mDNSfalse);
    e8814316:	00a45703          	lhu	a4,10(s0)
    e881431a:	4795                	li	a5,5
    ResourceRecord *rr = &ar->resrec;
    e881431c:	00840913          	addi	s2,s0,8
    if (!RRTypeAnswersQuestionType(rr,q->qtype)) return(mDNSfalse);
    e8814320:	02f71d63          	bne	a4,a5,e881435a <LocalOnlyRecordAnswersQuestion+0xa0>
    if (rr->rrclass != q->qclass && q->qclass != kDNSQClass_ANY) return(mDNSfalse);
    e8814324:	00c45703          	lhu	a4,12(s0)
    e8814328:	3164d783          	lhu	a5,790(s1)
    e881432c:	04f71663          	bne	a4,a5,e8814378 <LocalOnlyRecordAnswersQuestion+0xbe>
    if (!AnonInfoAnswersQuestion(rr, q))
    e8814330:	85a6                	mv	a1,s1
    e8814332:	854a                	mv	a0,s2
    e8814334:	575050ef          	jal	ra,e881a0a8 <AnonInfoAnswersQuestion>
    e8814338:	d545                	beqz	a0,e88142e0 <LocalOnlyRecordAnswersQuestion+0x26>
    return(rr->namehash == q->qnamehash && SameDomainName(rr->name, &q->qname));
    e881433a:	4c18                	lw	a4,24(s0)
    e881433c:	449c                	lw	a5,8(s1)
    e881433e:	4501                	li	a0,0
    e8814340:	00f71a63          	bne	a4,a5,e8814354 <LocalOnlyRecordAnswersQuestion+0x9a>
    e8814344:	7408                	ld	a0,40(s0)
    e8814346:	21448593          	addi	a1,s1,532
    e881434a:	d01fe0ef          	jal	ra,e881304a <SameDomainName>
    e881434e:	2501                	sext.w	a0,a0
    e8814350:	00a03533          	snez	a0,a0
    e8814354:	0ff57513          	andi	a0,a0,255
    e8814358:	b769                	j	e88142e2 <LocalOnlyRecordAnswersQuestion+0x28>
    if (!RRTypeAnswersQuestionType(rr,q->qtype)) return(mDNSfalse);
    e881435a:	3144d583          	lhu	a1,788(s1)
    e881435e:	0005879b          	sext.w	a5,a1
    e8814362:	fcf701e3          	beq	a4,a5,e8814324 <LocalOnlyRecordAnswersQuestion+0x6a>
    e8814366:	0ff00713          	li	a4,255
    e881436a:	fae78de3          	beq	a5,a4,e8814324 <LocalOnlyRecordAnswersQuestion+0x6a>
    e881436e:	854a                	mv	a0,s2
    e8814370:	f27ff0ef          	jal	ra,e8814296 <RRAssertsNonexistence>
    e8814374:	f945                	bnez	a0,e8814324 <LocalOnlyRecordAnswersQuestion+0x6a>
    e8814376:	b7ad                	j	e88142e0 <LocalOnlyRecordAnswersQuestion+0x26>
    if (rr->rrclass != q->qclass && q->qclass != kDNSQClass_ANY) return(mDNSfalse);
    e8814378:	0ff00713          	li	a4,255
    e881437c:	f6e792e3          	bne	a5,a4,e88142e0 <LocalOnlyRecordAnswersQuestion+0x26>
    e8814380:	bf45                	j	e8814330 <LocalOnlyRecordAnswersQuestion+0x76>

00000000e8814382 <AnyTypeRecordAnswersQuestion>:
{
    e8814382:	1101                	addi	sp,sp,-32
    e8814384:	e422                	sd	s0,8(sp)
    e8814386:	ec06                	sd	ra,24(sp)
    e8814388:	e826                	sd	s1,16(sp)
    if (LocalOnlyOrP2PInterface(rr->InterfaceID))
    e881438a:	6d10                	ld	a2,24(a0)
    e881438c:	5779                	li	a4,-2
{
    e881438e:	842e                	mv	s0,a1
    if (LocalOnlyOrP2PInterface(rr->InterfaceID))
    e8814390:	00e60863          	beq	a2,a4,e88143a0 <AnyTypeRecordAnswersQuestion+0x1e>
    e8814394:	57f1                	li	a5,-4
    e8814396:	00f60563          	beq	a2,a5,e88143a0 <AnyTypeRecordAnswersQuestion+0x1e>
    e881439a:	57e9                	li	a5,-6
    e881439c:	02f61163          	bne	a2,a5,e88143be <AnyTypeRecordAnswersQuestion+0x3c>
        LogMsg("AnyTypeRecordAnswersQuestion: ERROR!! called with LocalOnly ResourceRecord %p, Question %p", rr->InterfaceID, q->InterfaceID);
    e88143a0:	1f043683          	ld	a3,496(s0)
    e88143a4:	0008d597          	auipc	a1,0x8d
    e88143a8:	7d458593          	addi	a1,a1,2004 # e88a1b78 <AllHosts_v6_Eth+0x8>
    e88143ac:	4501                	li	a0,0
    e88143ae:	0fe1b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->InterfaceID != q->InterfaceID) return(mDNSfalse);
    e88143b2:	4501                	li	a0,0
}
    e88143b4:	60e2                	ld	ra,24(sp)
    e88143b6:	6422                	ld	s0,8(sp)
    e88143b8:	64c2                	ld	s1,16(sp)
    e88143ba:	6105                	addi	sp,sp,32
    e88143bc:	8082                	ret
    e88143be:	84aa                	mv	s1,a0
    if (rr->InterfaceID &&
    e88143c0:	ce01                	beqz	a2,e88143d8 <AnyTypeRecordAnswersQuestion+0x56>
        q->InterfaceID && q->InterfaceID != mDNSInterface_LocalOnly &&
    e88143c2:	1f05b783          	ld	a5,496(a1)
    if (rr->InterfaceID &&
    e88143c6:	c789                	beqz	a5,e88143d0 <AnyTypeRecordAnswersQuestion+0x4e>
        q->InterfaceID && q->InterfaceID != mDNSInterface_LocalOnly &&
    e88143c8:	00e78463          	beq	a5,a4,e88143d0 <AnyTypeRecordAnswersQuestion+0x4e>
    e88143cc:	fef613e3          	bne	a2,a5,e88143b2 <AnyTypeRecordAnswersQuestion+0x30>
    if (rr->InterfaceID && !mDNSOpaque16IsZero(q->TargetQID)) return(mDNSfalse);
    e88143d0:	21245783          	lhu	a5,530(s0)
    e88143d4:	cf99                	beqz	a5,e88143f2 <AnyTypeRecordAnswersQuestion+0x70>
    e88143d6:	bff1                	j	e88143b2 <AnyTypeRecordAnswersQuestion+0x30>
        mDNSu16 idr = (rr->rDNSServer ? rr->rDNSServer->resGroupID : 0);
    e88143d8:	791c                	ld	a5,48(a0)
    e88143da:	4701                	li	a4,0
    e88143dc:	c399                	beqz	a5,e88143e2 <AnyTypeRecordAnswersQuestion+0x60>
    e88143de:	13c7d703          	lhu	a4,316(a5)
        mDNSu16 idq = (q->qDNSServer ? q->qDNSServer->resGroupID : 0);
    e88143e2:	16843683          	ld	a3,360(s0)
    e88143e6:	4781                	li	a5,0
    e88143e8:	c299                	beqz	a3,e88143ee <AnyTypeRecordAnswersQuestion+0x6c>
    e88143ea:	13c6d783          	lhu	a5,316(a3)
        if (idr != idq) return(mDNSfalse);
    e88143ee:	fcf712e3          	bne	a4,a5,e88143b2 <AnyTypeRecordAnswersQuestion+0x30>
    if (rr->rrclass != q->qclass && q->qclass != kDNSQClass_ANY) return(mDNSfalse);
    e88143f2:	0044d703          	lhu	a4,4(s1)
    e88143f6:	31645783          	lhu	a5,790(s0)
    e88143fa:	00f70663          	beq	a4,a5,e8814406 <AnyTypeRecordAnswersQuestion+0x84>
    e88143fe:	0ff00713          	li	a4,255
    e8814402:	fae798e3          	bne	a5,a4,e88143b2 <AnyTypeRecordAnswersQuestion+0x30>
    if (!AnonInfoAnswersQuestion(rr, q))
    e8814406:	85a2                	mv	a1,s0
    e8814408:	8526                	mv	a0,s1
    e881440a:	49f050ef          	jal	ra,e881a0a8 <AnonInfoAnswersQuestion>
    e881440e:	d155                	beqz	a0,e88143b2 <AnyTypeRecordAnswersQuestion+0x30>
    return(rr->namehash == q->qnamehash && SameDomainName(rr->name, &q->qname));
    e8814410:	4898                	lw	a4,16(s1)
    e8814412:	441c                	lw	a5,8(s0)
    e8814414:	4501                	li	a0,0
    e8814416:	00f71a63          	bne	a4,a5,e881442a <AnyTypeRecordAnswersQuestion+0xa8>
    e881441a:	7088                	ld	a0,32(s1)
    e881441c:	21440593          	addi	a1,s0,532
    e8814420:	c2bfe0ef          	jal	ra,e881304a <SameDomainName>
    e8814424:	2501                	sext.w	a0,a0
    e8814426:	00a03533          	snez	a0,a0
    e881442a:	0ff57513          	andi	a0,a0,255
    e881442e:	b759                	j	e88143b4 <AnyTypeRecordAnswersQuestion+0x32>

00000000e8814430 <GetRDLength>:
{
    e8814430:	7179                	addi	sp,sp,-48
    e8814432:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8814436:	f406                	sd	ra,40(sp)
    e8814438:	f052                	sd	s4,32(sp)
    e881443a:	f891540b          	sdd	s0,s1,(sp),0,4
    e881443e:	4901                	li	s2,0
    const domainname *const name = estimate ? rr->name : mDNSNULL;
    e8814440:	c199                	beqz	a1,e8814446 <GetRDLength+0x16>
    e8814442:	02053903          	ld	s2,32(a0)
    if (rr->rrclass == kDNSQClass_ANY) return(rr->rdlength);    // Used in update packets to mean "Delete An RRset" (RFC 2136)
    e8814446:	00455703          	lhu	a4,4(a0)
    e881444a:	0ff00793          	li	a5,255
    e881444e:	00f71563          	bne	a4,a5,e8814458 <GetRDLength+0x28>
        case kDNSType_DHCID: return(rr->rdlength); // Not self-describing, so have to just trust rdlength
    e8814452:	00c55503          	lhu	a0,12(a0)
    e8814456:	a035                	j	e8814482 <GetRDLength+0x52>
    else switch (rr->rrtype)
    e8814458:	00255783          	lhu	a5,2(a0)
    e881445c:	02e00713          	li	a4,46
    const RDataBody2 *const rd = (RDataBody2 *)rr->rdata->u.data;
    e8814460:	7504                	ld	s1,40(a0)
    else switch (rr->rrtype)
    e8814462:	37fd                	addiw	a5,a5,-1
    e8814464:	3c07b68b          	extu	a3,a5,15,0
    e8814468:	fed765e3          	bltu	a4,a3,e8814452 <GetRDLength+0x22>
    e881446c:	0008d717          	auipc	a4,0x8d
    e8814470:	4cc70713          	addi	a4,a4,1228 # e88a1938 <iAP2LinkAccessorySuspendStateEvents+0x730>
    e8814474:	44d7478b          	lrw	a5,a4,a3,2
    e8814478:	842e                	mv	s0,a1
    e881447a:	89aa                	mv	s3,a0
    e881447c:	97ba                	add	a5,a5,a4
    e881447e:	8782                	jr	a5
        case kDNSType_AAAA: return(sizeof(rd->ipv6));
    e8814480:	4541                	li	a0,16
}
    e8814482:	70a2                	ld	ra,40(sp)
    e8814484:	f891440b          	ldd	s0,s1,(sp),0,4
    e8814488:	7a02                	ld	s4,32(sp)
    e881448a:	fb31490b          	ldd	s2,s3,(sp),1,4
    e881448e:	6145                	addi	sp,sp,48
    e8814490:	8082                	ret
        case kDNSType_DNAME: return(CompressedDomainNameLength(&rd->name, name));
    e8814492:	00448513          	addi	a0,s1,4
}
    e8814496:	f891440b          	ldd	s0,s1,(sp),0,4
    e881449a:	70a2                	ld	ra,40(sp)
    e881449c:	7a02                	ld	s4,32(sp)
        case kDNSType_DNAME: return(CompressedDomainNameLength(&rd->name, name));
    e881449e:	85ca                	mv	a1,s2
}
    e88144a0:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88144a4:	6145                	addi	sp,sp,48
        case kDNSType_DNAME: return(CompressedDomainNameLength(&rd->name, name));
    e88144a6:	d29fe06f          	j	e88131ce <CompressedDomainNameLength>
        case kDNSType_SOA:  return (mDNSu16)(CompressedDomainNameLength(&rd->soa.mname, name) +
    e88144aa:	85ca                	mv	a1,s2
    e88144ac:	00448513          	addi	a0,s1,4
    e88144b0:	d1ffe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
    e88144b4:	842a                	mv	s0,a0
                                             CompressedDomainNameLength(&rd->soa.rname, name) +
    e88144b6:	85ca                	mv	a1,s2
    e88144b8:	10448513          	addi	a0,s1,260
    e88144bc:	d13fe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
        case kDNSType_SOA:  return (mDNSu16)(CompressedDomainNameLength(&rd->soa.mname, name) +
    e88144c0:	9d21                	addw	a0,a0,s0
    e88144c2:	2551                	addiw	a0,a0,20
                return (mDNSu16)((estimate ? 2 : dlen) + rr->rdlength - dlen);
    e88144c4:	3c05350b          	extu	a0,a0,15,0
    e88144c8:	bf6d                	j	e8814482 <GetRDLength+0x52>
        case kDNSType_HINFO: return (mDNSu16)(2 + (int)rd->data[0] + (int)rd->data[1 + (int)rd->data[0]]);
    e88144ca:	0044c783          	lbu	a5,4(s1)
    e88144ce:	94be                	add	s1,s1,a5
    e88144d0:	0054c703          	lbu	a4,5(s1)
    e88144d4:	0027851b          	addiw	a0,a5,2
    e88144d8:	953a                	add	a0,a0,a4
    e88144da:	b765                	j	e8814482 <GetRDLength+0x52>
        case kDNSType_KX:   return (mDNSu16)(2 + CompressedDomainNameLength(&rd->mx.exchange, name));
    e88144dc:	85ca                	mv	a1,s2
    e88144de:	00648513          	addi	a0,s1,6
    e88144e2:	cedfe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
        case kDNSType_PX:   return (mDNSu16)(2 + CompressedDomainNameLength(&rd->px.map822, name) +
    e88144e6:	2509                	addiw	a0,a0,2
    e88144e8:	bff1                	j	e88144c4 <GetRDLength+0x94>
        case kDNSType_RP:   return (mDNSu16)(CompressedDomainNameLength(&rd->rp.mbox, name) +
    e88144ea:	85ca                	mv	a1,s2
    e88144ec:	00448513          	addi	a0,s1,4
    e88144f0:	cdffe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
    e88144f4:	842a                	mv	s0,a0
                                             CompressedDomainNameLength(&rd->rp.txt, name));
    e88144f6:	85ca                	mv	a1,s2
    e88144f8:	10448513          	addi	a0,s1,260
    e88144fc:	cd3fe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
        case kDNSType_RP:   return (mDNSu16)(CompressedDomainNameLength(&rd->rp.mbox, name) +
    e8814500:	9d21                	addw	a0,a0,s0
    e8814502:	b7c9                	j	e88144c4 <GetRDLength+0x94>
        case kDNSType_PX:   return (mDNSu16)(2 + CompressedDomainNameLength(&rd->px.map822, name) +
    e8814504:	85ca                	mv	a1,s2
    e8814506:	00648513          	addi	a0,s1,6
    e881450a:	cc5fe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
    e881450e:	842a                	mv	s0,a0
                                             CompressedDomainNameLength(&rd->px.mapx400, name));
    e8814510:	85ca                	mv	a1,s2
    e8814512:	10648513          	addi	a0,s1,262
    e8814516:	cb9fe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
        case kDNSType_PX:   return (mDNSu16)(2 + CompressedDomainNameLength(&rd->px.map822, name) +
    e881451a:	9d21                	addw	a0,a0,s0
    e881451c:	b7e9                	j	e88144e6 <GetRDLength+0xb6>
        case kDNSType_SRV:  return (mDNSu16)(6 + CompressedDomainNameLength(&rd->srv.target, name));
    e881451e:	85ca                	mv	a1,s2
    e8814520:	00a48513          	addi	a0,s1,10
    e8814524:	cabfe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
    e8814528:	2519                	addiw	a0,a0,6
    e881452a:	bf69                	j	e88144c4 <GetRDLength+0x94>
            domainname *next = (domainname *)rd->data;
    e881452c:	00448a13          	addi	s4,s1,4
            int dlen = DomainNameLength(next);
    e8814530:	10448593          	addi	a1,s1,260
    e8814534:	8552                	mv	a0,s4
    e8814536:	c17fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881453a:	84aa                	mv	s1,a0
            if (UNICAST_NSEC(rr))
    e881453c:	02f00593          	li	a1,47
    e8814540:	854e                	mv	a0,s3
    e8814542:	d13ff0ef          	jal	ra,e8814254 <RRAssertsExistence>
    e8814546:	c911                	beqz	a0,e881455a <GetRDLength+0x12a>
                return (mDNSu16)(CompressedDomainNameLength(next, name) + rr->rdlength - dlen);
    e8814548:	85ca                	mv	a1,s2
    e881454a:	8552                	mv	a0,s4
    e881454c:	c83fe0ef          	jal	ra,e88131ce <CompressedDomainNameLength>
    e8814550:	00c9d783          	lhu	a5,12(s3)
    e8814554:	9d3d                	addw	a0,a0,a5
    e8814556:	9d05                	subw	a0,a0,s1
    e8814558:	b7b5                	j	e88144c4 <GetRDLength+0x94>
                return (mDNSu16)((estimate ? 2 : dlen) + rr->rdlength - dlen);
    e881455a:	00c9d503          	lhu	a0,12(s3)
    e881455e:	4709                	li	a4,2
    e8814560:	4084970b          	mveqz	a4,s1,s0
    e8814564:	9d05                	subw	a0,a0,s1
    e8814566:	9d39                	addw	a0,a0,a4
    e8814568:	bfb1                	j	e88144c4 <GetRDLength+0x94>
        case kDNSType_A:    return(sizeof(rd->ipv4));
    e881456a:	4511                	li	a0,4
    e881456c:	bf19                	j	e8814482 <GetRDLength+0x52>

00000000e881456e <ValidateRData>:
    switch(rrtype)
    e881456e:	357d                	addiw	a0,a0,-1
    e8814570:	3c05370b          	extu	a4,a0,15,0
    e8814574:	02000793          	li	a5,32
    e8814578:	0ce7e863          	bltu	a5,a4,e8814648 <ValidateRData+0xda>
    e881457c:	853a                	mv	a0,a4
    e881457e:	0008d717          	auipc	a4,0x8d
    e8814582:	47670713          	addi	a4,a4,1142 # e88a19f4 <iAP2LinkAccessorySuspendStateEvents+0x7ec>
    e8814586:	44a7478b          	lrw	a5,a4,a0,2
{
    e881458a:	1141                	addi	sp,sp,-16
    e881458c:	e022                	sd	s0,0(sp)
    e881458e:	e406                	sd	ra,8(sp)
    switch(rrtype)
    e8814590:	97ba                	add	a5,a5,a4
    e8814592:	842e                	mv	s0,a1
    e8814594:	8782                	jr	a5
    case kDNSType_A:    return(rdlength == sizeof(mDNSv4Addr));
    e8814596:	ffc58513          	addi	a0,a1,-4
            return (ptr == end);
    e881459a:	00153513          	seqz	a0,a0
    e881459e:	a01d                	j	e88145c4 <ValidateRData+0x56>
    case kDNSType_PTR:  len = DomainNameLengthLimit(&rd->u.name, rd->u.data + rdlength);
    e88145a0:	00460513          	addi	a0,a2,4
    e88145a4:	95aa                	add	a1,a1,a0
    e88145a6:	ba7fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
        return(len <= MAX_DOMAIN_NAME && rdlength == len);
    e88145aa:	0005079b          	sext.w	a5,a0
    e88145ae:	10000713          	li	a4,256
    e88145b2:	4501                	li	a0,0
    e88145b4:	00f76663          	bltu	a4,a5,e88145c0 <ValidateRData+0x52>
    e88145b8:	40f40533          	sub	a0,s0,a5
    e88145bc:	00153513          	seqz	a0,a0
    e88145c0:	0ff57513          	andi	a0,a0,255
}
    e88145c4:	60a2                	ld	ra,8(sp)
    e88145c6:	6402                	ld	s0,0(sp)
    e88145c8:	0141                	addi	sp,sp,16
    e88145ca:	8082                	ret
    case kDNSType_TXT:  if (!rdlength) return(mDNSfalse);     // TXT record has to be at least one byte (RFC 1035)
    e88145cc:	4501                	li	a0,0
    e88145ce:	d9fd                	beqz	a1,e88145c4 <ValidateRData+0x56>
            const mDNSu8 *ptr = rd->u.txt.c;
    e88145d0:	0611                	addi	a2,a2,4
            const mDNSu8 *end = rd->u.txt.c + rdlength;
    e88145d2:	00b60533          	add	a0,a2,a1
            while (ptr < end) ptr += 1 + ptr[0];
    e88145d6:	00a66563          	bltu	a2,a0,e88145e0 <ValidateRData+0x72>
            return (ptr == end);
    e88145da:	40a60533          	sub	a0,a2,a0
    e88145de:	bf75                	j	e881459a <ValidateRData+0x2c>
            while (ptr < end) ptr += 1 + ptr[0];
    e88145e0:	00064783          	lbu	a5,0(a2)
    e88145e4:	0785                	addi	a5,a5,1
    e88145e6:	963e                	add	a2,a2,a5
    e88145e8:	b7fd                	j	e88145d6 <ValidateRData+0x68>
    case kDNSType_AAAA: return(rdlength == sizeof(mDNSv6Addr));
    e88145ea:	ff058513          	addi	a0,a1,-16
    e88145ee:	b775                	j	e881459a <ValidateRData+0x2c>
        len = DomainNameLengthLimit(&rd->u.mx.exchange, rd->u.data + rdlength);
    e88145f0:	00460593          	addi	a1,a2,4
    e88145f4:	95a2                	add	a1,a1,s0
    e88145f6:	00660513          	addi	a0,a2,6
    e88145fa:	b53fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
        return(len <= MAX_DOMAIN_NAME && rdlength == 2+len);
    e88145fe:	0005069b          	sext.w	a3,a0
    e8814602:	10000793          	li	a5,256
    e8814606:	4701                	li	a4,0
    e8814608:	00d7e663          	bltu	a5,a3,e8814614 <ValidateRData+0xa6>
    e881460c:	2509                	addiw	a0,a0,2
    e881460e:	8d01                	sub	a0,a0,s0
    e8814610:	00153713          	seqz	a4,a0
    e8814614:	0ff77513          	andi	a0,a4,255
    e8814618:	b775                	j	e88145c4 <ValidateRData+0x56>
        len = DomainNameLengthLimit(&rd->u.srv.target, rd->u.data + rdlength);
    e881461a:	00460593          	addi	a1,a2,4
    e881461e:	95a2                	add	a1,a1,s0
    e8814620:	00a60513          	addi	a0,a2,10
    e8814624:	b29fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
        return(len <= MAX_DOMAIN_NAME && rdlength == 6+len);
    e8814628:	0005069b          	sext.w	a3,a0
    e881462c:	10000713          	li	a4,256
    e8814630:	4781                	li	a5,0
    e8814632:	00d76663          	bltu	a4,a3,e881463e <ValidateRData+0xd0>
    e8814636:	2519                	addiw	a0,a0,6
    e8814638:	8d01                	sub	a0,a0,s0
    e881463a:	00153793          	seqz	a5,a0
    e881463e:	0ff7f513          	andi	a0,a5,255
    e8814642:	b749                	j	e88145c4 <ValidateRData+0x56>
    default:            return(mDNStrue);       // Allow all other types without checking
    e8814644:	4505                	li	a0,1
    e8814646:	bfbd                	j	e88145c4 <ValidateRData+0x56>
    e8814648:	4505                	li	a0,1
}
    e881464a:	8082                	ret

00000000e881464c <InitializeDNSMessage>:
    h->id             = id;
    e881464c:	00b51023          	sh	a1,0(a0)
    h->flags          = flags;
    e8814650:	00c51123          	sh	a2,2(a0)
    h->numQuestions   = 0;
    e8814654:	00053223          	sd	zero,4(a0)
}
    e8814658:	8082                	ret

00000000e881465a <FindCompressionPointer>:
    const mDNSu8 *result = end - *domname - 1;
    e881465a:	00064303          	lbu	t1,0(a2)
    e881465e:	fff34793          	not	a5,t1
    e8814662:	97ae                	add	a5,a5,a1
    if (*domname == 0) return(mDNSNULL);    // There's no point trying to match just the root label
    e8814664:	00030b63          	beqz	t1,e881467a <FindCompressionPointer+0x20>
                pointertarget = base + (((mDNSu16)(targ[0] & 0x3F)) << 8) + targ[1];
    e8814668:	6e11                	lui	t3,0x4
                if (targ[0] < 0x40) continue;                   // If length value, continue to check next label
    e881466a:	03f00e93          	li	t4,63
                if (targ[0] < 0xC0) break;                      // If 40-BF, not valid
    e881466e:	0bf00f13          	li	t5,191
                pointertarget = base + (((mDNSu16)(targ[0] & 0x3F)) << 8) + targ[1];
    e8814672:	f00e0e13          	addi	t3,t3,-256 # 3f00 <memcmp-0xe87fc100>
    while (result >= base)
    e8814676:	00a7f463          	bgeu	a5,a0,e881467e <FindCompressionPointer+0x24>
    if (*domname == 0) return(mDNSNULL);    // There's no point trying to match just the root label
    e881467a:	4781                	li	a5,0
    e881467c:	a071                	j	e8814708 <FindCompressionPointer+0xae>
        if (result[0] == domname[0] && result[1] == domname[1])
    e881467e:	0007c703          	lbu	a4,0(a5)
    e8814682:	02671263          	bne	a4,t1,e88146a6 <FindCompressionPointer+0x4c>
    e8814686:	0017c683          	lbu	a3,1(a5)
    e881468a:	00164703          	lbu	a4,1(a2)
    e881468e:	00e69c63          	bne	a3,a4,e88146a6 <FindCompressionPointer+0x4c>
    e8814692:	86be                	mv	a3,a5
            const mDNSu8 *name = domname;
    e8814694:	8832                	mv	a6,a2
    e8814696:	a091                	j	e88146da <FindCompressionPointer+0x80>
                for (i=0; i <= *name; i++) if (targ[i] != name[i]) break;
    e8814698:	8116cf8b          	lrbu	t6,a3,a7,0
    e881469c:	0885                	addi	a7,a7,1
    e881469e:	8112c38b          	lrbu	t2,t0,a7,0
    e88146a2:	05f38563          	beq	t2,t6,e88146ec <FindCompressionPointer+0x92>
        result--;   // We failed to match at this search position, so back up the tentative result pointer and try again
    e88146a6:	17fd                	addi	a5,a5,-1
    e88146a8:	b7f9                	j	e8814676 <FindCompressionPointer+0x1c>
                if (targ[0] < 0x40) continue;                   // If length value, continue to check next label
    e88146aa:	02eef863          	bgeu	t4,a4,e88146da <FindCompressionPointer+0x80>
                if (targ[0] < 0xC0) break;                      // If 40-BF, not valid
    e88146ae:	feef7ce3          	bgeu	t5,a4,e88146a6 <FindCompressionPointer+0x4c>
                if (targ+1 >= end) break;                       // Second byte not present!
    e88146b2:	00168893          	addi	a7,a3,1
    e88146b6:	feb8f8e3          	bgeu	a7,a1,e88146a6 <FindCompressionPointer+0x4c>
                pointertarget = base + (((mDNSu16)(targ[0] & 0x3F)) << 8) + targ[1];
    e88146ba:	0016c883          	lbu	a7,1(a3)
    e88146be:	0087171b          	slliw	a4,a4,0x8
    e88146c2:	00ee7733          	and	a4,t3,a4
    e88146c6:	9746                	add	a4,a4,a7
    e88146c8:	00e508b3          	add	a7,a0,a4
                if (targ < pointertarget) break;                // Pointertarget must point *backwards* in the packet
    e88146cc:	fd16ede3          	bltu	a3,a7,e88146a6 <FindCompressionPointer+0x4c>
                if (pointertarget[0] >= 0x40) break;            // Pointertarget must point to a valid length byte
    e88146d0:	80e5470b          	lrbu	a4,a0,a4,0
    e88146d4:	fceee9e3          	bltu	t4,a4,e88146a6 <FindCompressionPointer+0x4c>
    e88146d8:	86c6                	mv	a3,a7
            while (targ + *name < end)
    e88146da:	00084703          	lbu	a4,0(a6)
    e88146de:	00e688b3          	add	a7,a3,a4
    e88146e2:	fcb8f2e3          	bgeu	a7,a1,e88146a6 <FindCompressionPointer+0x4c>
    e88146e6:	4881                	li	a7,0
                for (i=0; i <= *name; i++) if (targ[i] != name[i]) break;
    e88146e8:	fff80293          	addi	t0,a6,-1
    e88146ec:	00088f9b          	sext.w	t6,a7
    e88146f0:	fbf754e3          	bge	a4,t6,e8814698 <FindCompressionPointer+0x3e>
                targ += 1 + *name;                              // Else, did match, so advance target pointer
    e88146f4:	0705                	addi	a4,a4,1
                name += 1 + *name;                              // and proceed to check next label
    e88146f6:	983a                	add	a6,a6,a4
                if (*name == 0 && *targ == 0) return(result);   // If no more labels, we found a match!
    e88146f8:	00084883          	lbu	a7,0(a6)
                targ += 1 + *name;                              // Else, did match, so advance target pointer
    e88146fc:	96ba                	add	a3,a3,a4
                if (*name == 0 && *targ == 0) return(result);   // If no more labels, we found a match!
    e88146fe:	0006c703          	lbu	a4,0(a3)
    e8814702:	fa0894e3          	bnez	a7,e88146aa <FindCompressionPointer+0x50>
    e8814706:	f345                	bnez	a4,e88146a6 <FindCompressionPointer+0x4c>
}
    e8814708:	853e                	mv	a0,a5
    e881470a:	8082                	ret

00000000e881470c <putDomainNameAsLabels>:
{
    e881470c:	711d                	addi	sp,sp,-96
    e881470e:	ec86                	sd	ra,88(sp)
    e8814710:	e8a2                	sd	s0,80(sp)
    e8814712:	e4a6                	sd	s1,72(sp)
    e8814714:	e0ca                	sd	s2,64(sp)
    e8814716:	fc4e                	sd	s3,56(sp)
    e8814718:	f852                	sd	s4,48(sp)
    e881471a:	f456                	sd	s5,40(sp)
    e881471c:	f05a                	sd	s6,32(sp)
    e881471e:	ec5e                	sd	s7,24(sp)
    e8814720:	e862                	sd	s8,16(sp)
    if (!ptr) { LogMsg("putDomainNameAsLabels %##s ptr is null", name->c); return(mDNSNULL); }
    e8814722:	e991                	bnez	a1,e8814736 <putDomainNameAsLabels+0x2a>
    e8814724:	8636                	mv	a2,a3
    e8814726:	0008f597          	auipc	a1,0x8f
    e881472a:	c3a58593          	addi	a1,a1,-966 # e88a3360 <onesIPv6Addr+0x48>
            { LogMsg("Malformed domain name %##s (more than 256 bytes)", name->c); return(mDNSNULL); }
    e881472e:	4501                	li	a0,0
    e8814730:	57d1a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8814734:	a809                	j	e8814746 <putDomainNameAsLabels+0x3a>
    if (!*np)       // If just writing one-byte root label, make sure we have space for that
    e8814736:	0006c783          	lbu	a5,0(a3)
    e881473a:	8a2e                	mv	s4,a1
    e881473c:	8b32                	mv	s6,a2
    e881473e:	e38d                	bnez	a5,e8814760 <putDomainNameAsLabels+0x54>
        if (ptr >= limit) return(mDNSNULL);
    e8814740:	842e                	mv	s0,a1
    e8814742:	0ac5e663          	bltu	a1,a2,e88147ee <putDomainNameAsLabels+0xe2>
            { LogMsg("Malformed domain name %##s (more than 256 bytes)", name->c); return(mDNSNULL); }
    e8814746:	4501                	li	a0,0
}
    e8814748:	60e6                	ld	ra,88(sp)
    e881474a:	6446                	ld	s0,80(sp)
    e881474c:	64a6                	ld	s1,72(sp)
    e881474e:	6906                	ld	s2,64(sp)
    e8814750:	79e2                	ld	s3,56(sp)
    e8814752:	7a42                	ld	s4,48(sp)
    e8814754:	7aa2                	ld	s5,40(sp)
    e8814756:	7b02                	ld	s6,32(sp)
    e8814758:	6be2                	ld	s7,24(sp)
    e881475a:	6c42                	ld	s8,16(sp)
    e881475c:	6125                	addi	sp,sp,96
    e881475e:	8082                	ret
    e8814760:	8aaa                	mv	s5,a0
    const mDNSu8 *const max         = name->c + MAX_DOMAIN_NAME;    // Maximum that's valid
    e8814762:	10068b93          	addi	s7,a3,256
    const mDNSu8 *      np          = name->c;
    e8814766:	84b6                	mv	s1,a3
    const mDNSu8 *const max         = name->c + MAX_DOMAIN_NAME;    // Maximum that's valid
    e8814768:	842e                	mv	s0,a1
            if (*np > MAX_DOMAIN_LABEL)
    e881476a:	03f00c13          	li	s8,63
    e881476e:	0004c903          	lbu	s2,0(s1)
    e8814772:	012c7863          	bgeu	s8,s2,e8814782 <putDomainNameAsLabels+0x76>
            { LogMsg("Malformed domain name %##s (label more than 63 bytes)", name->c); return(mDNSNULL); }
    e8814776:	8636                	mv	a2,a3
    e8814778:	0008f597          	auipc	a1,0x8f
    e881477c:	c1058593          	addi	a1,a1,-1008 # e88a3388 <onesIPv6Addr+0x70>
    e8814780:	b77d                	j	e881472e <putDomainNameAsLabels+0x22>
            if (np + 1 + *np >= max)
    e8814782:	00190993          	addi	s3,s2,1
    e8814786:	013487b3          	add	a5,s1,s3
    e881478a:	0177e863          	bltu	a5,s7,e881479a <putDomainNameAsLabels+0x8e>
            { LogMsg("Malformed domain name %##s (more than 256 bytes)", name->c); return(mDNSNULL); }
    e881478e:	8636                	mv	a2,a3
    e8814790:	0008f597          	auipc	a1,0x8f
    e8814794:	c3058593          	addi	a1,a1,-976 # e88a33c0 <onesIPv6Addr+0xa8>
    e8814798:	bf59                	j	e881472e <putDomainNameAsLabels+0x22>
            if (base) pointer = FindCompressionPointer(base, searchlimit, np);
    e881479a:	020a8a63          	beqz	s5,e88147ce <putDomainNameAsLabels+0xc2>
    e881479e:	8626                	mv	a2,s1
    e88147a0:	85d2                	mv	a1,s4
    e88147a2:	8556                	mv	a0,s5
    e88147a4:	e436                	sd	a3,8(sp)
    e88147a6:	eb5ff0ef          	jal	ra,e881465a <FindCompressionPointer>
            if (pointer)                    // Use a compression pointer if we can
    e88147aa:	66a2                	ld	a3,8(sp)
    e88147ac:	c10d                	beqz	a0,e88147ce <putDomainNameAsLabels+0xc2>
                if (ptr+2 > limit) return(mDNSNULL);    // If we don't have two bytes of space left, give up
    e88147ae:	00240793          	addi	a5,s0,2
    e88147b2:	f8fb6ae3          	bltu	s6,a5,e8814746 <putDomainNameAsLabels+0x3a>
                const mDNSu16 offset = (mDNSu16)(pointer - base);
    e88147b6:	41550733          	sub	a4,a0,s5
                *ptr++ = (mDNSu8)(0xC0 | (offset >> 8));
    e88147ba:	3c87368b          	extu	a3,a4,15,8
    e88147be:	fc06e693          	ori	a3,a3,-64
    e88147c2:	00d40023          	sb	a3,0(s0)
                *ptr++ = (mDNSu8)(        offset &  0xFF);
    e88147c6:	853e                	mv	a0,a5
    e88147c8:	00e400a3          	sb	a4,1(s0)
                return(ptr);
    e88147cc:	bfb5                	j	e8814748 <putDomainNameAsLabels+0x3c>
                if (ptr + 1 + len >= limit) return(mDNSNULL);
    e88147ce:	013407b3          	add	a5,s0,s3
    e88147d2:	f767fae3          	bgeu	a5,s6,e8814746 <putDomainNameAsLabels+0x3a>
                *ptr++ = len;
    e88147d6:	01240023          	sb	s2,0(s0)
                for (i=0; i<len; i++) *ptr++ = *np++;
    e88147da:	4785                	li	a5,1
    e88147dc:	fff7861b          	addiw	a2,a5,-1
    e88147e0:	80f4c70b          	lrbu	a4,s1,a5,0
    e88147e4:	01264963          	blt	a2,s2,e88147f6 <putDomainNameAsLabels+0xea>
    e88147e8:	944e                	add	s0,s0,s3
    e88147ea:	94ce                	add	s1,s1,s3
        } while (*np);                      // While we've got characters remaining in the name, continue
    e88147ec:	f349                	bnez	a4,e881476e <putDomainNameAsLabels+0x62>
    *ptr++ = 0;     // Put the final root label
    e88147ee:	8522                	mv	a0,s0
    e88147f0:	1815500b          	sbia	zero,(a0),1,0
    return(ptr);
    e88147f4:	bf91                	j	e8814748 <putDomainNameAsLabels+0x3c>
                for (i=0; i<len; i++) *ptr++ = *np++;
    e88147f6:	00f4570b          	srb	a4,s0,a5,0
    e88147fa:	0785                	addi	a5,a5,1
    e88147fc:	b7c5                	j	e88147dc <putDomainNameAsLabels+0xd0>

00000000e88147fe <putQuestion>:
{
    e88147fe:	7179                	addi	sp,sp,-48
    e8814800:	ec22                	sd	s0,24(sp)
    e8814802:	f026                	sd	s1,32(sp)
    e8814804:	f406                	sd	ra,40(sp)
    e8814806:	842a                	mv	s0,a0
    e8814808:	84b2                	mv	s1,a2
    e881480a:	e43a                	sd	a4,8(sp)
    e881480c:	e03e                	sd	a5,0(sp)
    ptr = putDomainNameAsLabels(msg, ptr, limit, name);
    e881480e:	effff0ef          	jal	ra,e881470c <putDomainNameAsLabels>
    if (!ptr || ptr+4 >= limit) return(mDNSNULL);           // If we're out-of-space, return mDNSNULL
    e8814812:	c91d                	beqz	a0,e8814848 <putQuestion+0x4a>
    e8814814:	00450613          	addi	a2,a0,4
    e8814818:	02967d63          	bgeu	a2,s1,e8814852 <putQuestion+0x54>
    ptr[0] = (mDNSu8)(rrtype  >> 8);
    e881481c:	6722                	ld	a4,8(sp)
    ptr[2] = (mDNSu8)(rrclass >> 8);
    e881481e:	6782                	ld	a5,0(sp)
    ptr[0] = (mDNSu8)(rrtype  >> 8);
    e8814820:	00871693          	slli	a3,a4,0x8
    e8814824:	5c87370b          	extu	a4,a4,23,8
    e8814828:	8f55                	or	a4,a4,a3
    e881482a:	00e51023          	sh	a4,0(a0)
    ptr[2] = (mDNSu8)(rrclass >> 8);
    e881482e:	00879713          	slli	a4,a5,0x8
    e8814832:	5c87b78b          	extu	a5,a5,23,8
    e8814836:	8fd9                	or	a5,a5,a4
    e8814838:	00f51123          	sh	a5,2(a0)
    msg->h.numQuestions++;
    e881483c:	00445783          	lhu	a5,4(s0)
    return(ptr+4);
    e8814840:	8532                	mv	a0,a2
    msg->h.numQuestions++;
    e8814842:	2785                	addiw	a5,a5,1
    e8814844:	00f41223          	sh	a5,4(s0)
}
    e8814848:	70a2                	ld	ra,40(sp)
    e881484a:	6462                	ld	s0,24(sp)
    e881484c:	7482                	ld	s1,32(sp)
    e881484e:	6145                	addi	sp,sp,48
    e8814850:	8082                	ret
    if (!ptr || ptr+4 >= limit) return(mDNSNULL);           // If we're out-of-space, return mDNSNULL
    e8814852:	4501                	li	a0,0
    e8814854:	bfd5                	j	e8814848 <putQuestion+0x4a>

00000000e8814856 <putZone>:
{
    e8814856:	7179                	addi	sp,sp,-48
    e8814858:	ec22                	sd	s0,24(sp)
    e881485a:	f026                	sd	s1,32(sp)
    e881485c:	f406                	sd	ra,40(sp)
    e881485e:	842a                	mv	s0,a0
    e8814860:	84b2                	mv	s1,a2
    e8814862:	e43a                	sd	a4,8(sp)
    ptr = putDomainNameAsLabels(msg, ptr, limit, zone);
    e8814864:	ea9ff0ef          	jal	ra,e881470c <putDomainNameAsLabels>
    if (!ptr || ptr + 4 > limit) return mDNSNULL;       // If we're out-of-space, return NULL
    e8814868:	c115                	beqz	a0,e881488c <putZone+0x36>
    e881486a:	00450693          	addi	a3,a0,4
    e881486e:	02d4e463          	bltu	s1,a3,e8814896 <putZone+0x40>
    *ptr++ = zoneClass.b[0];
    e8814872:	6722                	ld	a4,8(sp)
    *ptr++ = (mDNSu8)(kDNSType_SOA  >> 8);
    e8814874:	60000793          	li	a5,1536
    e8814878:	00f51023          	sh	a5,0(a0)
    *ptr++ = zoneClass.b[0];
    e881487c:	00e51123          	sh	a4,2(a0)
    msg->h.mDNS_numZones++;
    e8814880:	00445783          	lhu	a5,4(s0)
    return ptr;
    e8814884:	8536                	mv	a0,a3
    msg->h.mDNS_numZones++;
    e8814886:	2785                	addiw	a5,a5,1
    e8814888:	00f41223          	sh	a5,4(s0)
}
    e881488c:	70a2                	ld	ra,40(sp)
    e881488e:	6462                	ld	s0,24(sp)
    e8814890:	7482                	ld	s1,32(sp)
    e8814892:	6145                	addi	sp,sp,48
    e8814894:	8082                	ret
    if (!ptr || ptr + 4 > limit) return mDNSNULL;       // If we're out-of-space, return NULL
    e8814896:	4501                	li	a0,0
    e8814898:	bfd5                	j	e881488c <putZone+0x36>

00000000e881489a <putDeleteRRSetWithLimit>:
{
    e881489a:	7179                	addi	sp,sp,-48
    e881489c:	ec22                	sd	s0,24(sp)
    e881489e:	8436                	mv	s0,a3
    ptr = putDomainNameAsLabels(msg, ptr, limit, name);
    e88148a0:	86b2                	mv	a3,a2
    e88148a2:	863a                	mv	a2,a4
{
    e88148a4:	f026                	sd	s1,32(sp)
    e88148a6:	f406                	sd	ra,40(sp)
    e88148a8:	84aa                	mv	s1,a0
    ptr = putDomainNameAsLabels(msg, ptr, limit, name);
    e88148aa:	e43a                	sd	a4,8(sp)
    e88148ac:	e61ff0ef          	jal	ra,e881470c <putDomainNameAsLabels>
    if (!ptr || ptr + 10 >= limit) return mDNSNULL; // If we're out-of-space, return mDNSNULL
    e88148b0:	c905                	beqz	a0,e88148e0 <putDeleteRRSetWithLimit+0x46>
    e88148b2:	6722                	ld	a4,8(sp)
    e88148b4:	00a50693          	addi	a3,a0,10
    e88148b8:	02e6f963          	bgeu	a3,a4,e88148ea <putDeleteRRSetWithLimit+0x50>
    ptr[0] = (mDNSu8)(rrtype  >> 8);
    e88148bc:	00841793          	slli	a5,s0,0x8
    e88148c0:	5c84340b          	extu	s0,s0,23,8
    e88148c4:	8c5d                	or	s0,s0,a5
    ptr[2] = (mDNSu8)(class >> 8);
    e88148c6:	67c1                	lui	a5,0x10
    e88148c8:	f0078793          	addi	a5,a5,-256 # ff00 <memcmp-0xe87f0100>
    ptr[0] = (mDNSu8)(rrtype  >> 8);
    e88148cc:	00851023          	sh	s0,0(a0)
    ptr[2] = (mDNSu8)(class >> 8);
    e88148d0:	00f53123          	sd	a5,2(a0)
    msg->h.mDNS_numUpdates++;
    e88148d4:	0084d783          	lhu	a5,8(s1)
    return ptr + 10;
    e88148d8:	8536                	mv	a0,a3
    msg->h.mDNS_numUpdates++;
    e88148da:	2785                	addiw	a5,a5,1
    e88148dc:	00f49423          	sh	a5,8(s1)
}
    e88148e0:	70a2                	ld	ra,40(sp)
    e88148e2:	6462                	ld	s0,24(sp)
    e88148e4:	7482                	ld	s1,32(sp)
    e88148e6:	6145                	addi	sp,sp,48
    e88148e8:	8082                	ret
    if (!ptr || ptr + 10 >= limit) return mDNSNULL; // If we're out-of-space, return mDNSNULL
    e88148ea:	4501                	li	a0,0
    e88148ec:	bfd5                	j	e88148e0 <putDeleteRRSetWithLimit+0x46>

00000000e88148ee <DomainNameHashValue>:
{
    e88148ee:	85aa                	mv	a1,a0
        sum += ((mDNSIsUpperCase(c[0]) ? c[0] + 'a' - 'A' : c[0]) << 8) |
    e88148f0:	4865                	li	a6,25
    mDNSu32 sum = 0;
    e88148f2:	4501                	li	a0,0
    for (c = name->c; c[0] != 0 && c[1] != 0; c += 2)
    e88148f4:	0005c783          	lbu	a5,0(a1)
    e88148f8:	cba1                	beqz	a5,e8814948 <DomainNameHashValue+0x5a>
    e88148fa:	0015c683          	lbu	a3,1(a1)
    e88148fe:	fbf7861b          	addiw	a2,a5,-65
    e8814902:	0ff67613          	andi	a2,a2,255
    e8814906:	ea89                	bnez	a3,e8814918 <DomainNameHashValue+0x2a>
    if (c[0]) sum += ((mDNSIsUpperCase(c[0]) ? c[0] + 'a' - 'A' : c[0]) << 8);
    e8814908:	4765                	li	a4,25
    e881490a:	00c76463          	bltu	a4,a2,e8814912 <DomainNameHashValue+0x24>
    e881490e:	0207879b          	addiw	a5,a5,32
    e8814912:	07a2                	slli	a5,a5,0x8
    e8814914:	9d3d                	addw	a0,a0,a5
    return(sum);
    e8814916:	8082                	ret
        sum += ((mDNSIsUpperCase(c[0]) ? c[0] + 'a' - 'A' : c[0]) << 8) |
    e8814918:	00879713          	slli	a4,a5,0x8
    e881491c:	00c86663          	bltu	a6,a2,e8814928 <DomainNameHashValue+0x3a>
    e8814920:	0207879b          	addiw	a5,a5,32
    e8814924:	00879713          	slli	a4,a5,0x8
    e8814928:	87b6                	mv	a5,a3
               (mDNSIsUpperCase(c[1]) ? c[1] + 'a' - 'A' : c[1]);
    e881492a:	fbf6869b          	addiw	a3,a3,-65
    e881492e:	0ff6f693          	andi	a3,a3,255
    e8814932:	00d86463          	bltu	a6,a3,e881493a <DomainNameHashValue+0x4c>
    e8814936:	02078793          	addi	a5,a5,32
        sum += ((mDNSIsUpperCase(c[0]) ? c[0] + 'a' - 'A' : c[0]) << 8) |
    e881493a:	8fd9                	or	a5,a5,a4
    e881493c:	9fa9                	addw	a5,a5,a0
        sum = (sum<<3) | (sum>>29);
    e881493e:	15d7978b          	srriw	a5,a5,29
    e8814942:	853e                	mv	a0,a5
    for (c = name->c; c[0] != 0 && c[1] != 0; c += 2)
    e8814944:	0589                	addi	a1,a1,2
    e8814946:	b77d                	j	e88148f4 <DomainNameHashValue+0x6>
}
    e8814948:	8082                	ret

00000000e881494a <RDataHashValue>:
{
    e881494a:	7179                	addi	sp,sp,-48
    e881494c:	ec4a                	sd	s2,24(sp)
    e881494e:	f406                	sd	ra,40(sp)
    e8814950:	e422                	sd	s0,8(sp)
    e8814952:	e826                	sd	s1,16(sp)
    e8814954:	f04e                	sd	s3,32(sp)
    switch(rr->rrtype)
    e8814956:	00255783          	lhu	a5,2(a0)
    const RDataBody2 *const rdb = (RDataBody2 *)rr->rdata->u.data;
    e881495a:	7504                	ld	s1,40(a0)
    switch(rr->rrtype)
    e881495c:	02d00693          	li	a3,45
    e8814960:	37f9                	addiw	a5,a5,-2
    e8814962:	3c07b60b          	extu	a2,a5,15,0
    int len = rr->rdlength;
    e8814966:	00c55703          	lhu	a4,12(a0)
    const mDNSu8 *ptr = rdb->data;
    e881496a:	00448913          	addi	s2,s1,4
    switch(rr->rrtype)
    e881496e:	0cc6e563          	bltu	a3,a2,e8814a38 <RDataHashValue+0xee>
    e8814972:	0008d697          	auipc	a3,0x8d
    e8814976:	10668693          	addi	a3,a3,262 # e88a1a78 <iAP2LinkAccessorySuspendStateEvents+0x870>
    e881497a:	44c6c78b          	lrw	a5,a3,a2,2
    e881497e:	97b6                	add	a5,a5,a3
    e8814980:	8782                	jr	a5
    case kDNSType_DNAME: return DomainNameHashValue(&rdb->name);
    e8814982:	854a                	mv	a0,s2
}
    e8814984:	6422                	ld	s0,8(sp)
    e8814986:	70a2                	ld	ra,40(sp)
    e8814988:	64c2                	ld	s1,16(sp)
    e881498a:	6962                	ld	s2,24(sp)
    e881498c:	7982                	ld	s3,32(sp)
    e881498e:	6145                	addi	sp,sp,48
    case kDNSType_SRV:   return DomainNameHashValue(&rdb->srv.target);
    e8814990:	f5fff06f          	j	e88148ee <DomainNameHashValue>
               rdb->soa.expire  +
    e8814994:	20c4a783          	lw	a5,524(s1)
    e8814998:	2084a403          	lw	s0,520(s1)
    e881499c:	2104a503          	lw	a0,528(s1)
    e88149a0:	9c3d                	addw	s0,s0,a5
    e88149a2:	9c29                	addw	s0,s0,a0
    e88149a4:	2144a503          	lw	a0,532(s1)
    e88149a8:	9c29                	addw	s0,s0,a0
    e88149aa:	2044a503          	lw	a0,516(s1)
    e88149ae:	9c29                	addw	s0,s0,a0
               DomainNameHashValue(&rdb->soa.mname) +
    e88149b0:	854a                	mv	a0,s2
    e88149b2:	f3dff0ef          	jal	ra,e88148ee <DomainNameHashValue>
               rdb->soa.min     +
    e88149b6:	9c29                	addw	s0,s0,a0
    case kDNSType_RP:    return DomainNameHashValue(&rdb->rp.mbox)   + DomainNameHashValue(&rdb->rp.txt);
    e88149b8:	10448513          	addi	a0,s1,260
    case kDNSType_PX:    return DomainNameHashValue(&rdb->px.map822) + DomainNameHashValue(&rdb->px.mapx400);
    e88149bc:	f33ff0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e88149c0:	9d21                	addw	a0,a0,s0
}
    e88149c2:	70a2                	ld	ra,40(sp)
    e88149c4:	6422                	ld	s0,8(sp)
    e88149c6:	64c2                	ld	s1,16(sp)
    e88149c8:	6962                	ld	s2,24(sp)
    e88149ca:	7982                	ld	s3,32(sp)
    e88149cc:	6145                	addi	sp,sp,48
    e88149ce:	8082                	ret
    case kDNSType_KX:    return DomainNameHashValue(&rdb->mx.exchange);
    e88149d0:	00648513          	addi	a0,s1,6
    e88149d4:	bf45                	j	e8814984 <RDataHashValue+0x3a>
    case kDNSType_RP:    return DomainNameHashValue(&rdb->rp.mbox)   + DomainNameHashValue(&rdb->rp.txt);
    e88149d6:	854a                	mv	a0,s2
    e88149d8:	f17ff0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e88149dc:	0005041b          	sext.w	s0,a0
    e88149e0:	bfe1                	j	e88149b8 <RDataHashValue+0x6e>
    case kDNSType_PX:    return DomainNameHashValue(&rdb->px.map822) + DomainNameHashValue(&rdb->px.mapx400);
    e88149e2:	00648513          	addi	a0,s1,6
    e88149e6:	f09ff0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e88149ea:	0005041b          	sext.w	s0,a0
    e88149ee:	10648513          	addi	a0,s1,262
    e88149f2:	b7e9                	j	e88149bc <RDataHashValue+0x72>
    case kDNSType_SRV:   return DomainNameHashValue(&rdb->srv.target);
    e88149f4:	00a48513          	addi	a0,s1,10
    e88149f8:	b771                	j	e8814984 <RDataHashValue+0x3a>
        dlen = DomainNameLength((domainname *)rdb->data);
    e88149fa:	10448593          	addi	a1,s1,260
    e88149fe:	854a                	mv	a0,s2
    e8814a00:	89ba                	mv	s3,a4
    e8814a02:	f4afe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814a06:	842a                	mv	s0,a0
        sum = DomainNameHashValue((domainname *)rdb->data);
    e8814a08:	854a                	mv	a0,s2
    e8814a0a:	ee5ff0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e8814a0e:	2501                	sext.w	a0,a0
        ptr += dlen;
    e8814a10:	9922                	add	s2,s2,s0
        len -= dlen;
    e8814a12:	4089873b          	subw	a4,s3,s0
        for (i=0; i+1 < len; i+=2)
    e8814a16:	4681                	li	a3,0
            sum += (((mDNSu32)(ptr[i])) << 8) | ptr[i+1];
    e8814a18:	00190593          	addi	a1,s2,1
        for (i=0; i+1 < len; i+=2)
    e8814a1c:	0016861b          	addiw	a2,a3,1
    e8814a20:	0006879b          	sext.w	a5,a3
    e8814a24:	00e64c63          	blt	a2,a4,e8814a3c <RDataHashValue+0xf2>
        if (i < len)
    e8814a28:	f8e7dde3          	bge	a5,a4,e88149c2 <RDataHashValue+0x78>
            sum += ((mDNSu32)(ptr[i])) << 8;
    e8814a2c:	80f9478b          	lrbu	a5,s2,a5,0
    e8814a30:	0087979b          	slliw	a5,a5,0x8
    e8814a34:	9d3d                	addw	a0,a0,a5
    e8814a36:	b771                	j	e88149c2 <RDataHashValue+0x78>
    mDNSu32 sum = 0;
    e8814a38:	4501                	li	a0,0
    e8814a3a:	bff1                	j	e8814a16 <RDataHashValue+0xcc>
            sum += (((mDNSu32)(ptr[i])) << 8) | ptr[i+1];
    e8814a3c:	80d9478b          	lrbu	a5,s2,a3,0
    e8814a40:	80d5c60b          	lrbu	a2,a1,a3,0
    e8814a44:	0689                	addi	a3,a3,2
    e8814a46:	0087979b          	slliw	a5,a5,0x8
    e8814a4a:	8fd1                	or	a5,a5,a2
    e8814a4c:	9d3d                	addw	a0,a0,a5
            sum = (sum<<3) | (sum>>29);
    e8814a4e:	15d5150b          	srriw	a0,a0,29
        for (i=0; i+1 < len; i+=2)
    e8814a52:	b7e9                	j	e8814a1c <RDataHashValue+0xd2>
    case kDNSType_OPT:   return 0;      // OPT is a pseudo-RR container structure; makes no sense to compare
    e8814a54:	4501                	li	a0,0
    e8814a56:	b7b5                	j	e88149c2 <RDataHashValue+0x78>

00000000e8814a58 <SetNewRData>:
{
    e8814a58:	1101                	addi	sp,sp,-32
    e8814a5a:	e422                	sd	s0,8(sp)
    e8814a5c:	ec06                	sd	ra,24(sp)
    e8814a5e:	e826                	sd	s1,16(sp)
    e8814a60:	842a                	mv	s0,a0
    if (NewRData)
    e8814a62:	c581                	beqz	a1,e8814a6a <SetNewRData+0x12>
        rr->rdata    = NewRData;
    e8814a64:	f50c                	sd	a1,40(a0)
        rr->rdlength = rdlength;
    e8814a66:	00c51623          	sh	a2,12(a0)
    target = GetRRDomainNameTarget(rr);
    e8814a6a:	00245603          	lhu	a2,2(s0)
    e8814a6e:	02500793          	li	a5,37
    e8814a72:	ffe6071b          	addiw	a4,a2,-2
    e8814a76:	3c07368b          	extu	a3,a4,15,0
    e8814a7a:	04d7e463          	bltu	a5,a3,e8814ac2 <SetNewRData+0x6a>
    e8814a7e:	4705                	li	a4,1
    e8814a80:	1716                	slli	a4,a4,0x25
    e8814a82:	40970713          	addi	a4,a4,1033
    e8814a86:	00d75733          	srl	a4,a4,a3
    e8814a8a:	0007370b          	extu	a4,a4,0,0
    e8814a8e:	cb15                	beqz	a4,e8814ac2 <SetNewRData+0x6a>
    e8814a90:	7404                	ld	s1,40(s0)
    e8814a92:	0491                	addi	s1,s1,4
    rr->rdlength   = GetRDLength(rr, mDNSfalse);
    e8814a94:	4581                	li	a1,0
    e8814a96:	8522                	mv	a0,s0
    e8814a98:	999ff0ef          	jal	ra,e8814430 <GetRDLength>
    e8814a9c:	00a41623          	sh	a0,12(s0)
    rr->rdestimate = GetRDLength(rr, mDNStrue);
    e8814aa0:	4585                	li	a1,1
    e8814aa2:	8522                	mv	a0,s0
    e8814aa4:	98dff0ef          	jal	ra,e8814430 <GetRDLength>
    e8814aa8:	00a41723          	sh	a0,14(s0)
    rr->rdatahash  = target ? DomainNameHashValue(target) : RDataHashValue(rr);
    e8814aac:	c4b1                	beqz	s1,e8814af8 <SetNewRData+0xa0>
    e8814aae:	8526                	mv	a0,s1
    e8814ab0:	e3fff0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e8814ab4:	2501                	sext.w	a0,a0
    e8814ab6:	c848                	sw	a0,20(s0)
}
    e8814ab8:	60e2                	ld	ra,24(sp)
    e8814aba:	6422                	ld	s0,8(sp)
    e8814abc:	64c2                	ld	s1,16(sp)
    e8814abe:	6105                	addi	sp,sp,32
    e8814ac0:	8082                	ret
    target = GetRRDomainNameTarget(rr);
    e8814ac2:	0006071b          	sext.w	a4,a2
    e8814ac6:	02400793          	li	a5,36
    e8814aca:	4481                	li	s1,0
    e8814acc:	fce7e4e3          	bltu	a5,a4,e8814a94 <SetNewRData+0x3c>
    e8814ad0:	002007b7          	lui	a5,0x200
    e8814ad4:	04978793          	addi	a5,a5,73 # 200049 <memcmp-0xe85fffb7>
    e8814ad8:	07be                	slli	a5,a5,0xf
    e8814ada:	00c7d7b3          	srl	a5,a5,a2
    e8814ade:	0007b78b          	extu	a5,a5,0,0
    e8814ae2:	c781                	beqz	a5,e8814aea <SetNewRData+0x92>
    e8814ae4:	7404                	ld	s1,40(s0)
    e8814ae6:	0499                	addi	s1,s1,6
    e8814ae8:	b775                	j	e8814a94 <SetNewRData+0x3c>
    e8814aea:	02100793          	li	a5,33
    e8814aee:	faf713e3          	bne	a4,a5,e8814a94 <SetNewRData+0x3c>
    e8814af2:	7404                	ld	s1,40(s0)
    e8814af4:	04a9                	addi	s1,s1,10
    e8814af6:	bf79                	j	e8814a94 <SetNewRData+0x3c>
    rr->rdatahash  = target ? DomainNameHashValue(target) : RDataHashValue(rr);
    e8814af8:	8522                	mv	a0,s0
    e8814afa:	e51ff0ef          	jal	ra,e881494a <RDataHashValue>
    e8814afe:	bf5d                	j	e8814ab4 <SetNewRData+0x5c>

00000000e8814b00 <skipDomainName>:
    if (ptr < (mDNSu8*)msg || ptr >= end)
    e8814b00:	06a5e163          	bltu	a1,a0,e8814b62 <skipDomainName+0x62>
    { debugf("skipDomainName: Illegal ptr not within packet boundaries"); return(mDNSNULL); }
    e8814b04:	4501                	li	a0,0
    if (ptr < (mDNSu8*)msg || ptr >= end)
    e8814b06:	04c5ff63          	bgeu	a1,a2,e8814b64 <skipDomainName+0x64>
    mDNSu16 total = 0;
    e8814b0a:	4681                	li	a3,0
        switch (len & 0xC0)
    e8814b0c:	04000813          	li	a6,64
    e8814b10:	08000893          	li	a7,128
    e8814b14:	0c000313          	li	t1,192
            if (total + 1 + len >= MAX_DOMAIN_NAME)             // Remember: expect at least one more byte for the root label
    e8814b18:	0ff00e13          	li	t3,255
        const mDNSu8 len = *ptr++;  // Read length of this label
    e8814b1c:	852e                	mv	a0,a1
    e8814b1e:	9815478b          	lbuia	a5,(a0),1,0
        if (len == 0) return(ptr);  // If length is zero, that means this name is complete
    e8814b22:	c3a9                	beqz	a5,e8814b64 <skipDomainName+0x64>
        switch (len & 0xC0)
    e8814b24:	0c07f713          	andi	a4,a5,192
    e8814b28:	03070d63          	beq	a4,a6,e8814b62 <skipDomainName+0x62>
    e8814b2c:	02e86263          	bltu	a6,a4,e8814b50 <skipDomainName+0x50>
        const mDNSu8 len = *ptr++;  // Read length of this label
    e8814b30:	85aa                	mv	a1,a0
        switch (len & 0xC0)
    e8814b32:	f76d                	bnez	a4,e8814b1c <skipDomainName+0x1c>
        case 0x00:  if (ptr + len >= end)                       // Remember: expect at least one more byte for the root label
    e8814b34:	00f505b3          	add	a1,a0,a5
    e8814b38:	02c5f563          	bgeu	a1,a2,e8814b62 <skipDomainName+0x62>
            if (total + 1 + len >= MAX_DOMAIN_NAME)             // Remember: expect at least one more byte for the root label
    e8814b3c:	0016871b          	addiw	a4,a3,1
    e8814b40:	973e                	add	a4,a4,a5
    e8814b42:	02ee4063          	blt	t3,a4,e8814b62 <skipDomainName+0x62>
            total += 1 + len;
    e8814b46:	9fb5                	addw	a5,a5,a3
    e8814b48:	2785                	addiw	a5,a5,1
    e8814b4a:	3c07b68b          	extu	a3,a5,15,0
            break;
    e8814b4e:	b7f9                	j	e8814b1c <skipDomainName+0x1c>
        switch (len & 0xC0)
    e8814b50:	01170963          	beq	a4,a7,e8814b62 <skipDomainName+0x62>
    e8814b54:	00670463          	beq	a4,t1,e8814b5c <skipDomainName+0x5c>
        const mDNSu8 len = *ptr++;  // Read length of this label
    e8814b58:	85aa                	mv	a1,a0
    e8814b5a:	b7c9                	j	e8814b1c <skipDomainName+0x1c>
        case 0xC0:  return(ptr+1);
    e8814b5c:	00258513          	addi	a0,a1,2
    e8814b60:	8082                	ret
    { debugf("skipDomainName: Illegal ptr not within packet boundaries"); return(mDNSNULL); }
    e8814b62:	4501                	li	a0,0
}
    e8814b64:	8082                	ret

00000000e8814b66 <getDomainName>:
{
    e8814b66:	832a                	mv	t1,a0
    if (ptr < (mDNSu8*)msg || ptr >= end)
    e8814b68:	00a5f463          	bgeu	a1,a0,e8814b70 <getDomainName+0xa>
            return(mDNSNULL);
    e8814b6c:	4501                	li	a0,0
}
    e8814b6e:	8082                	ret
    if (ptr < (mDNSu8*)msg || ptr >= end)
    e8814b70:	fec5fee3          	bgeu	a1,a2,e8814b6c <getDomainName+0x6>
        case 0xC0:  offset = (mDNSu16)((((mDNSu16)(len & 0x3F)) << 8) | *ptr++);
    e8814b74:	6e11                	lui	t3,0x4
    const mDNSu8 *const limit = np + MAX_DOMAIN_NAME;   // Limit so we don't overrun buffer
    e8814b76:	10068f13          	addi	t5,a3,256
    *np = 0;                        // Tentatively place the root label here (may be overwritten if we have more labels)
    e8814b7a:	00068023          	sb	zero,0(a3)
    const mDNSu8 *nextbyte = mDNSNULL;                  // Record where we got to before we started following pointers
    e8814b7e:	4501                	li	a0,0
        switch (len & 0xC0)
    e8814b80:	04000e93          	li	t4,64
    e8814b84:	08000f93          	li	t6,128
    e8814b88:	0c000293          	li	t0,192
        case 0xC0:  offset = (mDNSu16)((((mDNSu16)(len & 0x3F)) << 8) | *ptr++);
    e8814b8c:	f00e0e13          	addi	t3,t3,-256 # 3f00 <memcmp-0xe87fc100>
        const mDNSu8 len = *ptr++;  // Read length of this label
    e8814b90:	882e                	mv	a6,a1
    e8814b92:	9818478b          	lbuia	a5,(a6),1,0
        if (len == 0) break;        // If length is zero, that means this name is complete
    e8814b96:	cbc9                	beqz	a5,e8814c28 <getDomainName+0xc2>
        switch (len & 0xC0)
    e8814b98:	0c07f893          	andi	a7,a5,192
    e8814b9c:	873e                	mv	a4,a5
    e8814b9e:	fdd887e3          	beq	a7,t4,e8814b6c <getDomainName+0x6>
    e8814ba2:	051ee663          	bltu	t4,a7,e8814bee <getDomainName+0x88>
        const mDNSu8 len = *ptr++;  // Read length of this label
    e8814ba6:	85c2                	mv	a1,a6
        switch (len & 0xC0)
    e8814ba8:	fe0894e3          	bnez	a7,e8814b90 <getDomainName+0x2a>
        case 0x00:  if (ptr + len >= end)           // Remember: expect at least one more byte for the root label
    e8814bac:	00f805b3          	add	a1,a6,a5
    e8814bb0:	fac5fee3          	bgeu	a1,a2,e8814b6c <getDomainName+0x6>
            if (np + 1 + len >= limit)              // Remember: expect at least one more byte for the root label
    e8814bb4:	00178593          	addi	a1,a5,1
    e8814bb8:	95b6                	add	a1,a1,a3
    e8814bba:	fbe5f9e3          	bgeu	a1,t5,e8814b6c <getDomainName+0x6>
            *np++ = len;
    e8814bbe:	88b6                	mv	a7,a3
    e8814bc0:	1818d78b          	sbia	a5,(a7),1,0
    e8814bc4:	4681                	li	a3,0
            for (i=0; i<len; i++) *np++ = *ptr++;
    e8814bc6:	80d8458b          	lrbu	a1,a6,a3,0
    e8814bca:	00d8d58b          	srb	a1,a7,a3,0
    e8814bce:	0685                	addi	a3,a3,1
    e8814bd0:	0006859b          	sext.w	a1,a3
    e8814bd4:	fee5c9e3          	blt	a1,a4,e8814bc6 <getDomainName+0x60>
    e8814bd8:	37fd                	addiw	a5,a5,-1
    e8814bda:	7c07b78b          	extu	a5,a5,31,0
    e8814bde:	0785                	addi	a5,a5,1
    e8814be0:	00f805b3          	add	a1,a6,a5
    e8814be4:	00f886b3          	add	a3,a7,a5
            *np = 0;                // Tentatively place the root label here (may be overwritten if we have more labels)
    e8814be8:	00f8d00b          	srb	zero,a7,a5,0
            break;
    e8814bec:	b755                	j	e8814b90 <getDomainName+0x2a>
        switch (len & 0xC0)
    e8814bee:	f7f88fe3          	beq	a7,t6,e8814b6c <getDomainName+0x6>
    e8814bf2:	00588463          	beq	a7,t0,e8814bfa <getDomainName+0x94>
        const mDNSu8 len = *ptr++;  // Read length of this label
    e8814bf6:	85c2                	mv	a1,a6
    e8814bf8:	bf61                	j	e8814b90 <getDomainName+0x2a>
        case 0xC0:  offset = (mDNSu16)((((mDNSu16)(len & 0x3F)) << 8) | *ptr++);
    e8814bfa:	00084703          	lbu	a4,0(a6)
    e8814bfe:	07a2                	slli	a5,a5,0x8
    e8814c00:	01c7f7b3          	and	a5,a5,t3
    e8814c04:	8fd9                	or	a5,a5,a4
    e8814c06:	3c07a78b          	ext	a5,a5,15,0
            if (!nextbyte) nextbyte = ptr;              // Record where we got to before we started following pointers
    e8814c0a:	e119                	bnez	a0,e8814c10 <getDomainName+0xaa>
        case 0xC0:  offset = (mDNSu16)((((mDNSu16)(len & 0x3F)) << 8) | *ptr++);
    e8814c0c:	00258513          	addi	a0,a1,2
            ptr = (mDNSu8 *)msg + offset;
    e8814c10:	00f305b3          	add	a1,t1,a5
            if (ptr < (mDNSu8*)msg || ptr >= end)
    e8814c14:	f465ece3          	bltu	a1,t1,e8814b6c <getDomainName+0x6>
    e8814c18:	f4c5fae3          	bgeu	a1,a2,e8814b6c <getDomainName+0x6>
            if (*ptr & 0xC0)
    e8814c1c:	80f3478b          	lrbu	a5,t1,a5,0
    e8814c20:	0c07f793          	andi	a5,a5,192
    e8814c24:	d7b5                	beqz	a5,e8814b90 <getDomainName+0x2a>
    e8814c26:	b799                	j	e8814b6c <getDomainName+0x6>
        const mDNSu8 len = *ptr++;  // Read length of this label
    e8814c28:	40a8150b          	mveqz	a0,a6,a0
    e8814c2c:	8082                	ret

00000000e8814c2e <skipResourceRecord>:
{
    e8814c2e:	1141                	addi	sp,sp,-16
    e8814c30:	e022                	sd	s0,0(sp)
    e8814c32:	e406                	sd	ra,8(sp)
    e8814c34:	8432                	mv	s0,a2
    ptr = skipDomainName(msg, ptr, end);
    e8814c36:	ecbff0ef          	jal	ra,e8814b00 <skipDomainName>
    if (!ptr) { debugf("skipResourceRecord: Malformed RR name"); return(mDNSNULL); }
    e8814c3a:	c105                	beqz	a0,e8814c5a <skipResourceRecord+0x2c>
    if (ptr + 10 > end) { debugf("skipResourceRecord: Malformed RR -- no type/class/ttl/len!"); return(mDNSNULL); }
    e8814c3c:	00a50713          	addi	a4,a0,10
    e8814c40:	00e46c63          	bltu	s0,a4,e8814c58 <skipResourceRecord+0x2a>
    pktrdlength = (mDNSu16)((mDNSu16)ptr[8] <<  8 | ptr[9]);
    e8814c44:	00854783          	lbu	a5,8(a0)
    e8814c48:	00954683          	lbu	a3,9(a0)
    e8814c4c:	0087951b          	slliw	a0,a5,0x8
    if (ptr + pktrdlength > end) { debugf("skipResourceRecord: RDATA exceeds end of packet"); return(mDNSNULL); }
    e8814c50:	8d55                	or	a0,a0,a3
    e8814c52:	953a                	add	a0,a0,a4
    e8814c54:	00a47363          	bgeu	s0,a0,e8814c5a <skipResourceRecord+0x2c>
    if (!ptr) { debugf("skipResourceRecord: Malformed RR name"); return(mDNSNULL); }
    e8814c58:	4501                	li	a0,0
}
    e8814c5a:	60a2                	ld	ra,8(sp)
    e8814c5c:	6402                	ld	s0,0(sp)
    e8814c5e:	0141                	addi	sp,sp,16
    e8814c60:	8082                	ret

00000000e8814c62 <SetRData>:
// This function can also be called with "NULL" msg to parse a single resource record pointed to by ptr.
// The caller can do this only if the names in the resource records are not compressed and validity of the
// resource record has already been done before. DNSSEC currently uses it this way.
mDNSexport mDNSBool SetRData(const DNSMessage *const msg, const mDNSu8 *ptr, const mDNSu8 *end,
    LargeCacheRecord *const largecr, mDNSu16 rdlength)
{
    e8814c62:	7149                	addi	sp,sp,-368
    e8814c64:	f2a2                	sd	s0,352(sp)
    e8814c66:	e6ce                	sd	s3,328(sp)
    e8814c68:	e2d2                	sd	s4,320(sp)
    e8814c6a:	fe56                	sd	s5,312(sp)
    e8814c6c:	fa5a                	sd	s6,304(sp)
    e8814c6e:	f686                	sd	ra,360(sp)
    e8814c70:	eea6                	sd	s1,344(sp)
    e8814c72:	eaca                	sd	s2,336(sp)
    e8814c74:	f65e                	sd	s7,296(sp)
    e8814c76:	f262                	sd	s8,288(sp)
    e8814c78:	ee66                	sd	s9,280(sp)
    e8814c7a:	ea6a                	sd	s10,272(sp)
    e8814c7c:	e66e                	sd	s11,264(sp)
    e8814c7e:	8aba                	mv	s5,a4
    CacheRecord *const rr = &largecr->r;
    RDataBody2 *const rdb = (RDataBody2 *)rr->smallrdatastorage.data;

    switch (rr->resrec.rrtype)
    e8814c80:	00a6d703          	lhu	a4,10(a3)
{
    e8814c84:	8a36                	mv	s4,a3
    switch (rr->resrec.rrtype)
    e8814c86:	46d5                	li	a3,21
    e8814c88:	0007079b          	sext.w	a5,a4
{
    e8814c8c:	8b2a                	mv	s6,a0
    e8814c8e:	842e                	mv	s0,a1
    e8814c90:	89b2                	mv	s3,a2
    switch (rr->resrec.rrtype)
    e8814c92:	04d78f63          	beq	a5,a3,e8814cf0 <SetRData+0x8e>
    e8814c96:	0af6e963          	bltu	a3,a5,e8814d48 <SetRData+0xe6>
    e8814c9a:	46b1                	li	a3,12
    e8814c9c:	02d78563          	beq	a5,a3,e8814cc6 <SetRData+0x64>
    e8814ca0:	02f6ee63          	bltu	a3,a5,e8814cdc <SetRData+0x7a>
    e8814ca4:	4699                	li	a3,6
    e8814ca6:	22d78163          	beq	a5,a3,e8814ec8 <SetRData+0x266>
    e8814caa:	00f6eb63          	bltu	a3,a5,e8814cc0 <SetRData+0x5e>
    e8814cae:	4685                	li	a3,1
    e8814cb0:	1ad78c63          	beq	a5,a3,e8814e68 <SetRData+0x206>
    e8814cb4:	eb09                	bnez	a4,e8814cc6 <SetRData+0x64>

        bitmaplen = rdlength - (int)(p - ptr);
        p = SanityCheckBitMap(p, end, bitmaplen);
        if (!p)
            goto fail;
        rr->resrec.rdlength = rdlength;
    e8814cb6:	015a1a23          	sh	s5,20(s4)
        mDNSPlatformMemCopy(rdb->data, ptr, rdlength);
    e8814cba:	8656                	mv	a2,s5
        {
            LogInfo("SetRData: Not enough bytes for signature type %d", rr->resrec.rrtype);
            goto fail;
        }
        rr->resrec.rdlength = rdlength;
        mDNSPlatformMemCopy(rdb->data, ptr, rdlength);
    e8814cbc:	85a2                	mv	a1,s0
    e8814cbe:	a11d                	j	e88150e4 <SetRData+0x482>
    switch (rr->resrec.rrtype)
    e8814cc0:	4725                	li	a4,9
    e8814cc2:	fef76ae3          	bltu	a4,a5,e8814cb6 <SetRData+0x54>
        if (msg)
    e8814cc6:	0a0a0493          	addi	s1,s4,160
    e8814cca:	1c0b0663          	beqz	s6,e8814e96 <SetRData+0x234>
            ptr = getDomainName(msg, ptr, end, &rdb->name);
    e8814cce:	86a6                	mv	a3,s1
    e8814cd0:	864e                	mv	a2,s3
    e8814cd2:	85a2                	mv	a1,s0
            ptr = getDomainName(msg, ptr, end, &rdb->srv.target);
    e8814cd4:	855a                	mv	a0,s6
    e8814cd6:	e91ff0ef          	jal	ra,e8814b66 <getDomainName>
    e8814cda:	ace1                	j	e8814fb2 <SetRData+0x350>
    switch (rr->resrec.rrtype)
    e8814cdc:	4741                	li	a4,16
    e8814cde:	fce78ce3          	beq	a5,a4,e8814cb6 <SetRData+0x54>
    e8814ce2:	02f76d63          	bltu	a4,a5,e8814d1c <SetRData+0xba>
    e8814ce6:	4739                	li	a4,14
    e8814ce8:	02e78f63          	beq	a5,a4,e8814d26 <SetRData+0xc4>
    e8814cec:	fcf775e3          	bgeu	a4,a5,e8814cb6 <SetRData+0x54>
        if (rdlength < 3)
    e8814cf0:	4789                	li	a5,2
    e8814cf2:	1757fe63          	bgeu	a5,s5,e8814e6e <SetRData+0x20c>
        rdb->mx.preference = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8814cf6:	00044783          	lbu	a5,0(s0)
    e8814cfa:	00144703          	lbu	a4,1(s0)
        ptr += 2;
    e8814cfe:	00240913          	addi	s2,s0,2
        rdb->mx.preference = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8814d02:	0087979b          	slliw	a5,a5,0x8
    e8814d06:	8fd9                	or	a5,a5,a4
    e8814d08:	0afa1023          	sh	a5,160(s4)
        if (msg)
    e8814d0c:	0a2a0493          	addi	s1,s4,162
    e8814d10:	260b0c63          	beqz	s6,e8814f88 <SetRData+0x326>
            ptr = getDomainName(msg, ptr, end, &rdb->mx.exchange);
    e8814d14:	86a6                	mv	a3,s1
    e8814d16:	864e                	mv	a2,s3
    e8814d18:	85ca                	mv	a1,s2
    e8814d1a:	bf6d                	j	e8814cd4 <SetRData+0x72>
    switch (rr->resrec.rrtype)
    e8814d1c:	4749                	li	a4,18
    e8814d1e:	fce789e3          	beq	a5,a4,e8814cf0 <SetRData+0x8e>
    e8814d22:	f8f76ae3          	bltu	a4,a5,e8814cb6 <SetRData+0x54>
        if (msg)
    e8814d26:	0a0a0913          	addi	s2,s4,160
    e8814d2a:	2a0b0a63          	beqz	s6,e8814fde <SetRData+0x37c>
            ptr = getDomainName(msg, ptr, end, &rdb->rp.mbox);
    e8814d2e:	86ca                	mv	a3,s2
    e8814d30:	85a2                	mv	a1,s0
    e8814d32:	864e                	mv	a2,s3
    e8814d34:	855a                	mv	a0,s6
    e8814d36:	e31ff0ef          	jal	ra,e8814b66 <getDomainName>
    e8814d3a:	85aa                	mv	a1,a0
            ptr = getDomainName(msg, ptr, end, &rdb->rp.txt);
    e8814d3c:	1a0a0693          	addi	a3,s4,416
        if (!ptr)
    e8814d40:	12050763          	beqz	a0,e8814e6e <SetRData+0x20c>
            ptr = getDomainName(msg, ptr, end, &rdb->px.mapx400);
    e8814d44:	864e                	mv	a2,s3
    e8814d46:	b779                	j	e8814cd4 <SetRData+0x72>
    switch (rr->resrec.rrtype)
    e8814d48:	02900693          	li	a3,41
    e8814d4c:	50d78b63          	beq	a5,a3,e8815262 <SetRData+0x600>
    e8814d50:	08f6e863          	bltu	a3,a5,e8814de0 <SetRData+0x17e>
    e8814d54:	4775                	li	a4,29
    e8814d56:	f6e780e3          	beq	a5,a4,e8814cb6 <SetRData+0x54>
    e8814d5a:	00f76c63          	bltu	a4,a5,e8814d72 <SetRData+0x110>
    e8814d5e:	4769                	li	a4,26
    e8814d60:	2ce78f63          	beq	a5,a4,e881503e <SetRData+0x3dc>
    e8814d64:	4771                	li	a4,28
    e8814d66:	36e78b63          	beq	a5,a4,e88150dc <SetRData+0x47a>
    e8814d6a:	475d                	li	a4,23
    e8814d6c:	f4e78de3          	beq	a5,a4,e8814cc6 <SetRData+0x64>
    e8814d70:	b799                	j	e8814cb6 <SetRData+0x54>
    e8814d72:	02300713          	li	a4,35
    e8814d76:	3ae78063          	beq	a5,a4,e8815116 <SetRData+0x4b4>
    e8814d7a:	04f76c63          	bltu	a4,a5,e8814dd2 <SetRData+0x170>
    e8814d7e:	02100713          	li	a4,33
    e8814d82:	f2e79ae3          	bne	a5,a4,e8814cb6 <SetRData+0x54>
        if (rdlength < 7)
    e8814d86:	4799                	li	a5,6
    e8814d88:	0f57f363          	bgeu	a5,s5,e8814e6e <SetRData+0x20c>
        rdb->srv.priority = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8814d8c:	0005c783          	lbu	a5,0(a1)
    e8814d90:	0015c703          	lbu	a4,1(a1)
        ptr += 6;
    e8814d94:	00658493          	addi	s1,a1,6
        rdb->srv.priority = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8814d98:	0087979b          	slliw	a5,a5,0x8
    e8814d9c:	8fd9                	or	a5,a5,a4
    e8814d9e:	0afa1023          	sh	a5,160(s4)
        rdb->srv.weight   = (mDNSu16)((mDNSu16)ptr[2] <<  8 | ptr[3]);
    e8814da2:	0025c783          	lbu	a5,2(a1)
    e8814da6:	0035c703          	lbu	a4,3(a1)
    e8814daa:	0a6a0913          	addi	s2,s4,166
    e8814dae:	0087979b          	slliw	a5,a5,0x8
    e8814db2:	8fd9                	or	a5,a5,a4
    e8814db4:	0afa1123          	sh	a5,162(s4)
        rdb->srv.port.b[0] = ptr[4];
    e8814db8:	0045c783          	lbu	a5,4(a1)
    e8814dbc:	0afa0223          	sb	a5,164(s4)
        rdb->srv.port.b[1] = ptr[5];
    e8814dc0:	0055c783          	lbu	a5,5(a1)
    e8814dc4:	0afa02a3          	sb	a5,165(s4)
        if (msg)
    e8814dc8:	32050163          	beqz	a0,e88150ea <SetRData+0x488>
            ptr = getDomainName(msg, ptr, end, &rdb->srv.target);
    e8814dcc:	86ca                	mv	a3,s2
    e8814dce:	85a6                	mv	a1,s1
    e8814dd0:	b711                	j	e8814cd4 <SetRData+0x72>
    switch (rr->resrec.rrtype)
    e8814dd2:	02400713          	li	a4,36
    e8814dd6:	f0e78de3          	beq	a5,a4,e8814cf0 <SetRData+0x8e>
    e8814dda:	02700713          	li	a4,39
    e8814dde:	b779                	j	e8814d6c <SetRData+0x10a>
    e8814de0:	03000693          	li	a3,48
    e8814de4:	20d78ce3          	beq	a5,a3,e88157fc <SetRData+0xb9a>
    e8814de8:	02f6ed63          	bltu	a3,a5,e8814e22 <SetRData+0x1c0>
    e8814dec:	02e00713          	li	a4,46
    e8814df0:	12e78be3          	beq	a5,a4,e8815726 <SetRData+0xac4>
    e8814df4:	68f76463          	bltu	a4,a5,e881547c <SetRData+0x81a>
    e8814df8:	02b00713          	li	a4,43
    e8814dfc:	eae79de3          	bne	a5,a4,e8814cb6 <SetRData+0x54>
        mDNSPlatformMemCopy(rdb->data, ptr, rdlength);
        break;
    }
    case kDNSType_DS:
    {
        if (rdlength < DS_FIXED_SIZE + 1)
    e8814e00:	000a861b          	sext.w	a2,s5
    e8814e04:	4791                	li	a5,4
    e8814e06:	eac7e8e3          	bltu	a5,a2,e8814cb6 <SetRData+0x54>
        {
            LogInfo("SetRData: DS too small length %d", rdlength);
    e8814e0a:	000c0797          	auipc	a5,0xc0
    e8814e0e:	c6a78793          	addi	a5,a5,-918 # e88d4a74 <mDNS_LoggingEnabled>
    e8814e12:	439c                	lw	a5,0(a5)
    e8814e14:	cfa9                	beqz	a5,e8814e6e <SetRData+0x20c>
    e8814e16:	0008e597          	auipc	a1,0x8e
    e8814e1a:	ee258593          	addi	a1,a1,-286 # e88a2cf8 <SSHPort+0x570>
    e8814e1e:	77a0006f          	j	e8815598 <SetRData+0x936>
    switch (rr->resrec.rrtype)
    e8814e22:	03200693          	li	a3,50
    e8814e26:	74d78963          	beq	a5,a3,e8815578 <SetRData+0x916>
    e8814e2a:	e8d7e6e3          	bltu	a5,a3,e8814cb6 <SetRData+0x54>
    e8814e2e:	f077071b          	addiw	a4,a4,-249
    e8814e32:	3c07370b          	extu	a4,a4,15,0
    e8814e36:	4785                	li	a5,1
    e8814e38:	e6e7efe3          	bltu	a5,a4,e8814cb6 <SetRData+0x54>
        if (msg)
    e8814e3c:	040504e3          	beqz	a0,e8815684 <SetRData+0xa22>
            ptr = getDomainName(msg, ptr, end, &name);
    e8814e40:	868a                	mv	a3,sp
    e8814e42:	d25ff0ef          	jal	ra,e8814b66 <getDomainName>
    e8814e46:	842a                	mv	s0,a0
        if (!ptr)
    e8814e48:	060417e3          	bnez	s0,e88156b6 <SetRData+0xa54>
            LogInfo("SetRData: Malformed name for TSIG/TKEY type %d", rr->resrec.rrtype);
    e8814e4c:	000c0797          	auipc	a5,0xc0
    e8814e50:	c2878793          	addi	a5,a5,-984 # e88d4a74 <mDNS_LoggingEnabled>
    e8814e54:	439c                	lw	a5,0(a5)
    e8814e56:	cf81                	beqz	a5,e8814e6e <SetRData+0x20c>
    e8814e58:	00aa5603          	lhu	a2,10(s4)
    e8814e5c:	0008e597          	auipc	a1,0x8e
    e8814e60:	d1c58593          	addi	a1,a1,-740 # e88a2b78 <SSHPort+0x3f0>
    e8814e64:	7340006f          	j	e8815598 <SetRData+0x936>
        if (rdlength != sizeof(mDNSv4Addr))
    e8814e68:	4791                	li	a5,4
    e8814e6a:	00fa8463          	beq	s5,a5,e8814e72 <SetRData+0x210>
        mDNSPlatformMemCopy(rdb->data, ptr, rdlength);
        break;
    }
    return mDNStrue;
fail:
    return mDNSfalse;
    e8814e6e:	4501                	li	a0,0
    e8814e70:	a2a9                	j	e8814fba <SetRData+0x358>
        rdb->ipv4.b[0] = ptr[0];
    e8814e72:	0005c783          	lbu	a5,0(a1)
    e8814e76:	0afa0023          	sb	a5,160(s4)
        rdb->ipv4.b[1] = ptr[1];
    e8814e7a:	0015c783          	lbu	a5,1(a1)
    e8814e7e:	0afa00a3          	sb	a5,161(s4)
        rdb->ipv4.b[2] = ptr[2];
    e8814e82:	0025c783          	lbu	a5,2(a1)
    e8814e86:	0afa0123          	sb	a5,162(s4)
        rdb->ipv4.b[3] = ptr[3];
    e8814e8a:	0035c783          	lbu	a5,3(a1)
    e8814e8e:	0afa01a3          	sb	a5,163(s4)
    return mDNStrue;
    e8814e92:	4505                	li	a0,1
    e8814e94:	a21d                	j	e8814fba <SetRData+0x358>
            AssignDomainName(&rdb->name, (domainname *)ptr);
    e8814e96:	10040593          	addi	a1,s0,256
    e8814e9a:	8522                	mv	a0,s0
    e8814e9c:	ab0fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814ea0:	0005061b          	sext.w	a2,a0
    e8814ea4:	10000793          	li	a5,256
    e8814ea8:	00c7ed63          	bltu	a5,a2,e8814ec2 <SetRData+0x260>
    e8814eac:	85a2                	mv	a1,s0
    e8814eae:	8526                	mv	a0,s1
    e8814eb0:	3f11a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->name);
    e8814eb4:	1a0a0593          	addi	a1,s4,416
            ptr += DomainNameLength(&rdb->rp.txt);
    e8814eb8:	8526                	mv	a0,s1
    e8814eba:	a92fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814ebe:	9522                	add	a0,a0,s0
        if (ptr != end)
    e8814ec0:	a8cd                	j	e8814fb2 <SetRData+0x350>
            AssignDomainName(&rdb->name, (domainname *)ptr);
    e8814ec2:	0a0a0023          	sb	zero,160(s4)
    e8814ec6:	b7fd                	j	e8814eb4 <SetRData+0x252>
        if (msg)
    e8814ec8:	0a0a0913          	addi	s2,s4,160
    e8814ecc:	c939                	beqz	a0,e8814f22 <SetRData+0x2c0>
            ptr = getDomainName(msg, ptr, end, &rdb->soa.mname);
    e8814ece:	86ca                	mv	a3,s2
    e8814ed0:	c97ff0ef          	jal	ra,e8814b66 <getDomainName>
    e8814ed4:	85aa                	mv	a1,a0
        if (!ptr)
    e8814ed6:	dd41                	beqz	a0,e8814e6e <SetRData+0x20c>
            ptr = getDomainName(msg, ptr, end, &rdb->soa.rname);
    e8814ed8:	1a0a0693          	addi	a3,s4,416
    e8814edc:	864e                	mv	a2,s3
    e8814ede:	855a                	mv	a0,s6
    e8814ee0:	c87ff0ef          	jal	ra,e8814b66 <getDomainName>
        if (!ptr)
    e8814ee4:	d549                	beqz	a0,e8814e6e <SetRData+0x20c>
        if (ptr + 0x14 != end)
    e8814ee6:	01450793          	addi	a5,a0,20
    e8814eea:	f8f992e3          	bne	s3,a5,e8814e6e <SetRData+0x20c>
        rdb->soa.serial  = (mDNSs32) ((mDNSs32)ptr[0x00] << 24 | (mDNSs32)ptr[0x01] << 16 | (mDNSs32)ptr[0x02] << 8 | ptr[0x03]);
    e8814eee:	411c                	lw	a5,0(a0)
    e8814ef0:	9007978b          	revw	a5,a5
    e8814ef4:	2afa2023          	sw	a5,672(s4)
        rdb->soa.refresh = (mDNSu32) ((mDNSu32)ptr[0x04] << 24 | (mDNSu32)ptr[0x05] << 16 | (mDNSu32)ptr[0x06] << 8 | ptr[0x07]);
    e8814ef8:	415c                	lw	a5,4(a0)
    e8814efa:	9007978b          	revw	a5,a5
    e8814efe:	2afa2223          	sw	a5,676(s4)
        rdb->soa.retry   = (mDNSu32) ((mDNSu32)ptr[0x08] << 24 | (mDNSu32)ptr[0x09] << 16 | (mDNSu32)ptr[0x0A] << 8 | ptr[0x0B]);
    e8814f02:	451c                	lw	a5,8(a0)
    e8814f04:	9007978b          	revw	a5,a5
    e8814f08:	2afa2423          	sw	a5,680(s4)
        rdb->soa.expire  = (mDNSu32) ((mDNSu32)ptr[0x0C] << 24 | (mDNSu32)ptr[0x0D] << 16 | (mDNSu32)ptr[0x0E] << 8 | ptr[0x0F]);
    e8814f0c:	455c                	lw	a5,12(a0)
    e8814f0e:	9007978b          	revw	a5,a5
    e8814f12:	2afa2623          	sw	a5,684(s4)
        rdb->soa.min     = (mDNSu32) ((mDNSu32)ptr[0x10] << 24 | (mDNSu32)ptr[0x11] << 16 | (mDNSu32)ptr[0x12] << 8 | ptr[0x13]);
    e8814f16:	491c                	lw	a5,16(a0)
    e8814f18:	9007978b          	revw	a5,a5
    e8814f1c:	2afa2823          	sw	a5,688(s4)
        break;
    e8814f20:	bf8d                	j	e8814e92 <SetRData+0x230>
            AssignDomainName(&rdb->soa.mname, (domainname *)ptr);
    e8814f22:	10058593          	addi	a1,a1,256
    e8814f26:	8522                	mv	a0,s0
    e8814f28:	a24fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814f2c:	0005061b          	sext.w	a2,a0
    e8814f30:	10000793          	li	a5,256
    e8814f34:	04c7e463          	bltu	a5,a2,e8814f7c <SetRData+0x31a>
    e8814f38:	85a2                	mv	a1,s0
    e8814f3a:	854a                	mv	a0,s2
    e8814f3c:	3651a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->soa.mname);
    e8814f40:	1a0a0493          	addi	s1,s4,416
    e8814f44:	85a6                	mv	a1,s1
    e8814f46:	854a                	mv	a0,s2
    e8814f48:	a04fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814f4c:	942a                	add	s0,s0,a0
        if (!ptr)
    e8814f4e:	d005                	beqz	s0,e8814e6e <SetRData+0x20c>
            AssignDomainName(&rdb->soa.rname, (domainname *)ptr);
    e8814f50:	10040593          	addi	a1,s0,256
    e8814f54:	8522                	mv	a0,s0
    e8814f56:	9f6fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814f5a:	0005061b          	sext.w	a2,a0
    e8814f5e:	10000793          	li	a5,256
    e8814f62:	02c7e063          	bltu	a5,a2,e8814f82 <SetRData+0x320>
    e8814f66:	85a2                	mv	a1,s0
    e8814f68:	8526                	mv	a0,s1
    e8814f6a:	3371a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->soa.rname);
    e8814f6e:	2a0a0593          	addi	a1,s4,672
    e8814f72:	8526                	mv	a0,s1
    e8814f74:	9d8fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814f78:	9522                	add	a0,a0,s0
    e8814f7a:	b7ad                	j	e8814ee4 <SetRData+0x282>
            AssignDomainName(&rdb->soa.mname, (domainname *)ptr);
    e8814f7c:	0a0a0023          	sb	zero,160(s4)
    e8814f80:	b7c1                	j	e8814f40 <SetRData+0x2de>
            AssignDomainName(&rdb->soa.rname, (domainname *)ptr);
    e8814f82:	1a0a0023          	sb	zero,416(s4)
    e8814f86:	b7e5                	j	e8814f6e <SetRData+0x30c>
            AssignDomainName(&rdb->mx.exchange, (domainname *)ptr);
    e8814f88:	10240593          	addi	a1,s0,258
    e8814f8c:	854a                	mv	a0,s2
    e8814f8e:	9befe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814f92:	0005061b          	sext.w	a2,a0
    e8814f96:	10000793          	li	a5,256
    e8814f9a:	02c7ef63          	bltu	a5,a2,e8814fd8 <SetRData+0x376>
    e8814f9e:	85ca                	mv	a1,s2
    e8814fa0:	8526                	mv	a0,s1
    e8814fa2:	2ff1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->mx.exchange);
    e8814fa6:	1a2a0593          	addi	a1,s4,418
    e8814faa:	8526                	mv	a0,s1
    e8814fac:	9a0fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814fb0:	954a                	add	a0,a0,s2
        if (ptr != end)
    e8814fb2:	41350533          	sub	a0,a0,s3
    return mDNStrue;
    e8814fb6:	00153513          	seqz	a0,a0
}
    e8814fba:	70b6                	ld	ra,360(sp)
    e8814fbc:	7416                	ld	s0,352(sp)
    e8814fbe:	64f6                	ld	s1,344(sp)
    e8814fc0:	6956                	ld	s2,336(sp)
    e8814fc2:	69b6                	ld	s3,328(sp)
    e8814fc4:	6a16                	ld	s4,320(sp)
    e8814fc6:	7af2                	ld	s5,312(sp)
    e8814fc8:	7b52                	ld	s6,304(sp)
    e8814fca:	7bb2                	ld	s7,296(sp)
    e8814fcc:	7c12                	ld	s8,288(sp)
    e8814fce:	6cf2                	ld	s9,280(sp)
    e8814fd0:	6d52                	ld	s10,272(sp)
    e8814fd2:	6db2                	ld	s11,264(sp)
    e8814fd4:	6175                	addi	sp,sp,368
    e8814fd6:	8082                	ret
            AssignDomainName(&rdb->mx.exchange, (domainname *)ptr);
    e8814fd8:	0a0a0123          	sb	zero,162(s4)
    e8814fdc:	b7e9                	j	e8814fa6 <SetRData+0x344>
            AssignDomainName(&rdb->rp.mbox, (domainname *)ptr);
    e8814fde:	10040593          	addi	a1,s0,256
    e8814fe2:	8522                	mv	a0,s0
    e8814fe4:	968fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8814fe8:	0005061b          	sext.w	a2,a0
    e8814fec:	10000793          	li	a5,256
    e8814ff0:	04c7e163          	bltu	a5,a2,e8815032 <SetRData+0x3d0>
    e8814ff4:	85a2                	mv	a1,s0
    e8814ff6:	854a                	mv	a0,s2
    e8814ff8:	2a91a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->rp.mbox);
    e8814ffc:	1a0a0493          	addi	s1,s4,416
    e8815000:	85a6                	mv	a1,s1
    e8815002:	854a                	mv	a0,s2
    e8815004:	948fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8815008:	942a                	add	s0,s0,a0
        if (!ptr)
    e881500a:	e60402e3          	beqz	s0,e8814e6e <SetRData+0x20c>
            AssignDomainName(&rdb->rp.txt, (domainname *)ptr);
    e881500e:	10040593          	addi	a1,s0,256
    e8815012:	8522                	mv	a0,s0
    e8815014:	938fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8815018:	0005061b          	sext.w	a2,a0
    e881501c:	10000793          	li	a5,256
    e8815020:	00c7ec63          	bltu	a5,a2,e8815038 <SetRData+0x3d6>
    e8815024:	85a2                	mv	a1,s0
    e8815026:	8526                	mv	a0,s1
    e8815028:	2791a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->rp.txt);
    e881502c:	2a0a0593          	addi	a1,s4,672
    e8815030:	b561                	j	e8814eb8 <SetRData+0x256>
            AssignDomainName(&rdb->rp.mbox, (domainname *)ptr);
    e8815032:	0a0a0023          	sb	zero,160(s4)
    e8815036:	b7d9                	j	e8814ffc <SetRData+0x39a>
            AssignDomainName(&rdb->rp.txt, (domainname *)ptr);
    e8815038:	1a0a0023          	sb	zero,416(s4)
    e881503c:	bfc5                	j	e881502c <SetRData+0x3ca>
        if (rdlength < 4)
    e881503e:	478d                	li	a5,3
    e8815040:	e357f7e3          	bgeu	a5,s5,e8814e6e <SetRData+0x20c>
        rdb->px.preference = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8815044:	0005c783          	lbu	a5,0(a1)
    e8815048:	0015c703          	lbu	a4,1(a1)
        ptr += 2;
    e881504c:	00258493          	addi	s1,a1,2
        rdb->px.preference = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8815050:	0087979b          	slliw	a5,a5,0x8
    e8815054:	8fd9                	or	a5,a5,a4
    e8815056:	0afa1023          	sh	a5,160(s4)
        if (msg)
    e881505a:	0a2a0913          	addi	s2,s4,162
    e881505e:	c919                	beqz	a0,e8815074 <SetRData+0x412>
            ptr = getDomainName(msg, ptr, end, &rdb->px.map822);
    e8815060:	86ca                	mv	a3,s2
    e8815062:	85a6                	mv	a1,s1
    e8815064:	b03ff0ef          	jal	ra,e8814b66 <getDomainName>
    e8815068:	85aa                	mv	a1,a0
            ptr = getDomainName(msg, ptr, end, &rdb->px.mapx400);
    e881506a:	1a2a0693          	addi	a3,s4,418
        if (!ptr)
    e881506e:	cc051be3          	bnez	a0,e8814d44 <SetRData+0xe2>
    e8815072:	bbf5                	j	e8814e6e <SetRData+0x20c>
            AssignDomainName(&rdb->px.map822, (domainname *)ptr);
    e8815074:	10258593          	addi	a1,a1,258
    e8815078:	8526                	mv	a0,s1
    e881507a:	8d2fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881507e:	0005061b          	sext.w	a2,a0
    e8815082:	10000793          	li	a5,256
    e8815086:	04c7e563          	bltu	a5,a2,e88150d0 <SetRData+0x46e>
    e881508a:	85a6                	mv	a1,s1
    e881508c:	854a                	mv	a0,s2
    e881508e:	2131a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->px.map822);
    e8815092:	1a2a0413          	addi	s0,s4,418
    e8815096:	85a2                	mv	a1,s0
    e8815098:	854a                	mv	a0,s2
    e881509a:	8b2fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881509e:	94aa                	add	s1,s1,a0
        if (!ptr)
    e88150a0:	dc0487e3          	beqz	s1,e8814e6e <SetRData+0x20c>
            AssignDomainName(&rdb->px.mapx400, (domainname *)ptr);
    e88150a4:	10048593          	addi	a1,s1,256
    e88150a8:	8526                	mv	a0,s1
    e88150aa:	8a2fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88150ae:	0005061b          	sext.w	a2,a0
    e88150b2:	10000793          	li	a5,256
    e88150b6:	02c7e063          	bltu	a5,a2,e88150d6 <SetRData+0x474>
    e88150ba:	85a6                	mv	a1,s1
    e88150bc:	8522                	mv	a0,s0
    e88150be:	1e31a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->px.mapx400);
    e88150c2:	2a2a0593          	addi	a1,s4,674
    e88150c6:	8522                	mv	a0,s0
            ptr += DomainNameLength(&rdb->srv.target);
    e88150c8:	884fe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88150cc:	9526                	add	a0,a0,s1
    e88150ce:	b5d5                	j	e8814fb2 <SetRData+0x350>
            AssignDomainName(&rdb->px.map822, (domainname *)ptr);
    e88150d0:	0a0a0123          	sb	zero,162(s4)
    e88150d4:	bf7d                	j	e8815092 <SetRData+0x430>
            AssignDomainName(&rdb->px.mapx400, (domainname *)ptr);
    e88150d6:	1a0a0123          	sb	zero,418(s4)
    e88150da:	b7e5                	j	e88150c2 <SetRData+0x460>
        if (rdlength != sizeof(mDNSv6Addr))
    e88150dc:	47c1                	li	a5,16
        mDNSPlatformMemCopy(&rdb->ipv6, ptr, sizeof(rdb->ipv6));
    e88150de:	4641                	li	a2,16
        if (rdlength != sizeof(mDNSv6Addr))
    e88150e0:	d8fa97e3          	bne	s5,a5,e8814e6e <SetRData+0x20c>
        mDNSPlatformMemCopy(rdb->data, ptr, rdlength);
    e88150e4:	0a0a0513          	addi	a0,s4,160
    e88150e8:	a2bd                	j	e8815256 <SetRData+0x5f4>
            AssignDomainName(&rdb->srv.target, (domainname *)ptr);
    e88150ea:	10658593          	addi	a1,a1,262
    e88150ee:	8526                	mv	a0,s1
    e88150f0:	85cfe0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88150f4:	0005061b          	sext.w	a2,a0
    e88150f8:	10000793          	li	a5,256
    e88150fc:	00c7ea63          	bltu	a5,a2,e8815110 <SetRData+0x4ae>
    e8815100:	85a6                	mv	a1,s1
    e8815102:	854a                	mv	a0,s2
    e8815104:	19d1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&rdb->srv.target);
    e8815108:	1a6a0593          	addi	a1,s4,422
    e881510c:	854a                	mv	a0,s2
    e881510e:	bf6d                	j	e88150c8 <SetRData+0x466>
            AssignDomainName(&rdb->srv.target, (domainname *)ptr);
    e8815110:	0a0a0323          	sb	zero,166(s4)
    e8815114:	bfd5                	j	e8815108 <SetRData+0x4a6>
        if (rdlength < 8)
    e8815116:	2a81                	sext.w	s5,s5
    e8815118:	479d                	li	a5,7
    e881511a:	d557fae3          	bgeu	a5,s5,e8814e6e <SetRData+0x20c>
        len = *ptr + 1;
    e881511e:	0045c783          	lbu	a5,4(a1)
    e8815122:	0795                	addi	a5,a5,5
        ptr += len;
    e8815124:	00f58733          	add	a4,a1,a5
        if (ptr >= end)
    e8815128:	02c76163          	bltu	a4,a2,e881514a <SetRData+0x4e8>
            LogInfo("SetRData: Malformed NAPTR flags");
    e881512c:	000c0797          	auipc	a5,0xc0
    e8815130:	94878793          	addi	a5,a5,-1720 # e88d4a74 <mDNS_LoggingEnabled>
    e8815134:	439c                	lw	a5,0(a5)
    e8815136:	0008d597          	auipc	a1,0x8d
    e881513a:	71258593          	addi	a1,a1,1810 # e88a2848 <SSHPort+0xc0>
    e881513e:	d20788e3          	beqz	a5,e8814e6e <SetRData+0x20c>
            if (ptr + opt->optlen > end) { LogInfo("SetRData: ptr + opt->optlen > end"); goto fail; }
    e8815142:	450d                	li	a0,3
    e8815144:	3681a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8815148:	b31d                	j	e8814e6e <SetRData+0x20c>
        len = *ptr + 1;
    e881514a:	80f5c78b          	lrbu	a5,a1,a5,0
        ptr += len;
    e881514e:	0785                	addi	a5,a5,1
    e8815150:	00f704b3          	add	s1,a4,a5
        if (ptr >= end)
    e8815154:	00c4ee63          	bltu	s1,a2,e8815170 <SetRData+0x50e>
            LogInfo("SetRData: Malformed NAPTR service");
    e8815158:	000c0797          	auipc	a5,0xc0
    e881515c:	91c78793          	addi	a5,a5,-1764 # e88d4a74 <mDNS_LoggingEnabled>
    e8815160:	439c                	lw	a5,0(a5)
    e8815162:	0008d597          	auipc	a1,0x8d
    e8815166:	70658593          	addi	a1,a1,1798 # e88a2868 <SSHPort+0xe0>
    e881516a:	d00782e3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e881516e:	bfd1                	j	e8815142 <SetRData+0x4e0>
        len = *ptr + 1;
    e8815170:	80f7478b          	lrbu	a5,a4,a5,0
        ptr += len;
    e8815174:	0785                	addi	a5,a5,1
    e8815176:	94be                	add	s1,s1,a5
        if (ptr >= end)
    e8815178:	00c4ee63          	bltu	s1,a2,e8815194 <SetRData+0x532>
            LogInfo("SetRData: Malformed NAPTR regexp");
    e881517c:	000c0797          	auipc	a5,0xc0
    e8815180:	8f878793          	addi	a5,a5,-1800 # e88d4a74 <mDNS_LoggingEnabled>
    e8815184:	439c                	lw	a5,0(a5)
    e8815186:	0008d597          	auipc	a1,0x8d
    e881518a:	70a58593          	addi	a1,a1,1802 # e88a2890 <SSHPort+0x108>
    e881518e:	ce0780e3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e8815192:	bf45                	j	e8815142 <SetRData+0x4e0>
        if (msg)
    e8815194:	c11d                	beqz	a0,e88151ba <SetRData+0x558>
            ptr = getDomainName(msg, ptr, end, &name);
    e8815196:	868a                	mv	a3,sp
    e8815198:	85a6                	mv	a1,s1
    e881519a:	9cdff0ef          	jal	ra,e8814b66 <getDomainName>
        if (ptr != end)
    e881519e:	05350663          	beq	a0,s3,e88151ea <SetRData+0x588>
            LogInfo("SetRData: Malformed NAPTR RDATA name");
    e88151a2:	000c0797          	auipc	a5,0xc0
    e88151a6:	8d278793          	addi	a5,a5,-1838 # e88d4a74 <mDNS_LoggingEnabled>
    e88151aa:	439c                	lw	a5,0(a5)
    e88151ac:	0008d597          	auipc	a1,0x8d
    e88151b0:	70c58593          	addi	a1,a1,1804 # e88a28b8 <SSHPort+0x130>
    e88151b4:	ca078de3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e88151b8:	b769                	j	e8815142 <SetRData+0x4e0>
            AssignDomainName(&name, (domainname *)ptr);
    e88151ba:	10048593          	addi	a1,s1,256
    e88151be:	8526                	mv	a0,s1
    e88151c0:	f8dfd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88151c4:	0005061b          	sext.w	a2,a0
    e88151c8:	10000793          	li	a5,256
    e88151cc:	00c7ec63          	bltu	a5,a2,e88151e4 <SetRData+0x582>
    e88151d0:	85a6                	mv	a1,s1
    e88151d2:	850a                	mv	a0,sp
    e88151d4:	0cd1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&name);
    e88151d8:	020c                	addi	a1,sp,256
    e88151da:	850a                	mv	a0,sp
    e88151dc:	f71fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88151e0:	9526                	add	a0,a0,s1
    e88151e2:	bf75                	j	e881519e <SetRData+0x53c>
            AssignDomainName(&name, (domainname *)ptr);
    e88151e4:	00010023          	sb	zero,0(sp)
    e88151e8:	bfc5                	j	e88151d8 <SetRData+0x576>
        rr->resrec.rdlength = savelen + DomainNameLength(&name);
    e88151ea:	020c                	addi	a1,sp,256
    e88151ec:	850a                	mv	a0,sp
    e88151ee:	f5ffd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
        savelen = ptr - orig;
    e88151f2:	8c81                	sub	s1,s1,s0
        rr->resrec.rdlength = savelen + DomainNameLength(&name);
    e88151f4:	009506bb          	addw	a3,a0,s1
    e88151f8:	3c06b68b          	extu	a3,a3,15,0
    e88151fc:	00da1a23          	sh	a3,20(s4)
        if (rr->resrec.rdlength > MaximumRDSize)
    e8815200:	6789                	lui	a5,0x2
    e8815202:	2681                	sext.w	a3,a3
    e8815204:	02d7f363          	bgeu	a5,a3,e881522a <SetRData+0x5c8>
            LogInfo("SetRData: Malformed NAPTR rdlength %d, rr->resrec.rdlength %d, "
    e8815208:	000c0797          	auipc	a5,0xc0
    e881520c:	86c78793          	addi	a5,a5,-1940 # e88d4a74 <mDNS_LoggingEnabled>
    e8815210:	439c                	lw	a5,0(a5)
    e8815212:	c4078ee3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e8815216:	870a                	mv	a4,sp
    e8815218:	8656                	mv	a2,s5
    e881521a:	0008d597          	auipc	a1,0x8d
    e881521e:	6c658593          	addi	a1,a1,1734 # e88a28e0 <SSHPort+0x158>
            LogInfo("SetRData: Malformed TSIG/TKEY rdlength %d, rr->resrec.rdlength %d, "
    e8815222:	450d                	li	a0,3
    e8815224:	2881a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8815228:	b199                	j	e8814e6e <SetRData+0x20c>
        mDNSPlatformMemCopy(rdb->data, orig, savelen);
    e881522a:	0a0a0a13          	addi	s4,s4,160
    e881522e:	2481                	sext.w	s1,s1
    e8815230:	8626                	mv	a2,s1
    e8815232:	85a2                	mv	a1,s0
    e8815234:	8552                	mv	a0,s4
    e8815236:	06b1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        AssignDomainName((domainname *)(rdb->data + savelen), &name);
    e881523a:	020c                	addi	a1,sp,256
    e881523c:	850a                	mv	a0,sp
    e881523e:	f0ffd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8815242:	0005061b          	sext.w	a2,a0
    e8815246:	10000713          	li	a4,256
    e881524a:	009a07b3          	add	a5,s4,s1
    e881524e:	00c76763          	bltu	a4,a2,e881525c <SetRData+0x5fa>
    e8815252:	858a                	mv	a1,sp
    e8815254:	853e                	mv	a0,a5
        mDNSPlatformMemCopy(rdb->data, ptr, rdlength);
    e8815256:	04b1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    e881525a:	b925                	j	e8814e92 <SetRData+0x230>
        AssignDomainName((domainname *)(rdb->data + savelen), &name);
    e881525c:	009a500b          	srb	zero,s4,s1,0
    e8815260:	b90d                	j	e8814e92 <SetRData+0x230>
        mDNSu8 *dataend     = rr->resrec.rdata->u.data;
    e8815262:	030a3903          	ld	s2,48(s4)
        while (ptr < end && (mDNSu8 *)(opt+1) < &dataend[MaximumRDSize])
    e8815266:	6789                	lui	a5,0x2
    e8815268:	0791                	addi	a5,a5,4
                if (ValidOwnerLength(opt->optlen))
    e881526a:	00144ab7          	lui	s5,0x144
    e881526e:	6b41                	lui	s6,0x10
        rdataOPT *opt = rr->resrec.rdata->u.opt;
    e8815270:	00490493          	addi	s1,s2,4
        rr->resrec.rdlength = 0;
    e8815274:	000a1a23          	sh	zero,20(s4)
        while (ptr < end && (mDNSu8 *)(opt+1) < &dataend[MaximumRDSize])
    e8815278:	993e                	add	s2,s2,a5
                    if (opt->u.updatelease > 0x70000000UL / mDNSPlatformOneSecond)
    e881527a:	000c0c17          	auipc	s8,0xc0
    e881527e:	806c0c13          	addi	s8,s8,-2042 # e88d4a80 <mDNSPlatformOneSecond>
                if (ValidOwnerLength(opt->optlen))
    e8815282:	100a8a93          	addi	s5,s5,256 # 144100 <memcmp-0xe86bbf00>
    e8815286:	de9b0b13          	addi	s6,s6,-535 # fde9 <memcmp-0xe87f0217>
        while (ptr < end && (mDNSu8 *)(opt+1) < &dataend[MaximumRDSize])
    e881528a:	01347663          	bgeu	s0,s3,e8815296 <SetRData+0x634>
    e881528e:	01848c93          	addi	s9,s1,24
    e8815292:	032ce763          	bltu	s9,s2,e88152c0 <SetRData+0x65e>
        rr->resrec.rdlength = (mDNSu16)((mDNSu8*)opt - rr->resrec.rdata->u.data);
    e8815296:	030a3783          	ld	a5,48(s4)
    return mDNStrue;
    e881529a:	4505                	li	a0,1
        rr->resrec.rdlength = (mDNSu16)((mDNSu8*)opt - rr->resrec.rdata->u.data);
    e881529c:	0791                	addi	a5,a5,4
    e881529e:	8c9d                	sub	s1,s1,a5
    e88152a0:	009a1a23          	sh	s1,20(s4)
        if (ptr != end) { LogInfo("SetRData: Malformed OptRdata"); goto fail; }
    e88152a4:	d1340be3          	beq	s0,s3,e8814fba <SetRData+0x358>
    e88152a8:	000bf797          	auipc	a5,0xbf
    e88152ac:	7cc78793          	addi	a5,a5,1996 # e88d4a74 <mDNS_LoggingEnabled>
    e88152b0:	439c                	lw	a5,0(a5)
    e88152b2:	0008d597          	auipc	a1,0x8d
    e88152b6:	6d658593          	addi	a1,a1,1750 # e88a2988 <SSHPort+0x200>
    e88152ba:	ba078ae3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e88152be:	b551                	j	e8815142 <SetRData+0x4e0>
            if (ptr + 4 > end) { LogInfo("SetRData: OPT RDATA ptr + 4 > end"); goto fail; }
    e88152c0:	00440b93          	addi	s7,s0,4
    e88152c4:	0179fe63          	bgeu	s3,s7,e88152e0 <SetRData+0x67e>
    e88152c8:	000bf797          	auipc	a5,0xbf
    e88152cc:	7ac78793          	addi	a5,a5,1964 # e88d4a74 <mDNS_LoggingEnabled>
    e88152d0:	439c                	lw	a5,0(a5)
    e88152d2:	0008d597          	auipc	a1,0x8d
    e88152d6:	66658593          	addi	a1,a1,1638 # e88a2938 <SSHPort+0x1b0>
    e88152da:	b8078ae3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e88152de:	b595                	j	e8815142 <SetRData+0x4e0>
            opt->opt    = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e88152e0:	00044703          	lbu	a4,0(s0)
    e88152e4:	00144783          	lbu	a5,1(s0)
    e88152e8:	0087171b          	slliw	a4,a4,0x8
    e88152ec:	8f5d                	or	a4,a4,a5
    e88152ee:	00e49023          	sh	a4,0(s1)
            opt->optlen = (mDNSu16)((mDNSu16)ptr[2] <<  8 | ptr[3]);
    e88152f2:	00244783          	lbu	a5,2(s0)
    e88152f6:	00344683          	lbu	a3,3(s0)
    e88152fa:	0087979b          	slliw	a5,a5,0x8
    e88152fe:	8fd5                	or	a5,a5,a3
    e8815300:	00f49123          	sh	a5,2(s1)
            if (ptr + opt->optlen > end) { LogInfo("SetRData: ptr + opt->optlen > end"); goto fail; }
    e8815304:	00fb86b3          	add	a3,s7,a5
    e8815308:	00d9fe63          	bgeu	s3,a3,e8815324 <SetRData+0x6c2>
    e881530c:	000bf797          	auipc	a5,0xbf
    e8815310:	76878793          	addi	a5,a5,1896 # e88d4a74 <mDNS_LoggingEnabled>
    e8815314:	439c                	lw	a5,0(a5)
    e8815316:	b4078ce3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e881531a:	0008d597          	auipc	a1,0x8d
    e881531e:	64658593          	addi	a1,a1,1606 # e88a2960 <SSHPort+0x1d8>
    e8815322:	b505                	j	e8815142 <SetRData+0x4e0>
            switch (opt->opt)
    e8815324:	2701                	sext.w	a4,a4
    e8815326:	4689                	li	a3,2
    e8815328:	0ad70663          	beq	a4,a3,e88153d4 <SetRData+0x772>
    e881532c:	00e6e763          	bltu	a3,a4,e881533a <SetRData+0x6d8>
    e8815330:	4685                	li	a3,1
    e8815332:	02d70663          	beq	a4,a3,e881535e <SetRData+0x6fc>
    e8815336:	8ca6                	mv	s9,s1
    e8815338:	a849                	j	e88153ca <SetRData+0x768>
    e881533a:	4691                	li	a3,4
    e881533c:	0cd70063          	beq	a4,a3,e88153fc <SetRData+0x79a>
    e8815340:	ff671be3          	bne	a4,s6,e8815336 <SetRData+0x6d4>
                if (opt->optlen == DNSOpt_TraceData_Space - 4)
    e8815344:	4715                	li	a4,5
    e8815346:	12e79663          	bne	a5,a4,e8815472 <SetRData+0x810>
                    opt->u.tracer.platf   = ptr[0];
    e881534a:	00444783          	lbu	a5,4(s0)
    e881534e:	00f48223          	sb	a5,4(s1)
                    opt->u.tracer.mDNSv   = (mDNSu32) ((mDNSu32)ptr[1] << 24 | (mDNSu32)ptr[2] << 16 | (mDNSu32)ptr[3] << 8 | ptr[4]);
    e8815352:	00542783          	lw	a5,5(s0)
    e8815356:	9007978b          	revw	a5,a5
                    opt->u.tracer.mDNSv   = 0xFFFFFFFF;
    e881535a:	c49c                	sw	a5,8(s1)
                    opt++;
    e881535c:	a0bd                	j	e88153ca <SetRData+0x768>
                if (opt->optlen == DNSOpt_LLQData_Space - 4)
    e881535e:	4749                	li	a4,18
    e8815360:	fce79be3          	bne	a5,a4,e8815336 <SetRData+0x6d4>
                    opt->u.llq.vers  = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8815364:	00444783          	lbu	a5,4(s0)
    e8815368:	00544703          	lbu	a4,5(s0)
                    mDNSPlatformMemCopy(opt->u.llq.id.b, ptr+6, 8);
    e881536c:	4621                	li	a2,8
                    opt->u.llq.vers  = (mDNSu16)((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e881536e:	0087979b          	slliw	a5,a5,0x8
    e8815372:	8fd9                	or	a5,a5,a4
    e8815374:	00f49223          	sh	a5,4(s1)
                    opt->u.llq.llqOp = (mDNSu16)((mDNSu16)ptr[2] <<  8 | ptr[3]);
    e8815378:	00644783          	lbu	a5,6(s0)
    e881537c:	00744703          	lbu	a4,7(s0)
                    mDNSPlatformMemCopy(opt->u.llq.id.b, ptr+6, 8);
    e8815380:	00a40593          	addi	a1,s0,10
                    opt->u.llq.llqOp = (mDNSu16)((mDNSu16)ptr[2] <<  8 | ptr[3]);
    e8815384:	0087979b          	slliw	a5,a5,0x8
    e8815388:	8fd9                	or	a5,a5,a4
    e881538a:	00f49323          	sh	a5,6(s1)
                    opt->u.llq.err   = (mDNSu16)((mDNSu16)ptr[4] <<  8 | ptr[5]);
    e881538e:	00844783          	lbu	a5,8(s0)
    e8815392:	00944703          	lbu	a4,9(s0)
                    mDNSPlatformMemCopy(opt->u.llq.id.b, ptr+6, 8);
    e8815396:	00c48513          	addi	a0,s1,12
                    opt->u.llq.err   = (mDNSu16)((mDNSu16)ptr[4] <<  8 | ptr[5]);
    e881539a:	0087979b          	slliw	a5,a5,0x8
    e881539e:	8fd9                	or	a5,a5,a4
    e88153a0:	00f49423          	sh	a5,8(s1)
                    mDNSPlatformMemCopy(opt->u.llq.id.b, ptr+6, 8);
    e88153a4:	6fc1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                    opt->u.llq.llqlease = (mDNSu32) ((mDNSu32)ptr[14] << 24 | (mDNSu32)ptr[15] << 16 | (mDNSu32)ptr[16] << 8 | ptr[17]);
    e88153a8:	01242783          	lw	a5,18(s0)
                    if (opt->u.llq.llqlease > 0x70000000UL / mDNSPlatformOneSecond)
    e88153ac:	70000737          	lui	a4,0x70000
    e88153b0:	9007968b          	revw	a3,a5
    e88153b4:	000c2783          	lw	a5,0(s8)
    e88153b8:	02f75733          	divu	a4,a4,a5
    e88153bc:	7c06b78b          	extu	a5,a3,31,0
                        opt->u.llq.llqlease = 0x70000000UL / mDNSPlatformOneSecond;
    e88153c0:	00f737b3          	sltu	a5,a4,a5
    e88153c4:	40f6970b          	mveqz	a4,a3,a5
    e88153c8:	c8d8                	sw	a4,20(s1)
            ptr += currentopt->optlen;
    e88153ca:	0024d403          	lhu	s0,2(s1)
    e88153ce:	84e6                	mv	s1,s9
    e88153d0:	945e                	add	s0,s0,s7
    e88153d2:	bd65                	j	e881528a <SetRData+0x628>
                if (opt->optlen == DNSOpt_LeaseData_Space - 4)
    e88153d4:	4711                	li	a4,4
    e88153d6:	f6e790e3          	bne	a5,a4,e8815336 <SetRData+0x6d4>
                    opt->u.updatelease = (mDNSu32) ((mDNSu32)ptr[0] << 24 | (mDNSu32)ptr[1] << 16 | (mDNSu32)ptr[2] << 8 | ptr[3]);
    e88153da:	405c                	lw	a5,4(s0)
                    if (opt->u.updatelease > 0x70000000UL / mDNSPlatformOneSecond)
    e88153dc:	70000737          	lui	a4,0x70000
    e88153e0:	9007968b          	revw	a3,a5
    e88153e4:	000c2783          	lw	a5,0(s8)
    e88153e8:	02f75733          	divu	a4,a4,a5
    e88153ec:	7c06b78b          	extu	a5,a3,31,0
                        opt->u.updatelease = 0x70000000UL / mDNSPlatformOneSecond;
    e88153f0:	00f737b3          	sltu	a5,a4,a5
    e88153f4:	40f6970b          	mveqz	a4,a3,a5
    e88153f8:	c0d8                	sw	a4,4(s1)
    e88153fa:	bfc1                	j	e88153ca <SetRData+0x768>
                if (ValidOwnerLength(opt->optlen))
    e88153fc:	4751                	li	a4,20
    e88153fe:	f2f76ce3          	bltu	a4,a5,e8815336 <SetRData+0x6d4>
    e8815402:	00fad7b3          	srl	a5,s5,a5
    e8815406:	0007b78b          	extu	a5,a5,0,0
    e881540a:	d795                	beqz	a5,e8815336 <SetRData+0x6d4>
                    opt->u.owner.vers = ptr[0];
    e881540c:	00444783          	lbu	a5,4(s0)
                    mDNSPlatformMemCopy(opt->u.owner.HMAC.b, ptr+2, 6);                         // 6-byte MAC address
    e8815410:	00640d13          	addi	s10,s0,6
    e8815414:	4619                	li	a2,6
                    opt->u.owner.vers = ptr[0];
    e8815416:	00f48223          	sb	a5,4(s1)
                    opt->u.owner.seq  = ptr[1];
    e881541a:	00544783          	lbu	a5,5(s0)
                    mDNSPlatformMemCopy(opt->u.owner.HMAC.b, ptr+2, 6);                         // 6-byte MAC address
    e881541e:	85ea                	mv	a1,s10
    e8815420:	00648513          	addi	a0,s1,6
                    opt->u.owner.seq  = ptr[1];
    e8815424:	00f482a3          	sb	a5,5(s1)
                    mDNSPlatformMemCopy(opt->u.owner.HMAC.b, ptr+2, 6);                         // 6-byte MAC address
    e8815428:	6781a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                    mDNSPlatformMemCopy(opt->u.owner.IMAC.b, ptr+2, 6);                         // 6-byte MAC address
    e881542c:	00c48d93          	addi	s11,s1,12
    e8815430:	4619                	li	a2,6
    e8815432:	85ea                	mv	a1,s10
    e8815434:	856e                	mv	a0,s11
    e8815436:	66a1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                    opt->u.owner.password = zeroEthAddr;
    e881543a:	0004a923          	sw	zero,18(s1)
                    if (opt->optlen >= DNSOpt_OwnerData_ID_Wake_Space-4)
    e881543e:	0024d703          	lhu	a4,2(s1)
                    opt->u.owner.password = zeroEthAddr;
    e8815442:	00049b23          	sh	zero,22(s1)
                    if (opt->optlen >= DNSOpt_OwnerData_ID_Wake_Space-4)
    e8815446:	47b5                	li	a5,13
    e8815448:	f8e7f1e3          	bgeu	a5,a4,e88153ca <SetRData+0x768>
                        mDNSPlatformMemCopy(opt->u.owner.IMAC.b, ptr+8, 6);                     // 6-byte MAC address
    e881544c:	4619                	li	a2,6
    e881544e:	00c40593          	addi	a1,s0,12
    e8815452:	856e                	mv	a0,s11
    e8815454:	64c1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                        if (opt->optlen > DNSOpt_OwnerData_ID_Wake_Space-4)
    e8815458:	0024d603          	lhu	a2,2(s1)
    e881545c:	47b9                	li	a5,14
    e881545e:	f6c7f6e3          	bgeu	a5,a2,e88153ca <SetRData+0x768>
                            mDNSPlatformMemCopy(opt->u.owner.password.b, ptr+14, opt->optlen - (DNSOpt_OwnerData_ID_Wake_Space-4));
    e8815462:	3649                	addiw	a2,a2,-14
    e8815464:	01240593          	addi	a1,s0,18
    e8815468:	01248513          	addi	a0,s1,18
    e881546c:	6341a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    e8815470:	bfa9                	j	e88153ca <SetRData+0x768>
                    opt->u.tracer.platf   = 0xFF;
    e8815472:	57fd                	li	a5,-1
    e8815474:	00f48223          	sb	a5,4(s1)
                    opt->u.tracer.mDNSv   = 0xFFFFFFFF;
    e8815478:	57fd                	li	a5,-1
    e881547a:	b5c5                	j	e881535a <SetRData+0x6f8>
        if (msg)
    e881547c:	c115                	beqz	a0,e88154a0 <SetRData+0x83e>
            ptr = getDomainName(msg, ptr, end, &name);
    e881547e:	868a                	mv	a3,sp
    e8815480:	ee6ff0ef          	jal	ra,e8814b66 <getDomainName>
    e8815484:	84aa                	mv	s1,a0
        if (!ptr)
    e8815486:	e4b1                	bnez	s1,e88154d2 <SetRData+0x870>
            LogInfo("SetRData: Malformed NSEC nextname");
    e8815488:	000bf797          	auipc	a5,0xbf
    e881548c:	5ec78793          	addi	a5,a5,1516 # e88d4a74 <mDNS_LoggingEnabled>
    e8815490:	439c                	lw	a5,0(a5)
    e8815492:	0008d597          	auipc	a1,0x8d
    e8815496:	51658593          	addi	a1,a1,1302 # e88a29a8 <SSHPort+0x220>
    e881549a:	9c078ae3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e881549e:	b155                	j	e8815142 <SetRData+0x4e0>
            AssignDomainName(&name, (domainname *)ptr);
    e88154a0:	10058593          	addi	a1,a1,256
    e88154a4:	8522                	mv	a0,s0
    e88154a6:	ca7fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88154aa:	0005061b          	sext.w	a2,a0
    e88154ae:	10000793          	li	a5,256
    e88154b2:	00c7ed63          	bltu	a5,a2,e88154cc <SetRData+0x86a>
    e88154b6:	85a2                	mv	a1,s0
    e88154b8:	850a                	mv	a0,sp
    e88154ba:	5e61a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&name);
    e88154be:	020c                	addi	a1,sp,256
    e88154c0:	850a                	mv	a0,sp
    e88154c2:	c8bfd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88154c6:	00a404b3          	add	s1,s0,a0
    e88154ca:	bf75                	j	e8815486 <SetRData+0x824>
            AssignDomainName(&name, (domainname *)ptr);
    e88154cc:	00010023          	sb	zero,0(sp)
    e88154d0:	b7fd                	j	e88154be <SetRData+0x85c>
        dlen = DomainNameLength(&name);
    e88154d2:	020c                	addi	a1,sp,256
    e88154d4:	850a                	mv	a0,sp
    e88154d6:	c77fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
        int len = rdlength;
    e88154da:	2a81                	sext.w	s5,s5
        len -= (ptr - orig);
    e88154dc:	40848433          	sub	s0,s1,s0
    e88154e0:	408a893b          	subw	s2,s5,s0
        dlen = DomainNameLength(&name);
    e88154e4:	8b2a                	mv	s6,a0
        ptr = SanityCheckBitMap(bmap, end, len);
    e88154e6:	864a                	mv	a2,s2
    e88154e8:	85ce                	mv	a1,s3
    e88154ea:	8526                	mv	a0,s1
    e88154ec:	89dfd0ef          	jal	ra,e8812d88 <SanityCheckBitMap>
        if (!ptr)
    e88154f0:	96050fe3          	beqz	a0,e8814e6e <SetRData+0x20c>
        if (ptr != end)
    e88154f4:	00a98e63          	beq	s3,a0,e8815510 <SetRData+0x8ae>
            LogInfo("SetRData: Malformed NSEC length not right");
    e88154f8:	000bf797          	auipc	a5,0xbf
    e88154fc:	57c78793          	addi	a5,a5,1404 # e88d4a74 <mDNS_LoggingEnabled>
    e8815500:	439c                	lw	a5,0(a5)
    e8815502:	0008d597          	auipc	a1,0x8d
    e8815506:	4ce58593          	addi	a1,a1,1230 # e88a29d0 <SSHPort+0x248>
    e881550a:	960782e3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e881550e:	b915                	j	e8815142 <SetRData+0x4e0>
        rr->resrec.rdlength = DomainNameLength(&name) + bmaplen;
    e8815510:	020c                	addi	a1,sp,256
    e8815512:	850a                	mv	a0,sp
    e8815514:	c39fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8815518:	012506bb          	addw	a3,a0,s2
    e881551c:	3c06b68b          	extu	a3,a3,15,0
    e8815520:	00da1a23          	sh	a3,20(s4)
        if (rr->resrec.rdlength > MaximumRDSize)
    e8815524:	6789                	lui	a5,0x2
    e8815526:	2681                	sext.w	a3,a3
    e8815528:	02d7f063          	bgeu	a5,a3,e8815548 <SetRData+0x8e6>
            LogInfo("SetRData: Malformed NSEC rdlength %d, rr->resrec.rdlength %d, "
    e881552c:	000bf797          	auipc	a5,0xbf
    e8815530:	54878793          	addi	a5,a5,1352 # e88d4a74 <mDNS_LoggingEnabled>
    e8815534:	439c                	lw	a5,0(a5)
    e8815536:	92078ce3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e881553a:	870a                	mv	a4,sp
    e881553c:	8656                	mv	a2,s5
    e881553e:	0008d597          	auipc	a1,0x8d
    e8815542:	4c258593          	addi	a1,a1,1218 # e88a2a00 <SSHPort+0x278>
    e8815546:	b9f1                	j	e8815222 <SetRData+0x5c0>
        AssignDomainName((domainname *)rdb->data, &name);
    e8815548:	020c                	addi	a1,sp,256
    e881554a:	850a                	mv	a0,sp
    e881554c:	c01fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8815550:	0005061b          	sext.w	a2,a0
    e8815554:	10000793          	li	a5,256
    e8815558:	0a0a0413          	addi	s0,s4,160
    e881555c:	00c7eb63          	bltu	a5,a2,e8815572 <SetRData+0x910>
    e8815560:	858a                	mv	a1,sp
    e8815562:	8522                	mv	a0,s0
    e8815564:	53c1a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        mDNSPlatformMemCopy(rdb->data + dlen, bmap, bmaplen);
    e8815568:	864a                	mv	a2,s2
    e881556a:	85a6                	mv	a1,s1
    e881556c:	01640533          	add	a0,s0,s6
    e8815570:	b1dd                	j	e8815256 <SetRData+0x5f4>
        AssignDomainName((domainname *)rdb->data, &name);
    e8815572:	0a0a0023          	sb	zero,160(s4)
    e8815576:	bfcd                	j	e8815568 <SetRData+0x906>
        if (rdlength < NSEC3_FIXED_SIZE + 1)
    e8815578:	000a861b          	sext.w	a2,s5
    e881557c:	4795                	li	a5,5
    e881557e:	02c7e263          	bltu	a5,a2,e88155a2 <SetRData+0x940>
            LogInfo("SetRData: NSEC3 too small length %d", rdlength);
    e8815582:	000bf797          	auipc	a5,0xbf
    e8815586:	4f278793          	addi	a5,a5,1266 # e88d4a74 <mDNS_LoggingEnabled>
    e881558a:	439c                	lw	a5,0(a5)
    e881558c:	0008d597          	auipc	a1,0x8d
    e8815590:	4cc58593          	addi	a1,a1,1228 # e88a2a58 <SSHPort+0x2d0>
    e8815594:	8c078de3          	beqz	a5,e8814e6e <SetRData+0x20c>
            LogInfo("SetRData: DS too small length %d", rdlength);
    e8815598:	450d                	li	a0,3
    e881559a:	713190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881559e:	8d1ff06f          	j	e8814e6e <SetRData+0x20c>
        if (nsec3->alg != SHA1_DIGEST_TYPE)
    e88155a2:	0005c603          	lbu	a2,0(a1)
    e88155a6:	4785                	li	a5,1
    e88155a8:	00f60e63          	beq	a2,a5,e88155c4 <SetRData+0x962>
            LogInfo("SetRData: nsec3 alg %d not supported", nsec3->alg);
    e88155ac:	000bf797          	auipc	a5,0xbf
    e88155b0:	4c878793          	addi	a5,a5,1224 # e88d4a74 <mDNS_LoggingEnabled>
    e88155b4:	439c                	lw	a5,0(a5)
    e88155b6:	0008d597          	auipc	a1,0x8d
    e88155ba:	4ca58593          	addi	a1,a1,1226 # e88a2a80 <SSHPort+0x2f8>
    e88155be:	8a0788e3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e88155c2:	bfd9                	j	e8815598 <SetRData+0x936>
        if (swap16(nsec3->iterations) > NSEC3_MAX_ITERATIONS)
    e88155c4:	0025d783          	lhu	a5,2(a1)
    return (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]);
    e88155c8:	0ff7f613          	andi	a2,a5,255
    e88155cc:	5c87b78b          	extu	a5,a5,23,8
    e88155d0:	0086161b          	slliw	a2,a2,0x8
        if (swap16(nsec3->iterations) > NSEC3_MAX_ITERATIONS)
    e88155d4:	8e5d                	or	a2,a2,a5
    e88155d6:	6785                	lui	a5,0x1
    e88155d8:	9c478793          	addi	a5,a5,-1596 # 9c4 <memcmp-0xe87ff63c>
    e88155dc:	00c7fe63          	bgeu	a5,a2,e88155f8 <SetRData+0x996>
            LogInfo("SetRData: nsec3 iteration count %d too big", swap16(nsec3->iterations));
    e88155e0:	000bf797          	auipc	a5,0xbf
    e88155e4:	49478793          	addi	a5,a5,1172 # e88d4a74 <mDNS_LoggingEnabled>
    e88155e8:	439c                	lw	a5,0(a5)
    e88155ea:	0008d597          	auipc	a1,0x8d
    e88155ee:	4be58593          	addi	a1,a1,1214 # e88a2aa8 <SSHPort+0x320>
    e88155f2:	86078ee3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e88155f6:	b74d                	j	e8815598 <SetRData+0x936>
        p += nsec3->saltLength;
    e88155f8:	0045c603          	lbu	a2,4(a1)
        mDNSu8 *p = (mDNSu8 *)&nsec3->salt;
    e88155fc:	00558793          	addi	a5,a1,5
        p += nsec3->saltLength;
    e8815600:	00c786b3          	add	a3,a5,a2
        if (p >= end)
    e8815604:	0336e363          	bltu	a3,s3,e881562a <SetRData+0x9c8>
            LogInfo("SetRData: nsec3 too small, at saltlength %d, p %p, end %p", nsec3->saltLength, p, end);
    e8815608:	000bf797          	auipc	a5,0xbf
    e881560c:	46c78793          	addi	a5,a5,1132 # e88d4a74 <mDNS_LoggingEnabled>
    e8815610:	439c                	lw	a5,0(a5)
    e8815612:	84078ee3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e8815616:	874e                	mv	a4,s3
    e8815618:	0008d597          	auipc	a1,0x8d
    e881561c:	4c058593          	addi	a1,a1,1216 # e88a2ad8 <SSHPort+0x350>
            LogInfo("SetRData: nsec3 too small, at hashLength %d, p %p, end %p", hashLength, p, end);
    e8815620:	450d                	li	a0,3
    e8815622:	68b190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8815626:	849ff06f          	j	e8814e6e <SetRData+0x20c>
        hashLength = (int)*p++;
    e881562a:	80c7c78b          	lrbu	a5,a5,a2,0
    e881562e:	863e                	mv	a2,a5
        if (!hashLength)
    e8815630:	ef89                	bnez	a5,e881564a <SetRData+0x9e8>
            LogInfo("SetRData: hashLength zero");
    e8815632:	000bf797          	auipc	a5,0xbf
    e8815636:	44278793          	addi	a5,a5,1090 # e88d4a74 <mDNS_LoggingEnabled>
    e881563a:	439c                	lw	a5,0(a5)
    e881563c:	0008d597          	auipc	a1,0x8d
    e8815640:	4dc58593          	addi	a1,a1,1244 # e88a2b18 <SSHPort+0x390>
    e8815644:	820785e3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e8815648:	bced                	j	e8815142 <SetRData+0x4e0>
        p += hashLength;
    e881564a:	0785                	addi	a5,a5,1
    e881564c:	96be                	add	a3,a3,a5
        if (p > end)
    e881564e:	00d9ff63          	bgeu	s3,a3,e881566c <SetRData+0xa0a>
            LogInfo("SetRData: nsec3 too small, at hashLength %d, p %p, end %p", hashLength, p, end);
    e8815652:	000bf797          	auipc	a5,0xbf
    e8815656:	42278793          	addi	a5,a5,1058 # e88d4a74 <mDNS_LoggingEnabled>
    e881565a:	439c                	lw	a5,0(a5)
    e881565c:	800789e3          	beqz	a5,e8814e6e <SetRData+0x20c>
    e8815660:	874e                	mv	a4,s3
    e8815662:	0008d597          	auipc	a1,0x8d
    e8815666:	4d658593          	addi	a1,a1,1238 # e88a2b38 <SSHPort+0x3b0>
    e881566a:	bf5d                	j	e8815620 <SetRData+0x9be>
        bitmaplen = rdlength - (int)(p - ptr);
    e881566c:	40b68633          	sub	a2,a3,a1
        p = SanityCheckBitMap(p, end, bitmaplen);
    e8815670:	40ca863b          	subw	a2,s5,a2
    e8815674:	85ce                	mv	a1,s3
    e8815676:	8536                	mv	a0,a3
    e8815678:	f10fd0ef          	jal	ra,e8812d88 <SanityCheckBitMap>
        if (!p)
    e881567c:	e2051d63          	bnez	a0,e8814cb6 <SetRData+0x54>
    e8815680:	feeff06f          	j	e8814e6e <SetRData+0x20c>
            AssignDomainName(&name, (domainname *)ptr);
    e8815684:	10058593          	addi	a1,a1,256
    e8815688:	8522                	mv	a0,s0
    e881568a:	ac3fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881568e:	0005061b          	sext.w	a2,a0
    e8815692:	10000793          	li	a5,256
    e8815696:	00c7ed63          	bltu	a5,a2,e88156b0 <SetRData+0xa4e>
    e881569a:	85a2                	mv	a1,s0
    e881569c:	850a                	mv	a0,sp
    e881569e:	4021a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            ptr += DomainNameLength(&name);
    e88156a2:	020c                	addi	a1,sp,256
    e88156a4:	850a                	mv	a0,sp
    e88156a6:	aa7fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88156aa:	942a                	add	s0,s0,a0
    e88156ac:	f9cff06f          	j	e8814e48 <SetRData+0x1e6>
            AssignDomainName(&name, (domainname *)ptr);
    e88156b0:	00010023          	sb	zero,0(sp)
    e88156b4:	b7fd                	j	e88156a2 <SetRData+0xa40>
        dlen = DomainNameLength(&name);
    e88156b6:	020c                	addi	a1,sp,256
    e88156b8:	850a                	mv	a0,sp
    e88156ba:	a93fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
        rlen = end - ptr;
    e88156be:	408989b3          	sub	s3,s3,s0
        rr->resrec.rdlength = dlen + rlen;
    e88156c2:	013506bb          	addw	a3,a0,s3
    e88156c6:	3c06b68b          	extu	a3,a3,15,0
    e88156ca:	00da1a23          	sh	a3,20(s4)
        if (rr->resrec.rdlength > MaximumRDSize)
    e88156ce:	6789                	lui	a5,0x2
    e88156d0:	2681                	sext.w	a3,a3
        dlen = DomainNameLength(&name);
    e88156d2:	8b2a                	mv	s6,a0
        if (rr->resrec.rdlength > MaximumRDSize)
    e88156d4:	02d7f063          	bgeu	a5,a3,e88156f4 <SetRData+0xa92>
            LogInfo("SetRData: Malformed TSIG/TKEY rdlength %d, rr->resrec.rdlength %d, "
    e88156d8:	000bf797          	auipc	a5,0xbf
    e88156dc:	39c78793          	addi	a5,a5,924 # e88d4a74 <mDNS_LoggingEnabled>
    e88156e0:	439c                	lw	a5,0(a5)
    e88156e2:	f8078663          	beqz	a5,e8814e6e <SetRData+0x20c>
    e88156e6:	870a                	mv	a4,sp
    e88156e8:	8656                	mv	a2,s5
    e88156ea:	0008d597          	auipc	a1,0x8d
    e88156ee:	4be58593          	addi	a1,a1,1214 # e88a2ba8 <SSHPort+0x420>
    e88156f2:	be05                	j	e8815222 <SetRData+0x5c0>
        AssignDomainName((domainname *)rdb->data, &name);
    e88156f4:	020c                	addi	a1,sp,256
    e88156f6:	850a                	mv	a0,sp
    e88156f8:	a55fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88156fc:	0005061b          	sext.w	a2,a0
    e8815700:	10000793          	li	a5,256
    e8815704:	0a0a0a93          	addi	s5,s4,160
    e8815708:	00c7ec63          	bltu	a5,a2,e8815720 <SetRData+0xabe>
    e881570c:	858a                	mv	a1,sp
    e881570e:	8556                	mv	a0,s5
    e8815710:	3901a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        mDNSPlatformMemCopy(rdb->data + dlen, ptr, rlen);
    e8815714:	0009861b          	sext.w	a2,s3
    e8815718:	85a2                	mv	a1,s0
    e881571a:	016a8533          	add	a0,s5,s6
    e881571e:	be25                	j	e8815256 <SetRData+0x5f4>
        AssignDomainName((domainname *)rdb->data, &name);
    e8815720:	0a0a0023          	sb	zero,160(s4)
    e8815724:	bfc5                	j	e8815714 <SetRData+0xab2>
        if (rdlength < RRSIG_FIXED_SIZE + 1)
    e8815726:	000a8b9b          	sext.w	s7,s5
    e881572a:	47c9                	li	a5,18
    e881572c:	0177ef63          	bltu	a5,s7,e881574a <SetRData+0xae8>
            LogInfo("SetRData: RRSIG too small length %d", rdlength);
    e8815730:	000bf797          	auipc	a5,0xbf
    e8815734:	34478793          	addi	a5,a5,836 # e88d4a74 <mDNS_LoggingEnabled>
    e8815738:	439c                	lw	a5,0(a5)
    e881573a:	f2078a63          	beqz	a5,e8814e6e <SetRData+0x20c>
    e881573e:	865e                	mv	a2,s7
    e8815740:	0008d597          	auipc	a1,0x8d
    e8815744:	4c858593          	addi	a1,a1,1224 # e88a2c08 <SSHPort+0x480>
    e8815748:	bd81                	j	e8815598 <SetRData+0x936>
        const mDNSu8 *sig = ptr + RRSIG_FIXED_SIZE;
    e881574a:	01258493          	addi	s1,a1,18
        if (msg)
    e881574e:	c505                	beqz	a0,e8815776 <SetRData+0xb14>
            sig = getDomainName(msg, sig, end, &name);
    e8815750:	868a                	mv	a3,sp
    e8815752:	85a6                	mv	a1,s1
    e8815754:	c12ff0ef          	jal	ra,e8814b66 <getDomainName>
    e8815758:	892a                	mv	s2,a0
        if (!sig)
    e881575a:	04091763          	bnez	s2,e88157a8 <SetRData+0xb46>
            LogInfo("SetRData: Malformed RRSIG record");
    e881575e:	000bf797          	auipc	a5,0xbf
    e8815762:	31678793          	addi	a5,a5,790 # e88d4a74 <mDNS_LoggingEnabled>
    e8815766:	439c                	lw	a5,0(a5)
    e8815768:	0008d597          	auipc	a1,0x8d
    e881576c:	4c858593          	addi	a1,a1,1224 # e88a2c30 <SSHPort+0x4a8>
    e8815770:	ee078f63          	beqz	a5,e8814e6e <SetRData+0x20c>
    e8815774:	b2f9                	j	e8815142 <SetRData+0x4e0>
            AssignDomainName(&name, (domainname *)sig);
    e8815776:	11258593          	addi	a1,a1,274
    e881577a:	8526                	mv	a0,s1
    e881577c:	9d1fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8815780:	0005061b          	sext.w	a2,a0
    e8815784:	10000793          	li	a5,256
    e8815788:	00c7ed63          	bltu	a5,a2,e88157a2 <SetRData+0xb40>
    e881578c:	85a6                	mv	a1,s1
    e881578e:	850a                	mv	a0,sp
    e8815790:	3101a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            sig += DomainNameLength(&name);
    e8815794:	020c                	addi	a1,sp,256
    e8815796:	850a                	mv	a0,sp
    e8815798:	9b5fd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881579c:	00a48933          	add	s2,s1,a0
    e88157a0:	bf6d                	j	e881575a <SetRData+0xaf8>
            AssignDomainName(&name, (domainname *)sig);
    e88157a2:	00010023          	sb	zero,0(sp)
    e88157a6:	b7fd                	j	e8815794 <SetRData+0xb32>
        if ((sig - orig) != DomainNameLength(&name))
    e88157a8:	020c                	addi	a1,sp,256
    e88157aa:	850a                	mv	a0,sp
    e88157ac:	409904b3          	sub	s1,s2,s1
    e88157b0:	99dfd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88157b4:	00a48e63          	beq	s1,a0,e88157d0 <SetRData+0xb6e>
            LogInfo("SetRData: Malformed RRSIG record, signer name compression");
    e88157b8:	000bf797          	auipc	a5,0xbf
    e88157bc:	2bc78793          	addi	a5,a5,700 # e88d4a74 <mDNS_LoggingEnabled>
    e88157c0:	439c                	lw	a5,0(a5)
    e88157c2:	0008d597          	auipc	a1,0x8d
    e88157c6:	49658593          	addi	a1,a1,1174 # e88a2c58 <SSHPort+0x4d0>
    e88157ca:	ea078263          	beqz	a5,e8814e6e <SetRData+0x20c>
    e88157ce:	ba95                	j	e8815142 <SetRData+0x4e0>
        if (sig + 1 >= end)
    e88157d0:	0905                	addi	s2,s2,1
    e88157d2:	03396063          	bltu	s2,s3,e88157f2 <SetRData+0xb90>
            LogInfo("SetRData: Not enough bytes for signature type %d", rr->resrec.rrtype);
    e88157d6:	000bf797          	auipc	a5,0xbf
    e88157da:	29e78793          	addi	a5,a5,670 # e88d4a74 <mDNS_LoggingEnabled>
    e88157de:	439c                	lw	a5,0(a5)
    e88157e0:	e8078763          	beqz	a5,e8814e6e <SetRData+0x20c>
    e88157e4:	00aa5603          	lhu	a2,10(s4)
    e88157e8:	0008d597          	auipc	a1,0x8d
    e88157ec:	4b058593          	addi	a1,a1,1200 # e88a2c98 <SSHPort+0x510>
    e88157f0:	b365                	j	e8815598 <SetRData+0x936>
        rr->resrec.rdlength = rdlength;
    e88157f2:	015a1a23          	sh	s5,20(s4)
        mDNSPlatformMemCopy(rdb->data, ptr, rdlength);
    e88157f6:	865e                	mv	a2,s7
    e88157f8:	cc4ff06f          	j	e8814cbc <SetRData+0x5a>
        if (rdlength < DNSKEY_FIXED_SIZE + 1)
    e88157fc:	000a861b          	sext.w	a2,s5
    e8815800:	4791                	li	a5,4
    e8815802:	cac7ea63          	bltu	a5,a2,e8814cb6 <SetRData+0x54>
            LogInfo("SetRData: DNSKEY too small length %d", rdlength);
    e8815806:	000bf797          	auipc	a5,0xbf
    e881580a:	26e78793          	addi	a5,a5,622 # e88d4a74 <mDNS_LoggingEnabled>
    e881580e:	439c                	lw	a5,0(a5)
    e8815810:	0008d597          	auipc	a1,0x8d
    e8815814:	4c058593          	addi	a1,a1,1216 # e88a2cd0 <SSHPort+0x548>
    e8815818:	e4078b63          	beqz	a5,e8814e6e <SetRData+0x20c>
    e881581c:	bbb5                	j	e8815598 <SetRData+0x936>

00000000e881581e <skipQuestion>:
    rr->resrec.rdatahash  = 0;
    return(end);
}

mDNSexport const mDNSu8 *skipQuestion(const DNSMessage *msg, const mDNSu8 *ptr, const mDNSu8 *end)
{
    e881581e:	1141                	addi	sp,sp,-16
    e8815820:	e022                	sd	s0,0(sp)
    e8815822:	e406                	sd	ra,8(sp)
    e8815824:	8432                	mv	s0,a2
    ptr = skipDomainName(msg, ptr, end);
    e8815826:	adaff0ef          	jal	ra,e8814b00 <skipDomainName>
    if (!ptr) { debugf("skipQuestion: Malformed domain name in DNS question section"); return(mDNSNULL); }
    e881582a:	c509                	beqz	a0,e8815834 <skipQuestion+0x16>
    if (ptr+4 > end) { debugf("skipQuestion: Malformed DNS question section -- no query type and class!"); return(mDNSNULL); }
    e881582c:	0511                	addi	a0,a0,4
    e881582e:	00a47363          	bgeu	s0,a0,e8815834 <skipQuestion+0x16>
    if (!ptr) { debugf("skipQuestion: Malformed domain name in DNS question section"); return(mDNSNULL); }
    e8815832:	4501                	li	a0,0
    return(ptr+4);
}
    e8815834:	60a2                	ld	ra,8(sp)
    e8815836:	6402                	ld	s0,0(sp)
    e8815838:	0141                	addi	sp,sp,16
    e881583a:	8082                	ret

00000000e881583c <getQuestion>:

mDNSexport const mDNSu8 *getQuestion(const DNSMessage *msg, const mDNSu8 *ptr, const mDNSu8 *end, const mDNSInterfaceID InterfaceID,
                                     DNSQuestion *question)
{
    e881583c:	7139                	addi	sp,sp,-64
    e881583e:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8815842:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8815846:	842a                	mv	s0,a0
    e8815848:	892e                	mv	s2,a1
    mDNSPlatformMemZero(question, sizeof(*question));
    e881584a:	853a                	mv	a0,a4
    e881584c:	35800593          	li	a1,856
{
    e8815850:	f852                	sd	s4,48(sp)
    e8815852:	e436                	sd	a3,8(sp)
    e8815854:	84ba                	mv	s1,a4
    e8815856:	fc06                	sd	ra,56(sp)
    e8815858:	8a32                	mv	s4,a2
    mDNSPlatformMemZero(question, sizeof(*question));
    e881585a:	29c1a0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    question->InterfaceID = InterfaceID;
    e881585e:	66a2                	ld	a3,8(sp)
    e8815860:	1ed4b823          	sd	a3,496(s1)
    if (!InterfaceID) question->TargetQID = onesID; // In DNSQuestions we use TargetQID as the indicator of whether it's unicast or multicast
    e8815864:	e681                	bnez	a3,e881586c <getQuestion+0x30>
    e8815866:	57fd                	li	a5,-1
    e8815868:	20f49923          	sh	a5,530(s1)
    ptr = getDomainName(msg, ptr, end, &question->qname);
    e881586c:	21448993          	addi	s3,s1,532
    e8815870:	8522                	mv	a0,s0
    e8815872:	86ce                	mv	a3,s3
    e8815874:	8652                	mv	a2,s4
    e8815876:	85ca                	mv	a1,s2
    e8815878:	aeeff0ef          	jal	ra,e8814b66 <getDomainName>
    e881587c:	842a                	mv	s0,a0
    if (!ptr) { debugf("Malformed domain name in DNS question section"); return(mDNSNULL); }
    e881587e:	cd05                	beqz	a0,e88158b6 <getQuestion+0x7a>
    if (ptr+4 > end) { debugf("Malformed DNS question section -- no query type and class!"); return(mDNSNULL); }
    e8815880:	00450913          	addi	s2,a0,4
    e8815884:	052a6263          	bltu	s4,s2,e88158c8 <getQuestion+0x8c>

    question->qnamehash = DomainNameHashValue(&question->qname);
    e8815888:	854e                	mv	a0,s3
    e881588a:	864ff0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e881588e:	c488                	sw	a0,8(s1)
    question->qtype  = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]);            // Get type
    e8815890:	00044783          	lbu	a5,0(s0)
    e8815894:	00144703          	lbu	a4,1(s0)
    e8815898:	0087979b          	slliw	a5,a5,0x8
    e881589c:	8fd9                	or	a5,a5,a4
    e881589e:	30f49a23          	sh	a5,788(s1)
    question->qclass = (mDNSu16)((mDNSu16)ptr[2] << 8 | ptr[3]);            // and class
    e88158a2:	00244783          	lbu	a5,2(s0)
    e88158a6:	00344703          	lbu	a4,3(s0)
    return(ptr+4);
    e88158aa:	844a                	mv	s0,s2
    question->qclass = (mDNSu16)((mDNSu16)ptr[2] << 8 | ptr[3]);            // and class
    e88158ac:	0087979b          	slliw	a5,a5,0x8
    e88158b0:	8fd9                	or	a5,a5,a4
    e88158b2:	30f49b23          	sh	a5,790(s1)
}
    e88158b6:	8522                	mv	a0,s0
    e88158b8:	70e2                	ld	ra,56(sp)
    e88158ba:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88158be:	7a42                	ld	s4,48(sp)
    e88158c0:	fd31490b          	ldd	s2,s3,(sp),2,4
    e88158c4:	6121                	addi	sp,sp,64
    e88158c6:	8082                	ret
    if (!ptr) { debugf("Malformed domain name in DNS question section"); return(mDNSNULL); }
    e88158c8:	4401                	li	s0,0
    e88158ca:	b7f5                	j	e88158b6 <getQuestion+0x7a>

00000000e88158cc <LocateAnswers>:

mDNSexport const mDNSu8 *LocateAnswers(const DNSMessage *const msg, const mDNSu8 *const end)
{
    e88158cc:	7179                	addi	sp,sp,-48
    e88158ce:	e826                	sd	s1,16(sp)
    e88158d0:	84aa                	mv	s1,a0
    e88158d2:	ec4a                	sd	s2,24(sp)
    int i;
    const mDNSu8 *ptr = msg->data;
    for (i = 0; i < msg->h.numQuestions && ptr; i++) ptr = skipQuestion(msg, ptr, end);
    e88158d4:	0044d903          	lhu	s2,4(s1)
{
    e88158d8:	e422                	sd	s0,8(sp)
    e88158da:	f04e                	sd	s3,32(sp)
    e88158dc:	f406                	sd	ra,40(sp)
    e88158de:	89ae                	mv	s3,a1
    const mDNSu8 *ptr = msg->data;
    e88158e0:	0531                	addi	a0,a0,12
    for (i = 0; i < msg->h.numQuestions && ptr; i++) ptr = skipQuestion(msg, ptr, end);
    e88158e2:	4401                	li	s0,0
    e88158e4:	01245363          	bge	s0,s2,e88158ea <LocateAnswers+0x1e>
    e88158e8:	e901                	bnez	a0,e88158f8 <LocateAnswers+0x2c>
    return(ptr);
}
    e88158ea:	70a2                	ld	ra,40(sp)
    e88158ec:	6422                	ld	s0,8(sp)
    e88158ee:	64c2                	ld	s1,16(sp)
    e88158f0:	6962                	ld	s2,24(sp)
    e88158f2:	7982                	ld	s3,32(sp)
    e88158f4:	6145                	addi	sp,sp,48
    e88158f6:	8082                	ret
    for (i = 0; i < msg->h.numQuestions && ptr; i++) ptr = skipQuestion(msg, ptr, end);
    e88158f8:	85aa                	mv	a1,a0
    e88158fa:	864e                	mv	a2,s3
    e88158fc:	8526                	mv	a0,s1
    e88158fe:	f21ff0ef          	jal	ra,e881581e <skipQuestion>
    e8815902:	2405                	addiw	s0,s0,1
    e8815904:	b7c5                	j	e88158e4 <LocateAnswers+0x18>

00000000e8815906 <LocateAuthorities>:

mDNSexport const mDNSu8 *LocateAuthorities(const DNSMessage *const msg, const mDNSu8 *const end)
{
    e8815906:	7179                	addi	sp,sp,-48
    e8815908:	e826                	sd	s1,16(sp)
    e881590a:	84aa                	mv	s1,a0
    e881590c:	e422                	sd	s0,8(sp)
    e881590e:	ec4a                	sd	s2,24(sp)
    e8815910:	f04e                	sd	s3,32(sp)
    e8815912:	f406                	sd	ra,40(sp)
    e8815914:	89ae                	mv	s3,a1
    int i;
    const mDNSu8 *ptr = LocateAnswers(msg, end);
    e8815916:	fb7ff0ef          	jal	ra,e88158cc <LocateAnswers>
    for (i = 0; i < msg->h.numAnswers && ptr; i++) ptr = skipResourceRecord(msg, ptr, end);
    e881591a:	0064d903          	lhu	s2,6(s1)
    e881591e:	4401                	li	s0,0
    e8815920:	01245363          	bge	s0,s2,e8815926 <LocateAuthorities+0x20>
    e8815924:	e901                	bnez	a0,e8815934 <LocateAuthorities+0x2e>
    return(ptr);
}
    e8815926:	70a2                	ld	ra,40(sp)
    e8815928:	6422                	ld	s0,8(sp)
    e881592a:	64c2                	ld	s1,16(sp)
    e881592c:	6962                	ld	s2,24(sp)
    e881592e:	7982                	ld	s3,32(sp)
    e8815930:	6145                	addi	sp,sp,48
    e8815932:	8082                	ret
    for (i = 0; i < msg->h.numAnswers && ptr; i++) ptr = skipResourceRecord(msg, ptr, end);
    e8815934:	85aa                	mv	a1,a0
    e8815936:	864e                	mv	a2,s3
    e8815938:	8526                	mv	a0,s1
    e881593a:	af4ff0ef          	jal	ra,e8814c2e <skipResourceRecord>
    e881593e:	2405                	addiw	s0,s0,1
    e8815940:	b7c5                	j	e8815920 <LocateAuthorities+0x1a>

00000000e8815942 <LocateAdditionals>:

mDNSexport const mDNSu8 *LocateAdditionals(const DNSMessage *const msg, const mDNSu8 *const end)
{
    e8815942:	7179                	addi	sp,sp,-48
    e8815944:	e826                	sd	s1,16(sp)
    e8815946:	84aa                	mv	s1,a0
    e8815948:	e422                	sd	s0,8(sp)
    e881594a:	ec4a                	sd	s2,24(sp)
    e881594c:	f04e                	sd	s3,32(sp)
    e881594e:	f406                	sd	ra,40(sp)
    e8815950:	89ae                	mv	s3,a1
    int i;
    const mDNSu8 *ptr = LocateAuthorities(msg, end);
    e8815952:	fb5ff0ef          	jal	ra,e8815906 <LocateAuthorities>
    for (i = 0; i < msg->h.numAuthorities; i++) ptr = skipResourceRecord(msg, ptr, end);
    e8815956:	0084d903          	lhu	s2,8(s1)
    e881595a:	4401                	li	s0,0
    e881595c:	01244963          	blt	s0,s2,e881596e <LocateAdditionals+0x2c>
    return (ptr);
}
    e8815960:	70a2                	ld	ra,40(sp)
    e8815962:	6422                	ld	s0,8(sp)
    e8815964:	64c2                	ld	s1,16(sp)
    e8815966:	6962                	ld	s2,24(sp)
    e8815968:	7982                	ld	s3,32(sp)
    e881596a:	6145                	addi	sp,sp,48
    e881596c:	8082                	ret
    for (i = 0; i < msg->h.numAuthorities; i++) ptr = skipResourceRecord(msg, ptr, end);
    e881596e:	85aa                	mv	a1,a0
    e8815970:	864e                	mv	a2,s3
    e8815972:	8526                	mv	a0,s1
    e8815974:	abaff0ef          	jal	ra,e8814c2e <skipResourceRecord>
    e8815978:	2405                	addiw	s0,s0,1
    e881597a:	b7cd                	j	e881595c <LocateAdditionals+0x1a>

00000000e881597c <LocateOptRR>:

mDNSexport const mDNSu8 *LocateOptRR(const DNSMessage *const msg, const mDNSu8 *const end, int minsize)
{
    e881597c:	7139                	addi	sp,sp,-64
    e881597e:	e422                	sd	s0,8(sp)
    e8815980:	8432                	mv	s0,a2
    e8815982:	e826                	sd	s1,16(sp)
    e8815984:	ec4a                	sd	s2,24(sp)
    e8815986:	f04e                	sd	s3,32(sp)
    e8815988:	f452                	sd	s4,40(sp)
    e881598a:	f856                	sd	s5,48(sp)
    e881598c:	fc06                	sd	ra,56(sp)
    e881598e:	892a                	mv	s2,a0
    e8815990:	89ae                	mv	s3,a1
    // According to RFC 2671, "One OPT pseudo-RR can be added to the additional data section of either a request or a response."
    // This implies that there may be *at most* one OPT record per DNS message, in the Additional Section,
    // but not necessarily the *last* entry in the Additional Section.
    for (i = 0; ptr && i < msg->h.numAdditionals; i++)
    {
        if (ptr + DNSOpt_Header_Space + minsize <= end &&   // Make sure we have 11+minsize bytes of data
    e8815992:	00b40a13          	addi	s4,s0,11
    const mDNSu8 *ptr = LocateAdditionals(msg, end);
    e8815996:	fadff0ef          	jal	ra,e8815942 <LocateAdditionals>
    for (i = 0; ptr && i < msg->h.numAdditionals; i++)
    e881599a:	4481                	li	s1,0
            ptr[0] == 0                                &&   // Name must be root label
            ptr[1] == (kDNSType_OPT >> 8  )            &&   // rrtype OPT
    e881599c:	02900a93          	li	s5,41
            ptr[2] == (kDNSType_OPT & 0xFF)            &&
    e88159a0:	3c04340b          	extu	s0,s0,15,0
    for (i = 0; ptr && i < msg->h.numAdditionals; i++)
    e88159a4:	c511                	beqz	a0,e88159b0 <LocateOptRR+0x34>
    e88159a6:	00a95783          	lhu	a5,10(s2)
    e88159aa:	00f4cc63          	blt	s1,a5,e88159c2 <LocateOptRR+0x46>
            ((mDNSu16)ptr[9] << 8 | (mDNSu16)ptr[10]) >= (mDNSu16)minsize)
            return(ptr);
        else
            ptr = skipResourceRecord(msg, ptr, end);
    }
    return(mDNSNULL);
    e88159ae:	4501                	li	a0,0
}
    e88159b0:	70e2                	ld	ra,56(sp)
    e88159b2:	6422                	ld	s0,8(sp)
    e88159b4:	64c2                	ld	s1,16(sp)
    e88159b6:	6962                	ld	s2,24(sp)
    e88159b8:	7982                	ld	s3,32(sp)
    e88159ba:	7a22                	ld	s4,40(sp)
    e88159bc:	7ac2                	ld	s5,48(sp)
    e88159be:	6121                	addi	sp,sp,64
    e88159c0:	8082                	ret
        if (ptr + DNSOpt_Header_Space + minsize <= end &&   // Make sure we have 11+minsize bytes of data
    e88159c2:	014507b3          	add	a5,a0,s4
    e88159c6:	02f9e763          	bltu	s3,a5,e88159f4 <LocateOptRR+0x78>
    e88159ca:	00054783          	lbu	a5,0(a0)
    e88159ce:	e39d                	bnez	a5,e88159f4 <LocateOptRR+0x78>
            ptr[0] == 0                                &&   // Name must be root label
    e88159d0:	00154783          	lbu	a5,1(a0)
    e88159d4:	e385                	bnez	a5,e88159f4 <LocateOptRR+0x78>
            ptr[1] == (kDNSType_OPT >> 8  )            &&   // rrtype OPT
    e88159d6:	00254783          	lbu	a5,2(a0)
    e88159da:	01579d63          	bne	a5,s5,e88159f4 <LocateOptRR+0x78>
            ptr[2] == (kDNSType_OPT & 0xFF)            &&
    e88159de:	00955703          	lhu	a4,9(a0)
    e88159e2:	0087179b          	slliw	a5,a4,0x8
    e88159e6:	5c87370b          	extu	a4,a4,23,8
    e88159ea:	8fd9                	or	a5,a5,a4
    e88159ec:	3c07b78b          	extu	a5,a5,15,0
    e88159f0:	fc87d0e3          	bge	a5,s0,e88159b0 <LocateOptRR+0x34>
            ptr = skipResourceRecord(msg, ptr, end);
    e88159f4:	85aa                	mv	a1,a0
    e88159f6:	864e                	mv	a2,s3
    e88159f8:	854a                	mv	a0,s2
    e88159fa:	a34ff0ef          	jal	ra,e8814c2e <skipResourceRecord>
    for (i = 0; ptr && i < msg->h.numAdditionals; i++)
    e88159fe:	2485                	addiw	s1,s1,1
    e8815a00:	b755                	j	e88159a4 <LocateOptRR+0x28>

00000000e8815a02 <mDNS_Lock_>:
#pragma mark -
#pragma mark - RR List Management & Task Management
#endif

mDNSexport void mDNS_Lock_(mDNS *const m, const char * const functionname)
{
    e8815a02:	1101                	addi	sp,sp,-32
    e8815a04:	f891540b          	sdd	s0,s1,(sp),0,4
    e8815a08:	ec06                	sd	ra,24(sp)
    e8815a0a:	842a                	mv	s0,a0
    e8815a0c:	e84a                	sd	s2,16(sp)
    e8815a0e:	84ae                	mv	s1,a1
    // MUST grab the platform lock FIRST!
    mDNSPlatformLock(m);
    e8815a10:	0881a0ef          	jal	ra,e882fa98 <mDNSPlatformLock>

    // Normally, mDNS_reentrancy is zero and so is mDNS_busy
    // However, when we call a client callback mDNS_busy is one, and we increment mDNS_reentrancy too
    // If that client callback does mDNS API calls, mDNS_reentrancy and mDNS_busy will both be one
    // If mDNS_busy != mDNS_reentrancy that's a bad sign
    if (m->mDNS_busy != m->mDNS_reentrancy)
    e8815a14:	5814                	lw	a3,48(s0)
    e8815a16:	5858                	lw	a4,52(s0)
    e8815a18:	00e68a63          	beq	a3,a4,e8815a2c <mDNS_Lock_+0x2a>
        LogFatalError("%s: mDNS_Lock: Locking failure! mDNS_busy (%ld) != mDNS_reentrancy (%ld)", functionname, m->mDNS_busy, m->mDNS_reentrancy);
    e8815a1c:	8626                	mv	a2,s1
    e8815a1e:	0008d597          	auipc	a1,0x8d
    e8815a22:	4c258593          	addi	a1,a1,1218 # e88a2ee0 <mDNSInterface_Unicast+0x160>
    e8815a26:	4501                	li	a0,0
    e8815a28:	285190ef          	jal	ra,e882f4ac <LogMsgWithLevel>

    // If this is an initial entry into the mDNSCore code, set m->timenow
    // else, if this is a re-entrant entry into the mDNSCore code, m->timenow should already be set
    if (m->mDNS_busy == 0)
    e8815a2c:	5814                	lw	a3,48(s0)
    e8815a2e:	24042903          	lw	s2,576(s0)
    e8815a32:	e2d1                	bnez	a3,e8815ab6 <mDNS_Lock_+0xb4>
    {
        if (m->timenow)
    e8815a34:	02090063          	beqz	s2,e8815a54 <mDNS_Lock_+0x52>
            LogMsg("%s: mDNS_Lock: m->timenow already set (%ld/%ld)", functionname, m->timenow, mDNS_TimeNow_NoLock(m));
    e8815a38:	05f1a0ef          	jal	ra,e8830296 <mDNSPlatformRawTime>
    e8815a3c:	23c42703          	lw	a4,572(s0)
    e8815a40:	86ca                	mv	a3,s2
    e8815a42:	8626                	mv	a2,s1
    e8815a44:	9f29                	addw	a4,a4,a0
    e8815a46:	0008d597          	auipc	a1,0x8d
    e8815a4a:	4ea58593          	addi	a1,a1,1258 # e88a2f30 <mDNSInterface_Unicast+0x1b0>
    e8815a4e:	4501                	li	a0,0
    e8815a50:	25d190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->timenow = mDNS_TimeNow_NoLock(m);
    e8815a54:	0431a0ef          	jal	ra,e8830296 <mDNSPlatformRawTime>
    e8815a58:	23c42783          	lw	a5,572(s0)
    e8815a5c:	9fa9                	addw	a5,a5,a0
    e8815a5e:	24f42023          	sw	a5,576(s0)
        if (m->timenow == 0) m->timenow = 1;
    e8815a62:	e781                	bnez	a5,e8815a6a <mDNS_Lock_+0x68>
    e8815a64:	4785                	li	a5,1
    e8815a66:	24f42023          	sw	a5,576(s0)
        LogMsg("%s: mDNS_Lock: m->mDNS_busy is %ld but m->timenow not set", functionname, m->mDNS_busy);
        m->timenow = mDNS_TimeNow_NoLock(m);
        if (m->timenow == 0) m->timenow = 1;
    }

    if (m->timenow_last - m->timenow > 0)
    e8815a6a:	24442703          	lw	a4,580(s0)
    e8815a6e:	24042783          	lw	a5,576(s0)
    e8815a72:	40f706bb          	subw	a3,a4,a5
    e8815a76:	02d05363          	blez	a3,e8815a9c <mDNS_Lock_+0x9a>
    {
        m->timenow_adjust += m->timenow_last - m->timenow;
    e8815a7a:	23c42703          	lw	a4,572(s0)
        LogMsg("%s: mDNSPlatformRawTime went backwards by %ld ticks; setting correction factor to %ld", functionname, m->timenow_last - m->timenow, m->timenow_adjust);
    e8815a7e:	8626                	mv	a2,s1
    e8815a80:	0008d597          	auipc	a1,0x8d
    e8815a84:	52058593          	addi	a1,a1,1312 # e88a2fa0 <mDNSInterface_Unicast+0x220>
        m->timenow_adjust += m->timenow_last - m->timenow;
    e8815a88:	9f35                	addw	a4,a4,a3
    e8815a8a:	22e42e23          	sw	a4,572(s0)
        LogMsg("%s: mDNSPlatformRawTime went backwards by %ld ticks; setting correction factor to %ld", functionname, m->timenow_last - m->timenow, m->timenow_adjust);
    e8815a8e:	4501                	li	a0,0
    e8815a90:	21d190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->timenow = m->timenow_last;
    e8815a94:	24442783          	lw	a5,580(s0)
    e8815a98:	24f42023          	sw	a5,576(s0)
    }
    m->timenow_last = m->timenow;
    e8815a9c:	24042783          	lw	a5,576(s0)

    // Increment mDNS_busy so we'll recognise re-entrant calls
    m->mDNS_busy++;
}
    e8815aa0:	60e2                	ld	ra,24(sp)
    e8815aa2:	6942                	ld	s2,16(sp)
    m->timenow_last = m->timenow;
    e8815aa4:	24f42223          	sw	a5,580(s0)
    m->mDNS_busy++;
    e8815aa8:	581c                	lw	a5,48(s0)
    e8815aaa:	2785                	addiw	a5,a5,1
    e8815aac:	d81c                	sw	a5,48(s0)
}
    e8815aae:	f891440b          	ldd	s0,s1,(sp),0,4
    e8815ab2:	6105                	addi	sp,sp,32
    e8815ab4:	8082                	ret
    else if (m->timenow == 0)
    e8815ab6:	fa091ae3          	bnez	s2,e8815a6a <mDNS_Lock_+0x68>
        LogMsg("%s: mDNS_Lock: m->mDNS_busy is %ld but m->timenow not set", functionname, m->mDNS_busy);
    e8815aba:	8626                	mv	a2,s1
    e8815abc:	0008d597          	auipc	a1,0x8d
    e8815ac0:	4a458593          	addi	a1,a1,1188 # e88a2f60 <mDNSInterface_Unicast+0x1e0>
    e8815ac4:	4501                	li	a0,0
    e8815ac6:	1e7190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->timenow = mDNS_TimeNow_NoLock(m);
    e8815aca:	b769                	j	e8815a54 <mDNS_Lock_+0x52>

00000000e8815acc <mDNS_Unlock_>:

    mDNS_Unlock(m);
}

mDNSexport void mDNS_Unlock_(mDNS *const m, const char *const functionname)
{
    e8815acc:	1101                	addi	sp,sp,-32
    e8815ace:	e422                	sd	s0,8(sp)
    e8815ad0:	e826                	sd	s1,16(sp)
    e8815ad2:	ec06                	sd	ra,24(sp)
    // Decrement mDNS_busy
    m->mDNS_busy--;
    e8815ad4:	591c                	lw	a5,48(a0)

    // Check for locking failures
    if (m->mDNS_busy != m->mDNS_reentrancy)
    e8815ad6:	5958                	lw	a4,52(a0)
{
    e8815ad8:	842a                	mv	s0,a0
    m->mDNS_busy--;
    e8815ada:	fff7869b          	addiw	a3,a5,-1
    e8815ade:	d914                	sw	a3,48(a0)
{
    e8815ae0:	84ae                	mv	s1,a1
    if (m->mDNS_busy != m->mDNS_reentrancy)
    e8815ae2:	00e68a63          	beq	a3,a4,e8815af6 <mDNS_Unlock_+0x2a>
        LogFatalError("%s: mDNS_Unlock: Locking failure! mDNS_busy (%ld) != mDNS_reentrancy (%ld)", functionname, m->mDNS_busy, m->mDNS_reentrancy);
    e8815ae6:	862e                	mv	a2,a1
    e8815ae8:	4501                	li	a0,0
    e8815aea:	0008d597          	auipc	a1,0x8d
    e8815aee:	63e58593          	addi	a1,a1,1598 # e88a3128 <mDNSInterface_Unicast+0x3a8>
    e8815af2:	1bb190ef          	jal	ra,e882f4ac <LogMsgWithLevel>

    // If this is a final exit from the mDNSCore code, set m->NextScheduledEvent and clear m->timenow
    if (m->mDNS_busy == 0)
    e8815af6:	581c                	lw	a5,48(s0)
    e8815af8:	10079b63          	bnez	a5,e8815c0e <mDNS_Unlock_+0x142>
    mDNSs32 e = m->timenow + FutureTime;
    e8815afc:	24042703          	lw	a4,576(s0)
    if (m->mDNSPlatformStatus != mStatus_NoError) return(e);
    e8815b00:	4814                	lw	a3,16(s0)
    mDNSs32 e = m->timenow + FutureTime;
    e8815b02:	380007b7          	lui	a5,0x38000
    e8815b06:	9fb9                	addw	a5,a5,a4
    if (m->mDNSPlatformStatus != mStatus_NoError) return(e);
    e8815b08:	e6f5                	bnez	a3,e8815bf4 <mDNS_Unlock_+0x128>
    if (m->NewQuestions)
    e8815b0a:	2c043683          	ld	a3,704(s0)
    e8815b0e:	c681                	beqz	a3,e8815b16 <mDNS_Unlock_+0x4a>
        if (m->NewQuestions->DelayAnswering) e = m->NewQuestions->DelayAnswering;
    e8815b10:	46dc                	lw	a5,12(a3)
    e8815b12:	12078663          	beqz	a5,e8815c3e <mDNS_Unlock_+0x172>
    if (m->NewLocalOnlyQuestions) return(m->timenow);
    e8815b16:	2d843683          	ld	a3,728(s0)
    e8815b1a:	12069263          	bnez	a3,e8815c3e <mDNS_Unlock_+0x172>
    if (m->NewLocalRecords && AnyLocalRecordReady(m)) return(m->timenow);
    e8815b1e:	668d                	lui	a3,0x3
    e8815b20:	96a2                	add	a3,a3,s0
    e8815b22:	1c86b683          	ld	a3,456(a3) # 31c8 <memcmp-0xe87fce38>
    e8815b26:	ca81                	beqz	a3,e8815b36 <mDNS_Unlock_+0x6a>
        if (LocalRecordReady(rr)) return rr;
    e8815b28:	4609                	li	a2,2
    e8815b2a:	0086c583          	lbu	a1,8(a3)
    e8815b2e:	10c59863          	bne	a1,a2,e8815c3e <mDNS_Unlock_+0x172>
    for (rr = m->NewLocalRecords; rr; rr = rr->next)
    e8815b32:	6294                	ld	a3,0(a3)
    e8815b34:	fafd                	bnez	a3,e8815b2a <mDNS_Unlock_+0x5e>
    if (m->NewLocalOnlyRecords) return(m->timenow);
    e8815b36:	668d                	lui	a3,0x3
    e8815b38:	96a2                	add	a3,a3,s0
    e8815b3a:	1d86c603          	lbu	a2,472(a3) # 31d8 <memcmp-0xe87fce28>
    e8815b3e:	10061063          	bnez	a2,e8815c3e <mDNS_Unlock_+0x172>
    if (m->SPSProxyListChanged) return(m->timenow);
    e8815b42:	6611                	lui	a2,0x4
    e8815b44:	9622                	add	a2,a2,s0
    e8815b46:	d7863603          	ld	a2,-648(a2) # 3d78 <memcmp-0xe87fc288>
    e8815b4a:	ea75                	bnez	a2,e8815c3e <mDNS_Unlock_+0x172>
    if (m->LocalRemoveEvents) return(m->timenow);
    e8815b4c:	28444603          	lbu	a2,644(s0)
    e8815b50:	e67d                	bnez	a2,e8815c3e <mDNS_Unlock_+0x172>
    if (e - m->NextuDNSEvent         > 0) e = m->NextuDNSEvent;
    e8815b52:	1f86a683          	lw	a3,504(a3)
    e8815b56:	40d7863b          	subw	a2,a5,a3
    e8815b5a:	00c05363          	blez	a2,e8815b60 <mDNS_Unlock_+0x94>
    e8815b5e:	87b6                	mv	a5,a3
    if (e - m->NextScheduledNATOp    > 0) e = m->NextScheduledNATOp;
    e8815b60:	26442683          	lw	a3,612(s0)
    e8815b64:	40d7863b          	subw	a2,a5,a3
    e8815b68:	00c05363          	blez	a2,e8815b6e <mDNS_Unlock_+0xa2>
    e8815b6c:	87b6                	mv	a5,a3
    if (m->NextSRVUpdate && e - m->NextSRVUpdate > 0) e = m->NextSRVUpdate;
    e8815b6e:	668d                	lui	a3,0x3
    e8815b70:	96a2                	add	a3,a3,s0
    e8815b72:	1fc6a683          	lw	a3,508(a3) # 31fc <memcmp-0xe87fce04>
    e8815b76:	c691                	beqz	a3,e8815b82 <mDNS_Unlock_+0xb6>
    e8815b78:	40d7863b          	subw	a2,a5,a3
    e8815b7c:	00c05363          	blez	a2,e8815b82 <mDNS_Unlock_+0xb6>
    e8815b80:	87b6                	mv	a5,a3
    if (e - m->NextCacheCheck        > 0) e = m->NextCacheCheck;
    e8815b82:	25442683          	lw	a3,596(s0)
    e8815b86:	40d7863b          	subw	a2,a5,a3
    e8815b8a:	00c05363          	blez	a2,e8815b90 <mDNS_Unlock_+0xc4>
    e8815b8e:	87b6                	mv	a5,a3
    if (e - m->NextScheduledSPS      > 0) e = m->NextScheduledSPS;
    e8815b90:	26842683          	lw	a3,616(s0)
    e8815b94:	40d7863b          	subw	a2,a5,a3
    e8815b98:	00c05363          	blez	a2,e8815b9e <mDNS_Unlock_+0xd2>
    e8815b9c:	87b6                	mv	a5,a3
    if (e - m->NextScheduledKA       > 0) e = m->NextScheduledKA;
    e8815b9e:	26c42683          	lw	a3,620(s0)
    e8815ba2:	40d7863b          	subw	a2,a5,a3
    e8815ba6:	00c05363          	blez	a2,e8815bac <mDNS_Unlock_+0xe0>
    e8815baa:	87b6                	mv	a5,a3
    if (!m->DelaySleep && m->SleepLimit && e - m->NextScheduledSPRetry > 0) e = m->NextScheduledSPRetry;
    e8815bac:	29042683          	lw	a3,656(s0)
    e8815bb0:	e691                	bnez	a3,e8815bbc <mDNS_Unlock_+0xf0>
    e8815bb2:	29442683          	lw	a3,660(s0)
    e8815bb6:	ca81                	beqz	a3,e8815bc6 <mDNS_Unlock_+0xfa>
    e8815bb8:	2a842683          	lw	a3,680(s0)
    e8815bbc:	40d7863b          	subw	a2,a5,a3
    e8815bc0:	00c05363          	blez	a2,e8815bc6 <mDNS_Unlock_+0xfa>
    e8815bc4:	87b6                	mv	a5,a3
    if (m->SuppressSending)
    e8815bc6:	25042683          	lw	a3,592(s0)
    e8815bca:	caa9                	beqz	a3,e8815c1c <mDNS_Unlock_+0x150>
        if (e - m->NextScheduledResponse > 0) e = m->NextScheduledResponse;
    e8815bcc:	40d7863b          	subw	a2,a5,a3
    e8815bd0:	00c05363          	blez	a2,e8815bd6 <mDNS_Unlock_+0x10a>
    e8815bd4:	87b6                	mv	a5,a3
    if (e - m->NextScheduledStopTime > 0) e = m->NextScheduledStopTime;
    e8815bd6:	2ac42683          	lw	a3,684(s0)
    e8815bda:	40d7863b          	subw	a2,a5,a3
    e8815bde:	00c05363          	blez	a2,e8815be4 <mDNS_Unlock_+0x118>
    e8815be2:	87b6                	mv	a5,a3
    if (m->NextBLEServiceTime && (e - m->NextBLEServiceTime > 0)) e = m->NextBLEServiceTime;
    e8815be4:	2b042683          	lw	a3,688(s0)
    e8815be8:	c691                	beqz	a3,e8815bf4 <mDNS_Unlock_+0x128>
    e8815bea:	40d7863b          	subw	a2,a5,a3
    e8815bee:	00c05363          	blez	a2,e8815bf4 <mDNS_Unlock_+0x128>
    e8815bf2:	87b6                	mv	a5,a3
    {
        m->NextScheduledEvent = GetNextScheduledEvent(m);
    e8815bf4:	24f42423          	sw	a5,584(s0)
        if (m->timenow == 0) LogMsg("%s: mDNS_Unlock: ERROR! m->timenow aready zero", functionname);
    e8815bf8:	eb09                	bnez	a4,e8815c0a <mDNS_Unlock_+0x13e>
    e8815bfa:	8626                	mv	a2,s1
    e8815bfc:	0008d597          	auipc	a1,0x8d
    e8815c00:	57c58593          	addi	a1,a1,1404 # e88a3178 <mDNSInterface_Unicast+0x3f8>
    e8815c04:	4501                	li	a0,0
    e8815c06:	0a7190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->timenow = 0;
    e8815c0a:	24042023          	sw	zero,576(s0)
    }

    // MUST release the platform lock LAST!
    mDNSPlatformUnlock(m);
    e8815c0e:	8522                	mv	a0,s0
}
    e8815c10:	6422                	ld	s0,8(sp)
    e8815c12:	60e2                	ld	ra,24(sp)
    e8815c14:	64c2                	ld	s1,16(sp)
    e8815c16:	6105                	addi	sp,sp,32
    mDNSPlatformUnlock(m);
    e8815c18:	6831906f          	j	e882fa9a <mDNSPlatformUnlock>
        if (e - m->NextScheduledQuery    > 0) e = m->NextScheduledQuery;
    e8815c1c:	25842683          	lw	a3,600(s0)
    e8815c20:	40d7863b          	subw	a2,a5,a3
    e8815c24:	00c05363          	blez	a2,e8815c2a <mDNS_Unlock_+0x15e>
    e8815c28:	87b6                	mv	a5,a3
        if (e - m->NextScheduledProbe    > 0) e = m->NextScheduledProbe;
    e8815c2a:	25c42683          	lw	a3,604(s0)
    e8815c2e:	40d7863b          	subw	a2,a5,a3
    e8815c32:	00c05363          	blez	a2,e8815c38 <mDNS_Unlock_+0x16c>
    e8815c36:	87b6                	mv	a5,a3
        if (e - m->NextScheduledResponse > 0) e = m->NextScheduledResponse;
    e8815c38:	26042683          	lw	a3,608(s0)
    e8815c3c:	bf41                	j	e8815bcc <mDNS_Unlock_+0x100>
    if (m->LocalRemoveEvents) return(m->timenow);
    e8815c3e:	87ba                	mv	a5,a4
    e8815c40:	bf55                	j	e8815bf4 <mDNS_Unlock_+0x128>

00000000e8815c42 <mDNS_snprintf>:
    *sbuffer++ = 0;
    return(nwritten);
}

mDNSexport mDNSu32 mDNS_snprintf(char *sbuffer, mDNSu32 buflen, const char *fmt, ...)
{
    e8815c42:	715d                	addi	sp,sp,-80
    e8815c44:	f436                	sd	a3,40(sp)
    mDNSu32 length;

    va_list ptr;
    va_start(ptr,fmt);
    e8815c46:	1034                	addi	a3,sp,40
{
    e8815c48:	ec06                	sd	ra,24(sp)
    e8815c4a:	fef1570b          	sdd	a4,a5,(sp),3,4
    e8815c4e:	e0c2                	sd	a6,64(sp)
    e8815c50:	e4c6                	sd	a7,72(sp)
    va_start(ptr,fmt);
    e8815c52:	e436                	sd	a3,8(sp)
    length = mDNS_vsnprintf(sbuffer, buflen, fmt, ptr);
    e8815c54:	4ef010ef          	jal	ra,e8817942 <mDNS_vsnprintf>
    va_end(ptr);

    return(length);
}
    e8815c58:	2501                	sext.w	a0,a0
    e8815c5a:	60e2                	ld	ra,24(sp)
    e8815c5c:	6161                	addi	sp,sp,80
    e8815c5e:	8082                	ret

00000000e8815c60 <DNSTypeName>:
    switch (rrtype)
    e8815c60:	02100793          	li	a5,33
    e8815c64:	14f50563          	beq	a0,a5,e8815dae <DNSTypeName+0x14e>
    e8815c68:	86aa                	mv	a3,a0
    e8815c6a:	0aa7e863          	bltu	a5,a0,e8815d1a <DNSTypeName+0xba>
    e8815c6e:	47a9                	li	a5,10
    case kDNSType_NULL: return("NULL");
    e8815c70:	000b9517          	auipc	a0,0xb9
    e8815c74:	52850513          	addi	a0,a0,1320 # e88cf198 <err_to_errno_table+0xc0>
    switch (rrtype)
    e8815c78:	14f68063          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815c7c:	06d7e363          	bltu	a5,a3,e8815ce2 <DNSTypeName+0x82>
    e8815c80:	4789                	li	a5,2
    case kDNSType_NS:   return("NS");
    e8815c82:	0008c517          	auipc	a0,0x8c
    e8815c86:	37e50513          	addi	a0,a0,894 # e88a2000 <DNSSecQFlags+0x98>
    switch (rrtype)
    e8815c8a:	12f68763          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815c8e:	02d7ed63          	bltu	a5,a3,e8815cc8 <DNSTypeName+0x68>
    e8815c92:	4785                	li	a5,1
    case kDNSType_A:    return("Addr");
    e8815c94:	0008c517          	auipc	a0,0x8c
    e8815c98:	2dc50513          	addi	a0,a0,732 # e88a1f70 <DNSSecQFlags+0x8>
    switch (rrtype)
    e8815c9c:	10f68e63          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
{
    e8815ca0:	1141                	addi	sp,sp,-16
        mDNS_snprintf(buffer, sizeof(buffer), "TYPE%d", rrtype);
    e8815ca2:	0008c617          	auipc	a2,0x8c
    e8815ca6:	36660613          	addi	a2,a2,870 # e88a2008 <DNSSecQFlags+0xa0>
    e8815caa:	45c1                	li	a1,16
    e8815cac:	000ce517          	auipc	a0,0xce
    e8815cb0:	e3450513          	addi	a0,a0,-460 # e88e3ae0 <buffer.8927>
{
    e8815cb4:	e406                	sd	ra,8(sp)
        mDNS_snprintf(buffer, sizeof(buffer), "TYPE%d", rrtype);
    e8815cb6:	f8dff0ef          	jal	ra,e8815c42 <mDNS_snprintf>
}
    e8815cba:	60a2                	ld	ra,8(sp)
        return(buffer);
    e8815cbc:	000ce517          	auipc	a0,0xce
    e8815cc0:	e2450513          	addi	a0,a0,-476 # e88e3ae0 <buffer.8927>
}
    e8815cc4:	0141                	addi	sp,sp,16
    e8815cc6:	8082                	ret
    switch (rrtype)
    e8815cc8:	4795                	li	a5,5
    case kDNSType_CNAME: return("CNAME");
    e8815cca:	0008c517          	auipc	a0,0x8c
    e8815cce:	2ae50513          	addi	a0,a0,686 # e88a1f78 <DNSSecQFlags+0x10>
    switch (rrtype)
    e8815cd2:	0ef68363          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815cd6:	4799                	li	a5,6
    case kDNSType_SOA:  return("SOA");
    e8815cd8:	0008c517          	auipc	a0,0x8c
    e8815cdc:	2a850513          	addi	a0,a0,680 # e88a1f80 <DNSSecQFlags+0x18>
    e8815ce0:	bf75                	j	e8815c9c <DNSTypeName+0x3c>
    switch (rrtype)
    e8815ce2:	47b5                	li	a5,13
    case kDNSType_HINFO: return("HINFO");
    e8815ce4:	0008c517          	auipc	a0,0x8c
    e8815ce8:	2ac50513          	addi	a0,a0,684 # e88a1f90 <DNSSecQFlags+0x28>
    switch (rrtype)
    e8815cec:	0cf68663          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815cf0:	00d7e863          	bltu	a5,a3,e8815d00 <DNSTypeName+0xa0>
    e8815cf4:	47b1                	li	a5,12
    case kDNSType_PTR:  return("PTR");
    e8815cf6:	0008c517          	auipc	a0,0x8c
    e8815cfa:	29250513          	addi	a0,a0,658 # e88a1f88 <DNSSecQFlags+0x20>
    e8815cfe:	bf79                	j	e8815c9c <DNSTypeName+0x3c>
    switch (rrtype)
    e8815d00:	47c1                	li	a5,16
    case kDNSType_TXT:  return("TXT");
    e8815d02:	0008c517          	auipc	a0,0x8c
    e8815d06:	29650513          	addi	a0,a0,662 # e88a1f98 <DNSSecQFlags+0x30>
    switch (rrtype)
    e8815d0a:	0af68763          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815d0e:	47f1                	li	a5,28
    case kDNSType_AAAA: return("AAAA");
    e8815d10:	0008c517          	auipc	a0,0x8c
    e8815d14:	29050513          	addi	a0,a0,656 # e88a1fa0 <DNSSecQFlags+0x38>
    e8815d18:	b751                	j	e8815c9c <DNSTypeName+0x3c>
    switch (rrtype)
    e8815d1a:	03000793          	li	a5,48
    case kDNSType_DNSKEY: return("DNSKEY");
    e8815d1e:	0008c517          	auipc	a0,0x8c
    e8815d22:	2ca50513          	addi	a0,a0,714 # e88a1fe8 <DNSSecQFlags+0x80>
    switch (rrtype)
    e8815d26:	08f68963          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815d2a:	04d7e263          	bltu	a5,a3,e8815d6e <DNSTypeName+0x10e>
    e8815d2e:	02b00793          	li	a5,43
    case kDNSType_DS: return("DS");
    e8815d32:	0008c517          	auipc	a0,0x8c
    e8815d36:	2be50513          	addi	a0,a0,702 # e88a1ff0 <DNSSecQFlags+0x88>
    switch (rrtype)
    e8815d3a:	06f68f63          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815d3e:	00d7e963          	bltu	a5,a3,e8815d50 <DNSTypeName+0xf0>
    e8815d42:	02900793          	li	a5,41
    case kDNSType_OPT:  return("OPT");
    e8815d46:	0008c517          	auipc	a0,0x8c
    e8815d4a:	26a50513          	addi	a0,a0,618 # e88a1fb0 <DNSSecQFlags+0x48>
    e8815d4e:	b7b9                	j	e8815c9c <DNSTypeName+0x3c>
    switch (rrtype)
    e8815d50:	02e00793          	li	a5,46
    case kDNSType_RRSIG: return("RRSIG");
    e8815d54:	0008c517          	auipc	a0,0x8c
    e8815d58:	28c50513          	addi	a0,a0,652 # e88a1fe0 <DNSSecQFlags+0x78>
    switch (rrtype)
    e8815d5c:	04f68e63          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815d60:	02f00793          	li	a5,47
    case kDNSType_NSEC: return("NSEC");
    e8815d64:	0008c517          	auipc	a0,0x8c
    e8815d68:	25450513          	addi	a0,a0,596 # e88a1fb8 <DNSSecQFlags+0x50>
    e8815d6c:	bf05                	j	e8815c9c <DNSTypeName+0x3c>
    switch (rrtype)
    e8815d6e:	03300793          	li	a5,51
    case kDNSType_NSEC3PARAM: return("NSEC3PARAM");
    e8815d72:	0008c517          	auipc	a0,0x8c
    e8815d76:	25650513          	addi	a0,a0,598 # e88a1fc8 <DNSSecQFlags+0x60>
    switch (rrtype)
    e8815d7a:	02f68f63          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815d7e:	00d7e963          	bltu	a5,a3,e8815d90 <DNSTypeName+0x130>
    e8815d82:	03200793          	li	a5,50
    case kDNSType_NSEC3: return("NSEC3");
    e8815d86:	0008c517          	auipc	a0,0x8c
    e8815d8a:	23a50513          	addi	a0,a0,570 # e88a1fc0 <DNSSecQFlags+0x58>
    e8815d8e:	b739                	j	e8815c9c <DNSTypeName+0x3c>
    switch (rrtype)
    e8815d90:	0fa00793          	li	a5,250
    case kDNSType_TSIG: return("TSIG");
    e8815d94:	0008c517          	auipc	a0,0x8c
    e8815d98:	24450513          	addi	a0,a0,580 # e88a1fd8 <DNSSecQFlags+0x70>
    switch (rrtype)
    e8815d9c:	00f68e63          	beq	a3,a5,e8815db8 <DNSTypeName+0x158>
    e8815da0:	0ff00793          	li	a5,255
    case kDNSQType_ANY: return("ANY");
    e8815da4:	0008c517          	auipc	a0,0x8c
    e8815da8:	25450513          	addi	a0,a0,596 # e88a1ff8 <DNSSecQFlags+0x90>
    e8815dac:	bdc5                	j	e8815c9c <DNSTypeName+0x3c>
    case kDNSType_SRV:  return("SRV");
    e8815dae:	0008c517          	auipc	a0,0x8c
    e8815db2:	1fa50513          	addi	a0,a0,506 # e88a1fa8 <DNSSecQFlags+0x40>
    e8815db6:	8082                	ret
}
    e8815db8:	8082                	ret

00000000e8815dba <DNSSECRecordAnswersQuestion>:
    *checkType = mDNStrue;
    e8815dba:	4785                	li	a5,1
{
    e8815dbc:	882a                	mv	a6,a0
    *checkType = mDNStrue;
    e8815dbe:	00f60023          	sb	a5,0(a2)
    if (q->qtype == rr->rrtype)
    e8815dc2:	3145d503          	lhu	a0,788(a1)
    e8815dc6:	00285703          	lhu	a4,2(a6)
    e8815dca:	0005069b          	sext.w	a3,a0
    e8815dce:	0ae68a63          	beq	a3,a4,e8815e82 <DNSSECRecordAnswersQuestion+0xc8>
    if ((q->qtype == kDNSType_DS || q->qtype == kDNSType_DNSKEY) && (q->qtype != rr->rrtype))
    e8815dd2:	02b00893          	li	a7,43
        return mDNSfalse;
    e8815dd6:	4781                	li	a5,0
    if ((q->qtype == kDNSType_DS || q->qtype == kDNSType_DNSKEY) && (q->qtype != rr->rrtype))
    e8815dd8:	0b168363          	beq	a3,a7,e8815e7e <DNSSECRecordAnswersQuestion+0xc4>
    e8815ddc:	03000893          	li	a7,48
    e8815de0:	09168f63          	beq	a3,a7,e8815e7e <DNSSECRecordAnswersQuestion+0xc4>
    if (rr->rrtype == kDNSType_RRSIG && q->ValidatingResponse)
    e8815de4:	02e00793          	li	a5,46
    e8815de8:	06f71863          	bne	a4,a5,e8815e58 <DNSSECRecordAnswersQuestion+0x9e>
    e8815dec:	14a5c703          	lbu	a4,330(a1)
        return mDNStrue;
    e8815df0:	4785                	li	a5,1
    if (rr->rrtype == kDNSType_RRSIG && q->ValidatingResponse)
    e8815df2:	c751                	beqz	a4,e8815e7e <DNSSECRecordAnswersQuestion+0xc4>
        mDNSu16 typeCovered = swap16(rrsig->typeCovered);
    e8815df4:	02883783          	ld	a5,40(a6)
    e8815df8:	0047d783          	lhu	a5,4(a5) # 38000004 <memcmp-0xb07ffffc>
    return (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]);
    e8815dfc:	0ff7f713          	andi	a4,a5,255
    e8815e00:	5c87b78b          	extu	a5,a5,23,8
    e8815e04:	0087171b          	slliw	a4,a4,0x8
        if (typeCovered != kDNSType_CNAME && typeCovered != q->qtype)
    e8815e08:	8f5d                	or	a4,a4,a5
    e8815e0a:	4795                	li	a5,5
    e8815e0c:	00f70563          	beq	a4,a5,e8815e16 <DNSSECRecordAnswersQuestion+0x5c>
        return mDNSfalse;
    e8815e10:	4781                	li	a5,0
        if (typeCovered != kDNSType_CNAME && typeCovered != q->qtype)
    e8815e12:	06e69663          	bne	a3,a4,e8815e7e <DNSSECRecordAnswersQuestion+0xc4>
{
    e8815e16:	1101                	addi	sp,sp,-32
        LogInfo("DNSSECRecordAnswersQuestion: RRSIG matched question %##s (%s)", q->qname.c,
    e8815e18:	000bf797          	auipc	a5,0xbf
    e8815e1c:	c5c78793          	addi	a5,a5,-932 # e88d4a74 <mDNS_LoggingEnabled>
{
    e8815e20:	e422                	sd	s0,8(sp)
    e8815e22:	e826                	sd	s1,16(sp)
    e8815e24:	ec06                	sd	ra,24(sp)
        LogInfo("DNSSECRecordAnswersQuestion: RRSIG matched question %##s (%s)", q->qname.c,
    e8815e26:	439c                	lw	a5,0(a5)
    e8815e28:	84b2                	mv	s1,a2
    e8815e2a:	842e                	mv	s0,a1
    e8815e2c:	cf89                	beqz	a5,e8815e46 <DNSSECRecordAnswersQuestion+0x8c>
    e8815e2e:	e33ff0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8815e32:	86aa                	mv	a3,a0
    e8815e34:	21440613          	addi	a2,s0,532
    e8815e38:	0008c597          	auipc	a1,0x8c
    e8815e3c:	0f058593          	addi	a1,a1,240 # e88a1f28 <AllHosts_v6_Eth+0x3b8>
    e8815e40:	450d                	li	a0,3
    e8815e42:	66a190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        *checkType = mDNSfalse;
    e8815e46:	00048023          	sb	zero,0(s1)
}
    e8815e4a:	60e2                	ld	ra,24(sp)
    e8815e4c:	6422                	ld	s0,8(sp)
        return mDNStrue;
    e8815e4e:	4785                	li	a5,1
}
    e8815e50:	64c2                	ld	s1,16(sp)
    e8815e52:	853e                	mv	a0,a5
    e8815e54:	6105                	addi	sp,sp,32
    e8815e56:	8082                	ret
    if (rr->rrtype == kDNSType_NSEC && DNSSECQuestion(q))
    e8815e58:	02f00693          	li	a3,47
        return mDNStrue;
    e8815e5c:	4785                	li	a5,1
    if (rr->rrtype == kDNSType_NSEC && DNSSECQuestion(q))
    e8815e5e:	02d71063          	bne	a4,a3,e8815e7e <DNSSECRecordAnswersQuestion+0xc4>
    e8815e62:	3245c783          	lbu	a5,804(a1)
    e8815e66:	e385                	bnez	a5,e8815e86 <DNSSECRecordAnswersQuestion+0xcc>
    e8815e68:	14a5c703          	lbu	a4,330(a1)
    e8815e6c:	eb09                	bnez	a4,e8815e7e <DNSSECRecordAnswersQuestion+0xc4>
    e8815e6e:	3255c703          	lbu	a4,805(a1)
        return mDNStrue;
    e8815e72:	4785                	li	a5,1
    if (rr->rrtype == kDNSType_NSEC && DNSSECQuestion(q))
    e8815e74:	c709                	beqz	a4,e8815e7e <DNSSECRecordAnswersQuestion+0xc4>
    e8815e76:	3265c783          	lbu	a5,806(a1)
        return mDNStrue;
    e8815e7a:	0017b793          	seqz	a5,a5
}
    e8815e7e:	853e                	mv	a0,a5
    e8815e80:	8082                	ret
        return mDNStrue;
    e8815e82:	4785                	li	a5,1
    e8815e84:	bfed                	j	e8815e7e <DNSSECRecordAnswersQuestion+0xc4>
        return mDNSfalse;
    e8815e86:	4781                	li	a5,0
    e8815e88:	bfdd                	j	e8815e7e <DNSSECRecordAnswersQuestion+0xc4>

00000000e8815e8a <SameNameRecordAnswersQuestion>:
{
    e8815e8a:	7179                	addi	sp,sp,-48
    e8815e8c:	ec22                	sd	s0,24(sp)
    mDNSBool checkType = mDNStrue;
    e8815e8e:	4785                	li	a5,1
{
    e8815e90:	f406                	sd	ra,40(sp)
    e8815e92:	f026                	sd	s1,32(sp)
    if (LocalOnlyOrP2PInterface(rr->InterfaceID))
    e8815e94:	6d10                	ld	a2,24(a0)
    mDNSBool checkType = mDNStrue;
    e8815e96:	00f107a3          	sb	a5,15(sp)
    if (LocalOnlyOrP2PInterface(rr->InterfaceID))
    e8815e9a:	57f9                	li	a5,-2
{
    e8815e9c:	842e                	mv	s0,a1
    if (LocalOnlyOrP2PInterface(rr->InterfaceID))
    e8815e9e:	00f60863          	beq	a2,a5,e8815eae <SameNameRecordAnswersQuestion+0x24>
    e8815ea2:	57f1                	li	a5,-4
    e8815ea4:	00f60563          	beq	a2,a5,e8815eae <SameNameRecordAnswersQuestion+0x24>
    e8815ea8:	57e9                	li	a5,-6
    e8815eaa:	02f61163          	bne	a2,a5,e8815ecc <SameNameRecordAnswersQuestion+0x42>
        LogMsg("SameNameRecordAnswersQuestion: ERROR!! called with LocalOnly ResourceRecord %p, Question %p", rr->InterfaceID, q->InterfaceID);
    e8815eae:	1f043683          	ld	a3,496(s0)
    e8815eb2:	0008d597          	auipc	a1,0x8d
    e8815eb6:	8de58593          	addi	a1,a1,-1826 # e88a2790 <SSHPort+0x8>
    e8815eba:	4501                	li	a0,0
    e8815ebc:	5f0190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mDNSfalse;
    e8815ec0:	4501                	li	a0,0
}
    e8815ec2:	70a2                	ld	ra,40(sp)
    e8815ec4:	6462                	ld	s0,24(sp)
    e8815ec6:	7482                	ld	s1,32(sp)
    e8815ec8:	6145                	addi	sp,sp,48
    e8815eca:	8082                	ret
    if (QuerySuppressed(q))
    e8815ecc:	31c5c783          	lbu	a5,796(a1)
    e8815ed0:	84aa                	mv	s1,a0
    e8815ed2:	c781                	beqz	a5,e8815eda <SameNameRecordAnswersQuestion+0x50>
    e8815ed4:	1405c783          	lbu	a5,320(a1)
    e8815ed8:	f7e5                	bnez	a5,e8815ec0 <SameNameRecordAnswersQuestion+0x36>
    e8815eda:	1e644783          	lbu	a5,486(s0)
    e8815ede:	f3ed                	bnez	a5,e8815ec0 <SameNameRecordAnswersQuestion+0x36>
    if (rr->InterfaceID &&
    e8815ee0:	c225                	beqz	a2,e8815f40 <SameNameRecordAnswersQuestion+0xb6>
        q->InterfaceID && q->InterfaceID != mDNSInterface_LocalOnly &&
    e8815ee2:	1f043783          	ld	a5,496(s0)
    if (rr->InterfaceID &&
    e8815ee6:	e7b9                	bnez	a5,e8815f34 <SameNameRecordAnswersQuestion+0xaa>
    if (rr->InterfaceID && !mDNSOpaque16IsZero(q->TargetQID)) return(mDNSfalse);
    e8815ee8:	21245783          	lhu	a5,530(s0)
    e8815eec:	fbf1                	bnez	a5,e8815ec0 <SameNameRecordAnswersQuestion+0x36>
    if (rr->rrtype == kDNSType_CNAME && rr->RecordType == kDNSRecordTypePacketNegative && rr->rrtype != q->qtype)
    e8815eee:	6098                	ld	a4,0(s1)
    e8815ef0:	0ffff7b7          	lui	a5,0xffff
    e8815ef4:	0792                	slli	a5,a5,0x4
    e8815ef6:	0ff78793          	addi	a5,a5,255 # ffff0ff <memcmp-0xd8800f01>
    e8815efa:	8ff9                	and	a5,a5,a4
    e8815efc:	00050737          	lui	a4,0x50
    e8815f00:	0f070713          	addi	a4,a4,240 # 500f0 <memcmp-0xe87aff10>
    e8815f04:	00e79863          	bne	a5,a4,e8815f14 <SameNameRecordAnswersQuestion+0x8a>
    e8815f08:	0024d703          	lhu	a4,2(s1)
    e8815f0c:	31445783          	lhu	a5,788(s0)
    e8815f10:	faf718e3          	bne	a4,a5,e8815ec0 <SameNameRecordAnswersQuestion+0x36>
    if (checkType && !RRTypeAnswersQuestionType(rr,q->qtype)) return(mDNSfalse);
    e8815f14:	00f14783          	lbu	a5,15(sp)
    e8815f18:	ebb9                	bnez	a5,e8815f6e <SameNameRecordAnswersQuestion+0xe4>
    if (rr->rrclass != q->qclass && q->qclass != kDNSQClass_ANY) return(mDNSfalse);
    e8815f1a:	0044d703          	lhu	a4,4(s1)
    e8815f1e:	31645783          	lhu	a5,790(s0)
    e8815f22:	06f71a63          	bne	a4,a5,e8815f96 <SameNameRecordAnswersQuestion+0x10c>
    if (!AnonInfoAnswersQuestion(rr, q))
    e8815f26:	85a2                	mv	a1,s0
    e8815f28:	8526                	mv	a0,s1
    e8815f2a:	17e040ef          	jal	ra,e881a0a8 <AnonInfoAnswersQuestion>
        return mDNSfalse;
    e8815f2e:	00a03533          	snez	a0,a0
    e8815f32:	bf41                	j	e8815ec2 <SameNameRecordAnswersQuestion+0x38>
        q->InterfaceID && q->InterfaceID != mDNSInterface_LocalOnly &&
    e8815f34:	5779                	li	a4,-2
    e8815f36:	fae789e3          	beq	a5,a4,e8815ee8 <SameNameRecordAnswersQuestion+0x5e>
    e8815f3a:	f8f613e3          	bne	a2,a5,e8815ec0 <SameNameRecordAnswersQuestion+0x36>
    e8815f3e:	b76d                	j	e8815ee8 <SameNameRecordAnswersQuestion+0x5e>
        mDNSu16 idr = (rr->rDNSServer ? rr->rDNSServer->resGroupID : 0);
    e8815f40:	789c                	ld	a5,48(s1)
    e8815f42:	4701                	li	a4,0
    e8815f44:	c399                	beqz	a5,e8815f4a <SameNameRecordAnswersQuestion+0xc0>
    e8815f46:	13c7d703          	lhu	a4,316(a5)
        mDNSu16 idq = (q->qDNSServer ? q->qDNSServer->resGroupID : 0);
    e8815f4a:	16843683          	ld	a3,360(s0)
    e8815f4e:	4781                	li	a5,0
    e8815f50:	c299                	beqz	a3,e8815f56 <SameNameRecordAnswersQuestion+0xcc>
    e8815f52:	13c6d783          	lhu	a5,316(a3)
        if (idr != idq) return(mDNSfalse);
    e8815f56:	f6f715e3          	bne	a4,a5,e8815ec0 <SameNameRecordAnswersQuestion+0x36>
        if (!DNSSECRecordAnswersQuestion(rr, q, &checkType)) return mDNSfalse;
    e8815f5a:	00f10613          	addi	a2,sp,15
    e8815f5e:	85a2                	mv	a1,s0
    e8815f60:	8526                	mv	a0,s1
    e8815f62:	e59ff0ef          	jal	ra,e8815dba <DNSSECRecordAnswersQuestion>
    e8815f66:	dd29                	beqz	a0,e8815ec0 <SameNameRecordAnswersQuestion+0x36>
    if (rr->InterfaceID && !mDNSOpaque16IsZero(q->TargetQID)) return(mDNSfalse);
    e8815f68:	6c9c                	ld	a5,24(s1)
    e8815f6a:	d3d1                	beqz	a5,e8815eee <SameNameRecordAnswersQuestion+0x64>
    e8815f6c:	bfb5                	j	e8815ee8 <SameNameRecordAnswersQuestion+0x5e>
    if (checkType && !RRTypeAnswersQuestionType(rr,q->qtype)) return(mDNSfalse);
    e8815f6e:	0024d703          	lhu	a4,2(s1)
    e8815f72:	4795                	li	a5,5
    e8815f74:	faf703e3          	beq	a4,a5,e8815f1a <SameNameRecordAnswersQuestion+0x90>
    e8815f78:	31445583          	lhu	a1,788(s0)
    e8815f7c:	0005879b          	sext.w	a5,a1
    e8815f80:	f8f70de3          	beq	a4,a5,e8815f1a <SameNameRecordAnswersQuestion+0x90>
    e8815f84:	0ff00713          	li	a4,255
    e8815f88:	f8e789e3          	beq	a5,a4,e8815f1a <SameNameRecordAnswersQuestion+0x90>
    e8815f8c:	8526                	mv	a0,s1
    e8815f8e:	b08fe0ef          	jal	ra,e8814296 <RRAssertsNonexistence>
    e8815f92:	f541                	bnez	a0,e8815f1a <SameNameRecordAnswersQuestion+0x90>
    e8815f94:	b735                	j	e8815ec0 <SameNameRecordAnswersQuestion+0x36>
    if (rr->rrclass != q->qclass && q->qclass != kDNSQClass_ANY) return(mDNSfalse);
    e8815f96:	0ff00713          	li	a4,255
    e8815f9a:	f2e793e3          	bne	a5,a4,e8815ec0 <SameNameRecordAnswersQuestion+0x36>
    e8815f9e:	b761                	j	e8815f26 <SameNameRecordAnswersQuestion+0x9c>

00000000e8815fa0 <ResourceRecordAnswersQuestion>:
{
    e8815fa0:	1101                	addi	sp,sp,-32
    e8815fa2:	e422                	sd	s0,8(sp)
    e8815fa4:	e826                	sd	s1,16(sp)
    e8815fa6:	ec06                	sd	ra,24(sp)
    e8815fa8:	842a                	mv	s0,a0
    e8815faa:	84ae                	mv	s1,a1
    if (!SameNameRecordAnswersQuestion(rr, q))
    e8815fac:	edfff0ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e8815fb0:	c105                	beqz	a0,e8815fd0 <ResourceRecordAnswersQuestion+0x30>
    return(rr->namehash == q->qnamehash && SameDomainName(rr->name, &q->qname));
    e8815fb2:	4818                	lw	a4,16(s0)
    e8815fb4:	449c                	lw	a5,8(s1)
    e8815fb6:	4501                	li	a0,0
    e8815fb8:	00f71a63          	bne	a4,a5,e8815fcc <ResourceRecordAnswersQuestion+0x2c>
    e8815fbc:	7008                	ld	a0,32(s0)
    e8815fbe:	21448593          	addi	a1,s1,532
    e8815fc2:	888fd0ef          	jal	ra,e881304a <SameDomainName>
    e8815fc6:	2501                	sext.w	a0,a0
    e8815fc8:	00a03533          	snez	a0,a0
    e8815fcc:	0ff57513          	andi	a0,a0,255
}
    e8815fd0:	60e2                	ld	ra,24(sp)
    e8815fd2:	6422                	ld	s0,8(sp)
    e8815fd4:	64c2                	ld	s1,16(sp)
    e8815fd6:	6105                	addi	sp,sp,32
    e8815fd8:	8082                	ret

00000000e8815fda <ResourceRecordAnswersUnicastResponse>:
    mDNSBool checkType = mDNStrue;
    e8815fda:	4785                	li	a5,1
{
    e8815fdc:	7179                	addi	sp,sp,-48
    e8815fde:	f406                	sd	ra,40(sp)
    e8815fe0:	ec22                	sd	s0,24(sp)
    e8815fe2:	f026                	sd	s1,32(sp)
    mDNSBool checkType = mDNStrue;
    e8815fe4:	00f107a3          	sb	a5,15(sp)
    if (QuerySuppressed(q))
    e8815fe8:	31c5c783          	lbu	a5,796(a1)
    e8815fec:	cb91                	beqz	a5,e8816000 <ResourceRecordAnswersUnicastResponse+0x26>
    e8815fee:	1405c783          	lbu	a5,320(a1)
    e8815ff2:	c799                	beqz	a5,e8816000 <ResourceRecordAnswersUnicastResponse+0x26>
        return mDNSfalse;
    e8815ff4:	4501                	li	a0,0
}
    e8815ff6:	70a2                	ld	ra,40(sp)
    e8815ff8:	6462                	ld	s0,24(sp)
    e8815ffa:	7482                	ld	s1,32(sp)
    e8815ffc:	6145                	addi	sp,sp,48
    e8815ffe:	8082                	ret
    if (QuerySuppressed(q))
    e8816000:	1e65c783          	lbu	a5,486(a1)
    e8816004:	fbe5                	bnez	a5,e8815ff4 <ResourceRecordAnswersUnicastResponse+0x1a>
    if (rr->InterfaceID &&
    e8816006:	6d18                	ld	a4,24(a0)
    e8816008:	cb09                	beqz	a4,e881601a <ResourceRecordAnswersUnicastResponse+0x40>
        q->InterfaceID && rr->InterfaceID != q->InterfaceID) return(mDNSfalse);
    e881600a:	1f05b783          	ld	a5,496(a1)
    if (rr->InterfaceID &&
    e881600e:	c399                	beqz	a5,e8816014 <ResourceRecordAnswersUnicastResponse+0x3a>
        q->InterfaceID && rr->InterfaceID != q->InterfaceID) return(mDNSfalse);
    e8816010:	fef712e3          	bne	a4,a5,e8815ff4 <ResourceRecordAnswersUnicastResponse+0x1a>
    if (rr->InterfaceID && !mDNSOpaque16IsZero(q->TargetQID)) return(mDNSfalse);
    e8816014:	2125d783          	lhu	a5,530(a1)
    e8816018:	fff1                	bnez	a5,e8815ff4 <ResourceRecordAnswersUnicastResponse+0x1a>
    if (!DNSSECRecordAnswersQuestion(rr, q, &checkType)) return mDNSfalse;
    e881601a:	00f10613          	addi	a2,sp,15
    e881601e:	842e                	mv	s0,a1
    e8816020:	84aa                	mv	s1,a0
    e8816022:	d99ff0ef          	jal	ra,e8815dba <DNSSECRecordAnswersQuestion>
    e8816026:	d579                	beqz	a0,e8815ff4 <ResourceRecordAnswersUnicastResponse+0x1a>
    if (checkType && !RRTypeAnswersQuestionType(rr,q->qtype)) return(mDNSfalse);
    e8816028:	00f14783          	lbu	a5,15(sp)
    e881602c:	e79d                	bnez	a5,e881605a <ResourceRecordAnswersUnicastResponse+0x80>
    if (rr->rrclass != q->qclass && q->qclass != kDNSQClass_ANY) return(mDNSfalse);
    e881602e:	0044d703          	lhu	a4,4(s1)
    e8816032:	31645783          	lhu	a5,790(s0)
    e8816036:	04f71663          	bne	a4,a5,e8816082 <ResourceRecordAnswersUnicastResponse+0xa8>
    return(rr->namehash == q->qnamehash && SameDomainName(rr->name, &q->qname));
    e881603a:	4898                	lw	a4,16(s1)
    e881603c:	441c                	lw	a5,8(s0)
    e881603e:	4501                	li	a0,0
    e8816040:	00f71a63          	bne	a4,a5,e8816054 <ResourceRecordAnswersUnicastResponse+0x7a>
    e8816044:	7088                	ld	a0,32(s1)
    e8816046:	21440593          	addi	a1,s0,532
    e881604a:	800fd0ef          	jal	ra,e881304a <SameDomainName>
    e881604e:	2501                	sext.w	a0,a0
    e8816050:	00a03533          	snez	a0,a0
    e8816054:	0ff57513          	andi	a0,a0,255
    e8816058:	bf79                	j	e8815ff6 <ResourceRecordAnswersUnicastResponse+0x1c>
    if (checkType && !RRTypeAnswersQuestionType(rr,q->qtype)) return(mDNSfalse);
    e881605a:	0024d703          	lhu	a4,2(s1)
    e881605e:	4795                	li	a5,5
    e8816060:	fcf707e3          	beq	a4,a5,e881602e <ResourceRecordAnswersUnicastResponse+0x54>
    e8816064:	31445583          	lhu	a1,788(s0)
    e8816068:	0005879b          	sext.w	a5,a1
    e881606c:	fcf701e3          	beq	a4,a5,e881602e <ResourceRecordAnswersUnicastResponse+0x54>
    e8816070:	0ff00713          	li	a4,255
    e8816074:	fae78de3          	beq	a5,a4,e881602e <ResourceRecordAnswersUnicastResponse+0x54>
    e8816078:	8526                	mv	a0,s1
    e881607a:	a1cfe0ef          	jal	ra,e8814296 <RRAssertsNonexistence>
    e881607e:	f945                	bnez	a0,e881602e <ResourceRecordAnswersUnicastResponse+0x54>
    e8816080:	bf95                	j	e8815ff4 <ResourceRecordAnswersUnicastResponse+0x1a>
    if (rr->rrclass != q->qclass && q->qclass != kDNSQClass_ANY) return(mDNSfalse);
    e8816082:	0ff00713          	li	a4,255
    e8816086:	f6e797e3          	bne	a5,a4,e8815ff4 <ResourceRecordAnswersUnicastResponse+0x1a>
    e881608a:	bf45                	j	e881603a <ResourceRecordAnswersUnicastResponse+0x60>

00000000e881608c <putRData>:
{
    e881608c:	711d                	addi	sp,sp,-96
    e881608e:	e8a2                	sd	s0,80(sp)
    e8816090:	e0ca                	sd	s2,64(sp)
    e8816092:	fc4e                	sd	s3,56(sp)
    e8816094:	f852                	sd	s4,48(sp)
    e8816096:	ec86                	sd	ra,88(sp)
    e8816098:	e4a6                	sd	s1,72(sp)
    e881609a:	f456                	sd	s5,40(sp)
    e881609c:	f05a                	sd	s6,32(sp)
    e881609e:	ec5e                	sd	s7,24(sp)
    e88160a0:	e862                	sd	s8,16(sp)
    switch (rr->rrtype)
    e88160a2:	0026d783          	lhu	a5,2(a3)
    e88160a6:	4751                	li	a4,20
{
    e88160a8:	892a                	mv	s2,a0
    e88160aa:	842e                	mv	s0,a1
    e88160ac:	89b2                	mv	s3,a2
    e88160ae:	8a36                	mv	s4,a3
    const RDataBody2 *const rdb = (RDataBody2 *)rr->rdata->u.data;
    e88160b0:	7684                	ld	s1,40(a3)
    switch (rr->rrtype)
    e88160b2:	0ef76b63          	bltu	a4,a5,e88161a8 <putRData+0x11c>
    e88160b6:	474d                	li	a4,19
    e88160b8:	02e7f263          	bgeu	a5,a4,e88160dc <putRData+0x50>
    e88160bc:	4731                	li	a4,12
    e88160be:	2ae78963          	beq	a5,a4,e8816370 <putRData+0x2e4>
    e88160c2:	0af76163          	bltu	a4,a5,e8816164 <putRData+0xd8>
    e88160c6:	4715                	li	a4,5
    e88160c8:	2ae78463          	beq	a5,a4,e8816370 <putRData+0x2e4>
    e88160cc:	02f76763          	bltu	a4,a5,e88160fa <putRData+0x6e>
    e88160d0:	4705                	li	a4,1
    e88160d2:	24e78763          	beq	a5,a4,e8816320 <putRData+0x294>
    e88160d6:	4709                	li	a4,2
    e88160d8:	28e78c63          	beq	a5,a4,e8816370 <putRData+0x2e4>
        if (ptr + rr->rdlength > limit) return(mDNSNULL);
    e88160dc:	00ca5603          	lhu	a2,12(s4)
    e88160e0:	00c407b3          	add	a5,s0,a2
    e88160e4:	24f9e363          	bltu	s3,a5,e881632a <putRData+0x29e>
        mDNSPlatformMemCopy(ptr, rdb->data, rr->rdlength);
    e88160e8:	00448593          	addi	a1,s1,4
    e88160ec:	8522                	mv	a0,s0
    e88160ee:	1b3190ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        return(ptr + rr->rdlength);
    e88160f2:	00ca5903          	lhu	s2,12(s4)
    e88160f6:	9922                	add	s2,s2,s0
    e88160f8:	acb9                	j	e8816356 <putRData+0x2ca>
    switch (rr->rrtype)
    e88160fa:	4719                	li	a4,6
    e88160fc:	fee790e3          	bne	a5,a4,e88160dc <putRData+0x50>
    case kDNSType_SOA:  ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->soa.mname);
    e8816100:	00448693          	addi	a3,s1,4
    e8816104:	e08fe0ef          	jal	ra,e881470c <putDomainNameAsLabels>
    e8816108:	85aa                	mv	a1,a0
        if (!ptr) return(mDNSNULL);
    e881610a:	22050063          	beqz	a0,e881632a <putRData+0x29e>
        ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->soa.rname);
    e881610e:	10448693          	addi	a3,s1,260
    e8816112:	864e                	mv	a2,s3
    e8816114:	854a                	mv	a0,s2
    e8816116:	df6fe0ef          	jal	ra,e881470c <putDomainNameAsLabels>
        if (!ptr || ptr + 20 > limit) return(mDNSNULL);
    e881611a:	20050863          	beqz	a0,e881632a <putRData+0x29e>
    e881611e:	01450793          	addi	a5,a0,20
    e8816122:	20f9e463          	bltu	s3,a5,e881632a <putRData+0x29e>
        ptr = putVal32(ptr, rdb->soa.serial);
    e8816126:	2044a583          	lw	a1,516(s1)
    e881612a:	c55fc0ef          	jal	ra,e8812d7e <putVal32>
        ptr = putVal32(ptr, rdb->soa.refresh);
    e881612e:	2084a583          	lw	a1,520(s1)
    e8816132:	c4dfc0ef          	jal	ra,e8812d7e <putVal32>
        ptr = putVal32(ptr, rdb->soa.retry);
    e8816136:	20c4a583          	lw	a1,524(s1)
    e881613a:	c45fc0ef          	jal	ra,e8812d7e <putVal32>
        ptr = putVal32(ptr, rdb->soa.expire);
    e881613e:	2104a583          	lw	a1,528(s1)
    e8816142:	c3dfc0ef          	jal	ra,e8812d7e <putVal32>
}
    e8816146:	6446                	ld	s0,80(sp)
        ptr = putVal32(ptr, rdb->soa.min);
    e8816148:	2144a583          	lw	a1,532(s1)
}
    e881614c:	60e6                	ld	ra,88(sp)
    e881614e:	64a6                	ld	s1,72(sp)
    e8816150:	6906                	ld	s2,64(sp)
    e8816152:	79e2                	ld	s3,56(sp)
    e8816154:	7a42                	ld	s4,48(sp)
    e8816156:	7aa2                	ld	s5,40(sp)
    e8816158:	7b02                	ld	s6,32(sp)
    e881615a:	6be2                	ld	s7,24(sp)
    e881615c:	6c42                	ld	s8,16(sp)
    e881615e:	6125                	addi	sp,sp,96
        ptr = putVal32(ptr, rdb->soa.min);
    e8816160:	c1ffc06f          	j	e8812d7e <putVal32>
    switch (rr->rrtype)
    e8816164:	4741                	li	a4,16
    e8816166:	f6e78be3          	beq	a5,a4,e88160dc <putRData+0x50>
    e881616a:	02f76a63          	bltu	a4,a5,e881619e <putRData+0x112>
    e881616e:	4735                	li	a4,13
    e8816170:	f6e786e3          	beq	a5,a4,e88160dc <putRData+0x50>
    e8816174:	473d                	li	a4,15
    e8816176:	f6e793e3          	bne	a5,a4,e88160dc <putRData+0x50>
    case kDNSType_KX:   if (ptr + 3 > limit) return(mDNSNULL);
    e881617a:	00340793          	addi	a5,s0,3
    e881617e:	1af9e663          	bltu	s3,a5,e881632a <putRData+0x29e>
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e8816182:	0044d783          	lhu	a5,4(s1)
    e8816186:	85a2                	mv	a1,s0
        return(putDomainNameAsLabels(msg, ptr, limit, &rdb->mx.exchange));
    e8816188:	00648693          	addi	a3,s1,6
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e881618c:	0087971b          	slliw	a4,a5,0x8
    e8816190:	5c87b78b          	extu	a5,a5,23,8
    e8816194:	8fd9                	or	a5,a5,a4
    e8816196:	3825d78b          	shia	a5,(a1),2,0
        return(putDomainNameAsLabels(msg, ptr, limit, &rdb->mx.exchange));
    e881619a:	864e                	mv	a2,s3
    e881619c:	aaf1                	j	e8816378 <putRData+0x2ec>
    switch (rr->rrtype)
    e881619e:	4745                	li	a4,17
    e88161a0:	1ee78a63          	beq	a5,a4,e8816394 <putRData+0x308>
    e88161a4:	4749                	li	a4,18
    e88161a6:	bfc1                	j	e8816176 <putRData+0xea>
    e88161a8:	02400713          	li	a4,36
    e88161ac:	fce787e3          	beq	a5,a4,e881617a <putRData+0xee>
    e88161b0:	08f76e63          	bltu	a4,a5,e881624c <putRData+0x1c0>
    e88161b4:	4771                	li	a4,28
    e88161b6:	1ee78963          	beq	a5,a4,e88163a8 <putRData+0x31c>
    e88161ba:	02f76e63          	bltu	a4,a5,e88161f6 <putRData+0x16a>
    e88161be:	4755                	li	a4,21
    e88161c0:	fae78de3          	beq	a5,a4,e881617a <putRData+0xee>
    e88161c4:	4769                	li	a4,26
    e88161c6:	f0e79be3          	bne	a5,a4,e88160dc <putRData+0x50>
    case kDNSType_PX:   if (ptr + 5 > limit) return(mDNSNULL);
    e88161ca:	00558793          	addi	a5,a1,5
    e88161ce:	14f66e63          	bltu	a2,a5,e881632a <putRData+0x29e>
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e88161d2:	0044d783          	lhu	a5,4(s1)
        ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->px.map822);
    e88161d6:	00648693          	addi	a3,s1,6
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e88161da:	0087971b          	slliw	a4,a5,0x8
    e88161de:	5c87b78b          	extu	a5,a5,23,8
    e88161e2:	8fd9                	or	a5,a5,a4
    e88161e4:	3825d78b          	shia	a5,(a1),2,0
        ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->px.map822);
    e88161e8:	d24fe0ef          	jal	ra,e881470c <putDomainNameAsLabels>
    e88161ec:	85aa                	mv	a1,a0
        ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->px.mapx400);
    e88161ee:	10648693          	addi	a3,s1,262
        if (!ptr) return(mDNSNULL);
    e88161f2:	f545                	bnez	a0,e881619a <putRData+0x10e>
    e88161f4:	aa1d                	j	e881632a <putRData+0x29e>
    switch (rr->rrtype)
    e88161f6:	4775                	li	a4,29
    e88161f8:	eee782e3          	beq	a5,a4,e88160dc <putRData+0x50>
    e88161fc:	02100713          	li	a4,33
    e8816200:	ece79ee3          	bne	a5,a4,e88160dc <putRData+0x50>
    case kDNSType_SRV:  if (ptr + 7 > limit) return(mDNSNULL);
    e8816204:	00758793          	addi	a5,a1,7
    e8816208:	12f66163          	bltu	a2,a5,e881632a <putRData+0x29e>
        *ptr++ = (mDNSu8)(rdb->srv.priority >> 8);
    e881620c:	0044d783          	lhu	a5,4(s1)
        return(putDomainNameAsLabels(msg, ptr, limit, &rdb->srv.target));
    e8816210:	00a48693          	addi	a3,s1,10
    e8816214:	0599                	addi	a1,a1,6
        *ptr++ = (mDNSu8)(rdb->srv.priority >> 8);
    e8816216:	0087d79b          	srliw	a5,a5,0x8
    e881621a:	fef58d23          	sb	a5,-6(a1)
        *ptr++ = (mDNSu8)(rdb->srv.priority &  0xFF);
    e881621e:	0044d783          	lhu	a5,4(s1)
    e8816222:	fef58da3          	sb	a5,-5(a1)
        *ptr++ = (mDNSu8)(rdb->srv.weight   >> 8);
    e8816226:	0064d783          	lhu	a5,6(s1)
    e881622a:	0087d79b          	srliw	a5,a5,0x8
    e881622e:	fef58e23          	sb	a5,-4(a1)
        *ptr++ = (mDNSu8)(rdb->srv.weight   &  0xFF);
    e8816232:	0064d783          	lhu	a5,6(s1)
    e8816236:	fef58ea3          	sb	a5,-3(a1)
        *ptr++ = rdb->srv.port.b[0];
    e881623a:	0084c783          	lbu	a5,8(s1)
    e881623e:	fef58f23          	sb	a5,-2(a1)
        *ptr++ = rdb->srv.port.b[1];
    e8816242:	0094c783          	lbu	a5,9(s1)
    e8816246:	fef58fa3          	sb	a5,-1(a1)
        return(putDomainNameAsLabels(msg, ptr, limit, &rdb->srv.target));
    e881624a:	aa05                	j	e881637a <putRData+0x2ee>
    switch (rr->rrtype)
    e881624c:	02f00713          	li	a4,47
    e8816250:	28e78a63          	beq	a5,a4,e88164e4 <putRData+0x458>
    e8816254:	e8f764e3          	bltu	a4,a5,e88160dc <putRData+0x50>
    e8816258:	02700713          	li	a4,39
    e881625c:	10e78a63          	beq	a5,a4,e8816370 <putRData+0x2e4>
    e8816260:	02900713          	li	a4,41
    e8816264:	e6e79ce3          	bne	a5,a4,e88160dc <putRData+0x50>
        const rdataOPT *const end = (const rdataOPT *)&rr->rdata->u.data[rr->rdlength];
    e8816268:	00c6da03          	lhu	s4,12(a3)
            len += DNSOpt_Data_Space(opt);
    e881626c:	65c1                	lui	a1,0x10
        int len = 0;
    e881626e:	4681                	li	a3,0
        const rdataOPT *const end = (const rdataOPT *)&rr->rdata->u.data[rr->rdlength];
    e8816270:	0a11                	addi	s4,s4,4
    e8816272:	9a26                	add	s4,s4,s1
        for (opt = &rr->rdata->u.opt[0]; opt < end; opt++) 
    e8816274:	0491                	addi	s1,s1,4
    e8816276:	87a6                	mv	a5,s1
            len += DNSOpt_Data_Space(opt);
    e8816278:	4505                	li	a0,1
    e881627a:	4809                	li	a6,2
    e881627c:	de958593          	addi	a1,a1,-535 # fde9 <memcmp-0xe87f0217>
    e8816280:	4891                	li	a7,4
        for (opt = &rr->rdata->u.opt[0]; opt < end; opt++) 
    e8816282:	1547e363          	bltu	a5,s4,e88163c8 <putRData+0x33c>
        if (ptr + len > limit) 
    e8816286:	96a2                	add	a3,a3,s0
    e8816288:	8922                	mv	s2,s0
    e881628a:	18d9e463          	bltu	s3,a3,e8816412 <putRData+0x386>
            const int space = DNSOpt_Data_Space(opt);
    e881628e:	6ac1                	lui	s5,0x10
    e8816290:	4b85                	li	s7,1
    e8816292:	4b09                	li	s6,2
    e8816294:	de9a8a93          	addi	s5,s5,-535 # fde9 <memcmp-0xe87f0217>
    e8816298:	4c11                	li	s8,4
        for (opt = &rr->rdata->u.opt[0]; opt < end; opt++)
    e881629a:	0b44fe63          	bgeu	s1,s4,e8816356 <putRData+0x2ca>
            const int space = DNSOpt_Data_Space(opt);
    e881629e:	0004d783          	lhu	a5,0(s1)
    e88162a2:	4459                	li	s0,22
    e88162a4:	0007871b          	sext.w	a4,a5
    e88162a8:	03770f63          	beq	a4,s7,e88162e6 <putRData+0x25a>
    e88162ac:	4421                	li	s0,8
    e88162ae:	03670c63          	beq	a4,s6,e88162e6 <putRData+0x25a>
    e88162b2:	4425                	li	s0,9
    e88162b4:	03570963          	beq	a4,s5,e88162e6 <putRData+0x25a>
    e88162b8:	6441                	lui	s0,0x10
    e88162ba:	03871663          	bne	a4,s8,e88162e6 <putRData+0x25a>
    e88162be:	0064d683          	lhu	a3,6(s1)
    e88162c2:	00c4d703          	lhu	a4,12(s1)
    e88162c6:	4449                	li	s0,18
    e88162c8:	00e69f63          	bne	a3,a4,e88162e6 <putRData+0x25a>
    e88162cc:	0084d683          	lhu	a3,8(s1)
    e88162d0:	00e4d703          	lhu	a4,14(s1)
    e88162d4:	00e69963          	bne	a3,a4,e88162e6 <putRData+0x25a>
    e88162d8:	00a4d683          	lhu	a3,10(s1)
    e88162dc:	0104d703          	lhu	a4,16(s1)
    e88162e0:	00e69363          	bne	a3,a4,e88162e6 <putRData+0x25a>
    e88162e4:	4431                	li	s0,12
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e88162e6:	00879713          	slli	a4,a5,0x8
    e88162ea:	5c87b78b          	extu	a5,a5,23,8
    e88162ee:	8fd9                	or	a5,a5,a4
    e88162f0:	00f91023          	sh	a5,0(s2)
            ptr = putVal16(ptr, (mDNSu16)space - 4);
    e88162f4:	ffc4079b          	addiw	a5,s0,-4
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e88162f8:	3c87b70b          	extu	a4,a5,15,8
    e88162fc:	0087979b          	slliw	a5,a5,0x8
    e8816300:	8fd9                	or	a5,a5,a4
    e8816302:	00f91123          	sh	a5,2(s2)
    return ptr + sizeof(mDNSOpaque16);
    e8816306:	0004d783          	lhu	a5,0(s1)
    e881630a:	00490993          	addi	s3,s2,4
            switch (opt->opt)
    e881630e:	17678f63          	beq	a5,s6,e881648c <putRData+0x400>
    e8816312:	10fb6863          	bltu	s6,a5,e8816422 <putRData+0x396>
    e8816316:	13778263          	beq	a5,s7,e881643a <putRData+0x3ae>
        for (opt = &rr->rdata->u.opt[0]; opt < end; opt++)
    e881631a:	04e1                	addi	s1,s1,24
    e881631c:	894e                	mv	s2,s3
    e881631e:	bfb5                	j	e881629a <putRData+0x20e>
    case kDNSType_A:    if (rr->rdlength != 4)
    e8816320:	00c6d703          	lhu	a4,12(a3)
    e8816324:	4791                	li	a5,4
    e8816326:	00f70463          	beq	a4,a5,e881632e <putRData+0x2a2>
            if (ptr + rr->rdlength > limit) { LogMsg("putRData: NSEC rdlength beyond limit %##s (%s), ptr %p, rdlength %d, limit %p", rr->name->c, DNSTypeName(rr->rrtype), ptr, rr->rdlength, limit); return(mDNSNULL);}
    e881632a:	4901                	li	s2,0
    e881632c:	a02d                	j	e8816356 <putRData+0x2ca>
        if (ptr + 4 > limit) return(mDNSNULL);
    e881632e:	00458913          	addi	s2,a1,4
    e8816332:	ff266ce3          	bltu	a2,s2,e881632a <putRData+0x29e>
        *ptr++ = rdb->ipv4.b[0];
    e8816336:	0044c783          	lbu	a5,4(s1)
    e881633a:	00f58023          	sb	a5,0(a1)
        *ptr++ = rdb->ipv4.b[1];
    e881633e:	0054c783          	lbu	a5,5(s1)
    e8816342:	00f580a3          	sb	a5,1(a1)
        *ptr++ = rdb->ipv4.b[2];
    e8816346:	0064c783          	lbu	a5,6(s1)
    e881634a:	00f58123          	sb	a5,2(a1)
        *ptr++ = rdb->ipv4.b[3];
    e881634e:	0074c783          	lbu	a5,7(s1)
    e8816352:	00f581a3          	sb	a5,3(a1)
}
    e8816356:	60e6                	ld	ra,88(sp)
    e8816358:	6446                	ld	s0,80(sp)
    e881635a:	854a                	mv	a0,s2
    e881635c:	64a6                	ld	s1,72(sp)
    e881635e:	6906                	ld	s2,64(sp)
    e8816360:	79e2                	ld	s3,56(sp)
    e8816362:	7a42                	ld	s4,48(sp)
    e8816364:	7aa2                	ld	s5,40(sp)
    e8816366:	7b02                	ld	s6,32(sp)
    e8816368:	6be2                	ld	s7,24(sp)
    e881636a:	6c42                	ld	s8,16(sp)
    e881636c:	6125                	addi	sp,sp,96
    e881636e:	8082                	ret
    case kDNSType_DNAME: return(putDomainNameAsLabels(msg, ptr, limit, &rdb->name));
    e8816370:	00448693          	addi	a3,s1,4
    e8816374:	864e                	mv	a2,s3
    e8816376:	85a2                	mv	a1,s0
        return(putDomainNameAsLabels(msg, ptr, limit, &rdb->mx.exchange));
    e8816378:	854a                	mv	a0,s2
}
    e881637a:	6446                	ld	s0,80(sp)
    e881637c:	60e6                	ld	ra,88(sp)
    e881637e:	64a6                	ld	s1,72(sp)
    e8816380:	6906                	ld	s2,64(sp)
    e8816382:	79e2                	ld	s3,56(sp)
    e8816384:	7a42                	ld	s4,48(sp)
    e8816386:	7aa2                	ld	s5,40(sp)
    e8816388:	7b02                	ld	s6,32(sp)
    e881638a:	6be2                	ld	s7,24(sp)
    e881638c:	6c42                	ld	s8,16(sp)
    e881638e:	6125                	addi	sp,sp,96
        return(putDomainNameAsLabels(msg, ptr, limit, &rdb->srv.target));
    e8816390:	b7cfe06f          	j	e881470c <putDomainNameAsLabels>
    case kDNSType_RP:   ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->rp.mbox);
    e8816394:	00448693          	addi	a3,s1,4
    e8816398:	b74fe0ef          	jal	ra,e881470c <putDomainNameAsLabels>
    e881639c:	85aa                	mv	a1,a0
        ptr = putDomainNameAsLabels(msg, ptr, limit, &rdb->rp.txt);
    e881639e:	10448693          	addi	a3,s1,260
        if (!ptr) return(mDNSNULL);
    e88163a2:	de051ce3          	bnez	a0,e881619a <putRData+0x10e>
    e88163a6:	b751                	j	e881632a <putRData+0x29e>
    case kDNSType_AAAA: if (rr->rdlength != sizeof(rdb->ipv6))
    e88163a8:	00c6d703          	lhu	a4,12(a3)
    e88163ac:	47c1                	li	a5,16
    e88163ae:	f6f71ee3          	bne	a4,a5,e881632a <putRData+0x29e>
        if (ptr + sizeof(rdb->ipv6) > limit) return(mDNSNULL);
    e88163b2:	01058913          	addi	s2,a1,16
    e88163b6:	f7266ae3          	bltu	a2,s2,e881632a <putRData+0x29e>
        mDNSPlatformMemCopy(ptr, &rdb->ipv6, sizeof(rdb->ipv6));
    e88163ba:	4641                	li	a2,16
    e88163bc:	00448593          	addi	a1,s1,4
    e88163c0:	8522                	mv	a0,s0
    e88163c2:	6de190ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        return(ptr + sizeof(rdb->ipv6));
    e88163c6:	bf41                	j	e8816356 <putRData+0x2ca>
            len += DNSOpt_Data_Space(opt);
    e88163c8:	0007d603          	lhu	a2,0(a5)
    e88163cc:	4759                	li	a4,22
    e88163ce:	02a60f63          	beq	a2,a0,e881640c <putRData+0x380>
    e88163d2:	4721                	li	a4,8
    e88163d4:	03060c63          	beq	a2,a6,e881640c <putRData+0x380>
    e88163d8:	4725                	li	a4,9
    e88163da:	02b60963          	beq	a2,a1,e881640c <putRData+0x380>
    e88163de:	6741                	lui	a4,0x10
    e88163e0:	03161663          	bne	a2,a7,e881640c <putRData+0x380>
    e88163e4:	0067d303          	lhu	t1,6(a5)
    e88163e8:	00c7d603          	lhu	a2,12(a5)
    e88163ec:	4749                	li	a4,18
    e88163ee:	00c31f63          	bne	t1,a2,e881640c <putRData+0x380>
    e88163f2:	0087d303          	lhu	t1,8(a5)
    e88163f6:	00e7d603          	lhu	a2,14(a5)
    e88163fa:	00c31963          	bne	t1,a2,e881640c <putRData+0x380>
    e88163fe:	00a7d303          	lhu	t1,10(a5)
    e8816402:	0107d603          	lhu	a2,16(a5)
    e8816406:	00c31363          	bne	t1,a2,e881640c <putRData+0x380>
    e881640a:	4731                	li	a4,12
    e881640c:	9eb9                	addw	a3,a3,a4
        for (opt = &rr->rdata->u.opt[0]; opt < end; opt++) 
    e881640e:	07e1                	addi	a5,a5,24
    e8816410:	bd8d                	j	e8816282 <putRData+0x1f6>
            LogMsg("ERROR: putOptRData - out of space"); 
    e8816412:	0008d597          	auipc	a1,0x8d
    e8816416:	fe658593          	addi	a1,a1,-26 # e88a33f8 <onesIPv6Addr+0xe0>
    e881641a:	4501                	li	a0,0
    e881641c:	090190ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return mDNSNULL; 
    e8816420:	b729                	j	e881632a <putRData+0x29e>
    e8816422:	07878863          	beq	a5,s8,e8816492 <putRData+0x406>
    e8816426:	ef579ae3          	bne	a5,s5,e881631a <putRData+0x28e>
                *ptr++ = opt->u.tracer.platf;
    e881642a:	0044c783          	lbu	a5,4(s1)
                ptr    = putVal32(ptr, opt->u.tracer.mDNSv);
    e881642e:	00590513          	addi	a0,s2,5
                *ptr++ = opt->u.tracer.platf;
    e8816432:	00f90223          	sb	a5,4(s2)
                ptr    = putVal32(ptr, opt->u.tracer.mDNSv);
    e8816436:	448c                	lw	a1,8(s1)
    e8816438:	a0b1                	j	e8816484 <putRData+0x3f8>
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e881643a:	0044d783          	lhu	a5,4(s1)
                mDNSPlatformMemCopy(ptr, opt->u.llq.id.b, 8);                          // 8-byte id
    e881643e:	00c48593          	addi	a1,s1,12
    e8816442:	00a90513          	addi	a0,s2,10
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e8816446:	0087971b          	slliw	a4,a5,0x8
    e881644a:	5c87b78b          	extu	a5,a5,23,8
    e881644e:	8fd9                	or	a5,a5,a4
    e8816450:	00f91223          	sh	a5,4(s2)
    e8816454:	0064d783          	lhu	a5,6(s1)
                mDNSPlatformMemCopy(ptr, opt->u.llq.id.b, 8);                          // 8-byte id
    e8816458:	4621                	li	a2,8
    ptr[0] = (mDNSu8)((val >> 8 ) & 0xFF);
    e881645a:	0087971b          	slliw	a4,a5,0x8
    e881645e:	5c87b78b          	extu	a5,a5,23,8
    e8816462:	8fd9                	or	a5,a5,a4
    e8816464:	00f91323          	sh	a5,6(s2)
    e8816468:	0084d783          	lhu	a5,8(s1)
    e881646c:	0087971b          	slliw	a4,a5,0x8
    e8816470:	5c87b78b          	extu	a5,a5,23,8
    e8816474:	8fd9                	or	a5,a5,a4
    e8816476:	00f91423          	sh	a5,8(s2)
                mDNSPlatformMemCopy(ptr, opt->u.llq.id.b, 8);                          // 8-byte id
    e881647a:	626190ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                ptr = putVal32(ptr, opt->u.llq.llqlease);
    e881647e:	48cc                	lw	a1,20(s1)
    e8816480:	01290513          	addi	a0,s2,18
                ptr    = putVal32(ptr, opt->u.tracer.mDNSv);
    e8816484:	8fbfc0ef          	jal	ra,e8812d7e <putVal32>
    e8816488:	89aa                	mv	s3,a0
                break;
    e881648a:	bd41                	j	e881631a <putRData+0x28e>
                ptr = putVal32(ptr, opt->u.updatelease);
    e881648c:	40cc                	lw	a1,4(s1)
    e881648e:	854e                	mv	a0,s3
    e8816490:	bfd5                	j	e8816484 <putRData+0x3f8>
                *ptr++ = opt->u.owner.vers;
    e8816492:	0044c783          	lbu	a5,4(s1)
                mDNSPlatformMemCopy(ptr, opt->u.owner.HMAC.b, 6);                          // 6-byte Host identifier
    e8816496:	4619                	li	a2,6
    e8816498:	00648593          	addi	a1,s1,6
                *ptr++ = opt->u.owner.vers;
    e881649c:	00f90223          	sb	a5,4(s2)
                *ptr++ = opt->u.owner.seq;
    e88164a0:	0054c783          	lbu	a5,5(s1)
                mDNSPlatformMemCopy(ptr, opt->u.owner.HMAC.b, 6);                          // 6-byte Host identifier
    e88164a4:	00690513          	addi	a0,s2,6
                ptr += 6;
    e88164a8:	00c90993          	addi	s3,s2,12
                *ptr++ = opt->u.owner.seq;
    e88164ac:	00f902a3          	sb	a5,5(s2)
                mDNSPlatformMemCopy(ptr, opt->u.owner.HMAC.b, 6);                          // 6-byte Host identifier
    e88164b0:	5f0190ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                if (space >= DNSOpt_OwnerData_ID_Wake_Space)
    e88164b4:	47c5                	li	a5,17
    e88164b6:	e687d2e3          	bge	a5,s0,e881631a <putRData+0x28e>
                    mDNSPlatformMemCopy(ptr, opt->u.owner.IMAC.b, 6);                           // 6-byte interface MAC
    e88164ba:	854e                	mv	a0,s3
    e88164bc:	4619                	li	a2,6
    e88164be:	00c48593          	addi	a1,s1,12
    e88164c2:	5de190ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                    ptr += 6;
    e88164c6:	01290993          	addi	s3,s2,18
                    if (space > DNSOpt_OwnerData_ID_Wake_Space)
    e88164ca:	47c9                	li	a5,18
    e88164cc:	e4f407e3          	beq	s0,a5,e881631a <putRData+0x28e>
                        mDNSPlatformMemCopy(ptr, opt->u.owner.password.b, space - DNSOpt_OwnerData_ID_Wake_Space);
    e88164d0:	fee4061b          	addiw	a2,s0,-18
    e88164d4:	854e                	mv	a0,s3
    e88164d6:	01248593          	addi	a1,s1,18
                        ptr += space - DNSOpt_OwnerData_ID_Wake_Space;
    e88164da:	1439                	addi	s0,s0,-18
                        mDNSPlatformMemCopy(ptr, opt->u.owner.password.b, space - DNSOpt_OwnerData_ID_Wake_Space);
    e88164dc:	5c4190ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                        ptr += space - DNSOpt_OwnerData_ID_Wake_Space;
    e88164e0:	99a2                	add	s3,s3,s0
    e88164e2:	bd25                	j	e881631a <putRData+0x28e>
        mDNSu8 *nsec = (mDNSu8 *)rdb->data;
    e88164e4:	00448b13          	addi	s6,s1,4
        const int dlen = DomainNameLength(name);
    e88164e8:	10448593          	addi	a1,s1,260
    e88164ec:	855a                	mv	a0,s6
    e88164ee:	c5ffc0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88164f2:	84aa                	mv	s1,a0
        nsec += dlen;
    e88164f4:	00ab0ab3          	add	s5,s6,a0
        if (!UNICAST_NSEC(rr))
    e88164f8:	02f00593          	li	a1,47
    e88164fc:	8552                	mv	a0,s4
    e88164fe:	d57fd0ef          	jal	ra,e8814254 <RRAssertsExistence>
    e8816502:	e95d                	bnez	a0,e88165b8 <putRData+0x52c>
            nsec += 2;                     // Skip the window number and len
    e8816504:	001ac783          	lbu	a5,1(s5)
    e8816508:	002a8713          	addi	a4,s5,2
            for (i=wlen; i>0; i--) if (nsec[i-1]) break;
    e881650c:	0007849b          	sext.w	s1,a5
    e8816510:	e399                	bnez	a5,e8816516 <putRData+0x48a>
    e8816512:	4481                	li	s1,0
    e8816514:	a029                	j	e881651e <putRData+0x492>
    e8816516:	17fd                	addi	a5,a5,-1
    e8816518:	80f7468b          	lrbu	a3,a4,a5,0
    e881651c:	dae5                	beqz	a3,e881650c <putRData+0x480>
            ptr = putDomainNameAsLabels(msg, ptr, limit, rr->name);
    e881651e:	020a3683          	ld	a3,32(s4)
    e8816522:	854a                	mv	a0,s2
    e8816524:	864e                	mv	a2,s3
    e8816526:	85a2                	mv	a1,s0
    e8816528:	9e4fe0ef          	jal	ra,e881470c <putDomainNameAsLabels>
    e881652c:	892a                	mv	s2,a0
            if (!ptr) { LogInfo("putRData: Can't put name, Length %d, record %##s", limit - save, rr->name->c); return(mDNSNULL); }
    e881652e:	e505                	bnez	a0,e8816556 <putRData+0x4ca>
    e8816530:	000be797          	auipc	a5,0xbe
    e8816534:	54478793          	addi	a5,a5,1348 # e88d4a74 <mDNS_LoggingEnabled>
    e8816538:	439c                	lw	a5,0(a5)
    e881653a:	de0788e3          	beqz	a5,e881632a <putRData+0x29e>
    e881653e:	020a3683          	ld	a3,32(s4)
    e8816542:	40898633          	sub	a2,s3,s0
    e8816546:	0008d597          	auipc	a1,0x8d
    e881654a:	eda58593          	addi	a1,a1,-294 # e88a3420 <onesIPv6Addr+0x108>
    e881654e:	450d                	li	a0,3
    e8816550:	75d180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8816554:	b509                	j	e8816356 <putRData+0x2ca>
            if (i)                          // Only put a block if at least one type exists for this name
    e8816556:	e00480e3          	beqz	s1,e8816356 <putRData+0x2ca>
                if (ptr + 2 + i > limit) { LogInfo("putRData: Can't put window, Length %d, i %d, record %##s", limit - ptr, i, rr->name->c); return(mDNSNULL); }
    e881655a:	00248793          	addi	a5,s1,2
    e881655e:	97aa                	add	a5,a5,a0
    e8816560:	02f9f663          	bgeu	s3,a5,e881658c <putRData+0x500>
    e8816564:	000be797          	auipc	a5,0xbe
    e8816568:	51078793          	addi	a5,a5,1296 # e88d4a74 <mDNS_LoggingEnabled>
    e881656c:	439c                	lw	a5,0(a5)
    e881656e:	da078ee3          	beqz	a5,e881632a <putRData+0x29e>
    e8816572:	020a3703          	ld	a4,32(s4)
    e8816576:	40a98633          	sub	a2,s3,a0
    e881657a:	86a6                	mv	a3,s1
    e881657c:	0008d597          	auipc	a1,0x8d
    e8816580:	edc58593          	addi	a1,a1,-292 # e88a3458 <onesIPv6Addr+0x140>
    e8816584:	450d                	li	a0,3
    e8816586:	727180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881658a:	b345                	j	e881632a <putRData+0x29e>
                *ptr++ = 0;
    e881658c:	872a                	mv	a4,a0
    e881658e:	1827500b          	sbia	zero,(a4),2,0
                *ptr++ = (mDNSu8)i;
    e8816592:	4789                	li	a5,2
    e8816594:	009500a3          	sb	s1,1(a0)
                for (j=0; j<i; j++) *ptr++ = nsec[j];
    e8816598:	80fac68b          	lrbu	a3,s5,a5,0
    e881659c:	00f9568b          	srb	a3,s2,a5,0
    e88165a0:	0785                	addi	a5,a5,1
    e88165a2:	ffe7869b          	addiw	a3,a5,-2
    e88165a6:	fe96c9e3          	blt	a3,s1,e8816598 <putRData+0x50c>
    e88165aa:	fff4891b          	addiw	s2,s1,-1
    e88165ae:	7c09390b          	extu	s2,s2,31,0
    e88165b2:	0905                	addi	s2,s2,1
    e88165b4:	993a                	add	s2,s2,a4
    e88165b6:	b345                	j	e8816356 <putRData+0x2ca>
            int len = rr->rdlength - dlen;
    e88165b8:	00ca5603          	lhu	a2,12(s4)
                if (len < 3)
    e88165bc:	4709                	li	a4,2
                if (len < wlen || wlen < 1 || wlen > 32)
    e88165be:	02000693          	li	a3,32
            int len = rr->rdlength - dlen;
    e88165c2:	4096053b          	subw	a0,a2,s1
            while (len)
    e88165c6:	e91d                	bnez	a0,e88165fc <putRData+0x570>
            if (ptr + rr->rdlength > limit) { LogMsg("putRData: NSEC rdlength beyond limit %##s (%s), ptr %p, rdlength %d, limit %p", rr->name->c, DNSTypeName(rr->rrtype), ptr, rr->rdlength, limit); return(mDNSNULL);}
    e88165c8:	00c407b3          	add	a5,s0,a2
            mDNSPlatformMemCopy(ptr, rdb->data, rr->rdlength);
    e88165cc:	85da                	mv	a1,s6
            if (ptr + rr->rdlength > limit) { LogMsg("putRData: NSEC rdlength beyond limit %##s (%s), ptr %p, rdlength %d, limit %p", rr->name->c, DNSTypeName(rr->rrtype), ptr, rr->rdlength, limit); return(mDNSNULL);}
    e88165ce:	b0f9ffe3          	bgeu	s3,a5,e88160ec <putRData+0x60>
    e88165d2:	020a3603          	ld	a2,32(s4)
    e88165d6:	002a5503          	lhu	a0,2(s4)
    e88165da:	e432                	sd	a2,8(sp)
    e88165dc:	e84ff0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88165e0:	86aa                	mv	a3,a0
    e88165e2:	00ca5783          	lhu	a5,12(s4)
    e88165e6:	6622                	ld	a2,8(sp)
    e88165e8:	884e                	mv	a6,s3
    e88165ea:	8722                	mv	a4,s0
    e88165ec:	0008d597          	auipc	a1,0x8d
    e88165f0:	ef458593          	addi	a1,a1,-268 # e88a34e0 <onesIPv6Addr+0x1c8>
    e88165f4:	4501                	li	a0,0
    e88165f6:	6b7180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88165fa:	bb05                	j	e881632a <putRData+0x29e>
                if (len < 3)
    e88165fc:	00a74b63          	blt	a4,a0,e8816612 <putRData+0x586>
                { LogMsg("putRData: invalid length %d", len); return mDNSNULL; }
    e8816600:	862a                	mv	a2,a0
    e8816602:	0008d597          	auipc	a1,0x8d
    e8816606:	e9658593          	addi	a1,a1,-362 # e88a3498 <onesIPv6Addr+0x180>
                { LogMsg("putRData: invalid window length %d", wlen); return mDNSNULL; }
    e881660a:	4501                	li	a0,0
    e881660c:	6a1180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8816610:	bb29                	j	e881632a <putRData+0x29e>
                wlen = *nsec++;
    e8816612:	002a8593          	addi	a1,s5,2
    e8816616:	001aca83          	lbu	s5,1(s5)
                len -= 2;
    e881661a:	ffe5081b          	addiw	a6,a0,-2
                wlen = *nsec++;
    e881661e:	87d6                	mv	a5,s5
                if (len < wlen || wlen < 1 || wlen > 32)
    e8816620:	01584663          	blt	a6,s5,e881662c <putRData+0x5a0>
    e8816624:	000a8463          	beqz	s5,e881662c <putRData+0x5a0>
    e8816628:	0156d863          	bge	a3,s5,e8816638 <putRData+0x5ac>
                { LogMsg("putRData: invalid window length %d", wlen); return mDNSNULL; }
    e881662c:	863e                	mv	a2,a5
    e881662e:	0008d597          	auipc	a1,0x8d
    e8816632:	e8a58593          	addi	a1,a1,-374 # e88a34b8 <onesIPv6Addr+0x1a0>
    e8816636:	bfd1                	j	e881660a <putRData+0x57e>
                nsec += wlen;
    e8816638:	9aae                	add	s5,s5,a1
                len -= wlen;
    e881663a:	40f8053b          	subw	a0,a6,a5
    e881663e:	b761                	j	e88165c6 <putRData+0x53a>

00000000e8816640 <PutResourceRecordTTLWithLimit>:
{
    e8816640:	715d                	addi	sp,sp,-80
    e8816642:	e0a2                	sd	s0,64(sp)
    e8816644:	f84a                	sd	s2,48(sp)
    e8816646:	f44e                	sd	s3,40(sp)
    e8816648:	f052                	sd	s4,32(sp)
    e881664a:	ec56                	sd	s5,24(sp)
    e881664c:	e486                	sd	ra,72(sp)
    e881664e:	fc26                	sd	s1,56(sp)
    e8816650:	e85a                	sd	s6,16(sp)
    e8816652:	89be                	mv	s3,a5
    const DNSMessage *const rdatacompressionbase = (IsUnicastUpdate(msg) && rr->rrtype == kDNSType_SRV) ? mDNSNULL : msg;
    e8816654:	00055783          	lhu	a5,0(a0)
{
    e8816658:	892e                	mv	s2,a1
    e881665a:	8ab2                	mv	s5,a2
    e881665c:	8436                	mv	s0,a3
    const DNSMessage *const rdatacompressionbase = (IsUnicastUpdate(msg) && rr->rrtype == kDNSType_SRV) ? mDNSNULL : msg;
    e881665e:	8a2a                	mv	s4,a0
    e8816660:	c385                	beqz	a5,e8816680 <PutResourceRecordTTLWithLimit+0x40>
    e8816662:	00254783          	lbu	a5,2(a0)
    e8816666:	02800693          	li	a3,40
    e881666a:	0787f793          	andi	a5,a5,120
    e881666e:	00d79963          	bne	a5,a3,e8816680 <PutResourceRecordTTLWithLimit+0x40>
    e8816672:	00245683          	lhu	a3,2(s0) # 10002 <memcmp-0xe87efffe>
    e8816676:	02100793          	li	a5,33
    e881667a:	00f69363          	bne	a3,a5,e8816680 <PutResourceRecordTTLWithLimit+0x40>
    e881667e:	4a01                	li	s4,0
    if (rr->RecordType == kDNSRecordTypeUnregistered)
    e8816680:	00044783          	lbu	a5,0(s0)
    e8816684:	7010                	ld	a2,32(s0)
    e8816686:	e385                	bnez	a5,e88166a6 <PutResourceRecordTTLWithLimit+0x66>
        LogMsg("PutResourceRecordTTLWithLimit ERROR! Attempt to put kDNSRecordTypeUnregistered %##s (%s)", rr->name->c, DNSTypeName(rr->rrtype));
    e8816688:	00245503          	lhu	a0,2(s0)
    e881668c:	e432                	sd	a2,8(sp)
    e881668e:	dd2ff0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8816692:	86aa                	mv	a3,a0
    e8816694:	6622                	ld	a2,8(sp)
    e8816696:	0008c597          	auipc	a1,0x8c
    e881669a:	f4258593          	addi	a1,a1,-190 # e88a25d8 <NATPMPPort+0x70>
    else LogMsg("PutResourceRecordTTL: ERROR: No target count to update for %##s (%s)", rr->name->c, DNSTypeName(rr->rrtype));
    e881669e:	4501                	li	a0,0
    e88166a0:	60d180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88166a4:	a099                	j	e88166ea <PutResourceRecordTTLWithLimit+0xaa>
    if (!ptr)
    e88166a6:	00091e63          	bnez	s2,e88166c2 <PutResourceRecordTTLWithLimit+0x82>
        LogMsg("PutResourceRecordTTLWithLimit ptr is null %##s (%s)", rr->name->c, DNSTypeName(rr->rrtype));
    e88166aa:	00245503          	lhu	a0,2(s0)
    e88166ae:	e432                	sd	a2,8(sp)
    e88166b0:	db0ff0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88166b4:	86aa                	mv	a3,a0
    e88166b6:	6622                	ld	a2,8(sp)
    e88166b8:	0008c597          	auipc	a1,0x8c
    e88166bc:	f8058593          	addi	a1,a1,-128 # e88a2638 <NATPMPPort+0xd0>
    e88166c0:	bff9                	j	e881669e <PutResourceRecordTTLWithLimit+0x5e>
    ptr = putDomainNameAsLabels(msg, ptr, limit, rr->name);
    e88166c2:	86b2                	mv	a3,a2
    e88166c4:	85ca                	mv	a1,s2
    e88166c6:	864e                	mv	a2,s3
    e88166c8:	e43a                	sd	a4,8(sp)
    e88166ca:	842fe0ef          	jal	ra,e881470c <putDomainNameAsLabels>
    e88166ce:	84aa                	mv	s1,a0
    if (!ptr || ptr + 10 >= limit)
    e88166d0:	c511                	beqz	a0,e88166dc <PutResourceRecordTTLWithLimit+0x9c>
    e88166d2:	00a50b13          	addi	s6,a0,10
    e88166d6:	6722                	ld	a4,8(sp)
    e88166d8:	053b6663          	bltu	s6,s3,e8816724 <PutResourceRecordTTLWithLimit+0xe4>
        LogInfo("PutResourceRecordTTLWithLimit: can't put name, out of space %##s (%s), ptr %p, limit %p", rr->name->c,
    e88166dc:	000be797          	auipc	a5,0xbe
    e88166e0:	39878793          	addi	a5,a5,920 # e88d4a74 <mDNS_LoggingEnabled>
    e88166e4:	439c                	lw	a5,0(a5)
    e88166e6:	ef89                	bnez	a5,e8816700 <PutResourceRecordTTLWithLimit+0xc0>
        return(mDNSNULL);
    e88166e8:	4901                	li	s2,0
}
    e88166ea:	60a6                	ld	ra,72(sp)
    e88166ec:	6406                	ld	s0,64(sp)
    e88166ee:	854a                	mv	a0,s2
    e88166f0:	74e2                	ld	s1,56(sp)
    e88166f2:	7942                	ld	s2,48(sp)
    e88166f4:	79a2                	ld	s3,40(sp)
    e88166f6:	7a02                	ld	s4,32(sp)
    e88166f8:	6ae2                	ld	s5,24(sp)
    e88166fa:	6b42                	ld	s6,16(sp)
    e88166fc:	6161                	addi	sp,sp,80
    e88166fe:	8082                	ret
        LogInfo("PutResourceRecordTTLWithLimit: can't put name, out of space %##s (%s), ptr %p, limit %p", rr->name->c,
    e8816700:	7010                	ld	a2,32(s0)
    e8816702:	00245503          	lhu	a0,2(s0)
    e8816706:	e432                	sd	a2,8(sp)
    e8816708:	d58ff0ef          	jal	ra,e8815c60 <DNSTypeName>
    e881670c:	86aa                	mv	a3,a0
    e881670e:	6622                	ld	a2,8(sp)
    e8816710:	87ce                	mv	a5,s3
    e8816712:	8726                	mv	a4,s1
    e8816714:	0008c597          	auipc	a1,0x8c
    e8816718:	f5c58593          	addi	a1,a1,-164 # e88a2670 <NATPMPPort+0x108>
    e881671c:	450d                	li	a0,3
    e881671e:	58f180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8816722:	b7d9                	j	e88166e8 <PutResourceRecordTTLWithLimit+0xa8>
    ptr[0] = (mDNSu8)(rr->rrtype  >> 8);
    e8816724:	00245783          	lhu	a5,2(s0)
    e8816728:	9007170b          	revw	a4,a4
    endofrdata = putRData(rdatacompressionbase, ptr+10, limit, rr);
    e881672c:	86a2                	mv	a3,s0
    ptr[0] = (mDNSu8)(rr->rrtype  >> 8);
    e881672e:	0087d79b          	srliw	a5,a5,0x8
    e8816732:	00f50023          	sb	a5,0(a0)
    ptr[1] = (mDNSu8)(rr->rrtype  &  0xFF);
    e8816736:	00245783          	lhu	a5,2(s0)
    endofrdata = putRData(rdatacompressionbase, ptr+10, limit, rr);
    e881673a:	864e                	mv	a2,s3
    e881673c:	85da                	mv	a1,s6
    ptr[1] = (mDNSu8)(rr->rrtype  &  0xFF);
    e881673e:	00f500a3          	sb	a5,1(a0)
    ptr[2] = (mDNSu8)(rr->rrclass >> 8);
    e8816742:	00445783          	lhu	a5,4(s0)
    e8816746:	0087d79b          	srliw	a5,a5,0x8
    e881674a:	00f50123          	sb	a5,2(a0)
    ptr[3] = (mDNSu8)(rr->rrclass &  0xFF);
    e881674e:	00445783          	lhu	a5,4(s0)
    ptr[4] = (mDNSu8)((ttl >> 24) &  0xFF);
    e8816752:	c158                	sw	a4,4(a0)
    ptr[3] = (mDNSu8)(rr->rrclass &  0xFF);
    e8816754:	00f501a3          	sb	a5,3(a0)
    endofrdata = putRData(rdatacompressionbase, ptr+10, limit, rr);
    e8816758:	8552                	mv	a0,s4
    e881675a:	933ff0ef          	jal	ra,e881608c <putRData>
    e881675e:	892a                	mv	s2,a0
    if (!endofrdata)
    e8816760:	e90d                	bnez	a0,e8816792 <PutResourceRecordTTLWithLimit+0x152>
        LogInfo("PutResourceRecordTTLWithLimit: Ran out of space in PutResourceRecord for %##s (%s), ptr %p, limit %p", rr->name->c,
    e8816762:	000be797          	auipc	a5,0xbe
    e8816766:	31278793          	addi	a5,a5,786 # e88d4a74 <mDNS_LoggingEnabled>
    e881676a:	439c                	lw	a5,0(a5)
    e881676c:	dfb5                	beqz	a5,e88166e8 <PutResourceRecordTTLWithLimit+0xa8>
    e881676e:	7010                	ld	a2,32(s0)
    e8816770:	00245503          	lhu	a0,2(s0)
    e8816774:	e432                	sd	a2,8(sp)
    e8816776:	ceaff0ef          	jal	ra,e8815c60 <DNSTypeName>
    e881677a:	86aa                	mv	a3,a0
    e881677c:	6622                	ld	a2,8(sp)
    e881677e:	87ce                	mv	a5,s3
    e8816780:	875a                	mv	a4,s6
    e8816782:	0008c597          	auipc	a1,0x8c
    e8816786:	f4658593          	addi	a1,a1,-186 # e88a26c8 <NATPMPPort+0x160>
    e881678a:	450d                	li	a0,3
    e881678c:	521180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8816790:	bfa9                	j	e88166ea <PutResourceRecordTTLWithLimit+0xaa>
    actualLength = (mDNSu16)(endofrdata - ptr - 10);
    e8816792:	409507b3          	sub	a5,a0,s1
    e8816796:	37d9                	addiw	a5,a5,-10
    ptr[8] = (mDNSu8)(actualLength >> 8);
    e8816798:	3c87b70b          	extu	a4,a5,15,8
    e881679c:	0087979b          	slliw	a5,a5,0x8
    e88167a0:	8fd9                	or	a5,a5,a4
    e88167a2:	00f49423          	sh	a5,8(s1)
    if (count) (*count)++;
    e88167a6:	000a8863          	beqz	s5,e88167b6 <PutResourceRecordTTLWithLimit+0x176>
    e88167aa:	000ad783          	lhu	a5,0(s5)
    e88167ae:	2785                	addiw	a5,a5,1
    e88167b0:	00fa9023          	sh	a5,0(s5)
    e88167b4:	bf1d                	j	e88166ea <PutResourceRecordTTLWithLimit+0xaa>
    else LogMsg("PutResourceRecordTTL: ERROR: No target count to update for %##s (%s)", rr->name->c, DNSTypeName(rr->rrtype));
    e88167b6:	7010                	ld	a2,32(s0)
    e88167b8:	00245503          	lhu	a0,2(s0)
    e88167bc:	e432                	sd	a2,8(sp)
    e88167be:	ca2ff0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88167c2:	86aa                	mv	a3,a0
    e88167c4:	6622                	ld	a2,8(sp)
    e88167c6:	0008c597          	auipc	a1,0x8c
    e88167ca:	f6a58593          	addi	a1,a1,-150 # e88a2730 <NATPMPPort+0x1c8>
    e88167ce:	bdc1                	j	e881669e <PutResourceRecordTTLWithLimit+0x5e>

00000000e88167d0 <putDeletionRecordWithLimit>:
{
    e88167d0:	1101                	addi	sp,sp,-32
    e88167d2:	e422                	sd	s0,8(sp)
    e88167d4:	ec06                	sd	ra,24(sp)
    e88167d6:	e826                	sd	s1,16(sp)
    rr->rrclass = kDNSClass_NONE;
    e88167d8:	0fe00793          	li	a5,254
    const mDNSu16 origclass = rr->rrclass;
    e88167dc:	00465483          	lhu	s1,4(a2)
{
    e88167e0:	8432                	mv	s0,a2
    rr->rrclass = kDNSClass_NONE;
    e88167e2:	00f61223          	sh	a5,4(a2)
    ptr = PutResourceRecordTTLWithLimit(msg, ptr, &msg->h.mDNS_numUpdates, rr, 0, limit);
    e88167e6:	4701                	li	a4,0
    e88167e8:	87b6                	mv	a5,a3
    e88167ea:	86b2                	mv	a3,a2
    e88167ec:	00850613          	addi	a2,a0,8
    e88167f0:	e51ff0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    rr->rrclass = origclass;
    e88167f4:	00941223          	sh	s1,4(s0)
}
    e88167f8:	60e2                	ld	ra,24(sp)
    e88167fa:	6422                	ld	s0,8(sp)
    e88167fc:	64c2                	ld	s1,16(sp)
    e88167fe:	6105                	addi	sp,sp,32
    e8816800:	8082                	ret

00000000e8816802 <putUpdateLeaseWithLimit>:
{
    e8816802:	bb010113          	addi	sp,sp,-1104
    mDNS_SetupResourceRecord(&rr, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e8816806:	6705                	lui	a4,0x1
{
    e8816808:	44813023          	sd	s0,1088(sp)
    e881680c:	42913c23          	sd	s1,1080(sp)
    e8816810:	842a                	mv	s0,a0
    e8816812:	43213823          	sd	s2,1072(sp)
    e8816816:	43313423          	sd	s3,1064(sp)
    e881681a:	84ae                	mv	s1,a1
    e881681c:	89b2                	mv	s3,a2
    e881681e:	8936                	mv	s2,a3
    mDNS_SetupResourceRecord(&rr, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e8816820:	4881                	li	a7,0
    e8816822:	4801                	li	a6,0
    e8816824:	02000793          	li	a5,32
    e8816828:	19470713          	addi	a4,a4,404 # 1194 <memcmp-0xe87fee6c>
    e881682c:	02900693          	li	a3,41
    e8816830:	4601                	li	a2,0
    e8816832:	4581                	li	a1,0
    e8816834:	0808                	addi	a0,sp,16
    e8816836:	e002                	sd	zero,0(sp)
{
    e8816838:	44113423          	sd	ra,1096(sp)
    mDNS_SetupResourceRecord(&rr, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e881683c:	d8efd0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    rr.resrec.rrclass    = NormalMaxDNSMessageData;
    e8816840:	5a000793          	li	a5,1440
    e8816844:	00f11e23          	sh	a5,28(sp)
    rr.resrec.rdlength   = sizeof(rdataOPT);    // One option in this OPT record
    e8816848:	001807b7          	lui	a5,0x180
    e881684c:	27e1                	addiw	a5,a5,24
    e881684e:	d23e                	sw	a5,36(sp)
    rr.resrec.rdata->u.opt[0].opt           = kDNSOpt_Lease;
    e8816850:	6786                	ld	a5,64(sp)
    e8816852:	4709                	li	a4,2
    ptr = PutResourceRecordTTLWithLimit(msg, ptr, &msg->h.numAdditionals, &rr.resrec, 0, limit);
    e8816854:	00a40613          	addi	a2,s0,10
    rr.resrec.rdata->u.opt[0].opt           = kDNSOpt_Lease;
    e8816858:	00e79223          	sh	a4,4(a5) # 180004 <memcmp-0xe867fffc>
    rr.resrec.rdata->u.opt[0].u.updatelease = lease;
    e881685c:	6786                	ld	a5,64(sp)
    ptr = PutResourceRecordTTLWithLimit(msg, ptr, &msg->h.numAdditionals, &rr.resrec, 0, limit);
    e881685e:	8522                	mv	a0,s0
    e8816860:	4701                	li	a4,0
    rr.resrec.rdata->u.opt[0].u.updatelease = lease;
    e8816862:	0137a423          	sw	s3,8(a5)
    ptr = PutResourceRecordTTLWithLimit(msg, ptr, &msg->h.numAdditionals, &rr.resrec, 0, limit);
    e8816866:	0834                	addi	a3,sp,24
    e8816868:	87ca                	mv	a5,s2
    e881686a:	85a6                	mv	a1,s1
    e881686c:	dd5ff0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e8816870:	842a                	mv	s0,a0
    if (!ptr) { LogMsg("ERROR: putUpdateLeaseWithLimit - PutResourceRecordTTLWithLimit"); return mDNSNULL; }
    e8816872:	e519                	bnez	a0,e8816880 <putUpdateLeaseWithLimit+0x7e>
    e8816874:	0008d597          	auipc	a1,0x8d
    e8816878:	cbc58593          	addi	a1,a1,-836 # e88a3530 <onesIPv6Addr+0x218>
    e881687c:	431180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8816880:	8522                	mv	a0,s0
    e8816882:	44813083          	ld	ra,1096(sp)
    e8816886:	44013403          	ld	s0,1088(sp)
    e881688a:	43813483          	ld	s1,1080(sp)
    e881688e:	43013903          	ld	s2,1072(sp)
    e8816892:	42813983          	ld	s3,1064(sp)
    e8816896:	45010113          	addi	sp,sp,1104
    e881689a:	8082                	ret

00000000e881689c <putDNSSECOption>:
{
    e881689c:	bb010113          	addi	sp,sp,-1104
    e88168a0:	42913c23          	sd	s1,1080(sp)
    mDNS_SetupResourceRecord(&rr, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e88168a4:	6485                	lui	s1,0x1
{
    e88168a6:	44813023          	sd	s0,1088(sp)
    e88168aa:	43213823          	sd	s2,1072(sp)
    e88168ae:	842a                	mv	s0,a0
    e88168b0:	43313423          	sd	s3,1064(sp)
    e88168b4:	892e                	mv	s2,a1
    e88168b6:	89b2                	mv	s3,a2
    mDNS_SetupResourceRecord(&rr, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e88168b8:	4881                	li	a7,0
    e88168ba:	4801                	li	a6,0
    e88168bc:	02000793          	li	a5,32
    e88168c0:	19448713          	addi	a4,s1,404 # 1194 <memcmp-0xe87fee6c>
    e88168c4:	02900693          	li	a3,41
    e88168c8:	4601                	li	a2,0
    e88168ca:	4581                	li	a1,0
    e88168cc:	0808                	addi	a0,sp,16
    e88168ce:	e002                	sd	zero,0(sp)
{
    e88168d0:	44113423          	sd	ra,1096(sp)
    mDNS_SetupResourceRecord(&rr, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e88168d4:	cf6fd0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    rr.resrec.rrclass    = 4096;
    e88168d8:	00911e23          	sh	s1,28(sp)
    end = PutResourceRecordTTLWithLimit(msg, end, &msg->h.numAdditionals, &rr.resrec, ttl, limit);
    e88168dc:	00a40613          	addi	a2,s0,10
    e88168e0:	8522                	mv	a0,s0
    e88168e2:	87ce                	mv	a5,s3
    e88168e4:	6721                	lui	a4,0x8
    e88168e6:	0834                	addi	a3,sp,24
    e88168e8:	85ca                	mv	a1,s2
    rr.resrec.rdlength   = 0;
    e88168ea:	d202                	sw	zero,36(sp)
    end = PutResourceRecordTTLWithLimit(msg, end, &msg->h.numAdditionals, &rr.resrec, ttl, limit);
    e88168ec:	d55ff0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e88168f0:	842a                	mv	s0,a0
    if (!end) { LogMsg("ERROR: putDNSSECOption - PutResourceRecordTTLWithLimit"); return mDNSNULL; }
    e88168f2:	e519                	bnez	a0,e8816900 <putDNSSECOption+0x64>
    e88168f4:	0008d597          	auipc	a1,0x8d
    e88168f8:	a3458593          	addi	a1,a1,-1484 # e88a3328 <onesIPv6Addr+0x10>
    e88168fc:	3b1180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8816900:	8522                	mv	a0,s0
    e8816902:	44813083          	ld	ra,1096(sp)
    e8816906:	44013403          	ld	s0,1088(sp)
    e881690a:	43813483          	ld	s1,1080(sp)
    e881690e:	43013903          	ld	s2,1072(sp)
    e8816912:	42813983          	ld	s3,1064(sp)
    e8816916:	45010113          	addi	sp,sp,1104
    e881691a:	8082                	ret

00000000e881691c <putHINFO.part.5>:
mDNSexport mDNSu8 *putHINFO(const mDNS *const m, DNSMessage *const msg, mDNSu8 *end, DomainAuthInfo *authInfo, mDNSu8 *limit)
    e881691c:	b9010113          	addi	sp,sp,-1136
    e8816920:	44913c23          	sd	s1,1112(sp)
        mDNSu16 len = 2 + m->HIHardware.c[0] + m->HISoftware.c[0];
    e8816924:	648d                	lui	s1,0x3
mDNSexport mDNSu8 *putHINFO(const mDNS *const m, DNSMessage *const msg, mDNSu8 *end, DomainAuthInfo *authInfo, mDNSu8 *limit)
    e8816926:	45313423          	sd	s3,1096(sp)
        mDNSu16 len = 2 + m->HIHardware.c[0] + m->HISoftware.c[0];
    e881692a:	009509b3          	add	s3,a0,s1
mDNSexport mDNSu8 *putHINFO(const mDNS *const m, DNSMessage *const msg, mDNSu8 *end, DomainAuthInfo *authInfo, mDNSu8 *limit)
    e881692e:	46113423          	sd	ra,1128(sp)
    e8816932:	45213823          	sd	s2,1104(sp)
    e8816936:	45413023          	sd	s4,1088(sp)
    e881693a:	43513c23          	sd	s5,1080(sp)
    e881693e:	43613823          	sd	s6,1072(sp)
    e8816942:	43713423          	sd	s7,1064(sp)
    e8816946:	46813023          	sd	s0,1120(sp)
        mDNSu16 len = 2 + m->HIHardware.c[0] + m->HISoftware.c[0];
    e881694a:	ca89c783          	lbu	a5,-856(s3)
    e881694e:	ba89c403          	lbu	s0,-1112(s3)
        mDNS_SetupResourceRecord(&hinfo, mDNSNULL, mDNSInterface_Any, kDNSType_HINFO, 0, kDNSRecordTypeUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e8816952:	4881                	li	a7,0
    e8816954:	4801                	li	a6,0
mDNSexport mDNSu8 *putHINFO(const mDNS *const m, DNSMessage *const msg, mDNSu8 *end, DomainAuthInfo *authInfo, mDNSu8 *limit)
    e8816956:	892a                	mv	s2,a0
    e8816958:	8a2e                	mv	s4,a1
    e881695a:	8ab2                	mv	s5,a2
    e881695c:	8bb6                	mv	s7,a3
        mDNS_SetupResourceRecord(&hinfo, mDNSNULL, mDNSInterface_Any, kDNSType_HINFO, 0, kDNSRecordTypeUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e881695e:	4601                	li	a2,0
    e8816960:	46b5                	li	a3,13
mDNSexport mDNSu8 *putHINFO(const mDNS *const m, DNSMessage *const msg, mDNSu8 *end, DomainAuthInfo *authInfo, mDNSu8 *limit)
    e8816962:	8b3a                	mv	s6,a4
        mDNS_SetupResourceRecord(&hinfo, mDNSNULL, mDNSInterface_Any, kDNSType_HINFO, 0, kDNSRecordTypeUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e8816964:	0808                	addi	a0,sp,16
    e8816966:	4701                	li	a4,0
        mDNSu16 len = 2 + m->HIHardware.c[0] + m->HISoftware.c[0];
    e8816968:	9c3d                	addw	s0,s0,a5
        mDNS_SetupResourceRecord(&hinfo, mDNSNULL, mDNSInterface_Any, kDNSType_HINFO, 0, kDNSRecordTypeUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e881696a:	e002                	sd	zero,0(sp)
    e881696c:	4789                	li	a5,2
    e881696e:	4581                	li	a1,0
    e8816970:	c5afd0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
        mDNSu16 len = 2 + m->HIHardware.c[0] + m->HISoftware.c[0];
    e8816974:	0409                	addi	s0,s0,2
        AppendDomainLabel(&hinfo.namestorage, &m->hostlabel);
    e8816976:	a6848593          	addi	a1,s1,-1432 # 2a68 <memcmp-0xe87fd598>
    e881697a:	95ca                	add	a1,a1,s2
    e881697c:	0c08                	addi	a0,sp,528
    e881697e:	a5bfc0ef          	jal	ra,e88133d8 <AppendDomainLabel>
        AppendDomainName (&hinfo.namestorage, &authInfo->domain);
    e8816982:	6585                	lui	a1,0x1
    e8816984:	47458593          	addi	a1,a1,1140 # 1474 <memcmp-0xe87feb8c>
    e8816988:	95de                	add	a1,a1,s7
    e881698a:	0c08                	addi	a0,sp,528
    e881698c:	ab1fc0ef          	jal	ra,e881343c <AppendDomainName>
        hinfo.resrec.rroriginalttl = 0;
    e8816990:	d002                	sw	zero,32(sp)
        mDNSPlatformMemCopy(h, &m->HIHardware, 1 + (mDNSu32)m->HIHardware.c[0]);
    e8816992:	ba89c603          	lbu	a2,-1112(s3)
    e8816996:	ba848593          	addi	a1,s1,-1112
    e881699a:	95ca                	add	a1,a1,s2
    e881699c:	0e48                	addi	a0,sp,788
    e881699e:	0605                	addi	a2,a2,1
    e88169a0:	100190ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        h += 1 + (int)h[0];
    e88169a4:	31414503          	lbu	a0,788(sp)
        mDNSPlatformMemCopy(h, &m->HISoftware, 1 + (mDNSu32)m->HISoftware.c[0]);
    e88169a8:	ca89c603          	lbu	a2,-856(s3)
    e88169ac:	0e5c                	addi	a5,sp,788
    e88169ae:	ca848593          	addi	a1,s1,-856
        h += 1 + (int)h[0];
    e88169b2:	0505                	addi	a0,a0,1
        mDNSPlatformMemCopy(h, &m->HISoftware, 1 + (mDNSu32)m->HISoftware.c[0]);
    e88169b4:	95ca                	add	a1,a1,s2
    e88169b6:	953e                	add	a0,a0,a5
    e88169b8:	0605                	addi	a2,a2,1
    e88169ba:	0e6190ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        hinfo.resrec.rdlength   = len;
    e88169be:	02811223          	sh	s0,36(sp)
        newptr = PutResourceRecordTTLWithLimit(msg, end, &msg->h.numAdditionals, &hinfo.resrec, 0, limit);
    e88169c2:	87da                	mv	a5,s6
    e88169c4:	0834                	addi	a3,sp,24
    e88169c6:	00aa0613          	addi	a2,s4,10
    e88169ca:	85d6                	mv	a1,s5
    e88169cc:	8552                	mv	a0,s4
    e88169ce:	4701                	li	a4,0
        hinfo.resrec.rdestimate = len;
    e88169d0:	02811323          	sh	s0,38(sp)
        newptr = PutResourceRecordTTLWithLimit(msg, end, &msg->h.numAdditionals, &hinfo.resrec, 0, limit);
    e88169d4:	c6dff0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
}
    e88169d8:	46013403          	ld	s0,1120(sp)
    e88169dc:	46813083          	ld	ra,1128(sp)
    e88169e0:	45813483          	ld	s1,1112(sp)
    e88169e4:	45013903          	ld	s2,1104(sp)
    e88169e8:	44813983          	ld	s3,1096(sp)
    e88169ec:	44013a03          	ld	s4,1088(sp)
    e88169f0:	43813a83          	ld	s5,1080(sp)
    e88169f4:	43013b03          	ld	s6,1072(sp)
    e88169f8:	42813b83          	ld	s7,1064(sp)
    e88169fc:	47010113          	addi	sp,sp,1136
    e8816a00:	8082                	ret

00000000e8816a02 <putHINFO>:
{
    e8816a02:	8832                	mv	a6,a2
    if (authInfo && authInfo->AutoTunnel)
    e8816a04:	c691                	beqz	a3,e8816a10 <putHINFO+0xe>
    e8816a06:	00c6c783          	lbu	a5,12(a3)
    e8816a0a:	c399                	beqz	a5,e8816a10 <putHINFO+0xe>
    e8816a0c:	f11ff06f          	j	e881691c <putHINFO.part.5>
}
    e8816a10:	8542                	mv	a0,a6
    e8816a12:	8082                	ret

00000000e8816a14 <GetRRDisplayString_rdb>:
{
    e8816a14:	7175                	addi	sp,sp,-144
    e8816a16:	e506                	sd	ra,136(sp)
    e8816a18:	fca6                	sd	s1,120(sp)
    e8816a1a:	f8ca                	sd	s2,112(sp)
    e8816a1c:	f4ce                	sd	s3,104(sp)
    e8816a1e:	e122                	sd	s0,128(sp)
    e8816a20:	f0d2                	sd	s4,96(sp)
    e8816a22:	ecd6                	sd	s5,88(sp)
    e8816a24:	e8da                	sd	s6,80(sp)
    e8816a26:	e4de                	sd	s7,72(sp)
    e8816a28:	e0e2                	sd	s8,64(sp)
    e8816a2a:	fc66                	sd	s9,56(sp)
    e8816a2c:	f86a                	sd	s10,48(sp)
    e8816a2e:	f46e                	sd	s11,40(sp)
    e8816a30:	89aa                	mv	s3,a0
    mDNSu32 length = mDNS_snprintf(buffer, MaxMsg-1, "%4d %##s %s ", rr->rdlength, rr->name->c, DNSTypeName(rr->rrtype));
    e8816a32:	00c55683          	lhu	a3,12(a0)
    e8816a36:	7118                	ld	a4,32(a0)
    e8816a38:	00255503          	lhu	a0,2(a0)
{
    e8816a3c:	8932                	mv	s2,a2
    e8816a3e:	84ae                	mv	s1,a1
    mDNSu32 length = mDNS_snprintf(buffer, MaxMsg-1, "%4d %##s %s ", rr->rdlength, rr->name->c, DNSTypeName(rr->rrtype));
    e8816a40:	ec36                	sd	a3,24(sp)
    e8816a42:	e83a                	sd	a4,16(sp)
    e8816a44:	a1cff0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8816a48:	87aa                	mv	a5,a0
    e8816a4a:	fad1470b          	ldd	a4,a3,(sp),1,4
    e8816a4e:	0008c617          	auipc	a2,0x8c
    e8816a52:	90260613          	addi	a2,a2,-1790 # e88a2350 <DiscardPort+0x340>
    e8816a56:	1ff00593          	li	a1,511
    e8816a5a:	854a                	mv	a0,s2
    e8816a5c:	9e6ff0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    if (rr->RecordType == kDNSRecordTypePacketNegative) return(buffer);
    e8816a60:	0009c703          	lbu	a4,0(s3)
    e8816a64:	0f000793          	li	a5,240
    e8816a68:	02f70a63          	beq	a4,a5,e8816a9c <GetRRDisplayString_rdb+0x88>
    if (!rr->rdlength && rr->rrtype != kDNSType_OPT) { mDNS_snprintf(buffer+length, RemSpc, "<< ZERO RDATA LENGTH >>"); return(buffer); }
    e8816a6c:	00c9da83          	lhu	s5,12(s3)
    e8816a70:	0005041b          	sext.w	s0,a0
    e8816a74:	0029d783          	lhu	a5,2(s3)
    e8816a78:	040a9263          	bnez	s5,e8816abc <GetRRDisplayString_rdb+0xa8>
    e8816a7c:	02900713          	li	a4,41
    e8816a80:	14e78663          	beq	a5,a4,e8816bcc <GetRRDisplayString_rdb+0x1b8>
    e8816a84:	7c04350b          	extu	a0,s0,31,0
    e8816a88:	1ff00593          	li	a1,511
    e8816a8c:	0008c617          	auipc	a2,0x8c
    e8816a90:	8d460613          	addi	a2,a2,-1836 # e88a2360 <DiscardPort+0x350>
    e8816a94:	9d81                	subw	a1,a1,s0
    e8816a96:	954a                	add	a0,a0,s2
    e8816a98:	9aaff0ef          	jal	ra,e8815c42 <mDNS_snprintf>
}
    e8816a9c:	60aa                	ld	ra,136(sp)
    e8816a9e:	640a                	ld	s0,128(sp)
    e8816aa0:	854a                	mv	a0,s2
    e8816aa2:	74e6                	ld	s1,120(sp)
    e8816aa4:	7946                	ld	s2,112(sp)
    e8816aa6:	79a6                	ld	s3,104(sp)
    e8816aa8:	7a06                	ld	s4,96(sp)
    e8816aaa:	6ae6                	ld	s5,88(sp)
    e8816aac:	6b46                	ld	s6,80(sp)
    e8816aae:	6ba6                	ld	s7,72(sp)
    e8816ab0:	6c06                	ld	s8,64(sp)
    e8816ab2:	7ce2                	ld	s9,56(sp)
    e8816ab4:	7d42                	ld	s10,48(sp)
    e8816ab6:	7da2                	ld	s11,40(sp)
    e8816ab8:	6149                	addi	sp,sp,144
    e8816aba:	8082                	ret
    switch (rr->rrtype)
    e8816abc:	4731                	li	a4,12
    e8816abe:	18e78863          	beq	a5,a4,e8816c4e <GetRRDisplayString_rdb+0x23a>
    e8816ac2:	08f76963          	bltu	a4,a5,e8816b54 <GetRRDisplayString_rdb+0x140>
    e8816ac6:	4709                	li	a4,2
    e8816ac8:	18e78363          	beq	a5,a4,e8816c4e <GetRRDisplayString_rdb+0x23a>
    e8816acc:	7c04350b          	extu	a0,s0,31,0
    e8816ad0:	04f76263          	bltu	a4,a5,e8816b14 <GetRRDisplayString_rdb+0x100>
    e8816ad4:	4705                	li	a4,1
    e8816ad6:	16e78063          	beq	a5,a4,e8816c36 <GetRRDisplayString_rdb+0x222>
    default:            mDNS_snprintf(buffer+length, RemSpc, "RDLen %d: %.*s", rr->rdlength, rr->rdlength, rd->data);
    e8816ada:	000a871b          	sext.w	a4,s5
    e8816ade:	7c04350b          	extu	a0,s0,31,0
    e8816ae2:	1ff00593          	li	a1,511
    e8816ae6:	87a6                	mv	a5,s1
    e8816ae8:	86ba                	mv	a3,a4
    e8816aea:	0008c617          	auipc	a2,0x8c
    e8816aee:	9ae60613          	addi	a2,a2,-1618 # e88a2498 <DiscardPort+0x488>
    e8816af2:	9d81                	subw	a1,a1,s0
    e8816af4:	954a                	add	a0,a0,s2
    e8816af6:	94cff0ef          	jal	ra,e8815c42 <mDNS_snprintf>
        for (ptr = buffer; *ptr; ptr++) if (*ptr < ' ') *ptr = '.';
    e8816afa:	87ca                	mv	a5,s2
    e8816afc:	46fd                	li	a3,31
    e8816afe:	02e00613          	li	a2,46
    e8816b02:	0007c703          	lbu	a4,0(a5)
    e8816b06:	db59                	beqz	a4,e8816a9c <GetRRDisplayString_rdb+0x88>
    e8816b08:	00e6e463          	bltu	a3,a4,e8816b10 <GetRRDisplayString_rdb+0xfc>
    e8816b0c:	00c78023          	sb	a2,0(a5)
    e8816b10:	0785                	addi	a5,a5,1
    e8816b12:	bfc5                	j	e8816b02 <GetRRDisplayString_rdb+0xee>
    switch (rr->rrtype)
    e8816b14:	4715                	li	a4,5
    e8816b16:	12e78c63          	beq	a5,a4,e8816c4e <GetRRDisplayString_rdb+0x23a>
    e8816b1a:	4719                	li	a4,6
    e8816b1c:	fae79fe3          	bne	a5,a4,e8816ada <GetRRDisplayString_rdb+0xc6>
    case kDNSType_SOA:  mDNS_snprintf(buffer+length, RemSpc, "%##s %##s %d %d %d %d %d",
    e8816b20:	2104a783          	lw	a5,528(s1)
    e8816b24:	2084a883          	lw	a7,520(s1)
    e8816b28:	2044a803          	lw	a6,516(s1)
    e8816b2c:	e43e                	sd	a5,8(sp)
    e8816b2e:	20c4a783          	lw	a5,524(s1)
    e8816b32:	1ff00593          	li	a1,511
    e8816b36:	10048713          	addi	a4,s1,256
    e8816b3a:	e03e                	sd	a5,0(sp)
    e8816b3c:	2004a783          	lw	a5,512(s1)
    e8816b40:	86a6                	mv	a3,s1
    e8816b42:	0008c617          	auipc	a2,0x8c
    e8816b46:	83e60613          	addi	a2,a2,-1986 # e88a2380 <DiscardPort+0x370>
    e8816b4a:	9d81                	subw	a1,a1,s0
    e8816b4c:	954a                	add	a0,a0,s2
    e8816b4e:	8f4ff0ef          	jal	ra,e8815c42 <mDNS_snprintf>
        break;
    e8816b52:	b7a9                	j	e8816a9c <GetRRDisplayString_rdb+0x88>
    switch (rr->rrtype)
    e8816b54:	4771                	li	a4,28
    e8816b56:	10e78463          	beq	a5,a4,e8816c5e <GetRRDisplayString_rdb+0x24a>
    e8816b5a:	06f76163          	bltu	a4,a5,e8816bbc <GetRRDisplayString_rdb+0x1a8>
    e8816b5e:	4735                	li	a4,13
    e8816b60:	00e78563          	beq	a5,a4,e8816b6a <GetRRDisplayString_rdb+0x156>
    e8816b64:	4741                	li	a4,16
    e8816b66:	f6e79ae3          	bne	a5,a4,e8816ada <GetRRDisplayString_rdb+0xc6>
        const mDNSu8 *t = rd->txt.c;
    e8816b6a:	8a26                	mv	s4,s1
            length += mDNS_snprintf(buffer+length, RemSpc, "%s%#s", t > rd->txt.c ? "¦" : "", t);
    e8816b6c:	1ff00b13          	li	s6,511
    e8816b70:	0008ba97          	auipc	s5,0x8b
    e8816b74:	7d8a8a93          	addi	s5,s5,2008 # e88a2348 <DiscardPort+0x338>
    e8816b78:	000aab97          	auipc	s7,0xaa
    e8816b7c:	6f8b8b93          	addi	s7,s7,1784 # e88c1270 <kHTTPServerClass+0x90>
    e8816b80:	0008cc17          	auipc	s8,0x8c
    e8816b84:	820c0c13          	addi	s8,s8,-2016 # e88a23a0 <DiscardPort+0x390>
        while (t < rd->txt.c + rr->rdlength)
    e8816b88:	00c9d783          	lhu	a5,12(s3)
    e8816b8c:	97a6                	add	a5,a5,s1
    e8816b8e:	f0fa77e3          	bgeu	s4,a5,e8816a9c <GetRRDisplayString_rdb+0x88>
            length += mDNS_snprintf(buffer+length, RemSpc, "%s%#s", t > rd->txt.c ? "¦" : "", t);
    e8816b92:	0144b6b3          	sltu	a3,s1,s4
    e8816b96:	87de                	mv	a5,s7
    e8816b98:	42da978b          	mvnez	a5,s5,a3
    e8816b9c:	7c04350b          	extu	a0,s0,31,0
    e8816ba0:	408b05bb          	subw	a1,s6,s0
    e8816ba4:	86be                	mv	a3,a5
    e8816ba6:	8752                	mv	a4,s4
    e8816ba8:	954a                	add	a0,a0,s2
    e8816baa:	8662                	mv	a2,s8
    e8816bac:	896ff0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816bb0:	9c29                	addw	s0,s0,a0
            t += 1 + t[0];
    e8816bb2:	000a4783          	lbu	a5,0(s4)
    e8816bb6:	0785                	addi	a5,a5,1
    e8816bb8:	9a3e                	add	s4,s4,a5
    e8816bba:	b7f9                	j	e8816b88 <GetRRDisplayString_rdb+0x174>
    switch (rr->rrtype)
    e8816bbc:	02100713          	li	a4,33
    e8816bc0:	0ae78763          	beq	a5,a4,e8816c6e <GetRRDisplayString_rdb+0x25a>
    e8816bc4:	02900713          	li	a4,41
    e8816bc8:	f0e799e3          	bne	a5,a4,e8816ada <GetRRDisplayString_rdb+0xc6>
        length += mDNS_snprintf(buffer+length, RemSpc, "Max %d", rr->rrclass);
    e8816bcc:	0049d683          	lhu	a3,4(s3)
    e8816bd0:	7c04350b          	extu	a0,s0,31,0
    e8816bd4:	1ff00593          	li	a1,511
    e8816bd8:	9d81                	subw	a1,a1,s0
    e8816bda:	0008b617          	auipc	a2,0x8b
    e8816bde:	7e660613          	addi	a2,a2,2022 # e88a23c0 <DiscardPort+0x3b0>
    e8816be2:	954a                	add	a0,a0,s2
    e8816be4:	85eff0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816be8:	6b41                	lui	s6,0x10
        const rdataOPT *const end = (const rdataOPT *)&rd->data[rr->rdlength];
    e8816bea:	9aa6                	add	s5,s5,s1
        length += mDNS_snprintf(buffer+length, RemSpc, "Max %d", rr->rrclass);
    e8816bec:	9c29                	addw	s0,s0,a0
        for (opt = &rd->opt[0]; opt < end; opt++)
    e8816bee:	1ff00a13          	li	s4,511
    e8816bf2:	4b89                	li	s7,2
                length += mDNS_snprintf(buffer+length, RemSpc, " Lease %d",    opt->u.updatelease);
    e8816bf4:	0008cc17          	auipc	s8,0x8c
    e8816bf8:	814c0c13          	addi	s8,s8,-2028 # e88a2408 <DiscardPort+0x3f8>
                length += mDNS_snprintf(buffer+length, RemSpc, " Unknown %d",  opt->opt);
    e8816bfc:	0008cc97          	auipc	s9,0x8c
    e8816c00:	88cc8c93          	addi	s9,s9,-1908 # e88a2488 <DiscardPort+0x478>
    e8816c04:	4d11                	li	s10,4
                length += mDNS_snprintf(buffer+length, RemSpc, " Owner");
    e8816c06:	0008cd97          	auipc	s11,0x8c
    e8816c0a:	812d8d93          	addi	s11,s11,-2030 # e88a2418 <DiscardPort+0x408>
    e8816c0e:	de9b0b13          	addi	s6,s6,-535 # fde9 <memcmp-0xe87f0217>
        for (opt = &rd->opt[0]; opt < end; opt++)
    e8816c12:	e954f5e3          	bgeu	s1,s5,e8816a9c <GetRRDisplayString_rdb+0x88>
            switch(opt->opt)
    e8816c16:	0004d683          	lhu	a3,0(s1)
    e8816c1a:	7c04350b          	extu	a0,s0,31,0
    e8816c1e:	954a                	add	a0,a0,s2
    e8816c20:	408a05bb          	subw	a1,s4,s0
    e8816c24:	15768763          	beq	a3,s7,e8816d72 <GetRRDisplayString_rdb+0x35e>
    e8816c28:	06dbed63          	bltu	s7,a3,e8816ca2 <GetRRDisplayString_rdb+0x28e>
    e8816c2c:	4785                	li	a5,1
    e8816c2e:	0af68b63          	beq	a3,a5,e8816ce4 <GetRRDisplayString_rdb+0x2d0>
                length += mDNS_snprintf(buffer+length, RemSpc, " Unknown %d",  opt->opt);
    e8816c32:	8666                	mv	a2,s9
    e8816c34:	a289                	j	e8816d76 <GetRRDisplayString_rdb+0x362>
    case kDNSType_A:    mDNS_snprintf(buffer+length, RemSpc, "%.4a", &rd->ipv4);          break;
    e8816c36:	86a6                	mv	a3,s1
    e8816c38:	0008b617          	auipc	a2,0x8b
    e8816c3c:	74060613          	addi	a2,a2,1856 # e88a2378 <DiscardPort+0x368>
    case kDNSType_AAAA: mDNS_snprintf(buffer+length, RemSpc, "%.16a", &rd->ipv6);       break;
    e8816c40:	1ff00593          	li	a1,511
    e8816c44:	9d81                	subw	a1,a1,s0
    e8816c46:	954a                	add	a0,a0,s2
    e8816c48:	ffbfe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816c4c:	bd81                	j	e8816a9c <GetRRDisplayString_rdb+0x88>
    case kDNSType_PTR:  mDNS_snprintf(buffer+length, RemSpc, "%##s", rd->name.c);       break;
    e8816c4e:	7c04350b          	extu	a0,s0,31,0
    e8816c52:	86a6                	mv	a3,s1
    e8816c54:	00099617          	auipc	a2,0x99
    e8816c58:	55c60613          	addi	a2,a2,1372 # e88b01b0 <__func__.9833+0x2218>
    e8816c5c:	b7d5                	j	e8816c40 <GetRRDisplayString_rdb+0x22c>
    case kDNSType_AAAA: mDNS_snprintf(buffer+length, RemSpc, "%.16a", &rd->ipv6);       break;
    e8816c5e:	7c04350b          	extu	a0,s0,31,0
    e8816c62:	86a6                	mv	a3,s1
    e8816c64:	0008b617          	auipc	a2,0x8b
    e8816c68:	74460613          	addi	a2,a2,1860 # e88a23a8 <DiscardPort+0x398>
    e8816c6c:	bfd1                	j	e8816c40 <GetRRDisplayString_rdb+0x22c>

#ifdef mDNSinline

mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}

mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8816c6e:	0044c783          	lbu	a5,4(s1)
    e8816c72:	0054c703          	lbu	a4,5(s1)
    case kDNSType_SRV:  mDNS_snprintf(buffer+length, RemSpc, "%u %u %u %##s",
    e8816c76:	0004d683          	lhu	a3,0(s1)
    e8816c7a:	0087979b          	slliw	a5,a5,0x8
    e8816c7e:	8fd9                	or	a5,a5,a4
    e8816c80:	0024d703          	lhu	a4,2(s1)
    e8816c84:	7c04350b          	extu	a0,s0,31,0
    e8816c88:	1ff00593          	li	a1,511
    e8816c8c:	00648813          	addi	a6,s1,6
    e8816c90:	0008b617          	auipc	a2,0x8b
    e8816c94:	72060613          	addi	a2,a2,1824 # e88a23b0 <DiscardPort+0x3a0>
    e8816c98:	9d81                	subw	a1,a1,s0
    e8816c9a:	954a                	add	a0,a0,s2
    e8816c9c:	fa7fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
                                      rd->srv.priority, rd->srv.weight, mDNSVal16(rd->srv.port), rd->srv.target.c); break;
    e8816ca0:	bbf5                	j	e8816a9c <GetRRDisplayString_rdb+0x88>
    e8816ca2:	0da68e63          	beq	a3,s10,e8816d7e <GetRRDisplayString_rdb+0x36a>
    e8816ca6:	f96696e3          	bne	a3,s6,e8816c32 <GetRRDisplayString_rdb+0x21e>
                length += mDNS_snprintf(buffer+length, RemSpc, " Trace");
    e8816caa:	0008b617          	auipc	a2,0x8b
    e8816cae:	7b660613          	addi	a2,a2,1974 # e88a2460 <DiscardPort+0x450>
    e8816cb2:	f91fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816cb6:	9c29                	addw	s0,s0,a0
                length += mDNS_snprintf(buffer+length, RemSpc, " Platform %d",    opt->u.tracer.platf);
    e8816cb8:	0044c683          	lbu	a3,4(s1)
    e8816cbc:	7c04350b          	extu	a0,s0,31,0
    e8816cc0:	0008b617          	auipc	a2,0x8b
    e8816cc4:	7a860613          	addi	a2,a2,1960 # e88a2468 <DiscardPort+0x458>
    e8816cc8:	408a05bb          	subw	a1,s4,s0
    e8816ccc:	954a                	add	a0,a0,s2
    e8816cce:	f75fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816cd2:	9c29                	addw	s0,s0,a0
                length += mDNS_snprintf(buffer+length, RemSpc, " mDNSVers %d",    opt->u.tracer.mDNSv);
    e8816cd4:	7c04350b          	extu	a0,s0,31,0
    e8816cd8:	4494                	lw	a3,8(s1)
    e8816cda:	0008b617          	auipc	a2,0x8b
    e8816cde:	79e60613          	addi	a2,a2,1950 # e88a2478 <DiscardPort+0x468>
    e8816ce2:	a061                	j	e8816d6a <GetRRDisplayString_rdb+0x356>
                length += mDNS_snprintf(buffer+length, RemSpc, " LLQ");
    e8816ce4:	0008b617          	auipc	a2,0x8b
    e8816ce8:	6e460613          	addi	a2,a2,1764 # e88a23c8 <DiscardPort+0x3b8>
    e8816cec:	f57fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816cf0:	9c29                	addw	s0,s0,a0
                length += mDNS_snprintf(buffer+length, RemSpc, " Vers %d",     opt->u.llq.vers);
    e8816cf2:	0044d683          	lhu	a3,4(s1)
    e8816cf6:	7c04350b          	extu	a0,s0,31,0
    e8816cfa:	408a05bb          	subw	a1,s4,s0
    e8816cfe:	0008b617          	auipc	a2,0x8b
    e8816d02:	6d260613          	addi	a2,a2,1746 # e88a23d0 <DiscardPort+0x3c0>
    e8816d06:	954a                	add	a0,a0,s2
    e8816d08:	f3bfe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816d0c:	9c29                	addw	s0,s0,a0
                length += mDNS_snprintf(buffer+length, RemSpc, " Op %d",       opt->u.llq.llqOp);
    e8816d0e:	0064d683          	lhu	a3,6(s1)
    e8816d12:	7c04350b          	extu	a0,s0,31,0
    e8816d16:	408a05bb          	subw	a1,s4,s0
    e8816d1a:	0008b617          	auipc	a2,0x8b
    e8816d1e:	6c660613          	addi	a2,a2,1734 # e88a23e0 <DiscardPort+0x3d0>
    e8816d22:	954a                	add	a0,a0,s2
    e8816d24:	f1ffe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816d28:	9c29                	addw	s0,s0,a0
                length += mDNS_snprintf(buffer+length, RemSpc, " Err/Port %d", opt->u.llq.err);
    e8816d2a:	0084d683          	lhu	a3,8(s1)
    e8816d2e:	7c04350b          	extu	a0,s0,31,0
    e8816d32:	408a05bb          	subw	a1,s4,s0
    e8816d36:	0008b617          	auipc	a2,0x8b
    e8816d3a:	6b260613          	addi	a2,a2,1714 # e88a23e8 <DiscardPort+0x3d8>
    e8816d3e:	954a                	add	a0,a0,s2
    e8816d40:	f03fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816d44:	9c29                	addw	s0,s0,a0
                length += mDNS_snprintf(buffer+length, RemSpc, " ID %08X%08X", opt->u.llq.id.l[0], opt->u.llq.id.l[1]);
    e8816d46:	44d4                	lw	a3,12(s1)
    e8816d48:	4898                	lw	a4,16(s1)
    e8816d4a:	7c04350b          	extu	a0,s0,31,0
    e8816d4e:	0008b617          	auipc	a2,0x8b
    e8816d52:	6aa60613          	addi	a2,a2,1706 # e88a23f8 <DiscardPort+0x3e8>
    e8816d56:	408a05bb          	subw	a1,s4,s0
    e8816d5a:	954a                	add	a0,a0,s2
    e8816d5c:	ee7fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816d60:	9c29                	addw	s0,s0,a0
                length += mDNS_snprintf(buffer+length, RemSpc, " Lease %d",    opt->u.llq.llqlease);
    e8816d62:	48d4                	lw	a3,20(s1)
    e8816d64:	7c04350b          	extu	a0,s0,31,0
    e8816d68:	8662                	mv	a2,s8
                length += mDNS_snprintf(buffer+length, RemSpc, " mDNSVers %d",    opt->u.tracer.mDNSv);
    e8816d6a:	408a05bb          	subw	a1,s4,s0
    e8816d6e:	954a                	add	a0,a0,s2
    e8816d70:	a019                	j	e8816d76 <GetRRDisplayString_rdb+0x362>
                length += mDNS_snprintf(buffer+length, RemSpc, " Lease %d",    opt->u.updatelease);
    e8816d72:	40d4                	lw	a3,4(s1)
    e8816d74:	8662                	mv	a2,s8
                length += mDNS_snprintf(buffer+length, RemSpc, " Unknown %d",  opt->opt);
    e8816d76:	ecdfe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816d7a:	9c29                	addw	s0,s0,a0
                break;
    e8816d7c:	a84d                	j	e8816e2e <GetRRDisplayString_rdb+0x41a>
                length += mDNS_snprintf(buffer+length, RemSpc, " Owner");
    e8816d7e:	866e                	mv	a2,s11
    e8816d80:	ec3fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816d84:	008509bb          	addw	s3,a0,s0
                length += mDNS_snprintf(buffer+length, RemSpc, " Vers %d",     opt->u.owner.vers);
    e8816d88:	0044c683          	lbu	a3,4(s1)
    e8816d8c:	7c09b50b          	extu	a0,s3,31,0
    e8816d90:	413a05bb          	subw	a1,s4,s3
    e8816d94:	0008b617          	auipc	a2,0x8b
    e8816d98:	63c60613          	addi	a2,a2,1596 # e88a23d0 <DiscardPort+0x3c0>
    e8816d9c:	954a                	add	a0,a0,s2
    e8816d9e:	ea5fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816da2:	013509bb          	addw	s3,a0,s3
                length += mDNS_snprintf(buffer+length, RemSpc, " Seq %3d", (mDNSu8)opt->u.owner.seq);                           // Display as unsigned
    e8816da6:	0054c683          	lbu	a3,5(s1)
    e8816daa:	7c09b50b          	extu	a0,s3,31,0
    e8816dae:	413a05bb          	subw	a1,s4,s3
    e8816db2:	0008b617          	auipc	a2,0x8b
    e8816db6:	66e60613          	addi	a2,a2,1646 # e88a2420 <DiscardPort+0x410>
    e8816dba:	954a                	add	a0,a0,s2
    e8816dbc:	e87fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816dc0:	013509bb          	addw	s3,a0,s3
                length += mDNS_snprintf(buffer+length, RemSpc, " MAC %.6a",    opt->u.owner.HMAC.b);
    e8816dc4:	7c09b50b          	extu	a0,s3,31,0
    e8816dc8:	00648693          	addi	a3,s1,6
    e8816dcc:	0008b617          	auipc	a2,0x8b
    e8816dd0:	66460613          	addi	a2,a2,1636 # e88a2430 <DiscardPort+0x420>
    e8816dd4:	413a05bb          	subw	a1,s4,s3
    e8816dd8:	954a                	add	a0,a0,s2
    e8816dda:	e69fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816dde:	0135043b          	addw	s0,a0,s3
                if (opt->optlen >= DNSOpt_OwnerData_ID_Wake_Space-4)
    e8816de2:	0024d703          	lhu	a4,2(s1)
    e8816de6:	47b5                	li	a5,13
    e8816de8:	04e7f363          	bgeu	a5,a4,e8816e2e <GetRRDisplayString_rdb+0x41a>
                    length += mDNS_snprintf(buffer+length, RemSpc, " I-MAC %.6a", opt->u.owner.IMAC.b);
    e8816dec:	7c04350b          	extu	a0,s0,31,0
    e8816df0:	408a05bb          	subw	a1,s4,s0
    e8816df4:	00c48693          	addi	a3,s1,12
    e8816df8:	0008b617          	auipc	a2,0x8b
    e8816dfc:	64860613          	addi	a2,a2,1608 # e88a2440 <DiscardPort+0x430>
    e8816e00:	954a                	add	a0,a0,s2
    e8816e02:	e41fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816e06:	9c29                	addw	s0,s0,a0
                    if (opt->optlen > DNSOpt_OwnerData_ID_Wake_Space-4)
    e8816e08:	0024d703          	lhu	a4,2(s1)
    e8816e0c:	47b9                	li	a5,14
    e8816e0e:	02e7f063          	bgeu	a5,a4,e8816e2e <GetRRDisplayString_rdb+0x41a>
                        length += mDNS_snprintf(buffer+length, RemSpc, " Password %.6a", opt->u.owner.password.b);
    e8816e12:	7c04350b          	extu	a0,s0,31,0
    e8816e16:	408a05bb          	subw	a1,s4,s0
    e8816e1a:	01248693          	addi	a3,s1,18
    e8816e1e:	0008b617          	auipc	a2,0x8b
    e8816e22:	63260613          	addi	a2,a2,1586 # e88a2450 <DiscardPort+0x440>
    e8816e26:	954a                	add	a0,a0,s2
    e8816e28:	e1bfe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8816e2c:	9c29                	addw	s0,s0,a0
        for (opt = &rd->opt[0]; opt < end; opt++)
    e8816e2e:	04e1                	addi	s1,s1,24
    e8816e30:	b3cd                	j	e8816c12 <GetRRDisplayString_rdb+0x1fe>

00000000e8816e32 <GetLargeResourceRecord>:
{
    e8816e32:	715d                	addi	sp,sp,-80
    e8816e34:	fc26                	sd	s1,56(sp)
    e8816e36:	84aa                	mv	s1,a0
    if (largecr == &m->rec && m->rec.r.resrec.RecordType)
    e8816e38:	6525                	lui	a0,0x9
{
    e8816e3a:	e0a2                	sd	s0,64(sp)
    e8816e3c:	f84a                	sd	s2,48(sp)
    e8816e3e:	f44e                	sd	s3,40(sp)
    e8816e40:	f052                	sd	s4,32(sp)
    e8816e42:	ec56                	sd	s5,24(sp)
    e8816e44:	e85a                	sd	s6,16(sp)
    e8816e46:	893e                	mv	s2,a5
    e8816e48:	e486                	sd	ra,72(sp)
    if (largecr == &m->rec && m->rec.r.resrec.RecordType)
    e8816e4a:	4d850793          	addi	a5,a0,1240 # 94d8 <memcmp-0xe87f6b28>
    e8816e4e:	97a6                	add	a5,a5,s1
{
    e8816e50:	89ae                	mv	s3,a1
    e8816e52:	8b32                	mv	s6,a2
    e8816e54:	8a36                	mv	s4,a3
    e8816e56:	8aba                	mv	s5,a4
    e8816e58:	8442                	mv	s0,a6
    if (largecr == &m->rec && m->rec.r.resrec.RecordType)
    e8816e5a:	02f81963          	bne	a6,a5,e8816e8c <GetLargeResourceRecord+0x5a>
    e8816e5e:	00a487b3          	add	a5,s1,a0
    e8816e62:	4e07c703          	lbu	a4,1248(a5)
    e8816e66:	c31d                	beqz	a4,e8816e8c <GetLargeResourceRecord+0x5a>
        LogFatalError("GetLargeResourceRecord: m->rec appears to be already in use for %s", CRDisplayString(m, &m->rec.r));
    e8816e68:	5087b583          	ld	a1,1288(a5)
    e8816e6c:	4e050513          	addi	a0,a0,1248
    e8816e70:	03b48613          	addi	a2,s1,59
    e8816e74:	0591                	addi	a1,a1,4
    e8816e76:	9526                	add	a0,a0,s1
    e8816e78:	b9dff0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8816e7c:	862a                	mv	a2,a0
    e8816e7e:	0008b597          	auipc	a1,0x8b
    e8816e82:	41258593          	addi	a1,a1,1042 # e88a2290 <DiscardPort+0x280>
    e8816e86:	4501                	li	a0,0
    e8816e88:	624180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    rr->resrec.name       = &largecr->namestorage;
    e8816e8c:	6689                	lui	a3,0x2
    e8816e8e:	0a468693          	addi	a3,a3,164 # 20a4 <memcmp-0xe87fdf5c>
    e8816e92:	96a2                	add	a3,a3,s0
    rr->next              = mDNSNULL;
    e8816e94:	00043023          	sd	zero,0(s0)
    rr->resrec.name       = &largecr->namestorage;
    e8816e98:	f414                	sd	a3,40(s0)
    rr->NextInKAList      = mDNSNULL;
    e8816e9a:	04043423          	sd	zero,72(s0)
    rr->TimeRcvd          = m ? m->timenow : 0;
    e8816e9e:	4781                	li	a5,0
    e8816ea0:	c099                	beqz	s1,e8816ea6 <GetLargeResourceRecord+0x74>
    e8816ea2:	2404a783          	lw	a5,576(s1)
    e8816ea6:	c83c                	sw	a5,80(s0)
    rr->DelayDelivery     = 0;
    e8816ea8:	04042a23          	sw	zero,84(s0)
    rr->NextRequiredQuery = m ? m->timenow : 0;     // Will be updated to the real value when we call SetNextCacheCheckTimeForRecord()
    e8816eac:	4781                	li	a5,0
    e8816eae:	c099                	beqz	s1,e8816eb4 <GetLargeResourceRecord+0x82>
    e8816eb0:	2404a783          	lw	a5,576(s1)
    e8816eb4:	cc3c                	sw	a5,88(s0)
    rr->LastUsed          = m ? m->timenow : 0;
    e8816eb6:	4781                	li	a5,0
    e8816eb8:	c099                	beqz	s1,e8816ebe <GetLargeResourceRecord+0x8c>
    e8816eba:	2404a783          	lw	a5,576(s1)
    e8816ebe:	cc7c                	sw	a5,92(s0)
    rr->CRActiveQuestion  = mDNSNULL;
    e8816ec0:	06043023          	sd	zero,96(s0)
    rr->UnansweredQueries = 0;
    e8816ec4:	06040623          	sb	zero,108(s0)
    rr->LastUnansweredTime= 0;
    e8816ec8:	06042423          	sw	zero,104(s0)
    rr->NextInCFList      = mDNSNULL;
    e8816ecc:	06043823          	sd	zero,112(s0)
    rr->resrec.InterfaceID       = InterfaceID;
    e8816ed0:	03543023          	sd	s5,32(s0)
    rr->resrec.rDNSServer = mDNSNULL;
    e8816ed4:	02043c23          	sd	zero,56(s0)
    ptr = getDomainName(msg, ptr, end, &largecr->namestorage);      // Will bail out correctly if ptr is NULL
    e8816ed8:	8652                	mv	a2,s4
    e8816eda:	85da                	mv	a1,s6
    e8816edc:	854e                	mv	a0,s3
    e8816ede:	c89fd0ef          	jal	ra,e8814b66 <getDomainName>
    e8816ee2:	84aa                	mv	s1,a0
    if (!ptr) { debugf("GetLargeResourceRecord: Malformed RR name"); return(mDNSNULL); }
    e8816ee4:	ed09                	bnez	a0,e8816efe <GetLargeResourceRecord+0xcc>
    e8816ee6:	4481                	li	s1,0
}
    e8816ee8:	60a6                	ld	ra,72(sp)
    e8816eea:	6406                	ld	s0,64(sp)
    e8816eec:	8526                	mv	a0,s1
    e8816eee:	7942                	ld	s2,48(sp)
    e8816ef0:	74e2                	ld	s1,56(sp)
    e8816ef2:	79a2                	ld	s3,40(sp)
    e8816ef4:	7a02                	ld	s4,32(sp)
    e8816ef6:	6ae2                	ld	s5,24(sp)
    e8816ef8:	6b42                	ld	s6,16(sp)
    e8816efa:	6161                	addi	sp,sp,80
    e8816efc:	8082                	ret
    rr->resrec.namehash = DomainNameHashValue(rr->resrec.name);
    e8816efe:	7410                	ld	a2,40(s0)
    if (ptr + 10 > end) { debugf("GetLargeResourceRecord: Malformed RR -- no type/class/ttl/len!"); return(mDNSNULL); }
    e8816f00:	00a48b13          	addi	s6,s1,10
    rr->resrec.namehash = DomainNameHashValue(rr->resrec.name);
    e8816f04:	8532                	mv	a0,a2
    e8816f06:	e432                	sd	a2,8(sp)
    e8816f08:	9e7fd0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e8816f0c:	cc08                	sw	a0,24(s0)
    if (ptr + 10 > end) { debugf("GetLargeResourceRecord: Malformed RR -- no type/class/ttl/len!"); return(mDNSNULL); }
    e8816f0e:	fd6a6ce3          	bltu	s4,s6,e8816ee6 <GetLargeResourceRecord+0xb4>
    rr->resrec.rrtype            = (mDNSu16) ((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8816f12:	0004c503          	lbu	a0,0(s1)
    e8816f16:	0014c783          	lbu	a5,1(s1)
    if (rr->resrec.rroriginalttl > 0x70000000UL / mDNSPlatformOneSecond && (mDNSs32)rr->resrec.rroriginalttl != -1)
    e8816f1a:	6622                	ld	a2,8(sp)
    rr->resrec.rrtype            = (mDNSu16) ((mDNSu16)ptr[0] <<  8 | ptr[1]);
    e8816f1c:	0085151b          	slliw	a0,a0,0x8
    e8816f20:	8d5d                	or	a0,a0,a5
    e8816f22:	00a41523          	sh	a0,10(s0)
    rr->resrec.rrclass           = (mDNSu16)(((mDNSu16)ptr[2] <<  8 | ptr[3]) & kDNSClass_Mask);
    e8816f26:	0024c783          	lbu	a5,2(s1)
    e8816f2a:	0034c703          	lbu	a4,3(s1)
    e8816f2e:	0087979b          	slliw	a5,a5,0x8
    e8816f32:	8fd9                	or	a5,a5,a4
    if (rr->resrec.rroriginalttl > 0x70000000UL / mDNSPlatformOneSecond && (mDNSs32)rr->resrec.rroriginalttl != -1)
    e8816f34:	000be717          	auipc	a4,0xbe
    e8816f38:	b4c70713          	addi	a4,a4,-1204 # e88d4a80 <mDNSPlatformOneSecond>
    e8816f3c:	430c                	lw	a1,0(a4)
    e8816f3e:	70000737          	lui	a4,0x70000
    rr->resrec.rrclass           = (mDNSu16)(((mDNSu16)ptr[2] <<  8 | ptr[3]) & kDNSClass_Mask);
    e8816f42:	3807b78b          	extu	a5,a5,14,0
    if (rr->resrec.rroriginalttl > 0x70000000UL / mDNSPlatformOneSecond && (mDNSs32)rr->resrec.rroriginalttl != -1)
    e8816f46:	02b75733          	divu	a4,a4,a1
    rr->resrec.rrclass           = (mDNSu16)(((mDNSu16)ptr[2] <<  8 | ptr[3]) & kDNSClass_Mask);
    e8816f4a:	00f41623          	sh	a5,12(s0)
    rr->resrec.rroriginalttl     = (mDNSu32) ((mDNSu32)ptr[4] << 24 | (mDNSu32)ptr[5] << 16 | (mDNSu32)ptr[6] << 8 | ptr[7]);
    e8816f4e:	40dc                	lw	a5,4(s1)
    e8816f50:	9007978b          	revw	a5,a5
    e8816f54:	c81c                	sw	a5,16(s0)
    if (rr->resrec.rroriginalttl > 0x70000000UL / mDNSPlatformOneSecond && (mDNSs32)rr->resrec.rroriginalttl != -1)
    e8816f56:	86be                	mv	a3,a5
    e8816f58:	7c07b78b          	extu	a5,a5,31,0
    e8816f5c:	00f77663          	bgeu	a4,a5,e8816f68 <GetLargeResourceRecord+0x136>
    e8816f60:	57fd                	li	a5,-1
    e8816f62:	00f68363          	beq	a3,a5,e8816f68 <GetLargeResourceRecord+0x136>
        rr->resrec.rroriginalttl = 0x70000000UL / mDNSPlatformOneSecond;
    e8816f66:	c818                	sw	a4,16(s0)
    pktrdlength           = (mDNSu16)((mDNSu16)ptr[8] <<  8 | ptr[9]);
    e8816f68:	0084c703          	lbu	a4,8(s1)
    e8816f6c:	0094c783          	lbu	a5,9(s1)
    e8816f70:	0087171b          	slliw	a4,a4,0x8
    e8816f74:	8f5d                	or	a4,a4,a5
    if (ptr[2] & (kDNSClass_UniqueRRSet >> 8) || (!InterfaceID && !(msg->h.flags.b[0] & kDNSFlag0_TC)))
    e8816f76:	00248783          	lb	a5,2(s1)
    e8816f7a:	0007c863          	bltz	a5,e8816f8a <GetLargeResourceRecord+0x158>
    e8816f7e:	000a9863          	bnez	s5,e8816f8e <GetLargeResourceRecord+0x15c>
    e8816f82:	0029c783          	lbu	a5,2(s3)
    e8816f86:	8b89                	andi	a5,a5,2
    e8816f88:	e399                	bnez	a5,e8816f8e <GetLargeResourceRecord+0x15c>
        RecordType |= kDNSRecordTypePacketUniqueMask;
    e8816f8a:	01096913          	ori	s2,s2,16
    if (ptr + pktrdlength > end) { debugf("GetLargeResourceRecord: RDATA exceeds end of packet"); return(mDNSNULL); }
    e8816f8e:	00eb04b3          	add	s1,s6,a4
    e8816f92:	f49a6ae3          	bltu	s4,s1,e8816ee6 <GetLargeResourceRecord+0xb4>
    rr->resrec.rdata = (RData*)&rr->smallrdatastorage;
    e8816f96:	09c40793          	addi	a5,s0,156
    e8816f9a:	f81c                	sd	a5,48(s0)
    rr->resrec.rdata->MaxRDLength = MaximumRDSize;
    e8816f9c:	6789                	lui	a5,0x2
    e8816f9e:	08f41e23          	sh	a5,156(s0)
    if (pktrdlength > MaximumRDSize)
    e8816fa2:	0007069b          	sext.w	a3,a4
    e8816fa6:	6789                	lui	a5,0x2
    e8816fa8:	02d7ff63          	bgeu	a5,a3,e8816fe6 <GetLargeResourceRecord+0x1b4>
        LogInfo("GetLargeResourceRecord: %s rdata size (%d) exceeds storage (%d)",
    e8816fac:	000be797          	auipc	a5,0xbe
    e8816fb0:	ac878793          	addi	a5,a5,-1336 # e88d4a74 <mDNS_LoggingEnabled>
    e8816fb4:	439c                	lw	a5,0(a5)
    e8816fb6:	c385                	beqz	a5,e8816fd6 <GetLargeResourceRecord+0x1a4>
    e8816fb8:	e436                	sd	a3,8(sp)
    e8816fba:	ca7fe0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8816fbe:	862a                	mv	a2,a0
    e8816fc0:	781c                	ld	a5,48(s0)
    e8816fc2:	66a2                	ld	a3,8(sp)
    e8816fc4:	0008b597          	auipc	a1,0x8b
    e8816fc8:	31458593          	addi	a1,a1,788 # e88a22d8 <DiscardPort+0x2c8>
    e8816fcc:	0007d703          	lhu	a4,0(a5)
    e8816fd0:	450d                	li	a0,3
    e8816fd2:	4da180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    rr->resrec.RecordType = kDNSRecordTypePacketNegative;
    e8816fd6:	57c1                	li	a5,-16
    e8816fd8:	00f40423          	sb	a5,8(s0)
    rr->resrec.rdlength   = 0;
    e8816fdc:	00042a23          	sw	zero,20(s0)
    rr->resrec.rdatahash  = 0;
    e8816fe0:	00042e23          	sw	zero,28(s0)
    return(end);
    e8816fe4:	b711                	j	e8816ee8 <GetLargeResourceRecord+0xb6>
    if (!RecordType) LogMsg("GetLargeResourceRecord: No RecordType for %##s", rr->resrec.name->c);
    e8816fe6:	00091b63          	bnez	s2,e8816ffc <GetLargeResourceRecord+0x1ca>
    e8816fea:	0008b597          	auipc	a1,0x8b
    e8816fee:	32e58593          	addi	a1,a1,814 # e88a2318 <DiscardPort+0x308>
    e8816ff2:	4501                	li	a0,0
    e8816ff4:	e43a                	sd	a4,8(sp)
    e8816ff6:	4b6180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8816ffa:	6722                	ld	a4,8(sp)
    if (rr->resrec.rrclass == kDNSQClass_ANY && pktrdlength == 0)   // Used in update packets to mean "Delete An RRset" (RFC 2136)
    e8816ffc:	00c45683          	lhu	a3,12(s0)
    e8817000:	0ff00793          	li	a5,255
    e8817004:	00f69e63          	bne	a3,a5,e8817020 <GetLargeResourceRecord+0x1ee>
    e8817008:	ef01                	bnez	a4,e8817020 <GetLargeResourceRecord+0x1ee>
        rr->resrec.rdlength = 0;
    e881700a:	00041a23          	sh	zero,20(s0)
    SetNewRData(&rr->resrec, mDNSNULL, 0);      // Sets rdlength, rdestimate, rdatahash for us
    e881700e:	4601                	li	a2,0
    e8817010:	4581                	li	a1,0
    e8817012:	00840513          	addi	a0,s0,8
    e8817016:	a43fd0ef          	jal	ra,e8814a58 <SetNewRData>
    rr->resrec.RecordType = RecordType;
    e881701a:	01240423          	sb	s2,8(s0)
    return(end);
    e881701e:	b5e9                	j	e8816ee8 <GetLargeResourceRecord+0xb6>
    else if (!SetRData(msg, ptr, end, largecr, pktrdlength))
    e8817020:	86a2                	mv	a3,s0
    e8817022:	8626                	mv	a2,s1
    e8817024:	85da                	mv	a1,s6
    e8817026:	854e                	mv	a0,s3
    e8817028:	c3bfd0ef          	jal	ra,e8814c62 <SetRData>
    e881702c:	f16d                	bnez	a0,e881700e <GetLargeResourceRecord+0x1dc>
    e881702e:	b765                	j	e8816fd6 <GetLargeResourceRecord+0x1a4>

00000000e8817030 <GetLLQOptData>:
{
    e8817030:	7179                	addi	sp,sp,-48
    e8817032:	86b2                	mv	a3,a2
    e8817034:	f04a                	sd	s2,32(sp)
    e8817036:	892e                	mv	s2,a1
    e8817038:	fa91540b          	sdd	s0,s1,(sp),1,4
    const mDNSu8 *ptr = LocateOptRR(msg, end, DNSOpt_LLQData_Space);
    e881703c:	85b6                	mv	a1,a3
{
    e881703e:	842a                	mv	s0,a0
    const mDNSu8 *ptr = LocateOptRR(msg, end, DNSOpt_LLQData_Space);
    e8817040:	4659                	li	a2,22
    e8817042:	854a                	mv	a0,s2
    e8817044:	e436                	sd	a3,8(sp)
{
    e8817046:	f406                	sd	ra,40(sp)
    const mDNSu8 *ptr = LocateOptRR(msg, end, DNSOpt_LLQData_Space);
    e8817048:	935fe0ef          	jal	ra,e881597c <LocateOptRR>
    if (ptr)
    e881704c:	66a2                	ld	a3,8(sp)
    e881704e:	e901                	bnez	a0,e881705e <GetLLQOptData+0x2e>
    return(mDNSNULL);
    e8817050:	4501                	li	a0,0
}
    e8817052:	70a2                	ld	ra,40(sp)
    e8817054:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8817058:	7902                	ld	s2,32(sp)
    e881705a:	6145                	addi	sp,sp,48
    e881705c:	8082                	ret
        ptr = GetLargeResourceRecord(m, msg, ptr, end, 0, kDNSRecordTypePacketAdd, &m->rec);
    e881705e:	64a5                	lui	s1,0x9
    e8817060:	4d848813          	addi	a6,s1,1240 # 94d8 <memcmp-0xe87f6b28>
    e8817064:	862a                	mv	a2,a0
    e8817066:	9822                	add	a6,a6,s0
    e8817068:	08000793          	li	a5,128
    e881706c:	4701                	li	a4,0
    e881706e:	85ca                	mv	a1,s2
    e8817070:	8522                	mv	a0,s0
    e8817072:	dc1ff0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
        if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative) return(&m->rec.r.resrec.rdata->u.opt[0]);
    e8817076:	dd69                	beqz	a0,e8817050 <GetLLQOptData+0x20>
    e8817078:	9426                	add	s0,s0,s1
    e881707a:	4e044703          	lbu	a4,1248(s0)
    e881707e:	0f000793          	li	a5,240
    e8817082:	fcf707e3          	beq	a4,a5,e8817050 <GetLLQOptData+0x20>
    e8817086:	50843503          	ld	a0,1288(s0)
    e881708a:	0511                	addi	a0,a0,4
    e881708c:	b7d9                	j	e8817052 <GetLLQOptData+0x22>

00000000e881708e <GetPktLease>:
{
    e881708e:	7179                	addi	sp,sp,-48
    e8817090:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8817094:	892e                	mv	s2,a1
    e8817096:	89b2                	mv	s3,a2
    e8817098:	f891540b          	sdd	s0,s1,(sp),0,4
    const mDNSu8 *ptr = LocateOptRR(msg, end, DNSOpt_LeaseData_Space);
    e881709c:	4621                	li	a2,8
{
    e881709e:	842a                	mv	s0,a0
    const mDNSu8 *ptr = LocateOptRR(msg, end, DNSOpt_LeaseData_Space);
    e88170a0:	85ce                	mv	a1,s3
    e88170a2:	854a                	mv	a0,s2
{
    e88170a4:	f052                	sd	s4,32(sp)
    e88170a6:	f406                	sd	ra,40(sp)
    e88170a8:	8a36                	mv	s4,a3
    const mDNSu8 *ptr = LocateOptRR(msg, end, DNSOpt_LeaseData_Space);
    e88170aa:	8d3fe0ef          	jal	ra,e881597c <LocateOptRR>
    if (ptr)
    e88170ae:	c939                	beqz	a0,e8817104 <GetPktLease+0x76>
        ptr = GetLargeResourceRecord(m, msg, ptr, end, 0, kDNSRecordTypePacketAdd, &m->rec);
    e88170b0:	64a5                	lui	s1,0x9
    e88170b2:	4d848813          	addi	a6,s1,1240 # 94d8 <memcmp-0xe87f6b28>
    e88170b6:	862a                	mv	a2,a0
    e88170b8:	9822                	add	a6,a6,s0
    e88170ba:	08000793          	li	a5,128
    e88170be:	4701                	li	a4,0
    e88170c0:	86ce                	mv	a3,s3
    e88170c2:	85ca                	mv	a1,s2
    e88170c4:	8522                	mv	a0,s0
    e88170c6:	d6dff0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
        if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && m->rec.r.resrec.rrtype == kDNSType_OPT)
    e88170ca:	c90d                	beqz	a0,e88170fc <GetPktLease+0x6e>
    e88170cc:	00940733          	add	a4,s0,s1
    e88170d0:	4e074683          	lbu	a3,1248(a4) # 700004e0 <memcmp-0x787ffb20>
    e88170d4:	0f000793          	li	a5,240
    e88170d8:	02f68263          	beq	a3,a5,e88170fc <GetPktLease+0x6e>
    e88170dc:	4e275683          	lhu	a3,1250(a4)
    e88170e0:	02900793          	li	a5,41
    e88170e4:	00f69c63          	bne	a3,a5,e88170fc <GetPktLease+0x6e>
            const rdataOPT *const e = (const rdataOPT *)&m->rec.r.resrec.rdata->u.data[m->rec.r.resrec.rdlength];
    e88170e8:	50873783          	ld	a5,1288(a4)
    e88170ec:	4ec75703          	lhu	a4,1260(a4)
                if (o->opt == kDNSOpt_Lease)
    e88170f0:	4689                	li	a3,2
            const rdataOPT *const e = (const rdataOPT *)&m->rec.r.resrec.rdata->u.data[m->rec.r.resrec.rdlength];
    e88170f2:	0711                	addi	a4,a4,4
    e88170f4:	973e                	add	a4,a4,a5
            for (o = &m->rec.r.resrec.rdata->u.opt[0]; o < e; o++)
    e88170f6:	0791                	addi	a5,a5,4
    e88170f8:	00e7e863          	bltu	a5,a4,e8817108 <GetPktLease+0x7a>
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e88170fc:	67a5                	lui	a5,0x9
    e88170fe:	943e                	add	s0,s0,a5
    e8817100:	4e040023          	sb	zero,1248(s0)
    return mDNSfalse;
    e8817104:	4501                	li	a0,0
    e8817106:	a829                	j	e8817120 <GetPktLease+0x92>
                if (o->opt == kDNSOpt_Lease)
    e8817108:	0007d603          	lhu	a2,0(a5) # 9000 <memcmp-0xe87f7000>
    e881710c:	02d61263          	bne	a2,a3,e8817130 <GetPktLease+0xa2>
                    *lease = o->u.updatelease;
    e8817110:	43dc                	lw	a5,4(a5)
                    return mDNStrue;
    e8817112:	4505                	li	a0,1
                    *lease = o->u.updatelease;
    e8817114:	00fa2023          	sw	a5,0(s4)
                    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8817118:	67a5                	lui	a5,0x9
    e881711a:	943e                	add	s0,s0,a5
    e881711c:	4e040023          	sb	zero,1248(s0)
}
    e8817120:	70a2                	ld	ra,40(sp)
    e8817122:	f891440b          	ldd	s0,s1,(sp),0,4
    e8817126:	7a02                	ld	s4,32(sp)
    e8817128:	fb31490b          	ldd	s2,s3,(sp),1,4
    e881712c:	6145                	addi	sp,sp,48
    e881712e:	8082                	ret
            for (o = &m->rec.r.resrec.rdata->u.opt[0]; o < e; o++)
    e8817130:	07e1                	addi	a5,a5,24
    e8817132:	b7d9                	j	e88170f8 <GetPktLease+0x6a>

00000000e8817134 <DumpRecords>:
{
    e8817134:	dd010113          	addi	sp,sp,-560
    e8817138:	20913c23          	sd	s1,536(sp)
    LogInfo("%2d %s", count, label);
    e881713c:	000be497          	auipc	s1,0xbe
    e8817140:	93848493          	addi	s1,s1,-1736 # e88d4a74 <mDNS_LoggingEnabled>
{
    e8817144:	fbda                	sd	s6,496(sp)
    e8817146:	8b3a                	mv	s6,a4
    LogInfo("%2d %s", count, label);
    e8817148:	4098                	lw	a4,0(s1)
{
    e881714a:	22813023          	sd	s0,544(sp)
    e881714e:	ffd6                	sd	s5,504(sp)
    e8817150:	f7de                	sd	s7,488(sp)
    e8817152:	f3e2                	sd	s8,480(sp)
    e8817154:	22113423          	sd	ra,552(sp)
    e8817158:	21213823          	sd	s2,528(sp)
    e881715c:	21313423          	sd	s3,520(sp)
    e8817160:	21413023          	sd	s4,512(sp)
    e8817164:	efe6                	sd	s9,472(sp)
    e8817166:	ebea                	sd	s10,464(sp)
    e8817168:	e7ee                	sd	s11,456(sp)
    e881716a:	7379                	lui	t1,0xffffe
    e881716c:	911a                	add	sp,sp,t1
    e881716e:	8aaa                	mv	s5,a0
    e8817170:	8bae                	mv	s7,a1
    e8817172:	8432                	mv	s0,a2
    e8817174:	8c36                	mv	s8,a3
    LogInfo("%2d %s", count, label);
    e8817176:	cb11                	beqz	a4,e881718a <DumpRecords+0x56>
    e8817178:	86be                	mv	a3,a5
    e881717a:	865a                	mv	a2,s6
    e881717c:	0008b597          	auipc	a1,0x8b
    e8817180:	0c458593          	addi	a1,a1,196 # e88a2240 <DiscardPort+0x230>
    e8817184:	450d                	li	a0,3
    e8817186:	326180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        ptr = GetLargeResourceRecord(m, msg, ptr, end, mDNSInterface_Any, kDNSRecordTypePacketAns, &largecr);
    e881718a:	6709                	lui	a4,0x2
    e881718c:	0814                	addi	a3,sp,16
    e881718e:	1b070793          	addi	a5,a4,432 # 21b0 <memcmp-0xe87fde50>
    e8817192:	7979                	lui	s2,0xffffe
    e8817194:	97b6                	add	a5,a5,a3
    e8817196:	e5890a13          	addi	s4,s2,-424 # ffffffffffffde58 <__DRAM0_INF_BASE+0xffffffff0000de58>
    e881719a:	9a3e                	add	s4,s4,a5
            LogInfo("%2d TTL%8d %s", i, largecr.r.resrec.rroriginalttl, CRDisplayString(m, &largecr.r));
    e881719c:	1b070793          	addi	a5,a4,432
    e88171a0:	97b6                	add	a5,a5,a3
{
    e88171a2:	4981                	li	s3,0
            LogInfo("%2d TTL%8d %s", i, largecr.r.resrec.rroriginalttl, CRDisplayString(m, &largecr.r));
    e88171a4:	993e                	add	s2,s2,a5
    e88171a6:	03ba8c93          	addi	s9,s5,59
    e88171aa:	008a0d13          	addi	s10,s4,8
    e88171ae:	0008bd97          	auipc	s11,0x8b
    e88171b2:	09ad8d93          	addi	s11,s11,154 # e88a2248 <DiscardPort+0x238>
    for (i = 0; i < count && ptr; i++)
    e88171b6:	05698f63          	beq	s3,s6,e8817214 <DumpRecords+0xe0>
    e88171ba:	ec01                	bnez	s0,e88171d2 <DumpRecords+0x9e>
        LogInfo("DumpRecords: ERROR: Premature end of packet data");
    e88171bc:	409c                	lw	a5,0(s1)
    e88171be:	4401                	li	s0,0
    e88171c0:	cbb9                	beqz	a5,e8817216 <DumpRecords+0xe2>
    e88171c2:	0008b597          	auipc	a1,0x8b
    e88171c6:	09658593          	addi	a1,a1,150 # e88a2258 <DiscardPort+0x248>
    e88171ca:	450d                	li	a0,3
    e88171cc:	2e0180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88171d0:	a099                	j	e8817216 <DumpRecords+0xe2>
        ptr = GetLargeResourceRecord(m, msg, ptr, end, mDNSInterface_Any, kDNSRecordTypePacketAns, &largecr);
    e88171d2:	8622                	mv	a2,s0
    e88171d4:	8852                	mv	a6,s4
    e88171d6:	0c000793          	li	a5,192
    e88171da:	4701                	li	a4,0
    e88171dc:	86e2                	mv	a3,s8
    e88171de:	85de                	mv	a1,s7
    e88171e0:	8556                	mv	a0,s5
    e88171e2:	c51ff0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
    e88171e6:	842a                	mv	s0,a0
        if (ptr)
    e88171e8:	c505                	beqz	a0,e8817210 <DumpRecords+0xdc>
            LogInfo("%2d TTL%8d %s", i, largecr.r.resrec.rroriginalttl, CRDisplayString(m, &largecr.r));
    e88171ea:	409c                	lw	a5,0(s1)
    e88171ec:	c395                	beqz	a5,e8817210 <DumpRecords+0xdc>
    e88171ee:	e8893583          	ld	a1,-376(s2)
    e88171f2:	e6892683          	lw	a3,-408(s2)
    e88171f6:	8666                	mv	a2,s9
    e88171f8:	0591                	addi	a1,a1,4
    e88171fa:	856a                	mv	a0,s10
    e88171fc:	e436                	sd	a3,8(sp)
    e88171fe:	817ff0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8817202:	872a                	mv	a4,a0
    e8817204:	66a2                	ld	a3,8(sp)
    e8817206:	864e                	mv	a2,s3
    e8817208:	85ee                	mv	a1,s11
    e881720a:	450d                	li	a0,3
    e881720c:	2a0180ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (i = 0; i < count && ptr; i++)
    e8817210:	2985                	addiw	s3,s3,1
    e8817212:	b755                	j	e88171b6 <DumpRecords+0x82>
    if (!ptr)
    e8817214:	d445                	beqz	s0,e88171bc <DumpRecords+0x88>
}
    e8817216:	6309                	lui	t1,0x2
    e8817218:	911a                	add	sp,sp,t1
    e881721a:	22813083          	ld	ra,552(sp)
    e881721e:	8522                	mv	a0,s0
    e8817220:	21813483          	ld	s1,536(sp)
    e8817224:	22013403          	ld	s0,544(sp)
    e8817228:	21013903          	ld	s2,528(sp)
    e881722c:	20813983          	ld	s3,520(sp)
    e8817230:	20013a03          	ld	s4,512(sp)
    e8817234:	7afe                	ld	s5,504(sp)
    e8817236:	7b5e                	ld	s6,496(sp)
    e8817238:	7bbe                	ld	s7,488(sp)
    e881723a:	7c1e                	ld	s8,480(sp)
    e881723c:	6cfe                	ld	s9,472(sp)
    e881723e:	6d5e                	ld	s10,464(sp)
    e8817240:	6dbe                	ld	s11,456(sp)
    e8817242:	23010113          	addi	sp,sp,560
    e8817246:	8082                	ret

00000000e8817248 <DumpPacket>:
{
    e8817248:	b0010113          	addi	sp,sp,-1280
    e881724c:	4e813823          	sd	s0,1264(sp)
    e8817250:	50013403          	ld	s0,1280(sp)
    e8817254:	4e913423          	sd	s1,1256(sp)
    e8817258:	4f213023          	sd	s2,1248(sp)
    e881725c:	4d313c23          	sd	s3,1240(sp)
    e8817260:	4d513423          	sd	s5,1224(sp)
    e8817264:	4d613023          	sd	s6,1216(sp)
    e8817268:	4b713c23          	sd	s7,1208(sp)
    e881726c:	4b813823          	sd	s8,1200(sp)
    e8817270:	4b913423          	sd	s9,1192(sp)
    e8817274:	4ba13023          	sd	s10,1184(sp)
    e8817278:	49b13c23          	sd	s11,1176(sp)
    e881727c:	4e113c23          	sd	ra,1272(sp)
    e8817280:	4d413823          	sd	s4,1232(sp)
    e8817284:	00244a03          	lbu	s4,2(s0)
    e8817288:	8c2e                	mv	s8,a1
    e881728a:	8b2a                	mv	s6,a0
    e881728c:	8d32                	mv	s10,a2
    char tbuffer[64], sbuffer[64], dbuffer[64] = "";
    e881728e:	4581                	li	a1,0
    e8817290:	03800613          	li	a2,56
    e8817294:	0208                	addi	a0,sp,256
{
    e8817296:	8bb6                	mv	s7,a3
    e8817298:	8dba                	mv	s11,a4
    e881729a:	8abe                	mv	s5,a5
    e881729c:	8cc2                	mv	s9,a6
    e881729e:	84c6                	mv	s1,a7
    e88172a0:	50813983          	ld	s3,1288(sp)
    e88172a4:	078a7a13          	andi	s4,s4,120
    const mDNSu8 *ptr = msg->data;
    e88172a8:	00c40913          	addi	s2,s0,12
    char tbuffer[64], sbuffer[64], dbuffer[64] = "";
    e88172ac:	fd82                	sd	zero,248(sp)
    e88172ae:	e8be80ef          	jal	ra,e8800138 <memset>
    if (!status) tbuffer[mDNS_snprintf(tbuffer, sizeof(tbuffer), sent ? "Sent" : "Received"                        )] = 0;
    e88172b2:	380c1863          	bnez	s8,e8817642 <DumpPacket+0x3fa>
    e88172b6:	0008b617          	auipc	a2,0x8b
    e88172ba:	d6260613          	addi	a2,a2,-670 # e88a2018 <DiscardPort+0x8>
    e88172be:	000d1663          	bnez	s10,e88172ca <DumpPacket+0x82>
    e88172c2:	0008b617          	auipc	a2,0x8b
    e88172c6:	d5e60613          	addi	a2,a2,-674 # e88a2020 <DiscardPort+0x10>
    e88172ca:	04000593          	li	a1,64
    e88172ce:	18a8                	addi	a0,sp,120
    e88172d0:	973fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    else tbuffer[mDNS_snprintf(tbuffer, sizeof(tbuffer), "ERROR %d %sing", status, sent ? "Send" : "Receive")] = 0;
    e88172d4:	18bc                	addi	a5,sp,120
    e88172d6:	10a7d00b          	surb	zero,a5,a0,0
    if (sent) sbuffer[mDNS_snprintf(sbuffer, sizeof(sbuffer), "port "        )] = 0;
    e88172da:	0b810c13          	addi	s8,sp,184
    e88172de:	380d0763          	beqz	s10,e881766c <DumpPacket+0x424>
    e88172e2:	0008b617          	auipc	a2,0x8b
    e88172e6:	eae60613          	addi	a2,a2,-338 # e88a2190 <DiscardPort+0x180>
    e88172ea:	04000593          	li	a1,64
    e88172ee:	8562                	mv	a0,s8
    e88172f0:	953fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    else sbuffer[mDNS_snprintf(sbuffer, sizeof(sbuffer), "%#a:", srcaddr)] = 0;
    e88172f4:	10ac500b          	surb	zero,s8,a0,0
    if (dstaddr || !mDNSIPPortIsZero(dstport))
    e88172f8:	000c9563          	bnez	s9,e8817302 <DumpPacket+0xba>
    e88172fc:	3c04b78b          	extu	a5,s1,15,0
    e8817300:	c795                	beqz	a5,e881732c <DumpPacket+0xe4>
    e8817302:	0ff4f713          	andi	a4,s1,255
        dbuffer[mDNS_snprintf(dbuffer, sizeof(dbuffer), " to %#a:%d", dstaddr, mDNSVal16(dstport))] = 0;
    e8817306:	0f810d13          	addi	s10,sp,248
    e881730a:	3c84b48b          	extu	s1,s1,15,8
    e881730e:	0087171b          	slliw	a4,a4,0x8
    e8817312:	8f45                	or	a4,a4,s1
    e8817314:	86e6                	mv	a3,s9
    e8817316:	0008b617          	auipc	a2,0x8b
    e881731a:	e8a60613          	addi	a2,a2,-374 # e88a21a0 <DiscardPort+0x190>
    e881731e:	04000593          	li	a1,64
    e8817322:	856a                	mv	a0,s10
    e8817324:	91ffe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8817328:	10ad500b          	surb	zero,s10,a0,0
    LogInfo("-- %s %s DNS %s%s (flags %02X%02X) RCODE: %s (%d) %s%s%s%s%s%sID: %d %d bytes from %s%d%s%s --",
    e881732c:	000bd497          	auipc	s1,0xbd
    e8817330:	74848493          	addi	s1,s1,1864 # e88d4a74 <mDNS_LoggingEnabled>
    e8817334:	409c                	lw	a5,0(s1)
    e8817336:	24078163          	beqz	a5,e8817578 <DumpPacket+0x330>
    e881733a:	00244583          	lbu	a1,2(s0)
    e881733e:	000aa717          	auipc	a4,0xaa
    e8817342:	f3270713          	addi	a4,a4,-206 # e88c1270 <kHTTPServerClass+0x90>
    e8817346:	0785f793          	andi	a5,a1,120
    e881734a:	882e                	mv	a6,a1
    e881734c:	cbb1                	beqz	a5,e88173a0 <DumpPacket+0x158>
    e881734e:	46a1                	li	a3,8
    e8817350:	0008b717          	auipc	a4,0x8b
    e8817354:	d0070713          	addi	a4,a4,-768 # e88a2050 <DiscardPort+0x40>
    e8817358:	04d78463          	beq	a5,a3,e88173a0 <DumpPacket+0x158>
    e881735c:	46c1                	li	a3,16
    e881735e:	0008b717          	auipc	a4,0x8b
    e8817362:	d0a70713          	addi	a4,a4,-758 # e88a2068 <DiscardPort+0x58>
    e8817366:	02d78d63          	beq	a5,a3,e88173a0 <DumpPacket+0x158>
    e881736a:	46e1                	li	a3,24
    e881736c:	0008b717          	auipc	a4,0x8b
    e8817370:	cd470713          	addi	a4,a4,-812 # e88a2040 <DiscardPort+0x30>
    e8817374:	02d78663          	beq	a5,a3,e88173a0 <DumpPacket+0x158>
    e8817378:	02000693          	li	a3,32
    e881737c:	0008b717          	auipc	a4,0x8b
    e8817380:	cdc70713          	addi	a4,a4,-804 # e88a2058 <DiscardPort+0x48>
    e8817384:	00d78e63          	beq	a5,a3,e88173a0 <DumpPacket+0x158>
    e8817388:	02800693          	li	a3,40
    e881738c:	0008b717          	auipc	a4,0x8b
    e8817390:	cd470713          	addi	a4,a4,-812 # e88a2060 <DiscardPort+0x50>
    e8817394:	00d78663          	beq	a5,a3,e88173a0 <DumpPacket+0x158>
    e8817398:	0008b717          	auipc	a4,0x8b
    e881739c:	cd870713          	addi	a4,a4,-808 # e88a2070 <DiscardPort+0x60>
    e88173a0:	fc75b68b          	extu	a3,a1,63,7
    e88173a4:	00091797          	auipc	a5,0x91
    e88173a8:	f5478793          	addi	a5,a5,-172 # e88a82f8 <hexValues.12413+0x348>
    e88173ac:	e689                	bnez	a3,e88173b6 <DumpPacket+0x16e>
    e88173ae:	0008b797          	auipc	a5,0x8b
    e88173b2:	cca78793          	addi	a5,a5,-822 # e88a2078 <DiscardPort+0x68>
    e88173b6:	00344503          	lbu	a0,3(s0)
    e88173ba:	0008b697          	auipc	a3,0x8b
    e88173be:	cee68693          	addi	a3,a3,-786 # e88a20a8 <DiscardPort+0x98>
    e88173c2:	00f57613          	andi	a2,a0,15
    e88173c6:	88aa                	mv	a7,a0
    e88173c8:	00060f1b          	sext.w	t5,a2
    e88173cc:	ca59                	beqz	a2,e8817462 <DumpPacket+0x21a>
    e88173ce:	4305                	li	t1,1
    e88173d0:	0008b697          	auipc	a3,0x8b
    e88173d4:	ce068693          	addi	a3,a3,-800 # e88a20b0 <DiscardPort+0xa0>
    e88173d8:	08660563          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e88173dc:	4309                	li	t1,2
    e88173de:	0008b697          	auipc	a3,0x8b
    e88173e2:	cda68693          	addi	a3,a3,-806 # e88a20b8 <DiscardPort+0xa8>
    e88173e6:	06660e63          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e88173ea:	430d                	li	t1,3
    e88173ec:	0008b697          	auipc	a3,0x8b
    e88173f0:	cdc68693          	addi	a3,a3,-804 # e88a20c8 <DiscardPort+0xb8>
    e88173f4:	06660763          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e88173f8:	4311                	li	t1,4
    e88173fa:	0008b697          	auipc	a3,0x8b
    e88173fe:	cde68693          	addi	a3,a3,-802 # e88a20d8 <DiscardPort+0xc8>
    e8817402:	06660063          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e8817406:	4315                	li	t1,5
    e8817408:	0008b697          	auipc	a3,0x8b
    e881740c:	cd868693          	addi	a3,a3,-808 # e88a20e0 <DiscardPort+0xd0>
    e8817410:	04660963          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e8817414:	4319                	li	t1,6
    e8817416:	0008b697          	auipc	a3,0x8b
    e881741a:	c7268693          	addi	a3,a3,-910 # e88a2088 <DiscardPort+0x78>
    e881741e:	04660263          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e8817422:	431d                	li	t1,7
    e8817424:	0008b697          	auipc	a3,0x8b
    e8817428:	cc468693          	addi	a3,a3,-828 # e88a20e8 <DiscardPort+0xd8>
    e881742c:	02660b63          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e8817430:	4321                	li	t1,8
    e8817432:	0008b697          	auipc	a3,0x8b
    e8817436:	c4e68693          	addi	a3,a3,-946 # e88a2080 <DiscardPort+0x70>
    e881743a:	02660463          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e881743e:	4325                	li	t1,9
    e8817440:	0008b697          	auipc	a3,0x8b
    e8817444:	c5868693          	addi	a3,a3,-936 # e88a2098 <DiscardPort+0x88>
    e8817448:	00660d63          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e881744c:	4329                	li	t1,10
    e881744e:	0008b697          	auipc	a3,0x8b
    e8817452:	c5268693          	addi	a3,a3,-942 # e88a20a0 <DiscardPort+0x90>
    e8817456:	00660663          	beq	a2,t1,e8817462 <DumpPacket+0x21a>
    e881745a:	0008b697          	auipc	a3,0x8b
    e881745e:	c9668693          	addi	a3,a3,-874 # e88a20f0 <DiscardPort+0xe0>
    e8817462:	0045f613          	andi	a2,a1,4
    e8817466:	0008b317          	auipc	t1,0x8b
    e881746a:	c9230313          	addi	t1,t1,-878 # e88a20f8 <DiscardPort+0xe8>
    e881746e:	e609                	bnez	a2,e8817478 <DumpPacket+0x230>
    e8817470:	000aa317          	auipc	t1,0xaa
    e8817474:	e0030313          	addi	t1,t1,-512 # e88c1270 <kHTTPServerClass+0x90>
    e8817478:	0025ff93          	andi	t6,a1,2
    e881747c:	0008be17          	auipc	t3,0x8b
    e8817480:	c84e0e13          	addi	t3,t3,-892 # e88a2100 <DiscardPort+0xf0>
    e8817484:	000f9663          	bnez	t6,e8817490 <DumpPacket+0x248>
    e8817488:	000aae17          	auipc	t3,0xaa
    e881748c:	de8e0e13          	addi	t3,t3,-536 # e88c1270 <kHTTPServerClass+0x90>
    e8817490:	8985                	andi	a1,a1,1
    e8817492:	0008be97          	auipc	t4,0x8b
    e8817496:	c76e8e93          	addi	t4,t4,-906 # e88a2108 <DiscardPort+0xf8>
    e881749a:	e589                	bnez	a1,e88174a4 <DumpPacket+0x25c>
    e881749c:	000aae97          	auipc	t4,0xaa
    e88174a0:	dd4e8e93          	addi	t4,t4,-556 # e88c1270 <kHTTPServerClass+0x90>
    e88174a4:	fc75360b          	extu	a2,a0,63,7
    e88174a8:	0008b297          	auipc	t0,0x8b
    e88174ac:	c6828293          	addi	t0,t0,-920 # e88a2110 <DiscardPort+0x100>
    e88174b0:	e609                	bnez	a2,e88174ba <DumpPacket+0x272>
    e88174b2:	000aa297          	auipc	t0,0xaa
    e88174b6:	dbe28293          	addi	t0,t0,-578 # e88c1270 <kHTTPServerClass+0x90>
    e88174ba:	02057613          	andi	a2,a0,32
    e88174be:	0008b397          	auipc	t2,0x8b
    e88174c2:	c5a38393          	addi	t2,t2,-934 # e88a2118 <DiscardPort+0x108>
    e88174c6:	e609                	bnez	a2,e88174d0 <DumpPacket+0x288>
    e88174c8:	000aa397          	auipc	t2,0xaa
    e88174cc:	da838393          	addi	t2,t2,-600 # e88c1270 <kHTTPServerClass+0x90>
    e88174d0:	8941                	andi	a0,a0,16
    e88174d2:	0008b097          	auipc	ra,0x8b
    e88174d6:	c4e08093          	addi	ra,ra,-946 # e88a2120 <DiscardPort+0x110>
    e88174da:	e509                	bnez	a0,e88174e4 <DumpPacket+0x29c>
    e88174dc:	000aa097          	auipc	ra,0xaa
    e88174e0:	d9408093          	addi	ra,ra,-620 # e88c1270 <kHTTPServerClass+0x90>
    e88174e4:	00044603          	lbu	a2,0(s0)
    e88174e8:	00144583          	lbu	a1,1(s0)
    e88174ec:	3c8ab50b          	extu	a0,s5,15,8
    e88174f0:	0086161b          	slliw	a2,a2,0x8
    e88174f4:	8e4d                	or	a2,a2,a1
    e88174f6:	0ffaf593          	andi	a1,s5,255
    e88174fa:	00859a9b          	slliw	s5,a1,0x8
    e88174fe:	41298cb3          	sub	s9,s3,s2
    e8817502:	00aaeab3          	or	s5,s5,a0
    e8817506:	0008b597          	auipc	a1,0x8b
    e881750a:	c2258593          	addi	a1,a1,-990 # e88a2128 <DiscardPort+0x118>
    e881750e:	000f9663          	bnez	t6,e881751a <DumpPacket+0x2d2>
    e8817512:	000aa597          	auipc	a1,0xaa
    e8817516:	d5e58593          	addi	a1,a1,-674 # e88c1270 <kHTTPServerClass+0x90>
    e881751a:	f4ae                	sd	a1,104(sp)
    e881751c:	19ac                	addi	a1,sp,248
    e881751e:	f0ae                	sd	a1,96(sp)
    e8817520:	e0b2                	sd	a2,64(sp)
    e8817522:	e036                	sd	a3,0(sp)
    e8817524:	ecd6                	sd	s5,88(sp)
    e8817526:	e8e2                	sd	s8,80(sp)
    e8817528:	e4e6                	sd	s9,72(sp)
    e881752a:	fc06                	sd	ra,56(sp)
    e881752c:	f81e                	sd	t2,48(sp)
    e881752e:	f416                	sd	t0,40(sp)
    e8817530:	f076                	sd	t4,32(sp)
    e8817532:	ec72                	sd	t3,24(sp)
    e8817534:	e81a                	sd	t1,16(sp)
    e8817536:	e47a                	sd	t5,8(sp)
    e8817538:	86de                	mv	a3,s7
    e881753a:	18b0                	addi	a2,sp,120
    e881753c:	0008b597          	auipc	a1,0x8b
    e8817540:	c7458593          	addi	a1,a1,-908 # e88a21b0 <DiscardPort+0x1a0>
    e8817544:	450d                	li	a0,3
    e8817546:	767170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    LogInfo("%2d %s", msg->h.numQuestions, IsUpdate ? "Zone" : "Questions");
    e881754a:	409c                	lw	a5,0(s1)
    e881754c:	c795                	beqz	a5,e8817578 <DumpPacket+0x330>
    e881754e:	02800793          	li	a5,40
    e8817552:	00445603          	lhu	a2,4(s0)
    e8817556:	0008b697          	auipc	a3,0x8b
    e881755a:	be268693          	addi	a3,a3,-1054 # e88a2138 <DiscardPort+0x128>
    e881755e:	00fa0663          	beq	s4,a5,e881756a <DumpPacket+0x322>
    e8817562:	0008b697          	auipc	a3,0x8b
    e8817566:	bde68693          	addi	a3,a3,-1058 # e88a2140 <DiscardPort+0x130>
    e881756a:	0008b597          	auipc	a1,0x8b
    e881756e:	cd658593          	addi	a1,a1,-810 # e88a2240 <DiscardPort+0x230>
    e8817572:	450d                	li	a0,3
    e8817574:	739170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8817578:	4a81                	li	s5,0
        if (ptr) LogInfo("%2d %##s %s", i, q.qname.c, DNSTypeName(q.qtype));
    e881757a:	0008bb97          	auipc	s7,0x8b
    e881757e:	c96b8b93          	addi	s7,s7,-874 # e88a2210 <DiscardPort+0x200>
    for (i = 0; i < msg->h.numQuestions && ptr; i++)
    e8817582:	00445783          	lhu	a5,4(s0)
    e8817586:	00fad463          	bge	s5,a5,e881758e <DumpPacket+0x346>
    e881758a:	0e091c63          	bnez	s2,e8817682 <DumpPacket+0x43a>
    ptr = DumpRecords(m, msg, ptr, end, msg->h.numAnswers,     IsUpdate ? "Prerequisites" : "Answers");
    e881758e:	02800693          	li	a3,40
    e8817592:	00645703          	lhu	a4,6(s0)
    e8817596:	0008b797          	auipc	a5,0x8b
    e881759a:	bba78793          	addi	a5,a5,-1094 # e88a2150 <DiscardPort+0x140>
    e881759e:	00da0663          	beq	s4,a3,e88175aa <DumpPacket+0x362>
    e88175a2:	0008b797          	auipc	a5,0x8b
    e88175a6:	bbe78793          	addi	a5,a5,-1090 # e88a2160 <DiscardPort+0x150>
    e88175aa:	86ce                	mv	a3,s3
    e88175ac:	864a                	mv	a2,s2
    e88175ae:	85a2                	mv	a1,s0
    e88175b0:	855a                	mv	a0,s6
    e88175b2:	b83ff0ef          	jal	ra,e8817134 <DumpRecords>
    e88175b6:	862a                	mv	a2,a0
    ptr = DumpRecords(m, msg, ptr, end, msg->h.numAuthorities, IsUpdate ? "Updates"       : "Authorities");
    e88175b8:	02800693          	li	a3,40
    e88175bc:	00845703          	lhu	a4,8(s0)
    e88175c0:	0008b797          	auipc	a5,0x8b
    e88175c4:	ba878793          	addi	a5,a5,-1112 # e88a2168 <DiscardPort+0x158>
    e88175c8:	00da0663          	beq	s4,a3,e88175d4 <DumpPacket+0x38c>
    e88175cc:	0008b797          	auipc	a5,0x8b
    e88175d0:	ba478793          	addi	a5,a5,-1116 # e88a2170 <DiscardPort+0x160>
    e88175d4:	86ce                	mv	a3,s3
    e88175d6:	85a2                	mv	a1,s0
    e88175d8:	855a                	mv	a0,s6
    e88175da:	b5bff0ef          	jal	ra,e8817134 <DumpRecords>
          DumpRecords(m, msg, ptr, end, msg->h.numAdditionals, "Additionals");
    e88175de:	862a                	mv	a2,a0
    e88175e0:	00a45703          	lhu	a4,10(s0)
    e88175e4:	0008b797          	auipc	a5,0x8b
    e88175e8:	c3c78793          	addi	a5,a5,-964 # e88a2220 <DiscardPort+0x210>
    e88175ec:	86ce                	mv	a3,s3
    e88175ee:	85a2                	mv	a1,s0
    e88175f0:	855a                	mv	a0,s6
    e88175f2:	b43ff0ef          	jal	ra,e8817134 <DumpRecords>
    LogInfo("--------------");
    e88175f6:	409c                	lw	a5,0(s1)
    e88175f8:	cb81                	beqz	a5,e8817608 <DumpPacket+0x3c0>
    e88175fa:	0008b597          	auipc	a1,0x8b
    e88175fe:	c3658593          	addi	a1,a1,-970 # e88a2230 <DiscardPort+0x220>
    e8817602:	450d                	li	a0,3
    e8817604:	6a9170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8817608:	4f813083          	ld	ra,1272(sp)
    e881760c:	4f013403          	ld	s0,1264(sp)
    e8817610:	4e813483          	ld	s1,1256(sp)
    e8817614:	4e013903          	ld	s2,1248(sp)
    e8817618:	4d813983          	ld	s3,1240(sp)
    e881761c:	4d013a03          	ld	s4,1232(sp)
    e8817620:	4c813a83          	ld	s5,1224(sp)
    e8817624:	4c013b03          	ld	s6,1216(sp)
    e8817628:	4b813b83          	ld	s7,1208(sp)
    e881762c:	4b013c03          	ld	s8,1200(sp)
    e8817630:	4a813c83          	ld	s9,1192(sp)
    e8817634:	4a013d03          	ld	s10,1184(sp)
    e8817638:	49813d83          	ld	s11,1176(sp)
    e881763c:	50010113          	addi	sp,sp,1280
    e8817640:	8082                	ret
    else tbuffer[mDNS_snprintf(tbuffer, sizeof(tbuffer), "ERROR %d %sing", status, sent ? "Send" : "Receive")] = 0;
    e8817642:	0008b717          	auipc	a4,0x8b
    e8817646:	9ee70713          	addi	a4,a4,-1554 # e88a2030 <DiscardPort+0x20>
    e881764a:	000d1663          	bnez	s10,e8817656 <DumpPacket+0x40e>
    e881764e:	0008b717          	auipc	a4,0x8b
    e8817652:	9ea70713          	addi	a4,a4,-1558 # e88a2038 <DiscardPort+0x28>
    e8817656:	86e2                	mv	a3,s8
    e8817658:	0008b617          	auipc	a2,0x8b
    e881765c:	b2860613          	addi	a2,a2,-1240 # e88a2180 <DiscardPort+0x170>
    e8817660:	04000593          	li	a1,64
    e8817664:	18a8                	addi	a0,sp,120
    e8817666:	ddcfe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e881766a:	b1ad                	j	e88172d4 <DumpPacket+0x8c>
    else sbuffer[mDNS_snprintf(sbuffer, sizeof(sbuffer), "%#a:", srcaddr)] = 0;
    e881766c:	86ee                	mv	a3,s11
    e881766e:	0008b617          	auipc	a2,0x8b
    e8817672:	b2a60613          	addi	a2,a2,-1238 # e88a2198 <DiscardPort+0x188>
    e8817676:	04000593          	li	a1,64
    e881767a:	8562                	mv	a0,s8
    e881767c:	dc6fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8817680:	b995                	j	e88172f4 <DumpPacket+0xac>
        ptr = getQuestion(msg, ptr, end, mDNSInterface_Any, &q);
    e8817682:	85ca                	mv	a1,s2
    e8817684:	1a38                	addi	a4,sp,312
    e8817686:	4681                	li	a3,0
    e8817688:	864e                	mv	a2,s3
    e881768a:	8522                	mv	a0,s0
    e881768c:	9b0fe0ef          	jal	ra,e881583c <getQuestion>
    e8817690:	892a                	mv	s2,a0
        if (ptr) LogInfo("%2d %##s %s", i, q.qname.c, DNSTypeName(q.qtype));
    e8817692:	cd11                	beqz	a0,e88176ae <DumpPacket+0x466>
    e8817694:	409c                	lw	a5,0(s1)
    e8817696:	cf81                	beqz	a5,e88176ae <DumpPacket+0x466>
    e8817698:	44c15503          	lhu	a0,1100(sp)
    e881769c:	dc4fe0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88176a0:	872a                	mv	a4,a0
    e88176a2:	06f4                	addi	a3,sp,844
    e88176a4:	8656                	mv	a2,s5
    e88176a6:	85de                	mv	a1,s7
    e88176a8:	450d                	li	a0,3
    e88176aa:	603170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (i = 0; i < msg->h.numQuestions && ptr; i++)
    e88176ae:	2a85                	addiw	s5,s5,1
    e88176b0:	bdc9                	j	e8817582 <DumpPacket+0x33a>

00000000e88176b2 <mDNSSendDNSMessage>:
{
    e88176b2:	7175                	addi	sp,sp,-144
    e88176b4:	fca6                	sd	s1,120(sp)
    e88176b6:	f8ca                	sd	s2,112(sp)
    e88176b8:	f0d2                	sd	s4,96(sp)
    e88176ba:	e8da                	sd	s6,80(sp)
    e88176bc:	fc66                	sd	s9,56(sp)
    e88176be:	f86a                	sd	s10,48(sp)
    e88176c0:	e506                	sd	ra,136(sp)
    e88176c2:	e122                	sd	s0,128(sp)
    e88176c4:	f4ce                	sd	s3,104(sp)
    e88176c6:	ecd6                	sd	s5,88(sp)
    e88176c8:	e4de                	sd	s7,72(sp)
    e88176ca:	e0e2                	sd	s8,64(sp)
    e88176cc:	8b3e                	mv	s6,a5
    e88176ce:	ec32                	sd	a2,24(sp)
    mDNSu8 *limit = msg->data + AbsoluteMaxDNSMessageData;
    e88176d0:	6789                	lui	a5,0x2
    e88176d2:	2f878d13          	addi	s10,a5,760 # 22f8 <memcmp-0xe87fdd08>
    if (end < msg->data || end - msg->data > AbsoluteMaxDNSMessageData)
    e88176d6:	00c58c93          	addi	s9,a1,12
{
    e88176da:	84b6                	mv	s1,a3
    e88176dc:	8a3a                	mv	s4,a4
    e88176de:	694a                	ld	s2,144(sp)
    const mDNSu16 numAdditionals = msg->h.numAdditionals;
    e88176e0:	00a5dc03          	lhu	s8,10(a1)
    mDNSu8 *limit = msg->data + AbsoluteMaxDNSMessageData;
    e88176e4:	9d2e                	add	s10,s10,a1
    if (end < msg->data || end - msg->data > AbsoluteMaxDNSMessageData)
    e88176e6:	86b2                	mv	a3,a2
    e88176e8:	41960733          	sub	a4,a2,s9
    e88176ec:	01966663          	bltu	a2,s9,e88176f8 <mDNSSendDNSMessage+0x46>
    e88176f0:	2ec78793          	addi	a5,a5,748
    e88176f4:	02e7db63          	bge	a5,a4,e881772a <mDNSSendDNSMessage+0x78>
        LogMsg("mDNSSendDNSMessage: invalid message %p %p %d", msg->data, end, end - msg->data);
    e88176f8:	8666                	mv	a2,s9
    e88176fa:	0008b597          	auipc	a1,0x8b
    e88176fe:	6a658593          	addi	a1,a1,1702 # e88a2da0 <mDNSInterface_Unicast+0x20>
    e8817702:	4501                	li	a0,0
        return mStatus_BadParamErr;
    e8817704:	74c1                	lui	s1,0xffff0
        LogMsg("mDNSSendDNSMessage: invalid message %p %p %d", msg->data, end, end - msg->data);
    e8817706:	5a7170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mStatus_BadParamErr;
    e881770a:	14f1                	addi	s1,s1,-4
}
    e881770c:	60aa                	ld	ra,136(sp)
    e881770e:	640a                	ld	s0,128(sp)
    e8817710:	8526                	mv	a0,s1
    e8817712:	7946                	ld	s2,112(sp)
    e8817714:	74e6                	ld	s1,120(sp)
    e8817716:	79a6                	ld	s3,104(sp)
    e8817718:	7a06                	ld	s4,96(sp)
    e881771a:	6ae6                	ld	s5,88(sp)
    e881771c:	6b46                	ld	s6,80(sp)
    e881771e:	6ba6                	ld	s7,72(sp)
    e8817720:	6c06                	ld	s8,64(sp)
    e8817722:	7ce2                	ld	s9,56(sp)
    e8817724:	7d42                	ld	s10,48(sp)
    e8817726:	6149                	addi	sp,sp,144
    e8817728:	8082                	ret
    newend = putHINFO(m, msg, end, authInfo, limit);
    e881772a:	876a                	mv	a4,s10
    e881772c:	86ca                	mv	a3,s2
    e881772e:	8aaa                	mv	s5,a0
    e8817730:	842e                	mv	s0,a1
    e8817732:	8bc2                	mv	s7,a6
    e8817734:	89c6                	mv	s3,a7
    e8817736:	accff0ef          	jal	ra,e8816a02 <putHINFO>
    if (!newend) LogMsg("mDNSSendDNSMessage: putHINFO failed msg %p end %p, limit %p", msg->data, end, limit); // Not fatal
    e881773a:	12051363          	bnez	a0,e8817860 <mDNSSendDNSMessage+0x1ae>
    e881773e:	66e2                	ld	a3,24(sp)
    e8817740:	876a                	mv	a4,s10
    e8817742:	8666                	mv	a2,s9
    e8817744:	0008b597          	auipc	a1,0x8b
    e8817748:	68c58593          	addi	a1,a1,1676 # e88a2dd0 <mDNSInterface_Unicast+0x50>
    e881774c:	561170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    SwapDNSHeaderBytes(msg);
    e8817750:	00444783          	lbu	a5,4(s0)
    e8817754:	00544703          	lbu	a4,5(s0)
    e8817758:	0087979b          	slliw	a5,a5,0x8
    e881775c:	8fd9                	or	a5,a5,a4
    e881775e:	00f41223          	sh	a5,4(s0)
    e8817762:	00644783          	lbu	a5,6(s0)
    e8817766:	00744703          	lbu	a4,7(s0)
    e881776a:	0087979b          	slliw	a5,a5,0x8
    e881776e:	8fd9                	or	a5,a5,a4
    e8817770:	00f41323          	sh	a5,6(s0)
    e8817774:	00844783          	lbu	a5,8(s0)
    e8817778:	00944703          	lbu	a4,9(s0)
    e881777c:	0087979b          	slliw	a5,a5,0x8
    e8817780:	8fd9                	or	a5,a5,a4
    e8817782:	00f41423          	sh	a5,8(s0)
    e8817786:	00a44783          	lbu	a5,10(s0)
    e881778a:	00b44703          	lbu	a4,11(s0)
    e881778e:	0087979b          	slliw	a5,a5,0x8
    e8817792:	8fd9                	or	a5,a5,a4
    e8817794:	00f41523          	sh	a5,10(s0)
    if (authInfo) DNSDigest_SignMessage(msg, &end, authInfo, 0);    // DNSDigest_SignMessage operates on message in network byte order
    e8817798:	00090863          	beqz	s2,e88177a8 <mDNSSendDNSMessage+0xf6>
    e881779c:	4681                	li	a3,0
    e881779e:	864a                	mv	a2,s2
    e88177a0:	082c                	addi	a1,sp,24
    e88177a2:	8522                	mv	a0,s0
    e88177a4:	1c8020ef          	jal	ra,e881996c <DNSDigest_SignMessage>
    if (!end) { LogMsg("mDNSSendDNSMessage: DNSDigest_SignMessage failed"); status = mStatus_NoMemoryErr; }
    e88177a8:	6662                	ld	a2,24(sp)
    e88177aa:	ee4d                	bnez	a2,e8817864 <mDNSSendDNSMessage+0x1b2>
    e88177ac:	0008b597          	auipc	a1,0x8b
    e88177b0:	66458593          	addi	a1,a1,1636 # e88a2e10 <mDNSInterface_Unicast+0x90>
    e88177b4:	4501                	li	a0,0
    e88177b6:	74c1                	lui	s1,0xffff0
    e88177b8:	4f5170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88177bc:	14f5                	addi	s1,s1,-3
    SwapDNSHeaderBytes(msg);
    e88177be:	00444783          	lbu	a5,4(s0)
    e88177c2:	00544703          	lbu	a4,5(s0)
    e88177c6:	0087979b          	slliw	a5,a5,0x8
    e88177ca:	8fd9                	or	a5,a5,a4
    e88177cc:	00f41223          	sh	a5,4(s0)
    e88177d0:	00644783          	lbu	a5,6(s0)
    e88177d4:	00744703          	lbu	a4,7(s0)
    e88177d8:	0087979b          	slliw	a5,a5,0x8
    e88177dc:	8fd9                	or	a5,a5,a4
    e88177de:	00f41323          	sh	a5,6(s0)
    e88177e2:	00844783          	lbu	a5,8(s0)
    e88177e6:	00944703          	lbu	a4,9(s0)
    e88177ea:	0087979b          	slliw	a5,a5,0x8
    e88177ee:	8fd9                	or	a5,a5,a4
    e88177f0:	00f41423          	sh	a5,8(s0)
    e88177f4:	00a44783          	lbu	a5,10(s0)
    e88177f8:	00b44703          	lbu	a4,11(s0)
    e88177fc:	0087979b          	slliw	a5,a5,0x8
    e8817800:	8fd9                	or	a5,a5,a4
    e8817802:	00f41523          	sh	a5,10(s0)
    if (mDNS_PacketLoggingEnabled && !mDNSOpaque16IsZero(msg->h.id))
    e8817806:	000cc797          	auipc	a5,0xcc
    e881780a:	2fe78793          	addi	a5,a5,766 # e88e3b04 <mDNS_PacketLoggingEnabled>
    e881780e:	439c                	lw	a5,0(a5)
    e8817810:	c7a9                	beqz	a5,e881785a <mDNSSendDNSMessage+0x1a8>
    e8817812:	00045783          	lhu	a5,0(s0)
    e8817816:	c3b1                	beqz	a5,e881785a <mDNSSendDNSMessage+0x1a8>
        DumpPacket(m, status, mDNStrue, sock && (sock->flags & kTCPSocketFlags_UseTLS) ? "TLS" : sock ? "TCP" : "UDP", mDNSNULL, src ? src->port : MulticastDNSPort, dst, dstport, msg, end);
    e8817818:	0008b697          	auipc	a3,0x8b
    e881781c:	57068693          	addi	a3,a3,1392 # e88a2d88 <mDNSInterface_Unicast+0x8>
    e8817820:	00098e63          	beqz	s3,e881783c <mDNSSendDNSMessage+0x18a>
    e8817824:	0009c783          	lbu	a5,0(s3)
    e8817828:	0008b697          	auipc	a3,0x8b
    e881782c:	56868693          	addi	a3,a3,1384 # e88a2d90 <mDNSInterface_Unicast+0x10>
    e8817830:	8b85                	andi	a5,a5,1
    e8817832:	e789                	bnez	a5,e881783c <mDNSSendDNSMessage+0x18a>
    e8817834:	0008b697          	auipc	a3,0x8b
    e8817838:	56468693          	addi	a3,a3,1380 # e88a2d98 <mDNSInterface_Unicast+0x18>
    e881783c:	0e0a0f63          	beqz	s4,e881793a <mDNSSendDNSMessage+0x288>
    e8817840:	000a5783          	lhu	a5,0(s4)
    e8817844:	6762                	ld	a4,24(sp)
    e8817846:	e022                	sd	s0,0(sp)
    e8817848:	88de                	mv	a7,s7
    e881784a:	e43a                	sd	a4,8(sp)
    e881784c:	885a                	mv	a6,s6
    e881784e:	4701                	li	a4,0
    e8817850:	4605                	li	a2,1
    e8817852:	85a6                	mv	a1,s1
    e8817854:	8556                	mv	a0,s5
    e8817856:	9f3ff0ef          	jal	ra,e8817248 <DumpPacket>
    msg->h.numAdditionals = numAdditionals;
    e881785a:	01841523          	sh	s8,10(s0)
    return(status);
    e881785e:	b57d                	j	e881770c <mDNSSendDNSMessage+0x5a>
    else end = newend;
    e8817860:	ec2a                	sd	a0,24(sp)
    e8817862:	b5fd                	j	e8817750 <mDNSSendDNSMessage+0x9e>
        if (!sock)
    e8817864:	00099e63          	bnez	s3,e8817880 <mDNSSendDNSMessage+0x1ce>
            status = mDNSPlatformSendUDP(m, msg, end, InterfaceID, src, dst, dstport, useBackgroundTrafficClass);
    e8817868:	09814883          	lbu	a7,152(sp)
    e881786c:	86a6                	mv	a3,s1
    e881786e:	885e                	mv	a6,s7
    e8817870:	87da                	mv	a5,s6
    e8817872:	8752                	mv	a4,s4
    e8817874:	85a2                	mv	a1,s0
    e8817876:	8556                	mv	a0,s5
    e8817878:	288180ef          	jal	ra,e882fb00 <mDNSPlatformSendUDP>
    e881787c:	84aa                	mv	s1,a0
    e881787e:	b781                	j	e88177be <mDNSSendDNSMessage+0x10c>
            mDNSu16 msglen = (mDNSu16)(end - (mDNSu8 *)msg);
    e8817880:	408604b3          	sub	s1,a2,s0
            mDNSu8 lenbuf[2] = { (mDNSu8)(msglen >> 8), (mDNSu8)(msglen & 0xFF) };
    e8817884:	3c84b70b          	extu	a4,s1,15,8
    e8817888:	00849793          	slli	a5,s1,0x8
            buf = mDNSPlatformMemAllocate(msglen + 2);
    e881788c:	3c04bc8b          	extu	s9,s1,15,0
            mDNSu8 lenbuf[2] = { (mDNSu8)(msglen >> 8), (mDNSu8)(msglen & 0xFF) };
    e8817890:	8fd9                	or	a5,a5,a4
            buf = mDNSPlatformMemAllocate(msglen + 2);
    e8817892:	002c8d13          	addi	s10,s9,2
    e8817896:	856a                	mv	a0,s10
            mDNSu8 lenbuf[2] = { (mDNSu8)(msglen >> 8), (mDNSu8)(msglen & 0xFF) };
    e8817898:	02f11423          	sh	a5,40(sp)
            buf = mDNSPlatformMemAllocate(msglen + 2);
    e881789c:	1c7180ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e88178a0:	892a                	mv	s2,a0
            if (buf)
    e88178a2:	c531                	beqz	a0,e88178ee <mDNSSendDNSMessage+0x23c>
                buf[0] = lenbuf[0];
    e88178a4:	02814783          	lbu	a5,40(sp)
                mDNSPlatformMemCopy(buf+2, msg, msglen);
    e88178a8:	8666                	mv	a2,s9
    e88178aa:	85a2                	mv	a1,s0
                buf[0] = lenbuf[0];
    e88178ac:	00f50023          	sb	a5,0(a0)
                buf[1] = lenbuf[1];
    e88178b0:	02914783          	lbu	a5,41(sp)
                mDNSPlatformMemCopy(buf+2, msg, msglen);
    e88178b4:	0509                	addi	a0,a0,2
    mStatus status = mStatus_NoError;
    e88178b6:	4481                	li	s1,0
                buf[1] = lenbuf[1];
    e88178b8:	fef50fa3          	sb	a5,-1(a0)
                mDNSPlatformMemCopy(buf+2, msg, msglen);
    e88178bc:	1e4180ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                nsent = mDNSPlatformWriteTCP(sock, buf, msglen+2);
    e88178c0:	866a                	mv	a2,s10
    e88178c2:	85ca                	mv	a1,s2
    e88178c4:	854e                	mv	a0,s3
    e88178c6:	046180ef          	jal	ra,e882f90c <mDNSPlatformWriteTCP>
    e88178ca:	862a                	mv	a2,a0
                if (nsent != (msglen + 2))
    e88178cc:	00ad0d63          	beq	s10,a0,e88178e6 <mDNSSendDNSMessage+0x234>
                    LogMsg("mDNSSendDNSMessage: write message failed %d/%d", nsent, msglen);
    e88178d0:	86e6                	mv	a3,s9
    e88178d2:	0008b597          	auipc	a1,0x8b
    e88178d6:	57658593          	addi	a1,a1,1398 # e88a2e48 <mDNSInterface_Unicast+0xc8>
    e88178da:	4501                	li	a0,0
                    status = mStatus_ConnFailed;
    e88178dc:	74c1                	lui	s1,0xffff0
                    LogMsg("mDNSSendDNSMessage: write message failed %d/%d", nsent, msglen);
    e88178de:	3cf170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    status = mStatus_ConnFailed;
    e88178e2:	f0448493          	addi	s1,s1,-252 # fffffffffffeff04 <__DRAM0_INF_BASE+0xfffffffeffffff04>
                mDNSPlatformMemFree(buf);
    e88178e6:	854a                	mv	a0,s2
    e88178e8:	19b180ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    e88178ec:	bdc9                	j	e88177be <mDNSSendDNSMessage+0x10c>
                nsent = mDNSPlatformWriteTCP(sock, (char*)lenbuf, 2);
    e88178ee:	4609                	li	a2,2
    e88178f0:	102c                	addi	a1,sp,40
    e88178f2:	854e                	mv	a0,s3
    e88178f4:	018180ef          	jal	ra,e882f90c <mDNSPlatformWriteTCP>
    e88178f8:	862a                	mv	a2,a0
                if (nsent != 2)
    e88178fa:	4789                	li	a5,2
    e88178fc:	00f50e63          	beq	a0,a5,e8817918 <mDNSSendDNSMessage+0x266>
                    LogMsg("mDNSSendDNSMessage: write msg length failed %d/%d", nsent, 2);
    e8817900:	4689                	li	a3,2
    e8817902:	0008b597          	auipc	a1,0x8b
    e8817906:	57658593          	addi	a1,a1,1398 # e88a2e78 <mDNSInterface_Unicast+0xf8>
                        LogMsg("mDNSSendDNSMessage: write msg body failed %d/%d", nsent, msglen);
    e881790a:	4501                	li	a0,0
                        status = mStatus_ConnFailed;
    e881790c:	74c1                	lui	s1,0xffff0
                        LogMsg("mDNSSendDNSMessage: write msg body failed %d/%d", nsent, msglen);
    e881790e:	39f170ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        status = mStatus_ConnFailed;
    e8817912:	f0448493          	addi	s1,s1,-252 # fffffffffffeff04 <__DRAM0_INF_BASE+0xfffffffeffffff04>
    e8817916:	b565                	j	e88177be <mDNSSendDNSMessage+0x10c>
                    nsent = mDNSPlatformWriteTCP(sock, (char *)msg, msglen);
    e8817918:	3c04b90b          	extu	s2,s1,15,0
    e881791c:	864a                	mv	a2,s2
    e881791e:	85a2                	mv	a1,s0
    e8817920:	854e                	mv	a0,s3
    e8817922:	7eb170ef          	jal	ra,e882f90c <mDNSPlatformWriteTCP>
    e8817926:	862a                	mv	a2,a0
    mStatus status = mStatus_NoError;
    e8817928:	4481                	li	s1,0
                    if (nsent != msglen)
    e881792a:	e8a90ae3          	beq	s2,a0,e88177be <mDNSSendDNSMessage+0x10c>
                        LogMsg("mDNSSendDNSMessage: write msg body failed %d/%d", nsent, msglen);
    e881792e:	86e6                	mv	a3,s9
    e8817930:	0008b597          	auipc	a1,0x8b
    e8817934:	58058593          	addi	a1,a1,1408 # e88a2eb0 <mDNSInterface_Unicast+0x130>
    e8817938:	bfc9                	j	e881790a <mDNSSendDNSMessage+0x258>
        DumpPacket(m, status, mDNStrue, sock && (sock->flags & kTCPSocketFlags_UseTLS) ? "TLS" : sock ? "TCP" : "UDP", mDNSNULL, src ? src->port : MulticastDNSPort, dst, dstport, msg, end);
    e881793a:	77fd                	lui	a5,0xfffff
    e881793c:	9147879b          	addiw	a5,a5,-1772
    e8817940:	b711                	j	e8817844 <mDNSSendDNSMessage+0x192>

00000000e8817942 <mDNS_vsnprintf>:
{
    e8817942:	cc010113          	addi	sp,sp,-832
    e8817946:	2db13c23          	sd	s11,728(sp)
    e881794a:	32113c23          	sd	ra,824(sp)
    e881794e:	32813823          	sd	s0,816(sp)
    e8817952:	32913423          	sd	s1,808(sp)
    e8817956:	33213023          	sd	s2,800(sp)
    e881795a:	31313c23          	sd	s3,792(sp)
    e881795e:	31413823          	sd	s4,784(sp)
    e8817962:	31513423          	sd	s5,776(sp)
    e8817966:	31613023          	sd	s6,768(sp)
    e881796a:	2f713c23          	sd	s7,760(sp)
    e881796e:	2f813823          	sd	s8,752(sp)
    e8817972:	2f913423          	sd	s9,744(sp)
    e8817976:	2fa13023          	sd	s10,736(sp)
    e881797a:	8dae                	mv	s11,a1
    if (buflen == 0) return(0);
    e881797c:	c98d                	beqz	a1,e88179ae <mDNS_vsnprintf+0x6c>
    buflen--;       // Pre-reserve one space in the buffer for the terminating null
    e881797e:	fff58c9b          	addiw	s9,a1,-1
    e8817982:	89aa                	mv	s3,a0
    mDNSu32 nwritten = 0;
    e8817984:	4d81                	li	s11,0
    if (buflen == 0) goto exit;
    e8817986:	020c8263          	beqz	s9,e88179aa <mDNS_vsnprintf+0x68>
    for (c = *fmt; c != 0; c = *++fmt)
    e881798a:	00064783          	lbu	a5,0(a2)
    e881798e:	8b32                	mv	s6,a2
    e8817990:	8736                	mv	a4,a3
    e8817992:	8ace                	mv	s5,s3
    e8817994:	cb99                	beqz	a5,e88179aa <mDNS_vsnprintf+0x68>
		if (c != '%')
    e8817996:	02500693          	li	a3,37
    e881799a:	04d78863          	beq	a5,a3,e88179ea <mDNS_vsnprintf+0xa8>
            *sbuffer++ = (char)c;
    e881799e:	00fa8023          	sb	a5,0(s5)
            if (++nwritten >= buflen) goto exit;
    e88179a2:	2d85                	addiw	s11,s11,1
            *sbuffer++ = (char)c;
    e88179a4:	0985                	addi	s3,s3,1
            if (++nwritten >= buflen) goto exit;
    e88179a6:	079deae3          	bltu	s11,s9,e881821a <mDNS_vsnprintf+0x8d8>
    *sbuffer++ = 0;
    e88179aa:	00098023          	sb	zero,0(s3)
}
    e88179ae:	33813083          	ld	ra,824(sp)
    e88179b2:	33013403          	ld	s0,816(sp)
    e88179b6:	856e                	mv	a0,s11
    e88179b8:	32813483          	ld	s1,808(sp)
    e88179bc:	32013903          	ld	s2,800(sp)
    e88179c0:	31813983          	ld	s3,792(sp)
    e88179c4:	31013a03          	ld	s4,784(sp)
    e88179c8:	30813a83          	ld	s5,776(sp)
    e88179cc:	30013b03          	ld	s6,768(sp)
    e88179d0:	2f813b83          	ld	s7,760(sp)
    e88179d4:	2f013c03          	ld	s8,752(sp)
    e88179d8:	2e813c83          	ld	s9,744(sp)
    e88179dc:	2e013d03          	ld	s10,736(sp)
    e88179e0:	2d813d83          	ld	s11,728(sp)
    e88179e4:	34010113          	addi	sp,sp,832
    e88179e8:	8082                	ret
            struct mDNSprintf_format F = mDNSprintf_format_default;
    e88179ea:	e902                	sd	zero,144(sp)
    e88179ec:	cd02                	sw	zero,152(sp)
    e88179ee:	4681                	li	a3,0
    e88179f0:	4581                	li	a1,0
    e88179f2:	4481                	li	s1,0
    e88179f4:	4c01                	li	s8,0
    e88179f6:	4d01                	li	s10,0
                if      (c == '-') F.leftJustify = 1;
    e88179f8:	02d00813          	li	a6,45
                else if (c == ' ') F.sign = ' ';
    e88179fc:	02000893          	li	a7,32
                else if (c == '#') F.altForm++;
    e8817a00:	02300e13          	li	t3,35
                else if (c == '0') F.zeroPad = 1;
    e8817a04:	03000513          	li	a0,48
                c = *++fmt;
    e8817a08:	001b4783          	lbu	a5,1(s6)
    e8817a0c:	001b0613          	addi	a2,s6,1
                if      (c == '-') F.leftJustify = 1;
    e8817a10:	01078e63          	beq	a5,a6,e8817a2c <mDNS_vsnprintf+0xea>
                else if (c == '+') F.forceSign = 1;
    e8817a14:	02b00413          	li	s0,43
    e8817a18:	00878d63          	beq	a5,s0,e8817a32 <mDNS_vsnprintf+0xf0>
                else if (c == ' ') F.sign = ' ';
    e8817a1c:	01178d63          	beq	a5,a7,e8817a36 <mDNS_vsnprintf+0xf4>
                else if (c == '#') F.altForm++;
    e8817a20:	03c79063          	bne	a5,t3,e8817a40 <mDNS_vsnprintf+0xfe>
    e8817a24:	2585                	addiw	a1,a1,1
    e8817a26:	0ff5f593          	andi	a1,a1,255
    e8817a2a:	a011                	j	e8817a2e <mDNS_vsnprintf+0xec>
                if      (c == '-') F.leftJustify = 1;
    e8817a2c:	4d05                	li	s10,1
                c = *++fmt;
    e8817a2e:	8b32                	mv	s6,a2
    e8817a30:	bfe1                	j	e8817a08 <mDNS_vsnprintf+0xc6>
                else if (c == '+') F.forceSign = 1;
    e8817a32:	4c05                	li	s8,1
    e8817a34:	bfed                	j	e8817a2e <mDNS_vsnprintf+0xec>
                else if (c == ' ') F.sign = ' ';
    e8817a36:	02000693          	li	a3,32
    e8817a3a:	bfd5                	j	e8817a2e <mDNS_vsnprintf+0xec>
                else if (c == '0') F.zeroPad = 1;
    e8817a3c:	4485                	li	s1,1
    e8817a3e:	bfc5                	j	e8817a2e <mDNS_vsnprintf+0xec>
    e8817a40:	fea78ee3          	beq	a5,a0,e8817a3c <mDNS_vsnprintf+0xfa>
            if (c == '*')   //  decode field width
    e8817a44:	02a00513          	li	a0,42
    e8817a48:	06a79463          	bne	a5,a0,e8817ab0 <mDNS_vsnprintf+0x16e>
                int f = va_arg(arg, int);
    e8817a4c:	5887440b          	lwia	s0,(a4),8,0
                if (f < 0) { f = -f; F.leftJustify = 1; }
    e8817a50:	00045663          	bgez	s0,e8817a5c <mDNS_vsnprintf+0x11a>
    e8817a54:	4080043b          	negw	s0,s0
    e8817a58:	2401                	sext.w	s0,s0
    e8817a5a:	4d05                	li	s10,1
                c = *++fmt;
    e8817a5c:	00164783          	lbu	a5,1(a2)
    e8817a60:	002b0613          	addi	a2,s6,2
            if (c == '.')   //  decode precision
    e8817a64:	02e00513          	li	a0,46
    e8817a68:	0ea79663          	bne	a5,a0,e8817b54 <mDNS_vsnprintf+0x212>
                if ((c = *++fmt) == '*')
    e8817a6c:	00164783          	lbu	a5,1(a2)
    e8817a70:	02a00513          	li	a0,42
    e8817a74:	04a78263          	beq	a5,a0,e8817ab8 <mDNS_vsnprintf+0x176>
    e8817a78:	0605                	addi	a2,a2,1
            struct mDNSprintf_format F = mDNSprintf_format_default;
    e8817a7a:	4801                	li	a6,0
                else for (; c >= '0' && c <= '9'; c = *++fmt)
    e8817a7c:	4525                	li	a0,9
                        F.precision = (10 * F.precision) + (c - '0');
    e8817a7e:	4e29                	li	t3,10
                else for (; c >= '0' && c <= '9'; c = *++fmt)
    e8817a80:	fd07889b          	addiw	a7,a5,-48
    e8817a84:	03156f63          	bltu	a0,a7,e8817ac2 <mDNS_vsnprintf+0x180>
                        F.precision = (10 * F.precision) + (c - '0');
    e8817a88:	250e178b          	mulaw	a5,t3,a6
    e8817a8c:	883e                	mv	a6,a5
    e8817a8e:	fd08081b          	addiw	a6,a6,-48
                else for (; c >= '0' && c <= '9'; c = *++fmt)
    e8817a92:	8816478b          	lbuib	a5,(a2),1,0
    e8817a96:	b7ed                	j	e8817a80 <mDNS_vsnprintf+0x13e>
                    F.fieldWidth = (10 * F.fieldWidth) + (c - '0');
    e8817a98:	2488978b          	mulaw	a5,a7,s0
    e8817a9c:	843e                	mv	s0,a5
                for (; c >= '0' && c <= '9'; c = *++fmt)
    e8817a9e:	8816478b          	lbuib	a5,(a2),1,0
                    F.fieldWidth = (10 * F.fieldWidth) + (c - '0');
    e8817aa2:	fd04041b          	addiw	s0,s0,-48
                for (; c >= '0' && c <= '9'; c = *++fmt)
    e8817aa6:	fd07881b          	addiw	a6,a5,-48
    e8817aaa:	ff0577e3          	bgeu	a0,a6,e8817a98 <mDNS_vsnprintf+0x156>
    e8817aae:	bf5d                	j	e8817a64 <mDNS_vsnprintf+0x122>
            struct mDNSprintf_format F = mDNSprintf_format_default;
    e8817ab0:	4401                	li	s0,0
                for (; c >= '0' && c <= '9'; c = *++fmt)
    e8817ab2:	4525                	li	a0,9
                    F.fieldWidth = (10 * F.fieldWidth) + (c - '0');
    e8817ab4:	48a9                	li	a7,10
    e8817ab6:	bfc5                	j	e8817aa6 <mDNS_vsnprintf+0x164>
                { F.precision = va_arg(arg, unsigned int); c = *++fmt; }
    e8817ab8:	5887480b          	lwia	a6,(a4),8,0
    e8817abc:	00264783          	lbu	a5,2(a2)
    e8817ac0:	0609                	addi	a2,a2,2
                F.havePrecision = 1;
    e8817ac2:	4b85                	li	s7,1
            if (F.leftJustify) F.zeroPad = 0;
    e8817ac4:	09014503          	lbu	a0,144(sp)
    e8817ac8:	001c7893          	andi	a7,s8,1
    e8817acc:	001d7d13          	andi	s10,s10,1
    e8817ad0:	0fc57513          	andi	a0,a0,252
    e8817ad4:	f4c6                	sd	a7,104(sp)
    e8817ad6:	0886                	slli	a7,a7,0x1
    e8817ad8:	01a56533          	or	a0,a0,s10
    e8817adc:	01156533          	or	a0,a0,a7
    e8817ae0:	00249893          	slli	a7,s1,0x2
    e8817ae4:	001bf313          	andi	t1,s7,1
    e8817ae8:	994d                	andi	a0,a0,-13
    e8817aea:	01156533          	or	a0,a0,a7
    e8817aee:	00331893          	slli	a7,t1,0x3
    e8817af2:	01156533          	or	a0,a0,a7
    e8817af6:	08a10823          	sb	a0,144(sp)
    e8817afa:	f89a                	sd	t1,112(sp)
    e8817afc:	8905                	andi	a0,a0,1
    e8817afe:	c111                	beqz	a0,e8817b02 <mDNS_vsnprintf+0x1c0>
    e8817b00:	4481                	li	s1,0
            struct mDNSprintf_format F = mDNSprintf_format_default;
    e8817b02:	4901                	li	s2,0
    e8817b04:	4a01                	li	s4,0
            switch (c)  //  perform appropriate conversion
    e8817b06:	06900513          	li	a0,105
    e8817b0a:	07000893          	li	a7,112
    e8817b0e:	06e00e13          	li	t3,110
    e8817b12:	06c00f13          	li	t5,108
    e8817b16:	06100e93          	li	t4,97
    e8817b1a:	06400f93          	li	t6,100
    e8817b1e:	06800293          	li	t0,104
    e8817b22:	04c00393          	li	t2,76
    e8817b26:	8b32                	mv	s6,a2
    e8817b28:	12a78763          	beq	a5,a0,e8817c56 <mDNS_vsnprintf+0x314>
    e8817b2c:	04f54863          	blt	a0,a5,e8817b7c <mDNS_vsnprintf+0x23a>
    e8817b30:	37d78b63          	beq	a5,t4,e8817ea6 <mDNS_vsnprintf+0x564>
    e8817b34:	02fec363          	blt	t4,a5,e8817b5a <mDNS_vsnprintf+0x218>
    e8817b38:	10778b63          	beq	a5,t2,e8817c4e <mDNS_vsnprintf+0x30c>
    e8817b3c:	05800693          	li	a3,88
    e8817b40:	48d78763          	beq	a5,a3,e8817fce <mDNS_vsnprintf+0x68c>
    e8817b44:	02500693          	li	a3,37
    e8817b48:	04d79463          	bne	a5,a3,e8817b90 <mDNS_vsnprintf+0x24e>
            char *s = mDNS_VACB_Lim, *digits;
    e8817b4c:	2cc10893          	addi	a7,sp,716
            unsigned int i=0, j;
    e8817b50:	4501                	li	a0,0
    e8817b52:	a085                	j	e8817bb2 <mDNS_vsnprintf+0x270>
            struct mDNSprintf_format F = mDNSprintf_format_default;
    e8817b54:	4801                	li	a6,0
    e8817b56:	4b81                	li	s7,0
    e8817b58:	b7b5                	j	e8817ac4 <mDNS_vsnprintf+0x182>
            switch (c)  //  perform appropriate conversion
    e8817b5a:	0ff78e63          	beq	a5,t6,e8817c56 <mDNS_vsnprintf+0x314>
    e8817b5e:	0e578363          	beq	a5,t0,e8817c44 <mDNS_vsnprintf+0x302>
    e8817b62:	06300693          	li	a3,99
    e8817b66:	02d79563          	bne	a5,a3,e8817b90 <mDNS_vsnprintf+0x24e>
            case 'c':  *--s = (char)va_arg(arg, int); i = 1; break;
    e8817b6a:	89ba                	mv	s3,a4
    e8817b6c:	5889c78b          	lwia	a5,(s3),8,0
    e8817b70:	2cb10893          	addi	a7,sp,715
    e8817b74:	4505                	li	a0,1
    e8817b76:	2cf105a3          	sb	a5,715(sp)
    e8817b7a:	a2bd                	j	e8817ce8 <mDNS_vsnprintf+0x3a6>
            switch (c)  //  perform appropriate conversion
    e8817b7c:	45178663          	beq	a5,a7,e8817fc8 <mDNS_vsnprintf+0x686>
    e8817b80:	04f8c163          	blt	a7,a5,e8817bc2 <mDNS_vsnprintf+0x280>
    e8817b84:	67c78363          	beq	a5,t3,e88181ea <mDNS_vsnprintf+0x8a8>
    e8817b88:	26fe4c63          	blt	t3,a5,e8817e00 <mDNS_vsnprintf+0x4be>
    e8817b8c:	0de78163          	beq	a5,t5,e8817c4e <mDNS_vsnprintf+0x30c>
                i = mDNS_snprintf(mDNS_VACB, sizeof(mDNS_VACB), "<<UNKNOWN FORMAT CONVERSION CODE %%%c>>", c);
    e8817b90:	86be                	mv	a3,a5
    e8817b92:	0008b617          	auipc	a2,0x8b
    e8817b96:	74e60613          	addi	a2,a2,1870 # e88a32e0 <mDNSInterface_Unicast+0x560>
    e8817b9a:	12c00593          	li	a1,300
    e8817b9e:	1308                	addi	a0,sp,416
    e8817ba0:	fcba                	sd	a4,120(sp)
    e8817ba2:	f8be                	sd	a5,112(sp)
    e8817ba4:	89efe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8817ba8:	2501                	sext.w	a0,a0
    e8817baa:	77c6                	ld	a5,112(sp)
    e8817bac:	7766                	ld	a4,120(sp)
            default:    s = mDNS_VACB;
    e8817bae:	1a010893          	addi	a7,sp,416
            case '%':  *sbuffer++ = (char)c;
    e8817bb2:	8ace                	mv	s5,s3
    e8817bb4:	181ad78b          	sbia	a5,(s5),1,0
                if (++nwritten >= buflen) goto exit;
    e8817bb8:	2d85                	addiw	s11,s11,1
    e8817bba:	6b9df463          	bgeu	s11,s9,e8818262 <mDNS_vsnprintf+0x920>
    e8817bbe:	89ba                	mv	s3,a4
    e8817bc0:	a225                	j	e8817ce8 <mDNS_vsnprintf+0x3a6>
            switch (c)  //  perform appropriate conversion
    e8817bc2:	07500693          	li	a3,117
    e8817bc6:	1cd78d63          	beq	a5,a3,e8817da0 <mDNS_vsnprintf+0x45e>
    e8817bca:	07800693          	li	a3,120
    e8817bce:	48d78c63          	beq	a5,a3,e8818066 <mDNS_vsnprintf+0x724>
    e8817bd2:	07300693          	li	a3,115
    e8817bd6:	fad79de3          	bne	a5,a3,e8817b90 <mDNS_vsnprintf+0x24e>
            case 's':  s = va_arg(arg, char *);
    e8817bda:	89ba                	mv	s3,a4
    e8817bdc:	7889c88b          	ldia	a7,(s3),8,0
                if (!s) { static char emsg[] = "<<NULL>>"; s = emsg; i = sizeof(emsg)-1; }
    e8817be0:	5e088f63          	beqz	a7,e88181de <mDNS_vsnprintf+0x89c>
                else switch (F.altForm)
    e8817be4:	4785                	li	a5,1
    e8817be6:	58f58d63          	beq	a1,a5,e8818180 <mDNS_vsnprintf+0x83e>
    e8817bea:	4a058363          	beqz	a1,e8818090 <mDNS_vsnprintf+0x74e>
    e8817bee:	4789                	li	a5,2
            unsigned int i=0, j;
    e8817bf0:	4501                	li	a0,0
    e8817bf2:	52f59363          	bne	a1,a5,e8818118 <mDNS_vsnprintf+0x7d6>
                        if (*a == 0) *s++ = '.';                    // Special case for root DNS name
    e8817bf6:	0008c703          	lbu	a4,0(a7)
                        s = mDNS_VACB;                  // Adjust s to point to the start of the buffer, not the end
    e8817bfa:	1a010c13          	addi	s8,sp,416
                        if (*a == 0) *s++ = '.';                    // Special case for root DNS name
    e8817bfe:	e719                	bnez	a4,e8817c0c <mDNS_vsnprintf+0x2ca>
    e8817c00:	02e00793          	li	a5,46
    e8817c04:	1af10023          	sb	a5,416(sp)
    e8817c08:	1a110c13          	addi	s8,sp,417
                        while (*a)
    e8817c0c:	0008c683          	lbu	a3,0(a7)
                            if (*a > 63)
    e8817c10:	03f00e13          	li	t3,63
                        while (*a)
    e8817c14:	c29d                	beqz	a3,e8817c3a <mDNS_vsnprintf+0x2f8>
                            if (*a > 63)
    e8817c16:	05fc                	addi	a5,sp,716
    e8817c18:	4187873b          	subw	a4,a5,s8
    e8817c1c:	56de7563          	bgeu	t3,a3,e8818186 <mDNS_vsnprintf+0x844>
                            { s += mDNS_snprintf(s, mDNS_VACB_Remain(s), "<<INVALID LABEL LENGTH %u>>", *a); break; }
    e8817c20:	0008b617          	auipc	a2,0x8b
    e8817c24:	68060613          	addi	a2,a2,1664 # e88a32a0 <mDNSInterface_Unicast+0x520>
    e8817c28:	85ba                	mv	a1,a4
    e8817c2a:	8562                	mv	a0,s8
    e8817c2c:	fcc2                	sd	a6,120(sp)
    e8817c2e:	814fe0ef          	jal	ra,e8815c42 <mDNS_snprintf>
                            { s += mDNS_snprintf(s, mDNS_VACB_Remain(s), "<<NAME TOO LONG>>"); break; }
    e8817c32:	7866                	ld	a6,120(sp)
    e8817c34:	7c05350b          	extu	a0,a0,31,0
    e8817c38:	9c2a                	add	s8,s8,a0
                        i = (mDNSu32)(s - mDNS_VACB);
    e8817c3a:	1a010893          	addi	a7,sp,416
    e8817c3e:	411c053b          	subw	a0,s8,a7
                        break;
    e8817c42:	a9d9                	j	e8818118 <mDNS_vsnprintf+0x7d6>
            case 'h':  F.hSize = 1; c = *++fmt; goto conv;
    e8817c44:	00164783          	lbu	a5,1(a2)
    e8817c48:	4a05                	li	s4,1
    e8817c4a:	0605                	addi	a2,a2,1
    e8817c4c:	bde9                	j	e8817b26 <mDNS_vsnprintf+0x1e4>
            case 'L':  F.lSize = 1; c = *++fmt; goto conv;
    e8817c4e:	00164783          	lbu	a5,1(a2)
    e8817c52:	4905                	li	s2,1
    e8817c54:	bfdd                	j	e8817c4a <mDNS_vsnprintf+0x308>
            case 'i':  if (F.lSize) n = (unsigned long)va_arg(arg, long);
    e8817c56:	09014783          	lbu	a5,144(sp)
    e8817c5a:	00249613          	slli	a2,s1,0x2
    e8817c5e:	00870993          	addi	s3,a4,8
    e8817c62:	9bed                	andi	a5,a5,-5
    e8817c64:	8fd1                	or	a5,a5,a2
    e8817c66:	004a1613          	slli	a2,s4,0x4
    e8817c6a:	fcf7f793          	andi	a5,a5,-49
    e8817c6e:	8fd1                	or	a5,a5,a2
    e8817c70:	00591613          	slli	a2,s2,0x5
    e8817c74:	8fd1                	or	a5,a5,a2
    e8817c76:	08f10823          	sb	a5,144(sp)
    e8817c7a:	0ff7f793          	andi	a5,a5,255
    e8817c7e:	0207f613          	andi	a2,a5,32
    e8817c82:	10060863          	beqz	a2,e8817d92 <mDNS_vsnprintf+0x450>
    e8817c86:	6318                	ld	a4,0(a4)
                if (F.hSize) n = (short) n;
    e8817c88:	0107f613          	andi	a2,a5,16
    e8817c8c:	c219                	beqz	a2,e8817c92 <mDNS_vsnprintf+0x350>
    e8817c8e:	3c07270b          	ext	a4,a4,15,0
                if ((long) n < 0) { n = (unsigned long)-(long)n; F.sign = '-'; }
    e8817c92:	10075263          	bgez	a4,e8817d96 <mDNS_vsnprintf+0x454>
    e8817c96:	40e00733          	neg	a4,a4
    e8817c9a:	02d00693          	li	a3,45
decimal:    if (!F.havePrecision)
    e8817c9e:	09014783          	lbu	a5,144(sp)
    e8817ca2:	0087f613          	andi	a2,a5,8
    e8817ca6:	ea11                	bnez	a2,e8817cba <mDNS_vsnprintf+0x378>
                    if (F.zeroPad)
    e8817ca8:	8b91                	andi	a5,a5,4
    e8817caa:	c789                	beqz	a5,e8817cb4 <mDNS_vsnprintf+0x372>
                        if (F.sign) --F.precision;
    e8817cac:	8822                	mv	a6,s0
    e8817cae:	c299                	beqz	a3,e8817cb4 <mDNS_vsnprintf+0x372>
    e8817cb0:	fff4081b          	addiw	a6,s0,-1
                    if (F.precision < 1) F.precision = 1;
    e8817cb4:	4785                	li	a5,1
    e8817cb6:	00080a63          	beqz	a6,e8817cca <mDNS_vsnprintf+0x388>
                if (F.precision > mDNS_VACB_Size - 1)
    e8817cba:	12b00613          	li	a2,299
    e8817cbe:	0008079b          	sext.w	a5,a6
    e8817cc2:	01067463          	bgeu	a2,a6,e8817cca <mDNS_vsnprintf+0x388>
    e8817cc6:	12b00793          	li	a5,299
            char *s = mDNS_VACB_Lim, *digits;
    e8817cca:	2cc10893          	addi	a7,sp,716
                for (i = 0; n; n /= 10, i++) *--s = (char)(n % 10 + '0');
    e8817cce:	4501                	li	a0,0
    e8817cd0:	45a9                	li	a1,10
    e8817cd2:	10071963          	bnez	a4,e8817de4 <mDNS_vsnprintf+0x4a2>
                for (; i < F.precision; i++) *--s = '0';
    e8817cd6:	03000713          	li	a4,48
    e8817cda:	10f56f63          	bltu	a0,a5,e8817df8 <mDNS_vsnprintf+0x4b6>
                if (F.sign) { *--s = F.sign; i++; }
    e8817cde:	c689                	beqz	a3,e8817ce8 <mDNS_vsnprintf+0x3a6>
    e8817ce0:	fed88fa3          	sb	a3,-1(a7)
    e8817ce4:	2505                	addiw	a0,a0,1
    e8817ce6:	18fd                	addi	a7,a7,-1
            if (i < F.fieldWidth && !F.leftJustify)         // Pad on the left
    e8817ce8:	04857e63          	bgeu	a0,s0,e8817d44 <mDNS_vsnprintf+0x402>
    e8817cec:	09014783          	lbu	a5,144(sp)
    e8817cf0:	048a                	slli	s1,s1,0x2
    e8817cf2:	0b8e                	slli	s7,s7,0x3
    e8817cf4:	0fc7f793          	andi	a5,a5,252
    e8817cf8:	01a7ed33          	or	s10,a5,s10
    e8817cfc:	77a6                	ld	a5,104(sp)
    e8817cfe:	0a12                	slli	s4,s4,0x4
    e8817d00:	0916                	slli	s2,s2,0x5
    e8817d02:	00179c13          	slli	s8,a5,0x1
    e8817d06:	018d6c33          	or	s8,s10,s8
    e8817d0a:	ffbc7c13          	andi	s8,s8,-5
    e8817d0e:	009c64b3          	or	s1,s8,s1
    e8817d12:	989d                	andi	s1,s1,-25
    e8817d14:	0174ebb3          	or	s7,s1,s7
    e8817d18:	014bea33          	or	s4,s7,s4
    e8817d1c:	fdfa7a13          	andi	s4,s4,-33
    e8817d20:	012a6933          	or	s2,s4,s2
    e8817d24:	09210823          	sb	s2,144(sp)
    e8817d28:	00197913          	andi	s2,s2,1
    e8817d2c:	00091c63          	bnez	s2,e8817d44 <mDNS_vsnprintf+0x402>
                    *sbuffer++ = ' ';
    e8817d30:	02000793          	li	a5,32
    e8817d34:	181ad78b          	sbia	a5,(s5),1,0
                    if (++nwritten >= buflen) goto exit;
    e8817d38:	2d85                	addiw	s11,s11,1
    e8817d3a:	539df463          	bgeu	s11,s9,e8818262 <mDNS_vsnprintf+0x920>
                } while (i < --F.fieldWidth);
    e8817d3e:	347d                	addiw	s0,s0,-1
    e8817d40:	fea41ae3          	bne	s0,a0,e8817d34 <mDNS_vsnprintf+0x3f2>
            if (i > buflen - nwritten)
    e8817d44:	41bc873b          	subw	a4,s9,s11
    e8817d48:	00a77f63          	bgeu	a4,a0,e8817d66 <mDNS_vsnprintf+0x424>
    e8817d4c:	7c07378b          	extu	a5,a4,31,0
    e8817d50:	97c6                	add	a5,a5,a7
    e8817d52:	853a                	mv	a0,a4
            { i = buflen - nwritten; while (i>0 && (s[i] & 0xC0) == 0x80) i--;}
    e8817d54:	08000693          	li	a3,128
    e8817d58:	cd19                	beqz	a0,e8817d76 <mDNS_vsnprintf+0x434>
    e8817d5a:	99f7c70b          	lbuia	a4,(a5),-1,0
    e8817d5e:	0c077713          	andi	a4,a4,192
    e8817d62:	4ed70263          	beq	a4,a3,e8818246 <mDNS_vsnprintf+0x904>
            for (j=0; j<i; j++) *sbuffer++ = *s++;          // Write the converted result
    e8817d66:	4781                	li	a5,0
    e8817d68:	0007871b          	sext.w	a4,a5
    e8817d6c:	4ca76f63          	bltu	a4,a0,e881824a <mDNS_vsnprintf+0x908>
    e8817d70:	7c05378b          	extu	a5,a0,31,0
    e8817d74:	9abe                	add	s5,s5,a5
            nwritten += i;
    e8817d76:	00ad853b          	addw	a0,s11,a0
            if (nwritten >= buflen) goto exit;
    e8817d7a:	4f957363          	bgeu	a0,s9,e8818260 <mDNS_vsnprintf+0x91e>
                *sbuffer++ = ' ';
    e8817d7e:	02000713          	li	a4,32
            for (; i < F.fieldWidth; i++)                   // Pad on the right
    e8817d82:	41b507bb          	subw	a5,a0,s11
    e8817d86:	4c87e863          	bltu	a5,s0,e8818256 <mDNS_vsnprintf+0x914>
    e8817d8a:	874e                	mv	a4,s3
    e8817d8c:	8daa                	mv	s11,a0
    e8817d8e:	89d6                	mv	s3,s5
    e8817d90:	a169                	j	e881821a <mDNS_vsnprintf+0x8d8>
                else n = (unsigned long)va_arg(arg, int);
    e8817d92:	4318                	lw	a4,0(a4)
    e8817d94:	bdd5                	j	e8817c88 <mDNS_vsnprintf+0x346>
                else if (F.forceSign) F.sign = '+';
    e8817d96:	8b89                	andi	a5,a5,2
    e8817d98:	d399                	beqz	a5,e8817c9e <mDNS_vsnprintf+0x35c>
    e8817d9a:	02b00693          	li	a3,43
    e8817d9e:	b701                	j	e8817c9e <mDNS_vsnprintf+0x35c>
            case 'u':  if (F.lSize) n = va_arg(arg, unsigned long);
    e8817da0:	09014683          	lbu	a3,144(sp)
    e8817da4:	00249793          	slli	a5,s1,0x2
    e8817da8:	00870993          	addi	s3,a4,8
    e8817dac:	9aed                	andi	a3,a3,-5
    e8817dae:	8edd                	or	a3,a3,a5
    e8817db0:	004a1793          	slli	a5,s4,0x4
    e8817db4:	fcf6f693          	andi	a3,a3,-49
    e8817db8:	8edd                	or	a3,a3,a5
    e8817dba:	00591793          	slli	a5,s2,0x5
    e8817dbe:	8edd                	or	a3,a3,a5
    e8817dc0:	08d10823          	sb	a3,144(sp)
    e8817dc4:	0ff6f693          	andi	a3,a3,255
    e8817dc8:	0206f793          	andi	a5,a3,32
    e8817dcc:	cb89                	beqz	a5,e8817dde <mDNS_vsnprintf+0x49c>
    e8817dce:	6318                	ld	a4,0(a4)
                if (F.hSize) n = (unsigned short) n;
    e8817dd0:	8ac1                	andi	a3,a3,16
    e8817dd2:	ec0686e3          	beqz	a3,e8817c9e <mDNS_vsnprintf+0x35c>
    e8817dd6:	3c07370b          	extu	a4,a4,15,0
                F.sign = 0;
    e8817dda:	4681                	li	a3,0
    e8817ddc:	b5c9                	j	e8817c9e <mDNS_vsnprintf+0x35c>
                else n = va_arg(arg, unsigned int);
    e8817dde:	00076703          	lwu	a4,0(a4)
    e8817de2:	b7fd                	j	e8817dd0 <mDNS_vsnprintf+0x48e>
                for (i = 0; n; n /= 10, i++) *--s = (char)(n % 10 + '0');
    e8817de4:	02b77633          	remu	a2,a4,a1
    e8817de8:	2505                	addiw	a0,a0,1
    e8817dea:	0306061b          	addiw	a2,a2,48
    e8817dee:	09f8d60b          	sbib	a2,(a7),-1,0
    e8817df2:	02b75733          	divu	a4,a4,a1
    e8817df6:	bdf1                	j	e8817cd2 <mDNS_vsnprintf+0x390>
                for (; i < F.precision; i++) *--s = '0';
    e8817df8:	09f8d70b          	sbib	a4,(a7),-1,0
    e8817dfc:	2505                	addiw	a0,a0,1
    e8817dfe:	bdf1                	j	e8817cda <mDNS_vsnprintf+0x398>
            case 'o':  if (F.lSize) n = va_arg(arg, unsigned long);
    e8817e00:	09014783          	lbu	a5,144(sp)
    e8817e04:	00249693          	slli	a3,s1,0x2
    e8817e08:	00870993          	addi	s3,a4,8
    e8817e0c:	9bed                	andi	a5,a5,-5
    e8817e0e:	8fd5                	or	a5,a5,a3
    e8817e10:	004a1693          	slli	a3,s4,0x4
    e8817e14:	fcf7f793          	andi	a5,a5,-49
    e8817e18:	8fd5                	or	a5,a5,a3
    e8817e1a:	00591693          	slli	a3,s2,0x5
    e8817e1e:	8fd5                	or	a5,a5,a3
    e8817e20:	08f10823          	sb	a5,144(sp)
    e8817e24:	0ff7f793          	andi	a5,a5,255
    e8817e28:	0207f693          	andi	a3,a5,32
    e8817e2c:	cab9                	beqz	a3,e8817e82 <mDNS_vsnprintf+0x540>
    e8817e2e:	6318                	ld	a4,0(a4)
                if (F.hSize) n = (unsigned short) n;
    e8817e30:	0107f693          	andi	a3,a5,16
    e8817e34:	c299                	beqz	a3,e8817e3a <mDNS_vsnprintf+0x4f8>
    e8817e36:	3c07370b          	extu	a4,a4,15,0
                if (!F.havePrecision)
    e8817e3a:	0087f693          	andi	a3,a5,8
    e8817e3e:	e699                	bnez	a3,e8817e4c <mDNS_vsnprintf+0x50a>
                    if (F.zeroPad) F.precision = F.fieldWidth;
    e8817e40:	8b91                	andi	a5,a5,4
    e8817e42:	42f4180b          	mvnez	a6,s0,a5
                    if (F.precision < 1) F.precision = 1;
    e8817e46:	4785                	li	a5,1
    e8817e48:	00080a63          	beqz	a6,e8817e5c <mDNS_vsnprintf+0x51a>
                if (F.precision > mDNS_VACB_Size - 1)
    e8817e4c:	12b00693          	li	a3,299
    e8817e50:	0008079b          	sext.w	a5,a6
    e8817e54:	0106f463          	bgeu	a3,a6,e8817e5c <mDNS_vsnprintf+0x51a>
    e8817e58:	12b00793          	li	a5,299
            char *s = mDNS_VACB_Lim, *digits;
    e8817e5c:	2cc10893          	addi	a7,sp,716
                for (i = 0; n; n /= 8, i++) *--s = (char)(n % 8 + '0');
    e8817e60:	4501                	li	a0,0
    e8817e62:	e31d                	bnez	a4,e8817e88 <mDNS_vsnprintf+0x546>
                if (F.altForm && i && *s != '0') { *--s = '0'; i++; }
    e8817e64:	cd81                	beqz	a1,e8817e7c <mDNS_vsnprintf+0x53a>
    e8817e66:	c919                	beqz	a0,e8817e7c <mDNS_vsnprintf+0x53a>
    e8817e68:	0008c683          	lbu	a3,0(a7)
    e8817e6c:	03000713          	li	a4,48
    e8817e70:	00e68663          	beq	a3,a4,e8817e7c <mDNS_vsnprintf+0x53a>
    e8817e74:	fee88fa3          	sb	a4,-1(a7)
    e8817e78:	2505                	addiw	a0,a0,1
    e8817e7a:	18fd                	addi	a7,a7,-1
                for (; i < F.precision; i++) *--s = '0';
    e8817e7c:	03000713          	li	a4,48
    e8817e80:	a005                	j	e8817ea0 <mDNS_vsnprintf+0x55e>
                else n = va_arg(arg, unsigned int);
    e8817e82:	00076703          	lwu	a4,0(a4)
    e8817e86:	b76d                	j	e8817e30 <mDNS_vsnprintf+0x4ee>
                for (i = 0; n; n /= 8, i++) *--s = (char)(n % 8 + '0');
    e8817e88:	00777693          	andi	a3,a4,7
    e8817e8c:	0306869b          	addiw	a3,a3,48
    e8817e90:	09f8d68b          	sbib	a3,(a7),-1,0
    e8817e94:	830d                	srli	a4,a4,0x3
    e8817e96:	2505                	addiw	a0,a0,1
    e8817e98:	b7e9                	j	e8817e62 <mDNS_vsnprintf+0x520>
                for (; i < F.precision; i++) *--s = '0';
    e8817e9a:	09f8d70b          	sbib	a4,(a7),-1,0
    e8817e9e:	2505                	addiw	a0,a0,1
    e8817ea0:	fef56de3          	bltu	a0,a5,e8817e9a <mDNS_vsnprintf+0x558>
    e8817ea4:	b591                	j	e8817ce8 <mDNS_vsnprintf+0x3a6>
                unsigned char *a = va_arg(arg, unsigned char *);
    e8817ea6:	89ba                	mv	s3,a4
    e8817ea8:	7889c60b          	ldia	a2,(s3),8,0
                if (!a) { static char emsg[] = "<<NULL>>"; s = emsg; i = sizeof(emsg)-1; }
    e8817eac:	38060763          	beqz	a2,e881823a <mDNS_vsnprintf+0x8f8>
                    if (F.altForm)
    e8817eb0:	cdd5                	beqz	a1,e8817f6c <mDNS_vsnprintf+0x62a>
                        switch (ip->type)
    e8817eb2:	421c                	lw	a5,0(a2)
    e8817eb4:	4711                	li	a4,4
    e8817eb6:	02e78263          	beq	a5,a4,e8817eda <mDNS_vsnprintf+0x598>
    e8817eba:	4719                	li	a4,6
    e8817ebc:	04e78263          	beq	a5,a4,e8817f00 <mDNS_vsnprintf+0x5be>
                        i = mDNS_snprintf(mDNS_VACB, sizeof(mDNS_VACB), "<ZERO ADDRESS>");
    e8817ec0:	0008b617          	auipc	a2,0x8b
    e8817ec4:	30060613          	addi	a2,a2,768 # e88a31c0 <mDNSInterface_Unicast+0x440>
    e8817ec8:	12c00593          	li	a1,300
    e8817ecc:	1308                	addi	a0,sp,416
    e8817ece:	d75fd0ef          	jal	ra,e8815c42 <mDNS_snprintf>
                        default: i = mDNS_snprintf(mDNS_VACB, sizeof(mDNS_VACB), "%s", "<< ERROR: Must specify"
    e8817ed2:	2501                	sext.w	a0,a0
                    s = mDNS_VACB;              // Adjust s to point to the start of the buffer, not the end
    e8817ed4:	1a010893          	addi	a7,sp,416
                                                   " address size (i.e. %.4a=IPv4, %.6a=Ethernet, %.16a=IPv6) >>"); break;
    e8817ed8:	bd01                	j	e8817ce8 <mDNS_vsnprintf+0x3a6>
                        case mDNSAddrType_IPv4: F.precision =  4; a = (unsigned char *)&ip->ip.v4; break;
    e8817eda:	0611                	addi	a2,a2,4
                        case  4: i = mDNS_snprintf(mDNS_VACB, sizeof(mDNS_VACB), "%d.%d.%d.%d",
    e8817edc:	00364803          	lbu	a6,3(a2)
    e8817ee0:	00264783          	lbu	a5,2(a2)
    e8817ee4:	00164703          	lbu	a4,1(a2)
    e8817ee8:	00064683          	lbu	a3,0(a2)
    e8817eec:	12c00593          	li	a1,300
    e8817ef0:	0008b617          	auipc	a2,0x8b
    e8817ef4:	2e060613          	addi	a2,a2,736 # e88a31d0 <mDNSInterface_Unicast+0x450>
    e8817ef8:	1308                	addi	a0,sp,416
    e8817efa:	d49fd0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8817efe:	bfd1                	j	e8817ed2 <mDNS_vsnprintf+0x590>
                        case mDNSAddrType_IPv6: F.precision = 16; a = (unsigned char *)&ip->ip.v6; break;
    e8817f00:	0611                	addi	a2,a2,4
                        case 16: i = mDNS_snprintf(mDNS_VACB, sizeof(mDNS_VACB),
    e8817f02:	00f64583          	lbu	a1,15(a2)
    e8817f06:	00464883          	lbu	a7,4(a2)
    e8817f0a:	00364803          	lbu	a6,3(a2)
    e8817f0e:	00264783          	lbu	a5,2(a2)
    e8817f12:	00164703          	lbu	a4,1(a2)
    e8817f16:	00064683          	lbu	a3,0(a2)
    e8817f1a:	e8ae                	sd	a1,80(sp)
    e8817f1c:	00e64583          	lbu	a1,14(a2)
    e8817f20:	1308                	addi	a0,sp,416
    e8817f22:	e4ae                	sd	a1,72(sp)
    e8817f24:	00d64583          	lbu	a1,13(a2)
    e8817f28:	e0ae                	sd	a1,64(sp)
    e8817f2a:	00c64583          	lbu	a1,12(a2)
    e8817f2e:	fc2e                	sd	a1,56(sp)
    e8817f30:	00b64583          	lbu	a1,11(a2)
    e8817f34:	f82e                	sd	a1,48(sp)
    e8817f36:	00a64583          	lbu	a1,10(a2)
    e8817f3a:	f42e                	sd	a1,40(sp)
    e8817f3c:	00964583          	lbu	a1,9(a2)
    e8817f40:	f02e                	sd	a1,32(sp)
    e8817f42:	00864583          	lbu	a1,8(a2)
    e8817f46:	ec2e                	sd	a1,24(sp)
    e8817f48:	00764583          	lbu	a1,7(a2)
    e8817f4c:	e82e                	sd	a1,16(sp)
    e8817f4e:	00664583          	lbu	a1,6(a2)
    e8817f52:	e42e                	sd	a1,8(sp)
    e8817f54:	00564603          	lbu	a2,5(a2)
    e8817f58:	12c00593          	li	a1,300
    e8817f5c:	e032                	sd	a2,0(sp)
    e8817f5e:	0008b617          	auipc	a2,0x8b
    e8817f62:	2a260613          	addi	a2,a2,674 # e88a3200 <mDNSInterface_Unicast+0x480>
    e8817f66:	cddfd0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8817f6a:	b7a5                	j	e8817ed2 <mDNS_vsnprintf+0x590>
                    else switch (F.precision)
    e8817f6c:	4799                	li	a5,6
    e8817f6e:	02f80663          	beq	a6,a5,e8817f9a <mDNS_vsnprintf+0x658>
    e8817f72:	47c1                	li	a5,16
    e8817f74:	f8f807e3          	beq	a6,a5,e8817f02 <mDNS_vsnprintf+0x5c0>
    e8817f78:	4791                	li	a5,4
    e8817f7a:	f6f801e3          	beq	a6,a5,e8817edc <mDNS_vsnprintf+0x59a>
                        default: i = mDNS_snprintf(mDNS_VACB, sizeof(mDNS_VACB), "%s", "<< ERROR: Must specify"
    e8817f7e:	0008b697          	auipc	a3,0x8b
    e8817f82:	2ca68693          	addi	a3,a3,714 # e88a3248 <mDNSInterface_Unicast+0x4c8>
    e8817f86:	00092617          	auipc	a2,0x92
    e8817f8a:	41a60613          	addi	a2,a2,1050 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e8817f8e:	12c00593          	li	a1,300
    e8817f92:	1308                	addi	a0,sp,416
    e8817f94:	caffd0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8817f98:	bf2d                	j	e8817ed2 <mDNS_vsnprintf+0x590>
                        case  6: i = mDNS_snprintf(mDNS_VACB, sizeof(mDNS_VACB), "%02X:%02X:%02X:%02X:%02X:%02X",
    e8817f9a:	00464883          	lbu	a7,4(a2)
    e8817f9e:	00364803          	lbu	a6,3(a2)
    e8817fa2:	00264783          	lbu	a5,2(a2)
    e8817fa6:	00164703          	lbu	a4,1(a2)
    e8817faa:	00064683          	lbu	a3,0(a2)
    e8817fae:	00564603          	lbu	a2,5(a2)
    e8817fb2:	12c00593          	li	a1,300
    e8817fb6:	1308                	addi	a0,sp,416
    e8817fb8:	e032                	sd	a2,0(sp)
    e8817fba:	0008b617          	auipc	a2,0x8b
    e8817fbe:	22660613          	addi	a2,a2,550 # e88a31e0 <mDNSInterface_Unicast+0x460>
    e8817fc2:	c81fd0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8817fc6:	b731                	j	e8817ed2 <mDNS_vsnprintf+0x590>
                F.precision = sizeof(void*) * 2;                // 8 characters on 32-bit; 16 characters on 64-bit
    e8817fc8:	4841                	li	a6,16
            case 'p':  F.havePrecision = F.lSize = 1;
    e8817fca:	4905                	li	s2,1
    e8817fcc:	4b85                	li	s7,1
            case 'X':  digits = "0123456789ABCDEF";
    e8817fce:	00088617          	auipc	a2,0x88
    e8817fd2:	e9260613          	addi	a2,a2,-366 # e889fe60 <TWO52+0x268>
hexadecimal: if (F.lSize) n = va_arg(arg, unsigned long);
    e8817fd6:	09014683          	lbu	a3,144(sp)
    e8817fda:	00249513          	slli	a0,s1,0x2
    e8817fde:	00870993          	addi	s3,a4,8
    e8817fe2:	9aed                	andi	a3,a3,-5
    e8817fe4:	8ec9                	or	a3,a3,a0
    e8817fe6:	003b9513          	slli	a0,s7,0x3
    e8817fea:	9a9d                	andi	a3,a3,-25
    e8817fec:	8ec9                	or	a3,a3,a0
    e8817fee:	004a1513          	slli	a0,s4,0x4
    e8817ff2:	8ec9                	or	a3,a3,a0
    e8817ff4:	fdf6f693          	andi	a3,a3,-33
    e8817ff8:	00591513          	slli	a0,s2,0x5
    e8817ffc:	8ec9                	or	a3,a3,a0
    e8817ffe:	08d10823          	sb	a3,144(sp)
    e8818002:	0ff6f693          	andi	a3,a3,255
    e8818006:	0206f513          	andi	a0,a3,32
    e881800a:	c13d                	beqz	a0,e8818070 <mDNS_vsnprintf+0x72e>
    e881800c:	6318                	ld	a4,0(a4)
                if (F.hSize) n = (unsigned short) n;
    e881800e:	0106f513          	andi	a0,a3,16
    e8818012:	c119                	beqz	a0,e8818018 <mDNS_vsnprintf+0x6d6>
    e8818014:	3c07370b          	extu	a4,a4,15,0
                if (!F.havePrecision)
    e8818018:	0086f513          	andi	a0,a3,8
    e881801c:	e911                	bnez	a0,e8818030 <mDNS_vsnprintf+0x6ee>
                    if (F.zeroPad)
    e881801e:	8a91                	andi	a3,a3,4
    e8818020:	c689                	beqz	a3,e881802a <mDNS_vsnprintf+0x6e8>
                        if (F.altForm) F.precision -= 2;
    e8818022:	8822                	mv	a6,s0
    e8818024:	c199                	beqz	a1,e881802a <mDNS_vsnprintf+0x6e8>
    e8818026:	ffe4081b          	addiw	a6,s0,-2
                    if (F.precision < 1) F.precision = 1;
    e881802a:	4685                	li	a3,1
    e881802c:	00080a63          	beqz	a6,e8818040 <mDNS_vsnprintf+0x6fe>
                if (F.precision > mDNS_VACB_Size - 1)
    e8818030:	12b00513          	li	a0,299
    e8818034:	0008069b          	sext.w	a3,a6
    e8818038:	01057463          	bgeu	a0,a6,e8818040 <mDNS_vsnprintf+0x6fe>
    e881803c:	12b00693          	li	a3,299
            char *s = mDNS_VACB_Lim, *digits;
    e8818040:	2cc10893          	addi	a7,sp,716
                for (i = 0; n; n /= 16, i++) *--s = digits[n % 16];
    e8818044:	4501                	li	a0,0
    e8818046:	eb05                	bnez	a4,e8818076 <mDNS_vsnprintf+0x734>
                for (; i < F.precision; i++) *--s = '0';
    e8818048:	03000713          	li	a4,48
    e881804c:	02d56e63          	bltu	a0,a3,e8818088 <mDNS_vsnprintf+0x746>
                if (F.altForm) { *--s = (char)c; *--s = '0'; i += 2; }
    e8818050:	c8058ce3          	beqz	a1,e8817ce8 <mDNS_vsnprintf+0x3a6>
    e8818054:	fef88fa3          	sb	a5,-1(a7)
    e8818058:	03000793          	li	a5,48
    e881805c:	fef88f23          	sb	a5,-2(a7)
    e8818060:	2509                	addiw	a0,a0,2
    e8818062:	18f9                	addi	a7,a7,-2
    e8818064:	b151                	j	e8817ce8 <mDNS_vsnprintf+0x3a6>
            case 'x':  digits = "0123456789abcdef";
    e8818066:	0008b617          	auipc	a2,0x8b
    e881806a:	14260613          	addi	a2,a2,322 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e881806e:	b7a5                	j	e8817fd6 <mDNS_vsnprintf+0x694>
                else n = va_arg(arg, unsigned int);
    e8818070:	00076703          	lwu	a4,0(a4)
    e8818074:	bf69                	j	e881800e <mDNS_vsnprintf+0x6cc>
                for (i = 0; n; n /= 16, i++) *--s = digits[n % 16];
    e8818076:	00f77813          	andi	a6,a4,15
    e881807a:	8106480b          	lrbu	a6,a2,a6,0
    e881807e:	8311                	srli	a4,a4,0x4
    e8818080:	2505                	addiw	a0,a0,1
    e8818082:	09f8d80b          	sbib	a6,(a7),-1,0
    e8818086:	b7c1                	j	e8818046 <mDNS_vsnprintf+0x704>
                for (; i < F.precision; i++) *--s = '0';
    e8818088:	09f8d70b          	sbib	a4,(a7),-1,0
    e881808c:	2505                	addiw	a0,a0,1
    e881808e:	bf7d                	j	e881804c <mDNS_vsnprintf+0x70a>
                        if (!F.havePrecision)                               // C string
    e8818090:	09014783          	lbu	a5,144(sp)
    e8818094:	00249713          	slli	a4,s1,0x2
    e8818098:	9bed                	andi	a5,a5,-5
    e881809a:	8fd9                	or	a5,a5,a4
    e881809c:	004a1713          	slli	a4,s4,0x4
    e88180a0:	fcf7f793          	andi	a5,a5,-49
    e88180a4:	8fd9                	or	a5,a5,a4
    e88180a6:	00591713          	slli	a4,s2,0x5
    e88180aa:	8fd9                	or	a5,a5,a4
    e88180ac:	08f10823          	sb	a5,144(sp)
    e88180b0:	8ba1                	andi	a5,a5,8
    e88180b2:	c3f9                	beqz	a5,e8818178 <mDNS_vsnprintf+0x836>
    e88180b4:	4781                	li	a5,0
                            while ((i < F.precision) && s[i]) i++;
    e88180b6:	fff88613          	addi	a2,a7,-1
    e88180ba:	0007869b          	sext.w	a3,a5
    e88180be:	0106f663          	bgeu	a3,a6,e88180ca <mDNS_vsnprintf+0x788>
    e88180c2:	0785                	addi	a5,a5,1
    e88180c4:	80f6470b          	lrbu	a4,a2,a5,0
    e88180c8:	fb6d                	bnez	a4,e88180ba <mDNS_vsnprintf+0x778>
    e88180ca:	8536                	mv	a0,a3
                            while (i>0 && (s[i-1] & 0xC0) == 0x80) i--;
    e88180cc:	08000593          	li	a1,128
    e88180d0:	c521                	beqz	a0,e8818118 <mDNS_vsnprintf+0x7d6>
    e88180d2:	fff5071b          	addiw	a4,a0,-1
    e88180d6:	90e8c78b          	lurbu	a5,a7,a4,0
    e88180da:	0c07f613          	andi	a2,a5,192
    e88180de:	08b60f63          	beq	a2,a1,e881817c <mDNS_vsnprintf+0x83a>
                            if (i>0 && (s[i-1] & 0xC0) == 0xC0)                 // If we found a start-char
    e88180e2:	0c000593          	li	a1,192
    e88180e6:	02b61963          	bne	a2,a1,e8818118 <mDNS_vsnprintf+0x7d6>
                                if (((j-i) < 7) && (((s[i] >> (7-(j-i))) & 0xFF) == 0xFE)) i = j;
    e88180ea:	40e685bb          	subw	a1,a3,a4
    e88180ee:	4619                	li	a2,6
                            while (i>0 && (s[i-1] & 0xC0) == 0x80) i--;
    e88180f0:	853a                	mv	a0,a4
                                if (((j-i) < 7) && (((s[i] >> (7-(j-i))) & 0xFF) == 0xFE)) i = j;
    e88180f2:	02b66363          	bltu	a2,a1,e8818118 <mDNS_vsnprintf+0x7d6>
    e88180f6:	9f15                	subw	a4,a4,a3
    e88180f8:	271d                	addiw	a4,a4,7
    e88180fa:	40e7d7bb          	sraw	a5,a5,a4
    e88180fe:	0ff7f793          	andi	a5,a5,255
    e8818102:	f0278793          	addi	a5,a5,-254 # ffffffffffffef02 <__DRAM0_INF_BASE+0xffffffff0000ef02>
    e8818106:	00f037b3          	snez	a5,a5
    e881810a:	40f6950b          	mveqz	a0,a3,a5
    e881810e:	a029                	j	e8818118 <mDNS_vsnprintf+0x7d6>
                            while (s[i]) i++;
    e8818110:	2505                	addiw	a0,a0,1
    e8818112:	90a8c78b          	lurbu	a5,a7,a0,0
    e8818116:	ffed                	bnez	a5,e8818110 <mDNS_vsnprintf+0x7ce>
                if (F.havePrecision && i > F.precision)
    e8818118:	09014783          	lbu	a5,144(sp)
    e881811c:	7726                	ld	a4,104(sp)
    e881811e:	0fc7f793          	andi	a5,a5,252
    e8818122:	0706                	slli	a4,a4,0x1
    e8818124:	01a7e7b3          	or	a5,a5,s10
    e8818128:	8fd9                	or	a5,a5,a4
    e881812a:	00249713          	slli	a4,s1,0x2
    e881812e:	9bed                	andi	a5,a5,-5
    e8818130:	8fd9                	or	a5,a5,a4
    e8818132:	7746                	ld	a4,112(sp)
    e8818134:	9bdd                	andi	a5,a5,-9
    e8818136:	070e                	slli	a4,a4,0x3
    e8818138:	8fd9                	or	a5,a5,a4
    e881813a:	004a1713          	slli	a4,s4,0x4
    e881813e:	fcf7f793          	andi	a5,a5,-49
    e8818142:	8fd9                	or	a5,a5,a4
    e8818144:	00591713          	slli	a4,s2,0x5
    e8818148:	8fd9                	or	a5,a5,a4
    e881814a:	08f10823          	sb	a5,144(sp)
    e881814e:	8ba1                	andi	a5,a5,8
    e8818150:	b8078ce3          	beqz	a5,e8817ce8 <mDNS_vsnprintf+0x3a6>
    e8818154:	b8a87ae3          	bgeu	a6,a0,e8817ce8 <mDNS_vsnprintf+0x3a6>
    e8818158:	7c08378b          	extu	a5,a6,31,0
    e881815c:	97c6                	add	a5,a5,a7
    e881815e:	8542                	mv	a0,a6
                { i = F.precision; while (i>0 && (s[i] & 0xC0) == 0x80) i--;}
    e8818160:	08000693          	li	a3,128
    e8818164:	b80502e3          	beqz	a0,e8817ce8 <mDNS_vsnprintf+0x3a6>
    e8818168:	99f7c70b          	lbuia	a4,(a5),-1,0
    e881816c:	0c077713          	andi	a4,a4,192
    e8818170:	b6d71ce3          	bne	a4,a3,e8817ce8 <mDNS_vsnprintf+0x3a6>
    e8818174:	357d                	addiw	a0,a0,-1
    e8818176:	b7fd                	j	e8818164 <mDNS_vsnprintf+0x822>
                    case 0: i=0;
    e8818178:	4501                	li	a0,0
    e881817a:	bf61                	j	e8818112 <mDNS_vsnprintf+0x7d0>
                            while (i>0 && (s[i-1] & 0xC0) == 0x80) i--;
    e881817c:	853a                	mv	a0,a4
    e881817e:	bf89                	j	e88180d0 <mDNS_vsnprintf+0x78e>
                    case 1: i = (unsigned char) *s++; break;                // Pascal string
    e8818180:	9818c50b          	lbuia	a0,(a7),1,0
    e8818184:	bf51                	j	e8818118 <mDNS_vsnprintf+0x7d6>
                            if (s + *a >= &mDNS_VACB[254])
    e8818186:	96e2                	add	a3,a3,s8
    e8818188:	29e10793          	addi	a5,sp,670
    e881818c:	00f6ec63          	bltu	a3,a5,e88181a4 <mDNS_vsnprintf+0x862>
                            { s += mDNS_snprintf(s, mDNS_VACB_Remain(s), "<<NAME TOO LONG>>"); break; }
    e8818190:	0008b617          	auipc	a2,0x8b
    e8818194:	13060613          	addi	a2,a2,304 # e88a32c0 <mDNSInterface_Unicast+0x540>
    e8818198:	85ba                	mv	a1,a4
    e881819a:	8562                	mv	a0,s8
    e881819c:	fcc2                	sd	a6,120(sp)
    e881819e:	aa5fd0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e88181a2:	bc41                	j	e8817c32 <mDNS_vsnprintf+0x2f0>
                            ConvertDomainLabelToCString((domainlabel*)a, buf);
    e88181a4:	8546                	mv	a0,a7
    e88181a6:	05c00613          	li	a2,92
    e88181aa:	110c                	addi	a1,sp,160
    e88181ac:	e142                	sd	a6,128(sp)
    e88181ae:	fcc6                	sd	a7,120(sp)
    e88181b0:	e53a                	sd	a4,136(sp)
    e88181b2:	b26fb0ef          	jal	ra,e88134d8 <ConvertDomainLabelToCString_withescape>
                            s += mDNS_snprintf(s, mDNS_VACB_Remain(s), "%s.", buf);
    e88181b6:	672a                	ld	a4,136(sp)
    e88181b8:	8562                	mv	a0,s8
    e88181ba:	1114                	addi	a3,sp,160
    e88181bc:	85ba                	mv	a1,a4
    e88181be:	0008b617          	auipc	a2,0x8b
    e88181c2:	11a60613          	addi	a2,a2,282 # e88a32d8 <mDNSInterface_Unicast+0x558>
    e88181c6:	a7dfd0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e88181ca:	7c05350b          	extu	a0,a0,31,0
                            a += 1 + *a;
    e88181ce:	78e6                	ld	a7,120(sp)
                            s += mDNS_snprintf(s, mDNS_VACB_Remain(s), "%s.", buf);
    e88181d0:	9c2a                	add	s8,s8,a0
                            a += 1 + *a;
    e88181d2:	680a                	ld	a6,128(sp)
    e88181d4:	0008c703          	lbu	a4,0(a7)
    e88181d8:	0705                	addi	a4,a4,1
    e88181da:	98ba                	add	a7,a7,a4
    e88181dc:	bc05                	j	e8817c0c <mDNS_vsnprintf+0x2ca>
                if (!s) { static char emsg[] = "<<NULL>>"; s = emsg; i = sizeof(emsg)-1; }
    e88181de:	000bd897          	auipc	a7,0xbd
    e88181e2:	88a88893          	addi	a7,a7,-1910 # e88d4a68 <emsg.10228>
    e88181e6:	4521                	li	a0,8
    e88181e8:	bf05                	j	e8818118 <mDNS_vsnprintf+0x7d6>
                if      (F.hSize) *(short *) s = (short)nwritten;
    e88181ea:	09014783          	lbu	a5,144(sp)
    e88181ee:	048a                	slli	s1,s1,0x2
    e88181f0:	0a12                	slli	s4,s4,0x4
    e88181f2:	9bed                	andi	a5,a5,-5
    e88181f4:	8cdd                	or	s1,s1,a5
    e88181f6:	fcf4f493          	andi	s1,s1,-49
    e88181fa:	0144ea33          	or	s4,s1,s4
    e88181fe:	0916                	slli	s2,s2,0x5
    e8818200:	012a6933          	or	s2,s4,s2
    e8818204:	09210823          	sb	s2,144(sp)
    e8818208:	0ff97913          	andi	s2,s2,255
    e881820c:	01097793          	andi	a5,s2,16
            case 'n':  s = va_arg(arg, char *);
    e8818210:	7887468b          	ldia	a3,(a4),8,0
                if      (F.hSize) *(short *) s = (short)nwritten;
    e8818214:	cb81                	beqz	a5,e8818224 <mDNS_vsnprintf+0x8e2>
    e8818216:	01b69023          	sh	s11,0(a3)
    for (c = *fmt; c != 0; c = *++fmt)
    e881821a:	001b4783          	lbu	a5,1(s6)
    e881821e:	0b05                	addi	s6,s6,1
    e8818220:	f72ff06f          	j	e8817992 <mDNS_vsnprintf+0x50>
                else if (F.lSize) *(long  *) s = (long)nwritten;
    e8818224:	02097913          	andi	s2,s2,32
    e8818228:	00090663          	beqz	s2,e8818234 <mDNS_vsnprintf+0x8f2>
    e881822c:	7c0db78b          	extu	a5,s11,31,0
    e8818230:	e29c                	sd	a5,0(a3)
    e8818232:	b7e5                	j	e881821a <mDNS_vsnprintf+0x8d8>
                else *(int   *) s = (int)nwritten;
    e8818234:	01b6a023          	sw	s11,0(a3)
                continue;
    e8818238:	b7cd                	j	e881821a <mDNS_vsnprintf+0x8d8>
                if (!a) { static char emsg[] = "<<NULL>>"; s = emsg; i = sizeof(emsg)-1; }
    e881823a:	000bd897          	auipc	a7,0xbd
    e881823e:	81e88893          	addi	a7,a7,-2018 # e88d4a58 <emsg.10205>
    e8818242:	4521                	li	a0,8
    e8818244:	b455                	j	e8817ce8 <mDNS_vsnprintf+0x3a6>
            { i = buflen - nwritten; while (i>0 && (s[i] & 0xC0) == 0x80) i--;}
    e8818246:	357d                	addiw	a0,a0,-1
    e8818248:	be01                	j	e8817d58 <mDNS_vsnprintf+0x416>
            for (j=0; j<i; j++) *sbuffer++ = *s++;          // Write the converted result
    e881824a:	80f8c70b          	lrbu	a4,a7,a5,0
    e881824e:	00fad70b          	srb	a4,s5,a5,0
    e8818252:	0785                	addi	a5,a5,1
    e8818254:	be11                	j	e8817d68 <mDNS_vsnprintf+0x426>
                *sbuffer++ = ' ';
    e8818256:	181ad70b          	sbia	a4,(s5),1,0
                if (++nwritten >= buflen) goto exit;
    e881825a:	2505                	addiw	a0,a0,1
    e881825c:	b39563e3          	bltu	a0,s9,e8817d82 <mDNS_vsnprintf+0x440>
    e8818260:	8daa                	mv	s11,a0
                if (++nwritten >= buflen) goto exit;
    e8818262:	89d6                	mv	s3,s5
    e8818264:	f46ff06f          	j	e88179aa <mDNS_vsnprintf+0x68>

00000000e8818268 <MD5_Init>:
#define INIT_DATA_C (unsigned long)0x98badcfeL
#define INIT_DATA_D (unsigned long)0x10325476L

int MD5_Init(MD5_CTX *c)
{
    c->A=INIT_DATA_A;
    e8818268:	0008b797          	auipc	a5,0x8b
    e881826c:	43078793          	addi	a5,a5,1072 # e88a3698 <zerov6Addr+0xb0>
    e8818270:	639c                	ld	a5,0(a5)
    c->B=INIT_DATA_B;
    c->C=INIT_DATA_C;
    c->D=INIT_DATA_D;
    c->Nl=0;
    e8818272:	00053823          	sd	zero,16(a0)
    c->Nh=0;
    c->num=0;
    e8818276:	04052c23          	sw	zero,88(a0)
    c->A=INIT_DATA_A;
    e881827a:	e11c                	sd	a5,0(a0)
    c->C=INIT_DATA_C;
    e881827c:	0008b797          	auipc	a5,0x8b
    e8818280:	42478793          	addi	a5,a5,1060 # e88a36a0 <zerov6Addr+0xb8>
    e8818284:	639c                	ld	a5,0(a5)
    e8818286:	e51c                	sd	a5,8(a0)
    return 1;
}
    e8818288:	4505                	li	a0,1
    e881828a:	8082                	ret

00000000e881828c <md5_block_host_order>:
    D=c->D;

    for (; num--; X+=HASH_LBLOCK)
    {
        /* Round 0 */
        R0(A,B,C,D,X[ 0], 7,0xd76aa478L);
    e881828c:	6bb557b7          	lui	a5,0x6bb55
    e8818290:	0786                	slli	a5,a5,0x1
    e8818292:	47878793          	addi	a5,a5,1144 # 6bb55478 <memcmp-0x7ccaab88>
{
    e8818296:	7175                	addi	sp,sp,-144
        R0(A,B,C,D,X[ 0], 7,0xd76aa478L);
    e8818298:	e03e                	sd	a5,0(sp)
    e881829a:	7463e7b7          	lui	a5,0x7463e
    e881829e:	bab78793          	addi	a5,a5,-1109 # 7463dbab <memcmp-0x741c2455>
    e88182a2:	0786                	slli	a5,a5,0x1
    e88182a4:	e43e                	sd	a5,8(sp)
    e88182a6:	242077b7          	lui	a5,0x24207
    e88182aa:	0db78793          	addi	a5,a5,219 # 242070db <memcmp-0xc45f8f25>
    e88182ae:	e83e                	sd	a5,16(sp)
    e88182b0:	60dee7b7          	lui	a5,0x60dee
    e88182b4:	77778793          	addi	a5,a5,1911 # 60dee777 <memcmp-0x87a11889>
    e88182b8:	0786                	slli	a5,a5,0x1
    e88182ba:	ec3e                	sd	a5,24(sp)
    e88182bc:	2a0c17b7          	lui	a5,0x2a0c1
    e88182c0:	078a                	slli	a5,a5,0x2
    e88182c2:	61378793          	addi	a5,a5,1555 # 2a0c1613 <memcmp-0xbe73e9ed>
    e88182c6:	f03e                	sd	a5,32(sp)
    e88182c8:	7fffb7b7          	lui	a5,0x7fffb
{
    e88182cc:	e522                	sd	s0,136(sp)
    e88182ce:	e0e6                	sd	s9,64(sp)
    e88182d0:	fc6a                	sd	s10,56(sp)
    e88182d2:	0786                	slli	a5,a5,0x1
    e88182d4:	44ae7cb7          	lui	s9,0x44ae7
    e88182d8:	299e5d37          	lui	s10,0x299e5
    B=c->B;
    e88182dc:	f085488b          	lwud	a7,s0,(a0),0,3
    D=c->D;
    e88182e0:	f305470b          	lwud	a4,a6,(a0),1,3
    for (; num--; X+=HASH_LBLOCK)
    e88182e4:	bb178793          	addi	a5,a5,-1103 # 7fffabb1 <memcmp-0x6880544f>
    e88182e8:	bdfc8c93          	addi	s9,s9,-1057 # 44ae6bdf <memcmp-0xa3d19421>
    e88182ec:	0d0a                	slli	s10,s10,0x2
{
    e88182ee:	e126                	sd	s1,128(sp)
    e88182f0:	fcca                	sd	s2,120(sp)
    e88182f2:	f8ce                	sd	s3,112(sp)
    e88182f4:	f4d2                	sd	s4,104(sp)
    e88182f6:	f0d6                	sd	s5,96(sp)
    e88182f8:	ecda                	sd	s6,88(sp)
    e88182fa:	e8de                	sd	s7,80(sp)
    e88182fc:	e4e2                	sd	s8,72(sp)
    e88182fe:	f86e                	sd	s11,48(sp)
    e8818300:	f43e                	sd	a5,40(sp)
    e8818302:	0c86                	slli	s9,s9,0x1
    e8818304:	38ed0d13          	addi	s10,s10,910 # 299e538e <memcmp-0xbee1ac72>
    for (; num--; X+=HASH_LBLOCK)
    e8818308:	367d                	addiw	a2,a2,-1
    e881830a:	57fd                	li	a5,-1
    e881830c:	02f61063          	bne	a2,a5,e881832c <md5_block_host_order+0xa0>
        A = c->A += A;
        B = c->B += B;
        C = c->C += C;
        D = c->D += D;
    }
}
    e8818310:	642a                	ld	s0,136(sp)
    e8818312:	648a                	ld	s1,128(sp)
    e8818314:	7966                	ld	s2,120(sp)
    e8818316:	79c6                	ld	s3,112(sp)
    e8818318:	7a26                	ld	s4,104(sp)
    e881831a:	7a86                	ld	s5,96(sp)
    e881831c:	6b66                	ld	s6,88(sp)
    e881831e:	6bc6                	ld	s7,80(sp)
    e8818320:	6c26                	ld	s8,72(sp)
    e8818322:	6c86                	ld	s9,64(sp)
    e8818324:	7d62                	ld	s10,56(sp)
    e8818326:	7dc2                	ld	s11,48(sp)
    e8818328:	6149                	addi	sp,sp,144
    e881832a:	8082                	ret
        R0(A,B,C,D,X[ 0], 7,0xd76aa478L);
    e881832c:	0005e383          	lwu	t2,0(a1)
    e8818330:	6682                	ld	a3,0(sp)
    e8818332:	010747b3          	xor	a5,a4,a6
    e8818336:	8fe1                	and	a5,a5,s0
    e8818338:	969e                	add	a3,a3,t2
    e881833a:	0107c7b3          	xor	a5,a5,a6
    e881833e:	97b6                	add	a5,a5,a3
    e8818340:	97c6                	add	a5,a5,a7
    e8818342:	66a2                	ld	a3,8(sp)
        R0(D,A,B,C,X[ 1],12,0xe8c7b756L);
    e8818344:	0045ef03          	lwu	t5,4(a1)
        R0(A,B,C,D,X[ 0], 7,0xd76aa478L);
    e8818348:	1477978b          	srriw	a5,a5,7
    e881834c:	7c07b78b          	extu	a5,a5,31,0
    e8818350:	97a2                	add	a5,a5,s0
        R0(D,A,B,C,X[ 1],12,0xe8c7b756L);
    e8818352:	9836                	add	a6,a6,a3
    e8818354:	00e446b3          	xor	a3,s0,a4
    e8818358:	987a                	add	a6,a6,t5
    e881835a:	8efd                	and	a3,a3,a5
    e881835c:	8eb9                	xor	a3,a3,a4
    e881835e:	96c2                	add	a3,a3,a6
    e8818360:	6842                	ld	a6,16(sp)
        R0(C,D,A,B,X[ 2],17,0x242070dbL);
    e8818362:	0085e483          	lwu	s1,8(a1)
        R0(D,A,B,C,X[ 1],12,0xe8c7b756L);
    e8818366:	14c6968b          	srriw	a3,a3,12
    e881836a:	7c06b68b          	extu	a3,a3,31,0
    e881836e:	96be                	add	a3,a3,a5
        R0(C,D,A,B,X[ 2],17,0x242070dbL);
    e8818370:	9742                	add	a4,a4,a6
    e8818372:	00f44833          	xor	a6,s0,a5
    e8818376:	9726                	add	a4,a4,s1
    e8818378:	00d87833          	and	a6,a6,a3
    e881837c:	00884833          	xor	a6,a6,s0
    e8818380:	983a                	add	a6,a6,a4
    e8818382:	6762                	ld	a4,24(sp)
    e8818384:	1518180b          	srriw	a6,a6,17
        R0(B,C,D,A,X[ 3],22,0xc1bdceeeL);
    e8818388:	00c5eb03          	lwu	s6,12(a1)
        R0(C,D,A,B,X[ 2],17,0x242070dbL);
    e881838c:	7c08380b          	extu	a6,a6,31,0
    e8818390:	9836                	add	a6,a6,a3
        R0(B,C,D,A,X[ 3],22,0xc1bdceeeL);
    e8818392:	943a                	add	s0,s0,a4
    e8818394:	00d7c733          	xor	a4,a5,a3
    e8818398:	01077733          	and	a4,a4,a6
    e881839c:	0008b897          	auipc	a7,0x8b
    e88183a0:	31488893          	addi	a7,a7,788 # e88a36b0 <end.8789+0x8>
        R0(A,B,C,D,X[ 4], 7,0xf57c0fafL);
    e88183a4:	0105e303          	lwu	t1,16(a1)
    e88183a8:	945a                	add	s0,s0,s6
        R0(B,C,D,A,X[ 3],22,0xc1bdceeeL);
    e88183aa:	8f3d                	xor	a4,a4,a5
    e88183ac:	0008b883          	ld	a7,0(a7)
    e88183b0:	9722                	add	a4,a4,s0
    e88183b2:	1567170b          	srriw	a4,a4,22
    e88183b6:	7c07370b          	extu	a4,a4,31,0
    e88183ba:	989a                	add	a7,a7,t1
    e88183bc:	9742                	add	a4,a4,a6
        R0(A,B,C,D,X[ 4], 7,0xf57c0fafL);
    e88183be:	98be                	add	a7,a7,a5
    e88183c0:	0106c7b3          	xor	a5,a3,a6
    e88183c4:	8ff9                	and	a5,a5,a4
        R0(D,A,B,C,X[ 5],12,0x4787c62aL);
    e88183c6:	0145ef83          	lwu	t6,20(a1)
        R0(A,B,C,D,X[ 4], 7,0xf57c0fafL);
    e88183ca:	8fb5                	xor	a5,a5,a3
    e88183cc:	97c6                	add	a5,a5,a7
    e88183ce:	4787c8b7          	lui	a7,0x4787c
    e88183d2:	1477978b          	srriw	a5,a5,7
    e88183d6:	62a88893          	addi	a7,a7,1578 # 4787c62a <memcmp-0xa0f839d6>
    e88183da:	98fe                	add	a7,a7,t6
    e88183dc:	7c07b78b          	extu	a5,a5,31,0
    e88183e0:	97ba                	add	a5,a5,a4
        R0(D,A,B,C,X[ 5],12,0x4787c62aL);
    e88183e2:	98b6                	add	a7,a7,a3
    e88183e4:	00e846b3          	xor	a3,a6,a4
    e88183e8:	8efd                	and	a3,a3,a5
        R0(C,D,A,B,X[ 6],17,0xa8304613L);
    e88183ea:	0185ee03          	lwu	t3,24(a1)
    e88183ee:	7402                	ld	s0,32(sp)
        R0(D,A,B,C,X[ 5],12,0x4787c62aL);
    e88183f0:	0106c6b3          	xor	a3,a3,a6
    e88183f4:	96c6                	add	a3,a3,a7
    e88183f6:	14c6968b          	srriw	a3,a3,12
    e88183fa:	008e08b3          	add	a7,t3,s0
    e88183fe:	7c06b68b          	extu	a3,a3,31,0
    e8818402:	96be                	add	a3,a3,a5
        R0(C,D,A,B,X[ 6],17,0xa8304613L);
    e8818404:	98c2                	add	a7,a7,a6
    e8818406:	00f74833          	xor	a6,a4,a5
    e881840a:	00d87833          	and	a6,a6,a3
    e881840e:	00e84833          	xor	a6,a6,a4
    e8818412:	9846                	add	a6,a6,a7
    e8818414:	0008b897          	auipc	a7,0x8b
    e8818418:	2a488893          	addi	a7,a7,676 # e88a36b8 <end.8789+0x10>
        R0(B,C,D,A,X[ 7],22,0xfd469501L);
    e881841c:	01c5ec03          	lwu	s8,28(a1)
    e8818420:	0008b883          	ld	a7,0(a7)
        R0(C,D,A,B,X[ 6],17,0xa8304613L);
    e8818424:	1518180b          	srriw	a6,a6,17
    e8818428:	7c08380b          	extu	a6,a6,31,0
    e881842c:	98e2                	add	a7,a7,s8
    e881842e:	9836                	add	a6,a6,a3
        R0(B,C,D,A,X[ 7],22,0xfd469501L);
    e8818430:	98ba                	add	a7,a7,a4
    e8818432:	00d7c733          	xor	a4,a5,a3
    e8818436:	01077733          	and	a4,a4,a6
        R0(A,B,C,D,X[ 8], 7,0x698098d8L);
    e881843a:	0205ea03          	lwu	s4,32(a1)
        R0(B,C,D,A,X[ 7],22,0xfd469501L);
    e881843e:	8f3d                	xor	a4,a4,a5
    e8818440:	9746                	add	a4,a4,a7
    e8818442:	6980a8b7          	lui	a7,0x6980a
    e8818446:	1567170b          	srriw	a4,a4,22
    e881844a:	8d888893          	addi	a7,a7,-1832 # 698098d8 <memcmp-0x7eff6728>
    e881844e:	7c07370b          	extu	a4,a4,31,0
    e8818452:	98d2                	add	a7,a7,s4
    e8818454:	9742                	add	a4,a4,a6
        R0(A,B,C,D,X[ 8], 7,0x698098d8L);
    e8818456:	98be                	add	a7,a7,a5
    e8818458:	0106c7b3          	xor	a5,a3,a6
    e881845c:	8ff9                	and	a5,a5,a4
    e881845e:	8fb5                	xor	a5,a5,a3
    e8818460:	97c6                	add	a5,a5,a7
    e8818462:	0008b897          	auipc	a7,0x8b
    e8818466:	25e88893          	addi	a7,a7,606 # e88a36c0 <end.8789+0x18>
        R0(D,A,B,C,X[ 9],12,0x8b44f7afL);
    e881846a:	0245e403          	lwu	s0,36(a1)
    e881846e:	0008b883          	ld	a7,0(a7)
        R0(A,B,C,D,X[ 8], 7,0x698098d8L);
    e8818472:	1477978b          	srriw	a5,a5,7
    e8818476:	7c07b78b          	extu	a5,a5,31,0
    e881847a:	98a2                	add	a7,a7,s0
    e881847c:	97ba                	add	a5,a5,a4
        R0(D,A,B,C,X[ 9],12,0x8b44f7afL);
    e881847e:	98b6                	add	a7,a7,a3
    e8818480:	00e846b3          	xor	a3,a6,a4
    e8818484:	8efd                	and	a3,a3,a5
    e8818486:	0106c6b3          	xor	a3,a3,a6
        R0(C,D,A,B,X[10],17,0xffff5bb1L);
    e881848a:	0285ea83          	lwu	s5,40(a1)
        R0(D,A,B,C,X[ 9],12,0x8b44f7afL);
    e881848e:	96c6                	add	a3,a3,a7
    e8818490:	78a2                	ld	a7,40(sp)
    e8818492:	14c6968b          	srriw	a3,a3,12
    e8818496:	7c06b68b          	extu	a3,a3,31,0
    e881849a:	98d6                	add	a7,a7,s5
    e881849c:	96be                	add	a3,a3,a5
        R0(C,D,A,B,X[10],17,0xffff5bb1L);
    e881849e:	98c2                	add	a7,a7,a6
    e88184a0:	00f74833          	xor	a6,a4,a5
        R0(B,C,D,A,X[11],22,0x895cd7beL);
    e88184a4:	02c5e903          	lwu	s2,44(a1)
        R0(C,D,A,B,X[10],17,0xffff5bb1L);
    e88184a8:	00d87833          	and	a6,a6,a3
    e88184ac:	00e84833          	xor	a6,a6,a4
    e88184b0:	9846                	add	a6,a6,a7
    e88184b2:	1518180b          	srriw	a6,a6,17
    e88184b6:	019908b3          	add	a7,s2,s9
    e88184ba:	7c08380b          	extu	a6,a6,31,0
    e88184be:	9836                	add	a6,a6,a3
        R0(B,C,D,A,X[11],22,0x895cd7beL);
    e88184c0:	9746                	add	a4,a4,a7
    e88184c2:	00d7c8b3          	xor	a7,a5,a3
    e88184c6:	0108f8b3          	and	a7,a7,a6
    e88184ca:	00f8c8b3          	xor	a7,a7,a5
        R0(A,B,C,D,X[12], 7,0x6b901122L);
    e88184ce:	0305eb83          	lwu	s7,48(a1)
        R0(B,C,D,A,X[11],22,0x895cd7beL);
    e88184d2:	9746                	add	a4,a4,a7
    e88184d4:	6b9018b7          	lui	a7,0x6b901
    e88184d8:	12288893          	addi	a7,a7,290 # 6b901122 <memcmp-0x7cefeede>
    e88184dc:	98de                	add	a7,a7,s7
    e88184de:	1567170b          	srriw	a4,a4,22
    e88184e2:	7c07370b          	extu	a4,a4,31,0
    e88184e6:	9742                	add	a4,a4,a6
        R0(A,B,C,D,X[12], 7,0x6b901122L);
    e88184e8:	97c6                	add	a5,a5,a7
    e88184ea:	0106c8b3          	xor	a7,a3,a6
    e88184ee:	00e8f8b3          	and	a7,a7,a4
    e88184f2:	00d8c8b3          	xor	a7,a7,a3
    e88184f6:	97c6                	add	a5,a5,a7
    e88184f8:	0008b897          	auipc	a7,0x8b
    e88184fc:	1d088893          	addi	a7,a7,464 # e88a36c8 <end.8789+0x20>
        R0(D,A,B,C,X[13],12,0xfd987193L);
    e8818500:	0345e983          	lwu	s3,52(a1)
    e8818504:	0008b883          	ld	a7,0(a7)
        R0(A,B,C,D,X[12], 7,0x6b901122L);
    e8818508:	1477978b          	srriw	a5,a5,7
    e881850c:	7c07b78b          	extu	a5,a5,31,0
    e8818510:	98ce                	add	a7,a7,s3
    e8818512:	97ba                	add	a5,a5,a4
        R0(D,A,B,C,X[13],12,0xfd987193L);
    e8818514:	96c6                	add	a3,a3,a7
    e8818516:	00e848b3          	xor	a7,a6,a4
        R0(C,D,A,B,X[14],17,0xa679438eL);
    e881851a:	0385e283          	lwu	t0,56(a1)
        R0(D,A,B,C,X[13],12,0xfd987193L);
    e881851e:	00f8f8b3          	and	a7,a7,a5
    e8818522:	0108c8b3          	xor	a7,a7,a6
    e8818526:	96c6                	add	a3,a3,a7
    e8818528:	14c6968b          	srriw	a3,a3,12
    e881852c:	01a288b3          	add	a7,t0,s10
    e8818530:	7c06b68b          	extu	a3,a3,31,0
    e8818534:	96be                	add	a3,a3,a5
        R0(C,D,A,B,X[14],17,0xa679438eL);
    e8818536:	9846                	add	a6,a6,a7
    e8818538:	00f748b3          	xor	a7,a4,a5
    e881853c:	00d8f8b3          	and	a7,a7,a3
    e8818540:	00e8c8b3          	xor	a7,a7,a4
        R0(B,C,D,A,X[15],22,0x49b40821L);
    e8818544:	03c5ee83          	lwu	t4,60(a1)
        R0(C,D,A,B,X[14],17,0xa679438eL);
    e8818548:	9846                	add	a6,a6,a7
    e881854a:	49b418b7          	lui	a7,0x49b41
    e881854e:	82188893          	addi	a7,a7,-2015 # 49b40821 <memcmp-0x9ecbf7df>
    e8818552:	98f6                	add	a7,a7,t4
    e8818554:	1518180b          	srriw	a6,a6,17
    e8818558:	7c08380b          	extu	a6,a6,31,0
    e881855c:	9836                	add	a6,a6,a3
        R0(B,C,D,A,X[15],22,0x49b40821L);
    e881855e:	9746                	add	a4,a4,a7
    e8818560:	00d7c8b3          	xor	a7,a5,a3
    e8818564:	0108f8b3          	and	a7,a7,a6
    e8818568:	00f8c8b3          	xor	a7,a7,a5
    e881856c:	9746                	add	a4,a4,a7
    e881856e:	7b0f18b7          	lui	a7,0x7b0f1
    e8818572:	031f188b          	addsl	a7,t5,a7,1
    e8818576:	1567170b          	srriw	a4,a4,22
    e881857a:	56288893          	addi	a7,a7,1378 # 7b0f1562 <memcmp-0x6d70ea9e>
    e881857e:	7c07370b          	extu	a4,a4,31,0
    e8818582:	9742                	add	a4,a4,a6
        R1(A,B,C,D,X[ 1], 5,0xf61e2562L);
    e8818584:	97c6                	add	a5,a5,a7
    e8818586:	00e848b3          	xor	a7,a6,a4
    e881858a:	00d8f8b3          	and	a7,a7,a3
    e881858e:	0108c8b3          	xor	a7,a7,a6
    e8818592:	97c6                	add	a5,a5,a7
    e8818594:	030108b7          	lui	a7,0x3010
    e8818598:	2cd88893          	addi	a7,a7,717 # 30102cd <memcmp-0xe57efd33>
    e881859c:	1457978b          	srriw	a5,a5,5
    e88185a0:	089a                	slli	a7,a7,0x6
    e88185a2:	98f2                	add	a7,a7,t3
    e88185a4:	7c07b78b          	extu	a5,a5,31,0
    e88185a8:	97ba                	add	a5,a5,a4
        R1(D,A,B,C,X[ 6], 9,0xc040b340L);
    e88185aa:	96c6                	add	a3,a3,a7
    e88185ac:	00f748b3          	xor	a7,a4,a5
    e88185b0:	0108f8b3          	and	a7,a7,a6
    e88185b4:	00e8c8b3          	xor	a7,a7,a4
    e88185b8:	96c6                	add	a3,a3,a7
    e88185ba:	265e68b7          	lui	a7,0x265e6
    e88185be:	1496968b          	srriw	a3,a3,9
    e88185c2:	a5188893          	addi	a7,a7,-1455 # 265e5a51 <memcmp-0xc221a5af>
    e88185c6:	98ca                	add	a7,a7,s2
    e88185c8:	7c06b68b          	extu	a3,a3,31,0
    e88185cc:	96be                	add	a3,a3,a5
        R1(C,D,A,B,X[11],14,0x265e5a51L);
    e88185ce:	9846                	add	a6,a6,a7
    e88185d0:	00d7c8b3          	xor	a7,a5,a3
    e88185d4:	00e8f8b3          	and	a7,a7,a4
    e88185d8:	00f8c8b3          	xor	a7,a7,a5
    e88185dc:	9846                	add	a6,a6,a7
    e88185de:	3a6db8b7          	lui	a7,0x3a6db
    e88185e2:	0513988b          	addsl	a7,t2,a7,2
    e88185e6:	14e8180b          	srriw	a6,a6,14
    e88185ea:	7aa88893          	addi	a7,a7,1962 # 3a6db7aa <memcmp-0xae124856>
    e88185ee:	7c08380b          	extu	a6,a6,31,0
    e88185f2:	9836                	add	a6,a6,a3
        R1(B,C,D,A,X[ 0],20,0xe9b6c7aaL);
    e88185f4:	9746                	add	a4,a4,a7
    e88185f6:	0106c8b3          	xor	a7,a3,a6
    e88185fa:	00f8f8b3          	and	a7,a7,a5
    e88185fe:	00d8c8b3          	xor	a7,a7,a3
    e8818602:	9746                	add	a4,a4,a7
    e8818604:	0008b897          	auipc	a7,0x8b
    e8818608:	0cc88893          	addi	a7,a7,204 # e88a36d0 <end.8789+0x28>
    e881860c:	0008b883          	ld	a7,0(a7)
    e8818610:	1547170b          	srriw	a4,a4,20
    e8818614:	7c07370b          	extu	a4,a4,31,0
    e8818618:	98fe                	add	a7,a7,t6
    e881861a:	9742                	add	a4,a4,a6
        R1(A,B,C,D,X[ 5], 5,0xd62f105dL);
    e881861c:	97c6                	add	a5,a5,a7
    e881861e:	00e848b3          	xor	a7,a6,a4
    e8818622:	00d8f8b3          	and	a7,a7,a3
    e8818626:	0108c8b3          	xor	a7,a7,a6
    e881862a:	97c6                	add	a5,a5,a7
    e881862c:	024418b7          	lui	a7,0x2441
    e8818630:	1457978b          	srriw	a5,a5,5
    e8818634:	45388893          	addi	a7,a7,1107 # 2441453 <memcmp-0xe63bebad>
    e8818638:	98d6                	add	a7,a7,s5
    e881863a:	7c07b78b          	extu	a5,a5,31,0
    e881863e:	97ba                	add	a5,a5,a4
        R1(D,A,B,C,X[10], 9,0x02441453L);
    e8818640:	96c6                	add	a3,a3,a7
    e8818642:	00f748b3          	xor	a7,a4,a5
    e8818646:	0108f8b3          	and	a7,a7,a6
    e881864a:	00e8c8b3          	xor	a7,a7,a4
    e881864e:	96c6                	add	a3,a3,a7
    e8818650:	6c50f8b7          	lui	a7,0x6c50f
    e8818654:	1496968b          	srriw	a3,a3,9
    e8818658:	031e988b          	addsl	a7,t4,a7,1
    e881865c:	68188893          	addi	a7,a7,1665 # 6c50f681 <memcmp-0x7c2f097f>
    e8818660:	7c06b68b          	extu	a3,a3,31,0
    e8818664:	96be                	add	a3,a3,a5
        R1(C,D,A,B,X[15],14,0xd8a1e681L);
    e8818666:	9846                	add	a6,a6,a7
    e8818668:	00d7c8b3          	xor	a7,a5,a3
    e881866c:	00e8f8b3          	and	a7,a7,a4
    e8818670:	00f8c8b3          	xor	a7,a7,a5
    e8818674:	9846                	add	a6,a6,a7
    e8818676:	039f58b7          	lui	a7,0x39f5
    e881867a:	089a                	slli	a7,a7,0x6
    e881867c:	14e8180b          	srriw	a6,a6,14
    e8818680:	bc888893          	addi	a7,a7,-1080 # 39f4bc8 <memcmp-0xe4e0b438>
    e8818684:	989a                	add	a7,a7,t1
    e8818686:	7c08380b          	extu	a6,a6,31,0
    e881868a:	9836                	add	a6,a6,a3
        R1(B,C,D,A,X[ 4],20,0xe7d3fbc8L);
    e881868c:	9746                	add	a4,a4,a7
    e881868e:	0106c8b3          	xor	a7,a3,a6
    e8818692:	00f8f8b3          	and	a7,a7,a5
    e8818696:	00d8c8b3          	xor	a7,a7,a3
    e881869a:	9746                	add	a4,a4,a7
    e881869c:	21e1d8b7          	lui	a7,0x21e1d
    e88186a0:	1547170b          	srriw	a4,a4,20
    e88186a4:	de688893          	addi	a7,a7,-538 # 21e1cde6 <memcmp-0xc69e321a>
    e88186a8:	98a2                	add	a7,a7,s0
    e88186aa:	7c07370b          	extu	a4,a4,31,0
    e88186ae:	9742                	add	a4,a4,a6
        R1(A,B,C,D,X[ 9], 5,0x21e1cde6L);
    e88186b0:	97c6                	add	a5,a5,a7
    e88186b2:	00e848b3          	xor	a7,a6,a4
    e88186b6:	00d8f8b3          	and	a7,a7,a3
    e88186ba:	0108c8b3          	xor	a7,a7,a6
    e88186be:	97c6                	add	a5,a5,a7
    e88186c0:	0c3378b7          	lui	a7,0xc337
    e88186c4:	0892                	slli	a7,a7,0x4
    e88186c6:	1457978b          	srriw	a5,a5,5
    e88186ca:	7d688893          	addi	a7,a7,2006 # c3377d6 <memcmp-0xdc4c882a>
    e88186ce:	9896                	add	a7,a7,t0
    e88186d0:	7c07b78b          	extu	a5,a5,31,0
    e88186d4:	97ba                	add	a5,a5,a4
        R1(D,A,B,C,X[14], 9,0xc33707d6L);
    e88186d6:	96c6                	add	a3,a3,a7
    e88186d8:	00f748b3          	xor	a7,a4,a5
    e88186dc:	0108f8b3          	and	a7,a7,a6
    e88186e0:	00e8c8b3          	xor	a7,a7,a4
    e88186e4:	96c6                	add	a3,a3,a7
    e88186e6:	0008b897          	auipc	a7,0x8b
    e88186ea:	ff288893          	addi	a7,a7,-14 # e88a36d8 <end.8789+0x30>
    e88186ee:	0008b883          	ld	a7,0(a7)
    e88186f2:	1496968b          	srriw	a3,a3,9
    e88186f6:	7c06b68b          	extu	a3,a3,31,0
    e88186fa:	98da                	add	a7,a7,s6
    e88186fc:	96be                	add	a3,a3,a5
        R1(C,D,A,B,X[ 3],14,0xf4d50d87L);
    e88186fe:	9846                	add	a6,a6,a7
    e8818700:	00d7c8b3          	xor	a7,a5,a3
    e8818704:	00e8f8b3          	and	a7,a7,a4
    e8818708:	00f8c8b3          	xor	a7,a7,a5
    e881870c:	9846                	add	a6,a6,a7
    e881870e:	455a18b7          	lui	a7,0x455a1
    e8818712:	14e8180b          	srriw	a6,a6,14
    e8818716:	4ed88893          	addi	a7,a7,1261 # 455a14ed <memcmp-0xa325eb13>
    e881871a:	98d2                	add	a7,a7,s4
    e881871c:	7c08380b          	extu	a6,a6,31,0
    e8818720:	9836                	add	a6,a6,a3
        R1(B,C,D,A,X[ 8],20,0x455a14edL);
    e8818722:	9746                	add	a4,a4,a7
    e8818724:	0106c8b3          	xor	a7,a3,a6
    e8818728:	00f8f8b3          	and	a7,a7,a5
    e881872c:	00d8c8b3          	xor	a7,a7,a3
    e8818730:	9746                	add	a4,a4,a7
    e8818732:	0008b897          	auipc	a7,0x8b
    e8818736:	fae88893          	addi	a7,a7,-82 # e88a36e0 <end.8789+0x38>
    e881873a:	0008b883          	ld	a7,0(a7)
    e881873e:	1547170b          	srriw	a4,a4,20
    e8818742:	7c07370b          	extu	a4,a4,31,0
    e8818746:	98ce                	add	a7,a7,s3
    e8818748:	9742                	add	a4,a4,a6
        R1(A,B,C,D,X[13], 5,0xa9e3e905L);
    e881874a:	97c6                	add	a5,a5,a7
    e881874c:	00e848b3          	xor	a7,a6,a4
    e8818750:	00d8f8b3          	and	a7,a7,a3
    e8818754:	0108c8b3          	xor	a7,a7,a6
    e8818758:	97c6                	add	a5,a5,a7
    e881875a:	7e77d8b7          	lui	a7,0x7e77d
    e881875e:	0314988b          	addsl	a7,s1,a7,1
    e8818762:	1457978b          	srriw	a5,a5,5
    e8818766:	3f888893          	addi	a7,a7,1016 # 7e77d3f8 <memcmp-0x6a082c08>
    e881876a:	7c07b78b          	extu	a5,a5,31,0
    e881876e:	97ba                	add	a5,a5,a4
        R1(D,A,B,C,X[ 2], 9,0xfcefa3f8L);
    e8818770:	96c6                	add	a3,a3,a7
    e8818772:	00f748b3          	xor	a7,a4,a5
    e8818776:	0108f8b3          	and	a7,a7,a6
    e881877a:	00e8c8b3          	xor	a7,a7,a4
    e881877e:	96c6                	add	a3,a3,a7
    e8818780:	676f08b7          	lui	a7,0x676f0
    e8818784:	1496968b          	srriw	a3,a3,9
    e8818788:	2d988893          	addi	a7,a7,729 # 676f02d9 <memcmp-0x8110fd27>
    e881878c:	98e2                	add	a7,a7,s8
    e881878e:	7c06b68b          	extu	a3,a3,31,0
    e8818792:	96be                	add	a3,a3,a5
        R1(C,D,A,B,X[ 7],14,0x676f02d9L);
    e8818794:	9846                	add	a6,a6,a7
    e8818796:	00d7c8b3          	xor	a7,a5,a3
    e881879a:	00e8f8b3          	and	a7,a7,a4
    e881879e:	00f8c8b3          	xor	a7,a7,a5
    e88187a2:	98c2                	add	a7,a7,a6
    e88187a4:	14e8988b          	srriw	a7,a7,14
    e88187a8:	46952db7          	lui	s11,0x46952
    e88187ac:	7c08b88b          	extu	a7,a7,31,0
    e88187b0:	645d8d93          	addi	s11,s11,1605 # 46952645 <memcmp-0xa1ead9bb>
    e88187b4:	98b6                	add	a7,a7,a3
        R1(B,C,D,A,X[12],20,0x8d2a4c8aL);
    e88187b6:	03bb9d8b          	addsl	s11,s7,s11,1
    e88187ba:	0116c833          	xor	a6,a3,a7
    e88187be:	976e                	add	a4,a4,s11
    e88187c0:	00f87db3          	and	s11,a6,a5
    e88187c4:	00ddcdb3          	xor	s11,s11,a3
    e88187c8:	976e                	add	a4,a4,s11
    e88187ca:	1547170b          	srriw	a4,a4,20
    e88187ce:	7c07370b          	extu	a4,a4,31,0
    e88187d2:	3ffe9db7          	lui	s11,0x3ffe9
    e88187d6:	9746                	add	a4,a4,a7
        R2(A,B,C,D,X[ 5], 4,0xfffa3942L);
    e88187d8:	05bf9d8b          	addsl	s11,t6,s11,2
    e88187dc:	00e84833          	xor	a6,a6,a4
    e88187e0:	942d8d93          	addi	s11,s11,-1726 # 3ffe8942 <memcmp-0xa88176be>
    e88187e4:	97ee                	add	a5,a5,s11
    e88187e6:	97c2                	add	a5,a5,a6
    e88187e8:	0008b817          	auipc	a6,0x8b
    e88187ec:	f0080813          	addi	a6,a6,-256 # e88a36e8 <end.8789+0x40>
    e88187f0:	00083803          	ld	a6,0(a6)
    e88187f4:	1447978b          	srriw	a5,a5,4
    e88187f8:	7c07b78b          	extu	a5,a5,31,0
    e88187fc:	9852                	add	a6,a6,s4
    e88187fe:	97ba                	add	a5,a5,a4
        R2(D,A,B,C,X[ 8],11,0x8771f681L);
    e8818800:	96c2                	add	a3,a3,a6
    e8818802:	00e8c833          	xor	a6,a7,a4
    e8818806:	00f84833          	xor	a6,a6,a5
    e881880a:	96c2                	add	a3,a3,a6
    e881880c:	6d9d6837          	lui	a6,0x6d9d6
    e8818810:	12280813          	addi	a6,a6,290 # 6d9d6122 <memcmp-0x7ae29ede>
    e8818814:	984a                	add	a6,a6,s2
    e8818816:	14b6968b          	srriw	a3,a3,11
    e881881a:	7c06b68b          	extu	a3,a3,31,0
    e881881e:	96be                	add	a3,a3,a5
        R2(C,D,A,B,X[11],16,0x6d9d6122L);
    e8818820:	98c2                	add	a7,a7,a6
    e8818822:	00f74833          	xor	a6,a4,a5
    e8818826:	00d84833          	xor	a6,a6,a3
    e881882a:	98c2                	add	a7,a7,a6
    e881882c:	3f795837          	lui	a6,0x3f795
    e8818830:	0502980b          	addsl	a6,t0,a6,2
    e8818834:	80c80813          	addi	a6,a6,-2036 # 3f79480c <memcmp-0xa906b7f4>
    e8818838:	1508988b          	srriw	a7,a7,16
    e881883c:	7c08b88b          	extu	a7,a7,31,0
    e8818840:	98b6                	add	a7,a7,a3
        R2(B,C,D,A,X[14],23,0xfde5380cL);
    e8818842:	9742                	add	a4,a4,a6
    e8818844:	00d7c833          	xor	a6,a5,a3
    e8818848:	01184833          	xor	a6,a6,a7
    e881884c:	9742                	add	a4,a4,a6
    e881884e:	292fc837          	lui	a6,0x292fc
    e8818852:	a9180813          	addi	a6,a6,-1391 # 292fba91 <memcmp-0xbf50456f>
    e8818856:	050f180b          	addsl	a6,t5,a6,2
    e881885a:	1577170b          	srriw	a4,a4,23
    e881885e:	7c07370b          	extu	a4,a4,31,0
    e8818862:	9746                	add	a4,a4,a7
        R2(A,B,C,D,X[ 1], 4,0xa4beea44L);
    e8818864:	97c2                	add	a5,a5,a6
    e8818866:	0116c833          	xor	a6,a3,a7
    e881886a:	00e84833          	xor	a6,a6,a4
    e881886e:	97c2                	add	a5,a5,a6
    e8818870:	4bded837          	lui	a6,0x4bded
    e8818874:	fa980813          	addi	a6,a6,-87 # 4bdecfa9 <memcmp-0x9ca13057>
    e8818878:	981a                	add	a6,a6,t1
    e881887a:	1447978b          	srriw	a5,a5,4
    e881887e:	7c07b78b          	extu	a5,a5,31,0
    e8818882:	97ba                	add	a5,a5,a4
        R2(D,A,B,C,X[ 4],11,0x4bdecfa9L);
    e8818884:	96c2                	add	a3,a3,a6
    e8818886:	00e8c833          	xor	a6,a7,a4
    e881888a:	00f84833          	xor	a6,a6,a5
    e881888e:	9836                	add	a6,a6,a3
    e8818890:	07b5e6b7          	lui	a3,0x7b5e
    e8818894:	a5b68693          	addi	a3,a3,-1445 # 7b5da5b <memcmp-0xe0ca25a5>
    e8818898:	0696                	slli	a3,a3,0x5
    e881889a:	96e2                	add	a3,a3,s8
    e881889c:	14b8180b          	srriw	a6,a6,11
    e88188a0:	7c08380b          	extu	a6,a6,31,0
    e88188a4:	983e                	add	a6,a6,a5
        R2(C,D,A,B,X[ 7],16,0xf6bb4b60L);
    e88188a6:	98b6                	add	a7,a7,a3
    e88188a8:	00f746b3          	xor	a3,a4,a5
    e88188ac:	0106c6b3          	xor	a3,a3,a6
    e88188b0:	96c6                	add	a3,a3,a7
    e88188b2:	2faff8b7          	lui	a7,0x2faff
    e88188b6:	051a988b          	addsl	a7,s5,a7,2
    e88188ba:	c7088893          	addi	a7,a7,-912 # 2fafec70 <memcmp-0xb8d01390>
    e88188be:	1506968b          	srriw	a3,a3,16
    e88188c2:	7c06b68b          	extu	a3,a3,31,0
    e88188c6:	96c2                	add	a3,a3,a6
        R2(B,C,D,A,X[10],23,0xbebfbc70L);
    e88188c8:	9746                	add	a4,a4,a7
    e88188ca:	0107c8b3          	xor	a7,a5,a6
    e88188ce:	00d8c8b3          	xor	a7,a7,a3
    e88188d2:	9746                	add	a4,a4,a7
    e88188d4:	289b88b7          	lui	a7,0x289b8
    e88188d8:	ec688893          	addi	a7,a7,-314 # 289b7ec6 <memcmp-0xbfe4813a>
    e88188dc:	98ce                	add	a7,a7,s3
    e88188de:	1577170b          	srriw	a4,a4,23
    e88188e2:	7c07370b          	extu	a4,a4,31,0
    e88188e6:	9736                	add	a4,a4,a3
        R2(A,B,C,D,X[13], 4,0x289b7ec6L);
    e88188e8:	97c6                	add	a5,a5,a7
    e88188ea:	00d848b3          	xor	a7,a6,a3
    e88188ee:	00e8c8b3          	xor	a7,a7,a4
    e88188f2:	98be                	add	a7,a7,a5
    e88188f4:	755097b7          	lui	a5,0x75509
    e88188f8:	02f3978b          	addsl	a5,t2,a5,1
    e88188fc:	7fa78793          	addi	a5,a5,2042 # 755097fa <memcmp-0x732f6806>
    e8818900:	1448988b          	srriw	a7,a7,4
    e8818904:	7c08b88b          	extu	a7,a7,31,0
    e8818908:	98ba                	add	a7,a7,a4
        R2(D,A,B,C,X[ 0],11,0xeaa127faL);
    e881890a:	983e                	add	a6,a6,a5
    e881890c:	00e6c7b3          	xor	a5,a3,a4
    e8818910:	0117c7b3          	xor	a5,a5,a7
    e8818914:	97c2                	add	a5,a5,a6
    e8818916:	0008b817          	auipc	a6,0x8b
    e881891a:	dda80813          	addi	a6,a6,-550 # e88a36f0 <end.8789+0x48>
    e881891e:	00083803          	ld	a6,0(a6)
    e8818922:	14b7978b          	srriw	a5,a5,11
    e8818926:	7c07b78b          	extu	a5,a5,31,0
    e881892a:	985a                	add	a6,a6,s6
    e881892c:	97c6                	add	a5,a5,a7
        R2(C,D,A,B,X[ 3],16,0xd4ef3085L);
    e881892e:	96c2                	add	a3,a3,a6
    e8818930:	01174833          	xor	a6,a4,a7
    e8818934:	00f84833          	xor	a6,a6,a5
    e8818938:	96c2                	add	a3,a3,a6
    e881893a:	04882837          	lui	a6,0x4882
    e881893e:	d0580813          	addi	a6,a6,-763 # 4881d05 <memcmp-0xe3f7e2fb>
    e8818942:	9872                	add	a6,a6,t3
    e8818944:	1506968b          	srriw	a3,a3,16
    e8818948:	7c06b68b          	extu	a3,a3,31,0
    e881894c:	96be                	add	a3,a3,a5
        R2(B,C,D,A,X[ 6],23,0x04881d05L);
    e881894e:	9742                	add	a4,a4,a6
    e8818950:	00f8c833          	xor	a6,a7,a5
    e8818954:	00d84833          	xor	a6,a6,a3
    e8818958:	983a                	add	a6,a6,a4
    e881895a:	0008b717          	auipc	a4,0x8b
    e881895e:	d9e70713          	addi	a4,a4,-610 # e88a36f8 <end.8789+0x50>
    e8818962:	6318                	ld	a4,0(a4)
    e8818964:	1578180b          	srriw	a6,a6,23
    e8818968:	7c08380b          	extu	a6,a6,31,0
    e881896c:	9722                	add	a4,a4,s0
    e881896e:	9836                	add	a6,a6,a3
        R2(A,B,C,D,X[ 9], 4,0xd9d4d039L);
    e8818970:	98ba                	add	a7,a7,a4
    e8818972:	00d7c733          	xor	a4,a5,a3
    e8818976:	01074733          	xor	a4,a4,a6
    e881897a:	9746                	add	a4,a4,a7
    e881897c:	736dd8b7          	lui	a7,0x736dd
    e8818980:	031b988b          	addsl	a7,s7,a7,1
    e8818984:	9e588893          	addi	a7,a7,-1563 # 736dc9e5 <memcmp-0x7512361b>
    e8818988:	1447170b          	srriw	a4,a4,4
    e881898c:	7c07370b          	extu	a4,a4,31,0
    e8818990:	9742                	add	a4,a4,a6
        R2(D,A,B,C,X[12],11,0xe6db99e5L);
    e8818992:	97c6                	add	a5,a5,a7
    e8818994:	0106c8b3          	xor	a7,a3,a6
    e8818998:	00e8c8b3          	xor	a7,a7,a4
    e881899c:	98be                	add	a7,a7,a5
    e881899e:	1fa287b7          	lui	a5,0x1fa28
    e88189a2:	cf878793          	addi	a5,a5,-776 # 1fa27cf8 <memcmp-0xc8dd8308>
    e88189a6:	97f6                	add	a5,a5,t4
    e88189a8:	14b8988b          	srriw	a7,a7,11
    e88189ac:	7c08b88b          	extu	a7,a7,31,0
    e88189b0:	98ba                	add	a7,a7,a4
        R2(C,D,A,B,X[15],16,0x1fa27cf8L);
    e88189b2:	96be                	add	a3,a3,a5
    e88189b4:	00e847b3          	xor	a5,a6,a4
    e88189b8:	0117c7b3          	xor	a5,a5,a7
    e88189bc:	96be                	add	a3,a3,a5
    e88189be:	0008b797          	auipc	a5,0x8b
    e88189c2:	d4278793          	addi	a5,a5,-702 # e88a3700 <end.8789+0x58>
    e88189c6:	639c                	ld	a5,0(a5)
    e88189c8:	1506968b          	srriw	a3,a3,16
    e88189cc:	7c06b68b          	extu	a3,a3,31,0
    e88189d0:	97a6                	add	a5,a5,s1
    e88189d2:	96c6                	add	a3,a3,a7
        R2(B,C,D,A,X[ 2],23,0xc4ac5665L);
    e88189d4:	983e                	add	a6,a6,a5
    e88189d6:	011747b3          	xor	a5,a4,a7
    e88189da:	8fb5                	xor	a5,a5,a3
    e88189dc:	97c2                	add	a5,a5,a6
    e88189de:	1577978b          	srriw	a5,a5,23
    e88189e2:	7a149837          	lui	a6,0x7a149
    e88189e6:	7c07b78b          	extu	a5,a5,31,0
    e88189ea:	97b6                	add	a5,a5,a3
        R3(A,B,C,D,X[ 0], 6,0xf4292244L);
    e88189ec:	0303938b          	addsl	t2,t2,a6,1
    e88189f0:	fff8cd93          	not	s11,a7
    e88189f4:	24438393          	addi	t2,t2,580
    e88189f8:	00fdedb3          	or	s11,s11,a5
    e88189fc:	971e                	add	a4,a4,t2
    e88189fe:	00ddcdb3          	xor	s11,s11,a3
    e8818a02:	976e                	add	a4,a4,s11
    e8818a04:	1467170b          	srriw	a4,a4,6
    e8818a08:	7c07370b          	extu	a4,a4,31,0
    e8818a0c:	432b0837          	lui	a6,0x432b0
    e8818a10:	973e                	add	a4,a4,a5
        R3(D,A,B,C,X[ 7],10,0x432aff97L);
    e8818a12:	f9780813          	addi	a6,a6,-105 # 432aff97 <memcmp-0xa5550069>
    e8818a16:	fff6c393          	not	t2,a3
    e8818a1a:	9c42                	add	s8,s8,a6
    e8818a1c:	00e3e3b3          	or	t2,t2,a4
    e8818a20:	00f3c3b3          	xor	t2,t2,a5
    e8818a24:	98e2                	add	a7,a7,s8
    e8818a26:	989e                	add	a7,a7,t2
    e8818a28:	14a8988b          	srriw	a7,a7,10
    e8818a2c:	55ca1837          	lui	a6,0x55ca1
    e8818a30:	7c08b88b          	extu	a7,a7,31,0
    e8818a34:	98ba                	add	a7,a7,a4
        R3(C,D,A,B,X[14],15,0xab9423a7L);
    e8818a36:	0302928b          	addsl	t0,t0,a6,1
    e8818a3a:	fff7c393          	not	t2,a5
    e8818a3e:	3a728293          	addi	t0,t0,935
    e8818a42:	0113e3b3          	or	t2,t2,a7
    e8818a46:	9696                	add	a3,a3,t0
    e8818a48:	00e3c3b3          	xor	t2,t2,a4
    e8818a4c:	969e                	add	a3,a3,t2
    e8818a4e:	14f6968b          	srriw	a3,a3,15
    e8818a52:	7e49d837          	lui	a6,0x7e49d
    e8818a56:	7c06b68b          	extu	a3,a3,31,0
    e8818a5a:	96c6                	add	a3,a3,a7
        R3(B,C,D,A,X[ 5],21,0xfc93a039L);
    e8818a5c:	030f9f8b          	addsl	t6,t6,a6,1
    e8818a60:	fff74293          	not	t0,a4
    e8818a64:	00d2e2b3          	or	t0,t0,a3
    e8818a68:	039f8f93          	addi	t6,t6,57
    e8818a6c:	0112c2b3          	xor	t0,t0,a7
    e8818a70:	97fe                	add	a5,a5,t6
    e8818a72:	9796                	add	a5,a5,t0
    e8818a74:	655b6837          	lui	a6,0x655b6
    e8818a78:	9c380813          	addi	a6,a6,-1597 # 655b59c3 <memcmp-0x8324a63d>
    e8818a7c:	1557978b          	srriw	a5,a5,21
    e8818a80:	9bc2                	add	s7,s7,a6
    e8818a82:	7c07b78b          	extu	a5,a5,31,0
    e8818a86:	97b6                	add	a5,a5,a3
        R3(A,B,C,D,X[12], 6,0x655b59c3L);
    e8818a88:	9bba                	add	s7,s7,a4
    e8818a8a:	fff8c713          	not	a4,a7
    e8818a8e:	8f5d                	or	a4,a4,a5
    e8818a90:	8f35                	xor	a4,a4,a3
    e8818a92:	975e                	add	a4,a4,s7
    e8818a94:	47866837          	lui	a6,0x47866
    e8818a98:	64980813          	addi	a6,a6,1609 # 47866649 <memcmp-0xa0f999b7>
    e8818a9c:	1467170b          	srriw	a4,a4,6
    e8818aa0:	030b1b0b          	addsl	s6,s6,a6,1
    e8818aa4:	7c07370b          	extu	a4,a4,31,0
    e8818aa8:	973e                	add	a4,a4,a5
        R3(D,A,B,C,X[ 3],10,0x8f0ccc92L);
    e8818aaa:	9b46                	add	s6,s6,a7
    e8818aac:	fff6c893          	not	a7,a3
    e8818ab0:	00e8e8b3          	or	a7,a7,a4
    e8818ab4:	0008b817          	auipc	a6,0x8b
    e8818ab8:	c5480813          	addi	a6,a6,-940 # e88a3708 <end.8789+0x60>
    e8818abc:	00f8c8b3          	xor	a7,a7,a5
    e8818ac0:	00083803          	ld	a6,0(a6)
    e8818ac4:	98da                	add	a7,a7,s6
    e8818ac6:	14a8988b          	srriw	a7,a7,10
    e8818aca:	9ac2                	add	s5,s5,a6
    e8818acc:	7c08b88b          	extu	a7,a7,31,0
    e8818ad0:	98ba                	add	a7,a7,a4
        R3(C,D,A,B,X[10],15,0xffeff47dL);
    e8818ad2:	9ab6                	add	s5,s5,a3
    e8818ad4:	fff7c693          	not	a3,a5
    e8818ad8:	0116e6b3          	or	a3,a3,a7
    e8818adc:	8eb9                	xor	a3,a3,a4
    e8818ade:	42c23837          	lui	a6,0x42c23
    e8818ae2:	96d6                	add	a3,a3,s5
    e8818ae4:	030f1f0b          	addsl	t5,t5,a6,1
    e8818ae8:	14f6968b          	srriw	a3,a3,15
    e8818aec:	7c06b68b          	extu	a3,a3,31,0
    e8818af0:	dd1f0f13          	addi	t5,t5,-559
    e8818af4:	96c6                	add	a3,a3,a7
        R3(B,C,D,A,X[ 1],21,0x85845dd1L);
    e8818af6:	9f3e                	add	t5,t5,a5
    e8818af8:	fff74793          	not	a5,a4
    e8818afc:	8fd5                	or	a5,a5,a3
    e8818afe:	0117c7b3          	xor	a5,a5,a7
    e8818b02:	97fa                	add	a5,a5,t5
    e8818b04:	6fa88f37          	lui	t5,0x6fa88
    e8818b08:	e4ff0f13          	addi	t5,t5,-433 # 6fa87e4f <memcmp-0x78d781b1>
    e8818b0c:	9f52                	add	t5,t5,s4
    e8818b0e:	1557978b          	srriw	a5,a5,21
    e8818b12:	7c07b78b          	extu	a5,a5,31,0
    e8818b16:	97b6                	add	a5,a5,a3
        R3(A,B,C,D,X[ 8], 6,0x6fa87e4fL);
    e8818b18:	977a                	add	a4,a4,t5
    e8818b1a:	fff8cf13          	not	t5,a7
    e8818b1e:	00ff6f33          	or	t5,t5,a5
    e8818b22:	00df4f33          	xor	t5,t5,a3
    e8818b26:	7f167837          	lui	a6,0x7f167
    e8818b2a:	9f3a                	add	t5,t5,a4
    e8818b2c:	030e980b          	addsl	a6,t4,a6,1
    e8818b30:	6e080813          	addi	a6,a6,1760 # 7f1676e0 <memcmp-0x69698920>
    e8818b34:	146f1f0b          	srriw	t5,t5,6
    e8818b38:	7c0f3f0b          	extu	t5,t5,31,0
    e8818b3c:	9f3e                	add	t5,t5,a5
        R3(D,A,B,C,X[15],10,0xfe2ce6e0L);
    e8818b3e:	98c2                	add	a7,a7,a6
    e8818b40:	fff6c813          	not	a6,a3
    e8818b44:	01e86833          	or	a6,a6,t5
    e8818b48:	00f84833          	xor	a6,a6,a5
    e8818b4c:	28c05737          	lui	a4,0x28c05
    e8818b50:	9846                	add	a6,a6,a7
    e8818b52:	04ee170b          	addsl	a4,t3,a4,2
    e8818b56:	31470713          	addi	a4,a4,788 # 28c05314 <memcmp-0xbfbfacec>
    e8818b5a:	14a8180b          	srriw	a6,a6,10
    e8818b5e:	7c08380b          	extu	a6,a6,31,0
    e8818b62:	987a                	add	a6,a6,t5
        R3(C,D,A,B,X[ 6],15,0xa3014314L);
    e8818b64:	96ba                	add	a3,a3,a4
    e8818b66:	fff7c713          	not	a4,a5
    e8818b6a:	01076733          	or	a4,a4,a6
    e8818b6e:	01e74733          	xor	a4,a4,t5
    e8818b72:	9736                	add	a4,a4,a3
    e8818b74:	4e0816b7          	lui	a3,0x4e081
    e8818b78:	1a168693          	addi	a3,a3,417 # 4e0811a1 <memcmp-0x9a77ee5f>
    e8818b7c:	96ce                	add	a3,a3,s3
    e8818b7e:	14f7170b          	srriw	a4,a4,15
    e8818b82:	7c07370b          	extu	a4,a4,31,0
    e8818b86:	9742                	add	a4,a4,a6
        R3(B,C,D,A,X[13],21,0x4e0811a1L);
    e8818b88:	97b6                	add	a5,a5,a3
    e8818b8a:	ffff4693          	not	a3,t5
    e8818b8e:	8ed9                	or	a3,a3,a4
    e8818b90:	0106c6b3          	xor	a3,a3,a6
    e8818b94:	96be                	add	a3,a3,a5
    e8818b96:	1eea77b7          	lui	a5,0x1eea7
    e8818b9a:	06f3178b          	addsl	a5,t1,a5,3
    e8818b9e:	e8278793          	addi	a5,a5,-382 # 1eea6e82 <memcmp-0xc995917e>
    e8818ba2:	1556968b          	srriw	a3,a3,21
    e8818ba6:	7c06b68b          	extu	a3,a3,31,0
    e8818baa:	96ba                	add	a3,a3,a4
        R3(A,B,C,D,X[ 4], 6,0xf7537e82L);
    e8818bac:	9f3e                	add	t5,t5,a5
    e8818bae:	fff84793          	not	a5,a6
    e8818bb2:	8fd5                	or	a5,a5,a3
    e8818bb4:	0008b897          	auipc	a7,0x8b
    e8818bb8:	b5c88893          	addi	a7,a7,-1188 # e88a3710 <end.8789+0x68>
    e8818bbc:	8fb9                	xor	a5,a5,a4
    e8818bbe:	0008b883          	ld	a7,0(a7)
    e8818bc2:	97fa                	add	a5,a5,t5
    e8818bc4:	1467978b          	srriw	a5,a5,6
    e8818bc8:	9946                	add	s2,s2,a7
    e8818bca:	7c07b78b          	extu	a5,a5,31,0
    e8818bce:	97b6                	add	a5,a5,a3
        R3(D,A,B,C,X[11],10,0xbd3af235L);
    e8818bd0:	9942                	add	s2,s2,a6
    e8818bd2:	fff74813          	not	a6,a4
    e8818bd6:	00f86833          	or	a6,a6,a5
    e8818bda:	00d84833          	xor	a6,a6,a3
    e8818bde:	984a                	add	a6,a6,s2
    e8818be0:	2ad7d8b7          	lui	a7,0x2ad7d
    e8818be4:	2bb88893          	addi	a7,a7,699 # 2ad7d2bb <memcmp-0xbda82d45>
    e8818be8:	14a8180b          	srriw	a6,a6,10
    e8818bec:	94c6                	add	s1,s1,a7
    e8818bee:	7c08380b          	extu	a6,a6,31,0
    e8818bf2:	983e                	add	a6,a6,a5
        R3(C,D,A,B,X[ 2],15,0x2ad7d2bbL);
    e8818bf4:	94ba                	add	s1,s1,a4
    e8818bf6:	0008b897          	auipc	a7,0x8b
    e8818bfa:	b2288893          	addi	a7,a7,-1246 # e88a3718 <end.8789+0x70>
    e8818bfe:	fff6c713          	not	a4,a3
    e8818c02:	01076733          	or	a4,a4,a6
    e8818c06:	0008b883          	ld	a7,0(a7)
    e8818c0a:	8f3d                	xor	a4,a4,a5
    e8818c0c:	9726                	add	a4,a4,s1
    e8818c0e:	9446                	add	s0,s0,a7
    e8818c10:	14f7170b          	srriw	a4,a4,15
        A = c->A += A;
    e8818c14:	00052883          	lw	a7,0(a0)
        R3(C,D,A,B,X[ 2],15,0x2ad7d2bbL);
    e8818c18:	7c07370b          	extu	a4,a4,31,0
    e8818c1c:	9742                	add	a4,a4,a6
        R3(B,C,D,A,X[ 9],21,0xeb86d391L);
    e8818c1e:	96a2                	add	a3,a3,s0
    e8818c20:	fff7c413          	not	s0,a5
    e8818c24:	8c59                	or	s0,s0,a4
        A = c->A += A;
    e8818c26:	00f887bb          	addw	a5,a7,a5
        R3(B,C,D,A,X[ 9],21,0xeb86d391L);
    e8818c2a:	01044433          	xor	s0,s0,a6
    e8818c2e:	9436                	add	s0,s0,a3
    e8818c30:	1554140b          	srriw	s0,s0,21
        A = c->A += A;
    e8818c34:	c11c                	sw	a5,0(a0)
    e8818c36:	7c07b88b          	extu	a7,a5,31,0
        B = c->B += B;
    e8818c3a:	415c                	lw	a5,4(a0)
        R3(B,C,D,A,X[ 9],21,0xeb86d391L);
    e8818c3c:	7c04340b          	extu	s0,s0,31,0
    e8818c40:	943a                	add	s0,s0,a4
        B = c->B += B;
    e8818c42:	9c3d                	addw	s0,s0,a5
        D = c->D += D;
    e8818c44:	4554                	lw	a3,12(a0)
        C = c->C += C;
    e8818c46:	451c                	lw	a5,8(a0)
        B = c->B += B;
    e8818c48:	c140                	sw	s0,4(a0)
        D = c->D += D;
    e8818c4a:	0106883b          	addw	a6,a3,a6
        C = c->C += C;
    e8818c4e:	9f3d                	addw	a4,a4,a5
    e8818c50:	c518                	sw	a4,8(a0)
        D = c->D += D;
    e8818c52:	01052623          	sw	a6,12(a0)
        B = c->B += B;
    e8818c56:	7c04340b          	extu	s0,s0,31,0
        C = c->C += C;
    e8818c5a:	7c07370b          	extu	a4,a4,31,0
        D = c->D += D;
    e8818c5e:	7c08380b          	extu	a6,a6,31,0
    for (; num--; X+=HASH_LBLOCK)
    e8818c62:	04058593          	addi	a1,a1,64
    e8818c66:	ea2ff06f          	j	e8818308 <md5_block_host_order+0x7c>

00000000e8818c6a <MD5_Final>:
{
    e8818c6a:	1101                	addi	sp,sp,-32
    e8818c6c:	f891540b          	sdd	s0,s1,(sp),0,4
    e8818c70:	e84a                	sd	s2,16(sp)
    e8818c72:	ec06                	sd	ra,24(sp)
    i=c->num>>2;
    e8818c74:	4db0                	lw	a2,88(a1)
{
    e8818c76:	842e                	mv	s0,a1
    p=c->data;
    e8818c78:	01858493          	addi	s1,a1,24
    i=c->num>>2;
    e8818c7c:	4026559b          	sraiw	a1,a2,0x2
    j=c->num&0x03;
    e8818c80:	8a0d                	andi	a2,a2,3
{
    e8818c82:	892a                	mv	s2,a0
    i=c->num>>2;
    e8818c84:	87ae                	mv	a5,a1
    l = (j==0) ? 0 : p[i];
    e8818c86:	ce41                	beqz	a2,e8818d1e <MD5_Final+0xb4>
    HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */
    e8818c88:	4709                	li	a4,2
    l = (j==0) ? 0 : p[i];
    e8818c8a:	c4b4c68b          	lrwu	a3,s1,a1,2
    HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */
    e8818c8e:	0ae60063          	beq	a2,a4,e8818d2e <MD5_Final+0xc4>
    e8818c92:	450d                	li	a0,3
    const unsigned char *cp=end;
    e8818c94:	0008b717          	auipc	a4,0x8b
    e8818c98:	a1470713          	addi	a4,a4,-1516 # e88a36a8 <end.8789>
    HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */
    e8818c9c:	00a60b63          	beq	a2,a0,e8818cb2 <MD5_Final+0x48>
    const unsigned char *cp=end;
    e8818ca0:	08000613          	li	a2,128
    HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */
    e8818ca4:	0622                	slli	a2,a2,0x8
    e8818ca6:	0705                	addi	a4,a4,1
    e8818ca8:	8ed1                	or	a3,a3,a2
    e8818caa:	9817460b          	lbuia	a2,(a4),1,0
    e8818cae:	0642                	slli	a2,a2,0x10
    e8818cb0:	8ed1                	or	a3,a3,a2
    e8818cb2:	00074703          	lbu	a4,0(a4)
    e8818cb6:	2785                	addiw	a5,a5,1
    e8818cb8:	0762                	slli	a4,a4,0x18
    e8818cba:	8ed9                	or	a3,a3,a4
    e8818cbc:	44b4d68b          	srw	a3,s1,a1,2
    if (i>(HASH_LBLOCK-2)) /* save room for Nl and Nh */
    e8818cc0:	4739                	li	a4,14
    e8818cc2:	00f75d63          	bge	a4,a5,e8818cdc <MD5_Final+0x72>
        if (i<HASH_LBLOCK) p[i]=0;
    e8818cc6:	473d                	li	a4,15
    e8818cc8:	00e79463          	bne	a5,a4,e8818cd0 <MD5_Final+0x66>
    e8818ccc:	04042a23          	sw	zero,84(s0)
        HASH_BLOCK_HOST_ORDER (c,p,1);
    e8818cd0:	4605                	li	a2,1
    e8818cd2:	85a6                	mv	a1,s1
    e8818cd4:	8522                	mv	a0,s0
    e8818cd6:	db6ff0ef          	jal	ra,e881828c <md5_block_host_order>
        i=0;
    e8818cda:	4781                	li	a5,0
    for (; i<(HASH_LBLOCK-2); i++)
    e8818cdc:	4739                	li	a4,14
    e8818cde:	0007869b          	sext.w	a3,a5
    e8818ce2:	04e69b63          	bne	a3,a4,e8818d38 <MD5_Final+0xce>
    p[HASH_LBLOCK-2]=c->Nl;
    e8818ce6:	681c                	ld	a5,16(s0)
    HASH_BLOCK_HOST_ORDER (c,p,1);
    e8818ce8:	8522                	mv	a0,s0
    e8818cea:	85a6                	mv	a1,s1
    p[HASH_LBLOCK-2]=c->Nl;
    e8818cec:	e83c                	sd	a5,80(s0)
    HASH_BLOCK_HOST_ORDER (c,p,1);
    e8818cee:	4605                	li	a2,1
    e8818cf0:	d9cff0ef          	jal	ra,e881828c <md5_block_host_order>
    HASH_MAKE_STRING(c,md);
    e8818cf4:	401c                	lw	a5,0(s0)
}
    e8818cf6:	60e2                	ld	ra,24(sp)
    e8818cf8:	4505                	li	a0,1
    HASH_MAKE_STRING(c,md);
    e8818cfa:	00f92023          	sw	a5,0(s2)
    e8818cfe:	405c                	lw	a5,4(s0)
    e8818d00:	00f92223          	sw	a5,4(s2)
    e8818d04:	441c                	lw	a5,8(s0)
    e8818d06:	00f92423          	sw	a5,8(s2)
    e8818d0a:	445c                	lw	a5,12(s0)
    e8818d0c:	00f92623          	sw	a5,12(s2)
}
    e8818d10:	6942                	ld	s2,16(sp)
    c->num=0;
    e8818d12:	04042c23          	sw	zero,88(s0)
}
    e8818d16:	f891440b          	ldd	s0,s1,(sp),0,4
    e8818d1a:	6105                	addi	sp,sp,32
    e8818d1c:	8082                	ret
    HOST_p_c2l(cp,l,j); p[i++]=l; /* i is the next 'undefined word' */
    e8818d1e:	4601                	li	a2,0
    e8818d20:	0008b717          	auipc	a4,0x8b
    e8818d24:	98970713          	addi	a4,a4,-1655 # e88a36a9 <end.8789+0x1>
    e8818d28:	08000693          	li	a3,128
    e8818d2c:	bfa5                	j	e8818ca4 <MD5_Final+0x3a>
    const unsigned char *cp=end;
    e8818d2e:	0008b717          	auipc	a4,0x8b
    e8818d32:	97a70713          	addi	a4,a4,-1670 # e88a36a8 <end.8789>
    e8818d36:	bf95                	j	e8818caa <MD5_Final+0x40>
        p[i]=0;
    e8818d38:	44f4d00b          	srw	zero,s1,a5,2
    for (; i<(HASH_LBLOCK-2); i++)
    e8818d3c:	0785                	addi	a5,a5,1
    e8818d3e:	b745                	j	e8818cde <MD5_Final+0x74>

00000000e8818d40 <md5_block_data_order>:

    for (; num--;)
    {
        HOST_c2l(data,l); X( 0)=l;      HOST_c2l(data,l); X( 1)=l;
        /* Round 0 */
        R0(A,B,C,D,X( 0), 7,0xd76aa478L);   HOST_c2l(data,l); X( 2)=l;
    e8818d40:	6bb557b7          	lui	a5,0x6bb55
    e8818d44:	0786                	slli	a5,a5,0x1
    e8818d46:	47878793          	addi	a5,a5,1144 # 6bb55478 <memcmp-0x7ccaab88>
{
    e8818d4a:	7175                	addi	sp,sp,-144
        R0(A,B,C,D,X( 0), 7,0xd76aa478L);   HOST_c2l(data,l); X( 2)=l;
    e8818d4c:	e03e                	sd	a5,0(sp)
    e8818d4e:	7463e7b7          	lui	a5,0x7463e
    e8818d52:	bab78793          	addi	a5,a5,-1109 # 7463dbab <memcmp-0x741c2455>
    e8818d56:	0786                	slli	a5,a5,0x1
    e8818d58:	e43e                	sd	a5,8(sp)
    e8818d5a:	242077b7          	lui	a5,0x24207
    e8818d5e:	0db78793          	addi	a5,a5,219 # 242070db <memcmp-0xc45f8f25>
    e8818d62:	e83e                	sd	a5,16(sp)
    e8818d64:	60dee7b7          	lui	a5,0x60dee
    e8818d68:	77778793          	addi	a5,a5,1911 # 60dee777 <memcmp-0x87a11889>
    e8818d6c:	0786                	slli	a5,a5,0x1
    e8818d6e:	ec3e                	sd	a5,24(sp)
    e8818d70:	2a0c17b7          	lui	a5,0x2a0c1
    e8818d74:	078a                	slli	a5,a5,0x2
    e8818d76:	61378793          	addi	a5,a5,1555 # 2a0c1613 <memcmp-0xbe73e9ed>
    e8818d7a:	f03e                	sd	a5,32(sp)
    e8818d7c:	7fffb7b7          	lui	a5,0x7fffb
{
    e8818d80:	e522                	sd	s0,136(sp)
    e8818d82:	e0e6                	sd	s9,64(sp)
    e8818d84:	fc6a                	sd	s10,56(sp)
    e8818d86:	0786                	slli	a5,a5,0x1
    e8818d88:	44ae7cb7          	lui	s9,0x44ae7
    e8818d8c:	299e5d37          	lui	s10,0x299e5
    B=c->B;
    e8818d90:	f085488b          	lwud	a7,s0,(a0),0,3
    D=c->D;
    e8818d94:	f305470b          	lwud	a4,a6,(a0),1,3
    for (; num--;)
    e8818d98:	bb178793          	addi	a5,a5,-1103 # 7fffabb1 <memcmp-0x6880544f>
    e8818d9c:	bdfc8c93          	addi	s9,s9,-1057 # 44ae6bdf <memcmp-0xa3d19421>
    e8818da0:	0d0a                	slli	s10,s10,0x2
{
    e8818da2:	e126                	sd	s1,128(sp)
    e8818da4:	fcca                	sd	s2,120(sp)
    e8818da6:	f8ce                	sd	s3,112(sp)
    e8818da8:	f4d2                	sd	s4,104(sp)
    e8818daa:	f0d6                	sd	s5,96(sp)
    e8818dac:	ecda                	sd	s6,88(sp)
    e8818dae:	e8de                	sd	s7,80(sp)
    e8818db0:	e4e2                	sd	s8,72(sp)
    e8818db2:	f86e                	sd	s11,48(sp)
    e8818db4:	f43e                	sd	a5,40(sp)
    e8818db6:	0c86                	slli	s9,s9,0x1
    e8818db8:	38ed0d13          	addi	s10,s10,910 # 299e538e <memcmp-0xbee1ac72>
    for (; num--;)
    e8818dbc:	367d                	addiw	a2,a2,-1
    e8818dbe:	57fd                	li	a5,-1
    e8818dc0:	02f61063          	bne	a2,a5,e8818de0 <md5_block_data_order+0xa0>
        A = c->A += A;
        B = c->B += B;
        C = c->C += C;
        D = c->D += D;
    }
}
    e8818dc4:	642a                	ld	s0,136(sp)
    e8818dc6:	648a                	ld	s1,128(sp)
    e8818dc8:	7966                	ld	s2,120(sp)
    e8818dca:	79c6                	ld	s3,112(sp)
    e8818dcc:	7a26                	ld	s4,104(sp)
    e8818dce:	7a86                	ld	s5,96(sp)
    e8818dd0:	6b66                	ld	s6,88(sp)
    e8818dd2:	6bc6                	ld	s7,80(sp)
    e8818dd4:	6c26                	ld	s8,72(sp)
    e8818dd6:	6c86                	ld	s9,64(sp)
    e8818dd8:	7d62                	ld	s10,56(sp)
    e8818dda:	7dc2                	ld	s11,48(sp)
    e8818ddc:	6149                	addi	sp,sp,144
    e8818dde:	8082                	ret
        HOST_c2l(data,l); X( 0)=l;      HOST_c2l(data,l); X( 1)=l;
    e8818de0:	f1e5c38b          	lwud	t2,t5,(a1),0,3
        R0(A,B,C,D,X( 0), 7,0xd76aa478L);   HOST_c2l(data,l); X( 2)=l;
    e8818de4:	6682                	ld	a3,0(sp)
    e8818de6:	010747b3          	xor	a5,a4,a6
    e8818dea:	8fe1                	and	a5,a5,s0
    e8818dec:	969e                	add	a3,a3,t2
    e8818dee:	0107c7b3          	xor	a5,a5,a6
    e8818df2:	97b6                	add	a5,a5,a3
    e8818df4:	97c6                	add	a5,a5,a7
    e8818df6:	66a2                	ld	a3,8(sp)
    e8818df8:	1477978b          	srriw	a5,a5,7
    e8818dfc:	7c07b78b          	extu	a5,a5,31,0
    e8818e00:	97a2                	add	a5,a5,s0
    e8818e02:	9836                	add	a6,a6,a3
        R0(D,A,B,C,X( 1),12,0xe8c7b756L);   HOST_c2l(data,l); X( 3)=l;
    e8818e04:	00e446b3          	xor	a3,s0,a4
    e8818e08:	987a                	add	a6,a6,t5
    e8818e0a:	8efd                	and	a3,a3,a5
    e8818e0c:	8eb9                	xor	a3,a3,a4
    e8818e0e:	96c2                	add	a3,a3,a6
    e8818e10:	6842                	ld	a6,16(sp)
        R0(A,B,C,D,X( 0), 7,0xd76aa478L);   HOST_c2l(data,l); X( 2)=l;
    e8818e12:	0085e483          	lwu	s1,8(a1)
        R0(D,A,B,C,X( 1),12,0xe8c7b756L);   HOST_c2l(data,l); X( 3)=l;
    e8818e16:	14c6968b          	srriw	a3,a3,12
    e8818e1a:	7c06b68b          	extu	a3,a3,31,0
    e8818e1e:	96be                	add	a3,a3,a5
    e8818e20:	9742                	add	a4,a4,a6
        R0(C,D,A,B,X( 2),17,0x242070dbL);   HOST_c2l(data,l); X( 4)=l;
    e8818e22:	00f44833          	xor	a6,s0,a5
    e8818e26:	9726                	add	a4,a4,s1
    e8818e28:	00d87833          	and	a6,a6,a3
    e8818e2c:	00884833          	xor	a6,a6,s0
    e8818e30:	983a                	add	a6,a6,a4
    e8818e32:	6762                	ld	a4,24(sp)
    e8818e34:	1518180b          	srriw	a6,a6,17
        R0(D,A,B,C,X( 1),12,0xe8c7b756L);   HOST_c2l(data,l); X( 3)=l;
    e8818e38:	00c5eb03          	lwu	s6,12(a1)
        R0(C,D,A,B,X( 2),17,0x242070dbL);   HOST_c2l(data,l); X( 4)=l;
    e8818e3c:	7c08380b          	extu	a6,a6,31,0
    e8818e40:	9836                	add	a6,a6,a3
    e8818e42:	943a                	add	s0,s0,a4
        R0(B,C,D,A,X( 3),22,0xc1bdceeeL);   HOST_c2l(data,l); X( 5)=l;
    e8818e44:	00d7c733          	xor	a4,a5,a3
    e8818e48:	01077733          	and	a4,a4,a6
    e8818e4c:	0008b897          	auipc	a7,0x8b
    e8818e50:	86488893          	addi	a7,a7,-1948 # e88a36b0 <end.8789+0x8>
        R0(C,D,A,B,X( 2),17,0x242070dbL);   HOST_c2l(data,l); X( 4)=l;
    e8818e54:	0105e303          	lwu	t1,16(a1)
        R0(B,C,D,A,X( 3),22,0xc1bdceeeL);   HOST_c2l(data,l); X( 5)=l;
    e8818e58:	945a                	add	s0,s0,s6
    e8818e5a:	8f3d                	xor	a4,a4,a5
    e8818e5c:	0008b883          	ld	a7,0(a7)
    e8818e60:	9722                	add	a4,a4,s0
    e8818e62:	1567170b          	srriw	a4,a4,22
    e8818e66:	7c07370b          	extu	a4,a4,31,0
    e8818e6a:	989a                	add	a7,a7,t1
    e8818e6c:	9742                	add	a4,a4,a6
    e8818e6e:	98be                	add	a7,a7,a5
        R0(A,B,C,D,X( 4), 7,0xf57c0fafL);   HOST_c2l(data,l); X( 6)=l;
    e8818e70:	0106c7b3          	xor	a5,a3,a6
    e8818e74:	8ff9                	and	a5,a5,a4
        R0(B,C,D,A,X( 3),22,0xc1bdceeeL);   HOST_c2l(data,l); X( 5)=l;
    e8818e76:	0145ef83          	lwu	t6,20(a1)
        R0(A,B,C,D,X( 4), 7,0xf57c0fafL);   HOST_c2l(data,l); X( 6)=l;
    e8818e7a:	8fb5                	xor	a5,a5,a3
    e8818e7c:	97c6                	add	a5,a5,a7
    e8818e7e:	4787c8b7          	lui	a7,0x4787c
    e8818e82:	1477978b          	srriw	a5,a5,7
    e8818e86:	62a88893          	addi	a7,a7,1578 # 4787c62a <memcmp-0xa0f839d6>
    e8818e8a:	98fe                	add	a7,a7,t6
    e8818e8c:	7c07b78b          	extu	a5,a5,31,0
    e8818e90:	97ba                	add	a5,a5,a4
    e8818e92:	98b6                	add	a7,a7,a3
        R0(D,A,B,C,X( 5),12,0x4787c62aL);   HOST_c2l(data,l); X( 7)=l;
    e8818e94:	00e846b3          	xor	a3,a6,a4
    e8818e98:	8efd                	and	a3,a3,a5
        R0(A,B,C,D,X( 4), 7,0xf57c0fafL);   HOST_c2l(data,l); X( 6)=l;
    e8818e9a:	0185ee03          	lwu	t3,24(a1)
        R0(D,A,B,C,X( 5),12,0x4787c62aL);   HOST_c2l(data,l); X( 7)=l;
    e8818e9e:	7402                	ld	s0,32(sp)
    e8818ea0:	0106c6b3          	xor	a3,a3,a6
    e8818ea4:	96c6                	add	a3,a3,a7
    e8818ea6:	14c6968b          	srriw	a3,a3,12
    e8818eaa:	008e08b3          	add	a7,t3,s0
    e8818eae:	7c06b68b          	extu	a3,a3,31,0
    e8818eb2:	96be                	add	a3,a3,a5
    e8818eb4:	98c2                	add	a7,a7,a6
        R0(C,D,A,B,X( 6),17,0xa8304613L);   HOST_c2l(data,l); X( 8)=l;
    e8818eb6:	00f74833          	xor	a6,a4,a5
    e8818eba:	00d87833          	and	a6,a6,a3
    e8818ebe:	00e84833          	xor	a6,a6,a4
    e8818ec2:	9846                	add	a6,a6,a7
    e8818ec4:	0008a897          	auipc	a7,0x8a
    e8818ec8:	7f488893          	addi	a7,a7,2036 # e88a36b8 <end.8789+0x10>
        R0(D,A,B,C,X( 5),12,0x4787c62aL);   HOST_c2l(data,l); X( 7)=l;
    e8818ecc:	01c5ec03          	lwu	s8,28(a1)
        R0(C,D,A,B,X( 6),17,0xa8304613L);   HOST_c2l(data,l); X( 8)=l;
    e8818ed0:	0008b883          	ld	a7,0(a7)
    e8818ed4:	1518180b          	srriw	a6,a6,17
    e8818ed8:	7c08380b          	extu	a6,a6,31,0
    e8818edc:	98e2                	add	a7,a7,s8
    e8818ede:	9836                	add	a6,a6,a3
    e8818ee0:	98ba                	add	a7,a7,a4
        R0(B,C,D,A,X( 7),22,0xfd469501L);   HOST_c2l(data,l); X( 9)=l;
    e8818ee2:	00d7c733          	xor	a4,a5,a3
    e8818ee6:	01077733          	and	a4,a4,a6
        R0(C,D,A,B,X( 6),17,0xa8304613L);   HOST_c2l(data,l); X( 8)=l;
    e8818eea:	0205ea03          	lwu	s4,32(a1)
        R0(B,C,D,A,X( 7),22,0xfd469501L);   HOST_c2l(data,l); X( 9)=l;
    e8818eee:	8f3d                	xor	a4,a4,a5
    e8818ef0:	9746                	add	a4,a4,a7
    e8818ef2:	6980a8b7          	lui	a7,0x6980a
    e8818ef6:	1567170b          	srriw	a4,a4,22
    e8818efa:	8d888893          	addi	a7,a7,-1832 # 698098d8 <memcmp-0x7eff6728>
    e8818efe:	7c07370b          	extu	a4,a4,31,0
    e8818f02:	98d2                	add	a7,a7,s4
    e8818f04:	9742                	add	a4,a4,a6
    e8818f06:	98be                	add	a7,a7,a5
        R0(A,B,C,D,X( 8), 7,0x698098d8L);   HOST_c2l(data,l); X(10)=l;
    e8818f08:	0106c7b3          	xor	a5,a3,a6
    e8818f0c:	8ff9                	and	a5,a5,a4
    e8818f0e:	8fb5                	xor	a5,a5,a3
    e8818f10:	97c6                	add	a5,a5,a7
    e8818f12:	0008a897          	auipc	a7,0x8a
    e8818f16:	7ae88893          	addi	a7,a7,1966 # e88a36c0 <end.8789+0x18>
        R0(B,C,D,A,X( 7),22,0xfd469501L);   HOST_c2l(data,l); X( 9)=l;
    e8818f1a:	0245e403          	lwu	s0,36(a1)
        R0(A,B,C,D,X( 8), 7,0x698098d8L);   HOST_c2l(data,l); X(10)=l;
    e8818f1e:	0008b883          	ld	a7,0(a7)
    e8818f22:	1477978b          	srriw	a5,a5,7
    e8818f26:	7c07b78b          	extu	a5,a5,31,0
    e8818f2a:	98a2                	add	a7,a7,s0
    e8818f2c:	97ba                	add	a5,a5,a4
    e8818f2e:	98b6                	add	a7,a7,a3
        R0(D,A,B,C,X( 9),12,0x8b44f7afL);   HOST_c2l(data,l); X(11)=l;
    e8818f30:	00e846b3          	xor	a3,a6,a4
    e8818f34:	8efd                	and	a3,a3,a5
    e8818f36:	0106c6b3          	xor	a3,a3,a6
        R0(A,B,C,D,X( 8), 7,0x698098d8L);   HOST_c2l(data,l); X(10)=l;
    e8818f3a:	0285ea83          	lwu	s5,40(a1)
        R0(D,A,B,C,X( 9),12,0x8b44f7afL);   HOST_c2l(data,l); X(11)=l;
    e8818f3e:	96c6                	add	a3,a3,a7
    e8818f40:	78a2                	ld	a7,40(sp)
    e8818f42:	14c6968b          	srriw	a3,a3,12
    e8818f46:	7c06b68b          	extu	a3,a3,31,0
    e8818f4a:	98d6                	add	a7,a7,s5
    e8818f4c:	96be                	add	a3,a3,a5
    e8818f4e:	9846                	add	a6,a6,a7
        R0(C,D,A,B,X(10),17,0xffff5bb1L);   HOST_c2l(data,l); X(12)=l;
    e8818f50:	00f748b3          	xor	a7,a4,a5
        R0(D,A,B,C,X( 9),12,0x8b44f7afL);   HOST_c2l(data,l); X(11)=l;
    e8818f54:	02c5e903          	lwu	s2,44(a1)
        R0(C,D,A,B,X(10),17,0xffff5bb1L);   HOST_c2l(data,l); X(12)=l;
    e8818f58:	00d8f8b3          	and	a7,a7,a3
    e8818f5c:	00e8c8b3          	xor	a7,a7,a4
    e8818f60:	9846                	add	a6,a6,a7
    e8818f62:	1518180b          	srriw	a6,a6,17
    e8818f66:	019908b3          	add	a7,s2,s9
    e8818f6a:	7c08380b          	extu	a6,a6,31,0
    e8818f6e:	9836                	add	a6,a6,a3
    e8818f70:	9746                	add	a4,a4,a7
        R0(B,C,D,A,X(11),22,0x895cd7beL);   HOST_c2l(data,l); X(13)=l;
    e8818f72:	00d7c8b3          	xor	a7,a5,a3
    e8818f76:	0108f8b3          	and	a7,a7,a6
    e8818f7a:	00f8c8b3          	xor	a7,a7,a5
        R0(C,D,A,B,X(10),17,0xffff5bb1L);   HOST_c2l(data,l); X(12)=l;
    e8818f7e:	0305eb83          	lwu	s7,48(a1)
        R0(B,C,D,A,X(11),22,0x895cd7beL);   HOST_c2l(data,l); X(13)=l;
    e8818f82:	9746                	add	a4,a4,a7
    e8818f84:	6b9018b7          	lui	a7,0x6b901
    e8818f88:	12288893          	addi	a7,a7,290 # 6b901122 <memcmp-0x7cefeede>
    e8818f8c:	98de                	add	a7,a7,s7
    e8818f8e:	1567170b          	srriw	a4,a4,22
    e8818f92:	7c07370b          	extu	a4,a4,31,0
    e8818f96:	9742                	add	a4,a4,a6
    e8818f98:	97c6                	add	a5,a5,a7
        R0(A,B,C,D,X(12), 7,0x6b901122L);   HOST_c2l(data,l); X(14)=l;
    e8818f9a:	0106c8b3          	xor	a7,a3,a6
    e8818f9e:	00e8f8b3          	and	a7,a7,a4
    e8818fa2:	00d8c8b3          	xor	a7,a7,a3
    e8818fa6:	97c6                	add	a5,a5,a7
    e8818fa8:	0008a897          	auipc	a7,0x8a
    e8818fac:	72088893          	addi	a7,a7,1824 # e88a36c8 <end.8789+0x20>
        R0(B,C,D,A,X(11),22,0x895cd7beL);   HOST_c2l(data,l); X(13)=l;
    e8818fb0:	0345e983          	lwu	s3,52(a1)
        R0(A,B,C,D,X(12), 7,0x6b901122L);   HOST_c2l(data,l); X(14)=l;
    e8818fb4:	0008b883          	ld	a7,0(a7)
    e8818fb8:	1477978b          	srriw	a5,a5,7
    e8818fbc:	7c07b78b          	extu	a5,a5,31,0
    e8818fc0:	98ce                	add	a7,a7,s3
    e8818fc2:	97ba                	add	a5,a5,a4
    e8818fc4:	96c6                	add	a3,a3,a7
        R0(D,A,B,C,X(13),12,0xfd987193L);   HOST_c2l(data,l); X(15)=l;
    e8818fc6:	00e848b3          	xor	a7,a6,a4
        R0(A,B,C,D,X(12), 7,0x6b901122L);   HOST_c2l(data,l); X(14)=l;
    e8818fca:	0385e283          	lwu	t0,56(a1)
        R0(D,A,B,C,X(13),12,0xfd987193L);   HOST_c2l(data,l); X(15)=l;
    e8818fce:	00f8f8b3          	and	a7,a7,a5
    e8818fd2:	0108c8b3          	xor	a7,a7,a6
    e8818fd6:	96c6                	add	a3,a3,a7
    e8818fd8:	14c6968b          	srriw	a3,a3,12
    e8818fdc:	01a288b3          	add	a7,t0,s10
    e8818fe0:	7c06b68b          	extu	a3,a3,31,0
    e8818fe4:	96be                	add	a3,a3,a5
    e8818fe6:	9846                	add	a6,a6,a7
        R0(C,D,A,B,X(14),17,0xa679438eL);
    e8818fe8:	00f748b3          	xor	a7,a4,a5
    e8818fec:	00d8f8b3          	and	a7,a7,a3
    e8818ff0:	00e8c8b3          	xor	a7,a7,a4
        R0(D,A,B,C,X(13),12,0xfd987193L);   HOST_c2l(data,l); X(15)=l;
    e8818ff4:	03c5ee83          	lwu	t4,60(a1)
        R0(C,D,A,B,X(14),17,0xa679438eL);
    e8818ff8:	9846                	add	a6,a6,a7
    e8818ffa:	49b418b7          	lui	a7,0x49b41
    e8818ffe:	82188893          	addi	a7,a7,-2015 # 49b40821 <memcmp-0x9ecbf7df>
    e8819002:	98f6                	add	a7,a7,t4
    e8819004:	1518180b          	srriw	a6,a6,17
    e8819008:	7c08380b          	extu	a6,a6,31,0
    e881900c:	9836                	add	a6,a6,a3
    e881900e:	9746                	add	a4,a4,a7
        R0(B,C,D,A,X(15),22,0x49b40821L);
    e8819010:	00d7c8b3          	xor	a7,a5,a3
    e8819014:	0108f8b3          	and	a7,a7,a6
    e8819018:	00f8c8b3          	xor	a7,a7,a5
    e881901c:	9746                	add	a4,a4,a7
    e881901e:	7b0f18b7          	lui	a7,0x7b0f1
    e8819022:	031f188b          	addsl	a7,t5,a7,1
    e8819026:	1567170b          	srriw	a4,a4,22
    e881902a:	56288893          	addi	a7,a7,1378 # 7b0f1562 <memcmp-0x6d70ea9e>
    e881902e:	7c07370b          	extu	a4,a4,31,0
    e8819032:	9742                	add	a4,a4,a6
    e8819034:	97c6                	add	a5,a5,a7
        R1(A,B,C,D,X( 1), 5,0xf61e2562L);
    e8819036:	00e848b3          	xor	a7,a6,a4
    e881903a:	00d8f8b3          	and	a7,a7,a3
    e881903e:	0108c8b3          	xor	a7,a7,a6
    e8819042:	97c6                	add	a5,a5,a7
    e8819044:	030108b7          	lui	a7,0x3010
    e8819048:	2cd88893          	addi	a7,a7,717 # 30102cd <memcmp-0xe57efd33>
    e881904c:	1457978b          	srriw	a5,a5,5
    e8819050:	089a                	slli	a7,a7,0x6
    e8819052:	98f2                	add	a7,a7,t3
    e8819054:	7c07b78b          	extu	a5,a5,31,0
    e8819058:	97ba                	add	a5,a5,a4
    e881905a:	96c6                	add	a3,a3,a7
        R1(D,A,B,C,X( 6), 9,0xc040b340L);
    e881905c:	00f748b3          	xor	a7,a4,a5
    e8819060:	0108f8b3          	and	a7,a7,a6
    e8819064:	00e8c8b3          	xor	a7,a7,a4
    e8819068:	96c6                	add	a3,a3,a7
    e881906a:	265e68b7          	lui	a7,0x265e6
    e881906e:	1496968b          	srriw	a3,a3,9
    e8819072:	a5188893          	addi	a7,a7,-1455 # 265e5a51 <memcmp-0xc221a5af>
    e8819076:	98ca                	add	a7,a7,s2
    e8819078:	7c06b68b          	extu	a3,a3,31,0
    e881907c:	96be                	add	a3,a3,a5
    e881907e:	9846                	add	a6,a6,a7
        R1(C,D,A,B,X(11),14,0x265e5a51L);
    e8819080:	00d7c8b3          	xor	a7,a5,a3
    e8819084:	00e8f8b3          	and	a7,a7,a4
    e8819088:	00f8c8b3          	xor	a7,a7,a5
    e881908c:	9846                	add	a6,a6,a7
    e881908e:	3a6db8b7          	lui	a7,0x3a6db
    e8819092:	0513988b          	addsl	a7,t2,a7,2
    e8819096:	14e8180b          	srriw	a6,a6,14
    e881909a:	7aa88893          	addi	a7,a7,1962 # 3a6db7aa <memcmp-0xae124856>
    e881909e:	7c08380b          	extu	a6,a6,31,0
    e88190a2:	9836                	add	a6,a6,a3
    e88190a4:	9746                	add	a4,a4,a7
        R1(B,C,D,A,X( 0),20,0xe9b6c7aaL);
    e88190a6:	0106c8b3          	xor	a7,a3,a6
    e88190aa:	00f8f8b3          	and	a7,a7,a5
    e88190ae:	00d8c8b3          	xor	a7,a7,a3
    e88190b2:	9746                	add	a4,a4,a7
    e88190b4:	0008a897          	auipc	a7,0x8a
    e88190b8:	61c88893          	addi	a7,a7,1564 # e88a36d0 <end.8789+0x28>
    e88190bc:	0008b883          	ld	a7,0(a7)
    e88190c0:	1547170b          	srriw	a4,a4,20
    e88190c4:	7c07370b          	extu	a4,a4,31,0
    e88190c8:	98fe                	add	a7,a7,t6
    e88190ca:	9742                	add	a4,a4,a6
    e88190cc:	97c6                	add	a5,a5,a7
        R1(A,B,C,D,X( 5), 5,0xd62f105dL);
    e88190ce:	00e848b3          	xor	a7,a6,a4
    e88190d2:	00d8f8b3          	and	a7,a7,a3
    e88190d6:	0108c8b3          	xor	a7,a7,a6
    e88190da:	97c6                	add	a5,a5,a7
    e88190dc:	024418b7          	lui	a7,0x2441
    e88190e0:	1457978b          	srriw	a5,a5,5
    e88190e4:	45388893          	addi	a7,a7,1107 # 2441453 <memcmp-0xe63bebad>
    e88190e8:	98d6                	add	a7,a7,s5
    e88190ea:	7c07b78b          	extu	a5,a5,31,0
    e88190ee:	97ba                	add	a5,a5,a4
    e88190f0:	96c6                	add	a3,a3,a7
        R1(D,A,B,C,X(10), 9,0x02441453L);
    e88190f2:	00f748b3          	xor	a7,a4,a5
    e88190f6:	0108f8b3          	and	a7,a7,a6
    e88190fa:	00e8c8b3          	xor	a7,a7,a4
    e88190fe:	96c6                	add	a3,a3,a7
    e8819100:	6c50f8b7          	lui	a7,0x6c50f
    e8819104:	1496968b          	srriw	a3,a3,9
    e8819108:	031e988b          	addsl	a7,t4,a7,1
    e881910c:	68188893          	addi	a7,a7,1665 # 6c50f681 <memcmp-0x7c2f097f>
    e8819110:	7c06b68b          	extu	a3,a3,31,0
    e8819114:	96be                	add	a3,a3,a5
    e8819116:	9846                	add	a6,a6,a7
        R1(C,D,A,B,X(15),14,0xd8a1e681L);
    e8819118:	00d7c8b3          	xor	a7,a5,a3
    e881911c:	00e8f8b3          	and	a7,a7,a4
    e8819120:	00f8c8b3          	xor	a7,a7,a5
    e8819124:	9846                	add	a6,a6,a7
    e8819126:	039f58b7          	lui	a7,0x39f5
    e881912a:	089a                	slli	a7,a7,0x6
    e881912c:	14e8180b          	srriw	a6,a6,14
    e8819130:	bc888893          	addi	a7,a7,-1080 # 39f4bc8 <memcmp-0xe4e0b438>
    e8819134:	989a                	add	a7,a7,t1
    e8819136:	7c08380b          	extu	a6,a6,31,0
    e881913a:	9836                	add	a6,a6,a3
    e881913c:	9746                	add	a4,a4,a7
        R1(B,C,D,A,X( 4),20,0xe7d3fbc8L);
    e881913e:	0106c8b3          	xor	a7,a3,a6
    e8819142:	00f8f8b3          	and	a7,a7,a5
    e8819146:	00d8c8b3          	xor	a7,a7,a3
    e881914a:	9746                	add	a4,a4,a7
    e881914c:	21e1d8b7          	lui	a7,0x21e1d
    e8819150:	1547170b          	srriw	a4,a4,20
    e8819154:	de688893          	addi	a7,a7,-538 # 21e1cde6 <memcmp-0xc69e321a>
    e8819158:	98a2                	add	a7,a7,s0
    e881915a:	7c07370b          	extu	a4,a4,31,0
    e881915e:	9742                	add	a4,a4,a6
    e8819160:	97c6                	add	a5,a5,a7
        R1(A,B,C,D,X( 9), 5,0x21e1cde6L);
    e8819162:	00e848b3          	xor	a7,a6,a4
    e8819166:	00d8f8b3          	and	a7,a7,a3
    e881916a:	0108c8b3          	xor	a7,a7,a6
    e881916e:	97c6                	add	a5,a5,a7
    e8819170:	0c3378b7          	lui	a7,0xc337
    e8819174:	0892                	slli	a7,a7,0x4
    e8819176:	1457978b          	srriw	a5,a5,5
    e881917a:	7d688893          	addi	a7,a7,2006 # c3377d6 <memcmp-0xdc4c882a>
    e881917e:	9896                	add	a7,a7,t0
    e8819180:	7c07b78b          	extu	a5,a5,31,0
    e8819184:	97ba                	add	a5,a5,a4
    e8819186:	96c6                	add	a3,a3,a7
        R1(D,A,B,C,X(14), 9,0xc33707d6L);
    e8819188:	00f748b3          	xor	a7,a4,a5
    e881918c:	0108f8b3          	and	a7,a7,a6
    e8819190:	00e8c8b3          	xor	a7,a7,a4
    e8819194:	96c6                	add	a3,a3,a7
    e8819196:	0008a897          	auipc	a7,0x8a
    e881919a:	54288893          	addi	a7,a7,1346 # e88a36d8 <end.8789+0x30>
    e881919e:	0008b883          	ld	a7,0(a7)
    e88191a2:	1496968b          	srriw	a3,a3,9
    e88191a6:	7c06b68b          	extu	a3,a3,31,0
    e88191aa:	98da                	add	a7,a7,s6
    e88191ac:	96be                	add	a3,a3,a5
    e88191ae:	9846                	add	a6,a6,a7
        R1(C,D,A,B,X( 3),14,0xf4d50d87L);
    e88191b0:	00d7c8b3          	xor	a7,a5,a3
    e88191b4:	00e8f8b3          	and	a7,a7,a4
    e88191b8:	00f8c8b3          	xor	a7,a7,a5
    e88191bc:	9846                	add	a6,a6,a7
    e88191be:	455a18b7          	lui	a7,0x455a1
    e88191c2:	14e8180b          	srriw	a6,a6,14
    e88191c6:	4ed88893          	addi	a7,a7,1261 # 455a14ed <memcmp-0xa325eb13>
    e88191ca:	98d2                	add	a7,a7,s4
    e88191cc:	7c08380b          	extu	a6,a6,31,0
    e88191d0:	9836                	add	a6,a6,a3
    e88191d2:	9746                	add	a4,a4,a7
        R1(B,C,D,A,X( 8),20,0x455a14edL);
    e88191d4:	0106c8b3          	xor	a7,a3,a6
    e88191d8:	00f8f8b3          	and	a7,a7,a5
    e88191dc:	00d8c8b3          	xor	a7,a7,a3
    e88191e0:	9746                	add	a4,a4,a7
    e88191e2:	0008a897          	auipc	a7,0x8a
    e88191e6:	4fe88893          	addi	a7,a7,1278 # e88a36e0 <end.8789+0x38>
    e88191ea:	0008b883          	ld	a7,0(a7)
    e88191ee:	1547170b          	srriw	a4,a4,20
    e88191f2:	7c07370b          	extu	a4,a4,31,0
    e88191f6:	98ce                	add	a7,a7,s3
    e88191f8:	9742                	add	a4,a4,a6
    e88191fa:	97c6                	add	a5,a5,a7
        R1(A,B,C,D,X(13), 5,0xa9e3e905L);
    e88191fc:	00e848b3          	xor	a7,a6,a4
    e8819200:	00d8f8b3          	and	a7,a7,a3
    e8819204:	0108c8b3          	xor	a7,a7,a6
    e8819208:	97c6                	add	a5,a5,a7
    e881920a:	7e77d8b7          	lui	a7,0x7e77d
    e881920e:	0314988b          	addsl	a7,s1,a7,1
    e8819212:	1457978b          	srriw	a5,a5,5
    e8819216:	3f888893          	addi	a7,a7,1016 # 7e77d3f8 <memcmp-0x6a082c08>
    e881921a:	7c07b78b          	extu	a5,a5,31,0
    e881921e:	97ba                	add	a5,a5,a4
    e8819220:	96c6                	add	a3,a3,a7
        R1(D,A,B,C,X( 2), 9,0xfcefa3f8L);
    e8819222:	00f748b3          	xor	a7,a4,a5
    e8819226:	0108f8b3          	and	a7,a7,a6
    e881922a:	00e8c8b3          	xor	a7,a7,a4
    e881922e:	96c6                	add	a3,a3,a7
    e8819230:	676f08b7          	lui	a7,0x676f0
    e8819234:	1496968b          	srriw	a3,a3,9
    e8819238:	2d988893          	addi	a7,a7,729 # 676f02d9 <memcmp-0x8110fd27>
    e881923c:	98e2                	add	a7,a7,s8
    e881923e:	7c06b68b          	extu	a3,a3,31,0
    e8819242:	96be                	add	a3,a3,a5
    e8819244:	9846                	add	a6,a6,a7
        R1(C,D,A,B,X( 7),14,0x676f02d9L);
    e8819246:	00d7c8b3          	xor	a7,a5,a3
    e881924a:	00e8f8b3          	and	a7,a7,a4
    e881924e:	00f8c8b3          	xor	a7,a7,a5
    e8819252:	98c2                	add	a7,a7,a6
    e8819254:	14e8988b          	srriw	a7,a7,14
    e8819258:	46952db7          	lui	s11,0x46952
    e881925c:	7c08b88b          	extu	a7,a7,31,0
    e8819260:	645d8d93          	addi	s11,s11,1605 # 46952645 <memcmp-0xa1ead9bb>
    e8819264:	98b6                	add	a7,a7,a3
    e8819266:	03bb9d8b          	addsl	s11,s7,s11,1
        R1(B,C,D,A,X(12),20,0x8d2a4c8aL);
    e881926a:	0116c833          	xor	a6,a3,a7
    e881926e:	976e                	add	a4,a4,s11
    e8819270:	00f87db3          	and	s11,a6,a5
    e8819274:	00ddcdb3          	xor	s11,s11,a3
    e8819278:	976e                	add	a4,a4,s11
    e881927a:	1547170b          	srriw	a4,a4,20
    e881927e:	7c07370b          	extu	a4,a4,31,0
    e8819282:	3ffe9db7          	lui	s11,0x3ffe9
    e8819286:	9746                	add	a4,a4,a7
    e8819288:	05bf9d8b          	addsl	s11,t6,s11,2
        R2(A,B,C,D,X( 5), 4,0xfffa3942L);
    e881928c:	00e84833          	xor	a6,a6,a4
    e8819290:	942d8d93          	addi	s11,s11,-1726 # 3ffe8942 <memcmp-0xa88176be>
    e8819294:	97ee                	add	a5,a5,s11
    e8819296:	97c2                	add	a5,a5,a6
    e8819298:	0008a817          	auipc	a6,0x8a
    e881929c:	45080813          	addi	a6,a6,1104 # e88a36e8 <end.8789+0x40>
    e88192a0:	00083803          	ld	a6,0(a6)
    e88192a4:	1447978b          	srriw	a5,a5,4
    e88192a8:	7c07b78b          	extu	a5,a5,31,0
    e88192ac:	9852                	add	a6,a6,s4
    e88192ae:	97ba                	add	a5,a5,a4
    e88192b0:	96c2                	add	a3,a3,a6
        R2(D,A,B,C,X( 8),11,0x8771f681L);
    e88192b2:	00e8c833          	xor	a6,a7,a4
    e88192b6:	00f84833          	xor	a6,a6,a5
    e88192ba:	96c2                	add	a3,a3,a6
    e88192bc:	6d9d6837          	lui	a6,0x6d9d6
    e88192c0:	12280813          	addi	a6,a6,290 # 6d9d6122 <memcmp-0x7ae29ede>
    e88192c4:	984a                	add	a6,a6,s2
    e88192c6:	14b6968b          	srriw	a3,a3,11
    e88192ca:	7c06b68b          	extu	a3,a3,31,0
    e88192ce:	96be                	add	a3,a3,a5
    e88192d0:	98c2                	add	a7,a7,a6
        R2(C,D,A,B,X(11),16,0x6d9d6122L);
    e88192d2:	00f74833          	xor	a6,a4,a5
    e88192d6:	00d84833          	xor	a6,a6,a3
    e88192da:	98c2                	add	a7,a7,a6
    e88192dc:	3f795837          	lui	a6,0x3f795
    e88192e0:	0502980b          	addsl	a6,t0,a6,2
    e88192e4:	80c80813          	addi	a6,a6,-2036 # 3f79480c <memcmp-0xa906b7f4>
    e88192e8:	1508988b          	srriw	a7,a7,16
    e88192ec:	7c08b88b          	extu	a7,a7,31,0
    e88192f0:	98b6                	add	a7,a7,a3
    e88192f2:	9742                	add	a4,a4,a6
        R2(B,C,D,A,X(14),23,0xfde5380cL);
    e88192f4:	00d7c833          	xor	a6,a5,a3
    e88192f8:	01184833          	xor	a6,a6,a7
    e88192fc:	9742                	add	a4,a4,a6
    e88192fe:	292fc837          	lui	a6,0x292fc
    e8819302:	a9180813          	addi	a6,a6,-1391 # 292fba91 <memcmp-0xbf50456f>
    e8819306:	050f180b          	addsl	a6,t5,a6,2
    e881930a:	1577170b          	srriw	a4,a4,23
    e881930e:	7c07370b          	extu	a4,a4,31,0
    e8819312:	9746                	add	a4,a4,a7
    e8819314:	97c2                	add	a5,a5,a6
        R2(A,B,C,D,X( 1), 4,0xa4beea44L);
    e8819316:	0116c833          	xor	a6,a3,a7
    e881931a:	00e84833          	xor	a6,a6,a4
    e881931e:	97c2                	add	a5,a5,a6
    e8819320:	4bded837          	lui	a6,0x4bded
    e8819324:	fa980813          	addi	a6,a6,-87 # 4bdecfa9 <memcmp-0x9ca13057>
    e8819328:	981a                	add	a6,a6,t1
    e881932a:	1447978b          	srriw	a5,a5,4
    e881932e:	7c07b78b          	extu	a5,a5,31,0
    e8819332:	97ba                	add	a5,a5,a4
    e8819334:	96c2                	add	a3,a3,a6
        R2(D,A,B,C,X( 4),11,0x4bdecfa9L);
    e8819336:	00e8c833          	xor	a6,a7,a4
    e881933a:	00f84833          	xor	a6,a6,a5
    e881933e:	9836                	add	a6,a6,a3
    e8819340:	07b5e6b7          	lui	a3,0x7b5e
    e8819344:	a5b68693          	addi	a3,a3,-1445 # 7b5da5b <memcmp-0xe0ca25a5>
    e8819348:	0696                	slli	a3,a3,0x5
    e881934a:	96e2                	add	a3,a3,s8
    e881934c:	14b8180b          	srriw	a6,a6,11
    e8819350:	7c08380b          	extu	a6,a6,31,0
    e8819354:	983e                	add	a6,a6,a5
    e8819356:	98b6                	add	a7,a7,a3
        R2(C,D,A,B,X( 7),16,0xf6bb4b60L);
    e8819358:	00f746b3          	xor	a3,a4,a5
    e881935c:	0106c6b3          	xor	a3,a3,a6
    e8819360:	96c6                	add	a3,a3,a7
    e8819362:	2faff8b7          	lui	a7,0x2faff
    e8819366:	051a988b          	addsl	a7,s5,a7,2
    e881936a:	c7088893          	addi	a7,a7,-912 # 2fafec70 <memcmp-0xb8d01390>
    e881936e:	1506968b          	srriw	a3,a3,16
    e8819372:	7c06b68b          	extu	a3,a3,31,0
    e8819376:	96c2                	add	a3,a3,a6
    e8819378:	9746                	add	a4,a4,a7
        R2(B,C,D,A,X(10),23,0xbebfbc70L);
    e881937a:	0107c8b3          	xor	a7,a5,a6
    e881937e:	00d8c8b3          	xor	a7,a7,a3
    e8819382:	9746                	add	a4,a4,a7
    e8819384:	289b88b7          	lui	a7,0x289b8
    e8819388:	ec688893          	addi	a7,a7,-314 # 289b7ec6 <memcmp-0xbfe4813a>
    e881938c:	98ce                	add	a7,a7,s3
    e881938e:	1577170b          	srriw	a4,a4,23
    e8819392:	7c07370b          	extu	a4,a4,31,0
    e8819396:	9736                	add	a4,a4,a3
    e8819398:	97c6                	add	a5,a5,a7
        R2(A,B,C,D,X(13), 4,0x289b7ec6L);
    e881939a:	00d848b3          	xor	a7,a6,a3
    e881939e:	00e8c8b3          	xor	a7,a7,a4
    e88193a2:	98be                	add	a7,a7,a5
    e88193a4:	755097b7          	lui	a5,0x75509
    e88193a8:	02f3978b          	addsl	a5,t2,a5,1
    e88193ac:	7fa78793          	addi	a5,a5,2042 # 755097fa <memcmp-0x732f6806>
    e88193b0:	1448988b          	srriw	a7,a7,4
    e88193b4:	7c08b88b          	extu	a7,a7,31,0
    e88193b8:	98ba                	add	a7,a7,a4
    e88193ba:	983e                	add	a6,a6,a5
        R2(D,A,B,C,X( 0),11,0xeaa127faL);
    e88193bc:	00e6c7b3          	xor	a5,a3,a4
    e88193c0:	0117c7b3          	xor	a5,a5,a7
    e88193c4:	97c2                	add	a5,a5,a6
    e88193c6:	0008a817          	auipc	a6,0x8a
    e88193ca:	32a80813          	addi	a6,a6,810 # e88a36f0 <end.8789+0x48>
    e88193ce:	00083803          	ld	a6,0(a6)
    e88193d2:	14b7978b          	srriw	a5,a5,11
    e88193d6:	7c07b78b          	extu	a5,a5,31,0
    e88193da:	985a                	add	a6,a6,s6
    e88193dc:	97c6                	add	a5,a5,a7
    e88193de:	96c2                	add	a3,a3,a6
        R2(C,D,A,B,X( 3),16,0xd4ef3085L);
    e88193e0:	01174833          	xor	a6,a4,a7
    e88193e4:	00f84833          	xor	a6,a6,a5
    e88193e8:	96c2                	add	a3,a3,a6
    e88193ea:	04882837          	lui	a6,0x4882
    e88193ee:	d0580813          	addi	a6,a6,-763 # 4881d05 <memcmp-0xe3f7e2fb>
    e88193f2:	9872                	add	a6,a6,t3
    e88193f4:	1506968b          	srriw	a3,a3,16
    e88193f8:	7c06b68b          	extu	a3,a3,31,0
    e88193fc:	96be                	add	a3,a3,a5
    e88193fe:	9742                	add	a4,a4,a6
        R2(B,C,D,A,X( 6),23,0x04881d05L);
    e8819400:	00f8c833          	xor	a6,a7,a5
    e8819404:	00d84833          	xor	a6,a6,a3
    e8819408:	983a                	add	a6,a6,a4
    e881940a:	0008a717          	auipc	a4,0x8a
    e881940e:	2ee70713          	addi	a4,a4,750 # e88a36f8 <end.8789+0x50>
    e8819412:	6318                	ld	a4,0(a4)
    e8819414:	1578180b          	srriw	a6,a6,23
    e8819418:	7c08380b          	extu	a6,a6,31,0
    e881941c:	9722                	add	a4,a4,s0
    e881941e:	9836                	add	a6,a6,a3
    e8819420:	98ba                	add	a7,a7,a4
        R2(A,B,C,D,X( 9), 4,0xd9d4d039L);
    e8819422:	00d7c733          	xor	a4,a5,a3
    e8819426:	01074733          	xor	a4,a4,a6
    e881942a:	9746                	add	a4,a4,a7
    e881942c:	736dd8b7          	lui	a7,0x736dd
    e8819430:	031b988b          	addsl	a7,s7,a7,1
    e8819434:	9e588893          	addi	a7,a7,-1563 # 736dc9e5 <memcmp-0x7512361b>
    e8819438:	1447170b          	srriw	a4,a4,4
    e881943c:	7c07370b          	extu	a4,a4,31,0
    e8819440:	9742                	add	a4,a4,a6
    e8819442:	97c6                	add	a5,a5,a7
        R2(D,A,B,C,X(12),11,0xe6db99e5L);
    e8819444:	0106c8b3          	xor	a7,a3,a6
    e8819448:	00e8c8b3          	xor	a7,a7,a4
    e881944c:	98be                	add	a7,a7,a5
    e881944e:	1fa287b7          	lui	a5,0x1fa28
    e8819452:	cf878793          	addi	a5,a5,-776 # 1fa27cf8 <memcmp-0xc8dd8308>
    e8819456:	97f6                	add	a5,a5,t4
    e8819458:	14b8988b          	srriw	a7,a7,11
    e881945c:	7c08b88b          	extu	a7,a7,31,0
    e8819460:	98ba                	add	a7,a7,a4
    e8819462:	96be                	add	a3,a3,a5
        R2(C,D,A,B,X(15),16,0x1fa27cf8L);
    e8819464:	00e847b3          	xor	a5,a6,a4
    e8819468:	0117c7b3          	xor	a5,a5,a7
    e881946c:	96be                	add	a3,a3,a5
    e881946e:	0008a797          	auipc	a5,0x8a
    e8819472:	29278793          	addi	a5,a5,658 # e88a3700 <end.8789+0x58>
    e8819476:	639c                	ld	a5,0(a5)
    e8819478:	1506968b          	srriw	a3,a3,16
    e881947c:	7c06b68b          	extu	a3,a3,31,0
    e8819480:	97a6                	add	a5,a5,s1
    e8819482:	96c6                	add	a3,a3,a7
    e8819484:	983e                	add	a6,a6,a5
        R2(B,C,D,A,X( 2),23,0xc4ac5665L);
    e8819486:	011747b3          	xor	a5,a4,a7
    e881948a:	8fb5                	xor	a5,a5,a3
    e881948c:	97c2                	add	a5,a5,a6
    e881948e:	1577978b          	srriw	a5,a5,23
    e8819492:	7a149837          	lui	a6,0x7a149
    e8819496:	7c07b78b          	extu	a5,a5,31,0
    e881949a:	97b6                	add	a5,a5,a3
    e881949c:	0303938b          	addsl	t2,t2,a6,1
        R3(A,B,C,D,X( 0), 6,0xf4292244L);
    e88194a0:	fff8cd93          	not	s11,a7
    e88194a4:	24438393          	addi	t2,t2,580
    e88194a8:	00fdedb3          	or	s11,s11,a5
    e88194ac:	971e                	add	a4,a4,t2
    e88194ae:	00ddcdb3          	xor	s11,s11,a3
    e88194b2:	976e                	add	a4,a4,s11
    e88194b4:	1467170b          	srriw	a4,a4,6
    e88194b8:	7c07370b          	extu	a4,a4,31,0
    e88194bc:	432b0837          	lui	a6,0x432b0
    e88194c0:	973e                	add	a4,a4,a5
    e88194c2:	f9780813          	addi	a6,a6,-105 # 432aff97 <memcmp-0xa5550069>
        R3(D,A,B,C,X( 7),10,0x432aff97L);
    e88194c6:	fff6c393          	not	t2,a3
    e88194ca:	9c42                	add	s8,s8,a6
    e88194cc:	00e3e3b3          	or	t2,t2,a4
    e88194d0:	00f3c3b3          	xor	t2,t2,a5
    e88194d4:	98e2                	add	a7,a7,s8
    e88194d6:	989e                	add	a7,a7,t2
    e88194d8:	14a8988b          	srriw	a7,a7,10
    e88194dc:	55ca1837          	lui	a6,0x55ca1
    e88194e0:	7c08b88b          	extu	a7,a7,31,0
    e88194e4:	98ba                	add	a7,a7,a4
    e88194e6:	0302928b          	addsl	t0,t0,a6,1
        R3(C,D,A,B,X(14),15,0xab9423a7L);
    e88194ea:	fff7c393          	not	t2,a5
    e88194ee:	3a728293          	addi	t0,t0,935
    e88194f2:	0113e3b3          	or	t2,t2,a7
    e88194f6:	9696                	add	a3,a3,t0
    e88194f8:	00e3c3b3          	xor	t2,t2,a4
    e88194fc:	969e                	add	a3,a3,t2
    e88194fe:	14f6968b          	srriw	a3,a3,15
    e8819502:	7e49d837          	lui	a6,0x7e49d
    e8819506:	7c06b68b          	extu	a3,a3,31,0
    e881950a:	96c6                	add	a3,a3,a7
    e881950c:	030f9f8b          	addsl	t6,t6,a6,1
        R3(B,C,D,A,X( 5),21,0xfc93a039L);
    e8819510:	fff74293          	not	t0,a4
    e8819514:	00d2e2b3          	or	t0,t0,a3
    e8819518:	039f8f93          	addi	t6,t6,57
    e881951c:	0112c2b3          	xor	t0,t0,a7
    e8819520:	97fe                	add	a5,a5,t6
    e8819522:	9796                	add	a5,a5,t0
    e8819524:	655b6837          	lui	a6,0x655b6
    e8819528:	9c380813          	addi	a6,a6,-1597 # 655b59c3 <memcmp-0x8324a63d>
    e881952c:	1557978b          	srriw	a5,a5,21
    e8819530:	9bc2                	add	s7,s7,a6
    e8819532:	7c07b78b          	extu	a5,a5,31,0
    e8819536:	97b6                	add	a5,a5,a3
    e8819538:	9bba                	add	s7,s7,a4
        R3(A,B,C,D,X(12), 6,0x655b59c3L);
    e881953a:	fff8c713          	not	a4,a7
    e881953e:	8f5d                	or	a4,a4,a5
    e8819540:	8f35                	xor	a4,a4,a3
    e8819542:	975e                	add	a4,a4,s7
    e8819544:	47866837          	lui	a6,0x47866
    e8819548:	64980813          	addi	a6,a6,1609 # 47866649 <memcmp-0xa0f999b7>
    e881954c:	1467170b          	srriw	a4,a4,6
    e8819550:	030b1b0b          	addsl	s6,s6,a6,1
    e8819554:	7c07370b          	extu	a4,a4,31,0
    e8819558:	973e                	add	a4,a4,a5
    e881955a:	9b46                	add	s6,s6,a7
        R3(D,A,B,C,X( 3),10,0x8f0ccc92L);
    e881955c:	fff6c893          	not	a7,a3
    e8819560:	00e8e8b3          	or	a7,a7,a4
    e8819564:	0008a817          	auipc	a6,0x8a
    e8819568:	1a480813          	addi	a6,a6,420 # e88a3708 <end.8789+0x60>
    e881956c:	00f8c8b3          	xor	a7,a7,a5
    e8819570:	00083803          	ld	a6,0(a6)
    e8819574:	98da                	add	a7,a7,s6
    e8819576:	14a8988b          	srriw	a7,a7,10
    e881957a:	9ac2                	add	s5,s5,a6
    e881957c:	7c08b88b          	extu	a7,a7,31,0
    e8819580:	98ba                	add	a7,a7,a4
    e8819582:	9ab6                	add	s5,s5,a3
        R3(C,D,A,B,X(10),15,0xffeff47dL);
    e8819584:	fff7c693          	not	a3,a5
    e8819588:	0116e6b3          	or	a3,a3,a7
    e881958c:	8eb9                	xor	a3,a3,a4
    e881958e:	42c23837          	lui	a6,0x42c23
    e8819592:	96d6                	add	a3,a3,s5
    e8819594:	030f1f0b          	addsl	t5,t5,a6,1
    e8819598:	14f6968b          	srriw	a3,a3,15
    e881959c:	7c06b68b          	extu	a3,a3,31,0
    e88195a0:	dd1f0f13          	addi	t5,t5,-559
    e88195a4:	96c6                	add	a3,a3,a7
    e88195a6:	9f3e                	add	t5,t5,a5
        R3(B,C,D,A,X( 1),21,0x85845dd1L);
    e88195a8:	fff74793          	not	a5,a4
    e88195ac:	8fd5                	or	a5,a5,a3
    e88195ae:	0117c7b3          	xor	a5,a5,a7
    e88195b2:	97fa                	add	a5,a5,t5
    e88195b4:	6fa88f37          	lui	t5,0x6fa88
    e88195b8:	e4ff0f13          	addi	t5,t5,-433 # 6fa87e4f <memcmp-0x78d781b1>
    e88195bc:	9f52                	add	t5,t5,s4
    e88195be:	1557978b          	srriw	a5,a5,21
    e88195c2:	7c07b78b          	extu	a5,a5,31,0
    e88195c6:	97b6                	add	a5,a5,a3
    e88195c8:	977a                	add	a4,a4,t5
        R3(A,B,C,D,X( 8), 6,0x6fa87e4fL);
    e88195ca:	fff8cf13          	not	t5,a7
    e88195ce:	00ff6f33          	or	t5,t5,a5
    e88195d2:	00df4f33          	xor	t5,t5,a3
    e88195d6:	7f167837          	lui	a6,0x7f167
    e88195da:	9f3a                	add	t5,t5,a4
    e88195dc:	030e980b          	addsl	a6,t4,a6,1
    e88195e0:	6e080813          	addi	a6,a6,1760 # 7f1676e0 <memcmp-0x69698920>
    e88195e4:	146f1f0b          	srriw	t5,t5,6
    e88195e8:	7c0f3f0b          	extu	t5,t5,31,0
    e88195ec:	9f3e                	add	t5,t5,a5
    e88195ee:	98c2                	add	a7,a7,a6
        R3(D,A,B,C,X(15),10,0xfe2ce6e0L);
    e88195f0:	fff6c813          	not	a6,a3
    e88195f4:	01e86833          	or	a6,a6,t5
    e88195f8:	00f84833          	xor	a6,a6,a5
    e88195fc:	28c05737          	lui	a4,0x28c05
    e8819600:	9846                	add	a6,a6,a7
    e8819602:	04ee170b          	addsl	a4,t3,a4,2
    e8819606:	31470713          	addi	a4,a4,788 # 28c05314 <memcmp-0xbfbfacec>
    e881960a:	14a8180b          	srriw	a6,a6,10
    e881960e:	7c08380b          	extu	a6,a6,31,0
    e8819612:	987a                	add	a6,a6,t5
    e8819614:	96ba                	add	a3,a3,a4
        R3(C,D,A,B,X( 6),15,0xa3014314L);
    e8819616:	fff7c713          	not	a4,a5
    e881961a:	01076733          	or	a4,a4,a6
    e881961e:	01e74733          	xor	a4,a4,t5
    e8819622:	9736                	add	a4,a4,a3
    e8819624:	4e0816b7          	lui	a3,0x4e081
    e8819628:	1a168693          	addi	a3,a3,417 # 4e0811a1 <memcmp-0x9a77ee5f>
    e881962c:	96ce                	add	a3,a3,s3
    e881962e:	14f7170b          	srriw	a4,a4,15
    e8819632:	7c07370b          	extu	a4,a4,31,0
    e8819636:	9742                	add	a4,a4,a6
    e8819638:	97b6                	add	a5,a5,a3
        R3(B,C,D,A,X(13),21,0x4e0811a1L);
    e881963a:	ffff4693          	not	a3,t5
    e881963e:	8ed9                	or	a3,a3,a4
    e8819640:	0106c6b3          	xor	a3,a3,a6
    e8819644:	96be                	add	a3,a3,a5
    e8819646:	1eea77b7          	lui	a5,0x1eea7
    e881964a:	06f3178b          	addsl	a5,t1,a5,3
    e881964e:	e8278793          	addi	a5,a5,-382 # 1eea6e82 <memcmp-0xc995917e>
    e8819652:	1556968b          	srriw	a3,a3,21
    e8819656:	7c06b68b          	extu	a3,a3,31,0
    e881965a:	96ba                	add	a3,a3,a4
    e881965c:	9f3e                	add	t5,t5,a5
        R3(A,B,C,D,X( 4), 6,0xf7537e82L);
    e881965e:	fff84793          	not	a5,a6
    e8819662:	8fd5                	or	a5,a5,a3
    e8819664:	0008a897          	auipc	a7,0x8a
    e8819668:	0ac88893          	addi	a7,a7,172 # e88a3710 <end.8789+0x68>
    e881966c:	8fb9                	xor	a5,a5,a4
    e881966e:	0008b883          	ld	a7,0(a7)
    e8819672:	97fa                	add	a5,a5,t5
    e8819674:	1467978b          	srriw	a5,a5,6
    e8819678:	9946                	add	s2,s2,a7
    e881967a:	7c07b78b          	extu	a5,a5,31,0
    e881967e:	97b6                	add	a5,a5,a3
    e8819680:	9942                	add	s2,s2,a6
        R3(D,A,B,C,X(11),10,0xbd3af235L);
    e8819682:	fff74813          	not	a6,a4
    e8819686:	00f86833          	or	a6,a6,a5
    e881968a:	00d84833          	xor	a6,a6,a3
    e881968e:	984a                	add	a6,a6,s2
    e8819690:	2ad7d8b7          	lui	a7,0x2ad7d
    e8819694:	2bb88893          	addi	a7,a7,699 # 2ad7d2bb <memcmp-0xbda82d45>
    e8819698:	14a8180b          	srriw	a6,a6,10
    e881969c:	94c6                	add	s1,s1,a7
    e881969e:	7c08380b          	extu	a6,a6,31,0
    e88196a2:	983e                	add	a6,a6,a5
    e88196a4:	94ba                	add	s1,s1,a4
    e88196a6:	0008a897          	auipc	a7,0x8a
    e88196aa:	07288893          	addi	a7,a7,114 # e88a3718 <end.8789+0x70>
        R3(C,D,A,B,X( 2),15,0x2ad7d2bbL);
    e88196ae:	fff6c713          	not	a4,a3
    e88196b2:	01076733          	or	a4,a4,a6
    e88196b6:	0008b883          	ld	a7,0(a7)
    e88196ba:	8f3d                	xor	a4,a4,a5
    e88196bc:	9726                	add	a4,a4,s1
    e88196be:	9446                	add	s0,s0,a7
    e88196c0:	14f7170b          	srriw	a4,a4,15
        A = c->A += A;
    e88196c4:	00052883          	lw	a7,0(a0)
        R3(C,D,A,B,X( 2),15,0x2ad7d2bbL);
    e88196c8:	7c07370b          	extu	a4,a4,31,0
    e88196cc:	9742                	add	a4,a4,a6
    e88196ce:	96a2                	add	a3,a3,s0
        R3(B,C,D,A,X( 9),21,0xeb86d391L);
    e88196d0:	fff7c413          	not	s0,a5
    e88196d4:	8c59                	or	s0,s0,a4
        A = c->A += A;
    e88196d6:	00f887bb          	addw	a5,a7,a5
        R3(B,C,D,A,X( 9),21,0xeb86d391L);
    e88196da:	01044433          	xor	s0,s0,a6
    e88196de:	9436                	add	s0,s0,a3
    e88196e0:	1554140b          	srriw	s0,s0,21
        A = c->A += A;
    e88196e4:	c11c                	sw	a5,0(a0)
    e88196e6:	7c07b88b          	extu	a7,a5,31,0
        B = c->B += B;
    e88196ea:	415c                	lw	a5,4(a0)
        R3(B,C,D,A,X( 9),21,0xeb86d391L);
    e88196ec:	7c04340b          	extu	s0,s0,31,0
    e88196f0:	943a                	add	s0,s0,a4
        B = c->B += B;
    e88196f2:	9c3d                	addw	s0,s0,a5
        D = c->D += D;
    e88196f4:	4554                	lw	a3,12(a0)
        C = c->C += C;
    e88196f6:	451c                	lw	a5,8(a0)
        B = c->B += B;
    e88196f8:	c140                	sw	s0,4(a0)
        D = c->D += D;
    e88196fa:	0106883b          	addw	a6,a3,a6
        C = c->C += C;
    e88196fe:	9f3d                	addw	a4,a4,a5
    e8819700:	c518                	sw	a4,8(a0)
        D = c->D += D;
    e8819702:	01052623          	sw	a6,12(a0)
    e8819706:	04058593          	addi	a1,a1,64
        B = c->B += B;
    e881970a:	7c04340b          	extu	s0,s0,31,0
        C = c->C += C;
    e881970e:	7c07370b          	extu	a4,a4,31,0
        D = c->D += D;
    e8819712:	7c08380b          	extu	a6,a6,31,0
    e8819716:	ea6ff06f          	j	e8818dbc <md5_block_data_order+0x7c>

00000000e881971a <MD5_Update.part.0>:
int HASH_UPDATE (HASH_CTX *c, const void *data_, unsigned long len)
    e881971a:	7179                	addi	sp,sp,-48
    e881971c:	e422                	sd	s0,8(sp)
    e881971e:	e826                	sd	s1,16(sp)
    e8819720:	f04e                	sd	s3,32(sp)
    e8819722:	f406                	sd	ra,40(sp)
    e8819724:	ec4a                	sd	s2,24(sp)
    l=(c->Nl+(len<<3))&0xffffffffL;
    e8819726:	01056783          	lwu	a5,16(a0)
int HASH_UPDATE (HASH_CTX *c, const void *data_, unsigned long len)
    e881972a:	89aa                	mv	s3,a0
    e881972c:	842e                	mv	s0,a1
    l=(c->Nl+(len<<3))&0xffffffffL;
    e881972e:	06c7968b          	addsl	a3,a5,a2,3
    e8819732:	7c06b70b          	extu	a4,a3,31,0
int HASH_UPDATE (HASH_CTX *c, const void *data_, unsigned long len)
    e8819736:	84b2                	mv	s1,a2
    if (l < c->Nl) /* overflow */
    e8819738:	00f77563          	bgeu	a4,a5,e8819742 <MD5_Update.part.0+0x28>
        c->Nh++;
    e881973c:	495c                	lw	a5,20(a0)
    e881973e:	2785                	addiw	a5,a5,1
    e8819740:	c95c                	sw	a5,20(a0)
    c->Nh+=(len>>29);
    e8819742:	0149a703          	lw	a4,20(s3)
    e8819746:	01d4d793          	srli	a5,s1,0x1d
    c->Nl=l;
    e881974a:	00d9a823          	sw	a3,16(s3)
    c->Nh+=(len>>29);
    e881974e:	9fb9                	addw	a5,a5,a4
    e8819750:	00f9aa23          	sw	a5,20(s3)
    if (c->num != 0)
    e8819754:	0589a783          	lw	a5,88(s3)
    e8819758:	cfb5                	beqz	a5,e88197d4 <MD5_Update.part.0+0xba>
        sw=c->num>>2;
    e881975a:	4027d81b          	sraiw	a6,a5,0x2
        if ((c->num+len) >= HASH_CBLOCK)
    e881975e:	009786b3          	add	a3,a5,s1
    e8819762:	03f00613          	li	a2,63
        p=c->data;
    e8819766:	01898593          	addi	a1,s3,24
        sw=c->num>>2;
    e881976a:	8542                	mv	a0,a6
        sc=c->num&0x03;
    e881976c:	0037f713          	andi	a4,a5,3
        if ((c->num+len) >= HASH_CBLOCK)
    e8819770:	0cd67963          	bgeu	a2,a3,e8819842 <MD5_Update.part.0+0x128>
            l=p[sw]; HOST_p_c2l(data,l,sc); p[sw++]=l;
    e8819774:	4609                	li	a2,2
    e8819776:	c505c78b          	lrwu	a5,a1,a6,2
    e881977a:	00044683          	lbu	a3,0(s0)
    e881977e:	00c70e63          	beq	a4,a2,e881979a <MD5_Update.part.0+0x80>
    e8819782:	460d                	li	a2,3
    e8819784:	00c70f63          	beq	a4,a2,e88197a2 <MD5_Update.part.0+0x88>
    e8819788:	4605                	li	a2,1
    e881978a:	00c70463          	beq	a4,a2,e8819792 <MD5_Update.part.0+0x78>
    e881978e:	87b6                	mv	a5,a3
    e8819790:	0405                	addi	s0,s0,1
    e8819792:	9814470b          	lbuia	a4,(s0),1,0
    e8819796:	0722                	slli	a4,a4,0x8
    e8819798:	8fd9                	or	a5,a5,a4
    e881979a:	9814470b          	lbuia	a4,(s0),1,0
    e881979e:	0742                	slli	a4,a4,0x10
    e88197a0:	8fd9                	or	a5,a5,a4
    e88197a2:	9814468b          	lbuia	a3,(s0),1,0
    e88197a6:	0015071b          	addiw	a4,a0,1
    e88197aa:	06e2                	slli	a3,a3,0x18
    e88197ac:	8fd5                	or	a5,a5,a3
    e88197ae:	4505d78b          	srw	a5,a1,a6,2
            for (; sw<HASH_LBLOCK; sw++)
    e88197b2:	47bd                	li	a5,15
    e88197b4:	0007069b          	sext.w	a3,a4
    e88197b8:	06d7df63          	bge	a5,a3,e8819836 <MD5_Update.part.0+0x11c>
            HASH_BLOCK_HOST_ORDER (c,p,1);
    e88197bc:	4605                	li	a2,1
    e88197be:	854e                	mv	a0,s3
    e88197c0:	acdfe0ef          	jal	ra,e881828c <md5_block_host_order>
            len-=(HASH_CBLOCK-c->num);
    e88197c4:	0589a703          	lw	a4,88(s3)
    e88197c8:	04000793          	li	a5,64
            c->num=0;
    e88197cc:	0409ac23          	sw	zero,88(s3)
            len-=(HASH_CBLOCK-c->num);
    e88197d0:	9f99                	subw	a5,a5,a4
    e88197d2:	8c9d                	sub	s1,s1,a5
    sw=(int)(len/HASH_CBLOCK);
    e88197d4:	0064d913          	srli	s2,s1,0x6
    e88197d8:	2901                	sext.w	s2,s2
    if (sw > 0)
    e88197da:	01205c63          	blez	s2,e88197f2 <MD5_Update.part.0+0xd8>
            HASH_BLOCK_DATA_ORDER(c,data,sw);
    e88197de:	864a                	mv	a2,s2
    e88197e0:	85a2                	mv	a1,s0
            sw*=HASH_CBLOCK;
    e88197e2:	0069191b          	slliw	s2,s2,0x6
            HASH_BLOCK_DATA_ORDER(c,data,sw);
    e88197e6:	854e                	mv	a0,s3
    e88197e8:	d58ff0ef          	jal	ra,e8818d40 <md5_block_data_order>
            data+=sw;
    e88197ec:	944a                	add	s0,s0,s2
            len-=sw;
    e88197ee:	412484b3          	sub	s1,s1,s2
    if (len!=0)
    e88197f2:	ccc9                	beqz	s1,e881988c <MD5_Update.part.0+0x172>
        c->num = (int)len;
    e88197f4:	0004879b          	sext.w	a5,s1
        ew=(int)(len>>2);   /* words to copy */
    e88197f8:	8089                	srli	s1,s1,0x2
        c->num = (int)len;
    e88197fa:	04f9ac23          	sw	a5,88(s3)
        p = c->data;
    e88197fe:	01898693          	addi	a3,s3,24
        ec=(int)(len&0x03);
    e8819802:	8b8d                	andi	a5,a5,3
    e8819804:	4701                	li	a4,0
        for (; ew; ew--,p++)
    e8819806:	0004861b          	sext.w	a2,s1
    e881980a:	0007059b          	sext.w	a1,a4
    e881980e:	10c59c63          	bne	a1,a2,e8819926 <MD5_Update.part.0+0x20c>
        HOST_c2l_p(data,l,ec);
    e8819812:	7c04b48b          	extu	s1,s1,31,0
    e8819816:	0497970b          	addsl	a4,a5,s1,2
    e881981a:	943a                	add	s0,s0,a4
    e881981c:	4709                	li	a4,2
    e881981e:	12e78863          	beq	a5,a4,e881994e <MD5_Update.part.0+0x234>
    e8819822:	470d                	li	a4,3
    e8819824:	10e78763          	beq	a5,a4,e8819932 <MD5_Update.part.0+0x218>
    e8819828:	4705                	li	a4,1
    e881982a:	12e78463          	beq	a5,a4,e8819952 <MD5_Update.part.0+0x238>
    e881982e:	4781                	li	a5,0
        *p=l;
    e8819830:	4496d78b          	srw	a5,a3,s1,2
    e8819834:	a8a1                	j	e881988c <MD5_Update.part.0+0x172>
                HOST_c2l(data,l); p[sw]=l;
    e8819836:	5844468b          	lwia	a3,(s0),4,0
    e881983a:	44e5d68b          	srw	a3,a1,a4,2
            for (; sw<HASH_LBLOCK; sw++)
    e881983e:	0705                	addi	a4,a4,1
    e8819840:	bf95                	j	e88197b4 <MD5_Update.part.0+0x9a>
            c->num+=len;
    e8819842:	0097863b          	addw	a2,a5,s1
    e8819846:	04c9ac23          	sw	a2,88(s3)
            if ((sc+len) < 4) /* ugly, add char's to a word */
    e881984a:	009706b3          	add	a3,a4,s1
    e881984e:	488d                	li	a7,3
    e8819850:	04d8e563          	bltu	a7,a3,e881989a <MD5_Update.part.0+0x180>
                l=p[sw]; HOST_p_c2l_p(data,l,sc,len); p[sw]=l;
    e8819854:	4685                	li	a3,1
    e8819856:	c505c78b          	lrwu	a5,a1,a6,2
    e881985a:	00d70b63          	beq	a4,a3,e8819870 <MD5_Update.part.0+0x156>
    e881985e:	4689                	li	a3,2
    e8819860:	02d70063          	beq	a4,a3,e8819880 <MD5_Update.part.0+0x166>
    e8819864:	e315                	bnez	a4,e8819888 <MD5_Update.part.0+0x16e>
    e8819866:	14fd                	addi	s1,s1,-1
    e8819868:	00044783          	lbu	a5,0(s0)
    e881986c:	cc91                	beqz	s1,e8819888 <MD5_Update.part.0+0x16e>
    e881986e:	0405                	addi	s0,s0,1
    e8819870:	00044703          	lbu	a4,0(s0)
    e8819874:	0722                	slli	a4,a4,0x8
    e8819876:	8fd9                	or	a5,a5,a4
    e8819878:	4705                	li	a4,1
    e881987a:	00e48763          	beq	s1,a4,e8819888 <MD5_Update.part.0+0x16e>
    e881987e:	0405                	addi	s0,s0,1
    e8819880:	00044703          	lbu	a4,0(s0)
    e8819884:	0742                	slli	a4,a4,0x10
    e8819886:	8fd9                	or	a5,a5,a4
    e8819888:	4505d78b          	srw	a5,a1,a6,2
}
    e881988c:	70a2                	ld	ra,40(sp)
    e881988e:	6422                	ld	s0,8(sp)
    e8819890:	64c2                	ld	s1,16(sp)
    e8819892:	6962                	ld	s2,24(sp)
    e8819894:	7982                	ld	s3,32(sp)
    e8819896:	6145                	addi	sp,sp,48
    e8819898:	8082                	ret
                ew=(c->num>>2);
    e881989a:	4026579b          	sraiw	a5,a2,0x2
                ec=(c->num&0x03);
    e881989e:	8a0d                	andi	a2,a2,3
                if (sc)
    e88198a0:	cb25                	beqz	a4,e8819910 <MD5_Update.part.0+0x1f6>
                HOST_p_c2l(data,l,sc);
    e88198a2:	4309                	li	t1,2
                    l=p[sw];
    e88198a4:	c505c68b          	lrwu	a3,a1,a6,2
                HOST_p_c2l(data,l,sc);
    e88198a8:	00670863          	beq	a4,t1,e88198b8 <MD5_Update.part.0+0x19e>
    e88198ac:	01170a63          	beq	a4,a7,e88198c0 <MD5_Update.part.0+0x1a6>
    e88198b0:	9814470b          	lbuia	a4,(s0),1,0
    e88198b4:	0722                	slli	a4,a4,0x8
    e88198b6:	8ed9                	or	a3,a3,a4
    e88198b8:	9814470b          	lbuia	a4,(s0),1,0
    e88198bc:	0742                	slli	a4,a4,0x10
    e88198be:	8ed9                	or	a3,a3,a4
                p[sw++]=l;
    e88198c0:	0015071b          	addiw	a4,a0,1
                HOST_p_c2l(data,l,sc);
    e88198c4:	9814450b          	lbuia	a0,(s0),1,0
                    HOST_c2l(data,l); p[sw]=l;
    e88198c8:	09d1                	addi	s3,s3,20
                HOST_p_c2l(data,l,sc);
    e88198ca:	0562                	slli	a0,a0,0x18
    e88198cc:	8ec9                	or	a3,a3,a0
                p[sw++]=l;
    e88198ce:	4505d68b          	srw	a3,a1,a6,2
                for (; sw < ew; sw++)
    e88198d2:	86ba                	mv	a3,a4
    e88198d4:	0685                	addi	a3,a3,1
    e88198d6:	04f74063          	blt	a4,a5,e8819916 <MD5_Update.part.0+0x1fc>
                if (ec)
    e88198da:	da4d                	beqz	a2,e881988c <MD5_Update.part.0+0x172>
                    HOST_c2l_p(data,l,ec); p[sw]=l;
    e88198dc:	00c406b3          	add	a3,s0,a2
    e88198e0:	4789                	li	a5,2
    e88198e2:	fff6c503          	lbu	a0,-1(a3)
    e88198e6:	02f60e63          	beq	a2,a5,e8819922 <MD5_Update.part.0+0x208>
    e88198ea:	480d                	li	a6,3
    e88198ec:	4781                	li	a5,0
    e88198ee:	01061b63          	bne	a2,a6,e8819904 <MD5_Update.part.0+0x1ea>
    e88198f2:	00240693          	addi	a3,s0,2
    e88198f6:	01051613          	slli	a2,a0,0x10
    e88198fa:	fff6c783          	lbu	a5,-1(a3)
    e88198fe:	16fd                	addi	a3,a3,-1
    e8819900:	07a2                	slli	a5,a5,0x8
    e8819902:	8fd1                	or	a5,a5,a2
    e8819904:	fff6c683          	lbu	a3,-1(a3)
    e8819908:	8fd5                	or	a5,a5,a3
    e881990a:	44e5d78b          	srw	a5,a1,a4,2
    e881990e:	bfbd                	j	e881988c <MD5_Update.part.0+0x172>
                HOST_p_c2l(data,l,sc);
    e8819910:	9814468b          	lbuia	a3,(s0),1,0
    e8819914:	bf71                	j	e88198b0 <MD5_Update.part.0+0x196>
                    HOST_c2l(data,l); p[sw]=l;
    e8819916:	5844450b          	lwia	a0,(s0),4,0
                for (; sw < ew; sw++)
    e881991a:	2705                	addiw	a4,a4,1
                    HOST_c2l(data,l); p[sw]=l;
    e881991c:	44d9d50b          	srw	a0,s3,a3,2
                for (; sw < ew; sw++)
    e8819920:	bf55                	j	e88198d4 <MD5_Update.part.0+0x1ba>
                    HOST_c2l_p(data,l,ec); p[sw]=l;
    e8819922:	4601                	li	a2,0
    e8819924:	bfd9                	j	e88198fa <MD5_Update.part.0+0x1e0>
            HOST_c2l(data,l); *p=l;
    e8819926:	44e4458b          	lrw	a1,s0,a4,2
    e881992a:	44e6d58b          	srw	a1,a3,a4,2
        for (; ew; ew--,p++)
    e881992e:	0705                	addi	a4,a4,1
    e8819930:	bde9                	j	e881980a <MD5_Update.part.0+0xf0>
        HOST_c2l_p(data,l,ec);
    e8819932:	fff44783          	lbu	a5,-1(s0)
    e8819936:	147d                	addi	s0,s0,-1
    e8819938:	01079713          	slli	a4,a5,0x10
    e881993c:	fff44783          	lbu	a5,-1(s0)
    e8819940:	147d                	addi	s0,s0,-1
    e8819942:	07a2                	slli	a5,a5,0x8
    e8819944:	8fd9                	or	a5,a5,a4
    e8819946:	fff44703          	lbu	a4,-1(s0)
    e881994a:	8fd9                	or	a5,a5,a4
    e881994c:	b5d5                	j	e8819830 <MD5_Update.part.0+0x116>
    e881994e:	4701                	li	a4,0
    e8819950:	b7f5                	j	e881993c <MD5_Update.part.0+0x222>
    e8819952:	4781                	li	a5,0
    e8819954:	bfcd                	j	e8819946 <MD5_Update.part.0+0x22c>

00000000e8819956 <MD5_Update>:
    if (len==0) return 1;
    e8819956:	ca09                	beqz	a2,e8819968 <MD5_Update+0x12>
{
    e8819958:	1141                	addi	sp,sp,-16
    e881995a:	e406                	sd	ra,8(sp)
    e881995c:	dbfff0ef          	jal	ra,e881971a <MD5_Update.part.0>
}
    e8819960:	60a2                	ld	ra,8(sp)
    e8819962:	4505                	li	a0,1
    e8819964:	0141                	addi	sp,sp,16
    e8819966:	8082                	ret
    e8819968:	4505                	li	a0,1
    e881996a:	8082                	ret

00000000e881996c <DNSDigest_SignMessage>:
    DNSDigest_ConstructHMACKey(info, keybuf, (mDNSu32)keylen);
    return(keylen);
}

mDNSexport void DNSDigest_SignMessage(DNSMessage *msg, mDNSu8 **end, DomainAuthInfo *info, mDNSu16 tcode)
{
    e881996c:	b2010113          	addi	sp,sp,-1248
    e8819970:	4c113c23          	sd	ra,1240(sp)
    e8819974:	4c813823          	sd	s0,1232(sp)
    e8819978:	4c913423          	sd	s1,1224(sp)
    e881997c:	4d213023          	sd	s2,1216(sp)
    e8819980:	4b313c23          	sd	s3,1208(sp)
    e8819984:	4b513423          	sd	s5,1192(sp)
    e8819988:	4b613023          	sd	s6,1184(sp)
    e881998c:	4b413823          	sd	s4,1200(sp)
    mDNSu8 digest[MD5_LEN];
    mDNSu8 *ptr = *end;
    mDNSu32 len;
    mDNSOpaque16 buf;
    MD5_CTX c;
    mDNSu16 numAdditionals = (mDNSu16)((mDNSu16)countPtr[0] << 8 | countPtr[1]);
    e8819990:	00a54783          	lbu	a5,10(a0)
    e8819994:	00b54703          	lbu	a4,11(a0)
{
    e8819998:	84aa                	mv	s1,a0
    mDNSu16 numAdditionals = (mDNSu16)((mDNSu16)countPtr[0] << 8 | countPtr[1]);
    e881999a:	0087979b          	slliw	a5,a5,0x8
    e881999e:	8fd9                	or	a5,a5,a4

    // Init MD5 context, digest inner key pad and message
    MD5_Init(&c);
    e88199a0:	1808                	addi	a0,sp,48
{
    e88199a2:	8ab2                	mv	s5,a2
    e88199a4:	8b36                	mv	s6,a3
    mDNSu16 numAdditionals = (mDNSu16)((mDNSu16)countPtr[0] << 8 | countPtr[1]);
    e88199a6:	00f11b23          	sh	a5,22(sp)
{
    e88199aa:	89ae                	mv	s3,a1
    mDNSu8 *ptr = *end;
    e88199ac:	0005ba03          	ld	s4,0(a1)
    MD5_Init(&c);
    e88199b0:	8b9fe0ef          	jal	ra,e8818268 <MD5_Init>
    MD5_Update(&c, info->keydata_ipad, HMAC_LEN);
    e88199b4:	6405                	lui	s0,0x1
    e88199b6:	79640593          	addi	a1,s0,1942 # 1796 <memcmp-0xe87fe86a>
    e88199ba:	04000613          	li	a2,64
    e88199be:	95d6                	add	a1,a1,s5
    e88199c0:	1808                	addi	a0,sp,48
    e88199c2:	d59ff0ef          	jal	ra,e881971a <MD5_Update.part.0>

    // Construct TSIG RR, digesting variables as apporpriate
    mDNS_SetupResourceRecord(&tsig, mDNSNULL, 0, kDNSType_TSIG, 0, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);

    // key name
    AssignDomainName(&tsig.namestorage, &info->keyname);
    e88199c6:	57440913          	addi	s2,s0,1396
    MD5_Update(&c, (mDNSu8 *)msg, (unsigned long)(*end - (mDNSu8 *)msg));
    e88199ca:	0009b603          	ld	a2,0(s3)
    e88199ce:	85a6                	mv	a1,s1
    e88199d0:	1808                	addi	a0,sp,48
    e88199d2:	8e05                	sub	a2,a2,s1
    e88199d4:	f83ff0ef          	jal	ra,e8819956 <MD5_Update>
    mDNS_SetupResourceRecord(&tsig, mDNSNULL, 0, kDNSType_TSIG, 0, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e88199d8:	e002                	sd	zero,0(sp)
    e88199da:	02000793          	li	a5,32
    e88199de:	4601                	li	a2,0
    e88199e0:	4881                	li	a7,0
    e88199e2:	4801                	li	a6,0
    e88199e4:	4701                	li	a4,0
    e88199e6:	0fa00693          	li	a3,250
    e88199ea:	4581                	li	a1,0
    e88199ec:	0908                	addi	a0,sp,144
    e88199ee:	bdcfa0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    AssignDomainName(&tsig.namestorage, &info->keyname);
    e88199f2:	67440413          	addi	s0,s0,1652
    e88199f6:	9956                	add	s2,s2,s5
    e88199f8:	9456                	add	s0,s0,s5
    e88199fa:	85a2                	mv	a1,s0
    e88199fc:	854a                	mv	a0,s2
    e88199fe:	f4ef90ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8819a02:	0005061b          	sext.w	a2,a0
    e8819a06:	10000793          	li	a5,256
    e8819a0a:	1cc7ea63          	bltu	a5,a2,e8819bde <DNSDigest_SignMessage+0x272>
    e8819a0e:	85ca                	mv	a1,s2
    e8819a10:	0d08                	addi	a0,sp,656
    e8819a12:	08e160ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    MD5_Update(&c, info->keyname.c, DomainNameLength(&info->keyname));
    e8819a16:	85a2                	mv	a1,s0
    e8819a18:	854a                	mv	a0,s2
    e8819a1a:	f32f90ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8819a1e:	862a                	mv	a2,a0
    e8819a20:	85ca                	mv	a1,s2
    e8819a22:	1808                	addi	a0,sp,48
    e8819a24:	f33ff0ef          	jal	ra,e8819956 <MD5_Update>

    // class
    tsig.resrec.rrclass = kDNSQClass_ANY;
    e8819a28:	0ff00793          	li	a5,255
    e8819a2c:	08f11e23          	sh	a5,156(sp)
    buf = mDNSOpaque16fromIntVal(kDNSQClass_ANY);
    e8819a30:	f0000793          	li	a5,-256
    e8819a34:	4609                	li	a2,2
    e8819a36:	080c                	addi	a1,sp,16
    e8819a38:	1808                	addi	a0,sp,48
    e8819a3a:	00f11823          	sh	a5,16(sp)
    if (len==0) return 1;
    e8819a3e:	cddff0ef          	jal	ra,e881971a <MD5_Update.part.0>
    MD5_Update(&c, buf.b, sizeof(mDNSOpaque16));

    // ttl
    tsig.resrec.rroriginalttl = 0;
    e8819a42:	d102                	sw	zero,160(sp)
    if (len==0) return 1;
    e8819a44:	4611                	li	a2,4
    e8819a46:	110c                	addi	a1,sp,160
    e8819a48:	1808                	addi	a0,sp,48
    e8819a4a:	cd1ff0ef          	jal	ra,e881971a <MD5_Update.part.0>
    MD5_Update(&c, (mDNSu8 *)&tsig.resrec.rroriginalttl, sizeof(tsig.resrec.rroriginalttl));

    // alg name
    AssignDomainName(&tsig.resrec.rdata->u.name, &HMAC_MD5_AlgName);
    e8819a4e:	0008a597          	auipc	a1,0x8a
    e8819a52:	caa58593          	addi	a1,a1,-854 # e88a36f8 <end.8789+0x50>
    e8819a56:	0008a517          	auipc	a0,0x8a
    e8819a5a:	ba250513          	addi	a0,a0,-1118 # e88a35f8 <zerov6Addr+0x10>
    e8819a5e:	eeef90ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8819a62:	0005061b          	sext.w	a2,a0
    e8819a66:	10000713          	li	a4,256
    e8819a6a:	650e                	ld	a0,192(sp)
    e8819a6c:	16c76c63          	bltu	a4,a2,e8819be4 <DNSDigest_SignMessage+0x278>
    e8819a70:	0008a597          	auipc	a1,0x8a
    e8819a74:	b8858593          	addi	a1,a1,-1144 # e88a35f8 <zerov6Addr+0x10>
    e8819a78:	0511                	addi	a0,a0,4
    e8819a7a:	026160ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    len = DomainNameLength(&HMAC_MD5_AlgName);
    e8819a7e:	0008a597          	auipc	a1,0x8a
    e8819a82:	c7a58593          	addi	a1,a1,-902 # e88a36f8 <end.8789+0x50>
    e8819a86:	0008a517          	auipc	a0,0x8a
    e8819a8a:	b7250513          	addi	a0,a0,-1166 # e88a35f8 <zerov6Addr+0x10>
    e8819a8e:	ebef90ef          	jal	ra,e881314c <DomainNameLengthLimit>
    rdata = tsig.resrec.rdata->u.data + len;
    e8819a92:	640e                	ld	s0,192(sp)
    len = DomainNameLength(&HMAC_MD5_AlgName);
    e8819a94:	862a                	mv	a2,a0
    MD5_Update(&c, HMAC_MD5_AlgName.c, len);
    e8819a96:	0008a597          	auipc	a1,0x8a
    e8819a9a:	b6258593          	addi	a1,a1,-1182 # e88a35f8 <zerov6Addr+0x10>
    rdata = tsig.resrec.rdata->u.data + len;
    e8819a9e:	0411                	addi	s0,s0,4
    e8819aa0:	942a                	add	s0,s0,a0
    MD5_Update(&c, HMAC_MD5_AlgName.c, len);
    e8819aa2:	1808                	addi	a0,sp,48
    e8819aa4:	eb3ff0ef          	jal	ra,e8819956 <MD5_Update>

    // time
    // get UTC (universal time), convert to 48-bit unsigned in network byte order
    utc32 = (mDNSu32)mDNSPlatformUTC();
    e8819aa8:	7f2160ef          	jal	ra,e883029a <mDNSPlatformUTC>
    if (utc32 == (unsigned)-1) { LogMsg("ERROR: DNSDigest_SignMessage - mDNSPlatformUTC returned bad time -1"); *end = mDNSNULL; }
    e8819aac:	0005071b          	sext.w	a4,a0
    e8819ab0:	57fd                	li	a5,-1
    utc32 = (mDNSu32)mDNSPlatformUTC();
    e8819ab2:	892a                	mv	s2,a0
    if (utc32 == (unsigned)-1) { LogMsg("ERROR: DNSDigest_SignMessage - mDNSPlatformUTC returned bad time -1"); *end = mDNSNULL; }
    e8819ab4:	00f71b63          	bne	a4,a5,e8819aca <DNSDigest_SignMessage+0x15e>
    e8819ab8:	0008a597          	auipc	a1,0x8a
    e8819abc:	b6058593          	addi	a1,a1,-1184 # e88a3618 <zerov6Addr+0x30>
    e8819ac0:	4501                	li	a0,0
    e8819ac2:	1eb150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8819ac6:	0009b023          	sd	zero,0(s3)
    utc48[2] = (mDNSu8)((utc32 >> 24) & 0xff);
    utc48[3] = (mDNSu8)((utc32 >> 16) & 0xff);
    utc48[4] = (mDNSu8)((utc32 >>  8) & 0xff);
    utc48[5] = (mDNSu8)( utc32        & 0xff);

    mDNSPlatformMemCopy(rdata, utc48, 6);
    e8819aca:	8522                	mv	a0,s0
    e8819acc:	9009190b          	revw	s2,s2
    e8819ad0:	4619                	li	a2,6
    e8819ad2:	082c                	addi	a1,sp,24
    utc48[2] = (mDNSu8)((utc32 >> 24) & 0xff);
    e8819ad4:	01212d23          	sw	s2,26(sp)
    utc48[0] = 0;
    e8819ad8:	00011c23          	sh	zero,24(sp)
    mDNSPlatformMemCopy(rdata, utc48, 6);
    e8819adc:	7c5150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    // finish the message & tsig var hash
    MD5_Final(digest, &c);

    // perform outer MD5 (outer key pad, inner digest)
    MD5_Init(&c);
    MD5_Update(&c, info->keydata_opad, HMAC_LEN);
    e8819ae0:	6905                	lui	s2,0x1
    e8819ae2:	4619                	li	a2,6
    e8819ae4:	082c                	addi	a1,sp,24
    e8819ae6:	1808                	addi	a0,sp,48
    e8819ae8:	c33ff0ef          	jal	ra,e881971a <MD5_Update.part.0>
    rdata[0] = (mDNSu8)((300 >> 8)  & 0xff);
    e8819aec:	678d                	lui	a5,0x3
    e8819aee:	85a2                	mv	a1,s0
    e8819af0:	c017879b          	addiw	a5,a5,-1023
    e8819af4:	2865d78b          	shib	a5,(a1),6,0
    if (len==0) return 1;
    e8819af8:	4609                	li	a2,2
    e8819afa:	1808                	addi	a0,sp,48
    e8819afc:	c1fff0ef          	jal	ra,e881971a <MD5_Update.part.0>
    buf.b[0] = (mDNSu8)((tcode >> 8) & 0xff);
    e8819b00:	008b1793          	slli	a5,s6,0x8
    e8819b04:	5c8b3b0b          	extu	s6,s6,23,8
    e8819b08:	0167eb33          	or	s6,a5,s6
    e8819b0c:	4609                	li	a2,2
    e8819b0e:	080c                	addi	a1,sp,16
    e8819b10:	1808                	addi	a0,sp,48
    e8819b12:	01611823          	sh	s6,16(sp)
    if (len==0) return 1;
    e8819b16:	c05ff0ef          	jal	ra,e881971a <MD5_Update.part.0>
    buf.NotAnInteger = 0;
    e8819b1a:	00011823          	sh	zero,16(sp)
    if (len==0) return 1;
    e8819b1e:	4609                	li	a2,2
    e8819b20:	080c                	addi	a1,sp,16
    e8819b22:	1808                	addi	a0,sp,48
    e8819b24:	bf7ff0ef          	jal	ra,e881971a <MD5_Update.part.0>
    MD5_Final(digest, &c);
    e8819b28:	180c                	addi	a1,sp,48
    e8819b2a:	1008                	addi	a0,sp,32
    e8819b2c:	93eff0ef          	jal	ra,e8818c6a <MD5_Final>
    MD5_Init(&c);
    e8819b30:	1808                	addi	a0,sp,48
    e8819b32:	f36fe0ef          	jal	ra,e8818268 <MD5_Init>
    MD5_Update(&c, info->keydata_opad, HMAC_LEN);
    e8819b36:	7d690593          	addi	a1,s2,2006 # 17d6 <memcmp-0xe87fe82a>
    e8819b3a:	04000613          	li	a2,64
    e8819b3e:	95d6                	add	a1,a1,s5
    e8819b40:	1808                	addi	a0,sp,48
    e8819b42:	bd9ff0ef          	jal	ra,e881971a <MD5_Update.part.0>
    if (len==0) return 1;
    e8819b46:	4641                	li	a2,16
    e8819b48:	100c                	addi	a1,sp,32
    e8819b4a:	1808                	addi	a0,sp,48
    e8819b4c:	bcfff0ef          	jal	ra,e881971a <MD5_Update.part.0>
    MD5_Update(&c, digest, MD5_LEN);
    MD5_Final(digest, &c);
    e8819b50:	180c                	addi	a1,sp,48
    e8819b52:	1008                	addi	a0,sp,32
    e8819b54:	916ff0ef          	jal	ra,e8818c6a <MD5_Final>

    // set remaining rdata fields
    rdata[0] = (mDNSu8)((MD5_LEN >> 8)  & 0xff);
    e8819b58:	01241423          	sh	s2,8(s0)
    rdata[1] = (mDNSu8)( MD5_LEN        & 0xff);
    rdata += sizeof(mDNSOpaque16);
    mDNSPlatformMemCopy(rdata, digest, MD5_LEN);                          // MAC
    e8819b5c:	00a40513          	addi	a0,s0,10
    e8819b60:	4641                	li	a2,16
    e8819b62:	100c                	addi	a1,sp,32
    e8819b64:	73d150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    rdata += MD5_LEN;
    rdata[0] = msg->h.id.b[0];                                            // original ID
    e8819b68:	0004c783          	lbu	a5,0(s1)
    rdata[4] = 0;                                                         // other data len
    rdata[5] = 0;
    rdata += 6;

    tsig.resrec.rdlength = (mDNSu16)(rdata - tsig.resrec.rdata->u.data);
    *end = PutResourceRecordTTLJumbo(msg, ptr, &numAdditionals, &tsig.resrec, 0);
    e8819b6c:	4701                	li	a4,0
    e8819b6e:	0934                	addi	a3,sp,152
    rdata[0] = msg->h.id.b[0];                                            // original ID
    e8819b70:	00f40d23          	sb	a5,26(s0)
    rdata[1] = msg->h.id.b[1];
    e8819b74:	0014c783          	lbu	a5,1(s1)
    rdata[2] = (mDNSu8)((tcode >> 8) & 0xff);
    e8819b78:	01641e23          	sh	s6,28(s0)
    rdata[4] = 0;                                                         // other data len
    e8819b7c:	00041f23          	sh	zero,30(s0)
    rdata[1] = msg->h.id.b[1];
    e8819b80:	00f40da3          	sb	a5,27(s0)
    tsig.resrec.rdlength = (mDNSu16)(rdata - tsig.resrec.rdata->u.data);
    e8819b84:	678e                	ld	a5,192(sp)
    *end = PutResourceRecordTTLJumbo(msg, ptr, &numAdditionals, &tsig.resrec, 0);
    e8819b86:	01610613          	addi	a2,sp,22
    e8819b8a:	85d2                	mv	a1,s4
    tsig.resrec.rdlength = (mDNSu16)(rdata - tsig.resrec.rdata->u.data);
    e8819b8c:	8c1d                	sub	s0,s0,a5
    *end = PutResourceRecordTTLJumbo(msg, ptr, &numAdditionals, &tsig.resrec, 0);
    e8819b8e:	6789                	lui	a5,0x2
    e8819b90:	2f878793          	addi	a5,a5,760 # 22f8 <memcmp-0xe87fdd08>
    tsig.resrec.rdlength = (mDNSu16)(rdata - tsig.resrec.rdata->u.data);
    e8819b94:	0471                	addi	s0,s0,28
    *end = PutResourceRecordTTLJumbo(msg, ptr, &numAdditionals, &tsig.resrec, 0);
    e8819b96:	97a6                	add	a5,a5,s1
    e8819b98:	8526                	mv	a0,s1
    tsig.resrec.rdlength = (mDNSu16)(rdata - tsig.resrec.rdata->u.data);
    e8819b9a:	0a811223          	sh	s0,164(sp)
    *end = PutResourceRecordTTLJumbo(msg, ptr, &numAdditionals, &tsig.resrec, 0);
    e8819b9e:	aa3fc0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e8819ba2:	00a9b023          	sd	a0,0(s3)
    if (!*end) { LogMsg("ERROR: DNSDigest_SignMessage - could not put TSIG"); *end = mDNSNULL; return; }
    e8819ba6:	e131                	bnez	a0,e8819bea <DNSDigest_SignMessage+0x27e>
    e8819ba8:	0008a597          	auipc	a1,0x8a
    e8819bac:	ab858593          	addi	a1,a1,-1352 # e88a3660 <zerov6Addr+0x78>
    e8819bb0:	0fd150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8819bb4:	0009b023          	sd	zero,0(s3)

    // Write back updated numAdditionals value
    countPtr[0] = (mDNSu8)(numAdditionals >> 8);
    countPtr[1] = (mDNSu8)(numAdditionals &  0xFF);
}
    e8819bb8:	4d813083          	ld	ra,1240(sp)
    e8819bbc:	4d013403          	ld	s0,1232(sp)
    e8819bc0:	4c813483          	ld	s1,1224(sp)
    e8819bc4:	4c013903          	ld	s2,1216(sp)
    e8819bc8:	4b813983          	ld	s3,1208(sp)
    e8819bcc:	4b013a03          	ld	s4,1200(sp)
    e8819bd0:	4a813a83          	ld	s5,1192(sp)
    e8819bd4:	4a013b03          	ld	s6,1184(sp)
    e8819bd8:	4e010113          	addi	sp,sp,1248
    e8819bdc:	8082                	ret
    AssignDomainName(&tsig.namestorage, &info->keyname);
    e8819bde:	28010823          	sb	zero,656(sp)
    e8819be2:	bd15                	j	e8819a16 <DNSDigest_SignMessage+0xaa>
    AssignDomainName(&tsig.resrec.rdata->u.name, &HMAC_MD5_AlgName);
    e8819be4:	00050223          	sb	zero,4(a0)
    e8819be8:	bd59                	j	e8819a7e <DNSDigest_SignMessage+0x112>
    countPtr[0] = (mDNSu8)(numAdditionals >> 8);
    e8819bea:	01615783          	lhu	a5,22(sp)
    e8819bee:	0087971b          	slliw	a4,a5,0x8
    e8819bf2:	5c87b78b          	extu	a5,a5,23,8
    e8819bf6:	8fd9                	or	a5,a5,a4
    e8819bf8:	00f49523          	sh	a5,10(s1)
    e8819bfc:	bf75                	j	e8819bb8 <DNSDigest_SignMessage+0x24c>

00000000e8819bfe <mDNSPlatformSourceAddrForDest>:
typedef unsigned int socklen_t;
#endif

// Bind a UDP socket to find the source address to a destination
mDNSexport void mDNSPlatformSourceAddrForDest(mDNSAddr *const src, const mDNSAddr *const dst)
{
    e8819bfe:	715d                	addi	sp,sp,-80
    union { struct sockaddr s; struct sockaddr_in a4; struct sockaddr_in6 a6; } addr;
    socklen_t len = sizeof(addr);
    e8819c00:	47f1                	li	a5,28
{
    e8819c02:	e0a2                	sd	s0,64(sp)
    e8819c04:	fc26                	sd	s1,56(sp)
    e8819c06:	842e                	mv	s0,a1
    e8819c08:	84aa                	mv	s1,a0
    socklen_t inner_len = 0;
    int sock = socket(AF_INET, SOCK_DGRAM, 0);
    e8819c0a:	4601                	li	a2,0
    e8819c0c:	4589                	li	a1,2
    e8819c0e:	4509                	li	a0,2
    socklen_t len = sizeof(addr);
    e8819c10:	c63e                	sw	a5,12(sp)
{
    e8819c12:	e486                	sd	ra,72(sp)
    e8819c14:	f84a                	sd	s2,48(sp)
    int sock = socket(AF_INET, SOCK_DGRAM, 0);
    e8819c16:	00a6c0ef          	jal	ra,e8885c20 <lwip_socket>
    src->type = mDNSAddrType_None;
    e8819c1a:	0004a023          	sw	zero,0(s1)
    if (sock == -1) return;
    e8819c1e:	57fd                	li	a5,-1
    e8819c20:	04f50863          	beq	a0,a5,e8819c70 <mDNSPlatformSourceAddrForDest+0x72>
    if (dst->type == mDNSAddrType_IPv4)
    e8819c24:	401c                	lw	a5,0(s0)
    e8819c26:	4711                	li	a4,4
    e8819c28:	892a                	mv	s2,a0
    e8819c2a:	04e79963          	bne	a5,a4,e8819c7c <mDNSPlatformSourceAddrForDest+0x7e>
    {
        inner_len = sizeof(addr.a4);
        #ifndef NOT_HAVE_SA_LEN
        addr.a4.sin_len         = inner_len;
    e8819c2e:	67c1                	lui	a5,0x10
    e8819c30:	2107879b          	addiw	a5,a5,528
    e8819c34:	c83e                	sw	a5,16(sp)
        #endif
        addr.a4.sin_family      = AF_INET;
        addr.a4.sin_port        = 1;    // Not important, any port will do
        addr.a4.sin_addr.s_addr = dst->ip.v4.NotAnInteger;
    e8819c36:	405c                	lw	a5,4(s0)
        inner_len = sizeof(addr.a4);
    e8819c38:	4641                	li	a2,16
        addr.a4.sin_addr.s_addr = dst->ip.v4.NotAnInteger;
    e8819c3a:	ca3e                	sw	a5,20(sp)
        addr.a6.sin6_addr     = *(struct in6_addr*)&dst->ip.v6;
        addr.a6.sin6_scope_id = 0;
    }
    else return;

    if ((connect(sock, &addr.s, inner_len)) < 0)
    e8819c3c:	080c                	addi	a1,sp,16
    e8819c3e:	854a                	mv	a0,s2
    e8819c40:	6e46b0ef          	jal	ra,e8885324 <lwip_connect>
    e8819c44:	04055c63          	bgez	a0,e8819c9c <mDNSPlatformSourceAddrForDest+0x9e>
    { LogMsg("mDNSPlatformSourceAddrForDest: connect %#a failed errno %d (%s)", dst, lwip_errno, strerrno(lwip_errno)); goto exit; }
    e8819c48:	000cb797          	auipc	a5,0xcb
    e8819c4c:	9e078793          	addi	a5,a5,-1568 # e88e4628 <lwip_errno>
    e8819c50:	4394                	lw	a3,0(a5)
    e8819c52:	0008a717          	auipc	a4,0x8a
    e8819c56:	ace70713          	addi	a4,a4,-1330 # e88a3720 <end.8789+0x78>
    e8819c5a:	8622                	mv	a2,s0
    e8819c5c:	0008a597          	auipc	a1,0x8a
    e8819c60:	acc58593          	addi	a1,a1,-1332 # e88a3728 <end.8789+0x80>
    e8819c64:	4501                	li	a0,0
    e8819c66:	047150ef          	jal	ra,e882f4ac <LogMsgWithLevel>

    src->type = dst->type;
    if (dst->type == mDNSAddrType_IPv4) src->ip.v4.NotAnInteger = addr.a4.sin_addr.s_addr;
    else src->ip.v6 = *(mDNSv6Addr*)&addr.a6.sin6_addr;
exit:
    close(sock);
    e8819c6a:	854a                	mv	a0,s2
    e8819c6c:	5366b0ef          	jal	ra,e88851a2 <lwip_close>
}
    e8819c70:	60a6                	ld	ra,72(sp)
    e8819c72:	6406                	ld	s0,64(sp)
    e8819c74:	74e2                	ld	s1,56(sp)
    e8819c76:	7942                	ld	s2,48(sp)
    e8819c78:	6161                	addi	sp,sp,80
    e8819c7a:	8082                	ret
    else if (dst->type == mDNSAddrType_IPv6)
    e8819c7c:	4719                	li	a4,6
    e8819c7e:	fee799e3          	bne	a5,a4,e8819c70 <mDNSPlatformSourceAddrForDest+0x72>
        addr.a6.sin6_len      = inner_len;
    e8819c82:	67c5                	lui	a5,0x11
    e8819c84:	a1c78793          	addi	a5,a5,-1508 # 10a1c <memcmp-0xe87ef5e4>
    e8819c88:	e83e                	sd	a5,16(sp)
        addr.a6.sin6_addr     = *(struct in6_addr*)&dst->ip.v6;
    e8819c8a:	00443783          	ld	a5,4(s0)
        addr.a6.sin6_scope_id = 0;
    e8819c8e:	d402                	sw	zero,40(sp)
        inner_len = sizeof(addr.a6);
    e8819c90:	4671                	li	a2,28
        addr.a6.sin6_addr     = *(struct in6_addr*)&dst->ip.v6;
    e8819c92:	ec3e                	sd	a5,24(sp)
    e8819c94:	00c43783          	ld	a5,12(s0)
    e8819c98:	f03e                	sd	a5,32(sp)
        addr.a6.sin6_scope_id = 0;
    e8819c9a:	b74d                	j	e8819c3c <mDNSPlatformSourceAddrForDest+0x3e>
    if ((getsockname(sock, &addr.s, &len)) < 0)
    e8819c9c:	0070                	addi	a2,sp,12
    e8819c9e:	080c                	addi	a1,sp,16
    e8819ca0:	854a                	mv	a0,s2
    e8819ca2:	4146c0ef          	jal	ra,e88860b6 <lwip_getsockname>
    e8819ca6:	02055363          	bgez	a0,e8819ccc <mDNSPlatformSourceAddrForDest+0xce>
    { LogMsg("mDNSPlatformSourceAddrForDest: getsockname failed errno %d (%s)", lwip_errno, strerrno(lwip_errno)); goto exit; }
    e8819caa:	000cb797          	auipc	a5,0xcb
    e8819cae:	97e78793          	addi	a5,a5,-1666 # e88e4628 <lwip_errno>
    e8819cb2:	4390                	lw	a2,0(a5)
    e8819cb4:	0008a697          	auipc	a3,0x8a
    e8819cb8:	a6c68693          	addi	a3,a3,-1428 # e88a3720 <end.8789+0x78>
    e8819cbc:	0008a597          	auipc	a1,0x8a
    e8819cc0:	aac58593          	addi	a1,a1,-1364 # e88a3768 <end.8789+0xc0>
    e8819cc4:	4501                	li	a0,0
    e8819cc6:	7e6150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8819cca:	b745                	j	e8819c6a <mDNSPlatformSourceAddrForDest+0x6c>
    src->type = dst->type;
    e8819ccc:	401c                	lw	a5,0(s0)
    if (dst->type == mDNSAddrType_IPv4) src->ip.v4.NotAnInteger = addr.a4.sin_addr.s_addr;
    e8819cce:	4711                	li	a4,4
    src->type = dst->type;
    e8819cd0:	c09c                	sw	a5,0(s1)
    if (dst->type == mDNSAddrType_IPv4) src->ip.v4.NotAnInteger = addr.a4.sin_addr.s_addr;
    e8819cd2:	00e79563          	bne	a5,a4,e8819cdc <mDNSPlatformSourceAddrForDest+0xde>
    e8819cd6:	47d2                	lw	a5,20(sp)
    e8819cd8:	c0dc                	sw	a5,4(s1)
    e8819cda:	bf41                	j	e8819c6a <mDNSPlatformSourceAddrForDest+0x6c>
    else src->ip.v6 = *(mDNSv6Addr*)&addr.a6.sin6_addr;
    e8819cdc:	67e2                	ld	a5,24(sp)
    e8819cde:	00f4b223          	sd	a5,4(s1)
    e8819ce2:	7782                	ld	a5,32(sp)
    e8819ce4:	00f4b623          	sd	a5,12(s1)
    e8819ce8:	b749                	j	e8819c6a <mDNSPlatformSourceAddrForDest+0x6c>

00000000e8819cea <InitializeNSEC3Record>:
};

typedef struct AnonInfoResourceRecord_struct AnonInfoResourceRecord;

mDNSlocal mDNSBool InitializeNSEC3Record(ResourceRecord *rr, const mDNSu8 *AnonData, int len, mDNSu32 salt)
{
    e8819cea:	7115                	addi	sp,sp,-224
    e8819cec:	ed86                	sd	ra,216(sp)
    e8819cee:	e5a6                	sd	s1,200(sp)
    e8819cf0:	e1ca                	sd	s2,192(sp)
    e8819cf2:	e9a2                	sd	s0,208(sp)
    const mDNSu8 *ptr;
    rdataNSEC3 *nsec3 = (rdataNSEC3 *)rr->rdata->u.data;
    e8819cf4:	7500                	ld	s0,40(a0)
    // Construct the RDATA first and construct the owner name based on that.
    ptr = (const mDNSu8 *)&salt;
    debugf("InitializeNSEC3Record: %x%x%x%x, name %##s", ptr[0], ptr[1], ptr[2], ptr[3], rr->name->c);

    // Set the RDATA
    nsec3->alg = SHA1_DIGEST_TYPE;
    e8819cf6:	4785                	li	a5,1
{
    e8819cf8:	84aa                	mv	s1,a0
    nsec3->alg = SHA1_DIGEST_TYPE;
    e8819cfa:	00f41223          	sh	a5,4(s0)
    nsec3->flags = 0;
    nsec3->iterations = swap16(iter);
    e8819cfe:	4505                	li	a0,1
{
    e8819d00:	892e                	mv	s2,a1
    e8819d02:	e432                	sd	a2,8(sp)
    e8819d04:	e036                	sd	a3,0(sp)
    nsec3->iterations = swap16(iter);
    e8819d06:	9a4f90ef          	jal	ra,e8812eaa <swap16>
    e8819d0a:	00a41323          	sh	a0,6(s0)
    nsec3->saltLength = 4;
    e8819d0e:	4791                	li	a5,4
    tmp = (mDNSu8 *)&nsec3->salt;
    *tmp++ = ptr[0];
    e8819d10:	6682                	ld	a3,0(sp)
    nsec3->saltLength = 4;
    e8819d12:	00f40423          	sb	a5,8(s0)
    *tmp++ = ptr[1];
    *tmp++ = ptr[2];
    *tmp++ = ptr[3];

    // hashLength, nxt, bitmap
    *tmp++ = SHA1_HASH_LENGTH;    // hash length
    e8819d16:	47d1                	li	a5,20
    e8819d18:	00f406a3          	sb	a5,13(s0)
    nxt = tmp;
    tmp += SHA1_HASH_LENGTH;
    *tmp++ = 0; // window number
    e8819d1c:	6789                	lui	a5,0x2
    *tmp++ = ptr[0];
    e8819d1e:	00d424a3          	sw	a3,9(s0)
    *tmp++ = 0; // window number
    e8819d22:	02f41123          	sh	a5,34(s0)
    *tmp++ = NSEC_MCAST_WINDOW_SIZE; // window length
    mDNSPlatformMemZero(tmp, NSEC_MCAST_WINDOW_SIZE);
    e8819d26:	02000593          	li	a1,32
    e8819d2a:	02440513          	addi	a0,s0,36
    e8819d2e:	5c9150ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    tmp[kDNSType_PTR >> 3] |= 128 >> (kDNSType_PTR & 7);
    e8819d32:	02544783          	lbu	a5,37(s0)

    // Hash the base service name + salt + AnonData
    if (!NSEC3HashName(rr->name, nsec3, AnonData, len, hashName, &hlen))
    e8819d36:	6622                	ld	a2,8(sp)
    e8819d38:	1018                	addi	a4,sp,32
    tmp[kDNSType_PTR >> 3] |= 128 >> (kDNSType_PTR & 7);
    e8819d3a:	0087e793          	ori	a5,a5,8
    e8819d3e:	02f402a3          	sb	a5,37(s0)
    if (!NSEC3HashName(rr->name, nsec3, AnonData, len, hashName, &hlen))
    e8819d42:	7088                	ld	a0,32(s1)
    e8819d44:	86b2                	mv	a3,a2
    e8819d46:	087c                	addi	a5,sp,28
    e8819d48:	864a                	mv	a2,s2
    e8819d4a:	00440593          	addi	a1,s0,4
    e8819d4e:	c9df90ef          	jal	ra,e88139ea <NSEC3HashName>
    e8819d52:	ed19                	bnez	a0,e8819d70 <InitializeNSEC3Record+0x86>
    {
        LogMsg("InitializeNSEC3Record: NSEC3HashName failed for %##s", rr->name->c);
    e8819d54:	7090                	ld	a2,32(s1)
    e8819d56:	0008a597          	auipc	a1,0x8a
    e8819d5a:	bea58593          	addi	a1,a1,-1046 # e88a3940 <end.8789+0x298>
    e8819d5e:	74e150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mDNSfalse;
    }
    if (hlen != SHA1_HASH_LENGTH)
    {
        LogMsg("InitializeNSEC3Record: hlen wrong %d", hlen);
        return mDNSfalse;
    e8819d62:	4501                	li	a0,0
    }
    mDNSPlatformMemCopy(nxt, hashName, hlen);

    return mDNStrue;
}
    e8819d64:	60ee                	ld	ra,216(sp)
    e8819d66:	644e                	ld	s0,208(sp)
    e8819d68:	64ae                	ld	s1,200(sp)
    e8819d6a:	690e                	ld	s2,192(sp)
    e8819d6c:	612d                	addi	sp,sp,224
    e8819d6e:	8082                	ret
    if (hlen != SHA1_HASH_LENGTH)
    e8819d70:	4672                	lw	a2,28(sp)
    e8819d72:	47d1                	li	a5,20
    e8819d74:	00f60a63          	beq	a2,a5,e8819d88 <InitializeNSEC3Record+0x9e>
        LogMsg("InitializeNSEC3Record: hlen wrong %d", hlen);
    e8819d78:	0008a597          	auipc	a1,0x8a
    e8819d7c:	c0058593          	addi	a1,a1,-1024 # e88a3978 <end.8789+0x2d0>
    e8819d80:	4501                	li	a0,0
    e8819d82:	72a150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8819d86:	bff1                	j	e8819d62 <InitializeNSEC3Record+0x78>
    mDNSPlatformMemCopy(nxt, hashName, hlen);
    e8819d88:	00e40513          	addi	a0,s0,14
    e8819d8c:	4651                	li	a2,20
    e8819d8e:	100c                	addi	a1,sp,32
    e8819d90:	511150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    return mDNStrue;
    e8819d94:	4505                	li	a0,1
    e8819d96:	b7f9                	j	e8819d64 <InitializeNSEC3Record+0x7a>

00000000e8819d98 <FindMatchingNSEC3ForName.isra.1>:
}

// Find a matching NSEC3 record for the name. We parse the questions and the records in the packet in order.
// Similarly we also parse the NSEC3 records in order and this mapping to the questions and records
// respectively.
mDNSlocal CacheRecord *FindMatchingNSEC3ForName(mDNS *const m, CacheRecord **nsec3, const domainname *name)
    e8819d98:	1101                	addi	sp,sp,-32
    e8819d9a:	f891540b          	sdd	s0,s1,(sp),0,4
    e8819d9e:	e84a                	sd	s2,16(sp)
    e8819da0:	ec06                	sd	ra,24(sp)
    CacheRecord *cr;
    CacheRecord **prev = nsec3;
    
    (void) m;

    for (cr = *nsec3; cr; cr = cr->next)
    e8819da2:	6100                	ld	s0,0(a0)
mDNSlocal CacheRecord *FindMatchingNSEC3ForName(mDNS *const m, CacheRecord **nsec3, const domainname *name)
    e8819da4:	84aa                	mv	s1,a0
    e8819da6:	892e                	mv	s2,a1
    for (cr = *nsec3; cr; cr = cr->next)
    e8819da8:	c811                	beqz	s0,e8819dbc <FindMatchingNSEC3ForName.isra.1+0x24>
    {
        if (SameDomainName(cr->resrec.name, name))
    e8819daa:	7408                	ld	a0,40(s0)
    e8819dac:	85ca                	mv	a1,s2
    e8819dae:	a9cf90ef          	jal	ra,e881304a <SameDomainName>
    e8819db2:	601c                	ld	a5,0(s0)
    e8819db4:	c919                	beqz	a0,e8819dca <FindMatchingNSEC3ForName.isra.1+0x32>
        {
            debugf("FindMatchingNSEC3ForName: NSEC3 record %s matched %##s", CRDisplayString(m, cr), name->c);
            *prev = cr->next;
    e8819db6:	e09c                	sd	a5,0(s1)
            cr->next = mDNSNULL;
    e8819db8:	00043023          	sd	zero,0(s0)
            return cr;
        }
        prev = &cr->next;
    }
    return mDNSNULL;
}
    e8819dbc:	8522                	mv	a0,s0
    e8819dbe:	60e2                	ld	ra,24(sp)
    e8819dc0:	f891440b          	ldd	s0,s1,(sp),0,4
    e8819dc4:	6942                	ld	s2,16(sp)
    e8819dc6:	6105                	addi	sp,sp,32
    e8819dc8:	8082                	ret
        prev = &cr->next;
    e8819dca:	84a2                	mv	s1,s0
    for (cr = *nsec3; cr; cr = cr->next)
    e8819dcc:	843e                	mv	s0,a5
    e8819dce:	bfe9                	j	e8819da8 <FindMatchingNSEC3ForName.isra.1+0x10>

00000000e8819dd0 <AllocateAnonInfo>:
{
    e8819dd0:	711d                	addi	sp,sp,-96
    e8819dd2:	fc4e                	sd	s3,56(sp)
    e8819dd4:	89aa                	mv	s3,a0
    ai = (AnonymousInfo *)mDNSPlatformMemAllocate(sizeof(AnonymousInfo));
    e8819dd6:	02000513          	li	a0,32
{
    e8819dda:	e8a2                	sd	s0,80(sp)
    e8819ddc:	e4a6                	sd	s1,72(sp)
    e8819dde:	f456                	sd	s5,40(sp)
    e8819de0:	f05a                	sd	s6,32(sp)
    e8819de2:	ec86                	sd	ra,88(sp)
    e8819de4:	e0ca                	sd	s2,64(sp)
    e8819de6:	f852                	sd	s4,48(sp)
    e8819de8:	ec5e                	sd	s7,24(sp)
    e8819dea:	e862                	sd	s8,16(sp)
    e8819dec:	8b2e                	mv	s6,a1
    e8819dee:	8ab2                	mv	s5,a2
    e8819df0:	84b6                	mv	s1,a3
    ai = (AnonymousInfo *)mDNSPlatformMemAllocate(sizeof(AnonymousInfo));
    e8819df2:	470160ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8819df6:	842a                	mv	s0,a0
    if (!ai)
    e8819df8:	c95d                	beqz	a0,e8819eae <AllocateAnonInfo+0xde>
    mDNSPlatformMemZero(ai, sizeof(AnonymousInfo));
    e8819dfa:	02000593          	li	a1,32
    e8819dfe:	4f9150ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    if (rr)
    e8819e02:	c4f1                	beqz	s1,e8819ece <AllocateAnonInfo+0xfe>
    if (rr->rdlength < MCAST_NSEC3_RDLENGTH)
    e8819e04:	00c4d603          	lhu	a2,12(s1)
    e8819e08:	03f00793          	li	a5,63
    e8819e0c:	02c7e063          	bltu	a5,a2,e8819e2c <AllocateAnonInfo+0x5c>
        LogMsg("CopyNSEC3ResourceRecord: rdlength %d smaller than MCAST_NSEC3_RDLENGTH %d", rr->rdlength, MCAST_NSEC3_RDLENGTH);
    e8819e10:	04000693          	li	a3,64
    e8819e14:	0008a597          	auipc	a1,0x8a
    e8819e18:	99c58593          	addi	a1,a1,-1636 # e88a37b0 <end.8789+0x108>
    e8819e1c:	4501                	li	a0,0
    e8819e1e:	68e150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNSPlatformMemFree(ai);
    e8819e22:	8522                	mv	a0,s0
    e8819e24:	45e160ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
        return mDNSNULL;
    e8819e28:	4401                	li	s0,0
    e8819e2a:	a051                	j	e8819eae <AllocateAnonInfo+0xde>
    neededLen = rr->rdlength + DomainNameLength(rr->name);
    e8819e2c:	7088                	ld	a0,32(s1)
    e8819e2e:	e432                	sd	a2,8(sp)
    e8819e30:	10050593          	addi	a1,a0,256
    e8819e34:	b18f90ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8819e38:	6622                	ld	a2,8(sp)
    extraLen = (neededLen > sizeof(RDataBody)) ? (neededLen - sizeof(RDataBody)) : 0;
    e8819e3a:	10800793          	li	a5,264
    neededLen = rr->rdlength + DomainNameLength(rr->name);
    e8819e3e:	00c5073b          	addw	a4,a0,a2
    e8819e42:	853a                	mv	a0,a4
    extraLen = (neededLen > sizeof(RDataBody)) ? (neededLen - sizeof(RDataBody)) : 0;
    e8819e44:	00f77463          	bgeu	a4,a5,e8819e4c <AllocateAnonInfo+0x7c>
    e8819e48:	10800513          	li	a0,264
    anonRR = (AnonInfoResourceRecord *)mDNSPlatformMemAllocate(sizeof(AnonInfoResourceRecord) + extraLen);
    e8819e4c:	0485051b          	addiw	a0,a0,72
    e8819e50:	412160ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8819e54:	892a                	mv	s2,a0
    if (!anonRR)
    e8819e56:	d571                	beqz	a0,e8819e22 <AllocateAnonInfo+0x52>
    anonRR->resrec = *rr;
    e8819e58:	04000613          	li	a2,64
    e8819e5c:	85a6                	mv	a1,s1
    e8819e5e:	a0ae60ef          	jal	ra,e8800068 <memcpy>
    mDNSPlatformMemCopy(anonRR->rdatastorage.u.data, rr->rdata->u.data, rr->rdlength);
    e8819e62:	04490993          	addi	s3,s2,68
    anonRR->rdatastorage.MaxRDLength = rr->rdlength;
    e8819e66:	00c4d603          	lhu	a2,12(s1)
    mDNSPlatformMemCopy(anonRR->rdatastorage.u.data, rr->rdata->u.data, rr->rdlength);
    e8819e6a:	854e                	mv	a0,s3
    anonRR->rdatastorage.MaxRDLength = rr->rdlength;
    e8819e6c:	04c91023          	sh	a2,64(s2)
    mDNSPlatformMemCopy(anonRR->rdatastorage.u.data, rr->rdata->u.data, rr->rdlength);
    e8819e70:	748c                	ld	a1,40(s1)
    e8819e72:	0591                	addi	a1,a1,4
    e8819e74:	42d150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    name = (domainname *)(anonRR->rdatastorage.u.data + rr->rdlength);
    e8819e78:	00c4da83          	lhu	s5,12(s1)
    AssignDomainName(name, rr->name);
    e8819e7c:	7088                	ld	a0,32(s1)
    name = (domainname *)(anonRR->rdatastorage.u.data + rr->rdlength);
    e8819e7e:	01598a33          	add	s4,s3,s5
    AssignDomainName(name, rr->name);
    e8819e82:	10050593          	addi	a1,a0,256
    e8819e86:	ac6f90ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8819e8a:	0005061b          	sext.w	a2,a0
    e8819e8e:	10000793          	li	a5,256
    e8819e92:	02c7eb63          	bltu	a5,a2,e8819ec8 <AllocateAnonInfo+0xf8>
    e8819e96:	708c                	ld	a1,32(s1)
    e8819e98:	8552                	mv	a0,s4
    e8819e9a:	407150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    anonRR->resrec.rdata = &anonRR->rdatastorage;
    e8819e9e:	04090793          	addi	a5,s2,64
    anonRR->resrec.name = name;
    e8819ea2:	03493023          	sd	s4,32(s2)
    anonRR->resrec.rdata = &anonRR->rdatastorage;
    e8819ea6:	02f93423          	sd	a5,40(s2)
    si->nsec3RR = (ResourceRecord *)anonRR;
    e8819eaa:	01243823          	sd	s2,16(s0)
}
    e8819eae:	8522                	mv	a0,s0
    e8819eb0:	60e6                	ld	ra,88(sp)
    e8819eb2:	6446                	ld	s0,80(sp)
    e8819eb4:	64a6                	ld	s1,72(sp)
    e8819eb6:	6906                	ld	s2,64(sp)
    e8819eb8:	79e2                	ld	s3,56(sp)
    e8819eba:	7a42                	ld	s4,48(sp)
    e8819ebc:	7aa2                	ld	s5,40(sp)
    e8819ebe:	7b02                	ld	s6,32(sp)
    e8819ec0:	6be2                	ld	s7,24(sp)
    e8819ec2:	6c42                	ld	s8,16(sp)
    e8819ec4:	6125                	addi	sp,sp,96
    e8819ec6:	8082                	ret
    AssignDomainName(name, rr->name);
    e8819ec8:	0159d00b          	srb	zero,s3,s5,0
    e8819ecc:	bfc9                	j	e8819e9e <AllocateAnonInfo+0xce>
    ai->salt = mDNSRandom(0xFFFFFFFF);
    e8819ece:	557d                	li	a0,-1
    e8819ed0:	838f90ef          	jal	ra,e8812f08 <mDNSRandom>
    e8819ed4:	c448                	sw	a0,12(s0)
    ai->AnonData = mDNSPlatformMemAllocate(len);
    e8819ed6:	000a861b          	sext.w	a2,s5
    e8819eda:	8532                	mv	a0,a2
    e8819edc:	e432                	sd	a2,8(sp)
    e8819ede:	384160ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8819ee2:	e008                	sd	a0,0(s0)
    if (!ai->AnonData)
    e8819ee4:	6622                	ld	a2,8(sp)
    e8819ee6:	dd15                	beqz	a0,e8819e22 <AllocateAnonInfo+0x52>
    mDNSPlatformMemCopy(ai->AnonData, data, len);
    e8819ee8:	85da                	mv	a1,s6
    ai->AnonDataLen = len;
    e8819eea:	01542423          	sw	s5,8(s0)
    mDNSPlatformMemCopy(ai->AnonData, data, len);
    e8819eee:	3b3150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    dlen = DomainNameLength(service);
    e8819ef2:	10098c13          	addi	s8,s3,256
    e8819ef6:	85e2                	mv	a1,s8
    e8819ef8:	854e                	mv	a0,s3
    ai->nsec3RR = ConstructNSEC3Record(service, data, len, ai->salt);
    e8819efa:	00c42b83          	lw	s7,12(s0)
    dlen = DomainNameLength(service);
    e8819efe:	a4ef90ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8819f02:	8a2a                	mv	s4,a0
    rr = mDNSPlatformMemAllocate(sizeof(ResourceRecord) + dlen + sizeof(RData));
    e8819f04:	14c5051b          	addiw	a0,a0,332
    e8819f08:	35a160ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8819f0c:	84aa                	mv	s1,a0
    if (!rr)
    e8819f0e:	c535                	beqz	a0,e8819f7a <AllocateAnonInfo+0x1aa>
    rr->RecordType        = kDNSRecordTypePacketAuth;
    e8819f10:	fa000793          	li	a5,-96
    name = (domainname *)((mDNSu8 *)rr + sizeof(ResourceRecord));
    e8819f14:	892a                	mv	s2,a0
    rr->RecordType        = kDNSRecordTypePacketAuth;
    e8819f16:	1e89578b          	sbia	a5,(s2),8,3
    rr->InterfaceID       = mDNSInterface_Any;
    e8819f1a:	00089797          	auipc	a5,0x89
    e8819f1e:	e4678793          	addi	a5,a5,-442 # e88a2d60 <mDNSInterface_Any>
    e8819f22:	639c                	ld	a5,0(a5)
    rr->rdata             = (RData *)((mDNSu8 *)rr->name + dlen);
    e8819f24:	9a4a                	add	s4,s4,s2
    rr->name              = (const domainname *)name;
    e8819f26:	03253023          	sd	s2,32(a0)
    rr->InterfaceID       = mDNSInterface_Any;
    e8819f2a:	ed1c                	sd	a5,24(a0)
    rr->rrtype            = kDNSType_NSEC3;
    e8819f2c:	67c1                	lui	a5,0x10
    e8819f2e:	0327879b          	addiw	a5,a5,50
    e8819f32:	00f52123          	sw	a5,2(a0)
    rr->rroriginalttl     = kStandardTTL;
    e8819f36:	0008a797          	auipc	a5,0x8a
    e8819f3a:	87278793          	addi	a5,a5,-1934 # e88a37a8 <end.8789+0x100>
    e8819f3e:	639c                	ld	a5,0(a5)
    rr->rDNSServer        = mDNSNULL;
    e8819f40:	02053823          	sd	zero,48(a0)
    rr->rdata             = (RData *)((mDNSu8 *)rr->name + dlen);
    e8819f44:	03453423          	sd	s4,40(a0)
    rr->rroriginalttl     = kStandardTTL;
    e8819f48:	e51c                	sd	a5,8(a0)
    AssignDomainName(name, service);
    e8819f4a:	85e2                	mv	a1,s8
    e8819f4c:	854e                	mv	a0,s3
    e8819f4e:	9fef90ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8819f52:	0005061b          	sext.w	a2,a0
    e8819f56:	10000793          	li	a5,256
    e8819f5a:	02c7e363          	bltu	a5,a2,e8819f80 <AllocateAnonInfo+0x1b0>
    e8819f5e:	85ce                	mv	a1,s3
    e8819f60:	854a                	mv	a0,s2
    e8819f62:	33f150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    if (!InitializeNSEC3Record(rr, AnonData, len, salt))
    e8819f66:	86de                	mv	a3,s7
    e8819f68:	8656                	mv	a2,s5
    e8819f6a:	85da                	mv	a1,s6
    e8819f6c:	8526                	mv	a0,s1
    e8819f6e:	d7dff0ef          	jal	ra,e8819cea <InitializeNSEC3Record>
    e8819f72:	e911                	bnez	a0,e8819f86 <AllocateAnonInfo+0x1b6>
        mDNSPlatformMemFree(rr);
    e8819f74:	8526                	mv	a0,s1
    e8819f76:	30c160ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    ai->nsec3RR = ConstructNSEC3Record(service, data, len, ai->salt);
    e8819f7a:	00043823          	sd	zero,16(s0)
    if (!ai->nsec3RR)
    e8819f7e:	b555                	j	e8819e22 <AllocateAnonInfo+0x52>
    AssignDomainName(name, service);
    e8819f80:	04048023          	sb	zero,64(s1)
    e8819f84:	b7cd                	j	e8819f66 <AllocateAnonInfo+0x196>
    ai->nsec3RR = ConstructNSEC3Record(service, data, len, ai->salt);
    e8819f86:	e804                	sd	s1,16(s0)
    if (!ai->nsec3RR)
    e8819f88:	b71d                	j	e8819eae <AllocateAnonInfo+0xde>

00000000e8819f8a <FreeAnonInfo>:
{
    e8819f8a:	1141                	addi	sp,sp,-16
    e8819f8c:	e022                	sd	s0,0(sp)
    e8819f8e:	e406                	sd	ra,8(sp)
    e8819f90:	842a                	mv	s0,a0
    if (ai->nsec3RR)
    e8819f92:	6908                	ld	a0,16(a0)
    e8819f94:	c119                	beqz	a0,e8819f9a <FreeAnonInfo+0x10>
        mDNSPlatformMemFree(ai->nsec3RR);
    e8819f96:	2ec160ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    if (ai->AnonData)
    e8819f9a:	6008                	ld	a0,0(s0)
    e8819f9c:	c119                	beqz	a0,e8819fa2 <FreeAnonInfo+0x18>
        mDNSPlatformMemFree(ai->AnonData);
    e8819f9e:	2e4160ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    mDNSPlatformMemFree(ai);
    e8819fa2:	8522                	mv	a0,s0
}
    e8819fa4:	6402                	ld	s0,0(sp)
    e8819fa6:	60a2                	ld	ra,8(sp)
    e8819fa8:	0141                	addi	sp,sp,16
    mDNSPlatformMemFree(ai);
    e8819faa:	2d81606f          	j	e8830282 <mDNSPlatformMemFree>

00000000e8819fae <ReInitAnonInfo>:
{
    e8819fae:	1101                	addi	sp,sp,-32
    e8819fb0:	ec06                	sd	ra,24(sp)
    e8819fb2:	e422                	sd	s0,8(sp)
    e8819fb4:	e826                	sd	s1,16(sp)
    if (*AnonInfo)
    e8819fb6:	6100                	ld	s0,0(a0)
    e8819fb8:	c819                	beqz	s0,e8819fce <ReInitAnonInfo+0x20>
    e8819fba:	84aa                	mv	s1,a0
        *AnonInfo = AllocateAnonInfo(name, ai->AnonData, ai->AnonDataLen, mDNSNULL);
    e8819fbc:	4410                	lw	a2,8(s0)
    e8819fbe:	852e                	mv	a0,a1
    e8819fc0:	600c                	ld	a1,0(s0)
    e8819fc2:	4681                	li	a3,0
    e8819fc4:	e0dff0ef          	jal	ra,e8819dd0 <AllocateAnonInfo>
    e8819fc8:	e088                	sd	a0,0(s1)
        if (!(*AnonInfo))
    e8819fca:	e519                	bnez	a0,e8819fd8 <ReInitAnonInfo+0x2a>
            *AnonInfo = ai;
    e8819fcc:	e080                	sd	s0,0(s1)
}
    e8819fce:	60e2                	ld	ra,24(sp)
    e8819fd0:	6422                	ld	s0,8(sp)
    e8819fd2:	64c2                	ld	s1,16(sp)
    e8819fd4:	6105                	addi	sp,sp,32
    e8819fd6:	8082                	ret
            FreeAnonInfo(ai);
    e8819fd8:	8522                	mv	a0,s0
}
    e8819fda:	6422                	ld	s0,8(sp)
    e8819fdc:	60e2                	ld	ra,24(sp)
    e8819fde:	64c2                	ld	s1,16(sp)
    e8819fe0:	6105                	addi	sp,sp,32
            FreeAnonInfo(ai);
    e8819fe2:	fa9ff06f          	j	e8819f8a <FreeAnonInfo>

00000000e8819fe6 <SetAnonData>:
    if (!q->AnonInfo || !rr->AnonInfo)
    e8819fe6:	7134                	ld	a3,96(a0)
    e8819fe8:	7d9c                	ld	a5,56(a1)
    e8819fea:	c291                	beqz	a3,e8819fee <SetAnonData+0x8>
    e8819fec:	eb99                	bnez	a5,e881a002 <SetAnonData+0x1c>
        LogMsg("SetAnonData: question %##s(%p), rr %##s(%p), NULL", q->qname.c, q->AnonInfo, rr->name->c, rr->AnonInfo);
    e8819fee:	7198                	ld	a4,32(a1)
    e8819ff0:	21450613          	addi	a2,a0,532
    e8819ff4:	0008a597          	auipc	a1,0x8a
    e8819ff8:	9ac58593          	addi	a1,a1,-1620 # e88a39a0 <end.8789+0x2f8>
    e8819ffc:	4501                	li	a0,0
    e8819ffe:	4ae1506f          	j	e882f4ac <LogMsgWithLevel>
{
    e881a002:	1101                	addi	sp,sp,-32
    e881a004:	f891540b          	sdd	s0,s1,(sp),0,4
    e881a008:	ec06                	sd	ra,24(sp)
    e881a00a:	e84a                	sd	s2,16(sp)
    e881a00c:	842e                	mv	s0,a1
    e881a00e:	84aa                	mv	s1,a0
    if (ForQuestion)
    e881a010:	478c                	lw	a1,8(a5)
    e881a012:	4698                	lw	a4,8(a3)
    e881a014:	ca29                	beqz	a2,e881a066 <SetAnonData+0x80>
        if (q->AnonInfo->AnonDataLen < rr->AnonInfo->AnonDataLen)
    e881a016:	00b75863          	bge	a4,a1,e881a026 <SetAnonData+0x40>
            mDNSPlatformMemFree(q->AnonInfo->AnonData);
    e881a01a:	6288                	ld	a0,0(a3)
    e881a01c:	266160ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
            q->AnonInfo->AnonData = mDNSNULL;
    e881a020:	70bc                	ld	a5,96(s1)
    e881a022:	0007b023          	sd	zero,0(a5)
        if (!q->AnonInfo->AnonData)
    e881a026:	0604b903          	ld	s2,96(s1)
    e881a02a:	00093783          	ld	a5,0(s2)
    e881a02e:	cf89                	beqz	a5,e881a048 <SetAnonData+0x62>
        mDNSPlatformMemCopy(q->AnonInfo->AnonData, rr->AnonInfo->AnonData, rr->AnonInfo->AnonDataLen);
    e881a030:	7c1c                	ld	a5,56(s0)
    e881a032:	70b8                	ld	a4,96(s1)
    e881a034:	4790                	lw	a2,8(a5)
    e881a036:	638c                	ld	a1,0(a5)
    e881a038:	6308                	ld	a0,0(a4)
    e881a03a:	267150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        q->AnonInfo->AnonDataLen = rr->AnonInfo->AnonDataLen;
    e881a03e:	70bc                	ld	a5,96(s1)
    e881a040:	7c18                	ld	a4,56(s0)
        rr->AnonInfo->AnonDataLen = q->AnonInfo->AnonDataLen;
    e881a042:	4718                	lw	a4,8(a4)
    e881a044:	c798                	sw	a4,8(a5)
    e881a046:	a811                	j	e881a05a <SetAnonData+0x74>
            q->AnonInfo->AnonData = mDNSPlatformMemAllocate(rr->AnonInfo->AnonDataLen);
    e881a048:	7c1c                	ld	a5,56(s0)
    e881a04a:	4788                	lw	a0,8(a5)
    e881a04c:	216160ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e881a050:	00a93023          	sd	a0,0(s2)
            if (!q->AnonInfo->AnonData)
    e881a054:	70bc                	ld	a5,96(s1)
    e881a056:	639c                	ld	a5,0(a5)
    e881a058:	ffe1                	bnez	a5,e881a030 <SetAnonData+0x4a>
}
    e881a05a:	60e2                	ld	ra,24(sp)
    e881a05c:	f891440b          	ldd	s0,s1,(sp),0,4
    e881a060:	6942                	ld	s2,16(sp)
    e881a062:	6105                	addi	sp,sp,32
    e881a064:	8082                	ret
        if (rr->AnonInfo->AnonDataLen < q->AnonInfo->AnonDataLen)
    e881a066:	00e5d863          	bge	a1,a4,e881a076 <SetAnonData+0x90>
            mDNSPlatformMemFree(rr->AnonInfo->AnonData);
    e881a06a:	6388                	ld	a0,0(a5)
    e881a06c:	216160ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
            rr->AnonInfo->AnonData = mDNSNULL;
    e881a070:	7c1c                	ld	a5,56(s0)
    e881a072:	0007b023          	sd	zero,0(a5)
        if (!rr->AnonInfo->AnonData)
    e881a076:	03843903          	ld	s2,56(s0)
    e881a07a:	00093783          	ld	a5,0(s2)
    e881a07e:	cb99                	beqz	a5,e881a094 <SetAnonData+0xae>
        mDNSPlatformMemCopy(rr->AnonInfo->AnonData, q->AnonInfo->AnonData, q->AnonInfo->AnonDataLen);
    e881a080:	70bc                	ld	a5,96(s1)
    e881a082:	7c18                	ld	a4,56(s0)
    e881a084:	4790                	lw	a2,8(a5)
    e881a086:	638c                	ld	a1,0(a5)
    e881a088:	6308                	ld	a0,0(a4)
    e881a08a:	217150ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        rr->AnonInfo->AnonDataLen = q->AnonInfo->AnonDataLen;
    e881a08e:	7c1c                	ld	a5,56(s0)
    e881a090:	70b8                	ld	a4,96(s1)
    e881a092:	bf45                	j	e881a042 <SetAnonData+0x5c>
            rr->AnonInfo->AnonData = mDNSPlatformMemAllocate(q->AnonInfo->AnonDataLen);
    e881a094:	70bc                	ld	a5,96(s1)
    e881a096:	4788                	lw	a0,8(a5)
    e881a098:	1ca160ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e881a09c:	00a93023          	sd	a0,0(s2)
            if (!rr->AnonInfo->AnonData)
    e881a0a0:	7c1c                	ld	a5,56(s0)
    e881a0a2:	639c                	ld	a5,0(a5)
    e881a0a4:	fff1                	bnez	a5,e881a080 <SetAnonData+0x9a>
    e881a0a6:	bf55                	j	e881a05a <SetAnonData+0x74>

00000000e881a0a8 <AnonInfoAnswersQuestion>:
{
    e881a0a8:	7115                	addi	sp,sp,-224
    e881a0aa:	e9a2                	sd	s0,208(sp)
    e881a0ac:	e5a6                	sd	s1,200(sp)
    e881a0ae:	842a                	mv	s0,a0
    e881a0b0:	84ae                	mv	s1,a1
    mDNSPlatformMemZero(hashName, sizeof(hashName));
    e881a0b2:	1008                	addi	a0,sp,32
    e881a0b4:	09b00593          	li	a1,155
{
    e881a0b8:	ed86                	sd	ra,216(sp)
    mDNSPlatformMemZero(hashName, sizeof(hashName));
    e881a0ba:	23d150ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    if (q->qtype != kDNSType_PTR)
    e881a0be:	3144d703          	lhu	a4,788(s1)
    e881a0c2:	47b1                	li	a5,12
        return -1;
    e881a0c4:	557d                	li	a0,-1
    if (q->qtype != kDNSType_PTR)
    e881a0c6:	02f71063          	bne	a4,a5,e881a0e6 <AnonInfoAnswersQuestion+0x3e>
    if (!q->AnonInfo)
    e881a0ca:	70b8                	ld	a4,96(s1)
        return -1;
    e881a0cc:	557d                	li	a0,-1
    if (!q->AnonInfo)
    e881a0ce:	cf01                	beqz	a4,e881a0e6 <AnonInfoAnswersQuestion+0x3e>
        if (!rr->AnonInfo)
    e881a0d0:	7c1c                	ld	a5,56(s0)
    e881a0d2:	cb91                	beqz	a5,e881a0e6 <AnonInfoAnswersQuestion+0x3e>
    if (qai->AnonData && rai->AnonData)
    e881a0d4:	6308                	ld	a0,0(a4)
    e881a0d6:	638c                	ld	a1,0(a5)
    e881a0d8:	c53d                	beqz	a0,e881a146 <AnonInfoAnswersQuestion+0x9e>
    e881a0da:	4714                	lw	a3,8(a4)
    e881a0dc:	c1a1                	beqz	a1,e881a11c <AnonInfoAnswersQuestion+0x74>
        if ((qai->AnonDataLen != rai->AnonDataLen) ||
    e881a0de:	4790                	lw	a2,8(a5)
    e881a0e0:	00d60863          	beq	a2,a3,e881a0f0 <AnonInfoAnswersQuestion+0x48>
        return mDNSfalse;
    e881a0e4:	4501                	li	a0,0
}
    e881a0e6:	60ee                	ld	ra,216(sp)
    e881a0e8:	644e                	ld	s0,208(sp)
    e881a0ea:	64ae                	ld	s1,200(sp)
    e881a0ec:	612d                	addi	sp,sp,224
    e881a0ee:	8082                	ret
            mDNSPlatformMemCmp(qai->AnonData, rai->AnonData, qai->AnonDataLen) != 0)
    e881a0f0:	1db150ef          	jal	ra,e882faca <mDNSPlatformMemCmp>
        if ((qai->AnonDataLen != rai->AnonDataLen) ||
    e881a0f4:	f965                	bnez	a0,e881a0e4 <AnonInfoAnswersQuestion+0x3c>
        LogInfo("AnonInfoAnswersQuestion: Answering qname %##s, rname %##s, without validation", q->qname.c,
    e881a0f6:	000bb797          	auipc	a5,0xbb
    e881a0fa:	97e78793          	addi	a5,a5,-1666 # e88d4a74 <mDNS_LoggingEnabled>
    e881a0fe:	439c                	lw	a5,0(a5)
    e881a100:	e399                	bnez	a5,e881a106 <AnonInfoAnswersQuestion+0x5e>
    return 1;
    e881a102:	4505                	li	a0,1
    e881a104:	b7cd                	j	e881a0e6 <AnonInfoAnswersQuestion+0x3e>
        LogInfo("AnonInfoAnswersQuestion: Answering qname %##s, rname %##s, without validation", q->qname.c,
    e881a106:	7014                	ld	a3,32(s0)
    e881a108:	21448613          	addi	a2,s1,532
    e881a10c:	00089597          	auipc	a1,0x89
    e881a110:	6f458593          	addi	a1,a1,1780 # e88a3800 <end.8789+0x158>
    e881a114:	450d                	li	a0,3
    e881a116:	396150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881a11a:	b7e5                	j	e881a102 <AnonInfoAnswersQuestion+0x5a>
        nsec3RR = rai->nsec3RR;
    e881a11c:	6b80                	ld	s0,16(a5)
    e881a11e:	85aa                	mv	a1,a0
    if (!AnonData || !nsec3RR)
    e881a120:	d071                	beqz	s0,e881a0e4 <AnonInfoAnswersQuestion+0x3c>
    nsec3 = (rdataNSEC3 *)nsec3RR->rdata->u.data;
    e881a122:	7408                	ld	a0,40(s0)
    if (!NSEC3HashName(nsec3RR->name, nsec3, AnonData, AnonDataLen, hashName, &hlen))
    e881a124:	862e                	mv	a2,a1
    e881a126:	081c                	addi	a5,sp,16
    e881a128:	00450593          	addi	a1,a0,4
    e881a12c:	7008                	ld	a0,32(s0)
    e881a12e:	1018                	addi	a4,sp,32
    e881a130:	8bbf90ef          	jal	ra,e88139ea <NSEC3HashName>
    e881a134:	ed09                	bnez	a0,e881a14e <AnonInfoAnswersQuestion+0xa6>
        LogMsg("AnonInfoAnswersQuestion: NSEC3HashName failed for %##s", nsec3RR->name->c);
    e881a136:	7010                	ld	a2,32(s0)
    e881a138:	00089597          	auipc	a1,0x89
    e881a13c:	71858593          	addi	a1,a1,1816 # e88a3850 <end.8789+0x1a8>
    e881a140:	36c150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mDNSfalse;
    e881a144:	b745                	j	e881a0e4 <AnonInfoAnswersQuestion+0x3c>
        AnonDataLen = rai->AnonDataLen;
    e881a146:	4794                	lw	a3,8(a5)
        nsec3RR = qai->nsec3RR;
    e881a148:	6b00                	ld	s0,16(a4)
    if (!AnonData || !nsec3RR)
    e881a14a:	ddc9                	beqz	a1,e881a0e4 <AnonInfoAnswersQuestion+0x3c>
    e881a14c:	bfd1                	j	e881a120 <AnonInfoAnswersQuestion+0x78>
    if (hlen != SHA1_HASH_LENGTH)
    e881a14e:	4642                	lw	a2,16(sp)
    e881a150:	47d1                	li	a5,20
    e881a152:	00f60a63          	beq	a2,a5,e881a166 <AnonInfoAnswersQuestion+0xbe>
        LogMsg("AnonInfoAnswersQuestion: hlen wrong %d", hlen);
    e881a156:	00089597          	auipc	a1,0x89
    e881a15a:	73258593          	addi	a1,a1,1842 # e88a3888 <end.8789+0x1e0>
    e881a15e:	4501                	li	a0,0
    e881a160:	34c150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881a164:	b741                	j	e881a0e4 <AnonInfoAnswersQuestion+0x3c>
    NSEC3Parse(nsec3RR, mDNSNULL, &nxtLength, &nxtName, mDNSNULL, mDNSNULL);
    e881a166:	0834                	addi	a3,sp,24
    e881a168:	0850                	addi	a2,sp,20
    e881a16a:	4781                	li	a5,0
    e881a16c:	4701                	li	a4,0
    e881a16e:	4581                	li	a1,0
    e881a170:	8522                	mv	a0,s0
    e881a172:	d49f80ef          	jal	ra,e8812eba <NSEC3Parse>
    if (hlen != nxtLength)
    e881a176:	e4d1460b          	lwd	a2,a3,(sp),2,3
    e881a17a:	04d61863          	bne	a2,a3,e881a1ca <AnonInfoAnswersQuestion+0x122>
        if (nxtName[i] != hashName[i])
    e881a17e:	6662                	ld	a2,24(sp)
    e881a180:	4781                	li	a5,0
    for (i = 0; i < nxtLength; i++)
    e881a182:	0007871b          	sext.w	a4,a5
    e881a186:	04d74a63          	blt	a4,a3,e881a1da <AnonInfoAnswersQuestion+0x132>
    LogInfo("AnonInfoAnswersQuestion: ResourceRecord %s matched question %##s (%s)", RRDisplayString(&mDNSStorage, nsec3RR), q->qname.c, DNSTypeName(q->qtype));
    e881a18a:	000bb797          	auipc	a5,0xbb
    e881a18e:	8ea78793          	addi	a5,a5,-1814 # e88d4a74 <mDNS_LoggingEnabled>
    e881a192:	439c                	lw	a5,0(a5)
    e881a194:	d7bd                	beqz	a5,e881a102 <AnonInfoAnswersQuestion+0x5a>
    e881a196:	740c                	ld	a1,40(s0)
    e881a198:	000be617          	auipc	a2,0xbe
    e881a19c:	27b60613          	addi	a2,a2,635 # e88d8413 <mDNSStorage+0x3b>
    e881a1a0:	8522                	mv	a0,s0
    e881a1a2:	0591                	addi	a1,a1,4
    e881a1a4:	871fc0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881a1a8:	e42a                	sd	a0,8(sp)
    e881a1aa:	3144d503          	lhu	a0,788(s1)
    e881a1ae:	ab3fb0ef          	jal	ra,e8815c60 <DNSTypeName>
    e881a1b2:	872a                	mv	a4,a0
    e881a1b4:	6622                	ld	a2,8(sp)
    e881a1b6:	21448693          	addi	a3,s1,532
    e881a1ba:	00089597          	auipc	a1,0x89
    e881a1be:	73e58593          	addi	a1,a1,1854 # e88a38f8 <end.8789+0x250>
    e881a1c2:	450d                	li	a0,3
    e881a1c4:	2e8150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881a1c8:	bf2d                	j	e881a102 <AnonInfoAnswersQuestion+0x5a>
        LogMsg("AnonInfoAnswersQuestion: ERROR!! hlen %d not same as nxtLength %d", hlen, nxtLength);
    e881a1ca:	00089597          	auipc	a1,0x89
    e881a1ce:	6e658593          	addi	a1,a1,1766 # e88a38b0 <end.8789+0x208>
    e881a1d2:	4501                	li	a0,0
    e881a1d4:	2d8150ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mDNSfalse;
    e881a1d8:	b731                	j	e881a0e4 <AnonInfoAnswersQuestion+0x3c>
        if (nxtName[i] != hashName[i])
    e881a1da:	80f6470b          	lrbu	a4,a2,a5,0
    e881a1de:	100c                	addi	a1,sp,32
    e881a1e0:	0785                	addi	a5,a5,1
    e881a1e2:	95be                	add	a1,a1,a5
    e881a1e4:	fff5c583          	lbu	a1,-1(a1)
    e881a1e8:	f8e58de3          	beq	a1,a4,e881a182 <AnonInfoAnswersQuestion+0xda>
    e881a1ec:	bde5                	j	e881a0e4 <AnonInfoAnswersQuestion+0x3c>

00000000e881a1ee <InitializeAnonInfoForQuestion>:

mDNSexport void InitializeAnonInfoForQuestion(mDNS *const m, CacheRecord **McastNSEC3Records, DNSQuestion *q)
{
    CacheRecord *nsec3CR;

    if (q->qtype != kDNSType_PTR)
    e881a1ee:	31465703          	lhu	a4,788(a2)
    e881a1f2:	47b1                	li	a5,12
    e881a1f4:	04f71763          	bne	a4,a5,e881a242 <InitializeAnonInfoForQuestion+0x54>
{
    e881a1f8:	1101                	addi	sp,sp,-32
    e881a1fa:	f891540b          	sdd	s0,s1,(sp),0,4
    e881a1fe:	84aa                	mv	s1,a0
    e881a200:	852e                	mv	a0,a1
        return;

    nsec3CR = FindMatchingNSEC3ForName(m, McastNSEC3Records, &q->qname);
    e881a202:	21460593          	addi	a1,a2,532
{
    e881a206:	e84a                	sd	s2,16(sp)
    e881a208:	ec06                	sd	ra,24(sp)
    e881a20a:	8432                	mv	s0,a2
    nsec3CR = FindMatchingNSEC3ForName(m, McastNSEC3Records, &q->qname);
    e881a20c:	b8dff0ef          	jal	ra,e8819d98 <FindMatchingNSEC3ForName.isra.1>
    e881a210:	892a                	mv	s2,a0
    if (nsec3CR)
    e881a212:	c115                	beqz	a0,e881a236 <InitializeAnonInfoForQuestion+0x48>
    {
        q->AnonInfo = AllocateAnonInfo(mDNSNULL, mDNSNULL, 0, &nsec3CR->resrec);
    e881a214:	00850693          	addi	a3,a0,8
    e881a218:	4581                	li	a1,0
    e881a21a:	4601                	li	a2,0
    e881a21c:	4501                	li	a0,0
    e881a21e:	bb3ff0ef          	jal	ra,e8819dd0 <AllocateAnonInfo>
    e881a222:	f028                	sd	a0,96(s0)
        if (q->AnonInfo)
        {
            debugf("InitializeAnonInfoForQuestion: Found a matching NSEC3 record %s, for %##s (%s)",
                RRDisplayString(m, q->AnonInfo->nsec3RR), q->qname.c, DNSTypeName(q->qtype));
        }
        ReleaseCacheRecord(m, nsec3CR);
    e881a224:	8526                	mv	a0,s1
    }
}
    e881a226:	f891440b          	ldd	s0,s1,(sp),0,4
    e881a22a:	60e2                	ld	ra,24(sp)
        ReleaseCacheRecord(m, nsec3CR);
    e881a22c:	85ca                	mv	a1,s2
}
    e881a22e:	6942                	ld	s2,16(sp)
    e881a230:	6105                	addi	sp,sp,32
        ReleaseCacheRecord(m, nsec3CR);
    e881a232:	0940606f          	j	e88202c6 <ReleaseCacheRecord>
}
    e881a236:	60e2                	ld	ra,24(sp)
    e881a238:	f891440b          	ldd	s0,s1,(sp),0,4
    e881a23c:	6942                	ld	s2,16(sp)
    e881a23e:	6105                	addi	sp,sp,32
    e881a240:	8082                	ret
    e881a242:	8082                	ret

00000000e881a244 <InitializeAnonInfoForCR>:

mDNSexport void InitializeAnonInfoForCR(mDNS *const m, CacheRecord **McastNSEC3Records, CacheRecord *cr)
{
    CacheRecord *nsec3CR;

    if (!(*McastNSEC3Records))
    e881a244:	619c                	ld	a5,0(a1)
    e881a246:	cfa9                	beqz	a5,e881a2a0 <InitializeAnonInfoForCR+0x5c>
        return;

    // If already initialized or not a PTR type, we don't have to do anything
    if (cr->resrec.AnonInfo || cr->resrec.rrtype != kDNSType_PTR)
    e881a248:	623c                	ld	a5,64(a2)
    e881a24a:	ebb9                	bnez	a5,e881a2a0 <InitializeAnonInfoForCR+0x5c>
    e881a24c:	00a65703          	lhu	a4,10(a2)
    e881a250:	47b1                	li	a5,12
    e881a252:	04f71763          	bne	a4,a5,e881a2a0 <InitializeAnonInfoForCR+0x5c>
{
    e881a256:	1101                	addi	sp,sp,-32
    e881a258:	f891540b          	sdd	s0,s1,(sp),0,4
    e881a25c:	e84a                	sd	s2,16(sp)
    e881a25e:	87ae                	mv	a5,a1
    e881a260:	ec06                	sd	ra,24(sp)
        return;

    nsec3CR = FindMatchingNSEC3ForName(m, McastNSEC3Records, cr->resrec.name);
    e881a262:	760c                	ld	a1,40(a2)
    e881a264:	84aa                	mv	s1,a0
    e881a266:	853e                	mv	a0,a5
    e881a268:	8432                	mv	s0,a2
    e881a26a:	b2fff0ef          	jal	ra,e8819d98 <FindMatchingNSEC3ForName.isra.1>
    e881a26e:	892a                	mv	s2,a0
    if (nsec3CR)
    e881a270:	c115                	beqz	a0,e881a294 <InitializeAnonInfoForCR+0x50>
    {
        cr->resrec.AnonInfo = AllocateAnonInfo(mDNSNULL, mDNSNULL, 0, &nsec3CR->resrec);
    e881a272:	00850693          	addi	a3,a0,8
    e881a276:	4581                	li	a1,0
    e881a278:	4601                	li	a2,0
    e881a27a:	4501                	li	a0,0
    e881a27c:	b55ff0ef          	jal	ra,e8819dd0 <AllocateAnonInfo>
    e881a280:	e028                	sd	a0,64(s0)
        {
            debugf("InitializeAnonInfoForCR: Found a matching NSEC3 record %s, for %##s (%s)",
                RRDisplayString(m, cr->resrec.AnonInfo->nsec3RR), cr->resrec.name->c,
                DNSTypeName(cr->resrec.rrtype));
        }
        ReleaseCacheRecord(m, nsec3CR);
    e881a282:	8526                	mv	a0,s1
    }
}
    e881a284:	f891440b          	ldd	s0,s1,(sp),0,4
    e881a288:	60e2                	ld	ra,24(sp)
        ReleaseCacheRecord(m, nsec3CR);
    e881a28a:	85ca                	mv	a1,s2
}
    e881a28c:	6942                	ld	s2,16(sp)
    e881a28e:	6105                	addi	sp,sp,32
        ReleaseCacheRecord(m, nsec3CR);
    e881a290:	0360606f          	j	e88202c6 <ReleaseCacheRecord>
}
    e881a294:	60e2                	ld	ra,24(sp)
    e881a296:	f891440b          	ldd	s0,s1,(sp),0,4
    e881a29a:	6942                	ld	s2,16(sp)
    e881a29c:	6105                	addi	sp,sp,32
    e881a29e:	8082                	ret
    e881a2a0:	8082                	ret

00000000e881a2a2 <IdenticalAnonInfo>:

mDNSexport mDNSBool IdenticalAnonInfo(AnonymousInfo *a1, AnonymousInfo *a2)
{
    // if a1 is NULL and a2 is not NULL AND vice-versa
    // return false as there is a change.
    if ((a1 != mDNSNULL) != (a2 != mDNSNULL))
    e881a2a2:	00a03733          	snez	a4,a0
    e881a2a6:	00b037b3          	snez	a5,a1
    e881a2aa:	04f71c63          	bne	a4,a5,e881a302 <IdenticalAnonInfo+0x60>
        {
            debugf("IdenticalAnonInfo: nsec3RR mismatch");
            return mDNSfalse;
        }
    }
    return mDNStrue;
    e881a2ae:	4785                	li	a5,1
    if (a1 && a2)
    e881a2b0:	c931                	beqz	a0,e881a304 <IdenticalAnonInfo+0x62>
    e881a2b2:	c9a9                	beqz	a1,e881a304 <IdenticalAnonInfo+0x62>
        if (!IdenticalSameNameRecord(a1->nsec3RR, a2->nsec3RR))
    e881a2b4:	6908                	ld	a0,16(a0)
    e881a2b6:	6998                	ld	a4,16(a1)
    e881a2b8:	57fd                	li	a5,-1
    e881a2ba:	6110                	ld	a2,0(a0)
    e881a2bc:	6314                	ld	a3,0(a4)
    e881a2be:	1782                	slli	a5,a5,0x20
    e881a2c0:	83c1                	srli	a5,a5,0x10
    e881a2c2:	8e7d                	and	a2,a2,a5
    e881a2c4:	8efd                	and	a3,a3,a5
        return mDNSfalse;
    e881a2c6:	4781                	li	a5,0
        if (!IdenticalSameNameRecord(a1->nsec3RR, a2->nsec3RR))
    e881a2c8:	02d61e63          	bne	a2,a3,e881a304 <IdenticalAnonInfo+0x62>
    e881a2cc:	00c55603          	lhu	a2,12(a0)
    e881a2d0:	00c75683          	lhu	a3,12(a4)
    e881a2d4:	02d61863          	bne	a2,a3,e881a304 <IdenticalAnonInfo+0x62>
    e881a2d8:	4950                	lw	a2,20(a0)
    e881a2da:	4b54                	lw	a3,20(a4)
    e881a2dc:	02d61463          	bne	a2,a3,e881a304 <IdenticalAnonInfo+0x62>
{
    e881a2e0:	1141                	addi	sp,sp,-16
    e881a2e2:	e406                	sd	ra,8(sp)
        if (!IdenticalSameNameRecord(a1->nsec3RR, a2->nsec3RR))
    e881a2e4:	770c                	ld	a1,40(a4)
    e881a2e6:	ffff9617          	auipc	a2,0xffff9
    e881a2ea:	d6460613          	addi	a2,a2,-668 # e881304a <SameDomainName>
    e881a2ee:	0591                	addi	a1,a1,4
    e881a2f0:	d1bf90ef          	jal	ra,e881400a <SameRDataBody>
    e881a2f4:	2501                	sext.w	a0,a0
}
    e881a2f6:	60a2                	ld	ra,8(sp)
        return mDNSfalse;
    e881a2f8:	00a037b3          	snez	a5,a0
}
    e881a2fc:	853e                	mv	a0,a5
    e881a2fe:	0141                	addi	sp,sp,16
    e881a300:	8082                	ret
        return mDNSfalse;
    e881a302:	4781                	li	a5,0
}
    e881a304:	853e                	mv	a0,a5
    e881a306:	8082                	ret

00000000e881a308 <CopyAnonInfoForCR>:

mDNSexport void CopyAnonInfoForCR(mDNS *const m, CacheRecord *crto, CacheRecord *crfrom)
{
    AnonymousInfo *aifrom = crfrom->resrec.AnonInfo;
    e881a308:	623c                	ld	a5,64(a2)
    AnonymousInfo *aito = crto->resrec.AnonInfo;

    (void) m;

    if (!aifrom)
    e881a30a:	c395                	beqz	a5,e881a32e <CopyAnonInfoForCR+0x26>
{
    e881a30c:	1141                	addi	sp,sp,-16
    AnonymousInfo *aito = crto->resrec.AnonInfo;
    e881a30e:	61a8                	ld	a0,64(a1)
{
    e881a310:	e022                	sd	s0,0(sp)
    e881a312:	e406                	sd	ra,8(sp)
    e881a314:	8432                	mv	s0,a2
        return;

    if (aito)
    e881a316:	c911                	beqz	a0,e881a32a <CopyAnonInfoForCR+0x22>
    {
        crto->resrec.AnonInfo = aifrom;
    e881a318:	e1bc                	sd	a5,64(a1)
        FreeAnonInfo(aito);
        crfrom->resrec.AnonInfo = mDNSNULL;
    }
    else
    {
        FreeAnonInfo(aifrom);
    e881a31a:	c71ff0ef          	jal	ra,e8819f8a <FreeAnonInfo>
        crfrom->resrec.AnonInfo = mDNSNULL;
    e881a31e:	04043023          	sd	zero,64(s0)
    }
}
    e881a322:	60a2                	ld	ra,8(sp)
    e881a324:	6402                	ld	s0,0(sp)
    e881a326:	0141                	addi	sp,sp,16
    e881a328:	8082                	ret
        FreeAnonInfo(aifrom);
    e881a32a:	853e                	mv	a0,a5
    e881a32c:	b7fd                	j	e881a31a <CopyAnonInfoForCR+0x12>
    e881a32e:	8082                	ret

00000000e881a330 <DomainEndsInDot>:

static int DomainEndsInDot(const char *dom)
{
    while (dom[0] && dom[1])
    {
        if (dom[0] == '\\') // advance past escaped byte sequence
    e881a330:	05c00613          	li	a2,92
        {
            if (mDNSIsDigit(dom[1]) && mDNSIsDigit(dom[2]) && mDNSIsDigit(dom[3]))
    e881a334:	46a5                	li	a3,9
    while (dom[0] && dom[1])
    e881a336:	00054703          	lbu	a4,0(a0)
    e881a33a:	c701                	beqz	a4,e881a342 <DomainEndsInDot+0x12>
    e881a33c:	00154783          	lbu	a5,1(a0)
    e881a340:	e791                	bnez	a5,e881a34c <DomainEndsInDot+0x1c>
                dom += 4;           // If "\ddd"    then skip four
            else dom += 2;          // else if "\x" then skip two
        }
        else dom++;                 // else goto next character
    }
    return (dom[0] == '.');
    e881a342:	fd270513          	addi	a0,a4,-46
}
    e881a346:	00153513          	seqz	a0,a0
    e881a34a:	8082                	ret
        if (dom[0] == '\\') // advance past escaped byte sequence
    e881a34c:	02c71c63          	bne	a4,a2,e881a384 <DomainEndsInDot+0x54>
            if (mDNSIsDigit(dom[1]) && mDNSIsDigit(dom[2]) && mDNSIsDigit(dom[3]))
    e881a350:	fd07879b          	addiw	a5,a5,-48
    e881a354:	0ff7f793          	andi	a5,a5,255
    e881a358:	02f6e463          	bltu	a3,a5,e881a380 <DomainEndsInDot+0x50>
    e881a35c:	00254783          	lbu	a5,2(a0)
    e881a360:	fd07879b          	addiw	a5,a5,-48
    e881a364:	0ff7f793          	andi	a5,a5,255
    e881a368:	00f6ec63          	bltu	a3,a5,e881a380 <DomainEndsInDot+0x50>
    e881a36c:	00354783          	lbu	a5,3(a0)
    e881a370:	fd07879b          	addiw	a5,a5,-48
    e881a374:	0ff7f793          	andi	a5,a5,255
    e881a378:	00f6e463          	bltu	a3,a5,e881a380 <DomainEndsInDot+0x50>
                dom += 4;           // If "\ddd"    then skip four
    e881a37c:	0511                	addi	a0,a0,4
    e881a37e:	bf65                	j	e881a336 <DomainEndsInDot+0x6>
            else dom += 2;          // else if "\x" then skip two
    e881a380:	0509                	addi	a0,a0,2
    e881a382:	bf55                	j	e881a336 <DomainEndsInDot+0x6>
        else dom++;                 // else goto next character
    e881a384:	0505                	addi	a0,a0,1
    e881a386:	bf45                	j	e881a336 <DomainEndsInDot+0x6>

00000000e881a388 <InternalTXTRecordSearch>:
    uint16_t txtLen,
    const void       *txtRecord,
    const char       *key,
    unsigned long    *keylen
)
{
    e881a388:	7139                	addi	sp,sp,-64
    e881a38a:	f04e                	sd	s3,32(sp)
    uint8_t *p = (uint8_t*)txtRecord;
    uint8_t *e = p + txtLen;
    e881a38c:	00a589b3          	add	s3,a1,a0
    *keylen = (unsigned long) strlen(key);
    e881a390:	8532                	mv	a0,a2
{
    e881a392:	e422                	sd	s0,8(sp)
    e881a394:	ec4a                	sd	s2,24(sp)
    e881a396:	f452                	sd	s4,40(sp)
    e881a398:	f856                	sd	s5,48(sp)
    e881a39a:	8936                	mv	s2,a3
    e881a39c:	fc06                	sd	ra,56(sp)
    e881a39e:	e826                	sd	s1,16(sp)
    e881a3a0:	842e                	mv	s0,a1
    e881a3a2:	8a32                	mv	s4,a2
    *keylen = (unsigned long) strlen(key);
    e881a3a4:	775610ef          	jal	ra,e887c318 <eLIBs_strlen>
    e881a3a8:	7c05350b          	extu	a0,a0,31,0
    e881a3ac:	00a93023          	sd	a0,0(s2)
    while (p<e)
    {
        uint8_t *x = p;
        p += 1 + p[0];
        if (p <= e && *keylen <= x[0] && !strncasecmp(key, (char*)x+1, *keylen))
            if (*keylen == x[0] || x[1+*keylen] == '=') return(x);
    e881a3b0:	03d00a93          	li	s5,61
    while (p<e)
    e881a3b4:	01346463          	bltu	s0,s3,e881a3bc <InternalTXTRecordSearch+0x34>
    }
    return(NULL);
    e881a3b8:	4401                	li	s0,0
    e881a3ba:	a83d                	j	e881a3f8 <InternalTXTRecordSearch+0x70>
        p += 1 + p[0];
    e881a3bc:	00044783          	lbu	a5,0(s0)
    e881a3c0:	00178493          	addi	s1,a5,1
    e881a3c4:	94a2                	add	s1,s1,s0
        if (p <= e && *keylen <= x[0] && !strncasecmp(key, (char*)x+1, *keylen))
    e881a3c6:	0099f463          	bgeu	s3,s1,e881a3ce <InternalTXTRecordSearch+0x46>
        p += 1 + p[0];
    e881a3ca:	8426                	mv	s0,s1
    e881a3cc:	b7e5                	j	e881a3b4 <InternalTXTRecordSearch+0x2c>
        if (p <= e && *keylen <= x[0] && !strncasecmp(key, (char*)x+1, *keylen))
    e881a3ce:	00093603          	ld	a2,0(s2)
    e881a3d2:	fec7ece3          	bltu	a5,a2,e881a3ca <InternalTXTRecordSearch+0x42>
    e881a3d6:	00140593          	addi	a1,s0,1
    e881a3da:	8552                	mv	a0,s4
    e881a3dc:	785610ef          	jal	ra,e887c360 <eLIBs_strnicmp>
    e881a3e0:	f56d                	bnez	a0,e881a3ca <InternalTXTRecordSearch+0x42>
            if (*keylen == x[0] || x[1+*keylen] == '=') return(x);
    e881a3e2:	00093783          	ld	a5,0(s2)
    e881a3e6:	00044703          	lbu	a4,0(s0)
    e881a3ea:	00e78763          	beq	a5,a4,e881a3f8 <InternalTXTRecordSearch+0x70>
    e881a3ee:	97a2                	add	a5,a5,s0
    e881a3f0:	0017c783          	lbu	a5,1(a5)
    e881a3f4:	fd579be3          	bne	a5,s5,e881a3ca <InternalTXTRecordSearch+0x42>
}
    e881a3f8:	8522                	mv	a0,s0
    e881a3fa:	70e2                	ld	ra,56(sp)
    e881a3fc:	6422                	ld	s0,8(sp)
    e881a3fe:	64c2                	ld	s1,16(sp)
    e881a400:	6962                	ld	s2,24(sp)
    e881a402:	7982                	ld	s3,32(sp)
    e881a404:	7a22                	ld	s4,40(sp)
    e881a406:	7ac2                	ld	s5,48(sp)
    e881a408:	6121                	addi	sp,sp,64
    e881a40a:	8082                	ret

00000000e881a40c <DNSServiceConstructFullName>:
    const char *const service,      // May be NULL
    const char *const regtype,
    const char *const domain
)
{
    const size_t len = !regtype ? 0 : strlen(regtype) - DomainEndsInDot(regtype);
    e881a40c:	e601                	bnez	a2,e881a414 <DNSServiceConstructFullName+0x8>
    const char *s    = service;
    const char *r    = regtype;
    const char *d    = domain;

    // regtype must be at least "x._udp" or "x._tcp"
    if (len < 6 || !domain || !domain[0]) return kDNSServiceErr_BadParam;
    e881a40e:	7541                	lui	a0,0xffff0
    e881a410:	1571                	addi	a0,a0,-4
    return kDNSServiceErr_NoError;

fail:
    *fn = '\0';
    return kDNSServiceErr_BadParam;
}
    e881a412:	8082                	ret
{
    e881a414:	7139                	addi	sp,sp,-64
    e881a416:	e422                	sd	s0,8(sp)
    e881a418:	842a                	mv	s0,a0
    const size_t len = !regtype ? 0 : strlen(regtype) - DomainEndsInDot(regtype);
    e881a41a:	8532                	mv	a0,a2
{
    e881a41c:	fc06                	sd	ra,56(sp)
    e881a41e:	e826                	sd	s1,16(sp)
    e881a420:	ec4a                	sd	s2,24(sp)
    e881a422:	f04e                	sd	s3,32(sp)
    e881a424:	8932                	mv	s2,a2
    e881a426:	f452                	sd	s4,40(sp)
    e881a428:	f856                	sd	s5,48(sp)
    e881a42a:	89ae                	mv	s3,a1
    e881a42c:	8a36                	mv	s4,a3
    const size_t len = !regtype ? 0 : strlen(regtype) - DomainEndsInDot(regtype);
    e881a42e:	6eb610ef          	jal	ra,e887c318 <eLIBs_strlen>
    e881a432:	0005049b          	sext.w	s1,a0
    e881a436:	854a                	mv	a0,s2
    e881a438:	ef9ff0ef          	jal	ra,e881a330 <DomainEndsInDot>
    e881a43c:	40a4873b          	subw	a4,s1,a0
    if (len < 6 || !domain || !domain[0]) return kDNSServiceErr_BadParam;
    e881a440:	4795                	li	a5,5
    const size_t len = !regtype ? 0 : strlen(regtype) - DomainEndsInDot(regtype);
    e881a442:	7c07350b          	extu	a0,a4,31,0
    char *const lim  = fullName + 1005;
    e881a446:	3ed40a93          	addi	s5,s0,1005
    if (len < 6 || !domain || !domain[0]) return kDNSServiceErr_BadParam;
    e881a44a:	08e7fc63          	bgeu	a5,a4,e881a4e2 <DNSServiceConstructFullName+0xd6>
    e881a44e:	080a0a63          	beqz	s4,e881a4e2 <DNSServiceConstructFullName+0xd6>
    e881a452:	000a4783          	lbu	a5,0(s4)
    e881a456:	c7d1                	beqz	a5,e881a4e2 <DNSServiceConstructFullName+0xd6>
    if (strncasecmp((regtype + len - 4), "_tcp", 4) && strncasecmp((regtype + len - 4), "_udp", 4)) return kDNSServiceErr_BadParam;
    e881a458:	1571                	addi	a0,a0,-4
    e881a45a:	00a904b3          	add	s1,s2,a0
    e881a45e:	4611                	li	a2,4
    e881a460:	00092597          	auipc	a1,0x92
    e881a464:	43058593          	addi	a1,a1,1072 # e88ac890 <kOn.10632+0x948>
    e881a468:	8526                	mv	a0,s1
    e881a46a:	6f7610ef          	jal	ra,e887c360 <eLIBs_strnicmp>
    e881a46e:	e12d                	bnez	a0,e881a4d0 <DNSServiceConstructFullName+0xc4>
    if (service && *service)
    e881a470:	06099c63          	bnez	s3,e881a4e8 <DNSServiceConstructFullName+0xdc>
        *fn++ = '.';
    e881a474:	87ca                	mv	a5,s2
    while (*r) if (fn+1 >= lim) goto fail;else *fn++ = *r++;
    e881a476:	0007c683          	lbu	a3,0(a5)
    e881a47a:	eae5                	bnez	a3,e881a56a <DNSServiceConstructFullName+0x15e>
    if (!DomainEndsInDot(regtype)) { if (fn+1 >= lim) goto fail;else *fn++ = '.';}
    e881a47c:	854a                	mv	a0,s2
    e881a47e:	eb3ff0ef          	jal	ra,e881a330 <DomainEndsInDot>
    e881a482:	e911                	bnez	a0,e881a496 <DNSServiceConstructFullName+0x8a>
    e881a484:	00140793          	addi	a5,s0,1
    e881a488:	0d57fe63          	bgeu	a5,s5,e881a564 <DNSServiceConstructFullName+0x158>
    e881a48c:	02e00713          	li	a4,46
    e881a490:	00e40023          	sb	a4,0(s0)
    e881a494:	843e                	mv	s0,a5
    e881a496:	87d2                	mv	a5,s4
    while (*d) if (fn+1 >= lim) goto fail;else *fn++ = *d++;
    e881a498:	0007c683          	lbu	a3,0(a5)
    e881a49c:	e2e5                	bnez	a3,e881a57c <DNSServiceConstructFullName+0x170>
    if (!DomainEndsInDot(domain)) { if (fn+1 >= lim) goto fail;else *fn++ = '.';}
    e881a49e:	8552                	mv	a0,s4
    e881a4a0:	e91ff0ef          	jal	ra,e881a330 <DomainEndsInDot>
    e881a4a4:	e911                	bnez	a0,e881a4b8 <DNSServiceConstructFullName+0xac>
    e881a4a6:	00140793          	addi	a5,s0,1
    e881a4aa:	0b57fd63          	bgeu	a5,s5,e881a564 <DNSServiceConstructFullName+0x158>
    e881a4ae:	02e00713          	li	a4,46
    e881a4b2:	00e40023          	sb	a4,0(s0)
    e881a4b6:	843e                	mv	s0,a5
    *fn = '\0';
    e881a4b8:	00040023          	sb	zero,0(s0)
    return kDNSServiceErr_NoError;
    e881a4bc:	4501                	li	a0,0
}
    e881a4be:	70e2                	ld	ra,56(sp)
    e881a4c0:	6422                	ld	s0,8(sp)
    e881a4c2:	64c2                	ld	s1,16(sp)
    e881a4c4:	6962                	ld	s2,24(sp)
    e881a4c6:	7982                	ld	s3,32(sp)
    e881a4c8:	7a22                	ld	s4,40(sp)
    e881a4ca:	7ac2                	ld	s5,48(sp)
    e881a4cc:	6121                	addi	sp,sp,64
    e881a4ce:	8082                	ret
    if (strncasecmp((regtype + len - 4), "_tcp", 4) && strncasecmp((regtype + len - 4), "_udp", 4)) return kDNSServiceErr_BadParam;
    e881a4d0:	4611                	li	a2,4
    e881a4d2:	00089597          	auipc	a1,0x89
    e881a4d6:	50658593          	addi	a1,a1,1286 # e88a39d8 <end.8789+0x330>
    e881a4da:	8526                	mv	a0,s1
    e881a4dc:	685610ef          	jal	ra,e887c360 <eLIBs_strnicmp>
    e881a4e0:	d941                	beqz	a0,e881a470 <DNSServiceConstructFullName+0x64>
    return kDNSServiceErr_BadParam;
    e881a4e2:	7541                	lui	a0,0xffff0
    e881a4e4:	1571                	addi	a0,a0,-4
    e881a4e6:	bfe1                	j	e881a4be <DNSServiceConstructFullName+0xb2>
    if (service && *service)
    e881a4e8:	0009c783          	lbu	a5,0(s3)
    e881a4ec:	d7c1                	beqz	a5,e881a474 <DNSServiceConstructFullName+0x68>
                *fn++ = '\\';
    e881a4ee:	670d                	lui	a4,0x3
            if (c <= ' ')                       // Escape non-printable characters
    e881a4f0:	02000513          	li	a0,32
            else if (c == '.' || (c == '\\'))   // Escape dot and backslash literals
    e881a4f4:	02e00813          	li	a6,46
                *fn++ = '\\';
    e881a4f8:	05c00893          	li	a7,92
            else if (c == '.' || (c == '\\'))   // Escape dot and backslash literals
    e881a4fc:	05c00313          	li	t1,92
                *fn++ = '\\';
    e881a500:	05c7071b          	addiw	a4,a4,92
                *fn++ = '0' + (c /  10) % 10;
    e881a504:	45a9                	li	a1,10
        while (*s)
    e881a506:	0009c783          	lbu	a5,0(s3)
    e881a50a:	e791                	bnez	a5,e881a516 <DNSServiceConstructFullName+0x10a>
        *fn++ = '.';
    e881a50c:	02e00793          	li	a5,46
    e881a510:	1814578b          	sbia	a5,(s0),1,0
    e881a514:	b785                	j	e881a474 <DNSServiceConstructFullName+0x68>
            unsigned char c = *s++;             // Needs to be unsigned, or values like 0xFF will be interpreted as < 32
    e881a516:	0985                	addi	s3,s3,1
            if (c <= ' ')                       // Escape non-printable characters
    e881a518:	02f56763          	bltu	a0,a5,e881a546 <DNSServiceConstructFullName+0x13a>
                if (fn+4 >= lim) goto fail;
    e881a51c:	00440693          	addi	a3,s0,4
    e881a520:	0556f263          	bgeu	a3,s5,e881a564 <DNSServiceConstructFullName+0x158>
                *fn++ = '0' + (c /  10) % 10;
    e881a524:	02b7d63b          	divuw	a2,a5,a1
                *fn++ = '\\';
    e881a528:	86a2                	mv	a3,s0
    e881a52a:	3836d70b          	shia	a4,(a3),3,0
                c     = '0' + (c      ) % 10;
    e881a52e:	02b7f7bb          	remuw	a5,a5,a1
                *fn++ = '0' + (c /  10) % 10;
    e881a532:	0306061b          	addiw	a2,a2,48
    e881a536:	00c40123          	sb	a2,2(s0)
    e881a53a:	8436                	mv	s0,a3
                c     = '0' + (c      ) % 10;
    e881a53c:	03078793          	addi	a5,a5,48
            *fn++ = (char)c;
    e881a540:	1814578b          	sbia	a5,(s0),1,0
    e881a544:	b7c9                	j	e881a506 <DNSServiceConstructFullName+0xfa>
            else if (c == '.' || (c == '\\'))   // Escape dot and backslash literals
    e881a546:	01078463          	beq	a5,a6,e881a54e <DNSServiceConstructFullName+0x142>
    e881a54a:	00679963          	bne	a5,t1,e881a55c <DNSServiceConstructFullName+0x150>
                if (fn+2 >= lim) goto fail;
    e881a54e:	00240693          	addi	a3,s0,2
    e881a552:	0156f963          	bgeu	a3,s5,e881a564 <DNSServiceConstructFullName+0x158>
                *fn++ = '\\';
    e881a556:	1814588b          	sbia	a7,(s0),1,0
    e881a55a:	b7dd                	j	e881a540 <DNSServiceConstructFullName+0x134>
            if (fn+1 >= lim) goto fail;
    e881a55c:	00140693          	addi	a3,s0,1
    e881a560:	ff56e0e3          	bltu	a3,s5,e881a540 <DNSServiceConstructFullName+0x134>
    *fn = '\0';
    e881a564:	00040023          	sb	zero,0(s0)
    e881a568:	bfad                	j	e881a4e2 <DNSServiceConstructFullName+0xd6>
    while (*r) if (fn+1 >= lim) goto fail;else *fn++ = *r++;
    e881a56a:	00140713          	addi	a4,s0,1
    e881a56e:	ff577be3          	bgeu	a4,s5,e881a564 <DNSServiceConstructFullName+0x158>
    e881a572:	00d40023          	sb	a3,0(s0)
    e881a576:	0785                	addi	a5,a5,1
    e881a578:	843a                	mv	s0,a4
    e881a57a:	bdf5                	j	e881a476 <DNSServiceConstructFullName+0x6a>
    while (*d) if (fn+1 >= lim) goto fail;else *fn++ = *d++;
    e881a57c:	00140713          	addi	a4,s0,1
    e881a580:	ff5772e3          	bgeu	a4,s5,e881a564 <DNSServiceConstructFullName+0x158>
    e881a584:	00d40023          	sb	a3,0(s0)
    e881a588:	0785                	addi	a5,a5,1
    e881a58a:	843a                	mv	s0,a4
    e881a58c:	b731                	j	e881a498 <DNSServiceConstructFullName+0x8c>

00000000e881a58e <TXTRecordCreate>:
    TXTRecordRef     *txtRecord,
    uint16_t bufferLen,
    void             *buffer
)
{
    txtRec->buffer   = buffer;
    e881a58e:	e110                	sd	a2,0(a0)
    txtRec->buflen   = buffer ? bufferLen : (uint16_t)0;
    e881a590:	e211                	bnez	a2,e881a594 <TXTRecordCreate+0x6>
    e881a592:	4581                	li	a1,0
    e881a594:	00b51423          	sh	a1,8(a0) # ffffffffffff0008 <__DRAM0_INF_BASE+0xffffffff00000008>
    txtRec->datalen  = 0;
    e881a598:	00052523          	sw	zero,10(a0)
    txtRec->malloced = 0;
}
    e881a59c:	8082                	ret

00000000e881a59e <TXTRecordDeallocate>:

void DNSSD_API TXTRecordDeallocate(TXTRecordRef *txtRecord)
{
    if (txtRec->malloced) free(txtRec->buffer);
    e881a59e:	00c55783          	lhu	a5,12(a0)
    e881a5a2:	c781                	beqz	a5,e881a5aa <TXTRecordDeallocate+0xc>
    e881a5a4:	6108                	ld	a0,0(a0)
    e881a5a6:	55b6106f          	j	e887c300 <eLIBs_free>
}
    e881a5aa:	8082                	ret

00000000e881a5ac <TXTRecordRemoveValue>:
DNSServiceErrorType DNSSD_API TXTRecordRemoveValue
(
    TXTRecordRef     *txtRecord,
    const char       *key
)
{
    e881a5ac:	7179                	addi	sp,sp,-48
    e881a5ae:	ec22                	sd	s0,24(sp)
    e881a5b0:	f406                	sd	ra,40(sp)
    e881a5b2:	f026                	sd	s1,32(sp)
    e881a5b4:	842a                	mv	s0,a0
    unsigned long keylen, itemlen, remainder;
    uint8_t *item = InternalTXTRecordSearch(txtRec->datalen, txtRec->buffer, key, &keylen);
    e881a5b6:	862e                	mv	a2,a1
    e881a5b8:	610c                	ld	a1,0(a0)
    e881a5ba:	00a55503          	lhu	a0,10(a0)
    e881a5be:	0034                	addi	a3,sp,8
    e881a5c0:	dc9ff0ef          	jal	ra,e881a388 <InternalTXTRecordSearch>
    if (!item) return(kDNSServiceErr_NoSuchKey);
    e881a5c4:	c90d                	beqz	a0,e881a5f6 <TXTRecordRemoveValue+0x4a>
    itemlen   = (unsigned long)(1 + item[0]);
    e881a5c6:	00054483          	lbu	s1,0(a0)
    remainder = (unsigned long)((txtRec->buffer + txtRec->datalen) - (item + itemlen));
    e881a5ca:	00a45783          	lhu	a5,10(s0)
    e881a5ce:	6010                	ld	a2,0(s0)
    itemlen   = (unsigned long)(1 + item[0]);
    e881a5d0:	2485                	addiw	s1,s1,1
    remainder = (unsigned long)((txtRec->buffer + txtRec->datalen) - (item + itemlen));
    e881a5d2:	009505b3          	add	a1,a0,s1
    e881a5d6:	963e                	add	a2,a2,a5
    // Use memmove because memcpy behaviour is undefined for overlapping regions
    memmove(item, item + itemlen, remainder);
    e881a5d8:	8e0d                	sub	a2,a2,a1
    e881a5da:	5d3610ef          	jal	ra,e887c3ac <eLIBs_memmove>
    txtRec->datalen -= itemlen;
    e881a5de:	00a45783          	lhu	a5,10(s0)
    return(kDNSServiceErr_NoError);
    e881a5e2:	4501                	li	a0,0
    txtRec->datalen -= itemlen;
    e881a5e4:	409784bb          	subw	s1,a5,s1
    e881a5e8:	00941523          	sh	s1,10(s0)
}
    e881a5ec:	70a2                	ld	ra,40(sp)
    e881a5ee:	6462                	ld	s0,24(sp)
    e881a5f0:	7482                	ld	s1,32(sp)
    e881a5f2:	6145                	addi	sp,sp,48
    e881a5f4:	8082                	ret
    if (!item) return(kDNSServiceErr_NoSuchKey);
    e881a5f6:	7541                	lui	a0,0xffff0
    e881a5f8:	1531                	addi	a0,a0,-20
    e881a5fa:	bfcd                	j	e881a5ec <TXTRecordRemoveValue+0x40>

00000000e881a5fc <TXTRecordSetValue>:
{
    e881a5fc:	711d                	addi	sp,sp,-96
    e881a5fe:	e4a6                	sd	s1,72(sp)
    e881a600:	ec86                	sd	ra,88(sp)
    e881a602:	e8a2                	sd	s0,80(sp)
    e881a604:	e0ca                	sd	s2,64(sp)
    e881a606:	fc4e                	sd	s3,56(sp)
    e881a608:	f852                	sd	s4,48(sp)
    e881a60a:	f456                	sd	s5,40(sp)
    e881a60c:	f05a                	sd	s6,32(sp)
    e881a60e:	ec5e                	sd	s7,24(sp)
    e881a610:	e862                	sd	s8,16(sp)
    e881a612:	e466                	sd	s9,8(sp)
    for (k = key; *k; k++) if (*k < 0x20 || *k > 0x7E || *k == '=') return(kDNSServiceErr_Invalid);
    e881a614:	84ae                	mv	s1,a1
    e881a616:	05e00813          	li	a6,94
    e881a61a:	03d00893          	li	a7,61
    e881a61e:	0004c783          	lbu	a5,0(s1)
    e881a622:	e3e1                	bnez	a5,e881a6e2 <TXTRecordSetValue+0xe6>
    keysize = (unsigned long)(k - key);
    e881a624:	8c8d                	sub	s1,s1,a1
    keyvalsize = 1 + keysize + (value ? (1 + valueSize) : 0);
    e881a626:	4981                	li	s3,0
    e881a628:	c299                	beqz	a3,e881a62e <TXTRecordSetValue+0x32>
    e881a62a:	00160993          	addi	s3,a2,1
    e881a62e:	00148913          	addi	s2,s1,1
    e881a632:	99ca                	add	s3,s3,s2
    if (keysize < 1 || keyvalsize > 255) return(kDNSServiceErr_Invalid);
    e881a634:	cccd                	beqz	s1,e881a6ee <TXTRecordSetValue+0xf2>
    e881a636:	0ff00793          	li	a5,255
    e881a63a:	0b37ea63          	bltu	a5,s3,e881a6ee <TXTRecordSetValue+0xf2>
    e881a63e:	842a                	mv	s0,a0
    (void)TXTRecordRemoveValue(txtRecord, key);
    e881a640:	8ab6                	mv	s5,a3
    e881a642:	8a32                	mv	s4,a2
    e881a644:	8b2e                	mv	s6,a1
    e881a646:	f67ff0ef          	jal	ra,e881a5ac <TXTRecordRemoveValue>
    if (txtRec->datalen + keyvalsize > txtRec->buflen)
    e881a64a:	00a45903          	lhu	s2,10(s0)
    e881a64e:	00845783          	lhu	a5,8(s0)
    e881a652:	994e                	add	s2,s2,s3
    e881a654:	0327fc63          	bgeu	a5,s2,e881a68c <TXTRecordSetValue+0x90>
        if (newlen > 0xFFFF) return(kDNSServiceErr_Invalid);
    e881a658:	67c1                	lui	a5,0x10
    e881a65a:	08f97a63          	bgeu	s2,a5,e881a6ee <TXTRecordSetValue+0xf2>
        newbuf = malloc((size_t)newlen);
    e881a65e:	854a                	mv	a0,s2
    e881a660:	1ee610ef          	jal	ra,e887b84e <my_malloc>
    e881a664:	89aa                	mv	s3,a0
        if (!newbuf) return(kDNSServiceErr_NoMemory);
    e881a666:	c55d                	beqz	a0,e881a714 <TXTRecordSetValue+0x118>
        memcpy(newbuf, txtRec->buffer, txtRec->datalen);
    e881a668:	00a45603          	lhu	a2,10(s0)
    e881a66c:	600c                	ld	a1,0(s0)
    e881a66e:	533610ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        if (txtRec->malloced) free(txtRec->buffer);
    e881a672:	00c45783          	lhu	a5,12(s0)
    e881a676:	c781                	beqz	a5,e881a67e <TXTRecordSetValue+0x82>
    e881a678:	6008                	ld	a0,0(s0)
    e881a67a:	487610ef          	jal	ra,e887c300 <eLIBs_free>
        txtRec->malloced = 1;
    e881a67e:	4785                	li	a5,1
        txtRec->buffer = newbuf;
    e881a680:	01343023          	sd	s3,0(s0)
        txtRec->buflen = (uint16_t)(newlen);
    e881a684:	01241423          	sh	s2,8(s0)
        txtRec->malloced = 1;
    e881a688:	00f41623          	sh	a5,12(s0)
    start = txtRec->buffer + txtRec->datalen;
    e881a68c:	00a45b83          	lhu	s7,10(s0)
    e881a690:	00043c03          	ld	s8,0(s0)
    memcpy(p, key, keysize);
    e881a694:	8626                	mv	a2,s1
    e881a696:	85da                	mv	a1,s6
    start = txtRec->buffer + txtRec->datalen;
    e881a698:	017c0cb3          	add	s9,s8,s7
    p = start + 1;
    e881a69c:	001c8993          	addi	s3,s9,1
    memcpy(p, key, keysize);
    e881a6a0:	854e                	mv	a0,s3
    e881a6a2:	4ff610ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    p += keysize;
    e881a6a6:	00998533          	add	a0,s3,s1
    if (value)
    e881a6aa:	000a8f63          	beqz	s5,e881a6c8 <TXTRecordSetValue+0xcc>
        *p++ = '=';
    e881a6ae:	00150913          	addi	s2,a0,1 # ffffffffffff0001 <__DRAM0_INF_BASE+0xffffffff00000001>
    e881a6b2:	03d00793          	li	a5,61
    e881a6b6:	0099d78b          	srb	a5,s3,s1,0
        memcpy(p, value, valueSize);
    e881a6ba:	8652                	mv	a2,s4
    e881a6bc:	85d6                	mv	a1,s5
    e881a6be:	854a                	mv	a0,s2
    e881a6c0:	4e1610ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        p += valueSize;
    e881a6c4:	01490533          	add	a0,s2,s4
    *start = (uint8_t)(p - start - 1);
    e881a6c8:	41950533          	sub	a0,a0,s9
    e881a6cc:	fff5079b          	addiw	a5,a0,-1
    e881a6d0:	017c578b          	srb	a5,s8,s7,0
    txtRec->datalen += p - start;
    e881a6d4:	00a45783          	lhu	a5,10(s0)
    e881a6d8:	9d3d                	addw	a0,a0,a5
    e881a6da:	00a41523          	sh	a0,10(s0)
    return(kDNSServiceErr_NoError);
    e881a6de:	4501                	li	a0,0
    e881a6e0:	a809                	j	e881a6f2 <TXTRecordSetValue+0xf6>
    for (k = key; *k; k++) if (*k < 0x20 || *k > 0x7E || *k == '=') return(kDNSServiceErr_Invalid);
    e881a6e2:	fe07871b          	addiw	a4,a5,-32
    e881a6e6:	0ff77713          	andi	a4,a4,255
    e881a6ea:	02e87163          	bgeu	a6,a4,e881a70c <TXTRecordSetValue+0x110>
    e881a6ee:	7541                	lui	a0,0xffff0
    e881a6f0:	154d                	addi	a0,a0,-13
}
    e881a6f2:	60e6                	ld	ra,88(sp)
    e881a6f4:	6446                	ld	s0,80(sp)
    e881a6f6:	64a6                	ld	s1,72(sp)
    e881a6f8:	6906                	ld	s2,64(sp)
    e881a6fa:	79e2                	ld	s3,56(sp)
    e881a6fc:	7a42                	ld	s4,48(sp)
    e881a6fe:	7aa2                	ld	s5,40(sp)
    e881a700:	7b02                	ld	s6,32(sp)
    e881a702:	6be2                	ld	s7,24(sp)
    e881a704:	6c42                	ld	s8,16(sp)
    e881a706:	6ca2                	ld	s9,8(sp)
    e881a708:	6125                	addi	sp,sp,96
    e881a70a:	8082                	ret
    for (k = key; *k; k++) if (*k < 0x20 || *k > 0x7E || *k == '=') return(kDNSServiceErr_Invalid);
    e881a70c:	ff1781e3          	beq	a5,a7,e881a6ee <TXTRecordSetValue+0xf2>
    e881a710:	0485                	addi	s1,s1,1
    e881a712:	b731                	j	e881a61e <TXTRecordSetValue+0x22>
        if (!newbuf) return(kDNSServiceErr_NoMemory);
    e881a714:	7541                	lui	a0,0xffff0
    e881a716:	1575                	addi	a0,a0,-3
    e881a718:	bfe9                	j	e881a6f2 <TXTRecordSetValue+0xf6>

00000000e881a71a <TXTRecordGetLength>:

uint16_t DNSSD_API TXTRecordGetLength  (const TXTRecordRef *txtRecord) { return(txtRec->datalen); }
    e881a71a:	00a55503          	lhu	a0,10(a0) # ffffffffffff000a <__DRAM0_INF_BASE+0xffffffff0000000a>
    e881a71e:	8082                	ret

00000000e881a720 <TXTRecordGetBytesPtr>:
const void * DNSSD_API TXTRecordGetBytesPtr(const TXTRecordRef *txtRecord) { return(txtRec->buffer); }
    e881a720:	6108                	ld	a0,0(a0)
    e881a722:	8082                	ret

00000000e881a724 <TXTRecordGetValuePtr>:
    uint16_t txtLen,
    const void       *txtRecord,
    const char       *key,
    uint8_t          *valueLen
)
{
    e881a724:	1101                	addi	sp,sp,-32
    e881a726:	e822                	sd	s0,16(sp)
    e881a728:	8436                	mv	s0,a3
    unsigned long keylen;
    uint8_t *item = InternalTXTRecordSearch(txtLen, txtRecord, key, &keylen);
    e881a72a:	0034                	addi	a3,sp,8
{
    e881a72c:	ec06                	sd	ra,24(sp)
    uint8_t *item = InternalTXTRecordSearch(txtLen, txtRecord, key, &keylen);
    e881a72e:	c5bff0ef          	jal	ra,e881a388 <InternalTXTRecordSearch>
    if (!item || item[0] <= keylen) return(NULL);   // If key not found, or found with no value, return NULL
    e881a732:	cd09                	beqz	a0,e881a74c <TXTRecordGetValuePtr+0x28>
    e881a734:	00054683          	lbu	a3,0(a0)
    e881a738:	67a2                	ld	a5,8(sp)
    e881a73a:	00d7fd63          	bgeu	a5,a3,e881a754 <TXTRecordGetValuePtr+0x30>
    *valueLen = (uint8_t)(item[0] - (keylen + 1));
    e881a73e:	fff7c713          	not	a4,a5
    e881a742:	9f35                	addw	a4,a4,a3
    return (item + 1 + keylen + 1);
    e881a744:	0789                	addi	a5,a5,2
    *valueLen = (uint8_t)(item[0] - (keylen + 1));
    e881a746:	00e40023          	sb	a4,0(s0)
    return (item + 1 + keylen + 1);
    e881a74a:	953e                	add	a0,a0,a5
}
    e881a74c:	60e2                	ld	ra,24(sp)
    e881a74e:	6442                	ld	s0,16(sp)
    e881a750:	6105                	addi	sp,sp,32
    e881a752:	8082                	ret
    if (!item || item[0] <= keylen) return(NULL);   // If key not found, or found with no value, return NULL
    e881a754:	4501                	li	a0,0
    e881a756:	bfdd                	j	e881a74c <TXTRecordGetValuePtr+0x28>

00000000e881a758 <FreeDNSServiceRegistration>:

//*************************************************************************************************************
// Register Service

mDNSlocal void FreeDNSServiceRegistration(mDNS_DirectOP_Register *x)
{
    e881a758:	1101                	addi	sp,sp,-32
    e881a75a:	e422                	sd	s0,8(sp)
    e881a75c:	ec06                	sd	ra,24(sp)
    e881a75e:	e826                	sd	s1,16(sp)
    e881a760:	842a                	mv	s0,a0
    while (x->s.Extras)
    e881a762:	17843483          	ld	s1,376(s0)
    e881a766:	e88d                	bnez	s1,e881a798 <FreeDNSServiceRegistration+0x40>
        if (extras->r.resrec.rdata != &extras->r.rdatastorage)
            mDNSPlatformMemFree(extras->r.resrec.rdata);
        mDNSPlatformMemFree(extras);
    }

    if (x->s.RR_TXT.resrec.rdata != &x->s.RR_TXT.rdatastorage)
    e881a768:	6785                	lui	a5,0x1
    e881a76a:	00f40733          	add	a4,s0,a5
    e881a76e:	e0073503          	ld	a0,-512(a4) # 2e00 <memcmp-0xe87fd200>
    e881a772:	0d078793          	addi	a5,a5,208 # 10d0 <memcmp-0xe87fef30>
    e881a776:	97a2                	add	a5,a5,s0
    e881a778:	00f50463          	beq	a0,a5,e881a780 <FreeDNSServiceRegistration+0x28>
        mDNSPlatformMemFree(x->s.RR_TXT.resrec.rdata);
    e881a77c:	307150ef          	jal	ra,e8830282 <mDNSPlatformMemFree>

    if (x->s.SubTypes) mDNSPlatformMemFree(x->s.SubTypes);
    e881a780:	18843503          	ld	a0,392(s0)
    e881a784:	c119                	beqz	a0,e881a78a <FreeDNSServiceRegistration+0x32>
    e881a786:	2fd150ef          	jal	ra,e8830282 <mDNSPlatformMemFree>

    mDNSPlatformMemFree(x);
    e881a78a:	8522                	mv	a0,s0
}
    e881a78c:	6422                	ld	s0,8(sp)
    e881a78e:	60e2                	ld	ra,24(sp)
    e881a790:	64c2                	ld	s1,16(sp)
    e881a792:	6105                	addi	sp,sp,32
    mDNSPlatformMemFree(x);
    e881a794:	2ef1506f          	j	e8830282 <mDNSPlatformMemFree>
        x->s.Extras = x->s.Extras->next;
    e881a798:	609c                	ld	a5,0(s1)
    e881a79a:	16f43c23          	sd	a5,376(s0)
        if (extras->r.resrec.rdata != &extras->r.rdatastorage)
    e881a79e:	60a8                	ld	a0,64(s1)
    e881a7a0:	31048793          	addi	a5,s1,784
    e881a7a4:	00f50463          	beq	a0,a5,e881a7ac <FreeDNSServiceRegistration+0x54>
            mDNSPlatformMemFree(extras->r.resrec.rdata);
    e881a7a8:	2db150ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
        mDNSPlatformMemFree(extras);
    e881a7ac:	8526                	mv	a0,s1
    e881a7ae:	2d5150ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    e881a7b2:	bf45                	j	e881a762 <FreeDNSServiceRegistration+0xa>

00000000e881a7b4 <FoundInstance>:
    mDNS_StopBrowse(&mDNSStorage, &x->q);
    mDNSPlatformMemFree(x);
}

mDNSlocal void FoundInstance(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, QC_result AddRecord)
{
    e881a7b4:	81010113          	addi	sp,sp,-2032
    e881a7b8:	7d413023          	sd	s4,1984(sp)
    e881a7bc:	7e113423          	sd	ra,2024(sp)
    e881a7c0:	7e813023          	sd	s0,2016(sp)
    e881a7c4:	7c913c23          	sd	s1,2008(sp)
    e881a7c8:	7d213823          	sd	s2,2000(sp)
    e881a7cc:	7d313423          	sd	s3,1992(sp)
    e881a7d0:	7b513c23          	sd	s5,1976(sp)
    e881a7d4:	7b613823          	sd	s6,1968(sp)
    e881a7d8:	8a32                	mv	s4,a2
    char ctype[MAX_ESCAPED_DOMAIN_NAME];
    char cdom [MAX_ESCAPED_DOMAIN_NAME];
    mDNS_DirectOP_Browse *x = (mDNS_DirectOP_Browse*)question->QuestionContext;
    (void)m;        // Unused

    if (answer->rrtype != kDNSType_PTR)
    e881a7da:	00265603          	lhu	a2,2(a2)
    e881a7de:	47b1                	li	a5,12
{
    e881a7e0:	d4010113          	addi	sp,sp,-704
    if (answer->rrtype != kDNSType_PTR)
    e881a7e4:	02f60e63          	beq	a2,a5,e881a820 <FoundInstance+0x6c>
    { LogMsg("FoundInstance: Should not be called with rrtype %d (not a PTR record)", answer->rrtype); return; }
    e881a7e8:	00089597          	auipc	a1,0x89
    e881a7ec:	4e058593          	addi	a1,a1,1248 # e88a3cc8 <end.8789+0x620>
    e881a7f0:	4501                	li	a0,0
    e881a7f2:	4bb140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    ConvertDomainLabelToCString_unescaped(&name, cname);
    ConvertDomainNameToCString(&type, ctype);
    ConvertDomainNameToCString(&domain, cdom);
    if (x->callback)
        x->callback((DNSServiceRef)x, flags, INTERFACE_INDEX, 0, cname, ctype, cdom, x->context);
}
    e881a7f6:	2c010113          	addi	sp,sp,704
    e881a7fa:	7e813083          	ld	ra,2024(sp)
    e881a7fe:	7e013403          	ld	s0,2016(sp)
    e881a802:	7d813483          	ld	s1,2008(sp)
    e881a806:	7d013903          	ld	s2,2000(sp)
    e881a80a:	7c813983          	ld	s3,1992(sp)
    e881a80e:	7c013a03          	ld	s4,1984(sp)
    e881a812:	7b813a83          	ld	s5,1976(sp)
    e881a816:	7b013b03          	ld	s6,1968(sp)
    e881a81a:	7f010113          	addi	sp,sp,2032
    e881a81e:	8082                	ret
    if (!DeconstructServiceName(&answer->rdata->u.name, &name, &type, &domain))
    e881a820:	6785                	lui	a5,0x1
    e881a822:	a7078713          	addi	a4,a5,-1424 # a70 <memcmp-0xe87ff590>
    e881a826:	747d                	lui	s0,0xfffff
    e881a828:	970a                	add	a4,a4,sp
    e881a82a:	71040493          	addi	s1,s0,1808 # fffffffffffff710 <__DRAM0_INF_BASE+0xffffffff0000f710>
    e881a82e:	94ba                	add	s1,s1,a4
    e881a830:	028a3503          	ld	a0,40(s4)
    e881a834:	a7078713          	addi	a4,a5,-1424
    e881a838:	970a                	add	a4,a4,sp
    e881a83a:	61040913          	addi	s2,s0,1552
    e881a83e:	59040993          	addi	s3,s0,1424
    e881a842:	993a                	add	s2,s2,a4
    e881a844:	99ba                	add	s3,s3,a4
    e881a846:	00d03b33          	snez	s6,a3
    mDNS_DirectOP_Browse *x = (mDNS_DirectOP_Browse*)question->QuestionContext;
    e881a84a:	3505ba83          	ld	s5,848(a1)
    if (!DeconstructServiceName(&answer->rdata->u.name, &name, &type, &domain))
    e881a84e:	86a6                	mv	a3,s1
    e881a850:	864a                	mv	a2,s2
    e881a852:	85ce                	mv	a1,s3
    e881a854:	0511                	addi	a0,a0,4
    e881a856:	806f90ef          	jal	ra,e881385c <DeconstructServiceName>
    e881a85a:	ed09                	bnez	a0,e881a874 <FoundInstance+0xc0>
        LogMsg("FoundInstance: %##s PTR %##s received from network is not valid DNS-SD service pointer",
    e881a85c:	028a3683          	ld	a3,40(s4)
    e881a860:	020a3603          	ld	a2,32(s4)
    e881a864:	00089597          	auipc	a1,0x89
    e881a868:	4ac58593          	addi	a1,a1,1196 # e88a3d10 <end.8789+0x668>
    e881a86c:	0691                	addi	a3,a3,4
    e881a86e:	43f140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return;
    e881a872:	b751                	j	e881a7f6 <FoundInstance+0x42>
    ConvertDomainLabelToCString_unescaped(&name, cname);
    e881a874:	6785                	lui	a5,0x1
    e881a876:	a7078793          	addi	a5,a5,-1424 # a70 <memcmp-0xe87ff590>
    e881a87a:	978a                	add	a5,a5,sp
    e881a87c:	5d040413          	addi	s0,s0,1488
    e881a880:	943e                	add	s0,s0,a5
    e881a882:	4601                	li	a2,0
    e881a884:	85a2                	mv	a1,s0
    e881a886:	854e                	mv	a0,s3
    e881a888:	c51f80ef          	jal	ra,e88134d8 <ConvertDomainLabelToCString_withescape>
    ConvertDomainNameToCString(&type, ctype);
    e881a88c:	05c00613          	li	a2,92
    e881a890:	050c                	addi	a1,sp,640
    e881a892:	854a                	mv	a0,s2
    e881a894:	caff80ef          	jal	ra,e8813542 <ConvertDomainNameToCString_withescape>
    ConvertDomainNameToCString(&domain, cdom);
    e881a898:	05c00613          	li	a2,92
    e881a89c:	67810593          	addi	a1,sp,1656
    e881a8a0:	8526                	mv	a0,s1
    e881a8a2:	ca1f80ef          	jal	ra,e8813542 <ConvertDomainNameToCString_withescape>
    if (x->callback)
    e881a8a6:	008ab303          	ld	t1,8(s5)
    e881a8aa:	f40306e3          	beqz	t1,e881a7f6 <FoundInstance+0x42>
        x->callback((DNSServiceRef)x, flags, INTERFACE_INDEX, 0, cname, ctype, cdom, x->context);
    e881a8ae:	010ab883          	ld	a7,16(s5)
    e881a8b2:	0b06                	slli	s6,s6,0x1
    e881a8b4:	67810813          	addi	a6,sp,1656
    e881a8b8:	051c                	addi	a5,sp,640
    e881a8ba:	8722                	mv	a4,s0
    e881a8bc:	4681                	li	a3,0
    e881a8be:	4609                	li	a2,2
    e881a8c0:	85da                	mv	a1,s6
    e881a8c2:	8556                	mv	a0,s5
    e881a8c4:	9302                	jalr	t1
    e881a8c6:	bf05                	j	e881a7f6 <FoundInstance+0x42>

00000000e881a8c8 <FoundServiceInfo>:
    if (x->qTXT.ThisQInterval >= 0) mDNS_StopQuery(&mDNSStorage, &x->qTXT);
    mDNSPlatformMemFree(x);
}

mDNSlocal void FoundServiceInfo(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, QC_result AddRecord)
{
    e881a8c8:	1101                	addi	sp,sp,-32
    e881a8ca:	ec06                	sd	ra,24(sp)
    e881a8cc:	e822                	sd	s0,16(sp)
    mDNS_DirectOP_Resolve *x = (mDNS_DirectOP_Resolve*)question->QuestionContext;
    (void)m;    // Unused
    if (!AddRecord)
    {
        if (answer->rrtype == kDNSType_SRV && x->SRV == answer) x->SRV = mDNSNULL;
    e881a8ce:	02100713          	li	a4,33
{
    e881a8d2:	81010113          	addi	sp,sp,-2032
    mDNS_DirectOP_Resolve *x = (mDNS_DirectOP_Resolve*)question->QuestionContext;
    e881a8d6:	3505b403          	ld	s0,848(a1)
    if (!AddRecord)
    e881a8da:	00265783          	lhu	a5,2(a2)
    e881a8de:	ea85                	bnez	a3,e881a90e <FoundServiceInfo+0x46>
        if (answer->rrtype == kDNSType_SRV && x->SRV == answer) x->SRV = mDNSNULL;
    e881a8e0:	00e79763          	bne	a5,a4,e881a8ee <FoundServiceInfo+0x26>
    e881a8e4:	6c1c                	ld	a5,24(s0)
    e881a8e6:	00c79e63          	bne	a5,a2,e881a902 <FoundServiceInfo+0x3a>
    e881a8ea:	00043c23          	sd	zero,24(s0)
        if (answer->rrtype == kDNSType_TXT && x->TXT == answer) x->TXT = mDNSNULL;
    e881a8ee:	00265703          	lhu	a4,2(a2)
    e881a8f2:	47c1                	li	a5,16
    e881a8f4:	00f71763          	bne	a4,a5,e881a902 <FoundServiceInfo+0x3a>
    e881a8f8:	701c                	ld	a5,32(s0)
    e881a8fa:	00c79463          	bne	a5,a2,e881a902 <FoundServiceInfo+0x3a>
    e881a8fe:	02043023          	sd	zero,32(s0)
            ConvertDomainNameToCString(&x->SRV->rdata->u.srv.target, targethost);
            x->callback((DNSServiceRef)x, 0, INTERFACE_INDEX, kDNSServiceErr_NoError, fullname, targethost,
                        x->SRV->rdata->u.srv.port.NotAnInteger, x->TXT->rdlength, (unsigned char*)x->TXT->rdata->u.txt.c, x->context);
        }
    }
}
    e881a902:	7f010113          	addi	sp,sp,2032
    e881a906:	60e2                	ld	ra,24(sp)
    e881a908:	6442                	ld	s0,16(sp)
    e881a90a:	6105                	addi	sp,sp,32
    e881a90c:	8082                	ret
        if (answer->rrtype == kDNSType_SRV) x->SRV = answer;
    e881a90e:	00e79363          	bne	a5,a4,e881a914 <FoundServiceInfo+0x4c>
    e881a912:	ec10                	sd	a2,24(s0)
        if (answer->rrtype == kDNSType_TXT) x->TXT = answer;
    e881a914:	00265703          	lhu	a4,2(a2)
    e881a918:	47c1                	li	a5,16
    e881a91a:	00f71363          	bne	a4,a5,e881a920 <FoundServiceInfo+0x58>
    e881a91e:	f010                	sd	a2,32(s0)
        if (x->SRV && x->TXT && x->callback)
    e881a920:	6c1c                	ld	a5,24(s0)
    e881a922:	d3e5                	beqz	a5,e881a902 <FoundServiceInfo+0x3a>
    e881a924:	701c                	ld	a5,32(s0)
    e881a926:	dff1                	beqz	a5,e881a902 <FoundServiceInfo+0x3a>
    e881a928:	641c                	ld	a5,8(s0)
    e881a92a:	dfe1                	beqz	a5,e881a902 <FoundServiceInfo+0x3a>
    e881a92c:	87b2                	mv	a5,a2
            ConvertDomainNameToCString(answer->name, fullname);
    e881a92e:	7388                	ld	a0,32(a5)
    e881a930:	080c                	addi	a1,sp,16
    e881a932:	05c00613          	li	a2,92
    e881a936:	c0df80ef          	jal	ra,e8813542 <ConvertDomainNameToCString_withescape>
            ConvertDomainNameToCString(&x->SRV->rdata->u.srv.target, targethost);
    e881a93a:	6c1c                	ld	a5,24(s0)
    e881a93c:	40810593          	addi	a1,sp,1032
    e881a940:	05c00613          	li	a2,92
    e881a944:	7788                	ld	a0,40(a5)
    e881a946:	0529                	addi	a0,a0,10
    e881a948:	bfbf80ef          	jal	ra,e8813542 <ConvertDomainNameToCString_withescape>
                        x->SRV->rdata->u.srv.port.NotAnInteger, x->TXT->rdlength, (unsigned char*)x->TXT->rdata->u.txt.c, x->context);
    e881a94c:	6c18                	ld	a4,24(s0)
    e881a94e:	701c                	ld	a5,32(s0)
            x->callback((DNSServiceRef)x, 0, INTERFACE_INDEX, kDNSServiceErr_NoError, fullname, targethost,
    e881a950:	4681                	li	a3,0
    e881a952:	7718                	ld	a4,40(a4)
    e881a954:	00c7d883          	lhu	a7,12(a5)
    e881a958:	4609                	li	a2,2
    e881a95a:	00875803          	lhu	a6,8(a4)
    e881a95e:	6818                	ld	a4,16(s0)
    e881a960:	4581                	li	a1,0
    e881a962:	8522                	mv	a0,s0
    e881a964:	e43a                	sd	a4,8(sp)
                        x->SRV->rdata->u.srv.port.NotAnInteger, x->TXT->rdlength, (unsigned char*)x->TXT->rdata->u.txt.c, x->context);
    e881a966:	779c                	ld	a5,40(a5)
            x->callback((DNSServiceRef)x, 0, INTERFACE_INDEX, kDNSServiceErr_NoError, fullname, targethost,
    e881a968:	0818                	addi	a4,sp,16
                        x->SRV->rdata->u.srv.port.NotAnInteger, x->TXT->rdlength, (unsigned char*)x->TXT->rdata->u.txt.c, x->context);
    e881a96a:	0791                	addi	a5,a5,4
            x->callback((DNSServiceRef)x, 0, INTERFACE_INDEX, kDNSServiceErr_NoError, fullname, targethost,
    e881a96c:	e03e                	sd	a5,0(sp)
    e881a96e:	00843303          	ld	t1,8(s0)
    e881a972:	40810793          	addi	a5,sp,1032
    e881a976:	9302                	jalr	t1
}
    e881a978:	b769                	j	e881a902 <FoundServiceInfo+0x3a>

00000000e881a97a <DNSServiceQueryRecordResponse>:
    if (x->q.ThisQInterval >= 0) mDNS_StopQuery(&mDNSStorage, &x->q);
    mDNSPlatformMemFree(x);
}

mDNSlocal void DNSServiceQueryRecordResponse(mDNS *const m, DNSQuestion *question, const ResourceRecord *const answer, QC_result AddRecord)
{
    e881a97a:	bb010113          	addi	sp,sp,-1104
    e881a97e:	44813023          	sd	s0,1088(sp)
    e881a982:	8432                	mv	s0,a2
    mDNS_DirectOP_QueryRecord *x = (mDNS_DirectOP_QueryRecord*)question->QuestionContext;
    char fullname[MAX_ESCAPED_DOMAIN_NAME];
    (void)m;    // Unused
    ConvertDomainNameToCString(answer->name, fullname);
    e881a984:	7008                	ld	a0,32(s0)
{
    e881a986:	44113423          	sd	ra,1096(sp)
    e881a98a:	42913c23          	sd	s1,1080(sp)
    ConvertDomainNameToCString(answer->name, fullname);
    e881a98e:	05c00613          	li	a2,92
    mDNS_DirectOP_QueryRecord *x = (mDNS_DirectOP_QueryRecord*)question->QuestionContext;
    e881a992:	3505b483          	ld	s1,848(a1)
    ConvertDomainNameToCString(answer->name, fullname);
    e881a996:	182c                	addi	a1,sp,56
{
    e881a998:	f436                	sd	a3,40(sp)
    ConvertDomainNameToCString(answer->name, fullname);
    e881a99a:	ba9f80ef          	jal	ra,e8813542 <ConvertDomainNameToCString_withescape>
    x->callback((DNSServiceRef)x, AddRecord ? kDNSServiceFlagsAdd : (DNSServiceFlags)0, INTERFACE_INDEX, kDNSServiceErr_NoError,
    e881a99e:	689c                	ld	a5,16(s1)
    e881a9a0:	0084b303          	ld	t1,8(s1)
    e881a9a4:	76a2                	ld	a3,40(sp)
    e881a9a6:	e83e                	sd	a5,16(sp)
    e881a9a8:	441c                	lw	a5,8(s0)
    e881a9aa:	00c45883          	lhu	a7,12(s0)
    e881a9ae:	00445803          	lhu	a6,4(s0)
    e881a9b2:	e43e                	sd	a5,8(sp)
                fullname, answer->rrtype, answer->rrclass, answer->rdlength, answer->rdata->u.data, answer->rroriginalttl, x->context);
    e881a9b4:	741c                	ld	a5,40(s0)
    x->callback((DNSServiceRef)x, AddRecord ? kDNSServiceFlagsAdd : (DNSServiceFlags)0, INTERFACE_INDEX, kDNSServiceErr_NoError,
    e881a9b6:	00d035b3          	snez	a1,a3
    e881a9ba:	1838                	addi	a4,sp,56
                fullname, answer->rrtype, answer->rrclass, answer->rdlength, answer->rdata->u.data, answer->rroriginalttl, x->context);
    e881a9bc:	0791                	addi	a5,a5,4
    x->callback((DNSServiceRef)x, AddRecord ? kDNSServiceFlagsAdd : (DNSServiceFlags)0, INTERFACE_INDEX, kDNSServiceErr_NoError,
    e881a9be:	e03e                	sd	a5,0(sp)
    e881a9c0:	00245783          	lhu	a5,2(s0)
    e881a9c4:	8526                	mv	a0,s1
    e881a9c6:	4681                	li	a3,0
    e881a9c8:	4609                	li	a2,2
    e881a9ca:	0586                	slli	a1,a1,0x1
    e881a9cc:	9302                	jalr	t1
}
    e881a9ce:	44013403          	ld	s0,1088(sp)
    e881a9d2:	44813083          	ld	ra,1096(sp)
    e881a9d6:	43813483          	ld	s1,1080(sp)
    e881a9da:	45010113          	addi	sp,sp,1104
    e881a9de:	8082                	ret

00000000e881a9e0 <RegCallback>:
{
    e881a9e0:	81010113          	addi	sp,sp,-2032
    e881a9e4:	7b813023          	sd	s8,1952(sp)
    if (!DeconstructServiceName(sr->RR_SRV.resrec.name, &name, &type, &dom)) return;
    e881a9e8:	6c05                	lui	s8,0x1
{
    e881a9ea:	7c913c23          	sd	s1,2008(sp)
    e881a9ee:	7d213823          	sd	s2,2000(sp)
    e881a9f2:	7d313423          	sd	s3,1992(sp)
    e881a9f6:	7d413023          	sd	s4,1984(sp)
    e881a9fa:	7b513c23          	sd	s5,1976(sp)
    e881a9fe:	7b613823          	sd	s6,1968(sp)
    e881aa02:	7b713423          	sd	s7,1960(sp)
    e881aa06:	7e113423          	sd	ra,2024(sp)
    e881aa0a:	7e813023          	sd	s0,2016(sp)
    if (!DeconstructServiceName(sr->RR_SRV.resrec.name, &name, &type, &dom)) return;
    e881aa0e:	a70c0793          	addi	a5,s8,-1424 # a70 <memcmp-0xe87ff590>
{
    e881aa12:	d3010113          	addi	sp,sp,-720
    if (!DeconstructServiceName(sr->RR_SRV.resrec.name, &name, &type, &dom)) return;
    e881aa16:	74fd                	lui	s1,0xfffff
    e881aa18:	978a                	add	a5,a5,sp
    e881aa1a:	71048993          	addi	s3,s1,1808 # fffffffffffff710 <__DRAM0_INF_BASE+0xffffffff0000f710>
    e881aa1e:	99be                	add	s3,s3,a5
    e881aa20:	a70c0793          	addi	a5,s8,-1424
    e881aa24:	978a                	add	a5,a5,sp
    e881aa26:	61048a13          	addi	s4,s1,1552
    e881aa2a:	9a3e                	add	s4,s4,a5
    e881aa2c:	a70c0793          	addi	a5,s8,-1424
    e881aa30:	978a                	add	a5,a5,sp
    e881aa32:	59048a93          	addi	s5,s1,1424
    e881aa36:	9abe                	add	s5,s5,a5
    e881aa38:	6785                	lui	a5,0x1
    e881aa3a:	97ae                	add	a5,a5,a1
{
    e881aa3c:	8b2a                	mv	s6,a0
    if (!DeconstructServiceName(sr->RR_SRV.resrec.name, &name, &type, &dom)) return;
    e881aa3e:	8887b503          	ld	a0,-1912(a5) # 888 <memcmp-0xe87ff778>
{
    e881aa42:	8bae                	mv	s7,a1
    e881aa44:	8932                	mv	s2,a2
    mDNS_DirectOP_Register *x = (mDNS_DirectOP_Register*)sr->ServiceContext;
    e881aa46:	6580                	ld	s0,8(a1)
    if (!DeconstructServiceName(sr->RR_SRV.resrec.name, &name, &type, &dom)) return;
    e881aa48:	86ce                	mv	a3,s3
    e881aa4a:	8652                	mv	a2,s4
    e881aa4c:	85d6                	mv	a1,s5
    e881aa4e:	e0ff80ef          	jal	ra,e881385c <DeconstructServiceName>
    e881aa52:	cd21                	beqz	a0,e881aaaa <RegCallback+0xca>
    if (!ConvertDomainLabelToCString_unescaped(&name, namestr)) return;
    e881aa54:	a70c0793          	addi	a5,s8,-1424
    e881aa58:	5d048493          	addi	s1,s1,1488
    e881aa5c:	978a                	add	a5,a5,sp
    e881aa5e:	94be                	add	s1,s1,a5
    e881aa60:	4601                	li	a2,0
    e881aa62:	85a6                	mv	a1,s1
    e881aa64:	8556                	mv	a0,s5
    e881aa66:	a73f80ef          	jal	ra,e88134d8 <ConvertDomainLabelToCString_withescape>
    e881aa6a:	c121                	beqz	a0,e881aaaa <RegCallback+0xca>
    if (!ConvertDomainNameToCString(&type, typestr)) return;
    e881aa6c:	05c00613          	li	a2,92
    e881aa70:	050c                	addi	a1,sp,640
    e881aa72:	8552                	mv	a0,s4
    e881aa74:	acff80ef          	jal	ra,e8813542 <ConvertDomainNameToCString_withescape>
    e881aa78:	c90d                	beqz	a0,e881aaaa <RegCallback+0xca>
    if (!ConvertDomainNameToCString(&dom, domstr)) return;
    e881aa7a:	05c00613          	li	a2,92
    e881aa7e:	67810593          	addi	a1,sp,1656
    e881aa82:	854e                	mv	a0,s3
    e881aa84:	abff80ef          	jal	ra,e8813542 <ConvertDomainNameToCString_withescape>
    e881aa88:	c10d                	beqz	a0,e881aaaa <RegCallback+0xca>
    if (result == mStatus_NoError)
    e881aa8a:	04091963          	bnez	s2,e881aadc <RegCallback+0xfc>
        if (x->callback)
    e881aa8e:	00843883          	ld	a7,8(s0)
    e881aa92:	00088c63          	beqz	a7,e881aaaa <RegCallback+0xca>
            x->callback((DNSServiceRef)x, 0, result, namestr, typestr, domstr, x->context);
    e881aa96:	01043803          	ld	a6,16(s0)
    e881aa9a:	67810793          	addi	a5,sp,1656
    e881aa9e:	0518                	addi	a4,sp,640
    e881aaa0:	86a6                	mv	a3,s1
    e881aaa2:	4601                	li	a2,0
            x->callback((DNSServiceRef)x, 0, result, namestr, typestr, domstr, x->context);
    e881aaa4:	4581                	li	a1,0
    e881aaa6:	8522                	mv	a0,s0
    e881aaa8:	9882                	jalr	a7
}
    e881aaaa:	2d010113          	addi	sp,sp,720
    e881aaae:	7e813083          	ld	ra,2024(sp)
    e881aab2:	7e013403          	ld	s0,2016(sp)
    e881aab6:	7d813483          	ld	s1,2008(sp)
    e881aaba:	7d013903          	ld	s2,2000(sp)
    e881aabe:	7c813983          	ld	s3,1992(sp)
    e881aac2:	7c013a03          	ld	s4,1984(sp)
    e881aac6:	7b813a83          	ld	s5,1976(sp)
    e881aaca:	7b013b03          	ld	s6,1968(sp)
    e881aace:	7a813b83          	ld	s7,1960(sp)
    e881aad2:	7a013c03          	ld	s8,1952(sp)
    e881aad6:	7f010113          	addi	sp,sp,2032
    e881aada:	8082                	ret
    else if (result == mStatus_NameConflict)
    e881aadc:	77c1                	lui	a5,0xffff0
    e881aade:	ff478713          	addi	a4,a5,-12 # fffffffffffefff4 <__DRAM0_INF_BASE+0xfffffffefffffff4>
    e881aae2:	02e91763          	bne	s2,a4,e881ab10 <RegCallback+0x130>
        if (x->autoname) mDNS_RenameAndReregisterService(m, sr, mDNSNULL);
    e881aae6:	01844783          	lbu	a5,24(s0)
    e881aaea:	c799                	beqz	a5,e881aaf8 <RegCallback+0x118>
    e881aaec:	4601                	li	a2,0
    e881aaee:	85de                	mv	a1,s7
            mDNS_RenameAndReregisterService(m, &x->s, &x->name);
    e881aaf0:	855a                	mv	a0,s6
    e881aaf2:	78a0a0ef          	jal	ra,e882527c <mDNS_RenameAndReregisterService>
    e881aaf6:	bf55                	j	e881aaaa <RegCallback+0xca>
        else if (x->callback)
    e881aaf8:	00843883          	ld	a7,8(s0)
    e881aafc:	fa0887e3          	beqz	a7,e881aaaa <RegCallback+0xca>
            x->callback((DNSServiceRef)x, 0, result, namestr, typestr, domstr, x->context);
    e881ab00:	01043803          	ld	a6,16(s0)
    e881ab04:	67810793          	addi	a5,sp,1656
    e881ab08:	0518                	addi	a4,sp,640
    e881ab0a:	86a6                	mv	a3,s1
    e881ab0c:	864a                	mv	a2,s2
    e881ab0e:	bf59                	j	e881aaa4 <RegCallback+0xc4>
    else if (result == mStatus_MemFree)
    e881ab10:	f0078793          	addi	a5,a5,-256
    e881ab14:	f8f91be3          	bne	s2,a5,e881aaaa <RegCallback+0xca>
        if (x->autorename)
    e881ab18:	01944783          	lbu	a5,25(s0)
    e881ab1c:	c395                	beqz	a5,e881ab40 <RegCallback+0x160>
            x->name = mDNSStorage.nicelabel;
    e881ab1e:	01a40793          	addi	a5,s0,26
    e881ab22:	04000613          	li	a2,64
    e881ab26:	000c0597          	auipc	a1,0xc0
    e881ab2a:	2da58593          	addi	a1,a1,730 # e88dae00 <mDNSStorage+0x2a28>
            x->autorename = mDNSfalse;
    e881ab2e:	00040ca3          	sb	zero,25(s0)
            x->name = mDNSStorage.nicelabel;
    e881ab32:	853e                	mv	a0,a5
    e881ab34:	d34e50ef          	jal	ra,e8800068 <memcpy>
            mDNS_RenameAndReregisterService(m, &x->s, &x->name);
    e881ab38:	862a                	mv	a2,a0
    e881ab3a:	16040593          	addi	a1,s0,352
    e881ab3e:	bf4d                	j	e881aaf0 <RegCallback+0x110>
            FreeDNSServiceRegistration(x);
    e881ab40:	8522                	mv	a0,s0
    e881ab42:	c17ff0ef          	jal	ra,e881a758 <FreeDNSServiceRegistration>
    e881ab46:	b795                	j	e881aaaa <RegCallback+0xca>

00000000e881ab48 <DNSServiceRegisterDispose>:
{
    e881ab48:	1141                	addi	sp,sp,-16
    e881ab4a:	e022                	sd	s0,0(sp)
    e881ab4c:	e406                	sd	ra,8(sp)
    e881ab4e:	842a                	mv	s0,a0
    x->autorename = mDNSfalse;
    e881ab50:	00050ca3          	sb	zero,25(a0)
    if (mDNS_DeregisterService(&mDNSStorage, &x->s) != mStatus_NoError)
    e881ab54:	16050593          	addi	a1,a0,352
    e881ab58:	4601                	li	a2,0
    e881ab5a:	000be517          	auipc	a0,0xbe
    e881ab5e:	87e50513          	addi	a0,a0,-1922 # e88d83d8 <mDNSStorage>
    e881ab62:	6cf090ef          	jal	ra,e8824a30 <mDNS_DeregisterService_drt>
    e881ab66:	c519                	beqz	a0,e881ab74 <DNSServiceRegisterDispose+0x2c>
        FreeDNSServiceRegistration(x);
    e881ab68:	8522                	mv	a0,s0
}
    e881ab6a:	6402                	ld	s0,0(sp)
    e881ab6c:	60a2                	ld	ra,8(sp)
    e881ab6e:	0141                	addi	sp,sp,16
        FreeDNSServiceRegistration(x);
    e881ab70:	be9ff06f          	j	e881a758 <FreeDNSServiceRegistration>
}
    e881ab74:	60a2                	ld	ra,8(sp)
    e881ab76:	6402                	ld	s0,0(sp)
    e881ab78:	0141                	addi	sp,sp,16
    e881ab7a:	8082                	ret

00000000e881ab7c <DNSServiceBrowseDispose>:
{
    e881ab7c:	1141                	addi	sp,sp,-16
    e881ab7e:	e022                	sd	s0,0(sp)
    mDNS_StopBrowse(&mDNSStorage, &x->q);
    e881ab80:	01850593          	addi	a1,a0,24
{
    e881ab84:	842a                	mv	s0,a0
    mDNS_StopBrowse(&mDNSStorage, &x->q);
    e881ab86:	000be517          	auipc	a0,0xbe
    e881ab8a:	85250513          	addi	a0,a0,-1966 # e88d83d8 <mDNSStorage>
{
    e881ab8e:	e406                	sd	ra,8(sp)
    mDNS_StopBrowse(&mDNSStorage, &x->q);
    e881ab90:	1d5090ef          	jal	ra,e8824564 <mDNS_StopQuery>
    mDNSPlatformMemFree(x);
    e881ab94:	8522                	mv	a0,s0
}
    e881ab96:	6402                	ld	s0,0(sp)
    e881ab98:	60a2                	ld	ra,8(sp)
    e881ab9a:	0141                	addi	sp,sp,16
    mDNSPlatformMemFree(x);
    e881ab9c:	6e61506f          	j	e8830282 <mDNSPlatformMemFree>

00000000e881aba0 <DNSServiceResolveDispose>:
{
    e881aba0:	1141                	addi	sp,sp,-16
    e881aba2:	e022                	sd	s0,0(sp)
    e881aba4:	e406                	sd	ra,8(sp)
    if (x->qSRV.ThisQInterval >= 0) mDNS_StopQuery(&mDNSStorage, &x->qSRV);
    e881aba6:	5d5c                	lw	a5,60(a0)
{
    e881aba8:	842a                	mv	s0,a0
    if (x->qSRV.ThisQInterval >= 0) mDNS_StopQuery(&mDNSStorage, &x->qSRV);
    e881abaa:	0007ca63          	bltz	a5,e881abbe <DNSServiceResolveDispose+0x1e>
    e881abae:	02850593          	addi	a1,a0,40
    e881abb2:	000be517          	auipc	a0,0xbe
    e881abb6:	82650513          	addi	a0,a0,-2010 # e88d83d8 <mDNSStorage>
    e881abba:	1ab090ef          	jal	ra,e8824564 <mDNS_StopQuery>
    if (x->qTXT.ThisQInterval >= 0) mDNS_StopQuery(&mDNSStorage, &x->qTXT);
    e881abbe:	39442783          	lw	a5,916(s0)
    e881abc2:	0007ca63          	bltz	a5,e881abd6 <DNSServiceResolveDispose+0x36>
    e881abc6:	38040593          	addi	a1,s0,896
    e881abca:	000be517          	auipc	a0,0xbe
    e881abce:	80e50513          	addi	a0,a0,-2034 # e88d83d8 <mDNSStorage>
    e881abd2:	193090ef          	jal	ra,e8824564 <mDNS_StopQuery>
    mDNSPlatformMemFree(x);
    e881abd6:	8522                	mv	a0,s0
}
    e881abd8:	6402                	ld	s0,0(sp)
    e881abda:	60a2                	ld	ra,8(sp)
    e881abdc:	0141                	addi	sp,sp,16
    mDNSPlatformMemFree(x);
    e881abde:	6a41506f          	j	e8830282 <mDNSPlatformMemFree>

00000000e881abe2 <DNSServiceQueryRecordDispose>:
{
    e881abe2:	1141                	addi	sp,sp,-16
    e881abe4:	e022                	sd	s0,0(sp)
    e881abe6:	e406                	sd	ra,8(sp)
    if (x->q.ThisQInterval >= 0) mDNS_StopQuery(&mDNSStorage, &x->q);
    e881abe8:	555c                	lw	a5,44(a0)
{
    e881abea:	842a                	mv	s0,a0
    if (x->q.ThisQInterval >= 0) mDNS_StopQuery(&mDNSStorage, &x->q);
    e881abec:	0007ca63          	bltz	a5,e881ac00 <DNSServiceQueryRecordDispose+0x1e>
    e881abf0:	01850593          	addi	a1,a0,24
    e881abf4:	000bd517          	auipc	a0,0xbd
    e881abf8:	7e450513          	addi	a0,a0,2020 # e88d83d8 <mDNSStorage>
    e881abfc:	169090ef          	jal	ra,e8824564 <mDNS_StopQuery>
    mDNSPlatformMemFree(x);
    e881ac00:	8522                	mv	a0,s0
}
    e881ac02:	6402                	ld	s0,0(sp)
    e881ac04:	60a2                	ld	ra,8(sp)
    e881ac06:	0141                	addi	sp,sp,16
    mDNSPlatformMemFree(x);
    e881ac08:	67a1506f          	j	e8830282 <mDNSPlatformMemFree>

00000000e881ac0c <DNSServiceGetAddrInfoResponse>:
    uint16_t inRRClass,
    uint16_t inRDLen,
    const void *        inRData,
    uint32_t inTTL,
    void *              inContext )
{
    e881ac0c:	7175                	addi	sp,sp,-144
    e881ac0e:	fca6                	sd	s1,120(sp)
    e881ac10:	f8ca                	sd	s2,112(sp)
    e881ac12:	f4ce                	sd	s3,104(sp)
    e881ac14:	f0d2                	sd	s4,96(sp)
    e881ac16:	ecd6                	sd	s5,88(sp)
    e881ac18:	e8da                	sd	s6,80(sp)
    e881ac1a:	e4de                	sd	s7,72(sp)
    e881ac1c:	e506                	sd	ra,136(sp)
    e881ac1e:	e122                	sd	s0,128(sp)
    e881ac20:	8bba                	mv	s7,a4
    mDNS_DirectOP_GetAddrInfo *     x = (mDNS_DirectOP_GetAddrInfo*)inContext;
    struct sockaddr_in sa4;
    struct sockaddr_in6 sa6;
	const struct sockaddr *const sa = (inRRType == kDNSServiceType_A) ? (struct sockaddr*)&sa4 : (struct sockaddr*)&sa6;
    e881ac22:	4705                	li	a4,1
{
    e881ac24:	8b2e                	mv	s6,a1
    e881ac26:	84b2                	mv	s1,a2
    e881ac28:	8a36                	mv	s4,a3
    e881ac2a:	6aca                	ld	s5,144(sp)
    e881ac2c:	790a                	ld	s2,160(sp)
	const struct sockaddr *const sa = (inRRType == kDNSServiceType_A) ? (struct sockaddr*)&sa4 : (struct sockaddr*)&sa6;
    e881ac2e:	02010993          	addi	s3,sp,32
    e881ac32:	00e79463          	bne	a5,a4,e881ac3a <DNSServiceGetAddrInfoResponse+0x2e>
    e881ac36:	01010993          	addi	s3,sp,16

    LogMsg("DNSServiceGetAddrInfoResponse %d,%d\n", inInterfaceIndex,inRDLen);
    e881ac3a:	0008841b          	sext.w	s0,a7
    e881ac3e:	00089597          	auipc	a1,0x89
    e881ac42:	e7a58593          	addi	a1,a1,-390 # e88a3ab8 <end.8789+0x410>
    e881ac46:	4501                	li	a0,0
    e881ac48:	86a2                	mv	a3,s0
    e881ac4a:	8626                	mv	a2,s1
    e881ac4c:	e43e                	sd	a5,8(sp)
    e881ac4e:	05f140ef          	jal	ra,e882f4ac <LogMsgWithLevel>

    mDNSPlatformMemZero(&sa4, sizeof(sa4));
    e881ac52:	45c1                	li	a1,16
    e881ac54:	0808                	addi	a0,sp,16
    e881ac56:	6a1140ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    if (inErrorCode == kDNSServiceErr_NoError && inRRType == kDNSServiceType_A)
    e881ac5a:	020a1463          	bnez	s4,e881ac82 <DNSServiceGetAddrInfoResponse+0x76>
    e881ac5e:	67a2                	ld	a5,8(sp)
    e881ac60:	4705                	li	a4,1
    e881ac62:	04e79763          	bne	a5,a4,e881acb0 <DNSServiceGetAddrInfoResponse+0xa4>
    {
        memset(&sa4, 0, sizeof(sa4));
    e881ac66:	4641                	li	a2,16
    e881ac68:	4581                	li	a1,0
    e881ac6a:	0808                	addi	a0,sp,16
    e881ac6c:	728610ef          	jal	ra,e887c394 <eLIBs_memset>
        #ifndef NOT_HAVE_SA_LEN
        sa4.sin_len = sizeof(struct sockaddr_in);
    e881ac70:	21000793          	li	a5,528
        #endif
        sa4.sin_family = AF_INET;
        mDNSPlatformMemCopy(&sa4.sin_addr.s_addr, inRData, inRDLen);
    e881ac74:	8622                	mv	a2,s0
    e881ac76:	85d6                	mv	a1,s5
    e881ac78:	0848                	addi	a0,sp,20
        sa4.sin_len = sizeof(struct sockaddr_in);
    e881ac7a:	00f11823          	sh	a5,16(sp)
        mDNSPlatformMemCopy(&sa4.sin_addr.s_addr, inRData, inRDLen);
    e881ac7e:	623140ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
	

    //x->callback((DNSServiceRef)x, inFlags, inInterfaceIndex, inErrorCode, inFullName,
    //            inRRType,inRRClass,inRDLen,(const struct sockaddr *) &sa4, inTTL, x->context);

    x->callback((DNSServiceRef)x, inFlags, inInterfaceIndex, inErrorCode, inFullName,
    e881ac82:	00893303          	ld	t1,8(s2)
    e881ac86:	01093883          	ld	a7,16(s2)
    e881ac8a:	486a                	lw	a6,152(sp)
    e881ac8c:	87ce                	mv	a5,s3
    e881ac8e:	875e                	mv	a4,s7
    e881ac90:	86d2                	mv	a3,s4
    e881ac92:	8626                	mv	a2,s1
    e881ac94:	85da                	mv	a1,s6
    e881ac96:	854a                	mv	a0,s2
    e881ac98:	9302                	jalr	t1
                (const struct sockaddr *) sa, inTTL, x->context);
}
    e881ac9a:	640a                	ld	s0,128(sp)
    e881ac9c:	60aa                	ld	ra,136(sp)
    e881ac9e:	74e6                	ld	s1,120(sp)
    e881aca0:	7946                	ld	s2,112(sp)
    e881aca2:	79a6                	ld	s3,104(sp)
    e881aca4:	7a06                	ld	s4,96(sp)
    e881aca6:	6ae6                	ld	s5,88(sp)
    e881aca8:	6b46                	ld	s6,80(sp)
    e881acaa:	6ba6                	ld	s7,72(sp)
    e881acac:	6149                	addi	sp,sp,144
    e881acae:	8082                	ret
    if (inErrorCode == kDNSServiceErr_NoError && inRRType == kDNSServiceType_AAAA)
    e881acb0:	4771                	li	a4,28
    e881acb2:	fce798e3          	bne	a5,a4,e881ac82 <DNSServiceGetAddrInfoResponse+0x76>
        memset(&sa6, 0, sizeof(sa6));
    e881acb6:	4671                	li	a2,28
    e881acb8:	4581                	li	a1,0
    e881acba:	1008                	addi	a0,sp,32
    e881acbc:	6d8610ef          	jal	ra,e887c394 <eLIBs_memset>
        sa6.sin6_len = sizeof(struct sockaddr_in6);
    e881acc0:	6785                	lui	a5,0x1
    e881acc2:	a1c7879b          	addiw	a5,a5,-1508
        mDNSPlatformMemCopy(&sa6.sin6_addr, inRData, inRDLen);
    e881acc6:	8622                	mv	a2,s0
    e881acc8:	85d6                	mv	a1,s5
    e881acca:	1028                	addi	a0,sp,40
        sa6.sin6_len = sizeof(struct sockaddr_in6);
    e881accc:	02f11023          	sh	a5,32(sp)
        mDNSPlatformMemCopy(&sa6.sin6_addr, inRData, inRDLen);
    e881acd0:	5d1140ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
		sa6.sin6_scope_id = inInterfaceIndex;
    e881acd4:	dc26                	sw	s1,56(sp)
    e881acd6:	b775                	j	e881ac82 <DNSServiceGetAddrInfoResponse+0x76>

00000000e881acd8 <DNSServiceRefSockFD>:
}
    e881acd8:	4501                	li	a0,0
    e881acda:	8082                	ret

00000000e881acdc <DNSServiceProcessResult>:
    e881acdc:	4501                	li	a0,0
    e881acde:	8082                	ret

00000000e881ace0 <DNSServiceRefDeallocate>:
    op->disposefn(op);
    e881ace0:	00053303          	ld	t1,0(a0)
    e881ace4:	8302                	jr	t1

00000000e881ace6 <DNSServiceGetAddrInfoDispose>:
{
    e881ace6:	1141                	addi	sp,sp,-16
    e881ace8:	e022                	sd	s0,0(sp)
    e881acea:	e406                	sd	ra,8(sp)
    e881acec:	842a                	mv	s0,a0
    if (x->aQuery) DNSServiceRefDeallocate(x->aQuery);
    e881acee:	6d08                	ld	a0,24(a0)
    e881acf0:	c119                	beqz	a0,e881acf6 <DNSServiceGetAddrInfoDispose+0x10>
    e881acf2:	fefff0ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    mDNSPlatformMemFree(x);
    e881acf6:	8522                	mv	a0,s0
}
    e881acf8:	6402                	ld	s0,0(sp)
    e881acfa:	60a2                	ld	ra,8(sp)
    e881acfc:	0141                	addi	sp,sp,16
    mDNSPlatformMemFree(x);
    e881acfe:	5841506f          	j	e8830282 <mDNSPlatformMemFree>

00000000e881ad02 <DNSServiceRegister>:
{
    e881ad02:	b3010113          	addi	sp,sp,-1232
    e881ad06:	4b213823          	sd	s2,1200(sp)
    e881ad0a:	893a                	mv	s2,a4
    e881ad0c:	4c813023          	sd	s0,1216(sp)
    e881ad10:	49513c23          	sd	s5,1176(sp)
    e881ad14:	49713423          	sd	s7,1160(sp)
    e881ad18:	49813023          	sd	s8,1152(sp)
    e881ad1c:	8436                	mv	s0,a3
    e881ad1e:	8aaa                	mv	s5,a0
    e881ad20:	8bae                	mv	s7,a1
    e881ad22:	8c32                	mv	s8,a2
    LogMsg("DNSServiceRegister(\"%s\", \"%s\"),%d", regtype, domain,interfaceIndex);
    e881ad24:	8732                	mv	a4,a2
    e881ad26:	86be                	mv	a3,a5
    e881ad28:	864a                	mv	a2,s2
    e881ad2a:	00089597          	auipc	a1,0x89
    e881ad2e:	eb658593          	addi	a1,a1,-330 # e88a3be0 <end.8789+0x538>
    e881ad32:	4501                	li	a0,0
{
    e881ad34:	4a913c23          	sd	s1,1208(sp)
    e881ad38:	4b313423          	sd	s3,1192(sp)
    e881ad3c:	4b413023          	sd	s4,1184(sp)
    e881ad40:	49613823          	sd	s6,1168(sp)
    e881ad44:	4c113423          	sd	ra,1224(sp)
    e881ad48:	89be                	mv	s3,a5
    e881ad4a:	84c2                	mv	s1,a6
    e881ad4c:	8b46                	mv	s6,a7
    e881ad4e:	4d015a03          	lhu	s4,1232(sp)
    LogMsg("DNSServiceRegister(\"%s\", \"%s\"),%d", regtype, domain,interfaceIndex);
    e881ad52:	75a140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!name) name = "";
    e881ad56:	cc11                	beqz	s0,e881ad72 <DNSServiceRegister+0x70>
    if (!name[0]) n = mDNSStorage.nicelabel;
    e881ad58:	00044783          	lbu	a5,0(s0)
    e881ad5c:	cf99                	beqz	a5,e881ad7a <DNSServiceRegister+0x78>
    else if (!MakeDomainLabelFromLiteralString(&n, name))                              { errormsg = "Bad Instance Name"; goto badparam; }
    e881ad5e:	85a2                	mv	a1,s0
    e881ad60:	0088                	addi	a0,sp,64
    e881ad62:	f42f80ef          	jal	ra,e88134a4 <MakeDomainLabelFromLiteralString>
    e881ad66:	e11d                	bnez	a0,e881ad8c <DNSServiceRegister+0x8a>
    e881ad68:	00089717          	auipc	a4,0x89
    e881ad6c:	e5070713          	addi	a4,a4,-432 # e88a3bb8 <end.8789+0x510>
    e881ad70:	a025                	j	e881ad98 <DNSServiceRegister+0x96>
    if (!name) name = "";
    e881ad72:	000a6417          	auipc	s0,0xa6
    e881ad76:	4fe40413          	addi	s0,s0,1278 # e88c1270 <kHTTPServerClass+0x90>
    if (!name[0]) n = mDNSStorage.nicelabel;
    e881ad7a:	04000613          	li	a2,64
    e881ad7e:	000c0597          	auipc	a1,0xc0
    e881ad82:	08258593          	addi	a1,a1,130 # e88dae00 <mDNSStorage+0x2a28>
    e881ad86:	0088                	addi	a0,sp,64
    e881ad88:	ae0e50ef          	jal	ra,e8800068 <memcpy>
    if (!regtype || !*regtype || !MakeDomainNameFromDNSNameString2(&t, regtype))        { errormsg = "Bad Service Type";  goto badparam; }
    e881ad8c:	00091963          	bnez	s2,e881ad9e <DNSServiceRegister+0x9c>
    e881ad90:	00089717          	auipc	a4,0x89
    e881ad94:	df070713          	addi	a4,a4,-528 # e88a3b80 <end.8789+0x4d8>
    err = mStatus_BadParamErr;
    e881ad98:	7441                	lui	s0,0xffff0
    e881ad9a:	1471                	addi	s0,s0,-4
    e881ad9c:	aa31                	j	e881aeb8 <DNSServiceRegister+0x1b6>
    if (!regtype || !*regtype || !MakeDomainNameFromDNSNameString2(&t, regtype))        { errormsg = "Bad Service Type";  goto badparam; }
    e881ad9e:	00094783          	lbu	a5,0(s2)
    e881ada2:	d7fd                	beqz	a5,e881ad90 <DNSServiceRegister+0x8e>
    e881ada4:	85ca                	mv	a1,s2
    e881ada6:	0108                	addi	a0,sp,128
    e881ada8:	f28f80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e881adac:	d175                	beqz	a0,e881ad90 <DNSServiceRegister+0x8e>
    if (!MakeDomainNameFromDNSNameString2(&d, (domain && *domain) ? domain : "local.")) { errormsg = "Bad Domain";        goto badparam; }
    e881adae:	00089597          	auipc	a1,0x89
    e881adb2:	da258593          	addi	a1,a1,-606 # e88a3b50 <end.8789+0x4a8>
    e881adb6:	00098663          	beqz	s3,e881adc2 <DNSServiceRegister+0xc0>
    e881adba:	0009c783          	lbu	a5,0(s3)
    e881adbe:	42f9958b          	mvnez	a1,s3,a5
    e881adc2:	0308                	addi	a0,sp,384
    e881adc4:	f0cf80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e881adc8:	14050463          	beqz	a0,e881af10 <DNSServiceRegister+0x20e>
    if (!MakeDomainNameFromDNSNameString2(&h, (host   && *host  ) ? host   : ""))       { errormsg = "Bad Target Host";   goto badparam; }
    e881adcc:	10048163          	beqz	s1,e881aece <DNSServiceRegister+0x1cc>
    e881add0:	0004c783          	lbu	a5,0(s1)
    e881add4:	0e078d63          	beqz	a5,e881aece <DNSServiceRegister+0x1cc>
    e881add8:	85a6                	mv	a1,s1
    e881adda:	0508                	addi	a0,sp,640
    e881addc:	ef4f80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e881ade0:	12050d63          	beqz	a0,e881af1a <DNSServiceRegister+0x218>
    if (!ConstructServiceName(&srv, &n, &t, &d))                                       { errormsg = "Bad Name";          goto badparam; }
    e881ade4:	0314                	addi	a3,sp,384
    e881ade6:	0110                	addi	a2,sp,128
    e881ade8:	008c                	addi	a1,sp,64
    e881adea:	0708                	addi	a0,sp,896
    e881adec:	fbcf80ef          	jal	ra,e88135a8 <ConstructServiceName>
    e881adf0:	12050a63          	beqz	a0,e881af24 <DNSServiceRegister+0x222>
    x = (mDNS_DirectOP_Register *)mDNSPlatformMemAllocate(sizeof(*x) - sizeof(RDataBody) + size);
    e881adf4:	10800793          	li	a5,264
    e881adf8:	8552                	mv	a0,s4
    e881adfa:	00fa7463          	bgeu	s4,a5,e881ae02 <DNSServiceRegister+0x100>
    e881adfe:	10800513          	li	a0,264
    e881ae02:	0105151b          	slliw	a0,a0,0x10
    e881ae06:	6785                	lui	a5,0x1
    e881ae08:	0d87879b          	addiw	a5,a5,216
    e881ae0c:	0105551b          	srliw	a0,a0,0x10
    e881ae10:	953e                	add	a0,a0,a5
    e881ae12:	450150ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e881ae16:	84aa                	mv	s1,a0
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881ae18:	10050b63          	beqz	a0,e881af2e <DNSServiceRegister+0x22c>
	InterfaceID = mDNSPlatformInterfaceIDfromInterfaceIndex(&mDNSStorage, interfaceIndex);
    e881ae1c:	85e2                	mv	a1,s8
    e881ae1e:	000bd517          	auipc	a0,0xbd
    e881ae22:	5ba50513          	addi	a0,a0,1466 # e88d83d8 <mDNSStorage>
    e881ae26:	303140ef          	jal	ra,e882f928 <mDNSPlatformInterfaceIDfromInterfaceIndex>
    e881ae2a:	8c2a                	mv	s8,a0
    x->disposefn = DNSServiceRegisterDispose;
    e881ae2c:	00000797          	auipc	a5,0x0
    e881ae30:	d1c78793          	addi	a5,a5,-740 # e881ab48 <DNSServiceRegisterDispose>
    e881ae34:	e09c                	sd	a5,0(s1)
    x->callback  = callback;
    e881ae36:	4e013783          	ld	a5,1248(sp)
    x->name = n;
    e881ae3a:	04000613          	li	a2,64
    e881ae3e:	008c                	addi	a1,sp,64
    x->callback  = callback;
    e881ae40:	e49c                	sd	a5,8(s1)
    x->context   = context;
    e881ae42:	4e813783          	ld	a5,1256(sp)
    e881ae46:	e89c                	sd	a5,16(s1)
    x->autoname = (!name[0]);
    e881ae48:	00044783          	lbu	a5,0(s0) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    x->name = n;
    e881ae4c:	01a48413          	addi	s0,s1,26
    e881ae50:	8522                	mv	a0,s0
    x->autoname = (!name[0]);
    e881ae52:	0017b793          	seqz	a5,a5
    e881ae56:	00f48c23          	sb	a5,24(s1)
    x->autorename = mDNSfalse;
    e881ae5a:	00048ca3          	sb	zero,25(s1)
    x->name = n;
    e881ae5e:	a0ae50ef          	jal	ra,e8800068 <memcpy>
    x->host = h;
    e881ae62:	05a48793          	addi	a5,s1,90
    e881ae66:	10000613          	li	a2,256
    e881ae6a:	050c                	addi	a1,sp,640
    e881ae6c:	853e                	mv	a0,a5
    e881ae6e:	9fae50ef          	jal	ra,e8800068 <memcpy>
    e881ae72:	87aa                	mv	a5,a0
    err = mDNS_RegisterService(&mDNSStorage, &x->s,
    e881ae74:	00000717          	auipc	a4,0x0
    e881ae78:	b6c70713          	addi	a4,a4,-1172 # e881a9e0 <RegCallback>
    e881ae7c:	4d813883          	ld	a7,1240(sp)
    e881ae80:	f03a                	sd	a4,32(sp)
    e881ae82:	8622                	mv	a2,s0
    e881ae84:	f85e                	sd	s7,48(sp)
    e881ae86:	f426                	sd	s1,40(sp)
    e881ae88:	ec62                	sd	s8,24(sp)
    e881ae8a:	e802                	sd	zero,16(sp)
    e881ae8c:	e402                	sd	zero,8(sp)
    e881ae8e:	e052                	sd	s4,0(sp)
    e881ae90:	885a                	mv	a6,s6
    e881ae92:	0318                	addi	a4,sp,384
    e881ae94:	0114                	addi	a3,sp,128
    e881ae96:	16048593          	addi	a1,s1,352
    e881ae9a:	000bd517          	auipc	a0,0xbd
    e881ae9e:	53e50513          	addi	a0,a0,1342 # e88d83d8 <mDNSStorage>
    e881aea2:	6cd090ef          	jal	ra,e8824d6e <mDNS_RegisterService>
    e881aea6:	842a                	mv	s0,a0
    if (err) { mDNSPlatformMemFree(x); errormsg = "mDNS_RegisterService"; goto fail; }
    e881aea8:	c905                	beqz	a0,e881aed8 <DNSServiceRegister+0x1d6>
    e881aeaa:	8526                	mv	a0,s1
    e881aeac:	3d6150ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    e881aeb0:	00089717          	auipc	a4,0x89
    e881aeb4:	cb870713          	addi	a4,a4,-840 # e88a3b68 <end.8789+0x4c0>
    LogMsg("DNSServiceRegister(\"%s\", \"%s\") failed: %s (%ld)", regtype, domain, errormsg, err);
    e881aeb8:	87a2                	mv	a5,s0
    e881aeba:	86ce                	mv	a3,s3
    e881aebc:	864a                	mv	a2,s2
    e881aebe:	00089597          	auipc	a1,0x89
    e881aec2:	d4a58593          	addi	a1,a1,-694 # e88a3c08 <end.8789+0x560>
    e881aec6:	4501                	li	a0,0
    e881aec8:	5e4140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return(err);
    e881aecc:	a811                	j	e881aee0 <DNSServiceRegister+0x1de>
    if (!MakeDomainNameFromDNSNameString2(&h, (host   && *host  ) ? host   : ""))       { errormsg = "Bad Target Host";   goto badparam; }
    e881aece:	000a6497          	auipc	s1,0xa6
    e881aed2:	3a248493          	addi	s1,s1,930 # e88c1270 <kHTTPServerClass+0x90>
    e881aed6:	b709                	j	e881add8 <DNSServiceRegister+0xd6>
	NotifyCarplayAction();
    e881aed8:	371140ef          	jal	ra,e882fa48 <NotifyCarplayAction>
    *sdRef = (DNSServiceRef)x;
    e881aedc:	009ab023          	sd	s1,0(s5)
}
    e881aee0:	8522                	mv	a0,s0
    e881aee2:	4c813083          	ld	ra,1224(sp)
    e881aee6:	4c013403          	ld	s0,1216(sp)
    e881aeea:	4b813483          	ld	s1,1208(sp)
    e881aeee:	4b013903          	ld	s2,1200(sp)
    e881aef2:	4a813983          	ld	s3,1192(sp)
    e881aef6:	4a013a03          	ld	s4,1184(sp)
    e881aefa:	49813a83          	ld	s5,1176(sp)
    e881aefe:	49013b03          	ld	s6,1168(sp)
    e881af02:	48813b83          	ld	s7,1160(sp)
    e881af06:	48013c03          	ld	s8,1152(sp)
    e881af0a:	4d010113          	addi	sp,sp,1232
    e881af0e:	8082                	ret
    if (!MakeDomainNameFromDNSNameString2(&d, (domain && *domain) ? domain : "local.")) { errormsg = "Bad Domain";        goto badparam; }
    e881af10:	00089717          	auipc	a4,0x89
    e881af14:	c9870713          	addi	a4,a4,-872 # e88a3ba8 <end.8789+0x500>
    e881af18:	b541                	j	e881ad98 <DNSServiceRegister+0x96>
    if (!MakeDomainNameFromDNSNameString2(&h, (host   && *host  ) ? host   : ""))       { errormsg = "Bad Target Host";   goto badparam; }
    e881af1a:	00089717          	auipc	a4,0x89
    e881af1e:	c3e70713          	addi	a4,a4,-962 # e88a3b58 <end.8789+0x4b0>
    e881af22:	bd9d                	j	e881ad98 <DNSServiceRegister+0x96>
    if (!ConstructServiceName(&srv, &n, &t, &d))                                       { errormsg = "Bad Name";          goto badparam; }
    e881af24:	00089717          	auipc	a4,0x89
    e881af28:	c7470713          	addi	a4,a4,-908 # e88a3b98 <end.8789+0x4f0>
    e881af2c:	b5b5                	j	e881ad98 <DNSServiceRegister+0x96>
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881af2e:	7441                	lui	s0,0xffff0
    e881af30:	00089717          	auipc	a4,0x89
    e881af34:	ca070713          	addi	a4,a4,-864 # e88a3bd0 <end.8789+0x528>
    e881af38:	1475                	addi	s0,s0,-3
    e881af3a:	bfbd                	j	e881aeb8 <DNSServiceRegister+0x1b6>

00000000e881af3c <DNSServiceUpdateRecord>:
}
    e881af3c:	7541                	lui	a0,0xffff0
    e881af3e:	1561                	addi	a0,a0,-8
    e881af40:	8082                	ret

00000000e881af42 <DNSServiceBrowse>:
{
    e881af42:	d9010113          	addi	sp,sp,-624
    e881af46:	25213823          	sd	s2,592(sp)
    e881af4a:	25313423          	sd	s3,584(sp)
    e881af4e:	8936                	mv	s2,a3
    e881af50:	89ba                	mv	s3,a4
    e881af52:	26813023          	sd	s0,608(sp)
    e881af56:	25413023          	sd	s4,576(sp)
    e881af5a:	23513c23          	sd	s5,568(sp)
    LogMsg("DNSServiceBrowse(\"%s\", \"%s\"),%d", regtype, domain,interfaceIndex);
    e881af5e:	8732                	mv	a4,a2
{
    e881af60:	8aaa                	mv	s5,a0
    e881af62:	842e                	mv	s0,a1
    e881af64:	8a32                	mv	s4,a2
    LogMsg("DNSServiceBrowse(\"%s\", \"%s\"),%d", regtype, domain,interfaceIndex);
    e881af66:	86ce                	mv	a3,s3
    e881af68:	864a                	mv	a2,s2
    e881af6a:	00089597          	auipc	a1,0x89
    e881af6e:	aae58593          	addi	a1,a1,-1362 # e88a3a18 <end.8789+0x370>
    e881af72:	4501                	li	a0,0
{
    e881af74:	23613823          	sd	s6,560(sp)
    e881af78:	23713423          	sd	s7,552(sp)
    e881af7c:	26113423          	sd	ra,616(sp)
    e881af80:	8bbe                	mv	s7,a5
    e881af82:	24913c23          	sd	s1,600(sp)
    e881af86:	8b42                	mv	s6,a6
    LogMsg("DNSServiceBrowse(\"%s\", \"%s\"),%d", regtype, domain,interfaceIndex);
    e881af88:	524140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!regtype[0] || !MakeDomainNameFromDNSNameString2(&t, regtype))      { errormsg = "Illegal regtype"; goto badparam; }
    e881af8c:	00094783          	lbu	a5,0(s2)
    e881af90:	cff9                	beqz	a5,e881b06e <DNSServiceBrowse+0x12c>
    e881af92:	85ca                	mv	a1,s2
    e881af94:	1008                	addi	a0,sp,32
    e881af96:	d3af80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e881af9a:	c971                	beqz	a0,e881b06e <DNSServiceBrowse+0x12c>
    if (!MakeDomainNameFromDNSNameString2(&d, *domain ? domain : "local.")) { errormsg = "Illegal domain";  goto badparam; }
    e881af9c:	0009c783          	lbu	a5,0(s3)
    e881afa0:	85ce                	mv	a1,s3
    e881afa2:	e789                	bnez	a5,e881afac <DNSServiceBrowse+0x6a>
    e881afa4:	00089597          	auipc	a1,0x89
    e881afa8:	bac58593          	addi	a1,a1,-1108 # e88a3b50 <end.8789+0x4a8>
    e881afac:	1208                	addi	a0,sp,288
    e881afae:	d22f80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e881afb2:	c569                	beqz	a0,e881b07c <DNSServiceBrowse+0x13a>
    x = (mDNS_DirectOP_Browse *)mDNSPlatformMemAllocate(sizeof(*x));
    e881afb4:	37000513          	li	a0,880
    e881afb8:	2aa150ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e881afbc:	84aa                	mv	s1,a0
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881afbe:	c561                	beqz	a0,e881b086 <DNSServiceBrowse+0x144>
	InterfaceID = mDNSPlatformInterfaceIDfromInterfaceIndex(&mDNSStorage, interfaceIndex);
    e881afc0:	85d2                	mv	a1,s4
    e881afc2:	000bd517          	auipc	a0,0xbd
    e881afc6:	41650513          	addi	a0,a0,1046 # e88d83d8 <mDNSStorage>
    e881afca:	15f140ef          	jal	ra,e882f928 <mDNSPlatformInterfaceIDfromInterfaceIndex>
    x->context   = context;
    e881afce:	0164b823          	sd	s6,16(s1)
    x->disposefn = DNSServiceBrowseDispose;
    e881afd2:	00000797          	auipc	a5,0x0
    e881afd6:	baa78793          	addi	a5,a5,-1110 # e881ab7c <DNSServiceBrowseDispose>
    x->callback  = callback;
    e881afda:	f974d78b          	sdd	a5,s7,(s1),0,4
    x->q.QuestionContext = x;
    e881afde:	3694b423          	sd	s1,872(s1)
    err = mDNS_StartBrowse(&mDNSStorage, &x->q, &t, &d, mDNSNULL, InterfaceID, flags, (flags & kDNSServiceFlagsForceMulticast) != 0, (flags & kDNSServiceFlagsBackgroundTrafficClass) != 0, FoundInstance, x);
    e881afe2:	fffff797          	auipc	a5,0xfffff
    e881afe6:	7d278793          	addi	a5,a5,2002 # e881a7b4 <FoundInstance>
    e881afea:	e43e                	sd	a5,8(sp)
    e881afec:	4d34378b          	extu	a5,s0,19,19
    e881aff0:	e03e                	sd	a5,0(sp)
    e881aff2:	28a4388b          	extu	a7,s0,10,10
    e881aff6:	8822                	mv	a6,s0
    e881aff8:	87aa                	mv	a5,a0
    e881affa:	e826                	sd	s1,16(sp)
    e881affc:	4701                	li	a4,0
    e881affe:	1214                	addi	a3,sp,288
    e881b000:	1010                	addi	a2,sp,32
    e881b002:	01848593          	addi	a1,s1,24
    e881b006:	000bd517          	auipc	a0,0xbd
    e881b00a:	3d250513          	addi	a0,a0,978 # e88d83d8 <mDNSStorage>
    e881b00e:	626100ef          	jal	ra,e882b634 <mDNS_StartBrowse>
    e881b012:	842a                	mv	s0,a0
    if (err) { mDNSPlatformMemFree(x); errormsg = "mDNS_StartBrowse"; goto fail; }
    e881b014:	c11d                	beqz	a0,e881b03a <DNSServiceBrowse+0xf8>
    e881b016:	8526                	mv	a0,s1
    e881b018:	26a150ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    e881b01c:	00089717          	auipc	a4,0x89
    e881b020:	9d470713          	addi	a4,a4,-1580 # e88a39f0 <end.8789+0x348>
    LogMsg("DNSServiceBrowse(\"%s\", \"%s\") failed: %s (%ld)", regtype, domain, errormsg, err);
    e881b024:	87a2                	mv	a5,s0
    e881b026:	86ce                	mv	a3,s3
    e881b028:	864a                	mv	a2,s2
    e881b02a:	00089597          	auipc	a1,0x89
    e881b02e:	a0e58593          	addi	a1,a1,-1522 # e88a3a38 <end.8789+0x390>
    e881b032:	4501                	li	a0,0
    e881b034:	478140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return(err);
    e881b038:	a029                	j	e881b042 <DNSServiceBrowse+0x100>
	NotifyCarplayAction();
    e881b03a:	20f140ef          	jal	ra,e882fa48 <NotifyCarplayAction>
    *sdRef = (DNSServiceRef)x;
    e881b03e:	009ab023          	sd	s1,0(s5)
}
    e881b042:	8522                	mv	a0,s0
    e881b044:	26813083          	ld	ra,616(sp)
    e881b048:	26013403          	ld	s0,608(sp)
    e881b04c:	25813483          	ld	s1,600(sp)
    e881b050:	25013903          	ld	s2,592(sp)
    e881b054:	24813983          	ld	s3,584(sp)
    e881b058:	24013a03          	ld	s4,576(sp)
    e881b05c:	23813a83          	ld	s5,568(sp)
    e881b060:	23013b03          	ld	s6,560(sp)
    e881b064:	22813b83          	ld	s7,552(sp)
    e881b068:	27010113          	addi	sp,sp,624
    e881b06c:	8082                	ret
    if (!regtype[0] || !MakeDomainNameFromDNSNameString2(&t, regtype))      { errormsg = "Illegal regtype"; goto badparam; }
    e881b06e:	00089717          	auipc	a4,0x89
    e881b072:	97270713          	addi	a4,a4,-1678 # e88a39e0 <end.8789+0x338>
    err = mStatus_BadParamErr;
    e881b076:	7441                	lui	s0,0xffff0
    e881b078:	1471                	addi	s0,s0,-4
    e881b07a:	b76d                	j	e881b024 <DNSServiceBrowse+0xe2>
    if (!MakeDomainNameFromDNSNameString2(&d, *domain ? domain : "local.")) { errormsg = "Illegal domain";  goto badparam; }
    e881b07c:	00089717          	auipc	a4,0x89
    e881b080:	98c70713          	addi	a4,a4,-1652 # e88a3a08 <end.8789+0x360>
    e881b084:	bfcd                	j	e881b076 <DNSServiceBrowse+0x134>
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881b086:	7441                	lui	s0,0xffff0
    e881b088:	00089717          	auipc	a4,0x89
    e881b08c:	b4870713          	addi	a4,a4,-1208 # e88a3bd0 <end.8789+0x528>
    e881b090:	1475                	addi	s0,s0,-3
    e881b092:	bf49                	j	e881b024 <DNSServiceBrowse+0xe2>

00000000e881b094 <DNSServiceResolve>:
{
    e881b094:	c5010113          	addi	sp,sp,-944
    e881b098:	39313423          	sd	s3,904(sp)
    e881b09c:	39413023          	sd	s4,896(sp)
    e881b0a0:	89b6                	mv	s3,a3
    e881b0a2:	8a3a                	mv	s4,a4
    e881b0a4:	38913c23          	sd	s1,920(sp)
    e881b0a8:	37613823          	sd	s6,880(sp)
    LogMsg("DNSServiceResolve(\"%s\", \"%s\", \"%s\")", name, regtype, domain);
    e881b0ac:	873e                	mv	a4,a5
{
    e881b0ae:	8b2a                	mv	s6,a0
    e881b0b0:	84ae                	mv	s1,a1
    LogMsg("DNSServiceResolve(\"%s\", \"%s\", \"%s\")", name, regtype, domain);
    e881b0b2:	86d2                	mv	a3,s4
    e881b0b4:	864e                	mv	a2,s3
    e881b0b6:	00089597          	auipc	a1,0x89
    e881b0ba:	bb258593          	addi	a1,a1,-1102 # e88a3c68 <end.8789+0x5c0>
    e881b0be:	4501                	li	a0,0
{
    e881b0c0:	39213823          	sd	s2,912(sp)
    e881b0c4:	37513c23          	sd	s5,888(sp)
    e881b0c8:	37713423          	sd	s7,872(sp)
    e881b0cc:	8abe                	mv	s5,a5
    e881b0ce:	3a113423          	sd	ra,936(sp)
    e881b0d2:	3a813023          	sd	s0,928(sp)
    e881b0d6:	37813023          	sd	s8,864(sp)
    e881b0da:	35913c23          	sd	s9,856(sp)
    e881b0de:	35a13823          	sd	s10,848(sp)
    e881b0e2:	35b13423          	sd	s11,840(sp)
    e881b0e6:	8bc2                	mv	s7,a6
    e881b0e8:	8946                	mv	s2,a7
    LogMsg("DNSServiceResolve(\"%s\", \"%s\", \"%s\")", name, regtype, domain);
    e881b0ea:	3c2140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!name[0]    || !MakeDomainLabelFromLiteralString(&n, name  )) { errormsg = "Bad Instance Name"; goto badparam; }
    e881b0ee:	0009c783          	lbu	a5,0(s3)
    e881b0f2:	26078c63          	beqz	a5,e881b36a <DNSServiceResolve+0x2d6>
    e881b0f6:	85ce                	mv	a1,s3
    e881b0f8:	850a                	mv	a0,sp
    e881b0fa:	baaf80ef          	jal	ra,e88134a4 <MakeDomainLabelFromLiteralString>
    e881b0fe:	26050663          	beqz	a0,e881b36a <DNSServiceResolve+0x2d6>
    if (!regtype[0] || !MakeDomainNameFromDNSNameString2(&t, regtype)) { errormsg = "Bad Service Type";  goto badparam; }
    e881b102:	000a4783          	lbu	a5,0(s4)
    e881b106:	e39d                	bnez	a5,e881b12c <DNSServiceResolve+0x98>
    e881b108:	00089797          	auipc	a5,0x89
    e881b10c:	a7878793          	addi	a5,a5,-1416 # e88a3b80 <end.8789+0x4d8>
    err = mStatus_BadParamErr;
    e881b110:	74c1                	lui	s1,0xffff0
    e881b112:	14f1                	addi	s1,s1,-4
    LogMsg("DNSServiceResolve(\"%s\", \"%s\", \"%s\") failed: %s (%ld)", name, regtype, domain, errormsg, err);
    e881b114:	8826                	mv	a6,s1
    e881b116:	8756                	mv	a4,s5
    e881b118:	86d2                	mv	a3,s4
    e881b11a:	864e                	mv	a2,s3
    e881b11c:	00089597          	auipc	a1,0x89
    e881b120:	b7458593          	addi	a1,a1,-1164 # e88a3c90 <end.8789+0x5e8>
    e881b124:	4501                	li	a0,0
    e881b126:	386140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return(err);
    e881b12a:	a411                	j	e881b32e <DNSServiceResolve+0x29a>
    if (!regtype[0] || !MakeDomainNameFromDNSNameString2(&t, regtype)) { errormsg = "Bad Service Type";  goto badparam; }
    e881b12c:	85d2                	mv	a1,s4
    e881b12e:	0088                	addi	a0,sp,64
    e881b130:	ba0f80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e881b134:	d971                	beqz	a0,e881b108 <DNSServiceResolve+0x74>
    if (!domain[0]  || !MakeDomainNameFromDNSNameString2(&d, domain )) { errormsg = "Bad Domain";        goto badparam; }
    e881b136:	000ac783          	lbu	a5,0(s5)
    e881b13a:	e791                	bnez	a5,e881b146 <DNSServiceResolve+0xb2>
    e881b13c:	00089797          	auipc	a5,0x89
    e881b140:	a6c78793          	addi	a5,a5,-1428 # e88a3ba8 <end.8789+0x500>
    e881b144:	b7f1                	j	e881b110 <DNSServiceResolve+0x7c>
    e881b146:	85d6                	mv	a1,s5
    e881b148:	0288                	addi	a0,sp,320
    e881b14a:	b86f80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e881b14e:	d57d                	beqz	a0,e881b13c <DNSServiceResolve+0xa8>
    if (!ConstructServiceName(&srv, &n, &t, &d))                      { errormsg = "Bad Name";          goto badparam; }
    e881b150:	0294                	addi	a3,sp,320
    e881b152:	0090                	addi	a2,sp,64
    e881b154:	858a                	mv	a1,sp
    e881b156:	0488                	addi	a0,sp,576
    e881b158:	c50f80ef          	jal	ra,e88135a8 <ConstructServiceName>
    e881b15c:	20050c63          	beqz	a0,e881b374 <DNSServiceResolve+0x2e0>
    x = (mDNS_DirectOP_Resolve *)mDNSPlatformMemAllocate(sizeof(*x));
    e881b160:	6d800513          	li	a0,1752
    e881b164:	0fe150ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e881b168:	842a                	mv	s0,a0
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881b16a:	20050a63          	beqz	a0,e881b37e <DNSServiceResolve+0x2ea>
    x->context   = context;
    e881b16e:	01253823          	sd	s2,16(a0)
    x->qSRV.Target              = zeroAddr;
    e881b172:	00088917          	auipc	s2,0x88
    e881b176:	40e90913          	addi	s2,s2,1038 # e88a3580 <zeroAddr>
    e881b17a:	00093703          	ld	a4,0(s2)
    x->disposefn = DNSServiceResolveDispose;
    e881b17e:	00000797          	auipc	a5,0x0
    e881b182:	a2278793          	addi	a5,a5,-1502 # e881aba0 <DNSServiceResolveDispose>
    x->callback  = callback;
    e881b186:	f975578b          	sdd	a5,s7,(a0),0,4
    x->qSRV.Target              = zeroAddr;
    e881b18a:	22e53223          	sd	a4,548(a0)
    x->qSRV.ThisQInterval       = -1;       // So that DNSServiceResolveDispose() knows whether to cancel this question
    e881b18e:	57fd                	li	a5,-1
    x->qSRV.Target              = zeroAddr;
    e881b190:	00893703          	ld	a4,8(s2)
    x->qSRV.ThisQInterval       = -1;       // So that DNSServiceResolveDispose() knows whether to cancel this question
    e881b194:	dd5c                	sw	a5,60(a0)
    x->qSRV.InterfaceID         = mDNSInterface_Any;
    e881b196:	00088797          	auipc	a5,0x88
    e881b19a:	bca78793          	addi	a5,a5,-1078 # e88a2d60 <mDNSInterface_Any>
    e881b19e:	0007bc03          	ld	s8,0(a5)
    x->qSRV.Target              = zeroAddr;
    e881b1a2:	22e53623          	sd	a4,556(a0)
    e881b1a6:	01092703          	lw	a4,16(s2)
    x->SRV       = mDNSNULL;
    e881b1aa:	00053c23          	sd	zero,24(a0)
    x->TXT       = mDNSNULL;
    e881b1ae:	02053023          	sd	zero,32(a0)
    x->qSRV.InterfaceID         = mDNSInterface_Any;
    e881b1b2:	21853c23          	sd	s8,536(a0)
    x->qSRV.flags               = 0;
    e881b1b6:	22052023          	sw	zero,544(a0)
    x->qSRV.Target              = zeroAddr;
    e881b1ba:	22e52a23          	sw	a4,564(a0)
    AssignDomainName(&x->qSRV.qname, &srv);
    e881b1be:	068c                	addi	a1,sp,832
    e881b1c0:	0488                	addi	a0,sp,576
    e881b1c2:	f8bf70ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881b1c6:	0005061b          	sext.w	a2,a0
    e881b1ca:	10000793          	li	a5,256
    e881b1ce:	12c7e463          	bltu	a5,a2,e881b2f6 <DNSServiceResolve+0x262>
    e881b1d2:	048c                	addi	a1,sp,576
    e881b1d4:	23c40513          	addi	a0,s0,572 # ffffffffffff023c <__DRAM0_INF_BASE+0xffffffff0000023c>
    e881b1d8:	0c9140ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    x->qSRV.qtype               = kDNSType_SRV;
    e881b1dc:	67c1                	lui	a5,0x10
    e881b1de:	0217879b          	addiw	a5,a5,33
    e881b1e2:	32f42e23          	sw	a5,828(s0)
    x->qSRV.ExpectUnique        = mDNStrue;
    e881b1e6:	4785                	li	a5,1
    x->qSRV.LongLived           = (flags & kDNSServiceFlagsLongLivedQuery     ) != 0;
    e881b1e8:	2084bd0b          	extu	s10,s1,8,8
    x->qSRV.ExpectUnique        = mDNStrue;
    e881b1ec:	34f400a3          	sb	a5,833(s0)
    x->qSRV.ForceMCast          = (flags & kDNSServiceFlagsForceMulticast     ) != 0;
    e881b1f0:	28a4bc8b          	extu	s9,s1,10,10
    x->qSRV.WakeOnResolve       = (flags & kDNSServiceFlagsWakeOnResolve) != 0;
    e881b1f4:	4924b78b          	extu	a5,s1,18,18
    x->qSRV.ReturnIntermed      = (flags & kDNSServiceFlagsReturnIntermediates) != 0;
    e881b1f8:	30c4bb8b          	extu	s7,s1,12,12
    x->qSRV.UseBackgroundTrafficClass = (flags & kDNSServiceFlagsBackgroundTrafficClass) != 0;
    e881b1fc:	4d34b48b          	extu	s1,s1,19,19
    x->qSRV.WakeOnResolve       = (flags & kDNSServiceFlagsWakeOnResolve) != 0;
    e881b200:	34f403a3          	sb	a5,839(s0)
    x->qSRV.LongLived           = (flags & kDNSServiceFlagsLongLivedQuery     ) != 0;
    e881b204:	35a40023          	sb	s10,832(s0)
    x->qSRV.ForceMCast          = (flags & kDNSServiceFlagsForceMulticast     ) != 0;
    e881b208:	35940123          	sb	s9,834(s0)
    x->qSRV.ReturnIntermed      = (flags & kDNSServiceFlagsReturnIntermediates) != 0;
    e881b20c:	357401a3          	sb	s7,835(s0)
    x->qSRV.SearchListIndex     = 0;
    e881b210:	340414a3          	sh	zero,841(s0)
    x->qSRV.SuppressUnusable    = mDNSfalse;
    e881b214:	34041223          	sh	zero,836(s0)
    x->qSRV.TimeoutQuestion     = 0;
    e881b218:	34040323          	sb	zero,838(s0)
    x->qSRV.UseBackgroundTrafficClass = (flags & kDNSServiceFlagsBackgroundTrafficClass) != 0;
    e881b21c:	34940423          	sb	s1,840(s0)
    x->qSRV.ValidatingResponse  = 0;
    e881b220:	16040923          	sb	zero,370(s0)
    x->qSRV.ValidationRequired  = 0;
    e881b224:	34041623          	sh	zero,844(s0)
    x->qSRV.qnameOrig           = mDNSNULL;
    e881b228:	36043423          	sd	zero,872(s0)
    x->qSRV.AnonInfo            = mDNSNULL;
    e881b22c:	08043423          	sd	zero,136(s0)
    x->qSRV.pid                 = mDNSPlatformGetPID();
    e881b230:	510150ef          	jal	ra,e8830740 <mDNSPlatformGetPID>
    x->qSRV.QuestionCallback    = FoundServiceInfo;
    e881b234:	fffffd97          	auipc	s11,0xfffff
    e881b238:	694d8d93          	addi	s11,s11,1684 # e881a8c8 <FoundServiceInfo>
    x->qTXT.Target              = zeroAddr;
    e881b23c:	00093703          	ld	a4,0(s2)
    x->qTXT.ThisQInterval       = -1;       // So that DNSServiceResolveDispose() knows whether to cancel this question
    e881b240:	57fd                	li	a5,-1
    x->qSRV.pid                 = mDNSPlatformGetPID();
    e881b242:	34a42823          	sw	a0,848(s0)
    x->qTXT.Target              = zeroAddr;
    e881b246:	56e43e23          	sd	a4,1404(s0)
    e881b24a:	00893703          	ld	a4,8(s2)
    x->qTXT.ThisQInterval       = -1;       // So that DNSServiceResolveDispose() knows whether to cancel this question
    e881b24e:	38f42a23          	sw	a5,916(s0)
    x->qSRV.QuestionCallback    = FoundServiceInfo;
    e881b252:	37b43823          	sd	s11,880(s0)
    x->qTXT.Target              = zeroAddr;
    e881b256:	58e43223          	sd	a4,1412(s0)
    e881b25a:	01092703          	lw	a4,16(s2)
    x->qSRV.QuestionContext     = x;
    e881b25e:	36843c23          	sd	s0,888(s0)
    x->qTXT.InterfaceID         = mDNSInterface_Any;
    e881b262:	57843823          	sd	s8,1392(s0)
    x->qTXT.flags               = 0;
    e881b266:	56042c23          	sw	zero,1400(s0)
    x->qTXT.Target              = zeroAddr;
    e881b26a:	58e42623          	sw	a4,1420(s0)
    AssignDomainName(&x->qTXT.qname, &srv);
    e881b26e:	068c                	addi	a1,sp,832
    e881b270:	0488                	addi	a0,sp,576
    e881b272:	edbf70ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881b276:	0005061b          	sext.w	a2,a0
    e881b27a:	10000793          	li	a5,256
    e881b27e:	06c7ef63          	bltu	a5,a2,e881b2fc <DNSServiceResolve+0x268>
    e881b282:	048c                	addi	a1,sp,576
    e881b284:	59440513          	addi	a0,s0,1428
    e881b288:	019140ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    x->qTXT.qtype               = kDNSType_TXT;
    e881b28c:	67c1                	lui	a5,0x10
    e881b28e:	27c1                	addiw	a5,a5,16
    e881b290:	68f42a23          	sw	a5,1684(s0)
    x->qTXT.ExpectUnique        = mDNStrue;
    e881b294:	4785                	li	a5,1
    e881b296:	68f40ca3          	sb	a5,1689(s0)
    x->qTXT.UseBackgroundTrafficClass = (flags & kDNSServiceFlagsBackgroundTrafficClass) != 0;
    e881b29a:	6a940023          	sb	s1,1696(s0)
    x->qTXT.LongLived           = (flags & kDNSServiceFlagsLongLivedQuery     ) != 0;
    e881b29e:	69a40c23          	sb	s10,1688(s0)
    x->qTXT.ForceMCast          = (flags & kDNSServiceFlagsForceMulticast     ) != 0;
    e881b2a2:	69940d23          	sb	s9,1690(s0)
    x->qTXT.ReturnIntermed      = (flags & kDNSServiceFlagsReturnIntermediates) != 0;
    e881b2a6:	69740da3          	sb	s7,1691(s0)
    x->qTXT.SearchListIndex     = 0;
    e881b2aa:	6a0410a3          	sh	zero,1697(s0)
    x->qTXT.SuppressUnusable    = mDNSfalse;
    e881b2ae:	68042e23          	sw	zero,1692(s0)
    x->qTXT.ValidatingResponse  = 0;
    e881b2b2:	4c040523          	sb	zero,1226(s0)
    x->qTXT.ValidationRequired  = 0;
    e881b2b6:	6a041223          	sh	zero,1700(s0)
    x->qTXT.qnameOrig           = mDNSNULL;
    e881b2ba:	6c043023          	sd	zero,1728(s0)
    x->qTXT.AnonInfo            = mDNSNULL;
    e881b2be:	3e043023          	sd	zero,992(s0)
    x->qTXT.pid                 = mDNSPlatformGetPID();
    e881b2c2:	47e150ef          	jal	ra,e8830740 <mDNSPlatformGetPID>
    e881b2c6:	6aa42423          	sw	a0,1704(s0)
    x->qTXT.QuestionCallback    = FoundServiceInfo;
    e881b2ca:	6db43423          	sd	s11,1736(s0)
    x->qTXT.QuestionContext     = x;
    e881b2ce:	6c843823          	sd	s0,1744(s0)
    err = mDNS_StartQuery(&mDNSStorage, &x->qSRV);
    e881b2d2:	02840593          	addi	a1,s0,40
    e881b2d6:	000bd517          	auipc	a0,0xbd
    e881b2da:	10250513          	addi	a0,a0,258 # e88d83d8 <mDNSStorage>
    e881b2de:	1490f0ef          	jal	ra,e882ac26 <mDNS_StartQuery>
    e881b2e2:	84aa                	mv	s1,a0
    if (err) { DNSServiceResolveDispose((mDNS_DirectOP*)x); errormsg = "mDNS_StartQuery qSRV"; goto fail; }
    e881b2e4:	cd19                	beqz	a0,e881b302 <DNSServiceResolve+0x26e>
    e881b2e6:	8522                	mv	a0,s0
    e881b2e8:	8b9ff0ef          	jal	ra,e881aba0 <DNSServiceResolveDispose>
    e881b2ec:	00089797          	auipc	a5,0x89
    e881b2f0:	94c78793          	addi	a5,a5,-1716 # e88a3c38 <end.8789+0x590>
    e881b2f4:	b505                	j	e881b114 <DNSServiceResolve+0x80>
    AssignDomainName(&x->qSRV.qname, &srv);
    e881b2f6:	22040e23          	sb	zero,572(s0)
    e881b2fa:	b5cd                	j	e881b1dc <DNSServiceResolve+0x148>
    AssignDomainName(&x->qTXT.qname, &srv);
    e881b2fc:	58040a23          	sb	zero,1428(s0)
    e881b300:	b771                	j	e881b28c <DNSServiceResolve+0x1f8>
    err = mDNS_StartQuery(&mDNSStorage, &x->qTXT);
    e881b302:	38040593          	addi	a1,s0,896
    e881b306:	000bd517          	auipc	a0,0xbd
    e881b30a:	0d250513          	addi	a0,a0,210 # e88d83d8 <mDNSStorage>
    e881b30e:	1190f0ef          	jal	ra,e882ac26 <mDNS_StartQuery>
    e881b312:	84aa                	mv	s1,a0
    if (err) { DNSServiceResolveDispose((mDNS_DirectOP*)x); errormsg = "mDNS_StartQuery qTXT"; goto fail; }
    e881b314:	c909                	beqz	a0,e881b326 <DNSServiceResolve+0x292>
    e881b316:	8522                	mv	a0,s0
    e881b318:	889ff0ef          	jal	ra,e881aba0 <DNSServiceResolveDispose>
    e881b31c:	00089797          	auipc	a5,0x89
    e881b320:	93478793          	addi	a5,a5,-1740 # e88a3c50 <end.8789+0x5a8>
    e881b324:	bbc5                	j	e881b114 <DNSServiceResolve+0x80>
	NotifyCarplayAction();
    e881b326:	722140ef          	jal	ra,e882fa48 <NotifyCarplayAction>
    *sdRef = (DNSServiceRef)x;
    e881b32a:	008b3023          	sd	s0,0(s6)
}
    e881b32e:	3a813083          	ld	ra,936(sp)
    e881b332:	3a013403          	ld	s0,928(sp)
    e881b336:	8526                	mv	a0,s1
    e881b338:	39013903          	ld	s2,912(sp)
    e881b33c:	39813483          	ld	s1,920(sp)
    e881b340:	38813983          	ld	s3,904(sp)
    e881b344:	38013a03          	ld	s4,896(sp)
    e881b348:	37813a83          	ld	s5,888(sp)
    e881b34c:	37013b03          	ld	s6,880(sp)
    e881b350:	36813b83          	ld	s7,872(sp)
    e881b354:	36013c03          	ld	s8,864(sp)
    e881b358:	35813c83          	ld	s9,856(sp)
    e881b35c:	35013d03          	ld	s10,848(sp)
    e881b360:	34813d83          	ld	s11,840(sp)
    e881b364:	3b010113          	addi	sp,sp,944
    e881b368:	8082                	ret
    if (!name[0]    || !MakeDomainLabelFromLiteralString(&n, name  )) { errormsg = "Bad Instance Name"; goto badparam; }
    e881b36a:	00089797          	auipc	a5,0x89
    e881b36e:	84e78793          	addi	a5,a5,-1970 # e88a3bb8 <end.8789+0x510>
    e881b372:	bb79                	j	e881b110 <DNSServiceResolve+0x7c>
    if (!ConstructServiceName(&srv, &n, &t, &d))                      { errormsg = "Bad Name";          goto badparam; }
    e881b374:	00089797          	auipc	a5,0x89
    e881b378:	82478793          	addi	a5,a5,-2012 # e88a3b98 <end.8789+0x4f0>
    e881b37c:	bb51                	j	e881b110 <DNSServiceResolve+0x7c>
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881b37e:	74c1                	lui	s1,0xffff0
    e881b380:	00089797          	auipc	a5,0x89
    e881b384:	85078793          	addi	a5,a5,-1968 # e88a3bd0 <end.8789+0x528>
    e881b388:	14f5                	addi	s1,s1,-3
    e881b38a:	b369                	j	e881b114 <DNSServiceResolve+0x80>

00000000e881b38c <DNSServiceQueryRecord>:
{
    e881b38c:	711d                	addi	sp,sp,-96
    e881b38e:	e0ca                	sd	s2,64(sp)
    e881b390:	fc4e                	sd	s3,56(sp)
    e881b392:	f852                	sd	s4,48(sp)
    e881b394:	8936                	mv	s2,a3
    LogMsg("DNSServiceQueryRecord(\"%s\", %d, %d)", fullname, rrtype, rrclass);
    e881b396:	0007099b          	sext.w	s3,a4
    e881b39a:	00078a1b          	sext.w	s4,a5
{
    e881b39e:	e4a6                	sd	s1,72(sp)
    e881b3a0:	f456                	sd	s5,40(sp)
    e881b3a2:	e862                	sd	s8,16(sp)
    e881b3a4:	e06a                	sd	s10,0(sp)
    e881b3a6:	8aaa                	mv	s5,a0
    e881b3a8:	84ae                	mv	s1,a1
    LogMsg("DNSServiceQueryRecord(\"%s\", %d, %d)", fullname, rrtype, rrclass);
    e881b3aa:	4501                	li	a0,0
{
    e881b3ac:	8d32                	mv	s10,a2
    e881b3ae:	8c3a                	mv	s8,a4
    LogMsg("DNSServiceQueryRecord(\"%s\", %d, %d)", fullname, rrtype, rrclass);
    e881b3b0:	86ce                	mv	a3,s3
    e881b3b2:	8752                	mv	a4,s4
    e881b3b4:	864a                	mv	a2,s2
    e881b3b6:	00088597          	auipc	a1,0x88
    e881b3ba:	73a58593          	addi	a1,a1,1850 # e88a3af0 <end.8789+0x448>
{
    e881b3be:	f05a                	sd	s6,32(sp)
    e881b3c0:	ec5e                	sd	s7,24(sp)
    e881b3c2:	e466                	sd	s9,8(sp)
    e881b3c4:	ec86                	sd	ra,88(sp)
    e881b3c6:	e8a2                	sd	s0,80(sp)
    e881b3c8:	8bbe                	mv	s7,a5
    e881b3ca:	8cc2                	mv	s9,a6
    e881b3cc:	8b46                	mv	s6,a7
    LogMsg("DNSServiceQueryRecord(\"%s\", %d, %d)", fullname, rrtype, rrclass);
    e881b3ce:	0de140ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    x = (mDNS_DirectOP_QueryRecord *)mDNSPlatformMemAllocate(sizeof(*x));
    e881b3d2:	37000513          	li	a0,880
    e881b3d6:	68d140ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881b3da:	1a050e63          	beqz	a0,e881b596 <DNSServiceQueryRecord+0x20a>
    e881b3de:	842a                	mv	s0,a0
	InterfaceID = mDNSPlatformInterfaceIDfromInterfaceIndex(&mDNSStorage, interfaceIndex);
    e881b3e0:	85ea                	mv	a1,s10
    e881b3e2:	000bd517          	auipc	a0,0xbd
    e881b3e6:	ff650513          	addi	a0,a0,-10 # e88d83d8 <mDNSStorage>
    e881b3ea:	53e140ef          	jal	ra,e882f928 <mDNSPlatformInterfaceIDfromInterfaceIndex>
    x->context   = context;
    e881b3ee:	01643823          	sd	s6,16(s0)
    x->q.Target              = zeroAddr;
    e881b3f2:	00088717          	auipc	a4,0x88
    e881b3f6:	18e70713          	addi	a4,a4,398 # e88a3580 <zeroAddr>
    e881b3fa:	6314                	ld	a3,0(a4)
    x->disposefn = DNSServiceQueryRecordDispose;
    e881b3fc:	fffff797          	auipc	a5,0xfffff
    e881b400:	7e678793          	addi	a5,a5,2022 # e881abe2 <DNSServiceQueryRecordDispose>
    x->callback  = callback;
    e881b404:	f994578b          	sdd	a5,s9,(s0),0,4
    x->q.Target              = zeroAddr;
    e881b408:	20d43a23          	sd	a3,532(s0)
    e881b40c:	6714                	ld	a3,8(a4)
    e881b40e:	4b18                	lw	a4,16(a4)
    x->q.ThisQInterval       = -1;      // So that DNSServiceResolveDispose() knows whether to cancel this question
    e881b410:	57fd                	li	a5,-1
    MakeDomainNameFromDNSNameString2(&x->q.qname, fullname);
    e881b412:	22c40b13          	addi	s6,s0,556
    x->q.ThisQInterval       = -1;      // So that DNSServiceResolveDispose() knows whether to cancel this question
    e881b416:	d45c                	sw	a5,44(s0)
    x->q.InterfaceID         = InterfaceID;
    e881b418:	20a43423          	sd	a0,520(s0)
    x->q.flags               = flags;
    e881b41c:	20942823          	sw	s1,528(s0)
    x->q.Target              = zeroAddr;
    e881b420:	20d43e23          	sd	a3,540(s0)
    e881b424:	22e42223          	sw	a4,548(s0)
    MakeDomainNameFromDNSNameString2(&x->q.qname, fullname);
    e881b428:	85ca                	mv	a1,s2
    e881b42a:	855a                	mv	a0,s6
    e881b42c:	8a4f80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    x->q.qtype               = rrtype;
    e881b430:	33841623          	sh	s8,812(s0)
    x->q.LongLived           = (flags & kDNSServiceFlagsLongLivedQuery) != 0;
    e881b434:	2084b78b          	extu	a5,s1,8,8
    e881b438:	32f40823          	sb	a5,816(s0)
    x->q.ForceMCast          = (flags & kDNSServiceFlagsForceMulticast) != 0;
    e881b43c:	28a4b78b          	extu	a5,s1,10,10
    e881b440:	32f40923          	sb	a5,818(s0)
    x->q.ReturnIntermed      = (flags & kDNSServiceFlagsReturnIntermediates) != 0;
    e881b444:	30c4b78b          	extu	a5,s1,12,12
    e881b448:	32f409a3          	sb	a5,819(s0)
    x->q.SuppressUnusable    = (flags & kDNSServiceFlagsSuppressUnusable) != 0;
    e881b44c:	3cf4b78b          	extu	a5,s1,15,15
    e881b450:	32f40a23          	sb	a5,820(s0)
    x->q.UseBackgroundTrafficClass = (flags & kDNSServiceFlagsBackgroundTrafficClass) != 0;
    e881b454:	4d34b78b          	extu	a5,s1,19,19
    e881b458:	32f40c23          	sb	a5,824(s0)
    x->q.qclass              = rrclass;
    e881b45c:	33741723          	sh	s7,814(s0)
    x->q.ExpectUnique        = mDNSfalse;
    e881b460:	320408a3          	sb	zero,817(s0)
    x->q.SearchListIndex     = 0;
    e881b464:	32041ca3          	sh	zero,825(s0)
    x->q.RetryWithSearchDomains = mDNSfalse;
    e881b468:	32040aa3          	sb	zero,821(s0)
    x->q.TimeoutQuestion     = 0;
    e881b46c:	32041b23          	sh	zero,822(s0)
    if ((flags & kDNSServiceFlagsValidate) != 0)
    e881b470:	02a49793          	slli	a5,s1,0x2a
    e881b474:	0e07d463          	bgez	a5,e881b55c <DNSServiceQueryRecord+0x1d0>
        x->q.ValidationRequired = DNSSEC_VALIDATION_SECURE;
    e881b478:	4785                	li	a5,1
        x->q.ValidationRequired = DNSSEC_VALIDATION_SECURE_OPTIONAL;
    e881b47a:	32f40e23          	sb	a5,828(s0)
    x->q.ValidatingResponse  = 0;
    e881b47e:	16040123          	sb	zero,354(s0)
    x->q.ProxyQuestion       = 0;
    e881b482:	32040ea3          	sb	zero,829(s0)
    x->q.qnameOrig           = mDNSNULL;
    e881b486:	34043c23          	sd	zero,856(s0)
    x->q.AnonInfo            = mDNSNULL;
    e881b48a:	06043c23          	sd	zero,120(s0)
    x->q.pid                 = mDNSPlatformGetPID();
    e881b48e:	2b2150ef          	jal	ra,e8830740 <mDNSPlatformGetPID>
    e881b492:	34a42023          	sw	a0,832(s0)
    x->q.QuestionCallback    = DNSServiceQueryRecordResponse;
    e881b496:	fffff797          	auipc	a5,0xfffff
    e881b49a:	4e478793          	addi	a5,a5,1252 # e881a97a <DNSServiceQueryRecordResponse>
    e881b49e:	36f43023          	sd	a5,864(s0)
    x->q.QuestionContext     = x;
    e881b4a2:	36843423          	sd	s0,872(s0)
	if ((IsLocalDomain(&x->q.qname)) || (x->q.qtype == kDNSServiceType_RRSIG) || (x->q.qtype == kDNSServiceType_ANY))
    e881b4a6:	855a                	mv	a0,s6
    e881b4a8:	bfbf70ef          	jal	ra,e88130a2 <IsLocalDomain>
    e881b4ac:	e919                	bnez	a0,e881b4c2 <DNSServiceQueryRecord+0x136>
    e881b4ae:	32c45783          	lhu	a5,812(s0)
    e881b4b2:	02e00713          	li	a4,46
    e881b4b6:	00e78663          	beq	a5,a4,e881b4c2 <DNSServiceQueryRecord+0x136>
    e881b4ba:	0ff00713          	li	a4,255
    e881b4be:	00e79463          	bne	a5,a4,e881b4c6 <DNSServiceQueryRecord+0x13a>
		x->q.ValidationRequired = 0;
    e881b4c2:	32040e23          	sb	zero,828(s0)
    nameLen = strlen(fullname);
    e881b4c6:	854a                	mv	a0,s2
    e881b4c8:	651600ef          	jal	ra,e887c318 <eLIBs_strlen>
    e881b4cc:	2501                	sext.w	a0,a0
    if ((!(x->q.ValidationRequired == DNSSEC_VALIDATION_SECURE)) && (!(x->q.ValidationRequired == DNSSEC_VALIDATION_INSECURE))
    e881b4ce:	33c44783          	lbu	a5,828(s0)
    e881b4d2:	4705                	li	a4,1
    e881b4d4:	0fd7f793          	andi	a5,a5,253
    e881b4d8:	08e78863          	beq	a5,a4,e881b568 <DNSServiceQueryRecord+0x1dc>
        && (rrtype == kDNSType_A || rrtype == kDNSType_AAAA) && ((nameLen == 0) || (fullname[nameLen - 1] != '.')) &&
    e881b4dc:	00e98563          	beq	s3,a4,e881b4e6 <DNSServiceQueryRecord+0x15a>
    e881b4e0:	47f1                	li	a5,28
    e881b4e2:	08f99363          	bne	s3,a5,e881b568 <DNSServiceQueryRecord+0x1dc>
    nameLen = strlen(fullname);
    e881b4e6:	7c05350b          	extu	a0,a0,31,0
        && (rrtype == kDNSType_A || rrtype == kDNSType_AAAA) && ((nameLen == 0) || (fullname[nameLen - 1] != '.')) &&
    e881b4ea:	c901                	beqz	a0,e881b4fa <DNSServiceQueryRecord+0x16e>
    e881b4ec:	954a                	add	a0,a0,s2
    e881b4ee:	fff54703          	lbu	a4,-1(a0)
    e881b4f2:	02e00793          	li	a5,46
    e881b4f6:	06f70963          	beq	a4,a5,e881b568 <DNSServiceQueryRecord+0x1dc>
        (CountLabels(&x->q.qname) == 1))
    e881b4fa:	855a                	mv	a0,s6
    e881b4fc:	d4bf70ef          	jal	ra,e8813246 <CountLabels>
        && (rrtype == kDNSType_A || rrtype == kDNSType_AAAA) && ((nameLen == 0) || (fullname[nameLen - 1] != '.')) &&
    e881b500:	4785                	li	a5,1
    e881b502:	06f51363          	bne	a0,a5,e881b568 <DNSServiceQueryRecord+0x1dc>
        x->q.AppendSearchDomains = 1;
    e881b506:	10100793          	li	a5,257
    e881b50a:	32f41d23          	sh	a5,826(s0)
    x->q.RetryWithSearchDomains = ApplySearchDomainsFirst(&x->q) ? 1 : 0;
    e881b50e:	855a                	mv	a0,s6
    e881b510:	d37f70ef          	jal	ra,e8813246 <CountLabels>
    e881b514:	157d                	addi	a0,a0,-1
    e881b516:	00153513          	seqz	a0,a0
    e881b51a:	32a40aa3          	sb	a0,821(s0)
    x->q.qnameOrig        = mDNSNULL;
    e881b51e:	34043c23          	sd	zero,856(s0)
    err = mDNS_StartQuery(&mDNSStorage, &x->q);
    e881b522:	01840593          	addi	a1,s0,24
    e881b526:	000bd517          	auipc	a0,0xbd
    e881b52a:	eb250513          	addi	a0,a0,-334 # e88d83d8 <mDNSStorage>
    e881b52e:	6f80f0ef          	jal	ra,e882ac26 <mDNS_StartQuery>
    e881b532:	84aa                	mv	s1,a0
    if (err) { DNSServiceResolveDispose((mDNS_DirectOP*)x); errormsg = "mDNS_StartQuery"; goto fail; }
    e881b534:	cd15                	beqz	a0,e881b570 <DNSServiceQueryRecord+0x1e4>
    e881b536:	8522                	mv	a0,s0
    e881b538:	e68ff0ef          	jal	ra,e881aba0 <DNSServiceResolveDispose>
    e881b53c:	00088797          	auipc	a5,0x88
    e881b540:	5a478793          	addi	a5,a5,1444 # e88a3ae0 <end.8789+0x438>
    LogMsg("DNSServiceQueryRecord(\"%s\", %d, %d) failed: %s (%ld)", fullname, rrtype, rrclass, errormsg, err);
    e881b544:	8826                	mv	a6,s1
    e881b546:	8752                	mv	a4,s4
    e881b548:	86ce                	mv	a3,s3
    e881b54a:	864a                	mv	a2,s2
    e881b54c:	00088597          	auipc	a1,0x88
    e881b550:	5cc58593          	addi	a1,a1,1484 # e88a3b18 <end.8789+0x470>
    e881b554:	4501                	li	a0,0
    e881b556:	757130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return(err);
    e881b55a:	a839                	j	e881b578 <DNSServiceQueryRecord+0x1ec>
    else if ((flags & kDNSServiceFlagsValidateOptional) != 0)
    e881b55c:	02849793          	slli	a5,s1,0x28
    e881b560:	f007dfe3          	bgez	a5,e881b47e <DNSServiceQueryRecord+0xf2>
        x->q.ValidationRequired = DNSSEC_VALIDATION_SECURE_OPTIONAL;
    e881b564:	4789                	li	a5,2
    e881b566:	bf11                	j	e881b47a <DNSServiceQueryRecord+0xee>
        x->q.AppendSearchDomains = 0;
    e881b568:	32041d23          	sh	zero,826(s0)
    x->q.RetryWithSearchDomains = ApplySearchDomainsFirst(&x->q) ? 1 : 0;
    e881b56c:	4501                	li	a0,0
    e881b56e:	b775                	j	e881b51a <DNSServiceQueryRecord+0x18e>
	NotifyCarplayAction();
    e881b570:	4d8140ef          	jal	ra,e882fa48 <NotifyCarplayAction>
    *sdRef = (DNSServiceRef)x;
    e881b574:	008ab023          	sd	s0,0(s5)
}
    e881b578:	60e6                	ld	ra,88(sp)
    e881b57a:	6446                	ld	s0,80(sp)
    e881b57c:	8526                	mv	a0,s1
    e881b57e:	6906                	ld	s2,64(sp)
    e881b580:	64a6                	ld	s1,72(sp)
    e881b582:	79e2                	ld	s3,56(sp)
    e881b584:	7a42                	ld	s4,48(sp)
    e881b586:	7aa2                	ld	s5,40(sp)
    e881b588:	7b02                	ld	s6,32(sp)
    e881b58a:	6be2                	ld	s7,24(sp)
    e881b58c:	6c42                	ld	s8,16(sp)
    e881b58e:	6ca2                	ld	s9,8(sp)
    e881b590:	6d02                	ld	s10,0(sp)
    e881b592:	6125                	addi	sp,sp,96
    e881b594:	8082                	ret
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881b596:	74c1                	lui	s1,0xffff0
    e881b598:	00088797          	auipc	a5,0x88
    e881b59c:	63878793          	addi	a5,a5,1592 # e88a3bd0 <end.8789+0x528>
    e881b5a0:	14f5                	addi	s1,s1,-3
    e881b5a2:	b74d                	j	e881b544 <DNSServiceQueryRecord+0x1b8>

00000000e881b5a4 <DNSServiceGetAddrInfo>:
    uint32_t inInterfaceIndex,
    DNSServiceProtocol inProtocol,
    const char *                inHostName,
    DNSServiceGetAddrInfoReply inCallback,
    void *                      inContext )
{
    e881b5a4:	715d                	addi	sp,sp,-80
    e881b5a6:	f052                	sd	s4,32(sp)
    e881b5a8:	8a2a                	mv	s4,a0
    const char *                    errormsg = "Unknown";
    DNSServiceErrorType err;
    mDNS_DirectOP_GetAddrInfo *     x;

    // Allocate memory, and handle failure
    x = (mDNS_DirectOP_GetAddrInfo *)mDNSPlatformMemAllocate(sizeof(*x));
    e881b5aa:	02000513          	li	a0,32
{
    e881b5ae:	f84a                	sd	s2,48(sp)
    e881b5b0:	f44e                	sd	s3,40(sp)
    e881b5b2:	e486                	sd	ra,72(sp)
    e881b5b4:	e0a2                	sd	s0,64(sp)
    e881b5b6:	fc26                	sd	s1,56(sp)
    e881b5b8:	ec2e                	sd	a1,24(sp)
    e881b5ba:	e832                	sd	a2,16(sp)
    e881b5bc:	89b6                	mv	s3,a3
    e881b5be:	893a                	mv	s2,a4
    e881b5c0:	e43e                	sd	a5,8(sp)
    e881b5c2:	e042                	sd	a6,0(sp)
    x = (mDNS_DirectOP_GetAddrInfo *)mDNSPlatformMemAllocate(sizeof(*x));
    e881b5c4:	49f140ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881b5c8:	c93d                	beqz	a0,e881b63e <DNSServiceGetAddrInfo+0x9a>

    // Set up object
    x->disposefn = DNSServiceGetAddrInfoDispose;
    x->callback  = inCallback;
    e881b5ca:	67a2                	ld	a5,8(sp)
    x->context   = inContext;
    e881b5cc:	6802                	ld	a6,0(sp)
    x->disposefn = DNSServiceGetAddrInfoDispose;
    e881b5ce:	fffff717          	auipc	a4,0xfffff
    e881b5d2:	71870713          	addi	a4,a4,1816 # e881ace6 <DNSServiceGetAddrInfoDispose>
    e881b5d6:	e118                	sd	a4,0(a0)
    x->callback  = inCallback;
    e881b5d8:	e51c                	sd	a5,8(a0)
    x->context   = inContext;
    e881b5da:	01053823          	sd	a6,16(a0)

    // Start the query.
    // (It would probably be more efficient to code this using mDNS_StartQuery directly,
    // instead of wrapping DNSServiceQueryRecord, which then unnecessarily allocates
    // more memory and then just calls through to mDNS_StartQuery. -- SC June 2010)
    err = DNSServiceQueryRecord(&x->aQuery, inFlags, inInterfaceIndex, inHostName, kDNSServiceType_AAAA,
    e881b5de:	fab1460b          	ldd	a2,a1,(sp),1,4
    e881b5e2:	842a                	mv	s0,a0
    e881b5e4:	88a2                	mv	a7,s0
    x->aQuery    = mDNSNULL;
    e881b5e6:	6ac5500b          	sdib	zero,(a0),12,1
    err = DNSServiceQueryRecord(&x->aQuery, inFlags, inInterfaceIndex, inHostName, kDNSServiceType_AAAA,
    e881b5ea:	fffff817          	auipc	a6,0xfffff
    e881b5ee:	62280813          	addi	a6,a6,1570 # e881ac0c <DNSServiceGetAddrInfoResponse>
    e881b5f2:	4785                	li	a5,1
    e881b5f4:	4771                	li	a4,28
    e881b5f6:	86ca                	mv	a3,s2
    e881b5f8:	d95ff0ef          	jal	ra,e881b38c <DNSServiceQueryRecord>
    e881b5fc:	84aa                	mv	s1,a0
                                kDNSServiceClass_IN, DNSServiceGetAddrInfoResponse, x);
    if (err) { DNSServiceGetAddrInfoDispose((mDNS_DirectOP*)x); errormsg = "DNSServiceQueryRecord"; goto fail; }
    e881b5fe:	c11d                	beqz	a0,e881b624 <DNSServiceGetAddrInfo+0x80>
    e881b600:	8522                	mv	a0,s0
    e881b602:	ee4ff0ef          	jal	ra,e881ace6 <DNSServiceGetAddrInfoDispose>
    e881b606:	00088717          	auipc	a4,0x88
    e881b60a:	46270713          	addi	a4,a4,1122 # e88a3a68 <end.8789+0x3c0>

    *outRef = (DNSServiceRef)x;
    return(mStatus_NoError);

fail:
    LogMsg("DNSServiceGetAddrInfo(\"%s\", %d) failed: %s (%ld)", inHostName, inProtocol, errormsg, err);
    e881b60e:	87a6                	mv	a5,s1
    e881b610:	86ce                	mv	a3,s3
    e881b612:	864a                	mv	a2,s2
    e881b614:	00088597          	auipc	a1,0x88
    e881b618:	46c58593          	addi	a1,a1,1132 # e88a3a80 <end.8789+0x3d8>
    e881b61c:	4501                	li	a0,0
    e881b61e:	68f130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return(err);
    e881b622:	a029                	j	e881b62c <DNSServiceGetAddrInfo+0x88>
	NotifyCarplayAction();
    e881b624:	424140ef          	jal	ra,e882fa48 <NotifyCarplayAction>
    *outRef = (DNSServiceRef)x;
    e881b628:	008a3023          	sd	s0,0(s4)
}
    e881b62c:	60a6                	ld	ra,72(sp)
    e881b62e:	6406                	ld	s0,64(sp)
    e881b630:	8526                	mv	a0,s1
    e881b632:	7942                	ld	s2,48(sp)
    e881b634:	74e2                	ld	s1,56(sp)
    e881b636:	79a2                	ld	s3,40(sp)
    e881b638:	7a02                	ld	s4,32(sp)
    e881b63a:	6161                	addi	sp,sp,80
    e881b63c:	8082                	ret
    if (!x) { err = mStatus_NoMemoryErr; errormsg = "No memory"; goto fail; }
    e881b63e:	74c1                	lui	s1,0xffff0
    e881b640:	14f5                	addi	s1,s1,-3
    e881b642:	00088717          	auipc	a4,0x88
    e881b646:	58e70713          	addi	a4,a4,1422 # e88a3bd0 <end.8789+0x528>
    e881b64a:	b7d1                	j	e881b60e <DNSServiceGetAddrInfo+0x6a>

00000000e881b64c <DNSServiceReconfirmRecord>:
    (void)rrtype;           // Unused
    (void)rrclass;          // Unused
    (void)rdlen;            // Unused
    (void)rdata;            // Unused
    return(kDNSServiceErr_Unsupported);
}
    e881b64c:	7541                	lui	a0,0xffff0
    e881b64e:	1561                	addi	a0,a0,-8
    e881b650:	8082                	ret

00000000e881b652 <GetLabelDecimalValue>:
}

mDNSlocal mStatus GetLabelDecimalValue(const mDNSu8 *const src, mDNSu8 *dst)
{
    int i, val = 0;
    if (src[0] < 1 || src[0] > 3) return(mStatus_Invalid);
    e881b652:	00054703          	lbu	a4,0(a0) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    e881b656:	4689                	li	a3,2
    e881b658:	fff7079b          	addiw	a5,a4,-1
    e881b65c:	0ff7f793          	andi	a5,a5,255
    e881b660:	04f6e063          	bltu	a3,a5,e881b6a0 <GetLabelDecimalValue+0x4e>
    e881b664:	4681                	li	a3,0
    int i, val = 0;
    e881b666:	4781                	li	a5,0
    for (i=1; i<=src[0]; i++)
    {
        if (src[i] < '0' || src[i] > '9') return(mStatus_Invalid);
    e881b668:	0505                	addi	a0,a0,1
    e881b66a:	4325                	li	t1,9
        val = val * 10 + src[i] - '0';
    e881b66c:	48a9                	li	a7,10
        if (src[i] < '0' || src[i] > '9') return(mStatus_Invalid);
    e881b66e:	80d5460b          	lrbu	a2,a0,a3,0
    e881b672:	fd06081b          	addiw	a6,a2,-48
    e881b676:	0ff87813          	andi	a6,a6,255
    e881b67a:	03036363          	bltu	t1,a6,e881b6a0 <GetLabelDecimalValue+0x4e>
        val = val * 10 + src[i] - '0';
    e881b67e:	24f8960b          	mulaw	a2,a7,a5
    e881b682:	0685                	addi	a3,a3,1
    e881b684:	fd06079b          	addiw	a5,a2,-48
    for (i=1; i<=src[0]; i++)
    e881b688:	0016861b          	addiw	a2,a3,1
    e881b68c:	fec751e3          	bge	a4,a2,e881b66e <GetLabelDecimalValue+0x1c>
    }
    if (val > 255) return(mStatus_Invalid);
    e881b690:	0ff00713          	li	a4,255
    e881b694:	00f74663          	blt	a4,a5,e881b6a0 <GetLabelDecimalValue+0x4e>
    *dst = (mDNSu8)val;
    e881b698:	00f58023          	sb	a5,0(a1)
    return(mStatus_NoError);
    e881b69c:	4501                	li	a0,0
    e881b69e:	8082                	ret
    if (src[0] < 1 || src[0] > 3) return(mStatus_Invalid);
    e881b6a0:	7541                	lui	a0,0xffff0
    e881b6a2:	154d                	addi	a0,a0,-13
}
    e881b6a4:	8082                	ret

00000000e881b6a6 <CheckSum>:
}

mDNSlocal mDNSu16 CheckSum(const void *const data, mDNSs32 length, mDNSu32 sum)
{
    const mDNSu16 *ptr = data;
    while (length > 0) { length -= 2; sum += *ptr++; }
    e881b6a6:	4781                	li	a5,0
    e881b6a8:	40f5873b          	subw	a4,a1,a5
    e881b6ac:	02e04463          	bgtz	a4,e881b6d4 <CheckSum+0x2e>
    sum = (sum & 0xFFFF) + (sum >> 16);
    e881b6b0:	3c06350b          	extu	a0,a2,15,0
    e881b6b4:	0106561b          	srliw	a2,a2,0x10
    e881b6b8:	9e29                	addw	a2,a2,a0
    sum = (sum & 0xFFFF) + (sum >> 16);
    e881b6ba:	3c06378b          	extu	a5,a2,15,0
    e881b6be:	0106551b          	srliw	a0,a2,0x10
    e881b6c2:	9d3d                	addw	a0,a0,a5
    return(sum != 0xFFFF ? sum : 0);
    e881b6c4:	67c1                	lui	a5,0x10
    e881b6c6:	17fd                	addi	a5,a5,-1
    e881b6c8:	00f51363          	bne	a0,a5,e881b6ce <CheckSum+0x28>
    e881b6cc:	4501                	li	a0,0
}
    e881b6ce:	3c05350b          	extu	a0,a0,15,0
    e881b6d2:	8082                	ret
    while (length > 0) { length -= 2; sum += *ptr++; }
    e881b6d4:	a0f5470b          	lrhu	a4,a0,a5,0
    e881b6d8:	0789                	addi	a5,a5,2
    e881b6da:	9e39                	addw	a2,a2,a4
    e881b6dc:	b7f1                	j	e881b6a8 <CheckSum+0x2>

00000000e881b6de <IPv6CheckSum>:

mDNSlocal mDNSu16 IPv6CheckSum(const mDNSv6Addr *const src, const mDNSv6Addr *const dst, const mDNSu8 protocol, const void *const data, const mDNSu32 length)
{
    e881b6de:	7139                	addi	sp,sp,-64
    e881b6e0:	fc06                	sd	ra,56(sp)
    IPv6PseudoHeader ph;
    ph.src = *src;
    e881b6e2:	611c                	ld	a5,0(a0)
    ph.len.b[2] = length >> 8;
    ph.len.b[3] = length;
    ph.pro.b[0] = 0;
    ph.pro.b[1] = 0;
    ph.pro.b[2] = 0;
    ph.pro.b[3] = protocol;
    e881b6e4:	02c107a3          	sb	a2,47(sp)
    return CheckSum(&ph, sizeof(ph), CheckSum(data, length, 0));
    e881b6e8:	4601                	li	a2,0
    ph.src = *src;
    e881b6ea:	e43e                	sd	a5,8(sp)
    e881b6ec:	651c                	ld	a5,8(a0)
    return CheckSum(&ph, sizeof(ph), CheckSum(data, length, 0));
    e881b6ee:	8536                	mv	a0,a3
    ph.len.b[0] = length >> 24;
    e881b6f0:	02011423          	sh	zero,40(sp)
    ph.src = *src;
    e881b6f4:	e83e                	sd	a5,16(sp)
    ph.dst = *dst;
    e881b6f6:	619c                	ld	a5,0(a1)
    ph.pro.b[0] = 0;
    e881b6f8:	02011623          	sh	zero,44(sp)
    ph.pro.b[2] = 0;
    e881b6fc:	02010723          	sb	zero,46(sp)
    ph.dst = *dst;
    e881b700:	ec3e                	sd	a5,24(sp)
    e881b702:	659c                	ld	a5,8(a1)
    ph.len.b[2] = length >> 8;
    e881b704:	3c87358b          	extu	a1,a4,15,8
    ph.dst = *dst;
    e881b708:	f03e                	sd	a5,32(sp)
    ph.len.b[2] = length >> 8;
    e881b70a:	00871793          	slli	a5,a4,0x8
    e881b70e:	8fcd                	or	a5,a5,a1
    return CheckSum(&ph, sizeof(ph), CheckSum(data, length, 0));
    e881b710:	85ba                	mv	a1,a4
    ph.len.b[2] = length >> 8;
    e881b712:	02f11523          	sh	a5,42(sp)
    return CheckSum(&ph, sizeof(ph), CheckSum(data, length, 0));
    e881b716:	f91ff0ef          	jal	ra,e881b6a6 <CheckSum>
    e881b71a:	0005061b          	sext.w	a2,a0
    e881b71e:	02800593          	li	a1,40
    e881b722:	0028                	addi	a0,sp,8
    e881b724:	f83ff0ef          	jal	ra,e881b6a6 <CheckSum>
}
    e881b728:	70e2                	ld	ra,56(sp)
    e881b72a:	6121                	addi	sp,sp,64
    e881b72c:	8082                	ret

00000000e881b72e <SetupOwnerOpt>:
    Trace->optlen           = DNSOpt_TraceData_Space - 4;
}

mDNSlocal void SetupOwnerOpt(const mDNS *const m, const NetworkInterfaceInfo *const intf, rdataOPT *const owner)
{
    owner->u.owner.vers     = 0;
    e881b72e:	00060223          	sb	zero,4(a2)
    owner->u.owner.seq      = m->SleepSeqNum;
    e881b732:	28654783          	lbu	a5,646(a0) # ffffffffffff0286 <__DRAM0_INF_BASE+0xffffffff00000286>
    owner->u.owner.password = zeroEthAddr;

    // Don't try to compute the optlen until *after* we've set up the data fields
    // Right now the DNSOpt_Owner_Space macro does not depend on the owner->u.owner being set up correctly, but in the future it might
    owner->opt              = kDNSOpt_Owner;
    owner->optlen           = DNSOpt_Owner_Space(&m->PrimaryMAC, &intf->MAC) - 4;
    e881b736:	46a1                	li	a3,8
    owner->u.owner.seq      = m->SleepSeqNum;
    e881b738:	00f602a3          	sb	a5,5(a2)
    owner->u.owner.HMAC     = m->PrimaryMAC;
    e881b73c:	4d1c                	lw	a5,24(a0)
    e881b73e:	00f62323          	sw	a5,6(a2)
    e881b742:	01c55783          	lhu	a5,28(a0)
    e881b746:	00f61523          	sh	a5,10(a2)
    owner->u.owner.IMAC     = intf->MAC;
    e881b74a:	6789                	lui	a5,0x2
    e881b74c:	95be                	add	a1,a1,a5
    e881b74e:	a205a783          	lw	a5,-1504(a1)
    e881b752:	c65c                	sw	a5,12(a2)
    e881b754:	a245d783          	lhu	a5,-1500(a1)
    e881b758:	00f61823          	sh	a5,16(a2)
    owner->u.owner.password = zeroEthAddr;
    e881b75c:	00088797          	auipc	a5,0x88
    e881b760:	e3c78793          	addi	a5,a5,-452 # e88a3598 <zeroEthAddr>
    e881b764:	4398                	lw	a4,0(a5)
    e881b766:	0047d783          	lhu	a5,4(a5)
    e881b76a:	00e62923          	sw	a4,18(a2)
    e881b76e:	00f61b23          	sh	a5,22(a2)
    owner->opt              = kDNSOpt_Owner;
    e881b772:	4791                	li	a5,4
    e881b774:	00f61023          	sh	a5,0(a2)
    owner->optlen           = DNSOpt_Owner_Space(&m->PrimaryMAC, &intf->MAC) - 4;
    e881b778:	6d18                	ld	a4,24(a0)
    e881b77a:	a205b783          	ld	a5,-1504(a1)
    e881b77e:	bc07370b          	extu	a4,a4,47,0
    e881b782:	bc07b78b          	extu	a5,a5,47,0
    e881b786:	00f70363          	beq	a4,a5,e881b78c <SetupOwnerOpt+0x5e>
    e881b78a:	46b9                	li	a3,14
    e881b78c:	00d61123          	sh	a3,2(a2)
}
    e881b790:	8082                	ret

00000000e881b792 <CheckAndSwapSPS>:
mDNSlocal void CheckAndSwapSPS(const CacheRecord **sps1, const CacheRecord **sps2)
{
    const CacheRecord *swap_sps;
    mDNSu32 metric1, metric2;

    if (!(*sps1) || !(*sps2)) return;
    e881b792:	00053803          	ld	a6,0(a0)
    e881b796:	1c080763          	beqz	a6,e881b964 <CheckAndSwapSPS+0x1d2>
    e881b79a:	0005b883          	ld	a7,0(a1)
    e881b79e:	1c088363          	beqz	a7,e881b964 <CheckAndSwapSPS+0x1d2>
    metric1 = SPSMetric((*sps1)->resrec.rdata->u.name.c);
    e881b7a2:	03083603          	ld	a2,48(a6)
    e881b7a6:	4791                	li	a5,4
    e881b7a8:	00464303          	lbu	t1,4(a2)
    e881b7ac:	1a67fd63          	bgeu	a5,t1,e881b966 <CheckAndSwapSPS+0x1d4>
    e881b7b0:	00564f03          	lbu	t5,5(a2)
    e881b7b4:	47a5                	li	a5,9
    e881b7b6:	fd0f071b          	addiw	a4,t5,-48
    e881b7ba:	0ff77713          	andi	a4,a4,255
    e881b7be:	1ae7e463          	bltu	a5,a4,e881b966 <CheckAndSwapSPS+0x1d4>
    e881b7c2:	00664683          	lbu	a3,6(a2)
    e881b7c6:	fd06871b          	addiw	a4,a3,-48
    e881b7ca:	0ff77713          	andi	a4,a4,255
    e881b7ce:	18e7ec63          	bltu	a5,a4,e881b966 <CheckAndSwapSPS+0x1d4>
    e881b7d2:	00864e03          	lbu	t3,8(a2)
    e881b7d6:	fd0e071b          	addiw	a4,t3,-48
    e881b7da:	0ff77713          	andi	a4,a4,255
    e881b7de:	18e7e463          	bltu	a5,a4,e881b966 <CheckAndSwapSPS+0x1d4>
    e881b7e2:	00964e83          	lbu	t4,9(a2)
    e881b7e6:	fd0e871b          	addiw	a4,t4,-48
    e881b7ea:	0ff77713          	andi	a4,a4,255
    e881b7ee:	16e7ec63          	bltu	a5,a4,e881b966 <CheckAndSwapSPS+0x1d4>
    e881b7f2:	47a9                	li	a5,10
    e881b7f4:	0267f663          	bgeu	a5,t1,e881b820 <CheckAndSwapSPS+0x8e>
    e881b7f8:	00764703          	lbu	a4,7(a2)
    e881b7fc:	02d00793          	li	a5,45
    e881b800:	02f71063          	bne	a4,a5,e881b820 <CheckAndSwapSPS+0x8e>
    e881b804:	4618                	lw	a4,8(a2)
    e881b806:	392d47b7          	lui	a5,0x392d4
    e881b80a:	93978793          	addi	a5,a5,-1735 # 392d3939 <memcmp-0xaf52c6c7>
    e881b80e:	00f71963          	bne	a4,a5,e881b820 <CheckAndSwapSPS+0x8e>
    e881b812:	4658                	lw	a4,12(a2)
    e881b814:	393937b7          	lui	a5,0x39393
    e881b818:	d3978793          	addi	a5,a5,-711 # 39392d39 <memcmp-0xaf46d2c7>
    e881b81c:	14f70563          	beq	a4,a5,e881b966 <CheckAndSwapSPS+0x1d4>
    e881b820:	00c64703          	lbu	a4,12(a2)
    e881b824:	ffaea7b7          	lui	a5,0xffaea
    e881b828:	eb07879b          	addiw	a5,a5,-336
    e881b82c:	9f3d                	addw	a4,a4,a5
    e881b82e:	67e1                	lui	a5,0x18
    e881b830:	6a07879b          	addiw	a5,a5,1696
    e881b834:	25e7970b          	mulaw	a4,a5,t5
    e881b838:	6789                	lui	a5,0x2
    e881b83a:	7107879b          	addiw	a5,a5,1808
    e881b83e:	24d7970b          	mulaw	a4,a5,a3
    e881b842:	3e800793          	li	a5,1000
    e881b846:	00b64683          	lbu	a3,11(a2)
    e881b84a:	25c7970b          	mulaw	a4,a5,t3
    e881b84e:	06400793          	li	a5,100
    e881b852:	25d7970b          	mulaw	a4,a5,t4
    e881b856:	47a9                	li	a5,10
    e881b858:	24f6970b          	mulaw	a4,a3,a5
    metric2 = SPSMetric((*sps2)->resrec.rdata->u.name.c);
    e881b85c:	0308b683          	ld	a3,48(a7)
    e881b860:	4791                	li	a5,4
    e881b862:	0046ce03          	lbu	t3,4(a3)
    e881b866:	11c7f563          	bgeu	a5,t3,e881b970 <CheckAndSwapSPS+0x1de>
    e881b86a:	0056c383          	lbu	t2,5(a3)
    e881b86e:	47a5                	li	a5,9
    e881b870:	fd038e9b          	addiw	t4,t2,-48
    e881b874:	0ffefe93          	andi	t4,t4,255
    e881b878:	0fd7ec63          	bltu	a5,t4,e881b970 <CheckAndSwapSPS+0x1de>
    e881b87c:	0066c283          	lbu	t0,6(a3)
    e881b880:	fd028e9b          	addiw	t4,t0,-48
    e881b884:	0ffefe93          	andi	t4,t4,255
    e881b888:	0fd7e463          	bltu	a5,t4,e881b970 <CheckAndSwapSPS+0x1de>
    e881b88c:	0086cf83          	lbu	t6,8(a3)
    e881b890:	fd0f8e9b          	addiw	t4,t6,-48
    e881b894:	0ffefe93          	andi	t4,t4,255
    e881b898:	0dd7ec63          	bltu	a5,t4,e881b970 <CheckAndSwapSPS+0x1de>
    e881b89c:	0096cf03          	lbu	t5,9(a3)
    e881b8a0:	fd0f0e9b          	addiw	t4,t5,-48
    e881b8a4:	0ffefe93          	andi	t4,t4,255
    e881b8a8:	0dd7e463          	bltu	a5,t4,e881b970 <CheckAndSwapSPS+0x1de>
    e881b8ac:	47a9                	li	a5,10
    e881b8ae:	03c7f863          	bgeu	a5,t3,e881b8de <CheckAndSwapSPS+0x14c>
    e881b8b2:	0076ce83          	lbu	t4,7(a3)
    e881b8b6:	02d00793          	li	a5,45
    e881b8ba:	02fe9263          	bne	t4,a5,e881b8de <CheckAndSwapSPS+0x14c>
    e881b8be:	0086ae83          	lw	t4,8(a3)
    e881b8c2:	392d47b7          	lui	a5,0x392d4
    e881b8c6:	93978793          	addi	a5,a5,-1735 # 392d3939 <memcmp-0xaf52c6c7>
    e881b8ca:	00fe9a63          	bne	t4,a5,e881b8de <CheckAndSwapSPS+0x14c>
    e881b8ce:	00c6ae83          	lw	t4,12(a3)
    e881b8d2:	393937b7          	lui	a5,0x39393
    e881b8d6:	d3978793          	addi	a5,a5,-711 # 39392d39 <memcmp-0xaf46d2c7>
    e881b8da:	08fe8b63          	beq	t4,a5,e881b970 <CheckAndSwapSPS+0x1de>
    e881b8de:	00c6c783          	lbu	a5,12(a3)
    e881b8e2:	ffaeaeb7          	lui	t4,0xffaea
    e881b8e6:	eb0e8e9b          	addiw	t4,t4,-336
    e881b8ea:	01d787bb          	addw	a5,a5,t4
    e881b8ee:	6ee1                	lui	t4,0x18
    e881b8f0:	6a0e8e9b          	addiw	t4,t4,1696
    e881b8f4:	247e978b          	mulaw	a5,t4,t2
    e881b8f8:	6e89                	lui	t4,0x2
    e881b8fa:	710e8e9b          	addiw	t4,t4,1808
    e881b8fe:	245e978b          	mulaw	a5,t4,t0
    e881b902:	3e800e93          	li	t4,1000
    e881b906:	25fe978b          	mulaw	a5,t4,t6
    e881b90a:	06400e93          	li	t4,100
    e881b90e:	25ee978b          	mulaw	a5,t4,t5
    e881b912:	00b6cf03          	lbu	t5,11(a3)
    e881b916:	4ea9                	li	t4,10
    e881b918:	25df178b          	mulaw	a5,t5,t4
    if (!SPSFeatures((*sps1)->resrec.rdata->u.name.c) && SPSFeatures((*sps2)->resrec.rdata->u.name.c) && (metric2 >= metric1))
    e881b91c:	4eb1                	li	t4,12
    e881b91e:	006efe63          	bgeu	t4,t1,e881b93a <CheckAndSwapSPS+0x1a8>
    e881b922:	01064e83          	lbu	t4,16(a2)
    e881b926:	02e00313          	li	t1,46
    e881b92a:	006e9863          	bne	t4,t1,e881b93a <CheckAndSwapSPS+0x1a8>
    e881b92e:	01164303          	lbu	t1,17(a2)
    e881b932:	03000613          	li	a2,48
    e881b936:	02c31763          	bne	t1,a2,e881b964 <CheckAndSwapSPS+0x1d2>
    e881b93a:	4631                	li	a2,12
    e881b93c:	03c67463          	bgeu	a2,t3,e881b964 <CheckAndSwapSPS+0x1d2>
    e881b940:	0106c303          	lbu	t1,16(a3)
    e881b944:	02e00613          	li	a2,46
    e881b948:	00c31e63          	bne	t1,a2,e881b964 <CheckAndSwapSPS+0x1d2>
    e881b94c:	0116c603          	lbu	a2,17(a3)
    e881b950:	03000693          	li	a3,48
    e881b954:	00d60863          	beq	a2,a3,e881b964 <CheckAndSwapSPS+0x1d2>
    e881b958:	00e7e663          	bltu	a5,a4,e881b964 <CheckAndSwapSPS+0x1d2>
    {
        swap_sps = *sps1;
        *sps1    = *sps2;
    e881b95c:	01153023          	sd	a7,0(a0)
        *sps2    = swap_sps;
    e881b960:	0105b023          	sd	a6,0(a1)
    }
}
    e881b964:	8082                	ret
    metric1 = SPSMetric((*sps1)->resrec.rdata->u.name.c);
    e881b966:	000f4737          	lui	a4,0xf4
    e881b96a:	24070713          	addi	a4,a4,576 # f4240 <memcmp-0xe870bdc0>
    e881b96e:	b5fd                	j	e881b85c <CheckAndSwapSPS+0xca>
    metric2 = SPSMetric((*sps2)->resrec.rdata->u.name.c);
    e881b970:	000f47b7          	lui	a5,0xf4
    e881b974:	24078793          	addi	a5,a5,576 # f4240 <memcmp-0xe870bdc0>
    e881b978:	b755                	j	e881b91c <CheckAndSwapSPS+0x18a>

00000000e881b97a <ExpireDupSuppressInfo>:

// Only DupSuppressInfos newer than the specified 'time' are allowed to remain active
mDNSlocal void ExpireDupSuppressInfo(DupSuppressInfo ds[DupSuppressInfoSize], mDNSs32 time)
{
    int i;
    for (i=0; i<DupSuppressInfoSize; i++) if (ds[i].Time - time < 0) ds[i].InterfaceID = mDNSNULL;
    e881b97a:	0c050713          	addi	a4,a0,192
    e881b97e:	411c                	lw	a5,0(a0)
    e881b980:	9f8d                	subw	a5,a5,a1
    e881b982:	0007d463          	bgez	a5,e881b98a <ExpireDupSuppressInfo+0x10>
    e881b986:	00053423          	sd	zero,8(a0)
    e881b98a:	0561                	addi	a0,a0,24
    e881b98c:	fee519e3          	bne	a0,a4,e881b97e <ExpireDupSuppressInfo+0x4>
}
    e881b990:	8082                	ret

00000000e881b992 <DNSServerMatch>:
    //   should match (Refer to (2) above).
    //
    // Note: mDNSInterface_Unicast is used only by .local unicast questions and are treated as unscoped.
    // If a question is scoped both to InterfaceID and ServiceID, the question will be scoped to InterfaceID.

    if (((d->scoped == kScopeNone) && ((!InterfaceID && ServiceID == -1) || InterfaceID == mDNSInterface_Unicast)) ||
    e881b992:	13452703          	lw	a4,308(a0)
    e881b996:	e305                	bnez	a4,e881b9b6 <DNSServerMatch+0x24>
    e881b998:	e589                	bnez	a1,e881b9a2 <DNSServerMatch+0x10>
    e881b99a:	577d                	li	a4,-1
        ((d->scoped == kScopeInterfaceID) && d->interfaceID == InterfaceID) ||
        ((d->scoped == kScopeServiceID) && d->serviceID == ServiceID))
    {
        return mDNStrue;
    e881b99c:	4785                	li	a5,1
    if (((d->scoped == kScopeNone) && ((!InterfaceID && ServiceID == -1) || InterfaceID == mDNSInterface_Unicast)) ||
    e881b99e:	00e60a63          	beq	a2,a4,e881b9b2 <DNSServerMatch+0x20>
    e881b9a2:	00087797          	auipc	a5,0x87
    e881b9a6:	3de78793          	addi	a5,a5,990 # e88a2d80 <mDNSInterface_Unicast>
    e881b9aa:	639c                	ld	a5,0(a5)
        ((d->scoped == kScopeInterfaceID) && d->interfaceID == InterfaceID) ||
    e881b9ac:	8f8d                	sub	a5,a5,a1
        return mDNStrue;
    e881b9ae:	0017b793          	seqz	a5,a5
    }
    return mDNSfalse;
}
    e881b9b2:	853e                	mv	a0,a5
    e881b9b4:	8082                	ret
    if (((d->scoped == kScopeNone) && ((!InterfaceID && ServiceID == -1) || InterfaceID == mDNSInterface_Unicast)) ||
    e881b9b6:	4785                	li	a5,1
    e881b9b8:	00f71463          	bne	a4,a5,e881b9c0 <DNSServerMatch+0x2e>
        ((d->scoped == kScopeInterfaceID) && d->interfaceID == InterfaceID) ||
    e881b9bc:	651c                	ld	a5,8(a0)
    e881b9be:	b7fd                	j	e881b9ac <DNSServerMatch+0x1a>
    e881b9c0:	4689                	li	a3,2
    return mDNSfalse;
    e881b9c2:	4781                	li	a5,0
        ((d->scoped == kScopeInterfaceID) && d->interfaceID == InterfaceID) ||
    e881b9c4:	fed717e3          	bne	a4,a3,e881b9b2 <DNSServerMatch+0x20>
        ((d->scoped == kScopeServiceID) && d->serviceID == ServiceID))
    e881b9c8:	491c                	lw	a5,16(a0)
    e881b9ca:	8f91                	sub	a5,a5,a2
    e881b9cc:	b7cd                	j	e881b9ae <DNSServerMatch+0x1c>

00000000e881b9ce <NSSCallback>:
        sr->ServiceCallback(m, sr, result);
}

mDNSlocal void NSSCallback(mDNS *const m, AuthRecord *const rr, mStatus result)
{
    ServiceRecordSet *sr = (ServiceRecordSet *)rr->RecordContext;
    e881b9ce:	79ac                	ld	a1,112(a1)
    if (sr->ServiceCallback)
    e881b9d0:	0005b303          	ld	t1,0(a1)
    e881b9d4:	00030363          	beqz	t1,e881b9da <NSSCallback+0xc>
        sr->ServiceCallback(m, sr, result);
    e881b9d8:	8302                	jr	t1
}
    e881b9da:	8082                	ret

00000000e881b9dc <AcknowledgeRecord>:
    if (rr->RecordCallback)
    e881b9dc:	75bc                	ld	a5,104(a1)
    e881b9de:	cba5                	beqz	a5,e881ba4e <AcknowledgeRecord+0x72>
{
    e881b9e0:	1101                	addi	sp,sp,-32
    e881b9e2:	e422                	sd	s0,8(sp)
    e881b9e4:	e826                	sd	s1,16(sp)
    e881b9e6:	ec06                	sd	ra,24(sp)
        rr->Acknowledged = mDNStrue;
    e881b9e8:	4785                	li	a5,1
    e881b9ea:	0af58a23          	sb	a5,180(a1)
        mDNS_DropLockBeforeCallback();      // Allow client to legally make mDNS API calls from the callback
    e881b9ee:	595c                	lw	a5,52(a0)
    e881b9f0:	842a                	mv	s0,a0
    e881b9f2:	84ae                	mv	s1,a1
    e881b9f4:	0017871b          	addiw	a4,a5,1
    e881b9f8:	d858                	sw	a4,52(s0)
    e881b9fa:	5914                	lw	a3,48(a0)
    e881b9fc:	00d70d63          	beq	a4,a3,e881ba16 <AcknowledgeRecord+0x3a>
    e881ba00:	0008c617          	auipc	a2,0x8c
    e881ba04:	53060613          	addi	a2,a2,1328 # e88a7f30 <__func__.9776>
    e881ba08:	00088597          	auipc	a1,0x88
    e881ba0c:	36058593          	addi	a1,a1,864 # e88a3d68 <end.8789+0x6c0>
    e881ba10:	4501                	li	a0,0
    e881ba12:	29b130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->RecordCallback(m, rr, mStatus_NoError);
    e881ba16:	74bc                	ld	a5,104(s1)
    e881ba18:	4601                	li	a2,0
    e881ba1a:	85a6                	mv	a1,s1
    e881ba1c:	8522                	mv	a0,s0
    e881ba1e:	9782                	jalr	a5
        mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e881ba20:	5814                	lw	a3,48(s0)
    e881ba22:	5858                	lw	a4,52(s0)
    e881ba24:	00e68d63          	beq	a3,a4,e881ba3e <AcknowledgeRecord+0x62>
    e881ba28:	0008c617          	auipc	a2,0x8c
    e881ba2c:	50860613          	addi	a2,a2,1288 # e88a7f30 <__func__.9776>
    e881ba30:	00088597          	auipc	a1,0x88
    e881ba34:	37858593          	addi	a1,a1,888 # e88a3da8 <end.8789+0x700>
    e881ba38:	4501                	li	a0,0
    e881ba3a:	273130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881ba3e:	585c                	lw	a5,52(s0)
    e881ba40:	37fd                	addiw	a5,a5,-1
    e881ba42:	d85c                	sw	a5,52(s0)
}
    e881ba44:	60e2                	ld	ra,24(sp)
    e881ba46:	6422                	ld	s0,8(sp)
    e881ba48:	64c2                	ld	s1,16(sp)
    e881ba4a:	6105                	addi	sp,sp,32
    e881ba4c:	8082                	ret
    e881ba4e:	8082                	ret

00000000e881ba50 <GetValueForIPv4Addr>:
{
    e881ba50:	1141                	addi	sp,sp,-16
    e881ba52:	e406                	sd	ra,8(sp)
    e881ba54:	872e                	mv	a4,a1
    int dots = 0;
    e881ba56:	4781                	li	a5,0
    val = 0;
    e881ba58:	4801                	li	a6,0
    for ( ; ptr < limit && *ptr != ' '; ptr++)
    e881ba5a:	02000893          	li	a7,32
        if (*ptr >= '0' &&  *ptr <= '9')
    e881ba5e:	4325                	li	t1,9
        else if (*ptr == '.')
    e881ba60:	02e00e13          	li	t3,46
            if (val > 255 || dots >= 3)
    e881ba64:	0ff00e93          	li	t4,255
    e881ba68:	4f09                	li	t5,2
            val = val * 10 + *ptr - '0';
    e881ba6a:	4fa9                	li	t6,10
    for ( ; ptr < limit && *ptr != ' '; ptr++)
    e881ba6c:	06e56363          	bltu	a0,a4,e881bad2 <GetValueForIPv4Addr+0x82>
    if (dots != 3) { LogMsg("GetValueForIPv4Addr: Address malformed dots %d", dots); return mDNSNULL; }
    e881ba70:	470d                	li	a4,3
    e881ba72:	08e78063          	beq	a5,a4,e881baf2 <GetValueForIPv4Addr+0xa2>
    e881ba76:	863e                	mv	a2,a5
    e881ba78:	0008a597          	auipc	a1,0x8a
    e881ba7c:	e5858593          	addi	a1,a1,-424 # e88a58d0 <end.8789+0x2228>
    e881ba80:	4501                	li	a0,0
    e881ba82:	22b130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881ba86:	a839                	j	e881baa4 <GetValueForIPv4Addr+0x54>
        else if (*ptr == '.')
    e881ba88:	03c69763          	bne	a3,t3,e881bab6 <GetValueForIPv4Addr+0x66>
            if (val > 255 || dots >= 3)
    e881ba8c:	010efe63          	bgeu	t4,a6,e881baa8 <GetValueForIPv4Addr+0x58>
                LogMsg("GetValueForIPv4Addr: something wrong ptr(%p) %c, limit %p, dots %d", ptr, *ptr, limit, dots);
    e881ba90:	02e00693          	li	a3,46
            else { LogMsg("GetValueForIPv4Addr: something wrong ptr(%p) %c, limit %p, dots %d", ptr, *ptr, limit, dots); return mDNSNULL; }
    e881ba94:	862a                	mv	a2,a0
    e881ba96:	0008a597          	auipc	a1,0x8a
    e881ba9a:	df258593          	addi	a1,a1,-526 # e88a5888 <end.8789+0x21e0>
    e881ba9e:	4501                	li	a0,0
    e881baa0:	20d130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (dots != 3) { LogMsg("GetValueForIPv4Addr: Address malformed dots %d", dots); return mDNSNULL; }
    e881baa4:	4501                	li	a0,0
    e881baa6:	a01d                	j	e881bacc <GetValueForIPv4Addr+0x7c>
            if (val > 255 || dots >= 3)
    e881baa8:	feff44e3          	blt	t5,a5,e881ba90 <GetValueForIPv4Addr+0x40>
            v4->b[dots++] = val;
    e881baac:	00f6580b          	srb	a6,a2,a5,0
    e881bab0:	2785                	addiw	a5,a5,1
            val = 0;
    e881bab2:	4801                	li	a6,0
    e881bab4:	a82d                	j	e881baee <GetValueForIPv4Addr+0x9e>
            if (*ptr == 0 && ptr == limit - 1 && dots == 3)
    e881bab6:	fef9                	bnez	a3,e881ba94 <GetValueForIPv4Addr+0x44>
    e881bab8:	fff70593          	addi	a1,a4,-1
    e881babc:	fcb51ce3          	bne	a0,a1,e881ba94 <GetValueForIPv4Addr+0x44>
    e881bac0:	458d                	li	a1,3
    e881bac2:	fcb799e3          	bne	a5,a1,e881ba94 <GetValueForIPv4Addr+0x44>
                v4->b[dots] = val;
    e881bac6:	010601a3          	sb	a6,3(a2)
                return ptr + 1;
    e881baca:	853a                	mv	a0,a4
}
    e881bacc:	60a2                	ld	ra,8(sp)
    e881bace:	0141                	addi	sp,sp,16
    e881bad0:	8082                	ret
    for ( ; ptr < limit && *ptr != ' '; ptr++)
    e881bad2:	00054683          	lbu	a3,0(a0)
    e881bad6:	f9168de3          	beq	a3,a7,e881ba70 <GetValueForIPv4Addr+0x20>
        if (*ptr >= '0' &&  *ptr <= '9')
    e881bada:	fd06859b          	addiw	a1,a3,-48
    e881bade:	0ff5f593          	andi	a1,a1,255
    e881bae2:	fab363e3          	bltu	t1,a1,e881ba88 <GetValueForIPv4Addr+0x38>
            val = val * 10 + *ptr - '0';
    e881bae6:	250f968b          	mulaw	a3,t6,a6
    e881baea:	fd06881b          	addiw	a6,a3,-48
    for ( ; ptr < limit && *ptr != ' '; ptr++)
    e881baee:	0505                	addi	a0,a0,1
    e881baf0:	bfb5                	j	e881ba6c <GetValueForIPv4Addr+0x1c>
    v4->b[dots] = val;
    e881baf2:	010601a3          	sb	a6,3(a2)
    return ptr;
    e881baf6:	bfd9                	j	e881bacc <GetValueForIPv4Addr+0x7c>

00000000e881baf8 <GetValueForMACAddr>:
{
    e881baf8:	1141                	addi	sp,sp,-16
    e881bafa:	8832                	mv	a6,a2
    e881bafc:	e406                	sd	ra,8(sp)
    e881bafe:	01150313          	addi	t1,a0,17
    mDNSu8  val    = 0;
    e881bb02:	4681                	li	a3,0
    int     colons = 0;
    e881bb04:	4601                	li	a2,0
    for (i = 0; ptr < limit && *ptr != ' ' && i < 17; i++, ptr++)
    e881bb06:	02000e13          	li	t3,32
        hval = HexVal(*ptr);
    e881bb0a:	4ea5                	li	t4,9
    e881bb0c:	4895                	li	a7,5
        else if (*ptr == ':')
    e881bb0e:	03a00f13          	li	t5,58
            if (colons >=5)
    e881bb12:	4f91                	li	t6,4
    for (i = 0; ptr < limit && *ptr != ' ' && i < 17; i++, ptr++)
    e881bb14:	06b56563          	bltu	a0,a1,e881bb7e <GetValueForMACAddr+0x86>
    if (colons != 5)
    e881bb18:	4795                	li	a5,5
    e881bb1a:	08f60663          	beq	a2,a5,e881bba6 <GetValueForMACAddr+0xae>
        LogMsg("GetValueForMACAddr: Address malformed colons %d", colons);
    e881bb1e:	0008a597          	auipc	a1,0x8a
    e881bb22:	f5258593          	addi	a1,a1,-174 # e88a5a70 <end.8789+0x23c8>
    e881bb26:	4501                	li	a0,0
    e881bb28:	185130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881bb2c:	a081                	j	e881bb6c <GetValueForMACAddr+0x74>
        hval = HexVal(*ptr);
    e881bb2e:	fbf7871b          	addiw	a4,a5,-65
    e881bb32:	0ff77713          	andi	a4,a4,255
    e881bb36:	00e8e763          	bltu	a7,a4,e881bb44 <GetValueForMACAddr+0x4c>
    e881bb3a:	fc97879b          	addiw	a5,a5,-55
    e881bb3e:	1c07a78b          	ext	a5,a5,7,0
    e881bb42:	a8a1                	j	e881bb9a <GetValueForMACAddr+0xa2>
    e881bb44:	f9f7871b          	addiw	a4,a5,-97
    e881bb48:	0ff77713          	andi	a4,a4,255
    e881bb4c:	00e8e563          	bltu	a7,a4,e881bb56 <GetValueForMACAddr+0x5e>
    e881bb50:	fa97879b          	addiw	a5,a5,-87
    e881bb54:	b7ed                	j	e881bb3e <GetValueForMACAddr+0x46>
        else if (*ptr == ':')
    e881bb56:	05e79663          	bne	a5,t5,e881bba2 <GetValueForMACAddr+0xaa>
            if (colons >=5)
    e881bb5a:	00cfdd63          	bge	t6,a2,e881bb74 <GetValueForMACAddr+0x7c>
                LogMsg("GetValueForMACAddr: Address malformed colons %d val %d", colons, val);
    e881bb5e:	0008a597          	auipc	a1,0x8a
    e881bb62:	eda58593          	addi	a1,a1,-294 # e88a5a38 <end.8789+0x2390>
    e881bb66:	4501                	li	a0,0
    e881bb68:	145130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mDNSNULL;
    e881bb6c:	4501                	li	a0,0
}
    e881bb6e:	60a2                	ld	ra,8(sp)
    e881bb70:	0141                	addi	sp,sp,16
    e881bb72:	8082                	ret
            eth->b[colons] = val;
    e881bb74:	00c8568b          	srb	a3,a6,a2,0
            colons++;
    e881bb78:	2605                	addiw	a2,a2,1
            val = 0;
    e881bb7a:	4681                	li	a3,0
    e881bb7c:	a01d                	j	e881bba2 <GetValueForMACAddr+0xaa>
    for (i = 0; ptr < limit && *ptr != ' ' && i < 17; i++, ptr++)
    e881bb7e:	00054783          	lbu	a5,0(a0)
    e881bb82:	f9c78be3          	beq	a5,t3,e881bb18 <GetValueForMACAddr+0x20>
    e881bb86:	f86509e3          	beq	a0,t1,e881bb18 <GetValueForMACAddr+0x20>
        hval = HexVal(*ptr);
    e881bb8a:	fd07871b          	addiw	a4,a5,-48
    e881bb8e:	0ff77293          	andi	t0,a4,255
    e881bb92:	f85eeee3          	bltu	t4,t0,e881bb2e <GetValueForMACAddr+0x36>
    e881bb96:	1c07278b          	ext	a5,a4,7,0
            val |= hval;
    e881bb9a:	0692                	slli	a3,a3,0x4
    e881bb9c:	8fd5                	or	a5,a5,a3
    e881bb9e:	0ff7f693          	andi	a3,a5,255
    for (i = 0; ptr < limit && *ptr != ' ' && i < 17; i++, ptr++)
    e881bba2:	0505                	addi	a0,a0,1
    e881bba4:	bf85                	j	e881bb14 <GetValueForMACAddr+0x1c>
    eth->b[colons] = val;
    e881bba6:	00d802a3          	sb	a3,5(a6)
    return ptr;
    e881bbaa:	b7d1                	j	e881bb6e <GetValueForMACAddr+0x76>

00000000e881bbac <GetValueForIPv6Addr>:
{
    e881bbac:	7179                	addi	sp,sp,-48
    e881bbae:	ec22                	sd	s0,24(sp)
    e881bbb0:	88b2                	mv	a7,a2
    while (ptr < limit && *ptr != ' ')
    e881bbb2:	842a                	mv	s0,a0
{
    e881bbb4:	f406                	sd	ra,40(sp)
    e881bbb6:	f026                	sd	s1,32(sp)
    numColons = numBytes = value = digitsProcessed = zeroFillStart = 0;
    e881bbb8:	4801                	li	a6,0
    e881bbba:	4781                	li	a5,0
    e881bbbc:	4501                	li	a0,0
    e881bbbe:	4601                	li	a2,0
    e881bbc0:	4701                	li	a4,0
    while (ptr < limit && *ptr != ' ')
    e881bbc2:	02000e13          	li	t3,32
        hval = HexVal(*ptr);
    e881bbc6:	4f25                	li	t5,9
    e881bbc8:	4e95                	li	t4,5
        else if (*ptr == ':')
    e881bbca:	03a00f93          	li	t6,58
                if (numBytes > 13) { LogMsg("GetValueForIPv6Addr:1: numBytes is %d", numBytes); return mDNSNULL; }
    e881bbce:	42b5                	li	t0,13
    while (ptr < limit && *ptr != ' ')
    e881bbd0:	0cb46663          	bltu	s0,a1,e881bc9c <GetValueForIPv6Addr+0xf0>
    if (!digitsProcessed)
    e881bbd4:	e56d                	bnez	a0,e881bcbe <GetValueForIPv6Addr+0x112>
        LogMsg("GetValueForIPv6Addr: no trailing bytes after colon, numBytes is %d", numBytes);
    e881bbd6:	0008a597          	auipc	a1,0x8a
    e881bbda:	daa58593          	addi	a1,a1,-598 # e88a5980 <end.8789+0x22d8>
    e881bbde:	a09d                	j	e881bc44 <GetValueForIPv6Addr+0x98>
        hval = HexVal(*ptr);
    e881bbe0:	fbf6831b          	addiw	t1,a3,-65
    e881bbe4:	0ff37313          	andi	t1,t1,255
    e881bbe8:	006ee563          	bltu	t4,t1,e881bbf2 <GetValueForIPv6Addr+0x46>
    e881bbec:	fc96869b          	addiw	a3,a3,-55
    e881bbf0:	a0c9                	j	e881bcb2 <GetValueForIPv6Addr+0x106>
    e881bbf2:	f9f6831b          	addiw	t1,a3,-97
    e881bbf6:	0ff37313          	andi	t1,t1,255
    e881bbfa:	006ee563          	bltu	t4,t1,e881bc04 <GetValueForIPv6Addr+0x58>
    e881bbfe:	fa96869b          	addiw	a3,a3,-87
    e881bc02:	a845                	j	e881bcb2 <GetValueForIPv6Addr+0x106>
        else if (*ptr == ':')
    e881bc04:	0bf69b63          	bne	a3,t6,e881bcba <GetValueForIPv6Addr+0x10e>
            if (!digitsProcessed)
    e881bc08:	e131                	bnez	a0,e881bc4c <GetValueForIPv6Addr+0xa0>
                if (numColons)
    e881bc0a:	08080563          	beqz	a6,e881bc94 <GetValueForIPv6Addr+0xe8>
                    if (!numBytes && (ptr + 1) < limit && *(ptr + 1) == ' ')
    e881bc0e:	e615                	bnez	a2,e881bc3a <GetValueForIPv6Addr+0x8e>
    e881bc10:	00140493          	addi	s1,s0,1
    e881bc14:	02b4f363          	bgeu	s1,a1,e881bc3a <GetValueForIPv6Addr+0x8e>
    e881bc18:	00144683          	lbu	a3,1(s0)
    e881bc1c:	02000713          	li	a4,32
    e881bc20:	00e69d63          	bne	a3,a4,e881bc3a <GetValueForIPv6Addr+0x8e>
                        mDNSPlatformMemZero(v6->b, 16);
    e881bc24:	45c1                	li	a1,16
    e881bc26:	8546                	mv	a0,a7
    e881bc28:	6cf130ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
                        return ptr + 1;
    e881bc2c:	8426                	mv	s0,s1
}
    e881bc2e:	8522                	mv	a0,s0
    e881bc30:	70a2                	ld	ra,40(sp)
    e881bc32:	6462                	ld	s0,24(sp)
    e881bc34:	7482                	ld	s1,32(sp)
    e881bc36:	6145                	addi	sp,sp,48
    e881bc38:	8082                	ret
                    LogMsg("GetValueForIPv6Addr: zeroFillStart non-zero %d", zeroFillStart);
    e881bc3a:	863e                	mv	a2,a5
    e881bc3c:	0008a597          	auipc	a1,0x8a
    e881bc40:	cc458593          	addi	a1,a1,-828 # e88a5900 <end.8789+0x2258>
        LogMsg("GetValueForIPv6addr: Not enough bytes for IPv6 address, numBytes is %d", numBytes);
    e881bc44:	4501                	li	a0,0
    e881bc46:	067130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881bc4a:	a005                	j	e881bc6a <GetValueForIPv6Addr+0xbe>
            else if ((ptr + 1) < limit && *(ptr + 1) == ' ')
    e881bc4c:	00140693          	addi	a3,s0,1
    e881bc50:	00b6ff63          	bgeu	a3,a1,e881bc6e <GetValueForIPv6Addr+0xc2>
    e881bc54:	00144683          	lbu	a3,1(s0)
    e881bc58:	01c69b63          	bne	a3,t3,e881bc6e <GetValueForIPv6Addr+0xc2>
                LogMsg("GetValueForIPv6Addr: Trailing colon");
    e881bc5c:	0008a597          	auipc	a1,0x8a
    e881bc60:	cd458593          	addi	a1,a1,-812 # e88a5930 <end.8789+0x2288>
    e881bc64:	4501                	li	a0,0
    e881bc66:	047130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mDNSNULL;
    e881bc6a:	4401                	li	s0,0
    e881bc6c:	b7c9                	j	e881bc2e <GetValueForIPv6Addr+0x82>
                if (numBytes > 13) { LogMsg("GetValueForIPv6Addr:1: numBytes is %d", numBytes); return mDNSNULL; }
    e881bc6e:	00c2d763          	bge	t0,a2,e881bc7c <GetValueForIPv6Addr+0xd0>
    e881bc72:	0008a597          	auipc	a1,0x8a
    e881bc76:	ce658593          	addi	a1,a1,-794 # e88a5958 <end.8789+0x22b0>
    e881bc7a:	b7e9                	j	e881bc44 <GetValueForIPv6Addr+0x98>
                v6addr[numBytes++] = (mDNSu8) ((value >> 8) & 0xFF);
    e881bc7c:	4087551b          	sraiw	a0,a4,0x8
    e881bc80:	00c1550b          	srb	a0,sp,a2,0
    e881bc84:	0016069b          	addiw	a3,a2,1
                v6addr[numBytes++] = (mDNSu8) (value & 0xFF);
    e881bc88:	00d1570b          	srb	a4,sp,a3,0
    e881bc8c:	2609                	addiw	a2,a2,2
                digitsProcessed = value = 0;
    e881bc8e:	4501                	li	a0,0
    e881bc90:	4701                	li	a4,0
    e881bc92:	a025                	j	e881bcba <GetValueForIPv6Addr+0x10e>
    e881bc94:	8542                	mv	a0,a6
    e881bc96:	87b2                	mv	a5,a2
                numColons++;
    e881bc98:	4805                	li	a6,1
    e881bc9a:	a005                	j	e881bcba <GetValueForIPv6Addr+0x10e>
    while (ptr < limit && *ptr != ' ')
    e881bc9c:	00044683          	lbu	a3,0(s0)
    e881bca0:	f3c68ae3          	beq	a3,t3,e881bbd4 <GetValueForIPv6Addr+0x28>
        hval = HexVal(*ptr);
    e881bca4:	fd06831b          	addiw	t1,a3,-48
    e881bca8:	0ff37393          	andi	t2,t1,255
    e881bcac:	f27f6ae3          	bltu	t5,t2,e881bbe0 <GetValueForIPv6Addr+0x34>
    e881bcb0:	869a                	mv	a3,t1
            value <<= 4;
    e881bcb2:	0047171b          	slliw	a4,a4,0x4
            value |= hval;
    e881bcb6:	8f55                	or	a4,a4,a3
            digitsProcessed = 1;
    e881bcb8:	4505                	li	a0,1
        ptr++;
    e881bcba:	0405                	addi	s0,s0,1
    e881bcbc:	bf11                	j	e881bbd0 <GetValueForIPv6Addr+0x24>
    if (numBytes > 14) { LogMsg("GetValueForIPv6Addr:3: numBytes is %d", numBytes); return mDNSNULL; }
    e881bcbe:	46b9                	li	a3,14
    e881bcc0:	0008a597          	auipc	a1,0x8a
    e881bcc4:	d0858593          	addi	a1,a1,-760 # e88a59c8 <end.8789+0x2320>
    e881bcc8:	f6c6cee3          	blt	a3,a2,e881bc44 <GetValueForIPv6Addr+0x98>
    v6addr[numBytes++] = (mDNSu8) ((value >> 8) & 0xFF);
    e881bccc:	4087569b          	sraiw	a3,a4,0x8
    e881bcd0:	00c1568b          	srb	a3,sp,a2,0
    v6addr[numBytes++] = (mDNSu8) (value & 0xFF);
    e881bcd4:	0016059b          	addiw	a1,a2,1
    e881bcd8:	00b1570b          	srb	a4,sp,a1,0
    e881bcdc:	0026069b          	addiw	a3,a2,2
    if (zeroFillStart)
    e881bce0:	cfa1                	beqz	a5,e881bd38 <GetValueForIPv6Addr+0x18c>
    e881bce2:	4701                	li	a4,0
            v6->b[i] = v6addr[i];
    e881bce4:	80e1458b          	lrbu	a1,sp,a4,0
    e881bce8:	00e8d58b          	srb	a1,a7,a4,0
        for (i = 0; i < zeroFillStart; i++)
    e881bcec:	0705                	addi	a4,a4,1
    e881bcee:	0007059b          	sext.w	a1,a4
    e881bcf2:	fef5c9e3          	blt	a1,a5,e881bce4 <GetValueForIPv6Addr+0x138>
        for (j = i, n = 0; n < 16 - numBytes; j++, n++)
    e881bcf6:	45c1                	li	a1,16
    e881bcf8:	4701                	li	a4,0
    e881bcfa:	0007851b          	sext.w	a0,a5
    e881bcfe:	40d586bb          	subw	a3,a1,a3
    e881bd02:	00a705bb          	addw	a1,a4,a0
    e881bd06:	02d74563          	blt	a4,a3,e881bd30 <GetValueForIPv6Addr+0x184>
    e881bd0a:	40c7863b          	subw	a2,a5,a2
    e881bd0e:	2639                	addiw	a2,a2,14
    e881bd10:	4701                	li	a4,0
        for (; j < 16; i++, j++)
    e881bd12:	46bd                	li	a3,15
            v6->b[j] = v6addr[i];
    e881bd14:	98b2                	add	a7,a7,a2
    e881bd16:	0007079b          	sext.w	a5,a4
    e881bd1a:	00a785bb          	addw	a1,a5,a0
        for (; j < 16; i++, j++)
    e881bd1e:	9fb1                	addw	a5,a5,a2
    e881bd20:	f0f6e7e3          	bltu	a3,a5,e881bc2e <GetValueForIPv6Addr+0x82>
            v6->b[j] = v6addr[i];
    e881bd24:	80b1478b          	lrbu	a5,sp,a1,0
    e881bd28:	00e8d78b          	srb	a5,a7,a4,0
        for (; j < 16; i++, j++)
    e881bd2c:	0705                	addi	a4,a4,1
    e881bd2e:	b7e5                	j	e881bd16 <GetValueForIPv6Addr+0x16a>
            v6->b[j] = 0;
    e881bd30:	00b8d00b          	srb	zero,a7,a1,0
        for (j = i, n = 0; n < 16 - numBytes; j++, n++)
    e881bd34:	2705                	addiw	a4,a4,1
    e881bd36:	b7f1                	j	e881bd02 <GetValueForIPv6Addr+0x156>
    else if (numBytes == 16)
    e881bd38:	47c1                	li	a5,16
    e881bd3a:	00f69863          	bne	a3,a5,e881bd4a <GetValueForIPv6Addr+0x19e>
        mDNSPlatformMemCopy(v6->b, v6addr, 16);
    e881bd3e:	4641                	li	a2,16
    e881bd40:	858a                	mv	a1,sp
    e881bd42:	8546                	mv	a0,a7
    e881bd44:	55d130ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    e881bd48:	b5dd                	j	e881bc2e <GetValueForIPv6Addr+0x82>
        LogMsg("GetValueForIPv6addr: Not enough bytes for IPv6 address, numBytes is %d", numBytes);
    e881bd4a:	8636                	mv	a2,a3
    e881bd4c:	0008a597          	auipc	a1,0x8a
    e881bd50:	ca458593          	addi	a1,a1,-860 # e88a59f0 <end.8789+0x2348>
    e881bd54:	bdc5                	j	e881bc44 <GetValueForIPv6Addr+0x98>

00000000e881bd56 <SetNextAnnounceProbeTime>:
    if (rr->resrec.RecordType == kDNSRecordTypeUnique)
    e881bd56:	0085c783          	lbu	a5,8(a1)
    e881bd5a:	4709                	li	a4,2
    e881bd5c:	0ae79a63          	bne	a5,a4,e881be10 <SetNextAnnounceProbeTime+0xba>
{
    e881bd60:	7179                	addi	sp,sp,-48
    e881bd62:	fa91540b          	sdd	s0,s1,(sp),1,4
    e881bd66:	f406                	sd	ra,40(sp)
    e881bd68:	f04a                	sd	s2,32(sp)
        if ((rr->LastAPTime + rr->ThisAPInterval) - m->timenow > mDNSPlatformOneSecond * 10)
    e881bd6a:	1105a783          	lw	a5,272(a1)
    e881bd6e:	1145a683          	lw	a3,276(a1)
    e881bd72:	842e                	mv	s0,a1
    e881bd74:	84aa                	mv	s1,a0
    e881bd76:	9ebd                	addw	a3,a3,a5
    e881bd78:	24052783          	lw	a5,576(a0)
    e881bd7c:	9e9d                	subw	a3,a3,a5
    e881bd7e:	000b9797          	auipc	a5,0xb9
    e881bd82:	d0278793          	addi	a5,a5,-766 # e88d4a80 <mDNSPlatformOneSecond>
    e881bd86:	4398                	lw	a4,0(a5)
    e881bd88:	47a9                	li	a5,10
    e881bd8a:	02e787bb          	mulw	a5,a5,a4
    e881bd8e:	04d7d663          	bge	a5,a3,e881bdda <SetNextAnnounceProbeTime+0x84>
            LogMsg("SetNextAnnounceProbeTime: ProbeCount %d Next in %d %s", rr->ProbeCount, (rr->LastAPTime + rr->ThisAPInterval) - m->timenow, ARDisplayString(m, rr));
    e881bd92:	0b65c903          	lbu	s2,182(a1)
    e881bd96:	798c                	ld	a1,48(a1)
    e881bd98:	03b50613          	addi	a2,a0,59
    e881bd9c:	00840513          	addi	a0,s0,8
    e881bda0:	0591                	addi	a1,a1,4
    e881bda2:	e436                	sd	a3,8(sp)
    e881bda4:	c71fa0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881bda8:	872a                	mv	a4,a0
    e881bdaa:	66a2                	ld	a3,8(sp)
    e881bdac:	864a                	mv	a2,s2
    e881bdae:	0008b597          	auipc	a1,0x8b
    e881bdb2:	36258593          	addi	a1,a1,866 # e88a7110 <end.8789+0x3a68>
    e881bdb6:	4501                	li	a0,0
    e881bdb8:	6f4130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            LogMsg("SetNextAnnounceProbeTime: m->SuppressProbes %d m->timenow %d diff %d", m->SuppressProbes, m->timenow, m->SuppressProbes - m->timenow);
    e881bdbc:	678d                	lui	a5,0x3
    e881bdbe:	97a6                	add	a5,a5,s1
    e881bdc0:	1f07a603          	lw	a2,496(a5) # 31f0 <memcmp-0xe87fce10>
    e881bdc4:	2404a683          	lw	a3,576(s1) # ffffffffffff0240 <__DRAM0_INF_BASE+0xffffffff00000240>
    e881bdc8:	0008b597          	auipc	a1,0x8b
    e881bdcc:	38058593          	addi	a1,a1,896 # e88a7148 <end.8789+0x3aa0>
    e881bdd0:	4501                	li	a0,0
    e881bdd2:	40d6073b          	subw	a4,a2,a3
    e881bdd6:	6d6130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (m->NextScheduledProbe - (rr->LastAPTime + rr->ThisAPInterval) >= 0)
    e881bdda:	11042703          	lw	a4,272(s0)
    e881bdde:	11442783          	lw	a5,276(s0)
    e881bde2:	9fb9                	addw	a5,a5,a4
    e881bde4:	25c4a703          	lw	a4,604(s1)
    e881bde8:	9f1d                	subw	a4,a4,a5
    e881bdea:	00074463          	bltz	a4,e881bdf2 <SetNextAnnounceProbeTime+0x9c>
            m->NextScheduledProbe = (rr->LastAPTime + rr->ThisAPInterval);
    e881bdee:	24f4ae23          	sw	a5,604(s1)
        if (m->NextScheduledProbe - m->timenow < 0)
    e881bdf2:	2404a703          	lw	a4,576(s1)
    e881bdf6:	25c4a783          	lw	a5,604(s1)
    e881bdfa:	9f99                	subw	a5,a5,a4
    e881bdfc:	0007d463          	bgez	a5,e881be04 <SetNextAnnounceProbeTime+0xae>
            m->NextScheduledProbe = m->timenow;
    e881be00:	24e4ae23          	sw	a4,604(s1)
}
    e881be04:	70a2                	ld	ra,40(sp)
    e881be06:	fa91440b          	ldd	s0,s1,(sp),1,4
    e881be0a:	7902                	ld	s2,32(sp)
    e881be0c:	6145                	addi	sp,sp,48
    e881be0e:	8082                	ret
    else if (rr->AnnounceCount && (ResourceRecordIsValidAnswer(rr) || rr->resrec.RecordType == kDNSRecordTypeDeregistering))
    e881be10:	0b75c703          	lbu	a4,183(a1)
    e881be14:	cb29                	beqz	a4,e881be66 <SetNextAnnounceProbeTime+0x110>
    e881be16:	03c7f713          	andi	a4,a5,60
    e881be1a:	c715                	beqz	a4,e881be46 <SetNextAnnounceProbeTime+0xf0>
    e881be1c:	65b8                	ld	a4,72(a1)
    e881be1e:	c711                	beqz	a4,e881be2a <SetNextAnnounceProbeTime+0xd4>
    e881be20:	00874703          	lbu	a4,8(a4)
    e881be24:	03c77713          	andi	a4,a4,60
    e881be28:	cf19                	beqz	a4,e881be46 <SetNextAnnounceProbeTime+0xf0>
    e881be2a:	69b8                	ld	a4,80(a1)
    e881be2c:	c711                	beqz	a4,e881be38 <SetNextAnnounceProbeTime+0xe2>
    e881be2e:	00874703          	lbu	a4,8(a4)
    e881be32:	03c77713          	andi	a4,a4,60
    e881be36:	cb01                	beqz	a4,e881be46 <SetNextAnnounceProbeTime+0xf0>
    e881be38:	6db8                	ld	a4,88(a1)
    e881be3a:	cb09                	beqz	a4,e881be4c <SetNextAnnounceProbeTime+0xf6>
    e881be3c:	00874703          	lbu	a4,8(a4)
    e881be40:	03c77713          	andi	a4,a4,60
    e881be44:	e701                	bnez	a4,e881be4c <SetNextAnnounceProbeTime+0xf6>
    e881be46:	4705                	li	a4,1
    e881be48:	00e79f63          	bne	a5,a4,e881be66 <SetNextAnnounceProbeTime+0x110>
        if (m->NextScheduledResponse - (rr->LastAPTime + rr->ThisAPInterval) >= 0)
    e881be4c:	1105a703          	lw	a4,272(a1)
    e881be50:	1145a783          	lw	a5,276(a1)
    e881be54:	9fb9                	addw	a5,a5,a4
    e881be56:	26052703          	lw	a4,608(a0)
    e881be5a:	9f1d                	subw	a4,a4,a5
    e881be5c:	00074563          	bltz	a4,e881be66 <SetNextAnnounceProbeTime+0x110>
            m->NextScheduledResponse = (rr->LastAPTime + rr->ThisAPInterval);
    e881be60:	26f52023          	sw	a5,608(a0)
}
    e881be64:	8082                	ret
    e881be66:	8082                	ret

00000000e881be68 <RecordProbeFailure>:
    m->ProbeFailTime = m->timenow;
    e881be68:	670d                	lui	a4,0x3
    e881be6a:	972a                	add	a4,a4,a0
    m->NumFailedProbes++;
    e881be6c:	1ec72683          	lw	a3,492(a4) # 31ec <memcmp-0xe87fce14>
    m->ProbeFailTime = m->timenow;
    e881be70:	24052783          	lw	a5,576(a0)
    m->NumFailedProbes++;
    e881be74:	0016861b          	addiw	a2,a3,1
    m->ProbeFailTime = m->timenow;
    e881be78:	1ef72423          	sw	a5,488(a4)
    m->NumFailedProbes++;
    e881be7c:	1ec72623          	sw	a2,492(a4)
    if (m->NumFailedProbes >= 15)
    e881be80:	4739                	li	a4,14
    e881be82:	04c77563          	bgeu	a4,a2,e881becc <RecordProbeFailure+0x64>
{
    e881be86:	1101                	addi	sp,sp,-32
        m->SuppressProbes = NonZeroTime(m->timenow + mDNSPlatformOneSecond * 5);
    e881be88:	000b9717          	auipc	a4,0xb9
    e881be8c:	bf870713          	addi	a4,a4,-1032 # e88d4a80 <mDNSPlatformOneSecond>
{
    e881be90:	ec06                	sd	ra,24(sp)
        m->SuppressProbes = NonZeroTime(m->timenow + mDNSPlatformOneSecond * 5);
    e881be92:	4318                	lw	a4,0(a4)
    e881be94:	4695                	li	a3,5
    e881be96:	24e6978b          	mulaw	a5,a3,a4
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e881be9a:	e391                	bnez	a5,e881be9e <RecordProbeFailure+0x36>
    e881be9c:	4785                	li	a5,1
    e881be9e:	670d                	lui	a4,0x3
    e881bea0:	953a                	add	a0,a0,a4
    e881bea2:	1ef52823          	sw	a5,496(a0)
        LogMsg("Excessive name conflicts (%lu) for %##s (%s); rate limiting in effect",
    e881bea6:	7594                	ld	a3,40(a1)
    e881bea8:	00a5d503          	lhu	a0,10(a1)
    e881beac:	e432                	sd	a2,8(sp)
    e881beae:	e036                	sd	a3,0(sp)
    e881beb0:	db1f90ef          	jal	ra,e8815c60 <DNSTypeName>
    e881beb4:	872a                	mv	a4,a0
    e881beb6:	f8c1468b          	ldd	a3,a2,(sp),0,4
}
    e881beba:	60e2                	ld	ra,24(sp)
        LogMsg("Excessive name conflicts (%lu) for %##s (%s); rate limiting in effect",
    e881bebc:	0008a597          	auipc	a1,0x8a
    e881bec0:	35458593          	addi	a1,a1,852 # e88a6210 <end.8789+0x2b68>
    e881bec4:	4501                	li	a0,0
}
    e881bec6:	6105                	addi	sp,sp,32
        LogMsg("Excessive name conflicts (%lu) for %##s (%s); rate limiting in effect",
    e881bec8:	5e41306f          	j	e882f4ac <LogMsgWithLevel>
    e881becc:	8082                	ret

00000000e881bece <ShouldSuppressKnownAnswer>:
    if (!IdenticalResourceRecord(&ka->resrec, &rr->resrec)) return(mDNSfalse);
    e881bece:	6514                	ld	a3,8(a0)
    e881bed0:	57fd                	li	a5,-1
    e881bed2:	6598                	ld	a4,8(a1)
    e881bed4:	1782                	slli	a5,a5,0x20
    e881bed6:	83c1                	srli	a5,a5,0x10
    e881bed8:	8efd                	and	a3,a3,a5
    e881beda:	8ff9                	and	a5,a5,a4
    e881bedc:	00f68a63          	beq	a3,a5,e881bef0 <ShouldSuppressKnownAnswer+0x22>
    e881bee0:	4501                	li	a0,0
}
    e881bee2:	8082                	ret
    if (!IdenticalResourceRecord(&ka->resrec, &rr->resrec)) return(mDNSfalse);
    e881bee4:	4501                	li	a0,0
}
    e881bee6:	60e2                	ld	ra,24(sp)
    e881bee8:	6422                	ld	s0,8(sp)
    e881beea:	64c2                	ld	s1,16(sp)
    e881beec:	6105                	addi	sp,sp,32
    e881beee:	8082                	ret
    if (!IdenticalResourceRecord(&ka->resrec, &rr->resrec)) return(mDNSfalse);
    e881bef0:	4d18                	lw	a4,24(a0)
    e881bef2:	4d9c                	lw	a5,24(a1)
    e881bef4:	fef716e3          	bne	a4,a5,e881bee0 <ShouldSuppressKnownAnswer+0x12>
    e881bef8:	01455703          	lhu	a4,20(a0)
    e881befc:	0145d783          	lhu	a5,20(a1)
    e881bf00:	fef710e3          	bne	a4,a5,e881bee0 <ShouldSuppressKnownAnswer+0x12>
    e881bf04:	4d58                	lw	a4,28(a0)
    e881bf06:	4ddc                	lw	a5,28(a1)
    e881bf08:	fcf71ce3          	bne	a4,a5,e881bee0 <ShouldSuppressKnownAnswer+0x12>
{
    e881bf0c:	1101                	addi	sp,sp,-32
    e881bf0e:	e422                	sd	s0,8(sp)
    e881bf10:	e826                	sd	s1,16(sp)
    e881bf12:	ec06                	sd	ra,24(sp)
    e881bf14:	84ae                	mv	s1,a1
    if (!IdenticalResourceRecord(&ka->resrec, &rr->resrec)) return(mDNSfalse);
    e881bf16:	798c                	ld	a1,48(a1)
    e881bf18:	842a                	mv	s0,a0
    e881bf1a:	ffff7617          	auipc	a2,0xffff7
    e881bf1e:	13060613          	addi	a2,a2,304 # e881304a <SameDomainName>
    e881bf22:	0591                	addi	a1,a1,4
    e881bf24:	0521                	addi	a0,a0,8
    e881bf26:	8e4f80ef          	jal	ra,e881400a <SameRDataBody>
    e881bf2a:	dd4d                	beqz	a0,e881bee4 <ShouldSuppressKnownAnswer+0x16>
    e881bf2c:	748c                	ld	a1,40(s1)
    e881bf2e:	7408                	ld	a0,40(s0)
    e881bf30:	91af70ef          	jal	ra,e881304a <SameDomainName>
    e881bf34:	d945                	beqz	a0,e881bee4 <ShouldSuppressKnownAnswer+0x16>
    return (mDNSBool)(ka->resrec.rroriginalttl >= rr->resrec.rroriginalttl / 2);
    e881bf36:	489c                	lw	a5,16(s1)
    e881bf38:	4808                	lw	a0,16(s0)
    e881bf3a:	7c17b78b          	extu	a5,a5,31,1
    e881bf3e:	00f53533          	sltu	a0,a0,a5
    e881bf42:	00154513          	xori	a0,a0,1
    e881bf46:	0ff57513          	andi	a0,a0,255
    e881bf4a:	bf71                	j	e881bee6 <ShouldSuppressKnownAnswer+0x18>

00000000e881bf4c <InitializeLastAPTime>:
{
    e881bf4c:	7179                	addi	sp,sp,-48
    e881bf4e:	f891540b          	sdd	s0,s1,(sp),0,4
    e881bf52:	fb31590b          	sdd	s2,s3,(sp),1,4
    e881bf56:	f406                	sd	ra,40(sp)
    e881bf58:	f052                	sd	s4,32(sp)
    rr->ThisAPInterval = rr->AddressProxy.type ? mDNSPlatformOneSecond : DefaultAPIntervalForRecordType(rr->resrec.RecordType);
    e881bf5a:	0905a783          	lw	a5,144(a1)
{
    e881bf5e:	842a                	mv	s0,a0
    e881bf60:	84ae                	mv	s1,a1
    rr->ThisAPInterval = rr->AddressProxy.type ? mDNSPlatformOneSecond : DefaultAPIntervalForRecordType(rr->resrec.RecordType);
    e881bf62:	1a079263          	bnez	a5,e881c106 <InitializeLastAPTime+0x1ba>
    e881bf66:	0085c703          	lbu	a4,8(a1)
    e881bf6a:	00c77693          	andi	a3,a4,12
    e881bf6e:	16068d63          	beqz	a3,e881c0e8 <InitializeLastAPTime+0x19c>
    e881bf72:	000b9797          	auipc	a5,0xb9
    e881bf76:	b0e78793          	addi	a5,a5,-1266 # e88d4a80 <mDNSPlatformOneSecond>
    e881bf7a:	439c                	lw	a5,0(a5)
    e881bf7c:	4709                	li	a4,2
    e881bf7e:	02e7c7bb          	divw	a5,a5,a4
    if (rr->ProbeCount)
    e881bf82:	0b64c703          	lbu	a4,182(s1)
    rr->ThisAPInterval = rr->AddressProxy.type ? mDNSPlatformOneSecond : DefaultAPIntervalForRecordType(rr->resrec.RecordType);
    e881bf86:	10f4a823          	sw	a5,272(s1)
    if (rr->ProbeCount)
    e881bf8a:	24042983          	lw	s3,576(s0)
    e881bf8e:	18070263          	beqz	a4,e881c112 <InitializeLastAPTime+0x1c6>
        if (m->SuppressProbes == 0 || m->SuppressProbes - m->timenow < 0)
    e881bf92:	678d                	lui	a5,0x3
    e881bf94:	97a2                	add	a5,a5,s0
    e881bf96:	1f07a783          	lw	a5,496(a5) # 31f0 <memcmp-0xe87fce10>
    e881bf9a:	c789                	beqz	a5,e881bfa4 <InitializeLastAPTime+0x58>
    e881bf9c:	413787bb          	subw	a5,a5,s3
    e881bfa0:	0e07de63          	bgez	a5,e881c09c <InitializeLastAPTime+0x150>
            m->SuppressProbes = NonZeroTime(m->timenow + DefaultProbeIntervalForTypeUnique/2 + mDNSRandom(DefaultProbeIntervalForTypeUnique/2));
    e881bfa4:	000b9a17          	auipc	s4,0xb9
    e881bfa8:	adca0a13          	addi	s4,s4,-1316 # e88d4a80 <mDNSPlatformOneSecond>
    e881bfac:	000a2503          	lw	a0,0(s4)
    e881bfb0:	4921                	li	s2,8
    e881bfb2:	0325453b          	divw	a0,a0,s2
    e881bfb6:	892a                	mv	s2,a0
    e881bfb8:	0139093b          	addw	s2,s2,s3
    e881bfbc:	f4df60ef          	jal	ra,e8812f08 <mDNSRandom>
    e881bfc0:	0125053b          	addw	a0,a0,s2
    e881bfc4:	e111                	bnez	a0,e881bfc8 <InitializeLastAPTime+0x7c>
    e881bfc6:	4505                	li	a0,1
    e881bfc8:	678d                	lui	a5,0x3
    e881bfca:	97a2                	add	a5,a5,s0
    e881bfcc:	1ea7a823          	sw	a0,496(a5) # 31f0 <memcmp-0xe87fce10>
            if (m->SuppressProbes - m->NextScheduledProbe >= 0)
    e881bfd0:	25c42583          	lw	a1,604(s0)
    e881bfd4:	9d0d                	subw	a0,a0,a1
    e881bfd6:	00054963          	bltz	a0,e881bfe8 <InitializeLastAPTime+0x9c>
    e881bfda:	872e                	mv	a4,a1
    e881bfdc:	e191                	bnez	a1,e881bfe0 <InitializeLastAPTime+0x94>
    e881bfde:	4705                	li	a4,1
                m->SuppressProbes = NonZeroTime(m->NextScheduledProbe);
    e881bfe0:	678d                	lui	a5,0x3
    e881bfe2:	97a2                	add	a5,a5,s0
    e881bfe4:	1ee7a823          	sw	a4,496(a5) # 31f0 <memcmp-0xe87fce10>
            if (m->SuppressProbes - m->timenow < 0)     // Make sure we don't set m->SuppressProbes excessively in the past
    e881bfe8:	678d                	lui	a5,0x3
    e881bfea:	97a2                	add	a5,a5,s0
    e881bfec:	24042683          	lw	a3,576(s0)
    e881bff0:	1f07a703          	lw	a4,496(a5) # 31f0 <memcmp-0xe87fce10>
    e881bff4:	9f15                	subw	a4,a4,a3
    e881bff6:	00075463          	bgez	a4,e881bffe <InitializeLastAPTime+0xb2>
                m->SuppressProbes = m->timenow;
    e881bffa:	1ed7a823          	sw	a3,496(a5)
            if (m->SuppressProbes - m->NextScheduledQuery >= 0)
    e881bffe:	678d                	lui	a5,0x3
    e881c000:	97a2                	add	a5,a5,s0
    e881c002:	25842703          	lw	a4,600(s0)
    e881c006:	1f07a783          	lw	a5,496(a5) # 31f0 <memcmp-0xe87fce10>
    e881c00a:	9f99                	subw	a5,a5,a4
    e881c00c:	0007c963          	bltz	a5,e881c01e <InitializeLastAPTime+0xd2>
    e881c010:	863a                	mv	a2,a4
    e881c012:	e311                	bnez	a4,e881c016 <InitializeLastAPTime+0xca>
    e881c014:	4605                	li	a2,1
                m->SuppressProbes = NonZeroTime(m->NextScheduledQuery);
    e881c016:	678d                	lui	a5,0x3
    e881c018:	97a2                	add	a5,a5,s0
    e881c01a:	1ec7a823          	sw	a2,496(a5) # 31f0 <memcmp-0xe87fce10>
            if (m->SuppressProbes - m->timenow < 0)     // Make sure we don't set m->SuppressProbes excessively in the past
    e881c01e:	678d                	lui	a5,0x3
    e881c020:	97a2                	add	a5,a5,s0
    e881c022:	1f07a603          	lw	a2,496(a5) # 31f0 <memcmp-0xe87fce10>
    e881c026:	9e15                	subw	a2,a2,a3
    e881c028:	00065463          	bgez	a2,e881c030 <InitializeLastAPTime+0xe4>
                m->SuppressProbes = m->timenow;
    e881c02c:	1ed7a823          	sw	a3,496(a5)
            if (m->SuppressSending && m->SuppressProbes - m->SuppressSending < 0)
    e881c030:	25042783          	lw	a5,592(s0)
    e881c034:	cb91                	beqz	a5,e881c048 <InitializeLastAPTime+0xfc>
    e881c036:	660d                	lui	a2,0x3
    e881c038:	9622                	add	a2,a2,s0
    e881c03a:	1f062503          	lw	a0,496(a2) # 31f0 <memcmp-0xe87fce10>
    e881c03e:	9d1d                	subw	a0,a0,a5
    e881c040:	00055463          	bgez	a0,e881c048 <InitializeLastAPTime+0xfc>
                m->SuppressProbes = NonZeroTime(m->SuppressSending);
    e881c044:	1ef62823          	sw	a5,496(a2)
            if (m->SuppressProbes - m->timenow > mDNSPlatformOneSecond * 8)
    e881c048:	660d                	lui	a2,0x3
    e881c04a:	9622                	add	a2,a2,s0
    e881c04c:	1f062603          	lw	a2,496(a2) # 31f0 <memcmp-0xe87fce10>
    e881c050:	000a2503          	lw	a0,0(s4)
    e881c054:	9e15                	subw	a2,a2,a3
    e881c056:	0035151b          	slliw	a0,a0,0x3
    e881c05a:	04c55163          	bge	a0,a2,e881c09c <InitializeLastAPTime+0x150>
                LogMsg("InitializeLastAPTime ERROR m->SuppressProbes %d m->NextScheduledProbe %d m->NextScheduledQuery %d m->SuppressSending %d %d",
    e881c05e:	40d7883b          	subw	a6,a5,a3
    e881c062:	9f15                	subw	a4,a4,a3
    e881c064:	4501                	li	a0,0
    e881c066:	40d586bb          	subw	a3,a1,a3
    e881c06a:	0008a597          	auipc	a1,0x8a
    e881c06e:	a3658593          	addi	a1,a1,-1482 # e88a5aa0 <end.8789+0x23f8>
    e881c072:	43a130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                m->SuppressProbes = NonZeroTime(m->timenow + DefaultProbeIntervalForTypeUnique/2 + mDNSRandom(DefaultProbeIntervalForTypeUnique/2));
    e881c076:	24042903          	lw	s2,576(s0)
    e881c07a:	000a2503          	lw	a0,0(s4)
    e881c07e:	47a1                	li	a5,8
    e881c080:	02f5453b          	divw	a0,a0,a5
    e881c084:	00a9093b          	addw	s2,s2,a0
    e881c088:	e81f60ef          	jal	ra,e8812f08 <mDNSRandom>
    e881c08c:	0125053b          	addw	a0,a0,s2
    e881c090:	e111                	bnez	a0,e881c094 <InitializeLastAPTime+0x148>
    e881c092:	4505                	li	a0,1
    e881c094:	678d                	lui	a5,0x3
    e881c096:	97a2                	add	a5,a5,s0
    e881c098:	1ea7a823          	sw	a0,496(a5) # 31f0 <memcmp-0xe87fce10>
        rr->LastAPTime = m->SuppressProbes - rr->ThisAPInterval;
    e881c09c:	678d                	lui	a5,0x3
    e881c09e:	97a2                	add	a5,a5,s0
    e881c0a0:	1f07a783          	lw	a5,496(a5) # 31f0 <memcmp-0xe87fce10>
    e881c0a4:	1104a703          	lw	a4,272(s1)
    e881c0a8:	9f99                	subw	a5,a5,a4
        rr->LastAPTime = m->SuppressProbes - rr->ThisAPInterval + DefaultProbeIntervalForTypeUnique * DefaultProbeCountForTypeUnique + rr->ThisAPInterval / 2;
    e881c0aa:	10f4aa23          	sw	a5,276(s1)
    if (rr->AddressProxy.type)
    e881c0ae:	0904a783          	lw	a5,144(s1)
    e881c0b2:	c789                	beqz	a5,e881c0bc <InitializeLastAPTime+0x170>
    e881c0b4:	24042783          	lw	a5,576(s0)
        rr->LastAPTime = m->timenow;
    e881c0b8:	10f4aa23          	sw	a5,276(s1)
    rr->LastMCTime      = m->timenow;
    e881c0bc:	24042783          	lw	a5,576(s0)
    SetNextAnnounceProbeTime(m, rr);
    e881c0c0:	85a6                	mv	a1,s1
    e881c0c2:	8522                	mv	a0,s0
    rr->LastMCTime      = m->timenow;
    e881c0c4:	10f4ac23          	sw	a5,280(s1)
    rr->LastMCInterface = mDNSInterfaceMark;
    e881c0c8:	00087797          	auipc	a5,0x87
    e881c0cc:	c9078793          	addi	a5,a5,-880 # e88a2d58 <mDNSInterfaceMark>
    e881c0d0:	639c                	ld	a5,0(a5)
}
    e881c0d2:	70a2                	ld	ra,40(sp)
    e881c0d4:	7a02                	ld	s4,32(sp)
    rr->LastMCInterface = mDNSInterfaceMark;
    e881c0d6:	12f4b023          	sd	a5,288(s1)
}
    e881c0da:	f891440b          	ldd	s0,s1,(sp),0,4
    e881c0de:	fb31490b          	ldd	s2,s3,(sp),1,4
    e881c0e2:	6145                	addi	sp,sp,48
    SetNextAnnounceProbeTime(m, rr);
    e881c0e4:	c73ff06f          	j	e881bd56 <SetNextAnnounceProbeTime>
    rr->ThisAPInterval = rr->AddressProxy.type ? mDNSPlatformOneSecond : DefaultAPIntervalForRecordType(rr->resrec.RecordType);
    e881c0e8:	00277693          	andi	a3,a4,2
    e881c0ec:	ca81                	beqz	a3,e881c0fc <InitializeLastAPTime+0x1b0>
    e881c0ee:	000b9797          	auipc	a5,0xb9
    e881c0f2:	99278793          	addi	a5,a5,-1646 # e88d4a80 <mDNSPlatformOneSecond>
    e881c0f6:	439c                	lw	a5,0(a5)
    e881c0f8:	4711                	li	a4,4
    e881c0fa:	b551                	j	e881bf7e <InitializeLastAPTime+0x32>
    e881c0fc:	03077713          	andi	a4,a4,48
    e881c100:	e60719e3          	bnez	a4,e881bf72 <InitializeLastAPTime+0x26>
    e881c104:	bdbd                	j	e881bf82 <InitializeLastAPTime+0x36>
    e881c106:	000b9797          	auipc	a5,0xb9
    e881c10a:	97a78793          	addi	a5,a5,-1670 # e88d4a80 <mDNSPlatformOneSecond>
    e881c10e:	439c                	lw	a5,0(a5)
    e881c110:	bd8d                	j	e881bf82 <InitializeLastAPTime+0x36>
    else if ((rr->resrec.RecordType != kDNSRecordTypeKnownUnique) && (rr->resrec.RecordType != kDNSRecordTypeShared) && m->SuppressProbes && (m->SuppressProbes - m->timenow >= 0))
    e881c112:	0084c703          	lbu	a4,8(s1)
    e881c116:	02000693          	li	a3,32
    e881c11a:	02d70f63          	beq	a4,a3,e881c158 <InitializeLastAPTime+0x20c>
    e881c11e:	46a1                	li	a3,8
    e881c120:	02d70c63          	beq	a4,a3,e881c158 <InitializeLastAPTime+0x20c>
    e881c124:	670d                	lui	a4,0x3
    e881c126:	9722                	add	a4,a4,s0
    e881c128:	1f072703          	lw	a4,496(a4) # 31f0 <memcmp-0xe87fce10>
    e881c12c:	c715                	beqz	a4,e881c158 <InitializeLastAPTime+0x20c>
    e881c12e:	413706bb          	subw	a3,a4,s3
    e881c132:	0206c363          	bltz	a3,e881c158 <InitializeLastAPTime+0x20c>
        rr->LastAPTime = m->SuppressProbes - rr->ThisAPInterval + DefaultProbeIntervalForTypeUnique * DefaultProbeCountForTypeUnique + rr->ThisAPInterval / 2;
    e881c136:	000b9697          	auipc	a3,0xb9
    e881c13a:	94a68693          	addi	a3,a3,-1718 # e88d4a80 <mDNSPlatformOneSecond>
    e881c13e:	4294                	lw	a3,0(a3)
    e881c140:	4611                	li	a2,4
    e881c142:	02c6c6bb          	divw	a3,a3,a2
    e881c146:	460d                	li	a2,3
    e881c148:	24c6970b          	mulaw	a4,a3,a2
    e881c14c:	4689                	li	a3,2
    e881c14e:	9f1d                	subw	a4,a4,a5
    e881c150:	02d7c7bb          	divw	a5,a5,a3
    e881c154:	9fb9                	addw	a5,a5,a4
    e881c156:	bf91                	j	e881c0aa <InitializeLastAPTime+0x15e>
        rr->LastAPTime = m->timenow - rr->ThisAPInterval;
    e881c158:	40f9893b          	subw	s2,s3,a5
    e881c15c:	1124aa23          	sw	s2,276(s1)
    e881c160:	b7b9                	j	e881c0ae <InitializeLastAPTime+0x162>

00000000e881c162 <CompleteRDataUpdate>:
{
    e881c162:	7179                	addi	sp,sp,-48
    e881c164:	fa91540b          	sdd	s0,s1,(sp),1,4
    e881c168:	f406                	sd	ra,40(sp)
    e881c16a:	f04a                	sd	s2,32(sp)
    e881c16c:	842e                	mv	s0,a1
    mDNSu16 OldRDLen = rr->resrec.rdlength;
    e881c16e:	0145d683          	lhu	a3,20(a1)
    RData *OldRData = rr->resrec.rdata;
    e881c172:	0305b903          	ld	s2,48(a1)
    SetNewRData(&rr->resrec, rr->NewRData, rr->newrdlength);    // Update our rdata
    e881c176:	1305d603          	lhu	a2,304(a1)
    e881c17a:	1285b583          	ld	a1,296(a1)
{
    e881c17e:	84aa                	mv	s1,a0
    SetNewRData(&rr->resrec, rr->NewRData, rr->newrdlength);    // Update our rdata
    e881c180:	00840513          	addi	a0,s0,8
    mDNSu16 OldRDLen = rr->resrec.rdlength;
    e881c184:	e436                	sd	a3,8(sp)
    SetNewRData(&rr->resrec, rr->NewRData, rr->newrdlength);    // Update our rdata
    e881c186:	8d3f80ef          	jal	ra,e8814a58 <SetNewRData>
    rr->NewRData = mDNSNULL;                                    // Clear the NewRData pointer ...
    e881c18a:	12043423          	sd	zero,296(s0)
    if (rr->UpdateCallback)
    e881c18e:	13843303          	ld	t1,312(s0)
    e881c192:	00030c63          	beqz	t1,e881c1aa <CompleteRDataUpdate+0x48>
        rr->UpdateCallback(m, rr, OldRData, OldRDLen);          // ... and let the client know
    e881c196:	85a2                	mv	a1,s0
    e881c198:	8526                	mv	a0,s1
}
    e881c19a:	fa91440b          	ldd	s0,s1,(sp),1,4
        rr->UpdateCallback(m, rr, OldRData, OldRDLen);          // ... and let the client know
    e881c19e:	66a2                	ld	a3,8(sp)
}
    e881c1a0:	70a2                	ld	ra,40(sp)
        rr->UpdateCallback(m, rr, OldRData, OldRDLen);          // ... and let the client know
    e881c1a2:	864a                	mv	a2,s2
}
    e881c1a4:	7902                	ld	s2,32(sp)
    e881c1a6:	6145                	addi	sp,sp,48
        rr->UpdateCallback(m, rr, OldRData, OldRDLen);          // ... and let the client know
    e881c1a8:	8302                	jr	t1
}
    e881c1aa:	70a2                	ld	ra,40(sp)
    e881c1ac:	fa91440b          	ldd	s0,s1,(sp),1,4
    e881c1b0:	7902                	ld	s2,32(sp)
    e881c1b2:	6145                	addi	sp,sp,48
    e881c1b4:	8082                	ret

00000000e881c1b6 <SetTargetToHostName>:
{
    e881c1b6:	7179                	addi	sp,sp,-48
    e881c1b8:	f891540b          	sdd	s0,s1,(sp),0,4
    e881c1bc:	fb31590b          	sdd	s2,s3,(sp),1,4
    e881c1c0:	f406                	sd	ra,40(sp)
    e881c1c2:	f052                	sd	s4,32(sp)
    e881c1c4:	892a                	mv	s2,a0
    domainname *const target = GetRRDomainNameTarget(&rr->resrec);
    e881c1c6:	00a5d503          	lhu	a0,10(a1)
{
    e881c1ca:	842e                	mv	s0,a1
    domainname *const target = GetRRDomainNameTarget(&rr->resrec);
    e881c1cc:	ffe5079b          	addiw	a5,a0,-2
    e881c1d0:	3c07b70b          	extu	a4,a5,15,0
    e881c1d4:	02500793          	li	a5,37
    e881c1d8:	0ce7e563          	bltu	a5,a4,e881c2a2 <SetTargetToHostName+0xec>
    e881c1dc:	4785                	li	a5,1
    e881c1de:	1796                	slli	a5,a5,0x25
    e881c1e0:	40978793          	addi	a5,a5,1033
    e881c1e4:	00e7d7b3          	srl	a5,a5,a4
    e881c1e8:	0007b78b          	extu	a5,a5,0,0
    e881c1ec:	cbdd                	beqz	a5,e881c2a2 <SetTargetToHostName+0xec>
    e881c1ee:	0305ba03          	ld	s4,48(a1)
    e881c1f2:	0a11                	addi	s4,s4,4
    const domainname *newname = &m->MulticastHostname;
    e881c1f4:	648d                	lui	s1,0x3
    e881c1f6:	aa848493          	addi	s1,s1,-1368 # 2aa8 <memcmp-0xe87fd558>
    e881c1fa:	94ca                	add	s1,s1,s2
    if (!target) LogInfo("SetTargetToHostName: Don't know how to set the target of rrtype %s", DNSTypeName(rr->resrec.rrtype));
    e881c1fc:	0c0a0f63          	beqz	s4,e881c2da <SetTargetToHostName+0x124>
    if (!(rr->ForceMCast || rr->ARType == AuthRecordLocalOnly || rr->ARType == AuthRecordP2P || IsLocalDomain(&rr->namestorage)))
    e881c200:	07a44783          	lbu	a5,122(s0)
    e881c204:	12079463          	bnez	a5,e881c32c <SetTargetToHostName+0x176>
    e881c208:	0ac44783          	lbu	a5,172(s0)
    e881c20c:	4705                	li	a4,1
    e881c20e:	37f1                	addiw	a5,a5,-4
    e881c210:	0ff7f793          	andi	a5,a5,255
    e881c214:	10f77c63          	bgeu	a4,a5,e881c32c <SetTargetToHostName+0x176>
    e881c218:	20040513          	addi	a0,s0,512
    e881c21c:	e87f60ef          	jal	ra,e88130a2 <IsLocalDomain>
    e881c220:	10051663          	bnez	a0,e881c32c <SetTargetToHostName+0x176>
    if (rr->AutoTarget)
    e881c224:	07844783          	lbu	a5,120(s0)
    e881c228:	cf81                	beqz	a5,e881c240 <SetTargetToHostName+0x8a>
        DomainAuthInfo *AuthInfo = GetAuthInfoForName_internal(m, rr->resrec.name);
    e881c22a:	740c                	ld	a1,40(s0)
    e881c22c:	854a                	mv	a0,s2
    e881c22e:	25e160ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
        if (!AuthInfo || !AuthInfo->AutoTunnel) rr->AutoTarget = Target_AutoHostAndNATMAP;
    e881c232:	c501                	beqz	a0,e881c23a <SetTargetToHostName+0x84>
    e881c234:	00c54783          	lbu	a5,12(a0)
    e881c238:	e781                	bnez	a5,e881c240 <SetTargetToHostName+0x8a>
    e881c23a:	4789                	li	a5,2
    e881c23c:	06f40c23          	sb	a5,120(s0)
    target = GetServiceTarget(m, rr);
    e881c240:	85a2                	mv	a1,s0
    e881c242:	854a                	mv	a0,s2
    e881c244:	2ae180ef          	jal	ra,e88344f2 <GetServiceTarget>
    e881c248:	84aa                	mv	s1,a0
    if (!target || target->c[0] == 0)
    e881c24a:	000b9797          	auipc	a5,0xb9
    e881c24e:	82a78793          	addi	a5,a5,-2006 # e88d4a74 <mDNS_LoggingEnabled>
    e881c252:	c501                	beqz	a0,e881c25a <SetTargetToHostName+0xa4>
    e881c254:	00054703          	lbu	a4,0(a0)
    e881c258:	e75d                	bnez	a4,e881c306 <SetTargetToHostName+0x150>
        LogInfo("SetUnicastTargetToHostName No target for %s", ARDisplayString(m, rr));
    e881c25a:	439c                	lw	a5,0(a5)
    e881c25c:	00840493          	addi	s1,s0,8
    e881c260:	c385                	beqz	a5,e881c280 <SetTargetToHostName+0xca>
    e881c262:	780c                	ld	a1,48(s0)
    e881c264:	03b90613          	addi	a2,s2,59
    e881c268:	8526                	mv	a0,s1
    e881c26a:	0591                	addi	a1,a1,4
    e881c26c:	fa8fa0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881c270:	862a                	mv	a2,a0
    e881c272:	0008b597          	auipc	a1,0x8b
    e881c276:	fa658593          	addi	a1,a1,-90 # e88a7218 <end.8789+0x3b70>
    e881c27a:	450d                	li	a0,3
    e881c27c:	230130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->state = regState_NoTarget;
    e881c280:	47a1                	li	a5,8
    e881c282:	14f40623          	sb	a5,332(s0)
        else { if (target) target->c[0] = 0; SetNewRData(&rr->resrec, mDNSNULL, 0); return; }
    e881c286:	100a1c63          	bnez	s4,e881c39e <SetTargetToHostName+0x1e8>
    e881c28a:	8526                	mv	a0,s1
}
    e881c28c:	f891440b          	ldd	s0,s1,(sp),0,4
    e881c290:	70a2                	ld	ra,40(sp)
    e881c292:	7a02                	ld	s4,32(sp)
    e881c294:	fb31490b          	ldd	s2,s3,(sp),1,4
        else { if (target) target->c[0] = 0; SetNewRData(&rr->resrec, mDNSNULL, 0); return; }
    e881c298:	4601                	li	a2,0
    e881c29a:	4581                	li	a1,0
}
    e881c29c:	6145                	addi	sp,sp,48
        else { if (target) target->c[0] = 0; SetNewRData(&rr->resrec, mDNSNULL, 0); return; }
    e881c29e:	fbaf806f          	j	e8814a58 <SetNewRData>
    domainname *const target = GetRRDomainNameTarget(&rr->resrec);
    e881c2a2:	0005071b          	sext.w	a4,a0
    e881c2a6:	02400793          	li	a5,36
    e881c2aa:	02e7e463          	bltu	a5,a4,e881c2d2 <SetTargetToHostName+0x11c>
    e881c2ae:	002007b7          	lui	a5,0x200
    e881c2b2:	04978793          	addi	a5,a5,73 # 200049 <memcmp-0xe85fffb7>
    e881c2b6:	07be                	slli	a5,a5,0xf
    e881c2b8:	00a7d7b3          	srl	a5,a5,a0
    e881c2bc:	0007b78b          	extu	a5,a5,0,0
    e881c2c0:	c789                	beqz	a5,e881c2ca <SetTargetToHostName+0x114>
    e881c2c2:	03043a03          	ld	s4,48(s0)
    e881c2c6:	0a19                	addi	s4,s4,6
    e881c2c8:	b735                	j	e881c1f4 <SetTargetToHostName+0x3e>
    e881c2ca:	02100793          	li	a5,33
    e881c2ce:	02f70863          	beq	a4,a5,e881c2fe <SetTargetToHostName+0x148>
    e881c2d2:	648d                	lui	s1,0x3
    e881c2d4:	aa848493          	addi	s1,s1,-1368 # 2aa8 <memcmp-0xe87fd558>
    e881c2d8:	94ca                	add	s1,s1,s2
    if (!target) LogInfo("SetTargetToHostName: Don't know how to set the target of rrtype %s", DNSTypeName(rr->resrec.rrtype));
    e881c2da:	000b8797          	auipc	a5,0xb8
    e881c2de:	79a78793          	addi	a5,a5,1946 # e88d4a74 <mDNS_LoggingEnabled>
    e881c2e2:	439c                	lw	a5,0(a5)
    e881c2e4:	4a01                	li	s4,0
    e881c2e6:	df89                	beqz	a5,e881c200 <SetTargetToHostName+0x4a>
    e881c2e8:	979f90ef          	jal	ra,e8815c60 <DNSTypeName>
    e881c2ec:	862a                	mv	a2,a0
    e881c2ee:	0008b597          	auipc	a1,0x8b
    e881c2f2:	ee258593          	addi	a1,a1,-286 # e88a71d0 <end.8789+0x3b28>
    e881c2f6:	450d                	li	a0,3
    e881c2f8:	1b4130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881c2fc:	b711                	j	e881c200 <SetTargetToHostName+0x4a>
    domainname *const target = GetRRDomainNameTarget(&rr->resrec);
    e881c2fe:	03043a03          	ld	s4,48(s0)
    e881c302:	0a29                	addi	s4,s4,10
    e881c304:	bdc5                	j	e881c1f4 <SetTargetToHostName+0x3e>
        LogInfo("SetUnicastTargetToHostName target %##s for resource record %s", target->c, ARDisplayString(m,rr));
    e881c306:	439c                	lw	a5,0(a5)
    e881c308:	c395                	beqz	a5,e881c32c <SetTargetToHostName+0x176>
    e881c30a:	780c                	ld	a1,48(s0)
    e881c30c:	03b90613          	addi	a2,s2,59
    e881c310:	00840513          	addi	a0,s0,8
    e881c314:	0591                	addi	a1,a1,4
    e881c316:	efefa0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881c31a:	86aa                	mv	a3,a0
    e881c31c:	8626                	mv	a2,s1
    e881c31e:	0008b597          	auipc	a1,0x8b
    e881c322:	f2a58593          	addi	a1,a1,-214 # e88a7248 <end.8789+0x3ba0>
    e881c326:	450d                	li	a0,3
    e881c328:	184130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (target && SameDomainName(target, newname))
    e881c32c:	060a0f63          	beqz	s4,e881c3aa <SetTargetToHostName+0x1f4>
    e881c330:	85a6                	mv	a1,s1
    e881c332:	8552                	mv	a0,s4
    e881c334:	d17f60ef          	jal	ra,e881304a <SameDomainName>
    if (target && !SameDomainName(target, newname))
    e881c338:	85a6                	mv	a1,s1
    e881c33a:	8552                	mv	a0,s4
    e881c33c:	d0ff60ef          	jal	ra,e881304a <SameDomainName>
    e881c340:	89aa                	mv	s3,a0
    e881c342:	e525                	bnez	a0,e881c3aa <SetTargetToHostName+0x1f4>
        AssignDomainName(target, newname);
    e881c344:	10048593          	addi	a1,s1,256
    e881c348:	8526                	mv	a0,s1
    e881c34a:	e03f60ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881c34e:	0005061b          	sext.w	a2,a0
    e881c352:	10000793          	li	a5,256
    e881c356:	04c7e763          	bltu	a5,a2,e881c3a4 <SetTargetToHostName+0x1ee>
    e881c35a:	85a6                	mv	a1,s1
    e881c35c:	8552                	mv	a0,s4
    e881c35e:	742130ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        SetNewRData(&rr->resrec, mDNSNULL, 0);      // Update rdlength, rdestimate, rdatahash
    e881c362:	4601                	li	a2,0
    e881c364:	4581                	li	a1,0
    e881c366:	00840513          	addi	a0,s0,8
    e881c36a:	eeef80ef          	jal	ra,e8814a58 <SetNewRData>
        rr->ProbeCount     = DefaultProbeCountForRecordType(rr->resrec.RecordType);
    e881c36e:	00844703          	lbu	a4,8(s0)
    e881c372:	4789                	li	a5,2
    e881c374:	00f71363          	bne	a4,a5,e881c37a <SetTargetToHostName+0x1c4>
    e881c378:	498d                	li	s3,3
        rr->AnnounceCount  = InitialAnnounceCount;
    e881c37a:	4791                	li	a5,4
        rr->ProbeCount     = DefaultProbeCountForRecordType(rr->resrec.RecordType);
    e881c37c:	0b340b23          	sb	s3,182(s0)
        rr->AnnounceCount  = InitialAnnounceCount;
    e881c380:	0af41ba3          	sh	a5,183(s0)
        rr->ProbeRestartCount = 0;
    e881c384:	0a040aa3          	sb	zero,181(s0)
        InitializeLastAPTime(m, rr);
    e881c388:	85a2                	mv	a1,s0
}
    e881c38a:	f891440b          	ldd	s0,s1,(sp),0,4
    e881c38e:	70a2                	ld	ra,40(sp)
    e881c390:	7a02                	ld	s4,32(sp)
        InitializeLastAPTime(m, rr);
    e881c392:	854a                	mv	a0,s2
}
    e881c394:	fb31490b          	ldd	s2,s3,(sp),1,4
    e881c398:	6145                	addi	sp,sp,48
        InitializeLastAPTime(m, rr);
    e881c39a:	bb3ff06f          	j	e881bf4c <InitializeLastAPTime>
        else { if (target) target->c[0] = 0; SetNewRData(&rr->resrec, mDNSNULL, 0); return; }
    e881c39e:	000a0023          	sb	zero,0(s4)
    e881c3a2:	b5e5                	j	e881c28a <SetTargetToHostName+0xd4>
        AssignDomainName(target, newname);
    e881c3a4:	000a0023          	sb	zero,0(s4)
    e881c3a8:	bf6d                	j	e881c362 <SetTargetToHostName+0x1ac>
}
    e881c3aa:	70a2                	ld	ra,40(sp)
    e881c3ac:	f891440b          	ldd	s0,s1,(sp),0,4
    e881c3b0:	7a02                	ld	s4,32(sp)
    e881c3b2:	fb31490b          	ldd	s2,s3,(sp),1,4
    e881c3b6:	6145                	addi	sp,sp,48
    e881c3b8:	8082                	ret

00000000e881c3ba <mDNSCoreResetRecord>:
{
    e881c3ba:	1141                	addi	sp,sp,-16
    e881c3bc:	e022                	sd	s0,0(sp)
    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e881c3be:	6425                	lui	s0,0x9
{
    e881c3c0:	e406                	sd	ra,8(sp)
    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e881c3c2:	942a                	add	s0,s0,a0
    if (m->rec.r.resrec.AnonInfo)
    e881c3c4:	51843503          	ld	a0,1304(s0) # 9518 <memcmp-0xe87f6ae8>
    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e881c3c8:	4e040023          	sb	zero,1248(s0)
    if (m->rec.r.resrec.AnonInfo)
    e881c3cc:	c509                	beqz	a0,e881c3d6 <mDNSCoreResetRecord+0x1c>
        FreeAnonInfo(m->rec.r.resrec.AnonInfo);
    e881c3ce:	bbdfd0ef          	jal	ra,e8819f8a <FreeAnonInfo>
        m->rec.r.resrec.AnonInfo = mDNSNULL;
    e881c3d2:	50043c23          	sd	zero,1304(s0)
}
    e881c3d6:	60a2                	ld	ra,8(sp)
    e881c3d8:	6402                	ld	s0,0(sp)
    e881c3da:	0141                	addi	sp,sp,16
    e881c3dc:	8082                	ret

00000000e881c3de <GenerateUnicastResponse>:
{
    e881c3de:	c3010113          	addi	sp,sp,-976
    e881c3e2:	3b213823          	sd	s2,944(sp)
    e881c3e6:	893e                	mv	s2,a5
    InitializeDNSMessage(&response->h, query->h.id, ResponseFlags);
    e881c3e8:	00086797          	auipc	a5,0x86
    e881c3ec:	39878793          	addi	a5,a5,920 # e88a2780 <ResponseFlags>
{
    e881c3f0:	3c813023          	sd	s0,960(sp)
    e881c3f4:	39513c23          	sd	s5,920(sp)
    e881c3f8:	39713423          	sd	s7,904(sp)
    e881c3fc:	39813023          	sd	s8,896(sp)
    e881c400:	37913c23          	sd	s9,888(sp)
    e881c404:	3c113423          	sd	ra,968(sp)
    e881c408:	3a913c23          	sd	s1,952(sp)
    e881c40c:	3b313423          	sd	s3,936(sp)
    e881c410:	3b413023          	sd	s4,928(sp)
    e881c414:	39613823          	sd	s6,912(sp)
    e881c418:	8c2e                	mv	s8,a1
    e881c41a:	8cb2                	mv	s9,a2
    InitializeDNSMessage(&response->h, query->h.id, ResponseFlags);
    e881c41c:	00055583          	lhu	a1,0(a0)
    e881c420:	0007d603          	lhu	a2,0(a5)
{
    e881c424:	8baa                	mv	s7,a0
    InitializeDNSMessage(&response->h, query->h.id, ResponseFlags);
    e881c426:	853a                	mv	a0,a4
{
    e881c428:	e436                	sd	a3,8(sp)
    e881c42a:	843a                	mv	s0,a4
    mDNSu8          *responseptr     = response->data;
    e881c42c:	00c70a93          	addi	s5,a4,12
    InitializeDNSMessage(&response->h, query->h.id, ResponseFlags);
    e881c430:	a1cf80ef          	jal	ra,e881464c <InitializeDNSMessage>
    if (LegacyQuery)
    e881c434:	66a2                	ld	a3,8(sp)
    e881c436:	c2dd                	beqz	a3,e881c4dc <GenerateUnicastResponse+0xfe>
    const mDNSu8    *const limit     = response->data + sizeof(response->data);
    e881c438:	6989                	lui	s3,0x2
    e881c43a:	2f898993          	addi	s3,s3,760 # 22f8 <memcmp-0xe87fdd08>
    e881c43e:	99a2                	add	s3,s3,s0
    const mDNSu8    *ptr             = query->data;
    e881c440:	00cb8a13          	addi	s4,s7,12
    mDNSu8          *responseptr     = response->data;
    e881c444:	84d6                	mv	s1,s5
        for (i=0; i<query->h.numQuestions; i++)                     // For each question...
    e881c446:	4b01                	li	s6,0
    e881c448:	004bd783          	lhu	a5,4(s7)
    e881c44c:	00fb4e63          	blt	s6,a5,e881c468 <GenerateUnicastResponse+0x8a>
        if (response->h.numQuestions == 0) { LogMsg("GenerateUnicastResponse: ERROR! Why no questions?"); return(mDNSNULL); }
    e881c450:	00445783          	lhu	a5,4(s0)
        maxttl = kStaticCacheTTL;
    e881c454:	4a29                	li	s4,10
        if (response->h.numQuestions == 0) { LogMsg("GenerateUnicastResponse: ERROR! Why no questions?"); return(mDNSNULL); }
    e881c456:	e7d1                	bnez	a5,e881c4e2 <GenerateUnicastResponse+0x104>
    e881c458:	00089597          	auipc	a1,0x89
    e881c45c:	19858593          	addi	a1,a1,408 # e88a55f0 <end.8789+0x1f48>
    e881c460:	4501                	li	a0,0
    e881c462:	04a130ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881c466:	a835                	j	e881c4a2 <GenerateUnicastResponse+0xc4>
            ptr = getQuestion(query, ptr, end, InterfaceID, &q);    // get the question...
    e881c468:	85d2                	mv	a1,s4
    e881c46a:	0838                	addi	a4,sp,24
    e881c46c:	86e6                	mv	a3,s9
    e881c46e:	8662                	mv	a2,s8
    e881c470:	855e                	mv	a0,s7
    e881c472:	bcaf90ef          	jal	ra,e881583c <getQuestion>
    e881c476:	8a2a                	mv	s4,a0
            if (!ptr) return(mDNSNULL);
    e881c478:	c50d                	beqz	a0,e881c4a2 <GenerateUnicastResponse+0xc4>
            for (rr=ResponseRecords; rr; rr=rr->NextResponse)       // and search our list of proposed answers
    e881c47a:	87ca                	mv	a5,s2
    e881c47c:	e399                	bnez	a5,e881c482 <GenerateUnicastResponse+0xa4>
        for (i=0; i<query->h.numQuestions; i++)                     // For each question...
    e881c47e:	2b05                	addiw	s6,s6,1
    e881c480:	b7e1                	j	e881c448 <GenerateUnicastResponse+0x6a>
                if (rr->NR_AnswerTo == ptr)                         // If we're going to generate a record answering this question
    e881c482:	1007b703          	ld	a4,256(a5)
    e881c486:	05471963          	bne	a4,s4,e881c4d8 <GenerateUnicastResponse+0xfa>
                    responseptr = putQuestion(response, responseptr, limit, &q.qname, q.qtype, q.qclass);
    e881c48a:	32e15783          	lhu	a5,814(sp)
    e881c48e:	32c15703          	lhu	a4,812(sp)
    e881c492:	85a6                	mv	a1,s1
    e881c494:	1474                	addi	a3,sp,556
    e881c496:	864e                	mv	a2,s3
    e881c498:	8522                	mv	a0,s0
    e881c49a:	b64f80ef          	jal	ra,e88147fe <putQuestion>
    e881c49e:	84aa                	mv	s1,a0
                    if (!responseptr) { debugf("GenerateUnicastResponse: Ran out of space for questions!"); return(mDNSNULL); }
    e881c4a0:	fd79                	bnez	a0,e881c47e <GenerateUnicastResponse+0xa0>
        if (response->h.numQuestions == 0) { LogMsg("GenerateUnicastResponse: ERROR! Why no questions?"); return(mDNSNULL); }
    e881c4a2:	4481                	li	s1,0
}
    e881c4a4:	3c813083          	ld	ra,968(sp)
    e881c4a8:	3c013403          	ld	s0,960(sp)
    e881c4ac:	8526                	mv	a0,s1
    e881c4ae:	3b013903          	ld	s2,944(sp)
    e881c4b2:	3b813483          	ld	s1,952(sp)
    e881c4b6:	3a813983          	ld	s3,936(sp)
    e881c4ba:	3a013a03          	ld	s4,928(sp)
    e881c4be:	39813a83          	ld	s5,920(sp)
    e881c4c2:	39013b03          	ld	s6,912(sp)
    e881c4c6:	38813b83          	ld	s7,904(sp)
    e881c4ca:	38013c03          	ld	s8,896(sp)
    e881c4ce:	37813c83          	ld	s9,888(sp)
    e881c4d2:	3d010113          	addi	sp,sp,976
    e881c4d6:	8082                	ret
            for (rr=ResponseRecords; rr; rr=rr->NextResponse)       // and search our list of proposed answers
    e881c4d8:	7ffc                	ld	a5,248(a5)
    e881c4da:	b74d                	j	e881c47c <GenerateUnicastResponse+0x9e>
    mDNSu8          *responseptr     = response->data;
    e881c4dc:	84d6                	mv	s1,s5
    mDNSu32 maxttl = 0x70000000;
    e881c4de:	70000a37          	lui	s4,0x70000
            mDNSu8 *p = PutResourceRecordTTL(response, responseptr, &response->h.numAnswers, &rr->resrec,
    e881c4e2:	6b09                	lui	s6,0x2
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e881c4e4:	89ca                	mv	s3,s2
            mDNSu8 *p = PutResourceRecordTTL(response, responseptr, &response->h.numAnswers, &rr->resrec,
    e881c4e6:	00640b93          	addi	s7,s0,6
    e881c4ea:	2ecb0b13          	addi	s6,s6,748 # 22ec <memcmp-0xe87fdd14>
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e881c4ee:	04099f63          	bnez	s3,e881c54c <GenerateUnicastResponse+0x16e>
            mDNSu8 *p = PutResourceRecordTTL(response, responseptr, &response->h.numAdditionals, &rr->resrec,
    e881c4f2:	6989                	lui	s3,0x2
    e881c4f4:	00a40b13          	addi	s6,s0,10
    e881c4f8:	2ec98993          	addi	s3,s3,748 # 22ec <memcmp-0xe87fdd14>
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e881c4fc:	fa0904e3          	beqz	s2,e881c4a4 <GenerateUnicastResponse+0xc6>
        if (rr->NR_AdditionalTo && !rr->NR_AnswerTo)
    e881c500:	10893783          	ld	a5,264(s2)
    e881c504:	c3a9                	beqz	a5,e881c546 <GenerateUnicastResponse+0x168>
    e881c506:	10093783          	ld	a5,256(s2)
    e881c50a:	ef95                	bnez	a5,e881c546 <GenerateUnicastResponse+0x168>
            mDNSu8 *p = PutResourceRecordTTL(response, responseptr, &response->h.numAdditionals, &rr->resrec,
    e881c50c:	01092703          	lw	a4,16(s2)
    e881c510:	00645603          	lhu	a2,6(s0)
    e881c514:	00890693          	addi	a3,s2,8
    e881c518:	00ea37b3          	sltu	a5,s4,a4
    e881c51c:	42fa170b          	mvnez	a4,s4,a5
    e881c520:	2701                	sext.w	a4,a4
    e881c522:	5a000793          	li	a5,1440
    e881c526:	ea01                	bnez	a2,e881c536 <GenerateUnicastResponse+0x158>
    e881c528:	00845603          	lhu	a2,8(s0)
    e881c52c:	e609                	bnez	a2,e881c536 <GenerateUnicastResponse+0x158>
    e881c52e:	00a45603          	lhu	a2,10(s0)
    e881c532:	40c9978b          	mveqz	a5,s3,a2
    e881c536:	85a6                	mv	a1,s1
    e881c538:	97d6                	add	a5,a5,s5
    e881c53a:	865a                	mv	a2,s6
    e881c53c:	8522                	mv	a0,s0
    e881c53e:	902fa0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
            if (p) responseptr = p;
    e881c542:	42a5148b          	mvnez	s1,a0,a0
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e881c546:	0f893903          	ld	s2,248(s2)
    e881c54a:	bf4d                	j	e881c4fc <GenerateUnicastResponse+0x11e>
        if (rr->NR_AnswerTo)
    e881c54c:	1009b783          	ld	a5,256(s3)
    e881c550:	c3b9                	beqz	a5,e881c596 <GenerateUnicastResponse+0x1b8>
            mDNSu8 *p = PutResourceRecordTTL(response, responseptr, &response->h.numAnswers, &rr->resrec,
    e881c552:	0109a703          	lw	a4,16(s3)
    e881c556:	00645603          	lhu	a2,6(s0)
    e881c55a:	00898693          	addi	a3,s3,8
    e881c55e:	00ea37b3          	sltu	a5,s4,a4
    e881c562:	42fa170b          	mvnez	a4,s4,a5
    e881c566:	2701                	sext.w	a4,a4
    e881c568:	5a000793          	li	a5,1440
    e881c56c:	ea01                	bnez	a2,e881c57c <GenerateUnicastResponse+0x19e>
    e881c56e:	00845603          	lhu	a2,8(s0)
    e881c572:	e609                	bnez	a2,e881c57c <GenerateUnicastResponse+0x19e>
    e881c574:	00a45603          	lhu	a2,10(s0)
    e881c578:	40cb178b          	mveqz	a5,s6,a2
    e881c57c:	97d6                	add	a5,a5,s5
    e881c57e:	865e                	mv	a2,s7
    e881c580:	85a6                	mv	a1,s1
    e881c582:	8522                	mv	a0,s0
    e881c584:	8bcfa0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
            if (p) responseptr = p;
    e881c588:	e911                	bnez	a0,e881c59c <GenerateUnicastResponse+0x1be>
            else { debugf("GenerateUnicastResponse: Ran out of space for answers!"); response->h.flags.b[0] |= kDNSFlag0_TC; }
    e881c58a:	00244783          	lbu	a5,2(s0)
    e881c58e:	0027e793          	ori	a5,a5,2
    e881c592:	00f40123          	sb	a5,2(s0)
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e881c596:	0f89b983          	ld	s3,248(s3)
    e881c59a:	bf91                	j	e881c4ee <GenerateUnicastResponse+0x110>
    e881c59c:	84aa                	mv	s1,a0
    e881c59e:	bfe5                	j	e881c596 <GenerateUnicastResponse+0x1b8>

00000000e881c5a0 <CompareRData>:
{
    e881c5a0:	de010113          	addi	sp,sp,-544
    e881c5a4:	20113c23          	sd	ra,536(sp)
    e881c5a8:	20813823          	sd	s0,528(sp)
    e881c5ac:	20913423          	sd	s1,520(sp)
    if (!our) { LogMsg("CompareRData ERROR: our is NULL"); return(+1); }
    e881c5b0:	e10d                	bnez	a0,e881c5d2 <CompareRData+0x32>
    e881c5b2:	00089597          	auipc	a1,0x89
    e881c5b6:	b8e58593          	addi	a1,a1,-1138 # e88a5140 <end.8789+0x1a98>
    if (!pkt) { LogMsg("CompareRData ERROR: pkt is NULL"); return(+1); }
    e881c5ba:	6f3120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881c5be:	4505                	li	a0,1
}
    e881c5c0:	21813083          	ld	ra,536(sp)
    e881c5c4:	21013403          	ld	s0,528(sp)
    e881c5c8:	20813483          	ld	s1,520(sp)
    e881c5cc:	22010113          	addi	sp,sp,544
    e881c5d0:	8082                	ret
    e881c5d2:	842e                	mv	s0,a1
    if (!pkt) { LogMsg("CompareRData ERROR: pkt is NULL"); return(+1); }
    e881c5d4:	e599                	bnez	a1,e881c5e2 <CompareRData+0x42>
    e881c5d6:	00089597          	auipc	a1,0x89
    e881c5da:	b8a58593          	addi	a1,a1,-1142 # e88a5160 <end.8789+0x1ab8>
    e881c5de:	4501                	li	a0,0
    e881c5e0:	bfe9                	j	e881c5ba <CompareRData+0x1a>
    ourend = putRData(mDNSNULL, ourdata, ourdata + sizeof(ourdata), &our->resrec);
    e881c5e2:	00850693          	addi	a3,a0,8
    e881c5e6:	0210                	addi	a2,sp,256
    e881c5e8:	858a                	mv	a1,sp
    e881c5ea:	4501                	li	a0,0
    e881c5ec:	aa1f90ef          	jal	ra,e881608c <putRData>
    e881c5f0:	84aa                	mv	s1,a0
    pktend = putRData(mDNSNULL, pktdata, pktdata + sizeof(pktdata), &pkt->resrec);
    e881c5f2:	00840693          	addi	a3,s0,8
    e881c5f6:	0410                	addi	a2,sp,512
    e881c5f8:	020c                	addi	a1,sp,256
    e881c5fa:	4501                	li	a0,0
    e881c5fc:	a91f90ef          	jal	ra,e881608c <putRData>
    mDNSu8 pktdata[256], *pktptr = pktdata, *pktend;
    e881c600:	021c                	addi	a5,sp,256
    mDNSu8 ourdata[256], *ourptr = ourdata, *ourend;
    e881c602:	870a                	mv	a4,sp
    while (ourptr < ourend && pktptr < pktend && *ourptr == *pktptr) { ourptr++; pktptr++; }
    e881c604:	02977c63          	bgeu	a4,s1,e881c63c <CompareRData+0x9c>
    e881c608:	faa7fbe3          	bgeu	a5,a0,e881c5be <CompareRData+0x1e>
    e881c60c:	00074603          	lbu	a2,0(a4)
    e881c610:	0007c683          	lbu	a3,0(a5)
    e881c614:	02d60163          	beq	a2,a3,e881c636 <CompareRData+0x96>
    if (*pktptr > *ourptr) return(-1);                              // Our data is numerically lower; We lost
    e881c618:	557d                	li	a0,-1
    e881c61a:	fad663e3          	bltu	a2,a3,e881c5c0 <CompareRData+0x20>
    if (pktptr >= pktend) return(+1);                               // Packet data ran out first; We won
    e881c61e:	4505                	li	a0,1
    if (*pktptr < *ourptr) return(+1);                              // Packet data is numerically lower; We won
    e881c620:	fac6e0e3          	bltu	a3,a2,e881c5c0 <CompareRData+0x20>
    LogMsg("CompareRData ERROR: Invalid state");
    e881c624:	4501                	li	a0,0
    e881c626:	00089597          	auipc	a1,0x89
    e881c62a:	b5a58593          	addi	a1,a1,-1190 # e88a5180 <end.8789+0x1ad8>
    e881c62e:	67f120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return(-1);
    e881c632:	557d                	li	a0,-1
    e881c634:	b771                	j	e881c5c0 <CompareRData+0x20>
    while (ourptr < ourend && pktptr < pktend && *ourptr == *pktptr) { ourptr++; pktptr++; }
    e881c636:	0705                	addi	a4,a4,1
    e881c638:	0785                	addi	a5,a5,1
    e881c63a:	b7e9                	j	e881c604 <CompareRData+0x64>
    if (ourptr >= ourend && pktptr >= pktend) return(0);            // If data identical, not a conflict
    e881c63c:	00a7b533          	sltu	a0,a5,a0
    e881c640:	40a00533          	neg	a0,a0
    e881c644:	bfb5                	j	e881c5c0 <CompareRData+0x20>

00000000e881c646 <LLQNATCallback>:
{
    e881c646:	1101                	addi	sp,sp,-32
    e881c648:	e422                	sd	s0,8(sp)
    e881c64a:	842e                	mv	s0,a1
    mDNS_Lock(m);
    e881c64c:	0008b597          	auipc	a1,0x8b
    e881c650:	73c58593          	addi	a1,a1,1852 # e88a7d88 <__func__.12119>
{
    e881c654:	e826                	sd	s1,16(sp)
    e881c656:	ec06                	sd	ra,24(sp)
    e881c658:	84aa                	mv	s1,a0
    mDNS_Lock(m);
    e881c65a:	ba8f90ef          	jal	ra,e8815a02 <mDNS_Lock_>
    LogInfo("LLQNATCallback external address:port %.4a:%u, NAT result %d", &n->ExternalAddress, mDNSVal16(n->ExternalPort), n->Result);
    e881c65e:	000b8797          	auipc	a5,0xb8
    e881c662:	41678793          	addi	a5,a5,1046 # e88d4a74 <mDNS_LoggingEnabled>
    e881c666:	439c                	lw	a5,0(a5)
    e881c668:	c395                	beqz	a5,e881c68c <LLQNATCallback+0x46>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e881c66a:	03044783          	lbu	a5,48(s0)
    e881c66e:	03144683          	lbu	a3,49(s0)
    e881c672:	5c18                	lw	a4,56(s0)
    e881c674:	0087979b          	slliw	a5,a5,0x8
    e881c678:	8edd                	or	a3,a3,a5
    e881c67a:	02840613          	addi	a2,s0,40
    e881c67e:	00089597          	auipc	a1,0x89
    e881c682:	68a58593          	addi	a1,a1,1674 # e88a5d08 <end.8789+0x2660>
    e881c686:	450d                	li	a0,3
    e881c688:	625120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    n->clientContext = mDNSNULL; // we received at least one callback since starting this NAT-T
    e881c68c:	04043823          	sd	zero,80(s0)
    for (q = m->Questions; q; q=q->next)
    e881c690:	2b84b403          	ld	s0,696(s1)
    e881c694:	ec01                	bnez	s0,e881c6ac <LLQNATCallback+0x66>
}
    e881c696:	6422                	ld	s0,8(sp)
    e881c698:	60e2                	ld	ra,24(sp)
    mDNS_Unlock(m);
    e881c69a:	8526                	mv	a0,s1
}
    e881c69c:	64c2                	ld	s1,16(sp)
    mDNS_Unlock(m);
    e881c69e:	0008b597          	auipc	a1,0x8b
    e881c6a2:	6ea58593          	addi	a1,a1,1770 # e88a7d88 <__func__.12119>
}
    e881c6a6:	6105                	addi	sp,sp,32
    mDNS_Unlock(m);
    e881c6a8:	c24f906f          	j	e8815acc <mDNS_Unlock_>
        if (ActiveQuestion(q) && !mDNSOpaque16IsZero(q->TargetQID) && q->LongLived)
    e881c6ac:	485c                	lw	a5,20(s0)
    e881c6ae:	00f05e63          	blez	a5,e881c6ca <LLQNATCallback+0x84>
    e881c6b2:	683c                	ld	a5,80(s0)
    e881c6b4:	eb99                	bnez	a5,e881c6ca <LLQNATCallback+0x84>
    e881c6b6:	21245783          	lhu	a5,530(s0)
    e881c6ba:	cb81                	beqz	a5,e881c6ca <LLQNATCallback+0x84>
    e881c6bc:	31844783          	lbu	a5,792(s0)
    e881c6c0:	c789                	beqz	a5,e881c6ca <LLQNATCallback+0x84>
            startLLQHandshake(m, q);    // If ExternalPort is zero, will do StartLLQPolling instead
    e881c6c2:	85a2                	mv	a1,s0
    e881c6c4:	8526                	mv	a0,s1
    e881c6c6:	107180ef          	jal	ra,e8834fcc <startLLQHandshake>
    for (q = m->Questions; q; q=q->next)
    e881c6ca:	6000                	ld	s0,0(s0)
    e881c6cc:	b7e1                	j	e881c694 <LLQNATCallback+0x4e>

00000000e881c6ce <DynDNSHostNameCallback>:

mDNSlocal void DynDNSHostNameCallback(mDNS *const m, AuthRecord *const rr, mStatus result)
{
    (void)m;    // unused
    debugf("NameStatusCallback: result %d for registration of name %##s", result, rr->resrec.name->c);
    mDNSPlatformDynDNSHostNameStatusChanged(rr->resrec.name, result);
    e881c6ce:	7588                	ld	a0,40(a1)
    e881c6d0:	85b2                	mv	a1,a2
    e881c6d2:	2541306f          	j	e882f926 <mDNSPlatformDynDNSHostNameStatusChanged>

00000000e881c6d6 <SetDynDNSHostNameIfChanged>:
            mr->flags &= ~McastResolver_FlagDelete;
    }
}

mDNSlocal void SetDynDNSHostNameIfChanged(mDNS *const m, domainname *const fqdn)
{
    e881c6d6:	7179                	addi	sp,sp,-48
    e881c6d8:	f04e                	sd	s3,32(sp)
    // Did our FQDN change?
    if (!SameDomainName(fqdn, &m->FQDN))
    e881c6da:	6991                	lui	s3,0x4
{
    e881c6dc:	e422                	sd	s0,8(sp)
    if (!SameDomainName(fqdn, &m->FQDN))
    e881c6de:	a0898413          	addi	s0,s3,-1528 # 3a08 <memcmp-0xe87fc5f8>
{
    e881c6e2:	ec4a                	sd	s2,24(sp)
    if (!SameDomainName(fqdn, &m->FQDN))
    e881c6e4:	942a                	add	s0,s0,a0
{
    e881c6e6:	892e                	mv	s2,a1
    e881c6e8:	e826                	sd	s1,16(sp)
    if (!SameDomainName(fqdn, &m->FQDN))
    e881c6ea:	85a2                	mv	a1,s0
{
    e881c6ec:	84aa                	mv	s1,a0
    if (!SameDomainName(fqdn, &m->FQDN))
    e881c6ee:	854a                	mv	a0,s2
{
    e881c6f0:	f406                	sd	ra,40(sp)
    if (!SameDomainName(fqdn, &m->FQDN))
    e881c6f2:	959f60ef          	jal	ra,e881304a <SameDomainName>
    e881c6f6:	ed0d                	bnez	a0,e881c730 <SetDynDNSHostNameIfChanged+0x5a>
    {
        if (m->FQDN.c[0]) mDNS_RemoveDynDNSHostName(m, &m->FQDN);
    e881c6f8:	99a6                	add	s3,s3,s1
    e881c6fa:	a089c783          	lbu	a5,-1528(s3)
    e881c6fe:	c789                	beqz	a5,e881c708 <SetDynDNSHostNameIfChanged+0x32>
    e881c700:	85a2                	mv	a1,s0
    e881c702:	8526                	mv	a0,s1
    e881c704:	73f180ef          	jal	ra,e8835642 <mDNS_RemoveDynDNSHostName>

        AssignDomainName(&m->FQDN, fqdn);
    e881c708:	10090593          	addi	a1,s2,256
    e881c70c:	854a                	mv	a0,s2
    e881c70e:	a3ff60ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881c712:	0005061b          	sext.w	a2,a0
    e881c716:	10000793          	li	a5,256
    e881c71a:	02c7e263          	bltu	a5,a2,e881c73e <SetDynDNSHostNameIfChanged+0x68>
    e881c71e:	85ca                	mv	a1,s2
    e881c720:	8522                	mv	a0,s0
    e881c722:	37e130ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>

        if (m->FQDN.c[0])
    e881c726:	6791                	lui	a5,0x4
    e881c728:	97a6                	add	a5,a5,s1
    e881c72a:	a087c783          	lbu	a5,-1528(a5) # 3a08 <memcmp-0xe87fc5f8>
    e881c72e:	ef89                	bnez	a5,e881c748 <SetDynDNSHostNameIfChanged+0x72>
        {
            mDNSPlatformDynDNSHostNameStatusChanged(&m->FQDN, 1);
            mDNS_AddDynDNSHostName(m, &m->FQDN, DynDNSHostNameCallback, mDNSNULL);
        }
    }
}
    e881c730:	70a2                	ld	ra,40(sp)
    e881c732:	6422                	ld	s0,8(sp)
    e881c734:	64c2                	ld	s1,16(sp)
    e881c736:	6962                	ld	s2,24(sp)
    e881c738:	7982                	ld	s3,32(sp)
    e881c73a:	6145                	addi	sp,sp,48
    e881c73c:	8082                	ret
        AssignDomainName(&m->FQDN, fqdn);
    e881c73e:	6791                	lui	a5,0x4
    e881c740:	94be                	add	s1,s1,a5
    e881c742:	a0048423          	sb	zero,-1528(s1)
        if (m->FQDN.c[0])
    e881c746:	b7ed                	j	e881c730 <SetDynDNSHostNameIfChanged+0x5a>
            mDNSPlatformDynDNSHostNameStatusChanged(&m->FQDN, 1);
    e881c748:	8522                	mv	a0,s0
    e881c74a:	4585                	li	a1,1
    e881c74c:	1da130ef          	jal	ra,e882f926 <mDNSPlatformDynDNSHostNameStatusChanged>
}
    e881c750:	6962                	ld	s2,24(sp)
            mDNS_AddDynDNSHostName(m, &m->FQDN, DynDNSHostNameCallback, mDNSNULL);
    e881c752:	85a2                	mv	a1,s0
}
    e881c754:	6422                	ld	s0,8(sp)
    e881c756:	70a2                	ld	ra,40(sp)
    e881c758:	7982                	ld	s3,32(sp)
            mDNS_AddDynDNSHostName(m, &m->FQDN, DynDNSHostNameCallback, mDNSNULL);
    e881c75a:	8526                	mv	a0,s1
}
    e881c75c:	64c2                	ld	s1,16(sp)
            mDNS_AddDynDNSHostName(m, &m->FQDN, DynDNSHostNameCallback, mDNSNULL);
    e881c75e:	4681                	li	a3,0
    e881c760:	00000617          	auipc	a2,0x0
    e881c764:	f6e60613          	addi	a2,a2,-146 # e881c6ce <DynDNSHostNameCallback>
}
    e881c768:	6145                	addi	sp,sp,48
            mDNS_AddDynDNSHostName(m, &m->FQDN, DynDNSHostNameCallback, mDNSNULL);
    e881c76a:	5d31806f          	j	e883553c <mDNS_AddDynDNSHostName>

00000000e881c76e <FirstInterfaceForID.isra.0>:
    while (intf && intf->InterfaceID != InterfaceID) intf = intf->next;
    e881c76e:	6709                	lui	a4,0x2
    e881c770:	c519                	beqz	a0,e881c77e <FirstInterfaceForID.isra.0+0x10>
    e881c772:	00e507b3          	add	a5,a0,a4
    e881c776:	9f07b783          	ld	a5,-1552(a5) # 39f0 <memcmp-0xe87fc610>
    e881c77a:	00b79363          	bne	a5,a1,e881c780 <FirstInterfaceForID.isra.0+0x12>
}
    e881c77e:	8082                	ret
    while (intf && intf->InterfaceID != InterfaceID) intf = intf->next;
    e881c780:	6108                	ld	a0,0(a0)
    e881c782:	b7fd                	j	e881c770 <FirstInterfaceForID.isra.0+0x2>

00000000e881c784 <SendARP>:
{
    e881c784:	715d                	addi	sp,sp,-80
    e881c786:	e0a2                	sd	s0,64(sp)
    e881c788:	fc26                	sd	s1,56(sp)
    e881c78a:	f84a                	sd	s2,48(sp)
    e881c78c:	f44e                	sd	s3,40(sp)
    e881c78e:	e486                	sd	ra,72(sp)
    e881c790:	f052                	sd	s4,32(sp)
    e881c792:	8932                	mv	s2,a2
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c794:	02063a03          	ld	s4,32(a2)
    mDNSu8 *ptr = m->omsg.data;
    e881c798:	649d                	lui	s1,0x7
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c79a:	660d                	lui	a2,0x3
    mDNSu8 *ptr = m->omsg.data;
    e881c79c:	1ec48493          	addi	s1,s1,492 # 71ec <memcmp-0xe87f8e14>
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c7a0:	962a                	add	a2,a2,a0
{
    e881c7a2:	842a                	mv	s0,a0
    mDNSu8 *ptr = m->omsg.data;
    e881c7a4:	94aa                	add	s1,s1,a0
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c7a6:	1e063503          	ld	a0,480(a2) # 31e0 <memcmp-0xe87fce20>
{
    e881c7aa:	89ae                	mv	s3,a1
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c7ac:	85d2                	mv	a1,s4
{
    e881c7ae:	ec36                	sd	a3,24(sp)
    e881c7b0:	e83a                	sd	a4,16(sp)
    e881c7b2:	e43e                	sd	a5,8(sp)
    e881c7b4:	e042                	sd	a6,0(sp)
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c7b6:	fb9ff0ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
    e881c7ba:	c17d                	beqz	a0,e881c8a0 <SendARP+0x11c>
    e881c7bc:	f8f1480b          	ldd	a6,a5,(sp),0,4
    e881c7c0:	fad1470b          	ldd	a4,a3,(sp),1,4
    e881c7c4:	4581                	li	a1,0
    for (i=0; i<6; i++) *ptr++ = dst->b[i];
    e881c7c6:	661d                	lui	a2,0x7
    e881c7c8:	8326                	mv	t1,s1
    e881c7ca:	4899                	li	a7,6
    e881c7cc:	80b84e0b          	lrbu	t3,a6,a1,0
    e881c7d0:	00b35e0b          	srb	t3,t1,a1,0
    e881c7d4:	0585                	addi	a1,a1,1
    e881c7d6:	ff159be3          	bne	a1,a7,e881c7cc <SendARP+0x48>
    e881c7da:	1f260593          	addi	a1,a2,498 # 71f2 <memcmp-0xe87f8e0e>
    for (i=0; i<6; i++) *ptr++ = intf->MAC.b[0];
    e881c7de:	6809                	lui	a6,0x2
    e881c7e0:	1f860613          	addi	a2,a2,504
    e881c7e4:	95a2                	add	a1,a1,s0
    e881c7e6:	9622                	add	a2,a2,s0
    e881c7e8:	982a                	add	a6,a6,a0
    e881c7ea:	a2084883          	lbu	a7,-1504(a6) # 1a20 <memcmp-0xe87fe5e0>
    e881c7ee:	1815d88b          	sbia	a7,(a1),1,0
    e881c7f2:	fec59ce3          	bne	a1,a2,e881c7ea <SendARP+0x66>
    *ptr++ = 0x08; *ptr++ = 0x06;
    e881c7f6:	0008a817          	auipc	a6,0x8a
    e881c7fa:	cca80813          	addi	a6,a6,-822 # e88a64c0 <end.8789+0x2e18>
    e881c7fe:	00083803          	ld	a6,0(a6)
    e881c802:	661d                	lui	a2,0x7
    e881c804:	00c405b3          	add	a1,s0,a2
    e881c808:	1f05bc23          	sd	a6,504(a1)
    for (i=0; i<6; i++) *ptr++ = intf->MAC.b[i];
    e881c80c:	6809                	lui	a6,0x2
    e881c80e:	a2080813          	addi	a6,a6,-1504 # 1a20 <memcmp-0xe87fe5e0>
    e881c812:	20260613          	addi	a2,a2,514 # 7202 <memcmp-0xe87f8dfe>
    *ptr++ = 0x00; *ptr++ = op;     // opcode; Request = 1, Response = 2
    e881c816:	20058023          	sb	zero,512(a1)
    e881c81a:	213580a3          	sb	s3,513(a1)
    for (i=0; i<6; i++) *ptr++ = intf->MAC.b[i];
    e881c81e:	9542                	add	a0,a0,a6
    *ptr++ = 0x00; *ptr++ = op;     // opcode; Request = 1, Response = 2
    e881c820:	4581                	li	a1,0
    for (i=0; i<6; i++) *ptr++ = intf->MAC.b[i];
    e881c822:	9622                	add	a2,a2,s0
    e881c824:	4819                	li	a6,6
    e881c826:	80b5488b          	lrbu	a7,a0,a1,0
    e881c82a:	00b6588b          	srb	a7,a2,a1,0
    e881c82e:	0585                	addi	a1,a1,1
    e881c830:	ff059be3          	bne	a1,a6,e881c826 <SendARP+0xa2>
    for (i=0; i<4; i++) *ptr++ = spa->b[i];
    e881c834:	659d                	lui	a1,0x7
    e881c836:	20858593          	addi	a1,a1,520 # 7208 <memcmp-0xe87f8df8>
    e881c83a:	4601                	li	a2,0
    e881c83c:	95a2                	add	a1,a1,s0
    e881c83e:	4511                	li	a0,4
    e881c840:	80c6c80b          	lrbu	a6,a3,a2,0
    e881c844:	00c5d80b          	srb	a6,a1,a2,0
    e881c848:	0605                	addi	a2,a2,1
    e881c84a:	fea61be3          	bne	a2,a0,e881c840 <SendARP+0xbc>
    for (i=0; i<6; i++) *ptr++ = tha->b[i];
    e881c84e:	661d                	lui	a2,0x7
    e881c850:	20c60613          	addi	a2,a2,524 # 720c <memcmp-0xe87f8df4>
    e881c854:	4681                	li	a3,0
    e881c856:	9622                	add	a2,a2,s0
    e881c858:	4599                	li	a1,6
    e881c85a:	80d7450b          	lrbu	a0,a4,a3,0
    e881c85e:	00d6550b          	srb	a0,a2,a3,0
    e881c862:	0685                	addi	a3,a3,1
    e881c864:	feb69be3          	bne	a3,a1,e881c85a <SendARP+0xd6>
    for (i=0; i<4; i++) *ptr++ = tpa->b[i];
    e881c868:	659d                	lui	a1,0x7
    e881c86a:	21258693          	addi	a3,a1,530 # 7212 <memcmp-0xe87f8dee>
    e881c86e:	4701                	li	a4,0
    e881c870:	96a2                	add	a3,a3,s0
    e881c872:	4611                	li	a2,4
    e881c874:	80e7c50b          	lrbu	a0,a5,a4,0
    e881c878:	00e6d50b          	srb	a0,a3,a4,0
    e881c87c:	0705                	addi	a4,a4,1
    e881c87e:	fec71be3          	bne	a4,a2,e881c874 <SendARP+0xf0>
    mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID);
    e881c882:	21658593          	addi	a1,a1,534
    e881c886:	95a2                	add	a1,a1,s0
}
    e881c888:	6406                	ld	s0,64(sp)
    mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID);
    e881c88a:	02093603          	ld	a2,32(s2)
}
    e881c88e:	60a6                	ld	ra,72(sp)
    e881c890:	7942                	ld	s2,48(sp)
    e881c892:	79a2                	ld	s3,40(sp)
    e881c894:	7a02                	ld	s4,32(sp)
    mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID);
    e881c896:	8526                	mv	a0,s1
}
    e881c898:	74e2                	ld	s1,56(sp)
    e881c89a:	6161                	addi	sp,sp,80
    mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID);
    e881c89c:	07c1306f          	j	e882f918 <mDNSPlatformSendRawPacket>
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
    e881c8a0:	03093583          	ld	a1,48(s2)
    e881c8a4:	03b40613          	addi	a2,s0,59
    e881c8a8:	00890513          	addi	a0,s2,8
    e881c8ac:	0591                	addi	a1,a1,4
    e881c8ae:	966fa0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
}
    e881c8b2:	6406                	ld	s0,64(sp)
    e881c8b4:	60a6                	ld	ra,72(sp)
    e881c8b6:	74e2                	ld	s1,56(sp)
    e881c8b8:	7942                	ld	s2,48(sp)
    e881c8ba:	79a2                	ld	s3,40(sp)
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
    e881c8bc:	8652                	mv	a2,s4
}
    e881c8be:	7a02                	ld	s4,32(sp)
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
    e881c8c0:	86aa                	mv	a3,a0
    e881c8c2:	0008a597          	auipc	a1,0x8a
    e881c8c6:	c0658593          	addi	a1,a1,-1018 # e88a64c8 <end.8789+0x2e20>
    e881c8ca:	4501                	li	a0,0
}
    e881c8cc:	6161                	addi	sp,sp,80
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
    e881c8ce:	3df1206f          	j	e882f4ac <LogMsgWithLevel>

00000000e881c8d2 <SendNDP>:
{
    e881c8d2:	7175                	addi	sp,sp,-144
    e881c8d4:	f4ce                	sd	s3,104(sp)
    e881c8d6:	89ba                	mv	s3,a4
    const mDNSv6Addr mc = { { 0xFF,0x02,0x00,0x00, 0,0,0,0, 0,0,0,1, 0xFF,tpa->b[0xD],tpa->b[0xE],tpa->b[0xF] } };
    e881c8d8:	2ff00713          	li	a4,767
    e881c8dc:	e0ba                	sd	a4,64(sp)
    e881c8de:	01000737          	lui	a4,0x1000
    e881c8e2:	c4ba                	sw	a4,72(sp)
    e881c8e4:	577d                	li	a4,-1
{
    e881c8e6:	e122                	sd	s0,128(sp)
    e881c8e8:	fca6                	sd	s1,120(sp)
    e881c8ea:	f8ca                	sd	s2,112(sp)
    e881c8ec:	f0d2                	sd	s4,96(sp)
    e881c8ee:	ecd6                	sd	s5,88(sp)
    e881c8f0:	e506                	sd	ra,136(sp)
    e881c8f2:	e8da                	sd	s6,80(sp)
    const mDNSv6Addr mc = { { 0xFF,0x02,0x00,0x00, 0,0,0,0, 0,0,0,1, 0xFF,tpa->b[0xD],tpa->b[0xE],tpa->b[0xF] } };
    e881c8f4:	04e10623          	sb	a4,76(sp)
    e881c8f8:	00d84703          	lbu	a4,13(a6)
    const mDNSv6Addr *const v6dst = (op == NDP_Sol) ? &mc : tpa;
    e881c8fc:	04010a93          	addi	s5,sp,64
    mDNSu8 *ptr = m->omsg.data;
    e881c900:	691d                	lui	s2,0x7
    const mDNSv6Addr mc = { { 0xFF,0x02,0x00,0x00, 0,0,0,0, 0,0,0,1, 0xFF,tpa->b[0xD],tpa->b[0xE],tpa->b[0xF] } };
    e881c902:	04e106a3          	sb	a4,77(sp)
    e881c906:	00e85703          	lhu	a4,14(a6)
    mDNSu8 *ptr = m->omsg.data;
    e881c90a:	1ec90913          	addi	s2,s2,492 # 71ec <memcmp-0xe87f8e14>
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c90e:	0206bb03          	ld	s6,32(a3)
    const mDNSv6Addr mc = { { 0xFF,0x02,0x00,0x00, 0,0,0,0, 0,0,0,1, 0xFF,tpa->b[0xD],tpa->b[0xE],tpa->b[0xF] } };
    e881c912:	04e11723          	sh	a4,78(sp)
    const mDNSv6Addr *const v6dst = (op == NDP_Sol) ? &mc : tpa;
    e881c916:	f7958713          	addi	a4,a1,-135
    e881c91a:	00173713          	seqz	a4,a4
    e881c91e:	40e81a8b          	mveqz	s5,a6,a4
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c922:	670d                	lui	a4,0x3
    e881c924:	972a                	add	a4,a4,a0
{
    e881c926:	842a                	mv	s0,a0
    mDNSu8 *ptr = m->omsg.data;
    e881c928:	992a                	add	s2,s2,a0
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c92a:	1e073503          	ld	a0,480(a4) # 31e0 <memcmp-0xe87fce20>
{
    e881c92e:	84ae                	mv	s1,a1
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c930:	85da                	mv	a1,s6
{
    e881c932:	ec32                	sd	a2,24(sp)
    e881c934:	8a36                	mv	s4,a3
    e881c936:	e83e                	sd	a5,16(sp)
    e881c938:	e446                	sd	a7,8(sp)
    const mDNSv6Addr *const v6dst = (op == NDP_Sol) ? &mc : tpa;
    e881c93a:	e042                	sd	a6,0(sp)
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e881c93c:	e33ff0ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    if (!intf) { LogMsg("SendNDP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
    e881c940:	10050d63          	beqz	a0,e881ca5a <SendNDP+0x188>
    e881c944:	f911480b          	ldd	a6,a7,(sp),0,4
    e881c948:	fac1478b          	ldd	a5,a2,(sp),1,4
    e881c94c:	4701                	li	a4,0
    for (i=0; i<6; i++) *ptr++ = dst->b[i];
    e881c94e:	86ca                	mv	a3,s2
    e881c950:	4599                	li	a1,6
    e881c952:	80e8c30b          	lrbu	t1,a7,a4,0
    e881c956:	00e6d30b          	srb	t1,a3,a4,0
    e881c95a:	0705                	addi	a4,a4,1
    e881c95c:	feb71be3          	bne	a4,a1,e881c952 <SendNDP+0x80>
    for (i=0; i<6; i++) *ptr++ = (tha ? *tha : intf->MAC).b[i];
    e881c960:	671d                	lui	a4,0x7
    e881c962:	6589                	lui	a1,0x2
    e881c964:	1f270893          	addi	a7,a4,498 # 71f2 <memcmp-0xe87f8e0e>
    e881c968:	4681                	li	a3,0
    e881c96a:	95aa                	add	a1,a1,a0
    e881c96c:	98a2                	add	a7,a7,s0
    e881c96e:	02810e93          	addi	t4,sp,40
    e881c972:	4319                	li	t1,6
    e881c974:	10078f63          	beqz	a5,e881ca92 <SendNDP+0x1c0>
    e881c978:	0007ae03          	lw	t3,0(a5)
    e881c97c:	d472                	sw	t3,40(sp)
    e881c97e:	0047de03          	lhu	t3,4(a5)
    e881c982:	03c11623          	sh	t3,44(sp)
    e881c986:	81d6ce0b          	lrbu	t3,a3,t4,0
    e881c98a:	00d8de0b          	srb	t3,a7,a3,0
    e881c98e:	0685                	addi	a3,a3,1
    e881c990:	fe6692e3          	bne	a3,t1,e881c974 <SendNDP+0xa2>
    *ptr++ = 0x86; *ptr++ = 0xDD;
    e881c994:	0008a697          	auipc	a3,0x8a
    e881c998:	bb468693          	addi	a3,a3,-1100 # e88a6548 <end.8789+0x2ea0>
    e881c99c:	6294                	ld	a3,0(a3)
    e881c99e:	9722                	add	a4,a4,s0
    for (i=0; i<16; i++) *ptr++ = spa->b[i];
    e881c9a0:	45c1                	li	a1,16
    *ptr++ = 0x86; *ptr++ = 0xDD;
    e881c9a2:	1ed73c23          	sd	a3,504(a4)
    *ptr++ = 0x3A;                                                  // Protocol == ICMPv6
    e881c9a6:	f3a00693          	li	a3,-198
    e881c9aa:	20d71023          	sh	a3,512(a4)
    for (i=0; i<16; i++) *ptr++ = spa->b[i];
    e881c9ae:	669d                	lui	a3,0x7
    e881c9b0:	20268693          	addi	a3,a3,514 # 7202 <memcmp-0xe87f8dfe>
    *ptr++ = 0x3A;                                                  // Protocol == ICMPv6
    e881c9b4:	4701                	li	a4,0
    for (i=0; i<16; i++) *ptr++ = spa->b[i];
    e881c9b6:	96a2                	add	a3,a3,s0
    e881c9b8:	80e9c88b          	lrbu	a7,s3,a4,0
    e881c9bc:	00e6d88b          	srb	a7,a3,a4,0
    e881c9c0:	0705                	addi	a4,a4,1
    e881c9c2:	feb71be3          	bne	a4,a1,e881c9b8 <SendNDP+0xe6>
    for (i=0; i<16; i++) *ptr++ = v6dst->b[i];
    e881c9c6:	671d                	lui	a4,0x7
    e881c9c8:	21270593          	addi	a1,a4,530 # 7212 <memcmp-0xe87f8dee>
    e881c9cc:	4681                	li	a3,0
    e881c9ce:	95a2                	add	a1,a1,s0
    e881c9d0:	48c1                	li	a7,16
    e881c9d2:	80dac30b          	lrbu	t1,s5,a3,0
    e881c9d6:	00d5d30b          	srb	t1,a1,a3,0
    e881c9da:	0685                	addi	a3,a3,1
    e881c9dc:	ff169be3          	bne	a3,a7,e881c9d2 <SendNDP+0x100>
    *ptr++ = op;                    // 0x87 == Neighbor Solicitation, 0x88 == Neighbor Advertisement
    e881c9e0:	9722                	add	a4,a4,s0
    e881c9e2:	22970123          	sb	s1,546(a4)
    *ptr++ = 0x00;                  // Code
    e881c9e6:	220711a3          	sh	zero,547(a4)
    *ptr++ = 0x00; *ptr++ = 0x00;   // Checksum placeholder (0x38, 0x39)
    e881c9ea:	220702a3          	sb	zero,549(a4)
    *ptr++ = flags;
    e881c9ee:	22c70323          	sb	a2,550(a4)
    *ptr++ = 0x00; *ptr++ = 0x00; *ptr++ = 0x00;
    e881c9f2:	220713a3          	sh	zero,551(a4)
    e881c9f6:	220704a3          	sb	zero,553(a4)
    if (op == NDP_Sol)  // Neighbor Solicitation. The NDP "target" is the address we seek.
    e881c9fa:	08700693          	li	a3,135
    e881c9fe:	4701                	li	a4,0
    e881ca00:	08d48f63          	beq	s1,a3,e881ca9e <SendNDP+0x1cc>
        for (i=0; i<16; i++) *ptr++ = spa->b[i];
    e881ca04:	669d                	lui	a3,0x7
    e881ca06:	22a68613          	addi	a2,a3,554 # 722a <memcmp-0xe87f8dd6>
    e881ca0a:	9622                	add	a2,a2,s0
    e881ca0c:	45c1                	li	a1,16
    e881ca0e:	80e9c80b          	lrbu	a6,s3,a4,0
    e881ca12:	00e6580b          	srb	a6,a2,a4,0
    e881ca16:	0705                	addi	a4,a4,1
    e881ca18:	feb71be3          	bne	a4,a1,e881ca0e <SendNDP+0x13c>
        *ptr++ = NDP_TgtLL; // Option Type 2 == Target Link-layer Address
    e881ca1c:	96a2                	add	a3,a3,s0
    e881ca1e:	10200713          	li	a4,258
    e881ca22:	22e69d23          	sh	a4,570(a3)
        for (i=0; i<6; i++) *ptr++ = (tha ? *tha : intf->MAC).b[i];
    e881ca26:	6689                	lui	a3,0x2
    e881ca28:	649d                	lui	s1,0x7
    e881ca2a:	9536                	add	a0,a0,a3
    e881ca2c:	23c48693          	addi	a3,s1,572 # 723c <memcmp-0xe87f8dc4>
        *ptr++ = NDP_TgtLL; // Option Type 2 == Target Link-layer Address
    e881ca30:	4701                	li	a4,0
        for (i=0; i<6; i++) *ptr++ = (tha ? *tha : intf->MAC).b[i];
    e881ca32:	96a2                	add	a3,a3,s0
    e881ca34:	03810813          	addi	a6,sp,56
    e881ca38:	4619                	li	a2,6
    e881ca3a:	10078f63          	beqz	a5,e881cb58 <SendNDP+0x286>
    e881ca3e:	438c                	lw	a1,0(a5)
    e881ca40:	dc2e                	sw	a1,56(sp)
    e881ca42:	0047d583          	lhu	a1,4(a5)
    e881ca46:	02b11e23          	sh	a1,60(sp)
    e881ca4a:	8107458b          	lrbu	a1,a4,a6,0
    e881ca4e:	00e6d58b          	srb	a1,a3,a4,0
    e881ca52:	0705                	addi	a4,a4,1
    e881ca54:	fec713e3          	bne	a4,a2,e881ca3a <SendNDP+0x168>
    e881ca58:	a85d                	j	e881cb0e <SendNDP+0x23c>
    if (!intf) { LogMsg("SendNDP: No interface with InterfaceID %p found %s", rr->resrec.InterfaceID, ARDisplayString(m,rr)); return; }
    e881ca5a:	030a3583          	ld	a1,48(s4) # 70000030 <memcmp-0x787fffd0>
    e881ca5e:	03b40613          	addi	a2,s0,59
    e881ca62:	008a0513          	addi	a0,s4,8
    e881ca66:	0591                	addi	a1,a1,4
    e881ca68:	fadf90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881ca6c:	86aa                	mv	a3,a0
    e881ca6e:	865a                	mv	a2,s6
    e881ca70:	0008a597          	auipc	a1,0x8a
    e881ca74:	ae058593          	addi	a1,a1,-1312 # e88a6550 <end.8789+0x2ea8>
    e881ca78:	4501                	li	a0,0
    e881ca7a:	233120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e881ca7e:	60aa                	ld	ra,136(sp)
    e881ca80:	640a                	ld	s0,128(sp)
    e881ca82:	74e6                	ld	s1,120(sp)
    e881ca84:	7946                	ld	s2,112(sp)
    e881ca86:	79a6                	ld	s3,104(sp)
    e881ca88:	7a06                	ld	s4,96(sp)
    e881ca8a:	6ae6                	ld	s5,88(sp)
    e881ca8c:	6b46                	ld	s6,80(sp)
    e881ca8e:	6149                	addi	sp,sp,144
    e881ca90:	8082                	ret
    for (i=0; i<6; i++) *ptr++ = (tha ? *tha : intf->MAC).b[i];
    e881ca92:	a205ae03          	lw	t3,-1504(a1)
    e881ca96:	d472                	sw	t3,40(sp)
    e881ca98:	a245de03          	lhu	t3,-1500(a1)
    e881ca9c:	b5dd                	j	e881c982 <SendNDP+0xb0>
        for (i=0; i<16; i++) *ptr++ = tpa->b[i];
    e881ca9e:	669d                	lui	a3,0x7
    e881caa0:	22a68613          	addi	a2,a3,554 # 722a <memcmp-0xe87f8dd6>
    e881caa4:	4701                	li	a4,0
    e881caa6:	9622                	add	a2,a2,s0
    e881caa8:	45c1                	li	a1,16
    e881caaa:	80e8488b          	lrbu	a7,a6,a4,0
    e881caae:	00e6588b          	srb	a7,a2,a4,0
    e881cab2:	0705                	addi	a4,a4,1
    e881cab4:	feb71be3          	bne	a4,a1,e881caaa <SendNDP+0x1d8>
        if (!mDNSIPv6AddressIsZero(*spa))
    e881cab8:	e0c9c70b          	lwd	a4,a2,(s3),0,3
    e881cabc:	23a68493          	addi	s1,a3,570
    e881cac0:	94a2                	add	s1,s1,s0
    e881cac2:	8f51                	or	a4,a4,a2
    e881cac4:	0089a603          	lw	a2,8(s3)
    e881cac8:	8f51                	or	a4,a4,a2
    e881caca:	00c9a603          	lw	a2,12(s3)
    e881cace:	8f51                	or	a4,a4,a2
    e881cad0:	2701                	sext.w	a4,a4
    e881cad2:	c329                	beqz	a4,e881cb14 <SendNDP+0x242>
            *ptr++ = NDP_SrcLL; // Option Type 1 == Source Link-layer Address
    e881cad4:	96a2                	add	a3,a3,s0
    e881cad6:	10100713          	li	a4,257
    e881cada:	22e69d23          	sh	a4,570(a3)
            for (i=0; i<6; i++) *ptr++ = (tha ? *tha : intf->MAC).b[i];
    e881cade:	6689                	lui	a3,0x2
    e881cae0:	649d                	lui	s1,0x7
    e881cae2:	9536                	add	a0,a0,a3
    e881cae4:	23c48693          	addi	a3,s1,572 # 723c <memcmp-0xe87f8dc4>
            *ptr++ = NDP_SrcLL; // Option Type 1 == Source Link-layer Address
    e881cae8:	4701                	li	a4,0
            for (i=0; i<6; i++) *ptr++ = (tha ? *tha : intf->MAC).b[i];
    e881caea:	96a2                	add	a3,a3,s0
    e881caec:	03010813          	addi	a6,sp,48
    e881caf0:	4619                	li	a2,6
    e881caf2:	cfa9                	beqz	a5,e881cb4c <SendNDP+0x27a>
    e881caf4:	438c                	lw	a1,0(a5)
    e881caf6:	d82e                	sw	a1,48(sp)
    e881caf8:	0047d583          	lhu	a1,4(a5)
    e881cafc:	02b11a23          	sh	a1,52(sp)
    e881cb00:	8107458b          	lrbu	a1,a4,a6,0
    e881cb04:	00e6d58b          	srb	a1,a3,a4,0
    e881cb08:	0705                	addi	a4,a4,1
    e881cb0a:	fec714e3          	bne	a4,a2,e881caf2 <SendNDP+0x220>
    e881cb0e:	24248493          	addi	s1,s1,578
    e881cb12:	94a2                	add	s1,s1,s0
    m->omsg.data[0x13] = ptr - &m->omsg.data[0x36];     // Compute actual length
    e881cb14:	679d                	lui	a5,0x7
    e881cb16:	22278693          	addi	a3,a5,546 # 7222 <memcmp-0xe87f8dde>
    e881cb1a:	96a2                	add	a3,a3,s0
    e881cb1c:	40d48733          	sub	a4,s1,a3
    e881cb20:	943e                	add	s0,s0,a5
    e881cb22:	0ff77713          	andi	a4,a4,255
    checksum.NotAnInteger = ~IPv6CheckSum(spa, v6dst, 0x3A, &m->omsg.data[0x36], m->omsg.data[0x13]);
    e881cb26:	85d6                	mv	a1,s5
    m->omsg.data[0x13] = ptr - &m->omsg.data[0x36];     // Compute actual length
    e881cb28:	1ee40fa3          	sb	a4,511(s0)
    checksum.NotAnInteger = ~IPv6CheckSum(spa, v6dst, 0x3A, &m->omsg.data[0x36], m->omsg.data[0x13]);
    e881cb2c:	03a00613          	li	a2,58
    e881cb30:	854e                	mv	a0,s3
    e881cb32:	badfe0ef          	jal	ra,e881b6de <IPv6CheckSum>
    e881cb36:	fff54513          	not	a0,a0
    m->omsg.data[0x38] = checksum.b[0];
    e881cb3a:	22a41223          	sh	a0,548(s0)
    mDNSPlatformSendRawPacket(m->omsg.data, ptr, rr->resrec.InterfaceID);
    e881cb3e:	020a3603          	ld	a2,32(s4)
    e881cb42:	85a6                	mv	a1,s1
    e881cb44:	854a                	mv	a0,s2
    e881cb46:	5d3120ef          	jal	ra,e882f918 <mDNSPlatformSendRawPacket>
    e881cb4a:	bf15                	j	e881ca7e <SendNDP+0x1ac>
            for (i=0; i<6; i++) *ptr++ = (tha ? *tha : intf->MAC).b[i];
    e881cb4c:	a2052583          	lw	a1,-1504(a0)
    e881cb50:	d82e                	sw	a1,48(sp)
    e881cb52:	a2455583          	lhu	a1,-1500(a0)
    e881cb56:	b75d                	j	e881cafc <SendNDP+0x22a>
        for (i=0; i<6; i++) *ptr++ = (tha ? *tha : intf->MAC).b[i];
    e881cb58:	a2052583          	lw	a1,-1504(a0)
    e881cb5c:	dc2e                	sw	a1,56(sp)
    e881cb5e:	a2455583          	lhu	a1,-1500(a0)
    e881cb62:	b5d5                	j	e881ca46 <SendNDP+0x174>

00000000e881cb64 <SendWakeup>:
{
    e881cb64:	715d                	addi	sp,sp,-80
    e881cb66:	fc26                	sd	s1,56(sp)
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881cb68:	678d                	lui	a5,0x3
    mDNSu8 *ptr = m->omsg.data;
    e881cb6a:	649d                	lui	s1,0x7
    e881cb6c:	1ec48493          	addi	s1,s1,492 # 71ec <memcmp-0xe87f8e14>
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881cb70:	97aa                	add	a5,a5,a0
{
    e881cb72:	e0a2                	sd	s0,64(sp)
    e881cb74:	f84a                	sd	s2,48(sp)
    e881cb76:	f44e                	sd	s3,40(sp)
    e881cb78:	e486                	sd	ra,72(sp)
    e881cb7a:	f052                	sd	s4,32(sp)
    e881cb7c:	ec56                	sd	s5,24(sp)
    e881cb7e:	842a                	mv	s0,a0
    mDNSu8 *ptr = m->omsg.data;
    e881cb80:	94aa                	add	s1,s1,a0
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881cb82:	1e07b503          	ld	a0,480(a5) # 31e0 <memcmp-0xe87fce20>
{
    e881cb86:	89ae                	mv	s3,a1
    e881cb88:	e432                	sd	a2,8(sp)
    e881cb8a:	e036                	sd	a3,0(sp)
    e881cb8c:	893a                	mv	s2,a4
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881cb8e:	be1ff0ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found", InterfaceID); return; }
    e881cb92:	c971                	beqz	a0,e881cc66 <SendWakeup+0x102>
    e881cb94:	f8c1468b          	ldd	a3,a2,(sp),0,4
    e881cb98:	85aa                	mv	a1,a0
    e881cb9a:	4701                	li	a4,0
    for (i=0; i<6; i++) *ptr++ = EthAddr->b[i];
    e881cb9c:	679d                	lui	a5,0x7
    e881cb9e:	8826                	mv	a6,s1
    e881cba0:	4519                	li	a0,6
    e881cba2:	80e6488b          	lrbu	a7,a2,a4,0
    e881cba6:	00e8588b          	srb	a7,a6,a4,0
    e881cbaa:	0705                	addi	a4,a4,1
    e881cbac:	fea71be3          	bne	a4,a0,e881cba2 <SendWakeup+0x3e>
    e881cbb0:	1f278713          	addi	a4,a5,498 # 71f2 <memcmp-0xe87f8e0e>
    for (i=0; i<6; i++) *ptr++ = intf->MAC.b[0];
    e881cbb4:	6509                	lui	a0,0x2
    e881cbb6:	1f878793          	addi	a5,a5,504
    e881cbba:	9722                	add	a4,a4,s0
    e881cbbc:	97a2                	add	a5,a5,s0
    e881cbbe:	95aa                	add	a1,a1,a0
    e881cbc0:	a205c503          	lbu	a0,-1504(a1)
    e881cbc4:	1817550b          	sbia	a0,(a4),1,0
    e881cbc8:	fee79ce3          	bne	a5,a4,e881cbc0 <SendWakeup+0x5c>
    *ptr++ = 0x08;
    e881cbcc:	6591                	lui	a1,0x4
    *ptr++ = 0x42;
    e881cbce:	679d                	lui	a5,0x7
    *ptr++ = 0x08;
    e881cbd0:	2085859b          	addiw	a1,a1,520
    *ptr++ = 0x42;
    e881cbd4:	1fa78713          	addi	a4,a5,506 # 71fa <memcmp-0xe87f8e06>
    *ptr++ = 0x08;
    e881cbd8:	00f40533          	add	a0,s0,a5
    e881cbdc:	20078793          	addi	a5,a5,512
    e881cbe0:	1eb51c23          	sh	a1,504(a0) # 21f8 <memcmp-0xe87fde08>
    *ptr++ = 0x42;
    e881cbe4:	9722                	add	a4,a4,s0
    e881cbe6:	97a2                	add	a5,a5,s0
    for (i=0; i<6; i++) *ptr++ = 0xFF;
    e881cbe8:	55fd                	li	a1,-1
    e881cbea:	1817558b          	sbia	a1,(a4),1,0
    e881cbee:	fee79ee3          	bne	a5,a4,e881cbea <SendWakeup+0x86>
    e881cbf2:	679d                	lui	a5,0x7
    e881cbf4:	20078593          	addi	a1,a5,512 # 7200 <memcmp-0xe87f8e00>
    e881cbf8:	26078793          	addi	a5,a5,608
    e881cbfc:	95a2                	add	a1,a1,s0
    e881cbfe:	97a2                	add	a5,a5,s0
    for (j=0; j<16; j++) for (i=0; i<6; i++) *ptr++ = EthAddr->b[i];
    e881cc00:	4519                	li	a0,6
    e881cc02:	4701                	li	a4,0
    e881cc04:	80e6480b          	lrbu	a6,a2,a4,0
    e881cc08:	00e5d80b          	srb	a6,a1,a4,0
    e881cc0c:	0705                	addi	a4,a4,1
    e881cc0e:	fea71be3          	bne	a4,a0,e881cc04 <SendWakeup+0xa0>
    e881cc12:	0599                	addi	a1,a1,6
    e881cc14:	feb797e3          	bne	a5,a1,e881cc02 <SendWakeup+0x9e>
    e881cc18:	4701                	li	a4,0
    for (i=0; i<6; i++) *ptr++ = password->b[i];
    e881cc1a:	4619                	li	a2,6
    e881cc1c:	80e6c58b          	lrbu	a1,a3,a4,0
    e881cc20:	00e7d58b          	srb	a1,a5,a4,0
    e881cc24:	0705                	addi	a4,a4,1
    e881cc26:	fec71be3          	bne	a4,a2,e881cc1c <SendWakeup+0xb8>
    e881cc2a:	6a9d                	lui	s5,0x7
    e881cc2c:	266a8a13          	addi	s4,s5,614 # 7266 <memcmp-0xe87f8d9a>
    e881cc30:	9a22                	add	s4,s4,s0
    mDNSPlatformSendRawPacket(m->omsg.data, ptr, InterfaceID);
    e881cc32:	864e                	mv	a2,s3
    e881cc34:	85d2                	mv	a1,s4
    e881cc36:	8526                	mv	a0,s1
    e881cc38:	4e1120ef          	jal	ra,e882f918 <mDNSPlatformSendRawPacket>
    if (!unicastOnly)
    e881cc3c:	04091463          	bnez	s2,e881cc84 <SendWakeup+0x120>
        for (i=0; i<6; i++) m->omsg.data[i] = 0xFF;
    e881cc40:	9456                	add	s0,s0,s5
    e881cc42:	57fd                	li	a5,-1
    e881cc44:	1ef42623          	sw	a5,492(s0)
    e881cc48:	1ef41823          	sh	a5,496(s0)
}
    e881cc4c:	6406                	ld	s0,64(sp)
    e881cc4e:	60a6                	ld	ra,72(sp)
    e881cc50:	7942                	ld	s2,48(sp)
    e881cc52:	6ae2                	ld	s5,24(sp)
        mDNSPlatformSendRawPacket(m->omsg.data, ptr, InterfaceID);
    e881cc54:	864e                	mv	a2,s3
    e881cc56:	85d2                	mv	a1,s4
}
    e881cc58:	79a2                	ld	s3,40(sp)
    e881cc5a:	7a02                	ld	s4,32(sp)
        mDNSPlatformSendRawPacket(m->omsg.data, ptr, InterfaceID);
    e881cc5c:	8526                	mv	a0,s1
}
    e881cc5e:	74e2                	ld	s1,56(sp)
    e881cc60:	6161                	addi	sp,sp,80
        mDNSPlatformSendRawPacket(m->omsg.data, ptr, InterfaceID);
    e881cc62:	4b71206f          	j	e882f918 <mDNSPlatformSendRawPacket>
}
    e881cc66:	6406                	ld	s0,64(sp)
    e881cc68:	60a6                	ld	ra,72(sp)
    e881cc6a:	74e2                	ld	s1,56(sp)
    e881cc6c:	7942                	ld	s2,48(sp)
    e881cc6e:	7a02                	ld	s4,32(sp)
    e881cc70:	6ae2                	ld	s5,24(sp)
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found", InterfaceID); return; }
    e881cc72:	864e                	mv	a2,s3
}
    e881cc74:	79a2                	ld	s3,40(sp)
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found", InterfaceID); return; }
    e881cc76:	0008a597          	auipc	a1,0x8a
    e881cc7a:	41a58593          	addi	a1,a1,1050 # e88a7090 <end.8789+0x39e8>
}
    e881cc7e:	6161                	addi	sp,sp,80
    if (!intf) { LogMsg("SendARP: No interface with InterfaceID %p found", InterfaceID); return; }
    e881cc80:	02d1206f          	j	e882f4ac <LogMsgWithLevel>
}
    e881cc84:	60a6                	ld	ra,72(sp)
    e881cc86:	6406                	ld	s0,64(sp)
    e881cc88:	74e2                	ld	s1,56(sp)
    e881cc8a:	7942                	ld	s2,48(sp)
    e881cc8c:	79a2                	ld	s3,40(sp)
    e881cc8e:	7a02                	ld	s4,32(sp)
    e881cc90:	6ae2                	ld	s5,24(sp)
    e881cc92:	6161                	addi	sp,sp,80
    e881cc94:	8082                	ret

00000000e881cc96 <AddRecordToResponseList>:
    if (rr->NextResponse == mDNSNULL && *nrpp != &rr->NextResponse)
    e881cc96:	7dfc                	ld	a5,248(a1)
    e881cc98:	ef99                	bnez	a5,e881ccb6 <AddRecordToResponseList+0x20>
    e881cc9a:	6118                	ld	a4,0(a0)
    e881cc9c:	0f858793          	addi	a5,a1,248
    e881cca0:	00f70b63          	beq	a4,a5,e881ccb6 <AddRecordToResponseList+0x20>
        **nrpp = rr;
    e881cca4:	e30c                	sd	a1,0(a4)
        if (add && add->NR_AdditionalTo) add = add->NR_AdditionalTo;
    e881cca6:	c609                	beqz	a2,e881ccb0 <AddRecordToResponseList+0x1a>
    e881cca8:	10863703          	ld	a4,264(a2)
    e881ccac:	42e7160b          	mvnez	a2,a4,a4
        rr->NR_AdditionalTo = add;
    e881ccb0:	10c5b423          	sd	a2,264(a1)
        *nrpp = &rr->NextResponse;
    e881ccb4:	e11c                	sd	a5,0(a0)
}
    e881ccb6:	8082                	ret

00000000e881ccb8 <GetEffectiveTTL>:
    if      (LLQType == uDNS_LLQ_Entire) ttl = kLLQ_DefLease;
    e881ccb8:	4789                	li	a5,2
    e881ccba:	04f50463          	beq	a0,a5,e881cd02 <GetEffectiveTTL+0x4a>
    else if (LLQType == uDNS_LLQ_Events)
    e881ccbe:	478d                	li	a5,3
    e881ccc0:	00f51763          	bne	a0,a5,e881ccce <GetEffectiveTTL+0x16>
        if (ttl == 0xFFFFFFFF) ttl = 0;
    e881ccc4:	57fd                	li	a5,-1
    e881ccc6:	02f59e63          	bne	a1,a5,e881cd02 <GetEffectiveTTL+0x4a>
    e881ccca:	4501                	li	a0,0
    e881cccc:	8082                	ret
        if (ttl > 0x60000000UL / mDNSPlatformOneSecond) ttl = 0x60000000UL / mDNSPlatformOneSecond;
    e881ccce:	000b8797          	auipc	a5,0xb8
    e881ccd2:	db278793          	addi	a5,a5,-590 # e88d4a80 <mDNSPlatformOneSecond>
    e881ccd6:	4398                	lw	a4,0(a5)
    e881ccd8:	600007b7          	lui	a5,0x60000
    e881ccdc:	02e7d7b3          	divu	a5,a5,a4
    e881cce0:	7c05b70b          	extu	a4,a1,31,0
    e881cce4:	00e7f463          	bgeu	a5,a4,e881ccec <GetEffectiveTTL+0x34>
    e881cce8:	0007859b          	sext.w	a1,a5
        ttl = RRAdjustTTL(ttl);
    e881ccec:	0025d51b          	srliw	a0,a1,0x2
    e881ccf0:	2589                	addiw	a1,a1,2
    e881ccf2:	00b5073b          	addw	a4,a0,a1
    e881ccf6:	47bd                	li	a5,15
    e881ccf8:	853a                	mv	a0,a4
    e881ccfa:	00f77763          	bgeu	a4,a5,e881cd08 <GetEffectiveTTL+0x50>
    e881ccfe:	453d                	li	a0,15
    e881cd00:	8082                	ret
        else ttl = kLLQ_DefLease;
    e881cd02:	6509                	lui	a0,0x2
    e881cd04:	c2050513          	addi	a0,a0,-992 # 1c20 <memcmp-0xe87fe3e0>
}
    e881cd08:	8082                	ret

00000000e881cd0a <UpdateInterfaceProtocols.isra.11>:
        if (intf->InterfaceID == active->InterfaceID)
    e881cd0a:	6709                	lui	a4,0x2
    active->IPv4Available = mDNSfalse;
    e881cd0c:	000594a3          	sh	zero,9(a1)
            if (intf->ip.type == mDNSAddrType_IPv4 && intf->McastTxRx) active->IPv4Available = mDNStrue;
    e881cd10:	4811                	li	a6,4
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881cd12:	611c                	ld	a5,0(a0)
            if (intf->ip.type == mDNSAddrType_IPv6 && intf->McastTxRx) active->IPv6Available = mDNStrue;
    e881cd14:	4899                	li	a7,6
        if (intf->InterfaceID == active->InterfaceID)
    e881cd16:	00e58533          	add	a0,a1,a4
            if (intf->ip.type == mDNSAddrType_IPv6 && intf->McastTxRx) active->IPv6Available = mDNStrue;
    e881cd1a:	4605                	li	a2,1
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881cd1c:	e391                	bnez	a5,e881cd20 <UpdateInterfaceProtocols.isra.11+0x16>
}
    e881cd1e:	8082                	ret
        if (intf->InterfaceID == active->InterfaceID)
    e881cd20:	00e786b3          	add	a3,a5,a4
    e881cd24:	9f06be03          	ld	t3,-1552(a3) # 19f0 <memcmp-0xe87fe610>
    e881cd28:	9f053303          	ld	t1,-1552(a0)
    e881cd2c:	026e1663          	bne	t3,t1,e881cd58 <UpdateInterfaceProtocols.isra.11+0x4e>
            if (intf->ip.type == mDNSAddrType_IPv4 && intf->McastTxRx) active->IPv4Available = mDNStrue;
    e881cd30:	9f86a303          	lw	t1,-1544(a3)
    e881cd34:	01031763          	bne	t1,a6,e881cd42 <UpdateInterfaceProtocols.isra.11+0x38>
    e881cd38:	a676c683          	lbu	a3,-1433(a3)
    e881cd3c:	ce91                	beqz	a3,e881cd58 <UpdateInterfaceProtocols.isra.11+0x4e>
    e881cd3e:	00c584a3          	sb	a2,9(a1)
            if (intf->ip.type == mDNSAddrType_IPv6 && intf->McastTxRx) active->IPv6Available = mDNStrue;
    e881cd42:	00e786b3          	add	a3,a5,a4
    e881cd46:	9f86a303          	lw	t1,-1544(a3)
    e881cd4a:	01131763          	bne	t1,a7,e881cd58 <UpdateInterfaceProtocols.isra.11+0x4e>
    e881cd4e:	a676c683          	lbu	a3,-1433(a3)
    e881cd52:	c299                	beqz	a3,e881cd58 <UpdateInterfaceProtocols.isra.11+0x4e>
    e881cd54:	00c58523          	sb	a2,10(a1)
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881cd58:	639c                	ld	a5,0(a5)
    e881cd5a:	b7c9                	j	e881cd1c <UpdateInterfaceProtocols.isra.11+0x12>

00000000e881cd5c <setAuthRecType>:
    if (InterfaceID == mDNSInterface_LocalOnly)
    e881cd5c:	00086797          	auipc	a5,0x86
    e881cd60:	01478793          	addi	a5,a5,20 # e88a2d70 <mDNSInterface_LocalOnly>
    e881cd64:	639c                	ld	a5,0(a5)
    e881cd66:	04a78c63          	beq	a5,a0,e881cdbe <setAuthRecType+0x62>
    else if (InterfaceID == mDNSInterface_P2P || InterfaceID == mDNSInterface_BLE)
    e881cd6a:	00086797          	auipc	a5,0x86
    e881cd6e:	00e78793          	addi	a5,a5,14 # e88a2d78 <mDNSInterface_P2P>
    e881cd72:	6398                	ld	a4,0(a5)
        artype = AuthRecordP2P;
    e881cd74:	4795                	li	a5,5
    else if (InterfaceID == mDNSInterface_P2P || InterfaceID == mDNSInterface_BLE)
    e881cd76:	04a70263          	beq	a4,a0,e881cdba <setAuthRecType+0x5e>
    e881cd7a:	00086797          	auipc	a5,0x86
    e881cd7e:	fee78793          	addi	a5,a5,-18 # e88a2d68 <mDNSInterface_BLE>
    e881cd82:	6398                	ld	a4,0(a5)
        artype = AuthRecordP2P;
    e881cd84:	4795                	li	a5,5
    else if (InterfaceID == mDNSInterface_P2P || InterfaceID == mDNSInterface_BLE)
    e881cd86:	02a70a63          	beq	a4,a0,e881cdba <setAuthRecType+0x5e>
    else if ((InterfaceID == mDNSInterface_Any) && (flags & kDNSServiceFlagsIncludeP2P)
    e881cd8a:	00086797          	auipc	a5,0x86
    e881cd8e:	fd678793          	addi	a5,a5,-42 # e88a2d60 <mDNSInterface_Any>
    e881cd92:	6398                	ld	a4,0(a5)
        artype = AuthRecordAny;
    e881cd94:	4781                	li	a5,0
    else if ((InterfaceID == mDNSInterface_Any) && (flags & kDNSServiceFlagsIncludeP2P)
    e881cd96:	02e51263          	bne	a0,a4,e881cdba <setAuthRecType+0x5e>
            && (flags & kDNSServiceFlagsIncludeAWDL))
    e881cd9a:	00120737          	lui	a4,0x120
    e881cd9e:	8f6d                	and	a4,a4,a1
    e881cda0:	001206b7          	lui	a3,0x120
        artype = AuthRecordAnyIncludeAWDLandP2P;
    e881cda4:	478d                	li	a5,3
            && (flags & kDNSServiceFlagsIncludeAWDL))
    e881cda6:	00d70a63          	beq	a4,a3,e881cdba <setAuthRecType+0x5e>
    else if ((InterfaceID == mDNSInterface_Any) && (flags & kDNSServiceFlagsIncludeP2P))
    e881cdaa:	02e59713          	slli	a4,a1,0x2e
        artype = AuthRecordAnyIncludeP2P;
    e881cdae:	4785                	li	a5,1
    else if ((InterfaceID == mDNSInterface_Any) && (flags & kDNSServiceFlagsIncludeP2P))
    e881cdb0:	00074563          	bltz	a4,e881cdba <setAuthRecType+0x5e>
        artype = AuthRecordAnyIncludeAWDL;
    e881cdb4:	5145b78b          	extu	a5,a1,20,20
    e881cdb8:	0786                	slli	a5,a5,0x1
}
    e881cdba:	853e                	mv	a0,a5
    e881cdbc:	8082                	ret
        artype = AuthRecordLocalOnly;
    e881cdbe:	4791                	li	a5,4
    e881cdc0:	bfed                	j	e881cdba <setAuthRecType+0x5e>

00000000e881cdc2 <mDNS_GrowCache_internal>:
    if (storage && numrecords)
    e881cdc2:	c5a9                	beqz	a1,e881ce0c <mDNS_GrowCache_internal+0x4a>
    e881cdc4:	e629                	bnez	a2,e881ce0e <mDNS_GrowCache_internal+0x4c>
    e881cdc6:	8082                	ret
        for (i=0; i<numrecords; i++) storage[i].next = &storage[i+1];
    e881cdc8:	2785                	addiw	a5,a5,1
    e881cdca:	7c07b78b          	extu	a5,a5,31,0
    e881cdce:	88ae                	mv	a7,a1
    e881cdd0:	02d70833          	mul	a6,a4,a3
    e881cdd4:	0705                	addi	a4,a4,1
    e881cdd6:	20d7988b          	mula	a7,a5,a3
    e881cdda:	6105d88b          	srd	a7,a1,a6,0
    e881cdde:	0007079b          	sext.w	a5,a4
    e881cde2:	fec7e3e3          	bltu	a5,a2,e881cdc8 <mDNS_GrowCache_internal+0x6>
        storage[numrecords-1].next = m->rrcache_free;
    e881cde6:	fff6079b          	addiw	a5,a2,-1
    e881cdea:	7c07b78b          	extu	a5,a5,31,0
    e881cdee:	0e800693          	li	a3,232
    e881cdf2:	02d787b3          	mul	a5,a5,a3
    e881cdf6:	30853703          	ld	a4,776(a0)
    e881cdfa:	60f5d70b          	srd	a4,a1,a5,0
        m->rrcache_size += numrecords;
    e881cdfe:	2f052783          	lw	a5,752(a0)
        m->rrcache_free = storage;
    e881ce02:	30b53423          	sd	a1,776(a0)
        m->rrcache_size += numrecords;
    e881ce06:	9e3d                	addw	a2,a2,a5
    e881ce08:	2ec52823          	sw	a2,752(a0)
}
    e881ce0c:	8082                	ret
    e881ce0e:	4701                	li	a4,0
        for (i=0; i<numrecords; i++) storage[i].next = &storage[i+1];
    e881ce10:	0e800693          	li	a3,232
    e881ce14:	b7e9                	j	e881cdde <mDNS_GrowCache_internal+0x1c>

00000000e881ce16 <SameResourceRecordNameClassInterface>:
{
    e881ce16:	1141                	addi	sp,sp,-16
    e881ce18:	e406                	sd	ra,8(sp)
    if (!r1) { LogMsg("SameResourceRecordSignature ERROR: r1 is NULL"); return(mDNSfalse); }
    e881ce1a:	e919                	bnez	a0,e881ce30 <SameResourceRecordNameClassInterface+0x1a>
    e881ce1c:	00089597          	auipc	a1,0x89
    e881ce20:	5a458593          	addi	a1,a1,1444 # e88a63c0 <end.8789+0x2d18>
    if (!r2) { LogMsg("SameResourceRecordSignature ERROR: r2 is NULL"); return(mDNSfalse); }
    e881ce24:	688120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881ce28:	4501                	li	a0,0
}
    e881ce2a:	60a2                	ld	ra,8(sp)
    e881ce2c:	0141                	addi	sp,sp,16
    e881ce2e:	8082                	ret
    if (!r2) { LogMsg("SameResourceRecordSignature ERROR: r2 is NULL"); return(mDNSfalse); }
    e881ce30:	e599                	bnez	a1,e881ce3e <SameResourceRecordNameClassInterface+0x28>
    e881ce32:	00089597          	auipc	a1,0x89
    e881ce36:	5be58593          	addi	a1,a1,1470 # e88a63f0 <end.8789+0x2d48>
    e881ce3a:	4501                	li	a0,0
    e881ce3c:	b7e5                	j	e881ce24 <SameResourceRecordNameClassInterface+0xe>
    if (r1->resrec.InterfaceID &&
    e881ce3e:	7114                	ld	a3,32(a0)
    e881ce40:	87aa                	mv	a5,a0
    e881ce42:	c691                	beqz	a3,e881ce4e <SameResourceRecordNameClassInterface+0x38>
        r2->resrec.InterfaceID &&
    e881ce44:	7198                	ld	a4,32(a1)
    if (r1->resrec.InterfaceID &&
    e881ce46:	c701                	beqz	a4,e881ce4e <SameResourceRecordNameClassInterface+0x38>
        r1->resrec.InterfaceID != r2->resrec.InterfaceID) return(mDNSfalse);
    e881ce48:	4501                	li	a0,0
        r2->resrec.InterfaceID &&
    e881ce4a:	fee690e3          	bne	a3,a4,e881ce2a <SameResourceRecordNameClassInterface+0x14>
               r1->resrec.namehash == r2->resrec.namehash &&
    e881ce4e:	00c7d683          	lhu	a3,12(a5)
    e881ce52:	00c5d703          	lhu	a4,12(a1)
    e881ce56:	4501                	li	a0,0
    e881ce58:	00e69d63          	bne	a3,a4,e881ce72 <SameResourceRecordNameClassInterface+0x5c>
               r1->resrec.rrclass  == r2->resrec.rrclass &&
    e881ce5c:	4f94                	lw	a3,24(a5)
    e881ce5e:	4d98                	lw	a4,24(a1)
    e881ce60:	00e69963          	bne	a3,a4,e881ce72 <SameResourceRecordNameClassInterface+0x5c>
               SameDomainName(r1->resrec.name, r2->resrec.name));
    e881ce64:	758c                	ld	a1,40(a1)
    e881ce66:	7788                	ld	a0,40(a5)
    e881ce68:	9e2f60ef          	jal	ra,e881304a <SameDomainName>
               r1->resrec.namehash == r2->resrec.namehash &&
    e881ce6c:	2501                	sext.w	a0,a0
    e881ce6e:	00a03533          	snez	a0,a0
    return (mDNSBool)(
    e881ce72:	0ff57513          	andi	a0,a0,255
    e881ce76:	bf55                	j	e881ce2a <SameResourceRecordNameClassInterface+0x14>

00000000e881ce78 <AddRRSetAdditionalsToResponseList.isra.21.part.22>:
mDNSlocal void AddRRSetAdditionalsToResponseList(mDNS *const m, AuthRecord ***nrpp, AuthRecord *rr, AuthRecord *additional, const mDNSInterfaceID InterfaceID)
    e881ce78:	7139                	addi	sp,sp,-64
    e881ce7a:	e826                	sd	s1,16(sp)
    e881ce7c:	ec4a                	sd	s2,24(sp)
    e881ce7e:	f04e                	sd	s3,32(sp)
    e881ce80:	f452                	sd	s4,40(sp)
    e881ce82:	f856                	sd	s5,48(sp)
    e881ce84:	fc06                	sd	ra,56(sp)
    e881ce86:	e422                	sd	s0,8(sp)
        for (rr2 = m->ResourceRecords; rr2; rr2 = rr2->next)
    e881ce88:	6100                	ld	s0,0(a0)
mDNSlocal void AddRRSetAdditionalsToResponseList(mDNS *const m, AuthRecord ***nrpp, AuthRecord *rr, AuthRecord *additional, const mDNSInterfaceID InterfaceID)
    e881ce8a:	892e                	mv	s2,a1
    e881ce8c:	89b2                	mv	s3,a2
    e881ce8e:	84b6                	mv	s1,a3
    e881ce90:	8aba                	mv	s5,a4
                ResourceRecordIsValidInterfaceAnswer(rr2, InterfaceID) &&
    e881ce92:	00086a17          	auipc	s4,0x86
    e881ce96:	ecea0a13          	addi	s4,s4,-306 # e88a2d60 <mDNSInterface_Any>
        for (rr2 = m->ResourceRecords; rr2; rr2 = rr2->next)
    e881ce9a:	e811                	bnez	s0,e881ceae <AddRRSetAdditionalsToResponseList.isra.21.part.22+0x36>
}
    e881ce9c:	70e2                	ld	ra,56(sp)
    e881ce9e:	6422                	ld	s0,8(sp)
    e881cea0:	64c2                	ld	s1,16(sp)
    e881cea2:	6962                	ld	s2,24(sp)
    e881cea4:	7982                	ld	s3,32(sp)
    e881cea6:	7a22                	ld	s4,40(sp)
    e881cea8:	7ac2                	ld	s5,48(sp)
    e881ceaa:	6121                	addi	sp,sp,64
    e881ceac:	8082                	ret
            if ((rr2->resrec.namehash == additional->resrec.namehash) &&
    e881ceae:	4c18                	lw	a4,24(s0)
    e881ceb0:	4c9c                	lw	a5,24(s1)
    e881ceb2:	06f71e63          	bne	a4,a5,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
    e881ceb6:	00a45703          	lhu	a4,10(s0)
    e881ceba:	00a4d783          	lhu	a5,10(s1)
    e881cebe:	06f71863          	bne	a4,a5,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
                (rr2->resrec.rrtype   == additional->resrec.rrtype) &&
    e881cec2:	06940663          	beq	s0,s1,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
                (rr2->resrec.RecordType & kDNSRecordTypeUniqueMask) &&
    e881cec6:	00844783          	lbu	a5,8(s0)
                (rr2 != additional) &&
    e881ceca:	0327f713          	andi	a4,a5,50
    e881cece:	c325                	beqz	a4,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
                (rr2->resrec.RecordType & kDNSRecordTypeUniqueMask) &&
    e881ced0:	00c45683          	lhu	a3,12(s0)
    e881ced4:	00c4d703          	lhu	a4,12(s1)
    e881ced8:	04e69b63          	bne	a3,a4,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
                (rr2->resrec.rrclass  == additional->resrec.rrclass) &&
    e881cedc:	03c7f793          	andi	a5,a5,60
    e881cee0:	c7b9                	beqz	a5,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
                ResourceRecordIsValidInterfaceAnswer(rr2, InterfaceID) &&
    e881cee2:	643c                	ld	a5,72(s0)
    e881cee4:	c791                	beqz	a5,e881cef0 <AddRRSetAdditionalsToResponseList.isra.21.part.22+0x78>
    e881cee6:	0087c783          	lbu	a5,8(a5)
    e881ceea:	03c7f793          	andi	a5,a5,60
    e881ceee:	c3a1                	beqz	a5,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
    e881cef0:	683c                	ld	a5,80(s0)
    e881cef2:	c791                	beqz	a5,e881cefe <AddRRSetAdditionalsToResponseList.isra.21.part.22+0x86>
    e881cef4:	0087c783          	lbu	a5,8(a5)
    e881cef8:	03c7f793          	andi	a5,a5,60
    e881cefc:	cb8d                	beqz	a5,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
    e881cefe:	6c3c                	ld	a5,88(s0)
    e881cf00:	c791                	beqz	a5,e881cf0c <AddRRSetAdditionalsToResponseList.isra.21.part.22+0x94>
    e881cf02:	0087c783          	lbu	a5,8(a5)
    e881cf06:	03c7f793          	andi	a5,a5,60
    e881cf0a:	c395                	beqz	a5,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
    e881cf0c:	701c                	ld	a5,32(s0)
    e881cf0e:	000a3703          	ld	a4,0(s4)
    e881cf12:	00e78463          	beq	a5,a4,e881cf1a <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xa2>
    e881cf16:	01579c63          	bne	a5,s5,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
                SameDomainName(rr2->resrec.name, additional->resrec.name))
    e881cf1a:	748c                	ld	a1,40(s1)
    e881cf1c:	7408                	ld	a0,40(s0)
    e881cf1e:	92cf60ef          	jal	ra,e881304a <SameDomainName>
                ResourceRecordIsValidInterfaceAnswer(rr2, InterfaceID) &&
    e881cf22:	c511                	beqz	a0,e881cf2e <AddRRSetAdditionalsToResponseList.isra.21.part.22+0xb6>
                AddRecordToResponseList(nrpp, rr2, rr);
    e881cf24:	864e                	mv	a2,s3
    e881cf26:	85a2                	mv	a1,s0
    e881cf28:	854a                	mv	a0,s2
    e881cf2a:	d6dff0ef          	jal	ra,e881cc96 <AddRecordToResponseList>
        for (rr2 = m->ResourceRecords; rr2; rr2 = rr2->next)
    e881cf2e:	6000                	ld	s0,0(s0)
    e881cf30:	b7ad                	j	e881ce9a <AddRRSetAdditionalsToResponseList.isra.21.part.22+0x22>

00000000e881cf32 <ExpectingUnicastResponseForQuestion.isra.23>:
mDNSlocal DNSQuestion *ExpectingUnicastResponseForQuestion(const mDNS *const m, const mDNSIPPort port, const mDNSOpaque16 id, const DNSQuestion *const question, mDNSBool tcp)
    e881cf32:	7139                	addi	sp,sp,-64
    e881cf34:	fa91540b          	sdd	s0,s1,(sp),1,4
            q->qtype                  == question->qtype     &&
    e881cf38:	54fd                	li	s1,-1
mDNSlocal DNSQuestion *ExpectingUnicastResponseForQuestion(const mDNS *const m, const mDNSIPPort port, const mDNSOpaque16 id, const DNSQuestion *const question, mDNSBool tcp)
    e881cf3a:	fd31590b          	sdd	s2,s3,(sp),2,4
    e881cf3e:	f852                	sd	s4,48(sp)
    e881cf40:	fc06                	sd	ra,56(sp)
    for (q = m->Questions; q; q=q->next)
    e881cf42:	842a                	mv	s0,a0
        if (mDNSSameIPPort(tcp ? q->tcpSrcPort : q->LocalSocket->port, port)     &&
    e881cf44:	3c05b90b          	extu	s2,a1,15,0
    e881cf48:	3c06398b          	extu	s3,a2,15,0
            q->qtype                  == question->qtype     &&
    e881cf4c:	1482                	slli	s1,s1,0x20
            SameDomainName(&q->qname, &question->qname))
    e881cf4e:	21468a13          	addi	s4,a3,532 # 120214 <memcmp-0xe86dfdec>
    for (q = m->Questions; q; q=q->next)
    e881cf52:	c429                	beqz	s0,e881cf9c <ExpectingUnicastResponseForQuestion.isra.23+0x6a>
        if (!tcp && !q->LocalSocket) continue;
    e881cf54:	e711                	bnez	a4,e881cf60 <ExpectingUnicastResponseForQuestion.isra.23+0x2e>
    e881cf56:	16043783          	ld	a5,352(s0)
    e881cf5a:	ebb1                	bnez	a5,e881cfae <ExpectingUnicastResponseForQuestion.isra.23+0x7c>
    for (q = m->Questions; q; q=q->next)
    e881cf5c:	6000                	ld	s0,0(s0)
    e881cf5e:	bfd5                	j	e881cf52 <ExpectingUnicastResponseForQuestion.isra.23+0x20>
        if (mDNSSameIPPort(tcp ? q->tcpSrcPort : q->LocalSocket->port, port)     &&
    e881cf60:	1b045783          	lhu	a5,432(s0)
    e881cf64:	fef91ce3          	bne	s2,a5,e881cf5c <ExpectingUnicastResponseForQuestion.isra.23+0x2a>
    e881cf68:	21245783          	lhu	a5,530(s0)
    e881cf6c:	ff3798e3          	bne	a5,s3,e881cf5c <ExpectingUnicastResponseForQuestion.isra.23+0x2a>
            q->qtype                  == question->qtype     &&
    e881cf70:	31043583          	ld	a1,784(s0)
    e881cf74:	3106b783          	ld	a5,784(a3)
    e881cf78:	8de5                	and	a1,a1,s1
    e881cf7a:	8fe5                	and	a5,a5,s1
    e881cf7c:	fef590e3          	bne	a1,a5,e881cf5c <ExpectingUnicastResponseForQuestion.isra.23+0x2a>
            q->qclass                 == question->qclass    &&
    e881cf80:	4410                	lw	a2,8(s0)
    e881cf82:	469c                	lw	a5,8(a3)
    e881cf84:	fcf61ce3          	bne	a2,a5,e881cf5c <ExpectingUnicastResponseForQuestion.isra.23+0x2a>
            SameDomainName(&q->qname, &question->qname))
    e881cf88:	85d2                	mv	a1,s4
    e881cf8a:	21440513          	addi	a0,s0,532
    e881cf8e:	e43a                	sd	a4,8(sp)
    e881cf90:	e036                	sd	a3,0(sp)
    e881cf92:	8b8f60ef          	jal	ra,e881304a <SameDomainName>
            q->qnamehash              == question->qnamehash &&
    e881cf96:	f8e1468b          	ldd	a3,a4,(sp),0,4
    e881cf9a:	d169                	beqz	a0,e881cf5c <ExpectingUnicastResponseForQuestion.isra.23+0x2a>
}
    e881cf9c:	8522                	mv	a0,s0
    e881cf9e:	70e2                	ld	ra,56(sp)
    e881cfa0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e881cfa4:	7a42                	ld	s4,48(sp)
    e881cfa6:	fd31490b          	ldd	s2,s3,(sp),2,4
    e881cfaa:	6121                	addi	sp,sp,64
    e881cfac:	8082                	ret
        if (mDNSSameIPPort(tcp ? q->tcpSrcPort : q->LocalSocket->port, port)     &&
    e881cfae:	0007d783          	lhu	a5,0(a5)
    e881cfb2:	bf4d                	j	e881cf64 <ExpectingUnicastResponseForQuestion.isra.23+0x32>

00000000e881cfb4 <mDNSCoreReceiveNoDNSSECAnswers>:
{
    e881cfb4:	c2010113          	addi	sp,sp,-992
    e881cfb8:	3c813823          	sd	s0,976(sp)
    e881cfbc:	3d213023          	sd	s2,960(sp)
    e881cfc0:	3b313c23          	sd	s3,952(sp)
    e881cfc4:	3b413823          	sd	s4,944(sp)
    e881cfc8:	3b513423          	sd	s5,936(sp)
    e881cfcc:	39713c23          	sd	s7,920(sp)
    e881cfd0:	39813823          	sd	s8,912(sp)
    e881cfd4:	39913423          	sd	s9,904(sp)
    e881cfd8:	39a13023          	sd	s10,896(sp)
    e881cfdc:	3c113c23          	sd	ra,984(sp)
    e881cfe0:	3c913423          	sd	s1,968(sp)
    e881cfe4:	3b613023          	sd	s6,928(sp)
    e881cfe8:	37b13c23          	sd	s11,888(sp)
    e881cfec:	842a                	mv	s0,a0
    e881cfee:	89ae                	mv	s3,a1
    e881cff0:	8ab2                	mv	s5,a2
    e881cff2:	00e11323          	sh	a4,6(sp)
    e881cff6:	e43e                	sd	a5,8(sp)
    const mDNSu8 *ptr = response->data;
    e881cff8:	00c58913          	addi	s2,a1,12
    for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e881cffc:	4a01                	li	s4,0
        if (ptr && (qptr = ExpectingUnicastResponseForQuestion(m, dstport, response->h.id, &pktq, !dstaddr)) &&
    e881cffe:	0016bb93          	seqz	s7,a3
                        LogMsg("mDNSCoreReceiveNoDNSSECAnswers: ERROR!! qptr %##s (%s) Duplicate question not ValidatingResponse", q->qname.c, DNSTypeName(q->qtype));
    e881d002:	0008bc17          	auipc	s8,0x8b
    e881d006:	29ec0c13          	addi	s8,s8,670 # e88a82a0 <hexValues.12413+0x2f0>
                        LogInfo("mDNSCoreReceiveNoDNSSECAnswers: qptr %##s (%s) Duplicate question found", q->qname.c, DNSTypeName(q->qtype));
    e881d00a:	000b8c97          	auipc	s9,0xb8
    e881d00e:	a6ac8c93          	addi	s9,s9,-1430 # e88d4a74 <mDNS_LoggingEnabled>
    e881d012:	0008bd17          	auipc	s10,0x8b
    e881d016:	246d0d13          	addi	s10,s10,582 # e88a8258 <hexValues.12413+0x2a8>
    for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e881d01a:	0049d783          	lhu	a5,4(s3)
    e881d01e:	00fa5663          	bge	s4,a5,e881d02a <mDNSCoreReceiveNoDNSSECAnswers+0x76>
    e881d022:	00090463          	beqz	s2,e881d02a <mDNSCoreReceiveNoDNSSECAnswers+0x76>
    e881d026:	03596f63          	bltu	s2,s5,e881d064 <mDNSCoreReceiveNoDNSSECAnswers+0xb0>
}
    e881d02a:	3d813083          	ld	ra,984(sp)
    e881d02e:	3d013403          	ld	s0,976(sp)
    e881d032:	3c813483          	ld	s1,968(sp)
    e881d036:	3c013903          	ld	s2,960(sp)
    e881d03a:	3b813983          	ld	s3,952(sp)
    e881d03e:	3b013a03          	ld	s4,944(sp)
    e881d042:	3a813a83          	ld	s5,936(sp)
    e881d046:	3a013b03          	ld	s6,928(sp)
    e881d04a:	39813b83          	ld	s7,920(sp)
    e881d04e:	39013c03          	ld	s8,912(sp)
    e881d052:	38813c83          	ld	s9,904(sp)
    e881d056:	38013d03          	ld	s10,896(sp)
    e881d05a:	37813d83          	ld	s11,888(sp)
    e881d05e:	3e010113          	addi	sp,sp,992
    e881d062:	8082                	ret
        ptr = getQuestion(response, ptr, end, InterfaceID, &pktq);
    e881d064:	66a2                	ld	a3,8(sp)
    e881d066:	85ca                	mv	a1,s2
    e881d068:	0838                	addi	a4,sp,24
    e881d06a:	8656                	mv	a2,s5
    e881d06c:	854e                	mv	a0,s3
    e881d06e:	fcef80ef          	jal	ra,e881583c <getQuestion>
    e881d072:	892a                	mv	s2,a0
        if (ptr && (qptr = ExpectingUnicastResponseForQuestion(m, dstport, response->h.id, &pktq, !dstaddr)) &&
    e881d074:	c545                	beqz	a0,e881d11c <mDNSCoreReceiveNoDNSSECAnswers+0x168>
    e881d076:	0009d603          	lhu	a2,0(s3)
    e881d07a:	00615583          	lhu	a1,6(sp)
    e881d07e:	2b843503          	ld	a0,696(s0)
    e881d082:	875e                	mv	a4,s7
    e881d084:	0834                	addi	a3,sp,24
    e881d086:	eadff0ef          	jal	ra,e881cf32 <ExpectingUnicastResponseForQuestion.isra.23>
    e881d08a:	84aa                	mv	s1,a0
    e881d08c:	c941                	beqz	a0,e881d11c <mDNSCoreReceiveNoDNSSECAnswers+0x168>
    e881d08e:	14a54783          	lbu	a5,330(a0)
    e881d092:	c7c9                	beqz	a5,e881d11c <mDNSCoreReceiveNoDNSSECAnswers+0x168>
            if (qptr->DuplicateOf)
    e881d094:	693c                	ld	a5,80(a0)
    e881d096:	cf99                	beqz	a5,e881d0b4 <mDNSCoreReceiveNoDNSSECAnswers+0x100>
                LogMsg("mDNSCoreReceiveNoDNSSECAnswers: ERROR!! qptr %##s (%s) Duplicate question matching response", qptr->qname.c, DNSTypeName(qptr->qtype));
    e881d098:	31455503          	lhu	a0,788(a0)
    e881d09c:	bc5f80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d0a0:	86aa                	mv	a3,a0
    e881d0a2:	21448613          	addi	a2,s1,532
    e881d0a6:	0008b597          	auipc	a1,0x8b
    e881d0aa:	15258593          	addi	a1,a1,338 # e88a81f8 <hexValues.12413+0x248>
    e881d0ae:	4501                	li	a0,0
    e881d0b0:	3fc120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            mDNS_DropLockBeforeCallback();      // Allow client (and us) to legally make mDNS API calls
    e881d0b4:	585c                	lw	a5,52(s0)
    e881d0b6:	5814                	lw	a3,48(s0)
    e881d0b8:	0017871b          	addiw	a4,a5,1
    e881d0bc:	d858                	sw	a4,52(s0)
    e881d0be:	00d70d63          	beq	a4,a3,e881d0d8 <mDNSCoreReceiveNoDNSSECAnswers+0x124>
    e881d0c2:	0008b617          	auipc	a2,0x8b
    e881d0c6:	c7e60613          	addi	a2,a2,-898 # e88a7d40 <__func__.11514>
    e881d0ca:	00087597          	auipc	a1,0x87
    e881d0ce:	c9e58593          	addi	a1,a1,-866 # e88a3d68 <end.8789+0x6c0>
    e881d0d2:	4501                	li	a0,0
    e881d0d4:	3d8120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            for (q = qptr->next ; q && q != m->NewQuestions; q = next)
    e881d0d8:	0004bb03          	ld	s6,0(s1)
    e881d0dc:	000b0663          	beqz	s6,e881d0e8 <mDNSCoreReceiveNoDNSSECAnswers+0x134>
    e881d0e0:	2c043703          	ld	a4,704(s0)
    e881d0e4:	03671e63          	bne	a4,s6,e881d120 <mDNSCoreReceiveNoDNSSECAnswers+0x16c>
            if (qptr->QuestionCallback)
    e881d0e8:	3484b783          	ld	a5,840(s1)
    e881d0ec:	c791                	beqz	a5,e881d0f8 <mDNSCoreReceiveNoDNSSECAnswers+0x144>
                qptr->QuestionCallback(m, qptr, mDNSNULL, QC_nodnssec);
    e881d0ee:	4695                	li	a3,5
    e881d0f0:	4601                	li	a2,0
    e881d0f2:	85a6                	mv	a1,s1
    e881d0f4:	8522                	mv	a0,s0
    e881d0f6:	9782                	jalr	a5
            mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e881d0f8:	5814                	lw	a3,48(s0)
    e881d0fa:	5858                	lw	a4,52(s0)
    e881d0fc:	00e68d63          	beq	a3,a4,e881d116 <mDNSCoreReceiveNoDNSSECAnswers+0x162>
    e881d100:	0008b617          	auipc	a2,0x8b
    e881d104:	c4060613          	addi	a2,a2,-960 # e88a7d40 <__func__.11514>
    e881d108:	00087597          	auipc	a1,0x87
    e881d10c:	ca058593          	addi	a1,a1,-864 # e88a3da8 <end.8789+0x700>
    e881d110:	4501                	li	a0,0
    e881d112:	39a120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881d116:	585c                	lw	a5,52(s0)
    e881d118:	37fd                	addiw	a5,a5,-1
    e881d11a:	d85c                	sw	a5,52(s0)
    for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e881d11c:	2a05                	addiw	s4,s4,1
    e881d11e:	bdf5                	j	e881d01a <mDNSCoreReceiveNoDNSSECAnswers+0x66>
                if (q->DuplicateOf == qptr)
    e881d120:	050b3703          	ld	a4,80(s6)
                next = q->next;
    e881d124:	000b3d83          	ld	s11,0(s6)
                if (q->DuplicateOf == qptr)
    e881d128:	02971b63          	bne	a4,s1,e881d15e <mDNSCoreReceiveNoDNSSECAnswers+0x1aa>
                    if (q->ValidatingResponse)
    e881d12c:	14ab4703          	lbu	a4,330(s6)
    e881d130:	cb0d                	beqz	a4,e881d162 <mDNSCoreReceiveNoDNSSECAnswers+0x1ae>
                        LogInfo("mDNSCoreReceiveNoDNSSECAnswers: qptr %##s (%s) Duplicate question found", q->qname.c, DNSTypeName(q->qtype));
    e881d132:	000ca703          	lw	a4,0(s9)
    e881d136:	cf01                	beqz	a4,e881d14e <mDNSCoreReceiveNoDNSSECAnswers+0x19a>
    e881d138:	314b5503          	lhu	a0,788(s6)
    e881d13c:	b25f80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d140:	86aa                	mv	a3,a0
    e881d142:	214b0613          	addi	a2,s6,532
    e881d146:	85ea                	mv	a1,s10
    e881d148:	450d                	li	a0,3
                        LogMsg("mDNSCoreReceiveNoDNSSECAnswers: ERROR!! qptr %##s (%s) Duplicate question not ValidatingResponse", q->qname.c, DNSTypeName(q->qtype));
    e881d14a:	362120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    if (q->QuestionCallback)
    e881d14e:	348b3703          	ld	a4,840(s6)
    e881d152:	c711                	beqz	a4,e881d15e <mDNSCoreReceiveNoDNSSECAnswers+0x1aa>
                        q->QuestionCallback(m, q, mDNSNULL, QC_nodnssec);
    e881d154:	4695                	li	a3,5
    e881d156:	4601                	li	a2,0
    e881d158:	85da                	mv	a1,s6
    e881d15a:	8522                	mv	a0,s0
    e881d15c:	9702                	jalr	a4
{
    e881d15e:	8b6e                	mv	s6,s11
    e881d160:	bfb5                	j	e881d0dc <mDNSCoreReceiveNoDNSSECAnswers+0x128>
                        LogMsg("mDNSCoreReceiveNoDNSSECAnswers: ERROR!! qptr %##s (%s) Duplicate question not ValidatingResponse", q->qname.c, DNSTypeName(q->qtype));
    e881d162:	314b5503          	lhu	a0,788(s6)
    e881d166:	afbf80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d16a:	86aa                	mv	a3,a0
    e881d16c:	214b0613          	addi	a2,s6,532
    e881d170:	85e2                	mv	a1,s8
    e881d172:	4501                	li	a0,0
    e881d174:	bfd9                	j	e881d14a <mDNSCoreReceiveNoDNSSECAnswers+0x196>

00000000e881d176 <PacketRRConflict>:
    if (!(our->resrec.RecordType & kDNSRecordTypeUniqueMask)) return(mDNSfalse);
    e881d176:	0085c783          	lbu	a5,8(a1)
    e881d17a:	0327f793          	andi	a5,a5,50
    e881d17e:	e399                	bnez	a5,e881d184 <PacketRRConflict+0xe>
    e881d180:	4501                	li	a0,0
}
    e881d182:	8082                	ret
    if (our->DependentOn || MatchDependentOn(m, pktrr, our)) return(mDNSfalse);
    e881d184:	6dbc                	ld	a5,88(a1)
    e881d186:	ffed                	bnez	a5,e881d180 <PacketRRConflict+0xa>
    for (r1 = m->ResourceRecords; r1; r1=r1->next)
    e881d188:	678d                	lui	a5,0x3
{
    e881d18a:	7139                	addi	sp,sp,-64
    for (r1 = m->ResourceRecords; r1; r1=r1->next)
    e881d18c:	97aa                	add	a5,a5,a0
{
    e881d18e:	e422                	sd	s0,8(sp)
    e881d190:	ec4a                	sd	s2,24(sp)
    e881d192:	f04e                	sd	s3,32(sp)
    e881d194:	f452                	sd	s4,40(sp)
    e881d196:	f856                	sd	s5,48(sp)
    e881d198:	fc06                	sd	ra,56(sp)
    e881d19a:	e826                	sd	s1,16(sp)
        if (IdenticalResourceRecord(&r1->resrec, &pktrr->resrec))
    e881d19c:	5a7d                	li	s4,-1
    for (r1 = m->ResourceRecords; r1; r1=r1->next)
    e881d19e:	1b87b483          	ld	s1,440(a5) # 31b8 <memcmp-0xe87fce48>
        if (IdenticalResourceRecord(&r1->resrec, &pktrr->resrec))
    e881d1a2:	1a02                	slli	s4,s4,0x20
    e881d1a4:	8432                	mv	s0,a2
    e881d1a6:	892e                	mv	s2,a1
    e881d1a8:	89aa                	mv	s3,a0
    e881d1aa:	010a5a13          	srli	s4,s4,0x10
    e881d1ae:	ffff6a97          	auipc	s5,0xffff6
    e881d1b2:	e9ca8a93          	addi	s5,s5,-356 # e881304a <SameDomainName>
    for (r1 = m->ResourceRecords; r1; r1=r1->next)
    e881d1b6:	ec9d                	bnez	s1,e881d1f4 <PacketRRConflict+0x7e>
    for (r1 = m->DuplicateRecords; r1; r1=r1->next)
    e881d1b8:	678d                	lui	a5,0x3
    e881d1ba:	97ce                	add	a5,a5,s3
        if (IdenticalResourceRecord(&r1->resrec, &pktrr->resrec))
    e881d1bc:	5a7d                	li	s4,-1
    for (r1 = m->DuplicateRecords; r1; r1=r1->next)
    e881d1be:	1c07b483          	ld	s1,448(a5) # 31c0 <memcmp-0xe87fce40>
        if (IdenticalResourceRecord(&r1->resrec, &pktrr->resrec))
    e881d1c2:	1a02                	slli	s4,s4,0x20
    e881d1c4:	010a5a13          	srli	s4,s4,0x10
    e881d1c8:	ffff6a97          	auipc	s5,0xffff6
    e881d1cc:	e82a8a93          	addi	s5,s5,-382 # e881304a <SameDomainName>
    for (r1 = m->DuplicateRecords; r1; r1=r1->next)
    e881d1d0:	e8c1                	bnez	s1,e881d260 <PacketRRConflict+0xea>
        const AuthRecord *pktset = FindRRSet(m, pktrr);
    e881d1d2:	650d                	lui	a0,0x3
    e881d1d4:	99aa                	add	s3,s3,a0
        const AuthRecord *ourset = our->RRSet ? our->RRSet : our;
    e881d1d6:	06093a03          	ld	s4,96(s2)
        const AuthRecord *pktset = FindRRSet(m, pktrr);
    e881d1da:	1b89b483          	ld	s1,440(s3)
        if (IdenticalResourceRecord(&rr->resrec, &pktrr->resrec))
    e881d1de:	59fd                	li	s3,-1
    e881d1e0:	1982                	slli	s3,s3,0x20
        const AuthRecord *ourset = our->RRSet ? our->RRSet : our;
    e881d1e2:	41491a0b          	mveqz	s4,s2,s4
        if (IdenticalResourceRecord(&rr->resrec, &pktrr->resrec))
    e881d1e6:	0109d993          	srli	s3,s3,0x10
    e881d1ea:	ffff6a97          	auipc	s5,0xffff6
    e881d1ee:	e60a8a93          	addi	s5,s5,-416 # e881304a <SameDomainName>
    e881d1f2:	a0e9                	j	e881d2bc <PacketRRConflict+0x146>
        if (IdenticalResourceRecord(&r1->resrec, &pktrr->resrec))
    e881d1f4:	6498                	ld	a4,8(s1)
    e881d1f6:	641c                	ld	a5,8(s0)
    e881d1f8:	01477733          	and	a4,a4,s4
    e881d1fc:	0147f7b3          	and	a5,a5,s4
    e881d200:	00f70463          	beq	a4,a5,e881d208 <PacketRRConflict+0x92>
    for (r1 = m->ResourceRecords; r1; r1=r1->next)
    e881d204:	6084                	ld	s1,0(s1)
    e881d206:	bf45                	j	e881d1b6 <PacketRRConflict+0x40>
        if (IdenticalResourceRecord(&r1->resrec, &pktrr->resrec))
    e881d208:	4c98                	lw	a4,24(s1)
    e881d20a:	4c1c                	lw	a5,24(s0)
    e881d20c:	fef71ce3          	bne	a4,a5,e881d204 <PacketRRConflict+0x8e>
    e881d210:	0144d703          	lhu	a4,20(s1)
    e881d214:	01445783          	lhu	a5,20(s0)
    e881d218:	fef716e3          	bne	a4,a5,e881d204 <PacketRRConflict+0x8e>
    e881d21c:	4cd8                	lw	a4,28(s1)
    e881d21e:	4c5c                	lw	a5,28(s0)
    e881d220:	fef712e3          	bne	a4,a5,e881d204 <PacketRRConflict+0x8e>
    e881d224:	780c                	ld	a1,48(s0)
    e881d226:	8656                	mv	a2,s5
    e881d228:	00848513          	addi	a0,s1,8
    e881d22c:	0591                	addi	a1,a1,4
    e881d22e:	dddf60ef          	jal	ra,e881400a <SameRDataBody>
    e881d232:	d969                	beqz	a0,e881d204 <PacketRRConflict+0x8e>
    e881d234:	740c                	ld	a1,40(s0)
    e881d236:	7488                	ld	a0,40(s1)
    e881d238:	e13f50ef          	jal	ra,e881304a <SameDomainName>
    e881d23c:	87a6                	mv	a5,s1
    e881d23e:	d179                	beqz	a0,e881d204 <PacketRRConflict+0x8e>
            while (r2->DependentOn) r2 = r2->DependentOn;
    e881d240:	6fb8                	ld	a4,88(a5)
    e881d242:	ef09                	bnez	a4,e881d25c <PacketRRConflict+0xe6>
            if (r2 == master) return(mDNStrue);
    e881d244:	fcf910e3          	bne	s2,a5,e881d204 <PacketRRConflict+0x8e>
    if (!(our->resrec.RecordType & kDNSRecordTypeUniqueMask)) return(mDNSfalse);
    e881d248:	4501                	li	a0,0
}
    e881d24a:	70e2                	ld	ra,56(sp)
    e881d24c:	6422                	ld	s0,8(sp)
    e881d24e:	64c2                	ld	s1,16(sp)
    e881d250:	6962                	ld	s2,24(sp)
    e881d252:	7982                	ld	s3,32(sp)
    e881d254:	7a22                	ld	s4,40(sp)
    e881d256:	7ac2                	ld	s5,48(sp)
    e881d258:	6121                	addi	sp,sp,64
    e881d25a:	8082                	ret
            while (r2->DependentOn) r2 = r2->DependentOn;
    e881d25c:	87ba                	mv	a5,a4
    e881d25e:	b7cd                	j	e881d240 <PacketRRConflict+0xca>
        if (IdenticalResourceRecord(&r1->resrec, &pktrr->resrec))
    e881d260:	6498                	ld	a4,8(s1)
    e881d262:	641c                	ld	a5,8(s0)
    e881d264:	01477733          	and	a4,a4,s4
    e881d268:	0147f7b3          	and	a5,a5,s4
    e881d26c:	00f70463          	beq	a4,a5,e881d274 <PacketRRConflict+0xfe>
    for (r1 = m->DuplicateRecords; r1; r1=r1->next)
    e881d270:	6084                	ld	s1,0(s1)
    e881d272:	bfb9                	j	e881d1d0 <PacketRRConflict+0x5a>
        if (IdenticalResourceRecord(&r1->resrec, &pktrr->resrec))
    e881d274:	4c98                	lw	a4,24(s1)
    e881d276:	4c1c                	lw	a5,24(s0)
    e881d278:	fef71ce3          	bne	a4,a5,e881d270 <PacketRRConflict+0xfa>
    e881d27c:	0144d703          	lhu	a4,20(s1)
    e881d280:	01445783          	lhu	a5,20(s0)
    e881d284:	fef716e3          	bne	a4,a5,e881d270 <PacketRRConflict+0xfa>
    e881d288:	4cd8                	lw	a4,28(s1)
    e881d28a:	4c5c                	lw	a5,28(s0)
    e881d28c:	fef712e3          	bne	a4,a5,e881d270 <PacketRRConflict+0xfa>
    e881d290:	780c                	ld	a1,48(s0)
    e881d292:	8656                	mv	a2,s5
    e881d294:	00848513          	addi	a0,s1,8
    e881d298:	0591                	addi	a1,a1,4
    e881d29a:	d71f60ef          	jal	ra,e881400a <SameRDataBody>
    e881d29e:	d969                	beqz	a0,e881d270 <PacketRRConflict+0xfa>
    e881d2a0:	740c                	ld	a1,40(s0)
    e881d2a2:	7488                	ld	a0,40(s1)
    e881d2a4:	da7f50ef          	jal	ra,e881304a <SameDomainName>
    e881d2a8:	87a6                	mv	a5,s1
    e881d2aa:	d179                	beqz	a0,e881d270 <PacketRRConflict+0xfa>
            while (r2->DependentOn) r2 = r2->DependentOn;
    e881d2ac:	6fb8                	ld	a4,88(a5)
    e881d2ae:	e701                	bnez	a4,e881d2b6 <PacketRRConflict+0x140>
            if (r2 == master) return(mDNStrue);
    e881d2b0:	fcf910e3          	bne	s2,a5,e881d270 <PacketRRConflict+0xfa>
    e881d2b4:	bf51                	j	e881d248 <PacketRRConflict+0xd2>
            while (r2->DependentOn) r2 = r2->DependentOn;
    e881d2b6:	87ba                	mv	a5,a4
    e881d2b8:	bfd5                	j	e881d2ac <PacketRRConflict+0x136>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e881d2ba:	6084                	ld	s1,0(s1)
    e881d2bc:	c8a9                	beqz	s1,e881d30e <PacketRRConflict+0x198>
        if (IdenticalResourceRecord(&rr->resrec, &pktrr->resrec))
    e881d2be:	6498                	ld	a4,8(s1)
    e881d2c0:	641c                	ld	a5,8(s0)
    e881d2c2:	01377733          	and	a4,a4,s3
    e881d2c6:	0137f7b3          	and	a5,a5,s3
    e881d2ca:	fef718e3          	bne	a4,a5,e881d2ba <PacketRRConflict+0x144>
    e881d2ce:	4c98                	lw	a4,24(s1)
    e881d2d0:	4c1c                	lw	a5,24(s0)
    e881d2d2:	fef714e3          	bne	a4,a5,e881d2ba <PacketRRConflict+0x144>
    e881d2d6:	0144d703          	lhu	a4,20(s1)
    e881d2da:	01445783          	lhu	a5,20(s0)
    e881d2de:	fcf71ee3          	bne	a4,a5,e881d2ba <PacketRRConflict+0x144>
    e881d2e2:	4cd8                	lw	a4,28(s1)
    e881d2e4:	4c5c                	lw	a5,28(s0)
    e881d2e6:	fcf71ae3          	bne	a4,a5,e881d2ba <PacketRRConflict+0x144>
    e881d2ea:	780c                	ld	a1,48(s0)
    e881d2ec:	8656                	mv	a2,s5
    e881d2ee:	00848513          	addi	a0,s1,8
    e881d2f2:	0591                	addi	a1,a1,4
    e881d2f4:	d17f60ef          	jal	ra,e881400a <SameRDataBody>
    e881d2f8:	d169                	beqz	a0,e881d2ba <PacketRRConflict+0x144>
    e881d2fa:	740c                	ld	a1,40(s0)
    e881d2fc:	7488                	ld	a0,40(s1)
    e881d2fe:	d4df50ef          	jal	ra,e881304a <SameDomainName>
    e881d302:	dd45                	beqz	a0,e881d2ba <PacketRRConflict+0x144>
            while (rr->RRSet && rr != rr->RRSet) rr = rr->RRSet;
    e881d304:	87a6                	mv	a5,s1
    e881d306:	70a4                	ld	s1,96(s1)
    e881d308:	cc81                	beqz	s1,e881d320 <PacketRRConflict+0x1aa>
    e881d30a:	fe979de3          	bne	a5,s1,e881d304 <PacketRRConflict+0x18e>
        if (pktset == ourset) return(mDNSfalse);
    e881d30e:	f29a0de3          	beq	s4,s1,e881d248 <PacketRRConflict+0xd2>
        if (our->WakeUp.HMAC.l[0] && pktset) return(mDNSfalse);
    e881d312:	07e92783          	lw	a5,126(s2)
    return(mDNStrue);
    e881d316:	4505                	li	a0,1
        if (our->WakeUp.HMAC.l[0] && pktset) return(mDNSfalse);
    e881d318:	db8d                	beqz	a5,e881d24a <PacketRRConflict+0xd4>
    if (!(our->resrec.RecordType & kDNSRecordTypeUniqueMask)) return(mDNSfalse);
    e881d31a:	0014b513          	seqz	a0,s1
    e881d31e:	b735                	j	e881d24a <PacketRRConflict+0xd4>
            while (rr->RRSet && rr != rr->RRSet) rr = rr->RRSet;
    e881d320:	84be                	mv	s1,a5
    e881d322:	b7f5                	j	e881d30e <PacketRRConflict+0x198>

00000000e881d324 <ShouldSuppressUnicastQuery>:
{
    e881d324:	7179                	addi	sp,sp,-48
    e881d326:	e422                	sd	s0,8(sp)
    e881d328:	e826                	sd	s1,16(sp)
    e881d32a:	f04e                	sd	s3,32(sp)
    e881d32c:	f406                	sd	ra,40(sp)
    e881d32e:	ec4a                	sd	s2,24(sp)
    if (q->qtype != kDNSType_A && q->qtype != kDNSType_AAAA)
    e881d330:	3145d783          	lhu	a5,788(a1)
    e881d334:	4685                	li	a3,1
{
    e881d336:	89ae                	mv	s3,a1
    if (q->qtype != kDNSType_A && q->qtype != kDNSType_AAAA)
    e881d338:	0007871b          	sext.w	a4,a5
{
    e881d33c:	8432                	mv	s0,a2
    e881d33e:	000b7497          	auipc	s1,0xb7
    e881d342:	73648493          	addi	s1,s1,1846 # e88d4a74 <mDNS_LoggingEnabled>
    if (q->qtype != kDNSType_A && q->qtype != kDNSType_AAAA)
    e881d346:	02d70e63          	beq	a4,a3,e881d382 <ShouldSuppressUnicastQuery+0x5e>
    e881d34a:	46f1                	li	a3,28
    e881d34c:	02d70b63          	beq	a4,a3,e881d382 <ShouldSuppressUnicastQuery+0x5e>
        LogInfo("ShouldSuppressUnicastQuery: Query not suppressed for %##s, qtype %s, not A/AAAA type", q->qname.c, DNSTypeName(q->qtype));
    e881d350:	4098                	lw	a4,0(s1)
    e881d352:	eb11                	bnez	a4,e881d366 <ShouldSuppressUnicastQuery+0x42>
        return mDNSfalse;
    e881d354:	4481                	li	s1,0
}
    e881d356:	70a2                	ld	ra,40(sp)
    e881d358:	6422                	ld	s0,8(sp)
    e881d35a:	8526                	mv	a0,s1
    e881d35c:	6962                	ld	s2,24(sp)
    e881d35e:	64c2                	ld	s1,16(sp)
    e881d360:	7982                	ld	s3,32(sp)
    e881d362:	6145                	addi	sp,sp,48
    e881d364:	8082                	ret
        LogInfo("ShouldSuppressUnicastQuery: Query not suppressed for %##s, qtype %s, not A/AAAA type", q->qname.c, DNSTypeName(q->qtype));
    e881d366:	853e                	mv	a0,a5
    e881d368:	8f9f80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d36c:	86aa                	mv	a3,a0
    e881d36e:	21498613          	addi	a2,s3,532
    e881d372:	0008a597          	auipc	a1,0x8a
    e881d376:	1be58593          	addi	a1,a1,446 # e88a7530 <end.8789+0x3e88>
    e881d37a:	450d                	li	a0,3
    e881d37c:	130120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881d380:	bfd1                	j	e881d354 <ShouldSuppressUnicastQuery+0x30>
    AuthInfo = GetAuthInfoForName_internal(m, &q->qname);
    e881d382:	21498913          	addi	s2,s3,532
    e881d386:	85ca                	mv	a1,s2
    e881d388:	104150ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    if (AuthInfo && !AuthInfo->deltime && AuthInfo->AutoTunnel)
    e881d38c:	c11d                	beqz	a0,e881d3b2 <ShouldSuppressUnicastQuery+0x8e>
    e881d38e:	451c                	lw	a5,8(a0)
    e881d390:	e38d                	bnez	a5,e881d3b2 <ShouldSuppressUnicastQuery+0x8e>
    e881d392:	00c54783          	lbu	a5,12(a0) # 300c <memcmp-0xe87fcff4>
    e881d396:	cf91                	beqz	a5,e881d3b2 <ShouldSuppressUnicastQuery+0x8e>
        LogInfo("ShouldSuppressUnicastQuery: Query not suppressed for %##s, qtype %s, Private Domain", q->qname.c, DNSTypeName(q->qtype));
    e881d398:	409c                	lw	a5,0(s1)
    e881d39a:	dfcd                	beqz	a5,e881d354 <ShouldSuppressUnicastQuery+0x30>
    e881d39c:	3149d503          	lhu	a0,788(s3)
    e881d3a0:	8c1f80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d3a4:	86aa                	mv	a3,a0
    e881d3a6:	864a                	mv	a2,s2
    e881d3a8:	0008a597          	auipc	a1,0x8a
    e881d3ac:	1e058593          	addi	a1,a1,480 # e88a7588 <end.8789+0x3ee0>
    e881d3b0:	b7e9                	j	e881d37a <ShouldSuppressUnicastQuery+0x56>
    if (!d)
    e881d3b2:	409c                	lw	a5,0(s1)
    e881d3b4:	e00d                	bnez	s0,e881d3d6 <ShouldSuppressUnicastQuery+0xb2>
        return mDNStrue;
    e881d3b6:	4485                	li	s1,1
        LogInfo("ShouldSuppressUnicastQuery: Query suppressed for %##s, qtype %s, as the DNS server is NULL", q->qname.c, DNSTypeName(q->qtype));
    e881d3b8:	dfd9                	beqz	a5,e881d356 <ShouldSuppressUnicastQuery+0x32>
    e881d3ba:	3149d503          	lhu	a0,788(s3)
    e881d3be:	8a3f80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d3c2:	86aa                	mv	a3,a0
    e881d3c4:	864a                	mv	a2,s2
    e881d3c6:	0008a597          	auipc	a1,0x8a
    e881d3ca:	21a58593          	addi	a1,a1,538 # e88a75e0 <end.8789+0x3f38>
    e881d3ce:	450d                	li	a0,3
    e881d3d0:	0dc120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881d3d4:	b749                	j	e881d356 <ShouldSuppressUnicastQuery+0x32>
    if ((q->qtype == kDNSType_A) && (d->req_A))
    e881d3d6:	3149d503          	lhu	a0,788(s3)
    e881d3da:	4685                	li	a3,1
    e881d3dc:	0005071b          	sext.w	a4,a0
    e881d3e0:	02d71f63          	bne	a4,a3,e881d41e <ShouldSuppressUnicastQuery+0xfa>
    e881d3e4:	14044703          	lbu	a4,320(s0)
    e881d3e8:	cb25                	beqz	a4,e881d458 <ShouldSuppressUnicastQuery+0x134>
        LogInfo("ShouldSuppressUnicastQuery: Query not suppressed for %##s, qtype %s, DNSServer %##s %#a:%d allows A queries", q->qname.c,
    e881d3ea:	d7ad                	beqz	a5,e881d354 <ShouldSuppressUnicastQuery+0x30>
    e881d3ec:	4505                	li	a0,1
    e881d3ee:	873f80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d3f2:	86aa                	mv	a3,a0
    e881d3f4:	02844783          	lbu	a5,40(s0)
    e881d3f8:	02944803          	lbu	a6,41(s0)
    e881d3fc:	03040713          	addi	a4,s0,48
    e881d400:	0087979b          	slliw	a5,a5,0x8
    e881d404:	0107e833          	or	a6,a5,a6
    e881d408:	864a                	mv	a2,s2
    e881d40a:	01440793          	addi	a5,s0,20
    e881d40e:	0008a597          	auipc	a1,0x8a
    e881d412:	23258593          	addi	a1,a1,562 # e88a7640 <end.8789+0x3f98>
        LogInfo("ShouldSuppressUnicastQuery: Query not suppressed for %##s, qtype %s, DNSServer %##s %#a:%d allows AAAA queries", q->qname.c,
    e881d416:	450d                	li	a0,3
    e881d418:	094120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881d41c:	bf25                	j	e881d354 <ShouldSuppressUnicastQuery+0x30>
    if ((q->qtype == kDNSType_AAAA) && (d->req_AAAA))
    e881d41e:	46f1                	li	a3,28
    e881d420:	02d71c63          	bne	a4,a3,e881d458 <ShouldSuppressUnicastQuery+0x134>
    e881d424:	14144703          	lbu	a4,321(s0)
    e881d428:	cb05                	beqz	a4,e881d458 <ShouldSuppressUnicastQuery+0x134>
        LogInfo("ShouldSuppressUnicastQuery: Query not suppressed for %##s, qtype %s, DNSServer %##s %#a:%d allows AAAA queries", q->qname.c,
    e881d42a:	d78d                	beqz	a5,e881d354 <ShouldSuppressUnicastQuery+0x30>
    e881d42c:	4571                	li	a0,28
    e881d42e:	833f80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d432:	86aa                	mv	a3,a0
    e881d434:	02844783          	lbu	a5,40(s0)
    e881d438:	02944803          	lbu	a6,41(s0)
    e881d43c:	03040713          	addi	a4,s0,48
    e881d440:	0087979b          	slliw	a5,a5,0x8
    e881d444:	0107e833          	or	a6,a5,a6
    e881d448:	864a                	mv	a2,s2
    e881d44a:	01440793          	addi	a5,s0,20
    e881d44e:	0008a597          	auipc	a1,0x8a
    e881d452:	26258593          	addi	a1,a1,610 # e88a76b0 <end.8789+0x4008>
    e881d456:	b7c1                	j	e881d416 <ShouldSuppressUnicastQuery+0xf2>
        return mDNStrue;
    e881d458:	4485                	li	s1,1
    LogInfo("ShouldSuppressUnicastQuery: Query suppressed for %##s, qtype %s, since DNS Configuration does not allow (req_A is %s and req_AAAA is %s)",
    e881d45a:	ee078ee3          	beqz	a5,e881d356 <ShouldSuppressUnicastQuery+0x32>
    e881d45e:	803f80ef          	jal	ra,e8815c60 <DNSTypeName>
    e881d462:	86aa                	mv	a3,a0
    e881d464:	14044783          	lbu	a5,320(s0)
    e881d468:	0008a717          	auipc	a4,0x8a
    e881d46c:	0b870713          	addi	a4,a4,184 # e88a7520 <end.8789+0x3e78>
    e881d470:	e789                	bnez	a5,e881d47a <ShouldSuppressUnicastQuery+0x156>
    e881d472:	0008a717          	auipc	a4,0x8a
    e881d476:	0b670713          	addi	a4,a4,182 # e88a7528 <end.8789+0x3e80>
    e881d47a:	14144603          	lbu	a2,321(s0)
    e881d47e:	0008a797          	auipc	a5,0x8a
    e881d482:	0a278793          	addi	a5,a5,162 # e88a7520 <end.8789+0x3e78>
    e881d486:	e609                	bnez	a2,e881d490 <ShouldSuppressUnicastQuery+0x16c>
    e881d488:	0008a797          	auipc	a5,0x8a
    e881d48c:	0a078793          	addi	a5,a5,160 # e88a7528 <end.8789+0x3e80>
    e881d490:	864a                	mv	a2,s2
    e881d492:	0008a597          	auipc	a1,0x8a
    e881d496:	28e58593          	addi	a1,a1,654 # e88a7720 <end.8789+0x4078>
    e881d49a:	450d                	li	a0,3
    e881d49c:	010120ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return mDNStrue;
    e881d4a0:	4485                	li	s1,1
    e881d4a2:	bd55                	j	e881d356 <ShouldSuppressUnicastQuery+0x32>

00000000e881d4a4 <mDNS_ExtractKeepaliveInfo.isra.30>:
mDNSlocal void mDNS_ExtractKeepaliveInfo(AuthRecord *ar, mDNSu32 *timeout, mDNSAddr *laddr, mDNSAddr *raddr, mDNSEthAddr *eth, mDNSu32 *seq,
    e881d4a4:	7175                	addi	sp,sp,-144
    e881d4a6:	e122                	sd	s0,128(sp)
    e881d4a8:	644a                	ld	s0,144(sp)
    e881d4aa:	e506                	sd	ra,136(sp)
    e881d4ac:	fca6                	sd	s1,120(sp)
    e881d4ae:	e422                	sd	s0,8(sp)
    e881d4b0:	646a                	ld	s0,152(sp)
    e881d4b2:	f8ca                	sd	s2,112(sp)
    e881d4b4:	f4ce                	sd	s3,104(sp)
    e881d4b6:	f0d2                	sd	s4,96(sp)
    e881d4b8:	ecd6                	sd	s5,88(sp)
    e881d4ba:	e8da                	sd	s6,80(sp)
    e881d4bc:	e4de                	sd	s7,72(sp)
    e881d4be:	e0e2                	sd	s8,64(sp)
    e881d4c0:	fc66                	sd	s9,56(sp)
    e881d4c2:	f86a                	sd	s10,48(sp)
    e881d4c4:	f46e                	sd	s11,40(sp)
    if (ar->resrec.rrtype != kDNSType_NULL)
    e881d4c6:	00a55e03          	lhu	t3,10(a0)
mDNSlocal void mDNS_ExtractKeepaliveInfo(AuthRecord *ar, mDNSu32 *timeout, mDNSAddr *laddr, mDNSAddr *raddr, mDNSEthAddr *eth, mDNSu32 *seq,
    e881d4ca:	e822                	sd	s0,16(sp)
    if (ar->resrec.rrtype != kDNSType_NULL)
    e881d4cc:	4329                	li	t1,10
    e881d4ce:	046e1a63          	bne	t3,t1,e881d522 <mDNS_ExtractKeepaliveInfo.isra.30+0x7e>
    if (mDNS_KeepaliveRecord(&ar->resrec))
    e881d4d2:	02853e03          	ld	t3,40(a0)
    e881d4d6:	4301                	li	t1,0
    e881d4d8:	000e4e83          	lbu	t4,0(t3)
    e881d4dc:	000e8463          	beqz	t4,e881d4e4 <mDNS_ExtractKeepaliveInfo.isra.30+0x40>
    e881d4e0:	001e8313          	addi	t1,t4,1 # 2001 <memcmp-0xe87fdfff>
    e881d4e4:	ec2e                	sd	a1,24(sp)
    e881d4e6:	842a                	mv	s0,a0
    e881d4e8:	0008d597          	auipc	a1,0x8d
    e881d4ec:	b6858593          	addi	a1,a1,-1176 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    e881d4f0:	006e0533          	add	a0,t3,t1
    e881d4f4:	8bc6                	mv	s7,a7
    e881d4f6:	8b42                	mv	s6,a6
    e881d4f8:	8abe                	mv	s5,a5
    e881d4fa:	8a3a                	mv	s4,a4
    e881d4fc:	84b6                	mv	s1,a3
    e881d4fe:	8932                	mv	s2,a2
    e881d500:	ae7f50ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e881d504:	cd19                	beqz	a0,e881d522 <mDNS_ExtractKeepaliveInfo.isra.30+0x7e>
        mDNSu8 *ptr = &ar->resrec.rdata->u.txt.c[1];
    e881d506:	7814                	ld	a3,48(s0)
        mDNSu8 *limit = ptr + len - 1; // Exclude the first byte that is the length
    e881d508:	01445403          	lhu	s0,20(s0)
        if (*ptr < '0' || *ptr > '9')
    e881d50c:	4ca5                	li	s9,9
        mDNSu8 *ptr = &ar->resrec.rdata->u.txt.c[1];
    e881d50e:	0695                	addi	a3,a3,5
        mDNSu8 *limit = ptr + len - 1; // Exclude the first byte that is the length
    e881d510:	147d                	addi	s0,s0,-1
    e881d512:	9436                	add	s0,s0,a3
        val = val * 10 + *ptr - '0';
    e881d514:	4d29                	li	s10,10
            if (*ptr == 0 && ptr == limit - 1)
    e881d516:	fff40d93          	addi	s11,s0,-1
                ptr = GetValueForIPv6Addr(ptr, limit, &raddr->ip.v6);
    e881d51a:	00448c13          	addi	s8,s1,4
        while (ptr < limit)
    e881d51e:	0286e163          	bltu	a3,s0,e881d540 <mDNS_ExtractKeepaliveInfo.isra.30+0x9c>
}
    e881d522:	60aa                	ld	ra,136(sp)
    e881d524:	640a                	ld	s0,128(sp)
    e881d526:	74e6                	ld	s1,120(sp)
    e881d528:	7946                	ld	s2,112(sp)
    e881d52a:	79a6                	ld	s3,104(sp)
    e881d52c:	7a06                	ld	s4,96(sp)
    e881d52e:	6ae6                	ld	s5,88(sp)
    e881d530:	6b46                	ld	s6,80(sp)
    e881d532:	6ba6                	ld	s7,72(sp)
    e881d534:	6c06                	ld	s8,64(sp)
    e881d536:	7ce2                	ld	s9,56(sp)
    e881d538:	7d42                	ld	s10,48(sp)
    e881d53a:	7da2                	ld	s11,40(sp)
    e881d53c:	6149                	addi	sp,sp,144
    e881d53e:	8082                	ret
            mDNSu8 param = *ptr;
    e881d540:	89b6                	mv	s3,a3
    e881d542:	9829c78b          	lbuia	a5,(s3),2,0
            if (param == 'h')
    e881d546:	06800713          	li	a4,104
    e881d54a:	00e79f63          	bne	a5,a4,e881d568 <mDNS_ExtractKeepaliveInfo.isra.30+0xc4>
                laddr->type = mDNSAddrType_IPv4;
    e881d54e:	864a                	mv	a2,s2
    e881d550:	4791                	li	a5,4
    e881d552:	5846578b          	swia	a5,(a2),4,0
                ptr = GetValueForIPv4Addr(ptr, limit, &raddr->ip.v4);
    e881d556:	85a2                	mv	a1,s0
    e881d558:	854e                	mv	a0,s3
    e881d55a:	cf6fe0ef          	jal	ra,e881ba50 <GetValueForIPv4Addr>
                ptr = GetValueForMACAddr(ptr, limit, eth);
    e881d55e:	89aa                	mv	s3,a0
            if (!ptr) { LogMsg("mDNS_ExtractKeepaliveInfo: Cannot parse\n"); return; }
    e881d560:	c53d                	beqz	a0,e881d5ce <mDNS_ExtractKeepaliveInfo.isra.30+0x12a>
            ptr++; // skip the space
    e881d562:	00198693          	addi	a3,s3,1
    e881d566:	bf65                	j	e881d51e <mDNS_ExtractKeepaliveInfo.isra.30+0x7a>
            else if (param == 'd')
    e881d568:	06400713          	li	a4,100
    e881d56c:	00e79663          	bne	a5,a4,e881d578 <mDNS_ExtractKeepaliveInfo.isra.30+0xd4>
                raddr->type = mDNSAddrType_IPv4;
    e881d570:	4791                	li	a5,4
    e881d572:	c09c                	sw	a5,0(s1)
                ptr = GetValueForIPv4Addr(ptr, limit, &raddr->ip.v4);
    e881d574:	8662                	mv	a2,s8
    e881d576:	b7c5                	j	e881d556 <mDNS_ExtractKeepaliveInfo.isra.30+0xb2>
            else if (param == 'H')
    e881d578:	04800713          	li	a4,72
    e881d57c:	00e79b63          	bne	a5,a4,e881d592 <mDNS_ExtractKeepaliveInfo.isra.30+0xee>
                laddr->type = mDNSAddrType_IPv6;
    e881d580:	864a                	mv	a2,s2
    e881d582:	4799                	li	a5,6
    e881d584:	5846578b          	swia	a5,(a2),4,0
                ptr = GetValueForIPv6Addr(ptr, limit, &raddr->ip.v6);
    e881d588:	85a2                	mv	a1,s0
    e881d58a:	854e                	mv	a0,s3
    e881d58c:	e20fe0ef          	jal	ra,e881bbac <GetValueForIPv6Addr>
    e881d590:	b7f9                	j	e881d55e <mDNS_ExtractKeepaliveInfo.isra.30+0xba>
            else if (param == 'D')
    e881d592:	04400713          	li	a4,68
    e881d596:	00e79663          	bne	a5,a4,e881d5a2 <mDNS_ExtractKeepaliveInfo.isra.30+0xfe>
                raddr->type = mDNSAddrType_IPv6;
    e881d59a:	4799                	li	a5,6
    e881d59c:	c09c                	sw	a5,0(s1)
                ptr = GetValueForIPv6Addr(ptr, limit, &raddr->ip.v6);
    e881d59e:	8662                	mv	a2,s8
    e881d5a0:	b7e5                	j	e881d588 <mDNS_ExtractKeepaliveInfo.isra.30+0xe4>
            else if (param == 'm')
    e881d5a2:	06d00713          	li	a4,109
    val = 0;
    e881d5a6:	4501                	li	a0,0
            else if (param == 'm')
    e881d5a8:	04e79d63          	bne	a5,a4,e881d602 <mDNS_ExtractKeepaliveInfo.isra.30+0x15e>
                ptr = GetValueForMACAddr(ptr, limit, eth);
    e881d5ac:	8652                	mv	a2,s4
    e881d5ae:	85a2                	mv	a1,s0
    e881d5b0:	854e                	mv	a0,s3
    e881d5b2:	d46fe0ef          	jal	ra,e881baf8 <GetValueForMACAddr>
    e881d5b6:	b765                	j	e881d55e <mDNS_ExtractKeepaliveInfo.isra.30+0xba>
            else { LogMsg("GetValueForKeepalive: *ptr %d, ptr %p, limit %p, ptr +1 %d", *ptr, ptr, limit, *(ptr + 1)); return mDNSNULL; }
    e881d5b8:	0019c783          	lbu	a5,1(s3)
    e881d5bc:	8722                	mv	a4,s0
    e881d5be:	86ce                	mv	a3,s3
    e881d5c0:	0008d597          	auipc	a1,0x8d
    e881d5c4:	aa058593          	addi	a1,a1,-1376 # e88aa060 <mDNS_DomainTypeNames+0x6b0>
    e881d5c8:	4501                	li	a0,0
    e881d5ca:	6e3110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e881d5ce:	640a                	ld	s0,128(sp)
    e881d5d0:	60aa                	ld	ra,136(sp)
    e881d5d2:	74e6                	ld	s1,120(sp)
    e881d5d4:	7946                	ld	s2,112(sp)
    e881d5d6:	79a6                	ld	s3,104(sp)
    e881d5d8:	7a06                	ld	s4,96(sp)
    e881d5da:	6ae6                	ld	s5,88(sp)
    e881d5dc:	6b46                	ld	s6,80(sp)
    e881d5de:	6ba6                	ld	s7,72(sp)
    e881d5e0:	6c06                	ld	s8,64(sp)
    e881d5e2:	7ce2                	ld	s9,56(sp)
    e881d5e4:	7d42                	ld	s10,48(sp)
    e881d5e6:	7da2                	ld	s11,40(sp)
            if (!ptr) { LogMsg("mDNS_ExtractKeepaliveInfo: Cannot parse\n"); return; }
    e881d5e8:	0008d597          	auipc	a1,0x8d
    e881d5ec:	ab858593          	addi	a1,a1,-1352 # e88aa0a0 <mDNS_DomainTypeNames+0x6f0>
    e881d5f0:	4501                	li	a0,0
}
    e881d5f2:	6149                	addi	sp,sp,144
            if (!ptr) { LogMsg("mDNS_ExtractKeepaliveInfo: Cannot parse\n"); return; }
    e881d5f4:	6b91106f          	j	e882f4ac <LogMsgWithLevel>
        val = val * 10 + *ptr - '0';
    e881d5f8:	24ad160b          	mulaw	a2,s10,a0
    for ( ; ptr < limit && *ptr != ' '; ptr++)
    e881d5fc:	0985                	addi	s3,s3,1
        val = val * 10 + *ptr - '0';
    e881d5fe:	fd06051b          	addiw	a0,a2,-48
    for ( ; ptr < limit && *ptr != ' '; ptr++)
    e881d602:	0289f263          	bgeu	s3,s0,e881d626 <mDNS_ExtractKeepaliveInfo.isra.30+0x182>
    e881d606:	0009c603          	lbu	a2,0(s3)
    e881d60a:	02000713          	li	a4,32
    e881d60e:	00e60c63          	beq	a2,a4,e881d626 <mDNS_ExtractKeepaliveInfo.isra.30+0x182>
        if (*ptr < '0' || *ptr > '9')
    e881d612:	fd06071b          	addiw	a4,a2,-48
    e881d616:	0ff77713          	andi	a4,a4,255
    e881d61a:	fcecffe3          	bgeu	s9,a4,e881d5f8 <mDNS_ExtractKeepaliveInfo.isra.30+0x154>
            if (*ptr == 0 && ptr == limit - 1)
    e881d61e:	fe49                	bnez	a2,e881d5b8 <mDNS_ExtractKeepaliveInfo.isra.30+0x114>
    e881d620:	f9b99ce3          	bne	s3,s11,e881d5b8 <mDNS_ExtractKeepaliveInfo.isra.30+0x114>
                return ptr + 1;
    e881d624:	89a2                	mv	s3,s0
            if (!ptr) { LogMsg("mDNS_ExtractKeepaliveInfo: Cannot parse\n"); return; }
    e881d626:	fa0984e3          	beqz	s3,e881d5ce <mDNS_ExtractKeepaliveInfo.isra.30+0x12a>
            switch (param)
    e881d62a:	06900713          	li	a4,105
    e881d62e:	04f76663          	bltu	a4,a5,e881d67a <mDNS_ExtractKeepaliveInfo.isra.30+0x1d6>
    e881d632:	06800713          	li	a4,104
    e881d636:	f2e7f6e3          	bgeu	a5,a4,e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
    e881d63a:	06100713          	li	a4,97
    e881d63e:	0ae78163          	beq	a5,a4,e881d6e0 <mDNS_ExtractKeepaliveInfo.isra.30+0x23c>
    e881d642:	02f76463          	bltu	a4,a5,e881d66a <mDNS_ExtractKeepaliveInfo.isra.30+0x1c6>
    e881d646:	04400713          	li	a4,68
    e881d64a:	f0e78ce3          	beq	a5,a4,e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
    e881d64e:	04800713          	li	a4,72
    e881d652:	f0e788e3          	beq	a5,a4,e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
                LogMsg("mDNS_ExtractKeepaliveInfo: unknown value %c\n", param);
    e881d656:	863e                	mv	a2,a5
    e881d658:	0008d597          	auipc	a1,0x8d
    e881d65c:	a7858593          	addi	a1,a1,-1416 # e88aa0d0 <mDNS_DomainTypeNames+0x720>
    e881d660:	4501                	li	a0,0
    e881d662:	64b110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881d666:	89a2                	mv	s3,s0
    e881d668:	bded                	j	e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
            switch (param)
    e881d66a:	f9d7871b          	addiw	a4,a5,-99
    e881d66e:	0ff77713          	andi	a4,a4,255
    e881d672:	4605                	li	a2,1
    e881d674:	fee661e3          	bltu	a2,a4,e881d656 <mDNS_ExtractKeepaliveInfo.isra.30+0x1b2>
    e881d678:	b5ed                	j	e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
    e881d67a:	07300713          	li	a4,115
    e881d67e:	04e78c63          	beq	a5,a4,e881d6d6 <mDNS_ExtractKeepaliveInfo.isra.30+0x232>
    e881d682:	02f76263          	bltu	a4,a5,e881d6a6 <mDNS_ExtractKeepaliveInfo.isra.30+0x202>
    e881d686:	06c00713          	li	a4,108
    e881d68a:	02e78f63          	beq	a5,a4,e881d6c8 <mDNS_ExtractKeepaliveInfo.isra.30+0x224>
    e881d68e:	07200713          	li	a4,114
    e881d692:	fce792e3          	bne	a5,a4,e881d656 <mDNS_ExtractKeepaliveInfo.isra.30+0x1b2>
                rport->NotAnInteger = swap16((mDNSu16)value);
    e881d696:	3c05350b          	extu	a0,a0,15,0
    e881d69a:	811f50ef          	jal	ra,e8812eaa <swap16>
    e881d69e:	67a2                	ld	a5,8(sp)
                *win = swap16((mDNSu16)value);
    e881d6a0:	00a79023          	sh	a0,0(a5)
                break;
    e881d6a4:	bd7d                	j	e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
            switch (param)
    e881d6a6:	07400713          	li	a4,116
    e881d6aa:	00e78c63          	beq	a5,a4,e881d6c2 <mDNS_ExtractKeepaliveInfo.isra.30+0x21e>
    e881d6ae:	07700713          	li	a4,119
    e881d6b2:	fae792e3          	bne	a5,a4,e881d656 <mDNS_ExtractKeepaliveInfo.isra.30+0x1b2>
                *win = swap16((mDNSu16)value);
    e881d6b6:	3c05350b          	extu	a0,a0,15,0
    e881d6ba:	ff0f50ef          	jal	ra,e8812eaa <swap16>
    e881d6be:	67c2                	ld	a5,16(sp)
    e881d6c0:	b7c5                	j	e881d6a0 <mDNS_ExtractKeepaliveInfo.isra.30+0x1fc>
                *timeout = value;
    e881d6c2:	67e2                	ld	a5,24(sp)
    e881d6c4:	c388                	sw	a0,0(a5)
                break;
    e881d6c6:	bd71                	j	e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
                lport->NotAnInteger = swap16((mDNSu16)value);
    e881d6c8:	3c05350b          	extu	a0,a0,15,0
    e881d6cc:	fdef50ef          	jal	ra,e8812eaa <swap16>
    e881d6d0:	00ab9023          	sh	a0,0(s7)
                break;
    e881d6d4:	b579                	j	e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
                *seq = swap32(value);
    e881d6d6:	fcef50ef          	jal	ra,e8812ea4 <swap32>
    e881d6da:	00aaa023          	sw	a0,0(s5)
                break;
    e881d6de:	b551                	j	e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>
                *ack = swap32(value);
    e881d6e0:	fc4f50ef          	jal	ra,e8812ea4 <swap32>
    e881d6e4:	00ab2023          	sw	a0,0(s6)
                break;
    e881d6e8:	bdad                	j	e881d562 <mDNS_ExtractKeepaliveInfo.isra.30+0xbe>

00000000e881d6ea <getKeepaliveRaddr>:
    mDNSAddr     laddr = zeroAddr;
    e881d6ea:	00086797          	auipc	a5,0x86
    e881d6ee:	e9678793          	addi	a5,a5,-362 # e88a3580 <zeroAddr>
    e881d6f2:	6398                	ld	a4,0(a5)
{
    e881d6f4:	7159                	addi	sp,sp,-112
    e881d6f6:	f486                	sd	ra,104(sp)
    mDNSAddr     laddr = zeroAddr;
    e881d6f8:	fc3a                	sd	a4,56(sp)
    e881d6fa:	6798                	ld	a4,8(a5)
    e881d6fc:	4b9c                	lw	a5,16(a5)
{
    e881d6fe:	f0a2                	sd	s0,96(sp)
    mDNSAddr     laddr = zeroAddr;
    e881d700:	e0ba                	sd	a4,64(sp)
    e881d702:	c4be                	sw	a5,72(sp)
    mDNSEthAddr  eth = zeroEthAddr;
    e881d704:	00086797          	auipc	a5,0x86
    e881d708:	e9478793          	addi	a5,a5,-364 # e88a3598 <zeroEthAddr>
    e881d70c:	4398                	lw	a4,0(a5)
    e881d70e:	0047d783          	lhu	a5,4(a5)
{
    e881d712:	eca6                	sd	s1,88(sp)
    e881d714:	e8ca                	sd	s2,80(sp)
    mDNSEthAddr  eth = zeroEthAddr;
    e881d716:	02f11a23          	sh	a5,52(sp)
    mDNSIPPort   lport = zeroIPPort;
    e881d71a:	00086797          	auipc	a5,0x86
    e881d71e:	e8e78793          	addi	a5,a5,-370 # e88a35a8 <zeroIPPort>
    e881d722:	0007d783          	lhu	a5,0(a5)
    mDNSEthAddr  eth = zeroEthAddr;
    e881d726:	d83a                	sw	a4,48(sp)
    if (mDNS_KeepaliveRecord(&rr->resrec))
    e881d728:	00a5d703          	lhu	a4,10(a1)
    mDNSIPPort   lport = zeroIPPort;
    e881d72c:	00f11c23          	sh	a5,24(sp)
    mDNSIPPort   rport = zeroIPPort;
    e881d730:	02f11023          	sh	a5,32(sp)
    mDNSu32      timeout = 0;
    e881d734:	d202                	sw	zero,36(sp)
    mDNSu32      seq = 0;
    e881d736:	d402                	sw	zero,40(sp)
    mDNSu32      ack = 0;
    e881d738:	d602                	sw	zero,44(sp)
    mDNSu16      win = 0;
    e881d73a:	02011123          	sh	zero,34(sp)
    if (mDNS_KeepaliveRecord(&rr->resrec))
    e881d73e:	47a9                	li	a5,10
    e881d740:	0af71163          	bne	a4,a5,e881d7e2 <getKeepaliveRaddr+0xf8>
    e881d744:	7598                	ld	a4,40(a1)
    e881d746:	4781                	li	a5,0
    e881d748:	00074683          	lbu	a3,0(a4)
    e881d74c:	c299                	beqz	a3,e881d752 <getKeepaliveRaddr+0x68>
    e881d74e:	00168793          	addi	a5,a3,1
    e881d752:	892e                	mv	s2,a1
    e881d754:	84aa                	mv	s1,a0
    e881d756:	0008d597          	auipc	a1,0x8d
    e881d75a:	8fa58593          	addi	a1,a1,-1798 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    e881d75e:	00f70533          	add	a0,a4,a5
    e881d762:	8432                	mv	s0,a2
    e881d764:	883f50ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e881d768:	cd2d                	beqz	a0,e881d7e2 <getKeepaliveRaddr+0xf8>
        mDNS_ExtractKeepaliveInfo(rr, &timeout, &laddr, raddr, &eth, &seq, &ack, &lport, &rport, &win);
    e881d76a:	02210793          	addi	a5,sp,34
    e881d76e:	e43e                	sd	a5,8(sp)
    e881d770:	101c                	addi	a5,sp,32
    e881d772:	e03e                	sd	a5,0(sp)
    e881d774:	01810893          	addi	a7,sp,24
    e881d778:	103c                	addi	a5,sp,40
    e881d77a:	02c10813          	addi	a6,sp,44
    e881d77e:	1818                	addi	a4,sp,48
    e881d780:	86a2                	mv	a3,s0
    e881d782:	1830                	addi	a2,sp,56
    e881d784:	104c                	addi	a1,sp,36
    e881d786:	854a                	mv	a0,s2
    e881d788:	d1dff0ef          	jal	ra,e881d4a4 <mDNS_ExtractKeepaliveInfo.isra.30>
        if (!timeout || mDNSAddressIsZero(&laddr) || mDNSAddressIsZero(raddr) || mDNSIPPortIsZero(lport) || mDNSIPPortIsZero(rport))
    e881d78c:	5792                	lw	a5,36(sp)
    e881d78e:	c39d                	beqz	a5,e881d7b4 <getKeepaliveRaddr+0xca>
    e881d790:	57e2                	lw	a5,56(sp)
    e881d792:	4711                	li	a4,4
    e881d794:	04e79d63          	bne	a5,a4,e881d7ee <getKeepaliveRaddr+0x104>
    e881d798:	57f2                	lw	a5,60(sp)
    e881d79a:	cf89                	beqz	a5,e881d7b4 <getKeepaliveRaddr+0xca>
    e881d79c:	401c                	lw	a5,0(s0)
    e881d79e:	4711                	li	a4,4
    e881d7a0:	06e79363          	bne	a5,a4,e881d806 <getKeepaliveRaddr+0x11c>
    e881d7a4:	405c                	lw	a5,4(s0)
    e881d7a6:	c799                	beqz	a5,e881d7b4 <getKeepaliveRaddr+0xca>
    e881d7a8:	01815783          	lhu	a5,24(sp)
    e881d7ac:	c781                	beqz	a5,e881d7b4 <getKeepaliveRaddr+0xca>
    e881d7ae:	02015783          	lhu	a5,32(sp)
    e881d7b2:	eb85                	bnez	a5,e881d7e2 <getKeepaliveRaddr+0xf8>
            LogMsg("getKeepaliveRaddr: not a valid record %s for keepalive %#a:%d %#a:%d", ARDisplayString(m, rr), &laddr, lport.NotAnInteger, raddr, rport.NotAnInteger);
    e881d7b4:	03093583          	ld	a1,48(s2)
    e881d7b8:	03b48613          	addi	a2,s1,59
    e881d7bc:	00890513          	addi	a0,s2,8
    e881d7c0:	0591                	addi	a1,a1,4
    e881d7c2:	a52f90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881d7c6:	862a                	mv	a2,a0
    e881d7c8:	02015803          	lhu	a6,32(sp)
    e881d7cc:	01815703          	lhu	a4,24(sp)
    e881d7d0:	87a2                	mv	a5,s0
    e881d7d2:	1834                	addi	a3,sp,56
    e881d7d4:	0008a597          	auipc	a1,0x8a
    e881d7d8:	79458593          	addi	a1,a1,1940 # e88a7f68 <__func__.9897+0x20>
    e881d7dc:	4501                	li	a0,0
    e881d7de:	4cf110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e881d7e2:	70a6                	ld	ra,104(sp)
    e881d7e4:	7406                	ld	s0,96(sp)
    e881d7e6:	64e6                	ld	s1,88(sp)
    e881d7e8:	6946                	ld	s2,80(sp)
    e881d7ea:	6165                	addi	sp,sp,112
    e881d7ec:	8082                	ret
        if (!timeout || mDNSAddressIsZero(&laddr) || mDNSAddressIsZero(raddr) || mDNSIPPortIsZero(lport) || mDNSIPPortIsZero(rport))
    e881d7ee:	4719                	li	a4,6
    e881d7f0:	fae796e3          	bne	a5,a4,e881d79c <getKeepaliveRaddr+0xb2>
    e881d7f4:	4706                	lw	a4,64(sp)
    e881d7f6:	57f2                	lw	a5,60(sp)
    e881d7f8:	8fd9                	or	a5,a5,a4
    e881d7fa:	4716                	lw	a4,68(sp)
    e881d7fc:	8fd9                	or	a5,a5,a4
    e881d7fe:	4726                	lw	a4,72(sp)
    e881d800:	8fd9                	or	a5,a5,a4
    e881d802:	2781                	sext.w	a5,a5
    e881d804:	bf59                	j	e881d79a <getKeepaliveRaddr+0xb0>
    e881d806:	4719                	li	a4,6
    e881d808:	fae790e3          	bne	a5,a4,e881d7a8 <getKeepaliveRaddr+0xbe>
    e881d80c:	4418                	lw	a4,8(s0)
    e881d80e:	405c                	lw	a5,4(s0)
    e881d810:	8fd9                	or	a5,a5,a4
    e881d812:	4458                	lw	a4,12(s0)
    e881d814:	8fd9                	or	a5,a5,a4
    e881d816:	4818                	lw	a4,16(s0)
    e881d818:	8fd9                	or	a5,a5,a4
    e881d81a:	2781                	sext.w	a5,a5
    e881d81c:	b769                	j	e881d7a6 <getKeepaliveRaddr+0xbc>

00000000e881d81e <mDNS_SendKeepalives>:
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881d81e:	678d                	lui	a5,0x3
{
    e881d820:	7175                	addi	sp,sp,-144
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881d822:	97aa                	add	a5,a5,a0
{
    e881d824:	fca6                	sd	s1,120(sp)
    e881d826:	f4ce                	sd	s3,104(sp)
    e881d828:	f0d2                	sd	s4,96(sp)
    e881d82a:	e506                	sd	ra,136(sp)
    e881d82c:	e122                	sd	s0,128(sp)
    e881d82e:	f8ca                	sd	s2,112(sp)
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881d830:	1b87b903          	ld	s2,440(a5) # 31b8 <memcmp-0xe87fce48>
{
    e881d834:	89aa                	mv	s3,a0
        laddr = raddr = zeroAddr;
    e881d836:	00086a17          	auipc	s4,0x86
    e881d83a:	d4aa0a13          	addi	s4,s4,-694 # e88a3580 <zeroAddr>
        lport = rport = zeroIPPort;
    e881d83e:	00086497          	auipc	s1,0x86
    e881d842:	d6a48493          	addi	s1,s1,-662 # e88a35a8 <zeroIPPort>
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881d846:	00091a63          	bnez	s2,e881d85a <mDNS_SendKeepalives+0x3c>
}
    e881d84a:	60aa                	ld	ra,136(sp)
    e881d84c:	640a                	ld	s0,128(sp)
    e881d84e:	74e6                	ld	s1,120(sp)
    e881d850:	7946                	ld	s2,112(sp)
    e881d852:	79a6                	ld	s3,104(sp)
    e881d854:	7a06                	ld	s4,96(sp)
    e881d856:	6149                	addi	sp,sp,144
    e881d858:	8082                	ret
        laddr = raddr = zeroAddr;
    e881d85a:	010a2783          	lw	a5,16(s4)
    e881d85e:	000a3683          	ld	a3,0(s4)
    e881d862:	008a3703          	ld	a4,8(s4)
    e881d866:	ccbe                	sw	a5,88(sp)
    e881d868:	c0be                	sw	a5,64(sp)
        lport = rport = zeroIPPort;
    e881d86a:	0004d783          	lhu	a5,0(s1)
        timeout = seq = ack = 0;
    e881d86e:	d202                	sw	zero,36(sp)
    e881d870:	d002                	sw	zero,32(sp)
        lport = rport = zeroIPPort;
    e881d872:	00f11c23          	sh	a5,24(sp)
    e881d876:	00f11823          	sh	a5,16(sp)
        if (!ar->WakeUp.HMAC.l[0]) continue;
    e881d87a:	07e92783          	lw	a5,126(s2)
        timeout = seq = ack = 0;
    e881d87e:	ce02                	sw	zero,28(sp)
        win = 0;
    e881d880:	00011d23          	sh	zero,26(sp)
        laddr = raddr = zeroAddr;
    e881d884:	e4b6                	sd	a3,72(sp)
    e881d886:	e8ba                	sd	a4,80(sp)
    e881d888:	fee1568b          	sdd	a3,a4,(sp),3,4
        if (!ar->WakeUp.HMAC.l[0]) continue;
    e881d88c:	cfe9                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
        mDNS_ExtractKeepaliveInfo(ar, &timeout, &laddr, &raddr, &eth, &seq, &ack, &lport, &rport, &win);
    e881d88e:	01a10793          	addi	a5,sp,26
    e881d892:	0820                	addi	s0,sp,24
    e881d894:	e43e                	sd	a5,8(sp)
    e881d896:	e022                	sd	s0,0(sp)
    e881d898:	101c                	addi	a5,sp,32
    e881d89a:	01010893          	addi	a7,sp,16
    e881d89e:	02410813          	addi	a6,sp,36
    e881d8a2:	1038                	addi	a4,sp,40
    e881d8a4:	00b4                	addi	a3,sp,72
    e881d8a6:	1810                	addi	a2,sp,48
    e881d8a8:	086c                	addi	a1,sp,28
    e881d8aa:	854a                	mv	a0,s2
    e881d8ac:	bf9ff0ef          	jal	ra,e881d4a4 <mDNS_ExtractKeepaliveInfo.isra.30>
        if (!timeout || mDNSAddressIsZero(&laddr) || mDNSAddressIsZero(&raddr) || !seq || !ack || mDNSIPPortIsZero(lport) || mDNSIPPortIsZero(rport) || !win)
    e881d8b0:	47f2                	lw	a5,28(sp)
    e881d8b2:	cbd5                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
    e881d8b4:	57c2                	lw	a5,48(sp)
    e881d8b6:	4711                	li	a4,4
    e881d8b8:	0ae79a63          	bne	a5,a4,e881d96c <mDNS_SendKeepalives+0x14e>
    e881d8bc:	57d2                	lw	a5,52(sp)
    e881d8be:	c7c5                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
    e881d8c0:	47a6                	lw	a5,72(sp)
    e881d8c2:	4711                	li	a4,4
    e881d8c4:	0ce79063          	bne	a5,a4,e881d984 <mDNS_SendKeepalives+0x166>
    e881d8c8:	47b6                	lw	a5,76(sp)
    e881d8ca:	cfd1                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
    e881d8cc:	5782                	lw	a5,32(sp)
    e881d8ce:	cfc1                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
    e881d8d0:	5792                	lw	a5,36(sp)
    e881d8d2:	cbd1                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
    e881d8d4:	01015783          	lhu	a5,16(sp)
    e881d8d8:	c7d9                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
    e881d8da:	01815783          	lhu	a5,24(sp)
    e881d8de:	c7c1                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
    e881d8e0:	01a15783          	lhu	a5,26(sp)
    e881d8e4:	c3c9                	beqz	a5,e881d966 <mDNS_SendKeepalives+0x148>
    e881d8e6:	01814783          	lbu	a5,24(sp)
    e881d8ea:	01014703          	lbu	a4,16(sp)
    e881d8ee:	01914603          	lbu	a2,25(sp)
    e881d8f2:	01114683          	lbu	a3,17(sp)
    e881d8f6:	0087979b          	slliw	a5,a5,0x8
    e881d8fa:	0087171b          	slliw	a4,a4,0x8
        LogMsg("mDNS_SendKeepalives: laddr %#a raddr %#a lport %d rport %d", &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport));
    e881d8fe:	8f55                	or	a4,a4,a3
    e881d900:	8fd1                	or	a5,a5,a2
    e881d902:	00b4                	addi	a3,sp,72
    e881d904:	1810                	addi	a2,sp,48
    e881d906:	0008d597          	auipc	a1,0x8d
    e881d90a:	1e258593          	addi	a1,a1,482 # e88aaae8 <mDNS_DomainTypeNames+0x1138>
    e881d90e:	4501                	li	a0,0
    e881d910:	39d110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!ar->KATimeExpire || (m->timenow - ar->KATimeExpire >= 0))
    e881d914:	0b092703          	lw	a4,176(s2)
    e881d918:	c711                	beqz	a4,e881d924 <mDNS_SendKeepalives+0x106>
    e881d91a:	2409a783          	lw	a5,576(s3)
    e881d91e:	9f99                	subw	a5,a5,a4
    e881d920:	0207ca63          	bltz	a5,e881d954 <mDNS_SendKeepalives+0x136>
            mDNSPlatformSendKeepalive(&laddr, &raddr, &lport, &rport, seq, ack, win);
    e881d924:	5792                	lw	a5,36(sp)
    e881d926:	5702                	lw	a4,32(sp)
    e881d928:	01a15803          	lhu	a6,26(sp)
    e881d92c:	86a2                	mv	a3,s0
    e881d92e:	0810                	addi	a2,sp,16
    e881d930:	00ac                	addi	a1,sp,72
    e881d932:	1808                	addi	a0,sp,48
    e881d934:	5ef120ef          	jal	ra,e8830722 <mDNSPlatformSendKeepalive>
            ar->KATimeExpire = NonZeroTime(m->timenow + timeout * mDNSPlatformOneSecond);
    e881d938:	000b7797          	auipc	a5,0xb7
    e881d93c:	14878793          	addi	a5,a5,328 # e88d4a80 <mDNSPlatformOneSecond>
    e881d940:	4398                	lw	a4,0(a5)
    e881d942:	46f2                	lw	a3,28(sp)
    e881d944:	2409a783          	lw	a5,576(s3)
    e881d948:	24e6978b          	mulaw	a5,a3,a4
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e881d94c:	e391                	bnez	a5,e881d950 <mDNS_SendKeepalives+0x132>
    e881d94e:	4785                	li	a5,1
    e881d950:	0af92823          	sw	a5,176(s2)
        if (m->NextScheduledKA - ar->KATimeExpire > 0)
    e881d954:	0b092703          	lw	a4,176(s2)
    e881d958:	26c9a783          	lw	a5,620(s3)
    e881d95c:	9f99                	subw	a5,a5,a4
    e881d95e:	00f05463          	blez	a5,e881d966 <mDNS_SendKeepalives+0x148>
            m->NextScheduledKA = ar->KATimeExpire;
    e881d962:	26e9a623          	sw	a4,620(s3)
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881d966:	00093903          	ld	s2,0(s2)
    e881d96a:	bdf1                	j	e881d846 <mDNS_SendKeepalives+0x28>
        if (!timeout || mDNSAddressIsZero(&laddr) || mDNSAddressIsZero(&raddr) || !seq || !ack || mDNSIPPortIsZero(lport) || mDNSIPPortIsZero(rport) || !win)
    e881d96c:	4719                	li	a4,6
    e881d96e:	f4e799e3          	bne	a5,a4,e881d8c0 <mDNS_SendKeepalives+0xa2>
    e881d972:	5762                	lw	a4,56(sp)
    e881d974:	57d2                	lw	a5,52(sp)
    e881d976:	8fd9                	or	a5,a5,a4
    e881d978:	5772                	lw	a4,60(sp)
    e881d97a:	8fd9                	or	a5,a5,a4
    e881d97c:	4706                	lw	a4,64(sp)
    e881d97e:	8fd9                	or	a5,a5,a4
    e881d980:	2781                	sext.w	a5,a5
    e881d982:	bf35                	j	e881d8be <mDNS_SendKeepalives+0xa0>
    e881d984:	4719                	li	a4,6
    e881d986:	f4e793e3          	bne	a5,a4,e881d8cc <mDNS_SendKeepalives+0xae>
    e881d98a:	4746                	lw	a4,80(sp)
    e881d98c:	47b6                	lw	a5,76(sp)
    e881d98e:	8fd9                	or	a5,a5,a4
    e881d990:	4756                	lw	a4,84(sp)
    e881d992:	8fd9                	or	a5,a5,a4
    e881d994:	4766                	lw	a4,88(sp)
    e881d996:	8fd9                	or	a5,a5,a4
    e881d998:	2781                	sext.w	a5,a5
    e881d99a:	bf05                	j	e881d8ca <mDNS_SendKeepalives+0xac>

00000000e881d99c <ReleaseAdditionalCacheRecords>:
{
    e881d99c:	7179                	addi	sp,sp,-48
    e881d99e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e881d9a2:	f052                	sd	s4,32(sp)
    e881d9a4:	f891540b          	sdd	s0,s1,(sp),0,4
    e881d9a8:	f406                	sd	ra,40(sp)
    e881d9aa:	84aa                	mv	s1,a0
    e881d9ac:	892e                	mv	s2,a1
            if (DNSSECRecordType(rr->resrec.rrtype))
    e881d9ae:	499d                	li	s3,7
    e881d9b0:	0b900a13          	li	s4,185
    while (*rp)
    e881d9b4:	00093403          	ld	s0,0(s2)
    e881d9b8:	e809                	bnez	s0,e881d9ca <ReleaseAdditionalCacheRecords+0x2e>
}
    e881d9ba:	70a2                	ld	ra,40(sp)
    e881d9bc:	f891440b          	ldd	s0,s1,(sp),0,4
    e881d9c0:	7a02                	ld	s4,32(sp)
    e881d9c2:	fb31490b          	ldd	s2,s3,(sp),1,4
    e881d9c6:	6145                	addi	sp,sp,48
    e881d9c8:	8082                	ret
        *rp = (*rp)->next;          // Cut record from list
    e881d9ca:	601c                	ld	a5,0(s0)
    e881d9cc:	00f93023          	sd	a5,0(s2)
        if (rr->resrec.rdata && rr->resrec.rdata != (RData*)&rr->smallrdatastorage)
    e881d9d0:	7808                	ld	a0,48(s0)
    e881d9d2:	c909                	beqz	a0,e881d9e4 <ReleaseAdditionalCacheRecords+0x48>
    e881d9d4:	09c40793          	addi	a5,s0,156
    e881d9d8:	00f50663          	beq	a0,a5,e881d9e4 <ReleaseAdditionalCacheRecords+0x48>
            mDNSPlatformMemFree(rr->resrec.rdata);
    e881d9dc:	0a7120ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
            rr->resrec.rdata = mDNSNULL;
    e881d9e0:	02043823          	sd	zero,48(s0)
        if (rr->resrec.name)
    e881d9e4:	7408                	ld	a0,40(s0)
    e881d9e6:	c509                	beqz	a0,e881d9f0 <ReleaseAdditionalCacheRecords+0x54>
            mDNSPlatformMemFree((void *)rr->resrec.name);
    e881d9e8:	09b120ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
            rr->resrec.name = mDNSNULL;
    e881d9ec:	02043423          	sd	zero,40(s0)
        if (!rr->resrec.InterfaceID)
    e881d9f0:	701c                	ld	a5,32(s0)
    e881d9f2:	ef85                	bnez	a5,e881da2a <ReleaseAdditionalCacheRecords+0x8e>
            m->rrcache_totalused_unicast -= rr->resrec.rdlength;
    e881d9f4:	01445703          	lhu	a4,20(s0)
    e881d9f8:	2f84a783          	lw	a5,760(s1)
    e881d9fc:	9f99                	subw	a5,a5,a4
    e881d9fe:	2ef4ac23          	sw	a5,760(s1)
            if (DNSSECRecordType(rr->resrec.rrtype))
    e881da02:	00a45783          	lhu	a5,10(s0)
    e881da06:	fd57879b          	addiw	a5,a5,-43
    e881da0a:	3c07b78b          	extu	a5,a5,15,0
    e881da0e:	00f9ee63          	bltu	s3,a5,e881da2a <ReleaseAdditionalCacheRecords+0x8e>
    e881da12:	00fa57b3          	srl	a5,s4,a5
    e881da16:	0007b78b          	extu	a5,a5,0,0
    e881da1a:	cb81                	beqz	a5,e881da2a <ReleaseAdditionalCacheRecords+0x8e>
                BumpDNSSECStats(m, kStatsActionDecrement, kStatsTypeMemoryUsage, rr->resrec.rdlength);
    e881da1c:	01445683          	lhu	a3,20(s0)
    e881da20:	4601                	li	a2,0
    e881da22:	4585                	li	a1,1
    e881da24:	8526                	mv	a0,s1
    e881da26:	0ca120ef          	jal	ra,e882faf0 <BumpDNSSECStats>
    e->next = m->rrcache_free;
    e881da2a:	3084b783          	ld	a5,776(s1)
    e881da2e:	e01c                	sd	a5,0(s0)
    m->rrcache_totalused--;
    e881da30:	2f44a783          	lw	a5,756(s1)
    m->rrcache_free = e;
    e881da34:	3084b423          	sd	s0,776(s1)
    m->rrcache_totalused--;
    e881da38:	37fd                	addiw	a5,a5,-1
    e881da3a:	2ef4aa23          	sw	a5,756(s1)
    e881da3e:	bf9d                	j	e881d9b4 <ReleaseAdditionalCacheRecords+0x18>

00000000e881da40 <ReleaseCacheGroup>:
{
    e881da40:	1101                	addi	sp,sp,-32
    e881da42:	f891540b          	sdd	s0,s1,(sp),0,4
    e881da46:	ec06                	sd	ra,24(sp)
    e881da48:	e84a                	sd	s2,16(sp)
    CacheEntity *e = (CacheEntity *)(*cp);
    e881da4a:	0005b903          	ld	s2,0(a1)
{
    e881da4e:	84aa                	mv	s1,a0
    e881da50:	842e                	mv	s0,a1
    if ((*cp)->rrcache_tail != &(*cp)->members)
    e881da52:	01893703          	ld	a4,24(s2)
    e881da56:	01090793          	addi	a5,s2,16
    e881da5a:	00f70963          	beq	a4,a5,e881da6c <ReleaseCacheGroup+0x2c>
        LogMsg("ERROR: (*cp)->members == mDNSNULL but (*cp)->rrcache_tail != &(*cp)->members)");
    e881da5e:	00088597          	auipc	a1,0x88
    e881da62:	7fa58593          	addi	a1,a1,2042 # e88a6258 <end.8789+0x2bb0>
    e881da66:	4501                	li	a0,0
    e881da68:	245110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if ((*cp)->name != (domainname*)((*cp)->namestorage)) mDNSPlatformMemFree((*cp)->name);
    e881da6c:	601c                	ld	a5,0(s0)
    e881da6e:	7388                	ld	a0,32(a5)
    e881da70:	02878793          	addi	a5,a5,40
    e881da74:	00f50463          	beq	a0,a5,e881da7c <ReleaseCacheGroup+0x3c>
    e881da78:	00b120ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    (*cp)->name = mDNSNULL;
    e881da7c:	601c                	ld	a5,0(s0)
    e881da7e:	0207b023          	sd	zero,32(a5)
    *cp = (*cp)->next;          // Cut record from list
    e881da82:	601c                	ld	a5,0(s0)
    e881da84:	639c                	ld	a5,0(a5)
    e881da86:	e01c                	sd	a5,0(s0)
    e->next = m->rrcache_free;
    e881da88:	3084b783          	ld	a5,776(s1)
    e881da8c:	00f93023          	sd	a5,0(s2)
    m->rrcache_totalused--;
    e881da90:	2f44a783          	lw	a5,756(s1)
    m->rrcache_free = e;
    e881da94:	3124b423          	sd	s2,776(s1)
}
    e881da98:	60e2                	ld	ra,24(sp)
    m->rrcache_totalused--;
    e881da9a:	37fd                	addiw	a5,a5,-1
    e881da9c:	2ef4aa23          	sw	a5,756(s1)
}
    e881daa0:	f891440b          	ldd	s0,s1,(sp),0,4
    e881daa4:	6942                	ld	s2,16(sp)
    e881daa6:	6105                	addi	sp,sp,32
    e881daa8:	8082                	ret

00000000e881daaa <GetBestServer>:
{
    e881daaa:	7171                	addi	sp,sp,-176
    e881daac:	e152                	sd	s4,128(sp)
    e881daae:	fcd6                	sd	s5,120(sp)
    e881dab0:	f4de                	sd	s7,104(sp)
    e881dab2:	f506                	sd	ra,168(sp)
    e881dab4:	f122                	sd	s0,160(sp)
    e881dab6:	ed26                	sd	s1,152(sp)
    e881dab8:	e94a                	sd	s2,144(sp)
    e881daba:	e54e                	sd	s3,136(sp)
    e881dabc:	f8da                	sd	s6,112(sp)
    e881dabe:	f0e2                	sd	s8,96(sp)
    e881dac0:	ece6                	sd	s9,88(sp)
    e881dac2:	e8ea                	sd	s10,80(sp)
    e881dac4:	e4ee                	sd	s11,72(sp)
    e881dac6:	fad1560b          	sdd	a2,a3,(sp),1,4
    e881daca:	fef1570b          	sdd	a4,a5,(sp),3,4
    e881dace:	e442                	sd	a6,8(sp)
    e881dad0:	f046                	sd	a7,32(sp)
    e881dad2:	8baa                	mv	s7,a0
    e881dad4:	8aae                	mv	s5,a1
    e881dad6:	4a01                	li	s4,0
    int bestmatchlen = -1, namecount = name ? CountLabels(name) : 0;
    e881dad8:	c589                	beqz	a1,e881dae2 <GetBestServer+0x38>
    e881dada:	852e                	mv	a0,a1
    e881dadc:	f6af50ef          	jal	ra,e8813246 <CountLabels>
    e881dae0:	8a2a                	mv	s4,a0
    bestPenaltyTime = DNSSERVER_PENALTY_TIME + 1;
    e881dae2:	000b7797          	auipc	a5,0xb7
    e881dae6:	f9e78793          	addi	a5,a5,-98 # e88d4a80 <mDNSPlatformOneSecond>
    e881daea:	439c                	lw	a5,0(a5)
    e881daec:	03c00413          	li	s0,60
    int currindex = -1;
    e881daf0:	59fd                	li	s3,-1
    bestPenaltyTime = DNSSERVER_PENALTY_TIME + 1;
    e881daf2:	02f4043b          	mulw	s0,s0,a5
    for (curr = m->DNSServers; curr; curr = curr->next)
    e881daf6:	678d                	lui	a5,0x3
    e881daf8:	97de                	add	a5,a5,s7
    e881dafa:	2007bd03          	ld	s10,512(a5) # 3200 <memcmp-0xe87fce00>
    int index = 0;
    e881dafe:	4d81                	li	s11,0
    int bestmatchlen = -1, namecount = name ? CountLabels(name) : 0;
    e881db00:	54fd                	li	s1,-1
    DNSServer *curmatch = mDNSNULL;
    e881db02:	4901                	li	s2,0
    bestPenaltyTime = DNSSERVER_PENALTY_TIME + 1;
    e881db04:	2405                	addiw	s0,s0,1
    for (curr = m->DNSServers; curr; curr = curr->next)
    e881db06:	020d1663          	bnez	s10,e881db32 <GetBestServer+0x88>
    if (selected) *selected = currindex;
    e881db0a:	67a2                	ld	a5,8(sp)
    e881db0c:	c399                	beqz	a5,e881db12 <GetBestServer+0x68>
    e881db0e:	0137a023          	sw	s3,0(a5)
}
    e881db12:	70aa                	ld	ra,168(sp)
    e881db14:	740a                	ld	s0,160(sp)
    e881db16:	854a                	mv	a0,s2
    e881db18:	64ea                	ld	s1,152(sp)
    e881db1a:	694a                	ld	s2,144(sp)
    e881db1c:	69aa                	ld	s3,136(sp)
    e881db1e:	6a0a                	ld	s4,128(sp)
    e881db20:	7ae6                	ld	s5,120(sp)
    e881db22:	7b46                	ld	s6,112(sp)
    e881db24:	7ba6                	ld	s7,104(sp)
    e881db26:	7c06                	ld	s8,96(sp)
    e881db28:	6ce6                	ld	s9,88(sp)
    e881db2a:	6d46                	ld	s10,80(sp)
    e881db2c:	6da6                	ld	s11,72(sp)
    e881db2e:	614d                	addi	sp,sp,176
    e881db30:	8082                	ret
        if (curr->flags & DNSServer_FlagDelete)
    e881db32:	02cd2703          	lw	a4,44(s10)
    e881db36:	8c6e                	mv	s8,s11
    e881db38:	8b05                	andi	a4,a4,1
    e881db3a:	e735                	bnez	a4,e881dba6 <GetBestServer+0xfc>
        if (!bit_get_opaque64(validBits, index))
    e881db3c:	4785                	li	a5,1
    e881db3e:	01b7973b          	sllw	a4,a5,s11
    e881db42:	005dd693          	srli	a3,s11,0x5
    e881db46:	181c                	addi	a5,sp,48
    e881db48:	44d7c68b          	lrw	a3,a5,a3,2
    e881db4c:	001d8c1b          	addiw	s8,s11,1
    e881db50:	8f75                	and	a4,a4,a3
    e881db52:	cb31                	beqz	a4,e881dba6 <GetBestServer+0xfc>
        currcount = CountLabels(&curr->domain);
    e881db54:	030d0c93          	addi	s9,s10,48
    e881db58:	8566                	mv	a0,s9
    e881db5a:	eecf50ef          	jal	ra,e8813246 <CountLabels>
    e881db5e:	8b2a                	mv	s6,a0
    if (server->penaltyTime != 0)
    e881db60:	130d2683          	lw	a3,304(s10)
    e881db64:	c28d                	beqz	a3,e881db86 <GetBestServer+0xdc>
        ptime = server->penaltyTime - m->timenow;
    e881db66:	240ba703          	lw	a4,576(s7)
    e881db6a:	40e6863b          	subw	a2,a3,a4
        if (ptime < 0)
    e881db6e:	04065063          	bgez	a2,e881dbae <GetBestServer+0x104>
            LogMsg("PenaltyTimeForServer: PenaltyTime negative %d, (server penaltyTime %d, timenow %d) resetting the penalty",
    e881db72:	00088597          	auipc	a1,0x88
    e881db76:	ab658593          	addi	a1,a1,-1354 # e88a5628 <end.8789+0x1f80>
    e881db7a:	4501                	li	a0,0
    e881db7c:	131110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            server->penaltyTime = 0;
    e881db80:	120d2823          	sw	zero,304(s10)
            ptime = 0;
    e881db84:	4681                	li	a3,0
        if (DNSServerMatch(curr, InterfaceID, ServiceID))
    e881db86:	6662                	ld	a2,24(sp)
    e881db88:	65c2                	ld	a1,16(sp)
    e881db8a:	856a                	mv	a0,s10
    e881db8c:	f436                	sd	a3,40(sp)
    e881db8e:	e05fd0ef          	jal	ra,e881b992 <DNSServerMatch>
    e881db92:	c911                	beqz	a0,e881dba6 <GetBestServer+0xfc>
            if (nameMatch)
    e881db94:	fcd1478b          	ldd	a5,a3,(sp),2,4
    e881db98:	ef89                	bnez	a5,e881dbb2 <GetBestServer+0x108>
            if ((bettermatch == 1) || ((bettermatch == 0) && currPenaltyTime < bestPenaltyTime))
    e881db9a:	0086d663          	bge	a3,s0,e881dba6 <GetBestServer+0xfc>
                currindex = index;
    e881db9e:	89ee                	mv	s3,s11
    e881dba0:	8436                	mv	s0,a3
    e881dba2:	84da                	mv	s1,s6
    e881dba4:	896a                	mv	s2,s10
    for (curr = m->DNSServers; curr; curr = curr->next)
    e881dba6:	000d3d03          	ld	s10,0(s10)
    e881dbaa:	8de2                	mv	s11,s8
    e881dbac:	bfa9                	j	e881db06 <GetBestServer+0x5c>
        if (ptime < 0)
    e881dbae:	86b2                	mv	a3,a2
    e881dbb0:	bfd9                	j	e881db86 <GetBestServer+0xdc>
    e881dbb2:	f436                	sd	a3,40(sp)
    if (namecount < newcount || newcount < bestcount) return -1;
    e881dbb4:	ff6a49e3          	blt	s4,s6,e881dba6 <GetBestServer+0xfc>
    e881dbb8:	fe9b47e3          	blt	s6,s1,e881dba6 <GetBestServer+0xfc>
    if (SameDomainName(SkipLeadingLabels(name, namecount - newcount), newname))
    e881dbbc:	416a05bb          	subw	a1,s4,s6
    e881dbc0:	8556                	mv	a0,s5
    e881dbc2:	e98f50ef          	jal	ra,e881325a <SkipLeadingLabels>
    e881dbc6:	85e6                	mv	a1,s9
    e881dbc8:	c82f50ef          	jal	ra,e881304a <SameDomainName>
    e881dbcc:	dd69                	beqz	a0,e881dba6 <GetBestServer+0xfc>
            if ((bettermatch == 1) || ((bettermatch == 0) && currPenaltyTime < bestPenaltyTime))
    e881dbce:	76a2                	ld	a3,40(sp)
    e881dbd0:	fd6497e3          	bne	s1,s6,e881db9e <GetBestServer+0xf4>
    e881dbd4:	b7d9                	j	e881db9a <GetBestServer+0xf0>

00000000e881dbd6 <AddAdditionalsToResponseList>:
{
    e881dbd6:	711d                	addi	sp,sp,-96
    e881dbd8:	678d                	lui	a5,0x3
    e881dbda:	e0ca                	sd	s2,64(sp)
    e881dbdc:	ec5e                	sd	s7,24(sp)
            for (rr2=m->ResourceRecords; rr2; rr2=rr2->next)                    // Scan list of resource records
    e881dbde:	00f50933          	add	s2,a0,a5
    e881dbe2:	1b878b93          	addi	s7,a5,440 # 31b8 <memcmp-0xe87fce48>
                AddRecordToResponseList(nrpp, &m->DeviceInfo, rr);
    e881dbe6:	da878793          	addi	a5,a5,-600
{
    e881dbea:	e8a2                	sd	s0,80(sp)
    e881dbec:	fc4e                	sd	s3,56(sp)
    e881dbee:	f852                	sd	s4,48(sp)
    e881dbf0:	f456                	sd	s5,40(sp)
    e881dbf2:	f05a                	sd	s6,32(sp)
    e881dbf4:	ec86                	sd	ra,88(sp)
    e881dbf6:	e4a6                	sd	s1,72(sp)
    e881dbf8:	e862                	sd	s8,16(sp)
    e881dbfa:	e466                	sd	s9,8(sp)
    e881dbfc:	842e                	mv	s0,a1
    e881dbfe:	89b2                	mv	s3,a2
    e881dc00:	8a36                	mv	s4,a3
        if (rr->Additional1 && ResourceRecordIsValidInterfaceAnswer(rr->Additional1, InterfaceID))
    e881dc02:	00085a97          	auipc	s5,0x85
    e881dc06:	15ea8a93          	addi	s5,s5,350 # e88a2d60 <mDNSInterface_Any>
    e881dc0a:	9baa                	add	s7,s7,a0
                AddRecordToResponseList(nrpp, &m->DeviceInfo, rr);
    e881dc0c:	00f50b33          	add	s6,a0,a5
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)           // For each record we plan to put
    e881dc10:	ec11                	bnez	s0,e881dc2c <AddAdditionalsToResponseList+0x56>
}
    e881dc12:	60e6                	ld	ra,88(sp)
    e881dc14:	6446                	ld	s0,80(sp)
    e881dc16:	64a6                	ld	s1,72(sp)
    e881dc18:	6906                	ld	s2,64(sp)
    e881dc1a:	79e2                	ld	s3,56(sp)
    e881dc1c:	7a42                	ld	s4,48(sp)
    e881dc1e:	7aa2                	ld	s5,40(sp)
    e881dc20:	7b02                	ld	s6,32(sp)
    e881dc22:	6be2                	ld	s7,24(sp)
    e881dc24:	6c42                	ld	s8,16(sp)
    e881dc26:	6ca2                	ld	s9,8(sp)
    e881dc28:	6125                	addi	sp,sp,96
    e881dc2a:	8082                	ret
        if (rr->Additional1 && ResourceRecordIsValidInterfaceAnswer(rr->Additional1, InterfaceID))
    e881dc2c:	642c                	ld	a1,72(s0)
    e881dc2e:	c1b5                	beqz	a1,e881dc92 <AddAdditionalsToResponseList+0xbc>
    e881dc30:	0085c783          	lbu	a5,8(a1)
    e881dc34:	03c7f793          	andi	a5,a5,60
    e881dc38:	cfa9                	beqz	a5,e881dc92 <AddAdditionalsToResponseList+0xbc>
    e881dc3a:	65bc                	ld	a5,72(a1)
    e881dc3c:	c791                	beqz	a5,e881dc48 <AddAdditionalsToResponseList+0x72>
    e881dc3e:	0087c783          	lbu	a5,8(a5)
    e881dc42:	03c7f793          	andi	a5,a5,60
    e881dc46:	c7b1                	beqz	a5,e881dc92 <AddAdditionalsToResponseList+0xbc>
    e881dc48:	69bc                	ld	a5,80(a1)
    e881dc4a:	c791                	beqz	a5,e881dc56 <AddAdditionalsToResponseList+0x80>
    e881dc4c:	0087c783          	lbu	a5,8(a5)
    e881dc50:	03c7f793          	andi	a5,a5,60
    e881dc54:	cf9d                	beqz	a5,e881dc92 <AddAdditionalsToResponseList+0xbc>
    e881dc56:	6dbc                	ld	a5,88(a1)
    e881dc58:	c791                	beqz	a5,e881dc64 <AddAdditionalsToResponseList+0x8e>
    e881dc5a:	0087c783          	lbu	a5,8(a5)
    e881dc5e:	03c7f793          	andi	a5,a5,60
    e881dc62:	cb85                	beqz	a5,e881dc92 <AddAdditionalsToResponseList+0xbc>
    e881dc64:	719c                	ld	a5,32(a1)
    e881dc66:	000ab703          	ld	a4,0(s5)
    e881dc6a:	00e78463          	beq	a5,a4,e881dc72 <AddAdditionalsToResponseList+0x9c>
    e881dc6e:	03479263          	bne	a5,s4,e881dc92 <AddAdditionalsToResponseList+0xbc>
            AddRecordToResponseList(nrpp, rr->Additional1, rr);
    e881dc72:	8622                	mv	a2,s0
    e881dc74:	854e                	mv	a0,s3
    e881dc76:	820ff0ef          	jal	ra,e881cc96 <AddRecordToResponseList>
            AddRRSetAdditionalsToResponseList(m, nrpp, rr, rr->Additional1, InterfaceID);
    e881dc7a:	6434                	ld	a3,72(s0)
    if (additional->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e881dc7c:	0086c783          	lbu	a5,8(a3)
    e881dc80:	0327f793          	andi	a5,a5,50
    e881dc84:	c799                	beqz	a5,e881dc92 <AddAdditionalsToResponseList+0xbc>
    e881dc86:	8752                	mv	a4,s4
    e881dc88:	8622                	mv	a2,s0
    e881dc8a:	85ce                	mv	a1,s3
    e881dc8c:	855e                	mv	a0,s7
    e881dc8e:	9eaff0ef          	jal	ra,e881ce78 <AddRRSetAdditionalsToResponseList.isra.21.part.22>
        if (rr->Additional2 && ResourceRecordIsValidInterfaceAnswer(rr->Additional2, InterfaceID))
    e881dc92:	682c                	ld	a1,80(s0)
    e881dc94:	c1b5                	beqz	a1,e881dcf8 <AddAdditionalsToResponseList+0x122>
    e881dc96:	0085c783          	lbu	a5,8(a1)
    e881dc9a:	03c7f793          	andi	a5,a5,60
    e881dc9e:	cfa9                	beqz	a5,e881dcf8 <AddAdditionalsToResponseList+0x122>
    e881dca0:	65bc                	ld	a5,72(a1)
    e881dca2:	c791                	beqz	a5,e881dcae <AddAdditionalsToResponseList+0xd8>
    e881dca4:	0087c783          	lbu	a5,8(a5)
    e881dca8:	03c7f793          	andi	a5,a5,60
    e881dcac:	c7b1                	beqz	a5,e881dcf8 <AddAdditionalsToResponseList+0x122>
    e881dcae:	69bc                	ld	a5,80(a1)
    e881dcb0:	c791                	beqz	a5,e881dcbc <AddAdditionalsToResponseList+0xe6>
    e881dcb2:	0087c783          	lbu	a5,8(a5)
    e881dcb6:	03c7f793          	andi	a5,a5,60
    e881dcba:	cf9d                	beqz	a5,e881dcf8 <AddAdditionalsToResponseList+0x122>
    e881dcbc:	6dbc                	ld	a5,88(a1)
    e881dcbe:	c791                	beqz	a5,e881dcca <AddAdditionalsToResponseList+0xf4>
    e881dcc0:	0087c783          	lbu	a5,8(a5)
    e881dcc4:	03c7f793          	andi	a5,a5,60
    e881dcc8:	cb85                	beqz	a5,e881dcf8 <AddAdditionalsToResponseList+0x122>
    e881dcca:	719c                	ld	a5,32(a1)
    e881dccc:	000ab703          	ld	a4,0(s5)
    e881dcd0:	00e78463          	beq	a5,a4,e881dcd8 <AddAdditionalsToResponseList+0x102>
    e881dcd4:	03479263          	bne	a5,s4,e881dcf8 <AddAdditionalsToResponseList+0x122>
            AddRecordToResponseList(nrpp, rr->Additional2, rr);
    e881dcd8:	8622                	mv	a2,s0
    e881dcda:	854e                	mv	a0,s3
    e881dcdc:	fbbfe0ef          	jal	ra,e881cc96 <AddRecordToResponseList>
            AddRRSetAdditionalsToResponseList(m, nrpp, rr, rr->Additional2, InterfaceID);
    e881dce0:	6834                	ld	a3,80(s0)
    if (additional->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e881dce2:	0086c783          	lbu	a5,8(a3)
    e881dce6:	0327f793          	andi	a5,a5,50
    e881dcea:	c799                	beqz	a5,e881dcf8 <AddAdditionalsToResponseList+0x122>
    e881dcec:	8752                	mv	a4,s4
    e881dcee:	8622                	mv	a2,s0
    e881dcf0:	85ce                	mv	a1,s3
    e881dcf2:	855e                	mv	a0,s7
    e881dcf4:	984ff0ef          	jal	ra,e881ce78 <AddRRSetAdditionalsToResponseList.isra.21.part.22>
        if (rr->resrec.rrtype == kDNSType_SRV)
    e881dcf8:	00a45783          	lhu	a5,10(s0)
    e881dcfc:	02100713          	li	a4,33
    e881dd00:	08e79163          	bne	a5,a4,e881dd82 <AddAdditionalsToResponseList+0x1ac>
            for (rr2=m->ResourceRecords; rr2; rr2=rr2->next)                    // Scan list of resource records
    e881dd04:	1b893483          	ld	s1,440(s2)
                if (RRTypeIsAddressType(rr2->resrec.rrtype) &&                  // For all address records (A/AAAA) ...
    e881dd08:	4c05                	li	s8,1
    e881dd0a:	4cf1                	li	s9,28
            for (rr2=m->ResourceRecords; rr2; rr2=rr2->next)                    // Scan list of resource records
    e881dd0c:	e099                	bnez	s1,e881dd12 <AddAdditionalsToResponseList+0x13c>
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)           // For each record we plan to put
    e881dd0e:	7c60                	ld	s0,248(s0)
    e881dd10:	b701                	j	e881dc10 <AddAdditionalsToResponseList+0x3a>
                if (RRTypeIsAddressType(rr2->resrec.rrtype) &&                  // For all address records (A/AAAA) ...
    e881dd12:	00a4d783          	lhu	a5,10(s1)
    e881dd16:	01878463          	beq	a5,s8,e881dd1e <AddAdditionalsToResponseList+0x148>
    e881dd1a:	07979263          	bne	a5,s9,e881dd7e <AddAdditionalsToResponseList+0x1a8>
    e881dd1e:	0084c783          	lbu	a5,8(s1)
    e881dd22:	03c7f793          	andi	a5,a5,60
    e881dd26:	cfa1                	beqz	a5,e881dd7e <AddAdditionalsToResponseList+0x1a8>
                    ResourceRecordIsValidInterfaceAnswer(rr2, InterfaceID) &&   // ... which are valid for answer ...
    e881dd28:	64bc                	ld	a5,72(s1)
    e881dd2a:	c791                	beqz	a5,e881dd36 <AddAdditionalsToResponseList+0x160>
    e881dd2c:	0087c783          	lbu	a5,8(a5)
    e881dd30:	03c7f793          	andi	a5,a5,60
    e881dd34:	c7a9                	beqz	a5,e881dd7e <AddAdditionalsToResponseList+0x1a8>
    e881dd36:	68bc                	ld	a5,80(s1)
    e881dd38:	c791                	beqz	a5,e881dd44 <AddAdditionalsToResponseList+0x16e>
    e881dd3a:	0087c783          	lbu	a5,8(a5)
    e881dd3e:	03c7f793          	andi	a5,a5,60
    e881dd42:	cf95                	beqz	a5,e881dd7e <AddAdditionalsToResponseList+0x1a8>
    e881dd44:	6cbc                	ld	a5,88(s1)
    e881dd46:	c791                	beqz	a5,e881dd52 <AddAdditionalsToResponseList+0x17c>
    e881dd48:	0087c783          	lbu	a5,8(a5)
    e881dd4c:	03c7f793          	andi	a5,a5,60
    e881dd50:	c79d                	beqz	a5,e881dd7e <AddAdditionalsToResponseList+0x1a8>
    e881dd52:	709c                	ld	a5,32(s1)
    e881dd54:	000ab703          	ld	a4,0(s5)
    e881dd58:	00e78463          	beq	a5,a4,e881dd60 <AddAdditionalsToResponseList+0x18a>
    e881dd5c:	03479163          	bne	a5,s4,e881dd7e <AddAdditionalsToResponseList+0x1a8>
    e881dd60:	4c58                	lw	a4,28(s0)
    e881dd62:	4c9c                	lw	a5,24(s1)
    e881dd64:	00f71d63          	bne	a4,a5,e881dd7e <AddAdditionalsToResponseList+0x1a8>
                    SameDomainName(&rr->resrec.rdata->u.srv.target, rr2->resrec.name))
    e881dd68:	7808                	ld	a0,48(s0)
    e881dd6a:	748c                	ld	a1,40(s1)
    e881dd6c:	0529                	addi	a0,a0,10
    e881dd6e:	adcf50ef          	jal	ra,e881304a <SameDomainName>
                    rr->resrec.rdatahash == rr2->resrec.namehash &&         // ... whose name is the name of the SRV target
    e881dd72:	c511                	beqz	a0,e881dd7e <AddAdditionalsToResponseList+0x1a8>
                    AddRecordToResponseList(nrpp, rr2, rr);
    e881dd74:	8622                	mv	a2,s0
    e881dd76:	85a6                	mv	a1,s1
    e881dd78:	854e                	mv	a0,s3
    e881dd7a:	f1dfe0ef          	jal	ra,e881cc96 <AddRecordToResponseList>
            for (rr2=m->ResourceRecords; rr2; rr2=rr2->next)                    // Scan list of resource records
    e881dd7e:	6084                	ld	s1,0(s1)
    e881dd80:	b771                	j	e881dd0c <AddAdditionalsToResponseList+0x136>
        else if (RRTypeIsAddressType(rr->resrec.rrtype))    // For A or AAAA, put counterpart as additional
    e881dd82:	4705                	li	a4,1
    e881dd84:	00e78563          	beq	a5,a4,e881dd8e <AddAdditionalsToResponseList+0x1b8>
    e881dd88:	4771                	li	a4,28
    e881dd8a:	06e79e63          	bne	a5,a4,e881de06 <AddAdditionalsToResponseList+0x230>
            for (rr2=m->ResourceRecords; rr2; rr2=rr2->next)                    // Scan list of resource records
    e881dd8e:	1b893483          	ld	s1,440(s2)
                if (RRTypeIsAddressType(rr2->resrec.rrtype) &&                  // For all address records (A/AAAA) ...
    e881dd92:	4c05                	li	s8,1
    e881dd94:	4cf1                	li	s9,28
            for (rr2=m->ResourceRecords; rr2; rr2=rr2->next)                    // Scan list of resource records
    e881dd96:	dca5                	beqz	s1,e881dd0e <AddAdditionalsToResponseList+0x138>
                if (RRTypeIsAddressType(rr2->resrec.rrtype) &&                  // For all address records (A/AAAA) ...
    e881dd98:	00a4d783          	lhu	a5,10(s1)
    e881dd9c:	01878463          	beq	a5,s8,e881dda4 <AddAdditionalsToResponseList+0x1ce>
    e881dda0:	07979163          	bne	a5,s9,e881de02 <AddAdditionalsToResponseList+0x22c>
    e881dda4:	0084c783          	lbu	a5,8(s1)
    e881dda8:	03c7f793          	andi	a5,a5,60
    e881ddac:	cbb9                	beqz	a5,e881de02 <AddAdditionalsToResponseList+0x22c>
                    ResourceRecordIsValidInterfaceAnswer(rr2, InterfaceID) &&   // ... which are valid for answer ...
    e881ddae:	64bc                	ld	a5,72(s1)
    e881ddb0:	c791                	beqz	a5,e881ddbc <AddAdditionalsToResponseList+0x1e6>
    e881ddb2:	0087c783          	lbu	a5,8(a5)
    e881ddb6:	03c7f793          	andi	a5,a5,60
    e881ddba:	c7a1                	beqz	a5,e881de02 <AddAdditionalsToResponseList+0x22c>
    e881ddbc:	68bc                	ld	a5,80(s1)
    e881ddbe:	c791                	beqz	a5,e881ddca <AddAdditionalsToResponseList+0x1f4>
    e881ddc0:	0087c783          	lbu	a5,8(a5)
    e881ddc4:	03c7f793          	andi	a5,a5,60
    e881ddc8:	cf8d                	beqz	a5,e881de02 <AddAdditionalsToResponseList+0x22c>
    e881ddca:	6cbc                	ld	a5,88(s1)
    e881ddcc:	c791                	beqz	a5,e881ddd8 <AddAdditionalsToResponseList+0x202>
    e881ddce:	0087c783          	lbu	a5,8(a5)
    e881ddd2:	03c7f793          	andi	a5,a5,60
    e881ddd6:	c795                	beqz	a5,e881de02 <AddAdditionalsToResponseList+0x22c>
    e881ddd8:	709c                	ld	a5,32(s1)
    e881ddda:	000ab703          	ld	a4,0(s5)
    e881ddde:	00e78463          	beq	a5,a4,e881dde6 <AddAdditionalsToResponseList+0x210>
    e881dde2:	03479063          	bne	a5,s4,e881de02 <AddAdditionalsToResponseList+0x22c>
    e881dde6:	4c18                	lw	a4,24(s0)
    e881dde8:	4c9c                	lw	a5,24(s1)
    e881ddea:	00f71c63          	bne	a4,a5,e881de02 <AddAdditionalsToResponseList+0x22c>
                    SameDomainName(rr->resrec.name, rr2->resrec.name))
    e881ddee:	748c                	ld	a1,40(s1)
    e881ddf0:	7408                	ld	a0,40(s0)
    e881ddf2:	a58f50ef          	jal	ra,e881304a <SameDomainName>
                    rr->resrec.namehash == rr2->resrec.namehash &&              // ... and have the same name
    e881ddf6:	c511                	beqz	a0,e881de02 <AddAdditionalsToResponseList+0x22c>
                    AddRecordToResponseList(nrpp, rr2, rr);
    e881ddf8:	8622                	mv	a2,s0
    e881ddfa:	85a6                	mv	a1,s1
    e881ddfc:	854e                	mv	a0,s3
    e881ddfe:	e99fe0ef          	jal	ra,e881cc96 <AddRecordToResponseList>
            for (rr2=m->ResourceRecords; rr2; rr2=rr2->next)                    // Scan list of resource records
    e881de02:	6084                	ld	s1,0(s1)
    e881de04:	bf49                	j	e881dd96 <AddAdditionalsToResponseList+0x1c0>
        else if (rr->resrec.rrtype == kDNSType_PTR)         // For service PTR, see if we want to add DeviceInfo record
    e881de06:	4731                	li	a4,12
    e881de08:	f0e793e3          	bne	a5,a4,e881dd0e <AddAdditionalsToResponseList+0x138>
            if (ResourceRecordIsValidInterfaceAnswer(&m->DeviceInfo, InterfaceID) &&
    e881de0c:	db094783          	lbu	a5,-592(s2)
    e881de10:	03c7f793          	andi	a5,a5,60
    e881de14:	ee078de3          	beqz	a5,e881dd0e <AddAdditionalsToResponseList+0x138>
    e881de18:	df093783          	ld	a5,-528(s2)
    e881de1c:	c799                	beqz	a5,e881de2a <AddAdditionalsToResponseList+0x254>
    e881de1e:	0087c783          	lbu	a5,8(a5)
    e881de22:	03c7f793          	andi	a5,a5,60
    e881de26:	ee0784e3          	beqz	a5,e881dd0e <AddAdditionalsToResponseList+0x138>
    e881de2a:	df893783          	ld	a5,-520(s2)
    e881de2e:	c799                	beqz	a5,e881de3c <AddAdditionalsToResponseList+0x266>
    e881de30:	0087c783          	lbu	a5,8(a5)
    e881de34:	03c7f793          	andi	a5,a5,60
    e881de38:	ec078be3          	beqz	a5,e881dd0e <AddAdditionalsToResponseList+0x138>
    e881de3c:	e0093783          	ld	a5,-512(s2)
    e881de40:	c799                	beqz	a5,e881de4e <AddAdditionalsToResponseList+0x278>
    e881de42:	0087c783          	lbu	a5,8(a5)
    e881de46:	03c7f793          	andi	a5,a5,60
    e881de4a:	ec0782e3          	beqz	a5,e881dd0e <AddAdditionalsToResponseList+0x138>
    e881de4e:	dc893783          	ld	a5,-568(s2)
    e881de52:	000ab703          	ld	a4,0(s5)
    e881de56:	00e78463          	beq	a5,a4,e881de5e <AddAdditionalsToResponseList+0x288>
    e881de5a:	eb479ae3          	bne	a5,s4,e881dd0e <AddAdditionalsToResponseList+0x138>
                SameDomainLabel(rr->resrec.rdata->u.name.c, m->DeviceInfo.resrec.name->c))
    e881de5e:	7808                	ld	a0,48(s0)
    e881de60:	dd093583          	ld	a1,-560(s2)
    e881de64:	0511                	addi	a0,a0,4
    e881de66:	980f50ef          	jal	ra,e8812fe6 <SameDomainLabel>
            if (ResourceRecordIsValidInterfaceAnswer(&m->DeviceInfo, InterfaceID) &&
    e881de6a:	ea0502e3          	beqz	a0,e881dd0e <AddAdditionalsToResponseList+0x138>
                AddRecordToResponseList(nrpp, &m->DeviceInfo, rr);
    e881de6e:	8622                	mv	a2,s0
    e881de70:	85da                	mv	a1,s6
    e881de72:	854e                	mv	a0,s3
    e881de74:	e23fe0ef          	jal	ra,e881cc96 <AddRecordToResponseList>
    e881de78:	bd59                	j	e881dd0e <AddAdditionalsToResponseList+0x138>

00000000e881de7a <SendDelayedUnicastResponse>:
{
    e881de7a:	7131                	addi	sp,sp,-192
    e881de7c:	f526                	sd	s1,168(sp)
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881de7e:	648d                	lui	s1,0x3
    e881de80:	94aa                	add	s1,s1,a0
{
    e881de82:	f922                	sd	s0,176(sp)
    e881de84:	f14a                	sd	s2,160(sp)
    e881de86:	ed4e                	sd	s3,152(sp)
    e881de88:	e952                	sd	s4,144(sp)
    e881de8a:	e556                	sd	s5,136(sp)
    e881de8c:	e15a                	sd	s6,128(sp)
    e881de8e:	fcde                	sd	s7,120(sp)
    e881de90:	f8e2                	sd	s8,112(sp)
    e881de92:	f4e6                	sd	s9,104(sp)
    e881de94:	f0ea                	sd	s10,96(sp)
    e881de96:	ecee                	sd	s11,88(sp)
    e881de98:	fd06                	sd	ra,184(sp)
    e881de9a:	842a                	mv	s0,a0
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881de9c:	1e04b503          	ld	a0,480(s1) # 31e0 <memcmp-0xe87fce20>
    AuthRecord **nrp             = &ResponseRecords;
    e881dea0:	009c                	addi	a5,sp,64
{
    e881dea2:	892e                	mv	s2,a1
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881dea4:	85b2                	mv	a1,a2
{
    e881dea6:	8ab2                	mv	s5,a2
    AuthRecord  *ResponseRecords = mDNSNULL;
    e881dea8:	e082                	sd	zero,64(sp)
    AuthRecord **nrp             = &ResponseRecords;
    e881deaa:	e4be                	sd	a5,72(sp)
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881deac:	8c3fe0ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e881deb0:	1b84b483          	ld	s1,440(s1)
                if (intf && !mDNSPlatformValidRecordForInterface(rr, intf->InterfaceID))
    e881deb4:	6a09                	lui	s4,0x2
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881deb6:	8baa                	mv	s7,a0
        if (rr->ImmedAnswer == mDNSInterfaceMark               ||
    e881deb8:	00085c17          	auipc	s8,0x85
    e881debc:	ea0c0c13          	addi	s8,s8,-352 # e88a2d58 <mDNSInterfaceMark>
            mDNSSameIPv4Address(rr->v4Requester, onesIPv4Addr) ||
    e881dec0:	00085c97          	auipc	s9,0x85
    e881dec4:	450c8c93          	addi	s9,s9,1104 # e88a3310 <onesIPv4Addr>
            mDNSSameIPv6Address(rr->v6Requester, onesIPv6Addr)  )
    e881dec8:	00085997          	auipc	s3,0x85
    e881decc:	45098993          	addi	s3,s3,1104 # e88a3318 <onesIPv6Addr>
            if ((dest->type == mDNSAddrType_IPv4 && mDNSSameIPv4Address(rr->v4Requester, dest->ip.v4)) ||
    e881ded0:	4d11                	li	s10,4
                rr->v4Requester  = zerov4Addr;
    e881ded2:	00085d97          	auipc	s11,0x85
    e881ded6:	70ed8d93          	addi	s11,s11,1806 # e88a35e0 <zerov4Addr>
                rr->v6Requester  = zerov6Addr;
    e881deda:	00085b17          	auipc	s6,0x85
    e881dede:	70eb0b13          	addi	s6,s6,1806 # e88a35e8 <zerov6Addr>
                if (intf && !mDNSPlatformValidRecordForInterface(rr, intf->InterfaceID))
    e881dee2:	9a2a                	add	s4,s4,a0
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e881dee4:	e0b1                	bnez	s1,e881df28 <SendDelayedUnicastResponse+0xae>
    AddAdditionalsToResponseList(m, ResponseRecords, &nrp, InterfaceID);
    e881dee6:	6586                	ld	a1,64(sp)
    e881dee8:	86d6                	mv	a3,s5
    e881deea:	00b0                	addi	a2,sp,72
    e881deec:	8522                	mv	a0,s0
    e881deee:	ce9ff0ef          	jal	ra,e881dbd6 <AddAdditionalsToResponseList>
        mDNSu8 *responseptr = m->omsg.data;
    e881def2:	649d                	lui	s1,0x7
            newptr = PutResourceRecordTTLWithLimit(&m->omsg, responseptr, &m->omsg.h.numAnswers, &rr->resrec, rr->resrec.rroriginalttl,
    e881def4:	1e648793          	addi	a5,s1,486 # 71e6 <memcmp-0xe87f8e1a>
        mDNSu8 *responseptr = m->omsg.data;
    e881def8:	1ec48993          	addi	s3,s1,492
            newptr = PutResourceRecordTTLWithLimit(&m->omsg, responseptr, &m->omsg.h.numAnswers, &rr->resrec, rr->resrec.rroriginalttl,
    e881defc:	97a2                	add	a5,a5,s0
    int AnoninfoSpace = 0;
    e881defe:	e802                	sd	zero,16(sp)
        mDNSu8 *responseptr = m->omsg.data;
    e881df00:	99a2                	add	s3,s3,s0
            newptr = PutResourceRecordTTLWithLimit(&m->omsg, responseptr, &m->omsg.h.numAnswers, &rr->resrec, rr->resrec.rroriginalttl,
    e881df02:	f83e                	sd	a5,48(sp)
    while (ResponseRecords)
    e881df04:	6786                	ld	a5,64(sp)
    e881df06:	10079563          	bnez	a5,e881e010 <SendDelayedUnicastResponse+0x196>
}
    e881df0a:	70ea                	ld	ra,184(sp)
    e881df0c:	744a                	ld	s0,176(sp)
    e881df0e:	74aa                	ld	s1,168(sp)
    e881df10:	790a                	ld	s2,160(sp)
    e881df12:	69ea                	ld	s3,152(sp)
    e881df14:	6a4a                	ld	s4,144(sp)
    e881df16:	6aaa                	ld	s5,136(sp)
    e881df18:	6b0a                	ld	s6,128(sp)
    e881df1a:	7be6                	ld	s7,120(sp)
    e881df1c:	7c46                	ld	s8,112(sp)
    e881df1e:	7ca6                	ld	s9,104(sp)
    e881df20:	7d06                	ld	s10,96(sp)
    e881df22:	6de6                	ld	s11,88(sp)
    e881df24:	6129                	addi	sp,sp,192
    e881df26:	8082                	ret
        if (rr->ImmedAnswer == mDNSInterfaceMark               ||
    e881df28:	64f8                	ld	a4,200(s1)
    e881df2a:	000c3783          	ld	a5,0(s8)
    e881df2e:	04f70063          	beq	a4,a5,e881df6e <SendDelayedUnicastResponse+0xf4>
            mDNSSameIPv4Address(rr->v4Requester, onesIPv4Addr) ||
    e881df32:	0e04a683          	lw	a3,224(s1)
        if (rr->ImmedAnswer == mDNSInterfaceMark               ||
    e881df36:	000ca783          	lw	a5,0(s9)
    e881df3a:	02d78a63          	beq	a5,a3,e881df6e <SendDelayedUnicastResponse+0xf4>
            mDNSSameIPv6Address(rr->v6Requester, onesIPv6Addr)  )
    e881df3e:	0e44a783          	lw	a5,228(s1)
            mDNSSameIPv4Address(rr->v4Requester, onesIPv4Addr) ||
    e881df42:	0009a603          	lw	a2,0(s3)
    e881df46:	02f61863          	bne	a2,a5,e881df76 <SendDelayedUnicastResponse+0xfc>
            mDNSSameIPv6Address(rr->v6Requester, onesIPv6Addr)  )
    e881df4a:	0e84a583          	lw	a1,232(s1)
    e881df4e:	0049a603          	lw	a2,4(s3)
    e881df52:	02c59263          	bne	a1,a2,e881df76 <SendDelayedUnicastResponse+0xfc>
    e881df56:	0ec4a583          	lw	a1,236(s1)
    e881df5a:	0089a603          	lw	a2,8(s3)
    e881df5e:	00c59c63          	bne	a1,a2,e881df76 <SendDelayedUnicastResponse+0xfc>
    e881df62:	0f04a583          	lw	a1,240(s1)
    e881df66:	00c9a603          	lw	a2,12(s3)
    e881df6a:	00c59663          	bne	a1,a2,e881df76 <SendDelayedUnicastResponse+0xfc>
            rr->ImmedUnicast = mDNSfalse;
    e881df6e:	0a048da3          	sb	zero,187(s1)
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e881df72:	6084                	ld	s1,0(s1)
    e881df74:	bf85                	j	e881dee4 <SendDelayedUnicastResponse+0x6a>
        if (rr->ImmedUnicast && rr->ImmedAnswer == InterfaceID)
    e881df76:	0bb4c603          	lbu	a2,187(s1)
    e881df7a:	de65                	beqz	a2,e881df72 <SendDelayedUnicastResponse+0xf8>
    e881df7c:	ff571be3          	bne	a4,s5,e881df72 <SendDelayedUnicastResponse+0xf8>
            if ((dest->type == mDNSAddrType_IPv4 && mDNSSameIPv4Address(rr->v4Requester, dest->ip.v4)) ||
    e881df80:	00092703          	lw	a4,0(s2)
    e881df84:	05a71563          	bne	a4,s10,e881dfce <SendDelayedUnicastResponse+0x154>
    e881df88:	00492783          	lw	a5,4(s2)
    e881df8c:	fed793e3          	bne	a5,a3,e881df72 <SendDelayedUnicastResponse+0xf8>
                rr->v4Requester  = zerov4Addr;
    e881df90:	000da783          	lw	a5,0(s11)
                rr->ImmedAnswer  = mDNSNULL;                // Clear the state fields
    e881df94:	0c04b423          	sd	zero,200(s1)
                rr->ImmedUnicast = mDNSfalse;
    e881df98:	0a048da3          	sb	zero,187(s1)
                rr->v4Requester  = zerov4Addr;
    e881df9c:	0ef4a023          	sw	a5,224(s1)
                rr->v6Requester  = zerov6Addr;
    e881dfa0:	000b3783          	ld	a5,0(s6)
    e881dfa4:	0ef4b223          	sd	a5,228(s1)
    e881dfa8:	008b3783          	ld	a5,8(s6)
    e881dfac:	0ef4b623          	sd	a5,236(s1)
                if (intf && !mDNSPlatformValidRecordForInterface(rr, intf->InterfaceID))
    e881dfb0:	040b9963          	bnez	s7,e881e002 <SendDelayedUnicastResponse+0x188>
                if (rr->NextResponse == mDNSNULL && nrp != &rr->NextResponse)   // rr->NR_AnswerTo
    e881dfb4:	7cfc                	ld	a5,248(s1)
    e881dfb6:	ffd5                	bnez	a5,e881df72 <SendDelayedUnicastResponse+0xf8>
    e881dfb8:	6726                	ld	a4,72(sp)
    e881dfba:	0f848793          	addi	a5,s1,248
    e881dfbe:	fae78ae3          	beq	a5,a4,e881df72 <SendDelayedUnicastResponse+0xf8>
                    rr->NR_AnswerTo = NR_AnswerMulticast;
    e881dfc2:	56fd                	li	a3,-1
    e881dfc4:	10d4b023          	sd	a3,256(s1)
                    *nrp = rr;
    e881dfc8:	e304                	sd	s1,0(a4)
                    nrp = &rr->NextResponse;
    e881dfca:	e4be                	sd	a5,72(sp)
    e881dfcc:	b75d                	j	e881df72 <SendDelayedUnicastResponse+0xf8>
            if ((dest->type == mDNSAddrType_IPv4 && mDNSSameIPv4Address(rr->v4Requester, dest->ip.v4)) ||
    e881dfce:	4699                	li	a3,6
    e881dfd0:	fad711e3          	bne	a4,a3,e881df72 <SendDelayedUnicastResponse+0xf8>
                (dest->type == mDNSAddrType_IPv6 && mDNSSameIPv6Address(rr->v6Requester, dest->ip.v6)))
    e881dfd4:	00492703          	lw	a4,4(s2)
    e881dfd8:	f8f71de3          	bne	a4,a5,e881df72 <SendDelayedUnicastResponse+0xf8>
    e881dfdc:	0e84a703          	lw	a4,232(s1)
    e881dfe0:	00892783          	lw	a5,8(s2)
    e881dfe4:	f8f717e3          	bne	a4,a5,e881df72 <SendDelayedUnicastResponse+0xf8>
    e881dfe8:	0ec4a703          	lw	a4,236(s1)
    e881dfec:	00c92783          	lw	a5,12(s2)
    e881dff0:	f8f711e3          	bne	a4,a5,e881df72 <SendDelayedUnicastResponse+0xf8>
    e881dff4:	0f04a703          	lw	a4,240(s1)
    e881dff8:	01092783          	lw	a5,16(s2)
    e881dffc:	f6f71be3          	bne	a4,a5,e881df72 <SendDelayedUnicastResponse+0xf8>
    e881e000:	bf41                	j	e881df90 <SendDelayedUnicastResponse+0x116>
                if (intf && !mDNSPlatformValidRecordForInterface(rr, intf->InterfaceID))
    e881e002:	9f0a3583          	ld	a1,-1552(s4) # 19f0 <memcmp-0xe87fe610>
    e881e006:	8526                	mv	a0,s1
    e881e008:	712120ef          	jal	ra,e883071a <mDNSPlatformValidRecordForInterface>
    e881e00c:	f545                	bnez	a0,e881dfb4 <SendDelayedUnicastResponse+0x13a>
    e881e00e:	b795                	j	e881df72 <SendDelayedUnicastResponse+0xf8>
        InitializeDNSMessage(&m->omsg.h, zeroID, ResponseFlags);
    e881e010:	679d                	lui	a5,0x7
    e881e012:	1e078793          	addi	a5,a5,480 # 71e0 <memcmp-0xe87f8e20>
    e881e016:	00f40a33          	add	s4,s0,a5
    e881e01a:	00084797          	auipc	a5,0x84
    e881e01e:	76678793          	addi	a5,a5,1894 # e88a2780 <ResponseFlags>
    e881e022:	0007d603          	lhu	a2,0(a5)
    e881e026:	00085797          	auipc	a5,0x85
    e881e02a:	57a78793          	addi	a5,a5,1402 # e88a35a0 <zeroID>
    e881e02e:	0007d583          	lhu	a1,0(a5)
    e881e032:	8552                	mv	a0,s4
                 m->omsg.data + (AllowedRRSpace(&m->omsg) - AnoninfoSpace));
    e881e034:	6d09                	lui	s10,0x2
        InitializeDNSMessage(&m->omsg.h, zeroID, ResponseFlags);
    e881e036:	e16f60ef          	jal	ra,e881464c <InitializeDNSMessage>
        mDNSu8 *responseptr = m->omsg.data;
    e881e03a:	8b4e                	mv	s6,s3
                rr->resrec.AnonInfo->SendNow = mDNSInterfaceMark;
    e881e03c:	00085d97          	auipc	s11,0x85
    e881e040:	d1cd8d93          	addi	s11,s11,-740 # e88a2d58 <mDNSInterfaceMark>
                rr->resrec.rrclass |= kDNSClass_UniqueRRSet;        // Temporarily set the cache flush bit so PutResourceRecord will set it
    e881e044:	7861                	lui	a6,0xffff8
                 m->omsg.data + (AllowedRRSpace(&m->omsg) - AnoninfoSpace));
    e881e046:	00940cb3          	add	s9,s0,s1
    e881e04a:	2ecd0d13          	addi	s10,s10,748 # 22ec <memcmp-0xe87fdd14>
        while (ResponseRecords && ResponseRecords->NR_AnswerTo)
    e881e04e:	6c06                	ld	s8,64(sp)
    e881e050:	000c0563          	beqz	s8,e881e05a <SendDelayedUnicastResponse+0x1e0>
    e881e054:	100c3783          	ld	a5,256(s8)
    e881e058:	e3c1                	bnez	a5,e881e0d8 <SendDelayedUnicastResponse+0x25e>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e881e05a:	678d                	lui	a5,0x3
    e881e05c:	97a2                	add	a5,a5,s0
    e881e05e:	1b87bd83          	ld	s11,440(a5) # 31b8 <memcmp-0xe87fce48>
                newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAuthorities, nsec3RR);
    e881e062:	1e848793          	addi	a5,s1,488
    e881e066:	97a2                	add	a5,a5,s0
    e881e068:	ec3e                	sd	a5,24(sp)
                    LogMsg("SendDelayedUnicastResponse: ERROR!! Cannot Add NSEC3 Record %s on %p", RRDisplayString(m, nsec3RR), intf->InterfaceID);
    e881e06a:	03b40793          	addi	a5,s0,59
    e881e06e:	6c89                	lui	s9,0x2
    e881e070:	f03e                	sd	a5,32(sp)
    e881e072:	019b87b3          	add	a5,s7,s9
            if (rr->resrec.AnonInfo && rr->resrec.AnonInfo->SendNow == mDNSInterfaceMark)
    e881e076:	00085d17          	auipc	s10,0x85
    e881e07a:	ce2d0d13          	addi	s10,s10,-798 # e88a2d58 <mDNSInterfaceMark>
                newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAuthorities, nsec3RR);
    e881e07e:	00940c33          	add	s8,s0,s1
                    LogMsg("SendDelayedUnicastResponse: ERROR!! Cannot Add NSEC3 Record %s on %p", RRDisplayString(m, nsec3RR), intf->InterfaceID);
    e881e082:	f43e                	sd	a5,40(sp)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e881e084:	0e0d9263          	bnez	s11,e881e168 <SendDelayedUnicastResponse+0x2ee>
            newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAdditionals, &rr->resrec);
    e881e088:	1ea48c93          	addi	s9,s1,490
    e881e08c:	6d89                	lui	s11,0x2
                rr->resrec.rrclass |= kDNSClass_UniqueRRSet;        // Temporarily set the cache flush bit so PutResourceRecord will set it
    e881e08e:	7861                	lui	a6,0xffff8
            newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAdditionals, &rr->resrec);
    e881e090:	9ca2                	add	s9,s9,s0
    e881e092:	00940d33          	add	s10,s0,s1
    e881e096:	2ecd8d93          	addi	s11,s11,748 # 22ec <memcmp-0xe87fdd14>
        while (ResponseRecords && !ResponseRecords->NR_AnswerTo)
    e881e09a:	6c06                	ld	s8,64(sp)
    e881e09c:	000c0663          	beqz	s8,e881e0a8 <SendDelayedUnicastResponse+0x22e>
    e881e0a0:	100c3783          	ld	a5,256(s8)
    e881e0a4:	12078d63          	beqz	a5,e881e1de <SendDelayedUnicastResponse+0x364>
        if (m->omsg.h.numAnswers)
    e881e0a8:	009407b3          	add	a5,s0,s1
    e881e0ac:	1e67d783          	lhu	a5,486(a5)
    e881e0b0:	e4078ae3          	beqz	a5,e881df04 <SendDelayedUnicastResponse+0x8a>
            mDNSSendDNSMessage(m, &m->omsg, responseptr, InterfaceID, mDNSNULL, dest, MulticastDNSPort, mDNSNULL, mDNSNULL, mDNSfalse);
    e881e0b4:	00084797          	auipc	a5,0x84
    e881e0b8:	4a478793          	addi	a5,a5,1188 # e88a2558 <MulticastDNSPort>
    e881e0bc:	0007d803          	lhu	a6,0(a5)
    e881e0c0:	e402                	sd	zero,8(sp)
    e881e0c2:	e002                	sd	zero,0(sp)
    e881e0c4:	4881                	li	a7,0
    e881e0c6:	87ca                	mv	a5,s2
    e881e0c8:	4701                	li	a4,0
    e881e0ca:	86d6                	mv	a3,s5
    e881e0cc:	865a                	mv	a2,s6
    e881e0ce:	85d2                	mv	a1,s4
    e881e0d0:	8522                	mv	a0,s0
    e881e0d2:	de0f90ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
    e881e0d6:	b53d                	j	e881df04 <SendDelayedUnicastResponse+0x8a>
            if (rr->resrec.AnonInfo)
    e881e0d8:	040c3783          	ld	a5,64(s8)
    e881e0dc:	cb99                	beqz	a5,e881e0f2 <SendDelayedUnicastResponse+0x278>
    return (2 + 10 + rr->rdlength);
    e881e0de:	6b98                	ld	a4,16(a5)
                AnoninfoSpace += AnonInfoSpace(rr->resrec.AnonInfo);
    e881e0e0:	66c2                	ld	a3,16(sp)
    return (2 + 10 + rr->rdlength);
    e881e0e2:	00c75703          	lhu	a4,12(a4)
    e881e0e6:	2731                	addiw	a4,a4,12
                AnoninfoSpace += AnonInfoSpace(rr->resrec.AnonInfo);
    e881e0e8:	9f35                	addw	a4,a4,a3
    e881e0ea:	e83a                	sd	a4,16(sp)
                rr->resrec.AnonInfo->SendNow = mDNSInterfaceMark;
    e881e0ec:	000db703          	ld	a4,0(s11)
    e881e0f0:	ef98                	sd	a4,24(a5)
            if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e881e0f2:	008c4783          	lbu	a5,8(s8)
    e881e0f6:	0327f793          	andi	a5,a5,50
    e881e0fa:	c799                	beqz	a5,e881e108 <SendDelayedUnicastResponse+0x28e>
                rr->resrec.rrclass |= kDNSClass_UniqueRRSet;        // Temporarily set the cache flush bit so PutResourceRecord will set it
    e881e0fc:	00cc5783          	lhu	a5,12(s8)
    e881e100:	0107e7b3          	or	a5,a5,a6
    e881e104:	00fc1623          	sh	a5,12(s8)
                 m->omsg.data + (AllowedRRSpace(&m->omsg) - AnoninfoSpace));
    e881e108:	1e6cd603          	lhu	a2,486(s9) # 21e6 <memcmp-0xe87fde1a>
            newptr = PutResourceRecordTTLWithLimit(&m->omsg, responseptr, &m->omsg.h.numAnswers, &rr->resrec, rr->resrec.rroriginalttl,
    e881e10c:	008c0693          	addi	a3,s8,8
    e881e110:	010c2703          	lw	a4,16(s8)
                 m->omsg.data + (AllowedRRSpace(&m->omsg) - AnoninfoSpace));
    e881e114:	5a000793          	li	a5,1440
    e881e118:	e609                	bnez	a2,e881e122 <SendDelayedUnicastResponse+0x2a8>
    e881e11a:	1e8ce603          	lwu	a2,488(s9)
    e881e11e:	40cd178b          	mveqz	a5,s10,a2
    e881e122:	6642                	ld	a2,16(sp)
            newptr = PutResourceRecordTTLWithLimit(&m->omsg, responseptr, &m->omsg.h.numAnswers, &rr->resrec, rr->resrec.rroriginalttl,
    e881e124:	85da                	mv	a1,s6
    e881e126:	8552                	mv	a0,s4
                 m->omsg.data + (AllowedRRSpace(&m->omsg) - AnoninfoSpace));
    e881e128:	9f91                	subw	a5,a5,a2
            newptr = PutResourceRecordTTLWithLimit(&m->omsg, responseptr, &m->omsg.h.numAnswers, &rr->resrec, rr->resrec.rroriginalttl,
    e881e12a:	7642                	ld	a2,48(sp)
    e881e12c:	97ce                	add	a5,a5,s3
    e881e12e:	ec42                	sd	a6,24(sp)
    e881e130:	d10f80ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
            rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;           // Make sure to clear cache flush bit back to normal state
    e881e134:	00cc5783          	lhu	a5,12(s8)
            if (!newptr && m->omsg.h.numAnswers)
    e881e138:	6862                	ld	a6,24(sp)
            rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;           // Make sure to clear cache flush bit back to normal state
    e881e13a:	3807b78b          	extu	a5,a5,14,0
    e881e13e:	00fc1623          	sh	a5,12(s8)
            if (!newptr && m->omsg.h.numAnswers)
    e881e142:	e509                	bnez	a0,e881e14c <SendDelayedUnicastResponse+0x2d2>
    e881e144:	1e6cd783          	lhu	a5,486(s9)
    e881e148:	fb89                	bnez	a5,e881e05a <SendDelayedUnicastResponse+0x1e0>
    e881e14a:	855a                	mv	a0,s6
            ResponseRecords = rr->NextResponse;
    e881e14c:	0f8c3783          	ld	a5,248(s8)
            rr->NR_AnswerTo     = mDNSNULL;
    e881e150:	100c3023          	sd	zero,256(s8)
            rr->NextResponse    = mDNSNULL;
    e881e154:	0e0c3c23          	sd	zero,248(s8)
            ResponseRecords = rr->NextResponse;
    e881e158:	e0be                	sd	a5,64(sp)
            rr->RequireGoodbye  = mDNStrue;
    e881e15a:	4785                	li	a5,1
            rr->NR_AdditionalTo = mDNSNULL;
    e881e15c:	100c3423          	sd	zero,264(s8)
            rr->RequireGoodbye  = mDNStrue;
    e881e160:	0afc0c23          	sb	a5,184(s8)
    e881e164:	8b2a                	mv	s6,a0
    e881e166:	b5e5                	j	e881e04e <SendDelayedUnicastResponse+0x1d4>
            if (rr->resrec.AnonInfo && rr->resrec.AnonInfo->SendNow == mDNSInterfaceMark)
    e881e168:	040db783          	ld	a5,64(s11)
    e881e16c:	c7b5                	beqz	a5,e881e1d8 <SendDelayedUnicastResponse+0x35e>
    e881e16e:	6f94                	ld	a3,24(a5)
    e881e170:	000d3703          	ld	a4,0(s10)
    e881e174:	06e69263          	bne	a3,a4,e881e1d8 <SendDelayedUnicastResponse+0x35e>
                ResourceRecord *nsec3RR = rr->resrec.AnonInfo->nsec3RR;
    e881e178:	0107b883          	ld	a7,16(a5)
                newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAuthorities, nsec3RR);
    e881e17c:	1e6c5683          	lhu	a3,486(s8)
    e881e180:	5a000793          	li	a5,1440
    e881e184:	0088a703          	lw	a4,8(a7)
    e881e188:	e691                	bnez	a3,e881e194 <SendDelayedUnicastResponse+0x31a>
    e881e18a:	1e8c6683          	lwu	a3,488(s8)
    e881e18e:	e299                	bnez	a3,e881e194 <SendDelayedUnicastResponse+0x31a>
    e881e190:	2ecc8793          	addi	a5,s9,748
    e881e194:	6662                	ld	a2,24(sp)
    e881e196:	86c6                	mv	a3,a7
    e881e198:	97ce                	add	a5,a5,s3
    e881e19a:	85da                	mv	a1,s6
    e881e19c:	8552                	mv	a0,s4
    e881e19e:	fc46                	sd	a7,56(sp)
    e881e1a0:	ca0f80ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
                if (newptr)
    e881e1a4:	78e2                	ld	a7,56(sp)
    e881e1a6:	e505                	bnez	a0,e881e1ce <SendDelayedUnicastResponse+0x354>
                    LogMsg("SendDelayedUnicastResponse: ERROR!! Cannot Add NSEC3 Record %s on %p", RRDisplayString(m, nsec3RR), intf->InterfaceID);
    e881e1a8:	0288b583          	ld	a1,40(a7)
    e881e1ac:	7602                	ld	a2,32(sp)
    e881e1ae:	8546                	mv	a0,a7
    e881e1b0:	0591                	addi	a1,a1,4
    e881e1b2:	863f80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881e1b6:	862a                	mv	a2,a0
    e881e1b8:	77a2                	ld	a5,40(sp)
    e881e1ba:	4501                	li	a0,0
    e881e1bc:	00088597          	auipc	a1,0x88
    e881e1c0:	34458593          	addi	a1,a1,836 # e88a6500 <end.8789+0x2e58>
    e881e1c4:	9f07b683          	ld	a3,-1552(a5)
    e881e1c8:	2e4110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881e1cc:	855a                	mv	a0,s6
                rr->resrec.AnonInfo->SendNow = mDNSNULL;
    e881e1ce:	040db783          	ld	a5,64(s11)
    e881e1d2:	8b2a                	mv	s6,a0
    e881e1d4:	0007bc23          	sd	zero,24(a5)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e881e1d8:	000dbd83          	ld	s11,0(s11)
    e881e1dc:	b565                	j	e881e084 <SendDelayedUnicastResponse+0x20a>
            if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e881e1de:	008c4783          	lbu	a5,8(s8)
    e881e1e2:	0327f793          	andi	a5,a5,50
    e881e1e6:	c799                	beqz	a5,e881e1f4 <SendDelayedUnicastResponse+0x37a>
                rr->resrec.rrclass |= kDNSClass_UniqueRRSet;        // Temporarily set the cache flush bit so PutResourceRecord will set it
    e881e1e8:	00cc5783          	lhu	a5,12(s8)
    e881e1ec:	0107e7b3          	or	a5,a5,a6
    e881e1f0:	00fc1623          	sh	a5,12(s8)
            newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAdditionals, &rr->resrec);
    e881e1f4:	1e6d5603          	lhu	a2,486(s10)
    e881e1f8:	008c0693          	addi	a3,s8,8
    e881e1fc:	010c2703          	lw	a4,16(s8)
    e881e200:	5a000793          	li	a5,1440
    e881e204:	e609                	bnez	a2,e881e20e <SendDelayedUnicastResponse+0x394>
    e881e206:	1e8d6603          	lwu	a2,488(s10)
    e881e20a:	40cd978b          	mveqz	a5,s11,a2
    e881e20e:	97ce                	add	a5,a5,s3
    e881e210:	8666                	mv	a2,s9
    e881e212:	85da                	mv	a1,s6
    e881e214:	8552                	mv	a0,s4
    e881e216:	ec42                	sd	a6,24(sp)
    e881e218:	c28f80ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
            rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;           // Make sure to clear cache flush bit back to normal state
    e881e21c:	00cc5783          	lhu	a5,12(s8)
            if (newptr) responseptr = newptr;
    e881e220:	6862                	ld	a6,24(sp)
    e881e222:	00085897          	auipc	a7,0x85
    e881e226:	b3688893          	addi	a7,a7,-1226 # e88a2d58 <mDNSInterfaceMark>
            rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;           // Make sure to clear cache flush bit back to normal state
    e881e22a:	3807b78b          	extu	a5,a5,14,0
    e881e22e:	00fc1623          	sh	a5,12(s8)
            if (newptr) responseptr = newptr;
    e881e232:	e919                	bnez	a0,e881e248 <SendDelayedUnicastResponse+0x3ce>
            else if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask) rr->ImmedAnswer = mDNSInterfaceMark;
    e881e234:	008c4783          	lbu	a5,8(s8)
    e881e238:	0327f793          	andi	a5,a5,50
    e881e23c:	cf91                	beqz	a5,e881e258 <SendDelayedUnicastResponse+0x3de>
    e881e23e:	0008b783          	ld	a5,0(a7)
    e881e242:	0cfc3423          	sd	a5,200(s8)
    e881e246:	a809                	j	e881e258 <SendDelayedUnicastResponse+0x3de>
            if (newptr && m->omsg.h.numAnswers) rr->RequireGoodbye = mDNStrue;
    e881e248:	1e6d5783          	lhu	a5,486(s10)
    e881e24c:	8b2a                	mv	s6,a0
    e881e24e:	d3fd                	beqz	a5,e881e234 <SendDelayedUnicastResponse+0x3ba>
    e881e250:	4785                	li	a5,1
    e881e252:	0afc0c23          	sb	a5,184(s8)
    e881e256:	8b2a                	mv	s6,a0
            ResponseRecords = rr->NextResponse;
    e881e258:	0f8c3783          	ld	a5,248(s8)
            rr->NR_AnswerTo     = mDNSNULL;
    e881e25c:	100c3023          	sd	zero,256(s8)
            rr->NextResponse    = mDNSNULL;
    e881e260:	0e0c3c23          	sd	zero,248(s8)
            ResponseRecords = rr->NextResponse;
    e881e264:	e0be                	sd	a5,64(sp)
            rr->NR_AdditionalTo = mDNSNULL;
    e881e266:	100c3423          	sd	zero,264(s8)
    e881e26a:	bd05                	j	e881e09a <SendDelayedUnicastResponse+0x220>

00000000e881e26c <SetNextQueryTime>:
{
    e881e26c:	1101                	addi	sp,sp,-32
    e881e26e:	e422                	sd	s0,8(sp)
    e881e270:	e826                	sd	s1,16(sp)
    e881e272:	ec06                	sd	ra,24(sp)
    mDNS_CheckLock(m);
    e881e274:	5958                	lw	a4,52(a0)
    e881e276:	5914                	lw	a3,48(a0)
{
    e881e278:	842a                	mv	s0,a0
    mDNS_CheckLock(m);
    e881e27a:	0017079b          	addiw	a5,a4,1
{
    e881e27e:	84ae                	mv	s1,a1
    mDNS_CheckLock(m);
    e881e280:	00d78d63          	beq	a5,a3,e881e29a <SetNextQueryTime+0x2e>
    e881e284:	0008a617          	auipc	a2,0x8a
    e881e288:	c6c60613          	addi	a2,a2,-916 # e88a7ef0 <__func__.9583>
    e881e28c:	00089597          	auipc	a1,0x89
    e881e290:	f0458593          	addi	a1,a1,-252 # e88a7190 <end.8789+0x3ae8>
    e881e294:	4501                	li	a0,0
    e881e296:	216110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (ActiveQuestion(q))
    e881e29a:	48d0                	lw	a2,20(s1)
    e881e29c:	02c05163          	blez	a2,e881e2be <SetNextQueryTime+0x52>
    e881e2a0:	68bc                	ld	a5,80(s1)
    e881e2a2:	ef91                	bnez	a5,e881e2be <SetNextQueryTime+0x52>
        mDNSs32 *const timer = mDNSOpaque16IsZero(q->TargetQID) ? &m->NextScheduledQuery : &m->NextuDNSEvent;
    e881e2a4:	2124d783          	lhu	a5,530(s1)
    e881e2a8:	e385                	bnez	a5,e881e2c8 <SetNextQueryTime+0x5c>
    e881e2aa:	25842683          	lw	a3,600(s0)
    e881e2ae:	25840793          	addi	a5,s0,600
        if (*timer - NextQSendTime(q) > 0)
    e881e2b2:	4898                	lw	a4,16(s1)
    e881e2b4:	9f31                	addw	a4,a4,a2
    e881e2b6:	9e99                	subw	a3,a3,a4
    e881e2b8:	00d05363          	blez	a3,e881e2be <SetNextQueryTime+0x52>
            *timer = NextQSendTime(q);
    e881e2bc:	c398                	sw	a4,0(a5)
}
    e881e2be:	60e2                	ld	ra,24(sp)
    e881e2c0:	6422                	ld	s0,8(sp)
    e881e2c2:	64c2                	ld	s1,16(sp)
    e881e2c4:	6105                	addi	sp,sp,32
    e881e2c6:	8082                	ret
        mDNSs32 *const timer = mDNSOpaque16IsZero(q->TargetQID) ? &m->NextScheduledQuery : &m->NextuDNSEvent;
    e881e2c8:	670d                	lui	a4,0x3
    e881e2ca:	1f870793          	addi	a5,a4,504 # 31f8 <memcmp-0xe87fce08>
    e881e2ce:	97a2                	add	a5,a5,s0
    e881e2d0:	943a                	add	s0,s0,a4
    e881e2d2:	1f842683          	lw	a3,504(s0)
    e881e2d6:	bff1                	j	e881e2b2 <SetNextQueryTime+0x46>

00000000e881e2d8 <AuthGroupForName>:
    const mDNSu32 slot = namehash % AUTH_HASH_SLOTS;
    e881e2d8:	1f300793          	li	a5,499
    e881e2dc:	02f5f7bb          	remuw	a5,a1,a5
{
    e881e2e0:	7179                	addi	sp,sp,-48
    e881e2e2:	f026                	sd	s1,32(sp)
    e881e2e4:	f406                	sd	ra,40(sp)
    e881e2e6:	ec22                	sd	s0,24(sp)
    e881e2e8:	84ae                	mv	s1,a1
    for (ag = r->rrauth_hash[slot]; ag; ag=ag->next)
    e881e2ea:	06f5150b          	addsl	a0,a0,a5,3
    e881e2ee:	6d00                	ld	s0,24(a0)
    e881e2f0:	cc09                	beqz	s0,e881e30a <AuthGroupForName+0x32>
        if (ag->namehash == namehash && SameDomainName(ag->name, name))
    e881e2f2:	441c                	lw	a5,8(s0)
    e881e2f4:	00978463          	beq	a5,s1,e881e2fc <AuthGroupForName+0x24>
    for (ag = r->rrauth_hash[slot]; ag; ag=ag->next)
    e881e2f8:	6000                	ld	s0,0(s0)
    e881e2fa:	bfdd                	j	e881e2f0 <AuthGroupForName+0x18>
        if (ag->namehash == namehash && SameDomainName(ag->name, name))
    e881e2fc:	7008                	ld	a0,32(s0)
    e881e2fe:	85b2                	mv	a1,a2
    e881e300:	e432                	sd	a2,8(sp)
    e881e302:	d49f40ef          	jal	ra,e881304a <SameDomainName>
    e881e306:	6622                	ld	a2,8(sp)
    e881e308:	d965                	beqz	a0,e881e2f8 <AuthGroupForName+0x20>
}
    e881e30a:	8522                	mv	a0,s0
    e881e30c:	70a2                	ld	ra,40(sp)
    e881e30e:	6462                	ld	s0,24(sp)
    e881e310:	7482                	ld	s1,32(sp)
    e881e312:	6145                	addi	sp,sp,48
    e881e314:	8082                	ret

00000000e881e316 <AuthGroupForRecord>:
    return(AuthGroupForName(r, rr->namehash, rr->name));
    e881e316:	7190                	ld	a2,32(a1)
    e881e318:	498c                	lw	a1,16(a1)
    e881e31a:	fbfff06f          	j	e881e2d8 <AuthGroupForName>

00000000e881e31e <InsertAuthRecord>:
{
    e881e31e:	711d                	addi	sp,sp,-96
    e881e320:	e8a2                	sd	s0,80(sp)
    e881e322:	f456                	sd	s5,40(sp)
    e881e324:	842e                	mv	s0,a1
    ag = AuthGroupForRecord(r, &rr->resrec);
    e881e326:	00860a93          	addi	s5,a2,8
    e881e32a:	85d6                	mv	a1,s5
    e881e32c:	8522                	mv	a0,s0
{
    e881e32e:	e4a6                	sd	s1,72(sp)
    e881e330:	e0ca                	sd	s2,64(sp)
    e881e332:	ec86                	sd	ra,88(sp)
    e881e334:	fc4e                	sd	s3,56(sp)
    e881e336:	f852                	sd	s4,48(sp)
    e881e338:	f05a                	sd	s6,32(sp)
    e881e33a:	ec5e                	sd	s7,24(sp)
    e881e33c:	e862                	sd	s8,16(sp)
    e881e33e:	e466                	sd	s9,8(sp)
    e881e340:	e06a                	sd	s10,0(sp)
    e881e342:	8932                	mv	s2,a2
    ag = AuthGroupForRecord(r, &rr->resrec);
    e881e344:	fd3ff0ef          	jal	ra,e881e316 <AuthGroupForRecord>
    e881e348:	84aa                	mv	s1,a0
    if (!ag) ag = GetAuthGroup(r, &rr->resrec);   // If we don't have a AuthGroup for this name, make one now
    e881e34a:	24051163          	bnez	a0,e881e58c <InsertAuthRecord+0x26e>
    mDNSu16 namelen = DomainNameLength(rr->name);
    e881e34e:	02893503          	ld	a0,40(s2)
    e881e352:	10050593          	addi	a1,a0,256
    e881e356:	df7f40ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881e35a:	8a2a                	mv	s4,a0
    if (r->rrauth_lock) { LogMsg("GetFreeCacheRR ERROR! Cache already locked!"); return(mDNSNULL); }
    e881e35c:	00c44783          	lbu	a5,12(s0)
    e881e360:	cba1                	beqz	a5,e881e3b0 <InsertAuthRecord+0x92>
    e881e362:	00087597          	auipc	a1,0x87
    e881e366:	7be58593          	addi	a1,a1,1982 # e88a5b20 <end.8789+0x2478>
    e881e36a:	4501                	li	a0,0
    e881e36c:	140110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    const mDNSu32 slot = rr->namehash % AUTH_HASH_SLOTS;
    e881e370:	01892983          	lw	s3,24(s2)
    e881e374:	1f300793          	li	a5,499
    e881e378:	02f9f9bb          	remuw	s3,s3,a5
    if (!ag) { LogMsg("GetAuthGroup: Failed to allocate memory for %##s", rr->name->c); return(mDNSNULL); }
    e881e37c:	14049d63          	bnez	s1,e881e4d6 <InsertAuthRecord+0x1b8>
    e881e380:	02893603          	ld	a2,40(s2)
    e881e384:	00088597          	auipc	a1,0x88
    e881e388:	8b458593          	addi	a1,a1,-1868 # e88a5c38 <end.8789+0x2590>
    e881e38c:	4501                	li	a0,0
    e881e38e:	11e110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e881e392:	60e6                	ld	ra,88(sp)
    e881e394:	6446                	ld	s0,80(sp)
    e881e396:	8526                	mv	a0,s1
    e881e398:	6906                	ld	s2,64(sp)
    e881e39a:	64a6                	ld	s1,72(sp)
    e881e39c:	79e2                	ld	s3,56(sp)
    e881e39e:	7a42                	ld	s4,48(sp)
    e881e3a0:	7aa2                	ld	s5,40(sp)
    e881e3a2:	7b02                	ld	s6,32(sp)
    e881e3a4:	6be2                	ld	s7,24(sp)
    e881e3a6:	6c42                	ld	s8,16(sp)
    e881e3a8:	6ca2                	ld	s9,8(sp)
    e881e3aa:	6d02                	ld	s10,0(sp)
    e881e3ac:	6125                	addi	sp,sp,96
    e881e3ae:	8082                	ret
    r->rrauth_lock = 1;
    e881e3b0:	4785                	li	a5,1
    e881e3b2:	00f40623          	sb	a5,12(s0)
    if (!r->rrauth_free)
    e881e3b6:	681c                	ld	a5,16(s0)
    e881e3b8:	e3b5                	bnez	a5,e881e41c <InsertAuthRecord+0xfe>
        AuthEntity *storage = mDNSPlatformMemAllocate(sizeof(AuthEntity));
    e881e3ba:	0b000513          	li	a0,176
    e881e3be:	6a5110ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
        storage->next = mDNSNULL;
    e881e3c2:	00053023          	sd	zero,0(a0)
        r->rrauth_free = storage;
    e881e3c6:	e808                	sd	a0,16(s0)
    if (!r->rrauth_free)
    e881e3c8:	e931                	bnez	a0,e881e41c <InsertAuthRecord+0xfe>
        mDNSu32 oldtotalused = r->rrauth_totalused;
    e881e3ca:	6b05                	lui	s6,0x1
    e881e3cc:	00442c03          	lw	s8,4(s0)
        for (slot = 0; slot < AUTH_HASH_SLOTS; slot++)
    e881e3d0:	fb0b0b13          	addi	s6,s6,-80 # fb0 <memcmp-0xe87ff050>
    e881e3d4:	01840b93          	addi	s7,s0,24
    e881e3d8:	9b22                	add	s6,s6,s0
    LogMsg("ReleaseAuthGroup:  Releasing AuthGroup %##s", (*cp)->name->c);
    e881e3da:	00087c97          	auipc	s9,0x87
    e881e3de:	776c8c93          	addi	s9,s9,1910 # e88a5b50 <end.8789+0x24a8>
        LogMsg("ERROR: (*cp)->members == mDNSNULL but (*cp)->rrauth_tail != &(*cp)->members)");
    e881e3e2:	00087d17          	auipc	s10,0x87
    e881e3e6:	79ed0d13          	addi	s10,s10,1950 # e88a5b80 <end.8789+0x24d8>
            AuthGroup **cp = &r->rrauth_hash[slot];
    e881e3ea:	84de                	mv	s1,s7
            while (*cp)
    e881e3ec:	0004b983          	ld	s3,0(s1)
    e881e3f0:	06099d63          	bnez	s3,e881e46a <InsertAuthRecord+0x14c>
        for (slot = 0; slot < AUTH_HASH_SLOTS; slot++)
    e881e3f4:	0ba1                	addi	s7,s7,8
    e881e3f6:	ff7b1ae3          	bne	s6,s7,e881e3ea <InsertAuthRecord+0xcc>
        LogInfo("GetAuthEntity: Recycled %d records to reduce auth cache from %d to %d",
    e881e3fa:	000b6797          	auipc	a5,0xb6
    e881e3fe:	67a78793          	addi	a5,a5,1658 # e88d4a74 <mDNS_LoggingEnabled>
    e881e402:	439c                	lw	a5,0(a5)
    e881e404:	cf81                	beqz	a5,e881e41c <InsertAuthRecord+0xfe>
    e881e406:	4058                	lw	a4,4(s0)
    e881e408:	86e2                	mv	a3,s8
    e881e40a:	00087597          	auipc	a1,0x87
    e881e40e:	7c658593          	addi	a1,a1,1990 # e88a5bd0 <end.8789+0x2528>
    e881e412:	40ec063b          	subw	a2,s8,a4
    e881e416:	450d                	li	a0,3
    e881e418:	094110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (r->rrauth_free) // If there are records in the free list, take one
    e881e41c:	6804                	ld	s1,16(s0)
    e881e41e:	c0b9                	beqz	s1,e881e464 <InsertAuthRecord+0x146>
        r->rrauth_free = e->next;
    e881e420:	609c                	ld	a5,0(s1)
    e881e422:	e81c                	sd	a5,16(s0)
        if (++r->rrauth_totalused >= r->rrauth_report)
    e881e424:	405c                	lw	a5,4(s0)
    e881e426:	0017861b          	addiw	a2,a5,1
    e881e42a:	441c                	lw	a5,8(s0)
    e881e42c:	c050                	sw	a2,4(s0)
    e881e42e:	02f66663          	bltu	a2,a5,e881e45a <InsertAuthRecord+0x13c>
            LogInfo("RR Auth now using %ld objects", r->rrauth_totalused);
    e881e432:	000b6797          	auipc	a5,0xb6
    e881e436:	64278793          	addi	a5,a5,1602 # e88d4a74 <mDNS_LoggingEnabled>
    e881e43a:	439c                	lw	a5,0(a5)
    e881e43c:	cb81                	beqz	a5,e881e44c <InsertAuthRecord+0x12e>
    e881e43e:	00087597          	auipc	a1,0x87
    e881e442:	7da58593          	addi	a1,a1,2010 # e88a5c18 <end.8789+0x2570>
    e881e446:	450d                	li	a0,3
    e881e448:	064110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if      (r->rrauth_report <  100) r->rrauth_report += 10;
    e881e44c:	441c                	lw	a5,8(s0)
    e881e44e:	06300713          	li	a4,99
    e881e452:	06f76863          	bltu	a4,a5,e881e4c2 <InsertAuthRecord+0x1a4>
    e881e456:	27a9                	addiw	a5,a5,10
            else r->rrauth_report += 1000;
    e881e458:	c41c                	sw	a5,8(s0)
        mDNSPlatformMemZero(e, sizeof(*e));
    e881e45a:	0b000593          	li	a1,176
    e881e45e:	8526                	mv	a0,s1
    e881e460:	696110ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    r->rrauth_lock = 0;
    e881e464:	00040623          	sb	zero,12(s0)
    return(e);
    e881e468:	b721                	j	e881e370 <InsertAuthRecord+0x52>
                if ((*cp)->members || (*cp)==PreserveAG) cp=&(*cp)->next;
    e881e46a:	0109b783          	ld	a5,16(s3)
    e881e46e:	c399                	beqz	a5,e881e474 <InsertAuthRecord+0x156>
    e881e470:	84ce                	mv	s1,s3
    e881e472:	bfad                	j	e881e3ec <InsertAuthRecord+0xce>
    LogMsg("ReleaseAuthGroup:  Releasing AuthGroup %##s", (*cp)->name->c);
    e881e474:	0209b603          	ld	a2,32(s3)
    e881e478:	85e6                	mv	a1,s9
    e881e47a:	4501                	li	a0,0
    e881e47c:	030110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if ((*cp)->rrauth_tail != &(*cp)->members)
    e881e480:	609c                	ld	a5,0(s1)
    e881e482:	01078713          	addi	a4,a5,16
    e881e486:	6f9c                	ld	a5,24(a5)
    e881e488:	00e78663          	beq	a5,a4,e881e494 <InsertAuthRecord+0x176>
        LogMsg("ERROR: (*cp)->members == mDNSNULL but (*cp)->rrauth_tail != &(*cp)->members)");
    e881e48c:	85ea                	mv	a1,s10
    e881e48e:	4501                	li	a0,0
    e881e490:	01c110ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if ((*cp)->name != (domainname*)((*cp)->namestorage)) mDNSPlatformMemFree((*cp)->name);
    e881e494:	609c                	ld	a5,0(s1)
    e881e496:	7388                	ld	a0,32(a5)
    e881e498:	03078793          	addi	a5,a5,48
    e881e49c:	00f50463          	beq	a0,a5,e881e4a4 <InsertAuthRecord+0x186>
    e881e4a0:	5e3110ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    (*cp)->name = mDNSNULL;
    e881e4a4:	609c                	ld	a5,0(s1)
    e881e4a6:	0207b023          	sd	zero,32(a5)
    *cp = (*cp)->next;          // Cut record from list
    e881e4aa:	609c                	ld	a5,0(s1)
    e881e4ac:	639c                	ld	a5,0(a5)
    e881e4ae:	e09c                	sd	a5,0(s1)
    e->next = r->rrauth_free;
    e881e4b0:	681c                	ld	a5,16(s0)
    e881e4b2:	00f9b023          	sd	a5,0(s3)
    r->rrauth_totalused--;
    e881e4b6:	405c                	lw	a5,4(s0)
    r->rrauth_free = e;
    e881e4b8:	01343823          	sd	s3,16(s0)
    r->rrauth_totalused--;
    e881e4bc:	37fd                	addiw	a5,a5,-1
    e881e4be:	c05c                	sw	a5,4(s0)
    e881e4c0:	b735                	j	e881e3ec <InsertAuthRecord+0xce>
            else if (r->rrauth_report < 1000) r->rrauth_report += 100;
    e881e4c2:	3e700713          	li	a4,999
    e881e4c6:	00f76563          	bltu	a4,a5,e881e4d0 <InsertAuthRecord+0x1b2>
    e881e4ca:	0647879b          	addiw	a5,a5,100
    e881e4ce:	b769                	j	e881e458 <InsertAuthRecord+0x13a>
            else r->rrauth_report += 1000;
    e881e4d0:	3e87879b          	addiw	a5,a5,1000
    e881e4d4:	b751                	j	e881e458 <InsertAuthRecord+0x13a>
    ag->next         = r->rrauth_hash[slot];
    e881e4d6:	0734198b          	addsl	s3,s0,s3,3
    e881e4da:	0189b783          	ld	a5,24(s3)
    if (namelen > sizeof(ag->namestorage))
    e881e4de:	000a051b          	sext.w	a0,s4
    ag->next         = r->rrauth_hash[slot];
    e881e4e2:	e09c                	sd	a5,0(s1)
    ag->namehash     = rr->namehash;
    e881e4e4:	01892783          	lw	a5,24(s2)
    e881e4e8:	c49c                	sw	a5,8(s1)
    ag->members      = mDNSNULL;
    e881e4ea:	87a6                	mv	a5,s1
    e881e4ec:	6a87d00b          	sdib	zero,(a5),8,1
    ag->rrauth_tail  = &ag->members;
    e881e4f0:	ec9c                	sd	a5,24(s1)
    ag->NewLocalOnlyRecords = mDNSNULL;
    e881e4f2:	0204b423          	sd	zero,40(s1)
    if (namelen > sizeof(ag->namestorage))
    e881e4f6:	08000793          	li	a5,128
    e881e4fa:	02a7f663          	bgeu	a5,a0,e881e526 <InsertAuthRecord+0x208>
        ag->name = mDNSPlatformMemAllocate(namelen);
    e881e4fe:	565110ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e881e502:	f088                	sd	a0,32(s1)
    if (!ag->name)
    e881e504:	e505                	bnez	a0,e881e52c <InsertAuthRecord+0x20e>
        LogMsg("GetAuthGroup: Failed to allocate name storage for %##s", rr->name->c);
    e881e506:	02893603          	ld	a2,40(s2)
    e881e50a:	00087597          	auipc	a1,0x87
    e881e50e:	76658593          	addi	a1,a1,1894 # e88a5c70 <end.8789+0x25c8>
    e881e512:	79b100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e->next = r->rrauth_free;
    e881e516:	681c                	ld	a5,16(s0)
    e881e518:	e09c                	sd	a5,0(s1)
    r->rrauth_totalused--;
    e881e51a:	405c                	lw	a5,4(s0)
    r->rrauth_free = e;
    e881e51c:	e804                	sd	s1,16(s0)
        return(mDNSNULL);
    e881e51e:	4481                	li	s1,0
    r->rrauth_totalused--;
    e881e520:	37fd                	addiw	a5,a5,-1
    e881e522:	c05c                	sw	a5,4(s0)
    if (ag)
    e881e524:	b5bd                	j	e881e392 <InsertAuthRecord+0x74>
        ag->name = (domainname*)ag->namestorage;
    e881e526:	03048793          	addi	a5,s1,48
    e881e52a:	f09c                	sd	a5,32(s1)
    AssignDomainName(ag->name, rr->name);
    e881e52c:	02893503          	ld	a0,40(s2)
    e881e530:	10050593          	addi	a1,a0,256
    e881e534:	c19f40ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881e538:	0005061b          	sext.w	a2,a0
    e881e53c:	10000793          	li	a5,256
    e881e540:	7088                	ld	a0,32(s1)
    e881e542:	04c7eb63          	bltu	a5,a2,e881e598 <InsertAuthRecord+0x27a>
    e881e546:	02893583          	ld	a1,40(s2)
    e881e54a:	556110ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    if (AuthGroupForRecord(r, rr)) LogMsg("GetAuthGroup: Already have AuthGroup for %##s", rr->name->c);
    e881e54e:	85d6                	mv	a1,s5
    e881e550:	8522                	mv	a0,s0
    e881e552:	dc5ff0ef          	jal	ra,e881e316 <AuthGroupForRecord>
    e881e556:	c911                	beqz	a0,e881e56a <InsertAuthRecord+0x24c>
    e881e558:	02893603          	ld	a2,40(s2)
    e881e55c:	00087597          	auipc	a1,0x87
    e881e560:	74c58593          	addi	a1,a1,1868 # e88a5ca8 <end.8789+0x2600>
    e881e564:	4501                	li	a0,0
    e881e566:	747100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    r->rrauth_hash[slot] = ag;
    e881e56a:	0099bc23          	sd	s1,24(s3)
    if (AuthGroupForRecord(r, rr) != ag) LogMsg("GetAuthGroup: Not finding AuthGroup for %##s", rr->name->c);
    e881e56e:	85d6                	mv	a1,s5
    e881e570:	8522                	mv	a0,s0
    e881e572:	da5ff0ef          	jal	ra,e881e316 <AuthGroupForRecord>
    e881e576:	00a48b63          	beq	s1,a0,e881e58c <InsertAuthRecord+0x26e>
    e881e57a:	02893603          	ld	a2,40(s2)
    e881e57e:	00087597          	auipc	a1,0x87
    e881e582:	75a58593          	addi	a1,a1,1882 # e88a5cd8 <end.8789+0x2630>
    e881e586:	4501                	li	a0,0
    e881e588:	725100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        *(ag->rrauth_tail) = rr;                // Append this record to tail of cache slot list
    e881e58c:	6c9c                	ld	a5,24(s1)
    e881e58e:	0127b023          	sd	s2,0(a5)
        ag->rrauth_tail = &(rr->next);          // Advance tail pointer
    e881e592:	0124bc23          	sd	s2,24(s1)
    e881e596:	bbf5                	j	e881e392 <InsertAuthRecord+0x74>
    AssignDomainName(ag->name, rr->name);
    e881e598:	00050023          	sb	zero,0(a0)
    e881e59c:	bf4d                	j	e881e54e <InsertAuthRecord+0x230>

00000000e881e59e <RemoveAuthRecord>:
{
    e881e59e:	7139                	addi	sp,sp,-64
    e881e5a0:	fd515a0b          	sdd	s4,s5,(sp),2,4
    a = AuthGroupForRecord(r, &rr->resrec);
    e881e5a4:	00860a13          	addi	s4,a2,8
{
    e881e5a8:	fb31590b          	sdd	s2,s3,(sp),1,4
    e881e5ac:	89aa                	mv	s3,a0
    e881e5ae:	852e                	mv	a0,a1
    a = AuthGroupForRecord(r, &rr->resrec);
    e881e5b0:	85d2                	mv	a1,s4
{
    e881e5b2:	f891540b          	sdd	s0,s1,(sp),0,4
    e881e5b6:	fc06                	sd	ra,56(sp)
    e881e5b8:	f85a                	sd	s6,48(sp)
    e881e5ba:	8932                	mv	s2,a2
    a = AuthGroupForRecord(r, &rr->resrec);
    e881e5bc:	d5bff0ef          	jal	ra,e881e316 <AuthGroupForRecord>
    e881e5c0:	84aa                	mv	s1,a0
    if (!a) { LogMsg("RemoveAuthRecord: ERROR!! AuthGroup not found for %s", ARDisplayString(m, rr)); return mDNSNULL; }
    e881e5c2:	c10d                	beqz	a0,e881e5e4 <RemoveAuthRecord+0x46>
    e881e5c4:	01050413          	addi	s0,a0,16
            LogInfo("RemoveAuthRecord: removing auth record %s from table", ARDisplayString(m, rr));
    e881e5c8:	000b6a97          	auipc	s5,0xb6
    e881e5cc:	4aca8a93          	addi	s5,s5,1196 # e88d4a74 <mDNS_LoggingEnabled>
    e881e5d0:	03b98993          	addi	s3,s3,59
    e881e5d4:	00088b17          	auipc	s6,0x88
    e881e5d8:	d44b0b13          	addi	s6,s6,-700 # e88a6318 <end.8789+0x2c70>
    while (*rp)
    e881e5dc:	601c                	ld	a5,0(s0)
    e881e5de:	ef95                	bnez	a5,e881e61a <RemoveAuthRecord+0x7c>
    a->rrauth_tail = rp;
    e881e5e0:	ec80                	sd	s0,24(s1)
    return a;
    e881e5e2:	a00d                	j	e881e604 <RemoveAuthRecord+0x66>
    if (!a) { LogMsg("RemoveAuthRecord: ERROR!! AuthGroup not found for %s", ARDisplayString(m, rr)); return mDNSNULL; }
    e881e5e4:	03093583          	ld	a1,48(s2)
    e881e5e8:	03b98613          	addi	a2,s3,59
    e881e5ec:	8552                	mv	a0,s4
    e881e5ee:	0591                	addi	a1,a1,4
    e881e5f0:	c24f80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881e5f4:	862a                	mv	a2,a0
    e881e5f6:	00088597          	auipc	a1,0x88
    e881e5fa:	cea58593          	addi	a1,a1,-790 # e88a62e0 <end.8789+0x2c38>
    e881e5fe:	4501                	li	a0,0
    e881e600:	6ad100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e881e604:	8526                	mv	a0,s1
    e881e606:	70e2                	ld	ra,56(sp)
    e881e608:	f891440b          	ldd	s0,s1,(sp),0,4
    e881e60c:	7b42                	ld	s6,48(sp)
    e881e60e:	fb31490b          	ldd	s2,s3,(sp),1,4
    e881e612:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e881e616:	6121                	addi	sp,sp,64
    e881e618:	8082                	ret
        if (*rp != rr)
    e881e61a:	01278463          	beq	a5,s2,e881e622 <RemoveAuthRecord+0x84>
            rp=&(*rp)->next;
    e881e61e:	843e                	mv	s0,a5
    e881e620:	bf75                	j	e881e5dc <RemoveAuthRecord+0x3e>
            LogInfo("RemoveAuthRecord: removing auth record %s from table", ARDisplayString(m, rr));
    e881e622:	000aa783          	lw	a5,0(s5)
    e881e626:	cf89                	beqz	a5,e881e640 <RemoveAuthRecord+0xa2>
    e881e628:	03093583          	ld	a1,48(s2)
    e881e62c:	864e                	mv	a2,s3
    e881e62e:	8552                	mv	a0,s4
    e881e630:	0591                	addi	a1,a1,4
    e881e632:	be2f80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881e636:	862a                	mv	a2,a0
    e881e638:	85da                	mv	a1,s6
    e881e63a:	450d                	li	a0,3
    e881e63c:	671100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            *rp = (*rp)->next;          // Cut record from list
    e881e640:	601c                	ld	a5,0(s0)
    e881e642:	639c                	ld	a5,0(a5)
    e881e644:	e01c                	sd	a5,0(s0)
    e881e646:	bf59                	j	e881e5dc <RemoveAuthRecord+0x3e>

00000000e881e648 <CacheGroupForName>:
    mDNSu32    slot = HashSlotFromNameHash(namehash);
    e881e648:	1f300793          	li	a5,499
    e881e64c:	02f5f7bb          	remuw	a5,a1,a5
{
    e881e650:	7179                	addi	sp,sp,-48
    e881e652:	f026                	sd	s1,32(sp)
    e881e654:	f406                	sd	ra,40(sp)
    e881e656:	ec22                	sd	s0,24(sp)
    e881e658:	84ae                	mv	s1,a1
    for (cg = m->rrcache_hash[slot]; cg; cg=cg->next)
    e881e65a:	06278793          	addi	a5,a5,98
    e881e65e:	66f5440b          	lrd	s0,a0,a5,3
    e881e662:	cc09                	beqz	s0,e881e67c <CacheGroupForName+0x34>
        if (cg->namehash == namehash && SameDomainName(cg->name, name))
    e881e664:	441c                	lw	a5,8(s0)
    e881e666:	00978463          	beq	a5,s1,e881e66e <CacheGroupForName+0x26>
    for (cg = m->rrcache_hash[slot]; cg; cg=cg->next)
    e881e66a:	6000                	ld	s0,0(s0)
    e881e66c:	bfdd                	j	e881e662 <CacheGroupForName+0x1a>
        if (cg->namehash == namehash && SameDomainName(cg->name, name))
    e881e66e:	7008                	ld	a0,32(s0)
    e881e670:	85b2                	mv	a1,a2
    e881e672:	e432                	sd	a2,8(sp)
    e881e674:	9d7f40ef          	jal	ra,e881304a <SameDomainName>
    e881e678:	6622                	ld	a2,8(sp)
    e881e67a:	d965                	beqz	a0,e881e66a <CacheGroupForName+0x22>
}
    e881e67c:	8522                	mv	a0,s0
    e881e67e:	70a2                	ld	ra,40(sp)
    e881e680:	6462                	ld	s0,24(sp)
    e881e682:	7482                	ld	s1,32(sp)
    e881e684:	6145                	addi	sp,sp,48
    e881e686:	8082                	ret

00000000e881e688 <FindSPSInCache1>:
{
    e881e688:	711d                	addi	sp,sp,-96
    e881e68a:	e4a6                	sd	s1,72(sp)
    e881e68c:	e0ca                	sd	s2,64(sp)
    e881e68e:	fc4e                	sd	s3,56(sp)
    e881e690:	f05a                	sd	s6,32(sp)
    e881e692:	e862                	sd	s8,16(sp)
    e881e694:	ec86                	sd	ra,88(sp)
    e881e696:	e8a2                	sd	s0,80(sp)
    e881e698:	f852                	sd	s4,48(sp)
    e881e69a:	f456                	sd	s5,40(sp)
    e881e69c:	ec5e                	sd	s7,24(sp)
    e881e69e:	e466                	sd	s9,8(sp)
    e881e6a0:	e06a                	sd	s10,0(sp)
    e881e6a2:	84ae                	mv	s1,a1
    e881e6a4:	8932                	mv	s2,a2
    CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e881e6a6:	21458613          	addi	a2,a1,532
    e881e6aa:	458c                	lw	a1,8(a1)
{
    e881e6ac:	8b2a                	mv	s6,a0
    e881e6ae:	89b6                	mv	s3,a3
    CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e881e6b0:	f99ff0ef          	jal	ra,e881e648 <CacheGroupForName>
    e881e6b4:	8c2a                	mv	s8,a0
    for (cr = cg ? cg->members : mDNSNULL; cr; cr=cr->next)
    e881e6b6:	c10d                	beqz	a0,e881e6d8 <FindSPSInCache1+0x50>
    e881e6b8:	000f4cb7          	lui	s9,0xf4
                    if (!IdenticalSameNameRecord(&cr->resrec, &m->SPSRecords.RR_PTR.resrec))    // and is not our own advertised service...
    e881e6bc:	547d                	li	s0,-1
    for (cr = cg ? cg->members : mDNSNULL; cr; cr=cr->next)
    e881e6be:	01053a83          	ld	s5,16(a0)
    e881e6c2:	240c8c93          	addi	s9,s9,576 # f4240 <memcmp-0xe870bdc0>
                    if (!IdenticalSameNameRecord(&cr->resrec, &m->SPSRecords.RR_PTR.resrec))    // and is not our own advertised service...
    e881e6c6:	1402                	slli	s0,s0,0x20
    e881e6c8:	6791                	lui	a5,0x4
    for (cr = cg ? cg->members : mDNSNULL; cr; cr=cr->next)
    e881e6ca:	4c01                	li	s8,0
        if (cr->resrec.rrtype == kDNSType_PTR && cr->resrec.rdlength >= 6)                      // If record is PTR type, with long enough name,
    e881e6cc:	4a31                	li	s4,12
                    if (!IdenticalSameNameRecord(&cr->resrec, &m->SPSRecords.RR_PTR.resrec))    // and is not our own advertised service...
    e881e6ce:	8041                	srli	s0,s0,0x10
    e881e6d0:	9b3e                	add	s6,s6,a5
                        mDNSu32 metric = SPSMetric(cr->resrec.rdata->u.name.c);
    e881e6d2:	8be6                	mv	s7,s9
    for (cr = cg ? cg->members : mDNSNULL; cr; cr=cr->next)
    e881e6d4:	020a9163          	bnez	s5,e881e6f6 <FindSPSInCache1+0x6e>
}
    e881e6d8:	60e6                	ld	ra,88(sp)
    e881e6da:	6446                	ld	s0,80(sp)
    e881e6dc:	8562                	mv	a0,s8
    e881e6de:	64a6                	ld	s1,72(sp)
    e881e6e0:	6906                	ld	s2,64(sp)
    e881e6e2:	79e2                	ld	s3,56(sp)
    e881e6e4:	7a42                	ld	s4,48(sp)
    e881e6e6:	7aa2                	ld	s5,40(sp)
    e881e6e8:	7b02                	ld	s6,32(sp)
    e881e6ea:	6be2                	ld	s7,24(sp)
    e881e6ec:	6c42                	ld	s8,16(sp)
    e881e6ee:	6ca2                	ld	s9,8(sp)
    e881e6f0:	6d02                	ld	s10,0(sp)
    e881e6f2:	6125                	addi	sp,sp,96
    e881e6f4:	8082                	ret
        if (cr->resrec.rrtype == kDNSType_PTR && cr->resrec.rdlength >= 6)                      // If record is PTR type, with long enough name,
    e881e6f6:	00aad783          	lhu	a5,10(s5)
    e881e6fa:	07479e63          	bne	a5,s4,e881e776 <FindSPSInCache1+0xee>
    e881e6fe:	014ad703          	lhu	a4,20(s5)
    e881e702:	4795                	li	a5,5
    e881e704:	06e7f963          	bgeu	a5,a4,e881e776 <FindSPSInCache1+0xee>
            if (cr != c0 && cr != c1)                                                           // that's not one we've seen before,
    e881e708:	072a8763          	beq	s5,s2,e881e776 <FindSPSInCache1+0xee>
    e881e70c:	073a8563          	beq	s5,s3,e881e776 <FindSPSInCache1+0xee>
                if (SameNameRecordAnswersQuestion(&cr->resrec, q))                              // and answers our browse query,
    e881e710:	008a8d13          	addi	s10,s5,8
    e881e714:	85a6                	mv	a1,s1
    e881e716:	856a                	mv	a0,s10
    e881e718:	f72f70ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e881e71c:	cd29                	beqz	a0,e881e776 <FindSPSInCache1+0xee>
                    if (!IdenticalSameNameRecord(&cr->resrec, &m->SPSRecords.RR_PTR.resrec))    // and is not our own advertised service...
    e881e71e:	008ab703          	ld	a4,8(s5)
    e881e722:	1e0b3783          	ld	a5,480(s6)
    e881e726:	8f61                	and	a4,a4,s0
    e881e728:	8fe1                	and	a5,a5,s0
    e881e72a:	00f70f63          	beq	a4,a5,e881e748 <FindSPSInCache1+0xc0>
                        mDNSu32 metric = SPSMetric(cr->resrec.rdata->u.name.c);
    e881e72e:	030ab703          	ld	a4,48(s5)
    e881e732:	4791                	li	a5,4
    e881e734:	00474303          	lbu	t1,4(a4)
    e881e738:	0467e263          	bltu	a5,t1,e881e77c <FindSPSInCache1+0xf4>
    e881e73c:	87de                	mv	a5,s7
                        if (bestmetric > metric) { bestmetric = metric; bestcr = cr; }
    e881e73e:	0397fc63          	bgeu	a5,s9,e881e776 <FindSPSInCache1+0xee>
    e881e742:	8cbe                	mv	s9,a5
    e881e744:	8c56                	mv	s8,s5
    e881e746:	a805                	j	e881e776 <FindSPSInCache1+0xee>
                    if (!IdenticalSameNameRecord(&cr->resrec, &m->SPSRecords.RR_PTR.resrec))    // and is not our own advertised service...
    e881e748:	014ad703          	lhu	a4,20(s5)
    e881e74c:	1ecb5783          	lhu	a5,492(s6)
    e881e750:	fcf71fe3          	bne	a4,a5,e881e72e <FindSPSInCache1+0xa6>
    e881e754:	01caa703          	lw	a4,28(s5)
    e881e758:	1f4b2783          	lw	a5,500(s6)
    e881e75c:	fcf719e3          	bne	a4,a5,e881e72e <FindSPSInCache1+0xa6>
    e881e760:	208b3583          	ld	a1,520(s6)
    e881e764:	ffff5617          	auipc	a2,0xffff5
    e881e768:	8e660613          	addi	a2,a2,-1818 # e881304a <SameDomainName>
    e881e76c:	856a                	mv	a0,s10
    e881e76e:	0591                	addi	a1,a1,4
    e881e770:	89bf50ef          	jal	ra,e881400a <SameRDataBody>
    e881e774:	dd4d                	beqz	a0,e881e72e <FindSPSInCache1+0xa6>
    for (cr = cg ? cg->members : mDNSNULL; cr; cr=cr->next)
    e881e776:	000aba83          	ld	s5,0(s5)
    e881e77a:	bfa9                	j	e881e6d4 <FindSPSInCache1+0x4c>
                        mDNSu32 metric = SPSMetric(cr->resrec.rdata->u.name.c);
    e881e77c:	00574803          	lbu	a6,5(a4)
    e881e780:	46a5                	li	a3,9
    e881e782:	87de                	mv	a5,s7
    e881e784:	fd08061b          	addiw	a2,a6,-48
    e881e788:	0ff67613          	andi	a2,a2,255
    e881e78c:	fac6e9e3          	bltu	a3,a2,e881e73e <FindSPSInCache1+0xb6>
    e881e790:	00674503          	lbu	a0,6(a4)
    e881e794:	fd05061b          	addiw	a2,a0,-48
    e881e798:	0ff67613          	andi	a2,a2,255
    e881e79c:	fac6e1e3          	bltu	a3,a2,e881e73e <FindSPSInCache1+0xb6>
    e881e7a0:	00874583          	lbu	a1,8(a4)
    e881e7a4:	fd05861b          	addiw	a2,a1,-48
    e881e7a8:	0ff67613          	andi	a2,a2,255
    e881e7ac:	f8c6e9e3          	bltu	a3,a2,e881e73e <FindSPSInCache1+0xb6>
    e881e7b0:	00974603          	lbu	a2,9(a4)
    e881e7b4:	fd06089b          	addiw	a7,a2,-48
    e881e7b8:	0ff8f893          	andi	a7,a7,255
    e881e7bc:	f916e1e3          	bltu	a3,a7,e881e73e <FindSPSInCache1+0xb6>
    e881e7c0:	47a9                	li	a5,10
    e881e7c2:	0267f863          	bgeu	a5,t1,e881e7f2 <FindSPSInCache1+0x16a>
    e881e7c6:	00774683          	lbu	a3,7(a4)
    e881e7ca:	02d00793          	li	a5,45
    e881e7ce:	02f69263          	bne	a3,a5,e881e7f2 <FindSPSInCache1+0x16a>
    e881e7d2:	4714                	lw	a3,8(a4)
    e881e7d4:	392d47b7          	lui	a5,0x392d4
    e881e7d8:	93978793          	addi	a5,a5,-1735 # 392d3939 <memcmp-0xaf52c6c7>
    e881e7dc:	00f69b63          	bne	a3,a5,e881e7f2 <FindSPSInCache1+0x16a>
    e881e7e0:	00c72883          	lw	a7,12(a4)
    e881e7e4:	393936b7          	lui	a3,0x39393
    e881e7e8:	d3968693          	addi	a3,a3,-711 # 39392d39 <memcmp-0xaf46d2c7>
    e881e7ec:	87de                	mv	a5,s7
    e881e7ee:	f4d888e3          	beq	a7,a3,e881e73e <FindSPSInCache1+0xb6>
    e881e7f2:	00c74783          	lbu	a5,12(a4)
    e881e7f6:	ffaea6b7          	lui	a3,0xffaea
    e881e7fa:	eb06869b          	addiw	a3,a3,-336
    e881e7fe:	9fb5                	addw	a5,a5,a3
    e881e800:	66e1                	lui	a3,0x18
    e881e802:	6a06869b          	addiw	a3,a3,1696
    e881e806:	2506978b          	mulaw	a5,a3,a6
    e881e80a:	6689                	lui	a3,0x2
    e881e80c:	7106869b          	addiw	a3,a3,1808
    e881e810:	24a6978b          	mulaw	a5,a3,a0
    e881e814:	3e800693          	li	a3,1000
    e881e818:	24b6978b          	mulaw	a5,a3,a1
    e881e81c:	06400693          	li	a3,100
    e881e820:	24c6978b          	mulaw	a5,a3,a2
    e881e824:	00b74683          	lbu	a3,11(a4)
    e881e828:	4729                	li	a4,10
    e881e82a:	24e6978b          	mulaw	a5,a3,a4
    e881e82e:	bf01                	j	e881e73e <FindSPSInCache1+0xb6>

00000000e881e830 <CacheGroupForRecord>:
    return(CacheGroupForName(m, rr->namehash, rr->name));
    e881e830:	7190                	ld	a2,32(a1)
    e881e832:	498c                	lw	a1,16(a1)
    e881e834:	e15ff06f          	j	e881e648 <CacheGroupForName>

00000000e881e838 <FindIdenticalRecordInCache>:
{
    e881e838:	7179                	addi	sp,sp,-48
    e881e83a:	e826                	sd	s1,16(sp)
    e881e83c:	f406                	sd	ra,40(sp)
    e881e83e:	e422                	sd	s0,8(sp)
    e881e840:	ec4a                	sd	s2,24(sp)
    e881e842:	f04e                	sd	s3,32(sp)
    e881e844:	84ae                	mv	s1,a1
    CacheGroup *cg = CacheGroupForRecord(m, pktrr);
    e881e846:	febff0ef          	jal	ra,e881e830 <CacheGroupForRecord>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e881e84a:	e911                	bnez	a0,e881e85e <FindIdenticalRecordInCache+0x26>
            mDNSu16 id2 = (rr->resrec.rDNSServer ? rr->resrec.rDNSServer->resGroupID : 0);
    e881e84c:	4401                	li	s0,0
}
    e881e84e:	8522                	mv	a0,s0
    e881e850:	70a2                	ld	ra,40(sp)
    e881e852:	6422                	ld	s0,8(sp)
    e881e854:	64c2                	ld	s1,16(sp)
    e881e856:	6962                	ld	s2,24(sp)
    e881e858:	7982                	ld	s3,32(sp)
    e881e85a:	6145                	addi	sp,sp,48
    e881e85c:	8082                	ret
        if (match && IdenticalSameNameRecord(pktrr, &rr->resrec)) break;
    e881e85e:	597d                	li	s2,-1
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e881e860:	6900                	ld	s0,16(a0)
        if (match && IdenticalSameNameRecord(pktrr, &rr->resrec)) break;
    e881e862:	1902                	slli	s2,s2,0x20
    e881e864:	01095913          	srli	s2,s2,0x10
    e881e868:	ffff4997          	auipc	s3,0xffff4
    e881e86c:	7e298993          	addi	s3,s3,2018 # e881304a <SameDomainName>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e881e870:	dc71                	beqz	s0,e881e84c <FindIdenticalRecordInCache+0x14>
        if (!pktrr->InterfaceID)
    e881e872:	6c98                	ld	a4,24(s1)
    e881e874:	e30d                	bnez	a4,e881e896 <FindIdenticalRecordInCache+0x5e>
            mDNSu16 id1 = (pktrr->rDNSServer ? pktrr->rDNSServer->resGroupID : 0);
    e881e876:	7898                	ld	a4,48(s1)
    e881e878:	4781                	li	a5,0
    e881e87a:	c319                	beqz	a4,e881e880 <FindIdenticalRecordInCache+0x48>
    e881e87c:	13c75783          	lhu	a5,316(a4)
            mDNSu16 id2 = (rr->resrec.rDNSServer ? rr->resrec.rDNSServer->resGroupID : 0);
    e881e880:	7c14                	ld	a3,56(s0)
    e881e882:	4701                	li	a4,0
    e881e884:	c299                	beqz	a3,e881e88a <FindIdenticalRecordInCache+0x52>
    e881e886:	13c6d703          	lhu	a4,316(a3) # 213c <memcmp-0xe87fdec4>
        else match = (pktrr->InterfaceID == rr->resrec.InterfaceID);
    e881e88a:	8f99                	sub	a5,a5,a4
    e881e88c:	0017b793          	seqz	a5,a5
        if (match && IdenticalSameNameRecord(pktrr, &rr->resrec)) break;
    e881e890:	e789                	bnez	a5,e881e89a <FindIdenticalRecordInCache+0x62>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e881e892:	6000                	ld	s0,0(s0)
    e881e894:	bff1                	j	e881e870 <FindIdenticalRecordInCache+0x38>
        else match = (pktrr->InterfaceID == rr->resrec.InterfaceID);
    e881e896:	701c                	ld	a5,32(s0)
    e881e898:	bfcd                	j	e881e88a <FindIdenticalRecordInCache+0x52>
        if (match && IdenticalSameNameRecord(pktrr, &rr->resrec)) break;
    e881e89a:	6098                	ld	a4,0(s1)
    e881e89c:	641c                	ld	a5,8(s0)
    e881e89e:	01277733          	and	a4,a4,s2
    e881e8a2:	0127f7b3          	and	a5,a5,s2
    e881e8a6:	fef716e3          	bne	a4,a5,e881e892 <FindIdenticalRecordInCache+0x5a>
    e881e8aa:	00c4d703          	lhu	a4,12(s1)
    e881e8ae:	01445783          	lhu	a5,20(s0)
    e881e8b2:	fef710e3          	bne	a4,a5,e881e892 <FindIdenticalRecordInCache+0x5a>
    e881e8b6:	48d8                	lw	a4,20(s1)
    e881e8b8:	4c5c                	lw	a5,28(s0)
    e881e8ba:	fcf71ce3          	bne	a4,a5,e881e892 <FindIdenticalRecordInCache+0x5a>
    e881e8be:	780c                	ld	a1,48(s0)
    e881e8c0:	864e                	mv	a2,s3
    e881e8c2:	8526                	mv	a0,s1
    e881e8c4:	0591                	addi	a1,a1,4
    e881e8c6:	f44f50ef          	jal	ra,e881400a <SameRDataBody>
    e881e8ca:	d561                	beqz	a0,e881e892 <FindIdenticalRecordInCache+0x5a>
    e881e8cc:	b749                	j	e881e84e <FindIdenticalRecordInCache+0x16>

00000000e881e8ce <CheckForSoonToExpireRecords>:
{
    e881e8ce:	7119                	addi	sp,sp,-128
    e881e8d0:	ecce                	sd	s3,88(sp)
    const mDNSs32 threshhold = m->timenow + mDNSPlatformOneSecond;  // See if there are any records expiring within one second
    e881e8d2:	000b6997          	auipc	s3,0xb6
    e881e8d6:	1ae98993          	addi	s3,s3,430 # e88d4a80 <mDNSPlatformOneSecond>
{
    e881e8da:	f8a2                	sd	s0,112(sp)
    e881e8dc:	f4a6                	sd	s1,104(sp)
    e881e8de:	f0ca                	sd	s2,96(sp)
    e881e8e0:	e8d2                	sd	s4,80(sp)
    e881e8e2:	e0da                	sd	s6,64(sp)
    e881e8e4:	fc5e                	sd	s7,56(sp)
    e881e8e6:	fc86                	sd	ra,120(sp)
    e881e8e8:	e4d6                	sd	s5,72(sp)
    e881e8ea:	f862                	sd	s8,48(sp)
    e881e8ec:	f466                	sd	s9,40(sp)
    e881e8ee:	f06a                	sd	s10,32(sp)
    e881e8f0:	ec6e                	sd	s11,24(sp)
    const mDNSs32 threshhold = m->timenow + mDNSPlatformOneSecond;  // See if there are any records expiring within one second
    e881e8f2:	0009aa03          	lw	s4,0(s3)
    e881e8f6:	24052783          	lw	a5,576(a0)
{
    e881e8fa:	8732                	mv	a4,a2
    const mDNSs32 start      = m->timenow - 0x10000000;
    e881e8fc:	f0000937          	lui	s2,0xf0000
    CacheGroup *cg = CacheGroupForName(m, namehash, name);
    e881e900:	862e                	mv	a2,a1
    e881e902:	85ba                	mv	a1,a4
    const mDNSs32 start      = m->timenow - 0x10000000;
    e881e904:	00f904bb          	addw	s1,s2,a5
{
    e881e908:	8b2a                	mv	s6,a0
    e881e90a:	8bb6                	mv	s7,a3
    const mDNSs32 threshhold = m->timenow + mDNSPlatformOneSecond;  // See if there are any records expiring within one second
    e881e90c:	00fa0a3b          	addw	s4,s4,a5
    CacheGroup *cg = CacheGroupForName(m, namehash, name);
    e881e910:	d39ff0ef          	jal	ra,e881e648 <CacheGroupForName>
    const mDNSs32 start      = m->timenow - 0x10000000;
    e881e914:	8926                	mv	s2,s1
    CacheGroup *cg = CacheGroupForName(m, namehash, name);
    e881e916:	842a                	mv	s0,a0
    if (purge)
    e881e918:	000b8463          	beqz	s7,e881e920 <CheckForSoonToExpireRecords+0x52>
        *purge = mDNSfalse;
    e881e91c:	000b8023          	sb	zero,0(s7)
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e881e920:	c011                	beqz	s0,e881e924 <CheckForSoonToExpireRecords+0x56>
    e881e922:	6800                	ld	s0,16(s0)
            mDNSu32 uTTL = RRUnadjustedTTL(rr->resrec.rroriginalttl);
    e881e924:	40000c37          	lui	s8,0x40000
    e881e928:	3c79                	addiw	s8,s8,-2
    e881e92a:	4c95                	li	s9,5
                LogInfo("CheckForSoonToExpireRecords: %s: rroriginalttl %u, unadjustedTTL %u, currentTTL %u",
    e881e92c:	000b6d17          	auipc	s10,0xb6
    e881e930:	148d0d13          	addi	s10,s10,328 # e88d4a74 <mDNS_LoggingEnabled>
                *purge = mDNStrue;
    e881e934:	4d85                	li	s11,1
                LogInfo("CheckForSoonToExpireRecords: %s: rroriginalttl %u, unadjustedTTL %u, currentTTL %u",
    e881e936:	03bb0813          	addi	a6,s6,59
    e881e93a:	00086a97          	auipc	s5,0x86
    e881e93e:	5c6a8a93          	addi	s5,s5,1478 # e88a4f00 <end.8789+0x1858>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e881e942:	e41d                	bnez	s0,e881e970 <CheckForSoonToExpireRecords+0xa2>
    if (delay - start > 0)
    e881e944:	4124893b          	subw	s2,s1,s2
    e881e948:	0b205a63          	blez	s2,e881e9fc <CheckForSoonToExpireRecords+0x12e>
    e881e94c:	e091                	bnez	s1,e881e950 <CheckForSoonToExpireRecords+0x82>
    e881e94e:	4485                	li	s1,1
}
    e881e950:	70e6                	ld	ra,120(sp)
    e881e952:	7446                	ld	s0,112(sp)
    e881e954:	8526                	mv	a0,s1
    e881e956:	7906                	ld	s2,96(sp)
    e881e958:	74a6                	ld	s1,104(sp)
    e881e95a:	69e6                	ld	s3,88(sp)
    e881e95c:	6a46                	ld	s4,80(sp)
    e881e95e:	6aa6                	ld	s5,72(sp)
    e881e960:	6b06                	ld	s6,64(sp)
    e881e962:	7be2                	ld	s7,56(sp)
    e881e964:	7c42                	ld	s8,48(sp)
    e881e966:	7ca2                	ld	s9,40(sp)
    e881e968:	7d02                	ld	s10,32(sp)
    e881e96a:	6de2                	ld	s11,24(sp)
    e881e96c:	6109                	addi	sp,sp,128
    e881e96e:	8082                	ret
        if (purge && !rr->resrec.InterfaceID && !rr->CRActiveQuestion && rr->resrec.rroriginalttl)
    e881e970:	480c                	lw	a1,16(s0)
    e881e972:	483c                	lw	a5,80(s0)
    e881e974:	0009a503          	lw	a0,0(s3)
    e881e978:	060b8563          	beqz	s7,e881e9e2 <CheckForSoonToExpireRecords+0x114>
    e881e97c:	7018                	ld	a4,32(s0)
    e881e97e:	e335                	bnez	a4,e881e9e2 <CheckForSoonToExpireRecords+0x114>
    e881e980:	7038                	ld	a4,96(s0)
    e881e982:	e325                	bnez	a4,e881e9e2 <CheckForSoonToExpireRecords+0x114>
    e881e984:	cdb9                	beqz	a1,e881e9e2 <CheckForSoonToExpireRecords+0x114>
            mDNSu32 uTTL = RRUnadjustedTTL(rr->resrec.rroriginalttl);
    e881e986:	018586bb          	addw	a3,a1,s8
    e881e98a:	0026969b          	slliw	a3,a3,0x2
    e881e98e:	0396d73b          	divuw	a4,a3,s9
            if (m->timenow - (rr->TimeRcvd + ((mDNSs32)uTTL * mDNSPlatformOneSecond)) >= 0)
    e881e992:	240b2603          	lw	a2,576(s6)
    e881e996:	9e1d                	subw	a2,a2,a5
    e881e998:	88b2                	mv	a7,a2
    e881e99a:	26a7188b          	mulsw	a7,a4,a0
    e881e99e:	0408c263          	bltz	a7,e881e9e2 <CheckForSoonToExpireRecords+0x114>
                LogInfo("CheckForSoonToExpireRecords: %s: rroriginalttl %u, unadjustedTTL %u, currentTTL %u",
    e881e9a2:	000d2783          	lw	a5,0(s10)
    e881e9a6:	cb95                	beqz	a5,e881e9da <CheckForSoonToExpireRecords+0x10c>
    e881e9a8:	780c                	ld	a1,48(s0)
    e881e9aa:	8642                	mv	a2,a6
    e881e9ac:	00840513          	addi	a0,s0,8
    e881e9b0:	0591                	addi	a1,a1,4
    e881e9b2:	e042                	sd	a6,0(sp)
    e881e9b4:	e43a                	sd	a4,8(sp)
    e881e9b6:	85ef80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881e9ba:	862a                	mv	a2,a0
    e881e9bc:	4834                	lw	a3,80(s0)
    e881e9be:	240b2783          	lw	a5,576(s6)
    e881e9c2:	6722                	ld	a4,8(sp)
    e881e9c4:	85d6                	mv	a1,s5
    e881e9c6:	9f95                	subw	a5,a5,a3
    e881e9c8:	0009a683          	lw	a3,0(s3)
    e881e9cc:	450d                	li	a0,3
    e881e9ce:	02d7c7bb          	divw	a5,a5,a3
    e881e9d2:	4814                	lw	a3,16(s0)
    e881e9d4:	2d9100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881e9d8:	6802                	ld	a6,0(sp)
                *purge = mDNStrue;
    e881e9da:	01bb8023          	sb	s11,0(s7)
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e881e9de:	6000                	ld	s0,0(s0)
    e881e9e0:	b78d                	j	e881e942 <CheckForSoonToExpireRecords+0x74>
        if (threshhold - RRExpireTime(rr) >= 0)     // If we have records about to expire within a second
    e881e9e2:	24a5978b          	mulaw	a5,a1,a0
    e881e9e6:	40fa06bb          	subw	a3,s4,a5
    e881e9ea:	873e                	mv	a4,a5
    e881e9ec:	fe06c9e3          	bltz	a3,e881e9de <CheckForSoonToExpireRecords+0x110>
            if (delay - RRExpireTime(rr) < 0)       // then delay until after they've been deleted
    e881e9f0:	40f487bb          	subw	a5,s1,a5
    e881e9f4:	fe07d5e3          	bgez	a5,e881e9de <CheckForSoonToExpireRecords+0x110>
                delay = RRExpireTime(rr);
    e881e9f8:	84ba                	mv	s1,a4
    e881e9fa:	b7d5                	j	e881e9de <CheckForSoonToExpireRecords+0x110>
        return(0);
    e881e9fc:	4481                	li	s1,0
    e881e9fe:	bf89                	j	e881e950 <CheckForSoonToExpireRecords+0x82>

00000000e881ea00 <mDNS_AddressIsLocalSubnet>:
    if (addr->type == mDNSAddrType_IPv4)
    e881ea00:	4218                	lw	a4,0(a2)
    e881ea02:	4791                	li	a5,4
    e881ea04:	04f71c63          	bne	a4,a5,e881ea5c <mDNS_AddressIsLocalSubnet+0x5c>
        if (mDNSv4AddressIsLinkLocal(&addr->ip.v4)) return(mDNStrue);
    e881ea08:	4250                	lw	a2,4(a2)
    e881ea0a:	6741                	lui	a4,0x10
    e881ea0c:	ea970713          	addi	a4,a4,-343 # fea9 <memcmp-0xe87f0157>
    e881ea10:	3c06368b          	extu	a3,a2,15,0
    e881ea14:	4785                	li	a5,1
    e881ea16:	00e68a63          	beq	a3,a4,e881ea2a <mDNS_AddressIsLocalSubnet+0x2a>
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881ea1a:	678d                	lui	a5,0x3
    e881ea1c:	953e                	add	a0,a0,a5
    e881ea1e:	1e053683          	ld	a3,480(a0)
            if (intf->ip.type == addr->type && intf->InterfaceID == InterfaceID && intf->McastTxRx)
    e881ea22:	4811                	li	a6,4
    e881ea24:	6509                	lui	a0,0x2
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881ea26:	e681                	bnez	a3,e881ea2e <mDNS_AddressIsLocalSubnet+0x2e>
    return(mDNSfalse);
    e881ea28:	4781                	li	a5,0
}
    e881ea2a:	853e                	mv	a0,a5
    e881ea2c:	8082                	ret
            if (intf->ip.type == addr->type && intf->InterfaceID == InterfaceID && intf->McastTxRx)
    e881ea2e:	00a68733          	add	a4,a3,a0
    e881ea32:	9f872783          	lw	a5,-1544(a4)
    e881ea36:	03079163          	bne	a5,a6,e881ea58 <mDNS_AddressIsLocalSubnet+0x58>
    e881ea3a:	9f073783          	ld	a5,-1552(a4)
    e881ea3e:	00b79d63          	bne	a5,a1,e881ea58 <mDNS_AddressIsLocalSubnet+0x58>
    e881ea42:	a6774783          	lbu	a5,-1433(a4)
    e881ea46:	cb89                	beqz	a5,e881ea58 <mDNS_AddressIsLocalSubnet+0x58>
                if (((intf->ip.ip.v4.NotAnInteger ^ addr->ip.v4.NotAnInteger) & intf->mask.ip.v4.NotAnInteger) == 0)
    e881ea48:	9fc72783          	lw	a5,-1540(a4)
    e881ea4c:	a1072703          	lw	a4,-1520(a4)
    e881ea50:	8fb1                	xor	a5,a5,a2
    e881ea52:	8ff9                	and	a5,a5,a4
    e881ea54:	2781                	sext.w	a5,a5
    e881ea56:	cbdd                	beqz	a5,e881eb0c <mDNS_AddressIsLocalSubnet+0x10c>
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881ea58:	6294                	ld	a3,0(a3)
    e881ea5a:	b7f1                	j	e881ea26 <mDNS_AddressIsLocalSubnet+0x26>
    if (addr->type == mDNSAddrType_IPv6)
    e881ea5c:	4699                	li	a3,6
    return(mDNSfalse);
    e881ea5e:	4781                	li	a5,0
    if (addr->type == mDNSAddrType_IPv6)
    e881ea60:	fcd715e3          	bne	a4,a3,e881ea2a <mDNS_AddressIsLocalSubnet+0x2a>
        if (mDNSv6AddressIsLinkLocal(&addr->ip.v6)) return(mDNStrue);
    e881ea64:	00464703          	lbu	a4,4(a2)
    e881ea68:	0fe00793          	li	a5,254
    e881ea6c:	00f71b63          	bne	a4,a5,e881ea82 <mDNS_AddressIsLocalSubnet+0x82>
    e881ea70:	00564703          	lbu	a4,5(a2)
    e881ea74:	08000693          	li	a3,128
        if (mDNSv4AddressIsLinkLocal(&addr->ip.v4)) return(mDNStrue);
    e881ea78:	4785                	li	a5,1
        if (mDNSv6AddressIsLinkLocal(&addr->ip.v6)) return(mDNStrue);
    e881ea7a:	0c077713          	andi	a4,a4,192
    e881ea7e:	fad706e3          	beq	a4,a3,e881ea2a <mDNS_AddressIsLocalSubnet+0x2a>
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881ea82:	678d                	lui	a5,0x3
    e881ea84:	953e                	add	a0,a0,a5
    e881ea86:	1e053683          	ld	a3,480(a0) # 21e0 <memcmp-0xe87fde20>
            if (intf->ip.type == addr->type && intf->InterfaceID == InterfaceID && intf->McastTxRx)
    e881ea8a:	4819                	li	a6,6
    e881ea8c:	6509                	lui	a0,0x2
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881ea8e:	dec9                	beqz	a3,e881ea28 <mDNS_AddressIsLocalSubnet+0x28>
            if (intf->ip.type == addr->type && intf->InterfaceID == InterfaceID && intf->McastTxRx)
    e881ea90:	00a687b3          	add	a5,a3,a0
    e881ea94:	9f87a703          	lw	a4,-1544(a5) # 29f8 <memcmp-0xe87fd608>
    e881ea98:	07071863          	bne	a4,a6,e881eb08 <mDNS_AddressIsLocalSubnet+0x108>
    e881ea9c:	9f07b703          	ld	a4,-1552(a5)
    e881eaa0:	06e59463          	bne	a1,a4,e881eb08 <mDNS_AddressIsLocalSubnet+0x108>
    e881eaa4:	a677c703          	lbu	a4,-1433(a5)
    e881eaa8:	c325                	beqz	a4,e881eb08 <mDNS_AddressIsLocalSubnet+0x108>
                if ((((intf->ip.ip.v6.l[0] ^ addr->ip.v6.l[0]) & intf->mask.ip.v6.l[0]) == 0) &&
    e881eaaa:	00462883          	lw	a7,4(a2)
    e881eaae:	9fc7a703          	lw	a4,-1540(a5)
    e881eab2:	01174733          	xor	a4,a4,a7
    e881eab6:	a107a883          	lw	a7,-1520(a5)
    e881eaba:	01177733          	and	a4,a4,a7
    e881eabe:	2701                	sext.w	a4,a4
    e881eac0:	e721                	bnez	a4,e881eb08 <mDNS_AddressIsLocalSubnet+0x108>
                    (((intf->ip.ip.v6.l[1] ^ addr->ip.v6.l[1]) & intf->mask.ip.v6.l[1]) == 0) &&
    e881eac2:	00862883          	lw	a7,8(a2)
    e881eac6:	a007a703          	lw	a4,-1536(a5)
    e881eaca:	01174733          	xor	a4,a4,a7
    e881eace:	a147a883          	lw	a7,-1516(a5)
    e881ead2:	01177733          	and	a4,a4,a7
                if ((((intf->ip.ip.v6.l[0] ^ addr->ip.v6.l[0]) & intf->mask.ip.v6.l[0]) == 0) &&
    e881ead6:	2701                	sext.w	a4,a4
    e881ead8:	eb05                	bnez	a4,e881eb08 <mDNS_AddressIsLocalSubnet+0x108>
                    (((intf->ip.ip.v6.l[2] ^ addr->ip.v6.l[2]) & intf->mask.ip.v6.l[2]) == 0) &&
    e881eada:	00c62883          	lw	a7,12(a2)
    e881eade:	a047a703          	lw	a4,-1532(a5)
    e881eae2:	01174733          	xor	a4,a4,a7
    e881eae6:	a187a883          	lw	a7,-1512(a5)
    e881eaea:	01177733          	and	a4,a4,a7
                    (((intf->ip.ip.v6.l[1] ^ addr->ip.v6.l[1]) & intf->mask.ip.v6.l[1]) == 0) &&
    e881eaee:	2701                	sext.w	a4,a4
    e881eaf0:	ef01                	bnez	a4,e881eb08 <mDNS_AddressIsLocalSubnet+0x108>
                    (((intf->ip.ip.v6.l[3] ^ addr->ip.v6.l[3]) & intf->mask.ip.v6.l[3]) == 0))
    e881eaf2:	a087a703          	lw	a4,-1528(a5)
    e881eaf6:	01062883          	lw	a7,16(a2)
    e881eafa:	a1c7a783          	lw	a5,-1508(a5)
    e881eafe:	01174733          	xor	a4,a4,a7
    e881eb02:	8ff9                	and	a5,a5,a4
                    (((intf->ip.ip.v6.l[2] ^ addr->ip.v6.l[2]) & intf->mask.ip.v6.l[2]) == 0) &&
    e881eb04:	2781                	sext.w	a5,a5
    e881eb06:	c399                	beqz	a5,e881eb0c <mDNS_AddressIsLocalSubnet+0x10c>
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e881eb08:	6294                	ld	a3,0(a3)
    e881eb0a:	b751                	j	e881ea8e <mDNS_AddressIsLocalSubnet+0x8e>
        if (mDNSv4AddressIsLinkLocal(&addr->ip.v4)) return(mDNStrue);
    e881eb0c:	4785                	li	a5,1
    e881eb0e:	bf31                	j	e881ea2a <mDNS_AddressIsLocalSubnet+0x2a>

00000000e881eb10 <InterfaceNameForID>:
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881eb10:	678d                	lui	a5,0x3
{
    e881eb12:	1141                	addi	sp,sp,-16
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881eb14:	953e                	add	a0,a0,a5
{
    e881eb16:	e406                	sd	ra,8(sp)
    NetworkInterfaceInfo *intf = FirstInterfaceForID(m, InterfaceID);
    e881eb18:	1e053503          	ld	a0,480(a0) # 21e0 <memcmp-0xe87fde20>
    e881eb1c:	c53fd0ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    return(intf ? intf->ifname : mDNSNULL);
    e881eb20:	c509                	beqz	a0,e881eb2a <InterfaceNameForID+0x1a>
    e881eb22:	6789                	lui	a5,0x2
    e881eb24:	a2678793          	addi	a5,a5,-1498 # 1a26 <memcmp-0xe87fe5da>
    e881eb28:	953e                	add	a0,a0,a5
}
    e881eb2a:	60a2                	ld	ra,8(sp)
    e881eb2c:	0141                	addi	sp,sp,16
    e881eb2e:	8082                	ret

00000000e881eb30 <ScheduleNextCacheCheckTime>:
    if (m->rrcache_nextcheck[slot] - event > 0)
    e881eb30:	7c05b58b          	extu	a1,a1,31,0
    e881eb34:	6785                	lui	a5,0x1
    e881eb36:	04b5158b          	addsl	a1,a0,a1,2
    e881eb3a:	95be                	add	a1,a1,a5
    e881eb3c:	2a85a783          	lw	a5,680(a1)
    e881eb40:	9f91                	subw	a5,a5,a2
    e881eb42:	00f05463          	blez	a5,e881eb4a <ScheduleNextCacheCheckTime+0x1a>
        m->rrcache_nextcheck[slot] = event;
    e881eb46:	2ac5a423          	sw	a2,680(a1)
    if (m->NextCacheCheck          - event > 0)
    e881eb4a:	25452783          	lw	a5,596(a0)
    e881eb4e:	9f91                	subw	a5,a5,a2
    e881eb50:	00f05463          	blez	a5,e881eb58 <ScheduleNextCacheCheckTime+0x28>
        m->NextCacheCheck          = event;
    e881eb54:	24c52a23          	sw	a2,596(a0)
}
    e881eb58:	8082                	ret

00000000e881eb5a <SetNextCacheCheckTimeForRecord>:
{
    e881eb5a:	1101                	addi	sp,sp,-32
    e881eb5c:	f891540b          	sdd	s0,s1,(sp),0,4
    rr->NextRequiredQuery = RRExpireTime(rr);
    e881eb60:	000b6497          	auipc	s1,0xb6
    e881eb64:	f2048493          	addi	s1,s1,-224 # e88d4a80 <mDNSPlatformOneSecond>
{
    e881eb68:	e84a                	sd	s2,16(sp)
    e881eb6a:	ec06                	sd	ra,24(sp)
    e881eb6c:	892a                	mv	s2,a0
    rr->NextRequiredQuery = RRExpireTime(rr);
    e881eb6e:	4998                	lw	a4,16(a1)
    e881eb70:	4088                	lw	a0,0(s1)
    e881eb72:	49bc                	lw	a5,80(a1)
    if (rr->CRActiveQuestion && rr->UnansweredQueries < MaxUnansweredQueries)
    e881eb74:	71b4                	ld	a3,96(a1)
    rr->NextRequiredQuery = RRExpireTime(rr);
    e881eb76:	02a7073b          	mulw	a4,a4,a0
{
    e881eb7a:	842e                	mv	s0,a1
    rr->NextRequiredQuery = RRExpireTime(rr);
    e881eb7c:	9fb9                	addw	a5,a5,a4
    e881eb7e:	cdbc                	sw	a5,88(a1)
    if (rr->CRActiveQuestion && rr->UnansweredQueries < MaxUnansweredQueries)
    e881eb80:	c695                	beqz	a3,e881ebac <SetNextCacheCheckTimeForRecord+0x52>
    e881eb82:	06c5c683          	lbu	a3,108(a1)
    e881eb86:	460d                	li	a2,3
    e881eb88:	02d66263          	bltu	a2,a3,e881ebac <SetNextCacheCheckTimeForRecord+0x52>
        rr->NextRequiredQuery += mDNSRandom((mDNSu32)TicksTTL(rr)/50);
    e881eb8c:	03200513          	li	a0,50
    e881eb90:	02a7553b          	divuw	a0,a4,a0
        rr->NextRequiredQuery -= TicksTTL(rr)/20 * (MaxUnansweredQueries - rr->UnansweredQueries);
    e881eb94:	4651                	li	a2,20
    e881eb96:	36f1                	addiw	a3,a3,-4
    e881eb98:	02c7463b          	divw	a2,a4,a2
    e881eb9c:	24d6178b          	mulaw	a5,a2,a3
    e881eba0:	cdbc                	sw	a5,88(a1)
        rr->NextRequiredQuery += mDNSRandom((mDNSu32)TicksTTL(rr)/50);
    e881eba2:	b66f40ef          	jal	ra,e8812f08 <mDNSRandom>
    e881eba6:	4c3c                	lw	a5,88(s0)
    e881eba8:	9d3d                	addw	a0,a0,a5
    e881ebaa:	cc28                	sw	a0,88(s0)
    ScheduleNextCacheCheckTime(m, HashSlotFromNameHash(rr->resrec.namehash), NextCacheCheckEvent(rr));
    e881ebac:	4c0c                	lw	a1,24(s0)
    e881ebae:	1f300793          	li	a5,499
    e881ebb2:	4c30                	lw	a2,88(s0)
    e881ebb4:	02f5f5bb          	remuw	a1,a1,a5
    e881ebb8:	703c                	ld	a5,96(s0)
    e881ebba:	ef99                	bnez	a5,e881ebd8 <SetNextCacheCheckTimeForRecord+0x7e>
    e881ebbc:	4098                	lw	a4,0(s1)
    e881ebbe:	03c00793          	li	a5,60
    e881ebc2:	02e787bb          	mulw	a5,a5,a4
}
    e881ebc6:	f891440b          	ldd	s0,s1,(sp),0,4
    e881ebca:	60e2                	ld	ra,24(sp)
    ScheduleNextCacheCheckTime(m, HashSlotFromNameHash(rr->resrec.namehash), NextCacheCheckEvent(rr));
    e881ebcc:	854a                	mv	a0,s2
}
    e881ebce:	6942                	ld	s2,16(sp)
    ScheduleNextCacheCheckTime(m, HashSlotFromNameHash(rr->resrec.namehash), NextCacheCheckEvent(rr));
    e881ebd0:	9e3d                	addw	a2,a2,a5
}
    e881ebd2:	6105                	addi	sp,sp,32
    ScheduleNextCacheCheckTime(m, HashSlotFromNameHash(rr->resrec.namehash), NextCacheCheckEvent(rr));
    e881ebd4:	f5dff06f          	j	e881eb30 <ScheduleNextCacheCheckTime>
    e881ebd8:	06c44683          	lbu	a3,108(s0)
    e881ebdc:	478d                	li	a5,3
    e881ebde:	4818                	lw	a4,16(s0)
    e881ebe0:	00d7ea63          	bltu	a5,a3,e881ebf4 <SetNextCacheCheckTimeForRecord+0x9a>
    e881ebe4:	409c                	lw	a5,0(s1)
    e881ebe6:	02e787bb          	mulw	a5,a5,a4
    e881ebea:	03200713          	li	a4,50
    e881ebee:	02e7c7bb          	divw	a5,a5,a4
    e881ebf2:	bfd1                	j	e881ebc6 <SetNextCacheCheckTimeForRecord+0x6c>
    e881ebf4:	47a9                	li	a5,10
    e881ebf6:	00e7e763          	bltu	a5,a4,e881ec04 <SetNextCacheCheckTimeForRecord+0xaa>
    e881ebfa:	4781                	li	a5,0
    e881ebfc:	d769                	beqz	a4,e881ebc6 <SetNextCacheCheckTimeForRecord+0x6c>
    e881ebfe:	409c                	lw	a5,0(s1)
    e881ec00:	4729                	li	a4,10
    e881ec02:	b7f5                	j	e881ebee <SetNextCacheCheckTimeForRecord+0x94>
    e881ec04:	409c                	lw	a5,0(s1)
    e881ec06:	b7c1                	j	e881ebc6 <SetNextCacheCheckTimeForRecord+0x6c>

00000000e881ec08 <mDNS_Reconfirm_internal>:
{
    e881ec08:	7179                	addi	sp,sp,-48
    e881ec0a:	fa91540b          	sdd	s0,s1,(sp),1,4
    if (interval < kMinimumReconfirmTime)
    e881ec0e:	000b6497          	auipc	s1,0xb6
    e881ec12:	e7248493          	addi	s1,s1,-398 # e88d4a80 <mDNSPlatformOneSecond>
    e881ec16:	4094                	lw	a3,0(s1)
    e881ec18:	4715                	li	a4,5
{
    e881ec1a:	f406                	sd	ra,40(sp)
    if (interval < kMinimumReconfirmTime)
    e881ec1c:	02d707bb          	mulw	a5,a4,a3
{
    e881ec20:	f04a                	sd	s2,32(sp)
    if (interval < kMinimumReconfirmTime)
    e881ec22:	873e                	mv	a4,a5
    e881ec24:	00c7b7b3          	sltu	a5,a5,a2
    e881ec28:	40f7160b          	mveqz	a2,a4,a5
    if (interval > 0x10000000)  // Make sure interval doesn't overflow when we multiply by four below
    e881ec2c:	8732                	mv	a4,a2
    e881ec2e:	100007b7          	lui	a5,0x10000
    e881ec32:	00e7f463          	bgeu	a5,a4,e881ec3a <mDNS_Reconfirm_internal+0x32>
    e881ec36:	10000637          	lui	a2,0x10000
    if (RRExpireTime(rr) - m->timenow > (mDNSs32)((interval * 4) / 3))
    e881ec3a:	24052783          	lw	a5,576(a0)
    e881ec3e:	49b8                	lw	a4,80(a1)
    e881ec40:	0006091b          	sext.w	s2,a2
    e881ec44:	0026161b          	slliw	a2,a2,0x2
    e881ec48:	9f1d                	subw	a4,a4,a5
    e881ec4a:	499c                	lw	a5,16(a1)
    e881ec4c:	24d7970b          	mulaw	a4,a5,a3
    e881ec50:	478d                	li	a5,3
    e881ec52:	02f6563b          	divuw	a2,a2,a5
    e881ec56:	04e65b63          	bge	a2,a4,e881ecac <mDNS_Reconfirm_internal+0xa4>
        if (!m->RandomReconfirmDelay) m->RandomReconfirmDelay = 1 + mDNSRandom(FutureTime);
    e881ec5a:	27852783          	lw	a5,632(a0)
    e881ec5e:	842a                	mv	s0,a0
    e881ec60:	eb91                	bnez	a5,e881ec74 <mDNS_Reconfirm_internal+0x6c>
    e881ec62:	38000537          	lui	a0,0x38000
    e881ec66:	e42e                	sd	a1,8(sp)
    e881ec68:	aa0f40ef          	jal	ra,e8812f08 <mDNSRandom>
    e881ec6c:	2505                	addiw	a0,a0,1
    e881ec6e:	65a2                	ld	a1,8(sp)
    e881ec70:	26a42c23          	sw	a0,632(s0)
        interval += m->RandomReconfirmDelay % ((interval/3) + 1);
    e881ec74:	478d                	li	a5,3
    e881ec76:	02f957bb          	divuw	a5,s2,a5
        rr->TimeRcvd          = m->timenow - (mDNSs32)interval * 3;
    e881ec7a:	24042683          	lw	a3,576(s0)
        SetNextCacheCheckTimeForRecord(m, rr);
    e881ec7e:	8522                	mv	a0,s0
        interval += m->RandomReconfirmDelay % ((interval/3) + 1);
    e881ec80:	0017871b          	addiw	a4,a5,1
    e881ec84:	27842783          	lw	a5,632(s0)
    e881ec88:	02e7f7bb          	remuw	a5,a5,a4
    e881ec8c:	012787bb          	addw	a5,a5,s2
        rr->TimeRcvd          = m->timenow - (mDNSs32)interval * 3;
    e881ec90:	0027971b          	slliw	a4,a5,0x2
    e881ec94:	9f99                	subw	a5,a5,a4
    e881ec96:	9fb5                	addw	a5,a5,a3
    e881ec98:	c9bc                	sw	a5,80(a1)
        rr->resrec.rroriginalttl     = (interval * 4 + mDNSPlatformOneSecond - 1) / mDNSPlatformOneSecond;
    e881ec9a:	409c                	lw	a5,0(s1)
    e881ec9c:	fff7869b          	addiw	a3,a5,-1
    e881eca0:	9f35                	addw	a4,a4,a3
    e881eca2:	02f7573b          	divuw	a4,a4,a5
    e881eca6:	c998                	sw	a4,16(a1)
        SetNextCacheCheckTimeForRecord(m, rr);
    e881eca8:	eb3ff0ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
}
    e881ecac:	70a2                	ld	ra,40(sp)
    e881ecae:	fa91440b          	ldd	s0,s1,(sp),1,4
    e881ecb2:	7902                	ld	s2,32(sp)
    e881ecb4:	4501                	li	a0,0
    e881ecb6:	6145                	addi	sp,sp,48
    e881ecb8:	8082                	ret

00000000e881ecba <ReconfirmAntecedents>:
{
    e881ecba:	711d                	addi	sp,sp,-96
    e881ecbc:	e4a6                	sd	s1,72(sp)
    e881ecbe:	fc4e                	sd	s3,56(sp)
    e881ecc0:	f852                	sd	s4,48(sp)
    e881ecc2:	6485                	lui	s1,0x1
        domainname *crtarget = GetRRDomainNameTarget(&cr->resrec);
    e881ecc4:	002009b7          	lui	s3,0x200
    e881ecc8:	4a05                	li	s4,1
    e881ecca:	2a848493          	addi	s1,s1,680 # 12a8 <memcmp-0xe87fed58>
    e881ecce:	04998993          	addi	s3,s3,73 # 200049 <memcmp-0xe85fffb7>
    e881ecd2:	1a16                	slli	s4,s4,0x25
{
    e881ecd4:	e0ca                	sd	s2,64(sp)
    e881ecd6:	f456                	sd	s5,40(sp)
    e881ecd8:	ec5e                	sd	s7,24(sp)
    e881ecda:	e862                	sd	s8,16(sp)
    e881ecdc:	e466                	sd	s9,8(sp)
    e881ecde:	ec86                	sd	ra,88(sp)
    e881ece0:	e8a2                	sd	s0,80(sp)
    e881ece2:	f05a                	sd	s6,32(sp)
    e881ece4:	e06a                	sd	s10,0(sp)
    e881ece6:	892a                	mv	s2,a0
    e881ece8:	8c2e                	mv	s8,a1
    e881ecea:	8cb2                	mv	s9,a2
    e881ecec:	8bb6                	mv	s7,a3
    e881ecee:	31050a93          	addi	s5,a0,784 # 38000310 <memcmp-0xb07ffcf0>
    e881ecf2:	94aa                	add	s1,s1,a0
        domainname *crtarget = GetRRDomainNameTarget(&cr->resrec);
    e881ecf4:	09be                	slli	s3,s3,0xf
    e881ecf6:	409a0a13          	addi	s4,s4,1033
    FORALL_CACHERECORDS(slot, cg, cr)
    e881ecfa:	000abb03          	ld	s6,0(s5)
    e881ecfe:	020b1363          	bnez	s6,e881ed24 <ReconfirmAntecedents+0x6a>
    e881ed02:	0aa1                	addi	s5,s5,8
    e881ed04:	fe9a9be3          	bne	s5,s1,e881ecfa <ReconfirmAntecedents+0x40>
}
    e881ed08:	60e6                	ld	ra,88(sp)
    e881ed0a:	6446                	ld	s0,80(sp)
    e881ed0c:	64a6                	ld	s1,72(sp)
    e881ed0e:	6906                	ld	s2,64(sp)
    e881ed10:	79e2                	ld	s3,56(sp)
    e881ed12:	7a42                	ld	s4,48(sp)
    e881ed14:	7aa2                	ld	s5,40(sp)
    e881ed16:	7b02                	ld	s6,32(sp)
    e881ed18:	6be2                	ld	s7,24(sp)
    e881ed1a:	6c42                	ld	s8,16(sp)
    e881ed1c:	6ca2                	ld	s9,8(sp)
    e881ed1e:	6d02                	ld	s10,0(sp)
    e881ed20:	6125                	addi	sp,sp,96
    e881ed22:	8082                	ret
    FORALL_CACHERECORDS(slot, cg, cr)
    e881ed24:	010b3403          	ld	s0,16(s6)
                ReconfirmAntecedents(m, cr->resrec.name, cr->resrec.namehash, depth+1);
    e881ed28:	001b8d1b          	addiw	s10,s7,1
    FORALL_CACHERECORDS(slot, cg, cr)
    e881ed2c:	e401                	bnez	s0,e881ed34 <ReconfirmAntecedents+0x7a>
    e881ed2e:	000b3b03          	ld	s6,0(s6)
    e881ed32:	b7f1                	j	e881ecfe <ReconfirmAntecedents+0x44>
        domainname *crtarget = GetRRDomainNameTarget(&cr->resrec);
    e881ed34:	00a45703          	lhu	a4,10(s0)
    e881ed38:	02500693          	li	a3,37
    e881ed3c:	ffe7079b          	addiw	a5,a4,-2
    e881ed40:	3c07b78b          	extu	a5,a5,15,0
    e881ed44:	06f6ef63          	bltu	a3,a5,e881edc2 <ReconfirmAntecedents+0x108>
    e881ed48:	00fa57b3          	srl	a5,s4,a5
    e881ed4c:	0007b78b          	extu	a5,a5,0,0
    e881ed50:	cbad                	beqz	a5,e881edc2 <ReconfirmAntecedents+0x108>
    e881ed52:	7808                	ld	a0,48(s0)
    e881ed54:	0511                	addi	a0,a0,4
        if (crtarget && cr->resrec.rdatahash == namehash && SameDomainName(crtarget, name))
    e881ed56:	c525                	beqz	a0,e881edbe <ReconfirmAntecedents+0x104>
    e881ed58:	4c5c                	lw	a5,28(s0)
    e881ed5a:	07979263          	bne	a5,s9,e881edbe <ReconfirmAntecedents+0x104>
    e881ed5e:	85e2                	mv	a1,s8
    e881ed60:	aeaf40ef          	jal	ra,e881304a <SameDomainName>
    e881ed64:	cd29                	beqz	a0,e881edbe <ReconfirmAntecedents+0x104>
            LogInfo("ReconfirmAntecedents: Reconfirming (depth=%d) %s", depth, CRDisplayString(m, cr));
    e881ed66:	000b6797          	auipc	a5,0xb6
    e881ed6a:	d0e78793          	addi	a5,a5,-754 # e88d4a74 <mDNS_LoggingEnabled>
    e881ed6e:	439c                	lw	a5,0(a5)
    e881ed70:	c395                	beqz	a5,e881ed94 <ReconfirmAntecedents+0xda>
    e881ed72:	780c                	ld	a1,48(s0)
    e881ed74:	03b90613          	addi	a2,s2,59 # fffffffff000003b <__DRAM0_INF_BASE+0xfffffffef001003b>
    e881ed78:	00840513          	addi	a0,s0,8
    e881ed7c:	0591                	addi	a1,a1,4
    e881ed7e:	c97f70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881ed82:	86aa                	mv	a3,a0
    e881ed84:	865e                	mv	a2,s7
    e881ed86:	00087597          	auipc	a1,0x87
    e881ed8a:	45258593          	addi	a1,a1,1106 # e88a61d8 <end.8789+0x2b30>
    e881ed8e:	450d                	li	a0,3
    e881ed90:	71c100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            mDNS_Reconfirm_internal(m, cr, kDefaultReconfirmTimeForNoAnswer);
    e881ed94:	000b6797          	auipc	a5,0xb6
    e881ed98:	cec78793          	addi	a5,a5,-788 # e88d4a80 <mDNSPlatformOneSecond>
    e881ed9c:	439c                	lw	a5,0(a5)
    e881ed9e:	4615                	li	a2,5
    e881eda0:	85a2                	mv	a1,s0
    e881eda2:	02f6063b          	mulw	a2,a2,a5
    e881eda6:	854a                	mv	a0,s2
    e881eda8:	e61ff0ef          	jal	ra,e881ec08 <mDNS_Reconfirm_internal>
            if (depth < 5)
    e881edac:	4795                	li	a5,5
    e881edae:	00fb8863          	beq	s7,a5,e881edbe <ReconfirmAntecedents+0x104>
                ReconfirmAntecedents(m, cr->resrec.name, cr->resrec.namehash, depth+1);
    e881edb2:	4c10                	lw	a2,24(s0)
    e881edb4:	740c                	ld	a1,40(s0)
    e881edb6:	86ea                	mv	a3,s10
    e881edb8:	854a                	mv	a0,s2
    e881edba:	f01ff0ef          	jal	ra,e881ecba <ReconfirmAntecedents>
    FORALL_CACHERECORDS(slot, cg, cr)
    e881edbe:	6000                	ld	s0,0(s0)
    e881edc0:	b7b5                	j	e881ed2c <ReconfirmAntecedents+0x72>
        domainname *crtarget = GetRRDomainNameTarget(&cr->resrec);
    e881edc2:	0007079b          	sext.w	a5,a4
    e881edc6:	02400693          	li	a3,36
    e881edca:	fef6eae3          	bltu	a3,a5,e881edbe <ReconfirmAntecedents+0x104>
    e881edce:	00e9d733          	srl	a4,s3,a4
    e881edd2:	0007370b          	extu	a4,a4,0,0
    e881edd6:	c701                	beqz	a4,e881edde <ReconfirmAntecedents+0x124>
    e881edd8:	7808                	ld	a0,48(s0)
    e881edda:	0519                	addi	a0,a0,6
    e881eddc:	bfad                	j	e881ed56 <ReconfirmAntecedents+0x9c>
    e881edde:	02100713          	li	a4,33
    e881ede2:	fce79ee3          	bne	a5,a4,e881edbe <ReconfirmAntecedents+0x104>
    e881ede6:	7808                	ld	a0,48(s0)
    e881ede8:	0529                	addi	a0,a0,10
    e881edea:	b7b5                	j	e881ed56 <ReconfirmAntecedents+0x9c>

00000000e881edec <SendQueries>:
    const NetworkInterfaceInfo *intf = GetFirstActiveInterface(m->HostInterfaces);
    e881edec:	678d                	lui	a5,0x3
{
    e881edee:	ac010113          	addi	sp,sp,-1344
    const NetworkInterfaceInfo *intf = GetFirstActiveInterface(m->HostInterfaces);
    e881edf2:	97aa                	add	a5,a5,a0
{
    e881edf4:	52813823          	sd	s0,1328(sp)
    e881edf8:	52913423          	sd	s1,1320(sp)
    e881edfc:	842a                	mv	s0,a0
    e881edfe:	51313c23          	sd	s3,1304(sp)
    e881ee02:	4f713c23          	sd	s7,1272(sp)
    e881ee06:	52113c23          	sd	ra,1336(sp)
    e881ee0a:	53213023          	sd	s2,1312(sp)
    e881ee0e:	51413823          	sd	s4,1296(sp)
    e881ee12:	51513423          	sd	s5,1288(sp)
    e881ee16:	51613023          	sd	s6,1280(sp)
    e881ee1a:	4f813823          	sd	s8,1264(sp)
    e881ee1e:	4f913423          	sd	s9,1256(sp)
    e881ee22:	4fa13023          	sd	s10,1248(sp)
    e881ee26:	4db13c23          	sd	s11,1240(sp)
    const NetworkInterfaceInfo *intf = GetFirstActiveInterface(m->HostInterfaces);
    e881ee2a:	1e07b503          	ld	a0,480(a5) # 31e0 <memcmp-0xe87fce20>
            if (m->timenow + TicksTTL(cr)/50 - cr->NextRequiredQuery >= 0)
    e881ee2e:	000b6b97          	auipc	s7,0xb6
    e881ee32:	c52b8b93          	addi	s7,s7,-942 # e88d4a80 <mDNSPlatformOneSecond>
                    q->SendQNow = mDNSInterfaceMark;
    e881ee36:	00084997          	auipc	s3,0x84
    e881ee3a:	f2298993          	addi	s3,s3,-222 # e88a2d58 <mDNSInterfaceMark>
    const NetworkInterfaceInfo *intf = GetFirstActiveInterface(m->HostInterfaces);
    e881ee3e:	83ef40ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e881ee42:	84aa                	mv	s1,a0
    CacheRecord *KnownAnswerList = mDNSNULL;
    e881ee44:	31040793          	addi	a5,s0,784
    e881ee48:	e4be                	sd	a5,72(sp)
    e881ee4a:	6785                	lui	a5,0x1
    e881ee4c:	2a878793          	addi	a5,a5,680 # 12a8 <memcmp-0xe87fed58>
            if (m->timenow + TicksTTL(cr)/50 - cr->NextRequiredQuery >= 0)
    e881ee50:	000bae03          	lw	t3,0(s7)
                    q->SendQNow = mDNSInterfaceMark;
    e881ee54:	0009b883          	ld	a7,0(s3)
    e881ee58:	97a2                	add	a5,a5,s0
                    m->mDNSStats.CacheRefreshQueries++;
    e881ee5a:	6815                	lui	a6,0x5
    CacheRecord *KnownAnswerList = mDNSNULL;
    e881ee5c:	f102                	sd	zero,160(sp)
    FORALL_CACHERECORDS(slot, cg, cr)
    e881ee5e:	f0be                	sd	a5,96(sp)
                    q->SendQNow = mDNSInterfaceMark;
    e881ee60:	31040513          	addi	a0,s0,784
        if (cr->CRActiveQuestion && cr->UnansweredQueries < MaxUnansweredQueries)
    e881ee64:	4e8d                	li	t4,3
            if (m->timenow + TicksTTL(cr)/50 - cr->NextRequiredQuery >= 0)
    e881ee66:	03200f13          	li	t5,50
                ExpireDupSuppressInfoOnInterface(q->DupSuppress, m->timenow - TicksTTL(cr)/20, cr->resrec.InterfaceID);
    e881ee6a:	5fb1                	li	t6,-20
                    q->CachedAnswerNeedsUpdate = mDNStrue;
    e881ee6c:	4305                	li	t1,1
                    m->mDNSStats.CacheRefreshQueries++;
    e881ee6e:	9822                	add	a6,a6,s0
    FORALL_CACHERECORDS(slot, cg, cr)
    e881ee70:	610c                	ld	a1,0(a0)
    e881ee72:	e9a5                	bnez	a1,e881eee2 <SendQueries+0xf6>
    e881ee74:	7786                	ld	a5,96(sp)
    e881ee76:	0521                	addi	a0,a0,8
    e881ee78:	fea79ce3          	bne	a5,a0,e881ee70 <SendQueries+0x84>
    if (m->CurrentQuestion)
    e881ee7c:	2c843903          	ld	s2,712(s0)
    e881ee80:	02090063          	beqz	s2,e881eea0 <SendQueries+0xb4>
        LogMsg("SendQueries ERROR m->CurrentQuestion already set: %##s (%s)", m->CurrentQuestion->qname.c, DNSTypeName(m->CurrentQuestion->qtype));
    e881ee84:	31495503          	lhu	a0,788(s2)
    e881ee88:	dd9f60ef          	jal	ra,e8815c60 <DNSTypeName>
    e881ee8c:	86aa                	mv	a3,a0
    e881ee8e:	21490613          	addi	a2,s2,532
    e881ee92:	00087597          	auipc	a1,0x87
    e881ee96:	71658593          	addi	a1,a1,1814 # e88a65a8 <end.8789+0x2f00>
    e881ee9a:	4501                	li	a0,0
    e881ee9c:	610100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = m->Questions;
    e881eea0:	2b843783          	ld	a5,696(s0)
            mDNSu8       *qptr        = m->omsg.data;
    e881eea4:	6a9d                	lui	s5,0x7
            const mDNSu8 *const limit = m->omsg.data + sizeof(m->omsg.data);
    e881eea6:	6b25                	lui	s6,0x9
            mDNSu8       *qptr        = m->omsg.data;
    e881eea8:	1eca8c13          	addi	s8,s5,492 # 71ec <memcmp-0xe87f8e14>
            const mDNSu8 *const limit = m->omsg.data + sizeof(m->omsg.data);
    e881eeac:	4d8b0b13          	addi	s6,s6,1240 # 94d8 <memcmp-0xe87f6b28>
                InitializeDNSMessage(&m->omsg.h, q->TargetQID, QueryFlags);
    e881eeb0:	1e0a8a93          	addi	s5,s5,480
    m->CurrentQuestion = m->Questions;
    e881eeb4:	2cf43423          	sd	a5,712(s0)
    mDNSs32 maxExistingQuestionInterval = 0;
    e881eeb8:	4a01                	li	s4,0
            mDNSu8       *qptr        = m->omsg.data;
    e881eeba:	9c22                	add	s8,s8,s0
            const mDNSu8 *const limit = m->omsg.data + sizeof(m->omsg.data);
    e881eebc:	9b22                	add	s6,s6,s0
                InitializeDNSMessage(&m->omsg.h, q->TargetQID, QueryFlags);
    e881eebe:	9aa2                	add	s5,s5,s0
    while (m->CurrentQuestion && m->CurrentQuestion != m->NewQuestions)
    e881eec0:	2c843903          	ld	s2,712(s0)
    e881eec4:	00090663          	beqz	s2,e881eed0 <SendQueries+0xe4>
    e881eec8:	2c043783          	ld	a5,704(s0)
    e881eecc:	0cf91763          	bne	s2,a5,e881ef9a <SendQueries+0x1ae>
        LogInfo("SendQueries question loop 1: Skipping NewQuestion %##s (%s)", m->CurrentQuestion->qname.c, DNSTypeName(m->CurrentQuestion->qtype));
    e881eed0:	000b6a97          	auipc	s5,0xb6
    e881eed4:	ba4a8a93          	addi	s5,s5,-1116 # e88d4a74 <mDNS_LoggingEnabled>
    e881eed8:	00087b17          	auipc	s6,0x87
    e881eedc:	710b0b13          	addi	s6,s6,1808 # e88a65e8 <end.8789+0x2f40>
    e881eee0:	ac19                	j	e881f0f6 <SendQueries+0x30a>
    FORALL_CACHERECORDS(slot, cg, cr)
    e881eee2:	6998                	ld	a4,16(a1)
    e881eee4:	e319                	bnez	a4,e881eeea <SendQueries+0xfe>
    e881eee6:	618c                	ld	a1,0(a1)
    e881eee8:	b769                	j	e881ee72 <SendQueries+0x86>
        if (cr->CRActiveQuestion && cr->UnansweredQueries < MaxUnansweredQueries)
    e881eeea:	733c                	ld	a5,96(a4)
    e881eeec:	c7a5                	beqz	a5,e881ef54 <SendQueries+0x168>
    e881eeee:	06c74683          	lbu	a3,108(a4)
    e881eef2:	06dee163          	bltu	t4,a3,e881ef54 <SendQueries+0x168>
            if (m->timenow + TicksTTL(cr)/50 - cr->NextRequiredQuery >= 0)
    e881eef6:	4b14                	lw	a3,16(a4)
    e881eef8:	24042283          	lw	t0,576(s0)
    e881eefc:	4f30                	lw	a2,88(a4)
    e881eefe:	03c686bb          	mulw	a3,a3,t3
    e881ef02:	40c2863b          	subw	a2,t0,a2
    e881ef06:	03e6c3bb          	divw	t2,a3,t5
    e881ef0a:	0076063b          	addw	a2,a2,t2
    e881ef0e:	04064363          	bltz	a2,e881ef54 <SendQueries+0x168>
                ExpireDupSuppressInfoOnInterface(q->DupSuppress, m->timenow - TicksTTL(cr)/20, cr->resrec.InterfaceID);
    e881ef12:	03f6c6bb          	divw	a3,a3,t6
    e881ef16:	02073903          	ld	s2,32(a4)
    for (i=0; i<DupSuppressInfoSize; i++) if (ds[i].InterfaceID == InterfaceID && ds[i].Time - time < 0) ds[i].InterfaceID = mDNSNULL;
    e881ef1a:	07078613          	addi	a2,a5,112
    e881ef1e:	13078393          	addi	t2,a5,304
                ExpireDupSuppressInfoOnInterface(q->DupSuppress, m->timenow - TicksTTL(cr)/20, cr->resrec.InterfaceID);
    e881ef22:	005686bb          	addw	a3,a3,t0
    for (i=0; i<DupSuppressInfoSize; i++) if (ds[i].InterfaceID == InterfaceID && ds[i].Time - time < 0) ds[i].InterfaceID = mDNSNULL;
    e881ef26:	00063283          	ld	t0,0(a2) # 10000000 <memcmp-0xd8800000>
    e881ef2a:	00591a63          	bne	s2,t0,e881ef3e <SendQueries+0x152>
    e881ef2e:	ff862283          	lw	t0,-8(a2)
    e881ef32:	40d282bb          	subw	t0,t0,a3
    e881ef36:	0002d463          	bgez	t0,e881ef3e <SendQueries+0x152>
    e881ef3a:	00063023          	sd	zero,0(a2)
    e881ef3e:	0661                	addi	a2,a2,24
    e881ef40:	fec393e3          	bne	t2,a2,e881ef26 <SendQueries+0x13a>
                if (q->Target.type)
    e881ef44:	1fc7a683          	lw	a3,508(a5)
    e881ef48:	ca81                	beqz	a3,e881ef58 <SendQueries+0x16c>
                    q->SendQNow = mDNSInterfaceMark; // If targeted query, mark it
    e881ef4a:	1317b423          	sd	a7,296(a5)
                if (mDNSOpaque16IsZero(q->TargetQID))
    e881ef4e:	2127d683          	lhu	a3,530(a5)
    e881ef52:	ce85                	beqz	a3,e881ef8a <SendQueries+0x19e>
    FORALL_CACHERECORDS(slot, cg, cr)
    e881ef54:	6318                	ld	a4,0(a4)
    e881ef56:	b779                	j	e881eee4 <SendQueries+0xf8>
                else if (!mDNSOpaque16IsZero(q->TargetQID))
    e881ef58:	2127d683          	lhu	a3,530(a5)
    e881ef5c:	c28d                	beqz	a3,e881ef7e <SendQueries+0x192>
                    q->LastQTime = m->timenow - q->ThisQInterval;
    e881ef5e:	24042683          	lw	a3,576(s0)
    e881ef62:	4bd0                	lw	a2,20(a5)
    e881ef64:	9e91                	subw	a3,a3,a2
    e881ef66:	cb94                	sw	a3,16(a5)
                    cr->UnansweredQueries++;
    e881ef68:	06c74683          	lbu	a3,108(a4)
    e881ef6c:	2685                	addiw	a3,a3,1
    e881ef6e:	06d70623          	sb	a3,108(a4)
                    m->mDNSStats.CacheRefreshQueries++;
    e881ef72:	edc82683          	lw	a3,-292(a6) # 4edc <memcmp-0xe87fb124>
    e881ef76:	2685                	addiw	a3,a3,1
    e881ef78:	ecd82e23          	sw	a3,-292(a6)
    e881ef7c:	bfc9                	j	e881ef4e <SendQueries+0x162>
                else if (q->SendQNow == mDNSNULL)
    e881ef7e:	1287b603          	ld	a2,296(a5)
    e881ef82:	7314                	ld	a3,32(a4)
    e881ef84:	e611                	bnez	a2,e881ef90 <SendQueries+0x1a4>
                    q->SendQNow = cr->resrec.InterfaceID;
    e881ef86:	12d7b423          	sd	a3,296(a5)
                    q->CachedAnswerNeedsUpdate = mDNStrue;
    e881ef8a:	126788a3          	sb	t1,305(a5)
    e881ef8e:	b7d9                	j	e881ef54 <SendQueries+0x168>
                else if (q->SendQNow != cr->resrec.InterfaceID)
    e881ef90:	fed60de3          	beq	a2,a3,e881ef8a <SendQueries+0x19e>
                    q->SendQNow = mDNSInterfaceMark;
    e881ef94:	1317b423          	sd	a7,296(a5)
    e881ef98:	bfcd                	j	e881ef8a <SendQueries+0x19e>
        if (q->Target.type && (q->SendQNow || TimeToSendThisQuestion(q, m->timenow)))
    e881ef9a:	1fc92683          	lw	a3,508(s2)
    e881ef9e:	0e068b63          	beqz	a3,e881f094 <SendQueries+0x2a8>
    e881efa2:	12893783          	ld	a5,296(s2)
    e881efa6:	e385                	bnez	a5,e881efc6 <SendQueries+0x1da>
    e881efa8:	01492703          	lw	a4,20(s2)
    e881efac:	0ee05463          	blez	a4,e881f094 <SendQueries+0x2a8>
    e881efb0:	05093783          	ld	a5,80(s2)
    e881efb4:	e3e5                	bnez	a5,e881f094 <SendQueries+0x2a8>
    e881efb6:	01092783          	lw	a5,16(s2)
    e881efba:	9f3d                	addw	a4,a4,a5
    e881efbc:	24042783          	lw	a5,576(s0)
    e881efc0:	9f99                	subw	a5,a5,a4
    e881efc2:	0c07c963          	bltz	a5,e881f094 <SendQueries+0x2a8>
            if (!q->LocalSocket) q->LocalSocket = mDNSPlatformUDPSocket(zeroIPPort);
    e881efc6:	16093783          	ld	a5,352(s2)
    e881efca:	cbcd                	beqz	a5,e881f07c <SendQueries+0x290>
                InitializeDNSMessage(&m->omsg.h, q->TargetQID, QueryFlags);
    e881efcc:	00083797          	auipc	a5,0x83
    e881efd0:	7ac78793          	addi	a5,a5,1964 # e88a2778 <QueryFlags>
    e881efd4:	0007d603          	lhu	a2,0(a5)
    e881efd8:	21295583          	lhu	a1,530(s2)
    e881efdc:	8556                	mv	a0,s5
    e881efde:	e6ef50ef          	jal	ra,e881464c <InitializeDNSMessage>
                qptr = putQuestion(&m->omsg, qptr, limit, &q->qname, q->qtype, q->qclass);
    e881efe2:	31695783          	lhu	a5,790(s2)
    e881efe6:	31495703          	lhu	a4,788(s2)
    e881efea:	21490693          	addi	a3,s2,532
    e881efee:	865a                	mv	a2,s6
    e881eff0:	85e2                	mv	a1,s8
    e881eff2:	8556                	mv	a0,s5
    e881eff4:	80bf50ef          	jal	ra,e88147fe <putQuestion>
                mDNSSendDNSMessage(m, &m->omsg, qptr, mDNSInterface_Any, q->LocalSocket, &q->Target, q->TargetPort, mDNSNULL, mDNSNULL, q->UseBackgroundTrafficClass);
    e881eff8:	862a                	mv	a2,a0
    e881effa:	32094783          	lbu	a5,800(s2)
    e881effe:	00084697          	auipc	a3,0x84
    e881f002:	d6268693          	addi	a3,a3,-670 # e88a2d60 <mDNSInterface_Any>
    e881f006:	16093703          	ld	a4,352(s2)
    e881f00a:	21095803          	lhu	a6,528(s2)
    e881f00e:	6294                	ld	a3,0(a3)
    e881f010:	e43e                	sd	a5,8(sp)
    e881f012:	e002                	sd	zero,0(sp)
    e881f014:	1fc90793          	addi	a5,s2,508
    e881f018:	4881                	li	a7,0
    e881f01a:	85d6                	mv	a1,s5
    e881f01c:	8522                	mv	a0,s0
    e881f01e:	e94f80ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
                q->ThisQInterval    *= QuestionIntervalStep;
    e881f022:	01492783          	lw	a5,20(s2)
    e881f026:	470d                	li	a4,3
    e881f028:	02e787bb          	mulw	a5,a5,a4
    e881f02c:	00f92a23          	sw	a5,20(s2)
            if (q->ThisQInterval > MaxQuestionInterval)
    e881f030:	000ba783          	lw	a5,0(s7)
    e881f034:	6705                	lui	a4,0x1
    e881f036:	e107071b          	addiw	a4,a4,-496
    e881f03a:	02e7873b          	mulw	a4,a5,a4
    e881f03e:	01492683          	lw	a3,20(s2)
    e881f042:	00d75463          	bge	a4,a3,e881f04a <SendQueries+0x25e>
                q->ThisQInterval = MaxQuestionInterval;
    e881f046:	00e92a23          	sw	a4,20(s2)
            q->LastQTime         = m->timenow;
    e881f04a:	24042783          	lw	a5,576(s0)
            q->RecentAnswerPkts  = 0;
    e881f04e:	02092023          	sw	zero,32(s2)
            q->SendQNow          = mDNSNULL;
    e881f052:	12093423          	sd	zero,296(s2)
            q->LastQTime         = m->timenow;
    e881f056:	00f92823          	sw	a5,16(s2)
            q->LastQTxTime       = m->timenow;
    e881f05a:	12f92c23          	sw	a5,312(s2)
            q->ExpectUnicastResp = NonZeroTime(m->timenow);
    e881f05e:	24042783          	lw	a5,576(s0)
    e881f062:	e391                	bnez	a5,e881f066 <SendQueries+0x27a>
    e881f064:	4785                	li	a5,1
    e881f066:	00f92c23          	sw	a5,24(s2)
        if (q == m->CurrentQuestion) m->CurrentQuestion = m->CurrentQuestion->next;
    e881f06a:	2c843783          	ld	a5,712(s0)
    e881f06e:	e52799e3          	bne	a5,s2,e881eec0 <SendQueries+0xd4>
    e881f072:	00093783          	ld	a5,0(s2)
    e881f076:	2cf43423          	sd	a5,712(s0)
    e881f07a:	b599                	j	e881eec0 <SendQueries+0xd4>
            if (!q->LocalSocket) q->LocalSocket = mDNSPlatformUDPSocket(zeroIPPort);
    e881f07c:	00084797          	auipc	a5,0x84
    e881f080:	52c78793          	addi	a5,a5,1324 # e88a35a8 <zeroIPPort>
    e881f084:	0007d503          	lhu	a0,0(a5)
    e881f088:	089100ef          	jal	ra,e882f910 <mDNSPlatformUDPSocket>
    e881f08c:	16a93023          	sd	a0,352(s2)
            if (q->LocalSocket)
    e881f090:	d145                	beqz	a0,e881f030 <SendQueries+0x244>
    e881f092:	bf2d                	j	e881efcc <SendQueries+0x1e0>
        else if (mDNSOpaque16IsZero(q->TargetQID) && !q->Target.type && TimeToSendThisQuestion(q, m->timenow))
    e881f094:	21295783          	lhu	a5,530(s2)
    e881f098:	fbe9                	bnez	a5,e881f06a <SendQueries+0x27e>
    e881f09a:	fae1                	bnez	a3,e881f06a <SendQueries+0x27e>
    e881f09c:	01492783          	lw	a5,20(s2)
    e881f0a0:	fcf055e3          	blez	a5,e881f06a <SendQueries+0x27e>
    e881f0a4:	05093703          	ld	a4,80(s2)
    e881f0a8:	f369                	bnez	a4,e881f06a <SendQueries+0x27e>
    e881f0aa:	01092703          	lw	a4,16(s2)
    e881f0ae:	00f706bb          	addw	a3,a4,a5
    e881f0b2:	24042703          	lw	a4,576(s0)
    e881f0b6:	9f15                	subw	a4,a4,a3
    e881f0b8:	fa0749e3          	bltz	a4,e881f06a <SendQueries+0x27e>
            q->SendQNow = mDNSInterfaceMark;        // Mark this question for sending on all interfaces
    e881f0bc:	0009b703          	ld	a4,0(s3)
    e881f0c0:	12e93423          	sd	a4,296(s2)
            if (maxExistingQuestionInterval < q->ThisQInterval)
    e881f0c4:	0147a733          	slt	a4,a5,s4
    e881f0c8:	40e79a0b          	mveqz	s4,a5,a4
    e881f0cc:	2a01                	sext.w	s4,s4
    e881f0ce:	bf71                	j	e881f06a <SendQueries+0x27e>
        LogInfo("SendQueries question loop 1: Skipping NewQuestion %##s (%s)", m->CurrentQuestion->qname.c, DNSTypeName(m->CurrentQuestion->qtype));
    e881f0d0:	000aa783          	lw	a5,0(s5)
    e881f0d4:	cf81                	beqz	a5,e881f0ec <SendQueries+0x300>
    e881f0d6:	31495503          	lhu	a0,788(s2)
    e881f0da:	b87f60ef          	jal	ra,e8815c60 <DNSTypeName>
    e881f0de:	86aa                	mv	a3,a0
    e881f0e0:	21490613          	addi	a2,s2,532
    e881f0e4:	85da                	mv	a1,s6
    e881f0e6:	450d                	li	a0,3
    e881f0e8:	3c4100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->CurrentQuestion = m->CurrentQuestion->next;
    e881f0ec:	2c843783          	ld	a5,712(s0)
    e881f0f0:	639c                	ld	a5,0(a5)
    e881f0f2:	2cf43423          	sd	a5,712(s0)
    while (m->CurrentQuestion)
    e881f0f6:	2c843903          	ld	s2,712(s0)
    e881f0fa:	fc091be3          	bnez	s2,e881f0d0 <SendQueries+0x2e4>
    m->NextScheduledQuery = m->timenow + FutureTime;
    e881f0fe:	24042783          	lw	a5,576(s0)
    e881f102:	38000737          	lui	a4,0x38000
    for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e881f106:	2b843903          	ld	s2,696(s0)
    m->NextScheduledQuery = m->timenow + FutureTime;
    e881f10a:	9fb9                	addw	a5,a5,a4
                q->SendQNow  = !intf ? mDNSNULL : (q->InterfaceID) ? q->InterfaceID : intf->InterfaceID;
    e881f10c:	6c09                	lui	s8,0x2
                if (q->ThisQInterval > MaxQuestionInterval)
    e881f10e:	6a85                	lui	s5,0x1
    m->NextScheduledQuery = m->timenow + FutureTime;
    e881f110:	24f42c23          	sw	a5,600(s0)
            if (rr->resrec.rdlength <= SmallRecordLimit &&                  // which is small enough to sensibly fit in the packet
    e881f114:	40000c93          	li	s9,1024
                rr->TimeRcvd + TicksTTL(rr)/2 - m->timenow >= 0 &&          // and it is less than half-way to expiry
    e881f118:	4b09                	li	s6,2
                q->SendQNow  = !intf ? mDNSNULL : (q->InterfaceID) ? q->InterfaceID : intf->InterfaceID;
    e881f11a:	9c26                	add	s8,s8,s1
                if (q->ThisQInterval > MaxQuestionInterval)
    e881f11c:	e10a8a9b          	addiw	s5,s5,-496
    for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e881f120:	00090663          	beqz	s2,e881f12c <SendQueries+0x340>
    e881f124:	2c043783          	ld	a5,704(s0)
    e881f128:	15279b63          	bne	a5,s2,e881f27e <SendQueries+0x492>
    m->NextScheduledProbe = m->timenow + FutureTime;
    e881f12c:	24042783          	lw	a5,576(s0)
    e881f130:	38000737          	lui	a4,0x38000
    e881f134:	9fb9                	addw	a5,a5,a4
    e881f136:	24f42e23          	sw	a5,604(s0)
    if (m->CurrentRecord)
    e881f13a:	678d                	lui	a5,0x3
    e881f13c:	97a2                	add	a5,a5,s0
    e881f13e:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e881f142:	c105                	beqz	a0,e881f162 <SendQueries+0x376>
        LogMsg("SendQueries ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e881f144:	790c                	ld	a1,48(a0)
    e881f146:	03b40613          	addi	a2,s0,59
    e881f14a:	0521                	addi	a0,a0,8
    e881f14c:	0591                	addi	a1,a1,4
    e881f14e:	8c7f70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881f152:	862a                	mv	a2,a0
    e881f154:	00087597          	auipc	a1,0x87
    e881f158:	50c58593          	addi	a1,a1,1292 # e88a6660 <end.8789+0x2fb8>
    e881f15c:	4501                	li	a0,0
    e881f15e:	34e100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentRecord = m->ResourceRecords;
    e881f162:	690d                	lui	s2,0x3
    e881f164:	9922                	add	s2,s2,s0
    e881f166:	1b893783          	ld	a5,440(s2) # 31b8 <memcmp-0xe87fce48>
                        if (r2->resrec.RecordType == kDNSRecordTypeUnique && RecordIsLocalDuplicate(r2, ar))
    e881f16a:	59fd                	li	s3,-1
    e881f16c:	1982                	slli	s3,s3,0x20
                ar->SendRNow   = (!intf || ar->WakeUp.HMAC.l[0]) ? mDNSNULL : ar->resrec.InterfaceID ? ar->resrec.InterfaceID : intf->InterfaceID;
    e881f16e:	6d09                	lui	s10,0x2
    m->CurrentRecord = m->ResourceRecords;
    e881f170:	1cf93823          	sd	a5,464(s2)
        if (!AuthRecord_uDNS(ar) && ar->resrec.RecordType == kDNSRecordTypeUnique)  // For all records that are still probing...
    e881f174:	00084a17          	auipc	s4,0x84
    e881f178:	beca0a13          	addi	s4,s4,-1044 # e88a2d60 <mDNSInterface_Any>
                        if (r2->resrec.RecordType == kDNSRecordTypeUnique && RecordIsLocalDuplicate(r2, ar))
    e881f17c:	0109d993          	srli	s3,s3,0x10
                ar->SendRNow   = (!intf || ar->WakeUp.HMAC.l[0]) ? mDNSNULL : ar->resrec.InterfaceID ? ar->resrec.InterfaceID : intf->InterfaceID;
    e881f180:	9d26                	add	s10,s10,s1
    while (m->CurrentRecord)
    e881f182:	1d093d83          	ld	s11,464(s2)
    e881f186:	340d9e63          	bnez	s11,e881f4e2 <SendQueries+0x6f6>
    m->CurrentRecord = m->DuplicateRecords;
    e881f18a:	1c093783          	ld	a5,448(s2)
    while (m->CurrentRecord)
    e881f18e:	698d                	lui	s3,0x3
    e881f190:	99a2                	add	s3,s3,s0
    m->CurrentRecord = m->DuplicateRecords;
    e881f192:	1cf93823          	sd	a5,464(s2)
        if (ar->resrec.RecordType == kDNSRecordTypeUnique && ar->ProbeCount == 0 && !ar->Acknowledged)
    e881f196:	00ff0937          	lui	s2,0xff0
    e881f19a:	0ff90913          	addi	s2,s2,255 # ff00ff <memcmp-0xe780ff01>
    e881f19e:	4a09                	li	s4,2
    e881f1a0:	1902                	slli	s2,s2,0x20
    while (m->CurrentRecord)
    e881f1a2:	1d09b583          	ld	a1,464(s3) # 31d0 <memcmp-0xe87fce30>
    e881f1a6:	58059763          	bnez	a1,e881f734 <SendQueries+0x948>
        mDNSu8 *queryptr = m->omsg.data;
    e881f1aa:	699d                	lui	s3,0x7
    const mDNSu8 *const limit = query->data + NormalMaxDNSMessageData;
    e881f1ac:	78c98793          	addi	a5,s3,1932 # 778c <memcmp-0xe87f8874>
        mDNSu8 *queryptr = m->omsg.data;
    e881f1b0:	1ec98a93          	addi	s5,s3,492
    const mDNSu8 *const limit = query->data + NormalMaxDNSMessageData;
    e881f1b4:	97a2                	add	a5,a5,s0
    int pktcount = 0;
    e881f1b6:	fc02                	sd	zero,56(sp)
        mDNSu8 *queryptr = m->omsg.data;
    e881f1b8:	9aa2                	add	s5,s5,s0
    const mDNSu8 *const limit = query->data + NormalMaxDNSMessageData;
    e881f1ba:	ecbe                	sd	a5,88(sp)
    while (intf)
    e881f1bc:	540484e3          	beqz	s1,e881ff04 <SendQueries+0x1118>
        int OwnerRecordSpace = (m->AnnounceOwner && intf->MAC.l[0]) ? DNSOpt_Header_Space + DNSOpt_Owner_Space(&m->PrimaryMAC, &intf->MAC) : 0;
    e881f1c0:	28c42b03          	lw	s6,652(s0)
    e881f1c4:	020b0363          	beqz	s6,e881f1ea <SendQueries+0x3fe>
    e881f1c8:	6789                	lui	a5,0x2
    e881f1ca:	97a6                	add	a5,a5,s1
    e881f1cc:	a207a703          	lw	a4,-1504(a5) # 1a20 <memcmp-0xe87fe5e0>
    e881f1d0:	4b01                	li	s6,0
    e881f1d2:	cf01                	beqz	a4,e881f1ea <SendQueries+0x3fe>
    e881f1d4:	6c18                	ld	a4,24(s0)
    e881f1d6:	a207b783          	ld	a5,-1504(a5)
    e881f1da:	4b5d                	li	s6,23
    e881f1dc:	bc07370b          	extu	a4,a4,47,0
    e881f1e0:	bc07b78b          	extu	a5,a5,47,0
    e881f1e4:	00f70363          	beq	a4,a5,e881f1ea <SendQueries+0x3fe>
    e881f1e8:	4b75                	li	s6,29
        int TraceRecordSpace = (mDNS_McastTracingEnabled && MDNS_TRACER) ? DNSOpt_Header_Space + DNSOpt_TraceData_Space : 0;
    e881f1ea:	000c5797          	auipc	a5,0xc5
    e881f1ee:	91678793          	addi	a5,a5,-1770 # e88e3b00 <mDNS_McastTracingEnabled>
    e881f1f2:	0007ac03          	lw	s8,0(a5)
    e881f1f6:	000c0363          	beqz	s8,e881f1fc <SendQueries+0x410>
    e881f1fa:	4c51                	li	s8,20
        InitializeDNSMessage(&m->omsg.h, zeroID, QueryFlags);
    e881f1fc:	00083797          	auipc	a5,0x83
    e881f200:	57c78793          	addi	a5,a5,1404 # e88a2778 <QueryFlags>
    e881f204:	0007d603          	lhu	a2,0(a5)
    e881f208:	00084797          	auipc	a5,0x84
    e881f20c:	39878793          	addi	a5,a5,920 # e88a35a0 <zeroID>
    e881f210:	0007d583          	lhu	a1,0(a5)
    e881f214:	1e098a13          	addi	s4,s3,480
    e881f218:	9a22                	add	s4,s4,s0
    e881f21a:	8552                	mv	a0,s4
    e881f21c:	c30f50ef          	jal	ra,e881464c <InitializeDNSMessage>
        if (KnownAnswerList) verbosedebugf("SendQueries:   KnownAnswerList set... Will continue from previous packet");
    e881f220:	778a                	ld	a5,160(sp)
        if (!KnownAnswerList)
    e881f222:	580796e3          	bnez	a5,e881ffae <SendQueries+0x11c2>
            mDNSu32 answerforecast = OwnerRecordSpace + TraceRecordSpace;  // Start by assuming we'll need at least enough space to put the Owner+Tracer Option
    e881f226:	018b07bb          	addw	a5,s6,s8
    e881f22a:	f03e                	sd	a5,32(sp)
            CacheRecord **kalistptr = &KnownAnswerList;
    e881f22c:	111c                	addi	a5,sp,160
    e881f22e:	f43e                	sd	a5,40(sp)
            for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e881f230:	2b843c83          	ld	s9,696(s0)
                if (mDNSOpaque16IsZero(q->TargetQID) && (q->SendQNow == intf->InterfaceID))
    e881f234:	6789                	lui	a5,0x2
    e881f236:	97a6                	add	a5,a5,s1
            m->mDNSStats.WakeOnResolves++;
    e881f238:	6d15                	lui	s10,0x5
        mDNSu8 *queryptr = m->omsg.data;
    e881f23a:	8956                	mv	s2,s5
        mDNSBool useBackgroundTrafficClass = mDNSfalse;    // set if we should use background traffic class
    e881f23c:	f802                	sd	zero,48(sp)
                if (mDNSOpaque16IsZero(q->TargetQID) && (q->SendQNow == intf->InterfaceID))
    e881f23e:	e8be                	sd	a5,80(sp)
            m->mDNSStats.WakeOnResolves++;
    e881f240:	9d22                	add	s10,s10,s0
            for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e881f242:	000c8663          	beqz	s9,e881f24e <SendQueries+0x462>
    e881f246:	2c043783          	ld	a5,704(s0)
    e881f24a:	51979563          	bne	a5,s9,e881f754 <SendQueries+0x968>
            for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881f24e:	678d                	lui	a5,0x3
    e881f250:	97a2                	add	a5,a5,s0
    e881f252:	1b87bc83          	ld	s9,440(a5) # 31b8 <memcmp-0xe87fce48>
                if (ar->SendRNow != intf->InterfaceID)
    e881f256:	6789                	lui	a5,0x2
    e881f258:	00f48db3          	add	s11,s1,a5
                    const mDNSu8 *const limit = m->omsg.data + (m->omsg.h.numQuestions ? NormalMaxDNSMessageData : AbsoluteMaxDNSMessageData);
    e881f25c:	013407b3          	add	a5,s0,s3
    e881f260:	e0be                	sd	a5,64(sp)
            for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881f262:	0a0c9de3          	bnez	s9,e881fb1c <SendQueries+0xd30>
                                                           m->omsg.data + NormalMaxDNSMessageData - OwnerRecordSpace - TraceRecordSpace);
    e881f266:	5a000c93          	li	s9,1440
    e881f26a:	416c8cb3          	sub	s9,s9,s6
    e881f26e:	418c8cb3          	sub	s9,s9,s8
            mDNSu8 *newptr = PutResourceRecordTTLWithLimit(&m->omsg, queryptr, &m->omsg.h.numAnswers, &ka->resrec, ka->resrec.rroriginalttl - SecsSinceRcvd,
    e881f272:	1e698d93          	addi	s11,s3,486
    e881f276:	9cd6                	add	s9,s9,s5
    e881f278:	9da2                	add	s11,s11,s0
    e881f27a:	2230006f          	j	e881fc9c <SendQueries+0xeb0>
        if (mDNSOpaque16IsZero(q->TargetQID)
    e881f27e:	21295783          	lhu	a5,530(s2)
    e881f282:	e3d1                	bnez	a5,e881f306 <SendQueries+0x51a>
            && (q->SendQNow || (!q->Target.type && ActiveQuestion(q) && q->ThisQInterval <= maxExistingQuestionInterval && AccelerateThisQuery(m,q))))
    e881f284:	12893783          	ld	a5,296(s2)
    e881f288:	c7d1                	beqz	a5,e881f314 <SendQueries+0x528>
            if (m->timenow - (q->LastQTime + (q->ThisQInterval/2)) >= 0)
    e881f28a:	01492683          	lw	a3,20(s2)
    e881f28e:	01092703          	lw	a4,16(s2)
    e881f292:	0366c7bb          	divw	a5,a3,s6
    e881f296:	40f007bb          	negw	a5,a5
    e881f29a:	9f99                	subw	a5,a5,a4
    e881f29c:	24042703          	lw	a4,576(s0)
    e881f2a0:	9fb9                	addw	a5,a5,a4
    e881f2a2:	1207da63          	bgez	a5,e881f3d6 <SendQueries+0x5ea>
            q->SendOnAll = (q->SendQNow == mDNSInterfaceMark);
    e881f2a6:	12893683          	ld	a3,296(s2)
    e881f2aa:	0009b703          	ld	a4,0(s3)
    e881f2ae:	40e687b3          	sub	a5,a3,a4
    e881f2b2:	0017b793          	seqz	a5,a5
    e881f2b6:	12f90823          	sb	a5,304(s2)
            if (q->SendOnAll)
    e881f2ba:	00e69f63          	bne	a3,a4,e881f2d8 <SendQueries+0x4ec>
                q->SendQNow  = !intf ? mDNSNULL : (q->InterfaceID) ? q->InterfaceID : intf->InterfaceID;
    e881f2be:	4781                	li	a5,0
    e881f2c0:	c491                	beqz	s1,e881f2cc <SendQueries+0x4e0>
    e881f2c2:	1f093783          	ld	a5,496(s2)
    e881f2c6:	e399                	bnez	a5,e881f2cc <SendQueries+0x4e0>
    e881f2c8:	9f0c3783          	ld	a5,-1552(s8) # 19f0 <memcmp-0xe87fe610>
    e881f2cc:	12f93423          	sd	a5,296(s2)
                q->LastQTime = m->timenow;
    e881f2d0:	24042783          	lw	a5,576(s0)
    e881f2d4:	00f92823          	sw	a5,16(s2)
            ExpireDupSuppressInfo(q->DupSuppress, m->timenow - q->ThisQInterval/2);
    e881f2d8:	01492783          	lw	a5,20(s2)
    e881f2dc:	24042583          	lw	a1,576(s0)
    e881f2e0:	06890513          	addi	a0,s2,104
    e881f2e4:	0367c7bb          	divw	a5,a5,s6
    e881f2e8:	9d9d                	subw	a1,a1,a5
    e881f2ea:	e90fc0ef          	jal	ra,e881b97a <ExpireDupSuppressInfo>
            q->LastQTxTime      = m->timenow;
    e881f2ee:	24042783          	lw	a5,576(s0)
            q->RecentAnswerPkts = 0;
    e881f2f2:	02092023          	sw	zero,32(s2)
            q->LastQTxTime      = m->timenow;
    e881f2f6:	12f92c23          	sw	a5,312(s2)
            if (q->RequestUnicast) q->RequestUnicast--;
    e881f2fa:	13492783          	lw	a5,308(s2)
    e881f2fe:	c781                	beqz	a5,e881f306 <SendQueries+0x51a>
    e881f300:	37fd                	addiw	a5,a5,-1
    e881f302:	12f92a23          	sw	a5,308(s2)
        SetNextQueryTime(m,q);
    e881f306:	85ca                	mv	a1,s2
    e881f308:	8522                	mv	a0,s0
    e881f30a:	f63fe0ef          	jal	ra,e881e26c <SetNextQueryTime>
    for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e881f30e:	00093903          	ld	s2,0(s2)
    e881f312:	b539                	j	e881f120 <SendQueries+0x334>
            && (q->SendQNow || (!q->Target.type && ActiveQuestion(q) && q->ThisQInterval <= maxExistingQuestionInterval && AccelerateThisQuery(m,q))))
    e881f314:	1fc92783          	lw	a5,508(s2)
    e881f318:	f7fd                	bnez	a5,e881f306 <SendQueries+0x51a>
    e881f31a:	01492783          	lw	a5,20(s2)
    e881f31e:	fef054e3          	blez	a5,e881f306 <SendQueries+0x51a>
    e881f322:	05093703          	ld	a4,80(s2)
    e881f326:	f365                	bnez	a4,e881f306 <SendQueries+0x51a>
    e881f328:	fcfa4fe3          	blt	s4,a5,e881f306 <SendQueries+0x51a>
    if (TimeToSendThisQuestion(q, m->timenow + q->ThisQInterval/10))
    e881f32c:	4729                	li	a4,10
    e881f32e:	02e7c73b          	divw	a4,a5,a4
    e881f332:	24042603          	lw	a2,576(s0)
    e881f336:	01092683          	lw	a3,16(s2)
    e881f33a:	9ebd                	addw	a3,a3,a5
    e881f33c:	9f31                	addw	a4,a4,a2
    e881f33e:	9f15                	subw	a4,a4,a3
    e881f340:	f40755e3          	bgez	a4,e881f28a <SendQueries+0x49e>
    if (TimeToSendThisQuestion(q, m->timenow + q->ThisQInterval/2))
    e881f344:	4017d79b          	sraiw	a5,a5,0x1
    e881f348:	9fb1                	addw	a5,a5,a2
    e881f34a:	9f95                	subw	a5,a5,a3
    e881f34c:	fa07cde3          	bltz	a5,e881f306 <SendQueries+0x51a>
        mDNSu32 forecast = (mDNSu32)DomainNameLength(&q->qname) + 4;
    e881f350:	21490613          	addi	a2,s2,532
    e881f354:	31490593          	addi	a1,s2,788
    e881f358:	8532                	mv	a0,a2
    e881f35a:	f032                	sd	a2,32(sp)
    e881f35c:	df1f30ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e881f360:	8daa                	mv	s11,a0
        const CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e881f362:	7602                	ld	a2,32(sp)
    e881f364:	00892583          	lw	a1,8(s2)
    e881f368:	8522                	mv	a0,s0
    e881f36a:	adeff0ef          	jal	ra,e881e648 <CacheGroupForName>
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)             // If we have a resource record in our cache,
    e881f36e:	dd11                	beqz	a0,e881f28a <SendQueries+0x49e>
    e881f370:	01053d03          	ld	s10,16(a0)
        mDNSu32 forecast = (mDNSu32)DomainNameLength(&q->qname) + 4;
    e881f374:	2d91                	addiw	s11,s11,4
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)             // If we have a resource record in our cache,
    e881f376:	f00d0ae3          	beqz	s10,e881f28a <SendQueries+0x49e>
            if (rr->resrec.rdlength <= SmallRecordLimit &&                  // which is small enough to sensibly fit in the packet
    e881f37a:	014d5783          	lhu	a5,20(s10) # 5014 <memcmp-0xe87fafec>
    e881f37e:	04fce963          	bltu	s9,a5,e881f3d0 <SendQueries+0x5e4>
                SameNameRecordAnswersQuestion(&rr->resrec, q) &&            // which answers our question
    e881f382:	85ca                	mv	a1,s2
    e881f384:	008d0513          	addi	a0,s10,8
    e881f388:	b03f60ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
            if (rr->resrec.rdlength <= SmallRecordLimit &&                  // which is small enough to sensibly fit in the packet
    e881f38c:	1ff00613          	li	a2,511
    e881f390:	c121                	beqz	a0,e881f3d0 <SendQueries+0x5e4>
                rr->TimeRcvd + TicksTTL(rr)/2 - m->timenow >= 0 &&          // and it is less than half-way to expiry
    e881f392:	000ba683          	lw	a3,0(s7)
    e881f396:	010d2783          	lw	a5,16(s10)
    e881f39a:	24042703          	lw	a4,576(s0)
    e881f39e:	02d787bb          	mulw	a5,a5,a3
    e881f3a2:	050d2683          	lw	a3,80(s10)
    e881f3a6:	9e99                	subw	a3,a3,a4
    e881f3a8:	0367c7bb          	divw	a5,a5,s6
                SameNameRecordAnswersQuestion(&rr->resrec, q) &&            // which answers our question
    e881f3ac:	9fb5                	addw	a5,a5,a3
    e881f3ae:	0207c163          	bltz	a5,e881f3d0 <SendQueries+0x5e4>
                rr->NextRequiredQuery - (m->timenow + q->ThisQInterval) > 0) // and we'll ask at least once again before NextRequiredQuery
    e881f3b2:	01492783          	lw	a5,20(s2)
    e881f3b6:	9f3d                	addw	a4,a4,a5
    e881f3b8:	058d2783          	lw	a5,88(s10)
                rr->TimeRcvd + TicksTTL(rr)/2 - m->timenow >= 0 &&          // and it is less than half-way to expiry
    e881f3bc:	9f99                	subw	a5,a5,a4
    e881f3be:	00f05963          	blez	a5,e881f3d0 <SendQueries+0x5e4>
                forecast += 12 + rr->resrec.rdestimate;
    e881f3c2:	016d5783          	lhu	a5,22(s10)
    e881f3c6:	2db1                	addiw	s11,s11,12
    e881f3c8:	01b78dbb          	addw	s11,a5,s11
                if (forecast >= 512) return(mDNSfalse); // If this would add 512 bytes or more to the packet, don't accelerate
    e881f3cc:	f3b66de3          	bltu	a2,s11,e881f306 <SendQueries+0x51a>
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)             // If we have a resource record in our cache,
    e881f3d0:	000d3d03          	ld	s10,0(s10)
    e881f3d4:	b74d                	j	e881f376 <SendQueries+0x58a>
                if (q->BrowseThreshold
    e881f3d6:	02892783          	lw	a5,40(s2)
    e881f3da:	c7c1                	beqz	a5,e881f462 <SendQueries+0x676>
                    && (q->CurrentAnswers >= q->BrowseThreshold)
    e881f3dc:	02492703          	lw	a4,36(s2)
    e881f3e0:	08f76163          	bltu	a4,a5,e881f462 <SendQueries+0x676>
                    && (q->CachedAnswerNeedsUpdate == mDNSfalse)
    e881f3e4:	13194783          	lbu	a5,305(s2)
    e881f3e8:	efad                	bnez	a5,e881f462 <SendQueries+0x676>
                    && !((q->flags & kDNSServiceFlagsThresholdFinder) && (q->ThisQInterval == InitialQuestionInterval)))
    e881f3ea:	1f892783          	lw	a5,504(s2)
    e881f3ee:	000ba703          	lw	a4,0(s7)
    e881f3f2:	02579613          	slli	a2,a5,0x25
    e881f3f6:	00065963          	bgez	a2,e881f408 <SendQueries+0x61c>
    e881f3fa:	0027079b          	addiw	a5,a4,2
    e881f3fe:	460d                	li	a2,3
    e881f400:	02c7c7bb          	divw	a5,a5,a2
    e881f404:	04d78f63          	beq	a5,a3,e881f462 <SendQueries+0x676>
                    q->ThisQInterval = MaxQuestionInterval;
    e881f408:	0357073b          	mulw	a4,a4,s5
                    q->SendQNow = mDNSNULL;
    e881f40c:	12093423          	sd	zero,296(s2)
                    q->ThisQInterval = MaxQuestionInterval;
    e881f410:	00e92a23          	sw	a4,20(s2)
                    q->LastQTime = m->timenow;
    e881f414:	24042783          	lw	a5,576(s0)
                    q->RequestUnicast = 0;
    e881f418:	12092a23          	sw	zero,308(s2)
                    q->LastQTime = m->timenow;
    e881f41c:	00f92823          	sw	a5,16(s2)
                    LogInfo("SendQueries: (%s) %##s reached threshold of %d answers",
    e881f420:	000b5797          	auipc	a5,0xb5
    e881f424:	65478793          	addi	a5,a5,1620 # e88d4a74 <mDNS_LoggingEnabled>
    e881f428:	439c                	lw	a5,0(a5)
    e881f42a:	c38d                	beqz	a5,e881f44c <SendQueries+0x660>
    e881f42c:	31495503          	lhu	a0,788(s2)
    e881f430:	831f60ef          	jal	ra,e8815c60 <DNSTypeName>
    e881f434:	862a                	mv	a2,a0
    e881f436:	02892703          	lw	a4,40(s2)
    e881f43a:	21490693          	addi	a3,s2,532
    e881f43e:	00087597          	auipc	a1,0x87
    e881f442:	1ea58593          	addi	a1,a1,490 # e88a6628 <end.8789+0x2f80>
    e881f446:	450d                	li	a0,3
    e881f448:	064100ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (q->ThisQInterval > MaxQuestionInterval)
    e881f44c:	000ba783          	lw	a5,0(s7)
    e881f450:	01492703          	lw	a4,20(s2)
    e881f454:	0357863b          	mulw	a2,a5,s5
    e881f458:	00e65f63          	bge	a2,a4,e881f476 <SendQueries+0x68a>
                    q->ThisQInterval = MaxQuestionInterval;
    e881f45c:	00c92a23          	sw	a2,20(s2)
    e881f460:	b599                	j	e881f2a6 <SendQueries+0x4ba>
                    q->SendQNow = mDNSInterfaceMark;
    e881f462:	0009b783          	ld	a5,0(s3)
    e881f466:	12f93423          	sd	a5,296(s2)
                    q->ThisQInterval *= QuestionIntervalStep;
    e881f46a:	478d                	li	a5,3
    e881f46c:	02d787bb          	mulw	a5,a5,a3
    e881f470:	00f92a23          	sw	a5,20(s2)
    e881f474:	bfe1                	j	e881f44c <SendQueries+0x660>
                else if (q->CurrentAnswers == 0 && q->ThisQInterval == InitialQuestionInterval * QuestionIntervalStep3 && !q->RequestUnicast &&
    e881f476:	02492683          	lw	a3,36(s2)
    e881f47a:	e20696e3          	bnez	a3,e881f2a6 <SendQueries+0x4ba>
    e881f47e:	468d                	li	a3,3
    e881f480:	2789                	addiw	a5,a5,2
    e881f482:	02d7c7bb          	divw	a5,a5,a3
    e881f486:	46ed                	li	a3,27
    e881f488:	02d787bb          	mulw	a5,a5,a3
    e881f48c:	e0e79de3          	bne	a5,a4,e881f2a6 <SendQueries+0x4ba>
    e881f490:	13492783          	lw	a5,308(s2)
    e881f494:	e00799e3          	bnez	a5,e881f2a6 <SendQueries+0x4ba>
    e881f498:	31495783          	lhu	a5,788(s2)
    e881f49c:	4705                	li	a4,1
    e881f49e:	21490d13          	addi	s10,s2,532
    e881f4a2:	00e78563          	beq	a5,a4,e881f4ac <SendQueries+0x6c0>
                         !(RRTypeIsAddressType(q->qtype) && CacheHasAddressTypeForName(m, &q->qname, q->qnamehash)))
    e881f4a6:	4771                	li	a4,28
    e881f4a8:	02e79563          	bne	a5,a4,e881f4d2 <SendQueries+0x6e6>
    CacheGroup *const cg = CacheGroupForName(m, namehash, name);
    e881f4ac:	00892583          	lw	a1,8(s2)
    e881f4b0:	866a                	mv	a2,s10
    e881f4b2:	8522                	mv	a0,s0
    e881f4b4:	994ff0ef          	jal	ra,e881e648 <CacheGroupForName>
    const CacheRecord *cr = cg ? cg->members : mDNSNULL;
    e881f4b8:	cd09                	beqz	a0,e881f4d2 <SendQueries+0x6e6>
    e881f4ba:	691c                	ld	a5,16(a0)
    while (cr && !RRTypeIsAddressType(cr->resrec.rrtype)) cr=cr->next;
    e881f4bc:	4605                	li	a2,1
    e881f4be:	46f1                	li	a3,28
    e881f4c0:	cb89                	beqz	a5,e881f4d2 <SendQueries+0x6e6>
    e881f4c2:	00a7d703          	lhu	a4,10(a5)
    e881f4c6:	dec700e3          	beq	a4,a2,e881f2a6 <SendQueries+0x4ba>
    e881f4ca:	dcd70ee3          	beq	a4,a3,e881f2a6 <SendQueries+0x4ba>
    e881f4ce:	639c                	ld	a5,0(a5)
    e881f4d0:	bfc5                	j	e881f4c0 <SendQueries+0x6d4>
                    ReconfirmAntecedents(m, &q->qname, q->qnamehash, 0);
    e881f4d2:	00892603          	lw	a2,8(s2)
    e881f4d6:	4681                	li	a3,0
    e881f4d8:	85ea                	mv	a1,s10
    e881f4da:	8522                	mv	a0,s0
    e881f4dc:	fdeff0ef          	jal	ra,e881ecba <ReconfirmAntecedents>
    e881f4e0:	b3d9                	j	e881f2a6 <SendQueries+0x4ba>
        m->CurrentRecord = ar->next;
    e881f4e2:	000db783          	ld	a5,0(s11)
    e881f4e6:	1cf93823          	sd	a5,464(s2)
        if (!AuthRecord_uDNS(ar) && ar->resrec.RecordType == kDNSRecordTypeUnique)  // For all records that are still probing...
    e881f4ea:	000a3783          	ld	a5,0(s4)
    e881f4ee:	020db703          	ld	a4,32(s11)
    e881f4f2:	02f70663          	beq	a4,a5,e881f51e <SendQueries+0x732>
    e881f4f6:	008dc703          	lbu	a4,8(s11)
    e881f4fa:	4789                	li	a5,2
    e881f4fc:	c8f713e3          	bne	a4,a5,e881f182 <SendQueries+0x396>
            if (m->timenow - (ar->LastAPTime + ar->ThisAPInterval) < 0)
    e881f500:	114da783          	lw	a5,276(s11)
    e881f504:	110da703          	lw	a4,272(s11)
    e881f508:	9f3d                	addw	a4,a4,a5
    e881f50a:	24042783          	lw	a5,576(s0)
    e881f50e:	9f99                	subw	a5,a5,a4
    e881f510:	0207d063          	bgez	a5,e881f530 <SendQueries+0x744>
                SetNextAnnounceProbeTime(m, ar);
    e881f514:	85ee                	mv	a1,s11
    e881f516:	8522                	mv	a0,s0
    e881f518:	83ffc0ef          	jal	ra,e881bd56 <SetNextAnnounceProbeTime>
    e881f51c:	b19d                	j	e881f182 <SendQueries+0x396>
        if (!AuthRecord_uDNS(ar) && ar->resrec.RecordType == kDNSRecordTypeUnique)  // For all records that are still probing...
    e881f51e:	07adc783          	lbu	a5,122(s11)
    e881f522:	fbf1                	bnez	a5,e881f4f6 <SendQueries+0x70a>
    e881f524:	028db503          	ld	a0,40(s11)
    e881f528:	b7bf30ef          	jal	ra,e88130a2 <IsLocalDomain>
    e881f52c:	f569                	bnez	a0,e881f4f6 <SendQueries+0x70a>
    e881f52e:	b991                	j	e881f182 <SendQueries+0x396>
            else if (ar->ProbeCount)
    e881f530:	0b6dca83          	lbu	s5,182(s11)
    e881f534:	1c0a8863          	beqz	s5,e881f704 <SendQueries+0x918>
                if (ar->AddressProxy.type == mDNSAddrType_IPv4)
    e881f538:	090da783          	lw	a5,144(s11)
    e881f53c:	4711                	li	a4,4
    e881f53e:	0ce79963          	bne	a5,a4,e881f610 <SendQueries+0x824>
                    LogSPS("SendQueries ARP Probe %d %s %s", ar->ProbeCount, InterfaceNameForID(m, ar->resrec.InterfaceID), ARDisplayString(m,ar));
    e881f542:	000b5797          	auipc	a5,0xb5
    e881f546:	53278793          	addi	a5,a5,1330 # e88d4a74 <mDNS_LoggingEnabled>
    e881f54a:	439c                	lw	a5,0(a5)
    e881f54c:	cb95                	beqz	a5,e881f580 <SendQueries+0x794>
    e881f54e:	020db583          	ld	a1,32(s11)
    e881f552:	8522                	mv	a0,s0
    e881f554:	dbcff0ef          	jal	ra,e881eb10 <InterfaceNameForID>
    e881f558:	f02a                	sd	a0,32(sp)
    e881f55a:	030db583          	ld	a1,48(s11)
    e881f55e:	03b40613          	addi	a2,s0,59
    e881f562:	008d8513          	addi	a0,s11,8
    e881f566:	0591                	addi	a1,a1,4
    e881f568:	cacf70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881f56c:	872a                	mv	a4,a0
    e881f56e:	7682                	ld	a3,32(sp)
    e881f570:	8656                	mv	a2,s5
    e881f572:	00087597          	auipc	a1,0x87
    e881f576:	12658593          	addi	a1,a1,294 # e88a6698 <end.8789+0x2ff0>
    e881f57a:	4509                	li	a0,2
    e881f57c:	7310f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    SendARP(m, 1, ar, &zerov4Addr, &zeroEthAddr, &ar->AddressProxy.ip.v4, &ar->WakeUp.IMAC);
    e881f580:	084d8813          	addi	a6,s11,132
    e881f584:	094d8793          	addi	a5,s11,148
    e881f588:	00084717          	auipc	a4,0x84
    e881f58c:	01070713          	addi	a4,a4,16 # e88a3598 <zeroEthAddr>
    e881f590:	00084697          	auipc	a3,0x84
    e881f594:	05068693          	addi	a3,a3,80 # e88a35e0 <zerov4Addr>
    e881f598:	866e                	mv	a2,s11
    e881f59a:	4585                	li	a1,1
    e881f59c:	8522                	mv	a0,s0
    e881f59e:	9e6fd0ef          	jal	ra,e881c784 <SendARP>
                ar->SendRNow   = (!intf || ar->WakeUp.HMAC.l[0]) ? mDNSNULL : ar->resrec.InterfaceID ? ar->resrec.InterfaceID : intf->InterfaceID;
    e881f5a2:	4781                	li	a5,0
    e881f5a4:	c889                	beqz	s1,e881f5b6 <SendQueries+0x7ca>
    e881f5a6:	07eda703          	lw	a4,126(s11)
    e881f5aa:	e711                	bnez	a4,e881f5b6 <SendQueries+0x7ca>
    e881f5ac:	020db783          	ld	a5,32(s11)
    e881f5b0:	e399                	bnez	a5,e881f5b6 <SendQueries+0x7ca>
    e881f5b2:	9f0d3783          	ld	a5,-1552(s10)
    e881f5b6:	0cfdbc23          	sd	a5,216(s11)
                ar->LastAPTime = m->timenow;
    e881f5ba:	24042783          	lw	a5,576(s0)
                if (ar->ProbeCount > DefaultProbeCountForTypeUnique)
    e881f5be:	0b6dc703          	lbu	a4,182(s11)
                ar->LastAPTime = m->timenow;
    e881f5c2:	10fdaa23          	sw	a5,276(s11)
                if (ar->ProbeCount > DefaultProbeCountForTypeUnique)
    e881f5c6:	478d                	li	a5,3
    e881f5c8:	00e7f463          	bgeu	a5,a4,e881f5d0 <SendQueries+0x7e4>
                    ar->ProbeCount = DefaultProbeCountForTypeUnique;
    e881f5cc:	0afd8b23          	sb	a5,182(s11)
                ar->ProbeCount--;
    e881f5d0:	0b6dc783          	lbu	a5,182(s11)
                SetNextAnnounceProbeTime(m, ar);
    e881f5d4:	85ee                	mv	a1,s11
    e881f5d6:	8522                	mv	a0,s0
                ar->ProbeCount--;
    e881f5d8:	37fd                	addiw	a5,a5,-1
    e881f5da:	0afd8b23          	sb	a5,182(s11)
                SetNextAnnounceProbeTime(m, ar);
    e881f5de:	f78fc0ef          	jal	ra,e881bd56 <SetNextAnnounceProbeTime>
                if (ar->ProbeCount == 0)
    e881f5e2:	0b6dc783          	lbu	a5,182(s11)
    e881f5e6:	b8079ee3          	bnez	a5,e881f182 <SendQueries+0x396>
                    for (r2 = m->DuplicateRecords; r2; r2=r2->next)
    e881f5ea:	1c093a83          	ld	s5,448(s2)
                        if (r2->resrec.RecordType == kDNSRecordTypeUnique && RecordIsLocalDuplicate(r2, ar))
    e881f5ee:	4b49                	li	s6,18
    e881f5f0:	ffff4c17          	auipc	s8,0xffff4
    e881f5f4:	a5ac0c13          	addi	s8,s8,-1446 # e881304a <SameDomainName>
    e881f5f8:	4c85                	li	s9,1
                    for (r2 = m->DuplicateRecords; r2; r2=r2->next)
    e881f5fa:	060a9e63          	bnez	s5,e881f676 <SendQueries+0x88a>
                    if (!ar->Acknowledged) AcknowledgeRecord(m, ar);
    e881f5fe:	0b4dc783          	lbu	a5,180(s11)
    e881f602:	b80790e3          	bnez	a5,e881f182 <SendQueries+0x396>
    e881f606:	85ee                	mv	a1,s11
    e881f608:	8522                	mv	a0,s0
    e881f60a:	bd2fc0ef          	jal	ra,e881b9dc <AcknowledgeRecord>
    e881f60e:	be95                	j	e881f182 <SendQueries+0x396>
                else if (ar->AddressProxy.type == mDNSAddrType_IPv6)
    e881f610:	4719                	li	a4,6
    e881f612:	f8e798e3          	bne	a5,a4,e881f5a2 <SendQueries+0x7b6>
                    LogSPS("SendQueries NDP Probe %d %s %s", ar->ProbeCount, InterfaceNameForID(m, ar->resrec.InterfaceID), ARDisplayString(m,ar));
    e881f616:	000b5797          	auipc	a5,0xb5
    e881f61a:	45e78793          	addi	a5,a5,1118 # e88d4a74 <mDNS_LoggingEnabled>
    e881f61e:	439c                	lw	a5,0(a5)
    e881f620:	cb95                	beqz	a5,e881f654 <SendQueries+0x868>
    e881f622:	020db583          	ld	a1,32(s11)
    e881f626:	8522                	mv	a0,s0
    e881f628:	ce8ff0ef          	jal	ra,e881eb10 <InterfaceNameForID>
    e881f62c:	f02a                	sd	a0,32(sp)
    e881f62e:	030db583          	ld	a1,48(s11)
    e881f632:	03b40613          	addi	a2,s0,59
    e881f636:	008d8513          	addi	a0,s11,8
    e881f63a:	0591                	addi	a1,a1,4
    e881f63c:	bd8f70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881f640:	872a                	mv	a4,a0
    e881f642:	7682                	ld	a3,32(sp)
    e881f644:	8656                	mv	a2,s5
    e881f646:	00087597          	auipc	a1,0x87
    e881f64a:	07258593          	addi	a1,a1,114 # e88a66b8 <end.8789+0x3010>
    e881f64e:	4509                	li	a0,2
    e881f650:	65d0f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    SendNDP(m, NDP_Sol, 0, ar, &zerov6Addr, mDNSNULL, &ar->AddressProxy.ip.v6, &ar->WakeUp.IMAC);
    e881f654:	084d8893          	addi	a7,s11,132
    e881f658:	094d8813          	addi	a6,s11,148
    e881f65c:	4781                	li	a5,0
    e881f65e:	00084717          	auipc	a4,0x84
    e881f662:	f8a70713          	addi	a4,a4,-118 # e88a35e8 <zerov6Addr>
    e881f666:	86ee                	mv	a3,s11
    e881f668:	4601                	li	a2,0
    e881f66a:	08700593          	li	a1,135
    e881f66e:	8522                	mv	a0,s0
    e881f670:	a62fd0ef          	jal	ra,e881c8d2 <SendNDP>
    e881f674:	b73d                	j	e881f5a2 <SendQueries+0x7b6>
                        if (r2->resrec.RecordType == kDNSRecordTypeUnique && RecordIsLocalDuplicate(r2, ar))
    e881f676:	008ac703          	lbu	a4,8(s5) # 1008 <memcmp-0xe87feff8>
    e881f67a:	4789                	li	a5,2
    e881f67c:	08f71163          	bne	a4,a5,e881f6fe <SendQueries+0x912>
    e881f680:	020ab683          	ld	a3,32(s5)
    e881f684:	020db703          	ld	a4,32(s11)
    e881f688:	06e69b63          	bne	a3,a4,e881f6fe <SendQueries+0x912>
    e881f68c:	008dc703          	lbu	a4,8(s11)
    e881f690:	00276693          	ori	a3,a4,2
    e881f694:	01668763          	beq	a3,s6,e881f6a2 <SendQueries+0x8b6>
    e881f698:	377d                	addiw	a4,a4,-1
    e881f69a:	0ff77713          	andi	a4,a4,255
    e881f69e:	06ece063          	bltu	s9,a4,e881f6fe <SendQueries+0x912>
    e881f6a2:	008ab683          	ld	a3,8(s5)
    e881f6a6:	008db703          	ld	a4,8(s11)
    e881f6aa:	0136f6b3          	and	a3,a3,s3
    e881f6ae:	01377733          	and	a4,a4,s3
    e881f6b2:	04e69663          	bne	a3,a4,e881f6fe <SendQueries+0x912>
    e881f6b6:	018aa683          	lw	a3,24(s5)
    e881f6ba:	018da703          	lw	a4,24(s11)
    e881f6be:	04e69063          	bne	a3,a4,e881f6fe <SendQueries+0x912>
    e881f6c2:	014ad683          	lhu	a3,20(s5)
    e881f6c6:	014dd703          	lhu	a4,20(s11)
    e881f6ca:	02e69a63          	bne	a3,a4,e881f6fe <SendQueries+0x912>
    e881f6ce:	01caa683          	lw	a3,28(s5)
    e881f6d2:	01cda703          	lw	a4,28(s11)
    e881f6d6:	02e69463          	bne	a3,a4,e881f6fe <SendQueries+0x912>
    e881f6da:	030db583          	ld	a1,48(s11)
    e881f6de:	8662                	mv	a2,s8
    e881f6e0:	008a8513          	addi	a0,s5,8
    e881f6e4:	0591                	addi	a1,a1,4
    e881f6e6:	925f40ef          	jal	ra,e881400a <SameRDataBody>
    e881f6ea:	c911                	beqz	a0,e881f6fe <SendQueries+0x912>
    e881f6ec:	028db583          	ld	a1,40(s11)
    e881f6f0:	028ab503          	ld	a0,40(s5)
    e881f6f4:	957f30ef          	jal	ra,e881304a <SameDomainName>
    e881f6f8:	c119                	beqz	a0,e881f6fe <SendQueries+0x912>
                            r2->ProbeCount = 0;
    e881f6fa:	0a0a8b23          	sb	zero,182(s5)
                    for (r2 = m->DuplicateRecords; r2; r2=r2->next)
    e881f6fe:	000aba83          	ld	s5,0(s5)
    e881f702:	bde5                	j	e881f5fa <SendQueries+0x80e>
                if (!ar->Acknowledged) AcknowledgeRecord(m, ar);    // Defensive, just in case it got missed somehow
    e881f704:	0b4dc783          	lbu	a5,180(s11)
    e881f708:	e789                	bnez	a5,e881f712 <SendQueries+0x926>
    e881f70a:	85ee                	mv	a1,s11
    e881f70c:	8522                	mv	a0,s0
    e881f70e:	acefc0ef          	jal	ra,e881b9dc <AcknowledgeRecord>
                ar->resrec.RecordType     = kDNSRecordTypeVerified;
    e881f712:	47c1                	li	a5,16
    e881f714:	00fd8423          	sb	a5,8(s11)
                ar->ThisAPInterval = DefaultAnnounceIntervalForTypeUnique;
    e881f718:	000ba783          	lw	a5,0(s7)
    e881f71c:	4709                	li	a4,2
    e881f71e:	02e7c7bb          	divw	a5,a5,a4
    e881f722:	10fda823          	sw	a5,272(s11)
                ar->LastAPTime     = m->timenow - DefaultAnnounceIntervalForTypeUnique;
    e881f726:	24042703          	lw	a4,576(s0)
    e881f72a:	40f707bb          	subw	a5,a4,a5
    e881f72e:	10fdaa23          	sw	a5,276(s11)
    e881f732:	b3cd                	j	e881f514 <SendQueries+0x728>
        m->CurrentRecord = ar->next;
    e881f734:	619c                	ld	a5,0(a1)
    e881f736:	1cf9b823          	sd	a5,464(s3)
        if (ar->resrec.RecordType == kDNSRecordTypeUnique && ar->ProbeCount == 0 && !ar->Acknowledged)
    e881f73a:	0085c783          	lbu	a5,8(a1)
    e881f73e:	a74792e3          	bne	a5,s4,e881f1a2 <SendQueries+0x3b6>
    e881f742:	79dc                	ld	a5,176(a1)
    e881f744:	0127f7b3          	and	a5,a5,s2
    e881f748:	a4079de3          	bnez	a5,e881f1a2 <SendQueries+0x3b6>
            AcknowledgeRecord(m, ar);
    e881f74c:	8522                	mv	a0,s0
    e881f74e:	a8efc0ef          	jal	ra,e881b9dc <AcknowledgeRecord>
    e881f752:	bc81                	j	e881f1a2 <SendQueries+0x3b6>
                if (mDNSOpaque16IsZero(q->TargetQID) && (q->SendQNow == intf->InterfaceID))
    e881f754:	212cdd83          	lhu	s11,530(s9)
    e881f758:	020d9963          	bnez	s11,e881f78a <SendQueries+0x99e>
    e881f75c:	67c6                	ld	a5,80(sp)
    e881f75e:	128cb703          	ld	a4,296(s9)
    e881f762:	9f07b783          	ld	a5,-1552(a5)
    e881f766:	02f71263          	bne	a4,a5,e881f78a <SendQueries+0x99e>
                    if (!mDNSPlatformValidQuestionForInterface(q, intf))
    e881f76a:	85a6                	mv	a1,s1
    e881f76c:	8566                	mv	a0,s9
    e881f76e:	7b1100ef          	jal	ra,e883071e <mDNSPlatformValidQuestionForInterface>
    e881f772:	e10d                	bnez	a0,e881f794 <SendQueries+0x9a8>
                        q->SendQNow = (q->InterfaceID || !q->SendOnAll) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881f774:	1f0cb503          	ld	a0,496(s9)
    e881f778:	ed01                	bnez	a0,e881f790 <SendQueries+0x9a4>
    e881f77a:	130cc783          	lbu	a5,304(s9)
    e881f77e:	c781                	beqz	a5,e881f786 <SendQueries+0x99a>
    e881f780:	8526                	mv	a0,s1
    e881f782:	f08f30ef          	jal	ra,e8812e8a <GetNextActiveInterfaceID>
    e881f786:	12acb423          	sd	a0,296(s9)
            for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e881f78a:	000cbc83          	ld	s9,0(s9)
    e881f78e:	bc55                	j	e881f242 <SendQueries+0x456>
                        q->SendQNow = (q->InterfaceID || !q->SendOnAll) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881f790:	4501                	li	a0,0
    e881f792:	bfd5                	j	e881f786 <SendQueries+0x99a>
        if (ds[i].InterfaceID == intf->InterfaceID)
    e881f794:	67c6                	ld	a5,80(sp)
    mDNSBool v4 = !intf->IPv4Available;     // If this interface doesn't do v4, we don't need to find a v4 duplicate of this query
    e881f796:	0094c703          	lbu	a4,9(s1)
    mDNSBool v6 = !intf->IPv6Available;     // If this interface doesn't do v6, we don't need to find a v6 duplicate of this query
    e881f79a:	00a4c603          	lbu	a2,10(s1)
        if (ds[i].InterfaceID == intf->InterfaceID)
    e881f79e:	9f07b583          	ld	a1,-1552(a5)
    mDNSBool v4 = !intf->IPv4Available;     // If this interface doesn't do v4, we don't need to find a v4 duplicate of this query
    e881f7a2:	00173713          	seqz	a4,a4
    mDNSBool v6 = !intf->IPv6Available;     // If this interface doesn't do v6, we don't need to find a v6 duplicate of this query
    e881f7a6:	00163613          	seqz	a2,a2
    for (i=0; i<DupSuppressInfoSize; i++)
    e881f7aa:	070c8693          	addi	a3,s9,112
    e881f7ae:	130c8513          	addi	a0,s9,304
            if      (ds[i].Type == mDNSAddrType_IPv4) v4 = mDNStrue;
    e881f7b2:	4891                	li	a7,4
            else if (ds[i].Type == mDNSAddrType_IPv6) v6 = mDNStrue;
    e881f7b4:	4319                	li	t1,6
        if (ds[i].InterfaceID == intf->InterfaceID)
    e881f7b6:	629c                	ld	a5,0(a3)
    e881f7b8:	00b79b63          	bne	a5,a1,e881f7ce <SendQueries+0x9e2>
            if      (ds[i].Type == mDNSAddrType_IPv4) v4 = mDNStrue;
    e881f7bc:	469c                	lw	a5,8(a3)
    e881f7be:	01178563          	beq	a5,a7,e881f7c8 <SendQueries+0x9dc>
            else if (ds[i].Type == mDNSAddrType_IPv6) v6 = mDNStrue;
    e881f7c2:	286789e3          	beq	a5,t1,e8820254 <SendQueries+0x1468>
            if (v4 && v6) return(mDNStrue);
    e881f7c6:	c701                	beqz	a4,e881f7ce <SendQueries+0x9e2>
    e881f7c8:	26061ee3          	bnez	a2,e8820244 <SendQueries+0x1458>
    e881f7cc:	4705                	li	a4,1
    for (i=0; i<DupSuppressInfoSize; i++)
    e881f7ce:	06e1                	addi	a3,a3,24
    e881f7d0:	fed513e3          	bne	a0,a3,e881f7b6 <SendQueries+0x9ca>
    mDNSBool ucast = (q->LargeAnswers || q->RequestUnicast) && m->CanReceiveUnicastOn5353 && intf->SupportsUnicastMDNSResponse;
    e881f7d4:	02cca783          	lw	a5,44(s9)
    e881f7d8:	e789                	bnez	a5,e881f7e2 <SendQueries+0x9f6>
    e881f7da:	134ca783          	lw	a5,308(s9)
    e881f7de:	e082                	sd	zero,64(sp)
    e881f7e0:	cf81                	beqz	a5,e881f7f8 <SendQueries+0xa0c>
    e881f7e2:	00c44783          	lbu	a5,12(s0)
    e881f7e6:	e082                	sd	zero,64(sp)
    e881f7e8:	cb81                	beqz	a5,e881f7f8 <SendQueries+0xa0c>
    e881f7ea:	67c6                	ld	a5,80(sp)
    e881f7ec:	a6d7c783          	lbu	a5,-1427(a5)
    e881f7f0:	c781                	beqz	a5,e881f7f8 <SendQueries+0xa0c>
    e881f7f2:	4785                	li	a5,1
    e881f7f4:	e0be                	sd	a5,64(sp)
    mDNSu16 ucbit = (mDNSu16)(ucast ? kDNSQClass_UnicastResponse : 0);
    e881f7f6:	6da1                	lui	s11,0x8
    mDNSu8 anoninfo_space = q->AnonInfo ? AnonInfoSpace(q->AnonInfo) : 0;
    e881f7f8:	060cb783          	ld	a5,96(s9)
    e881f7fc:	4881                	li	a7,0
    e881f7fe:	c799                	beqz	a5,e881f80c <SendQueries+0xa20>
    return (2 + 10 + rr->rdlength);
    e881f800:	6b9c                	ld	a5,16(a5)
    e881f802:	00c7d883          	lhu	a7,12(a5)
    e881f806:	28b1                	addiw	a7,a7,12
    mDNSu8 anoninfo_space = q->AnonInfo ? AnonInfoSpace(q->AnonInfo) : 0;
    e881f808:	0ff8f893          	andi	a7,a7,255
    mDNSu8 *newptr = putQuestion(query, *queryptr, limit - *answerforecast - anoninfo_space, &q->qname, q->qtype, (mDNSu16)(q->qclass | ucbit));
    e881f80c:	7702                	ld	a4,32(sp)
    e881f80e:	65e6                	ld	a1,88(sp)
    e881f810:	316cd783          	lhu	a5,790(s9)
    e881f814:	7c07360b          	extu	a2,a4,31,0
    e881f818:	314cd703          	lhu	a4,788(s9)
    e881f81c:	214c8313          	addi	t1,s9,532
    e881f820:	9646                	add	a2,a2,a7
    e881f822:	00fde7b3          	or	a5,s11,a5
    e881f826:	40c58633          	sub	a2,a1,a2
    e881f82a:	869a                	mv	a3,t1
    e881f82c:	85ca                	mv	a1,s2
    e881f82e:	8552                	mv	a0,s4
    e881f830:	f4c6                	sd	a7,104(sp)
    e881f832:	f89a                	sd	t1,112(sp)
    e881f834:	fcbf40ef          	jal	ra,e88147fe <putQuestion>
    e881f838:	8daa                	mv	s11,a0
    if (!newptr)
    e881f83a:	d921                	beqz	a0,e881f78a <SendQueries+0x99e>
        mDNSu32 forecast = *answerforecast + anoninfo_space;
    e881f83c:	78a6                	ld	a7,104(sp)
    e881f83e:	7782                	ld	a5,32(sp)
        const CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e881f840:	7346                	ld	t1,112(sp)
    e881f842:	008ca583          	lw	a1,8(s9)
        mDNSu32 forecast = *answerforecast + anoninfo_space;
    e881f846:	00f887bb          	addw	a5,a7,a5
        const CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e881f84a:	861a                	mv	a2,t1
    e881f84c:	8522                	mv	a0,s0
        mDNSu32 forecast = *answerforecast + anoninfo_space;
    e881f84e:	f4be                	sd	a5,104(sp)
        const CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e881f850:	df9fe0ef          	jal	ra,e881e648 <CacheGroupForName>
    e881f854:	862a                	mv	a2,a0
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)             // If we have a resource record in our cache,
    e881f856:	77a6                	ld	a5,104(sp)
    e881f858:	cd61                	beqz	a0,e881f930 <SendQueries+0xb44>
    e881f85a:	6918                	ld	a4,16(a0)
    e881f85c:	76a2                	ld	a3,40(sp)
                rr->NextInKAList == mDNSNULL && ka != &rr->NextInKAList &&  // which is not already in the known answer list
    e881f85e:	40000313          	li	t1,1024
                rr->TimeRcvd + TicksTTL(rr)/2 - m->timenow >                // and its half-way-to-expiry time is at least 1 second away
    e881f862:	4e89                	li	t4,2
                if (query->h.numQuestions > 1 && newptr + forecast >= limit)
    e881f864:	01340f33          	add	t5,s0,s3
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)             // If we have a resource record in our cache,
    e881f868:	e711                	bnez	a4,e881f874 <SendQueries+0xa88>
        if (ucast) q->ExpectUnicastResp = NonZeroTime(m->timenow);
    e881f86a:	6706                	ld	a4,64(sp)
    e881f86c:	fcd1578b          	sdd	a5,a3,(sp),2,4
    e881f870:	e379                	bnez	a4,e881f936 <SendQueries+0xb4a>
    e881f872:	a8c9                	j	e881f944 <SendQueries+0xb58>
            if (rr->resrec.InterfaceID == q->SendQNow &&                    // received on this interface
    e881f874:	7308                	ld	a0,32(a4)
    e881f876:	128cb583          	ld	a1,296(s9)
    e881f87a:	0ab51963          	bne	a0,a1,e881f92c <SendQueries+0xb40>
    e881f87e:	00874583          	lbu	a1,8(a4)
    e881f882:	0325f593          	andi	a1,a1,50
    e881f886:	e1dd                	bnez	a1,e881f92c <SendQueries+0xb40>
                !(rr->resrec.RecordType & kDNSRecordTypeUniqueMask) &&      // which is a shared (i.e. not unique) record type
    e881f888:	672c                	ld	a1,72(a4)
    e881f88a:	e1cd                	bnez	a1,e881f92c <SendQueries+0xb40>
                rr->NextInKAList == mDNSNULL && ka != &rr->NextInKAList &&  // which is not already in the known answer list
    e881f88c:	04870893          	addi	a7,a4,72
    e881f890:	08d88e63          	beq	a7,a3,e881f92c <SendQueries+0xb40>
    e881f894:	01475583          	lhu	a1,20(a4)
    e881f898:	08b36a63          	bltu	t1,a1,e881f92c <SendQueries+0xb40>
                SameNameRecordAnswersQuestion(&rr->resrec, q) &&            // which answers our question
    e881f89c:	00870513          	addi	a0,a4,8
    e881f8a0:	85e6                	mv	a1,s9
    e881f8a2:	ed7a                	sd	t5,152(sp)
    e881f8a4:	e976                	sd	t4,144(sp)
    e881f8a6:	e53e                	sd	a5,136(sp)
    e881f8a8:	e136                	sd	a3,128(sp)
    e881f8aa:	f8b2                	sd	a2,112(sp)
    e881f8ac:	f4ba                	sd	a4,104(sp)
    e881f8ae:	fcc6                	sd	a7,120(sp)
    e881f8b0:	ddaf60ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
                rr->resrec.rdlength <= SmallRecordLimit &&                  // which is small enough to sensibly fit in the packet
    e881f8b4:	7726                	ld	a4,104(sp)
    e881f8b6:	7646                	ld	a2,112(sp)
    e881f8b8:	668a                	ld	a3,128(sp)
    e881f8ba:	67aa                	ld	a5,136(sp)
    e881f8bc:	40000313          	li	t1,1024
    e881f8c0:	000b5e17          	auipc	t3,0xb5
    e881f8c4:	1c0e0e13          	addi	t3,t3,448 # e88d4a80 <mDNSPlatformOneSecond>
    e881f8c8:	6eca                	ld	t4,144(sp)
    e881f8ca:	6f6a                	ld	t5,152(sp)
    e881f8cc:	4f85                	li	t6,1
    e881f8ce:	cd39                	beqz	a0,e881f92c <SendQueries+0xb40>
                rr->TimeRcvd + TicksTTL(rr)/2 - m->timenow >                // and its half-way-to-expiry time is at least 1 second away
    e881f8d0:	4b28                	lw	a0,80(a4)
    e881f8d2:	24042583          	lw	a1,576(s0)
    e881f8d6:	000e2283          	lw	t0,0(t3)
    e881f8da:	40b505bb          	subw	a1,a0,a1
    e881f8de:	4b08                	lw	a0,16(a4)
    e881f8e0:	0255053b          	mulw	a0,a0,t0
    e881f8e4:	03d5453b          	divw	a0,a0,t4
                SameNameRecordAnswersQuestion(&rr->resrec, q) &&            // which answers our question
    e881f8e8:	9da9                	addw	a1,a1,a0
    e881f8ea:	04b2d163          	bge	t0,a1,e881f92c <SendQueries+0xb40>
                *ka = rr;   // Link this record into our known answer chain
    e881f8ee:	e298                	sd	a4,0(a3)
                forecast += 12 + rr->resrec.rdestimate;
    e881f8f0:	01675683          	lhu	a3,22(a4)
                if (query->h.numQuestions > 1 && newptr + forecast >= limit)
    e881f8f4:	1e4f5583          	lhu	a1,484(t5)
    e881f8f8:	27b1                	addiw	a5,a5,12
                forecast += 12 + rr->resrec.rdestimate;
    e881f8fa:	9fb5                	addw	a5,a5,a3
                if (query->h.numQuestions > 1 && newptr + forecast >= limit)
    e881f8fc:	78e6                	ld	a7,120(sp)
    e881f8fe:	02bff663          	bgeu	t6,a1,e881f92a <SendQueries+0xb3e>
    e881f902:	6566                	ld	a0,88(sp)
    e881f904:	7c07b68b          	extu	a3,a5,31,0
    e881f908:	96ee                	add	a3,a3,s11
    e881f90a:	02a6e063          	bltu	a3,a0,e881f92a <SendQueries+0xb3e>
                    query->h.numQuestions--;
    e881f90e:	013407b3          	add	a5,s0,s3
    e881f912:	35fd                	addiw	a1,a1,-1
    e881f914:	1eb79223          	sh	a1,484(a5)
                    ka = *kalistptrptr;     // Go back to where we started and retract these answer records
    e881f918:	77a2                	ld	a5,40(sp)
                    while (*ka) { CacheRecord *c = *ka; *ka = mDNSNULL; ka = &c->NextInKAList; }
    e881f91a:	6398                	ld	a4,0(a5)
    e881f91c:	e60707e3          	beqz	a4,e881f78a <SendQueries+0x99e>
    e881f920:	0007b023          	sd	zero,0(a5)
    e881f924:	04870793          	addi	a5,a4,72
    e881f928:	bfcd                	j	e881f91a <SendQueries+0xb2e>
                if (query->h.numQuestions > 1 && newptr + forecast >= limit)
    e881f92a:	86c6                	mv	a3,a7
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)             // If we have a resource record in our cache,
    e881f92c:	6318                	ld	a4,0(a4)
    e881f92e:	bf2d                	j	e881f868 <SendQueries+0xa7c>
        if (ucast) q->ExpectUnicastResp = NonZeroTime(m->timenow);
    e881f930:	f03e                	sd	a5,32(sp)
    e881f932:	6786                	ld	a5,64(sp)
    e881f934:	cf81                	beqz	a5,e881f94c <SendQueries+0xb60>
    e881f936:	24042783          	lw	a5,576(s0)
    e881f93a:	e391                	bnez	a5,e881f93e <SendQueries+0xb52>
    e881f93c:	4785                	li	a5,1
    e881f93e:	00fcac23          	sw	a5,24(s9)
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)             // For every resource record in our cache,
    e881f942:	c609                	beqz	a2,e881f94c <SendQueries+0xb60>
    e881f944:	01063903          	ld	s2,16(a2)
    e881f948:	08091c63          	bnez	s2,e881f9e0 <SendQueries+0xbf4>
                        if (!Suppress && q->AnonInfo)
    e881f94c:	060cb783          	ld	a5,96(s9)
    e881f950:	c789                	beqz	a5,e881f95a <SendQueries+0xb6e>
                            q->AnonInfo->SendNow = intf->InterfaceID;
    e881f952:	6746                	ld	a4,80(sp)
    e881f954:	9f073703          	ld	a4,-1552(a4)
    e881f958:	ef98                	sd	a4,24(a5)
                        q->SendQNow = (q->InterfaceID || !q->SendOnAll) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881f95a:	1f0cb503          	ld	a0,496(s9)
    e881f95e:	e569                	bnez	a0,e881fa28 <SendQueries+0xc3c>
    e881f960:	130cc783          	lbu	a5,304(s9)
    e881f964:	c781                	beqz	a5,e881f96c <SendQueries+0xb80>
    e881f966:	8526                	mv	a0,s1
    e881f968:	d22f30ef          	jal	ra,e8812e8a <GetNextActiveInterfaceID>
                        if (q->WakeOnResolveCount)
    e881f96c:	142cc783          	lbu	a5,322(s9)
                        q->SendQNow = (q->InterfaceID || !q->SendOnAll) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881f970:	12acb423          	sd	a0,296(s9)
                        if (q->WakeOnResolveCount)
    e881f974:	cfb1                	beqz	a5,e881f9d0 <SendQueries+0xbe4>
    if (InterfaceID == mDNSInterface_Any || LocalOnlyOrP2PInterface(InterfaceID))
    e881f976:	00083797          	auipc	a5,0x83
    e881f97a:	3ea78793          	addi	a5,a5,1002 # e88a2d60 <mDNSInterface_Any>
    mDNSInterfaceID InterfaceID = q->InterfaceID;
    e881f97e:	1f0cb703          	ld	a4,496(s9)
    if (InterfaceID == mDNSInterface_Any || LocalOnlyOrP2PInterface(InterfaceID))
    e881f982:	639c                	ld	a5,0(a5)
    e881f984:	02f70763          	beq	a4,a5,e881f9b2 <SendQueries+0xbc6>
    e881f988:	00083797          	auipc	a5,0x83
    e881f98c:	3e878793          	addi	a5,a5,1000 # e88a2d70 <mDNSInterface_LocalOnly>
    e881f990:	639c                	ld	a5,0(a5)
    e881f992:	02f70063          	beq	a4,a5,e881f9b2 <SendQueries+0xbc6>
    e881f996:	00083797          	auipc	a5,0x83
    e881f99a:	3e278793          	addi	a5,a5,994 # e88a2d78 <mDNSInterface_P2P>
    e881f99e:	639c                	ld	a5,0(a5)
    e881f9a0:	00f70963          	beq	a4,a5,e881f9b2 <SendQueries+0xbc6>
    e881f9a4:	00083797          	auipc	a5,0x83
    e881f9a8:	3c478793          	addi	a5,a5,964 # e88a2d68 <mDNSInterface_BLE>
    e881f9ac:	639c                	ld	a5,0(a5)
    e881f9ae:	06f71f63          	bne	a4,a5,e881fa2c <SendQueries+0xc40>
        LogMsg("mDNSSendWakeOnResolve: ERROR!! Invalid InterfaceID %p for question %##s", InterfaceID, q->qname.c);
    e881f9b2:	214c8693          	addi	a3,s9,532
    e881f9b6:	863a                	mv	a2,a4
    e881f9b8:	00087597          	auipc	a1,0x87
    e881f9bc:	d2058593          	addi	a1,a1,-736 # e88a66d8 <end.8789+0x3030>
    e881f9c0:	4501                	li	a0,0
    e881f9c2:	2eb0f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            q->WakeOnResolveCount--;
    e881f9c6:	142cc783          	lbu	a5,322(s9)
    e881f9ca:	37fd                	addiw	a5,a5,-1
    e881f9cc:	14fc8123          	sb	a5,322(s9)
                        if (q->UseBackgroundTrafficClass)
    e881f9d0:	320cc783          	lbu	a5,800(s9)
    e881f9d4:	896e                	mv	s2,s11
    e881f9d6:	da078ae3          	beqz	a5,e881f78a <SendQueries+0x99e>
                            useBackgroundTrafficClass = mDNStrue;
    e881f9da:	4785                	li	a5,1
    e881f9dc:	f83e                	sd	a5,48(sp)
    e881f9de:	b375                	j	e881f78a <SendQueries+0x99e>
            if (rr->resrec.InterfaceID == q->SendQNow &&                    // received on this interface
    e881f9e0:	02093703          	ld	a4,32(s2)
    e881f9e4:	128cb783          	ld	a5,296(s9)
    e881f9e8:	02f71d63          	bne	a4,a5,e881fa22 <SendQueries+0xc36>
    e881f9ec:	04893783          	ld	a5,72(s2)
    e881f9f0:	eb8d                	bnez	a5,e881fa22 <SendQueries+0xc36>
                rr->NextInKAList == mDNSNULL && ka != &rr->NextInKAList &&  // which is not in the known answer list
    e881f9f2:	7722                	ld	a4,40(sp)
    e881f9f4:	04890793          	addi	a5,s2,72
    e881f9f8:	02f70563          	beq	a4,a5,e881fa22 <SendQueries+0xc36>
                SameNameRecordAnswersQuestion(&rr->resrec, q))              // which answers our question
    e881f9fc:	85e6                	mv	a1,s9
    e881f9fe:	00890513          	addi	a0,s2,8
    e881fa02:	c88f60ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
                rr->NextInKAList == mDNSNULL && ka != &rr->NextInKAList &&  // which is not in the known answer list
    e881fa06:	cd11                	beqz	a0,e881fa22 <SendQueries+0xc36>
                rr->UnansweredQueries++;                                    // indicate that we're expecting a response
    e881fa08:	06c94783          	lbu	a5,108(s2)
                SetNextCacheCheckTimeForRecord(m, rr);
    e881fa0c:	85ca                	mv	a1,s2
    e881fa0e:	8522                	mv	a0,s0
                rr->UnansweredQueries++;                                    // indicate that we're expecting a response
    e881fa10:	2785                	addiw	a5,a5,1
    e881fa12:	06f90623          	sb	a5,108(s2)
                rr->LastUnansweredTime = m->timenow;
    e881fa16:	24042783          	lw	a5,576(s0)
    e881fa1a:	06f92423          	sw	a5,104(s2)
                SetNextCacheCheckTimeForRecord(m, rr);
    e881fa1e:	93cff0ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)             // For every resource record in our cache,
    e881fa22:	00093903          	ld	s2,0(s2)
    e881fa26:	b70d                	j	e881f948 <SendQueries+0xb5c>
                        q->SendQNow = (q->InterfaceID || !q->SendOnAll) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881fa28:	4501                	li	a0,0
    e881fa2a:	b789                	j	e881f96c <SendQueries+0xb80>
    len = d->c[0];
    e881fa2c:	214cc883          	lbu	a7,532(s9)
    e881fa30:	215c8613          	addi	a2,s9,533
    cnt = 0;
    e881fa34:	4681                	li	a3,0
    len = d->c[0];
    e881fa36:	87c6                	mv	a5,a7
    for (i = 1; i < len; i++)
    e881fa38:	4905                	li	s2,1
    e881fa3a:	85b2                	mv	a1,a2
        if (d->c[i] == '@')
    e881fa3c:	04000313          	li	t1,64
        else if (d->c[i] == ':')
    e881fa40:	03a00e13          	li	t3,58
    for (i = 1; i < len; i++)
    e881fa44:	01194c63          	blt	s2,a7,e881fa5c <SendQueries+0xc70>
    LogMsg("mDNSSendWakeOnResolve: ERROR!! Malformed WakeOnResolve name %##s", q->qname.c);
    e881fa48:	214c8613          	addi	a2,s9,532
    e881fa4c:	00087597          	auipc	a1,0x87
    e881fa50:	db458593          	addi	a1,a1,-588 # e88a6800 <end.8789+0x3158>
    e881fa54:	4501                	li	a0,0
    e881fa56:	2570f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e881fa5a:	b7b5                	j	e881f9c6 <SendQueries+0xbda>
        if (d->c[i] == '@')
    e881fa5c:	00064503          	lbu	a0,0(a2)
    e881fa60:	0a651863          	bne	a0,t1,e881fb10 <SendQueries+0xd24>
            if (cnt != 5)
    e881fa64:	4615                	li	a2,5
    e881fa66:	214c8893          	addi	a7,s9,532
    e881fa6a:	00c68b63          	beq	a3,a2,e881fa80 <SendQueries+0xc94>
                LogMsg("mDNSSendWakeOnResolve: ERROR!! Malformed Ethernet address %##s, cnt %d", q->qname.c, cnt);
    e881fa6e:	8646                	mv	a2,a7
    e881fa70:	00087597          	auipc	a1,0x87
    e881fa74:	cb058593          	addi	a1,a1,-848 # e88a6720 <end.8789+0x3078>
                LogMsg("mDNSSendWakeOnResolve: ERROR!! Malformed IP address %##s, length %d", q->qname.c, len - i);
    e881fa78:	4501                	li	a0,0
    e881fa7a:	2330f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                return;
    e881fa7e:	b7a1                	j	e881f9c6 <SendQueries+0xbda>
            if ((i - 1) > (int) (sizeof(EthAddr) - 1))
    e881fa80:	fff9069b          	addiw	a3,s2,-1
    e881fa84:	4645                	li	a2,17
    e881fa86:	00d65863          	bge	a2,a3,e881fa96 <SendQueries+0xcaa>
                LogMsg("mDNSSendWakeOnResolve: ERROR!! Malformed Ethernet address %##s, length %d", q->qname.c, i - 1);
    e881fa8a:	8646                	mv	a2,a7
    e881fa8c:	00087597          	auipc	a1,0x87
    e881fa90:	cdc58593          	addi	a1,a1,-804 # e88a6768 <end.8789+0x30c0>
    e881fa94:	b7d5                	j	e881fa78 <SendQueries+0xc8c>
            if ((len - i) > (int)(sizeof(IPAddr) - 1))
    e881fa96:	412787bb          	subw	a5,a5,s2
    e881fa9a:	02e00613          	li	a2,46
    e881fa9e:	00f65963          	bge	a2,a5,e881fab0 <SendQueries+0xcc4>
                LogMsg("mDNSSendWakeOnResolve: ERROR!! Malformed IP address %##s, length %d", q->qname.c, len - i);
    e881faa2:	86be                	mv	a3,a5
    e881faa4:	8646                	mv	a2,a7
    e881faa6:	00087597          	auipc	a1,0x87
    e881faaa:	d1258593          	addi	a1,a1,-750 # e88a67b8 <end.8789+0x3110>
    e881faae:	b7e9                	j	e881fa78 <SendQueries+0xc8c>
            mDNSPlatformMemCopy(EthAddr, &d->c[1], i - 1);
    e881fab0:	0a810313          	addi	t1,sp,168
    e881fab4:	8636                	mv	a2,a3
    e881fab6:	851a                	mv	a0,t1
    e881fab8:	f8ba                	sd	a4,112(sp)
    e881faba:	fcbe                	sd	a5,120(sp)
    e881fabc:	f4c6                	sd	a7,104(sp)
    e881fabe:	e0b6                	sd	a3,64(sp)
    e881fac0:	7e10f0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            mDNSPlatformMemCopy(IPAddr, &d->c[i + 1], len - i);
    e881fac4:	77e6                	ld	a5,120(sp)
    e881fac6:	78a6                	ld	a7,104(sp)
            EthAddr[i - 1] = 0;
    e881fac8:	6686                	ld	a3,64(sp)
    e881faca:	0a810313          	addi	t1,sp,168
            mDNSPlatformMemCopy(IPAddr, &d->c[i + 1], len - i);
    e881face:	0019059b          	addiw	a1,s2,1
    e881fad2:	0c010913          	addi	s2,sp,192
    e881fad6:	863e                	mv	a2,a5
    e881fad8:	95c6                	add	a1,a1,a7
    e881fada:	854a                	mv	a0,s2
            EthAddr[i - 1] = 0;
    e881fadc:	00d3500b          	srb	zero,t1,a3,0
            mDNSPlatformMemCopy(IPAddr, &d->c[i + 1], len - i);
    e881fae0:	e0be                	sd	a5,64(sp)
    e881fae2:	7bf0f0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            IPAddr[len - i] = 0;
    e881fae6:	6786                	ld	a5,64(sp)
            mDNSPlatformSendWakeupPacket(InterfaceID, EthAddr, IPAddr, InitialWakeOnResolveCount - q->WakeOnResolveCount);
    e881fae8:	7746                	ld	a4,112(sp)
    e881faea:	0a810313          	addi	t1,sp,168
            IPAddr[len - i] = 0;
    e881faee:	00f9500b          	srb	zero,s2,a5,0
            m->mDNSStats.WakeOnResolves++;
    e881faf2:	ee4d2783          	lw	a5,-284(s10)
            mDNSPlatformSendWakeupPacket(InterfaceID, EthAddr, IPAddr, InitialWakeOnResolveCount - q->WakeOnResolveCount);
    e881faf6:	468d                	li	a3,3
    e881faf8:	864a                	mv	a2,s2
            m->mDNSStats.WakeOnResolves++;
    e881fafa:	2785                	addiw	a5,a5,1
    e881fafc:	eefd2223          	sw	a5,-284(s10)
            mDNSPlatformSendWakeupPacket(InterfaceID, EthAddr, IPAddr, InitialWakeOnResolveCount - q->WakeOnResolveCount);
    e881fb00:	142cc783          	lbu	a5,322(s9)
    e881fb04:	859a                	mv	a1,t1
    e881fb06:	853a                	mv	a0,a4
    e881fb08:	9e9d                	subw	a3,a3,a5
    e881fb0a:	40f100ef          	jal	ra,e8830718 <mDNSPlatformSendWakeupPacket>
            return;
    e881fb0e:	bd65                	j	e881f9c6 <SendQueries+0xbda>
        else if (d->c[i] == ':')
    e881fb10:	01c51363          	bne	a0,t3,e881fb16 <SendQueries+0xd2a>
            cnt++;
    e881fb14:	2685                	addiw	a3,a3,1
    for (i = 1; i < len; i++)
    e881fb16:	2905                	addiw	s2,s2,1
    e881fb18:	0605                	addi	a2,a2,1
    e881fb1a:	b72d                	j	e881fa44 <SendQueries+0xc58>
                if (ar->SendRNow != intf->InterfaceID)
    e881fb1c:	9f0db783          	ld	a5,-1552(s11) # 79f0 <memcmp-0xe87f8610>
    e881fb20:	0d8cb583          	ld	a1,216(s9)
    e881fb24:	02f59063          	bne	a1,a5,e881fb44 <SendQueries+0xd58>
                if (!mDNSPlatformValidRecordForInterface(ar, intf->InterfaceID))
    e881fb28:	8566                	mv	a0,s9
    e881fb2a:	3f1100ef          	jal	ra,e883071a <mDNSPlatformValidRecordForInterface>
    e881fb2e:	ed19                	bnez	a0,e881fb4c <SendQueries+0xd60>
                    ar->SendRNow = (ar->resrec.InterfaceID) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881fb30:	020cb783          	ld	a5,32(s9)
    e881fb34:	e781                	bnez	a5,e881fb3c <SendQueries+0xd50>
    e881fb36:	8526                	mv	a0,s1
    e881fb38:	b52f30ef          	jal	ra,e8812e8a <GetNextActiveInterfaceID>
    e881fb3c:	0cacbc23          	sd	a0,216(s9)
                    ar->IncludeInProbe = mDNSfalse;
    e881fb40:	0a0c8d23          	sb	zero,186(s9)
            for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881fb44:	000cbc83          	ld	s9,0(s9)
    e881fb48:	f1aff06f          	j	e881f262 <SendQueries+0x476>
                    mDNSBool ucast = (ar->ProbeCount >= DefaultProbeCountForTypeUnique-1) && m->CanReceiveUnicastOn5353 && intf->SupportsUnicastMDNSResponse;
    e881fb4c:	0b6cc683          	lbu	a3,182(s9)
    e881fb50:	4705                	li	a4,1
                    mDNSu16 ucbit = (mDNSu16)(ucast ? kDNSQClass_UnicastResponse : 0);
    e881fb52:	4781                	li	a5,0
                    mDNSBool ucast = (ar->ProbeCount >= DefaultProbeCountForTypeUnique-1) && m->CanReceiveUnicastOn5353 && intf->SupportsUnicastMDNSResponse;
    e881fb54:	00d77a63          	bgeu	a4,a3,e881fb68 <SendQueries+0xd7c>
    e881fb58:	00c44703          	lbu	a4,12(s0)
    e881fb5c:	c711                	beqz	a4,e881fb68 <SendQueries+0xd7c>
    e881fb5e:	a6ddc783          	lbu	a5,-1427(s11)
                    mDNSu16 ucbit = (mDNSu16)(ucast ? kDNSQClass_UnicastResponse : 0);
    e881fb62:	00f037b3          	snez	a5,a5
    e881fb66:	07be                	slli	a5,a5,0xf
                    const mDNSu8 *const limit = m->omsg.data + (m->omsg.h.numQuestions ? NormalMaxDNSMessageData : AbsoluteMaxDNSMessageData);
    e881fb68:	6706                	ld	a4,64(sp)
    e881fb6a:	5a000d13          	li	s10,1440
    e881fb6e:	1e475703          	lhu	a4,484(a4)
    e881fb72:	e701                	bnez	a4,e881fb7a <SendQueries+0xd8e>
    e881fb74:	6709                	lui	a4,0x2
    e881fb76:	2ec70d13          	addi	s10,a4,748 # 22ec <memcmp-0xe87fdd14>
    e881fb7a:	01aa8733          	add	a4,s5,s10
    e881fb7e:	f43a                	sd	a4,40(sp)
                    mDNSu32 forecast = answerforecast + 12 + ar->resrec.rdestimate;
    e881fb80:	016cd703          	lhu	a4,22(s9)
        mDNSu8 *queryptr = m->omsg.data;
    e881fb84:	8356                	mv	t1,s5
                        for (n = 0; n < m->omsg.h.numQuestions && questionptr; n++)
    e881fb86:	4d01                	li	s10,0
                    mDNSu32 forecast = answerforecast + 12 + ar->resrec.rdestimate;
    e881fb88:	e8ba                	sd	a4,80(sp)
                    mDNSu16 qclass = ar->resrec.rrclass | ucbit;
    e881fb8a:	00ccd703          	lhu	a4,12(s9)
    e881fb8e:	8fd9                	or	a5,a5,a4
                            if (questionptr && (question.qtype == kDNSQType_ANY) && (question.qclass == qclass) &&
    e881fb90:	0007871b          	sext.w	a4,a5
    e881fb94:	f4ba                	sd	a4,104(sp)
                        for (n = 0; n < m->omsg.h.numQuestions && questionptr; n++)
    e881fb96:	6706                	ld	a4,64(sp)
    e881fb98:	1e475703          	lhu	a4,484(a4)
    e881fb9c:	00ed7463          	bgeu	s10,a4,e881fba4 <SendQueries+0xdb8>
    e881fba0:	04031763          	bnez	t1,e881fbee <SendQueries+0xe02>
                    mDNSu32 forecast = answerforecast + 12 + ar->resrec.rdestimate;
    e881fba4:	7702                	ld	a4,32(sp)
                        mDNSu8 *newptr = putQuestion(&m->omsg, queryptr, limit - forecast, ar->resrec.name, kDNSQType_ANY, qclass);
    e881fba6:	75a2                	ld	a1,40(sp)
    e881fba8:	028cb683          	ld	a3,40(s9)
                    mDNSu32 forecast = answerforecast + 12 + ar->resrec.rdestimate;
    e881fbac:	00c7061b          	addiw	a2,a4,12
    e881fbb0:	6746                	ld	a4,80(sp)
                        mDNSu8 *newptr = putQuestion(&m->omsg, queryptr, limit - forecast, ar->resrec.name, kDNSQType_ANY, qclass);
    e881fbb2:	8552                	mv	a0,s4
                    mDNSu32 forecast = answerforecast + 12 + ar->resrec.rdestimate;
    e881fbb4:	9f31                	addw	a4,a4,a2
                        mDNSu8 *newptr = putQuestion(&m->omsg, queryptr, limit - forecast, ar->resrec.name, kDNSQType_ANY, qclass);
    e881fbb6:	7c07360b          	extu	a2,a4,31,0
                    mDNSu32 forecast = answerforecast + 12 + ar->resrec.rdestimate;
    e881fbba:	e8ba                	sd	a4,80(sp)
                        mDNSu8 *newptr = putQuestion(&m->omsg, queryptr, limit - forecast, ar->resrec.name, kDNSQType_ANY, qclass);
    e881fbbc:	40c58633          	sub	a2,a1,a2
    e881fbc0:	0ff00713          	li	a4,255
    e881fbc4:	85ca                	mv	a1,s2
    e881fbc6:	c39f40ef          	jal	ra,e88147fe <putQuestion>
    e881fbca:	8d2a                	mv	s10,a0
                        if (newptr)
    e881fbcc:	dd25                	beqz	a0,e881fb44 <SendQueries+0xd58>
                            ar->SendRNow = (ar->resrec.InterfaceID) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881fbce:	020cb783          	ld	a5,32(s9)
    e881fbd2:	4501                	li	a0,0
    e881fbd4:	e781                	bnez	a5,e881fbdc <SendQueries+0xdf0>
    e881fbd6:	8526                	mv	a0,s1
    e881fbd8:	ab2f30ef          	jal	ra,e8812e8a <GetNextActiveInterfaceID>
                            ar->IncludeInProbe = mDNStrue;
    e881fbdc:	4785                	li	a5,1
    e881fbde:	0afc8d23          	sb	a5,186(s9)
                            answerforecast = forecast;
    e881fbe2:	67c6                	ld	a5,80(sp)
                            ar->SendRNow = (ar->resrec.InterfaceID) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881fbe4:	0cacbc23          	sd	a0,216(s9)
                            ar->IncludeInProbe = mDNStrue;
    e881fbe8:	896a                	mv	s2,s10
                            answerforecast = forecast;
    e881fbea:	f03e                	sd	a5,32(sp)
    e881fbec:	bfa1                	j	e881fb44 <SendQueries+0xd58>
    e881fbee:	f8be                	sd	a5,112(sp)
                            questionptr = getQuestion(&m->omsg, questionptr, limit, mDNSInterface_Any, &question);
    e881fbf0:	00083797          	auipc	a5,0x83
    e881fbf4:	17078793          	addi	a5,a5,368 # e88a2d60 <mDNSInterface_Any>
    e881fbf8:	6394                	ld	a3,0(a5)
    e881fbfa:	7622                	ld	a2,40(sp)
    e881fbfc:	859a                	mv	a1,t1
    e881fbfe:	0198                	addi	a4,sp,192
    e881fc00:	8552                	mv	a0,s4
    e881fc02:	c3bf50ef          	jal	ra,e881583c <getQuestion>
    e881fc06:	832a                	mv	t1,a0
                            if (questionptr && (question.qtype == kDNSQType_ANY) && (question.qclass == qclass) &&
    e881fc08:	77c6                	ld	a5,112(sp)
    e881fc0a:	e511                	bnez	a0,e881fc16 <SendQueries+0xe2a>
                        for (n = 0; n < m->omsg.h.numQuestions && questionptr; n++)
    e881fc0c:	001d089b          	addiw	a7,s10,1
    e881fc10:	3c08bd0b          	extu	s10,a7,15,0
    e881fc14:	b749                	j	e881fb96 <SendQueries+0xdaa>
                            if (questionptr && (question.qtype == kDNSQType_ANY) && (question.qclass == qclass) &&
    e881fc16:	3d415703          	lhu	a4,980(sp)
    e881fc1a:	0ff00693          	li	a3,255
    e881fc1e:	fed717e3          	bne	a4,a3,e881fc0c <SendQueries+0xe20>
    e881fc22:	3d615703          	lhu	a4,982(sp)
    e881fc26:	76a6                	ld	a3,104(sp)
    e881fc28:	fed712e3          	bne	a4,a3,e881fc0c <SendQueries+0xe20>
    e881fc2c:	46ae                	lw	a3,200(sp)
    e881fc2e:	018ca703          	lw	a4,24(s9)
    e881fc32:	fce69de3          	bne	a3,a4,e881fc0c <SendQueries+0xe20>
                                (question.qnamehash == ar->resrec.namehash) && SameDomainName(&question.qname, ar->resrec.name))
    e881fc36:	028cb583          	ld	a1,40(s9)
    e881fc3a:	f8aa                	sd	a0,112(sp)
    e881fc3c:	0dc8                	addi	a0,sp,724
    e881fc3e:	fcbe                	sd	a5,120(sp)
    e881fc40:	c0af30ef          	jal	ra,e881304a <SameDomainName>
    e881fc44:	7346                	ld	t1,112(sp)
    e881fc46:	77e6                	ld	a5,120(sp)
    e881fc48:	d171                	beqz	a0,e881fc0c <SendQueries+0xe20>
                        ar->SendRNow = (ar->resrec.InterfaceID) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881fc4a:	020cb783          	ld	a5,32(s9)
    e881fc4e:	4501                	li	a0,0
    e881fc50:	e781                	bnez	a5,e881fc58 <SendQueries+0xe6c>
    e881fc52:	8526                	mv	a0,s1
    e881fc54:	a36f30ef          	jal	ra,e8812e8a <GetNextActiveInterfaceID>
                        ar->IncludeInProbe = mDNStrue;
    e881fc58:	4785                	li	a5,1
                        ar->SendRNow = (ar->resrec.InterfaceID) ? mDNSNULL : GetNextActiveInterfaceID(intf);
    e881fc5a:	0cacbc23          	sd	a0,216(s9)
                        ar->IncludeInProbe = mDNStrue;
    e881fc5e:	0afc8d23          	sb	a5,186(s9)
    e881fc62:	b5cd                	j	e881fb44 <SendQueries+0xd58>
            mDNSu32 SecsSinceRcvd = ((mDNSu32)(m->timenow - ka->TimeRcvd)) / mDNSPlatformOneSecond;
    e881fc64:	050d2783          	lw	a5,80(s10)
    e881fc68:	24042703          	lw	a4,576(s0)
            mDNSu8 *newptr = PutResourceRecordTTLWithLimit(&m->omsg, queryptr, &m->omsg.h.numAnswers, &ka->resrec, ka->resrec.rroriginalttl - SecsSinceRcvd,
    e881fc6c:	010d2683          	lw	a3,16(s10)
    e881fc70:	866e                	mv	a2,s11
            mDNSu32 SecsSinceRcvd = ((mDNSu32)(m->timenow - ka->TimeRcvd)) / mDNSPlatformOneSecond;
    e881fc72:	9f1d                	subw	a4,a4,a5
    e881fc74:	000ba783          	lw	a5,0(s7)
            mDNSu8 *newptr = PutResourceRecordTTLWithLimit(&m->omsg, queryptr, &m->omsg.h.numAnswers, &ka->resrec, ka->resrec.rroriginalttl - SecsSinceRcvd,
    e881fc78:	85ca                	mv	a1,s2
    e881fc7a:	8552                	mv	a0,s4
            mDNSu32 SecsSinceRcvd = ((mDNSu32)(m->timenow - ka->TimeRcvd)) / mDNSPlatformOneSecond;
    e881fc7c:	02f7573b          	divuw	a4,a4,a5
            mDNSu8 *newptr = PutResourceRecordTTLWithLimit(&m->omsg, queryptr, &m->omsg.h.numAnswers, &ka->resrec, ka->resrec.rroriginalttl - SecsSinceRcvd,
    e881fc80:	87e6                	mv	a5,s9
    e881fc82:	40e6873b          	subw	a4,a3,a4
    e881fc86:	008d0693          	addi	a3,s10,8
    e881fc8a:	9b7f60ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
            if (newptr)
    e881fc8e:	c919                	beqz	a0,e881fca4 <SendQueries+0xeb8>
                KnownAnswerList = ka->NextInKAList;
    e881fc90:	048d3703          	ld	a4,72(s10)
    e881fc94:	892a                	mv	s2,a0
                ka->NextInKAList = mDNSNULL;
    e881fc96:	040d3423          	sd	zero,72(s10)
                KnownAnswerList = ka->NextInKAList;
    e881fc9a:	f13a                	sd	a4,160(sp)
        while (KnownAnswerList)
    e881fc9c:	7d0a                	ld	s10,160(sp)
    e881fc9e:	fc0d13e3          	bnez	s10,e881fc64 <SendQueries+0xe78>
    e881fca2:	a805                	j	e881fcd2 <SendQueries+0xee6>
                if (m->omsg.h.numQuestions > 1)
    e881fca4:	013407b3          	add	a5,s0,s3
    e881fca8:	1e47d683          	lhu	a3,484(a5)
    e881fcac:	4705                	li	a4,1
    e881fcae:	00d77a63          	bgeu	a4,a3,e881fcc2 <SendQueries+0xed6>
                    LogMsg("SendQueries:   Put %d answers; No more space for known answers", m->omsg.h.numAnswers);
    e881fcb2:	1e67d603          	lhu	a2,486(a5)
    e881fcb6:	00087597          	auipc	a1,0x87
    e881fcba:	b9258593          	addi	a1,a1,-1134 # e88a6848 <end.8789+0x31a0>
    e881fcbe:	7ee0f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                m->omsg.h.flags.b[0] |= kDNSFlag0_TC;
    e881fcc2:	01340733          	add	a4,s0,s3
    e881fcc6:	1e274783          	lbu	a5,482(a4)
    e881fcca:	0027e793          	ori	a5,a5,2
    e881fcce:	1ef70123          	sb	a5,482(a4)
        for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881fcd2:	678d                	lui	a5,0x3
    e881fcd4:	97a2                	add	a5,a5,s0
    e881fcd6:	1b87bd83          	ld	s11,440(a5) # 31b8 <memcmp-0xe87fce48>
                mDNSu8 *newptr = PutResourceRecord(&m->omsg, queryptr, &m->omsg.h.numAuthorities, &ar->resrec);
    e881fcda:	1e898793          	addi	a5,s3,488
    e881fcde:	97a2                	add	a5,a5,s0
    e881fce0:	f03e                	sd	a5,32(sp)
    e881fce2:	6d09                	lui	s10,0x2
                else LogMsg("SendQueries:   How did we fail to have space for the Update record %s", ARDisplayString(m,ar));
    e881fce4:	03b40793          	addi	a5,s0,59
                mDNSu8 *newptr = PutResourceRecord(&m->omsg, queryptr, &m->omsg.h.numAuthorities, &ar->resrec);
    e881fce8:	01340cb3          	add	s9,s0,s3
                else LogMsg("SendQueries:   How did we fail to have space for the Update record %s", ARDisplayString(m,ar));
    e881fcec:	f43e                	sd	a5,40(sp)
                mDNSu8 *newptr = PutResourceRecord(&m->omsg, queryptr, &m->omsg.h.numAuthorities, &ar->resrec);
    e881fcee:	2ecd0d13          	addi	s10,s10,748 # 22ec <memcmp-0xe87fdd14>
        for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881fcf2:	2c0d9263          	bnez	s11,e881ffb6 <SendQueries+0x11ca>
                mDNSu8 *newptr = PutResourceRecord(&m->omsg, queryptr, &m->omsg.h.numAuthorities, q->AnonInfo->nsec3RR);
    e881fcf6:	1e898793          	addi	a5,s3,488
    e881fcfa:	97a2                	add	a5,a5,s0
    e881fcfc:	f43e                	sd	a5,40(sp)
    e881fcfe:	013407b3          	add	a5,s0,s3
        for (q = m->Questions; q; q = q->next)
    e881fd02:	2b843d03          	ld	s10,696(s0)
            if (q->AnonInfo && q->AnonInfo->SendNow == intf->InterfaceID)
    e881fd06:	6d89                	lui	s11,0x2
                mDNSu8 *newptr = PutResourceRecord(&m->omsg, queryptr, &m->omsg.h.numAuthorities, q->AnonInfo->nsec3RR);
    e881fd08:	f03e                	sd	a5,32(sp)
                    LogMsg("SendQueries: ERROR!! Cannot add NSEC3 record %s on InterfaceID %p", RRDisplayString(m, q->AnonInfo->nsec3RR), intf->InterfaceID);
    e881fd0a:	03b40793          	addi	a5,s0,59
            if (q->AnonInfo && q->AnonInfo->SendNow == intf->InterfaceID)
    e881fd0e:	01b48cb3          	add	s9,s1,s11
                    LogMsg("SendQueries: ERROR!! Cannot add NSEC3 record %s on InterfaceID %p", RRDisplayString(m, q->AnonInfo->nsec3RR), intf->InterfaceID);
    e881fd12:	e0be                	sd	a5,64(sp)
                mDNSu8 *newptr = PutResourceRecord(&m->omsg, queryptr, &m->omsg.h.numAuthorities, q->AnonInfo->nsec3RR);
    e881fd14:	2ecd8d93          	addi	s11,s11,748 # 22ec <memcmp-0xe87fdd14>
        for (q = m->Questions; q; q = q->next)
    e881fd18:	2e0d1f63          	bnez	s10,e8820016 <SendQueries+0x122a>
        if (queryptr > m->omsg.data)
    e881fd1c:	432af863          	bgeu	s5,s2,e882014c <SendQueries+0x1360>
            if (OwnerRecordSpace || TraceRecordSpace)
    e881fd20:	018b67b3          	or	a5,s6,s8
    e881fd24:	10078563          	beqz	a5,e881fe2e <SendQueries+0x1042>
                mDNS_SetupResourceRecord(&opt, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e881fd28:	00083617          	auipc	a2,0x83
    e881fd2c:	03860613          	addi	a2,a2,56 # e88a2d60 <mDNSInterface_Any>
    e881fd30:	6210                	ld	a2,0(a2)
    e881fd32:	6705                	lui	a4,0x1
    e881fd34:	02000793          	li	a5,32
    e881fd38:	e002                	sd	zero,0(sp)
    e881fd3a:	4881                	li	a7,0
    e881fd3c:	4801                	li	a6,0
    e881fd3e:	19470713          	addi	a4,a4,404 # 1194 <memcmp-0xe87fee6c>
    e881fd42:	02900693          	li	a3,41
    e881fd46:	4581                	li	a1,0
    e881fd48:	0188                	addi	a0,sp,192
    e881fd4a:	880f40ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
                opt.resrec.rrclass    = NormalMaxDNSMessageData;
    e881fd4e:	5a000793          	li	a5,1440
    e881fd52:	0cf11623          	sh	a5,204(sp)
                opt.resrec.rdlength   = sizeof(rdataOPT);
    e881fd56:	001807b7          	lui	a5,0x180
    e881fd5a:	27e1                	addiw	a5,a5,24
    e881fd5c:	cbbe                	sw	a5,212(sp)
                if (OwnerRecordSpace && TraceRecordSpace)
    e881fd5e:	320b0863          	beqz	s6,e882008e <SendQueries+0x12a2>
    e881fd62:	764e                	ld	a2,240(sp)
    e881fd64:	0611                	addi	a2,a2,4
    e881fd66:	300c0f63          	beqz	s8,e8820084 <SendQueries+0x1298>
                    opt.resrec.rdlength   += sizeof(rdataOPT);  // Two options in this OPT record
    e881fd6a:	003007b7          	lui	a5,0x300
    e881fd6e:	0307879b          	addiw	a5,a5,48
                    SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[0]);
    e881fd72:	85a6                	mv	a1,s1
    e881fd74:	8522                	mv	a0,s0
                    opt.resrec.rdlength   += sizeof(rdataOPT);  // Two options in this OPT record
    e881fd76:	cbbe                	sw	a5,212(sp)
                    SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[0]);
    e881fd78:	9b7fb0ef          	jal	ra,e881b72e <SetupOwnerOpt>
                    SetupTracerOpt(m, &opt.resrec.rdata->u.opt[1]);
    e881fd7c:	670d                	lui	a4,0x3
    e881fd7e:	9722                	add	a4,a4,s0
    e881fd80:	1f474703          	lbu	a4,500(a4) # 31f4 <memcmp-0xe87fce0c>
    e881fd84:	77ce                	ld	a5,240(sp)
    Trace->u.tracer.platf    = m->mDNS_plat;
    e881fd86:	02e78023          	sb	a4,32(a5) # 300020 <memcmp-0xe84fffe0>
    Trace->u.tracer.mDNSv    = DNS_VERS;
    e881fd8a:	00860737          	lui	a4,0x860
    e881fd8e:	9457071b          	addiw	a4,a4,-1723
    e881fd92:	d3d8                	sw	a4,36(a5)
    Trace->opt              = kDNSOpt_Trace;
    e881fd94:	00060737          	lui	a4,0x60
    e881fd98:	de97071b          	addiw	a4,a4,-535
    e881fd9c:	cfd8                	sw	a4,28(a5)
                queryptr = PutResourceRecordTTLWithLimit(&m->omsg, queryptr, &m->omsg.h.numAdditionals,
    e881fd9e:	67a5                	lui	a5,0x9
    e881fda0:	474e                	lw	a4,208(sp)
    e881fda2:	1ea98613          	addi	a2,s3,490
    e881fda6:	4d878793          	addi	a5,a5,1240 # 94d8 <memcmp-0xe87f6b28>
    e881fdaa:	85ca                	mv	a1,s2
    e881fdac:	97a2                	add	a5,a5,s0
    e881fdae:	01b4                	addi	a3,sp,200
    e881fdb0:	9622                	add	a2,a2,s0
    e881fdb2:	8552                	mv	a0,s4
    e881fdb4:	88df60ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e881fdb8:	892a                	mv	s2,a0
                if (!queryptr)
    e881fdba:	2e051e63          	bnez	a0,e88200b6 <SendQueries+0x12ca>
                    LogMsg("SendQueries: How did we fail to have space for %s %s OPT record (%d/%d/%d/%d) %s", OwnerRecordSpace ? "OWNER" : "", TraceRecordSpace ? "TRACER" : "",
    e881fdbe:	00086c97          	auipc	s9,0x86
    e881fdc2:	7cac8c93          	addi	s9,s9,1994 # e88a6588 <end.8789+0x2ee0>
    e881fdc6:	000b1663          	bnez	s6,e881fdd2 <SendQueries+0xfe6>
    e881fdca:	000a1c97          	auipc	s9,0xa1
    e881fdce:	4a6c8c93          	addi	s9,s9,1190 # e88c1270 <kHTTPServerClass+0x90>
    e881fdd2:	00086697          	auipc	a3,0x86
    e881fdd6:	7be68693          	addi	a3,a3,1982 # e88a6590 <end.8789+0x2ee8>
    e881fdda:	000c1663          	bnez	s8,e881fde6 <SendQueries+0xffa>
    e881fdde:	000a1697          	auipc	a3,0xa1
    e881fde2:	49268693          	addi	a3,a3,1170 # e88c1270 <kHTTPServerClass+0x90>
    e881fde6:	01340633          	add	a2,s0,s3
    e881fdea:	75ce                	ld	a1,240(sp)
    e881fdec:	1e465703          	lhu	a4,484(a2)
    e881fdf0:	1e665783          	lhu	a5,486(a2)
    e881fdf4:	1e865803          	lhu	a6,488(a2)
    e881fdf8:	1ea65883          	lhu	a7,490(a2)
    e881fdfc:	0591                	addi	a1,a1,4
    e881fdfe:	03b40613          	addi	a2,s0,59
    e881fe02:	01a8                	addi	a0,sp,200
    e881fe04:	f4b6                	sd	a3,104(sp)
    e881fe06:	e8ba                	sd	a4,80(sp)
    e881fe08:	e0be                	sd	a5,64(sp)
    e881fe0a:	f442                	sd	a6,40(sp)
    e881fe0c:	f046                	sd	a7,32(sp)
    e881fe0e:	c07f60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881fe12:	e02a                	sd	a0,0(sp)
    e881fe14:	fd01488b          	ldd	a7,a6,(sp),2,4
    e881fe18:	6786                	ld	a5,64(sp)
    e881fe1a:	6746                	ld	a4,80(sp)
    e881fe1c:	76a6                	ld	a3,104(sp)
    e881fe1e:	8666                	mv	a2,s9
    e881fe20:	00087597          	auipc	a1,0x87
    e881fe24:	af858593          	addi	a1,a1,-1288 # e88a6918 <end.8789+0x3270>
    e881fe28:	4501                	li	a0,0
    e881fe2a:	6820f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if ((m->omsg.h.flags.b[0] & kDNSFlag0_TC) && m->omsg.h.numQuestions > 1)
    e881fe2e:	01340733          	add	a4,s0,s3
    e881fe32:	1e274783          	lbu	a5,482(a4) # 601e2 <memcmp-0xe879fe1e>
    e881fe36:	8b89                	andi	a5,a5,2
    e881fe38:	cf89                	beqz	a5,e881fe52 <SendQueries+0x1066>
    e881fe3a:	1e475603          	lhu	a2,484(a4)
    e881fe3e:	4785                	li	a5,1
    e881fe40:	00c7f963          	bgeu	a5,a2,e881fe52 <SendQueries+0x1066>
                LogMsg("SendQueries: Should not have more than one question (%d) in a truncated packet", m->omsg.h.numQuestions);
    e881fe44:	00087597          	auipc	a1,0x87
    e881fe48:	b9458593          	addi	a1,a1,-1132 # e88a69d8 <end.8789+0x3330>
    e881fe4c:	4501                	li	a0,0
    e881fe4e:	65e0f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (intf->IPv4Available) mDNSSendDNSMessage(m, &m->omsg, queryptr, intf->InterfaceID, mDNSNULL, &AllDNSLinkGroup_v4, MulticastDNSPort, mDNSNULL, mDNSNULL, useBackgroundTrafficClass);
    e881fe52:	0094c783          	lbu	a5,9(s1)
    e881fe56:	cb8d                	beqz	a5,e881fe88 <SendQueries+0x109c>
    e881fe58:	6789                	lui	a5,0x2
    e881fe5a:	97a6                	add	a5,a5,s1
    e881fe5c:	9f07b683          	ld	a3,-1552(a5) # 19f0 <memcmp-0xe87fe610>
    e881fe60:	77c2                	ld	a5,48(sp)
    e881fe62:	e002                	sd	zero,0(sp)
    e881fe64:	4881                	li	a7,0
    e881fe66:	e43e                	sd	a5,8(sp)
    e881fe68:	00082797          	auipc	a5,0x82
    e881fe6c:	6f078793          	addi	a5,a5,1776 # e88a2558 <MulticastDNSPort>
    e881fe70:	0007d803          	lhu	a6,0(a5)
    e881fe74:	4701                	li	a4,0
    e881fe76:	00082797          	auipc	a5,0x82
    e881fe7a:	cba78793          	addi	a5,a5,-838 # e88a1b30 <AllDNSLinkGroup_v4>
    e881fe7e:	864a                	mv	a2,s2
    e881fe80:	85d2                	mv	a1,s4
    e881fe82:	8522                	mv	a0,s0
    e881fe84:	82ff70ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
            if (intf->IPv6Available) mDNSSendDNSMessage(m, &m->omsg, queryptr, intf->InterfaceID, mDNSNULL, &AllDNSLinkGroup_v6, MulticastDNSPort, mDNSNULL, mDNSNULL, useBackgroundTrafficClass);
    e881fe88:	00a4c783          	lbu	a5,10(s1)
    e881fe8c:	cb8d                	beqz	a5,e881febe <SendQueries+0x10d2>
    e881fe8e:	6789                	lui	a5,0x2
    e881fe90:	97a6                	add	a5,a5,s1
    e881fe92:	9f07b683          	ld	a3,-1552(a5) # 19f0 <memcmp-0xe87fe610>
    e881fe96:	77c2                	ld	a5,48(sp)
    e881fe98:	e002                	sd	zero,0(sp)
    e881fe9a:	4881                	li	a7,0
    e881fe9c:	e43e                	sd	a5,8(sp)
    e881fe9e:	00082797          	auipc	a5,0x82
    e881fea2:	6ba78793          	addi	a5,a5,1722 # e88a2558 <MulticastDNSPort>
    e881fea6:	0007d803          	lhu	a6,0(a5)
    e881feaa:	4701                	li	a4,0
    e881feac:	00082797          	auipc	a5,0x82
    e881feb0:	c9c78793          	addi	a5,a5,-868 # e88a1b48 <AllDNSLinkGroup_v6>
    e881feb4:	864a                	mv	a2,s2
    e881feb6:	85d2                	mv	a1,s4
    e881feb8:	8522                	mv	a0,s0
    e881feba:	ff8f70ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
            if (!m->SuppressSending) m->SuppressSending = NonZeroTime(m->timenow + (mDNSPlatformOneSecond+9)/10);
    e881febe:	25042783          	lw	a5,592(s0)
    e881fec2:	e38d                	bnez	a5,e881fee4 <SendQueries+0x10f8>
    e881fec4:	000b5797          	auipc	a5,0xb5
    e881fec8:	bbc78793          	addi	a5,a5,-1092 # e88d4a80 <mDNSPlatformOneSecond>
    e881fecc:	439c                	lw	a5,0(a5)
    e881fece:	4729                	li	a4,10
    e881fed0:	27a5                	addiw	a5,a5,9
    e881fed2:	02e7c7bb          	divw	a5,a5,a4
    e881fed6:	24042703          	lw	a4,576(s0)
    e881feda:	9fb9                	addw	a5,a5,a4
    e881fedc:	e391                	bnez	a5,e881fee0 <SendQueries+0x10f4>
    e881fede:	4785                	li	a5,1
    e881fee0:	24f42823          	sw	a5,592(s0)
            if (++pktcount >= 1000)
    e881fee4:	77e2                	ld	a5,56(sp)
    e881fee6:	2785                	addiw	a5,a5,1
    e881fee8:	fc3e                	sd	a5,56(sp)
    e881feea:	7762                	ld	a4,56(sp)
    e881feec:	3e700793          	li	a5,999
    e881fef0:	ace7d663          	bge	a5,a4,e881f1bc <SendQueries+0x3d0>
            { LogMsg("SendQueries exceeded loop limit %d: giving up", pktcount); break; }
    e881fef4:	863a                	mv	a2,a4
    e881fef6:	00087597          	auipc	a1,0x87
    e881fefa:	b3258593          	addi	a1,a1,-1230 # e88a6a28 <end.8789+0x3380>
    e881fefe:	4501                	li	a0,0
    e881ff00:	5ac0f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881ff04:	678d                	lui	a5,0x3
    e881ff06:	97a2                	add	a5,a5,s0
    e881ff08:	1b87b483          	ld	s1,440(a5) # 31b8 <memcmp-0xe87fce48>
            if (ar->ARType != AuthRecordLocalOnly && ar->ARType != AuthRecordP2P)
    e881ff0c:	4985                	li	s3,1
                LogInfo("SendQueries: No active interface %d to send probe: %d %s",
    e881ff0e:	000b5a17          	auipc	s4,0xb5
    e881ff12:	b66a0a13          	addi	s4,s4,-1178 # e88d4a74 <mDNS_LoggingEnabled>
    e881ff16:	03b40b13          	addi	s6,s0,59
    e881ff1a:	00087a97          	auipc	s5,0x87
    e881ff1e:	b3ea8a93          	addi	s5,s5,-1218 # e88a6a58 <end.8789+0x33b0>
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e881ff22:	22049b63          	bnez	s1,e8820158 <SendQueries+0x136c>
        if (cr->CRActiveQuestion && cr->UnansweredQueries < MaxUnansweredQueries)
    e881ff26:	498d                	li	s3,3
            if (m->timenow + TicksTTL(cr)/50 - cr->NextRequiredQuery >= 0)
    e881ff28:	03200a13          	li	s4,50
    FORALL_CACHERECORDS(slot, cg, cr)
    e881ff2c:	67a6                	ld	a5,72(sp)
    e881ff2e:	0007b903          	ld	s2,0(a5)
    e881ff32:	26091663          	bnez	s2,e882019e <SendQueries+0x13b2>
    e881ff36:	67a6                	ld	a5,72(sp)
    e881ff38:	07a1                	addi	a5,a5,8
    e881ff3a:	e4be                	sd	a5,72(sp)
    e881ff3c:	7786                	ld	a5,96(sp)
    e881ff3e:	6726                	ld	a4,72(sp)
    e881ff40:	fee796e3          	bne	a5,a4,e881ff2c <SendQueries+0x1140>
    for (q = m->Questions; q; q=q->next)
    e881ff44:	2b843483          	ld	s1,696(s0)
            if (q->InterfaceID != mDNSInterface_BLE)
    e881ff48:	00083a17          	auipc	s4,0x83
    e881ff4c:	e20a0a13          	addi	s4,s4,-480 # e88a2d68 <mDNSInterface_BLE>
                LogInfo("SendQueries: No active interface %d to send %s question: %d %##s (%s)",
    e881ff50:	000b5a97          	auipc	s5,0xb5
    e881ff54:	b24a8a93          	addi	s5,s5,-1244 # e88d4a74 <mDNS_LoggingEnabled>
    e881ff58:	00086917          	auipc	s2,0x86
    e881ff5c:	64090913          	addi	s2,s2,1600 # e88a6598 <end.8789+0x2ef0>
    e881ff60:	00087b17          	auipc	s6,0x87
    e881ff64:	b38b0b13          	addi	s6,s6,-1224 # e88a6a98 <end.8789+0x33f0>
    e881ff68:	00086b97          	auipc	s7,0x86
    e881ff6c:	638b8b93          	addi	s7,s7,1592 # e88a65a0 <end.8789+0x2ef8>
    for (q = m->Questions; q; q=q->next)
    e881ff70:	26049c63          	bnez	s1,e88201e8 <SendQueries+0x13fc>
}
    e881ff74:	53813083          	ld	ra,1336(sp)
    e881ff78:	53013403          	ld	s0,1328(sp)
    e881ff7c:	52813483          	ld	s1,1320(sp)
    e881ff80:	52013903          	ld	s2,1312(sp)
    e881ff84:	51813983          	ld	s3,1304(sp)
    e881ff88:	51013a03          	ld	s4,1296(sp)
    e881ff8c:	50813a83          	ld	s5,1288(sp)
    e881ff90:	50013b03          	ld	s6,1280(sp)
    e881ff94:	4f813b83          	ld	s7,1272(sp)
    e881ff98:	4f013c03          	ld	s8,1264(sp)
    e881ff9c:	4e813c83          	ld	s9,1256(sp)
    e881ffa0:	4e013d03          	ld	s10,1248(sp)
    e881ffa4:	4d813d83          	ld	s11,1240(sp)
    e881ffa8:	54010113          	addi	sp,sp,1344
    e881ffac:	8082                	ret
        mDNSu8 *queryptr = m->omsg.data;
    e881ffae:	8956                	mv	s2,s5
        mDNSBool useBackgroundTrafficClass = mDNSfalse;    // set if we should use background traffic class
    e881ffb0:	f802                	sd	zero,48(sp)
    e881ffb2:	ab4ff06f          	j	e881f266 <SendQueries+0x47a>
            if (ar->IncludeInProbe)
    e881ffb6:	0badc783          	lbu	a5,186(s11)
    e881ffba:	cba9                	beqz	a5,e882000c <SendQueries+0x1220>
                mDNSu8 *newptr = PutResourceRecord(&m->omsg, queryptr, &m->omsg.h.numAuthorities, &ar->resrec);
    e881ffbc:	1e6cd683          	lhu	a3,486(s9)
    e881ffc0:	008d8893          	addi	a7,s11,8
    e881ffc4:	010da703          	lw	a4,16(s11)
    e881ffc8:	5a000793          	li	a5,1440
    e881ffcc:	e689                	bnez	a3,e881ffd6 <SendQueries+0x11ea>
    e881ffce:	1e8ce683          	lwu	a3,488(s9)
    e881ffd2:	40dd178b          	mveqz	a5,s10,a3
    e881ffd6:	7602                	ld	a2,32(sp)
    e881ffd8:	86c6                	mv	a3,a7
    e881ffda:	97d6                	add	a5,a5,s5
    e881ffdc:	85ca                	mv	a1,s2
    e881ffde:	8552                	mv	a0,s4
    e881ffe0:	e0c6                	sd	a7,64(sp)
    e881ffe2:	e5ef60ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
                ar->IncludeInProbe = mDNSfalse;
    e881ffe6:	0a0d8d23          	sb	zero,186(s11)
                if (newptr) queryptr = newptr;
    e881ffea:	6886                	ld	a7,64(sp)
    e881ffec:	e11d                	bnez	a0,e8820012 <SendQueries+0x1226>
                else LogMsg("SendQueries:   How did we fail to have space for the Update record %s", ARDisplayString(m,ar));
    e881ffee:	030db583          	ld	a1,48(s11)
    e881fff2:	7622                	ld	a2,40(sp)
    e881fff4:	8546                	mv	a0,a7
    e881fff6:	0591                	addi	a1,a1,4
    e881fff8:	a1df60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e881fffc:	862a                	mv	a2,a0
    e881fffe:	00087597          	auipc	a1,0x87
    e8820002:	88a58593          	addi	a1,a1,-1910 # e88a6888 <end.8789+0x31e0>
    e8820006:	4501                	li	a0,0
    e8820008:	4a40f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882000c:	000dbd83          	ld	s11,0(s11)
    e8820010:	b1cd                	j	e881fcf2 <SendQueries+0xf06>
    e8820012:	892a                	mv	s2,a0
    e8820014:	bfe5                	j	e882000c <SendQueries+0x1220>
            if (q->AnonInfo && q->AnonInfo->SendNow == intf->InterfaceID)
    e8820016:	060d3783          	ld	a5,96(s10)
    e882001a:	c3b5                	beqz	a5,e882007e <SendQueries+0x1292>
    e882001c:	6f94                	ld	a3,24(a5)
    e882001e:	9f0cb703          	ld	a4,-1552(s9)
    e8820022:	04e69e63          	bne	a3,a4,e882007e <SendQueries+0x1292>
                mDNSu8 *newptr = PutResourceRecord(&m->omsg, queryptr, &m->omsg.h.numAuthorities, q->AnonInfo->nsec3RR);
    e8820026:	6b94                	ld	a3,16(a5)
    e8820028:	7782                	ld	a5,32(sp)
    e882002a:	4698                	lw	a4,8(a3)
    e882002c:	1e67d603          	lhu	a2,486(a5)
    e8820030:	5a000793          	li	a5,1440
    e8820034:	e611                	bnez	a2,e8820040 <SendQueries+0x1254>
    e8820036:	7602                	ld	a2,32(sp)
    e8820038:	1e866603          	lwu	a2,488(a2)
    e882003c:	40cd978b          	mveqz	a5,s11,a2
    e8820040:	7622                	ld	a2,40(sp)
    e8820042:	97d6                	add	a5,a5,s5
    e8820044:	85ca                	mv	a1,s2
    e8820046:	8552                	mv	a0,s4
    e8820048:	df8f60ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
                if (newptr)
    e882004c:	e505                	bnez	a0,e8820074 <SendQueries+0x1288>
                    LogMsg("SendQueries: ERROR!! Cannot add NSEC3 record %s on InterfaceID %p", RRDisplayString(m, q->AnonInfo->nsec3RR), intf->InterfaceID);
    e882004e:	060d3783          	ld	a5,96(s10)
    e8820052:	6606                	ld	a2,64(sp)
    e8820054:	6b88                	ld	a0,16(a5)
    e8820056:	750c                	ld	a1,40(a0)
    e8820058:	0591                	addi	a1,a1,4
    e882005a:	9bbf60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882005e:	862a                	mv	a2,a0
    e8820060:	9f0cb683          	ld	a3,-1552(s9)
    e8820064:	4501                	li	a0,0
    e8820066:	00087597          	auipc	a1,0x87
    e882006a:	86a58593          	addi	a1,a1,-1942 # e88a68d0 <end.8789+0x3228>
    e882006e:	43e0f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8820072:	854a                	mv	a0,s2
                q->AnonInfo->SendNow = mDNSNULL;
    e8820074:	060d3783          	ld	a5,96(s10)
    e8820078:	892a                	mv	s2,a0
    e882007a:	0007bc23          	sd	zero,24(a5)
        for (q = m->Questions; q; q = q->next)
    e882007e:	000d3d03          	ld	s10,0(s10)
    e8820082:	b959                	j	e881fd18 <SendQueries+0xf2c>
                    SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[0]);
    e8820084:	85a6                	mv	a1,s1
    e8820086:	8522                	mv	a0,s0
    e8820088:	ea6fb0ef          	jal	ra,e881b72e <SetupOwnerOpt>
    e882008c:	bb09                	j	e881fd9e <SendQueries+0xfb2>
                else if (TraceRecordSpace)
    e882008e:	d00c08e3          	beqz	s8,e881fd9e <SendQueries+0xfb2>
                    SetupTracerOpt(m, &opt.resrec.rdata->u.opt[0]);
    e8820092:	670d                	lui	a4,0x3
    e8820094:	9722                	add	a4,a4,s0
    e8820096:	1f474703          	lbu	a4,500(a4) # 31f4 <memcmp-0xe87fce0c>
    e882009a:	77ce                	ld	a5,240(sp)
    Trace->u.tracer.platf    = m->mDNS_plat;
    e882009c:	00e78423          	sb	a4,8(a5)
    Trace->u.tracer.mDNSv    = DNS_VERS;
    e88200a0:	00860737          	lui	a4,0x860
    e88200a4:	9457071b          	addiw	a4,a4,-1723
    e88200a8:	c7d8                	sw	a4,12(a5)
    Trace->opt              = kDNSOpt_Trace;
    e88200aa:	00060737          	lui	a4,0x60
    e88200ae:	de97071b          	addiw	a4,a4,-535
    e88200b2:	c3d8                	sw	a4,4(a5)
    e88200b4:	b1ed                	j	e881fd9e <SendQueries+0xfb2>
                if (queryptr > m->omsg.data + NormalMaxDNSMessageData)
    e88200b6:	67e6                	ld	a5,88(sp)
    e88200b8:	d6a7fbe3          	bgeu	a5,a0,e881fe2e <SendQueries+0x1042>
                    if (m->omsg.h.numQuestions != 1 || m->omsg.h.numAnswers != 0 || m->omsg.h.numAuthorities != 1 || m->omsg.h.numAdditionals != 1)
    e88200bc:	013406b3          	add	a3,s0,s3
    e88200c0:	1e46e703          	lwu	a4,484(a3)
    e88200c4:	4785                	li	a5,1
    e88200c6:	1782                	slli	a5,a5,0x20
    e88200c8:	1702                	slli	a4,a4,0x20
    e88200ca:	00f71863          	bne	a4,a5,e88200da <SendQueries+0x12ee>
    e88200ce:	1e86e703          	lwu	a4,488(a3)
    e88200d2:	67c1                	lui	a5,0x10
    e88200d4:	0785                	addi	a5,a5,1
    e88200d6:	d4f70ce3          	beq	a4,a5,e881fe2e <SendQueries+0x1042>
                        LogMsg("SendQueries: Why did we generate oversized packet with %s %s OPT record %p %p %p (%d/%d/%d/%d) %s", OwnerRecordSpace ? "OWNER" : "",
    e88200da:	00086c97          	auipc	s9,0x86
    e88200de:	4aec8c93          	addi	s9,s9,1198 # e88a6588 <end.8789+0x2ee0>
    e88200e2:	000b1663          	bnez	s6,e88200ee <SendQueries+0x1302>
    e88200e6:	000a1c97          	auipc	s9,0xa1
    e88200ea:	18ac8c93          	addi	s9,s9,394 # e88c1270 <kHTTPServerClass+0x90>
    e88200ee:	00086697          	auipc	a3,0x86
    e88200f2:	4a268693          	addi	a3,a3,1186 # e88a6590 <end.8789+0x2ee8>
    e88200f6:	000c1663          	bnez	s8,e8820102 <SendQueries+0x1316>
    e88200fa:	000a1697          	auipc	a3,0xa1
    e88200fe:	17668693          	addi	a3,a3,374 # e88c1270 <kHTTPServerClass+0x90>
    e8820102:	013407b3          	add	a5,s0,s3
    e8820106:	75ce                	ld	a1,240(sp)
    e8820108:	1e47d883          	lhu	a7,484(a5) # 101e4 <memcmp-0xe87efe1c>
    e882010c:	03b40613          	addi	a2,s0,59
    e8820110:	0591                	addi	a1,a1,4
    e8820112:	01a8                	addi	a0,sp,200
    e8820114:	1e67db03          	lhu	s6,486(a5)
    e8820118:	1e87dc03          	lhu	s8,488(a5)
    e882011c:	1ea7dd03          	lhu	s10,490(a5)
    e8820120:	f436                	sd	a3,40(sp)
    e8820122:	f046                	sd	a7,32(sp)
    e8820124:	8f1f60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8820128:	ec2a                	sd	a0,24(sp)
    e882012a:	7882                	ld	a7,32(sp)
    e882012c:	67e6                	ld	a5,88(sp)
    e882012e:	76a2                	ld	a3,40(sp)
    e8820130:	e86a                	sd	s10,16(sp)
    e8820132:	e462                	sd	s8,8(sp)
    e8820134:	e05a                	sd	s6,0(sp)
    e8820136:	884a                	mv	a6,s2
    e8820138:	8756                	mv	a4,s5
    e882013a:	8666                	mv	a2,s9
    e882013c:	00087597          	auipc	a1,0x87
    e8820140:	83458593          	addi	a1,a1,-1996 # e88a6970 <end.8789+0x32c8>
    e8820144:	4501                	li	a0,0
    e8820146:	3660f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882014a:	b1d5                	j	e881fe2e <SendQueries+0x1042>
            const NetworkInterfaceInfo *next = GetFirstActiveInterface(intf->next);
    e882014c:	6088                	ld	a0,0(s1)
    e882014e:	d2ff20ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e8820152:	84aa                	mv	s1,a0
            intf = next;
    e8820154:	868ff06f          	j	e881f1bc <SendQueries+0x3d0>
        if (ar->SendRNow)
    e8820158:	0d84b903          	ld	s2,216(s1)
    e882015c:	02090f63          	beqz	s2,e882019a <SendQueries+0x13ae>
            if (ar->ARType != AuthRecordLocalOnly && ar->ARType != AuthRecordP2P)
    e8820160:	0ac4c783          	lbu	a5,172(s1)
    e8820164:	37f1                	addiw	a5,a5,-4
    e8820166:	0ff7f793          	andi	a5,a5,255
    e882016a:	02f9f663          	bgeu	s3,a5,e8820196 <SendQueries+0x13aa>
                LogInfo("SendQueries: No active interface %d to send probe: %d %s",
    e882016e:	000a2783          	lw	a5,0(s4)
    e8820172:	c395                	beqz	a5,e8820196 <SendQueries+0x13aa>
    e8820174:	788c                	ld	a1,48(s1)
    e8820176:	5094                	lw	a3,32(s1)
    e8820178:	865a                	mv	a2,s6
    e882017a:	0591                	addi	a1,a1,4
    e882017c:	00848513          	addi	a0,s1,8
    e8820180:	f036                	sd	a3,32(sp)
    e8820182:	893f60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8820186:	872a                	mv	a4,a0
    e8820188:	7682                	ld	a3,32(sp)
    e882018a:	0009061b          	sext.w	a2,s2
    e882018e:	85d6                	mv	a1,s5
    e8820190:	450d                	li	a0,3
    e8820192:	31a0f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            ar->SendRNow = mDNSNULL;
    e8820196:	0c04bc23          	sd	zero,216(s1)
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882019a:	6084                	ld	s1,0(s1)
    e882019c:	b359                	j	e881ff22 <SendQueries+0x1136>
    FORALL_CACHERECORDS(slot, cg, cr)
    e882019e:	01093483          	ld	s1,16(s2)
    e88201a2:	e481                	bnez	s1,e88201aa <SendQueries+0x13be>
    e88201a4:	00093903          	ld	s2,0(s2)
    e88201a8:	b369                	j	e881ff32 <SendQueries+0x1146>
        if (cr->CRActiveQuestion && cr->UnansweredQueries < MaxUnansweredQueries)
    e88201aa:	70b0                	ld	a2,96(s1)
    e88201ac:	ce05                	beqz	a2,e88201e4 <SendQueries+0x13f8>
    e88201ae:	06c4c703          	lbu	a4,108(s1)
    e88201b2:	02e9e963          	bltu	s3,a4,e88201e4 <SendQueries+0x13f8>
            if (m->timenow + TicksTTL(cr)/50 - cr->NextRequiredQuery >= 0)
    e88201b6:	000ba683          	lw	a3,0(s7)
    e88201ba:	489c                	lw	a5,16(s1)
    e88201bc:	4cac                	lw	a1,88(s1)
    e88201be:	02d787bb          	mulw	a5,a5,a3
    e88201c2:	24042683          	lw	a3,576(s0)
    e88201c6:	9e8d                	subw	a3,a3,a1
    e88201c8:	0347c7bb          	divw	a5,a5,s4
    e88201cc:	9fb5                	addw	a5,a5,a3
    e88201ce:	0007cb63          	bltz	a5,e88201e4 <SendQueries+0x13f8>
                cr->UnansweredQueries++;
    e88201d2:	2705                	addiw	a4,a4,1
    e88201d4:	06e48623          	sb	a4,108(s1)
                SetNextCacheCheckTimeForRecord(m, cr);
    e88201d8:	85a6                	mv	a1,s1
                cr->CRActiveQuestion->SendQNow = mDNSNULL;
    e88201da:	12063423          	sd	zero,296(a2)
                SetNextCacheCheckTimeForRecord(m, cr);
    e88201de:	8522                	mv	a0,s0
    e88201e0:	97bfe0ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
    FORALL_CACHERECORDS(slot, cg, cr)
    e88201e4:	6084                	ld	s1,0(s1)
    e88201e6:	bf75                	j	e88201a2 <SendQueries+0x13b6>
        if (q->SendQNow)
    e88201e8:	1284b603          	ld	a2,296(s1)
    e88201ec:	c621                	beqz	a2,e8820234 <SendQueries+0x1448>
            for (x = m->NewQuestions; x; x=x->next) if (x == q) break;  // Check if this question is a NewQuestion
    e88201ee:	2c043783          	ld	a5,704(s0)
    e88201f2:	e7a9                	bnez	a5,e882023c <SendQueries+0x1450>
            if (q->InterfaceID != mDNSInterface_BLE)
    e88201f4:	1f04b983          	ld	s3,496(s1)
    e88201f8:	000a3703          	ld	a4,0(s4)
    e88201fc:	02e98a63          	beq	s3,a4,e8820230 <SendQueries+0x1444>
                LogInfo("SendQueries: No active interface %d to send %s question: %d %##s (%s)",
    e8820200:	000aa703          	lw	a4,0(s5)
    e8820204:	c715                	beqz	a4,e8820230 <SendQueries+0x1444>
    e8820206:	86de                	mv	a3,s7
    e8820208:	3144d503          	lhu	a0,788(s1)
    e882020c:	42f9168b          	mvnez	a3,s2,a5
    e8820210:	2601                	sext.w	a2,a2
    e8820212:	f432                	sd	a2,40(sp)
    e8820214:	f036                	sd	a3,32(sp)
    e8820216:	a4bf50ef          	jal	ra,e8815c60 <DNSTypeName>
    e882021a:	882a                	mv	a6,a0
    e882021c:	fcc1468b          	ldd	a3,a2,(sp),2,4
    e8820220:	21448793          	addi	a5,s1,532
    e8820224:	0009871b          	sext.w	a4,s3
    e8820228:	85da                	mv	a1,s6
    e882022a:	450d                	li	a0,3
    e882022c:	2800f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            q->SendQNow = mDNSNULL;
    e8820230:	1204b423          	sd	zero,296(s1)
        q->CachedAnswerNeedsUpdate = mDNSfalse;
    e8820234:	120488a3          	sb	zero,305(s1)
    for (q = m->Questions; q; q=q->next)
    e8820238:	6084                	ld	s1,0(s1)
    e882023a:	bb1d                	j	e881ff70 <SendQueries+0x1184>
            for (x = m->NewQuestions; x; x=x->next) if (x == q) break;  // Check if this question is a NewQuestion
    e882023c:	faf48ce3          	beq	s1,a5,e88201f4 <SendQueries+0x1408>
    e8820240:	639c                	ld	a5,0(a5)
    e8820242:	bf45                	j	e88201f2 <SendQueries+0x1406>
                            m->mDNSStats.DupQuerySuppressions++;
    e8820244:	e9cd2783          	lw	a5,-356(s10)
    e8820248:	8dca                	mv	s11,s2
    e882024a:	2785                	addiw	a5,a5,1
    e882024c:	e8fd2e23          	sw	a5,-356(s10)
                        if (!Suppress && q->AnonInfo)
    e8820250:	f0aff06f          	j	e881f95a <SendQueries+0xb6e>
            if (v4 && v6) return(mDNStrue);
    e8820254:	fb65                	bnez	a4,e8820244 <SendQueries+0x1458>
            else if (ds[i].Type == mDNSAddrType_IPv6) v6 = mDNStrue;
    e8820256:	4605                	li	a2,1
    e8820258:	d76ff06f          	j	e881f7ce <SendQueries+0x9e2>

00000000e882025c <FindSPSInCache>:
{
    e882025c:	1101                	addi	sp,sp,-32
    e882025e:	f891540b          	sdd	s0,s1,(sp),0,4
    sps[0] =                      FindSPSInCache1(m, q, mDNSNULL, mDNSNULL);
    e8820262:	4681                	li	a3,0
{
    e8820264:	8432                	mv	s0,a2
    sps[0] =                      FindSPSInCache1(m, q, mDNSNULL, mDNSNULL);
    e8820266:	4601                	li	a2,0
{
    e8820268:	e84a                	sd	s2,16(sp)
    e882026a:	ec06                	sd	ra,24(sp)
    e882026c:	84aa                	mv	s1,a0
    e882026e:	892e                	mv	s2,a1
    sps[0] =                      FindSPSInCache1(m, q, mDNSNULL, mDNSNULL);
    e8820270:	c18fe0ef          	jal	ra,e881e688 <FindSPSInCache1>
    e8820274:	e008                	sd	a0,0(s0)
    sps[1] = !sps[0] ? mDNSNULL : FindSPSInCache1(m, q, sps[0],   mDNSNULL);
    e8820276:	e90d                	bnez	a0,e88202a8 <FindSPSInCache+0x4c>
    e8820278:	00043423          	sd	zero,8(s0)
    CheckAndSwapSPS(&sps[0], &sps[1]);
    e882027c:	00840493          	addi	s1,s0,8
    sps[2] = !sps[1] ? mDNSNULL : FindSPSInCache1(m, q, sps[0],   sps[1]);
    e8820280:	e808                	sd	a0,16(s0)
    CheckAndSwapSPS(&sps[0], &sps[1]);
    e8820282:	85a6                	mv	a1,s1
    e8820284:	8522                	mv	a0,s0
    e8820286:	d0cfb0ef          	jal	ra,e881b792 <CheckAndSwapSPS>
    CheckAndSwapSPS(&sps[0], &sps[2]);
    e882028a:	01040913          	addi	s2,s0,16
    e882028e:	85ca                	mv	a1,s2
    e8820290:	8522                	mv	a0,s0
    e8820292:	d00fb0ef          	jal	ra,e881b792 <CheckAndSwapSPS>
    CheckAndSwapSPS(&sps[1], &sps[2]);
    e8820296:	8526                	mv	a0,s1
}
    e8820298:	f891440b          	ldd	s0,s1,(sp),0,4
    e882029c:	60e2                	ld	ra,24(sp)
    CheckAndSwapSPS(&sps[1], &sps[2]);
    e882029e:	85ca                	mv	a1,s2
}
    e88202a0:	6942                	ld	s2,16(sp)
    e88202a2:	6105                	addi	sp,sp,32
    CheckAndSwapSPS(&sps[1], &sps[2]);
    e88202a4:	ceefb06f          	j	e881b792 <CheckAndSwapSPS>
    sps[1] = !sps[0] ? mDNSNULL : FindSPSInCache1(m, q, sps[0],   mDNSNULL);
    e88202a8:	862a                	mv	a2,a0
    e88202aa:	4681                	li	a3,0
    e88202ac:	85ca                	mv	a1,s2
    e88202ae:	8526                	mv	a0,s1
    e88202b0:	bd8fe0ef          	jal	ra,e881e688 <FindSPSInCache1>
    e88202b4:	e408                	sd	a0,8(s0)
    sps[2] = !sps[1] ? mDNSNULL : FindSPSInCache1(m, q, sps[0],   sps[1]);
    e88202b6:	d179                	beqz	a0,e882027c <FindSPSInCache+0x20>
    e88202b8:	6010                	ld	a2,0(s0)
    e88202ba:	86aa                	mv	a3,a0
    e88202bc:	85ca                	mv	a1,s2
    e88202be:	8526                	mv	a0,s1
    e88202c0:	bc8fe0ef          	jal	ra,e881e688 <FindSPSInCache1>
    e88202c4:	bf65                	j	e882027c <FindSPSInCache+0x20>

00000000e88202c6 <ReleaseCacheRecord>:
{
    e88202c6:	7179                	addi	sp,sp,-48
    e88202c8:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88202cc:	f406                	sd	ra,40(sp)
    e88202ce:	f04a                	sd	s2,32(sp)
    e88202d0:	84aa                	mv	s1,a0
    if (r->resrec.rdata && r->resrec.rdata != (RData*)&r->smallrdatastorage) mDNSPlatformMemFree(r->resrec.rdata);
    e88202d2:	7988                	ld	a0,48(a1)
{
    e88202d4:	842e                	mv	s0,a1
    if (r->resrec.rdata && r->resrec.rdata != (RData*)&r->smallrdatastorage) mDNSPlatformMemFree(r->resrec.rdata);
    e88202d6:	c519                	beqz	a0,e88202e4 <ReleaseCacheRecord+0x1e>
    e88202d8:	09c58793          	addi	a5,a1,156
    e88202dc:	00f50463          	beq	a0,a5,e88202e4 <ReleaseCacheRecord+0x1e>
    e88202e0:	7a30f0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    r->resrec.rdata = mDNSNULL;
    e88202e4:	02043823          	sd	zero,48(s0)
    cg = CacheGroupForRecord(m, &r->resrec);
    e88202e8:	00840593          	addi	a1,s0,8
    e88202ec:	8526                	mv	a0,s1
    e88202ee:	d42fe0ef          	jal	ra,e881e830 <CacheGroupForRecord>
    e88202f2:	892a                	mv	s2,a0
    if (!cg)
    e88202f4:	e515                	bnez	a0,e8820320 <ReleaseCacheRecord+0x5a>
        LogInfo("ReleaseCacheRecord: ERROR!! cg NULL for %##s (%s)", r->resrec.name->c, DNSTypeName(r->resrec.rrtype));
    e88202f6:	000b4797          	auipc	a5,0xb4
    e88202fa:	77e78793          	addi	a5,a5,1918 # e88d4a74 <mDNS_LoggingEnabled>
    e88202fe:	439c                	lw	a5,0(a5)
    e8820300:	c385                	beqz	a5,e8820320 <ReleaseCacheRecord+0x5a>
    e8820302:	7410                	ld	a2,40(s0)
    e8820304:	00a45503          	lhu	a0,10(s0)
    e8820308:	e432                	sd	a2,8(sp)
    e882030a:	957f50ef          	jal	ra,e8815c60 <DNSTypeName>
    e882030e:	86aa                	mv	a3,a0
    e8820310:	6622                	ld	a2,8(sp)
    e8820312:	00086597          	auipc	a1,0x86
    e8820316:	f9658593          	addi	a1,a1,-106 # e88a62a8 <end.8789+0x2c00>
    e882031a:	450d                	li	a0,3
    e882031c:	1900f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (r->resrec.name && cg && r->resrec.name != cg->name)
    e8820320:	7408                	ld	a0,40(s0)
    e8820322:	c909                	beqz	a0,e8820334 <ReleaseCacheRecord+0x6e>
    e8820324:	00090863          	beqz	s2,e8820334 <ReleaseCacheRecord+0x6e>
    e8820328:	02093783          	ld	a5,32(s2)
    e882032c:	00f50463          	beq	a0,a5,e8820334 <ReleaseCacheRecord+0x6e>
        mDNSPlatformMemFree((void *)r->resrec.name);
    e8820330:	7530f0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    if (r->resrec.AnonInfo)
    e8820334:	6028                	ld	a0,64(s0)
    r->resrec.name = mDNSNULL;
    e8820336:	02043423          	sd	zero,40(s0)
    if (r->resrec.AnonInfo)
    e882033a:	c119                	beqz	a0,e8820340 <ReleaseCacheRecord+0x7a>
        FreeAnonInfo((void *)r->resrec.AnonInfo);
    e882033c:	c4ff90ef          	jal	ra,e8819f8a <FreeAnonInfo>
    if (!r->resrec.InterfaceID)
    e8820340:	701c                	ld	a5,32(s0)
    r->resrec.AnonInfo = mDNSNULL;
    e8820342:	04043023          	sd	zero,64(s0)
    if (!r->resrec.InterfaceID)
    e8820346:	ef9d                	bnez	a5,e8820384 <ReleaseCacheRecord+0xbe>
        m->rrcache_totalused_unicast -= r->resrec.rdlength;
    e8820348:	01445703          	lhu	a4,20(s0)
    e882034c:	2f84a783          	lw	a5,760(s1)
    e8820350:	9f99                	subw	a5,a5,a4
    e8820352:	2ef4ac23          	sw	a5,760(s1)
        if (DNSSECRecordType(r->resrec.rrtype))
    e8820356:	00a45783          	lhu	a5,10(s0)
    e882035a:	471d                	li	a4,7
    e882035c:	fd57879b          	addiw	a5,a5,-43
    e8820360:	3c07b78b          	extu	a5,a5,15,0
    e8820364:	02f76063          	bltu	a4,a5,e8820384 <ReleaseCacheRecord+0xbe>
    e8820368:	0b900713          	li	a4,185
    e882036c:	00f757b3          	srl	a5,a4,a5
    e8820370:	0007b78b          	extu	a5,a5,0,0
    e8820374:	cb81                	beqz	a5,e8820384 <ReleaseCacheRecord+0xbe>
            BumpDNSSECStats(m, kStatsActionDecrement, kStatsTypeMemoryUsage, r->resrec.rdlength);
    e8820376:	01445683          	lhu	a3,20(s0)
    e882037a:	4601                	li	a2,0
    e882037c:	4585                	li	a1,1
    e882037e:	8526                	mv	a0,s1
    e8820380:	7700f0ef          	jal	ra,e882faf0 <BumpDNSSECStats>
    ReleaseAdditionalCacheRecords(m, &r->nsec);
    e8820384:	07840593          	addi	a1,s0,120
    e8820388:	8526                	mv	a0,s1
    e882038a:	e12fd0ef          	jal	ra,e881d99c <ReleaseAdditionalCacheRecords>
    ReleaseAdditionalCacheRecords(m, &r->soa);
    e882038e:	08040593          	addi	a1,s0,128
    e8820392:	8526                	mv	a0,s1
    e8820394:	e08fd0ef          	jal	ra,e881d99c <ReleaseAdditionalCacheRecords>
}
    e8820398:	7902                	ld	s2,32(sp)
    e->next = m->rrcache_free;
    e882039a:	3084b783          	ld	a5,776(s1)
}
    e882039e:	70a2                	ld	ra,40(sp)
    e->next = m->rrcache_free;
    e88203a0:	e01c                	sd	a5,0(s0)
    m->rrcache_totalused--;
    e88203a2:	2f44a783          	lw	a5,756(s1)
    m->rrcache_free = e;
    e88203a6:	3084b423          	sd	s0,776(s1)
    m->rrcache_totalused--;
    e88203aa:	37fd                	addiw	a5,a5,-1
    e88203ac:	2ef4aa23          	sw	a5,756(s1)
}
    e88203b0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88203b4:	6145                	addi	sp,sp,48
    e88203b6:	8082                	ret

00000000e88203b8 <GetCacheEntity>:
{
    e88203b8:	7139                	addi	sp,sp,-64
    e88203ba:	f891540b          	sdd	s0,s1,(sp),0,4
    e88203be:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88203c2:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e88203c6:	fc06                	sd	ra,56(sp)
    e88203c8:	f85a                	sd	s6,48(sp)
    if (m->lock_rrcache) { LogMsg("GetFreeCacheRR ERROR! Cache already locked!"); return(mDNSNULL); }
    e88203ca:	03854783          	lbu	a5,56(a0)
    e88203ce:	c785                	beqz	a5,e88203f6 <GetCacheEntity+0x3e>
    e88203d0:	00085597          	auipc	a1,0x85
    e88203d4:	75058593          	addi	a1,a1,1872 # e88a5b20 <end.8789+0x2478>
    e88203d8:	4501                	li	a0,0
    e88203da:	0d20f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88203de:	4481                	li	s1,0
}
    e88203e0:	8526                	mv	a0,s1
    e88203e2:	70e2                	ld	ra,56(sp)
    e88203e4:	f891440b          	ldd	s0,s1,(sp),0,4
    e88203e8:	7b42                	ld	s6,48(sp)
    e88203ea:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88203ee:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88203f2:	6121                	addi	sp,sp,64
    e88203f4:	8082                	ret
    m->lock_rrcache = 1;
    e88203f6:	4785                	li	a5,1
    e88203f8:	02f50c23          	sb	a5,56(a0)
    if (!m->rrcache_free && m->MainCallback)
    e88203fc:	30853783          	ld	a5,776(a0)
    e8820400:	842a                	mv	s0,a0
    e8820402:	e3cd                	bnez	a5,e88204a4 <GetCacheEntity+0xec>
    e8820404:	711c                	ld	a5,32(a0)
    e8820406:	8aae                	mv	s5,a1
    e8820408:	e7a1                	bnez	a5,e8820450 <GetCacheEntity+0x98>
        mDNSu32 oldtotalused = m->rrcache_totalused;
    e882040a:	6905                	lui	s2,0x1
    e882040c:	2f442b03          	lw	s6,756(s0)
        for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
    e8820410:	2a890913          	addi	s2,s2,680 # 12a8 <memcmp-0xe87fed58>
    e8820414:	31040a13          	addi	s4,s0,784
    e8820418:	9922                	add	s2,s2,s0
            CacheGroup **cp = &m->rrcache_hash[slot];
    e882041a:	89d2                	mv	s3,s4
            while (*cp)
    e882041c:	0009b483          	ld	s1,0(s3)
    e8820420:	12049b63          	bnez	s1,e8820556 <GetCacheEntity+0x19e>
        for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
    e8820424:	0a21                	addi	s4,s4,8
    e8820426:	ff491ae3          	bne	s2,s4,e882041a <GetCacheEntity+0x62>
        LogInfo("GetCacheEntity recycled %d records to reduce cache from %d to %d",
    e882042a:	000b4797          	auipc	a5,0xb4
    e882042e:	64a78793          	addi	a5,a5,1610 # e88d4a74 <mDNS_LoggingEnabled>
    e8820432:	439c                	lw	a5,0(a5)
    e8820434:	cba5                	beqz	a5,e88204a4 <GetCacheEntity+0xec>
    e8820436:	2f442703          	lw	a4,756(s0)
    e882043a:	86da                	mv	a3,s6
    e882043c:	00085597          	auipc	a1,0x85
    e8820440:	30c58593          	addi	a1,a1,780 # e88a5748 <end.8789+0x20a0>
    e8820444:	40eb063b          	subw	a2,s6,a4
    e8820448:	450d                	li	a0,3
    e882044a:	0620f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882044e:	a899                	j	e88204a4 <GetCacheEntity+0xec>
    e8820450:	2f452603          	lw	a2,756(a0)
        if (m->rrcache_totalused != m->rrcache_size)
    e8820454:	2f052683          	lw	a3,752(a0)
    e8820458:	00c68963          	beq	a3,a2,e882046a <GetCacheEntity+0xb2>
            LogMsg("GetFreeCacheRR: count mismatch: m->rrcache_totalused %lu != m->rrcache_size %lu",
    e882045c:	00085597          	auipc	a1,0x85
    e8820460:	23c58593          	addi	a1,a1,572 # e88a5698 <end.8789+0x1ff0>
    e8820464:	4501                	li	a0,0
    e8820466:	0460f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (m->rrcache_size > 5000 && m->rrcache_size / 32 > m->rrcache_active)
    e882046a:	2f042603          	lw	a2,752(s0)
    e882046e:	6785                	lui	a5,0x1
    e8820470:	38878793          	addi	a5,a5,904 # 1388 <memcmp-0xe87fec78>
    e8820474:	08c7f663          	bgeu	a5,a2,e8820500 <GetCacheEntity+0x148>
    e8820478:	2fc42683          	lw	a3,764(s0)
    e882047c:	7c56378b          	extu	a5,a2,31,5
    e8820480:	08f6f063          	bgeu	a3,a5,e8820500 <GetCacheEntity+0x148>
            LogInfo("Possible denial-of-service attack in progress: m->rrcache_size %lu; m->rrcache_active %lu",
    e8820484:	000b4797          	auipc	a5,0xb4
    e8820488:	5f078793          	addi	a5,a5,1520 # e88d4a74 <mDNS_LoggingEnabled>
    e882048c:	439c                	lw	a5,0(a5)
    e882048e:	cb81                	beqz	a5,e882049e <GetCacheEntity+0xe6>
    e8820490:	00085597          	auipc	a1,0x85
    e8820494:	25858593          	addi	a1,a1,600 # e88a56e8 <end.8789+0x2040>
    e8820498:	450d                	li	a0,3
    e882049a:	0120f0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!m->rrcache_free)
    e882049e:	30843783          	ld	a5,776(s0)
    e88204a2:	d7a5                	beqz	a5,e882040a <GetCacheEntity+0x52>
    if (m->rrcache_free)    // If there are records in the free list, take one
    e88204a4:	30843483          	ld	s1,776(s0)
    e88204a8:	c8a9                	beqz	s1,e88204fa <GetCacheEntity+0x142>
        m->rrcache_free = e->next;
    e88204aa:	609c                	ld	a5,0(s1)
    e88204ac:	30f43423          	sd	a5,776(s0)
        if (++m->rrcache_totalused >= m->rrcache_report)
    e88204b0:	2f442783          	lw	a5,756(s0)
    e88204b4:	0017861b          	addiw	a2,a5,1
    e88204b8:	30042783          	lw	a5,768(s0)
    e88204bc:	2ec42a23          	sw	a2,756(s0)
    e88204c0:	02f66863          	bltu	a2,a5,e88204f0 <GetCacheEntity+0x138>
            LogInfo("RR Cache now using %ld objects", m->rrcache_totalused);
    e88204c4:	000b4797          	auipc	a5,0xb4
    e88204c8:	5b078793          	addi	a5,a5,1456 # e88d4a74 <mDNS_LoggingEnabled>
    e88204cc:	439c                	lw	a5,0(a5)
    e88204ce:	cb81                	beqz	a5,e88204de <GetCacheEntity+0x126>
    e88204d0:	00085597          	auipc	a1,0x85
    e88204d4:	2c058593          	addi	a1,a1,704 # e88a5790 <end.8789+0x20e8>
    e88204d8:	450d                	li	a0,3
    e88204da:	7d30e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if      (m->rrcache_report <  100) m->rrcache_report += 10;
    e88204de:	30042783          	lw	a5,768(s0)
    e88204e2:	06300713          	li	a4,99
    e88204e6:	0af76763          	bltu	a4,a5,e8820594 <GetCacheEntity+0x1dc>
    e88204ea:	27a9                	addiw	a5,a5,10
            else m->rrcache_report += 1000;
    e88204ec:	30f42023          	sw	a5,768(s0)
        mDNSPlatformMemZero(e, sizeof(*e));
    e88204f0:	0e800593          	li	a1,232
    e88204f4:	8526                	mv	a0,s1
    e88204f6:	6000f0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    m->lock_rrcache = 0;
    e88204fa:	02040c23          	sb	zero,56(s0)
    return(e);
    e88204fe:	b5cd                	j	e88203e0 <GetCacheEntity+0x28>
            mDNS_DropLockBeforeCallback();      // Allow client to legally make mDNS API calls from the callback
    e8820500:	585c                	lw	a5,52(s0)
    e8820502:	5814                	lw	a3,48(s0)
    e8820504:	0017871b          	addiw	a4,a5,1
    e8820508:	d858                	sw	a4,52(s0)
    e882050a:	00d70d63          	beq	a4,a3,e8820524 <GetCacheEntity+0x16c>
    e882050e:	00087617          	auipc	a2,0x87
    e8820512:	77a60613          	addi	a2,a2,1914 # e88a7c88 <__func__.10669>
    e8820516:	00084597          	auipc	a1,0x84
    e882051a:	85258593          	addi	a1,a1,-1966 # e88a3d68 <end.8789+0x6c0>
    e882051e:	4501                	li	a0,0
    e8820520:	78d0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            m->MainCallback(m, mStatus_GrowCache);
    e8820524:	701c                	ld	a5,32(s0)
    e8820526:	75c1                	lui	a1,0xffff0
    e8820528:	f0258593          	addi	a1,a1,-254 # fffffffffffeff02 <__DRAM0_INF_BASE+0xfffffffeffffff02>
    e882052c:	8522                	mv	a0,s0
    e882052e:	9782                	jalr	a5
            mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8820530:	5814                	lw	a3,48(s0)
    e8820532:	5858                	lw	a4,52(s0)
    e8820534:	00e68d63          	beq	a3,a4,e882054e <GetCacheEntity+0x196>
    e8820538:	00087617          	auipc	a2,0x87
    e882053c:	75060613          	addi	a2,a2,1872 # e88a7c88 <__func__.10669>
    e8820540:	00084597          	auipc	a1,0x84
    e8820544:	86858593          	addi	a1,a1,-1944 # e88a3da8 <end.8789+0x700>
    e8820548:	4501                	li	a0,0
    e882054a:	7630e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882054e:	585c                	lw	a5,52(s0)
    e8820550:	37fd                	addiw	a5,a5,-1
    e8820552:	d85c                	sw	a5,52(s0)
    e8820554:	b7a9                	j	e882049e <GetCacheEntity+0xe6>
                CacheRecord **rp = &(*cp)->members;
    e8820556:	04c1                	addi	s1,s1,16
                while (*rp)
    e8820558:	608c                	ld	a1,0(s1)
    e882055a:	ed81                	bnez	a1,e8820572 <GetCacheEntity+0x1ba>
                if ((*cp)->rrcache_tail != rp)
    e882055c:	0009b783          	ld	a5,0(s3)
                (*cp)->rrcache_tail = rp;
    e8820560:	ef84                	sd	s1,24(a5)
                if ((*cp)->members || (*cp)==PreserveCG) cp=&(*cp)->next;
    e8820562:	0009b783          	ld	a5,0(s3)
    e8820566:	6b98                	ld	a4,16(a5)
    e8820568:	e319                	bnez	a4,e882056e <GetCacheEntity+0x1b6>
    e882056a:	03579063          	bne	a5,s5,e882058a <GetCacheEntity+0x1d2>
    e882056e:	89be                	mv	s3,a5
    e8820570:	b575                	j	e882041c <GetCacheEntity+0x64>
                    if ((*rp)->CRActiveQuestion || (*rp)->NextInCFList)
    e8820572:	71bc                	ld	a5,96(a1)
    e8820574:	e399                	bnez	a5,e882057a <GetCacheEntity+0x1c2>
    e8820576:	79bc                	ld	a5,112(a1)
    e8820578:	c399                	beqz	a5,e882057e <GetCacheEntity+0x1c6>
                        rp=&(*rp)->next;
    e882057a:	84ae                	mv	s1,a1
    e882057c:	bff1                	j	e8820558 <GetCacheEntity+0x1a0>
    e882057e:	619c                	ld	a5,0(a1)
                        ReleaseCacheRecord(m, rr);
    e8820580:	8522                	mv	a0,s0
                        *rp = (*rp)->next;          // Cut record from list
    e8820582:	e09c                	sd	a5,0(s1)
                        ReleaseCacheRecord(m, rr);
    e8820584:	d43ff0ef          	jal	ra,e88202c6 <ReleaseCacheRecord>
    e8820588:	bfc1                	j	e8820558 <GetCacheEntity+0x1a0>
                else ReleaseCacheGroup(m, cp);
    e882058a:	85ce                	mv	a1,s3
    e882058c:	8522                	mv	a0,s0
    e882058e:	cb2fd0ef          	jal	ra,e881da40 <ReleaseCacheGroup>
    e8820592:	b569                	j	e882041c <GetCacheEntity+0x64>
            else if (m->rrcache_report < 1000) m->rrcache_report += 100;
    e8820594:	3e700713          	li	a4,999
    e8820598:	00f76563          	bltu	a4,a5,e88205a2 <GetCacheEntity+0x1ea>
    e882059c:	0647879b          	addiw	a5,a5,100
    e88205a0:	b7b1                	j	e88204ec <GetCacheEntity+0x134>
            else m->rrcache_report += 1000;
    e88205a2:	3e87879b          	addiw	a5,a5,1000
    e88205a6:	b799                	j	e88204ec <GetCacheEntity+0x134>

00000000e88205a8 <FreeNSECRecords>:
{
    e88205a8:	1101                	addi	sp,sp,-32
    e88205aa:	e422                	sd	s0,8(sp)
    e88205ac:	ec06                	sd	ra,24(sp)
    e88205ae:	e826                	sd	s1,16(sp)
    e88205b0:	842a                	mv	s0,a0
    for (rp = NSECRecords; rp; rp = next)
    e88205b2:	e591                	bnez	a1,e88205be <FreeNSECRecords+0x16>
}
    e88205b4:	60e2                	ld	ra,24(sp)
    e88205b6:	6422                	ld	s0,8(sp)
    e88205b8:	64c2                	ld	s1,16(sp)
    e88205ba:	6105                	addi	sp,sp,32
    e88205bc:	8082                	ret
        next = rp->next;
    e88205be:	6184                	ld	s1,0(a1)
        ReleaseCacheRecord(m, rp);
    e88205c0:	8522                	mv	a0,s0
    e88205c2:	d05ff0ef          	jal	ra,e88202c6 <ReleaseCacheRecord>
    for (rp = NSECRecords; rp; rp = next)
    e88205c6:	85a6                	mv	a1,s1
    e88205c8:	b7ed                	j	e88205b2 <FreeNSECRecords+0xa>

00000000e88205ca <mDNS_PurgeCacheResourceRecord>:
{
    e88205ca:	1101                	addi	sp,sp,-32
    e88205cc:	e422                	sd	s0,8(sp)
    e88205ce:	e826                	sd	s1,16(sp)
    e88205d0:	ec06                	sd	ra,24(sp)
    mDNS_CheckLock(m);
    e88205d2:	5958                	lw	a4,52(a0)
    e88205d4:	5914                	lw	a3,48(a0)
{
    e88205d6:	842a                	mv	s0,a0
    mDNS_CheckLock(m);
    e88205d8:	0017079b          	addiw	a5,a4,1
{
    e88205dc:	84ae                	mv	s1,a1
    mDNS_CheckLock(m);
    e88205de:	00d78d63          	beq	a5,a3,e88205f8 <mDNS_PurgeCacheResourceRecord+0x2e>
    e88205e2:	00087617          	auipc	a2,0x87
    e88205e6:	6b660613          	addi	a2,a2,1718 # e88a7c98 <__func__.10702>
    e88205ea:	00087597          	auipc	a1,0x87
    e88205ee:	ba658593          	addi	a1,a1,-1114 # e88a7190 <end.8789+0x3ae8>
    e88205f2:	4501                	li	a0,0
    e88205f4:	6b90e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    rr->TimeRcvd          = m->timenow - mDNSPlatformOneSecond * 60;
    e88205f8:	000b4797          	auipc	a5,0xb4
    e88205fc:	48878793          	addi	a5,a5,1160 # e88d4a80 <mDNSPlatformOneSecond>
    e8820600:	4398                	lw	a4,0(a5)
    e8820602:	24042783          	lw	a5,576(s0)
    e8820606:	fc400693          	li	a3,-60
    SetNextCacheCheckTimeForRecord(m, rr);
    e882060a:	8522                	mv	a0,s0
    rr->TimeRcvd          = m->timenow - mDNSPlatformOneSecond * 60;
    e882060c:	24e6978b          	mulaw	a5,a3,a4
}
    e8820610:	6422                	ld	s0,8(sp)
    rr->resrec.rroriginalttl     = 0;
    e8820612:	0004a823          	sw	zero,16(s1)
}
    e8820616:	60e2                	ld	ra,24(sp)
    SetNextCacheCheckTimeForRecord(m, rr);
    e8820618:	85a6                	mv	a1,s1
    rr->TimeRcvd          = m->timenow - mDNSPlatformOneSecond * 60;
    e882061a:	c8bc                	sw	a5,80(s1)
    rr->UnansweredQueries = MaxUnansweredQueries;
    e882061c:	4791                	li	a5,4
    e882061e:	06f48623          	sb	a5,108(s1)
}
    e8820622:	64c2                	ld	s1,16(sp)
    e8820624:	6105                	addi	sp,sp,32
    SetNextCacheCheckTimeForRecord(m, rr);
    e8820626:	d34fe06f          	j	e881eb5a <SetNextCacheCheckTimeForRecord>

00000000e882062a <mDNS_PurgeForQuestion>:
{
    e882062a:	715d                	addi	sp,sp,-80
    e882062c:	e0a2                	sd	s0,64(sp)
    e882062e:	f84a                	sd	s2,48(sp)
    e8820630:	f44e                	sd	s3,40(sp)
    e8820632:	842e                	mv	s0,a1
    e8820634:	e486                	sd	ra,72(sp)
    e8820636:	fc26                	sd	s1,56(sp)
    e8820638:	f052                	sd	s4,32(sp)
    e882063a:	ec56                	sd	s5,24(sp)
    e882063c:	e85a                	sd	s6,16(sp)
    e882063e:	e45e                	sd	s7,8(sp)
    CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e8820640:	21458613          	addi	a2,a1,532
    e8820644:	458c                	lw	a1,8(a1)
{
    e8820646:	89aa                	mv	s3,a0
    CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e8820648:	800fe0ef          	jal	ra,e881e648 <CacheGroupForName>
    if (DNSSECQuestion(q))
    e882064c:	14a44903          	lbu	s2,330(s0)
    e8820650:	32444783          	lbu	a5,804(s0)
    e8820654:	eb89                	bnez	a5,e8820666 <mDNS_PurgeForQuestion+0x3c>
    e8820656:	00091863          	bnez	s2,e8820666 <mDNS_PurgeForQuestion+0x3c>
    e882065a:	32544783          	lbu	a5,805(s0)
    e882065e:	cbc1                	beqz	a5,e88206ee <mDNS_PurgeForQuestion+0xc4>
    e8820660:	32644783          	lbu	a5,806(s0)
    e8820664:	c7c9                	beqz	a5,e88206ee <mDNS_PurgeForQuestion+0xc4>
        q->ValidatingResponse = mDNStrue;
    e8820666:	4785                	li	a5,1
    e8820668:	14f40523          	sb	a5,330(s0)
    for (rp = cg ? cg->members : mDNSNULL; rp; rp = rp->next)
    e882066c:	cd09                	beqz	a0,e8820686 <mDNS_PurgeForQuestion+0x5c>
    e882066e:	6904                	ld	s1,16(a0)
            LogInfo("mDNS_PurgeForQuestion: Flushing %s", CRDisplayString(m, rp));
    e8820670:	000b4a97          	auipc	s5,0xb4
    e8820674:	404a8a93          	addi	s5,s5,1028 # e88d4a74 <mDNS_LoggingEnabled>
    e8820678:	03b98b13          	addi	s6,s3,59
    e882067c:	0008ab97          	auipc	s7,0x8a
    e8820680:	b14b8b93          	addi	s7,s7,-1260 # e88aa190 <mDNS_DomainTypeNames+0x7e0>
    for (rp = cg ? cg->members : mDNSNULL; rp; rp = rp->next)
    e8820684:	e895                	bnez	s1,e88206b8 <mDNS_PurgeForQuestion+0x8e>
    if (DNSSECQuestion(q))
    e8820686:	32444783          	lbu	a5,804(s0)
    e882068a:	eb91                	bnez	a5,e882069e <mDNS_PurgeForQuestion+0x74>
    e882068c:	14a44783          	lbu	a5,330(s0)
    e8820690:	e799                	bnez	a5,e882069e <mDNS_PurgeForQuestion+0x74>
    e8820692:	32544783          	lbu	a5,805(s0)
    e8820696:	c791                	beqz	a5,e88206a2 <mDNS_PurgeForQuestion+0x78>
    e8820698:	32644783          	lbu	a5,806(s0)
    e882069c:	c399                	beqz	a5,e88206a2 <mDNS_PurgeForQuestion+0x78>
        q->ValidatingResponse = validatingResponse;
    e882069e:	15240523          	sb	s2,330(s0)
}
    e88206a2:	60a6                	ld	ra,72(sp)
    e88206a4:	6406                	ld	s0,64(sp)
    e88206a6:	74e2                	ld	s1,56(sp)
    e88206a8:	7942                	ld	s2,48(sp)
    e88206aa:	79a2                	ld	s3,40(sp)
    e88206ac:	7a02                	ld	s4,32(sp)
    e88206ae:	6ae2                	ld	s5,24(sp)
    e88206b0:	6b42                	ld	s6,16(sp)
    e88206b2:	6ba2                	ld	s7,8(sp)
    e88206b4:	6161                	addi	sp,sp,80
    e88206b6:	8082                	ret
        if (SameNameRecordAnswersQuestion(&rp->resrec, q))
    e88206b8:	00848a13          	addi	s4,s1,8
    e88206bc:	85a2                	mv	a1,s0
    e88206be:	8552                	mv	a0,s4
    e88206c0:	fcaf50ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e88206c4:	c11d                	beqz	a0,e88206ea <mDNS_PurgeForQuestion+0xc0>
            LogInfo("mDNS_PurgeForQuestion: Flushing %s", CRDisplayString(m, rp));
    e88206c6:	000aa783          	lw	a5,0(s5)
    e88206ca:	cf81                	beqz	a5,e88206e2 <mDNS_PurgeForQuestion+0xb8>
    e88206cc:	788c                	ld	a1,48(s1)
    e88206ce:	865a                	mv	a2,s6
    e88206d0:	8552                	mv	a0,s4
    e88206d2:	0591                	addi	a1,a1,4
    e88206d4:	b40f60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88206d8:	862a                	mv	a2,a0
    e88206da:	85de                	mv	a1,s7
    e88206dc:	450d                	li	a0,3
    e88206de:	5cf0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            mDNS_PurgeCacheResourceRecord(m, rp);
    e88206e2:	85a6                	mv	a1,s1
    e88206e4:	854e                	mv	a0,s3
    e88206e6:	ee5ff0ef          	jal	ra,e88205ca <mDNS_PurgeCacheResourceRecord>
    for (rp = cg ? cg->members : mDNSNULL; rp; rp = rp->next)
    e88206ea:	6084                	ld	s1,0(s1)
    e88206ec:	bf61                	j	e8820684 <mDNS_PurgeForQuestion+0x5a>
    e88206ee:	f141                	bnez	a0,e882066e <mDNS_PurgeForQuestion+0x44>
    e88206f0:	b74d                	j	e8820692 <mDNS_PurgeForQuestion+0x68>

00000000e88206f2 <PurgeOrReconfirmCacheRecord.isra.40>:
mDNSlocal void PurgeOrReconfirmCacheRecord(mDNS *const m, CacheRecord *cr, const DNSServer * const ptr, mDNSBool lameduck)
    e88206f2:	1101                	addi	sp,sp,-32
    e88206f4:	e422                	sd	s0,8(sp)
    e88206f6:	e826                	sd	s1,16(sp)
    e88206f8:	ec06                	sd	ra,24(sp)
                     cr->resrec.rrtype     == kDNSType_SRV ||
    e88206fa:	0085c683          	lbu	a3,8(a1)
    e88206fe:	0f000793          	li	a5,240
mDNSlocal void PurgeOrReconfirmCacheRecord(mDNS *const m, CacheRecord *cr, const DNSServer * const ptr, mDNSBool lameduck)
    e8820702:	84aa                	mv	s1,a0
    e8820704:	842e                	mv	s0,a1
    e8820706:	000b4717          	auipc	a4,0xb4
    e882070a:	36e70713          	addi	a4,a4,878 # e88d4a74 <mDNS_LoggingEnabled>
                     cr->resrec.rrtype     == kDNSType_SRV ||
    e882070e:	06f68463          	beq	a3,a5,e8820776 <PurgeOrReconfirmCacheRecord.isra.40+0x84>
                     cr->resrec.rrtype     == kDNSType_A ||
    e8820712:	00a5d683          	lhu	a3,10(a1)
    mDNSBool purge = cr->resrec.RecordType == kDNSRecordTypePacketNegative ||
    e8820716:	02100793          	li	a5,33
    e882071a:	00d7ea63          	bltu	a5,a3,e882072e <PurgeOrReconfirmCacheRecord.isra.40+0x3c>
    e882071e:	07f2                	slli	a5,a5,0x1c
    e8820720:	02278793          	addi	a5,a5,34
    e8820724:	00d7d7b3          	srl	a5,a5,a3
    e8820728:	0007b78b          	extu	a5,a5,0,0
    e882072c:	e7a9                	bnez	a5,e8820776 <PurgeOrReconfirmCacheRecord.isra.40+0x84>
        LogInfo("PurgeorReconfirmCacheRecord: Reconfirming Resourcerecord %s, RecordType %x", CRDisplayString(m, cr), cr->resrec.RecordType);
    e882072e:	431c                	lw	a5,0(a4)
    e8820730:	c39d                	beqz	a5,e8820756 <PurgeOrReconfirmCacheRecord.isra.40+0x64>
    e8820732:	780c                	ld	a1,48(s0)
    e8820734:	03b48613          	addi	a2,s1,59
    e8820738:	00840513          	addi	a0,s0,8
    e882073c:	0591                	addi	a1,a1,4
    e882073e:	ad6f60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8820742:	862a                	mv	a2,a0
    e8820744:	00844683          	lbu	a3,8(s0)
    e8820748:	00086597          	auipc	a1,0x86
    e882074c:	a4058593          	addi	a1,a1,-1472 # e88a6188 <end.8789+0x2ae0>
    e8820750:	450d                	li	a0,3
    e8820752:	55b0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNS_Reconfirm_internal(m, cr, kDefaultReconfirmTimeForNoAnswer);
    e8820756:	000b4797          	auipc	a5,0xb4
    e882075a:	32a78793          	addi	a5,a5,810 # e88d4a80 <mDNSPlatformOneSecond>
    e882075e:	439c                	lw	a5,0(a5)
    e8820760:	4615                	li	a2,5
    e8820762:	85a2                	mv	a1,s0
    e8820764:	02f6063b          	mulw	a2,a2,a5
}
    e8820768:	6422                	ld	s0,8(sp)
    e882076a:	60e2                	ld	ra,24(sp)
        mDNS_Reconfirm_internal(m, cr, kDefaultReconfirmTimeForNoAnswer);
    e882076c:	8526                	mv	a0,s1
}
    e882076e:	64c2                	ld	s1,16(sp)
    e8820770:	6105                	addi	sp,sp,32
        mDNS_Reconfirm_internal(m, cr, kDefaultReconfirmTimeForNoAnswer);
    e8820772:	c96fe06f          	j	e881ec08 <mDNS_Reconfirm_internal>
        LogInfo("PurgeorReconfirmCacheRecord: Purging Resourcerecord %s, RecordType %x", CRDisplayString(m, cr), cr->resrec.RecordType);
    e8820776:	431c                	lw	a5,0(a4)
    e8820778:	c39d                	beqz	a5,e882079e <PurgeOrReconfirmCacheRecord.isra.40+0xac>
    e882077a:	780c                	ld	a1,48(s0)
    e882077c:	03b48613          	addi	a2,s1,59
    e8820780:	00840513          	addi	a0,s0,8
    e8820784:	0591                	addi	a1,a1,4
    e8820786:	a8ef60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882078a:	862a                	mv	a2,a0
    e882078c:	00844683          	lbu	a3,8(s0)
    e8820790:	00086597          	auipc	a1,0x86
    e8820794:	9b058593          	addi	a1,a1,-1616 # e88a6140 <end.8789+0x2a98>
    e8820798:	450d                	li	a0,3
    e882079a:	5130e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNS_PurgeCacheResourceRecord(m, cr);
    e882079e:	85a2                	mv	a1,s0
}
    e88207a0:	6422                	ld	s0,8(sp)
    e88207a2:	60e2                	ld	ra,24(sp)
        mDNS_PurgeCacheResourceRecord(m, cr);
    e88207a4:	8526                	mv	a0,s1
}
    e88207a6:	64c2                	ld	s1,16(sp)
    e88207a8:	6105                	addi	sp,sp,32
        mDNS_PurgeCacheResourceRecord(m, cr);
    e88207aa:	e21ff06f          	j	e88205ca <mDNS_PurgeCacheResourceRecord>

00000000e88207ae <mDNS_TimeNow>:
{
    e88207ae:	1101                	addi	sp,sp,-32
    e88207b0:	e422                	sd	s0,8(sp)
    e88207b2:	ec06                	sd	ra,24(sp)
    e88207b4:	842a                	mv	s0,a0
    e88207b6:	e826                	sd	s1,16(sp)
    mDNSPlatformLock(m);
    e88207b8:	2e00f0ef          	jal	ra,e882fa98 <mDNSPlatformLock>
    if (m->mDNS_busy)
    e88207bc:	581c                	lw	a5,48(s0)
    e88207be:	c39d                	beqz	a5,e88207e4 <mDNS_TimeNow+0x36>
        LogMsg("mDNS_TimeNow called while holding mDNS lock. This is incorrect. Code protected by lock should just use m->timenow.");
    e88207c0:	0008b597          	auipc	a1,0x8b
    e88207c4:	b7058593          	addi	a1,a1,-1168 # e88ab330 <mDNS_DomainTypeNames+0x1980>
    e88207c8:	4501                	li	a0,0
    e88207ca:	4e30e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!m->timenow) LogMsg("mDNS_TimeNow: m->mDNS_busy is %ld but m->timenow not set", m->mDNS_busy);
    e88207ce:	24042783          	lw	a5,576(s0)
    e88207d2:	eb89                	bnez	a5,e88207e4 <mDNS_TimeNow+0x36>
    e88207d4:	5810                	lw	a2,48(s0)
    e88207d6:	0008b597          	auipc	a1,0x8b
    e88207da:	bd258593          	addi	a1,a1,-1070 # e88ab3a8 <mDNS_DomainTypeNames+0x19f8>
    e88207de:	4501                	li	a0,0
    e88207e0:	4cd0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (m->timenow) time = m->timenow;
    e88207e4:	24042483          	lw	s1,576(s0)
    e88207e8:	e491                	bnez	s1,e88207f4 <mDNS_TimeNow+0x46>
    else time = mDNS_TimeNow_NoLock(m);
    e88207ea:	2ad0f0ef          	jal	ra,e8830296 <mDNSPlatformRawTime>
    e88207ee:	23c42483          	lw	s1,572(s0)
    e88207f2:	9ca9                	addw	s1,s1,a0
    mDNSPlatformUnlock(m);
    e88207f4:	8522                	mv	a0,s0
    e88207f6:	2a40f0ef          	jal	ra,e882fa9a <mDNSPlatformUnlock>
}
    e88207fa:	6422                	ld	s0,8(sp)
    e88207fc:	60e2                	ld	ra,24(sp)
    e88207fe:	8526                	mv	a0,s1
    e8820800:	64c2                	ld	s1,16(sp)
    e8820802:	6105                	addi	sp,sp,32
    e8820804:	8082                	ret

00000000e8820806 <mDNSCoreRestartRegistration>:
{
    e8820806:	1101                	addi	sp,sp,-32
    e8820808:	f891540b          	sdd	s0,s1,(sp),0,4
    if (!AuthRecord_uDNS(rr))
    e882080c:	00082797          	auipc	a5,0x82
    e8820810:	55478793          	addi	a5,a5,1364 # e88a2d60 <mDNSInterface_Any>
{
    e8820814:	e84a                	sd	s2,16(sp)
    e8820816:	ec06                	sd	ra,24(sp)
    if (!AuthRecord_uDNS(rr))
    e8820818:	639c                	ld	a5,0(a5)
    e882081a:	7198                	ld	a4,32(a1)
{
    e882081c:	892a                	mv	s2,a0
    e882081e:	842e                	mv	s0,a1
    e8820820:	84b2                	mv	s1,a2
    if (!AuthRecord_uDNS(rr))
    e8820822:	00f70f63          	beq	a4,a5,e8820840 <mDNSCoreRestartRegistration+0x3a>
        if (rr->resrec.RecordType == kDNSRecordTypeVerified && !rr->DependentOn) rr->resrec.RecordType = kDNSRecordTypeUnique;
    e8820826:	00844703          	lbu	a4,8(s0)
    e882082a:	47c1                	li	a5,16
    e882082c:	02f71763          	bne	a4,a5,e882085a <mDNSCoreRestartRegistration+0x54>
    e8820830:	6c38                	ld	a4,88(s0)
        rr->ProbeCount     = DefaultProbeCountForRecordType(rr->resrec.RecordType);
    e8820832:	4781                	li	a5,0
        if (rr->resrec.RecordType == kDNSRecordTypeVerified && !rr->DependentOn) rr->resrec.RecordType = kDNSRecordTypeUnique;
    e8820834:	e71d                	bnez	a4,e8820862 <mDNSCoreRestartRegistration+0x5c>
    e8820836:	4789                	li	a5,2
    e8820838:	00f40423          	sb	a5,8(s0)
        rr->ProbeCount     = DefaultProbeCountForRecordType(rr->resrec.RecordType);
    e882083c:	478d                	li	a5,3
    e882083e:	a015                	j	e8820862 <mDNSCoreRestartRegistration+0x5c>
    if (!AuthRecord_uDNS(rr))
    e8820840:	07a5c783          	lbu	a5,122(a1)
    e8820844:	f3ed                	bnez	a5,e8820826 <mDNSCoreRestartRegistration+0x20>
    e8820846:	7588                	ld	a0,40(a1)
    e8820848:	85bf20ef          	jal	ra,e88130a2 <IsLocalDomain>
    e882084c:	fd69                	bnez	a0,e8820826 <mDNSCoreRestartRegistration+0x20>
}
    e882084e:	60e2                	ld	ra,24(sp)
    e8820850:	f891440b          	ldd	s0,s1,(sp),0,4
    e8820854:	6942                	ld	s2,16(sp)
    e8820856:	6105                	addi	sp,sp,32
    e8820858:	8082                	ret
        rr->ProbeCount     = DefaultProbeCountForRecordType(rr->resrec.RecordType);
    e882085a:	4689                	li	a3,2
    e882085c:	4781                	li	a5,0
    e882085e:	fcd70fe3          	beq	a4,a3,e882083c <mDNSCoreRestartRegistration+0x36>
        if (mDNS_KeepaliveRecord(&rr->resrec))
    e8820862:	00a45703          	lhu	a4,10(s0)
        rr->ProbeCount     = DefaultProbeCountForRecordType(rr->resrec.RecordType);
    e8820866:	0af40b23          	sb	a5,182(s0)
        if (mDNS_KeepaliveRecord(&rr->resrec))
    e882086a:	47a9                	li	a5,10
    e882086c:	02f71e63          	bne	a4,a5,e88208a8 <mDNSCoreRestartRegistration+0xa2>
    e8820870:	7408                	ld	a0,40(s0)
    e8820872:	4781                	li	a5,0
    e8820874:	00054703          	lbu	a4,0(a0)
    e8820878:	c319                	beqz	a4,e882087e <mDNSCoreRestartRegistration+0x78>
    e882087a:	00170793          	addi	a5,a4,1
    e882087e:	00089597          	auipc	a1,0x89
    e8820882:	7d258593          	addi	a1,a1,2002 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    e8820886:	953e                	add	a0,a0,a5
    e8820888:	f5ef20ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e882088c:	cd11                	beqz	a0,e88208a8 <mDNSCoreRestartRegistration+0xa2>
            rr->AnnounceCount = 0; // Do not announce keepalive records
    e882088e:	0a040ba3          	sb	zero,183(s0)
        rr->SendNSECNow    = mDNSNULL;
    e8820892:	0c043023          	sd	zero,192(s0)
        InitializeLastAPTime(m, rr);
    e8820896:	85a2                	mv	a1,s0
}
    e8820898:	f891440b          	ldd	s0,s1,(sp),0,4
    e882089c:	60e2                	ld	ra,24(sp)
        InitializeLastAPTime(m, rr);
    e882089e:	854a                	mv	a0,s2
}
    e88208a0:	6942                	ld	s2,16(sp)
    e88208a2:	6105                	addi	sp,sp,32
        InitializeLastAPTime(m, rr);
    e88208a4:	ea8fb06f          	j	e881bf4c <InitializeLastAPTime>
            if (announceCount < 0)
    e88208a8:	0004d363          	bgez	s1,e88208ae <mDNSCoreRestartRegistration+0xa8>
                announceCount = InitialAnnounceCount;
    e88208ac:	4491                	li	s1,4
            if (rr->AnnounceCount < (mDNSu8)announceCount)
    e88208ae:	0b744783          	lbu	a5,183(s0)
    e88208b2:	0ff4f493          	andi	s1,s1,255
    e88208b6:	fc97fee3          	bgeu	a5,s1,e8820892 <mDNSCoreRestartRegistration+0x8c>
                rr->AnnounceCount = (mDNSu8)announceCount;
    e88208ba:	0a940ba3          	sb	s1,183(s0)
    e88208be:	bfd1                	j	e8820892 <mDNSCoreRestartRegistration+0x8c>

00000000e88208c0 <UpdateKeepaliveRData>:
{
    e88208c0:	7141                	addi	sp,sp,-496
    mDNSAddr laddr = zeroAddr;
    e88208c2:	00083797          	auipc	a5,0x83
    e88208c6:	cbe78793          	addi	a5,a5,-834 # e88a3580 <zeroAddr>
{
    e88208ca:	e3d2                	sd	s4,448(sp)
    e88208cc:	ff56                	sd	s5,440(sp)
    e88208ce:	8a3a                	mv	s4,a4
    e88208d0:	8ab6                	mv	s5,a3
    mDNSAddr laddr = zeroAddr;
    e88208d2:	6798                	ld	a4,8(a5)
    e88208d4:	6394                	ld	a3,0(a5)
    e88208d6:	4b9c                	lw	a5,16(a5)
    e88208d8:	f8ba                	sd	a4,112(sp)
    mDNSAddr raddr = zeroAddr;
    e88208da:	e53a                	sd	a4,136(sp)
    mDNSAddr laddr = zeroAddr;
    e88208dc:	dcbe                	sw	a5,120(sp)
    mDNSAddr raddr = zeroAddr;
    e88208de:	c93e                	sw	a5,144(sp)
    mDNSEthAddr eth = zeroEthAddr;
    e88208e0:	00083797          	auipc	a5,0x83
    e88208e4:	cb878793          	addi	a5,a5,-840 # e88a3598 <zeroEthAddr>
    e88208e8:	4398                	lw	a4,0(a5)
    e88208ea:	0047d783          	lhu	a5,4(a5)
{
    e88208ee:	f3a2                	sd	s0,480(sp)
    e88208f0:	efa6                	sd	s1,472(sp)
    mDNSEthAddr eth = zeroEthAddr;
    e88208f2:	06f11223          	sh	a5,100(sp)
    mDNSIPPort lport = zeroIPPort;
    e88208f6:	00083797          	auipc	a5,0x83
    e88208fa:	cb278793          	addi	a5,a5,-846 # e88a35a8 <zeroIPPort>
    e88208fe:	0007d783          	lhu	a5,0(a5)
{
    e8820902:	84ae                	mv	s1,a1
    mDNS_ExtractKeepaliveInfo(rr, &timeout, &laddr, &raddr, &eth, &seq, &ack, &lport, &rport, &win);
    e8820904:	0880                	addi	s0,sp,80
    mDNSIPPort lport = zeroIPPort;
    e8820906:	04f11423          	sh	a5,72(sp)
    mDNSIPPort rport = zeroIPPort;
    e882090a:	04f11823          	sh	a5,80(sp)
    mDNS_ExtractKeepaliveInfo(rr, &timeout, &laddr, &raddr, &eth, &seq, &ack, &lport, &rport, &win);
    e882090e:	05210793          	addi	a5,sp,82
{
    e8820912:	ebca                	sd	s2,464(sp)
    e8820914:	e7ce                	sd	s3,456(sp)
    mDNSAddr laddr = zeroAddr;
    e8820916:	f4b6                	sd	a3,104(sp)
    mDNSAddr raddr = zeroAddr;
    e8820918:	e136                	sd	a3,128(sp)
    mDNSEthAddr eth = zeroEthAddr;
    e882091a:	d0ba                	sw	a4,96(sp)
    mDNS_ExtractKeepaliveInfo(rr, &timeout, &laddr, &raddr, &eth, &seq, &ack, &lport, &rport, &win);
    e882091c:	e43e                	sd	a5,8(sp)
    e882091e:	0114                	addi	a3,sp,128
{
    e8820920:	892a                	mv	s2,a0
    e8820922:	89b2                	mv	s3,a2
    mDNS_ExtractKeepaliveInfo(rr, &timeout, &laddr, &raddr, &eth, &seq, &ack, &lport, &rport, &win);
    e8820924:	e022                	sd	s0,0(sp)
    e8820926:	04810893          	addi	a7,sp,72
    e882092a:	05c10813          	addi	a6,sp,92
    e882092e:	08bc                	addi	a5,sp,88
    e8820930:	1098                	addi	a4,sp,96
    e8820932:	10b0                	addi	a2,sp,104
    e8820934:	08cc                	addi	a1,sp,84
    e8820936:	8526                	mv	a0,s1
{
    e8820938:	f786                	sd	ra,488(sp)
    mDNSu32 timeout = 0;
    e882093a:	ca82                	sw	zero,84(sp)
    mDNSu32 seq = 0;
    e882093c:	cc82                	sw	zero,88(sp)
    mDNSu32 ack = 0;
    e882093e:	ce82                	sw	zero,92(sp)
    mDNSu16 win = 0;
    e8820940:	04011923          	sh	zero,82(sp)
    mDNS_ExtractKeepaliveInfo(rr, &timeout, &laddr, &raddr, &eth, &seq, &ack, &lport, &rport, &win);
    e8820944:	b61fc0ef          	jal	ra,e881d4a4 <mDNS_ExtractKeepaliveInfo.isra.30>
    if (!timeout || mDNSAddressIsZero(&laddr) || mDNSAddressIsZero(&raddr) || mDNSIPPortIsZero(lport) || mDNSIPPortIsZero(rport))
    e8820948:	46d6                	lw	a3,84(sp)
    e882094a:	c29d                	beqz	a3,e8820970 <UpdateKeepaliveRData+0xb0>
    e882094c:	5626                	lw	a2,104(sp)
    e882094e:	4791                	li	a5,4
    e8820950:	06f61263          	bne	a2,a5,e88209b4 <UpdateKeepaliveRData+0xf4>
    e8820954:	57b6                	lw	a5,108(sp)
    e8820956:	cf89                	beqz	a5,e8820970 <UpdateKeepaliveRData+0xb0>
    e8820958:	478a                	lw	a5,128(sp)
    e882095a:	4711                	li	a4,4
    e882095c:	06e79863          	bne	a5,a4,e88209cc <UpdateKeepaliveRData+0x10c>
    e8820960:	479a                	lw	a5,132(sp)
    e8820962:	c799                	beqz	a5,e8820970 <UpdateKeepaliveRData+0xb0>
    e8820964:	04815783          	lhu	a5,72(sp)
    e8820968:	c781                	beqz	a5,e8820970 <UpdateKeepaliveRData+0xb0>
    e882096a:	05015783          	lhu	a5,80(sp)
    e882096e:	ebbd                	bnez	a5,e88209e4 <UpdateKeepaliveRData+0x124>
        LogMsg("UpdateKeepaliveRData: not a valid record %s for keepalive %#a:%d %#a:%d", ARDisplayString(m, rr), &laddr, lport.NotAnInteger, &raddr, rport.NotAnInteger);
    e8820970:	788c                	ld	a1,48(s1)
    e8820972:	03b90613          	addi	a2,s2,59
    e8820976:	00848513          	addi	a0,s1,8
    e882097a:	0591                	addi	a1,a1,4
    e882097c:	898f60ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8820980:	862a                	mv	a2,a0
    e8820982:	05015803          	lhu	a6,80(sp)
    e8820986:	04815703          	lhu	a4,72(sp)
    e882098a:	011c                	addi	a5,sp,128
    e882098c:	10b4                	addi	a3,sp,104
    e882098e:	00087597          	auipc	a1,0x87
    e8820992:	02a58593          	addi	a1,a1,42 # e88a79b8 <end.8789+0x4310>
    e8820996:	4501                	li	a0,0
        return mStatus_UnknownErr;
    e8820998:	7441                	lui	s0,0xffff0
        LogMsg("UpdateKeepaliveRData: not a valid record %s for keepalive %#a:%d %#a:%d", ARDisplayString(m, rr), &laddr, lport.NotAnInteger, &raddr, rport.NotAnInteger);
    e882099a:	3130e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mStatus_UnknownErr;
    e882099e:	147d                	addi	s0,s0,-1
}
    e88209a0:	8522                	mv	a0,s0
    e88209a2:	70be                	ld	ra,488(sp)
    e88209a4:	741e                	ld	s0,480(sp)
    e88209a6:	64fe                	ld	s1,472(sp)
    e88209a8:	695e                	ld	s2,464(sp)
    e88209aa:	69be                	ld	s3,456(sp)
    e88209ac:	6a1e                	ld	s4,448(sp)
    e88209ae:	7afa                	ld	s5,440(sp)
    e88209b0:	617d                	addi	sp,sp,496
    e88209b2:	8082                	ret
    if (!timeout || mDNSAddressIsZero(&laddr) || mDNSAddressIsZero(&raddr) || mDNSIPPortIsZero(lport) || mDNSIPPortIsZero(rport))
    e88209b4:	4799                	li	a5,6
    e88209b6:	faf611e3          	bne	a2,a5,e8820958 <UpdateKeepaliveRData+0x98>
    e88209ba:	5746                	lw	a4,112(sp)
    e88209bc:	57b6                	lw	a5,108(sp)
    e88209be:	8fd9                	or	a5,a5,a4
    e88209c0:	5756                	lw	a4,116(sp)
    e88209c2:	8fd9                	or	a5,a5,a4
    e88209c4:	5766                	lw	a4,120(sp)
    e88209c6:	8fd9                	or	a5,a5,a4
    e88209c8:	2781                	sext.w	a5,a5
    e88209ca:	b771                	j	e8820956 <UpdateKeepaliveRData+0x96>
    e88209cc:	4719                	li	a4,6
    e88209ce:	f8e79be3          	bne	a5,a4,e8820964 <UpdateKeepaliveRData+0xa4>
    e88209d2:	472a                	lw	a4,136(sp)
    e88209d4:	479a                	lw	a5,132(sp)
    e88209d6:	8fd9                	or	a5,a5,a4
    e88209d8:	473a                	lw	a4,140(sp)
    e88209da:	8fd9                	or	a5,a5,a4
    e88209dc:	474a                	lw	a4,144(sp)
    e88209de:	8fd9                	or	a5,a5,a4
    e88209e0:	2781                	sext.w	a5,a5
    e88209e2:	b741                	j	e8820962 <UpdateKeepaliveRData+0xa2>
    if (updateMac)
    e88209e4:	080a8463          	beqz	s5,e8820a6c <UpdateKeepaliveRData+0x1ac>
        if (laddr.type == mDNSAddrType_IPv4)
    e88209e8:	04814783          	lbu	a5,72(sp)
    e88209ec:	04914703          	lbu	a4,73(sp)
    e88209f0:	05114583          	lbu	a1,81(sp)
    e88209f4:	0087979b          	slliw	a5,a5,0x8
    e88209f8:	8fd9                	or	a5,a5,a4
    e88209fa:	05014703          	lbu	a4,80(sp)
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d h=%#a d=%#a l=%u r=%u m=%s", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport), ethAddr);
    e88209fe:	e03e                	sd	a5,0(sp)
    e8820a00:	e852                	sd	s4,16(sp)
    e8820a02:	0087171b          	slliw	a4,a4,0x8
    e8820a06:	8f4d                	or	a4,a4,a1
    e8820a08:	e43a                	sd	a4,8(sp)
        if (laddr.type == mDNSAddrType_IPv4)
    e8820a0a:	4591                	li	a1,4
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d h=%#a d=%#a l=%u r=%u m=%s", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport), ethAddr);
    e8820a0c:	08010893          	addi	a7,sp,128
    e8820a10:	06810813          	addi	a6,sp,104
    e8820a14:	47a9                	li	a5,10
    e8820a16:	4779                	li	a4,30
        if (laddr.type == mDNSAddrType_IPv4)
    e8820a18:	04b61563          	bne	a2,a1,e8820a62 <UpdateKeepaliveRData+0x1a2>
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d h=%#a d=%#a l=%u r=%u m=%s", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport), ethAddr);
    e8820a1c:	00087617          	auipc	a2,0x87
    e8820a20:	fe460613          	addi	a2,a2,-28 # e88a7a00 <end.8789+0x4358>
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d H=%#a D=%#a l=%u r=%u m=%s", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr,  mDNSVal16(lport), mDNSVal16(rport), ethAddr);
    e8820a24:	0ff00593          	li	a1,255
    e8820a28:	0b110513          	addi	a0,sp,177
    e8820a2c:	a16f50ef          	jal	ra,e8815c42 <mDNS_snprintf>
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d H=%#a D=%#a l=%u r=%u m=%.6a s=%u a=%u w=%u", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport), &eth, mti.seq, mti.ack, mti.window);
    e8820a30:	3c05350b          	extu	a0,a0,15,0
    if (newrdlength == (sizeof(txt.c) - 1))
    e8820a34:	0ff00793          	li	a5,255
    e8820a38:	10f51463          	bne	a0,a5,e8820b40 <UpdateKeepaliveRData+0x280>
        LogMsg("UpdateKeepaliveRData: could not allocate memory %s", ARDisplayString(m, rr));
    e8820a3c:	788c                	ld	a1,48(s1)
    e8820a3e:	03b90613          	addi	a2,s2,59
    e8820a42:	00848513          	addi	a0,s1,8
    e8820a46:	0591                	addi	a1,a1,4
    e8820a48:	fcdf50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8820a4c:	862a                	mv	a2,a0
    e8820a4e:	00087597          	auipc	a1,0x87
    e8820a52:	13258593          	addi	a1,a1,306 # e88a7b80 <end.8789+0x44d8>
    e8820a56:	4501                	li	a0,0
    e8820a58:	2550e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!newrd) { LogMsg("UpdateKeepaliveRData: ptr NULL"); return mStatus_NoMemoryErr; }
    e8820a5c:	7441                	lui	s0,0xffff0
    e8820a5e:	1475                	addi	s0,s0,-3
    e8820a60:	b781                	j	e88209a0 <UpdateKeepaliveRData+0xe0>
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d H=%#a D=%#a l=%u r=%u m=%s", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr,  mDNSVal16(lport), mDNSVal16(rport), ethAddr);
    e8820a62:	00087617          	auipc	a2,0x87
    e8820a66:	fce60613          	addi	a2,a2,-50 # e88a7a30 <end.8789+0x4388>
    e8820a6a:	bf6d                	j	e8820a24 <UpdateKeepaliveRData+0x164>
        mDNSPlatformMemZero(&mti, sizeof (mDNSTCPInfo));
    e8820a6c:	45e1                	li	a1,24
    e8820a6e:	0928                	addi	a0,sp,152
    e8820a70:	0860f0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
        ret = mDNSPlatformRetrieveTCPInfo(&laddr, &lport, &raddr, &rport, &mti);
    e8820a74:	86a2                	mv	a3,s0
    e8820a76:	0938                	addi	a4,sp,152
    e8820a78:	0110                	addi	a2,sp,128
    e8820a7a:	00ac                	addi	a1,sp,72
    e8820a7c:	10a8                	addi	a0,sp,104
    e8820a7e:	4a70f0ef          	jal	ra,e8830724 <mDNSPlatformRetrieveTCPInfo>
    e8820a82:	842a                	mv	s0,a0
        if (ret != mStatus_NoError)
    e8820a84:	c911                	beqz	a0,e8820a98 <UpdateKeepaliveRData+0x1d8>
            LogMsg("mDNSPlatformRetrieveTCPInfo: mDNSPlatformRetrieveTCPInfo failed %d", ret);
    e8820a86:	862a                	mv	a2,a0
    e8820a88:	00087597          	auipc	a1,0x87
    e8820a8c:	fd858593          	addi	a1,a1,-40 # e88a7a60 <end.8789+0x43b8>
    e8820a90:	4501                	li	a0,0
    e8820a92:	21b0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return ret;
    e8820a96:	b729                	j	e88209a0 <UpdateKeepaliveRData+0xe0>
        if ((intf != mDNSNULL) && (mti.IntfId != intf->InterfaceID))
    e8820a98:	02098963          	beqz	s3,e8820aca <UpdateKeepaliveRData+0x20a>
    e8820a9c:	6789                	lui	a5,0x2
    e8820a9e:	99be                	add	s3,s3,a5
    e8820aa0:	666a                	ld	a2,152(sp)
    e8820aa2:	9f09b683          	ld	a3,-1552(s3)
    e8820aa6:	02d60263          	beq	a2,a3,e8820aca <UpdateKeepaliveRData+0x20a>
            LogInfo("mDNSPlatformRetrieveTCPInfo: InterfaceID  mismatch mti.IntfId = %p InterfaceID = %p",  mti.IntfId, intf->InterfaceID);
    e8820aaa:	000b4797          	auipc	a5,0xb4
    e8820aae:	fca78793          	addi	a5,a5,-54 # e88d4a74 <mDNS_LoggingEnabled>
    e8820ab2:	439c                	lw	a5,0(a5)
    e8820ab4:	cb81                	beqz	a5,e8820ac4 <UpdateKeepaliveRData+0x204>
    e8820ab6:	00087597          	auipc	a1,0x87
    e8820aba:	ff258593          	addi	a1,a1,-14 # e88a7aa8 <end.8789+0x4400>
    e8820abe:	450d                	li	a0,3
    e8820ac0:	1ed0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return mStatus_BadParamErr;
    e8820ac4:	7441                	lui	s0,0xffff0
    e8820ac6:	1471                	addi	s0,s0,-4
    e8820ac8:	bde1                	j	e88209a0 <UpdateKeepaliveRData+0xe0>
        if (laddr.type == mDNSAddrType_IPv4)
    e8820aca:	04814783          	lbu	a5,72(sp)
    e8820ace:	04914703          	lbu	a4,73(sp)
    e8820ad2:	560a                	lw	a2,160(sp)
    e8820ad4:	0087979b          	slliw	a5,a5,0x8
    e8820ad8:	8fd9                	or	a5,a5,a4
    e8820ada:	05014703          	lbu	a4,80(sp)
    e8820ade:	05114803          	lbu	a6,81(sp)
    e8820ae2:	559a                	lw	a1,164(sp)
    e8820ae4:	0a815503          	lhu	a0,168(sp)
    e8820ae8:	0087171b          	slliw	a4,a4,0x8
    e8820aec:	01076733          	or	a4,a4,a6
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d h=%#a d=%#a l=%u r=%u m=%.6a s=%u a=%u w=%u", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport), &eth, mti.seq, mti.ack, mti.window);
    e8820af0:	ec32                	sd	a2,24(sp)
        if (laddr.type == mDNSAddrType_IPv4)
    e8820af2:	58a6                	lw	a7,104(sp)
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d h=%#a d=%#a l=%u r=%u m=%.6a s=%u a=%u w=%u", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport), &eth, mti.seq, mti.ack, mti.window);
    e8820af4:	1090                	addi	a2,sp,96
    e8820af6:	f42a                	sd	a0,40(sp)
    e8820af8:	f02e                	sd	a1,32(sp)
    e8820afa:	e832                	sd	a2,16(sp)
    e8820afc:	e43a                	sd	a4,8(sp)
    e8820afe:	e03e                	sd	a5,0(sp)
        if (laddr.type == mDNSAddrType_IPv4)
    e8820b00:	4811                	li	a6,4
    e8820b02:	46d6                	lw	a3,84(sp)
    e8820b04:	03089363          	bne	a7,a6,e8820b2a <UpdateKeepaliveRData+0x26a>
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d h=%#a d=%#a l=%u r=%u m=%.6a s=%u a=%u w=%u", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport), &eth, mti.seq, mti.ack, mti.window);
    e8820b08:	08010893          	addi	a7,sp,128
    e8820b0c:	06810813          	addi	a6,sp,104
    e8820b10:	47a9                	li	a5,10
    e8820b12:	4779                	li	a4,30
    e8820b14:	00087617          	auipc	a2,0x87
    e8820b18:	fec60613          	addi	a2,a2,-20 # e88a7b00 <end.8789+0x4458>
            newrdlength = mDNS_snprintf((char *)&txt.c[1], sizeof(txt.c) - 1, "t=%d i=%d c=%d H=%#a D=%#a l=%u r=%u m=%.6a s=%u a=%u w=%u", timeout, kKeepaliveRetryInterval, kKeepaliveRetryCount, &laddr, &raddr, mDNSVal16(lport), mDNSVal16(rport), &eth, mti.seq, mti.ack, mti.window);
    e8820b1c:	0ff00593          	li	a1,255
    e8820b20:	0b110513          	addi	a0,sp,177
    e8820b24:	91ef50ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e8820b28:	b721                	j	e8820a30 <UpdateKeepaliveRData+0x170>
    e8820b2a:	08010893          	addi	a7,sp,128
    e8820b2e:	06810813          	addi	a6,sp,104
    e8820b32:	47a9                	li	a5,10
    e8820b34:	4779                	li	a4,30
    e8820b36:	00087617          	auipc	a2,0x87
    e8820b3a:	00a60613          	addi	a2,a2,10 # e88a7b40 <end.8789+0x4498>
    e8820b3e:	bff9                	j	e8820b1c <UpdateKeepaliveRData+0x25c>
    txt.c[0] = newrdlength + 1;
    e8820b40:	0015079b          	addiw	a5,a0,1
    newrdlength += 2;
    e8820b44:	2509                	addiw	a0,a0,2
    e8820b46:	3c05340b          	extu	s0,a0,15,0
    txt.c[0] = newrdlength + 1;
    e8820b4a:	0af10823          	sb	a5,176(sp)
    rdsize = newrdlength > sizeof(RDataBody) ? newrdlength : sizeof(RDataBody);
    e8820b4e:	0004061b          	sext.w	a2,s0
    e8820b52:	10800793          	li	a5,264
    e8820b56:	89a2                	mv	s3,s0
    e8820b58:	00f67463          	bgeu	a2,a5,e8820b60 <UpdateKeepaliveRData+0x2a0>
    e8820b5c:	10800993          	li	s3,264
    e8820b60:	3c09b50b          	extu	a0,s3,15,0
    newrd = mDNSPlatformMemAllocate(sizeof(RData) - sizeof(RDataBody) + rdsize);
    e8820b64:	0511                	addi	a0,a0,4
    e8820b66:	fc32                	sd	a2,56(sp)
    e8820b68:	6fa0f0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8820b6c:	8a2a                	mv	s4,a0
    if (!newrd) { LogMsg("UpdateKeepaliveRData: ptr NULL"); return mStatus_NoMemoryErr; }
    e8820b6e:	7662                	ld	a2,56(sp)
    e8820b70:	e901                	bnez	a0,e8820b80 <UpdateKeepaliveRData+0x2c0>
    e8820b72:	00087597          	auipc	a1,0x87
    e8820b76:	04658593          	addi	a1,a1,70 # e88a7bb8 <end.8789+0x4510>
    e8820b7a:	1330e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8820b7e:	bdf9                	j	e8820a5c <UpdateKeepaliveRData+0x19c>
    newrd->MaxRDLength = (mDNSu16) rdsize;
    e8820b80:	3845598b          	shia	s3,(a0),4,0
    mDNSPlatformMemCopy(&newrd->u, txt.c, newrdlength);
    e8820b84:	190c                	addi	a1,sp,176
    e8820b86:	71b0e0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    if ( rr->resrec.rdata != &rr->rdatastorage)
    e8820b8a:	00848993          	addi	s3,s1,8
    e8820b8e:	788c                	ld	a1,48(s1)
    e8820b90:	30048793          	addi	a5,s1,768
    e8820b94:	000b4a97          	auipc	s5,0xb4
    e8820b98:	ee0a8a93          	addi	s5,s5,-288 # e88d4a74 <mDNS_LoggingEnabled>
    e8820b9c:	02f58663          	beq	a1,a5,e8820bc8 <UpdateKeepaliveRData+0x308>
        LogSPS("UpdateKeepaliveRData: Freed allocated memory for keep alive packet: %s ", ARDisplayString(m, rr));
    e8820ba0:	000aa783          	lw	a5,0(s5)
    e8820ba4:	cf99                	beqz	a5,e8820bc2 <UpdateKeepaliveRData+0x302>
    e8820ba6:	03b90613          	addi	a2,s2,59
    e8820baa:	0591                	addi	a1,a1,4
    e8820bac:	854e                	mv	a0,s3
    e8820bae:	e67f50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8820bb2:	862a                	mv	a2,a0
    e8820bb4:	00087597          	auipc	a1,0x87
    e8820bb8:	02458593          	addi	a1,a1,36 # e88a7bd8 <end.8789+0x4530>
    e8820bbc:	4509                	li	a0,2
    e8820bbe:	0ef0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNSPlatformMemFree(rr->resrec.rdata);
    e8820bc2:	7888                	ld	a0,48(s1)
    e8820bc4:	6be0f0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    SetNewRData(&rr->resrec, newrd, newrdlength);    // Update our rdata
    e8820bc8:	8622                	mv	a2,s0
    e8820bca:	85d2                	mv	a1,s4
    e8820bcc:	854e                	mv	a0,s3
    e8820bce:	e8bf30ef          	jal	ra,e8814a58 <SetNewRData>
    LogSPS("UpdateKeepaliveRData: successfully updated the record %s", ARDisplayString(m, rr));
    e8820bd2:	000aa403          	lw	s0,0(s5)
    e8820bd6:	dc0405e3          	beqz	s0,e88209a0 <UpdateKeepaliveRData+0xe0>
    e8820bda:	788c                	ld	a1,48(s1)
    e8820bdc:	03b90613          	addi	a2,s2,59
    e8820be0:	854e                	mv	a0,s3
    e8820be2:	0591                	addi	a1,a1,4
    e8820be4:	e31f50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8820be8:	862a                	mv	a2,a0
    e8820bea:	00087597          	auipc	a1,0x87
    e8820bee:	03658593          	addi	a1,a1,54 # e88a7c20 <end.8789+0x4578>
    e8820bf2:	4509                	li	a0,2
    e8820bf4:	0b90e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return mStatus_NoError;
    e8820bf8:	4401                	li	s0,0
    e8820bfa:	b35d                	j	e88209a0 <UpdateKeepaliveRData+0xe0>

00000000e8820bfc <mDNSCoreHaveAdvertisedMulticastServices>:
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e8820bfc:	678d                	lui	a5,0x3
{
    e8820bfe:	7139                	addi	sp,sp,-64
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e8820c00:	953e                	add	a0,a0,a5
{
    e8820c02:	e826                	sd	s1,16(sp)
    e8820c04:	ec4a                	sd	s2,24(sp)
    e8820c06:	f04e                	sd	s3,32(sp)
    e8820c08:	f452                	sd	s4,40(sp)
    e8820c0a:	f856                	sd	s5,48(sp)
    e8820c0c:	fc06                	sd	ra,56(sp)
    e8820c0e:	e422                	sd	s0,8(sp)
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e8820c10:	1b853403          	ld	s0,440(a0)
        if (mDNS_KeepaliveRecord(&rr->resrec) || (rr->resrec.rrtype == kDNSType_SRV && !AuthRecord_uDNS(rr) && !mDNSSameIPPort(rr->resrec.rdata->u.srv.port, DiscardPort)))
    e8820c14:	44a9                	li	s1,10
    e8820c16:	00089917          	auipc	s2,0x89
    e8820c1a:	43a90913          	addi	s2,s2,1082 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    e8820c1e:	02100993          	li	s3,33
    e8820c22:	00082a17          	auipc	s4,0x82
    e8820c26:	13ea0a13          	addi	s4,s4,318 # e88a2d60 <mDNSInterface_Any>
    e8820c2a:	00081a97          	auipc	s5,0x81
    e8820c2e:	3e6a8a93          	addi	s5,s5,998 # e88a2010 <DiscardPort>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e8820c32:	e019                	bnez	s0,e8820c38 <mDNSCoreHaveAdvertisedMulticastServices+0x3c>
    return mDNSfalse;
    e8820c34:	4501                	li	a0,0
    e8820c36:	a0a1                	j	e8820c7e <mDNSCoreHaveAdvertisedMulticastServices+0x82>
        if (mDNS_KeepaliveRecord(&rr->resrec) || (rr->resrec.rrtype == kDNSType_SRV && !AuthRecord_uDNS(rr) && !mDNSSameIPPort(rr->resrec.rdata->u.srv.port, DiscardPort)))
    e8820c38:	00a45783          	lhu	a5,10(s0) # ffffffffffff000a <__DRAM0_INF_BASE+0xffffffff0000000a>
    e8820c3c:	02978463          	beq	a5,s1,e8820c64 <mDNSCoreHaveAdvertisedMulticastServices+0x68>
    e8820c40:	00a45783          	lhu	a5,10(s0)
    e8820c44:	01379e63          	bne	a5,s3,e8820c60 <mDNSCoreHaveAdvertisedMulticastServices+0x64>
    e8820c48:	7018                	ld	a4,32(s0)
    e8820c4a:	000a3783          	ld	a5,0(s4)
    e8820c4e:	04f70163          	beq	a4,a5,e8820c90 <mDNSCoreHaveAdvertisedMulticastServices+0x94>
    e8820c52:	781c                	ld	a5,48(s0)
    e8820c54:	0087d703          	lhu	a4,8(a5) # 3008 <memcmp-0xe87fcff8>
    e8820c58:	000ad783          	lhu	a5,0(s5)
    e8820c5c:	02f71063          	bne	a4,a5,e8820c7c <mDNSCoreHaveAdvertisedMulticastServices+0x80>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e8820c60:	6000                	ld	s0,0(s0)
    e8820c62:	bfc1                	j	e8820c32 <mDNSCoreHaveAdvertisedMulticastServices+0x36>
        if (mDNS_KeepaliveRecord(&rr->resrec) || (rr->resrec.rrtype == kDNSType_SRV && !AuthRecord_uDNS(rr) && !mDNSSameIPPort(rr->resrec.rdata->u.srv.port, DiscardPort)))
    e8820c64:	7408                	ld	a0,40(s0)
    e8820c66:	4781                	li	a5,0
    e8820c68:	00054703          	lbu	a4,0(a0)
    e8820c6c:	c319                	beqz	a4,e8820c72 <mDNSCoreHaveAdvertisedMulticastServices+0x76>
    e8820c6e:	00170793          	addi	a5,a4,1
    e8820c72:	85ca                	mv	a1,s2
    e8820c74:	953e                	add	a0,a0,a5
    e8820c76:	b70f20ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e8820c7a:	d179                	beqz	a0,e8820c40 <mDNSCoreHaveAdvertisedMulticastServices+0x44>
            return mDNStrue;
    e8820c7c:	4505                	li	a0,1
}
    e8820c7e:	70e2                	ld	ra,56(sp)
    e8820c80:	6422                	ld	s0,8(sp)
    e8820c82:	64c2                	ld	s1,16(sp)
    e8820c84:	6962                	ld	s2,24(sp)
    e8820c86:	7982                	ld	s3,32(sp)
    e8820c88:	7a22                	ld	s4,40(sp)
    e8820c8a:	7ac2                	ld	s5,48(sp)
    e8820c8c:	6121                	addi	sp,sp,64
    e8820c8e:	8082                	ret
        if (mDNS_KeepaliveRecord(&rr->resrec) || (rr->resrec.rrtype == kDNSType_SRV && !AuthRecord_uDNS(rr) && !mDNSSameIPPort(rr->resrec.rdata->u.srv.port, DiscardPort)))
    e8820c90:	07a44783          	lbu	a5,122(s0)
    e8820c94:	ffdd                	bnez	a5,e8820c52 <mDNSCoreHaveAdvertisedMulticastServices+0x56>
    e8820c96:	7408                	ld	a0,40(s0)
    e8820c98:	c0af20ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8820c9c:	f95d                	bnez	a0,e8820c52 <mDNSCoreHaveAdvertisedMulticastServices+0x56>
    e8820c9e:	b7c9                	j	e8820c60 <mDNSCoreHaveAdvertisedMulticastServices+0x64>

00000000e8820ca0 <mDNS_UpdateAllowSleep>:
{
    e8820ca0:	7155                	addi	sp,sp,-208
    e8820ca2:	e586                	sd	ra,200(sp)
    e8820ca4:	e1a2                	sd	s0,192(sp)
    e8820ca6:	fd26                	sd	s1,184(sp)
    e8820ca8:	f94a                	sd	s2,176(sp)
    e8820caa:	f54e                	sd	s3,168(sp)
    e8820cac:	f152                	sd	s4,160(sp)
    e8820cae:	ed56                	sd	s5,152(sp)
    e8820cb0:	e95a                	sd	s6,144(sp)
    e8820cb2:	e55e                	sd	s7,136(sp)
    e8820cb4:	e162                	sd	s8,128(sp)
    if (m->SystemSleepOnlyIfWakeOnLAN)
    e8820cb6:	28954783          	lbu	a5,649(a0)
    reason[0] = 0;
    e8820cba:	00010023          	sb	zero,0(sp)
    if (m->SystemSleepOnlyIfWakeOnLAN)
    e8820cbe:	e395                	bnez	a5,e8820ce2 <mDNS_UpdateAllowSleep+0x42>
    mDNSBool allowSleep = mDNStrue;
    e8820cc0:	4405                	li	s0,1
    mDNSPlatformSetAllowSleep(allowSleep, reason);
    e8820cc2:	858a                	mv	a1,sp
    e8820cc4:	8522                	mv	a0,s0
    e8820cc6:	4550e0ef          	jal	ra,e882f91a <mDNSPlatformSetAllowSleep>
}
    e8820cca:	640e                	ld	s0,192(sp)
    e8820ccc:	60ae                	ld	ra,200(sp)
    e8820cce:	74ea                	ld	s1,184(sp)
    e8820cd0:	794a                	ld	s2,176(sp)
    e8820cd2:	79aa                	ld	s3,168(sp)
    e8820cd4:	7a0a                	ld	s4,160(sp)
    e8820cd6:	6aea                	ld	s5,152(sp)
    e8820cd8:	6b4a                	ld	s6,144(sp)
    e8820cda:	6baa                	ld	s7,136(sp)
    e8820cdc:	6c0a                	ld	s8,128(sp)
    e8820cde:	6169                	addi	sp,sp,208
    e8820ce0:	8082                	ret
        if (m->ProxyRecords)
    e8820ce2:	6415                	lui	s0,0x5
    e8820ce4:	942a                	add	s0,s0,a0
    e8820ce6:	e1042683          	lw	a3,-496(s0) # 4e10 <memcmp-0xe87fb1f0>
    e8820cea:	84aa                	mv	s1,a0
    e8820cec:	ead9                	bnez	a3,e8820d82 <mDNS_UpdateAllowSleep+0xe2>
        if (allowSleep && mDNSCoreHaveAdvertisedMulticastServices(m))
    e8820cee:	f0fff0ef          	jal	ra,e8820bfc <mDNSCoreHaveAdvertisedMulticastServices>
    e8820cf2:	d579                	beqz	a0,e8820cc0 <mDNS_UpdateAllowSleep+0x20>
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e8820cf4:	678d                	lui	a5,0x3
    e8820cf6:	97a6                	add	a5,a5,s1
    e8820cf8:	1e07b503          	ld	a0,480(a5) # 31e0 <memcmp-0xe87fce20>
                        else if (m->SPSType != 0)
    e8820cfc:	6911                	lui	s2,0x4
                            mDNSu32 mymetric = LocalSPSMetric(m);
    e8820cfe:	6989                	lui	s3,0x2
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e8820d00:	97cf20ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
                            mDNSu32 metric   = SPSMetric(cr->resrec.rdata->u.name.c);
    e8820d04:	000f4bb7          	lui	s7,0xf4
    e8820d08:	ffaeaa37          	lui	s4,0xffaea
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e8820d0c:	8b2a                	mv	s6,a0
                        else if (m->SPSType != 0)
    e8820d0e:	9926                	add	s2,s2,s1
                            mDNSu32 mymetric = LocalSPSMetric(m);
    e8820d10:	7109899b          	addiw	s3,s3,1808
                            mDNSu32 metric   = SPSMetric(cr->resrec.rdata->u.name.c);
    e8820d14:	240b8b93          	addi	s7,s7,576 # f4240 <memcmp-0xe870bdc0>
    e8820d18:	eb0a0a1b          	addiw	s4,s4,-336
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e8820d1c:	fa0b02e3          	beqz	s6,e8820cc0 <mDNS_UpdateAllowSleep+0x20>
                if (intf->McastTxRx && !intf->Loopback && !mDNSPlatformInterfaceIsD2D(intf->InterfaceID))
    e8820d20:	6a89                	lui	s5,0x2
    e8820d22:	015b0c33          	add	s8,s6,s5
    e8820d26:	a67c4783          	lbu	a5,-1433(s8)
    e8820d2a:	1c078e63          	beqz	a5,e8820f06 <mDNS_UpdateAllowSleep+0x266>
    e8820d2e:	a69c4783          	lbu	a5,-1431(s8)
    e8820d32:	1c079a63          	bnez	a5,e8820f06 <mDNS_UpdateAllowSleep+0x266>
    e8820d36:	9f0c3503          	ld	a0,-1552(s8)
    e8820d3a:	2010f0ef          	jal	ra,e883073a <mDNSPlatformInterfaceIsD2D>
    e8820d3e:	842a                	mv	s0,a0
    e8820d40:	1c051363          	bnez	a0,e8820f06 <mDNS_UpdateAllowSleep+0x266>
                    if (!intf->NetWake)
    e8820d44:	a68c4783          	lbu	a5,-1432(s8)
    e8820d48:	eba5                	bnez	a5,e8820db8 <mDNS_UpdateAllowSleep+0x118>
                        mDNS_snprintf(reason, sizeof(reason), "%s does not support NetWake", intf->ifname);
    e8820d4a:	a26a8a93          	addi	s5,s5,-1498 # 1a26 <memcmp-0xe87fe5da>
    e8820d4e:	9ada                	add	s5,s5,s6
    e8820d50:	86d6                	mv	a3,s5
    e8820d52:	0008a617          	auipc	a2,0x8a
    e8820d56:	70660613          	addi	a2,a2,1798 # e88ab458 <mDNS_DomainTypeNames+0x1aa8>
    e8820d5a:	08000593          	li	a1,128
    e8820d5e:	850a                	mv	a0,sp
    e8820d60:	ee3f40ef          	jal	ra,e8815c42 <mDNS_snprintf>
                        LogInfo("mDNS_UpdateAllowSleep: Sleep disabled because %s does not support NetWake", intf->ifname);
    e8820d64:	000b4797          	auipc	a5,0xb4
    e8820d68:	d1078793          	addi	a5,a5,-752 # e88d4a74 <mDNS_LoggingEnabled>
    e8820d6c:	439c                	lw	a5,0(a5)
    e8820d6e:	cb8d                	beqz	a5,e8820da0 <mDNS_UpdateAllowSleep+0x100>
    e8820d70:	8656                	mv	a2,s5
    e8820d72:	0008a597          	auipc	a1,0x8a
    e8820d76:	70658593          	addi	a1,a1,1798 # e88ab478 <mDNS_DomainTypeNames+0x1ac8>
                                LogInfo("mDNS_UpdateAllowSleep: Sleep disabled because %s has no sleep proxy server with a better metric", intf->ifname);
    e8820d7a:	450d                	li	a0,3
    e8820d7c:	7300e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8820d80:	b789                	j	e8820cc2 <mDNS_UpdateAllowSleep+0x22>
            mDNS_snprintf(reason, sizeof(reason), "sleep proxy for %d records", m->ProxyRecords);
    e8820d82:	0008a617          	auipc	a2,0x8a
    e8820d86:	66660613          	addi	a2,a2,1638 # e88ab3e8 <mDNS_DomainTypeNames+0x1a38>
    e8820d8a:	08000593          	li	a1,128
    e8820d8e:	850a                	mv	a0,sp
    e8820d90:	eb3f40ef          	jal	ra,e8815c42 <mDNS_snprintf>
            LogInfo("mDNS_UpdateAllowSleep: Sleep disabled because we are proxying %d records", m->ProxyRecords);
    e8820d94:	000b4797          	auipc	a5,0xb4
    e8820d98:	ce078793          	addi	a5,a5,-800 # e88d4a74 <mDNS_LoggingEnabled>
    e8820d9c:	439c                	lw	a5,0(a5)
    e8820d9e:	e399                	bnez	a5,e8820da4 <mDNS_UpdateAllowSleep+0x104>
            allowSleep = mDNSfalse;
    e8820da0:	4401                	li	s0,0
    e8820da2:	b705                	j	e8820cc2 <mDNS_UpdateAllowSleep+0x22>
            LogInfo("mDNS_UpdateAllowSleep: Sleep disabled because we are proxying %d records", m->ProxyRecords);
    e8820da4:	e1042603          	lw	a2,-496(s0)
    e8820da8:	0008a597          	auipc	a1,0x8a
    e8820dac:	66058593          	addi	a1,a1,1632 # e88ab408 <mDNS_DomainTypeNames+0x1a58>
    e8820db0:	450d                	li	a0,3
    e8820db2:	6fa0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8820db6:	b7ed                	j	e8820da0 <mDNS_UpdateAllowSleep+0x100>
                        const CacheRecord *cr = FindSPSInCache1(m, &intf->NetWakeBrowse, mDNSNULL, mDNSNULL);
    e8820db8:	4681                	li	a3,0
    e8820dba:	4601                	li	a2,0
    e8820dbc:	010b0593          	addi	a1,s6,16
    e8820dc0:	8526                	mv	a0,s1
    e8820dc2:	8c7fd0ef          	jal	ra,e881e688 <FindSPSInCache1>
                        if ( cr == mDNSNULL)
    e8820dc6:	e915                	bnez	a0,e8820dfa <mDNS_UpdateAllowSleep+0x15a>
                            mDNS_snprintf(reason, sizeof(reason), "No sleep proxy server on %s", intf->ifname);
    e8820dc8:	a26a8a93          	addi	s5,s5,-1498
    e8820dcc:	9ada                	add	s5,s5,s6
    e8820dce:	86d6                	mv	a3,s5
    e8820dd0:	0008a617          	auipc	a2,0x8a
    e8820dd4:	6f860613          	addi	a2,a2,1784 # e88ab4c8 <mDNS_DomainTypeNames+0x1b18>
    e8820dd8:	08000593          	li	a1,128
    e8820ddc:	850a                	mv	a0,sp
    e8820dde:	e65f40ef          	jal	ra,e8815c42 <mDNS_snprintf>
                            LogInfo("mDNS_UpdateAllowSleep: Sleep disabled because %s has no sleep proxy server", intf->ifname);
    e8820de2:	000b4797          	auipc	a5,0xb4
    e8820de6:	c9278793          	addi	a5,a5,-878 # e88d4a74 <mDNS_LoggingEnabled>
    e8820dea:	439c                	lw	a5,0(a5)
    e8820dec:	dbd5                	beqz	a5,e8820da0 <mDNS_UpdateAllowSleep+0x100>
    e8820dee:	8656                	mv	a2,s5
    e8820df0:	0008a597          	auipc	a1,0x8a
    e8820df4:	6f858593          	addi	a1,a1,1784 # e88ab4e8 <mDNS_DomainTypeNames+0x1b38>
    e8820df8:	b749                	j	e8820d7a <mDNS_UpdateAllowSleep+0xda>
                        else if (m->SPSType != 0)
    e8820dfa:	d7094783          	lbu	a5,-656(s2) # 3d70 <memcmp-0xe87fc290>
    e8820dfe:	10078463          	beqz	a5,e8820f06 <mDNS_UpdateAllowSleep+0x266>
                            mDNSu32 mymetric = LocalSPSMetric(m);
    e8820e02:	033787bb          	mulw	a5,a5,s3
    e8820e06:	d7194683          	lbu	a3,-655(s2)
    e8820e0a:	06400713          	li	a4,100
                            mDNSu32 metric   = SPSMetric(cr->resrec.rdata->u.name.c);
    e8820e0e:	4611                	li	a2,4
                            mDNSu32 mymetric = LocalSPSMetric(m);
    e8820e10:	24e6978b          	mulaw	a5,a3,a4
                            mDNSu32 metric   = SPSMetric(cr->resrec.rdata->u.name.c);
    e8820e14:	7918                	ld	a4,48(a0)
                            mDNSu32 mymetric = LocalSPSMetric(m);
    e8820e16:	d7294683          	lbu	a3,-654(s2)
                            mDNSu32 metric   = SPSMetric(cr->resrec.rdata->u.name.c);
    e8820e1a:	00474303          	lbu	t1,4(a4)
                            mDNSu32 mymetric = LocalSPSMetric(m);
    e8820e1e:	96be                	add	a3,a3,a5
                            mDNSu32 metric   = SPSMetric(cr->resrec.rdata->u.name.c);
    e8820e20:	87de                	mv	a5,s7
    e8820e22:	0a667563          	bgeu	a2,t1,e8820ecc <mDNS_UpdateAllowSleep+0x22c>
    e8820e26:	00574503          	lbu	a0,5(a4)
    e8820e2a:	45a5                	li	a1,9
    e8820e2c:	fd05061b          	addiw	a2,a0,-48
    e8820e30:	0ff67613          	andi	a2,a2,255
    e8820e34:	08c5ec63          	bltu	a1,a2,e8820ecc <mDNS_UpdateAllowSleep+0x22c>
    e8820e38:	00674803          	lbu	a6,6(a4)
    e8820e3c:	fd08061b          	addiw	a2,a6,-48
    e8820e40:	0ff67613          	andi	a2,a2,255
    e8820e44:	08c5e463          	bltu	a1,a2,e8820ecc <mDNS_UpdateAllowSleep+0x22c>
    e8820e48:	00874883          	lbu	a7,8(a4)
    e8820e4c:	4e25                	li	t3,9
    e8820e4e:	fd08861b          	addiw	a2,a7,-48
    e8820e52:	0ff67613          	andi	a2,a2,255
    e8820e56:	06ce6b63          	bltu	t3,a2,e8820ecc <mDNS_UpdateAllowSleep+0x22c>
    e8820e5a:	00974583          	lbu	a1,9(a4)
    e8820e5e:	fd05861b          	addiw	a2,a1,-48
    e8820e62:	0ff67613          	andi	a2,a2,255
    e8820e66:	06ce6363          	bltu	t3,a2,e8820ecc <mDNS_UpdateAllowSleep+0x22c>
    e8820e6a:	47a9                	li	a5,10
    e8820e6c:	0267f863          	bgeu	a5,t1,e8820e9c <mDNS_UpdateAllowSleep+0x1fc>
    e8820e70:	00774603          	lbu	a2,7(a4)
    e8820e74:	02d00793          	li	a5,45
    e8820e78:	02f61263          	bne	a2,a5,e8820e9c <mDNS_UpdateAllowSleep+0x1fc>
    e8820e7c:	4710                	lw	a2,8(a4)
    e8820e7e:	392d47b7          	lui	a5,0x392d4
    e8820e82:	93978793          	addi	a5,a5,-1735 # 392d3939 <memcmp-0xaf52c6c7>
    e8820e86:	00f61b63          	bne	a2,a5,e8820e9c <mDNS_UpdateAllowSleep+0x1fc>
    e8820e8a:	00c72303          	lw	t1,12(a4)
    e8820e8e:	39393637          	lui	a2,0x39393
    e8820e92:	d3960613          	addi	a2,a2,-711 # 39392d39 <memcmp-0xaf46d2c7>
    e8820e96:	87de                	mv	a5,s7
    e8820e98:	02c30a63          	beq	t1,a2,e8820ecc <mDNS_UpdateAllowSleep+0x22c>
    e8820e9c:	00c74783          	lbu	a5,12(a4)
    e8820ea0:	6661                	lui	a2,0x18
    e8820ea2:	6a06061b          	addiw	a2,a2,1696
    e8820ea6:	014787bb          	addw	a5,a5,s4
    e8820eaa:	24a6178b          	mulaw	a5,a2,a0
    e8820eae:	3e800613          	li	a2,1000
    e8820eb2:	2509978b          	mulaw	a5,s3,a6
    e8820eb6:	2516178b          	mulaw	a5,a2,a7
    e8820eba:	06400613          	li	a2,100
    e8820ebe:	24b6178b          	mulaw	a5,a2,a1
    e8820ec2:	00b74603          	lbu	a2,11(a4)
    e8820ec6:	4729                	li	a4,10
    e8820ec8:	24e6178b          	mulaw	a5,a2,a4
                            if (metric >= mymetric)
    e8820ecc:	02d7ed63          	bltu	a5,a3,e8820f06 <mDNS_UpdateAllowSleep+0x266>
                                mDNS_snprintf(reason, sizeof(reason), "No sleep proxy server with better metric on %s", intf->ifname);
    e8820ed0:	6a89                	lui	s5,0x2
    e8820ed2:	a26a8a93          	addi	s5,s5,-1498 # 1a26 <memcmp-0xe87fe5da>
    e8820ed6:	9ada                	add	s5,s5,s6
    e8820ed8:	86d6                	mv	a3,s5
    e8820eda:	0008a617          	auipc	a2,0x8a
    e8820ede:	65e60613          	addi	a2,a2,1630 # e88ab538 <mDNS_DomainTypeNames+0x1b88>
    e8820ee2:	08000593          	li	a1,128
    e8820ee6:	850a                	mv	a0,sp
    e8820ee8:	d5bf40ef          	jal	ra,e8815c42 <mDNS_snprintf>
                                LogInfo("mDNS_UpdateAllowSleep: Sleep disabled because %s has no sleep proxy server with a better metric", intf->ifname);
    e8820eec:	000b4797          	auipc	a5,0xb4
    e8820ef0:	b8878793          	addi	a5,a5,-1144 # e88d4a74 <mDNS_LoggingEnabled>
    e8820ef4:	439c                	lw	a5,0(a5)
    e8820ef6:	ea0785e3          	beqz	a5,e8820da0 <mDNS_UpdateAllowSleep+0x100>
    e8820efa:	8656                	mv	a2,s5
    e8820efc:	0008a597          	auipc	a1,0x8a
    e8820f00:	66c58593          	addi	a1,a1,1644 # e88ab568 <mDNS_DomainTypeNames+0x1bb8>
    e8820f04:	bd9d                	j	e8820d7a <mDNS_UpdateAllowSleep+0xda>
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e8820f06:	000b3503          	ld	a0,0(s6)
    e8820f0a:	f73f10ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e8820f0e:	8b2a                	mv	s6,a0
    e8820f10:	b531                	j	e8820d1c <mDNS_UpdateAllowSleep+0x7c>

00000000e8820f12 <GrantCacheExtensions>:
{
    e8820f12:	7179                	addi	sp,sp,-48
    e8820f14:	e826                	sd	s1,16(sp)
    e8820f16:	ec4a                	sd	s2,24(sp)
    e8820f18:	f04e                	sd	s3,32(sp)
    e8820f1a:	f406                	sd	ra,40(sp)
    e8820f1c:	e422                	sd	s0,8(sp)
    e8820f1e:	84ae                	mv	s1,a1
    e8820f20:	89b2                	mv	s3,a2
    CacheGroup *cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e8820f22:	21458613          	addi	a2,a1,532
    e8820f26:	458c                	lw	a1,8(a1)
{
    e8820f28:	892a                	mv	s2,a0
    CacheGroup *cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e8820f2a:	f1efd0ef          	jal	ra,e881e648 <CacheGroupForName>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8820f2e:	c119                	beqz	a0,e8820f34 <GrantCacheExtensions+0x22>
    e8820f30:	6900                	ld	s0,16(a0)
    e8820f32:	e801                	bnez	s0,e8820f42 <GrantCacheExtensions+0x30>
}
    e8820f34:	70a2                	ld	ra,40(sp)
    e8820f36:	6422                	ld	s0,8(sp)
    e8820f38:	64c2                	ld	s1,16(sp)
    e8820f3a:	6962                	ld	s2,24(sp)
    e8820f3c:	7982                	ld	s3,32(sp)
    e8820f3e:	6145                	addi	sp,sp,48
    e8820f40:	8082                	ret
        if (rr->CRActiveQuestion == q)
    e8820f42:	703c                	ld	a5,96(s0)
    e8820f44:	00979d63          	bne	a5,s1,e8820f5e <GrantCacheExtensions+0x4c>
    rr->TimeRcvd             = m->timenow;
    e8820f48:	24092783          	lw	a5,576(s2)
    SetNextCacheCheckTimeForRecord(m, rr);
    e8820f4c:	85a2                	mv	a1,s0
    rr->resrec.rroriginalttl = ttl;
    e8820f4e:	01342823          	sw	s3,16(s0)
    rr->TimeRcvd             = m->timenow;
    e8820f52:	c83c                	sw	a5,80(s0)
    rr->UnansweredQueries = 0;
    e8820f54:	06040623          	sb	zero,108(s0)
    SetNextCacheCheckTimeForRecord(m, rr);
    e8820f58:	854a                	mv	a0,s2
    e8820f5a:	c01fd0ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8820f5e:	6000                	ld	s0,0(s0)
    e8820f60:	bfc9                	j	e8820f32 <GrantCacheExtensions+0x20>

00000000e8820f62 <MakeNegativeCacheRecord>:
{
    e8820f62:	715d                	addi	sp,sp,-80
    e8820f64:	fc26                	sd	s1,56(sp)
    e8820f66:	84aa                	mv	s1,a0
    if (cr == &m->rec.r && m->rec.r.resrec.RecordType)
    e8820f68:	6525                	lui	a0,0x9
{
    e8820f6a:	e0a2                	sd	s0,64(sp)
    e8820f6c:	f84a                	sd	s2,48(sp)
    e8820f6e:	e486                	sd	ra,72(sp)
    e8820f70:	8932                	mv	s2,a2
    if (cr == &m->rec.r && m->rec.r.resrec.RecordType)
    e8820f72:	4d850613          	addi	a2,a0,1240 # 94d8 <memcmp-0xe87f6b28>
    e8820f76:	9626                	add	a2,a2,s1
{
    e8820f78:	842e                	mv	s0,a1
    if (cr == &m->rec.r && m->rec.r.resrec.RecordType)
    e8820f7a:	04c59363          	bne	a1,a2,e8820fc0 <MakeNegativeCacheRecord+0x5e>
    e8820f7e:	00a48633          	add	a2,s1,a0
    e8820f82:	4e064583          	lbu	a1,1248(a2)
    e8820f86:	cd8d                	beqz	a1,e8820fc0 <MakeNegativeCacheRecord+0x5e>
        LogFatalError("MakeNegativeCacheRecord: m->rec appears to be already in use for %s", CRDisplayString(m, &m->rec.r));
    e8820f88:	50863583          	ld	a1,1288(a2)
    e8820f8c:	4e050513          	addi	a0,a0,1248
    e8820f90:	03b48613          	addi	a2,s1,59
    e8820f94:	0591                	addi	a1,a1,4
    e8820f96:	9526                	add	a0,a0,s1
    e8820f98:	f446                	sd	a7,40(sp)
    e8820f9a:	f042                	sd	a6,32(sp)
    e8820f9c:	ec3e                	sd	a5,24(sp)
    e8820f9e:	e83a                	sd	a4,16(sp)
    e8820fa0:	e436                	sd	a3,8(sp)
    e8820fa2:	a73f50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8820fa6:	862a                	mv	a2,a0
    e8820fa8:	00085597          	auipc	a1,0x85
    e8820fac:	f0858593          	addi	a1,a1,-248 # e88a5eb0 <end.8789+0x2808>
    e8820fb0:	4501                	li	a0,0
    e8820fb2:	4fa0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8820fb6:	78a2                	ld	a7,40(sp)
    e8820fb8:	7802                	ld	a6,32(sp)
    e8820fba:	67e2                	ld	a5,24(sp)
    e8820fbc:	6742                	ld	a4,16(sp)
    e8820fbe:	66a2                	ld	a3,8(sp)
    cr->resrec.RecordType    = kDNSRecordTypePacketNegative;
    e8820fc0:	5641                	li	a2,-16
    e8820fc2:	00c40423          	sb	a2,8(s0)
    cr->resrec.rDNSServer    = dnsserver;
    e8820fc6:	6646                	ld	a2,80(sp)
    cr->resrec.rrclass       = rrclass;
    e8820fc8:	00f41623          	sh	a5,12(s0)
    cr->resrec.rdata = (RData*)&cr->smallrdatastorage;
    e8820fcc:	09c40793          	addi	a5,s0,156
    cr->resrec.name          = name;    // Will be updated to point to cg->name when we call CreateNewCacheEntry
    e8820fd0:	03243423          	sd	s2,40(s0)
    cr->resrec.InterfaceID   = InterfaceID;
    e8820fd4:	03143023          	sd	a7,32(s0)
    cr->resrec.rDNSServer    = dnsserver;
    e8820fd8:	fc10                	sd	a2,56(s0)
    cr->resrec.rrtype        = rrtype;
    e8820fda:	00e41523          	sh	a4,10(s0)
    cr->resrec.rroriginalttl = ttl_seconds;
    e8820fde:	01042823          	sw	a6,16(s0)
    cr->resrec.rdlength      = 0;
    e8820fe2:	00042a23          	sw	zero,20(s0)
    cr->resrec.namehash      = namehash;
    e8820fe6:	cc14                	sw	a3,24(s0)
    cr->resrec.rdatahash     = 0;
    e8820fe8:	00042e23          	sw	zero,28(s0)
    cr->resrec.rdata = (RData*)&cr->smallrdatastorage;
    e8820fec:	f81c                	sd	a5,48(s0)
    cr->resrec.rdata->MaxRDLength = 0;
    e8820fee:	08041e23          	sh	zero,156(s0)
    cr->NextInKAList       = mDNSNULL;
    e8820ff2:	04043423          	sd	zero,72(s0)
    cr->TimeRcvd           = m->timenow;
    e8820ff6:	2404a783          	lw	a5,576(s1)
    cr->DelayDelivery      = 0;
    e8820ffa:	04042a23          	sw	zero,84(s0)
}
    e8820ffe:	60a6                	ld	ra,72(sp)
    cr->TimeRcvd           = m->timenow;
    e8821000:	c83c                	sw	a5,80(s0)
    cr->NextRequiredQuery  = m->timenow;
    e8821002:	2404a783          	lw	a5,576(s1)
    cr->NextInCFList       = mDNSNULL;
    e8821006:	06043823          	sd	zero,112(s0)
    cr->nsec               = mDNSNULL;
    e882100a:	06043c23          	sd	zero,120(s0)
    cr->NextRequiredQuery  = m->timenow;
    e882100e:	cc3c                	sw	a5,88(s0)
    cr->LastUsed           = m->timenow;
    e8821010:	cc7c                	sw	a5,92(s0)
    cr->responseFlags      = ResponseFlags;
    e8821012:	00081797          	auipc	a5,0x81
    e8821016:	76e78793          	addi	a5,a5,1902 # e88a2780 <ResponseFlags>
    e882101a:	0007d783          	lhu	a5,0(a5)
    cr->soa                = mDNSNULL;
    e882101e:	08043023          	sd	zero,128(s0)
    cr->CRActiveQuestion   = mDNSNULL;
    e8821022:	06043023          	sd	zero,96(s0)
    cr->LastUnansweredTime = 0;
    e8821026:	06042423          	sw	zero,104(s0)
    cr->UnansweredQueries  = 0;
    e882102a:	06041623          	sh	zero,108(s0)
    cr->responseFlags      = ResponseFlags;
    e882102e:	06f41723          	sh	a5,110(s0)
}
    e8821032:	6406                	ld	s0,64(sp)
    e8821034:	74e2                	ld	s1,56(sp)
    e8821036:	7942                	ld	s2,48(sp)
    e8821038:	6161                	addi	sp,sp,80
    e882103a:	8082                	ret

00000000e882103c <DomainEnumQuery>:
{
    e882103c:	715d                	addi	sp,sp,-80
    e882103e:	fc26                	sd	s1,56(sp)
    const mDNSu8 *mDNS_DEQLabels[] = { (const mDNSu8 *)"\001b", (const mDNSu8 *)"\002db", (const mDNSu8 *)"\002lb",
    e8821040:	03000613          	li	a2,48
{
    e8821044:	84aa                	mv	s1,a0
    const mDNSu8 *mDNS_DEQLabels[] = { (const mDNSu8 *)"\001b", (const mDNSu8 *)"\002db", (const mDNSu8 *)"\002lb",
    e8821046:	0007c597          	auipc	a1,0x7c
    e882104a:	03a58593          	addi	a1,a1,58 # e889d080 <icmp6_param_problem+0x12>
    e882104e:	850a                	mv	a0,sp
{
    e8821050:	e486                	sd	ra,72(sp)
    e8821052:	e0a2                	sd	s0,64(sp)
    e8821054:	f84a                	sd	s2,48(sp)
    const mDNSu8 *mDNS_DEQLabels[] = { (const mDNSu8 *)"\001b", (const mDNSu8 *)"\002db", (const mDNSu8 *)"\002lb",
    e8821056:	812df0ef          	jal	ra,e8800068 <memcpy>
    if (CountLabels(qname) < 4) { debugf("DomainEnumQuery: question %##s, not enough labels", qname->c); return mDNSfalse; }
    e882105a:	840a                	mv	s0,sp
    e882105c:	8526                	mv	a0,s1
    e882105e:	9e8f20ef          	jal	ra,e8813246 <CountLabels>
    e8821062:	478d                	li	a5,3
    e8821064:	00a7ce63          	blt	a5,a0,e8821080 <DomainEnumQuery+0x44>
    e8821068:	4501                	li	a0,0
}
    e882106a:	60a6                	ld	ra,72(sp)
    e882106c:	6406                	ld	s0,64(sp)
    e882106e:	74e2                	ld	s1,56(sp)
    e8821070:	7942                	ld	s2,48(sp)
    e8821072:	6161                	addi	sp,sp,80
    e8821074:	8082                	ret
        if (SameDomainLabel(mDNS_DEQLabels[i], label)) {debugf("DomainEnumQuery: DEQ %##s, label1 match", qname->c); break;}
    e8821076:	85a6                	mv	a1,s1
    e8821078:	f6ff10ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e882107c:	0421                	addi	s0,s0,8
    e882107e:	e501                	bnez	a0,e8821086 <DomainEnumQuery+0x4a>
    while (mDNS_DEQLabels[i] != (const mDNSu8 *)mDNSNULL)
    e8821080:	6008                	ld	a0,0(s0)
    e8821082:	f975                	bnez	a0,e8821076 <DomainEnumQuery+0x3a>
    e8821084:	b7d5                	j	e8821068 <DomainEnumQuery+0x2c>
    d = (const domainname *)(d->c + 1 + d->c[0]);   // Second Label
    e8821086:	0004c403          	lbu	s0,0(s1)
    if (!SameDomainLabel(label, (const mDNSu8 *)"\007_dns-sd"))
    e882108a:	00084597          	auipc	a1,0x84
    e882108e:	4c658593          	addi	a1,a1,1222 # e88a5550 <end.8789+0x1ea8>
    d = (const domainname *)(d->c + 1 + d->c[0]);   // Second Label
    e8821092:	0405                	addi	s0,s0,1
    e8821094:	00848933          	add	s2,s1,s0
    if (!SameDomainLabel(label, (const mDNSu8 *)"\007_dns-sd"))
    e8821098:	854a                	mv	a0,s2
    e882109a:	f4df10ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e882109e:	d569                	beqz	a0,e8821068 <DomainEnumQuery+0x2c>
    d = (const domainname *)(d->c + 1 + d->c[0]);   // Third Label
    e88210a0:	8084c50b          	lrbu	a0,s1,s0,0
    if (!SameDomainLabel(label, (const mDNSu8 *)"\004_udp"))
    e88210a4:	00089597          	auipc	a1,0x89
    e88210a8:	47c58593          	addi	a1,a1,1148 # e88aa520 <mDNS_DomainTypeNames+0xb70>
    d = (const domainname *)(d->c + 1 + d->c[0]);   // Third Label
    e88210ac:	0505                	addi	a0,a0,1
    if (!SameDomainLabel(label, (const mDNSu8 *)"\004_udp"))
    e88210ae:	954a                	add	a0,a0,s2
    e88210b0:	f37f10ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e88210b4:	2501                	sext.w	a0,a0
    if (CountLabels(qname) < 4) { debugf("DomainEnumQuery: question %##s, not enough labels", qname->c); return mDNSfalse; }
    e88210b6:	00a03533          	snez	a0,a0
    e88210ba:	bf45                	j	e882106a <DomainEnumQuery+0x2e>

00000000e88210bc <SetValidDNSServers>:
{
    e88210bc:	7119                	addi	sp,sp,-128
    e88210be:	f0ca                	sd	s2,96(sp)
    int bestmatchlen = -1, namecount = CountLabels(&question->qname);
    e88210c0:	21458913          	addi	s2,a1,532
{
    e88210c4:	f4a6                	sd	s1,104(sp)
    e88210c6:	84aa                	mv	s1,a0
    int bestmatchlen = -1, namecount = CountLabels(&question->qname);
    e88210c8:	854a                	mv	a0,s2
{
    e88210ca:	fc86                	sd	ra,120(sp)
    e88210cc:	f8a2                	sd	s0,112(sp)
    e88210ce:	ecce                	sd	s3,88(sp)
    e88210d0:	e8d2                	sd	s4,80(sp)
    e88210d2:	e0da                	sd	s6,64(sp)
    e88210d4:	fc5e                	sd	s7,56(sp)
    e88210d6:	f862                	sd	s8,48(sp)
    e88210d8:	8bae                	mv	s7,a1
    e88210da:	f06a                	sd	s10,32(sp)
    e88210dc:	ec6e                	sd	s11,24(sp)
    e88210de:	e4d6                	sd	s5,72(sp)
    e88210e0:	f466                	sd	s9,40(sp)
    int bestmatchlen = -1, namecount = CountLabels(&question->qname);
    e88210e2:	964f20ef          	jal	ra,e8813246 <CountLabels>
    question->validDNSServers = zeroOpaque128;
    e88210e6:	00082417          	auipc	s0,0x82
    e88210ea:	4ca40413          	addi	s0,s0,1226 # e88a35b0 <zeroOpaque128>
    e88210ee:	601c                	ld	a5,0(s0)
    int bestmatchlen = -1, namecount = CountLabels(&question->qname);
    e88210f0:	8a2a                	mv	s4,a0
    DEQuery = DomainEnumQuery(&question->qname);
    e88210f2:	854a                	mv	a0,s2
    question->validDNSServers = zeroOpaque128;
    e88210f4:	16fbb823          	sd	a5,368(s7)
    e88210f8:	641c                	ld	a5,8(s0)
    mDNSu32 timeout = 0;
    e88210fa:	4b01                	li	s6,0
    int bestmatchlen = -1, namecount = CountLabels(&question->qname);
    e88210fc:	59fd                	li	s3,-1
    question->validDNSServers = zeroOpaque128;
    e88210fe:	16fbbc23          	sd	a5,376(s7)
    DEQuery = DomainEnumQuery(&question->qname);
    e8821102:	f3bff0ef          	jal	ra,e882103c <DomainEnumQuery>
    e8821106:	e42a                	sd	a0,8(sp)
    for (curr = m->DNSServers; curr; curr = curr->next)
    e8821108:	678d                	lui	a5,0x3
    e882110a:	94be                	add	s1,s1,a5
    e882110c:	2004bc03          	ld	s8,512(s1)
            LogInfo("SetValidDNSServers: ScopeType[%d] Skipping DNS server %#a (Domain %##s) Interface:[%p] Serviceid:[%d]", curr->scoped, &curr->addr, curr->domain.c, curr->interfaceID, curr->serviceID);
    e8821110:	00086d17          	auipc	s10,0x86
    e8821114:	178d0d13          	addi	s10,s10,376 # e88a7288 <end.8789+0x3be0>
    int index = 0;
    e8821118:	4481                	li	s1,0
        if ((curr->scoped == kScopeInterfaceID && curr->interfaceID == mDNSInterface_Any) || (curr->scoped == kScopeServiceID && curr->serviceID <= 0))
    e882111a:	00082d97          	auipc	s11,0x82
    e882111e:	c46d8d93          	addi	s11,s11,-954 # e88a2d60 <mDNSInterface_Any>
    for (curr = m->DNSServers; curr; curr = curr->next)
    e8821122:	020c1f63          	bnez	s8,e8821160 <SetValidDNSServers+0xa4>
    return ((question->ProxyQuestion || question->ValidatingResponse) ? DEFAULT_UDNSSEC_TIMEOUT : timeout ? timeout : DEFAULT_UDNS_TIMEOUT);
    e8821126:	325bc783          	lbu	a5,805(s7)
    question->noServerResponse = 0;
    e882112a:	180b9023          	sh	zero,384(s7)
    return ((question->ProxyQuestion || question->ValidatingResponse) ? DEFAULT_UDNSSEC_TIMEOUT : timeout ? timeout : DEFAULT_UDNS_TIMEOUT);
    e882112e:	10079f63          	bnez	a5,e882124c <SetValidDNSServers+0x190>
    e8821132:	14abc783          	lbu	a5,330(s7)
    e8821136:	10079b63          	bnez	a5,e882124c <SetValidDNSServers+0x190>
    e882113a:	000b1363          	bnez	s6,e8821140 <SetValidDNSServers+0x84>
    e882113e:	4b79                	li	s6,30
}
    e8821140:	70e6                	ld	ra,120(sp)
    e8821142:	7446                	ld	s0,112(sp)
    e8821144:	855a                	mv	a0,s6
    e8821146:	74a6                	ld	s1,104(sp)
    e8821148:	7906                	ld	s2,96(sp)
    e882114a:	69e6                	ld	s3,88(sp)
    e882114c:	6a46                	ld	s4,80(sp)
    e882114e:	6aa6                	ld	s5,72(sp)
    e8821150:	6b06                	ld	s6,64(sp)
    e8821152:	7be2                	ld	s7,56(sp)
    e8821154:	7c42                	ld	s8,48(sp)
    e8821156:	7ca2                	ld	s9,40(sp)
    e8821158:	7d02                	ld	s10,32(sp)
    e882115a:	6de2                	ld	s11,24(sp)
    e882115c:	6109                	addi	sp,sp,128
    e882115e:	8082                	ret
        if (curr->flags & DNSServer_FlagDelete)
    e8821160:	02cc2783          	lw	a5,44(s8)
    e8821164:	8b85                	andi	a5,a5,1
    e8821166:	ef95                	bnez	a5,e88211a2 <SetValidDNSServers+0xe6>
        if ((curr->scoped == kScopeInterfaceID && curr->interfaceID == mDNSInterface_Any) || (curr->scoped == kScopeServiceID && curr->serviceID <= 0))
    e8821168:	134c2603          	lw	a2,308(s8)
    e882116c:	4785                	li	a5,1
    e882116e:	02f61d63          	bne	a2,a5,e88211a8 <SetValidDNSServers+0xec>
    e8821172:	008c3703          	ld	a4,8(s8)
    e8821176:	000db783          	ld	a5,0(s11)
    e882117a:	02f71e63          	bne	a4,a5,e88211b6 <SetValidDNSServers+0xfa>
            LogInfo("SetValidDNSServers: ScopeType[%d] Skipping DNS server %#a (Domain %##s) Interface:[%p] Serviceid:[%d]", curr->scoped, &curr->addr, curr->domain.c, curr->interfaceID, curr->serviceID);
    e882117e:	000b4797          	auipc	a5,0xb4
    e8821182:	8f678793          	addi	a5,a5,-1802 # e88d4a74 <mDNS_LoggingEnabled>
    e8821186:	439c                	lw	a5,0(a5)
    e8821188:	cf89                	beqz	a5,e88211a2 <SetValidDNSServers+0xe6>
    e882118a:	010c2803          	lw	a6,16(s8)
    e882118e:	008c3783          	ld	a5,8(s8)
    e8821192:	030c0713          	addi	a4,s8,48
    e8821196:	014c0693          	addi	a3,s8,20
    e882119a:	85ea                	mv	a1,s10
    e882119c:	450d                	li	a0,3
    e882119e:	30e0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (curr = m->DNSServers; curr; curr = curr->next)
    e88211a2:	000c3c03          	ld	s8,0(s8)
    e88211a6:	bfb5                	j	e8821122 <SetValidDNSServers+0x66>
        if ((curr->scoped == kScopeInterfaceID && curr->interfaceID == mDNSInterface_Any) || (curr->scoped == kScopeServiceID && curr->serviceID <= 0))
    e88211a8:	4789                	li	a5,2
    e88211aa:	00f61663          	bne	a2,a5,e88211b6 <SetValidDNSServers+0xfa>
    e88211ae:	010c2783          	lw	a5,16(s8)
    e88211b2:	fcf056e3          	blez	a5,e882117e <SetValidDNSServers+0xc2>
        currcount = CountLabels(&curr->domain);
    e88211b6:	030c0a93          	addi	s5,s8,48
    e88211ba:	8556                	mv	a0,s5
    e88211bc:	88af20ef          	jal	ra,e8813246 <CountLabels>
    e88211c0:	8caa                	mv	s9,a0
        if ((!curr->cellIntf || (!DEQuery && !(question->flags & kDNSServiceFlagsDenyCellular))) &&
    e88211c2:	13fc4703          	lbu	a4,319(s8)
    e88211c6:	cb09                	beqz	a4,e88211d8 <SetValidDNSServers+0x11c>
    e88211c8:	67a2                	ld	a5,8(sp)
    e88211ca:	efbd                	bnez	a5,e8821248 <SetValidDNSServers+0x18c>
    e88211cc:	1f8ba703          	lw	a4,504(s7)
    e88211d0:	080007b7          	lui	a5,0x8000
    e88211d4:	8f7d                	and	a4,a4,a5
    e88211d6:	eb2d                	bnez	a4,e8821248 <SetValidDNSServers+0x18c>
    e88211d8:	144c4703          	lbu	a4,324(s8)
    e88211dc:	c719                	beqz	a4,e88211ea <SetValidDNSServers+0x12e>
            (!curr->isExpensive || !(question->flags & kDNSServiceFlagsDenyExpensive)) &&
    e88211de:	1f8ba703          	lw	a4,504(s7)
    e88211e2:	200007b7          	lui	a5,0x20000
    e88211e6:	8f7d                	and	a4,a4,a5
    e88211e8:	e325                	bnez	a4,e8821248 <SetValidDNSServers+0x18c>
            DNSServerMatch(curr, question->InterfaceID, question->ServiceID))
    e88211ea:	1e8ba603          	lw	a2,488(s7)
    e88211ee:	1f0bb583          	ld	a1,496(s7)
    e88211f2:	8562                	mv	a0,s8
    e88211f4:	f9efa0ef          	jal	ra,e881b992 <DNSServerMatch>
            (!curr->isExpensive || !(question->flags & kDNSServiceFlagsDenyExpensive)) &&
    e88211f8:	c921                	beqz	a0,e8821248 <SetValidDNSServers+0x18c>
    if (namecount < newcount || newcount < bestcount) return -1;
    e88211fa:	059a4763          	blt	s4,s9,e8821248 <SetValidDNSServers+0x18c>
    e88211fe:	053cc563          	blt	s9,s3,e8821248 <SetValidDNSServers+0x18c>
    if (SameDomainName(SkipLeadingLabels(name, namecount - newcount), newname))
    e8821202:	419a05bb          	subw	a1,s4,s9
    e8821206:	854a                	mv	a0,s2
    e8821208:	852f20ef          	jal	ra,e881325a <SkipLeadingLabels>
    e882120c:	85d6                	mv	a1,s5
    e882120e:	e3df10ef          	jal	ra,e881304a <SameDomainName>
    e8821212:	c91d                	beqz	a0,e8821248 <SetValidDNSServers+0x18c>
                if (bettermatch)
    e8821214:	01998963          	beq	s3,s9,e8821226 <SetValidDNSServers+0x16a>
                    question->validDNSServers = zeroOpaque128;
    e8821218:	6018                	ld	a4,0(s0)
                    timeout = 0;
    e882121a:	4b01                	li	s6,0
                    question->validDNSServers = zeroOpaque128;
    e882121c:	16ebb823          	sd	a4,368(s7)
    e8821220:	6418                	ld	a4,8(s0)
    e8821222:	16ebbc23          	sd	a4,376(s7)
                bit_set_opaque128(question->validDNSServers, index);
    e8821226:	0054d693          	srli	a3,s1,0x5
                timeout += curr->timeout;
    e882122a:	138c2703          	lw	a4,312(s8)
    e882122e:	04db968b          	addsl	a3,s7,a3,2
                bit_set_opaque128(question->validDNSServers, index);
    e8821232:	1706a603          	lw	a2,368(a3)
    e8821236:	4785                	li	a5,1
                timeout += curr->timeout;
    e8821238:	01670b3b          	addw	s6,a4,s6
                bit_set_opaque128(question->validDNSServers, index);
    e882123c:	0097973b          	sllw	a4,a5,s1
    e8821240:	8f51                	or	a4,a4,a2
    e8821242:	16e6a823          	sw	a4,368(a3)
    e8821246:	89e6                	mv	s3,s9
        index++;
    e8821248:	2485                	addiw	s1,s1,1
    e882124a:	bfa1                	j	e88211a2 <SetValidDNSServers+0xe6>
    return ((question->ProxyQuestion || question->ValidatingResponse) ? DEFAULT_UDNSSEC_TIMEOUT : timeout ? timeout : DEFAULT_UDNS_TIMEOUT);
    e882124c:	4b29                	li	s6,10
    e882124e:	bdcd                	j	e8821140 <SetValidDNSServers+0x84>

00000000e8821250 <GetServerForQuestion>:
{
    e8821250:	7175                	addi	sp,sp,-144
    if ((InterfaceID == mDNSInterface_Unicast) || (InterfaceID == mDNSInterface_LocalOnly))
    e8821252:	00082797          	auipc	a5,0x82
    e8821256:	b2e78793          	addi	a5,a5,-1234 # e88a2d80 <mDNSInterface_Unicast>
{
    e882125a:	e122                	sd	s0,128(sp)
    e882125c:	f0d2                	sd	s4,96(sp)
    e882125e:	ecd6                	sd	s5,88(sp)
    e8821260:	e506                	sd	ra,136(sp)
    e8821262:	fca6                	sd	s1,120(sp)
    e8821264:	f8ca                	sd	s2,112(sp)
    e8821266:	f4ce                	sd	s3,104(sp)
    e8821268:	e8da                	sd	s6,80(sp)
    if ((InterfaceID == mDNSInterface_Unicast) || (InterfaceID == mDNSInterface_LocalOnly))
    e882126a:	639c                	ld	a5,0(a5)
    mDNSInterfaceID InterfaceID = question->InterfaceID;
    e882126c:	1f05b983          	ld	s3,496(a1)
{
    e8821270:	8aaa                	mv	s5,a0
    e8821272:	842e                	mv	s0,a1
    const domainname *name = &question->qname;
    e8821274:	21458a13          	addi	s4,a1,532
    if ((InterfaceID == mDNSInterface_Unicast) || (InterfaceID == mDNSInterface_LocalOnly))
    e8821278:	11378263          	beq	a5,s3,e882137c <GetServerForQuestion+0x12c>
    e882127c:	00082797          	auipc	a5,0x82
    e8821280:	af478793          	addi	a5,a5,-1292 # e88a2d70 <mDNSInterface_LocalOnly>
    e8821284:	639c                	ld	a5,0(a5)
    e8821286:	0f378b63          	beq	a5,s3,e882137c <GetServerForQuestion+0x12c>
    char *ifname = mDNSNULL;    // for logging purposes only
    e882128a:	4901                	li	s2,0
    if (InterfaceID)
    e882128c:	00098663          	beqz	s3,e8821298 <GetServerForQuestion+0x48>
        ifname = InterfaceNameForID(m, InterfaceID);
    e8821290:	85ce                	mv	a1,s3
    e8821292:	87ffd0ef          	jal	ra,e881eb10 <InterfaceNameForID>
    e8821296:	892a                	mv	s2,a0
    if (!mDNSOpaque128IsZero(&question->validDNSServers))
    e8821298:	17442703          	lw	a4,372(s0)
    e882129c:	17042783          	lw	a5,368(s0)
    e88212a0:	000b3b17          	auipc	s6,0xb3
    e88212a4:	7d4b0b13          	addi	s6,s6,2004 # e88d4a74 <mDNS_LoggingEnabled>
    e88212a8:	8fd9                	or	a5,a5,a4
    e88212aa:	17842703          	lw	a4,376(s0)
    e88212ae:	8fd9                	or	a5,a5,a4
    e88212b0:	17c42703          	lw	a4,380(s0)
    e88212b4:	8fd9                	or	a5,a5,a4
    e88212b6:	2781                	sext.w	a5,a5
    e88212b8:	c7e9                	beqz	a5,e8821382 <GetServerForQuestion+0x132>
        curmatch = GetBestServer(m, name, InterfaceID, question->ServiceID, question->validDNSServers, &currindex, mDNSfalse);
    e88212ba:	17843783          	ld	a5,376(s0)
    e88212be:	1e842683          	lw	a3,488(s0)
    e88212c2:	17043703          	ld	a4,368(s0)
    e88212c6:	4881                	li	a7,0
    e88212c8:	04c10813          	addi	a6,sp,76
    e88212cc:	864e                	mv	a2,s3
    e88212ce:	85d2                	mv	a1,s4
    e88212d0:	8556                	mv	a0,s5
    e88212d2:	fd8fc0ef          	jal	ra,e881daaa <GetBestServer>
    e88212d6:	84aa                	mv	s1,a0
        if (currindex != -1)
    e88212d8:	46b6                	lw	a3,76(sp)
    e88212da:	57fd                	li	a5,-1
    e88212dc:	02f68063          	beq	a3,a5,e88212fc <GetServerForQuestion+0xac>
            bit_clr_opaque128(question->validDNSServers, currindex);
    e88212e0:	0056d713          	srli	a4,a3,0x5
    e88212e4:	04e4170b          	addsl	a4,s0,a4,2
    e88212e8:	4785                	li	a5,1
    e88212ea:	00d797bb          	sllw	a5,a5,a3
    e88212ee:	17072683          	lw	a3,368(a4)
    e88212f2:	fff7c793          	not	a5,a5
    e88212f6:	8ff5                	and	a5,a5,a3
    e88212f8:	16f72823          	sw	a5,368(a4)
    if (curmatch != mDNSNULL)
    e88212fc:	c0d9                	beqz	s1,e8821382 <GetServerForQuestion+0x132>
        LogInfo("GetServerForQuestion: %p DNS server (%p) %#a:%d (Penalty Time Left %d) (Scope %s:%p:%d) found for name %##s (%s)",
    e88212fe:	000b2783          	lw	a5,0(s6)
    e8821302:	c3b5                	beqz	a5,e8821366 <GetServerForQuestion+0x116>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8821304:	0284c783          	lbu	a5,40(s1)
    e8821308:	0294c683          	lbu	a3,41(s1)
    e882130c:	1304a803          	lw	a6,304(s1)
    e8821310:	0087979b          	slliw	a5,a5,0x8
    e8821314:	01448713          	addi	a4,s1,20
    e8821318:	8fd5                	or	a5,a5,a3
    e882131a:	00080663          	beqz	a6,e8821326 <GetServerForQuestion+0xd6>
    e882131e:	240aa683          	lw	a3,576(s5)
    e8821322:	40d8083b          	subw	a6,a6,a3
    e8821326:	00091663          	bnez	s2,e8821332 <GetServerForQuestion+0xe2>
    e882132a:	00084917          	auipc	s2,0x84
    e882132e:	48690913          	addi	s2,s2,1158 # e88a57b0 <end.8789+0x2108>
    e8821332:	31445503          	lhu	a0,788(s0)
    e8821336:	fc42                	sd	a6,56(sp)
    e8821338:	f83e                	sd	a5,48(sp)
    e882133a:	f43a                	sd	a4,40(sp)
    e882133c:	1e842a83          	lw	s5,488(s0)
    e8821340:	921f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e8821344:	ec2a                	sd	a0,24(sp)
    e8821346:	7862                	ld	a6,56(sp)
    e8821348:	77c2                	ld	a5,48(sp)
    e882134a:	7722                	ld	a4,40(sp)
    e882134c:	e852                	sd	s4,16(sp)
    e882134e:	e456                	sd	s5,8(sp)
    e8821350:	e04e                	sd	s3,0(sp)
    e8821352:	88ca                	mv	a7,s2
    e8821354:	86a6                	mv	a3,s1
    e8821356:	8622                	mv	a2,s0
    e8821358:	00084597          	auipc	a1,0x84
    e882135c:	46058593          	addi	a1,a1,1120 # e88a57b8 <end.8789+0x2110>
    e8821360:	450d                	li	a0,3
    e8821362:	14a0e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8821366:	60aa                	ld	ra,136(sp)
    e8821368:	640a                	ld	s0,128(sp)
    e882136a:	8526                	mv	a0,s1
    e882136c:	7946                	ld	s2,112(sp)
    e882136e:	74e6                	ld	s1,120(sp)
    e8821370:	79a6                	ld	s3,104(sp)
    e8821372:	7a06                	ld	s4,96(sp)
    e8821374:	6ae6                	ld	s5,88(sp)
    e8821376:	6b46                	ld	s6,80(sp)
    e8821378:	6149                	addi	sp,sp,144
    e882137a:	8082                	ret
        InterfaceID = mDNSNULL;
    e882137c:	4981                	li	s3,0
    char *ifname = mDNSNULL;    // for logging purposes only
    e882137e:	4901                	li	s2,0
    e8821380:	bf21                	j	e8821298 <GetServerForQuestion+0x48>
        LogInfo("GetServerForQuestion: %p no DNS server (Scope %s:%p:%d) found for name %##s (%s)",
    e8821382:	000b2783          	lw	a5,0(s6)
    e8821386:	4481                	li	s1,0
    e8821388:	dff9                	beqz	a5,e8821366 <GetServerForQuestion+0x116>
    e882138a:	00091663          	bnez	s2,e8821396 <GetServerForQuestion+0x146>
    e882138e:	00084917          	auipc	s2,0x84
    e8821392:	42290913          	addi	s2,s2,1058 # e88a57b0 <end.8789+0x2108>
    e8821396:	1e842783          	lw	a5,488(s0)
    e882139a:	31445503          	lhu	a0,788(s0)
    e882139e:	4481                	li	s1,0
    e88213a0:	f43e                	sd	a5,40(sp)
    e88213a2:	8bff40ef          	jal	ra,e8815c60 <DNSTypeName>
    e88213a6:	88aa                	mv	a7,a0
    e88213a8:	77a2                	ld	a5,40(sp)
    e88213aa:	8852                	mv	a6,s4
    e88213ac:	874e                	mv	a4,s3
    e88213ae:	86ca                	mv	a3,s2
    e88213b0:	8622                	mv	a2,s0
    e88213b2:	00084597          	auipc	a1,0x84
    e88213b6:	47e58593          	addi	a1,a1,1150 # e88a5830 <end.8789+0x2188>
    e88213ba:	450d                	li	a0,3
    e88213bc:	0f00e0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88213c0:	b75d                	j	e8821366 <GetServerForQuestion+0x116>

00000000e88213c2 <mDNS_StopQuery_internal>:
{
    e88213c2:	7159                	addi	sp,sp,-112
    e88213c4:	f0a2                	sd	s0,96(sp)
    e88213c6:	e8ca                	sd	s2,80(sp)
    e88213c8:	e4ce                	sd	s3,72(sp)
    e88213ca:	fc56                	sd	s5,56(sp)
    e88213cc:	f486                	sd	ra,104(sp)
    e88213ce:	eca6                	sd	s1,88(sp)
    e88213d0:	e0d2                	sd	s4,64(sp)
    e88213d2:	f85a                	sd	s6,48(sp)
    e88213d4:	f45e                	sd	s7,40(sp)
    e88213d6:	f062                	sd	s8,32(sp)
    e88213d8:	ec66                	sd	s9,24(sp)
    e88213da:	842e                	mv	s0,a1
    CacheGroup *cg = CacheGroupForName(m, question->qnamehash, &question->qname);
    e88213dc:	21458993          	addi	s3,a1,532
    e88213e0:	458c                	lw	a1,8(a1)
    e88213e2:	864e                	mv	a2,s3
{
    e88213e4:	892a                	mv	s2,a0
    CacheGroup *cg = CacheGroupForName(m, question->qnamehash, &question->qname);
    e88213e6:	a62fd0ef          	jal	ra,e881e648 <CacheGroupForName>
    e88213ea:	8aaa                	mv	s5,a0
    if (LocalOnlyOrP2PInterface(question->InterfaceID))
    e88213ec:	00082717          	auipc	a4,0x82
    e88213f0:	98470713          	addi	a4,a4,-1660 # e88a2d70 <mDNSInterface_LocalOnly>
    e88213f4:	1f043783          	ld	a5,496(s0)
    e88213f8:	6318                	ld	a4,0(a4)
    e88213fa:	1ae78363          	beq	a5,a4,e88215a0 <mDNS_StopQuery_internal+0x1de>
    e88213fe:	00082717          	auipc	a4,0x82
    e8821402:	97a70713          	addi	a4,a4,-1670 # e88a2d78 <mDNSInterface_P2P>
    e8821406:	6318                	ld	a4,0(a4)
    e8821408:	18e78c63          	beq	a5,a4,e88215a0 <mDNS_StopQuery_internal+0x1de>
    e882140c:	00082717          	auipc	a4,0x82
    e8821410:	95c70713          	addi	a4,a4,-1700 # e88a2d68 <mDNSInterface_BLE>
    e8821414:	6318                	ld	a4,0(a4)
    e8821416:	18e78563          	beq	a5,a4,e88215a0 <mDNS_StopQuery_internal+0x1de>
    DNSQuestion **qp = &m->Questions;
    e882141a:	2b890793          	addi	a5,s2,696
    while (*qp && *qp != question) qp=&(*qp)->next;
    e882141e:	6398                	ld	a4,0(a5)
    e8821420:	3e070763          	beqz	a4,e882180e <mDNS_StopQuery_internal+0x44c>
    e8821424:	18871163          	bne	a4,s0,e88215a6 <mDNS_StopQuery_internal+0x1e4>
    if (*qp) *qp = (*qp)->next;
    e8821428:	6018                	ld	a4,0(s0)
    e882142a:	e398                	sd	a4,0(a5)
    if (question->DuplicateOf)
    e882142c:	683c                	ld	a5,80(s0)
    e882142e:	16079e63          	bnez	a5,e88215aa <mDNS_StopQuery_internal+0x1e8>
    for (q = m->Questions; q; q=q->next)        // Scan our list of questions
    e8821432:	2b893483          	ld	s1,696(s2)
                if (question->state == LLQ_Established)
    e8821436:	4b0d                	li	s6,3
                    LogInfo("UpdateQuestionDuplicates transferred LLQ state for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8821438:	000b3a17          	auipc	s4,0xb3
    e882143c:	63ca0a13          	addi	s4,s4,1596 # e88d4a74 <mDNS_LoggingEnabled>
    e8821440:	0008ab97          	auipc	s7,0x8a
    e8821444:	d48b8b93          	addi	s7,s7,-696 # e88ab188 <mDNS_DomainTypeNames+0x17d8>
                if (question->tcp) LogInfo("UpdateQuestionDuplicates did not transfer tcp pointer");
    e8821448:	0008ac17          	auipc	s8,0x8a
    e882144c:	d08c0c13          	addi	s8,s8,-760 # e88ab150 <mDNS_DomainTypeNames+0x17a0>
                    LogInfo("UpdateQuestionDuplicates transferred nta pointer for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8821450:	0008ac97          	auipc	s9,0x8a
    e8821454:	cc0c8c93          	addi	s9,s9,-832 # e88ab110 <mDNS_DomainTypeNames+0x1760>
    for (q = m->Questions; q; q=q->next)        // Scan our list of questions
    e8821458:	18048863          	beqz	s1,e88215e8 <mDNS_StopQuery_internal+0x226>
        if (q->DuplicateOf == question)         // To see if any questions were referencing this as their duplicate
    e882145c:	68b8                	ld	a4,80(s1)
    e882145e:	12e41f63          	bne	s0,a4,e882159c <mDNS_StopQuery_internal+0x1da>
            q->DuplicateOf = first;
    e8821462:	e8bc                	sd	a5,80(s1)
            if (!first)
    e8821464:	12079c63          	bnez	a5,e882159c <mDNS_StopQuery_internal+0x1da>
                q->LastQTime         = question->LastQTime;
    e8821468:	481c                	lw	a5,16(s0)
    e882146a:	c89c                	sw	a5,16(s1)
                q->ThisQInterval     = question->ThisQInterval;
    e882146c:	485c                	lw	a5,20(s0)
    e882146e:	c8dc                	sw	a5,20(s1)
                q->ExpectUnicastResp = question->ExpectUnicastResp;
    e8821470:	4c1c                	lw	a5,24(s0)
    e8821472:	cc9c                	sw	a5,24(s1)
                q->LastAnswerPktNum  = question->LastAnswerPktNum;
    e8821474:	4c5c                	lw	a5,28(s0)
    e8821476:	ccdc                	sw	a5,28(s1)
                q->RecentAnswerPkts  = question->RecentAnswerPkts;
    e8821478:	501c                	lw	a5,32(s0)
    e882147a:	d09c                	sw	a5,32(s1)
                q->RequestUnicast    = question->RequestUnicast;
    e882147c:	13442783          	lw	a5,308(s0)
    e8821480:	12f4aa23          	sw	a5,308(s1)
                q->LastQTxTime       = question->LastQTxTime;
    e8821484:	13842783          	lw	a5,312(s0)
    e8821488:	12f4ac23          	sw	a5,312(s1)
                q->CNAMEReferrals    = question->CNAMEReferrals;
    e882148c:	13c42783          	lw	a5,316(s0)
    e8821490:	12f4ae23          	sw	a5,316(s1)
                q->nta               = question->nta;
    e8821494:	18843783          	ld	a5,392(s0)
    e8821498:	18f4b423          	sd	a5,392(s1)
                q->servAddr          = question->servAddr;
    e882149c:	19043683          	ld	a3,400(s0)
    e88214a0:	18d4b823          	sd	a3,400(s1)
    e88214a4:	19843683          	ld	a3,408(s0)
    e88214a8:	18d4bc23          	sd	a3,408(s1)
    e88214ac:	1a042703          	lw	a4,416(s0)
    e88214b0:	1ae4a023          	sw	a4,416(s1)
                q->servPort          = question->servPort;
    e88214b4:	1a445783          	lhu	a5,420(s0)
    e88214b8:	1af49223          	sh	a5,420(s1)
                q->qDNSServer        = question->qDNSServer;
    e88214bc:	16843783          	ld	a5,360(s0)
    e88214c0:	16f4b423          	sd	a5,360(s1)
                q->validDNSServers   = question->validDNSServers;
    e88214c4:	17043783          	ld	a5,368(s0)
    e88214c8:	16f4b823          	sd	a5,368(s1)
    e88214cc:	17843783          	ld	a5,376(s0)
    e88214d0:	16f4bc23          	sd	a5,376(s1)
                q->unansweredQueries = question->unansweredQueries;
    e88214d4:	18444783          	lbu	a5,388(s0)
    e88214d8:	18f48223          	sb	a5,388(s1)
                q->noServerResponse  = question->noServerResponse;
    e88214dc:	18045783          	lhu	a5,384(s0)
    e88214e0:	18f49023          	sh	a5,384(s1)
                q->triedAllServersOnce = question->triedAllServersOnce;
    e88214e4:	18245783          	lhu	a5,386(s0)
    e88214e8:	18f49123          	sh	a5,386(s1)
                q->TargetQID         = question->TargetQID;
    e88214ec:	21245783          	lhu	a5,530(s0)
    e88214f0:	20f49923          	sh	a5,530(s1)
                q->LocalSocket       = question->LocalSocket;
    e88214f4:	16043783          	ld	a5,352(s0)
    e88214f8:	16f4b023          	sd	a5,352(s1)
                q->state             = question->state;
    e88214fc:	1b444783          	lbu	a5,436(s0)
    e8821500:	1af48a23          	sb	a5,436(s1)
                q->ReqLease          = question->ReqLease;
    e8821504:	1b842783          	lw	a5,440(s0)
    e8821508:	1af4ac23          	sw	a5,440(s1)
                q->expire            = question->expire;
    e882150c:	1bc42783          	lw	a5,444(s0)
    e8821510:	1af4ae23          	sw	a5,444(s1)
                q->ntries            = question->ntries;
    e8821514:	1c041783          	lh	a5,448(s0)
    e8821518:	1cf49023          	sh	a5,448(s1)
                q->id                = question->id;
    e882151c:	1dc43783          	ld	a5,476(s0)
    e8821520:	1cf4be23          	sd	a5,476(s1)
                question->LocalSocket = mDNSNULL;
    e8821524:	16043023          	sd	zero,352(s0)
                question->nta        = mDNSNULL;    // If we've got a GetZoneData in progress, transfer it to the newly active question
    e8821528:	18043423          	sd	zero,392(s0)
                if (q->nta)
    e882152c:	1884b783          	ld	a5,392(s1)
    e8821530:	c39d                	beqz	a5,e8821556 <mDNS_StopQuery_internal+0x194>
                    LogInfo("UpdateQuestionDuplicates transferred nta pointer for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8821532:	000a2783          	lw	a5,0(s4)
    e8821536:	cf81                	beqz	a5,e882154e <mDNS_StopQuery_internal+0x18c>
    e8821538:	3144d503          	lhu	a0,788(s1)
    e882153c:	f24f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e8821540:	86aa                	mv	a3,a0
    e8821542:	21448613          	addi	a2,s1,532
    e8821546:	85e6                	mv	a1,s9
    e8821548:	450d                	li	a0,3
    e882154a:	7630d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    q->nta->ZoneDataContext = q;
    e882154e:	1884b783          	ld	a5,392(s1)
    e8821552:	3297bc23          	sd	s1,824(a5)
                if (question->tcp) LogInfo("UpdateQuestionDuplicates did not transfer tcp pointer");
    e8821556:	1a843783          	ld	a5,424(s0)
    e882155a:	cb81                	beqz	a5,e882156a <mDNS_StopQuery_internal+0x1a8>
    e882155c:	000a2783          	lw	a5,0(s4)
    e8821560:	c789                	beqz	a5,e882156a <mDNS_StopQuery_internal+0x1a8>
    e8821562:	85e2                	mv	a1,s8
    e8821564:	450d                	li	a0,3
    e8821566:	7470d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (question->state == LLQ_Established)
    e882156a:	1b444783          	lbu	a5,436(s0)
    e882156e:	03679263          	bne	a5,s6,e8821592 <mDNS_StopQuery_internal+0x1d0>
                    LogInfo("UpdateQuestionDuplicates transferred LLQ state for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8821572:	000a2783          	lw	a5,0(s4)
    e8821576:	cf81                	beqz	a5,e882158e <mDNS_StopQuery_internal+0x1cc>
    e8821578:	3144d503          	lhu	a0,788(s1)
    e882157c:	ee4f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e8821580:	86aa                	mv	a3,a0
    e8821582:	21448613          	addi	a2,s1,532
    e8821586:	85de                	mv	a1,s7
    e8821588:	450d                	li	a0,3
    e882158a:	7230d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    question->state = 0;    // Must zero question->state, or mDNS_StopQuery_internal will clean up and cancel our LLQ from the server
    e882158e:	1a040a23          	sb	zero,436(s0)
                SetNextQueryTime(m,q);
    e8821592:	85a6                	mv	a1,s1
    e8821594:	854a                	mv	a0,s2
    e8821596:	cd7fc0ef          	jal	ra,e881e26c <SetNextQueryTime>
    e882159a:	87a6                	mv	a5,s1
    for (q = m->Questions; q; q=q->next)        // Scan our list of questions
    e882159c:	6084                	ld	s1,0(s1)
    e882159e:	bd6d                	j	e8821458 <mDNS_StopQuery_internal+0x96>
        qp = &m->LocalOnlyQuestions;
    e88215a0:	2d090793          	addi	a5,s2,720
    e88215a4:	bdad                	j	e882141e <mDNS_StopQuery_internal+0x5c>
    while (*qp && *qp != question) qp=&(*qp)->next;
    e88215a6:	87ba                	mv	a5,a4
    e88215a8:	bd9d                	j	e882141e <mDNS_StopQuery_internal+0x5c>
        LogInfo("UpdateQuestionDuplicates: question %p %##s (%s) duplicate of %p %##s (%s)",
    e88215aa:	000b3797          	auipc	a5,0xb3
    e88215ae:	4ca78793          	addi	a5,a5,1226 # e88d4a74 <mDNS_LoggingEnabled>
    e88215b2:	439c                	lw	a5,0(a5)
    e88215b4:	cb95                	beqz	a5,e88215e8 <mDNS_StopQuery_internal+0x226>
    e88215b6:	31445503          	lhu	a0,788(s0)
    e88215ba:	ea6f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e88215be:	e42a                	sd	a0,8(sp)
    e88215c0:	683c                	ld	a5,80(s0)
    e88215c2:	3147d503          	lhu	a0,788(a5)
    e88215c6:	e03e                	sd	a5,0(sp)
    e88215c8:	e98f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e88215cc:	88aa                	mv	a7,a0
    e88215ce:	6782                	ld	a5,0(sp)
    e88215d0:	6722                	ld	a4,8(sp)
    e88215d2:	86ce                	mv	a3,s3
    e88215d4:	21478813          	addi	a6,a5,532
    e88215d8:	8622                	mv	a2,s0
    e88215da:	0008a597          	auipc	a1,0x8a
    e88215de:	ae658593          	addi	a1,a1,-1306 # e88ab0c0 <mDNS_DomainTypeNames+0x1710>
    e88215e2:	450d                	li	a0,3
    e88215e4:	6c90d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    question->ThisQInterval = -1;
    e88215e8:	57fd                	li	a5,-1
    e88215ea:	c85c                	sw	a5,20(s0)
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e88215ec:	160a9963          	bnez	s5,e882175e <mDNS_StopQuery_internal+0x39c>
    if (m->CurrentQuestion == question)
    e88215f0:	2c893783          	ld	a5,712(s2)
    e88215f4:	00879563          	bne	a5,s0,e88215fe <mDNS_StopQuery_internal+0x23c>
        m->CurrentQuestion = question->next;
    e88215f8:	601c                	ld	a5,0(s0)
    e88215fa:	2cf93423          	sd	a5,712(s2)
    if (m->NewQuestions == question)
    e88215fe:	2c093783          	ld	a5,704(s2)
    e8821602:	00879563          	bne	a5,s0,e882160c <mDNS_StopQuery_internal+0x24a>
        m->NewQuestions = question->next;
    e8821606:	601c                	ld	a5,0(s0)
    e8821608:	2cf93023          	sd	a5,704(s2)
    if (m->NewLocalOnlyQuestions == question) m->NewLocalOnlyQuestions = question->next;
    e882160c:	2d893783          	ld	a5,728(s2)
    e8821610:	00879563          	bne	a5,s0,e882161a <mDNS_StopQuery_internal+0x258>
    e8821614:	601c                	ld	a5,0(s0)
    e8821616:	2cf93c23          	sd	a5,728(s2)
    if (m->RestartQuestion == question)
    e882161a:	2e093783          	ld	a5,736(s2)
    e882161e:	02879263          	bne	a5,s0,e8821642 <mDNS_StopQuery_internal+0x280>
        LogMsg("mDNS_StopQuery_internal: Just deleted the current restart question: %##s (%s)",
    e8821622:	31445503          	lhu	a0,788(s0)
    e8821626:	e3af40ef          	jal	ra,e8815c60 <DNSTypeName>
    e882162a:	86aa                	mv	a3,a0
    e882162c:	864e                	mv	a2,s3
    e882162e:	0008a597          	auipc	a1,0x8a
    e8821632:	be258593          	addi	a1,a1,-1054 # e88ab210 <mDNS_DomainTypeNames+0x1860>
    e8821636:	4501                	li	a0,0
    e8821638:	6750d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->RestartQuestion = question->next;
    e882163c:	601c                	ld	a5,0(s0)
    e882163e:	2ef93023          	sd	a5,736(s2)
    if (m->ValidationQuestion == question)
    e8821642:	2e893783          	ld	a5,744(s2)
    e8821646:	02879863          	bne	a5,s0,e8821676 <mDNS_StopQuery_internal+0x2b4>
        LogInfo("mDNS_StopQuery_internal: Just deleted the current Validation question: %##s (%s)",
    e882164a:	000b3797          	auipc	a5,0xb3
    e882164e:	42a78793          	addi	a5,a5,1066 # e88d4a74 <mDNS_LoggingEnabled>
    e8821652:	439c                	lw	a5,0(a5)
    e8821654:	cf91                	beqz	a5,e8821670 <mDNS_StopQuery_internal+0x2ae>
    e8821656:	31445503          	lhu	a0,788(s0)
    e882165a:	e06f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e882165e:	86aa                	mv	a3,a0
    e8821660:	864e                	mv	a2,s3
    e8821662:	0008a597          	auipc	a1,0x8a
    e8821666:	bfe58593          	addi	a1,a1,-1026 # e88ab260 <mDNS_DomainTypeNames+0x18b0>
    e882166a:	450d                	li	a0,3
    e882166c:	6410d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->ValidationQuestion = question->next;
    e8821670:	601c                	ld	a5,0(s0)
    e8821672:	2ef93423          	sd	a5,744(s2)
    if (question->tcp) { DisposeTCPConn(question->tcp); question->tcp = mDNSNULL; }
    e8821676:	1a843503          	ld	a0,424(s0)
    question->next = mDNSNULL;
    e882167a:	00043023          	sd	zero,0(s0)
    if (question->tcp) { DisposeTCPConn(question->tcp); question->tcp = mDNSNULL; }
    e882167e:	c509                	beqz	a0,e8821688 <mDNS_StopQuery_internal+0x2c6>
    e8821680:	062120ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8821684:	1a043423          	sd	zero,424(s0)
    if (question->LocalSocket) { mDNSPlatformUDPClose(question->LocalSocket); question->LocalSocket = mDNSNULL; }
    e8821688:	16043503          	ld	a0,352(s0)
    e882168c:	c509                	beqz	a0,e8821696 <mDNS_StopQuery_internal+0x2d4>
    e882168e:	2860e0ef          	jal	ra,e882f914 <mDNSPlatformUDPClose>
    e8821692:	16043023          	sd	zero,352(s0)
    if (!mDNSOpaque16IsZero(question->TargetQID) && question->LongLived)
    e8821696:	21245783          	lhu	a5,530(s0)
    e882169a:	cba9                	beqz	a5,e88216ec <mDNS_StopQuery_internal+0x32a>
    e882169c:	31844783          	lbu	a5,792(s0)
    e88216a0:	c7b1                	beqz	a5,e88216ec <mDNS_StopQuery_internal+0x32a>
        for (q = m->Questions; q; q=q->next)
    e88216a2:	2b893783          	ld	a5,696(s2)
    e88216a6:	12079363          	bnez	a5,e88217cc <mDNS_StopQuery_internal+0x40a>
            if (!m->LLQNAT.clientCallback)       // Should never happen, but just in case...
    e88216aa:	6791                	lui	a5,0x4
    e88216ac:	97ca                	add	a5,a5,s2
    e88216ae:	be07b783          	ld	a5,-1056(a5) # 3be0 <memcmp-0xe87fc420>
    e88216b2:	12079663          	bnez	a5,e88217de <mDNS_StopQuery_internal+0x41c>
                LogMsg("mDNS_StopQuery ERROR LLQNAT.clientCallback NULL");
    e88216b6:	0008a597          	auipc	a1,0x8a
    e88216ba:	c0258593          	addi	a1,a1,-1022 # e88ab2b8 <mDNS_DomainTypeNames+0x1908>
    e88216be:	4501                	li	a0,0
    e88216c0:	5ed0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (question->state == LLQ_Established)
    e88216c4:	1b444703          	lbu	a4,436(s0)
    e88216c8:	478d                	li	a5,3
    e88216ca:	02f71163          	bne	a4,a5,e88216ec <mDNS_StopQuery_internal+0x32a>
            question->ReqLease = 0;
    e88216ce:	1a042c23          	sw	zero,440(s0)
            sendLLQRefresh(m, question);
    e88216d2:	85a2                	mv	a1,s0
    e88216d4:	854a                	mv	a0,s2
    e88216d6:	0e0150ef          	jal	ra,e88367b6 <sendLLQRefresh>
            if (question->tcp)
    e88216da:	1a843783          	ld	a5,424(s0)
    e88216de:	c799                	beqz	a5,e88216ec <mDNS_StopQuery_internal+0x32a>
                question->tcp->question = mDNSNULL;
    e88216e0:	6709                	lui	a4,0x2
    e88216e2:	97ba                	add	a5,a5,a4
    e88216e4:	3007b823          	sd	zero,784(a5)
                question->tcp           = mDNSNULL;
    e88216e8:	1a043423          	sd	zero,424(s0)
    if (question->nta) { CancelGetZoneData(m, question->nta); question->nta = mDNSNULL; }
    e88216ec:	18843583          	ld	a1,392(s0)
    e88216f0:	c591                	beqz	a1,e88216fc <mDNS_StopQuery_internal+0x33a>
    e88216f2:	854a                	mv	a0,s2
    e88216f4:	140000ef          	jal	ra,e8821834 <CancelGetZoneData>
    e88216f8:	18043423          	sd	zero,392(s0)
    if (question->ValidationRequired && question->DNSSECAuthInfo)
    e88216fc:	32444783          	lbu	a5,804(s0)
    e8821700:	cb95                	beqz	a5,e8821734 <mDNS_StopQuery_internal+0x372>
    e8821702:	15043783          	ld	a5,336(s0)
    e8821706:	c79d                	beqz	a5,e8821734 <mDNS_StopQuery_internal+0x372>
        LogInfo("mDNS_StopQuery_internal: freeing DNSSECAuthInfo %##s", question->qname.c);
    e8821708:	000b3797          	auipc	a5,0xb3
    e882170c:	36c78793          	addi	a5,a5,876 # e88d4a74 <mDNS_LoggingEnabled>
    e8821710:	439c                	lw	a5,0(a5)
    e8821712:	cb89                	beqz	a5,e8821724 <mDNS_StopQuery_internal+0x362>
    e8821714:	864e                	mv	a2,s3
    e8821716:	0008a597          	auipc	a1,0x8a
    e882171a:	be258593          	addi	a1,a1,-1054 # e88ab2f8 <mDNS_DomainTypeNames+0x1948>
    e882171e:	450d                	li	a0,3
    e8821720:	58d0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        question->DAIFreeCallback(m, question->DNSSECAuthInfo);
    e8821724:	15843783          	ld	a5,344(s0)
    e8821728:	15043583          	ld	a1,336(s0)
    e882172c:	854a                	mv	a0,s2
    e882172e:	9782                	jalr	a5
        question->DNSSECAuthInfo = mDNSNULL;
    e8821730:	14043823          	sd	zero,336(s0)
    if (question->AnonInfo)
    e8821734:	7028                	ld	a0,96(s0)
    return(mStatus_NoError);
    e8821736:	4481                	li	s1,0
    if (question->AnonInfo)
    e8821738:	c509                	beqz	a0,e8821742 <mDNS_StopQuery_internal+0x380>
        FreeAnonInfo(question->AnonInfo);
    e882173a:	851f80ef          	jal	ra,e8819f8a <FreeAnonInfo>
        question->AnonInfo = mDNSNULL;
    e882173e:	06043023          	sd	zero,96(s0)
}
    e8821742:	70a6                	ld	ra,104(sp)
    e8821744:	7406                	ld	s0,96(sp)
    e8821746:	8526                	mv	a0,s1
    e8821748:	6946                	ld	s2,80(sp)
    e882174a:	64e6                	ld	s1,88(sp)
    e882174c:	69a6                	ld	s3,72(sp)
    e882174e:	6a06                	ld	s4,64(sp)
    e8821750:	7ae2                	ld	s5,56(sp)
    e8821752:	7b42                	ld	s6,48(sp)
    e8821754:	7ba2                	ld	s7,40(sp)
    e8821756:	7c02                	ld	s8,32(sp)
    e8821758:	6ce2                	ld	s9,24(sp)
    e882175a:	6165                	addi	sp,sp,112
    e882175c:	8082                	ret
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e882175e:	010aba03          	ld	s4,16(s5)
    e8821762:	e80a07e3          	beqz	s4,e88215f0 <mDNS_StopQuery_internal+0x22e>
        if (rr->CRActiveQuestion == question)
    e8821766:	060a3783          	ld	a5,96(s4)
    e882176a:	02879563          	bne	a5,s0,e8821794 <mDNS_StopQuery_internal+0x3d2>
            for (q = m->Questions; q && (q != m->NewQuestions); q = q->next)
    e882176e:	2b893483          	ld	s1,696(s2)
            DNSQuestion *replacement = mDNSNULL;
    e8821772:	4a81                	li	s5,0
                if (!q->DuplicateOf && !QuerySuppressed(q) && ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8821774:	008a0b13          	addi	s6,s4,8
            for (q = m->Questions; q && (q != m->NewQuestions); q = q->next)
    e8821778:	c489                	beqz	s1,e8821782 <mDNS_StopQuery_internal+0x3c0>
    e882177a:	2c093783          	ld	a5,704(s2)
    e882177e:	00979e63          	bne	a5,s1,e882179a <mDNS_StopQuery_internal+0x3d8>
            rr->CRActiveQuestion = replacement;    // Question used to be active; new value may or may not be null
    e8821782:	075a3023          	sd	s5,96(s4)
            if (!replacement) m->rrcache_active--; // If no longer active, decrement rrcache_active count
    e8821786:	000a9763          	bnez	s5,e8821794 <mDNS_StopQuery_internal+0x3d2>
    e882178a:	2fc92783          	lw	a5,764(s2)
    e882178e:	37fd                	addiw	a5,a5,-1
    e8821790:	2ef92e23          	sw	a5,764(s2)
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8821794:	000a3a03          	ld	s4,0(s4)
    e8821798:	b7e9                	j	e8821762 <mDNS_StopQuery_internal+0x3a0>
                if (!q->DuplicateOf && !QuerySuppressed(q) && ResourceRecordAnswersQuestion(&rr->resrec, q))
    e882179a:	68bc                	ld	a5,80(s1)
    e882179c:	e785                	bnez	a5,e88217c4 <mDNS_StopQuery_internal+0x402>
    e882179e:	31c4c783          	lbu	a5,796(s1)
    e88217a2:	c781                	beqz	a5,e88217aa <mDNS_StopQuery_internal+0x3e8>
    e88217a4:	1404c783          	lbu	a5,320(s1)
    e88217a8:	ef91                	bnez	a5,e88217c4 <mDNS_StopQuery_internal+0x402>
    e88217aa:	1e64c783          	lbu	a5,486(s1)
    e88217ae:	eb99                	bnez	a5,e88217c4 <mDNS_StopQuery_internal+0x402>
    e88217b0:	85a6                	mv	a1,s1
    e88217b2:	855a                	mv	a0,s6
    e88217b4:	fecf40ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e88217b8:	c511                	beqz	a0,e88217c4 <mDNS_StopQuery_internal+0x402>
                    if (q->ThisQInterval > 0)
    e88217ba:	48dc                	lw	a5,20(s1)
    e88217bc:	00f04663          	bgtz	a5,e88217c8 <mDNS_StopQuery_internal+0x406>
                    else if (!replacement)
    e88217c0:	41549a8b          	mveqz	s5,s1,s5
            for (q = m->Questions; q && (q != m->NewQuestions); q = q->next)
    e88217c4:	6084                	ld	s1,0(s1)
    e88217c6:	bf4d                	j	e8821778 <mDNS_StopQuery_internal+0x3b6>
    e88217c8:	8aa6                	mv	s5,s1
    e88217ca:	bf65                	j	e8821782 <mDNS_StopQuery_internal+0x3c0>
            if (!mDNSOpaque16IsZero(q->TargetQID) && q->LongLived) break;
    e88217cc:	2127d703          	lhu	a4,530(a5)
    e88217d0:	c709                	beqz	a4,e88217da <mDNS_StopQuery_internal+0x418>
    e88217d2:	3187c703          	lbu	a4,792(a5)
    e88217d6:	ee0717e3          	bnez	a4,e88216c4 <mDNS_StopQuery_internal+0x302>
        for (q = m->Questions; q; q=q->next)
    e88217da:	639c                	ld	a5,0(a5)
    e88217dc:	b5e9                	j	e88216a6 <mDNS_StopQuery_internal+0x2e4>
                LogInfo("Stopping LLQNAT");
    e88217de:	000b3797          	auipc	a5,0xb3
    e88217e2:	29678793          	addi	a5,a5,662 # e88d4a74 <mDNS_LoggingEnabled>
    e88217e6:	439c                	lw	a5,0(a5)
    e88217e8:	cb81                	beqz	a5,e88217f8 <mDNS_StopQuery_internal+0x436>
    e88217ea:	0008a597          	auipc	a1,0x8a
    e88217ee:	afe58593          	addi	a1,a1,-1282 # e88ab2e8 <mDNS_DomainTypeNames+0x1938>
    e88217f2:	450d                	li	a0,3
    e88217f4:	4b90d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                mDNS_StopNATOperation_internal(m, &m->LLQNAT);
    e88217f8:	6491                	lui	s1,0x4
    e88217fa:	b9848593          	addi	a1,s1,-1128 # 3b98 <memcmp-0xe87fc468>
    e88217fe:	95ca                	add	a1,a1,s2
    e8821800:	854a                	mv	a0,s2
                m->LLQNAT.clientCallback = mDNSNULL; // Means LLQ NAT Traversal not running
    e8821802:	94ca                	add	s1,s1,s2
                mDNS_StopNATOperation_internal(m, &m->LLQNAT);
    e8821804:	512110ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
                m->LLQNAT.clientCallback = mDNSNULL; // Means LLQ NAT Traversal not running
    e8821808:	be04b023          	sd	zero,-1056(s1)
    e882180c:	bd65                	j	e88216c4 <mDNS_StopQuery_internal+0x302>
        if (question->ThisQInterval >= 0)   // Only log error message if the query was supposed to be active
    e882180e:	485c                	lw	a5,20(s0)
    e8821810:	0007cf63          	bltz	a5,e882182e <mDNS_StopQuery_internal+0x46c>
        LogFatalError("mDNS_StopQuery_internal: Question %##s (%s) not found in active list", question->qname.c, DNSTypeName(question->qtype));
    e8821814:	31445503          	lhu	a0,788(s0)
    e8821818:	c48f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e882181c:	86aa                	mv	a3,a0
    e882181e:	864e                	mv	a2,s3
    e8821820:	0008a597          	auipc	a1,0x8a
    e8821824:	9a858593          	addi	a1,a1,-1624 # e88ab1c8 <mDNS_DomainTypeNames+0x1818>
    e8821828:	4501                	li	a0,0
    e882182a:	4830d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return(mStatus_BadReferenceErr);
    e882182e:	74c1                	lui	s1,0xffff0
    e8821830:	14ed                	addi	s1,s1,-5
    e8821832:	bf01                	j	e8821742 <mDNS_StopQuery_internal+0x380>

00000000e8821834 <CancelGetZoneData>:
{
    e8821834:	1101                	addi	sp,sp,-32
    e8821836:	e422                	sd	s0,8(sp)
    e8821838:	e826                	sd	s1,16(sp)
    e882183a:	ec06                	sd	ra,24(sp)
    if (nta->question.ThisQInterval != -1)
    e882183c:	3545a783          	lw	a5,852(a1)
    e8821840:	54fd                	li	s1,-1
{
    e8821842:	842e                	mv	s0,a1
    if (nta->question.ThisQInterval != -1)
    e8821844:	02978a63          	beq	a5,s1,e8821878 <CancelGetZoneData+0x44>
        mDNS_StopQuery_internal(m, &nta->question);
    e8821848:	34058593          	addi	a1,a1,832
    e882184c:	b77ff0ef          	jal	ra,e88213c2 <mDNS_StopQuery_internal>
        if (nta->question.ThisQInterval != -1)
    e8821850:	35442783          	lw	a5,852(s0)
    e8821854:	02978263          	beq	a5,s1,e8821878 <CancelGetZoneData+0x44>
            LogMsg("CancelGetZoneData: Question %##s (%s) ThisQInterval %d not -1", nta->question.qname.c, DNSTypeName(nta->question.qtype), nta->question.ThisQInterval);
    e8821858:	65445503          	lhu	a0,1620(s0)
    e882185c:	c04f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e8821860:	86aa                	mv	a3,a0
    e8821862:	35442703          	lw	a4,852(s0)
    e8821866:	55440613          	addi	a2,s0,1364
    e882186a:	00083597          	auipc	a1,0x83
    e882186e:	4d658593          	addi	a1,a1,1238 # e88a4d40 <end.8789+0x1698>
    e8821872:	4501                	li	a0,0
    e8821874:	4390d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    mDNSPlatformMemFree(nta);
    e8821878:	8522                	mv	a0,s0
}
    e882187a:	6422                	ld	s0,8(sp)
    e882187c:	60e2                	ld	ra,24(sp)
    e882187e:	64c2                	ld	s1,16(sp)
    e8821880:	6105                	addi	sp,sp,32
    mDNSPlatformMemFree(nta);
    e8821882:	2010e06f          	j	e8830282 <mDNSPlatformMemFree>

00000000e8821886 <ActivateUnicastRegistration>:
{
    e8821886:	715d                	addi	sp,sp,-80
    e8821888:	e0a2                	sd	s0,64(sp)
    e882188a:	fc26                	sd	s1,56(sp)
    e882188c:	f44e                	sd	s3,40(sp)
    e882188e:	e486                	sd	ra,72(sp)
    e8821890:	f84a                	sd	s2,48(sp)
    if (rr->resrec.rrtype != kDNSType_SRV)
    e8821892:	00a5d783          	lhu	a5,10(a1)
    e8821896:	02100713          	li	a4,33
{
    e882189a:	84aa                	mv	s1,a0
    e882189c:	842e                	mv	s0,a1
    e882189e:	000b3997          	auipc	s3,0xb3
    e88218a2:	1d698993          	addi	s3,s3,470 # e88d4a74 <mDNS_LoggingEnabled>
    if (rr->resrec.rrtype != kDNSType_SRV)
    e88218a6:	04e78063          	beq	a5,a4,e88218e6 <ActivateUnicastRegistration+0x60>
        if (rr->resrec.rrtype == kDNSType_PTR)
    e88218aa:	4731                	li	a4,12
    e88218ac:	06e79c63          	bne	a5,a4,e8821924 <ActivateUnicastRegistration+0x9e>
            srvRR = rr->Additional1;
    e88218b0:	0485b903          	ld	s2,72(a1)
        if (srvRR)
    e88218b4:	02090963          	beqz	s2,e88218e6 <ActivateUnicastRegistration+0x60>
            if (srvRR->resrec.rrtype != kDNSType_SRV)
    e88218b8:	00a95703          	lhu	a4,10(s2)
    e88218bc:	02100793          	li	a5,33
    e88218c0:	06f70863          	beq	a4,a5,e8821930 <ActivateUnicastRegistration+0xaa>
                LogMsg("ActivateUnicastRegistration: ERROR!! Resource record %s wrong, expecting SRV type", ARDisplayString(m, srvRR));
    e88218c4:	03093583          	ld	a1,48(s2)
    e88218c8:	03b48613          	addi	a2,s1,59 # ffffffffffff003b <__DRAM0_INF_BASE+0xffffffff0000003b>
    e88218cc:	00890513          	addi	a0,s2,8
    e88218d0:	0591                	addi	a1,a1,4
    e88218d2:	942f50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88218d6:	862a                	mv	a2,a0
    e88218d8:	00082597          	auipc	a1,0x82
    e88218dc:	55858593          	addi	a1,a1,1368 # e88a3e30 <end.8789+0x788>
    e88218e0:	4501                	li	a0,0
    e88218e2:	3cb0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (rr->state == regState_NoTarget)
    e88218e6:	14c44683          	lbu	a3,332(s0)
    e88218ea:	4721                	li	a4,8
    e88218ec:	0009a783          	lw	a5,0(s3)
    e88218f0:	08e69663          	bne	a3,a4,e882197c <ActivateUnicastRegistration+0xf6>
        LogInfo("ActivateUnicastRegistration record %s in regState_NoTarget, not activating", ARDisplayString(m, rr));
    e88218f4:	14078763          	beqz	a5,e8821a42 <ActivateUnicastRegistration+0x1bc>
    e88218f8:	780c                	ld	a1,48(s0)
    e88218fa:	03b48613          	addi	a2,s1,59
    e88218fe:	00840513          	addi	a0,s0,8
    e8821902:	0591                	addi	a1,a1,4
    e8821904:	910f50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
}
    e8821908:	6406                	ld	s0,64(sp)
    e882190a:	60a6                	ld	ra,72(sp)
    e882190c:	74e2                	ld	s1,56(sp)
    e882190e:	7942                	ld	s2,48(sp)
    e8821910:	79a2                	ld	s3,40(sp)
        LogInfo("ActivateUnicastRegistration record %s in regState_NoTarget, not activating", ARDisplayString(m, rr));
    e8821912:	862a                	mv	a2,a0
    e8821914:	00082597          	auipc	a1,0x82
    e8821918:	5c458593          	addi	a1,a1,1476 # e88a3ed8 <end.8789+0x830>
    e882191c:	450d                	li	a0,3
}
    e882191e:	6161                	addi	sp,sp,80
        LogInfo("ActivateUnicastRegistration record %s in regState_NoTarget, not activating", ARDisplayString(m, rr));
    e8821920:	38d0d06f          	j	e882f4ac <LogMsgWithLevel>
        else if (rr->resrec.rrtype == kDNSType_TXT)
    e8821924:	4741                	li	a4,16
    e8821926:	fce790e3          	bne	a5,a4,e88218e6 <ActivateUnicastRegistration+0x60>
            srvRR = rr->DependentOn;
    e882192a:	0585b903          	ld	s2,88(a1)
    e882192e:	b759                	j	e88218b4 <ActivateUnicastRegistration+0x2e>
                LogInfo("ActivateUnicastRegistration: Found Service Record %s in state %d for %##s (%s)",
    e8821930:	0009a783          	lw	a5,0(s3)
    e8821934:	cf9d                	beqz	a5,e8821972 <ActivateUnicastRegistration+0xec>
    e8821936:	03093583          	ld	a1,48(s2)
    e882193a:	03b48613          	addi	a2,s1,59
    e882193e:	00890513          	addi	a0,s2,8
    e8821942:	0591                	addi	a1,a1,4
    e8821944:	8d0f50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821948:	ec2a                	sd	a0,24(sp)
    e882194a:	14c94683          	lbu	a3,332(s2)
    e882194e:	7418                	ld	a4,40(s0)
    e8821950:	00a45503          	lhu	a0,10(s0)
    e8821954:	e836                	sd	a3,16(sp)
    e8821956:	e43a                	sd	a4,8(sp)
    e8821958:	b08f40ef          	jal	ra,e8815c60 <DNSTypeName>
    e882195c:	87aa                	mv	a5,a0
    e882195e:	6722                	ld	a4,8(sp)
    e8821960:	fac1468b          	ldd	a3,a2,(sp),1,4
    e8821964:	00082597          	auipc	a1,0x82
    e8821968:	52458593          	addi	a1,a1,1316 # e88a3e88 <end.8789+0x7e0>
    e882196c:	450d                	li	a0,3
    e882196e:	33f0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                rr->state = srvRR->state;
    e8821972:	14c94783          	lbu	a5,332(s2)
    e8821976:	14f40623          	sb	a5,332(s0)
    e882197a:	b7b5                	j	e88218e6 <ActivateUnicastRegistration+0x60>
    if (rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e882197c:	00844683          	lbu	a3,8(s0)
    e8821980:	4705                	li	a4,1
    e8821982:	0ce69763          	bne	a3,a4,e8821a50 <ActivateUnicastRegistration+0x1ca>
        LogInfo("ActivateUnicastRegistration: Resource record %s, current state %d, moving to DeregPending", ARDisplayString(m, rr), rr->state);
    e8821986:	c39d                	beqz	a5,e88219ac <ActivateUnicastRegistration+0x126>
    e8821988:	780c                	ld	a1,48(s0)
    e882198a:	03b48613          	addi	a2,s1,59
    e882198e:	00840513          	addi	a0,s0,8
    e8821992:	0591                	addi	a1,a1,4
    e8821994:	880f50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821998:	862a                	mv	a2,a0
    e882199a:	14c44683          	lbu	a3,332(s0)
    e882199e:	00082597          	auipc	a1,0x82
    e88219a2:	58a58593          	addi	a1,a1,1418 # e88a3f28 <end.8789+0x880>
    e88219a6:	450d                	li	a0,3
    e88219a8:	3050d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->state = regState_DeregPending;
    e88219ac:	478d                	li	a5,3
        rr->state = regState_Pending;
    e88219ae:	14f40623          	sb	a5,332(s0)
    rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e88219b2:	000b3797          	auipc	a5,0xb3
    e88219b6:	0ce78793          	addi	a5,a5,206 # e88d4a80 <mDNSPlatformOneSecond>
    e88219ba:	4398                	lw	a4,0(a5)
    rr->ProbeRestartCount = 0;
    e88219bc:	0a040aa3          	sb	zero,181(s0)
    rr->ProbeCount     = 0;
    e88219c0:	0a041b23          	sh	zero,182(s0)
    rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e88219c4:	10e42823          	sw	a4,272(s0)
    rr->LastAPTime     = m->timenow - rr->ThisAPInterval;
    e88219c8:	2404a783          	lw	a5,576(s1)
    rr->expire         = 0; // Forget about all the leases, start fresh
    e88219cc:	14042823          	sw	zero,336(s0)
    rr->SRVChanged     = mDNSfalse;
    e88219d0:	1c040823          	sb	zero,464(s0)
    rr->LastAPTime     = m->timenow - rr->ThisAPInterval;
    e88219d4:	9f99                	subw	a5,a5,a4
    e88219d6:	10f42a23          	sw	a5,276(s0)
    rr->uselease       = mDNStrue;
    e88219da:	4785                	li	a5,1
    e88219dc:	14f406a3          	sb	a5,333(s0)
    rr->updateid       = zeroID;
    e88219e0:	00082797          	auipc	a5,0x82
    e88219e4:	bc078793          	addi	a5,a5,-1088 # e88a35a0 <zeroID>
    e88219e8:	0007d783          	lhu	a5,0(a5)
    rr->updateError    = mStatus_NoError;
    e88219ec:	1c042a23          	sw	zero,468(s0)
    rr->updateid       = zeroID;
    e88219f0:	14f41b23          	sh	a5,342(s0)
    if (rr->NATinfo.clientContext)
    e88219f4:	1c843783          	ld	a5,456(s0)
    e88219f8:	cb81                	beqz	a5,e8821a08 <ActivateUnicastRegistration+0x182>
        mDNS_StopNATOperation_internal(m, &rr->NATinfo);
    e88219fa:	17840593          	addi	a1,s0,376
    e88219fe:	8526                	mv	a0,s1
    e8821a00:	316110ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
        rr->NATinfo.clientContext = mDNSNULL;
    e8821a04:	1c043423          	sd	zero,456(s0)
    if (rr->nta) { CancelGetZoneData(m, rr->nta); rr->nta = mDNSNULL; }
    e8821a08:	16843583          	ld	a1,360(s0)
    e8821a0c:	c591                	beqz	a1,e8821a18 <ActivateUnicastRegistration+0x192>
    e8821a0e:	8526                	mv	a0,s1
    e8821a10:	e25ff0ef          	jal	ra,e8821834 <CancelGetZoneData>
    e8821a14:	16043423          	sd	zero,360(s0)
    if (rr->tcp) { DisposeTCPConn(rr->tcp);       rr->tcp = mDNSNULL; }
    e8821a18:	17043503          	ld	a0,368(s0)
    e8821a1c:	c509                	beqz	a0,e8821a26 <ActivateUnicastRegistration+0x1a0>
    e8821a1e:	4c5110ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8821a22:	16043823          	sd	zero,368(s0)
    if (m->NextuDNSEvent - (rr->LastAPTime + rr->ThisAPInterval) >= 0)
    e8821a26:	11042703          	lw	a4,272(s0)
    e8821a2a:	11442783          	lw	a5,276(s0)
    e8821a2e:	9fb9                	addw	a5,a5,a4
    e8821a30:	670d                	lui	a4,0x3
    e8821a32:	94ba                	add	s1,s1,a4
    e8821a34:	1f84a703          	lw	a4,504(s1)
    e8821a38:	9f1d                	subw	a4,a4,a5
    e8821a3a:	00074463          	bltz	a4,e8821a42 <ActivateUnicastRegistration+0x1bc>
        m->NextuDNSEvent = (rr->LastAPTime + rr->ThisAPInterval);
    e8821a3e:	1ef4ac23          	sw	a5,504(s1)
}
    e8821a42:	60a6                	ld	ra,72(sp)
    e8821a44:	6406                	ld	s0,64(sp)
    e8821a46:	74e2                	ld	s1,56(sp)
    e8821a48:	7942                	ld	s2,48(sp)
    e8821a4a:	79a2                	ld	s3,40(sp)
    e8821a4c:	6161                	addi	sp,sp,80
    e8821a4e:	8082                	ret
        LogInfo("ActivateUnicastRegistration: Resource record %s, current state %d, moving to Pending", ARDisplayString(m, rr), rr->state);
    e8821a50:	c39d                	beqz	a5,e8821a76 <ActivateUnicastRegistration+0x1f0>
    e8821a52:	780c                	ld	a1,48(s0)
    e8821a54:	03b48613          	addi	a2,s1,59
    e8821a58:	00840513          	addi	a0,s0,8
    e8821a5c:	0591                	addi	a1,a1,4
    e8821a5e:	fb7f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821a62:	862a                	mv	a2,a0
    e8821a64:	14c44683          	lbu	a3,332(s0)
    e8821a68:	00082597          	auipc	a1,0x82
    e8821a6c:	52058593          	addi	a1,a1,1312 # e88a3f88 <end.8789+0x8e0>
    e8821a70:	450d                	li	a0,3
    e8821a72:	23b0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->state = regState_Pending;
    e8821a76:	4785                	li	a5,1
    e8821a78:	bf1d                	j	e88219ae <ActivateUnicastRegistration+0x128>

00000000e8821a7a <mDNS_Register_internal>:
{
    e8821a7a:	7175                	addi	sp,sp,-144
    e8821a7c:	e122                	sd	s0,128(sp)
    e8821a7e:	f8ca                	sd	s2,112(sp)
    e8821a80:	e506                	sd	ra,136(sp)
    e8821a82:	fca6                	sd	s1,120(sp)
    e8821a84:	f4ce                	sd	s3,104(sp)
    e8821a86:	f0d2                	sd	s4,96(sp)
    e8821a88:	ecd6                	sd	s5,88(sp)
    e8821a8a:	e8da                	sd	s6,80(sp)
    e8821a8c:	e4de                	sd	s7,72(sp)
    e8821a8e:	e0e2                	sd	s8,64(sp)
    e8821a90:	fc66                	sd	s9,56(sp)
    e8821a92:	f86a                	sd	s10,48(sp)
    domainname *target = GetRRDomainNameTarget(&rr->resrec);
    e8821a94:	00a5d603          	lhu	a2,10(a1)
    e8821a98:	02500793          	li	a5,37
{
    e8821a9c:	892a                	mv	s2,a0
    domainname *target = GetRRDomainNameTarget(&rr->resrec);
    e8821a9e:	ffe6071b          	addiw	a4,a2,-2
    e8821aa2:	3c07368b          	extu	a3,a4,15,0
{
    e8821aa6:	842e                	mv	s0,a1
    domainname *target = GetRRDomainNameTarget(&rr->resrec);
    e8821aa8:	06d7ea63          	bltu	a5,a3,e8821b1c <mDNS_Register_internal+0xa2>
    e8821aac:	4705                	li	a4,1
    e8821aae:	1716                	slli	a4,a4,0x25
    e8821ab0:	40970713          	addi	a4,a4,1033 # 3409 <memcmp-0xe87fcbf7>
    e8821ab4:	00d75733          	srl	a4,a4,a3
    e8821ab8:	0007370b          	extu	a4,a4,0,0
    e8821abc:	c325                	beqz	a4,e8821b1c <mDNS_Register_internal+0xa2>
    e8821abe:	0305b983          	ld	s3,48(a1)
    e8821ac2:	0991                	addi	s3,s3,4
    if ((mDNSs32)rr->resrec.rroriginalttl <= 0)
    e8821ac4:	4804                	lw	s1,16(s0)
    AuthRecord **p = &m->ResourceRecords;
    e8821ac6:	6a0d                	lui	s4,0x3
    e8821ac8:	1b8a0a93          	addi	s5,s4,440 # 31b8 <memcmp-0xe87fce48>
    AuthRecord **d = &m->DuplicateRecords;
    e8821acc:	1c0a0a13          	addi	s4,s4,448
    AuthRecord **p = &m->ResourceRecords;
    e8821ad0:	9aca                	add	s5,s5,s2
    AuthRecord **d = &m->DuplicateRecords;
    e8821ad2:	9a4a                	add	s4,s4,s2
    if ((mDNSs32)rr->resrec.rroriginalttl <= 0)
    e8821ad4:	08904163          	bgtz	s1,e8821b56 <mDNS_Register_internal+0xdc>
    { LogMsg("mDNS_Register_internal: TTL %X should be 1 - 0x7FFFFFFF %s", rr->resrec.rroriginalttl, ARDisplayString(m, rr)); return(mStatus_BadParamErr); }
    e8821ad8:	780c                	ld	a1,48(s0)
    e8821ada:	03b90613          	addi	a2,s2,59
    e8821ade:	00840513          	addi	a0,s0,8
    e8821ae2:	0591                	addi	a1,a1,4
    e8821ae4:	f31f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821ae8:	86aa                	mv	a3,a0
    e8821aea:	8626                	mv	a2,s1
    e8821aec:	00089597          	auipc	a1,0x89
    e8821af0:	b0458593          	addi	a1,a1,-1276 # e88aa5f0 <mDNS_DomainTypeNames+0xc40>
    e8821af4:	4501                	li	a0,0
    e8821af6:	1b70d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    { LogMsg("mDNS_Register_internal: RecordType must be non-zero %s", ARDisplayString(m, rr)); return(mStatus_BadParamErr); }
    e8821afa:	74c1                	lui	s1,0xffff0
    e8821afc:	14f1                	addi	s1,s1,-4
}
    e8821afe:	60aa                	ld	ra,136(sp)
    e8821b00:	640a                	ld	s0,128(sp)
    e8821b02:	8526                	mv	a0,s1
    e8821b04:	7946                	ld	s2,112(sp)
    e8821b06:	74e6                	ld	s1,120(sp)
    e8821b08:	79a6                	ld	s3,104(sp)
    e8821b0a:	7a06                	ld	s4,96(sp)
    e8821b0c:	6ae6                	ld	s5,88(sp)
    e8821b0e:	6b46                	ld	s6,80(sp)
    e8821b10:	6ba6                	ld	s7,72(sp)
    e8821b12:	6c06                	ld	s8,64(sp)
    e8821b14:	7ce2                	ld	s9,56(sp)
    e8821b16:	7d42                	ld	s10,48(sp)
    e8821b18:	6149                	addi	sp,sp,144
    e8821b1a:	8082                	ret
    domainname *target = GetRRDomainNameTarget(&rr->resrec);
    e8821b1c:	0006071b          	sext.w	a4,a2
    e8821b20:	02400793          	li	a5,36
    e8821b24:	4981                	li	s3,0
    e8821b26:	f8e7efe3          	bltu	a5,a4,e8821ac4 <mDNS_Register_internal+0x4a>
    e8821b2a:	002007b7          	lui	a5,0x200
    e8821b2e:	04978793          	addi	a5,a5,73 # 200049 <memcmp-0xe85fffb7>
    e8821b32:	07be                	slli	a5,a5,0xf
    e8821b34:	00c7d7b3          	srl	a5,a5,a2
    e8821b38:	0007b78b          	extu	a5,a5,0,0
    e8821b3c:	c789                	beqz	a5,e8821b46 <mDNS_Register_internal+0xcc>
    e8821b3e:	03043983          	ld	s3,48(s0)
    e8821b42:	0999                	addi	s3,s3,6
    e8821b44:	b741                	j	e8821ac4 <mDNS_Register_internal+0x4a>
    e8821b46:	02100793          	li	a5,33
    e8821b4a:	f6f71de3          	bne	a4,a5,e8821ac4 <mDNS_Register_internal+0x4a>
    e8821b4e:	03043983          	ld	s3,48(s0)
    e8821b52:	09a9                	addi	s3,s3,10
    e8821b54:	bf85                	j	e8821ac4 <mDNS_Register_internal+0x4a>
    if (!rr->resrec.RecordType)
    e8821b56:	00844783          	lbu	a5,8(s0)
    e8821b5a:	e395                	bnez	a5,e8821b7e <mDNS_Register_internal+0x104>
    { LogMsg("mDNS_Register_internal: RecordType must be non-zero %s", ARDisplayString(m, rr)); return(mStatus_BadParamErr); }
    e8821b5c:	780c                	ld	a1,48(s0)
    e8821b5e:	03b90613          	addi	a2,s2,59
    e8821b62:	00840513          	addi	a0,s0,8
    e8821b66:	0591                	addi	a1,a1,4
    e8821b68:	eadf40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821b6c:	862a                	mv	a2,a0
    e8821b6e:	00089597          	auipc	a1,0x89
    e8821b72:	ac258593          	addi	a1,a1,-1342 # e88aa630 <mDNS_DomainTypeNames+0xc80>
    e8821b76:	4501                	li	a0,0
    e8821b78:	1350d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8821b7c:	bfbd                	j	e8821afa <mDNS_Register_internal+0x80>
    if (m->ShutdownTime)
    e8821b7e:	24c92483          	lw	s1,588(s2)
    e8821b82:	c485                	beqz	s1,e8821baa <mDNS_Register_internal+0x130>
    { LogMsg("mDNS_Register_internal: Shutting down, can't register %s", ARDisplayString(m, rr)); return(mStatus_ServiceNotRunning); }
    e8821b84:	780c                	ld	a1,48(s0)
    e8821b86:	03b90613          	addi	a2,s2,59
    e8821b8a:	00840513          	addi	a0,s0,8
    e8821b8e:	0591                	addi	a1,a1,4
    e8821b90:	e85f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821b94:	862a                	mv	a2,a0
    e8821b96:	00089597          	auipc	a1,0x89
    e8821b9a:	ad258593          	addi	a1,a1,-1326 # e88aa668 <mDNS_DomainTypeNames+0xcb8>
    e8821b9e:	4501                	li	a0,0
    e8821ba0:	74c1                	lui	s1,0xffff0
    e8821ba2:	10b0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8821ba6:	1495                	addi	s1,s1,-27
    e8821ba8:	bf99                	j	e8821afe <mDNS_Register_internal+0x84>
    if (m->DivertMulticastAdvertisements && !AuthRecord_uDNS(rr))
    e8821baa:	00e94783          	lbu	a5,14(s2)
    e8821bae:	cf9d                	beqz	a5,e8821bec <mDNS_Register_internal+0x172>
    e8821bb0:	00081797          	auipc	a5,0x81
    e8821bb4:	1b078793          	addi	a5,a5,432 # e88a2d60 <mDNSInterface_Any>
    e8821bb8:	0007bb83          	ld	s7,0(a5)
    e8821bbc:	701c                	ld	a5,32(s0)
    e8821bbe:	03778063          	beq	a5,s7,e8821bde <mDNS_Register_internal+0x164>
        mDNSInterfaceID previousID = rr->resrec.InterfaceID;
    e8821bc2:	02043b03          	ld	s6,32(s0)
        if (rr->resrec.InterfaceID == mDNSInterface_Any || rr->resrec.InterfaceID == mDNSInterface_P2P)
    e8821bc6:	00081797          	auipc	a5,0x81
    e8821bca:	1aa78793          	addi	a5,a5,426 # e88a2d70 <mDNSInterface_LocalOnly>
    e8821bce:	056b9d63          	bne	s7,s6,e8821c28 <mDNS_Register_internal+0x1ae>
            rr->resrec.InterfaceID = mDNSInterface_LocalOnly;
    e8821bd2:	6398                	ld	a4,0(a5)
    e8821bd4:	f018                	sd	a4,32(s0)
            rr->ARType = AuthRecordLocalOnly;
    e8821bd6:	4711                	li	a4,4
    e8821bd8:	0ae40623          	sb	a4,172(s0)
    e8821bdc:	a8a9                	j	e8821c36 <mDNS_Register_internal+0x1bc>
    if (m->DivertMulticastAdvertisements && !AuthRecord_uDNS(rr))
    e8821bde:	07a44783          	lbu	a5,122(s0)
    e8821be2:	f3e5                	bnez	a5,e8821bc2 <mDNS_Register_internal+0x148>
    e8821be4:	7408                	ld	a0,40(s0)
    e8821be6:	cbcf10ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8821bea:	fd61                	bnez	a0,e8821bc2 <mDNS_Register_internal+0x148>
    if (RRLocalOnly(rr))
    e8821bec:	0ac44783          	lbu	a5,172(s0)
    e8821bf0:	4705                	li	a4,1
    e8821bf2:	37f1                	addiw	a5,a5,-4
    e8821bf4:	0ff7f793          	andi	a5,a5,255
    e8821bf8:	08f77f63          	bgeu	a4,a5,e8821c96 <mDNS_Register_internal+0x21c>
    AuthRecord **p = &m->ResourceRecords;
    e8821bfc:	678d                	lui	a5,0x3
    e8821bfe:	97ca                	add	a5,a5,s2
    e8821c00:	1b87b603          	ld	a2,440(a5) # 31b8 <memcmp-0xe87fce48>
        while (*p && *p != rr) p=&(*p)->next;
    e8821c04:	c645                	beqz	a2,e8821cac <mDNS_Register_internal+0x232>
    e8821c06:	0e861063          	bne	a2,s0,e8821ce6 <mDNS_Register_internal+0x26c>
            LogMsg("mDNS_Register_internal: ERROR!! Tried to register AuthRecord %p %##s (%s) that's already in the list",
    e8821c0a:	7614                	ld	a3,40(a2)
    e8821c0c:	00a65503          	lhu	a0,10(a2)
    e8821c10:	e032                	sd	a2,0(sp)
    e8821c12:	e436                	sd	a3,8(sp)
    e8821c14:	84cf40ef          	jal	ra,e8815c60 <DNSTypeName>
    e8821c18:	872a                	mv	a4,a0
    e8821c1a:	66a2                	ld	a3,8(sp)
    e8821c1c:	6602                	ld	a2,0(sp)
    e8821c1e:	00089597          	auipc	a1,0x89
    e8821c22:	e6258593          	addi	a1,a1,-414 # e88aaa80 <mDNS_DomainTypeNames+0x10d0>
    e8821c26:	a075                	j	e8821cd2 <mDNS_Register_internal+0x258>
        if (rr->resrec.InterfaceID == mDNSInterface_Any || rr->resrec.InterfaceID == mDNSInterface_P2P)
    e8821c28:	00081717          	auipc	a4,0x81
    e8821c2c:	15070713          	addi	a4,a4,336 # e88a2d78 <mDNSInterface_P2P>
    e8821c30:	6318                	ld	a4,0(a4)
    e8821c32:	fb6700e3          	beq	a4,s6,e8821bd2 <mDNS_Register_internal+0x158>
        if (rr->resrec.InterfaceID != mDNSInterface_LocalOnly)
    e8821c36:	700c                	ld	a1,32(s0)
    e8821c38:	0007bb83          	ld	s7,0(a5)
    e8821c3c:	03758363          	beq	a1,s7,e8821c62 <mDNS_Register_internal+0x1e8>
            NetworkInterfaceInfo *intf = FirstInterfaceForID(m, rr->resrec.InterfaceID);
    e8821c40:	678d                	lui	a5,0x3
    e8821c42:	97ca                	add	a5,a5,s2
    e8821c44:	1e07b503          	ld	a0,480(a5) # 31e0 <memcmp-0xe87fce20>
    e8821c48:	b27fa0ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
            if (intf && !intf->Advertise) { rr->resrec.InterfaceID = mDNSInterface_LocalOnly; rr->ARType = AuthRecordLocalOnly; }
    e8821c4c:	c919                	beqz	a0,e8821c62 <mDNS_Register_internal+0x1e8>
    e8821c4e:	6789                	lui	a5,0x2
    e8821c50:	953e                	add	a0,a0,a5
    e8821c52:	a6654783          	lbu	a5,-1434(a0)
    e8821c56:	e791                	bnez	a5,e8821c62 <mDNS_Register_internal+0x1e8>
    e8821c58:	4791                	li	a5,4
    e8821c5a:	03743023          	sd	s7,32(s0)
    e8821c5e:	0af40623          	sb	a5,172(s0)
        if (rr->resrec.InterfaceID != previousID)
    e8821c62:	701c                	ld	a5,32(s0)
    e8821c64:	f96784e3          	beq	a5,s6,e8821bec <mDNS_Register_internal+0x172>
            LogInfo("mDNS_Register_internal: Diverting record to local-only %s", ARDisplayString(m, rr));
    e8821c68:	000b3797          	auipc	a5,0xb3
    e8821c6c:	e0c78793          	addi	a5,a5,-500 # e88d4a74 <mDNS_LoggingEnabled>
    e8821c70:	439c                	lw	a5,0(a5)
    e8821c72:	dfad                	beqz	a5,e8821bec <mDNS_Register_internal+0x172>
    e8821c74:	780c                	ld	a1,48(s0)
    e8821c76:	03b90613          	addi	a2,s2,59
    e8821c7a:	00840513          	addi	a0,s0,8
    e8821c7e:	0591                	addi	a1,a1,4
    e8821c80:	d95f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821c84:	862a                	mv	a2,a0
    e8821c86:	00089597          	auipc	a1,0x89
    e8821c8a:	a2258593          	addi	a1,a1,-1502 # e88aa6a8 <mDNS_DomainTypeNames+0xcf8>
    e8821c8e:	450d                	li	a0,3
    e8821c90:	01d0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8821c94:	bfa1                	j	e8821bec <mDNS_Register_internal+0x172>
    a = AuthGroupForRecord(r, &rr->resrec);
    e8821c96:	6509                	lui	a0,0x2
    e8821c98:	a7850513          	addi	a0,a0,-1416 # 1a78 <memcmp-0xe87fe588>
    e8821c9c:	00840593          	addi	a1,s0,8
    e8821ca0:	954a                	add	a0,a0,s2
    e8821ca2:	e74fc0ef          	jal	ra,e881e316 <AuthGroupForRecord>
    if (!a) return mDNSNULL;
    e8821ca6:	c119                	beqz	a0,e8821cac <mDNS_Register_internal+0x232>
    rp = a->members;
    e8821ca8:	691c                	ld	a5,16(a0)
    while (rp)
    e8821caa:	eb95                	bnez	a5,e8821cde <mDNS_Register_internal+0x264>
    while (*d && *d != rr) d=&(*d)->next;
    e8821cac:	000a3783          	ld	a5,0(s4)
    e8821cb0:	62078363          	beqz	a5,e88222d6 <mDNS_Register_internal+0x85c>
    e8821cb4:	02879c63          	bne	a5,s0,e8821cec <mDNS_Register_internal+0x272>
        LogMsg("mDNS_Register_internal: ERROR!! Tried to register AuthRecord %p %##s (%s) that's already in the Duplicate list",
    e8821cb8:	7414                	ld	a3,40(s0)
    e8821cba:	00a45503          	lhu	a0,10(s0)
    e8821cbe:	e036                	sd	a3,0(sp)
    e8821cc0:	fa1f30ef          	jal	ra,e8815c60 <DNSTypeName>
    e8821cc4:	872a                	mv	a4,a0
    e8821cc6:	6682                	ld	a3,0(sp)
    e8821cc8:	8622                	mv	a2,s0
    e8821cca:	00089597          	auipc	a1,0x89
    e8821cce:	cd658593          	addi	a1,a1,-810 # e88aa9a0 <mDNS_DomainTypeNames+0xff0>
            LogMsg("mDNS_Register_internal: ERROR!! Tried to register AuthRecord %p %##s (%s) that's already in the list",
    e8821cd2:	4501                	li	a0,0
            return(mStatus_AlreadyRegistered);
    e8821cd4:	74c1                	lui	s1,0xffff0
            LogMsg("mDNS_Register_internal: ERROR!! Tried to register AuthRecord %p %##s (%s) that's already in the list",
    e8821cd6:	7d60d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return(mStatus_AlreadyRegistered);
    e8821cda:	14d5                	addi	s1,s1,-11
    e8821cdc:	b50d                	j	e8821afe <mDNS_Register_internal+0x84>
        if (rp != rr)
    e8821cde:	7af40f63          	beq	s0,a5,e882249c <mDNS_Register_internal+0xa22>
            rp = rp->next;
    e8821ce2:	639c                	ld	a5,0(a5)
    e8821ce4:	b7d9                	j	e8821caa <mDNS_Register_internal+0x230>
        while (*p && *p != rr) p=&(*p)->next;
    e8821ce6:	8ab2                	mv	s5,a2
    e8821ce8:	6210                	ld	a2,0(a2)
    e8821cea:	bf29                	j	e8821c04 <mDNS_Register_internal+0x18a>
    while (*d && *d != rr) d=&(*d)->next;
    e8821cec:	8a3e                	mv	s4,a5
    e8821cee:	bf7d                	j	e8821cac <mDNS_Register_internal+0x232>
        if (rr->resrec.RecordType == kDNSRecordTypeUnique)
    e8821cf0:	00844703          	lbu	a4,8(s0)
    e8821cf4:	4689                	li	a3,2
    e8821cf6:	02d71e63          	bne	a4,a3,e8821d32 <mDNS_Register_internal+0x2b8>
            rr->resrec.RecordType =  kDNSRecordTypeVerified;
    e8821cfa:	4741                	li	a4,16
    e8821cfc:	00e40423          	sb	a4,8(s0)
        if (!(rr->DependentOn->resrec.RecordType & (kDNSRecordTypeUnique | kDNSRecordTypeVerified | kDNSRecordTypeKnownUnique)))
    e8821d00:	0087c783          	lbu	a5,8(a5)
    e8821d04:	0327f793          	andi	a5,a5,50
    e8821d08:	5c079a63          	bnez	a5,e88222dc <mDNS_Register_internal+0x862>
            LogMsg("mDNS_Register_internal: ERROR! %##s (%s): rr->DependentOn->RecordType bad type %X",
    e8821d0c:	7410                	ld	a2,40(s0)
    e8821d0e:	00a45503          	lhu	a0,10(s0)
    e8821d12:	e032                	sd	a2,0(sp)
    e8821d14:	f4df30ef          	jal	ra,e8815c60 <DNSTypeName>
    e8821d18:	86aa                	mv	a3,a0
    e8821d1a:	6c3c                	ld	a5,88(s0)
    e8821d1c:	6602                	ld	a2,0(sp)
    e8821d1e:	00089597          	auipc	a1,0x89
    e8821d22:	a4a58593          	addi	a1,a1,-1462 # e88aa768 <mDNS_DomainTypeNames+0xdb8>
    e8821d26:	0087c703          	lbu	a4,8(a5)
    e8821d2a:	4501                	li	a0,0
    e8821d2c:	7800d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8821d30:	a025                	j	e8821d58 <mDNS_Register_internal+0x2de>
        else if (rr->resrec.RecordType != kDNSRecordTypeKnownUnique)
    e8821d32:	02000693          	li	a3,32
    e8821d36:	fcd705e3          	beq	a4,a3,e8821d00 <mDNS_Register_internal+0x286>
            LogMsg("mDNS_Register_internal: ERROR! %##s (%s): rr->DependentOn && RecordType != kDNSRecordTypeUnique or kDNSRecordTypeKnownUnique",
    e8821d3a:	7410                	ld	a2,40(s0)
    e8821d3c:	00a45503          	lhu	a0,10(s0)
    e8821d40:	e032                	sd	a2,0(sp)
    e8821d42:	f1ff30ef          	jal	ra,e8815c60 <DNSTypeName>
    e8821d46:	86aa                	mv	a3,a0
    e8821d48:	6602                	ld	a2,0(sp)
    e8821d4a:	00089597          	auipc	a1,0x89
    e8821d4e:	99e58593          	addi	a1,a1,-1634 # e88aa6e8 <mDNS_DomainTypeNames+0xd38>
    e8821d52:	4501                	li	a0,0
    e8821d54:	7580d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return(mStatus_Invalid);
    e8821d58:	74c1                	lui	s1,0xffff0
    e8821d5a:	14cd                	addi	s1,s1,-13
    e8821d5c:	b34d                	j	e8821afe <mDNS_Register_internal+0x84>
            domainname *tar = GetRRDomainNameTarget(&rr->resrec);
    e8821d5e:	0006071b          	sext.w	a4,a2
    e8821d62:	02400793          	li	a5,36
    e8821d66:	6ce7ea63          	bltu	a5,a4,e882243a <mDNS_Register_internal+0x9c0>
    e8821d6a:	002007b7          	lui	a5,0x200
    e8821d6e:	04978793          	addi	a5,a5,73 # 200049 <memcmp-0xe85fffb7>
    e8821d72:	07be                	slli	a5,a5,0xf
    e8821d74:	00c7d7b3          	srl	a5,a5,a2
    e8821d78:	0007b78b          	extu	a5,a5,0,0
    e8821d7c:	c781                	beqz	a5,e8821d84 <mDNS_Register_internal+0x30a>
    e8821d7e:	781c                	ld	a5,48(s0)
    e8821d80:	0799                	addi	a5,a5,6
    e8821d82:	ad4d                	j	e8822434 <mDNS_Register_internal+0x9ba>
    e8821d84:	02100793          	li	a5,33
    e8821d88:	6af71963          	bne	a4,a5,e882243a <mDNS_Register_internal+0x9c0>
    e8821d8c:	781c                	ld	a5,48(s0)
    e8821d8e:	07a9                	addi	a5,a5,10
    e8821d90:	a555                	j	e8822434 <mDNS_Register_internal+0x9ba>
        rr->resrec.rdlength   = GetRDLength(&rr->resrec, mDNSfalse);
    e8821d92:	00840b13          	addi	s6,s0,8
    e8821d96:	4581                	li	a1,0
    e8821d98:	855a                	mv	a0,s6
    e8821d9a:	e96f20ef          	jal	ra,e8814430 <GetRDLength>
    e8821d9e:	00a41a23          	sh	a0,20(s0)
        rr->resrec.rdestimate = GetRDLength(&rr->resrec, mDNStrue);
    e8821da2:	4585                	li	a1,1
    e8821da4:	855a                	mv	a0,s6
    e8821da6:	e8af20ef          	jal	ra,e8814430 <GetRDLength>
    e8821daa:	00a41b23          	sh	a0,22(s0)
    e8821dae:	ad65                	j	e8822466 <mDNS_Register_internal+0x9ec>
    if (!ValidateRData(rr->resrec.rrtype, rr->resrec.rdlength, rr->resrec.rdata))
    e8821db0:	862e                	mv	a2,a1
    e8821db2:	00a45503          	lhu	a0,10(s0)
    e8821db6:	01445583          	lhu	a1,20(s0)
    e8821dba:	fb4f20ef          	jal	ra,e881456e <ValidateRData>
    e8821dbe:	ed19                	bnez	a0,e8821ddc <mDNS_Register_internal+0x362>
    { LogMsg("Attempt to register record with invalid rdata: %s", ARDisplayString(m, rr)); return(mStatus_Invalid); }
    e8821dc0:	780c                	ld	a1,48(s0)
    e8821dc2:	03b90613          	addi	a2,s2,59
    e8821dc6:	00840513          	addi	a0,s0,8
    e8821dca:	0591                	addi	a1,a1,4
    e8821dcc:	c49f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821dd0:	862a                	mv	a2,a0
    e8821dd2:	00089597          	auipc	a1,0x89
    e8821dd6:	a5e58593          	addi	a1,a1,-1442 # e88aa830 <mDNS_DomainTypeNames+0xe80>
    e8821dda:	ad6d                	j	e8822494 <mDNS_Register_internal+0xa1a>
    rr->resrec.namehash   = DomainNameHashValue(rr->resrec.name);
    e8821ddc:	7408                	ld	a0,40(s0)
    e8821dde:	b11f20ef          	jal	ra,e88148ee <DomainNameHashValue>
    e8821de2:	cc08                	sw	a0,24(s0)
    rr->resrec.rdatahash  = target ? DomainNameHashValue(target) : RDataHashValue(&rr->resrec);
    e8821de4:	0a098e63          	beqz	s3,e8821ea0 <mDNS_Register_internal+0x426>
    e8821de8:	854e                	mv	a0,s3
    e8821dea:	b05f20ef          	jal	ra,e88148ee <DomainNameHashValue>
    if (RRLocalOnly(rr))
    e8821dee:	0ac44783          	lbu	a5,172(s0)
    rr->resrec.rdatahash  = target ? DomainNameHashValue(target) : RDataHashValue(&rr->resrec);
    e8821df2:	2501                	sext.w	a0,a0
    e8821df4:	cc48                	sw	a0,28(s0)
    if (RRLocalOnly(rr))
    e8821df6:	37f1                	addiw	a5,a5,-4
    e8821df8:	0ff7f793          	andi	a5,a5,255
    e8821dfc:	4705                	li	a4,1
    e8821dfe:	02f76d63          	bltu	a4,a5,e8821e38 <mDNS_Register_internal+0x3be>
        if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e8821e02:	00844783          	lbu	a5,8(s0)
    e8821e06:	0327f793          	andi	a5,a5,50
    e8821e0a:	c79d                	beqz	a5,e8821e38 <mDNS_Register_internal+0x3be>
    a = AuthGroupForRecord(r, &rr->resrec);
    e8821e0c:	6509                	lui	a0,0x2
    e8821e0e:	00840b93          	addi	s7,s0,8
    e8821e12:	a7850513          	addi	a0,a0,-1416 # 1a78 <memcmp-0xe87fe588>
    e8821e16:	85de                	mv	a1,s7
    e8821e18:	954a                	add	a0,a0,s2
    e8821e1a:	cfcfc0ef          	jal	ra,e881e316 <AuthGroupForRecord>
    if (!a) return mDNSfalse;
    e8821e1e:	cd09                	beqz	a0,e8821e38 <mDNS_Register_internal+0x3be>
        if (s1 != s2 && SameResourceRecordSignature(rp, rr) && !IdenticalSameNameRecord(&rp->resrec, &rr->resrec))
    e8821e20:	5b7d                	li	s6,-1
    rp = a->members;
    e8821e22:	01053983          	ld	s3,16(a0)
        if (s1 != s2 && SameResourceRecordSignature(rp, rr) && !IdenticalSameNameRecord(&rp->resrec, &rr->resrec))
    e8821e26:	1b02                	slli	s6,s6,0x20
    e8821e28:	010b5b13          	srli	s6,s6,0x10
    e8821e2c:	ffff1c17          	auipc	s8,0xffff1
    e8821e30:	21ec0c13          	addi	s8,s8,542 # e881304a <SameDomainName>
    while (rp)
    e8821e34:	06099b63          	bnez	s3,e8821eaa <mDNS_Register_internal+0x430>
    if (AuthRecord_uDNS(rr))
    e8821e38:	00081b97          	auipc	s7,0x81
    e8821e3c:	f28b8b93          	addi	s7,s7,-216 # e88a2d60 <mDNSInterface_Any>
    e8821e40:	7018                	ld	a4,32(s0)
    e8821e42:	000bb783          	ld	a5,0(s7)
    e8821e46:	10f71163          	bne	a4,a5,e8821f48 <mDNS_Register_internal+0x4ce>
    e8821e4a:	07a44783          	lbu	a5,122(s0)
    e8821e4e:	0e079d63          	bnez	a5,e8821f48 <mDNS_Register_internal+0x4ce>
    e8821e52:	7408                	ld	a0,40(s0)
    e8821e54:	a4ef10ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8821e58:	0e051863          	bnez	a0,e8821f48 <mDNS_Register_internal+0x4ce>
        if (!m->NewLocalRecords) m->NewLocalRecords = rr;
    e8821e5c:	678d                	lui	a5,0x3
    e8821e5e:	97ca                	add	a5,a5,s2
    e8821e60:	1c87b703          	ld	a4,456(a5) # 31c8 <memcmp-0xe87fce38>
    e8821e64:	e319                	bnez	a4,e8821e6a <mDNS_Register_internal+0x3f0>
    e8821e66:	1c87b423          	sd	s0,456(a5)
        while (*p) p=&(*p)->next;
    e8821e6a:	000ab783          	ld	a5,0(s5)
    e8821e6e:	ebf9                	bnez	a5,e8821f44 <mDNS_Register_internal+0x4ca>
        *p = rr;
    e8821e70:	008ab023          	sd	s0,0(s5)
        if (rr->resrec.RecordType == kDNSRecordTypeUnique) rr->resrec.RecordType = kDNSRecordTypeVerified;
    e8821e74:	00844703          	lbu	a4,8(s0)
    e8821e78:	4789                	li	a5,2
    e8821e7a:	00f71563          	bne	a4,a5,e8821e84 <mDNS_Register_internal+0x40a>
    e8821e7e:	47c1                	li	a5,16
    e8821e80:	00f40423          	sb	a5,8(s0)
        if (rr->state != regState_NoTarget) ActivateUnicastRegistration(m, rr);
    e8821e84:	14c44703          	lbu	a4,332(s0)
        rr->ProbeRestartCount = 0;
    e8821e88:	0a040aa3          	sb	zero,181(s0)
        rr->ProbeCount    = 0;
    e8821e8c:	0a041b23          	sh	zero,182(s0)
        if (rr->state != regState_NoTarget) ActivateUnicastRegistration(m, rr);
    e8821e90:	47a1                	li	a5,8
    e8821e92:	c6f706e3          	beq	a4,a5,e8821afe <mDNS_Register_internal+0x84>
    e8821e96:	85a2                	mv	a1,s0
    e8821e98:	854a                	mv	a0,s2
    e8821e9a:	9edff0ef          	jal	ra,e8821886 <ActivateUnicastRegistration>
    e8821e9e:	b185                	j	e8821afe <mDNS_Register_internal+0x84>
    rr->resrec.rdatahash  = target ? DomainNameHashValue(target) : RDataHashValue(&rr->resrec);
    e8821ea0:	00840513          	addi	a0,s0,8
    e8821ea4:	aa7f20ef          	jal	ra,e881494a <RDataHashValue>
    e8821ea8:	b799                	j	e8821dee <mDNS_Register_internal+0x374>
        const AuthRecord *s1 = rr->RRSet ? rr->RRSet : rr;
    e8821eaa:	7038                	ld	a4,96(s0)
        const AuthRecord *s2 = rp->RRSet ? rp->RRSet : rp;
    e8821eac:	0609b783          	ld	a5,96(s3)
        const AuthRecord *s1 = rr->RRSet ? rr->RRSet : rr;
    e8821eb0:	40e4170b          	mveqz	a4,s0,a4
        const AuthRecord *s2 = rp->RRSet ? rp->RRSet : rp;
    e8821eb4:	40f9978b          	mveqz	a5,s3,a5
        if (s1 != s2 && SameResourceRecordSignature(rp, rr) && !IdenticalSameNameRecord(&rp->resrec, &rr->resrec))
    e8821eb8:	00f71563          	bne	a4,a5,e8821ec2 <mDNS_Register_internal+0x448>
            rp = rp->next;
    e8821ebc:	0009b983          	ld	s3,0(s3)
    e8821ec0:	bf95                	j	e8821e34 <mDNS_Register_internal+0x3ba>
        if (s1 != s2 && SameResourceRecordSignature(rp, rr) && !IdenticalSameNameRecord(&rp->resrec, &rr->resrec))
    e8821ec2:	00a9d703          	lhu	a4,10(s3)
    e8821ec6:	00a45783          	lhu	a5,10(s0)
    e8821eca:	fef719e3          	bne	a4,a5,e8821ebc <mDNS_Register_internal+0x442>
    e8821ece:	85a2                	mv	a1,s0
    e8821ed0:	854e                	mv	a0,s3
    e8821ed2:	f45fa0ef          	jal	ra,e881ce16 <SameResourceRecordNameClassInterface>
    e8821ed6:	d17d                	beqz	a0,e8821ebc <mDNS_Register_internal+0x442>
    e8821ed8:	0089b703          	ld	a4,8(s3)
    e8821edc:	641c                	ld	a5,8(s0)
    e8821ede:	01677733          	and	a4,a4,s6
    e8821ee2:	0167f7b3          	and	a5,a5,s6
    e8821ee6:	02f71563          	bne	a4,a5,e8821f10 <mDNS_Register_internal+0x496>
    e8821eea:	0149d703          	lhu	a4,20(s3)
    e8821eee:	01445783          	lhu	a5,20(s0)
    e8821ef2:	00f71f63          	bne	a4,a5,e8821f10 <mDNS_Register_internal+0x496>
    e8821ef6:	01c9a703          	lw	a4,28(s3)
    e8821efa:	4c5c                	lw	a5,28(s0)
    e8821efc:	00f71a63          	bne	a4,a5,e8821f10 <mDNS_Register_internal+0x496>
    e8821f00:	780c                	ld	a1,48(s0)
    e8821f02:	8662                	mv	a2,s8
    e8821f04:	00898513          	addi	a0,s3,8
    e8821f08:	0591                	addi	a1,a1,4
    e8821f0a:	900f20ef          	jal	ra,e881400a <SameRDataBody>
    e8821f0e:	f55d                	bnez	a0,e8821ebc <mDNS_Register_internal+0x442>
                LogInfo("mDNS_Register_internal: Name conflict %s (%p), InterfaceID %p", ARDisplayString(m, rr), rr, rr->resrec.InterfaceID);
    e8821f10:	000b3797          	auipc	a5,0xb3
    e8821f14:	b6478793          	addi	a5,a5,-1180 # e88d4a74 <mDNS_LoggingEnabled>
    e8821f18:	439c                	lw	a5,0(a5)
    e8821f1a:	c395                	beqz	a5,e8821f3e <mDNS_Register_internal+0x4c4>
    e8821f1c:	780c                	ld	a1,48(s0)
    e8821f1e:	03b90613          	addi	a2,s2,59
    e8821f22:	855e                	mv	a0,s7
    e8821f24:	0591                	addi	a1,a1,4
    e8821f26:	aeff40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821f2a:	862a                	mv	a2,a0
    e8821f2c:	7018                	ld	a4,32(s0)
    e8821f2e:	86a2                	mv	a3,s0
    e8821f30:	00089597          	auipc	a1,0x89
    e8821f34:	93858593          	addi	a1,a1,-1736 # e88aa868 <mDNS_DomainTypeNames+0xeb8>
    e8821f38:	450d                	li	a0,3
    e8821f3a:	5720d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                return mStatus_NameConflict;
    e8821f3e:	74c1                	lui	s1,0xffff0
    e8821f40:	14d1                	addi	s1,s1,-12
    e8821f42:	be75                	j	e8821afe <mDNS_Register_internal+0x84>
        while (*p) p=&(*p)->next;
    e8821f44:	8abe                	mv	s5,a5
    e8821f46:	b715                	j	e8821e6a <mDNS_Register_internal+0x3f0>
    if (RRLocalOnly(rr))
    e8821f48:	0ac44783          	lbu	a5,172(s0)
    e8821f4c:	4705                	li	a4,1
    e8821f4e:	37f1                	addiw	a5,a5,-4
    e8821f50:	0ff7f793          	andi	a5,a5,255
    e8821f54:	12f76c63          	bltu	a4,a5,e882208c <mDNS_Register_internal+0x612>
    a = AuthGroupForRecord(r, &rr->resrec);
    e8821f58:	6509                	lui	a0,0x2
    e8821f5a:	a7850513          	addi	a0,a0,-1416 # 1a78 <memcmp-0xe87fe588>
        rr->ProbeRestartCount = 0;
    e8821f5e:	0a040aa3          	sb	zero,181(s0)
        rr->ProbeCount    = 0;
    e8821f62:	0a041b23          	sh	zero,182(s0)
    a = AuthGroupForRecord(r, &rr->resrec);
    e8821f66:	00840593          	addi	a1,s0,8
    e8821f6a:	954a                	add	a0,a0,s2
    e8821f6c:	baafc0ef          	jal	ra,e881e316 <AuthGroupForRecord>
    if (!a) return mDNSNULL;
    e8821f70:	cd19                	beqz	a0,e8821f8e <mDNS_Register_internal+0x514>
        if (!RecordIsLocalDuplicate(rp, rr))
    e8821f72:	5b7d                	li	s6,-1
    rp = a->members;
    e8821f74:	01053983          	ld	s3,16(a0)
        if (!RecordIsLocalDuplicate(rp, rr))
    e8821f78:	1b02                	slli	s6,s6,0x20
    e8821f7a:	010b5b13          	srli	s6,s6,0x10
    e8821f7e:	ffff1c97          	auipc	s9,0xffff1
    e8821f82:	0ccc8c93          	addi	s9,s9,204 # e881304a <SameDomainName>
            if (rp->resrec.RecordType == kDNSRecordTypeDeregistering)
    e8821f86:	4c05                	li	s8,1
        if (!RecordIsLocalDuplicate(rp, rr))
    e8821f88:	4d49                	li	s10,18
    while (rp)
    e8821f8a:	06099d63          	bnez	s3,e8822004 <mDNS_Register_internal+0x58a>
        LogInfo("mDNS_Register_internal: Adding to active record list %s", ARDisplayString(m,rr));
    e8821f8e:	000b3797          	auipc	a5,0xb3
    e8821f92:	ae678793          	addi	a5,a5,-1306 # e88d4a74 <mDNS_LoggingEnabled>
    e8821f96:	439c                	lw	a5,0(a5)
    e8821f98:	c38d                	beqz	a5,e8821fba <mDNS_Register_internal+0x540>
    e8821f9a:	780c                	ld	a1,48(s0)
    e8821f9c:	03b90613          	addi	a2,s2,59
    e8821fa0:	00840513          	addi	a0,s0,8
    e8821fa4:	0591                	addi	a1,a1,4
    e8821fa6:	a6ff40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8821faa:	862a                	mv	a2,a0
    e8821fac:	00089597          	auipc	a1,0x89
    e8821fb0:	93458593          	addi	a1,a1,-1740 # e88aa8e0 <mDNS_DomainTypeNames+0xf30>
    e8821fb4:	450d                	li	a0,3
    e8821fb6:	4f60d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (RRLocalOnly(rr))
    e8821fba:	0ac44783          	lbu	a5,172(s0)
    e8821fbe:	4985                	li	s3,1
    e8821fc0:	37f1                	addiw	a5,a5,-4
    e8821fc2:	0ff7f793          	andi	a5,a5,255
    e8821fc6:	16f9e663          	bltu	s3,a5,e8822132 <mDNS_Register_internal+0x6b8>
            ag = InsertAuthRecord(m, &m->rrauth, rr);
    e8821fca:	6589                	lui	a1,0x2
    e8821fcc:	a7858593          	addi	a1,a1,-1416 # 1a78 <memcmp-0xe87fe588>
    e8821fd0:	8622                	mv	a2,s0
    e8821fd2:	95ca                	add	a1,a1,s2
    e8821fd4:	854a                	mv	a0,s2
    e8821fd6:	b48fc0ef          	jal	ra,e881e31e <InsertAuthRecord>
            if (ag && !ag->NewLocalOnlyRecords)
    e8821fda:	c901                	beqz	a0,e8821fea <mDNS_Register_internal+0x570>
    e8821fdc:	751c                	ld	a5,40(a0)
    e8821fde:	e791                	bnez	a5,e8821fea <mDNS_Register_internal+0x570>
                m->NewLocalOnlyRecords = mDNStrue;
    e8821fe0:	678d                	lui	a5,0x3
    e8821fe2:	97ca                	add	a5,a5,s2
    e8821fe4:	1d378c23          	sb	s3,472(a5) # 31d8 <memcmp-0xe87fce28>
                ag->NewLocalOnlyRecords = rr;
    e8821fe8:	f500                	sd	s0,40(a0)
            if (rr->resrec.RecordType == kDNSRecordTypeUnique) rr->resrec.RecordType = kDNSRecordTypeVerified;
    e8821fea:	00844703          	lbu	a4,8(s0)
    e8821fee:	4789                	li	a5,2
    e8821ff0:	00f71563          	bne	a4,a5,e8821ffa <mDNS_Register_internal+0x580>
    e8821ff4:	47c1                	li	a5,16
    e8821ff6:	00f40423          	sb	a5,8(s0)
            AcknowledgeRecord(m, rr);
    e8821ffa:	85a2                	mv	a1,s0
    e8821ffc:	854a                	mv	a0,s2
    e8821ffe:	9dff90ef          	jal	ra,e881b9dc <AcknowledgeRecord>
            return(mStatus_NoError);
    e8822002:	bcf5                	j	e8821afe <mDNS_Register_internal+0x84>
        if (!RecordIsLocalDuplicate(rp, rr))
    e8822004:	0209b703          	ld	a4,32(s3)
    e8822008:	701c                	ld	a5,32(s0)
    e882200a:	00f70563          	beq	a4,a5,e8822014 <mDNS_Register_internal+0x59a>
                rp = rp->next;
    e882200e:	0009b983          	ld	s3,0(s3)
    e8822012:	bfa5                	j	e8821f8a <mDNS_Register_internal+0x510>
        if (!RecordIsLocalDuplicate(rp, rr))
    e8822014:	0089c703          	lbu	a4,8(s3)
    e8822018:	00844783          	lbu	a5,8(s0)
    e882201c:	00f70a63          	beq	a4,a5,e8822030 <mDNS_Register_internal+0x5b6>
    e8822020:	00f766b3          	or	a3,a4,a5
    e8822024:	01a68663          	beq	a3,s10,e8822030 <mDNS_Register_internal+0x5b6>
    e8822028:	01870463          	beq	a4,s8,e8822030 <mDNS_Register_internal+0x5b6>
    e882202c:	ff8791e3          	bne	a5,s8,e882200e <mDNS_Register_internal+0x594>
    e8822030:	0089b703          	ld	a4,8(s3)
    e8822034:	641c                	ld	a5,8(s0)
    e8822036:	01677733          	and	a4,a4,s6
    e882203a:	0167f7b3          	and	a5,a5,s6
    e882203e:	fcf718e3          	bne	a4,a5,e882200e <mDNS_Register_internal+0x594>
    e8822042:	0189a703          	lw	a4,24(s3)
    e8822046:	4c1c                	lw	a5,24(s0)
    e8822048:	fcf713e3          	bne	a4,a5,e882200e <mDNS_Register_internal+0x594>
    e882204c:	0149d703          	lhu	a4,20(s3)
    e8822050:	01445783          	lhu	a5,20(s0)
    e8822054:	faf71de3          	bne	a4,a5,e882200e <mDNS_Register_internal+0x594>
    e8822058:	01c9a703          	lw	a4,28(s3)
    e882205c:	4c5c                	lw	a5,28(s0)
    e882205e:	faf718e3          	bne	a4,a5,e882200e <mDNS_Register_internal+0x594>
    e8822062:	780c                	ld	a1,48(s0)
    e8822064:	8666                	mv	a2,s9
    e8822066:	00898513          	addi	a0,s3,8
    e882206a:	0591                	addi	a1,a1,4
    e882206c:	f9ff10ef          	jal	ra,e881400a <SameRDataBody>
    e8822070:	dd59                	beqz	a0,e882200e <mDNS_Register_internal+0x594>
    e8822072:	740c                	ld	a1,40(s0)
    e8822074:	0289b503          	ld	a0,40(s3)
    e8822078:	fd3f00ef          	jal	ra,e881304a <SameDomainName>
    e882207c:	d949                	beqz	a0,e882200e <mDNS_Register_internal+0x594>
            if (rp->resrec.RecordType == kDNSRecordTypeDeregistering)
    e882207e:	0089c783          	lbu	a5,8(s3)
    e8822082:	1b879363          	bne	a5,s8,e8822228 <mDNS_Register_internal+0x7ae>
                rp->AnnounceCount = 0;
    e8822086:	0a098ba3          	sb	zero,183(s3)
    e882208a:	b751                	j	e882200e <mDNS_Register_internal+0x594>
        for (r = m->ResourceRecords; r; r=r->next)
    e882208c:	678d                	lui	a5,0x3
    e882208e:	97ca                	add	a5,a5,s2
            if (RecordIsLocalDuplicate(r, rr))
    e8822090:	5b7d                	li	s6,-1
        for (r = m->ResourceRecords; r; r=r->next)
    e8822092:	1b87b983          	ld	s3,440(a5) # 31b8 <memcmp-0xe87fce48>
            if (RecordIsLocalDuplicate(r, rr))
    e8822096:	1b02                	slli	s6,s6,0x20
    e8822098:	010b5b13          	srli	s6,s6,0x10
    e882209c:	ffff1c97          	auipc	s9,0xffff1
    e88220a0:	faec8c93          	addi	s9,s9,-82 # e881304a <SameDomainName>
                if (r->resrec.RecordType == kDNSRecordTypeDeregistering) r->AnnounceCount = 0;
    e88220a4:	4c05                	li	s8,1
            if (RecordIsLocalDuplicate(r, rr))
    e88220a6:	4d49                	li	s10,18
        for (r = m->ResourceRecords; r; r=r->next)
    e88220a8:	ee0983e3          	beqz	s3,e8821f8e <mDNS_Register_internal+0x514>
            if (RecordIsLocalDuplicate(r, rr))
    e88220ac:	0209b703          	ld	a4,32(s3)
    e88220b0:	701c                	ld	a5,32(s0)
    e88220b2:	06f71d63          	bne	a4,a5,e882212c <mDNS_Register_internal+0x6b2>
    e88220b6:	0089c703          	lbu	a4,8(s3)
    e88220ba:	00844783          	lbu	a5,8(s0)
    e88220be:	00f70a63          	beq	a4,a5,e88220d2 <mDNS_Register_internal+0x658>
    e88220c2:	00f766b3          	or	a3,a4,a5
    e88220c6:	01a68663          	beq	a3,s10,e88220d2 <mDNS_Register_internal+0x658>
    e88220ca:	01870463          	beq	a4,s8,e88220d2 <mDNS_Register_internal+0x658>
    e88220ce:	05879f63          	bne	a5,s8,e882212c <mDNS_Register_internal+0x6b2>
    e88220d2:	0089b703          	ld	a4,8(s3)
    e88220d6:	641c                	ld	a5,8(s0)
    e88220d8:	01677733          	and	a4,a4,s6
    e88220dc:	0167f7b3          	and	a5,a5,s6
    e88220e0:	04f71663          	bne	a4,a5,e882212c <mDNS_Register_internal+0x6b2>
    e88220e4:	0189a703          	lw	a4,24(s3)
    e88220e8:	4c1c                	lw	a5,24(s0)
    e88220ea:	04f71163          	bne	a4,a5,e882212c <mDNS_Register_internal+0x6b2>
    e88220ee:	0149d703          	lhu	a4,20(s3)
    e88220f2:	01445783          	lhu	a5,20(s0)
    e88220f6:	02f71b63          	bne	a4,a5,e882212c <mDNS_Register_internal+0x6b2>
    e88220fa:	01c9a703          	lw	a4,28(s3)
    e88220fe:	4c5c                	lw	a5,28(s0)
    e8822100:	02f71663          	bne	a4,a5,e882212c <mDNS_Register_internal+0x6b2>
    e8822104:	780c                	ld	a1,48(s0)
    e8822106:	8666                	mv	a2,s9
    e8822108:	00898513          	addi	a0,s3,8
    e882210c:	0591                	addi	a1,a1,4
    e882210e:	efdf10ef          	jal	ra,e881400a <SameRDataBody>
    e8822112:	cd09                	beqz	a0,e882212c <mDNS_Register_internal+0x6b2>
    e8822114:	740c                	ld	a1,40(s0)
    e8822116:	0289b503          	ld	a0,40(s3)
    e882211a:	f31f00ef          	jal	ra,e881304a <SameDomainName>
    e882211e:	c519                	beqz	a0,e882212c <mDNS_Register_internal+0x6b2>
                if (r->resrec.RecordType == kDNSRecordTypeDeregistering) r->AnnounceCount = 0;
    e8822120:	0089c783          	lbu	a5,8(s3)
    e8822124:	11879263          	bne	a5,s8,e8822228 <mDNS_Register_internal+0x7ae>
    e8822128:	0a098ba3          	sb	zero,183(s3)
        for (r = m->ResourceRecords; r; r=r->next)
    e882212c:	0009b983          	ld	s3,0(s3)
    e8822130:	bfa5                	j	e88220a8 <mDNS_Register_internal+0x62e>
            if (!m->NewLocalRecords) m->NewLocalRecords = rr;
    e8822132:	678d                	lui	a5,0x3
    e8822134:	97ca                	add	a5,a5,s2
    e8822136:	1c87b703          	ld	a4,456(a5) # 31c8 <memcmp-0xe87fce38>
    e882213a:	e319                	bnez	a4,e8822140 <mDNS_Register_internal+0x6c6>
    e882213c:	1c87b423          	sd	s0,456(a5)
            *p = rr;
    e8822140:	008ab023          	sd	s0,0(s5)
    e8822144:	a235                	j	e8822270 <mDNS_Register_internal+0x7f6>
    if (!AuthRecord_uDNS(rr))   // This check is superfluous, given that for unicast records we (currently) bail out above
    e8822146:	07a44783          	lbu	a5,122(s0)
    e882214a:	12079863          	bnez	a5,e882227a <mDNS_Register_internal+0x800>
    e882214e:	7408                	ld	a0,40(s0)
    e8822150:	f53f00ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8822154:	12051363          	bnez	a0,e882227a <mDNS_Register_internal+0x800>
    if (!rr->WakeUp.HMAC.l[0] && mDNS_KeepaliveRecord(&rr->resrec))
    e8822158:	07e42783          	lw	a5,126(s0)
    e882215c:	9a0791e3          	bnez	a5,e8821afe <mDNS_Register_internal+0x84>
    e8822160:	00a45703          	lhu	a4,10(s0)
    e8822164:	47a9                	li	a5,10
    e8822166:	98f71ce3          	bne	a4,a5,e8821afe <mDNS_Register_internal+0x84>
    e882216a:	7408                	ld	a0,40(s0)
    e882216c:	4781                	li	a5,0
    e882216e:	00054703          	lbu	a4,0(a0)
    e8822172:	c319                	beqz	a4,e8822178 <mDNS_Register_internal+0x6fe>
    e8822174:	00170793          	addi	a5,a4,1
    e8822178:	00088597          	auipc	a1,0x88
    e882217c:	ed858593          	addi	a1,a1,-296 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    e8822180:	953e                	add	a0,a0,a5
    e8822182:	e65f00ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e8822186:	96050ce3          	beqz	a0,e8821afe <mDNS_Register_internal+0x84>
       rr->resrec.RecordType = kDNSRecordTypeKnownUnique;
    e882218a:	02000793          	li	a5,32
       getKeepaliveRaddr(m, rr, &raddr);
    e882218e:	854a                	mv	a0,s2
       rr->resrec.RecordType = kDNSRecordTypeKnownUnique;
    e8822190:	00f40423          	sb	a5,8(s0)
       rr->AnnounceCount     = 0;
    e8822194:	0a040ba3          	sb	zero,183(s0)
       getKeepaliveRaddr(m, rr, &raddr);
    e8822198:	0830                	addi	a2,sp,24
    e882219a:	85a2                	mv	a1,s0
    e882219c:	d4efb0ef          	jal	ra,e881d6ea <getKeepaliveRaddr>
       mDNSPlatformGetRemoteMacAddr(&raddr);
    e88221a0:	0828                	addi	a0,sp,24
    e88221a2:	5860e0ef          	jal	ra,e8830728 <mDNSPlatformGetRemoteMacAddr>
    e88221a6:	baa1                	j	e8821afe <mDNS_Register_internal+0x84>
    if (!AuthRecord_uDNS(rr) && rr->resrec.rrtype == kDNSType_SRV && rr->AutoTarget == Target_AutoHost)
    e88221a8:	701c                	ld	a5,32(s0)
    e88221aa:	06f98763          	beq	s3,a5,e8822218 <mDNS_Register_internal+0x79e>
    e88221ae:	00a45703          	lhu	a4,10(s0)
    e88221b2:	02100793          	li	a5,33
    e88221b6:	10f71063          	bne	a4,a5,e88222b6 <mDNS_Register_internal+0x83c>
    e88221ba:	07844703          	lbu	a4,120(s0)
    e88221be:	4785                	li	a5,1
    e88221c0:	0ef71b63          	bne	a4,a5,e88222b6 <mDNS_Register_internal+0x83c>
        m->AutoTargetServices++;
    e88221c4:	6795                	lui	a5,0x5
    e88221c6:	97ca                	add	a5,a5,s2
    e88221c8:	e407a703          	lw	a4,-448(a5) # 4e40 <memcmp-0xe87fb1c0>
    e88221cc:	0017099b          	addiw	s3,a4,1
    e88221d0:	e537a023          	sw	s3,-448(a5)
        LogInfo("IncrementAutoTargetServices: AutoTargetServices %d Record %s", m->AutoTargetServices, ARDisplayString(m, rr));
    e88221d4:	000b3797          	auipc	a5,0xb3
    e88221d8:	8a078793          	addi	a5,a5,-1888 # e88d4a74 <mDNS_LoggingEnabled>
    e88221dc:	439c                	lw	a5,0(a5)
    e88221de:	c395                	beqz	a5,e8822202 <mDNS_Register_internal+0x788>
    e88221e0:	780c                	ld	a1,48(s0)
    e88221e2:	03b90613          	addi	a2,s2,59
    e88221e6:	00840513          	addi	a0,s0,8
    e88221ea:	0591                	addi	a1,a1,4
    e88221ec:	829f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88221f0:	86aa                	mv	a3,a0
    e88221f2:	864e                	mv	a2,s3
    e88221f4:	00088597          	auipc	a1,0x88
    e88221f8:	76c58593          	addi	a1,a1,1900 # e88aa960 <mDNS_DomainTypeNames+0xfb0>
    e88221fc:	450d                	li	a0,3
    e88221fe:	2ae0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if ((m->AutoTargetServices == 1) && (enablingBonjour == 0))
    e8822202:	6795                	lui	a5,0x5
    e8822204:	97ca                	add	a5,a5,s2
    e8822206:	e407a703          	lw	a4,-448(a5) # 4e40 <memcmp-0xe87fb1c0>
    e882220a:	4785                	li	a5,1
    e882220c:	0af71563          	bne	a4,a5,e88222b6 <mDNS_Register_internal+0x83c>
            AdvertiseAllInterfaceRecords(m);
    e8822210:	854a                	mv	a0,s2
    e8822212:	4ee000ef          	jal	ra,e8822700 <AdvertiseAllInterfaceRecords>
    e8822216:	a045                	j	e88222b6 <mDNS_Register_internal+0x83c>
    if (!AuthRecord_uDNS(rr) && rr->resrec.rrtype == kDNSType_SRV && rr->AutoTarget == Target_AutoHost)
    e8822218:	07a44783          	lbu	a5,122(s0)
    e882221c:	fbc9                	bnez	a5,e88221ae <mDNS_Register_internal+0x734>
    e882221e:	7408                	ld	a0,40(s0)
    e8822220:	e83f00ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8822224:	f549                	bnez	a0,e88221ae <mDNS_Register_internal+0x734>
    e8822226:	a841                	j	e88222b6 <mDNS_Register_internal+0x83c>
        LogInfo("mDNS_Register_internal: Adding to duplicate list %s", ARDisplayString(m,rr));
    e8822228:	000b3797          	auipc	a5,0xb3
    e882222c:	84c78793          	addi	a5,a5,-1972 # e88d4a74 <mDNS_LoggingEnabled>
    e8822230:	439c                	lw	a5,0(a5)
    e8822232:	c38d                	beqz	a5,e8822254 <mDNS_Register_internal+0x7da>
    e8822234:	780c                	ld	a1,48(s0)
    e8822236:	03b90613          	addi	a2,s2,59
    e882223a:	00840513          	addi	a0,s0,8
    e882223e:	0591                	addi	a1,a1,4
    e8822240:	fd4f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8822244:	862a                	mv	a2,a0
    e8822246:	00088597          	auipc	a1,0x88
    e882224a:	66258593          	addi	a1,a1,1634 # e88aa8a8 <mDNS_DomainTypeNames+0xef8>
    e882224e:	450d                	li	a0,3
    e8822250:	25c0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        *d = rr;
    e8822254:	008a3023          	sd	s0,0(s4)
        if (rr->resrec.RecordType == kDNSRecordTypeUnique && r->resrec.RecordType == kDNSRecordTypeVerified)
    e8822258:	00844703          	lbu	a4,8(s0)
    e882225c:	4789                	li	a5,2
    e882225e:	00f71963          	bne	a4,a5,e8822270 <mDNS_Register_internal+0x7f6>
    e8822262:	0089c703          	lbu	a4,8(s3)
    e8822266:	47c1                	li	a5,16
    e8822268:	00f71463          	bne	a4,a5,e8822270 <mDNS_Register_internal+0x7f6>
            rr->ProbeCount = 0;
    e882226c:	0a040b23          	sb	zero,182(s0)
    if (!AuthRecord_uDNS(rr))   // This check is superfluous, given that for unicast records we (currently) bail out above
    e8822270:	000bb983          	ld	s3,0(s7)
    e8822274:	701c                	ld	a5,32(s0)
    e8822276:	ed3788e3          	beq	a5,s3,e8822146 <mDNS_Register_internal+0x6cc>
    if (RRLocalOnly(rr))
    e882227a:	0ac44783          	lbu	a5,172(s0)
    e882227e:	4705                	li	a4,1
    e8822280:	37f1                	addiw	a5,a5,-4
    e8822282:	0ff7f793          	andi	a5,a5,255
    e8822286:	f2f761e3          	bltu	a4,a5,e88221a8 <mDNS_Register_internal+0x72e>
        LogInfo("IncrementAutoTargetServices: called for RRLocalOnly() record: %s", ARDisplayString(m, rr));
    e882228a:	000b2797          	auipc	a5,0xb2
    e882228e:	7ea78793          	addi	a5,a5,2026 # e88d4a74 <mDNS_LoggingEnabled>
    e8822292:	439c                	lw	a5,0(a5)
    e8822294:	c38d                	beqz	a5,e88222b6 <mDNS_Register_internal+0x83c>
    e8822296:	780c                	ld	a1,48(s0)
    e8822298:	03b90613          	addi	a2,s2,59
    e882229c:	00840513          	addi	a0,s0,8
    e88222a0:	0591                	addi	a1,a1,4
    e88222a2:	f72f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88222a6:	862a                	mv	a2,a0
    e88222a8:	00088597          	auipc	a1,0x88
    e88222ac:	67058593          	addi	a1,a1,1648 # e88aa918 <mDNS_DomainTypeNames+0xf68>
    e88222b0:	450d                	li	a0,3
    e88222b2:	1fa0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (rr->resrec.RecordType != kDNSRecordTypeUnique && rr->resrec.RecordType != kDNSRecordTypeDeregistering)
    e88222b6:	00844783          	lbu	a5,8(s0)
    e88222ba:	4705                	li	a4,1
    e88222bc:	37fd                	addiw	a5,a5,-1
    e88222be:	0ff7f793          	andi	a5,a5,255
    e88222c2:	00f77663          	bgeu	a4,a5,e88222ce <mDNS_Register_internal+0x854>
            AcknowledgeRecord(m, rr);
    e88222c6:	85a2                	mv	a1,s0
    e88222c8:	854a                	mv	a0,s2
    e88222ca:	f12f90ef          	jal	ra,e881b9dc <AcknowledgeRecord>
        mDNS_UpdateAllowSleep(m);
    e88222ce:	854a                	mv	a0,s2
    e88222d0:	9d1fe0ef          	jal	ra,e8820ca0 <mDNS_UpdateAllowSleep>
    e88222d4:	b551                	j	e8822158 <mDNS_Register_internal+0x6de>
    if (rr->DependentOn)
    e88222d6:	6c3c                	ld	a5,88(s0)
    e88222d8:	a0079ce3          	bnez	a5,e8821cf0 <mDNS_Register_internal+0x276>
    if (rr->AutoTarget && target) target->c[0] = 0;
    e88222dc:	07844783          	lbu	a5,120(s0)
    rr->next = mDNSNULL;
    e88222e0:	00043023          	sd	zero,0(s0)
    if (rr->AutoTarget && target) target->c[0] = 0;
    e88222e4:	c789                	beqz	a5,e88222ee <mDNS_Register_internal+0x874>
    e88222e6:	00098463          	beqz	s3,e88222ee <mDNS_Register_internal+0x874>
    e88222ea:	00098023          	sb	zero,0(s3)
    rr->ProbeCount        = DefaultProbeCountForRecordType(rr->resrec.RecordType);
    e88222ee:	00844683          	lbu	a3,8(s0)
    rr->Acknowledged      = mDNSfalse;
    e88222f2:	0a040a23          	sb	zero,180(s0)
    rr->ProbeCount        = DefaultProbeCountForRecordType(rr->resrec.RecordType);
    e88222f6:	4709                	li	a4,2
    e88222f8:	478d                	li	a5,3
    e88222fa:	00e68363          	beq	a3,a4,e8822300 <mDNS_Register_internal+0x886>
    e88222fe:	4781                	li	a5,0
    e8822300:	0af40b23          	sb	a5,182(s0)
    rr->AnnounceCount     = InitialAnnounceCount;
    e8822304:	4791                	li	a5,4
    e8822306:	0af40ba3          	sb	a5,183(s0)
    rr->v4Requester       = zerov4Addr;
    e882230a:	00081797          	auipc	a5,0x81
    e882230e:	2d678793          	addi	a5,a5,726 # e88a35e0 <zerov4Addr>
    e8822312:	439c                	lw	a5,0(a5)
    rr->ProbeRestartCount = 0;
    e8822314:	0a040aa3          	sb	zero,181(s0)
    rr->RequireGoodbye    = mDNSfalse;
    e8822318:	0a042c23          	sw	zero,184(s0)
    rr->v4Requester       = zerov4Addr;
    e882231c:	0ef42023          	sw	a5,224(s0)
    rr->v6Requester       = zerov6Addr;
    e8822320:	00081797          	auipc	a5,0x81
    e8822324:	2c878793          	addi	a5,a5,712 # e88a35e8 <zerov6Addr>
    e8822328:	6398                	ld	a4,0(a5)
    e882232a:	679c                	ld	a5,8(a5)
    rr->SendNSECNow       = mDNSNULL;
    e882232c:	0c043023          	sd	zero,192(s0)
    rr->ImmedAnswer       = mDNSNULL;
    e8822330:	0c043423          	sd	zero,200(s0)
    rr->v6Requester       = zerov6Addr;
    e8822334:	0ef43623          	sd	a5,236(s0)
    if (!rr->AutoTarget) InitializeLastAPTime(m, rr);
    e8822338:	07844783          	lbu	a5,120(s0)
    rr->ImmedAdditional   = mDNSNULL;
    e882233c:	0c043823          	sd	zero,208(s0)
    rr->SendRNow          = mDNSNULL;
    e8822340:	0c043c23          	sd	zero,216(s0)
    rr->v6Requester       = zerov6Addr;
    e8822344:	0ee43223          	sd	a4,228(s0)
    rr->NextResponse      = mDNSNULL;
    e8822348:	0e043c23          	sd	zero,248(s0)
    rr->NR_AnswerTo       = mDNSNULL;
    e882234c:	10043023          	sd	zero,256(s0)
    rr->NR_AdditionalTo   = mDNSNULL;
    e8822350:	10043423          	sd	zero,264(s0)
    if (!rr->AutoTarget) InitializeLastAPTime(m, rr);
    e8822354:	e789                	bnez	a5,e882235e <mDNS_Register_internal+0x8e4>
    e8822356:	85a2                	mv	a1,s0
    e8822358:	854a                	mv	a0,s2
    e882235a:	bf3f90ef          	jal	ra,e881bf4c <InitializeLastAPTime>
    rr->UpdateCredits     = kMaxUpdateCredits;
    e882235e:	47a9                	li	a5,10
    e8822360:	14f43023          	sd	a5,320(s0)
    if (rr->WakeUp.HMAC.l[0] && !rr->AddressProxy.type) rr->AnnounceCount = 2;
    e8822364:	07e42783          	lw	a5,126(s0)
    rr->NewRData          = mDNSNULL;
    e8822368:	12043423          	sd	zero,296(s0)
    rr->newrdlength       = 0;
    e882236c:	12041823          	sh	zero,304(s0)
    rr->UpdateCallback    = mDNSNULL;
    e8822370:	12043c23          	sd	zero,312(s0)
    rr->UpdateBlocked     = 0;
    e8822374:	14042423          	sw	zero,328(s0)
    if (rr->WakeUp.HMAC.l[0] && !rr->AddressProxy.type) rr->AnnounceCount = 2;
    e8822378:	c799                	beqz	a5,e8822386 <mDNS_Register_internal+0x90c>
    e882237a:	09042783          	lw	a5,144(s0)
    e882237e:	e781                	bnez	a5,e8822386 <mDNS_Register_internal+0x90c>
    e8822380:	4789                	li	a5,2
    e8822382:	0af40ba3          	sb	a5,183(s0)
    rr->updateid          = zeroID;
    e8822386:	00081797          	auipc	a5,0x81
    e882238a:	21a78793          	addi	a5,a5,538 # e88a35a0 <zeroID>
    e882238e:	0007d783          	lhu	a5,0(a5)
    if (rr->resrec.rrtype == kDNSType_TXT && rr->resrec.rdlength == 0) { rr->resrec.rdlength = 1; rr->resrec.rdata->u.txt.c[0] = 0; }
    e8822392:	00a45703          	lhu	a4,10(s0)
    rr->state             = regState_Zero;
    e8822396:	14041623          	sh	zero,332(s0)
    rr->updateid          = zeroID;
    e882239a:	14f41b23          	sh	a5,342(s0)
    rr->updateIntID       = zeroOpaque64;
    e882239e:	00081797          	auipc	a5,0x81
    e88223a2:	22278793          	addi	a5,a5,546 # e88a35c0 <zeroOpaque64>
    e88223a6:	639c                	ld	a5,0(a5)
    rr->expire            = 0;
    e88223a8:	14042823          	sw	zero,336(s0)
    rr->Private           = 0;
    e88223ac:	14040a23          	sb	zero,340(s0)
    rr->updateIntID       = zeroOpaque64;
    e88223b0:	14f43c23          	sd	a5,344(s0)
    rr->zone              = rr->resrec.name;
    e88223b4:	741c                	ld	a5,40(s0)
    rr->nta               = mDNSNULL;
    e88223b6:	16043423          	sd	zero,360(s0)
    rr->tcp               = mDNSNULL;
    e88223ba:	16043823          	sd	zero,368(s0)
    rr->zone              = rr->resrec.name;
    e88223be:	16f43023          	sd	a5,352(s0)
    rr->OrigRData         = 0;
    e88223c2:	1e043423          	sd	zero,488(s0)
    rr->InFlightRData     = 0;
    e88223c6:	1e043823          	sd	zero,496(s0)
    rr->QueuedRData       = 0;
    e88223ca:	1e043c23          	sd	zero,504(s0)
    rr->OrigRDLen         = 0;
    e88223ce:	1e042023          	sw	zero,480(s0)
    rr->QueuedRDLen       = 0;
    e88223d2:	1e041223          	sh	zero,484(s0)
    if (rr->resrec.rrtype == kDNSType_TXT && rr->resrec.rdlength == 0) { rr->resrec.rdlength = 1; rr->resrec.rdata->u.txt.c[0] = 0; }
    e88223d6:	47c1                	li	a5,16
    e88223d8:	00f71b63          	bne	a4,a5,e88223ee <mDNS_Register_internal+0x974>
    e88223dc:	01445783          	lhu	a5,20(s0)
    e88223e0:	e799                	bnez	a5,e88223ee <mDNS_Register_internal+0x974>
    e88223e2:	4785                	li	a5,1
    e88223e4:	00f41a23          	sh	a5,20(s0)
    e88223e8:	781c                	ld	a5,48(s0)
    e88223ea:	00078223          	sb	zero,4(a5)
    if (rr->AutoTarget)
    e88223ee:	07844783          	lbu	a5,120(s0)
    e88223f2:	9a0780e3          	beqz	a5,e8821d92 <mDNS_Register_internal+0x318>
        SetTargetToHostName(m, rr); // Also sets rdlength and rdestimate for us, and calls InitializeLastAPTime();
    e88223f6:	85a2                	mv	a1,s0
    e88223f8:	854a                	mv	a0,s2
    e88223fa:	dbdf90ef          	jal	ra,e881c1b6 <SetTargetToHostName>
        if (rr->state == regState_NoTarget)
    e88223fe:	14c44703          	lbu	a4,332(s0)
    e8822402:	47a1                	li	a5,8
    e8822404:	06f71163          	bne	a4,a5,e8822466 <mDNS_Register_internal+0x9ec>
            domainname *tar = GetRRDomainNameTarget(&rr->resrec);
    e8822408:	00a45603          	lhu	a2,10(s0)
    e882240c:	02500793          	li	a5,37
    e8822410:	ffe6071b          	addiw	a4,a2,-2
    e8822414:	3c07368b          	extu	a3,a4,15,0
    e8822418:	94d7e3e3          	bltu	a5,a3,e8821d5e <mDNS_Register_internal+0x2e4>
    e882241c:	4705                	li	a4,1
    e882241e:	1716                	slli	a4,a4,0x25
    e8822420:	40970713          	addi	a4,a4,1033
    e8822424:	00d75733          	srl	a4,a4,a3
    e8822428:	0007370b          	extu	a4,a4,0,0
    e882242c:	920709e3          	beqz	a4,e8821d5e <mDNS_Register_internal+0x2e4>
    e8822430:	781c                	ld	a5,48(s0)
    e8822432:	0791                	addi	a5,a5,4
            if (tar) tar->c[0] = 0;
    e8822434:	c399                	beqz	a5,e882243a <mDNS_Register_internal+0x9c0>
    e8822436:	00078023          	sb	zero,0(a5)
            LogInfo("mDNS_Register_internal: record %s in NoTarget state", ARDisplayString(m, rr));
    e882243a:	000b2797          	auipc	a5,0xb2
    e882243e:	63a78793          	addi	a5,a5,1594 # e88d4a74 <mDNS_LoggingEnabled>
    e8822442:	439c                	lw	a5,0(a5)
    e8822444:	c38d                	beqz	a5,e8822466 <mDNS_Register_internal+0x9ec>
    e8822446:	780c                	ld	a1,48(s0)
    e8822448:	03b90613          	addi	a2,s2,59
    e882244c:	00840513          	addi	a0,s0,8
    e8822450:	0591                	addi	a1,a1,4
    e8822452:	dc2f40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8822456:	862a                	mv	a2,a0
    e8822458:	00088597          	auipc	a1,0x88
    e882245c:	36858593          	addi	a1,a1,872 # e88aa7c0 <mDNS_DomainTypeNames+0xe10>
    e8822460:	450d                	li	a0,3
    e8822462:	04a0d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!ValidateDomainName(rr->resrec.name))
    e8822466:	7408                	ld	a0,40(s0)
    e8822468:	10050593          	addi	a1,a0,256
    e882246c:	ce1f00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8822470:	2501                	sext.w	a0,a0
    e8822472:	10000793          	li	a5,256
    e8822476:	780c                	ld	a1,48(s0)
    e8822478:	92a7fce3          	bgeu	a5,a0,e8821db0 <mDNS_Register_internal+0x336>
    { LogMsg("Attempt to register record with invalid name: %s", ARDisplayString(m, rr)); return(mStatus_Invalid); }
    e882247c:	03b90613          	addi	a2,s2,59
    e8822480:	0591                	addi	a1,a1,4
    e8822482:	00840513          	addi	a0,s0,8
    e8822486:	d8ef40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882248a:	862a                	mv	a2,a0
    e882248c:	00088597          	auipc	a1,0x88
    e8822490:	36c58593          	addi	a1,a1,876 # e88aa7f8 <mDNS_DomainTypeNames+0xe48>
    { LogMsg("Attempt to register record with invalid rdata: %s", ARDisplayString(m, rr)); return(mStatus_Invalid); }
    e8822494:	4501                	li	a0,0
    e8822496:	0160d0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882249a:	b87d                	j	e8821d58 <mDNS_Register_internal+0x2de>
            LogMsg("mDNS_Register_internal: ERROR!! Tried to register LocalOnly AuthRecord %p %##s (%s) that's already in the list",
    e882249c:	7414                	ld	a3,40(s0)
    e882249e:	00a45503          	lhu	a0,10(s0)
    e88224a2:	e036                	sd	a3,0(sp)
    e88224a4:	fbcf30ef          	jal	ra,e8815c60 <DNSTypeName>
    e88224a8:	872a                	mv	a4,a0
    e88224aa:	6682                	ld	a3,0(sp)
    e88224ac:	8622                	mv	a2,s0
    e88224ae:	00088597          	auipc	a1,0x88
    e88224b2:	56258593          	addi	a1,a1,1378 # e88aaa10 <mDNS_DomainTypeNames+0x1060>
    e88224b6:	81dff06f          	j	e8821cd2 <mDNS_Register_internal+0x258>

00000000e88224ba <AdvertiseInterface2>:
    if (m->AutoTargetServices == 0)
    e88224ba:	6795                	lui	a5,0x5
{
    e88224bc:	7135                	addi	sp,sp,-160
    if (m->AutoTargetServices == 0)
    e88224be:	97aa                	add	a5,a5,a0
{
    e88224c0:	e922                	sd	s0,144(sp)
    e88224c2:	ed06                	sd	ra,152(sp)
    e88224c4:	e526                	sd	s1,136(sp)
    e88224c6:	e14a                	sd	s2,128(sp)
    e88224c8:	fcce                	sd	s3,120(sp)
    e88224ca:	f8d2                	sd	s4,112(sp)
    e88224cc:	f4d6                	sd	s5,104(sp)
    e88224ce:	f0da                	sd	s6,96(sp)
    if (m->AutoTargetServices == 0)
    e88224d0:	e407a783          	lw	a5,-448(a5) # 4e40 <memcmp-0xe87fb1c0>
{
    e88224d4:	842e                	mv	s0,a1
    if (m->AutoTargetServices == 0)
    e88224d6:	ef85                	bnez	a5,e882250e <AdvertiseInterface2+0x54>
        LogInfo("AdvertiseInterface2: Returning due to AutoTargetServices zero for %s", set->ifname);
    e88224d8:	000b2797          	auipc	a5,0xb2
    e88224dc:	59c78793          	addi	a5,a5,1436 # e88d4a74 <mDNS_LoggingEnabled>
    e88224e0:	439c                	lw	a5,0(a5)
    e88224e2:	cf81                	beqz	a5,e88224fa <AdvertiseInterface2+0x40>
    e88224e4:	6609                	lui	a2,0x2
    e88224e6:	a2660613          	addi	a2,a2,-1498 # 1a26 <memcmp-0xe87fe5da>
    e88224ea:	962e                	add	a2,a2,a1
    e88224ec:	450d                	li	a0,3
    e88224ee:	00082597          	auipc	a1,0x82
    e88224f2:	b2258593          	addi	a1,a1,-1246 # e88a4010 <end.8789+0x968>
    e88224f6:	7b70c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e88224fa:	60ea                	ld	ra,152(sp)
    e88224fc:	644a                	ld	s0,144(sp)
    e88224fe:	64aa                	ld	s1,136(sp)
    e8822500:	690a                	ld	s2,128(sp)
    e8822502:	79e6                	ld	s3,120(sp)
    e8822504:	7a46                	ld	s4,112(sp)
    e8822506:	7aa6                	ld	s5,104(sp)
    e8822508:	7b06                	ld	s6,96(sp)
    e882250a:	610d                	addi	sp,sp,160
    e882250c:	8082                	ret
    primary = FindFirstAdvertisedInterface(m);
    e882250e:	678d                	lui	a5,0x3
    e8822510:	97aa                	add	a5,a5,a0
    e8822512:	1e07ba83          	ld	s5,480(a5) # 31e0 <memcmp-0xe87fce20>
    e8822516:	892a                	mv	s2,a0
        if (intf->Advertise) break;
    e8822518:	6789                	lui	a5,0x2
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882251a:	120a9763          	bnez	s5,e8822648 <AdvertiseInterface2+0x18e>
    if (!primary) primary = set; // If no existing advertised interface, this new NetworkInterfaceInfo becomes our new primary
    e882251e:	8aa2                	mv	s5,s0
    recordType = (set->DirectLink ? kDNSRecordTypeKnownUnique : kDNSRecordTypeUnique);
    e8822520:	6609                	lui	a2,0x2
    e8822522:	00c407b3          	add	a5,s0,a2
    e8822526:	a6c7c783          	lbu	a5,-1428(a5) # 1a6c <memcmp-0xe87fe594>
    e882252a:	1a079863          	bnez	a5,e88226da <AdvertiseInterface2+0x220>
    e882252e:	4789                	li	a5,2
    mDNS_SetupResourceRecord(&set->RR_A,     mDNSNULL, set->InterfaceID, kDNSType_A,     kHostNameTTL, recordType,                AuthRecordAny, mDNS_HostNameCallback, set);
    e8822530:	6b09                	lui	s6,0x2
    e8822532:	9b22                	add	s6,s6,s0
    e8822534:	6485                	lui	s1,0x1
    e8822536:	e022                	sd	s0,0(sp)
    e8822538:	dc048a13          	addi	s4,s1,-576 # dc0 <memcmp-0xe87ff240>
    e882253c:	9f0b3603          	ld	a2,-1552(s6) # 19f0 <memcmp-0xe87fe610>
    e8822540:	9a22                	add	s4,s4,s0
    e8822542:	00002897          	auipc	a7,0x2
    e8822546:	1b888893          	addi	a7,a7,440 # e88246fa <mDNS_HostNameCallback>
    e882254a:	4801                	li	a6,0
    e882254c:	07800713          	li	a4,120
    e8822550:	4685                	li	a3,1
    e8822552:	4581                	li	a1,0
    e8822554:	8552                	mv	a0,s4
    e8822556:	875f10ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    mDNS_SetupResourceRecord(&set->RR_PTR,   mDNSNULL, set->InterfaceID, kDNSType_PTR,   kHostNameTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL,              mDNSNULL);
    e882255a:	1d048993          	addi	s3,s1,464
    e882255e:	e002                	sd	zero,0(sp)
    e8822560:	9f0b3603          	ld	a2,-1552(s6)
    e8822564:	99a2                	add	s3,s3,s0
    e8822566:	4881                	li	a7,0
    e8822568:	4801                	li	a6,0
    e882256a:	02000793          	li	a5,32
    e882256e:	07800713          	li	a4,120
    e8822572:	46b1                	li	a3,12
    e8822574:	4581                	li	a1,0
    e8822576:	854e                	mv	a0,s3
    e8822578:	853f10ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    mDNS_SetupResourceRecord(&set->RR_HINFO, mDNSNULL, set->InterfaceID, kDNSType_HINFO, kHostNameTTL, kDNSRecordTypeUnique,      AuthRecordAny, mDNSNULL,              mDNSNULL);
    e882257c:	e002                	sd	zero,0(sp)
    e882257e:	9f0b3603          	ld	a2,-1552(s6)
    e8822582:	5e048513          	addi	a0,s1,1504
    e8822586:	4789                	li	a5,2
    e8822588:	4881                	li	a7,0
    e882258a:	4801                	li	a6,0
    e882258c:	07800713          	li	a4,120
    e8822590:	46b5                	li	a3,13
    e8822592:	4581                	li	a1,0
    e8822594:	9522                	add	a0,a0,s0
    e8822596:	835f10ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    AssignDomainName(&set->RR_A.namestorage, &m->MulticastHostname);
    e882259a:	658d                	lui	a1,0x3
    e882259c:	aa858b13          	addi	s6,a1,-1368 # 2aa8 <memcmp-0xe87fd558>
    e88225a0:	9b4a                	add	s6,s6,s2
    e88225a2:	ba858593          	addi	a1,a1,-1112
    e88225a6:	95ca                	add	a1,a1,s2
    e88225a8:	855a                	mv	a0,s6
    e88225aa:	ba3f00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88225ae:	0005061b          	sext.w	a2,a0
    e88225b2:	10000793          	li	a5,256
    e88225b6:	0ac7e263          	bltu	a5,a2,e882265a <AdvertiseInterface2+0x1a0>
    e88225ba:	fc048493          	addi	s1,s1,-64
    e88225be:	85da                	mv	a1,s6
    e88225c0:	00940533          	add	a0,s0,s1
    e88225c4:	4dc0d0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    if (set->ip.type == mDNSAddrType_IPv4)
    e88225c8:	6789                	lui	a5,0x2
    e88225ca:	00f406b3          	add	a3,s0,a5
    e88225ce:	9f86a703          	lw	a4,-1544(a3)
    e88225d2:	4611                	li	a2,4
    e88225d4:	08c71763          	bne	a4,a2,e8822662 <AdvertiseInterface2+0x1a8>
        set->RR_A.resrec.rrtype = kDNSType_A;
    e88225d8:	4705                	li	a4,1
    e88225da:	6785                	lui	a5,0x1
    e88225dc:	97a2                	add	a5,a5,s0
    e88225de:	dce79523          	sh	a4,-566(a5) # dca <memcmp-0xe87ff236>
        set->RR_A.resrec.rdata->u.ipv4 = set->ip.ip.v4;
    e88225e2:	df07b783          	ld	a5,-528(a5)
    e88225e6:	9fc6a703          	lw	a4,-1540(a3)
        mDNS_snprintf(buffer, sizeof(buffer), "%d.%d.%d.%d.in-addr.arpa.",
    e88225ea:	00082617          	auipc	a2,0x82
    e88225ee:	abe60613          	addi	a2,a2,-1346 # e88a40a8 <end.8789+0xa00>
    e88225f2:	04a00593          	li	a1,74
        set->RR_A.resrec.rdata->u.ipv4 = set->ip.ip.v4;
    e88225f6:	c3d8                	sw	a4,4(a5)
        mDNS_snprintf(buffer, sizeof(buffer), "%d.%d.%d.%d.in-addr.arpa.",
    e88225f8:	9fc6c803          	lbu	a6,-1540(a3)
    e88225fc:	9fd6c783          	lbu	a5,-1539(a3)
    e8822600:	9fe6c703          	lbu	a4,-1538(a3)
    e8822604:	9ff6c683          	lbu	a3,-1537(a3)
    e8822608:	0808                	addi	a0,sp,16
    e882260a:	e38f30ef          	jal	ra,e8815c42 <mDNS_snprintf>
    MakeDomainNameFromDNSNameString2(&set->RR_PTR.namestorage, buffer);
    e882260e:	6485                	lui	s1,0x1
    e8822610:	3d048513          	addi	a0,s1,976 # 13d0 <memcmp-0xe87fec30>
    e8822614:	080c                	addi	a1,sp,16
    e8822616:	9522                	add	a0,a0,s0
    e8822618:	eb9f00ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    set->RR_PTR.AutoTarget = Target_AutoHost;   // Tell mDNS that the target of this PTR is to be kept in sync with our host name
    e882261c:	9426                	add	s0,s0,s1
    set->RR_A.RRSet = &primary->RR_A;           // May refer to self
    e882261e:	dc048493          	addi	s1,s1,-576
    set->RR_PTR.AutoTarget = Target_AutoHost;   // Tell mDNS that the target of this PTR is to be kept in sync with our host name
    e8822622:	4785                	li	a5,1
    set->RR_A.RRSet = &primary->RR_A;           // May refer to self
    e8822624:	94d6                	add	s1,s1,s5
    set->RR_PTR.AutoTarget = Target_AutoHost;   // Tell mDNS that the target of this PTR is to be kept in sync with our host name
    e8822626:	24f40423          	sb	a5,584(s0)
    set->RR_PTR.ForceMCast = mDNStrue;          // This PTR points to our dot-local name, so don't ever try to write it into a uDNS server
    e882262a:	24f40523          	sb	a5,586(s0)
    mDNS_Register_internal(m, &set->RR_A);
    e882262e:	85d2                	mv	a1,s4
    set->RR_A.RRSet = &primary->RR_A;           // May refer to self
    e8822630:	e2943023          	sd	s1,-480(s0)
    mDNS_Register_internal(m, &set->RR_A);
    e8822634:	854a                	mv	a0,s2
    e8822636:	c44ff0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    mDNS_Register_internal(m, &set->RR_PTR);
    e882263a:	85ce                	mv	a1,s3
    e882263c:	854a                	mv	a0,s2
    e882263e:	c3cff0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
        set->RR_HINFO.resrec.RecordType = kDNSRecordTypeUnregistered;
    e8822642:	5e040423          	sb	zero,1512(s0)
    e8822646:	bd55                	j	e88224fa <AdvertiseInterface2+0x40>
        if (intf->Advertise) break;
    e8822648:	00fa8733          	add	a4,s5,a5
    e882264c:	a6674703          	lbu	a4,-1434(a4)
    e8822650:	ec0718e3          	bnez	a4,e8822520 <AdvertiseInterface2+0x66>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822654:	000aba83          	ld	s5,0(s5)
    e8822658:	b5c9                	j	e882251a <AdvertiseInterface2+0x60>
    AssignDomainName(&set->RR_A.namestorage, &m->MulticastHostname);
    e882265a:	94a2                	add	s1,s1,s0
    e882265c:	fc048023          	sb	zero,-64(s1)
    e8822660:	b7a5                	j	e88225c8 <AdvertiseInterface2+0x10e>
    else if (set->ip.type == mDNSAddrType_IPv6)
    e8822662:	4619                	li	a2,6
    e8822664:	fac715e3          	bne	a4,a2,e882260e <AdvertiseInterface2+0x154>
        set->RR_A.resrec.rrtype = kDNSType_AAAA;
    e8822668:	4671                	li	a2,28
    e882266a:	6705                	lui	a4,0x1
    e882266c:	9722                	add	a4,a4,s0
    e882266e:	dcc71523          	sh	a2,-566(a4) # dca <memcmp-0xe87ff236>
        set->RR_A.resrec.rdata->u.ipv6 = set->ip.ip.v6;
    e8822672:	df073703          	ld	a4,-528(a4)
    e8822676:	9fc6b603          	ld	a2,-1540(a3)
            buffer[i * 4    ] = hexValues[set->ip.ip.v6.b[15 - i] & 0x0F];
    e882267a:	00086517          	auipc	a0,0x86
    e882267e:	93650513          	addi	a0,a0,-1738 # e88a7fb0 <hexValues.12413>
            buffer[i * 4 + 1] = '.';
    e8822682:	02e00593          	li	a1,46
        set->RR_A.resrec.rdata->u.ipv6 = set->ip.ip.v6;
    e8822686:	00c73223          	sd	a2,4(a4)
    e882268a:	a046b683          	ld	a3,-1532(a3)
    e882268e:	00d73623          	sd	a3,12(a4)
        for (i = 0; i < 16; i++)
    e8822692:	a0b78693          	addi	a3,a5,-1525
    e8822696:	9fb78793          	addi	a5,a5,-1541
    e882269a:	96a2                	add	a3,a3,s0
    e882269c:	0818                	addi	a4,sp,16
    e882269e:	97a2                	add	a5,a5,s0
            buffer[i * 4    ] = hexValues[set->ip.ip.v6.b[15 - i] & 0x0F];
    e88226a0:	99f6c60b          	lbuia	a2,(a3),-1,0
            buffer[i * 4 + 1] = '.';
    e88226a4:	00b700a3          	sb	a1,1(a4)
            buffer[i * 4 + 3] = '.';
    e88226a8:	00b701a3          	sb	a1,3(a4)
            buffer[i * 4    ] = hexValues[set->ip.ip.v6.b[15 - i] & 0x0F];
    e88226ac:	00f67813          	andi	a6,a2,15
            buffer[i * 4 + 2] = hexValues[set->ip.ip.v6.b[15 - i] >> 4];
    e88226b0:	8211                	srli	a2,a2,0x4
            buffer[i * 4    ] = hexValues[set->ip.ip.v6.b[15 - i] & 0x0F];
    e88226b2:	8105480b          	lrbu	a6,a0,a6,0
            buffer[i * 4 + 2] = hexValues[set->ip.ip.v6.b[15 - i] >> 4];
    e88226b6:	80c5460b          	lrbu	a2,a0,a2,0
    e88226ba:	0711                	addi	a4,a4,4
            buffer[i * 4    ] = hexValues[set->ip.ip.v6.b[15 - i] & 0x0F];
    e88226bc:	ff070e23          	sb	a6,-4(a4)
            buffer[i * 4 + 2] = hexValues[set->ip.ip.v6.b[15 - i] >> 4];
    e88226c0:	fec70f23          	sb	a2,-2(a4)
        for (i = 0; i < 16; i++)
    e88226c4:	fcd79ee3          	bne	a5,a3,e88226a0 <AdvertiseInterface2+0x1e6>
        mDNS_snprintf(&buffer[64], sizeof(buffer)-64, "ip6.arpa.");
    e88226c8:	00082617          	auipc	a2,0x82
    e88226cc:	a0060613          	addi	a2,a2,-1536 # e88a40c8 <end.8789+0xa20>
    e88226d0:	45a9                	li	a1,10
    e88226d2:	0888                	addi	a0,sp,80
    e88226d4:	d6ef30ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e88226d8:	bf1d                	j	e882260e <AdvertiseInterface2+0x154>
        LogInfo("AdvertiseInterface2: Marking address record as kDNSRecordTypeKnownUnique for %s", set->ifname);
    e88226da:	000b2797          	auipc	a5,0xb2
    e88226de:	39a78793          	addi	a5,a5,922 # e88d4a74 <mDNS_LoggingEnabled>
    e88226e2:	439c                	lw	a5,0(a5)
    e88226e4:	cb99                	beqz	a5,e88226fa <AdvertiseInterface2+0x240>
    e88226e6:	a2660613          	addi	a2,a2,-1498
    e88226ea:	9622                	add	a2,a2,s0
    e88226ec:	00082597          	auipc	a1,0x82
    e88226f0:	96c58593          	addi	a1,a1,-1684 # e88a4058 <end.8789+0x9b0>
    e88226f4:	450d                	li	a0,3
    e88226f6:	5b70c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    recordType = (set->DirectLink ? kDNSRecordTypeKnownUnique : kDNSRecordTypeUnique);
    e88226fa:	02000793          	li	a5,32
    e88226fe:	bd0d                	j	e8822530 <AdvertiseInterface2+0x76>

00000000e8822700 <AdvertiseAllInterfaceRecords>:
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822700:	678d                	lui	a5,0x3
{
    e8822702:	7139                	addi	sp,sp,-64
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822704:	97aa                	add	a5,a5,a0
{
    e8822706:	e826                	sd	s1,16(sp)
    e8822708:	ec4a                	sd	s2,24(sp)
    e882270a:	f04e                	sd	s3,32(sp)
    e882270c:	f452                	sd	s4,40(sp)
    e882270e:	f856                	sd	s5,48(sp)
    e8822710:	fc06                	sd	ra,56(sp)
    e8822712:	e422                	sd	s0,8(sp)
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822714:	1e07b403          	ld	s0,480(a5) # 31e0 <memcmp-0xe87fce20>
        if (intf->Advertise)
    e8822718:	6909                	lui	s2,0x2
{
    e882271a:	84aa                	mv	s1,a0
            LogInfo("AdvertiseInterface2: Advertising for ifname %s", intf->ifname);
    e882271c:	000b2997          	auipc	s3,0xb2
    e8822720:	35898993          	addi	s3,s3,856 # e88d4a74 <mDNS_LoggingEnabled>
    e8822724:	a2690a13          	addi	s4,s2,-1498 # 1a26 <memcmp-0xe87fe5da>
    e8822728:	00082a97          	auipc	s5,0x82
    e882272c:	8b8a8a93          	addi	s5,s5,-1864 # e88a3fe0 <end.8789+0x938>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822730:	e811                	bnez	s0,e8822744 <AdvertiseAllInterfaceRecords+0x44>
}
    e8822732:	70e2                	ld	ra,56(sp)
    e8822734:	6422                	ld	s0,8(sp)
    e8822736:	64c2                	ld	s1,16(sp)
    e8822738:	6962                	ld	s2,24(sp)
    e882273a:	7982                	ld	s3,32(sp)
    e882273c:	7a22                	ld	s4,40(sp)
    e882273e:	7ac2                	ld	s5,48(sp)
    e8822740:	6121                	addi	sp,sp,64
    e8822742:	8082                	ret
        if (intf->Advertise)
    e8822744:	012407b3          	add	a5,s0,s2
    e8822748:	a667c783          	lbu	a5,-1434(a5)
    e882274c:	cf91                	beqz	a5,e8822768 <AdvertiseAllInterfaceRecords+0x68>
            LogInfo("AdvertiseInterface2: Advertising for ifname %s", intf->ifname);
    e882274e:	0009a783          	lw	a5,0(s3)
    e8822752:	c799                	beqz	a5,e8822760 <AdvertiseAllInterfaceRecords+0x60>
    e8822754:	01440633          	add	a2,s0,s4
    e8822758:	85d6                	mv	a1,s5
    e882275a:	450d                	li	a0,3
    e882275c:	5510c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            AdvertiseInterface2(m, intf);
    e8822760:	85a2                	mv	a1,s0
    e8822762:	8526                	mv	a0,s1
    e8822764:	d57ff0ef          	jal	ra,e88224ba <AdvertiseInterface2>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822768:	6000                	ld	s0,0(s0)
    e882276a:	b7d9                	j	e8822730 <AdvertiseAllInterfaceRecords+0x30>

00000000e882276c <mDNS_Deregister_internal>:
{
    e882276c:	711d                	addi	sp,sp,-96
    e882276e:	e8a2                	sd	s0,80(sp)
    e8822770:	e4a6                	sd	s1,72(sp)
    e8822772:	f852                	sd	s4,48(sp)
    e8822774:	ec86                	sd	ra,88(sp)
    e8822776:	e0ca                	sd	s2,64(sp)
    e8822778:	fc4e                	sd	s3,56(sp)
    e882277a:	f456                	sd	s5,40(sp)
    e882277c:	f05a                	sd	s6,32(sp)
    e882277e:	ec5e                	sd	s7,24(sp)
    e8822780:	e862                	sd	s8,16(sp)
    e8822782:	e466                	sd	s9,8(sp)
    e8822784:	e06a                	sd	s10,0(sp)
    if (RRLocalOnly(rr))
    e8822786:	0ac5c783          	lbu	a5,172(a1)
    e882278a:	4705                	li	a4,1
{
    e882278c:	84aa                	mv	s1,a0
    if (RRLocalOnly(rr))
    e882278e:	37f1                	addiw	a5,a5,-4
    e8822790:	0ff7f793          	andi	a5,a5,255
{
    e8822794:	842e                	mv	s0,a1
    e8822796:	8a32                	mv	s4,a2
    mDNSu8 RecordType = rr->resrec.RecordType;
    e8822798:	0085ca83          	lbu	s5,8(a1)
    if (RRLocalOnly(rr))
    e882279c:	02f77063          	bgeu	a4,a5,e88227bc <mDNS_Deregister_internal+0x50>
    AuthRecord **p = &m->ResourceRecords;   // Find this record in our list of active records
    e88227a0:	678d                	lui	a5,0x3
    e88227a2:	1b878993          	addi	s3,a5,440 # 31b8 <memcmp-0xe87fce48>
    e88227a6:	97aa                	add	a5,a5,a0
    e88227a8:	1b87b783          	ld	a5,440(a5)
    e88227ac:	01350b33          	add	s6,a0,s3
        while (*p && *p != rr) p=&(*p)->next;
    e88227b0:	c78d                	beqz	a5,e88227da <mDNS_Deregister_internal+0x6e>
    e88227b2:	02878463          	beq	a5,s0,e88227da <mDNS_Deregister_internal+0x6e>
    e88227b6:	8b3e                	mv	s6,a5
    e88227b8:	639c                	ld	a5,0(a5)
    e88227ba:	bfdd                	j	e88227b0 <mDNS_Deregister_internal+0x44>
        a = AuthGroupForRecord(&m->rrauth, &rr->resrec);
    e88227bc:	6509                	lui	a0,0x2
    e88227be:	a7850513          	addi	a0,a0,-1416 # 1a78 <memcmp-0xe87fe588>
    e88227c2:	05a1                	addi	a1,a1,8
    e88227c4:	9526                	add	a0,a0,s1
    e88227c6:	b51fb0ef          	jal	ra,e881e316 <AuthGroupForRecord>
        if (!a) return mDNSfalse;
    e88227ca:	4781                	li	a5,0
    e88227cc:	c935                	beqz	a0,e8822840 <mDNS_Deregister_internal+0xd4>
        rp = &a->members;
    e88227ce:	691c                	ld	a5,16(a0)
    e88227d0:	01050b13          	addi	s6,a0,16
        while (*rp && *rp != rr) rp=&(*rp)->next;
    e88227d4:	c399                	beqz	a5,e88227da <mDNS_Deregister_internal+0x6e>
    e88227d6:	08879463          	bne	a5,s0,e882285e <mDNS_Deregister_internal+0xf2>
    if (*p)
    e88227da:	698d                	lui	s3,0x3
    e88227dc:	013487b3          	add	a5,s1,s3
    e88227e0:	1c07b903          	ld	s2,448(a5)
    e88227e4:	000b3783          	ld	a5,0(s6)
    e88227e8:	28078363          	beqz	a5,e8822a6e <mDNS_Deregister_internal+0x302>
        if (drt == mDNS_Dereg_conflict)     // If this was a conflict, see that all duplicates get the same treatment
    e88227ec:	4789                	li	a5,2
    e88227ee:	0efa1a63          	bne	s4,a5,e88228e2 <mDNS_Deregister_internal+0x176>
            for (r2 = m->DuplicateRecords; r2; r2=r2->next) if (RecordIsLocalDuplicate(r2, rr)) r2->ProbeCount = 0xFF;
    e88227f2:	5bfd                	li	s7,-1
    e88227f4:	020b9993          	slli	s3,s7,0x20
    e88227f8:	0109d993          	srli	s3,s3,0x10
    e88227fc:	ffff1c97          	auipc	s9,0xffff1
    e8822800:	84ec8c93          	addi	s9,s9,-1970 # e881304a <SameDomainName>
    e8822804:	4d49                	li	s10,18
    e8822806:	4c05                	li	s8,1
    e8822808:	04091e63          	bnez	s2,e8822864 <mDNS_Deregister_internal+0xf8>
    if (!*p)
    e882280c:	000b3783          	ld	a5,0(s6)
    e8822810:	28079d63          	bnez	a5,e8822aaa <mDNS_Deregister_internal+0x33e>
        if (drt != mDNS_Dereg_repeat)
    e8822814:	478d                	li	a5,3
    e8822816:	02fa0363          	beq	s4,a5,e882283c <mDNS_Deregister_internal+0xd0>
            LogMsg("mDNS_Deregister_internal: Record %p not found in list %s", rr, ARDisplayString(m,rr));
    e882281a:	780c                	ld	a1,48(s0)
    e882281c:	03b48613          	addi	a2,s1,59
    e8822820:	00840513          	addi	a0,s0,8
    e8822824:	0591                	addi	a1,a1,4
    e8822826:	9eef40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882282a:	86aa                	mv	a3,a0
    e882282c:	8622                	mv	a2,s0
    e882282e:	00087597          	auipc	a1,0x87
    e8822832:	fea58593          	addi	a1,a1,-22 # e88a9818 <hexValues.12413+0x1868>
    e8822836:	4501                	li	a0,0
    e8822838:	4750c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return(mStatus_BadReferenceErr);
    e882283c:	77c1                	lui	a5,0xffff0
    e882283e:	17ed                	addi	a5,a5,-5
}
    e8822840:	60e6                	ld	ra,88(sp)
    e8822842:	6446                	ld	s0,80(sp)
    e8822844:	64a6                	ld	s1,72(sp)
    e8822846:	6906                	ld	s2,64(sp)
    e8822848:	79e2                	ld	s3,56(sp)
    e882284a:	7a42                	ld	s4,48(sp)
    e882284c:	7aa2                	ld	s5,40(sp)
    e882284e:	7b02                	ld	s6,32(sp)
    e8822850:	6be2                	ld	s7,24(sp)
    e8822852:	6c42                	ld	s8,16(sp)
    e8822854:	6ca2                	ld	s9,8(sp)
    e8822856:	6d02                	ld	s10,0(sp)
    e8822858:	853e                	mv	a0,a5
    e882285a:	6125                	addi	sp,sp,96
    e882285c:	8082                	ret
        while (*rp && *rp != rr) rp=&(*rp)->next;
    e882285e:	8b3e                	mv	s6,a5
    e8822860:	639c                	ld	a5,0(a5)
    e8822862:	bf8d                	j	e88227d4 <mDNS_Deregister_internal+0x68>
            for (r2 = m->DuplicateRecords; r2; r2=r2->next) if (RecordIsLocalDuplicate(r2, rr)) r2->ProbeCount = 0xFF;
    e8822864:	02093703          	ld	a4,32(s2)
    e8822868:	701c                	ld	a5,32(s0)
    e882286a:	06f71963          	bne	a4,a5,e88228dc <mDNS_Deregister_internal+0x170>
    e882286e:	00894703          	lbu	a4,8(s2)
    e8822872:	00844783          	lbu	a5,8(s0)
    e8822876:	00f70a63          	beq	a4,a5,e882288a <mDNS_Deregister_internal+0x11e>
    e882287a:	00f766b3          	or	a3,a4,a5
    e882287e:	01a68663          	beq	a3,s10,e882288a <mDNS_Deregister_internal+0x11e>
    e8822882:	01870463          	beq	a4,s8,e882288a <mDNS_Deregister_internal+0x11e>
    e8822886:	05879b63          	bne	a5,s8,e88228dc <mDNS_Deregister_internal+0x170>
    e882288a:	00893703          	ld	a4,8(s2)
    e882288e:	641c                	ld	a5,8(s0)
    e8822890:	01377733          	and	a4,a4,s3
    e8822894:	0137f7b3          	and	a5,a5,s3
    e8822898:	04f71263          	bne	a4,a5,e88228dc <mDNS_Deregister_internal+0x170>
    e882289c:	01892703          	lw	a4,24(s2)
    e88228a0:	4c1c                	lw	a5,24(s0)
    e88228a2:	02f71d63          	bne	a4,a5,e88228dc <mDNS_Deregister_internal+0x170>
    e88228a6:	01495703          	lhu	a4,20(s2)
    e88228aa:	01445783          	lhu	a5,20(s0)
    e88228ae:	02f71763          	bne	a4,a5,e88228dc <mDNS_Deregister_internal+0x170>
    e88228b2:	01c92703          	lw	a4,28(s2)
    e88228b6:	4c5c                	lw	a5,28(s0)
    e88228b8:	02f71263          	bne	a4,a5,e88228dc <mDNS_Deregister_internal+0x170>
    e88228bc:	780c                	ld	a1,48(s0)
    e88228be:	8666                	mv	a2,s9
    e88228c0:	00890513          	addi	a0,s2,8
    e88228c4:	0591                	addi	a1,a1,4
    e88228c6:	f44f10ef          	jal	ra,e881400a <SameRDataBody>
    e88228ca:	c909                	beqz	a0,e88228dc <mDNS_Deregister_internal+0x170>
    e88228cc:	740c                	ld	a1,40(s0)
    e88228ce:	02893503          	ld	a0,40(s2)
    e88228d2:	f78f00ef          	jal	ra,e881304a <SameDomainName>
    e88228d6:	c119                	beqz	a0,e88228dc <mDNS_Deregister_internal+0x170>
    e88228d8:	0b790b23          	sb	s7,182(s2)
    e88228dc:	00093903          	ld	s2,0(s2)
    e88228e0:	b725                	j	e8822808 <mDNS_Deregister_internal+0x9c>
            while (*d && !RecordIsLocalDuplicate(*d, rr)) d=&(*d)->next;
    e88228e2:	597d                	li	s2,-1
            AuthRecord **d = &m->DuplicateRecords;
    e88228e4:	1c098993          	addi	s3,s3,448 # 31c0 <memcmp-0xe87fce40>
            while (*d && !RecordIsLocalDuplicate(*d, rr)) d=&(*d)->next;
    e88228e8:	1902                	slli	s2,s2,0x20
            AuthRecord **d = &m->DuplicateRecords;
    e88228ea:	99a6                	add	s3,s3,s1
            while (*d && !RecordIsLocalDuplicate(*d, rr)) d=&(*d)->next;
    e88228ec:	01095913          	srli	s2,s2,0x10
    e88228f0:	ffff0c17          	auipc	s8,0xffff0
    e88228f4:	75ac0c13          	addi	s8,s8,1882 # e881304a <SameDomainName>
    e88228f8:	4cc9                	li	s9,18
    e88228fa:	4b85                	li	s7,1
    e88228fc:	0009b503          	ld	a0,0(s3)
    e8822900:	e57d                	bnez	a0,e88229ee <mDNS_Deregister_internal+0x282>
            if (*d)
    e8822902:	0009b903          	ld	s2,0(s3)
    e8822906:	f00903e3          	beqz	s2,e882280c <mDNS_Deregister_internal+0xa0>
                *d        = dup->next;      // Cut replacement record from DuplicateRecords list
    e882290a:	00093783          	ld	a5,0(s2)
                if (RRLocalOnly(rr))
    e882290e:	4705                	li	a4,1
                *d        = dup->next;      // Cut replacement record from DuplicateRecords list
    e8822910:	00f9b023          	sd	a5,0(s3)
                if (RRLocalOnly(rr))
    e8822914:	0ac44783          	lbu	a5,172(s0)
    e8822918:	37f1                	addiw	a5,a5,-4
    e882291a:	0ff7f793          	andi	a5,a5,255
    e882291e:	14f76263          	bltu	a4,a5,e8822a62 <mDNS_Deregister_internal+0x2f6>
                    if (!InsertAuthRecord(m, &m->rrauth, dup)) LogMsg("mDNS_Deregister_internal: ERROR!! cannot insert %s", ARDisplayString(m, dup));
    e8822922:	6589                	lui	a1,0x2
    e8822924:	a7858593          	addi	a1,a1,-1416 # 1a78 <memcmp-0xe87fe588>
                    dup->next = mDNSNULL;
    e8822928:	00093023          	sd	zero,0(s2)
                    if (!InsertAuthRecord(m, &m->rrauth, dup)) LogMsg("mDNS_Deregister_internal: ERROR!! cannot insert %s", ARDisplayString(m, dup));
    e882292c:	864a                	mv	a2,s2
    e882292e:	95a6                	add	a1,a1,s1
    e8822930:	8526                	mv	a0,s1
    e8822932:	9edfb0ef          	jal	ra,e881e31e <InsertAuthRecord>
    e8822936:	e115                	bnez	a0,e882295a <mDNS_Deregister_internal+0x1ee>
    e8822938:	03093583          	ld	a1,48(s2)
    e882293c:	03b48613          	addi	a2,s1,59
    e8822940:	00890513          	addi	a0,s2,8
    e8822944:	0591                	addi	a1,a1,4
    e8822946:	8cef40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882294a:	862a                	mv	a2,a0
    e882294c:	00087597          	auipc	a1,0x87
    e8822950:	e9458593          	addi	a1,a1,-364 # e88a97e0 <hexValues.12413+0x1830>
    e8822954:	4501                	li	a0,0
    e8822956:	3570c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                dup->resrec.RecordType        = rr->resrec.RecordType;
    e882295a:	00844783          	lbu	a5,8(s0)
    e882295e:	00f90423          	sb	a5,8(s2)
                dup->ProbeCount      = rr->ProbeCount;
    e8822962:	0b644783          	lbu	a5,182(s0)
    e8822966:	0af90b23          	sb	a5,182(s2)
                dup->ProbeRestartCount = rr->ProbeRestartCount;
    e882296a:	0b544783          	lbu	a5,181(s0)
    e882296e:	0af90aa3          	sb	a5,181(s2)
                dup->AnnounceCount   = rr->AnnounceCount;
    e8822972:	0b744783          	lbu	a5,183(s0)
    e8822976:	0af90ba3          	sb	a5,183(s2)
                dup->RequireGoodbye  = rr->RequireGoodbye;
    e882297a:	0b844783          	lbu	a5,184(s0)
    e882297e:	0af90c23          	sb	a5,184(s2)
                dup->AnsweredLocalQ  = rr->AnsweredLocalQ;
    e8822982:	0b944783          	lbu	a5,185(s0)
    e8822986:	0af90ca3          	sb	a5,185(s2)
                dup->ImmedAnswer     = rr->ImmedAnswer;
    e882298a:	647c                	ld	a5,200(s0)
    e882298c:	0cf93423          	sd	a5,200(s2)
                dup->ImmedUnicast    = rr->ImmedUnicast;
    e8822990:	0bb44783          	lbu	a5,187(s0)
    e8822994:	0af90da3          	sb	a5,187(s2)
                dup->ImmedAdditional = rr->ImmedAdditional;
    e8822998:	687c                	ld	a5,208(s0)
    e882299a:	0cf93823          	sd	a5,208(s2)
                dup->v4Requester     = rr->v4Requester;
    e882299e:	0e042783          	lw	a5,224(s0)
    e88229a2:	0ef92023          	sw	a5,224(s2)
                dup->v6Requester     = rr->v6Requester;
    e88229a6:	0e443783          	ld	a5,228(s0)
    e88229aa:	0ef93223          	sd	a5,228(s2)
    e88229ae:	0ec43783          	ld	a5,236(s0)
    e88229b2:	0ef93623          	sd	a5,236(s2)
                dup->ThisAPInterval  = rr->ThisAPInterval;
    e88229b6:	11042783          	lw	a5,272(s0)
    e88229ba:	10f92823          	sw	a5,272(s2)
                dup->LastAPTime      = rr->LastAPTime;
    e88229be:	11442783          	lw	a5,276(s0)
    e88229c2:	10f92a23          	sw	a5,276(s2)
                dup->LastMCTime      = rr->LastMCTime;
    e88229c6:	11842783          	lw	a5,280(s0)
    e88229ca:	10f92c23          	sw	a5,280(s2)
                dup->LastMCInterface = rr->LastMCInterface;
    e88229ce:	12043783          	ld	a5,288(s0)
    e88229d2:	12f93023          	sd	a5,288(s2)
                dup->Private         = rr->Private;
    e88229d6:	15444783          	lbu	a5,340(s0)
    e88229da:	14f90a23          	sb	a5,340(s2)
                dup->state           = rr->state;
    e88229de:	14c44783          	lbu	a5,332(s0)
    e88229e2:	14f90623          	sb	a5,332(s2)
                rr->RequireGoodbye = mDNSfalse;
    e88229e6:	0a041c23          	sh	zero,184(s0)
    mDNSBool dupList = mDNSfalse;
    e88229ea:	4901                	li	s2,0
    e88229ec:	b505                	j	e882280c <mDNS_Deregister_internal+0xa0>
            while (*d && !RecordIsLocalDuplicate(*d, rr)) d=&(*d)->next;
    e88229ee:	7118                	ld	a4,32(a0)
    e88229f0:	701c                	ld	a5,32(s0)
    e88229f2:	06f71563          	bne	a4,a5,e8822a5c <mDNS_Deregister_internal+0x2f0>
    e88229f6:	00854703          	lbu	a4,8(a0)
    e88229fa:	00844783          	lbu	a5,8(s0)
    e88229fe:	00f70a63          	beq	a4,a5,e8822a12 <mDNS_Deregister_internal+0x2a6>
    e8822a02:	00f766b3          	or	a3,a4,a5
    e8822a06:	01968663          	beq	a3,s9,e8822a12 <mDNS_Deregister_internal+0x2a6>
    e8822a0a:	01770463          	beq	a4,s7,e8822a12 <mDNS_Deregister_internal+0x2a6>
    e8822a0e:	05779763          	bne	a5,s7,e8822a5c <mDNS_Deregister_internal+0x2f0>
    e8822a12:	6518                	ld	a4,8(a0)
    e8822a14:	641c                	ld	a5,8(s0)
    e8822a16:	01277733          	and	a4,a4,s2
    e8822a1a:	0127f7b3          	and	a5,a5,s2
    e8822a1e:	02f71f63          	bne	a4,a5,e8822a5c <mDNS_Deregister_internal+0x2f0>
    e8822a22:	4d18                	lw	a4,24(a0)
    e8822a24:	4c1c                	lw	a5,24(s0)
    e8822a26:	02f71b63          	bne	a4,a5,e8822a5c <mDNS_Deregister_internal+0x2f0>
    e8822a2a:	01455703          	lhu	a4,20(a0)
    e8822a2e:	01445783          	lhu	a5,20(s0)
    e8822a32:	02f71563          	bne	a4,a5,e8822a5c <mDNS_Deregister_internal+0x2f0>
    e8822a36:	4d58                	lw	a4,28(a0)
    e8822a38:	4c5c                	lw	a5,28(s0)
    e8822a3a:	02f71163          	bne	a4,a5,e8822a5c <mDNS_Deregister_internal+0x2f0>
    e8822a3e:	780c                	ld	a1,48(s0)
    e8822a40:	8662                	mv	a2,s8
    e8822a42:	0521                	addi	a0,a0,8
    e8822a44:	0591                	addi	a1,a1,4
    e8822a46:	dc4f10ef          	jal	ra,e881400a <SameRDataBody>
    e8822a4a:	c909                	beqz	a0,e8822a5c <mDNS_Deregister_internal+0x2f0>
    e8822a4c:	0009b783          	ld	a5,0(s3)
    e8822a50:	740c                	ld	a1,40(s0)
    e8822a52:	7788                	ld	a0,40(a5)
    e8822a54:	df6f00ef          	jal	ra,e881304a <SameDomainName>
    e8822a58:	ea0515e3          	bnez	a0,e8822902 <mDNS_Deregister_internal+0x196>
    e8822a5c:	0009b983          	ld	s3,0(s3)
    e8822a60:	bd71                	j	e88228fc <mDNS_Deregister_internal+0x190>
                    dup->next = rr->next;       // And then...
    e8822a62:	601c                	ld	a5,0(s0)
    e8822a64:	00f93023          	sd	a5,0(s2)
                    rr->next  = dup;            // ... splice it in right after the record we're about to delete
    e8822a68:	01243023          	sd	s2,0(s0)
    e8822a6c:	b5fd                	j	e882295a <mDNS_Deregister_internal+0x1ee>
        p = &m->DuplicateRecords;
    e8822a6e:	1c098993          	addi	s3,s3,448
    e8822a72:	01348b33          	add	s6,s1,s3
        while (*p && *p != rr) p=&(*p)->next;
    e8822a76:	f6090ae3          	beqz	s2,e88229ea <mDNS_Deregister_internal+0x27e>
    e8822a7a:	02891463          	bne	s2,s0,e8822aa2 <mDNS_Deregister_internal+0x336>
            rr->WakeUp.HMAC    = zeroEthAddr;
    e8822a7e:	00081797          	auipc	a5,0x81
    e8822a82:	b1a78793          	addi	a5,a5,-1254 # e88a3598 <zeroEthAddr>
    e8822a86:	4398                	lw	a4,0(a5)
    e8822a88:	0047d783          	lhu	a5,4(a5)
            rr->RequireGoodbye = mDNSfalse;
    e8822a8c:	0a040c23          	sb	zero,184(s0)
            rr->WakeUp.HMAC    = zeroEthAddr;
    e8822a90:	06e42f23          	sw	a4,126(s0)
    e8822a94:	08f41123          	sh	a5,130(s0)
            rr->resrec.RecordType = kDNSRecordTypeDeregistering;
    e8822a98:	4785                	li	a5,1
    e8822a9a:	00f40423          	sb	a5,8(s0)
            dupList = mDNStrue;
    e8822a9e:	4905                	li	s2,1
    e8822aa0:	b3b5                	j	e882280c <mDNS_Deregister_internal+0xa0>
        while (*p && *p != rr) p=&(*p)->next;
    e8822aa2:	8b4a                	mv	s6,s2
    e8822aa4:	00093903          	ld	s2,0(s2)
    e8822aa8:	b7f9                	j	e8822a76 <mDNS_Deregister_internal+0x30a>
    if (AuthRecord_uDNS(rr))
    e8822aaa:	00080797          	auipc	a5,0x80
    e8822aae:	2b678793          	addi	a5,a5,694 # e88a2d60 <mDNSInterface_Any>
    e8822ab2:	0007b983          	ld	s3,0(a5)
    e8822ab6:	701c                	ld	a5,32(s0)
    e8822ab8:	07379f63          	bne	a5,s3,e8822b36 <mDNS_Deregister_internal+0x3ca>
    e8822abc:	07a44783          	lbu	a5,122(s0)
    e8822ac0:	ebbd                	bnez	a5,e8822b36 <mDNS_Deregister_internal+0x3ca>
    e8822ac2:	7408                	ld	a0,40(s0)
    e8822ac4:	ddef00ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8822ac8:	e53d                	bnez	a0,e8822b36 <mDNS_Deregister_internal+0x3ca>
        if (rr->RequireGoodbye)
    e8822aca:	0b844783          	lbu	a5,184(s0)
    e8822ace:	c39d                	beqz	a5,e8822af4 <mDNS_Deregister_internal+0x388>
            if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL; }
    e8822ad0:	17043503          	ld	a0,368(s0)
    e8822ad4:	c509                	beqz	a0,e8822ade <mDNS_Deregister_internal+0x372>
    e8822ad6:	40d100ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8822ada:	16043823          	sd	zero,368(s0)
            rr->resrec.RecordType    = kDNSRecordTypeDeregistering;
    e8822ade:	4785                	li	a5,1
    e8822ae0:	00f40423          	sb	a5,8(s0)
            uDNS_DeregisterRecord(m, rr);
    e8822ae4:	85a2                	mv	a1,s0
            m->LocalRemoveEvents     = mDNStrue;
    e8822ae6:	28f48223          	sb	a5,644(s1)
            uDNS_DeregisterRecord(m, rr);
    e8822aea:	8526                	mv	a0,s1
    e8822aec:	7ff130ef          	jal	ra,e8836aea <uDNS_DeregisterRecord>
    return(mStatus_NoError);
    e8822af0:	4781                	li	a5,0
    e8822af2:	b3b9                	j	e8822840 <mDNS_Deregister_internal+0xd4>
        rr->updateid = zeroID;
    e8822af4:	00081797          	auipc	a5,0x81
    e8822af8:	aac78793          	addi	a5,a5,-1364 # e88a35a0 <zeroID>
    e8822afc:	0007d783          	lhu	a5,0(a5)
    e8822b00:	14f41b23          	sh	a5,342(s0)
        if (rr->NATinfo.clientContext)
    e8822b04:	1c843783          	ld	a5,456(s0)
    e8822b08:	cb81                	beqz	a5,e8822b18 <mDNS_Deregister_internal+0x3ac>
            mDNS_StopNATOperation_internal(m, &rr->NATinfo);
    e8822b0a:	17840593          	addi	a1,s0,376
    e8822b0e:	8526                	mv	a0,s1
    e8822b10:	206100ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
            rr->NATinfo.clientContext = mDNSNULL;
    e8822b14:	1c043423          	sd	zero,456(s0)
        if (rr->nta) { CancelGetZoneData(m, rr->nta); rr->nta = mDNSNULL; }
    e8822b18:	16843583          	ld	a1,360(s0)
    e8822b1c:	c591                	beqz	a1,e8822b28 <mDNS_Deregister_internal+0x3bc>
    e8822b1e:	8526                	mv	a0,s1
    e8822b20:	d15fe0ef          	jal	ra,e8821834 <CancelGetZoneData>
    e8822b24:	16043423          	sd	zero,360(s0)
        if (rr->tcp) { DisposeTCPConn(rr->tcp);       rr->tcp = mDNSNULL; }
    e8822b28:	17043503          	ld	a0,368(s0)
    e8822b2c:	c509                	beqz	a0,e8822b36 <mDNS_Deregister_internal+0x3ca>
    e8822b2e:	3b5100ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8822b32:	16043823          	sd	zero,368(s0)
    if      (RecordType == kDNSRecordTypeUnregistered)
    e8822b36:	080a9d63          	bnez	s5,e8822bd0 <mDNS_Deregister_internal+0x464>
        LogMsg("mDNS_Deregister_internal: %s already marked kDNSRecordTypeUnregistered", ARDisplayString(m, rr));
    e8822b3a:	780c                	ld	a1,48(s0)
    e8822b3c:	03b48613          	addi	a2,s1,59
    e8822b40:	00840513          	addi	a0,s0,8
    e8822b44:	0591                	addi	a1,a1,4
    e8822b46:	ecff30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8822b4a:	862a                	mv	a2,a0
    e8822b4c:	00087597          	auipc	a1,0x87
    e8822b50:	d0c58593          	addi	a1,a1,-756 # e88a9858 <hexValues.12413+0x18a8>
    e8822b54:	4501                	li	a0,0
    e8822b56:	1570c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (rr->WakeUp.HMAC.l[0] ||
    e8822b5a:	07e42783          	lw	a5,126(s0)
    e8822b5e:	e799                	bnez	a5,e8822b6c <mDNS_Deregister_internal+0x400>
    e8822b60:	4721                	li	a4,8
    e8822b62:	08ea9d63          	bne	s5,a4,e8822bfc <mDNS_Deregister_internal+0x490>
        (RecordType == kDNSRecordTypeShared && (rr->RequireGoodbye || rr->AnsweredLocalQ)))
    e8822b66:	0b845703          	lhu	a4,184(s0)
    e8822b6a:	cb49                	beqz	a4,e8822bfc <mDNS_Deregister_internal+0x490>
        rr->resrec.RecordType    = kDNSRecordTypeDeregistering;
    e8822b6c:	4705                	li	a4,1
    e8822b6e:	00e40423          	sb	a4,8(s0)
        rr->resrec.rroriginalttl = 0;
    e8822b72:	00042823          	sw	zero,16(s0)
        rr->AnnounceCount        = rr->WakeUp.HMAC.l[0] ? WakeupCount : (drt == mDNS_Dereg_rapid) ? 1 : GoodbyeCount;
    e8822b76:	e3c9                	bnez	a5,e8822bf8 <mDNS_Deregister_internal+0x48c>
    e8822b78:	4785                	li	a5,1
    e8822b7a:	00fa0363          	beq	s4,a5,e8822b80 <mDNS_Deregister_internal+0x414>
    e8822b7e:	4a0d                	li	s4,3
        rr->ThisAPInterval       = mDNSPlatformOneSecond * 2;
    e8822b80:	000b2797          	auipc	a5,0xb2
    e8822b84:	f0078793          	addi	a5,a5,-256 # e88d4a80 <mDNSPlatformOneSecond>
    e8822b88:	439c                	lw	a5,0(a5)
        rr->AnnounceCount        = rr->WakeUp.HMAC.l[0] ? WakeupCount : (drt == mDNS_Dereg_rapid) ? 1 : GoodbyeCount;
    e8822b8a:	0b440ba3          	sb	s4,183(s0)
        rr->ThisAPInterval       = mDNSPlatformOneSecond * 2;
    e8822b8e:	0017969b          	slliw	a3,a5,0x1
    e8822b92:	10d42823          	sw	a3,272(s0)
        rr->LastAPTime           = m->timenow - rr->ThisAPInterval;
    e8822b96:	2404a703          	lw	a4,576(s1)
    e8822b9a:	9f15                	subw	a4,a4,a3
    e8822b9c:	10e42a23          	sw	a4,276(s0)
        m->LocalRemoveEvents     = mDNStrue;
    e8822ba0:	4705                	li	a4,1
    e8822ba2:	28e48223          	sb	a4,644(s1)
        if (m->NextScheduledResponse - (m->timenow + mDNSPlatformOneSecond/10) >= 0)
    e8822ba6:	5759                	li	a4,-10
    e8822ba8:	02e7c73b          	divw	a4,a5,a4
    e8822bac:	2604a603          	lw	a2,608(s1)
    e8822bb0:	2404a683          	lw	a3,576(s1)
    e8822bb4:	9f31                	addw	a4,a4,a2
    e8822bb6:	9f15                	subw	a4,a4,a3
    e8822bb8:	00074863          	bltz	a4,e8822bc8 <mDNS_Deregister_internal+0x45c>
            m->NextScheduledResponse = (m->timenow + mDNSPlatformOneSecond/10);
    e8822bbc:	4729                	li	a4,10
    e8822bbe:	02e7c7bb          	divw	a5,a5,a4
    e8822bc2:	9fb5                	addw	a5,a5,a3
    e8822bc4:	26f4a023          	sw	a5,608(s1)
    mDNS_UpdateAllowSleep(m);
    e8822bc8:	8526                	mv	a0,s1
    e8822bca:	8d6fe0ef          	jal	ra,e8820ca0 <mDNS_UpdateAllowSleep>
    e8822bce:	b70d                	j	e8822af0 <mDNS_Deregister_internal+0x384>
    else if (RecordType == kDNSRecordTypeDeregistering)
    e8822bd0:	4785                	li	a5,1
    e8822bd2:	f8fa94e3          	bne	s5,a5,e8822b5a <mDNS_Deregister_internal+0x3ee>
        LogMsg("mDNS_Deregister_internal: %s already marked kDNSRecordTypeDeregistering", ARDisplayString(m, rr));
    e8822bd6:	780c                	ld	a1,48(s0)
    e8822bd8:	03b48613          	addi	a2,s1,59
    e8822bdc:	00840513          	addi	a0,s0,8
    e8822be0:	0591                	addi	a1,a1,4
    e8822be2:	e33f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8822be6:	862a                	mv	a2,a0
    e8822be8:	00087597          	auipc	a1,0x87
    e8822bec:	cb858593          	addi	a1,a1,-840 # e88a98a0 <hexValues.12413+0x18f0>
    e8822bf0:	4501                	li	a0,0
    e8822bf2:	0bb0c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8822bf6:	b199                	j	e882283c <mDNS_Deregister_internal+0xd0>
        rr->AnnounceCount        = rr->WakeUp.HMAC.l[0] ? WakeupCount : (drt == mDNS_Dereg_rapid) ? 1 : GoodbyeCount;
    e8822bf8:	4a49                	li	s4,18
    e8822bfa:	b759                	j	e8822b80 <mDNS_Deregister_internal+0x414>
        if (!dupList && RRLocalOnly(rr))
    e8822bfc:	0e091163          	bnez	s2,e8822cde <mDNS_Deregister_internal+0x572>
    e8822c00:	0ac44783          	lbu	a5,172(s0)
    e8822c04:	4705                	li	a4,1
    e8822c06:	37f1                	addiw	a5,a5,-4
    e8822c08:	0ff7f793          	andi	a5,a5,255
    e8822c0c:	0cf76963          	bltu	a4,a5,e8822cde <mDNS_Deregister_internal+0x572>
            AuthGroup *ag = RemoveAuthRecord(m, &m->rrauth, rr);
    e8822c10:	6589                	lui	a1,0x2
    e8822c12:	a7858593          	addi	a1,a1,-1416 # 1a78 <memcmp-0xe87fe588>
    e8822c16:	8622                	mv	a2,s0
    e8822c18:	95a6                	add	a1,a1,s1
    e8822c1a:	8526                	mv	a0,s1
    e8822c1c:	983fb0ef          	jal	ra,e881e59e <RemoveAuthRecord>
            if (ag->NewLocalOnlyRecords == rr) ag->NewLocalOnlyRecords = rr->next;
    e8822c20:	751c                	ld	a5,40(a0)
    e8822c22:	00879463          	bne	a5,s0,e8822c2a <mDNS_Deregister_internal+0x4be>
    e8822c26:	601c                	ld	a5,0(s0)
    e8822c28:	f51c                	sd	a5,40(a0)
        if (m->CurrentRecord   == rr) m->CurrentRecord   = rr->next;
    e8822c2a:	678d                	lui	a5,0x3
    e8822c2c:	97a6                	add	a5,a5,s1
    e8822c2e:	1d07b703          	ld	a4,464(a5) # 31d0 <memcmp-0xe87fce30>
    e8822c32:	00871563          	bne	a4,s0,e8822c3c <mDNS_Deregister_internal+0x4d0>
    e8822c36:	6018                	ld	a4,0(s0)
    e8822c38:	1ce7b823          	sd	a4,464(a5)
        if (rr->NewRData) CompleteRDataUpdate(m, rr);   // Update our rdata, clear the NewRData pointer, and return memory to the client
    e8822c3c:	12843783          	ld	a5,296(s0)
        rr->next = mDNSNULL;
    e8822c40:	00043023          	sd	zero,0(s0)
        rr->resrec.RecordType = kDNSRecordTypeUnregistered;
    e8822c44:	00040423          	sb	zero,8(s0)
        if (rr->NewRData) CompleteRDataUpdate(m, rr);   // Update our rdata, clear the NewRData pointer, and return memory to the client
    e8822c48:	c789                	beqz	a5,e8822c52 <mDNS_Deregister_internal+0x4e6>
    e8822c4a:	85a2                	mv	a1,s0
    e8822c4c:	8526                	mv	a0,s1
    e8822c4e:	d14f90ef          	jal	ra,e881c162 <CompleteRDataUpdate>
        if (drt != mDNS_Dereg_conflict)
    e8822c52:	4789                	li	a5,2
    e8822c54:	14fa0f63          	beq	s4,a5,e8822db2 <mDNS_Deregister_internal+0x646>
            mDNS_DropLockBeforeCallback();      // Allow client to legally make mDNS API calls from the callback
    e8822c58:	58dc                	lw	a5,52(s1)
    e8822c5a:	5894                	lw	a3,48(s1)
    e8822c5c:	0017871b          	addiw	a4,a5,1
    e8822c60:	d8d8                	sw	a4,52(s1)
    e8822c62:	00d70d63          	beq	a4,a3,e8822c7c <mDNS_Deregister_internal+0x510>
    e8822c66:	00085617          	auipc	a2,0x85
    e8822c6a:	2e260613          	addi	a2,a2,738 # e88a7f48 <__func__.9897>
    e8822c6e:	00081597          	auipc	a1,0x81
    e8822c72:	0fa58593          	addi	a1,a1,250 # e88a3d68 <end.8789+0x6c0>
    e8822c76:	4501                	li	a0,0
    e8822c78:	0350c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            LogInfo("mDNS_Deregister_internal: callback with mStatus_MemFree for %s", ARDisplayString(m, rr));
    e8822c7c:	000b2797          	auipc	a5,0xb2
    e8822c80:	df878793          	addi	a5,a5,-520 # e88d4a74 <mDNS_LoggingEnabled>
    e8822c84:	439c                	lw	a5,0(a5)
    e8822c86:	c38d                	beqz	a5,e8822ca8 <mDNS_Deregister_internal+0x53c>
    e8822c88:	780c                	ld	a1,48(s0)
    e8822c8a:	03b48613          	addi	a2,s1,59
    e8822c8e:	00840513          	addi	a0,s0,8
    e8822c92:	0591                	addi	a1,a1,4
    e8822c94:	d81f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8822c98:	862a                	mv	a2,a0
    e8822c9a:	00087597          	auipc	a1,0x87
    e8822c9e:	cd658593          	addi	a1,a1,-810 # e88a9970 <hexValues.12413+0x19c0>
    e8822ca2:	450d                	li	a0,3
    e8822ca4:	0090c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (rr->RecordCallback)
    e8822ca8:	743c                	ld	a5,104(s0)
    e8822caa:	c799                	beqz	a5,e8822cb8 <mDNS_Deregister_internal+0x54c>
                rr->RecordCallback(m, rr, mStatus_MemFree);         // MUST NOT touch rr after this
    e8822cac:	7641                	lui	a2,0xffff0
    e8822cae:	f0060613          	addi	a2,a2,-256 # fffffffffffeff00 <__DRAM0_INF_BASE+0xfffffffeffffff00>
    e8822cb2:	85a2                	mv	a1,s0
    e8822cb4:	8526                	mv	a0,s1
    e8822cb6:	9782                	jalr	a5
            mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8822cb8:	5894                	lw	a3,48(s1)
    e8822cba:	58d8                	lw	a4,52(s1)
    e8822cbc:	00e68d63          	beq	a3,a4,e8822cd6 <mDNS_Deregister_internal+0x56a>
    e8822cc0:	00085617          	auipc	a2,0x85
    e8822cc4:	28860613          	addi	a2,a2,648 # e88a7f48 <__func__.9897>
    e8822cc8:	00081597          	auipc	a1,0x81
    e8822ccc:	0e058593          	addi	a1,a1,224 # e88a3da8 <end.8789+0x700>
    e8822cd0:	4501                	li	a0,0
    e8822cd2:	7da0c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8822cd6:	58dc                	lw	a5,52(s1)
    e8822cd8:	37fd                	addiw	a5,a5,-1
    e8822cda:	d8dc                	sw	a5,52(s1)
    e8822cdc:	b5f5                	j	e8822bc8 <mDNS_Deregister_internal+0x45c>
            *p = rr->next;                  // Cut this record from the list
    e8822cde:	6018                	ld	a4,0(s0)
            if (m->NewLocalRecords == rr) m->NewLocalRecords = rr->next;
    e8822ce0:	678d                	lui	a5,0x3
    e8822ce2:	97a6                	add	a5,a5,s1
            *p = rr->next;                  // Cut this record from the list
    e8822ce4:	00eb3023          	sd	a4,0(s6)
            if (m->NewLocalRecords == rr) m->NewLocalRecords = rr->next;
    e8822ce8:	1c87b683          	ld	a3,456(a5) # 31c8 <memcmp-0xe87fce38>
    e8822cec:	00869463          	bne	a3,s0,e8822cf4 <mDNS_Deregister_internal+0x588>
    e8822cf0:	1ce7b423          	sd	a4,456(a5)
    if (RRLocalOnly(rr))
    e8822cf4:	0ac44783          	lbu	a5,172(s0)
    e8822cf8:	4705                	li	a4,1
    e8822cfa:	37f1                	addiw	a5,a5,-4
    e8822cfc:	0ff7f793          	andi	a5,a5,255
    e8822d00:	02f76963          	bltu	a4,a5,e8822d32 <mDNS_Deregister_internal+0x5c6>
        LogInfo("DecrementAutoTargetServices: called for RRLocalOnly() record: %s", ARDisplayString(m, rr));
    e8822d04:	000b2797          	auipc	a5,0xb2
    e8822d08:	d7078793          	addi	a5,a5,-656 # e88d4a74 <mDNS_LoggingEnabled>
    e8822d0c:	439c                	lw	a5,0(a5)
    e8822d0e:	df91                	beqz	a5,e8822c2a <mDNS_Deregister_internal+0x4be>
    e8822d10:	780c                	ld	a1,48(s0)
    e8822d12:	03b48613          	addi	a2,s1,59
    e8822d16:	00840513          	addi	a0,s0,8
    e8822d1a:	0591                	addi	a1,a1,4
    e8822d1c:	cf9f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8822d20:	862a                	mv	a2,a0
    e8822d22:	00087597          	auipc	a1,0x87
    e8822d26:	bc658593          	addi	a1,a1,-1082 # e88a98e8 <hexValues.12413+0x1938>
    e8822d2a:	450d                	li	a0,3
    e8822d2c:	7800c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8822d30:	bded                	j	e8822c2a <mDNS_Deregister_internal+0x4be>
    if (!AuthRecord_uDNS(rr) && rr->resrec.rrtype == kDNSType_SRV && rr->AutoTarget == Target_AutoHost)
    e8822d32:	701c                	ld	a5,32(s0)
    e8822d34:	06f98763          	beq	s3,a5,e8822da2 <mDNS_Deregister_internal+0x636>
    e8822d38:	00a45703          	lhu	a4,10(s0)
    e8822d3c:	02100793          	li	a5,33
    e8822d40:	eef715e3          	bne	a4,a5,e8822c2a <mDNS_Deregister_internal+0x4be>
    e8822d44:	07844703          	lbu	a4,120(s0)
    e8822d48:	4785                	li	a5,1
    e8822d4a:	eef710e3          	bne	a4,a5,e8822c2a <mDNS_Deregister_internal+0x4be>
        if (m->AutoTargetServices == 1)
    e8822d4e:	6795                	lui	a5,0x5
    e8822d50:	97a6                	add	a5,a5,s1
    e8822d52:	e407a783          	lw	a5,-448(a5) # 4e40 <memcmp-0xe87fb1c0>
    e8822d56:	00e79563          	bne	a5,a4,e8822d60 <mDNS_Deregister_internal+0x5f4>
            DeadvertiseAllInterfaceRecords(m);
    e8822d5a:	8526                	mv	a0,s1
    e8822d5c:	178000ef          	jal	ra,e8822ed4 <DeadvertiseAllInterfaceRecords>
        m->AutoTargetServices--;
    e8822d60:	6795                	lui	a5,0x5
    e8822d62:	97a6                	add	a5,a5,s1
    e8822d64:	e407a703          	lw	a4,-448(a5) # 4e40 <memcmp-0xe87fb1c0>
    e8822d68:	fff7091b          	addiw	s2,a4,-1
    e8822d6c:	e527a023          	sw	s2,-448(a5)
        LogInfo("DecrementAutoTargetServices: AutoTargetServices %d Record %s", m->AutoTargetServices, ARDisplayString(m, rr));
    e8822d70:	000b2797          	auipc	a5,0xb2
    e8822d74:	d0478793          	addi	a5,a5,-764 # e88d4a74 <mDNS_LoggingEnabled>
    e8822d78:	439c                	lw	a5,0(a5)
    e8822d7a:	ea0788e3          	beqz	a5,e8822c2a <mDNS_Deregister_internal+0x4be>
    e8822d7e:	780c                	ld	a1,48(s0)
    e8822d80:	03b48613          	addi	a2,s1,59
    e8822d84:	00840513          	addi	a0,s0,8
    e8822d88:	0591                	addi	a1,a1,4
    e8822d8a:	c8bf30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8822d8e:	86aa                	mv	a3,a0
    e8822d90:	864a                	mv	a2,s2
    e8822d92:	00087597          	auipc	a1,0x87
    e8822d96:	b9e58593          	addi	a1,a1,-1122 # e88a9930 <hexValues.12413+0x1980>
    e8822d9a:	450d                	li	a0,3
    e8822d9c:	7100c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8822da0:	b569                	j	e8822c2a <mDNS_Deregister_internal+0x4be>
    if (!AuthRecord_uDNS(rr) && rr->resrec.rrtype == kDNSType_SRV && rr->AutoTarget == Target_AutoHost)
    e8822da2:	07a44783          	lbu	a5,122(s0)
    e8822da6:	fbc9                	bnez	a5,e8822d38 <mDNS_Deregister_internal+0x5cc>
    e8822da8:	7408                	ld	a0,40(s0)
    e8822daa:	af8f00ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8822dae:	f549                	bnez	a0,e8822d38 <mDNS_Deregister_internal+0x5cc>
    e8822db0:	bdad                	j	e8822c2a <mDNS_Deregister_internal+0x4be>
            RecordProbeFailure(m, rr);
    e8822db2:	85a2                	mv	a1,s0
    e8822db4:	8526                	mv	a0,s1
    e8822db6:	8b2f90ef          	jal	ra,e881be68 <RecordProbeFailure>
            mDNS_DropLockBeforeCallback();      // Allow client to legally make mDNS API calls from the callback
    e8822dba:	58dc                	lw	a5,52(s1)
    e8822dbc:	5894                	lw	a3,48(s1)
    e8822dbe:	0017871b          	addiw	a4,a5,1
    e8822dc2:	d8d8                	sw	a4,52(s1)
    e8822dc4:	00d70d63          	beq	a4,a3,e8822dde <mDNS_Deregister_internal+0x672>
    e8822dc8:	00085617          	auipc	a2,0x85
    e8822dcc:	18060613          	addi	a2,a2,384 # e88a7f48 <__func__.9897>
    e8822dd0:	00081597          	auipc	a1,0x81
    e8822dd4:	f9858593          	addi	a1,a1,-104 # e88a3d68 <end.8789+0x6c0>
    e8822dd8:	4501                	li	a0,0
    e8822dda:	6d20c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (rr->RecordCallback)
    e8822dde:	743c                	ld	a5,104(s0)
    e8822de0:	c791                	beqz	a5,e8822dec <mDNS_Deregister_internal+0x680>
                rr->RecordCallback(m, rr, mStatus_NameConflict);    // MUST NOT touch rr after this
    e8822de2:	7641                	lui	a2,0xffff0
    e8822de4:	1651                	addi	a2,a2,-12
    e8822de6:	85a2                	mv	a1,s0
    e8822de8:	8526                	mv	a0,s1
    e8822dea:	9782                	jalr	a5
            mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8822dec:	5894                	lw	a3,48(s1)
    e8822dee:	58d8                	lw	a4,52(s1)
    e8822df0:	00e68d63          	beq	a3,a4,e8822e0a <mDNS_Deregister_internal+0x69e>
    e8822df4:	00085617          	auipc	a2,0x85
    e8822df8:	15460613          	addi	a2,a2,340 # e88a7f48 <__func__.9897>
    e8822dfc:	00081597          	auipc	a1,0x81
    e8822e00:	fac58593          	addi	a1,a1,-84 # e88a3da8 <end.8789+0x700>
    e8822e04:	4501                	li	a0,0
    e8822e06:	6a60c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8822e0a:	58dc                	lw	a5,52(s1)
                if (r2->ProbeCount != 0xFF)
    e8822e0c:	0ff00913          	li	s2,255
            mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8822e10:	37fd                	addiw	a5,a5,-1
    e8822e12:	d8dc                	sw	a5,52(s1)
            r2 = m->DuplicateRecords;
    e8822e14:	678d                	lui	a5,0x3
    e8822e16:	97a6                	add	a5,a5,s1
    e8822e18:	1c07b583          	ld	a1,448(a5) # 31c0 <memcmp-0xe87fce40>
                    r2 = m->DuplicateRecords;
    e8822e1c:	843e                	mv	s0,a5
            while (r2)
    e8822e1e:	da0585e3          	beqz	a1,e8822bc8 <mDNS_Deregister_internal+0x45c>
                if (r2->ProbeCount != 0xFF)
    e8822e22:	0b65c783          	lbu	a5,182(a1)
    e8822e26:	01278463          	beq	a5,s2,e8822e2e <mDNS_Deregister_internal+0x6c2>
                    r2 = r2->next;
    e8822e2a:	618c                	ld	a1,0(a1)
    e8822e2c:	bfcd                	j	e8822e1e <mDNS_Deregister_internal+0x6b2>
                    mDNS_Deregister_internal(m, r2, mDNS_Dereg_conflict);
    e8822e2e:	4609                	li	a2,2
    e8822e30:	8526                	mv	a0,s1
    e8822e32:	93bff0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
                    r2 = m->DuplicateRecords;
    e8822e36:	1c043583          	ld	a1,448(s0)
    e8822e3a:	b7d5                	j	e8822e1e <mDNS_Deregister_internal+0x6b2>

00000000e8822e3c <DeadvertiseInterface>:
    if (m->AutoTargetServices == 0)
    e8822e3c:	6795                	lui	a5,0x5
    e8822e3e:	97aa                	add	a5,a5,a0
    e8822e40:	e407a783          	lw	a5,-448(a5) # 4e40 <memcmp-0xe87fb1c0>
    e8822e44:	e395                	bnez	a5,e8822e68 <DeadvertiseInterface+0x2c>
        LogInfo("DeadvertiseInterface: Returning due to AutoTargetServices zero for %s", set->ifname);
    e8822e46:	000b2797          	auipc	a5,0xb2
    e8822e4a:	c2e78793          	addi	a5,a5,-978 # e88d4a74 <mDNS_LoggingEnabled>
    e8822e4e:	439c                	lw	a5,0(a5)
    e8822e50:	c3c9                	beqz	a5,e8822ed2 <DeadvertiseInterface+0x96>
    e8822e52:	6609                	lui	a2,0x2
    e8822e54:	a2660613          	addi	a2,a2,-1498 # 1a26 <memcmp-0xe87fe5da>
    e8822e58:	962e                	add	a2,a2,a1
    e8822e5a:	450d                	li	a0,3
    e8822e5c:	00082597          	auipc	a1,0x82
    e8822e60:	66c58593          	addi	a1,a1,1644 # e88a54c8 <end.8789+0x1e20>
    e8822e64:	6480c06f          	j	e882f4ac <LogMsgWithLevel>
{
    e8822e68:	1101                	addi	sp,sp,-32
    e8822e6a:	e422                	sd	s0,8(sp)
    e8822e6c:	842e                	mv	s0,a1
    if (set->RR_A    .resrec.RecordType) mDNS_Deregister_internal(m, &set->RR_A,     mDNS_Dereg_normal);
    e8822e6e:	6585                	lui	a1,0x1
    e8822e70:	00b407b3          	add	a5,s0,a1
{
    e8822e74:	e826                	sd	s1,16(sp)
    e8822e76:	ec06                	sd	ra,24(sp)
    if (set->RR_A    .resrec.RecordType) mDNS_Deregister_internal(m, &set->RR_A,     mDNS_Dereg_normal);
    e8822e78:	dc87c783          	lbu	a5,-568(a5)
    e8822e7c:	84aa                	mv	s1,a0
    e8822e7e:	c799                	beqz	a5,e8822e8c <DeadvertiseInterface+0x50>
    e8822e80:	dc058593          	addi	a1,a1,-576 # dc0 <memcmp-0xe87ff240>
    e8822e84:	4601                	li	a2,0
    e8822e86:	95a2                	add	a1,a1,s0
    e8822e88:	8e5ff0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
    if (set->RR_PTR  .resrec.RecordType) mDNS_Deregister_internal(m, &set->RR_PTR,   mDNS_Dereg_normal);
    e8822e8c:	6585                	lui	a1,0x1
    e8822e8e:	00b407b3          	add	a5,s0,a1
    e8822e92:	1d87c783          	lbu	a5,472(a5)
    e8822e96:	cb81                	beqz	a5,e8822ea6 <DeadvertiseInterface+0x6a>
    e8822e98:	1d058593          	addi	a1,a1,464 # 11d0 <memcmp-0xe87fee30>
    e8822e9c:	4601                	li	a2,0
    e8822e9e:	95a2                	add	a1,a1,s0
    e8822ea0:	8526                	mv	a0,s1
    e8822ea2:	8cbff0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
    if (set->RR_HINFO.resrec.RecordType) mDNS_Deregister_internal(m, &set->RR_HINFO, mDNS_Dereg_normal);
    e8822ea6:	6585                	lui	a1,0x1
    e8822ea8:	00b407b3          	add	a5,s0,a1
    e8822eac:	5e87c783          	lbu	a5,1512(a5)
    e8822eb0:	cf81                	beqz	a5,e8822ec8 <DeadvertiseInterface+0x8c>
    e8822eb2:	5e058593          	addi	a1,a1,1504 # 15e0 <memcmp-0xe87fea20>
    e8822eb6:	95a2                	add	a1,a1,s0
}
    e8822eb8:	6422                	ld	s0,8(sp)
    e8822eba:	60e2                	ld	ra,24(sp)
    if (set->RR_HINFO.resrec.RecordType) mDNS_Deregister_internal(m, &set->RR_HINFO, mDNS_Dereg_normal);
    e8822ebc:	8526                	mv	a0,s1
}
    e8822ebe:	64c2                	ld	s1,16(sp)
    if (set->RR_HINFO.resrec.RecordType) mDNS_Deregister_internal(m, &set->RR_HINFO, mDNS_Dereg_normal);
    e8822ec0:	4601                	li	a2,0
}
    e8822ec2:	6105                	addi	sp,sp,32
    if (set->RR_HINFO.resrec.RecordType) mDNS_Deregister_internal(m, &set->RR_HINFO, mDNS_Dereg_normal);
    e8822ec4:	8a9ff06f          	j	e882276c <mDNS_Deregister_internal>
}
    e8822ec8:	60e2                	ld	ra,24(sp)
    e8822eca:	6422                	ld	s0,8(sp)
    e8822ecc:	64c2                	ld	s1,16(sp)
    e8822ece:	6105                	addi	sp,sp,32
    e8822ed0:	8082                	ret
    e8822ed2:	8082                	ret

00000000e8822ed4 <DeadvertiseAllInterfaceRecords>:
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822ed4:	678d                	lui	a5,0x3
{
    e8822ed6:	7139                	addi	sp,sp,-64
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822ed8:	97aa                	add	a5,a5,a0
{
    e8822eda:	e826                	sd	s1,16(sp)
    e8822edc:	ec4a                	sd	s2,24(sp)
    e8822ede:	f04e                	sd	s3,32(sp)
    e8822ee0:	f452                	sd	s4,40(sp)
    e8822ee2:	f856                	sd	s5,48(sp)
    e8822ee4:	fc06                	sd	ra,56(sp)
    e8822ee6:	e422                	sd	s0,8(sp)
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822ee8:	1e07b403          	ld	s0,480(a5) # 31e0 <memcmp-0xe87fce20>
        if (intf->Advertise)
    e8822eec:	6909                	lui	s2,0x2
{
    e8822eee:	84aa                	mv	s1,a0
            LogInfo("DeadvertiseInterface: Deadvertising for ifname %s", intf->ifname);
    e8822ef0:	000b2997          	auipc	s3,0xb2
    e8822ef4:	b8498993          	addi	s3,s3,-1148 # e88d4a74 <mDNS_LoggingEnabled>
    e8822ef8:	a2690a13          	addi	s4,s2,-1498 # 1a26 <memcmp-0xe87fe5da>
    e8822efc:	00082a97          	auipc	s5,0x82
    e8822f00:	594a8a93          	addi	s5,s5,1428 # e88a5490 <end.8789+0x1de8>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822f04:	e811                	bnez	s0,e8822f18 <DeadvertiseAllInterfaceRecords+0x44>
}
    e8822f06:	70e2                	ld	ra,56(sp)
    e8822f08:	6422                	ld	s0,8(sp)
    e8822f0a:	64c2                	ld	s1,16(sp)
    e8822f0c:	6962                	ld	s2,24(sp)
    e8822f0e:	7982                	ld	s3,32(sp)
    e8822f10:	7a22                	ld	s4,40(sp)
    e8822f12:	7ac2                	ld	s5,48(sp)
    e8822f14:	6121                	addi	sp,sp,64
    e8822f16:	8082                	ret
        if (intf->Advertise)
    e8822f18:	012407b3          	add	a5,s0,s2
    e8822f1c:	a667c783          	lbu	a5,-1434(a5)
    e8822f20:	cf91                	beqz	a5,e8822f3c <DeadvertiseAllInterfaceRecords+0x68>
            LogInfo("DeadvertiseInterface: Deadvertising for ifname %s", intf->ifname);
    e8822f22:	0009a783          	lw	a5,0(s3)
    e8822f26:	c799                	beqz	a5,e8822f34 <DeadvertiseAllInterfaceRecords+0x60>
    e8822f28:	01440633          	add	a2,s0,s4
    e8822f2c:	85d6                	mv	a1,s5
    e8822f2e:	450d                	li	a0,3
    e8822f30:	57c0c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            DeadvertiseInterface(m, intf);
    e8822f34:	85a2                	mv	a1,s0
    e8822f36:	8526                	mv	a0,s1
    e8822f38:	f05ff0ef          	jal	ra,e8822e3c <DeadvertiseInterface>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8822f3c:	6000                	ld	s0,0(s0)
    e8822f3e:	b7d9                	j	e8822f04 <DeadvertiseAllInterfaceRecords+0x30>

00000000e8822f40 <CheckProxyRecords>:
{
    e8822f40:	711d                	addi	sp,sp,-96
    e8822f42:	e4a6                	sd	s1,72(sp)
    e8822f44:	e0ca                	sd	s2,64(sp)
    e8822f46:	fc4e                	sd	s3,56(sp)
    e8822f48:	f852                	sd	s4,48(sp)
    e8822f4a:	ec86                	sd	ra,88(sp)
    e8822f4c:	e8a2                	sd	s0,80(sp)
    e8822f4e:	f456                	sd	s5,40(sp)
    e8822f50:	f05a                	sd	s6,32(sp)
    e8822f52:	ec5e                	sd	s7,24(sp)
    e8822f54:	e862                	sd	s8,16(sp)
    m->CurrentRecord = list;
    e8822f56:	648d                	lui	s1,0x3
    e8822f58:	94aa                	add	s1,s1,a0
            if (m->SPSSocket && m->timenow - rr->TimeExpire < 0)    // If proxy record not expired yet, update m->NextScheduledSPS
    e8822f5a:	6991                	lui	s3,0x4
                LogSPS("CheckProxyRecords: Removing %d H-MAC %.6a I-MAC %.6a %d %s",
    e8822f5c:	6a15                	lui	s4,0x5
{
    e8822f5e:	892a                	mv	s2,a0
    m->CurrentRecord = list;
    e8822f60:	1cb4b823          	sd	a1,464(s1) # 31d0 <memcmp-0xe87fce30>
            if (m->SPSSocket && m->timenow - rr->TimeExpire < 0)    // If proxy record not expired yet, update m->NextScheduledSPS
    e8822f64:	99aa                	add	s3,s3,a0
                LogSPS("CheckProxyRecords: Removing %d H-MAC %.6a I-MAC %.6a %d %s",
    e8822f66:	9a2a                	add	s4,s4,a0
        if (rr->resrec.RecordType != kDNSRecordTypeDeregistering && rr->WakeUp.HMAC.l[0])
    e8822f68:	4a85                	li	s5,1
                LogSPS("CheckProxyRecords: Removing %d H-MAC %.6a I-MAC %.6a %d %s",
    e8822f6a:	000b2b17          	auipc	s6,0xb2
    e8822f6e:	b0ab0b13          	addi	s6,s6,-1270 # e88d4a74 <mDNS_LoggingEnabled>
    e8822f72:	03b90b93          	addi	s7,s2,59
    e8822f76:	a871                	j	e8823012 <CheckProxyRecords+0xd2>
        if (rr->resrec.RecordType != kDNSRecordTypeDeregistering && rr->WakeUp.HMAC.l[0])
    e8822f78:	00844783          	lbu	a5,8(s0)
    e8822f7c:	03578663          	beq	a5,s5,e8822fa8 <CheckProxyRecords+0x68>
    e8822f80:	07e42783          	lw	a5,126(s0)
    e8822f84:	c395                	beqz	a5,e8822fa8 <CheckProxyRecords+0x68>
            if (m->SPSSocket && m->timenow - rr->TimeExpire < 0)    // If proxy record not expired yet, update m->NextScheduledSPS
    e8822f86:	d809b783          	ld	a5,-640(s3) # 3d80 <memcmp-0xe87fc280>
    e8822f8a:	c39d                	beqz	a5,e8822fb0 <CheckProxyRecords+0x70>
    e8822f8c:	0a842783          	lw	a5,168(s0)
    e8822f90:	24092703          	lw	a4,576(s2)
    e8822f94:	9f1d                	subw	a4,a4,a5
    e8822f96:	00075d63          	bgez	a4,e8822fb0 <CheckProxyRecords+0x70>
                if (m->NextScheduledSPS - rr->TimeExpire > 0)
    e8822f9a:	26892703          	lw	a4,616(s2)
    e8822f9e:	9f1d                	subw	a4,a4,a5
    e8822fa0:	00e05463          	blez	a4,e8822fa8 <CheckProxyRecords+0x68>
                    m->NextScheduledSPS = rr->TimeExpire;
    e8822fa4:	26f92423          	sw	a5,616(s2)
            m->CurrentRecord = rr->next;
    e8822fa8:	601c                	ld	a5,0(s0)
    e8822faa:	1cf4b823          	sd	a5,464(s1)
    e8822fae:	bf6d                	j	e8822f68 <CheckProxyRecords+0x28>
                LogSPS("CheckProxyRecords: Removing %d H-MAC %.6a I-MAC %.6a %d %s",
    e8822fb0:	000b2783          	lw	a5,0(s6)
    e8822fb4:	cb9d                	beqz	a5,e8822fea <CheckProxyRecords+0xaa>
    e8822fb6:	780c                	ld	a1,48(s0)
    e8822fb8:	07d40783          	lb	a5,125(s0)
    e8822fbc:	865e                	mv	a2,s7
    e8822fbe:	0591                	addi	a1,a1,4
    e8822fc0:	00840513          	addi	a0,s0,8
    e8822fc4:	e10a2c03          	lw	s8,-496(s4) # 4e10 <memcmp-0xe87fb1f0>
    e8822fc8:	e43e                	sd	a5,8(sp)
    e8822fca:	a4bf30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8822fce:	882a                	mv	a6,a0
    e8822fd0:	67a2                	ld	a5,8(sp)
    e8822fd2:	08440713          	addi	a4,s0,132
    e8822fd6:	07e40693          	addi	a3,s0,126
    e8822fda:	8662                	mv	a2,s8
    e8822fdc:	00082597          	auipc	a1,0x82
    e8822fe0:	f7c58593          	addi	a1,a1,-132 # e88a4f58 <end.8789+0x18b0>
    e8822fe4:	4509                	li	a0,2
    e8822fe6:	4c60c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                SetSPSProxyListChanged(rr->resrec.InterfaceID);
    e8822fea:	d789b503          	ld	a0,-648(s3)
    e8822fee:	c511                	beqz	a0,e8822ffa <CheckProxyRecords+0xba>
    e8822ff0:	701c                	ld	a5,32(s0)
    e8822ff2:	00f50463          	beq	a0,a5,e8822ffa <CheckProxyRecords+0xba>
    e8822ff6:	1210c0ef          	jal	ra,e882f916 <mDNSPlatformUpdateProxyList>
    e8822ffa:	701c                	ld	a5,32(s0)
                mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e8822ffc:	4601                	li	a2,0
    e8822ffe:	85a2                	mv	a1,s0
                SetSPSProxyListChanged(rr->resrec.InterfaceID);
    e8823000:	d6f9bc23          	sd	a5,-648(s3)
                mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e8823004:	854a                	mv	a0,s2
    e8823006:	f66ff0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
        if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now
    e882300a:	1d04b783          	ld	a5,464(s1)
    e882300e:	f8878de3          	beq	a5,s0,e8822fa8 <CheckProxyRecords+0x68>
    while (m->CurrentRecord)
    e8823012:	1d04b403          	ld	s0,464(s1)
    e8823016:	f02d                	bnez	s0,e8822f78 <CheckProxyRecords+0x38>
}
    e8823018:	60e6                	ld	ra,88(sp)
    e882301a:	6446                	ld	s0,80(sp)
    e882301c:	64a6                	ld	s1,72(sp)
    e882301e:	6906                	ld	s2,64(sp)
    e8823020:	79e2                	ld	s3,56(sp)
    e8823022:	7a42                	ld	s4,48(sp)
    e8823024:	7aa2                	ld	s5,40(sp)
    e8823026:	7b02                	ld	s6,32(sp)
    e8823028:	6be2                	ld	s7,24(sp)
    e882302a:	6c42                	ld	s8,16(sp)
    e882302c:	6125                	addi	sp,sp,96
    e882302e:	8082                	ret

00000000e8823030 <ClearProxyRecords>:
    if (m->CurrentRecord)
    e8823030:	678d                	lui	a5,0x3
{
    e8823032:	7175                	addi	sp,sp,-144
    if (m->CurrentRecord)
    e8823034:	97aa                	add	a5,a5,a0
{
    e8823036:	e122                	sd	s0,128(sp)
    e8823038:	fca6                	sd	s1,120(sp)
    e882303a:	ecd6                	sd	s5,88(sp)
    e882303c:	e506                	sd	ra,136(sp)
    e882303e:	f8ca                	sd	s2,112(sp)
    e8823040:	f4ce                	sd	s3,104(sp)
    e8823042:	f0d2                	sd	s4,96(sp)
    e8823044:	e8da                	sd	s6,80(sp)
    e8823046:	e4de                	sd	s7,72(sp)
    e8823048:	e0e2                	sd	s8,64(sp)
    e882304a:	fc66                	sd	s9,56(sp)
    e882304c:	84aa                	mv	s1,a0
    if (m->CurrentRecord)
    e882304e:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
{
    e8823052:	8aae                	mv	s5,a1
    e8823054:	8432                	mv	s0,a2
    if (m->CurrentRecord)
    e8823056:	c105                	beqz	a0,e8823076 <ClearProxyRecords+0x46>
        LogMsg("ClearProxyRecords ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e8823058:	790c                	ld	a1,48(a0)
    e882305a:	03b48613          	addi	a2,s1,59
    e882305e:	0521                	addi	a0,a0,8
    e8823060:	0591                	addi	a1,a1,4
    e8823062:	9b3f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8823066:	862a                	mv	a2,a0
    e8823068:	00082597          	auipc	a1,0x82
    e882306c:	05058593          	addi	a1,a1,80 # e88a50b8 <end.8789+0x1a10>
    e8823070:	4501                	li	a0,0
    e8823072:	43a0c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentRecord = thelist;
    e8823076:	690d                	lui	s2,0x3
    e8823078:	9926                	add	s2,s2,s1
        if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
    e882307a:	69a5                	lui	s3,0x9
                SetSPSProxyListChanged(m->rec.r.resrec.InterfaceID);
    e882307c:	6a11                	lui	s4,0x4
    m->CurrentRecord = thelist;
    e882307e:	1c893823          	sd	s0,464(s2) # 31d0 <memcmp-0xe87fce30>
        if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
    e8823082:	99a6                	add	s3,s3,s1
                SetSPSProxyListChanged(m->rec.r.resrec.InterfaceID);
    e8823084:	9a26                	add	s4,s4,s1
                LogSPS("ClearProxyRecords: Removing %3d AC %2d %02X H-MAC %.6a I-MAC %.6a %d %d %s",
    e8823086:	6b15                	lui	s6,0x5
            if (owner->seq != rr->WakeUp.seq || m->timenow - rr->TimeRcvd > mDNSPlatformOneSecond * 60)
    e8823088:	000b2b97          	auipc	s7,0xb2
    e882308c:	9f8b8b93          	addi	s7,s7,-1544 # e88d4a80 <mDNSPlatformOneSecond>
                LogSPS("ClearProxyRecords: Removing %3d AC %2d %02X H-MAC %.6a I-MAC %.6a %d %d %s",
    e8823090:	9b26                	add	s6,s6,s1
    e8823092:	a211                	j	e8823196 <ClearProxyRecords+0x166>
        if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
    e8823094:	4f89b703          	ld	a4,1272(s3) # 94f8 <memcmp-0xe87f6b08>
    e8823098:	701c                	ld	a5,32(s0)
    e882309a:	00f70663          	beq	a4,a5,e88230a6 <ClearProxyRecords+0x76>
            m->CurrentRecord = rr->next;
    e882309e:	601c                	ld	a5,0(s0)
    e88230a0:	1cf93823          	sd	a5,464(s2)
    e88230a4:	b7cd                	j	e8823086 <ClearProxyRecords+0x56>
        if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
    e88230a6:	002ad703          	lhu	a4,2(s5)
    e88230aa:	07e45783          	lhu	a5,126(s0)
    e88230ae:	fef718e3          	bne	a4,a5,e882309e <ClearProxyRecords+0x6e>
    e88230b2:	004ad703          	lhu	a4,4(s5)
    e88230b6:	08045783          	lhu	a5,128(s0)
    e88230ba:	fef712e3          	bne	a4,a5,e882309e <ClearProxyRecords+0x6e>
    e88230be:	006ad703          	lhu	a4,6(s5)
    e88230c2:	08245783          	lhu	a5,130(s0)
    e88230c6:	fcf71ce3          	bne	a4,a5,e882309e <ClearProxyRecords+0x6e>
            if (owner->seq != rr->WakeUp.seq || m->timenow - rr->TimeRcvd > mDNSPlatformOneSecond * 60)
    e88230ca:	001a8c03          	lb	s8,1(s5)
    e88230ce:	07d40883          	lb	a7,125(s0)
    e88230d2:	011c1f63          	bne	s8,a7,e88230f0 <ClearProxyRecords+0xc0>
    e88230d6:	0a442783          	lw	a5,164(s0)
    e88230da:	2404a703          	lw	a4,576(s1)
    e88230de:	000ba683          	lw	a3,0(s7)
    e88230e2:	9f1d                	subw	a4,a4,a5
    e88230e4:	03c00793          	li	a5,60
    e88230e8:	02d787bb          	mulw	a5,a5,a3
    e88230ec:	fae7d9e3          	bge	a5,a4,e882309e <ClearProxyRecords+0x6e>
                LogSPS("ClearProxyRecords: Removing %3d AC %2d %02X H-MAC %.6a I-MAC %.6a %d %d %s",
    e88230f0:	000b2797          	auipc	a5,0xb2
    e88230f4:	98478793          	addi	a5,a5,-1660 # e88d4a74 <mDNS_LoggingEnabled>
    e88230f8:	439c                	lw	a5,0(a5)
    e88230fa:	c3b9                	beqz	a5,e8823140 <ClearProxyRecords+0x110>
    e88230fc:	780c                	ld	a1,48(s0)
    e88230fe:	0b744683          	lbu	a3,183(s0)
    e8823102:	00844703          	lbu	a4,8(s0)
    e8823106:	03b48613          	addi	a2,s1,59
    e882310a:	0591                	addi	a1,a1,4
    e882310c:	00840513          	addi	a0,s0,8
    e8823110:	f446                	sd	a7,40(sp)
    e8823112:	e10b2c83          	lw	s9,-496(s6) # 4e10 <memcmp-0xe87fb1f0>
    e8823116:	f036                	sd	a3,32(sp)
    e8823118:	ec3a                	sd	a4,24(sp)
    e882311a:	8fbf30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882311e:	e42a                	sd	a0,8(sp)
    e8823120:	78a2                	ld	a7,40(sp)
    e8823122:	6762                	ld	a4,24(sp)
    e8823124:	7682                	ld	a3,32(sp)
    e8823126:	e062                	sd	s8,0(sp)
    e8823128:	08440813          	addi	a6,s0,132
    e882312c:	07e40793          	addi	a5,s0,126
    e8823130:	8666                	mv	a2,s9
    e8823132:	00082597          	auipc	a1,0x82
    e8823136:	fbe58593          	addi	a1,a1,-66 # e88a50f0 <end.8789+0x1a48>
    e882313a:	4509                	li	a0,2
    e882313c:	3700c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (rr->resrec.RecordType == kDNSRecordTypeDeregistering) rr->resrec.RecordType = kDNSRecordTypeShared;
    e8823140:	00844703          	lbu	a4,8(s0)
    e8823144:	4785                	li	a5,1
    e8823146:	00f71563          	bne	a4,a5,e8823150 <ClearProxyRecords+0x120>
    e882314a:	47a1                	li	a5,8
    e882314c:	00f40423          	sb	a5,8(s0)
                rr->WakeUp.HMAC = zeroEthAddr;  // Clear HMAC so that mDNS_Deregister_internal doesn't waste packets trying to wake this host
    e8823150:	00080797          	auipc	a5,0x80
    e8823154:	44878793          	addi	a5,a5,1096 # e88a3598 <zeroEthAddr>
    e8823158:	4398                	lw	a4,0(a5)
    e882315a:	0047d783          	lhu	a5,4(a5)
                rr->RequireGoodbye = mDNSfalse; // and we don't want to send goodbye for it, since real host is now back and functional
    e882315e:	0a040c23          	sb	zero,184(s0)
                rr->WakeUp.HMAC = zeroEthAddr;  // Clear HMAC so that mDNS_Deregister_internal doesn't waste packets trying to wake this host
    e8823162:	06e42f23          	sw	a4,126(s0)
    e8823166:	08f41123          	sh	a5,130(s0)
                mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e882316a:	4601                	li	a2,0
    e882316c:	85a2                	mv	a1,s0
    e882316e:	8526                	mv	a0,s1
    e8823170:	dfcff0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
                SetSPSProxyListChanged(m->rec.r.resrec.InterfaceID);
    e8823174:	d78a3503          	ld	a0,-648(s4) # 3d78 <memcmp-0xe87fc288>
    e8823178:	c519                	beqz	a0,e8823186 <ClearProxyRecords+0x156>
    e882317a:	4f89b783          	ld	a5,1272(s3)
    e882317e:	00f50463          	beq	a0,a5,e8823186 <ClearProxyRecords+0x156>
    e8823182:	7940c0ef          	jal	ra,e882f916 <mDNSPlatformUpdateProxyList>
    e8823186:	4f89b783          	ld	a5,1272(s3)
    e882318a:	d6fa3c23          	sd	a5,-648(s4)
        if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now
    e882318e:	1d093783          	ld	a5,464(s2)
    e8823192:	f08786e3          	beq	a5,s0,e882309e <ClearProxyRecords+0x6e>
    while (m->CurrentRecord)
    e8823196:	1d093403          	ld	s0,464(s2)
    e882319a:	ee041de3          	bnez	s0,e8823094 <ClearProxyRecords+0x64>
}
    e882319e:	60aa                	ld	ra,136(sp)
    e88231a0:	640a                	ld	s0,128(sp)
    e88231a2:	74e6                	ld	s1,120(sp)
    e88231a4:	7946                	ld	s2,112(sp)
    e88231a6:	79a6                	ld	s3,104(sp)
    e88231a8:	7a06                	ld	s4,96(sp)
    e88231aa:	6ae6                	ld	s5,88(sp)
    e88231ac:	6b46                	ld	s6,80(sp)
    e88231ae:	6ba6                	ld	s7,72(sp)
    e88231b0:	6c06                	ld	s8,64(sp)
    e88231b2:	7ce2                	ld	s9,56(sp)
    e88231b4:	6149                	addi	sp,sp,144
    e88231b6:	8082                	ret

00000000e88231b8 <ScheduleWakeupForList.part.46>:
mDNSlocal void ScheduleWakeupForList(mDNS *const m, mDNSInterfaceID InterfaceID, mDNSEthAddr *e, AuthRecord *const thelist)
    e88231b8:	715d                	addi	sp,sp,-80
    e88231ba:	fc26                	sd	s1,56(sp)
    while (m->CurrentRecord)
    e88231bc:	648d                	lui	s1,0x3
mDNSlocal void ScheduleWakeupForList(mDNS *const m, mDNSInterfaceID InterfaceID, mDNSEthAddr *e, AuthRecord *const thelist)
    e88231be:	f84a                	sd	s2,48(sp)
    e88231c0:	f44e                	sd	s3,40(sp)
    e88231c2:	f052                	sd	s4,32(sp)
    e88231c4:	e85a                	sd	s6,16(sp)
    e88231c6:	e45e                	sd	s7,8(sp)
    e88231c8:	e062                	sd	s8,0(sp)
    e88231ca:	e486                	sd	ra,72(sp)
    e88231cc:	e0a2                	sd	s0,64(sp)
    e88231ce:	ec56                	sd	s5,24(sp)
    e88231d0:	892a                	mv	s2,a0
    e88231d2:	8a2e                	mv	s4,a1
    e88231d4:	89b2                	mv	s3,a2
    while (m->CurrentRecord)
    e88231d6:	94aa                	add	s1,s1,a0
            LogInfo("ScheduleWakeupForList: Scheduling wakeup packets for %s", ARDisplayString(m, rr));
    e88231d8:	000b2b17          	auipc	s6,0xb2
    e88231dc:	89cb0b13          	addi	s6,s6,-1892 # e88d4a74 <mDNS_LoggingEnabled>
    e88231e0:	03b50b93          	addi	s7,a0,59
    e88231e4:	00083c17          	auipc	s8,0x83
    e88231e8:	2a4c0c13          	addi	s8,s8,676 # e88a6488 <end.8789+0x2de0>
        if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering && mDNSSameEthAddress(&rr->WakeUp.HMAC, e))
    e88231ec:	4a85                	li	s5,1
    while (m->CurrentRecord)
    e88231ee:	1d04b403          	ld	s0,464(s1) # 31d0 <memcmp-0xe87fce30>
    e88231f2:	ec09                	bnez	s0,e882320c <ScheduleWakeupForList.part.46+0x54>
}
    e88231f4:	60a6                	ld	ra,72(sp)
    e88231f6:	6406                	ld	s0,64(sp)
    e88231f8:	74e2                	ld	s1,56(sp)
    e88231fa:	7942                	ld	s2,48(sp)
    e88231fc:	79a2                	ld	s3,40(sp)
    e88231fe:	7a02                	ld	s4,32(sp)
    e8823200:	6ae2                	ld	s5,24(sp)
    e8823202:	6b42                	ld	s6,16(sp)
    e8823204:	6ba2                	ld	s7,8(sp)
    e8823206:	6c02                	ld	s8,0(sp)
    e8823208:	6161                	addi	sp,sp,80
    e882320a:	8082                	ret
        if (rr->resrec.InterfaceID == InterfaceID && rr->resrec.RecordType != kDNSRecordTypeDeregistering && mDNSSameEthAddress(&rr->WakeUp.HMAC, e))
    e882320c:	701c                	ld	a5,32(s0)
    e882320e:	07479063          	bne	a5,s4,e882326e <ScheduleWakeupForList.part.46+0xb6>
    e8823212:	00844783          	lbu	a5,8(s0)
    e8823216:	05578c63          	beq	a5,s5,e882326e <ScheduleWakeupForList.part.46+0xb6>
    e882321a:	07e45703          	lhu	a4,126(s0)
    e882321e:	0009d783          	lhu	a5,0(s3)
    e8823222:	04f71663          	bne	a4,a5,e882326e <ScheduleWakeupForList.part.46+0xb6>
    e8823226:	08045703          	lhu	a4,128(s0)
    e882322a:	0029d783          	lhu	a5,2(s3)
    e882322e:	04f71063          	bne	a4,a5,e882326e <ScheduleWakeupForList.part.46+0xb6>
    e8823232:	08245703          	lhu	a4,130(s0)
    e8823236:	0049d783          	lhu	a5,4(s3)
    e882323a:	02f71a63          	bne	a4,a5,e882326e <ScheduleWakeupForList.part.46+0xb6>
            LogInfo("ScheduleWakeupForList: Scheduling wakeup packets for %s", ARDisplayString(m, rr));
    e882323e:	000b2783          	lw	a5,0(s6)
    e8823242:	cf89                	beqz	a5,e882325c <ScheduleWakeupForList.part.46+0xa4>
    e8823244:	780c                	ld	a1,48(s0)
    e8823246:	865e                	mv	a2,s7
    e8823248:	00840513          	addi	a0,s0,8
    e882324c:	0591                	addi	a1,a1,4
    e882324e:	fc6f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8823252:	862a                	mv	a2,a0
    e8823254:	85e2                	mv	a1,s8
    e8823256:	450d                	li	a0,3
    e8823258:	2540c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e882325c:	4601                	li	a2,0
    e882325e:	85a2                	mv	a1,s0
    e8823260:	854a                	mv	a0,s2
    e8823262:	d0aff0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
        if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now
    e8823266:	1d04b783          	ld	a5,464(s1)
    e882326a:	f8f412e3          	bne	s0,a5,e88231ee <ScheduleWakeupForList.part.46+0x36>
            m->CurrentRecord = rr->next;
    e882326e:	601c                	ld	a5,0(s0)
    e8823270:	1cf4b823          	sd	a5,464(s1)
    e8823274:	bfa5                	j	e88231ec <ScheduleWakeupForList.part.46+0x34>

00000000e8823276 <ScheduleWakeup>:
    if (!e->l[0]) { LogMsg("ScheduleWakeup ERROR: Target HMAC is zero"); return; }
    e8823276:	421c                	lw	a5,0(a2)
    e8823278:	eb81                	bnez	a5,e8823288 <ScheduleWakeup+0x12>
    e882327a:	00083597          	auipc	a1,0x83
    e882327e:	1a658593          	addi	a1,a1,422 # e88a6420 <end.8789+0x2d78>
    e8823282:	4501                	li	a0,0
        LogMsg("ScheduleWakeupForList ERROR: Target HMAC is zero");
    e8823284:	2280c06f          	j	e882f4ac <LogMsgWithLevel>
{
    e8823288:	7179                	addi	sp,sp,-48
    e882328a:	e422                	sd	s0,8(sp)
    m->CurrentRecord = thelist;
    e882328c:	640d                	lui	s0,0x3
    e882328e:	942a                	add	s0,s0,a0
{
    e8823290:	e826                	sd	s1,16(sp)
    e8823292:	ec4a                	sd	s2,24(sp)
    e8823294:	f04e                	sd	s3,32(sp)
    e8823296:	f406                	sd	ra,40(sp)
    m->CurrentRecord = thelist;
    e8823298:	1c043783          	ld	a5,448(s0) # 31c0 <memcmp-0xe87fce40>
    e882329c:	84b2                	mv	s1,a2
    e882329e:	892a                	mv	s2,a0
    e88232a0:	1cf43823          	sd	a5,464(s0)
    while (m->CurrentRecord)
    e88232a4:	89ae                	mv	s3,a1
    e88232a6:	f13ff0ef          	jal	ra,e88231b8 <ScheduleWakeupForList.part.46>
    if (!e->l[0])
    e88232aa:	409c                	lw	a5,0(s1)
    e88232ac:	ef89                	bnez	a5,e88232c6 <ScheduleWakeup+0x50>
}
    e88232ae:	6422                	ld	s0,8(sp)
    e88232b0:	70a2                	ld	ra,40(sp)
    e88232b2:	64c2                	ld	s1,16(sp)
    e88232b4:	6962                	ld	s2,24(sp)
    e88232b6:	7982                	ld	s3,32(sp)
        LogMsg("ScheduleWakeupForList ERROR: Target HMAC is zero");
    e88232b8:	00083597          	auipc	a1,0x83
    e88232bc:	19858593          	addi	a1,a1,408 # e88a6450 <end.8789+0x2da8>
    e88232c0:	4501                	li	a0,0
}
    e88232c2:	6145                	addi	sp,sp,48
    e88232c4:	b7c1                	j	e8823284 <ScheduleWakeup+0xe>
    m->CurrentRecord = thelist;
    e88232c6:	1b843783          	ld	a5,440(s0)
    e88232ca:	8626                	mv	a2,s1
    e88232cc:	85ce                	mv	a1,s3
    e88232ce:	1cf43823          	sd	a5,464(s0)
}
    e88232d2:	6422                	ld	s0,8(sp)
    e88232d4:	70a2                	ld	ra,40(sp)
    e88232d6:	64c2                	ld	s1,16(sp)
    e88232d8:	7982                	ld	s3,32(sp)
    e88232da:	854a                	mv	a0,s2
    e88232dc:	6962                	ld	s2,24(sp)
    e88232de:	6145                	addi	sp,sp,48
    e88232e0:	ed9ff06f          	j	e88231b8 <ScheduleWakeupForList.part.46>

00000000e88232e4 <SPSRecordCallback>:
    if (result && result != mStatus_MemFree)
    e88232e4:	0e060d63          	beqz	a2,e88233de <SPSRecordCallback+0xfa>
{
    e88232e8:	7179                	addi	sp,sp,-48
    e88232ea:	e422                	sd	s0,8(sp)
    e88232ec:	e826                	sd	s1,16(sp)
    e88232ee:	ec4a                	sd	s2,24(sp)
    if (result && result != mStatus_MemFree)
    e88232f0:	77c1                	lui	a5,0xffff0
{
    e88232f2:	f406                	sd	ra,40(sp)
    e88232f4:	f04e                	sd	s3,32(sp)
    if (result && result != mStatus_MemFree)
    e88232f6:	f0078793          	addi	a5,a5,-256 # fffffffffffeff00 <__DRAM0_INF_BASE+0xfffffffeffffff00>
    e88232fa:	8932                	mv	s2,a2
    e88232fc:	842e                	mv	s0,a1
    e88232fe:	84aa                	mv	s1,a0
    e8823300:	0af60c63          	beq	a2,a5,e88233b8 <SPSRecordCallback+0xd4>
        LogInfo("SPS Callback %d %s", result, ARDisplayString(m, ar));
    e8823304:	000b1797          	auipc	a5,0xb1
    e8823308:	77078793          	addi	a5,a5,1904 # e88d4a74 <mDNS_LoggingEnabled>
    e882330c:	439c                	lw	a5,0(a5)
    e882330e:	c395                	beqz	a5,e8823332 <SPSRecordCallback+0x4e>
    e8823310:	798c                	ld	a1,48(a1)
    e8823312:	03b50613          	addi	a2,a0,59
    e8823316:	00840513          	addi	a0,s0,8
    e882331a:	0591                	addi	a1,a1,4
    e882331c:	ef8f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8823320:	86aa                	mv	a3,a0
    e8823322:	864a                	mv	a2,s2
    e8823324:	00083597          	auipc	a1,0x83
    e8823328:	05c58593          	addi	a1,a1,92 # e88a6380 <end.8789+0x2cd8>
    e882332c:	450d                	li	a0,3
    e882332e:	17e0c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (result == mStatus_NameConflict)
    e8823332:	77c1                	lui	a5,0xffff0
    e8823334:	17d1                	addi	a5,a5,-12
    e8823336:	00f90963          	beq	s2,a5,e8823348 <SPSRecordCallback+0x64>
}
    e882333a:	70a2                	ld	ra,40(sp)
    e882333c:	6422                	ld	s0,8(sp)
    e882333e:	64c2                	ld	s1,16(sp)
    e8823340:	6962                	ld	s2,24(sp)
    e8823342:	7982                	ld	s3,32(sp)
    e8823344:	6145                	addi	sp,sp,48
    e8823346:	8082                	ret
        mDNS_Lock(m);
    e8823348:	00085597          	auipc	a1,0x85
    e882334c:	a1858593          	addi	a1,a1,-1512 # e88a7d60 <__func__.11725>
    e8823350:	8526                	mv	a0,s1
    e8823352:	eb0f20ef          	jal	ra,e8815a02 <mDNS_Lock_>
        LogMsg("%-7s Conflicting mDNS -- waking %.6a %s", InterfaceNameForID(m, ar->resrec.InterfaceID), &ar->WakeUp.HMAC, ARDisplayString(m, ar));
    e8823356:	07e40913          	addi	s2,s0,126
    e882335a:	700c                	ld	a1,32(s0)
    e882335c:	8526                	mv	a0,s1
    e882335e:	fb2fb0ef          	jal	ra,e881eb10 <InterfaceNameForID>
    e8823362:	89aa                	mv	s3,a0
    e8823364:	780c                	ld	a1,48(s0)
    e8823366:	03b48613          	addi	a2,s1,59
    e882336a:	00840513          	addi	a0,s0,8
    e882336e:	0591                	addi	a1,a1,4
    e8823370:	ea4f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8823374:	872a                	mv	a4,a0
    e8823376:	86ca                	mv	a3,s2
    e8823378:	864e                	mv	a2,s3
    e882337a:	00083597          	auipc	a1,0x83
    e882337e:	01e58593          	addi	a1,a1,30 # e88a6398 <end.8789+0x2cf0>
    e8823382:	4501                	li	a0,0
    e8823384:	1280c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (ar->WakeUp.HMAC.l[0])
    e8823388:	07e42783          	lw	a5,126(s0)
    e882338c:	cf99                	beqz	a5,e88233aa <SPSRecordCallback+0xc6>
            SendWakeup(m, ar->resrec.InterfaceID, &ar->WakeUp.IMAC, &ar->WakeUp.password, mDNSfalse);  // Send one wakeup magic packet
    e882338e:	700c                	ld	a1,32(s0)
    e8823390:	08440613          	addi	a2,s0,132
    e8823394:	8526                	mv	a0,s1
    e8823396:	4701                	li	a4,0
    e8823398:	08a40693          	addi	a3,s0,138
    e882339c:	fc8f90ef          	jal	ra,e881cb64 <SendWakeup>
            ScheduleWakeup(m, ar->resrec.InterfaceID, &ar->WakeUp.HMAC);                               // Schedule all other records with the same owner to be woken
    e88233a0:	700c                	ld	a1,32(s0)
    e88233a2:	864a                	mv	a2,s2
    e88233a4:	8526                	mv	a0,s1
    e88233a6:	ed1ff0ef          	jal	ra,e8823276 <ScheduleWakeup>
        mDNS_Unlock(m);
    e88233aa:	00085597          	auipc	a1,0x85
    e88233ae:	9b658593          	addi	a1,a1,-1610 # e88a7d60 <__func__.11725>
    e88233b2:	8526                	mv	a0,s1
    e88233b4:	f18f20ef          	jal	ra,e8815acc <mDNS_Unlock_>
        m->ProxyRecords--;
    e88233b8:	6795                	lui	a5,0x5
    e88233ba:	97a6                	add	a5,a5,s1
    e88233bc:	e107a703          	lw	a4,-496(a5) # 4e10 <memcmp-0xe87fb1f0>
        mDNSPlatformMemFree(ar);
    e88233c0:	8522                	mv	a0,s0
        m->ProxyRecords--;
    e88233c2:	377d                	addiw	a4,a4,-1
    e88233c4:	e0e7a823          	sw	a4,-496(a5)
        mDNSPlatformMemFree(ar);
    e88233c8:	6bb0c0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
}
    e88233cc:	6422                	ld	s0,8(sp)
    e88233ce:	70a2                	ld	ra,40(sp)
    e88233d0:	6962                	ld	s2,24(sp)
    e88233d2:	7982                	ld	s3,32(sp)
        mDNS_UpdateAllowSleep(m);
    e88233d4:	8526                	mv	a0,s1
}
    e88233d6:	64c2                	ld	s1,16(sp)
    e88233d8:	6145                	addi	sp,sp,48
        mDNS_UpdateAllowSleep(m);
    e88233da:	8c7fd06f          	j	e8820ca0 <mDNS_UpdateAllowSleep>
    e88233de:	8082                	ret

00000000e88233e0 <DeregisterProxyRecord>:
    rr->WakeUp.HMAC    = zeroEthAddr; // Clear HMAC so that mDNS_Deregister_internal doesn't waste packets trying to wake this host
    e88233e0:	00080717          	auipc	a4,0x80
    e88233e4:	1b870713          	addi	a4,a4,440 # e88a3598 <zeroEthAddr>
    e88233e8:	4314                	lw	a3,0(a4)
    e88233ea:	00475703          	lhu	a4,4(a4)
{
    e88233ee:	1141                	addi	sp,sp,-16
    rr->WakeUp.HMAC    = zeroEthAddr; // Clear HMAC so that mDNS_Deregister_internal doesn't waste packets trying to wake this host
    e88233f0:	06d5af23          	sw	a3,126(a1)
    e88233f4:	08e59123          	sh	a4,130(a1)
    rr->RequireGoodbye = mDNSfalse;   // and we don't want to send goodbye for it
    e88233f8:	0a058c23          	sb	zero,184(a1)
    mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e88233fc:	4601                	li	a2,0
{
    e88233fe:	e022                	sd	s0,0(sp)
    e8823400:	e406                	sd	ra,8(sp)
    e8823402:	842a                	mv	s0,a0
    mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e8823404:	b68ff0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
    SetSPSProxyListChanged(m->rec.r.resrec.InterfaceID);
    e8823408:	6791                	lui	a5,0x4
    e882340a:	97a2                	add	a5,a5,s0
    e882340c:	d787b503          	ld	a0,-648(a5) # 3d78 <memcmp-0xe87fc288>
    e8823410:	c909                	beqz	a0,e8823422 <DeregisterProxyRecord+0x42>
    e8823412:	67a5                	lui	a5,0x9
    e8823414:	97a2                	add	a5,a5,s0
    e8823416:	4f87b783          	ld	a5,1272(a5) # 94f8 <memcmp-0xe87f6b08>
    e882341a:	00f50463          	beq	a0,a5,e8823422 <DeregisterProxyRecord+0x42>
    e882341e:	4f80c0ef          	jal	ra,e882f916 <mDNSPlatformUpdateProxyList>
    e8823422:	6725                	lui	a4,0x9
    e8823424:	6791                	lui	a5,0x4
    e8823426:	97a2                	add	a5,a5,s0
    e8823428:	943a                	add	s0,s0,a4
    e882342a:	4f843703          	ld	a4,1272(s0)
    e882342e:	d6e7bc23          	sd	a4,-648(a5) # 3d78 <memcmp-0xe87fc288>
}
    e8823432:	60a2                	ld	ra,8(sp)
    e8823434:	6402                	ld	s0,0(sp)
    e8823436:	0141                	addi	sp,sp,16
    e8823438:	8082                	ret

00000000e882343a <ClearKeepaliveProxyRecords>:
    if (m->CurrentRecord)
    e882343a:	678d                	lui	a5,0x3
{
    e882343c:	7159                	addi	sp,sp,-112
    if (m->CurrentRecord)
    e882343e:	97aa                	add	a5,a5,a0
{
    e8823440:	f0a2                	sd	s0,96(sp)
    e8823442:	e8ca                	sd	s2,80(sp)
    e8823444:	e0d2                	sd	s4,64(sp)
    e8823446:	f85a                	sd	s6,48(sp)
    e8823448:	f486                	sd	ra,104(sp)
    e882344a:	eca6                	sd	s1,88(sp)
    e882344c:	e4ce                	sd	s3,72(sp)
    e882344e:	fc56                	sd	s5,56(sp)
    e8823450:	f45e                	sd	s7,40(sp)
    e8823452:	f062                	sd	s8,32(sp)
    e8823454:	ec66                	sd	s9,24(sp)
    e8823456:	e86a                	sd	s10,16(sp)
    e8823458:	892a                	mv	s2,a0
    if (m->CurrentRecord)
    e882345a:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
{
    e882345e:	8a2e                	mv	s4,a1
    e8823460:	8432                	mv	s0,a2
    e8823462:	8b36                	mv	s6,a3
    if (m->CurrentRecord)
    e8823464:	c105                	beqz	a0,e8823484 <ClearKeepaliveProxyRecords+0x4a>
        LogMsg("ClearKeepaliveProxyRecords ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e8823466:	790c                	ld	a1,48(a0)
    e8823468:	03b90613          	addi	a2,s2,59
    e882346c:	0521                	addi	a0,a0,8
    e882346e:	0591                	addi	a1,a1,4
    e8823470:	da4f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8823474:	862a                	mv	a2,a0
    e8823476:	00082597          	auipc	a1,0x82
    e882347a:	bb258593          	addi	a1,a1,-1102 # e88a5028 <end.8789+0x1980>
    e882347e:	4501                	li	a0,0
    e8823480:	02c0c0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentRecord = thelist;
    e8823484:	648d                	lui	s1,0x3
    e8823486:	94ca                	add	s1,s1,s2
            if (mDNS_KeepaliveRecord(&m->rec.r.resrec))
    e8823488:	69a5                	lui	s3,0x9
                LogSPS("ClearKeepaliveProxyRecords: Removing %3d H-MAC %.6a I-MAC %.6a %d %d %s",
    e882348a:	6a95                	lui	s5,0x5
    m->CurrentRecord = thelist;
    e882348c:	1c84b823          	sd	s0,464(s1) # 31d0 <memcmp-0xe87fce30>
            if (mDNS_KeepaliveRecord(&m->rec.r.resrec))
    e8823490:	99ca                	add	s3,s3,s2
                LogSPS("ClearKeepaliveProxyRecords: Removing %3d H-MAC %.6a I-MAC %.6a %d %d %s",
    e8823492:	9aca                	add	s5,s5,s2
            if (mDNS_KeepaliveRecord(&m->rec.r.resrec))
    e8823494:	4ba9                	li	s7,10
                LogSPS("ClearKeepaliveProxyRecords: Removing %3d H-MAC %.6a I-MAC %.6a %d %d %s",
    e8823496:	000b1c17          	auipc	s8,0xb1
    e882349a:	5dec0c13          	addi	s8,s8,1502 # e88d4a74 <mDNS_LoggingEnabled>
    e882349e:	03b90c93          	addi	s9,s2,59
    while (m->CurrentRecord)
    e88234a2:	1d04b403          	ld	s0,464(s1)
    e88234a6:	ec19                	bnez	s0,e88234c4 <ClearKeepaliveProxyRecords+0x8a>
}
    e88234a8:	70a6                	ld	ra,104(sp)
    e88234aa:	7406                	ld	s0,96(sp)
    e88234ac:	64e6                	ld	s1,88(sp)
    e88234ae:	6946                	ld	s2,80(sp)
    e88234b0:	69a6                	ld	s3,72(sp)
    e88234b2:	6a06                	ld	s4,64(sp)
    e88234b4:	7ae2                	ld	s5,56(sp)
    e88234b6:	7b42                	ld	s6,48(sp)
    e88234b8:	7ba2                	ld	s7,40(sp)
    e88234ba:	7c02                	ld	s8,32(sp)
    e88234bc:	6ce2                	ld	s9,24(sp)
    e88234be:	6d42                	ld	s10,16(sp)
    e88234c0:	6165                	addi	sp,sp,112
    e88234c2:	8082                	ret
        if (InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
    e88234c4:	701c                	ld	a5,32(s0)
    e88234c6:	0b679163          	bne	a5,s6,e8823568 <ClearKeepaliveProxyRecords+0x12e>
    e88234ca:	002a5703          	lhu	a4,2(s4)
    e88234ce:	07e45783          	lhu	a5,126(s0)
    e88234d2:	08f71b63          	bne	a4,a5,e8823568 <ClearKeepaliveProxyRecords+0x12e>
    e88234d6:	004a5703          	lhu	a4,4(s4)
    e88234da:	08045783          	lhu	a5,128(s0)
    e88234de:	08f71563          	bne	a4,a5,e8823568 <ClearKeepaliveProxyRecords+0x12e>
    e88234e2:	006a5703          	lhu	a4,6(s4)
    e88234e6:	08245783          	lhu	a5,130(s0)
    e88234ea:	06f71f63          	bne	a4,a5,e8823568 <ClearKeepaliveProxyRecords+0x12e>
            if (mDNS_KeepaliveRecord(&m->rec.r.resrec))
    e88234ee:	4e29d783          	lhu	a5,1250(s3) # 94e2 <memcmp-0xe87f6b1e>
    e88234f2:	07779b63          	bne	a5,s7,e8823568 <ClearKeepaliveProxyRecords+0x12e>
    e88234f6:	5009b503          	ld	a0,1280(s3)
    e88234fa:	4781                	li	a5,0
    e88234fc:	00054703          	lbu	a4,0(a0)
    e8823500:	c319                	beqz	a4,e8823506 <ClearKeepaliveProxyRecords+0xcc>
    e8823502:	00170793          	addi	a5,a4,1 # 9001 <memcmp-0xe87f6fff>
    e8823506:	00087597          	auipc	a1,0x87
    e882350a:	b4a58593          	addi	a1,a1,-1206 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    e882350e:	953e                	add	a0,a0,a5
    e8823510:	ad7ef0ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e8823514:	c531                	beqz	a0,e8823560 <ClearKeepaliveProxyRecords+0x126>
                LogSPS("ClearKeepaliveProxyRecords: Removing %3d H-MAC %.6a I-MAC %.6a %d %d %s",
    e8823516:	000c2783          	lw	a5,0(s8)
    e882351a:	cf9d                	beqz	a5,e8823558 <ClearKeepaliveProxyRecords+0x11e>
    e882351c:	780c                	ld	a1,48(s0)
    e882351e:	07d40783          	lb	a5,125(s0)
    e8823522:	001a0803          	lb	a6,1(s4)
    e8823526:	8666                	mv	a2,s9
    e8823528:	0591                	addi	a1,a1,4
    e882352a:	00840513          	addi	a0,s0,8
    e882352e:	e10aad03          	lw	s10,-496(s5) # 4e10 <memcmp-0xe87fb1f0>
    e8823532:	e43e                	sd	a5,8(sp)
    e8823534:	e042                	sd	a6,0(sp)
    e8823536:	cdef30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882353a:	88aa                	mv	a7,a0
    e882353c:	f8f1480b          	ldd	a6,a5,(sp),0,4
    e8823540:	08440713          	addi	a4,s0,132
    e8823544:	07e40693          	addi	a3,s0,126
    e8823548:	866a                	mv	a2,s10
    e882354a:	00082597          	auipc	a1,0x82
    e882354e:	b2658593          	addi	a1,a1,-1242 # e88a5070 <end.8789+0x19c8>
    e8823552:	4509                	li	a0,2
    e8823554:	7590b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                DeregisterProxyRecord(m, rr);
    e8823558:	85a2                	mv	a1,s0
    e882355a:	854a                	mv	a0,s2
    e882355c:	e85ff0ef          	jal	ra,e88233e0 <DeregisterProxyRecord>
        if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now
    e8823560:	1d04b783          	ld	a5,464(s1)
    e8823564:	f2879fe3          	bne	a5,s0,e88234a2 <ClearKeepaliveProxyRecords+0x68>
            m->CurrentRecord = rr->next;
    e8823568:	601c                	ld	a5,0(s0)
    e882356a:	1cf4b823          	sd	a5,464(s1)
    e882356e:	b71d                	j	e8823494 <ClearKeepaliveProxyRecords+0x5a>

00000000e8823570 <ClearIdenticalProxyRecords>:
    if (m->CurrentRecord)
    e8823570:	678d                	lui	a5,0x3
{
    e8823572:	7159                	addi	sp,sp,-112
    if (m->CurrentRecord)
    e8823574:	97aa                	add	a5,a5,a0
{
    e8823576:	f0a2                	sd	s0,96(sp)
    e8823578:	eca6                	sd	s1,88(sp)
    e882357a:	fc56                	sd	s5,56(sp)
    e882357c:	f486                	sd	ra,104(sp)
    e882357e:	e8ca                	sd	s2,80(sp)
    e8823580:	e4ce                	sd	s3,72(sp)
    e8823582:	e0d2                	sd	s4,64(sp)
    e8823584:	f85a                	sd	s6,48(sp)
    e8823586:	f45e                	sd	s7,40(sp)
    e8823588:	f062                	sd	s8,32(sp)
    e882358a:	ec66                	sd	s9,24(sp)
    e882358c:	84aa                	mv	s1,a0
    if (m->CurrentRecord)
    e882358e:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
{
    e8823592:	8aae                	mv	s5,a1
    e8823594:	8432                	mv	s0,a2
    if (m->CurrentRecord)
    e8823596:	c105                	beqz	a0,e88235b6 <ClearIdenticalProxyRecords+0x46>
        LogMsg("ClearIdenticalProxyRecords ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e8823598:	790c                	ld	a1,48(a0)
    e882359a:	03b48613          	addi	a2,s1,59
    e882359e:	0521                	addi	a0,a0,8
    e88235a0:	0591                	addi	a1,a1,4
    e88235a2:	c72f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88235a6:	862a                	mv	a2,a0
    e88235a8:	00082597          	auipc	a1,0x82
    e88235ac:	9f058593          	addi	a1,a1,-1552 # e88a4f98 <end.8789+0x18f0>
    e88235b0:	4501                	li	a0,0
    e88235b2:	6fb0b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentRecord = thelist;
    e88235b6:	678d                	lui	a5,0x3
            if (IdenticalResourceRecord(&rr->resrec, &m->rec.r.resrec))
    e88235b8:	59fd                	li	s3,-1
    m->CurrentRecord = thelist;
    e88235ba:	97a6                	add	a5,a5,s1
        if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
    e88235bc:	6925                	lui	s2,0x9
            if (IdenticalResourceRecord(&rr->resrec, &m->rec.r.resrec))
    e88235be:	1982                	slli	s3,s3,0x20
    m->CurrentRecord = thelist;
    e88235c0:	1c87b823          	sd	s0,464(a5) # 31d0 <memcmp-0xe87fce30>
        if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
    e88235c4:	9926                	add	s2,s2,s1
            if (IdenticalResourceRecord(&rr->resrec, &m->rec.r.resrec))
    e88235c6:	0109d993          	srli	s3,s3,0x10
                LogSPS("ClearIdenticalProxyRecords: Removing %3d H-MAC %.6a I-MAC %.6a %d %d %s",
    e88235ca:	000b1b97          	auipc	s7,0xb1
    e88235ce:	4aab8b93          	addi	s7,s7,1194 # e88d4a74 <mDNS_LoggingEnabled>
    while (m->CurrentRecord)
    e88235d2:	6a0d                	lui	s4,0x3
                LogSPS("ClearIdenticalProxyRecords: Removing %3d H-MAC %.6a I-MAC %.6a %d %d %s",
    e88235d4:	6b15                	lui	s6,0x5
    while (m->CurrentRecord)
    e88235d6:	9a26                	add	s4,s4,s1
                LogSPS("ClearIdenticalProxyRecords: Removing %3d H-MAC %.6a I-MAC %.6a %d %d %s",
    e88235d8:	9b26                	add	s6,s6,s1
    while (m->CurrentRecord)
    e88235da:	1d0a3403          	ld	s0,464(s4) # 31d0 <memcmp-0xe87fce30>
    e88235de:	ec11                	bnez	s0,e88235fa <ClearIdenticalProxyRecords+0x8a>
}
    e88235e0:	70a6                	ld	ra,104(sp)
    e88235e2:	7406                	ld	s0,96(sp)
    e88235e4:	64e6                	ld	s1,88(sp)
    e88235e6:	6946                	ld	s2,80(sp)
    e88235e8:	69a6                	ld	s3,72(sp)
    e88235ea:	6a06                	ld	s4,64(sp)
    e88235ec:	7ae2                	ld	s5,56(sp)
    e88235ee:	7b42                	ld	s6,48(sp)
    e88235f0:	7ba2                	ld	s7,40(sp)
    e88235f2:	7c02                	ld	s8,32(sp)
    e88235f4:	6ce2                	ld	s9,24(sp)
    e88235f6:	6165                	addi	sp,sp,112
    e88235f8:	8082                	ret
        if (m->rec.r.resrec.InterfaceID == rr->resrec.InterfaceID && mDNSSameEthAddress(&owner->HMAC, &rr->WakeUp.HMAC))
    e88235fa:	4f893703          	ld	a4,1272(s2) # 94f8 <memcmp-0xe87f6b08>
    e88235fe:	701c                	ld	a5,32(s0)
    e8823600:	0cf71963          	bne	a4,a5,e88236d2 <ClearIdenticalProxyRecords+0x162>
    e8823604:	002ad703          	lhu	a4,2(s5)
    e8823608:	07e45783          	lhu	a5,126(s0)
    e882360c:	0cf71363          	bne	a4,a5,e88236d2 <ClearIdenticalProxyRecords+0x162>
    e8823610:	004ad703          	lhu	a4,4(s5)
    e8823614:	08045783          	lhu	a5,128(s0)
    e8823618:	0af71d63          	bne	a4,a5,e88236d2 <ClearIdenticalProxyRecords+0x162>
    e882361c:	006ad703          	lhu	a4,6(s5)
    e8823620:	08245783          	lhu	a5,130(s0)
    e8823624:	0af71763          	bne	a4,a5,e88236d2 <ClearIdenticalProxyRecords+0x162>
            if (IdenticalResourceRecord(&rr->resrec, &m->rec.r.resrec))
    e8823628:	6418                	ld	a4,8(s0)
    e882362a:	4e093783          	ld	a5,1248(s2)
    e882362e:	01377733          	and	a4,a4,s3
    e8823632:	0137f7b3          	and	a5,a5,s3
    e8823636:	08f71e63          	bne	a4,a5,e88236d2 <ClearIdenticalProxyRecords+0x162>
    e882363a:	4c18                	lw	a4,24(s0)
    e882363c:	4f092783          	lw	a5,1264(s2)
    e8823640:	08f71963          	bne	a4,a5,e88236d2 <ClearIdenticalProxyRecords+0x162>
    e8823644:	01445703          	lhu	a4,20(s0)
    e8823648:	4ec95783          	lhu	a5,1260(s2)
    e882364c:	08f71363          	bne	a4,a5,e88236d2 <ClearIdenticalProxyRecords+0x162>
    e8823650:	4c58                	lw	a4,28(s0)
    e8823652:	4f492783          	lw	a5,1268(s2)
    e8823656:	06f71e63          	bne	a4,a5,e88236d2 <ClearIdenticalProxyRecords+0x162>
    e882365a:	50893583          	ld	a1,1288(s2)
    e882365e:	00840c13          	addi	s8,s0,8
    e8823662:	ffff0617          	auipc	a2,0xffff0
    e8823666:	9e860613          	addi	a2,a2,-1560 # e881304a <SameDomainName>
    e882366a:	0591                	addi	a1,a1,4
    e882366c:	8562                	mv	a0,s8
    e882366e:	99df00ef          	jal	ra,e881400a <SameRDataBody>
    e8823672:	cd21                	beqz	a0,e88236ca <ClearIdenticalProxyRecords+0x15a>
    e8823674:	50093583          	ld	a1,1280(s2)
    e8823678:	7408                	ld	a0,40(s0)
    e882367a:	9d1ef0ef          	jal	ra,e881304a <SameDomainName>
    e882367e:	c531                	beqz	a0,e88236ca <ClearIdenticalProxyRecords+0x15a>
                LogSPS("ClearIdenticalProxyRecords: Removing %3d H-MAC %.6a I-MAC %.6a %d %d %s",
    e8823680:	000ba783          	lw	a5,0(s7)
    e8823684:	cf9d                	beqz	a5,e88236c2 <ClearIdenticalProxyRecords+0x152>
    e8823686:	780c                	ld	a1,48(s0)
    e8823688:	07d40783          	lb	a5,125(s0)
    e882368c:	001a8803          	lb	a6,1(s5)
    e8823690:	03b48613          	addi	a2,s1,59
    e8823694:	0591                	addi	a1,a1,4
    e8823696:	8562                	mv	a0,s8
    e8823698:	e10b2c83          	lw	s9,-496(s6) # 4e10 <memcmp-0xe87fb1f0>
    e882369c:	e43e                	sd	a5,8(sp)
    e882369e:	e042                	sd	a6,0(sp)
    e88236a0:	b74f30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88236a4:	88aa                	mv	a7,a0
    e88236a6:	f8f1480b          	ldd	a6,a5,(sp),0,4
    e88236aa:	08440713          	addi	a4,s0,132
    e88236ae:	07e40693          	addi	a3,s0,126
    e88236b2:	8666                	mv	a2,s9
    e88236b4:	00082597          	auipc	a1,0x82
    e88236b8:	92c58593          	addi	a1,a1,-1748 # e88a4fe0 <end.8789+0x1938>
    e88236bc:	4509                	li	a0,2
    e88236be:	5ef0b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                DeregisterProxyRecord(m, rr);
    e88236c2:	85a2                	mv	a1,s0
    e88236c4:	8526                	mv	a0,s1
    e88236c6:	d1bff0ef          	jal	ra,e88233e0 <DeregisterProxyRecord>
        if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now
    e88236ca:	1d0a3783          	ld	a5,464(s4)
    e88236ce:	f08796e3          	bne	a5,s0,e88235da <ClearIdenticalProxyRecords+0x6a>
            m->CurrentRecord = rr->next;
    e88236d2:	6018                	ld	a4,0(s0)
    e88236d4:	678d                	lui	a5,0x3
    e88236d6:	97a6                	add	a5,a5,s1
    e88236d8:	1ce7b823          	sd	a4,464(a5) # 31d0 <memcmp-0xe87fce30>
    e88236dc:	bddd                	j	e88235d2 <ClearIdenticalProxyRecords+0x62>

00000000e88236de <mDNSCoreReceiveUpdate>:
{
    e88236de:	ac010113          	addi	sp,sp,-1344
    e88236e2:	51613023          	sd	s6,1280(sp)
    e88236e6:	8b3e                	mv	s6,a5
    OwnerOptData owner = zeroOwner;     // Need to zero this, so we'll know if this Update packet was missing its Owner option
    e88236e8:	00080797          	auipc	a5,0x80
    e88236ec:	ee078793          	addi	a5,a5,-288 # e88a35c8 <zeroOwner>
{
    e88236f0:	53213023          	sd	s2,1312(sp)
    e88236f4:	4f813823          	sd	s8,1264(sp)
    e88236f8:	893a                	mv	s2,a4
    e88236fa:	0ff77c13          	andi	s8,a4,255
    OwnerOptData owner = zeroOwner;     // Need to zero this, so we'll know if this Update packet was missing its Owner option
    e88236fe:	6398                	ld	a4,0(a5)
{
    e8823700:	52813823          	sd	s0,1328(sp)
    e8823704:	52913423          	sd	s1,1320(sp)
    OwnerOptData owner = zeroOwner;     // Need to zero this, so we'll know if this Update packet was missing its Owner option
    e8823708:	f53a                	sd	a4,168(sp)
    e882370a:	6798                	ld	a4,8(a5)
    e882370c:	4b9c                	lw	a5,16(a5)
{
    e882370e:	51313c23          	sd	s3,1304(sp)
    e8823712:	51413823          	sd	s4,1296(sp)
    OwnerOptData owner = zeroOwner;     // Need to zero this, so we'll know if this Update packet was missing its Owner option
    e8823716:	dd3e                	sw	a5,184(sp)
    LogSPS("Received Update from %#-15a:%-5d to %#-15a:%-5d on 0x%p with "
    e8823718:	000b1797          	auipc	a5,0xb1
    e882371c:	35c78793          	addi	a5,a5,860 # e88d4a74 <mDNS_LoggingEnabled>
{
    e8823720:	51513423          	sd	s5,1288(sp)
    e8823724:	4f713c23          	sd	s7,1272(sp)
    e8823728:	4db13c23          	sd	s11,1240(sp)
    e882372c:	52113c23          	sd	ra,1336(sp)
    e8823730:	4f913423          	sd	s9,1256(sp)
    e8823734:	4fa13023          	sd	s10,1248(sp)
    OwnerOptData owner = zeroOwner;     // Need to zero this, so we'll know if this Update packet was missing its Owner option
    e8823738:	f93a                	sd	a4,176(sp)
    LogSPS("Received Update from %#-15a:%-5d to %#-15a:%-5d on 0x%p with "
    e882373a:	4398                	lw	a4,0(a5)
    e882373c:	f8be                	sd	a5,112(sp)
{
    e882373e:	842a                	mv	s0,a0
    e8823740:	89ae                	mv	s3,a1
    e8823742:	8ab2                	mv	s5,a2
    e8823744:	8bb6                	mv	s7,a3
    e8823746:	84c2                	mv	s1,a6
    e8823748:	8a46                	mv	s4,a7
    e882374a:	3c893d8b          	extu	s11,s2,15,8
    LogSPS("Received Update from %#-15a:%-5d to %#-15a:%-5d on 0x%p with "
    e882374e:	c755                	beqz	a4,e88237fa <mDNSCoreReceiveUpdate+0x11c>
    e8823750:	3c84b70b          	extu	a4,s1,15,8
    e8823754:	0ff87793          	andi	a5,a6,255
    e8823758:	0045d883          	lhu	a7,4(a1)
    e882375c:	0087979b          	slliw	a5,a5,0x8
    e8823760:	008c1693          	slli	a3,s8,0x8
    e8823764:	8fd9                	or	a5,a5,a4
    e8823766:	4705                	li	a4,1
    e8823768:	00dde6b3          	or	a3,s11,a3
    e882376c:	00086617          	auipc	a2,0x86
    e8823770:	96c60613          	addi	a2,a2,-1684 # e88a90d8 <hexValues.12413+0x1128>
    e8823774:	00e88663          	beq	a7,a4,e8823780 <mDNSCoreReceiveUpdate+0xa2>
    e8823778:	00086617          	auipc	a2,0x86
    e882377c:	96860613          	addi	a2,a2,-1688 # e88a90e0 <hexValues.12413+0x1130>
    e8823780:	0069d583          	lhu	a1,6(s3)
    e8823784:	4705                	li	a4,1
    e8823786:	00086517          	auipc	a0,0x86
    e882378a:	95250513          	addi	a0,a0,-1710 # e88a90d8 <hexValues.12413+0x1128>
    e882378e:	00e58663          	beq	a1,a4,e882379a <mDNSCoreReceiveUpdate+0xbc>
    e8823792:	00086517          	auipc	a0,0x86
    e8823796:	94e50513          	addi	a0,a0,-1714 # e88a90e0 <hexValues.12413+0x1130>
    e882379a:	0089d803          	lhu	a6,8(s3)
    e882379e:	4705                	li	a4,1
    e88237a0:	00086317          	auipc	t1,0x86
    e88237a4:	94830313          	addi	t1,t1,-1720 # e88a90e8 <hexValues.12413+0x1138>
    e88237a8:	00e80663          	beq	a6,a4,e88237b4 <mDNSCoreReceiveUpdate+0xd6>
    e88237ac:	00086317          	auipc	t1,0x86
    e88237b0:	94430313          	addi	t1,t1,-1724 # e88a90f0 <hexValues.12413+0x1140>
    e88237b4:	00a9de03          	lhu	t3,10(s3)
    e88237b8:	4705                	li	a4,1
    e88237ba:	00086e97          	auipc	t4,0x86
    e88237be:	93ee8e93          	addi	t4,t4,-1730 # e88a90f8 <hexValues.12413+0x1148>
    e88237c2:	00ee0663          	beq	t3,a4,e88237ce <mDNSCoreReceiveUpdate+0xf0>
    e88237c6:	0008ae97          	auipc	t4,0x8a
    e88237ca:	602e8e93          	addi	t4,t4,1538 # e88addc8 <kOn.10632+0x1e80>
    e88237ce:	00c98713          	addi	a4,s3,12
    e88237d2:	40ea8733          	sub	a4,s5,a4
    e88237d6:	fc3a                	sd	a4,56(sp)
    e88237d8:	ec42                	sd	a6,24(sp)
    e88237da:	e82a                	sd	a0,16(sp)
    e88237dc:	e42e                	sd	a1,8(sp)
    e88237de:	e032                	sd	a2,0(sp)
    e88237e0:	f876                	sd	t4,48(sp)
    e88237e2:	f472                	sd	t3,40(sp)
    e88237e4:	f01a                	sd	t1,32(sp)
    e88237e6:	8852                	mv	a6,s4
    e88237e8:	875a                	mv	a4,s6
    e88237ea:	865e                	mv	a2,s7
    e88237ec:	00086597          	auipc	a1,0x86
    e88237f0:	93458593          	addi	a1,a1,-1740 # e88a9120 <hexValues.12413+0x1170>
    e88237f4:	4509                	li	a0,2
    e88237f6:	4b70b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!InterfaceID || !m->SPSSocket || !mDNSSameIPPort(dstport, m->SPSSocket->port)) return;
    e88237fa:	160a0963          	beqz	s4,e882396c <mDNSCoreReceiveUpdate+0x28e>
    e88237fe:	6791                	lui	a5,0x4
    e8823800:	97a2                	add	a5,a5,s0
    e8823802:	d807b703          	ld	a4,-640(a5) # 3d80 <memcmp-0xe87fc280>
    e8823806:	16070363          	beqz	a4,e882396c <mDNSCoreReceiveUpdate+0x28e>
    e882380a:	00075703          	lhu	a4,0(a4)
    e882380e:	3c04b78b          	extu	a5,s1,15,0
    e8823812:	14e79d63          	bne	a5,a4,e882396c <mDNSCoreReceiveUpdate+0x28e>
    if (mDNS_PacketLoggingEnabled)
    e8823816:	000c0797          	auipc	a5,0xc0
    e882381a:	2ee78793          	addi	a5,a5,750 # e88e3b04 <mDNS_PacketLoggingEnabled>
    e882381e:	439c                	lw	a5,0(a5)
    e8823820:	c385                	beqz	a5,e8823840 <mDNSCoreReceiveUpdate+0x162>
        DumpPacket(m, mStatus_NoError, mDNSfalse, "UDP", srcaddr, srcport, dstaddr, dstport, msg, end);
    e8823822:	e456                	sd	s5,8(sp)
    e8823824:	e04e                	sd	s3,0(sp)
    e8823826:	88a6                	mv	a7,s1
    e8823828:	885a                	mv	a6,s6
    e882382a:	87ca                	mv	a5,s2
    e882382c:	875e                	mv	a4,s7
    e882382e:	0007f697          	auipc	a3,0x7f
    e8823832:	55a68693          	addi	a3,a3,1370 # e88a2d88 <mDNSInterface_Unicast+0x8>
    e8823836:	4601                	li	a2,0
    e8823838:	4581                	li	a1,0
    e882383a:	8522                	mv	a0,s0
    e882383c:	a0df30ef          	jal	ra,e8817248 <DumpPacket>
    ptr = LocateOptRR(msg, end, DNSOpt_LeaseData_Space + DNSOpt_OwnerData_ID_Space);
    e8823840:	4651                	li	a2,20
    e8823842:	85d6                	mv	a1,s5
    e8823844:	854e                	mv	a0,s3
    e8823846:	936f20ef          	jal	ra,e881597c <LocateOptRR>
    e882384a:	862a                	mv	a2,a0
    mDNSu32 updatelease = 0;
    e882384c:	4901                	li	s2,0
    if (ptr)
    e882384e:	c939                	beqz	a0,e88238a4 <mDNSCoreReceiveUpdate+0x1c6>
        ptr = GetLargeResourceRecord(m, msg, ptr, end, 0, kDNSRecordTypePacketAdd, &m->rec);
    e8823850:	64a5                	lui	s1,0x9
    e8823852:	4d848813          	addi	a6,s1,1240 # 94d8 <memcmp-0xe87f6b28>
    e8823856:	9822                	add	a6,a6,s0
    e8823858:	08000793          	li	a5,128
    e882385c:	4701                	li	a4,0
    e882385e:	86d6                	mv	a3,s5
    e8823860:	85ce                	mv	a1,s3
    e8823862:	8522                	mv	a0,s0
    e8823864:	dcef30ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
        if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && m->rec.r.resrec.rrtype == kDNSType_OPT)
    e8823868:	c915                	beqz	a0,e882389c <mDNSCoreReceiveUpdate+0x1be>
    e882386a:	00940733          	add	a4,s0,s1
    e882386e:	4e074683          	lbu	a3,1248(a4)
    e8823872:	0f000793          	li	a5,240
    e8823876:	02f68363          	beq	a3,a5,e882389c <mDNSCoreReceiveUpdate+0x1be>
    e882387a:	4e275683          	lhu	a3,1250(a4)
    e882387e:	02900793          	li	a5,41
    e8823882:	00f69d63          	bne	a3,a5,e882389c <mDNSCoreReceiveUpdate+0x1be>
            const rdataOPT *const e = (const rdataOPT *)&m->rec.r.resrec.rdata->u.data[m->rec.r.resrec.rdlength];
    e8823886:	50873783          	ld	a5,1288(a4)
    e882388a:	4ec75703          	lhu	a4,1260(a4)
                if      (o->opt == kDNSOpt_Lease) updatelease = o->u.updatelease;
    e882388e:	4609                	li	a2,2
                else if (o->opt == kDNSOpt_Owner && o->u.owner.vers == 0) owner       = o->u.owner;
    e8823890:	4591                	li	a1,4
            const rdataOPT *const e = (const rdataOPT *)&m->rec.r.resrec.rdata->u.data[m->rec.r.resrec.rdlength];
    e8823892:	0711                	addi	a4,a4,4
    e8823894:	973e                	add	a4,a4,a5
            for (o = &m->rec.r.resrec.rdata->u.opt[0]; o < e; o++)
    e8823896:	0791                	addi	a5,a5,4
    e8823898:	10e7e763          	bltu	a5,a4,e88239a6 <mDNSCoreReceiveUpdate+0x2c8>
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e882389c:	67a5                	lui	a5,0x9
    e882389e:	97a2                	add	a5,a5,s0
    e88238a0:	4e078023          	sb	zero,1248(a5) # 94e0 <memcmp-0xe87f6b20>
    mDNSu8 *p = m->omsg.data;
    e88238a4:	679d                	lui	a5,0x7
    e88238a6:	1ec78b13          	addi	s6,a5,492 # 71ec <memcmp-0xe87f8e14>
    InitializeDNSMessage(&m->omsg.h, msg->h.id, UpdateRespFlags);
    e88238aa:	1e078793          	addi	a5,a5,480
    e88238ae:	97a2                	add	a5,a5,s0
    e88238b0:	e4be                	sd	a5,72(sp)
    e88238b2:	0007f797          	auipc	a5,0x7f
    e88238b6:	47e78793          	addi	a5,a5,1150 # e88a2d30 <UpdateRespFlags>
    e88238ba:	0007d603          	lhu	a2,0(a5)
    e88238be:	0009d583          	lhu	a1,0(s3)
    e88238c2:	6526                	ld	a0,72(sp)
    mDNSu8 *p = m->omsg.data;
    e88238c4:	9b22                	add	s6,s6,s0
    InitializeDNSMessage(&m->omsg.h, msg->h.id, UpdateRespFlags);
    e88238c6:	d87f00ef          	jal	ra,e881464c <InitializeDNSMessage>
    if (!updatelease || !owner.HMAC.l[0])
    e88238ca:	00090663          	beqz	s2,e88238d6 <mDNSCoreReceiveUpdate+0x1f8>
    e88238ce:	0aa12783          	lw	a5,170(sp)
    e88238d2:	10079063          	bnez	a5,e88239d2 <mDNSCoreReceiveUpdate+0x2f4>
        if (msgs < 100)
    e88238d6:	000c0717          	auipc	a4,0xc0
    e88238da:	22270713          	addi	a4,a4,546 # e88e3af8 <msgs.11907>
    e88238de:	431c                	lw	a5,0(a4)
    e88238e0:	06300693          	li	a3,99
    e88238e4:	04f6c563          	blt	a3,a5,e882392e <mDNSCoreReceiveUpdate+0x250>
            msgs++;
    e88238e8:	2785                	addiw	a5,a5,1
    e88238ea:	c31c                	sw	a5,0(a4)
    e88238ec:	008c1693          	slli	a3,s8,0x8
            LogMsg("Refusing sleep proxy registration from %#a:%d:%s%s", srcaddr, mDNSVal16(srcport),
    e88238f0:	00dde6b3          	or	a3,s11,a3
    e88238f4:	00086717          	auipc	a4,0x86
    e88238f8:	80c70713          	addi	a4,a4,-2036 # e88a9100 <hexValues.12413+0x1150>
    e88238fc:	00090663          	beqz	s2,e8823908 <mDNSCoreReceiveUpdate+0x22a>
    e8823900:	0009e717          	auipc	a4,0x9e
    e8823904:	97070713          	addi	a4,a4,-1680 # e88c1270 <kHTTPServerClass+0x90>
    e8823908:	0aa12603          	lw	a2,170(sp)
    e882390c:	00086797          	auipc	a5,0x86
    e8823910:	80478793          	addi	a5,a5,-2044 # e88a9110 <hexValues.12413+0x1160>
    e8823914:	c609                	beqz	a2,e882391e <mDNSCoreReceiveUpdate+0x240>
    e8823916:	0009e797          	auipc	a5,0x9e
    e882391a:	95a78793          	addi	a5,a5,-1702 # e88c1270 <kHTTPServerClass+0x90>
    e882391e:	865e                	mv	a2,s7
    e8823920:	00086597          	auipc	a1,0x86
    e8823924:	88858593          	addi	a1,a1,-1912 # e88a91a8 <hexValues.12413+0x11f8>
    e8823928:	4501                	li	a0,0
    e882392a:	3830b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->omsg.h.flags.b[1] |= kDNSFlag1_RC_FormErr;
    e882392e:	679d                	lui	a5,0x7
    e8823930:	97a2                	add	a5,a5,s0
    e8823932:	1e37c703          	lbu	a4,483(a5) # 71e3 <memcmp-0xe87f8e1d>
    e8823936:	00176713          	ori	a4,a4,1
        m->omsg.h.flags.b[1] |= kDNSFlag1_RC_Refused;
    e882393a:	1ee781a3          	sb	a4,483(a5)
    if (p) mDNSSendDNSMessage(m, &m->omsg, p, InterfaceID, m->SPSSocket, srcaddr, srcport, mDNSNULL, mDNSNULL, mDNSfalse);
    e882393e:	020b0463          	beqz	s6,e8823966 <mDNSCoreReceiveUpdate+0x288>
    e8823942:	6711                	lui	a4,0x4
    e8823944:	9722                	add	a4,a4,s0
    e8823946:	e402                	sd	zero,8(sp)
    e8823948:	e002                	sd	zero,0(sp)
    e882394a:	65a6                	ld	a1,72(sp)
    e882394c:	d8073703          	ld	a4,-640(a4) # 3d80 <memcmp-0xe87fc280>
    e8823950:	008d9813          	slli	a6,s11,0x8
    e8823954:	4881                	li	a7,0
    e8823956:	010c6833          	or	a6,s8,a6
    e882395a:	87de                	mv	a5,s7
    e882395c:	86d2                	mv	a3,s4
    e882395e:	865a                	mv	a2,s6
    e8823960:	8522                	mv	a0,s0
    e8823962:	d51f30ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
    mDNS_SendKeepalives(m);
    e8823966:	8522                	mv	a0,s0
    e8823968:	eb7f90ef          	jal	ra,e881d81e <mDNS_SendKeepalives>
}
    e882396c:	53813083          	ld	ra,1336(sp)
    e8823970:	53013403          	ld	s0,1328(sp)
    e8823974:	52813483          	ld	s1,1320(sp)
    e8823978:	52013903          	ld	s2,1312(sp)
    e882397c:	51813983          	ld	s3,1304(sp)
    e8823980:	51013a03          	ld	s4,1296(sp)
    e8823984:	50813a83          	ld	s5,1288(sp)
    e8823988:	50013b03          	ld	s6,1280(sp)
    e882398c:	4f813b83          	ld	s7,1272(sp)
    e8823990:	4f013c03          	ld	s8,1264(sp)
    e8823994:	4e813c83          	ld	s9,1256(sp)
    e8823998:	4e013d03          	ld	s10,1248(sp)
    e882399c:	4d813d83          	ld	s11,1240(sp)
    e88239a0:	54010113          	addi	sp,sp,1344
    e88239a4:	8082                	ret
                if      (o->opt == kDNSOpt_Lease) updatelease = o->u.updatelease;
    e88239a6:	0007d683          	lhu	a3,0(a5)
    e88239aa:	00c69663          	bne	a3,a2,e88239b6 <mDNSCoreReceiveUpdate+0x2d8>
    e88239ae:	0047a903          	lw	s2,4(a5)
            for (o = &m->rec.r.resrec.rdata->u.opt[0]; o < e; o++)
    e88239b2:	07e1                	addi	a5,a5,24
    e88239b4:	b5d5                	j	e8823898 <mDNSCoreReceiveUpdate+0x1ba>
                else if (o->opt == kDNSOpt_Owner && o->u.owner.vers == 0) owner       = o->u.owner;
    e88239b6:	feb69ee3          	bne	a3,a1,e88239b2 <mDNSCoreReceiveUpdate+0x2d4>
    e88239ba:	0047c683          	lbu	a3,4(a5)
    e88239be:	faf5                	bnez	a3,e88239b2 <mDNSCoreReceiveUpdate+0x2d4>
    e88239c0:	0047b503          	ld	a0,4(a5)
    e88239c4:	f52a                	sd	a0,168(sp)
    e88239c6:	00c7b503          	ld	a0,12(a5)
    e88239ca:	f92a                	sd	a0,176(sp)
    e88239cc:	4bd4                	lw	a3,20(a5)
    e88239ce:	dd36                	sw	a3,184(sp)
    e88239d0:	b7cd                	j	e88239b2 <mDNSCoreReceiveUpdate+0x2d4>
    else if (m->ProxyRecords + msg->h.mDNS_numUpdates > MAX_PROXY_RECORDS)
    e88239d2:	6795                	lui	a5,0x5
    e88239d4:	97a2                	add	a5,a5,s0
    e88239d6:	e107a703          	lw	a4,-496(a5) # 4e10 <memcmp-0xe87fb1f0>
    e88239da:	0089d783          	lhu	a5,8(s3)
    e88239de:	6889                	lui	a7,0x2
    e88239e0:	71088893          	addi	a7,a7,1808 # 2710 <memcmp-0xe87fd8f0>
    e88239e4:	00e7883b          	addw	a6,a5,a4
    e88239e8:	0508d063          	bge	a7,a6,e8823a28 <mDNSCoreReceiveUpdate+0x34a>
        if (msgs < 100)
    e88239ec:	000c0617          	auipc	a2,0xc0
    e88239f0:	11060613          	addi	a2,a2,272 # e88e3afc <msgs.11908>
    e88239f4:	4214                	lw	a3,0(a2)
    e88239f6:	06300593          	li	a1,99
    e88239fa:	02d5c063          	blt	a1,a3,e8823a1a <mDNSCoreReceiveUpdate+0x33c>
            msgs++;
    e88239fe:	2685                	addiw	a3,a3,1
    e8823a00:	c214                	sw	a3,0(a2)
    e8823a02:	008c1693          	slli	a3,s8,0x8
            LogMsg("Refusing sleep proxy registration from %#a:%d: Too many records %d + %d = %d > %d", srcaddr, mDNSVal16(srcport),
    e8823a06:	00dde6b3          	or	a3,s11,a3
    e8823a0a:	865e                	mv	a2,s7
    e8823a0c:	00085597          	auipc	a1,0x85
    e8823a10:	7d458593          	addi	a1,a1,2004 # e88a91e0 <hexValues.12413+0x1230>
    e8823a14:	4501                	li	a0,0
    e8823a16:	2970b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->omsg.h.flags.b[1] |= kDNSFlag1_RC_Refused;
    e8823a1a:	679d                	lui	a5,0x7
    e8823a1c:	97a2                	add	a5,a5,s0
    e8823a1e:	1e37c703          	lbu	a4,483(a5) # 71e3 <memcmp-0xe87f8e1d>
    e8823a22:	00576713          	ori	a4,a4,5
    e8823a26:	bf11                	j	e882393a <mDNSCoreReceiveUpdate+0x25c>
        LogSPS("Received Update for H-MAC %.6a I-MAC %.6a Password %.6a seq %d", &owner.HMAC, &owner.IMAC, &owner.password, owner.seq);
    e8823a28:	77c6                	ld	a5,112(sp)
    e8823a2a:	439c                	lw	a5,0(a5)
    e8823a2c:	cf99                	beqz	a5,e8823a4a <mDNSCoreReceiveUpdate+0x36c>
    e8823a2e:	0a910783          	lb	a5,169(sp)
    e8823a32:	0b610713          	addi	a4,sp,182
    e8823a36:	1914                	addi	a3,sp,176
    e8823a38:	0aa10613          	addi	a2,sp,170
    e8823a3c:	00085597          	auipc	a1,0x85
    e8823a40:	7fc58593          	addi	a1,a1,2044 # e88a9238 <hexValues.12413+0x1288>
    e8823a44:	4509                	li	a0,2
    e8823a46:	2670b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (updatelease > 24 * 60 * 60)
    e8823a4a:	67d5                	lui	a5,0x15
    e8823a4c:	18078713          	addi	a4,a5,384 # 15180 <memcmp-0xe87eae80>
    e8823a50:	012737b3          	sltu	a5,a4,s2
    e8823a54:	40f9170b          	mveqz	a4,s2,a5
        if (updatelease > 0x40000000UL / mDNSPlatformOneSecond)
    e8823a58:	000b1697          	auipc	a3,0xb1
    e8823a5c:	02868693          	addi	a3,a3,40 # e88d4a80 <mDNSPlatformOneSecond>
    e8823a60:	87ba                	mv	a5,a4
    e8823a62:	4290                	lw	a2,0(a3)
    e8823a64:	2701                	sext.w	a4,a4
    e8823a66:	ecba                	sd	a4,88(sp)
    e8823a68:	40000737          	lui	a4,0x40000
    e8823a6c:	02c75733          	divu	a4,a4,a2
    e8823a70:	e136                	sd	a3,128(sp)
    e8823a72:	7c07b78b          	extu	a5,a5,31,0
    e8823a76:	00f77563          	bgeu	a4,a5,e8823a80 <mDNSCoreReceiveUpdate+0x3a2>
            updatelease = 0x40000000UL / mDNSPlatformOneSecond;
    e8823a7a:	0007079b          	sext.w	a5,a4
    e8823a7e:	ecbe                	sd	a5,88(sp)
        ptr = LocateAuthorities(msg, end);
    e8823a80:	85d6                	mv	a1,s5
    e8823a82:	854e                	mv	a0,s3
    e8823a84:	e83f10ef          	jal	ra,e8815906 <LocateAuthorities>
        ClearKeepaliveProxyRecords(m, &owner, m->DuplicateRecords, InterfaceID);
    e8823a88:	648d                	lui	s1,0x3
    e8823a8a:	94a2                	add	s1,s1,s0
    e8823a8c:	1c04b603          	ld	a2,448(s1) # 31c0 <memcmp-0xe87fce40>
    e8823a90:	86d2                	mv	a3,s4
    e8823a92:	112c                	addi	a1,sp,168
        ptr = LocateAuthorities(msg, end);
    e8823a94:	8caa                	mv	s9,a0
        ClearKeepaliveProxyRecords(m, &owner, m->DuplicateRecords, InterfaceID);
    e8823a96:	8522                	mv	a0,s0
    e8823a98:	9a3ff0ef          	jal	ra,e882343a <ClearKeepaliveProxyRecords>
        ClearKeepaliveProxyRecords(m, &owner, m->ResourceRecords, InterfaceID);
    e8823a9c:	1b84b603          	ld	a2,440(s1)
    e8823aa0:	86d2                	mv	a3,s4
    e8823aa2:	112c                	addi	a1,sp,168
    e8823aa4:	8522                	mv	a0,s0
    e8823aa6:	995ff0ef          	jal	ra,e882343a <ClearKeepaliveProxyRecords>
        for (i = 0; i < msg->h.mDNS_numUpdates && ptr && ptr < end; i++)
    e8823aaa:	e882                	sd	zero,80(sp)
            ptr = GetLargeResourceRecord(m, msg, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e8823aac:	67a5                	lui	a5,0x9
    e8823aae:	4d878713          	addi	a4,a5,1240 # 94d8 <memcmp-0xe87f6b28>
            if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative)
    e8823ab2:	00f40933          	add	s2,s0,a5
                mDNSu16 RDLengthMem = GetRDLengthMem(&m->rec.r.resrec);
    e8823ab6:	4e078793          	addi	a5,a5,1248
    e8823aba:	97a2                	add	a5,a5,s0
    e8823abc:	e93e                	sd	a5,144(sp)
                    m->ProxyRecords++;
    e8823abe:	6795                	lui	a5,0x5
            ptr = GetLargeResourceRecord(m, msg, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e8823ac0:	9722                	add	a4,a4,s0
                    m->ProxyRecords++;
    e8823ac2:	97a2                	add	a5,a5,s0
            ptr = GetLargeResourceRecord(m, msg, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e8823ac4:	e53a                	sd	a4,136(sp)
                    m->ProxyRecords++;
    e8823ac6:	f4be                	sd	a5,104(sp)
        for (i = 0; i < msg->h.mDNS_numUpdates && ptr && ptr < end; i++)
    e8823ac8:	0089d783          	lhu	a5,8(s3)
    e8823acc:	6746                	ld	a4,80(sp)
    e8823ace:	06f75d63          	bge	a4,a5,e8823b48 <mDNSCoreReceiveUpdate+0x46a>
    e8823ad2:	060c8b63          	beqz	s9,e8823b48 <mDNSCoreReceiveUpdate+0x46a>
    e8823ad6:	075cf963          	bgeu	s9,s5,e8823b48 <mDNSCoreReceiveUpdate+0x46a>
            ptr = GetLargeResourceRecord(m, msg, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e8823ada:	682a                	ld	a6,136(sp)
    e8823adc:	8666                	mv	a2,s9
    e8823ade:	0a000793          	li	a5,160
    e8823ae2:	8752                	mv	a4,s4
    e8823ae4:	86d6                	mv	a3,s5
    e8823ae6:	85ce                	mv	a1,s3
    e8823ae8:	8522                	mv	a0,s0
    e8823aea:	b48f30ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
    e8823aee:	8caa                	mv	s9,a0
            if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative)
    e8823af0:	30050063          	beqz	a0,e8823df0 <mDNSCoreReceiveUpdate+0x712>
    e8823af4:	4e094703          	lbu	a4,1248(s2)
    e8823af8:	0f000793          	li	a5,240
    e8823afc:	2ef70a63          	beq	a4,a5,e8823df0 <mDNSCoreReceiveUpdate+0x712>
    switch (rr->rrtype)
    e8823b00:	4e295783          	lhu	a5,1250(s2)
    e8823b04:	4745                	li	a4,17
    case kDNSType_RP:  return sizeof(rdataRP);
    e8823b06:	20000d13          	li	s10,512
    switch (rr->rrtype)
    e8823b0a:	00e78e63          	beq	a5,a4,e8823b26 <mDNSCoreReceiveUpdate+0x448>
    e8823b0e:	4769                	li	a4,26
    case kDNSType_PX:  return sizeof(rdataPX);
    e8823b10:	20200d13          	li	s10,514
    switch (rr->rrtype)
    e8823b14:	00e78963          	beq	a5,a4,e8823b26 <mDNSCoreReceiveUpdate+0x448>
    e8823b18:	4719                	li	a4,6
    case kDNSType_SOA: return sizeof(rdataSOA);
    e8823b1a:	21400d13          	li	s10,532
    switch (rr->rrtype)
    e8823b1e:	00e78463          	beq	a5,a4,e8823b26 <mDNSCoreReceiveUpdate+0x448>
    default:           return rr->rdlength;
    e8823b22:	4ec95d03          	lhu	s10,1260(s2)
                AuthRecord *ar = mDNSPlatformMemAllocate(sizeof(AuthRecord) - sizeof(RDataBody) + RDLengthMem);
    e8823b26:	000d079b          	sext.w	a5,s10
    e8823b2a:	30878513          	addi	a0,a5,776 # 5308 <memcmp-0xe87facf8>
    e8823b2e:	fcbe                	sd	a5,120(sp)
    e8823b30:	7320c0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8823b34:	84aa                	mv	s1,a0
                if (!ar)
    e8823b36:	ed21                	bnez	a0,e8823b8e <mDNSCoreReceiveUpdate+0x4b0>
                    m->omsg.h.flags.b[1] |= kDNSFlag1_RC_Refused;
    e8823b38:	679d                	lui	a5,0x7
    e8823b3a:	97a2                	add	a5,a5,s0
    e8823b3c:	1e37c703          	lbu	a4,483(a5) # 71e3 <memcmp-0xe87f8e1d>
    e8823b40:	00576713          	ori	a4,a4,5
    e8823b44:	1ee781a3          	sb	a4,483(a5)
        if (m->omsg.h.flags.b[1] & kDNSFlag1_RC_Mask)
    e8823b48:	649d                	lui	s1,0x7
    e8823b4a:	009407b3          	add	a5,s0,s1
    e8823b4e:	1e37c783          	lbu	a5,483(a5)
    e8823b52:	8bbd                	andi	a5,a5,15
    e8823b54:	34078a63          	beqz	a5,e8823ea8 <mDNSCoreReceiveUpdate+0x7ca>
    e8823b58:	008c1693          	slli	a3,s8,0x8
            LogMsg("Refusing sleep proxy registration from %#a:%d: Out of memory", srcaddr, mDNSVal16(srcport));
    e8823b5c:	00dde6b3          	or	a3,s11,a3
    e8823b60:	865e                	mv	a2,s7
    e8823b62:	00085597          	auipc	a1,0x85
    e8823b66:	7ce58593          	addi	a1,a1,1998 # e88a9330 <hexValues.12413+0x1380>
    e8823b6a:	4501                	li	a0,0
    e8823b6c:	1410b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            ClearProxyRecords(m, &owner, m->DuplicateRecords);
    e8823b70:	648d                	lui	s1,0x3
    e8823b72:	94a2                	add	s1,s1,s0
    e8823b74:	1c04b603          	ld	a2,448(s1) # 31c0 <memcmp-0xe87fce40>
    e8823b78:	112c                	addi	a1,sp,168
    e8823b7a:	8522                	mv	a0,s0
    e8823b7c:	cb4ff0ef          	jal	ra,e8823030 <ClearProxyRecords>
            ClearProxyRecords(m, &owner, m->ResourceRecords);
    e8823b80:	1b84b603          	ld	a2,440(s1)
    e8823b84:	112c                	addi	a1,sp,168
    e8823b86:	8522                	mv	a0,s0
    e8823b88:	ca8ff0ef          	jal	ra,e8823030 <ClearProxyRecords>
    e8823b8c:	bb4d                	j	e882393e <mDNSCoreReceiveUpdate+0x260>
                    mDNSu8 RecordType = m->rec.r.resrec.RecordType & kDNSRecordTypePacketUniqueMask ? kDNSRecordTypeUnique : kDNSRecordTypeShared;
    e8823b8e:	4e094783          	lbu	a5,1248(s2)
    e8823b92:	4709                	li	a4,2
    e8823b94:	f0ba                	sd	a4,96(sp)
    e8823b96:	8bc1                	andi	a5,a5,16
    e8823b98:	e399                	bnez	a5,e8823b9e <mDNSCoreReceiveUpdate+0x4c0>
    e8823b9a:	47a1                	li	a5,8
    e8823b9c:	f0be                	sd	a5,96(sp)
                    m->rec.r.resrec.rrclass &= ~kDNSClass_UniqueRRSet;
    e8823b9e:	4e495783          	lhu	a5,1252(s2)
                    if (!mDNS_KeepaliveRecord(&m->rec.r.resrec))
    e8823ba2:	4e295703          	lhu	a4,1250(s2)
                    m->rec.r.resrec.rrclass &= ~kDNSClass_UniqueRRSet;
    e8823ba6:	3807b78b          	extu	a5,a5,14,0
    e8823baa:	4ef91223          	sh	a5,1252(s2)
                    if (!mDNS_KeepaliveRecord(&m->rec.r.resrec))
    e8823bae:	47a9                	li	a5,10
    e8823bb0:	10f70263          	beq	a4,a5,e8823cb4 <mDNSCoreReceiveUpdate+0x5d6>
                        ClearIdenticalProxyRecords(m, &owner, m->DuplicateRecords); // Make sure we don't have any old stale duplicates of this record
    e8823bb4:	678d                	lui	a5,0x3
    e8823bb6:	97a2                	add	a5,a5,s0
    e8823bb8:	1c07b603          	ld	a2,448(a5) # 31c0 <memcmp-0xe87fce40>
    e8823bbc:	112c                	addi	a1,sp,168
    e8823bbe:	8522                	mv	a0,s0
    e8823bc0:	ed3e                	sd	a5,152(sp)
    e8823bc2:	9afff0ef          	jal	ra,e8823570 <ClearIdenticalProxyRecords>
                        ClearIdenticalProxyRecords(m, &owner, m->ResourceRecords);
    e8823bc6:	67ea                	ld	a5,152(sp)
    e8823bc8:	112c                	addi	a1,sp,168
    e8823bca:	8522                	mv	a0,s0
    e8823bcc:	1b87b603          	ld	a2,440(a5)
    e8823bd0:	9a1ff0ef          	jal	ra,e8823570 <ClearIdenticalProxyRecords>
                    mDNS_SetupResourceRecord(ar, mDNSNULL, InterfaceID, m->rec.r.resrec.rrtype, m->rec.r.resrec.rroriginalttl, RecordType, AuthRecordAny, SPSRecordCallback, ar);
    e8823bd4:	e026                	sd	s1,0(sp)
    e8823bd6:	7786                	ld	a5,96(sp)
    e8823bd8:	4e892703          	lw	a4,1256(s2)
    e8823bdc:	4e295683          	lhu	a3,1250(s2)
    e8823be0:	8652                	mv	a2,s4
    e8823be2:	fffff897          	auipc	a7,0xfffff
    e8823be6:	70288893          	addi	a7,a7,1794 # e88232e4 <SPSRecordCallback>
    e8823bea:	4801                	li	a6,0
    e8823bec:	4581                	li	a1,0
    e8823bee:	8526                	mv	a0,s1
    e8823bf0:	9daf00ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
                    AssignDomainName(&ar->namestorage, m->rec.r.resrec.name);
    e8823bf4:	50093503          	ld	a0,1280(s2)
    e8823bf8:	10050593          	addi	a1,a0,256
    e8823bfc:	d50ef0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8823c00:	0005061b          	sext.w	a2,a0
    e8823c04:	10000793          	li	a5,256
    e8823c08:	0cc7e863          	bltu	a5,a2,e8823cd8 <mDNSCoreReceiveUpdate+0x5fa>
    e8823c0c:	50093583          	ld	a1,1280(s2)
    e8823c10:	20048513          	addi	a0,s1,512
    e8823c14:	68d0b0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                    ar->resrec.rdlength = GetRDLength(&m->rec.r.resrec, mDNSfalse);
    e8823c18:	654a                	ld	a0,144(sp)
    e8823c1a:	4581                	li	a1,0
    e8823c1c:	815f00ef          	jal	ra,e8814430 <GetRDLength>
    e8823c20:	00a49a23          	sh	a0,20(s1)
                    ar->resrec.rdata->MaxRDLength = RDLengthMem;
    e8823c24:	789c                	ld	a5,48(s1)
                    mDNSPlatformMemCopy(ar->resrec.rdata->u.data, m->rec.r.resrec.rdata->u.data, RDLengthMem);
    e8823c26:	7666                	ld	a2,120(sp)
                    ar->resrec.rdata->MaxRDLength = RDLengthMem;
    e8823c28:	01a79023          	sh	s10,0(a5)
                    mDNSPlatformMemCopy(ar->resrec.rdata->u.data, m->rec.r.resrec.rdata->u.data, RDLengthMem);
    e8823c2c:	50893583          	ld	a1,1288(s2)
    e8823c30:	7888                	ld	a0,48(s1)
    e8823c32:	0591                	addi	a1,a1,4
    e8823c34:	0511                	addi	a0,a0,4
    e8823c36:	66b0b0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                    ar->WakeUp     = owner;
    e8823c3a:	772a                	ld	a4,168(sp)
                    ar->ForceMCast = mDNStrue;
    e8823c3c:	4785                	li	a5,1
    e8823c3e:	06f48d23          	sb	a5,122(s1)
                    ar->WakeUp     = owner;
    e8823c42:	06e4be23          	sd	a4,124(s1)
    e8823c46:	774a                	ld	a4,176(sp)
                    if (m->rec.r.resrec.rrtype == kDNSType_PTR)
    e8823c48:	47b1                	li	a5,12
                    ar->WakeUp     = owner;
    e8823c4a:	08e4b223          	sd	a4,132(s1)
    e8823c4e:	576a                	lw	a4,184(sp)
    e8823c50:	08e4a623          	sw	a4,140(s1)
                    if (m->rec.r.resrec.rrtype == kDNSType_PTR)
    e8823c54:	4e295703          	lhu	a4,1250(s2)
    e8823c58:	12f71263          	bne	a4,a5,e8823d7c <mDNSCoreReceiveUpdate+0x69e>
                        mDNSs32 t = ReverseMapDomainType(m->rec.r.resrec.name);
    e8823c5c:	50093d03          	ld	s10,1280(s2)
    int skip = CountLabels(name) - 2;
    e8823c60:	856a                	mv	a0,s10
    e8823c62:	de4ef0ef          	jal	ra,e8813246 <CountLabels>
    e8823c66:	ffe5059b          	addiw	a1,a0,-2
    if (skip >= 0)
    e8823c6a:	0e05c963          	bltz	a1,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
        const domainname *suffix = SkipLeadingLabels(name, skip);
    e8823c6e:	856a                	mv	a0,s10
    e8823c70:	deaef0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e8823c74:	8d2a                	mv	s10,a0
        if (SameDomainName(suffix, (const domainname*)"\x7" "in-addr" "\x4" "arpa")) return mDNSAddrType_IPv4;
    e8823c76:	0007f597          	auipc	a1,0x7f
    e8823c7a:	84258593          	addi	a1,a1,-1982 # e88a24b8 <DiscardPort+0x4a8>
    e8823c7e:	bccef0ef          	jal	ra,e881304a <SameDomainName>
    e8823c82:	ed31                	bnez	a0,e8823cde <mDNSCoreReceiveUpdate+0x600>
        if (SameDomainName(suffix, (const domainname*)"\x3" "ip6"     "\x4" "arpa")) return mDNSAddrType_IPv6;
    e8823c84:	00085597          	auipc	a1,0x85
    e8823c88:	5f458593          	addi	a1,a1,1524 # e88a9278 <hexValues.12413+0x12c8>
    e8823c8c:	856a                	mv	a0,s10
    e8823c8e:	bbcef0ef          	jal	ra,e881304a <SameDomainName>
    e8823c92:	c569                	beqz	a0,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
                        else if (t == mDNSAddrType_IPv6) GetIPv6FromName(&ar->AddressProxy, m->rec.r.resrec.name);
    e8823c94:	50093603          	ld	a2,1280(s2)
    int skip = CountLabels(name) - 34;
    e8823c98:	8532                	mv	a0,a2
    e8823c9a:	fcb2                	sd	a2,120(sp)
    e8823c9c:	daaef0ef          	jal	ra,e8813246 <CountLabels>
    e8823ca0:	fde5059b          	addiw	a1,a0,-34
    if (skip < 0) { LogMsg("GetIPFromName: Need 34 labels in IPv6 reverse mapping name %##s", name); return mStatus_Invalid; }
    e8823ca4:	7666                	ld	a2,120(sp)
    e8823ca6:	1405db63          	bgez	a1,e8823dfc <mDNSCoreReceiveUpdate+0x71e>
    e8823caa:	00085597          	auipc	a1,0x85
    e8823cae:	62658593          	addi	a1,a1,1574 # e88a92d0 <hexValues.12413+0x1320>
    e8823cb2:	a0a9                	j	e8823cfc <mDNSCoreReceiveUpdate+0x61e>
                    if (!mDNS_KeepaliveRecord(&m->rec.r.resrec))
    e8823cb4:	50093503          	ld	a0,1280(s2)
    e8823cb8:	4781                	li	a5,0
    e8823cba:	00054703          	lbu	a4,0(a0)
    e8823cbe:	c319                	beqz	a4,e8823cc4 <mDNSCoreReceiveUpdate+0x5e6>
    e8823cc0:	00170793          	addi	a5,a4,1 # 40000001 <memcmp-0xa87fffff>
    e8823cc4:	00086597          	auipc	a1,0x86
    e8823cc8:	38c58593          	addi	a1,a1,908 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    e8823ccc:	953e                	add	a0,a0,a5
    e8823cce:	b18ef0ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e8823cd2:	ee0501e3          	beqz	a0,e8823bb4 <mDNSCoreReceiveUpdate+0x4d6>
    e8823cd6:	bdfd                	j	e8823bd4 <mDNSCoreReceiveUpdate+0x4f6>
                    AssignDomainName(&ar->namestorage, m->rec.r.resrec.name);
    e8823cd8:	20048023          	sb	zero,512(s1)
    e8823cdc:	bf35                	j	e8823c18 <mDNSCoreReceiveUpdate+0x53a>
                        if      (t == mDNSAddrType_IPv4) GetIPv4FromName(&ar->AddressProxy, m->rec.r.resrec.name);
    e8823cde:	50093d03          	ld	s10,1280(s2)
    int skip = CountLabels(name) - 6;
    e8823ce2:	856a                	mv	a0,s10
    e8823ce4:	d62ef0ef          	jal	ra,e8813246 <CountLabels>
    e8823ce8:	ffa5071b          	addiw	a4,a0,-6
    e8823cec:	fcba                	sd	a4,120(sp)
    if (skip < 0) { LogMsg("GetIPFromName: Need six labels in IPv4 reverse mapping name %##s", name); return mStatus_Invalid; }
    e8823cee:	00075b63          	bgez	a4,e8823d04 <mDNSCoreReceiveUpdate+0x626>
    e8823cf2:	866a                	mv	a2,s10
    e8823cf4:	00085597          	auipc	a1,0x85
    e8823cf8:	59458593          	addi	a1,a1,1428 # e88a9288 <hexValues.12413+0x12d8>
    if (skip < 0) { LogMsg("GetIPFromName: Need 34 labels in IPv6 reverse mapping name %##s", name); return mStatus_Invalid; }
    e8823cfc:	4501                	li	a0,0
    e8823cfe:	7ae0b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8823d02:	a8a9                	j	e8823d5c <mDNSCoreReceiveUpdate+0x67e>
    if (GetLabelDecimalValue(SkipLeadingLabels(name, skip+3)->c, &a->ip.v4.b[0]) ||
    e8823d04:	ffd5059b          	addiw	a1,a0,-3
    e8823d08:	ed2a                	sd	a0,152(sp)
    e8823d0a:	856a                	mv	a0,s10
    e8823d0c:	d4eef0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e8823d10:	09448593          	addi	a1,s1,148
    e8823d14:	93ff70ef          	jal	ra,e881b652 <GetLabelDecimalValue>
    e8823d18:	e131                	bnez	a0,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
        GetLabelDecimalValue(SkipLeadingLabels(name, skip+2)->c, &a->ip.v4.b[1]) ||
    e8823d1a:	67ea                	ld	a5,152(sp)
    e8823d1c:	856a                	mv	a0,s10
    e8823d1e:	ffc7859b          	addiw	a1,a5,-4
    e8823d22:	d38ef0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e8823d26:	09548593          	addi	a1,s1,149
    e8823d2a:	929f70ef          	jal	ra,e881b652 <GetLabelDecimalValue>
    if (GetLabelDecimalValue(SkipLeadingLabels(name, skip+3)->c, &a->ip.v4.b[0]) ||
    e8823d2e:	e51d                	bnez	a0,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
        GetLabelDecimalValue(SkipLeadingLabels(name, skip+1)->c, &a->ip.v4.b[2]) ||
    e8823d30:	67ea                	ld	a5,152(sp)
    e8823d32:	856a                	mv	a0,s10
    e8823d34:	ffb7859b          	addiw	a1,a5,-5
    e8823d38:	d22ef0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e8823d3c:	09648593          	addi	a1,s1,150
    e8823d40:	913f70ef          	jal	ra,e881b652 <GetLabelDecimalValue>
        GetLabelDecimalValue(SkipLeadingLabels(name, skip+2)->c, &a->ip.v4.b[1]) ||
    e8823d44:	ed01                	bnez	a0,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
        GetLabelDecimalValue(SkipLeadingLabels(name, skip+0)->c, &a->ip.v4.b[3])) return mStatus_Invalid;
    e8823d46:	75e6                	ld	a1,120(sp)
    e8823d48:	856a                	mv	a0,s10
    e8823d4a:	d10ef0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e8823d4e:	09748593          	addi	a1,s1,151
    e8823d52:	901f70ef          	jal	ra,e881b652 <GetLabelDecimalValue>
    a->type = mDNSAddrType_IPv4;
    e8823d56:	4791                	li	a5,4
        GetLabelDecimalValue(SkipLeadingLabels(name, skip+1)->c, &a->ip.v4.b[2]) ||
    e8823d58:	12050163          	beqz	a0,e8823e7a <mDNSCoreReceiveUpdate+0x79c>
                        if (ar->AddressProxy.type) SetSPSProxyListChanged(InterfaceID);
    e8823d5c:	0904a783          	lw	a5,144(s1)
    e8823d60:	cf91                	beqz	a5,e8823d7c <mDNSCoreReceiveUpdate+0x69e>
    e8823d62:	6791                	lui	a5,0x4
    e8823d64:	97a2                	add	a5,a5,s0
    e8823d66:	d787b503          	ld	a0,-648(a5) # 3d78 <memcmp-0xe87fc288>
    e8823d6a:	c509                	beqz	a0,e8823d74 <mDNSCoreReceiveUpdate+0x696>
    e8823d6c:	01450463          	beq	a0,s4,e8823d74 <mDNSCoreReceiveUpdate+0x696>
    e8823d70:	3a70b0ef          	jal	ra,e882f916 <mDNSPlatformUpdateProxyList>
    e8823d74:	6791                	lui	a5,0x4
    e8823d76:	97a2                	add	a5,a5,s0
    e8823d78:	d747bc23          	sd	s4,-648(a5) # 3d78 <memcmp-0xe87fc288>
                    ar->TimeExpire = m->timenow + updatelease * mDNSPlatformOneSecond;
    e8823d7c:	670a                	ld	a4,128(sp)
                    ar->TimeRcvd   = m->timenow;
    e8823d7e:	24042783          	lw	a5,576(s0)
                    ar->TimeExpire = m->timenow + updatelease * mDNSPlatformOneSecond;
    e8823d82:	66e6                	ld	a3,88(sp)
    e8823d84:	4318                	lw	a4,0(a4)
                    ar->TimeRcvd   = m->timenow;
    e8823d86:	0af4a223          	sw	a5,164(s1)
                    ar->TimeExpire = m->timenow + updatelease * mDNSPlatformOneSecond;
    e8823d8a:	24d7178b          	mulaw	a5,a4,a3
    e8823d8e:	0af4a423          	sw	a5,168(s1)
                    if (m->NextScheduledSPS - ar->TimeExpire > 0)
    e8823d92:	26842703          	lw	a4,616(s0)
    e8823d96:	9f1d                	subw	a4,a4,a5
    e8823d98:	00e05463          	blez	a4,e8823da0 <mDNSCoreReceiveUpdate+0x6c2>
                        m->NextScheduledSPS = ar->TimeExpire;
    e8823d9c:	26f42423          	sw	a5,616(s0)
                    mDNS_Register_internal(m, ar);
    e8823da0:	85a6                	mv	a1,s1
                    ar->KATimeExpire = 0;
    e8823da2:	0a04a823          	sw	zero,176(s1)
                    mDNS_Register_internal(m, ar);
    e8823da6:	8522                	mv	a0,s0
    e8823da8:	cd3fd0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
                    m->ProxyRecords++;
    e8823dac:	77a6                	ld	a5,104(sp)
    e8823dae:	7726                	ld	a4,104(sp)
                    mDNS_UpdateAllowSleep(m);
    e8823db0:	8522                	mv	a0,s0
                    m->ProxyRecords++;
    e8823db2:	e107a783          	lw	a5,-496(a5)
    e8823db6:	2785                	addiw	a5,a5,1
    e8823db8:	e0f72823          	sw	a5,-496(a4)
                    mDNS_UpdateAllowSleep(m);
    e8823dbc:	ee5fc0ef          	jal	ra,e8820ca0 <mDNS_UpdateAllowSleep>
                    LogSPS("SPS Registered %4d %X %s", m->ProxyRecords, RecordType, ARDisplayString(m,ar));
    e8823dc0:	77c6                	ld	a5,112(sp)
    e8823dc2:	439c                	lw	a5,0(a5)
    e8823dc4:	c795                	beqz	a5,e8823df0 <mDNSCoreReceiveUpdate+0x712>
    e8823dc6:	788c                	ld	a1,48(s1)
    e8823dc8:	77a6                	ld	a5,104(sp)
    e8823dca:	03b40613          	addi	a2,s0,59
    e8823dce:	0591                	addi	a1,a1,4
    e8823dd0:	00848513          	addi	a0,s1,8
    e8823dd4:	e107ad03          	lw	s10,-496(a5)
    e8823dd8:	c3df20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8823ddc:	872a                	mv	a4,a0
    e8823dde:	7686                	ld	a3,96(sp)
    e8823de0:	866a                	mv	a2,s10
    e8823de2:	00085597          	auipc	a1,0x85
    e8823de6:	52e58593          	addi	a1,a1,1326 # e88a9310 <hexValues.12413+0x1360>
    e8823dea:	4509                	li	a0,2
    e8823dec:	6c00b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        for (i = 0; i < msg->h.mDNS_numUpdates && ptr && ptr < end; i++)
    e8823df0:	67c6                	ld	a5,80(sp)
            m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8823df2:	4e090023          	sb	zero,1248(s2)
        for (i = 0; i < msg->h.mDNS_numUpdates && ptr && ptr < end; i++)
    e8823df6:	2785                	addiw	a5,a5,1
    e8823df8:	e8be                	sd	a5,80(sp)
    e8823dfa:	b1f9                	j	e8823ac8 <mDNSCoreReceiveUpdate+0x3ea>
    n = SkipLeadingLabels(name, skip);
    e8823dfc:	8532                	mv	a0,a2
    e8823dfe:	c5cef0ef          	jal	ra,e881325a <SkipLeadingLabels>
    for (i=0; i<16; i++)
    e8823e02:	04050e93          	addi	t4,a0,64
    e8823e06:	0a348813          	addi	a6,s1,163
        if (n->c[0] != 1) return mStatus_Invalid;
    e8823e0a:	4885                	li	a7,1
        l = HexVal(n->c[1]);
    e8823e0c:	4325                	li	t1,9
    e8823e0e:	4615                	li	a2,5
    e8823e10:	5e7d                	li	t3,-1
        if (n->c[0] != 1) return mStatus_Invalid;
    e8823e12:	00054783          	lbu	a5,0(a0)
    e8823e16:	f51793e3          	bne	a5,a7,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
        l = HexVal(n->c[1]);
    e8823e1a:	00154703          	lbu	a4,1(a0)
    e8823e1e:	fd07079b          	addiw	a5,a4,-48
    e8823e22:	0ff7f693          	andi	a3,a5,255
    e8823e26:	00d37a63          	bgeu	t1,a3,e8823e3a <mDNSCoreReceiveUpdate+0x75c>
    e8823e2a:	fbf7079b          	addiw	a5,a4,-65
    e8823e2e:	0ff7f793          	andi	a5,a5,255
    e8823e32:	04f66763          	bltu	a2,a5,e8823e80 <mDNSCoreReceiveUpdate+0x7a2>
    e8823e36:	fc97079b          	addiw	a5,a4,-55
        if (n->c[0] != 1) return mStatus_Invalid;
    e8823e3a:	00254703          	lbu	a4,2(a0)
    e8823e3e:	f1171fe3          	bne	a4,a7,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
        h = HexVal(n->c[1]);
    e8823e42:	00354683          	lbu	a3,3(a0)
    e8823e46:	fd06871b          	addiw	a4,a3,-48
    e8823e4a:	0ff77593          	andi	a1,a4,255
    e8823e4e:	00b37a63          	bgeu	t1,a1,e8823e62 <mDNSCoreReceiveUpdate+0x784>
    e8823e52:	fbf6871b          	addiw	a4,a3,-65
    e8823e56:	0ff77713          	andi	a4,a4,255
    e8823e5a:	02e66d63          	bltu	a2,a4,e8823e94 <mDNSCoreReceiveUpdate+0x7b6>
    e8823e5e:	fc96871b          	addiw	a4,a3,-55
        n = (const domainname *)(n->c + 2);
    e8823e62:	0511                	addi	a0,a0,4
        if (l<0 || h<0) return mStatus_Invalid;
    e8823e64:	efc78ce3          	beq	a5,t3,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
    e8823e68:	efc70ae3          	beq	a4,t3,e8823d5c <mDNSCoreReceiveUpdate+0x67e>
        a->ip.v6.b[15-i] = (mDNSu8)((h << 4) | l);
    e8823e6c:	0712                	slli	a4,a4,0x4
    e8823e6e:	8f5d                	or	a4,a4,a5
    e8823e70:	19f8570b          	sbia	a4,(a6),-1,0
    for (i=0; i<16; i++)
    e8823e74:	f9d51fe3          	bne	a0,t4,e8823e12 <mDNSCoreReceiveUpdate+0x734>
    a->type = mDNSAddrType_IPv6;
    e8823e78:	4799                	li	a5,6
    e8823e7a:	08f4a823          	sw	a5,144(s1)
    return(mStatus_NoError);
    e8823e7e:	bdf9                	j	e8823d5c <mDNSCoreReceiveUpdate+0x67e>
        l = HexVal(n->c[1]);
    e8823e80:	f9f7069b          	addiw	a3,a4,-97
    e8823e84:	0ff6f693          	andi	a3,a3,255
    e8823e88:	57fd                	li	a5,-1
    e8823e8a:	fad668e3          	bltu	a2,a3,e8823e3a <mDNSCoreReceiveUpdate+0x75c>
    e8823e8e:	fa97079b          	addiw	a5,a4,-87
    e8823e92:	b765                	j	e8823e3a <mDNSCoreReceiveUpdate+0x75c>
        h = HexVal(n->c[1]);
    e8823e94:	f9f6859b          	addiw	a1,a3,-97
    e8823e98:	0ff5f593          	andi	a1,a1,255
    e8823e9c:	577d                	li	a4,-1
    e8823e9e:	fcb662e3          	bltu	a2,a1,e8823e62 <mDNSCoreReceiveUpdate+0x784>
    e8823ea2:	fa96871b          	addiw	a4,a3,-87
    e8823ea6:	bf75                	j	e8823e62 <mDNSCoreReceiveUpdate+0x784>
            mDNS_SetupResourceRecord(&opt, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e8823ea8:	0007f617          	auipc	a2,0x7f
    e8823eac:	eb860613          	addi	a2,a2,-328 # e88a2d60 <mDNSInterface_Any>
    e8823eb0:	6210                	ld	a2,0(a2)
    e8823eb2:	6705                	lui	a4,0x1
    e8823eb4:	4881                	li	a7,0
    e8823eb6:	4801                	li	a6,0
    e8823eb8:	02000793          	li	a5,32
    e8823ebc:	19470713          	addi	a4,a4,404 # 1194 <memcmp-0xe87fee6c>
    e8823ec0:	02900693          	li	a3,41
    e8823ec4:	4581                	li	a1,0
    e8823ec6:	0188                	addi	a0,sp,192
    e8823ec8:	e002                	sd	zero,0(sp)
    e8823eca:	f01ef0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
            opt.resrec.rrclass    = NormalMaxDNSMessageData;
    e8823ece:	5a000793          	li	a5,1440
    e8823ed2:	0cf11623          	sh	a5,204(sp)
            opt.resrec.rdlength   = sizeof(rdataOPT);   // One option in this OPT record
    e8823ed6:	001807b7          	lui	a5,0x180
    e8823eda:	27e1                	addiw	a5,a5,24
    e8823edc:	cbbe                	sw	a5,212(sp)
            opt.resrec.rdata->u.opt[0].opt           = kDNSOpt_Lease;
    e8823ede:	77ce                	ld	a5,240(sp)
    e8823ee0:	4709                	li	a4,2
            p = PutResourceRecordTTLWithLimit(&m->omsg, p, &m->omsg.h.numAdditionals, &opt.resrec, opt.resrec.rroriginalttl, m->omsg.data + AbsoluteMaxDNSMessageData);
    e8823ee2:	6526                	ld	a0,72(sp)
            opt.resrec.rdata->u.opt[0].opt           = kDNSOpt_Lease;
    e8823ee4:	00e79223          	sh	a4,4(a5) # 180004 <memcmp-0xe867fffc>
            opt.resrec.rdata->u.opt[0].u.updatelease = updatelease;
    e8823ee8:	6766                	ld	a4,88(sp)
    e8823eea:	77ce                	ld	a5,240(sp)
            p = PutResourceRecordTTLWithLimit(&m->omsg, p, &m->omsg.h.numAdditionals, &opt.resrec, opt.resrec.rroriginalttl, m->omsg.data + AbsoluteMaxDNSMessageData);
    e8823eec:	1ea48613          	addi	a2,s1,490
    e8823ef0:	85da                	mv	a1,s6
            opt.resrec.rdata->u.opt[0].u.updatelease = updatelease;
    e8823ef2:	c798                	sw	a4,8(a5)
            p = PutResourceRecordTTLWithLimit(&m->omsg, p, &m->omsg.h.numAdditionals, &opt.resrec, opt.resrec.rroriginalttl, m->omsg.data + AbsoluteMaxDNSMessageData);
    e8823ef4:	67a5                	lui	a5,0x9
    e8823ef6:	474e                	lw	a4,208(sp)
    e8823ef8:	4d878793          	addi	a5,a5,1240 # 94d8 <memcmp-0xe87f6b28>
    e8823efc:	97a2                	add	a5,a5,s0
    e8823efe:	01b4                	addi	a3,sp,200
    e8823f00:	9622                	add	a2,a2,s0
    e8823f02:	f3ef20ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e8823f06:	8b2a                	mv	s6,a0
    e8823f08:	bc1d                	j	e882393e <mDNSCoreReceiveUpdate+0x260>

00000000e8823f0a <mDNSCoreReceiveUpdateR>:
{
    e8823f0a:	82010113          	addi	sp,sp,-2016
    e8823f0e:	7379                	lui	t1,0xffffe
    e8823f10:	7c813823          	sd	s0,2000(sp)
    e8823f14:	7c113c23          	sd	ra,2008(sp)
    e8823f18:	7c913423          	sd	s1,1992(sp)
    e8823f1c:	7d213023          	sd	s2,1984(sp)
    e8823f20:	7b313c23          	sd	s3,1976(sp)
    e8823f24:	7b413823          	sd	s4,1968(sp)
    e8823f28:	7b513423          	sd	s5,1960(sp)
    e8823f2c:	7b613023          	sd	s6,1952(sp)
    e8823f30:	79713c23          	sd	s7,1944(sp)
    e8823f34:	79813823          	sd	s8,1936(sp)
    e8823f38:	79913423          	sd	s9,1928(sp)
    e8823f3c:	79a13023          	sd	s10,1920(sp)
    e8823f40:	77b13c23          	sd	s11,1912(sp)
    e8823f44:	911a                	add	sp,sp,t1
    e8823f46:	e836                	sd	a3,16(sp)
    e8823f48:	842a                	mv	s0,a0
    if (InterfaceID)
    e8823f4a:	28070363          	beqz	a4,e88241d0 <mDNSCoreReceiveUpdateR+0x2c6>
        const mDNSBool gotlease = GetPktLease(m, msg, end, &pktlease);
    e8823f4e:	6789                	lui	a5,0x2
    e8823f50:	893a                	mv	s2,a4
        mDNSu32 pktlease = 0, spsupdates = 0;
    e8823f52:	76f9                	lui	a3,0xffffe
        const mDNSBool gotlease = GetPktLease(m, msg, end, &pktlease);
    e8823f54:	74078793          	addi	a5,a5,1856 # 2740 <memcmp-0xe87fd8c0>
    e8823f58:	1818                	addi	a4,sp,48
    e8823f5a:	8dc68693          	addi	a3,a3,-1828 # ffffffffffffd8dc <__DRAM0_INF_BASE+0xffffffff0000d8dc>
    e8823f5e:	97ba                	add	a5,a5,a4
    e8823f60:	96be                	add	a3,a3,a5
    e8823f62:	8aae                	mv	s5,a1
        mDNSu32 pktlease = 0, spsupdates = 0;
    e8823f64:	c682                	sw	zero,76(sp)
        const mDNSBool gotlease = GetPktLease(m, msg, end, &pktlease);
    e8823f66:	928f30ef          	jal	ra,e881708e <GetPktLease>
        const mDNSu32 updatelease = gotlease ? pktlease : 60 * 60; // If SPS fails to indicate lease time, assume one hour
    e8823f6a:	2a050963          	beqz	a0,e882421c <mDNSCoreReceiveUpdateR+0x312>
        if (gotlease) LogSPS("DNS Update response contains lease option granting %4d seconds, updateid %d, InterfaceID %p", updatelease, mDNSVal16(msg->h.id), InterfaceID);
    e8823f6e:	000b1797          	auipc	a5,0xb1
    e8823f72:	b0678793          	addi	a5,a5,-1274 # e88d4a74 <mDNS_LoggingEnabled>
    e8823f76:	439c                	lw	a5,0(a5)
        const mDNSu32 updatelease = gotlease ? pktlease : 60 * 60; // If SPS fails to indicate lease time, assume one hour
    e8823f78:	49b6                	lw	s3,76(sp)
        if (gotlease) LogSPS("DNS Update response contains lease option granting %4d seconds, updateid %d, InterfaceID %p", updatelease, mDNSVal16(msg->h.id), InterfaceID);
    e8823f7a:	c38d                	beqz	a5,e8823f9c <mDNSCoreReceiveUpdateR+0x92>
    e8823f7c:	000ac783          	lbu	a5,0(s5)
    e8823f80:	001ac683          	lbu	a3,1(s5)
    e8823f84:	874a                	mv	a4,s2
    e8823f86:	0087979b          	slliw	a5,a5,0x8
    e8823f8a:	8edd                	or	a3,a3,a5
    e8823f8c:	864e                	mv	a2,s3
    e8823f8e:	00085597          	auipc	a1,0x85
    e8823f92:	40258593          	addi	a1,a1,1026 # e88a9390 <hexValues.12413+0x13e0>
    e8823f96:	4509                	li	a0,2
    e8823f98:	5140b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (m->CurrentRecord)
    e8823f9c:	678d                	lui	a5,0x3
    e8823f9e:	97a2                	add	a5,a5,s0
    e8823fa0:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e8823fa4:	c105                	beqz	a0,e8823fc4 <mDNSCoreReceiveUpdateR+0xba>
            LogMsg("mDNSCoreReceiveUpdateR ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e8823fa6:	790c                	ld	a1,48(a0)
    e8823fa8:	03b40613          	addi	a2,s0,59
    e8823fac:	0521                	addi	a0,a0,8
    e8823fae:	0591                	addi	a1,a1,4
    e8823fb0:	a65f20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8823fb4:	862a                	mv	a2,a0
    e8823fb6:	00085597          	auipc	a1,0x85
    e8823fba:	43a58593          	addi	a1,a1,1082 # e88a93f0 <hexValues.12413+0x1440>
    e8823fbe:	4501                	li	a0,0
    e8823fc0:	4ec0b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->CurrentRecord = m->ResourceRecords;
    e8823fc4:	648d                	lui	s1,0x3
    e8823fc6:	94a2                	add	s1,s1,s0
    e8823fc8:	1b84b783          	ld	a5,440(s1) # 31b8 <memcmp-0xe87fce48>
        mDNSu32 pktlease = 0, spsupdates = 0;
    e8823fcc:	4a01                	li	s4,0
                    rr->expire   = NonZeroTime(m->timenow + updatelease * mDNSPlatformOneSecond);
    e8823fce:	000b1c97          	auipc	s9,0xb1
    e8823fd2:	ab2c8c93          	addi	s9,s9,-1358 # e88d4a80 <mDNSPlatformOneSecond>
        m->CurrentRecord = m->ResourceRecords;
    e8823fd6:	1cf4b823          	sd	a5,464(s1)
                    LogSPS("Sleep Proxy %s record %2d %5d 0x%x 0x%x (%d) %s", rr->WakeUp.HMAC.l[0] ? "transferred" : "registered", spsupdates, updatelease, rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(rr->updateid), ARDisplayString(m,rr));
    e8823fda:	03b40793          	addi	a5,s0,59
                        rr->WakeUp.HMAC = zeroEthAddr;  // Clear HMAC so that mDNS_Deregister_internal doesn't waste packets trying to wake this host
    e8823fde:	0007fb17          	auipc	s6,0x7f
    e8823fe2:	5bab0b13          	addi	s6,s6,1466 # e88a3598 <zeroEthAddr>
                    LogSPS("Sleep Proxy %s record %2d %5d 0x%x 0x%x (%d) %s", rr->WakeUp.HMAC.l[0] ? "transferred" : "registered", spsupdates, updatelease, rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(rr->updateid), ARDisplayString(m,rr));
    e8823fe6:	00085b97          	auipc	s7,0x85
    e8823fea:	38ab8b93          	addi	s7,s7,906 # e88a9370 <hexValues.12413+0x13c0>
    e8823fee:	ec3e                	sd	a5,24(sp)
    e8823ff0:	00085d17          	auipc	s10,0x85
    e8823ff4:	390d0d13          	addi	s10,s10,912 # e88a9380 <hexValues.12413+0x13d0>
                        rr->updateid = zeroID;
    e8823ff8:	0007fd97          	auipc	s11,0x7f
    e8823ffc:	5a8d8d93          	addi	s11,s11,1448 # e88a35a0 <zeroID>
        while (m->CurrentRecord)
    e8824000:	1d04bc03          	ld	s8,464(s1)
    e8824004:	220c1063          	bnez	s8,e8824224 <mDNSCoreReceiveUpdateR+0x31a>
        if (spsupdates) // Only do this dynamic store stuff if this was, in fact, a Sleep Proxy Update response
    e8824008:	1c0a0463          	beqz	s4,e88241d0 <mDNSCoreReceiveUpdateR+0x2c6>
            ifname = InterfaceNameForID(m, InterfaceID);
    e882400c:	85ca                	mv	a1,s2
    e882400e:	8522                	mv	a0,s0
    e8824010:	b01fa0ef          	jal	ra,e881eb10 <InterfaceNameForID>
            mDNSPlatformMemCopy(&spsaddr, srcaddr, sizeof (mDNSAddr));
    e8824014:	6b09                	lui	s6,0x2
    e8824016:	79f9                	lui	s3,0xffffe
    e8824018:	1818                	addi	a4,sp,48
    e882401a:	740b0793          	addi	a5,s6,1856 # 2740 <memcmp-0xe87fd8c0>
    e882401e:	97ba                	add	a5,a5,a4
    e8824020:	65c2                	ld	a1,16(sp)
    e8824022:	8e098a93          	addi	s5,s3,-1824 # ffffffffffffd8e0 <__DRAM0_INF_BASE+0xffffffff0000d8e0>
    e8824026:	9abe                	add	s5,s5,a5
    e8824028:	4651                	li	a2,20
            ifname = InterfaceNameForID(m, InterfaceID);
    e882402a:	8a2a                	mv	s4,a0
            mDNSPlatformMemCopy(&spsaddr, srcaddr, sizeof (mDNSAddr));
    e882402c:	8556                	mv	a0,s5
    e882402e:	2730b0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            mDNSPlatformStoreSPSMACAddr(&spsaddr, ifname);
    e8824032:	85d2                	mv	a1,s4
    e8824034:	8556                	mv	a0,s5
    e8824036:	6f60c0ef          	jal	ra,e883072c <mDNSPlatformStoreSPSMACAddr>
    mDNS_SetupResourceRecord(&opt, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e882403a:	8f898a93          	addi	s5,s3,-1800
            InitializeDNSMessage(&optMsg.h, zeroID, ResponseFlags);
    e882403e:	0007e797          	auipc	a5,0x7e
    e8824042:	74278793          	addi	a5,a5,1858 # e88a2780 <ResponseFlags>
    e8824046:	0007d603          	lhu	a2,0(a5)
    e882404a:	0007f797          	auipc	a5,0x7f
    e882404e:	55678793          	addi	a5,a5,1366 # e88a35a0 <zeroID>
    e8824052:	0007d583          	lhu	a1,0(a5)
    e8824056:	1818                	addi	a4,sp,48
    e8824058:	740b0793          	addi	a5,s6,1856
    e882405c:	97ba                	add	a5,a5,a4
    e882405e:	d0898513          	addi	a0,s3,-760
    e8824062:	953e                	add	a0,a0,a5
    e8824064:	de8f00ef          	jal	ra,e881464c <InitializeDNSMessage>
    mDNS_SetupResourceRecord(&opt, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e8824068:	e002                	sd	zero,0(sp)
    e882406a:	1818                	addi	a4,sp,48
    e882406c:	740b0793          	addi	a5,s6,1856
    e8824070:	0007f617          	auipc	a2,0x7f
    e8824074:	cf060613          	addi	a2,a2,-784 # e88a2d60 <mDNSInterface_Any>
    e8824078:	97ba                	add	a5,a5,a4
    e882407a:	6210                	ld	a2,0(a2)
    e882407c:	9abe                	add	s5,s5,a5
    e882407e:	6705                	lui	a4,0x1
    e8824080:	4881                	li	a7,0
    e8824082:	4801                	li	a6,0
    e8824084:	02900693          	li	a3,41
    e8824088:	02000793          	li	a5,32
    e882408c:	19470713          	addi	a4,a4,404 # 1194 <memcmp-0xe87fee6c>
    e8824090:	4581                	li	a1,0
    e8824092:	8556                	mv	a0,s5
    e8824094:	d37ef0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    opt.resrec.rrclass    = NormalMaxDNSMessageData;
    e8824098:	1818                	addi	a4,sp,48
    e882409a:	740b0793          	addi	a5,s6,1856
    e882409e:	97ba                	add	a5,a5,a4
    e88240a0:	97ce                	add	a5,a5,s3
    e88240a2:	e83e                	sd	a5,16(sp)
    e88240a4:	6742                	ld	a4,16(sp)
    e88240a6:	5a000793          	li	a5,1440
    intf = FirstInterfaceForID(m, InterfaceID);
    e88240aa:	1e04b503          	ld	a0,480(s1)
    opt.resrec.rrclass    = NormalMaxDNSMessageData;
    e88240ae:	90f71223          	sh	a5,-1788(a4)
    opt.resrec.rdlength   = sizeof(rdataOPT);
    e88240b2:	001807b7          	lui	a5,0x180
    e88240b6:	27e1                	addiw	a5,a5,24
    e88240b8:	90f72623          	sw	a5,-1780(a4)
    intf = FirstInterfaceForID(m, InterfaceID);
    e88240bc:	85ca                	mv	a1,s2
    e88240be:	eb0f80ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[0]);
    e88240c2:	85aa                	mv	a1,a0
    e88240c4:	67c2                	ld	a5,16(sp)
    e88240c6:	8522                	mv	a0,s0
    LogSPS("Generated OPT record : %s", ARDisplayString(m, &opt));
    e88240c8:	000b1917          	auipc	s2,0xb1
    e88240cc:	9ac90913          	addi	s2,s2,-1620 # e88d4a74 <mDNS_LoggingEnabled>
    SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[0]);
    e88240d0:	9287b603          	ld	a2,-1752(a5) # 17f928 <memcmp-0xe86806d8>
    e88240d4:	0611                	addi	a2,a2,4
    e88240d6:	e58f70ef          	jal	ra,e881b72e <SetupOwnerOpt>
    LogSPS("Generated OPT record : %s", ARDisplayString(m, &opt));
    e88240da:	00092783          	lw	a5,0(s2)
    e88240de:	c39d                	beqz	a5,e8824104 <mDNSCoreReceiveUpdateR+0x1fa>
    e88240e0:	67c2                	ld	a5,16(sp)
    e88240e2:	03b40613          	addi	a2,s0,59
    e88240e6:	008a8513          	addi	a0,s5,8
    e88240ea:	9287b583          	ld	a1,-1752(a5)
    e88240ee:	0591                	addi	a1,a1,4
    e88240f0:	925f20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88240f4:	862a                	mv	a2,a0
    e88240f6:	00085597          	auipc	a1,0x85
    e88240fa:	36a58593          	addi	a1,a1,874 # e88a9460 <hexValues.12413+0x14b0>
    e88240fe:	4509                	li	a0,2
    e8824100:	3ac0b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    end = PutResourceRecord(msg, ptr, &msg->h.numAdditionals, &opt.resrec);
    e8824104:	6709                	lui	a4,0x2
    e8824106:	1814                	addi	a3,sp,48
    e8824108:	74070713          	addi	a4,a4,1856 # 2740 <memcmp-0xe87fd8c0>
    e882410c:	9736                	add	a4,a4,a3
    e882410e:	77f9                	lui	a5,0xffffe
    e8824110:	97ba                	add	a5,a5,a4
    e8824112:	e83e                	sd	a5,16(sp)
    e8824114:	d0e7d683          	lhu	a3,-754(a5) # ffffffffffffdd0e <__DRAM0_INF_BASE+0xffffffff0000dd0e>
    e8824118:	9087a703          	lw	a4,-1784(a5)
    e882411c:	d107d783          	lhu	a5,-752(a5)
    e8824120:	8edd                	or	a3,a3,a5
    e8824122:	67c2                	ld	a5,16(sp)
    e8824124:	d127d783          	lhu	a5,-750(a5)
    e8824128:	8edd                	or	a3,a3,a5
    e882412a:	5a000793          	li	a5,1440
    e882412e:	e681                	bnez	a3,e8824136 <mDNSCoreReceiveUpdateR+0x22c>
    e8824130:	6789                	lui	a5,0x2
    e8824132:	2ec78793          	addi	a5,a5,748 # 22ec <memcmp-0xe87fdd14>
    e8824136:	6b09                	lui	s6,0x2
    e8824138:	1810                	addi	a2,sp,48
    e882413a:	740b0693          	addi	a3,s6,1856 # 2740 <memcmp-0xe87fd8c0>
    e882413e:	96b2                	add	a3,a3,a2
    e8824140:	7af9                	lui	s5,0xffffe
    e8824142:	d08a8493          	addi	s1,s5,-760 # ffffffffffffdd08 <__DRAM0_INF_BASE+0xffffffff0000dd08>
    e8824146:	94b6                	add	s1,s1,a3
    e8824148:	740b0693          	addi	a3,s6,1856
    e882414c:	96b2                	add	a3,a3,a2
    e882414e:	00c48993          	addi	s3,s1,12
    e8824152:	96d6                	add	a3,a3,s5
    e8824154:	97ce                	add	a5,a5,s3
    e8824156:	90068693          	addi	a3,a3,-1792
    e882415a:	00a48613          	addi	a2,s1,10
    e882415e:	85ce                	mv	a1,s3
    e8824160:	8526                	mv	a0,s1
    e8824162:	cdef20ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    if (end != mDNSNULL)
    e8824166:	1c050b63          	beqz	a0,e882433c <mDNSCoreReceiveUpdateR+0x432>
        SwapDNSHeaderBytes(msg);
    e882416a:	1818                	addi	a4,sp,48
    e882416c:	740b0793          	addi	a5,s6,1856
    e8824170:	97ba                	add	a5,a5,a4
    e8824172:	97d6                	add	a5,a5,s5
    e8824174:	e83e                	sd	a5,16(sp)
    e8824176:	6742                	ld	a4,16(sp)
    e8824178:	d0c7c783          	lbu	a5,-756(a5)
        length = (end - msg->data);
    e882417c:	4135063b          	subw	a2,a0,s3
        SwapDNSHeaderBytes(msg);
    e8824180:	d0d74703          	lbu	a4,-755(a4)
    e8824184:	0087979b          	slliw	a5,a5,0x8
    e8824188:	8fd9                	or	a5,a5,a4
    e882418a:	6742                	ld	a4,16(sp)
    e882418c:	d0f71623          	sh	a5,-756(a4)
    e8824190:	d0e74783          	lbu	a5,-754(a4)
    e8824194:	d0f74703          	lbu	a4,-753(a4)
    e8824198:	0087979b          	slliw	a5,a5,0x8
    e882419c:	8fd9                	or	a5,a5,a4
    e882419e:	6742                	ld	a4,16(sp)
    e88241a0:	d0f71723          	sh	a5,-754(a4)
    e88241a4:	d1074783          	lbu	a5,-752(a4)
    e88241a8:	d1174703          	lbu	a4,-751(a4)
    e88241ac:	0087979b          	slliw	a5,a5,0x8
    e88241b0:	8fd9                	or	a5,a5,a4
    e88241b2:	6742                	ld	a4,16(sp)
    e88241b4:	d0f71823          	sh	a5,-752(a4)
    e88241b8:	d1274783          	lbu	a5,-750(a4)
    e88241bc:	d1374703          	lbu	a4,-749(a4)
    e88241c0:	0087979b          	slliw	a5,a5,0x8
    e88241c4:	8fd9                	or	a5,a5,a4
    e88241c6:	6742                	ld	a4,16(sp)
    e88241c8:	d0f71923          	sh	a5,-750(a4)
            if (length != 0)
    e88241cc:	18061463          	bnez	a2,e8824354 <mDNSCoreReceiveUpdateR+0x44a>
    if (m->SleepLimit) m->NextScheduledSPRetry = m->timenow;
    e88241d0:	29442783          	lw	a5,660(s0)
    e88241d4:	c789                	beqz	a5,e88241de <mDNSCoreReceiveUpdateR+0x2d4>
    e88241d6:	24042783          	lw	a5,576(s0)
    e88241da:	2af42423          	sw	a5,680(s0)
}
    e88241de:	6309                	lui	t1,0x2
    e88241e0:	911a                	add	sp,sp,t1
    e88241e2:	7d813083          	ld	ra,2008(sp)
    e88241e6:	7d013403          	ld	s0,2000(sp)
    e88241ea:	7c813483          	ld	s1,1992(sp)
    e88241ee:	7c013903          	ld	s2,1984(sp)
    e88241f2:	7b813983          	ld	s3,1976(sp)
    e88241f6:	7b013a03          	ld	s4,1968(sp)
    e88241fa:	7a813a83          	ld	s5,1960(sp)
    e88241fe:	7a013b03          	ld	s6,1952(sp)
    e8824202:	79813b83          	ld	s7,1944(sp)
    e8824206:	79013c03          	ld	s8,1936(sp)
    e882420a:	78813c83          	ld	s9,1928(sp)
    e882420e:	78013d03          	ld	s10,1920(sp)
    e8824212:	77813d83          	ld	s11,1912(sp)
    e8824216:	7e010113          	addi	sp,sp,2016
    e882421a:	8082                	ret
        const mDNSu32 updatelease = gotlease ? pktlease : 60 * 60; // If SPS fails to indicate lease time, assume one hour
    e882421c:	6985                	lui	s3,0x1
    e882421e:	e1098993          	addi	s3,s3,-496 # e10 <memcmp-0xe87ff1f0>
    e8824222:	bbad                	j	e8823f9c <mDNSCoreReceiveUpdateR+0x92>
            if (rr->resrec.InterfaceID == InterfaceID || (!rr->resrec.InterfaceID && (rr->ForceMCast || IsLocalDomain(rr->resrec.name))))
    e8824224:	020c3783          	ld	a5,32(s8)
    e8824228:	0f279763          	bne	a5,s2,e8824316 <mDNSCoreReceiveUpdateR+0x40c>
                if (mDNSSameOpaque16(rr->updateid, msg->h.id))
    e882422c:	156c5703          	lhu	a4,342(s8)
    e8824230:	000ad783          	lhu	a5,0(s5)
    e8824234:	0ef71b63          	bne	a4,a5,e882432a <mDNSCoreReceiveUpdateR+0x420>
                    mDNSu32 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, InterfaceID, mDNStrue);
    e8824238:	4605                	li	a2,1
    e882423a:	85ca                	mv	a1,s2
    e882423c:	8522                	mv	a0,s0
    e882423e:	76e0b0ef          	jal	ra,e882f9ac <mDNSPlatformInterfaceIndexfromInterfaceID>
    e8824242:	2501                	sext.w	a0,a0
                    if (scopeid < (sizeof(rr->updateIntID) * mDNSNBBY))
    e8824244:	03f00793          	li	a5,63
    e8824248:	02a7e063          	bltu	a5,a0,e8824268 <mDNSCoreReceiveUpdateR+0x35e>
                        bit_clr_opaque64(rr->updateIntID, scopeid);
    e882424c:	7c55370b          	extu	a4,a0,31,5
    e8824250:	04ec170b          	addsl	a4,s8,a4,2
    e8824254:	4785                	li	a5,1
    e8824256:	00a797bb          	sllw	a5,a5,a0
    e882425a:	15872503          	lw	a0,344(a4)
    e882425e:	fff7c793          	not	a5,a5
    e8824262:	8fe9                	and	a5,a5,a0
    e8824264:	14f72c23          	sw	a5,344(a4)
                    if (mDNSOpaque64IsZero(&rr->updateIntID))
    e8824268:	158c2803          	lw	a6,344(s8)
    e882426c:	15cc2783          	lw	a5,348(s8)
    e8824270:	00f86733          	or	a4,a6,a5
    e8824274:	e709                	bnez	a4,e882427e <mDNSCoreReceiveUpdateR+0x374>
                        rr->updateid = zeroID;
    e8824276:	000dd703          	lhu	a4,0(s11)
    e882427a:	14ec1b23          	sh	a4,342(s8)
                    rr->expire   = NonZeroTime(m->timenow + updatelease * mDNSPlatformOneSecond);
    e882427e:	000ca683          	lw	a3,0(s9)
    e8824282:	24042703          	lw	a4,576(s0)
    e8824286:	2536970b          	mulaw	a4,a3,s3
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e882428a:	e311                	bnez	a4,e882428e <mDNSCoreReceiveUpdateR+0x384>
    e882428c:	4705                	li	a4,1
    e882428e:	fc3e                	sd	a5,56(sp)
                    LogSPS("Sleep Proxy %s record %2d %5d 0x%x 0x%x (%d) %s", rr->WakeUp.HMAC.l[0] ? "transferred" : "registered", spsupdates, updatelease, rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(rr->updateid), ARDisplayString(m,rr));
    e8824290:	000b0797          	auipc	a5,0xb0
    e8824294:	7e478793          	addi	a5,a5,2020 # e88d4a74 <mDNS_LoggingEnabled>
                    rr->expire   = NonZeroTime(m->timenow + updatelease * mDNSPlatformOneSecond);
    e8824298:	14ec2823          	sw	a4,336(s8)
                    LogSPS("Sleep Proxy %s record %2d %5d 0x%x 0x%x (%d) %s", rr->WakeUp.HMAC.l[0] ? "transferred" : "registered", spsupdates, updatelease, rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(rr->updateid), ARDisplayString(m,rr));
    e882429c:	4398                	lw	a4,0(a5)
    e882429e:	f842                	sd	a6,48(sp)
                    spsupdates++;
    e88242a0:	2a05                	addiw	s4,s4,1
                    LogSPS("Sleep Proxy %s record %2d %5d 0x%x 0x%x (%d) %s", rr->WakeUp.HMAC.l[0] ? "transferred" : "registered", spsupdates, updatelease, rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(rr->updateid), ARDisplayString(m,rr));
    e88242a2:	c739                	beqz	a4,e88242f0 <mDNSCoreReceiveUpdateR+0x3e6>
    e88242a4:	07ec2703          	lw	a4,126(s8)
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e88242a8:	156c4883          	lbu	a7,342(s8)
    e88242ac:	8e6a                	mv	t3,s10
    e88242ae:	42eb9e0b          	mvnez	t3,s7,a4
    e88242b2:	157c4703          	lbu	a4,343(s8)
    e88242b6:	030c3583          	ld	a1,48(s8)
    e88242ba:	6662                	ld	a2,24(sp)
    e88242bc:	0088989b          	slliw	a7,a7,0x8
    e88242c0:	00e8e8b3          	or	a7,a7,a4
    e88242c4:	0591                	addi	a1,a1,4
    e88242c6:	008c0513          	addi	a0,s8,8
    e88242ca:	f472                	sd	t3,40(sp)
    e88242cc:	f046                	sd	a7,32(sp)
    e88242ce:	f46f20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88242d2:	e02a                	sd	a0,0(sp)
    e88242d4:	7e22                	ld	t3,40(sp)
    e88242d6:	7882                	ld	a7,32(sp)
    e88242d8:	fef1480b          	ldd	a6,a5,(sp),3,4
    e88242dc:	874e                	mv	a4,s3
    e88242de:	86d2                	mv	a3,s4
    e88242e0:	8672                	mv	a2,t3
    e88242e2:	00085597          	auipc	a1,0x85
    e88242e6:	14e58593          	addi	a1,a1,334 # e88a9430 <hexValues.12413+0x1480>
    e88242ea:	4509                	li	a0,2
    e88242ec:	1c00b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    if (rr->WakeUp.HMAC.l[0])
    e88242f0:	07ec2783          	lw	a5,126(s8)
    e88242f4:	cb9d                	beqz	a5,e882432a <mDNSCoreReceiveUpdateR+0x420>
                        rr->WakeUp.HMAC = zeroEthAddr;  // Clear HMAC so that mDNS_Deregister_internal doesn't waste packets trying to wake this host
    e88242f6:	000b2783          	lw	a5,0(s6)
                        rr->RequireGoodbye = mDNSfalse; // and we don't want to send goodbye for it
    e88242fa:	0a0c0c23          	sb	zero,184(s8)
                        mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e88242fe:	4601                	li	a2,0
                        rr->WakeUp.HMAC = zeroEthAddr;  // Clear HMAC so that mDNS_Deregister_internal doesn't waste packets trying to wake this host
    e8824300:	06fc2f23          	sw	a5,126(s8)
    e8824304:	004b5783          	lhu	a5,4(s6)
                        mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e8824308:	85e2                	mv	a1,s8
    e882430a:	8522                	mv	a0,s0
                        rr->WakeUp.HMAC = zeroEthAddr;  // Clear HMAC so that mDNS_Deregister_internal doesn't waste packets trying to wake this host
    e882430c:	08fc1123          	sh	a5,130(s8)
                        mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e8824310:	c5cfe0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
    e8824314:	a819                	j	e882432a <mDNSCoreReceiveUpdateR+0x420>
            if (rr->resrec.InterfaceID == InterfaceID || (!rr->resrec.InterfaceID && (rr->ForceMCast || IsLocalDomain(rr->resrec.name))))
    e8824316:	eb91                	bnez	a5,e882432a <mDNSCoreReceiveUpdateR+0x420>
    e8824318:	07ac4783          	lbu	a5,122(s8)
    e882431c:	fb81                	bnez	a5,e882422c <mDNSCoreReceiveUpdateR+0x322>
    e882431e:	028c3503          	ld	a0,40(s8)
    e8824322:	d81ee0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8824326:	f00513e3          	bnez	a0,e882422c <mDNSCoreReceiveUpdateR+0x322>
            if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now
    e882432a:	1d04b783          	ld	a5,464(s1)
    e882432e:	cd8799e3          	bne	a5,s8,e8824000 <mDNSCoreReceiveUpdateR+0xf6>
                m->CurrentRecord = rr->next;
    e8824332:	000c3783          	ld	a5,0(s8)
    e8824336:	1cf4b823          	sd	a5,464(s1)
    e882433a:	b1d9                	j	e8824000 <mDNSCoreReceiveUpdateR+0xf6>
        LogSPS("mDNSGenerateOwnerOptForInterface: Failed to generate owner OPT record");
    e882433c:	00092783          	lw	a5,0(s2)
    e8824340:	e80788e3          	beqz	a5,e88241d0 <mDNSCoreReceiveUpdateR+0x2c6>
    e8824344:	00085597          	auipc	a1,0x85
    e8824348:	13c58593          	addi	a1,a1,316 # e88a9480 <hexValues.12413+0x14d0>
    e882434c:	4509                	li	a0,2
    e882434e:	15e0b0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (length != 0)
    e8824352:	bdbd                	j	e88241d0 <mDNSCoreReceiveUpdateR+0x2c6>
                mDNSPlatformStoreOwnerOptRecord(ifname, &optMsg, length);
    e8824354:	2631                	addiw	a2,a2,12
    e8824356:	85a6                	mv	a1,s1
    e8824358:	8552                	mv	a0,s4
    e882435a:	3da0c0ef          	jal	ra,e8830734 <mDNSPlatformStoreOwnerOptRecord>
    e882435e:	bd8d                	j	e88241d0 <mDNSCoreReceiveUpdateR+0x2c6>

00000000e8824360 <ActivateUnicastQuery>:
    if (!question->DuplicateOf)
    e8824360:	69bc                	ld	a5,80(a1)
    e8824362:	14079a63          	bnez	a5,e88244b6 <ActivateUnicastQuery+0x156>
{
    e8824366:	715d                	addi	sp,sp,-80
    e8824368:	e0a2                	sd	s0,64(sp)
    e882436a:	fc26                	sd	s1,56(sp)
    e882436c:	f84a                	sd	s2,48(sp)
    e882436e:	e486                	sd	ra,72(sp)
    e8824370:	f44e                	sd	s3,40(sp)
    e8824372:	f052                	sd	s4,32(sp)
    e8824374:	ec56                	sd	s5,24(sp)
    e8824376:	e85a                	sd	s6,16(sp)
    e8824378:	842e                	mv	s0,a1
        question->CNAMEReferrals = 0;
    e882437a:	1205ae23          	sw	zero,316(a1)
        if (question->nta) { CancelGetZoneData(m, question->nta); question->nta = mDNSNULL; }
    e882437e:	1885b583          	ld	a1,392(a1)
    e8824382:	892a                	mv	s2,a0
    e8824384:	84b2                	mv	s1,a2
    e8824386:	c589                	beqz	a1,e8824390 <ActivateUnicastQuery+0x30>
    e8824388:	cacfd0ef          	jal	ra,e8821834 <CancelGetZoneData>
    e882438c:	18043423          	sd	zero,392(s0)
        if (question->LongLived)
    e8824390:	31844783          	lbu	a5,792(s0)
    e8824394:	cb95                	beqz	a5,e88243c8 <ActivateUnicastQuery+0x68>
            question->state = LLQ_InitialRequest;
    e8824396:	4785                	li	a5,1
    e8824398:	1af40a23          	sb	a5,436(s0)
            question->id = zeroOpaque64;
    e882439c:	0007f797          	auipc	a5,0x7f
    e88243a0:	22478793          	addi	a5,a5,548 # e88a35c0 <zeroOpaque64>
    e88243a4:	639c                	ld	a5,0(a5)
            if (question->tcp) { DisposeTCPConn(question->tcp); question->tcp = mDNSNULL; }
    e88243a6:	1a843503          	ld	a0,424(s0)
            question->id = zeroOpaque64;
    e88243aa:	1cf43e23          	sd	a5,476(s0)
            question->servPort = zeroIPPort;
    e88243ae:	0007f797          	auipc	a5,0x7f
    e88243b2:	1fa78793          	addi	a5,a5,506 # e88a35a8 <zeroIPPort>
    e88243b6:	0007d783          	lhu	a5,0(a5)
    e88243ba:	1af41223          	sh	a5,420(s0)
            if (question->tcp) { DisposeTCPConn(question->tcp); question->tcp = mDNSNULL; }
    e88243be:	c509                	beqz	a0,e88243c8 <ActivateUnicastQuery+0x68>
    e88243c0:	3220f0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e88243c4:	1a043423          	sd	zero,424(s0)
        if (ScheduleImmediately && !QuestionHasLocalAnswers(m, question))
    e88243c8:	cce9                	beqz	s1,e88244a2 <ActivateUnicastQuery+0x142>
    ag = AuthGroupForName(&m->rrauth, q->qnamehash, &q->qname);
    e88243ca:	6509                	lui	a0,0x2
    e88243cc:	440c                	lw	a1,8(s0)
    e88243ce:	21440993          	addi	s3,s0,532
    e88243d2:	a7850513          	addi	a0,a0,-1416 # 1a78 <memcmp-0xe87fe588>
    e88243d6:	864e                	mv	a2,s3
    e88243d8:	954a                	add	a0,a0,s2
    e88243da:	efff90ef          	jal	ra,e881e2d8 <AuthGroupForName>
    if (ag)
    e88243de:	ed0d                	bnez	a0,e8824418 <ActivateUnicastQuery+0xb8>
            question->ThisQInterval = InitialQuestionInterval;
    e88243e0:	000b0797          	auipc	a5,0xb0
    e88243e4:	6a078793          	addi	a5,a5,1696 # e88d4a80 <mDNSPlatformOneSecond>
    e88243e8:	439c                	lw	a5,0(a5)
    e88243ea:	470d                	li	a4,3
            SetNextQueryTime(m, question);
    e88243ec:	85a2                	mv	a1,s0
            question->ThisQInterval = InitialQuestionInterval;
    e88243ee:	2789                	addiw	a5,a5,2
    e88243f0:	02e7c7bb          	divw	a5,a5,a4
            SetNextQueryTime(m, question);
    e88243f4:	854a                	mv	a0,s2
            question->ThisQInterval = InitialQuestionInterval;
    e88243f6:	c85c                	sw	a5,20(s0)
            question->LastQTime     = m->timenow - question->ThisQInterval;
    e88243f8:	24092703          	lw	a4,576(s2)
    e88243fc:	40f707bb          	subw	a5,a4,a5
    e8824400:	c81c                	sw	a5,16(s0)
}
    e8824402:	6406                	ld	s0,64(sp)
    e8824404:	60a6                	ld	ra,72(sp)
    e8824406:	74e2                	ld	s1,56(sp)
    e8824408:	7942                	ld	s2,48(sp)
    e882440a:	79a2                	ld	s3,40(sp)
    e882440c:	7a02                	ld	s4,32(sp)
    e882440e:	6ae2                	ld	s5,24(sp)
    e8824410:	6b42                	ld	s6,16(sp)
    e8824412:	6161                	addi	sp,sp,80
            SetNextQueryTime(m, question);
    e8824414:	e59f906f          	j	e881e26c <SetNextQueryTime>
        for (rr = ag->members; rr; rr=rr->next)
    e8824418:	6904                	ld	s1,16(a0)
            if (UniqueLocalOnlyRecord(rr) && LocalOnlyRecordAnswersQuestion(rr, q))
    e882441a:	4a11                	li	s4,4
    e882441c:	4a85                	li	s5,1
    e882441e:	4b31                	li	s6,12
        for (rr = ag->members; rr; rr=rr->next)
    e8824420:	d0e1                	beqz	s1,e88243e0 <ActivateUnicastQuery+0x80>
            if (UniqueLocalOnlyRecord(rr) && LocalOnlyRecordAnswersQuestion(rr, q))
    e8824422:	0ac4c783          	lbu	a5,172(s1)
    e8824426:	07479c63          	bne	a5,s4,e882449e <ActivateUnicastQuery+0x13e>
    e882442a:	0084c783          	lbu	a5,8(s1)
    e882442e:	0327f793          	andi	a5,a5,50
    e8824432:	c7b5                	beqz	a5,e882449e <ActivateUnicastQuery+0x13e>
    e8824434:	00a4d783          	lhu	a5,10(s1)
    e8824438:	ffb7f713          	andi	a4,a5,-5
    e882443c:	01570563          	beq	a4,s5,e8824446 <ActivateUnicastQuery+0xe6>
    e8824440:	9bbd                	andi	a5,a5,-17
    e8824442:	05679e63          	bne	a5,s6,e882449e <ActivateUnicastQuery+0x13e>
    e8824446:	85a2                	mv	a1,s0
    e8824448:	8526                	mv	a0,s1
    e882444a:	e71ef0ef          	jal	ra,e88142ba <LocalOnlyRecordAnswersQuestion>
    e882444e:	c921                	beqz	a0,e882449e <ActivateUnicastQuery+0x13e>
                LogInfo("QuestionHasLocalAnswers: Question %p %##s (%s) has local answer %s", q, q->qname.c, DNSTypeName(q->qtype), ARDisplayString(m, rr));
    e8824450:	000b0797          	auipc	a5,0xb0
    e8824454:	62478793          	addi	a5,a5,1572 # e88d4a74 <mDNS_LoggingEnabled>
    e8824458:	439c                	lw	a5,0(a5)
    e882445a:	c7a1                	beqz	a5,e88244a2 <ActivateUnicastQuery+0x142>
    e882445c:	31445503          	lhu	a0,788(s0)
    e8824460:	801f10ef          	jal	ra,e8815c60 <DNSTypeName>
    e8824464:	e42a                	sd	a0,8(sp)
    e8824466:	788c                	ld	a1,48(s1)
    e8824468:	03b90613          	addi	a2,s2,59
    e882446c:	00848513          	addi	a0,s1,8
    e8824470:	0591                	addi	a1,a1,4
    e8824472:	da2f20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
}
    e8824476:	74e2                	ld	s1,56(sp)
                LogInfo("QuestionHasLocalAnswers: Question %p %##s (%s) has local answer %s", q, q->qname.c, DNSTypeName(q->qtype), ARDisplayString(m, rr));
    e8824478:	8622                	mv	a2,s0
}
    e882447a:	6406                	ld	s0,64(sp)
                LogInfo("QuestionHasLocalAnswers: Question %p %##s (%s) has local answer %s", q, q->qname.c, DNSTypeName(q->qtype), ARDisplayString(m, rr));
    e882447c:	6722                	ld	a4,8(sp)
}
    e882447e:	60a6                	ld	ra,72(sp)
    e8824480:	7942                	ld	s2,48(sp)
    e8824482:	7a02                	ld	s4,32(sp)
    e8824484:	6ae2                	ld	s5,24(sp)
    e8824486:	6b42                	ld	s6,16(sp)
                LogInfo("QuestionHasLocalAnswers: Question %p %##s (%s) has local answer %s", q, q->qname.c, DNSTypeName(q->qtype), ARDisplayString(m, rr));
    e8824488:	86ce                	mv	a3,s3
}
    e882448a:	79a2                	ld	s3,40(sp)
                LogInfo("QuestionHasLocalAnswers: Question %p %##s (%s) has local answer %s", q, q->qname.c, DNSTypeName(q->qtype), ARDisplayString(m, rr));
    e882448c:	87aa                	mv	a5,a0
    e882448e:	00080597          	auipc	a1,0x80
    e8824492:	95a58593          	addi	a1,a1,-1702 # e88a3de8 <end.8789+0x740>
    e8824496:	450d                	li	a0,3
}
    e8824498:	6161                	addi	sp,sp,80
                LogInfo("QuestionHasLocalAnswers: Question %p %##s (%s) has local answer %s", q, q->qname.c, DNSTypeName(q->qtype), ARDisplayString(m, rr));
    e882449a:	0120b06f          	j	e882f4ac <LogMsgWithLevel>
        for (rr = ag->members; rr; rr=rr->next)
    e882449e:	6084                	ld	s1,0(s1)
    e88244a0:	b741                	j	e8824420 <ActivateUnicastQuery+0xc0>
}
    e88244a2:	60a6                	ld	ra,72(sp)
    e88244a4:	6406                	ld	s0,64(sp)
    e88244a6:	74e2                	ld	s1,56(sp)
    e88244a8:	7942                	ld	s2,48(sp)
    e88244aa:	79a2                	ld	s3,40(sp)
    e88244ac:	7a02                	ld	s4,32(sp)
    e88244ae:	6ae2                	ld	s5,24(sp)
    e88244b0:	6b42                	ld	s6,16(sp)
    e88244b2:	6161                	addi	sp,sp,80
    e88244b4:	8082                	ret
    e88244b6:	8082                	ret

00000000e88244b8 <RestartRecordGetZoneData>:
{
    e88244b8:	7139                	addi	sp,sp,-64
    LogInfo("RestartRecordGetZoneData: ResourceRecords");
    e88244ba:	000b0797          	auipc	a5,0xb0
    e88244be:	5ba78793          	addi	a5,a5,1466 # e88d4a74 <mDNS_LoggingEnabled>
{
    e88244c2:	e826                	sd	s1,16(sp)
    e88244c4:	fc06                	sd	ra,56(sp)
    e88244c6:	e422                	sd	s0,8(sp)
    e88244c8:	ec4a                	sd	s2,24(sp)
    e88244ca:	f04e                	sd	s3,32(sp)
    e88244cc:	f452                	sd	s4,40(sp)
    e88244ce:	f856                	sd	s5,48(sp)
    LogInfo("RestartRecordGetZoneData: ResourceRecords");
    e88244d0:	439c                	lw	a5,0(a5)
{
    e88244d2:	84aa                	mv	s1,a0
    LogInfo("RestartRecordGetZoneData: ResourceRecords");
    e88244d4:	cb81                	beqz	a5,e88244e4 <RestartRecordGetZoneData+0x2c>
    e88244d6:	00082597          	auipc	a1,0x82
    e88244da:	e7a58593          	addi	a1,a1,-390 # e88a6350 <end.8789+0x2ca8>
    e88244de:	450d                	li	a0,3
    e88244e0:	7cd0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e88244e4:	678d                	lui	a5,0x3
    e88244e6:	97a6                	add	a5,a5,s1
    e88244e8:	1b87b403          	ld	s0,440(a5) # 31b8 <memcmp-0xe87fce48>
        if (AuthRecord_uDNS(rr) && rr->state != regState_NoTarget)
    e88244ec:	0007f917          	auipc	s2,0x7f
    e88244f0:	87490913          	addi	s2,s2,-1932 # e88a2d60 <mDNSInterface_Any>
    e88244f4:	49a1                	li	s3,8
            rr->nta = StartGetZoneData(m, rr->resrec.name, ZoneServiceUpdate, RecordRegistrationGotZoneData, rr);
    e88244f6:	00013a17          	auipc	s4,0x13
    e88244fa:	8d8a0a13          	addi	s4,s4,-1832 # e8836dce <RecordRegistrationGotZoneData>
            if (rr->nta) { rr->updateid = zeroID; CancelGetZoneData(m, rr->nta); }
    e88244fe:	0007fa97          	auipc	s5,0x7f
    e8824502:	0a2a8a93          	addi	s5,s5,162 # e88a35a0 <zeroID>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e8824506:	e811                	bnez	s0,e882451a <RestartRecordGetZoneData+0x62>
}
    e8824508:	70e2                	ld	ra,56(sp)
    e882450a:	6422                	ld	s0,8(sp)
    e882450c:	64c2                	ld	s1,16(sp)
    e882450e:	6962                	ld	s2,24(sp)
    e8824510:	7982                	ld	s3,32(sp)
    e8824512:	7a22                	ld	s4,40(sp)
    e8824514:	7ac2                	ld	s5,48(sp)
    e8824516:	6121                	addi	sp,sp,64
    e8824518:	8082                	ret
        if (AuthRecord_uDNS(rr) && rr->state != regState_NoTarget)
    e882451a:	7018                	ld	a4,32(s0)
    e882451c:	00093783          	ld	a5,0(s2)
    e8824520:	04f71063          	bne	a4,a5,e8824560 <RestartRecordGetZoneData+0xa8>
    e8824524:	07a44783          	lbu	a5,122(s0)
    e8824528:	ef85                	bnez	a5,e8824560 <RestartRecordGetZoneData+0xa8>
    e882452a:	7408                	ld	a0,40(s0)
    e882452c:	b77ee0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8824530:	e905                	bnez	a0,e8824560 <RestartRecordGetZoneData+0xa8>
    e8824532:	14c44783          	lbu	a5,332(s0)
    e8824536:	03378563          	beq	a5,s3,e8824560 <RestartRecordGetZoneData+0xa8>
            if (rr->nta) { rr->updateid = zeroID; CancelGetZoneData(m, rr->nta); }
    e882453a:	16843583          	ld	a1,360(s0)
    e882453e:	c981                	beqz	a1,e882454e <RestartRecordGetZoneData+0x96>
    e8824540:	000ad783          	lhu	a5,0(s5)
    e8824544:	8526                	mv	a0,s1
    e8824546:	14f41b23          	sh	a5,342(s0)
    e882454a:	aeafd0ef          	jal	ra,e8821834 <CancelGetZoneData>
            rr->nta = StartGetZoneData(m, rr->resrec.name, ZoneServiceUpdate, RecordRegistrationGotZoneData, rr);
    e882454e:	740c                	ld	a1,40(s0)
    e8824550:	8722                	mv	a4,s0
    e8824552:	86d2                	mv	a3,s4
    e8824554:	4601                	li	a2,0
    e8824556:	8526                	mv	a0,s1
    e8824558:	7f2100ef          	jal	ra,e8834d4a <StartGetZoneData>
    e882455c:	16a43423          	sd	a0,360(s0)
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e8824560:	6000                	ld	s0,0(s0)
    e8824562:	b755                	j	e8824506 <RestartRecordGetZoneData+0x4e>

00000000e8824564 <mDNS_StopQuery>:
{
    e8824564:	1101                	addi	sp,sp,-32
    e8824566:	f891540b          	sdd	s0,s1,(sp),0,4
    mDNS_Lock(m);
    e882456a:	00084497          	auipc	s1,0x84
    e882456e:	83e48493          	addi	s1,s1,-1986 # e88a7da8 <__func__.12300>
{
    e8824572:	e84a                	sd	s2,16(sp)
    e8824574:	892e                	mv	s2,a1
    mDNS_Lock(m);
    e8824576:	85a6                	mv	a1,s1
{
    e8824578:	ec06                	sd	ra,24(sp)
    e882457a:	842a                	mv	s0,a0
    mDNS_Lock(m);
    e882457c:	c86f10ef          	jal	ra,e8815a02 <mDNS_Lock_>
    status = mDNS_StopQuery_internal(m, question);
    e8824580:	85ca                	mv	a1,s2
    e8824582:	8522                	mv	a0,s0
    e8824584:	e3ffc0ef          	jal	ra,e88213c2 <mDNS_StopQuery_internal>
    e8824588:	892a                	mv	s2,a0
    mDNS_Unlock(m);
    e882458a:	85a6                	mv	a1,s1
    e882458c:	8522                	mv	a0,s0
    e882458e:	d3ef10ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e8824592:	f891440b          	ldd	s0,s1,(sp),0,4
    e8824596:	60e2                	ld	ra,24(sp)
    e8824598:	854a                	mv	a0,s2
    e882459a:	6942                	ld	s2,16(sp)
    e882459c:	6105                	addi	sp,sp,32
    e882459e:	8082                	ret

00000000e88245a0 <mDNS_Register>:
{
    e88245a0:	1101                	addi	sp,sp,-32
    e88245a2:	f891540b          	sdd	s0,s1,(sp),0,4
    mDNS_Lock(m);
    e88245a6:	00084497          	auipc	s1,0x84
    e88245aa:	82a48493          	addi	s1,s1,-2006 # e88a7dd0 <__func__.12371>
{
    e88245ae:	e84a                	sd	s2,16(sp)
    e88245b0:	892e                	mv	s2,a1
    mDNS_Lock(m);
    e88245b2:	85a6                	mv	a1,s1
{
    e88245b4:	ec06                	sd	ra,24(sp)
    e88245b6:	842a                	mv	s0,a0
    mDNS_Lock(m);
    e88245b8:	c4af10ef          	jal	ra,e8815a02 <mDNS_Lock_>
    status = mDNS_Register_internal(m, rr);
    e88245bc:	85ca                	mv	a1,s2
    e88245be:	8522                	mv	a0,s0
    e88245c0:	cbafd0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    e88245c4:	892a                	mv	s2,a0
    mDNS_Unlock(m);
    e88245c6:	85a6                	mv	a1,s1
    e88245c8:	8522                	mv	a0,s0
    e88245ca:	d02f10ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e88245ce:	f891440b          	ldd	s0,s1,(sp),0,4
    e88245d2:	60e2                	ld	ra,24(sp)
    e88245d4:	854a                	mv	a0,s2
    e88245d6:	6942                	ld	s2,16(sp)
    e88245d8:	6105                	addi	sp,sp,32
    e88245da:	8082                	ret

00000000e88245dc <mDNS_Deregister>:
{
    e88245dc:	1101                	addi	sp,sp,-32
    e88245de:	f891540b          	sdd	s0,s1,(sp),0,4
    mDNS_Lock(m);
    e88245e2:	00083497          	auipc	s1,0x83
    e88245e6:	7fe48493          	addi	s1,s1,2046 # e88a7de0 <__func__.12392>
{
    e88245ea:	e84a                	sd	s2,16(sp)
    e88245ec:	892e                	mv	s2,a1
    mDNS_Lock(m);
    e88245ee:	85a6                	mv	a1,s1
{
    e88245f0:	ec06                	sd	ra,24(sp)
    e88245f2:	842a                	mv	s0,a0
    mDNS_Lock(m);
    e88245f4:	c0ef10ef          	jal	ra,e8815a02 <mDNS_Lock_>
    status = mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);
    e88245f8:	85ca                	mv	a1,s2
    e88245fa:	4601                	li	a2,0
    e88245fc:	8522                	mv	a0,s0
    e88245fe:	96efe0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
    e8824602:	892a                	mv	s2,a0
    mDNS_Unlock(m);
    e8824604:	85a6                	mv	a1,s1
    e8824606:	8522                	mv	a0,s0
    e8824608:	cc4f10ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e882460c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8824610:	60e2                	ld	ra,24(sp)
    e8824612:	854a                	mv	a0,s2
    e8824614:	6942                	ld	s2,16(sp)
    e8824616:	6105                	addi	sp,sp,32
    e8824618:	8082                	ret

00000000e882461a <mDNS_SetFQDN>:
{
    e882461a:	712d                	addi	sp,sp,-288
    e882461c:	e626                	sd	s1,264(sp)
    if (!AppendDomainLabel(&newmname, &m->hostlabel))  { LogMsg("ERROR: mDNS_SetFQDN: Cannot create MulticastHostname"); return; }
    e882461e:	648d                	lui	s1,0x3
    e8824620:	a6848593          	addi	a1,s1,-1432 # 2a68 <memcmp-0xe87fd598>
{
    e8824624:	ea22                	sd	s0,272(sp)
    if (!AppendDomainLabel(&newmname, &m->hostlabel))  { LogMsg("ERROR: mDNS_SetFQDN: Cannot create MulticastHostname"); return; }
    e8824626:	95aa                	add	a1,a1,a0
{
    e8824628:	842a                	mv	s0,a0
    if (!AppendDomainLabel(&newmname, &m->hostlabel))  { LogMsg("ERROR: mDNS_SetFQDN: Cannot create MulticastHostname"); return; }
    e882462a:	850a                	mv	a0,sp
{
    e882462c:	ee06                	sd	ra,280(sp)
    e882462e:	e24a                	sd	s2,256(sp)
    newmname.c[0] = 0;
    e8824630:	00010023          	sb	zero,0(sp)
    if (!AppendDomainLabel(&newmname, &m->hostlabel))  { LogMsg("ERROR: mDNS_SetFQDN: Cannot create MulticastHostname"); return; }
    e8824634:	da5ee0ef          	jal	ra,e88133d8 <AppendDomainLabel>
    e8824638:	ed11                	bnez	a0,e8824654 <mDNS_SetFQDN+0x3a>
    e882463a:	00086597          	auipc	a1,0x86
    e882463e:	4ee58593          	addi	a1,a1,1262 # e88aab28 <mDNS_DomainTypeNames+0x1178>
    e8824642:	4501                	li	a0,0
    e8824644:	6690a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8824648:	60f2                	ld	ra,280(sp)
    e882464a:	6452                	ld	s0,272(sp)
    e882464c:	64b2                	ld	s1,264(sp)
    e882464e:	6912                	ld	s2,256(sp)
    e8824650:	6115                	addi	sp,sp,288
    e8824652:	8082                	ret
    if (!AppendLiteralLabelString(&newmname, "local")) { LogMsg("ERROR: mDNS_SetFQDN: Cannot create MulticastHostname"); return; }
    e8824654:	00086597          	auipc	a1,0x86
    e8824658:	50c58593          	addi	a1,a1,1292 # e88aab60 <mDNS_DomainTypeNames+0x11b0>
    e882465c:	850a                	mv	a0,sp
    e882465e:	c11ee0ef          	jal	ra,e881326e <AppendLiteralLabelString>
    e8824662:	dd61                	beqz	a0,e882463a <mDNS_SetFQDN+0x20>
    mDNS_Lock(m);
    e8824664:	00083597          	auipc	a1,0x83
    e8824668:	78c58593          	addi	a1,a1,1932 # e88a7df0 <__func__.12446>
    e882466c:	8522                	mv	a0,s0
    e882466e:	b94f10ef          	jal	ra,e8815a02 <mDNS_Lock_>
    if (SameDomainNameCS(&m->MulticastHostname, &newmname)) debugf("mDNS_SetFQDN - hostname unchanged");
    e8824672:	aa848913          	addi	s2,s1,-1368
    e8824676:	9922                	add	s2,s2,s0
    e8824678:	858a                	mv	a1,sp
    e882467a:	854a                	mv	a0,s2
    e882467c:	afdee0ef          	jal	ra,e8813178 <SameDomainNameCS>
    e8824680:	e50d                	bnez	a0,e88246aa <mDNS_SetFQDN+0x90>
        AssignDomainName(&m->MulticastHostname, &newmname);
    e8824682:	020c                	addi	a1,sp,256
    e8824684:	850a                	mv	a0,sp
    e8824686:	ac7ee0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882468a:	0005061b          	sext.w	a2,a0
    e882468e:	10000793          	li	a5,256
    e8824692:	02c7ee63          	bltu	a5,a2,e88246ce <mDNS_SetFQDN+0xb4>
    e8824696:	858a                	mv	a1,sp
    e8824698:	854a                	mv	a0,s2
    e882469a:	4060b0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        DeadvertiseAllInterfaceRecords(m);
    e882469e:	8522                	mv	a0,s0
    e88246a0:	835fe0ef          	jal	ra,e8822ed4 <DeadvertiseAllInterfaceRecords>
        AdvertiseAllInterfaceRecords(m);
    e88246a4:	8522                	mv	a0,s0
    e88246a6:	85afe0ef          	jal	ra,e8822700 <AdvertiseAllInterfaceRecords>
    for (rr = m->ResourceRecords;  rr; rr=rr->next) if (rr->AutoTarget) UpdateTargetHostName(m, rr);
    e88246aa:	678d                	lui	a5,0x3
    e88246ac:	97a2                	add	a5,a5,s0
    e88246ae:	1b87b483          	ld	s1,440(a5) # 31b8 <memcmp-0xe87fce48>
    e88246b2:	e095                	bnez	s1,e88246d6 <mDNS_SetFQDN+0xbc>
    for (rr = m->DuplicateRecords; rr; rr=rr->next) if (rr->AutoTarget) UpdateTargetHostName(m, rr);
    e88246b4:	678d                	lui	a5,0x3
    e88246b6:	97a2                	add	a5,a5,s0
    e88246b8:	1c07b483          	ld	s1,448(a5) # 31c0 <memcmp-0xe87fce40>
    e88246bc:	e495                	bnez	s1,e88246e8 <mDNS_SetFQDN+0xce>
    mDNS_Unlock(m);
    e88246be:	00083597          	auipc	a1,0x83
    e88246c2:	73258593          	addi	a1,a1,1842 # e88a7df0 <__func__.12446>
    e88246c6:	8522                	mv	a0,s0
    e88246c8:	c04f10ef          	jal	ra,e8815acc <mDNS_Unlock_>
    e88246cc:	bfb5                	j	e8824648 <mDNS_SetFQDN+0x2e>
        AssignDomainName(&m->MulticastHostname, &newmname);
    e88246ce:	94a2                	add	s1,s1,s0
    e88246d0:	aa048423          	sb	zero,-1368(s1)
    e88246d4:	b7e9                	j	e882469e <mDNS_SetFQDN+0x84>
    for (rr = m->ResourceRecords;  rr; rr=rr->next) if (rr->AutoTarget) UpdateTargetHostName(m, rr);
    e88246d6:	0784c783          	lbu	a5,120(s1)
    e88246da:	c789                	beqz	a5,e88246e4 <mDNS_SetFQDN+0xca>
    SetTargetToHostName(m, rr);
    e88246dc:	85a6                	mv	a1,s1
    e88246de:	8522                	mv	a0,s0
    e88246e0:	ad7f70ef          	jal	ra,e881c1b6 <SetTargetToHostName>
    for (rr = m->ResourceRecords;  rr; rr=rr->next) if (rr->AutoTarget) UpdateTargetHostName(m, rr);
    e88246e4:	6084                	ld	s1,0(s1)
    e88246e6:	b7f1                	j	e88246b2 <mDNS_SetFQDN+0x98>
    for (rr = m->DuplicateRecords; rr; rr=rr->next) if (rr->AutoTarget) UpdateTargetHostName(m, rr);
    e88246e8:	0784c783          	lbu	a5,120(s1)
    e88246ec:	c789                	beqz	a5,e88246f6 <mDNS_SetFQDN+0xdc>
    SetTargetToHostName(m, rr);
    e88246ee:	85a6                	mv	a1,s1
    e88246f0:	8522                	mv	a0,s0
    e88246f2:	ac5f70ef          	jal	ra,e881c1b6 <SetTargetToHostName>
    for (rr = m->DuplicateRecords; rr; rr=rr->next) if (rr->AutoTarget) UpdateTargetHostName(m, rr);
    e88246f6:	6084                	ld	s1,0(s1)
    e88246f8:	b7d1                	j	e88246bc <mDNS_SetFQDN+0xa2>

00000000e88246fa <mDNS_HostNameCallback>:
{
    e88246fa:	711d                	addi	sp,sp,-96
    e88246fc:	e4a6                	sd	s1,72(sp)
    e88246fe:	ec86                	sd	ra,88(sp)
    e8824700:	e8a2                	sd	s0,80(sp)
    e8824702:	84aa                	mv	s1,a0
    if (result == mStatus_NoError)
    e8824704:	ea11                	bnez	a2,e8824718 <mDNS_HostNameCallback+0x1e>
        if (m->MainCallback)
    e8824706:	711c                	ld	a5,32(a0)
    e8824708:	c399                	beqz	a5,e882470e <mDNS_HostNameCallback+0x14>
            m->MainCallback(m, mStatus_NoError);
    e882470a:	4581                	li	a1,0
    e882470c:	9782                	jalr	a5
}
    e882470e:	60e6                	ld	ra,88(sp)
    e8824710:	6446                	ld	s0,80(sp)
    e8824712:	64a6                	ld	s1,72(sp)
    e8824714:	6125                	addi	sp,sp,96
    e8824716:	8082                	ret
    else if (result == mStatus_NameConflict)
    e8824718:	77c1                	lui	a5,0xffff0
    e882471a:	ff478713          	addi	a4,a5,-12 # fffffffffffefff4 <__DRAM0_INF_BASE+0xfffffffefffffff4>
    e882471e:	8432                	mv	s0,a2
    e8824720:	04e61a63          	bne	a2,a4,e8824774 <mDNS_HostNameCallback+0x7a>
        domainlabel oldlabel = m->hostlabel;
    e8824724:	658d                	lui	a1,0x3
    e8824726:	95aa                	add	a1,a1,a0
    e8824728:	04000613          	li	a2,64
    e882472c:	a6858593          	addi	a1,a1,-1432 # 2a68 <memcmp-0xe87fd598>
    e8824730:	850a                	mv	a0,sp
    e8824732:	937db0ef          	jal	ra,e8800068 <memcpy>
        if (m->MainCallback)
    e8824736:	709c                	ld	a5,32(s1)
    e8824738:	c781                	beqz	a5,e8824740 <mDNS_HostNameCallback+0x46>
            m->MainCallback(m, mStatus_NameConflict);
    e882473a:	85a2                	mv	a1,s0
    e882473c:	8526                	mv	a0,s1
    e882473e:	9782                	jalr	a5
        if (SameDomainLabel(m->hostlabel.c, oldlabel.c))
    e8824740:	640d                	lui	s0,0x3
    e8824742:	a6840413          	addi	s0,s0,-1432 # 2a68 <memcmp-0xe87fd598>
    e8824746:	9426                	add	s0,s0,s1
    e8824748:	858a                	mv	a1,sp
    e882474a:	8522                	mv	a0,s0
    e882474c:	89bee0ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e8824750:	c509                	beqz	a0,e882475a <mDNS_HostNameCallback+0x60>
            IncrementLabelSuffix(&m->hostlabel, mDNSfalse);
    e8824752:	4581                	li	a1,0
    e8824754:	8522                	mv	a0,s0
    e8824756:	e26ef0ef          	jal	ra,e8813d7c <IncrementLabelSuffix>
        mDNS_SetFQDN(m);
    e882475a:	8526                	mv	a0,s1
    e882475c:	ebfff0ef          	jal	ra,e882461a <mDNS_SetFQDN>
        LogMsg("Local Hostname %#s.local already in use; will try %#s.local instead", oldlabel.c, m->hostlabel.c);
    e8824760:	86a2                	mv	a3,s0
    e8824762:	860a                	mv	a2,sp
    e8824764:	00086597          	auipc	a1,0x86
    e8824768:	99c58593          	addi	a1,a1,-1636 # e88aa100 <mDNS_DomainTypeNames+0x750>
    e882476c:	4501                	li	a0,0
    e882476e:	53f0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8824772:	bf71                	j	e882470e <mDNS_HostNameCallback+0x14>
    else if (result == mStatus_MemFree)
    e8824774:	f0078793          	addi	a5,a5,-256
    e8824778:	f8f60be3          	beq	a2,a5,e882470e <mDNS_HostNameCallback+0x14>
        LogMsg("mDNS_HostNameCallback: Unknown error %d for registration of record %s", result,  rr->resrec.name->c);
    e882477c:	7594                	ld	a3,40(a1)
    e882477e:	4501                	li	a0,0
    e8824780:	00086597          	auipc	a1,0x86
    e8824784:	9c858593          	addi	a1,a1,-1592 # e88aa148 <mDNS_DomainTypeNames+0x798>
    e8824788:	5250a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e882478c:	b749                	j	e882470e <mDNS_HostNameCallback+0x14>

00000000e882478e <mDNS_DeactivateNetWake_internal>:
    NetworkInterfaceInfo *p = m->HostInterfaces;
    e882478e:	678d                	lui	a5,0x3
    e8824790:	97aa                	add	a5,a5,a0
    e8824792:	1e07b783          	ld	a5,480(a5) # 31e0 <memcmp-0xe87fce20>
{
    e8824796:	862e                	mv	a2,a1
    while (p && p != set) p=p->next;
    e8824798:	10078f63          	beqz	a5,e88248b6 <mDNS_DeactivateNetWake_internal+0x128>
    e882479c:	00c79663          	bne	a5,a2,e88247a8 <mDNS_DeactivateNetWake_internal+0x1a>
    if (set->NetWakeBrowse.ThisQInterval >= 0)
    e88247a0:	525c                	lw	a5,36(a2)
    e88247a2:	0007d563          	bgez	a5,e88247ac <mDNS_DeactivateNetWake_internal+0x1e>
    e88247a6:	8082                	ret
    while (p && p != set) p=p->next;
    e88247a8:	639c                	ld	a5,0(a5)
    e88247aa:	b7fd                	j	e8824798 <mDNS_DeactivateNetWake_internal+0xa>
{
    e88247ac:	7179                	addi	sp,sp,-48
    e88247ae:	f891540b          	sdd	s0,s1,(sp),0,4
    e88247b2:	fb31590b          	sdd	s2,s3,(sp),1,4
        LogSPS("DeactivateNetWake for %s (%#a)", set->ifname, &set->ip);
    e88247b6:	000b0797          	auipc	a5,0xb0
    e88247ba:	2be78793          	addi	a5,a5,702 # e88d4a74 <mDNS_LoggingEnabled>
{
    e88247be:	f406                	sd	ra,40(sp)
    e88247c0:	f052                	sd	s4,32(sp)
        LogSPS("DeactivateNetWake for %s (%#a)", set->ifname, &set->ip);
    e88247c2:	439c                	lw	a5,0(a5)
    e88247c4:	84b2                	mv	s1,a2
    e88247c6:	842a                	mv	s0,a0
    e88247c8:	cf99                	beqz	a5,e88247e6 <mDNS_DeactivateNetWake_internal+0x58>
    e88247ca:	6609                	lui	a2,0x2
    e88247cc:	9f860693          	addi	a3,a2,-1544 # 19f8 <memcmp-0xe87fe608>
    e88247d0:	a2660613          	addi	a2,a2,-1498
    e88247d4:	96a6                	add	a3,a3,s1
    e88247d6:	9626                	add	a2,a2,s1
    e88247d8:	00085597          	auipc	a1,0x85
    e88247dc:	dd858593          	addi	a1,a1,-552 # e88a95b0 <hexValues.12413+0x1600>
    e88247e0:	4509                	li	a0,2
    e88247e2:	4cb0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNS_StopQuery_internal(m, &set->NetWakeBrowse);
    e88247e6:	01048a13          	addi	s4,s1,16
    e88247ea:	6905                	lui	s2,0x1
    e88247ec:	85d2                	mv	a1,s4
    e88247ee:	8522                	mv	a0,s0
    e88247f0:	d7090913          	addi	s2,s2,-656 # d70 <memcmp-0xe87ff290>
    e88247f4:	bcffc0ef          	jal	ra,e88213c2 <mDNS_StopQuery_internal>
        for (i=0; i<3; i++) if (set->NetWakeResolve[i].ThisQInterval >= 0) mDNS_StopQuery_internal(m, &set->NetWakeResolve[i]);
    e88247f8:	36848993          	addi	s3,s1,872
    e88247fc:	9926                	add	s2,s2,s1
    e88247fe:	0149a783          	lw	a5,20(s3)
    e8824802:	0007c663          	bltz	a5,e882480e <mDNS_DeactivateNetWake_internal+0x80>
    e8824806:	85ce                	mv	a1,s3
    e8824808:	8522                	mv	a0,s0
    e882480a:	bb9fc0ef          	jal	ra,e88213c2 <mDNS_StopQuery_internal>
    e882480e:	35898993          	addi	s3,s3,856
    e8824812:	ff2996e3          	bne	s3,s2,e88247fe <mDNS_DeactivateNetWake_internal+0x70>
        if (m->SPSBrowseCallback)
    e8824816:	6795                	lui	a5,0x5
    e8824818:	97a2                	add	a5,a5,s0
    e882481a:	e087b783          	ld	a5,-504(a5) # 4e08 <memcmp-0xe87fb1f8>
    e882481e:	cfb1                	beqz	a5,e882487a <mDNS_DeactivateNetWake_internal+0xec>
            mDNS_DropLockBeforeCallback();      // Allow client to legally make mDNS API calls from the callback
    e8824820:	585c                	lw	a5,52(s0)
    e8824822:	5814                	lw	a3,48(s0)
    e8824824:	0017871b          	addiw	a4,a5,1
    e8824828:	d858                	sw	a4,52(s0)
    e882482a:	00d70d63          	beq	a4,a3,e8824844 <mDNS_DeactivateNetWake_internal+0xb6>
    e882482e:	00083617          	auipc	a2,0x83
    e8824832:	5d260613          	addi	a2,a2,1490 # e88a7e00 <__func__.12503>
    e8824836:	0007f597          	auipc	a1,0x7f
    e882483a:	53258593          	addi	a1,a1,1330 # e88a3d68 <end.8789+0x6c0>
    e882483e:	4501                	li	a0,0
    e8824840:	46d0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            m->SPSBrowseCallback(m, &set->NetWakeBrowse, mDNSNULL, mDNSfalse);
    e8824844:	6795                	lui	a5,0x5
    e8824846:	97a2                	add	a5,a5,s0
    e8824848:	e087b783          	ld	a5,-504(a5) # 4e08 <memcmp-0xe87fb1f8>
    e882484c:	4681                	li	a3,0
    e882484e:	4601                	li	a2,0
    e8824850:	85d2                	mv	a1,s4
    e8824852:	8522                	mv	a0,s0
    e8824854:	9782                	jalr	a5
            mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8824856:	5814                	lw	a3,48(s0)
    e8824858:	5858                	lw	a4,52(s0)
    e882485a:	00e68d63          	beq	a3,a4,e8824874 <mDNS_DeactivateNetWake_internal+0xe6>
    e882485e:	00083617          	auipc	a2,0x83
    e8824862:	5a260613          	addi	a2,a2,1442 # e88a7e00 <__func__.12503>
    e8824866:	0007f597          	auipc	a1,0x7f
    e882486a:	54258593          	addi	a1,a1,1346 # e88a3da8 <end.8789+0x700>
    e882486e:	4501                	li	a0,0
    e8824870:	43d0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8824874:	585c                	lw	a5,52(s0)
    e8824876:	37fd                	addiw	a5,a5,-1
    e8824878:	d85c                	sw	a5,52(s0)
    set->NetWakeBrowse.ThisQInterval = -1;
    e882487a:	577d                	li	a4,-1
    e882487c:	d0d8                	sw	a4,36(s1)
        set->NetWakeResolve[i].ThisQInterval = -1;
    e882487e:	36e4ae23          	sw	a4,892(s1)
        set->SPSAddr[i].type = mDNSAddrType_None;
    e8824882:	6785                	lui	a5,0x1
    e8824884:	97a6                	add	a5,a5,s1
    e8824886:	d607a823          	sw	zero,-656(a5) # d70 <memcmp-0xe87ff290>
        set->NetWakeResolve[i].ThisQInterval = -1;
    e882488a:	6ce4aa23          	sw	a4,1748(s1)
        set->SPSAddr[i].type = mDNSAddrType_None;
    e882488e:	d807a223          	sw	zero,-636(a5)
        set->NetWakeResolve[i].ThisQInterval = -1;
    e8824892:	a2e7a623          	sw	a4,-1492(a5)
        set->SPSAddr[i].type = mDNSAddrType_None;
    e8824896:	d807ac23          	sw	zero,-616(a5)
    set->NextSPSAttempt     = -1;
    e882489a:	dae7aa23          	sw	a4,-588(a5)
    set->NextSPSAttemptTime = m->timenow;
    e882489e:	24042703          	lw	a4,576(s0)
    e88248a2:	dae7ac23          	sw	a4,-584(a5)
}
    e88248a6:	f891440b          	ldd	s0,s1,(sp),0,4
    e88248aa:	70a2                	ld	ra,40(sp)
    e88248ac:	7a02                	ld	s4,32(sp)
    e88248ae:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88248b2:	6145                	addi	sp,sp,48
    e88248b4:	8082                	ret
    if (!p) { LogMsg("mDNS_DeactivateNetWake_internal: NetworkInterfaceInfo %p not found in active list", set); return; }
    e88248b6:	00085597          	auipc	a1,0x85
    e88248ba:	d1a58593          	addi	a1,a1,-742 # e88a95d0 <hexValues.12413+0x1620>
    e88248be:	4501                	li	a0,0
    e88248c0:	3ed0a06f          	j	e882f4ac <LogMsgWithLevel>

00000000e88248c4 <mDNS_AddRecordToService>:
{
    e88248c4:	711d                	addi	sp,sp,-96
    e88248c6:	e4a6                	sd	s1,72(sp)
    e88248c8:	84ae                	mv	s1,a1
    e88248ca:	ec86                	sd	ra,88(sp)
    e88248cc:	e8a2                	sd	s0,80(sp)
    e88248ce:	e0ca                	sd	s2,64(sp)
    e88248d0:	fc4e                	sd	s3,56(sp)
    e88248d2:	f852                	sd	s4,48(sp)
    e88248d4:	f456                	sd	s5,40(sp)
    e88248d6:	8a2a                	mv	s4,a0
    artype = setAuthRecType(InterfaceID, flags);
    e88248d8:	4704b503          	ld	a0,1136(s1)
{
    e88248dc:	8932                	mv	s2,a2
    artype = setAuthRecType(InterfaceID, flags);
    e88248de:	85be                	mv	a1,a5
    extra->next = mDNSNULL;
    e88248e0:	89ca                	mv	s3,s2
{
    e88248e2:	8436                	mv	s0,a3
    e88248e4:	ec3a                	sd	a4,24(sp)
    artype = setAuthRecType(InterfaceID, flags);
    e88248e6:	c76f80ef          	jal	ra,e881cd5c <setAuthRecType>
    extra->next = mDNSNULL;
    e88248ea:	7a89d00b          	sdia	zero,(s3),8,1
    mDNS_SetupResourceRecord(&extra->r, rdata, sr->RR_PTR.resrec.InterfaceID,
    e88248ee:	6762                	ld	a4,24(sp)
    e88248f0:	e026                	sd	s1,0(sp)
    e88248f2:	01a95683          	lhu	a3,26(s2)
    e88248f6:	4704b603          	ld	a2,1136(s1)
    e88248fa:	882a                	mv	a6,a0
    e88248fc:	4789                	li	a5,2
    e88248fe:	85a2                	mv	a1,s0
    e8824900:	00000897          	auipc	a7,0x0
    e8824904:	24288893          	addi	a7,a7,578 # e8824b42 <ServiceCallback>
    e8824908:	854e                	mv	a0,s3
    e882490a:	cc0ef0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    AssignDomainName(&extra->r.namestorage, sr->RR_SRV.resrec.name);
    e882490e:	6405                	lui	s0,0x1
    e8824910:	9426                	add	s0,s0,s1
    e8824912:	88843503          	ld	a0,-1912(s0) # 888 <memcmp-0xe87ff778>
    e8824916:	10050593          	addi	a1,a0,256
    e882491a:	833ee0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882491e:	0005061b          	sext.w	a2,a0
    e8824922:	10000793          	li	a5,256
    e8824926:	08c7e363          	bltu	a5,a2,e88249ac <mDNS_AddRecordToService+0xe8>
    e882492a:	88843583          	ld	a1,-1912(s0)
    e882492e:	21090513          	addi	a0,s2,528
    e8824932:	16e0b0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    mDNS_Lock(m);
    e8824936:	00083597          	auipc	a1,0x83
    e882493a:	53a58593          	addi	a1,a1,1338 # e88a7e70 <__func__.12680>
    e882493e:	8552                	mv	a0,s4
    e8824940:	8c2f10ef          	jal	ra,e8815a02 <mDNS_Lock_>
    if (extra->r.resrec.rrtype == kDNSType_TXT)
    e8824944:	01a95703          	lhu	a4,26(s2)
    e8824948:	47c1                	li	a5,16
    e882494a:	06f71463          	bne	a4,a5,e88249b2 <mDNS_AddRecordToService+0xee>
        if (sr->RR_TXT.resrec.RecordType & kDNSRecordTypeUniqueMask) rr = &sr->RR_TXT.resrec;
    e882494e:	6785                	lui	a5,0x1
    e8824950:	00f486b3          	add	a3,s1,a5
    e8824954:	c786c683          	lbu	a3,-904(a3)
    e8824958:	c7878793          	addi	a5,a5,-904 # c78 <memcmp-0xe87ff388>
    e882495c:	0326f693          	andi	a3,a3,50
    e8824960:	e6bd                	bnez	a3,e88249ce <mDNS_AddRecordToService+0x10a>
        for (srExtra = sr->Extras; srExtra; srExtra = srExtra->next)
    e8824962:	6c9c                	ld	a5,24(s1)
    e8824964:	e7cd                	bnez	a5,e8824a0e <mDNS_AddRecordToService+0x14a>
    e = &sr->Extras;
    e8824966:	6c9c                	ld	a5,24(s1)
    e8824968:	01848a93          	addi	s5,s1,24
    while (*e) e = &(*e)->next;
    e882496c:	efdd                	bnez	a5,e8824a2a <mDNS_AddRecordToService+0x166>
    extra->r.DependentOn = &sr->RR_SRV;
    e882496e:	6785                	lui	a5,0x1
    e8824970:	86078793          	addi	a5,a5,-1952 # 860 <memcmp-0xe87ff7a0>
    e8824974:	94be                	add	s1,s1,a5
    e8824976:	06993423          	sd	s1,104(s2)
    status = mDNS_Register_internal(m, &extra->r);
    e882497a:	85ce                	mv	a1,s3
    e882497c:	8552                	mv	a0,s4
    e882497e:	8fcfd0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    e8824982:	842a                	mv	s0,a0
    if (status == mStatus_NoError) *e = extra;
    e8824984:	e119                	bnez	a0,e882498a <mDNS_AddRecordToService+0xc6>
    e8824986:	012ab023          	sd	s2,0(s5)
    mDNS_Unlock(m);
    e882498a:	8552                	mv	a0,s4
    e882498c:	00083597          	auipc	a1,0x83
    e8824990:	4e458593          	addi	a1,a1,1252 # e88a7e70 <__func__.12680>
    e8824994:	938f10ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e8824998:	64a6                	ld	s1,72(sp)
    e882499a:	8522                	mv	a0,s0
    e882499c:	60e6                	ld	ra,88(sp)
    e882499e:	6446                	ld	s0,80(sp)
    e88249a0:	6906                	ld	s2,64(sp)
    e88249a2:	79e2                	ld	s3,56(sp)
    e88249a4:	7a42                	ld	s4,48(sp)
    e88249a6:	7aa2                	ld	s5,40(sp)
    e88249a8:	6125                	addi	sp,sp,96
    e88249aa:	8082                	ret
    AssignDomainName(&extra->r.namestorage, sr->RR_SRV.resrec.name);
    e88249ac:	20090823          	sb	zero,528(s2)
    e88249b0:	b759                	j	e8824936 <mDNS_AddRecordToService+0x72>
    else if (extra->r.resrec.rrtype == kDNSType_SRV)
    e88249b2:	02100793          	li	a5,33
    e88249b6:	faf716e3          	bne	a4,a5,e8824962 <mDNS_AddRecordToService+0x9e>
        if (sr->RR_SRV.resrec.RecordType & kDNSRecordTypeUniqueMask) rr = &sr->RR_SRV.resrec;
    e88249ba:	6785                	lui	a5,0x1
    e88249bc:	00f486b3          	add	a3,s1,a5
    e88249c0:	8686c683          	lbu	a3,-1944(a3)
    e88249c4:	0326f693          	andi	a3,a3,50
    e88249c8:	dec9                	beqz	a3,e8824962 <mDNS_AddRecordToService+0x9e>
    e88249ca:	86878793          	addi	a5,a5,-1944 # 868 <memcmp-0xe87ff798>
    e88249ce:	00f48433          	add	s0,s1,a5
    if (!rr)
    e88249d2:	d841                	beqz	s0,e8824962 <mDNS_AddRecordToService+0x9e>
    if (rr && (extra->r.resrec.rroriginalttl != rr->rroriginalttl))
    e88249d4:	02092a83          	lw	s5,32(s2)
    e88249d8:	4414                	lw	a3,8(s0)
    e88249da:	f8da86e3          	beq	s5,a3,e8824966 <mDNS_AddRecordToService+0xa2>
        LogMsg("mDNS_AddRecordToService: Correcting TTL from %4d to %4d for %s",
    e88249de:	04093583          	ld	a1,64(s2)
    e88249e2:	03ba0613          	addi	a2,s4,59
    e88249e6:	01890513          	addi	a0,s2,24
    e88249ea:	0591                	addi	a1,a1,4
    e88249ec:	ec36                	sd	a3,24(sp)
    e88249ee:	826f20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88249f2:	872a                	mv	a4,a0
    e88249f4:	66e2                	ld	a3,24(sp)
    e88249f6:	8656                	mv	a2,s5
    e88249f8:	00085597          	auipc	a1,0x85
    e88249fc:	b7858593          	addi	a1,a1,-1160 # e88a9570 <hexValues.12413+0x15c0>
    e8824a00:	4501                	li	a0,0
    e8824a02:	2ab0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        extra->r.resrec.rroriginalttl = rr->rroriginalttl;
    e8824a06:	441c                	lw	a5,8(s0)
    e8824a08:	02f92023          	sw	a5,32(s2)
    e8824a0c:	bfa9                	j	e8824966 <mDNS_AddRecordToService+0xa2>
            if ((srExtra->r.resrec.rrtype == extra->r.resrec.rrtype) && (srExtra->r.resrec.RecordType & kDNSRecordTypeUniqueMask))
    e8824a0e:	01a7d683          	lhu	a3,26(a5)
    e8824a12:	00e69a63          	bne	a3,a4,e8824a26 <mDNS_AddRecordToService+0x162>
    e8824a16:	0187c683          	lbu	a3,24(a5)
    e8824a1a:	0326f693          	andi	a3,a3,50
    e8824a1e:	c681                	beqz	a3,e8824a26 <mDNS_AddRecordToService+0x162>
                rr = &srExtra->r.resrec;
    e8824a20:	01878413          	addi	s0,a5,24
                break;
    e8824a24:	bf45                	j	e88249d4 <mDNS_AddRecordToService+0x110>
        for (srExtra = sr->Extras; srExtra; srExtra = srExtra->next)
    e8824a26:	639c                	ld	a5,0(a5)
    e8824a28:	bf35                	j	e8824964 <mDNS_AddRecordToService+0xa0>
    while (*e) e = &(*e)->next;
    e8824a2a:	8abe                	mv	s5,a5
    e8824a2c:	639c                	ld	a5,0(a5)
    e8824a2e:	bf3d                	j	e882496c <mDNS_AddRecordToService+0xa8>

00000000e8824a30 <mDNS_DeregisterService_drt>:
{
    e8824a30:	7179                	addi	sp,sp,-48
    e8824a32:	f891540b          	sdd	s0,s1,(sp),0,4
    if (mDNSIPPortIsZero(sr->RR_SRV.resrec.rdata->u.srv.port)) return(mDNS_DeregisterNoSuchService(m, &sr->RR_SRV));
    e8824a36:	6485                	lui	s1,0x1
{
    e8824a38:	fb31590b          	sdd	s2,s3,(sp),1,4
    if (mDNSIPPortIsZero(sr->RR_SRV.resrec.rdata->u.srv.port)) return(mDNS_DeregisterNoSuchService(m, &sr->RR_SRV));
    e8824a3c:	009587b3          	add	a5,a1,s1
{
    e8824a40:	f406                	sd	ra,40(sp)
    e8824a42:	f052                	sd	s4,32(sp)
    if (mDNSIPPortIsZero(sr->RR_SRV.resrec.rdata->u.srv.port)) return(mDNS_DeregisterNoSuchService(m, &sr->RR_SRV));
    e8824a44:	8907b703          	ld	a4,-1904(a5)
    e8824a48:	00875703          	lhu	a4,8(a4)
    e8824a4c:	ef09                	bnez	a4,e8824a66 <mDNS_DeregisterService_drt+0x36>
    e8824a4e:	86048493          	addi	s1,s1,-1952 # 860 <memcmp-0xe87ff7a0>
    e8824a52:	95a6                	add	a1,a1,s1
}
    e8824a54:	f891440b          	ldd	s0,s1,(sp),0,4
    e8824a58:	70a2                	ld	ra,40(sp)
    e8824a5a:	7a02                	ld	s4,32(sp)
    e8824a5c:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8824a60:	6145                	addi	sp,sp,48
    if (mDNSIPPortIsZero(sr->RR_SRV.resrec.rdata->u.srv.port)) return(mDNS_DeregisterNoSuchService(m, &sr->RR_SRV));
    e8824a62:	b7bff06f          	j	e88245dc <mDNS_Deregister>
    if (sr->RR_PTR.resrec.RecordType == kDNSRecordTypeUnregistered)
    e8824a66:	4585c703          	lbu	a4,1112(a1)
    e8824a6a:	cb69                	beqz	a4,e8824b3c <mDNS_DeregisterService_drt+0x10c>
    else if (sr->RR_PTR.resrec.RecordType == kDNSRecordTypeDeregistering)
    e8824a6c:	4685                	li	a3,1
    e8824a6e:	8a32                	mv	s4,a2
    e8824a70:	842e                	mv	s0,a1
    e8824a72:	02d71d63          	bne	a4,a3,e8824aac <mDNS_DeregisterService_drt+0x7c>
        LogInfo("Service set for %##s already in the process of deregistering", sr->RR_SRV.resrec.name->c);
    e8824a76:	000b0717          	auipc	a4,0xb0
    e8824a7a:	ffe70713          	addi	a4,a4,-2 # e88d4a74 <mDNS_LoggingEnabled>
    e8824a7e:	4318                	lw	a4,0(a4)
    e8824a80:	cb11                	beqz	a4,e8824a94 <mDNS_DeregisterService_drt+0x64>
    e8824a82:	8887b603          	ld	a2,-1912(a5)
    e8824a86:	00085597          	auipc	a1,0x85
    e8824a8a:	d1a58593          	addi	a1,a1,-742 # e88a97a0 <hexValues.12413+0x17f0>
    e8824a8e:	450d                	li	a0,3
    e8824a90:	21d0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        sr->Conflict = mDNSfalse;
    e8824a94:	00040823          	sb	zero,16(s0)
        return(mStatus_NoError);
    e8824a98:	4401                	li	s0,0
}
    e8824a9a:	8522                	mv	a0,s0
    e8824a9c:	70a2                	ld	ra,40(sp)
    e8824a9e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8824aa2:	7a02                	ld	s4,32(sp)
    e8824aa4:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8824aa8:	6145                	addi	sp,sp,48
    e8824aaa:	8082                	ret
        mDNS_Lock(m);
    e8824aac:	00083597          	auipc	a1,0x83
    e8824ab0:	3dc58593          	addi	a1,a1,988 # e88a7e88 <__func__.12725>
    e8824ab4:	89aa                	mv	s3,a0
    e8824ab6:	f4df00ef          	jal	ra,e8815a02 <mDNS_Lock_>
        e = sr->Extras;
    e8824aba:	01843903          	ld	s2,24(s0)
        mDNS_Deregister_internal(m, &sr->RR_SRV, mDNS_Dereg_repeat);
    e8824abe:	86048593          	addi	a1,s1,-1952
    e8824ac2:	460d                	li	a2,3
    e8824ac4:	95a2                	add	a1,a1,s0
    e8824ac6:	854e                	mv	a0,s3
    e8824ac8:	ca5fd0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
        mDNS_Deregister_internal(m, &sr->RR_TXT, mDNS_Dereg_repeat);
    e8824acc:	c7048593          	addi	a1,s1,-912
    e8824ad0:	460d                	li	a2,3
    e8824ad2:	95a2                	add	a1,a1,s0
    e8824ad4:	854e                	mv	a0,s3
    e8824ad6:	c97fd0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
        mDNS_Deregister_internal(m, &sr->RR_ADV, drt);
    e8824ada:	8652                	mv	a2,s4
    e8824adc:	04040593          	addi	a1,s0,64
    e8824ae0:	854e                	mv	a0,s3
    e8824ae2:	c8bfd0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
        while (e)
    e8824ae6:	02091763          	bnez	s2,e8824b14 <mDNS_DeregisterService_drt+0xe4>
        for (i=0; i<sr->NumSubTypes; i++)
    e8824aea:	4481                	li	s1,0
            mDNS_Deregister_internal(m, &sr->SubTypes[i], drt);
    e8824aec:	41000913          	li	s2,1040
        for (i=0; i<sr->NumSubTypes; i++)
    e8824af0:	501c                	lw	a5,32(s0)
    e8824af2:	02f4ea63          	bltu	s1,a5,e8824b26 <mDNS_DeregisterService_drt+0xf6>
        status = mDNS_Deregister_internal(m, &sr->RR_PTR, drt);
    e8824af6:	45040593          	addi	a1,s0,1104
    e8824afa:	8652                	mv	a2,s4
    e8824afc:	854e                	mv	a0,s3
    e8824afe:	c6ffd0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
    e8824b02:	842a                	mv	s0,a0
        mDNS_Unlock(m);
    e8824b04:	00083597          	auipc	a1,0x83
    e8824b08:	38458593          	addi	a1,a1,900 # e88a7e88 <__func__.12725>
    e8824b0c:	854e                	mv	a0,s3
    e8824b0e:	fbff00ef          	jal	ra,e8815acc <mDNS_Unlock_>
        return(status);
    e8824b12:	b761                	j	e8824a9a <mDNS_DeregisterService_drt+0x6a>
            mDNS_Deregister_internal(m, &e->r, mDNS_Dereg_repeat);
    e8824b14:	01090593          	addi	a1,s2,16
    e8824b18:	460d                	li	a2,3
    e8824b1a:	854e                	mv	a0,s3
    e8824b1c:	c51fd0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
            e = e->next;
    e8824b20:	00093903          	ld	s2,0(s2)
    e8824b24:	b7c9                	j	e8824ae6 <mDNS_DeregisterService_drt+0xb6>
            mDNS_Deregister_internal(m, &sr->SubTypes[i], drt);
    e8824b26:	740c                	ld	a1,40(s0)
    e8824b28:	7c04b78b          	extu	a5,s1,31,0
    e8824b2c:	8652                	mv	a2,s4
    e8824b2e:	2127958b          	mula	a1,a5,s2
    e8824b32:	854e                	mv	a0,s3
        for (i=0; i<sr->NumSubTypes; i++)
    e8824b34:	2485                	addiw	s1,s1,1
            mDNS_Deregister_internal(m, &sr->SubTypes[i], drt);
    e8824b36:	c37fd0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
        for (i=0; i<sr->NumSubTypes; i++)
    e8824b3a:	bf5d                	j	e8824af0 <mDNS_DeregisterService_drt+0xc0>
        return(mStatus_BadReferenceErr);
    e8824b3c:	7441                	lui	s0,0xffff0
    e8824b3e:	146d                	addi	s0,s0,-5
    e8824b40:	bfa9                	j	e8824a9a <mDNS_DeregisterService_drt+0x6a>

00000000e8824b42 <ServiceCallback>:
{
    e8824b42:	7139                	addi	sp,sp,-64
    e8824b44:	f891540b          	sdd	s0,s1,(sp),0,4
    e8824b48:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8824b4c:	fc06                	sd	ra,56(sp)
    e8824b4e:	f85a                	sd	s6,48(sp)
    e8824b50:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8824b54:	89aa                	mv	s3,a0
    e8824b56:	84b2                	mv	s1,a2
    ServiceRecordSet *sr = (ServiceRecordSet *)rr->RecordContext;
    e8824b58:	79a0                	ld	s0,112(a1)
    if (result == mStatus_NoError && rr != &sr->RR_SRV) return;
    e8824b5a:	e625                	bnez	a2,e8824bc2 <ServiceCallback+0x80>
    e8824b5c:	6785                	lui	a5,0x1
    e8824b5e:	86078793          	addi	a5,a5,-1952 # 860 <memcmp-0xe87ff7a0>
    e8824b62:	97a2                	add	a5,a5,s0
    e8824b64:	0cf59f63          	bne	a1,a5,e8824c42 <ServiceCallback+0x100>
    LogInfo("ServiceCallback: All records %s for %##s", (result == mStatus_MemFree ? "Unregistered" : "Registered"), sr->RR_PTR.resrec.name->c);
    e8824b68:	000b0797          	auipc	a5,0xb0
    e8824b6c:	f0c78793          	addi	a5,a5,-244 # e88d4a74 <mDNS_LoggingEnabled>
    e8824b70:	439c                	lw	a5,0(a5)
    e8824b72:	c79d                	beqz	a5,e8824ba0 <ServiceCallback+0x5e>
    e8824b74:	77c1                	lui	a5,0xffff0
    e8824b76:	f0078793          	addi	a5,a5,-256 # fffffffffffeff00 <__DRAM0_INF_BASE+0xfffffffeffffff00>
    e8824b7a:	00082617          	auipc	a2,0x82
    e8824b7e:	54660613          	addi	a2,a2,1350 # e88a70c0 <end.8789+0x3a18>
    e8824b82:	00f48663          	beq	s1,a5,e8824b8e <ServiceCallback+0x4c>
    e8824b86:	00082617          	auipc	a2,0x82
    e8824b8a:	54a60613          	addi	a2,a2,1354 # e88a70d0 <end.8789+0x3a28>
    e8824b8e:	47843683          	ld	a3,1144(s0) # ffffffffffff0478 <__DRAM0_INF_BASE+0xffffffff00000478>
    e8824b92:	00082597          	auipc	a1,0x82
    e8824b96:	54e58593          	addi	a1,a1,1358 # e88a70e0 <end.8789+0x3a38>
    e8824b9a:	450d                	li	a0,3
    e8824b9c:	1110a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (sr->ServiceCallback)
    e8824ba0:	00043303          	ld	t1,0(s0)
    e8824ba4:	08030f63          	beqz	t1,e8824c42 <ServiceCallback+0x100>
        sr->ServiceCallback(m, sr, result);
    e8824ba8:	8626                	mv	a2,s1
    e8824baa:	85a2                	mv	a1,s0
}
    e8824bac:	f891440b          	ldd	s0,s1,(sp),0,4
    e8824bb0:	70e2                	ld	ra,56(sp)
    e8824bb2:	7b42                	ld	s6,48(sp)
    e8824bb4:	fd514a0b          	ldd	s4,s5,(sp),2,4
        sr->ServiceCallback(m, sr, result);
    e8824bb8:	854e                	mv	a0,s3
}
    e8824bba:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8824bbe:	6121                	addi	sp,sp,64
        sr->ServiceCallback(m, sr, result);
    e8824bc0:	8302                	jr	t1
    if (result == mStatus_NameConflict)
    e8824bc2:	77c1                	lui	a5,0xffff0
    e8824bc4:	ff478713          	addi	a4,a5,-12 # fffffffffffefff4 <__DRAM0_INF_BASE+0xfffffffefffffff4>
    e8824bc8:	02e61263          	bne	a2,a4,e8824bec <ServiceCallback+0xaa>
        sr->Conflict = mDNStrue;                // Record that this service set had a conflict
    e8824bcc:	4785                	li	a5,1
    e8824bce:	00f40823          	sb	a5,16(s0)
        mDNS_DeregisterService(m, sr);          // Unlink the records from our list
    e8824bd2:	85a2                	mv	a1,s0
}
    e8824bd4:	f891440b          	ldd	s0,s1,(sp),0,4
    e8824bd8:	70e2                	ld	ra,56(sp)
    e8824bda:	7b42                	ld	s6,48(sp)
    e8824bdc:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8824be0:	fd514a0b          	ldd	s4,s5,(sp),2,4
        mDNS_DeregisterService(m, sr);          // Unlink the records from our list
    e8824be4:	4601                	li	a2,0
}
    e8824be6:	6121                	addi	sp,sp,64
        mDNS_DeregisterService(m, sr);          // Unlink the records from our list
    e8824be8:	e49ff06f          	j	e8824a30 <mDNS_DeregisterService_drt>
    if (result == mStatus_MemFree)
    e8824bec:	f0078793          	addi	a5,a5,-256
    e8824bf0:	f6f61ce3          	bne	a2,a5,e8824b68 <ServiceCallback+0x26>
        if (sr->RR_SRV.resrec.RecordType != kDNSRecordTypeUnregistered) return;
    e8824bf4:	6785                	lui	a5,0x1
    e8824bf6:	97a2                	add	a5,a5,s0
    e8824bf8:	8687c703          	lbu	a4,-1944(a5) # 868 <memcmp-0xe87ff798>
    e8824bfc:	e339                	bnez	a4,e8824c42 <ServiceCallback+0x100>
        if (sr->RR_TXT.resrec.RecordType != kDNSRecordTypeUnregistered) return;
    e8824bfe:	c787c783          	lbu	a5,-904(a5)
    e8824c02:	e3a1                	bnez	a5,e8824c42 <ServiceCallback+0x100>
        if (sr->RR_PTR.resrec.RecordType != kDNSRecordTypeUnregistered) return;
    e8824c04:	45844783          	lbu	a5,1112(s0)
    e8824c08:	ef8d                	bnez	a5,e8824c42 <ServiceCallback+0x100>
        if (sr->RR_ADV.resrec.RecordType != kDNSRecordTypeUnregistered) return;
    e8824c0a:	04844783          	lbu	a5,72(s0)
    e8824c0e:	eb95                	bnez	a5,e8824c42 <ServiceCallback+0x100>
        for (i=0; i<sr->NumSubTypes; i++) if (sr->SubTypes[i].resrec.RecordType != kDNSRecordTypeUnregistered) return;
    e8824c10:	5014                	lw	a3,32(s0)
    e8824c12:	41000613          	li	a2,1040
    e8824c16:	0007871b          	sext.w	a4,a5
    e8824c1a:	00d76d63          	bltu	a4,a3,e8824c34 <ServiceCallback+0xf2>
        ExtraResourceRecord *e = sr->Extras;
    e8824c1e:	6c1c                	ld	a5,24(s0)
        while (e)
    e8824c20:	eb9d                	bnez	a5,e8824c56 <ServiceCallback+0x114>
    if (!sr->AnonData)
    e8824c22:	781c                	ld	a5,48(s0)
        ResetAnonInfoSRS(sr, sr->NumSubTypes);
    e8824c24:	8ab6                	mv	s5,a3
    if (!sr->AnonData)
    e8824c26:	ef8d                	bnez	a5,e8824c60 <ServiceCallback+0x11e>
        if (sr->Conflict) result = mStatus_NameConflict;
    e8824c28:	01044783          	lbu	a5,16(s0)
    e8824c2c:	df95                	beqz	a5,e8824b68 <ServiceCallback+0x26>
    e8824c2e:	74c1                	lui	s1,0xffff0
    e8824c30:	14d1                	addi	s1,s1,-12
    e8824c32:	bf1d                	j	e8824b68 <ServiceCallback+0x26>
        for (i=0; i<sr->NumSubTypes; i++) if (sr->SubTypes[i].resrec.RecordType != kDNSRecordTypeUnregistered) return;
    e8824c34:	7418                	ld	a4,40(s0)
    e8824c36:	20c7970b          	mula	a4,a5,a2
    e8824c3a:	0785                	addi	a5,a5,1
    e8824c3c:	00874703          	lbu	a4,8(a4)
    e8824c40:	db79                	beqz	a4,e8824c16 <ServiceCallback+0xd4>
}
    e8824c42:	70e2                	ld	ra,56(sp)
    e8824c44:	f891440b          	ldd	s0,s1,(sp),0,4
    e8824c48:	7b42                	ld	s6,48(sp)
    e8824c4a:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8824c4e:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8824c52:	6121                	addi	sp,sp,64
    e8824c54:	8082                	ret
            if (e->r.resrec.RecordType != kDNSRecordTypeUnregistered) return;
    e8824c56:	0187c703          	lbu	a4,24(a5)
    e8824c5a:	f765                	bnez	a4,e8824c42 <ServiceCallback+0x100>
            e = e->next;
    e8824c5c:	639c                	ld	a5,0(a5)
    e8824c5e:	b7c9                	j	e8824c20 <ServiceCallback+0xde>
    if (sr->RR_PTR.resrec.AnonInfo)
    e8824c60:	49043503          	ld	a0,1168(s0)
    e8824c64:	c509                	beqz	a0,e8824c6e <ServiceCallback+0x12c>
        FreeAnonInfo(sr->RR_PTR.resrec.AnonInfo);
    e8824c66:	b24f50ef          	jal	ra,e8819f8a <FreeAnonInfo>
        sr->RR_PTR.resrec.AnonInfo = mDNSNULL;
    e8824c6a:	48043823          	sd	zero,1168(s0)
        for (i=0; i<sr->NumSubTypes; i++) if (sr->SubTypes[i].resrec.RecordType != kDNSRecordTypeUnregistered) return;
    e8824c6e:	4901                	li	s2,0
    e8824c70:	41000b13          	li	s6,1040
    for (i=0; i<NumSubTypes; i++)
    e8824c74:	0009079b          	sext.w	a5,s2
    e8824c78:	fb57d8e3          	bge	a5,s5,e8824c28 <ServiceCallback+0xe6>
        if (sr->SubTypes[i].resrec.AnonInfo)
    e8824c7c:	03690a33          	mul	s4,s2,s6
    e8824c80:	7418                	ld	a4,40(s0)
    e8824c82:	9752                	add	a4,a4,s4
    e8824c84:	6328                	ld	a0,64(a4)
    e8824c86:	c519                	beqz	a0,e8824c94 <ServiceCallback+0x152>
            FreeAnonInfo(sr->SubTypes[i].resrec.AnonInfo);
    e8824c88:	b02f50ef          	jal	ra,e8819f8a <FreeAnonInfo>
            sr->SubTypes[i].resrec.AnonInfo = mDNSNULL;
    e8824c8c:	741c                	ld	a5,40(s0)
    e8824c8e:	97d2                	add	a5,a5,s4
    e8824c90:	0407b023          	sd	zero,64(a5)
    for (i=0; i<NumSubTypes; i++)
    e8824c94:	0905                	addi	s2,s2,1
    e8824c96:	bff9                	j	e8824c74 <ServiceCallback+0x132>

00000000e8824c98 <mDNS_RegisterNoSuchService>:
{
    e8824c98:	711d                	addi	sp,sp,-96
    e8824c9a:	e8a2                	sd	s0,80(sp)
    e8824c9c:	842e                	mv	s0,a1
    artype = setAuthRecType(InterfaceID, flags);
    e8824c9e:	55a6                	lw	a1,104(sp)
{
    e8824ca0:	e0ca                	sd	s2,64(sp)
    e8824ca2:	892a                	mv	s2,a0
    artype = setAuthRecType(InterfaceID, flags);
    e8824ca4:	8542                	mv	a0,a6
{
    e8824ca6:	ec86                	sd	ra,88(sp)
    e8824ca8:	e4a6                	sd	s1,72(sp)
    e8824caa:	fc4e                	sd	s3,56(sp)
    e8824cac:	f852                	sd	s4,48(sp)
    e8824cae:	f456                	sd	s5,40(sp)
    e8824cb0:	89b2                	mv	s3,a2
    e8824cb2:	8a36                	mv	s4,a3
    e8824cb4:	8aba                	mv	s5,a4
    e8824cb6:	84be                	mv	s1,a5
    e8824cb8:	ec46                	sd	a7,24(sp)
    artype = setAuthRecType(InterfaceID, flags);
    e8824cba:	e842                	sd	a6,16(sp)
    e8824cbc:	8a0f80ef          	jal	ra,e881cd5c <setAuthRecType>
    mDNS_SetupResourceRecord(rr, mDNSNULL, InterfaceID, kDNSType_SRV, kHostNameTTL, kDNSRecordTypeUnique, artype, Callback, Context);
    e8824cc0:	882a                	mv	a6,a0
    e8824cc2:	7786                	ld	a5,96(sp)
    e8824cc4:	6642                	ld	a2,16(sp)
    e8824cc6:	68e2                	ld	a7,24(sp)
    e8824cc8:	e03e                	sd	a5,0(sp)
    e8824cca:	02100693          	li	a3,33
    e8824cce:	4581                	li	a1,0
    e8824cd0:	8522                	mv	a0,s0
    e8824cd2:	4789                	li	a5,2
    e8824cd4:	07800713          	li	a4,120
    e8824cd8:	8f2ef0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    if (ConstructServiceName(&rr->namestorage, name, type, domain) == mDNSNULL) return(mStatus_BadParamErr);
    e8824cdc:	86d6                	mv	a3,s5
    e8824cde:	8652                	mv	a2,s4
    e8824ce0:	85ce                	mv	a1,s3
    e8824ce2:	20040513          	addi	a0,s0,512
    e8824ce6:	8c3ee0ef          	jal	ra,e88135a8 <ConstructServiceName>
    e8824cea:	c53d                	beqz	a0,e8824d58 <mDNS_RegisterNoSuchService+0xc0>
    rr->resrec.rdata->u.srv.priority    = 0;
    e8824cec:	781c                	ld	a5,48(s0)
    rr->resrec.rdata->u.srv.port        = zeroIPPort;
    e8824cee:	0007f717          	auipc	a4,0x7f
    e8824cf2:	8ba70713          	addi	a4,a4,-1862 # e88a35a8 <zeroIPPort>
    e8824cf6:	00075703          	lhu	a4,0(a4)
    rr->resrec.rdata->u.srv.priority    = 0;
    e8824cfa:	00079223          	sh	zero,4(a5)
    rr->resrec.rdata->u.srv.weight      = 0;
    e8824cfe:	781c                	ld	a5,48(s0)
    e8824d00:	00079323          	sh	zero,6(a5)
    rr->resrec.rdata->u.srv.port        = zeroIPPort;
    e8824d04:	781c                	ld	a5,48(s0)
    e8824d06:	00e79423          	sh	a4,8(a5)
    if (host && host->c[0]) AssignDomainName(&rr->resrec.rdata->u.srv.target, host);
    e8824d0a:	c0b9                	beqz	s1,e8824d50 <mDNS_RegisterNoSuchService+0xb8>
    e8824d0c:	0004c783          	lbu	a5,0(s1) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    e8824d10:	c3a1                	beqz	a5,e8824d50 <mDNS_RegisterNoSuchService+0xb8>
    e8824d12:	10048593          	addi	a1,s1,256
    e8824d16:	8526                	mv	a0,s1
    e8824d18:	c34ee0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8824d1c:	0005061b          	sext.w	a2,a0
    e8824d20:	10000713          	li	a4,256
    e8824d24:	7808                	ld	a0,48(s0)
    e8824d26:	02c76263          	bltu	a4,a2,e8824d4a <mDNS_RegisterNoSuchService+0xb2>
    e8824d2a:	85a6                	mv	a1,s1
    e8824d2c:	0529                	addi	a0,a0,10
    e8824d2e:	5730a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    return(mDNS_Register(m, rr));
    e8824d32:	85a2                	mv	a1,s0
}
    e8824d34:	6446                	ld	s0,80(sp)
    e8824d36:	60e6                	ld	ra,88(sp)
    e8824d38:	64a6                	ld	s1,72(sp)
    e8824d3a:	79e2                	ld	s3,56(sp)
    e8824d3c:	7a42                	ld	s4,48(sp)
    e8824d3e:	7aa2                	ld	s5,40(sp)
    return(mDNS_Register(m, rr));
    e8824d40:	854a                	mv	a0,s2
}
    e8824d42:	6906                	ld	s2,64(sp)
    e8824d44:	6125                	addi	sp,sp,96
    return(mDNS_Register(m, rr));
    e8824d46:	85bff06f          	j	e88245a0 <mDNS_Register>
    if (host && host->c[0]) AssignDomainName(&rr->resrec.rdata->u.srv.target, host);
    e8824d4a:	00050523          	sb	zero,10(a0)
    e8824d4e:	b7d5                	j	e8824d32 <mDNS_RegisterNoSuchService+0x9a>
    else rr->AutoTarget = Target_AutoHost;
    e8824d50:	4785                	li	a5,1
    e8824d52:	06f40c23          	sb	a5,120(s0)
    e8824d56:	bff1                	j	e8824d32 <mDNS_RegisterNoSuchService+0x9a>
}
    e8824d58:	60e6                	ld	ra,88(sp)
    e8824d5a:	6446                	ld	s0,80(sp)
    e8824d5c:	7541                	lui	a0,0xffff0
    e8824d5e:	64a6                	ld	s1,72(sp)
    e8824d60:	6906                	ld	s2,64(sp)
    e8824d62:	79e2                	ld	s3,56(sp)
    e8824d64:	7a42                	ld	s4,48(sp)
    e8824d66:	7aa2                	ld	s5,40(sp)
    e8824d68:	1571                	addi	a0,a0,-4
    e8824d6a:	6125                	addi	sp,sp,96
    e8824d6c:	8082                	ret

00000000e8824d6e <mDNS_RegisterService>:
{
    e8824d6e:	7121                	addi	sp,sp,-448
    e8824d70:	e35a                	sd	s6,384(sp)
    e8824d72:	8b3e                	mv	s6,a5
    e8824d74:	1c015783          	lhu	a5,448(sp)
    e8824d78:	eeee                	sd	s11,344(sp)
    e8824d7a:	1f012d83          	lw	s11,496(sp)
    e8824d7e:	f03e                	sd	a5,32(sp)
    mDNSu8 recordType = (flags & kDNSServiceFlagsKnownUnique) ? kDNSRecordTypeKnownUnique : kDNSRecordTypeUnique;
    e8824d80:	02000793          	li	a5,32
{
    e8824d84:	fb22                	sd	s0,432(sp)
    e8824d86:	f726                	sd	s1,424(sp)
    e8824d88:	eb52                	sd	s4,400(sp)
    e8824d8a:	fae2                	sd	s8,368(sp)
    e8824d8c:	f6e6                	sd	s9,360(sp)
    e8824d8e:	f2ea                	sd	s10,352(sp)
    mDNSu8 recordType = (flags & kDNSServiceFlagsKnownUnique) ? kDNSRecordTypeKnownUnique : kDNSRecordTypeUnique;
    e8824d90:	e83e                	sd	a5,16(sp)
{
    e8824d92:	ff06                	sd	ra,440(sp)
    e8824d94:	f34a                	sd	s2,416(sp)
    e8824d96:	ef4e                	sd	s3,408(sp)
    e8824d98:	e756                	sd	s5,392(sp)
    e8824d9a:	fede                	sd	s7,376(sp)
    e8824d9c:	f832                	sd	a2,48(sp)
    e8824d9e:	03011f23          	sh	a6,62(sp)
    e8824da2:	ec46                	sd	a7,24(sp)
    mDNSu8 recordType = (flags & kDNSServiceFlagsKnownUnique) ? kDNSRecordTypeKnownUnique : kDNSRecordTypeUnique;
    e8824da4:	034d9793          	slli	a5,s11,0x34
{
    e8824da8:	84aa                	mv	s1,a0
    e8824daa:	842e                	mv	s0,a1
    e8824dac:	8c36                	mv	s8,a3
    e8824dae:	8cba                	mv	s9,a4
    e8824db0:	1d012d03          	lw	s10,464(sp)
    e8824db4:	6a7e                	ld	s4,472(sp)
    mDNSu8 recordType = (flags & kDNSServiceFlagsKnownUnique) ? kDNSRecordTypeKnownUnique : kDNSRecordTypeUnique;
    e8824db6:	0007c463          	bltz	a5,e8824dbe <mDNS_RegisterService+0x50>
    e8824dba:	4789                	li	a5,2
    e8824dbc:	e83e                	sd	a5,16(sp)
    sr->ServiceCallback = Callback;
    e8824dbe:	779e                	ld	a5,480(sp)
    artype = setAuthRecType(InterfaceID, flags);
    e8824dc0:	85ee                	mv	a1,s11
    sr->Conflict        = mDNSfalse;
    e8824dc2:	00040823          	sb	zero,16(s0)
    sr->ServiceCallback = Callback;
    e8824dc6:	e01c                	sd	a5,0(s0)
    sr->ServiceContext  = Context;
    e8824dc8:	77be                	ld	a5,488(sp)
    sr->Extras          = mDNSNULL;
    e8824dca:	00043c23          	sd	zero,24(s0)
    sr->NumSubTypes     = NumSubTypes;
    e8824dce:	03a42023          	sw	s10,32(s0)
    sr->ServiceContext  = Context;
    e8824dd2:	e41c                	sd	a5,8(s0)
    sr->SubTypes        = SubTypes;
    e8824dd4:	67be                	ld	a5,456(sp)
    sr->flags           = flags;
    e8824dd6:	03b42c23          	sw	s11,56(s0)
    artype = setAuthRecType(InterfaceID, flags);
    e8824dda:	8552                	mv	a0,s4
    sr->SubTypes        = SubTypes;
    e8824ddc:	f41c                	sd	a5,40(s0)
    artype = setAuthRecType(InterfaceID, flags);
    e8824dde:	f7ff70ef          	jal	ra,e881cd5c <setAuthRecType>
    mDNS_SetupResourceRecord(&sr->RR_ADV, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeAdvisory, artype, ServiceCallback, sr);
    e8824de2:	6905                	lui	s2,0x1
    e8824de4:	04040793          	addi	a5,s0,64
    e8824de8:	882a                	mv	a6,a0
    artype = setAuthRecType(InterfaceID, flags);
    e8824dea:	8baa                	mv	s7,a0
    mDNS_SetupResourceRecord(&sr->RR_ADV, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeAdvisory, artype, ServiceCallback, sr);
    e8824dec:	e0be                	sd	a5,64(sp)
    e8824dee:	00000897          	auipc	a7,0x0
    e8824df2:	d5488893          	addi	a7,a7,-684 # e8824b42 <ServiceCallback>
    e8824df6:	4791                	li	a5,4
    e8824df8:	19490713          	addi	a4,s2,404 # 1194 <memcmp-0xe87fee6c>
    e8824dfc:	46b1                	li	a3,12
    e8824dfe:	8652                	mv	a2,s4
    e8824e00:	4581                	li	a1,0
    e8824e02:	04040513          	addi	a0,s0,64
    e8824e06:	e022                	sd	s0,0(sp)
    e8824e08:	fc3ee0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    mDNS_SetupResourceRecord(&sr->RR_PTR, mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShared,   artype, ServiceCallback, sr);
    e8824e0c:	e022                	sd	s0,0(sp)
    e8824e0e:	45040793          	addi	a5,s0,1104
    e8824e12:	e4be                	sd	a5,72(sp)
    e8824e14:	00000897          	auipc	a7,0x0
    e8824e18:	d2e88893          	addi	a7,a7,-722 # e8824b42 <ServiceCallback>
    e8824e1c:	47a1                	li	a5,8
    e8824e1e:	885e                	mv	a6,s7
    e8824e20:	19490713          	addi	a4,s2,404
    e8824e24:	46b1                	li	a3,12
    e8824e26:	8652                	mv	a2,s4
    e8824e28:	4581                	li	a1,0
    e8824e2a:	45040513          	addi	a0,s0,1104
    e8824e2e:	f9dee0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    if (flags & kDNSServiceFlagsWakeOnlyService)
    e8824e32:	027d9793          	slli	a5,s11,0x27
    e8824e36:	0007d563          	bgez	a5,e8824e40 <mDNS_RegisterService+0xd2>
        sr->RR_PTR.AuthFlags = AuthFlagsWakeOnly;
    e8824e3a:	4785                	li	a5,1
    e8824e3c:	4cf405a3          	sb	a5,1227(s0)
    if (SameDomainName(type, (const domainname *) "\x4" "_ubd" "\x4" "_tcp"))
    e8824e40:	00085597          	auipc	a1,0x85
    e8824e44:	6c858593          	addi	a1,a1,1736 # e88aa508 <mDNS_DomainTypeNames+0xb58>
    e8824e48:	8562                	mv	a0,s8
    e8824e4a:	a00ee0ef          	jal	ra,e881304a <SameDomainName>
        hostTTL = kHostNameSmallTTL;
    e8824e4e:	4729                	li	a4,10
    if (SameDomainName(type, (const domainname *) "\x4" "_ubd" "\x4" "_tcp"))
    e8824e50:	e119                	bnez	a0,e8824e56 <mDNS_RegisterService+0xe8>
        hostTTL = kHostNameTTL;
    e8824e52:	07800713          	li	a4,120
    mDNS_SetupResourceRecord(&sr->RR_SRV, mDNSNULL, InterfaceID, kDNSType_SRV, hostTTL, recordType, artype, ServiceCallback, sr);
    e8824e56:	6985                	lui	s3,0x1
    e8824e58:	67c2                	ld	a5,16(sp)
    e8824e5a:	86098913          	addi	s2,s3,-1952 # 860 <memcmp-0xe87ff7a0>
    e8824e5e:	9922                	add	s2,s2,s0
    e8824e60:	00000897          	auipc	a7,0x0
    e8824e64:	ce288893          	addi	a7,a7,-798 # e8824b42 <ServiceCallback>
    e8824e68:	885e                	mv	a6,s7
    e8824e6a:	02100693          	li	a3,33
    e8824e6e:	8652                	mv	a2,s4
    e8824e70:	4581                	li	a1,0
    e8824e72:	854a                	mv	a0,s2
    e8824e74:	e022                	sd	s0,0(sp)
    e8824e76:	f55ee0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    mDNS_SetupResourceRecord(&sr->RR_TXT, mDNSNULL, InterfaceID, kDNSType_TXT, kStandardTTL, recordType, artype, ServiceCallback, sr);
    e8824e7a:	c7098a93          	addi	s5,s3,-912
    e8824e7e:	67c2                	ld	a5,16(sp)
    e8824e80:	9aa2                	add	s5,s5,s0
    e8824e82:	e022                	sd	s0,0(sp)
    e8824e84:	00000897          	auipc	a7,0x0
    e8824e88:	cbe88893          	addi	a7,a7,-834 # e8824b42 <ServiceCallback>
    e8824e8c:	885e                	mv	a6,s7
    e8824e8e:	19498713          	addi	a4,s3,404
    e8824e92:	46c1                	li	a3,16
    e8824e94:	8652                	mv	a2,s4
    e8824e96:	4581                	li	a1,0
    e8824e98:	8556                	mv	a0,s5
    e8824e9a:	f31ee0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    if (mDNSIPPortIsZero(port))
    e8824e9e:	03e15783          	lhu	a5,62(sp)
    e8824ea2:	3c07b78b          	extu	a5,a5,15,0
    e8824ea6:	e3a1                	bnez	a5,e8824ee6 <mDNS_RegisterService+0x178>
        return(mDNS_RegisterNoSuchService(m, &sr->RR_SRV, name, type, domain, mDNSNULL, InterfaceID, NSSCallback, sr, flags));
    e8824ea8:	7642                	ld	a2,48(sp)
    e8824eaa:	85ca                	mv	a1,s2
    e8824eac:	e46e                	sd	s11,8(sp)
    e8824eae:	e022                	sd	s0,0(sp)
    e8824eb0:	ffff7897          	auipc	a7,0xffff7
    e8824eb4:	b1e88893          	addi	a7,a7,-1250 # e881b9ce <NSSCallback>
    e8824eb8:	8852                	mv	a6,s4
    e8824eba:	8766                	mv	a4,s9
    e8824ebc:	86e2                	mv	a3,s8
    e8824ebe:	8526                	mv	a0,s1
    e8824ec0:	dd9ff0ef          	jal	ra,e8824c98 <mDNS_RegisterNoSuchService>
    e8824ec4:	892a                	mv	s2,a0
}
    e8824ec6:	70fa                	ld	ra,440(sp)
    e8824ec8:	745a                	ld	s0,432(sp)
    e8824eca:	854a                	mv	a0,s2
    e8824ecc:	74ba                	ld	s1,424(sp)
    e8824ece:	791a                	ld	s2,416(sp)
    e8824ed0:	69fa                	ld	s3,408(sp)
    e8824ed2:	6a5a                	ld	s4,400(sp)
    e8824ed4:	6aba                	ld	s5,392(sp)
    e8824ed6:	6b1a                	ld	s6,384(sp)
    e8824ed8:	7bf6                	ld	s7,376(sp)
    e8824eda:	7c56                	ld	s8,368(sp)
    e8824edc:	7cb6                	ld	s9,360(sp)
    e8824ede:	7d16                	ld	s10,352(sp)
    e8824ee0:	6df6                	ld	s11,344(sp)
    e8824ee2:	6139                	addi	sp,sp,448
    e8824ee4:	8082                	ret
    if (sr->RR_TXT.resrec.rdata->MaxRDLength < txtlen)
    e8824ee6:	01340333          	add	t1,s0,s3
    e8824eea:	ca033783          	ld	a5,-864(t1) # 1ca0 <memcmp-0xe87fe360>
    e8824eee:	5682                	lw	a3,32(sp)
    e8824ef0:	0007d703          	lhu	a4,0(a5)
    e8824ef4:	f436                	sd	a3,40(sp)
    e8824ef6:	00d77563          	bgeu	a4,a3,e8824f00 <mDNS_RegisterService+0x192>
        sr->RR_TXT.resrec.rdata->MaxRDLength = txtlen;
    e8824efa:	7702                	ld	a4,32(sp)
    e8824efc:	00e79023          	sh	a4,0(a5)
    if (ConstructServiceName(&sr->RR_ADV.namestorage, (const domainlabel*)"\x09_services", (const domainname*)"\x07_dns-sd\x04_udp", domain) == mDNSNULL)
    e8824f00:	86e6                	mv	a3,s9
    e8824f02:	00085617          	auipc	a2,0x85
    e8824f06:	61660613          	addi	a2,a2,1558 # e88aa518 <mDNS_DomainTypeNames+0xb68>
    e8824f0a:	00085597          	auipc	a1,0x85
    e8824f0e:	61e58593          	addi	a1,a1,1566 # e88aa528 <mDNS_DomainTypeNames+0xb78>
    e8824f12:	24040513          	addi	a0,s0,576
    e8824f16:	e92ee0ef          	jal	ra,e88135a8 <ConstructServiceName>
    e8824f1a:	e501                	bnez	a0,e8824f22 <mDNS_RegisterService+0x1b4>
        if (ConstructServiceName(&sr->SubTypes[i].namestorage, mDNSNULL, &st, domain) == mDNSNULL) return(mStatus_BadParamErr);
    e8824f1c:	7941                	lui	s2,0xffff0
    e8824f1e:	1971                	addi	s2,s2,-4
    e8824f20:	b75d                	j	e8824ec6 <mDNS_RegisterService+0x158>
    if (ConstructServiceName(&sr->RR_PTR.namestorage, mDNSNULL, type, domain) == mDNSNULL) return(mStatus_BadParamErr);
    e8824f22:	86e6                	mv	a3,s9
    e8824f24:	8662                	mv	a2,s8
    e8824f26:	4581                	li	a1,0
    e8824f28:	65040513          	addi	a0,s0,1616
    e8824f2c:	e7cee0ef          	jal	ra,e88135a8 <ConstructServiceName>
    e8824f30:	d575                	beqz	a0,e8824f1c <mDNS_RegisterService+0x1ae>
    if (ConstructServiceName(&sr->RR_SRV.namestorage, name,     type, domain) == mDNSNULL) return(mStatus_BadParamErr);
    e8824f32:	6d85                	lui	s11,0x1
    e8824f34:	a60d8713          	addi	a4,s11,-1440 # a60 <memcmp-0xe87ff5a0>
    e8824f38:	75c2                	ld	a1,48(sp)
    e8824f3a:	00e407b3          	add	a5,s0,a4
    e8824f3e:	86e6                	mv	a3,s9
    e8824f40:	8662                	mv	a2,s8
    e8824f42:	853e                	mv	a0,a5
    e8824f44:	e83e                	sd	a5,16(sp)
    e8824f46:	e62ee0ef          	jal	ra,e88135a8 <ConstructServiceName>
    e8824f4a:	d969                	beqz	a0,e8824f1c <mDNS_RegisterService+0x1ae>
    AssignDomainName(&sr->RR_TXT.namestorage, sr->RR_SRV.resrec.name);
    e8824f4c:	01b409b3          	add	s3,s0,s11
    e8824f50:	8889b503          	ld	a0,-1912(s3)
    e8824f54:	10050593          	addi	a1,a0,256 # ffffffffffff0100 <__DRAM0_INF_BASE+0xffffffff00000100>
    e8824f58:	9f4ee0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8824f5c:	0005061b          	sext.w	a2,a0
    e8824f60:	10000713          	li	a4,256
    e8824f64:	0ac76e63          	bltu	a4,a2,e8825020 <mDNS_RegisterService+0x2b2>
    e8824f68:	8889b583          	ld	a1,-1912(s3)
    e8824f6c:	e70d8793          	addi	a5,s11,-400
    e8824f70:	00f40533          	add	a0,s0,a5
    e8824f74:	32d0a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    AssignDomainName(&sr->RR_ADV.resrec.rdata->u.name, sr->RR_PTR.resrec.name);
    e8824f78:	47843503          	ld	a0,1144(s0)
    e8824f7c:	10050593          	addi	a1,a0,256
    e8824f80:	9ccee0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8824f84:	0005061b          	sext.w	a2,a0
    e8824f88:	10000713          	li	a4,256
    e8824f8c:	7828                	ld	a0,112(s0)
    e8824f8e:	08c76c63          	bltu	a4,a2,e8825026 <mDNS_RegisterService+0x2b8>
    e8824f92:	47843583          	ld	a1,1144(s0)
    e8824f96:	0511                	addi	a0,a0,4
    e8824f98:	3090a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    AssignDomainName(&sr->RR_PTR.resrec.rdata->u.name, sr->RR_SRV.resrec.name);
    e8824f9c:	6985                	lui	s3,0x1
    e8824f9e:	99a2                	add	s3,s3,s0
    e8824fa0:	8889b503          	ld	a0,-1912(s3) # 888 <memcmp-0xe87ff778>
    e8824fa4:	10050593          	addi	a1,a0,256
    e8824fa8:	9a4ee0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8824fac:	0005061b          	sext.w	a2,a0
    e8824fb0:	10000713          	li	a4,256
    e8824fb4:	48043503          	ld	a0,1152(s0)
    e8824fb8:	06c76a63          	bltu	a4,a2,e882502c <mDNS_RegisterService+0x2be>
    e8824fbc:	8889b583          	ld	a1,-1912(s3)
    e8824fc0:	0511                	addi	a0,a0,4
    e8824fc2:	2df0a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        mDNS_SetupResourceRecord(&sr->SubTypes[i], mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShared, artype, ServiceCallback, sr);
    e8824fc6:	6785                	lui	a5,0x1
        AssignDomainName(&sr->SubTypes[i].resrec.rdata->u.name, &sr->RR_SRV.namestorage);
    e8824fc8:	b6078793          	addi	a5,a5,-1184 # b60 <memcmp-0xe87ff4a0>
    e8824fcc:	97a2                	add	a5,a5,s0
    sr->RR_PTR.Additional1 = &sr->RR_SRV;
    e8824fce:	49243c23          	sd	s2,1176(s0)
    sr->RR_PTR.Additional2 = &sr->RR_TXT;
    e8824fd2:	4b543023          	sd	s5,1184(s0)
    for (i=0; i<NumSubTypes; i++)
    e8824fd6:	4d81                	li	s11,0
        AssignDomainName(&sr->SubTypes[i].resrec.rdata->u.name, &sr->RR_SRV.namestorage);
    e8824fd8:	f83e                	sd	a5,48(sp)
    for (i=0; i<NumSubTypes; i++)
    e8824fda:	000d879b          	sext.w	a5,s11
    e8824fde:	05a7ea63          	bltu	a5,s10,e8825032 <mDNS_RegisterService+0x2c4>
    if (!sr->AnonData)
    e8824fe2:	7808                	ld	a0,48(s0)
    e8824fe4:	10051663          	bnez	a0,e88250f0 <mDNS_RegisterService+0x382>
    sr->RR_SRV.resrec.rdata->u.srv.priority = 0;
    e8824fe8:	6985                	lui	s3,0x1
    e8824fea:	99a2                	add	s3,s3,s0
    e8824fec:	8909b783          	ld	a5,-1904(s3) # 890 <memcmp-0xe87ff770>
    sr->RR_SRV.resrec.rdata->u.srv.port     = port;
    e8824ff0:	03e15703          	lhu	a4,62(sp)
    sr->RR_SRV.resrec.rdata->u.srv.priority = 0;
    e8824ff4:	00079223          	sh	zero,4(a5)
    sr->RR_SRV.resrec.rdata->u.srv.weight   = 0;
    e8824ff8:	8909b783          	ld	a5,-1904(s3)
    e8824ffc:	00079323          	sh	zero,6(a5)
    sr->RR_SRV.resrec.rdata->u.srv.port     = port;
    e8825000:	8909b783          	ld	a5,-1904(s3)
    e8825004:	00e79423          	sh	a4,8(a5)
    if (host && host->c[0]) AssignDomainName(&sr->RR_SRV.resrec.rdata->u.srv.target, host);
    e8825008:	160b1a63          	bnez	s6,e882517c <mDNS_RegisterService+0x40e>
    else { sr->RR_SRV.AutoTarget = Target_AutoHost; sr->RR_SRV.resrec.rdata->u.srv.target.c[0] = '\0'; }
    e882500c:	6785                	lui	a5,0x1
    e882500e:	97a2                	add	a5,a5,s0
    e8825010:	4705                	li	a4,1
    e8825012:	8ce78c23          	sb	a4,-1832(a5) # 8d8 <memcmp-0xe87ff728>
    e8825016:	8907b783          	ld	a5,-1904(a5)
    e882501a:	00078523          	sb	zero,10(a5)
    e882501e:	a261                	j	e88251a6 <mDNS_RegisterService+0x438>
    AssignDomainName(&sr->RR_TXT.namestorage, sr->RR_SRV.resrec.name);
    e8825020:	e6098823          	sb	zero,-400(s3)
    e8825024:	bf91                	j	e8824f78 <mDNS_RegisterService+0x20a>
    AssignDomainName(&sr->RR_ADV.resrec.rdata->u.name, sr->RR_PTR.resrec.name);
    e8825026:	00050223          	sb	zero,4(a0)
    e882502a:	bf8d                	j	e8824f9c <mDNS_RegisterService+0x22e>
    AssignDomainName(&sr->RR_PTR.resrec.rdata->u.name, sr->RR_SRV.resrec.name);
    e882502c:	00050223          	sb	zero,4(a0)
    e8825030:	bf59                	j	e8824fc6 <mDNS_RegisterService+0x258>
        AssignDomainName(&st, sr->SubTypes[i].resrec.name);
    e8825032:	41000793          	li	a5,1040
    e8825036:	02fd89b3          	mul	s3,s11,a5
    e882503a:	741c                	ld	a5,40(s0)
    e882503c:	97ce                	add	a5,a5,s3
    e882503e:	7788                	ld	a0,40(a5)
    e8825040:	10050593          	addi	a1,a0,256
    e8825044:	908ee0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8825048:	0005061b          	sext.w	a2,a0
    e882504c:	10000793          	li	a5,256
    e8825050:	08c7e963          	bltu	a5,a2,e88250e2 <mDNS_RegisterService+0x374>
    e8825054:	741c                	ld	a5,40(s0)
    e8825056:	0888                	addi	a0,sp,80
    e8825058:	97ce                	add	a5,a5,s3
    e882505a:	778c                	ld	a1,40(a5)
    e882505c:	2450a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        st.c[1+st.c[0]] = 0;            // Only want the first label, not the whole FQDN (particularly for mDNS_RenameAndReregisterService())
    e8825060:	05014783          	lbu	a5,80(sp)
    e8825064:	0898                	addi	a4,sp,80
        AppendDomainName(&st, type);
    e8825066:	85e2                	mv	a1,s8
        st.c[1+st.c[0]] = 0;            // Only want the first label, not the whole FQDN (particularly for mDNS_RenameAndReregisterService())
    e8825068:	0785                	addi	a5,a5,1
        AppendDomainName(&st, type);
    e882506a:	853a                	mv	a0,a4
        st.c[1+st.c[0]] = 0;            // Only want the first label, not the whole FQDN (particularly for mDNS_RenameAndReregisterService())
    e882506c:	00f7500b          	srb	zero,a4,a5,0
        AppendDomainName(&st, type);
    e8825070:	bccee0ef          	jal	ra,e881343c <AppendDomainName>
        mDNS_SetupResourceRecord(&sr->SubTypes[i], mDNSNULL, InterfaceID, kDNSType_PTR, kStandardTTL, kDNSRecordTypeShared, artype, ServiceCallback, sr);
    e8825074:	e022                	sd	s0,0(sp)
    e8825076:	7408                	ld	a0,40(s0)
    e8825078:	6705                	lui	a4,0x1
    e882507a:	46b1                	li	a3,12
    e882507c:	8652                	mv	a2,s4
    e882507e:	4581                	li	a1,0
    e8825080:	954e                	add	a0,a0,s3
    e8825082:	00000897          	auipc	a7,0x0
    e8825086:	ac088893          	addi	a7,a7,-1344 # e8824b42 <ServiceCallback>
    e882508a:	885e                	mv	a6,s7
    e882508c:	47a1                	li	a5,8
    e882508e:	19470713          	addi	a4,a4,404 # 1194 <memcmp-0xe87fee6c>
    e8825092:	d39ee0ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
        if (ConstructServiceName(&sr->SubTypes[i].namestorage, mDNSNULL, &st, domain) == mDNSNULL) return(mStatus_BadParamErr);
    e8825096:	7408                	ld	a0,40(s0)
    e8825098:	86e6                	mv	a3,s9
    e882509a:	0890                	addi	a2,sp,80
    e882509c:	954e                	add	a0,a0,s3
    e882509e:	4581                	li	a1,0
    e88250a0:	20050513          	addi	a0,a0,512
    e88250a4:	d04ee0ef          	jal	ra,e88135a8 <ConstructServiceName>
    e88250a8:	e6050ae3          	beqz	a0,e8824f1c <mDNS_RegisterService+0x1ae>
        AssignDomainName(&sr->SubTypes[i].resrec.rdata->u.name, &sr->RR_SRV.namestorage);
    e88250ac:	75c2                	ld	a1,48(sp)
    e88250ae:	6542                	ld	a0,16(sp)
    e88250b0:	89cee0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88250b4:	0005061b          	sext.w	a2,a0
    e88250b8:	741c                	ld	a5,40(s0)
    e88250ba:	10000713          	li	a4,256
    e88250be:	97ce                	add	a5,a5,s3
    e88250c0:	02c76463          	bltu	a4,a2,e88250e8 <mDNS_RegisterService+0x37a>
    e88250c4:	7b88                	ld	a0,48(a5)
    e88250c6:	65c2                	ld	a1,16(sp)
    e88250c8:	0511                	addi	a0,a0,4
    e88250ca:	1d70a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        sr->SubTypes[i].Additional1 = &sr->RR_SRV;
    e88250ce:	741c                	ld	a5,40(s0)
    e88250d0:	0d85                	addi	s11,s11,1
    e88250d2:	97ce                	add	a5,a5,s3
    e88250d4:	0527b423          	sd	s2,72(a5)
        sr->SubTypes[i].Additional2 = &sr->RR_TXT;
    e88250d8:	741c                	ld	a5,40(s0)
    e88250da:	99be                	add	s3,s3,a5
    e88250dc:	0559b823          	sd	s5,80(s3)
    for (i=0; i<NumSubTypes; i++)
    e88250e0:	bded                	j	e8824fda <mDNS_RegisterService+0x26c>
        AssignDomainName(&st, sr->SubTypes[i].resrec.name);
    e88250e2:	04010823          	sb	zero,80(sp)
    e88250e6:	bfad                	j	e8825060 <mDNS_RegisterService+0x2f2>
        AssignDomainName(&sr->SubTypes[i].resrec.rdata->u.name, &sr->RR_SRV.namestorage);
    e88250e8:	7b9c                	ld	a5,48(a5)
    e88250ea:	00078223          	sb	zero,4(a5)
    e88250ee:	b7c5                	j	e88250ce <mDNS_RegisterService+0x360>
    len = mDNSPlatformStrLen(sr->AnonData);
    e88250f0:	1ad0a0ef          	jal	ra,e882fa9c <mDNSPlatformStrLen>
    e88250f4:	0005099b          	sext.w	s3,a0
    if (sr->RR_PTR.resrec.AnonInfo)
    e88250f8:	49043783          	ld	a5,1168(s0)
    e88250fc:	cf91                	beqz	a5,e8825118 <mDNS_RegisterService+0x3aa>
        LogMsg("SetAnonInfoSRS: Freeing AnonInfo for PTR record %##s, should have been freed already", sr->RR_PTR.resrec.name->c);
    e88250fe:	47843603          	ld	a2,1144(s0)
    e8825102:	4501                	li	a0,0
    e8825104:	00085597          	auipc	a1,0x85
    e8825108:	43458593          	addi	a1,a1,1076 # e88aa538 <mDNS_DomainTypeNames+0xb88>
    e882510c:	3a00a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        FreeAnonInfo(sr->RR_PTR.resrec.AnonInfo);
    e8825110:	49043503          	ld	a0,1168(s0)
    e8825114:	e77f40ef          	jal	ra,e8819f8a <FreeAnonInfo>
    sr->RR_PTR.resrec.AnonInfo = AllocateAnonInfo(sr->RR_PTR.resrec.name, sr->AnonData, len, mDNSNULL);
    e8825118:	780c                	ld	a1,48(s0)
    e882511a:	47843503          	ld	a0,1144(s0)
    e882511e:	4681                	li	a3,0
    e8825120:	864e                	mv	a2,s3
    e8825122:	caff40ef          	jal	ra,e8819dd0 <AllocateAnonInfo>
    SetAnonInfoSRS(sr, NumSubTypes);
    e8825126:	8c6a                	mv	s8,s10
    sr->RR_PTR.resrec.AnonInfo = AllocateAnonInfo(sr->RR_PTR.resrec.name, sr->AnonData, len, mDNSNULL);
    e8825128:	48a43823          	sd	a0,1168(s0)
    e882512c:	4c81                	li	s9,0
    e882512e:	41000b93          	li	s7,1040
            LogMsg("SetAnonInfoSRS: Freeing AnonInfo for subtype record %##s, should have been freed already", sr->SubTypes[i].resrec.name->c);
    e8825132:	00085d97          	auipc	s11,0x85
    e8825136:	45ed8d93          	addi	s11,s11,1118 # e88aa590 <mDNS_DomainTypeNames+0xbe0>
    for (i=0; i<NumSubTypes; i++)
    e882513a:	000c879b          	sext.w	a5,s9
    e882513e:	eb87d5e3          	bge	a5,s8,e8824fe8 <mDNS_RegisterService+0x27a>
        if (sr->SubTypes[i].resrec.AnonInfo)
    e8825142:	037c8a33          	mul	s4,s9,s7
    e8825146:	7418                	ld	a4,40(s0)
    e8825148:	9752                	add	a4,a4,s4
    e882514a:	633c                	ld	a5,64(a4)
    e882514c:	cb99                	beqz	a5,e8825162 <mDNS_RegisterService+0x3f4>
            LogMsg("SetAnonInfoSRS: Freeing AnonInfo for subtype record %##s, should have been freed already", sr->SubTypes[i].resrec.name->c);
    e882514e:	7710                	ld	a2,40(a4)
    e8825150:	4501                	li	a0,0
    e8825152:	85ee                	mv	a1,s11
    e8825154:	3580a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            FreeAnonInfo(sr->SubTypes[i].resrec.AnonInfo);
    e8825158:	741c                	ld	a5,40(s0)
    e882515a:	97d2                	add	a5,a5,s4
    e882515c:	63a8                	ld	a0,64(a5)
    e882515e:	e2df40ef          	jal	ra,e8819f8a <FreeAnonInfo>
        sr->SubTypes[i].resrec.AnonInfo = AllocateAnonInfo(sr->SubTypes[i].resrec.name, sr->AnonData, len, mDNSNULL);
    e8825162:	741c                	ld	a5,40(s0)
    e8825164:	780c                	ld	a1,48(s0)
    e8825166:	4681                	li	a3,0
    e8825168:	97d2                	add	a5,a5,s4
    e882516a:	7788                	ld	a0,40(a5)
    e882516c:	864e                	mv	a2,s3
    e882516e:	e83e                	sd	a5,16(sp)
    e8825170:	c61f40ef          	jal	ra,e8819dd0 <AllocateAnonInfo>
    e8825174:	0c85                	addi	s9,s9,1
    e8825176:	67c2                	ld	a5,16(sp)
    e8825178:	e3a8                	sd	a0,64(a5)
    for (i=0; i<NumSubTypes; i++)
    e882517a:	b7c1                	j	e882513a <mDNS_RegisterService+0x3cc>
    if (host && host->c[0]) AssignDomainName(&sr->RR_SRV.resrec.rdata->u.srv.target, host);
    e882517c:	000b4783          	lbu	a5,0(s6)
    e8825180:	e80786e3          	beqz	a5,e882500c <mDNS_RegisterService+0x29e>
    e8825184:	100b0593          	addi	a1,s6,256
    e8825188:	855a                	mv	a0,s6
    e882518a:	fc3ed0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882518e:	0005061b          	sext.w	a2,a0
    e8825192:	10000713          	li	a4,256
    e8825196:	8909b503          	ld	a0,-1904(s3)
    e882519a:	04c76563          	bltu	a4,a2,e88251e4 <mDNS_RegisterService+0x476>
    e882519e:	85da                	mv	a1,s6
    e88251a0:	0529                	addi	a0,a0,10
    e88251a2:	0ff0a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    if (txtinfo == mDNSNULL) sr->RR_TXT.resrec.rdlength = 0;
    e88251a6:	67e2                	ld	a5,24(sp)
    e88251a8:	e3a9                	bnez	a5,e88251ea <mDNS_RegisterService+0x47c>
    e88251aa:	6785                	lui	a5,0x1
    e88251ac:	97a2                	add	a5,a5,s0
    e88251ae:	c8079223          	sh	zero,-892(a5) # c84 <memcmp-0xe87ff37c>
    sr->RR_TXT.DependentOn = &sr->RR_SRV;
    e88251b2:	6785                	lui	a5,0x1
    e88251b4:	97a2                	add	a5,a5,s0
    e88251b6:	cd27b423          	sd	s2,-824(a5) # cc8 <memcmp-0xe87ff338>
    mDNS_Lock(m);
    e88251ba:	00083597          	auipc	a1,0x83
    e88251be:	c9e58593          	addi	a1,a1,-866 # e88a7e58 <__func__.12662>
    e88251c2:	8526                	mv	a0,s1
    e88251c4:	83ff00ef          	jal	ra,e8815a02 <mDNS_Lock_>
    err = mDNS_Register_internal(m, &sr->RR_SRV);
    e88251c8:	85ca                	mv	a1,s2
    e88251ca:	8526                	mv	a0,s1
    e88251cc:	8affc0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    e88251d0:	892a                	mv	s2,a0
    if (err)
    e88251d2:	c131                	beqz	a0,e8825216 <mDNS_RegisterService+0x4a8>
        mDNS_Unlock(m);
    e88251d4:	00083597          	auipc	a1,0x83
    e88251d8:	c8458593          	addi	a1,a1,-892 # e88a7e58 <__func__.12662>
    e88251dc:	8526                	mv	a0,s1
    e88251de:	8eff00ef          	jal	ra,e8815acc <mDNS_Unlock_>
        return err;
    e88251e2:	b1d5                	j	e8824ec6 <mDNS_RegisterService+0x158>
    if (host && host->c[0]) AssignDomainName(&sr->RR_SRV.resrec.rdata->u.srv.target, host);
    e88251e4:	00050523          	sb	zero,10(a0)
    e88251e8:	bf7d                	j	e88251a6 <mDNS_RegisterService+0x438>
    else if (txtinfo != sr->RR_TXT.resrec.rdata->u.txt.c)
    e88251ea:	6785                	lui	a5,0x1
    e88251ec:	97a2                	add	a5,a5,s0
    e88251ee:	ca07b703          	ld	a4,-864(a5) # ca0 <memcmp-0xe87ff360>
    e88251f2:	66e2                	ld	a3,24(sp)
    e88251f4:	00470513          	addi	a0,a4,4
    e88251f8:	fad50de3          	beq	a0,a3,e88251b2 <mDNS_RegisterService+0x444>
        sr->RR_TXT.resrec.rdlength = txtlen;
    e88251fc:	7682                	ld	a3,32(sp)
    e88251fe:	c8d79223          	sh	a3,-892(a5)
        if (sr->RR_TXT.resrec.rdlength > sr->RR_TXT.resrec.rdata->MaxRDLength) return(mStatus_BadParamErr);
    e8825202:	00075783          	lhu	a5,0(a4)
    e8825206:	7722                	ld	a4,40(sp)
    e8825208:	d0e7eae3          	bltu	a5,a4,e8824f1c <mDNS_RegisterService+0x1ae>
        mDNSPlatformMemCopy(sr->RR_TXT.resrec.rdata->u.txt.c, txtinfo, txtlen);
    e882520c:	65e2                	ld	a1,24(sp)
    e882520e:	863a                	mv	a2,a4
    e8825210:	0910a0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    e8825214:	bf79                	j	e88251b2 <mDNS_RegisterService+0x444>
    if (!err) err = mDNS_Register_internal(m, &sr->RR_TXT);
    e8825216:	85d6                	mv	a1,s5
    e8825218:	8526                	mv	a0,s1
    e882521a:	861fc0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    e882521e:	892a                	mv	s2,a0
    if (!err) err = mDNS_Register_internal(m, &sr->RR_ADV);
    e8825220:	e511                	bnez	a0,e882522c <mDNS_RegisterService+0x4be>
    e8825222:	6586                	ld	a1,64(sp)
    e8825224:	8526                	mv	a0,s1
    e8825226:	855fc0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    e882522a:	892a                	mv	s2,a0
    sr->RR_PTR.resrec.AnonInfo = AllocateAnonInfo(sr->RR_PTR.resrec.name, sr->AnonData, len, mDNSNULL);
    e882522c:	4981                	li	s3,0
    for (i=0; i<NumSubTypes; i++) if (!err) err = mDNS_Register_internal(m, &sr->SubTypes[i]);
    e882522e:	41000a13          	li	s4,1040
    e8825232:	0009879b          	sext.w	a5,s3
    e8825236:	03a7e863          	bltu	a5,s10,e8825266 <mDNS_RegisterService+0x4f8>
    if (!err) err = mDNS_Register_internal(m, &sr->RR_PTR);
    e882523a:	00091763          	bnez	s2,e8825248 <mDNS_RegisterService+0x4da>
    e882523e:	65a6                	ld	a1,72(sp)
    e8825240:	8526                	mv	a0,s1
    e8825242:	839fc0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    e8825246:	892a                	mv	s2,a0
    mDNS_Unlock(m);
    e8825248:	00083597          	auipc	a1,0x83
    e882524c:	c1058593          	addi	a1,a1,-1008 # e88a7e58 <__func__.12662>
    e8825250:	8526                	mv	a0,s1
    e8825252:	87bf00ef          	jal	ra,e8815acc <mDNS_Unlock_>
    if (err) mDNS_DeregisterService(m, sr);
    e8825256:	c60908e3          	beqz	s2,e8824ec6 <mDNS_RegisterService+0x158>
    e882525a:	4601                	li	a2,0
    e882525c:	85a2                	mv	a1,s0
    e882525e:	8526                	mv	a0,s1
    e8825260:	fd0ff0ef          	jal	ra,e8824a30 <mDNS_DeregisterService_drt>
    e8825264:	b18d                	j	e8824ec6 <mDNS_RegisterService+0x158>
    for (i=0; i<NumSubTypes; i++) if (!err) err = mDNS_Register_internal(m, &sr->SubTypes[i]);
    e8825266:	00091963          	bnez	s2,e8825278 <mDNS_RegisterService+0x50a>
    e882526a:	740c                	ld	a1,40(s0)
    e882526c:	8526                	mv	a0,s1
    e882526e:	2149958b          	mula	a1,s3,s4
    e8825272:	809fc0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    e8825276:	892a                	mv	s2,a0
    e8825278:	0985                	addi	s3,s3,1
    e882527a:	bf65                	j	e8825232 <mDNS_RegisterService+0x4c4>

00000000e882527c <mDNS_RenameAndReregisterService>:
    const domainname *host = sr->RR_SRV.AutoTarget ? mDNSNULL : &sr->RR_SRV.resrec.rdata->u.srv.target;
    e882527c:	6785                	lui	a5,0x1
{
    e882527e:	d1010113          	addi	sp,sp,-752
    const domainname *host = sr->RR_SRV.AutoTarget ? mDNSNULL : &sr->RR_SRV.resrec.rdata->u.srv.target;
    e8825282:	97ae                	add	a5,a5,a1
{
    e8825284:	2e813023          	sd	s0,736(sp)
    e8825288:	2c913c23          	sd	s1,728(sp)
    e882528c:	2d313423          	sd	s3,712(sp)
    e8825290:	2d413023          	sd	s4,704(sp)
    e8825294:	2e113423          	sd	ra,744(sp)
    e8825298:	2d213823          	sd	s2,720(sp)
    const domainname *host = sr->RR_SRV.AutoTarget ? mDNSNULL : &sr->RR_SRV.resrec.rdata->u.srv.target;
    e882529c:	8d87c703          	lbu	a4,-1832(a5) # 8d8 <memcmp-0xe87ff728>
{
    e88252a0:	8a2a                	mv	s4,a0
    e88252a2:	842e                	mv	s0,a1
    e88252a4:	84b2                	mv	s1,a2
    e88252a6:	4981                	li	s3,0
    const domainname *host = sr->RR_SRV.AutoTarget ? mDNSNULL : &sr->RR_SRV.resrec.rdata->u.srv.target;
    e88252a8:	e701                	bnez	a4,e88252b0 <mDNS_RenameAndReregisterService+0x34>
    e88252aa:	8907b983          	ld	s3,-1904(a5)
    e88252ae:	09a9                	addi	s3,s3,10
    DeconstructServiceName(sr->RR_SRV.resrec.name, &name1, &type, &domain);
    e88252b0:	6785                	lui	a5,0x1
    e88252b2:	97a2                	add	a5,a5,s0
    e88252b4:	8887b503          	ld	a0,-1912(a5) # 888 <memcmp-0xe87ff778>
    e88252b8:	0394                	addi	a3,sp,448
    e88252ba:	0190                	addi	a2,sp,192
    e88252bc:	008c                	addi	a1,sp,64
    ExtraResourceRecord *extras = sr->Extras;
    e88252be:	01843903          	ld	s2,24(s0)
    DeconstructServiceName(sr->RR_SRV.resrec.name, &name1, &type, &domain);
    e88252c2:	d9aee0ef          	jal	ra,e881385c <DeconstructServiceName>
    if (!newname)
    e88252c6:	ec81                	bnez	s1,e88252de <mDNS_RenameAndReregisterService+0x62>
        name2 = name1;
    e88252c8:	04000613          	li	a2,64
    e88252cc:	008c                	addi	a1,sp,64
    e88252ce:	0108                	addi	a0,sp,128
    e88252d0:	d99da0ef          	jal	ra,e8800068 <memcpy>
        newname = &name2;
    e88252d4:	0104                	addi	s1,sp,128
        IncrementLabelSuffix(&name2, mDNStrue);
    e88252d6:	4585                	li	a1,1
    e88252d8:	0108                	addi	a0,sp,128
    e88252da:	aa3ee0ef          	jal	ra,e8813d7c <IncrementLabelSuffix>
    if (SameDomainName(&domain, &localdomain))
    e88252de:	0007d597          	auipc	a1,0x7d
    e88252e2:	1ca58593          	addi	a1,a1,458 # e88a24a8 <DiscardPort+0x498>
    e88252e6:	0388                	addi	a0,sp,448
    e88252e8:	d63ed0ef          	jal	ra,e881304a <SameDomainName>
                               host, sr->RR_SRV.resrec.rdata->u.srv.port, sr->RR_TXT.resrec.rdata->u.txt.c, sr->RR_TXT.resrec.rdlength,
    e88252ec:	6785                	lui	a5,0x1
    e88252ee:	97a2                	add	a5,a5,s0
    err = mDNS_RegisterService(m, sr, newname, &type, &domain,
    e88252f0:	8907b703          	ld	a4,-1904(a5) # 890 <memcmp-0xe87ff770>
                               host, sr->RR_SRV.resrec.rdata->u.srv.port, sr->RR_TXT.resrec.rdata->u.txt.c, sr->RR_TXT.resrec.rdlength,
    e88252f4:	ca07b883          	ld	a7,-864(a5)
    err = mDNS_RegisterService(m, sr, newname, &type, &domain,
    e88252f8:	0194                	addi	a3,sp,192
    e88252fa:	00875803          	lhu	a6,8(a4)
    e88252fe:	5c18                	lw	a4,56(s0)
    e8825300:	0891                	addi	a7,a7,4
    e8825302:	8626                	mv	a2,s1
    e8825304:	f83a                	sd	a4,48(sp)
    e8825306:	6418                	ld	a4,8(s0)
    e8825308:	85a2                	mv	a1,s0
    e882530a:	8552                	mv	a0,s4
    e882530c:	f43a                	sd	a4,40(sp)
    e882530e:	6018                	ld	a4,0(s0)
    e8825310:	f03a                	sd	a4,32(sp)
    e8825312:	47043703          	ld	a4,1136(s0)
    e8825316:	ec3a                	sd	a4,24(sp)
    e8825318:	5018                	lw	a4,32(s0)
    e882531a:	e83a                	sd	a4,16(sp)
    e882531c:	7418                	ld	a4,40(s0)
    e882531e:	e43a                	sd	a4,8(sp)
    e8825320:	c847d783          	lhu	a5,-892(a5)
    e8825324:	0398                	addi	a4,sp,448
    e8825326:	e03e                	sd	a5,0(sp)
    e8825328:	87ce                	mv	a5,s3
    e882532a:	a45ff0ef          	jal	ra,e8824d6e <mDNS_RegisterService>
    while (!err && extras)
    e882532e:	e119                	bnez	a0,e8825334 <mDNS_RenameAndReregisterService+0xb8>
    e8825330:	02091163          	bnez	s2,e8825352 <mDNS_RenameAndReregisterService+0xd6>
}
    e8825334:	2e813083          	ld	ra,744(sp)
    e8825338:	2e013403          	ld	s0,736(sp)
    e882533c:	2d813483          	ld	s1,728(sp)
    e8825340:	2d013903          	ld	s2,720(sp)
    e8825344:	2c813983          	ld	s3,712(sp)
    e8825348:	2c013a03          	ld	s4,704(sp)
    e882534c:	2f010113          	addi	sp,sp,752
    e8825350:	8082                	ret
        extras = extras->next;
    e8825352:	00093483          	ld	s1,0(s2) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
        err = mDNS_AddRecordToService(m, sr, e, e->r.resrec.rdata, e->r.resrec.rroriginalttl, 0);
    e8825356:	02092703          	lw	a4,32(s2)
    e882535a:	04093683          	ld	a3,64(s2)
    e882535e:	864a                	mv	a2,s2
    e8825360:	4781                	li	a5,0
    e8825362:	85a2                	mv	a1,s0
    e8825364:	8552                	mv	a0,s4
    e8825366:	d5eff0ef          	jal	ra,e88248c4 <mDNS_AddRecordToService>
        extras = extras->next;
    e882536a:	8926                	mv	s2,s1
    e882536c:	b7c9                	j	e882532e <mDNS_RenameAndReregisterService+0xb2>

00000000e882536e <mDNS_NewMessageID>:
{
    e882536e:	7179                	addi	sp,sp,-48
    e8825370:	e826                	sd	s1,16(sp)
    e8825372:	ec4a                	sd	s2,24(sp)
        if (!mDNS_IdUsedInResourceRecordsList(m, id) && !mDNS_IdUsedInQuestionsList(m, id)) break;
    e8825374:	648d                	lui	s1,0x3
        id = mDNSOpaque16fromIntVal(1 + (mDNSu16)mDNSRandom(0xFFFE));
    e8825376:	6941                	lui	s2,0x10
{
    e8825378:	e422                	sd	s0,8(sp)
    e882537a:	f04e                	sd	s3,32(sp)
    e882537c:	f406                	sd	ra,40(sp)
    e882537e:	89aa                	mv	s3,a0
    e8825380:	4429                	li	s0,10
        id = mDNSOpaque16fromIntVal(1 + (mDNSu16)mDNSRandom(0xFFFE));
    e8825382:	1979                	addi	s2,s2,-2
        if (!mDNS_IdUsedInResourceRecordsList(m, id) && !mDNS_IdUsedInQuestionsList(m, id)) break;
    e8825384:	94aa                	add	s1,s1,a0
        id = mDNSOpaque16fromIntVal(1 + (mDNSu16)mDNSRandom(0xFFFE));
    e8825386:	854a                	mv	a0,s2
    e8825388:	b81ed0ef          	jal	ra,e8812f08 <mDNSRandom>
    e882538c:	0015079b          	addiw	a5,a0,1
    e8825390:	3c07a78b          	ext	a5,a5,15,0
        if (!mDNS_IdUsedInResourceRecordsList(m, id) && !mDNS_IdUsedInQuestionsList(m, id)) break;
    e8825394:	0087951b          	slliw	a0,a5,0x8
    e8825398:	0107979b          	slliw	a5,a5,0x10
    e882539c:	0107d79b          	srliw	a5,a5,0x10
    e88253a0:	5c87b70b          	extu	a4,a5,23,8
    e88253a4:	8f49                	or	a4,a4,a0
    e88253a6:	1b84b683          	ld	a3,440(s1) # 31b8 <memcmp-0xe87fce48>
    e88253aa:	3c07370b          	extu	a4,a4,15,0
    for (r = m->ResourceRecords; r; r=r->next) if (mDNSSameOpaque16(id, r->updateid)) return mDNStrue;
    e88253ae:	0007061b          	sext.w	a2,a4
    e88253b2:	e689                	bnez	a3,e88253bc <mDNS_NewMessageID+0x4e>
        if (!mDNS_IdUsedInResourceRecordsList(m, id) && !mDNS_IdUsedInQuestionsList(m, id)) break;
    e88253b4:	2b89b683          	ld	a3,696(s3)
    for (q = m->Questions; q; q=q->next) if (mDNSSameOpaque16(id, q->TargetQID)) return mDNStrue;
    e88253b8:	2701                	sext.w	a4,a4
    e88253ba:	a821                	j	e88253d2 <mDNS_NewMessageID+0x64>
    for (r = m->ResourceRecords; r; r=r->next) if (mDNSSameOpaque16(id, r->updateid)) return mDNStrue;
    e88253bc:	1566d583          	lhu	a1,342(a3)
    e88253c0:	02c58463          	beq	a1,a2,e88253e8 <mDNS_NewMessageID+0x7a>
    e88253c4:	6294                	ld	a3,0(a3)
    e88253c6:	b7f5                	j	e88253b2 <mDNS_NewMessageID+0x44>
    for (q = m->Questions; q; q=q->next) if (mDNSSameOpaque16(id, q->TargetQID)) return mDNStrue;
    e88253c8:	2126d603          	lhu	a2,530(a3)
    e88253cc:	00e60e63          	beq	a2,a4,e88253e8 <mDNS_NewMessageID+0x7a>
    e88253d0:	6294                	ld	a3,0(a3)
    e88253d2:	fafd                	bnez	a3,e88253c8 <mDNS_NewMessageID+0x5a>
}
    e88253d4:	70a2                	ld	ra,40(sp)
    e88253d6:	6422                	ld	s0,8(sp)
    return id;
    e88253d8:	5c87b78b          	extu	a5,a5,23,8
}
    e88253dc:	64c2                	ld	s1,16(sp)
    e88253de:	6962                	ld	s2,24(sp)
    e88253e0:	7982                	ld	s3,32(sp)
    return id;
    e88253e2:	8d5d                	or	a0,a0,a5
}
    e88253e4:	6145                	addi	sp,sp,48
    e88253e6:	8082                	ret
    for (i=0; i<10; i++)
    e88253e8:	347d                	addiw	s0,s0,-1
    e88253ea:	fc51                	bnez	s0,e8825386 <mDNS_NewMessageID+0x18>
    e88253ec:	b7e5                	j	e88253d4 <mDNS_NewMessageID+0x66>

00000000e88253ee <mDNS_StartQuery_internal>:
    if (m->rrcache_size == 0)
    e88253ee:	2f052783          	lw	a5,752(a0)
    e88253f2:	14078de3          	beqz	a5,e8825d4c <mDNS_StartQuery_internal+0x95e>
{
    e88253f6:	7119                	addi	sp,sp,-128
    e88253f8:	f8a2                	sd	s0,112(sp)
    e88253fa:	f4a6                	sd	s1,104(sp)
    e88253fc:	ecce                	sd	s3,88(sp)
    e88253fe:	fc86                	sd	ra,120(sp)
    e8825400:	f0ca                	sd	s2,96(sp)
    e8825402:	e8d2                	sd	s4,80(sp)
    e8825404:	e4d6                	sd	s5,72(sp)
    e8825406:	e0da                	sd	s6,64(sp)
    e8825408:	fc5e                	sd	s7,56(sp)
    e882540a:	f862                	sd	s8,48(sp)
    e882540c:	f466                	sd	s9,40(sp)
    e882540e:	f06a                	sd	s10,32(sp)
    if (question->Target.type && !ValidQuestionTarget(question))
    e8825410:	1fc5a603          	lw	a2,508(a1)
    e8825414:	842e                	mv	s0,a1
    e8825416:	84aa                	mv	s1,a0
    e8825418:	21458993          	addi	s3,a1,532
    e882541c:	c629                	beqz	a2,e8825466 <mDNS_StartQuery_internal+0x78>
    e882541e:	ffd67793          	andi	a5,a2,-3
    e8825422:	4711                	li	a4,4
    e8825424:	02e79063          	bne	a5,a4,e8825444 <mDNS_StartQuery_internal+0x56>
    e8825428:	2105d703          	lhu	a4,528(a1)
    e882542c:	0007e797          	auipc	a5,0x7e
    e8825430:	8f47d783          	lhu	a5,-1804(a5) # e88a2d20 <UnicastDNSPort>
    e8825434:	04e78163          	beq	a5,a4,e8825476 <mDNS_StartQuery_internal+0x88>
    e8825438:	0007d797          	auipc	a5,0x7d
    e882543c:	1207d783          	lhu	a5,288(a5) # e88a2558 <MulticastDNSPort>
    e8825440:	02e78b63          	beq	a5,a4,e8825476 <mDNS_StartQuery_internal+0x88>
    e8825444:	21044783          	lbu	a5,528(s0)
    e8825448:	21144683          	lbu	a3,529(s0)
        LogMsg("ValidateParameters: Warning! Target.type = %ld port = %u (Client forgot to initialize before calling mDNS_StartQuery? for question %##s)",
    e882544c:	874e                	mv	a4,s3
    e882544e:	0087979b          	slliw	a5,a5,0x8
    e8825452:	8edd                	or	a3,a3,a5
    e8825454:	00085597          	auipc	a1,0x85
    e8825458:	71458593          	addi	a1,a1,1812 # e88aab68 <mDNS_DomainTypeNames+0x11b8>
    e882545c:	4501                	li	a0,0
    e882545e:	04e0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        question->Target.type = mDNSAddrType_None;
    e8825462:	1e042e23          	sw	zero,508(s0)
        question->TargetPort = zeroIPPort;
    e8825466:	0007e797          	auipc	a5,0x7e
    e882546a:	14278793          	addi	a5,a5,322 # e88a35a8 <zeroIPPort>
    e882546e:	0007d783          	lhu	a5,0(a5)
    e8825472:	20f41823          	sh	a5,528(s0)
    if (!ValidateDomainName(&question->qname))
    e8825476:	31440593          	addi	a1,s0,788
    e882547a:	854e                	mv	a0,s3
    e882547c:	cd1ed0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8825480:	2501                	sext.w	a0,a0
    e8825482:	10000793          	li	a5,256
    e8825486:	02a7ff63          	bgeu	a5,a0,e88254c4 <mDNS_StartQuery_internal+0xd6>
        LogMsg("ValidateParameters: Attempt to start query with invalid qname %##s (%s)", question->qname.c, DNSTypeName(question->qtype));
    e882548a:	31445503          	lhu	a0,788(s0)
    e882548e:	fd2f00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825492:	86aa                	mv	a3,a0
    e8825494:	864e                	mv	a2,s3
    e8825496:	4501                	li	a0,0
    e8825498:	00085597          	auipc	a1,0x85
    e882549c:	76058593          	addi	a1,a1,1888 # e88aabf8 <mDNS_DomainTypeNames+0x1248>
    e88254a0:	00c0a0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return(mStatus_Invalid);
    e88254a4:	7541                	lui	a0,0xffff0
    e88254a6:	154d                	addi	a0,a0,-13
}
    e88254a8:	70e6                	ld	ra,120(sp)
    e88254aa:	7446                	ld	s0,112(sp)
    e88254ac:	74a6                	ld	s1,104(sp)
    e88254ae:	7906                	ld	s2,96(sp)
    e88254b0:	69e6                	ld	s3,88(sp)
    e88254b2:	6a46                	ld	s4,80(sp)
    e88254b4:	6aa6                	ld	s5,72(sp)
    e88254b6:	6b06                	ld	s6,64(sp)
    e88254b8:	7be2                	ld	s7,56(sp)
    e88254ba:	7c42                	ld	s8,48(sp)
    e88254bc:	7ca2                	ld	s9,40(sp)
    e88254be:	7d02                	ld	s10,32(sp)
    e88254c0:	6109                	addi	sp,sp,128
    e88254c2:	8082                	ret
    if (question->InterfaceID && !LocalOnlyOrP2PInterface(question->InterfaceID) && question->InterfaceID != mDNSInterface_Unicast)
    e88254c4:	1f043903          	ld	s2,496(s0)
    e88254c8:	0007e797          	auipc	a5,0x7e
    e88254cc:	8a878793          	addi	a5,a5,-1880 # e88a2d70 <mDNSInterface_LocalOnly>
    e88254d0:	0007ba03          	ld	s4,0(a5)
    e88254d4:	06090663          	beqz	s2,e8825540 <mDNS_StartQuery_internal+0x152>
    e88254d8:	07490463          	beq	s2,s4,e8825540 <mDNS_StartQuery_internal+0x152>
    e88254dc:	0007e797          	auipc	a5,0x7e
    e88254e0:	89c78793          	addi	a5,a5,-1892 # e88a2d78 <mDNSInterface_P2P>
    e88254e4:	639c                	ld	a5,0(a5)
    e88254e6:	04f90d63          	beq	s2,a5,e8825540 <mDNS_StartQuery_internal+0x152>
    e88254ea:	0007e797          	auipc	a5,0x7e
    e88254ee:	87e78793          	addi	a5,a5,-1922 # e88a2d68 <mDNSInterface_BLE>
    e88254f2:	639c                	ld	a5,0(a5)
    e88254f4:	04f90663          	beq	s2,a5,e8825540 <mDNS_StartQuery_internal+0x152>
    e88254f8:	0007e797          	auipc	a5,0x7e
    e88254fc:	88878793          	addi	a5,a5,-1912 # e88a2d80 <mDNSInterface_Unicast>
    e8825500:	639c                	ld	a5,0(a5)
    e8825502:	02f90f63          	beq	s2,a5,e8825540 <mDNS_StartQuery_internal+0x152>
        NetworkInterfaceInfo *intf = FirstInterfaceForID(m, question->InterfaceID);
    e8825506:	678d                	lui	a5,0x3
    e8825508:	97a6                	add	a5,a5,s1
    e882550a:	1e07b503          	ld	a0,480(a5) # 31e0 <memcmp-0xe87fce20>
    e882550e:	85ca                	mv	a1,s2
    e8825510:	a5ef70ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
        if (!intf)
    e8825514:	e515                	bnez	a0,e8825540 <mDNS_StartQuery_internal+0x152>
            LogInfo("ValidateParameters: Note: InterfaceID %d for question %##s (%s) not currently found in active interface list",
    e8825516:	000af797          	auipc	a5,0xaf
    e882551a:	55e78793          	addi	a5,a5,1374 # e88d4a74 <mDNS_LoggingEnabled>
    e882551e:	439c                	lw	a5,0(a5)
    e8825520:	c385                	beqz	a5,e8825540 <mDNS_StartQuery_internal+0x152>
    e8825522:	31445503          	lhu	a0,788(s0)
    e8825526:	f3af00ef          	jal	ra,e8815c60 <DNSTypeName>
    e882552a:	872a                	mv	a4,a0
    e882552c:	86ce                	mv	a3,s3
    e882552e:	0009061b          	sext.w	a2,s2
    e8825532:	00085597          	auipc	a1,0x85
    e8825536:	70e58593          	addi	a1,a1,1806 # e88aac40 <mDNS_DomainTypeNames+0x1290>
    e882553a:	450d                	li	a0,3
    e882553c:	771090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                          (question->Target.type || Question_uDNS(question)) ? mDNS_NewMessageID(m) :
    e8825540:	1fc42783          	lw	a5,508(s0)
    e8825544:	c3b5                	beqz	a5,e88255a8 <mDNS_StartQuery_internal+0x1ba>
    e8825546:	8526                	mv	a0,s1
    e8825548:	e27ff0ef          	jal	ra,e882536e <mDNS_NewMessageID>
    e882554c:	20a41923          	sh	a0,530(s0)
    if (LocalOnlyOrP2PInterface(question->InterfaceID))
    e8825550:	1f043703          	ld	a4,496(s0)
    e8825554:	03470263          	beq	a4,s4,e8825578 <mDNS_StartQuery_internal+0x18a>
    e8825558:	0007e797          	auipc	a5,0x7e
    e882555c:	82078793          	addi	a5,a5,-2016 # e88a2d78 <mDNSInterface_P2P>
    e8825560:	639c                	ld	a5,0(a5)
    e8825562:	00f70b63          	beq	a4,a5,e8825578 <mDNS_StartQuery_internal+0x18a>
    e8825566:	0007e797          	auipc	a5,0x7e
    e882556a:	80278793          	addi	a5,a5,-2046 # e88a2d68 <mDNSInterface_BLE>
    e882556e:	6394                	ld	a3,0(a5)
    q = &m->Questions;
    e8825570:	2b848793          	addi	a5,s1,696
    if (LocalOnlyOrP2PInterface(question->InterfaceID))
    e8825574:	00d71463          	bne	a4,a3,e882557c <mDNS_StartQuery_internal+0x18e>
        q = &m->LocalOnlyQuestions;
    e8825578:	2d048793          	addi	a5,s1,720
    while (*q && *q != question)
    e882557c:	6398                	ld	a4,0(a5)
    e882557e:	7e070863          	beqz	a4,e8825d6e <mDNS_StartQuery_internal+0x980>
    e8825582:	06e41f63          	bne	s0,a4,e8825600 <mDNS_StartQuery_internal+0x212>
        LogMsg("mDNS_StartQuery_internal: Error! Tried to add a question %##s (%s) %p that's already in the active list",
    e8825586:	31445503          	lhu	a0,788(s0)
    e882558a:	ed6f00ef          	jal	ra,e8815c60 <DNSTypeName>
    e882558e:	86aa                	mv	a3,a0
    e8825590:	8722                	mv	a4,s0
    e8825592:	4501                	li	a0,0
    e8825594:	864e                	mv	a2,s3
    e8825596:	00086597          	auipc	a1,0x86
    e882559a:	ac258593          	addi	a1,a1,-1342 # e88ab058 <mDNS_DomainTypeNames+0x16a8>
    e882559e:	70f090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return(mStatus_AlreadyRegistered);
    e88255a2:	7541                	lui	a0,0xffff0
    e88255a4:	1555                	addi	a0,a0,-11
    e88255a6:	b709                	j	e88254a8 <mDNS_StartQuery_internal+0xba>
                          (question->Target.type || Question_uDNS(question)) ? mDNS_NewMessageID(m) :
    e88255a8:	0007d717          	auipc	a4,0x7d
    e88255ac:	7d870713          	addi	a4,a4,2008 # e88a2d80 <mDNSInterface_Unicast>
    e88255b0:	1f043783          	ld	a5,496(s0)
    e88255b4:	6318                	ld	a4,0(a4)
    e88255b6:	f8e788e3          	beq	a5,a4,e8825546 <mDNS_StartQuery_internal+0x158>
    e88255ba:	32544703          	lbu	a4,805(s0)
    e88255be:	f741                	bnez	a4,e8825546 <mDNS_StartQuery_internal+0x158>
    e88255c0:	03478763          	beq	a5,s4,e88255ee <mDNS_StartQuery_internal+0x200>
    e88255c4:	0007d717          	auipc	a4,0x7d
    e88255c8:	7b470713          	addi	a4,a4,1972 # e88a2d78 <mDNSInterface_P2P>
    e88255cc:	6318                	ld	a4,0(a4)
    e88255ce:	02e78063          	beq	a5,a4,e88255ee <mDNS_StartQuery_internal+0x200>
    e88255d2:	0007d717          	auipc	a4,0x7d
    e88255d6:	79670713          	addi	a4,a4,1942 # e88a2d68 <mDNSInterface_BLE>
    e88255da:	6318                	ld	a4,0(a4)
    e88255dc:	00e78963          	beq	a5,a4,e88255ee <mDNS_StartQuery_internal+0x200>
    e88255e0:	31a44783          	lbu	a5,794(s0)
    e88255e4:	e789                	bnez	a5,e88255ee <mDNS_StartQuery_internal+0x200>
    e88255e6:	854e                	mv	a0,s3
    e88255e8:	abbed0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e88255ec:	dd29                	beqz	a0,e8825546 <mDNS_StartQuery_internal+0x158>
    question->TargetQID =
    e88255ee:	0007e797          	auipc	a5,0x7e
    e88255f2:	fb278793          	addi	a5,a5,-78 # e88a35a0 <zeroID>
    e88255f6:	0007d783          	lhu	a5,0(a5)
    e88255fa:	20f41923          	sh	a5,530(s0)
    e88255fe:	bf89                	j	e8825550 <mDNS_StartQuery_internal+0x162>
        q=&(*q)->next;
    e8825600:	87ba                	mv	a5,a4
    e8825602:	bfad                	j	e882557c <mDNS_StartQuery_internal+0x18e>
        question->ServiceID = -1;
    e8825604:	57fd                	li	a5,-1
    e8825606:	1ef42423          	sw	a5,488(s0)
    question->validDNSServers     = zeroOpaque128;
    e882560a:	0007e797          	auipc	a5,0x7e
    e882560e:	fa678793          	addi	a5,a5,-90 # e88a35b0 <zeroOpaque128>
    e8825612:	6398                	ld	a4,0(a5)
    e8825614:	679c                	ld	a5,8(a5)
    question->StopTime            = (question->TimeoutQuestion) ? question->StopTime : 0;
    e8825616:	31e44683          	lbu	a3,798(s0)
    question->validDNSServers     = zeroOpaque128;
    e882561a:	16e43823          	sd	a4,368(s0)
    question->qDNSServer          = mDNSNULL;
    e882561e:	16043423          	sd	zero,360(s0)
    question->validDNSServers     = zeroOpaque128;
    e8825622:	16f43c23          	sd	a5,376(s0)
    question->noServerResponse    = 0;
    e8825626:	18042023          	sw	zero,384(s0)
    question->StopTime            = (question->TimeoutQuestion) ? question->StopTime : 0;
    e882562a:	4701                	li	a4,0
    e882562c:	c299                	beqz	a3,e8825632 <mDNS_StartQuery_internal+0x244>
    e882562e:	14442703          	lw	a4,324(s0)
    if (LocalOnlyOrP2PInterface(question->InterfaceID) && !question->TimeoutQuestion)
    e8825632:	1f043783          	ld	a5,496(s0)
    question->StopTime            = (question->TimeoutQuestion) ? question->StopTime : 0;
    e8825636:	14e42223          	sw	a4,324(s0)
    if (LocalOnlyOrP2PInterface(question->InterfaceID) && !question->TimeoutQuestion)
    e882563a:	03478063          	beq	a5,s4,e882565a <mDNS_StartQuery_internal+0x26c>
    e882563e:	0007d617          	auipc	a2,0x7d
    e8825642:	73a60613          	addi	a2,a2,1850 # e88a2d78 <mDNSInterface_P2P>
    e8825646:	6210                	ld	a2,0(a2)
    e8825648:	00c78963          	beq	a5,a2,e882565a <mDNS_StartQuery_internal+0x26c>
    e882564c:	0007d617          	auipc	a2,0x7d
    e8825650:	71c60613          	addi	a2,a2,1820 # e88a2d68 <mDNSInterface_BLE>
    e8825654:	6210                	ld	a2,0(a2)
    e8825656:	00c79463          	bne	a5,a2,e882565e <mDNS_StartQuery_internal+0x270>
    e882565a:	10068863          	beqz	a3,e882576a <mDNS_StartQuery_internal+0x37c>
    if (!mDNSOpaque16IsZero(question->TargetQID))
    e882565e:	21245603          	lhu	a2,530(s0)
    e8825662:	28060e63          	beqz	a2,e88258fe <mDNS_StartQuery_internal+0x510>
        mDNSu32 timeout = SetValidDNSServers(m, question);
    e8825666:	85a2                	mv	a1,s0
    e8825668:	8526                	mv	a0,s1
    e882566a:	a53fb0ef          	jal	ra,e88210bc <SetValidDNSServers>
    e882566e:	0005091b          	sext.w	s2,a0
        if (question->TimeoutQuestion && !question->StopTime)
    e8825672:	31e44783          	lbu	a5,798(s0)
    e8825676:	000afb17          	auipc	s6,0xaf
    e882567a:	3feb0b13          	addi	s6,s6,1022 # e88d4a74 <mDNS_LoggingEnabled>
    e882567e:	cf9d                	beqz	a5,e88256bc <mDNS_StartQuery_internal+0x2ce>
    e8825680:	14442783          	lw	a5,324(s0)
    e8825684:	ef85                	bnez	a5,e88256bc <mDNS_StartQuery_internal+0x2ce>
            question->StopTime = NonZeroTime(m->timenow + timeout * mDNSPlatformOneSecond);
    e8825686:	000aa703          	lw	a4,0(s5)
    e882568a:	2404a783          	lw	a5,576(s1)
    e882568e:	2527178b          	mulaw	a5,a4,s2
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e8825692:	e391                	bnez	a5,e8825696 <mDNS_StartQuery_internal+0x2a8>
    e8825694:	4785                	li	a5,1
    e8825696:	14f42223          	sw	a5,324(s0)
            LogInfo("InitDNSConfig: Setting StopTime on the uDNS question %p %##s (%s)", question, question->qname.c, DNSTypeName(question->qtype));
    e882569a:	000b2783          	lw	a5,0(s6)
    e882569e:	cf99                	beqz	a5,e88256bc <mDNS_StartQuery_internal+0x2ce>
    e88256a0:	31445503          	lhu	a0,788(s0)
    e88256a4:	dbcf00ef          	jal	ra,e8815c60 <DNSTypeName>
    e88256a8:	872a                	mv	a4,a0
    e88256aa:	86ce                	mv	a3,s3
    e88256ac:	8622                	mv	a2,s0
    e88256ae:	00085597          	auipc	a1,0x85
    e88256b2:	66258593          	addi	a1,a1,1634 # e88aad10 <mDNS_DomainTypeNames+0x1360>
    e88256b6:	450d                	li	a0,3
    e88256b8:	5f5090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        question->qDNSServer = GetServerForQuestion(m, question);
    e88256bc:	85a2                	mv	a1,s0
    e88256be:	8526                	mv	a0,s1
    e88256c0:	b91fb0ef          	jal	ra,e8821250 <GetServerForQuestion>
    e88256c4:	16a43423          	sd	a0,360(s0)
        LogInfo("InitDNSConfig: question %p %##s (%s) Timeout %d, DNS Server %#a:%d",
    e88256c8:	000b2783          	lw	a5,0(s6)
    e88256cc:	cf85                	beqz	a5,e8825704 <mDNS_StartQuery_internal+0x316>
    e88256ce:	31445503          	lhu	a0,788(s0)
    e88256d2:	d8ef00ef          	jal	ra,e8815c60 <DNSTypeName>
    e88256d6:	872a                	mv	a4,a0
    e88256d8:	16843803          	ld	a6,360(s0)
    e88256dc:	68080063          	beqz	a6,e8825d5c <mDNS_StartQuery_internal+0x96e>
    e88256e0:	02884783          	lbu	a5,40(a6)
    e88256e4:	02984883          	lbu	a7,41(a6)
    e88256e8:	0851                	addi	a6,a6,20
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e88256ea:	07a2                	slli	a5,a5,0x8
    e88256ec:	00f8e8b3          	or	a7,a7,a5
    e88256f0:	86ce                	mv	a3,s3
    e88256f2:	87ca                	mv	a5,s2
    e88256f4:	8622                	mv	a2,s0
    e88256f6:	00085597          	auipc	a1,0x85
    e88256fa:	66258593          	addi	a1,a1,1634 # e88aad58 <mDNS_DomainTypeNames+0x13a8>
    e88256fe:	450d                	li	a0,3
    e8825700:	5ad090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (question->StopTime)
    e8825704:	14442783          	lw	a5,324(s0)
    e8825708:	cb9d                	beqz	a5,e882573e <mDNS_StartQuery_internal+0x350>
    mDNS_CheckLock(m);
    e882570a:	58d8                	lw	a4,52(s1)
    e882570c:	5894                	lw	a3,48(s1)
    e882570e:	0017079b          	addiw	a5,a4,1
    e8825712:	00d78d63          	beq	a5,a3,e882572c <mDNS_StartQuery_internal+0x33e>
    e8825716:	00082617          	auipc	a2,0x82
    e882571a:	7c260613          	addi	a2,a2,1986 # e88a7ed8 <__func__.9578>
    e882571e:	00082597          	auipc	a1,0x82
    e8825722:	a7258593          	addi	a1,a1,-1422 # e88a7190 <end.8789+0x3ae8>
    e8825726:	4501                	li	a0,0
    e8825728:	585090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (m->NextScheduledStopTime - q->StopTime > 0)
    e882572c:	14442703          	lw	a4,324(s0)
    e8825730:	2ac4a783          	lw	a5,684(s1)
    e8825734:	9f99                	subw	a5,a5,a4
    e8825736:	00f05463          	blez	a5,e882573e <mDNS_StartQuery_internal+0x350>
        m->NextScheduledStopTime = q->StopTime;
    e882573a:	2ae4a623          	sw	a4,684(s1)
    if (!(LocalOnlyOrP2PInterface(question->InterfaceID)))
    e882573e:	1f043783          	ld	a5,496(s0)
    e8825742:	03478463          	beq	a5,s4,e882576a <mDNS_StartQuery_internal+0x37c>
    e8825746:	0007d717          	auipc	a4,0x7d
    e882574a:	63270713          	addi	a4,a4,1586 # e88a2d78 <mDNSInterface_P2P>
    e882574e:	6318                	ld	a4,0(a4)
    e8825750:	00e78d63          	beq	a5,a4,e882576a <mDNS_StartQuery_internal+0x37c>
    e8825754:	0007d717          	auipc	a4,0x7d
    e8825758:	61470713          	addi	a4,a4,1556 # e88a2d68 <mDNSInterface_BLE>
    e882575c:	6318                	ld	a4,0(a4)
    e882575e:	00e78663          	beq	a5,a4,e882576a <mDNS_StartQuery_internal+0x37c>
        SetNextQueryTime(m,question);
    e8825762:	85a2                	mv	a1,s0
    e8825764:	8526                	mv	a0,s1
    e8825766:	b07f80ef          	jal	ra,e881e26c <SetNextQueryTime>
    question->AuthInfo          = GetAuthInfoForQuestion(m, question);
    e882576a:	85a2                	mv	a1,s0
    e882576c:	8526                	mv	a0,s1
    e882576e:	4ed0f0ef          	jal	ra,e883545a <GetAuthInfoForQuestion>
    e8825772:	e428                	sd	a0,72(s0)
    if (question->SuppressUnusable)
    e8825774:	31c44783          	lbu	a5,796(s0)
    question->SuppressQuery     = 0;
    e8825778:	14040023          	sb	zero,320(s0)
    if (question->SuppressUnusable)
    e882577c:	c799                	beqz	a5,e882578a <mDNS_StartQuery_internal+0x39c>
        question->SuppressQuery = ShouldSuppressQuery(m, question);
    e882577e:	85a2                	mv	a1,s0
    e8825780:	8526                	mv	a0,s1
    e8825782:	6e5000ef          	jal	ra,e8826666 <ShouldSuppressQuery>
    e8825786:	14a40023          	sb	a0,320(s0)
    question->DisallowPID       = (question->ServiceID == 0 || isBlocked);
    e882578a:	1e842783          	lw	a5,488(s0)
    e882578e:	0017b713          	seqz	a4,a5
    e8825792:	1ee40323          	sb	a4,486(s0)
    if (question->DisallowPID)
    e8825796:	eb85                	bnez	a5,e88257c6 <mDNS_StartQuery_internal+0x3d8>
        LogInfo("InitCommonState: Query suppressed for %##s (%s), PID %d/ServiceID %d not allowed", question->qname.c,
    e8825798:	000af797          	auipc	a5,0xaf
    e882579c:	2dc78793          	addi	a5,a5,732 # e88d4a74 <mDNS_LoggingEnabled>
    e88257a0:	439c                	lw	a5,0(a5)
    e88257a2:	c395                	beqz	a5,e88257c6 <mDNS_StartQuery_internal+0x3d8>
    e88257a4:	31445503          	lhu	a0,788(s0)
    e88257a8:	cb8f00ef          	jal	ra,e8815c60 <DNSTypeName>
    e88257ac:	86aa                	mv	a3,a0
    e88257ae:	1e842783          	lw	a5,488(s0)
    e88257b2:	32842703          	lw	a4,808(s0)
    e88257b6:	864e                	mv	a2,s3
    e88257b8:	00085597          	auipc	a1,0x85
    e88257bc:	67058593          	addi	a1,a1,1648 # e88aae28 <mDNS_DomainTypeNames+0x1478>
    e88257c0:	450d                	li	a0,3
    e88257c2:	4eb090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    question->RequestUnicast    = kDefaultRequestUnicastCount;
    e88257c6:	4789                	li	a5,2
    question->NextInDQList      = mDNSNULL;
    e88257c8:	04043c23          	sd	zero,88(s0)
    question->SendQNow          = mDNSNULL;
    e88257cc:	12043423          	sd	zero,296(s0)
    question->SendOnAll         = mDNSfalse;
    e88257d0:	12040823          	sb	zero,304(s0)
    question->RequestUnicast    = kDefaultRequestUnicastCount;
    e88257d4:	12f42a23          	sw	a5,308(s0)
    question->LastQTxTime       = m->timenow;
    e88257d8:	2404a783          	lw	a5,576(s1)
    question->CNAMEReferrals    = 0;
    e88257dc:	12042e23          	sw	zero,316(s0)
    question->WakeOnResolveCount = 0;
    e88257e0:	14040123          	sb	zero,322(s0)
    question->LastQTxTime       = m->timenow;
    e88257e4:	12f42c23          	sw	a5,312(s0)
    if (question->WakeOnResolve)
    e88257e8:	31f44783          	lbu	a5,799(s0)
    e88257ec:	c799                	beqz	a5,e88257fa <mDNS_StartQuery_internal+0x40c>
        question->WakeOnResolveCount = InitialWakeOnResolveCount;
    e88257ee:	478d                	li	a5,3
    e88257f0:	14f40123          	sb	a5,322(s0)
        purge = mDNStrue;
    e88257f4:	4785                	li	a5,1
    e88257f6:	00f10fa3          	sb	a5,31(sp)
    if (question->DelayAnswering)
    e88257fa:	4450                	lw	a2,12(s0)
        question->DupSuppress[i].InterfaceID = mDNSNULL;
    e88257fc:	06043823          	sd	zero,112(s0)
    e8825800:	08043423          	sd	zero,136(s0)
    e8825804:	0a043023          	sd	zero,160(s0)
    e8825808:	0a043c23          	sd	zero,184(s0)
    e882580c:	0c043823          	sd	zero,208(s0)
    e8825810:	0e043423          	sd	zero,232(s0)
    e8825814:	10043023          	sd	zero,256(s0)
    e8825818:	10043c23          	sd	zero,280(s0)
    question->Restart = 0;
    e882581c:	1a0409a3          	sb	zero,435(s0)
    if (question->DelayAnswering)
    e8825820:	ca0d                	beqz	a2,e8825852 <mDNS_StartQuery_internal+0x464>
        LogInfo("InitCommonState: Delaying answering for %d ticks while cache stabilizes for %##s (%s)",
    e8825822:	000af797          	auipc	a5,0xaf
    e8825826:	25278793          	addi	a5,a5,594 # e88d4a74 <mDNS_LoggingEnabled>
    e882582a:	439c                	lw	a5,0(a5)
    e882582c:	c39d                	beqz	a5,e8825852 <mDNS_StartQuery_internal+0x464>
    e882582e:	2404a783          	lw	a5,576(s1)
    e8825832:	31445503          	lhu	a0,788(s0)
    e8825836:	9e1d                	subw	a2,a2,a5
    e8825838:	e032                	sd	a2,0(sp)
    e882583a:	c26f00ef          	jal	ra,e8815c60 <DNSTypeName>
    e882583e:	872a                	mv	a4,a0
    e8825840:	6602                	ld	a2,0(sp)
    e8825842:	86ce                	mv	a3,s3
    e8825844:	00085597          	auipc	a1,0x85
    e8825848:	63c58593          	addi	a1,a1,1596 # e88aae80 <mDNS_DomainTypeNames+0x14d0>
    e882584c:	450d                	li	a0,3
    e882584e:	45f090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    question->servAddr          = zeroAddr;
    e8825852:	0007e797          	auipc	a5,0x7e
    e8825856:	d2e78793          	addi	a5,a5,-722 # e88a3580 <zeroAddr>
    e882585a:	6394                	ld	a3,0(a5)
    question->servPort          = zeroIPPort;
    e882585c:	0007ea97          	auipc	s5,0x7e
    e8825860:	d4ca8a93          	addi	s5,s5,-692 # e88a35a8 <zeroIPPort>
    question->LocalSocket       = mDNSNULL;
    e8825864:	16043023          	sd	zero,352(s0)
    question->servAddr          = zeroAddr;
    e8825868:	18d43823          	sd	a3,400(s0)
    e882586c:	6794                	ld	a3,8(a5)
    e882586e:	4b9c                	lw	a5,16(a5)
    question->unansweredQueries = 0;
    e8825870:	18040223          	sb	zero,388(s0)
    question->nta               = mDNSNULL;
    e8825874:	18043423          	sd	zero,392(s0)
    question->servAddr          = zeroAddr;
    e8825878:	1af42023          	sw	a5,416(s0)
    question->servPort          = zeroIPPort;
    e882587c:	000ad783          	lhu	a5,0(s5)
    question->servAddr          = zeroAddr;
    e8825880:	18d43c23          	sd	a3,408(s0)
    question->tcp               = mDNSNULL;
    e8825884:	1a043423          	sd	zero,424(s0)
    question->servPort          = zeroIPPort;
    e8825888:	1af41223          	sh	a5,420(s0)
    question->state             = LLQ_InitialRequest;
    e882588c:	4785                	li	a5,1
    e882588e:	1af40a23          	sb	a5,436(s0)
    question->id                = zeroOpaque64;
    e8825892:	0007e797          	auipc	a5,0x7e
    e8825896:	d2e78793          	addi	a5,a5,-722 # e88a35c0 <zeroOpaque64>
    e882589a:	639c                	ld	a5,0(a5)
    question->NoAnswer          = NoAnswer_Normal;
    e882589c:	1a040923          	sb	zero,434(s0)
    question->ReqLease          = 0;
    e88258a0:	1a043c23          	sd	zero,440(s0)
    question->id                = zeroOpaque64;
    e88258a4:	1cf43e23          	sd	a5,476(s0)
    if (question->qDNSServer)
    e88258a8:	16843783          	ld	a5,360(s0)
    question->ntries            = 0;
    e88258ac:	1c041023          	sh	zero,448(s0)
    return(purge);
    e88258b0:	01f14b83          	lbu	s7,31(sp)
    if (question->qDNSServer)
    e88258b4:	c799                	beqz	a5,e88258c2 <mDNS_StartQuery_internal+0x4d4>
        if (question->qDNSServer->cellIntf)
    e88258b6:	13f7c703          	lbu	a4,319(a5)
    e88258ba:	12070663          	beqz	a4,e88259e6 <mDNS_StartQuery_internal+0x5f8>
            question->ValidationRequired = mDNSfalse;
    e88258be:	32040223          	sb	zero,804(s0)
    question->ValidationState = (question->ValidationRequired ? DNSSECValRequired : DNSSECValNotRequired);
    e88258c2:	32444783          	lbu	a5,804(s0)
    question->ValidationStatus = 0;
    e88258c6:	140404a3          	sb	zero,329(s0)
            q->qtype      == question->qtype        &&          // type,
    e88258ca:	5b7d                	li	s6,-1
    question->ValidationState = (question->ValidationRequired ? DNSSECValRequired : DNSSECValNotRequired);
    e88258cc:	00f037b3          	snez	a5,a5
    e88258d0:	14f40423          	sb	a5,328(s0)
    question->responseFlags    = zeroID;
    e88258d4:	0007e797          	auipc	a5,0x7e
    e88258d8:	ccc78793          	addi	a5,a5,-820 # e88a35a0 <zeroID>
    e88258dc:	0007d783          	lhu	a5,0(a5)
            SameQTarget(q, question)                &&          // and same unicast/multicast target settings
    e88258e0:	1fc40c13          	addi	s8,s0,508
            q->qtype      == question->qtype        &&          // type,
    e88258e4:	1b02                	slli	s6,s6,0x20
    question->responseFlags    = zeroID;
    e88258e6:	1ef41223          	sh	a5,484(s0)
    question->DuplicateOf  = FindDuplicateQuestion(m, question);
    e88258ea:	2b84b903          	ld	s2,696(s1)
    for (q = m->Questions; q && q != question; q=q->next)       // Scan our list for another question
    e88258ee:	1f043783          	ld	a5,496(s0)
    e88258f2:	20090863          	beqz	s2,e8825b02 <mDNS_StartQuery_internal+0x714>
    e88258f6:	13241663          	bne	s0,s2,e8825a22 <mDNS_StartQuery_internal+0x634>
    return(mDNSNULL);
    e88258fa:	4901                	li	s2,0
    e88258fc:	a419                	j	e8825b02 <mDNS_StartQuery_internal+0x714>
    else if (question->TimeoutQuestion && !question->StopTime)
    e88258fe:	e00683e3          	beqz	a3,e8825704 <mDNS_StartQuery_internal+0x316>
    e8825902:	e00714e3          	bnez	a4,e882570a <mDNS_StartQuery_internal+0x31c>
                            DEFAULT_LO_OR_P2P_TIMEOUT : GetTimeoutForMcastQuestion(m, question);
    e8825906:	05479363          	bne	a5,s4,e882594c <mDNS_StartQuery_internal+0x55e>
    e882590a:	4715                	li	a4,5
        question->StopTime = NonZeroTime(m->timenow + timeout * mDNSPlatformOneSecond);
    e882590c:	000aa683          	lw	a3,0(s5)
    e8825910:	2404a783          	lw	a5,576(s1)
    e8825914:	24e6978b          	mulaw	a5,a3,a4
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e8825918:	e391                	bnez	a5,e882591c <mDNS_StartQuery_internal+0x52e>
    e882591a:	4785                	li	a5,1
    e882591c:	14f42223          	sw	a5,324(s0)
        LogInfo("InitDNSConfig: Setting StopTime on question %p %##s (%s)", question, question->qname.c, DNSTypeName(question->qtype));
    e8825920:	000af797          	auipc	a5,0xaf
    e8825924:	15478793          	addi	a5,a5,340 # e88d4a74 <mDNS_LoggingEnabled>
    e8825928:	439c                	lw	a5,0(a5)
    e882592a:	de0780e3          	beqz	a5,e882570a <mDNS_StartQuery_internal+0x31c>
    e882592e:	31445503          	lhu	a0,788(s0)
    e8825932:	b2ef00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825936:	872a                	mv	a4,a0
    e8825938:	86ce                	mv	a3,s3
    e882593a:	8622                	mv	a2,s0
    e882593c:	00085597          	auipc	a1,0x85
    e8825940:	4ac58593          	addi	a1,a1,1196 # e88aade8 <mDNS_DomainTypeNames+0x1438>
    e8825944:	450d                	li	a0,3
    e8825946:	367090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882594a:	bb6d                	j	e8825704 <mDNS_StartQuery_internal+0x316>
        mDNSu32 timeout = LocalOnlyOrP2PInterface(question->InterfaceID) ?
    e882594c:	0007d717          	auipc	a4,0x7d
    e8825950:	42c70713          	addi	a4,a4,1068 # e88a2d78 <mDNSInterface_P2P>
    e8825954:	6318                	ld	a4,0(a4)
    e8825956:	fae78ae3          	beq	a5,a4,e882590a <mDNS_StartQuery_internal+0x51c>
    e882595a:	0007d717          	auipc	a4,0x7d
    e882595e:	40e70713          	addi	a4,a4,1038 # e88a2d68 <mDNSInterface_BLE>
    e8825962:	6318                	ld	a4,0(a4)
    e8825964:	fae783e3          	beq	a5,a4,e882590a <mDNS_StartQuery_internal+0x51c>
    int bestmatchlen = -1, namecount = CountLabels(&question->qname);
    e8825968:	854e                	mv	a0,s3
    e882596a:	8dded0ef          	jal	ra,e8813246 <CountLabels>
    e882596e:	8caa                	mv	s9,a0
    for (curr = m->McastResolvers; curr; curr = curr->next)
    e8825970:	678d                	lui	a5,0x3
    e8825972:	97a6                	add	a5,a5,s1
    e8825974:	2087bb03          	ld	s6,520(a5) # 3208 <memcmp-0xe87fcdf8>
    McastResolver *curmatch = mDNSNULL;
    e8825978:	4901                	li	s2,0
    int bestmatchlen = -1, namecount = CountLabels(&question->qname);
    e882597a:	5c7d                	li	s8,-1
    for (curr = m->McastResolvers; curr; curr = curr->next)
    e882597c:	020b1b63          	bnez	s6,e88259b2 <mDNS_StartQuery_internal+0x5c4>
    LogInfo("GetTimeoutForMcastQuestion: question %##s curmatch %p, Timeout %d", question->qname.c, curmatch,
    e8825980:	000af797          	auipc	a5,0xaf
    e8825984:	0f478793          	addi	a5,a5,244 # e88d4a74 <mDNS_LoggingEnabled>
    e8825988:	439c                	lw	a5,0(a5)
    e882598a:	cf99                	beqz	a5,e88259a8 <mDNS_StartQuery_internal+0x5ba>
    e882598c:	4715                	li	a4,5
    e882598e:	00090463          	beqz	s2,e8825996 <mDNS_StartQuery_internal+0x5a8>
    e8825992:	11492703          	lw	a4,276(s2) # 10114 <memcmp-0xe87efeec>
    e8825996:	86ca                	mv	a3,s2
    e8825998:	864e                	mv	a2,s3
    e882599a:	00085597          	auipc	a1,0x85
    e882599e:	40658593          	addi	a1,a1,1030 # e88aada0 <mDNS_DomainTypeNames+0x13f0>
    e88259a2:	450d                	li	a0,3
    e88259a4:	309090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return ( curmatch ? curmatch->timeout : DEFAULT_MCAST_TIMEOUT);
    e88259a8:	f60901e3          	beqz	s2,e882590a <mDNS_StartQuery_internal+0x51c>
    e88259ac:	11492703          	lw	a4,276(s2)
    e88259b0:	bfb1                	j	e882590c <mDNS_StartQuery_internal+0x51e>
        currcount = CountLabels(&curr->domain);
    e88259b2:	014b0d13          	addi	s10,s6,20
    e88259b6:	856a                	mv	a0,s10
    e88259b8:	88fed0ef          	jal	ra,e8813246 <CountLabels>
    e88259bc:	8baa                	mv	s7,a0
    if (namecount < newcount || newcount < bestcount) return -1;
    e88259be:	02acc163          	blt	s9,a0,e88259e0 <mDNS_StartQuery_internal+0x5f2>
    e88259c2:	01854f63          	blt	a0,s8,e88259e0 <mDNS_StartQuery_internal+0x5f2>
    if (SameDomainName(SkipLeadingLabels(name, namecount - newcount), newname))
    e88259c6:	40ac85bb          	subw	a1,s9,a0
    e88259ca:	854e                	mv	a0,s3
    e88259cc:	88fed0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e88259d0:	85ea                	mv	a1,s10
    e88259d2:	e78ed0ef          	jal	ra,e881304a <SameDomainName>
    e88259d6:	c509                	beqz	a0,e88259e0 <mDNS_StartQuery_internal+0x5f2>
        if (bettermatch == 1)
    e88259d8:	018b8463          	beq	s7,s8,e88259e0 <mDNS_StartQuery_internal+0x5f2>
    e88259dc:	8c5e                	mv	s8,s7
    e88259de:	895a                	mv	s2,s6
    for (curr = m->McastResolvers; curr; curr = curr->next)
    e88259e0:	000b3b03          	ld	s6,0(s6)
    e88259e4:	bf61                	j	e882597c <mDNS_StartQuery_internal+0x58e>
        if (DNSSECOptionalQuestion(question) && !(question->qDNSServer->req_DO))
    e88259e6:	32444683          	lbu	a3,804(s0)
    e88259ea:	4709                	li	a4,2
    e88259ec:	ece69be3          	bne	a3,a4,e88258c2 <mDNS_StartQuery_internal+0x4d4>
    e88259f0:	1427c783          	lbu	a5,322(a5)
    e88259f4:	ec0797e3          	bnez	a5,e88258c2 <mDNS_StartQuery_internal+0x4d4>
            LogInfo("InitDNSSECProxyState: Turning off validation for %##s (%s); req_DO false",
    e88259f8:	000af797          	auipc	a5,0xaf
    e88259fc:	07c78793          	addi	a5,a5,124 # e88d4a74 <mDNS_LoggingEnabled>
    e8825a00:	439c                	lw	a5,0(a5)
    e8825a02:	ea078ee3          	beqz	a5,e88258be <mDNS_StartQuery_internal+0x4d0>
    e8825a06:	31445503          	lhu	a0,788(s0)
    e8825a0a:	a56f00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825a0e:	86aa                	mv	a3,a0
    e8825a10:	864e                	mv	a2,s3
    e8825a12:	00085597          	auipc	a1,0x85
    e8825a16:	4c658593          	addi	a1,a1,1222 # e88aaed8 <mDNS_DomainTypeNames+0x1528>
    e8825a1a:	450d                	li	a0,3
    e8825a1c:	291090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8825a20:	bd79                	j	e88258be <mDNS_StartQuery_internal+0x4d0>
        if (q->InterfaceID == question->InterfaceID &&          // with the same InterfaceID,
    e8825a22:	1f093703          	ld	a4,496(s2)
    e8825a26:	00f70563          	beq	a4,a5,e8825a30 <mDNS_StartQuery_internal+0x642>
    for (q = m->Questions; q && q != question; q=q->next)       // Scan our list for another question
    e8825a2a:	00093903          	ld	s2,0(s2)
    e8825a2e:	b5c1                	j	e88258ee <mDNS_StartQuery_internal+0x500>
        if (q->InterfaceID == question->InterfaceID &&          // with the same InterfaceID,
    e8825a30:	1fc92783          	lw	a5,508(s2)
    e8825a34:	10079563          	bnez	a5,e8825b3e <mDNS_StartQuery_internal+0x750>
            SameQTarget(q, question)                &&          // and same unicast/multicast target settings
    e8825a38:	1fc42783          	lw	a5,508(s0)
    e8825a3c:	10079163          	bnez	a5,e8825b3e <mDNS_StartQuery_internal+0x750>
            q->qtype      == question->qtype        &&          // type,
    e8825a40:	31093703          	ld	a4,784(s2)
    e8825a44:	31043783          	ld	a5,784(s0)
    e8825a48:	01677733          	and	a4,a4,s6
    e8825a4c:	0167f7b3          	and	a5,a5,s6
    e8825a50:	fcf71de3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            IsLLQ(q)      == IsLLQ(question)        &&          // and long-lived status matches
    e8825a54:	31894783          	lbu	a5,792(s2)
    e8825a58:	4701                	li	a4,0
    e8825a5a:	c789                	beqz	a5,e8825a64 <mDNS_StartQuery_internal+0x676>
    e8825a5c:	21295703          	lhu	a4,530(s2)
    e8825a60:	00e03733          	snez	a4,a4
    e8825a64:	31844683          	lbu	a3,792(s0)
    e8825a68:	4781                	li	a5,0
    e8825a6a:	c689                	beqz	a3,e8825a74 <mDNS_StartQuery_internal+0x686>
    e8825a6c:	21245783          	lhu	a5,530(s0)
    e8825a70:	00f037b3          	snez	a5,a5
            q->qclass     == question->qclass       &&          // class,
    e8825a74:	faf71be3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            IsLLQ(q)      == IsLLQ(question)        &&          // and long-lived status matches
    e8825a78:	04893783          	ld	a5,72(s2)
    e8825a7c:	c399                	beqz	a5,e8825a82 <mDNS_StartQuery_internal+0x694>
            (!q->AuthInfo || question->AuthInfo)    &&          // to avoid deadlock, don't make public query dup of a private one
    e8825a7e:	643c                	ld	a5,72(s0)
    e8825a80:	d7cd                	beqz	a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
    e8825a82:	06093703          	ld	a4,96(s2)
    e8825a86:	703c                	ld	a5,96(s0)
    e8825a88:	faf711e3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            (q->AnonInfo  == question->AnonInfo)    &&          // Anonymous query not a dup of normal query
    e8825a8c:	14094703          	lbu	a4,320(s2)
    e8825a90:	14044783          	lbu	a5,320(s0)
    e8825a94:	f8f71be3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            (q->SuppressQuery == question->SuppressQuery) &&    // Questions that are suppressed/not suppressed
    e8825a98:	32494703          	lbu	a4,804(s2)
    e8825a9c:	32444783          	lbu	a5,804(s0)
    e8825aa0:	f8f715e3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            (q->ValidationRequired == question->ValidationRequired) &&  // Questions that require DNSSEC validation
    e8825aa4:	14a94703          	lbu	a4,330(s2)
    e8825aa8:	14a44783          	lbu	a5,330(s0)
    e8825aac:	f6f71fe3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            (q->ValidatingResponse == question->ValidatingResponse) &&  // Questions that are validating responses using DNSSEC
    e8825ab0:	1e694703          	lbu	a4,486(s2)
    e8825ab4:	1e644783          	lbu	a5,486(s0)
    e8825ab8:	f6f719e3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            (q->DisallowPID == question->DisallowPID)     &&            // Disallowing a PID should not affect a PID that is allowed
    e8825abc:	02892703          	lw	a4,40(s2)
    e8825ac0:	541c                	lw	a5,40(s0)
    e8825ac2:	f6f714e3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            (q->BrowseThreshold == question->BrowseThreshold) &&  // browse thresholds must match
    e8825ac6:	00892703          	lw	a4,8(s2)
    e8825aca:	441c                	lw	a5,8(s0)
    e8825acc:	f4f71fe3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            (IsAWDLIncluded(q) == IsAWDLIncluded(question)) &&     // Inclusion of AWDL interface must match
    e8825ad0:	1f892783          	lw	a5,504(s2)
    e8825ad4:	1f842703          	lw	a4,504(s0)
    e8825ad8:	4147d79b          	sraiw	a5,a5,0x14
    e8825adc:	0017c793          	xori	a5,a5,1
            q->qnamehash  == question->qnamehash    &&
    e8825ae0:	8b85                	andi	a5,a5,1
    e8825ae2:	5147370b          	extu	a4,a4,20,20
    e8825ae6:	f4e782e3          	beq	a5,a4,e8825a2a <mDNS_StartQuery_internal+0x63c>
            (IsAWDLIncluded(q) == IsAWDLIncluded(question)) &&     // Inclusion of AWDL interface must match
    e8825aea:	21295703          	lhu	a4,530(s2)
    e8825aee:	21245783          	lhu	a5,530(s0)
    e8825af2:	e725                	bnez	a4,e8825b5a <mDNS_StartQuery_internal+0x76c>
            SameQuestionKind(q->TargetQID, question->TargetQID) && // mDNS or uDNS must match
    e8825af4:	fb9d                	bnez	a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
            SameDomainName(&q->qname, &question->qname))           // and name
    e8825af6:	85ce                	mv	a1,s3
    e8825af8:	21490513          	addi	a0,s2,532
    e8825afc:	d4eed0ef          	jal	ra,e881304a <SameDomainName>
            SameQuestionKind(q->TargetQID, question->TargetQID) && // mDNS or uDNS must match
    e8825b00:	d50d                	beqz	a0,e8825a2a <mDNS_StartQuery_internal+0x63c>
    question->DuplicateOf  = FindDuplicateQuestion(m, question);
    e8825b02:	05243823          	sd	s2,80(s0)
    if (question->DuplicateOf)
    e8825b06:	00090563          	beqz	s2,e8825b10 <mDNS_StartQuery_internal+0x722>
        question->AuthInfo = question->DuplicateOf->AuthInfo;
    e8825b0a:	04893783          	ld	a5,72(s2)
    e8825b0e:	e43c                	sd	a5,72(s0)
    if (LocalOnlyOrP2PInterface(question->InterfaceID))
    e8825b10:	1f043783          	ld	a5,496(s0)
    e8825b14:	03478063          	beq	a5,s4,e8825b34 <mDNS_StartQuery_internal+0x746>
    e8825b18:	0007d717          	auipc	a4,0x7d
    e8825b1c:	26070713          	addi	a4,a4,608 # e88a2d78 <mDNSInterface_P2P>
    e8825b20:	6318                	ld	a4,0(a4)
    e8825b22:	00e78963          	beq	a5,a4,e8825b34 <mDNS_StartQuery_internal+0x746>
    e8825b26:	0007d717          	auipc	a4,0x7d
    e8825b2a:	24270713          	addi	a4,a4,578 # e88a2d68 <mDNSInterface_BLE>
    e8825b2e:	6318                	ld	a4,0(a4)
    e8825b30:	02e79b63          	bne	a5,a4,e8825b66 <mDNS_StartQuery_internal+0x778>
        if (!m->NewLocalOnlyQuestions)
    e8825b34:	2d84b783          	ld	a5,728(s1)
    e8825b38:	c785                	beqz	a5,e8825b60 <mDNS_StartQuery_internal+0x772>
    return(mStatus_NoError);
    e8825b3a:	4501                	li	a0,0
    e8825b3c:	b2b5                	j	e88254a8 <mDNS_StartQuery_internal+0xba>
            SameQTarget(q, question)                &&          // and same unicast/multicast target settings
    e8825b3e:	85e2                	mv	a1,s8
    e8825b40:	1fc90513          	addi	a0,s2,508
    e8825b44:	bf6ed0ef          	jal	ra,e8812f3a <mDNSSameAddress>
    e8825b48:	ee0501e3          	beqz	a0,e8825a2a <mDNS_StartQuery_internal+0x63c>
    e8825b4c:	21095703          	lhu	a4,528(s2)
    e8825b50:	21045783          	lhu	a5,528(s0)
    e8825b54:	ecf71be3          	bne	a4,a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
    e8825b58:	b5e5                	j	e8825a40 <mDNS_StartQuery_internal+0x652>
            SameQuestionKind(q->TargetQID, question->TargetQID) && // mDNS or uDNS must match
    e8825b5a:	ec0788e3          	beqz	a5,e8825a2a <mDNS_StartQuery_internal+0x63c>
    e8825b5e:	bf61                	j	e8825af6 <mDNS_StartQuery_internal+0x708>
            m->NewLocalOnlyQuestions = question;
    e8825b60:	2c84bc23          	sd	s0,728(s1)
    e8825b64:	bfd9                	j	e8825b3a <mDNS_StartQuery_internal+0x74c>
        if (!m->NewQuestions)
    e8825b66:	2c04b783          	ld	a5,704(s1)
    e8825b6a:	e399                	bnez	a5,e8825b70 <mDNS_StartQuery_internal+0x782>
            m->NewQuestions = question;
    e8825b6c:	2c84b023          	sd	s0,704(s1)
        if (!mDNSOpaque16IsZero(question->TargetQID))
    e8825b70:	21245783          	lhu	a5,530(s0)
    e8825b74:	1a078763          	beqz	a5,e8825d22 <mDNS_StartQuery_internal+0x934>
    if (question->DuplicateOf)
    e8825b78:	683c                	ld	a5,80(s0)
    e8825b7a:	c7d5                	beqz	a5,e8825c26 <mDNS_StartQuery_internal+0x838>
        question->validDNSServers = question->DuplicateOf->validDNSServers;
    e8825b7c:	1707b703          	ld	a4,368(a5)
    e8825b80:	000afa17          	auipc	s4,0xaf
    e8825b84:	ef4a0a13          	addi	s4,s4,-268 # e88d4a74 <mDNS_LoggingEnabled>
    e8825b88:	16e43823          	sd	a4,368(s0)
    e8825b8c:	1787b703          	ld	a4,376(a5)
    e8825b90:	16e43c23          	sd	a4,376(s0)
        if (question->DuplicateOf->qDNSServer == mDNSNULL)
    e8825b94:	1687b703          	ld	a4,360(a5)
    e8825b98:	e339                	bnez	a4,e8825bde <mDNS_StartQuery_internal+0x7f0>
            if (question->qDNSServer)
    e8825b9a:	16843903          	ld	s2,360(s0)
    e8825b9e:	04090063          	beqz	s2,e8825bde <mDNS_StartQuery_internal+0x7f0>
                LogInfo("FinalizeUnicastQuestion: Current(dup) question %p has DNSServer(%#a:%d) but original question(%p) has no DNS Server! %##s (%s)",
    e8825ba2:	000a2703          	lw	a4,0(s4)
    e8825ba6:	cf05                	beqz	a4,e8825bde <mDNS_StartQuery_internal+0x7f0>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8825ba8:	02894703          	lbu	a4,40(s2)
    e8825bac:	02994683          	lbu	a3,41(s2)
    e8825bb0:	31445503          	lhu	a0,788(s0)
    e8825bb4:	0087171b          	slliw	a4,a4,0x8
    e8825bb8:	8f55                	or	a4,a4,a3
    e8825bba:	e43e                	sd	a5,8(sp)
    e8825bbc:	e03a                	sd	a4,0(sp)
    e8825bbe:	8a2f00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825bc2:	88aa                	mv	a7,a0
    e8825bc4:	67a2                	ld	a5,8(sp)
    e8825bc6:	6702                	ld	a4,0(sp)
    e8825bc8:	884e                	mv	a6,s3
    e8825bca:	01490693          	addi	a3,s2,20
    e8825bce:	8622                	mv	a2,s0
    e8825bd0:	00085597          	auipc	a1,0x85
    e8825bd4:	35858593          	addi	a1,a1,856 # e88aaf28 <mDNS_DomainTypeNames+0x1578>
    e8825bd8:	450d                	li	a0,3
    e8825bda:	0d3090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        question->qDNSServer = question->DuplicateOf->qDNSServer;
    e8825bde:	6834                	ld	a3,80(s0)
    e8825be0:	1686b783          	ld	a5,360(a3)
    e8825be4:	16f43423          	sd	a5,360(s0)
        LogInfo("FinalizeUnicastQuestion: Duplicate question %p (%p) %##s (%s), DNS Server %#a:%d",
    e8825be8:	000a2783          	lw	a5,0(s4)
    e8825bec:	cf8d                	beqz	a5,e8825c26 <mDNS_StartQuery_internal+0x838>
    e8825bee:	31445503          	lhu	a0,788(s0)
    e8825bf2:	e036                	sd	a3,0(sp)
    e8825bf4:	86cf00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825bf8:	87aa                	mv	a5,a0
    e8825bfa:	16843803          	ld	a6,360(s0)
    e8825bfe:	6682                	ld	a3,0(sp)
    e8825c00:	14080963          	beqz	a6,e8825d52 <mDNS_StartQuery_internal+0x964>
    e8825c04:	02884703          	lbu	a4,40(a6)
    e8825c08:	02984883          	lbu	a7,41(a6)
    e8825c0c:	0851                	addi	a6,a6,20
    e8825c0e:	0722                	slli	a4,a4,0x8
    e8825c10:	00e8e8b3          	or	a7,a7,a4
    e8825c14:	8622                	mv	a2,s0
    e8825c16:	874e                	mv	a4,s3
    e8825c18:	00085597          	auipc	a1,0x85
    e8825c1c:	39058593          	addi	a1,a1,912 # e88aafa8 <mDNS_DomainTypeNames+0x15f8>
    e8825c20:	450d                	li	a0,3
    e8825c22:	08b090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    ActivateUnicastQuery(m, question, mDNSfalse);
    e8825c26:	4601                	li	a2,0
    e8825c28:	85a2                	mv	a1,s0
    e8825c2a:	8526                	mv	a0,s1
    e8825c2c:	f34fe0ef          	jal	ra,e8824360 <ActivateUnicastQuery>
    if (purge)
    e8825c30:	040b8e63          	beqz	s7,e8825c8c <mDNS_StartQuery_internal+0x89e>
        question->DelayAnswering = 0;
    e8825c34:	00042623          	sw	zero,12(s0)
        mDNS_PurgeForQuestion(m, question);
    e8825c38:	85a2                	mv	a1,s0
    e8825c3a:	8526                	mv	a0,s1
    e8825c3c:	9effa0ef          	jal	ra,e882062a <mDNS_PurgeForQuestion>
    if (question->LongLived)
    e8825c40:	31844783          	lbu	a5,792(s0)
    e8825c44:	ee078be3          	beqz	a5,e8825b3a <mDNS_StartQuery_internal+0x74c>
    if (!m->LLQNAT.clientCallback)
    e8825c48:	6591                	lui	a1,0x4
    e8825c4a:	00b487b3          	add	a5,s1,a1
    e8825c4e:	be07b703          	ld	a4,-1056(a5)
    e8825c52:	ee0714e3          	bnez	a4,e8825b3a <mDNS_StartQuery_internal+0x74c>
        m->LLQNAT.Protocol       = NATOp_MapUDP;
    e8825c56:	4705                	li	a4,1
    e8825c58:	bce78a23          	sb	a4,-1068(a5)
        m->LLQNAT.IntPort        = m->UnicastPort4;
    e8825c5c:	0144d703          	lhu	a4,20(s1)
        mDNS_StartNATOperation_internal(m, &m->LLQNAT);
    e8825c60:	b9858593          	addi	a1,a1,-1128 # 3b98 <memcmp-0xe87fc468>
    e8825c64:	95a6                	add	a1,a1,s1
        m->LLQNAT.IntPort        = m->UnicastPort4;
    e8825c66:	bce79b23          	sh	a4,-1066(a5)
        m->LLQNAT.RequestedPort  = m->UnicastPort4;
    e8825c6a:	0144d703          	lhu	a4,20(s1)
        mDNS_StartNATOperation_internal(m, &m->LLQNAT);
    e8825c6e:	8526                	mv	a0,s1
        m->LLQNAT.RequestedPort  = m->UnicastPort4;
    e8825c70:	bce79c23          	sh	a4,-1064(a5)
        m->LLQNAT.clientCallback = LLQNATCallback;
    e8825c74:	ffff7717          	auipc	a4,0xffff7
    e8825c78:	9d270713          	addi	a4,a4,-1582 # e881c646 <LLQNATCallback>
    e8825c7c:	bee7b023          	sd	a4,-1056(a5)
        m->LLQNAT.clientContext  = (void*)1; // Means LLQ NAT Traversal just started
    e8825c80:	4705                	li	a4,1
    e8825c82:	bee7b423          	sd	a4,-1048(a5)
        mDNS_StartNATOperation_internal(m, &m->LLQNAT);
    e8825c86:	6f10c0ef          	jal	ra,e8832b76 <mDNS_StartNATOperation_internal>
    e8825c8a:	bd45                	j	e8825b3a <mDNS_StartQuery_internal+0x74c>
    else if (!question->DuplicateOf && DNSSECQuestion(question))
    e8825c8c:	683c                	ld	a5,80(s0)
    e8825c8e:	fbcd                	bnez	a5,e8825c40 <mDNS_StartQuery_internal+0x852>
    e8825c90:	32444783          	lbu	a5,804(s0)
    e8825c94:	eb91                	bnez	a5,e8825ca8 <mDNS_StartQuery_internal+0x8ba>
    e8825c96:	14a44783          	lbu	a5,330(s0)
    e8825c9a:	e799                	bnez	a5,e8825ca8 <mDNS_StartQuery_internal+0x8ba>
    e8825c9c:	32544783          	lbu	a5,805(s0)
    e8825ca0:	d3c5                	beqz	a5,e8825c40 <mDNS_StartQuery_internal+0x852>
    e8825ca2:	32644783          	lbu	a5,806(s0)
    e8825ca6:	dfc9                	beqz	a5,e8825c40 <mDNS_StartQuery_internal+0x852>
    CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e8825ca8:	440c                	lw	a1,8(s0)
    e8825caa:	864e                	mv	a2,s3
    e8825cac:	8526                	mv	a0,s1
    e8825cae:	99bf80ef          	jal	ra,e881e648 <CacheGroupForName>
    for (rp = cg ? cg->members : mDNSNULL; rp; rp = rp->next)
    e8825cb2:	d559                	beqz	a0,e8825c40 <mDNS_StartQuery_internal+0x852>
    e8825cb4:	01053903          	ld	s2,16(a0) # ffffffffffff0010 <__DRAM0_INF_BASE+0xffffffff00000010>
            if (rp->resrec.RecordType != kDNSRecordTypePacketNegative || !rp->nsec)
    e8825cb8:	0f000a13          	li	s4,240
                    LogInfo("CheckForDNSSECRecords: Flushing %s", CRDisplayString(m, rp));
    e8825cbc:	000afa97          	auipc	s5,0xaf
    e8825cc0:	db8a8a93          	addi	s5,s5,-584 # e88d4a74 <mDNS_LoggingEnabled>
    e8825cc4:	03b48b13          	addi	s6,s1,59
    e8825cc8:	00085b97          	auipc	s7,0x85
    e8825ccc:	338b8b93          	addi	s7,s7,824 # e88ab000 <mDNS_DomainTypeNames+0x1650>
    for (rp = cg ? cg->members : mDNSNULL; rp; rp = rp->next)
    e8825cd0:	f60908e3          	beqz	s2,e8825c40 <mDNS_StartQuery_internal+0x852>
        if (SameNameRecordAnswersQuestion(&rp->resrec, q))
    e8825cd4:	00890993          	addi	s3,s2,8
    e8825cd8:	85a2                	mv	a1,s0
    e8825cda:	854e                	mv	a0,s3
    e8825cdc:	9aef00ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e8825ce0:	cd15                	beqz	a0,e8825d1c <mDNS_StartQuery_internal+0x92e>
            if (rp->resrec.RecordType != kDNSRecordTypePacketNegative || !rp->nsec)
    e8825ce2:	00894783          	lbu	a5,8(s2)
    e8825ce6:	01479563          	bne	a5,s4,e8825cf0 <mDNS_StartQuery_internal+0x902>
    e8825cea:	07893783          	ld	a5,120(s2)
    e8825cee:	e79d                	bnez	a5,e8825d1c <mDNS_StartQuery_internal+0x92e>
                if (!rp->CRDNSSECQuestion)
    e8825cf0:	06d94783          	lbu	a5,109(s2)
    e8825cf4:	e785                	bnez	a5,e8825d1c <mDNS_StartQuery_internal+0x92e>
                    LogInfo("CheckForDNSSECRecords: Flushing %s", CRDisplayString(m, rp));
    e8825cf6:	000aa783          	lw	a5,0(s5)
    e8825cfa:	cf89                	beqz	a5,e8825d14 <mDNS_StartQuery_internal+0x926>
    e8825cfc:	03093583          	ld	a1,48(s2)
    e8825d00:	865a                	mv	a2,s6
    e8825d02:	854e                	mv	a0,s3
    e8825d04:	0591                	addi	a1,a1,4
    e8825d06:	d0ff00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8825d0a:	862a                	mv	a2,a0
    e8825d0c:	85de                	mv	a1,s7
    e8825d0e:	450d                	li	a0,3
    e8825d10:	79c090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    mDNS_PurgeCacheResourceRecord(m, rp);
    e8825d14:	85ca                	mv	a1,s2
    e8825d16:	8526                	mv	a0,s1
    e8825d18:	8b3fa0ef          	jal	ra,e88205ca <mDNS_PurgeCacheResourceRecord>
    for (rp = cg ? cg->members : mDNSNULL; rp; rp = rp->next)
    e8825d1c:	00093903          	ld	s2,0(s2)
    e8825d20:	bf45                	j	e8825cd0 <mDNS_StartQuery_internal+0x8e2>
            if (purge)
    e8825d22:	e00b8ce3          	beqz	s7,e8825b3a <mDNS_StartQuery_internal+0x74c>
                LogInfo("mDNS_StartQuery_internal: Purging for %##s", question->qname.c);
    e8825d26:	000af797          	auipc	a5,0xaf
    e8825d2a:	d4e78793          	addi	a5,a5,-690 # e88d4a74 <mDNS_LoggingEnabled>
    e8825d2e:	439c                	lw	a5,0(a5)
    e8825d30:	cb89                	beqz	a5,e8825d42 <mDNS_StartQuery_internal+0x954>
    e8825d32:	864e                	mv	a2,s3
    e8825d34:	00085597          	auipc	a1,0x85
    e8825d38:	2f458593          	addi	a1,a1,756 # e88ab028 <mDNS_DomainTypeNames+0x1678>
    e8825d3c:	450d                	li	a0,3
    e8825d3e:	76e090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                mDNS_PurgeForQuestion(m, question);
    e8825d42:	85a2                	mv	a1,s0
    e8825d44:	8526                	mv	a0,s1
    e8825d46:	8e5fa0ef          	jal	ra,e882062a <mDNS_PurgeForQuestion>
    e8825d4a:	bbc5                	j	e8825b3a <mDNS_StartQuery_internal+0x74c>
        return(mStatus_NoCache);
    e8825d4c:	7541                	lui	a0,0xffff0
    e8825d4e:	1559                	addi	a0,a0,-10
}
    e8825d50:	8082                	ret
        LogInfo("FinalizeUnicastQuestion: Duplicate question %p (%p) %##s (%s), DNS Server %#a:%d",
    e8825d52:	000ac703          	lbu	a4,0(s5)
    e8825d56:	001ac883          	lbu	a7,1(s5)
    e8825d5a:	bd55                	j	e8825c0e <mDNS_StartQuery_internal+0x820>
        LogInfo("InitDNSConfig: question %p %##s (%s) Timeout %d, DNS Server %#a:%d",
    e8825d5c:	0007e697          	auipc	a3,0x7e
    e8825d60:	84c68693          	addi	a3,a3,-1972 # e88a35a8 <zeroIPPort>
    e8825d64:	0006c783          	lbu	a5,0(a3)
    e8825d68:	0016c883          	lbu	a7,1(a3)
    e8825d6c:	babd                	j	e88256ea <mDNS_StartQuery_internal+0x2fc>
    *q = question;
    e8825d6e:	e380                	sd	s0,0(a5)
    question->ThisQInterval     = InitialQuestionInterval;                  // MUST be > zero for an active question
    e8825d70:	000afa97          	auipc	s5,0xaf
    e8825d74:	d10a8a93          	addi	s5,s5,-752 # e88d4a80 <mDNSPlatformOneSecond>
    question->next              = mDNSNULL;
    e8825d78:	00043023          	sd	zero,0(s0)
    question->ThisQInterval     = InitialQuestionInterval;                  // MUST be > zero for an active question
    e8825d7c:	000aa783          	lw	a5,0(s5)
    e8825d80:	470d                	li	a4,3
    question->qnamehash         = DomainNameHashValue(&question->qname);
    e8825d82:	854e                	mv	a0,s3
    question->ThisQInterval     = InitialQuestionInterval;                  // MUST be > zero for an active question
    e8825d84:	2789                	addiw	a5,a5,2
    e8825d86:	02e7c7bb          	divw	a5,a5,a4
    e8825d8a:	c85c                	sw	a5,20(s0)
    question->qnamehash         = DomainNameHashValue(&question->qname);
    e8825d8c:	b63ee0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e8825d90:	0005061b          	sext.w	a2,a0
    e8825d94:	c410                	sw	a2,8(s0)
    question->DelayAnswering    = CheckForSoonToExpireRecords(m, &question->qname, question->qnamehash, &purge);
    e8825d96:	01f10693          	addi	a3,sp,31
    e8825d9a:	85ce                	mv	a1,s3
    e8825d9c:	8526                	mv	a0,s1
    e8825d9e:	b31f80ef          	jal	ra,e881e8ce <CheckForSoonToExpireRecords>
    e8825da2:	c448                	sw	a0,12(s0)
    question->LastQTime         = m->timenow;
    e8825da4:	2404a783          	lw	a5,576(s1)
    question->ExpectUnicastResp = 0;
    e8825da8:	00042c23          	sw	zero,24(s0)
    question->LastQTime         = m->timenow;
    e8825dac:	c81c                	sw	a5,16(s0)
    question->LastAnswerPktNum  = m->PktNum;
    e8825dae:	27c4a783          	lw	a5,636(s1)
    question->CachedAnswerNeedsUpdate = mDNSfalse;
    e8825db2:	120408a3          	sb	zero,305(s0)
    question->RecentAnswerPkts  = 0;
    e8825db6:	02043023          	sd	zero,32(s0)
    question->LastAnswerPktNum  = m->PktNum;
    e8825dba:	cc5c                	sw	a5,28(s0)
    if (!(question->flags & kDNSServiceFlagsServiceIndex))
    e8825dbc:	1f842783          	lw	a5,504(s0)
   question->BrowseThreshold   = 0;
    e8825dc0:	02043423          	sd	zero,40(s0)
    question->UniqueAnswers     = 0;
    e8825dc4:	02042823          	sw	zero,48(s0)
    question->LOAddressAnswers  = 0;
    e8825dc8:	140400a3          	sb	zero,321(s0)
    question->FlappingInterface1 = mDNSNULL;
    e8825dcc:	02043c23          	sd	zero,56(s0)
    question->FlappingInterface2 = mDNSNULL;
    e8825dd0:	04043023          	sd	zero,64(s0)
    if (!(question->flags & kDNSServiceFlagsServiceIndex))
    e8825dd4:	02379713          	slli	a4,a5,0x23
    e8825dd8:	820756e3          	bgez	a4,e8825604 <mDNS_StartQuery_internal+0x216>
        LogInfo("InitCommonState: Query for %##s (%s), PID[%d], EUID[%d], ServiceID[%d] is already set by client", question->qname.c,
    e8825ddc:	000af797          	auipc	a5,0xaf
    e8825de0:	c9878793          	addi	a5,a5,-872 # e88d4a74 <mDNS_LoggingEnabled>
    e8825de4:	439c                	lw	a5,0(a5)
    e8825de6:	820782e3          	beqz	a5,e882560a <mDNS_StartQuery_internal+0x21c>
    e8825dea:	31445503          	lhu	a0,788(s0)
    e8825dee:	e73ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825df2:	86aa                	mv	a3,a0
    e8825df4:	1e842803          	lw	a6,488(s0)
    e8825df8:	33c42783          	lw	a5,828(s0)
    e8825dfc:	32842703          	lw	a4,808(s0)
    e8825e00:	864e                	mv	a2,s3
    e8825e02:	00085597          	auipc	a1,0x85
    e8825e06:	eae58593          	addi	a1,a1,-338 # e88aacb0 <mDNS_DomainTypeNames+0x1300>
    e8825e0a:	450d                	li	a0,3
    e8825e0c:	6a0090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8825e10:	ffaff06f          	j	e882560a <mDNS_StartQuery_internal+0x21c>

00000000e8825e14 <AnswerQuestionByFollowingCNAME>:
{
    e8825e14:	7159                	addi	sp,sp,-112
    e8825e16:	f0a2                	sd	s0,96(sp)
    e8825e18:	eca6                	sd	s1,88(sp)
    e8825e1a:	e8ca                	sd	s2,80(sp)
    e8825e1c:	e4ce                	sd	s3,72(sp)
    e8825e1e:	e0d2                	sd	s4,64(sp)
    e8825e20:	f486                	sd	ra,104(sp)
    e8825e22:	fc56                	sd	s5,56(sp)
    e8825e24:	f85a                	sd	s6,48(sp)
    e8825e26:	f45e                	sd	s7,40(sp)
    e8825e28:	842e                	mv	s0,a1
    const mDNSBool selfref = SameDomainName(&q->qname, &rr->rdata->u.name);
    e8825e2a:	21458913          	addi	s2,a1,532
    e8825e2e:	760c                	ld	a1,40(a2)
{
    e8825e30:	89aa                	mv	s3,a0
    const mDNSBool selfref = SameDomainName(&q->qname, &rr->rdata->u.name);
    e8825e32:	854a                	mv	a0,s2
    e8825e34:	0591                	addi	a1,a1,4
{
    e8825e36:	84b2                	mv	s1,a2
    const mDNSBool selfref = SameDomainName(&q->qname, &rr->rdata->u.name);
    e8825e38:	a12ed0ef          	jal	ra,e881304a <SameDomainName>
    e8825e3c:	8a2a                	mv	s4,a0
    if (q->CNAMEReferrals >= 10 || selfref)
    e8825e3e:	13c42783          	lw	a5,316(s0)
    e8825e42:	4725                	li	a4,9
    e8825e44:	00f76363          	bltu	a4,a5,e8825e4a <AnswerQuestionByFollowingCNAME+0x36>
    e8825e48:	c13d                	beqz	a0,e8825eae <AnswerQuestionByFollowingCNAME+0x9a>
        LogMsg("AnswerQuestionByFollowingCNAME: %p %##s (%s) NOT following CNAME referral %d%s for %s",
    e8825e4a:	31445503          	lhu	a0,788(s0)
    e8825e4e:	e13ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825e52:	872a                	mv	a4,a0
    e8825e54:	13c42783          	lw	a5,316(s0)
    e8825e58:	0007e817          	auipc	a6,0x7e
    e8825e5c:	42880813          	addi	a6,a6,1064 # e88a4280 <end.8789+0xbd8>
    e8825e60:	000a1663          	bnez	s4,e8825e6c <AnswerQuestionByFollowingCNAME+0x58>
    e8825e64:	0009b817          	auipc	a6,0x9b
    e8825e68:	40c80813          	addi	a6,a6,1036 # e88c1270 <kHTTPServerClass+0x90>
    e8825e6c:	748c                	ld	a1,40(s1)
    e8825e6e:	03b98613          	addi	a2,s3,59
    e8825e72:	8526                	mv	a0,s1
    e8825e74:	0591                	addi	a1,a1,4
    e8825e76:	ec42                	sd	a6,24(sp)
    e8825e78:	e83e                	sd	a5,16(sp)
    e8825e7a:	e43a                	sd	a4,8(sp)
    e8825e7c:	b99f00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
}
    e8825e80:	64e6                	ld	s1,88(sp)
        LogMsg("AnswerQuestionByFollowingCNAME: %p %##s (%s) NOT following CNAME referral %d%s for %s",
    e8825e82:	8622                	mv	a2,s0
}
    e8825e84:	7406                	ld	s0,96(sp)
        LogMsg("AnswerQuestionByFollowingCNAME: %p %##s (%s) NOT following CNAME referral %d%s for %s",
    e8825e86:	6862                	ld	a6,24(sp)
    e8825e88:	67c2                	ld	a5,16(sp)
    e8825e8a:	6722                	ld	a4,8(sp)
}
    e8825e8c:	70a6                	ld	ra,104(sp)
    e8825e8e:	69a6                	ld	s3,72(sp)
    e8825e90:	6a06                	ld	s4,64(sp)
    e8825e92:	7ae2                	ld	s5,56(sp)
    e8825e94:	7b42                	ld	s6,48(sp)
    e8825e96:	7ba2                	ld	s7,40(sp)
        LogMsg("AnswerQuestionByFollowingCNAME: %p %##s (%s) NOT following CNAME referral %d%s for %s",
    e8825e98:	86ca                	mv	a3,s2
}
    e8825e9a:	6946                	ld	s2,80(sp)
        LogMsg("AnswerQuestionByFollowingCNAME: %p %##s (%s) NOT following CNAME referral %d%s for %s",
    e8825e9c:	88aa                	mv	a7,a0
    e8825e9e:	0007e597          	auipc	a1,0x7e
    e8825ea2:	3fa58593          	addi	a1,a1,1018 # e88a4298 <end.8789+0xbf0>
    e8825ea6:	4501                	li	a0,0
}
    e8825ea8:	6165                	addi	sp,sp,112
        LogMsg("AnswerQuestionByFollowingCNAME: %p %##s (%s) NOT following CNAME referral %d%s for %s",
    e8825eaa:	6020906f          	j	e882f4ac <LogMsgWithLevel>
        const mDNSu32 c = q->CNAMEReferrals + 1;        // Stash a copy of the new q->CNAMEReferrals value
    e8825eae:	00178a9b          	addiw	s5,a5,1
        LogInfo("AnswerQuestionByFollowingCNAME: %p %##s (%s) following CNAME referral %d for %s",
    e8825eb2:	000af797          	auipc	a5,0xaf
    e8825eb6:	bc278793          	addi	a5,a5,-1086 # e88d4a74 <mDNS_LoggingEnabled>
    e8825eba:	4398                	lw	a4,0(a5)
        UDPSocket *sock = q->LocalSocket;
    e8825ebc:	16043b03          	ld	s6,352(s0)
        q->LocalSocket = mDNSNULL;
    e8825ec0:	16043023          	sd	zero,352(s0)
        mDNSOpaque16 id = q->TargetQID;
    e8825ec4:	21245b83          	lhu	s7,530(s0)
        LogInfo("AnswerQuestionByFollowingCNAME: %p %##s (%s) following CNAME referral %d for %s",
    e8825ec8:	8a3e                	mv	s4,a5
    e8825eca:	cf05                	beqz	a4,e8825f02 <AnswerQuestionByFollowingCNAME+0xee>
    e8825ecc:	31445503          	lhu	a0,788(s0)
    e8825ed0:	d91ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825ed4:	e82a                	sd	a0,16(sp)
    e8825ed6:	748c                	ld	a1,40(s1)
    e8825ed8:	13c42783          	lw	a5,316(s0)
    e8825edc:	03b98613          	addi	a2,s3,59
    e8825ee0:	0591                	addi	a1,a1,4
    e8825ee2:	8526                	mv	a0,s1
    e8825ee4:	e43e                	sd	a5,8(sp)
    e8825ee6:	b2ff00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8825eea:	882a                	mv	a6,a0
    e8825eec:	67a2                	ld	a5,8(sp)
    e8825eee:	6742                	ld	a4,16(sp)
    e8825ef0:	86ca                	mv	a3,s2
    e8825ef2:	8622                	mv	a2,s0
    e8825ef4:	0007e597          	auipc	a1,0x7e
    e8825ef8:	3fc58593          	addi	a1,a1,1020 # e88a42f0 <end.8789+0xc48>
    e8825efc:	450d                	li	a0,3
    e8825efe:	5ae090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNS_StopQuery_internal(m, q);                              // Stop old query
    e8825f02:	85a2                	mv	a1,s0
    e8825f04:	854e                	mv	a0,s3
    e8825f06:	cbcfb0ef          	jal	ra,e88213c2 <mDNS_StopQuery_internal>
        AssignDomainName(&q->qname, &rr->rdata->u.name);            // Update qname
    e8825f0a:	7488                	ld	a0,40(s1)
    e8825f0c:	10450593          	addi	a1,a0,260 # ffffffffffff0104 <__DRAM0_INF_BASE+0xffffffff00000104>
    e8825f10:	0511                	addi	a0,a0,4
    e8825f12:	a3aed0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8825f16:	0005061b          	sext.w	a2,a0
    e8825f1a:	10000793          	li	a5,256
    e8825f1e:	08c7ea63          	bltu	a5,a2,e8825fb2 <AnswerQuestionByFollowingCNAME+0x19e>
    e8825f22:	748c                	ld	a1,40(s1)
    e8825f24:	854a                	mv	a0,s2
    e8825f26:	0591                	addi	a1,a1,4
    e8825f28:	379090ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        q->qnamehash = DomainNameHashValue(&q->qname);              // and namehash
    e8825f2c:	854a                	mv	a0,s2
    e8825f2e:	9c1ee0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e8825f32:	c408                	sw	a0,8(s0)
        if (!mDNSOpaque16IsZero(q->TargetQID) && IsLocalDomain(&q->qname))
    e8825f34:	21245783          	lhu	a5,530(s0)
    e8825f38:	c7b1                	beqz	a5,e8825f84 <AnswerQuestionByFollowingCNAME+0x170>
    e8825f3a:	854a                	mv	a0,s2
    e8825f3c:	966ed0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8825f40:	c131                	beqz	a0,e8825f84 <AnswerQuestionByFollowingCNAME+0x170>
            LogInfo("AnswerQuestionByFollowingCNAME: Resolving a .local CNAME %p %##s (%s) Record %s",
    e8825f42:	000a2783          	lw	a5,0(s4)
    e8825f46:	cb85                	beqz	a5,e8825f76 <AnswerQuestionByFollowingCNAME+0x162>
    e8825f48:	31445503          	lhu	a0,788(s0)
    e8825f4c:	d15ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8825f50:	e42a                	sd	a0,8(sp)
    e8825f52:	748c                	ld	a1,40(s1)
    e8825f54:	03b98613          	addi	a2,s3,59
    e8825f58:	8526                	mv	a0,s1
    e8825f5a:	0591                	addi	a1,a1,4
    e8825f5c:	ab9f00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8825f60:	87aa                	mv	a5,a0
    e8825f62:	6722                	ld	a4,8(sp)
    e8825f64:	86ca                	mv	a3,s2
    e8825f66:	8622                	mv	a2,s0
    e8825f68:	0007e597          	auipc	a1,0x7e
    e8825f6c:	3d858593          	addi	a1,a1,984 # e88a4340 <end.8789+0xc98>
    e8825f70:	450d                	li	a0,3
    e8825f72:	53a090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            q->InterfaceID = mDNSInterface_Unicast;
    e8825f76:	0007d797          	auipc	a5,0x7d
    e8825f7a:	e0a78793          	addi	a5,a5,-502 # e88a2d80 <mDNSInterface_Unicast>
    e8825f7e:	639c                	ld	a5,0(a5)
    e8825f80:	1ef43823          	sd	a5,496(s0)
        mDNS_StartQuery_internal(m, q);                             // start new query
    e8825f84:	85a2                	mv	a1,s0
    e8825f86:	854e                	mv	a0,s3
    e8825f88:	c66ff0ef          	jal	ra,e88253ee <mDNS_StartQuery_internal>
        q->CNAMEReferrals = c;
    e8825f8c:	13542e23          	sw	s5,316(s0)
        if (sock)
    e8825f90:	020b0863          	beqz	s6,e8825fc0 <AnswerQuestionByFollowingCNAME+0x1ac>
            if (q->DuplicateOf) mDNSPlatformUDPClose(sock);
    e8825f94:	683c                	ld	a5,80(s0)
    e8825f96:	c38d                	beqz	a5,e8825fb8 <AnswerQuestionByFollowingCNAME+0x1a4>
}
    e8825f98:	7406                	ld	s0,96(sp)
    e8825f9a:	70a6                	ld	ra,104(sp)
    e8825f9c:	64e6                	ld	s1,88(sp)
    e8825f9e:	6946                	ld	s2,80(sp)
    e8825fa0:	69a6                	ld	s3,72(sp)
    e8825fa2:	6a06                	ld	s4,64(sp)
    e8825fa4:	7ae2                	ld	s5,56(sp)
    e8825fa6:	7ba2                	ld	s7,40(sp)
            if (q->DuplicateOf) mDNSPlatformUDPClose(sock);
    e8825fa8:	855a                	mv	a0,s6
}
    e8825faa:	7b42                	ld	s6,48(sp)
    e8825fac:	6165                	addi	sp,sp,112
            if (q->DuplicateOf) mDNSPlatformUDPClose(sock);
    e8825fae:	1670906f          	j	e882f914 <mDNSPlatformUDPClose>
        AssignDomainName(&q->qname, &rr->rdata->u.name);            // Update qname
    e8825fb2:	20040a23          	sb	zero,532(s0)
    e8825fb6:	bf9d                	j	e8825f2c <AnswerQuestionByFollowingCNAME+0x118>
                q->LocalSocket = sock;
    e8825fb8:	17643023          	sd	s6,352(s0)
                q->TargetQID = id;
    e8825fbc:	21741923          	sh	s7,530(s0)
}
    e8825fc0:	70a6                	ld	ra,104(sp)
    e8825fc2:	7406                	ld	s0,96(sp)
    e8825fc4:	64e6                	ld	s1,88(sp)
    e8825fc6:	6946                	ld	s2,80(sp)
    e8825fc8:	69a6                	ld	s3,72(sp)
    e8825fca:	6a06                	ld	s4,64(sp)
    e8825fcc:	7ae2                	ld	s5,56(sp)
    e8825fce:	7b42                	ld	s6,48(sp)
    e8825fd0:	7ba2                	ld	s7,40(sp)
    e8825fd2:	6165                	addi	sp,sp,112
    e8825fd4:	8082                	ret

00000000e8825fd6 <AnswerLocalQuestionWithLocalAuthRecord>:
{
    e8825fd6:	7139                	addi	sp,sp,-64
    e8825fd8:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8825fdc:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8825fe0:	fc06                	sd	ra,56(sp)
    e8825fe2:	f852                	sd	s4,48(sp)
    DNSQuestion *q = m->CurrentQuestion;
    e8825fe4:	2c853483          	ld	s1,712(a0)
{
    e8825fe8:	842a                	mv	s0,a0
    e8825fea:	892e                	mv	s2,a1
    if (!q)
    e8825fec:	e885                	bnez	s1,e882601c <AnswerLocalQuestionWithLocalAuthRecord+0x46>
        LogMsg("AnswerLocalQuestionWithLocalAuthRecord: ERROR!! CurrentQuestion NULL while answering with %s", ARDisplayString(m, rr));
    e8825fee:	798c                	ld	a1,48(a1)
    e8825ff0:	03b50613          	addi	a2,a0,59
    e8825ff4:	00890513          	addi	a0,s2,8
    e8825ff8:	0591                	addi	a1,a1,4
    e8825ffa:	a1bf00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
}
    e8825ffe:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8826002:	70e2                	ld	ra,56(sp)
    e8826004:	7a42                	ld	s4,48(sp)
    e8826006:	fd31490b          	ldd	s2,s3,(sp),2,4
        LogMsg("AnswerLocalQuestionWithLocalAuthRecord: ERROR!! CurrentQuestion NULL while answering with %s", ARDisplayString(m, rr));
    e882600a:	862a                	mv	a2,a0
    e882600c:	0007e597          	auipc	a1,0x7e
    e8826010:	1b458593          	addi	a1,a1,436 # e88a41c0 <end.8789+0xb18>
    e8826014:	4501                	li	a0,0
}
    e8826016:	6121                	addi	sp,sp,64
        LogMsg("AnswerLocalQuestionWithLocalAuthRecord: ERROR!! CurrentQuestion NULL while answering with %s", ARDisplayString(m, rr));
    e8826018:	4940906f          	j	e882f4ac <LogMsgWithLevel>
    e882601c:	89b2                	mv	s3,a2
    followcname = FollowCNAME(q, &rr->resrec, AddRecord);
    e882601e:	0085c683          	lbu	a3,8(a1)
    e8826022:	4a01                	li	s4,0
    e8826024:	ce19                	beqz	a2,e8826042 <AnswerLocalQuestionWithLocalAuthRecord+0x6c>
    e8826026:	3144d703          	lhu	a4,788(s1)
    e882602a:	4795                	li	a5,5
    e882602c:	00f70b63          	beq	a4,a5,e8826042 <AnswerLocalQuestionWithLocalAuthRecord+0x6c>
    e8826030:	0f000793          	li	a5,240
    e8826034:	00f68763          	beq	a3,a5,e8826042 <AnswerLocalQuestionWithLocalAuthRecord+0x6c>
    e8826038:	00a5da03          	lhu	s4,10(a1)
    e882603c:	1a6d                	addi	s4,s4,-5
    e882603e:	001a3a13          	seqz	s4,s4
    if (!(rr->resrec.RecordType & kDNSRecordTypeActiveMask))
    e8826042:	03c6f793          	andi	a5,a3,60
    e8826046:	e7b1                	bnez	a5,e8826092 <AnswerLocalQuestionWithLocalAuthRecord+0xbc>
        LogMsg("AnswerLocalQuestionWithLocalAuthRecord: *NOT* delivering %s event for local record type %X %s",
    e8826048:	0007e497          	auipc	s1,0x7e
    e882604c:	16848493          	addi	s1,s1,360 # e88a41b0 <end.8789+0xb08>
    e8826050:	00099663          	bnez	s3,e882605c <AnswerLocalQuestionWithLocalAuthRecord+0x86>
    e8826054:	0007e497          	auipc	s1,0x7e
    e8826058:	16448493          	addi	s1,s1,356 # e88a41b8 <end.8789+0xb10>
    e882605c:	03093583          	ld	a1,48(s2)
    e8826060:	03b40613          	addi	a2,s0,59
    e8826064:	00890513          	addi	a0,s2,8
    e8826068:	0591                	addi	a1,a1,4
    e882606a:	e436                	sd	a3,8(sp)
    e882606c:	9a9f00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
}
    e8826070:	7a42                	ld	s4,48(sp)
        LogMsg("AnswerLocalQuestionWithLocalAuthRecord: *NOT* delivering %s event for local record type %X %s",
    e8826072:	8626                	mv	a2,s1
}
    e8826074:	fa91440b          	ldd	s0,s1,(sp),1,4
        LogMsg("AnswerLocalQuestionWithLocalAuthRecord: *NOT* delivering %s event for local record type %X %s",
    e8826078:	66a2                	ld	a3,8(sp)
}
    e882607a:	70e2                	ld	ra,56(sp)
    e882607c:	fd31490b          	ldd	s2,s3,(sp),2,4
        LogMsg("AnswerLocalQuestionWithLocalAuthRecord: *NOT* delivering %s event for local record type %X %s",
    e8826080:	872a                	mv	a4,a0
    e8826082:	0007e597          	auipc	a1,0x7e
    e8826086:	19e58593          	addi	a1,a1,414 # e88a4220 <end.8789+0xb78>
    e882608a:	4501                	li	a0,0
}
    e882608c:	6121                	addi	sp,sp,64
        LogMsg("AnswerLocalQuestionWithLocalAuthRecord: *NOT* delivering %s event for local record type %X %s",
    e882608e:	41e0906f          	j	e882f4ac <LogMsgWithLevel>
    if (AddRecord) rr->AnsweredLocalQ = mDNStrue;
    e8826092:	00098563          	beqz	s3,e882609c <AnswerLocalQuestionWithLocalAuthRecord+0xc6>
    e8826096:	4785                	li	a5,1
    e8826098:	0af90ca3          	sb	a5,185(s2)
    mDNS_DropLockBeforeCallback();      // Allow client to legally make mDNS API calls from the callback
    e882609c:	585c                	lw	a5,52(s0)
    e882609e:	5814                	lw	a3,48(s0)
    e88260a0:	0017871b          	addiw	a4,a5,1
    e88260a4:	d858                	sw	a4,52(s0)
    e88260a6:	00d70d63          	beq	a4,a3,e88260c0 <AnswerLocalQuestionWithLocalAuthRecord+0xea>
    e88260aa:	00082617          	auipc	a2,0x82
    e88260ae:	e5e60613          	addi	a2,a2,-418 # e88a7f08 <__func__.9717>
    e88260b2:	0007e597          	auipc	a1,0x7e
    e88260b6:	cb658593          	addi	a1,a1,-842 # e88a3d68 <end.8789+0x6c0>
    e88260ba:	4501                	li	a0,0
    e88260bc:	3f0090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (q->QuestionCallback && !q->NoAnswer)
    e88260c0:	3484b703          	ld	a4,840(s1)
    e88260c4:	c369                	beqz	a4,e8826186 <AnswerLocalQuestionWithLocalAuthRecord+0x1b0>
    e88260c6:	1b24c783          	lbu	a5,434(s1)
    e88260ca:	efd5                	bnez	a5,e8826186 <AnswerLocalQuestionWithLocalAuthRecord+0x1b0>
        q->CurrentAnswers += AddRecord ? 1 : -1;
    e88260cc:	50dc                	lw	a5,36(s1)
    e88260ce:	4685                	li	a3,1
    e88260d0:	00099363          	bnez	s3,e88260d6 <AnswerLocalQuestionWithLocalAuthRecord+0x100>
    e88260d4:	56fd                	li	a3,-1
    e88260d6:	9fb5                	addw	a5,a5,a3
    e88260d8:	d0dc                	sw	a5,36(s1)
        if (UniqueLocalOnlyRecord(rr))
    e88260da:	0ac94683          	lbu	a3,172(s2)
    e88260de:	4791                	li	a5,4
    e88260e0:	08f69d63          	bne	a3,a5,e882617a <AnswerLocalQuestionWithLocalAuthRecord+0x1a4>
    e88260e4:	00894783          	lbu	a5,8(s2)
    e88260e8:	0327f793          	andi	a5,a5,50
    e88260ec:	c7d9                	beqz	a5,e882617a <AnswerLocalQuestionWithLocalAuthRecord+0x1a4>
    e88260ee:	00a95783          	lhu	a5,10(s2)
    e88260f2:	4685                	li	a3,1
    e88260f4:	ffb7f613          	andi	a2,a5,-5
    e88260f8:	00d60663          	beq	a2,a3,e8826104 <AnswerLocalQuestionWithLocalAuthRecord+0x12e>
    e88260fc:	9bbd                	andi	a5,a5,-17
    e88260fe:	46b1                	li	a3,12
    e8826100:	06d79d63          	bne	a5,a3,e882617a <AnswerLocalQuestionWithLocalAuthRecord+0x1a4>
            if (!followcname || q->ReturnIntermed)
    e8826104:	000a0563          	beqz	s4,e882610e <AnswerLocalQuestionWithLocalAuthRecord+0x138>
    e8826108:	31b4c783          	lbu	a5,795(s1)
    e882610c:	c395                	beqz	a5,e8826130 <AnswerLocalQuestionWithLocalAuthRecord+0x15a>
                q->ThisQInterval = 0;
    e882610e:	0004aa23          	sw	zero,20(s1)
                q->LOAddressAnswers += AddRecord ? 1 : -1;
    e8826112:	14148783          	lb	a5,321(s1)
    e8826116:	4685                	li	a3,1
    e8826118:	00099363          	bnez	s3,e882611e <AnswerLocalQuestionWithLocalAuthRecord+0x148>
    e882611c:	56fd                	li	a3,-1
    e882611e:	9fb5                	addw	a5,a5,a3
    e8826120:	14f480a3          	sb	a5,321(s1)
                q->QuestionCallback(m, q, &rr->resrec, AddRecord);
    e8826124:	86ce                	mv	a3,s3
    e8826126:	00890613          	addi	a2,s2,8
    e882612a:	85a6                	mv	a1,s1
    e882612c:	8522                	mv	a0,s0
    e882612e:	9702                	jalr	a4
            mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8826130:	5814                	lw	a3,48(s0)
    e8826132:	5858                	lw	a4,52(s0)
    e8826134:	00e68d63          	beq	a3,a4,e882614e <AnswerLocalQuestionWithLocalAuthRecord+0x178>
    e8826138:	00082617          	auipc	a2,0x82
    e882613c:	dd060613          	addi	a2,a2,-560 # e88a7f08 <__func__.9717>
    e8826140:	0007e597          	auipc	a1,0x7e
    e8826144:	c6858593          	addi	a1,a1,-920 # e88a3da8 <end.8789+0x700>
    e8826148:	4501                	li	a0,0
    e882614a:	362090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882614e:	585c                	lw	a5,52(s0)
    e8826150:	37fd                	addiw	a5,a5,-1
    e8826152:	d85c                	sw	a5,52(s0)
            if (followcname && m->CurrentQuestion == q)
    e8826154:	040a0b63          	beqz	s4,e88261aa <AnswerLocalQuestionWithLocalAuthRecord+0x1d4>
    e8826158:	2c843783          	ld	a5,712(s0)
    e882615c:	04979763          	bne	a5,s1,e88261aa <AnswerLocalQuestionWithLocalAuthRecord+0x1d4>
                AnswerQuestionByFollowingCNAME(m, q, &rr->resrec);
    e8826160:	85a6                	mv	a1,s1
    e8826162:	8522                	mv	a0,s0
}
    e8826164:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8826168:	70e2                	ld	ra,56(sp)
    e882616a:	7a42                	ld	s4,48(sp)
                AnswerQuestionByFollowingCNAME(m, q, &rr->resrec);
    e882616c:	00890613          	addi	a2,s2,8
}
    e8826170:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8826174:	6121                	addi	sp,sp,64
                AnswerQuestionByFollowingCNAME(m, q, &rr->resrec);
    e8826176:	c9fff06f          	j	e8825e14 <AnswerQuestionByFollowingCNAME>
            q->QuestionCallback(m, q, &rr->resrec, AddRecord);
    e882617a:	86ce                	mv	a3,s3
    e882617c:	00890613          	addi	a2,s2,8
    e8826180:	85a6                	mv	a1,s1
    e8826182:	8522                	mv	a0,s0
    e8826184:	9702                	jalr	a4
    mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8826186:	5814                	lw	a3,48(s0)
    e8826188:	5858                	lw	a4,52(s0)
    e882618a:	00e68d63          	beq	a3,a4,e88261a4 <AnswerLocalQuestionWithLocalAuthRecord+0x1ce>
    e882618e:	00082617          	auipc	a2,0x82
    e8826192:	d7a60613          	addi	a2,a2,-646 # e88a7f08 <__func__.9717>
    e8826196:	0007e597          	auipc	a1,0x7e
    e882619a:	c1258593          	addi	a1,a1,-1006 # e88a3da8 <end.8789+0x700>
    e882619e:	4501                	li	a0,0
    e88261a0:	30c090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88261a4:	585c                	lw	a5,52(s0)
    e88261a6:	37fd                	addiw	a5,a5,-1
    e88261a8:	d85c                	sw	a5,52(s0)
}
    e88261aa:	70e2                	ld	ra,56(sp)
    e88261ac:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88261b0:	7a42                	ld	s4,48(sp)
    e88261b2:	fd31490b          	ldd	s2,s3,(sp),2,4
    e88261b6:	6121                	addi	sp,sp,64
    e88261b8:	8082                	ret

00000000e88261ba <AnswerAllLocalQuestionsWithLocalAuthRecord>:
{
    e88261ba:	7139                	addi	sp,sp,-64
    e88261bc:	e422                	sd	s0,8(sp)
    e88261be:	e826                	sd	s1,16(sp)
    e88261c0:	f04e                	sd	s3,32(sp)
    e88261c2:	fc06                	sd	ra,56(sp)
    e88261c4:	ec4a                	sd	s2,24(sp)
    e88261c6:	f452                	sd	s4,40(sp)
    e88261c8:	f856                	sd	s5,48(sp)
    if (m->CurrentQuestion)
    e88261ca:	2c853903          	ld	s2,712(a0)
{
    e88261ce:	842a                	mv	s0,a0
    e88261d0:	84ae                	mv	s1,a1
    e88261d2:	89b2                	mv	s3,a2
    if (m->CurrentQuestion)
    e88261d4:	02090063          	beqz	s2,e88261f4 <AnswerAllLocalQuestionsWithLocalAuthRecord+0x3a>
        LogMsg("AnswerAllLocalQuestionsWithLocalAuthRecord ERROR m->CurrentQuestion already set: %##s (%s)",
    e88261d8:	31495503          	lhu	a0,788(s2)
    e88261dc:	a85ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88261e0:	86aa                	mv	a3,a0
    e88261e2:	21490613          	addi	a2,s2,532
    e88261e6:	0007e597          	auipc	a1,0x7e
    e88261ea:	ef258593          	addi	a1,a1,-270 # e88a40d8 <end.8789+0xa30>
    e88261ee:	4501                	li	a0,0
    e88261f0:	2bc090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = m->LocalOnlyQuestions;
    e88261f4:	2d043783          	ld	a5,720(s0)
        if (RRAny(rr))
    e88261f8:	4a0d                	li	s4,3
            answered = ResourceRecordAnswersQuestion(&rr->resrec, q);
    e88261fa:	00848a93          	addi	s5,s1,8
    m->CurrentQuestion = m->LocalOnlyQuestions;
    e88261fe:	2cf43423          	sd	a5,712(s0)
    while (m->CurrentQuestion && m->CurrentQuestion != m->NewLocalOnlyQuestions)
    e8826202:	2c843903          	ld	s2,712(s0)
    e8826206:	00090663          	beqz	s2,e8826212 <AnswerAllLocalQuestionsWithLocalAuthRecord+0x58>
    e882620a:	2d843783          	ld	a5,728(s0)
    e882620e:	04f91663          	bne	s2,a5,e882625a <AnswerAllLocalQuestionsWithLocalAuthRecord+0xa0>
    m->CurrentQuestion = mDNSNULL;
    e8826212:	2c043423          	sd	zero,712(s0)
    if (rr->ARType == AuthRecordLocalOnly || rr->ARType == AuthRecordP2P)
    e8826216:	0ac4c783          	lbu	a5,172(s1)
    e882621a:	4705                	li	a4,1
    e882621c:	37f1                	addiw	a5,a5,-4
    e882621e:	0ff7f793          	andi	a5,a5,255
    e8826222:	02f76363          	bltu	a4,a5,e8826248 <AnswerAllLocalQuestionsWithLocalAuthRecord+0x8e>
    m->CurrentQuestion = m->Questions;
    e8826226:	2b843783          	ld	a5,696(s0)
        if (RRAny(rr))
    e882622a:	4a0d                	li	s4,3
            answered = ResourceRecordAnswersQuestion(&rr->resrec, q);
    e882622c:	00848a93          	addi	s5,s1,8
    m->CurrentQuestion = m->Questions;
    e8826230:	2cf43423          	sd	a5,712(s0)
    while (m->CurrentQuestion && m->CurrentQuestion != m->NewQuestions)
    e8826234:	2c843903          	ld	s2,712(s0)
    e8826238:	00090663          	beqz	s2,e8826244 <AnswerAllLocalQuestionsWithLocalAuthRecord+0x8a>
    e882623c:	2c043783          	ld	a5,704(s0)
    e8826240:	04f91863          	bne	s2,a5,e8826290 <AnswerAllLocalQuestionsWithLocalAuthRecord+0xd6>
    m->CurrentQuestion = mDNSNULL;
    e8826244:	2c043423          	sd	zero,712(s0)
}
    e8826248:	70e2                	ld	ra,56(sp)
    e882624a:	6422                	ld	s0,8(sp)
    e882624c:	64c2                	ld	s1,16(sp)
    e882624e:	6962                	ld	s2,24(sp)
    e8826250:	7982                	ld	s3,32(sp)
    e8826252:	7a22                	ld	s4,40(sp)
    e8826254:	7ac2                	ld	s5,48(sp)
    e8826256:	6121                	addi	sp,sp,64
    e8826258:	8082                	ret
        if (RRAny(rr))
    e882625a:	0ac4c783          	lbu	a5,172(s1)
            answered = ResourceRecordAnswersQuestion(&rr->resrec, q);
    e882625e:	85ca                	mv	a1,s2
        if (RRAny(rr))
    e8826260:	02fa6463          	bltu	s4,a5,e8826288 <AnswerAllLocalQuestionsWithLocalAuthRecord+0xce>
            answered = ResourceRecordAnswersQuestion(&rr->resrec, q);
    e8826264:	8556                	mv	a0,s5
    e8826266:	d3bef0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
        if (answered)
    e882626a:	c511                	beqz	a0,e8826276 <AnswerAllLocalQuestionsWithLocalAuthRecord+0xbc>
            AnswerLocalQuestionWithLocalAuthRecord(m, rr, AddRecord);           // MUST NOT dereference q again
    e882626c:	864e                	mv	a2,s3
    e882626e:	85a6                	mv	a1,s1
    e8826270:	8522                	mv	a0,s0
    e8826272:	d65ff0ef          	jal	ra,e8825fd6 <AnswerLocalQuestionWithLocalAuthRecord>
        if (m->CurrentQuestion == q)    // If m->CurrentQuestion was not auto-advanced, do it ourselves now
    e8826276:	2c843783          	ld	a5,712(s0)
    e882627a:	f92794e3          	bne	a5,s2,e8826202 <AnswerAllLocalQuestionsWithLocalAuthRecord+0x48>
            m->CurrentQuestion = q->next;
    e882627e:	00093783          	ld	a5,0(s2)
    e8826282:	2cf43423          	sd	a5,712(s0)
    e8826286:	bfb5                	j	e8826202 <AnswerAllLocalQuestionsWithLocalAuthRecord+0x48>
            answered = LocalOnlyRecordAnswersQuestion(rr, q);
    e8826288:	8526                	mv	a0,s1
    e882628a:	830ee0ef          	jal	ra,e88142ba <LocalOnlyRecordAnswersQuestion>
    e882628e:	bff1                	j	e882626a <AnswerAllLocalQuestionsWithLocalAuthRecord+0xb0>
        if (RRAny(rr))
    e8826290:	0ac4c783          	lbu	a5,172(s1)
            answered = ResourceRecordAnswersQuestion(&rr->resrec, q);
    e8826294:	85ca                	mv	a1,s2
        if (RRAny(rr))
    e8826296:	02fa6463          	bltu	s4,a5,e88262be <AnswerAllLocalQuestionsWithLocalAuthRecord+0x104>
            answered = ResourceRecordAnswersQuestion(&rr->resrec, q);
    e882629a:	8556                	mv	a0,s5
    e882629c:	d05ef0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
        if (answered)
    e88262a0:	c511                	beqz	a0,e88262ac <AnswerAllLocalQuestionsWithLocalAuthRecord+0xf2>
            AnswerLocalQuestionWithLocalAuthRecord(m, rr, AddRecord);       // MUST NOT dereference q again
    e88262a2:	864e                	mv	a2,s3
    e88262a4:	85a6                	mv	a1,s1
    e88262a6:	8522                	mv	a0,s0
    e88262a8:	d2fff0ef          	jal	ra,e8825fd6 <AnswerLocalQuestionWithLocalAuthRecord>
        if (m->CurrentQuestion == q)    // If m->CurrentQuestion was not auto-advanced, do it ourselves now
    e88262ac:	2c843783          	ld	a5,712(s0)
    e88262b0:	f8f912e3          	bne	s2,a5,e8826234 <AnswerAllLocalQuestionsWithLocalAuthRecord+0x7a>
            m->CurrentQuestion = q->next;
    e88262b4:	00093783          	ld	a5,0(s2)
    e88262b8:	2cf43423          	sd	a5,712(s0)
    e88262bc:	bfa5                	j	e8826234 <AnswerAllLocalQuestionsWithLocalAuthRecord+0x7a>
            answered = LocalOnlyRecordAnswersQuestion(rr, q);
    e88262be:	8526                	mv	a0,s1
    e88262c0:	ffbed0ef          	jal	ra,e88142ba <LocalOnlyRecordAnswersQuestion>
    e88262c4:	bff1                	j	e88262a0 <AnswerAllLocalQuestionsWithLocalAuthRecord+0xe6>

00000000e88262c6 <CompleteDeregistration>:
{
    e88262c6:	1101                	addi	sp,sp,-32
    LogInfo("CompleteDeregistration: called for Resource record %s", ARDisplayString(m, rr));
    e88262c8:	000ae797          	auipc	a5,0xae
    e88262cc:	7ac78793          	addi	a5,a5,1964 # e88d4a74 <mDNS_LoggingEnabled>
{
    e88262d0:	e422                	sd	s0,8(sp)
    e88262d2:	e826                	sd	s1,16(sp)
    e88262d4:	ec06                	sd	ra,24(sp)
    LogInfo("CompleteDeregistration: called for Resource record %s", ARDisplayString(m, rr));
    e88262d6:	439c                	lw	a5,0(a5)
{
    e88262d8:	84aa                	mv	s1,a0
    e88262da:	842e                	mv	s0,a1
    LogInfo("CompleteDeregistration: called for Resource record %s", ARDisplayString(m, rr));
    e88262dc:	c38d                	beqz	a5,e88262fe <CompleteDeregistration+0x38>
    e88262de:	798c                	ld	a1,48(a1)
    e88262e0:	03b50613          	addi	a2,a0,59
    e88262e4:	00840513          	addi	a0,s0,8
    e88262e8:	0591                	addi	a1,a1,4
    e88262ea:	f2af00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88262ee:	862a                	mv	a2,a0
    e88262f0:	0007f597          	auipc	a1,0x7f
    e88262f4:	eb858593          	addi	a1,a1,-328 # e88a51a8 <end.8789+0x1b00>
    e88262f8:	450d                	li	a0,3
    e88262fa:	1b2090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    rr->resrec.RecordType = kDNSRecordTypeShared;
    e88262fe:	47a1                	li	a5,8
    e8826300:	00f40423          	sb	a5,8(s0)
    rr->WakeUp.HMAC       = zeroEthAddr;
    e8826304:	0007d797          	auipc	a5,0x7d
    e8826308:	29478793          	addi	a5,a5,660 # e88a3598 <zeroEthAddr>
    e882630c:	4398                	lw	a4,0(a5)
    e882630e:	0047d783          	lhu	a5,4(a5)
    rr->RequireGoodbye    = mDNSfalse;
    e8826312:	0a040c23          	sb	zero,184(s0)
    rr->WakeUp.HMAC       = zeroEthAddr;
    e8826316:	06e42f23          	sw	a4,126(s0)
    e882631a:	08f41123          	sh	a5,130(s0)
    if (rr->AnsweredLocalQ) { AnswerAllLocalQuestionsWithLocalAuthRecord(m, rr, mDNSfalse); rr->AnsweredLocalQ = mDNSfalse; }
    e882631e:	0b944783          	lbu	a5,185(s0)
    e8826322:	cb81                	beqz	a5,e8826332 <CompleteDeregistration+0x6c>
    e8826324:	4601                	li	a2,0
    e8826326:	85a2                	mv	a1,s0
    e8826328:	8526                	mv	a0,s1
    e882632a:	e91ff0ef          	jal	ra,e88261ba <AnswerAllLocalQuestionsWithLocalAuthRecord>
    e882632e:	0a040ca3          	sb	zero,185(s0)
    mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);     // Don't touch rr after this
    e8826332:	85a2                	mv	a1,s0
}
    e8826334:	6422                	ld	s0,8(sp)
    e8826336:	60e2                	ld	ra,24(sp)
    mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);     // Don't touch rr after this
    e8826338:	8526                	mv	a0,s1
}
    e882633a:	64c2                	ld	s1,16(sp)
    mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);     // Don't touch rr after this
    e882633c:	4601                	li	a2,0
}
    e882633e:	6105                	addi	sp,sp,32
    mDNS_Deregister_internal(m, rr, mDNS_Dereg_normal);     // Don't touch rr after this
    e8826340:	c2cfc06f          	j	e882276c <mDNS_Deregister_internal>

00000000e8826344 <DiscardDeregistrations>:
    if (m->CurrentRecord)
    e8826344:	678d                	lui	a5,0x3
{
    e8826346:	7139                	addi	sp,sp,-64
    if (m->CurrentRecord)
    e8826348:	97aa                	add	a5,a5,a0
{
    e882634a:	f026                	sd	s1,32(sp)
    e882634c:	fc06                	sd	ra,56(sp)
    e882634e:	ec22                	sd	s0,24(sp)
    e8826350:	f44a                	sd	s2,40(sp)
    e8826352:	f84e                	sd	s3,48(sp)
    e8826354:	84aa                	mv	s1,a0
    if (m->CurrentRecord)
    e8826356:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e882635a:	c105                	beqz	a0,e882637a <DiscardDeregistrations+0x36>
        LogMsg("DiscardDeregistrations ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e882635c:	790c                	ld	a1,48(a0)
    e882635e:	03b48613          	addi	a2,s1,59
    e8826362:	0521                	addi	a0,a0,8
    e8826364:	0591                	addi	a1,a1,4
    e8826366:	eaef00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882636a:	862a                	mv	a2,a0
    e882636c:	0007f597          	auipc	a1,0x7f
    e8826370:	1a458593          	addi	a1,a1,420 # e88a5510 <end.8789+0x1e68>
    e8826374:	4501                	li	a0,0
    e8826376:	136090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentRecord = m->ResourceRecords;
    e882637a:	678d                	lui	a5,0x3
    e882637c:	97a6                	add	a5,a5,s1
    e882637e:	1b87b703          	ld	a4,440(a5) # 31b8 <memcmp-0xe87fce48>
    while (m->CurrentRecord)
    e8826382:	843e                	mv	s0,a5
        if (!AuthRecord_uDNS(rr) && rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e8826384:	0007d917          	auipc	s2,0x7d
    e8826388:	9dc90913          	addi	s2,s2,-1572 # e88a2d60 <mDNSInterface_Any>
    m->CurrentRecord = m->ResourceRecords;
    e882638c:	1ce7b823          	sd	a4,464(a5)
        if (!AuthRecord_uDNS(rr) && rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e8826390:	4985                	li	s3,1
    while (m->CurrentRecord)
    e8826392:	1d043583          	ld	a1,464(s0)
    e8826396:	e981                	bnez	a1,e88263a6 <DiscardDeregistrations+0x62>
}
    e8826398:	70e2                	ld	ra,56(sp)
    e882639a:	6462                	ld	s0,24(sp)
    e882639c:	7482                	ld	s1,32(sp)
    e882639e:	7922                	ld	s2,40(sp)
    e88263a0:	79c2                	ld	s3,48(sp)
    e88263a2:	6121                	addi	sp,sp,64
    e88263a4:	8082                	ret
        if (!AuthRecord_uDNS(rr) && rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e88263a6:	7198                	ld	a4,32(a1)
    e88263a8:	00093783          	ld	a5,0(s2)
    e88263ac:	00f70a63          	beq	a4,a5,e88263c0 <DiscardDeregistrations+0x7c>
    e88263b0:	0085c783          	lbu	a5,8(a1)
    e88263b4:	01379f63          	bne	a5,s3,e88263d2 <DiscardDeregistrations+0x8e>
            CompleteDeregistration(m, rr);      // Don't touch rr after this
    e88263b8:	8526                	mv	a0,s1
    e88263ba:	f0dff0ef          	jal	ra,e88262c6 <CompleteDeregistration>
    e88263be:	bfd1                	j	e8826392 <DiscardDeregistrations+0x4e>
        if (!AuthRecord_uDNS(rr) && rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e88263c0:	07a5c783          	lbu	a5,122(a1)
    e88263c4:	f7f5                	bnez	a5,e88263b0 <DiscardDeregistrations+0x6c>
    e88263c6:	7588                	ld	a0,40(a1)
    e88263c8:	e42e                	sd	a1,8(sp)
    e88263ca:	cd9ec0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e88263ce:	65a2                	ld	a1,8(sp)
    e88263d0:	f165                	bnez	a0,e88263b0 <DiscardDeregistrations+0x6c>
            m->CurrentRecord = rr->next;
    e88263d2:	619c                	ld	a5,0(a1)
    e88263d4:	1cf43823          	sd	a5,464(s0)
    e88263d8:	bf6d                	j	e8826392 <DiscardDeregistrations+0x4e>

00000000e88263da <CheckRmvEventsForLocalRecords>:
{
    e88263da:	7179                	addi	sp,sp,-48
    e88263dc:	f891540b          	sdd	s0,s1,(sp),0,4
    while (m->CurrentRecord)
    e88263e0:	648d                	lui	s1,0x3
{
    e88263e2:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88263e6:	f052                	sd	s4,32(sp)
    e88263e8:	f406                	sd	ra,40(sp)
    e88263ea:	892a                	mv	s2,a0
    while (m->CurrentRecord)
    e88263ec:	94aa                	add	s1,s1,a0
        if (rr->AnsweredLocalQ && rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e88263ee:	4985                	li	s3,1
            rr->resrec.RecordType = kDNSRecordTypeShared;
    e88263f0:	4a21                	li	s4,8
    while (m->CurrentRecord)
    e88263f2:	1d04b403          	ld	s0,464(s1) # 31d0 <memcmp-0xe87fce30>
    e88263f6:	e809                	bnez	s0,e8826408 <CheckRmvEventsForLocalRecords+0x2e>
}
    e88263f8:	70a2                	ld	ra,40(sp)
    e88263fa:	f891440b          	ldd	s0,s1,(sp),0,4
    e88263fe:	7a02                	ld	s4,32(sp)
    e8826400:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8826404:	6145                	addi	sp,sp,48
    e8826406:	8082                	ret
        if (rr->AnsweredLocalQ && rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e8826408:	0b944783          	lbu	a5,185(s0)
    e882640c:	c3b9                	beqz	a5,e8826452 <CheckRmvEventsForLocalRecords+0x78>
    e882640e:	00844783          	lbu	a5,8(s0)
    e8826412:	05379063          	bne	a5,s3,e8826452 <CheckRmvEventsForLocalRecords+0x78>
            rr->resrec.RecordType = kDNSRecordTypeShared;
    e8826416:	01440423          	sb	s4,8(s0)
            AnswerAllLocalQuestionsWithLocalAuthRecord(m, rr, mDNSfalse);
    e882641a:	4601                	li	a2,0
    e882641c:	85a2                	mv	a1,s0
    e882641e:	854a                	mv	a0,s2
    e8826420:	d9bff0ef          	jal	ra,e88261ba <AnswerAllLocalQuestionsWithLocalAuthRecord>
            if (m->CurrentRecord == rr) // If rr still exists in list, restore its state now
    e8826424:	1d04b783          	ld	a5,464(s1)
    e8826428:	fc8795e3          	bne	a5,s0,e88263f2 <CheckRmvEventsForLocalRecords+0x18>
                if (RRLocalOnly(rr)) CompleteDeregistration(m, rr);
    e882642c:	0ac44783          	lbu	a5,172(s0)
                rr->resrec.RecordType = kDNSRecordTypeDeregistering;
    e8826430:	01340423          	sb	s3,8(s0)
                rr->AnsweredLocalQ = mDNSfalse;
    e8826434:	0a040ca3          	sb	zero,185(s0)
                if (RRLocalOnly(rr)) CompleteDeregistration(m, rr);
    e8826438:	37f1                	addiw	a5,a5,-4
    e882643a:	0ff7f793          	andi	a5,a5,255
    e882643e:	00f9e663          	bltu	s3,a5,e882644a <CheckRmvEventsForLocalRecords+0x70>
    e8826442:	85a2                	mv	a1,s0
    e8826444:	854a                	mv	a0,s2
    e8826446:	e81ff0ef          	jal	ra,e88262c6 <CompleteDeregistration>
        if (m->CurrentRecord == rr)     // If m->CurrentRecord was not auto-advanced, do it ourselves now
    e882644a:	1d04b783          	ld	a5,464(s1)
    e882644e:	fa8792e3          	bne	a5,s0,e88263f2 <CheckRmvEventsForLocalRecords+0x18>
            m->CurrentRecord = rr->next;
    e8826452:	601c                	ld	a5,0(s0)
    e8826454:	1cf4b823          	sd	a5,464(s1)
    e8826458:	bf69                	j	e88263f2 <CheckRmvEventsForLocalRecords+0x18>

00000000e882645a <AnswerQuestionWithLORecord>:
    if (m->CurrentRecord)
    e882645a:	678d                	lui	a5,0x3
{
    e882645c:	7159                	addi	sp,sp,-112
    if (m->CurrentRecord)
    e882645e:	97aa                	add	a5,a5,a0
{
    e8826460:	f0a2                	sd	s0,96(sp)
    e8826462:	eca6                	sd	s1,88(sp)
    e8826464:	e8ca                	sd	s2,80(sp)
    e8826466:	f486                	sd	ra,104(sp)
    e8826468:	e4ce                	sd	s3,72(sp)
    e882646a:	e0d2                	sd	s4,64(sp)
    e882646c:	fc56                	sd	s5,56(sp)
    e882646e:	f85a                	sd	s6,48(sp)
    e8826470:	f45e                	sd	s7,40(sp)
    e8826472:	f062                	sd	s8,32(sp)
    e8826474:	ec66                	sd	s9,24(sp)
    e8826476:	e86a                	sd	s10,16(sp)
    e8826478:	84aa                	mv	s1,a0
    if (m->CurrentRecord)
    e882647a:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
{
    e882647e:	842e                	mv	s0,a1
    e8826480:	8932                	mv	s2,a2
    if (m->CurrentRecord)
    e8826482:	c105                	beqz	a0,e88264a2 <AnswerQuestionWithLORecord+0x48>
        LogMsg("AnswerQuestionWithLORecord ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e8826484:	790c                	ld	a1,48(a0)
    e8826486:	03b48613          	addi	a2,s1,59
    e882648a:	0521                	addi	a0,a0,8
    e882648c:	0591                	addi	a1,a1,4
    e882648e:	d86f00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8826492:	862a                	mv	a2,a0
    e8826494:	0007e597          	auipc	a1,0x7e
    e8826498:	efc58593          	addi	a1,a1,-260 # e88a4390 <end.8789+0xce8>
    e882649c:	4501                	li	a0,0
    e882649e:	00e090ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    ag = AuthGroupForName(&m->rrauth, q->qnamehash, &q->qname);
    e88264a2:	440c                	lw	a1,8(s0)
    e88264a4:	6509                	lui	a0,0x2
    e88264a6:	21440b13          	addi	s6,s0,532
    e88264aa:	a7850513          	addi	a0,a0,-1416 # 1a78 <memcmp-0xe87fe588>
    e88264ae:	865a                	mv	a2,s6
    e88264b0:	9526                	add	a0,a0,s1
    e88264b2:	e27f70ef          	jal	ra,e881e2d8 <AuthGroupForName>
    e88264b6:	8aaa                	mv	s5,a0
    if (ag)
    e88264b8:	e529                	bnez	a0,e8826502 <AnswerQuestionWithLORecord+0xa8>
    m->CurrentRecord = mDNSNULL;
    e88264ba:	678d                	lui	a5,0x3
    e88264bc:	97a6                	add	a5,a5,s1
    e88264be:	1c07b823          	sd	zero,464(a5) # 31d0 <memcmp-0xe87fce30>
    if (m->CurrentQuestion != q)
    e88264c2:	2c84b783          	ld	a5,712(s1)
    e88264c6:	10879b63          	bne	a5,s0,e88265dc <AnswerQuestionWithLORecord+0x182>
    if (q->LOAddressAnswers)
    e88264ca:	14144903          	lbu	s2,321(s0)
    e88264ce:	12090763          	beqz	s2,e88265fc <AnswerQuestionWithLORecord+0x1a2>
        LogInfo("AnswerQuestionWithLORecord: Question %p %##s (%s) answered using local auth records LOAddressAnswers %d",
    e88264d2:	000ae797          	auipc	a5,0xae
    e88264d6:	5a278793          	addi	a5,a5,1442 # e88d4a74 <mDNS_LoggingEnabled>
    e88264da:	439c                	lw	a5,0(a5)
    e88264dc:	10078663          	beqz	a5,e88265e8 <AnswerQuestionWithLORecord+0x18e>
    e88264e0:	31445503          	lhu	a0,788(s0)
    e88264e4:	f7cef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88264e8:	872a                	mv	a4,a0
    e88264ea:	14144783          	lbu	a5,321(s0)
    e88264ee:	86da                	mv	a3,s6
    e88264f0:	8622                	mv	a2,s0
    e88264f2:	0007e597          	auipc	a1,0x7e
    e88264f6:	f8658593          	addi	a1,a1,-122 # e88a4478 <end.8789+0xdd0>
                LogInfo("AnswerQuestionWithLORecord: Question %p %##s (%s) will be answered using new local auth records "
    e88264fa:	450d                	li	a0,3
    e88264fc:	7b1080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8826500:	a0e5                	j	e88265e8 <AnswerQuestionWithLORecord+0x18e>
        m->CurrentRecord = ag->members;
    e8826502:	691c                	ld	a5,16(a0)
    e8826504:	6a0d                	lui	s4,0x3
    e8826506:	9a26                	add	s4,s4,s1
    e8826508:	1cfa3823          	sd	a5,464(s4) # 31d0 <memcmp-0xe87fce30>
            if (rr->ARType == AuthRecordLocalOnly || (rr->ARType == AuthRecordP2P && (q->InterfaceID == mDNSInterface_Any || q->InterfaceID == mDNSInterface_BLE)))
    e882650c:	4b91                	li	s7,4
    e882650e:	4c15                	li	s8,5
    e8826510:	0007dc97          	auipc	s9,0x7d
    e8826514:	850c8c93          	addi	s9,s9,-1968 # e88a2d60 <mDNSInterface_Any>
    e8826518:	0007dd17          	auipc	s10,0x7d
    e882651c:	850d0d13          	addi	s10,s10,-1968 # e88a2d68 <mDNSInterface_BLE>
        while (m->CurrentRecord && m->CurrentRecord != ag->NewLocalOnlyRecords)
    e8826520:	1d0a3983          	ld	s3,464(s4)
    e8826524:	f8098be3          	beqz	s3,e88264ba <AnswerQuestionWithLORecord+0x60>
    e8826528:	028ab783          	ld	a5,40(s5)
    e882652c:	f8f987e3          	beq	s3,a5,e88264ba <AnswerQuestionWithLORecord+0x60>
            m->CurrentRecord = rr->next;
    e8826530:	0009b783          	ld	a5,0(s3)
    e8826534:	1cfa3823          	sd	a5,464(s4)
            if (rr->ARType == AuthRecordLocalOnly || (rr->ARType == AuthRecordP2P && (q->InterfaceID == mDNSInterface_Any || q->InterfaceID == mDNSInterface_BLE)))
    e8826538:	0ac9c783          	lbu	a5,172(s3)
    e882653c:	01778e63          	beq	a5,s7,e8826558 <AnswerQuestionWithLORecord+0xfe>
    e8826540:	ff8790e3          	bne	a5,s8,e8826520 <AnswerQuestionWithLORecord+0xc6>
    e8826544:	1f043783          	ld	a5,496(s0)
    e8826548:	000cb703          	ld	a4,0(s9)
    e882654c:	00e78663          	beq	a5,a4,e8826558 <AnswerQuestionWithLORecord+0xfe>
    e8826550:	000d3703          	ld	a4,0(s10)
    e8826554:	fce796e3          	bne	a5,a4,e8826520 <AnswerQuestionWithLORecord+0xc6>
                if (LocalOnlyRecordAnswersQuestion(rr, q))
    e8826558:	85a2                	mv	a1,s0
    e882655a:	854e                	mv	a0,s3
    e882655c:	d5fed0ef          	jal	ra,e88142ba <LocalOnlyRecordAnswersQuestion>
    e8826560:	d161                	beqz	a0,e8826520 <AnswerQuestionWithLORecord+0xc6>
                    if (checkOnly)
    e8826562:	06090363          	beqz	s2,e88265c8 <AnswerQuestionWithLORecord+0x16e>
                        LogInfo("AnswerQuestionWithLORecord: question %##s (%s) answered by %s", q->qname.c, DNSTypeName(q->qtype),
    e8826566:	000ae797          	auipc	a5,0xae
    e882656a:	50e78793          	addi	a5,a5,1294 # e88d4a74 <mDNS_LoggingEnabled>
    e882656e:	439c                	lw	a5,0(a5)
    e8826570:	cb8d                	beqz	a5,e88265a2 <AnswerQuestionWithLORecord+0x148>
    e8826572:	31445503          	lhu	a0,788(s0)
    e8826576:	eeaef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882657a:	e42a                	sd	a0,8(sp)
    e882657c:	0309b583          	ld	a1,48(s3)
    e8826580:	03b48613          	addi	a2,s1,59
    e8826584:	00898513          	addi	a0,s3,8
    e8826588:	0591                	addi	a1,a1,4
    e882658a:	c8af00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882658e:	872a                	mv	a4,a0
    e8826590:	66a2                	ld	a3,8(sp)
    e8826592:	865a                	mv	a2,s6
    e8826594:	0007e597          	auipc	a1,0x7e
    e8826598:	e4458593          	addi	a1,a1,-444 # e88a43d8 <end.8789+0xd30>
    e882659c:	450d                	li	a0,3
    e882659e:	70f080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        m->CurrentRecord = mDNSNULL;
    e88265a2:	678d                	lui	a5,0x3
    e88265a4:	94be                	add	s1,s1,a5
    e88265a6:	1c04b823          	sd	zero,464(s1)
}
    e88265aa:	70a6                	ld	ra,104(sp)
    e88265ac:	7406                	ld	s0,96(sp)
    e88265ae:	854a                	mv	a0,s2
    e88265b0:	64e6                	ld	s1,88(sp)
    e88265b2:	6946                	ld	s2,80(sp)
    e88265b4:	69a6                	ld	s3,72(sp)
    e88265b6:	6a06                	ld	s4,64(sp)
    e88265b8:	7ae2                	ld	s5,56(sp)
    e88265ba:	7b42                	ld	s6,48(sp)
    e88265bc:	7ba2                	ld	s7,40(sp)
    e88265be:	7c02                	ld	s8,32(sp)
    e88265c0:	6ce2                	ld	s9,24(sp)
    e88265c2:	6d42                	ld	s10,16(sp)
    e88265c4:	6165                	addi	sp,sp,112
    e88265c6:	8082                	ret
                    AnswerLocalQuestionWithLocalAuthRecord(m, rr, mDNStrue);
    e88265c8:	4605                	li	a2,1
    e88265ca:	85ce                	mv	a1,s3
    e88265cc:	8526                	mv	a0,s1
    e88265ce:	a09ff0ef          	jal	ra,e8825fd6 <AnswerLocalQuestionWithLocalAuthRecord>
                    if (m->CurrentQuestion != q)
    e88265d2:	2c84b783          	ld	a5,712(s1)
    e88265d6:	f48785e3          	beq	a5,s0,e8826520 <AnswerQuestionWithLORecord+0xc6>
    e88265da:	b5c5                	j	e88264ba <AnswerQuestionWithLORecord+0x60>
        LogInfo("AnswerQuestionWithLORecord: Question deleted while while answering LocalOnly record answers");
    e88265dc:	000ae797          	auipc	a5,0xae
    e88265e0:	49878793          	addi	a5,a5,1176 # e88d4a74 <mDNS_LoggingEnabled>
    e88265e4:	439c                	lw	a5,0(a5)
    e88265e6:	e399                	bnez	a5,e88265ec <AnswerQuestionWithLORecord+0x192>
        return mDNStrue;
    e88265e8:	4905                	li	s2,1
    e88265ea:	b7c1                	j	e88265aa <AnswerQuestionWithLORecord+0x150>
        LogInfo("AnswerQuestionWithLORecord: Question deleted while while answering LocalOnly record answers");
    e88265ec:	0007e597          	auipc	a1,0x7e
    e88265f0:	e2c58593          	addi	a1,a1,-468 # e88a4418 <end.8789+0xd70>
    e88265f4:	450d                	li	a0,3
    e88265f6:	6b7080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88265fa:	b7fd                	j	e88265e8 <AnswerQuestionWithLORecord+0x18e>
    if (ag)
    e88265fc:	fa0a87e3          	beqz	s5,e88265aa <AnswerQuestionWithLORecord+0x150>
        lr = ag->NewLocalOnlyRecords;
    e8826600:	028ab483          	ld	s1,40(s5)
            if (UniqueLocalOnlyRecord(lr) && LocalOnlyRecordAnswersQuestion(lr, q))
    e8826604:	4991                	li	s3,4
    e8826606:	4a05                	li	s4,1
    e8826608:	4ab1                	li	s5,12
        while (lr)
    e882660a:	d0c5                	beqz	s1,e88265aa <AnswerQuestionWithLORecord+0x150>
            if (UniqueLocalOnlyRecord(lr) && LocalOnlyRecordAnswersQuestion(lr, q))
    e882660c:	0ac4c783          	lbu	a5,172(s1)
    e8826610:	05379963          	bne	a5,s3,e8826662 <AnswerQuestionWithLORecord+0x208>
    e8826614:	0084c783          	lbu	a5,8(s1)
    e8826618:	0327f793          	andi	a5,a5,50
    e882661c:	c3b9                	beqz	a5,e8826662 <AnswerQuestionWithLORecord+0x208>
    e882661e:	00a4d783          	lhu	a5,10(s1)
    e8826622:	ffb7f713          	andi	a4,a5,-5
    e8826626:	01470563          	beq	a4,s4,e8826630 <AnswerQuestionWithLORecord+0x1d6>
    e882662a:	9bbd                	andi	a5,a5,-17
    e882662c:	03579b63          	bne	a5,s5,e8826662 <AnswerQuestionWithLORecord+0x208>
    e8826630:	85a2                	mv	a1,s0
    e8826632:	8526                	mv	a0,s1
    e8826634:	c87ed0ef          	jal	ra,e88142ba <LocalOnlyRecordAnswersQuestion>
    e8826638:	c50d                	beqz	a0,e8826662 <AnswerQuestionWithLORecord+0x208>
                LogInfo("AnswerQuestionWithLORecord: Question %p %##s (%s) will be answered using new local auth records "
    e882663a:	000ae797          	auipc	a5,0xae
    e882663e:	43a78793          	addi	a5,a5,1082 # e88d4a74 <mDNS_LoggingEnabled>
    e8826642:	439c                	lw	a5,0(a5)
    e8826644:	d3d5                	beqz	a5,e88265e8 <AnswerQuestionWithLORecord+0x18e>
    e8826646:	31445503          	lhu	a0,788(s0)
    e882664a:	e16ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882664e:	872a                	mv	a4,a0
    e8826650:	14144783          	lbu	a5,321(s0)
    e8826654:	86da                	mv	a3,s6
    e8826656:	8622                	mv	a2,s0
    e8826658:	0007e597          	auipc	a1,0x7e
    e882665c:	e8858593          	addi	a1,a1,-376 # e88a44e0 <end.8789+0xe38>
    e8826660:	bd69                	j	e88264fa <AnswerQuestionWithLORecord+0xa0>
            lr = lr->next;
    e8826662:	6084                	ld	s1,0(s1)
    e8826664:	b75d                	j	e882660a <AnswerQuestionWithLORecord+0x1b0>

00000000e8826666 <ShouldSuppressQuery>:
{
    e8826666:	7139                	addi	sp,sp,-64
    e8826668:	fa91540b          	sdd	s0,s1,(sp),1,4
    e882666c:	fd31590b          	sdd	s2,s3,(sp),2,4
    if (q->InterfaceID == mDNSInterface_LocalOnly)
    e8826670:	0007c717          	auipc	a4,0x7c
    e8826674:	70070713          	addi	a4,a4,1792 # e88a2d70 <mDNSInterface_LocalOnly>
{
    e8826678:	fc06                	sd	ra,56(sp)
    e882667a:	f852                	sd	s4,48(sp)
    if (q->InterfaceID == mDNSInterface_LocalOnly)
    e882667c:	6318                	ld	a4,0(a4)
    e882667e:	1f05b783          	ld	a5,496(a1)
{
    e8826682:	842e                	mv	s0,a1
    if (q->InterfaceID == mDNSInterface_LocalOnly)
    e8826684:	02e79863          	bne	a5,a4,e88266b4 <ShouldSuppressQuery+0x4e>
        LogInfo("ShouldSuppressQuery: LocalOnly query not suppressed for %##s, qtype %s", q->qname.c, DNSTypeName(q->qtype));
    e8826688:	000ae797          	auipc	a5,0xae
    e882668c:	3ec78793          	addi	a5,a5,1004 # e88d4a74 <mDNS_LoggingEnabled>
    e8826690:	439c                	lw	a5,0(a5)
    e8826692:	cf99                	beqz	a5,e88266b0 <ShouldSuppressQuery+0x4a>
    e8826694:	3145d503          	lhu	a0,788(a1)
    e8826698:	dc8ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882669c:	86aa                	mv	a3,a0
    e882669e:	21440613          	addi	a2,s0,532
    e88266a2:	00081597          	auipc	a1,0x81
    e88266a6:	c4e58593          	addi	a1,a1,-946 # e88a72f0 <end.8789+0x3c48>
            LogInfo("ShouldSuppressQuery: Query not suppressed for %##s, qtype %s, Local question", q->qname.c, DNSTypeName(q->qtype));
    e88266aa:	450d                	li	a0,3
    e88266ac:	601080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return mDNSfalse;
    e88266b0:	4501                	li	a0,0
    e88266b2:	a231                	j	e88267be <ShouldSuppressQuery+0x158>
    e88266b4:	84aa                	mv	s1,a0
    if (q->qtype != kDNSType_A && q->qtype != kDNSType_AAAA)
    e88266b6:	3145d503          	lhu	a0,788(a1)
    e88266ba:	4685                	li	a3,1
    e88266bc:	0005071b          	sext.w	a4,a0
    e88266c0:	02d70563          	beq	a4,a3,e88266ea <ShouldSuppressQuery+0x84>
    e88266c4:	46f1                	li	a3,28
    e88266c6:	02d70263          	beq	a4,a3,e88266ea <ShouldSuppressQuery+0x84>
        LogInfo("ShouldSuppressQuery: Query not suppressed for %##s, qtype %s, not A/AAAA type", q->qname.c, DNSTypeName(q->qtype));
    e88266ca:	000ae797          	auipc	a5,0xae
    e88266ce:	3aa78793          	addi	a5,a5,938 # e88d4a74 <mDNS_LoggingEnabled>
    e88266d2:	439c                	lw	a5,0(a5)
    e88266d4:	dff1                	beqz	a5,e88266b0 <ShouldSuppressQuery+0x4a>
    e88266d6:	d8aef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88266da:	86aa                	mv	a3,a0
    e88266dc:	21440613          	addi	a2,s0,532
    e88266e0:	00081597          	auipc	a1,0x81
    e88266e4:	c5858593          	addi	a1,a1,-936 # e88a7338 <end.8789+0x3c90>
    e88266e8:	b7c9                	j	e88266aa <ShouldSuppressQuery+0x44>
    if (q->InterfaceID != mDNSInterface_Unicast && IsLocalDomain(&q->qname))
    e88266ea:	0007c717          	auipc	a4,0x7c
    e88266ee:	69670713          	addi	a4,a4,1686 # e88a2d80 <mDNSInterface_Unicast>
    e88266f2:	6318                	ld	a4,0(a4)
    e88266f4:	14e78463          	beq	a5,a4,e882683c <ShouldSuppressQuery+0x1d6>
    e88266f8:	21440913          	addi	s2,s0,532
    e88266fc:	854a                	mv	a0,s2
    e88266fe:	9a5ec0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8826702:	12050d63          	beqz	a0,e882683c <ShouldSuppressQuery+0x1d6>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8826706:	678d                	lui	a5,0x3
    e8826708:	97a6                	add	a5,a5,s1
    e882670a:	1e07b783          	ld	a5,480(a5) # 31e0 <memcmp-0xe87fce20>
        if (intf->InterfaceActive && !intf->Loopback)
    e882670e:	6609                	lui	a2,0x2
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8826710:	ef9d                	bnez	a5,e882674e <ShouldSuppressQuery+0xe8>
    m->CurrentQuestion = q;
    e8826712:	2c84b423          	sd	s0,712(s1)
    ret = AnswerQuestionWithLORecord(m, q, mDNStrue);
    e8826716:	4605                	li	a2,1
    e8826718:	85a2                	mv	a1,s0
    e882671a:	8526                	mv	a0,s1
    e882671c:	d3fff0ef          	jal	ra,e882645a <AnswerQuestionWithLORecord>
    m->CurrentQuestion = mDNSNULL;
    e8826720:	2c04b423          	sd	zero,712(s1)
    if (ret)
    e8826724:	c141                	beqz	a0,e88267a4 <ShouldSuppressQuery+0x13e>
        LogInfo("ShouldSuppressDotLocalQuery: Found LocalOnly record for %##s (%s), not suppressing", q->qname.c,
    e8826726:	000ae797          	auipc	a5,0xae
    e882672a:	34e78793          	addi	a5,a5,846 # e88d4a74 <mDNS_LoggingEnabled>
    e882672e:	439c                	lw	a5,0(a5)
    e8826730:	d3c1                	beqz	a5,e88266b0 <ShouldSuppressQuery+0x4a>
    e8826732:	31445503          	lhu	a0,788(s0)
    e8826736:	d2aef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882673a:	86aa                	mv	a3,a0
    e882673c:	864a                	mv	a2,s2
    e882673e:	00081597          	auipc	a1,0x81
    e8826742:	c9258593          	addi	a1,a1,-878 # e88a73d0 <end.8789+0x3d28>
    e8826746:	450d                	li	a0,3
    e8826748:	565080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882674c:	a80d                	j	e882677e <ShouldSuppressQuery+0x118>
        if (intf->InterfaceActive && !intf->Loopback)
    e882674e:	0087c703          	lbu	a4,8(a5)
    e8826752:	c739                	beqz	a4,e88267a0 <ShouldSuppressQuery+0x13a>
    e8826754:	00c78733          	add	a4,a5,a2
    e8826758:	a6974703          	lbu	a4,-1431(a4)
    e882675c:	e331                	bnez	a4,e88267a0 <ShouldSuppressQuery+0x13a>
            LogInfo("ShouldSuppressDotLocalQuery: Found interface %s, not suppressing", intf->ifname);
    e882675e:	000ae717          	auipc	a4,0xae
    e8826762:	31670713          	addi	a4,a4,790 # e88d4a74 <mDNS_LoggingEnabled>
    e8826766:	4318                	lw	a4,0(a4)
    e8826768:	d721                	beqz	a4,e88266b0 <ShouldSuppressQuery+0x4a>
    e882676a:	a2660613          	addi	a2,a2,-1498 # 1a26 <memcmp-0xe87fe5da>
    e882676e:	963e                	add	a2,a2,a5
    e8826770:	00081597          	auipc	a1,0x81
    e8826774:	c1858593          	addi	a1,a1,-1000 # e88a7388 <end.8789+0x3ce0>
    e8826778:	450d                	li	a0,3
    e882677a:	533080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            LogInfo("ShouldSuppressQuery: Query not suppressed for %##s, qtype %s, Local question", q->qname.c, DNSTypeName(q->qtype));
    e882677e:	000ae797          	auipc	a5,0xae
    e8826782:	2f678793          	addi	a5,a5,758 # e88d4a74 <mDNS_LoggingEnabled>
    e8826786:	439c                	lw	a5,0(a5)
    e8826788:	d785                	beqz	a5,e88266b0 <ShouldSuppressQuery+0x4a>
    e882678a:	31445503          	lhu	a0,788(s0)
    e882678e:	cd2ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826792:	86aa                	mv	a3,a0
    e8826794:	864a                	mv	a2,s2
    e8826796:	00081597          	auipc	a1,0x81
    e882679a:	cea58593          	addi	a1,a1,-790 # e88a7480 <end.8789+0x3dd8>
    e882679e:	b731                	j	e88266aa <ShouldSuppressQuery+0x44>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e88267a0:	639c                	ld	a5,0(a5)
    e88267a2:	b7bd                	j	e8826710 <ShouldSuppressQuery+0xaa>
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e88267a4:	678d                	lui	a5,0x3
    e88267a6:	97a6                	add	a5,a5,s1
    e88267a8:	1b87b983          	ld	s3,440(a5) # 31b8 <memcmp-0xe87fce48>
    e88267ac:	02099163          	bnez	s3,e88267ce <ShouldSuppressQuery+0x168>
            LogInfo("ShouldSuppressQuery: Query suppressed for %##s, qtype %s, Local question", q->qname.c, DNSTypeName(q->qtype));
    e88267b0:	000ae797          	auipc	a5,0xae
    e88267b4:	2c478793          	addi	a5,a5,708 # e88d4a74 <mDNS_LoggingEnabled>
    e88267b8:	439c                	lw	a5,0(a5)
    e88267ba:	e3bd                	bnez	a5,e8826820 <ShouldSuppressQuery+0x1ba>
            return mDNStrue;
    e88267bc:	4505                	li	a0,1
}
    e88267be:	70e2                	ld	ra,56(sp)
    e88267c0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88267c4:	7a42                	ld	s4,48(sp)
    e88267c6:	fd31490b          	ldd	s2,s3,(sp),2,4
    e88267ca:	6121                	addi	sp,sp,64
    e88267cc:	8082                	ret
        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e88267ce:	00898a13          	addi	s4,s3,8
    e88267d2:	85a2                	mv	a1,s0
    e88267d4:	8552                	mv	a0,s4
    e88267d6:	fcaef0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e88267da:	c121                	beqz	a0,e882681a <ShouldSuppressQuery+0x1b4>
            LogInfo("ShouldSuppressDotLocalQuery: Found resource record %s for %##s (%s) not suppressing", ARDisplayString(m, rr),
    e88267dc:	000ae797          	auipc	a5,0xae
    e88267e0:	29878793          	addi	a5,a5,664 # e88d4a74 <mDNS_LoggingEnabled>
    e88267e4:	439c                	lw	a5,0(a5)
    e88267e6:	ec0785e3          	beqz	a5,e88266b0 <ShouldSuppressQuery+0x4a>
    e88267ea:	0309b583          	ld	a1,48(s3)
    e88267ee:	03b48613          	addi	a2,s1,59
    e88267f2:	8552                	mv	a0,s4
    e88267f4:	0591                	addi	a1,a1,4
    e88267f6:	a1ef00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88267fa:	e42a                	sd	a0,8(sp)
    e88267fc:	31445503          	lhu	a0,788(s0)
    e8826800:	c60ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826804:	872a                	mv	a4,a0
    e8826806:	6622                	ld	a2,8(sp)
    e8826808:	86ca                	mv	a3,s2
    e882680a:	00081597          	auipc	a1,0x81
    e882680e:	c1e58593          	addi	a1,a1,-994 # e88a7428 <end.8789+0x3d80>
    e8826812:	450d                	li	a0,3
    e8826814:	499080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8826818:	b79d                	j	e882677e <ShouldSuppressQuery+0x118>
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e882681a:	0009b983          	ld	s3,0(s3)
    e882681e:	b779                	j	e88267ac <ShouldSuppressQuery+0x146>
            LogInfo("ShouldSuppressQuery: Query suppressed for %##s, qtype %s, Local question", q->qname.c, DNSTypeName(q->qtype));
    e8826820:	31445503          	lhu	a0,788(s0)
    e8826824:	c3cef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826828:	86aa                	mv	a3,a0
    e882682a:	864a                	mv	a2,s2
    e882682c:	00081597          	auipc	a1,0x81
    e8826830:	ca458593          	addi	a1,a1,-860 # e88a74d0 <end.8789+0x3e28>
    e8826834:	450d                	li	a0,3
    e8826836:	477080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882683a:	b749                	j	e88267bc <ShouldSuppressQuery+0x156>
    return (ShouldSuppressUnicastQuery(m, q, q->qDNSServer));
    e882683c:	16843603          	ld	a2,360(s0)
    e8826840:	85a2                	mv	a1,s0
    e8826842:	8526                	mv	a0,s1
}
    e8826844:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8826848:	70e2                	ld	ra,56(sp)
    e882684a:	7a42                	ld	s4,48(sp)
    e882684c:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8826850:	6121                	addi	sp,sp,64
    return (ShouldSuppressUnicastQuery(m, q, q->qDNSServer));
    e8826852:	ad3f606f          	j	e881d324 <ShouldSuppressUnicastQuery>

00000000e8826856 <LocalRecordRmvEventsForQuestion>:
{
    e8826856:	711d                	addi	sp,sp,-96
    e8826858:	e8a2                	sd	s0,80(sp)
    e882685a:	e0ca                	sd	s2,64(sp)
    e882685c:	ec86                	sd	ra,88(sp)
    e882685e:	e4a6                	sd	s1,72(sp)
    e8826860:	fc4e                	sd	s3,56(sp)
    e8826862:	f852                	sd	s4,48(sp)
    e8826864:	f456                	sd	s5,40(sp)
    e8826866:	f05a                	sd	s6,32(sp)
    e8826868:	ec5e                	sd	s7,24(sp)
    e882686a:	e862                	sd	s8,16(sp)
    e882686c:	e466                	sd	s9,8(sp)
    e882686e:	e06a                	sd	s10,0(sp)
    if (m->CurrentQuestion)
    e8826870:	2c853483          	ld	s1,712(a0)
{
    e8826874:	892a                	mv	s2,a0
    e8826876:	842e                	mv	s0,a1
    if (m->CurrentQuestion)
    e8826878:	cc99                	beqz	s1,e8826896 <LocalRecordRmvEventsForQuestion+0x40>
        LogMsg("LocalRecordRmvEventsForQuestion: ERROR m->CurrentQuestion already set: %##s (%s)",
    e882687a:	3144d503          	lhu	a0,788(s1)
    e882687e:	be2ef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826882:	86aa                	mv	a3,a0
    e8826884:	21448613          	addi	a2,s1,532
    e8826888:	0007f597          	auipc	a1,0x7f
    e882688c:	4c058593          	addi	a1,a1,1216 # e88a5d48 <end.8789+0x26a0>
    e8826890:	4501                	li	a0,0
    e8826892:	41b080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (IsQuestionNew(m, q))
    e8826896:	2c093783          	ld	a5,704(s2)
    for (q = m->NewQuestions; q; q = q->next)
    e882689a:	e7a1                	bnez	a5,e88268e2 <LocalRecordRmvEventsForQuestion+0x8c>
    m->CurrentQuestion = q;
    e882689c:	2c893423          	sd	s0,712(s2)
    ag = AuthGroupForName(&m->rrauth, q->qnamehash, &q->qname);
    e88268a0:	6509                	lui	a0,0x2
    e88268a2:	440c                	lw	a1,8(s0)
    e88268a4:	21440993          	addi	s3,s0,532
    e88268a8:	a7850513          	addi	a0,a0,-1416 # 1a78 <memcmp-0xe87fe588>
    e88268ac:	864e                	mv	a2,s3
    e88268ae:	954a                	add	a0,a0,s2
    e88268b0:	a29f70ef          	jal	ra,e881e2d8 <AuthGroupForName>
    if (ag)
    e88268b4:	c505                	beqz	a0,e88268dc <LocalRecordRmvEventsForQuestion+0x86>
        for (rr = ag->members; rr; rr=rr->next)
    e88268b6:	6904                	ld	s1,16(a0)
            if (UniqueLocalOnlyRecord(rr) && LocalOnlyRecordAnswersQuestion(rr, q))
    e88268b8:	4a11                	li	s4,4
    e88268ba:	4a85                	li	s5,1
                LogInfo("LocalRecordRmvEventsForQuestion: Delivering possible Rmv events with record %s",
    e88268bc:	000aeb17          	auipc	s6,0xae
    e88268c0:	1b8b0b13          	addi	s6,s6,440 # e88d4a74 <mDNS_LoggingEnabled>
                    LogMsg("LocalRecordRmvEventsForQuestion: ERROR!! CurrentAnswers or LOAddressAnswers is zero %p %##s"
    e88268c4:	0007fb97          	auipc	s7,0x7f
    e88268c8:	564b8b93          	addi	s7,s7,1380 # e88a5e28 <end.8789+0x2780>
                LogInfo("LocalRecordRmvEventsForQuestion: Delivering possible Rmv events with record %s",
    e88268cc:	03b90c13          	addi	s8,s2,59
    e88268d0:	0007fc97          	auipc	s9,0x7f
    e88268d4:	508c8c93          	addi	s9,s9,1288 # e88a5dd8 <end.8789+0x2730>
            if (UniqueLocalOnlyRecord(rr) && LocalOnlyRecordAnswersQuestion(rr, q))
    e88268d8:	4d31                	li	s10,12
        for (rr = ag->members; rr; rr=rr->next)
    e88268da:	e881                	bnez	s1,e88268ea <LocalRecordRmvEventsForQuestion+0x94>
    m->CurrentQuestion = mDNSNULL;
    e88268dc:	2c093423          	sd	zero,712(s2)
    return mDNStrue;
    e88268e0:	a8f1                	j	e88269bc <LocalRecordRmvEventsForQuestion+0x166>
        if (q == question) return mDNStrue;
    e88268e2:	0af40963          	beq	s0,a5,e8826994 <LocalRecordRmvEventsForQuestion+0x13e>
    for (q = m->NewQuestions; q; q = q->next)
    e88268e6:	639c                	ld	a5,0(a5)
    e88268e8:	bf4d                	j	e882689a <LocalRecordRmvEventsForQuestion+0x44>
            if (UniqueLocalOnlyRecord(rr) && LocalOnlyRecordAnswersQuestion(rr, q))
    e88268ea:	0ac4c783          	lbu	a5,172(s1)
    e88268ee:	07479763          	bne	a5,s4,e882695c <LocalRecordRmvEventsForQuestion+0x106>
    e88268f2:	0084c783          	lbu	a5,8(s1)
    e88268f6:	0327f793          	andi	a5,a5,50
    e88268fa:	c3ad                	beqz	a5,e882695c <LocalRecordRmvEventsForQuestion+0x106>
    e88268fc:	00a4d783          	lhu	a5,10(s1)
    e8826900:	ffb7f713          	andi	a4,a5,-5
    e8826904:	01570563          	beq	a4,s5,e882690e <LocalRecordRmvEventsForQuestion+0xb8>
    e8826908:	9bbd                	andi	a5,a5,-17
    e882690a:	05a79963          	bne	a5,s10,e882695c <LocalRecordRmvEventsForQuestion+0x106>
    e882690e:	85a2                	mv	a1,s0
    e8826910:	8526                	mv	a0,s1
    e8826912:	9a9ed0ef          	jal	ra,e88142ba <LocalOnlyRecordAnswersQuestion>
    e8826916:	c139                	beqz	a0,e882695c <LocalRecordRmvEventsForQuestion+0x106>
                LogInfo("LocalRecordRmvEventsForQuestion: Delivering possible Rmv events with record %s",
    e8826918:	000b2783          	lw	a5,0(s6)
    e882691c:	cf89                	beqz	a5,e8826936 <LocalRecordRmvEventsForQuestion+0xe0>
    e882691e:	788c                	ld	a1,48(s1)
    e8826920:	8662                	mv	a2,s8
    e8826922:	00848513          	addi	a0,s1,8
    e8826926:	0591                	addi	a1,a1,4
    e8826928:	8ecf00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882692c:	862a                	mv	a2,a0
    e882692e:	85e6                	mv	a1,s9
    e8826930:	450d                	li	a0,3
    e8826932:	37b080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (q->CurrentAnswers <= 0 || q->LOAddressAnswers <= 0)
    e8826936:	505c                	lw	a5,36(s0)
    e8826938:	c781                	beqz	a5,e8826940 <LocalRecordRmvEventsForQuestion+0xea>
    e882693a:	14144783          	lbu	a5,321(s0)
    e882693e:	e38d                	bnez	a5,e8826960 <LocalRecordRmvEventsForQuestion+0x10a>
                    LogMsg("LocalRecordRmvEventsForQuestion: ERROR!! CurrentAnswers or LOAddressAnswers is zero %p %##s"
    e8826940:	31445503          	lhu	a0,788(s0)
    e8826944:	b1cef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826948:	872a                	mv	a4,a0
    e882694a:	14144803          	lbu	a6,321(s0)
    e882694e:	505c                	lw	a5,36(s0)
    e8826950:	86ce                	mv	a3,s3
    e8826952:	8622                	mv	a2,s0
    e8826954:	85de                	mv	a1,s7
    e8826956:	4501                	li	a0,0
    e8826958:	355080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        for (rr = ag->members; rr; rr=rr->next)
    e882695c:	6084                	ld	s1,0(s1)
    e882695e:	bfb5                	j	e88268da <LocalRecordRmvEventsForQuestion+0x84>
                AnswerLocalQuestionWithLocalAuthRecord(m, rr, QC_rmv);      // MUST NOT dereference q again
    e8826960:	4601                	li	a2,0
    e8826962:	85a6                	mv	a1,s1
    e8826964:	854a                	mv	a0,s2
    e8826966:	e70ff0ef          	jal	ra,e8825fd6 <AnswerLocalQuestionWithLocalAuthRecord>
                if (m->CurrentQuestion != q) { m->CurrentQuestion = mDNSNULL; return mDNSfalse; }
    e882696a:	2c893783          	ld	a5,712(s2)
    e882696e:	fef407e3          	beq	s0,a5,e882695c <LocalRecordRmvEventsForQuestion+0x106>
    e8826972:	2c093423          	sd	zero,712(s2)
    e8826976:	4501                	li	a0,0
}
    e8826978:	60e6                	ld	ra,88(sp)
    e882697a:	6446                	ld	s0,80(sp)
    e882697c:	64a6                	ld	s1,72(sp)
    e882697e:	6906                	ld	s2,64(sp)
    e8826980:	79e2                	ld	s3,56(sp)
    e8826982:	7a42                	ld	s4,48(sp)
    e8826984:	7aa2                	ld	s5,40(sp)
    e8826986:	7b02                	ld	s6,32(sp)
    e8826988:	6be2                	ld	s7,24(sp)
    e882698a:	6c42                	ld	s8,16(sp)
    e882698c:	6ca2                	ld	s9,8(sp)
    e882698e:	6d02                	ld	s10,0(sp)
    e8826990:	6125                	addi	sp,sp,96
    e8826992:	8082                	ret
        LogInfo("LocalRecordRmvEventsForQuestion: New Question %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8826994:	000ae797          	auipc	a5,0xae
    e8826998:	0e078793          	addi	a5,a5,224 # e88d4a74 <mDNS_LoggingEnabled>
    e882699c:	439c                	lw	a5,0(a5)
    e882699e:	cf99                	beqz	a5,e88269bc <LocalRecordRmvEventsForQuestion+0x166>
    e88269a0:	31445503          	lhu	a0,788(s0)
    e88269a4:	abcef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88269a8:	86aa                	mv	a3,a0
    e88269aa:	21440613          	addi	a2,s0,532
    e88269ae:	0007f597          	auipc	a1,0x7f
    e88269b2:	3f258593          	addi	a1,a1,1010 # e88a5da0 <end.8789+0x26f8>
    e88269b6:	450d                	li	a0,3
    e88269b8:	2f5080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mDNStrue;
    e88269bc:	4505                	li	a0,1
    e88269be:	bf6d                	j	e8826978 <LocalRecordRmvEventsForQuestion+0x122>

00000000e88269c0 <AnswerCurrentQuestionWithResourceRecord>:
{
    e88269c0:	7129                	addi	sp,sp,-320
    e88269c2:	f626                	sd	s1,296(sp)
    e88269c4:	f24a                	sd	s2,288(sp)
    e88269c6:	ee4e                	sd	s3,280(sp)
    e88269c8:	ea52                	sd	s4,272(sp)
    e88269ca:	fe06                	sd	ra,312(sp)
    e88269cc:	fa22                	sd	s0,304(sp)
    e88269ce:	84aa                	mv	s1,a0
    e88269d0:	892e                	mv	s2,a1
    e88269d2:	89b2                	mv	s3,a2
    DNSQuestion *const q = m->CurrentQuestion;
    e88269d4:	2c853403          	ld	s0,712(a0)
    const mDNSBool followcname = FollowCNAME(q, &rr->resrec, AddRecord);
    e88269d8:	4a01                	li	s4,0
    e88269da:	c20d                	beqz	a2,e88269fc <AnswerCurrentQuestionWithResourceRecord+0x3c>
    e88269dc:	31445703          	lhu	a4,788(s0)
    e88269e0:	4795                	li	a5,5
    e88269e2:	00f70d63          	beq	a4,a5,e88269fc <AnswerCurrentQuestionWithResourceRecord+0x3c>
    e88269e6:	0085c703          	lbu	a4,8(a1)
    e88269ea:	0f000793          	li	a5,240
    e88269ee:	00f70763          	beq	a4,a5,e88269fc <AnswerCurrentQuestionWithResourceRecord+0x3c>
    e88269f2:	00a5da03          	lhu	s4,10(a1)
    e88269f6:	1a6d                	addi	s4,s4,-5
    e88269f8:	001a3a13          	seqz	s4,s4
    if (q->ValidationRequired && ((AddRecord == QC_rmv) ||
    e88269fc:	32444783          	lbu	a5,804(s0)
    e8826a00:	cf99                	beqz	a5,e8826a1e <AnswerCurrentQuestionWithResourceRecord+0x5e>
    e8826a02:	00098b63          	beqz	s3,e8826a18 <AnswerCurrentQuestionWithResourceRecord+0x58>
    e8826a06:	00894703          	lbu	a4,8(s2)
    e8826a0a:	0f000793          	li	a5,240
    e8826a0e:	00f71863          	bne	a4,a5,e8826a1e <AnswerCurrentQuestionWithResourceRecord+0x5e>
        (rr->resrec.RecordType == kDNSRecordTypePacketNegative && (AddRecord == QC_add))))
    e8826a12:	4785                	li	a5,1
    e8826a14:	00f99563          	bne	s3,a5,e8826a1e <AnswerCurrentQuestionWithResourceRecord+0x5e>
        q->ValidationState = DNSSECValRequired;
    e8826a18:	4785                	li	a5,1
    e8826a1a:	14f41423          	sh	a5,328(s0)
    if (q->LOAddressAnswers)
    e8826a1e:	14144783          	lbu	a5,321(s0)
    e8826a22:	cbb9                	beqz	a5,e8826a78 <AnswerCurrentQuestionWithResourceRecord+0xb8>
        LogInfo("AnswerCurrentQuestionWithResourceRecord: Question %p %##s (%s) not answering with record %s due to "
    e8826a24:	000ae797          	auipc	a5,0xae
    e8826a28:	05078793          	addi	a5,a5,80 # e88d4a74 <mDNS_LoggingEnabled>
    e8826a2c:	439c                	lw	a5,0(a5)
    e8826a2e:	cf8d                	beqz	a5,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    e8826a30:	31445503          	lhu	a0,788(s0)
    e8826a34:	a2cef0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826a38:	ec2a                	sd	a0,24(sp)
    e8826a3a:	03093583          	ld	a1,48(s2)
    e8826a3e:	03b48613          	addi	a2,s1,59
    e8826a42:	00890513          	addi	a0,s2,8
    e8826a46:	0591                	addi	a1,a1,4
    e8826a48:	fcdef0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8826a4c:	87aa                	mv	a5,a0
    e8826a4e:	14144803          	lbu	a6,321(s0)
    e8826a52:	6762                	ld	a4,24(sp)
    e8826a54:	21440693          	addi	a3,s0,532
    e8826a58:	8622                	mv	a2,s0
    e8826a5a:	0007d597          	auipc	a1,0x7d
    e8826a5e:	6de58593          	addi	a1,a1,1758 # e88a4138 <end.8789+0xa90>
    e8826a62:	450d                	li	a0,3
    e8826a64:	249080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8826a68:	70f2                	ld	ra,312(sp)
    e8826a6a:	7452                	ld	s0,304(sp)
    e8826a6c:	74b2                	ld	s1,296(sp)
    e8826a6e:	7912                	ld	s2,288(sp)
    e8826a70:	69f2                	ld	s3,280(sp)
    e8826a72:	6a52                	ld	s4,272(sp)
    e8826a74:	6131                	addi	sp,sp,320
    e8826a76:	8082                	ret
    if (QuerySuppressed(q))
    e8826a78:	31c44783          	lbu	a5,796(s0)
    e8826a7c:	c781                	beqz	a5,e8826a84 <AnswerCurrentQuestionWithResourceRecord+0xc4>
    e8826a7e:	14044783          	lbu	a5,320(s0)
    e8826a82:	e781                	bnez	a5,e8826a8a <AnswerCurrentQuestionWithResourceRecord+0xca>
    e8826a84:	1e644783          	lbu	a5,486(s0)
    e8826a88:	c38d                	beqz	a5,e8826aaa <AnswerCurrentQuestionWithResourceRecord+0xea>
        if (!q->TimeoutQuestion || rr->resrec.RecordType != kDNSRecordTypePacketNegative || (m->timenow - q->StopTime < 0))
    e8826a8a:	31e44783          	lbu	a5,798(s0)
    e8826a8e:	dfe9                	beqz	a5,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    e8826a90:	00894703          	lbu	a4,8(s2)
    e8826a94:	0f000793          	li	a5,240
    e8826a98:	fcf718e3          	bne	a4,a5,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    e8826a9c:	2404a783          	lw	a5,576(s1)
    e8826aa0:	14442703          	lw	a4,324(s0)
    e8826aa4:	9f99                	subw	a5,a5,a4
    e8826aa6:	fc07c1e3          	bltz	a5,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    rr->LastUsed = m->timenow;
    e8826aaa:	2404a783          	lw	a5,576(s1)
    e8826aae:	04f92e23          	sw	a5,92(s2)
    if (AddRecord == QC_add && !q->DuplicateOf && rr->CRActiveQuestion != q)
    e8826ab2:	4785                	li	a5,1
    e8826ab4:	02f99c63          	bne	s3,a5,e8826aec <AnswerCurrentQuestionWithResourceRecord+0x12c>
    e8826ab8:	683c                	ld	a5,80(s0)
    e8826aba:	e38d                	bnez	a5,e8826adc <AnswerCurrentQuestionWithResourceRecord+0x11c>
    e8826abc:	06093783          	ld	a5,96(s2)
    e8826ac0:	00878e63          	beq	a5,s0,e8826adc <AnswerCurrentQuestionWithResourceRecord+0x11c>
        if (!rr->CRActiveQuestion) m->rrcache_active++; // If not previously active, increment rrcache_active count
    e8826ac4:	e791                	bnez	a5,e8826ad0 <AnswerCurrentQuestionWithResourceRecord+0x110>
    e8826ac6:	2fc4a783          	lw	a5,764(s1)
    e8826aca:	2785                	addiw	a5,a5,1
    e8826acc:	2ef4ae23          	sw	a5,764(s1)
        rr->CRActiveQuestion = q;                       // We know q is non-null
    e8826ad0:	06893023          	sd	s0,96(s2)
        SetNextCacheCheckTimeForRecord(m, rr);
    e8826ad4:	85ca                	mv	a1,s2
    e8826ad6:	8526                	mv	a0,s1
    e8826ad8:	882f80ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
        (AddRecord == QC_add && (q->ExpectUnique || (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask))))
    e8826adc:	31944783          	lbu	a5,793(s0)
    e8826ae0:	ef81                	bnez	a5,e8826af8 <AnswerCurrentQuestionWithResourceRecord+0x138>
    e8826ae2:	00894783          	lbu	a5,8(s2)
    e8826ae6:	8bc1                	andi	a5,a5,16
    e8826ae8:	eb81                	bnez	a5,e8826af8 <AnswerCurrentQuestionWithResourceRecord+0x138>
    e8826aea:	a811                	j	e8826afe <AnswerCurrentQuestionWithResourceRecord+0x13e>
    if ((AddRecord == QC_addnocache && !q->RequestUnicast) ||
    e8826aec:	4789                	li	a5,2
    e8826aee:	00f99863          	bne	s3,a5,e8826afe <AnswerCurrentQuestionWithResourceRecord+0x13e>
    e8826af2:	13442783          	lw	a5,308(s0)
    e8826af6:	e781                	bnez	a5,e8826afe <AnswerCurrentQuestionWithResourceRecord+0x13e>
        if (ActiveQuestion(q) && (mDNSOpaque16IsZero(q->TargetQID) || !q->LongLived))
    e8826af8:	485c                	lw	a5,20(s0)
    e8826afa:	02f04763          	bgtz	a5,e8826b28 <AnswerCurrentQuestionWithResourceRecord+0x168>
    if (rr->DelayDelivery) return;      // We'll come back later when CacheRecordDeferredAdd() calls us
    e8826afe:	05492783          	lw	a5,84(s2)
    e8826b02:	f3bd                	bnez	a5,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    if (rr->resrec.RecordType == kDNSRecordTypePacketNegative || (q->qtype != kDNSType_NSEC && RRAssertsNonexistence(&rr->resrec, q->qtype)))
    e8826b04:	00894703          	lbu	a4,8(s2)
    e8826b08:	0f000793          	li	a5,240
    e8826b0c:	04f71d63          	bne	a4,a5,e8826b66 <AnswerCurrentQuestionWithResourceRecord+0x1a6>
        if (!AddRecord || (AddRecord != QC_suppressed && AddRecord != QC_forceresponse && !q->ReturnIntermed)) return;
    e8826b10:	f4098ce3          	beqz	s3,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    e8826b14:	4799                	li	a5,6
    e8826b16:	04f98e63          	beq	s3,a5,e8826b72 <AnswerCurrentQuestionWithResourceRecord+0x1b2>
    e8826b1a:	478d                	li	a5,3
    e8826b1c:	04f98b63          	beq	s3,a5,e8826b72 <AnswerCurrentQuestionWithResourceRecord+0x1b2>
    e8826b20:	31b44783          	lbu	a5,795(s0)
    e8826b24:	e7b9                	bnez	a5,e8826b72 <AnswerCurrentQuestionWithResourceRecord+0x1b2>
    e8826b26:	b789                	j	e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
        if (ActiveQuestion(q) && (mDNSOpaque16IsZero(q->TargetQID) || !q->LongLived))
    e8826b28:	683c                	ld	a5,80(s0)
    e8826b2a:	fbf1                	bnez	a5,e8826afe <AnswerCurrentQuestionWithResourceRecord+0x13e>
    e8826b2c:	21245783          	lhu	a5,530(s0)
    e8826b30:	c781                	beqz	a5,e8826b38 <AnswerCurrentQuestionWithResourceRecord+0x178>
    e8826b32:	31844783          	lbu	a5,792(s0)
    e8826b36:	f7e1                	bnez	a5,e8826afe <AnswerCurrentQuestionWithResourceRecord+0x13e>
            ResetQuestionState(m, q);
    e8826b38:	2404a783          	lw	a5,576(s1)
    q->ThisQInterval    = MaxQuestionInterval;
    e8826b3c:	6705                	lui	a4,0x1
    e8826b3e:	e107071b          	addiw	a4,a4,-496
    q->LastQTime        = m->timenow;
    e8826b42:	c81c                	sw	a5,16(s0)
    q->LastQTxTime      = m->timenow;
    e8826b44:	12f42c23          	sw	a5,312(s0)
    q->ThisQInterval    = MaxQuestionInterval;
    e8826b48:	000ae797          	auipc	a5,0xae
    e8826b4c:	f3878793          	addi	a5,a5,-200 # e88d4a80 <mDNSPlatformOneSecond>
    e8826b50:	439c                	lw	a5,0(a5)
    q->RecentAnswerPkts = 0;
    e8826b52:	02042023          	sw	zero,32(s0)
    q->RequestUnicast   = 0;
    e8826b56:	12042a23          	sw	zero,308(s0)
    q->ThisQInterval    = MaxQuestionInterval;
    e8826b5a:	02e787bb          	mulw	a5,a5,a4
    q->unansweredQueries = 0;
    e8826b5e:	18040223          	sb	zero,388(s0)
    q->ThisQInterval    = MaxQuestionInterval;
    e8826b62:	c85c                	sw	a5,20(s0)
    debugf("ResetQuestionState: Set MaxQuestionInterval for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8826b64:	bf69                	j	e8826afe <AnswerCurrentQuestionWithResourceRecord+0x13e>
    if (rr->resrec.RecordType == kDNSRecordTypePacketNegative || (q->qtype != kDNSType_NSEC && RRAssertsNonexistence(&rr->resrec, q->qtype)))
    e8826b66:	31445583          	lhu	a1,788(s0)
    e8826b6a:	02f00793          	li	a5,47
    e8826b6e:	08f59963          	bne	a1,a5,e8826c00 <AnswerCurrentQuestionWithResourceRecord+0x240>
    if (q->QuestionCallback && !q->NoAnswer && (!followcname || q->ReturnIntermed))
    e8826b72:	34843783          	ld	a5,840(s0)
    e8826b76:	efc1                	bnez	a5,e8826c0e <AnswerCurrentQuestionWithResourceRecord+0x24e>
    if (m->CurrentQuestion == q && (AddRecord == QC_add) && !q->ValidatingResponse && q->ValidationRequired &&
    e8826b78:	2c84b783          	ld	a5,712(s1)
    e8826b7c:	ee8796e3          	bne	a5,s0,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    e8826b80:	4785                	li	a5,1
    e8826b82:	12f99d63          	bne	s3,a5,e8826cbc <AnswerCurrentQuestionWithResourceRecord+0x2fc>
    e8826b86:	14a44783          	lbu	a5,330(s0)
    e8826b8a:	12079963          	bnez	a5,e8826cbc <AnswerCurrentQuestionWithResourceRecord+0x2fc>
    e8826b8e:	32444783          	lbu	a5,804(s0)
    e8826b92:	14078663          	beqz	a5,e8826cde <AnswerCurrentQuestionWithResourceRecord+0x31e>
    e8826b96:	14844783          	lbu	a5,328(s0)
    e8826b9a:	ed3797e3          	bne	a5,s3,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
        q->ValidationState == DNSSECValRequired && q->qDNSServer)
    e8826b9e:	16843783          	ld	a5,360(s0)
    e8826ba2:	ec0783e3          	beqz	a5,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
        q->ValidationState = DNSSECValInProgress;
    e8826ba6:	4789                	li	a5,2
    e8826ba8:	14f40423          	sb	a5,328(s0)
        mDNS_DropLockBeforeCallback();      // Allow client (and us) to legally make mDNS API calls
    e8826bac:	58dc                	lw	a5,52(s1)
    e8826bae:	5894                	lw	a3,48(s1)
    e8826bb0:	0017871b          	addiw	a4,a5,1
    e8826bb4:	d8d8                	sw	a4,52(s1)
    e8826bb6:	00d70d63          	beq	a4,a3,e8826bd0 <AnswerCurrentQuestionWithResourceRecord+0x210>
    e8826bba:	00081617          	auipc	a2,0x81
    e8826bbe:	0a660613          	addi	a2,a2,166 # e88a7c60 <__func__.10528>
    e8826bc2:	0007d597          	auipc	a1,0x7d
    e8826bc6:	1a658593          	addi	a1,a1,422 # e88a3d68 <end.8789+0x6c0>
    e8826bca:	4501                	li	a0,0
    e8826bcc:	0e1080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        VerifySignature(m, mDNSNULL, q);
    e8826bd0:	8622                	mv	a2,s0
    e8826bd2:	4581                	li	a1,0
    e8826bd4:	8526                	mv	a0,s1
    e8826bd6:	715080ef          	jal	ra,e882faea <VerifySignature>
        mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8826bda:	5894                	lw	a3,48(s1)
    e8826bdc:	58d8                	lw	a4,52(s1)
    e8826bde:	00e68d63          	beq	a3,a4,e8826bf8 <AnswerCurrentQuestionWithResourceRecord+0x238>
    e8826be2:	00081617          	auipc	a2,0x81
    e8826be6:	07e60613          	addi	a2,a2,126 # e88a7c60 <__func__.10528>
    e8826bea:	0007d597          	auipc	a1,0x7d
    e8826bee:	1be58593          	addi	a1,a1,446 # e88a3da8 <end.8789+0x700>
    e8826bf2:	4501                	li	a0,0
    e8826bf4:	0b9080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8826bf8:	58dc                	lw	a5,52(s1)
    e8826bfa:	37fd                	addiw	a5,a5,-1
    e8826bfc:	d8dc                	sw	a5,52(s1)
        return;
    e8826bfe:	b5ad                	j	e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    if (rr->resrec.RecordType == kDNSRecordTypePacketNegative || (q->qtype != kDNSType_NSEC && RRAssertsNonexistence(&rr->resrec, q->qtype)))
    e8826c00:	00890513          	addi	a0,s2,8
    e8826c04:	e92ed0ef          	jal	ra,e8814296 <RRAssertsNonexistence>
    e8826c08:	f00514e3          	bnez	a0,e8826b10 <AnswerCurrentQuestionWithResourceRecord+0x150>
    e8826c0c:	b79d                	j	e8826b72 <AnswerCurrentQuestionWithResourceRecord+0x1b2>
    if (q->QuestionCallback && !q->NoAnswer && (!followcname || q->ReturnIntermed))
    e8826c0e:	1b244783          	lbu	a5,434(s0)
    e8826c12:	f3bd                	bnez	a5,e8826b78 <AnswerCurrentQuestionWithResourceRecord+0x1b8>
    e8826c14:	000a0563          	beqz	s4,e8826c1e <AnswerCurrentQuestionWithResourceRecord+0x25e>
    e8826c18:	31b44783          	lbu	a5,795(s0)
    e8826c1c:	dfb1                	beqz	a5,e8826b78 <AnswerCurrentQuestionWithResourceRecord+0x1b8>
        mDNS_DropLockBeforeCallback();      // Allow client (and us) to legally make mDNS API calls
    e8826c1e:	58dc                	lw	a5,52(s1)
    e8826c20:	5894                	lw	a3,48(s1)
    e8826c22:	0017871b          	addiw	a4,a5,1
    e8826c26:	d8d8                	sw	a4,52(s1)
    e8826c28:	00d70d63          	beq	a4,a3,e8826c42 <AnswerCurrentQuestionWithResourceRecord+0x282>
    e8826c2c:	00081617          	auipc	a2,0x81
    e8826c30:	03460613          	addi	a2,a2,52 # e88a7c60 <__func__.10528>
    e8826c34:	0007d597          	auipc	a1,0x7d
    e8826c38:	13458593          	addi	a1,a1,308 # e88a3d68 <end.8789+0x6c0>
    e8826c3c:	4501                	li	a0,0
    e8826c3e:	06f080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (q->qtype != kDNSType_NSEC && RRAssertsNonexistence(&rr->resrec, q->qtype))
    e8826c42:	31445583          	lhu	a1,788(s0)
    e8826c46:	02f00793          	li	a5,47
    e8826c4a:	00890613          	addi	a2,s2,8
    e8826c4e:	06f58363          	beq	a1,a5,e8826cb4 <AnswerCurrentQuestionWithResourceRecord+0x2f4>
    e8826c52:	8532                	mv	a0,a2
    e8826c54:	ec32                	sd	a2,24(sp)
    e8826c56:	e40ed0ef          	jal	ra,e8814296 <RRAssertsNonexistence>
    e8826c5a:	6662                	ld	a2,24(sp)
    e8826c5c:	cd21                	beqz	a0,e8826cb4 <AnswerCurrentQuestionWithResourceRecord+0x2f4>
            MakeNegativeCacheRecord(m, &neg, &q->qname, q->qnamehash, q->qtype, q->qclass, 1, rr->resrec.InterfaceID, q->qDNSServer);
    e8826c5e:	16843603          	ld	a2,360(s0)
    e8826c62:	31645783          	lhu	a5,790(s0)
    e8826c66:	4414                	lw	a3,8(s0)
    e8826c68:	31445703          	lhu	a4,788(s0)
    e8826c6c:	02093883          	ld	a7,32(s2)
    e8826c70:	e032                	sd	a2,0(sp)
    e8826c72:	4805                	li	a6,1
    e8826c74:	21440613          	addi	a2,s0,532
    e8826c78:	102c                	addi	a1,sp,40
    e8826c7a:	8526                	mv	a0,s1
    e8826c7c:	ae6fa0ef          	jal	ra,e8820f62 <MakeNegativeCacheRecord>
            q->QuestionCallback(m, q, &neg.resrec, AddRecord);
    e8826c80:	34843783          	ld	a5,840(s0)
    e8826c84:	86ce                	mv	a3,s3
    e8826c86:	1810                	addi	a2,sp,48
                q->QuestionCallback(m, q, &rr->resrec, AddRecord);
    e8826c88:	85a2                	mv	a1,s0
    e8826c8a:	8526                	mv	a0,s1
    e8826c8c:	9782                	jalr	a5
        mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8826c8e:	5894                	lw	a3,48(s1)
    e8826c90:	58d8                	lw	a4,52(s1)
    e8826c92:	00e68d63          	beq	a3,a4,e8826cac <AnswerCurrentQuestionWithResourceRecord+0x2ec>
    e8826c96:	00081617          	auipc	a2,0x81
    e8826c9a:	fca60613          	addi	a2,a2,-54 # e88a7c60 <__func__.10528>
    e8826c9e:	0007d597          	auipc	a1,0x7d
    e8826ca2:	10a58593          	addi	a1,a1,266 # e88a3da8 <end.8789+0x700>
    e8826ca6:	4501                	li	a0,0
    e8826ca8:	005080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8826cac:	58dc                	lw	a5,52(s1)
    e8826cae:	37fd                	addiw	a5,a5,-1
    e8826cb0:	d8dc                	sw	a5,52(s1)
    e8826cb2:	b5d9                	j	e8826b78 <AnswerCurrentQuestionWithResourceRecord+0x1b8>
                q->QuestionCallback(m, q, &rr->resrec, AddRecord);
    e8826cb4:	34843783          	ld	a5,840(s0)
    e8826cb8:	86ce                	mv	a3,s3
    e8826cba:	b7f9                	j	e8826c88 <AnswerCurrentQuestionWithResourceRecord+0x2c8>
    if ((m->CurrentQuestion == q) && followcname && !ValidatingQuestion(q))
    e8826cbc:	da0a06e3          	beqz	s4,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    e8826cc0:	32444783          	lbu	a5,804(s0)
    e8826cc4:	da0792e3          	bnez	a5,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    e8826cc8:	14a44783          	lbu	a5,330(s0)
    e8826ccc:	d8079ee3          	bnez	a5,e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
        AnswerQuestionByFollowingCNAME(m, q, &rr->resrec);
    e8826cd0:	00890613          	addi	a2,s2,8
    e8826cd4:	85a2                	mv	a1,s0
    e8826cd6:	8526                	mv	a0,s1
    e8826cd8:	93cff0ef          	jal	ra,e8825e14 <AnswerQuestionByFollowingCNAME>
    e8826cdc:	b371                	j	e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>
    if ((m->CurrentQuestion == q) && followcname && !ValidatingQuestion(q))
    e8826cde:	fe0a19e3          	bnez	s4,e8826cd0 <AnswerCurrentQuestionWithResourceRecord+0x310>
    e8826ce2:	b359                	j	e8826a68 <AnswerCurrentQuestionWithResourceRecord+0xa8>

00000000e8826ce4 <CacheRecordDeferredAdd>:
{
    e8826ce4:	7179                	addi	sp,sp,-48
    e8826ce6:	e422                	sd	s0,8(sp)
    e8826ce8:	ec4a                	sd	s2,24(sp)
    e8826cea:	f406                	sd	ra,40(sp)
    e8826cec:	e826                	sd	s1,16(sp)
    e8826cee:	f04e                	sd	s3,32(sp)
    e8826cf0:	842a                	mv	s0,a0
    rr->DelayDelivery = 0;
    e8826cf2:	0405aa23          	sw	zero,84(a1)
    if (m->CurrentQuestion)
    e8826cf6:	2c853483          	ld	s1,712(a0)
{
    e8826cfa:	892e                	mv	s2,a1
    if (m->CurrentQuestion)
    e8826cfc:	cc99                	beqz	s1,e8826d1a <CacheRecordDeferredAdd+0x36>
        LogMsg("CacheRecordDeferredAdd ERROR m->CurrentQuestion already set: %##s (%s)",
    e8826cfe:	3144d503          	lhu	a0,788(s1)
    e8826d02:	f5fee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826d06:	86aa                	mv	a3,a0
    e8826d08:	21448613          	addi	a2,s1,532
    e8826d0c:	0007e597          	auipc	a1,0x7e
    e8826d10:	d4c58593          	addi	a1,a1,-692 # e88a4a58 <end.8789+0x13b0>
    e8826d14:	4501                	li	a0,0
    e8826d16:	796080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = m->Questions;
    e8826d1a:	2b843783          	ld	a5,696(s0)
        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8826d1e:	00890993          	addi	s3,s2,8
    m->CurrentQuestion = m->Questions;
    e8826d22:	2cf43423          	sd	a5,712(s0)
    while (m->CurrentQuestion && m->CurrentQuestion != m->NewQuestions)
    e8826d26:	2c843483          	ld	s1,712(s0)
    e8826d2a:	c489                	beqz	s1,e8826d34 <CacheRecordDeferredAdd+0x50>
    e8826d2c:	2c043783          	ld	a5,704(s0)
    e8826d30:	00f49b63          	bne	s1,a5,e8826d46 <CacheRecordDeferredAdd+0x62>
    m->CurrentQuestion = mDNSNULL;
    e8826d34:	2c043423          	sd	zero,712(s0)
}
    e8826d38:	70a2                	ld	ra,40(sp)
    e8826d3a:	6422                	ld	s0,8(sp)
    e8826d3c:	64c2                	ld	s1,16(sp)
    e8826d3e:	6962                	ld	s2,24(sp)
    e8826d40:	7982                	ld	s3,32(sp)
    e8826d42:	6145                	addi	sp,sp,48
    e8826d44:	8082                	ret
        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8826d46:	85a6                	mv	a1,s1
    e8826d48:	854e                	mv	a0,s3
    e8826d4a:	a56ef0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e8826d4e:	c511                	beqz	a0,e8826d5a <CacheRecordDeferredAdd+0x76>
            AnswerCurrentQuestionWithResourceRecord(m, rr, QC_add);
    e8826d50:	4605                	li	a2,1
    e8826d52:	85ca                	mv	a1,s2
    e8826d54:	8522                	mv	a0,s0
    e8826d56:	c6bff0ef          	jal	ra,e88269c0 <AnswerCurrentQuestionWithResourceRecord>
        if (m->CurrentQuestion == q)    // If m->CurrentQuestion was not auto-advanced, do it ourselves now
    e8826d5a:	2c843783          	ld	a5,712(s0)
    e8826d5e:	fc9794e3          	bne	a5,s1,e8826d26 <CacheRecordDeferredAdd+0x42>
            m->CurrentQuestion = q->next;
    e8826d62:	609c                	ld	a5,0(s1)
    e8826d64:	2cf43423          	sd	a5,712(s0)
    e8826d68:	bf7d                	j	e8826d26 <CacheRecordDeferredAdd+0x42>

00000000e8826d6a <CheckCacheExpiration>:
    if (m->lock_rrcache) { LogMsg("CheckCacheExpiration ERROR! Cache already locked!"); return; }
    e8826d6a:	03854783          	lbu	a5,56(a0)
    e8826d6e:	cb81                	beqz	a5,e8826d7e <CheckCacheExpiration+0x14>
    e8826d70:	0007e597          	auipc	a1,0x7e
    e8826d74:	01058593          	addi	a1,a1,16 # e88a4d80 <end.8789+0x16d8>
    e8826d78:	4501                	li	a0,0
    e8826d7a:	7320806f          	j	e882f4ac <LogMsgWithLevel>
{
    e8826d7e:	7175                	addi	sp,sp,-144
    e8826d80:	e122                	sd	s0,128(sp)
    e8826d82:	fca6                	sd	s1,120(sp)
    e8826d84:	f0d2                	sd	s4,96(sp)
    e8826d86:	e0e2                	sd	s8,64(sp)
    m->lock_rrcache = 1;
    e8826d88:	4785                	li	a5,1
{
    e8826d8a:	e506                	sd	ra,136(sp)
    e8826d8c:	f8ca                	sd	s2,112(sp)
    e8826d8e:	f4ce                	sd	s3,104(sp)
    e8826d90:	ecd6                	sd	s5,88(sp)
    e8826d92:	e8da                	sd	s6,80(sp)
    e8826d94:	e4de                	sd	s7,72(sp)
    e8826d96:	fc66                	sd	s9,56(sp)
    e8826d98:	f86a                	sd	s10,48(sp)
    e8826d9a:	f46e                	sd	s11,40(sp)
    e8826d9c:	7c05b58b          	extu	a1,a1,31,0
    m->lock_rrcache = 1;
    e8826da0:	02f50c23          	sb	a5,56(a0)
    e8826da4:	04b5140b          	addsl	s0,a0,a1,2
            if (m->rrcache_nextcheck[slot] - event > 0)
    e8826da8:	6785                	lui	a5,0x1
    e8826daa:	01060493          	addi	s1,a2,16
    e8826dae:	e832                	sd	a2,16(sp)
    e8826db0:	8c2a                	mv	s8,a0
    e8826db2:	943e                	add	s0,s0,a5
                    LogInfo("CacheRecordRmv: Last answer for %##s (%s) expired from cache; will reconfirm antecedents",
    e8826db4:	000aea17          	auipc	s4,0xae
    e8826db8:	cc0a0a13          	addi	s4,s4,-832 # e88d4a74 <mDNS_LoggingEnabled>
    while (*rp)
    e8826dbc:	0004b903          	ld	s2,0(s1)
    e8826dc0:	02091563          	bnez	s2,e8826dea <CheckCacheExpiration+0x80>
    cg->rrcache_tail = rp;
    e8826dc4:	67c2                	ld	a5,16(sp)
    e8826dc6:	ef84                	sd	s1,24(a5)
    m->lock_rrcache = 0;
    e8826dc8:	020c0c23          	sb	zero,56(s8)
}
    e8826dcc:	60aa                	ld	ra,136(sp)
    e8826dce:	640a                	ld	s0,128(sp)
    e8826dd0:	74e6                	ld	s1,120(sp)
    e8826dd2:	7946                	ld	s2,112(sp)
    e8826dd4:	79a6                	ld	s3,104(sp)
    e8826dd6:	7a06                	ld	s4,96(sp)
    e8826dd8:	6ae6                	ld	s5,88(sp)
    e8826dda:	6b46                	ld	s6,80(sp)
    e8826ddc:	6ba6                	ld	s7,72(sp)
    e8826dde:	6c06                	ld	s8,64(sp)
    e8826de0:	7ce2                	ld	s9,56(sp)
    e8826de2:	7d42                	ld	s10,48(sp)
    e8826de4:	7da2                	ld	s11,40(sp)
    e8826de6:	6149                	addi	sp,sp,144
    e8826de8:	8082                	ret
        mDNSs32 event = RRExpireTime(rr);
    e8826dea:	000aea97          	auipc	s5,0xae
    e8826dee:	c96a8a93          	addi	s5,s5,-874 # e88d4a80 <mDNSPlatformOneSecond>
    e8826df2:	000aa703          	lw	a4,0(s5)
    e8826df6:	01092683          	lw	a3,16(s2)
    e8826dfa:	05092783          	lw	a5,80(s2)
    e8826dfe:	8b56                	mv	s6,s5
    e8826e00:	24e6978b          	mulaw	a5,a3,a4
        if (m->timenow - event >= 0)    // If expired, delete it
    e8826e04:	240c2703          	lw	a4,576(s8)
        mDNSs32 event = RRExpireTime(rr);
    e8826e08:	89be                	mv	s3,a5
        if (m->timenow - event >= 0)    // If expired, delete it
    e8826e0a:	40f707bb          	subw	a5,a4,a5
    e8826e0e:	2007c263          	bltz	a5,e8827012 <CheckCacheExpiration+0x2a8>
            *rp = rr->next;             // Cut it from the list
    e8826e12:	00093783          	ld	a5,0(s2)
    e8826e16:	e09c                	sd	a5,0(s1)
            if (rr->CRActiveQuestion)   // If this record has one or more active questions, tell them it's going away
    e8826e18:	06093583          	ld	a1,96(s2)
    e8826e1c:	1a058f63          	beqz	a1,e8826fda <CheckCacheExpiration+0x270>
                if (!mDNSOpaque16IsZero(q->TargetQID) && !q->LongLived && ActiveQuestion(q))
    e8826e20:	2125d783          	lhu	a5,530(a1)
    e8826e24:	cb85                	beqz	a5,e8826e54 <CheckCacheExpiration+0xea>
    e8826e26:	3185c783          	lbu	a5,792(a1)
    e8826e2a:	e78d                	bnez	a5,e8826e54 <CheckCacheExpiration+0xea>
    e8826e2c:	49dc                	lw	a5,20(a1)
    e8826e2e:	02f05363          	blez	a5,e8826e54 <CheckCacheExpiration+0xea>
    e8826e32:	69bc                	ld	a5,80(a1)
    e8826e34:	e385                	bnez	a5,e8826e54 <CheckCacheExpiration+0xea>
                    q->ThisQInterval = InitialQuestionInterval;
    e8826e36:	000aa783          	lw	a5,0(s5)
    e8826e3a:	470d                	li	a4,3
                    SetNextQueryTime(m, q);
    e8826e3c:	8562                	mv	a0,s8
                    q->ThisQInterval = InitialQuestionInterval;
    e8826e3e:	2789                	addiw	a5,a5,2
    e8826e40:	02e7c7bb          	divw	a5,a5,a4
    e8826e44:	c9dc                	sw	a5,20(a1)
                    q->LastQTime     = m->timenow - q->ThisQInterval;
    e8826e46:	240c2703          	lw	a4,576(s8)
    e8826e4a:	40f707bb          	subw	a5,a4,a5
    e8826e4e:	c99c                	sw	a5,16(a1)
                    SetNextQueryTime(m, q);
    e8826e50:	c1cf70ef          	jal	ra,e881e26c <SetNextQueryTime>
    if (m->CurrentQuestion)
    e8826e54:	2c8c3983          	ld	s3,712(s8)
    e8826e58:	02098063          	beqz	s3,e8826e78 <CheckCacheExpiration+0x10e>
        LogMsg("CacheRecordRmv ERROR m->CurrentQuestion already set: %##s (%s)",
    e8826e5c:	3149d503          	lhu	a0,788(s3)
    e8826e60:	e01ee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826e64:	86aa                	mv	a3,a0
    e8826e66:	21498613          	addi	a2,s3,532
    e8826e6a:	0007e597          	auipc	a1,0x7e
    e8826e6e:	f4e58593          	addi	a1,a1,-178 # e88a4db8 <end.8789+0x1710>
    e8826e72:	4501                	li	a0,0
    e8826e74:	638080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = m->Questions;
    e8826e78:	2b8c3783          	ld	a5,696(s8)
                LogInfo("CacheRecordRmv: (%s) %##s dropped below threshold of %d answers",
    e8826e7c:	0007ec97          	auipc	s9,0x7e
    e8826e80:	fe4c8c93          	addi	s9,s9,-28 # e88a4e60 <end.8789+0x17b8>
                LogMsg("CacheRecordRmv ERROR!!: How can CurrentAnswers already be zero for %p %##s (%s) DNSServer %#a:%d",
    e8826e84:	0007c997          	auipc	s3,0x7c
    e8826e88:	72498993          	addi	s3,s3,1828 # e88a35a8 <zeroIPPort>
    m->CurrentQuestion = m->Questions;
    e8826e8c:	2cfc3423          	sd	a5,712(s8)
        if (!QuerySuppressed(q) && ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8826e90:	00890793          	addi	a5,s2,8
    e8826e94:	e43e                	sd	a5,8(sp)
                if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers--;
    e8826e96:	40000d13          	li	s10,1024
                LogMsg("CacheRecordRmv ERROR!!: How can CurrentAnswers already be zero for %p %##s (%s) DNSServer %#a:%d",
    e8826e9a:	0007ed97          	auipc	s11,0x7e
    e8826e9e:	f5ed8d93          	addi	s11,s11,-162 # e88a4df8 <end.8789+0x1750>
    e8826ea2:	aa29                	j	e8826fbc <CheckCacheExpiration+0x252>
        if (!QuerySuppressed(q) && ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8826ea4:	31cbc783          	lbu	a5,796(s7)
    e8826ea8:	cb89                	beqz	a5,e8826eba <CheckCacheExpiration+0x150>
    e8826eaa:	140bc783          	lbu	a5,320(s7)
    e8826eae:	c791                	beqz	a5,e8826eba <CheckCacheExpiration+0x150>
            m->CurrentQuestion = q->next;
    e8826eb0:	000bb783          	ld	a5,0(s7)
    e8826eb4:	2cfc3423          	sd	a5,712(s8)
    e8826eb8:	bff9                	j	e8826e96 <CheckCacheExpiration+0x12c>
        if (!QuerySuppressed(q) && ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8826eba:	1e6bc783          	lbu	a5,486(s7)
    e8826ebe:	fbed                	bnez	a5,e8826eb0 <CheckCacheExpiration+0x146>
    e8826ec0:	6522                	ld	a0,8(sp)
    e8826ec2:	85de                	mv	a1,s7
    e8826ec4:	8dcef0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e8826ec8:	0e050663          	beqz	a0,e8826fb4 <CheckCacheExpiration+0x24a>
            if (q->CurrentAnswers == 0)
    e8826ecc:	024ba783          	lw	a5,36(s7)
            q->FlappingInterface1 = mDNSNULL;
    e8826ed0:	020bbc23          	sd	zero,56(s7)
            q->FlappingInterface2 = mDNSNULL;
    e8826ed4:	040bb023          	sd	zero,64(s7)
            if (q->CurrentAnswers == 0)
    e8826ed8:	10079663          	bnez	a5,e8826fe4 <CheckCacheExpiration+0x27a>
                LogMsg("CacheRecordRmv ERROR!!: How can CurrentAnswers already be zero for %p %##s (%s) DNSServer %#a:%d",
    e8826edc:	314bd503          	lhu	a0,788(s7)
    e8826ee0:	214b8693          	addi	a3,s7,532
    e8826ee4:	ec36                	sd	a3,24(sp)
    e8826ee6:	d7bee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826eea:	872a                	mv	a4,a0
    e8826eec:	168bb783          	ld	a5,360(s7)
    e8826ef0:	66e2                	ld	a3,24(sp)
    e8826ef2:	18078a63          	beqz	a5,e8827086 <CheckCacheExpiration+0x31c>
    e8826ef6:	0287c603          	lbu	a2,40(a5) # 1028 <memcmp-0xe87fefd8>
    e8826efa:	0297c803          	lbu	a6,41(a5)
    e8826efe:	07d1                	addi	a5,a5,20
    e8826f00:	0622                	slli	a2,a2,0x8
    e8826f02:	00c86833          	or	a6,a6,a2
    e8826f06:	85ee                	mv	a1,s11
    e8826f08:	865e                	mv	a2,s7
    e8826f0a:	4501                	li	a0,0
    e8826f0c:	5a0080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (mDNSOpaque16IsZero(q->TargetQID) && (q->BrowseThreshold > 0) && (q->CurrentAnswers < q->BrowseThreshold))
    e8826f10:	212bd783          	lhu	a5,530(s7)
    e8826f14:	ebb1                	bnez	a5,e8826f68 <CheckCacheExpiration+0x1fe>
    e8826f16:	028ba783          	lw	a5,40(s7)
    e8826f1a:	c7b9                	beqz	a5,e8826f68 <CheckCacheExpiration+0x1fe>
    e8826f1c:	024ba703          	lw	a4,36(s7)
    e8826f20:	04f77463          	bgeu	a4,a5,e8826f68 <CheckCacheExpiration+0x1fe>
                q->ThisQInterval = InitialQuestionInterval;
    e8826f24:	000b2783          	lw	a5,0(s6)
    e8826f28:	470d                	li	a4,3
                SetNextQueryTime(m,q);
    e8826f2a:	85de                	mv	a1,s7
                q->ThisQInterval = InitialQuestionInterval;
    e8826f2c:	2789                	addiw	a5,a5,2
    e8826f2e:	02e7c7bb          	divw	a5,a5,a4
                SetNextQueryTime(m,q);
    e8826f32:	8562                	mv	a0,s8
                q->ThisQInterval = InitialQuestionInterval;
    e8826f34:	00fbaa23          	sw	a5,20(s7)
                q->LastQTime     = m->timenow - q->ThisQInterval;
    e8826f38:	240c2703          	lw	a4,576(s8)
    e8826f3c:	40f707bb          	subw	a5,a4,a5
    e8826f40:	00fba823          	sw	a5,16(s7)
                SetNextQueryTime(m,q);
    e8826f44:	b28f70ef          	jal	ra,e881e26c <SetNextQueryTime>
                LogInfo("CacheRecordRmv: (%s) %##s dropped below threshold of %d answers",
    e8826f48:	000a2783          	lw	a5,0(s4)
    e8826f4c:	cf91                	beqz	a5,e8826f68 <CheckCacheExpiration+0x1fe>
    e8826f4e:	314bd503          	lhu	a0,788(s7)
    e8826f52:	d0fee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826f56:	862a                	mv	a2,a0
    e8826f58:	028ba703          	lw	a4,40(s7)
    e8826f5c:	214b8693          	addi	a3,s7,532
    e8826f60:	85e6                	mv	a1,s9
    e8826f62:	450d                	li	a0,3
    e8826f64:	548080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (rr->resrec.rdata->MaxRDLength) // Never generate "remove" events for negative results
    e8826f68:	03093783          	ld	a5,48(s2)
    e8826f6c:	0007d783          	lhu	a5,0(a5)
    e8826f70:	c3b1                	beqz	a5,e8826fb4 <CheckCacheExpiration+0x24a>
                if (q->CurrentAnswers == 0)
    e8826f72:	024ba783          	lw	a5,36(s7)
    e8826f76:	eb95                	bnez	a5,e8826faa <CheckCacheExpiration+0x240>
                    LogInfo("CacheRecordRmv: Last answer for %##s (%s) expired from cache; will reconfirm antecedents",
    e8826f78:	000a2783          	lw	a5,0(s4)
    e8826f7c:	214b8a93          	addi	s5,s7,532
    e8826f80:	cf91                	beqz	a5,e8826f9c <CheckCacheExpiration+0x232>
    e8826f82:	314bd503          	lhu	a0,788(s7)
    e8826f86:	cdbee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8826f8a:	86aa                	mv	a3,a0
    e8826f8c:	8656                	mv	a2,s5
    e8826f8e:	0007e597          	auipc	a1,0x7e
    e8826f92:	f1258593          	addi	a1,a1,-238 # e88a4ea0 <end.8789+0x17f8>
    e8826f96:	450d                	li	a0,3
    e8826f98:	514080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    ReconfirmAntecedents(m, &q->qname, q->qnamehash, 0);
    e8826f9c:	008ba603          	lw	a2,8(s7)
    e8826fa0:	4681                	li	a3,0
    e8826fa2:	85d6                	mv	a1,s5
    e8826fa4:	8562                	mv	a0,s8
    e8826fa6:	d15f70ef          	jal	ra,e881ecba <ReconfirmAntecedents>
                AnswerCurrentQuestionWithResourceRecord(m, rr, QC_rmv);
    e8826faa:	4601                	li	a2,0
    e8826fac:	85ca                	mv	a1,s2
    e8826fae:	8562                	mv	a0,s8
    e8826fb0:	a11ff0ef          	jal	ra,e88269c0 <AnswerCurrentQuestionWithResourceRecord>
        if (m->CurrentQuestion == q)    // If m->CurrentQuestion was not auto-advanced, do it ourselves now
    e8826fb4:	2c8c3783          	ld	a5,712(s8)
    e8826fb8:	eefb8ce3          	beq	s7,a5,e8826eb0 <CheckCacheExpiration+0x146>
    while (m->CurrentQuestion && m->CurrentQuestion != m->NewQuestions)
    e8826fbc:	2c8c3b83          	ld	s7,712(s8)
    e8826fc0:	000b8663          	beqz	s7,e8826fcc <CheckCacheExpiration+0x262>
    e8826fc4:	2c0c3783          	ld	a5,704(s8)
    e8826fc8:	ecfb9ee3          	bne	s7,a5,e8826ea4 <CheckCacheExpiration+0x13a>
                m->rrcache_active--;
    e8826fcc:	2fcc2783          	lw	a5,764(s8)
    m->CurrentQuestion = mDNSNULL;
    e8826fd0:	2c0c3423          	sd	zero,712(s8)
                m->rrcache_active--;
    e8826fd4:	37fd                	addiw	a5,a5,-1
    e8826fd6:	2efc2e23          	sw	a5,764(s8)
            ReleaseCacheRecord(m, rr);
    e8826fda:	85ca                	mv	a1,s2
    e8826fdc:	8562                	mv	a0,s8
    e8826fde:	ae8f90ef          	jal	ra,e88202c6 <ReleaseCacheRecord>
    e8826fe2:	bbe9                	j	e8826dbc <CheckCacheExpiration+0x52>
                q->CurrentAnswers--;
    e8826fe4:	37fd                	addiw	a5,a5,-1
    e8826fe6:	02fba223          	sw	a5,36(s7)
                if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers--;
    e8826fea:	01495783          	lhu	a5,20(s2)
    e8826fee:	00fd7763          	bgeu	s10,a5,e8826ffc <CheckCacheExpiration+0x292>
    e8826ff2:	02cba783          	lw	a5,44(s7)
    e8826ff6:	37fd                	addiw	a5,a5,-1
    e8826ff8:	02fba623          	sw	a5,44(s7)
                if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers--;
    e8826ffc:	00894783          	lbu	a5,8(s2)
    e8827000:	8bc1                	andi	a5,a5,16
    e8827002:	f00787e3          	beqz	a5,e8826f10 <CheckCacheExpiration+0x1a6>
    e8827006:	030ba783          	lw	a5,48(s7)
    e882700a:	37fd                	addiw	a5,a5,-1
    e882700c:	02fba823          	sw	a5,48(s7)
    e8827010:	b701                	j	e8826f10 <CheckCacheExpiration+0x1a6>
            if (rr->DelayDelivery && rr->DelayDelivery - m->timenow > 0)
    e8827012:	05492783          	lw	a5,84(s2)
    e8827016:	cb89                	beqz	a5,e8827028 <CheckCacheExpiration+0x2be>
    e8827018:	40e7873b          	subw	a4,a5,a4
    e882701c:	06e04363          	bgtz	a4,e8827082 <CheckCacheExpiration+0x318>
                if (rr->DelayDelivery) CacheRecordDeferredAdd(m, rr);
    e8827020:	85ca                	mv	a1,s2
    e8827022:	8562                	mv	a0,s8
    e8827024:	cc1ff0ef          	jal	ra,e8826ce4 <CacheRecordDeferredAdd>
                if (rr->CRActiveQuestion && rr->UnansweredQueries < MaxUnansweredQueries)
    e8827028:	06093783          	ld	a5,96(s2)
    e882702c:	cb95                	beqz	a5,e8827060 <CheckCacheExpiration+0x2f6>
    e882702e:	06c94703          	lbu	a4,108(s2)
    e8827032:	478d                	li	a5,3
    e8827034:	02e7e663          	bltu	a5,a4,e8827060 <CheckCacheExpiration+0x2f6>
                    if (m->timenow - rr->NextRequiredQuery < 0)     // If not yet time for next query
    e8827038:	240c2783          	lw	a5,576(s8)
    e882703c:	05892703          	lw	a4,88(s2)
    e8827040:	40e786bb          	subw	a3,a5,a4
    e8827044:	0206d863          	bgez	a3,e8827074 <CheckCacheExpiration+0x30a>
                        event = NextCacheCheckEvent(rr);            // then just record when we want the next query
    e8827048:	000aa783          	lw	a5,0(s5)
    e882704c:	01092983          	lw	s3,16(s2)
    e8827050:	02f989bb          	mulw	s3,s3,a5
    e8827054:	03200793          	li	a5,50
    e8827058:	02f9c9bb          	divw	s3,s3,a5
    e882705c:	00e989bb          	addw	s3,s3,a4
            if (m->rrcache_nextcheck[slot] - event > 0)
    e8827060:	2a842783          	lw	a5,680(s0)
    e8827064:	413787bb          	subw	a5,a5,s3
    e8827068:	00f05463          	blez	a5,e8827070 <CheckCacheExpiration+0x306>
                m->rrcache_nextcheck[slot] = event;
    e882706c:	2b342423          	sw	s3,680(s0)
            rp = &rr->next;
    e8827070:	84ca                	mv	s1,s2
    e8827072:	b3a9                	j	e8826dbc <CheckCacheExpiration+0x52>
                        event = m->timenow + FutureTime;
    e8827074:	380009b7          	lui	s3,0x38000
                        m->NextScheduledQuery = m->timenow;
    e8827078:	24fc2c23          	sw	a5,600(s8)
                        event = m->timenow + FutureTime;
    e882707c:	00f989bb          	addw	s3,s3,a5
    e8827080:	b7c5                	j	e8827060 <CheckCacheExpiration+0x2f6>
    e8827082:	89be                	mv	s3,a5
    e8827084:	bff1                	j	e8827060 <CheckCacheExpiration+0x2f6>
                LogMsg("CacheRecordRmv ERROR!!: How can CurrentAnswers already be zero for %p %##s (%s) DNSServer %#a:%d",
    e8827086:	0009c603          	lbu	a2,0(s3) # 38000000 <memcmp-0xb0800000>
    e882708a:	0019c803          	lbu	a6,1(s3)
    e882708e:	bd8d                	j	e8826f00 <CheckCacheExpiration+0x196>

00000000e8827090 <GenerateNegativeResponse>:
{
    e8827090:	715d                	addi	sp,sp,-80
    e8827092:	e486                	sd	ra,72(sp)
    e8827094:	e0a2                	sd	s0,64(sp)
    e8827096:	fc26                	sd	s1,56(sp)
    e8827098:	f84a                	sd	s2,48(sp)
    e882709a:	f44e                	sd	s3,40(sp)
    e882709c:	f052                	sd	s4,32(sp)
    if (!m->CurrentQuestion) { LogMsg("GenerateNegativeResponse: ERROR!! CurrentQuestion not set"); return; }
    e882709e:	2c853483          	ld	s1,712(a0)
    e88270a2:	ec99                	bnez	s1,e88270c0 <GenerateNegativeResponse+0x30>
}
    e88270a4:	6406                	ld	s0,64(sp)
    e88270a6:	60a6                	ld	ra,72(sp)
    e88270a8:	74e2                	ld	s1,56(sp)
    e88270aa:	7942                	ld	s2,48(sp)
    e88270ac:	79a2                	ld	s3,40(sp)
    e88270ae:	7a02                	ld	s4,32(sp)
    if (!m->CurrentQuestion) { LogMsg("GenerateNegativeResponse: ERROR!! CurrentQuestion not set"); return; }
    e88270b0:	0007e597          	auipc	a1,0x7e
    e88270b4:	4b058593          	addi	a1,a1,1200 # e88a5560 <end.8789+0x1eb8>
    e88270b8:	4501                	li	a0,0
}
    e88270ba:	6161                	addi	sp,sp,80
    if (!m->CurrentQuestion) { LogMsg("GenerateNegativeResponse: ERROR!! CurrentQuestion not set"); return; }
    e88270bc:	3f00806f          	j	e882f4ac <LogMsgWithLevel>
    LogInfo("GenerateNegativeResponse: Generating negative response for question %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e88270c0:	000ae797          	auipc	a5,0xae
    e88270c4:	9b478793          	addi	a5,a5,-1612 # e88d4a74 <mDNS_LoggingEnabled>
    e88270c8:	439c                	lw	a5,0(a5)
    e88270ca:	89b2                	mv	s3,a2
    e88270cc:	88ae                	mv	a7,a1
    e88270ce:	842a                	mv	s0,a0
    e88270d0:	21448a13          	addi	s4,s1,532
    e88270d4:	c385                	beqz	a5,e88270f4 <GenerateNegativeResponse+0x64>
    e88270d6:	3144d503          	lhu	a0,788(s1)
    e88270da:	ec2e                	sd	a1,24(sp)
    e88270dc:	b85ee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88270e0:	86aa                	mv	a3,a0
    e88270e2:	8652                	mv	a2,s4
    e88270e4:	0007e597          	auipc	a1,0x7e
    e88270e8:	4bc58593          	addi	a1,a1,1212 # e88a55a0 <end.8789+0x1ef8>
    e88270ec:	450d                	li	a0,3
    e88270ee:	3be080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88270f2:	68e2                	ld	a7,24(sp)
    MakeNegativeCacheRecord(m, &m->rec.r, &q->qname, q->qnamehash, q->qtype, q->qclass, 60, InterfaceID, mDNSNULL);
    e88270f4:	6925                	lui	s2,0x9
    e88270f6:	3164d783          	lhu	a5,790(s1)
    e88270fa:	3144d703          	lhu	a4,788(s1)
    e88270fe:	4494                	lw	a3,8(s1)
    e8827100:	4d890913          	addi	s2,s2,1240 # 94d8 <memcmp-0xe87f6b28>
    e8827104:	9922                	add	s2,s2,s0
    e8827106:	03c00813          	li	a6,60
    e882710a:	8652                	mv	a2,s4
    e882710c:	85ca                	mv	a1,s2
    e882710e:	8522                	mv	a0,s0
    e8827110:	e002                	sd	zero,0(sp)
    e8827112:	e51f90ef          	jal	ra,e8820f62 <MakeNegativeCacheRecord>
    AnswerCurrentQuestionWithResourceRecord(m, &m->rec.r, qc);
    e8827116:	864e                	mv	a2,s3
    e8827118:	85ca                	mv	a1,s2
    e882711a:	8522                	mv	a0,s0
    e882711c:	8a5ff0ef          	jal	ra,e88269c0 <AnswerCurrentQuestionWithResourceRecord>
    if (m->CurrentQuestion == q) { q->ThisQInterval = 0; }              // Deactivate this question
    e8827120:	2c843783          	ld	a5,712(s0)
    e8827124:	00f49463          	bne	s1,a5,e882712c <GenerateNegativeResponse+0x9c>
    e8827128:	0004aa23          	sw	zero,20(s1)
    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e882712c:	6525                	lui	a0,0x9
    e882712e:	942a                	add	s0,s0,a0
    e8827130:	4e040023          	sb	zero,1248(s0)
}
    e8827134:	60a6                	ld	ra,72(sp)
    e8827136:	6406                	ld	s0,64(sp)
    e8827138:	74e2                	ld	s1,56(sp)
    e882713a:	7942                	ld	s2,48(sp)
    e882713c:	79a2                	ld	s3,40(sp)
    e882713e:	7a02                	ld	s4,32(sp)
    e8827140:	6161                	addi	sp,sp,80
    e8827142:	8082                	ret

00000000e8827144 <TimeoutQuestions_internal>:
{
    e8827144:	7139                	addi	sp,sp,-64
    e8827146:	e826                	sd	s1,16(sp)
    e8827148:	ec4a                	sd	s2,24(sp)
    e882714a:	f04e                	sd	s3,32(sp)
    e882714c:	fc06                	sd	ra,56(sp)
    e882714e:	e422                	sd	s0,8(sp)
    e8827150:	f452                	sd	s4,40(sp)
    e8827152:	f856                	sd	s5,48(sp)
    if (m->CurrentQuestion)
    e8827154:	2c853403          	ld	s0,712(a0) # 92c8 <memcmp-0xe87f6d38>
{
    e8827158:	84aa                	mv	s1,a0
    e882715a:	89ae                	mv	s3,a1
    e882715c:	8932                	mv	s2,a2
    if (m->CurrentQuestion)
    e882715e:	cc19                	beqz	s0,e882717c <TimeoutQuestions_internal+0x38>
        LogMsg("TimeoutQuestions ERROR m->CurrentQuestion already set: %##s (%s)", m->CurrentQuestion->qname.c,
    e8827160:	31445503          	lhu	a0,788(s0)
    e8827164:	afdee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8827168:	86aa                	mv	a3,a0
    e882716a:	21440613          	addi	a2,s0,532
    e882716e:	00080597          	auipc	a1,0x80
    e8827172:	77258593          	addi	a1,a1,1906 # e88a78e0 <end.8789+0x4238>
    e8827176:	4501                	li	a0,0
    e8827178:	334080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = questions;
    e882717c:	2d34b423          	sd	s3,712(s1)
                LogInfo("TimeoutQuestions: question %p %##s timed out, time %d", q, q->qname.c, m->timenow - q->StopTime);
    e8827180:	000aea17          	auipc	s4,0xae
    e8827184:	8f4a0a13          	addi	s4,s4,-1804 # e88d4a74 <mDNS_LoggingEnabled>
                LogMsg("TimeoutQuestions: ERROR!! TimeoutQuestion not set, but StopTime set for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8827188:	00080997          	auipc	s3,0x80
    e882718c:	7a098993          	addi	s3,s3,1952 # e88a7928 <end.8789+0x4280>
                LogInfo("TimeoutQuestions: question %p %##s timed out, time %d", q, q->qname.c, m->timenow - q->StopTime);
    e8827190:	00080a97          	auipc	s5,0x80
    e8827194:	7f0a8a93          	addi	s5,s5,2032 # e88a7980 <end.8789+0x42d8>
    while (m->CurrentQuestion)
    e8827198:	2c84b403          	ld	s0,712(s1)
    e882719c:	e811                	bnez	s0,e88271b0 <TimeoutQuestions_internal+0x6c>
}
    e882719e:	70e2                	ld	ra,56(sp)
    e88271a0:	6422                	ld	s0,8(sp)
    e88271a2:	64c2                	ld	s1,16(sp)
    e88271a4:	6962                	ld	s2,24(sp)
    e88271a6:	7982                	ld	s3,32(sp)
    e88271a8:	7a22                	ld	s4,40(sp)
    e88271aa:	7ac2                	ld	s5,48(sp)
    e88271ac:	6121                	addi	sp,sp,64
    e88271ae:	8082                	ret
        if (q->StopTime)
    e88271b0:	14442783          	lw	a5,324(s0)
    e88271b4:	c3ad                	beqz	a5,e8827216 <TimeoutQuestions_internal+0xd2>
            if (!q->TimeoutQuestion)
    e88271b6:	31e44783          	lbu	a5,798(s0)
    e88271ba:	ef81                	bnez	a5,e88271d2 <TimeoutQuestions_internal+0x8e>
                LogMsg("TimeoutQuestions: ERROR!! TimeoutQuestion not set, but StopTime set for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e88271bc:	31445503          	lhu	a0,788(s0)
    e88271c0:	aa1ee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88271c4:	86aa                	mv	a3,a0
    e88271c6:	21440613          	addi	a2,s0,532
    e88271ca:	85ce                	mv	a1,s3
    e88271cc:	4501                	li	a0,0
    e88271ce:	2de080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (m->timenow - q->StopTime >= 0)
    e88271d2:	14442783          	lw	a5,324(s0)
    e88271d6:	2404a703          	lw	a4,576(s1)
    e88271da:	9f1d                	subw	a4,a4,a5
    e88271dc:	04074163          	bltz	a4,e882721e <TimeoutQuestions_internal+0xda>
                LogInfo("TimeoutQuestions: question %p %##s timed out, time %d", q, q->qname.c, m->timenow - q->StopTime);
    e88271e0:	000a2783          	lw	a5,0(s4)
    e88271e4:	cb81                	beqz	a5,e88271f4 <TimeoutQuestions_internal+0xb0>
    e88271e6:	21440693          	addi	a3,s0,532
    e88271ea:	8622                	mv	a2,s0
    e88271ec:	85d6                	mv	a1,s5
    e88271ee:	450d                	li	a0,3
    e88271f0:	2bc080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                q->LOAddressAnswers = 0; // unset since timing out the question
    e88271f4:	140400a3          	sb	zero,321(s0)
                GenerateNegativeResponse(m, InterfaceID, QC_forceresponse);
    e88271f8:	460d                	li	a2,3
    e88271fa:	85ca                	mv	a1,s2
    e88271fc:	8526                	mv	a0,s1
    e88271fe:	e93ff0ef          	jal	ra,e8827090 <GenerateNegativeResponse>
                if (m->CurrentQuestion == q) q->StopTime = 0;
    e8827202:	2c84b783          	ld	a5,712(s1)
    e8827206:	f88799e3          	bne	a5,s0,e8827198 <TimeoutQuestions_internal+0x54>
    e882720a:	14042223          	sw	zero,324(s0)
        if (m->CurrentQuestion == q)
    e882720e:	2c84b783          	ld	a5,712(s1)
    e8827212:	f88793e3          	bne	a5,s0,e8827198 <TimeoutQuestions_internal+0x54>
            m->CurrentQuestion = q->next;
    e8827216:	601c                	ld	a5,0(s0)
    e8827218:	2cf4b423          	sd	a5,712(s1)
    e882721c:	bfb5                	j	e8827198 <TimeoutQuestions_internal+0x54>
                if (m->NextScheduledStopTime - q->StopTime > 0)
    e882721e:	2ac4a703          	lw	a4,684(s1)
    e8827222:	9f1d                	subw	a4,a4,a5
    e8827224:	fee055e3          	blez	a4,e882720e <TimeoutQuestions_internal+0xca>
                    m->NextScheduledStopTime = q->StopTime;
    e8827228:	2af4a623          	sw	a5,684(s1)
    e882722c:	b7cd                	j	e882720e <TimeoutQuestions_internal+0xca>

00000000e882722e <NoCacheAnswer>:
    LogMsg("No cache space: Delivering non-cached result for %##s", m->rec.r.resrec.name->c);
    e882722e:	67a5                	lui	a5,0x9
{
    e8827230:	7179                	addi	sp,sp,-48
    LogMsg("No cache space: Delivering non-cached result for %##s", m->rec.r.resrec.name->c);
    e8827232:	97aa                	add	a5,a5,a0
{
    e8827234:	e422                	sd	s0,8(sp)
    e8827236:	e826                	sd	s1,16(sp)
    e8827238:	ec4a                	sd	s2,24(sp)
    e882723a:	f406                	sd	ra,40(sp)
    e882723c:	f04e                	sd	s3,32(sp)
    LogMsg("No cache space: Delivering non-cached result for %##s", m->rec.r.resrec.name->c);
    e882723e:	5007b603          	ld	a2,1280(a5) # 9500 <memcmp-0xe87f6b00>
{
    e8827242:	842a                	mv	s0,a0
    e8827244:	892e                	mv	s2,a1
    LogMsg("No cache space: Delivering non-cached result for %##s", m->rec.r.resrec.name->c);
    e8827246:	4501                	li	a0,0
    e8827248:	0007f597          	auipc	a1,0x7f
    e882724c:	d2858593          	addi	a1,a1,-728 # e88a5f70 <end.8789+0x28c8>
    e8827250:	25c080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (m->CurrentQuestion)
    e8827254:	2c843483          	ld	s1,712(s0)
    e8827258:	cc99                	beqz	s1,e8827276 <NoCacheAnswer+0x48>
        LogMsg("NoCacheAnswer ERROR m->CurrentQuestion already set: %##s (%s)", m->CurrentQuestion->qname.c, DNSTypeName(m->CurrentQuestion->qtype));
    e882725a:	3144d503          	lhu	a0,788(s1)
    e882725e:	a03ee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8827262:	86aa                	mv	a3,a0
    e8827264:	21448613          	addi	a2,s1,532
    e8827268:	0007f597          	auipc	a1,0x7f
    e882726c:	d4058593          	addi	a1,a1,-704 # e88a5fa8 <end.8789+0x2900>
    e8827270:	4501                	li	a0,0
    e8827272:	23a080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = m->Questions;
    e8827276:	2b843783          	ld	a5,696(s0)
        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e882727a:	00890993          	addi	s3,s2,8
    m->CurrentQuestion = m->Questions;
    e882727e:	2cf43423          	sd	a5,712(s0)
    while (m->CurrentQuestion)
    e8827282:	2c843483          	ld	s1,712(s0)
    e8827286:	e881                	bnez	s1,e8827296 <NoCacheAnswer+0x68>
}
    e8827288:	70a2                	ld	ra,40(sp)
    e882728a:	6422                	ld	s0,8(sp)
    e882728c:	64c2                	ld	s1,16(sp)
    e882728e:	6962                	ld	s2,24(sp)
    e8827290:	7982                	ld	s3,32(sp)
    e8827292:	6145                	addi	sp,sp,48
    e8827294:	8082                	ret
        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8827296:	85a6                	mv	a1,s1
    e8827298:	854e                	mv	a0,s3
    e882729a:	d07ee0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e882729e:	c511                	beqz	a0,e88272aa <NoCacheAnswer+0x7c>
            AnswerCurrentQuestionWithResourceRecord(m, rr, QC_addnocache);  // QC_addnocache means "don't expect remove events for this"
    e88272a0:	4609                	li	a2,2
    e88272a2:	85ca                	mv	a1,s2
    e88272a4:	8522                	mv	a0,s0
    e88272a6:	f1aff0ef          	jal	ra,e88269c0 <AnswerCurrentQuestionWithResourceRecord>
        if (m->CurrentQuestion == q)    // If m->CurrentQuestion was not auto-advanced, do it ourselves now
    e88272aa:	2c843783          	ld	a5,712(s0)
    e88272ae:	fc979ae3          	bne	a5,s1,e8827282 <NoCacheAnswer+0x54>
            m->CurrentQuestion = q->next;
    e88272b2:	609c                	ld	a5,0(s1)
    e88272b4:	2cf43423          	sd	a5,712(s0)
    e88272b8:	b7e9                	j	e8827282 <NoCacheAnswer+0x54>

00000000e88272ba <CreateNewCacheEntry>:
{
    e88272ba:	711d                	addi	sp,sp,-96
    e88272bc:	f05a                	sd	s6,32(sp)
    e88272be:	8b3e                	mv	s6,a5
    switch (rr->rrtype)
    e88272c0:	67a5                	lui	a5,0x9
    e88272c2:	97aa                	add	a5,a5,a0
{
    e88272c4:	e8a2                	sd	s0,80(sp)
    e88272c6:	e4a6                	sd	s1,72(sp)
    e88272c8:	e0ca                	sd	s2,64(sp)
    e88272ca:	fc4e                	sd	s3,56(sp)
    e88272cc:	f456                	sd	s5,40(sp)
    e88272ce:	ec5e                	sd	s7,24(sp)
    e88272d0:	ec86                	sd	ra,88(sp)
    e88272d2:	f852                	sd	s4,48(sp)
    e88272d4:	e862                	sd	s8,16(sp)
    e88272d6:	e466                	sd	s9,8(sp)
    e88272d8:	e06a                	sd	s10,0(sp)
    e88272da:	8aba                	mv	s5,a4
    switch (rr->rrtype)
    e88272dc:	4e27d703          	lhu	a4,1250(a5) # 94e2 <memcmp-0xe87f6b1e>
{
    e88272e0:	8bb6                	mv	s7,a3
    switch (rr->rrtype)
    e88272e2:	46c5                	li	a3,17
{
    e88272e4:	842a                	mv	s0,a0
    e88272e6:	84ae                	mv	s1,a1
    e88272e8:	8932                	mv	s2,a2
    case kDNSType_RP:  return sizeof(rdataRP);
    e88272ea:	20000993          	li	s3,512
    switch (rr->rrtype)
    e88272ee:	00d70e63          	beq	a4,a3,e882730a <CreateNewCacheEntry+0x50>
    e88272f2:	46e9                	li	a3,26
    case kDNSType_PX:  return sizeof(rdataPX);
    e88272f4:	20200993          	li	s3,514
    switch (rr->rrtype)
    e88272f8:	00d70963          	beq	a4,a3,e882730a <CreateNewCacheEntry+0x50>
    e88272fc:	4699                	li	a3,6
    case kDNSType_SOA: return sizeof(rdataSOA);
    e88272fe:	21400993          	li	s3,532
    switch (rr->rrtype)
    e8827302:	00d70463          	beq	a4,a3,e882730a <CreateNewCacheEntry+0x50>
    default:           return rr->rdlength;
    e8827306:	4ec7d983          	lhu	s3,1260(a5)
    if (!cg) cg = GetCacheGroup(m, slot, &m->rec.r.resrec); // If we don't have a CacheGroup for this name, make one now
    e882730a:	10091d63          	bnez	s2,e8827424 <CreateNewCacheEntry+0x16a>
    mDNSu16 namelen = DomainNameLength(rr->name);
    e882730e:	6a25                	lui	s4,0x9
    e8827310:	9a22                	add	s4,s4,s0
    e8827312:	500a3503          	ld	a0,1280(s4) # 9500 <memcmp-0xe87f6b00>
    e8827316:	10050593          	addi	a1,a0,256
    e882731a:	e33eb0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882731e:	8c2a                	mv	s8,a0
    CacheGroup *cg = (CacheGroup*)GetCacheEntity(m, mDNSNULL);
    e8827320:	4581                	li	a1,0
    e8827322:	8522                	mv	a0,s0
    e8827324:	894f90ef          	jal	ra,e88203b8 <GetCacheEntity>
    e8827328:	892a                	mv	s2,a0
    if (!cg) { LogMsg("GetCacheGroup: Failed to allocate memory for %##s", rr->name->c); return(mDNSNULL); }
    e882732a:	e115                	bnez	a0,e882734e <CreateNewCacheEntry+0x94>
    e882732c:	500a3603          	ld	a2,1280(s4)
    e8827330:	0007e597          	auipc	a1,0x7e
    e8827334:	eb058593          	addi	a1,a1,-336 # e88a51e0 <end.8789+0x1b38>
    e8827338:	174080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                NoCacheAnswer(m, &m->rec.r);
    e882733c:	65a5                	lui	a1,0x9
    e882733e:	4d858593          	addi	a1,a1,1240 # 94d8 <memcmp-0xe87f6b28>
    e8827342:	95a2                	add	a1,a1,s0
    e8827344:	8522                	mv	a0,s0
    e8827346:	ee9ff0ef          	jal	ra,e882722e <NoCacheAnswer>
                rr = mDNSNULL;
    e882734a:	4481                	li	s1,0
    return(rr);
    e882734c:	ac69                	j	e88275e6 <CreateNewCacheEntry+0x32c>
    cg->next         = m->rrcache_hash[slot];
    e882734e:	7c04b48b          	extu	s1,s1,31,0
    e8827352:	0694148b          	addsl	s1,s0,s1,3
    e8827356:	3104b783          	ld	a5,784(s1)
    e882735a:	e11c                	sd	a5,0(a0)
    cg->namehash     = rr->namehash;
    e882735c:	4f0a2783          	lw	a5,1264(s4)
    e8827360:	c51c                	sw	a5,8(a0)
    cg->members      = mDNSNULL;
    e8827362:	87aa                	mv	a5,a0
    e8827364:	6a87d00b          	sdib	zero,(a5),8,1
    cg->rrcache_tail = &cg->members;
    e8827368:	ed1c                	sd	a5,24(a0)
    if (namelen > sizeof(cg->namestorage))
    e882736a:	000c051b          	sext.w	a0,s8
    e882736e:	0c000793          	li	a5,192
    e8827372:	02a7fb63          	bgeu	a5,a0,e88273a8 <CreateNewCacheEntry+0xee>
        cg->name = mDNSPlatformMemAllocate(namelen);
    e8827376:	6ed080ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e882737a:	02a93023          	sd	a0,32(s2)
    if (!cg->name)
    e882737e:	e90d                	bnez	a0,e88273b0 <CreateNewCacheEntry+0xf6>
        LogMsg("GetCacheGroup: Failed to allocate name storage for %##s", rr->name->c);
    e8827380:	500a3603          	ld	a2,1280(s4)
    e8827384:	0007e597          	auipc	a1,0x7e
    e8827388:	e9458593          	addi	a1,a1,-364 # e88a5218 <end.8789+0x1b70>
    e882738c:	120080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e->next = m->rrcache_free;
    e8827390:	30843783          	ld	a5,776(s0)
    e8827394:	00f93023          	sd	a5,0(s2)
    m->rrcache_free = e;
    e8827398:	31243423          	sd	s2,776(s0)
    m->rrcache_totalused--;
    e882739c:	2f442783          	lw	a5,756(s0)
    e88273a0:	37fd                	addiw	a5,a5,-1
    e88273a2:	2ef42a23          	sw	a5,756(s0)
    if (!rr) NoCacheAnswer(m, &m->rec.r);
    e88273a6:	bf59                	j	e882733c <CreateNewCacheEntry+0x82>
        cg->name = (domainname*)cg->namestorage;
    e88273a8:	02890793          	addi	a5,s2,40
    e88273ac:	02f93023          	sd	a5,32(s2)
    AssignDomainName(cg->name, rr->name);
    e88273b0:	6a25                	lui	s4,0x9
    e88273b2:	9a22                	add	s4,s4,s0
    e88273b4:	500a3503          	ld	a0,1280(s4) # 9500 <memcmp-0xe87f6b00>
    e88273b8:	10050593          	addi	a1,a0,256
    e88273bc:	d91eb0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88273c0:	0005061b          	sext.w	a2,a0
    e88273c4:	10000793          	li	a5,256
    e88273c8:	02093503          	ld	a0,32(s2)
    e88273cc:	0ec7eb63          	bltu	a5,a2,e88274c2 <CreateNewCacheEntry+0x208>
    e88273d0:	500a3583          	ld	a1,1280(s4)
    e88273d4:	6cc080ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    mDNSu16 RDLength = GetRDLengthMem(&m->rec.r.resrec);
    e88273d8:	6c25                	lui	s8,0x9
    e88273da:	4e0c0a13          	addi	s4,s8,1248 # 94e0 <memcmp-0xe87f6b20>
    e88273de:	9a22                	add	s4,s4,s0
    if (CacheGroupForRecord(m, rr)) LogMsg("GetCacheGroup: Already have CacheGroup for %##s", rr->name->c);
    e88273e0:	85d2                	mv	a1,s4
    e88273e2:	8522                	mv	a0,s0
    e88273e4:	c4cf70ef          	jal	ra,e881e830 <CacheGroupForRecord>
    e88273e8:	c919                	beqz	a0,e88273fe <CreateNewCacheEntry+0x144>
    e88273ea:	9c22                	add	s8,s8,s0
    e88273ec:	500c3603          	ld	a2,1280(s8)
    e88273f0:	0007e597          	auipc	a1,0x7e
    e88273f4:	e6058593          	addi	a1,a1,-416 # e88a5250 <end.8789+0x1ba8>
    e88273f8:	4501                	li	a0,0
    e88273fa:	0b2080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->rrcache_hash[slot] = cg;
    e88273fe:	3124b823          	sd	s2,784(s1)
    if (CacheGroupForRecord(m, rr) != cg) LogMsg("GetCacheGroup: Not finding CacheGroup for %##s", rr->name->c);
    e8827402:	85d2                	mv	a1,s4
    e8827404:	8522                	mv	a0,s0
    e8827406:	c2af70ef          	jal	ra,e881e830 <CacheGroupForRecord>
    e882740a:	00a90d63          	beq	s2,a0,e8827424 <CreateNewCacheEntry+0x16a>
    e882740e:	67a5                	lui	a5,0x9
    e8827410:	97a2                	add	a5,a5,s0
    e8827412:	5007b603          	ld	a2,1280(a5) # 9500 <memcmp-0xe87f6b00>
    e8827416:	0007e597          	auipc	a1,0x7e
    e882741a:	e6a58593          	addi	a1,a1,-406 # e88a5280 <end.8789+0x1bd8>
    e882741e:	4501                	li	a0,0
    e8827420:	08c080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    CacheRecord *r = (CacheRecord *)GetCacheEntity(m, cg);
    e8827424:	85ca                	mv	a1,s2
    e8827426:	8522                	mv	a0,s0
    e8827428:	f91f80ef          	jal	ra,e88203b8 <GetCacheEntity>
    e882742c:	84aa                	mv	s1,a0
    if (r)
    e882742e:	f00507e3          	beqz	a0,e882733c <CreateNewCacheEntry+0x82>
        r->resrec.rdata = (RData*)&r->smallrdatastorage;    // By default, assume we're usually going to be using local storage
    e8827432:	09c48c93          	addi	s9,s1,156
    e8827436:	0394b823          	sd	s9,48(s1)
        if (RDLength > InlineCacheRDSize)           // If RDLength is too big, allocate extra storage
    e882743a:	00098c1b          	sext.w	s8,s3
    e882743e:	04400793          	li	a5,68
    e8827442:	0187fc63          	bgeu	a5,s8,e882745a <CreateNewCacheEntry+0x1a0>
            r->resrec.rdata = (RData*)mDNSPlatformMemAllocate(sizeofRDataHeader + RDLength);
    e8827446:	00498513          	addi	a0,s3,4
    e882744a:	619080ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e882744e:	f888                	sd	a0,48(s1)
            if (r->resrec.rdata) r->resrec.rdata->MaxRDLength = r->resrec.rdlength = RDLength;
    e8827450:	cd25                	beqz	a0,e88274c8 <CreateNewCacheEntry+0x20e>
    e8827452:	01349a23          	sh	s3,20(s1)
    e8827456:	01351023          	sh	s3,0(a0)
        *rr = m->rec.r;                         // Block copy the CacheRecord object
    e882745a:	6a25                	lui	s4,0x9
    e882745c:	9a22                	add	s4,s4,s0
        RData *saveptr = rr->resrec.rdata;      // Save the rr->resrec.rdata pointer
    e882745e:	0304bd03          	ld	s10,48(s1)
        *rr = m->rec.r;                         // Block copy the CacheRecord object
    e8827462:	0e800613          	li	a2,232
    e8827466:	4d8a0593          	addi	a1,s4,1240 # 94d8 <memcmp-0xe87f6b28>
    e882746a:	8526                	mv	a0,s1
    e882746c:	bfdd80ef          	jal	ra,e8800068 <memcpy>
        rr->resrec.rdata  = saveptr;            // Restore rr->resrec.rdata after the structure assignment
    e8827470:	03a4b823          	sd	s10,48(s1)
        rr->resrec.name   = cg->name;           // And set rr->resrec.name to point into our CacheGroup header
    e8827474:	02093783          	ld	a5,32(s2)
    e8827478:	f49c                	sd	a5,40(s1)
        if (m->rec.r.resrec.AnonInfo)
    e882747a:	518a3783          	ld	a5,1304(s4)
    e882747e:	c781                	beqz	a5,e8827486 <CreateNewCacheEntry+0x1cc>
            rr->resrec.AnonInfo = m->rec.r.resrec.AnonInfo;
    e8827480:	e0bc                	sd	a5,64(s1)
            m->rec.r.resrec.AnonInfo = mDNSNULL;
    e8827482:	500a3c23          	sd	zero,1304(s4)
        if      (rr->resrec.rdata == (RData*)&rr->smallrdatastorage && RDLength > InlineCacheRDSize)
    e8827486:	789c                	ld	a5,48(s1)
        rr->DelayDelivery = delay;
    e8827488:	0574aa23          	sw	s7,84(s1)
        if      (rr->resrec.rdata == (RData*)&rr->smallrdatastorage && RDLength > InlineCacheRDSize)
    e882748c:	05979463          	bne	a5,s9,e88274d4 <CreateNewCacheEntry+0x21a>
    e8827490:	04400793          	li	a5,68
    e8827494:	0587ff63          	bgeu	a5,s8,e88274f2 <CreateNewCacheEntry+0x238>
            LogMsg("rr->resrec.rdata == &rr->rdatastorage but length > InlineCacheRDSize %##s", m->rec.r.resrec.name->c);
    e8827498:	67a5                	lui	a5,0x9
    e882749a:	97a2                	add	a5,a5,s0
    e882749c:	5007b603          	ld	a2,1280(a5) # 9500 <memcmp-0xe87f6b00>
    e88274a0:	0007e597          	auipc	a1,0x7e
    e88274a4:	e1058593          	addi	a1,a1,-496 # e88a52b0 <end.8789+0x1c08>
    e88274a8:	4501                	li	a0,0
    e88274aa:	002080ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            mDNSPlatformMemCopy(rr->resrec.rdata, m->rec.r.resrec.rdata, sizeofRDataHeader + RDLength);
    e88274ae:	67a5                	lui	a5,0x9
    e88274b0:	97a2                	add	a5,a5,s0
    e88274b2:	5087b583          	ld	a1,1288(a5) # 9508 <memcmp-0xe87f6af8>
    e88274b6:	7888                	ld	a0,48(s1)
    e88274b8:	00498613          	addi	a2,s3,4
    e88274bc:	5e4080ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    e88274c0:	a80d                	j	e88274f2 <CreateNewCacheEntry+0x238>
    AssignDomainName(cg->name, rr->name);
    e88274c2:	00050023          	sb	zero,0(a0)
    e88274c6:	bf09                	j	e88273d8 <CreateNewCacheEntry+0x11e>
    e->next = m->rrcache_free;
    e88274c8:	30843783          	ld	a5,776(s0)
    e88274cc:	e09c                	sd	a5,0(s1)
    m->rrcache_free = e;
    e88274ce:	30943423          	sd	s1,776(s0)
    e88274d2:	b5e9                	j	e882739c <CreateNewCacheEntry+0xe2>
        else if (rr->resrec.rdata != (RData*)&rr->smallrdatastorage && RDLength <= InlineCacheRDSize)
    e88274d4:	04400793          	li	a5,68
    e88274d8:	fd87ebe3          	bltu	a5,s8,e88274ae <CreateNewCacheEntry+0x1f4>
            LogMsg("rr->resrec.rdata != &rr->rdatastorage but length <= InlineCacheRDSize %##s", m->rec.r.resrec.name->c);
    e88274dc:	67a5                	lui	a5,0x9
    e88274de:	97a2                	add	a5,a5,s0
    e88274e0:	5007b603          	ld	a2,1280(a5) # 9500 <memcmp-0xe87f6b00>
    e88274e4:	0007e597          	auipc	a1,0x7e
    e88274e8:	e1c58593          	addi	a1,a1,-484 # e88a5300 <end.8789+0x1c58>
    e88274ec:	4501                	li	a0,0
    e88274ee:	7bf070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->next = mDNSNULL;                    // Clear 'next' pointer
    e88274f2:	0004b023          	sd	zero,0(s1)
        rr->nsec = mDNSNULL;
    e88274f6:	0604bc23          	sd	zero,120(s1)
        rr->soa  = mDNSNULL;
    e88274fa:	0804b023          	sd	zero,128(s1)
        if (sourceAddress)
    e88274fe:	000b0c63          	beqz	s6,e8827516 <CreateNewCacheEntry+0x25c>
            rr->sourceAddress = *sourceAddress;
    e8827502:	000b3703          	ld	a4,0(s6)
    e8827506:	e4d8                	sd	a4,136(s1)
    e8827508:	008b3703          	ld	a4,8(s6)
    e882750c:	e8d8                	sd	a4,144(s1)
    e882750e:	010b2703          	lw	a4,16(s6)
    e8827512:	08e4ac23          	sw	a4,152(s1)
        if (!rr->resrec.InterfaceID)
    e8827516:	709c                	ld	a5,32(s1)
    e8827518:	ef9d                	bnez	a5,e8827556 <CreateNewCacheEntry+0x29c>
            m->rrcache_totalused_unicast += rr->resrec.rdlength;
    e882751a:	0144d703          	lhu	a4,20(s1)
    e882751e:	2f842783          	lw	a5,760(s0)
    e8827522:	9fb9                	addw	a5,a5,a4
    e8827524:	2ef42c23          	sw	a5,760(s0)
            if (DNSSECRecordType(rr->resrec.rrtype))
    e8827528:	00a4d783          	lhu	a5,10(s1)
    e882752c:	471d                	li	a4,7
    e882752e:	fd57879b          	addiw	a5,a5,-43
    e8827532:	3c07b78b          	extu	a5,a5,15,0
    e8827536:	02f76063          	bltu	a4,a5,e8827556 <CreateNewCacheEntry+0x29c>
    e882753a:	0b900713          	li	a4,185
    e882753e:	00f757b3          	srl	a5,a4,a5
    e8827542:	0007b78b          	extu	a5,a5,0,0
    e8827546:	cb81                	beqz	a5,e8827556 <CreateNewCacheEntry+0x29c>
                BumpDNSSECStats(m, kStatsActionIncrement, kStatsTypeMemoryUsage, rr->resrec.rdlength);
    e8827548:	0144d683          	lhu	a3,20(s1)
    e882754c:	4601                	li	a2,0
    e882754e:	4581                	li	a1,0
    e8827550:	8522                	mv	a0,s0
    e8827552:	59e080ef          	jal	ra,e882faf0 <BumpDNSSECStats>
        if (Add)
    e8827556:	200a8963          	beqz	s5,e8827768 <CreateNewCacheEntry+0x4ae>
            *(cg->rrcache_tail) = rr;               // Append this record to tail of cache slot list
    e882755a:	01893783          	ld	a5,24(s2)
            if (q->CurrentAnswers > 4000)
    e882755e:	6a05                	lui	s4,0x1
        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8827560:	00848c13          	addi	s8,s1,8
            *(cg->rrcache_tail) = rr;               // Append this record to tail of cache slot list
    e8827564:	e384                	sd	s1,0(a5)
            if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers++;
    e8827566:	40000c93          	li	s9,1024
            cg->rrcache_tail = &(rr->next);         // Advance tail pointer
    e882756a:	00993c23          	sd	s1,24(s2)
    for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e882756e:	2b843903          	ld	s2,696(s0)
            if (q->CurrentAnswers > 4000)
    e8827572:	fa0a0a13          	addi	s4,s4,-96 # fa0 <memcmp-0xe87ff060>
                if (msgcount++ < 10)
    e8827576:	000bcb17          	auipc	s6,0xbc
    e882757a:	57eb0b13          	addi	s6,s6,1406 # e88e3af4 <msgcount.10559>
    e882757e:	4ba5                	li	s7,9
                rr->UnansweredQueries = MaxUnansweredQueries;
    e8827580:	4d11                	li	s10,4
                    q->ThisQInterval > InitialQuestionInterval * QuestionIntervalStep3 && m->timenow - q->LastQTxTime < mDNSPlatformOneSecond)
    e8827582:	000ada97          	auipc	s5,0xad
    e8827586:	4fea8a93          	addi	s5,s5,1278 # e88d4a80 <mDNSPlatformOneSecond>
    for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e882758a:	00090663          	beqz	s2,e8827596 <CreateNewCacheEntry+0x2dc>
    e882758e:	2c043783          	ld	a5,704(s0)
    e8827592:	06f91963          	bne	s2,a5,e8827604 <CreateNewCacheEntry+0x34a>
    if (!rr->DelayDelivery)
    e8827596:	48fc                	lw	a5,84(s1)
    e8827598:	e3b9                	bnez	a5,e88275de <CreateNewCacheEntry+0x324>
        if (m->CurrentQuestion)
    e882759a:	2c843903          	ld	s2,712(s0)
    e882759e:	02090063          	beqz	s2,e88275be <CreateNewCacheEntry+0x304>
            LogMsg("CacheRecordAdd ERROR m->CurrentQuestion already set: %##s (%s)", m->CurrentQuestion->qname.c, DNSTypeName(m->CurrentQuestion->qtype));
    e88275a2:	31495503          	lhu	a0,788(s2)
    e88275a6:	ebaee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88275aa:	86aa                	mv	a3,a0
    e88275ac:	21490613          	addi	a2,s2,532
    e88275b0:	0007e597          	auipc	a1,0x7e
    e88275b4:	e5858593          	addi	a1,a1,-424 # e88a5408 <end.8789+0x1d60>
    e88275b8:	4501                	li	a0,0
    e88275ba:	6f3070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->CurrentQuestion = m->Questions;
    e88275be:	2b843783          	ld	a5,696(s0)
            if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e88275c2:	00848993          	addi	s3,s1,8
        m->CurrentQuestion = m->Questions;
    e88275c6:	2cf43423          	sd	a5,712(s0)
        while (m->CurrentQuestion && m->CurrentQuestion != m->NewQuestions)
    e88275ca:	2c843903          	ld	s2,712(s0)
    e88275ce:	00090663          	beqz	s2,e88275da <CreateNewCacheEntry+0x320>
    e88275d2:	2c043783          	ld	a5,704(s0)
    e88275d6:	16f91663          	bne	s2,a5,e8827742 <CreateNewCacheEntry+0x488>
        m->CurrentQuestion = mDNSNULL;
    e88275da:	2c043423          	sd	zero,712(s0)
    SetNextCacheCheckTimeForRecord(m, rr);
    e88275de:	85a6                	mv	a1,s1
    e88275e0:	8522                	mv	a0,s0
    e88275e2:	d78f70ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
}
    e88275e6:	60e6                	ld	ra,88(sp)
    e88275e8:	6446                	ld	s0,80(sp)
    e88275ea:	8526                	mv	a0,s1
    e88275ec:	6906                	ld	s2,64(sp)
    e88275ee:	64a6                	ld	s1,72(sp)
    e88275f0:	79e2                	ld	s3,56(sp)
    e88275f2:	7a42                	ld	s4,48(sp)
    e88275f4:	7aa2                	ld	s5,40(sp)
    e88275f6:	7b02                	ld	s6,32(sp)
    e88275f8:	6be2                	ld	s7,24(sp)
    e88275fa:	6c42                	ld	s8,16(sp)
    e88275fc:	6ca2                	ld	s9,8(sp)
    e88275fe:	6d02                	ld	s10,0(sp)
    e8827600:	6125                	addi	sp,sp,96
    e8827602:	8082                	ret
        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8827604:	85ca                	mv	a1,s2
    e8827606:	8562                	mv	a0,s8
    e8827608:	999ee0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e882760c:	12050863          	beqz	a0,e882773c <CreateNewCacheEntry+0x482>
            if (q->LastAnswerPktNum != m->PktNum)
    e8827610:	27c42783          	lw	a5,636(s0)
    e8827614:	01c92703          	lw	a4,28(s2)
    e8827618:	0af70a63          	beq	a4,a5,e88276cc <CreateNewCacheEntry+0x412>
                q->LastAnswerPktNum = m->PktNum;
    e882761c:	00f92e23          	sw	a5,28(s2)
                if (mDNSOpaque16IsZero(q->TargetQID) && ActiveQuestion(q) && ++q->RecentAnswerPkts >= 10 &&
    e8827620:	21295783          	lhu	a5,530(s2)
    e8827624:	e7c5                	bnez	a5,e88276cc <CreateNewCacheEntry+0x412>
    e8827626:	01492683          	lw	a3,20(s2)
    e882762a:	0ad05163          	blez	a3,e88276cc <CreateNewCacheEntry+0x412>
    e882762e:	05093783          	ld	a5,80(s2)
    e8827632:	efc9                	bnez	a5,e88276cc <CreateNewCacheEntry+0x412>
    e8827634:	02092783          	lw	a5,32(s2)
    e8827638:	0017871b          	addiw	a4,a5,1
    e882763c:	02e92023          	sw	a4,32(s2)
    e8827640:	08ebf663          	bgeu	s7,a4,e88276cc <CreateNewCacheEntry+0x412>
                    q->ThisQInterval > InitialQuestionInterval * QuestionIntervalStep3 && m->timenow - q->LastQTxTime < mDNSPlatformOneSecond)
    e8827644:	000aa703          	lw	a4,0(s5)
    e8827648:	460d                	li	a2,3
    e882764a:	0027079b          	addiw	a5,a4,2
    e882764e:	02c7c7bb          	divw	a5,a5,a2
                if (mDNSOpaque16IsZero(q->TargetQID) && ActiveQuestion(q) && ++q->RecentAnswerPkts >= 10 &&
    e8827652:	466d                	li	a2,27
    e8827654:	02c787bb          	mulw	a5,a5,a2
    e8827658:	06d7da63          	bge	a5,a3,e88276cc <CreateNewCacheEntry+0x412>
                    q->ThisQInterval > InitialQuestionInterval * QuestionIntervalStep3 && m->timenow - q->LastQTxTime < mDNSPlatformOneSecond)
    e882765c:	24042783          	lw	a5,576(s0)
    e8827660:	13892683          	lw	a3,312(s2)
    e8827664:	9f95                	subw	a5,a5,a3
    e8827666:	06e7d363          	bge	a5,a4,e88276cc <CreateNewCacheEntry+0x412>
                    LogMsg("CacheRecordAdd: %##s (%s) got immediate answer burst (%d); restarting exponential backoff sequence (%d)",
    e882766a:	31495503          	lhu	a0,788(s2)
    e882766e:	df2ee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8827672:	86aa                	mv	a3,a0
    e8827674:	02092703          	lw	a4,32(s2)
    e8827678:	01492783          	lw	a5,20(s2)
    e882767c:	0007e597          	auipc	a1,0x7e
    e8827680:	cd458593          	addi	a1,a1,-812 # e88a5350 <end.8789+0x1ca8>
    e8827684:	21490613          	addi	a2,s2,532
    e8827688:	4501                	li	a0,0
    e882768a:	623070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    q->LastQTime      = m->timenow - InitialQuestionInterval + (mDNSs32)mDNSRandom((mDNSu32)mDNSPlatformOneSecond*4);
    e882768e:	000aa503          	lw	a0,0(s5)
    e8827692:	57f5                	li	a5,-3
    e8827694:	0025099b          	addiw	s3,a0,2
    e8827698:	02f9c9bb          	divw	s3,s3,a5
    e882769c:	24042783          	lw	a5,576(s0)
    e88276a0:	0025151b          	slliw	a0,a0,0x2
    e88276a4:	00f989bb          	addw	s3,s3,a5
    e88276a8:	861eb0ef          	jal	ra,e8812f08 <mDNSRandom>
    e88276ac:	0135053b          	addw	a0,a0,s3
                    q->ThisQInterval  = InitialQuestionInterval;
    e88276b0:	000aa783          	lw	a5,0(s5)
    e88276b4:	470d                	li	a4,3
                    q->LastQTime      = m->timenow - InitialQuestionInterval + (mDNSs32)mDNSRandom((mDNSu32)mDNSPlatformOneSecond*4);
    e88276b6:	00a92823          	sw	a0,16(s2)
                    q->ThisQInterval  = InitialQuestionInterval;
    e88276ba:	2789                	addiw	a5,a5,2
    e88276bc:	02e7c7bb          	divw	a5,a5,a4
                    SetNextQueryTime(m,q);
    e88276c0:	85ca                	mv	a1,s2
    e88276c2:	8522                	mv	a0,s0
                    q->ThisQInterval  = InitialQuestionInterval;
    e88276c4:	00f92a23          	sw	a5,20(s2)
                    SetNextQueryTime(m,q);
    e88276c8:	ba5f60ef          	jal	ra,e881e26c <SetNextQueryTime>
            q->CurrentAnswers++;
    e88276cc:	02492783          	lw	a5,36(s2)
            q->unansweredQueries = 0;
    e88276d0:	18090223          	sb	zero,388(s2)
            q->CurrentAnswers++;
    e88276d4:	0017871b          	addiw	a4,a5,1
    e88276d8:	02e92223          	sw	a4,36(s2)
            if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers++;
    e88276dc:	0144d783          	lhu	a5,20(s1)
    e88276e0:	00fcf763          	bgeu	s9,a5,e88276ee <CreateNewCacheEntry+0x434>
    e88276e4:	02c92783          	lw	a5,44(s2)
    e88276e8:	2785                	addiw	a5,a5,1
    e88276ea:	02f92623          	sw	a5,44(s2)
            if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers++;
    e88276ee:	0084c783          	lbu	a5,8(s1)
    e88276f2:	8bc1                	andi	a5,a5,16
    e88276f4:	c791                	beqz	a5,e8827700 <CreateNewCacheEntry+0x446>
    e88276f6:	03092783          	lw	a5,48(s2)
    e88276fa:	2785                	addiw	a5,a5,1
    e88276fc:	02f92823          	sw	a5,48(s2)
            if (q->CurrentAnswers > 4000)
    e8827700:	02ea7e63          	bgeu	s4,a4,e882773c <CreateNewCacheEntry+0x482>
                if (msgcount++ < 10)
    e8827704:	000b2783          	lw	a5,0(s6)
    e8827708:	0017871b          	addiw	a4,a5,1
    e882770c:	00eb2023          	sw	a4,0(s6)
    e8827710:	02fbc263          	blt	s7,a5,e8827734 <CreateNewCacheEntry+0x47a>
                    LogMsg("CacheRecordAdd: %##s (%s) has %d answers; shedding records to resist DOS attack",
    e8827714:	31495503          	lhu	a0,788(s2)
    e8827718:	d48ee0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882771c:	86aa                	mv	a3,a0
    e882771e:	02492703          	lw	a4,36(s2)
    e8827722:	21490613          	addi	a2,s2,532
    e8827726:	0007e597          	auipc	a1,0x7e
    e882772a:	c9258593          	addi	a1,a1,-878 # e88a53b8 <end.8789+0x1d10>
    e882772e:	4501                	li	a0,0
    e8827730:	57d070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                rr->resrec.rroriginalttl = 0;
    e8827734:	0004a823          	sw	zero,16(s1)
                rr->UnansweredQueries = MaxUnansweredQueries;
    e8827738:	07a48623          	sb	s10,108(s1)
    for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e882773c:	00093903          	ld	s2,0(s2)
    e8827740:	b5a9                	j	e882758a <CreateNewCacheEntry+0x2d0>
            if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8827742:	85ca                	mv	a1,s2
    e8827744:	854e                	mv	a0,s3
    e8827746:	85bee0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e882774a:	c511                	beqz	a0,e8827756 <CreateNewCacheEntry+0x49c>
                AnswerCurrentQuestionWithResourceRecord(m, rr, QC_add);
    e882774c:	4605                	li	a2,1
    e882774e:	85a6                	mv	a1,s1
    e8827750:	8522                	mv	a0,s0
    e8827752:	a6eff0ef          	jal	ra,e88269c0 <AnswerCurrentQuestionWithResourceRecord>
            if (m->CurrentQuestion == q)    // If m->CurrentQuestion was not auto-advanced, do it ourselves now
    e8827756:	2c843783          	ld	a5,712(s0)
    e882775a:	e6f918e3          	bne	s2,a5,e88275ca <CreateNewCacheEntry+0x310>
                m->CurrentQuestion = q->next;
    e882775e:	00093783          	ld	a5,0(s2)
    e8827762:	2cf43423          	sd	a5,712(s0)
    e8827766:	b595                	j	e88275ca <CreateNewCacheEntry+0x310>
            domainname *name = mDNSPlatformMemAllocate(DomainNameLength(cg->name));
    e8827768:	02093503          	ld	a0,32(s2)
    e882776c:	10050593          	addi	a1,a0,256
    e8827770:	9ddeb0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8827774:	2501                	sext.w	a0,a0
    e8827776:	2ed080ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e882777a:	89aa                	mv	s3,a0
            if (name)
    e882777c:	c905                	beqz	a0,e88277ac <CreateNewCacheEntry+0x4f2>
                AssignDomainName(name, cg->name);
    e882777e:	02093503          	ld	a0,32(s2)
    e8827782:	10050593          	addi	a1,a0,256
    e8827786:	9c7eb0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882778a:	0005061b          	sext.w	a2,a0
    e882778e:	10000793          	li	a5,256
    e8827792:	00c7ea63          	bltu	a5,a2,e88277a6 <CreateNewCacheEntry+0x4ec>
    e8827796:	02093583          	ld	a1,32(s2)
    e882779a:	854e                	mv	a0,s3
    e882779c:	304080ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                rr->resrec.name   = name;
    e88277a0:	0334b423          	sd	s3,40(s1)
    e88277a4:	b589                	j	e88275e6 <CreateNewCacheEntry+0x32c>
                AssignDomainName(name, cg->name);
    e88277a6:	00098023          	sb	zero,0(s3)
    e88277aa:	bfdd                	j	e88277a0 <CreateNewCacheEntry+0x4e6>
                ReleaseCacheRecord(m, rr);
    e88277ac:	85a6                	mv	a1,s1
    e88277ae:	8522                	mv	a0,s0
    e88277b0:	b17f80ef          	jal	ra,e88202c6 <ReleaseCacheRecord>
    e88277b4:	b661                	j	e882733c <CreateNewCacheEntry+0x82>

00000000e88277b6 <mDNSParseNSEC3Records.part.56>:
mDNSlocal void mDNSParseNSEC3Records(mDNS *const m, const DNSMessage *const response, const mDNSu8 *end,
    e88277b6:	7159                	addi	sp,sp,-112
    e88277b8:	fc56                	sd	s5,56(sp)
    e88277ba:	8aae                	mv	s5,a1
    e88277bc:	e4ce                	sd	s3,72(sp)
    ptr = LocateAuthorities(response, end);
    e88277be:	85b2                	mv	a1,a2
mDNSlocal void mDNSParseNSEC3Records(mDNS *const m, const DNSMessage *const response, const mDNSu8 *end,
    e88277c0:	89aa                	mv	s3,a0
    ptr = LocateAuthorities(response, end);
    e88277c2:	8556                	mv	a0,s5
mDNSlocal void mDNSParseNSEC3Records(mDNS *const m, const DNSMessage *const response, const mDNSu8 *end,
    e88277c4:	e0d2                	sd	s4,64(sp)
    e88277c6:	f45e                	sd	s7,40(sp)
    e88277c8:	f062                	sd	s8,32(sp)
    e88277ca:	f486                	sd	ra,104(sp)
    e88277cc:	f0a2                	sd	s0,96(sp)
    e88277ce:	eca6                	sd	s1,88(sp)
    e88277d0:	e8ca                	sd	s2,80(sp)
    e88277d2:	f85a                	sd	s6,48(sp)
    e88277d4:	ec66                	sd	s9,24(sp)
    e88277d6:	e86a                	sd	s10,16(sp)
    e88277d8:	e46e                	sd	s11,8(sp)
    e88277da:	8a32                	mv	s4,a2
    e88277dc:	8c36                	mv	s8,a3
    e88277de:	8bba                	mv	s7,a4
    ptr = LocateAuthorities(response, end);
    e88277e0:	926ee0ef          	jal	ra,e8815906 <LocateAuthorities>
    if (!ptr)
    e88277e4:	c539                	beqz	a0,e8827832 <mDNSParseNSEC3Records.part.56+0x7c>
        ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e88277e6:	65a5                	lui	a1,0x9
    e88277e8:	4d858b13          	addi	s6,a1,1240 # 94d8 <memcmp-0xe87f6b28>
            m->rec.r.resrec.RecordType = 0;
    e88277ec:	00b984b3          	add	s1,s3,a1
        cg = CacheGroupForRecord(m, &m->rec.r.resrec);
    e88277f0:	4e058593          	addi	a1,a1,1248
    e88277f4:	842a                	mv	s0,a0
    e88277f6:	4d81                	li	s11,0
        ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e88277f8:	9b4e                	add	s6,s6,s3
        if (!ptr || m->rec.r.resrec.RecordType == kDNSRecordTypePacketNegative || m->rec.r.resrec.rrtype != kDNSType_NSEC3)
    e88277fa:	0f000c93          	li	s9,240
    e88277fe:	03200d13          	li	s10,50
        cg = CacheGroupForRecord(m, &m->rec.r.resrec);
    e8827802:	00b98933          	add	s2,s3,a1
    for (i = 0; i < response->h.numAuthorities && ptr && ptr < end; i++)
    e8827806:	008ad783          	lhu	a5,8(s5)
    e882780a:	00fdd563          	bge	s11,a5,e8827814 <mDNSParseNSEC3Records.part.56+0x5e>
    e882780e:	c019                	beqz	s0,e8827814 <mDNSParseNSEC3Records.part.56+0x5e>
    e8827810:	05446c63          	bltu	s0,s4,e8827868 <mDNSParseNSEC3Records.part.56+0xb2>
}
    e8827814:	70a6                	ld	ra,104(sp)
    e8827816:	7406                	ld	s0,96(sp)
    e8827818:	64e6                	ld	s1,88(sp)
    e882781a:	6946                	ld	s2,80(sp)
    e882781c:	69a6                	ld	s3,72(sp)
    e882781e:	6a06                	ld	s4,64(sp)
    e8827820:	7ae2                	ld	s5,56(sp)
    e8827822:	7b42                	ld	s6,48(sp)
    e8827824:	7ba2                	ld	s7,40(sp)
    e8827826:	7c02                	ld	s8,32(sp)
    e8827828:	6ce2                	ld	s9,24(sp)
    e882782a:	6d42                	ld	s10,16(sp)
    e882782c:	6da2                	ld	s11,8(sp)
    e882782e:	6165                	addi	sp,sp,112
    e8827830:	8082                	ret
        LogInfo("mDNSParseNSEC3Records: ERROR can't locate authorities");
    e8827832:	000ad797          	auipc	a5,0xad
    e8827836:	24278793          	addi	a5,a5,578 # e88d4a74 <mDNS_LoggingEnabled>
    e882783a:	439c                	lw	a5,0(a5)
    e882783c:	dfe1                	beqz	a5,e8827814 <mDNSParseNSEC3Records.part.56+0x5e>
}
    e882783e:	7406                	ld	s0,96(sp)
    e8827840:	70a6                	ld	ra,104(sp)
    e8827842:	64e6                	ld	s1,88(sp)
    e8827844:	6946                	ld	s2,80(sp)
    e8827846:	69a6                	ld	s3,72(sp)
    e8827848:	6a06                	ld	s4,64(sp)
    e882784a:	7ae2                	ld	s5,56(sp)
    e882784c:	7b42                	ld	s6,48(sp)
    e882784e:	7ba2                	ld	s7,40(sp)
    e8827850:	7c02                	ld	s8,32(sp)
    e8827852:	6ce2                	ld	s9,24(sp)
    e8827854:	6d42                	ld	s10,16(sp)
    e8827856:	6da2                	ld	s11,8(sp)
        LogInfo("mDNSParseNSEC3Records: ERROR can't locate authorities");
    e8827858:	00082597          	auipc	a1,0x82
    e882785c:	c7058593          	addi	a1,a1,-912 # e88a94c8 <hexValues.12413+0x1518>
    e8827860:	450d                	li	a0,3
}
    e8827862:	6165                	addi	sp,sp,112
        LogInfo("mDNSParseNSEC3Records: ERROR can't locate authorities");
    e8827864:	4490706f          	j	e882f4ac <LogMsgWithLevel>
        ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e8827868:	8622                	mv	a2,s0
    e882786a:	885a                	mv	a6,s6
    e882786c:	0a000793          	li	a5,160
    e8827870:	8762                	mv	a4,s8
    e8827872:	86d2                	mv	a3,s4
    e8827874:	85d6                	mv	a1,s5
    e8827876:	854e                	mv	a0,s3
    e8827878:	dbaef0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
    e882787c:	842a                	mv	s0,a0
        if (!ptr || m->rec.r.resrec.RecordType == kDNSRecordTypePacketNegative || m->rec.r.resrec.rrtype != kDNSType_NSEC3)
    e882787e:	c909                	beqz	a0,e8827890 <mDNSParseNSEC3Records.part.56+0xda>
    e8827880:	4e04c783          	lbu	a5,1248(s1)
    e8827884:	01978663          	beq	a5,s9,e8827890 <mDNSParseNSEC3Records.part.56+0xda>
    e8827888:	4e24d783          	lhu	a5,1250(s1)
    e882788c:	01a78663          	beq	a5,s10,e8827898 <mDNSParseNSEC3Records.part.56+0xe2>
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8827890:	4e048023          	sb	zero,1248(s1)
    for (i = 0; i < response->h.numAuthorities && ptr && ptr < end; i++)
    e8827894:	2d85                	addiw	s11,s11,1
    e8827896:	bf85                	j	e8827806 <mDNSParseNSEC3Records.part.56+0x50>
        cg = CacheGroupForRecord(m, &m->rec.r.resrec);
    e8827898:	85ca                	mv	a1,s2
    e882789a:	854e                	mv	a0,s3
    e882789c:	f95f60ef          	jal	ra,e881e830 <CacheGroupForRecord>
        rr = CreateNewCacheEntry(m, HashSlotFromNameHash(m->rec.r.resrec.namehash), cg, 0, mDNSfalse, mDNSNULL);
    e88278a0:	862a                	mv	a2,a0
    e88278a2:	4f04a803          	lw	a6,1264(s1)
    e88278a6:	1f300593          	li	a1,499
    e88278aa:	4781                	li	a5,0
    e88278ac:	02b875bb          	remuw	a1,a6,a1
    e88278b0:	4701                	li	a4,0
    e88278b2:	4681                	li	a3,0
    e88278b4:	854e                	mv	a0,s3
    e88278b6:	a05ff0ef          	jal	ra,e88272ba <CreateNewCacheEntry>
        if (rr)
    e88278ba:	d979                	beqz	a0,e8827890 <mDNSParseNSEC3Records.part.56+0xda>
            *NSEC3Records = rr;
    e88278bc:	00abb023          	sd	a0,0(s7)
            NSEC3Records = &rr->next;
    e88278c0:	8baa                	mv	s7,a0
    e88278c2:	b7f9                	j	e8827890 <mDNSParseNSEC3Records.part.56+0xda>

00000000e88278c4 <ProcessQuery>:
{
    e88278c4:	b7010113          	addi	sp,sp,-1168
    e88278c8:	48813023          	sd	s0,1152(sp)
    e88278cc:	46913c23          	sd	s1,1144(sp)
    e88278d0:	47213823          	sd	s2,1136(sp)
    e88278d4:	47313423          	sd	s3,1128(sp)
    e88278d8:	45613823          	sd	s6,1104(sp)
    e88278dc:	48113423          	sd	ra,1160(sp)
    e88278e0:	47413023          	sd	s4,1120(sp)
    e88278e4:	45513c23          	sd	s5,1112(sp)
    e88278e8:	45713423          	sd	s7,1096(sp)
    e88278ec:	45813023          	sd	s8,1088(sp)
    e88278f0:	43913c23          	sd	s9,1080(sp)
    e88278f4:	43a13823          	sd	s10,1072(sp)
    e88278f8:	43b13423          	sd	s11,1064(sp)
    e88278fc:	e03e                	sd	a5,0(sp)
    e88278fe:	fc42                	sd	a6,56(sp)
    e8827900:	f8c6                	sd	a7,112(sp)
    mDNSBool FromLocalSubnet    = srcaddr && mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
    e8827902:	e882                	sd	zero,80(sp)
{
    e8827904:	842a                	mv	s0,a0
    e8827906:	89ae                	mv	s3,a1
    e8827908:	8b32                	mv	s6,a2
    e882790a:	84b6                	mv	s1,a3
    e882790c:	893a                	mv	s2,a4
    mDNSBool FromLocalSubnet    = srcaddr && mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
    e882790e:	ca89                	beqz	a3,e8827920 <ProcessQuery+0x5c>
    e8827910:	8636                	mv	a2,a3
    e8827912:	85ba                	mv	a1,a4
    e8827914:	8ecf70ef          	jal	ra,e881ea00 <mDNS_AddressIsLocalSubnet>
    e8827918:	2501                	sext.w	a0,a0
    e882791a:	00a037b3          	snez	a5,a0
    e882791e:	e8be                	sd	a5,80(sp)
    AuthRecord  **nrp                = &ResponseRecords;
    e8827920:	111c                	addi	a5,sp,160
    ptr = LocateOptRR(query, end, DNSOpt_OwnerData_ID_Space);
    e8827922:	4631                	li	a2,12
    e8827924:	85da                	mv	a1,s6
    e8827926:	854e                	mv	a0,s3
    AuthRecord   *ResponseRecords    = mDNSNULL;
    e8827928:	f102                	sd	zero,160(sp)
    AuthRecord  **nrp                = &ResponseRecords;
    e882792a:	f53e                	sd	a5,168(sp)
    CacheRecord  *ExpectedAnswers    = mDNSNULL;            // Records in our cache we expect to see updated
    e882792c:	f902                	sd	zero,176(sp)
    DNSQuestion  *DupQuestions       = mDNSNULL;            // Our questions that are identical to questions in this packet
    e882792e:	fd02                	sd	zero,184(sp)
    CacheRecord *McastNSEC3Records   = mDNSNULL;
    e8827930:	e182                	sd	zero,192(sp)
    ptr = LocateOptRR(query, end, DNSOpt_OwnerData_ID_Space);
    e8827932:	84aee0ef          	jal	ra,e881597c <LocateOptRR>
    e8827936:	862a                	mv	a2,a0
    if (ptr)
    e8827938:	c11d                	beqz	a0,e882795e <ProcessQuery+0x9a>
        ptr = GetLargeResourceRecord(m, query, ptr, end, InterfaceID, kDNSRecordTypePacketAdd, &m->rec);
    e882793a:	6a25                	lui	s4,0x9
    e882793c:	4d8a0813          	addi	a6,s4,1240 # 94d8 <memcmp-0xe87f6b28>
    e8827940:	9822                	add	a6,a6,s0
    e8827942:	08000793          	li	a5,128
    e8827946:	874a                	mv	a4,s2
    e8827948:	86da                	mv	a3,s6
    e882794a:	85ce                	mv	a1,s3
    e882794c:	8522                	mv	a0,s0
    e882794e:	ce4ef0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
        if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && m->rec.r.resrec.rrtype == kDNSType_OPT)
    e8827952:	12051663          	bnez	a0,e8827a7e <ProcessQuery+0x1ba>
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8827956:	67a5                	lui	a5,0x9
    e8827958:	97a2                	add	a5,a5,s0
    e882795a:	4e078023          	sb	zero,1248(a5) # 94e0 <memcmp-0xe87f6b20>
    if (!response->h.numAuthorities)
    e882795e:	0089d783          	lhu	a5,8(s3)
    e8827962:	cb81                	beqz	a5,e8827972 <ProcessQuery+0xae>
    e8827964:	0198                	addi	a4,sp,192
    e8827966:	86ca                	mv	a3,s2
    e8827968:	865a                	mv	a2,s6
    e882796a:	85ce                	mv	a1,s3
    e882796c:	8522                	mv	a0,s0
    e882796e:	e49ff0ef          	jal	ra,e88277b6 <mDNSParseNSEC3Records.part.56>
    DNSQuestion **dqp                = &DupQuestions;
    e8827972:	193c                	addi	a5,sp,184
    e8827974:	ec3e                	sd	a5,24(sp)
    CacheRecord **eap                = &ExpectedAnswers;
    e8827976:	191c                	addi	a5,sp,176
        ptr = GetLargeResourceRecord(m, query, ptr, end, q->InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e8827978:	6725                	lui	a4,0x9
    CacheRecord **eap                = &ExpectedAnswers;
    e882797a:	e83e                	sd	a5,16(sp)
        ptr = GetLargeResourceRecord(m, query, ptr, end, q->InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e882797c:	4d870793          	addi	a5,a4,1240 # 94d8 <memcmp-0xe87f6b28>
    e8827980:	97a2                	add	a5,a5,s0
    e8827982:	e4be                	sd	a5,72(sp)
        if (m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && ResourceRecordAnswersQuestion(&m->rec.r.resrec, q))
    e8827984:	4e070793          	addi	a5,a4,1248
    e8827988:	97a2                	add	a5,a5,s0
    ptr = query->data;
    e882798a:	00c98a93          	addi	s5,s3,12
    for (i=0; i<query->h.numQuestions; i++)                     // For each question...
    e882798e:	f002                	sd	zero,32(sp)
    mDNSs32 delayresponse      = 0;
    e8827990:	4a01                	li	s4,0
        if (m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && ResourceRecordAnswersQuestion(&m->rec.r.resrec, q))
    e8827992:	f4be                	sd	a5,104(sp)
    for (i=0; i<query->h.numQuestions; i++)                     // For each question...
    e8827994:	0049d783          	lhu	a5,4(s3)
    e8827998:	7702                	ld	a4,32(sp)
    e882799a:	14f74663          	blt	a4,a5,e8827ae6 <ProcessQuery+0x222>
    for (rr = m->ResourceRecords; rr; rr=rr->next)              // Now build our list of potential answers
    e882799e:	678d                	lui	a5,0x3
    e88279a0:	97a2                	add	a5,a5,s0
    e88279a2:	1b87bb83          	ld	s7,440(a5) # 31b8 <memcmp-0xe87fce48>
    e88279a6:	600b9c63          	bnez	s7,e8827fbe <ProcessQuery+0x6fa>
    AddAdditionalsToResponseList(m, ResponseRecords, &nrp, InterfaceID);
    e88279aa:	758a                	ld	a1,160(sp)
    e88279ac:	86ca                	mv	a3,s2
    e88279ae:	1130                	addi	a2,sp,168
    e88279b0:	8522                	mv	a0,s0
    e88279b2:	a24f60ef          	jal	ra,e881dbd6 <AddAdditionalsToResponseList>
    for (i=0; i<query->h.numAnswers; i++)                       // For each record in the query's answer section...
    e88279b6:	e402                	sd	zero,8(sp)
        ptr = GetLargeResourceRecord(m, query, ptr, end, InterfaceID, kDNSRecordTypePacketAns, &m->rec);
    e88279b8:	67a5                	lui	a5,0x9
    e88279ba:	4d878c13          	addi	s8,a5,1240 # 94d8 <memcmp-0xe87f6b28>
        if (m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative)
    e88279be:	00f40bb3          	add	s7,s0,a5
                if (cr->resrec.InterfaceID == InterfaceID && IdenticalResourceRecord(&m->rec.r.resrec, &cr->resrec))
    e88279c2:	57fd                	li	a5,-1
    e88279c4:	1782                	slli	a5,a5,0x20
    e88279c6:	83c1                	srli	a5,a5,0x10
        ptr = GetLargeResourceRecord(m, query, ptr, end, InterfaceID, kDNSRecordTypePacketAns, &m->rec);
    e88279c8:	9c22                	add	s8,s8,s0
                if (cr->resrec.InterfaceID == InterfaceID && IdenticalResourceRecord(&m->rec.r.resrec, &cr->resrec))
    e88279ca:	e83e                	sd	a5,16(sp)
    for (i=0; i<query->h.numAnswers; i++)                       // For each record in the query's answer section...
    e88279cc:	0069d783          	lhu	a5,6(s3)
    e88279d0:	6722                	ld	a4,8(sp)
    e88279d2:	60f74163          	blt	a4,a5,e8827fd4 <ProcessQuery+0x710>
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e88279d6:	778a                	ld	a5,160(sp)
    e88279d8:	873e                	mv	a4,a5
    e88279da:	060714e3          	bnez	a4,e8828242 <ProcessQuery+0x97e>
                m->mDNSStats.UnicastResponses++;
    e88279de:	6715                	lui	a4,0x5
    mDNSBool SendLegacyResponse = mDNSfalse;
    e88279e0:	4a81                	li	s5,0
        else if (rr->NR_AdditionalTo && rr->NR_AdditionalTo->NR_AnswerTo == NR_AnswerMulticast)
    e88279e2:	55fd                	li	a1,-1
            if ((mDNSu32)(m->timenow - rr->LastMCTime) >= (mDNSu32)TicksTTL(rr)/4)
    e88279e4:	000ad317          	auipc	t1,0xad
    e88279e8:	09c30313          	addi	t1,t1,156 # e88d4a80 <mDNSPlatformOneSecond>
            else if (rr->resrec.RecordType == kDNSRecordTypeShared) delayresponse = mDNSPlatformOneSecond;      // Divided by 50 = 20ms
    e88279ec:	4e21                	li	t3,8
            if      (query->h.flags.b[0] & kDNSFlag0_TC) delayresponse = mDNSPlatformOneSecond * 20;            // Divided by 50 = 400ms
    e88279ee:	4ed1                	li	t4,20
                    if (srcaddr->type == mDNSAddrType_IPv4)
    e88279f0:	4f11                	li	t5,4
                    else if (srcaddr->type == mDNSAddrType_IPv6)
    e88279f2:	4f99                	li	t6,6
                        else if (!mDNSSameIPv6Address(rr->v6Requester, srcaddr->ip.v6)) rr->v6Requester = onesIPv6Addr;
    e88279f4:	0007c517          	auipc	a0,0x7c
    e88279f8:	92450513          	addi	a0,a0,-1756 # e88a3318 <onesIPv6Addr>
                        else if (!mDNSSameIPv4Address(rr->v4Requester, srcaddr->ip.v4)) rr->v4Requester = onesIPv4Addr;
    e88279fc:	0007c297          	auipc	t0,0x7c
    e8827a00:	91428293          	addi	t0,t0,-1772 # e88a3310 <onesIPv4Addr>
                    if (SendUnicastResponse) rr->ImmedUnicast = mDNStrue;
    e8827a04:	4385                	li	t2,1
                    rr->ImmedAnswer = mDNSInterfaceMark;
    e8827a06:	0007bb97          	auipc	s7,0x7b
    e8827a0a:	352b8b93          	addi	s7,s7,850 # e88a2d58 <mDNSInterfaceMark>
            else if (rr->NR_AnswerTo == NR_AnswerUnicast)
    e8827a0e:	5879                	li	a6,-2
                m->mDNSStats.UnicastResponses++;
    e8827a10:	9722                	add	a4,a4,s0
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e8827a12:	040798e3          	bnez	a5,e8828262 <ProcessQuery+0x99e>
    if (delayresponse && (!m->SuppressSending || (m->SuppressSending - m->timenow) < (delayresponse + 49) / 50))
    e8827a16:	040a0763          	beqz	s4,e8827a64 <ProcessQuery+0x1a0>
    e8827a1a:	25042783          	lw	a5,592(s0)
    e8827a1e:	24042b83          	lw	s7,576(s0)
    e8827a22:	031a0a1b          	addiw	s4,s4,49
    e8827a26:	cb89                	beqz	a5,e8827a38 <ProcessQuery+0x174>
    e8827a28:	03200713          	li	a4,50
    e8827a2c:	02ea473b          	divw	a4,s4,a4
    e8827a30:	417787bb          	subw	a5,a5,s7
    e8827a34:	02e7d863          	bge	a5,a4,e8827a64 <ProcessQuery+0x1a0>
        m->SuppressSending = m->timenow + (delayresponse + (mDNSs32)mDNSRandom((mDNSu32)mDNSPlatformOneSecond*5) + 49) / 50;
    e8827a38:	000ad797          	auipc	a5,0xad
    e8827a3c:	04878793          	addi	a5,a5,72 # e88d4a80 <mDNSPlatformOneSecond>
    e8827a40:	439c                	lw	a5,0(a5)
    e8827a42:	4515                	li	a0,5
    e8827a44:	02f5053b          	mulw	a0,a0,a5
    e8827a48:	cc0eb0ef          	jal	ra,e8812f08 <mDNSRandom>
    e8827a4c:	01450a3b          	addw	s4,a0,s4
    e8827a50:	03200513          	li	a0,50
    e8827a54:	02aa4a3b          	divw	s4,s4,a0
    e8827a58:	017a07bb          	addw	a5,s4,s7
        if (m->SuppressSending == 0) m->SuppressSending = 1;
    e8827a5c:	140783e3          	beqz	a5,e88283a2 <ProcessQuery+0xade>
        m->SuppressSending = m->timenow + (delayresponse + (mDNSs32)mDNSRandom((mDNSu32)mDNSPlatformOneSecond*5) + 49) / 50;
    e8827a60:	24f42823          	sw	a5,592(s0)
    if (SendLegacyResponse)
    e8827a64:	580a8463          	beqz	s5,e8827fec <ProcessQuery+0x728>
        responseptr = GenerateUnicastResponse(query, end, InterfaceID, LegacyQuery, response, ResponseRecords);
    e8827a68:	778a                	ld	a5,160(sp)
    e8827a6a:	49013703          	ld	a4,1168(sp)
    e8827a6e:	6682                	ld	a3,0(sp)
    e8827a70:	864a                	mv	a2,s2
    e8827a72:	85da                	mv	a1,s6
    e8827a74:	854e                	mv	a0,s3
    e8827a76:	969f40ef          	jal	ra,e881c3de <GenerateUnicastResponse>
    e8827a7a:	8aaa                	mv	s5,a0
    e8827a7c:	ab8d                	j	e8827fee <ProcessQuery+0x72a>
        if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && m->rec.r.resrec.rrtype == kDNSType_OPT)
    e8827a7e:	014407b3          	add	a5,s0,s4
    e8827a82:	4e07c683          	lbu	a3,1248(a5)
    e8827a86:	0f000713          	li	a4,240
    e8827a8a:	ece686e3          	beq	a3,a4,e8827956 <ProcessQuery+0x92>
    e8827a8e:	4e27d683          	lhu	a3,1250(a5)
    e8827a92:	02900713          	li	a4,41
    e8827a96:	ece690e3          	bne	a3,a4,e8827956 <ProcessQuery+0x92>
            const rdataOPT *const e = (const rdataOPT *)&m->rec.r.resrec.rdata->u.data[m->rec.r.resrec.rdlength];
    e8827a9a:	4ec7da83          	lhu	s5,1260(a5)
    e8827a9e:	5087ba03          	ld	s4,1288(a5)
                    ClearProxyRecords(m, &opt->u.owner, m->DuplicateRecords);
    e8827aa2:	6b8d                	lui	s7,0x3
            const rdataOPT *const e = (const rdataOPT *)&m->rec.r.resrec.rdata->u.data[m->rec.r.resrec.rdlength];
    e8827aa4:	0a91                	addi	s5,s5,4
    e8827aa6:	9ad2                	add	s5,s5,s4
                if (opt->opt == kDNSOpt_Owner && opt->u.owner.vers == 0 && opt->u.owner.HMAC.l[0])
    e8827aa8:	4c91                	li	s9,4
            for (opt = &m->rec.r.resrec.rdata->u.opt[0]; opt < e; opt++)
    e8827aaa:	0a11                	addi	s4,s4,4
                    ClearProxyRecords(m, &opt->u.owner, m->DuplicateRecords);
    e8827aac:	9ba2                	add	s7,s7,s0
            for (opt = &m->rec.r.resrec.rdata->u.opt[0]; opt < e; opt++)
    e8827aae:	eb5a74e3          	bgeu	s4,s5,e8827956 <ProcessQuery+0x92>
                if (opt->opt == kDNSOpt_Owner && opt->u.owner.vers == 0 && opt->u.owner.HMAC.l[0])
    e8827ab2:	000a5783          	lhu	a5,0(s4)
    e8827ab6:	03979663          	bne	a5,s9,e8827ae2 <ProcessQuery+0x21e>
    e8827aba:	004a4783          	lbu	a5,4(s4)
    e8827abe:	e395                	bnez	a5,e8827ae2 <ProcessQuery+0x21e>
    e8827ac0:	006a2783          	lw	a5,6(s4)
    e8827ac4:	cf99                	beqz	a5,e8827ae2 <ProcessQuery+0x21e>
                    ClearProxyRecords(m, &opt->u.owner, m->DuplicateRecords);
    e8827ac6:	1c0bb603          	ld	a2,448(s7) # 31c0 <memcmp-0xe87fce40>
    e8827aca:	004a0c13          	addi	s8,s4,4
    e8827ace:	85e2                	mv	a1,s8
    e8827ad0:	8522                	mv	a0,s0
    e8827ad2:	d5efb0ef          	jal	ra,e8823030 <ClearProxyRecords>
                    ClearProxyRecords(m, &opt->u.owner, m->ResourceRecords);
    e8827ad6:	1b8bb603          	ld	a2,440(s7)
    e8827ada:	85e2                	mv	a1,s8
    e8827adc:	8522                	mv	a0,s0
    e8827ade:	d52fb0ef          	jal	ra,e8823030 <ClearProxyRecords>
            for (opt = &m->rec.r.resrec.rdata->u.opt[0]; opt < e; opt++)
    e8827ae2:	0a61                	addi	s4,s4,24
    e8827ae4:	b7e9                	j	e8827aae <ProcessQuery+0x1ea>
        ptr = getQuestion(query, ptr, end, InterfaceID, &pktq); // get the question...
    e8827ae6:	85d6                	mv	a1,s5
    e8827ae8:	01b8                	addi	a4,sp,200
    e8827aea:	86ca                	mv	a3,s2
    e8827aec:	865a                	mv	a2,s6
    e8827aee:	854e                	mv	a0,s3
    e8827af0:	d4ded0ef          	jal	ra,e881583c <getQuestion>
    e8827af4:	8aaa                	mv	s5,a0
        if (!ptr) goto exit;
    e8827af6:	4e050c63          	beqz	a0,e8827fee <ProcessQuery+0x72a>
        if (McastNSEC3Records)
    e8827afa:	678e                	ld	a5,192(sp)
        pktq.AnonInfo = mDNSNULL;
    e8827afc:	f602                	sd	zero,296(sp)
        if (McastNSEC3Records)
    e8827afe:	c791                	beqz	a5,e8827b0a <ProcessQuery+0x246>
            InitializeAnonInfoForQuestion(m, &McastNSEC3Records, &pktq);
    e8827b00:	01b0                	addi	a2,sp,200
    e8827b02:	018c                	addi	a1,sp,192
    e8827b04:	8522                	mv	a0,s0
    e8827b06:	ee8f20ef          	jal	ra,e881a1ee <InitializeAnonInfoForQuestion>
        QuestionNeedsMulticastResponse = QueryWasMulticast && !LegacyQuery && !(pktq.qclass & kDNSQClass_UnicastResponse);
    e8827b0a:	3de15783          	lhu	a5,990(sp)
    e8827b0e:	76e2                	ld	a3,56(sp)
    e8827b10:	3c07a70b          	ext	a4,a5,15,0
    e8827b14:	c681                	beqz	a3,e8827b1c <ProcessQuery+0x258>
    e8827b16:	6682                	ld	a3,0(sp)
    e8827b18:	4d85                	li	s11,1
    e8827b1a:	c291                	beqz	a3,e8827b1e <ProcessQuery+0x25a>
    e8827b1c:	4d81                	li	s11,0
        if (pktq.qclass & kDNSQClass_UnicastResponse)
    e8827b1e:	0e075263          	bgez	a4,e8827c02 <ProcessQuery+0x33e>
            m->mDNSStats.UnicastBitInQueries++;
    e8827b22:	6715                	lui	a4,0x5
    e8827b24:	9722                	add	a4,a4,s0
    e8827b26:	eac72683          	lw	a3,-340(a4) # 4eac <memcmp-0xe87fb154>
        QuestionNeedsMulticastResponse = QueryWasMulticast && !LegacyQuery && !(pktq.qclass & kDNSQClass_UnicastResponse);
    e8827b2a:	4d81                	li	s11,0
            m->mDNSStats.UnicastBitInQueries++;
    e8827b2c:	2685                	addiw	a3,a3,1
    e8827b2e:	ead72623          	sw	a3,-340(a4)
        pktq.qclass &= ~kDNSQClass_UnicastResponse;
    e8827b32:	3807b78b          	extu	a5,a5,14,0
    e8827b36:	3cf11f23          	sh	a5,990(sp)
        if (m->CurrentRecord)
    e8827b3a:	678d                	lui	a5,0x3
    e8827b3c:	97a2                	add	a5,a5,s0
    e8827b3e:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e8827b42:	c105                	beqz	a0,e8827b62 <ProcessQuery+0x29e>
            LogMsg("ProcessQuery ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e8827b44:	790c                	ld	a1,48(a0)
    e8827b46:	03b40613          	addi	a2,s0,59
    e8827b4a:	0521                	addi	a0,a0,8
    e8827b4c:	0591                	addi	a1,a1,4
    e8827b4e:	ec7ee0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8827b52:	862a                	mv	a2,a0
    e8827b54:	0007e597          	auipc	a1,0x7e
    e8827b58:	4a458593          	addi	a1,a1,1188 # e88a5ff8 <end.8789+0x2950>
    e8827b5c:	4501                	li	a0,0
    e8827b5e:	14f070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->CurrentRecord = m->ResourceRecords;
    e8827b62:	678d                	lui	a5,0x3
    e8827b64:	97a2                	add	a5,a5,s0
    e8827b66:	1b87b703          	ld	a4,440(a5) # 31b8 <memcmp-0xe87fce48>
    e8827b6a:	6682                	ld	a3,0(sp)
        AuthRecord *NSECAnswer = mDNSNULL;
    e8827b6c:	4c81                	li	s9,0
        m->CurrentRecord = m->ResourceRecords;
    e8827b6e:	1ce7b823          	sd	a4,464(a5)
        while (m->CurrentRecord)
    e8827b72:	5779                	li	a4,-2
    e8827b74:	42da970b          	mvnez	a4,s5,a3
    e8827b78:	fcba                	sd	a4,120(sp)
        int NumAnswersForThisQuestion = 0;
    e8827b7a:	e402                	sd	zero,8(sp)
        while (m->CurrentRecord)
    e8827b7c:	e0be                	sd	a5,64(sp)
    e8827b7e:	6786                	ld	a5,64(sp)
    e8827b80:	1d07bd03          	ld	s10,464(a5)
    e8827b84:	080d1763          	bnez	s10,e8827c12 <ProcessQuery+0x34e>
        if (NumAnswersForThisQuestion == 0 && NSECAnswer)
    e8827b88:	67a2                	ld	a5,8(sp)
    e8827b8a:	eb89                	bnez	a5,e8827b9c <ProcessQuery+0x2d8>
    e8827b8c:	360c9a63          	bnez	s9,e8827f00 <ProcessQuery+0x63c>
        if (NumAnswersForThisQuestion == 0) delayresponse = mDNSPlatformOneSecond;  // Divided by 50 = 20ms
    e8827b90:	000ad797          	auipc	a5,0xad
    e8827b94:	ef078793          	addi	a5,a5,-272 # e88d4a80 <mDNSPlatformOneSecond>
    e8827b98:	0007aa03          	lw	s4,0(a5)
        if (query->h.flags.b[0] & kDNSFlag0_TC)
    e8827b9c:	0029c783          	lbu	a5,2(s3)
    e8827ba0:	8b89                	andi	a5,a5,2
    e8827ba2:	160786e3          	beqz	a5,e882850e <ProcessQuery+0xc4a>
            m->mDNSStats.KnownAnswerMultiplePkts++;
    e8827ba6:	6795                	lui	a5,0x5
    e8827ba8:	97a2                	add	a5,a5,s0
    e8827baa:	ea47a703          	lw	a4,-348(a5) # 4ea4 <memcmp-0xe87fb15c>
    e8827bae:	2705                	addiw	a4,a4,1
    e8827bb0:	eae7a223          	sw	a4,-348(a5)
        if (QuestionNeedsMulticastResponse && !(query->h.flags.b[0] & kDNSFlag0_TC))
    e8827bb4:	020d8f63          	beqz	s11,e8827bf2 <ProcessQuery+0x32e>
    e8827bb8:	0029c783          	lbu	a5,2(s3)
    e8827bbc:	8b89                	andi	a5,a5,2
    e8827bbe:	eb95                	bnez	a5,e8827bf2 <ProcessQuery+0x32e>
            CacheGroup *cg = CacheGroupForName(m, pktq.qnamehash, &pktq.qname);
    e8827bc0:	45ce                	lw	a1,208(sp)
    e8827bc2:	0df0                	addi	a2,sp,732
    e8827bc4:	8522                	mv	a0,s0
    e8827bc6:	a83f60ef          	jal	ra,e881e648 <CacheGroupForName>
            for (cr = cg ? cg->members : mDNSNULL; cr; cr=cr->next)
    e8827bca:	c519                	beqz	a0,e8827bd8 <ProcessQuery+0x314>
    e8827bcc:	01053b83          	ld	s7,16(a0)
                if (SameNameRecordAnswersQuestion(&cr->resrec, &pktq) && cr->resrec.rdlength <= SmallRecordLimit)
    e8827bd0:	40000c13          	li	s8,1024
            for (cr = cg ? cg->members : mDNSNULL; cr; cr=cr->next)
    e8827bd4:	320b9d63          	bnez	s7,e8827f0e <ProcessQuery+0x64a>
            if (!pktq.AnonInfo)
    e8827bd8:	77b2                	ld	a5,296(sp)
    e8827bda:	ef81                	bnez	a5,e8827bf2 <ProcessQuery+0x32e>
                for (q = m->Questions; q; q=q->next)
    e8827bdc:	2b843b83          	ld	s7,696(s0)
                                if (q->qtype == pktq.qtype &&
    e8827be0:	5c7d                	li	s8,-1
                    if (!q->Target.type && ActiveQuestion(q) && m->timenow - q->LastQTxTime > mDNSPlatformOneSecond / 4)
    e8827be2:	000add97          	auipc	s11,0xad
    e8827be6:	e9ed8d93          	addi	s11,s11,-354 # e88d4a80 <mDNSPlatformOneSecond>
    e8827bea:	4691                	li	a3,4
                                if (q->qtype == pktq.qtype &&
    e8827bec:	1c02                	slli	s8,s8,0x20
                for (q = m->Questions; q; q=q->next)
    e8827bee:	340b9863          	bnez	s7,e8827f3e <ProcessQuery+0x67a>
        if (pktq.AnonInfo)
    e8827bf2:	7532                	ld	a0,296(sp)
    e8827bf4:	c119                	beqz	a0,e8827bfa <ProcessQuery+0x336>
            FreeAnonInfo(pktq.AnonInfo);
    e8827bf6:	b94f20ef          	jal	ra,e8819f8a <FreeAnonInfo>
    for (i=0; i<query->h.numQuestions; i++)                     // For each question...
    e8827bfa:	7782                	ld	a5,32(sp)
    e8827bfc:	2785                	addiw	a5,a5,1
    e8827bfe:	f03e                	sd	a5,32(sp)
    e8827c00:	bb51                	j	e8827994 <ProcessQuery+0xd0>
            m->mDNSStats.NormalQueries++;
    e8827c02:	6715                	lui	a4,0x5
    e8827c04:	9722                	add	a4,a4,s0
    e8827c06:	eb072683          	lw	a3,-336(a4) # 4eb0 <memcmp-0xe87fb150>
    e8827c0a:	2685                	addiw	a3,a3,1
    e8827c0c:	ead72823          	sw	a3,-336(a4)
    e8827c10:	b70d                	j	e8827b32 <ProcessQuery+0x26e>
            m->CurrentRecord = rr->next;
    e8827c12:	8bea                	mv	s7,s10
    e8827c14:	788bc78b          	ldia	a5,(s7),8,0
    e8827c18:	6706                	ld	a4,64(sp)
            if (AnyTypeRecordAnswersQuestion(&rr->resrec, &pktq) && (QueryWasMulticast || QueryWasLocalUnicast || rr->AllowRemoteQuery))
    e8827c1a:	01ac                	addi	a1,sp,200
    e8827c1c:	855e                	mv	a0,s7
            m->CurrentRecord = rr->next;
    e8827c1e:	1cf73823          	sd	a5,464(a4)
            if (AnyTypeRecordAnswersQuestion(&rr->resrec, &pktq) && (QueryWasMulticast || QueryWasLocalUnicast || rr->AllowRemoteQuery))
    e8827c22:	f60ec0ef          	jal	ra,e8814382 <AnyTypeRecordAnswersQuestion>
    e8827c26:	dd21                	beqz	a0,e8827b7e <ProcessQuery+0x2ba>
    e8827c28:	77e2                	ld	a5,56(sp)
    e8827c2a:	7746                	ld	a4,112(sp)
    e8827c2c:	8fd9                	or	a5,a5,a4
    e8827c2e:	e781                	bnez	a5,e8827c36 <ProcessQuery+0x372>
    e8827c30:	079d4783          	lbu	a5,121(s10)
    e8827c34:	d7a9                	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
                m->mDNSStats.MatchingAnswersForQueries++;
    e8827c36:	6795                	lui	a5,0x5
    e8827c38:	97a2                	add	a5,a5,s0
    e8827c3a:	eb47a703          	lw	a4,-332(a5) # 4eb4 <memcmp-0xe87fb14c>
    e8827c3e:	2705                	addiw	a4,a4,1
    e8827c40:	eae7aa23          	sw	a4,-332(a5)
                if (RRTypeAnswersQuestionType(&rr->resrec, pktq.qtype))
    e8827c44:	00ad5703          	lhu	a4,10(s10)
    e8827c48:	4795                	li	a5,5
    e8827c4a:	04f71e63          	bne	a4,a5,e8827ca6 <ProcessQuery+0x3e2>
                    if (rr->resrec.RecordType == kDNSRecordTypeUnique)
    e8827c4e:	008d4783          	lbu	a5,8(s10)
    e8827c52:	4709                	li	a4,2
    e8827c54:	20e79163          	bne	a5,a4,e8827e56 <ProcessQuery+0x592>
    const mDNSu8 *ptr = LocateAuthorities(query, end);
    e8827c58:	85da                	mv	a1,s6
    e8827c5a:	854e                	mv	a0,s3
    e8827c5c:	cabed0ef          	jal	ra,e8815906 <LocateAuthorities>
    e8827c60:	f42a                	sd	a0,40(sp)
        if (m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && ResourceRecordAnswersQuestion(&m->rec.r.resrec, q))
    e8827c62:	67a5                	lui	a5,0x9
    e8827c64:	00f40c33          	add	s8,s0,a5
                    LogMsg("ResolveSimultaneousProbe: %p Pkt Record:        %08lX %s", q->InterfaceID, m->rec.r.resrec.rdatahash, CRDisplayString(m, &m->rec.r));
    e8827c68:	03b40793          	addi	a5,s0,59
    mDNSBool FoundUpdate = mDNSfalse;
    e8827c6c:	ec82                	sd	zero,88(sp)
    for (i = 0; i < query->h.numAuthorities; i++)
    e8827c6e:	f802                	sd	zero,48(sp)
                    LogMsg("ResolveSimultaneousProbe: %p Pkt Record:        %08lX %s", q->InterfaceID, m->rec.r.resrec.rdatahash, CRDisplayString(m, &m->rec.r));
    e8827c70:	f0be                	sd	a5,96(sp)
    for (i = 0; i < query->h.numAuthorities; i++)
    e8827c72:	0089d783          	lhu	a5,8(s3)
    e8827c76:	7742                	ld	a4,48(sp)
    e8827c78:	00f75f63          	bge	a4,a5,e8827c96 <ProcessQuery+0x3d2>
        ptr = GetLargeResourceRecord(m, query, ptr, end, q->InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e8827c7c:	6826                	ld	a6,72(sp)
    e8827c7e:	2b813703          	ld	a4,696(sp)
    e8827c82:	7622                	ld	a2,40(sp)
    e8827c84:	0a000793          	li	a5,160
    e8827c88:	86da                	mv	a3,s6
    e8827c8a:	85ce                	mv	a1,s3
    e8827c8c:	8522                	mv	a0,s0
    e8827c8e:	9a4ef0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
    e8827c92:	f42a                	sd	a0,40(sp)
        if (!ptr) break;
    e8827c94:	ed3d                	bnez	a0,e8827d12 <ProcessQuery+0x44e>
    if (!FoundUpdate)
    e8827c96:	67e6                	ld	a5,88(sp)
    e8827c98:	18078763          	beqz	a5,e8827e26 <ProcessQuery+0x562>
    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8827c9c:	67a5                	lui	a5,0x9
    e8827c9e:	97a2                	add	a5,a5,s0
    e8827ca0:	4e078023          	sb	zero,1248(a5) # 94e0 <memcmp-0xe87f6b20>
    e8827ca4:	bde9                	j	e8827b7e <ProcessQuery+0x2ba>
                if (RRTypeAnswersQuestionType(&rr->resrec, pktq.qtype))
    e8827ca6:	3dc15583          	lhu	a1,988(sp)
    e8827caa:	0005879b          	sext.w	a5,a1
    e8827cae:	faf700e3          	beq	a4,a5,e8827c4e <ProcessQuery+0x38a>
    e8827cb2:	0ff00713          	li	a4,255
    e8827cb6:	f8e78ce3          	beq	a5,a4,e8827c4e <ProcessQuery+0x38a>
    e8827cba:	855e                	mv	a0,s7
    e8827cbc:	ddaec0ef          	jal	ra,e8814296 <RRAssertsNonexistence>
    e8827cc0:	f559                	bnez	a0,e8827c4e <ProcessQuery+0x38a>
                else if ((rr->resrec.RecordType & kDNSRecordTypeActiveUniqueMask) && ResourceRecordIsValidAnswer(rr))
    e8827cc2:	008d4783          	lbu	a5,8(s10)
    e8827cc6:	0307f713          	andi	a4,a5,48
    e8827cca:	ea070ae3          	beqz	a4,e8827b7e <ProcessQuery+0x2ba>
    e8827cce:	03c7f793          	andi	a5,a5,60
    e8827cd2:	ea0786e3          	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
    e8827cd6:	048d3783          	ld	a5,72(s10)
    e8827cda:	c799                	beqz	a5,e8827ce8 <ProcessQuery+0x424>
    e8827cdc:	0087c783          	lbu	a5,8(a5)
    e8827ce0:	03c7f793          	andi	a5,a5,60
    e8827ce4:	e8078de3          	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
    e8827ce8:	050d3783          	ld	a5,80(s10)
    e8827cec:	c799                	beqz	a5,e8827cfa <ProcessQuery+0x436>
    e8827cee:	0087c783          	lbu	a5,8(a5)
    e8827cf2:	03c7f793          	andi	a5,a5,60
    e8827cf6:	e80784e3          	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
    e8827cfa:	058d3783          	ld	a5,88(s10)
    e8827cfe:	c799                	beqz	a5,e8827d0c <ProcessQuery+0x448>
    e8827d00:	0087c783          	lbu	a5,8(a5)
    e8827d04:	03c7f793          	andi	a5,a5,60
    e8827d08:	e6078be3          	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
                    if (!NSECAnswer) NSECAnswer = rr;
    e8827d0c:	419d1c8b          	mveqz	s9,s10,s9
    e8827d10:	b5bd                	j	e8827b7e <ProcessQuery+0x2ba>
        if (m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && ResourceRecordAnswersQuestion(&m->rec.r.resrec, q))
    e8827d12:	4e0c4703          	lbu	a4,1248(s8)
    e8827d16:	0f000793          	li	a5,240
    e8827d1a:	00f70f63          	beq	a4,a5,e8827d38 <ProcessQuery+0x474>
    e8827d1e:	7526                	ld	a0,104(sp)
    e8827d20:	01ac                	addi	a1,sp,200
    e8827d22:	a7eee0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e8827d26:	c909                	beqz	a0,e8827d38 <ProcessQuery+0x474>
            if (PacketRRConflict(m, our, &m->rec.r))
    e8827d28:	6626                	ld	a2,72(sp)
    e8827d2a:	85ea                	mv	a1,s10
    e8827d2c:	8522                	mv	a0,s0
    e8827d2e:	c48f50ef          	jal	ra,e881d176 <PacketRRConflict>
    e8827d32:	e909                	bnez	a0,e8827d44 <ProcessQuery+0x480>
            FoundUpdate = mDNStrue;
    e8827d34:	4785                	li	a5,1
    e8827d36:	ecbe                	sd	a5,88(sp)
    for (i = 0; i < query->h.numAuthorities; i++)
    e8827d38:	77c2                	ld	a5,48(sp)
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8827d3a:	4e0c0023          	sb	zero,1248(s8)
    for (i = 0; i < query->h.numAuthorities; i++)
    e8827d3e:	2785                	addiw	a5,a5,1
    e8827d40:	f83e                	sd	a5,48(sp)
    e8827d42:	bf05                	j	e8827c72 <ProcessQuery+0x3ae>
                int result          = (int)our->resrec.rrclass - (int)m->rec.r.resrec.rrclass;
    e8827d44:	00cd5303          	lhu	t1,12(s10)
    e8827d48:	4e4c5783          	lhu	a5,1252(s8)
    e8827d4c:	40f3033b          	subw	t1,t1,a5
                if (!result) result = (int)our->resrec.rrtype  - (int)m->rec.r.resrec.rrtype;
    e8827d50:	02031063          	bnez	t1,e8827d70 <ProcessQuery+0x4ac>
    e8827d54:	00ad5303          	lhu	t1,10(s10)
    e8827d58:	4e2c5783          	lhu	a5,1250(s8)
    e8827d5c:	40f3033b          	subw	t1,t1,a5
                if (!result) result = CompareRData(our, &m->rec.r);
    e8827d60:	00031863          	bnez	t1,e8827d70 <ProcessQuery+0x4ac>
    e8827d64:	65a6                	ld	a1,72(sp)
    e8827d66:	856a                	mv	a0,s10
    e8827d68:	839f40ef          	jal	ra,e881c5a0 <CompareRData>
    e8827d6c:	832a                	mv	t1,a0
                if (result)
    e8827d6e:	d179                	beqz	a0,e8827d34 <ProcessQuery+0x470>
                    const char *const msg = (result < 0) ? "lost:" : (result > 0) ? "won: " : "tie: ";
    e8827d70:	0007ee17          	auipc	t3,0x7e
    e8827d74:	278e0e13          	addi	t3,t3,632 # e88a5fe8 <end.8789+0x2940>
    e8827d78:	00034663          	bltz	t1,e8827d84 <ProcessQuery+0x4c0>
    e8827d7c:	0007ee17          	auipc	t3,0x7e
    e8827d80:	274e0e13          	addi	t3,t3,628 # e88a5ff0 <end.8789+0x2948>
                    LogMsg("ResolveSimultaneousProbe: %p Pkt Record:        %08lX %s", q->InterfaceID, m->rec.r.resrec.rdatahash, CRDisplayString(m, &m->rec.r));
    e8827d84:	508c3583          	ld	a1,1288(s8)
    e8827d88:	2b813783          	ld	a5,696(sp)
    e8827d8c:	4f4c2683          	lw	a3,1268(s8)
    e8827d90:	7606                	ld	a2,96(sp)
    e8827d92:	7526                	ld	a0,104(sp)
    e8827d94:	0591                	addi	a1,a1,4
    e8827d96:	e91a                	sd	t1,144(sp)
    e8827d98:	ed72                	sd	t3,152(sp)
    e8827d9a:	e13e                	sd	a5,128(sp)
    e8827d9c:	ecb6                	sd	a3,88(sp)
    e8827d9e:	c77ee0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8827da2:	872a                	mv	a4,a0
    e8827da4:	678a                	ld	a5,128(sp)
    e8827da6:	66e6                	ld	a3,88(sp)
    e8827da8:	0007e597          	auipc	a1,0x7e
    e8827dac:	28858593          	addi	a1,a1,648 # e88a6030 <end.8789+0x2988>
    e8827db0:	863e                	mv	a2,a5
    e8827db2:	4501                	li	a0,0
    e8827db4:	6f8070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    LogMsg("ResolveSimultaneousProbe: %p Our Record %d %s %08lX %s", our->resrec.InterfaceID, our->ProbeCount, msg, our->resrec.rdatahash, ARDisplayString(m, our));
    e8827db8:	030d3583          	ld	a1,48(s10)
    e8827dbc:	020d3e83          	ld	t4,32(s10)
    e8827dc0:	0b6d4683          	lbu	a3,182(s10)
    e8827dc4:	01cd2783          	lw	a5,28(s10)
    e8827dc8:	7606                	ld	a2,96(sp)
    e8827dca:	0591                	addi	a1,a1,4
    e8827dcc:	855e                	mv	a0,s7
    e8827dce:	e576                	sd	t4,136(sp)
    e8827dd0:	e136                	sd	a3,128(sp)
    e8827dd2:	ecbe                	sd	a5,88(sp)
    e8827dd4:	c41ee0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8827dd8:	882a                	mv	a6,a0
    e8827dda:	6e6a                	ld	t3,152(sp)
    e8827ddc:	6eaa                	ld	t4,136(sp)
    e8827dde:	67e6                	ld	a5,88(sp)
    e8827de0:	668a                	ld	a3,128(sp)
    e8827de2:	8772                	mv	a4,t3
    e8827de4:	8676                	mv	a2,t4
    e8827de6:	0007e597          	auipc	a1,0x7e
    e8827dea:	28a58593          	addi	a1,a1,650 # e88a6070 <end.8789+0x29c8>
    e8827dee:	4501                	li	a0,0
    e8827df0:	6bc070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (result < 0)
    e8827df4:	634a                	ld	t1,144(sp)
    e8827df6:	f2035fe3          	bgez	t1,e8827d34 <ProcessQuery+0x470>
                    m->SuppressProbes   = NonZeroTime(m->timenow + mDNSPlatformOneSecond);
    e8827dfa:	000ad717          	auipc	a4,0xad
    e8827dfe:	c8670713          	addi	a4,a4,-890 # e88d4a80 <mDNSPlatformOneSecond>
    e8827e02:	24042783          	lw	a5,576(s0)
    e8827e06:	4318                	lw	a4,0(a4)
    e8827e08:	9fb9                	addw	a5,a5,a4
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e8827e0a:	e391                	bnez	a5,e8827e0e <ProcessQuery+0x54a>
    e8827e0c:	4785                	li	a5,1
    e8827e0e:	6706                	ld	a4,64(sp)
                    InitializeLastAPTime(m, our);
    e8827e10:	85ea                	mv	a1,s10
    e8827e12:	8522                	mv	a0,s0
                    m->SuppressProbes   = NonZeroTime(m->timenow + mDNSPlatformOneSecond);
    e8827e14:	1ef72823          	sw	a5,496(a4)
                    our->ProbeCount     = DefaultProbeCountForTypeUnique;
    e8827e18:	40300793          	li	a5,1027
    e8827e1c:	0afd1b23          	sh	a5,182(s10)
                    InitializeLastAPTime(m, our);
    e8827e20:	92cf40ef          	jal	ra,e881bf4c <InitializeLastAPTime>
                    goto exit;
    e8827e24:	bda5                	j	e8827c9c <ProcessQuery+0x3d8>
        LogInfo("ResolveSimultaneousProbe: %##s (%s): No Update Record found", our->resrec.name->c, DNSTypeName(our->resrec.rrtype));
    e8827e26:	000ad797          	auipc	a5,0xad
    e8827e2a:	c4e78793          	addi	a5,a5,-946 # e88d4a74 <mDNS_LoggingEnabled>
    e8827e2e:	439c                	lw	a5,0(a5)
    e8827e30:	e60786e3          	beqz	a5,e8827c9c <ProcessQuery+0x3d8>
    e8827e34:	028d3603          	ld	a2,40(s10)
    e8827e38:	00ad5503          	lhu	a0,10(s10)
    e8827e3c:	f432                	sd	a2,40(sp)
    e8827e3e:	e23ed0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8827e42:	86aa                	mv	a3,a0
    e8827e44:	7622                	ld	a2,40(sp)
    e8827e46:	0007e597          	auipc	a1,0x7e
    e8827e4a:	26258593          	addi	a1,a1,610 # e88a60a8 <end.8789+0x2a00>
    e8827e4e:	450d                	li	a0,3
    e8827e50:	65c070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8827e54:	b5a1                	j	e8827c9c <ProcessQuery+0x3d8>
                    else if (ResourceRecordIsValidAnswer(rr))
    e8827e56:	03c7f793          	andi	a5,a5,60
    e8827e5a:	d20782e3          	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
    e8827e5e:	048d3783          	ld	a5,72(s10)
    e8827e62:	c799                	beqz	a5,e8827e70 <ProcessQuery+0x5ac>
    e8827e64:	0087c783          	lbu	a5,8(a5)
    e8827e68:	03c7f793          	andi	a5,a5,60
    e8827e6c:	d00789e3          	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
    e8827e70:	050d3783          	ld	a5,80(s10)
    e8827e74:	c799                	beqz	a5,e8827e82 <ProcessQuery+0x5be>
    e8827e76:	0087c783          	lbu	a5,8(a5)
    e8827e7a:	03c7f793          	andi	a5,a5,60
    e8827e7e:	d00780e3          	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
    e8827e82:	058d3783          	ld	a5,88(s10)
    e8827e86:	c799                	beqz	a5,e8827e94 <ProcessQuery+0x5d0>
    e8827e88:	0087c783          	lbu	a5,8(a5)
    e8827e8c:	03c7f793          	andi	a5,a5,60
    e8827e90:	ce0787e3          	beqz	a5,e8827b7e <ProcessQuery+0x2ba>
                        NumAnswersForThisQuestion++;
    e8827e94:	67a2                	ld	a5,8(sp)
    e8827e96:	2785                	addiw	a5,a5,1
    e8827e98:	e43e                	sd	a5,8(sp)
                        if (pktq.AnonInfo && rr->resrec.AnonInfo)
    e8827e9a:	77b2                	ld	a5,296(sp)
    e8827e9c:	cb89                	beqz	a5,e8827eae <ProcessQuery+0x5ea>
    e8827e9e:	040d3783          	ld	a5,64(s10)
    e8827ea2:	c791                	beqz	a5,e8827eae <ProcessQuery+0x5ea>
                            SetAnonData(&pktq, &rr->resrec, mDNStrue);
    e8827ea4:	4605                	li	a2,1
    e8827ea6:	85de                	mv	a1,s7
    e8827ea8:	01a8                	addi	a0,sp,200
    e8827eaa:	93cf20ef          	jal	ra,e8819fe6 <SetAnonData>
                        if (QuestionNeedsMulticastResponse || (!FromLocalSubnet && QueryWasMulticast && !LegacyQuery))
    e8827eae:	000d9863          	bnez	s11,e8827ebe <ProcessQuery+0x5fa>
    e8827eb2:	67c6                	ld	a5,80(sp)
    e8827eb4:	e3a1                	bnez	a5,e8827ef4 <ProcessQuery+0x630>
    e8827eb6:	77e2                	ld	a5,56(sp)
    e8827eb8:	cf95                	beqz	a5,e8827ef4 <ProcessQuery+0x630>
    e8827eba:	6782                	ld	a5,0(sp)
    e8827ebc:	ef85                	bnez	a5,e8827ef4 <ProcessQuery+0x630>
                            if ((mDNSu32)(m->timenow - rr->LastMCTime) >= (mDNSu32)mDNSPlatformOneSecond ||
    e8827ebe:	118d2703          	lw	a4,280(s10)
    e8827ec2:	24042783          	lw	a5,576(s0)
    e8827ec6:	9f99                	subw	a5,a5,a4
    e8827ec8:	000ad717          	auipc	a4,0xad
    e8827ecc:	bb870713          	addi	a4,a4,-1096 # e88d4a80 <mDNSPlatformOneSecond>
    e8827ed0:	4318                	lw	a4,0(a4)
    e8827ed2:	00e7fd63          	bgeu	a5,a4,e8827eec <ProcessQuery+0x628>
                                (rr->LastMCInterface != mDNSInterfaceMark && rr->LastMCInterface != InterfaceID))
    e8827ed6:	0007b717          	auipc	a4,0x7b
    e8827eda:	e8270713          	addi	a4,a4,-382 # e88a2d58 <mDNSInterfaceMark>
    e8827ede:	120d3783          	ld	a5,288(s10)
                            if ((mDNSu32)(m->timenow - rr->LastMCTime) >= (mDNSu32)mDNSPlatformOneSecond ||
    e8827ee2:	6318                	ld	a4,0(a4)
    e8827ee4:	c8e78de3          	beq	a5,a4,e8827b7e <ProcessQuery+0x2ba>
                                (rr->LastMCInterface != mDNSInterfaceMark && rr->LastMCInterface != InterfaceID))
    e8827ee8:	c9278be3          	beq	a5,s2,e8827b7e <ProcessQuery+0x2ba>
                                rr->NR_AnswerTo = NR_AnswerMulticast;
    e8827eec:	57fd                	li	a5,-1
                        else if (!rr->NR_AnswerTo) rr->NR_AnswerTo = LegacyQuery ? ptr : NR_AnswerUnicast;
    e8827eee:	10fd3023          	sd	a5,256(s10)
    e8827ef2:	b171                	j	e8827b7e <ProcessQuery+0x2ba>
    e8827ef4:	100d3783          	ld	a5,256(s10)
    e8827ef8:	c80793e3          	bnez	a5,e8827b7e <ProcessQuery+0x2ba>
    e8827efc:	77e6                	ld	a5,120(sp)
    e8827efe:	bfc5                	j	e8827eee <ProcessQuery+0x62a>
            NSECAnswer->SendNSECNow = InterfaceID;
    e8827f00:	0d2cb023          	sd	s2,192(s9)
            m->NextScheduledResponse = m->timenow;
    e8827f04:	24042783          	lw	a5,576(s0)
    e8827f08:	26f42023          	sw	a5,608(s0)
        if (NumAnswersForThisQuestion == 0) delayresponse = mDNSPlatformOneSecond;  // Divided by 50 = 20ms
    e8827f0c:	b941                	j	e8827b9c <ProcessQuery+0x2d8>
                if (SameNameRecordAnswersQuestion(&cr->resrec, &pktq) && cr->resrec.rdlength <= SmallRecordLimit)
    e8827f0e:	01ac                	addi	a1,sp,200
    e8827f10:	008b8513          	addi	a0,s7,8
    e8827f14:	f77ed0ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e8827f18:	c105                	beqz	a0,e8827f38 <ProcessQuery+0x674>
    e8827f1a:	014bd783          	lhu	a5,20(s7)
    e8827f1e:	00fc6d63          	bltu	s8,a5,e8827f38 <ProcessQuery+0x674>
                    if (!cr->NextInKAList && eap != &cr->NextInKAList)
    e8827f22:	048bb783          	ld	a5,72(s7)
    e8827f26:	eb89                	bnez	a5,e8827f38 <ProcessQuery+0x674>
    e8827f28:	6742                	ld	a4,16(sp)
    e8827f2a:	048b8793          	addi	a5,s7,72
    e8827f2e:	00e78563          	beq	a5,a4,e8827f38 <ProcessQuery+0x674>
                        *eap = cr;
    e8827f32:	01773023          	sd	s7,0(a4)
    e8827f36:	e83e                	sd	a5,16(sp)
            for (cr = cg ? cg->members : mDNSNULL; cr; cr=cr->next)
    e8827f38:	000bbb83          	ld	s7,0(s7)
    e8827f3c:	b961                	j	e8827bd4 <ProcessQuery+0x310>
                    if (!q->Target.type && ActiveQuestion(q) && m->timenow - q->LastQTxTime > mDNSPlatformOneSecond / 4)
    e8827f3e:	1fcba783          	lw	a5,508(s7)
    e8827f42:	ebbd                	bnez	a5,e8827fb8 <ProcessQuery+0x6f4>
    e8827f44:	014ba783          	lw	a5,20(s7)
    e8827f48:	06f05863          	blez	a5,e8827fb8 <ProcessQuery+0x6f4>
    e8827f4c:	050bb783          	ld	a5,80(s7)
    e8827f50:	e7a5                	bnez	a5,e8827fb8 <ProcessQuery+0x6f4>
    e8827f52:	000da783          	lw	a5,0(s11)
    e8827f56:	24042703          	lw	a4,576(s0)
    e8827f5a:	138ba603          	lw	a2,312(s7)
    e8827f5e:	02d7c7bb          	divw	a5,a5,a3
    e8827f62:	9f11                	subw	a4,a4,a2
    e8827f64:	04e7da63          	bge	a5,a4,e8827fb8 <ProcessQuery+0x6f4>
                        if (!q->InterfaceID || q->InterfaceID == InterfaceID)
    e8827f68:	1f0bb783          	ld	a5,496(s7)
    e8827f6c:	c399                	beqz	a5,e8827f72 <ProcessQuery+0x6ae>
    e8827f6e:	05279563          	bne	a5,s2,e8827fb8 <ProcessQuery+0x6f4>
                            if (q->NextInDQList == mDNSNULL && dqp != &q->NextInDQList)
    e8827f72:	058bb783          	ld	a5,88(s7)
    e8827f76:	e3a9                	bnez	a5,e8827fb8 <ProcessQuery+0x6f4>
    e8827f78:	67e2                	ld	a5,24(sp)
    e8827f7a:	058b8c93          	addi	s9,s7,88
    e8827f7e:	02fc8d63          	beq	s9,a5,e8827fb8 <ProcessQuery+0x6f4>
                                if (q->qtype == pktq.qtype &&
    e8827f82:	310bb703          	ld	a4,784(s7)
    e8827f86:	3d813783          	ld	a5,984(sp)
    e8827f8a:	01877733          	and	a4,a4,s8
    e8827f8e:	0187f7b3          	and	a5,a5,s8
    e8827f92:	02f71363          	bne	a4,a5,e8827fb8 <ProcessQuery+0x6f4>
                                    q->qclass == pktq.qclass &&
    e8827f96:	008ba703          	lw	a4,8(s7)
    e8827f9a:	47ce                	lw	a5,208(sp)
    e8827f9c:	00f71e63          	bne	a4,a5,e8827fb8 <ProcessQuery+0x6f4>
                                    q->qnamehash == pktq.qnamehash && SameDomainName(&q->qname, &pktq.qname))
    e8827fa0:	0dec                	addi	a1,sp,732
    e8827fa2:	214b8513          	addi	a0,s7,532
    e8827fa6:	e436                	sd	a3,8(sp)
    e8827fa8:	8a2eb0ef          	jal	ra,e881304a <SameDomainName>
    e8827fac:	66a2                	ld	a3,8(sp)
    e8827fae:	c509                	beqz	a0,e8827fb8 <ProcessQuery+0x6f4>
                                { *dqp = q; dqp = &q->NextInDQList; }
    e8827fb0:	67e2                	ld	a5,24(sp)
    e8827fb2:	ec66                	sd	s9,24(sp)
    e8827fb4:	0177b023          	sd	s7,0(a5)
                for (q = m->Questions; q; q=q->next)
    e8827fb8:	000bbb83          	ld	s7,0(s7)
    e8827fbc:	b90d                	j	e8827bee <ProcessQuery+0x32a>
        if (rr->NR_AnswerTo)                                    // If we marked the record...
    e8827fbe:	100bb783          	ld	a5,256(s7)
    e8827fc2:	c791                	beqz	a5,e8827fce <ProcessQuery+0x70a>
            AddRecordToResponseList(&nrp, rr, mDNSNULL);        // ... add it to the list
    e8827fc4:	4601                	li	a2,0
    e8827fc6:	85de                	mv	a1,s7
    e8827fc8:	1128                	addi	a0,sp,168
    e8827fca:	ccdf40ef          	jal	ra,e881cc96 <AddRecordToResponseList>
    for (rr = m->ResourceRecords; rr; rr=rr->next)              // Now build our list of potential answers
    e8827fce:	000bbb83          	ld	s7,0(s7)
    e8827fd2:	bad1                	j	e88279a6 <ProcessQuery+0xe2>
        ptr = GetLargeResourceRecord(m, query, ptr, end, InterfaceID, kDNSRecordTypePacketAns, &m->rec);
    e8827fd4:	8656                	mv	a2,s5
    e8827fd6:	8862                	mv	a6,s8
    e8827fd8:	0c000793          	li	a5,192
    e8827fdc:	874a                	mv	a4,s2
    e8827fde:	86da                	mv	a3,s6
    e8827fe0:	85ce                	mv	a1,s3
    e8827fe2:	8522                	mv	a0,s0
    e8827fe4:	e4fee0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
    e8827fe8:	8aaa                	mv	s5,a0
        if (!ptr) goto exit;
    e8827fea:	e159                	bnez	a0,e8828070 <ProcessQuery+0x7ac>
    mDNSu8       *responseptr        = mDNSNULL;
    e8827fec:	4a81                	li	s5,0
    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8827fee:	67a5                	lui	a5,0x9
    e8827ff0:	97a2                	add	a5,a5,s0
    e8827ff2:	4e078023          	sb	zero,1248(a5) # 94e0 <memcmp-0xe87f6b20>
    while (ResponseRecords)
    e8827ff6:	778a                	ld	a5,160(sp)
    e8827ff8:	4701                	li	a4,0
    e8827ffa:	3a079963          	bnez	a5,e88283ac <ProcessQuery+0xae8>
    e8827ffe:	c311                	beqz	a4,e8828002 <ProcessQuery+0x73e>
    e8828000:	f102                	sd	zero,160(sp)
            m->mDNSStats.PoofCacheDeletions++;
    e8828002:	6b15                	lui	s6,0x5
            if (cr->UnansweredQueries == 0 || m->timenow - cr->LastUnansweredTime >= mDNSPlatformOneSecond * 3/4)
    e8828004:	000adc97          	auipc	s9,0xad
    e8828008:	a7cc8c93          	addi	s9,s9,-1412 # e88d4a80 <mDNSPlatformOneSecond>
    e882800c:	4b8d                	li	s7,3
    e882800e:	4c11                	li	s8,4
            m->mDNSStats.PoofCacheDeletions++;
    e8828010:	9b22                	add	s6,s6,s0
        if (cr->UnansweredQueries >= MaxUnansweredQueries)
    e8828012:	4d8d                	li	s11,3
    while (ExpectedAnswers)
    e8828014:	7a4a                	ld	s4,176(sp)
    e8828016:	3a0a1563          	bnez	s4,e88283c0 <ProcessQuery+0xafc>
    e882801a:	77ea                	ld	a5,184(sp)
    e882801c:	4701                	li	a4,0
    for (i=0; i<DupSuppressInfoSize; i++) if (ds[i].InterfaceID == InterfaceID && ds[i].Type == Type) break;
    e882801e:	4521                	li	a0,8
        for (j=1; j<DupSuppressInfoSize && ds[i].InterfaceID; j++)
    e8828020:	4861                	li	a6,24
    while (DupQuestions)
    e8828022:	46079a63          	bnez	a5,e8828496 <ProcessQuery+0xbd2>
    e8828026:	c311                	beqz	a4,e882802a <ProcessQuery+0x766>
    e8828028:	fd02                	sd	zero,184(sp)
    if (McastNSEC3Records)
    e882802a:	658e                	ld	a1,192(sp)
    e882802c:	c581                	beqz	a1,e8828034 <ProcessQuery+0x770>
        FreeNSECRecords(m, McastNSEC3Records);
    e882802e:	8522                	mv	a0,s0
    e8828030:	d78f80ef          	jal	ra,e88205a8 <FreeNSECRecords>
}
    e8828034:	48813083          	ld	ra,1160(sp)
    e8828038:	48013403          	ld	s0,1152(sp)
    e882803c:	8556                	mv	a0,s5
    e882803e:	47813483          	ld	s1,1144(sp)
    e8828042:	47013903          	ld	s2,1136(sp)
    e8828046:	46813983          	ld	s3,1128(sp)
    e882804a:	46013a03          	ld	s4,1120(sp)
    e882804e:	45813a83          	ld	s5,1112(sp)
    e8828052:	45013b03          	ld	s6,1104(sp)
    e8828056:	44813b83          	ld	s7,1096(sp)
    e882805a:	44013c03          	ld	s8,1088(sp)
    e882805e:	43813c83          	ld	s9,1080(sp)
    e8828062:	43013d03          	ld	s10,1072(sp)
    e8828066:	42813d83          	ld	s11,1064(sp)
    e882806a:	49010113          	addi	sp,sp,1168
    e882806e:	8082                	ret
        if (m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative)
    e8828070:	4e0bc703          	lbu	a4,1248(s7)
    e8828074:	0f000793          	li	a5,240
    e8828078:	00f71863          	bne	a4,a5,e8828088 <ProcessQuery+0x7c4>
    for (i=0; i<query->h.numAnswers; i++)                       // For each record in the query's answer section...
    e882807c:	67a2                	ld	a5,8(sp)
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e882807e:	4e0b8023          	sb	zero,1248(s7)
    for (i=0; i<query->h.numAnswers; i++)                       // For each record in the query's answer section...
    e8828082:	2785                	addiw	a5,a5,1
    e8828084:	e43e                	sd	a5,8(sp)
    e8828086:	b299                	j	e88279cc <ProcessQuery+0x108>
            for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e8828088:	7c8a                	ld	s9,160(sp)
                    m->mDNSStats.KnownAnswerSuppressions++;
    e882808a:	6d95                	lui	s11,0x5
    e882808c:	9da2                	add	s11,s11,s0
            for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e882808e:	020c9c63          	bnez	s9,e88280c6 <ProcessQuery+0x802>
            for (rr=m->ResourceRecords; rr; rr=rr->next)
    e8828092:	678d                	lui	a5,0x3
    e8828094:	97a2                	add	a5,a5,s0
    e8828096:	1b87bc83          	ld	s9,440(a5) # 31b8 <memcmp-0xe87fce48>
                        m->mDNSStats.KnownAnswerSuppressions++;
    e882809a:	6d95                	lui	s11,0x5
    e882809c:	9da2                	add	s11,s11,s0
            for (rr=m->ResourceRecords; rr; rr=rr->next)
    e882809e:	040c9b63          	bnez	s9,e88280f4 <ProcessQuery+0x830>
            ourcacherr = FindIdenticalRecordInCache(m, &m->rec.r.resrec);
    e88280a2:	67a5                	lui	a5,0x9
    e88280a4:	4e078c93          	addi	s9,a5,1248 # 94e0 <memcmp-0xe87f6b20>
    e88280a8:	9ca2                	add	s9,s9,s0
    e88280aa:	85e6                	mv	a1,s9
    e88280ac:	8522                	mv	a0,s0
    e88280ae:	f8af60ef          	jal	ra,e881e838 <FindIdenticalRecordInCache>
    e88280b2:	8d2a                	mv	s10,a0
            eap = &ExpectedAnswers;
    e88280b4:	1918                	addi	a4,sp,176
            while (*eap)
    e88280b6:	00073d83          	ld	s11,0(a4)
    e88280ba:	0e0d9563          	bnez	s11,e88281a4 <ProcessQuery+0x8e0>
            if (!ourcacherr)
    e88280be:	fa0d1fe3          	bnez	s10,e882807c <ProcessQuery+0x7b8>
                dqp = &DupQuestions;
    e88280c2:	193c                	addi	a5,sp,184
    e88280c4:	aa95                	j	e8828238 <ProcessQuery+0x974>
                if (MustSendRecord(rr) && ShouldSuppressKnownAnswer(&m->rec.r, rr))
    e88280c6:	100cb783          	ld	a5,256(s9)
    e88280ca:	e781                	bnez	a5,e88280d2 <ProcessQuery+0x80e>
    e88280cc:	108cb783          	ld	a5,264(s9)
    e88280d0:	cf99                	beqz	a5,e88280ee <ProcessQuery+0x82a>
    e88280d2:	85e6                	mv	a1,s9
    e88280d4:	8562                	mv	a0,s8
    e88280d6:	df9f30ef          	jal	ra,e881bece <ShouldSuppressKnownAnswer>
    e88280da:	c911                	beqz	a0,e88280ee <ProcessQuery+0x82a>
                    m->mDNSStats.KnownAnswerSuppressions++;
    e88280dc:	ea0da783          	lw	a5,-352(s11) # 4ea0 <memcmp-0xe87fb160>
    e88280e0:	2785                	addiw	a5,a5,1
    e88280e2:	eafda023          	sw	a5,-352(s11)
                    rr->NR_AnswerTo = mDNSNULL;
    e88280e6:	100cb023          	sd	zero,256(s9)
                    rr->NR_AdditionalTo = mDNSNULL;
    e88280ea:	100cb423          	sd	zero,264(s9)
            for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e88280ee:	0f8cbc83          	ld	s9,248(s9)
    e88280f2:	bf71                	j	e882808e <ProcessQuery+0x7ca>
                if (rr->ImmedAnswer == InterfaceID && ShouldSuppressKnownAnswer(&m->rec.r, rr))
    e88280f4:	0c8cb783          	ld	a5,200(s9)
    e88280f8:	07279663          	bne	a5,s2,e8828164 <ProcessQuery+0x8a0>
    e88280fc:	85e6                	mv	a1,s9
    e88280fe:	8562                	mv	a0,s8
    e8828100:	dcff30ef          	jal	ra,e881bece <ShouldSuppressKnownAnswer>
    e8828104:	4691                	li	a3,4
    e8828106:	4619                	li	a2,6
    e8828108:	0007b717          	auipc	a4,0x7b
    e882810c:	4e070713          	addi	a4,a4,1248 # e88a35e8 <zerov6Addr>
    e8828110:	0007b817          	auipc	a6,0x7b
    e8828114:	4d080813          	addi	a6,a6,1232 # e88a35e0 <zerov4Addr>
    e8828118:	c531                	beqz	a0,e8828164 <ProcessQuery+0x8a0>
                    if (srcaddr->type == mDNSAddrType_IPv4)
    e882811a:	409c                	lw	a5,0(s1)
    e882811c:	04d79763          	bne	a5,a3,e882816a <ProcessQuery+0x8a6>
                        if (mDNSSameIPv4Address(rr->v4Requester, srcaddr->ip.v4)) rr->v4Requester = zerov4Addr;
    e8828120:	40cc                	lw	a1,4(s1)
    e8828122:	0e0ca783          	lw	a5,224(s9)
    e8828126:	00f59663          	bne	a1,a5,e8828132 <ProcessQuery+0x86e>
    e882812a:	00082783          	lw	a5,0(a6)
    e882812e:	0efca023          	sw	a5,224(s9)
                    if (mDNSIPv4AddressIsZero(rr->v4Requester) && mDNSIPv6AddressIsZero(rr->v6Requester))
    e8828132:	0e0ca783          	lw	a5,224(s9)
    e8828136:	e79d                	bnez	a5,e8828164 <ProcessQuery+0x8a0>
    e8828138:	0e8ca583          	lw	a1,232(s9)
    e882813c:	0e4ca783          	lw	a5,228(s9)
    e8828140:	8fcd                	or	a5,a5,a1
    e8828142:	0ecca583          	lw	a1,236(s9)
    e8828146:	8fcd                	or	a5,a5,a1
    e8828148:	0f0ca583          	lw	a1,240(s9)
    e882814c:	8fcd                	or	a5,a5,a1
    e882814e:	2781                	sext.w	a5,a5
    e8828150:	eb91                	bnez	a5,e8828164 <ProcessQuery+0x8a0>
                        m->mDNSStats.KnownAnswerSuppressions++;
    e8828152:	ea0da783          	lw	a5,-352(s11)
    e8828156:	2785                	addiw	a5,a5,1
    e8828158:	eafda023          	sw	a5,-352(s11)
                        rr->ImmedAnswer  = mDNSNULL;
    e882815c:	0c0cb423          	sd	zero,200(s9)
                        rr->ImmedUnicast = mDNSfalse;
    e8828160:	0a0c8da3          	sb	zero,187(s9)
            for (rr=m->ResourceRecords; rr; rr=rr->next)
    e8828164:	000cbc83          	ld	s9,0(s9)
    e8828168:	bf1d                	j	e882809e <ProcessQuery+0x7da>
                    else if (srcaddr->type == mDNSAddrType_IPv6)
    e882816a:	fcc794e3          	bne	a5,a2,e8828132 <ProcessQuery+0x86e>
                        if (mDNSSameIPv6Address(rr->v6Requester, srcaddr->ip.v6)) rr->v6Requester = zerov6Addr;
    e882816e:	0e4ca583          	lw	a1,228(s9)
    e8828172:	40dc                	lw	a5,4(s1)
    e8828174:	faf59fe3          	bne	a1,a5,e8828132 <ProcessQuery+0x86e>
    e8828178:	0e8ca583          	lw	a1,232(s9)
    e882817c:	449c                	lw	a5,8(s1)
    e882817e:	faf59ae3          	bne	a1,a5,e8828132 <ProcessQuery+0x86e>
    e8828182:	0ecca583          	lw	a1,236(s9)
    e8828186:	44dc                	lw	a5,12(s1)
    e8828188:	faf595e3          	bne	a1,a5,e8828132 <ProcessQuery+0x86e>
    e882818c:	0f0ca583          	lw	a1,240(s9)
    e8828190:	489c                	lw	a5,16(s1)
    e8828192:	faf590e3          	bne	a1,a5,e8828132 <ProcessQuery+0x86e>
    e8828196:	631c                	ld	a5,0(a4)
    e8828198:	0efcb223          	sd	a5,228(s9)
    e882819c:	671c                	ld	a5,8(a4)
    e882819e:	0efcb623          	sd	a5,236(s9)
    e88281a2:	bf41                	j	e8828132 <ProcessQuery+0x86e>
                if (cr->resrec.InterfaceID == InterfaceID && IdenticalResourceRecord(&m->rec.r.resrec, &cr->resrec))
    e88281a4:	020db683          	ld	a3,32(s11)
    e88281a8:	07269763          	bne	a3,s2,e8828216 <ProcessQuery+0x952>
    e88281ac:	67c2                	ld	a5,16(sp)
    e88281ae:	4e0bb603          	ld	a2,1248(s7)
    e88281b2:	008db683          	ld	a3,8(s11)
    e88281b6:	8e7d                	and	a2,a2,a5
    e88281b8:	8efd                	and	a3,a3,a5
    e88281ba:	04d61e63          	bne	a2,a3,e8828216 <ProcessQuery+0x952>
    e88281be:	4f0ba603          	lw	a2,1264(s7)
    e88281c2:	018da683          	lw	a3,24(s11)
    e88281c6:	04d61863          	bne	a2,a3,e8828216 <ProcessQuery+0x952>
    e88281ca:	4ecbd603          	lhu	a2,1260(s7)
    e88281ce:	014dd683          	lhu	a3,20(s11)
    e88281d2:	04d61263          	bne	a2,a3,e8828216 <ProcessQuery+0x952>
    e88281d6:	4f4ba603          	lw	a2,1268(s7)
    e88281da:	01cda683          	lw	a3,28(s11)
    e88281de:	02d61c63          	bne	a2,a3,e8828216 <ProcessQuery+0x952>
    e88281e2:	030db583          	ld	a1,48(s11)
    e88281e6:	fffeb617          	auipc	a2,0xfffeb
    e88281ea:	e6460613          	addi	a2,a2,-412 # e881304a <SameDomainName>
    e88281ee:	8566                	mv	a0,s9
    e88281f0:	0591                	addi	a1,a1,4
    e88281f2:	ec3a                	sd	a4,24(sp)
    e88281f4:	e17eb0ef          	jal	ra,e881400a <SameRDataBody>
    e88281f8:	cd19                	beqz	a0,e8828216 <ProcessQuery+0x952>
    e88281fa:	028db583          	ld	a1,40(s11)
    e88281fe:	500bb503          	ld	a0,1280(s7)
    e8828202:	e49ea0ef          	jal	ra,e881304a <SameDomainName>
    e8828206:	c901                	beqz	a0,e8828216 <ProcessQuery+0x952>
                { *eap = cr->NextInKAList; cr->NextInKAList = mDNSNULL; }
    e8828208:	048db683          	ld	a3,72(s11)
    e882820c:	6762                	ld	a4,24(sp)
    e882820e:	e314                	sd	a3,0(a4)
    e8828210:	040db423          	sd	zero,72(s11)
    e8828214:	b54d                	j	e88280b6 <ProcessQuery+0x7f2>
                else eap = &cr->NextInKAList;
    e8828216:	048d8713          	addi	a4,s11,72
    e882821a:	bd71                	j	e88280b6 <ProcessQuery+0x7f2>
                    if (ResourceRecordAnswersQuestion(&m->rec.r.resrec, q))
    e882821c:	85ee                	mv	a1,s11
    e882821e:	8566                	mv	a0,s9
    e8828220:	ec3e                	sd	a5,24(sp)
    e8828222:	d7fed0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
                    else dqp = &q->NextInDQList;
    e8828226:	058d8793          	addi	a5,s11,88
                    if (ResourceRecordAnswersQuestion(&m->rec.r.resrec, q))
    e882822a:	c519                	beqz	a0,e8828238 <ProcessQuery+0x974>
                    { *dqp = q->NextInDQList; q->NextInDQList = mDNSNULL; }
    e882822c:	058db703          	ld	a4,88(s11)
    e8828230:	67e2                	ld	a5,24(sp)
    e8828232:	e398                	sd	a4,0(a5)
    e8828234:	040dbc23          	sd	zero,88(s11)
                while (*dqp)
    e8828238:	0007bd83          	ld	s11,0(a5)
    e882823c:	fe0d90e3          	bnez	s11,e882821c <ProcessQuery+0x958>
    e8828240:	bd35                	j	e882807c <ProcessQuery+0x7b8>
        if (rr->NR_AdditionalTo && !MustSendRecord(rr->NR_AdditionalTo))
    e8828242:	10873683          	ld	a3,264(a4)
    e8828246:	ca99                	beqz	a3,e882825c <ProcessQuery+0x998>
    e8828248:	1006b603          	ld	a2,256(a3)
    e882824c:	ea01                	bnez	a2,e882825c <ProcessQuery+0x998>
    e882824e:	1086b683          	ld	a3,264(a3)
    e8828252:	e689                	bnez	a3,e882825c <ProcessQuery+0x998>
        { rr->NR_AnswerTo = mDNSNULL; rr->NR_AdditionalTo = mDNSNULL; }
    e8828254:	10073023          	sd	zero,256(a4)
    e8828258:	10073423          	sd	zero,264(a4)
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e882825c:	7f78                	ld	a4,248(a4)
    e882825e:	f7cff06f          	j	e88279da <ProcessQuery+0x116>
        if (rr->NR_AnswerTo)
    e8828262:	1007bc03          	ld	s8,256(a5)
    e8828266:	120c0463          	beqz	s8,e882838e <ProcessQuery+0xaca>
            if ((mDNSu32)(m->timenow - rr->LastMCTime) >= (mDNSu32)TicksTTL(rr)/4)
    e882826a:	00032603          	lw	a2,0(t1)
    e882826e:	4b94                	lw	a3,16(a5)
    e8828270:	1187a883          	lw	a7,280(a5)
    e8828274:	24042c83          	lw	s9,576(s0)
    e8828278:	02c686bb          	mulw	a3,a3,a2
    e882827c:	411c8cbb          	subw	s9,s9,a7
            mDNSBool SendMulticastResponse = mDNSfalse;     // Send modern multicast response
    e8828280:	4881                	li	a7,0
            if ((mDNSu32)(m->timenow - rr->LastMCTime) >= (mDNSu32)TicksTTL(rr)/4)
    e8828282:	7c26b68b          	extu	a3,a3,31,2
    e8828286:	00dcec63          	bltu	s9,a3,e882829e <ProcessQuery+0x9da>
                SendMulticastResponse = mDNStrue;
    e882828a:	4885                	li	a7,1
                if (rr->NR_AnswerTo == NR_AnswerUnicast)
    e882828c:	010c1963          	bne	s8,a6,e882829e <ProcessQuery+0x9da>
                    m->mDNSStats.UnicastDemotedToMulticast++;
    e8828290:	ec072683          	lw	a3,-320(a4)
    e8828294:	2685                	addiw	a3,a3,1
    e8828296:	ecd72023          	sw	a3,-320(a4)
                    rr->NR_AnswerTo = NR_AnswerMulticast;
    e882829a:	10b7b023          	sd	a1,256(a5)
            if      (rr->NR_AnswerTo == NR_AnswerMulticast)
    e882829e:	1007b683          	ld	a3,256(a5)
    e88282a2:	00b69963          	bne	a3,a1,e88282b4 <ProcessQuery+0x9f0>
                m->mDNSStats.MulticastResponses++;
    e88282a6:	ebc72683          	lw	a3,-324(a4)
    e88282aa:	2685                	addiw	a3,a3,1
    e88282ac:	ead72e23          	sw	a3,-324(a4)
            if (SendMulticastResponse || SendUnicastResponse)
    e88282b0:	4681                	li	a3,0
    e88282b2:	a809                	j	e88282c4 <ProcessQuery+0xa00>
            else if (rr->NR_AnswerTo == NR_AnswerUnicast)
    e88282b4:	03069e63          	bne	a3,a6,e88282f0 <ProcessQuery+0xa2c>
                m->mDNSStats.UnicastResponses++;
    e88282b8:	eb872683          	lw	a3,-328(a4)
    e88282bc:	2685                	addiw	a3,a3,1
    e88282be:	ead72c23          	sw	a3,-328(a4)
                SendUnicastResponse   = mDNStrue;
    e88282c2:	4685                	li	a3,1
                m->NextScheduledResponse = m->timenow;
    e88282c4:	24042883          	lw	a7,576(s0)
    e88282c8:	27142023          	sw	a7,608(s0)
                if (rr->ImmedAnswer && rr->ImmedAnswer != InterfaceID)
    e88282cc:	0c87b883          	ld	a7,200(a5)
    e88282d0:	02088563          	beqz	a7,e88282fa <ProcessQuery+0xa36>
    e88282d4:	03288363          	beq	a7,s2,e88282fa <ProcessQuery+0xa36>
                    rr->ImmedAnswer = mDNSInterfaceMark;
    e88282d8:	000bb683          	ld	a3,0(s7)
    e88282dc:	e7f4                	sd	a3,200(a5)
            if      (query->h.flags.b[0] & kDNSFlag0_TC) delayresponse = mDNSPlatformOneSecond * 20;            // Divided by 50 = 400ms
    e88282de:	0029c683          	lbu	a3,2(s3)
    e88282e2:	8a89                	andi	a3,a3,2
    e88282e4:	cec1                	beqz	a3,e882837c <ProcessQuery+0xab8>
    e88282e6:	02ce8a3b          	mulw	s4,t4,a2
    for (rr=ResponseRecords; rr; rr=rr->NextResponse)
    e88282ea:	7ffc                	ld	a5,248(a5)
    e88282ec:	f26ff06f          	j	e8827a12 <ProcessQuery+0x14e>
            else if (rr->NR_AnswerTo)
    e88282f0:	c291                	beqz	a3,e88282f4 <ProcessQuery+0xa30>
                SendLegacyResponse    = mDNStrue;
    e88282f2:	4a85                	li	s5,1
            if (SendMulticastResponse || SendUnicastResponse)
    e88282f4:	fe0885e3          	beqz	a7,e88282de <ProcessQuery+0xa1a>
    e88282f8:	bf65                	j	e88282b0 <ProcessQuery+0x9ec>
                    rr->ImmedAnswer = InterfaceID;          // Record interface to send it on
    e88282fa:	0d27b423          	sd	s2,200(a5)
                    if (SendUnicastResponse) rr->ImmedUnicast = mDNStrue;
    e88282fe:	c299                	beqz	a3,e8828304 <ProcessQuery+0xa40>
    e8828300:	0a778da3          	sb	t2,187(a5)
                    if (srcaddr->type == mDNSAddrType_IPv4)
    e8828304:	4094                	lw	a3,0(s1)
    e8828306:	03e69063          	bne	a3,t5,e8828326 <ProcessQuery+0xa62>
                        if      (mDNSIPv4AddressIsZero(rr->v4Requester)) rr->v4Requester = srcaddr->ip.v4;
    e882830a:	0e07a683          	lw	a3,224(a5)
    e882830e:	e689                	bnez	a3,e8828318 <ProcessQuery+0xa54>
    e8828310:	40d4                	lw	a3,4(s1)
                        else if (!mDNSSameIPv4Address(rr->v4Requester, srcaddr->ip.v4)) rr->v4Requester = onesIPv4Addr;
    e8828312:	0ed7a023          	sw	a3,224(a5)
    e8828316:	b7e1                	j	e88282de <ProcessQuery+0xa1a>
    e8828318:	0044a883          	lw	a7,4(s1)
    e882831c:	fcd881e3          	beq	a7,a3,e88282de <ProcessQuery+0xa1a>
    e8828320:	0002a683          	lw	a3,0(t0)
    e8828324:	b7fd                	j	e8828312 <ProcessQuery+0xa4e>
                    else if (srcaddr->type == mDNSAddrType_IPv6)
    e8828326:	fbf69ce3          	bne	a3,t6,e88282de <ProcessQuery+0xa1a>
                        if      (mDNSIPv6AddressIsZero(rr->v6Requester)) rr->v6Requester = srcaddr->ip.v6;
    e882832a:	0e47ad83          	lw	s11,228(a5)
    e882832e:	0e87ac83          	lw	s9,232(a5)
    e8828332:	0ec7ac03          	lw	s8,236(a5)
    e8828336:	0f07a883          	lw	a7,240(a5)
    e882833a:	019de6b3          	or	a3,s11,s9
    e882833e:	0186e6b3          	or	a3,a3,s8
    e8828342:	0116e6b3          	or	a3,a3,a7
    e8828346:	ea91                	bnez	a3,e882835a <ProcessQuery+0xa96>
    e8828348:	0044b683          	ld	a3,4(s1)
    e882834c:	0ed7b223          	sd	a3,228(a5)
    e8828350:	00c4b683          	ld	a3,12(s1)
                        else if (!mDNSSameIPv6Address(rr->v6Requester, srcaddr->ip.v6)) rr->v6Requester = onesIPv6Addr;
    e8828354:	0ed7b623          	sd	a3,236(a5)
    e8828358:	b759                	j	e88282de <ProcessQuery+0xa1a>
    e882835a:	40d4                	lw	a3,4(s1)
    e882835c:	01b69b63          	bne	a3,s11,e8828372 <ProcessQuery+0xaae>
    e8828360:	4494                	lw	a3,8(s1)
    e8828362:	01969863          	bne	a3,s9,e8828372 <ProcessQuery+0xaae>
    e8828366:	44d4                	lw	a3,12(s1)
    e8828368:	01869563          	bne	a3,s8,e8828372 <ProcessQuery+0xaae>
    e882836c:	4894                	lw	a3,16(s1)
    e882836e:	f71688e3          	beq	a3,a7,e88282de <ProcessQuery+0xa1a>
    e8828372:	6114                	ld	a3,0(a0)
    e8828374:	0ed7b223          	sd	a3,228(a5)
    e8828378:	6514                	ld	a3,8(a0)
    e882837a:	bfe9                	j	e8828354 <ProcessQuery+0xa90>
            else if (rr->resrec.RecordType == kDNSRecordTypeShared) delayresponse = mDNSPlatformOneSecond;      // Divided by 50 = 20ms
    e882837c:	0087c683          	lbu	a3,8(a5)
    e8828380:	41c686b3          	sub	a3,a3,t3
    e8828384:	00d036b3          	snez	a3,a3
    e8828388:	40d61a0b          	mveqz	s4,a2,a3
    e882838c:	bfb9                	j	e88282ea <ProcessQuery+0xa26>
        else if (rr->NR_AdditionalTo && rr->NR_AdditionalTo->NR_AnswerTo == NR_AnswerMulticast)
    e882838e:	1087b683          	ld	a3,264(a5)
    e8828392:	dea1                	beqz	a3,e88282ea <ProcessQuery+0xa26>
    e8828394:	1006b683          	ld	a3,256(a3)
    e8828398:	f4b699e3          	bne	a3,a1,e88282ea <ProcessQuery+0xa26>
            rr->ImmedAdditional = InterfaceID;
    e882839c:	0d27b823          	sd	s2,208(a5)
    e88283a0:	b7a9                	j	e88282ea <ProcessQuery+0xa26>
        if (m->SuppressSending == 0) m->SuppressSending = 1;
    e88283a2:	4785                	li	a5,1
    e88283a4:	24f42823          	sw	a5,592(s0)
    e88283a8:	ebcff06f          	j	e8827a64 <ProcessQuery+0x1a0>
        ResponseRecords = rr->NextResponse;
    e88283ac:	7ff4                	ld	a3,248(a5)
        rr->NR_AnswerTo     = mDNSNULL;
    e88283ae:	1007b023          	sd	zero,256(a5)
        rr->NextResponse    = mDNSNULL;
    e88283b2:	0e07bc23          	sd	zero,248(a5)
        rr->NR_AdditionalTo = mDNSNULL;
    e88283b6:	1007b423          	sd	zero,264(a5)
    e88283ba:	4705                	li	a4,1
        ResponseRecords = rr->NextResponse;
    e88283bc:	87b6                	mv	a5,a3
    e88283be:	b935                	j	e8827ffa <ProcessQuery+0x736>
        ExpectedAnswers = cr->NextInKAList;
    e88283c0:	048a3783          	ld	a5,72(s4)
        cr->NextInKAList = mDNSNULL;
    e88283c4:	040a3423          	sd	zero,72(s4)
        ExpectedAnswers = cr->NextInKAList;
    e88283c8:	f93e                	sd	a5,176(sp)
        if (!(query->h.flags.b[0] & kDNSFlag0_TC))
    e88283ca:	0029c783          	lbu	a5,2(s3)
    e88283ce:	8b89                	andi	a5,a5,2
    e88283d0:	ef85                	bnez	a5,e8828408 <ProcessQuery+0xb44>
    e88283d2:	06ca4703          	lbu	a4,108(s4)
            if (cr->UnansweredQueries == 0 || m->timenow - cr->LastUnansweredTime >= mDNSPlatformOneSecond * 3/4)
    e88283d6:	cf11                	beqz	a4,e88283f2 <ProcessQuery+0xb2e>
    e88283d8:	000ca783          	lw	a5,0(s9)
    e88283dc:	24042683          	lw	a3,576(s0)
    e88283e0:	068a2603          	lw	a2,104(s4)
    e88283e4:	02fb87bb          	mulw	a5,s7,a5
    e88283e8:	9e91                	subw	a3,a3,a2
    e88283ea:	0387c7bb          	divw	a5,a5,s8
    e88283ee:	00f6cd63          	blt	a3,a5,e8828408 <ProcessQuery+0xb44>
                cr->UnansweredQueries++;
    e88283f2:	2705                	addiw	a4,a4,1
    e88283f4:	06ea0623          	sb	a4,108(s4)
                cr->LastUnansweredTime = m->timenow;
    e88283f8:	24042783          	lw	a5,576(s0)
                SetNextCacheCheckTimeForRecord(m, cr);
    e88283fc:	85d2                	mv	a1,s4
    e88283fe:	8522                	mv	a0,s0
                cr->LastUnansweredTime = m->timenow;
    e8828400:	06fa2423          	sw	a5,104(s4)
                SetNextCacheCheckTimeForRecord(m, cr);
    e8828404:	f56f60ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
        if (cr->UnansweredQueries >= MaxUnansweredQueries)
    e8828408:	06ca4d03          	lbu	s10,108(s4)
    e882840c:	c1adf4e3          	bgeu	s11,s10,e8828014 <ProcessQuery+0x750>
            if (RRExpireTime(cr) - m->timenow > (mDNSs32) kDefaultReconfirmTimeForNoAnswer * 4 / 3 + mDNSPlatformOneSecond)
    e8828410:	24042703          	lw	a4,576(s0)
    e8828414:	050a2683          	lw	a3,80(s4)
    e8828418:	000ca603          	lw	a2,0(s9)
    e882841c:	010a2783          	lw	a5,16(s4)
    e8828420:	9e99                	subw	a3,a3,a4
    e8828422:	24c7968b          	mulaw	a3,a5,a2
    e8828426:	47d1                	li	a5,20
    e8828428:	02c787bb          	mulw	a5,a5,a2
    e882842c:	8736                	mv	a4,a3
    e882842e:	0377c7bb          	divw	a5,a5,s7
    e8828432:	9fb1                	addw	a5,a5,a2
    e8828434:	04e7d263          	bge	a5,a4,e8828478 <ProcessQuery+0xbb4>
                    LogInfo("ProcessQuery: UnansweredQueries %lu interface %lu TTL %lu mDNS_Reconfirm() for %s",
    e8828438:	000ac797          	auipc	a5,0xac
    e882843c:	63c78793          	addi	a5,a5,1596 # e88d4a74 <mDNS_LoggingEnabled>
    e8828440:	439c                	lw	a5,0(a5)
    e8828442:	cb9d                	beqz	a5,e8828478 <ProcessQuery+0xbb4>
    e8828444:	fff6071b          	addiw	a4,a2,-1
    e8828448:	9eb9                	addw	a3,a3,a4
    e882844a:	02c6c73b          	divw	a4,a3,a2
    e882844e:	030a3583          	ld	a1,48(s4)
    e8828452:	03b40613          	addi	a2,s0,59
    e8828456:	008a0513          	addi	a0,s4,8
    e882845a:	0591                	addi	a1,a1,4
    e882845c:	e03a                	sd	a4,0(sp)
    e882845e:	db6ee0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8828462:	87aa                	mv	a5,a0
    e8828464:	6702                	ld	a4,0(sp)
    e8828466:	86ca                	mv	a3,s2
    e8828468:	866a                	mv	a2,s10
    e882846a:	0007e597          	auipc	a1,0x7e
    e882846e:	c7e58593          	addi	a1,a1,-898 # e88a60e8 <end.8789+0x2a40>
    e8828472:	450d                	li	a0,3
    e8828474:	038070ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            m->mDNSStats.PoofCacheDeletions++;
    e8828478:	ea8b2783          	lw	a5,-344(s6) # 4ea8 <memcmp-0xe87fb158>
            mDNS_Reconfirm_internal(m, cr, kDefaultReconfirmTimeForNoAnswer);
    e882847c:	4615                	li	a2,5
    e882847e:	85d2                	mv	a1,s4
            m->mDNSStats.PoofCacheDeletions++;
    e8828480:	2785                	addiw	a5,a5,1
    e8828482:	eafb2423          	sw	a5,-344(s6)
            mDNS_Reconfirm_internal(m, cr, kDefaultReconfirmTimeForNoAnswer);
    e8828486:	000ca783          	lw	a5,0(s9)
    e882848a:	8522                	mv	a0,s0
    e882848c:	02f6063b          	mulw	a2,a2,a5
    e8828490:	f78f60ef          	jal	ra,e881ec08 <mDNS_Reconfirm_internal>
    e8828494:	bebd                	j	e8828012 <ProcessQuery+0x74e>
        DupQuestions = q->NextInDQList;
    e8828496:	0587be03          	ld	t3,88(a5)
        q->NextInDQList = mDNSNULL;
    e882849a:	0407bc23          	sd	zero,88(a5)
        RecordDupSuppressInfo(q->DupSuppress, m->timenow, InterfaceID, srcaddr->type);
    e882849e:	24042e83          	lw	t4,576(s0)
    e88284a2:	0004a883          	lw	a7,0(s1)
    e88284a6:	06878613          	addi	a2,a5,104
    e88284aa:	07078693          	addi	a3,a5,112
    for (i=0; i<DupSuppressInfoSize; i++) if (ds[i].InterfaceID == InterfaceID && ds[i].Type == Type) break;
    e88284ae:	4701                	li	a4,0
    e88284b0:	628c                	ld	a1,0(a3)
    e88284b2:	00b91563          	bne	s2,a1,e88284bc <ProcessQuery+0xbf8>
    e88284b6:	468c                	lw	a1,8(a3)
    e88284b8:	03158e63          	beq	a1,a7,e88284f4 <ProcessQuery+0xc30>
    e88284bc:	2705                	addiw	a4,a4,1
    e88284be:	06e1                	addi	a3,a3,24
    e88284c0:	fea718e3          	bne	a4,a0,e88284b0 <ProcessQuery+0xbec>
    e88284c4:	08078793          	addi	a5,a5,128
        i = 0;
    e88284c8:	4701                	li	a4,0
        for (j=1; j<DupSuppressInfoSize && ds[i].InterfaceID; j++)
    e88284ca:	4685                	li	a3,1
    e88284cc:	03070333          	mul	t1,a4,a6
    e88284d0:	006605b3          	add	a1,a2,t1
    e88284d4:	658c                	ld	a1,8(a1)
    e88284d6:	cd99                	beqz	a1,e88284f4 <ProcessQuery+0xc30>
            if (!ds[j].InterfaceID || ds[j].Time - ds[i].Time < 0)
    e88284d8:	678c                	ld	a1,8(a5)
    e88284da:	c981                	beqz	a1,e88284ea <ProcessQuery+0xc26>
    e88284dc:	438c                	lw	a1,0(a5)
    e88284de:	4066430b          	lrw	t1,a2,t1,0
    e88284e2:	406585bb          	subw	a1,a1,t1
    e88284e6:	0005d363          	bgez	a1,e88284ec <ProcessQuery+0xc28>
    e88284ea:	8736                	mv	a4,a3
        for (j=1; j<DupSuppressInfoSize && ds[i].InterfaceID; j++)
    e88284ec:	2685                	addiw	a3,a3,1
    e88284ee:	07e1                	addi	a5,a5,24
    e88284f0:	fca69ee3          	bne	a3,a0,e88284cc <ProcessQuery+0xc08>
    ds[i].Time        = Time;
    e88284f4:	03070733          	mul	a4,a4,a6
    e88284f8:	00e607b3          	add	a5,a2,a4
    e88284fc:	40e65e8b          	srw	t4,a2,a4,0
    ds[i].InterfaceID = InterfaceID;
    e8828500:	4705                	li	a4,1
    e8828502:	0127b423          	sd	s2,8(a5)
    ds[i].Type        = Type;
    e8828506:	0117a823          	sw	a7,16(a5)
        DupQuestions = q->NextInDQList;
    e882850a:	87f2                	mv	a5,t3
    e882850c:	be19                	j	e8828022 <ProcessQuery+0x75e>
        if (QuestionNeedsMulticastResponse && !(query->h.flags.b[0] & kDNSFlag0_TC))
    e882850e:	ee0d8263          	beqz	s11,e8827bf2 <ProcessQuery+0x32e>
    e8828512:	eaeff06f          	j	e8827bc0 <ProcessQuery+0x2fc>

00000000e8828516 <mDNSCoreReceiveNoUnicastAnswers>:
{
    e8828516:	bd010113          	addi	sp,sp,-1072
    e882851a:	e83e                	sd	a5,16(sp)
        if (ptr && (qptr = ExpectingUnicastResponseForQuestion(m, dstport, response->h.id, &q, !dstaddr)))
    e882851c:	0016b793          	seqz	a5,a3
{
    e8828520:	3f813023          	sd	s8,992(sp)
                            MakeNegativeCacheRecord(m, &m->rec.r, name, hash, q.qtype, q.qclass, negttl, mDNSInterface_Any, qptr->qDNSServer);
    e8828524:	6c25                	lui	s8,0x9
        if (ptr && (qptr = ExpectingUnicastResponseForQuestion(m, dstport, response->h.id, &q, !dstaddr)))
    e8828526:	e8be                	sd	a5,80(sp)
                            MakeNegativeCacheRecord(m, &m->rec.r, name, hash, q.qtype, q.qclass, negttl, mDNSInterface_Any, qptr->qDNSServer);
    e8828528:	4d8c0793          	addi	a5,s8,1240 # 94d8 <memcmp-0xe87f6b28>
    e882852c:	97aa                	add	a5,a5,a0
{
    e882852e:	41413023          	sd	s4,1024(sp)
                            MakeNegativeCacheRecord(m, &m->rec.r, name, hash, q.qtype, q.qclass, negttl, mDNSInterface_Any, qptr->qDNSServer);
    e8828532:	f83e                	sd	a5,48(sp)
{
    e8828534:	43013a03          	ld	s4,1072(sp)
                            CacheGroup *cgSOA = CacheGroupForRecord(m, &m->rec.r.resrec);
    e8828538:	4e0c0793          	addi	a5,s8,1248
    e882853c:	97aa                	add	a5,a5,a0
{
    e882853e:	42813023          	sd	s0,1056(sp)
    e8828542:	41313423          	sd	s3,1032(sp)
    e8828546:	3f613823          	sd	s6,1008(sp)
    e882854a:	3f713423          	sd	s7,1000(sp)
    e882854e:	3db13423          	sd	s11,968(sp)
    e8828552:	42113423          	sd	ra,1064(sp)
    e8828556:	40913c23          	sd	s1,1048(sp)
    e882855a:	41213823          	sd	s2,1040(sp)
    e882855e:	3f513c23          	sd	s5,1016(sp)
    e8828562:	3d913c23          	sd	s9,984(sp)
    e8828566:	3da13823          	sd	s10,976(sp)
    e882856a:	842a                	mv	s0,a0
    e882856c:	8bae                	mv	s7,a1
    e882856e:	8db2                	mv	s11,a2
    e8828570:	02e11f23          	sh	a4,62(sp)
    e8828574:	e0c2                	sd	a6,64(sp)
    e8828576:	f446                	sd	a7,40(sp)
    const mDNSu8 *ptr   = response->data;
    e8828578:	00c58993          	addi	s3,a1,12
    CacheRecord *SOARecord = mDNSNULL;
    e882857c:	4b01                	li	s6,0
    for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e882857e:	ec02                	sd	zero,24(sp)
                            CacheGroup *cgSOA = CacheGroupForRecord(m, &m->rec.r.resrec);
    e8828580:	ecbe                	sd	a5,88(sp)
    for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e8828582:	004bd783          	lhu	a5,4(s7)
    e8828586:	6762                	ld	a4,24(sp)
    e8828588:	00f75663          	bge	a4,a5,e8828594 <mDNSCoreReceiveNoUnicastAnswers+0x7e>
    e882858c:	00098463          	beqz	s3,e8828594 <mDNSCoreReceiveNoUnicastAnswers+0x7e>
    e8828590:	09b9e563          	bltu	s3,s11,e882861a <mDNSCoreReceiveNoUnicastAnswers+0x104>
    if (NSECRecords) { LogInfo("mDNSCoreReceiveNoUnicastAnswers: NSECRecords not used"); FreeNSECRecords(m, NSECRecords); }
    e8828594:	020a0363          	beqz	s4,e88285ba <mDNSCoreReceiveNoUnicastAnswers+0xa4>
    e8828598:	000ac797          	auipc	a5,0xac
    e882859c:	4dc78793          	addi	a5,a5,1244 # e88d4a74 <mDNS_LoggingEnabled>
    e88285a0:	439c                	lw	a5,0(a5)
    e88285a2:	cb81                	beqz	a5,e88285b2 <mDNSCoreReceiveNoUnicastAnswers+0x9c>
    e88285a4:	00080597          	auipc	a1,0x80
    e88285a8:	f7458593          	addi	a1,a1,-140 # e88a8518 <hexValues.12413+0x568>
    e88285ac:	450d                	li	a0,3
    e88285ae:	6ff060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88285b2:	85d2                	mv	a1,s4
    e88285b4:	8522                	mv	a0,s0
    e88285b6:	ff3f70ef          	jal	ra,e88205a8 <FreeNSECRecords>
    if (SOARecord)   { LogInfo("mDNSCoreReceiveNoUnicastAnswers: SOARecord not used"); ReleaseCacheRecord(m, SOARecord); }
    e88285ba:	020b0363          	beqz	s6,e88285e0 <mDNSCoreReceiveNoUnicastAnswers+0xca>
    e88285be:	000ac797          	auipc	a5,0xac
    e88285c2:	4b678793          	addi	a5,a5,1206 # e88d4a74 <mDNS_LoggingEnabled>
    e88285c6:	439c                	lw	a5,0(a5)
    e88285c8:	cb81                	beqz	a5,e88285d8 <mDNSCoreReceiveNoUnicastAnswers+0xc2>
    e88285ca:	00080597          	auipc	a1,0x80
    e88285ce:	f8658593          	addi	a1,a1,-122 # e88a8550 <hexValues.12413+0x5a0>
    e88285d2:	450d                	li	a0,3
    e88285d4:	6d9060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88285d8:	85da                	mv	a1,s6
    e88285da:	8522                	mv	a0,s0
    e88285dc:	cebf70ef          	jal	ra,e88202c6 <ReleaseCacheRecord>
}
    e88285e0:	42813083          	ld	ra,1064(sp)
    e88285e4:	42013403          	ld	s0,1056(sp)
    e88285e8:	41813483          	ld	s1,1048(sp)
    e88285ec:	41013903          	ld	s2,1040(sp)
    e88285f0:	40813983          	ld	s3,1032(sp)
    e88285f4:	40013a03          	ld	s4,1024(sp)
    e88285f8:	3f813a83          	ld	s5,1016(sp)
    e88285fc:	3f013b03          	ld	s6,1008(sp)
    e8828600:	3e813b83          	ld	s7,1000(sp)
    e8828604:	3e013c03          	ld	s8,992(sp)
    e8828608:	3d813c83          	ld	s9,984(sp)
    e882860c:	3d013d03          	ld	s10,976(sp)
    e8828610:	3c813d83          	ld	s11,968(sp)
    e8828614:	43010113          	addi	sp,sp,1072
    e8828618:	8082                	ret
        ptr = getQuestion(response, ptr, end, InterfaceID, &q);
    e882861a:	66c2                	ld	a3,16(sp)
    e882861c:	85ce                	mv	a1,s3
    e882861e:	10b8                	addi	a4,sp,104
    e8828620:	866e                	mv	a2,s11
    e8828622:	855e                	mv	a0,s7
    e8828624:	a18ed0ef          	jal	ra,e881583c <getQuestion>
    e8828628:	89aa                	mv	s3,a0
        if (ptr && (qptr = ExpectingUnicastResponseForQuestion(m, dstport, response->h.id, &q, !dstaddr)))
    e882862a:	50050463          	beqz	a0,e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
    e882862e:	6746                	ld	a4,80(sp)
    e8828630:	000bd603          	lhu	a2,0(s7)
    e8828634:	03e15583          	lhu	a1,62(sp)
    e8828638:	2b843503          	ld	a0,696(s0)
    e882863c:	10b4                	addi	a3,sp,104
    e882863e:	8f5f40ef          	jal	ra,e881cf32 <ExpectingUnicastResponseForQuestion.isra.23>
    e8828642:	84aa                	mv	s1,a0
    e8828644:	4e050763          	beqz	a0,e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
            CacheGroup *cg = CacheGroupForName(m, q.qnamehash, &q.qname);
    e8828648:	55c6                	lw	a1,112(sp)
    e882864a:	1cf0                	addi	a2,sp,636
    e882864c:	8522                	mv	a0,s0
    e882864e:	ffbf50ef          	jal	ra,e881e648 <CacheGroupForName>
    e8828652:	892a                	mv	s2,a0
            for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8828654:	cd01                	beqz	a0,e882866c <mDNSCoreReceiveNoUnicastAnswers+0x156>
    e8828656:	01053a83          	ld	s5,16(a0)
    e882865a:	4901                	li	s2,0
                    if (RRExpireTime(rr) - m->timenow > 0) break;
    e882865c:	000acc97          	auipc	s9,0xac
    e8828660:	424c8c93          	addi	s9,s9,1060 # e88d4a80 <mDNSPlatformOneSecond>
                    if (rr->resrec.RecordType == kDNSRecordTypePacketNegative) neg = rr;
    e8828664:	0f000d13          	li	s10,240
            for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8828668:	000a9763          	bnez	s5,e8828676 <mDNSCoreReceiveNoUnicastAnswers+0x160>
            if (!InterfaceID && q.qtype != kDNSType_SOA && IsLocalDomain(&q.qname))
    e882866c:	67c2                	ld	a5,16(sp)
    e882866e:	4a81                	li	s5,0
    e8828670:	44078e63          	beqz	a5,e8828acc <mDNSCoreReceiveNoUnicastAnswers+0x5b6>
    e8828674:	a08d                	j	e88286d6 <mDNSCoreReceiveNoUnicastAnswers+0x1c0>
                if (SameNameRecordAnswersQuestion(&rr->resrec, qptr))
    e8828676:	85a6                	mv	a1,s1
    e8828678:	008a8513          	addi	a0,s5,8
    e882867c:	80fed0ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e8828680:	c515                	beqz	a0,e88286ac <mDNSCoreReceiveNoUnicastAnswers+0x196>
                    if (RRExpireTime(rr) - m->timenow > 0) break;
    e8828682:	050aa783          	lw	a5,80(s5)
    e8828686:	24042603          	lw	a2,576(s0)
    e882868a:	010aa683          	lw	a3,16(s5)
    e882868e:	000ca703          	lw	a4,0(s9)
    e8828692:	9f91                	subw	a5,a5,a2
    e8828694:	24e6978b          	mulaw	a5,a3,a4
    e8828698:	42f04863          	bgtz	a5,e8828ac8 <mDNSCoreReceiveNoUnicastAnswers+0x5b2>
                    if (rr->resrec.RecordType == kDNSRecordTypePacketNegative) neg = rr;
    e882869c:	008ac783          	lbu	a5,8(s5)
    e88286a0:	41a787b3          	sub	a5,a5,s10
    e88286a4:	00f037b3          	snez	a5,a5
    e88286a8:	40fa990b          	mveqz	s2,s5,a5
            for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e88286ac:	000aba83          	ld	s5,0(s5)
    e88286b0:	bf65                	j	e8828668 <mDNSCoreReceiveNoUnicastAnswers+0x152>
                    LogInfo("mDNSCoreReceiveNoUnicastAnswers: Skipping check and not creating a negative cache entry for %##s (%s)", q.qname.c, DNSTypeName(q.qtype));
    e88286b2:	48078063          	beqz	a5,e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
    e88286b6:	37c15503          	lhu	a0,892(sp)
    e88286ba:	da6ed0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88286be:	86aa                	mv	a3,a0
    e88286c0:	1cf0                	addi	a2,sp,636
    e88286c2:	00080597          	auipc	a1,0x80
    e88286c6:	c9658593          	addi	a1,a1,-874 # e88a8358 <hexValues.12413+0x3a8>
    e88286ca:	450d                	li	a0,3
    e88286cc:	5e1060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88286d0:	a18d                	j	e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
                if (!rr)
    e88286d2:	460a9063          	bnez	s5,e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
                    if (q.qtype == kDNSType_SOA && SameDomainName(&q.qname, &localdomain)) negttl = 60 * 60 * 24;
    e88286d6:	37c15703          	lhu	a4,892(sp)
    e88286da:	4799                	li	a5,6
                    mDNSu32 hash = q.qnamehash;
    e88286dc:	5d46                	lw	s10,112(sp)
                    if (q.qtype == kDNSType_SOA && SameDomainName(&q.qname, &localdomain)) negttl = 60 * 60 * 24;
    e88286de:	00f71b63          	bne	a4,a5,e88286f4 <mDNSCoreReceiveNoUnicastAnswers+0x1de>
    e88286e2:	0007a597          	auipc	a1,0x7a
    e88286e6:	dc658593          	addi	a1,a1,-570 # e88a24a8 <DiscardPort+0x498>
    e88286ea:	1ce8                	addi	a0,sp,636
    e88286ec:	95fea0ef          	jal	ra,e881304a <SameDomainName>
    e88286f0:	22051c63          	bnez	a0,e8828928 <mDNSCoreReceiveNoUnicastAnswers+0x412>
                    mDNSu32 negttl = 60;
    e88286f4:	03c00a93          	li	s5,60
                    if (response->h.numAuthorities && (ptr = LocateAuthorities(response, end)) != mDNSNULL)
    e88286f8:	008bd783          	lhu	a5,8(s7)
                    int repeat = 0;
    e88286fc:	4c81                	li	s9,0
                    if (response->h.numAuthorities && (ptr = LocateAuthorities(response, end)) != mDNSNULL)
    e88286fe:	0e078963          	beqz	a5,e88287f0 <mDNSCoreReceiveNoUnicastAnswers+0x2da>
    e8828702:	85ee                	mv	a1,s11
    e8828704:	855e                	mv	a0,s7
    e8828706:	a00ed0ef          	jal	ra,e8815906 <LocateAuthorities>
    e882870a:	89aa                	mv	s3,a0
    e882870c:	0e050263          	beqz	a0,e88287f0 <mDNSCoreReceiveNoUnicastAnswers+0x2da>
                        ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, kDNSRecordTypePacketAuth, &m->rec);
    e8828710:	7842                	ld	a6,48(sp)
    e8828712:	6742                	ld	a4,16(sp)
    e8828714:	862a                	mv	a2,a0
    e8828716:	0a000793          	li	a5,160
    e882871a:	86ee                	mv	a3,s11
    e882871c:	85de                	mv	a1,s7
    e882871e:	8522                	mv	a0,s0
    e8828720:	f12ee0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
    e8828724:	89aa                	mv	s3,a0
                        if (ptr && m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && m->rec.r.resrec.rrtype == kDNSType_SOA)
    e8828726:	20050563          	beqz	a0,e8828930 <mDNSCoreReceiveNoUnicastAnswers+0x41a>
    e882872a:	01840733          	add	a4,s0,s8
    e882872e:	4e074683          	lbu	a3,1248(a4)
    e8828732:	0f000793          	li	a5,240
    e8828736:	0af68963          	beq	a3,a5,e88287e8 <mDNSCoreReceiveNoUnicastAnswers+0x2d2>
    e882873a:	4e275683          	lhu	a3,1250(a4)
    e882873e:	4799                	li	a5,6
    e8828740:	0af69463          	bne	a3,a5,e88287e8 <mDNSCoreReceiveNoUnicastAnswers+0x2d2>
                            CacheGroup *cgSOA = CacheGroupForRecord(m, &m->rec.r.resrec);
    e8828744:	65e6                	ld	a1,88(sp)
    e8828746:	8522                	mv	a0,s0
    e8828748:	f03a                	sd	a4,32(sp)
    e882874a:	8e6f60ef          	jal	ra,e881e830 <CacheGroupForRecord>
    e882874e:	862a                	mv	a2,a0
                            mDNSu32 ttl_s = soa->min;
    e8828750:	7702                	ld	a4,32(sp)
    e8828752:	50873783          	ld	a5,1288(a4)
                            if (ttl_s > m->rec.r.resrec.rroriginalttl && m->rec.r.resrec.name->c[0])
    e8828756:	4e872683          	lw	a3,1256(a4)
                            mDNSu32 ttl_s = soa->min;
    e882875a:	2147a783          	lw	a5,532(a5)
                            if (ttl_s > m->rec.r.resrec.rroriginalttl && m->rec.r.resrec.name->c[0])
    e882875e:	00f6f863          	bgeu	a3,a5,e882876e <mDNSCoreReceiveNoUnicastAnswers+0x258>
    e8828762:	50073703          	ld	a4,1280(a4)
    e8828766:	00074703          	lbu	a4,0(a4)
    e882876a:	42e6978b          	mvnez	a5,a3,a4
                            if (negttl < ttl_s) negttl = ttl_s;
    e882876e:	00fab733          	sltu	a4,s5,a5
    e8828772:	42e79a8b          	mvnez	s5,a5,a4
                            SOARecord = CreateNewCacheEntry(m, HashSlotFromNameHash(m->rec.r.resrec.namehash), cgSOA, 1, mDNSfalse, mDNSNULL);
    e8828776:	018407b3          	add	a5,s0,s8
    e882877a:	4f07a803          	lw	a6,1264(a5)
    e882877e:	1f300593          	li	a1,499
    e8828782:	f03e                	sd	a5,32(sp)
    e8828784:	02b875bb          	remuw	a1,a6,a1
    e8828788:	4781                	li	a5,0
    e882878a:	4701                	li	a4,0
    e882878c:	4685                	li	a3,1
    e882878e:	8522                	mv	a0,s0
    e8828790:	2a81                	sext.w	s5,s5
                    int repeat = 0;
    e8828792:	4c81                	li	s9,0
                            SOARecord = CreateNewCacheEntry(m, HashSlotFromNameHash(m->rec.r.resrec.namehash), cgSOA, 1, mDNSfalse, mDNSNULL);
    e8828794:	b27fe0ef          	jal	ra,e88272ba <CreateNewCacheEntry>
    e8828798:	8b2a                	mv	s6,a0
                            if (!qptr->ProxyQuestion && q.qtype == kDNSType_SOA)
    e882879a:	3254c783          	lbu	a5,805(s1)
    e882879e:	e7a9                	bnez	a5,e88287e8 <mDNSCoreReceiveNoUnicastAnswers+0x2d2>
    e88287a0:	37c15703          	lhu	a4,892(sp)
    e88287a4:	4799                	li	a5,6
    e88287a6:	04f71163          	bne	a4,a5,e88287e8 <mDNSCoreReceiveNoUnicastAnswers+0x2d2>
                                int qcount = CountLabels(&q.qname);
    e88287aa:	1ce8                	addi	a0,sp,636
    e88287ac:	a9bea0ef          	jal	ra,e8813246 <CountLabels>
    e88287b0:	f02a                	sd	a0,32(sp)
                                int scount = CountLabels(m->rec.r.resrec.name);
    e88287b2:	018407b3          	add	a5,s0,s8
    e88287b6:	5007b503          	ld	a0,1280(a5)
    e88287ba:	a8dea0ef          	jal	ra,e8813246 <CountLabels>
                                if (qcount - 1 > scount)
    e88287be:	7782                	ld	a5,32(sp)
    e88287c0:	fff7871b          	addiw	a4,a5,-1
    e88287c4:	02e55263          	bge	a0,a4,e88287e8 <mDNSCoreReceiveNoUnicastAnswers+0x2d2>
                                    if (SameDomainName(SkipLeadingLabels(&q.qname, qcount - scount), m->rec.r.resrec.name))
    e88287c8:	9f89                	subw	a5,a5,a0
    e88287ca:	85be                	mv	a1,a5
    e88287cc:	1ce8                	addi	a0,sp,636
    e88287ce:	f03e                	sd	a5,32(sp)
    e88287d0:	a8bea0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e88287d4:	018407b3          	add	a5,s0,s8
    e88287d8:	5007b583          	ld	a1,1280(a5)
    e88287dc:	86fea0ef          	jal	ra,e881304a <SameDomainName>
    e88287e0:	c501                	beqz	a0,e88287e8 <mDNSCoreReceiveNoUnicastAnswers+0x2d2>
                                        repeat = qcount - 1 - scount;
    e88287e2:	7782                	ld	a5,32(sp)
    e88287e4:	fff78c9b          	addiw	s9,a5,-1
                        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e88287e8:	018407b3          	add	a5,s0,s8
    e88287ec:	4e078023          	sb	zero,1248(a5)
                    if (neg)
    e88287f0:	02090663          	beqz	s2,e882881c <mDNSCoreReceiveNoUnicastAnswers+0x306>
                        if (negttl < neg->resrec.rroriginalttl * 2)
    e88287f4:	01092783          	lw	a5,16(s2)
    e88287f8:	0017971b          	slliw	a4,a5,0x1
    e88287fc:	87ba                	mv	a5,a4
    e88287fe:	01573733          	sltu	a4,a4,s5
    e8828802:	42ea978b          	mvnez	a5,s5,a4
    e8828806:	6705                	lui	a4,0x1
    e8828808:	0007869b          	sext.w	a3,a5
    e882880c:	e1070713          	addi	a4,a4,-496 # e10 <memcmp-0xe87ff1f0>
    e8828810:	00d736b3          	sltu	a3,a4,a3
    e8828814:	42d7178b          	mvnez	a5,a4,a3
    e8828818:	00078a9b          	sext.w	s5,a5
                    negttl = GetEffectiveTTL(LLQType, negttl);  // Add 25% grace period if necessary
    e882881c:	6506                	ld	a0,64(sp)
    e882881e:	85d6                	mv	a1,s5
    e8828820:	c98f40ef          	jal	ra,e881ccb8 <GetEffectiveTTL>
    e8828824:	00050a9b          	sext.w	s5,a0
                    if (neg)
    e8828828:	10090663          	beqz	s2,e8828934 <mDNSCoreReceiveNoUnicastAnswers+0x41e>
                        LogInfo("mDNSCoreReceiveNoUnicastAnswers: Renewing negative TTL from %d to %d %s", neg->resrec.rroriginalttl, negttl, CRDisplayString(m, neg));
    e882882c:	000acc97          	auipc	s9,0xac
    e8828830:	248c8c93          	addi	s9,s9,584 # e88d4a74 <mDNS_LoggingEnabled>
    e8828834:	000ca783          	lw	a5,0(s9)
    e8828838:	c795                	beqz	a5,e8828864 <mDNSCoreReceiveNoUnicastAnswers+0x34e>
    e882883a:	03093583          	ld	a1,48(s2)
    e882883e:	01092d03          	lw	s10,16(s2)
    e8828842:	03b40613          	addi	a2,s0,59
    e8828846:	0591                	addi	a1,a1,4
    e8828848:	00890513          	addi	a0,s2,8
    e882884c:	9c8ee0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8828850:	872a                	mv	a4,a0
    e8828852:	86d6                	mv	a3,s5
    e8828854:	866a                	mv	a2,s10
    e8828856:	00080597          	auipc	a1,0x80
    e882885a:	b6a58593          	addi	a1,a1,-1174 # e88a83c0 <hexValues.12413+0x410>
    e882885e:	450d                	li	a0,3
    e8828860:	44d060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    rr->TimeRcvd             = m->timenow;
    e8828864:	24042783          	lw	a5,576(s0)
    SetNextCacheCheckTimeForRecord(m, rr);
    e8828868:	85ca                	mv	a1,s2
    rr->resrec.rroriginalttl = ttl;
    e882886a:	01592823          	sw	s5,16(s2)
    rr->TimeRcvd             = m->timenow;
    e882886e:	04f92823          	sw	a5,80(s2)
    rr->UnansweredQueries = 0;
    e8828872:	06090623          	sb	zero,108(s2)
    SetNextCacheCheckTimeForRecord(m, rr);
    e8828876:	8522                	mv	a0,s0
    e8828878:	ae2f60ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
                        ResetQuestionState(m, qptr);
    e882887c:	24042783          	lw	a5,576(s0)
    q->ThisQInterval    = MaxQuestionInterval;
    e8828880:	6705                	lui	a4,0x1
    e8828882:	e107071b          	addiw	a4,a4,-496
    q->LastQTime        = m->timenow;
    e8828886:	c89c                	sw	a5,16(s1)
    q->LastQTxTime      = m->timenow;
    e8828888:	12f4ac23          	sw	a5,312(s1)
    q->ThisQInterval    = MaxQuestionInterval;
    e882888c:	000ac797          	auipc	a5,0xac
    e8828890:	1f478793          	addi	a5,a5,500 # e88d4a80 <mDNSPlatformOneSecond>
    e8828894:	439c                	lw	a5,0(a5)
    q->RecentAnswerPkts = 0;
    e8828896:	0204a023          	sw	zero,32(s1)
    q->RequestUnicast   = 0;
    e882889a:	1204aa23          	sw	zero,308(s1)
    q->ThisQInterval    = MaxQuestionInterval;
    e882889e:	02e787bb          	mulw	a5,a5,a4
    q->unansweredQueries = 0;
    e88288a2:	18048223          	sb	zero,388(s1)
    q->ThisQInterval    = MaxQuestionInterval;
    e88288a6:	c8dc                	sw	a5,20(s1)
                        if (DNSSECQuestion(qptr))
    e88288a8:	3244c783          	lbu	a5,804(s1)
    e88288ac:	eb91                	bnez	a5,e88288c0 <mDNSCoreReceiveNoUnicastAnswers+0x3aa>
    e88288ae:	14a4c783          	lbu	a5,330(s1)
    e88288b2:	e799                	bnez	a5,e88288c0 <mDNSCoreReceiveNoUnicastAnswers+0x3aa>
    e88288b4:	3254c783          	lbu	a5,805(s1)
    e88288b8:	c799                	beqz	a5,e88288c6 <mDNSCoreReceiveNoUnicastAnswers+0x3b0>
    e88288ba:	3264c783          	lbu	a5,806(s1)
    e88288be:	c781                	beqz	a5,e88288c6 <mDNSCoreReceiveNoUnicastAnswers+0x3b0>
                            neg->CRDNSSECQuestion = 1;
    e88288c0:	4785                	li	a5,1
    e88288c2:	06f906a3          	sb	a5,109(s2)
                        if (NSECRecords)
    e88288c6:	040a0363          	beqz	s4,e882890c <mDNSCoreReceiveNoUnicastAnswers+0x3f6>
                            if (!AddNSECSForCacheRecord(m, NSECRecords, neg, rcode))
    e88288ca:	76a2                	ld	a3,40(sp)
    e88288cc:	864a                	mv	a2,s2
    e88288ce:	85d2                	mv	a1,s4
    e88288d0:	8522                	mv	a0,s0
    e88288d2:	21a070ef          	jal	ra,e882faec <AddNSECSForCacheRecord>
    e88288d6:	e91d                	bnez	a0,e882890c <mDNSCoreReceiveNoUnicastAnswers+0x3f6>
                                LogInfo("mDNSCoreReceiveNoUnicastAnswers: AddNSECSForCacheRecord failed to add NSEC for negcr %s during refresh", CRDisplayString(m, neg));
    e88288d8:	000ca783          	lw	a5,0(s9)
    e88288dc:	c395                	beqz	a5,e8828900 <mDNSCoreReceiveNoUnicastAnswers+0x3ea>
    e88288de:	03093583          	ld	a1,48(s2)
    e88288e2:	03b40613          	addi	a2,s0,59
    e88288e6:	00890513          	addi	a0,s2,8
    e88288ea:	0591                	addi	a1,a1,4
    e88288ec:	928ee0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88288f0:	862a                	mv	a2,a0
    e88288f2:	00080597          	auipc	a1,0x80
    e88288f6:	b1658593          	addi	a1,a1,-1258 # e88a8408 <hexValues.12413+0x458>
    e88288fa:	450d                	li	a0,3
    e88288fc:	3b1060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                                FreeNSECRecords(m, NSECRecords);
    e8828900:	85d2                	mv	a1,s4
    e8828902:	8522                	mv	a0,s0
    e8828904:	ca5f70ef          	jal	ra,e88205a8 <FreeNSECRecords>
                                neg->CRDNSSECQuestion = 0;
    e8828908:	060906a3          	sb	zero,109(s2)
                        if (SOARecord)
    e882890c:	4a01                	li	s4,0
    e882890e:	220b0263          	beqz	s6,e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
                            if (neg->soa)
    e8828912:	08093583          	ld	a1,128(s2)
    e8828916:	c581                	beqz	a1,e882891e <mDNSCoreReceiveNoUnicastAnswers+0x408>
                                ReleaseCacheRecord(m, neg->soa);
    e8828918:	8522                	mv	a0,s0
    e882891a:	9adf70ef          	jal	ra,e88202c6 <ReleaseCacheRecord>
                            neg->soa = SOARecord;
    e882891e:	09693023          	sd	s6,128(s2)
    e8828922:	4a01                	li	s4,0
                            SOARecord = mDNSNULL;
    e8828924:	4b01                	li	s6,0
    e8828926:	a431                	j	e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
                    if (q.qtype == kDNSType_SOA && SameDomainName(&q.qname, &localdomain)) negttl = 60 * 60 * 24;
    e8828928:	6ad5                	lui	s5,0x15
    e882892a:	180a8a93          	addi	s5,s5,384 # 15180 <memcmp-0xe87eae80>
    e882892e:	b3e9                	j	e88286f8 <mDNSCoreReceiveNoUnicastAnswers+0x1e2>
                    int repeat = 0;
    e8828930:	8caa                	mv	s9,a0
    e8828932:	bd5d                	j	e88287e8 <mDNSCoreReceiveNoUnicastAnswers+0x2d2>
                            MakeNegativeCacheRecord(m, &m->rec.r, name, hash, q.qtype, q.qclass, negttl, mDNSInterface_Any, qptr->qDNSServer);
    e8828934:	0007a797          	auipc	a5,0x7a
    e8828938:	42c78793          	addi	a5,a5,1068 # e88a2d60 <mDNSInterface_Any>
    e882893c:	639c                	ld	a5,0(a5)
                    const domainname *name = &q.qname;
    e882893e:	27c10913          	addi	s2,sp,636
                            MakeNegativeCacheRecord(m, &m->rec.r, name, hash, q.qtype, q.qclass, negttl, mDNSInterface_Any, qptr->qDNSServer);
    e8828942:	e4be                	sd	a5,72(sp)
                            m->rec.r.responseFlags = response->h.flags;
    e8828944:	018407b3          	add	a5,s0,s8
    e8828948:	f03e                	sd	a5,32(sp)
                            MakeNegativeCacheRecord(m, &m->rec.r, name, hash, q.qtype, q.qclass, negttl, mDNSInterface_Any, qptr->qDNSServer);
    e882894a:	1684b783          	ld	a5,360(s1)
    e882894e:	68a6                	ld	a7,72(sp)
    e8828950:	37c15703          	lhu	a4,892(sp)
    e8828954:	e03e                	sd	a5,0(sp)
    e8828956:	75c2                	ld	a1,48(sp)
    e8828958:	37e15783          	lhu	a5,894(sp)
    e882895c:	8856                	mv	a6,s5
    e882895e:	86ea                	mv	a3,s10
    e8828960:	864a                	mv	a2,s2
    e8828962:	8522                	mv	a0,s0
    e8828964:	dfef80ef          	jal	ra,e8820f62 <MakeNegativeCacheRecord>
                            m->rec.r.responseFlags = response->h.flags;
    e8828968:	002bd783          	lhu	a5,2(s7)
    e882896c:	7702                	ld	a4,32(sp)
                            cg = CacheGroupForName(m, hash, name);
    e882896e:	864a                	mv	a2,s2
    e8828970:	85ea                	mv	a1,s10
                            m->rec.r.responseFlags = response->h.flags;
    e8828972:	54f71323          	sh	a5,1350(a4) # 1546 <memcmp-0xe87feaba>
                            cg = CacheGroupForName(m, hash, name);
    e8828976:	8522                	mv	a0,s0
    e8828978:	cd1f50ef          	jal	ra,e881e648 <CacheGroupForName>
    e882897c:	862a                	mv	a2,a0
                            if (NSECRecords && DNSSECQuestion(qptr))
    e882897e:	0a0a0f63          	beqz	s4,e8828a3c <mDNSCoreReceiveNoUnicastAnswers+0x526>
    e8828982:	3244c783          	lbu	a5,804(s1)
    e8828986:	eb91                	bnez	a5,e882899a <mDNSCoreReceiveNoUnicastAnswers+0x484>
    e8828988:	14a4c783          	lbu	a5,330(s1)
    e882898c:	e799                	bnez	a5,e882899a <mDNSCoreReceiveNoUnicastAnswers+0x484>
    e882898e:	3254c783          	lbu	a5,805(s1)
    e8828992:	c7cd                	beqz	a5,e8828a3c <mDNSCoreReceiveNoUnicastAnswers+0x526>
    e8828994:	3264c783          	lbu	a5,806(s1)
    e8828998:	c3d5                	beqz	a5,e8828a3c <mDNSCoreReceiveNoUnicastAnswers+0x526>
                                negcr = CreateNewCacheEntry(m, HashSlotFromNameHash(hash), cg, 1, mDNStrue, mDNSNULL);
    e882899a:	1f300593          	li	a1,499
    e882899e:	02bd75bb          	remuw	a1,s10,a1
    e88289a2:	4781                	li	a5,0
    e88289a4:	4705                	li	a4,1
    e88289a6:	4685                	li	a3,1
    e88289a8:	8522                	mv	a0,s0
    e88289aa:	911fe0ef          	jal	ra,e88272ba <CreateNewCacheEntry>
    e88289ae:	84aa                	mv	s1,a0
                                if (negcr)
    e88289b0:	c939                	beqz	a0,e8828a06 <mDNSCoreReceiveNoUnicastAnswers+0x4f0>
                                    if (!AddNSECSForCacheRecord(m, NSECRecords, negcr, rcode))
    e88289b2:	76a2                	ld	a3,40(sp)
                                    negcr->CRDNSSECQuestion = 0;
    e88289b4:	060506a3          	sb	zero,109(a0)
                                    if (!AddNSECSForCacheRecord(m, NSECRecords, negcr, rcode))
    e88289b8:	862a                	mv	a2,a0
    e88289ba:	85d2                	mv	a1,s4
    e88289bc:	8522                	mv	a0,s0
    e88289be:	12e070ef          	jal	ra,e882faec <AddNSECSForCacheRecord>
    e88289c2:	000ac797          	auipc	a5,0xac
    e88289c6:	0b278793          	addi	a5,a5,178 # e88d4a74 <mDNS_LoggingEnabled>
    e88289ca:	e139                	bnez	a0,e8828a10 <mDNSCoreReceiveNoUnicastAnswers+0x4fa>
                                        LogInfo("mDNSCoreReceiveNoUnicastAnswers: AddNSECSForCacheRecord failed to add NSEC for negcr %s",
    e88289cc:	439c                	lw	a5,0(a5)
    e88289ce:	c38d                	beqz	a5,e88289f0 <mDNSCoreReceiveNoUnicastAnswers+0x4da>
    e88289d0:	788c                	ld	a1,48(s1)
    e88289d2:	03b40613          	addi	a2,s0,59
    e88289d6:	00848513          	addi	a0,s1,8
    e88289da:	0591                	addi	a1,a1,4
    e88289dc:	838ee0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88289e0:	862a                	mv	a2,a0
    e88289e2:	00080597          	auipc	a1,0x80
    e88289e6:	a8e58593          	addi	a1,a1,-1394 # e88a8470 <hexValues.12413+0x4c0>
    e88289ea:	450d                	li	a0,3
    e88289ec:	2c1060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                                        FreeNSECRecords(m, NSECRecords);
    e88289f0:	85d2                	mv	a1,s4
    e88289f2:	8522                	mv	a0,s0
    e88289f4:	bb5f70ef          	jal	ra,e88205a8 <FreeNSECRecords>
                                    negcr->DelayDelivery = 0;
    e88289f8:	0404aa23          	sw	zero,84(s1)
                                    CacheRecordDeferredAdd(m, negcr);
    e88289fc:	85a6                	mv	a1,s1
    e88289fe:	8522                	mv	a0,s0
    e8828a00:	ae4fe0ef          	jal	ra,e8826ce4 <CacheRecordDeferredAdd>
                                    NSECRecords = mDNSNULL;
    e8828a04:	4a01                	li	s4,0
                                m->rec.r.resrec.RecordType = 0; // Clear RecordType to show we're not still using it
    e8828a06:	018407b3          	add	a5,s0,s8
    e8828a0a:	4e078023          	sb	zero,1248(a5)
                                break;
    e8828a0e:	a215                	j	e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
                                        negcr->CRDNSSECQuestion = 1;
    e8828a10:	4705                	li	a4,1
                                        LogInfo("mDNSCoreReceiveNoUnicastAnswers: AddNSECSForCacheRecord added neg NSEC for %s", CRDisplayString(m, negcr));
    e8828a12:	439c                	lw	a5,0(a5)
                                        negcr->CRDNSSECQuestion = 1;
    e8828a14:	06e486a3          	sb	a4,109(s1)
                                        LogInfo("mDNSCoreReceiveNoUnicastAnswers: AddNSECSForCacheRecord added neg NSEC for %s", CRDisplayString(m, negcr));
    e8828a18:	d3e5                	beqz	a5,e88289f8 <mDNSCoreReceiveNoUnicastAnswers+0x4e2>
    e8828a1a:	788c                	ld	a1,48(s1)
    e8828a1c:	03b40613          	addi	a2,s0,59
    e8828a20:	00848513          	addi	a0,s1,8
    e8828a24:	0591                	addi	a1,a1,4
    e8828a26:	fefed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8828a2a:	862a                	mv	a2,a0
    e8828a2c:	00080597          	auipc	a1,0x80
    e8828a30:	a9c58593          	addi	a1,a1,-1380 # e88a84c8 <hexValues.12413+0x518>
    e8828a34:	450d                	li	a0,3
    e8828a36:	277060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8828a3a:	bf7d                	j	e88289f8 <mDNSCoreReceiveNoUnicastAnswers+0x4e2>
                                negcr = CreateNewCacheEntry(m, HashSlotFromNameHash(hash), cg, 1, mDNStrue, mDNSNULL);
    e8828a3c:	1f300593          	li	a1,499
    e8828a40:	02bd75bb          	remuw	a1,s10,a1
    e8828a44:	4781                	li	a5,0
    e8828a46:	4705                	li	a4,1
    e8828a48:	4685                	li	a3,1
    e8828a4a:	8522                	mv	a0,s0
    e8828a4c:	86ffe0ef          	jal	ra,e88272ba <CreateNewCacheEntry>
    e8828a50:	8d2a                	mv	s10,a0
                                if (negcr)
    e8828a52:	c139                	beqz	a0,e8828a98 <mDNSCoreReceiveNoUnicastAnswers+0x582>
                                    negcr->CRDNSSECQuestion = 0;
    e8828a54:	060506a3          	sb	zero,109(a0)
                                    if (DNSSECQuestion(qptr))
    e8828a58:	3244c783          	lbu	a5,804(s1)
    e8828a5c:	eb91                	bnez	a5,e8828a70 <mDNSCoreReceiveNoUnicastAnswers+0x55a>
    e8828a5e:	14a4c783          	lbu	a5,330(s1)
    e8828a62:	e799                	bnez	a5,e8828a70 <mDNSCoreReceiveNoUnicastAnswers+0x55a>
    e8828a64:	3254c783          	lbu	a5,805(s1)
    e8828a68:	c799                	beqz	a5,e8828a76 <mDNSCoreReceiveNoUnicastAnswers+0x560>
    e8828a6a:	3264c783          	lbu	a5,806(s1)
    e8828a6e:	c781                	beqz	a5,e8828a76 <mDNSCoreReceiveNoUnicastAnswers+0x560>
                                        negcr->CRDNSSECQuestion = 1;
    e8828a70:	4785                	li	a5,1
    e8828a72:	06fd06a3          	sb	a5,109(s10)
                                    negcr->DelayDelivery = 0;
    e8828a76:	040d2a23          	sw	zero,84(s10)
                                    if (SOARecord)
    e8828a7a:	000b0a63          	beqz	s6,e8828a8e <mDNSCoreReceiveNoUnicastAnswers+0x578>
                                        if (negcr->soa)
    e8828a7e:	080d3583          	ld	a1,128(s10)
    e8828a82:	c581                	beqz	a1,e8828a8a <mDNSCoreReceiveNoUnicastAnswers+0x574>
                                            ReleaseCacheRecord(m, negcr->soa);
    e8828a84:	8522                	mv	a0,s0
    e8828a86:	841f70ef          	jal	ra,e88202c6 <ReleaseCacheRecord>
                                        negcr->soa = SOARecord;
    e8828a8a:	096d3023          	sd	s6,128(s10)
                                    CacheRecordDeferredAdd(m, negcr);
    e8828a8e:	85ea                	mv	a1,s10
    e8828a90:	8522                	mv	a0,s0
    e8828a92:	a52fe0ef          	jal	ra,e8826ce4 <CacheRecordDeferredAdd>
    e8828a96:	4b01                	li	s6,0
                            m->rec.r.responseFlags = zeroID;
    e8828a98:	0007b797          	auipc	a5,0x7b
    e8828a9c:	b0878793          	addi	a5,a5,-1272 # e88a35a0 <zeroID>
    e8828aa0:	7702                	ld	a4,32(sp)
    e8828aa2:	0007d783          	lhu	a5,0(a5)
                            m->rec.r.resrec.RecordType = 0; // Clear RecordType to show we're not still using it
    e8828aa6:	4e070023          	sb	zero,1248(a4)
                            m->rec.r.responseFlags = zeroID;
    e8828aaa:	54f71323          	sh	a5,1350(a4)
                            if (!repeat) break;
    e8828aae:	080c8263          	beqz	s9,e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
                            name = (const domainname *)(name->c + 1 + name->c[0]);
    e8828ab2:	00094783          	lbu	a5,0(s2)
                            repeat--;
    e8828ab6:	3cfd                	addiw	s9,s9,-1
                            name = (const domainname *)(name->c + 1 + name->c[0]);
    e8828ab8:	0785                	addi	a5,a5,1
    e8828aba:	993e                	add	s2,s2,a5
                            hash = DomainNameHashValue(name);
    e8828abc:	854a                	mv	a0,s2
    e8828abe:	e31eb0ef          	jal	ra,e88148ee <DomainNameHashValue>
    e8828ac2:	00050d1b          	sext.w	s10,a0
                        {
    e8828ac6:	b551                	j	e882894a <mDNSCoreReceiveNoUnicastAnswers+0x434>
            if (!InterfaceID && q.qtype != kDNSType_SOA && IsLocalDomain(&q.qname))
    e8828ac8:	67c2                	ld	a5,16(sp)
    e8828aca:	e7a5                	bnez	a5,e8828b32 <mDNSCoreReceiveNoUnicastAnswers+0x61c>
    e8828acc:	37c15703          	lhu	a4,892(sp)
    e8828ad0:	4799                	li	a5,6
    e8828ad2:	c0f700e3          	beq	a4,a5,e88286d2 <mDNSCoreReceiveNoUnicastAnswers+0x1bc>
    e8828ad6:	1ce8                	addi	a0,sp,636
    e8828ad8:	dcaea0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8828adc:	be050be3          	beqz	a0,e88286d2 <mDNSCoreReceiveNoUnicastAnswers+0x1bc>
                if (!rr)
    e8828ae0:	000ac797          	auipc	a5,0xac
    e8828ae4:	f9478793          	addi	a5,a5,-108 # e88d4a74 <mDNS_LoggingEnabled>
    e8828ae8:	439c                	lw	a5,0(a5)
    e8828aea:	bc0a94e3          	bnez	s5,e88286b2 <mDNSCoreReceiveNoUnicastAnswers+0x19c>
                    LogInfo("mDNSCoreReceiveNoUnicastAnswers: Generate negative response for %##s (%s)", q.qname.c, DNSTypeName(q.qtype));
    e8828aee:	cf91                	beqz	a5,e8828b0a <mDNSCoreReceiveNoUnicastAnswers+0x5f4>
    e8828af0:	37c15503          	lhu	a0,892(sp)
    e8828af4:	96ced0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8828af8:	86aa                	mv	a3,a0
    e8828afa:	1cf0                	addi	a2,sp,636
    e8828afc:	00080597          	auipc	a1,0x80
    e8828b00:	80c58593          	addi	a1,a1,-2036 # e88a8308 <hexValues.12413+0x358>
    e8828b04:	450d                	li	a0,3
    e8828b06:	1a7060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    m->CurrentQuestion = qptr;
    e8828b0a:	2c943423          	sd	s1,712(s0)
                    if (qptr->ProxyQuestion)
    e8828b0e:	3254c783          	lbu	a5,805(s1)
    e8828b12:	c789                	beqz	a5,e8828b1c <mDNSCoreReceiveNoUnicastAnswers+0x606>
                        qptr->responseFlags = response->h.flags;
    e8828b14:	002bd783          	lhu	a5,2(s7)
    e8828b18:	1ef49223          	sh	a5,484(s1)
                    GenerateNegativeResponse(m, mDNSInterface_Any, QC_forceresponse);
    e8828b1c:	0007a797          	auipc	a5,0x7a
    e8828b20:	24478793          	addi	a5,a5,580 # e88a2d60 <mDNSInterface_Any>
    e8828b24:	638c                	ld	a1,0(a5)
    e8828b26:	460d                	li	a2,3
    e8828b28:	8522                	mv	a0,s0
    e8828b2a:	d66fe0ef          	jal	ra,e8827090 <GenerateNegativeResponse>
                    m->CurrentQuestion = mDNSNULL;
    e8828b2e:	2c043423          	sd	zero,712(s0)
    for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e8828b32:	67e2                	ld	a5,24(sp)
    e8828b34:	2785                	addiw	a5,a5,1
    e8828b36:	ec3e                	sd	a5,24(sp)
    e8828b38:	b4a9                	j	e8828582 <mDNSCoreReceiveNoUnicastAnswers+0x6c>

00000000e8828b3a <mDNSCoreReceiveResponse>:
{
    e8828b3a:	b3010113          	addi	sp,sp,-1232
    e8828b3e:	4c813023          	sd	s0,1216(sp)
    e8828b42:	4b313423          	sd	s3,1192(sp)
    e8828b46:	49613823          	sd	s6,1168(sp)
    e8828b4a:	49813023          	sd	s8,1152(sp)
    e8828b4e:	47b13423          	sd	s11,1128(sp)
    e8828b52:	4c113423          	sd	ra,1224(sp)
    e8828b56:	4a913c23          	sd	s1,1208(sp)
    e8828b5a:	4b213823          	sd	s2,1200(sp)
    e8828b5e:	4b413023          	sd	s4,1184(sp)
    e8828b62:	49513c23          	sd	s5,1176(sp)
    e8828b66:	49713423          	sd	s7,1160(sp)
    e8828b6a:	47913c23          	sd	s9,1144(sp)
    e8828b6e:	47a13823          	sd	s10,1136(sp)
    e8828b72:	f836                	sd	a3,48(sp)
    e8828b74:	0ae11023          	sh	a4,160(sp)
    e8828b78:	03011c23          	sh	a6,56(sp)
    mDNSBool ResponseMCast    = dstaddr && mDNSAddrIsDNSMulticast(dstaddr);
    e8828b7c:	ec82                	sd	zero,88(sp)
{
    e8828b7e:	842a                	mv	s0,a0
    e8828b80:	89ae                	mv	s3,a1
    e8828b82:	8c32                	mv	s8,a2
    e8828b84:	8dbe                	mv	s11,a5
    e8828b86:	8b46                	mv	s6,a7
    mDNSBool ResponseMCast    = dstaddr && mDNSAddrIsDNSMulticast(dstaddr);
    e8828b88:	cb81                	beqz	a5,e8828b98 <mDNSCoreReceiveResponse+0x5e>
    e8828b8a:	853e                	mv	a0,a5
    e8828b8c:	c02ea0ef          	jal	ra,e8812f8e <mDNSAddrIsDNSMulticast>
    e8828b90:	2501                	sext.w	a0,a0
    e8828b92:	00a037b3          	snez	a5,a0
    e8828b96:	ecbe                	sd	a5,88(sp)
    mDNSBool ResponseSrcLocal = !srcaddr || mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
    e8828b98:	4785                	li	a5,1
    e8828b9a:	e93e                	sd	a5,144(sp)
    e8828b9c:	77c2                	ld	a5,48(sp)
    e8828b9e:	cb91                	beqz	a5,e8828bb2 <mDNSCoreReceiveResponse+0x78>
    e8828ba0:	863e                	mv	a2,a5
    e8828ba2:	85da                	mv	a1,s6
    e8828ba4:	8522                	mv	a0,s0
    e8828ba6:	e5bf50ef          	jal	ra,e881ea00 <mDNS_AddressIsLocalSubnet>
    e8828baa:	2501                	sext.w	a0,a0
    e8828bac:	00a037b3          	snez	a5,a0
    e8828bb0:	e93e                	sd	a5,144(sp)
    uDNS_LLQType LLQType      = uDNS_recvLLQResponse(m, response, end, srcaddr, srcport, &llqMatch);
    e8828bb2:	0a015703          	lhu	a4,160(sp)
    e8828bb6:	76c2                	ld	a3,48(sp)
    e8828bb8:	11bc                	addi	a5,sp,232
    e8828bba:	8662                	mv	a2,s8
    e8828bbc:	85ce                	mv	a1,s3
    e8828bbe:	8522                	mv	a0,s0
    DNSQuestion *llqMatch = mDNSNULL;
    e8828bc0:	f582                	sd	zero,232(sp)
    uDNS_LLQType LLQType      = uDNS_recvLLQResponse(m, response, end, srcaddr, srcport, &llqMatch);
    e8828bc2:	6de0a0ef          	jal	ra,e88332a0 <uDNS_recvLLQResponse>
    e8828bc6:	ec2a                	sd	a0,24(sp)
    CacheRecord *CacheFlushRecords = (CacheRecord*)1;
    e8828bc8:	4785                	li	a5,1
    e8828bca:	f9be                	sd	a5,240(sp)
    CacheRecord *NSECRecords = mDNSNULL;
    e8828bcc:	fd82                	sd	zero,248(sp)
    CacheRecord *McastNSEC3Records = mDNSNULL;
    e8828bce:	e202                	sd	zero,256(sp)
    if (!InterfaceID)
    e8828bd0:	000b1463          	bnez	s6,e8828bd8 <mDNSCoreReceiveResponse+0x9e>
    e8828bd4:	0890106f          	j	e882a45c <mDNSCoreReceiveResponse+0x1922>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8828bd8:	678d                	lui	a5,0x3
    e8828bda:	97a2                	add	a5,a5,s0
    e8828bdc:	1e07b783          	ld	a5,480(a5) # 31e0 <memcmp-0xe87fce20>
        if (intf->InterfaceID == InterfaceID &&
    e8828be0:	6689                	lui	a3,0x2
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8828be2:	f03e                	sd	a5,32(sp)
            intf->ip.type == mDNSAddrType_IPv4 && mDNSv4AddressIsLinkLocal(&intf->ip.ip.v4))
    e8828be4:	0fea97b7          	lui	a5,0xfea9
    e8828be8:	07d2                	slli	a5,a5,0x14
    e8828bea:	0791                	addi	a5,a5,4
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8828bec:	7702                	ld	a4,32(sp)
    e8828bee:	eb49                	bnez	a4,e8828c80 <mDNSCoreReceiveResponse+0x146>
    if (LLQType == uDNS_LLQ_Ignore) return;
    e8828bf0:	6762                	ld	a4,24(sp)
    e8828bf2:	4785                	li	a5,1
    e8828bf4:	16f70463          	beq	a4,a5,e8828d5c <mDNSCoreReceiveResponse+0x222>
    int firstauthority  =                   response->h.numAnswers;
    e8828bf8:	0069d783          	lhu	a5,6(s3)
    e8828bfc:	e0be                	sd	a5,64(sp)
    int firstadditional = firstauthority  + response->h.numAuthorities;
    e8828bfe:	0089d783          	lhu	a5,8(s3)
    e8828c02:	e4be                	sd	a5,72(sp)
    int totalrecords    = firstadditional + response->h.numAdditionals;
    e8828c04:	00a9d783          	lhu	a5,10(s3)
    e8828c08:	e8be                	sd	a5,80(sp)
    if (ResponseMCast || LLQType == uDNS_LLQ_Events || (response->h.flags.b[0] & kDNSFlag0_TC))
    e8828c0a:	67e6                	ld	a5,88(sp)
    e8828c0c:	eb89                	bnez	a5,e8828c1e <mDNSCoreReceiveResponse+0xe4>
    e8828c0e:	478d                	li	a5,3
    e8828c10:	00f70763          	beq	a4,a5,e8828c1e <mDNSCoreReceiveResponse+0xe4>
    e8828c14:	0029c783          	lbu	a5,2(s3)
    e8828c18:	8b89                	andi	a5,a5,2
    e8828c1a:	f8be                	sd	a5,112(sp)
    e8828c1c:	c3d1                	beqz	a5,e8828ca0 <mDNSCoreReceiveResponse+0x166>
        ptr = LocateAnswers(response, end);
    e8828c1e:	85e2                	mv	a1,s8
    e8828c20:	854e                	mv	a0,s3
    e8828c22:	cabec0ef          	jal	ra,e88158cc <LocateAnswers>
    e8828c26:	8baa                	mv	s7,a0
    mDNSBool DNSSECQuestion = mDNSfalse;
    e8828c28:	f882                	sd	zero,112(sp)
    mDNSu8 rcode = '\0';
    e8828c2a:	e802                	sd	zero,16(sp)
    DNSQuestion *unicastQuestion = mDNSNULL;
    e8828c2c:	4481                	li	s1,0
    if (mDNSOpaque16IsZero(response->h.id))
    e8828c2e:	0009d783          	lhu	a5,0(s3)
    e8828c32:	eb99                	bnez	a5,e8828c48 <mDNSCoreReceiveResponse+0x10e>
    if (!response->h.numAuthorities)
    e8828c34:	0089d783          	lhu	a5,8(s3)
    e8828c38:	cb81                	beqz	a5,e8828c48 <mDNSCoreReceiveResponse+0x10e>
    e8828c3a:	0218                	addi	a4,sp,256
    e8828c3c:	86da                	mv	a3,s6
    e8828c3e:	8662                	mv	a2,s8
    e8828c40:	85ce                	mv	a1,s3
    e8828c42:	8522                	mv	a0,s0
    e8828c44:	b73fe0ef          	jal	ra,e88277b6 <mDNSParseNSEC3Records.part.56>
    int firstauthority  =                   response->h.numAnswers;
    e8828c48:	4786                	lw	a5,64(sp)
        ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, RecordType, &m->rec);
    e8828c4a:	6925                	lui	s2,0x9
    int totalrecords    = firstadditional + response->h.numAdditionals;
    e8828c4c:	4a81                	li	s5,0
    int firstauthority  =                   response->h.numAnswers;
    e8828c4e:	f93e                	sd	a5,176(sp)
    int firstadditional = firstauthority  + response->h.numAuthorities;
    e8828c50:	67a6                	ld	a5,72(sp)
    e8828c52:	774a                	ld	a4,176(sp)
    int totalrecords    = firstadditional + response->h.numAdditionals;
    e8828c54:	e502                	sd	zero,136(sp)
    e8828c56:	e102                	sd	zero,128(sp)
    int firstadditional = firstauthority  + response->h.numAuthorities;
    e8828c58:	9fb9                	addw	a5,a5,a4
    int totalrecords    = firstadditional + response->h.numAdditionals;
    e8828c5a:	6746                	ld	a4,80(sp)
    int firstadditional = firstauthority  + response->h.numAuthorities;
    e8828c5c:	fd3e                	sd	a5,184(sp)
    int totalrecords    = firstadditional + response->h.numAdditionals;
    e8828c5e:	e882                	sd	zero,80(sp)
    e8828c60:	97ba                	add	a5,a5,a4
    e8828c62:	e1be                	sd	a5,192(sp)
    e8828c64:	199c                	addi	a5,sp,240
    e8828c66:	f0be                	sd	a5,96(sp)
    e8828c68:	19bc                	addi	a5,sp,248
    e8828c6a:	f53e                	sd	a5,168(sp)
        ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, RecordType, &m->rec);
    e8828c6c:	4d890793          	addi	a5,s2,1240 # 94d8 <memcmp-0xe87f6b28>
    e8828c70:	97a2                	add	a5,a5,s0
    e8828c72:	f43e                	sd	a5,40(sp)
                    if (IdenticalSameNameRecord(&m->rec.r.resrec, &rr->resrec))
    e8828c74:	57fd                	li	a5,-1
    e8828c76:	1782                	slli	a5,a5,0x20
    e8828c78:	83c1                	srli	a5,a5,0x10
    int totalrecords    = firstadditional + response->h.numAdditionals;
    e8828c7a:	e482                	sd	zero,72(sp)
                    if (IdenticalSameNameRecord(&m->rec.r.resrec, &rr->resrec))
    e8828c7c:	e0be                	sd	a5,64(sp)
    e8828c7e:	ae1d                	j	e8828fb4 <mDNSCoreReceiveResponse+0x47a>
        if (intf->InterfaceID == InterfaceID &&
    e8828c80:	7702                	ld	a4,32(sp)
    e8828c82:	9736                	add	a4,a4,a3
    e8828c84:	9f073603          	ld	a2,-1552(a4)
    e8828c88:	00cb1863          	bne	s6,a2,e8828c98 <mDNSCoreReceiveResponse+0x15e>
            intf->ip.type == mDNSAddrType_IPv4 && mDNSv4AddressIsLinkLocal(&intf->ip.ip.v4))
    e8828c8c:	9f873703          	ld	a4,-1544(a4)
    e8828c90:	bc07370b          	extu	a4,a4,47,0
    e8828c94:	f4f70ee3          	beq	a4,a5,e8828bf0 <mDNSCoreReceiveResponse+0xb6>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e8828c98:	7702                	ld	a4,32(sp)
    e8828c9a:	6318                	ld	a4,0(a4)
    e8828c9c:	f03a                	sd	a4,32(sp)
    e8828c9e:	b7b9                	j	e8828bec <mDNSCoreReceiveResponse+0xb2>
        rcode = (mDNSu8)(response->h.flags.b[1] & kDNSFlag1_RC_Mask);
    e8828ca0:	0039c783          	lbu	a5,3(s3)
        failure = !(rcode == kDNSFlag1_RC_NoErr || rcode == kDNSFlag1_RC_NXDomain || rcode == kDNSFlag1_RC_NotAuth);
    e8828ca4:	4705                	li	a4,1
    e8828ca6:	f43a                	sd	a4,40(sp)
        rcode = (mDNSu8)(response->h.flags.b[1] & kDNSFlag1_RC_Mask);
    e8828ca8:	8bbd                	andi	a5,a5,15
    e8828caa:	e83e                	sd	a5,16(sp)
        failure = !(rcode == kDNSFlag1_RC_NoErr || rcode == kDNSFlag1_RC_NXDomain || rcode == kDNSFlag1_RC_NotAuth);
    e8828cac:	6742                	ld	a4,16(sp)
    e8828cae:	47a5                	li	a5,9
    e8828cb0:	00e7ea63          	bltu	a5,a4,e8828cc4 <mDNSCoreReceiveResponse+0x18a>
    e8828cb4:	20900793          	li	a5,521
    e8828cb8:	00e7d7b3          	srl	a5,a5,a4
    e8828cbc:	fff7c793          	not	a5,a5
    e8828cc0:	8b85                	andi	a5,a5,1
    e8828cc2:	f43e                	sd	a5,40(sp)
    const mDNSu8 *ptr   = response->data;
    e8828cc4:	00c98793          	addi	a5,s3,12
    e8828cc8:	f0be                	sd	a5,96(sp)
    e8828cca:	8bbe                	mv	s7,a5
            if (ptr && (qptr = ExpectingUnicastResponseForQuestion(m, dstport, response->h.id, &q, !dstaddr)))
    e8828ccc:	001db793          	seqz	a5,s11
        returnEarly = mDNSfalse;
    e8828cd0:	4a81                	li	s5,0
        for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e8828cd2:	4a01                	li	s4,0
    DNSQuestion *unicastQuestion = mDNSNULL;
    e8828cd4:	4481                	li	s1,0
            if (ptr && (qptr = ExpectingUnicastResponseForQuestion(m, dstport, response->h.id, &q, !dstaddr)))
    e8828cd6:	e13e                	sd	a5,128(sp)
    e8828cd8:	000ac917          	auipc	s2,0xac
    e8828cdc:	d9c90913          	addi	s2,s2,-612 # e88d4a74 <mDNS_LoggingEnabled>
        for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e8828ce0:	0049d783          	lhu	a5,4(s3)
    e8828ce4:	00fa5663          	bge	s4,a5,e8828cf0 <mDNSCoreReceiveResponse+0x1b6>
    e8828ce8:	000b8463          	beqz	s7,e8828cf0 <mDNSCoreReceiveResponse+0x1b6>
    e8828cec:	0b8be563          	bltu	s7,s8,e8828d96 <mDNSCoreReceiveResponse+0x25c>
        if (returnEarly)
    e8828cf0:	260a8b63          	beqz	s5,e8828f66 <mDNSCoreReceiveResponse+0x42c>
            LogInfo("Ignoring %2d Answer%s %2d Authorit%s %2d Additional%s",
    e8828cf4:	000ac797          	auipc	a5,0xac
    e8828cf8:	d8078793          	addi	a5,a5,-640 # e88d4a74 <mDNS_LoggingEnabled>
    e8828cfc:	439c                	lw	a5,0(a5)
    e8828cfe:	cfb9                	beqz	a5,e8828d5c <mDNSCoreReceiveResponse+0x222>
    e8828d00:	0069d603          	lhu	a2,6(s3)
    e8828d04:	4785                	li	a5,1
    e8828d06:	00080697          	auipc	a3,0x80
    e8828d0a:	3d268693          	addi	a3,a3,978 # e88a90d8 <hexValues.12413+0x1128>
    e8828d0e:	00f60663          	beq	a2,a5,e8828d1a <mDNSCoreReceiveResponse+0x1e0>
    e8828d12:	00080697          	auipc	a3,0x80
    e8828d16:	3ce68693          	addi	a3,a3,974 # e88a90e0 <hexValues.12413+0x1130>
    e8828d1a:	0089d703          	lhu	a4,8(s3)
    e8828d1e:	4585                	li	a1,1
    e8828d20:	00080797          	auipc	a5,0x80
    e8828d24:	3c878793          	addi	a5,a5,968 # e88a90e8 <hexValues.12413+0x1138>
    e8828d28:	00b70663          	beq	a4,a1,e8828d34 <mDNSCoreReceiveResponse+0x1fa>
    e8828d2c:	00080797          	auipc	a5,0x80
    e8828d30:	3c478793          	addi	a5,a5,964 # e88a90f0 <hexValues.12413+0x1140>
    e8828d34:	00a9d803          	lhu	a6,10(s3)
    e8828d38:	4585                	li	a1,1
    e8828d3a:	00098897          	auipc	a7,0x98
    e8828d3e:	53688893          	addi	a7,a7,1334 # e88c1270 <kHTTPServerClass+0x90>
    e8828d42:	00b80663          	beq	a6,a1,e8828d4e <mDNSCoreReceiveResponse+0x214>
    e8828d46:	00085897          	auipc	a7,0x85
    e8828d4a:	08288893          	addi	a7,a7,130 # e88addc8 <kOn.10632+0x1e80>
    e8828d4e:	00080597          	auipc	a1,0x80
    e8828d52:	98258593          	addi	a1,a1,-1662 # e88a86d0 <hexValues.12413+0x720>
    e8828d56:	450d                	li	a0,3
    e8828d58:	754060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8828d5c:	4c813083          	ld	ra,1224(sp)
    e8828d60:	4c013403          	ld	s0,1216(sp)
    e8828d64:	4b813483          	ld	s1,1208(sp)
    e8828d68:	4b013903          	ld	s2,1200(sp)
    e8828d6c:	4a813983          	ld	s3,1192(sp)
    e8828d70:	4a013a03          	ld	s4,1184(sp)
    e8828d74:	49813a83          	ld	s5,1176(sp)
    e8828d78:	49013b03          	ld	s6,1168(sp)
    e8828d7c:	48813b83          	ld	s7,1160(sp)
    e8828d80:	48013c03          	ld	s8,1152(sp)
    e8828d84:	47813c83          	ld	s9,1144(sp)
    e8828d88:	47013d03          	ld	s10,1136(sp)
    e8828d8c:	46813d83          	ld	s11,1128(sp)
    e8828d90:	4d010113          	addi	sp,sp,1232
    e8828d94:	8082                	ret
            ptr = getQuestion(response, ptr, end, InterfaceID, &q);
    e8828d96:	85de                	mv	a1,s7
    e8828d98:	0238                	addi	a4,sp,264
    e8828d9a:	86da                	mv	a3,s6
    e8828d9c:	8662                	mv	a2,s8
    e8828d9e:	854e                	mv	a0,s3
    e8828da0:	a9dec0ef          	jal	ra,e881583c <getQuestion>
    e8828da4:	8baa                	mv	s7,a0
            if (ptr && (qptr = ExpectingUnicastResponseForQuestion(m, dstport, response->h.id, &q, !dstaddr)))
    e8828da6:	c94d                	beqz	a0,e8828e58 <mDNSCoreReceiveResponse+0x31e>
    e8828da8:	670a                	ld	a4,128(sp)
    e8828daa:	0009d603          	lhu	a2,0(s3)
    e8828dae:	03815583          	lhu	a1,56(sp)
    e8828db2:	2b843503          	ld	a0,696(s0)
    e8828db6:	0234                	addi	a3,sp,264
    e8828db8:	97af40ef          	jal	ra,e881cf32 <ExpectingUnicastResponseForQuestion.isra.23>
    e8828dbc:	8caa                	mv	s9,a0
    e8828dbe:	cd49                	beqz	a0,e8828e58 <mDNSCoreReceiveResponse+0x31e>
                if (!failure)
    e8828dc0:	77a2                	ld	a5,40(sp)
    e8828dc2:	12079463          	bnez	a5,e8828eea <mDNSCoreReceiveResponse+0x3b0>
                    CacheGroup *cg = CacheGroupForName(m, q.qnamehash, &q.qname);
    e8828dc6:	11012583          	lw	a1,272(sp)
    e8828dca:	0e70                	addi	a2,sp,796
    e8828dcc:	8522                	mv	a0,s0
    e8828dce:	87bf50ef          	jal	ra,e881e648 <CacheGroupForName>
    e8828dd2:	8d2a                	mv	s10,a0
                    if (!mDNSOpaque16IsZero(response->h.id))
    e8828dd4:	0009d703          	lhu	a4,0(s3)
    e8828dd8:	c725                	beqz	a4,e8828e40 <mDNSCoreReceiveResponse+0x306>
                        if (qptr->qDNSServer && DNSSECQuestion(qptr))
    e8828dda:	168cb703          	ld	a4,360(s9)
    e8828dde:	cb39                	beqz	a4,e8828e34 <mDNSCoreReceiveResponse+0x2fa>
    e8828de0:	324cc703          	lbu	a4,804(s9)
    e8828de4:	eb19                	bnez	a4,e8828dfa <mDNSCoreReceiveResponse+0x2c0>
    e8828de6:	14acc703          	lbu	a4,330(s9)
    e8828dea:	eb01                	bnez	a4,e8828dfa <mDNSCoreReceiveResponse+0x2c0>
    e8828dec:	325cc703          	lbu	a4,805(s9)
    e8828df0:	84e6                	mv	s1,s9
    e8828df2:	c739                	beqz	a4,e8828e40 <mDNSCoreReceiveResponse+0x306>
    e8828df4:	326cc703          	lbu	a4,806(s9)
    e8828df8:	c721                	beqz	a4,e8828e40 <mDNSCoreReceiveResponse+0x306>
                            LogInfo("mDNSCoreReceiveResponse: Setting aware for %##s (%s) on %#a", qptr->qname.c,
    e8828dfa:	00092703          	lw	a4,0(s2)
    e8828dfe:	c315                	beqz	a4,e8828e22 <mDNSCoreReceiveResponse+0x2e8>
    e8828e00:	314cd503          	lhu	a0,788(s9)
    e8828e04:	e5dec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8828e08:	86aa                	mv	a3,a0
    e8828e0a:	168cb703          	ld	a4,360(s9)
    e8828e0e:	214c8613          	addi	a2,s9,532
    e8828e12:	0007f597          	auipc	a1,0x7f
    e8828e16:	77658593          	addi	a1,a1,1910 # e88a8588 <hexValues.12413+0x5d8>
    e8828e1a:	0751                	addi	a4,a4,20
    e8828e1c:	450d                	li	a0,3
    e8828e1e:	68e060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            qptr->qDNSServer->DNSSECAware = mDNStrue;
    e8828e22:	168cb683          	ld	a3,360(s9)
    e8828e26:	4705                	li	a4,1
    e8828e28:	14e681a3          	sb	a4,323(a3)
                            qptr->qDNSServer->req_DO = mDNStrue;
    e8828e2c:	168cb683          	ld	a3,360(s9)
    e8828e30:	14e68123          	sb	a4,322(a3)
                        if (qptr->ValidatingResponse)
    e8828e34:	14acc703          	lbu	a4,330(s9)
    e8828e38:	84e6                	mv	s1,s9
    e8828e3a:	c319                	beqz	a4,e8828e40 <mDNSCoreReceiveResponse+0x306>
                            DNSSECQuestion = mDNStrue;
    e8828e3c:	4785                	li	a5,1
    e8828e3e:	f8be                	sd	a5,112(sp)
                    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8828e40:	000d0c63          	beqz	s10,e8828e58 <mDNSCoreReceiveResponse+0x31e>
                                LogInfo("mDNSCoreReceiveResponse: CRDNSSECQuestion set for record %s, question %##s (%s)", CRDisplayString(m, rr),
    e8828e44:	03b40793          	addi	a5,s0,59
                    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8828e48:	010d3d03          	ld	s10,16(s10)
                                LogInfo("mDNSCoreReceiveResponse: CRDNSSECQuestion set for record %s, question %##s (%s)", CRDisplayString(m, rr),
    e8828e4c:	f4be                	sd	a5,104(sp)
    e8828e4e:	21448793          	addi	a5,s1,532
    e8828e52:	fcbe                	sd	a5,120(sp)
                    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8828e54:	000d1463          	bnez	s10,e8828e5c <mDNSCoreReceiveResponse+0x322>
        for (i = 0; i < response->h.numQuestions && ptr && ptr < end; i++)
    e8828e58:	2a05                	addiw	s4,s4,1
    e8828e5a:	b559                	j	e8828ce0 <mDNSCoreReceiveResponse+0x1a6>
                        if (SameNameRecordAnswersQuestion(&rr->resrec, qptr))
    e8828e5c:	008d0893          	addi	a7,s10,8
    e8828e60:	85e6                	mv	a1,s9
    e8828e62:	8546                	mv	a0,a7
    e8828e64:	e546                	sd	a7,136(sp)
    e8828e66:	824ed0ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e8828e6a:	cd2d                	beqz	a0,e8828ee4 <mDNSCoreReceiveResponse+0x3aa>
                            rr->TimeRcvd          = m->timenow - TicksTTL(rr) - 1;
    e8828e6c:	000ac797          	auipc	a5,0xac
    e8828e70:	c1478793          	addi	a5,a5,-1004 # e88d4a80 <mDNSPlatformOneSecond>
    e8828e74:	4390                	lw	a2,0(a5)
    e8828e76:	010d2683          	lw	a3,16(s10)
    e8828e7a:	24042703          	lw	a4,576(s0)
                            rr->UnansweredQueries = MaxUnansweredQueries;
    e8828e7e:	4791                	li	a5,4
                            rr->TimeRcvd          = m->timenow - TicksTTL(rr) - 1;
    e8828e80:	02c686bb          	mulw	a3,a3,a2
    e8828e84:	377d                	addiw	a4,a4,-1
                            rr->UnansweredQueries = MaxUnansweredQueries;
    e8828e86:	06fd1623          	sh	a5,108(s10)
                            rr->TimeRcvd          = m->timenow - TicksTTL(rr) - 1;
    e8828e8a:	9f15                	subw	a4,a4,a3
    e8828e8c:	04ed2823          	sw	a4,80(s10)
                            if (unicastQuestion && DNSSECQuestion(unicastQuestion))
    e8828e90:	c8b1                	beqz	s1,e8828ee4 <mDNSCoreReceiveResponse+0x3aa>
    e8828e92:	3244c703          	lbu	a4,804(s1)
    e8828e96:	68aa                	ld	a7,136(sp)
    e8828e98:	eb11                	bnez	a4,e8828eac <mDNSCoreReceiveResponse+0x372>
    e8828e9a:	14a4c703          	lbu	a4,330(s1)
    e8828e9e:	e719                	bnez	a4,e8828eac <mDNSCoreReceiveResponse+0x372>
    e8828ea0:	3254c703          	lbu	a4,805(s1)
    e8828ea4:	c321                	beqz	a4,e8828ee4 <mDNSCoreReceiveResponse+0x3aa>
    e8828ea6:	3264c703          	lbu	a4,806(s1)
    e8828eaa:	cf0d                	beqz	a4,e8828ee4 <mDNSCoreReceiveResponse+0x3aa>
                                LogInfo("mDNSCoreReceiveResponse: CRDNSSECQuestion set for record %s, question %##s (%s)", CRDisplayString(m, rr),
    e8828eac:	00092703          	lw	a4,0(s2)
    e8828eb0:	c71d                	beqz	a4,e8828ede <mDNSCoreReceiveResponse+0x3a4>
    e8828eb2:	030d3583          	ld	a1,48(s10)
    e8828eb6:	7626                	ld	a2,104(sp)
    e8828eb8:	8546                	mv	a0,a7
    e8828eba:	0591                	addi	a1,a1,4
    e8828ebc:	b59ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8828ec0:	e52a                	sd	a0,136(sp)
    e8828ec2:	3144d503          	lhu	a0,788(s1)
    e8828ec6:	d9bec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8828eca:	872a                	mv	a4,a0
    e8828ecc:	76e6                	ld	a3,120(sp)
    e8828ece:	662a                	ld	a2,136(sp)
    e8828ed0:	0007f597          	auipc	a1,0x7f
    e8828ed4:	6f858593          	addi	a1,a1,1784 # e88a85c8 <hexValues.12413+0x618>
    e8828ed8:	450d                	li	a0,3
    e8828eda:	5d2060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                                rr->CRDNSSECQuestion = 1;
    e8828ede:	4785                	li	a5,1
    e8828ee0:	06fd06a3          	sb	a5,109(s10)
                    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8828ee4:	000d3d03          	ld	s10,0(s10)
    e8828ee8:	b7b5                	j	e8828e54 <mDNSCoreReceiveResponse+0x31a>
                        if (DNSSECOptionalQuestion(qptr) && qptr->qDNSServer && !qptr->qDNSServer->DNSSECAware)
    e8828eea:	32454683          	lbu	a3,804(a0)
    e8828eee:	4709                	li	a4,2
    e8828ef0:	00092783          	lw	a5,0(s2)
    e8828ef4:	02e69f63          	bne	a3,a4,e8828f32 <mDNSCoreReceiveResponse+0x3f8>
    e8828ef8:	16853603          	ld	a2,360(a0)
    e8828efc:	ca1d                	beqz	a2,e8828f32 <mDNSCoreReceiveResponse+0x3f8>
    e8828efe:	14364703          	lbu	a4,323(a2)
    e8828f02:	eb05                	bnez	a4,e8828f32 <mDNSCoreReceiveResponse+0x3f8>
                            LogInfo("mDNSCoreReceiveResponse: Server %p responded with code %d to DNSSEC Query %##s (%s), clear DO flag",
    e8828f04:	c38d                	beqz	a5,e8828f26 <mDNSCoreReceiveResponse+0x3ec>
    e8828f06:	41c15503          	lhu	a0,1052(sp)
    e8828f0a:	f4b2                	sd	a2,104(sp)
    e8828f0c:	d55ec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8828f10:	87aa                	mv	a5,a0
    e8828f12:	66c2                	ld	a3,16(sp)
    e8828f14:	7626                	ld	a2,104(sp)
    e8828f16:	0e78                	addi	a4,sp,796
    e8828f18:	0007f597          	auipc	a1,0x7f
    e8828f1c:	70058593          	addi	a1,a1,1792 # e88a8618 <hexValues.12413+0x668>
    e8828f20:	450d                	li	a0,3
    e8828f22:	58a060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            qptr->qDNSServer->req_DO = mDNSfalse;
    e8828f26:	168cb783          	ld	a5,360(s9)
    e8828f2a:	14078123          	sb	zero,322(a5)
                    returnEarly = mDNStrue;
    e8828f2e:	4a85                	li	s5,1
    e8828f30:	b725                	j	e8828e58 <mDNSCoreReceiveResponse+0x31e>
                            LogInfo("mDNSCoreReceiveResponse: Server %p responded with code %d to query %##s (%s)",
    e8828f32:	c39d                	beqz	a5,e8828f58 <mDNSCoreReceiveResponse+0x41e>
    e8828f34:	168cb603          	ld	a2,360(s9)
    e8828f38:	41c15503          	lhu	a0,1052(sp)
    e8828f3c:	f4b2                	sd	a2,104(sp)
    e8828f3e:	d23ec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8828f42:	87aa                	mv	a5,a0
    e8828f44:	66c2                	ld	a3,16(sp)
    e8828f46:	7626                	ld	a2,104(sp)
    e8828f48:	0e78                	addi	a4,sp,796
    e8828f4a:	0007f597          	auipc	a1,0x7f
    e8828f4e:	73658593          	addi	a1,a1,1846 # e88a8680 <hexValues.12413+0x6d0>
    e8828f52:	450d                	li	a0,3
    e8828f54:	558060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            PenalizeDNSServer(m, qptr, response->h.flags);
    e8828f58:	0029d603          	lhu	a2,2(s3)
    e8828f5c:	85e6                	mv	a1,s9
    e8828f5e:	8522                	mv	a0,s0
    e8828f60:	2f8090ef          	jal	ra,e8832258 <PenalizeDNSServer>
    e8828f64:	b7e9                	j	e8828f2e <mDNSCoreReceiveResponse+0x3f4>
        if (unicastQuestion && DNSSECQuestion(unicastQuestion))
    e8828f66:	cc0484e3          	beqz	s1,e8828c2e <mDNSCoreReceiveResponse+0xf4>
    e8828f6a:	3244c783          	lbu	a5,804(s1)
    e8828f6e:	ef81                	bnez	a5,e8828f86 <mDNSCoreReceiveResponse+0x44c>
    e8828f70:	14a4c783          	lbu	a5,330(s1)
    e8828f74:	eb89                	bnez	a5,e8828f86 <mDNSCoreReceiveResponse+0x44c>
    e8828f76:	3254c783          	lbu	a5,805(s1)
    e8828f7a:	ca078ae3          	beqz	a5,e8828c2e <mDNSCoreReceiveResponse+0xf4>
    e8828f7e:	3264c783          	lbu	a5,806(s1)
    e8828f82:	ca0786e3          	beqz	a5,e8828c2e <mDNSCoreReceiveResponse+0xf4>
            BumpDNSSECStats(m, kStatsActionSet, kStatsTypeMsgSize, (end - response->data));
    e8828f86:	7786                	ld	a5,96(sp)
    e8828f88:	4615                	li	a2,5
    e8828f8a:	458d                	li	a1,3
    e8828f8c:	40fc06bb          	subw	a3,s8,a5
    e8828f90:	8522                	mv	a0,s0
    e8828f92:	35f060ef          	jal	ra,e882faf0 <BumpDNSSECStats>
    e8828f96:	b961                	j	e8828c2e <mDNSCoreReceiveResponse+0xf4>
        if (m->rec.r.resrec.RecordType == kDNSRecordTypePacketNegative)
    e8828f98:	012407b3          	add	a5,s0,s2
    e8828f9c:	4e07c683          	lbu	a3,1248(a5)
    e8828fa0:	0f000713          	li	a4,240
    e8828fa4:	14e69963          	bne	a3,a4,e88290f6 <mDNSCoreReceiveResponse+0x5bc>
        mDNSCoreResetRecord(m);
    e8828fa8:	8522                	mv	a0,s0
    e8828faa:	c10f30ef          	jal	ra,e881c3ba <mDNSCoreResetRecord>
    for (i = 0; i < totalrecords && ptr && ptr < end; i++)
    e8828fae:	67a6                	ld	a5,72(sp)
    e8828fb0:	2785                	addiw	a5,a5,1
    e8828fb2:	e4be                	sd	a5,72(sp)
    e8828fb4:	67a6                	ld	a5,72(sp)
    e8828fb6:	670e                	ld	a4,192(sp)
    e8828fb8:	04e78d63          	beq	a5,a4,e8829012 <mDNSCoreReceiveResponse+0x4d8>
    e8828fbc:	040b8b63          	beqz	s7,e8829012 <mDNSCoreReceiveResponse+0x4d8>
    e8828fc0:	058bf963          	bgeu	s7,s8,e8829012 <mDNSCoreReceiveResponse+0x4d8>
        mDNSBool AcceptableResponse = ResponseMCast || !dstaddr || LLQType || recordAcceptedInResponse;
    e8828fc4:	6ce6                	ld	s9,88(sp)
    e8828fc6:	000c9d63          	bnez	s9,e8828fe0 <mDNSCoreReceiveResponse+0x4a6>
    e8828fca:	4c85                	li	s9,1
    e8828fcc:	000d8a63          	beqz	s11,e8828fe0 <mDNSCoreReceiveResponse+0x4a6>
    e8828fd0:	67aa                	ld	a5,136(sp)
    e8828fd2:	6762                	ld	a4,24(sp)
    e8828fd4:	00e7ecb3          	or	s9,a5,a4
    e8828fd8:	0ffcfc93          	andi	s9,s9,255
    e8828fdc:	01903cb3          	snez	s9,s9
        const mDNSu8 RecordType =
    e8828fe0:	6726                	ld	a4,72(sp)
    e8828fe2:	76ca                	ld	a3,176(sp)
        mDNSBool AcceptableResponse = ResponseMCast || !dstaddr || LLQType || recordAcceptedInResponse;
    e8828fe4:	0ffcfa13          	andi	s4,s9,255
        const mDNSu8 RecordType =
    e8828fe8:	0c000793          	li	a5,192
    e8828fec:	00d74963          	blt	a4,a3,e8828ffe <mDNSCoreReceiveResponse+0x4c4>
    e8828ff0:	76ea                	ld	a3,184(sp)
    e8828ff2:	0a000793          	li	a5,160
    e8828ff6:	00d74463          	blt	a4,a3,e8828ffe <mDNSCoreReceiveResponse+0x4c4>
    e8828ffa:	08000793          	li	a5,128
        ptr = GetLargeResourceRecord(m, response, ptr, end, InterfaceID, RecordType, &m->rec);
    e8828ffe:	7822                	ld	a6,40(sp)
    e8829000:	865e                	mv	a2,s7
    e8829002:	875a                	mv	a4,s6
    e8829004:	86e2                	mv	a3,s8
    e8829006:	85ce                	mv	a1,s3
    e8829008:	8522                	mv	a0,s0
    e882900a:	e29ed0ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
    e882900e:	8baa                	mv	s7,a0
        if (!ptr) goto exit;        // Break out of the loop and clean up our CacheFlushRecords list before exiting
    e8829010:	f541                	bnez	a0,e8828f98 <mDNSCoreReceiveResponse+0x45e>
    mDNSCoreResetRecord(m);
    e8829012:	8522                	mv	a0,s0
    e8829014:	ba6f30ef          	jal	ra,e881c3ba <mDNSCoreResetRecord>
                r1->resrec.rrtype      == r2->resrec.rrtype &&
    e8829018:	5bfd                	li	s7,-1
                            !(r2->resrec.rroriginalttl == 120 && r1->resrec.rroriginalttl == 4500 && r2->resrec.rrtype == kDNSType_SRV) &&
    e882901a:	6785                	lui	a5,0x1
                r1->resrec.rrtype      == r2->resrec.rrtype &&
    e882901c:	1b82                	slli	s7,s7,0x20
                            !(r2->resrec.rroriginalttl == 120 && r1->resrec.rroriginalttl == 4500 && r2->resrec.rrtype == kDNSType_SRV) &&
    e882901e:	19478793          	addi	a5,a5,404 # 1194 <memcmp-0xe87fee6c>
                r1->resrec.rrtype      == r2->resrec.rrtype &&
    e8829022:	010bdb93          	srli	s7,s7,0x10
                            !(r2->resrec.rroriginalttl == 120 && r1->resrec.rroriginalttl == 4500 && r2->resrec.rrtype == kDNSType_SRV) &&
    e8829026:	e0be                	sd	a5,64(sp)
    while (CacheFlushRecords != (CacheRecord*)1)
    e8829028:	7a4e                	ld	s4,240(sp)
    e882902a:	4785                	li	a5,1
    e882902c:	00fa0463          	beq	s4,a5,e8829034 <mDNSCoreReceiveResponse+0x4fa>
    e8829030:	17c0106f          	j	e882a1ac <mDNSCoreReceiveResponse+0x1672>
    if (NSECRecords && NSECCachePtr)
    e8829034:	74ee                	ld	s1,248(sp)
    e8829036:	c8bd                	beqz	s1,e88290ac <mDNSCoreReceiveResponse+0x572>
    e8829038:	060a8a63          	beqz	s5,e88290ac <mDNSCoreReceiveResponse+0x572>
        LogInfo("mDNSCoreReceieveResponse: Updating NSEC records in %s", CRDisplayString(m, NSECCachePtr));
    e882903c:	000ac917          	auipc	s2,0xac
    e8829040:	a3890913          	addi	s2,s2,-1480 # e88d4a74 <mDNS_LoggingEnabled>
    e8829044:	00092783          	lw	a5,0(s2)
    e8829048:	c395                	beqz	a5,e882906c <mDNSCoreReceiveResponse+0x532>
    e882904a:	030ab583          	ld	a1,48(s5)
    e882904e:	03b40613          	addi	a2,s0,59
    e8829052:	008a8513          	addi	a0,s5,8
    e8829056:	0591                	addi	a1,a1,4
    e8829058:	9bded0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882905c:	862a                	mv	a2,a0
    e882905e:	00080597          	auipc	a1,0x80
    e8829062:	04258593          	addi	a1,a1,66 # e88a90a0 <hexValues.12413+0x10f0>
    e8829066:	450d                	li	a0,3
    e8829068:	444060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!AddNSECSForCacheRecord(m, NSECRecords, NSECCachePtr, rcode))
    e882906c:	66c2                	ld	a3,16(sp)
    e882906e:	8656                	mv	a2,s5
    e8829070:	85a6                	mv	a1,s1
    e8829072:	8522                	mv	a0,s0
    e8829074:	279060ef          	jal	ra,e882faec <AddNSECSForCacheRecord>
    e8829078:	e90d                	bnez	a0,e88290aa <mDNSCoreReceiveResponse+0x570>
            LogInfo("mDNSCoreReceiveResponse: AddNSECSForCacheRecord failed to add NSEC for %s", CRDisplayString(m, NSECCachePtr));
    e882907a:	00092783          	lw	a5,0(s2)
    e882907e:	c395                	beqz	a5,e88290a2 <mDNSCoreReceiveResponse+0x568>
    e8829080:	030ab583          	ld	a1,48(s5)
    e8829084:	03b40613          	addi	a2,s0,59
    e8829088:	008a8513          	addi	a0,s5,8
    e882908c:	0591                	addi	a1,a1,4
    e882908e:	987ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829092:	862a                	mv	a2,a0
    e8829094:	00080597          	auipc	a1,0x80
    e8829098:	fbc58593          	addi	a1,a1,-68 # e88a9050 <hexValues.12413+0x10a0>
    e882909c:	450d                	li	a0,3
    e882909e:	40e060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            FreeNSECRecords(m, NSECRecords);
    e88290a2:	85a6                	mv	a1,s1
    e88290a4:	8522                	mv	a0,s0
    e88290a6:	d02f70ef          	jal	ra,e88205a8 <FreeNSECRecords>
        NSECRecords = mDNSNULL;
    e88290aa:	fd82                	sd	zero,248(sp)
    if (response->h.numAnswers && !rrsigsCreated && DNSSECQuestion && !NSECRecords)
    e88290ac:	0069d783          	lhu	a5,6(s3)
    e88290b0:	74ee                	ld	s1,248(sp)
    e88290b2:	cf99                	beqz	a5,e88290d0 <mDNSCoreReceiveResponse+0x596>
    e88290b4:	678a                	ld	a5,128(sp)
    e88290b6:	ef89                	bnez	a5,e88290d0 <mDNSCoreReceiveResponse+0x596>
    e88290b8:	77c6                	ld	a5,112(sp)
    e88290ba:	cb99                	beqz	a5,e88290d0 <mDNSCoreReceiveResponse+0x596>
    e88290bc:	e891                	bnez	s1,e88290d0 <mDNSCoreReceiveResponse+0x596>
        mDNSCoreReceiveNoDNSSECAnswers(m, response, end, dstaddr, dstport, InterfaceID);
    e88290be:	03815703          	lhu	a4,56(sp)
    e88290c2:	87da                	mv	a5,s6
    e88290c4:	86ee                	mv	a3,s11
    e88290c6:	8662                	mv	a2,s8
    e88290c8:	85ce                	mv	a1,s3
    e88290ca:	8522                	mv	a0,s0
    e88290cc:	ee9f30ef          	jal	ra,e881cfb4 <mDNSCoreReceiveNoDNSSECAnswers>
    mDNSCoreReceiveNoUnicastAnswers(m, response, end, dstaddr, dstport, InterfaceID, LLQType, rcode, NSECRecords);
    e88290d0:	fb01488b          	ldd	a7,a6,(sp),1,4
    e88290d4:	03815703          	lhu	a4,56(sp)
    e88290d8:	85ce                	mv	a1,s3
    e88290da:	e026                	sd	s1,0(sp)
    e88290dc:	87da                	mv	a5,s6
    e88290de:	86ee                	mv	a3,s11
    e88290e0:	8662                	mv	a2,s8
    e88290e2:	8522                	mv	a0,s0
    e88290e4:	c32ff0ef          	jal	ra,e8828516 <mDNSCoreReceiveNoUnicastAnswers>
    if (McastNSEC3Records)
    e88290e8:	6592                	ld	a1,256(sp)
    e88290ea:	c60589e3          	beqz	a1,e8828d5c <mDNSCoreReceiveResponse+0x222>
        FreeNSECRecords(m, McastNSEC3Records);
    e88290ee:	8522                	mv	a0,s0
    e88290f0:	cb8f70ef          	jal	ra,e88205a8 <FreeNSECRecords>
    e88290f4:	b1a5                	j	e8828d5c <mDNSCoreReceiveResponse+0x222>
        if (mDNSOpaque16IsZero(response->h.id) && m->rec.r.resrec.rrtype == kDNSType_NSEC3)
    e88290f6:	0009d703          	lhu	a4,0(s3)
    e88290fa:	4e27d783          	lhu	a5,1250(a5)
    e88290fe:	e709                	bnez	a4,e8829108 <mDNSCoreReceiveResponse+0x5ce>
    e8829100:	03200713          	li	a4,50
    e8829104:	eae782e3          	beq	a5,a4,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
        if (m->rec.r.resrec.rrtype == kDNSType_TSIG)
    e8829108:	0fa00713          	li	a4,250
    e882910c:	e8e78ee3          	beq	a5,a4,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
        if (m->rec.r.resrec.rrtype == kDNSType_OPT)
    e8829110:	02900713          	li	a4,41
    e8829114:	04e79e63          	bne	a5,a4,e8829170 <mDNSCoreReceiveResponse+0x636>
            const rdataOPT *const e = (const rdataOPT *)&m->rec.r.resrec.rdata->u.data[m->rec.r.resrec.rdlength];
    e8829118:	012407b3          	add	a5,s0,s2
    e882911c:	5087bc83          	ld	s9,1288(a5)
    e8829120:	4ec7d783          	lhu	a5,1260(a5)
                    ClearProxyRecords(m, &opt->u.owner, m->DuplicateRecords);
    e8829124:	6a0d                	lui	s4,0x3
                if (opt->opt == kDNSOpt_Owner && opt->u.owner.vers == 0 && opt->u.owner.HMAC.l[0])
    e8829126:	4691                	li	a3,4
            const rdataOPT *const e = (const rdataOPT *)&m->rec.r.resrec.rdata->u.data[m->rec.r.resrec.rdlength];
    e8829128:	0791                	addi	a5,a5,4
    e882912a:	00fc8d33          	add	s10,s9,a5
                    ClearProxyRecords(m, &opt->u.owner, m->DuplicateRecords);
    e882912e:	9a22                	add	s4,s4,s0
            for (opt = &m->rec.r.resrec.rdata->u.opt[0]; opt < e; opt++)
    e8829130:	0c91                	addi	s9,s9,4
    e8829132:	e7acfbe3          	bgeu	s9,s10,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
                if (opt->opt == kDNSOpt_Owner && opt->u.owner.vers == 0 && opt->u.owner.HMAC.l[0])
    e8829136:	000cd703          	lhu	a4,0(s9)
    e882913a:	02d71963          	bne	a4,a3,e882916c <mDNSCoreReceiveResponse+0x632>
    e882913e:	004cc703          	lbu	a4,4(s9)
    e8829142:	e70d                	bnez	a4,e882916c <mDNSCoreReceiveResponse+0x632>
    e8829144:	006ca703          	lw	a4,6(s9)
    e8829148:	c315                	beqz	a4,e882916c <mDNSCoreReceiveResponse+0x632>
                    ClearProxyRecords(m, &opt->u.owner, m->DuplicateRecords);
    e882914a:	1c0a3603          	ld	a2,448(s4) # 31c0 <memcmp-0xe87fce40>
    e882914e:	004c8713          	addi	a4,s9,4
    e8829152:	85ba                	mv	a1,a4
    e8829154:	8522                	mv	a0,s0
    e8829156:	f4ba                	sd	a4,104(sp)
    e8829158:	ed9f90ef          	jal	ra,e8823030 <ClearProxyRecords>
                    ClearProxyRecords(m, &opt->u.owner, m->ResourceRecords);
    e882915c:	7726                	ld	a4,104(sp)
    e882915e:	1b8a3603          	ld	a2,440(s4)
    e8829162:	8522                	mv	a0,s0
    e8829164:	85ba                	mv	a1,a4
    e8829166:	ecbf90ef          	jal	ra,e8823030 <ClearProxyRecords>
    e882916a:	4691                	li	a3,4
            for (opt = &m->rec.r.resrec.rdata->u.opt[0]; opt < e; opt++)
    e882916c:	0ce1                	addi	s9,s9,24
    e882916e:	b7d1                	j	e8829132 <mDNSCoreReceiveResponse+0x5f8>
        if ((m->rec.r.resrec.rrtype == kDNSType_CNAME) && SameDomainName(m->rec.r.resrec.name, &m->rec.r.resrec.rdata->u.name))
    e8829170:	4715                	li	a4,5
    e8829172:	02e79d63          	bne	a5,a4,e88291ac <mDNSCoreReceiveResponse+0x672>
    e8829176:	01240d33          	add	s10,s0,s2
    e882917a:	508d3583          	ld	a1,1288(s10)
    e882917e:	500d3503          	ld	a0,1280(s10)
    e8829182:	0591                	addi	a1,a1,4
    e8829184:	ec7e90ef          	jal	ra,e881304a <SameDomainName>
    e8829188:	c115                	beqz	a0,e88291ac <mDNSCoreReceiveResponse+0x672>
            LogInfo("mDNSCoreReceiveResponse: CNAME loop domain name %##s", m->rec.r.resrec.name->c);
    e882918a:	000ac717          	auipc	a4,0xac
    e882918e:	8ea70713          	addi	a4,a4,-1814 # e88d4a74 <mDNS_LoggingEnabled>
    e8829192:	4318                	lw	a4,0(a4)
    e8829194:	e0070ae3          	beqz	a4,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
    e8829198:	500d3603          	ld	a2,1280(s10)
    e882919c:	0007f597          	auipc	a1,0x7f
    e88291a0:	56c58593          	addi	a1,a1,1388 # e88a8708 <hexValues.12413+0x758>
                LogInfo("mDNSResponder: Dropping LinkLocal packet %s", CRDisplayString(m, &m->rec.r));
    e88291a4:	450d                	li	a0,3
    e88291a6:	306060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                mDNSCoreResetRecord(m);
    e88291aa:	bbfd                	j	e8828fa8 <mDNSCoreReceiveResponse+0x46e>
        if (!mDNSOpaque16IsZero(response->h.id))
    e88291ac:	0009d783          	lhu	a5,0(s3)
    e88291b0:	cb91                	beqz	a5,e88291c4 <mDNSCoreReceiveResponse+0x68a>
            m->rec.r.resrec.rroriginalttl = GetEffectiveTTL(LLQType, m->rec.r.resrec.rroriginalttl);
    e88291b2:	01240d33          	add	s10,s0,s2
    e88291b6:	4e8d2583          	lw	a1,1256(s10)
    e88291ba:	6562                	ld	a0,24(sp)
    e88291bc:	afdf30ef          	jal	ra,e881ccb8 <GetEffectiveTTL>
    e88291c0:	4ead2423          	sw	a0,1256(s10)
        if (!ResponseMCast)
    e88291c4:	67e6                	ld	a5,88(sp)
    e88291c6:	18079963          	bnez	a5,e8829358 <mDNSCoreReceiveResponse+0x81e>
            if (LLQType)
    e88291ca:	67e2                	ld	a5,24(sp)
    e88291cc:	cb9d                	beqz	a5,e8829202 <mDNSCoreReceiveResponse+0x6c8>
                if (llqMatch != mDNSNULL) m->rec.r.resrec.rDNSServer = uDNSServer = llqMatch->qDNSServer;
    e88291ce:	77ae                	ld	a5,232(sp)
    e88291d0:	cb89                	beqz	a5,e88291e2 <mDNSCoreReceiveResponse+0x6a8>
    e88291d2:	1687b783          	ld	a5,360(a5)
    e88291d6:	e8be                	sd	a5,80(sp)
    e88291d8:	6746                	ld	a4,80(sp)
    e88291da:	012407b3          	add	a5,s0,s2
    e88291de:	50e7b823          	sd	a4,1296(a5)
                if (unicastQuestion && DNSSECQuestion(unicastQuestion))
    e88291e2:	0e048a63          	beqz	s1,e88292d6 <mDNSCoreReceiveResponse+0x79c>
    e88291e6:	3244c783          	lbu	a5,804(s1)
    e88291ea:	eb91                	bnez	a5,e88291fe <mDNSCoreReceiveResponse+0x6c4>
    e88291ec:	14a4c783          	lbu	a5,330(s1)
    e88291f0:	e799                	bnez	a5,e88291fe <mDNSCoreReceiveResponse+0x6c4>
    e88291f2:	3254c783          	lbu	a5,805(s1)
    e88291f6:	c3e5                	beqz	a5,e88292d6 <mDNSCoreReceiveResponse+0x79c>
    e88291f8:	3264c783          	lbu	a5,806(s1)
    e88291fc:	cfe9                	beqz	a5,e88292d6 <mDNSCoreReceiveResponse+0x79c>
                    AcceptableResponse = mDNSfalse;
    e88291fe:	4a01                	li	s4,0
    e8829200:	a8d9                	j	e88292d6 <mDNSCoreReceiveResponse+0x79c>
            else if (!AcceptableResponse || !dstaddr)
    e8829202:	000c8463          	beqz	s9,e882920a <mDNSCoreReceiveResponse+0x6d0>
    e8829206:	100d9f63          	bnez	s11,e8829324 <mDNSCoreReceiveResponse+0x7ea>
        if (!q->DuplicateOf && ResourceRecordAnswersUnicastResponse(&rr->resrec, q))
    e882920a:	77a2                	ld	a5,40(sp)
    for (q = m->Questions; q; q=q->next)
    e882920c:	2b843c83          	ld	s9,696(s0)
                if (mDNSSameOpaque16(q->TargetQID, id))
    e8829210:	0009d803          	lhu	a6,0(s3)
        if (!q->DuplicateOf && ResourceRecordAnswersUnicastResponse(&rr->resrec, q))
    e8829214:	00878d13          	addi	s10,a5,8
    for (q = m->Questions; q; q=q->next)
    e8829218:	0a0c8d63          	beqz	s9,e88292d2 <mDNSCoreReceiveResponse+0x798>
        if (!q->DuplicateOf && ResourceRecordAnswersUnicastResponse(&rr->resrec, q))
    e882921c:	050cb783          	ld	a5,80(s9)
    e8829220:	c781                	beqz	a5,e8829228 <mDNSCoreReceiveResponse+0x6ee>
    for (q = m->Questions; q; q=q->next)
    e8829222:	000cbc83          	ld	s9,0(s9)
    e8829226:	bfcd                	j	e8829218 <mDNSCoreReceiveResponse+0x6de>
        if (!q->DuplicateOf && ResourceRecordAnswersUnicastResponse(&rr->resrec, q))
    e8829228:	85e6                	mv	a1,s9
    e882922a:	856a                	mv	a0,s10
    e882922c:	f4c2                	sd	a6,104(sp)
    e882922e:	dadec0ef          	jal	ra,e8815fda <ResourceRecordAnswersUnicastResponse>
    e8829232:	000ac617          	auipc	a2,0xac
    e8829236:	84e60613          	addi	a2,a2,-1970 # e88d4a80 <mDNSPlatformOneSecond>
    e882923a:	7826                	ld	a6,104(sp)
    e882923c:	d17d                	beqz	a0,e8829222 <mDNSCoreReceiveResponse+0x6e8>
            if (!mDNSOpaque16IsZero(q->TargetQID))
    e882923e:	212cd783          	lhu	a5,530(s9)
    e8829242:	cbd5                	beqz	a5,e88292f6 <mDNSCoreReceiveResponse+0x7bc>
                if (mDNSSameOpaque16(q->TargetQID, id))
    e8829244:	fcf81fe3          	bne	a6,a5,e8829222 <mDNSCoreReceiveResponse+0x6e8>
                    if (!tcp)
    e8829248:	0a0d8463          	beqz	s11,e88292f0 <mDNSCoreReceiveResponse+0x7b6>
                        srcp = q->LocalSocket ? q->LocalSocket->port : zeroIPPort;
    e882924c:	160cb783          	ld	a5,352(s9)
    e8829250:	cbd9                	beqz	a5,e88292e6 <mDNSCoreReceiveResponse+0x7ac>
    e8829252:	0007d783          	lhu	a5,0(a5)
                    if (mDNSSameIPPort(srcp, port)) return(q);
    e8829256:	03815703          	lhu	a4,56(sp)
    e882925a:	3c07370b          	extu	a4,a4,15,0
    e882925e:	0af70963          	beq	a4,a5,e8829310 <mDNSCoreReceiveResponse+0x7d6>
                    LogInfo("WARNING: Ignoring suspect uDNS response for %##s (%s) [q->Target %#a:%d] from %#a:%d %s",
    e8829262:	000ac717          	auipc	a4,0xac
    e8829266:	81270713          	addi	a4,a4,-2030 # e88d4a74 <mDNS_LoggingEnabled>
    e882926a:	4318                	lw	a4,0(a4)
    e882926c:	c33d                	beqz	a4,e88292d2 <mDNSCoreReceiveResponse+0x798>
    e882926e:	314cd503          	lhu	a0,788(s9)
    e8829272:	ed3e                	sd	a5,152(sp)
    e8829274:	9edec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8829278:	fcaa                	sd	a0,120(sp)
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e882927a:	03815783          	lhu	a5,56(sp)
    e882927e:	03814883          	lbu	a7,56(sp)
    e8829282:	03b40613          	addi	a2,s0,59
    e8829286:	3c87b70b          	extu	a4,a5,15,8
    e882928a:	0088989b          	slliw	a7,a7,0x8
    e882928e:	00e8e8b3          	or	a7,a7,a4
    e8829292:	01240733          	add	a4,s0,s2
    e8829296:	50873583          	ld	a1,1288(a4)
    e882929a:	856a                	mv	a0,s10
    e882929c:	f4c6                	sd	a7,104(sp)
    e882929e:	0591                	addi	a1,a1,4
    e88292a0:	f74ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88292a4:	e02a                	sd	a0,0(sp)
    e88292a6:	67ea                	ld	a5,152(sp)
    e88292a8:	78a6                	ld	a7,104(sp)
    e88292aa:	7842                	ld	a6,48(sp)
    e88292ac:	0ff7f713          	andi	a4,a5,255
    e88292b0:	0087171b          	slliw	a4,a4,0x8
    e88292b4:	76e6                	ld	a3,120(sp)
    e88292b6:	5c87b78b          	extu	a5,a5,23,8
    e88292ba:	8fd9                	or	a5,a5,a4
    e88292bc:	214c8613          	addi	a2,s9,532
    e88292c0:	1fcc8713          	addi	a4,s9,508
    e88292c4:	0007f597          	auipc	a1,0x7f
    e88292c8:	47c58593          	addi	a1,a1,1148 # e88a8740 <hexValues.12413+0x790>
    e88292cc:	450d                	li	a0,3
    e88292ce:	1de060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    if (!InterfaceID)
    e88292d2:	f20b06e3          	beqz	s6,e88291fe <mDNSCoreReceiveResponse+0x6c4>
        if (mDNSOpaque16IsZero(response->h.id) && m->rec.r.resrec.rrtype != kDNSType_NSEC)
    e88292d6:	0009d783          	lhu	a5,0(s3)
    e88292da:	cfe1                	beqz	a5,e88293b2 <mDNSCoreReceiveResponse+0x878>
        if (!AcceptableResponse)
    e88292dc:	640a0463          	beqz	s4,e8829924 <mDNSCoreReceiveResponse+0xdea>
        if (!AcceptableResponse) LogInfo("mDNSCoreReceiveResponse ignoring %s", CRDisplayString(m, &m->rec.r));
    e88292e0:	4c81                	li	s9,0
    e88292e2:	77c0006f          	j	e8829a5e <mDNSCoreReceiveResponse+0xf24>
                        srcp = q->LocalSocket ? q->LocalSocket->port : zeroIPPort;
    e88292e6:	0007a797          	auipc	a5,0x7a
    e88292ea:	2c27d783          	lhu	a5,706(a5) # e88a35a8 <zeroIPPort>
    e88292ee:	b7a5                	j	e8829256 <mDNSCoreReceiveResponse+0x71c>
                        srcp = q->tcpSrcPort;
    e88292f0:	1b0cd783          	lhu	a5,432(s9)
    e88292f4:	b78d                	j	e8829256 <mDNSCoreReceiveResponse+0x71c>
                if (SrcLocal && q->ExpectUnicastResp && (mDNSu32)(m->timenow - q->ExpectUnicastResp) < (mDNSu32)(mDNSPlatformOneSecond*2))
    e88292f6:	67ca                	ld	a5,144(sp)
    e88292f8:	d78d                	beqz	a5,e8829222 <mDNSCoreReceiveResponse+0x6e8>
    e88292fa:	018ca683          	lw	a3,24(s9)
    e88292fe:	d295                	beqz	a3,e8829222 <mDNSCoreReceiveResponse+0x6e8>
    e8829300:	24042703          	lw	a4,576(s0)
    e8829304:	421c                	lw	a5,0(a2)
    e8829306:	9f15                	subw	a4,a4,a3
    e8829308:	0017979b          	slliw	a5,a5,0x1
    e882930c:	f0f77be3          	bgeu	a4,a5,e8829222 <mDNSCoreReceiveResponse+0x6e8>
                    if (!InterfaceID)
    e8829310:	000b1c63          	bnez	s6,e8829328 <mDNSCoreReceiveResponse+0x7ee>
                        m->rec.r.resrec.rDNSServer = uDNSServer = q->qDNSServer;
    e8829314:	168cb783          	ld	a5,360(s9)
    e8829318:	e8be                	sd	a5,80(sp)
    e882931a:	6746                	ld	a4,80(sp)
    e882931c:	012407b3          	add	a5,s0,s2
    e8829320:	50e7b823          	sd	a4,1296(a5)
        mDNSBool AcceptableResponse = ResponseMCast || !dstaddr || LLQType || recordAcceptedInResponse;
    e8829324:	4a05                	li	s4,1
    e8829326:	bf45                	j	e88292d6 <mDNSCoreReceiveResponse+0x79c>
                        LogInfo("mDNSCoreReceiveResponse: Accepting response for query: %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8829328:	000ab797          	auipc	a5,0xab
    e882932c:	74c78793          	addi	a5,a5,1868 # e88d4a74 <mDNS_LoggingEnabled>
    e8829330:	439c                	lw	a5,0(a5)
    e8829332:	cf99                	beqz	a5,e8829350 <mDNSCoreReceiveResponse+0x816>
    e8829334:	314cd503          	lhu	a0,788(s9)
    e8829338:	929ec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882933c:	86aa                	mv	a3,a0
    e882933e:	214c8613          	addi	a2,s9,532
    e8829342:	0007f597          	auipc	a1,0x7f
    e8829346:	45658593          	addi	a1,a1,1110 # e88a8798 <hexValues.12413+0x7e8>
    e882934a:	450d                	li	a0,3
    e882934c:	160060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        recordAcceptedInResponse = mDNStrue;
    e8829350:	4785                	li	a5,1
                    AcceptableResponse = mDNStrue;
    e8829352:	4a05                	li	s4,1
                        recordAcceptedInResponse = mDNStrue;
    e8829354:	e53e                	sd	a5,136(sp)
    e8829356:	b741                	j	e88292d6 <mDNSCoreReceiveResponse+0x79c>
        else if (llintf && llintf->IgnoreIPv4LL && m->rec.r.resrec.rrtype == kDNSType_A)
    e8829358:	7782                	ld	a5,32(sp)
    e882935a:	dfb5                	beqz	a5,e88292d6 <mDNSCoreReceiveResponse+0x79c>
    e882935c:	7702                	ld	a4,32(sp)
    e882935e:	6789                	lui	a5,0x2
    e8829360:	97ba                	add	a5,a5,a4
    e8829362:	a6a7c783          	lbu	a5,-1430(a5) # 1a6a <memcmp-0xe87fe596>
    e8829366:	dba5                	beqz	a5,e88292d6 <mDNSCoreReceiveResponse+0x79c>
    e8829368:	012407b3          	add	a5,s0,s2
    e882936c:	4e27d683          	lhu	a3,1250(a5)
    e8829370:	4705                	li	a4,1
    e8829372:	f6e692e3          	bne	a3,a4,e88292d6 <mDNSCoreReceiveResponse+0x79c>
            if (mDNSv4AddressIsLinkLocal(&rdb->ipv4))
    e8829376:	5787d683          	lhu	a3,1400(a5)
    e882937a:	6741                	lui	a4,0x10
    e882937c:	ea970713          	addi	a4,a4,-343 # fea9 <memcmp-0xe87f0157>
    e8829380:	f4e69be3          	bne	a3,a4,e88292d6 <mDNSCoreReceiveResponse+0x79c>
                LogInfo("mDNSResponder: Dropping LinkLocal packet %s", CRDisplayString(m, &m->rec.r));
    e8829384:	000ab717          	auipc	a4,0xab
    e8829388:	6f070713          	addi	a4,a4,1776 # e88d4a74 <mDNS_LoggingEnabled>
    e882938c:	4318                	lw	a4,0(a4)
    e882938e:	c0070de3          	beqz	a4,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
    e8829392:	5087b583          	ld	a1,1288(a5)
    e8829396:	4e090513          	addi	a0,s2,1248
    e882939a:	03b40613          	addi	a2,s0,59
    e882939e:	0591                	addi	a1,a1,4
    e88293a0:	9522                	add	a0,a0,s0
    e88293a2:	e72ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88293a6:	862a                	mv	a2,a0
    e88293a8:	0007f597          	auipc	a1,0x7f
    e88293ac:	43858593          	addi	a1,a1,1080 # e88a87e0 <hexValues.12413+0x830>
    e88293b0:	bbd5                	j	e88291a4 <mDNSCoreReceiveResponse+0x66a>
        if (mDNSOpaque16IsZero(response->h.id) && m->rec.r.resrec.rrtype != kDNSType_NSEC)
    e88293b2:	012407b3          	add	a5,s0,s2
    e88293b6:	4e27d703          	lhu	a4,1250(a5)
    e88293ba:	02f00793          	li	a5,47
    e88293be:	f0f70fe3          	beq	a4,a5,e88292dc <mDNSCoreReceiveResponse+0x7a2>
            if (m->CurrentRecord)
    e88293c2:	678d                	lui	a5,0x3
    e88293c4:	97a2                	add	a5,a5,s0
    e88293c6:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e88293ca:	c105                	beqz	a0,e88293ea <mDNSCoreReceiveResponse+0x8b0>
                LogMsg("mDNSCoreReceiveResponse ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e88293cc:	790c                	ld	a1,48(a0)
    e88293ce:	03b40613          	addi	a2,s0,59
    e88293d2:	0521                	addi	a0,a0,8
    e88293d4:	0591                	addi	a1,a1,4
    e88293d6:	e3eed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88293da:	862a                	mv	a2,a0
    e88293dc:	0007f597          	auipc	a1,0x7f
    e88293e0:	43458593          	addi	a1,a1,1076 # e88a8810 <hexValues.12413+0x860>
    e88293e4:	4501                	li	a0,0
    e88293e6:	0c6060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            m->CurrentRecord = m->ResourceRecords;
    e88293ea:	678d                	lui	a5,0x3
    e88293ec:	97a2                	add	a5,a5,s0
    e88293ee:	1b87b703          	ld	a4,440(a5) # 31b8 <memcmp-0xe87fce48>
            while (m->CurrentRecord)
    e88293f2:	f4be                	sd	a5,104(sp)
            m->CurrentRecord = m->ResourceRecords;
    e88293f4:	1ce7b823          	sd	a4,464(a5)
    e88293f8:	0a014783          	lbu	a5,160(sp)
    e88293fc:	0087979b          	slliw	a5,a5,0x8
    e8829400:	06f11c23          	sh	a5,120(sp)
            while (m->CurrentRecord)
    e8829404:	77a6                	ld	a5,104(sp)
    e8829406:	1d07bd03          	ld	s10,464(a5)
    e882940a:	ec0d09e3          	beqz	s10,e88292dc <mDNSCoreReceiveResponse+0x7a2>
                m->CurrentRecord = rr->next;
    e882940e:	000d3703          	ld	a4,0(s10)
    e8829412:	77a6                	ld	a5,104(sp)
    e8829414:	1ce7b823          	sd	a4,464(a5)
                if (!AcceptableResponse && !(ResponseSrcLocal && rr->resrec.RecordType == kDNSRecordTypeUnique)) continue;
    e8829418:	000a1963          	bnez	s4,e882942a <mDNSCoreReceiveResponse+0x8f0>
    e882941c:	67ca                	ld	a5,144(sp)
    e882941e:	d3fd                	beqz	a5,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    e8829420:	008d4683          	lbu	a3,8(s10)
    e8829424:	4709                	li	a4,2
    e8829426:	fce69fe3          	bne	a3,a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    if (!pktrr)  { LogMsg("PacketRRMatchesSignature ERROR: pktrr is NULL"); return(mDNSfalse); }
    e882942a:	77a2                	ld	a5,40(sp)
    e882942c:	eb89                	bnez	a5,e882943e <mDNSCoreReceiveResponse+0x904>
    e882942e:	0007f597          	auipc	a1,0x7f
    e8829432:	42258593          	addi	a1,a1,1058 # e88a8850 <hexValues.12413+0x8a0>
    e8829436:	4501                	li	a0,0
    e8829438:	074060ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882943c:	b7e1                	j	e8829404 <mDNSCoreReceiveResponse+0x8ca>
    if (pktrr->resrec.InterfaceID &&
    e882943e:	01240733          	add	a4,s0,s2
    e8829442:	4f873583          	ld	a1,1272(a4)
    e8829446:	c591                	beqz	a1,e8829452 <mDNSCoreReceiveResponse+0x918>
        authrr->resrec.InterfaceID &&
    e8829448:	020d3703          	ld	a4,32(s10)
    if (pktrr->resrec.InterfaceID &&
    e882944c:	c319                	beqz	a4,e8829452 <mDNSCoreReceiveResponse+0x918>
        authrr->resrec.InterfaceID &&
    e882944e:	fae59be3          	bne	a1,a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    if (!(authrr->resrec.RecordType & kDNSRecordTypeUniqueMask) || authrr->WakeUp.HMAC.l[0])
    e8829452:	008d4703          	lbu	a4,8(s10)
    e8829456:	03277713          	andi	a4,a4,50
    e882945a:	c701                	beqz	a4,e8829462 <mDNSCoreReceiveResponse+0x928>
    e882945c:	07ed2703          	lw	a4,126(s10)
    e8829460:	cb09                	beqz	a4,e8829472 <mDNSCoreReceiveResponse+0x938>
        if (pktrr->resrec.rrtype != authrr->resrec.rrtype) return(mDNSfalse);
    e8829462:	01240733          	add	a4,s0,s2
    e8829466:	4e275683          	lhu	a3,1250(a4)
    e882946a:	00ad5703          	lhu	a4,10(s10)
    e882946e:	f8e69be3          	bne	a3,a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    if ((authrr->resrec.InterfaceID == mDNSInterface_Any) &&
    e8829472:	0007a717          	auipc	a4,0x7a
    e8829476:	8ee70713          	addi	a4,a4,-1810 # e88a2d60 <mDNSInterface_Any>
    e882947a:	020d3683          	ld	a3,32(s10)
    e882947e:	6318                	ld	a4,0(a4)
    e8829480:	08e68d63          	beq	a3,a4,e882951a <mDNSCoreReceiveResponse+0x9e0>
               pktrr->resrec.rrclass == authrr->resrec.rrclass &&
    e8829484:	01240cb3          	add	s9,s0,s2
               pktrr->resrec.namehash == authrr->resrec.namehash &&
    e8829488:	4e4cd683          	lhu	a3,1252(s9)
    e882948c:	00cd5703          	lhu	a4,12(s10)
    e8829490:	f6e69ae3          	bne	a3,a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
               pktrr->resrec.rrclass == authrr->resrec.rrclass &&
    e8829494:	4f0ca683          	lw	a3,1264(s9)
    e8829498:	018d2703          	lw	a4,24(s10)
    e882949c:	f6e694e3          	bne	a3,a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
               SameDomainName(pktrr->resrec.name, authrr->resrec.name));
    e88294a0:	028d3583          	ld	a1,40(s10)
    e88294a4:	500cb503          	ld	a0,1280(s9)
    e88294a8:	ba3e90ef          	jal	ra,e881304a <SameDomainName>
                if (PacketRRMatchesSignature(&m->rec.r, rr))        // If interface, name, type (if shared record) and class match...
    e88294ac:	dd21                	beqz	a0,e8829404 <mDNSCoreReceiveResponse+0x8ca>
                    if (IdenticalSameNameRecord(&m->rec.r.resrec, &rr->resrec))
    e88294ae:	6786                	ld	a5,64(sp)
    e88294b0:	4e0cb683          	ld	a3,1248(s9)
    e88294b4:	008d3703          	ld	a4,8(s10)
    e88294b8:	8efd                	and	a3,a3,a5
    e88294ba:	8f7d                	and	a4,a4,a5
    e88294bc:	08e69663          	bne	a3,a4,e8829548 <mDNSCoreReceiveResponse+0xa0e>
    e88294c0:	4eccd683          	lhu	a3,1260(s9)
    e88294c4:	014d5703          	lhu	a4,20(s10)
    e88294c8:	08e69063          	bne	a3,a4,e8829548 <mDNSCoreReceiveResponse+0xa0e>
    e88294cc:	4f4ca683          	lw	a3,1268(s9)
    e88294d0:	01cd2703          	lw	a4,28(s10)
    e88294d4:	06e69a63          	bne	a3,a4,e8829548 <mDNSCoreReceiveResponse+0xa0e>
    e88294d8:	030d3583          	ld	a1,48(s10)
    e88294dc:	4e090513          	addi	a0,s2,1248
    e88294e0:	fffea617          	auipc	a2,0xfffea
    e88294e4:	b6a60613          	addi	a2,a2,-1174 # e881304a <SameDomainName>
    e88294e8:	0591                	addi	a1,a1,4
    e88294ea:	9522                	add	a0,a0,s0
    e88294ec:	b1fea0ef          	jal	ra,e881400a <SameRDataBody>
    e88294f0:	cd21                	beqz	a0,e8829548 <mDNSCoreReceiveResponse+0xa0e>
                        if (m->rec.r.resrec.rroriginalttl >= rr->resrec.rroriginalttl/2 || m->SleepState)
    e88294f2:	010d2683          	lw	a3,16(s10)
    e88294f6:	4e8ca603          	lw	a2,1256(s9)
    e88294fa:	0c8d3703          	ld	a4,200(s10)
    e88294fe:	7c16b68b          	extu	a3,a3,31,1
    e8829502:	00d67563          	bgeu	a2,a3,e882950c <mDNSCoreReceiveResponse+0x9d2>
    e8829506:	28544683          	lbu	a3,645(s0)
    e882950a:	ce89                	beqz	a3,e8829524 <mDNSCoreReceiveResponse+0x9ea>
                            if      (rr->ImmedAnswer == InterfaceID) { rr->ImmedAnswer = mDNSNULL; rr->ImmedUnicast = mDNSfalse; }
    e882950c:	ef671ce3          	bne	a4,s6,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    e8829510:	0c0d3423          	sd	zero,200(s10)
    e8829514:	0a0d0da3          	sb	zero,187(s10)
    e8829518:	b5f5                	j	e8829404 <mDNSCoreReceiveResponse+0x8ca>
        !mDNSPlatformValidRecordForInterface(authrr, pktrr->resrec.InterfaceID)) return(mDNSfalse);
    e882951a:	856a                	mv	a0,s10
    e882951c:	1fe070ef          	jal	ra,e883071a <mDNSPlatformValidRecordForInterface>
    if ((authrr->resrec.InterfaceID == mDNSInterface_Any) &&
    e8829520:	f135                	bnez	a0,e8829484 <mDNSCoreReceiveResponse+0x94a>
    e8829522:	b5cd                	j	e8829404 <mDNSCoreReceiveResponse+0x8ca>
                            if      (rr->ImmedAnswer == mDNSNULL)    { rr->ImmedAnswer = InterfaceID;       m->NextScheduledResponse = m->timenow; }
    e8829524:	eb01                	bnez	a4,e8829534 <mDNSCoreReceiveResponse+0x9fa>
    e8829526:	0d6d3423          	sd	s6,200(s10)
                        { rr->ImmedAnswer = mDNSInterfaceMark; m->NextScheduledResponse = m->timenow; }
    e882952a:	24042783          	lw	a5,576(s0)
    e882952e:	26f42023          	sw	a5,608(s0)
    e8829532:	bdc9                	j	e8829404 <mDNSCoreReceiveResponse+0x8ca>
                            else if (rr->ImmedAnswer != InterfaceID) { rr->ImmedAnswer = mDNSInterfaceMark; m->NextScheduledResponse = m->timenow; }
    e8829534:	ed6708e3          	beq	a4,s6,e8829404 <mDNSCoreReceiveResponse+0x8ca>
                        { rr->ImmedAnswer = mDNSInterfaceMark; m->NextScheduledResponse = m->timenow; }
    e8829538:	0007a717          	auipc	a4,0x7a
    e882953c:	82070713          	addi	a4,a4,-2016 # e88a2d58 <mDNSInterfaceMark>
    e8829540:	6318                	ld	a4,0(a4)
    e8829542:	0ced3423          	sd	a4,200(s10)
    e8829546:	b7d5                	j	e882952a <mDNSCoreReceiveResponse+0x9f0>
                    else if (m->rec.r.resrec.rroriginalttl > 0 && PacketRRConflict(m, rr, &m->rec.r))
    e8829548:	01240cb3          	add	s9,s0,s2
    e882954c:	4e8ca703          	lw	a4,1256(s9)
    e8829550:	38070e63          	beqz	a4,e88298ec <mDNSCoreReceiveResponse+0xdb2>
    e8829554:	7622                	ld	a2,40(sp)
    e8829556:	85ea                	mv	a1,s10
    e8829558:	8522                	mv	a0,s0
    e882955a:	c1df30ef          	jal	ra,e881d176 <PacketRRConflict>
    e882955e:	38050763          	beqz	a0,e88298ec <mDNSCoreReceiveResponse+0xdb2>
                        LogInfo("mDNSCoreReceiveResponse: Pkt Record: %08lX %s", m->rec.r.resrec.rdatahash, CRDisplayString(m, &m->rec.r));
    e8829562:	000ab797          	auipc	a5,0xab
    e8829566:	51278793          	addi	a5,a5,1298 # e88d4a74 <mDNS_LoggingEnabled>
    e882956a:	4398                	lw	a4,0(a5)
    e882956c:	c725                	beqz	a4,e88295d4 <mDNSCoreReceiveResponse+0xa9a>
    e882956e:	508cb583          	ld	a1,1288(s9)
    e8829572:	4f4ca803          	lw	a6,1268(s9)
    e8829576:	03b40713          	addi	a4,s0,59
    e882957a:	4e090513          	addi	a0,s2,1248
    e882957e:	863a                	mv	a2,a4
    e8829580:	0591                	addi	a1,a1,4
    e8829582:	9522                	add	a0,a0,s0
    e8829584:	e5c2                	sd	a6,200(sp)
    e8829586:	ed3a                	sd	a4,152(sp)
    e8829588:	c8ced0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882958c:	86aa                	mv	a3,a0
    e882958e:	682e                	ld	a6,200(sp)
    e8829590:	0007f597          	auipc	a1,0x7f
    e8829594:	2f058593          	addi	a1,a1,752 # e88a8880 <hexValues.12413+0x8d0>
    e8829598:	450d                	li	a0,3
    e882959a:	8642                	mv	a2,a6
    e882959c:	711050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        LogInfo("mDNSCoreReceiveResponse: Our Record: %08lX %s", rr->resrec.rdatahash, ARDisplayString(m, rr));
    e88295a0:	000ab797          	auipc	a5,0xab
    e88295a4:	4d478793          	addi	a5,a5,1236 # e88d4a74 <mDNS_LoggingEnabled>
    e88295a8:	4394                	lw	a3,0(a5)
    e88295aa:	c68d                	beqz	a3,e88295d4 <mDNSCoreReceiveResponse+0xa9a>
    e88295ac:	030d3583          	ld	a1,48(s10)
    e88295b0:	676a                	ld	a4,152(sp)
    e88295b2:	01cd2c83          	lw	s9,28(s10)
    e88295b6:	0591                	addi	a1,a1,4
    e88295b8:	863a                	mv	a2,a4
    e88295ba:	008d0513          	addi	a0,s10,8
    e88295be:	c56ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88295c2:	86aa                	mv	a3,a0
    e88295c4:	8666                	mv	a2,s9
    e88295c6:	0007f597          	auipc	a1,0x7f
    e88295ca:	2ea58593          	addi	a1,a1,746 # e88a88b0 <hexValues.12413+0x900>
    e88295ce:	450d                	li	a0,3
    e88295d0:	6dd050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        if (rr->DependentOn)
    e88295d4:	058d3703          	ld	a4,88(s10)
    e88295d8:	cf15                	beqz	a4,e8829614 <mDNSCoreReceiveResponse+0xada>
                            while (rr->DependentOn) rr = rr->DependentOn;
    e88295da:	058d3703          	ld	a4,88(s10)
    e88295de:	eb2d                	bnez	a4,e8829650 <mDNSCoreReceiveResponse+0xb16>
                            LogInfo("mDNSCoreReceiveResponse: Dep Record: %08lX %s", rr->resrec.rdatahash, ARDisplayString(m, rr));
    e88295e0:	000ab797          	auipc	a5,0xab
    e88295e4:	49478793          	addi	a5,a5,1172 # e88d4a74 <mDNS_LoggingEnabled>
    e88295e8:	4398                	lw	a4,0(a5)
    e88295ea:	c70d                	beqz	a4,e8829614 <mDNSCoreReceiveResponse+0xada>
    e88295ec:	030d3583          	ld	a1,48(s10)
    e88295f0:	01cd2c83          	lw	s9,28(s10)
    e88295f4:	03b40613          	addi	a2,s0,59
    e88295f8:	0591                	addi	a1,a1,4
    e88295fa:	008d0513          	addi	a0,s10,8
    e88295fe:	c16ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829602:	86aa                	mv	a3,a0
    e8829604:	8666                	mv	a2,s9
    e8829606:	0007f597          	auipc	a1,0x7f
    e882960a:	2da58593          	addi	a1,a1,730 # e88a88e0 <hexValues.12413+0x930>
    e882960e:	450d                	li	a0,3
    e8829610:	69d050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        if (rr->ProbeCount > DefaultProbeCountForTypeUnique)
    e8829614:	0b6d4683          	lbu	a3,182(s10)
    e8829618:	470d                	li	a4,3
    e882961a:	02d77d63          	bgeu	a4,a3,e8829654 <mDNSCoreReceiveResponse+0xb1a>
                            LogInfo("mDNSCoreReceiveResponse: Already reset to Probing: %s", ARDisplayString(m, rr));
    e882961e:	000ab797          	auipc	a5,0xab
    e8829622:	45678793          	addi	a5,a5,1110 # e88d4a74 <mDNS_LoggingEnabled>
    e8829626:	4398                	lw	a4,0(a5)
    e8829628:	dc070ee3          	beqz	a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    e882962c:	030d3583          	ld	a1,48(s10)
    e8829630:	03b40613          	addi	a2,s0,59
    e8829634:	008d0513          	addi	a0,s10,8
    e8829638:	0591                	addi	a1,a1,4
    e882963a:	bdaed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882963e:	862a                	mv	a2,a0
    e8829640:	0007f597          	auipc	a1,0x7f
    e8829644:	2d058593          	addi	a1,a1,720 # e88a8910 <hexValues.12413+0x960>
                            LogInfo("mDNSCoreReceiveResponse: Ignoring response received before we even began probing: %s", ARDisplayString(m, rr));
    e8829648:	450d                	li	a0,3
    e882964a:	663050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882964e:	bb5d                	j	e8829404 <mDNSCoreReceiveResponse+0x8ca>
    e8829650:	8d3a                	mv	s10,a4
    e8829652:	b761                	j	e88295da <mDNSCoreReceiveResponse+0xaa0>
                        else if (rr->ProbeCount == DefaultProbeCountForTypeUnique)
    e8829654:	02e69863          	bne	a3,a4,e8829684 <mDNSCoreReceiveResponse+0xb4a>
                            LogInfo("mDNSCoreReceiveResponse: Ignoring response received before we even began probing: %s", ARDisplayString(m, rr));
    e8829658:	000ab797          	auipc	a5,0xab
    e882965c:	41c78793          	addi	a5,a5,1052 # e88d4a74 <mDNS_LoggingEnabled>
    e8829660:	4398                	lw	a4,0(a5)
    e8829662:	da0701e3          	beqz	a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    e8829666:	030d3583          	ld	a1,48(s10)
    e882966a:	03b40613          	addi	a2,s0,59
    e882966e:	008d0513          	addi	a0,s10,8
    e8829672:	0591                	addi	a1,a1,4
    e8829674:	ba0ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829678:	862a                	mv	a2,a0
    e882967a:	0007f597          	auipc	a1,0x7f
    e882967e:	2ce58593          	addi	a1,a1,718 # e88a8948 <hexValues.12413+0x998>
    e8829682:	b7d9                	j	e8829648 <mDNSCoreReceiveResponse+0xb0e>
    e8829684:	0a015783          	lhu	a5,160(sp)
                            LogMsg("mDNSCoreReceiveResponse: Received from %#a:%d %s", srcaddr, mDNSVal16(srcport), CRDisplayString(m, &m->rec.r));
    e8829688:	01240733          	add	a4,s0,s2
    e882968c:	50873583          	ld	a1,1288(a4)
    e8829690:	3c87b68b          	extu	a3,a5,15,8
    e8829694:	07815783          	lhu	a5,120(sp)
    e8829698:	03b40c93          	addi	s9,s0,59
    e882969c:	4e090513          	addi	a0,s2,1248
    e88296a0:	8edd                	or	a3,a3,a5
    e88296a2:	8666                	mv	a2,s9
    e88296a4:	0591                	addi	a1,a1,4
    e88296a6:	9522                	add	a0,a0,s0
    e88296a8:	ed36                	sd	a3,152(sp)
    e88296aa:	b6aed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88296ae:	872a                	mv	a4,a0
    e88296b0:	66ea                	ld	a3,152(sp)
    e88296b2:	7642                	ld	a2,48(sp)
    e88296b4:	0007f597          	auipc	a1,0x7f
    e88296b8:	2ec58593          	addi	a1,a1,748 # e88a89a0 <hexValues.12413+0x9f0>
    e88296bc:	4501                	li	a0,0
    e88296be:	5ef050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            if (rr->resrec.RecordType == kDNSRecordTypeVerified)
    e88296c2:	008d4703          	lbu	a4,8(s10)
    e88296c6:	46c1                	li	a3,16
    e88296c8:	04d71263          	bne	a4,a3,e882970c <mDNSCoreReceiveResponse+0xbd2>
                                LogMsg("mDNSCoreReceiveResponse: Resetting to Probing: %s", ARDisplayString(m, rr));
    e88296cc:	030d3583          	ld	a1,48(s10)
    e88296d0:	8666                	mv	a2,s9
    e88296d2:	008d0513          	addi	a0,s10,8
    e88296d6:	0591                	addi	a1,a1,4
    e88296d8:	b3ced0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88296dc:	862a                	mv	a2,a0
    e88296de:	0007f597          	auipc	a1,0x7f
    e88296e2:	2fa58593          	addi	a1,a1,762 # e88a89d8 <hexValues.12413+0xa28>
    e88296e6:	4501                	li	a0,0
    e88296e8:	5c5050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                                rr->resrec.RecordType     = kDNSRecordTypeUnique;
    e88296ec:	4709                	li	a4,2
    e88296ee:	00ed0423          	sb	a4,8(s10)
                                rr->ProbeCount     = DefaultProbeCountForTypeUnique + 1;
    e88296f2:	40400713          	li	a4,1028
    e88296f6:	0aed1b23          	sh	a4,182(s10)
                                        InitializeLastAPTime(m, rr);
    e88296fa:	85ea                	mv	a1,s10
    e88296fc:	8522                	mv	a0,s0
    e88296fe:	84ff20ef          	jal	ra,e881bf4c <InitializeLastAPTime>
                                        RecordProbeFailure(m, rr);  // Repeated late conflicts also cause us to back off to the slower probing rate
    e8829702:	85ea                	mv	a1,s10
    e8829704:	8522                	mv	a0,s0
    e8829706:	f62f20ef          	jal	ra,e881be68 <RecordProbeFailure>
    e882970a:	b9ed                	j	e8829404 <mDNSCoreReceiveResponse+0x8ca>
                            else if (rr->resrec.RecordType == kDNSRecordTypeUnique)
    e882970c:	4689                	li	a3,2
    e882970e:	18d71463          	bne	a4,a3,e8829896 <mDNSCoreReceiveResponse+0xd5c>
    for (rrPtr = m->SPSRRSet; rrPtr; rrPtr = rrPtr->next)
    e8829712:	6711                	lui	a4,0x4
    e8829714:	9722                	add	a4,a4,s0
    e8829716:	d6873703          	ld	a4,-664(a4) # 3d68 <memcmp-0xe87fc298>
    e882971a:	e341                	bnez	a4,e882979a <mDNSCoreReceiveResponse+0xc60>
    LogSPS("Stored Proxy records :");
    e882971c:	000ab797          	auipc	a5,0xab
    e8829720:	35878793          	addi	a5,a5,856 # e88d4a74 <mDNS_LoggingEnabled>
    e8829724:	4398                	lw	a4,0(a5)
    e8829726:	cb01                	beqz	a4,e8829736 <mDNSCoreReceiveResponse+0xbfc>
    e8829728:	0007f597          	auipc	a1,0x7f
    e882972c:	34058593          	addi	a1,a1,832 # e88a8a68 <hexValues.12413+0xab8>
    e8829730:	4509                	li	a0,2
    e8829732:	57b050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (rrPtr = m->SPSRRSet; rrPtr; rrPtr = rrPtr->next)
    e8829736:	6711                	lui	a4,0x4
    e8829738:	9722                	add	a4,a4,s0
    e882973a:	d6873703          	ld	a4,-664(a4) # 3d68 <memcmp-0xe87fc298>
    e882973e:	e37d                	bnez	a4,e8829824 <mDNSCoreReceiveResponse+0xcea>
                                    if (m->DelayConflictProcessing)
    e8829740:	27042703          	lw	a4,624(s0)
    e8829744:	008d0513          	addi	a0,s10,8
    e8829748:	10070763          	beqz	a4,e8829856 <mDNSCoreReceiveResponse+0xd1c>
                                        m->DelayConflictProcessing--;
    e882974c:	377d                	addiw	a4,a4,-1
    e882974e:	26e42823          	sw	a4,624(s0)
                                        LogMsg("Possible spurious conflict for %s. Attempt %d at suppressing probes for one second",
    e8829752:	030d3583          	ld	a1,48(s10)
    e8829756:	8666                	mv	a2,s9
    e8829758:	0591                	addi	a1,a1,4
    e882975a:	abaed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882975e:	862a                	mv	a2,a0
    e8829760:	27042703          	lw	a4,624(s0)
    e8829764:	468d                	li	a3,3
    e8829766:	0007f597          	auipc	a1,0x7f
    e882976a:	31a58593          	addi	a1,a1,794 # e88a8a80 <hexValues.12413+0xad0>
    e882976e:	9e99                	subw	a3,a3,a4
    e8829770:	4501                	li	a0,0
    e8829772:	53b050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                                        rr->ProbeCount     = DefaultProbeCountForTypeUnique + 1;
    e8829776:	40400713          	li	a4,1028
                                        m->SuppressProbes  = NonZeroTime(m->timenow + mDNSPlatformOneSecond);
    e882977a:	000ab697          	auipc	a3,0xab
    e882977e:	30668693          	addi	a3,a3,774 # e88d4a80 <mDNSPlatformOneSecond>
                                        rr->ProbeCount     = DefaultProbeCountForTypeUnique + 1;
    e8829782:	0aed1b23          	sh	a4,182(s10)
                                        m->SuppressProbes  = NonZeroTime(m->timenow + mDNSPlatformOneSecond);
    e8829786:	4294                	lw	a3,0(a3)
    e8829788:	24042703          	lw	a4,576(s0)
    e882978c:	9f35                	addw	a4,a4,a3
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e882978e:	e311                	bnez	a4,e8829792 <mDNSCoreReceiveResponse+0xc58>
    e8829790:	4705                	li	a4,1
    e8829792:	77a6                	ld	a5,104(sp)
    e8829794:	1ee7a823          	sw	a4,496(a5)
    e8829798:	b78d                	j	e88296fa <mDNSCoreReceiveResponse+0xbc0>
        if (IdenticalResourceRecord(&rrPtr->resrec, &rr->resrec))
    e882979a:	6786                	ld	a5,64(sp)
    e882979c:	6710                	ld	a2,8(a4)
    e882979e:	008d3683          	ld	a3,8(s10)
    e88297a2:	8e7d                	and	a2,a2,a5
    e88297a4:	8efd                	and	a3,a3,a5
    e88297a6:	06d61d63          	bne	a2,a3,e8829820 <mDNSCoreReceiveResponse+0xce6>
    e88297aa:	4f10                	lw	a2,24(a4)
    e88297ac:	018d2683          	lw	a3,24(s10)
    e88297b0:	06d61863          	bne	a2,a3,e8829820 <mDNSCoreReceiveResponse+0xce6>
    e88297b4:	01475603          	lhu	a2,20(a4)
    e88297b8:	014d5683          	lhu	a3,20(s10)
    e88297bc:	06d61263          	bne	a2,a3,e8829820 <mDNSCoreReceiveResponse+0xce6>
    e88297c0:	4f50                	lw	a2,28(a4)
    e88297c2:	01cd2683          	lw	a3,28(s10)
    e88297c6:	04d61d63          	bne	a2,a3,e8829820 <mDNSCoreReceiveResponse+0xce6>
    e88297ca:	030d3583          	ld	a1,48(s10)
    e88297ce:	00870513          	addi	a0,a4,8
    e88297d2:	fffea617          	auipc	a2,0xfffea
    e88297d6:	87860613          	addi	a2,a2,-1928 # e881304a <SameDomainName>
    e88297da:	0591                	addi	a1,a1,4
    e88297dc:	ed3a                	sd	a4,152(sp)
    e88297de:	82dea0ef          	jal	ra,e881400a <SameRDataBody>
    e88297e2:	676a                	ld	a4,152(sp)
    e88297e4:	cd15                	beqz	a0,e8829820 <mDNSCoreReceiveResponse+0xce6>
    e88297e6:	7708                	ld	a0,40(a4)
    e88297e8:	028d3583          	ld	a1,40(s10)
    e88297ec:	85fe90ef          	jal	ra,e881304a <SameDomainName>
    e88297f0:	676a                	ld	a4,152(sp)
    e88297f2:	c51d                	beqz	a0,e8829820 <mDNSCoreReceiveResponse+0xce6>
            LogSPS("mDNSCoreRegisteredProxyRecord: Ignoring packet registered with sleep proxy : %s ", ARDisplayString(m, rr));
    e88297f4:	000ab797          	auipc	a5,0xab
    e88297f8:	28078793          	addi	a5,a5,640 # e88d4a74 <mDNS_LoggingEnabled>
    e88297fc:	4398                	lw	a4,0(a5)
    e88297fe:	c00703e3          	beqz	a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    e8829802:	030d3583          	ld	a1,48(s10)
    e8829806:	8666                	mv	a2,s9
    e8829808:	008d0513          	addi	a0,s10,8
    e882980c:	0591                	addi	a1,a1,4
    e882980e:	a06ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829812:	862a                	mv	a2,a0
    e8829814:	0007f597          	auipc	a1,0x7f
    e8829818:	1fc58593          	addi	a1,a1,508 # e88a8a10 <hexValues.12413+0xa60>
    e882981c:	4509                	li	a0,2
    e882981e:	b535                	j	e882964a <mDNSCoreReceiveResponse+0xb10>
    for (rrPtr = m->SPSRRSet; rrPtr; rrPtr = rrPtr->next)
    e8829820:	6318                	ld	a4,0(a4)
    e8829822:	bde5                	j	e882971a <mDNSCoreReceiveResponse+0xbe0>
        LogSPS("%s", ARDisplayString(m, rrPtr));
    e8829824:	000ab797          	auipc	a5,0xab
    e8829828:	25078793          	addi	a5,a5,592 # e88d4a74 <mDNS_LoggingEnabled>
    e882982c:	4394                	lw	a3,0(a5)
    e882982e:	c295                	beqz	a3,e8829852 <mDNSCoreReceiveResponse+0xd18>
    e8829830:	7b0c                	ld	a1,48(a4)
    e8829832:	00870513          	addi	a0,a4,8
    e8829836:	8666                	mv	a2,s9
    e8829838:	0591                	addi	a1,a1,4
    e882983a:	ed3a                	sd	a4,152(sp)
    e882983c:	9d8ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829840:	862a                	mv	a2,a0
    e8829842:	00081597          	auipc	a1,0x81
    e8829846:	b5e58593          	addi	a1,a1,-1186 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e882984a:	4509                	li	a0,2
    e882984c:	461050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8829850:	676a                	ld	a4,152(sp)
    for (rrPtr = m->SPSRRSet; rrPtr; rrPtr = rrPtr->next)
    e8829852:	6318                	ld	a4,0(a4)
    e8829854:	b5ed                	j	e882973e <mDNSCoreReceiveResponse+0xc04>
                                        LogMsg("mDNSCoreReceiveResponse: ProbeCount %d; will deregister %s", rr->ProbeCount, ARDisplayString(m, rr));
    e8829856:	030d3583          	ld	a1,48(s10)
    e882985a:	0b6d4703          	lbu	a4,182(s10)
    e882985e:	8666                	mv	a2,s9
    e8829860:	0591                	addi	a1,a1,4
    e8829862:	ed3a                	sd	a4,152(sp)
    e8829864:	9b0ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829868:	86aa                	mv	a3,a0
    e882986a:	676a                	ld	a4,152(sp)
    e882986c:	0007f597          	auipc	a1,0x7f
    e8829870:	26c58593          	addi	a1,a1,620 # e88a8ad8 <hexValues.12413+0xb28>
    e8829874:	4501                	li	a0,0
    e8829876:	863a                	mv	a2,a4
    e8829878:	435050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                                        m->mDNSStats.NameConflicts++;
    e882987c:	6715                	lui	a4,0x5
    e882987e:	9722                	add	a4,a4,s0
    e8829880:	e9472683          	lw	a3,-364(a4) # 4e94 <memcmp-0xe87fb16c>
    e8829884:	2685                	addiw	a3,a3,1
    e8829886:	e8d72a23          	sw	a3,-364(a4)
                                mDNS_Deregister_internal(m, rr, mDNS_Dereg_conflict);
    e882988a:	4609                	li	a2,2
    e882988c:	85ea                	mv	a1,s10
    e882988e:	8522                	mv	a0,s0
    e8829890:	eddf80ef          	jal	ra,e882276c <mDNS_Deregister_internal>
    e8829894:	be85                	j	e8829404 <mDNSCoreReceiveResponse+0x8ca>
                            else if (rr->resrec.RecordType == kDNSRecordTypeKnownUnique)
    e8829896:	030d3583          	ld	a1,48(s10)
    e882989a:	02000693          	li	a3,32
    e882989e:	008d0513          	addi	a0,s10,8
    e88298a2:	0591                	addi	a1,a1,4
    e88298a4:	02d71563          	bne	a4,a3,e88298ce <mDNSCoreReceiveResponse+0xd94>
                                LogMsg("mDNSCoreReceiveResponse: Unexpected conflict discarding %s", ARDisplayString(m, rr));
    e88298a8:	8666                	mv	a2,s9
    e88298aa:	96aed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88298ae:	862a                	mv	a2,a0
    e88298b0:	0007f597          	auipc	a1,0x7f
    e88298b4:	26858593          	addi	a1,a1,616 # e88a8b18 <hexValues.12413+0xb68>
    e88298b8:	4501                	li	a0,0
    e88298ba:	3f3050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                                m->mDNSStats.KnownUniqueNameConflicts++;
    e88298be:	6715                	lui	a4,0x5
    e88298c0:	9722                	add	a4,a4,s0
    e88298c2:	e9872683          	lw	a3,-360(a4) # 4e98 <memcmp-0xe87fb168>
    e88298c6:	2685                	addiw	a3,a3,1
    e88298c8:	e8d72c23          	sw	a3,-360(a4)
    e88298cc:	bf7d                	j	e882988a <mDNSCoreReceiveResponse+0xd50>
                                LogMsg("mDNSCoreReceiveResponse: Unexpected record type %X %s", rr->resrec.RecordType, ARDisplayString(m, rr));
    e88298ce:	8666                	mv	a2,s9
    e88298d0:	ed3a                	sd	a4,152(sp)
    e88298d2:	942ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88298d6:	86aa                	mv	a3,a0
    e88298d8:	676a                	ld	a4,152(sp)
    e88298da:	0007f597          	auipc	a1,0x7f
    e88298de:	27e58593          	addi	a1,a1,638 # e88a8b58 <hexValues.12413+0xba8>
    e88298e2:	4501                	li	a0,0
    e88298e4:	863a                	mv	a2,a4
    e88298e6:	3c7050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88298ea:	be29                	j	e8829404 <mDNSCoreReceiveResponse+0x8ca>
                    else if (m->rec.r.resrec.rrtype == rr->resrec.rrtype)
    e88298ec:	01240733          	add	a4,s0,s2
    e88298f0:	4e275603          	lhu	a2,1250(a4)
    e88298f4:	00ad5683          	lhu	a3,10(s10)
    e88298f8:	b0d616e3          	bne	a2,a3,e8829404 <mDNSCoreReceiveResponse+0x8ca>
                        if ((m->rec.r.resrec.RecordType & kDNSRecordTypePacketUniqueMask) && (mDNSu32)(m->timenow - rr->LastMCTime) > (mDNSu32)mDNSPlatformOneSecond/2)
    e88298fc:	4e074703          	lbu	a4,1248(a4)
    e8829900:	8b41                	andi	a4,a4,16
    e8829902:	b00701e3          	beqz	a4,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    e8829906:	000ab717          	auipc	a4,0xab
    e882990a:	17a70713          	addi	a4,a4,378 # e88d4a80 <mDNSPlatformOneSecond>
    e882990e:	24042683          	lw	a3,576(s0)
    e8829912:	118d2603          	lw	a2,280(s10)
    e8829916:	4318                	lw	a4,0(a4)
    e8829918:	9e91                	subw	a3,a3,a2
    e882991a:	7c17370b          	extu	a4,a4,31,1
    e882991e:	aed773e3          	bgeu	a4,a3,e8829404 <mDNSCoreReceiveResponse+0x8ca>
    e8829922:	b919                	j	e8829538 <mDNSCoreReceiveResponse+0x9fe>
    ResourceRecord *rr = &newcr->resrec;
    e8829924:	7722                	ld	a4,40(sp)
    for (cr = crlist; cr != (CacheRecord*)1; cr = cr->NextInCFList)
    e8829926:	4d05                	li	s10,1
        domainname *target = GetRRDomainNameTarget(&cr->resrec);
    e8829928:	002006b7          	lui	a3,0x200
            AcceptableResponse = IsResponseAcceptable(m, CacheFlushRecords, unicastQuestion, &nseclist);
    e882992c:	77ce                	ld	a5,240(sp)
        domainname *target = GetRRDomainNameTarget(&cr->resrec);
    e882992e:	04968693          	addi	a3,a3,73 # 200049 <memcmp-0xe85fffb7>
    e8829932:	025d1813          	slli	a6,s10,0x25
    ResourceRecord *rr = &newcr->resrec;
    e8829936:	00870c93          	addi	s9,a4,8
        if (target && cr->resrec.rdatahash == rr->namehash && SameDomainName(target, rr->name))
    e882993a:	01240633          	add	a2,s0,s2
        domainname *target = GetRRDomainNameTarget(&cr->resrec);
    e882993e:	06be                	slli	a3,a3,0xf
    e8829940:	40980813          	addi	a6,a6,1033
    for (cr = crlist; cr != (CacheRecord*)1; cr = cr->NextInCFList)
    e8829944:	09a79063          	bne	a5,s10,e88299c4 <mDNSCoreReceiveResponse+0xe8a>
    if (q && DNSSECQuestion(q))
    e8829948:	3a048063          	beqz	s1,e8829ce8 <mDNSCoreReceiveResponse+0x11ae>
    e882994c:	3244c783          	lbu	a5,804(s1)
    e8829950:	ef81                	bnez	a5,e8829968 <mDNSCoreReceiveResponse+0xe2e>
    e8829952:	14a4c783          	lbu	a5,330(s1)
    e8829956:	eb89                	bnez	a5,e8829968 <mDNSCoreReceiveResponse+0xe2e>
    e8829958:	3254c783          	lbu	a5,805(s1)
    e882995c:	38078663          	beqz	a5,e8829ce8 <mDNSCoreReceiveResponse+0x11ae>
    e8829960:	3264c783          	lbu	a5,806(s1)
    e8829964:	38078263          	beqz	a5,e8829ce8 <mDNSCoreReceiveResponse+0x11ae>
        mDNSBool same = SameDomainName(&q->qname, rr->name);
    e8829968:	01240d33          	add	s10,s0,s2
    e882996c:	500d3583          	ld	a1,1280(s10)
    e8829970:	21448513          	addi	a0,s1,532
    e8829974:	ed6e90ef          	jal	ra,e881304a <SameDomainName>
    e8829978:	862a                	mv	a2,a0
        if (same && (q->qtype == rr->rrtype || rr->rrtype == kDNSType_CNAME))
    e882997a:	24050863          	beqz	a0,e8829bca <mDNSCoreReceiveResponse+0x1090>
    e882997e:	3144d503          	lhu	a0,788(s1)
    e8829982:	4e2d5783          	lhu	a5,1250(s10)
    e8829986:	00f50563          	beq	a0,a5,e8829990 <mDNSCoreReceiveResponse+0xe56>
    e882998a:	4715                	li	a4,5
    e882998c:	22e79f63          	bne	a5,a4,e8829bca <mDNSCoreReceiveResponse+0x1090>
            LogInfo("IsResponseAcceptable: Accepting, same name and qtype %s, CR %s", DNSTypeName(q->qtype),
    e8829990:	000ab797          	auipc	a5,0xab
    e8829994:	0e478793          	addi	a5,a5,228 # e88d4a74 <mDNS_LoggingEnabled>
    e8829998:	439c                	lw	a5,0(a5)
    e882999a:	cbdd                	beqz	a5,e8829a50 <mDNSCoreReceiveResponse+0xf16>
    e882999c:	ac4ec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88299a0:	8d2a                	mv	s10,a0
    e88299a2:	01240733          	add	a4,s0,s2
    e88299a6:	50873583          	ld	a1,1288(a4)
    e88299aa:	03b40613          	addi	a2,s0,59
    e88299ae:	8566                	mv	a0,s9
    e88299b0:	0591                	addi	a1,a1,4
    e88299b2:	862ed0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88299b6:	86aa                	mv	a3,a0
    e88299b8:	866a                	mv	a2,s10
    e88299ba:	0007f597          	auipc	a1,0x7f
    e88299be:	22e58593          	addi	a1,a1,558 # e88a8be8 <hexValues.12413+0xc38>
    e88299c2:	a061                	j	e8829a4a <mDNSCoreReceiveResponse+0xf10>
        domainname *target = GetRRDomainNameTarget(&cr->resrec);
    e88299c4:	00a7d583          	lhu	a1,10(a5)
    e88299c8:	02500513          	li	a0,37
    e88299cc:	ffe5871b          	addiw	a4,a1,-2
    e88299d0:	3c07370b          	extu	a4,a4,15,0
    e88299d4:	1ce56463          	bltu	a0,a4,e8829b9c <mDNSCoreReceiveResponse+0x1062>
    e88299d8:	00e85733          	srl	a4,a6,a4
    e88299dc:	0007370b          	extu	a4,a4,0,0
    e88299e0:	1a070e63          	beqz	a4,e8829b9c <mDNSCoreReceiveResponse+0x1062>
    e88299e4:	7b88                	ld	a0,48(a5)
    e88299e6:	0511                	addi	a0,a0,4
        if (target && cr->resrec.rdatahash == rr->namehash && SameDomainName(target, rr->name))
    e88299e8:	1c050f63          	beqz	a0,e8829bc6 <mDNSCoreReceiveResponse+0x108c>
    e88299ec:	4fcc                	lw	a1,28(a5)
    e88299ee:	4f062703          	lw	a4,1264(a2)
    e88299f2:	1ce59a63          	bne	a1,a4,e8829bc6 <mDNSCoreReceiveResponse+0x108c>
    e88299f6:	50063583          	ld	a1,1280(a2)
    e88299fa:	fcbe                	sd	a5,120(sp)
    e88299fc:	f4b2                	sd	a2,104(sp)
    e88299fe:	e4ce90ef          	jal	ra,e881304a <SameDomainName>
    e8829a02:	00200737          	lui	a4,0x200
    e8829a06:	04970713          	addi	a4,a4,73 # 200049 <memcmp-0xe85fffb7>
    e8829a0a:	00f71693          	slli	a3,a4,0xf
    e8829a0e:	4705                	li	a4,1
    e8829a10:	1716                	slli	a4,a4,0x25
    e8829a12:	7626                	ld	a2,104(sp)
    e8829a14:	77e6                	ld	a5,120(sp)
    e8829a16:	40970813          	addi	a6,a4,1033
    e8829a1a:	1a050663          	beqz	a0,e8829bc6 <mDNSCoreReceiveResponse+0x108c>
            LogInfo("IsResponseAcceptable: Found a matching entry for %##s in the CacheFlushRecords %s", rr->name->c, CRDisplayString(m, cr));
    e8829a1e:	000ab717          	auipc	a4,0xab
    e8829a22:	05670713          	addi	a4,a4,86 # e88d4a74 <mDNS_LoggingEnabled>
    e8829a26:	4318                	lw	a4,0(a4)
    e8829a28:	c705                	beqz	a4,e8829a50 <mDNSCoreReceiveResponse+0xf16>
    e8829a2a:	7b8c                	ld	a1,48(a5)
    e8829a2c:	50063c83          	ld	s9,1280(a2)
    e8829a30:	00878513          	addi	a0,a5,8
    e8829a34:	03b40613          	addi	a2,s0,59
    e8829a38:	0591                	addi	a1,a1,4
    e8829a3a:	fdbec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829a3e:	86aa                	mv	a3,a0
    e8829a40:	8666                	mv	a2,s9
    e8829a42:	0007f597          	auipc	a1,0x7f
    e8829a46:	14e58593          	addi	a1,a1,334 # e88a8b90 <hexValues.12413+0xbe0>
            LogInfo("IsResponseAcceptable: Accepting, same name and qtype %s, CR %s", DNSTypeName(q->qtype),
    e8829a4a:	450d                	li	a0,3
    e8829a4c:	261050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (AcceptableResponse) m->rec.r.resrec.rDNSServer = uDNSServer;
    e8829a50:	6746                	ld	a4,80(sp)
    e8829a52:	012407b3          	add	a5,s0,s2
    e8829a56:	8cd2                	mv	s9,s4
    e8829a58:	50e7b823          	sd	a4,1296(a5)
    e8829a5c:	4a05                	li	s4,1
        if (m->rrcache_size && AcceptableResponse)
    e8829a5e:	2f042783          	lw	a5,752(s0)
    e8829a62:	d4078363          	beqz	a5,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
    e8829a66:	d40a0163          	beqz	s4,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
            const mDNSu32 slot = HashSlotFromNameHash(m->rec.r.resrec.namehash);
    e8829a6a:	012407b3          	add	a5,s0,s2
    e8829a6e:	4f07a783          	lw	a5,1264(a5)
    e8829a72:	1f300713          	li	a4,499
            CacheGroup *cg = CacheGroupForRecord(m, &m->rec.r.resrec);
    e8829a76:	8522                	mv	a0,s0
            const mDNSu32 slot = HashSlotFromNameHash(m->rec.r.resrec.namehash);
    e8829a78:	02e7f7bb          	remuw	a5,a5,a4
    e8829a7c:	fcbe                	sd	a5,120(sp)
            CacheGroup *cg = CacheGroupForRecord(m, &m->rec.r.resrec);
    e8829a7e:	4e090793          	addi	a5,s2,1248
    e8829a82:	97a2                	add	a5,a5,s0
    e8829a84:	85be                	mv	a1,a5
    e8829a86:	f4be                	sd	a5,104(sp)
    e8829a88:	da9f40ef          	jal	ra,e881e830 <CacheGroupForRecord>
    e8829a8c:	ed2a                	sd	a0,152(sp)
            if (McastNSEC3Records)
    e8829a8e:	6792                	ld	a5,256(sp)
    e8829a90:	c791                	beqz	a5,e8829a9c <mDNSCoreReceiveResponse+0xf62>
                InitializeAnonInfoForCR(m, &McastNSEC3Records, &m->rec.r);
    e8829a92:	7622                	ld	a2,40(sp)
    e8829a94:	020c                	addi	a1,sp,256
    e8829a96:	8522                	mv	a0,s0
    e8829a98:	facf00ef          	jal	ra,e881a244 <InitializeAnonInfoForCR>
            if (!nseclist)
    e8829a9c:	000c9e63          	bnez	s9,e8829ab8 <mDNSCoreReceiveResponse+0xf7e>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8829aa0:	67ea                	ld	a5,152(sp)
    e8829aa2:	cb99                	beqz	a5,e8829ab8 <mDNSCoreReceiveResponse+0xf7e>
    e8829aa4:	0107bd03          	ld	s10,16(a5)
                LogInfo("mDNSCoreReceiveCacheCheck: Discarding due to domainname case change in %d slot %3d in %d %d",
    e8829aa8:	77e6                	ld	a5,120(sp)
    e8829aaa:	4a878793          	addi	a5,a5,1192
    e8829aae:	04f4178b          	addsl	a5,s0,a5,2
    e8829ab2:	e5be                	sd	a5,200(sp)
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8829ab4:	2e0d1563          	bnez	s10,e8829d9e <mDNSCoreReceiveResponse+0x1264>
            if (!rr && m->rec.r.resrec.rroriginalttl > 0)
    e8829ab8:	012407b3          	add	a5,s0,s2
    e8829abc:	4e87a703          	lw	a4,1256(a5)
    e8829ac0:	ce070463          	beqz	a4,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
                const mDNSBool AddToCFList = (m->rec.r.resrec.RecordType & kDNSRecordTypePacketUniqueMask) && (LLQType != uDNS_LLQ_Events);
    e8829ac4:	4e07c783          	lbu	a5,1248(a5)
    e8829ac8:	8bc1                	andi	a5,a5,16
    e8829aca:	c789                	beqz	a5,e8829ad4 <mDNSCoreReceiveResponse+0xf9a>
    e8829acc:	6762                	ld	a4,24(sp)
    e8829ace:	478d                	li	a5,3
    e8829ad0:	68f71863          	bne	a4,a5,e882a160 <mDNSCoreReceiveResponse+0x1626>
                    delay = CheckForSoonToExpireRecords(m, m->rec.r.resrec.name, m->rec.r.resrec.namehash, mDNSNULL);
    e8829ad4:	012407b3          	add	a5,s0,s2
    e8829ad8:	4f07a603          	lw	a2,1264(a5)
    e8829adc:	5007b583          	ld	a1,1280(a5)
    e8829ae0:	4681                	li	a3,0
    e8829ae2:	8522                	mv	a0,s0
    e8829ae4:	debf40ef          	jal	ra,e881e8ce <CheckForSoonToExpireRecords>
    e8829ae8:	86aa                	mv	a3,a0
                const mDNSBool AddToCFList = (m->rec.r.resrec.RecordType & kDNSRecordTypePacketUniqueMask) && (LLQType != uDNS_LLQ_Events);
    e8829aea:	f482                	sd	zero,104(sp)
                rr = CreateNewCacheEntry(m, slot, cg, delay, !nseclist, srcaddr);
    e8829aec:	77c2                	ld	a5,48(sp)
    e8829aee:	666a                	ld	a2,152(sp)
    e8829af0:	75e6                	ld	a1,120(sp)
    e8829af2:	001cc713          	xori	a4,s9,1
    e8829af6:	0ff77713          	andi	a4,a4,255
    e8829afa:	8522                	mv	a0,s0
    e8829afc:	fbefd0ef          	jal	ra,e88272ba <CreateNewCacheEntry>
    e8829b00:	8d2a                	mv	s10,a0
                if (rr)
    e8829b02:	ca050363          	beqz	a0,e8828fa8 <mDNSCoreReceiveResponse+0x46e>
                    rr->responseFlags = response->h.flags;
    e8829b06:	0029d703          	lhu	a4,2(s3)
                    if (rr->resrec.rrtype == kDNSType_RRSIG && !nseclist)
    e8829b0a:	00a55683          	lhu	a3,10(a0)
                    rr->responseFlags = response->h.flags;
    e8829b0e:	06e51723          	sh	a4,110(a0)
                    if (rr->resrec.rrtype == kDNSType_RRSIG && !nseclist)
    e8829b12:	02e00713          	li	a4,46
    e8829b16:	00e69663          	bne	a3,a4,e8829b22 <mDNSCoreReceiveResponse+0xfe8>
                        rrsigsCreated = mDNStrue;
    e8829b1a:	678a                	ld	a5,128(sp)
    e8829b1c:	419a178b          	mveqz	a5,s4,s9
    e8829b20:	e13e                	sd	a5,128(sp)
                    rr->CRDNSSECQuestion = 0;
    e8829b22:	060d06a3          	sb	zero,109(s10)
                    if (unicastQuestion && DNSSECQuestion(unicastQuestion))
    e8829b26:	ccb9                	beqz	s1,e8829b84 <mDNSCoreReceiveResponse+0x104a>
    e8829b28:	3244c703          	lbu	a4,804(s1)
    e8829b2c:	eb11                	bnez	a4,e8829b40 <mDNSCoreReceiveResponse+0x1006>
    e8829b2e:	14a4c703          	lbu	a4,330(s1)
    e8829b32:	e719                	bnez	a4,e8829b40 <mDNSCoreReceiveResponse+0x1006>
    e8829b34:	3254c703          	lbu	a4,805(s1)
    e8829b38:	c731                	beqz	a4,e8829b84 <mDNSCoreReceiveResponse+0x104a>
    e8829b3a:	3264c703          	lbu	a4,806(s1)
    e8829b3e:	c339                	beqz	a4,e8829b84 <mDNSCoreReceiveResponse+0x104a>
                        LogInfo("mDNSCoreReceiveResponse: CRDNSSECQuestion set for new record %s, question %##s (%s)", CRDisplayString(m, rr),
    e8829b40:	000ab717          	auipc	a4,0xab
    e8829b44:	f3470713          	addi	a4,a4,-204 # e88d4a74 <mDNS_LoggingEnabled>
    e8829b48:	4318                	lw	a4,0(a4)
    e8829b4a:	cb15                	beqz	a4,e8829b7e <mDNSCoreReceiveResponse+0x1044>
    e8829b4c:	030d3583          	ld	a1,48(s10)
    e8829b50:	03b40613          	addi	a2,s0,59
    e8829b54:	008d0513          	addi	a0,s10,8
    e8829b58:	0591                	addi	a1,a1,4
    e8829b5a:	ebbec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829b5e:	ed2a                	sd	a0,152(sp)
    e8829b60:	3144d503          	lhu	a0,788(s1)
    e8829b64:	8fcec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8829b68:	872a                	mv	a4,a0
    e8829b6a:	666a                	ld	a2,152(sp)
    e8829b6c:	21448693          	addi	a3,s1,532
    e8829b70:	0007f597          	auipc	a1,0x7f
    e8829b74:	40858593          	addi	a1,a1,1032 # e88a8f78 <hexValues.12413+0xfc8>
    e8829b78:	450d                	li	a0,3
    e8829b7a:	133050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        rr->CRDNSSECQuestion = 1;
    e8829b7e:	4705                	li	a4,1
    e8829b80:	06ed06a3          	sb	a4,109(s10)
                    if (nseclist)
    e8829b84:	5e0c8c63          	beqz	s9,e882a17c <mDNSCoreReceiveResponse+0x1642>
                        rr->TimeRcvd = m->timenow;
    e8829b88:	24042703          	lw	a4,576(s0)
                        *nsecp = rr;
    e8829b8c:	77aa                	ld	a5,168(sp)
                        nsecp = &rr->next;
    e8829b8e:	f56a                	sd	s10,168(sp)
                        rr->TimeRcvd = m->timenow;
    e8829b90:	04ed2823          	sw	a4,80(s10)
                        *nsecp = rr;
    e8829b94:	01a7b023          	sd	s10,0(a5)
                        nsecp = &rr->next;
    e8829b98:	c10ff06f          	j	e8828fa8 <mDNSCoreReceiveResponse+0x46e>
        domainname *target = GetRRDomainNameTarget(&cr->resrec);
    e8829b9c:	0005871b          	sext.w	a4,a1
    e8829ba0:	02400513          	li	a0,36
    e8829ba4:	02e56163          	bltu	a0,a4,e8829bc6 <mDNSCoreReceiveResponse+0x108c>
    e8829ba8:	00b6d5b3          	srl	a1,a3,a1
    e8829bac:	0005b58b          	extu	a1,a1,0,0
    e8829bb0:	c581                	beqz	a1,e8829bb8 <mDNSCoreReceiveResponse+0x107e>
    e8829bb2:	7b88                	ld	a0,48(a5)
    e8829bb4:	0519                	addi	a0,a0,6
    e8829bb6:	bd0d                	j	e88299e8 <mDNSCoreReceiveResponse+0xeae>
    e8829bb8:	02100593          	li	a1,33
    e8829bbc:	00b71563          	bne	a4,a1,e8829bc6 <mDNSCoreReceiveResponse+0x108c>
    e8829bc0:	7b88                	ld	a0,48(a5)
    e8829bc2:	0529                	addi	a0,a0,10
    e8829bc4:	b515                	j	e88299e8 <mDNSCoreReceiveResponse+0xeae>
    for (cr = crlist; cr != (CacheRecord*)1; cr = cr->NextInCFList)
    e8829bc6:	7bbc                	ld	a5,112(a5)
    e8829bc8:	bbb5                	j	e8829944 <mDNSCoreReceiveResponse+0xe0a>
        if (rr->rrtype == kDNSType_RRSIG)
    e8829bca:	01240d33          	add	s10,s0,s2
    e8829bce:	4e2d5703          	lhu	a4,1250(s10)
    e8829bd2:	02e00693          	li	a3,46
    e8829bd6:	0cd71f63          	bne	a4,a3,e8829cb4 <mDNSCoreReceiveResponse+0x117a>
            mDNSu16 typeCovered = swap16(rrsig->typeCovered);
    e8829bda:	578d5503          	lhu	a0,1400(s10)
    e8829bde:	f4b2                	sd	a2,104(sp)
    e8829be0:	acae90ef          	jal	ra,e8812eaa <swap16>
    e8829be4:	8d2a                	mv	s10,a0
            if (same && ((typeCovered == q->qtype) || (typeCovered == kDNSType_CNAME)))
    e8829be6:	7626                	ld	a2,104(sp)
    e8829be8:	0005079b          	sext.w	a5,a0
    e8829bec:	c629                	beqz	a2,e8829c36 <mDNSCoreReceiveResponse+0x10fc>
    e8829bee:	3144d703          	lhu	a4,788(s1)
    e8829bf2:	00f70563          	beq	a4,a5,e8829bfc <mDNSCoreReceiveResponse+0x10c2>
    e8829bf6:	4715                	li	a4,5
    e8829bf8:	02e79f63          	bne	a5,a4,e8829c36 <mDNSCoreReceiveResponse+0x10fc>
                LogInfo("IsResponseAcceptable: Accepting RRSIG %s matches question type %s", CRDisplayString(m, newcr),
    e8829bfc:	000ab797          	auipc	a5,0xab
    e8829c00:	e7878793          	addi	a5,a5,-392 # e88d4a74 <mDNS_LoggingEnabled>
    e8829c04:	439c                	lw	a5,0(a5)
    e8829c06:	e40785e3          	beqz	a5,e8829a50 <mDNSCoreReceiveResponse+0xf16>
    e8829c0a:	012407b3          	add	a5,s0,s2
    e8829c0e:	5087b583          	ld	a1,1288(a5)
    e8829c12:	03b40613          	addi	a2,s0,59
    e8829c16:	8566                	mv	a0,s9
    e8829c18:	0591                	addi	a1,a1,4
    e8829c1a:	dfbec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829c1e:	f4aa                	sd	a0,104(sp)
    e8829c20:	3144d503          	lhu	a0,788(s1)
    e8829c24:	83cec0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8829c28:	86aa                	mv	a3,a0
    e8829c2a:	7626                	ld	a2,104(sp)
    e8829c2c:	0007f597          	auipc	a1,0x7f
    e8829c30:	ffc58593          	addi	a1,a1,-4 # e88a8c28 <hexValues.12413+0xc78>
    e8829c34:	bd19                	j	e8829a4a <mDNSCoreReceiveResponse+0xf10>
            else if (typeCovered == kDNSType_NSEC || typeCovered == kDNSType_NSEC3)
    e8829c36:	000ab717          	auipc	a4,0xab
    e8829c3a:	e3e70713          	addi	a4,a4,-450 # e88d4a74 <mDNS_LoggingEnabled>
    e8829c3e:	02f00613          	li	a2,47
    e8829c42:	4318                	lw	a4,0(a4)
    e8829c44:	00c78663          	beq	a5,a2,e8829c50 <mDNSCoreReceiveResponse+0x1116>
    e8829c48:	03200613          	li	a2,50
    e8829c4c:	02c79d63          	bne	a5,a2,e8829c86 <mDNSCoreReceiveResponse+0x114c>
                LogInfo("IsResponseAcceptable: Accepting RRSIG %s matches %s type (nseclist = 1)", CRDisplayString(m, newcr), DNSTypeName(typeCovered));
    e8829c50:	e319                	bnez	a4,e8829c56 <mDNSCoreReceiveResponse+0x111c>
            *nseclist = mDNStrue;
    e8829c52:	4a05                	li	s4,1
    e8829c54:	bbf5                	j	e8829a50 <mDNSCoreReceiveResponse+0xf16>
                LogInfo("IsResponseAcceptable: Accepting RRSIG %s matches %s type (nseclist = 1)", CRDisplayString(m, newcr), DNSTypeName(typeCovered));
    e8829c56:	012407b3          	add	a5,s0,s2
    e8829c5a:	5087b583          	ld	a1,1288(a5)
    e8829c5e:	03b40613          	addi	a2,s0,59
    e8829c62:	8566                	mv	a0,s9
    e8829c64:	0591                	addi	a1,a1,4
    e8829c66:	dafec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829c6a:	f4aa                	sd	a0,104(sp)
    e8829c6c:	856a                	mv	a0,s10
    e8829c6e:	ff3eb0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8829c72:	86aa                	mv	a3,a0
    e8829c74:	7626                	ld	a2,104(sp)
    e8829c76:	0007f597          	auipc	a1,0x7f
    e8829c7a:	ffa58593          	addi	a1,a1,-6 # e88a8c70 <hexValues.12413+0xcc0>
    e8829c7e:	450d                	li	a0,3
    e8829c80:	02d050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (AcceptableResponse) m->rec.r.resrec.rDNSServer = uDNSServer;
    e8829c84:	b7f9                	j	e8829c52 <mDNSCoreReceiveResponse+0x1118>
            else if (typeCovered == kDNSType_SOA)
    e8829c86:	4699                	li	a3,6
    e8829c88:	06d79063          	bne	a5,a3,e8829ce8 <mDNSCoreReceiveResponse+0x11ae>
                LogInfo("IsResponseAcceptable: Accepting RRSIG %s matches SOA type (nseclist = 1)", CRDisplayString(m, newcr));
    e8829c8c:	d379                	beqz	a4,e8829c52 <mDNSCoreReceiveResponse+0x1118>
    e8829c8e:	012407b3          	add	a5,s0,s2
    e8829c92:	5087b583          	ld	a1,1288(a5)
    e8829c96:	03b40613          	addi	a2,s0,59
    e8829c9a:	8566                	mv	a0,s9
    e8829c9c:	0591                	addi	a1,a1,4
    e8829c9e:	d77ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829ca2:	862a                	mv	a2,a0
    e8829ca4:	0007f597          	auipc	a1,0x7f
    e8829ca8:	01458593          	addi	a1,a1,20 # e88a8cb8 <hexValues.12413+0xd08>
            LogInfo("IsResponseAcceptable: Accepting NSEC3 %s (nseclist = 1)", CRDisplayString(m, newcr));
    e8829cac:	450d                	li	a0,3
    e8829cae:	7fe050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8829cb2:	b745                	j	e8829c52 <mDNSCoreReceiveResponse+0x1118>
        if (rr->rrtype == kDNSType_NSEC)
    e8829cb4:	02f00693          	li	a3,47
    e8829cb8:	08d71763          	bne	a4,a3,e8829d46 <mDNSCoreReceiveResponse+0x120c>
            if (!UNICAST_NSEC(rr))
    e8829cbc:	02f00593          	li	a1,47
    e8829cc0:	8566                	mv	a0,s9
    e8829cc2:	d92ea0ef          	jal	ra,e8814254 <RRAssertsExistence>
    e8829cc6:	ed21                	bnez	a0,e8829d1e <mDNSCoreReceiveResponse+0x11e4>
                LogMsg("IsResponseAcceptable: ERROR!! Not a unicast NSEC %s", CRDisplayString(m, newcr));
    e8829cc8:	508d3583          	ld	a1,1288(s10)
    e8829ccc:	03b40613          	addi	a2,s0,59
    e8829cd0:	8566                	mv	a0,s9
    e8829cd2:	0591                	addi	a1,a1,4
    e8829cd4:	d41ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829cd8:	862a                	mv	a2,a0
    e8829cda:	0007f597          	auipc	a1,0x7f
    e8829cde:	02e58593          	addi	a1,a1,46 # e88a8d08 <hexValues.12413+0xd58>
    e8829ce2:	4501                	li	a0,0
    e8829ce4:	7c8050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!AcceptableResponse) LogInfo("mDNSCoreReceiveResponse ignoring %s", CRDisplayString(m, &m->rec.r));
    e8829ce8:	000ab797          	auipc	a5,0xab
    e8829cec:	d8c78793          	addi	a5,a5,-628 # e88d4a74 <mDNS_LoggingEnabled>
    e8829cf0:	439c                	lw	a5,0(a5)
    e8829cf2:	de078763          	beqz	a5,e88292e0 <mDNSCoreReceiveResponse+0x7a6>
    e8829cf6:	012407b3          	add	a5,s0,s2
    e8829cfa:	5087b583          	ld	a1,1288(a5)
    e8829cfe:	03b40613          	addi	a2,s0,59
    e8829d02:	8566                	mv	a0,s9
    e8829d04:	0591                	addi	a1,a1,4
    e8829d06:	d0fec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829d0a:	862a                	mv	a2,a0
    e8829d0c:	0007f597          	auipc	a1,0x7f
    e8829d10:	0dc58593          	addi	a1,a1,220 # e88a8de8 <hexValues.12413+0xe38>
    e8829d14:	450d                	li	a0,3
    e8829d16:	796050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8829d1a:	dc6ff06f          	j	e88292e0 <mDNSCoreReceiveResponse+0x7a6>
            LogInfo("IsResponseAcceptable: Accepting NSEC %s (nseclist = 1)", CRDisplayString(m, newcr));
    e8829d1e:	000ab797          	auipc	a5,0xab
    e8829d22:	d5678793          	addi	a5,a5,-682 # e88d4a74 <mDNS_LoggingEnabled>
    e8829d26:	4398                	lw	a4,0(a5)
    e8829d28:	d70d                	beqz	a4,e8829c52 <mDNSCoreReceiveResponse+0x1118>
    e8829d2a:	508d3583          	ld	a1,1288(s10)
    e8829d2e:	03b40613          	addi	a2,s0,59
    e8829d32:	8566                	mv	a0,s9
    e8829d34:	0591                	addi	a1,a1,4
    e8829d36:	cdfec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829d3a:	862a                	mv	a2,a0
    e8829d3c:	0007f597          	auipc	a1,0x7f
    e8829d40:	00458593          	addi	a1,a1,4 # e88a8d40 <hexValues.12413+0xd90>
    e8829d44:	b7a5                	j	e8829cac <mDNSCoreReceiveResponse+0x1172>
        if (rr->rrtype == kDNSType_SOA)
    e8829d46:	000ab797          	auipc	a5,0xab
    e8829d4a:	d2e78793          	addi	a5,a5,-722 # e88d4a74 <mDNS_LoggingEnabled>
    e8829d4e:	4619                	li	a2,6
    e8829d50:	4394                	lw	a3,0(a5)
    e8829d52:	02c71263          	bne	a4,a2,e8829d76 <mDNSCoreReceiveResponse+0x123c>
            LogInfo("IsResponseAcceptable: Accepting SOA %s (nseclist = 1)", CRDisplayString(m, newcr));
    e8829d56:	ee068ee3          	beqz	a3,e8829c52 <mDNSCoreReceiveResponse+0x1118>
    e8829d5a:	508d3583          	ld	a1,1288(s10)
    e8829d5e:	03b40613          	addi	a2,s0,59
    e8829d62:	8566                	mv	a0,s9
    e8829d64:	0591                	addi	a1,a1,4
    e8829d66:	cafec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829d6a:	862a                	mv	a2,a0
    e8829d6c:	0007f597          	auipc	a1,0x7f
    e8829d70:	00c58593          	addi	a1,a1,12 # e88a8d78 <hexValues.12413+0xdc8>
    e8829d74:	bf25                	j	e8829cac <mDNSCoreReceiveResponse+0x1172>
        else if (rr->rrtype == kDNSType_NSEC3)
    e8829d76:	03200613          	li	a2,50
    e8829d7a:	f6c717e3          	bne	a4,a2,e8829ce8 <mDNSCoreReceiveResponse+0x11ae>
            LogInfo("IsResponseAcceptable: Accepting NSEC3 %s (nseclist = 1)", CRDisplayString(m, newcr));
    e8829d7e:	ec068ae3          	beqz	a3,e8829c52 <mDNSCoreReceiveResponse+0x1118>
    e8829d82:	508d3583          	ld	a1,1288(s10)
    e8829d86:	03b40613          	addi	a2,s0,59
    e8829d8a:	8566                	mv	a0,s9
    e8829d8c:	0591                	addi	a1,a1,4
    e8829d8e:	c87ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829d92:	862a                	mv	a2,a0
    e8829d94:	0007f597          	auipc	a1,0x7f
    e8829d98:	01c58593          	addi	a1,a1,28 # e88a8db0 <hexValues.12413+0xe00>
    e8829d9c:	bf01                	j	e8829cac <mDNSCoreReceiveResponse+0x1172>
        if (!InterfaceID)
    e8829d9e:	1a0b1663          	bnez	s6,e8829f4a <mDNSCoreReceiveResponse+0x1410>
            mDNSu16 id1 = (rr->resrec.rDNSServer ? rr->resrec.rDNSServer->resGroupID : 0);
    e8829da2:	038d3703          	ld	a4,56(s10)
    e8829da6:	4781                	li	a5,0
    e8829da8:	c319                	beqz	a4,e8829dae <mDNSCoreReceiveResponse+0x1274>
    e8829daa:	13c75783          	lhu	a5,316(a4)
            mDNSu16 id2 = (m->rec.r.resrec.rDNSServer ? m->rec.r.resrec.rDNSServer->resGroupID : 0);
    e8829dae:	01240733          	add	a4,s0,s2
    e8829db2:	51073683          	ld	a3,1296(a4)
    e8829db6:	4701                	li	a4,0
    e8829db8:	c299                	beqz	a3,e8829dbe <mDNSCoreReceiveResponse+0x1284>
    e8829dba:	13c6d703          	lhu	a4,316(a3)
            match = (id1 == id2);
    e8829dbe:	8f99                	sub	a5,a5,a4
            match = (rr->resrec.InterfaceID == InterfaceID);
    e8829dc0:	0017b793          	seqz	a5,a5
        if (match && IdenticalSameNameRecord(&m->rec.r.resrec, &rr->resrec))
    e8829dc4:	18078063          	beqz	a5,e8829f44 <mDNSCoreReceiveResponse+0x140a>
    e8829dc8:	012407b3          	add	a5,s0,s2
    e8829dcc:	6706                	ld	a4,64(sp)
    e8829dce:	4e07b683          	ld	a3,1248(a5)
    e8829dd2:	6606                	ld	a2,64(sp)
    e8829dd4:	8ef9                	and	a3,a3,a4
    e8829dd6:	008d3703          	ld	a4,8(s10)
    e8829dda:	8f71                	and	a4,a4,a2
    e8829ddc:	16e69463          	bne	a3,a4,e8829f44 <mDNSCoreReceiveResponse+0x140a>
    e8829de0:	4ec7d683          	lhu	a3,1260(a5)
    e8829de4:	014d5703          	lhu	a4,20(s10)
    e8829de8:	14e69e63          	bne	a3,a4,e8829f44 <mDNSCoreReceiveResponse+0x140a>
    e8829dec:	4f47a683          	lw	a3,1268(a5)
    e8829df0:	01cd2703          	lw	a4,28(s10)
    e8829df4:	14e69863          	bne	a3,a4,e8829f44 <mDNSCoreReceiveResponse+0x140a>
    e8829df8:	030d3583          	ld	a1,48(s10)
    e8829dfc:	7526                	ld	a0,104(sp)
    e8829dfe:	fffe9617          	auipc	a2,0xfffe9
    e8829e02:	24c60613          	addi	a2,a2,588 # e881304a <SameDomainName>
    e8829e06:	0591                	addi	a1,a1,4
    e8829e08:	e9be                	sd	a5,208(sp)
    e8829e0a:	a00ea0ef          	jal	ra,e881400a <SameRDataBody>
    e8829e0e:	12050b63          	beqz	a0,e8829f44 <mDNSCoreReceiveResponse+0x140a>
            if (m->rec.r.resrec.RecordType & kDNSRecordTypePacketUniqueMask)
    e8829e12:	67ce                	ld	a5,208(sp)
    e8829e14:	4e07c783          	lbu	a5,1248(a5)
    e8829e18:	8bc1                	andi	a5,a5,16
    e8829e1a:	c7a1                	beqz	a5,e8829e62 <mDNSCoreReceiveResponse+0x1328>
                if (rr->NextInCFList == mDNSNULL && *cfp != &rr->NextInCFList && LLQType != uDNS_LLQ_Events)
    e8829e1c:	070d3783          	ld	a5,112(s10)
    e8829e20:	e38d                	bnez	a5,e8829e42 <mDNSCoreReceiveResponse+0x1308>
    e8829e22:	7706                	ld	a4,96(sp)
    e8829e24:	070d0793          	addi	a5,s10,112
    e8829e28:	00e78d63          	beq	a5,a4,e8829e42 <mDNSCoreReceiveResponse+0x1308>
    e8829e2c:	66e2                	ld	a3,24(sp)
    e8829e2e:	470d                	li	a4,3
    e8829e30:	00e68963          	beq	a3,a4,e8829e42 <mDNSCoreReceiveResponse+0x1308>
                    *cflocal = rr;
    e8829e34:	7706                	ld	a4,96(sp)
                    *cflocal = (CacheRecord*)1;
    e8829e36:	f0be                	sd	a5,96(sp)
                    *cflocal = rr;
    e8829e38:	01a73023          	sd	s10,0(a4)
                    *cflocal = (CacheRecord*)1;
    e8829e3c:	4705                	li	a4,1
    e8829e3e:	06ed3823          	sd	a4,112(s10)
                if (!(rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask))
    e8829e42:	008d4783          	lbu	a5,8(s10)
    e8829e46:	8bc1                	andi	a5,a5,16
    e8829e48:	ef89                	bnez	a5,e8829e62 <mDNSCoreReceiveResponse+0x1328>
                    for (q = m->Questions; q; q=q->next)
    e8829e4a:	2b843783          	ld	a5,696(s0)
                        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8829e4e:	008d0693          	addi	a3,s10,8
                    for (q = m->Questions; q; q=q->next)
    e8829e52:	10079163          	bnez	a5,e8829f54 <mDNSCoreReceiveResponse+0x141a>
                    rr->resrec.RecordType = m->rec.r.resrec.RecordType;
    e8829e56:	012407b3          	add	a5,s0,s2
    e8829e5a:	4e07c783          	lbu	a5,1248(a5)
    e8829e5e:	00fd0423          	sb	a5,8(s10)
            if (!SameRDataBody(&m->rec.r.resrec, &rr->resrec.rdata->u, SameDomainNameCS))
    e8829e62:	030d3583          	ld	a1,48(s10)
    e8829e66:	7526                	ld	a0,104(sp)
    e8829e68:	fffe9617          	auipc	a2,0xfffe9
    e8829e6c:	31060613          	addi	a2,a2,784 # e8813178 <SameDomainNameCS>
    e8829e70:	0591                	addi	a1,a1,4
    e8829e72:	998ea0ef          	jal	ra,e881400a <SameRDataBody>
    e8829e76:	14051263          	bnez	a0,e8829fba <mDNSCoreReceiveResponse+0x1480>
                rr->resrec.rroriginalttl = 0;
    e8829e7a:	000d2823          	sw	zero,16(s10)
                rr->TimeRcvd = m->timenow;
    e8829e7e:	24042783          	lw	a5,576(s0)
                SetNextCacheCheckTimeForRecord(m, rr);
    e8829e82:	85ea                	mv	a1,s10
    e8829e84:	8522                	mv	a0,s0
                rr->TimeRcvd = m->timenow;
    e8829e86:	04fd2823          	sw	a5,80(s10)
                rr->UnansweredQueries = MaxUnansweredQueries;
    e8829e8a:	4791                	li	a5,4
    e8829e8c:	06fd0623          	sb	a5,108(s10)
                SetNextCacheCheckTimeForRecord(m, rr);
    e8829e90:	ccbf40ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
                LogInfo("mDNSCoreReceiveCacheCheck: Discarding due to domainname case change old: %s", CRDisplayString(m, rr));
    e8829e94:	000ab797          	auipc	a5,0xab
    e8829e98:	be078793          	addi	a5,a5,-1056 # e88d4a74 <mDNS_LoggingEnabled>
    e8829e9c:	439c                	lw	a5,0(a5)
    e8829e9e:	c3dd                	beqz	a5,e8829f44 <mDNSCoreReceiveResponse+0x140a>
    e8829ea0:	030d3583          	ld	a1,48(s10)
    e8829ea4:	03b40793          	addi	a5,s0,59
    e8829ea8:	863e                	mv	a2,a5
    e8829eaa:	0591                	addi	a1,a1,4
    e8829eac:	008d0513          	addi	a0,s10,8
    e8829eb0:	e9be                	sd	a5,208(sp)
    e8829eb2:	b63ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829eb6:	862a                	mv	a2,a0
    e8829eb8:	0007f597          	auipc	a1,0x7f
    e8829ebc:	f5858593          	addi	a1,a1,-168 # e88a8e10 <hexValues.12413+0xe60>
    e8829ec0:	450d                	li	a0,3
    e8829ec2:	5ea050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                LogInfo("mDNSCoreReceiveCacheCheck: Discarding due to domainname case change new: %s", CRDisplayString(m, &m->rec.r));
    e8829ec6:	000ab797          	auipc	a5,0xab
    e8829eca:	bae78793          	addi	a5,a5,-1106 # e88d4a74 <mDNS_LoggingEnabled>
    e8829ece:	4398                	lw	a4,0(a5)
    e8829ed0:	cb35                	beqz	a4,e8829f44 <mDNSCoreReceiveResponse+0x140a>
    e8829ed2:	01240733          	add	a4,s0,s2
    e8829ed6:	67ce                	ld	a5,208(sp)
    e8829ed8:	50873583          	ld	a1,1288(a4)
    e8829edc:	7526                	ld	a0,104(sp)
    e8829ede:	863e                	mv	a2,a5
    e8829ee0:	0591                	addi	a1,a1,4
    e8829ee2:	b33ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8829ee6:	862a                	mv	a2,a0
    e8829ee8:	0007f597          	auipc	a1,0x7f
    e8829eec:	f7858593          	addi	a1,a1,-136 # e88a8e60 <hexValues.12413+0xeb0>
    e8829ef0:	450d                	li	a0,3
    e8829ef2:	5ba050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                LogInfo("mDNSCoreReceiveCacheCheck: Discarding due to domainname case change in %d slot %3d in %d %d",
    e8829ef6:	000ab797          	auipc	a5,0xab
    e8829efa:	b7e78793          	addi	a5,a5,-1154 # e88d4a74 <mDNS_LoggingEnabled>
    e8829efe:	439c                	lw	a5,0(a5)
    e8829f00:	c3b1                	beqz	a5,e8829f44 <mDNSCoreReceiveResponse+0x140a>
    e8829f02:	060d3783          	ld	a5,96(s10)
    e8829f06:	058d2603          	lw	a2,88(s10)
    e8829f0a:	e3bd                	bnez	a5,e8829f70 <mDNSCoreReceiveResponse+0x1436>
    e8829f0c:	000ab797          	auipc	a5,0xab
    e8829f10:	b7478793          	addi	a5,a5,-1164 # e88d4a80 <mDNSPlatformOneSecond>
    e8829f14:	439c                	lw	a5,0(a5)
    e8829f16:	03c00593          	li	a1,60
    e8829f1a:	02f585bb          	mulw	a1,a1,a5
    e8829f1e:	66ae                	ld	a3,200(sp)
    e8829f20:	24042703          	lw	a4,576(s0)
    e8829f24:	25442783          	lw	a5,596(s0)
    e8829f28:	4694                	lw	a3,8(a3)
    e8829f2a:	9e19                	subw	a2,a2,a4
    e8829f2c:	9f99                	subw	a5,a5,a4
    e8829f2e:	40e6873b          	subw	a4,a3,a4
    e8829f32:	76e6                	ld	a3,120(sp)
    e8829f34:	9e2d                	addw	a2,a2,a1
    e8829f36:	450d                	li	a0,3
    e8829f38:	0007f597          	auipc	a1,0x7f
    e8829f3c:	f7858593          	addi	a1,a1,-136 # e88a8eb0 <hexValues.12413+0xf00>
    e8829f40:	56c050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e8829f44:	000d3d03          	ld	s10,0(s10)
    e8829f48:	b6b5                	j	e8829ab4 <mDNSCoreReceiveResponse+0xf7a>
            match = (rr->resrec.InterfaceID == InterfaceID);
    e8829f4a:	020d3783          	ld	a5,32(s10)
    e8829f4e:	416787b3          	sub	a5,a5,s6
    e8829f52:	b5bd                	j	e8829dc0 <mDNSCoreReceiveResponse+0x1286>
                        if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e8829f54:	85be                	mv	a1,a5
    e8829f56:	8536                	mv	a0,a3
    e8829f58:	edbe                	sd	a5,216(sp)
    e8829f5a:	e9b6                	sd	a3,208(sp)
    e8829f5c:	844ec0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e8829f60:	66ce                	ld	a3,208(sp)
    e8829f62:	67ee                	ld	a5,216(sp)
    e8829f64:	c501                	beqz	a0,e8829f6c <mDNSCoreReceiveResponse+0x1432>
                            q->UniqueAnswers++;
    e8829f66:	5b98                	lw	a4,48(a5)
    e8829f68:	2705                	addiw	a4,a4,1
    e8829f6a:	db98                	sw	a4,48(a5)
                    for (q = m->Questions; q; q=q->next)
    e8829f6c:	639c                	ld	a5,0(a5)
    e8829f6e:	b5d5                	j	e8829e52 <mDNSCoreReceiveResponse+0x1318>
                LogInfo("mDNSCoreReceiveCacheCheck: Discarding due to domainname case change in %d slot %3d in %d %d",
    e8829f70:	06cd4683          	lbu	a3,108(s10)
    e8829f74:	470d                	li	a4,3
    e8829f76:	010d2783          	lw	a5,16(s10)
    e8829f7a:	00d76e63          	bltu	a4,a3,e8829f96 <mDNSCoreReceiveResponse+0x145c>
    e8829f7e:	000ab717          	auipc	a4,0xab
    e8829f82:	b0270713          	addi	a4,a4,-1278 # e88d4a80 <mDNSPlatformOneSecond>
    e8829f86:	430c                	lw	a1,0(a4)
    e8829f88:	02f585bb          	mulw	a1,a1,a5
    e8829f8c:	03200793          	li	a5,50
    e8829f90:	02f5c5bb          	divw	a1,a1,a5
    e8829f94:	b769                	j	e8829f1e <mDNSCoreReceiveResponse+0x13e4>
    e8829f96:	4729                	li	a4,10
    e8829f98:	00f76b63          	bltu	a4,a5,e8829fae <mDNSCoreReceiveResponse+0x1474>
    e8829f9c:	4581                	li	a1,0
    e8829f9e:	d3c1                	beqz	a5,e8829f1e <mDNSCoreReceiveResponse+0x13e4>
    e8829fa0:	000ab797          	auipc	a5,0xab
    e8829fa4:	ae078793          	addi	a5,a5,-1312 # e88d4a80 <mDNSPlatformOneSecond>
    e8829fa8:	438c                	lw	a1,0(a5)
    e8829faa:	47a9                	li	a5,10
    e8829fac:	b7d5                	j	e8829f90 <mDNSCoreReceiveResponse+0x1456>
    e8829fae:	000ab797          	auipc	a5,0xab
    e8829fb2:	ad278793          	addi	a5,a5,-1326 # e88d4a80 <mDNSPlatformOneSecond>
    e8829fb6:	438c                	lw	a1,0(a5)
    e8829fb8:	b79d                	j	e8829f1e <mDNSCoreReceiveResponse+0x13e4>
            else if (!IdenticalAnonInfo(m->rec.r.resrec.AnonInfo, rr->resrec.AnonInfo))
    e8829fba:	012407b3          	add	a5,s0,s2
    e8829fbe:	5187b503          	ld	a0,1304(a5)
    e8829fc2:	040d3583          	ld	a1,64(s10)
    e8829fc6:	e9be                	sd	a5,208(sp)
    e8829fc8:	adaf00ef          	jal	ra,e881a2a2 <IdenticalAnonInfo>
    e8829fcc:	67ce                	ld	a5,208(sp)
    e8829fce:	e531                	bnez	a0,e882a01a <mDNSCoreReceiveResponse+0x14e0>
                rr->resrec.rroriginalttl = 0;
    e8829fd0:	000d2823          	sw	zero,16(s10)
                rr->TimeRcvd = m->timenow;
    e8829fd4:	24042783          	lw	a5,576(s0)
                SetNextCacheCheckTimeForRecord(m, rr);
    e8829fd8:	85ea                	mv	a1,s10
    e8829fda:	8522                	mv	a0,s0
                rr->TimeRcvd = m->timenow;
    e8829fdc:	04fd2823          	sw	a5,80(s10)
                rr->UnansweredQueries = MaxUnansweredQueries;
    e8829fe0:	4791                	li	a5,4
    e8829fe2:	06fd0623          	sb	a5,108(s10)
                SetNextCacheCheckTimeForRecord(m, rr);
    e8829fe6:	b75f40ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
                LogInfo("mDNSCoreReceiveCacheCheck: AnonInfo changed for %s", CRDisplayString(m, rr));
    e8829fea:	000ab797          	auipc	a5,0xab
    e8829fee:	a8a78793          	addi	a5,a5,-1398 # e88d4a74 <mDNS_LoggingEnabled>
    e8829ff2:	439c                	lw	a5,0(a5)
    e8829ff4:	dba1                	beqz	a5,e8829f44 <mDNSCoreReceiveResponse+0x140a>
    e8829ff6:	030d3583          	ld	a1,48(s10)
    e8829ffa:	03b40613          	addi	a2,s0,59
    e8829ffe:	008d0513          	addi	a0,s10,8
    e882a002:	0591                	addi	a1,a1,4
    e882a004:	a11ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882a008:	862a                	mv	a2,a0
    e882a00a:	0007f597          	auipc	a1,0x7f
    e882a00e:	f0658593          	addi	a1,a1,-250 # e88a8f10 <hexValues.12413+0xf60>
    e882a012:	450d                	li	a0,3
    e882a014:	498050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882a018:	b735                	j	e8829f44 <mDNSCoreReceiveResponse+0x140a>
            else if (m->rec.r.resrec.rroriginalttl > 0)
    e882a01a:	4e87a783          	lw	a5,1256(a5)
    e882a01e:	24042603          	lw	a2,576(s0)
    e882a022:	10078263          	beqz	a5,e882a126 <mDNSCoreReceiveResponse+0x15ec>
                m->mDNSStats.CacheRefreshed++;
    e882a026:	6715                	lui	a4,0x5
    e882a028:	9722                	add	a4,a4,s0
    e882a02a:	ee072683          	lw	a3,-288(a4) # 4ee0 <memcmp-0xe87fb120>
    SetNextCacheCheckTimeForRecord(m, rr);
    e882a02e:	85ea                	mv	a1,s10
    e882a030:	8522                	mv	a0,s0
                m->mDNSStats.CacheRefreshed++;
    e882a032:	2685                	addiw	a3,a3,1
    e882a034:	eed72023          	sw	a3,-288(a4)
    rr->resrec.rroriginalttl = ttl;
    e882a038:	00fd2823          	sw	a5,16(s10)
    rr->TimeRcvd             = m->timenow;
    e882a03c:	04cd2823          	sw	a2,80(s10)
    rr->UnansweredQueries = 0;
    e882a040:	060d0623          	sb	zero,108(s10)
    SetNextCacheCheckTimeForRecord(m, rr);
    e882a044:	b17f40ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
                rr->responseFlags = response->h.flags;
    e882a048:	0029d783          	lhu	a5,2(s3)
    e882a04c:	06fd1723          	sh	a5,110(s10)
                if (response->h.numAnswers && unicastQuestion && unicastQuestion->qtype == rr->resrec.rrtype
    e882a050:	0069d783          	lhu	a5,6(s3)
    e882a054:	c3b1                	beqz	a5,e882a098 <mDNSCoreReceiveResponse+0x155e>
    e882a056:	c0a9                	beqz	s1,e882a098 <mDNSCoreReceiveResponse+0x155e>
    e882a058:	3144d703          	lhu	a4,788(s1)
    e882a05c:	00ad5783          	lhu	a5,10(s10)
    e882a060:	02f71c63          	bne	a4,a5,e882a098 <mDNSCoreReceiveResponse+0x155e>
                    && !(*NSECCachePtr))
    e882a064:	020a9a63          	bnez	s5,e882a098 <mDNSCoreReceiveResponse+0x155e>
                    LogInfo("mDNSCoreReceiveCacheCheck: rescuing RR %s", CRDisplayString(m, rr));
    e882a068:	000ab797          	auipc	a5,0xab
    e882a06c:	a0c78793          	addi	a5,a5,-1524 # e88d4a74 <mDNS_LoggingEnabled>
    e882a070:	439c                	lw	a5,0(a5)
    e882a072:	8aea                	mv	s5,s10
    e882a074:	c395                	beqz	a5,e882a098 <mDNSCoreReceiveResponse+0x155e>
    e882a076:	030d3583          	ld	a1,48(s10)
    e882a07a:	03b40613          	addi	a2,s0,59
    e882a07e:	008d0513          	addi	a0,s10,8
    e882a082:	0591                	addi	a1,a1,4
    e882a084:	991ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882a088:	862a                	mv	a2,a0
    e882a08a:	0007f597          	auipc	a1,0x7f
    e882a08e:	ebe58593          	addi	a1,a1,-322 # e88a8f48 <hexValues.12413+0xf98>
    e882a092:	450d                	li	a0,3
    e882a094:	418050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask)
    e882a098:	008d4783          	lbu	a5,8(s10)
    e882a09c:	8bc1                	andi	a5,a5,16
    e882a09e:	cfb1                	beqz	a5,e882a0fa <mDNSCoreReceiveResponse+0x15c0>
                    for (q = m->Questions; q; q=q->next)
    e882a0a0:	2b843a03          	ld	s4,696(s0)
                            ActiveQuestion(q) && ResourceRecordAnswersQuestion(&rr->resrec, q))
    e882a0a4:	008d0c93          	addi	s9,s10,8
                    for (q = m->Questions; q; q=q->next)
    e882a0a8:	040a0963          	beqz	s4,e882a0fa <mDNSCoreReceiveResponse+0x15c0>
                        if (!q->DuplicateOf && !q->LongLived &&
    e882a0ac:	050a3783          	ld	a5,80(s4)
    e882a0b0:	eba5                	bnez	a5,e882a120 <mDNSCoreReceiveResponse+0x15e6>
    e882a0b2:	318a4783          	lbu	a5,792(s4)
    e882a0b6:	e7ad                	bnez	a5,e882a120 <mDNSCoreReceiveResponse+0x15e6>
    e882a0b8:	014a2783          	lw	a5,20(s4)
    e882a0bc:	06f05263          	blez	a5,e882a120 <mDNSCoreReceiveResponse+0x15e6>
                            ActiveQuestion(q) && ResourceRecordAnswersQuestion(&rr->resrec, q))
    e882a0c0:	85d2                	mv	a1,s4
    e882a0c2:	8566                	mv	a0,s9
    e882a0c4:	eddeb0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e882a0c8:	cd21                	beqz	a0,e882a120 <mDNSCoreReceiveResponse+0x15e6>
                            ResetQuestionState(m, q);
    e882a0ca:	24042783          	lw	a5,576(s0)
    q->ThisQInterval    = MaxQuestionInterval;
    e882a0ce:	6705                	lui	a4,0x1
    e882a0d0:	e107071b          	addiw	a4,a4,-496
    q->LastQTime        = m->timenow;
    e882a0d4:	00fa2823          	sw	a5,16(s4)
    q->LastQTxTime      = m->timenow;
    e882a0d8:	12fa2c23          	sw	a5,312(s4)
    q->ThisQInterval    = MaxQuestionInterval;
    e882a0dc:	000ab797          	auipc	a5,0xab
    e882a0e0:	9a478793          	addi	a5,a5,-1628 # e88d4a80 <mDNSPlatformOneSecond>
    e882a0e4:	439c                	lw	a5,0(a5)
    q->RecentAnswerPkts = 0;
    e882a0e6:	020a2023          	sw	zero,32(s4)
    q->RequestUnicast   = 0;
    e882a0ea:	120a2a23          	sw	zero,308(s4)
    q->ThisQInterval    = MaxQuestionInterval;
    e882a0ee:	02e787bb          	mulw	a5,a5,a4
    q->unansweredQueries = 0;
    e882a0f2:	180a0223          	sb	zero,388(s4)
    q->ThisQInterval    = MaxQuestionInterval;
    e882a0f6:	00fa2a23          	sw	a5,20(s4)
                if (rr && rr->resrec.AnonInfo && m->rec.r.resrec.AnonInfo)
    e882a0fa:	040d3783          	ld	a5,64(s10)
    e882a0fe:	e399                	bnez	a5,e882a104 <mDNSCoreReceiveResponse+0x15ca>
    e882a100:	ea9fe06f          	j	e8828fa8 <mDNSCoreReceiveResponse+0x46e>
    e882a104:	012407b3          	add	a5,s0,s2
    e882a108:	5187b783          	ld	a5,1304(a5)
    e882a10c:	e399                	bnez	a5,e882a112 <mDNSCoreReceiveResponse+0x15d8>
    e882a10e:	e9bfe06f          	j	e8828fa8 <mDNSCoreReceiveResponse+0x46e>
                    CopyAnonInfoForCR(m, rr, &m->rec.r);
    e882a112:	7622                	ld	a2,40(sp)
    e882a114:	85ea                	mv	a1,s10
    e882a116:	8522                	mv	a0,s0
    e882a118:	9f0f00ef          	jal	ra,e881a308 <CopyAnonInfoForCR>
    e882a11c:	e8dfe06f          	j	e8828fa8 <mDNSCoreReceiveResponse+0x46e>
                    for (q = m->Questions; q; q=q->next)
    e882a120:	000a3a03          	ld	s4,0(s4)
    e882a124:	b751                	j	e882a0a8 <mDNSCoreReceiveResponse+0x156e>
                if (RRExpireTime(rr) - m->timenow > mDNSPlatformOneSecond)
    e882a126:	000ab797          	auipc	a5,0xab
    e882a12a:	95a78793          	addi	a5,a5,-1702 # e88d4a80 <mDNSPlatformOneSecond>
    e882a12e:	4398                	lw	a4,0(a5)
    e882a130:	050d2783          	lw	a5,80(s10)
    e882a134:	010d2683          	lw	a3,16(s10)
    e882a138:	9f91                	subw	a5,a5,a2
    e882a13a:	24e6978b          	mulaw	a5,a3,a4
    e882a13e:	faf75ee3          	bge	a4,a5,e882a0fa <mDNSCoreReceiveResponse+0x15c0>
                    rr->resrec.rroriginalttl = 1;
    e882a142:	4785                	li	a5,1
    e882a144:	00fd2823          	sw	a5,16(s10)
                    rr->TimeRcvd = m->timenow;
    e882a148:	24042783          	lw	a5,576(s0)
                    SetNextCacheCheckTimeForRecord(m, rr);
    e882a14c:	85ea                	mv	a1,s10
    e882a14e:	8522                	mv	a0,s0
                    rr->TimeRcvd = m->timenow;
    e882a150:	04fd2823          	sw	a5,80(s10)
                    rr->UnansweredQueries = MaxUnansweredQueries;
    e882a154:	4791                	li	a5,4
    e882a156:	06fd0623          	sb	a5,108(s10)
                    SetNextCacheCheckTimeForRecord(m, rr);
    e882a15a:	a01f40ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
    e882a15e:	bf71                	j	e882a0fa <mDNSCoreReceiveResponse+0x15c0>
                    delay = NonZeroTime(m->timenow + mDNSPlatformOneSecond);
    e882a160:	000ab797          	auipc	a5,0xab
    e882a164:	92078793          	addi	a5,a5,-1760 # e88d4a80 <mDNSPlatformOneSecond>
    e882a168:	4388                	lw	a0,0(a5)
    e882a16a:	24042683          	lw	a3,576(s0)
                const mDNSBool AddToCFList = (m->rec.r.resrec.RecordType & kDNSRecordTypePacketUniqueMask) && (LLQType != uDNS_LLQ_Events);
    e882a16e:	4785                	li	a5,1
    e882a170:	f4be                	sd	a5,104(sp)
                    delay = NonZeroTime(m->timenow + mDNSPlatformOneSecond);
    e882a172:	9ea9                	addw	a3,a3,a0
    e882a174:	96069ce3          	bnez	a3,e8829aec <mDNSCoreReceiveResponse+0xfb2>
    e882a178:	4685                	li	a3,1
    e882a17a:	ba8d                	j	e8829aec <mDNSCoreReceiveResponse+0xfb2>
                    else if (AddToCFList)
    e882a17c:	77a6                	ld	a5,104(sp)
    e882a17e:	cf81                	beqz	a5,e882a196 <mDNSCoreReceiveResponse+0x165c>
                        *cfp = rr;
    e882a180:	7786                	ld	a5,96(sp)
                        *cfp = (CacheRecord*)1;
    e882a182:	4705                	li	a4,1
                        *cfp = rr;
    e882a184:	01a7b023          	sd	s10,0(a5)
                        cfp = &rr->NextInCFList;
    e882a188:	070d0793          	addi	a5,s10,112
    e882a18c:	f0be                	sd	a5,96(sp)
                        *cfp = (CacheRecord*)1;
    e882a18e:	06ed3823          	sd	a4,112(s10)
    e882a192:	e17fe06f          	j	e8828fa8 <mDNSCoreReceiveResponse+0x46e>
                    else if (rr->DelayDelivery)
    e882a196:	054d2603          	lw	a2,84(s10)
    e882a19a:	e219                	bnez	a2,e882a1a0 <mDNSCoreReceiveResponse+0x1666>
    e882a19c:	e0dfe06f          	j	e8828fa8 <mDNSCoreReceiveResponse+0x46e>
                        ScheduleNextCacheCheckTime(m, slot, rr->DelayDelivery);
    e882a1a0:	75e6                	ld	a1,120(sp)
    e882a1a2:	8522                	mv	a0,s0
    e882a1a4:	98df40ef          	jal	ra,e881eb30 <ScheduleNextCacheCheckTime>
    e882a1a8:	e01fe06f          	j	e8828fa8 <mDNSCoreReceiveResponse+0x46e>
        const mDNSu32 slot = HashSlotFromNameHash(r1->resrec.namehash);
    e882a1ac:	018a2783          	lw	a5,24(s4)
        const CacheGroup *cg = CacheGroupForRecord(m, &r1->resrec);
    e882a1b0:	8522                	mv	a0,s0
        const mDNSu32 slot = HashSlotFromNameHash(r1->resrec.namehash);
    e882a1b2:	f43e                	sd	a5,40(sp)
        const CacheGroup *cg = CacheGroupForRecord(m, &r1->resrec);
    e882a1b4:	008a0793          	addi	a5,s4,8
    e882a1b8:	85be                	mv	a1,a5
    e882a1ba:	f83e                	sd	a5,48(sp)
    e882a1bc:	e74f40ef          	jal	ra,e881e830 <CacheGroupForRecord>
        CacheFlushRecords = CacheFlushRecords->NextInCFList;
    e882a1c0:	070a3783          	ld	a5,112(s4)
        r1->NextInCFList = mDNSNULL;
    e882a1c4:	060a3823          	sd	zero,112(s4)
        CacheFlushRecords = CacheFlushRecords->NextInCFList;
    e882a1c8:	f9be                	sd	a5,240(sp)
        for (r2 = cg ? cg->members : mDNSNULL; r2; r2=r2->next)
    e882a1ca:	ed4d                	bnez	a0,e882a284 <mDNSCoreReceiveResponse+0x174a>
        if (r1->DelayDelivery)  // If we were planning to delay delivery of this record, see if we still need to
    e882a1cc:	054a2783          	lw	a5,84(s4)
    e882a1d0:	e399                	bnez	a5,e882a1d6 <mDNSCoreReceiveResponse+0x169c>
    e882a1d2:	e57fe06f          	j	e8829028 <mDNSCoreReceiveResponse+0x4ee>
            if (response->h.numAnswers && unicastQuestion && NSECRecords)
    e882a1d6:	0069d783          	lhu	a5,6(s3)
    e882a1da:	c3d1                	beqz	a5,e882a25e <mDNSCoreReceiveResponse+0x1724>
    e882a1dc:	c0c9                	beqz	s1,e882a25e <mDNSCoreReceiveResponse+0x1724>
    e882a1de:	796e                	ld	s2,248(sp)
    e882a1e0:	06090f63          	beqz	s2,e882a25e <mDNSCoreReceiveResponse+0x1724>
                if (!NSECCachePtr)
    e882a1e4:	020a9963          	bnez	s5,e882a216 <mDNSCoreReceiveResponse+0x16dc>
                    LogInfo("mDNSCoreReceiveResponse: Updating NSECCachePtr to %s", CRDisplayString(m, r1));
    e882a1e8:	000ab797          	auipc	a5,0xab
    e882a1ec:	88c78793          	addi	a5,a5,-1908 # e88d4a74 <mDNS_LoggingEnabled>
    e882a1f0:	439c                	lw	a5,0(a5)
    while (CacheFlushRecords != (CacheRecord*)1)
    e882a1f2:	8ad2                	mv	s5,s4
                    LogInfo("mDNSCoreReceiveResponse: Updating NSECCachePtr to %s", CRDisplayString(m, r1));
    e882a1f4:	c38d                	beqz	a5,e882a216 <mDNSCoreReceiveResponse+0x16dc>
    e882a1f6:	030a3583          	ld	a1,48(s4)
    e882a1fa:	7542                	ld	a0,48(sp)
    e882a1fc:	03b40613          	addi	a2,s0,59
    e882a200:	0591                	addi	a1,a1,4
    e882a202:	813ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882a206:	862a                	mv	a2,a0
    e882a208:	0007f597          	auipc	a1,0x7f
    e882a20c:	e1058593          	addi	a1,a1,-496 # e88a9018 <hexValues.12413+0x1068>
    e882a210:	450d                	li	a0,3
    e882a212:	29a050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (!AddNSECSForCacheRecord(m, NSECRecords, NSECCachePtr, rcode))
    e882a216:	66c2                	ld	a3,16(sp)
    e882a218:	8656                	mv	a2,s5
    e882a21a:	85ca                	mv	a1,s2
    e882a21c:	8522                	mv	a0,s0
    e882a21e:	0cf050ef          	jal	ra,e882faec <AddNSECSForCacheRecord>
    e882a222:	ed05                	bnez	a0,e882a25a <mDNSCoreReceiveResponse+0x1720>
                    LogInfo("mDNSCoreReceiveResponse: AddNSECSForCacheRecord failed to add NSEC for %s", CRDisplayString(m, NSECCachePtr));
    e882a224:	000ab797          	auipc	a5,0xab
    e882a228:	85078793          	addi	a5,a5,-1968 # e88d4a74 <mDNS_LoggingEnabled>
    e882a22c:	439c                	lw	a5,0(a5)
    e882a22e:	c395                	beqz	a5,e882a252 <mDNSCoreReceiveResponse+0x1718>
    e882a230:	030ab583          	ld	a1,48(s5)
    e882a234:	03b40613          	addi	a2,s0,59
    e882a238:	008a8513          	addi	a0,s5,8
    e882a23c:	0591                	addi	a1,a1,4
    e882a23e:	fd6ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882a242:	862a                	mv	a2,a0
    e882a244:	0007f597          	auipc	a1,0x7f
    e882a248:	e0c58593          	addi	a1,a1,-500 # e88a9050 <hexValues.12413+0x10a0>
    e882a24c:	450d                	li	a0,3
    e882a24e:	25e050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    FreeNSECRecords(m, NSECRecords);
    e882a252:	85ca                	mv	a1,s2
    e882a254:	8522                	mv	a0,s0
    e882a256:	b52f60ef          	jal	ra,e88205a8 <FreeNSECRecords>
                NSECRecords = mDNSNULL;
    e882a25a:	fd82                	sd	zero,248(sp)
                NSECCachePtr = mDNSNULL;
    e882a25c:	4a81                	li	s5,0
            r1->DelayDelivery = CheckForSoonToExpireRecords(m, r1->resrec.name, r1->resrec.namehash, mDNSNULL);
    e882a25e:	018a2603          	lw	a2,24(s4)
    e882a262:	028a3583          	ld	a1,40(s4)
    e882a266:	4681                	li	a3,0
    e882a268:	8522                	mv	a0,s0
    e882a26a:	e64f40ef          	jal	ra,e881e8ce <CheckForSoonToExpireRecords>
    e882a26e:	04aa2a23          	sw	a0,84(s4)
    e882a272:	862a                	mv	a2,a0
            if (!r1->DelayDelivery) CacheRecordDeferredAdd(m, r1);
    e882a274:	1c051763          	bnez	a0,e882a442 <mDNSCoreReceiveResponse+0x1908>
    e882a278:	85d2                	mv	a1,s4
    e882a27a:	8522                	mv	a0,s0
    e882a27c:	a69fc0ef          	jal	ra,e8826ce4 <CacheRecordDeferredAdd>
    e882a280:	da9fe06f          	j	e8829028 <mDNSCoreReceiveResponse+0x4ee>
        for (r2 = cg ? cg->members : mDNSNULL; r2; r2=r2->next)
    e882a284:	01053903          	ld	s2,16(a0)
                        LogInfo("Cache flush for DE record %s", CRDisplayString(m, r2));
    e882a288:	03b40793          	addi	a5,s0,59
    e882a28c:	000aac97          	auipc	s9,0xaa
    e882a290:	7e8c8c93          	addi	s9,s9,2024 # e88d4a74 <mDNS_LoggingEnabled>
    e882a294:	f03e                	sd	a5,32(sp)
        for (r2 = cg ? cg->members : mDNSNULL; r2; r2=r2->next)
    e882a296:	f2090be3          	beqz	s2,e882a1cc <mDNSCoreReceiveResponse+0x1692>
            if (!r1->resrec.InterfaceID)
    e882a29a:	020a3703          	ld	a4,32(s4)
    e882a29e:	e37d                	bnez	a4,e882a384 <mDNSCoreReceiveResponse+0x184a>
                id1 = (r1->resrec.rDNSServer ? r1->resrec.rDNSServer->resGroupID : 0);
    e882a2a0:	038a3703          	ld	a4,56(s4)
    e882a2a4:	4681                	li	a3,0
    e882a2a6:	c319                	beqz	a4,e882a2ac <mDNSCoreReceiveResponse+0x1772>
    e882a2a8:	13c75683          	lhu	a3,316(a4) # 113c <memcmp-0xe87feec4>
                id2 = (r2->resrec.rDNSServer ? r2->resrec.rDNSServer->resGroupID : 0);
    e882a2ac:	03893603          	ld	a2,56(s2)
    e882a2b0:	4d01                	li	s10,0
    e882a2b2:	c219                	beqz	a2,e882a2b8 <mDNSCoreReceiveResponse+0x177e>
    e882a2b4:	13c65d03          	lhu	s10,316(a2)
            if ((r1->resrec.rrtype == r2->resrec.rrtype) && (r1->resrec.rrtype == kDNSType_RRSIG))
    e882a2b8:	00a95603          	lhu	a2,10(s2)
    e882a2bc:	00aa5583          	lhu	a1,10(s4)
    e882a2c0:	0cb60563          	beq	a2,a1,e882a38a <mDNSCoreReceiveResponse+0x1850>
            if ((r1->resrec.InterfaceID == r2->resrec.InterfaceID) &&
    e882a2c4:	020a3603          	ld	a2,32(s4)
    e882a2c8:	02093583          	ld	a1,32(s2)
    e882a2cc:	0eb61963          	bne	a2,a1,e882a3be <mDNSCoreReceiveResponse+0x1884>
    e882a2d0:	e219                	bnez	a2,e882a2d6 <mDNSCoreReceiveResponse+0x179c>
                (r1->resrec.InterfaceID || (id1 == id2)) &&
    e882a2d2:	0fa69663          	bne	a3,s10,e882a3be <mDNSCoreReceiveResponse+0x1884>
                r1->resrec.rrtype      == r2->resrec.rrtype &&
    e882a2d6:	008a3683          	ld	a3,8(s4)
    e882a2da:	00893703          	ld	a4,8(s2)
    e882a2de:	0176f6b3          	and	a3,a3,s7
    e882a2e2:	01777733          	and	a4,a4,s7
    e882a2e6:	0ce69c63          	bne	a3,a4,e882a3be <mDNSCoreReceiveResponse+0x1884>
                if (m->timenow - r2->TimeRcvd < mDNSPlatformOneSecond && RRExpireTime(r2) - m->timenow > mDNSPlatformOneSecond)
    e882a2ea:	24042683          	lw	a3,576(s0)
    e882a2ee:	05092703          	lw	a4,80(s2)
    e882a2f2:	000aa797          	auipc	a5,0xaa
    e882a2f6:	78e78793          	addi	a5,a5,1934 # e88d4a80 <mDNSPlatformOneSecond>
    e882a2fa:	4390                	lw	a2,0(a5)
    e882a2fc:	40e685bb          	subw	a1,a3,a4
    e882a300:	01092883          	lw	a7,16(s2)
    e882a304:	0cc5dc63          	bge	a1,a2,e882a3dc <mDNSCoreReceiveResponse+0x18a2>
    e882a308:	40d705bb          	subw	a1,a4,a3
    e882a30c:	24c8958b          	mulaw	a1,a7,a2
    e882a310:	14b65363          	bge	a2,a1,e882a456 <mDNSCoreReceiveResponse+0x191c>
                    if (r2->resrec.rroriginalttl != r1->resrec.rroriginalttl && r1->resrec.rroriginalttl > 1)
    e882a314:	010a2683          	lw	a3,16(s4)
    e882a318:	07168163          	beq	a3,a7,e882a37a <mDNSCoreReceiveResponse+0x1840>
    e882a31c:	4705                	li	a4,1
    e882a31e:	04d77e63          	bgeu	a4,a3,e882a37a <mDNSCoreReceiveResponse+0x1840>
                        if (!(r2->resrec.rroriginalttl == 240 && r1->resrec.rroriginalttl == 60 && r2->resrec.rrtype == kDNSType_TXT) &&
    e882a322:	0f000713          	li	a4,240
    e882a326:	08e89f63          	bne	a7,a4,e882a3c4 <mDNSCoreReceiveResponse+0x188a>
    e882a32a:	03c00713          	li	a4,60
    e882a32e:	00e69763          	bne	a3,a4,e882a33c <mDNSCoreReceiveResponse+0x1802>
    e882a332:	00a95603          	lhu	a2,10(s2)
    e882a336:	4741                	li	a4,16
                            !(r2->resrec.rroriginalttl == 120 && r1->resrec.rroriginalttl == 4500 && r2->resrec.rrtype == kDNSType_SRV) &&
    e882a338:	02e60d63          	beq	a2,a4,e882a372 <mDNSCoreReceiveResponse+0x1838>
    e882a33c:	0009d703          	lhu	a4,0(s3)
    e882a340:	eb0d                	bnez	a4,e882a372 <mDNSCoreReceiveResponse+0x1838>
                            LogInfo("Correcting TTL from %4d to %4d for %s",
    e882a342:	000ca703          	lw	a4,0(s9)
    e882a346:	c715                	beqz	a4,e882a372 <mDNSCoreReceiveResponse+0x1838>
    e882a348:	03093583          	ld	a1,48(s2)
    e882a34c:	7602                	ld	a2,32(sp)
    e882a34e:	00890513          	addi	a0,s2,8
    e882a352:	0591                	addi	a1,a1,4
    e882a354:	e8c6                	sd	a7,80(sp)
    e882a356:	e4b6                	sd	a3,72(sp)
    e882a358:	ebcec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882a35c:	872a                	mv	a4,a0
    e882a35e:	68c6                	ld	a7,80(sp)
    e882a360:	66a6                	ld	a3,72(sp)
    e882a362:	0007f597          	auipc	a1,0x7f
    e882a366:	c6e58593          	addi	a1,a1,-914 # e88a8fd0 <hexValues.12413+0x1020>
    e882a36a:	8646                	mv	a2,a7
    e882a36c:	450d                	li	a0,3
    e882a36e:	13e050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        r2->resrec.rroriginalttl = r1->resrec.rroriginalttl;
    e882a372:	010a2703          	lw	a4,16(s4)
    e882a376:	00e92823          	sw	a4,16(s2)
                    r2->TimeRcvd = m->timenow;
    e882a37a:	24042703          	lw	a4,576(s0)
                        r2->TimeRcvd = m->timenow - 1;
    e882a37e:	04e92823          	sw	a4,80(s2)
    e882a382:	a861                	j	e882a41a <mDNSCoreReceiveResponse+0x18e0>
                id1 = id2 = 0;
    e882a384:	4d01                	li	s10,0
    e882a386:	4681                	li	a3,0
    e882a388:	bf05                	j	e882a2b8 <mDNSCoreReceiveResponse+0x177e>
            if ((r1->resrec.rrtype == r2->resrec.rrtype) && (r1->resrec.rrtype == kDNSType_RRSIG))
    e882a38a:	02e00593          	li	a1,46
    e882a38e:	f2b61be3          	bne	a2,a1,e882a2c4 <mDNSCoreReceiveResponse+0x178a>
                if (swap16(rrsig1->typeCovered) != swap16(rrsig2->typeCovered))
    e882a392:	030a3603          	ld	a2,48(s4)
                rdataRRSig *rrsig2 = (rdataRRSig *)(((RDataBody2 *)(r2->resrec.rdata->u.data))->data);
    e882a396:	03093583          	ld	a1,48(s2)
    e882a39a:	ecb6                	sd	a3,88(sp)
                if (swap16(rrsig1->typeCovered) != swap16(rrsig2->typeCovered))
    e882a39c:	00465503          	lhu	a0,4(a2)
                rdataRRSig *rrsig2 = (rdataRRSig *)(((RDataBody2 *)(r2->resrec.rdata->u.data))->data);
    e882a3a0:	e8ae                	sd	a1,80(sp)
                if (swap16(rrsig1->typeCovered) != swap16(rrsig2->typeCovered))
    e882a3a2:	b09e80ef          	jal	ra,e8812eaa <swap16>
    e882a3a6:	e4aa                	sd	a0,72(sp)
    e882a3a8:	65c6                	ld	a1,80(sp)
    e882a3aa:	0045d503          	lhu	a0,4(a1)
    e882a3ae:	afde80ef          	jal	ra,e8812eaa <swap16>
    e882a3b2:	2501                	sext.w	a0,a0
    e882a3b4:	6626                	ld	a2,72(sp)
    e882a3b6:	66e6                	ld	a3,88(sp)
    e882a3b8:	2601                	sext.w	a2,a2
    e882a3ba:	f0a605e3          	beq	a2,a0,e882a2c4 <mDNSCoreReceiveResponse+0x178a>
        for (r2 = cg ? cg->members : mDNSNULL; r2; r2=r2->next)
    e882a3be:	00093903          	ld	s2,0(s2)
    e882a3c2:	bdd1                	j	e882a296 <mDNSCoreReceiveResponse+0x175c>
                        if (!(r2->resrec.rroriginalttl == 240 && r1->resrec.rroriginalttl == 60 && r2->resrec.rrtype == kDNSType_TXT) &&
    e882a3c4:	07800713          	li	a4,120
    e882a3c8:	f6e89ae3          	bne	a7,a4,e882a33c <mDNSCoreReceiveResponse+0x1802>
                            !(r2->resrec.rroriginalttl == 120 && r1->resrec.rroriginalttl == 4500 && r2->resrec.rrtype == kDNSType_SRV) &&
    e882a3cc:	6786                	ld	a5,64(sp)
    e882a3ce:	f6f697e3          	bne	a3,a5,e882a33c <mDNSCoreReceiveResponse+0x1802>
    e882a3d2:	00a95603          	lhu	a2,10(s2)
    e882a3d6:	02100713          	li	a4,33
    e882a3da:	bfb9                	j	e882a338 <mDNSCoreReceiveResponse+0x17fe>
                    if (r2->TimeRcvd == m->timenow && r2->resrec.rroriginalttl == 1 && r2->UnansweredQueries == MaxUnansweredQueries)
    e882a3dc:	04e69463          	bne	a3,a4,e882a424 <mDNSCoreReceiveResponse+0x18ea>
    e882a3e0:	4585                	li	a1,1
    e882a3e2:	04b89163          	bne	a7,a1,e882a424 <mDNSCoreReceiveResponse+0x18ea>
    e882a3e6:	06c94503          	lbu	a0,108(s2)
    e882a3ea:	4591                	li	a1,4
    e882a3ec:	02b51c63          	bne	a0,a1,e882a424 <mDNSCoreReceiveResponse+0x18ea>
                        LogInfo("Cache flush for DE record %s", CRDisplayString(m, r2));
    e882a3f0:	000ca703          	lw	a4,0(s9)
    e882a3f4:	c30d                	beqz	a4,e882a416 <mDNSCoreReceiveResponse+0x18dc>
    e882a3f6:	03093583          	ld	a1,48(s2)
    e882a3fa:	7602                	ld	a2,32(sp)
    e882a3fc:	00890513          	addi	a0,s2,8
    e882a400:	0591                	addi	a1,a1,4
    e882a402:	e12ec0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882a406:	862a                	mv	a2,a0
    e882a408:	0007f597          	auipc	a1,0x7f
    e882a40c:	bf058593          	addi	a1,a1,-1040 # e88a8ff8 <hexValues.12413+0x1048>
    e882a410:	450d                	li	a0,3
    e882a412:	09a050ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        r2->resrec.rroriginalttl = 0;
    e882a416:	00092823          	sw	zero,16(s2)
                SetNextCacheCheckTimeForRecord(m, r2);
    e882a41a:	85ca                	mv	a1,s2
    e882a41c:	8522                	mv	a0,s0
    e882a41e:	f3cf40ef          	jal	ra,e881eb5a <SetNextCacheCheckTimeForRecord>
    e882a422:	bf71                	j	e882a3be <mDNSCoreReceiveResponse+0x1884>
                    else if (RRExpireTime(r2) - m->timenow > mDNSPlatformOneSecond)
    e882a424:	9f15                	subw	a4,a4,a3
    e882a426:	24c8970b          	mulaw	a4,a7,a2
    e882a42a:	fee658e3          	bge	a2,a4,e882a41a <mDNSCoreReceiveResponse+0x18e0>
                        r2->resrec.rroriginalttl = 1;
    e882a42e:	4705                	li	a4,1
    e882a430:	00e92823          	sw	a4,16(s2)
                        r2->UnansweredQueries = MaxUnansweredQueries;
    e882a434:	4711                	li	a4,4
    e882a436:	06e90623          	sb	a4,108(s2)
                        r2->TimeRcvd = m->timenow - 1;
    e882a43a:	24042703          	lw	a4,576(s0)
    e882a43e:	377d                	addiw	a4,a4,-1
    e882a440:	bf3d                	j	e882a37e <mDNSCoreReceiveResponse+0x1844>
            else ScheduleNextCacheCheckTime(m, slot, r1->DelayDelivery);
    e882a442:	77a2                	ld	a5,40(sp)
    e882a444:	1f300593          	li	a1,499
    e882a448:	8522                	mv	a0,s0
    e882a44a:	02b7f5bb          	remuw	a1,a5,a1
    e882a44e:	ee2f40ef          	jal	ra,e881eb30 <ScheduleNextCacheCheckTime>
    e882a452:	bd7fe06f          	j	e8829028 <mDNSCoreReceiveResponse+0x4ee>
                    if (r2->TimeRcvd == m->timenow && r2->resrec.rroriginalttl == 1 && r2->UnansweredQueries == MaxUnansweredQueries)
    e882a456:	fce692e3          	bne	a3,a4,e882a41a <mDNSCoreReceiveResponse+0x18e0>
    e882a45a:	b759                	j	e882a3e0 <mDNSCoreReceiveResponse+0x18a6>
    if (!InterfaceID && (response->h.flags.b[0] & kDNSFlag0_TC)) return;
    e882a45c:	0029c783          	lbu	a5,2(s3)
    e882a460:	8b89                	andi	a5,a5,2
    e882a462:	c399                	beqz	a5,e882a468 <mDNSCoreReceiveResponse+0x192e>
    e882a464:	8f9fe06f          	j	e8828d5c <mDNSCoreReceiveResponse+0x222>
        return mDNSNULL;
    e882a468:	f002                	sd	zero,32(sp)
    e882a46a:	f86fe06f          	j	e8828bf0 <mDNSCoreReceiveResponse+0xb6>

00000000e882a46e <mDNSCoreReceive>:
{
    e882a46e:	714d                	addi	sp,sp,-336
    e882a470:	f252                	sd	s4,288(sp)
    e882a472:	8a3a                	mv	s4,a4
    e882a474:	0ff87713          	andi	a4,a6,255
    e882a478:	e2a2                	sd	s0,320(sp)
    e882a47a:	fe26                	sd	s1,312(sp)
    e882a47c:	fa4a                	sd	s2,304(sp)
    e882a47e:	f64e                	sd	s3,296(sp)
    e882a480:	ea5a                	sd	s6,272(sp)
    e882a482:	e262                	sd	s8,256(sp)
    e882a484:	fde6                	sd	s9,248(sp)
    e882a486:	f9ea                	sd	s10,240(sp)
    e882a488:	e8ba                	sd	a4,80(sp)
    e882a48a:	e686                	sd	ra,328(sp)
    e882a48c:	ee56                	sd	s5,280(sp)
    e882a48e:	e65e                	sd	s7,264(sp)
    e882a490:	f5ee                	sd	s11,232(sp)
    e882a492:	8cc2                	mv	s9,a6
    if (TLS) dstaddr = mDNSNULL;
    e882a494:	4705                	li	a4,1
{
    e882a496:	892a                	mv	s2,a0
    e882a498:	842e                	mv	s0,a1
    e882a49a:	8b32                	mv	s6,a2
    e882a49c:	89b6                	mv	s3,a3
    e882a49e:	8c46                	mv	s8,a7
    e882a4a0:	3c8cbd0b          	extu	s10,s9,15,8
    if (TLS) dstaddr = mDNSNULL;
    e882a4a4:	4481                	li	s1,0
    e882a4a6:	00e78363          	beq	a5,a4,e882a4ac <mDNSCoreReceive+0x3e>
    e882a4aa:	84be                	mv	s1,a5
    if (mDNSSameAddress(srcaddr, &m->Router))
    e882a4ac:	658d                	lui	a1,0x3
    e882a4ae:	21058593          	addi	a1,a1,528 # 3210 <memcmp-0xe87fcdf0>
    e882a4b2:	95ca                	add	a1,a1,s2
    e882a4b4:	854e                	mv	a0,s3
    e882a4b6:	ecbe                	sd	a5,88(sp)
    e882a4b8:	a83e80ef          	jal	ra,e8812f3a <mDNSSameAddress>
    e882a4bc:	408b0bb3          	sub	s7,s6,s0
    e882a4c0:	67e6                	ld	a5,88(sp)
    e882a4c2:	cd1d                	beqz	a0,e882a500 <mDNSCoreReceive+0x92>
        if (mDNSSameIPPort(srcport, NATPMPPort))
    e882a4c4:	3c0a370b          	extu	a4,s4,15,0
    e882a4c8:	00078697          	auipc	a3,0x78
    e882a4cc:	0a06d683          	lhu	a3,160(a3) # e88a2568 <NATPMPPort>
    e882a4d0:	02d71863          	bne	a4,a3,e882a500 <mDNSCoreReceive+0x92>
            mDNS_Lock(m);
    e882a4d4:	0007e597          	auipc	a1,0x7e
    e882a4d8:	8a458593          	addi	a1,a1,-1884 # e88a7d78 <__func__.11977>
    e882a4dc:	854a                	mv	a0,s2
    e882a4de:	d24eb0ef          	jal	ra,e8815a02 <mDNS_Lock_>
            uDNS_ReceiveNATPacket(m, InterfaceID, (mDNSu8 *)msg, (mDNSu16)(end - pkt));
    e882a4e2:	3c0bb68b          	extu	a3,s7,15,0
    e882a4e6:	8622                	mv	a2,s0
    e882a4e8:	85e2                	mv	a1,s8
    e882a4ea:	854a                	mv	a0,s2
    e882a4ec:	6cc0b0ef          	jal	ra,e8835bb8 <uDNS_ReceiveNATPacket>
    mDNS_Unlock(m);
    e882a4f0:	0007e597          	auipc	a1,0x7e
    e882a4f4:	88858593          	addi	a1,a1,-1912 # e88a7d78 <__func__.11977>
    e882a4f8:	854a                	mv	a0,s2
    e882a4fa:	dd2eb0ef          	jal	ra,e8815acc <mDNS_Unlock_>
    e882a4fe:	a815                	j	e882a532 <mDNSCoreReceive+0xc4>
    if ((unsigned)(end - pkt) < sizeof(DNSMessageHeader))
    e882a500:	2b81                	sext.w	s7,s7
    e882a502:	472d                	li	a4,11
    e882a504:	05776663          	bltu	a4,s7,e882a550 <mDNSCoreReceive+0xe2>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e882a508:	67c6                	ld	a5,80(sp)
    e882a50a:	0ffa7613          	andi	a2,s4,255
    e882a50e:	0086161b          	slliw	a2,a2,0x8
    e882a512:	07a2                	slli	a5,a5,0x8
    e882a514:	3c8a368b          	extu	a3,s4,15,8
        LogMsg("DNS Message from %#a:%d to %#a:%d length %d too short", srcaddr, mDNSVal16(srcport), dstaddr, mDNSVal16(dstport), (int)(end - pkt));
    e882a518:	8ed1                	or	a3,a3,a2
    e882a51a:	885e                	mv	a6,s7
    e882a51c:	00fd67b3          	or	a5,s10,a5
    e882a520:	8726                	mv	a4,s1
    e882a522:	864e                	mv	a2,s3
    e882a524:	0007e597          	auipc	a1,0x7e
    e882a528:	b8458593          	addi	a1,a1,-1148 # e88a80a8 <hexValues.12413+0xf8>
    e882a52c:	4501                	li	a0,0
    e882a52e:	77f040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e882a532:	60b6                	ld	ra,328(sp)
    e882a534:	6416                	ld	s0,320(sp)
    e882a536:	74f2                	ld	s1,312(sp)
    e882a538:	7952                	ld	s2,304(sp)
    e882a53a:	79b2                	ld	s3,296(sp)
    e882a53c:	7a12                	ld	s4,288(sp)
    e882a53e:	6af2                	ld	s5,280(sp)
    e882a540:	6b52                	ld	s6,272(sp)
    e882a542:	6bb2                	ld	s7,264(sp)
    e882a544:	6c12                	ld	s8,256(sp)
    e882a546:	7cee                	ld	s9,248(sp)
    e882a548:	7d4e                	ld	s10,240(sp)
    e882a54a:	7dae                	ld	s11,232(sp)
    e882a54c:	6171                	addi	sp,sp,336
    e882a54e:	8082                	ret
    msg->h.numQuestions   = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]);
    e882a550:	00444703          	lbu	a4,4(s0)
    e882a554:	00544683          	lbu	a3,5(s0)
    QR_OP = (mDNSu8)(msg->h.flags.b[0] & kDNSFlag0_QROP_Mask);
    e882a558:	00244303          	lbu	t1,2(s0)
    msg->h.numQuestions   = (mDNSu16)((mDNSu16)ptr[0] << 8 | ptr[1]);
    e882a55c:	0087171b          	slliw	a4,a4,0x8
    e882a560:	8f55                	or	a4,a4,a3
    e882a562:	00e41223          	sh	a4,4(s0)
    msg->h.numAnswers     = (mDNSu16)((mDNSu16)ptr[2] << 8 | ptr[3]);
    e882a566:	00644703          	lbu	a4,6(s0)
    e882a56a:	00744683          	lbu	a3,7(s0)
    e882a56e:	0087171b          	slliw	a4,a4,0x8
    e882a572:	8f55                	or	a4,a4,a3
    e882a574:	00e41323          	sh	a4,6(s0)
    msg->h.numAuthorities = (mDNSu16)((mDNSu16)ptr[4] << 8 | ptr[5]);
    e882a578:	00844703          	lbu	a4,8(s0)
    e882a57c:	00944683          	lbu	a3,9(s0)
    e882a580:	0087171b          	slliw	a4,a4,0x8
    e882a584:	8f55                	or	a4,a4,a3
    e882a586:	00e41423          	sh	a4,8(s0)
    msg->h.numAdditionals = (mDNSu16)((mDNSu16)ptr[6] << 8 | ptr[7]);
    e882a58a:	00a44703          	lbu	a4,10(s0)
    e882a58e:	00b44683          	lbu	a3,11(s0)
    e882a592:	0087171b          	slliw	a4,a4,0x8
    e882a596:	8f55                	or	a4,a4,a3
    e882a598:	00e41523          	sh	a4,10(s0)
    if (!m) { LogMsg("mDNSCoreReceive ERROR m is NULL"); return; }
    e882a59c:	00091a63          	bnez	s2,e882a5b0 <mDNSCoreReceive+0x142>
    e882a5a0:	0007e597          	auipc	a1,0x7e
    e882a5a4:	b4058593          	addi	a1,a1,-1216 # e88a80e0 <hexValues.12413+0x130>
    e882a5a8:	4501                	li	a0,0
    e882a5aa:	703040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882a5ae:	b751                	j	e882a532 <mDNSCoreReceive+0xc4>
    if (srcaddr && !mDNSAddressIsValid(srcaddr)) { debugf("mDNSCoreReceive ignoring packet from %#a", srcaddr); return; }
    e882a5b0:	00098e63          	beqz	s3,e882a5cc <mDNSCoreReceive+0x15e>
    e882a5b4:	0009a683          	lw	a3,0(s3)
    e882a5b8:	4711                	li	a4,4
    e882a5ba:	0ae69763          	bne	a3,a4,e882a668 <mDNSCoreReceive+0x1fa>
    e882a5be:	0049a703          	lw	a4,4(s3)
    e882a5c2:	56f5                	li	a3,-3
    e882a5c4:	377d                	addiw	a4,a4,-1
    e882a5c6:	00e6b733          	sltu	a4,a3,a4
    e882a5ca:	f725                	bnez	a4,e882a532 <mDNSCoreReceive+0xc4>
    mDNS_Lock(m);
    e882a5cc:	0007d597          	auipc	a1,0x7d
    e882a5d0:	7ac58593          	addi	a1,a1,1964 # e88a7d78 <__func__.11977>
    e882a5d4:	854a                	mv	a0,s2
    e882a5d6:	ecbe                	sd	a5,88(sp)
    QR_OP = (mDNSu8)(msg->h.flags.b[0] & kDNSFlag0_QROP_Mask);
    e882a5d8:	0f837a93          	andi	s5,t1,248
    mDNS_Lock(m);
    e882a5dc:	c26eb0ef          	jal	ra,e8815a02 <mDNS_Lock_>
    m->PktNum++;
    e882a5e0:	27c92703          	lw	a4,636(s2)
    if (mDNSOpaque16IsZero(msg->h.id))
    e882a5e4:	67e6                	ld	a5,88(sp)
    m->PktNum++;
    e882a5e6:	2705                	addiw	a4,a4,1
    e882a5e8:	26e92e23          	sw	a4,636(s2)
    if (mDNSOpaque16IsZero(msg->h.id))
    e882a5ec:	00045703          	lhu	a4,0(s0)
    e882a5f0:	28071b63          	bnez	a4,e882a886 <mDNSCoreReceive+0x418>
        m->MPktNum++;
    e882a5f4:	28092703          	lw	a4,640(s2)
    e882a5f8:	2705                	addiw	a4,a4,1
    e882a5fa:	28e92023          	sw	a4,640(s2)
    if (!dstaddr || (!mDNSAddressIsAllDNSLinkGroup(dstaddr) && (QR_OP == StdR || QR_OP == UpdR)))
    e882a5fe:	28049663          	bnez	s1,e882a88a <mDNSCoreReceive+0x41c>
        if (!mDNSOpaque16IsZero(msg->h.id)) // uDNS_ReceiveMsg only needs to get real uDNS responses, not "QU" mDNS responses
    e882a602:	00045703          	lhu	a4,0(s0)
    e882a606:	28070e63          	beqz	a4,e882a8a2 <mDNSCoreReceive+0x434>
            ifid = mDNSInterface_Any;
    e882a60a:	00078717          	auipc	a4,0x78
    e882a60e:	75670713          	addi	a4,a4,1878 # e88a2d60 <mDNSInterface_Any>
    e882a612:	00073d83          	ld	s11,0(a4)
            if (mDNS_PacketLoggingEnabled)
    e882a616:	000b9717          	auipc	a4,0xb9
    e882a61a:	4ee70713          	addi	a4,a4,1262 # e88e3b04 <mDNS_PacketLoggingEnabled>
    e882a61e:	4318                	lw	a4,0(a4)
    e882a620:	cf05                	beqz	a4,e882a658 <mDNSCoreReceive+0x1ea>
                DumpPacket(m, mStatus_NoError, mDNSfalse, TLS ? "TLS" : !dstaddr ? "TCP" : "UDP", srcaddr, srcport, dstaddr, dstport, msg, end);
    e882a622:	4705                	li	a4,1
    e882a624:	00078697          	auipc	a3,0x78
    e882a628:	76c68693          	addi	a3,a3,1900 # e88a2d90 <mDNSInterface_Unicast+0x10>
    e882a62c:	00e78b63          	beq	a5,a4,e882a642 <mDNSCoreReceive+0x1d4>
    e882a630:	00078697          	auipc	a3,0x78
    e882a634:	76868693          	addi	a3,a3,1896 # e88a2d98 <mDNSInterface_Unicast+0x18>
    e882a638:	c489                	beqz	s1,e882a642 <mDNSCoreReceive+0x1d4>
    e882a63a:	00078697          	auipc	a3,0x78
    e882a63e:	74e68693          	addi	a3,a3,1870 # e88a2d88 <mDNSInterface_Unicast+0x8>
    e882a642:	e45a                	sd	s6,8(sp)
    e882a644:	e022                	sd	s0,0(sp)
    e882a646:	88e6                	mv	a7,s9
    e882a648:	8826                	mv	a6,s1
    e882a64a:	87d2                	mv	a5,s4
    e882a64c:	874e                	mv	a4,s3
    e882a64e:	4601                	li	a2,0
    e882a650:	4581                	li	a1,0
    e882a652:	854a                	mv	a0,s2
    e882a654:	bf5ec0ef          	jal	ra,e8817248 <DumpPacket>
            uDNS_ReceiveMsg(m, msg, end, srcaddr, srcport);
    e882a658:	8752                	mv	a4,s4
    e882a65a:	86ce                	mv	a3,s3
    e882a65c:	865a                	mv	a2,s6
    e882a65e:	85a2                	mv	a1,s0
    e882a660:	854a                	mv	a0,s2
    e882a662:	1c50b0ef          	jal	ra,e8836026 <uDNS_ReceiveMsg>
    e882a666:	ac3d                	j	e882a8a4 <mDNSCoreReceive+0x436>
    if (srcaddr && !mDNSAddressIsValid(srcaddr)) { debugf("mDNSCoreReceive ignoring packet from %#a", srcaddr); return; }
    e882a668:	4619                	li	a2,6
    e882a66a:	4705                	li	a4,1
    e882a66c:	f4c69fe3          	bne	a3,a2,e882a5ca <mDNSCoreReceive+0x15c>
    e882a670:	e2b9c80b          	lwd	a6,a1,(s3),1,3
    e882a674:	0049a503          	lw	a0,4(s3)
    e882a678:	0109a683          	lw	a3,16(s3)
    e882a67c:	01056633          	or	a2,a0,a6
    e882a680:	8e4d                	or	a2,a2,a1
    e882a682:	8e55                	or	a2,a2,a3
    e882a684:	d239                	beqz	a2,e882a5ca <mDNSCoreReceive+0x15c>
    e882a686:	01057733          	and	a4,a0,a6
    e882a68a:	8f6d                	and	a4,a4,a1
    e882a68c:	8f75                	and	a4,a4,a3
    e882a68e:	0705                	addi	a4,a4,1
    e882a690:	00173713          	seqz	a4,a4
    e882a694:	bf1d                	j	e882a5ca <mDNSCoreReceive+0x15c>
    if (!dstaddr || (!mDNSAddressIsAllDNSLinkGroup(dstaddr) && (QR_OP == StdR || QR_OP == UpdR)))
    e882a696:	4699                	li	a3,6
    e882a698:	02d71563          	bne	a4,a3,e882a6c2 <mDNSCoreReceive+0x254>
    e882a69c:	00077717          	auipc	a4,0x77
    e882a6a0:	4ac70713          	addi	a4,a4,1196 # e88a1b48 <AllDNSLinkGroup_v6>
    e882a6a4:	40d0                	lw	a2,4(s1)
    e882a6a6:	4354                	lw	a3,4(a4)
    e882a6a8:	00d61d63          	bne	a2,a3,e882a6c2 <mDNSCoreReceive+0x254>
    e882a6ac:	4490                	lw	a2,8(s1)
    e882a6ae:	4714                	lw	a3,8(a4)
    e882a6b0:	00d61963          	bne	a2,a3,e882a6c2 <mDNSCoreReceive+0x254>
    e882a6b4:	44d0                	lw	a2,12(s1)
    e882a6b6:	4754                	lw	a3,12(a4)
    e882a6b8:	00d61563          	bne	a2,a3,e882a6c2 <mDNSCoreReceive+0x254>
    e882a6bc:	4894                	lw	a3,16(s1)
    e882a6be:	4b18                	lw	a4,16(a4)
    e882a6c0:	aaf9                	j	e882a89e <mDNSCoreReceive+0x430>
    e882a6c2:	08000713          	li	a4,128
    e882a6c6:	f2ea8ee3          	beq	s5,a4,e882a602 <mDNSCoreReceive+0x194>
    e882a6ca:	0a800713          	li	a4,168
    e882a6ce:	f2ea8ae3          	beq	s5,a4,e882a602 <mDNSCoreReceive+0x194>
    if      (QR_OP == StdQ) mDNSCoreReceiveQuery   (m, msg, end, srcaddr, srcport, dstaddr, dstport, ifid);
    e882a6d2:	0c0a8a63          	beqz	s5,e882a7a6 <mDNSCoreReceive+0x338>
    else if (QR_OP == UpdQ) mDNSCoreReceiveUpdate  (m, msg, end, srcaddr, srcport, dstaddr, dstport, InterfaceID);
    e882a6d6:	02800793          	li	a5,40
    e882a6da:	16fa8f63          	beq	s5,a5,e882a858 <mDNSCoreReceive+0x3ea>
        if (mDNS_LoggingEnabled)
    e882a6de:	000aab17          	auipc	s6,0xaa
    e882a6e2:	396b0b13          	addi	s6,s6,918 # e88d4a74 <mDNS_LoggingEnabled>
    e882a6e6:	000b2783          	lw	a5,0(s6)
    e882a6ea:	e00783e3          	beqz	a5,e882a4f0 <mDNSCoreReceive+0x82>
            if (msgCount < 1000) {
    e882a6ee:	000b9717          	auipc	a4,0xb9
    e882a6f2:	40270713          	addi	a4,a4,1026 # e88e3af0 <msgCount.11978>
    e882a6f6:	431c                	lw	a5,0(a4)
    e882a6f8:	3e700693          	li	a3,999
    e882a6fc:	def6cae3          	blt	a3,a5,e882a4f0 <mDNSCoreReceive+0x82>
                msgCount++;
    e882a700:	2785                	addiw	a5,a5,1
    e882a702:	c31c                	sw	a5,0(a4)
    e882a704:	67c6                	ld	a5,80(sp)
    e882a706:	0ffa7713          	andi	a4,s4,255
                LogInfo("Unknown DNS packet type %02X%02X from %#-15a:%-5d to %#-15a:%-5d length %d on %p (ignored)",
    e882a70a:	e462                	sd	s8,8(sp)
    e882a70c:	e05e                	sd	s7,0(sp)
    e882a70e:	0087171b          	slliw	a4,a4,0x8
    e882a712:	00344683          	lbu	a3,3(s0)
    e882a716:	00244603          	lbu	a2,2(s0)
    e882a71a:	00879893          	slli	a7,a5,0x8
    e882a71e:	3c8a3a0b          	extu	s4,s4,15,8
    e882a722:	014767b3          	or	a5,a4,s4
    e882a726:	8826                	mv	a6,s1
    e882a728:	011d68b3          	or	a7,s10,a7
    e882a72c:	874e                	mv	a4,s3
    e882a72e:	0007e597          	auipc	a1,0x7e
    e882a732:	a5a58593          	addi	a1,a1,-1446 # e88a8188 <hexValues.12413+0x1d8>
    e882a736:	450d                	li	a0,3
    e882a738:	575040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882a73c:	4481                	li	s1,0
                    char *p = buffer + mDNS_snprintf(buffer, sizeof(buffer), "%04X", i);
    e882a73e:	0007ea17          	auipc	s4,0x7e
    e882a742:	aaaa0a13          	addi	s4,s4,-1366 # e88a81e8 <hexValues.12413+0x238>
                    do if (i < (int)(end - pkt)) p += mDNS_snprintf(p, sizeof(buffer), " %02X", pkt[i]);while (++i & 15);
    e882a746:	0007ea97          	auipc	s5,0x7e
    e882a74a:	aaaa8a93          	addi	s5,s5,-1366 # e88a81f0 <hexValues.12413+0x240>
                    LogInfo("%s", buffer);
    e882a74e:	00080c17          	auipc	s8,0x80
    e882a752:	c52c0c13          	addi	s8,s8,-942 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
                while (i < (int)(end - pkt))
    e882a756:	d974dde3          	bge	s1,s7,e882a4f0 <mDNSCoreReceive+0x82>
                    char *p = buffer + mDNS_snprintf(buffer, sizeof(buffer), "%04X", i);
    e882a75a:	86a6                	mv	a3,s1
    e882a75c:	8652                	mv	a2,s4
    e882a75e:	08000593          	li	a1,128
    e882a762:	1088                	addi	a0,sp,96
    e882a764:	cdeeb0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e882a768:	7c05350b          	extu	a0,a0,31,0
    e882a76c:	109c                	addi	a5,sp,96
    e882a76e:	00a789b3          	add	s3,a5,a0
                    do if (i < (int)(end - pkt)) p += mDNS_snprintf(p, sizeof(buffer), " %02X", pkt[i]);while (++i & 15);
    e882a772:	0174dd63          	bge	s1,s7,e882a78c <mDNSCoreReceive+0x31e>
    e882a776:	8094468b          	lrbu	a3,s0,s1,0
    e882a77a:	854e                	mv	a0,s3
    e882a77c:	8656                	mv	a2,s5
    e882a77e:	08000593          	li	a1,128
    e882a782:	cc0eb0ef          	jal	ra,e8815c42 <mDNS_snprintf>
    e882a786:	7c05350b          	extu	a0,a0,31,0
    e882a78a:	99aa                	add	s3,s3,a0
    e882a78c:	2485                	addiw	s1,s1,1
    e882a78e:	00f4f793          	andi	a5,s1,15
    e882a792:	f3e5                	bnez	a5,e882a772 <mDNSCoreReceive+0x304>
                    LogInfo("%s", buffer);
    e882a794:	000b2783          	lw	a5,0(s6)
    e882a798:	dfdd                	beqz	a5,e882a756 <mDNSCoreReceive+0x2e8>
    e882a79a:	1090                	addi	a2,sp,96
    e882a79c:	85e2                	mv	a1,s8
    e882a79e:	450d                	li	a0,3
    e882a7a0:	50d040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882a7a4:	bf4d                	j	e882a756 <mDNSCoreReceive+0x2e8>
    mDNSInterfaceID ifid = InterfaceID;
    e882a7a6:	8de2                	mv	s11,s8
    e882a7a8:	a201                	j	e882a8a8 <mDNSCoreReceive+0x43a>
    mDNSBool QueryWasLocalUnicast = srcaddr && dstaddr &&
    e882a7aa:	10048463          	beqz	s1,e882a8b2 <mDNSCoreReceive+0x444>
                                    !mDNSAddrIsDNSMulticast(dstaddr) && mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
    e882a7ae:	8526                	mv	a0,s1
    e882a7b0:	fdee80ef          	jal	ra,e8812f8e <mDNSAddrIsDNSMulticast>
    e882a7b4:	4b81                	li	s7,0
    mDNSBool QueryWasLocalUnicast = srcaddr && dstaddr &&
    e882a7b6:	e909                	bnez	a0,e882a7c8 <mDNSCoreReceive+0x35a>
                                    !mDNSAddrIsDNSMulticast(dstaddr) && mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
    e882a7b8:	864e                	mv	a2,s3
    e882a7ba:	85ee                	mv	a1,s11
    e882a7bc:	854a                	mv	a0,s2
    e882a7be:	a42f40ef          	jal	ra,e881ea00 <mDNS_AddressIsLocalSubnet>
    e882a7c2:	2501                	sext.w	a0,a0
    e882a7c4:	00a03bb3          	snez	s7,a0
    if (!dstaddr || (!InterfaceID && mDNSAddrIsDNSMulticast(dstaddr)))
    e882a7c8:	000d9a63          	bnez	s11,e882a7dc <mDNSCoreReceive+0x36e>
    e882a7cc:	8526                	mv	a0,s1
    e882a7ce:	fc0e80ef          	jal	ra,e8812f8e <mDNSAddrIsDNSMulticast>
        const char *const reason = !dstaddr ? "Received over TCP connection" : "Multicast, but no InterfaceID";
    e882a7d2:	0007e717          	auipc	a4,0x7e
    e882a7d6:	8b670713          	addi	a4,a4,-1866 # e88a8088 <hexValues.12413+0xd8>
    if (!dstaddr || (!InterfaceID && mDNSAddrIsDNSMulticast(dstaddr)))
    e882a7da:	e165                	bnez	a0,e882a8ba <mDNSCoreReceive+0x44c>
    responseend = ProcessQuery(m, msg, end, srcaddr, InterfaceID,
    e882a7dc:	00078717          	auipc	a4,0x78
    e882a7e0:	d7c75703          	lhu	a4,-644(a4) # e88a2558 <MulticastDNSPort>
    e882a7e4:	3c0a378b          	extu	a5,s4,15,0
    e882a7e8:	8f99                	sub	a5,a5,a4
    e882a7ea:	00f037b3          	snez	a5,a5
    e882a7ee:	8526                	mv	a0,s1
    e882a7f0:	e8be                	sd	a5,80(sp)
    e882a7f2:	f9ce80ef          	jal	ra,e8812f8e <mDNSAddrIsDNSMulticast>
    e882a7f6:	649d                	lui	s1,0x7
    e882a7f8:	1e048493          	addi	s1,s1,480 # 71e0 <memcmp-0xe87f8e20>
    e882a7fc:	67c6                	ld	a5,80(sp)
    e882a7fe:	94ca                	add	s1,s1,s2
    e882a800:	882a                	mv	a6,a0
    e882a802:	865a                	mv	a2,s6
    e882a804:	e026                	sd	s1,0(sp)
    e882a806:	88de                	mv	a7,s7
    e882a808:	876e                	mv	a4,s11
    e882a80a:	86ce                	mv	a3,s3
    e882a80c:	85a2                	mv	a1,s0
    e882a80e:	854a                	mv	a0,s2
    e882a810:	8b4fd0ef          	jal	ra,e88278c4 <ProcessQuery>
    e882a814:	862a                	mv	a2,a0
    if (responseend)    // If responseend is non-null, that means we built a unicast response packet
    e882a816:	cc050de3          	beqz	a0,e882a4f0 <mDNSCoreReceive+0x82>
        mDNSSendDNSMessage(m, &m->omsg, responseend, InterfaceID, mDNSNULL, srcaddr, srcport, mDNSNULL, mDNSNULL, mDNSfalse);
    e882a81a:	e402                	sd	zero,8(sp)
    e882a81c:	e002                	sd	zero,0(sp)
    e882a81e:	4881                	li	a7,0
    e882a820:	8852                	mv	a6,s4
    e882a822:	87ce                	mv	a5,s3
    e882a824:	4701                	li	a4,0
    e882a826:	86ee                	mv	a3,s11
    e882a828:	85a6                	mv	a1,s1
    e882a82a:	854a                	mv	a0,s2
    e882a82c:	e87ec0ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
    e882a830:	b1c1                	j	e882a4f0 <mDNSCoreReceive+0x82>
    else if (QR_OP == StdR) mDNSCoreReceiveResponse(m, msg, end, srcaddr, srcport, dstaddr, dstport, ifid);
    e882a832:	08000793          	li	a5,128
    e882a836:	00fa9d63          	bne	s5,a5,e882a850 <mDNSCoreReceive+0x3e2>
    e882a83a:	88ee                	mv	a7,s11
    e882a83c:	8866                	mv	a6,s9
    e882a83e:	87a6                	mv	a5,s1
    e882a840:	8752                	mv	a4,s4
    e882a842:	86ce                	mv	a3,s3
    e882a844:	865a                	mv	a2,s6
    e882a846:	85a2                	mv	a1,s0
    e882a848:	854a                	mv	a0,s2
    e882a84a:	af0fe0ef          	jal	ra,e8828b3a <mDNSCoreReceiveResponse>
    e882a84e:	b14d                	j	e882a4f0 <mDNSCoreReceive+0x82>
    else if (QR_OP == UpdQ) mDNSCoreReceiveUpdate  (m, msg, end, srcaddr, srcport, dstaddr, dstport, InterfaceID);
    e882a850:	02800793          	li	a5,40
    e882a854:	00fa9d63          	bne	s5,a5,e882a86e <mDNSCoreReceive+0x400>
    e882a858:	88e2                	mv	a7,s8
    e882a85a:	8866                	mv	a6,s9
    e882a85c:	87a6                	mv	a5,s1
    e882a85e:	8752                	mv	a4,s4
    e882a860:	86ce                	mv	a3,s3
    e882a862:	865a                	mv	a2,s6
    e882a864:	85a2                	mv	a1,s0
    e882a866:	854a                	mv	a0,s2
    e882a868:	e77f80ef          	jal	ra,e88236de <mDNSCoreReceiveUpdate>
    e882a86c:	b151                	j	e882a4f0 <mDNSCoreReceive+0x82>
    else if (QR_OP == UpdR) mDNSCoreReceiveUpdateR (m, msg, end, srcaddr,                            InterfaceID);
    e882a86e:	0a800793          	li	a5,168
    e882a872:	e6fa96e3          	bne	s5,a5,e882a6de <mDNSCoreReceive+0x270>
    e882a876:	8762                	mv	a4,s8
    e882a878:	86ce                	mv	a3,s3
    e882a87a:	865a                	mv	a2,s6
    e882a87c:	85a2                	mv	a1,s0
    e882a87e:	854a                	mv	a0,s2
    e882a880:	e8af90ef          	jal	ra,e8823f0a <mDNSCoreReceiveUpdateR>
    e882a884:	b1b5                	j	e882a4f0 <mDNSCoreReceive+0x82>
    if (!dstaddr || (!mDNSAddressIsAllDNSLinkGroup(dstaddr) && (QR_OP == StdR || QR_OP == UpdR)))
    e882a886:	d80482e3          	beqz	s1,e882a60a <mDNSCoreReceive+0x19c>
    e882a88a:	4098                	lw	a4,0(s1)
    e882a88c:	4691                	li	a3,4
    e882a88e:	e0d714e3          	bne	a4,a3,e882a696 <mDNSCoreReceive+0x228>
    e882a892:	00077717          	auipc	a4,0x77
    e882a896:	29e70713          	addi	a4,a4,670 # e88a1b30 <AllDNSLinkGroup_v4>
    e882a89a:	40d4                	lw	a3,4(s1)
    e882a89c:	4358                	lw	a4,4(a4)
    e882a89e:	e2e692e3          	bne	a3,a4,e882a6c2 <mDNSCoreReceive+0x254>
    mDNSInterfaceID ifid = InterfaceID;
    e882a8a2:	8de2                	mv	s11,s8
    if      (QR_OP == StdQ) mDNSCoreReceiveQuery   (m, msg, end, srcaddr, srcport, dstaddr, dstport, ifid);
    e882a8a4:	f80a97e3          	bnez	s5,e882a832 <mDNSCoreReceive+0x3c4>
                                    !mDNSAddrIsDNSMulticast(dstaddr) && mDNS_AddressIsLocalSubnet(m, InterfaceID, srcaddr);
    e882a8a8:	f00991e3          	bnez	s3,e882a7aa <mDNSCoreReceive+0x33c>
    e882a8ac:	4b81                	li	s7,0
    if (!dstaddr || (!InterfaceID && mDNSAddrIsDNSMulticast(dstaddr)))
    e882a8ae:	f0049de3          	bnez	s1,e882a7c8 <mDNSCoreReceive+0x35a>
        const char *const reason = !dstaddr ? "Received over TCP connection" : "Multicast, but no InterfaceID";
    e882a8b2:	0007d717          	auipc	a4,0x7d
    e882a8b6:	7b670713          	addi	a4,a4,1974 # e88a8068 <hexValues.12413+0xb8>
    e882a8ba:	67c6                	ld	a5,80(sp)
        LogMsg("Ignoring Query from %#-15a:%-5d to %#-15a:%-5d on 0x%p with "
    e882a8bc:	00445883          	lhu	a7,4(s0)
    e882a8c0:	0ffa7693          	andi	a3,s4,255
    e882a8c4:	0086969b          	slliw	a3,a3,0x8
    e882a8c8:	3c8a3a0b          	extu	s4,s4,15,8
    e882a8cc:	07a2                	slli	a5,a5,0x8
    e882a8ce:	4585                	li	a1,1
    e882a8d0:	0146e6b3          	or	a3,a3,s4
    e882a8d4:	00fd67b3          	or	a5,s10,a5
    e882a8d8:	0007f617          	auipc	a2,0x7f
    e882a8dc:	80060613          	addi	a2,a2,-2048 # e88a90d8 <hexValues.12413+0x1128>
    e882a8e0:	00b88663          	beq	a7,a1,e882a8ec <mDNSCoreReceive+0x47e>
    e882a8e4:	0007e617          	auipc	a2,0x7e
    e882a8e8:	7fc60613          	addi	a2,a2,2044 # e88a90e0 <hexValues.12413+0x1130>
    e882a8ec:	00645583          	lhu	a1,6(s0)
    e882a8f0:	4805                	li	a6,1
    e882a8f2:	0007e517          	auipc	a0,0x7e
    e882a8f6:	7e650513          	addi	a0,a0,2022 # e88a90d8 <hexValues.12413+0x1128>
    e882a8fa:	01058663          	beq	a1,a6,e882a906 <mDNSCoreReceive+0x498>
    e882a8fe:	0007e517          	auipc	a0,0x7e
    e882a902:	7e250513          	addi	a0,a0,2018 # e88a90e0 <hexValues.12413+0x1130>
    e882a906:	00845803          	lhu	a6,8(s0)
    e882a90a:	4e05                	li	t3,1
    e882a90c:	0007e317          	auipc	t1,0x7e
    e882a910:	7dc30313          	addi	t1,t1,2012 # e88a90e8 <hexValues.12413+0x1138>
    e882a914:	01c80663          	beq	a6,t3,e882a920 <mDNSCoreReceive+0x4b2>
    e882a918:	0007e317          	auipc	t1,0x7e
    e882a91c:	7d830313          	addi	t1,t1,2008 # e88a90f0 <hexValues.12413+0x1140>
    e882a920:	00a45e03          	lhu	t3,10(s0)
    e882a924:	4f05                	li	t5,1
    e882a926:	0007ee97          	auipc	t4,0x7e
    e882a92a:	7d2e8e93          	addi	t4,t4,2002 # e88a90f8 <hexValues.12413+0x1148>
    e882a92e:	01ee0663          	beq	t3,t5,e882a93a <mDNSCoreReceive+0x4cc>
    e882a932:	00083e97          	auipc	t4,0x83
    e882a936:	496e8e93          	addi	t4,t4,1174 # e88addc8 <kOn.10632+0x1e80>
    e882a93a:	0431                	addi	s0,s0,12
    e882a93c:	408b0b33          	sub	s6,s6,s0
    e882a940:	e0ba                	sd	a4,64(sp)
    e882a942:	ec42                	sd	a6,24(sp)
    e882a944:	e82a                	sd	a0,16(sp)
    e882a946:	e42e                	sd	a1,8(sp)
    e882a948:	e032                	sd	a2,0(sp)
    e882a94a:	fc5a                	sd	s6,56(sp)
    e882a94c:	f876                	sd	t4,48(sp)
    e882a94e:	f472                	sd	t3,40(sp)
    e882a950:	f01a                	sd	t1,32(sp)
    e882a952:	886e                	mv	a6,s11
    e882a954:	8726                	mv	a4,s1
    e882a956:	864e                	mv	a2,s3
    e882a958:	0007d597          	auipc	a1,0x7d
    e882a95c:	7a858593          	addi	a1,a1,1960 # e88a8100 <hexValues.12413+0x150>
    e882a960:	4501                	li	a0,0
    e882a962:	34b040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return;
    e882a966:	b669                	j	e882a4f0 <mDNSCoreReceive+0x82>

00000000e882a968 <CacheRecordRmvEventsForQuestion>:
{
    e882a968:	7119                	addi	sp,sp,-128
    e882a96a:	f8a2                	sd	s0,112(sp)
    e882a96c:	fc5e                	sd	s7,56(sp)
    e882a96e:	fc86                	sd	ra,120(sp)
    e882a970:	f4a6                	sd	s1,104(sp)
    e882a972:	f0ca                	sd	s2,96(sp)
    e882a974:	ecce                	sd	s3,88(sp)
    e882a976:	e8d2                	sd	s4,80(sp)
    e882a978:	e4d6                	sd	s5,72(sp)
    e882a97a:	e0da                	sd	s6,64(sp)
    e882a97c:	f862                	sd	s8,48(sp)
    e882a97e:	f466                	sd	s9,40(sp)
    e882a980:	f06a                	sd	s10,32(sp)
    e882a982:	ec6e                	sd	s11,24(sp)
    if (m->CurrentQuestion)
    e882a984:	2c853483          	ld	s1,712(a0)
{
    e882a988:	8baa                	mv	s7,a0
    e882a98a:	842e                	mv	s0,a1
    if (m->CurrentQuestion)
    e882a98c:	cc99                	beqz	s1,e882a9aa <CacheRecordRmvEventsForQuestion+0x42>
        LogMsg("CacheRecordRmvEventsForQuestion: ERROR m->CurrentQuestion already set: %##s (%s)",
    e882a98e:	3144d503          	lhu	a0,788(s1)
    e882a992:	aceeb0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882a996:	86aa                	mv	a3,a0
    e882a998:	21448613          	addi	a2,s1,532
    e882a99c:	0007a597          	auipc	a1,0x7a
    e882a9a0:	10458593          	addi	a1,a1,260 # e88a4aa0 <end.8789+0x13f8>
    e882a9a4:	4501                	li	a0,0
    e882a9a6:	307040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!IsQuestionNew(m, q) && !q->LOAddressAnswers)
    e882a9aa:	2c0bb783          	ld	a5,704(s7)
    for (q = m->NewQuestions; q; q = q->next)
    e882a9ae:	e7a9                	bnez	a5,e882a9f8 <CacheRecordRmvEventsForQuestion+0x90>
    if (!IsQuestionNew(m, q) && !q->LOAddressAnswers)
    e882a9b0:	14144903          	lbu	s2,321(s0)
    e882a9b4:	18091e63          	bnez	s2,e882ab50 <CacheRecordRmvEventsForQuestion+0x1e8>
        m->CurrentQuestion = q;
    e882a9b8:	2c8bb423          	sd	s0,712(s7)
    cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e882a9bc:	440c                	lw	a1,8(s0)
    e882a9be:	21440a13          	addi	s4,s0,532
    e882a9c2:	8652                	mv	a2,s4
    e882a9c4:	855e                	mv	a0,s7
    e882a9c6:	c83f30ef          	jal	ra,e881e648 <CacheGroupForName>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e882a9ca:	e91d                	bnez	a0,e882aa00 <CacheRecordRmvEventsForQuestion+0x98>
        if (m->CurrentQuestion != q) { m->CurrentQuestion = mDNSNULL; return mDNSfalse; }
    e882a9cc:	2c8bb783          	ld	a5,712(s7)
    e882a9d0:	16878c63          	beq	a5,s0,e882ab48 <CacheRecordRmvEventsForQuestion+0x1e0>
    e882a9d4:	2c0bb423          	sd	zero,712(s7)
}
    e882a9d8:	70e6                	ld	ra,120(sp)
    e882a9da:	7446                	ld	s0,112(sp)
    e882a9dc:	854a                	mv	a0,s2
    e882a9de:	74a6                	ld	s1,104(sp)
    e882a9e0:	7906                	ld	s2,96(sp)
    e882a9e2:	69e6                	ld	s3,88(sp)
    e882a9e4:	6a46                	ld	s4,80(sp)
    e882a9e6:	6aa6                	ld	s5,72(sp)
    e882a9e8:	6b06                	ld	s6,64(sp)
    e882a9ea:	7be2                	ld	s7,56(sp)
    e882a9ec:	7c42                	ld	s8,48(sp)
    e882a9ee:	7ca2                	ld	s9,40(sp)
    e882a9f0:	7d02                	ld	s10,32(sp)
    e882a9f2:	6de2                	ld	s11,24(sp)
    e882a9f4:	6109                	addi	sp,sp,128
    e882a9f6:	8082                	ret
        if (q == question) return mDNStrue;
    e882a9f8:	14f40c63          	beq	s0,a5,e882ab50 <CacheRecordRmvEventsForQuestion+0x1e8>
    for (q = m->NewQuestions; q; q = q->next)
    e882a9fc:	639c                	ld	a5,0(a5)
    e882a9fe:	bf45                	j	e882a9ae <CacheRecordRmvEventsForQuestion+0x46>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e882aa00:	6904                	ld	s1,16(a0)
            LogInfo("CacheRecordRmvEventsForCurrentQuestion: Calling AnswerCurrentQuestionWithResourceRecord (RMV) for question %##s using resource record %s LocalAnswers %d",
    e882aa02:	000aaa97          	auipc	s5,0xaa
    e882aa06:	072a8a93          	addi	s5,s5,114 # e88d4a74 <mDNS_LoggingEnabled>
                    LogInfo("CacheRecordRmvEventsForCurrentQuestion: Updating CRActiveQuestion to %p for cache record %s, "
    e882aa0a:	03bb8b13          	addi	s6,s7,59
    e882aa0e:	0007ac97          	auipc	s9,0x7a
    e882aa12:	21ac8c93          	addi	s9,s9,538 # e88a4c28 <end.8789+0x1580>
            LogInfo("CacheRecordRmvEventsForCurrentQuestion: Calling AnswerCurrentQuestionWithResourceRecord (RMV) for question %##s using resource record %s LocalAnswers %d",
    e882aa16:	0007ad17          	auipc	s10,0x7a
    e882aa1a:	172d0d13          	addi	s10,s10,370 # e88a4b88 <end.8789+0x14e0>
            LogInfo("CacheRecordRmvEventsForCurrentQuestion: CacheRecord %s Suppressing RMV events for question %p %##s (%s), CRActiveQuestion %p, CurrentAnswers %d",
    e882aa1e:	0007ad97          	auipc	s11,0x7a
    e882aa22:	0dad8d93          	addi	s11,s11,218 # e88a4af8 <end.8789+0x1450>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e882aa26:	d0dd                	beqz	s1,e882a9cc <CacheRecordRmvEventsForQuestion+0x64>
        if (rr->resrec.RecordType == kDNSRecordTypePacketNegative)
    e882aa28:	0084c783          	lbu	a5,8(s1)
    e882aa2c:	0f000713          	li	a4,240
    e882aa30:	02e79f63          	bne	a5,a4,e882aa6e <CacheRecordRmvEventsForQuestion+0x106>
            LogInfo("CacheRecordRmvEventsForCurrentQuestion: CacheRecord %s Suppressing RMV events for question %p %##s (%s), CRActiveQuestion %p, CurrentAnswers %d",
    e882aa34:	000aa783          	lw	a5,0(s5)
    e882aa38:	cb8d                	beqz	a5,e882aa6a <CacheRecordRmvEventsForQuestion+0x102>
    e882aa3a:	788c                	ld	a1,48(s1)
    e882aa3c:	865a                	mv	a2,s6
    e882aa3e:	00848513          	addi	a0,s1,8
    e882aa42:	0591                	addi	a1,a1,4
    e882aa44:	fd1eb0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882aa48:	e42a                	sd	a0,8(sp)
    e882aa4a:	31445503          	lhu	a0,788(s0)
    e882aa4e:	a12eb0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882aa52:	87aa                	mv	a5,a0
    e882aa54:	02442883          	lw	a7,36(s0)
    e882aa58:	0604b803          	ld	a6,96(s1)
    e882aa5c:	6622                	ld	a2,8(sp)
    e882aa5e:	8752                	mv	a4,s4
    e882aa60:	86a2                	mv	a3,s0
    e882aa62:	85ee                	mv	a1,s11
    e882aa64:	450d                	li	a0,3
    e882aa66:	247040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e882aa6a:	6084                	ld	s1,0(s1)
    e882aa6c:	bf6d                	j	e882aa26 <CacheRecordRmvEventsForQuestion+0xbe>
        if (SameNameRecordAnswersQuestion(&rr->resrec, q))
    e882aa6e:	00848993          	addi	s3,s1,8
    e882aa72:	85a2                	mv	a1,s0
    e882aa74:	854e                	mv	a0,s3
    e882aa76:	c14eb0ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e882aa7a:	d965                	beqz	a0,e882aa6a <CacheRecordRmvEventsForQuestion+0x102>
            LogInfo("CacheRecordRmvEventsForCurrentQuestion: Calling AnswerCurrentQuestionWithResourceRecord (RMV) for question %##s using resource record %s LocalAnswers %d",
    e882aa7c:	000aa783          	lw	a5,0(s5)
    e882aa80:	cf99                	beqz	a5,e882aa9e <CacheRecordRmvEventsForQuestion+0x136>
    e882aa82:	788c                	ld	a1,48(s1)
    e882aa84:	865a                	mv	a2,s6
    e882aa86:	854e                	mv	a0,s3
    e882aa88:	0591                	addi	a1,a1,4
    e882aa8a:	f8beb0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882aa8e:	86aa                	mv	a3,a0
    e882aa90:	14144703          	lbu	a4,321(s0)
    e882aa94:	8652                	mv	a2,s4
    e882aa96:	85ea                	mv	a1,s10
    e882aa98:	450d                	li	a0,3
    e882aa9a:	213040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            q->CurrentAnswers--;
    e882aa9e:	505c                	lw	a5,36(s0)
            if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers--;
    e882aaa0:	40000713          	li	a4,1024
            q->CurrentAnswers--;
    e882aaa4:	37fd                	addiw	a5,a5,-1
    e882aaa6:	d05c                	sw	a5,36(s0)
            if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers--;
    e882aaa8:	0144d783          	lhu	a5,20(s1)
    e882aaac:	00f77563          	bgeu	a4,a5,e882aab6 <CacheRecordRmvEventsForQuestion+0x14e>
    e882aab0:	545c                	lw	a5,44(s0)
    e882aab2:	37fd                	addiw	a5,a5,-1
    e882aab4:	d45c                	sw	a5,44(s0)
            if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers--;
    e882aab6:	0084c783          	lbu	a5,8(s1)
    e882aaba:	8bc1                	andi	a5,a5,16
    e882aabc:	c781                	beqz	a5,e882aac4 <CacheRecordRmvEventsForQuestion+0x15c>
    e882aabe:	581c                	lw	a5,48(s0)
    e882aac0:	37fd                	addiw	a5,a5,-1
    e882aac2:	d81c                	sw	a5,48(s0)
            if (rr->CRActiveQuestion == q)
    e882aac4:	70bc                	ld	a5,96(s1)
    e882aac6:	00f41f63          	bne	s0,a5,e882aae4 <CacheRecordRmvEventsForQuestion+0x17c>
                for (qptr = m->Questions; qptr; qptr=qptr->next)
    e882aaca:	2b8bbc03          	ld	s8,696(s7)
    e882aace:	020c1563          	bnez	s8,e882aaf8 <CacheRecordRmvEventsForQuestion+0x190>
                rr->CRActiveQuestion = qptr;        // Question used to be active; new value may or may not be null
    e882aad2:	0784b023          	sd	s8,96(s1)
                if (!qptr) m->rrcache_active--; // If no longer active, decrement rrcache_active count
    e882aad6:	000c1763          	bnez	s8,e882aae4 <CacheRecordRmvEventsForQuestion+0x17c>
    e882aada:	2fcba783          	lw	a5,764(s7)
    e882aade:	37fd                	addiw	a5,a5,-1
    e882aae0:	2efbae23          	sw	a5,764(s7)
            AnswerCurrentQuestionWithResourceRecord(m, rr, QC_rmv);
    e882aae4:	4601                	li	a2,0
    e882aae6:	85a6                	mv	a1,s1
    e882aae8:	855e                	mv	a0,s7
    e882aaea:	ed7fb0ef          	jal	ra,e88269c0 <AnswerCurrentQuestionWithResourceRecord>
            if (m->CurrentQuestion != q) break;     // If callback deleted q, then we're finished here
    e882aaee:	2c8bb783          	ld	a5,712(s7)
    e882aaf2:	f6f40ce3          	beq	s0,a5,e882aa6a <CacheRecordRmvEventsForQuestion+0x102>
    e882aaf6:	bdf9                	j	e882a9d4 <CacheRecordRmvEventsForQuestion+0x6c>
                    if (qptr != q && ActiveQuestion(qptr) && ResourceRecordAnswersQuestion(&rr->resrec, qptr))
    e882aaf8:	01841563          	bne	s0,s8,e882ab02 <CacheRecordRmvEventsForQuestion+0x19a>
                for (qptr = m->Questions; qptr; qptr=qptr->next)
    e882aafc:	000c3c03          	ld	s8,0(s8)
    e882ab00:	b7f9                	j	e882aace <CacheRecordRmvEventsForQuestion+0x166>
                    if (qptr != q && ActiveQuestion(qptr) && ResourceRecordAnswersQuestion(&rr->resrec, qptr))
    e882ab02:	014c2783          	lw	a5,20(s8)
    e882ab06:	fef05be3          	blez	a5,e882aafc <CacheRecordRmvEventsForQuestion+0x194>
    e882ab0a:	050c3783          	ld	a5,80(s8)
    e882ab0e:	f7fd                	bnez	a5,e882aafc <CacheRecordRmvEventsForQuestion+0x194>
    e882ab10:	85e2                	mv	a1,s8
    e882ab12:	854e                	mv	a0,s3
    e882ab14:	c8ceb0ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e882ab18:	d175                	beqz	a0,e882aafc <CacheRecordRmvEventsForQuestion+0x194>
                    LogInfo("CacheRecordRmvEventsForCurrentQuestion: Updating CRActiveQuestion to %p for cache record %s, "
    e882ab1a:	000aa783          	lw	a5,0(s5)
    e882ab1e:	dbd5                	beqz	a5,e882aad2 <CacheRecordRmvEventsForQuestion+0x16a>
    e882ab20:	788c                	ld	a1,48(s1)
    e882ab22:	865a                	mv	a2,s6
    e882ab24:	854e                	mv	a0,s3
    e882ab26:	0591                	addi	a1,a1,4
    e882ab28:	eedeb0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882ab2c:	86aa                	mv	a3,a0
    e882ab2e:	140c4883          	lbu	a7,320(s8)
    e882ab32:	31cc4803          	lbu	a6,796(s8)
    e882ab36:	024c2783          	lw	a5,36(s8)
    e882ab3a:	5058                	lw	a4,36(s0)
    e882ab3c:	8662                	mv	a2,s8
    e882ab3e:	85e6                	mv	a1,s9
    e882ab40:	450d                	li	a0,3
    e882ab42:	16b040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882ab46:	b771                	j	e882aad2 <CacheRecordRmvEventsForQuestion+0x16a>
        m->CurrentQuestion = mDNSNULL;
    e882ab48:	2c0bb423          	sd	zero,712(s7)
    return mDNStrue;
    e882ab4c:	4905                	li	s2,1
        m->CurrentQuestion = mDNSNULL;
    e882ab4e:	b569                	j	e882a9d8 <CacheRecordRmvEventsForQuestion+0x70>
    else { LogInfo("CacheRecordRmvEventsForQuestion: Question %p %##s (%s) is a new question", q, q->qname.c, DNSTypeName(q->qtype)); }
    e882ab50:	000aa797          	auipc	a5,0xaa
    e882ab54:	f2478793          	addi	a5,a5,-220 # e88d4a74 <mDNS_LoggingEnabled>
    e882ab58:	439c                	lw	a5,0(a5)
    return mDNStrue;
    e882ab5a:	4905                	li	s2,1
    else { LogInfo("CacheRecordRmvEventsForQuestion: Question %p %##s (%s) is a new question", q, q->qname.c, DNSTypeName(q->qtype)); }
    e882ab5c:	e6078ee3          	beqz	a5,e882a9d8 <CacheRecordRmvEventsForQuestion+0x70>
    e882ab60:	31445503          	lhu	a0,788(s0)
    e882ab64:	8fceb0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882ab68:	872a                	mv	a4,a0
    e882ab6a:	21440693          	addi	a3,s0,532
    e882ab6e:	8622                	mv	a2,s0
    e882ab70:	0007a597          	auipc	a1,0x7a
    e882ab74:	18058593          	addi	a1,a1,384 # e88a4cf0 <end.8789+0x1648>
    e882ab78:	450d                	li	a0,3
    e882ab7a:	133040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882ab7e:	bda9                	j	e882a9d8 <CacheRecordRmvEventsForQuestion+0x70>

00000000e882ab80 <SuppressStatusChanged>:
{
    e882ab80:	7179                	addi	sp,sp,-48
    e882ab82:	e422                	sd	s0,8(sp)
    e882ab84:	e826                	sd	s1,16(sp)
    e882ab86:	ec4a                	sd	s2,24(sp)
    e882ab88:	f04e                	sd	s3,32(sp)
    e882ab8a:	f406                	sd	ra,40(sp)
    if (q->SuppressQuery)
    e882ab8c:	1405c783          	lbu	a5,320(a1)
{
    e882ab90:	89aa                	mv	s3,a0
    e882ab92:	842e                	mv	s0,a1
    e882ab94:	8932                	mv	s2,a2
    e882ab96:	000aa497          	auipc	s1,0xaa
    e882ab9a:	ede48493          	addi	s1,s1,-290 # e88d4a74 <mDNS_LoggingEnabled>
    if (q->SuppressQuery)
    e882ab9e:	c795                	beqz	a5,e882abca <SuppressStatusChanged+0x4a>
        q->SuppressQuery = mDNSfalse;
    e882aba0:	14058023          	sb	zero,320(a1)
        if (!CacheRecordRmvEventsForQuestion(m, q))
    e882aba4:	dc5ff0ef          	jal	ra,e882a968 <CacheRecordRmvEventsForQuestion>
    e882aba8:	ed11                	bnez	a0,e882abc4 <SuppressStatusChanged+0x44>
            LogInfo("SuppressStatusChanged: Question deleted while delivering RMV events from cache");
    e882abaa:	409c                	lw	a5,0(s1)
    e882abac:	0007d597          	auipc	a1,0x7d
    e882abb0:	c4c58593          	addi	a1,a1,-948 # e88a77f8 <end.8789+0x4150>
    e882abb4:	e795                	bnez	a5,e882abe0 <SuppressStatusChanged+0x60>
}
    e882abb6:	70a2                	ld	ra,40(sp)
    e882abb8:	6422                	ld	s0,8(sp)
    e882abba:	64c2                	ld	s1,16(sp)
    e882abbc:	6962                	ld	s2,24(sp)
    e882abbe:	7982                	ld	s3,32(sp)
    e882abc0:	6145                	addi	sp,sp,48
    e882abc2:	8082                	ret
        q->SuppressQuery = mDNStrue;
    e882abc4:	4785                	li	a5,1
    e882abc6:	14f40023          	sb	a5,320(s0)
    if (!LocalRecordRmvEventsForQuestion(m, q))
    e882abca:	85a2                	mv	a1,s0
    e882abcc:	854e                	mv	a0,s3
    e882abce:	c89fb0ef          	jal	ra,e8826856 <LocalRecordRmvEventsForQuestion>
        LogInfo("SuppressStatusChanged: Question deleted while delivering RMV events from Local AuthRecords");
    e882abd2:	409c                	lw	a5,0(s1)
    if (!LocalRecordRmvEventsForQuestion(m, q))
    e882abd4:	ed19                	bnez	a0,e882abf2 <SuppressStatusChanged+0x72>
        LogInfo("SuppressStatusChanged: Question deleted while delivering RMV events from Local AuthRecords");
    e882abd6:	d3e5                	beqz	a5,e882abb6 <SuppressStatusChanged+0x36>
    e882abd8:	0007d597          	auipc	a1,0x7d
    e882abdc:	c7058593          	addi	a1,a1,-912 # e88a7848 <end.8789+0x41a0>
}
    e882abe0:	6422                	ld	s0,8(sp)
    e882abe2:	70a2                	ld	ra,40(sp)
    e882abe4:	64c2                	ld	s1,16(sp)
    e882abe6:	6962                	ld	s2,24(sp)
    e882abe8:	7982                	ld	s3,32(sp)
        LogInfo("SuppressStatusChanged: Question deleted while delivering RMV events from Local AuthRecords");
    e882abea:	450d                	li	a0,3
}
    e882abec:	6145                	addi	sp,sp,48
        LogInfo("SuppressStatusChanged: Question deleted while delivering RMV events from Local AuthRecords");
    e882abee:	0bf0406f          	j	e882f4ac <LogMsgWithLevel>
    LogInfo("SuppressStatusChanged: Stop question %p %##s (%s)", q, q->qname.c, DNSTypeName(q->qtype));
    e882abf2:	c385                	beqz	a5,e882ac12 <SuppressStatusChanged+0x92>
    e882abf4:	31445503          	lhu	a0,788(s0)
    e882abf8:	868eb0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882abfc:	872a                	mv	a4,a0
    e882abfe:	21440693          	addi	a3,s0,532
    e882ac02:	8622                	mv	a2,s0
    e882ac04:	0007d597          	auipc	a1,0x7d
    e882ac08:	ca458593          	addi	a1,a1,-860 # e88a78a8 <end.8789+0x4200>
    e882ac0c:	450d                	li	a0,3
    e882ac0e:	09f040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    mDNS_StopQuery_internal(m, q);
    e882ac12:	85a2                	mv	a1,s0
    e882ac14:	854e                	mv	a0,s3
    e882ac16:	facf60ef          	jal	ra,e88213c2 <mDNS_StopQuery_internal>
    q->next = *restart;
    e882ac1a:	00093783          	ld	a5,0(s2)
    e882ac1e:	e01c                	sd	a5,0(s0)
    *restart = q;
    e882ac20:	00893023          	sd	s0,0(s2)
    e882ac24:	bf49                	j	e882abb6 <SuppressStatusChanged+0x36>

00000000e882ac26 <mDNS_StartQuery>:
{
    e882ac26:	1101                	addi	sp,sp,-32
    e882ac28:	f891540b          	sdd	s0,s1,(sp),0,4
    mDNS_Lock(m);
    e882ac2c:	0007d497          	auipc	s1,0x7d
    e882ac30:	16c48493          	addi	s1,s1,364 # e88a7d98 <__func__.12294>
{
    e882ac34:	e84a                	sd	s2,16(sp)
    e882ac36:	892e                	mv	s2,a1
    mDNS_Lock(m);
    e882ac38:	85a6                	mv	a1,s1
{
    e882ac3a:	ec06                	sd	ra,24(sp)
    e882ac3c:	842a                	mv	s0,a0
    mDNS_Lock(m);
    e882ac3e:	dc5ea0ef          	jal	ra,e8815a02 <mDNS_Lock_>
    status = mDNS_StartQuery_internal(m, question);
    e882ac42:	85ca                	mv	a1,s2
    e882ac44:	8522                	mv	a0,s0
    e882ac46:	fa8fa0ef          	jal	ra,e88253ee <mDNS_StartQuery_internal>
    e882ac4a:	892a                	mv	s2,a0
    mDNS_Unlock(m);
    e882ac4c:	85a6                	mv	a1,s1
    e882ac4e:	8522                	mv	a0,s0
    e882ac50:	e7dea0ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e882ac54:	f891440b          	ldd	s0,s1,(sp),0,4
    e882ac58:	60e2                	ld	ra,24(sp)
    e882ac5a:	854a                	mv	a0,s2
    e882ac5c:	6942                	ld	s2,16(sp)
    e882ac5e:	6105                	addi	sp,sp,32
    e882ac60:	8082                	ret

00000000e882ac62 <mDNS_GetDomains>:
{
    e882ac62:	715d                	addi	sp,sp,-80
    e882ac64:	e0a2                	sd	s0,64(sp)
    e882ac66:	fc26                	sd	s1,56(sp)
    e882ac68:	f44e                	sd	s3,40(sp)
    e882ac6a:	e486                	sd	ra,72(sp)
    e882ac6c:	f84a                	sd	s2,48(sp)
    e882ac6e:	842e                	mv	s0,a1
    question->InterfaceID      = InterfaceID;
    e882ac70:	1ee5b823          	sd	a4,496(a1)
    question->Target           = zeroAddr;
    e882ac74:	00079717          	auipc	a4,0x79
    e882ac78:	90c70713          	addi	a4,a4,-1780 # e88a3580 <zeroAddr>
    question->flags            = 0;
    e882ac7c:	1e05ac23          	sw	zero,504(a1)
    question->Target           = zeroAddr;
    e882ac80:	630c                	ld	a1,0(a4)
    question->LongLived        = mDNSfalse;
    e882ac82:	30043c23          	sd	zero,792(s0)
    question->UseBackgroundTrafficClass = mDNSfalse;
    e882ac86:	32041023          	sh	zero,800(s0)
    question->Target           = zeroAddr;
    e882ac8a:	1eb43e23          	sd	a1,508(s0)
    e882ac8e:	670c                	ld	a1,8(a4)
    e882ac90:	4b18                	lw	a4,16(a4)
    question->AppendSearchDomains = 0;
    e882ac92:	32040123          	sb	zero,802(s0)
    question->Target           = zeroAddr;
    e882ac96:	20b43223          	sd	a1,516(s0)
    e882ac9a:	20e42623          	sw	a4,524(s0)
    question->qtype            = kDNSType_PTR;
    e882ac9e:	6741                	lui	a4,0x10
    e882aca0:	2731                	addiw	a4,a4,12
    e882aca2:	30e42a23          	sw	a4,788(s0)
    question->ValidatingResponse = 0;
    e882aca6:	14040523          	sb	zero,330(s0)
    question->ValidationRequired = 0;
    e882acaa:	32041223          	sh	zero,804(s0)
    question->qnameOrig        = mDNSNULL;
    e882acae:	34043023          	sd	zero,832(s0)
    question->AnonInfo         = mDNSNULL;
    e882acb2:	06043023          	sd	zero,96(s0)
{
    e882acb6:	ec32                	sd	a2,24(sp)
    e882acb8:	e83e                	sd	a5,16(sp)
    e882acba:	e442                	sd	a6,8(sp)
    e882acbc:	89aa                	mv	s3,a0
    e882acbe:	84b6                	mv	s1,a3
    question->pid              = mDNSPlatformGetPID();
    e882acc0:	281050ef          	jal	ra,e8830740 <mDNSPlatformGetPID>
    e882acc4:	32a42423          	sw	a0,808(s0)
    question->QuestionCallback = Callback;
    e882acc8:	67c2                	ld	a5,16(sp)
    question->QuestionContext  = Context;
    e882acca:	6822                	ld	a6,8(sp)
    if (DomainType > mDNS_DomainTypeMax) return(mStatus_BadParamErr);
    e882accc:	6662                	ld	a2,24(sp)
    question->QuestionCallback = Callback;
    e882acce:	34f43423          	sd	a5,840(s0)
    question->euid             = 0;
    e882acd2:	32042e23          	sw	zero,828(s0)
    question->QuestionContext  = Context;
    e882acd6:	35043823          	sd	a6,848(s0)
    if (DomainType > mDNS_DomainTypeMax) return(mStatus_BadParamErr);
    e882acda:	4791                	li	a5,4
    e882acdc:	04c7e263          	bltu	a5,a2,e882ad20 <mDNS_GetDomains+0xbe>
    if (!MakeDomainNameFromDNSNameString2(&question->qname, mDNS_DomainTypeNames[DomainType])) return(mStatus_BadParamErr);
    e882ace0:	0007f797          	auipc	a5,0x7f
    e882ace4:	cd078793          	addi	a5,a5,-816 # e88a99b0 <mDNS_DomainTypeNames>
    e882ace8:	66c7c58b          	lrd	a1,a5,a2,3
    e882acec:	21440913          	addi	s2,s0,532
    e882acf0:	854a                	mv	a0,s2
    e882acf2:	fdee80ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e882acf6:	c50d                	beqz	a0,e882ad20 <mDNS_GetDomains+0xbe>
    if (!dom) dom = &localdomain;
    e882acf8:	e489                	bnez	s1,e882ad02 <mDNS_GetDomains+0xa0>
    e882acfa:	00077497          	auipc	s1,0x77
    e882acfe:	7ae48493          	addi	s1,s1,1966 # e88a24a8 <DiscardPort+0x498>
    if (!AppendDomainName(&question->qname, dom)) return(mStatus_BadParamErr);
    e882ad02:	85a6                	mv	a1,s1
    e882ad04:	854a                	mv	a0,s2
    e882ad06:	f36e80ef          	jal	ra,e881343c <AppendDomainName>
    e882ad0a:	c919                	beqz	a0,e882ad20 <mDNS_GetDomains+0xbe>
    return(mDNS_StartQuery(m, question));
    e882ad0c:	85a2                	mv	a1,s0
}
    e882ad0e:	6406                	ld	s0,64(sp)
    e882ad10:	60a6                	ld	ra,72(sp)
    e882ad12:	74e2                	ld	s1,56(sp)
    e882ad14:	7942                	ld	s2,48(sp)
    return(mDNS_StartQuery(m, question));
    e882ad16:	854e                	mv	a0,s3
}
    e882ad18:	79a2                	ld	s3,40(sp)
    e882ad1a:	6161                	addi	sp,sp,80
    return(mDNS_StartQuery(m, question));
    e882ad1c:	f0bff06f          	j	e882ac26 <mDNS_StartQuery>
}
    e882ad20:	60a6                	ld	ra,72(sp)
    e882ad22:	6406                	ld	s0,64(sp)
    e882ad24:	7541                	lui	a0,0xffff0
    e882ad26:	74e2                	ld	s1,56(sp)
    e882ad28:	7942                	ld	s2,48(sp)
    e882ad2a:	79a2                	ld	s3,40(sp)
    e882ad2c:	1571                	addi	a0,a0,-4
    e882ad2e:	6161                	addi	sp,sp,80
    e882ad30:	8082                	ret

00000000e882ad32 <mDNS_ActivateNetWake_internal>:
    NetworkInterfaceInfo *p = m->HostInterfaces;
    e882ad32:	678d                	lui	a5,0x3
    e882ad34:	97aa                	add	a5,a5,a0
    e882ad36:	1e07b783          	ld	a5,480(a5) # 31e0 <memcmp-0xe87fce20>
{
    e882ad3a:	862e                	mv	a2,a1
    while (p && p != set) p=p->next;
    e882ad3c:	cfe9                	beqz	a5,e882ae16 <mDNS_ActivateNetWake_internal+0xe4>
    e882ad3e:	00c79663          	bne	a5,a2,e882ad4a <mDNS_ActivateNetWake_internal+0x18>
    if (set->InterfaceActive)
    e882ad42:	00864783          	lbu	a5,8(a2)
    e882ad46:	e781                	bnez	a5,e882ad4e <mDNS_ActivateNetWake_internal+0x1c>
    e882ad48:	8082                	ret
    while (p && p != set) p=p->next;
    e882ad4a:	639c                	ld	a5,0(a5)
    e882ad4c:	bfc5                	j	e882ad3c <mDNS_ActivateNetWake_internal+0xa>
{
    e882ad4e:	1101                	addi	sp,sp,-32
    e882ad50:	f891540b          	sdd	s0,s1,(sp),0,4
        LogSPS("ActivateNetWake for %s (%#a)", set->ifname, &set->ip);
    e882ad54:	000aa797          	auipc	a5,0xaa
    e882ad58:	d2078793          	addi	a5,a5,-736 # e88d4a74 <mDNS_LoggingEnabled>
{
    e882ad5c:	ec06                	sd	ra,24(sp)
    e882ad5e:	e84a                	sd	s2,16(sp)
        LogSPS("ActivateNetWake for %s (%#a)", set->ifname, &set->ip);
    e882ad60:	439c                	lw	a5,0(a5)
    e882ad62:	8432                	mv	s0,a2
    e882ad64:	84aa                	mv	s1,a0
    e882ad66:	cf99                	beqz	a5,e882ad84 <mDNS_ActivateNetWake_internal+0x52>
    e882ad68:	6609                	lui	a2,0x2
    e882ad6a:	9f860693          	addi	a3,a2,-1544 # 19f8 <memcmp-0xe87fe608>
    e882ad6e:	a2660613          	addi	a2,a2,-1498
    e882ad72:	96a2                	add	a3,a3,s0
    e882ad74:	9622                	add	a2,a2,s0
    e882ad76:	0007e597          	auipc	a1,0x7e
    e882ad7a:	78a58593          	addi	a1,a1,1930 # e88a9500 <hexValues.12413+0x1550>
    e882ad7e:	4509                	li	a0,2
    e882ad80:	72c040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNS_StartBrowse_internal(m, &set->NetWakeBrowse, &SleepProxyServiceType, &localdomain, mDNSNULL, set->InterfaceID, 0, mDNSfalse, mDNSfalse, m->SPSBrowseCallback, set);
    e882ad84:	6795                	lui	a5,0x5
    e882ad86:	97a6                	add	a5,a5,s1
    e882ad88:	e087b683          	ld	a3,-504(a5) # 4e08 <memcmp-0xe87fb1f8>
    e882ad8c:	6789                	lui	a5,0x2
    e882ad8e:	97a2                	add	a5,a5,s0
    question->InterfaceID      = InterfaceID;
    e882ad90:	9f07b783          	ld	a5,-1552(a5) # 19f0 <memcmp-0xe87fe610>
    if (!ConstructServiceName(&question->qname, mDNSNULL, srv, domain))
    e882ad94:	4581                	li	a1,0
    question->QuestionCallback = Callback;
    e882ad96:	34d43c23          	sd	a3,856(s0)
    question->InterfaceID      = InterfaceID;
    e882ad9a:	20f43023          	sd	a5,512(s0)
    question->Target           = zeroAddr;
    e882ad9e:	00078797          	auipc	a5,0x78
    e882ada2:	7e278793          	addi	a5,a5,2018 # e88a3580 <zeroAddr>
    e882ada6:	6390                	ld	a2,0(a5)
    question->flags            = flags;
    e882ada8:	20042423          	sw	zero,520(s0)
    question->UseBackgroundTrafficClass = useBackgroundTrafficClass;
    e882adac:	32041823          	sh	zero,816(s0)
    question->Target           = zeroAddr;
    e882adb0:	20c43623          	sd	a2,524(s0)
    e882adb4:	6790                	ld	a2,8(a5)
    e882adb6:	4b9c                	lw	a5,16(a5)
    question->AppendSearchDomains = 0;
    e882adb8:	32040923          	sb	zero,818(s0)
    question->Target           = zeroAddr;
    e882adbc:	20c43a23          	sd	a2,532(s0)
    e882adc0:	20f42e23          	sw	a5,540(s0)
    question->qtype            = kDNSType_PTR;
    e882adc4:	67c1                	lui	a5,0x10
    e882adc6:	27b1                	addiw	a5,a5,12
    e882adc8:	32f42223          	sw	a5,804(s0)
    question->LongLived        = mDNStrue;
    e882adcc:	4785                	li	a5,1
    e882adce:	32f43423          	sd	a5,808(s0)
    question->ValidatingResponse = 0;
    e882add2:	14040d23          	sb	zero,346(s0)
    question->ValidationRequired = 0;
    e882add6:	32041a23          	sh	zero,820(s0)
    question->qnameOrig        = mDNSNULL;
    e882adda:	34043823          	sd	zero,848(s0)
    question->AnonInfo         = mDNSNULL;
    e882adde:	06043823          	sd	zero,112(s0)
    question->QuestionContext  = Context;
    e882ade2:	36843023          	sd	s0,864(s0)
    if (!ConstructServiceName(&question->qname, mDNSNULL, srv, domain))
    e882ade6:	00077697          	auipc	a3,0x77
    e882adea:	6c268693          	addi	a3,a3,1730 # e88a24a8 <DiscardPort+0x498>
    e882adee:	0007d617          	auipc	a2,0x7d
    e882adf2:	9d260613          	addi	a2,a2,-1582 # e88a77c0 <end.8789+0x4118>
    e882adf6:	22440513          	addi	a0,s0,548
        mDNS_StartBrowse_internal(m, &set->NetWakeBrowse, &SleepProxyServiceType, &localdomain, mDNSNULL, set->InterfaceID, 0, mDNSfalse, mDNSfalse, m->SPSBrowseCallback, set);
    e882adfa:	01040913          	addi	s2,s0,16
    if (!ConstructServiceName(&question->qname, mDNSNULL, srv, domain))
    e882adfe:	faae80ef          	jal	ra,e88135a8 <ConstructServiceName>
    e882ae02:	c10d                	beqz	a0,e882ae24 <mDNS_ActivateNetWake_internal+0xf2>
    return(mDNS_StartQuery_internal(m, question));
    e882ae04:	8526                	mv	a0,s1
}
    e882ae06:	f891440b          	ldd	s0,s1,(sp),0,4
    e882ae0a:	60e2                	ld	ra,24(sp)
    return(mDNS_StartQuery_internal(m, question));
    e882ae0c:	85ca                	mv	a1,s2
}
    e882ae0e:	6942                	ld	s2,16(sp)
    e882ae10:	6105                	addi	sp,sp,32
    return(mDNS_StartQuery_internal(m, question));
    e882ae12:	ddcfa06f          	j	e88253ee <mDNS_StartQuery_internal>
    if (!p) { LogMsg("mDNS_ActivateNetWake_internal: NetworkInterfaceInfo %p not found in active list", set); return; }
    e882ae16:	0007e597          	auipc	a1,0x7e
    e882ae1a:	70a58593          	addi	a1,a1,1802 # e88a9520 <hexValues.12413+0x1570>
    e882ae1e:	4501                	li	a0,0
    e882ae20:	68c0406f          	j	e882f4ac <LogMsgWithLevel>
}
    e882ae24:	60e2                	ld	ra,24(sp)
    e882ae26:	f891440b          	ldd	s0,s1,(sp),0,4
    e882ae2a:	6942                	ld	s2,16(sp)
    e882ae2c:	6105                	addi	sp,sp,32
    e882ae2e:	8082                	ret

00000000e882ae30 <mDNS_RegisterInterface>:
{
    e882ae30:	7119                	addi	sp,sp,-128
    e882ae32:	e0da                	sd	s6,64(sp)
    e882ae34:	8b32                	mv	s6,a2
    if (!set->InterfaceID)
    e882ae36:	6609                	lui	a2,0x2
    e882ae38:	00c58733          	add	a4,a1,a2
{
    e882ae3c:	f8a2                	sd	s0,112(sp)
    e882ae3e:	f0ca                	sd	s2,96(sp)
    e882ae40:	fc86                	sd	ra,120(sp)
    e882ae42:	f4a6                	sd	s1,104(sp)
    e882ae44:	ecce                	sd	s3,88(sp)
    e882ae46:	e8d2                	sd	s4,80(sp)
    e882ae48:	e4d6                	sd	s5,72(sp)
    e882ae4a:	fc5e                	sd	s7,56(sp)
    e882ae4c:	f862                	sd	s8,48(sp)
    e882ae4e:	f466                	sd	s9,40(sp)
    e882ae50:	f06a                	sd	s10,32(sp)
    e882ae52:	ec6e                	sd	s11,24(sp)
    if (!set->InterfaceID)
    e882ae54:	9f073783          	ld	a5,-1552(a4) # f9f0 <memcmp-0xe87f0610>
    NetworkInterfaceInfo **p = &m->HostInterfaces;
    e882ae58:	690d                	lui	s2,0x3
    e882ae5a:	1e090913          	addi	s2,s2,480 # 31e0 <memcmp-0xe87fce20>
{
    e882ae5e:	842e                	mv	s0,a1
    NetworkInterfaceInfo **p = &m->HostInterfaces;
    e882ae60:	992a                	add	s2,s2,a0
    if (!set->InterfaceID)
    e882ae62:	ef85                	bnez	a5,e882ae9a <mDNS_RegisterInterface+0x6a>
    { LogMsg("mDNS_RegisterInterface: Error! Tried to register a NetworkInterfaceInfo %#a with zero InterfaceID", &set->ip); return(mStatus_Invalid); }
    e882ae64:	9f860613          	addi	a2,a2,-1544 # 19f8 <memcmp-0xe87fe608>
    e882ae68:	962e                	add	a2,a2,a1
    e882ae6a:	4501                	li	a0,0
    e882ae6c:	0007f597          	auipc	a1,0x7f
    e882ae70:	3cc58593          	addi	a1,a1,972 # e88aa238 <mDNS_DomainTypeNames+0x888>
    e882ae74:	638040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    { LogMsg("mDNS_RegisterInterface: Error! Tried to register a NetworkInterfaceInfo %#a with invalid mask %#a", &set->ip, &set->mask); return(mStatus_Invalid); }
    e882ae78:	7541                	lui	a0,0xffff0
    e882ae7a:	154d                	addi	a0,a0,-13
}
    e882ae7c:	70e6                	ld	ra,120(sp)
    e882ae7e:	7446                	ld	s0,112(sp)
    e882ae80:	74a6                	ld	s1,104(sp)
    e882ae82:	7906                	ld	s2,96(sp)
    e882ae84:	69e6                	ld	s3,88(sp)
    e882ae86:	6a46                	ld	s4,80(sp)
    e882ae88:	6aa6                	ld	s5,72(sp)
    e882ae8a:	6b06                	ld	s6,64(sp)
    e882ae8c:	7be2                	ld	s7,56(sp)
    e882ae8e:	7c42                	ld	s8,48(sp)
    e882ae90:	7ca2                	ld	s9,40(sp)
    e882ae92:	7d02                	ld	s10,32(sp)
    e882ae94:	6de2                	ld	s11,24(sp)
    e882ae96:	6109                	addi	sp,sp,128
    e882ae98:	8082                	ret
    if (!mDNSAddressIsValidNonZero(&set->mask))
    e882ae9a:	a0c72783          	lw	a5,-1524(a4)
    e882ae9e:	4691                	li	a3,4
    e882aea0:	84aa                	mv	s1,a0
    e882aea2:	02d79463          	bne	a5,a3,e882aeca <mDNS_RegisterInterface+0x9a>
    e882aea6:	a1072783          	lw	a5,-1520(a4)
    e882aeaa:	e3a1                	bnez	a5,e882aeea <mDNS_RegisterInterface+0xba>
    { LogMsg("mDNS_RegisterInterface: Error! Tried to register a NetworkInterfaceInfo %#a with invalid mask %#a", &set->ip, &set->mask); return(mStatus_Invalid); }
    e882aeac:	6609                	lui	a2,0x2
    e882aeae:	a0c60693          	addi	a3,a2,-1524 # 1a0c <memcmp-0xe87fe5f4>
    e882aeb2:	9f860613          	addi	a2,a2,-1544
    e882aeb6:	96a2                	add	a3,a3,s0
    e882aeb8:	9622                	add	a2,a2,s0
    e882aeba:	0007f597          	auipc	a1,0x7f
    e882aebe:	3e658593          	addi	a1,a1,998 # e88aa2a0 <mDNS_DomainTypeNames+0x8f0>
    e882aec2:	4501                	li	a0,0
    e882aec4:	5e8040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882aec8:	bf45                	j	e882ae78 <mDNS_RegisterInterface+0x48>
    if (!mDNSAddressIsValidNonZero(&set->mask))
    e882aeca:	4699                	li	a3,6
    e882aecc:	fed790e3          	bne	a5,a3,e882aeac <mDNS_RegisterInterface+0x7c>
    e882aed0:	a1472683          	lw	a3,-1516(a4)
    e882aed4:	a1072783          	lw	a5,-1520(a4)
    e882aed8:	8fd5                	or	a5,a5,a3
    e882aeda:	a1872683          	lw	a3,-1512(a4)
    e882aede:	a1c72703          	lw	a4,-1508(a4)
    e882aee2:	8fd5                	or	a5,a5,a3
    e882aee4:	8fd9                	or	a5,a5,a4
    e882aee6:	2781                	sext.w	a5,a5
    e882aee8:	b7c9                	j	e882aeaa <mDNS_RegisterInterface+0x7a>
    mDNS_Lock(m);
    e882aeea:	0007d597          	auipc	a1,0x7d
    e882aeee:	f3658593          	addi	a1,a1,-202 # e88a7e20 <__func__.12512>
    e882aef2:	8526                	mv	a0,s1
    e882aef4:	b0fea0ef          	jal	ra,e8815a02 <mDNS_Lock_>
    set->IPv4Available   = (mDNSu8)(set->ip.type == mDNSAddrType_IPv4 && set->McastTxRx);
    e882aef8:	6709                	lui	a4,0x2
    set->InterfaceActive = mDNStrue;
    e882aefa:	4785                	li	a5,1
    set->IPv4Available   = (mDNSu8)(set->ip.type == mDNSAddrType_IPv4 && set->McastTxRx);
    e882aefc:	9722                	add	a4,a4,s0
    set->InterfaceActive = mDNStrue;
    e882aefe:	00f40423          	sb	a5,8(s0)
    set->IPv4Available   = (mDNSu8)(set->ip.type == mDNSAddrType_IPv4 && set->McastTxRx);
    e882af02:	9f872683          	lw	a3,-1544(a4) # 19f8 <memcmp-0xe87fe608>
    e882af06:	4611                	li	a2,4
    e882af08:	4781                	li	a5,0
    e882af0a:	00c69663          	bne	a3,a2,e882af16 <mDNS_RegisterInterface+0xe6>
    e882af0e:	a6774783          	lbu	a5,-1433(a4)
    e882af12:	00f037b3          	snez	a5,a5
    e882af16:	00f404a3          	sb	a5,9(s0)
    set->IPv6Available   = (mDNSu8)(set->ip.type == mDNSAddrType_IPv6 && set->McastTxRx);
    e882af1a:	4719                	li	a4,6
    e882af1c:	4781                	li	a5,0
    e882af1e:	00e69863          	bne	a3,a4,e882af2e <mDNS_RegisterInterface+0xfe>
    e882af22:	6789                	lui	a5,0x2
    e882af24:	97a2                	add	a5,a5,s0
    e882af26:	a677c783          	lbu	a5,-1433(a5) # 1a67 <memcmp-0xe87fe599>
    e882af2a:	00f037b3          	snez	a5,a5
    set->NetWakeBrowse.ThisQInterval = -1;
    e882af2e:	577d                	li	a4,-1
    set->IPv6Available   = (mDNSu8)(set->ip.type == mDNSAddrType_IPv6 && set->McastTxRx);
    e882af30:	00f40523          	sb	a5,10(s0)
    set->NetWakeBrowse.ThisQInterval = -1;
    e882af34:	d058                	sw	a4,36(s0)
        set->NetWakeResolve[i].ThisQInterval = -1;
    e882af36:	36e42e23          	sw	a4,892(s0)
        set->SPSAddr[i].type = mDNSAddrType_None;
    e882af3a:	6785                	lui	a5,0x1
    e882af3c:	97a2                	add	a5,a5,s0
    e882af3e:	d607a823          	sw	zero,-656(a5) # d70 <memcmp-0xe87ff290>
        if ((*p)->InterfaceID == set->InterfaceID)
    e882af42:	6689                	lui	a3,0x2
        set->NetWakeResolve[i].ThisQInterval = -1;
    e882af44:	6ce42a23          	sw	a4,1748(s0)
    mDNSBool FirstOfType = mDNStrue;
    e882af48:	4a05                	li	s4,1
        set->SPSAddr[i].type = mDNSAddrType_None;
    e882af4a:	d807a223          	sw	zero,-636(a5)
        set->NetWakeResolve[i].ThisQInterval = -1;
    e882af4e:	a2e7a623          	sw	a4,-1492(a5)
        set->SPSAddr[i].type = mDNSAddrType_None;
    e882af52:	d807ac23          	sw	zero,-616(a5)
    set->NextSPSAttempt     = -1;
    e882af56:	dae7aa23          	sw	a4,-588(a5)
    set->NextSPSAttemptTime = m->timenow;
    e882af5a:	2404a703          	lw	a4,576(s1)
            if (set->ip.type == mDNSAddrType_IPv4 && set->McastTxRx) (*p)->IPv4Available = mDNStrue;
    e882af5e:	4511                	li	a0,4
            if (set->ip.type == mDNSAddrType_IPv6 && set->McastTxRx) (*p)->IPv6Available = mDNStrue;
    e882af60:	4819                	li	a6,6
    set->NextSPSAttemptTime = m->timenow;
    e882af62:	dae7ac23          	sw	a4,-584(a5)
            if (set->ip.type == mDNSAddrType_IPv6 && set->McastTxRx) (*p)->IPv6Available = mDNStrue;
    e882af66:	4605                	li	a2,1
        if ((*p)->InterfaceID == set->InterfaceID)
    e882af68:	00d40733          	add	a4,s0,a3
    while (*p)
    e882af6c:	00093783          	ld	a5,0(s2)
    e882af70:	efd9                	bnez	a5,e882b00e <mDNS_RegisterInterface+0x1de>
    set->next = mDNSNULL;
    e882af72:	00043023          	sd	zero,0(s0)
    if (set->Advertise)
    e882af76:	6789                	lui	a5,0x2
    e882af78:	97a2                	add	a5,a5,s0
    *p = set;
    e882af7a:	00893023          	sd	s0,0(s2)
    if (set->Advertise)
    e882af7e:	a667c783          	lbu	a5,-1434(a5) # 1a66 <memcmp-0xe87fe59a>
    e882af82:	c789                	beqz	a5,e882af8c <mDNS_RegisterInterface+0x15c>
        AdvertiseInterface2(m, set);
    e882af84:	85a2                	mv	a1,s0
    e882af86:	8526                	mv	a0,s1
    e882af88:	d32f70ef          	jal	ra,e88224ba <AdvertiseInterface2>
    LogInfo("mDNS_RegisterInterface: InterfaceID %d %s (%#a) %s",
    e882af8c:	000aa997          	auipc	s3,0xaa
    e882af90:	ae898993          	addi	s3,s3,-1304 # e88d4a74 <mDNS_LoggingEnabled>
    e882af94:	0009a783          	lw	a5,0(s3)
    e882af98:	cf95                	beqz	a5,e882afd4 <mDNS_RegisterInterface+0x1a4>
    e882af9a:	6709                	lui	a4,0x2
    e882af9c:	00844583          	lbu	a1,8(s0)
    e882afa0:	00e407b3          	add	a5,s0,a4
    e882afa4:	a2670693          	addi	a3,a4,-1498 # 1a26 <memcmp-0xe87fe5da>
    e882afa8:	9f870713          	addi	a4,a4,-1544
    e882afac:	9f07a603          	lw	a2,-1552(a5)
    e882afb0:	96a2                	add	a3,a3,s0
    e882afb2:	9722                	add	a4,a4,s0
    e882afb4:	0007f797          	auipc	a5,0x7f
    e882afb8:	20478793          	addi	a5,a5,516 # e88aa1b8 <mDNS_DomainTypeNames+0x808>
    e882afbc:	e589                	bnez	a1,e882afc6 <mDNS_RegisterInterface+0x196>
    e882afbe:	0007f797          	auipc	a5,0x7f
    e882afc2:	24278793          	addi	a5,a5,578 # e88aa200 <mDNS_DomainTypeNames+0x850>
    e882afc6:	0007f597          	auipc	a1,0x7f
    e882afca:	3aa58593          	addi	a1,a1,938 # e88aa370 <mDNS_DomainTypeNames+0x9c0>
    e882afce:	450d                	li	a0,3
    e882afd0:	4dc040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (set->NetWake) mDNS_ActivateNetWake_internal(m, set);
    e882afd4:	6789                	lui	a5,0x2
    e882afd6:	97a2                	add	a5,a5,s0
    e882afd8:	a687c783          	lbu	a5,-1432(a5) # 1a68 <memcmp-0xe87fe598>
    e882afdc:	c789                	beqz	a5,e882afe6 <mDNS_RegisterInterface+0x1b6>
    e882afde:	85a2                	mv	a1,s0
    e882afe0:	8526                	mv	a0,s1
    e882afe2:	d51ff0ef          	jal	ra,e882ad32 <mDNS_ActivateNetWake_internal>
    if (set->McastTxRx && (FirstOfType || set->InterfaceActive))
    e882afe6:	6789                	lui	a5,0x2
    e882afe8:	97a2                	add	a5,a5,s0
    e882afea:	a677c783          	lbu	a5,-1433(a5) # 1a67 <memcmp-0xe87fe599>
    e882afee:	efc1                	bnez	a5,e882b086 <mDNS_RegisterInterface+0x256>
    RestartRecordGetZoneData(m);
    e882aff0:	8526                	mv	a0,s1
    e882aff2:	cc6f90ef          	jal	ra,e88244b8 <RestartRecordGetZoneData>
    mDNS_UpdateAllowSleep(m);
    e882aff6:	8526                	mv	a0,s1
    e882aff8:	ca9f50ef          	jal	ra,e8820ca0 <mDNS_UpdateAllowSleep>
    mDNS_Unlock(m);
    e882affc:	8526                	mv	a0,s1
    e882affe:	0007d597          	auipc	a1,0x7d
    e882b002:	e2258593          	addi	a1,a1,-478 # e88a7e20 <__func__.12512>
    e882b006:	ac7ea0ef          	jal	ra,e8815acc <mDNS_Unlock_>
    return(mStatus_NoError);
    e882b00a:	4501                	li	a0,0
    e882b00c:	bd85                	j	e882ae7c <mDNS_RegisterInterface+0x4c>
        if (*p == set)
    e882b00e:	02879363          	bne	a5,s0,e882b034 <mDNS_RegisterInterface+0x204>
            LogMsg("mDNS_RegisterInterface: Error! Tried to register a NetworkInterfaceInfo that's already in the list");
    e882b012:	0007f597          	auipc	a1,0x7f
    e882b016:	2f658593          	addi	a1,a1,758 # e88aa308 <mDNS_DomainTypeNames+0x958>
    e882b01a:	4501                	li	a0,0
    e882b01c:	490040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            mDNS_Unlock(m);
    e882b020:	8526                	mv	a0,s1
    e882b022:	0007d597          	auipc	a1,0x7d
    e882b026:	dfe58593          	addi	a1,a1,-514 # e88a7e20 <__func__.12512>
    e882b02a:	aa3ea0ef          	jal	ra,e8815acc <mDNS_Unlock_>
            return(mStatus_AlreadyRegistered);
    e882b02e:	7541                	lui	a0,0xffff0
    e882b030:	1555                	addi	a0,a0,-11
    e882b032:	b5a9                	j	e882ae7c <mDNS_RegisterInterface+0x4c>
        if ((*p)->InterfaceID == set->InterfaceID)
    e882b034:	97b6                	add	a5,a5,a3
    e882b036:	9f07b583          	ld	a1,-1552(a5)
    e882b03a:	9f073783          	ld	a5,-1552(a4)
    e882b03e:	04f59163          	bne	a1,a5,e882b080 <mDNS_RegisterInterface+0x250>
            set->InterfaceActive = mDNSfalse;
    e882b042:	00040423          	sb	zero,8(s0)
            if (set->ip.type == (*p)->ip.type) FirstOfType = mDNSfalse;
    e882b046:	00093783          	ld	a5,0(s2)
    e882b04a:	9f872583          	lw	a1,-1544(a4)
    e882b04e:	00d788b3          	add	a7,a5,a3
    e882b052:	9f88a883          	lw	a7,-1544(a7)
    e882b056:	00b89363          	bne	a7,a1,e882b05c <mDNS_RegisterInterface+0x22c>
    e882b05a:	4a01                	li	s4,0
            if (set->ip.type == mDNSAddrType_IPv4 && set->McastTxRx) (*p)->IPv4Available = mDNStrue;
    e882b05c:	00a59763          	bne	a1,a0,e882b06a <mDNS_RegisterInterface+0x23a>
    e882b060:	a6774583          	lbu	a1,-1433(a4)
    e882b064:	cd91                	beqz	a1,e882b080 <mDNS_RegisterInterface+0x250>
    e882b066:	00c784a3          	sb	a2,9(a5)
            if (set->ip.type == mDNSAddrType_IPv6 && set->McastTxRx) (*p)->IPv6Available = mDNStrue;
    e882b06a:	9f872783          	lw	a5,-1544(a4)
    e882b06e:	01079963          	bne	a5,a6,e882b080 <mDNS_RegisterInterface+0x250>
    e882b072:	a6774783          	lbu	a5,-1433(a4)
    e882b076:	c789                	beqz	a5,e882b080 <mDNS_RegisterInterface+0x250>
    e882b078:	00093783          	ld	a5,0(s2)
    e882b07c:	00c78523          	sb	a2,10(a5)
        p=&(*p)->next;
    e882b080:	00093903          	ld	s2,0(s2)
    e882b084:	b5e5                	j	e882af6c <mDNS_RegisterInterface+0x13c>
    if (set->McastTxRx && (FirstOfType || set->InterfaceActive))
    e882b086:	000a1563          	bnez	s4,e882b090 <mDNS_RegisterInterface+0x260>
    e882b08a:	00844783          	lbu	a5,8(s0)
    e882b08e:	d3ad                	beqz	a5,e882aff0 <mDNS_RegisterInterface+0x1c0>
        switch (activationSpeed)
    e882b090:	000aaa17          	auipc	s4,0xaa
    e882b094:	9f0a0a13          	addi	s4,s4,-1552 # e88d4a80 <mDNSPlatformOneSecond>
    e882b098:	000b0c63          	beqz	s6,e882b0b0 <mDNS_RegisterInterface+0x280>
    e882b09c:	4789                	li	a5,2
    e882b09e:	0efb0a63          	beq	s6,a5,e882b192 <mDNS_RegisterInterface+0x362>
                probedelay = mDNSPlatformOneSecond / 2;
    e882b0a2:	000a2903          	lw	s2,0(s4)
    e882b0a6:	4789                	li	a5,2
                numannounce = InitialAnnounceCount;
    e882b0a8:	4a91                	li	s5,4
                probedelay = mDNSPlatformOneSecond / 2;
    e882b0aa:	02f9493b          	divw	s2,s2,a5
                break;
    e882b0ae:	a00d                	j	e882b0d0 <mDNS_RegisterInterface+0x2a0>
                LogMsg("mDNS_RegisterInterface: Using fast activation for DirectLink interface %s (%#a)", set->ifname, &set->ip);
    e882b0b0:	6609                	lui	a2,0x2
    e882b0b2:	9f860693          	addi	a3,a2,-1544 # 19f8 <memcmp-0xe87fe608>
    e882b0b6:	a2660613          	addi	a2,a2,-1498
    e882b0ba:	96a2                	add	a3,a3,s0
    e882b0bc:	9622                	add	a2,a2,s0
    e882b0be:	0007f597          	auipc	a1,0x7f
    e882b0c2:	2ea58593          	addi	a1,a1,746 # e88aa3a8 <mDNS_DomainTypeNames+0x9f8>
    e882b0c6:	4501                	li	a0,0
    e882b0c8:	3e4040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                numannounce = InitialAnnounceCount;
    e882b0cc:	4a91                	li	s5,4
                probedelay = (mDNSs32)0;
    e882b0ce:	4901                	li	s2,0
        LogInfo("mDNS_RegisterInterface: %s (%#a) probedelay %d", set->ifname, &set->ip, probedelay);
    e882b0d0:	0009a783          	lw	a5,0(s3)
    e882b0d4:	c385                	beqz	a5,e882b0f4 <mDNS_RegisterInterface+0x2c4>
    e882b0d6:	6609                	lui	a2,0x2
    e882b0d8:	9f860693          	addi	a3,a2,-1544 # 19f8 <memcmp-0xe87fe608>
    e882b0dc:	a2660613          	addi	a2,a2,-1498
    e882b0e0:	874a                	mv	a4,s2
    e882b0e2:	96a2                	add	a3,a3,s0
    e882b0e4:	9622                	add	a2,a2,s0
    e882b0e6:	0007f597          	auipc	a1,0x7f
    e882b0ea:	37258593          	addi	a1,a1,882 # e88aa458 <mDNS_DomainTypeNames+0xaa8>
    e882b0ee:	450d                	li	a0,3
    e882b0f0:	3bc040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (activationSpeed == FastActivation)
    e882b0f4:	0c0b1b63          	bnez	s6,e882b1ca <mDNS_RegisterInterface+0x39a>
            m->SuppressSending = 0;
    e882b0f8:	2404a823          	sw	zero,592(s1)
            m->SuppressProbes = 0;
    e882b0fc:	678d                	lui	a5,0x3
    e882b0fe:	97a6                	add	a5,a5,s1
    e882b100:	1e07a823          	sw	zero,496(a5) # 31f0 <memcmp-0xe87fce10>
        m->AnnounceOwner = NonZeroTime(m->timenow + 60 * mDNSPlatformOneSecond);
    e882b104:	000a2703          	lw	a4,0(s4)
    e882b108:	2404a783          	lw	a5,576(s1)
    e882b10c:	03c00693          	li	a3,60
    e882b110:	24e6978b          	mulaw	a5,a3,a4
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e882b114:	e391                	bnez	a5,e882b118 <mDNS_RegisterInterface+0x2e8>
    e882b116:	4785                	li	a5,1
    e882b118:	28f4a623          	sw	a5,652(s1)
        LogInfo("mDNS_RegisterInterface: Setting AnnounceOwner");
    e882b11c:	0009a783          	lw	a5,0(s3)
    e882b120:	cb81                	beqz	a5,e882b130 <mDNS_RegisterInterface+0x300>
    e882b122:	0007f597          	auipc	a1,0x7f
    e882b126:	36658593          	addi	a1,a1,870 # e88aa488 <mDNS_DomainTypeNames+0xad8>
    e882b12a:	450d                	li	a0,3
    e882b12c:	380040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->mDNSStats.InterfaceUp++;
    e882b130:	6795                	lui	a5,0x5
    e882b132:	97a6                	add	a5,a5,s1
    e882b134:	ecc7a703          	lw	a4,-308(a5) # 4ecc <memcmp-0xe87fb134>
                    mDNSBool dodelay = (activationSpeed == SlowActivation) && (q->FlappingInterface1 == set->InterfaceID || q->FlappingInterface2 == set->InterfaceID);
    e882b138:	6889                	lui	a7,0x2
                    mDNSs32 initial  = dodelay ? InitialQuestionInterval * QuestionIntervalStep2 : InitialQuestionInterval;
    e882b13a:	4c0d                	li	s8,3
        m->mDNSStats.InterfaceUp++;
    e882b13c:	2705                	addiw	a4,a4,1
    e882b13e:	ece7a623          	sw	a4,-308(a5)
        for (q = m->Questions; q; q=q->next)                                // Scan our list of questions
    e882b142:	2b84b903          	ld	s2,696(s1)
                    mDNSBool dodelay = (activationSpeed == SlowActivation) && (q->FlappingInterface1 == set->InterfaceID || q->FlappingInterface2 == set->InterfaceID);
    e882b146:	01140cb3          	add	s9,s0,a7
                    if (dodelay) LogInfo("No cache records expired for %##s (%s); delaying questions by %d seconds", q->qname.c, DNSTypeName(q->qtype), qdelay);
    e882b14a:	0007fd97          	auipc	s11,0x7f
    e882b14e:	36ed8d93          	addi	s11,s11,878 # e88aa4b8 <mDNS_DomainTypeNames+0xb08>
        for (q = m->Questions; q; q=q->next)                                // Scan our list of questions
    e882b152:	0c091563          	bnez	s2,e882b21c <mDNS_RegisterInterface+0x3ec>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882b156:	678d                	lui	a5,0x3
    e882b158:	97a6                	add	a5,a5,s1
    e882b15a:	1b87b903          	ld	s2,440(a5) # 31b8 <memcmp-0xe87fce48>
            if (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == set->InterfaceID)
    e882b15e:	6789                	lui	a5,0x2
                mDNSCoreRestartRegistration(m, rr, numannounce);
    e882b160:	2a81                	sext.w	s5,s5
            if (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == set->InterfaceID)
    e882b162:	943e                	add	s0,s0,a5
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882b164:	e80906e3          	beqz	s2,e882aff0 <mDNS_RegisterInterface+0x1c0>
            if (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == set->InterfaceID)
    e882b168:	02093783          	ld	a5,32(s2)
    e882b16c:	c789                	beqz	a5,e882b176 <mDNS_RegisterInterface+0x346>
    e882b16e:	9f043703          	ld	a4,-1552(s0)
    e882b172:	00e79d63          	bne	a5,a4,e882b18c <mDNS_RegisterInterface+0x35c>
                ReInitAnonInfo(&rr->resrec.AnonInfo, rr->resrec.name);
    e882b176:	02893583          	ld	a1,40(s2)
    e882b17a:	04090513          	addi	a0,s2,64
    e882b17e:	e31ee0ef          	jal	ra,e8819fae <ReInitAnonInfo>
                mDNSCoreRestartRegistration(m, rr, numannounce);
    e882b182:	8656                	mv	a2,s5
    e882b184:	85ca                	mv	a1,s2
    e882b186:	8526                	mv	a0,s1
    e882b188:	e7ef50ef          	jal	ra,e8820806 <mDNSCoreRestartRegistration>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882b18c:	00093903          	ld	s2,0(s2)
    e882b190:	bfd1                	j	e882b164 <mDNS_RegisterInterface+0x334>
                probedelay = mDNSPlatformOneSecond * 5;
    e882b192:	000a2783          	lw	a5,0(s4)
                LogMsg("mDNS_RegisterInterface: Frequent transitions for interface %s (%#a), doing slow activation", set->ifname, &set->ip);
    e882b196:	6609                	lui	a2,0x2
    e882b198:	9f860693          	addi	a3,a2,-1544 # 19f8 <memcmp-0xe87fe608>
    e882b19c:	a2660613          	addi	a2,a2,-1498
                probedelay = mDNSPlatformOneSecond * 5;
    e882b1a0:	4915                	li	s2,5
                LogMsg("mDNS_RegisterInterface: Frequent transitions for interface %s (%#a), doing slow activation", set->ifname, &set->ip);
    e882b1a2:	96a2                	add	a3,a3,s0
    e882b1a4:	9622                	add	a2,a2,s0
    e882b1a6:	0007f597          	auipc	a1,0x7f
    e882b1aa:	25258593          	addi	a1,a1,594 # e88aa3f8 <mDNS_DomainTypeNames+0xa48>
    e882b1ae:	4501                	li	a0,0
                probedelay = mDNSPlatformOneSecond * 5;
    e882b1b0:	02f9093b          	mulw	s2,s2,a5
                LogMsg("mDNS_RegisterInterface: Frequent transitions for interface %s (%#a), doing slow activation", set->ifname, &set->ip);
    e882b1b4:	2f8040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                numannounce = (mDNSu8)1;
    e882b1b8:	4a85                	li	s5,1
                m->mDNSStats.InterfaceUpFlap++;
    e882b1ba:	6795                	lui	a5,0x5
    e882b1bc:	97a6                	add	a5,a5,s1
    e882b1be:	ed07a703          	lw	a4,-304(a5) # 4ed0 <memcmp-0xe87fb130>
    e882b1c2:	2705                	addiw	a4,a4,1
    e882b1c4:	ece7a823          	sw	a4,-304(a5)
                break;
    e882b1c8:	b721                	j	e882b0d0 <mDNS_RegisterInterface+0x2a0>
            if (!m->SuppressSending) m->SuppressSending = m->timenow + (mDNSs32)mDNSRandom((mDNSu32)InitialQuestionInterval);
    e882b1ca:	2504a783          	lw	a5,592(s1)
    e882b1ce:	ef99                	bnez	a5,e882b1ec <mDNS_RegisterInterface+0x3bc>
    e882b1d0:	000a2783          	lw	a5,0(s4)
    e882b1d4:	450d                	li	a0,3
    e882b1d6:	2404ab83          	lw	s7,576(s1)
    e882b1da:	2789                	addiw	a5,a5,2
    e882b1dc:	02a7c53b          	divw	a0,a5,a0
    e882b1e0:	d29e70ef          	jal	ra,e8812f08 <mDNSRandom>
    e882b1e4:	0175053b          	addw	a0,a0,s7
    e882b1e8:	24a4a823          	sw	a0,592(s1)
            if (m->SuppressProbes == 0 ||
    e882b1ec:	678d                	lui	a5,0x3
    e882b1ee:	97a6                	add	a5,a5,s1
    e882b1f0:	1f07a703          	lw	a4,496(a5) # 31f0 <memcmp-0xe87fce10>
    e882b1f4:	2404a783          	lw	a5,576(s1)
    e882b1f8:	0127893b          	addw	s2,a5,s2
    e882b1fc:	cb01                	beqz	a4,e882b20c <mDNS_RegisterInterface+0x3dc>
    e882b1fe:	87ca                	mv	a5,s2
    e882b200:	00091363          	bnez	s2,e882b206 <mDNS_RegisterInterface+0x3d6>
    e882b204:	4785                	li	a5,1
    e882b206:	9f1d                	subw	a4,a4,a5
    e882b208:	ee075ee3          	bgez	a4,e882b104 <mDNS_RegisterInterface+0x2d4>
    e882b20c:	00091363          	bnez	s2,e882b212 <mDNS_RegisterInterface+0x3e2>
    e882b210:	4905                	li	s2,1
                m->SuppressProbes = NonZeroTime(m->timenow + probedelay);
    e882b212:	678d                	lui	a5,0x3
    e882b214:	97a6                	add	a5,a5,s1
    e882b216:	1f27a823          	sw	s2,496(a5) # 31f0 <memcmp-0xe87fce10>
    e882b21a:	b5ed                	j	e882b104 <mDNS_RegisterInterface+0x2d4>
            if (mDNSOpaque16IsZero(q->TargetQID))
    e882b21c:	21295783          	lhu	a5,530(s2)
    e882b220:	ebbd                	bnez	a5,e882b296 <mDNS_RegisterInterface+0x466>
                if (!q->InterfaceID || q->InterfaceID == set->InterfaceID)      // If non-specific Q, or Q on this specific interface,
    e882b222:	1f093783          	ld	a5,496(s2)
    e882b226:	c789                	beqz	a5,e882b230 <mDNS_RegisterInterface+0x400>
    e882b228:	9f0cb703          	ld	a4,-1552(s9)
    e882b22c:	06e79563          	bne	a5,a4,e882b296 <mDNS_RegisterInterface+0x466>
                    mDNSBool dodelay = (activationSpeed == SlowActivation) && (q->FlappingInterface1 == set->InterfaceID || q->FlappingInterface2 == set->InterfaceID);
    e882b230:	4789                	li	a5,2
    e882b232:	21490b93          	addi	s7,s2,532
    e882b236:	00fb1c63          	bne	s6,a5,e882b24e <mDNS_RegisterInterface+0x41e>
    e882b23a:	9f0cb783          	ld	a5,-1552(s9)
    e882b23e:	03893703          	ld	a4,56(s2)
    e882b242:	04f70d63          	beq	a4,a5,e882b29c <mDNS_RegisterInterface+0x46c>
    e882b246:	04093703          	ld	a4,64(s2)
    e882b24a:	04e78963          	beq	a5,a4,e882b29c <mDNS_RegisterInterface+0x46c>
                    mDNSs32 initial  = dodelay ? InitialQuestionInterval * QuestionIntervalStep2 : InitialQuestionInterval;
    e882b24e:	000a2783          	lw	a5,0(s4)
                    mDNSs32 qdelay   = dodelay ? kDefaultQueryDelayTimeForFlappingInterface : 0;
    e882b252:	4d01                	li	s10,0
                    mDNSs32 initial  = dodelay ? InitialQuestionInterval * QuestionIntervalStep2 : InitialQuestionInterval;
    e882b254:	2789                	addiw	a5,a5,2
    e882b256:	0387c7bb          	divw	a5,a5,s8
                    if (!q->ThisQInterval || q->ThisQInterval > initial)
    e882b25a:	01492703          	lw	a4,20(s2)
    e882b25e:	c319                	beqz	a4,e882b264 <mDNS_RegisterInterface+0x434>
    e882b260:	00e7d763          	bge	a5,a4,e882b26e <mDNS_RegisterInterface+0x43e>
                        q->ThisQInterval  = initial;
    e882b264:	00f92a23          	sw	a5,20(s2)
                        q->RequestUnicast = kDefaultRequestUnicastCount;
    e882b268:	4789                	li	a5,2
    e882b26a:	12f92a23          	sw	a5,308(s2)
                    q->LastQTime = m->timenow - q->ThisQInterval + qdelay;
    e882b26e:	2404a783          	lw	a5,576(s1)
    e882b272:	01492703          	lw	a4,20(s2)
                    ReInitAnonInfo(&q->AnonInfo, &q->qname);
    e882b276:	85de                	mv	a1,s7
    e882b278:	06090513          	addi	a0,s2,96
                    q->LastQTime = m->timenow - q->ThisQInterval + qdelay;
    e882b27c:	9f99                	subw	a5,a5,a4
    e882b27e:	01a7883b          	addw	a6,a5,s10
    e882b282:	01092823          	sw	a6,16(s2)
                    q->RecentAnswerPkts = 0;
    e882b286:	02092023          	sw	zero,32(s2)
                    ReInitAnonInfo(&q->AnonInfo, &q->qname);
    e882b28a:	d25ee0ef          	jal	ra,e8819fae <ReInitAnonInfo>
                    SetNextQueryTime(m,q);
    e882b28e:	85ca                	mv	a1,s2
    e882b290:	8526                	mv	a0,s1
    e882b292:	fdbf20ef          	jal	ra,e881e26c <SetNextQueryTime>
        for (q = m->Questions; q; q=q->next)                                // Scan our list of questions
    e882b296:	00093903          	ld	s2,0(s2)
    e882b29a:	bd65                	j	e882b152 <mDNS_RegisterInterface+0x322>
                    mDNSs32 initial  = dodelay ? InitialQuestionInterval * QuestionIntervalStep2 : InitialQuestionInterval;
    e882b29c:	000a2803          	lw	a6,0(s4)
    e882b2a0:	4725                	li	a4,9
    e882b2a2:	0028079b          	addiw	a5,a6,2
    e882b2a6:	0387c7bb          	divw	a5,a5,s8
    e882b2aa:	02e787bb          	mulw	a5,a5,a4
                    if (dodelay) LogInfo("No cache records expired for %##s (%s); delaying questions by %d seconds", q->qname.c, DNSTypeName(q->qtype), qdelay);
    e882b2ae:	0009a703          	lw	a4,0(s3)
                    mDNSs32 qdelay   = dodelay ? kDefaultQueryDelayTimeForFlappingInterface : 0;
    e882b2b2:	030c0d3b          	mulw	s10,s8,a6
                    if (dodelay) LogInfo("No cache records expired for %##s (%s); delaying questions by %d seconds", q->qname.c, DNSTypeName(q->qtype), qdelay);
    e882b2b6:	d355                	beqz	a4,e882b25a <mDNS_RegisterInterface+0x42a>
    e882b2b8:	31495503          	lhu	a0,788(s2)
    e882b2bc:	e43e                	sd	a5,8(sp)
    e882b2be:	9a3ea0ef          	jal	ra,e8815c60 <DNSTypeName>
    e882b2c2:	86aa                	mv	a3,a0
    e882b2c4:	876a                	mv	a4,s10
    e882b2c6:	865e                	mv	a2,s7
    e882b2c8:	85ee                	mv	a1,s11
    e882b2ca:	450d                	li	a0,3
    e882b2cc:	1e0040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882b2d0:	67a2                	ld	a5,8(sp)
    e882b2d2:	b761                	j	e882b25a <mDNS_RegisterInterface+0x42a>

00000000e882b2d4 <mDNS_DeregisterInterface>:
{
    e882b2d4:	7159                	addi	sp,sp,-112
    e882b2d6:	e8ca                	sd	s2,80(sp)
    NetworkInterfaceInfo **p = &m->HostInterfaces;
    e882b2d8:	690d                	lui	s2,0x3
{
    e882b2da:	f0a2                	sd	s0,96(sp)
    e882b2dc:	eca6                	sd	s1,88(sp)
    e882b2de:	fc56                	sd	s5,56(sp)
    e882b2e0:	842a                	mv	s0,a0
    NetworkInterfaceInfo **p = &m->HostInterfaces;
    e882b2e2:	1e090a93          	addi	s5,s2,480 # 31e0 <memcmp-0xe87fce20>
{
    e882b2e6:	84ae                	mv	s1,a1
    mDNS_Lock(m);
    e882b2e8:	0007d597          	auipc	a1,0x7d
    e882b2ec:	b5058593          	addi	a1,a1,-1200 # e88a7e38 <__func__.12543>
{
    e882b2f0:	e0d2                	sd	s4,64(sp)
    NetworkInterfaceInfo **p = &m->HostInterfaces;
    e882b2f2:	9aaa                	add	s5,s5,a0
    e882b2f4:	9922                	add	s2,s2,s0
{
    e882b2f6:	f486                	sd	ra,104(sp)
    e882b2f8:	e4ce                	sd	s3,72(sp)
    e882b2fa:	f85a                	sd	s6,48(sp)
    e882b2fc:	f45e                	sd	s7,40(sp)
    e882b2fe:	f062                	sd	s8,32(sp)
    e882b300:	ec66                	sd	s9,24(sp)
    e882b302:	e86a                	sd	s10,16(sp)
    e882b304:	e46e                	sd	s11,8(sp)
    e882b306:	8a32                	mv	s4,a2
    mDNS_Lock(m);
    e882b308:	efaea0ef          	jal	ra,e8815a02 <mDNS_Lock_>
    NetworkInterfaceInfo **p = &m->HostInterfaces;
    e882b30c:	1e093783          	ld	a5,480(s2)
    e882b310:	8956                	mv	s2,s5
    while (*p && *p != set) p=&(*p)->next;
    e882b312:	10078a63          	beqz	a5,e882b426 <mDNS_DeregisterInterface+0x152>
    e882b316:	0a979f63          	bne	a5,s1,e882b3d4 <mDNS_DeregisterInterface+0x100>
    mDNS_DeactivateNetWake_internal(m, set);
    e882b31a:	85a6                	mv	a1,s1
    e882b31c:	8522                	mv	a0,s0
    e882b31e:	c70f90ef          	jal	ra,e882478e <mDNS_DeactivateNetWake_internal>
    *p = (*p)->next;
    e882b322:	00093783          	ld	a5,0(s2)
    e882b326:	639c                	ld	a5,0(a5)
    e882b328:	00f93023          	sd	a5,0(s2)
    if (!set->InterfaceActive)
    e882b32c:	0084c783          	lbu	a5,8(s1)
    set->next = mDNSNULL;
    e882b330:	0004b023          	sd	zero,0(s1)
    if (!set->InterfaceActive)
    e882b334:	c3dd                	beqz	a5,e882b3da <mDNS_DeregisterInterface+0x106>
        intf = FirstInterfaceForID(m, set->InterfaceID);
    e882b336:	6909                	lui	s2,0x2
    e882b338:	012487b3          	add	a5,s1,s2
    e882b33c:	9f07bb03          	ld	s6,-1552(a5)
    e882b340:	678d                	lui	a5,0x3
    e882b342:	97a2                	add	a5,a5,s0
    e882b344:	1e07b503          	ld	a0,480(a5) # 31e0 <memcmp-0xe87fce20>
    e882b348:	85da                	mv	a1,s6
    e882b34a:	c24f10ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    e882b34e:	89aa                	mv	s3,a0
        if (intf)
    e882b350:	000a9797          	auipc	a5,0xa9
    e882b354:	72478793          	addi	a5,a5,1828 # e88d4a74 <mDNS_LoggingEnabled>
    e882b358:	439c                	lw	a5,0(a5)
    e882b35a:	12050d63          	beqz	a0,e882b494 <mDNS_DeregisterInterface+0x1c0>
            LogInfo("mDNS_DeregisterInterface: Another representative of InterfaceID %d %s (%#a) exists;"
    e882b35e:	c385                	beqz	a5,e882b37e <mDNS_DeregisterInterface+0xaa>
    e882b360:	9f890713          	addi	a4,s2,-1544 # 19f8 <memcmp-0xe87fe608>
    e882b364:	a2690693          	addi	a3,s2,-1498
    e882b368:	9726                	add	a4,a4,s1
    e882b36a:	96a6                	add	a3,a3,s1
    e882b36c:	000b061b          	sext.w	a2,s6
    e882b370:	0007e597          	auipc	a1,0x7e
    e882b374:	2b858593          	addi	a1,a1,696 # e88a9628 <hexValues.12413+0x1678>
    e882b378:	450d                	li	a0,3
    e882b37a:	132040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (intf->InterfaceActive)
    e882b37e:	0089c783          	lbu	a5,8(s3)
    e882b382:	cf99                	beqz	a5,e882b3a0 <mDNS_DeregisterInterface+0xcc>
                LogMsg("mDNS_DeregisterInterface: ERROR intf->InterfaceActive already set for %s (%#a)", set->ifname, &set->ip);
    e882b384:	6609                	lui	a2,0x2
    e882b386:	9f860693          	addi	a3,a2,-1544 # 19f8 <memcmp-0xe87fe608>
    e882b38a:	a2660613          	addi	a2,a2,-1498
    e882b38e:	96a6                	add	a3,a3,s1
    e882b390:	9626                	add	a2,a2,s1
    e882b392:	0007e597          	auipc	a1,0x7e
    e882b396:	2fe58593          	addi	a1,a1,766 # e88a9690 <hexValues.12413+0x16e0>
    e882b39a:	4501                	li	a0,0
    e882b39c:	110040ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            intf->InterfaceActive = mDNStrue;
    e882b3a0:	4785                	li	a5,1
    e882b3a2:	00f98423          	sb	a5,8(s3)
            UpdateInterfaceProtocols(m, intf);
    e882b3a6:	85ce                	mv	a1,s3
    e882b3a8:	8556                	mv	a0,s5
    e882b3aa:	961f10ef          	jal	ra,e881cd0a <UpdateInterfaceProtocols.isra.11>
            if (intf->NetWake) mDNS_ActivateNetWake_internal(m, intf);
    e882b3ae:	6789                	lui	a5,0x2
    e882b3b0:	97ce                	add	a5,a5,s3
    e882b3b2:	a687c783          	lbu	a5,-1432(a5) # 1a68 <memcmp-0xe87fe598>
    e882b3b6:	c789                	beqz	a5,e882b3c0 <mDNS_DeregisterInterface+0xec>
    e882b3b8:	85ce                	mv	a1,s3
    e882b3ba:	8522                	mv	a0,s0
    e882b3bc:	977ff0ef          	jal	ra,e882ad32 <mDNS_ActivateNetWake_internal>
            for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b3c0:	678d                	lui	a5,0x3
    e882b3c2:	97a2                	add	a5,a5,s0
    e882b3c4:	1e07b783          	ld	a5,480(a5) # 31e0 <memcmp-0xe87fce20>
                if (intf->InterfaceID == set->InterfaceID && intf->ip.type == set->ip.type)
    e882b3c8:	6709                	lui	a4,0x2
    e882b3ca:	00e486b3          	add	a3,s1,a4
            for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b3ce:	e3dd                	bnez	a5,e882b474 <mDNS_DeregisterInterface+0x1a0>
            if (!intf) revalidate = mDNStrue;
    e882b3d0:	4905                	li	s2,1
    e882b3d2:	a831                	j	e882b3ee <mDNS_DeregisterInterface+0x11a>
    while (*p && *p != set) p=&(*p)->next;
    e882b3d4:	893e                	mv	s2,a5
    e882b3d6:	639c                	ld	a5,0(a5)
    e882b3d8:	bf2d                	j	e882b312 <mDNS_DeregisterInterface+0x3e>
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b3da:	678d                	lui	a5,0x3
    e882b3dc:	97a2                	add	a5,a5,s0
    e882b3de:	1e07b903          	ld	s2,480(a5) # 31e0 <memcmp-0xe87fce20>
            if (intf->InterfaceActive && intf->InterfaceID == set->InterfaceID)
    e882b3e2:	6989                	lui	s3,0x2
    e882b3e4:	01348a33          	add	s4,s1,s3
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b3e8:	06091463          	bnez	s2,e882b450 <mDNS_DeregisterInterface+0x17c>
    mDNSBool revalidate = mDNSfalse;
    e882b3ec:	4901                	li	s2,0
    primary = FindFirstAdvertisedInterface(m);
    e882b3ee:	678d                	lui	a5,0x3
    e882b3f0:	97a2                	add	a5,a5,s0
    e882b3f2:	1e07b703          	ld	a4,480(a5) # 31e0 <memcmp-0xe87fce20>
        if (intf->Advertise) break;
    e882b3f6:	6689                	lui	a3,0x2
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b3f8:	87ba                	mv	a5,a4
    e882b3fa:	1a079463          	bnez	a5,e882b5a2 <mDNS_DeregisterInterface+0x2ce>
        if (intf->RR_A.RRSet == &set->RR_A)
    e882b3fe:	6605                	lui	a2,0x1
    e882b400:	dc060693          	addi	a3,a2,-576 # dc0 <memcmp-0xe87ff240>
    e882b404:	96a6                	add	a3,a3,s1
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b406:	1a071563          	bnez	a4,e882b5b0 <mDNS_DeregisterInterface+0x2dc>
    if (set->Advertise) DeadvertiseInterface(m, set);
    e882b40a:	6789                	lui	a5,0x2
    e882b40c:	97a6                	add	a5,a5,s1
    e882b40e:	a667c783          	lbu	a5,-1434(a5) # 1a66 <memcmp-0xe87fe59a>
    e882b412:	c789                	beqz	a5,e882b41c <mDNS_DeregisterInterface+0x148>
    e882b414:	85a6                	mv	a1,s1
    e882b416:	8522                	mv	a0,s0
    e882b418:	a25f70ef          	jal	ra,e8822e3c <DeadvertiseInterface>
    if (revalidate && !m->ShutdownTime)
    e882b41c:	1a091463          	bnez	s2,e882b5c4 <mDNS_DeregisterInterface+0x2f0>
    mDNS_UpdateAllowSleep(m);
    e882b420:	8522                	mv	a0,s0
    e882b422:	87ff50ef          	jal	ra,e8820ca0 <mDNS_UpdateAllowSleep>
    if (!*p) { debugf("mDNS_DeregisterInterface: NetworkInterfaceInfo not found in list"); mDNS_Unlock(m); return; }
    e882b426:	8522                	mv	a0,s0
}
    e882b428:	7406                	ld	s0,96(sp)
    e882b42a:	70a6                	ld	ra,104(sp)
    e882b42c:	64e6                	ld	s1,88(sp)
    e882b42e:	6946                	ld	s2,80(sp)
    e882b430:	69a6                	ld	s3,72(sp)
    e882b432:	6a06                	ld	s4,64(sp)
    e882b434:	7ae2                	ld	s5,56(sp)
    e882b436:	7b42                	ld	s6,48(sp)
    e882b438:	7ba2                	ld	s7,40(sp)
    e882b43a:	7c02                	ld	s8,32(sp)
    e882b43c:	6ce2                	ld	s9,24(sp)
    e882b43e:	6d42                	ld	s10,16(sp)
    e882b440:	6da2                	ld	s11,8(sp)
    if (!*p) { debugf("mDNS_DeregisterInterface: NetworkInterfaceInfo not found in list"); mDNS_Unlock(m); return; }
    e882b442:	0007d597          	auipc	a1,0x7d
    e882b446:	9f658593          	addi	a1,a1,-1546 # e88a7e38 <__func__.12543>
}
    e882b44a:	6165                	addi	sp,sp,112
    if (!*p) { debugf("mDNS_DeregisterInterface: NetworkInterfaceInfo not found in list"); mDNS_Unlock(m); return; }
    e882b44c:	e80ea06f          	j	e8815acc <mDNS_Unlock_>
            if (intf->InterfaceActive && intf->InterfaceID == set->InterfaceID)
    e882b450:	00894783          	lbu	a5,8(s2)
    e882b454:	cf89                	beqz	a5,e882b46e <mDNS_DeregisterInterface+0x19a>
    e882b456:	013907b3          	add	a5,s2,s3
    e882b45a:	9f07b703          	ld	a4,-1552(a5)
    e882b45e:	9f0a3783          	ld	a5,-1552(s4)
    e882b462:	00f71663          	bne	a4,a5,e882b46e <mDNS_DeregisterInterface+0x19a>
                UpdateInterfaceProtocols(m, intf);
    e882b466:	85ca                	mv	a1,s2
    e882b468:	8556                	mv	a0,s5
    e882b46a:	8a1f10ef          	jal	ra,e881cd0a <UpdateInterfaceProtocols.isra.11>
        for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b46e:	00093903          	ld	s2,0(s2)
    e882b472:	bf9d                	j	e882b3e8 <mDNS_DeregisterInterface+0x114>
                if (intf->InterfaceID == set->InterfaceID && intf->ip.type == set->ip.type)
    e882b474:	00e78633          	add	a2,a5,a4
    e882b478:	9f063503          	ld	a0,-1552(a2)
    e882b47c:	9f06b583          	ld	a1,-1552(a3) # 19f0 <memcmp-0xe87fe610>
    e882b480:	00b51863          	bne	a0,a1,e882b490 <mDNS_DeregisterInterface+0x1bc>
    e882b484:	9f862583          	lw	a1,-1544(a2)
    e882b488:	9f86a603          	lw	a2,-1544(a3)
    e882b48c:	f6c580e3          	beq	a1,a2,e882b3ec <mDNS_DeregisterInterface+0x118>
            for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b490:	639c                	ld	a5,0(a5)
    e882b492:	bf35                	j	e882b3ce <mDNS_DeregisterInterface+0xfa>
            LogInfo("mDNS_DeregisterInterface: Last representative of InterfaceID %d %s (%#a) deregistered;"
    e882b494:	c385                	beqz	a5,e882b4b4 <mDNS_DeregisterInterface+0x1e0>
    e882b496:	9f890713          	addi	a4,s2,-1544
    e882b49a:	a2690693          	addi	a3,s2,-1498
    e882b49e:	9726                	add	a4,a4,s1
    e882b4a0:	96a6                	add	a3,a3,s1
    e882b4a2:	000b061b          	sext.w	a2,s6
    e882b4a6:	0007e597          	auipc	a1,0x7e
    e882b4aa:	23a58593          	addi	a1,a1,570 # e88a96e0 <hexValues.12413+0x1730>
    e882b4ae:	450d                	li	a0,3
    e882b4b0:	7fd030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            m->mDNSStats.InterfaceDown++;
    e882b4b4:	6915                	lui	s2,0x5
    e882b4b6:	9922                	add	s2,s2,s0
    e882b4b8:	ed492783          	lw	a5,-300(s2) # 4ed4 <memcmp-0xe87fb12c>
            if (set->McastTxRx && (activationSpeed == SlowActivation))
    e882b4bc:	6609                	lui	a2,0x2
            m->mDNSStats.InterfaceDown++;
    e882b4be:	2785                	addiw	a5,a5,1
    e882b4c0:	ecf92a23          	sw	a5,-300(s2)
            if (set->McastTxRx && (activationSpeed == SlowActivation))
    e882b4c4:	00c487b3          	add	a5,s1,a2
    e882b4c8:	a677c783          	lbu	a5,-1433(a5)
    e882b4cc:	c795                	beqz	a5,e882b4f8 <mDNS_DeregisterInterface+0x224>
    e882b4ce:	4789                	li	a5,2
    e882b4d0:	02fa1463          	bne	s4,a5,e882b4f8 <mDNS_DeregisterInterface+0x224>
                LogMsg("mDNS_DeregisterInterface: Frequent transitions for interface %s (%#a)", set->ifname, &set->ip);
    e882b4d4:	9f860693          	addi	a3,a2,-1544 # 19f8 <memcmp-0xe87fe608>
    e882b4d8:	a2660613          	addi	a2,a2,-1498
    e882b4dc:	96a6                	add	a3,a3,s1
    e882b4de:	9626                	add	a2,a2,s1
    e882b4e0:	0007e597          	auipc	a1,0x7e
    e882b4e4:	27858593          	addi	a1,a1,632 # e88a9758 <hexValues.12413+0x17a8>
    e882b4e8:	4501                	li	a0,0
    e882b4ea:	7c3030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                m->mDNSStats.InterfaceDownFlap++;
    e882b4ee:	ed892783          	lw	a5,-296(s2)
    e882b4f2:	2785                	addiw	a5,a5,1
    e882b4f4:	ecf92c23          	sw	a5,-296(s2)
            for (q = m->Questions; q; q=q->next)
    e882b4f8:	2b843783          	ld	a5,696(s0)
                if (q->InterfaceID == set->InterfaceID) q->ThisQInterval = 0;
    e882b4fc:	6709                	lui	a4,0x2
    e882b4fe:	9726                	add	a4,a4,s1
            for (q = m->Questions; q; q=q->next)
    e882b500:	e79d                	bnez	a5,e882b52e <mDNS_DeregisterInterface+0x25a>
    e882b502:	6985                	lui	s3,0x1
    e882b504:	2a898993          	addi	s3,s3,680 # 12a8 <memcmp-0xe87fed58>
                if (rr->resrec.InterfaceID == set->InterfaceID)
    e882b508:	6b09                	lui	s6,0x2
    e882b50a:	31040a93          	addi	s5,s0,784
    e882b50e:	99a2                	add	s3,s3,s0
    e882b510:	9b26                	add	s6,s6,s1
                    if (set->McastTxRx && (activationSpeed == SlowActivation))
    e882b512:	4c09                	li	s8,2
                        mDNS_Reconfirm_internal(m, rr, kDefaultReconfirmTimeForFlappingInterface);
    e882b514:	000a9c97          	auipc	s9,0xa9
    e882b518:	56cc8c93          	addi	s9,s9,1388 # e88d4a80 <mDNSPlatformOneSecond>
    e882b51c:	4d29                	li	s10,10
            FORALL_CACHERECORDS(slot, cg, rr)
    e882b51e:	000abb83          	ld	s7,0(s5)
    e882b522:	020b9b63          	bnez	s7,e882b558 <mDNS_DeregisterInterface+0x284>
    e882b526:	0aa1                	addi	s5,s5,8
    e882b528:	ff3a9be3          	bne	s5,s3,e882b51e <mDNS_DeregisterInterface+0x24a>
    e882b52c:	b5c1                	j	e882b3ec <mDNS_DeregisterInterface+0x118>
                if (q->InterfaceID == set->InterfaceID) q->ThisQInterval = 0;
    e882b52e:	1f07b683          	ld	a3,496(a5)
    e882b532:	9f073603          	ld	a2,-1552(a4) # 19f0 <memcmp-0xe87fe610>
    e882b536:	0ec69d63          	bne	a3,a2,e882b630 <mDNS_DeregisterInterface+0x35c>
    e882b53a:	0007aa23          	sw	zero,20(a5)
                if (!q->InterfaceID || q->InterfaceID == set->InterfaceID)
    e882b53e:	ea81                	bnez	a3,e882b54e <mDNS_DeregisterInterface+0x27a>
                    q->FlappingInterface2 = q->FlappingInterface1;
    e882b540:	7f94                	ld	a3,56(a5)
    e882b542:	e3b4                	sd	a3,64(a5)
                    q->FlappingInterface1 = set->InterfaceID;       // Keep history of the last two interfaces to go away
    e882b544:	9f073683          	ld	a3,-1552(a4)
    e882b548:	ff94                	sd	a3,56(a5)
            for (q = m->Questions; q; q=q->next)
    e882b54a:	639c                	ld	a5,0(a5)
    e882b54c:	bf55                	j	e882b500 <mDNS_DeregisterInterface+0x22c>
                if (!q->InterfaceID || q->InterfaceID == set->InterfaceID)
    e882b54e:	9f073603          	ld	a2,-1552(a4)
    e882b552:	fec687e3          	beq	a3,a2,e882b540 <mDNS_DeregisterInterface+0x26c>
    e882b556:	bfd5                	j	e882b54a <mDNS_DeregisterInterface+0x276>
            FORALL_CACHERECORDS(slot, cg, rr)
    e882b558:	010bb903          	ld	s2,16(s7)
                        rr->UnansweredQueries = MaxUnansweredQueries;
    e882b55c:	4d91                	li	s11,4
            FORALL_CACHERECORDS(slot, cg, rr)
    e882b55e:	00091563          	bnez	s2,e882b568 <mDNS_DeregisterInterface+0x294>
    e882b562:	000bbb83          	ld	s7,0(s7)
    e882b566:	bf75                	j	e882b522 <mDNS_DeregisterInterface+0x24e>
                if (rr->resrec.InterfaceID == set->InterfaceID)
    e882b568:	02093703          	ld	a4,32(s2)
    e882b56c:	9f0b3783          	ld	a5,-1552(s6) # 19f0 <memcmp-0xe87fe610>
    e882b570:	02f71163          	bne	a4,a5,e882b592 <mDNS_DeregisterInterface+0x2be>
                    if (set->McastTxRx && (activationSpeed == SlowActivation))
    e882b574:	a67b4783          	lbu	a5,-1433(s6)
    e882b578:	c385                	beqz	a5,e882b598 <mDNS_DeregisterInterface+0x2c4>
    e882b57a:	018a1f63          	bne	s4,s8,e882b598 <mDNS_DeregisterInterface+0x2c4>
                        mDNS_Reconfirm_internal(m, rr, kDefaultReconfirmTimeForFlappingInterface);
    e882b57e:	000ca603          	lw	a2,0(s9)
    e882b582:	85ca                	mv	a1,s2
    e882b584:	8522                	mv	a0,s0
    e882b586:	02cd063b          	mulw	a2,s10,a2
    e882b58a:	e7ef30ef          	jal	ra,e881ec08 <mDNS_Reconfirm_internal>
                        rr->UnansweredQueries = MaxUnansweredQueries;
    e882b58e:	07b90623          	sb	s11,108(s2)
            FORALL_CACHERECORDS(slot, cg, rr)
    e882b592:	00093903          	ld	s2,0(s2)
    e882b596:	b7e1                	j	e882b55e <mDNS_DeregisterInterface+0x28a>
                        mDNS_PurgeCacheResourceRecord(m, rr);
    e882b598:	85ca                	mv	a1,s2
    e882b59a:	8522                	mv	a0,s0
    e882b59c:	82ef50ef          	jal	ra,e88205ca <mDNS_PurgeCacheResourceRecord>
    e882b5a0:	bfcd                	j	e882b592 <mDNS_DeregisterInterface+0x2be>
        if (intf->Advertise) break;
    e882b5a2:	00d78633          	add	a2,a5,a3
    e882b5a6:	a6664603          	lbu	a2,-1434(a2)
    e882b5aa:	ee35                	bnez	a2,e882b626 <mDNS_DeregisterInterface+0x352>
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b5ac:	639c                	ld	a5,0(a5)
    e882b5ae:	b5b1                	j	e882b3fa <mDNS_DeregisterInterface+0x126>
        if (intf->RR_A.RRSet == &set->RR_A)
    e882b5b0:	00c705b3          	add	a1,a4,a2
    e882b5b4:	e205b503          	ld	a0,-480(a1)
    e882b5b8:	00d51463          	bne	a0,a3,e882b5c0 <mDNS_DeregisterInterface+0x2ec>
            intf->RR_A.RRSet = A;
    e882b5bc:	e2f5b023          	sd	a5,-480(a1)
    for (intf = m->HostInterfaces; intf; intf = intf->next)
    e882b5c0:	6318                	ld	a4,0(a4)
    e882b5c2:	b591                	j	e882b406 <mDNS_DeregisterInterface+0x132>
    if (revalidate && !m->ShutdownTime)
    e882b5c4:	24c42783          	lw	a5,588(s0)
    e882b5c8:	e4079ce3          	bnez	a5,e882b420 <mDNS_DeregisterInterface+0x14c>
    e882b5cc:	6905                	lui	s2,0x1
    e882b5ce:	2a890913          	addi	s2,s2,680 # 12a8 <memcmp-0xe87fed58>
        if (rr->resrec.InterfaceID == set->InterfaceID)
    e882b5d2:	6789                	lui	a5,0x2
    e882b5d4:	31040a13          	addi	s4,s0,784
    e882b5d8:	9922                	add	s2,s2,s0
    e882b5da:	94be                	add	s1,s1,a5
            mDNS_Reconfirm_internal(m, rr, kDefaultReconfirmTimeForFlappingInterface);
    e882b5dc:	000a9b17          	auipc	s6,0xa9
    e882b5e0:	4a4b0b13          	addi	s6,s6,1188 # e88d4a80 <mDNSPlatformOneSecond>
    e882b5e4:	4ba9                	li	s7,10
        FORALL_CACHERECORDS(slot, cg, rr)
    e882b5e6:	000a3a83          	ld	s5,0(s4)
    e882b5ea:	000a9663          	bnez	s5,e882b5f6 <mDNS_DeregisterInterface+0x322>
    e882b5ee:	0a21                	addi	s4,s4,8
    e882b5f0:	ff491be3          	bne	s2,s4,e882b5e6 <mDNS_DeregisterInterface+0x312>
    e882b5f4:	b535                	j	e882b420 <mDNS_DeregisterInterface+0x14c>
    e882b5f6:	010ab983          	ld	s3,16(s5)
    e882b5fa:	00099563          	bnez	s3,e882b604 <mDNS_DeregisterInterface+0x330>
    e882b5fe:	000aba83          	ld	s5,0(s5)
    e882b602:	b7e5                	j	e882b5ea <mDNS_DeregisterInterface+0x316>
        if (rr->resrec.InterfaceID == set->InterfaceID)
    e882b604:	0209b703          	ld	a4,32(s3)
    e882b608:	9f04b783          	ld	a5,-1552(s1)
    e882b60c:	00f71a63          	bne	a4,a5,e882b620 <mDNS_DeregisterInterface+0x34c>
            mDNS_Reconfirm_internal(m, rr, kDefaultReconfirmTimeForFlappingInterface);
    e882b610:	000b2603          	lw	a2,0(s6)
    e882b614:	85ce                	mv	a1,s3
    e882b616:	8522                	mv	a0,s0
    e882b618:	02cb863b          	mulw	a2,s7,a2
    e882b61c:	decf30ef          	jal	ra,e881ec08 <mDNS_Reconfirm_internal>
        FORALL_CACHERECORDS(slot, cg, rr)
    e882b620:	0009b983          	ld	s3,0(s3)
    e882b624:	bfd9                	j	e882b5fa <mDNS_DeregisterInterface+0x326>
    A = primary ? &primary->RR_A : mDNSNULL;
    e882b626:	6685                	lui	a3,0x1
    e882b628:	dc068693          	addi	a3,a3,-576 # dc0 <memcmp-0xe87ff240>
    e882b62c:	97b6                	add	a5,a5,a3
    e882b62e:	bbc1                	j	e882b3fe <mDNS_DeregisterInterface+0x12a>
                if (!q->InterfaceID || q->InterfaceID == set->InterfaceID)
    e882b630:	fe89                	bnez	a3,e882b54a <mDNS_DeregisterInterface+0x276>
    e882b632:	b739                	j	e882b540 <mDNS_DeregisterInterface+0x26c>

00000000e882b634 <mDNS_StartBrowse>:
{
    e882b634:	711d                	addi	sp,sp,-96
    e882b636:	e8a2                	sd	s0,80(sp)
    e882b638:	842e                	mv	s0,a1
    mDNS_Lock(m);
    e882b63a:	0007c597          	auipc	a1,0x7c
    e882b63e:	77e58593          	addi	a1,a1,1918 # e88a7db8 <__func__.12356>
{
    e882b642:	e4a6                	sd	s1,72(sp)
    e882b644:	e0ca                	sd	s2,64(sp)
    e882b646:	fc4e                	sd	s3,56(sp)
    e882b648:	ec86                	sd	ra,88(sp)
    e882b64a:	892a                	mv	s2,a0
    e882b64c:	f432                	sd	a2,40(sp)
    e882b64e:	f036                	sd	a3,32(sp)
    e882b650:	ec3e                	sd	a5,24(sp)
    e882b652:	e842                	sd	a6,16(sp)
    e882b654:	e446                	sd	a7,8(sp)
    e882b656:	84ba                	mv	s1,a4
    mDNS_Lock(m);
    e882b658:	baaea0ef          	jal	ra,e8815a02 <mDNS_Lock_>
    if (!ConstructServiceName(&question->qname, mDNSNULL, srv, domain))
    e882b65c:	21440993          	addi	s3,s0,532
    question->InterfaceID      = InterfaceID;
    e882b660:	67e2                	ld	a5,24(sp)
    question->flags            = flags;
    e882b662:	6842                	ld	a6,16(sp)
    question->ForceMCast       = ForceMCast;
    e882b664:	68a2                	ld	a7,8(sp)
    question->InterfaceID      = InterfaceID;
    e882b666:	1ef43823          	sd	a5,496(s0)
    question->Target           = zeroAddr;
    e882b66a:	00078797          	auipc	a5,0x78
    e882b66e:	f1678793          	addi	a5,a5,-234 # e88a3580 <zeroAddr>
    e882b672:	638c                	ld	a1,0(a5)
    if (!ConstructServiceName(&question->qname, mDNSNULL, srv, domain))
    e882b674:	fcc1468b          	ldd	a3,a2,(sp),2,4
    question->flags            = flags;
    e882b678:	1f042c23          	sw	a6,504(s0)
    question->Target           = zeroAddr;
    e882b67c:	1eb43e23          	sd	a1,508(s0)
    e882b680:	678c                	ld	a1,8(a5)
    e882b682:	4b9c                	lw	a5,16(a5)
    question->ReturnIntermed   = (flags & kDNSServiceFlagsReturnIntermediates) != 0;
    e882b684:	30c8380b          	extu	a6,a6,12,12
    question->Target           = zeroAddr;
    e882b688:	20b43223          	sd	a1,516(s0)
    e882b68c:	20f42623          	sw	a5,524(s0)
    question->qtype            = kDNSType_PTR;
    e882b690:	67c1                	lui	a5,0x10
    e882b692:	27b1                	addiw	a5,a5,12
    e882b694:	30f42a23          	sw	a5,788(s0)
    question->LongLived        = mDNStrue;
    e882b698:	4785                	li	a5,1
    e882b69a:	30f41c23          	sh	a5,792(s0)
    question->UseBackgroundTrafficClass = useBackgroundTrafficClass;
    e882b69e:	06014783          	lbu	a5,96(sp)
    question->ForceMCast       = ForceMCast;
    e882b6a2:	31140d23          	sb	a7,794(s0)
    question->ReturnIntermed   = (flags & kDNSServiceFlagsReturnIntermediates) != 0;
    e882b6a6:	31040da3          	sb	a6,795(s0)
    question->UseBackgroundTrafficClass = useBackgroundTrafficClass;
    e882b6aa:	32f40023          	sb	a5,800(s0)
    question->QuestionCallback = Callback;
    e882b6ae:	77a6                	ld	a5,104(sp)
    question->SearchListIndex  = 0;
    e882b6b0:	320410a3          	sh	zero,801(s0)
    question->SuppressUnusable = mDNSfalse;
    e882b6b4:	30042e23          	sw	zero,796(s0)
    question->QuestionCallback = Callback;
    e882b6b8:	34f43423          	sd	a5,840(s0)
    question->QuestionContext  = Context;
    e882b6bc:	77c6                	ld	a5,112(sp)
    question->ValidatingResponse = 0;
    e882b6be:	14040523          	sb	zero,330(s0)
    question->ValidationRequired = 0;
    e882b6c2:	32041223          	sh	zero,804(s0)
    question->qnameOrig        = mDNSNULL;
    e882b6c6:	34043023          	sd	zero,832(s0)
    question->AnonInfo         = mDNSNULL;
    e882b6ca:	06043023          	sd	zero,96(s0)
    question->QuestionContext  = Context;
    e882b6ce:	34f43823          	sd	a5,848(s0)
    if (!ConstructServiceName(&question->qname, mDNSNULL, srv, domain))
    e882b6d2:	4581                	li	a1,0
    e882b6d4:	854e                	mv	a0,s3
    e882b6d6:	ed3e70ef          	jal	ra,e88135a8 <ConstructServiceName>
    e882b6da:	e115                	bnez	a0,e882b6fe <mDNS_StartBrowse+0xca>
        return(mStatus_BadParamErr);
    e882b6dc:	7441                	lui	s0,0xffff0
    e882b6de:	1471                	addi	s0,s0,-4
    mDNS_Unlock(m);
    e882b6e0:	854a                	mv	a0,s2
    e882b6e2:	0007c597          	auipc	a1,0x7c
    e882b6e6:	6d658593          	addi	a1,a1,1750 # e88a7db8 <__func__.12356>
    e882b6ea:	be2ea0ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e882b6ee:	64a6                	ld	s1,72(sp)
    e882b6f0:	8522                	mv	a0,s0
    e882b6f2:	60e6                	ld	ra,88(sp)
    e882b6f4:	6446                	ld	s0,80(sp)
    e882b6f6:	6906                	ld	s2,64(sp)
    e882b6f8:	79e2                	ld	s3,56(sp)
    e882b6fa:	6125                	addi	sp,sp,96
    e882b6fc:	8082                	ret
    if (anondata)
    e882b6fe:	e499                	bnez	s1,e882b70c <mDNS_StartBrowse+0xd8>
    return(mDNS_StartQuery_internal(m, question));
    e882b700:	85a2                	mv	a1,s0
    e882b702:	854a                	mv	a0,s2
    e882b704:	cebf90ef          	jal	ra,e88253ee <mDNS_StartQuery_internal>
    e882b708:	842a                	mv	s0,a0
    e882b70a:	bfd9                	j	e882b6e0 <mDNS_StartBrowse+0xac>
        question->AnonInfo = AllocateAnonInfo(&question->qname, anondata, mDNSPlatformStrLen(anondata), mDNSNULL);
    e882b70c:	8526                	mv	a0,s1
    e882b70e:	38e040ef          	jal	ra,e882fa9c <mDNSPlatformStrLen>
    e882b712:	0005061b          	sext.w	a2,a0
    e882b716:	4681                	li	a3,0
    e882b718:	85a6                	mv	a1,s1
    e882b71a:	854e                	mv	a0,s3
    e882b71c:	eb4ee0ef          	jal	ra,e8819dd0 <AllocateAnonInfo>
    e882b720:	f028                	sd	a0,96(s0)
        if (!question->AnonInfo)
    e882b722:	fd79                	bnez	a0,e882b700 <mDNS_StartBrowse+0xcc>
    e882b724:	bf65                	j	e882b6dc <mDNS_StartBrowse+0xa8>

00000000e882b726 <SendSPSRegistrationForOwner>:
{
    e882b726:	3c06378b          	extu	a5,a2,15,0
    e882b72a:	af010113          	addi	sp,sp,-1296
    e882b72e:	f43e                	sd	a5,40(sp)
    const int optspace = DNSOpt_Header_Space + DNSOpt_LeaseData_Space + DNSOpt_Owner_Space(&m->PrimaryMAC, &intf->MAC);
    e882b730:	6789                	lui	a5,0x2
    e882b732:	97ae                	add	a5,a5,a1
{
    e882b734:	50813023          	sd	s0,1280(sp)
    e882b738:	4e913c23          	sd	s1,1272(sp)
    e882b73c:	4f313423          	sd	s3,1256(sp)
    e882b740:	50113423          	sd	ra,1288(sp)
    e882b744:	4f213823          	sd	s2,1264(sp)
    e882b748:	4f413023          	sd	s4,1248(sp)
    e882b74c:	4d513c23          	sd	s5,1240(sp)
    e882b750:	4d613823          	sd	s6,1232(sp)
    e882b754:	4d713423          	sd	s7,1224(sp)
    e882b758:	4d813023          	sd	s8,1216(sp)
    e882b75c:	4b913c23          	sd	s9,1208(sp)
    e882b760:	4ba13823          	sd	s10,1200(sp)
    e882b764:	4bb13423          	sd	s11,1192(sp)
    const int optspace = DNSOpt_Header_Space + DNSOpt_LeaseData_Space + DNSOpt_Owner_Space(&m->PrimaryMAC, &intf->MAC);
    e882b768:	6d18                	ld	a4,24(a0)
    e882b76a:	a207b783          	ld	a5,-1504(a5) # 1a20 <memcmp-0xe87fe5e0>
{
    e882b76e:	89b6                	mv	s3,a3
    const int optspace = DNSOpt_Header_Space + DNSOpt_LeaseData_Space + DNSOpt_Owner_Space(&m->PrimaryMAC, &intf->MAC);
    e882b770:	46fd                	li	a3,31
    e882b772:	e4b6                	sd	a3,72(sp)
    e882b774:	bc07370b          	extu	a4,a4,47,0
    e882b778:	bc07b78b          	extu	a5,a5,47,0
{
    e882b77c:	842a                	mv	s0,a0
    e882b77e:	84ae                	mv	s1,a1
    const int optspace = DNSOpt_Header_Space + DNSOpt_LeaseData_Space + DNSOpt_Owner_Space(&m->PrimaryMAC, &intf->MAC);
    e882b780:	00f70563          	beq	a4,a5,e882b78a <SendSPSRegistrationForOwner+0x64>
    e882b784:	02500793          	li	a5,37
    e882b788:	e4be                	sd	a5,72(sp)
    const int sps = intf->NextSPSAttempt / 3;
    e882b78a:	6a05                	lui	s4,0x1
    e882b78c:	01448b33          	add	s6,s1,s4
    e882b790:	db4b2903          	lw	s2,-588(s6)
    e882b794:	478d                	li	a5,3
    scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
    e882b796:	6a89                	lui	s5,0x2
    const int sps = intf->NextSPSAttempt / 3;
    e882b798:	02f9493b          	divw	s2,s2,a5
    scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
    e882b79c:	9aa6                	add	s5,s5,s1
    e882b79e:	9f0ab583          	ld	a1,-1552(s5) # 19f0 <memcmp-0xe87fe610>
    e882b7a2:	4605                	li	a2,1
    e882b7a4:	8522                	mv	a0,s0
    e882b7a6:	206040ef          	jal	ra,e882f9ac <mDNSPlatformInterfaceIndexfromInterfaceID>
    e882b7aa:	0005079b          	sext.w	a5,a0
    e882b7ae:	ec3e                	sd	a5,24(sp)
    if (!intf->SPSAddr[sps].type)
    e882b7b0:	8726                	mv	a4,s1
    e882b7b2:	47d1                	li	a5,20
    e882b7b4:	20f9170b          	mula	a4,s2,a5
    e882b7b8:	9a3a                	add	s4,s4,a4
    e882b7ba:	d70a2783          	lw	a5,-656(s4) # d70 <memcmp-0xe87ff290>
    e882b7be:	efad                	bnez	a5,e882b838 <SendSPSRegistrationForOwner+0x112>
        intf->NextSPSAttemptTime = m->timenow + mDNSPlatformOneSecond;
    e882b7c0:	000a9717          	auipc	a4,0xa9
    e882b7c4:	2c070713          	addi	a4,a4,704 # e88d4a80 <mDNSPlatformOneSecond>
    e882b7c8:	24042783          	lw	a5,576(s0) # ffffffffffff0240 <__DRAM0_INF_BASE+0xffffffff00000240>
    e882b7cc:	4318                	lw	a4,0(a4)
    e882b7ce:	9fb9                	addw	a5,a5,a4
    e882b7d0:	dafb2c23          	sw	a5,-584(s6)
        if (m->NextScheduledSPRetry - intf->NextSPSAttemptTime > 0)
    e882b7d4:	2a842703          	lw	a4,680(s0)
    e882b7d8:	9f1d                	subw	a4,a4,a5
    e882b7da:	00e05463          	blez	a4,e882b7e2 <SendSPSRegistrationForOwner+0xbc>
            m->NextScheduledSPRetry = intf->NextSPSAttemptTime;
    e882b7de:	2af42423          	sw	a5,680(s0)
        LogSPS("SendSPSRegistration: %s SPS %d (%d) %##s not yet resolved", intf->ifname, intf->NextSPSAttempt, sps, intf->NetWakeResolve[sps].qname.c);
    e882b7e2:	000a9797          	auipc	a5,0xa9
    e882b7e6:	29278793          	addi	a5,a5,658 # e88d4a74 <mDNS_LoggingEnabled>
    e882b7ea:	439c                	lw	a5,0(a5)
    e882b7ec:	cb85                	beqz	a5,e882b81c <SendSPSRegistrationForOwner+0xf6>
    e882b7ee:	35800793          	li	a5,856
    e882b7f2:	8726                	mv	a4,s1
    e882b7f4:	20f9170b          	mula	a4,s2,a5
    e882b7f8:	6685                	lui	a3,0x1
    e882b7fa:	96a6                	add	a3,a3,s1
    e882b7fc:	6609                	lui	a2,0x2
    e882b7fe:	db46a683          	lw	a3,-588(a3) # db4 <memcmp-0xe87ff24c>
    e882b802:	a2660613          	addi	a2,a2,-1498 # 1a26 <memcmp-0xe87fe5da>
    e882b806:	9626                	add	a2,a2,s1
    e882b808:	0007b597          	auipc	a1,0x7b
    e882b80c:	66058593          	addi	a1,a1,1632 # e88a6e68 <end.8789+0x37c0>
    e882b810:	4509                	li	a0,2
    e882b812:	57c70793          	addi	a5,a4,1404
    e882b816:	874a                	mv	a4,s2
    e882b818:	495030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (mDNSOpaque16IsZero(id) && intf->NextSPSAttempt < 8) intf->NextSPSAttempt++;
    e882b81c:	77a2                	ld	a5,40(sp)
    e882b81e:	56079f63          	bnez	a5,e882bd9c <SendSPSRegistrationForOwner+0x676>
    e882b822:	6785                	lui	a5,0x1
    e882b824:	94be                	add	s1,s1,a5
    e882b826:	db44a783          	lw	a5,-588(s1)
    e882b82a:	471d                	li	a4,7
    e882b82c:	56f74863          	blt	a4,a5,e882bd9c <SendSPSRegistrationForOwner+0x676>
    e882b830:	2785                	addiw	a5,a5,1
    e882b832:	daf4aa23          	sw	a5,-588(s1)
    e882b836:	a39d                	j	e882bd9c <SendSPSRegistrationForOwner+0x676>
    if (mDNSOpaque16IsZero(id))
    e882b838:	7ca2                	ld	s9,40(sp)
    e882b83a:	020c9263          	bnez	s9,e882b85e <SendSPSRegistrationForOwner+0x138>
        msgid = mDNS_NewMessageID(m);
    e882b83e:	8522                	mv	a0,s0
    e882b840:	b2ff90ef          	jal	ra,e882536e <mDNS_NewMessageID>
    e882b844:	3c053c8b          	extu	s9,a0,15,0
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882b848:	678d                	lui	a5,0x3
    e882b84a:	97a2                	add	a5,a5,s0
    e882b84c:	1b87ba03          	ld	s4,440(a5) # 31b8 <memcmp-0xe87fce48>
            if (!(rr->AuthFlags & AuthFlagsWakeOnly) && rr->resrec.RecordType > kDNSRecordTypeDeregistering)
    e882b850:	4b05                	li	s6,1
                        rr->SendRNow = mDNSInterfaceMark;   // mark it now
    e882b852:	00077b97          	auipc	s7,0x77
    e882b856:	506b8b93          	addi	s7,s7,1286 # e88a2d58 <mDNSInterfaceMark>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882b85a:	160a1c63          	bnez	s4,e882b9d2 <SendSPSRegistrationForOwner+0x2ac>
                LogSPS("SendSPSRegistration: Sending Update %s %d (%d) id %5d with %d records %d bytes to %#a:%d", intf->ifname, intf->NextSPSAttempt, sps,
    e882b85e:	6785                	lui	a5,0x1
    e882b860:	4751                	li	a4,20
    e882b862:	d7078793          	addi	a5,a5,-656 # d70 <memcmp-0xe87ff290>
    e882b866:	20e9178b          	mula	a5,s2,a4
    if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882b86a:	6762                	ld	a4,24(sp)
        mDNSu8 *p = m->omsg.data;
    e882b86c:	6a1d                	lui	s4,0x7
                LogSPS("SendSPSRegistration: Sending Update %s %d (%d) id %5d with %d records %d bytes to %#a:%d", intf->ifname, intf->NextSPSAttempt, sps,
    e882b86e:	97a6                	add	a5,a5,s1
    e882b870:	e0be                	sd	a5,64(sp)
    e882b872:	6d690793          	addi	a5,s2,1750
    e882b876:	02f4978b          	addsl	a5,s1,a5,1
    e882b87a:	fc3e                	sd	a5,56(sp)
    if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882b87c:	67e2                	ld	a5,24(sp)
    e882b87e:	7c57b78b          	extu	a5,a5,31,5
    e882b882:	e8be                	sd	a5,80(sp)
    e882b884:	4785                	li	a5,1
    e882b886:	00e797bb          	sllw	a5,a5,a4
    e882b88a:	f0be                	sd	a5,96(sp)
                            bit_clr_opaque64(rr->updateIntID, scopeid);
    e882b88c:	fff7c793          	not	a5,a5
    e882b890:	2781                	sext.w	a5,a5
    e882b892:	ecbe                	sd	a5,88(sp)
        mDNSu8 *p = m->omsg.data;
    e882b894:	1eca0793          	addi	a5,s4,492 # 71ec <memcmp-0xe87f8e14>
    e882b898:	97a2                	add	a5,a5,s0
    e882b89a:	f03e                	sd	a5,32(sp)
        InitializeDNSMessage(&m->omsg.h, msgid, UpdateReqFlags);
    e882b89c:	00077797          	auipc	a5,0x77
    e882b8a0:	48c78793          	addi	a5,a5,1164 # e88a2d28 <UpdateReqFlags>
    e882b8a4:	0007d783          	lhu	a5,0(a5)
    e882b8a8:	06f11723          	sh	a5,110(sp)
                        LogSPS("SendSPSRegistration put %s 0x%x 0x%x (updateid %d)  %s", intf->ifname, rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(m->omsg.h.id), ARDisplayString(m, rr));
    e882b8ac:	6789                	lui	a5,0x2
    e882b8ae:	a2678a93          	addi	s5,a5,-1498 # 1a26 <memcmp-0xe87fe5da>
    e882b8b2:	9aa6                	add	s5,s5,s1
        InitializeDNSMessage(&m->omsg.h, msgid, UpdateReqFlags);
    e882b8b4:	1e0a0b13          	addi	s6,s4,480
    e882b8b8:	06e15603          	lhu	a2,110(sp)
    e882b8bc:	9b22                	add	s6,s6,s0
    e882b8be:	85e6                	mv	a1,s9
    e882b8c0:	855a                	mv	a0,s6
    e882b8c2:	d8be80ef          	jal	ra,e881464c <InitializeDNSMessage>
        mDNSu8 *p = m->omsg.data;
    e882b8c6:	7d02                	ld	s10,32(sp)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882b8c8:	678d                	lui	a5,0x3
    e882b8ca:	97a2                	add	a5,a5,s0
    e882b8cc:	1b87bc03          	ld	s8,440(a5) # 31b8 <memcmp-0xe87fce48>
    if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882b8d0:	67c6                	ld	a5,80(sp)
    e882b8d2:	05478793          	addi	a5,a5,84
    e882b8d6:	078a                	slli	a5,a5,0x2
    e882b8d8:	f8be                	sd	a5,112(sp)
                    newptr = PutResourceRecordTTLWithLimit(&m->omsg, p, &m->omsg.h.mDNS_numUpdates, &rr->resrec, rr->resrec.rroriginalttl, limit);
    e882b8da:	1e8a0793          	addi	a5,s4,488
    e882b8de:	97a2                	add	a5,a5,s0
    e882b8e0:	fcbe                	sd	a5,120(sp)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882b8e2:	140c1663          	bnez	s8,e882ba2e <SendSPSRegistrationForOwner+0x308>
        if (!m->omsg.h.mDNS_numUpdates) break;
    e882b8e6:	014407b3          	add	a5,s0,s4
    e882b8ea:	1e87d783          	lhu	a5,488(a5)
    e882b8ee:	4e078463          	beqz	a5,e882bdd6 <SendSPSRegistrationForOwner+0x6b0>
            mDNS_SetupResourceRecord(&opt, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e882b8f2:	00077617          	auipc	a2,0x77
    e882b8f6:	46e60613          	addi	a2,a2,1134 # e88a2d60 <mDNSInterface_Any>
    e882b8fa:	6210                	ld	a2,0(a2)
    e882b8fc:	6705                	lui	a4,0x1
    e882b8fe:	02000793          	li	a5,32
    e882b902:	19470713          	addi	a4,a4,404 # 1194 <memcmp-0xe87fee6c>
    e882b906:	02900693          	li	a3,41
    e882b90a:	e002                	sd	zero,0(sp)
    e882b90c:	4881                	li	a7,0
    e882b90e:	4801                	li	a6,0
    e882b910:	4581                	li	a1,0
    e882b912:	0908                	addi	a0,sp,144
    e882b914:	cb6e80ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
            opt.resrec.rrclass    = NormalMaxDNSMessageData;
    e882b918:	5a000793          	li	a5,1440
    e882b91c:	08f11e23          	sh	a5,156(sp)
            opt.resrec.rdlength   = sizeof(rdataOPT) * 2;   // Two options in this OPT record
    e882b920:	003007b7          	lui	a5,0x300
    e882b924:	0307879b          	addiw	a5,a5,48
    e882b928:	d33e                	sw	a5,164(sp)
            opt.resrec.rdata->u.opt[0].opt           = kDNSOpt_Lease;
    e882b92a:	678e                	ld	a5,192(sp)
    e882b92c:	4709                	li	a4,2
    e882b92e:	00e79223          	sh	a4,4(a5) # 300004 <memcmp-0xe84ffffc>
            opt.resrec.rdata->u.opt[0].optlen        = DNSOpt_LeaseData_Space - 4;
    e882b932:	678e                	ld	a5,192(sp)
    e882b934:	4711                	li	a4,4
    e882b936:	00e79323          	sh	a4,6(a5)
            opt.resrec.rdata->u.opt[0].u.updatelease = DEFAULT_UPDATE_LEASE;
    e882b93a:	6789                	lui	a5,0x2
    e882b93c:	668e                	ld	a3,192(sp)
    e882b93e:	c207879b          	addiw	a5,a5,-992
    e882b942:	c69c                	sw	a5,8(a3)
            if (!owner->HMAC.l[0])                                          // If no owner data,
    e882b944:	0029a783          	lw	a5,2(s3)
    e882b948:	660e                	ld	a2,192(sp)
    e882b94a:	30079663          	bnez	a5,e882bc56 <SendSPSRegistrationForOwner+0x530>
                SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[1]);        // use our own interface information
    e882b94e:	0671                	addi	a2,a2,28
    e882b950:	85a6                	mv	a1,s1
    e882b952:	8522                	mv	a0,s0
    e882b954:	ddbef0ef          	jal	ra,e881b72e <SetupOwnerOpt>
            LogSPS("SendSPSRegistration put %s %s", intf->ifname, ARDisplayString(m, &opt));
    e882b958:	000a9b97          	auipc	s7,0xa9
    e882b95c:	11cb8b93          	addi	s7,s7,284 # e88d4a74 <mDNS_LoggingEnabled>
    e882b960:	000ba783          	lw	a5,0(s7)
    e882b964:	8dde                	mv	s11,s7
    e882b966:	c38d                	beqz	a5,e882b988 <SendSPSRegistrationForOwner+0x262>
    e882b968:	658e                	ld	a1,192(sp)
    e882b96a:	03b40613          	addi	a2,s0,59
    e882b96e:	0928                	addi	a0,sp,152
    e882b970:	0591                	addi	a1,a1,4
    e882b972:	8a2eb0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882b976:	86aa                	mv	a3,a0
    e882b978:	8656                	mv	a2,s5
    e882b97a:	0007b597          	auipc	a1,0x7b
    e882b97e:	5ce58593          	addi	a1,a1,1486 # e88a6f48 <end.8789+0x38a0>
    e882b982:	4509                	li	a0,2
    e882b984:	329030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            p = PutResourceRecordTTLWithLimit(&m->omsg, p, &m->omsg.h.numAdditionals, &opt.resrec, opt.resrec.rroriginalttl, m->omsg.data + AbsoluteMaxDNSMessageData);
    e882b988:	67a5                	lui	a5,0x9
    e882b98a:	570a                	lw	a4,160(sp)
    e882b98c:	1eaa0613          	addi	a2,s4,490
    e882b990:	4d878793          	addi	a5,a5,1240 # 94d8 <memcmp-0xe87f6b28>
    e882b994:	85ea                	mv	a1,s10
    e882b996:	97a2                	add	a5,a5,s0
    e882b998:	0934                	addi	a3,sp,152
    e882b99a:	9622                	add	a2,a2,s0
    e882b99c:	855a                	mv	a0,s6
    e882b99e:	ca3ea0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e882b9a2:	8d2a                	mv	s10,a0
            if (!p)
    e882b9a4:	2e051d63          	bnez	a0,e882bc9e <SendSPSRegistrationForOwner+0x578>
                LogMsg("SendSPSRegistration: Failed to put OPT record (%d updates) %s", m->omsg.h.mDNS_numUpdates, ARDisplayString(m, &opt));
    e882b9a8:	658e                	ld	a1,192(sp)
    e882b9aa:	014407b3          	add	a5,s0,s4
    e882b9ae:	1e87db03          	lhu	s6,488(a5)
    e882b9b2:	03b40613          	addi	a2,s0,59
    e882b9b6:	0591                	addi	a1,a1,4
    e882b9b8:	0928                	addi	a0,sp,152
    e882b9ba:	85aeb0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882b9be:	86aa                	mv	a3,a0
    e882b9c0:	865a                	mv	a2,s6
    e882b9c2:	0007b597          	auipc	a1,0x7b
    e882b9c6:	5a658593          	addi	a1,a1,1446 # e88a6f68 <end.8789+0x38c0>
    e882b9ca:	4501                	li	a0,0
    e882b9cc:	2e1030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882b9d0:	b5d5                	j	e882b8b4 <SendSPSRegistrationForOwner+0x18e>
            if (!(rr->AuthFlags & AuthFlagsWakeOnly) && rr->resrec.RecordType > kDNSRecordTypeDeregistering)
    e882b9d2:	07ba4783          	lbu	a5,123(s4)
    e882b9d6:	8b85                	andi	a5,a5,1
    e882b9d8:	e395                	bnez	a5,e882b9fc <SendSPSRegistrationForOwner+0x2d6>
    e882b9da:	008a4783          	lbu	a5,8(s4)
    e882b9de:	00fb7f63          	bgeu	s6,a5,e882b9fc <SendSPSRegistrationForOwner+0x2d6>
                if (rr->resrec.InterfaceID == intf->InterfaceID || (!rr->resrec.InterfaceID && (rr->ForceMCast || IsLocalDomain(rr->resrec.name))))
    e882b9e2:	020a3783          	ld	a5,32(s4)
    e882b9e6:	9f0ab703          	ld	a4,-1552(s5)
    e882b9ea:	00e79c63          	bne	a5,a4,e882ba02 <SendSPSRegistrationForOwner+0x2dc>
                    if (mDNSPlatformMemSame(owner, &rr->WakeUp, sizeof(*owner)))
    e882b9ee:	4651                	li	a2,20
    e882b9f0:	07ca0593          	addi	a1,s4,124
    e882b9f4:	854e                	mv	a0,s3
    e882b9f6:	0b2040ef          	jal	ra,e882faa8 <mDNSPlatformMemSame>
    e882b9fa:	ed11                	bnez	a0,e882ba16 <SendSPSRegistrationForOwner+0x2f0>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882b9fc:	000a3a03          	ld	s4,0(s4)
    e882ba00:	bda9                	j	e882b85a <SendSPSRegistrationForOwner+0x134>
                if (rr->resrec.InterfaceID == intf->InterfaceID || (!rr->resrec.InterfaceID && (rr->ForceMCast || IsLocalDomain(rr->resrec.name))))
    e882ba02:	ffed                	bnez	a5,e882b9fc <SendSPSRegistrationForOwner+0x2d6>
    e882ba04:	07aa4783          	lbu	a5,122(s4)
    e882ba08:	f3fd                	bnez	a5,e882b9ee <SendSPSRegistrationForOwner+0x2c8>
    e882ba0a:	028a3503          	ld	a0,40(s4)
    e882ba0e:	e94e70ef          	jal	ra,e88130a2 <IsLocalDomain>
    e882ba12:	fd71                	bnez	a0,e882b9ee <SendSPSRegistrationForOwner+0x2c8>
    e882ba14:	b7e5                	j	e882b9fc <SendSPSRegistrationForOwner+0x2d6>
                        rr->SendRNow = mDNSInterfaceMark;   // mark it now
    e882ba16:	000bb783          	ld	a5,0(s7)
    e882ba1a:	0cfa3c23          	sd	a5,216(s4)
                        if (mDNSOpaque16IsZero(rr->updateid))
    e882ba1e:	156a5783          	lhu	a5,342(s4)
    e882ba22:	e781                	bnez	a5,e882ba2a <SendSPSRegistrationForOwner+0x304>
                            rr->updateid = msgid;
    e882ba24:	159a1b23          	sh	s9,342(s4)
    e882ba28:	bfd1                	j	e882b9fc <SendSPSRegistrationForOwner+0x2d6>
    e882ba2a:	8cbe                	mv	s9,a5
    e882ba2c:	bfc1                	j	e882b9fc <SendSPSRegistrationForOwner+0x2d6>
            if (rr->SendRNow || mDNSUpdateOkToSend(m, rr, intf, scopeid))
    e882ba2e:	0d8c3783          	ld	a5,216(s8)
    e882ba32:	cb99                	beqz	a5,e882ba48 <SendSPSRegistrationForOwner+0x322>
                if (mDNSPlatformMemSame(owner, &rr->WakeUp, sizeof(*owner)))
    e882ba34:	4651                	li	a2,20
    e882ba36:	07cc0593          	addi	a1,s8,124
    e882ba3a:	854e                	mv	a0,s3
    e882ba3c:	06c040ef          	jal	ra,e882faa8 <mDNSPlatformMemSame>
    e882ba40:	ed25                	bnez	a0,e882bab8 <SendSPSRegistrationForOwner+0x392>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882ba42:	000c3c03          	ld	s8,0(s8)
    e882ba46:	bd71                	j	e882b8e2 <SendSPSRegistrationForOwner+0x1bc>
    if (AuthRecord_uDNS(rr) || (rr->AuthFlags & AuthFlagsWakeOnly) || mDNSOpaque16IsZero(rr->updateid) ||
    e882ba48:	00077797          	auipc	a5,0x77
    e882ba4c:	31878793          	addi	a5,a5,792 # e88a2d60 <mDNSInterface_Any>
    e882ba50:	020c3703          	ld	a4,32(s8)
    e882ba54:	639c                	ld	a5,0(a5)
    e882ba56:	04f70863          	beq	a4,a5,e882baa6 <SendSPSRegistrationForOwner+0x380>
    e882ba5a:	07bc4783          	lbu	a5,123(s8)
    e882ba5e:	8b85                	andi	a5,a5,1
    e882ba60:	f3ed                	bnez	a5,e882ba42 <SendSPSRegistrationForOwner+0x31c>
    e882ba62:	156c5783          	lhu	a5,342(s8)
    e882ba66:	dff1                	beqz	a5,e882ba42 <SendSPSRegistrationForOwner+0x31c>
        m->timenow - (rr->LastAPTime + rr->ThisAPInterval) < 0)
    e882ba68:	114c2783          	lw	a5,276(s8)
    e882ba6c:	110c2703          	lw	a4,272(s8)
    e882ba70:	9f3d                	addw	a4,a4,a5
    e882ba72:	24042783          	lw	a5,576(s0)
    if (AuthRecord_uDNS(rr) || (rr->AuthFlags & AuthFlagsWakeOnly) || mDNSOpaque16IsZero(rr->updateid) ||
    e882ba76:	9f99                	subw	a5,a5,a4
    e882ba78:	fc07c5e3          	bltz	a5,e882ba42 <SendSPSRegistrationForOwner+0x31c>
    if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882ba7c:	6762                	ld	a4,24(sp)
    e882ba7e:	03f00793          	li	a5,63
    e882ba82:	00e7e863          	bltu	a5,a4,e882ba92 <SendSPSRegistrationForOwner+0x36c>
    e882ba86:	77c6                	ld	a5,112(sp)
    e882ba88:	7706                	ld	a4,96(sp)
    e882ba8a:	97e2                	add	a5,a5,s8
    e882ba8c:	479c                	lw	a5,8(a5)
    e882ba8e:	8ff9                	and	a5,a5,a4
    e882ba90:	dbcd                	beqz	a5,e882ba42 <SendSPSRegistrationForOwner+0x31c>
        (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == intf->InterfaceID))
    e882ba92:	020c3783          	ld	a5,32(s8)
    if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882ba96:	dfd9                	beqz	a5,e882ba34 <SendSPSRegistrationForOwner+0x30e>
        (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == intf->InterfaceID))
    e882ba98:	6709                	lui	a4,0x2
    e882ba9a:	9726                	add	a4,a4,s1
    e882ba9c:	9f073703          	ld	a4,-1552(a4) # 19f0 <memcmp-0xe87fe610>
    e882baa0:	fae791e3          	bne	a5,a4,e882ba42 <SendSPSRegistrationForOwner+0x31c>
    e882baa4:	bf41                	j	e882ba34 <SendSPSRegistrationForOwner+0x30e>
    if (AuthRecord_uDNS(rr) || (rr->AuthFlags & AuthFlagsWakeOnly) || mDNSOpaque16IsZero(rr->updateid) ||
    e882baa6:	07ac4783          	lbu	a5,122(s8)
    e882baaa:	fbc5                	bnez	a5,e882ba5a <SendSPSRegistrationForOwner+0x334>
    e882baac:	028c3503          	ld	a0,40(s8)
    e882bab0:	df2e70ef          	jal	ra,e88130a2 <IsLocalDomain>
    e882bab4:	f15d                	bnez	a0,e882ba5a <SendSPSRegistrationForOwner+0x334>
    e882bab6:	b771                	j	e882ba42 <SendSPSRegistrationForOwner+0x31c>
                    const mDNSu8 *const limit = m->omsg.data + (m->omsg.h.mDNS_numUpdates ? NormalMaxDNSMessageData : AbsoluteMaxDNSMessageData) - optspace;
    e882bab8:	014407b3          	add	a5,s0,s4
    e882babc:	1e87d783          	lhu	a5,488(a5)
    e882bac0:	5a000b93          	li	s7,1440
    e882bac4:	e781                	bnez	a5,e882bacc <SendSPSRegistrationForOwner+0x3a6>
    e882bac6:	6789                	lui	a5,0x2
    e882bac8:	2ec78b93          	addi	s7,a5,748 # 22ec <memcmp-0xe87fdd14>
    e882bacc:	67a6                	ld	a5,72(sp)
    e882bace:	40fb87b3          	sub	a5,s7,a5
    e882bad2:	f83e                	sd	a5,48(sp)
    e882bad4:	7782                	ld	a5,32(sp)
    e882bad6:	7742                	ld	a4,48(sp)
    e882bad8:	00e78db3          	add	s11,a5,a4
                    if (mDNS_KeepaliveRecord(&rr->resrec) && (UpdateKeepaliveRData(m, rr, intf, mDNSfalse, mDNSNULL) != mStatus_NoError))
    e882badc:	00ac5703          	lhu	a4,10(s8)
    e882bae0:	47a9                	li	a5,10
    e882bae2:	04f71b63          	bne	a4,a5,e882bb38 <SendSPSRegistrationForOwner+0x412>
    e882bae6:	028c3503          	ld	a0,40(s8)
    e882baea:	4781                	li	a5,0
    e882baec:	00054703          	lbu	a4,0(a0) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    e882baf0:	c319                	beqz	a4,e882baf6 <SendSPSRegistrationForOwner+0x3d0>
    e882baf2:	00170793          	addi	a5,a4,1
    e882baf6:	0007e597          	auipc	a1,0x7e
    e882bafa:	55a58593          	addi	a1,a1,1370 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    e882bafe:	953e                	add	a0,a0,a5
    e882bb00:	ce6e70ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e882bb04:	c915                	beqz	a0,e882bb38 <SendSPSRegistrationForOwner+0x412>
    e882bb06:	4701                	li	a4,0
    e882bb08:	4681                	li	a3,0
    e882bb0a:	8626                	mv	a2,s1
    e882bb0c:	85e2                	mv	a1,s8
    e882bb0e:	8522                	mv	a0,s0
    e882bb10:	db1f40ef          	jal	ra,e88208c0 <UpdateKeepaliveRData>
    e882bb14:	c115                	beqz	a0,e882bb38 <SendSPSRegistrationForOwner+0x412>
                        if (scopeid < (sizeof(rr->updateIntID) * mDNSNBBY))
    e882bb16:	6762                	ld	a4,24(sp)
    e882bb18:	03f00793          	li	a5,63
    e882bb1c:	00e7eb63          	bltu	a5,a4,e882bb32 <SendSPSRegistrationForOwner+0x40c>
                            bit_clr_opaque64(rr->updateIntID, scopeid);
    e882bb20:	67c6                	ld	a5,80(sp)
    e882bb22:	66e6                	ld	a3,88(sp)
    e882bb24:	04fc170b          	addsl	a4,s8,a5,2
    e882bb28:	15872783          	lw	a5,344(a4)
    e882bb2c:	8ff5                	and	a5,a5,a3
    e882bb2e:	14f72c23          	sw	a5,344(a4)
                        rr->SendRNow = mDNSNULL;
    e882bb32:	0c0c3c23          	sd	zero,216(s8)
                        continue;
    e882bb36:	b731                	j	e882ba42 <SendSPSRegistrationForOwner+0x31c>
                    if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e882bb38:	008c4783          	lbu	a5,8(s8)
    e882bb3c:	0327f793          	andi	a5,a5,50
    e882bb40:	c799                	beqz	a5,e882bb4e <SendSPSRegistrationForOwner+0x428>
                        rr->resrec.rrclass |= kDNSClass_UniqueRRSet;    // Temporarily set the 'unique' bit so PutResourceRecord will set it
    e882bb42:	00cc5783          	lhu	a5,12(s8)
    e882bb46:	7761                	lui	a4,0xffff8
    e882bb48:	8fd9                	or	a5,a5,a4
    e882bb4a:	00fc1623          	sh	a5,12(s8)
                    newptr = PutResourceRecordTTLWithLimit(&m->omsg, p, &m->omsg.h.mDNS_numUpdates, &rr->resrec, rr->resrec.rroriginalttl, limit);
    e882bb4e:	010c2703          	lw	a4,16(s8)
    e882bb52:	7666                	ld	a2,120(sp)
    e882bb54:	008c0b93          	addi	s7,s8,8
    e882bb58:	87ee                	mv	a5,s11
    e882bb5a:	86de                	mv	a3,s7
    e882bb5c:	85ea                	mv	a1,s10
    e882bb5e:	855a                	mv	a0,s6
    e882bb60:	ae1ea0ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e882bb64:	8daa                	mv	s11,a0
                    rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;       // Make sure to clear 'unique' bit back to normal state
    e882bb66:	00cc5783          	lhu	a5,12(s8)
    e882bb6a:	3807b78b          	extu	a5,a5,14,0
    e882bb6e:	00fc1623          	sh	a5,12(s8)
                    if (!newptr)
    e882bb72:	000a9797          	auipc	a5,0xa9
    e882bb76:	f0278793          	addi	a5,a5,-254 # e88d4a74 <mDNS_LoggingEnabled>
                        LogSPS("SendSPSRegistration put %s FAILED %d/%d %s", intf->ifname, p - m->omsg.data, limit - m->omsg.data, ARDisplayString(m, rr));
    e882bb7a:	439c                	lw	a5,0(a5)
                    if (!newptr)
    e882bb7c:	e915                	bnez	a0,e882bbb0 <SendSPSRegistrationForOwner+0x48a>
                        LogSPS("SendSPSRegistration put %s FAILED %d/%d %s", intf->ifname, p - m->omsg.data, limit - m->omsg.data, ARDisplayString(m, rr));
    e882bb7e:	ec0782e3          	beqz	a5,e882ba42 <SendSPSRegistrationForOwner+0x31c>
    e882bb82:	030c3583          	ld	a1,48(s8)
    e882bb86:	7782                	ld	a5,32(sp)
    e882bb88:	03b40613          	addi	a2,s0,59
    e882bb8c:	0591                	addi	a1,a1,4
    e882bb8e:	855e                	mv	a0,s7
    e882bb90:	40fd0db3          	sub	s11,s10,a5
    e882bb94:	e81ea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882bb98:	87aa                	mv	a5,a0
    e882bb9a:	7742                	ld	a4,48(sp)
    e882bb9c:	86ee                	mv	a3,s11
    e882bb9e:	8656                	mv	a2,s5
    e882bba0:	0007b597          	auipc	a1,0x7b
    e882bba4:	30858593          	addi	a1,a1,776 # e88a6ea8 <end.8789+0x3800>
    e882bba8:	4509                	li	a0,2
    e882bbaa:	103030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882bbae:	bd51                	j	e882ba42 <SendSPSRegistrationForOwner+0x31c>
                        LogSPS("SendSPSRegistration put %s 0x%x 0x%x (updateid %d)  %s", intf->ifname, rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(m->omsg.h.id), ARDisplayString(m, rr));
    e882bbb0:	c7a9                	beqz	a5,e882bbfa <SendSPSRegistrationForOwner+0x4d4>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e882bbb2:	01440633          	add	a2,s0,s4
    e882bbb6:	1e064783          	lbu	a5,480(a2)
    e882bbba:	1e164603          	lbu	a2,481(a2)
    e882bbbe:	030c3583          	ld	a1,48(s8)
    e882bbc2:	15cc2683          	lw	a3,348(s8)
    e882bbc6:	158c2703          	lw	a4,344(s8)
    e882bbca:	0087979b          	slliw	a5,a5,0x8
    e882bbce:	8fd1                	or	a5,a5,a2
    e882bbd0:	0591                	addi	a1,a1,4
    e882bbd2:	03b40613          	addi	a2,s0,59
    e882bbd6:	855e                	mv	a0,s7
    e882bbd8:	e536                	sd	a3,136(sp)
    e882bbda:	e13a                	sd	a4,128(sp)
    e882bbdc:	f83e                	sd	a5,48(sp)
    e882bbde:	e37ea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882bbe2:	882a                	mv	a6,a0
    e882bbe4:	77c2                	ld	a5,48(sp)
    e882bbe6:	670a                	ld	a4,128(sp)
    e882bbe8:	66aa                	ld	a3,136(sp)
    e882bbea:	8656                	mv	a2,s5
    e882bbec:	0007b597          	auipc	a1,0x7b
    e882bbf0:	2ec58593          	addi	a1,a1,748 # e88a6ed8 <end.8789+0x3830>
    e882bbf4:	4509                	li	a0,2
    e882bbf6:	0b7030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        rr->ThisAPInterval = mDNSPlatformOneSecond;
    e882bbfa:	000a9797          	auipc	a5,0xa9
    e882bbfe:	e8678793          	addi	a5,a5,-378 # e88d4a80 <mDNSPlatformOneSecond>
    e882bc02:	439c                	lw	a5,0(a5)
                        rr->SendRNow       = mDNSNULL;
    e882bc04:	0c0c3c23          	sd	zero,216(s8)
                        rr->ThisAPInterval = mDNSPlatformOneSecond;
    e882bc08:	10fc2823          	sw	a5,272(s8)
                        rr->LastAPTime     = m->timenow;
    e882bc0c:	24042783          	lw	a5,576(s0)
    e882bc10:	10fc2a23          	sw	a5,276(s8)
                        if (mDNSOpaque16IsZero(rr->updateid)) LogMsg("SendSPSRegistration: ERROR!! rr %s updateid is zero", ARDisplayString(m, rr));
    e882bc14:	156c5783          	lhu	a5,342(s8)
    e882bc18:	e38d                	bnez	a5,e882bc3a <SendSPSRegistrationForOwner+0x514>
    e882bc1a:	030c3583          	ld	a1,48(s8)
    e882bc1e:	03b40613          	addi	a2,s0,59
    e882bc22:	855e                	mv	a0,s7
    e882bc24:	0591                	addi	a1,a1,4
    e882bc26:	defea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882bc2a:	862a                	mv	a2,a0
    e882bc2c:	0007b597          	auipc	a1,0x7b
    e882bc30:	2e458593          	addi	a1,a1,740 # e88a6f10 <end.8789+0x3868>
    e882bc34:	4501                	li	a0,0
    e882bc36:	077030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        if (m->NextScheduledResponse - (rr->LastAPTime + rr->ThisAPInterval) >= 0)
    e882bc3a:	110c2703          	lw	a4,272(s8)
    e882bc3e:	114c2783          	lw	a5,276(s8)
    e882bc42:	8d6e                	mv	s10,s11
    e882bc44:	9fb9                	addw	a5,a5,a4
    e882bc46:	26042703          	lw	a4,608(s0)
    e882bc4a:	9f1d                	subw	a4,a4,a5
    e882bc4c:	de074be3          	bltz	a4,e882ba42 <SendSPSRegistrationForOwner+0x31c>
                            m->NextScheduledResponse = (rr->LastAPTime + rr->ThisAPInterval);
    e882bc50:	26f42023          	sw	a5,608(s0)
    e882bc54:	b3fd                	j	e882ba42 <SendSPSRegistrationForOwner+0x31c>
                opt.resrec.rdata->u.opt[1].u.owner = *owner;
    e882bc56:	0009b683          	ld	a3,0(s3)
    e882bc5a:	f214                	sd	a3,32(a2)
    e882bc5c:	0089b683          	ld	a3,8(s3)
    e882bc60:	f614                	sd	a3,40(a2)
    e882bc62:	0109a683          	lw	a3,16(s3)
    e882bc66:	da14                	sw	a3,48(a2)
                opt.resrec.rdata->u.opt[1].opt     = kDNSOpt_Owner;
    e882bc68:	678e                	ld	a5,192(sp)
    e882bc6a:	00e79e23          	sh	a4,28(a5)
                opt.resrec.rdata->u.opt[1].optlen  = DNSOpt_Owner_Space(&owner->HMAC, &owner->IMAC) - 4;
    e882bc6e:	0029d683          	lhu	a3,2(s3)
    e882bc72:	0089d703          	lhu	a4,8(s3)
    e882bc76:	47b9                	li	a5,14
    e882bc78:	00e69f63          	bne	a3,a4,e882bc96 <SendSPSRegistrationForOwner+0x570>
    e882bc7c:	0049d683          	lhu	a3,4(s3)
    e882bc80:	00a9d703          	lhu	a4,10(s3)
    e882bc84:	00e69963          	bne	a3,a4,e882bc96 <SendSPSRegistrationForOwner+0x570>
    e882bc88:	0069d683          	lhu	a3,6(s3)
    e882bc8c:	00c9d703          	lhu	a4,12(s3)
    e882bc90:	00e69363          	bne	a3,a4,e882bc96 <SendSPSRegistrationForOwner+0x570>
    e882bc94:	47a1                	li	a5,8
    e882bc96:	670e                	ld	a4,192(sp)
    e882bc98:	00f71f23          	sh	a5,30(a4) # ffffffffffff801e <__DRAM0_INF_BASE+0xffffffff0000801e>
    e882bc9c:	b975                	j	e882b958 <SendSPSRegistrationForOwner+0x232>
                LogSPS("SendSPSRegistration: Sending Update %s %d (%d) id %5d with %d records %d bytes to %#a:%d", intf->ifname, intf->NextSPSAttempt, sps,
    e882bc9e:	000ba783          	lw	a5,0(s7)
    e882bca2:	cba1                	beqz	a5,e882bcf2 <SendSPSRegistrationForOwner+0x5cc>
    e882bca4:	7762                	ld	a4,56(sp)
    e882bca6:	7562                	ld	a0,56(sp)
    e882bca8:	01440633          	add	a2,s0,s4
    e882bcac:	00074703          	lbu	a4,0(a4)
    e882bcb0:	00154503          	lbu	a0,1(a0)
    e882bcb4:	1e164583          	lbu	a1,481(a2)
    e882bcb8:	0087171b          	slliw	a4,a4,0x8
    e882bcbc:	8f49                	or	a4,a4,a0
    e882bcbe:	1e064783          	lbu	a5,480(a2)
    e882bcc2:	e43a                	sd	a4,8(sp)
    e882bcc4:	6706                	ld	a4,64(sp)
    e882bcc6:	6685                	lui	a3,0x1
    e882bcc8:	96a6                	add	a3,a3,s1
    e882bcca:	e03a                	sd	a4,0(sp)
    e882bccc:	7702                	ld	a4,32(sp)
    e882bcce:	1e865803          	lhu	a6,488(a2)
    e882bcd2:	db46a683          	lw	a3,-588(a3) # db4 <memcmp-0xe87ff24c>
    e882bcd6:	0087979b          	slliw	a5,a5,0x8
    e882bcda:	40ed08b3          	sub	a7,s10,a4
    e882bcde:	8fcd                	or	a5,a5,a1
    e882bce0:	874a                	mv	a4,s2
    e882bce2:	8656                	mv	a2,s5
    e882bce4:	0007b597          	auipc	a1,0x7b
    e882bce8:	2c458593          	addi	a1,a1,708 # e88a6fa8 <end.8789+0x3900>
    e882bcec:	4509                	li	a0,2
    e882bcee:	7be030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                err = mDNSSendDNSMessage(m, &m->omsg, p, intf->InterfaceID, mDNSNULL, &intf->SPSAddr[sps], intf->SPSPort[sps], mDNSNULL, mDNSNULL, mDNSfalse);
    e882bcf2:	6d090793          	addi	a5,s2,1744
    e882bcf6:	02f4978b          	addsl	a5,s1,a5,1
    e882bcfa:	6709                	lui	a4,0x2
    e882bcfc:	00e486b3          	add	a3,s1,a4
    e882bd00:	e402                	sd	zero,8(sp)
    e882bd02:	e002                	sd	zero,0(sp)
    e882bd04:	00c7d803          	lhu	a6,12(a5)
    e882bd08:	9f06b683          	ld	a3,-1552(a3)
    e882bd0c:	6786                	ld	a5,64(sp)
    e882bd0e:	866a                	mv	a2,s10
    e882bd10:	4881                	li	a7,0
    e882bd12:	4701                	li	a4,0
    e882bd14:	85da                	mv	a1,s6
    e882bd16:	8522                	mv	a0,s0
    e882bd18:	99beb0ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
    e882bd1c:	862a                	mv	a2,a0
                if (err) LogSPS("SendSPSRegistration: mDNSSendDNSMessage err %d", err);
    e882bd1e:	b8050be3          	beqz	a0,e882b8b4 <SendSPSRegistrationForOwner+0x18e>
    e882bd22:	000ba783          	lw	a5,0(s7)
    e882bd26:	cb81                	beqz	a5,e882bd36 <SendSPSRegistrationForOwner+0x610>
    e882bd28:	0007b597          	auipc	a1,0x7b
    e882bd2c:	2e058593          	addi	a1,a1,736 # e88a7008 <end.8789+0x3960>
    e882bd30:	4509                	li	a0,2
    e882bd32:	77a030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (err && intf->SPSAddr[sps].type == mDNSAddrType_IPv4 && intf->NetWakeResolve[sps].ThisQInterval == -1)
    e882bd36:	47d1                	li	a5,20
    e882bd38:	8726                	mv	a4,s1
    e882bd3a:	20f9170b          	mula	a4,s2,a5
    e882bd3e:	6785                	lui	a5,0x1
    e882bd40:	97ba                	add	a5,a5,a4
    e882bd42:	d707a703          	lw	a4,-656(a5) # d70 <memcmp-0xe87ff290>
    e882bd46:	4791                	li	a5,4
    e882bd48:	b6f716e3          	bne	a4,a5,e882b8b4 <SendSPSRegistrationForOwner+0x18e>
    e882bd4c:	35800b13          	li	s6,856
    e882bd50:	03690b33          	mul	s6,s2,s6
    e882bd54:	016487b3          	add	a5,s1,s6
    e882bd58:	37c7a703          	lw	a4,892(a5)
    e882bd5c:	57fd                	li	a5,-1
    e882bd5e:	b4f71be3          	bne	a4,a5,e882b8b4 <SendSPSRegistrationForOwner+0x18e>
                    LogSPS("SendSPSRegistration %d %##s failed to send to IPv4 address; will try IPv6 instead", sps, intf->NetWakeResolve[sps].qname.c);
    e882bd62:	000da783          	lw	a5,0(s11)
    e882bd66:	cf81                	beqz	a5,e882bd7e <SendSPSRegistrationForOwner+0x658>
    e882bd68:	57cb0693          	addi	a3,s6,1404
    e882bd6c:	96a6                	add	a3,a3,s1
    e882bd6e:	864a                	mv	a2,s2
    e882bd70:	0007b597          	auipc	a1,0x7b
    e882bd74:	2c858593          	addi	a1,a1,712 # e88a7038 <end.8789+0x3990>
    e882bd78:	4509                	li	a0,2
    e882bd7a:	732030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    intf->NetWakeResolve[sps].qtype = kDNSType_AAAA;
    e882bd7e:	35800793          	li	a5,856
    e882bd82:	8726                	mv	a4,s1
    e882bd84:	20f9170b          	mula	a4,s2,a5
                    mDNS_StartQuery_internal(m, &intf->NetWakeResolve[sps]);
    e882bd88:	368b0593          	addi	a1,s6,872
    e882bd8c:	95a6                	add	a1,a1,s1
    e882bd8e:	8522                	mv	a0,s0
                    intf->NetWakeResolve[sps].qtype = kDNSType_AAAA;
    e882bd90:	87ba                	mv	a5,a4
    e882bd92:	4771                	li	a4,28
    e882bd94:	66e79e23          	sh	a4,1660(a5)
                    mDNS_StartQuery_internal(m, &intf->NetWakeResolve[sps]);
    e882bd98:	e56f90ef          	jal	ra,e88253ee <mDNS_StartQuery_internal>
}
    e882bd9c:	50813083          	ld	ra,1288(sp)
    e882bda0:	50013403          	ld	s0,1280(sp)
    e882bda4:	4f813483          	ld	s1,1272(sp)
    e882bda8:	4f013903          	ld	s2,1264(sp)
    e882bdac:	4e813983          	ld	s3,1256(sp)
    e882bdb0:	4e013a03          	ld	s4,1248(sp)
    e882bdb4:	4d813a83          	ld	s5,1240(sp)
    e882bdb8:	4d013b03          	ld	s6,1232(sp)
    e882bdbc:	4c813b83          	ld	s7,1224(sp)
    e882bdc0:	4c013c03          	ld	s8,1216(sp)
    e882bdc4:	4b813c83          	ld	s9,1208(sp)
    e882bdc8:	4b013d03          	ld	s10,1200(sp)
    e882bdcc:	4a813d83          	ld	s11,1192(sp)
    e882bdd0:	51010113          	addi	sp,sp,1296
    e882bdd4:	8082                	ret
    intf->NextSPSAttemptTime = m->timenow + mDNSPlatformOneSecond * 10;     // If successful, update NextSPSAttemptTime
    e882bdd6:	000a9717          	auipc	a4,0xa9
    e882bdda:	caa70713          	addi	a4,a4,-854 # e88d4a80 <mDNSPlatformOneSecond>
    e882bdde:	4314                	lw	a3,0(a4)
    e882bde0:	24042703          	lw	a4,576(s0)
    e882bde4:	4629                	li	a2,10
    e882bde6:	6785                	lui	a5,0x1
    e882bde8:	24d6170b          	mulaw	a4,a2,a3
    e882bdec:	97a6                	add	a5,a5,s1
    e882bdee:	dae7ac23          	sw	a4,-584(a5) # db8 <memcmp-0xe87ff248>
    e882bdf2:	b42d                	j	e882b81c <SendSPSRegistrationForOwner+0xf6>

00000000e882bdf4 <SendSPSRegistration>:
    OwnerOptData owner = zeroOwner;
    e882bdf4:	00077797          	auipc	a5,0x77
    e882bdf8:	7d478793          	addi	a5,a5,2004 # e88a35c8 <zeroOwner>
    e882bdfc:	6398                	ld	a4,0(a5)
{
    e882bdfe:	711d                	addi	sp,sp,-96
    SendSPSRegistrationForOwner(m, intf, id, &owner);
    e882be00:	0034                	addi	a3,sp,8
    OwnerOptData owner = zeroOwner;
    e882be02:	e43a                	sd	a4,8(sp)
    e882be04:	6798                	ld	a4,8(a5)
    e882be06:	4b9c                	lw	a5,16(a5)
{
    e882be08:	e8a2                	sd	s0,80(sp)
    e882be0a:	e0ca                	sd	s2,64(sp)
    e882be0c:	f852                	sd	s4,48(sp)
    e882be0e:	f456                	sd	s5,40(sp)
    e882be10:	f05a                	sd	s6,32(sp)
    e882be12:	8a2a                	mv	s4,a0
    OwnerOptData owner = zeroOwner;
    e882be14:	cc3e                	sw	a5,24(sp)
{
    e882be16:	ec86                	sd	ra,88(sp)
    e882be18:	e4a6                	sd	s1,72(sp)
    e882be1a:	fc4e                	sd	s3,56(sp)
    e882be1c:	8aae                	mv	s5,a1
    e882be1e:	8b32                	mv	s6,a2
    OwnerOptData owner = zeroOwner;
    e882be20:	e83a                	sd	a4,16(sp)
    SendSPSRegistrationForOwner(m, intf, id, &owner);
    e882be22:	905ff0ef          	jal	ra,e882b726 <SendSPSRegistrationForOwner>
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882be26:	678d                	lui	a5,0x3
    e882be28:	97d2                	add	a5,a5,s4
    e882be2a:	1b87b903          	ld	s2,440(a5) # 31b8 <memcmp-0xe87fce48>
        if (!mDNSPlatformMemSame(&owner, &ar->WakeUp, sizeof(owner)) && RecordIsFirstOccurrenceOfOwner(m, ar))
    e882be2e:	843e                	mv	s0,a5
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882be30:	00091c63          	bnez	s2,e882be48 <SendSPSRegistration+0x54>
}
    e882be34:	60e6                	ld	ra,88(sp)
    e882be36:	6446                	ld	s0,80(sp)
    e882be38:	64a6                	ld	s1,72(sp)
    e882be3a:	6906                	ld	s2,64(sp)
    e882be3c:	79e2                	ld	s3,56(sp)
    e882be3e:	7a42                	ld	s4,48(sp)
    e882be40:	7aa2                	ld	s5,40(sp)
    e882be42:	7b02                	ld	s6,32(sp)
    e882be44:	6125                	addi	sp,sp,96
    e882be46:	8082                	ret
        if (!mDNSPlatformMemSame(&owner, &ar->WakeUp, sizeof(owner)) && RecordIsFirstOccurrenceOfOwner(m, ar))
    e882be48:	07c90493          	addi	s1,s2,124
    e882be4c:	4651                	li	a2,20
    e882be4e:	85a6                	mv	a1,s1
    e882be50:	0028                	addi	a0,sp,8
    e882be52:	457030ef          	jal	ra,e882faa8 <mDNSPlatformMemSame>
    e882be56:	e11d                	bnez	a0,e882be7c <SendSPSRegistration+0x88>
    e882be58:	1b843983          	ld	s3,440(s0)
    for (ar = m->ResourceRecords; ar && ar != rr; ar=ar->next)
    e882be5c:	00098463          	beqz	s3,e882be64 <SendSPSRegistration+0x70>
    e882be60:	03391163          	bne	s2,s3,e882be82 <SendSPSRegistration+0x8e>
            owner = ar->WakeUp;
    e882be64:	609c                	ld	a5,0(s1)
            SendSPSRegistrationForOwner(m, intf, id, &owner);
    e882be66:	0034                	addi	a3,sp,8
    e882be68:	865a                	mv	a2,s6
            owner = ar->WakeUp;
    e882be6a:	e43e                	sd	a5,8(sp)
    e882be6c:	649c                	ld	a5,8(s1)
            SendSPSRegistrationForOwner(m, intf, id, &owner);
    e882be6e:	85d6                	mv	a1,s5
    e882be70:	8552                	mv	a0,s4
            owner = ar->WakeUp;
    e882be72:	e83e                	sd	a5,16(sp)
    e882be74:	489c                	lw	a5,16(s1)
    e882be76:	cc3e                	sw	a5,24(sp)
            SendSPSRegistrationForOwner(m, intf, id, &owner);
    e882be78:	8afff0ef          	jal	ra,e882b726 <SendSPSRegistrationForOwner>
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882be7c:	00093903          	ld	s2,0(s2)
    e882be80:	bf45                	j	e882be30 <SendSPSRegistration+0x3c>
        if (mDNSPlatformMemSame(&rr->WakeUp, &ar->WakeUp, sizeof(rr->WakeUp))) return mDNSfalse;
    e882be82:	4651                	li	a2,20
    e882be84:	07c98593          	addi	a1,s3,124
    e882be88:	8526                	mv	a0,s1
    e882be8a:	41f030ef          	jal	ra,e882faa8 <mDNSPlatformMemSame>
    e882be8e:	f57d                	bnez	a0,e882be7c <SendSPSRegistration+0x88>
    for (ar = m->ResourceRecords; ar && ar != rr; ar=ar->next)
    e882be90:	0009b983          	ld	s3,0(s3)
    e882be94:	b7e1                	j	e882be5c <SendSPSRegistration+0x68>

00000000e882be96 <SendResponses>:
{
    e882be96:	b0010113          	addi	sp,sp,-1280
    e882be9a:	4f213023          	sd	s2,1248(sp)
    const NetworkInterfaceInfo *intf = GetFirstActiveInterface(m->HostInterfaces);
    e882be9e:	690d                	lui	s2,0x3
    e882bea0:	992a                	add	s2,s2,a0
{
    e882bea2:	4e813823          	sd	s0,1264(sp)
    e882bea6:	4e913423          	sd	s1,1256(sp)
    e882beaa:	842a                	mv	s0,a0
    e882beac:	4e113c23          	sd	ra,1272(sp)
    e882beb0:	4d313c23          	sd	s3,1240(sp)
    e882beb4:	4d413823          	sd	s4,1232(sp)
    e882beb8:	4d513423          	sd	s5,1224(sp)
    e882bebc:	4d613023          	sd	s6,1216(sp)
    e882bec0:	4b713c23          	sd	s7,1208(sp)
    e882bec4:	4b813823          	sd	s8,1200(sp)
    e882bec8:	4b913423          	sd	s9,1192(sp)
    e882becc:	4ba13023          	sd	s10,1184(sp)
    e882bed0:	49b13c23          	sd	s11,1176(sp)
    const NetworkInterfaceInfo *intf = GetFirstActiveInterface(m->HostInterfaces);
    e882bed4:	1e093503          	ld	a0,480(s2) # 31e0 <memcmp-0xe87fce20>
    e882bed8:	fa5e60ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882bedc:	84aa                	mv	s1,a0
    m->NextScheduledResponse = m->timenow + FutureTime;
    e882bede:	24042783          	lw	a5,576(s0)
    e882bee2:	38000737          	lui	a4,0x38000
    e882bee6:	9fb9                	addw	a5,a5,a4
    if (m->SleepState == SleepState_Transferring) RetrySPSRegistrations(m);
    e882bee8:	28544703          	lbu	a4,645(s0)
    m->NextScheduledResponse = m->timenow + FutureTime;
    e882beec:	26f42023          	sw	a5,608(s0)
    if (m->SleepState == SleepState_Transferring) RetrySPSRegistrations(m);
    e882bef0:	4785                	li	a5,1
    e882bef2:	04f70763          	beq	a4,a5,e882bf40 <SendResponses+0xaa>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882bef6:	678d                	lui	a5,0x3
    e882bef8:	97a2                	add	a5,a5,s0
    e882befa:	1b87b903          	ld	s2,440(a5) # 31b8 <memcmp-0xe87fce48>
            mDNSAddr v4 = { mDNSAddrType_IPv4, {{{0}}} };
    e882befe:	4991                	li	s3,4
            mDNSAddr v6 = { mDNSAddrType_IPv6, {{{0}}} };
    e882bf00:	4a19                	li	s4,6
                LogMsg("SendResponses: ERROR: rr->ImmedUnicast still set: %s", ARDisplayString(m, rr));
    e882bf02:	03b40a93          	addi	s5,s0,59
    e882bf06:	0007bb17          	auipc	s6,0x7b
    e882bf0a:	c12b0b13          	addi	s6,s6,-1006 # e88a6b18 <end.8789+0x3470>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882bf0e:	1c091b63          	bnez	s2,e882c0e4 <SendResponses+0x24e>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882bf12:	678d                	lui	a5,0x3
    e882bf14:	97a2                	add	a5,a5,s0
    e882bf16:	1b87bc83          	ld	s9,440(a5) # 31b8 <memcmp-0xe87fce48>
                            mDNSSameEthAddress(&r2->WakeUp.IMAC, &rr->WakeUp.IMAC) && !mDNSSameEthAddress(&zeroEthAddr, &r2->WakeUp.HMAC))
    e882bf1a:	5a7d                	li	s4,-1
    mDNSs32 maxExistingAnnounceInterval = 0;
    e882bf1c:	4981                	li	s3,0
    else rr->NextUpdateCredit = NonZeroTime(rr->NextUpdateCredit + kUpdateCreditRefreshInterval);
    e882bf1e:	000a9b97          	auipc	s7,0xa9
    e882bf22:	b62b8b93          	addi	s7,s7,-1182 # e88d4a80 <mDNSPlatformOneSecond>
                    if (!mDNSSameEthAddress(&zeroEthAddr, &rr->WakeUp.HMAC))
    e882bf26:	00077917          	auipc	s2,0x77
    e882bf2a:	67290913          	addi	s2,s2,1650 # e88a3598 <zeroEthAddr>
                            mDNSSameEthAddress(&r2->WakeUp.IMAC, &rr->WakeUp.IMAC) && !mDNSSameEthAddress(&zeroEthAddr, &r2->WakeUp.HMAC))
    e882bf2e:	1a02                	slli	s4,s4,0x20
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882bf30:	560c8663          	beqz	s9,e882c49c <SendResponses+0x606>
    else rr->NextUpdateCredit = NonZeroTime(rr->NextUpdateCredit + kUpdateCreditRefreshInterval);
    e882bf34:	000ba783          	lw	a5,0(s7)
    e882bf38:	4699                	li	a3,6
    e882bf3a:	02f686bb          	mulw	a3,a3,a5
    e882bf3e:	a489                	j	e882c180 <SendResponses+0x2ea>
    for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882bf40:	1e093503          	ld	a0,480(s2)
        if (intf->NextSPSAttempt && intf->NextSPSAttemptTime == m->timenow + mDNSPlatformOneSecond * 10)
    e882bf44:	000a9997          	auipc	s3,0xa9
    e882bf48:	b3c98993          	addi	s3,s3,-1220 # e88d4a80 <mDNSPlatformOneSecond>
    e882bf4c:	6905                	lui	s2,0x1
    for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882bf4e:	f2fe60ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
        if (intf->NextSPSAttempt && intf->NextSPSAttemptTime == m->timenow + mDNSPlatformOneSecond * 10)
    e882bf52:	4a29                	li	s4,10
    for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882bf54:	e53d                	bnez	a0,e882bfc2 <SendResponses+0x12c>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882bf56:	698d                	lui	s3,0x3
    e882bf58:	99a2                	add	s3,s3,s0
    e882bf5a:	1b89b903          	ld	s2,440(s3) # 31b8 <memcmp-0xe87fce48>
        if (!AuthRecord_uDNS(rr) && !mDNSOpaque16IsZero(rr->updateid) && m->timenow - (rr->LastAPTime + rr->ThisAPInterval) >= 0)
    e882bf5e:	00077a97          	auipc	s5,0x77
    e882bf62:	e02a8a93          	addi	s5,s5,-510 # e88a2d60 <mDNSInterface_Any>
                    LogSPS("RetrySPSRegistrations: 0x%x 0x%x (updateid %d) %s", rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(rr->updateid), ARDisplayString(m, rr));
    e882bf66:	03b40b93          	addi	s7,s0,59
    e882bf6a:	0007bc17          	auipc	s8,0x7b
    e882bf6e:	b76c0c13          	addi	s8,s8,-1162 # e88a6ae0 <end.8789+0x3438>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882bf72:	06091f63          	bnez	s2,e882bff0 <SendResponses+0x15a>
    for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882bf76:	678d                	lui	a5,0x3
    e882bf78:	97a2                	add	a5,a5,s0
    e882bf7a:	1e07b503          	ld	a0,480(a5) # 31e0 <memcmp-0xe87fce20>
        if (intf->NextSPSAttempt && intf->NextSPSAttemptTime == m->timenow + mDNSPlatformOneSecond * 10 && intf->NextSPSAttempt < 8)
    e882bf7e:	6905                	lui	s2,0x1
    e882bf80:	000a9997          	auipc	s3,0xa9
    e882bf84:	b0098993          	addi	s3,s3,-1280 # e88d4a80 <mDNSPlatformOneSecond>
    for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882bf88:	ef5e60ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
        if (intf->NextSPSAttempt && intf->NextSPSAttemptTime == m->timenow + mDNSPlatformOneSecond * 10 && intf->NextSPSAttempt < 8)
    e882bf8c:	4a29                	li	s4,10
    e882bf8e:	4a9d                	li	s5,7
    for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882bf90:	d13d                	beqz	a0,e882bef6 <SendResponses+0x60>
        if (intf->NextSPSAttempt && intf->NextSPSAttemptTime == m->timenow + mDNSPlatformOneSecond * 10 && intf->NextSPSAttempt < 8)
    e882bf92:	01250733          	add	a4,a0,s2
    e882bf96:	db472783          	lw	a5,-588(a4) # 37fffdb4 <memcmp-0xb080024c>
    e882bf9a:	c385                	beqz	a5,e882bfba <SendResponses+0x124>
    e882bf9c:	0009a583          	lw	a1,0(s3)
    e882bfa0:	24042683          	lw	a3,576(s0)
    e882bfa4:	db872603          	lw	a2,-584(a4)
    e882bfa8:	24ba168b          	mulaw	a3,s4,a1
    e882bfac:	00d61763          	bne	a2,a3,e882bfba <SendResponses+0x124>
    e882bfb0:	00fac563          	blt	s5,a5,e882bfba <SendResponses+0x124>
            intf->NextSPSAttempt++;
    e882bfb4:	2785                	addiw	a5,a5,1
    e882bfb6:	daf72a23          	sw	a5,-588(a4)
    for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882bfba:	6108                	ld	a0,0(a0)
    e882bfbc:	ec1e60ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882bfc0:	bfc1                	j	e882bf90 <SendResponses+0xfa>
        if (intf->NextSPSAttempt && intf->NextSPSAttemptTime == m->timenow + mDNSPlatformOneSecond * 10)
    e882bfc2:	01250733          	add	a4,a0,s2
    e882bfc6:	db472783          	lw	a5,-588(a4)
    e882bfca:	cf99                	beqz	a5,e882bfe8 <SendResponses+0x152>
    e882bfcc:	0009a603          	lw	a2,0(s3)
    e882bfd0:	24042783          	lw	a5,576(s0)
    e882bfd4:	db872683          	lw	a3,-584(a4)
    e882bfd8:	24ca178b          	mulaw	a5,s4,a2
    e882bfdc:	863e                	mv	a2,a5
    e882bfde:	00d61563          	bne	a2,a3,e882bfe8 <SendResponses+0x152>
            intf->NextSPSAttemptTime++;
    e882bfe2:	2785                	addiw	a5,a5,1
    e882bfe4:	daf72c23          	sw	a5,-584(a4)
    for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882bfe8:	6108                	ld	a0,0(a0)
    e882bfea:	e93e60ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882bfee:	b79d                	j	e882bf54 <SendResponses+0xbe>
        if (!AuthRecord_uDNS(rr) && !mDNSOpaque16IsZero(rr->updateid) && m->timenow - (rr->LastAPTime + rr->ThisAPInterval) >= 0)
    e882bff0:	02093703          	ld	a4,32(s2) # 1020 <memcmp-0xe87fefe0>
    e882bff4:	000ab783          	ld	a5,0(s5)
    e882bff8:	00f70863          	beq	a4,a5,e882c008 <SendResponses+0x172>
    e882bffc:	15695783          	lhu	a5,342(s2)
    e882c000:	ef89                	bnez	a5,e882c01a <SendResponses+0x184>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c002:	00093903          	ld	s2,0(s2)
    e882c006:	b7b5                	j	e882bf72 <SendResponses+0xdc>
        if (!AuthRecord_uDNS(rr) && !mDNSOpaque16IsZero(rr->updateid) && m->timenow - (rr->LastAPTime + rr->ThisAPInterval) >= 0)
    e882c008:	07a94783          	lbu	a5,122(s2)
    e882c00c:	fbe5                	bnez	a5,e882bffc <SendResponses+0x166>
    e882c00e:	02893503          	ld	a0,40(s2)
    e882c012:	890e70ef          	jal	ra,e88130a2 <IsLocalDomain>
    e882c016:	f17d                	bnez	a0,e882bffc <SendResponses+0x166>
    e882c018:	b7ed                	j	e882c002 <SendResponses+0x16c>
    e882c01a:	11492783          	lw	a5,276(s2)
    e882c01e:	11092703          	lw	a4,272(s2)
    e882c022:	9f3d                	addw	a4,a4,a5
    e882c024:	24042783          	lw	a5,576(s0)
    e882c028:	9f99                	subw	a5,a5,a4
    e882c02a:	fc07cce3          	bltz	a5,e882c002 <SendResponses+0x16c>
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882c02e:	1e09b503          	ld	a0,480(s3)
                mDNSu32 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
    e882c032:	6a09                	lui	s4,0x2
                if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882c034:	03f00c93          	li	s9,63
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882c038:	e45e60ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882c03c:	8b2a                	mv	s6,a0
                    LogSPS("RetrySPSRegistrations: 0x%x 0x%x (updateid %d) %s", rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(rr->updateid), ARDisplayString(m, rr));
    e882c03e:	00890d13          	addi	s10,s2,8
                if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882c042:	4d85                	li	s11,1
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882c044:	fa0b0fe3          	beqz	s6,e882c002 <SendResponses+0x16c>
                mDNSu32 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
    e882c048:	014b07b3          	add	a5,s6,s4
    e882c04c:	9f07b583          	ld	a1,-1552(a5)
    e882c050:	4605                	li	a2,1
    e882c052:	8522                	mv	a0,s0
    e882c054:	159030ef          	jal	ra,e882f9ac <mDNSPlatformInterfaceIndexfromInterfaceID>
    e882c058:	2501                	sext.w	a0,a0
                if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882c05a:	00acec63          	bltu	s9,a0,e882c072 <SendResponses+0x1dc>
    e882c05e:	7c55378b          	extu	a5,a0,31,5
    e882c062:	04f9178b          	addsl	a5,s2,a5,2
    e882c066:	1587a783          	lw	a5,344(a5)
    e882c06a:	00ad953b          	sllw	a0,s11,a0
    e882c06e:	8d7d                	and	a0,a0,a5
    e882c070:	c525                	beqz	a0,e882c0d8 <SendResponses+0x242>
                    (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == intf->InterfaceID))
    e882c072:	02093783          	ld	a5,32(s2)
                if ((scopeid >= (sizeof(rr->updateIntID) * mDNSNBBY) || bit_get_opaque64(rr->updateIntID, scopeid)) &&
    e882c076:	c799                	beqz	a5,e882c084 <SendResponses+0x1ee>
                    (!rr->resrec.InterfaceID || rr->resrec.InterfaceID == intf->InterfaceID))
    e882c078:	014b0733          	add	a4,s6,s4
    e882c07c:	9f073703          	ld	a4,-1552(a4)
    e882c080:	04e79c63          	bne	a5,a4,e882c0d8 <SendResponses+0x242>
                    LogSPS("RetrySPSRegistrations: 0x%x 0x%x (updateid %d) %s", rr->updateIntID.l[1], rr->updateIntID.l[0], mDNSVal16(rr->updateid), ARDisplayString(m, rr));
    e882c084:	000a9797          	auipc	a5,0xa9
    e882c088:	9f078793          	addi	a5,a5,-1552 # e88d4a74 <mDNS_LoggingEnabled>
    e882c08c:	439c                	lw	a5,0(a5)
    e882c08e:	cf9d                	beqz	a5,e882c0cc <SendResponses+0x236>
    e882c090:	15694703          	lbu	a4,342(s2)
    e882c094:	15794783          	lbu	a5,343(s2)
    e882c098:	03093583          	ld	a1,48(s2)
    e882c09c:	15c92883          	lw	a7,348(s2)
    e882c0a0:	15892683          	lw	a3,344(s2)
    e882c0a4:	0087171b          	slliw	a4,a4,0x8
    e882c0a8:	8f5d                	or	a4,a4,a5
    e882c0aa:	865e                	mv	a2,s7
    e882c0ac:	0591                	addi	a1,a1,4
    e882c0ae:	856a                	mv	a0,s10
    e882c0b0:	f446                	sd	a7,40(sp)
    e882c0b2:	f036                	sd	a3,32(sp)
    e882c0b4:	ec3a                	sd	a4,24(sp)
    e882c0b6:	95fea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882c0ba:	87aa                	mv	a5,a0
    e882c0bc:	fd11468b          	ldd	a3,a7,(sp),2,4
    e882c0c0:	6762                	ld	a4,24(sp)
    e882c0c2:	85e2                	mv	a1,s8
    e882c0c4:	8646                	mv	a2,a7
    e882c0c6:	4509                	li	a0,2
    e882c0c8:	3e4030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    SendSPSRegistration(m, intf, rr->updateid);
    e882c0cc:	15695603          	lhu	a2,342(s2)
    e882c0d0:	85da                	mv	a1,s6
    e882c0d2:	8522                	mv	a0,s0
    e882c0d4:	d21ff0ef          	jal	ra,e882bdf4 <SendSPSRegistration>
            for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882c0d8:	000b3503          	ld	a0,0(s6)
    e882c0dc:	da1e60ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882c0e0:	8b2a                	mv	s6,a0
    e882c0e2:	b78d                	j	e882c044 <SendResponses+0x1ae>
        if (rr->ImmedUnicast)
    e882c0e4:	0bb94783          	lbu	a5,187(s2)
    e882c0e8:	cfb5                	beqz	a5,e882c164 <SendResponses+0x2ce>
            mDNSAddr v6 = { mDNSAddrType_IPv6, {{{0}}} };
    e882c0ea:	c152                	sw	s4,128(sp)
            v4.ip.v4 = rr->v4Requester;
    e882c0ec:	0e092783          	lw	a5,224(s2)
            mDNSAddr v4 = { mDNSAddrType_IPv4, {{{0}}} };
    e882c0f0:	f882                	sd	zero,112(sp)
    e882c0f2:	dc82                	sw	zero,120(sp)
    e882c0f4:	d4ce                	sw	s3,104(sp)
            v4.ip.v4 = rr->v4Requester;
    e882c0f6:	d6be                	sw	a5,108(sp)
            v6.ip.v6 = rr->v6Requester;
    e882c0f8:	0e493783          	ld	a5,228(s2)
    e882c0fc:	08f13223          	sd	a5,132(sp)
    e882c100:	0ec93783          	ld	a5,236(s2)
    e882c104:	08f13623          	sd	a5,140(sp)
            if (!mDNSIPv4AddressIsZero(rr->v4Requester)) SendDelayedUnicastResponse(m, &v4, rr->ImmedAnswer);
    e882c108:	0e092783          	lw	a5,224(s2)
    e882c10c:	c799                	beqz	a5,e882c11a <SendResponses+0x284>
    e882c10e:	0c893603          	ld	a2,200(s2)
    e882c112:	10ac                	addi	a1,sp,104
    e882c114:	8522                	mv	a0,s0
    e882c116:	d65f10ef          	jal	ra,e881de7a <SendDelayedUnicastResponse>
            if (!mDNSIPv6AddressIsZero(rr->v6Requester)) SendDelayedUnicastResponse(m, &v6, rr->ImmedAnswer);
    e882c11a:	0e892703          	lw	a4,232(s2)
    e882c11e:	0e492783          	lw	a5,228(s2)
    e882c122:	8fd9                	or	a5,a5,a4
    e882c124:	0ec92703          	lw	a4,236(s2)
    e882c128:	8fd9                	or	a5,a5,a4
    e882c12a:	0f092703          	lw	a4,240(s2)
    e882c12e:	8fd9                	or	a5,a5,a4
    e882c130:	2781                	sext.w	a5,a5
    e882c132:	c799                	beqz	a5,e882c140 <SendResponses+0x2aa>
    e882c134:	0c893603          	ld	a2,200(s2)
    e882c138:	010c                	addi	a1,sp,128
    e882c13a:	8522                	mv	a0,s0
    e882c13c:	d3ff10ef          	jal	ra,e881de7a <SendDelayedUnicastResponse>
            if (rr->ImmedUnicast)
    e882c140:	0bb94783          	lbu	a5,187(s2)
    e882c144:	c385                	beqz	a5,e882c164 <SendResponses+0x2ce>
                LogMsg("SendResponses: ERROR: rr->ImmedUnicast still set: %s", ARDisplayString(m, rr));
    e882c146:	03093583          	ld	a1,48(s2)
    e882c14a:	8656                	mv	a2,s5
    e882c14c:	00890513          	addi	a0,s2,8
    e882c150:	0591                	addi	a1,a1,4
    e882c152:	8c3ea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882c156:	862a                	mv	a2,a0
    e882c158:	85da                	mv	a1,s6
    e882c15a:	4501                	li	a0,0
    e882c15c:	350030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                rr->ImmedUnicast = mDNSfalse;
    e882c160:	0a090da3          	sb	zero,187(s2)
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c164:	00093903          	ld	s2,0(s2)
    e882c168:	b35d                	j	e882bf0e <SendResponses+0x78>
    if (++rr->UpdateCredits >= kMaxUpdateCredits) rr->NextUpdateCredit = 0;
    e882c16a:	140ca703          	lw	a4,320(s9)
    e882c16e:	0017061b          	addiw	a2,a4,1
    e882c172:	14cca023          	sw	a2,320(s9)
    e882c176:	4725                	li	a4,9
    e882c178:	04c77d63          	bgeu	a4,a2,e882c1d2 <SendResponses+0x33c>
    e882c17c:	140ca223          	sw	zero,324(s9)
        while (rr->NextUpdateCredit && m->timenow - rr->NextUpdateCredit >= 0) GrantUpdateCredit(rr);
    e882c180:	144ca783          	lw	a5,324(s9)
    e882c184:	c791                	beqz	a5,e882c190 <SendResponses+0x2fa>
    e882c186:	24042703          	lw	a4,576(s0)
    e882c18a:	9f1d                	subw	a4,a4,a5
    e882c18c:	fc075fe3          	bgez	a4,e882c16a <SendResponses+0x2d4>
        if (TimeToAnnounceThisRecord(rr, m->timenow))
    e882c190:	0b7ccb03          	lbu	s6,183(s9)
    e882c194:	020b0c63          	beqz	s6,e882c1cc <SendResponses+0x336>
    e882c198:	114ca703          	lw	a4,276(s9)
    e882c19c:	110ca783          	lw	a5,272(s9)
    e882c1a0:	00f706bb          	addw	a3,a4,a5
    e882c1a4:	24042703          	lw	a4,576(s0)
    e882c1a8:	9f15                	subw	a4,a4,a3
    e882c1aa:	02074163          	bltz	a4,e882c1cc <SendResponses+0x336>
    e882c1ae:	00077717          	auipc	a4,0x77
    e882c1b2:	baa70713          	addi	a4,a4,-1110 # e88a2d58 <mDNSInterfaceMark>
    e882c1b6:	6314                	ld	a3,0(a4)
            if (rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e882c1b8:	008cc703          	lbu	a4,8(s9)
    e882c1bc:	4605                	li	a2,1
    e882c1be:	16c71e63          	bne	a4,a2,e882c33a <SendResponses+0x4a4>
                if (!rr->WakeUp.HMAC.l[0])
    e882c1c2:	07eca783          	lw	a5,126(s9)
    e882c1c6:	ef81                	bnez	a5,e882c1de <SendResponses+0x348>
                    if (rr->AnnounceCount) rr->ImmedAnswer = mDNSInterfaceMark;     // Send goodbye packet on all interfaces
    e882c1c8:	0cdcb423          	sd	a3,200(s9)
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c1cc:	000cbc83          	ld	s9,0(s9)
    e882c1d0:	b385                	j	e882bf30 <SendResponses+0x9a>
    else rr->NextUpdateCredit = NonZeroTime(rr->NextUpdateCredit + kUpdateCreditRefreshInterval);
    e882c1d2:	9fb5                	addw	a5,a5,a3
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e882c1d4:	e391                	bnez	a5,e882c1d8 <SendResponses+0x342>
    e882c1d6:	4785                	li	a5,1
    e882c1d8:	14fca223          	sw	a5,324(s9)
    e882c1dc:	b755                	j	e882c180 <SendResponses+0x2ea>
                    LogSPS("SendResponses: Sending wakeup %2d for %.6a %s", rr->AnnounceCount-3, &rr->WakeUp.IMAC, ARDisplayString(m, rr));
    e882c1de:	000a9a97          	auipc	s5,0xa9
    e882c1e2:	896a8a93          	addi	s5,s5,-1898 # e88d4a74 <mDNS_LoggingEnabled>
    e882c1e6:	000aa783          	lw	a5,0(s5)
    e882c1ea:	084c8c13          	addi	s8,s9,132
    e882c1ee:	c78d                	beqz	a5,e882c218 <SendResponses+0x382>
    e882c1f0:	030cb583          	ld	a1,48(s9)
    e882c1f4:	03b40613          	addi	a2,s0,59
    e882c1f8:	008c8513          	addi	a0,s9,8
    e882c1fc:	0591                	addi	a1,a1,4
    e882c1fe:	817ea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882c202:	872a                	mv	a4,a0
    e882c204:	86e2                	mv	a3,s8
    e882c206:	ffdb061b          	addiw	a2,s6,-3
    e882c20a:	0007b597          	auipc	a1,0x7b
    e882c20e:	94658593          	addi	a1,a1,-1722 # e88a6b50 <end.8789+0x34a8>
    e882c212:	4509                	li	a0,2
    e882c214:	298030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    unicastOnly = ((rr->AnnounceCount == WakeupCount) || (rr->AnnounceCount == WakeupCount - 1)) ? mDNStrue : mDNSfalse;
    e882c218:	0b7cc703          	lbu	a4,183(s9)
                    SendWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.IMAC, &rr->WakeUp.password, unicastOnly);
    e882c21c:	020cb583          	ld	a1,32(s9)
    e882c220:	8662                	mv	a2,s8
                    unicastOnly = ((rr->AnnounceCount == WakeupCount) || (rr->AnnounceCount == WakeupCount - 1)) ? mDNStrue : mDNSfalse;
    e882c222:	373d                	addiw	a4,a4,-17
    e882c224:	0ff77713          	andi	a4,a4,255
                    SendWakeup(m, rr->resrec.InterfaceID, &rr->WakeUp.IMAC, &rr->WakeUp.password, unicastOnly);
    e882c228:	00273713          	sltiu	a4,a4,2
    e882c22c:	08ac8693          	addi	a3,s9,138
    e882c230:	8522                	mv	a0,s0
    e882c232:	933f00ef          	jal	ra,e881cb64 <SendWakeup>
    e882c236:	8c66                	mv	s8,s9
                            if (r2->AddressProxy.type == mDNSAddrType_IPv6 && r2->AnnounceCount == WakeupCount)
    e882c238:	4d49                	li	s10,18
                                LogSPS("NDP Announcement %2d Releasing traffic for H-MAC %.6a I-MAC %.6a %s",
    e882c23a:	03b40d93          	addi	s11,s0,59
                        if ((r2->resrec.RecordType == kDNSRecordTypeDeregistering) && r2->AnnounceCount && (r2->resrec.InterfaceID == rr->resrec.InterfaceID) &&
    e882c23e:	008c4783          	lbu	a5,8(s8)
    e882c242:	4705                	li	a4,1
    e882c244:	0ee79663          	bne	a5,a4,e882c330 <SendResponses+0x49a>
    e882c248:	0b7c4683          	lbu	a3,183(s8)
    e882c24c:	c2f5                	beqz	a3,e882c330 <SendResponses+0x49a>
    e882c24e:	020c3703          	ld	a4,32(s8)
    e882c252:	020cb783          	ld	a5,32(s9)
    e882c256:	0cf71d63          	bne	a4,a5,e882c330 <SendResponses+0x49a>
                            mDNSSameEthAddress(&r2->WakeUp.IMAC, &rr->WakeUp.IMAC) && !mDNSSameEthAddress(&zeroEthAddr, &r2->WakeUp.HMAC))
    e882c25a:	080c3703          	ld	a4,128(s8)
    e882c25e:	080cb783          	ld	a5,128(s9)
    e882c262:	01477733          	and	a4,a4,s4
    e882c266:	0147f7b3          	and	a5,a5,s4
                        if ((r2->resrec.RecordType == kDNSRecordTypeDeregistering) && r2->AnnounceCount && (r2->resrec.InterfaceID == rr->resrec.InterfaceID) &&
    e882c26a:	0cf71363          	bne	a4,a5,e882c330 <SendResponses+0x49a>
                            mDNSSameEthAddress(&r2->WakeUp.IMAC, &rr->WakeUp.IMAC) && !mDNSSameEthAddress(&zeroEthAddr, &r2->WakeUp.HMAC))
    e882c26e:	088c5703          	lhu	a4,136(s8)
    e882c272:	088cd783          	lhu	a5,136(s9)
    e882c276:	0af71d63          	bne	a4,a5,e882c330 <SendResponses+0x49a>
    e882c27a:	00095783          	lhu	a5,0(s2)
    e882c27e:	07ec5703          	lhu	a4,126(s8)
    e882c282:	00e79e63          	bne	a5,a4,e882c29e <SendResponses+0x408>
    e882c286:	00295783          	lhu	a5,2(s2)
    e882c28a:	080c5703          	lhu	a4,128(s8)
    e882c28e:	00e79863          	bne	a5,a4,e882c29e <SendResponses+0x408>
    e882c292:	00495783          	lhu	a5,4(s2)
    e882c296:	082c5703          	lhu	a4,130(s8)
    e882c29a:	08e78b63          	beq	a5,a4,e882c330 <SendResponses+0x49a>
                            if (r2->AddressProxy.type == mDNSAddrType_IPv6 && r2->AnnounceCount == WakeupCount)
    e882c29e:	090c2783          	lw	a5,144(s8)
    e882c2a2:	4719                	li	a4,6
    e882c2a4:	06e79063          	bne	a5,a4,e882c304 <SendResponses+0x46e>
    e882c2a8:	05a69e63          	bne	a3,s10,e882c304 <SendResponses+0x46e>
                                LogSPS("NDP Announcement %2d Releasing traffic for H-MAC %.6a I-MAC %.6a %s",
    e882c2ac:	000aa783          	lw	a5,0(s5)
    e882c2b0:	084c0b13          	addi	s6,s8,132
    e882c2b4:	c78d                	beqz	a5,e882c2de <SendResponses+0x448>
    e882c2b6:	030c3583          	ld	a1,48(s8)
    e882c2ba:	866e                	mv	a2,s11
    e882c2bc:	008c0513          	addi	a0,s8,8
    e882c2c0:	0591                	addi	a1,a1,4
    e882c2c2:	f52ea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882c2c6:	87aa                	mv	a5,a0
    e882c2c8:	875a                	mv	a4,s6
    e882c2ca:	07ec0693          	addi	a3,s8,126
    e882c2ce:	463d                	li	a2,15
    e882c2d0:	0007b597          	auipc	a1,0x7b
    e882c2d4:	8b058593          	addi	a1,a1,-1872 # e88a6b80 <end.8789+0x34d8>
    e882c2d8:	4509                	li	a0,2
    e882c2da:	1d2030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                                SendNDP(m, NDP_Adv, NDP_Override, r2, &r2->AddressProxy.ip.v6, &r2->WakeUp.IMAC, &AllHosts_v6, &AllHosts_v6_Eth);
    e882c2de:	00076897          	auipc	a7,0x76
    e882c2e2:	89288893          	addi	a7,a7,-1902 # e88a1b70 <AllHosts_v6_Eth>
    e882c2e6:	00076817          	auipc	a6,0x76
    e882c2ea:	87a80813          	addi	a6,a6,-1926 # e88a1b60 <AllHosts_v6>
    e882c2ee:	87da                	mv	a5,s6
    e882c2f0:	094c0713          	addi	a4,s8,148
    e882c2f4:	86e2                	mv	a3,s8
    e882c2f6:	02000613          	li	a2,32
    e882c2fa:	08800593          	li	a1,136
    e882c2fe:	8522                	mv	a0,s0
    e882c300:	dd2f00ef          	jal	ra,e881c8d2 <SendNDP>
                            r2->LastAPTime = m->timenow;
    e882c304:	24042783          	lw	a5,576(s0)
                            if (--r2->AnnounceCount <= GoodbyeCount) r2->WakeUp.HMAC = zeroEthAddr;
    e882c308:	470d                	li	a4,3
                            r2->LastAPTime = m->timenow;
    e882c30a:	10fc2a23          	sw	a5,276(s8)
                            if (--r2->AnnounceCount <= GoodbyeCount) r2->WakeUp.HMAC = zeroEthAddr;
    e882c30e:	0b7c4783          	lbu	a5,183(s8)
    e882c312:	37fd                	addiw	a5,a5,-1
    e882c314:	0ff7f793          	andi	a5,a5,255
    e882c318:	0afc0ba3          	sb	a5,183(s8)
    e882c31c:	00f76a63          	bltu	a4,a5,e882c330 <SendResponses+0x49a>
    e882c320:	00092783          	lw	a5,0(s2)
    e882c324:	06fc2f23          	sw	a5,126(s8)
    e882c328:	00495783          	lhu	a5,4(s2)
    e882c32c:	08fc1123          	sh	a5,130(s8)
                    for (r2 = rr; r2; r2=r2->next)
    e882c330:	000c3c03          	ld	s8,0(s8)
    e882c334:	f00c15e3          	bnez	s8,e882c23e <SendResponses+0x3a8>
    e882c338:	bd51                	j	e882c1cc <SendResponses+0x336>
            else if (ResourceRecordIsValidAnswer(rr))
    e882c33a:	03c77713          	andi	a4,a4,60
    e882c33e:	e80707e3          	beqz	a4,e882c1cc <SendResponses+0x336>
    e882c342:	048cb703          	ld	a4,72(s9)
    e882c346:	c719                	beqz	a4,e882c354 <SendResponses+0x4be>
    e882c348:	00874703          	lbu	a4,8(a4)
    e882c34c:	03c77713          	andi	a4,a4,60
    e882c350:	e6070ee3          	beqz	a4,e882c1cc <SendResponses+0x336>
    e882c354:	050cb703          	ld	a4,80(s9)
    e882c358:	c719                	beqz	a4,e882c366 <SendResponses+0x4d0>
    e882c35a:	00874703          	lbu	a4,8(a4)
    e882c35e:	03c77713          	andi	a4,a4,60
    e882c362:	e60705e3          	beqz	a4,e882c1cc <SendResponses+0x336>
    e882c366:	058cb703          	ld	a4,88(s9)
    e882c36a:	c719                	beqz	a4,e882c378 <SendResponses+0x4e2>
    e882c36c:	00874703          	lbu	a4,8(a4)
    e882c370:	03c77713          	andi	a4,a4,60
    e882c374:	e4070ce3          	beqz	a4,e882c1cc <SendResponses+0x336>
                if (rr->AddressProxy.type)
    e882c378:	090ca703          	lw	a4,144(s9)
    e882c37c:	10070263          	beqz	a4,e882c480 <SendResponses+0x5ea>
                    if (!mDNSSameEthAddress(&zeroEthAddr, &rr->WakeUp.HMAC))
    e882c380:	00095683          	lhu	a3,0(s2)
    e882c384:	07ecd603          	lhu	a2,126(s9)
    e882c388:	00c69e63          	bne	a3,a2,e882c3a4 <SendResponses+0x50e>
    e882c38c:	00295683          	lhu	a3,2(s2)
    e882c390:	080cd603          	lhu	a2,128(s9)
    e882c394:	00c69863          	bne	a3,a2,e882c3a4 <SendResponses+0x50e>
    e882c398:	00495683          	lhu	a3,4(s2)
    e882c39c:	082cd603          	lhu	a2,130(s9)
    e882c3a0:	e2c686e3          	beq	a3,a2,e882c1cc <SendResponses+0x336>
                        rr->ThisAPInterval *= 2;
    e882c3a4:	0017979b          	slliw	a5,a5,0x1
                        rr->AnnounceCount--;
    e882c3a8:	fffb0a9b          	addiw	s5,s6,-1
    e882c3ac:	0ffafa93          	andi	s5,s5,255
    e882c3b0:	0b5c8ba3          	sb	s5,183(s9)
                        rr->ThisAPInterval *= 2;
    e882c3b4:	10fca823          	sw	a5,272(s9)
                        rr->LastAPTime = m->timenow;
    e882c3b8:	24042783          	lw	a5,576(s0)
    e882c3bc:	10fcaa23          	sw	a5,276(s9)
                        if (rr->AddressProxy.type == mDNSAddrType_IPv4)
    e882c3c0:	4791                	li	a5,4
    e882c3c2:	04f71c63          	bne	a4,a5,e882c41a <SendResponses+0x584>
                            LogSPS("ARP Announcement %2d Capturing traffic for H-MAC %.6a I-MAC %.6a %s",
    e882c3c6:	000a8797          	auipc	a5,0xa8
    e882c3ca:	6ae78793          	addi	a5,a5,1710 # e88d4a74 <mDNS_LoggingEnabled>
    e882c3ce:	439c                	lw	a5,0(a5)
    e882c3d0:	c79d                	beqz	a5,e882c3fe <SendResponses+0x568>
    e882c3d2:	030cb583          	ld	a1,48(s9)
    e882c3d6:	03b40613          	addi	a2,s0,59
    e882c3da:	008c8513          	addi	a0,s9,8
    e882c3de:	0591                	addi	a1,a1,4
    e882c3e0:	e34ea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882c3e4:	87aa                	mv	a5,a0
    e882c3e6:	084c8713          	addi	a4,s9,132
    e882c3ea:	07ec8693          	addi	a3,s9,126
    e882c3ee:	8656                	mv	a2,s5
    e882c3f0:	0007a597          	auipc	a1,0x7a
    e882c3f4:	7d858593          	addi	a1,a1,2008 # e88a6bc8 <end.8789+0x3520>
    e882c3f8:	4509                	li	a0,2
    e882c3fa:	0b2030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            SendARP(m, 1, rr, &rr->AddressProxy.ip.v4, &zeroEthAddr, &rr->AddressProxy.ip.v4, &onesEthAddr);
    e882c3fe:	094c8793          	addi	a5,s9,148
    e882c402:	00077817          	auipc	a6,0x77
    e882c406:	f0680813          	addi	a6,a6,-250 # e88a3308 <onesEthAddr>
    e882c40a:	874a                	mv	a4,s2
    e882c40c:	86be                	mv	a3,a5
    e882c40e:	8666                	mv	a2,s9
    e882c410:	4585                	li	a1,1
    e882c412:	8522                	mv	a0,s0
    e882c414:	b70f00ef          	jal	ra,e881c784 <SendARP>
    e882c418:	bb55                	j	e882c1cc <SendResponses+0x336>
                        else if (rr->AddressProxy.type == mDNSAddrType_IPv6)
    e882c41a:	4799                	li	a5,6
    e882c41c:	daf718e3          	bne	a4,a5,e882c1cc <SendResponses+0x336>
                            LogSPS("NDP Announcement %2d Capturing traffic for H-MAC %.6a I-MAC %.6a %s",
    e882c420:	000a8797          	auipc	a5,0xa8
    e882c424:	65478793          	addi	a5,a5,1620 # e88d4a74 <mDNS_LoggingEnabled>
    e882c428:	439c                	lw	a5,0(a5)
    e882c42a:	c79d                	beqz	a5,e882c458 <SendResponses+0x5c2>
    e882c42c:	030cb583          	ld	a1,48(s9)
    e882c430:	03b40613          	addi	a2,s0,59
    e882c434:	008c8513          	addi	a0,s9,8
    e882c438:	0591                	addi	a1,a1,4
    e882c43a:	ddaea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882c43e:	87aa                	mv	a5,a0
    e882c440:	084c8713          	addi	a4,s9,132
    e882c444:	07ec8693          	addi	a3,s9,126
    e882c448:	8656                	mv	a2,s5
    e882c44a:	0007a597          	auipc	a1,0x7a
    e882c44e:	7c658593          	addi	a1,a1,1990 # e88a6c10 <end.8789+0x3568>
    e882c452:	4509                	li	a0,2
    e882c454:	058030ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            SendNDP(m, NDP_Adv, NDP_Override, rr, &rr->AddressProxy.ip.v6, mDNSNULL, &AllHosts_v6, &AllHosts_v6_Eth);
    e882c458:	00075897          	auipc	a7,0x75
    e882c45c:	71888893          	addi	a7,a7,1816 # e88a1b70 <AllHosts_v6_Eth>
    e882c460:	00075817          	auipc	a6,0x75
    e882c464:	70080813          	addi	a6,a6,1792 # e88a1b60 <AllHosts_v6>
    e882c468:	4781                	li	a5,0
    e882c46a:	094c8713          	addi	a4,s9,148
    e882c46e:	86e6                	mv	a3,s9
    e882c470:	02000613          	li	a2,32
    e882c474:	08800593          	li	a1,136
    e882c478:	8522                	mv	a0,s0
    e882c47a:	c58f00ef          	jal	ra,e881c8d2 <SendNDP>
    e882c47e:	b3b9                	j	e882c1cc <SendResponses+0x336>
                    rr->ImmedAnswer = mDNSInterfaceMark;        // Send on all interfaces
    e882c480:	0137a733          	slt	a4,a5,s3
    e882c484:	40e7998b          	mveqz	s3,a5,a4
                    if (rr->UpdateBlocked) rr->UpdateBlocked = 0;
    e882c488:	148ca783          	lw	a5,328(s9)
                    rr->ImmedAnswer = mDNSInterfaceMark;        // Send on all interfaces
    e882c48c:	0cdcb423          	sd	a3,200(s9)
                    if (maxExistingAnnounceInterval < rr->ThisAPInterval)
    e882c490:	2981                	sext.w	s3,s3
                    if (rr->UpdateBlocked) rr->UpdateBlocked = 0;
    e882c492:	d2078de3          	beqz	a5,e882c1cc <SendResponses+0x336>
    e882c496:	140ca423          	sw	zero,328(s9)
    e882c49a:	bb0d                	j	e882c1cc <SendResponses+0x336>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c49c:	678d                	lui	a5,0x3
            rr->ImmedAnswer = mDNSInterfaceMark;        // Send on all interfaces
    e882c49e:	00077717          	auipc	a4,0x77
    e882c4a2:	8ba70713          	addi	a4,a4,-1862 # e88a2d58 <mDNSInterfaceMark>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c4a6:	97a2                	add	a5,a5,s0
    e882c4a8:	1b87b783          	ld	a5,440(a5) # 31b8 <memcmp-0xe87fce48>
            rr->ImmedAnswer = mDNSInterfaceMark;        // Send on all interfaces
    e882c4ac:	00073a83          	ld	s5,0(a4)
    e882c4b0:	e8ba                	sd	a4,80(sp)
             TimeToAnnounceThisRecord(rr, m->timenow + rr->ThisAPInterval/2) &&
    e882c4b2:	4609                	li	a2,2
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c4b4:	3e079863          	bnez	a5,e882c8a4 <SendResponses+0xa0e>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c4b8:	690d                	lui	s2,0x3
    e882c4ba:	9922                	add	s2,s2,s0
        if (rr->ImmedAnswer && rr->resrec.RecordType == kDNSRecordTypeShared && rr->resrec.rrtype == kDNSType_PTR)
    e882c4bc:	0ffffb37          	lui	s6,0xffff
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c4c0:	1b893a03          	ld	s4,440(s2) # 31b8 <memcmp-0xe87fce48>
        if (rr->ImmedAnswer && rr->resrec.RecordType == kDNSRecordTypeShared && rr->resrec.rrtype == kDNSType_PTR)
    e882c4c4:	0b12                	slli	s6,s6,0x4
    e882c4c6:	000c0bb7          	lui	s7,0xc0
        if (rr->ImmedAnswer && rr->resrec.rrtype == kDNSType_SRV)
    e882c4ca:	02100c13          	li	s8,33
        if (rr->ImmedAnswer && rr->resrec.RecordType == kDNSRecordTypeShared && rr->resrec.rrtype == kDNSType_PTR)
    e882c4ce:	0ffb0b13          	addi	s6,s6,255 # ffff0ff <memcmp-0xd8800f01>
    e882c4d2:	0ba1                	addi	s7,s7,8
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c4d4:	420a1f63          	bnez	s4,e882c912 <SendResponses+0xa7c>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c4d8:	6a0d                	lui	s4,0x3
    e882c4da:	9a22                	add	s4,s4,s0
    e882c4dc:	1b8a3983          	ld	s3,440(s4) # 31b8 <memcmp-0xe87fce48>
    if (ar->resrec.InterfaceID == mDNSInterface_Any)
    e882c4e0:	00077b17          	auipc	s6,0x77
    e882c4e4:	880b0b13          	addi	s6,s6,-1920 # e88a2d60 <mDNSInterface_Any>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c4e8:	1b8a3903          	ld	s2,440(s4)
    e882c4ec:	54099163          	bnez	s3,e882ca2e <SendResponses+0xb98>
            rr->SendRNow = !intf ? mDNSNULL : (rr->resrec.InterfaceID) ? rr->resrec.InterfaceID : intf->InterfaceID;
    e882c4f0:	6989                	lui	s3,0x2
            if (TimeToAnnounceThisRecord(rr, m->timenow + rr->ThisAPInterval/2))
    e882c4f2:	4a09                	li	s4,2
                if (rr->resrec.RecordType != kDNSRecordTypeDeregistering)
    e882c4f4:	4b05                	li	s6,1
            rr->SendRNow = !intf ? mDNSNULL : (rr->resrec.InterfaceID) ? rr->resrec.InterfaceID : intf->InterfaceID;
    e882c4f6:	99a6                	add	s3,s3,s1
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c4f8:	68091863          	bnez	s2,e882cb88 <SendResponses+0xcf2>
        mDNSu8 *responseptr = m->omsg.data;
    e882c4fc:	6a1d                	lui	s4,0x7
                newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, active ? rr->resrec.rroriginalttl : 0);
    e882c4fe:	1e6a0793          	addi	a5,s4,486 # 71e6 <memcmp-0xe87f8e1a>
        mDNSu8 *responseptr = m->omsg.data;
    e882c502:	1eca0b93          	addi	s7,s4,492
                newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, active ? rr->resrec.rroriginalttl : 0);
    e882c506:	97a2                	add	a5,a5,s0
    int pktcount = 0;
    e882c508:	4c81                	li	s9,0
        mDNSu8 *responseptr = m->omsg.data;
    e882c50a:	9ba2                	add	s7,s7,s0
                newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, active ? rr->resrec.rroriginalttl : 0);
    e882c50c:	fc3e                	sd	a5,56(sp)
    while (intf)
    e882c50e:	2e048963          	beqz	s1,e882c800 <SendResponses+0x96a>
        int OwnerRecordSpace = (m->AnnounceOwner && intf->MAC.l[0]) ? DNSOpt_Header_Space + DNSOpt_Owner_Space(&m->PrimaryMAC, &intf->MAC) : 0;
    e882c512:	28c42903          	lw	s2,652(s0)
    e882c516:	02090363          	beqz	s2,e882c53c <SendResponses+0x6a6>
    e882c51a:	6789                	lui	a5,0x2
    e882c51c:	97a6                	add	a5,a5,s1
    e882c51e:	a207a703          	lw	a4,-1504(a5) # 1a20 <memcmp-0xe87fe5e0>
    e882c522:	4901                	li	s2,0
    e882c524:	cf01                	beqz	a4,e882c53c <SendResponses+0x6a6>
    e882c526:	6c18                	ld	a4,24(s0)
    e882c528:	a207b783          	ld	a5,-1504(a5)
    e882c52c:	495d                	li	s2,23
    e882c52e:	bc07370b          	extu	a4,a4,47,0
    e882c532:	bc07b78b          	extu	a5,a5,47,0
    e882c536:	00f70363          	beq	a4,a5,e882c53c <SendResponses+0x6a6>
    e882c53a:	4975                	li	s2,29
        int TraceRecordSpace = (mDNS_McastTracingEnabled && MDNS_TRACER) ? DNSOpt_Header_Space + DNSOpt_TraceData_Space : 0;
    e882c53c:	000b7797          	auipc	a5,0xb7
    e882c540:	5c478793          	addi	a5,a5,1476 # e88e3b00 <mDNS_McastTracingEnabled>
    e882c544:	0007a983          	lw	s3,0(a5)
    e882c548:	00098363          	beqz	s3,e882c54e <SendResponses+0x6b8>
    e882c54c:	49d1                	li	s3,20
        InitializeDNSMessage(&m->omsg.h, zeroID, ResponseFlags);
    e882c54e:	00076797          	auipc	a5,0x76
    e882c552:	23278793          	addi	a5,a5,562 # e88a2780 <ResponseFlags>
    e882c556:	0007d603          	lhu	a2,0(a5)
    e882c55a:	00077797          	auipc	a5,0x77
    e882c55e:	04678793          	addi	a5,a5,70 # e88a35a0 <zeroID>
    e882c562:	0007d583          	lhu	a1,0(a5)
    e882c566:	1e0a0b13          	addi	s6,s4,480
    e882c56a:	9b22                	add	s6,s6,s0
    e882c56c:	855a                	mv	a0,s6
    e882c56e:	8dee80ef          	jal	ra,e881464c <InitializeDNSMessage>
        mDNSu8 *responseptr = m->omsg.data;
    e882c572:	8c5e                	mv	s8,s7
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c574:	678d                	lui	a5,0x3
    e882c576:	97a2                	add	a5,a5,s0
    e882c578:	1b87bd83          	ld	s11,440(a5) # 31b8 <memcmp-0xe87fce48>
            if ((rr->SendRNow == intf->InterfaceID) &&
    e882c57c:	6789                	lui	a5,0x2
    e882c57e:	00f48d33          	add	s10,s1,a5
                newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, active ? rr->resrec.rroriginalttl : 0);
    e882c582:	01440733          	add	a4,s0,s4
    e882c586:	2ec78793          	addi	a5,a5,748 # 22ec <memcmp-0xe87fdd14>
        int AnoninfoSpace = 0;
    e882c58a:	ec02                	sd	zero,24(sp)
                newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, active ? rr->resrec.rroriginalttl : 0);
    e882c58c:	f03a                	sd	a4,32(sp)
    e882c58e:	f83e                	sd	a5,48(sp)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c590:	680d9563          	bnez	s11,e882cc1a <SendResponses+0xd84>
        OwnerRecordSpace -= AnoninfoSpace;
    e882c594:	67e2                	ld	a5,24(sp)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c596:	8d62                	mv	s10,s8
        OwnerRecordSpace -= AnoninfoSpace;
    e882c598:	40f9093b          	subw	s2,s2,a5
        TraceRecordSpace -= AnoninfoSpace;
    e882c59c:	40f989bb          	subw	s3,s3,a5
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c5a0:	678d                	lui	a5,0x3
    e882c5a2:	97a2                	add	a5,a5,s0
    e882c5a4:	1b87bd83          	ld	s11,440(a5) # 31b8 <memcmp-0xe87fce48>
            if (rr->resrec.AnonInfo && rr->resrec.AnonInfo->SendNow == intf->InterfaceID)
    e882c5a8:	6789                	lui	a5,0x2
    e882c5aa:	97a6                	add	a5,a5,s1
    e882c5ac:	f43e                	sd	a5,40(sp)
                newptr = PutRR_OS_TTL(newptr, &m->omsg.h.numAuthorities, nsec3RR,  nsec3RR->rroriginalttl);
    e882c5ae:	1e8a0793          	addi	a5,s4,488
    e882c5b2:	97a2                	add	a5,a5,s0
    e882c5b4:	f83e                	sd	a5,48(sp)
    e882c5b6:	014407b3          	add	a5,s0,s4
    e882c5ba:	ec3e                	sd	a5,24(sp)
    e882c5bc:	013907b3          	add	a5,s2,s3
    e882c5c0:	f03e                	sd	a5,32(sp)
                    LogMsg("SendResponses: Cannot add NSEC3 %s, OwnerRecordSpace %d, TraceRecordSpace %d, limit %p", ARDisplayString(m, rr), OwnerRecordSpace,
    e882c5c2:	03b40793          	addi	a5,s0,59
    e882c5c6:	e0be                	sd	a5,64(sp)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c5c8:	060d90e3          	bnez	s11,e882ce28 <SendResponses+0xf92>
            if (rr->ImmedAdditional == intf->InterfaceID)
    e882c5cc:	6709                	lui	a4,0x2
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c5ce:	678d                	lui	a5,0x3
    e882c5d0:	97a2                	add	a5,a5,s0
            if (rr->ImmedAdditional == intf->InterfaceID)
    e882c5d2:	00e488b3          	add	a7,s1,a4
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c5d6:	1b87bc03          	ld	s8,440(a5) # 31b8 <memcmp-0xe87fce48>
                        newptr = PutRR_OS(newptr, &m->omsg.h.numAdditionals, &rr->resrec);
    e882c5da:	1eaa0713          	addi	a4,s4,490
    e882c5de:	9722                	add	a4,a4,s0
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c5e0:	8dea                	mv	s11,s10
                        newptr = PutRR_OS(newptr, &m->omsg.h.numAdditionals, &rr->resrec);
    e882c5e2:	ec3a                	sd	a4,24(sp)
                        for (a = m->ResourceRecords; a; a=a->next)
    e882c5e4:	f03e                	sd	a5,32(sp)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c5e6:	0c0c1fe3          	bnez	s8,e882cec4 <SendResponses+0x102e>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c5ea:	678d                	lui	a5,0x3
    e882c5ec:	97a2                	add	a5,a5,s0
    e882c5ee:	1b87bc03          	ld	s8,440(a5) # 31b8 <memcmp-0xe87fce48>
                            if (r2->SendNSECNow == mDNSInterfaceMark || r2->SendNSECNow == intf->InterfaceID)
    e882c5f2:	6709                	lui	a4,0x2
                    for (r2 = m->ResourceRecords; r2; r2=r2->next)
    e882c5f4:	f03e                	sd	a5,32(sp)
                        newptr = PutRR_OS(responseptr, &m->omsg.h.numAdditionals, &nsec.resrec);
    e882c5f6:	1eaa0793          	addi	a5,s4,490
                            if (r2->SendNSECNow == mDNSInterfaceMark || r2->SendNSECNow == intf->InterfaceID)
    e882c5fa:	9726                	add	a4,a4,s1
                        newptr = PutRR_OS(responseptr, &m->omsg.h.numAdditionals, &nsec.resrec);
    e882c5fc:	97a2                	add	a5,a5,s0
                            if (r2->SendNSECNow == mDNSInterfaceMark || r2->SendNSECNow == intf->InterfaceID)
    e882c5fe:	ec3a                	sd	a4,24(sp)
                        newptr = PutRR_OS(responseptr, &m->omsg.h.numAdditionals, &nsec.resrec);
    e882c600:	f43e                	sd	a5,40(sp)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c602:	200c12e3          	bnez	s8,e882d006 <SendResponses+0x1170>
        if (m->omsg.h.numAnswers || m->omsg.h.numAdditionals)
    e882c606:	014407b3          	add	a5,s0,s4
    e882c60a:	1e67d703          	lhu	a4,486(a5)
    e882c60e:	e709                	bnez	a4,e882c618 <SendResponses+0x782>
    e882c610:	1ea7d783          	lhu	a5,490(a5)
    e882c614:	48078be3          	beqz	a5,e882d2aa <SendResponses+0x1414>
            if (OwnerRecordSpace || TraceRecordSpace)
    e882c618:	013967b3          	or	a5,s2,s3
    e882c61c:	12078e63          	beqz	a5,e882c758 <SendResponses+0x8c2>
                mDNS_SetupResourceRecord(&opt, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e882c620:	00076617          	auipc	a2,0x76
    e882c624:	74060613          	addi	a2,a2,1856 # e88a2d60 <mDNSInterface_Any>
    e882c628:	6210                	ld	a2,0(a2)
    e882c62a:	6705                	lui	a4,0x1
    e882c62c:	02000793          	li	a5,32
    e882c630:	e002                	sd	zero,0(sp)
    e882c632:	4881                	li	a7,0
    e882c634:	4801                	li	a6,0
    e882c636:	19470713          	addi	a4,a4,404 # 1194 <memcmp-0xe87fee6c>
    e882c63a:	02900693          	li	a3,41
    e882c63e:	4581                	li	a1,0
    e882c640:	0108                	addi	a0,sp,128
    e882c642:	f88e70ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
                opt.resrec.rrclass    = NormalMaxDNSMessageData;
    e882c646:	5a000793          	li	a5,1440
    e882c64a:	08f11623          	sh	a5,140(sp)
                opt.resrec.rdlength   = sizeof(rdataOPT);
    e882c64e:	001807b7          	lui	a5,0x180
    e882c652:	27e1                	addiw	a5,a5,24
    e882c654:	cb3e                	sw	a5,148(sp)
                if (OwnerRecordSpace && TraceRecordSpace)
    e882c656:	3c0900e3          	beqz	s2,e882d216 <SendResponses+0x1380>
    e882c65a:	764a                	ld	a2,176(sp)
    e882c65c:	0611                	addi	a2,a2,4
    e882c65e:	3a0986e3          	beqz	s3,e882d20a <SendResponses+0x1374>
                    opt.resrec.rdlength   += sizeof(rdataOPT); // Two options in this OPT record
    e882c662:	003007b7          	lui	a5,0x300
    e882c666:	0307879b          	addiw	a5,a5,48
                    SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[0]);
    e882c66a:	85a6                	mv	a1,s1
    e882c66c:	8522                	mv	a0,s0
                    opt.resrec.rdlength   += sizeof(rdataOPT); // Two options in this OPT record
    e882c66e:	cb3e                	sw	a5,148(sp)
                    SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[0]);
    e882c670:	8beef0ef          	jal	ra,e881b72e <SetupOwnerOpt>
                    SetupTracerOpt(m, &opt.resrec.rdata->u.opt[1]);
    e882c674:	670d                	lui	a4,0x3
    e882c676:	9722                	add	a4,a4,s0
    e882c678:	1f474703          	lbu	a4,500(a4) # 31f4 <memcmp-0xe87fce0c>
    e882c67c:	77ca                	ld	a5,176(sp)
    Trace->u.tracer.platf    = m->mDNS_plat;
    e882c67e:	02e78023          	sb	a4,32(a5) # 300020 <memcmp-0xe84fffe0>
    Trace->u.tracer.mDNSv    = DNS_VERS;
    e882c682:	00860737          	lui	a4,0x860
    e882c686:	9457071b          	addiw	a4,a4,-1723
    e882c68a:	d3d8                	sw	a4,36(a5)
    Trace->opt              = kDNSOpt_Trace;
    e882c68c:	00060737          	lui	a4,0x60
    e882c690:	de97071b          	addiw	a4,a4,-535
    e882c694:	cfd8                	sw	a4,28(a5)
                newptr = PutResourceRecord(&m->omsg, responseptr, &m->omsg.h.numAdditionals, &opt.resrec);
    e882c696:	014406b3          	add	a3,s0,s4
    e882c69a:	1e66d583          	lhu	a1,486(a3)
    e882c69e:	1eaa0613          	addi	a2,s4,490
    e882c6a2:	9622                	add	a2,a2,s0
    e882c6a4:	474a                	lw	a4,144(sp)
    e882c6a6:	5a000793          	li	a5,1440
    e882c6aa:	e599                	bnez	a1,e882c6b8 <SendResponses+0x822>
    e882c6ac:	1e86e683          	lwu	a3,488(a3)
    e882c6b0:	e681                	bnez	a3,e882c6b8 <SendResponses+0x822>
    e882c6b2:	6789                	lui	a5,0x2
    e882c6b4:	2ec78793          	addi	a5,a5,748 # 22ec <memcmp-0xe87fdd14>
    e882c6b8:	97de                	add	a5,a5,s7
    e882c6ba:	0134                	addi	a3,sp,136
    e882c6bc:	85ee                	mv	a1,s11
    e882c6be:	855a                	mv	a0,s6
    e882c6c0:	f81e90ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
                if (newptr)
    e882c6c4:	3e0510e3          	bnez	a0,e882d2a4 <SendResponses+0x140e>
                else if (m->omsg.h.numAnswers + m->omsg.h.numAuthorities + m->omsg.h.numAdditionals == 1)
    e882c6c8:	014406b3          	add	a3,s0,s4
    e882c6cc:	1e66d783          	lhu	a5,486(a3)
    e882c6d0:	1e86d803          	lhu	a6,488(a3)
    e882c6d4:	1ea6d683          	lhu	a3,490(a3)
    e882c6d8:	0107873b          	addw	a4,a5,a6
    e882c6dc:	0006889b          	sext.w	a7,a3
    e882c6e0:	9736                	add	a4,a4,a3
    e882c6e2:	4685                	li	a3,1
    e882c6e4:	34d71ee3          	bne	a4,a3,e882d240 <SendResponses+0x13aa>
                    LogInfo("SendResponses: No space in packet for %s %s OPT record (%d/%d/%d/%d) %s", OwnerRecordSpace ? "OWNER" : "", TraceRecordSpace ? "TRACER" : "",
    e882c6e8:	000a8717          	auipc	a4,0xa8
    e882c6ec:	38c70713          	addi	a4,a4,908 # e88d4a74 <mDNS_LoggingEnabled>
    e882c6f0:	4318                	lw	a4,0(a4)
    e882c6f2:	c33d                	beqz	a4,e882c758 <SendResponses+0x8c2>
    e882c6f4:	0007ac17          	auipc	s8,0x7a
    e882c6f8:	e94c0c13          	addi	s8,s8,-364 # e88a6588 <end.8789+0x2ee0>
    e882c6fc:	00091663          	bnez	s2,e882c708 <SendResponses+0x872>
    e882c700:	00095c17          	auipc	s8,0x95
    e882c704:	b70c0c13          	addi	s8,s8,-1168 # e88c1270 <kHTTPServerClass+0x90>
    e882c708:	0007a697          	auipc	a3,0x7a
    e882c70c:	e8868693          	addi	a3,a3,-376 # e88a6590 <end.8789+0x2ee8>
    e882c710:	00099663          	bnez	s3,e882c71c <SendResponses+0x886>
    e882c714:	00095697          	auipc	a3,0x95
    e882c718:	b5c68693          	addi	a3,a3,-1188 # e88c1270 <kHTTPServerClass+0x90>
    e882c71c:	75ca                	ld	a1,176(sp)
    e882c71e:	01440733          	add	a4,s0,s4
    e882c722:	1e475703          	lhu	a4,484(a4)
    e882c726:	03b40613          	addi	a2,s0,59
    e882c72a:	0591                	addi	a1,a1,4
    e882c72c:	0128                	addi	a0,sp,136
    e882c72e:	e0b6                	sd	a3,64(sp)
    e882c730:	f846                	sd	a7,48(sp)
    e882c732:	f442                	sd	a6,40(sp)
    e882c734:	f03e                	sd	a5,32(sp)
    e882c736:	ec3a                	sd	a4,24(sp)
    e882c738:	adcea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882c73c:	e02a                	sd	a0,0(sp)
    e882c73e:	78c2                	ld	a7,48(sp)
    e882c740:	7822                	ld	a6,40(sp)
    e882c742:	7782                	ld	a5,32(sp)
    e882c744:	6762                	ld	a4,24(sp)
    e882c746:	6686                	ld	a3,64(sp)
    e882c748:	8662                	mv	a2,s8
    e882c74a:	0007a597          	auipc	a1,0x7a
    e882c74e:	5d658593          	addi	a1,a1,1494 # e88a6d20 <end.8789+0x3678>
    e882c752:	450d                	li	a0,3
                    LogMsg("SendResponses: How did we fail to have space for %s %s OPT record (%d/%d/%d/%d) %s", OwnerRecordSpace ? "OWNER" : "", TraceRecordSpace ? "TRACER" : "",
    e882c754:	559020ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (intf->IPv4Available) mDNSSendDNSMessage(m, &m->omsg, responseptr, intf->InterfaceID, mDNSNULL, &AllDNSLinkGroup_v4, MulticastDNSPort, mDNSNULL, mDNSNULL, mDNSfalse);
    e882c758:	0094c783          	lbu	a5,9(s1)
    e882c75c:	cb85                	beqz	a5,e882c78c <SendResponses+0x8f6>
    e882c75e:	6789                	lui	a5,0x2
    e882c760:	97a6                	add	a5,a5,s1
    e882c762:	9f07b683          	ld	a3,-1552(a5) # 19f0 <memcmp-0xe87fe610>
    e882c766:	00076797          	auipc	a5,0x76
    e882c76a:	df278793          	addi	a5,a5,-526 # e88a2558 <MulticastDNSPort>
    e882c76e:	0007d803          	lhu	a6,0(a5)
    e882c772:	e402                	sd	zero,8(sp)
    e882c774:	e002                	sd	zero,0(sp)
    e882c776:	4881                	li	a7,0
    e882c778:	00075797          	auipc	a5,0x75
    e882c77c:	3b878793          	addi	a5,a5,952 # e88a1b30 <AllDNSLinkGroup_v4>
    e882c780:	4701                	li	a4,0
    e882c782:	866e                	mv	a2,s11
    e882c784:	85da                	mv	a1,s6
    e882c786:	8522                	mv	a0,s0
    e882c788:	f2bea0ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
            if (intf->IPv6Available) mDNSSendDNSMessage(m, &m->omsg, responseptr, intf->InterfaceID, mDNSNULL, &AllDNSLinkGroup_v6, MulticastDNSPort, mDNSNULL, mDNSNULL, mDNSfalse);
    e882c78c:	00a4c783          	lbu	a5,10(s1)
    e882c790:	cb85                	beqz	a5,e882c7c0 <SendResponses+0x92a>
    e882c792:	6789                	lui	a5,0x2
    e882c794:	97a6                	add	a5,a5,s1
    e882c796:	9f07b683          	ld	a3,-1552(a5) # 19f0 <memcmp-0xe87fe610>
    e882c79a:	00076797          	auipc	a5,0x76
    e882c79e:	dbe78793          	addi	a5,a5,-578 # e88a2558 <MulticastDNSPort>
    e882c7a2:	0007d803          	lhu	a6,0(a5)
    e882c7a6:	e402                	sd	zero,8(sp)
    e882c7a8:	e002                	sd	zero,0(sp)
    e882c7aa:	4881                	li	a7,0
    e882c7ac:	00075797          	auipc	a5,0x75
    e882c7b0:	39c78793          	addi	a5,a5,924 # e88a1b48 <AllDNSLinkGroup_v6>
    e882c7b4:	4701                	li	a4,0
    e882c7b6:	866e                	mv	a2,s11
    e882c7b8:	85da                	mv	a1,s6
    e882c7ba:	8522                	mv	a0,s0
    e882c7bc:	ef7ea0ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
            if (!m->SuppressSending) m->SuppressSending = NonZeroTime(m->timenow + (mDNSPlatformOneSecond+9)/10);
    e882c7c0:	25042783          	lw	a5,592(s0)
    e882c7c4:	e38d                	bnez	a5,e882c7e6 <SendResponses+0x950>
    e882c7c6:	000a8797          	auipc	a5,0xa8
    e882c7ca:	2ba78793          	addi	a5,a5,698 # e88d4a80 <mDNSPlatformOneSecond>
    e882c7ce:	439c                	lw	a5,0(a5)
    e882c7d0:	4729                	li	a4,10
    e882c7d2:	27a5                	addiw	a5,a5,9
    e882c7d4:	02e7c7bb          	divw	a5,a5,a4
    e882c7d8:	24042703          	lw	a4,576(s0)
    e882c7dc:	9fb9                	addw	a5,a5,a4
    e882c7de:	e391                	bnez	a5,e882c7e2 <SendResponses+0x94c>
    e882c7e0:	4785                	li	a5,1
    e882c7e2:	24f42823          	sw	a5,592(s0)
            if (++pktcount >= 1000) { LogMsg("SendResponses exceeded loop limit %d: giving up", pktcount); break; }
    e882c7e6:	2c85                	addiw	s9,s9,1
    e882c7e8:	3e700793          	li	a5,999
    e882c7ec:	d397d1e3          	bge	a5,s9,e882c50e <SendResponses+0x678>
    e882c7f0:	8666                	mv	a2,s9
    e882c7f2:	0007a597          	auipc	a1,0x7a
    e882c7f6:	5ce58593          	addi	a1,a1,1486 # e88a6dc0 <end.8789+0x3718>
    e882c7fa:	4501                	li	a0,0
    e882c7fc:	4b1020ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (m->CurrentRecord)
    e882c800:	678d                	lui	a5,0x3
    e882c802:	97a2                	add	a5,a5,s0
    e882c804:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e882c808:	c105                	beqz	a0,e882c828 <SendResponses+0x992>
        LogMsg("SendResponses ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e882c80a:	790c                	ld	a1,48(a0)
    e882c80c:	03b40613          	addi	a2,s0,59
    e882c810:	0521                	addi	a0,a0,8
    e882c812:	0591                	addi	a1,a1,4
    e882c814:	a00ea0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882c818:	862a                	mv	a2,a0
    e882c81a:	0007a597          	auipc	a1,0x7a
    e882c81e:	5d658593          	addi	a1,a1,1494 # e88a6df0 <end.8789+0x3748>
    e882c822:	4501                	li	a0,0
    e882c824:	489020ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentRecord = m->ResourceRecords;
    e882c828:	690d                	lui	s2,0x3
    e882c82a:	9922                	add	s2,s2,s0
    e882c82c:	1b893783          	ld	a5,440(s2) # 31b8 <memcmp-0xe87fce48>
            if (rr->ARType != AuthRecordLocalOnly && rr->ARType != AuthRecordP2P)
    e882c830:	4985                	li	s3,1
                LogInfo("SendResponses: No active interface %d to send: %d %02X %s",
    e882c832:	000a8a97          	auipc	s5,0xa8
    e882c836:	242a8a93          	addi	s5,s5,578 # e88d4a74 <mDNS_LoggingEnabled>
    m->CurrentRecord = m->ResourceRecords;
    e882c83a:	1cf93823          	sd	a5,464(s2)
                LogInfo("SendResponses: No active interface %d to send: %d %02X %s",
    e882c83e:	03b40b13          	addi	s6,s0,59
    e882c842:	0007ab97          	auipc	s7,0x7a
    e882c846:	5e6b8b93          	addi	s7,s7,1510 # e88a6e28 <end.8789+0x3780>
                rr->v4Requester  = zerov4Addr;
    e882c84a:	00077c17          	auipc	s8,0x77
    e882c84e:	d96c0c13          	addi	s8,s8,-618 # e88a35e0 <zerov4Addr>
                rr->v6Requester  = zerov6Addr;
    e882c852:	00077a17          	auipc	s4,0x77
    e882c856:	d96a0a13          	addi	s4,s4,-618 # e88a35e8 <zerov6Addr>
                if (!AuthRecord_uDNS(rr)) CompleteDeregistration(m, rr);        // Don't touch rr after this
    e882c85a:	00076c97          	auipc	s9,0x76
    e882c85e:	506c8c93          	addi	s9,s9,1286 # e88a2d60 <mDNSInterface_Any>
    while (m->CurrentRecord)
    e882c862:	1d093483          	ld	s1,464(s2)
    e882c866:	240499e3          	bnez	s1,e882d2b8 <SendResponses+0x1422>
}
    e882c86a:	4f813083          	ld	ra,1272(sp)
    e882c86e:	4f013403          	ld	s0,1264(sp)
    e882c872:	4e813483          	ld	s1,1256(sp)
    e882c876:	4e013903          	ld	s2,1248(sp)
    e882c87a:	4d813983          	ld	s3,1240(sp)
    e882c87e:	4d013a03          	ld	s4,1232(sp)
    e882c882:	4c813a83          	ld	s5,1224(sp)
    e882c886:	4c013b03          	ld	s6,1216(sp)
    e882c88a:	4b813b83          	ld	s7,1208(sp)
    e882c88e:	4b013c03          	ld	s8,1200(sp)
    e882c892:	4a813c83          	ld	s9,1192(sp)
    e882c896:	4a013d03          	ld	s10,1184(sp)
    e882c89a:	49813d83          	ld	s11,1176(sp)
    e882c89e:	50010113          	addi	sp,sp,1280
    e882c8a2:	8082                	ret
        if ((rr->resrec.InterfaceID && rr->ImmedAnswer) ||
    e882c8a4:	7398                	ld	a4,32(a5)
    e882c8a6:	c319                	beqz	a4,e882c8ac <SendResponses+0xa16>
    e882c8a8:	67f8                	ld	a4,200(a5)
    e882c8aa:	e325                	bnez	a4,e882c90a <SendResponses+0xa74>
            (rr->ThisAPInterval <= maxExistingAnnounceInterval &&
    e882c8ac:	1107a683          	lw	a3,272(a5)
        if ((rr->resrec.InterfaceID && rr->ImmedAnswer) ||
    e882c8b0:	04d9cf63          	blt	s3,a3,e882c90e <SendResponses+0xa78>
            (rr->ThisAPInterval <= maxExistingAnnounceInterval &&
    e882c8b4:	0b77c703          	lbu	a4,183(a5)
    e882c8b8:	cb39                	beqz	a4,e882c90e <SendResponses+0xa78>
             TimeToAnnounceThisRecord(rr, m->timenow + rr->ThisAPInterval/2) &&
    e882c8ba:	02c6c73b          	divw	a4,a3,a2
    e882c8be:	9f15                	subw	a4,a4,a3
    e882c8c0:	24042683          	lw	a3,576(s0)
    e882c8c4:	9f35                	addw	a4,a4,a3
    e882c8c6:	1147a683          	lw	a3,276(a5)
    e882c8ca:	9f15                	subw	a4,a4,a3
    e882c8cc:	04074163          	bltz	a4,e882c90e <SendResponses+0xa78>
    e882c8d0:	0907a703          	lw	a4,144(a5)
    e882c8d4:	ef0d                	bnez	a4,e882c90e <SendResponses+0xa78>
             !rr->AddressProxy.type &&                  // Don't include ARP Annoucements when considering which records to accelerate
    e882c8d6:	0087c703          	lbu	a4,8(a5)
    e882c8da:	03c77713          	andi	a4,a4,60
    e882c8de:	cb05                	beqz	a4,e882c90e <SendResponses+0xa78>
             ResourceRecordIsValidAnswer(rr)))
    e882c8e0:	67b8                	ld	a4,72(a5)
    e882c8e2:	c711                	beqz	a4,e882c8ee <SendResponses+0xa58>
    e882c8e4:	00874703          	lbu	a4,8(a4)
    e882c8e8:	03c77713          	andi	a4,a4,60
    e882c8ec:	c30d                	beqz	a4,e882c90e <SendResponses+0xa78>
    e882c8ee:	6bb8                	ld	a4,80(a5)
    e882c8f0:	c711                	beqz	a4,e882c8fc <SendResponses+0xa66>
    e882c8f2:	00874703          	lbu	a4,8(a4)
    e882c8f6:	03c77713          	andi	a4,a4,60
    e882c8fa:	cb11                	beqz	a4,e882c90e <SendResponses+0xa78>
    e882c8fc:	6fb8                	ld	a4,88(a5)
    e882c8fe:	c711                	beqz	a4,e882c90a <SendResponses+0xa74>
    e882c900:	00874703          	lbu	a4,8(a4)
    e882c904:	03c77713          	andi	a4,a4,60
    e882c908:	c319                	beqz	a4,e882c90e <SendResponses+0xa78>
            rr->ImmedAnswer = mDNSInterfaceMark;        // Send on all interfaces
    e882c90a:	0d57b423          	sd	s5,200(a5)
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c90e:	639c                	ld	a5,0(a5)
    e882c910:	b655                	j	e882c4b4 <SendResponses+0x61e>
        if (rr->ImmedAnswer && rr->resrec.rrtype == kDNSType_SRV)
    e882c912:	0c8a3783          	ld	a5,200(s4)
    e882c916:	c3c9                	beqz	a5,e882c998 <SendResponses+0xb02>
    e882c918:	00aa5783          	lhu	a5,10(s4)
    e882c91c:	07878563          	beq	a5,s8,e882c986 <SendResponses+0xaf0>
        if (rr->ImmedAnswer && rr->resrec.RecordType == kDNSRecordTypeShared && rr->resrec.rrtype == kDNSType_PTR)
    e882c920:	008a3783          	ld	a5,8(s4)
    e882c924:	0167f7b3          	and	a5,a5,s6
    e882c928:	07779863          	bne	a5,s7,e882c998 <SendResponses+0xb02>
            if (ResourceRecordIsValidAnswer(&m->DeviceInfo) && SameDomainLabel(rr->resrec.rdata->u.name.c, m->DeviceInfo.resrec.name->c))
    e882c92c:	db094783          	lbu	a5,-592(s2)
    e882c930:	03c7f793          	andi	a5,a5,60
    e882c934:	c3b5                	beqz	a5,e882c998 <SendResponses+0xb02>
    e882c936:	df093783          	ld	a5,-528(s2)
    e882c93a:	c791                	beqz	a5,e882c946 <SendResponses+0xab0>
    e882c93c:	0087c783          	lbu	a5,8(a5)
    e882c940:	03c7f793          	andi	a5,a5,60
    e882c944:	cbb1                	beqz	a5,e882c998 <SendResponses+0xb02>
    e882c946:	df893783          	ld	a5,-520(s2)
    e882c94a:	c791                	beqz	a5,e882c956 <SendResponses+0xac0>
    e882c94c:	0087c783          	lbu	a5,8(a5)
    e882c950:	03c7f793          	andi	a5,a5,60
    e882c954:	c3b1                	beqz	a5,e882c998 <SendResponses+0xb02>
    e882c956:	e0093783          	ld	a5,-512(s2)
    e882c95a:	c791                	beqz	a5,e882c966 <SendResponses+0xad0>
    e882c95c:	0087c783          	lbu	a5,8(a5)
    e882c960:	03c7f793          	andi	a5,a5,60
    e882c964:	cb95                	beqz	a5,e882c998 <SendResponses+0xb02>
    e882c966:	030a3503          	ld	a0,48(s4)
    e882c96a:	dd093583          	ld	a1,-560(s2)
    e882c96e:	0511                	addi	a0,a0,4
    e882c970:	e76e60ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e882c974:	c115                	beqz	a0,e882c998 <SendResponses+0xb02>
                if (!m->DeviceInfo.ImmedAnswer) m->DeviceInfo.ImmedAnswer = rr->ImmedAnswer;
    e882c976:	e7093783          	ld	a5,-400(s2)
    e882c97a:	e7dd                	bnez	a5,e882ca28 <SendResponses+0xb92>
    e882c97c:	0c8a3783          	ld	a5,200(s4)
    e882c980:	e6f93823          	sd	a5,-400(s2)
    e882c984:	a811                	j	e882c998 <SendResponses+0xb02>
            for (r2=m->ResourceRecords; r2; r2=r2->next)                // Scan list of resource records
    e882c986:	1b893983          	ld	s3,440(s2)
                if (RRTypeIsAddressType(r2->resrec.rrtype) &&           // For all address records (A/AAAA) ...
    e882c98a:	4c85                	li	s9,1
    e882c98c:	4d71                	li	s10,28
            for (r2=m->ResourceRecords; r2; r2=r2->next)                // Scan list of resource records
    e882c98e:	00099863          	bnez	s3,e882c99e <SendResponses+0xb08>
        if (rr->ImmedAnswer && rr->resrec.RecordType == kDNSRecordTypeShared && rr->resrec.rrtype == kDNSType_PTR)
    e882c992:	0c8a3783          	ld	a5,200(s4)
    e882c996:	f7c9                	bnez	a5,e882c920 <SendResponses+0xa8a>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882c998:	000a3a03          	ld	s4,0(s4)
    e882c99c:	be25                	j	e882c4d4 <SendResponses+0x63e>
                if (RRTypeIsAddressType(r2->resrec.rrtype) &&           // For all address records (A/AAAA) ...
    e882c99e:	00a9d783          	lhu	a5,10(s3) # 200a <memcmp-0xe87fdff6>
    e882c9a2:	01978463          	beq	a5,s9,e882c9aa <SendResponses+0xb14>
    e882c9a6:	07a79e63          	bne	a5,s10,e882ca22 <SendResponses+0xb8c>
    e882c9aa:	0089c783          	lbu	a5,8(s3)
    e882c9ae:	03c7f793          	andi	a5,a5,60
    e882c9b2:	cba5                	beqz	a5,e882ca22 <SendResponses+0xb8c>
                    ResourceRecordIsValidAnswer(r2) &&                  // ... which are valid for answer ...
    e882c9b4:	0489b783          	ld	a5,72(s3)
    e882c9b8:	c791                	beqz	a5,e882c9c4 <SendResponses+0xb2e>
    e882c9ba:	0087c783          	lbu	a5,8(a5)
    e882c9be:	03c7f793          	andi	a5,a5,60
    e882c9c2:	c3a5                	beqz	a5,e882ca22 <SendResponses+0xb8c>
    e882c9c4:	0509b783          	ld	a5,80(s3)
    e882c9c8:	c791                	beqz	a5,e882c9d4 <SendResponses+0xb3e>
    e882c9ca:	0087c783          	lbu	a5,8(a5)
    e882c9ce:	03c7f793          	andi	a5,a5,60
    e882c9d2:	cba1                	beqz	a5,e882ca22 <SendResponses+0xb8c>
    e882c9d4:	0589b783          	ld	a5,88(s3)
    e882c9d8:	c791                	beqz	a5,e882c9e4 <SendResponses+0xb4e>
    e882c9da:	0087c783          	lbu	a5,8(a5)
    e882c9de:	03c7f793          	andi	a5,a5,60
    e882c9e2:	c3a1                	beqz	a5,e882ca22 <SendResponses+0xb8c>
                    rr->LastMCTime - r2->LastMCTime >= 0 &&             // ... which we have not sent recently ...
    e882c9e4:	118a2783          	lw	a5,280(s4)
    e882c9e8:	1189a703          	lw	a4,280(s3)
                    ResourceRecordIsValidAnswer(r2) &&                  // ... which are valid for answer ...
    e882c9ec:	9f99                	subw	a5,a5,a4
    e882c9ee:	0207ca63          	bltz	a5,e882ca22 <SendResponses+0xb8c>
                    rr->LastMCTime - r2->LastMCTime >= 0 &&             // ... which we have not sent recently ...
    e882c9f2:	01ca2703          	lw	a4,28(s4)
    e882c9f6:	0189a783          	lw	a5,24(s3)
    e882c9fa:	02f71463          	bne	a4,a5,e882ca22 <SendResponses+0xb8c>
                    SameDomainName(&rr->resrec.rdata->u.srv.target, r2->resrec.name) &&
    e882c9fe:	030a3503          	ld	a0,48(s4)
    e882ca02:	0289b583          	ld	a1,40(s3)
    e882ca06:	0529                	addi	a0,a0,10
    e882ca08:	e42e60ef          	jal	ra,e881304a <SameDomainName>
                    rr->resrec.rdatahash == r2->resrec.namehash &&      // ... whose name is the name of the SRV target
    e882ca0c:	c919                	beqz	a0,e882ca22 <SendResponses+0xb8c>
                    (rr->ImmedAnswer == mDNSInterfaceMark || rr->ImmedAnswer == r2->resrec.InterfaceID))
    e882ca0e:	0c8a3703          	ld	a4,200(s4)
    e882ca12:	0209b783          	ld	a5,32(s3)
                    SameDomainName(&rr->resrec.rdata->u.srv.target, r2->resrec.name) &&
    e882ca16:	00ea8463          	beq	s5,a4,e882ca1e <SendResponses+0xb88>
                    (rr->ImmedAnswer == mDNSInterfaceMark || rr->ImmedAnswer == r2->resrec.InterfaceID))
    e882ca1a:	00f71463          	bne	a4,a5,e882ca22 <SendResponses+0xb8c>
                    r2->ImmedAdditional = r2->resrec.InterfaceID;       // ... then mark this address record for sending too
    e882ca1e:	0cf9b823          	sd	a5,208(s3)
            for (r2=m->ResourceRecords; r2; r2=r2->next)                // Scan list of resource records
    e882ca22:	0009b983          	ld	s3,0(s3)
    e882ca26:	b7a5                	j	e882c98e <SendResponses+0xaf8>
                else m->DeviceInfo.ImmedAnswer = mDNSInterfaceMark;
    e882ca28:	e7593823          	sd	s5,-400(s2)
    e882ca2c:	b7b5                	j	e882c998 <SendResponses+0xb02>
        if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e882ca2e:	0089c783          	lbu	a5,8(s3)
    e882ca32:	0327f793          	andi	a5,a5,50
    e882ca36:	e781                	bnez	a5,e882ca3e <SendResponses+0xba8>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882ca38:	0009b983          	ld	s3,0(s3)
    e882ca3c:	b475                	j	e882c4e8 <SendResponses+0x652>
            if (rr->ImmedAnswer)            // If we're sending this as answer, see that its whole RRSet is similarly marked
    e882ca3e:	0c89b783          	ld	a5,200(s3)
    e882ca42:	c7cd                	beqz	a5,e882caec <SendResponses+0xc56>
                for (r2 = m->ResourceRecords; r2; r2=r2->next)
    e882ca44:	fe090ae3          	beqz	s2,e882ca38 <SendResponses+0xba2>
                    if ((r2->resrec.RecordType & kDNSRecordTypeUniqueMask) && ResourceRecordIsValidAnswer(r2) &&
    e882ca48:	00894783          	lbu	a5,8(s2)
    e882ca4c:	0327f713          	andi	a4,a5,50
    e882ca50:	c741                	beqz	a4,e882cad8 <SendResponses+0xc42>
    e882ca52:	03c7f793          	andi	a5,a5,60
    e882ca56:	c3c9                	beqz	a5,e882cad8 <SendResponses+0xc42>
    e882ca58:	04893783          	ld	a5,72(s2)
    e882ca5c:	c791                	beqz	a5,e882ca68 <SendResponses+0xbd2>
    e882ca5e:	0087c783          	lbu	a5,8(a5)
    e882ca62:	03c7f793          	andi	a5,a5,60
    e882ca66:	cbad                	beqz	a5,e882cad8 <SendResponses+0xc42>
    e882ca68:	05093783          	ld	a5,80(s2)
    e882ca6c:	c791                	beqz	a5,e882ca78 <SendResponses+0xbe2>
    e882ca6e:	0087c783          	lbu	a5,8(a5)
    e882ca72:	03c7f793          	andi	a5,a5,60
    e882ca76:	c3ad                	beqz	a5,e882cad8 <SendResponses+0xc42>
    e882ca78:	05893783          	ld	a5,88(s2)
    e882ca7c:	c791                	beqz	a5,e882ca88 <SendResponses+0xbf2>
    e882ca7e:	0087c783          	lbu	a5,8(a5)
    e882ca82:	03c7f793          	andi	a5,a5,60
    e882ca86:	cba9                	beqz	a5,e882cad8 <SendResponses+0xc42>
                        (r2->ImmedAnswer != mDNSInterfaceMark) && (r2->ImmedAnswer != rr->ImmedAnswer) &&
    e882ca88:	0c893783          	ld	a5,200(s2)
                    if ((r2->resrec.RecordType & kDNSRecordTypeUniqueMask) && ResourceRecordIsValidAnswer(r2) &&
    e882ca8c:	04fa8663          	beq	s5,a5,e882cad8 <SendResponses+0xc42>
                        (r2->ImmedAnswer != mDNSInterfaceMark) && (r2->ImmedAnswer != rr->ImmedAnswer) &&
    e882ca90:	0c89b703          	ld	a4,200(s3)
    e882ca94:	04e78263          	beq	a5,a4,e882cad8 <SendResponses+0xc42>
    e882ca98:	00a95703          	lhu	a4,10(s2)
    e882ca9c:	00a9d783          	lhu	a5,10(s3)
    e882caa0:	02f71c63          	bne	a4,a5,e882cad8 <SendResponses+0xc42>
                        SameResourceRecordSignature(r2, rr) &&
    e882caa4:	85ce                	mv	a1,s3
    e882caa6:	854a                	mv	a0,s2
    e882caa8:	b6ef00ef          	jal	ra,e881ce16 <SameResourceRecordNameClassInterface>
    e882caac:	c515                	beqz	a0,e882cad8 <SendResponses+0xc42>
                        ((rr->ImmedAnswer == mDNSInterfaceMark) || IsInterfaceValidForAuthRecord(r2, rr->ImmedAnswer)))
    e882caae:	0c89b583          	ld	a1,200(s3)
                        SameResourceRecordSignature(r2, rr) &&
    e882cab2:	00ba9963          	bne	s5,a1,e882cac4 <SendResponses+0xc2e>
                        r2->ImmedAnswer = !r2->ImmedAnswer ? rr->ImmedAnswer : mDNSInterfaceMark;
    e882cab6:	0c893783          	ld	a5,200(s2)
    e882caba:	c795                	beqz	a5,e882cae6 <SendResponses+0xc50>
    e882cabc:	87d6                	mv	a5,s5
    e882cabe:	0cf93423          	sd	a5,200(s2)
    e882cac2:	a819                	j	e882cad8 <SendResponses+0xc42>
    if (ar->resrec.InterfaceID == mDNSInterface_Any)
    e882cac4:	02093503          	ld	a0,32(s2)
    e882cac8:	000b3783          	ld	a5,0(s6)
    e882cacc:	00f51963          	bne	a0,a5,e882cade <SendResponses+0xc48>
        result = mDNSPlatformValidRecordForInterface(ar, InterfaceID);
    e882cad0:	854a                	mv	a0,s2
    e882cad2:	449030ef          	jal	ra,e883071a <mDNSPlatformValidRecordForInterface>
                        ((rr->ImmedAnswer == mDNSInterfaceMark) || IsInterfaceValidForAuthRecord(r2, rr->ImmedAnswer)))
    e882cad6:	f165                	bnez	a0,e882cab6 <SendResponses+0xc20>
                for (r2 = m->ResourceRecords; r2; r2=r2->next)
    e882cad8:	00093903          	ld	s2,0(s2)
    e882cadc:	b7a5                	j	e882ca44 <SendResponses+0xbae>
        result = (ar->resrec.InterfaceID == InterfaceID);
    e882cade:	8d89                	sub	a1,a1,a0
    e882cae0:	0015b513          	seqz	a0,a1
    e882cae4:	bfcd                	j	e882cad6 <SendResponses+0xc40>
                        r2->ImmedAnswer = !r2->ImmedAnswer ? rr->ImmedAnswer : mDNSInterfaceMark;
    e882cae6:	0c89b783          	ld	a5,200(s3)
    e882caea:	bfd1                	j	e882cabe <SendResponses+0xc28>
            else if (rr->ImmedAdditional)   // If we're sending this as additional, see that its whole RRSet is similarly marked
    e882caec:	0d09b783          	ld	a5,208(s3)
    e882caf0:	d7a1                	beqz	a5,e882ca38 <SendResponses+0xba2>
                for (r2 = m->ResourceRecords; r2; r2=r2->next)
    e882caf2:	f40903e3          	beqz	s2,e882ca38 <SendResponses+0xba2>
                    if ((r2->resrec.RecordType & kDNSRecordTypeUniqueMask) && ResourceRecordIsValidAnswer(r2) &&
    e882caf6:	00894783          	lbu	a5,8(s2)
    e882cafa:	0327f713          	andi	a4,a5,50
    e882cafe:	cf2d                	beqz	a4,e882cb78 <SendResponses+0xce2>
    e882cb00:	03c7f793          	andi	a5,a5,60
    e882cb04:	cbb5                	beqz	a5,e882cb78 <SendResponses+0xce2>
    e882cb06:	04893783          	ld	a5,72(s2)
    e882cb0a:	c791                	beqz	a5,e882cb16 <SendResponses+0xc80>
    e882cb0c:	0087c783          	lbu	a5,8(a5)
    e882cb10:	03c7f793          	andi	a5,a5,60
    e882cb14:	c3b5                	beqz	a5,e882cb78 <SendResponses+0xce2>
    e882cb16:	05093783          	ld	a5,80(s2)
    e882cb1a:	c791                	beqz	a5,e882cb26 <SendResponses+0xc90>
    e882cb1c:	0087c783          	lbu	a5,8(a5)
    e882cb20:	03c7f793          	andi	a5,a5,60
    e882cb24:	cbb1                	beqz	a5,e882cb78 <SendResponses+0xce2>
    e882cb26:	05893783          	ld	a5,88(s2)
    e882cb2a:	c791                	beqz	a5,e882cb36 <SendResponses+0xca0>
    e882cb2c:	0087c783          	lbu	a5,8(a5)
    e882cb30:	03c7f793          	andi	a5,a5,60
    e882cb34:	c3b1                	beqz	a5,e882cb78 <SendResponses+0xce2>
    e882cb36:	0d093703          	ld	a4,208(s2)
    e882cb3a:	0d09b783          	ld	a5,208(s3)
    e882cb3e:	02f70d63          	beq	a4,a5,e882cb78 <SendResponses+0xce2>
                        (r2->ImmedAdditional != rr->ImmedAdditional) &&
    e882cb42:	00a95703          	lhu	a4,10(s2)
    e882cb46:	00a9d783          	lhu	a5,10(s3)
    e882cb4a:	02f71763          	bne	a4,a5,e882cb78 <SendResponses+0xce2>
                        SameResourceRecordSignature(r2, rr) &&
    e882cb4e:	85ce                	mv	a1,s3
    e882cb50:	854a                	mv	a0,s2
    e882cb52:	ac4f00ef          	jal	ra,e881ce16 <SameResourceRecordNameClassInterface>
    e882cb56:	c10d                	beqz	a0,e882cb78 <SendResponses+0xce2>
    if (ar->resrec.InterfaceID == mDNSInterface_Any)
    e882cb58:	02093503          	ld	a0,32(s2)
    e882cb5c:	000b3783          	ld	a5,0(s6)
                        IsInterfaceValidForAuthRecord(r2, rr->ImmedAdditional))
    e882cb60:	0d09b583          	ld	a1,208(s3)
    if (ar->resrec.InterfaceID == mDNSInterface_Any)
    e882cb64:	00f51d63          	bne	a0,a5,e882cb7e <SendResponses+0xce8>
        result = mDNSPlatformValidRecordForInterface(ar, InterfaceID);
    e882cb68:	854a                	mv	a0,s2
    e882cb6a:	3b1030ef          	jal	ra,e883071a <mDNSPlatformValidRecordForInterface>
                        SameResourceRecordSignature(r2, rr) &&
    e882cb6e:	c509                	beqz	a0,e882cb78 <SendResponses+0xce2>
                        r2->ImmedAdditional = rr->ImmedAdditional;
    e882cb70:	0d09b783          	ld	a5,208(s3)
    e882cb74:	0cf93823          	sd	a5,208(s2)
                for (r2 = m->ResourceRecords; r2; r2=r2->next)
    e882cb78:	00093903          	ld	s2,0(s2)
    e882cb7c:	bf9d                	j	e882caf2 <SendResponses+0xc5c>
        result = (ar->resrec.InterfaceID == InterfaceID);
    e882cb7e:	40a58533          	sub	a0,a1,a0
    e882cb82:	00153513          	seqz	a0,a0
    e882cb86:	b7e5                	j	e882cb6e <SendResponses+0xcd8>
        if (rr->ImmedAnswer == mDNSInterfaceMark)       // Sending this record on all appropriate interfaces
    e882cb88:	0c893783          	ld	a5,200(s2)
    e882cb8c:	06fa9b63          	bne	s5,a5,e882cc02 <SendResponses+0xd6c>
            rr->SendRNow = !intf ? mDNSNULL : (rr->resrec.InterfaceID) ? rr->resrec.InterfaceID : intf->InterfaceID;
    e882cb90:	4701                	li	a4,0
    e882cb92:	c491                	beqz	s1,e882cb9e <SendResponses+0xd08>
    e882cb94:	02093703          	ld	a4,32(s2)
    e882cb98:	e319                	bnez	a4,e882cb9e <SendResponses+0xd08>
    e882cb9a:	9f09b703          	ld	a4,-1552(s3)
    e882cb9e:	0ce93c23          	sd	a4,216(s2)
            rr->ImmedAdditional = mDNSNULL;             // No need to send as additional if sending as answer
    e882cba2:	0c093823          	sd	zero,208(s2)
            rr->LastMCTime      = m->timenow;
    e882cba6:	24042703          	lw	a4,576(s0)
            if (TimeToAnnounceThisRecord(rr, m->timenow + rr->ThisAPInterval/2))
    e882cbaa:	0b794683          	lbu	a3,183(s2)
            rr->LastMCInterface = rr->ImmedAnswer;
    e882cbae:	12f93023          	sd	a5,288(s2)
            rr->LastMCTime      = m->timenow;
    e882cbb2:	10e92c23          	sw	a4,280(s2)
            rr->ProbeRestartCount = 0;                  // Reset the probe restart count
    e882cbb6:	0a090aa3          	sb	zero,181(s2)
            if (TimeToAnnounceThisRecord(rr, m->timenow + rr->ThisAPInterval/2))
    e882cbba:	ce8d                	beqz	a3,e882cbf4 <SendResponses+0xd5e>
    e882cbbc:	11092703          	lw	a4,272(s2)
    e882cbc0:	24042603          	lw	a2,576(s0)
    e882cbc4:	034747bb          	divw	a5,a4,s4
    e882cbc8:	9f99                	subw	a5,a5,a4
    e882cbca:	9fb1                	addw	a5,a5,a2
    e882cbcc:	11492603          	lw	a2,276(s2)
    e882cbd0:	9f91                	subw	a5,a5,a2
    e882cbd2:	0207c163          	bltz	a5,e882cbf4 <SendResponses+0xd5e>
                rr->AnnounceCount--;
    e882cbd6:	36fd                	addiw	a3,a3,-1
                if (rr->resrec.RecordType != kDNSRecordTypeDeregistering)
    e882cbd8:	00894783          	lbu	a5,8(s2)
                rr->AnnounceCount--;
    e882cbdc:	0ad90ba3          	sb	a3,183(s2)
                if (rr->resrec.RecordType != kDNSRecordTypeDeregistering)
    e882cbe0:	01678663          	beq	a5,s6,e882cbec <SendResponses+0xd56>
                    rr->ThisAPInterval *= 2;
    e882cbe4:	0017171b          	slliw	a4,a4,0x1
    e882cbe8:	10e92823          	sw	a4,272(s2)
                rr->LastAPTime = m->timenow;
    e882cbec:	24042783          	lw	a5,576(s0)
    e882cbf0:	10f92a23          	sw	a5,276(s2)
        SetNextAnnounceProbeTime(m, rr);
    e882cbf4:	85ca                	mv	a1,s2
    e882cbf6:	8522                	mv	a0,s0
    e882cbf8:	95eef0ef          	jal	ra,e881bd56 <SetNextAnnounceProbeTime>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882cbfc:	00093903          	ld	s2,0(s2)
    e882cc00:	b8e5                	j	e882c4f8 <SendResponses+0x662>
        else if (rr->ImmedAnswer)                       // Else, just respond to a single query on single interface:
    e882cc02:	dbed                	beqz	a5,e882cbf4 <SendResponses+0xd5e>
            rr->SendRNow        = rr->ImmedAnswer;      // Just respond on that interface
    e882cc04:	0cf93c23          	sd	a5,216(s2)
            rr->ImmedAdditional = mDNSNULL;             // No need to send as additional too
    e882cc08:	0c093823          	sd	zero,208(s2)
            rr->LastMCTime      = m->timenow;
    e882cc0c:	24042703          	lw	a4,576(s0)
            rr->LastMCInterface = rr->ImmedAnswer;
    e882cc10:	12f93023          	sd	a5,288(s2)
            rr->LastMCTime      = m->timenow;
    e882cc14:	10e92c23          	sw	a4,280(s2)
            rr->LastMCInterface = rr->ImmedAnswer;
    e882cc18:	bff1                	j	e882cbf4 <SendResponses+0xd5e>
            if ((rr->SendRNow == intf->InterfaceID) &&
    e882cc1a:	9f0d3783          	ld	a5,-1552(s10)
    e882cc1e:	0d8db583          	ld	a1,216(s11)
    e882cc22:	1ef59463          	bne	a1,a5,e882ce0a <SendResponses+0xf74>
                ((rr->resrec.InterfaceID == mDNSInterface_Any) && !mDNSPlatformValidRecordForInterface(rr, intf->InterfaceID)))
    e882cc26:	00076797          	auipc	a5,0x76
    e882cc2a:	13a78793          	addi	a5,a5,314 # e88a2d60 <mDNSInterface_Any>
    e882cc2e:	639c                	ld	a5,0(a5)
    e882cc30:	f43e                	sd	a5,40(sp)
            if ((rr->SendRNow == intf->InterfaceID) &&
    e882cc32:	020db783          	ld	a5,32(s11)
    e882cc36:	7722                	ld	a4,40(sp)
    e882cc38:	1ae78963          	beq	a5,a4,e882cdea <SendResponses+0xf54>
                RData  *OldRData    = rr->resrec.rdata;
    e882cc3c:	030db783          	ld	a5,48(s11)
                                (rr->resrec.RecordType != kDNSRecordTypeDeregistering && !ShouldSendGoodbyesBeforeSleep(m, intf, rr));
    e882cc40:	4705                	li	a4,1
    e882cc42:	4881                	li	a7,0
                RData  *OldRData    = rr->resrec.rdata;
    e882cc44:	e0be                	sd	a5,64(sp)
                mDNSu16 oldrdlength = rr->resrec.rdlength;
    e882cc46:	014dd783          	lhu	a5,20(s11)
    e882cc4a:	e4be                	sd	a5,72(sp)
                                (rr->resrec.RecordType != kDNSRecordTypeDeregistering && !ShouldSendGoodbyesBeforeSleep(m, intf, rr));
    e882cc4c:	008dc783          	lbu	a5,8(s11)
    e882cc50:	02e78263          	beq	a5,a4,e882cc74 <SendResponses+0xdde>
    if ((rr->AuthFlags & AuthFlagsWakeOnly) && (m->SleepState != SleepState_Awake))
    e882cc54:	07bdc703          	lbu	a4,123(s11)
                                (rr->resrec.RecordType != kDNSRecordTypeDeregistering && !ShouldSendGoodbyesBeforeSleep(m, intf, rr));
    e882cc58:	28544683          	lbu	a3,645(s0)
    if ((rr->AuthFlags & AuthFlagsWakeOnly) && (m->SleepState != SleepState_Awake))
    e882cc5c:	8b05                	andi	a4,a4,1
                                (rr->resrec.RecordType != kDNSRecordTypeDeregistering && !ShouldSendGoodbyesBeforeSleep(m, intf, rr));
    e882cc5e:	0016b893          	seqz	a7,a3
    if ((rr->AuthFlags & AuthFlagsWakeOnly) && (m->SleepState != SleepState_Awake))
    e882cc62:	eb09                	bnez	a4,e882cc74 <SendResponses+0xdde>
    if (m->SleepState != SleepState_Sleeping)
    e882cc64:	4709                	li	a4,2
                                (rr->resrec.RecordType != kDNSRecordTypeDeregistering && !ShouldSendGoodbyesBeforeSleep(m, intf, rr));
    e882cc66:	4885                	li	a7,1
    if (m->SleepState != SleepState_Sleeping)
    e882cc68:	00e69663          	bne	a3,a4,e882cc74 <SendResponses+0xdde>
    if (!intf->SendGoodbyes)
    e882cc6c:	a6bd4883          	lbu	a7,-1429(s10)
                                (rr->resrec.RecordType != kDNSRecordTypeDeregistering && !ShouldSendGoodbyesBeforeSleep(m, intf, rr));
    e882cc70:	0018b893          	seqz	a7,a7
                if (rr->NewRData && active)
    e882cc74:	008d8693          	addi	a3,s11,8
    e882cc78:	128db703          	ld	a4,296(s11)
    e882cc7c:	ecb6                	sd	a3,88(sp)
    e882cc7e:	cf49                	beqz	a4,e882cd18 <SendResponses+0xe82>
    e882cc80:	08088c63          	beqz	a7,e882cd18 <SendResponses+0xe82>
                    if (ResourceRecordIsValidAnswer(rr) && rr->resrec.RecordType == kDNSRecordTypeShared && rr->RequireGoodbye)
    e882cc84:	03c7f713          	andi	a4,a5,60
    e882cc88:	cf35                	beqz	a4,e882cd04 <SendResponses+0xe6e>
    e882cc8a:	048db703          	ld	a4,72(s11)
    e882cc8e:	c711                	beqz	a4,e882cc9a <SendResponses+0xe04>
    e882cc90:	00874703          	lbu	a4,8(a4)
    e882cc94:	03c77713          	andi	a4,a4,60
    e882cc98:	c735                	beqz	a4,e882cd04 <SendResponses+0xe6e>
    e882cc9a:	050db703          	ld	a4,80(s11)
    e882cc9e:	c711                	beqz	a4,e882ccaa <SendResponses+0xe14>
    e882cca0:	00874703          	lbu	a4,8(a4)
    e882cca4:	03c77713          	andi	a4,a4,60
    e882cca8:	cf31                	beqz	a4,e882cd04 <SendResponses+0xe6e>
    e882ccaa:	058db703          	ld	a4,88(s11)
    e882ccae:	c711                	beqz	a4,e882ccba <SendResponses+0xe24>
    e882ccb0:	00874703          	lbu	a4,8(a4)
    e882ccb4:	03c77713          	andi	a4,a4,60
    e882ccb8:	c731                	beqz	a4,e882cd04 <SendResponses+0xe6e>
    e882ccba:	4721                	li	a4,8
    e882ccbc:	04e79463          	bne	a5,a4,e882cd04 <SendResponses+0xe6e>
    e882ccc0:	0b8dc783          	lbu	a5,184(s11)
    e882ccc4:	c3a1                	beqz	a5,e882cd04 <SendResponses+0xe6e>
                        newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, 0);
    e882ccc6:	7782                	ld	a5,32(sp)
    e882ccc8:	1e67d703          	lhu	a4,486(a5)
    e882cccc:	5a000793          	li	a5,1440
    e882ccd0:	e719                	bnez	a4,e882ccde <SendResponses+0xe48>
    e882ccd2:	7702                	ld	a4,32(sp)
    e882ccd4:	76c2                	ld	a3,48(sp)
    e882ccd6:	1e876703          	lwu	a4,488(a4)
    e882ccda:	40e6978b          	mveqz	a5,a3,a4
    e882ccde:	01390733          	add	a4,s2,s3
    e882cce2:	7662                	ld	a2,56(sp)
    e882cce4:	8f99                	sub	a5,a5,a4
    e882cce6:	97de                	add	a5,a5,s7
    e882cce8:	4701                	li	a4,0
    e882ccea:	008d8693          	addi	a3,s11,8
    e882ccee:	85e2                	mv	a1,s8
    e882ccf0:	855a                	mv	a0,s6
    e882ccf2:	ecc6                	sd	a7,88(sp)
    e882ccf4:	94de90ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
                        if (newptr) { responseptr = newptr; numDereg++; rr->RequireGoodbye = mDNSfalse; }
    e882ccf8:	10050963          	beqz	a0,e882ce0a <SendResponses+0xf74>
    e882ccfc:	68e6                	ld	a7,88(sp)
    e882ccfe:	0a0d8c23          	sb	zero,184(s11)
    e882cd02:	8c2a                	mv	s8,a0
                    SetNewRData(&rr->resrec, rr->NewRData, rr->newrdlength);
    e882cd04:	130dd603          	lhu	a2,304(s11)
    e882cd08:	128db583          	ld	a1,296(s11)
    e882cd0c:	008d8513          	addi	a0,s11,8
    e882cd10:	ecc6                	sd	a7,88(sp)
    e882cd12:	d47e70ef          	jal	ra,e8814a58 <SetNewRData>
    e882cd16:	68e6                	ld	a7,88(sp)
                if (rr->resrec.AnonInfo)
    e882cd18:	040db783          	ld	a5,64(s11)
    e882cd1c:	cf81                	beqz	a5,e882cd34 <SendResponses+0xe9e>
    return (2 + 10 + rr->rdlength);
    e882cd1e:	6b9c                	ld	a5,16(a5)
                    AnoninfoSpace += tmp;
    e882cd20:	6762                	ld	a4,24(sp)
    return (2 + 10 + rr->rdlength);
    e882cd22:	00c7d783          	lhu	a5,12(a5)
    e882cd26:	27b1                	addiw	a5,a5,12
                    AnoninfoSpace += tmp;
    e882cd28:	9f3d                	addw	a4,a4,a5
    e882cd2a:	ec3a                	sd	a4,24(sp)
                    OwnerRecordSpace += tmp;
    e882cd2c:	0127893b          	addw	s2,a5,s2
                    TraceRecordSpace += tmp;
    e882cd30:	013789bb          	addw	s3,a5,s3
                if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e882cd34:	008dc783          	lbu	a5,8(s11)
    e882cd38:	0327f793          	andi	a5,a5,50
    e882cd3c:	c799                	beqz	a5,e882cd4a <SendResponses+0xeb4>
                    rr->resrec.rrclass |= kDNSClass_UniqueRRSet;        // Temporarily set the cache flush bit so PutResourceRecord will set it
    e882cd3e:	00cdd783          	lhu	a5,12(s11)
    e882cd42:	7761                	lui	a4,0xffff8
    e882cd44:	8fd9                	or	a5,a5,a4
    e882cd46:	00fd9623          	sh	a5,12(s11)
                newptr = PutRR_OS_TTL(responseptr, &m->omsg.h.numAnswers, &rr->resrec, active ? rr->resrec.rroriginalttl : 0);
    e882cd4a:	4701                	li	a4,0
    e882cd4c:	00088463          	beqz	a7,e882cd54 <SendResponses+0xebe>
    e882cd50:	010da703          	lw	a4,16(s11)
    e882cd54:	7782                	ld	a5,32(sp)
    e882cd56:	1e67d683          	lhu	a3,486(a5)
    e882cd5a:	5a000793          	li	a5,1440
    e882cd5e:	e699                	bnez	a3,e882cd6c <SendResponses+0xed6>
    e882cd60:	7682                	ld	a3,32(sp)
    e882cd62:	7642                	ld	a2,48(sp)
    e882cd64:	1e86e683          	lwu	a3,488(a3)
    e882cd68:	40d6178b          	mveqz	a5,a2,a3
    e882cd6c:	013906b3          	add	a3,s2,s3
    e882cd70:	7662                	ld	a2,56(sp)
    e882cd72:	8f95                	sub	a5,a5,a3
    e882cd74:	97de                	add	a5,a5,s7
    e882cd76:	008d8693          	addi	a3,s11,8
    e882cd7a:	85e2                	mv	a1,s8
    e882cd7c:	855a                	mv	a0,s6
    e882cd7e:	ecc6                	sd	a7,88(sp)
    e882cd80:	8c1e90ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e882cd84:	87aa                	mv	a5,a0
                rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;           // Make sure to clear cache flush bit back to normal state
    e882cd86:	00cdd703          	lhu	a4,12(s11)
                if (newptr)
    e882cd8a:	68e6                	ld	a7,88(sp)
                rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;           // Make sure to clear cache flush bit back to normal state
    e882cd8c:	3807370b          	extu	a4,a4,14,0
    e882cd90:	00ed9623          	sh	a4,12(s11)
                if (newptr)
    e882cd94:	c501                	beqz	a0,e882cd9c <SendResponses+0xf06>
                mDNSu8 active = (mDNSu8)
    e882cd96:	0b1d8c23          	sb	a7,184(s11)
                    if (rr->resrec.RecordType == kDNSRecordTypeDeregistering) numDereg++;
    e882cd9a:	8c2a                	mv	s8,a0
                if (rr->NewRData && active)
    e882cd9c:	128db703          	ld	a4,296(s11)
    e882cda0:	cb2d                	beqz	a4,e882ce12 <SendResponses+0xf7c>
    e882cda2:	02088163          	beqz	a7,e882cdc4 <SendResponses+0xf2e>
                    SetNewRData(&rr->resrec, OldRData, oldrdlength);
    e882cda6:	6626                	ld	a2,72(sp)
    e882cda8:	6586                	ld	a1,64(sp)
    e882cdaa:	008d8513          	addi	a0,s11,8
    e882cdae:	ecbe                	sd	a5,88(sp)
    e882cdb0:	ca9e70ef          	jal	ra,e8814a58 <SetNewRData>
                if (!pktcount && active && (rr->resrec.RecordType & kDNSRecordTypeActiveUniqueMask) && !rr->SendNSECNow)
    e882cdb4:	67e6                	ld	a5,88(sp)
    e882cdb6:	000c9763          	bnez	s9,e882cdc4 <SendResponses+0xf2e>
    e882cdba:	008dc703          	lbu	a4,8(s11)
    e882cdbe:	03077713          	andi	a4,a4,48
    e882cdc2:	ef29                	bnez	a4,e882ce1c <SendResponses+0xf86>
                if (newptr)     // If succeeded in sending, advance to next interface
    e882cdc4:	c3b9                	beqz	a5,e882ce0a <SendResponses+0xf74>
                    if (rr->resrec.AnonInfo)
    e882cdc6:	040db783          	ld	a5,64(s11)
    e882cdca:	c781                	beqz	a5,e882cdd2 <SendResponses+0xf3c>
                        rr->resrec.AnonInfo->SendNow = intf->InterfaceID;
    e882cdcc:	9f0d3703          	ld	a4,-1552(s10)
    e882cdd0:	ef98                	sd	a4,24(a5)
                    if (rr->ImmedAnswer == mDNSInterfaceMark && rr->resrec.InterfaceID == mDNSInterface_Any)
    e882cdd2:	0c8db783          	ld	a5,200(s11)
    e882cdd6:	00fa9763          	bne	s5,a5,e882cde4 <SendResponses+0xf4e>
    e882cdda:	020db783          	ld	a5,32(s11)
    e882cdde:	7722                	ld	a4,40(sp)
    e882cde0:	00f70963          	beq	a4,a5,e882cdf2 <SendResponses+0xf5c>
                        rr->SendRNow = mDNSNULL;
    e882cde4:	0c0dbc23          	sd	zero,216(s11)
    e882cde8:	a00d                	j	e882ce0a <SendResponses+0xf74>
                ((rr->resrec.InterfaceID == mDNSInterface_Any) && !mDNSPlatformValidRecordForInterface(rr, intf->InterfaceID)))
    e882cdea:	856e                	mv	a0,s11
    e882cdec:	12f030ef          	jal	ra,e883071a <mDNSPlatformValidRecordForInterface>
    e882cdf0:	e519                	bnez	a0,e882cdfe <SendResponses+0xf68>
                        rr->SendRNow = GetNextActiveInterfaceID(intf);
    e882cdf2:	8526                	mv	a0,s1
    e882cdf4:	896e60ef          	jal	ra,e8812e8a <GetNextActiveInterfaceID>
    e882cdf8:	0cadbc23          	sd	a0,216(s11)
    e882cdfc:	a039                	j	e882ce0a <SendResponses+0xf74>
            else if (rr->SendRNow == intf->InterfaceID)
    e882cdfe:	0d8db703          	ld	a4,216(s11)
    e882ce02:	9f0d3783          	ld	a5,-1552(s10)
    e882ce06:	e2f70be3          	beq	a4,a5,e882cc3c <SendResponses+0xda6>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882ce0a:	000dbd83          	ld	s11,0(s11)
    e882ce0e:	f82ff06f          	j	e882c590 <SendResponses+0x6fa>
                if (!pktcount && active && (rr->resrec.RecordType & kDNSRecordTypeActiveUniqueMask) && !rr->SendNSECNow)
    e882ce12:	fa0c99e3          	bnez	s9,e882cdc4 <SendResponses+0xf2e>
    e882ce16:	fa0892e3          	bnez	a7,e882cdba <SendResponses+0xf24>
    e882ce1a:	b76d                	j	e882cdc4 <SendResponses+0xf2e>
    e882ce1c:	0c0db703          	ld	a4,192(s11)
    e882ce20:	f355                	bnez	a4,e882cdc4 <SendResponses+0xf2e>
                    rr->SendNSECNow = mDNSInterfaceMark;
    e882ce22:	0d5db023          	sd	s5,192(s11)
    e882ce26:	bf79                	j	e882cdc4 <SendResponses+0xf2e>
            if (rr->resrec.AnonInfo && rr->resrec.AnonInfo->SendNow == intf->InterfaceID)
    e882ce28:	040db783          	ld	a5,64(s11)
    e882ce2c:	c7d1                	beqz	a5,e882ceb8 <SendResponses+0x1022>
    e882ce2e:	7722                	ld	a4,40(sp)
    e882ce30:	6f94                	ld	a3,24(a5)
    e882ce32:	9f073703          	ld	a4,-1552(a4) # ffffffffffff79f0 <__DRAM0_INF_BASE+0xffffffff000079f0>
    e882ce36:	08e69163          	bne	a3,a4,e882ceb8 <SendResponses+0x1022>
                ResourceRecord *nsec3RR = rr->resrec.AnonInfo->nsec3RR;
    e882ce3a:	6b94                	ld	a3,16(a5)
                newptr = PutRR_OS_TTL(newptr, &m->omsg.h.numAuthorities, nsec3RR,  nsec3RR->rroriginalttl);
    e882ce3c:	67e2                	ld	a5,24(sp)
    e882ce3e:	4698                	lw	a4,8(a3)
    e882ce40:	1e67d603          	lhu	a2,486(a5)
    e882ce44:	5a000793          	li	a5,1440
    e882ce48:	ea01                	bnez	a2,e882ce58 <SendResponses+0xfc2>
    e882ce4a:	6662                	ld	a2,24(sp)
    e882ce4c:	1e866603          	lwu	a2,488(a2)
    e882ce50:	e601                	bnez	a2,e882ce58 <SendResponses+0xfc2>
    e882ce52:	6789                	lui	a5,0x2
    e882ce54:	2ec78793          	addi	a5,a5,748 # 22ec <memcmp-0xe87fdd14>
    e882ce58:	7602                	ld	a2,32(sp)
    e882ce5a:	85e2                	mv	a1,s8
    e882ce5c:	855a                	mv	a0,s6
    e882ce5e:	8f91                	sub	a5,a5,a2
    e882ce60:	7642                	ld	a2,48(sp)
    e882ce62:	97de                	add	a5,a5,s7
    e882ce64:	fdce90ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e882ce68:	8c2a                	mv	s8,a0
                if (newptr)
    e882ce6a:	e939                	bnez	a0,e882cec0 <SendResponses+0x102a>
                    LogMsg("SendResponses: Cannot add NSEC3 %s, OwnerRecordSpace %d, TraceRecordSpace %d, limit %p", ARDisplayString(m, rr), OwnerRecordSpace,
    e882ce6c:	030db583          	ld	a1,48(s11)
    e882ce70:	6606                	ld	a2,64(sp)
    e882ce72:	008d8513          	addi	a0,s11,8
    e882ce76:	0591                	addi	a1,a1,4
    e882ce78:	b9de90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882ce7c:	862a                	mv	a2,a0
    e882ce7e:	67e2                	ld	a5,24(sp)
    e882ce80:	1e67d703          	lhu	a4,486(a5)
    e882ce84:	5a000793          	li	a5,1440
    e882ce88:	eb01                	bnez	a4,e882ce98 <SendResponses+0x1002>
    e882ce8a:	6762                	ld	a4,24(sp)
    e882ce8c:	1e876703          	lwu	a4,488(a4)
    e882ce90:	e701                	bnez	a4,e882ce98 <SendResponses+0x1002>
    e882ce92:	6789                	lui	a5,0x2
    e882ce94:	2ec78793          	addi	a5,a5,748 # 22ec <memcmp-0xe87fdd14>
    e882ce98:	7702                	ld	a4,32(sp)
    e882ce9a:	86ca                	mv	a3,s2
    e882ce9c:	0007a597          	auipc	a1,0x7a
    e882cea0:	dbc58593          	addi	a1,a1,-580 # e88a6c58 <end.8789+0x35b0>
    e882cea4:	8f99                	sub	a5,a5,a4
    e882cea6:	97de                	add	a5,a5,s7
    e882cea8:	874e                	mv	a4,s3
    e882ceaa:	4501                	li	a0,0
    e882ceac:	600020ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                rr->resrec.AnonInfo->SendNow = mDNSNULL;
    e882ceb0:	040db783          	ld	a5,64(s11)
    e882ceb4:	0007bc23          	sd	zero,24(a5)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882ceb8:	000dbd83          	ld	s11,0(s11)
    e882cebc:	f0cff06f          	j	e882c5c8 <SendResponses+0x732>
    e882cec0:	8d2a                	mv	s10,a0
    e882cec2:	b7fd                	j	e882ceb0 <SendResponses+0x101a>
            if (rr->ImmedAdditional == intf->InterfaceID)
    e882cec4:	0d0c3703          	ld	a4,208(s8)
    e882cec8:	9f08b783          	ld	a5,-1552(a7)
    e882cecc:	12f71963          	bne	a4,a5,e882cffe <SendResponses+0x1168>
                if (ResourceRecordIsValidAnswer(rr))
    e882ced0:	008c4783          	lbu	a5,8(s8)
    e882ced4:	03c7f713          	andi	a4,a5,60
    e882ced8:	12070363          	beqz	a4,e882cffe <SendResponses+0x1168>
    e882cedc:	048c3703          	ld	a4,72(s8)
    e882cee0:	c719                	beqz	a4,e882ceee <SendResponses+0x1058>
    e882cee2:	00874703          	lbu	a4,8(a4)
    e882cee6:	03c77713          	andi	a4,a4,60
    e882ceea:	10070a63          	beqz	a4,e882cffe <SendResponses+0x1168>
    e882ceee:	050c3703          	ld	a4,80(s8)
    e882cef2:	c719                	beqz	a4,e882cf00 <SendResponses+0x106a>
    e882cef4:	00874703          	lbu	a4,8(a4)
    e882cef8:	03c77713          	andi	a4,a4,60
    e882cefc:	10070163          	beqz	a4,e882cffe <SendResponses+0x1168>
    e882cf00:	058c3703          	ld	a4,88(s8)
    e882cf04:	c711                	beqz	a4,e882cf10 <SendResponses+0x107a>
    e882cf06:	00874703          	lbu	a4,8(a4)
    e882cf0a:	03c77713          	andi	a4,a4,60
    e882cf0e:	cb65                	beqz	a4,e882cffe <SendResponses+0x1168>
                    mDNSBool SendAdditional = (m->omsg.h.numAnswers > 0);
    e882cf10:	01440733          	add	a4,s0,s4
                    if (!SendAdditional && (rr->resrec.RecordType & kDNSRecordTypeUniqueMask))
    e882cf14:	1e675703          	lhu	a4,486(a4)
    e882cf18:	eb21                	bnez	a4,e882cf68 <SendResponses+0x10d2>
    e882cf1a:	0327f793          	andi	a5,a5,50
    e882cf1e:	c789                	beqz	a5,e882cf28 <SendResponses+0x1092>
                        for (a = m->ResourceRecords; a; a=a->next)
    e882cf20:	7782                	ld	a5,32(sp)
    e882cf22:	1b87b783          	ld	a5,440(a5)
    e882cf26:	e781                	bnez	a5,e882cf2e <SendResponses+0x1098>
                        rr->ImmedAdditional = mDNSNULL;     // then cancel its ImmedAdditional field
    e882cf28:	0c0c3823          	sd	zero,208(s8)
    e882cf2c:	a8c9                	j	e882cffe <SendResponses+0x1168>
                            if (a->LastMCTime      == m->timenow &&
    e882cf2e:	1187a683          	lw	a3,280(a5)
    e882cf32:	24042703          	lw	a4,576(s0)
    e882cf36:	00e68463          	beq	a3,a4,e882cf3e <SendResponses+0x10a8>
                        for (a = m->ResourceRecords; a; a=a->next)
    e882cf3a:	639c                	ld	a5,0(a5)
    e882cf3c:	b7ed                	j	e882cf26 <SendResponses+0x1090>
                            if (a->LastMCTime      == m->timenow &&
    e882cf3e:	1207b683          	ld	a3,288(a5)
    e882cf42:	9f08b703          	ld	a4,-1552(a7)
    e882cf46:	fee69ae3          	bne	a3,a4,e882cf3a <SendResponses+0x10a4>
                                a->LastMCInterface == intf->InterfaceID &&
    e882cf4a:	00a7d683          	lhu	a3,10(a5)
    e882cf4e:	00ac5703          	lhu	a4,10(s8)
    e882cf52:	fee694e3          	bne	a3,a4,e882cf3a <SendResponses+0x10a4>
                                SameResourceRecordSignature(a, rr)) { SendAdditional = mDNStrue; break; }
    e882cf56:	853e                	mv	a0,a5
    e882cf58:	85e2                	mv	a1,s8
    e882cf5a:	f846                	sd	a7,48(sp)
    e882cf5c:	f43e                	sd	a5,40(sp)
    e882cf5e:	eb9ef0ef          	jal	ra,e881ce16 <SameResourceRecordNameClassInterface>
    e882cf62:	77a2                	ld	a5,40(sp)
    e882cf64:	78c2                	ld	a7,48(sp)
    e882cf66:	d971                	beqz	a0,e882cf3a <SendResponses+0x10a4>
                    else if (newptr)                        // Else, try to add it if we can
    e882cf68:	080d0b63          	beqz	s10,e882cffe <SendResponses+0x1168>
                        if (!pktcount && (rr->resrec.RecordType & kDNSRecordTypeActiveUniqueMask) && !rr->SendNSECNow)
    e882cf6c:	008c4783          	lbu	a5,8(s8)
    e882cf70:	000c9c63          	bnez	s9,e882cf88 <SendResponses+0x10f2>
    e882cf74:	0307f713          	andi	a4,a5,48
    e882cf78:	cb01                	beqz	a4,e882cf88 <SendResponses+0x10f2>
    e882cf7a:	0c0c3703          	ld	a4,192(s8)
    e882cf7e:	e709                	bnez	a4,e882cf88 <SendResponses+0x10f2>
                            rr->SendNSECNow = mDNSInterfaceMark;
    e882cf80:	6746                	ld	a4,80(sp)
    e882cf82:	6318                	ld	a4,0(a4)
    e882cf84:	0cec3023          	sd	a4,192(s8)
                        if (rr->resrec.RecordType & kDNSRecordTypeUniqueMask)
    e882cf88:	0327f793          	andi	a5,a5,50
    e882cf8c:	c799                	beqz	a5,e882cf9a <SendResponses+0x1104>
                            rr->resrec.rrclass |= kDNSClass_UniqueRRSet;    // Temporarily set the cache flush bit so PutResourceRecord will set it
    e882cf8e:	00cc5783          	lhu	a5,12(s8)
    e882cf92:	7761                	lui	a4,0xffff8
    e882cf94:	8fd9                	or	a5,a5,a4
    e882cf96:	00fc1623          	sh	a5,12(s8)
                        newptr = PutRR_OS(newptr, &m->omsg.h.numAdditionals, &rr->resrec);
    e882cf9a:	01440633          	add	a2,s0,s4
    e882cf9e:	1e665583          	lhu	a1,486(a2)
    e882cfa2:	008c0693          	addi	a3,s8,8
    e882cfa6:	010c2703          	lw	a4,16(s8)
    e882cfaa:	5a000793          	li	a5,1440
    e882cfae:	e599                	bnez	a1,e882cfbc <SendResponses+0x1126>
    e882cfb0:	1e866603          	lwu	a2,488(a2)
    e882cfb4:	e601                	bnez	a2,e882cfbc <SendResponses+0x1126>
    e882cfb6:	6789                	lui	a5,0x2
    e882cfb8:	2ec78793          	addi	a5,a5,748 # 22ec <memcmp-0xe87fdd14>
    e882cfbc:	01390633          	add	a2,s2,s3
    e882cfc0:	8f91                	sub	a5,a5,a2
    e882cfc2:	6662                	ld	a2,24(sp)
    e882cfc4:	97de                	add	a5,a5,s7
    e882cfc6:	85ea                	mv	a1,s10
    e882cfc8:	855a                	mv	a0,s6
    e882cfca:	f446                	sd	a7,40(sp)
    e882cfcc:	e74e90ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e882cfd0:	8d2a                	mv	s10,a0
                        rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;       // Make sure to clear cache flush bit back to normal state
    e882cfd2:	00cc5783          	lhu	a5,12(s8)
                        if (newptr)
    e882cfd6:	78a2                	ld	a7,40(sp)
                        rr->resrec.rrclass &= ~kDNSClass_UniqueRRSet;       // Make sure to clear cache flush bit back to normal state
    e882cfd8:	3807b78b          	extu	a5,a5,14,0
    e882cfdc:	00fc1623          	sh	a5,12(s8)
                        if (newptr)
    e882cfe0:	cd19                	beqz	a0,e882cffe <SendResponses+0x1168>
                            rr->RequireGoodbye = mDNStrue;
    e882cfe2:	4785                	li	a5,1
                            rr->ImmedAdditional = mDNSNULL;
    e882cfe4:	0c0c3823          	sd	zero,208(s8)
                            rr->RequireGoodbye = mDNStrue;
    e882cfe8:	0afc0c23          	sb	a5,184(s8)
                            rr->LastMCTime      = m->timenow;
    e882cfec:	24042783          	lw	a5,576(s0)
                            rr->LastMCInterface = intf->InterfaceID;
    e882cff0:	8daa                	mv	s11,a0
                            rr->LastMCTime      = m->timenow;
    e882cff2:	10fc2c23          	sw	a5,280(s8)
                            rr->LastMCInterface = intf->InterfaceID;
    e882cff6:	9f08b783          	ld	a5,-1552(a7)
    e882cffa:	12fc3023          	sd	a5,288(s8)
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882cffe:	000c3c03          	ld	s8,0(s8)
    e882d002:	de4ff06f          	j	e882c5e6 <SendResponses+0x750>
            if (rr->SendNSECNow == mDNSInterfaceMark || rr->SendNSECNow == intf->InterfaceID)
    e882d006:	0c0c3783          	ld	a5,192(s8)
    e882d00a:	00fa8763          	beq	s5,a5,e882d018 <SendResponses+0x1182>
    e882d00e:	6762                	ld	a4,24(sp)
    e882d010:	9f073703          	ld	a4,-1552(a4) # ffffffffffff79f0 <__DRAM0_INF_BASE+0xffffffff000079f0>
    e882d014:	10e79263          	bne	a5,a4,e882d118 <SendResponses+0x1282>
                mDNS_SetupResourceRecord(&nsec, mDNSNULL, mDNSInterface_Any, kDNSType_NSEC, rr->resrec.rroriginalttl, kDNSRecordTypeUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e882d018:	00076617          	auipc	a2,0x76
    e882d01c:	d4860613          	addi	a2,a2,-696 # e88a2d60 <mDNSInterface_Any>
    e882d020:	010c2703          	lw	a4,16(s8)
    e882d024:	6210                	ld	a2,0(a2)
    e882d026:	4881                	li	a7,0
    e882d028:	4801                	li	a6,0
    e882d02a:	4789                	li	a5,2
    e882d02c:	02f00693          	li	a3,47
    e882d030:	4581                	li	a1,0
    e882d032:	0108                	addi	a0,sp,128
    e882d034:	e002                	sd	zero,0(sp)
    e882d036:	d95e60ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
                nsec.resrec.rrclass |= kDNSClass_UniqueRRSet;
    e882d03a:	08c15783          	lhu	a5,140(sp)
    e882d03e:	7761                	lui	a4,0xffff8
    e882d040:	8fd9                	or	a5,a5,a4
    e882d042:	08f11623          	sh	a5,140(sp)
                AssignDomainName(&nsec.namestorage, rr->resrec.name);
    e882d046:	028c3503          	ld	a0,40(s8)
    e882d04a:	10050593          	addi	a1,a0,256
    e882d04e:	8fee60ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882d052:	0005061b          	sext.w	a2,a0
    e882d056:	10000793          	li	a5,256
    e882d05a:	0cc7e363          	bltu	a5,a2,e882d120 <SendResponses+0x128a>
    e882d05e:	028c3583          	ld	a1,40(s8)
    e882d062:	0508                	addi	a0,sp,640
    e882d064:	23d020ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                len = DomainNameLength(rr->resrec.name);
    e882d068:	028c3503          	ld	a0,40(s8)
    e882d06c:	10050593          	addi	a1,a0,256
    e882d070:	8dce60ef          	jal	ra,e881314c <DomainNameLengthLimit>
                nsec.resrec.rdlength = len + 2 + NSEC_MCAST_WINDOW_SIZE;
    e882d074:	0225061b          	addiw	a2,a0,34
    e882d078:	3c06360b          	extu	a2,a2,15,0
    e882d07c:	08c11a23          	sh	a2,148(sp)
                if (nsec.resrec.rdlength <= StandardAuthRDSize)
    e882d080:	10800713          	li	a4,264
    e882d084:	2601                	sext.w	a2,a2
    e882d086:	16c76863          	bltu	a4,a2,e882d1f6 <SendResponses+0x1360>
                    mDNSPlatformMemZero(ptr, nsec.resrec.rdlength);
    e882d08a:	38410d13          	addi	s10,sp,900
    e882d08e:	85b2                	mv	a1,a2
    e882d090:	f82a                	sd	a0,48(sp)
    e882d092:	856a                	mv	a0,s10
    e882d094:	263020ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
                    AssignDomainName((domainname *)ptr, rr->resrec.name);
    e882d098:	028c3503          	ld	a0,40(s8)
    e882d09c:	10050593          	addi	a1,a0,256
    e882d0a0:	8ace60ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882d0a4:	0005061b          	sext.w	a2,a0
    e882d0a8:	10000713          	li	a4,256
    e882d0ac:	77c2                	ld	a5,48(sp)
    e882d0ae:	06c76c63          	bltu	a4,a2,e882d126 <SendResponses+0x1290>
    e882d0b2:	028c3583          	ld	a1,40(s8)
    e882d0b6:	856a                	mv	a0,s10
    e882d0b8:	1e9020ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    e882d0bc:	77c2                	ld	a5,48(sp)
                    *ptr++ = 0; // window number
    e882d0be:	6689                	lui	a3,0x2
                    ptr += len;
    e882d0c0:	00fd0733          	add	a4,s10,a5
                    *ptr++ = 0; // window number
    e882d0c4:	20fd568b          	srh	a3,s10,a5,0
                    for (r2 = m->ResourceRecords; r2; r2=r2->next)
    e882d0c8:	7782                	ld	a5,32(sp)
                    *ptr++ = NSEC_MCAST_WINDOW_SIZE; // window length
    e882d0ca:	0709                	addi	a4,a4,2
                            else ptr[r2->resrec.rrtype >> 3] |= 128 >> (r2->resrec.rrtype & 7);
    e882d0cc:	08000613          	li	a2,128
                    for (r2 = m->ResourceRecords; r2; r2=r2->next)
    e882d0d0:	1b87bd03          	ld	s10,440(a5)
    e882d0d4:	040d1c63          	bnez	s10,e882d12c <SendResponses+0x1296>
                        newptr = PutRR_OS(responseptr, &m->omsg.h.numAdditionals, &nsec.resrec);
    e882d0d8:	014406b3          	add	a3,s0,s4
    e882d0dc:	1e66d603          	lhu	a2,486(a3) # 21e6 <memcmp-0xe87fde1a>
    e882d0e0:	474a                	lw	a4,144(sp)
    e882d0e2:	5a000793          	li	a5,1440
    e882d0e6:	e619                	bnez	a2,e882d0f4 <SendResponses+0x125e>
    e882d0e8:	1e86e683          	lwu	a3,488(a3)
    e882d0ec:	e681                	bnez	a3,e882d0f4 <SendResponses+0x125e>
    e882d0ee:	6789                	lui	a5,0x2
    e882d0f0:	2ec78793          	addi	a5,a5,748 # 22ec <memcmp-0xe87fdd14>
    e882d0f4:	013906b3          	add	a3,s2,s3
    e882d0f8:	7622                	ld	a2,40(sp)
    e882d0fa:	8f95                	sub	a5,a5,a3
    e882d0fc:	97de                	add	a5,a5,s7
    e882d0fe:	0134                	addi	a3,sp,136
    e882d100:	85ee                	mv	a1,s11
    e882d102:	855a                	mv	a0,s6
    e882d104:	d3ce90ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e882d108:	8d2a                	mv	s10,a0
                        if (newptr) responseptr = newptr;
    e882d10a:	0e051e63          	bnez	a0,e882d206 <SendResponses+0x1370>
                if (newptr || rr->SendNSECNow == mDNSInterfaceMark)
    e882d10e:	0c0c3783          	ld	a5,192(s8)
    e882d112:	4d01                	li	s10,0
    e882d114:	08fa8c63          	beq	s5,a5,e882d1ac <SendResponses+0x1316>
        for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882d118:	000c3c03          	ld	s8,0(s8)
    e882d11c:	ce6ff06f          	j	e882c602 <SendResponses+0x76c>
                AssignDomainName(&nsec.namestorage, rr->resrec.name);
    e882d120:	28010023          	sb	zero,640(sp)
    e882d124:	b791                	j	e882d068 <SendResponses+0x11d2>
                    AssignDomainName((domainname *)ptr, rr->resrec.name);
    e882d126:	38010223          	sb	zero,900(sp)
    e882d12a:	bf51                	j	e882d0be <SendResponses+0x1228>
                        if (ResourceRecordIsValidAnswer(r2) && SameResourceRecordNameClassInterface(r2, rr))
    e882d12c:	008d4783          	lbu	a5,8(s10)
    e882d130:	03c7f793          	andi	a5,a5,60
    e882d134:	cfd5                	beqz	a5,e882d1f0 <SendResponses+0x135a>
    e882d136:	048d3783          	ld	a5,72(s10)
    e882d13a:	c791                	beqz	a5,e882d146 <SendResponses+0x12b0>
    e882d13c:	0087c783          	lbu	a5,8(a5)
    e882d140:	03c7f793          	andi	a5,a5,60
    e882d144:	c7d5                	beqz	a5,e882d1f0 <SendResponses+0x135a>
    e882d146:	050d3783          	ld	a5,80(s10)
    e882d14a:	c791                	beqz	a5,e882d156 <SendResponses+0x12c0>
    e882d14c:	0087c783          	lbu	a5,8(a5)
    e882d150:	03c7f793          	andi	a5,a5,60
    e882d154:	cfd1                	beqz	a5,e882d1f0 <SendResponses+0x135a>
    e882d156:	058d3783          	ld	a5,88(s10)
    e882d15a:	c791                	beqz	a5,e882d166 <SendResponses+0x12d0>
    e882d15c:	0087c783          	lbu	a5,8(a5)
    e882d160:	03c7f793          	andi	a5,a5,60
    e882d164:	c7d1                	beqz	a5,e882d1f0 <SendResponses+0x135a>
    e882d166:	85e2                	mv	a1,s8
    e882d168:	856a                	mv	a0,s10
    e882d16a:	e0b2                	sd	a2,64(sp)
    e882d16c:	f83a                	sd	a4,48(sp)
    e882d16e:	ca9ef0ef          	jal	ra,e881ce16 <SameResourceRecordNameClassInterface>
    e882d172:	7742                	ld	a4,48(sp)
    e882d174:	0fe00693          	li	a3,254
    e882d178:	6606                	ld	a2,64(sp)
    e882d17a:	c93d                	beqz	a0,e882d1f0 <SendResponses+0x135a>
                            if (r2->resrec.rrtype >= kDNSQType_ANY) { LogMsg("SendResponses: Can't create NSEC for record %s", ARDisplayString(m, r2)); break; }
    e882d17c:	00ad5783          	lhu	a5,10(s10)
    e882d180:	04f6fe63          	bgeu	a3,a5,e882d1dc <SendResponses+0x1346>
    e882d184:	030d3583          	ld	a1,48(s10)
    e882d188:	03b40613          	addi	a2,s0,59
    e882d18c:	008d0513          	addi	a0,s10,8
    e882d190:	0591                	addi	a1,a1,4
    e882d192:	883e90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882d196:	862a                	mv	a2,a0
    e882d198:	0007a597          	auipc	a1,0x7a
    e882d19c:	b1858593          	addi	a1,a1,-1256 # e88a6cb0 <end.8789+0x3608>
    e882d1a0:	4501                	li	a0,0
    e882d1a2:	30a020ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882d1a6:	8d6e                	mv	s10,s11
                if (newptr || rr->SendNSECNow == mDNSInterfaceMark)
    e882d1a8:	f60d03e3          	beqz	s10,e882d10e <SendResponses+0x1278>
                    for (r2 = rr->next; r2; r2=r2->next)
    e882d1ac:	000c3783          	ld	a5,0(s8)
                    rr->SendNSECNow = mDNSNULL;
    e882d1b0:	0c0c3023          	sd	zero,192(s8)
                    for (r2 = rr->next; r2; r2=r2->next)
    e882d1b4:	d3b5                	beqz	a5,e882d118 <SendResponses+0x1282>
                        if (SameResourceRecordNameClassInterface(r2, rr))
    e882d1b6:	853e                	mv	a0,a5
    e882d1b8:	85e2                	mv	a1,s8
    e882d1ba:	f83e                	sd	a5,48(sp)
    e882d1bc:	c5bef0ef          	jal	ra,e881ce16 <SameResourceRecordNameClassInterface>
    e882d1c0:	77c2                	ld	a5,48(sp)
    e882d1c2:	c919                	beqz	a0,e882d1d8 <SendResponses+0x1342>
                            if (r2->SendNSECNow == mDNSInterfaceMark || r2->SendNSECNow == intf->InterfaceID)
    e882d1c4:	63f8                	ld	a4,192(a5)
    e882d1c6:	00ea8763          	beq	s5,a4,e882d1d4 <SendResponses+0x133e>
    e882d1ca:	66e2                	ld	a3,24(sp)
    e882d1cc:	9f06b683          	ld	a3,-1552(a3)
    e882d1d0:	00d71463          	bne	a4,a3,e882d1d8 <SendResponses+0x1342>
                                r2->SendNSECNow = mDNSNULL;
    e882d1d4:	0c07b023          	sd	zero,192(a5)
                    for (r2 = rr->next; r2; r2=r2->next)
    e882d1d8:	639c                	ld	a5,0(a5)
    e882d1da:	bfe9                	j	e882d1b4 <SendResponses+0x131e>
                            else ptr[r2->resrec.rrtype >> 3] |= 128 >> (r2->resrec.rrtype & 7);
    e882d1dc:	0037d593          	srli	a1,a5,0x3
    e882d1e0:	80b7450b          	lrbu	a0,a4,a1,0
    e882d1e4:	8b9d                	andi	a5,a5,7
    e882d1e6:	40f657bb          	sraw	a5,a2,a5
    e882d1ea:	8fc9                	or	a5,a5,a0
    e882d1ec:	00b7578b          	srb	a5,a4,a1,0
                    for (r2 = m->ResourceRecords; r2; r2=r2->next)
    e882d1f0:	000d3d03          	ld	s10,0(s10)
    e882d1f4:	b5c5                	j	e882d0d4 <SendResponses+0x123e>
                else LogMsg("SendResponses: not enough space (%d)  in authrecord for nsec", nsec.resrec.rdlength);
    e882d1f6:	0007a597          	auipc	a1,0x7a
    e882d1fa:	aea58593          	addi	a1,a1,-1302 # e88a6ce0 <end.8789+0x3638>
    e882d1fe:	4501                	li	a0,0
    e882d200:	2ac020ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882d204:	b755                	j	e882d1a8 <SendResponses+0x1312>
    e882d206:	8daa                	mv	s11,a0
    e882d208:	b755                	j	e882d1ac <SendResponses+0x1316>
                    SetupOwnerOpt(m, intf, &opt.resrec.rdata->u.opt[0]);
    e882d20a:	85a6                	mv	a1,s1
    e882d20c:	8522                	mv	a0,s0
    e882d20e:	d20ee0ef          	jal	ra,e881b72e <SetupOwnerOpt>
    e882d212:	c84ff06f          	j	e882c696 <SendResponses+0x800>
                else if (TraceRecordSpace)
    e882d216:	c8098063          	beqz	s3,e882c696 <SendResponses+0x800>
                    SetupTracerOpt(m, &opt.resrec.rdata->u.opt[0]);
    e882d21a:	670d                	lui	a4,0x3
    e882d21c:	9722                	add	a4,a4,s0
    e882d21e:	1f474703          	lbu	a4,500(a4) # 31f4 <memcmp-0xe87fce0c>
    e882d222:	77ca                	ld	a5,176(sp)
    Trace->u.tracer.platf    = m->mDNS_plat;
    e882d224:	00e78423          	sb	a4,8(a5)
    Trace->u.tracer.mDNSv    = DNS_VERS;
    e882d228:	00860737          	lui	a4,0x860
    e882d22c:	9457071b          	addiw	a4,a4,-1723
    e882d230:	c7d8                	sw	a4,12(a5)
    Trace->opt              = kDNSOpt_Trace;
    e882d232:	00060737          	lui	a4,0x60
    e882d236:	de97071b          	addiw	a4,a4,-535
    e882d23a:	c3d8                	sw	a4,4(a5)
    e882d23c:	c5aff06f          	j	e882c696 <SendResponses+0x800>
                    LogMsg("SendResponses: How did we fail to have space for %s %s OPT record (%d/%d/%d/%d) %s", OwnerRecordSpace ? "OWNER" : "", TraceRecordSpace ? "TRACER" : "",
    e882d240:	00079c17          	auipc	s8,0x79
    e882d244:	348c0c13          	addi	s8,s8,840 # e88a6588 <end.8789+0x2ee0>
    e882d248:	00091663          	bnez	s2,e882d254 <SendResponses+0x13be>
    e882d24c:	00094c17          	auipc	s8,0x94
    e882d250:	024c0c13          	addi	s8,s8,36 # e88c1270 <kHTTPServerClass+0x90>
    e882d254:	00079697          	auipc	a3,0x79
    e882d258:	33c68693          	addi	a3,a3,828 # e88a6590 <end.8789+0x2ee8>
    e882d25c:	00099663          	bnez	s3,e882d268 <SendResponses+0x13d2>
    e882d260:	00094697          	auipc	a3,0x94
    e882d264:	01068693          	addi	a3,a3,16 # e88c1270 <kHTTPServerClass+0x90>
    e882d268:	75ca                	ld	a1,176(sp)
    e882d26a:	01440733          	add	a4,s0,s4
    e882d26e:	1e475703          	lhu	a4,484(a4) # 601e4 <memcmp-0xe879fe1c>
    e882d272:	03b40613          	addi	a2,s0,59
    e882d276:	0591                	addi	a1,a1,4
    e882d278:	0128                	addi	a0,sp,136
    e882d27a:	e0b6                	sd	a3,64(sp)
    e882d27c:	f846                	sd	a7,48(sp)
    e882d27e:	f442                	sd	a6,40(sp)
    e882d280:	f03e                	sd	a5,32(sp)
    e882d282:	ec3a                	sd	a4,24(sp)
    e882d284:	f90e90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882d288:	e02a                	sd	a0,0(sp)
    e882d28a:	78c2                	ld	a7,48(sp)
    e882d28c:	7822                	ld	a6,40(sp)
    e882d28e:	7782                	ld	a5,32(sp)
    e882d290:	6762                	ld	a4,24(sp)
    e882d292:	6686                	ld	a3,64(sp)
    e882d294:	8662                	mv	a2,s8
    e882d296:	0007a597          	auipc	a1,0x7a
    e882d29a:	ad258593          	addi	a1,a1,-1326 # e88a6d68 <end.8789+0x36c0>
    e882d29e:	4501                	li	a0,0
    e882d2a0:	cb4ff06f          	j	e882c754 <SendResponses+0x8be>
    e882d2a4:	8daa                	mv	s11,a0
    e882d2a6:	cb2ff06f          	j	e882c758 <SendResponses+0x8c2>
            const NetworkInterfaceInfo *next = GetFirstActiveInterface(intf->next);
    e882d2aa:	6088                	ld	a0,0(s1)
            pktcount = 0;       // When we move to a new interface, reset packet count back to zero -- NSEC generation logic uses it
    e882d2ac:	4c81                	li	s9,0
            const NetworkInterfaceInfo *next = GetFirstActiveInterface(intf->next);
    e882d2ae:	bcfe50ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882d2b2:	84aa                	mv	s1,a0
            pktcount = 0;       // When we move to a new interface, reset packet count back to zero -- NSEC generation logic uses it
    e882d2b4:	a5aff06f          	j	e882c50e <SendResponses+0x678>
        m->CurrentRecord = rr->next;
    e882d2b8:	609c                	ld	a5,0(s1)
    e882d2ba:	1cf93823          	sd	a5,464(s2)
        if (rr->SendRNow)
    e882d2be:	0d84bd03          	ld	s10,216(s1)
    e882d2c2:	040d0363          	beqz	s10,e882d308 <SendResponses+0x1472>
            if (rr->ARType != AuthRecordLocalOnly && rr->ARType != AuthRecordP2P)
    e882d2c6:	0ac4c783          	lbu	a5,172(s1)
    e882d2ca:	37f1                	addiw	a5,a5,-4
    e882d2cc:	0ff7f793          	andi	a5,a5,255
    e882d2d0:	02f9fa63          	bgeu	s3,a5,e882d304 <SendResponses+0x146e>
                LogInfo("SendResponses: No active interface %d to send: %d %02X %s",
    e882d2d4:	000aa783          	lw	a5,0(s5)
    e882d2d8:	c795                	beqz	a5,e882d304 <SendResponses+0x146e>
    e882d2da:	788c                	ld	a1,48(s1)
    e882d2dc:	5094                	lw	a3,32(s1)
    e882d2de:	0084c703          	lbu	a4,8(s1)
    e882d2e2:	865a                	mv	a2,s6
    e882d2e4:	0591                	addi	a1,a1,4
    e882d2e6:	00848513          	addi	a0,s1,8
    e882d2ea:	f036                	sd	a3,32(sp)
    e882d2ec:	ec3a                	sd	a4,24(sp)
    e882d2ee:	f26e90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882d2f2:	87aa                	mv	a5,a0
    e882d2f4:	6762                	ld	a4,24(sp)
    e882d2f6:	7682                	ld	a3,32(sp)
    e882d2f8:	000d061b          	sext.w	a2,s10
    e882d2fc:	85de                	mv	a1,s7
    e882d2fe:	450d                	li	a0,3
    e882d300:	1ac020ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            rr->SendRNow = mDNSNULL;
    e882d304:	0c04bc23          	sd	zero,216(s1)
        if (rr->ImmedAnswer || rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e882d308:	64fc                	ld	a5,200(s1)
    e882d30a:	e789                	bnez	a5,e882d314 <SendResponses+0x147e>
    e882d30c:	0084c783          	lbu	a5,8(s1)
    e882d310:	d5379963          	bne	a5,s3,e882c862 <SendResponses+0x9cc>
            if (rr->NewRData) CompleteRDataUpdate(m, rr);   // Update our rdata, clear the NewRData pointer, and return memory to the client
    e882d314:	1284b783          	ld	a5,296(s1)
    e882d318:	c789                	beqz	a5,e882d322 <SendResponses+0x148c>
    e882d31a:	85a6                	mv	a1,s1
    e882d31c:	8522                	mv	a0,s0
    e882d31e:	e45ee0ef          	jal	ra,e881c162 <CompleteRDataUpdate>
            if (rr->resrec.RecordType == kDNSRecordTypeDeregistering && rr->AnnounceCount == 0)
    e882d322:	0084c783          	lbu	a5,8(s1)
    e882d326:	03379963          	bne	a5,s3,e882d358 <SendResponses+0x14c2>
    e882d32a:	0b74c783          	lbu	a5,183(s1)
    e882d32e:	e78d                	bnez	a5,e882d358 <SendResponses+0x14c2>
                if (!AuthRecord_uDNS(rr)) CompleteDeregistration(m, rr);        // Don't touch rr after this
    e882d330:	7098                	ld	a4,32(s1)
    e882d332:	000cb783          	ld	a5,0(s9)
    e882d336:	00f70863          	beq	a4,a5,e882d346 <SendResponses+0x14b0>
    e882d33a:	85a6                	mv	a1,s1
    e882d33c:	8522                	mv	a0,s0
    e882d33e:	f89f80ef          	jal	ra,e88262c6 <CompleteDeregistration>
    e882d342:	d20ff06f          	j	e882c862 <SendResponses+0x9cc>
    e882d346:	07a4c783          	lbu	a5,122(s1)
    e882d34a:	fbe5                	bnez	a5,e882d33a <SendResponses+0x14a4>
    e882d34c:	7488                	ld	a0,40(s1)
    e882d34e:	d55e50ef          	jal	ra,e88130a2 <IsLocalDomain>
    e882d352:	f565                	bnez	a0,e882d33a <SendResponses+0x14a4>
    e882d354:	d0eff06f          	j	e882c862 <SendResponses+0x9cc>
                rr->v4Requester  = zerov4Addr;
    e882d358:	000c2783          	lw	a5,0(s8)
                rr->ImmedAnswer  = mDNSNULL;
    e882d35c:	0c04b423          	sd	zero,200(s1)
                rr->ImmedUnicast = mDNSfalse;
    e882d360:	0a048da3          	sb	zero,187(s1)
                rr->v4Requester  = zerov4Addr;
    e882d364:	0ef4a023          	sw	a5,224(s1)
                rr->v6Requester  = zerov6Addr;
    e882d368:	000a3783          	ld	a5,0(s4)
    e882d36c:	0ef4b223          	sd	a5,228(s1)
    e882d370:	008a3783          	ld	a5,8(s4)
    e882d374:	0ef4b623          	sd	a5,236(s1)
    e882d378:	ceaff06f          	j	e882c862 <SendResponses+0x9cc>

00000000e882d37c <SendSleepGoodbyes>:
{
    e882d37c:	7179                	addi	sp,sp,-48
    e882d37e:	e422                	sd	s0,8(sp)
    e882d380:	e826                	sd	s1,16(sp)
    e882d382:	f406                	sd	ra,40(sp)
    e882d384:	ec4a                	sd	s2,24(sp)
    e882d386:	f04e                	sd	s3,32(sp)
    m->SleepState = SleepState_Sleeping;
    e882d388:	4789                	li	a5,2
    e882d38a:	28f502a3          	sb	a5,645(a0)
{
    e882d38e:	842a                	mv	s0,a0
    e882d390:	84b2                	mv	s1,a2
    if (AllInterfaces)
    e882d392:	e98d                	bnez	a1,e882d3c4 <SendSleepGoodbyes+0x48>
    if (unicast)
    e882d394:	c481                	beqz	s1,e882d39c <SendSleepGoodbyes+0x20>
        SleepRecordRegistrations(m);    // If we have no SPS, need to deregister our uDNS records
    e882d396:	8522                	mv	a0,s0
    e882d398:	5080b0ef          	jal	ra,e88388a0 <SleepRecordRegistrations>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882d39c:	678d                	lui	a5,0x3
    e882d39e:	97a2                	add	a5,a5,s0
            rr->ImmedAnswer = mDNSInterfaceMark;
    e882d3a0:	00076717          	auipc	a4,0x76
    e882d3a4:	9b870713          	addi	a4,a4,-1608 # e88a2d58 <mDNSInterfaceMark>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882d3a8:	1b87b783          	ld	a5,440(a5) # 31b8 <memcmp-0xe87fce48>
            rr->ImmedAnswer = mDNSInterfaceMark;
    e882d3ac:	6318                	ld	a4,0(a4)
        if (rr->resrec.RecordType == kDNSRecordTypeShared && rr->RequireGoodbye)
    e882d3ae:	46a1                	li	a3,8
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882d3b0:	eb9d                	bnez	a5,e882d3e6 <SendSleepGoodbyes+0x6a>
    SendResponses(m);
    e882d3b2:	8522                	mv	a0,s0
}
    e882d3b4:	6422                	ld	s0,8(sp)
    e882d3b6:	70a2                	ld	ra,40(sp)
    e882d3b8:	64c2                	ld	s1,16(sp)
    e882d3ba:	6962                	ld	s2,24(sp)
    e882d3bc:	7982                	ld	s3,32(sp)
    e882d3be:	6145                	addi	sp,sp,48
    SendResponses(m);
    e882d3c0:	ad7fe06f          	j	e882be96 <SendResponses>
        for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882d3c4:	678d                	lui	a5,0x3
    e882d3c6:	97aa                	add	a5,a5,a0
    e882d3c8:	1e07b503          	ld	a0,480(a5) # 31e0 <memcmp-0xe87fce20>
            intf->SendGoodbyes = 1;
    e882d3cc:	6909                	lui	s2,0x2
    e882d3ce:	4985                	li	s3,1
        for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882d3d0:	aade50ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882d3d4:	d161                	beqz	a0,e882d394 <SendSleepGoodbyes+0x18>
            intf->SendGoodbyes = 1;
    e882d3d6:	012507b3          	add	a5,a0,s2
    e882d3da:	a73785a3          	sb	s3,-1429(a5)
        for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882d3de:	6108                	ld	a0,0(a0)
    e882d3e0:	a9de50ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882d3e4:	bfc5                	j	e882d3d4 <SendSleepGoodbyes+0x58>
        if (rr->resrec.RecordType == kDNSRecordTypeShared && rr->RequireGoodbye)
    e882d3e6:	0087c603          	lbu	a2,8(a5)
    e882d3ea:	00d61663          	bne	a2,a3,e882d3f6 <SendSleepGoodbyes+0x7a>
    e882d3ee:	0b87c603          	lbu	a2,184(a5)
    e882d3f2:	c211                	beqz	a2,e882d3f6 <SendSleepGoodbyes+0x7a>
            rr->ImmedAnswer = mDNSInterfaceMark;
    e882d3f4:	e7f8                	sd	a4,200(a5)
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e882d3f6:	639c                	ld	a5,0(a5)
    e882d3f8:	bf65                	j	e882d3b0 <SendSleepGoodbyes+0x34>

00000000e882d3fa <BeginSleepProcessing>:
{
    e882d3fa:	b3010113          	addi	sp,sp,-1232
    e882d3fe:	4b413023          	sd	s4,1184(sp)
    mDNSOpaque64 updateIntID = zeroOpaque64;
    e882d402:	00076a17          	auipc	s4,0x76
    e882d406:	1bea0a13          	addi	s4,s4,446 # e88a35c0 <zeroOpaque64>
    e882d40a:	000a3783          	ld	a5,0(s4)
{
    e882d40e:	4c813023          	sd	s0,1216(sp)
    mDNSInterfaceID registeredIntfIDS[128] = { 0 };
    e882d412:	40000613          	li	a2,1024
{
    e882d416:	842a                	mv	s0,a0
    mDNSInterfaceID registeredIntfIDS[128] = { 0 };
    e882d418:	4581                	li	a1,0
    e882d41a:	1088                	addi	a0,sp,96
{
    e882d41c:	4c113423          	sd	ra,1224(sp)
    mDNSOpaque64 updateIntID = zeroOpaque64;
    e882d420:	fc3e                	sd	a5,56(sp)
{
    e882d422:	4a913c23          	sd	s1,1208(sp)
    e882d426:	4b213823          	sd	s2,1200(sp)
    e882d42a:	4b313423          	sd	s3,1192(sp)
    e882d42e:	49513c23          	sd	s5,1176(sp)
    e882d432:	49613823          	sd	s6,1168(sp)
    e882d436:	49713423          	sd	s7,1160(sp)
    e882d43a:	49813023          	sd	s8,1152(sp)
    e882d43e:	47913c23          	sd	s9,1144(sp)
    e882d442:	47a13823          	sd	s10,1136(sp)
    e882d446:	47b13423          	sd	s11,1128(sp)
    const CacheRecord *sps[3] = { mDNSNULL };
    e882d44a:	e482                	sd	zero,72(sp)
    e882d44c:	e882                	sd	zero,80(sp)
    e882d44e:	ec82                	sd	zero,88(sp)
    mDNSInterfaceID registeredIntfIDS[128] = { 0 };
    e882d450:	ce9d20ef          	jal	ra,e8800138 <memset>
    m->NextScheduledSPRetry = m->timenow;
    e882d454:	24042783          	lw	a5,576(s0)
    e882d458:	2af42423          	sw	a5,680(s0)
    mDNSPlatformClearSPSData();
    e882d45c:	2d4030ef          	jal	ra,e8830730 <mDNSPlatformClearSPSData>
    if      (!m->SystemWakeOnLANEnabled) LogSPS("BeginSleepProcessing: m->SystemWakeOnLANEnabled is false");
    e882d460:	28744783          	lbu	a5,647(s0)
    e882d464:	ebe1                	bnez	a5,e882d534 <BeginSleepProcessing+0x13a>
    e882d466:	000a7797          	auipc	a5,0xa7
    e882d46a:	60e78793          	addi	a5,a5,1550 # e88d4a74 <mDNS_LoggingEnabled>
    e882d46e:	439c                	lw	a5,0(a5)
    e882d470:	ebd5                	bnez	a5,e882d524 <BeginSleepProcessing+0x12a>
    int skippedRegistrations = 0;
    e882d472:	4981                	li	s3,0
    mDNSBool SendGoodbyes = mDNStrue;
    e882d474:	4b05                	li	s6,1
    if (!mDNSOpaque64IsZero(&updateIntID))
    e882d476:	56e2                	lw	a3,56(sp)
    e882d478:	5672                	lw	a2,60(sp)
    e882d47a:	000a7497          	auipc	s1,0xa7
    e882d47e:	5fa48493          	addi	s1,s1,1530 # e88d4a74 <mDNS_LoggingEnabled>
    mDNSBool WakeOnlyService  = mDNSfalse;
    e882d482:	4a81                	li	s5,0
    if (!mDNSOpaque64IsZero(&updateIntID))
    e882d484:	00c6e7b3          	or	a5,a3,a2
    e882d488:	c7a5                	beqz	a5,e882d4f0 <BeginSleepProcessing+0xf6>
    e882d48a:	7762                	ld	a4,56(sp)
    e882d48c:	409c                	lw	a5,0(s1)
        SPSInitRecordsBeforeUpdate(m, updateIntID, &WakeOnlyService);
    e882d48e:	e0ba                	sd	a4,64(sp)
    LogSPS("SPSInitRecordsBeforeUpdate: UpdateIntID 0x%x 0x%x", updateIntID.l[1], updateIntID.l[0]);
    e882d490:	cb81                	beqz	a5,e882d4a0 <BeginSleepProcessing+0xa6>
    e882d492:	00077597          	auipc	a1,0x77
    e882d496:	2ce58593          	addi	a1,a1,718 # e88a4760 <end.8789+0x10b8>
    e882d49a:	4509                	li	a0,2
    e882d49c:	010020ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    AuthRecord *rrPtr = m->SPSRRSet, *rrNext = mDNSNULL;
    e882d4a0:	6791                	lui	a5,0x4
    e882d4a2:	97a2                	add	a5,a5,s0
    e882d4a4:	d687b903          	ld	s2,-664(a5) # 3d68 <memcmp-0xe87fc298>
    LogSPS("%s : Freeing stored sleep proxy A/AAAA records", __func__);
    e882d4a8:	409c                	lw	a5,0(s1)
    e882d4aa:	cf81                	beqz	a5,e882d4c2 <BeginSleepProcessing+0xc8>
    e882d4ac:	0007b617          	auipc	a2,0x7b
    e882d4b0:	80c60613          	addi	a2,a2,-2036 # e88a7cb8 <__func__.10739>
    e882d4b4:	00077597          	auipc	a1,0x77
    e882d4b8:	2e458593          	addi	a1,a1,740 # e88a4798 <end.8789+0x10f0>
    e882d4bc:	4509                	li	a0,2
    e882d4be:	7ef010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    while (rrPtr)
    e882d4c2:	36091463          	bnez	s2,e882d82a <BeginSleepProcessing+0x430>
    m->SPSRRSet = mDNSNULL;
    e882d4c6:	6911                	lui	s2,0x4
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882d4c8:	678d                	lui	a5,0x3
    m->SPSRRSet = mDNSNULL;
    e882d4ca:	9922                	add	s2,s2,s0
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882d4cc:	97a2                	add	a5,a5,s0
    m->SPSRRSet = mDNSNULL;
    e882d4ce:	d6093423          	sd	zero,-664(s2) # 3d68 <memcmp-0xe87fc298>
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882d4d2:	1b87bc03          	ld	s8,440(a5) # 31b8 <memcmp-0xe87fce48>
    *WakeOnlyService = mDNSfalse;
    e882d4d6:	4a81                	li	s5,0
        if (AuthRecord_uDNS(ar))
    e882d4d8:	00076d17          	auipc	s10,0x76
    e882d4dc:	888d0d13          	addi	s10,s10,-1912 # e88a2d60 <mDNSInterface_Any>
    LogSPS("%s : Storing proxy record : %s ", __func__, ARDisplayString(m, rr));
    e882d4e0:	03b40b93          	addi	s7,s0,59
                ar->ImmedAnswer = mDNSInterfaceMark;
    e882d4e4:	00076d97          	auipc	s11,0x76
    e882d4e8:	874d8d93          	addi	s11,s11,-1932 # e88a2d58 <mDNSInterfaceMark>
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882d4ec:	340c1663          	bnez	s8,e882d838 <BeginSleepProcessing+0x43e>
        LogSPS("BeginSleepProcessing: Did not register with an in-NIC proxy - invoking the callbacks for KA records");
    e882d4f0:	409c                	lw	a5,0(s1)
    e882d4f2:	cb81                	beqz	a5,e882d502 <BeginSleepProcessing+0x108>
    e882d4f4:	00077597          	auipc	a1,0x77
    e882d4f8:	3f458593          	addi	a1,a1,1012 # e88a48e8 <end.8789+0x1240>
    e882d4fc:	4509                	li	a0,2
    e882d4fe:	7af010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentRecord = m->ResourceRecords;
    e882d502:	6a0d                	lui	s4,0x3
    e882d504:	9a22                	add	s4,s4,s0
    e882d506:	1b8a3783          	ld	a5,440(s4) # 31b8 <memcmp-0xe87fce48>
                rr->RecordCallback(m, rr, mStatus_BadStateErr);
    e882d50a:	7bc1                	lui	s7,0xffff0
        if ((mDNS_KeepaliveRecord(&rr->resrec)) && (rr->resrec.RecordType != kDNSRecordTypeDeregistering))
    e882d50c:	0007dc97          	auipc	s9,0x7d
    e882d510:	b44c8c93          	addi	s9,s9,-1212 # e88aa050 <mDNS_DomainTypeNames+0x6a0>
    m->CurrentRecord = m->ResourceRecords;
    e882d514:	1cfa3823          	sd	a5,464(s4)
                rr->RecordCallback(m, rr, mStatus_BadStateErr);
    e882d518:	1be9                	addi	s7,s7,-6
            LogSPS("DoKeepaliveCallbacks: Invoking the callback for %s", ARDisplayString(m, rr));
    e882d51a:	03b40d93          	addi	s11,s0,59
        if ((mDNS_KeepaliveRecord(&rr->resrec)) && (rr->resrec.RecordType != kDNSRecordTypeDeregistering))
    e882d51e:	4c29                	li	s8,10
    e882d520:	4d05                	li	s10,1
    e882d522:	abe9                	j	e882dafc <BeginSleepProcessing+0x702>
    if      (!m->SystemWakeOnLANEnabled) LogSPS("BeginSleepProcessing: m->SystemWakeOnLANEnabled is false");
    e882d524:	00077597          	auipc	a1,0x77
    e882d528:	03458593          	addi	a1,a1,52 # e88a4558 <end.8789+0xeb0>
    e882d52c:	4509                	li	a0,2
    e882d52e:	77f010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882d532:	b781                	j	e882d472 <BeginSleepProcessing+0x78>
    else if (!mDNSCoreHaveAdvertisedMulticastServices(m)) LogSPS("BeginSleepProcessing: No advertised services");
    e882d534:	8522                	mv	a0,s0
    e882d536:	ec6f30ef          	jal	ra,e8820bfc <mDNSCoreHaveAdvertisedMulticastServices>
    e882d53a:	ed01                	bnez	a0,e882d552 <BeginSleepProcessing+0x158>
    e882d53c:	000a7797          	auipc	a5,0xa7
    e882d540:	53878793          	addi	a5,a5,1336 # e88d4a74 <mDNS_LoggingEnabled>
    e882d544:	439c                	lw	a5,0(a5)
    e882d546:	00077597          	auipc	a1,0x77
    e882d54a:	05258593          	addi	a1,a1,82 # e88a4598 <end.8789+0xef0>
    e882d54e:	d395                	beqz	a5,e882d472 <BeginSleepProcessing+0x78>
    e882d550:	bff1                	j	e882d52c <BeginSleepProcessing+0x132>
        for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882d552:	6b8d                	lui	s7,0x3
    e882d554:	9ba2                	add	s7,s7,s0
    e882d556:	1e0bb503          	ld	a0,480(s7) # 31e0 <memcmp-0xe87fce20>
            intf->SendGoodbyes = 0;
    e882d55a:	6909                	lui	s2,0x2
    int skippedRegistrations = 0;
    e882d55c:	4981                	li	s3,0
        for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882d55e:	91fe50ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882d562:	84aa                	mv	s1,a0
    for (newIntf = FirstInterfaceForID(m, intfid); newIntf; newIntf = newIntf->next)
    e882d564:	ec5e                	sd	s7,24(sp)
    mDNSu32 registeredCount = 0;
    e882d566:	4a81                	li	s5,0
    mDNSBool SendGoodbyes = mDNStrue;
    e882d568:	4b05                	li	s6,1
                    LogSPS("%s : Already registered for the same subnet (IPv4) for interface %s", __func__, intf->ifname);
    e882d56a:	a2690b93          	addi	s7,s2,-1498 # 1a26 <memcmp-0xe87fe5da>
        for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882d56e:	f00484e3          	beqz	s1,e882d476 <BeginSleepProcessing+0x7c>
            intf->SendGoodbyes = 0;
    e882d572:	01248c33          	add	s8,s1,s2
            if (!intf->McastTxRx || mDNSPlatformInterfaceIsD2D(intf->InterfaceID))
    e882d576:	a67c4783          	lbu	a5,-1433(s8)
            intf->SendGoodbyes = 0;
    e882d57a:	a60c05a3          	sb	zero,-1429(s8)
            if (!intf->McastTxRx || mDNSPlatformInterfaceIsD2D(intf->InterfaceID))
    e882d57e:	e795                	bnez	a5,e882d5aa <BeginSleepProcessing+0x1b0>
                LogSPS("BeginSleepProcessing: %-6s Ignoring for registrations", intf->ifname);
    e882d580:	000a7797          	auipc	a5,0xa7
    e882d584:	4f478793          	addi	a5,a5,1268 # e88d4a74 <mDNS_LoggingEnabled>
    e882d588:	439c                	lw	a5,0(a5)
    e882d58a:	cb99                	beqz	a5,e882d5a0 <BeginSleepProcessing+0x1a6>
    e882d58c:	a2690613          	addi	a2,s2,-1498
    e882d590:	9626                	add	a2,a2,s1
    e882d592:	00077597          	auipc	a1,0x77
    e882d596:	03658593          	addi	a1,a1,54 # e88a45c8 <end.8789+0xf20>
    e882d59a:	4509                	li	a0,2
    e882d59c:	711010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        for (intf = GetFirstActiveInterface(m->HostInterfaces); intf; intf = GetFirstActiveInterface(intf->next))
    e882d5a0:	6088                	ld	a0,0(s1)
    e882d5a2:	8dbe50ef          	jal	ra,e8812e7c <GetFirstActiveInterface>
    e882d5a6:	84aa                	mv	s1,a0
    e882d5a8:	b7d9                	j	e882d56e <BeginSleepProcessing+0x174>
            if (!intf->McastTxRx || mDNSPlatformInterfaceIsD2D(intf->InterfaceID))
    e882d5aa:	9f0c3503          	ld	a0,-1552(s8)
    e882d5ae:	18c030ef          	jal	ra,e883073a <mDNSPlatformInterfaceIsD2D>
    e882d5b2:	f579                	bnez	a0,e882d580 <BeginSleepProcessing+0x186>
            if (!intf->NetWake)
    e882d5b4:	a68c4783          	lbu	a5,-1432(s8)
    e882d5b8:	eb85                	bnez	a5,e882d5e8 <BeginSleepProcessing+0x1ee>
                LogSPS("BeginSleepProcessing: %-6s not capable of magic packet wakeup", intf->ifname);
    e882d5ba:	000a7797          	auipc	a5,0xa7
    e882d5be:	4ba78793          	addi	a5,a5,1210 # e88d4a74 <mDNS_LoggingEnabled>
    e882d5c2:	439c                	lw	a5,0(a5)
    e882d5c4:	cb99                	beqz	a5,e882d5da <BeginSleepProcessing+0x1e0>
    e882d5c6:	a2690613          	addi	a2,s2,-1498
    e882d5ca:	9626                	add	a2,a2,s1
    e882d5cc:	00077597          	auipc	a1,0x77
    e882d5d0:	03458593          	addi	a1,a1,52 # e88a4600 <end.8789+0xf58>
    e882d5d4:	4509                	li	a0,2
    e882d5d6:	6d7010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                intf->SendGoodbyes = 1;
    e882d5da:	012487b3          	add	a5,s1,s2
    e882d5de:	4705                	li	a4,1
    e882d5e0:	a6e785a3          	sb	a4,-1429(a5)
                skippedRegistrations++;
    e882d5e4:	2985                	addiw	s3,s3,1
                continue;
    e882d5e6:	bf6d                	j	e882d5a0 <BeginSleepProcessing+0x1a6>
    for (newIntf = FirstInterfaceForID(m, intfid); newIntf; newIntf = newIntf->next)
    e882d5e8:	67e2                	ld	a5,24(sp)
            if (skipSameSubnetRegistration(m, registeredIntfIDS, registeredCount, intf->InterfaceID))
    e882d5ea:	9f0c3c03          	ld	s8,-1552(s8)
    for (newIntf = FirstInterfaceForID(m, intfid); newIntf; newIntf = newIntf->next)
    e882d5ee:	1e07bc83          	ld	s9,480(a5)
    e882d5f2:	85e2                	mv	a1,s8
    e882d5f4:	8566                	mv	a0,s9
    e882d5f6:	978ef0ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    e882d5fa:	8daa                	mv	s11,a0
        if ((newIntf->InterfaceID != intfid) ||
    e882d5fc:	4611                	li	a2,4
    for (newIntf = FirstInterfaceForID(m, intfid); newIntf; newIntf = newIntf->next)
    e882d5fe:	120d9963          	bnez	s11,e882d730 <BeginSleepProcessing+0x336>
                FindSPSInCache(m, &intf->NetWakeBrowse, sps);
    e882d602:	00b0                	addi	a2,sp,72
    e882d604:	01048593          	addi	a1,s1,16
    e882d608:	8522                	mv	a0,s0
    e882d60a:	c53f20ef          	jal	ra,e882025c <FindSPSInCache>
                if (!sps[0]) LogSPS("BeginSleepProcessing: %-6s %#a No Sleep Proxy Server found (Next Browse Q in %d, interval %d)",
    e882d60e:	67a6                	ld	a5,72(sp)
    e882d610:	1e078263          	beqz	a5,e882d7f4 <BeginSleepProcessing+0x3fa>
                    intf->NextSPSAttempt = 0;
    e882d614:	6785                	lui	a5,0x1
    e882d616:	97a6                	add	a5,a5,s1
                    intf->NextSPSAttemptTime = m->timenow + mDNSPlatformOneSecond;
    e882d618:	000a7697          	auipc	a3,0xa7
    e882d61c:	46868693          	addi	a3,a3,1128 # e88d4a80 <mDNSPlatformOneSecond>
                    intf->NextSPSAttempt = 0;
    e882d620:	da07aa23          	sw	zero,-588(a5) # db4 <memcmp-0xe87ff24c>
                    intf->NextSPSAttemptTime = m->timenow + mDNSPlatformOneSecond;
    e882d624:	4294                	lw	a3,0(a3)
    e882d626:	24042703          	lw	a4,576(s0)
                    scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
    e882d62a:	4605                	li	a2,1
    e882d62c:	8522                	mv	a0,s0
                    intf->NextSPSAttemptTime = m->timenow + mDNSPlatformOneSecond;
    e882d62e:	9f35                	addw	a4,a4,a3
    e882d630:	dae7ac23          	sw	a4,-584(a5)
                    scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, intf->InterfaceID, mDNStrue);
    e882d634:	012487b3          	add	a5,s1,s2
    e882d638:	9f07b583          	ld	a1,-1552(a5)
    e882d63c:	370020ef          	jal	ra,e882f9ac <mDNSPlatformInterfaceIndexfromInterfaceID>
    e882d640:	2501                	sext.w	a0,a0
                    if (scopeid < (sizeof(updateIntID) * mDNSNBBY))
    e882d642:	03f00793          	li	a5,63
    e882d646:	00a7ed63          	bltu	a5,a0,e882d660 <BeginSleepProcessing+0x266>
                        bit_set_opaque64(updateIntID, scopeid);
    e882d64a:	0055571b          	srliw	a4,a0,0x5
    e882d64e:	1834                	addi	a3,sp,56
    e882d650:	4785                	li	a5,1
    e882d652:	00a797bb          	sllw	a5,a5,a0
    e882d656:	54e6c50b          	lurw	a0,a3,a4,2
    e882d65a:	8fc9                	or	a5,a5,a0
    e882d65c:	54e6d78b          	surw	a5,a3,a4,2
                        intf->SPSAddr[i].type = mDNSAddrType_None;
    e882d660:	6785                	lui	a5,0x1
    e882d662:	d7078793          	addi	a5,a5,-656 # d70 <memcmp-0xe87ff290>
    e882d666:	97a6                	add	a5,a5,s1
                            LogSPS("BeginSleepProcessing: %-6s Found Sleep Proxy Server %d TTL %d %s", intf->ifname, i, sps[i]->resrec.rroriginalttl, CRDisplayString(m, sps[i]));
    e882d668:	a2690b13          	addi	s6,s2,-1498
    e882d66c:	36848d13          	addi	s10,s1,872
        if ((newIntf->InterfaceID != intfid) ||
    e882d670:	4c81                	li	s9,0
                        intf->SPSAddr[i].type = mDNSAddrType_None;
    e882d672:	e83e                	sd	a5,16(sp)
                            mDNS_SetupQuestion(&intf->NetWakeResolve[i], intf->InterfaceID, &sps[i]->resrec.rdata->u.name, kDNSType_SRV, NetWakeResolve, intf);
    e882d674:	01248c33          	add	s8,s1,s2
                            LogSPS("BeginSleepProcessing: %-6s Found Sleep Proxy Server %d TTL %d %s", intf->ifname, i, sps[i]->resrec.rroriginalttl, CRDisplayString(m, sps[i]));
    e882d678:	03b40d93          	addi	s11,s0,59
    e882d67c:	9b26                	add	s6,s6,s1
                        intf->SPSAddr[i].type = mDNSAddrType_None;
    e882d67e:	47d1                	li	a5,20
    e882d680:	02fc87b3          	mul	a5,s9,a5
    e882d684:	6742                	ld	a4,16(sp)
    e882d686:	000c869b          	sext.w	a3,s9
    e882d68a:	40f7500b          	srw	zero,a4,a5,0
                        if (intf->NetWakeResolve[i].ThisQInterval >= 0) mDNS_StopQuery(m, &intf->NetWakeResolve[i]);
    e882d68e:	014d2783          	lw	a5,20(s10)
    e882d692:	0007c863          	bltz	a5,e882d6a2 <BeginSleepProcessing+0x2a8>
    e882d696:	85ea                	mv	a1,s10
    e882d698:	8522                	mv	a0,s0
    e882d69a:	f036                	sd	a3,32(sp)
    e882d69c:	ec9f60ef          	jal	ra,e8824564 <mDNS_StopQuery>
    e882d6a0:	7682                	ld	a3,32(sp)
                        intf->NetWakeResolve[i].ThisQInterval = -1;
    e882d6a2:	57fd                	li	a5,-1
    e882d6a4:	00fd2a23          	sw	a5,20(s10)
                        if (sps[i])
    e882d6a8:	00bc                	addi	a5,sp,72
    e882d6aa:	6797c50b          	lrd	a0,a5,s9,3
    e882d6ae:	c92d                	beqz	a0,e882d720 <BeginSleepProcessing+0x326>
                            LogSPS("BeginSleepProcessing: %-6s Found Sleep Proxy Server %d TTL %d %s", intf->ifname, i, sps[i]->resrec.rroriginalttl, CRDisplayString(m, sps[i]));
    e882d6b0:	000a7797          	auipc	a5,0xa7
    e882d6b4:	3c478793          	addi	a5,a5,964 # e88d4a74 <mDNS_LoggingEnabled>
    e882d6b8:	439c                	lw	a5,0(a5)
    e882d6ba:	c78d                	beqz	a5,e882d6e4 <BeginSleepProcessing+0x2ea>
    e882d6bc:	790c                	ld	a1,48(a0)
    e882d6be:	4918                	lw	a4,16(a0)
    e882d6c0:	866e                	mv	a2,s11
    e882d6c2:	0591                	addi	a1,a1,4
    e882d6c4:	0521                	addi	a0,a0,8
    e882d6c6:	f436                	sd	a3,40(sp)
    e882d6c8:	f03a                	sd	a4,32(sp)
    e882d6ca:	b4ae90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882d6ce:	87aa                	mv	a5,a0
    e882d6d0:	fcd1470b          	ldd	a4,a3,(sp),2,4
    e882d6d4:	865a                	mv	a2,s6
    e882d6d6:	00077597          	auipc	a1,0x77
    e882d6da:	04258593          	addi	a1,a1,66 # e88a4718 <end.8789+0x1070>
    e882d6de:	4509                	li	a0,2
    e882d6e0:	5cd010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            mDNS_SetupQuestion(&intf->NetWakeResolve[i], intf->InterfaceID, &sps[i]->resrec.rdata->u.name, kDNSType_SRV, NetWakeResolve, intf);
    e882d6e4:	00bc                	addi	a5,sp,72
    e882d6e6:	6797c78b          	lrd	a5,a5,s9,3
    e882d6ea:	9f0c3583          	ld	a1,-1552(s8)
    e882d6ee:	00001717          	auipc	a4,0x1
    e882d6f2:	f8670713          	addi	a4,a4,-122 # e882e674 <NetWakeResolve>
    e882d6f6:	7b90                	ld	a2,48(a5)
    e882d6f8:	02100693          	li	a3,33
    e882d6fc:	87a6                	mv	a5,s1
    e882d6fe:	0611                	addi	a2,a2,4
    e882d700:	856a                	mv	a0,s10
    e882d702:	855e60ef          	jal	ra,e8813f56 <mDNS_SetupQuestion>
                            intf->NetWakeResolve[i].ReturnIntermed = mDNStrue;
    e882d706:	4785                	li	a5,1
    e882d708:	30fd0da3          	sb	a5,795(s10)
                            mDNS_StartQuery_internal(m, &intf->NetWakeResolve[i]);
    e882d70c:	85ea                	mv	a1,s10
    e882d70e:	8522                	mv	a0,s0
    e882d710:	cdff70ef          	jal	ra,e88253ee <mDNS_StartQuery_internal>
                            registeredIntfIDS[registeredCount] = intf->InterfaceID;
    e882d714:	9f0c3783          	ld	a5,-1552(s8)
    e882d718:	1098                	addi	a4,sp,96
    e882d71a:	7757578b          	surd	a5,a4,s5,3
                            registeredCount++;
    e882d71e:	2a85                	addiw	s5,s5,1
                    for (i=0; i<3; i++)
    e882d720:	0c85                	addi	s9,s9,1
    e882d722:	478d                	li	a5,3
    e882d724:	358d0d13          	addi	s10,s10,856
    e882d728:	f4fc9be3          	bne	s9,a5,e882d67e <BeginSleepProcessing+0x284>
                    SendGoodbyes = mDNSfalse;
    e882d72c:	4b01                	li	s6,0
    e882d72e:	bd8d                	j	e882d5a0 <BeginSleepProcessing+0x1a6>
        if ((newIntf->InterfaceID != intfid) ||
    e882d730:	012d87b3          	add	a5,s11,s2
    e882d734:	9f07b703          	ld	a4,-1552(a5)
    e882d738:	00ec1c63          	bne	s8,a4,e882d750 <BeginSleepProcessing+0x356>
    e882d73c:	9f87a703          	lw	a4,-1544(a5)
    e882d740:	00c71863          	bne	a4,a2,e882d750 <BeginSleepProcessing+0x356>
    e882d744:	4681                	li	a3,0
                if ((intf->ip.ip.v4.NotAnInteger & intf->mask.ip.v4.NotAnInteger) == (newIntf->ip.ip.v4.NotAnInteger & newIntf->mask.ip.v4.NotAnInteger))
    e882d746:	8d3e                	mv	s10,a5
        for ( i = 0; i < count; i++)
    e882d748:	0006879b          	sext.w	a5,a3
    e882d74c:	0157e563          	bltu	a5,s5,e882d756 <BeginSleepProcessing+0x35c>
    for (newIntf = FirstInterfaceForID(m, intfid); newIntf; newIntf = newIntf->next)
    e882d750:	000dbd83          	ld	s11,0(s11)
    e882d754:	b56d                	j	e882d5fe <BeginSleepProcessing+0x204>
            for (intf = FirstInterfaceForID(m, regID[i]); intf; intf = intf->next)
    e882d756:	109c                	addi	a5,sp,96
    e882d758:	66d7c80b          	lrd	a6,a5,a3,3
    e882d75c:	8566                	mv	a0,s9
    e882d75e:	f036                	sd	a3,32(sp)
    e882d760:	85c2                	mv	a1,a6
    e882d762:	e842                	sd	a6,16(sp)
    e882d764:	80aef0ef          	jal	ra,e881c76e <FirstInterfaceForID.isra.0>
    e882d768:	6842                	ld	a6,16(sp)
    e882d76a:	7682                	ld	a3,32(sp)
    e882d76c:	4611                	li	a2,4
    e882d76e:	e119                	bnez	a0,e882d774 <BeginSleepProcessing+0x37a>
        for ( i = 0; i < count; i++)
    e882d770:	0685                	addi	a3,a3,1
    e882d772:	bfd9                	j	e882d748 <BeginSleepProcessing+0x34e>
                if ((intf->InterfaceID != regID[i]) ||
    e882d774:	012507b3          	add	a5,a0,s2
    e882d778:	9f07b703          	ld	a4,-1552(a5)
    e882d77c:	06e81a63          	bne	a6,a4,e882d7f0 <BeginSleepProcessing+0x3f6>
    e882d780:	9f87a703          	lw	a4,-1544(a5)
    e882d784:	06c71663          	bne	a4,a2,e882d7f0 <BeginSleepProcessing+0x3f6>
                if ((intf->ip.ip.v4.NotAnInteger & intf->mask.ip.v4.NotAnInteger) == (newIntf->ip.ip.v4.NotAnInteger & newIntf->mask.ip.v4.NotAnInteger))
    e882d788:	9fc7a703          	lw	a4,-1540(a5)
    e882d78c:	a107a883          	lw	a7,-1520(a5)
    e882d790:	a10d2583          	lw	a1,-1520(s10)
    e882d794:	9fcd2783          	lw	a5,-1540(s10)
    e882d798:	01177733          	and	a4,a4,a7
    e882d79c:	8fed                	and	a5,a5,a1
    e882d79e:	04f71963          	bne	a4,a5,e882d7f0 <BeginSleepProcessing+0x3f6>
                    LogSPS("%s : Already registered for the same subnet (IPv4) for interface %s", __func__, intf->ifname);
    e882d7a2:	000a7c17          	auipc	s8,0xa7
    e882d7a6:	2d2c0c13          	addi	s8,s8,722 # e88d4a74 <mDNS_LoggingEnabled>
    e882d7aa:	000c2783          	lw	a5,0(s8)
    e882d7ae:	de0789e3          	beqz	a5,e882d5a0 <BeginSleepProcessing+0x1a6>
    e882d7b2:	017506b3          	add	a3,a0,s7
    e882d7b6:	0007a617          	auipc	a2,0x7a
    e882d7ba:	55260613          	addi	a2,a2,1362 # e88a7d08 <__func__.11048>
    e882d7be:	00077597          	auipc	a1,0x77
    e882d7c2:	e8258593          	addi	a1,a1,-382 # e88a4640 <end.8789+0xf98>
    e882d7c6:	4509                	li	a0,2
    e882d7c8:	4e5010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                LogSPS("%s : Skipping sleep proxy registration on %s", __func__, intf->ifname);
    e882d7cc:	000c2783          	lw	a5,0(s8)
    e882d7d0:	dc0788e3          	beqz	a5,e882d5a0 <BeginSleepProcessing+0x1a6>
    e882d7d4:	017486b3          	add	a3,s1,s7
    e882d7d8:	0007a617          	auipc	a2,0x7a
    e882d7dc:	55060613          	addi	a2,a2,1360 # e88a7d28 <__func__.11078>
    e882d7e0:	00077597          	auipc	a1,0x77
    e882d7e4:	ea858593          	addi	a1,a1,-344 # e88a4688 <end.8789+0xfe0>
    e882d7e8:	4509                	li	a0,2
    e882d7ea:	4c3010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882d7ee:	bb4d                	j	e882d5a0 <BeginSleepProcessing+0x1a6>
            for (intf = FirstInterfaceForID(m, regID[i]); intf; intf = intf->next)
    e882d7f0:	6108                	ld	a0,0(a0)
    e882d7f2:	bfb5                	j	e882d76e <BeginSleepProcessing+0x374>
                if (!sps[0]) LogSPS("BeginSleepProcessing: %-6s %#a No Sleep Proxy Server found (Next Browse Q in %d, interval %d)",
    e882d7f4:	000a7797          	auipc	a5,0xa7
    e882d7f8:	28078793          	addi	a5,a5,640 # e88d4a74 <mDNS_LoggingEnabled>
    e882d7fc:	439c                	lw	a5,0(a5)
    e882d7fe:	da0781e3          	beqz	a5,e882d5a0 <BeginSleepProcessing+0x1a6>
    e882d802:	50dc                	lw	a5,36(s1)
    e882d804:	5098                	lw	a4,32(s1)
    e882d806:	24042583          	lw	a1,576(s0)
    e882d80a:	9f890693          	addi	a3,s2,-1544
    e882d80e:	9f3d                	addw	a4,a4,a5
    e882d810:	a2690613          	addi	a2,s2,-1498
    e882d814:	9f0d                	subw	a4,a4,a1
    e882d816:	96a6                	add	a3,a3,s1
    e882d818:	9626                	add	a2,a2,s1
    e882d81a:	00077597          	auipc	a1,0x77
    e882d81e:	e9e58593          	addi	a1,a1,-354 # e88a46b8 <end.8789+0x1010>
    e882d822:	4509                	li	a0,2
    e882d824:	489010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882d828:	bba5                	j	e882d5a0 <BeginSleepProcessing+0x1a6>
        rrNext = rrPtr->next;
    e882d82a:	00093a83          	ld	s5,0(s2)
        mDNSPlatformMemFree(rrPtr);
    e882d82e:	854a                	mv	a0,s2
    e882d830:	253020ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
        rrPtr  = rrNext;
    e882d834:	8956                	mv	s2,s5
    e882d836:	b171                	j	e882d4c2 <BeginSleepProcessing+0xc8>
        ar->updateIntID = zeroOpaque64;
    e882d838:	000a3783          	ld	a5,0(s4)
        if (AuthRecord_uDNS(ar))
    e882d83c:	020c3703          	ld	a4,32(s8)
        ar->updateIntID = zeroOpaque64;
    e882d840:	14fc3c23          	sd	a5,344(s8)
        ar->updateid    = zeroID;
    e882d844:	00076797          	auipc	a5,0x76
    e882d848:	d5c78793          	addi	a5,a5,-676 # e88a35a0 <zeroID>
    e882d84c:	0007d783          	lhu	a5,0(a5)
    e882d850:	14fc1b23          	sh	a5,342(s8)
        if (AuthRecord_uDNS(ar))
    e882d854:	000d3783          	ld	a5,0(s10)
    e882d858:	08f70363          	beq	a4,a5,e882d8de <BeginSleepProcessing+0x4e4>
        if (ar->AuthFlags & AuthFlagsWakeOnly)
    e882d85c:	07bc4783          	lbu	a5,123(s8)
    e882d860:	8b85                	andi	a5,a5,1
    e882d862:	ebc9                	bnez	a5,e882d8f4 <BeginSleepProcessing+0x4fa>
        if (!ar->resrec.InterfaceID)
    e882d864:	020c3583          	ld	a1,32(s8)
    e882d868:	e5c5                	bnez	a1,e882d910 <BeginSleepProcessing+0x516>
            LogSPS("Setting scopeid (ALL) 0x%x 0x%x for %s", updateIntID.l[1], updateIntID.l[0], ARDisplayString(m, ar));
    e882d86a:	409c                	lw	a5,0(s1)
    e882d86c:	c795                	beqz	a5,e882d898 <BeginSleepProcessing+0x49e>
    e882d86e:	030c3583          	ld	a1,48(s8)
    e882d872:	4686                	lw	a3,64(sp)
    e882d874:	865e                	mv	a2,s7
    e882d876:	0591                	addi	a1,a1,4
    e882d878:	008c0513          	addi	a0,s8,8
    e882d87c:	4c96                	lw	s9,68(sp)
    e882d87e:	e836                	sd	a3,16(sp)
    e882d880:	994e90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882d884:	872a                	mv	a4,a0
    e882d886:	66c2                	ld	a3,16(sp)
    e882d888:	8666                	mv	a2,s9
    e882d88a:	00077597          	auipc	a1,0x77
    e882d88e:	f3e58593          	addi	a1,a1,-194 # e88a47c8 <end.8789+0x1120>
    e882d892:	4509                	li	a0,2
    e882d894:	419010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            ar->updateIntID = updateIntID;
    e882d898:	6786                	ld	a5,64(sp)
    e882d89a:	14fc3c23          	sd	a5,344(s8)
        if (ar->resrec.rrtype == kDNSType_A || ar->resrec.rrtype == kDNSType_AAAA)
    e882d89e:	00ac5783          	lhu	a5,10(s8)
    e882d8a2:	4705                	li	a4,1
    e882d8a4:	00e78563          	beq	a5,a4,e882d8ae <BeginSleepProcessing+0x4b4>
    e882d8a8:	4771                	li	a4,28
    e882d8aa:	04e79263          	bne	a5,a4,e882d8ee <BeginSleepProcessing+0x4f4>
            mDNSCoreStoreProxyRR(m, ar->resrec.InterfaceID, ar);
    e882d8ae:	020c3603          	ld	a2,32(s8)
    AuthRecord *newRR = mDNSPlatformMemAllocate(sizeof(AuthRecord));
    e882d8b2:	41000513          	li	a0,1040
            mDNSCoreStoreProxyRR(m, ar->resrec.InterfaceID, ar);
    e882d8b6:	e832                	sd	a2,16(sp)
    AuthRecord *newRR = mDNSPlatformMemAllocate(sizeof(AuthRecord));
    e882d8b8:	1ab020ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e882d8bc:	8caa                	mv	s9,a0
    if (newRR == mDNSNULL)
    e882d8be:	6642                	ld	a2,16(sp)
    e882d8c0:	e979                	bnez	a0,e882d996 <BeginSleepProcessing+0x59c>
        LogSPS("%s : could not allocate memory for new resource record", __func__);
    e882d8c2:	409c                	lw	a5,0(s1)
    e882d8c4:	c78d                	beqz	a5,e882d8ee <BeginSleepProcessing+0x4f4>
    e882d8c6:	0007a617          	auipc	a2,0x7a
    e882d8ca:	41a60613          	addi	a2,a2,1050 # e88a7ce0 <__func__.10953>
    e882d8ce:	00077597          	auipc	a1,0x77
    e882d8d2:	fc258593          	addi	a1,a1,-62 # e88a4890 <end.8789+0x11e8>
    e882d8d6:	4509                	li	a0,2
    e882d8d8:	3d5010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882d8dc:	a809                	j	e882d8ee <BeginSleepProcessing+0x4f4>
        if (AuthRecord_uDNS(ar))
    e882d8de:	07ac4783          	lbu	a5,122(s8)
    e882d8e2:	ffad                	bnez	a5,e882d85c <BeginSleepProcessing+0x462>
    e882d8e4:	028c3503          	ld	a0,40(s8)
    e882d8e8:	fbae50ef          	jal	ra,e88130a2 <IsLocalDomain>
    e882d8ec:	f925                	bnez	a0,e882d85c <BeginSleepProcessing+0x462>
    for (ar = m->ResourceRecords; ar; ar=ar->next)
    e882d8ee:	000c3c03          	ld	s8,0(s8)
    e882d8f2:	beed                	j	e882d4ec <BeginSleepProcessing+0xf2>
            if (ar->resrec.RecordType == kDNSRecordTypeShared && ar->RequireGoodbye)
    e882d8f4:	008c4683          	lbu	a3,8(s8)
    e882d8f8:	4721                	li	a4,8
    e882d8fa:	f6e695e3          	bne	a3,a4,e882d864 <BeginSleepProcessing+0x46a>
    e882d8fe:	0b8c4703          	lbu	a4,184(s8)
    e882d902:	d32d                	beqz	a4,e882d864 <BeginSleepProcessing+0x46a>
                ar->ImmedAnswer = mDNSInterfaceMark;
    e882d904:	000db703          	ld	a4,0(s11)
                *WakeOnlyService = mDNStrue;
    e882d908:	8abe                	mv	s5,a5
                ar->ImmedAnswer = mDNSInterfaceMark;
    e882d90a:	0cec3423          	sd	a4,200(s8)
                continue;
    e882d90e:	b7c5                	j	e882d8ee <BeginSleepProcessing+0x4f4>
            mDNSu32 scopeid = mDNSPlatformInterfaceIndexfromInterfaceID(m, ar->resrec.InterfaceID, mDNStrue);
    e882d910:	4605                	li	a2,1
    e882d912:	8522                	mv	a0,s0
    e882d914:	098020ef          	jal	ra,e882f9ac <mDNSPlatformInterfaceIndexfromInterfaceID>
    e882d918:	00050c9b          	sext.w	s9,a0
            if ((scopeid < (sizeof(updateIntID) * mDNSNBBY)) && bit_get_opaque64(updateIntID, scopeid))
    e882d91c:	03f00793          	li	a5,63
    e882d920:	0797e063          	bltu	a5,s9,e882d980 <BeginSleepProcessing+0x586>
    e882d924:	005cd79b          	srliw	a5,s9,0x5
    e882d928:	86be                	mv	a3,a5
    e882d92a:	0090                	addi	a2,sp,64
    e882d92c:	54d6468b          	lurw	a3,a2,a3,2
    e882d930:	4705                	li	a4,1
    e882d932:	0197173b          	sllw	a4,a4,s9
    e882d936:	8ef9                	and	a3,a3,a4
    e882d938:	078a                	slli	a5,a5,0x2
    e882d93a:	c2b9                	beqz	a3,e882d980 <BeginSleepProcessing+0x586>
    e882d93c:	97e2                	add	a5,a5,s8
                bit_set_opaque64(ar->updateIntID, scopeid);
    e882d93e:	1587a683          	lw	a3,344(a5)
    e882d942:	4090                	lw	a2,0(s1)
    e882d944:	8f55                	or	a4,a4,a3
    e882d946:	14e7ac23          	sw	a4,344(a5)
                LogSPS("SPSInitRecordsBeforeUpdate: Setting scopeid(%d) 0x%x 0x%x for %s", scopeid, ar->updateIntID.l[1],
    e882d94a:	da31                	beqz	a2,e882d89e <BeginSleepProcessing+0x4a4>
    e882d94c:	030c3583          	ld	a1,48(s8)
    e882d950:	15cc2683          	lw	a3,348(s8)
    e882d954:	158c2703          	lw	a4,344(s8)
    e882d958:	865e                	mv	a2,s7
    e882d95a:	0591                	addi	a1,a1,4
    e882d95c:	008c0513          	addi	a0,s8,8
    e882d960:	ec36                	sd	a3,24(sp)
    e882d962:	e83a                	sd	a4,16(sp)
    e882d964:	8b0e90ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882d968:	87aa                	mv	a5,a0
    e882d96a:	fad1470b          	ldd	a4,a3,(sp),1,4
    e882d96e:	8666                	mv	a2,s9
    e882d970:	00077597          	auipc	a1,0x77
    e882d974:	e8058593          	addi	a1,a1,-384 # e88a47f0 <end.8789+0x1148>
    e882d978:	4509                	li	a0,2
    e882d97a:	333010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882d97e:	b705                	j	e882d89e <BeginSleepProcessing+0x4a4>
                LogSPS("SPSInitRecordsBeforeUpdate: scopeid %d beyond range or not valid for SPS registration", scopeid);
    e882d980:	409c                	lw	a5,0(s1)
    e882d982:	df91                	beqz	a5,e882d89e <BeginSleepProcessing+0x4a4>
    e882d984:	8666                	mv	a2,s9
    e882d986:	00077597          	auipc	a1,0x77
    e882d98a:	eb258593          	addi	a1,a1,-334 # e88a4838 <end.8789+0x1190>
    e882d98e:	4509                	li	a0,2
    e882d990:	31d010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882d994:	b729                	j	e882d89e <BeginSleepProcessing+0x4a4>
    mDNSPlatformMemZero(newRR, sizeof(AuthRecord));
    e882d996:	41000593          	li	a1,1040
    e882d99a:	e832                	sd	a2,16(sp)
    e882d99c:	15a020ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    mDNS_SetupResourceRecord(newRR, mDNSNULL, InterfaceID, rr->resrec.rrtype,
    e882d9a0:	010c2703          	lw	a4,16(s8)
    e882d9a4:	0acc4803          	lbu	a6,172(s8)
    e882d9a8:	008c4783          	lbu	a5,8(s8)
    e882d9ac:	00ac5683          	lhu	a3,10(s8)
    e882d9b0:	6642                	ld	a2,16(sp)
    e882d9b2:	4881                	li	a7,0
    e882d9b4:	4581                	li	a1,0
    e882d9b6:	8566                	mv	a0,s9
    e882d9b8:	e002                	sd	zero,0(sp)
    e882d9ba:	c10e60ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    AssignDomainName(&newRR->namestorage, &rr->namestorage);
    e882d9be:	200c0793          	addi	a5,s8,512
    e882d9c2:	853e                	mv	a0,a5
    e882d9c4:	300c0593          	addi	a1,s8,768
    e882d9c8:	e83e                	sd	a5,16(sp)
    e882d9ca:	f82e50ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882d9ce:	0005061b          	sext.w	a2,a0
    e882d9d2:	10000713          	li	a4,256
    e882d9d6:	67c2                	ld	a5,16(sp)
    e882d9d8:	08c76863          	bltu	a4,a2,e882da68 <BeginSleepProcessing+0x66e>
    e882d9dc:	85be                	mv	a1,a5
    e882d9de:	200c8513          	addi	a0,s9,512
    e882d9e2:	0be020ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    newRR->resrec.rdlength = DomainNameLength(rr->resrec.name);
    e882d9e6:	028c3503          	ld	a0,40(s8)
    e882d9ea:	10050593          	addi	a1,a0,256
    e882d9ee:	f5ee50ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882d9f2:	00ac9a23          	sh	a0,20(s9)
    newRR->resrec.namehash = DomainNameHashValue(newRR->resrec.name);
    e882d9f6:	028cb503          	ld	a0,40(s9)
    e882d9fa:	ef5e60ef          	jal	ra,e88148ee <DomainNameHashValue>
    e882d9fe:	00acac23          	sw	a0,24(s9)
    newRR->resrec.rrclass  = rr->resrec.rrclass;
    e882da02:	00cc5783          	lhu	a5,12(s8)
    if (rr->resrec.rrtype == kDNSType_A)
    e882da06:	4705                	li	a4,1
    newRR->resrec.rrclass  = rr->resrec.rrclass;
    e882da08:	00fc9623          	sh	a5,12(s9)
    if (rr->resrec.rrtype == kDNSType_A)
    e882da0c:	00ac5783          	lhu	a5,10(s8)
    e882da10:	04e79f63          	bne	a5,a4,e882da6e <BeginSleepProcessing+0x674>
        newRR->resrec.rdata->u.ipv4 =  rr->resrec.rdata->u.ipv4;
    e882da14:	030c3703          	ld	a4,48(s8)
    e882da18:	030cb783          	ld	a5,48(s9)
    e882da1c:	4358                	lw	a4,4(a4)
    e882da1e:	c3d8                	sw	a4,4(a5)
    SetNewRData(&newRR->resrec, mDNSNULL, 0);
    e882da20:	4601                	li	a2,0
    e882da22:	4581                	li	a1,0
    e882da24:	008c8513          	addi	a0,s9,8
    e882da28:	830e70ef          	jal	ra,e8814a58 <SetNewRData>
    newRR->next        = m->SPSRRSet;
    e882da2c:	d6893783          	ld	a5,-664(s2)
    e882da30:	00fcb023          	sd	a5,0(s9)
    LogSPS("%s : Storing proxy record : %s ", __func__, ARDisplayString(m, rr));
    e882da34:	409c                	lw	a5,0(s1)
    m->SPSRRSet        = newRR;
    e882da36:	d7993423          	sd	s9,-664(s2)
    LogSPS("%s : Storing proxy record : %s ", __func__, ARDisplayString(m, rr));
    e882da3a:	ea078ae3          	beqz	a5,e882d8ee <BeginSleepProcessing+0x4f4>
    e882da3e:	030c3583          	ld	a1,48(s8)
    e882da42:	865e                	mv	a2,s7
    e882da44:	008c0513          	addi	a0,s8,8
    e882da48:	0591                	addi	a1,a1,4
    e882da4a:	fcbe80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882da4e:	86aa                	mv	a3,a0
    e882da50:	0007a617          	auipc	a2,0x7a
    e882da54:	29060613          	addi	a2,a2,656 # e88a7ce0 <__func__.10953>
    e882da58:	00077597          	auipc	a1,0x77
    e882da5c:	e7058593          	addi	a1,a1,-400 # e88a48c8 <end.8789+0x1220>
    e882da60:	4509                	li	a0,2
    e882da62:	24b010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882da66:	b561                	j	e882d8ee <BeginSleepProcessing+0x4f4>
    AssignDomainName(&newRR->namestorage, &rr->namestorage);
    e882da68:	200c8023          	sb	zero,512(s9)
    e882da6c:	bfad                	j	e882d9e6 <BeginSleepProcessing+0x5ec>
    else if (rr->resrec.rrtype == kDNSType_AAAA)
    e882da6e:	4771                	li	a4,28
    e882da70:	fae798e3          	bne	a5,a4,e882da20 <BeginSleepProcessing+0x626>
        newRR->resrec.rdata->u.ipv6 = rr->resrec.rdata->u.ipv6;
    e882da74:	030c3703          	ld	a4,48(s8)
    e882da78:	030cb783          	ld	a5,48(s9)
    e882da7c:	00473683          	ld	a3,4(a4)
    e882da80:	00d7b223          	sd	a3,4(a5)
    e882da84:	00c73703          	ld	a4,12(a4)
    e882da88:	00e7b623          	sd	a4,12(a5)
    e882da8c:	bf51                	j	e882da20 <BeginSleepProcessing+0x626>
        if ((mDNS_KeepaliveRecord(&rr->resrec)) && (rr->resrec.RecordType != kDNSRecordTypeDeregistering))
    e882da8e:	00a95783          	lhu	a5,10(s2)
    e882da92:	01878763          	beq	a5,s8,e882daa0 <BeginSleepProcessing+0x6a6>
            m->CurrentRecord = rr->next;
    e882da96:	00093783          	ld	a5,0(s2)
    e882da9a:	1cfa3823          	sd	a5,464(s4)
    e882da9e:	b441                	j	e882d51e <BeginSleepProcessing+0x124>
        if ((mDNS_KeepaliveRecord(&rr->resrec)) && (rr->resrec.RecordType != kDNSRecordTypeDeregistering))
    e882daa0:	02893503          	ld	a0,40(s2)
    e882daa4:	4781                	li	a5,0
    e882daa6:	00054703          	lbu	a4,0(a0)
    e882daaa:	c319                	beqz	a4,e882dab0 <BeginSleepProcessing+0x6b6>
    e882daac:	00170793          	addi	a5,a4,1
    e882dab0:	85e6                	mv	a1,s9
    e882dab2:	953e                	add	a0,a0,a5
    e882dab4:	d32e50ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e882dab8:	cd15                	beqz	a0,e882daf4 <BeginSleepProcessing+0x6fa>
    e882daba:	00894783          	lbu	a5,8(s2)
    e882dabe:	03a78b63          	beq	a5,s10,e882daf4 <BeginSleepProcessing+0x6fa>
            LogSPS("DoKeepaliveCallbacks: Invoking the callback for %s", ARDisplayString(m, rr));
    e882dac2:	409c                	lw	a5,0(s1)
    e882dac4:	c38d                	beqz	a5,e882dae6 <BeginSleepProcessing+0x6ec>
    e882dac6:	03093583          	ld	a1,48(s2)
    e882daca:	866e                	mv	a2,s11
    e882dacc:	00890513          	addi	a0,s2,8
    e882dad0:	0591                	addi	a1,a1,4
    e882dad2:	f43e80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882dad6:	862a                	mv	a2,a0
    e882dad8:	00077597          	auipc	a1,0x77
    e882dadc:	e7858593          	addi	a1,a1,-392 # e88a4950 <end.8789+0x12a8>
    e882dae0:	4509                	li	a0,2
    e882dae2:	1cb010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (rr->RecordCallback)
    e882dae6:	06893783          	ld	a5,104(s2)
    e882daea:	c789                	beqz	a5,e882daf4 <BeginSleepProcessing+0x6fa>
                rr->RecordCallback(m, rr, mStatus_BadStateErr);
    e882daec:	865e                	mv	a2,s7
    e882daee:	85ca                	mv	a1,s2
    e882daf0:	8522                	mv	a0,s0
    e882daf2:	9782                	jalr	a5
        if (m->CurrentRecord == rr) // If m->CurrentRecord was not advanced for us, do it now
    e882daf4:	1d0a3783          	ld	a5,464(s4)
    e882daf8:	f8f90fe3          	beq	s2,a5,e882da96 <BeginSleepProcessing+0x69c>
    while (m->CurrentRecord)
    e882dafc:	1d0a3903          	ld	s2,464(s4)
    e882db00:	f80917e3          	bnez	s2,e882da8e <BeginSleepProcessing+0x694>
    if (SendGoodbyes)
    e882db04:	040b0d63          	beqz	s6,e882db5e <BeginSleepProcessing+0x764>
        LogSPS("BeginSleepProcessing: Not registering with Sleep Proxy Server");
    e882db08:	409c                	lw	a5,0(s1)
    e882db0a:	cb81                	beqz	a5,e882db1a <BeginSleepProcessing+0x720>
    e882db0c:	00077597          	auipc	a1,0x77
    e882db10:	e7c58593          	addi	a1,a1,-388 # e88a4988 <end.8789+0x12e0>
    e882db14:	4509                	li	a0,2
    e882db16:	197010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        SendSleepGoodbyes(m, mDNStrue, mDNStrue);
    e882db1a:	4605                	li	a2,1
    e882db1c:	4585                	li	a1,1
        SendSleepGoodbyes(m, mDNSfalse, mDNSfalse);
    e882db1e:	8522                	mv	a0,s0
    e882db20:	85dff0ef          	jal	ra,e882d37c <SendSleepGoodbyes>
}
    e882db24:	4c813083          	ld	ra,1224(sp)
    e882db28:	4c013403          	ld	s0,1216(sp)
    e882db2c:	4b813483          	ld	s1,1208(sp)
    e882db30:	4b013903          	ld	s2,1200(sp)
    e882db34:	4a813983          	ld	s3,1192(sp)
    e882db38:	4a013a03          	ld	s4,1184(sp)
    e882db3c:	49813a83          	ld	s5,1176(sp)
    e882db40:	49013b03          	ld	s6,1168(sp)
    e882db44:	48813b83          	ld	s7,1160(sp)
    e882db48:	48013c03          	ld	s8,1152(sp)
    e882db4c:	47813c83          	ld	s9,1144(sp)
    e882db50:	47013d03          	ld	s10,1136(sp)
    e882db54:	46813d83          	ld	s11,1128(sp)
    e882db58:	4d010113          	addi	sp,sp,1232
    e882db5c:	8082                	ret
    else if (skippedRegistrations)
    e882db5e:	00098e63          	beqz	s3,e882db7a <BeginSleepProcessing+0x780>
        LogSPS("BeginSleepProcessing: Not registering with Sleep Proxy Server on all interfaces");
    e882db62:	409c                	lw	a5,0(s1)
    e882db64:	cb81                	beqz	a5,e882db74 <BeginSleepProcessing+0x77a>
    e882db66:	00077597          	auipc	a1,0x77
    e882db6a:	e6258593          	addi	a1,a1,-414 # e88a49c8 <end.8789+0x1320>
    e882db6e:	4509                	li	a0,2
    e882db70:	13d010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        SendSleepGoodbyes(m, mDNSfalse, mDNSfalse);
    e882db74:	4601                	li	a2,0
    e882db76:	4581                	li	a1,0
    e882db78:	b75d                	j	e882db1e <BeginSleepProcessing+0x724>
    else if (WakeOnlyService)
    e882db7a:	fa0a85e3          	beqz	s5,e882db24 <BeginSleepProcessing+0x72a>
        LogSPS("BeginSleepProcessing: Sending goodbyes for WakeOnlyService");
    e882db7e:	409c                	lw	a5,0(s1)
    e882db80:	cb81                	beqz	a5,e882db90 <BeginSleepProcessing+0x796>
    e882db82:	00077597          	auipc	a1,0x77
    e882db86:	e9658593          	addi	a1,a1,-362 # e88a4a18 <end.8789+0x1370>
    e882db8a:	4509                	li	a0,2
    e882db8c:	121010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        SendResponses(m);
    e882db90:	8522                	mv	a0,s0
    e882db92:	b04fe0ef          	jal	ra,e882be96 <SendResponses>
}
    e882db96:	b779                	j	e882db24 <BeginSleepProcessing+0x72a>

00000000e882db98 <mDNS_Execute>:
{
    e882db98:	7135                	addi	sp,sp,-160
    mDNS_Lock(m);   // Must grab lock before trying to read m->timenow
    e882db9a:	0007a597          	auipc	a1,0x7a
    e882db9e:	13658593          	addi	a1,a1,310 # e88a7cd0 <__func__.10746>
{
    e882dba2:	e0ea                	sd	s10,64(sp)
    e882dba4:	ed06                	sd	ra,152(sp)
    e882dba6:	8d2a                	mv	s10,a0
    e882dba8:	e922                	sd	s0,144(sp)
    e882dbaa:	e526                	sd	s1,136(sp)
    e882dbac:	e14a                	sd	s2,128(sp)
    e882dbae:	fcce                	sd	s3,120(sp)
    e882dbb0:	f8d2                	sd	s4,112(sp)
    e882dbb2:	f4d6                	sd	s5,104(sp)
    e882dbb4:	f0da                	sd	s6,96(sp)
    e882dbb6:	ecde                	sd	s7,88(sp)
    e882dbb8:	e8e2                	sd	s8,80(sp)
    e882dbba:	e4e6                	sd	s9,72(sp)
    e882dbbc:	fc6e                	sd	s11,56(sp)
    mDNS_Lock(m);   // Must grab lock before trying to read m->timenow
    e882dbbe:	e45e70ef          	jal	ra,e8815a02 <mDNS_Lock_>
    if (m->timenow - m->NextScheduledEvent >= 0)
    e882dbc2:	240d2783          	lw	a5,576(s10)
    e882dbc6:	248d2703          	lw	a4,584(s10)
    e882dbca:	9f99                	subw	a5,a5,a4
    e882dbcc:	0607c3e3          	bltz	a5,e882e432 <mDNS_Execute+0x89a>
        if (m->CurrentQuestion)
    e882dbd0:	2c8d3403          	ld	s0,712(s10)
    e882dbd4:	cc19                	beqz	s0,e882dbf2 <mDNS_Execute+0x5a>
            LogMsg("mDNS_Execute: ERROR m->CurrentQuestion already set: %##s (%s)",
    e882dbd6:	31445503          	lhu	a0,788(s0)
    e882dbda:	886e80ef          	jal	ra,e8815c60 <DNSTypeName>
    e882dbde:	86aa                	mv	a3,a0
    e882dbe0:	21440613          	addi	a2,s0,532
    e882dbe4:	0007c597          	auipc	a1,0x7c
    e882dbe8:	df458593          	addi	a1,a1,-524 # e88a99d8 <mDNS_DomainTypeNames+0x28>
    e882dbec:	4501                	li	a0,0
    e882dbee:	0bf010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (m->CurrentRecord)
    e882dbf2:	678d                	lui	a5,0x3
    e882dbf4:	97ea                	add	a5,a5,s10
    e882dbf6:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e882dbfa:	c105                	beqz	a0,e882dc1a <mDNS_Execute+0x82>
            LogMsg("mDNS_Execute: ERROR m->CurrentRecord already set: %s", ARDisplayString(m, m->CurrentRecord));
    e882dbfc:	790c                	ld	a1,48(a0)
    e882dbfe:	03bd0613          	addi	a2,s10,59
    e882dc02:	0521                	addi	a0,a0,8
    e882dc04:	0591                	addi	a1,a1,4
    e882dc06:	e0fe80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882dc0a:	862a                	mv	a2,a0
    e882dc0c:	0007c597          	auipc	a1,0x7c
    e882dc10:	e0c58593          	addi	a1,a1,-500 # e88a9a18 <mDNS_DomainTypeNames+0x68>
    e882dc14:	4501                	li	a0,0
    e882dc16:	097010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (m->SuppressProbes && m->timenow - m->SuppressProbes >= 0) m->SuppressProbes = 0;
    e882dc1a:	678d                	lui	a5,0x3
    e882dc1c:	97ea                	add	a5,a5,s10
    e882dc1e:	1f07a683          	lw	a3,496(a5) # 31f0 <memcmp-0xe87fce10>
    e882dc22:	240d2703          	lw	a4,576(s10)
    e882dc26:	c699                	beqz	a3,e882dc34 <mDNS_Execute+0x9c>
    e882dc28:	40d706bb          	subw	a3,a4,a3
    e882dc2c:	0006c463          	bltz	a3,e882dc34 <mDNS_Execute+0x9c>
    e882dc30:	1e07a823          	sw	zero,496(a5)
        if (m->NumFailedProbes && m->timenow - m->ProbeFailTime >= mDNSPlatformOneSecond * 10) m->NumFailedProbes = 0;
    e882dc34:	678d                	lui	a5,0x3
    e882dc36:	97ea                	add	a5,a5,s10
    e882dc38:	1ec7a683          	lw	a3,492(a5) # 31ec <memcmp-0xe87fce14>
    e882dc3c:	c28d                	beqz	a3,e882dc5e <mDNS_Execute+0xc6>
    e882dc3e:	000a7697          	auipc	a3,0xa7
    e882dc42:	e4268693          	addi	a3,a3,-446 # e88d4a80 <mDNSPlatformOneSecond>
    e882dc46:	428c                	lw	a1,0(a3)
    e882dc48:	46a9                	li	a3,10
    e882dc4a:	1e87a603          	lw	a2,488(a5)
    e882dc4e:	02b686bb          	mulw	a3,a3,a1
    e882dc52:	40c7063b          	subw	a2,a4,a2
    e882dc56:	00d64463          	blt	a2,a3,e882dc5e <mDNS_Execute+0xc6>
    e882dc5a:	1e07a623          	sw	zero,492(a5)
        if (m->rrcache_size && m->timenow - m->NextCacheCheck >= 0)
    e882dc5e:	2f0d2783          	lw	a5,752(s10)
    e882dc62:	10079163          	bnez	a5,e882dd64 <mDNS_Execute+0x1cc>
        if (m->timenow - m->NextScheduledSPS >= 0)
    e882dc66:	240d2683          	lw	a3,576(s10)
    e882dc6a:	268d2703          	lw	a4,616(s10)
    e882dc6e:	40e6873b          	subw	a4,a3,a4
    e882dc72:	02074363          	bltz	a4,e882dc98 <mDNS_Execute+0x100>
            m->NextScheduledSPS = m->timenow + FutureTime;
    e882dc76:	380007b7          	lui	a5,0x38000
            CheckProxyRecords(m, m->DuplicateRecords);  // Clear m->DuplicateRecords first, then m->ResourceRecords
    e882dc7a:	640d                	lui	s0,0x3
            m->NextScheduledSPS = m->timenow + FutureTime;
    e882dc7c:	9fb5                	addw	a5,a5,a3
            CheckProxyRecords(m, m->DuplicateRecords);  // Clear m->DuplicateRecords first, then m->ResourceRecords
    e882dc7e:	946a                	add	s0,s0,s10
            m->NextScheduledSPS = m->timenow + FutureTime;
    e882dc80:	26fd2423          	sw	a5,616(s10)
            CheckProxyRecords(m, m->DuplicateRecords);  // Clear m->DuplicateRecords first, then m->ResourceRecords
    e882dc84:	1c043583          	ld	a1,448(s0) # 31c0 <memcmp-0xe87fce40>
    e882dc88:	856a                	mv	a0,s10
    e882dc8a:	ab6f50ef          	jal	ra,e8822f40 <CheckProxyRecords>
            CheckProxyRecords(m, m->ResourceRecords);
    e882dc8e:	1b843583          	ld	a1,440(s0)
    e882dc92:	856a                	mv	a0,s10
    e882dc94:	aacf50ef          	jal	ra,e8822f40 <CheckProxyRecords>
        SetSPSProxyListChanged(mDNSNULL);       // Perform any deferred BPF reconfiguration now
    e882dc98:	6791                	lui	a5,0x4
    e882dc9a:	97ea                	add	a5,a5,s10
    e882dc9c:	d787b503          	ld	a0,-648(a5) # 3d78 <memcmp-0xe87fc288>
    e882dca0:	c119                	beqz	a0,e882dca6 <mDNS_Execute+0x10e>
    e882dca2:	475010ef          	jal	ra,e882f916 <mDNSPlatformUpdateProxyList>
    e882dca6:	6791                	lui	a5,0x4
    e882dca8:	97ea                	add	a5,a5,s10
    e882dcaa:	d607bc23          	sd	zero,-648(a5) # 3d78 <memcmp-0xe87fc288>
        if (m->timenow - m->NextScheduledKA >= 0)
    e882dcae:	240d2683          	lw	a3,576(s10)
    e882dcb2:	26cd2703          	lw	a4,620(s10)
    e882dcb6:	40e6873b          	subw	a4,a3,a4
    e882dcba:	00074a63          	bltz	a4,e882dcce <mDNS_Execute+0x136>
            m->NextScheduledKA = m->timenow + FutureTime;
    e882dcbe:	380007b7          	lui	a5,0x38000
    e882dcc2:	9fb5                	addw	a5,a5,a3
    e882dcc4:	26fd2623          	sw	a5,620(s10)
            mDNS_SendKeepalives(m);
    e882dcc8:	856a                	mv	a0,s10
    e882dcca:	b55ef0ef          	jal	ra,e881d81e <mDNS_SendKeepalives>
        if (m->AnnounceOwner && m->timenow - m->AnnounceOwner >= 0)
    e882dcce:	28cd2703          	lw	a4,652(s10)
    e882dcd2:	cb11                	beqz	a4,e882dce6 <mDNS_Execute+0x14e>
    e882dcd4:	240d2783          	lw	a5,576(s10)
    e882dcd8:	9f99                	subw	a5,a5,a4
    e882dcda:	0007c663          	bltz	a5,e882dce6 <mDNS_Execute+0x14e>
            m->AnnounceOwner = 0;
    e882dcde:	280d2623          	sw	zero,652(s10)
            m->DelayConflictProcessing = 0;
    e882dce2:	260d2823          	sw	zero,624(s10)
        if (m->DelaySleep && m->timenow - m->DelaySleep >= 0)
    e882dce6:	290d2703          	lw	a4,656(s10)
    e882dcea:	cf0d                	beqz	a4,e882dd24 <mDNS_Execute+0x18c>
    e882dcec:	240d2783          	lw	a5,576(s10)
    e882dcf0:	9f99                	subw	a5,a5,a4
    e882dcf2:	0207c963          	bltz	a5,e882dd24 <mDNS_Execute+0x18c>
            if (m->SleepState == SleepState_Transferring)
    e882dcf6:	285d4703          	lbu	a4,645(s10)
            m->DelaySleep = 0;
    e882dcfa:	280d2823          	sw	zero,656(s10)
            if (m->SleepState == SleepState_Transferring)
    e882dcfe:	4785                	li	a5,1
    e882dd00:	02f71263          	bne	a4,a5,e882dd24 <mDNS_Execute+0x18c>
                LogSPS("Re-sleep delay passed; now checking for Sleep Proxy Servers");
    e882dd04:	000a7797          	auipc	a5,0xa7
    e882dd08:	d7078793          	addi	a5,a5,-656 # e88d4a74 <mDNS_LoggingEnabled>
    e882dd0c:	439c                	lw	a5,0(a5)
    e882dd0e:	cb81                	beqz	a5,e882dd1e <mDNS_Execute+0x186>
    e882dd10:	0007c597          	auipc	a1,0x7c
    e882dd14:	d4058593          	addi	a1,a1,-704 # e88a9a50 <mDNS_DomainTypeNames+0xa0>
    e882dd18:	4509                	li	a0,2
    e882dd1a:	792010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                BeginSleepProcessing(m);
    e882dd1e:	856a                	mv	a0,s10
    e882dd20:	edaff0ef          	jal	ra,e882d3fa <BeginSleepProcessing>
                    LogMsg("AnswerNewQuestion: How is rr->resrec.rroriginalttl %lu <= SecsSinceRcvd %lu for %s %d %d",
    e882dd24:	03bd0793          	addi	a5,s10,59
    e882dd28:	ec3e                	sd	a5,24(sp)
        MakeNegativeCacheRecord(m, &m->rec.r, &q->qname, q->qnamehash, q->qtype, q->qclass, 60, mDNSInterface_Any, q->qDNSServer);
    e882dd2a:	67a5                	lui	a5,0x9
    e882dd2c:	4d878913          	addi	s2,a5,1240 # 94d8 <memcmp-0xe87f6b28>
                AnsweredFromCache = mDNStrue;
    e882dd30:	4481                	li	s1,0
        LogInfo("AnswerNewQuestion: Generating response for retrying with search domains %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e882dd32:	000a7a17          	auipc	s4,0xa7
    e882dd36:	d42a0a13          	addi	s4,s4,-702 # e88d4a74 <mDNS_LoggingEnabled>
        q->ThisQInterval  = InitialQuestionInterval;
    e882dd3a:	000a7a97          	auipc	s5,0xa7
    e882dd3e:	d46a8a93          	addi	s5,s5,-698 # e88d4a80 <mDNSPlatformOneSecond>
        MakeNegativeCacheRecord(m, &m->rec.r, &q->qname, q->qnamehash, q->qtype, q->qclass, 60, mDNSInterface_Any, q->qDNSServer);
    e882dd42:	996a                	add	s2,s2,s10
        for (i=0; m->NewQuestions && i<1000; i++)
    e882dd44:	2c0d3c83          	ld	s9,704(s10)
    e882dd48:	3e800793          	li	a5,1000
    e882dd4c:	400c8463          	beqz	s9,e882e154 <mDNS_Execute+0x5bc>
    e882dd50:	08f49f63          	bne	s1,a5,e882ddee <mDNS_Execute+0x256>
        if (i >= 1000) LogMsg("mDNS_Execute: AnswerNewQuestion exceeded loop limit");
    e882dd54:	0007c597          	auipc	a1,0x7c
    e882dd58:	f3458593          	addi	a1,a1,-204 # e88a9c88 <mDNS_DomainTypeNames+0x2d8>
    e882dd5c:	4501                	li	a0,0
    e882dd5e:	74e010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882dd62:	aedd                	j	e882e158 <mDNS_Execute+0x5c0>
        if (m->rrcache_size && m->timenow - m->NextCacheCheck >= 0)
    e882dd64:	254d2783          	lw	a5,596(s10)
    e882dd68:	40f707bb          	subw	a5,a4,a5
    e882dd6c:	ee07cde3          	bltz	a5,e882dc66 <mDNS_Execute+0xce>
            m->NextCacheCheck = m->timenow + FutureTime;
    e882dd70:	380007b7          	lui	a5,0x38000
    e882dd74:	6405                	lui	s0,0x1
    e882dd76:	79f9                	lui	s3,0xffffe
    e882dd78:	9f3d                	addw	a4,a4,a5
    e882dd7a:	2a840413          	addi	s0,s0,680 # 12a8 <memcmp-0xe87fed58>
    e882dd7e:	dc098993          	addi	s3,s3,-576 # ffffffffffffddc0 <__DRAM0_INF_BASE+0xffffffff0000ddc0>
    e882dd82:	24ed2a23          	sw	a4,596(s10)
            for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
    e882dd86:	946a                	add	s0,s0,s10
    e882dd88:	4481                	li	s1,0
    e882dd8a:	41a989b3          	sub	s3,s3,s10
                    m->rrcache_nextcheck[slot] = m->timenow + FutureTime;
    e882dd8e:	38000ab7          	lui	s5,0x38000
            for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
    e882dd92:	1f300a13          	li	s4,499
                if (m->timenow - m->rrcache_nextcheck[slot] >= 0)
    e882dd96:	240d2783          	lw	a5,576(s10)
    e882dd9a:	4018                	lw	a4,0(s0)
    e882dd9c:	40e7873b          	subw	a4,a5,a4
    e882dda0:	00075d63          	bgez	a4,e882ddba <mDNS_Execute+0x222>
                if (m->NextCacheCheck - m->rrcache_nextcheck[slot] > 0)
    e882dda4:	4018                	lw	a4,0(s0)
    e882dda6:	254d2783          	lw	a5,596(s10)
    e882ddaa:	9f99                	subw	a5,a5,a4
    e882ddac:	02f04e63          	bgtz	a5,e882dde8 <mDNS_Execute+0x250>
            for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
    e882ddb0:	2485                	addiw	s1,s1,1
    e882ddb2:	0411                	addi	s0,s0,4
    e882ddb4:	ff4491e3          	bne	s1,s4,e882dd96 <mDNS_Execute+0x1fe>
    e882ddb8:	b57d                	j	e882dc66 <mDNS_Execute+0xce>
                    m->rrcache_nextcheck[slot] = m->timenow + FutureTime;
    e882ddba:	00fa87bb          	addw	a5,s5,a5
    e882ddbe:	0289990b          	addsl	s2,s3,s0,1
    e882ddc2:	c01c                	sw	a5,0(s0)
                    while (*cp)
    e882ddc4:	00093603          	ld	a2,0(s2)
    e882ddc8:	de71                	beqz	a2,e882dda4 <mDNS_Execute+0x20c>
                        CheckCacheExpiration(m, slot, *cp);
    e882ddca:	85a6                	mv	a1,s1
    e882ddcc:	856a                	mv	a0,s10
    e882ddce:	f9df80ef          	jal	ra,e8826d6a <CheckCacheExpiration>
                        if ((*cp)->members) cp=&(*cp)->next;
    e882ddd2:	00093783          	ld	a5,0(s2)
    e882ddd6:	6b98                	ld	a4,16(a5)
    e882ddd8:	c319                	beqz	a4,e882ddde <mDNS_Execute+0x246>
    e882ddda:	893e                	mv	s2,a5
    e882dddc:	b7e5                	j	e882ddc4 <mDNS_Execute+0x22c>
                        else ReleaseCacheGroup(m, cp);
    e882ddde:	85ca                	mv	a1,s2
    e882dde0:	856a                	mv	a0,s10
    e882dde2:	c5fef0ef          	jal	ra,e881da40 <ReleaseCacheGroup>
    e882dde6:	bff9                	j	e882ddc4 <mDNS_Execute+0x22c>
                    m->NextCacheCheck = m->rrcache_nextcheck[slot];
    e882dde8:	24ed2a23          	sw	a4,596(s10)
    e882ddec:	b7d1                	j	e882ddb0 <mDNS_Execute+0x218>
            if (m->NewQuestions->DelayAnswering && m->timenow - m->NewQuestions->DelayAnswering < 0) break;
    e882ddee:	00cca703          	lw	a4,12(s9)
    e882ddf2:	c711                	beqz	a4,e882ddfe <mDNS_Execute+0x266>
    e882ddf4:	240d2783          	lw	a5,576(s10)
    e882ddf8:	9f99                	subw	a5,a5,a4
    e882ddfa:	3407cf63          	bltz	a5,e882e158 <mDNS_Execute+0x5c0>
    CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e882ddfe:	008ca583          	lw	a1,8(s9)
    e882de02:	214c8993          	addi	s3,s9,532
    e882de06:	864e                	mv	a2,s3
    e882de08:	856a                	mv	a0,s10
    e882de0a:	83ff00ef          	jal	ra,e881e648 <CacheGroupForName>
    e882de0e:	8baa                	mv	s7,a0
    if (cg) CheckCacheExpiration(m, HashSlotFromNameHash(q->qnamehash), cg);
    e882de10:	c919                	beqz	a0,e882de26 <mDNS_Execute+0x28e>
    e882de12:	008ca583          	lw	a1,8(s9)
    e882de16:	1f300793          	li	a5,499
    e882de1a:	862a                	mv	a2,a0
    e882de1c:	02f5f5bb          	remuw	a1,a1,a5
    e882de20:	856a                	mv	a0,s10
    e882de22:	f49f80ef          	jal	ra,e8826d6a <CheckCacheExpiration>
    if (m->NewQuestions != q) { LogInfo("AnswerNewQuestion: Question deleted while doing CheckCacheExpiration"); goto exit; }
    e882de26:	2c0d3783          	ld	a5,704(s10)
    e882de2a:	00fc8f63          	beq	s9,a5,e882de48 <mDNS_Execute+0x2b0>
    e882de2e:	000a2783          	lw	a5,0(s4)
    e882de32:	0007c597          	auipc	a1,0x7c
    e882de36:	c5e58593          	addi	a1,a1,-930 # e88a9a90 <mDNS_DomainTypeNames+0xe0>
    e882de3a:	eff9                	bnez	a5,e882df18 <mDNS_Execute+0x380>
    m->CurrentQuestion = mDNSNULL;
    e882de3c:	2c0d3423          	sd	zero,712(s10)
    m->lock_rrcache = 0;
    e882de40:	020d0c23          	sb	zero,56(s10)
        for (i=0; m->NewQuestions && i<1000; i++)
    e882de44:	2485                	addiw	s1,s1,1
    e882de46:	bdfd                	j	e882dd44 <mDNS_Execute+0x1ac>
    m->NewQuestions = q->next;
    e882de48:	000cb783          	ld	a5,0(s9)
    e882de4c:	2cfd3023          	sd	a5,704(s10)
    if (m->lock_rrcache) LogMsg("AnswerNewQuestion ERROR! Cache already locked!");
    e882de50:	038d4783          	lbu	a5,56(s10)
    e882de54:	cb81                	beqz	a5,e882de64 <mDNS_Execute+0x2cc>
    e882de56:	0007c597          	auipc	a1,0x7c
    e882de5a:	c8258593          	addi	a1,a1,-894 # e88a9ad8 <mDNS_DomainTypeNames+0x128>
    e882de5e:	4501                	li	a0,0
    e882de60:	64c010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->lock_rrcache = 1;
    e882de64:	4785                	li	a5,1
    if (m->CurrentQuestion)
    e882de66:	2c8d3403          	ld	s0,712(s10)
    m->lock_rrcache = 1;
    e882de6a:	02fd0c23          	sb	a5,56(s10)
    if (m->CurrentQuestion)
    e882de6e:	cc19                	beqz	s0,e882de8c <mDNS_Execute+0x2f4>
        LogMsg("AnswerNewQuestion ERROR m->CurrentQuestion already set: %##s (%s)",
    e882de70:	31445503          	lhu	a0,788(s0)
    e882de74:	dede70ef          	jal	ra,e8815c60 <DNSTypeName>
    e882de78:	86aa                	mv	a3,a0
    e882de7a:	21440613          	addi	a2,s0,532
    e882de7e:	0007c597          	auipc	a1,0x7c
    e882de82:	c8a58593          	addi	a1,a1,-886 # e88a9b08 <mDNS_DomainTypeNames+0x158>
    e882de86:	4501                	li	a0,0
    e882de88:	624010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = q;     // Indicate which question we're answering, so we'll know if it gets deleted
    e882de8c:	2d9d3423          	sd	s9,712(s10)
    if (q->NoAnswer == NoAnswer_Fail)
    e882de90:	1b2cc403          	lbu	s0,434(s9)
    e882de94:	4789                	li	a5,2
    e882de96:	08f41563          	bne	s0,a5,e882df20 <mDNS_Execute+0x388>
        LogMsg("AnswerNewQuestion: NoAnswer_Fail %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e882de9a:	314cd503          	lhu	a0,788(s9)
    e882de9e:	dc3e70ef          	jal	ra,e8815c60 <DNSTypeName>
    e882dea2:	86aa                	mv	a3,a0
    e882dea4:	864e                	mv	a2,s3
    e882dea6:	0007c597          	auipc	a1,0x7c
    e882deaa:	caa58593          	addi	a1,a1,-854 # e88a9b50 <mDNS_DomainTypeNames+0x1a0>
    e882deae:	4501                	li	a0,0
    e882deb0:	5fc010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        MakeNegativeCacheRecord(m, &m->rec.r, &q->qname, q->qnamehash, q->qtype, q->qclass, 60, mDNSInterface_Any, q->qDNSServer);
    e882deb4:	168cb603          	ld	a2,360(s9)
    e882deb8:	316cd783          	lhu	a5,790(s9)
    e882debc:	314cd703          	lhu	a4,788(s9)
    e882dec0:	008ca683          	lw	a3,8(s9)
    e882dec4:	e032                	sd	a2,0(sp)
    e882dec6:	00075617          	auipc	a2,0x75
    e882deca:	e9a60613          	addi	a2,a2,-358 # e88a2d60 <mDNSInterface_Any>
    e882dece:	00063883          	ld	a7,0(a2)
    e882ded2:	03c00813          	li	a6,60
    e882ded6:	864e                	mv	a2,s3
    e882ded8:	85ca                	mv	a1,s2
    e882deda:	856a                	mv	a0,s10
    e882dedc:	886f30ef          	jal	ra,e8820f62 <MakeNegativeCacheRecord>
        q->NoAnswer = NoAnswer_Normal;      // Temporarily turn off answer suppression
    e882dee0:	1a0c8923          	sb	zero,434(s9)
        AnswerCurrentQuestionWithResourceRecord(m, &m->rec.r, QC_addnocache);
    e882dee4:	4609                	li	a2,2
    e882dee6:	85ca                	mv	a1,s2
    e882dee8:	856a                	mv	a0,s10
    e882deea:	ad7f80ef          	jal	ra,e88269c0 <AnswerCurrentQuestionWithResourceRecord>
        if (m->CurrentQuestion == q) q->NoAnswer = NoAnswer_Fail;       // Restore NoAnswer state
    e882deee:	2c8d3783          	ld	a5,712(s10)
    e882def2:	00fc9463          	bne	s9,a5,e882defa <mDNS_Execute+0x362>
    e882def6:	1a8c8923          	sb	s0,434(s9)
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e882defa:	67a5                	lui	a5,0x9
    e882defc:	97ea                	add	a5,a5,s10
    e882defe:	4e078023          	sb	zero,1248(a5) # 94e0 <memcmp-0xe87f6b20>
    if (m->CurrentQuestion != q)
    e882df02:	2c8d3783          	ld	a5,712(s10)
    e882df06:	00fc8d63          	beq	s9,a5,e882df20 <mDNS_Execute+0x388>
        LogInfo("AnswerNewQuestion: Question deleted while generating NoAnswer_Fail response");
    e882df0a:	000a2783          	lw	a5,0(s4)
    e882df0e:	d79d                	beqz	a5,e882de3c <mDNS_Execute+0x2a4>
    e882df10:	0007c597          	auipc	a1,0x7c
    e882df14:	c7058593          	addi	a1,a1,-912 # e88a9b80 <mDNS_DomainTypeNames+0x1d0>
    e882df18:	450d                	li	a0,3
    e882df1a:	592010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882df1e:	bf39                	j	e882de3c <mDNS_Execute+0x2a4>
    if (AnswerQuestionWithLORecord(m, q, mDNSfalse))
    e882df20:	4601                	li	a2,0
    e882df22:	85e6                	mv	a1,s9
    e882df24:	856a                	mv	a0,s10
    e882df26:	d34f80ef          	jal	ra,e882645a <AnswerQuestionWithLORecord>
    e882df2a:	f00519e3          	bnez	a0,e882de3c <mDNS_Execute+0x2a4>
    if (QuerySuppressed(q))
    e882df2e:	31ccc783          	lbu	a5,796(s9)
    e882df32:	c781                	beqz	a5,e882df3a <mDNS_Execute+0x3a2>
    e882df34:	140cc783          	lbu	a5,320(s9)
    e882df38:	e789                	bnez	a5,e882df42 <mDNS_Execute+0x3aa>
    e882df3a:	1e6ccd83          	lbu	s11,486(s9)
    e882df3e:	060d8363          	beqz	s11,e882dfa4 <mDNS_Execute+0x40c>
    if (!q->ReturnIntermed)
    e882df42:	31bccd83          	lbu	s11,795(s9)
    e882df46:	020d9863          	bnez	s11,e882df76 <mDNS_Execute+0x3de>
        q->ThisQInterval = 0;
    e882df4a:	000caa23          	sw	zero,20(s9)
    mDNSBool ShouldQueryImmediately = mDNStrue;
    e882df4e:	4405                	li	s0,1
    if (m->CurrentQuestion != q) { debugf("AnswerNewQuestion: Question deleted while giving cache answers"); goto exit; }
    e882df50:	2c8d3783          	ld	a5,712(s10)
    e882df54:	eefc94e3          	bne	s9,a5,e882de3c <mDNS_Execute+0x2a4>
    if (!QuerySuppressed(q) && !AnsweredFromCache && q->RetryWithSearchDomains)
    e882df58:	31ccc783          	lbu	a5,796(s9)
    e882df5c:	12078e63          	beqz	a5,e882e098 <mDNS_Execute+0x500>
    e882df60:	140cc783          	lbu	a5,320(s9)
    e882df64:	12078a63          	beqz	a5,e882e098 <mDNS_Execute+0x500>
    if (ShouldQueryImmediately && ActiveQuestion(q))
    e882df68:	18041063          	bnez	s0,e882e0e8 <mDNS_Execute+0x550>
    SetNextQueryTime(m,q);
    e882df6c:	85e6                	mv	a1,s9
    e882df6e:	856a                	mv	a0,s10
    e882df70:	afcf00ef          	jal	ra,e881e26c <SetNextQueryTime>
    e882df74:	b5e1                	j	e882de3c <mDNS_Execute+0x2a4>
    GenerateNegativeResponse(m, mDNSInterface_Any, QC_suppressed);
    e882df76:	00075797          	auipc	a5,0x75
    e882df7a:	dea78793          	addi	a5,a5,-534 # e88a2d60 <mDNSInterface_Any>
    SuppressQuery = q->SuppressQuery;
    e882df7e:	140ccb83          	lbu	s7,320(s9)
    DisallowPID   = q->DisallowPID;
    e882df82:	1e6cc403          	lbu	s0,486(s9)
    GenerateNegativeResponse(m, mDNSInterface_Any, QC_suppressed);
    e882df86:	638c                	ld	a1,0(a5)
    q->SuppressQuery = mDNSfalse;
    e882df88:	140c8023          	sb	zero,320(s9)
    q->DisallowPID   = mDNSfalse;
    e882df8c:	1e0c8323          	sb	zero,486(s9)
    GenerateNegativeResponse(m, mDNSInterface_Any, QC_suppressed);
    e882df90:	4619                	li	a2,6
    e882df92:	856a                	mv	a0,s10
    e882df94:	8fcf90ef          	jal	ra,e8827090 <GenerateNegativeResponse>
    mDNSBool AnsweredFromCache = mDNSfalse;
    e882df98:	4d81                	li	s11,0
    q->SuppressQuery = SuppressQuery;
    e882df9a:	157c8023          	sb	s7,320(s9)
    q->DisallowPID   = DisallowPID;
    e882df9e:	1e8c8323          	sb	s0,486(s9)
    e882dfa2:	b775                	j	e882df4e <mDNS_Execute+0x3b6>
    else if (!q->ValidatingResponse)
    e882dfa4:	14acc783          	lbu	a5,330(s9)
    mDNSBool ShouldQueryImmediately = mDNStrue;
    e882dfa8:	4405                	li	s0,1
    else if (!q->ValidatingResponse)
    e882dfaa:	f3dd                	bnez	a5,e882df50 <mDNS_Execute+0x3b8>
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e882dfac:	fa0b82e3          	beqz	s7,e882df50 <mDNS_Execute+0x3b8>
    e882dfb0:	010bbb03          	ld	s6,16(s7)
            else if (mDNSOpaque16IsZero(q->TargetQID) && RRTypeIsAddressType(rr->resrec.rrtype) && RRTypeIsAddressType(q->qtype))
    e882dfb4:	4c71                	li	s8,28
    e882dfb6:	4b85                	li	s7,1
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e882dfb8:	f80b0ce3          	beqz	s6,e882df50 <mDNS_Execute+0x3b8>
            if (SameNameRecordAnswersQuestion(&rr->resrec, q))
    e882dfbc:	008b0793          	addi	a5,s6,8
    e882dfc0:	85e6                	mv	a1,s9
    e882dfc2:	853e                	mv	a0,a5
    e882dfc4:	f03e                	sd	a5,32(sp)
    e882dfc6:	ec5e70ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e882dfca:	c555                	beqz	a0,e882e076 <mDNS_Execute+0x4de>
                mDNSu32 SecsSinceRcvd = ((mDNSu32)(m->timenow - rr->TimeRcvd)) / mDNSPlatformOneSecond;
    e882dfcc:	050b2703          	lw	a4,80(s6)
    e882dfd0:	240d2683          	lw	a3,576(s10)
                if (rr->resrec.rroriginalttl <= SecsSinceRcvd)
    e882dfd4:	010b2f03          	lw	t5,16(s6)
    e882dfd8:	7782                	ld	a5,32(sp)
                mDNSu32 SecsSinceRcvd = ((mDNSu32)(m->timenow - rr->TimeRcvd)) / mDNSPlatformOneSecond;
    e882dfda:	9e99                	subw	a3,a3,a4
    e882dfdc:	000aa703          	lw	a4,0(s5) # 38000000 <memcmp-0xb0800000>
    e882dfe0:	02e6d6bb          	divuw	a3,a3,a4
                if (rr->resrec.rroriginalttl <= SecsSinceRcvd)
    e882dfe4:	03e6ed63          	bltu	a3,t5,e882e01e <mDNS_Execute+0x486>
                    LogMsg("AnswerNewQuestion: How is rr->resrec.rroriginalttl %lu <= SecsSinceRcvd %lu for %s %d %d",
    e882dfe8:	030b3583          	ld	a1,48(s6)
    e882dfec:	6662                	ld	a2,24(sp)
    e882dfee:	853e                	mv	a0,a5
    e882dff0:	0591                	addi	a1,a1,4
    e882dff2:	f47a                	sd	t5,40(sp)
    e882dff4:	f036                	sd	a3,32(sp)
    e882dff6:	a1fe80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882dffa:	872a                	mv	a4,a0
    e882dffc:	fde1468b          	ldd	a3,t5,(sp),2,4
    e882e000:	050b2803          	lw	a6,80(s6)
    e882e004:	240d2783          	lw	a5,576(s10)
    e882e008:	867a                	mv	a2,t5
    e882e00a:	0007c597          	auipc	a1,0x7c
    e882e00e:	bc658593          	addi	a1,a1,-1082 # e88a9bd0 <mDNS_DomainTypeNames+0x220>
    e882e012:	4501                	li	a0,0
    e882e014:	498010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        for (rr = cg ? cg->members : mDNSNULL; rr; rr=rr->next)
    e882e018:	000b3b03          	ld	s6,0(s6)
    e882e01c:	bf71                	j	e882dfb8 <mDNS_Execute+0x420>
                if ((rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) || (q->ExpectUnique))
    e882e01e:	008b4783          	lbu	a5,8(s6)
    e882e022:	8bc1                	andi	a5,a5,16
    e882e024:	e781                	bnez	a5,e882e02c <mDNS_Execute+0x494>
    e882e026:	319cc783          	lbu	a5,793(s9)
    e882e02a:	c391                	beqz	a5,e882e02e <mDNS_Execute+0x496>
                    ShouldQueryImmediately = mDNSfalse;
    e882e02c:	4401                	li	s0,0
                q->CurrentAnswers++;
    e882e02e:	024ca783          	lw	a5,36(s9)
                if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers++;
    e882e032:	40000713          	li	a4,1024
                q->CurrentAnswers++;
    e882e036:	2785                	addiw	a5,a5,1
    e882e038:	02fca223          	sw	a5,36(s9)
                if (rr->resrec.rdlength > SmallRecordLimit) q->LargeAnswers++;
    e882e03c:	014b5783          	lhu	a5,20(s6)
    e882e040:	00f77763          	bgeu	a4,a5,e882e04e <mDNS_Execute+0x4b6>
    e882e044:	02cca783          	lw	a5,44(s9)
    e882e048:	2785                	addiw	a5,a5,1
    e882e04a:	02fca623          	sw	a5,44(s9)
                if (rr->resrec.RecordType & kDNSRecordTypePacketUniqueMask) q->UniqueAnswers++;
    e882e04e:	008b4783          	lbu	a5,8(s6)
    e882e052:	8bc1                	andi	a5,a5,16
    e882e054:	c791                	beqz	a5,e882e060 <mDNS_Execute+0x4c8>
    e882e056:	030ca783          	lw	a5,48(s9)
    e882e05a:	2785                	addiw	a5,a5,1
    e882e05c:	02fca823          	sw	a5,48(s9)
                AnswerCurrentQuestionWithResourceRecord(m, rr, QC_add);
    e882e060:	4605                	li	a2,1
    e882e062:	85da                	mv	a1,s6
    e882e064:	856a                	mv	a0,s10
    e882e066:	95bf80ef          	jal	ra,e88269c0 <AnswerCurrentQuestionWithResourceRecord>
                AnsweredFromCache = mDNStrue;
    e882e06a:	4d85                	li	s11,1
                if (m->CurrentQuestion != q) break;     // If callback deleted q, then we're finished here
    e882e06c:	2c8d3783          	ld	a5,712(s10)
    e882e070:	fafc84e3          	beq	s9,a5,e882e018 <mDNS_Execute+0x480>
    e882e074:	bdf1                	j	e882df50 <mDNS_Execute+0x3b8>
            else if (mDNSOpaque16IsZero(q->TargetQID) && RRTypeIsAddressType(rr->resrec.rrtype) && RRTypeIsAddressType(q->qtype))
    e882e076:	212cd783          	lhu	a5,530(s9)
    e882e07a:	ffd9                	bnez	a5,e882e018 <mDNS_Execute+0x480>
    e882e07c:	00ab5783          	lhu	a5,10(s6)
    e882e080:	01778463          	beq	a5,s7,e882e088 <mDNS_Execute+0x4f0>
    e882e084:	f9879ae3          	bne	a5,s8,e882e018 <mDNS_Execute+0x480>
    e882e088:	314cd783          	lhu	a5,788(s9)
    e882e08c:	01778463          	beq	a5,s7,e882e094 <mDNS_Execute+0x4fc>
    e882e090:	f98794e3          	bne	a5,s8,e882e018 <mDNS_Execute+0x480>
                ShouldQueryImmediately = mDNSfalse;
    e882e094:	4401                	li	s0,0
    e882e096:	b749                	j	e882e018 <mDNS_Execute+0x480>
    if (!QuerySuppressed(q) && !AnsweredFromCache && q->RetryWithSearchDomains)
    e882e098:	1e6cc783          	lbu	a5,486(s9)
    e882e09c:	00fdeeb3          	or	t4,s11,a5
    e882e0a0:	ec0e94e3          	bnez	t4,e882df68 <mDNS_Execute+0x3d0>
    e882e0a4:	31dcc783          	lbu	a5,797(s9)
    e882e0a8:	ec0780e3          	beqz	a5,e882df68 <mDNS_Execute+0x3d0>
        LogInfo("AnswerNewQuestion: Generating response for retrying with search domains %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e882e0ac:	000a2783          	lw	a5,0(s4)
    e882e0b0:	cf91                	beqz	a5,e882e0cc <mDNS_Execute+0x534>
    e882e0b2:	314cd503          	lhu	a0,788(s9)
    e882e0b6:	babe70ef          	jal	ra,e8815c60 <DNSTypeName>
    e882e0ba:	86aa                	mv	a3,a0
    e882e0bc:	864e                	mv	a2,s3
    e882e0be:	0007c597          	auipc	a1,0x7c
    e882e0c2:	b7258593          	addi	a1,a1,-1166 # e88a9c30 <mDNS_DomainTypeNames+0x280>
    e882e0c6:	450d                	li	a0,3
    e882e0c8:	3e4010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        GenerateNegativeResponse(m, mDNSInterface_Any, QC_forceresponse);
    e882e0cc:	00075797          	auipc	a5,0x75
    e882e0d0:	c9478793          	addi	a5,a5,-876 # e88a2d60 <mDNSInterface_Any>
    e882e0d4:	638c                	ld	a1,0(a5)
    e882e0d6:	460d                	li	a2,3
    e882e0d8:	856a                	mv	a0,s10
    e882e0da:	fb7f80ef          	jal	ra,e8827090 <GenerateNegativeResponse>
    if (m->CurrentQuestion != q) { debugf("AnswerNewQuestion: Question deleted while giving negative answer"); goto exit; }
    e882e0de:	2c8d3783          	ld	a5,712(s10)
    e882e0e2:	d4fc9de3          	bne	s9,a5,e882de3c <mDNS_Execute+0x2a4>
    e882e0e6:	b549                	j	e882df68 <mDNS_Execute+0x3d0>
    if (ShouldQueryImmediately && ActiveQuestion(q))
    e882e0e8:	014ca783          	lw	a5,20(s9)
    e882e0ec:	e8f050e3          	blez	a5,e882df6c <mDNS_Execute+0x3d4>
    e882e0f0:	050cb783          	ld	a5,80(s9)
    e882e0f4:	e6079ce3          	bnez	a5,e882df6c <mDNS_Execute+0x3d4>
        q->ThisQInterval  = InitialQuestionInterval;
    e882e0f8:	000aa683          	lw	a3,0(s5)
    e882e0fc:	470d                	li	a4,3
    e882e0fe:	0026879b          	addiw	a5,a3,2
    e882e102:	02e7c7bb          	divw	a5,a5,a4
    e882e106:	00fcaa23          	sw	a5,20(s9)
        q->LastQTime      = m->timenow - q->ThisQInterval;
    e882e10a:	240d2703          	lw	a4,576(s10)
    e882e10e:	40f707bb          	subw	a5,a4,a5
    e882e112:	00fca823          	sw	a5,16(s9)
        if (mDNSOpaque16IsZero(q->TargetQID))       // For mDNS, spread packets to avoid a burst of simultaneous queries
    e882e116:	212cd783          	lhu	a5,530(s9)
    e882e11a:	e40799e3          	bnez	a5,e882df6c <mDNS_Execute+0x3d4>
            if (!m->RandomQueryDelay)
    e882e11e:	274d2783          	lw	a5,628(s10)
    e882e122:	e38d                	bnez	a5,e882e144 <mDNS_Execute+0x5ac>
                m->RandomQueryDelay = (mDNSPlatformOneSecond + mDNSRandom(mDNSPlatformOneSecond*5) - 1) / 50 + 1;
    e882e124:	4515                	li	a0,5
    e882e126:	02d5053b          	mulw	a0,a0,a3
    e882e12a:	ddfe40ef          	jal	ra,e8812f08 <mDNSRandom>
    e882e12e:	000aa783          	lw	a5,0(s5)
    e882e132:	37fd                	addiw	a5,a5,-1
    e882e134:	9d3d                	addw	a0,a0,a5
    e882e136:	03200793          	li	a5,50
    e882e13a:	02f5553b          	divuw	a0,a0,a5
    e882e13e:	2505                	addiw	a0,a0,1
    e882e140:	26ad2a23          	sw	a0,628(s10)
            q->LastQTime += m->RandomQueryDelay;
    e882e144:	010ca783          	lw	a5,16(s9)
    e882e148:	274d2703          	lw	a4,628(s10)
    e882e14c:	9fb9                	addw	a5,a5,a4
    e882e14e:	00fca823          	sw	a5,16(s9)
    e882e152:	bd29                	j	e882df6c <mDNS_Execute+0x3d4>
        if (i >= 1000) LogMsg("mDNS_Execute: AnswerNewQuestion exceeded loop limit");
    e882e154:	c0f480e3          	beq	s1,a5,e882dd54 <mDNS_Execute+0x1bc>
            m->CurrentRecord = m->ResourceRecords;
    e882e158:	678d                	lui	a5,0x3
    e882e15a:	00fd0a33          	add	s4,s10,a5
    e882e15e:	6a89                	lui	s5,0x2
    e882e160:	a2878793          	addi	a5,a5,-1496 # 2a28 <memcmp-0xe87fd5d8>
                AnsweredFromCache = mDNStrue;
    e882e164:	3e800993          	li	s3,1000
    e882e168:	a90a8a93          	addi	s5,s5,-1392 # 1a90 <memcmp-0xe87fe570>
    e882e16c:	00fd0433          	add	s0,s10,a5
        for (i=0; i<1000 && m->LocalRemoveEvents; i++)
    e882e170:	284d4783          	lbu	a5,644(s10)
    e882e174:	e395                	bnez	a5,e882e198 <mDNS_Execute+0x600>
    ag = AuthGroupForName(&m->rrauth, q->qnamehash, &q->qname);
    e882e176:	6509                	lui	a0,0x2
    if (m->CurrentRecord)
    e882e178:	640d                	lui	s0,0x3
    ag = AuthGroupForName(&m->rrauth, q->qnamehash, &q->qname);
    e882e17a:	a7850513          	addi	a0,a0,-1416 # 1a78 <memcmp-0xe87fe588>
                retEv = mDNStrue;
    e882e17e:	4a81                	li	s5,0
        for (i=0; m->NewLocalOnlyQuestions && i<1000; i++) AnswerNewLocalOnlyQuestion(m);
    e882e180:	3e800b93          	li	s7,1000
    if (m->CurrentRecord)
    e882e184:	946a                	add	s0,s0,s10
        LogMsg("AnswerNewLocalOnlyQuestion ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e882e186:	03bd0b13          	addi	s6,s10,59
    ag = AuthGroupForName(&m->rrauth, q->qnamehash, &q->qname);
    e882e18a:	00ad0a33          	add	s4,s10,a0
        GenerateNegativeResponse(m, mDNSInterface_LocalOnly, QC_forceresponse);
    e882e18e:	00075c17          	auipc	s8,0x75
    e882e192:	be2c0c13          	addi	s8,s8,-1054 # e88a2d70 <mDNSInterface_LocalOnly>
    e882e196:	a285                	j	e882e2f6 <mDNS_Execute+0x75e>
            m->LocalRemoveEvents = mDNSfalse;
    e882e198:	280d0223          	sb	zero,644(s10)
            m->CurrentRecord = m->ResourceRecords;
    e882e19c:	1b8a3783          	ld	a5,440(s4)
            CheckRmvEventsForLocalRecords(m);
    e882e1a0:	856a                	mv	a0,s10
    e882e1a2:	015d04b3          	add	s1,s10,s5
            m->CurrentRecord = m->ResourceRecords;
    e882e1a6:	1cfa3823          	sd	a5,464(s4)
            CheckRmvEventsForLocalRecords(m);
    e882e1aa:	a30f80ef          	jal	ra,e88263da <CheckRmvEventsForLocalRecords>
                for (ag = m->rrauth.rrauth_hash[slot]; ag; ag = ag->next)
    e882e1ae:	0004b903          	ld	s2,0(s1)
    e882e1b2:	02091063          	bnez	s2,e882e1d2 <mDNS_Execute+0x63a>
            for (slot = 0; slot < AUTH_HASH_SLOTS; slot++)
    e882e1b6:	04a1                	addi	s1,s1,8
    e882e1b8:	fe941be3          	bne	s0,s1,e882e1ae <mDNS_Execute+0x616>
        for (i=0; i<1000 && m->LocalRemoveEvents; i++)
    e882e1bc:	39fd                	addiw	s3,s3,-1
    e882e1be:	fa0999e3          	bnez	s3,e882e170 <mDNS_Execute+0x5d8>
        if (i >= 1000) LogMsg("mDNS_Execute: m->LocalRemoveEvents exceeded loop limit");
    e882e1c2:	0007c597          	auipc	a1,0x7c
    e882e1c6:	e5658593          	addi	a1,a1,-426 # e88aa018 <mDNS_DomainTypeNames+0x668>
    e882e1ca:	4501                	li	a0,0
    e882e1cc:	2e0010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882e1d0:	b75d                	j	e882e176 <mDNS_Execute+0x5de>
                    m->CurrentRecord = ag->members;
    e882e1d2:	01093783          	ld	a5,16(s2)
    e882e1d6:	1cfa3823          	sd	a5,464(s4)
                    if (m->CurrentRecord) CheckRmvEventsForLocalRecords(m);
    e882e1da:	c781                	beqz	a5,e882e1e2 <mDNS_Execute+0x64a>
    e882e1dc:	856a                	mv	a0,s10
    e882e1de:	9fcf80ef          	jal	ra,e88263da <CheckRmvEventsForLocalRecords>
                for (ag = m->rrauth.rrauth_hash[slot]; ag; ag = ag->next)
    e882e1e2:	00093903          	ld	s2,0(s2)
    e882e1e6:	b7f1                	j	e882e1b2 <mDNS_Execute+0x61a>
    m->NewLocalOnlyQuestions = q->next;             // Advance NewLocalOnlyQuestions to the next (if any)
    e882e1e8:	609c                	ld	a5,0(s1)
    if (m->CurrentQuestion)
    e882e1ea:	2c8d3903          	ld	s2,712(s10)
    m->NewLocalOnlyQuestions = q->next;             // Advance NewLocalOnlyQuestions to the next (if any)
    e882e1ee:	2cfd3c23          	sd	a5,728(s10)
    if (m->CurrentQuestion)
    e882e1f2:	02090063          	beqz	s2,e882e212 <mDNS_Execute+0x67a>
        LogMsg("AnswerNewLocalOnlyQuestion ERROR m->CurrentQuestion already set: %##s (%s)",
    e882e1f6:	31495503          	lhu	a0,788(s2)
    e882e1fa:	a67e70ef          	jal	ra,e8815c60 <DNSTypeName>
    e882e1fe:	86aa                	mv	a3,a0
    e882e200:	21490613          	addi	a2,s2,532
    e882e204:	0007c597          	auipc	a1,0x7c
    e882e208:	abc58593          	addi	a1,a1,-1348 # e88a9cc0 <mDNS_DomainTypeNames+0x310>
    e882e20c:	4501                	li	a0,0
    e882e20e:	29e010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = q;     // Indicate which question we're answering, so we'll know if it gets deleted
    e882e212:	2c9d3423          	sd	s1,712(s10)
    if (m->CurrentRecord)
    e882e216:	1d043503          	ld	a0,464(s0) # 31d0 <memcmp-0xe87fce30>
    e882e21a:	cd19                	beqz	a0,e882e238 <mDNS_Execute+0x6a0>
        LogMsg("AnswerNewLocalOnlyQuestion ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e882e21c:	790c                	ld	a1,48(a0)
    e882e21e:	865a                	mv	a2,s6
    e882e220:	0521                	addi	a0,a0,8
    e882e222:	0591                	addi	a1,a1,4
    e882e224:	ff0e80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882e228:	862a                	mv	a2,a0
    e882e22a:	0007c597          	auipc	a1,0x7c
    e882e22e:	ae658593          	addi	a1,a1,-1306 # e88a9d10 <mDNS_DomainTypeNames+0x360>
    e882e232:	4501                	li	a0,0
    e882e234:	278010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    ag = AuthGroupForName(&m->rrauth, q->qnamehash, &q->qname);
    e882e238:	448c                	lw	a1,8(s1)
    e882e23a:	21448613          	addi	a2,s1,532
    e882e23e:	8552                	mv	a0,s4
    e882e240:	898f00ef          	jal	ra,e881e2d8 <AuthGroupForName>
    e882e244:	8caa                	mv	s9,a0
    mDNSBool retEv = mDNSfalse;
    e882e246:	4981                	li	s3,0
    if (ag)
    e882e248:	cd1d                	beqz	a0,e882e286 <mDNS_Execute+0x6ee>
        m->CurrentRecord = ag->members;
    e882e24a:	691c                	ld	a5,16(a0)
    e882e24c:	1cf43823          	sd	a5,464(s0)
        while (m->CurrentRecord && m->CurrentRecord != ag->NewLocalOnlyRecords)
    e882e250:	1d043903          	ld	s2,464(s0)
    e882e254:	02090963          	beqz	s2,e882e286 <mDNS_Execute+0x6ee>
    e882e258:	028cb783          	ld	a5,40(s9)
    e882e25c:	02f90563          	beq	s2,a5,e882e286 <mDNS_Execute+0x6ee>
            m->CurrentRecord = rr->next;
    e882e260:	00093783          	ld	a5,0(s2)
            if (LocalOnlyRecordAnswersQuestion(rr, q))
    e882e264:	85a6                	mv	a1,s1
    e882e266:	854a                	mv	a0,s2
            m->CurrentRecord = rr->next;
    e882e268:	1cf43823          	sd	a5,464(s0)
            if (LocalOnlyRecordAnswersQuestion(rr, q))
    e882e26c:	84ee60ef          	jal	ra,e88142ba <LocalOnlyRecordAnswersQuestion>
    e882e270:	d165                	beqz	a0,e882e250 <mDNS_Execute+0x6b8>
                AnswerLocalQuestionWithLocalAuthRecord(m, rr, mDNStrue);
    e882e272:	4605                	li	a2,1
    e882e274:	85ca                	mv	a1,s2
    e882e276:	856a                	mv	a0,s10
    e882e278:	d5ff70ef          	jal	ra,e8825fd6 <AnswerLocalQuestionWithLocalAuthRecord>
                retEv = mDNStrue;
    e882e27c:	4985                	li	s3,1
                if (m->CurrentQuestion != q) break;     // If callback deleted q, then we're finished here
    e882e27e:	2c8d3783          	ld	a5,712(s10)
    e882e282:	fcf487e3          	beq	s1,a5,e882e250 <mDNS_Execute+0x6b8>
    if (m->CurrentQuestion == q)
    e882e286:	2c8d3783          	ld	a5,712(s10)
    e882e28a:	06f49163          	bne	s1,a5,e882e2ec <mDNS_Execute+0x754>
        m->CurrentRecord = m->ResourceRecords;
    e882e28e:	1b843783          	ld	a5,440(s0)
    e882e292:	1cf43823          	sd	a5,464(s0)
        while (m->CurrentRecord && m->CurrentRecord != m->NewLocalRecords)
    e882e296:	1d043903          	ld	s2,464(s0)
    e882e29a:	00090663          	beqz	s2,e882e2a6 <mDNS_Execute+0x70e>
    e882e29e:	1c843783          	ld	a5,456(s0)
    e882e2a2:	02f91263          	bne	s2,a5,e882e2c6 <mDNS_Execute+0x72e>
    if (!retEv && (m->CurrentQuestion == q) && q->ReturnIntermed)
    e882e2a6:	04099363          	bnez	s3,e882e2ec <mDNS_Execute+0x754>
    e882e2aa:	2c8d3783          	ld	a5,712(s10)
    e882e2ae:	02f49f63          	bne	s1,a5,e882e2ec <mDNS_Execute+0x754>
    e882e2b2:	31b4c783          	lbu	a5,795(s1)
    e882e2b6:	cb9d                	beqz	a5,e882e2ec <mDNS_Execute+0x754>
        GenerateNegativeResponse(m, mDNSInterface_LocalOnly, QC_forceresponse);
    e882e2b8:	000c3583          	ld	a1,0(s8)
    e882e2bc:	460d                	li	a2,3
    e882e2be:	856a                	mv	a0,s10
    e882e2c0:	dd1f80ef          	jal	ra,e8827090 <GenerateNegativeResponse>
    e882e2c4:	a025                	j	e882e2ec <mDNS_Execute+0x754>
            m->CurrentRecord = rr->next;
    e882e2c6:	854a                	mv	a0,s2
    e882e2c8:	7885478b          	ldia	a5,(a0),8,0
            if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e882e2cc:	85a6                	mv	a1,s1
            m->CurrentRecord = rr->next;
    e882e2ce:	1cf43823          	sd	a5,464(s0)
            if (ResourceRecordAnswersQuestion(&rr->resrec, q))
    e882e2d2:	ccfe70ef          	jal	ra,e8815fa0 <ResourceRecordAnswersQuestion>
    e882e2d6:	d161                	beqz	a0,e882e296 <mDNS_Execute+0x6fe>
                AnswerLocalQuestionWithLocalAuthRecord(m, rr, mDNStrue);
    e882e2d8:	4605                	li	a2,1
    e882e2da:	85ca                	mv	a1,s2
    e882e2dc:	856a                	mv	a0,s10
    e882e2de:	cf9f70ef          	jal	ra,e8825fd6 <AnswerLocalQuestionWithLocalAuthRecord>
                retEv = mDNStrue;
    e882e2e2:	4985                	li	s3,1
                if (m->CurrentQuestion != q) break;     // If callback deleted q, then we're finished here
    e882e2e4:	2c8d3783          	ld	a5,712(s10)
    e882e2e8:	faf487e3          	beq	s1,a5,e882e296 <mDNS_Execute+0x6fe>
    m->CurrentQuestion = mDNSNULL;
    e882e2ec:	2c0d3423          	sd	zero,712(s10)
        for (i=0; m->NewLocalOnlyQuestions && i<1000; i++) AnswerNewLocalOnlyQuestion(m);
    e882e2f0:	2a85                	addiw	s5,s5,1
    m->CurrentRecord   = mDNSNULL;
    e882e2f2:	1c043823          	sd	zero,464(s0)
        for (i=0; m->NewLocalOnlyQuestions && i<1000; i++) AnswerNewLocalOnlyQuestion(m);
    e882e2f6:	2d8d3483          	ld	s1,728(s10)
    e882e2fa:	c899                	beqz	s1,e882e310 <mDNS_Execute+0x778>
    e882e2fc:	ef7a96e3          	bne	s5,s7,e882e1e8 <mDNS_Execute+0x650>
        if (i >= 1000) LogMsg("mDNS_Execute: AnswerNewLocalOnlyQuestion exceeded loop limit");
    e882e300:	0007c597          	auipc	a1,0x7c
    e882e304:	a5858593          	addi	a1,a1,-1448 # e88a9d58 <mDNS_DomainTypeNames+0x3a8>
    e882e308:	4501                	li	a0,0
    e882e30a:	1a2010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882e30e:	a029                	j	e882e318 <mDNS_Execute+0x780>
    e882e310:	3e800793          	li	a5,1000
    e882e314:	fefa86e3          	beq	s5,a5,e882e300 <mDNS_Execute+0x768>
        for (i=0; i<1000 && m->NewLocalRecords && m->NewLocalRecords != head; i++)
    e882e318:	678d                	lui	a5,0x3
    e882e31a:	00fd0a33          	add	s4,s10,a5
                AuthRecord **p = &m->ResourceRecords;   // Find this record in our list of active records
    e882e31e:	1b878793          	addi	a5,a5,440 # 31b8 <memcmp-0xe87fce48>
    e882e322:	4a81                	li	s5,0
    e882e324:	4481                	li	s1,0
    e882e326:	4981                	li	s3,0
            if (LocalRecordReady(rr))
    e882e328:	4b09                	li	s6,2
                AuthRecord **p = &m->ResourceRecords;   // Find this record in our list of active records
    e882e32a:	00fd0933          	add	s2,s10,a5
                    LogMsg("mDNS_Execute: ERROR!!: head %p, NewLocalRecords %p", head, m->NewLocalRecords);
    e882e32e:	0007cb97          	auipc	s7,0x7c
    e882e332:	a6ab8b93          	addi	s7,s7,-1430 # e88a9d98 <mDNS_DomainTypeNames+0x3e8>
        for (i=0; i<1000 && m->NewLocalRecords && m->NewLocalRecords != head; i++)
    e882e336:	3e800c13          	li	s8,1000
    e882e33a:	1c8a3403          	ld	s0,456(s4)
    e882e33e:	c015                	beqz	s0,e882e362 <mDNS_Execute+0x7ca>
    e882e340:	02940163          	beq	s0,s1,e882e362 <mDNS_Execute+0x7ca>
            m->NewLocalRecords = m->NewLocalRecords->next;
    e882e344:	6014                	ld	a3,0(s0)
    e882e346:	1cda3423          	sd	a3,456(s4)
            if (LocalRecordReady(rr))
    e882e34a:	00844783          	lbu	a5,8(s0)
    e882e34e:	11678a63          	beq	a5,s6,e882e462 <mDNS_Execute+0x8ca>
                AnswerAllLocalQuestionsWithLocalAuthRecord(m, rr, mDNStrue);
    e882e352:	4605                	li	a2,1
    e882e354:	85a2                	mv	a1,s0
    e882e356:	856a                	mv	a0,s10
    e882e358:	e63f70ef          	jal	ra,e88261ba <AnswerAllLocalQuestionsWithLocalAuthRecord>
        for (i=0; i<1000 && m->NewLocalRecords && m->NewLocalRecords != head; i++)
    e882e35c:	2985                	addiw	s3,s3,1
    e882e35e:	fd899ee3          	bne	s3,s8,e882e33a <mDNS_Execute+0x7a2>
        m->NewLocalRecords = head;
    e882e362:	678d                	lui	a5,0x3
    e882e364:	97ea                	add	a5,a5,s10
    e882e366:	1c97b423          	sd	s1,456(a5) # 31c8 <memcmp-0xe87fce38>
        if (i >= 1000) LogMsg("mDNS_Execute: m->NewLocalRecords exceeded loop limit");
    e882e36a:	3e800793          	li	a5,1000
    e882e36e:	00f99963          	bne	s3,a5,e882e380 <mDNS_Execute+0x7e8>
    e882e372:	0007c597          	auipc	a1,0x7c
    e882e376:	a5e58593          	addi	a1,a1,-1442 # e88a9dd0 <mDNS_DomainTypeNames+0x420>
    e882e37a:	4501                	li	a0,0
    e882e37c:	130010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (m->NewLocalOnlyRecords)
    e882e380:	678d                	lui	a5,0x3
    e882e382:	00fd0733          	add	a4,s10,a5
    e882e386:	1d874683          	lbu	a3,472(a4)
    e882e38a:	10069d63          	bnez	a3,e882e4a4 <mDNS_Execute+0x90c>
        if (m->mDNSPlatformStatus != mStatus_NoError || (m->SleepState == SleepState_Sleeping))
    e882e38e:	010d2783          	lw	a5,16(s10)
    e882e392:	18078963          	beqz	a5,e882e524 <mDNS_Execute+0x98c>
            DiscardDeregistrations(m);
    e882e396:	856a                	mv	a0,s10
    e882e398:	fadf70ef          	jal	ra,e8826344 <DiscardDeregistrations>
        if (m->mDNSPlatformStatus == mStatus_NoError && (m->SuppressSending == 0 || m->timenow - m->SuppressSending >= 0))
    e882e39c:	010d2783          	lw	a5,16(s10)
    e882e3a0:	18078763          	beqz	a5,e882e52e <mDNS_Execute+0x996>
        if (m->NextScheduledStopTime && m->timenow - m->NextScheduledStopTime >= 0) TimeoutQuestions(m);
    e882e3a4:	2acd2783          	lw	a5,684(s10)
        m->RandomQueryDelay     = 0;
    e882e3a8:	260d3a23          	sd	zero,628(s10)
        if (m->NextScheduledStopTime && m->timenow - m->NextScheduledStopTime >= 0) TimeoutQuestions(m);
    e882e3ac:	c3a1                	beqz	a5,e882e3ec <mDNS_Execute+0x854>
    e882e3ae:	240d2703          	lw	a4,576(s10)
    e882e3b2:	40f707bb          	subw	a5,a4,a5
    e882e3b6:	0207cb63          	bltz	a5,e882e3ec <mDNS_Execute+0x854>
    m->NextScheduledStopTime = m->timenow + FutureTime; // push reschedule of TimeoutQuestions to way off into the future
    e882e3ba:	380007b7          	lui	a5,0x38000
    e882e3be:	9fb9                	addw	a5,a5,a4
    e882e3c0:	2afd2623          	sw	a5,684(s10)
    TimeoutQuestions_internal(m, m->Questions, mDNSInterface_Any);
    e882e3c4:	00075797          	auipc	a5,0x75
    e882e3c8:	99c78793          	addi	a5,a5,-1636 # e88a2d60 <mDNSInterface_Any>
    e882e3cc:	6390                	ld	a2,0(a5)
    e882e3ce:	2b8d3583          	ld	a1,696(s10)
    e882e3d2:	856a                	mv	a0,s10
    e882e3d4:	d71f80ef          	jal	ra,e8827144 <TimeoutQuestions_internal>
    TimeoutQuestions_internal(m, m->LocalOnlyQuestions, mDNSInterface_LocalOnly);
    e882e3d8:	00075797          	auipc	a5,0x75
    e882e3dc:	99878793          	addi	a5,a5,-1640 # e88a2d70 <mDNSInterface_LocalOnly>
    e882e3e0:	6390                	ld	a2,0(a5)
    e882e3e2:	2d0d3583          	ld	a1,720(s10)
    e882e3e6:	856a                	mv	a0,s10
    e882e3e8:	d5df80ef          	jal	ra,e8827144 <TimeoutQuestions_internal>
        if (m->NextSRVUpdate && m->timenow - m->NextSRVUpdate >= 0) UpdateAllSRVRecords(m);
    e882e3ec:	678d                	lui	a5,0x3
    e882e3ee:	97ea                	add	a5,a5,s10
    e882e3f0:	1fc7a703          	lw	a4,508(a5) # 31fc <memcmp-0xe87fce04>
    e882e3f4:	cb09                	beqz	a4,e882e406 <mDNS_Execute+0x86e>
    e882e3f6:	240d2783          	lw	a5,576(s10)
    e882e3fa:	9f99                	subw	a5,a5,a4
    e882e3fc:	0007c563          	bltz	a5,e882e406 <mDNS_Execute+0x86e>
    e882e400:	856a                	mv	a0,s10
    e882e402:	07e070ef          	jal	ra,e8835480 <UpdateAllSRVRecords>
        if (m->timenow - m->NextScheduledNATOp >= 0) CheckNATMappings(m);
    e882e406:	240d2783          	lw	a5,576(s10)
    e882e40a:	264d2703          	lw	a4,612(s10)
    e882e40e:	9f99                	subw	a5,a5,a4
    e882e410:	0007c563          	bltz	a5,e882e41a <mDNS_Execute+0x882>
    e882e414:	856a                	mv	a0,s10
    e882e416:	774090ef          	jal	ra,e8837b8a <CheckNATMappings>
        if (m->timenow - m->NextuDNSEvent >= 0) uDNS_Tasks(m);
    e882e41a:	670d                	lui	a4,0x3
    e882e41c:	976a                	add	a4,a4,s10
    e882e41e:	240d2783          	lw	a5,576(s10)
    e882e422:	1f872703          	lw	a4,504(a4) # 31f8 <memcmp-0xe87fce08>
    e882e426:	9f99                	subw	a5,a5,a4
    e882e428:	0007c563          	bltz	a5,e882e432 <mDNS_Execute+0x89a>
    e882e42c:	856a                	mv	a0,s10
    e882e42e:	3bf090ef          	jal	ra,e8837fec <uDNS_Tasks>
    mDNS_Unlock(m);     // Calling mDNS_Unlock is what gives m->NextScheduledEvent its new value
    e882e432:	856a                	mv	a0,s10
    e882e434:	0007a597          	auipc	a1,0x7a
    e882e438:	89c58593          	addi	a1,a1,-1892 # e88a7cd0 <__func__.10746>
    e882e43c:	e90e70ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e882e440:	644a                	ld	s0,144(sp)
    e882e442:	60ea                	ld	ra,152(sp)
    return(m->NextScheduledEvent);
    e882e444:	248d2503          	lw	a0,584(s10)
}
    e882e448:	64aa                	ld	s1,136(sp)
    e882e44a:	690a                	ld	s2,128(sp)
    e882e44c:	79e6                	ld	s3,120(sp)
    e882e44e:	7a46                	ld	s4,112(sp)
    e882e450:	7aa6                	ld	s5,104(sp)
    e882e452:	7b06                	ld	s6,96(sp)
    e882e454:	6be6                	ld	s7,88(sp)
    e882e456:	6c46                	ld	s8,80(sp)
    e882e458:	6ca6                	ld	s9,72(sp)
    e882e45a:	6d06                	ld	s10,64(sp)
    e882e45c:	7de2                	ld	s11,56(sp)
    e882e45e:	610d                	addi	sp,sp,160
    e882e460:	8082                	ret
            else if (!rr->next)
    e882e462:	ea89                	bnez	a3,e882e474 <mDNS_Execute+0x8dc>
                if (head != mDNSNULL || m->NewLocalRecords != mDNSNULL)
    e882e464:	c491                	beqz	s1,e882e470 <mDNS_Execute+0x8d8>
                    LogMsg("mDNS_Execute: ERROR!!: head %p, NewLocalRecords %p", head, m->NewLocalRecords);
    e882e466:	8626                	mv	a2,s1
    e882e468:	85de                	mv	a1,s7
    e882e46a:	4501                	li	a0,0
    e882e46c:	040010ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882e470:	84a2                	mv	s1,s0
    e882e472:	b5ed                	j	e882e35c <mDNS_Execute+0x7c4>
                AuthRecord **p = &m->ResourceRecords;   // Find this record in our list of active records
    e882e474:	1b8a3703          	ld	a4,440(s4)
    e882e478:	87ca                	mv	a5,s2
                while (*p && *p != rr) p=&(*p)->next;
    e882e47a:	1c070c63          	beqz	a4,e882e652 <mDNS_Execute+0xaba>
    e882e47e:	00871763          	bne	a4,s0,e882e48c <mDNS_Execute+0x8f4>
                if (*p) *p = rr->next;                  // Cut this record from the list
    e882e482:	e394                	sd	a3,0(a5)
                if (!head)
    e882e484:	c881                	beqz	s1,e882e494 <mDNS_Execute+0x8fc>
                    tail->next = rr;
    e882e486:	008ab023          	sd	s0,0(s5)
                    tail = rr;
    e882e48a:	a809                	j	e882e49c <mDNS_Execute+0x904>
                while (*p && *p != rr) p=&(*p)->next;
    e882e48c:	87ba                	mv	a5,a4
    e882e48e:	6318                	ld	a4,0(a4)
    e882e490:	b7ed                	j	e882e47a <mDNS_Execute+0x8e2>
                    while (*p) p=&(*p)->next;
    e882e492:	87ba                	mv	a5,a4
    e882e494:	6398                	ld	a4,0(a5)
    e882e496:	ff75                	bnez	a4,e882e492 <mDNS_Execute+0x8fa>
                    *p = rr;
    e882e498:	e380                	sd	s0,0(a5)
                    head = tail = rr;
    e882e49a:	84a2                	mv	s1,s0
                rr->next = mDNSNULL;
    e882e49c:	00043023          	sd	zero,0(s0)
    e882e4a0:	8aa2                	mv	s5,s0
    e882e4a2:	bd6d                	j	e882e35c <mDNS_Execute+0x7c4>
            m->NewLocalOnlyRecords = mDNSfalse;
    e882e4a4:	6409                	lui	s0,0x2
    e882e4a6:	a9040413          	addi	s0,s0,-1392 # 1a90 <memcmp-0xe87fe570>
    e882e4aa:	a2878793          	addi	a5,a5,-1496
    e882e4ae:	1c070c23          	sb	zero,472(a4)
            for (slot = 0; slot < AUTH_HASH_SLOTS; slot++)
    e882e4b2:	946a                	add	s0,s0,s10
    e882e4b4:	00fd0933          	add	s2,s10,a5
                        if (LocalRecordReady(rr))
    e882e4b8:	4a89                	li	s5,2
                        else LogMsg("mDNS_Execute: LocalOnlyRecord %s not ready", ARDisplayString(m, rr));
    e882e4ba:	03bd0b13          	addi	s6,s10,59
    e882e4be:	0007cb97          	auipc	s7,0x7c
    e882e4c2:	94ab8b93          	addi	s7,s7,-1718 # e88a9e08 <mDNS_DomainTypeNames+0x458>
                    if (i >= 100) LogMsg("mDNS_Execute: ag->NewLocalOnlyRecords exceeded loop limit");
    e882e4c6:	0007ca17          	auipc	s4,0x7c
    e882e4ca:	acaa0a13          	addi	s4,s4,-1334 # e88a9f90 <mDNS_DomainTypeNames+0x5e0>
                for (ag = m->rrauth.rrauth_hash[slot]; ag; ag = ag->next)
    e882e4ce:	6004                	ld	s1,0(s0)
    e882e4d0:	e4a1                	bnez	s1,e882e518 <mDNS_Execute+0x980>
            for (slot = 0; slot < AUTH_HASH_SLOTS; slot++)
    e882e4d2:	0421                	addi	s0,s0,8
    e882e4d4:	fe891de3          	bne	s2,s0,e882e4ce <mDNS_Execute+0x936>
    e882e4d8:	bd5d                	j	e882e38e <mDNS_Execute+0x7f6>
                        ag->NewLocalOnlyRecords = ag->NewLocalOnlyRecords->next;
    e882e4da:	611c                	ld	a5,0(a0)
    e882e4dc:	f49c                	sd	a5,40(s1)
                        if (LocalRecordReady(rr))
    e882e4de:	00854783          	lbu	a5,8(a0)
    e882e4e2:	01578f63          	beq	a5,s5,e882e500 <mDNS_Execute+0x968>
                            AnswerAllLocalQuestionsWithLocalAuthRecord(m, rr, mDNStrue);
    e882e4e6:	85aa                	mv	a1,a0
    e882e4e8:	4605                	li	a2,1
    e882e4ea:	856a                	mv	a0,s10
    e882e4ec:	ccff70ef          	jal	ra,e88261ba <AnswerAllLocalQuestionsWithLocalAuthRecord>
                    for (i=0; i<100 && ag->NewLocalOnlyRecords; i++)
    e882e4f0:	39fd                	addiw	s3,s3,-1
    e882e4f2:	02099563          	bnez	s3,e882e51c <mDNS_Execute+0x984>
                    if (i >= 100) LogMsg("mDNS_Execute: ag->NewLocalOnlyRecords exceeded loop limit");
    e882e4f6:	85d2                	mv	a1,s4
    e882e4f8:	4501                	li	a0,0
    e882e4fa:	7b3000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882e4fe:	a00d                	j	e882e520 <mDNS_Execute+0x988>
                        else LogMsg("mDNS_Execute: LocalOnlyRecord %s not ready", ARDisplayString(m, rr));
    e882e500:	790c                	ld	a1,48(a0)
    e882e502:	865a                	mv	a2,s6
    e882e504:	0521                	addi	a0,a0,8
    e882e506:	0591                	addi	a1,a1,4
    e882e508:	d0ce80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882e50c:	862a                	mv	a2,a0
    e882e50e:	85de                	mv	a1,s7
    e882e510:	4501                	li	a0,0
    e882e512:	79b000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882e516:	bfe9                	j	e882e4f0 <mDNS_Execute+0x958>
    e882e518:	06400993          	li	s3,100
                    for (i=0; i<100 && ag->NewLocalOnlyRecords; i++)
    e882e51c:	7488                	ld	a0,40(s1)
    e882e51e:	fd55                	bnez	a0,e882e4da <mDNS_Execute+0x942>
                for (ag = m->rrauth.rrauth_hash[slot]; ag; ag = ag->next)
    e882e520:	6084                	ld	s1,0(s1)
    e882e522:	b77d                	j	e882e4d0 <mDNS_Execute+0x938>
        if (m->mDNSPlatformStatus != mStatus_NoError || (m->SleepState == SleepState_Sleeping))
    e882e524:	285d4703          	lbu	a4,645(s10)
    e882e528:	4789                	li	a5,2
    e882e52a:	e6f706e3          	beq	a4,a5,e882e396 <mDNS_Execute+0x7fe>
        if (m->mDNSPlatformStatus == mStatus_NoError && (m->SuppressSending == 0 || m->timenow - m->SuppressSending >= 0))
    e882e52e:	250d2703          	lw	a4,592(s10)
    e882e532:	240d2783          	lw	a5,576(s10)
    e882e536:	c709                	beqz	a4,e882e540 <mDNS_Execute+0x9a8>
    e882e538:	40e7873b          	subw	a4,a5,a4
    e882e53c:	e60744e3          	bltz	a4,e882e3a4 <mDNS_Execute+0x80c>
            if (m->timenow - m->NextScheduledQuery >= 0 || m->timenow - m->NextScheduledProbe >= 0) SendQueries(m);
    e882e540:	258d2703          	lw	a4,600(s10)
            m->SuppressSending = 0;
    e882e544:	240d2823          	sw	zero,592(s10)
            if (m->timenow - m->NextScheduledQuery >= 0 || m->timenow - m->NextScheduledProbe >= 0) SendQueries(m);
    e882e548:	40e7873b          	subw	a4,a5,a4
    e882e54c:	00075763          	bgez	a4,e882e55a <mDNS_Execute+0x9c2>
    e882e550:	25cd2703          	lw	a4,604(s10)
    e882e554:	9f99                	subw	a5,a5,a4
    e882e556:	0007c563          	bltz	a5,e882e560 <mDNS_Execute+0x9c8>
    e882e55a:	856a                	mv	a0,s10
    e882e55c:	891f00ef          	jal	ra,e881edec <SendQueries>
            if (m->timenow - m->NextScheduledQuery >= 0)
    e882e560:	240d2603          	lw	a2,576(s10)
    e882e564:	258d2683          	lw	a3,600(s10)
    e882e568:	40d6073b          	subw	a4,a2,a3
    e882e56c:	06075e63          	bgez	a4,e882e5e8 <mDNS_Execute+0xa50>
            if (m->timenow - m->NextScheduledProbe >= 0)
    e882e570:	240d2603          	lw	a2,576(s10)
    e882e574:	25cd2683          	lw	a3,604(s10)
    e882e578:	40d6073b          	subw	a4,a2,a3
    e882e57c:	02074363          	bltz	a4,e882e5a2 <mDNS_Execute+0xa0a>
                LogMsg("mDNS_Execute: SendQueries didn't send all its probes (%d - %d = %d) will try again in one second",
    e882e580:	0007c597          	auipc	a1,0x7c
    e882e584:	95058593          	addi	a1,a1,-1712 # e88a9ed0 <mDNS_DomainTypeNames+0x520>
    e882e588:	4501                	li	a0,0
    e882e58a:	723000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                m->NextScheduledProbe = m->timenow + mDNSPlatformOneSecond;
    e882e58e:	000a6717          	auipc	a4,0xa6
    e882e592:	4f270713          	addi	a4,a4,1266 # e88d4a80 <mDNSPlatformOneSecond>
    e882e596:	240d2783          	lw	a5,576(s10)
    e882e59a:	4318                	lw	a4,0(a4)
    e882e59c:	9fb9                	addw	a5,a5,a4
    e882e59e:	24fd2e23          	sw	a5,604(s10)
            if (m->timenow - m->NextScheduledResponse >= 0) SendResponses(m);
    e882e5a2:	240d2783          	lw	a5,576(s10)
    e882e5a6:	260d2703          	lw	a4,608(s10)
    e882e5aa:	9f99                	subw	a5,a5,a4
    e882e5ac:	de07cce3          	bltz	a5,e882e3a4 <mDNS_Execute+0x80c>
    e882e5b0:	856a                	mv	a0,s10
    e882e5b2:	8e5fd0ef          	jal	ra,e882be96 <SendResponses>
            if (m->timenow - m->NextScheduledResponse >= 0)
    e882e5b6:	240d2783          	lw	a5,576(s10)
    e882e5ba:	260d2703          	lw	a4,608(s10)
    e882e5be:	9f99                	subw	a5,a5,a4
    e882e5c0:	de07c2e3          	bltz	a5,e882e3a4 <mDNS_Execute+0x80c>
                LogMsg("mDNS_Execute: SendResponses didn't send all its responses; will try again in one second");
    e882e5c4:	0007c597          	auipc	a1,0x7c
    e882e5c8:	97458593          	addi	a1,a1,-1676 # e88a9f38 <mDNS_DomainTypeNames+0x588>
    e882e5cc:	4501                	li	a0,0
    e882e5ce:	6df000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                m->NextScheduledResponse = m->timenow + mDNSPlatformOneSecond;
    e882e5d2:	000a6717          	auipc	a4,0xa6
    e882e5d6:	4ae70713          	addi	a4,a4,1198 # e88d4a80 <mDNSPlatformOneSecond>
    e882e5da:	240d2783          	lw	a5,576(s10)
    e882e5de:	4318                	lw	a4,0(a4)
    e882e5e0:	9fb9                	addw	a5,a5,a4
    e882e5e2:	26fd2023          	sw	a5,608(s10)
    e882e5e6:	bb7d                	j	e882e3a4 <mDNS_Execute+0x80c>
                LogMsg("mDNS_Execute: SendQueries didn't send all its queries (%d - %d = %d) will try again in one second",
    e882e5e8:	0007c597          	auipc	a1,0x7c
    e882e5ec:	85058593          	addi	a1,a1,-1968 # e88a9e38 <mDNS_DomainTypeNames+0x488>
    e882e5f0:	4501                	li	a0,0
    e882e5f2:	6bb000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e882e5f6:	2b8d3403          	ld	s0,696(s10)
                m->NextScheduledQuery = m->timenow + mDNSPlatformOneSecond;
    e882e5fa:	000a6717          	auipc	a4,0xa6
    e882e5fe:	48670713          	addi	a4,a4,1158 # e88d4a80 <mDNSPlatformOneSecond>
    e882e602:	240d2783          	lw	a5,576(s10)
    e882e606:	4318                	lw	a4,0(a4)
                        LogMsg("mDNS_Execute: SendQueries didn't send %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e882e608:	0007c497          	auipc	s1,0x7c
    e882e60c:	89848493          	addi	s1,s1,-1896 # e88a9ea0 <mDNS_DomainTypeNames+0x4f0>
                m->NextScheduledQuery = m->timenow + mDNSPlatformOneSecond;
    e882e610:	9fb9                	addw	a5,a5,a4
    e882e612:	24fd2c23          	sw	a5,600(s10)
                for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e882e616:	dc29                	beqz	s0,e882e570 <mDNS_Execute+0x9d8>
    e882e618:	2c0d3783          	ld	a5,704(s10)
    e882e61c:	f4878ae3          	beq	a5,s0,e882e570 <mDNS_Execute+0x9d8>
                    if (ActiveQuestion(q) && m->timenow - NextQSendTime(q) >= 0)
    e882e620:	4858                	lw	a4,20(s0)
    e882e622:	02e05663          	blez	a4,e882e64e <mDNS_Execute+0xab6>
    e882e626:	683c                	ld	a5,80(s0)
    e882e628:	e39d                	bnez	a5,e882e64e <mDNS_Execute+0xab6>
    e882e62a:	481c                	lw	a5,16(s0)
    e882e62c:	9f3d                	addw	a4,a4,a5
    e882e62e:	240d2783          	lw	a5,576(s10)
    e882e632:	9f99                	subw	a5,a5,a4
    e882e634:	0007cd63          	bltz	a5,e882e64e <mDNS_Execute+0xab6>
                        LogMsg("mDNS_Execute: SendQueries didn't send %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e882e638:	31445503          	lhu	a0,788(s0)
    e882e63c:	e24e70ef          	jal	ra,e8815c60 <DNSTypeName>
    e882e640:	86aa                	mv	a3,a0
    e882e642:	21440613          	addi	a2,s0,532
    e882e646:	85a6                	mv	a1,s1
    e882e648:	4501                	li	a0,0
    e882e64a:	663000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                for (q = m->Questions; q && q != m->NewQuestions; q=q->next)
    e882e64e:	6000                	ld	s0,0(s0)
    e882e650:	b7d9                	j	e882e616 <mDNS_Execute+0xa7e>
                else { LogMsg("mDNS_Execute: ERROR!! Cannot find record %s in ResourceRecords list", ARDisplayString(m, rr)); break; }
    e882e652:	780c                	ld	a1,48(s0)
    e882e654:	03bd0613          	addi	a2,s10,59
    e882e658:	00840513          	addi	a0,s0,8
    e882e65c:	0591                	addi	a1,a1,4
    e882e65e:	bb6e80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882e662:	862a                	mv	a2,a0
    e882e664:	0007c597          	auipc	a1,0x7c
    e882e668:	96c58593          	addi	a1,a1,-1684 # e88a9fd0 <mDNS_DomainTypeNames+0x620>
    e882e66c:	4501                	li	a0,0
    e882e66e:	63f000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882e672:	b9c5                	j	e882e362 <mDNS_Execute+0x7ca>

00000000e882e674 <NetWakeResolve>:
{
    e882e674:	7139                	addi	sp,sp,-64
    e882e676:	f891540b          	sdd	s0,s1,(sp),0,4
    e882e67a:	fb31590b          	sdd	s2,s3,(sp),1,4
    e882e67e:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e882e682:	f85a                	sd	s6,48(sp)
    e882e684:	fc06                	sd	ra,56(sp)
    NetworkInterfaceInfo *intf = (NetworkInterfaceInfo *)question->QuestionContext;
    e882e686:	3505ba03          	ld	s4,848(a1)
    int sps = (int)(question - intf->NetWakeResolve);
    e882e68a:	00078797          	auipc	a5,0x78
    e882e68e:	86e78793          	addi	a5,a5,-1938 # e88a5ef8 <end.8789+0x2850>
    e882e692:	639c                	ld	a5,0(a5)
    e882e694:	368a0413          	addi	s0,s4,872
    e882e698:	40858433          	sub	s0,a1,s0
    e882e69c:	840d                	srai	s0,s0,0x3
    e882e69e:	02f4043b          	mulw	s0,s0,a5
    LogSPS("NetWakeResolve: SPS: %d Add: %d %s", sps, AddRecord, RRDisplayString(m, answer));
    e882e6a2:	000a6797          	auipc	a5,0xa6
    e882e6a6:	3d278793          	addi	a5,a5,978 # e88d4a74 <mDNS_LoggingEnabled>
    e882e6aa:	4398                	lw	a4,0(a5)
{
    e882e6ac:	89aa                	mv	s3,a0
    e882e6ae:	84ae                	mv	s1,a1
    e882e6b0:	8932                	mv	s2,a2
    e882e6b2:	8ab6                	mv	s5,a3
    e882e6b4:	8b3e                	mv	s6,a5
    LogSPS("NetWakeResolve: SPS: %d Add: %d %s", sps, AddRecord, RRDisplayString(m, answer));
    e882e6b6:	c315                	beqz	a4,e882e6da <NetWakeResolve+0x66>
    e882e6b8:	760c                	ld	a1,40(a2)
    e882e6ba:	03b50613          	addi	a2,a0,59
    e882e6be:	854a                	mv	a0,s2
    e882e6c0:	0591                	addi	a1,a1,4
    e882e6c2:	b52e80ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882e6c6:	872a                	mv	a4,a0
    e882e6c8:	86d6                	mv	a3,s5
    e882e6ca:	8622                	mv	a2,s0
    e882e6cc:	00078597          	auipc	a1,0x78
    e882e6d0:	83458593          	addi	a1,a1,-1996 # e88a5f00 <end.8789+0x2858>
    e882e6d4:	4509                	li	a0,2
    e882e6d6:	5d7000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!AddRecord) return;                                             // Don't care about REMOVE events
    e882e6da:	180a8f63          	beqz	s5,e882e878 <NetWakeResolve+0x204>
    if (answer->rrtype != question->qtype) return;                      // Don't care about CNAMEs
    e882e6de:	3144d783          	lhu	a5,788(s1)
    e882e6e2:	00295703          	lhu	a4,2(s2)
    e882e6e6:	18e79963          	bne	a5,a4,e882e878 <NetWakeResolve+0x204>
    if (answer->rrtype == kDNSType_SRV)
    e882e6ea:	02100713          	li	a4,33
    e882e6ee:	06e79763          	bne	a5,a4,e882e75c <NetWakeResolve+0xe8>
        mDNS_StopQuery(m, question);
    e882e6f2:	85a6                	mv	a1,s1
    e882e6f4:	854e                	mv	a0,s3
    e882e6f6:	e6ff50ef          	jal	ra,e8824564 <mDNS_StopQuery>
        intf->SPSPort[sps] = answer->rdata->u.srv.port;
    e882e6fa:	6d040413          	addi	s0,s0,1744
    e882e6fe:	02893783          	ld	a5,40(s2)
    e882e702:	028a1a0b          	addsl	s4,s4,s0,1
    e882e706:	0087d783          	lhu	a5,8(a5)
    e882e70a:	00fa1623          	sh	a5,12(s4)
        AssignDomainName(&question->qname, &answer->rdata->u.srv.target);
    e882e70e:	02893503          	ld	a0,40(s2)
    e882e712:	10a50593          	addi	a1,a0,266
    e882e716:	0529                	addi	a0,a0,10
    e882e718:	a35e40ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e882e71c:	0005061b          	sext.w	a2,a0
    e882e720:	10000793          	li	a5,256
    e882e724:	02c7e963          	bltu	a5,a2,e882e756 <NetWakeResolve+0xe2>
    e882e728:	02893583          	ld	a1,40(s2)
    e882e72c:	21448513          	addi	a0,s1,532
    e882e730:	05a9                	addi	a1,a1,10
    e882e732:	36e010ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        question->qtype = kDNSType_A;
    e882e736:	4785                	li	a5,1
        question->qtype = kDNSType_AAAA;
    e882e738:	30f49a23          	sh	a5,788(s1)
        mDNS_StartQuery(m, question);
    e882e73c:	85a6                	mv	a1,s1
}
    e882e73e:	f891440b          	ldd	s0,s1,(sp),0,4
    e882e742:	70e2                	ld	ra,56(sp)
    e882e744:	7b42                	ld	s6,48(sp)
    e882e746:	fd514a0b          	ldd	s4,s5,(sp),2,4
        mDNS_StartQuery(m, question);
    e882e74a:	854e                	mv	a0,s3
}
    e882e74c:	fb31490b          	ldd	s2,s3,(sp),1,4
    e882e750:	6121                	addi	sp,sp,64
        mDNS_StartQuery(m, question);
    e882e752:	cd4fc06f          	j	e882ac26 <mDNS_StartQuery>
        AssignDomainName(&question->qname, &answer->rdata->u.srv.target);
    e882e756:	20048a23          	sb	zero,532(s1)
    e882e75a:	bff1                	j	e882e736 <NetWakeResolve+0xc2>
    else if (answer->rrtype == kDNSType_A && answer->rdlength == sizeof(mDNSv4Addr))
    e882e75c:	4705                	li	a4,1
    e882e75e:	0ae79a63          	bne	a5,a4,e882e812 <NetWakeResolve+0x19e>
    e882e762:	00c95783          	lhu	a5,12(s2)
    e882e766:	4711                	li	a4,4
    e882e768:	00078a9b          	sext.w	s5,a5
    e882e76c:	06ea9f63          	bne	s5,a4,e882e7ea <NetWakeResolve+0x176>
        mDNS_StopQuery(m, question);
    e882e770:	85a6                	mv	a1,s1
    e882e772:	854e                	mv	a0,s3
    e882e774:	df1f50ef          	jal	ra,e8824564 <mDNS_StopQuery>
        question->ThisQInterval = -1;
    e882e778:	57fd                	li	a5,-1
    e882e77a:	c8dc                	sw	a5,20(s1)
        intf->SPSAddr[sps].type = mDNSAddrType_IPv4;
    e882e77c:	8752                	mv	a4,s4
    e882e77e:	47d1                	li	a5,20
    e882e780:	20f4170b          	mula	a4,s0,a5
    e882e784:	6485                	lui	s1,0x1
    e882e786:	00e487b3          	add	a5,s1,a4
    e882e78a:	d757a823          	sw	s5,-656(a5)
        intf->SPSAddr[sps].ip.v4 = answer->rdata->u.ipv4;
    e882e78e:	02893703          	ld	a4,40(s2)
    e882e792:	4358                	lw	a4,4(a4)
    e882e794:	d6e7aa23          	sw	a4,-652(a5)
        mDNS_Lock(m);
    e882e798:	00079597          	auipc	a1,0x79
    e882e79c:	56058593          	addi	a1,a1,1376 # e88a7cf8 <__func__.11003>
    e882e7a0:	854e                	mv	a0,s3
    e882e7a2:	a60e70ef          	jal	ra,e8815a02 <mDNS_Lock_>
        if (sps == intf->NextSPSAttempt/3) SendSPSRegistration(m, intf, zeroID);    // If we're ready for this result, use it now
    e882e7a6:	94d2                	add	s1,s1,s4
    e882e7a8:	db44a783          	lw	a5,-588(s1) # db4 <memcmp-0xe87ff24c>
    e882e7ac:	470d                	li	a4,3
    e882e7ae:	02e7c7bb          	divw	a5,a5,a4
    e882e7b2:	00879c63          	bne	a5,s0,e882e7ca <NetWakeResolve+0x156>
    e882e7b6:	00075797          	auipc	a5,0x75
    e882e7ba:	dea78793          	addi	a5,a5,-534 # e88a35a0 <zeroID>
    e882e7be:	0007d603          	lhu	a2,0(a5)
    e882e7c2:	85d2                	mv	a1,s4
    e882e7c4:	854e                	mv	a0,s3
    e882e7c6:	e2efd0ef          	jal	ra,e882bdf4 <SendSPSRegistration>
}
    e882e7ca:	f891440b          	ldd	s0,s1,(sp),0,4
    e882e7ce:	70e2                	ld	ra,56(sp)
    e882e7d0:	7b42                	ld	s6,48(sp)
    e882e7d2:	fd514a0b          	ldd	s4,s5,(sp),2,4
        mDNS_Unlock(m);
    e882e7d6:	854e                	mv	a0,s3
}
    e882e7d8:	fb31490b          	ldd	s2,s3,(sp),1,4
        mDNS_Unlock(m);
    e882e7dc:	00079597          	auipc	a1,0x79
    e882e7e0:	51c58593          	addi	a1,a1,1308 # e88a7cf8 <__func__.11003>
}
    e882e7e4:	6121                	addi	sp,sp,64
        mDNS_Unlock(m);
    e882e7e6:	ae6e706f          	j	e8815acc <mDNS_Unlock_>
    else if (answer->rrtype == kDNSType_A && answer->rdlength == 0)
    e882e7ea:	e7d9                	bnez	a5,e882e878 <NetWakeResolve+0x204>
        mDNS_StopQuery(m, question);
    e882e7ec:	85a6                	mv	a1,s1
    e882e7ee:	854e                	mv	a0,s3
    e882e7f0:	d75f50ef          	jal	ra,e8824564 <mDNS_StopQuery>
        LogSPS("NetWakeResolve: SPS %d %##s has no IPv4 address, will try IPv6 instead", sps, question->qname.c);
    e882e7f4:	000b2783          	lw	a5,0(s6)
    e882e7f8:	cb99                	beqz	a5,e882e80e <NetWakeResolve+0x19a>
    e882e7fa:	21448693          	addi	a3,s1,532
    e882e7fe:	8622                	mv	a2,s0
    e882e800:	00077597          	auipc	a1,0x77
    e882e804:	72858593          	addi	a1,a1,1832 # e88a5f28 <end.8789+0x2880>
    e882e808:	4509                	li	a0,2
    e882e80a:	4a3000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        question->qtype = kDNSType_AAAA;
    e882e80e:	47f1                	li	a5,28
    e882e810:	b725                	j	e882e738 <NetWakeResolve+0xc4>
    else if (answer->rrtype == kDNSType_AAAA && answer->rdlength == sizeof(mDNSv6Addr) && mDNSv6AddressIsLinkLocal(&answer->rdata->u.ipv6))
    e882e812:	4771                	li	a4,28
    e882e814:	06e79263          	bne	a5,a4,e882e878 <NetWakeResolve+0x204>
    e882e818:	00c95703          	lhu	a4,12(s2)
    e882e81c:	47c1                	li	a5,16
    e882e81e:	04f71d63          	bne	a4,a5,e882e878 <NetWakeResolve+0x204>
    e882e822:	02893783          	ld	a5,40(s2)
    e882e826:	0fe00713          	li	a4,254
    e882e82a:	0047c683          	lbu	a3,4(a5)
    e882e82e:	04e69563          	bne	a3,a4,e882e878 <NetWakeResolve+0x204>
    e882e832:	0057c783          	lbu	a5,5(a5)
    e882e836:	08000713          	li	a4,128
    e882e83a:	0c07f793          	andi	a5,a5,192
    e882e83e:	02e79d63          	bne	a5,a4,e882e878 <NetWakeResolve+0x204>
        mDNS_StopQuery(m, question);
    e882e842:	85a6                	mv	a1,s1
    e882e844:	854e                	mv	a0,s3
    e882e846:	d1ff50ef          	jal	ra,e8824564 <mDNS_StopQuery>
        question->ThisQInterval = -1;
    e882e84a:	57fd                	li	a5,-1
    e882e84c:	c8dc                	sw	a5,20(s1)
        intf->SPSAddr[sps].type = mDNSAddrType_IPv6;
    e882e84e:	8752                	mv	a4,s4
    e882e850:	47d1                	li	a5,20
    e882e852:	20f4170b          	mula	a4,s0,a5
    e882e856:	6485                	lui	s1,0x1
    e882e858:	00e487b3          	add	a5,s1,a4
    e882e85c:	4719                	li	a4,6
    e882e85e:	d6e7a823          	sw	a4,-656(a5)
        intf->SPSAddr[sps].ip.v6 = answer->rdata->u.ipv6;
    e882e862:	02893703          	ld	a4,40(s2)
    e882e866:	00473683          	ld	a3,4(a4)
    e882e86a:	d6d7ba23          	sd	a3,-652(a5)
    e882e86e:	00c73703          	ld	a4,12(a4)
    e882e872:	d6e7be23          	sd	a4,-644(a5)
        mDNS_Lock(m);
    e882e876:	b70d                	j	e882e798 <NetWakeResolve+0x124>
}
    e882e878:	70e2                	ld	ra,56(sp)
    e882e87a:	f891440b          	ldd	s0,s1,(sp),0,4
    e882e87e:	7b42                	ld	s6,48(sp)
    e882e880:	fb31490b          	ldd	s2,s3,(sp),1,4
    e882e884:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e882e888:	6121                	addi	sp,sp,64
    e882e88a:	8082                	ret

00000000e882e88c <DNSServerChangeForQuestion>:
{
    e882e88c:	1101                	addi	sp,sp,-32
    e882e88e:	e422                	sd	s0,8(sp)
    e882e890:	e826                	sd	s1,16(sp)
    e882e892:	ec06                	sd	ra,24(sp)
    if (q->DuplicateOf)
    e882e894:	69bc                	ld	a5,80(a1)
{
    e882e896:	842e                	mv	s0,a1
    e882e898:	84b2                	mv	s1,a2
    if (q->DuplicateOf)
    e882e89a:	cb91                	beqz	a5,e882e8ae <DNSServerChangeForQuestion+0x22>
        LogMsg("DNSServerChangeForQuestion: ERROR: Called for duplicate question %##s", q->qname.c);
    e882e89c:	21458613          	addi	a2,a1,532
    e882e8a0:	4501                	li	a0,0
    e882e8a2:	00077597          	auipc	a1,0x77
    e882e8a6:	ba658593          	addi	a1,a1,-1114 # e88a5448 <end.8789+0x1da0>
    e882e8aa:	403000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (qptr = q->next ; qptr; qptr = qptr->next)
    e882e8ae:	601c                	ld	a5,0(s0)
    q->qDNSServer = new;
    e882e8b0:	16943423          	sd	s1,360(s0)
    for (qptr = q->next ; qptr; qptr = qptr->next)
    e882e8b4:	e791                	bnez	a5,e882e8c0 <DNSServerChangeForQuestion+0x34>
}
    e882e8b6:	60e2                	ld	ra,24(sp)
    e882e8b8:	6422                	ld	s0,8(sp)
    e882e8ba:	64c2                	ld	s1,16(sp)
    e882e8bc:	6105                	addi	sp,sp,32
    e882e8be:	8082                	ret
        if (qptr->DuplicateOf == q) { qptr->validDNSServers = q->validDNSServers; qptr->qDNSServer = new; }
    e882e8c0:	6bb8                	ld	a4,80(a5)
    e882e8c2:	00871c63          	bne	a4,s0,e882e8da <DNSServerChangeForQuestion+0x4e>
    e882e8c6:	17043703          	ld	a4,368(s0)
    e882e8ca:	16e7b823          	sd	a4,368(a5)
    e882e8ce:	17843703          	ld	a4,376(s0)
    e882e8d2:	1697b423          	sd	s1,360(a5)
    e882e8d6:	16e7bc23          	sd	a4,376(a5)
    for (qptr = q->next ; qptr; qptr = qptr->next)
    e882e8da:	639c                	ld	a5,0(a5)
    e882e8dc:	bfe1                	j	e882e8b4 <DNSServerChangeForQuestion+0x28>

00000000e882e8de <uDNS_SetupDNSConfig>:

mDNSexport mStatus uDNS_SetupDNSConfig(mDNS *const m)
{
    e882e8de:	de010113          	addi	sp,sp,-544
    e882e8e2:	21213023          	sd	s2,512(sp)
    CacheGroup *cg;
    CacheRecord *cr;
    mDNSBool Restart = mDNSfalse;
    mDNSAddr v4, v6, r;
    domainname fqdn;
    DNSServer   *ptr, **p = &m->DNSServers;
    e882e8e6:	690d                	lui	s2,0x3
{
    e882e8e8:	ffce                	sd	s3,504(sp)
    const DNSServer *oldServers = m->DNSServers;
    e882e8ea:	012509b3          	add	s3,a0,s2
{
    e882e8ee:	20113c23          	sd	ra,536(sp)
    e882e8f2:	20813823          	sd	s0,528(sp)
    e882e8f6:	20913423          	sd	s1,520(sp)
    e882e8fa:	fbd2                	sd	s4,496(sp)
    e882e8fc:	f7d6                	sd	s5,488(sp)
    e882e8fe:	f3da                	sd	s6,480(sp)
    e882e900:	efde                	sd	s7,472(sp)
    e882e902:	ebe2                	sd	s8,464(sp)
    e882e904:	e7e6                	sd	s9,456(sp)
    e882e906:	e3ea                	sd	s10,448(sp)
    e882e908:	ff6e                	sd	s11,440(sp)
    const DNSServer *oldServers = m->DNSServers;
    e882e90a:	2009b783          	ld	a5,512(s3)
    DNSServer   *ptr, **p = &m->DNSServers;
    e882e90e:	20090493          	addi	s1,s2,512 # 3200 <memcmp-0xe87fce00>
    DNSQuestion *q;
    McastResolver *mr, **mres = &m->McastResolvers;
    e882e912:	20890913          	addi	s2,s2,520
    const DNSServer *oldServers = m->DNSServers;
    e882e916:	f83e                	sd	a5,48(sp)
{
    e882e918:	842a                	mv	s0,a0
    DNSServer   *ptr, **p = &m->DNSServers;
    e882e91a:	94aa                	add	s1,s1,a0
    McastResolver *mr, **mres = &m->McastResolvers;
    e882e91c:	992a                	add	s2,s2,a0

    debugf("uDNS_SetupDNSConfig: entry");

    // Let the platform layer get the current DNS information and setup the WAB queries if needed.
    uDNS_SetupWABQueries(m);
    e882e91e:	04c0a0ef          	jal	ra,e883896a <uDNS_SetupWABQueries>

    mDNS_Lock(m);
    e882e922:	00079597          	auipc	a1,0x79
    e882e926:	58658593          	addi	a1,a1,1414 # e88a7ea8 <__func__.13050>
    e882e92a:	8522                	mv	a0,s0
    e882e92c:	8d6e70ef          	jal	ra,e8815a02 <mDNS_Lock_>
        for (ptr = m->DNSServers; ptr; ptr = ptr->next)
    e882e930:	2009b783          	ld	a5,512(s3)
            NumUnicastDNSServers--;
    e882e934:	000b5697          	auipc	a3,0xb5
    e882e938:	22868693          	addi	a3,a3,552 # e88e3b5c <NumUnicastDNSServers>
        for (ptr = m->DNSServers; ptr; ptr = ptr->next)
    e882e93c:	ebd1                	bnez	a5,e882e9d0 <uDNS_SetupDNSConfig+0xf2>
        for (mr = m->McastResolvers; mr; mr = mr->next)
    e882e93e:	678d                	lui	a5,0x3
    e882e940:	97a2                	add	a5,a5,s0
    e882e942:	2087b783          	ld	a5,520(a5) # 3208 <memcmp-0xe87fcdf8>
    e882e946:	e3d5                	bnez	a5,e882e9ea <uDNS_SetupDNSConfig+0x10c>
    // Note: The last argument to mDNSPlatformSetDNSConfig is "mDNStrue" which means ack the
    // configuration. We already processed search domains in uDNS_SetupWABQueries above and
    // hence we are ready to ack the configuration as this is the last call to mDNSPlatformSetConfig
    // for the dns configuration change notification.
    SetConfigState(m, mDNStrue);
    if (!mDNSPlatformSetDNSConfig(mDNStrue, mDNSfalse, &fqdn, mDNSNULL, mDNSNULL, mDNStrue))
    e882e948:	4785                	li	a5,1
    e882e94a:	4701                	li	a4,0
    e882e94c:	4681                	li	a3,0
    e882e94e:	1910                	addi	a2,sp,176
    e882e950:	4581                	li	a1,0
    e882e952:	4505                	li	a0,1
    e882e954:	7c9000ef          	jal	ra,e882f91c <mDNSPlatformSetDNSConfig>
    e882e958:	e971                	bnez	a0,e882ea2c <uDNS_SetupDNSConfig+0x14e>
    {
        SetDynDNSHostNameIfChanged(m, &fqdn);
    e882e95a:	190c                	addi	a1,sp,176
    e882e95c:	8522                	mv	a0,s0
    e882e95e:	d79ed0ef          	jal	ra,e881c6d6 <SetDynDNSHostNameIfChanged>
        for (ptr = m->DNSServers; ptr; ptr = ptr->next)
    e882e962:	678d                	lui	a5,0x3
    e882e964:	97a2                	add	a5,a5,s0
    e882e966:	2007b783          	ld	a5,512(a5) # 3200 <memcmp-0xe87fce00>
            NumUnicastDNSServers++;
    e882e96a:	000b5697          	auipc	a3,0xb5
    e882e96e:	1f268693          	addi	a3,a3,498 # e88e3b5c <NumUnicastDNSServers>
        for (ptr = m->DNSServers; ptr; ptr = ptr->next)
    e882e972:	e3d1                	bnez	a5,e882e9f6 <uDNS_SetupDNSConfig+0x118>
        for (mr = m->McastResolvers; mr; mr = mr->next)
    e882e974:	678d                	lui	a5,0x3
    e882e976:	97a2                	add	a5,a5,s0
    e882e978:	2087b783          	ld	a5,520(a5) # 3208 <memcmp-0xe87fcdf8>
    e882e97c:	ebc9                	bnez	a5,e882ea0e <uDNS_SetupDNSConfig+0x130>
        SetConfigState(m, mDNSfalse);
        mDNS_Unlock(m);
    e882e97e:	00079597          	auipc	a1,0x79
    e882e982:	52a58593          	addi	a1,a1,1322 # e88a7ea8 <__func__.13050>
    e882e986:	8522                	mv	a0,s0
    e882e988:	944e70ef          	jal	ra,e8815acc <mDNS_Unlock_>
        LogInfo("uDNS_SetupDNSConfig: No configuration change");
    e882e98c:	000a6797          	auipc	a5,0xa6
    e882e990:	0e878793          	addi	a5,a5,232 # e88d4a74 <mDNS_LoggingEnabled>
    e882e994:	439c                	lw	a5,0(a5)
    e882e996:	cb81                	beqz	a5,e882e9a6 <uDNS_SetupDNSConfig+0xc8>
    e882e998:	0007d597          	auipc	a1,0x7d
    e882e99c:	ce858593          	addi	a1,a1,-792 # e88ab680 <mDNS_DomainTypeNames+0x1cd0>
    e882e9a0:	450d                	li	a0,3
    e882e9a2:	30b000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (m->FQDN.c[0]) mDNSPlatformDynDNSHostNameStatusChanged(&m->FQDN, 1); // Set status to 1 to indicate temporary failure
    }

    debugf("uDNS_SetupDNSConfig: number of unicast DNS servers %d", NumUnicastDNSServers);
    return mStatus_NoError;
}
    e882e9a6:	21813083          	ld	ra,536(sp)
    e882e9aa:	21013403          	ld	s0,528(sp)
    e882e9ae:	20813483          	ld	s1,520(sp)
    e882e9b2:	20013903          	ld	s2,512(sp)
    e882e9b6:	79fe                	ld	s3,504(sp)
    e882e9b8:	7a5e                	ld	s4,496(sp)
    e882e9ba:	7abe                	ld	s5,488(sp)
    e882e9bc:	7b1e                	ld	s6,480(sp)
    e882e9be:	6bfe                	ld	s7,472(sp)
    e882e9c0:	6c5e                	ld	s8,464(sp)
    e882e9c2:	6cbe                	ld	s9,456(sp)
    e882e9c4:	6d1e                	ld	s10,448(sp)
    e882e9c6:	7dfa                	ld	s11,440(sp)
    e882e9c8:	4501                	li	a0,0
    e882e9ca:	22010113          	addi	sp,sp,544
    e882e9ce:	8082                	ret
            NumUnicastDNSServers--;
    e882e9d0:	0006c703          	lbu	a4,0(a3)
            ptr->penaltyTime = 0;
    e882e9d4:	1207a823          	sw	zero,304(a5)
            NumUnicastDNSServers--;
    e882e9d8:	377d                	addiw	a4,a4,-1
    e882e9da:	00e68023          	sb	a4,0(a3)
            ptr->flags |= DNSServer_FlagDelete;
    e882e9de:	57d8                	lw	a4,44(a5)
    e882e9e0:	00176713          	ori	a4,a4,1
    e882e9e4:	d7d8                	sw	a4,44(a5)
        for (ptr = m->DNSServers; ptr; ptr = ptr->next)
    e882e9e6:	639c                	ld	a5,0(a5)
    e882e9e8:	bf91                	j	e882e93c <uDNS_SetupDNSConfig+0x5e>
            mr->flags |= McastResolver_FlagDelete;
    e882e9ea:	4b98                	lw	a4,16(a5)
    e882e9ec:	00176713          	ori	a4,a4,1
    e882e9f0:	cb98                	sw	a4,16(a5)
        for (mr = m->McastResolvers; mr; mr = mr->next)
    e882e9f2:	639c                	ld	a5,0(a5)
    e882e9f4:	bf89                	j	e882e946 <uDNS_SetupDNSConfig+0x68>
            NumUnicastDNSServers++;
    e882e9f6:	0006c703          	lbu	a4,0(a3)
            ptr->penaltyTime = 0;
    e882e9fa:	1207a823          	sw	zero,304(a5)
            NumUnicastDNSServers++;
    e882e9fe:	2705                	addiw	a4,a4,1
    e882ea00:	00e68023          	sb	a4,0(a3)
            ptr->flags &= ~DNSServer_FlagDelete;
    e882ea04:	57d8                	lw	a4,44(a5)
    e882ea06:	9b79                	andi	a4,a4,-2
    e882ea08:	d7d8                	sw	a4,44(a5)
        for (ptr = m->DNSServers; ptr; ptr = ptr->next)
    e882ea0a:	639c                	ld	a5,0(a5)
    e882ea0c:	b79d                	j	e882e972 <uDNS_SetupDNSConfig+0x94>
            mr->flags &= ~McastResolver_FlagDelete;
    e882ea0e:	4b98                	lw	a4,16(a5)
    e882ea10:	9b79                	andi	a4,a4,-2
    e882ea12:	cb98                	sw	a4,16(a5)
        for (mr = m->McastResolvers; mr; mr = mr->next)
    e882ea14:	639c                	ld	a5,0(a5)
    e882ea16:	b79d                	j	e882e97c <uDNS_SetupDNSConfig+0x9e>
        if (((*mres)->flags & McastResolver_FlagDelete) != 0)
    e882ea18:	491c                	lw	a5,16(a0)
    e882ea1a:	0017f713          	andi	a4,a5,1
    e882ea1e:	1c070363          	beqz	a4,e882ebe4 <uDNS_SetupDNSConfig+0x306>
            *mres = (*mres)->next;
    e882ea22:	611c                	ld	a5,0(a0)
    e882ea24:	00f93023          	sd	a5,0(s2)
            mDNSPlatformMemFree(mr);
    e882ea28:	05b010ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    while (*mres)
    e882ea2c:	00093503          	ld	a0,0(s2)
    e882ea30:	f565                	bnez	a0,e882ea18 <uDNS_SetupDNSConfig+0x13a>
    for (q = m->Questions; q; q=q->next)
    e882ea32:	2b843903          	ld	s2,696(s0)
    mDNSBool Restart = mDNSfalse;
    e882ea36:	4a01                	li	s4,0
                LogInfo("uDNS_SetupDNSConfig: Updating DNS Server from %#a:%d (%##s) to %#a:%d (%##s) for question %##s (%s) (scope:%p)",
    e882ea38:	000a6b97          	auipc	s7,0xa6
    e882ea3c:	03cb8b93          	addi	s7,s7,60 # e88d4a74 <mDNS_LoggingEnabled>
                    q->Restart = 1;
    e882ea40:	4a85                	li	s5,1
                LogInfo("uDNS_SetupDNSConfig: Updating DNS Server from %#a:%d (%##s) to %#a:%d (%##s) for question %##s (%s) (scope:%p)",
    e882ea42:	00075997          	auipc	s3,0x75
    e882ea46:	b6698993          	addi	s3,s3,-1178 # e88a35a8 <zeroIPPort>
    e882ea4a:	0007dc17          	auipc	s8,0x7d
    e882ea4e:	c66c0c13          	addi	s8,s8,-922 # e88ab6b0 <mDNS_DomainTypeNames+0x1d00>
    e882ea52:	00093b17          	auipc	s6,0x93
    e882ea56:	81eb0b13          	addi	s6,s6,-2018 # e88c1270 <kHTTPServerClass+0x90>
    for (q = m->Questions; q; q=q->next)
    e882ea5a:	18091a63          	bnez	s2,e882ebee <uDNS_SetupDNSConfig+0x310>
    if (Restart)
    e882ea5e:	040a0c63          	beqz	s4,e882eab6 <uDNS_SetupDNSConfig+0x1d8>
    if (m->RestartQuestion)
    e882ea62:	2e043903          	ld	s2,736(s0)
    DNSQuestion *restart = mDNSNULL;
    e882ea66:	ed02                	sd	zero,152(sp)
    if (m->RestartQuestion)
    e882ea68:	02090063          	beqz	s2,e882ea88 <uDNS_SetupDNSConfig+0x1aa>
        LogMsg("RestartUnicastQuestions: ERROR!! m->RestartQuestion already set: %##s (%s)",
    e882ea6c:	31495503          	lhu	a0,788(s2)
    e882ea70:	9f0e70ef          	jal	ra,e8815c60 <DNSTypeName>
    e882ea74:	86aa                	mv	a3,a0
    e882ea76:	21490613          	addi	a2,s2,532
    e882ea7a:	0007d597          	auipc	a1,0x7d
    e882ea7e:	ca658593          	addi	a1,a1,-858 # e88ab720 <mDNS_DomainTypeNames+0x1d70>
    e882ea82:	4501                	li	a0,0
    e882ea84:	229000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->RestartQuestion = m->Questions;
    e882ea88:	2b843783          	ld	a5,696(s0)
                LogMsg("RestartUnicastQuestions: ERROR!! Restart set for multicast question %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e882ea8c:	0007d997          	auipc	s3,0x7d
    e882ea90:	ce498993          	addi	s3,s3,-796 # e88ab770 <mDNS_DomainTypeNames+0x1dc0>
    m->RestartQuestion = m->Questions;
    e882ea94:	2ef43023          	sd	a5,736(s0)
    while (m->RestartQuestion)
    e882ea98:	2e043903          	ld	s2,736(s0)
    e882ea9c:	2a091363          	bnez	s2,e882ed42 <uDNS_SetupDNSConfig+0x464>
        LogInfo("RestartUnicastQuestions: Start question %p %##s (%s)", q, q->qname.c, DNSTypeName(q->qtype));
    e882eaa0:	000a6997          	auipc	s3,0xa6
    e882eaa4:	fd498993          	addi	s3,s3,-44 # e88d4a74 <mDNS_LoggingEnabled>
    e882eaa8:	0007da17          	auipc	s4,0x7d
    e882eaac:	d18a0a13          	addi	s4,s4,-744 # e88ab7c0 <mDNS_DomainTypeNames+0x1e10>
    while (restart)
    e882eab0:	696a                	ld	s2,152(sp)
    e882eab2:	2c091663          	bnez	s2,e882ed7e <uDNS_SetupDNSConfig+0x4a0>
    e882eab6:	6905                	lui	s2,0x1
    e882eab8:	31040993          	addi	s3,s0,784
    e882eabc:	2a890913          	addi	s2,s2,680 # 12a8 <memcmp-0xe87fed58>
    e882eac0:	9922                	add	s2,s2,s0
    mDNSBool Restart = mDNSfalse;
    e882eac2:	8b4e                	mv	s6,s3
    e882eac4:	000a6a17          	auipc	s4,0xa6
    e882eac8:	fb0a0a13          	addi	s4,s4,-80 # e88d4a74 <mDNS_LoggingEnabled>
            LogInfo("uDNS_SetupDNSConfig: Using active question's DNS server %#a for cache record %s", &cr->resrec.rDNSServer->addr, CRDisplayString(m, cr));
    e882eacc:	03b40b93          	addi	s7,s0,59
    FORALL_CACHERECORDS(slot, cg, cr)
    e882ead0:	000b3a83          	ld	s5,0(s6)
    e882ead4:	2c0a9e63          	bnez	s5,e882edb0 <uDNS_SetupDNSConfig+0x4d2>
    e882ead8:	0b21                	addi	s6,s6,8
    e882eada:	ff691be3          	bne	s2,s6,e882ead0 <uDNS_SetupDNSConfig+0x1f2>
                        LogInfo("uDNS_SetupDNSConfig: Cache Record %##s has no Active question, Record's DNSServer Address %#a, Server to be deleted %#a",
    e882eade:	000a6b97          	auipc	s7,0xa6
    e882eae2:	f96b8b93          	addi	s7,s7,-106 # e88d4a74 <mDNS_LoggingEnabled>
                            qptr->validDNSServers = zeroOpaque128;
    e882eae6:	00075c17          	auipc	s8,0x75
    e882eaea:	acac0c13          	addi	s8,s8,-1334 # e88a35b0 <zeroOpaque128>
    while (*p)
    e882eaee:	0004bd03          	ld	s10,0(s1) # 1000 <memcmp-0xe87ff000>
    e882eaf2:	480d1263          	bnez	s10,e882ef76 <uDNS_SetupDNSConfig+0x698>
    if ((m->DNSServers != mDNSNULL) != (oldServers != mDNSNULL))
    e882eaf6:	678d                	lui	a5,0x3
    e882eaf8:	97a2                	add	a5,a5,s0
    e882eafa:	2007b783          	ld	a5,512(a5) # 3200 <memcmp-0xe87fce00>
    e882eafe:	7742                	ld	a4,48(sp)
    e882eb00:	00f037b3          	snez	a5,a5
    e882eb04:	00e03733          	snez	a4,a4
    e882eb08:	04e78763          	beq	a5,a4,e882eb56 <uDNS_SetupDNSConfig+0x278>
        int count = 0;
    e882eb0c:	4681                	li	a3,0
        FORALL_CACHERECORDS(slot, cg, cr)
    e882eb0e:	0009ba03          	ld	s4,0(s3)
    e882eb12:	5c0a1863          	bnez	s4,e882f0e2 <uDNS_SetupDNSConfig+0x804>
    e882eb16:	09a1                	addi	s3,s3,8
    e882eb18:	ff391be3          	bne	s2,s3,e882eb0e <uDNS_SetupDNSConfig+0x230>
        LogInfo("uDNS_SetupDNSConfig: %s available; purged %d unicast DNS records from cache",
    e882eb1c:	000a6797          	auipc	a5,0xa6
    e882eb20:	f5878793          	addi	a5,a5,-168 # e88d4a74 <mDNS_LoggingEnabled>
    e882eb24:	439c                	lw	a5,0(a5)
    e882eb26:	c78d                	beqz	a5,e882eb50 <uDNS_SetupDNSConfig+0x272>
    e882eb28:	678d                	lui	a5,0x3
    e882eb2a:	97a2                	add	a5,a5,s0
    e882eb2c:	2007b783          	ld	a5,512(a5) # 3200 <memcmp-0xe87fce00>
    e882eb30:	0007d617          	auipc	a2,0x7d
    e882eb34:	b2860613          	addi	a2,a2,-1240 # e88ab658 <mDNS_DomainTypeNames+0x1ca8>
    e882eb38:	e789                	bnez	a5,e882eb42 <uDNS_SetupDNSConfig+0x264>
    e882eb3a:	0007d617          	auipc	a2,0x7d
    e882eb3e:	b3660613          	addi	a2,a2,-1226 # e88ab670 <mDNS_DomainTypeNames+0x1cc0>
    e882eb42:	0007d597          	auipc	a1,0x7d
    e882eb46:	05658593          	addi	a1,a1,86 # e88abb98 <mDNS_DomainTypeNames+0x21e8>
    e882eb4a:	450d                	li	a0,3
    e882eb4c:	161000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        RestartRecordGetZoneData(m);
    e882eb50:	8522                	mv	a0,s0
    e882eb52:	967f50ef          	jal	ra,e88244b8 <RestartRecordGetZoneData>
    SetDynDNSHostNameIfChanged(m, &fqdn);
    e882eb56:	190c                	addi	a1,sp,176
    e882eb58:	8522                	mv	a0,s0
    e882eb5a:	b7ded0ef          	jal	ra,e881c6d6 <SetDynDNSHostNameIfChanged>
    v4 = v6 = r = zeroAddr;
    e882eb5e:	09810d13          	addi	s10,sp,152
    mDNS_Unlock(m);
    e882eb62:	00079597          	auipc	a1,0x79
    e882eb66:	34658593          	addi	a1,a1,838 # e88a7ea8 <__func__.13050>
    e882eb6a:	8522                	mv	a0,s0
    e882eb6c:	f61e60ef          	jal	ra,e8815acc <mDNS_Unlock_>
    v4 = v6 = r = zeroAddr;
    e882eb70:	00075797          	auipc	a5,0x75
    e882eb74:	a1078793          	addi	a5,a5,-1520 # e88a3580 <zeroAddr>
    e882eb78:	6394                	ld	a3,0(a5)
    e882eb7a:	6798                	ld	a4,8(a5)
    e882eb7c:	4b9c                	lw	a5,16(a5)
    e882eb7e:	ed36                	sd	a3,152(sp)
    e882eb80:	f4b6                	sd	a3,104(sp)
    e882eb82:	00fd2823          	sw	a5,16(s10)
    e882eb86:	c93e                	sw	a5,144(sp)
    e882eb88:	dcbe                	sw	a5,120(sp)
    v4.type = r.type = mDNSAddrType_IPv4;
    e882eb8a:	4791                	li	a5,4
    if (mDNSPlatformGetPrimaryInterface(&v4, &v6, &r) == mStatus_NoError && !mDNSv4AddressIsLinkLocal(&v4.ip.v4))
    e882eb8c:	866a                	mv	a2,s10
    e882eb8e:	010c                	addi	a1,sp,128
    e882eb90:	10a8                	addi	a0,sp,104
    v4 = v6 = r = zeroAddr;
    e882eb92:	00ed3423          	sd	a4,8(s10)
    e882eb96:	e136                	sd	a3,128(sp)
    e882eb98:	e53a                	sd	a4,136(sp)
    e882eb9a:	f8ba                	sd	a4,112(sp)
    v4.type = r.type = mDNSAddrType_IPv4;
    e882eb9c:	cd3e                	sw	a5,152(sp)
    e882eb9e:	d4be                	sw	a5,104(sp)
    if (mDNSPlatformGetPrimaryInterface(&v4, &v6, &r) == mStatus_NoError && !mDNSv4AddressIsLinkLocal(&v4.ip.v4))
    e882eba0:	581000ef          	jal	ra,e882f920 <mDNSPlatformGetPrimaryInterface>
    e882eba4:	56051063          	bnez	a0,e882f104 <uDNS_SetupDNSConfig+0x826>
    e882eba8:	5736                	lw	a4,108(sp)
    e882ebaa:	67c1                	lui	a5,0x10
    e882ebac:	ea978793          	addi	a5,a5,-343 # fea9 <memcmp-0xe87f0157>
    e882ebb0:	3c07368b          	extu	a3,a4,15,0
    e882ebb4:	54f68863          	beq	a3,a5,e882f104 <uDNS_SetupDNSConfig+0x826>
        mDNS_SetPrimaryInterfaceInfo(m,
    e882ebb8:	10ac                	addi	a1,sp,104
    e882ebba:	e311                	bnez	a4,e882ebbe <uDNS_SetupDNSConfig+0x2e0>
    e882ebbc:	4581                	li	a1,0
                                     !mDNSIPv6AddressIsZero(v6.ip.v6) ? &v6 : mDNSNULL,
    e882ebbe:	472a                	lw	a4,136(sp)
    e882ebc0:	479a                	lw	a5,132(sp)
        mDNS_SetPrimaryInterfaceInfo(m,
    e882ebc2:	0110                	addi	a2,sp,128
                                     !mDNSIPv6AddressIsZero(v6.ip.v6) ? &v6 : mDNSNULL,
    e882ebc4:	8fd9                	or	a5,a5,a4
    e882ebc6:	473a                	lw	a4,140(sp)
    e882ebc8:	8fd9                	or	a5,a5,a4
    e882ebca:	474a                	lw	a4,144(sp)
    e882ebcc:	8fd9                	or	a5,a5,a4
        mDNS_SetPrimaryInterfaceInfo(m,
    e882ebce:	2781                	sext.w	a5,a5
    e882ebd0:	e391                	bnez	a5,e882ebd4 <uDNS_SetupDNSConfig+0x2f6>
    e882ebd2:	4601                	li	a2,0
    e882ebd4:	437a                	lw	t1,156(sp)
    e882ebd6:	8522                	mv	a0,s0
    e882ebd8:	40601d0b          	mveqz	s10,zero,t1
    e882ebdc:	86ea                	mv	a3,s10
    e882ebde:	3a7060ef          	jal	ra,e8835784 <mDNS_SetPrimaryInterfaceInfo>
    e882ebe2:	b3d1                	j	e882e9a6 <uDNS_SetupDNSConfig+0xc8>
            (*mres)->flags &= ~McastResolver_FlagNew;
    e882ebe4:	9bf5                	andi	a5,a5,-3
    e882ebe6:	c91c                	sw	a5,16(a0)
            mres = &(*mres)->next;
    e882ebe8:	00093903          	ld	s2,0(s2)
    e882ebec:	b581                	j	e882ea2c <uDNS_SetupDNSConfig+0x14e>
        if (!mDNSOpaque16IsZero(q->TargetQID))
    e882ebee:	21295783          	lhu	a5,530(s2)
    e882ebf2:	c3e1                	beqz	a5,e882ecb2 <uDNS_SetupDNSConfig+0x3d4>
            if (q->DuplicateOf) continue;
    e882ebf4:	05093783          	ld	a5,80(s2)
    e882ebf8:	efcd                	bnez	a5,e882ecb2 <uDNS_SetupDNSConfig+0x3d4>
            SetValidDNSServers(m, q);
    e882ebfa:	85ca                	mv	a1,s2
    e882ebfc:	8522                	mv	a0,s0
    e882ebfe:	cbef20ef          	jal	ra,e88210bc <SetValidDNSServers>
            q->triedAllServersOnce = 0;
    e882ec02:	18091123          	sh	zero,386(s2)
            s = GetServerForQuestion(m, q);
    e882ec06:	85ca                	mv	a1,s2
    e882ec08:	8522                	mv	a0,s0
    e882ec0a:	e46f20ef          	jal	ra,e8821250 <GetServerForQuestion>
    e882ec0e:	8caa                	mv	s9,a0
            t = q->qDNSServer;
    e882ec10:	16893783          	ld	a5,360(s2)
            if (t != s)
    e882ec14:	10f50363          	beq	a0,a5,e882ed1a <uDNS_SetupDNSConfig+0x43c>
                LogInfo("uDNS_SetupDNSConfig: Updating DNS Server from %#a:%d (%##s) to %#a:%d (%##s) for question %##s (%s) (scope:%p)",
    e882ec18:	000ba703          	lw	a4,0(s7)
    e882ec1c:	cb35                	beqz	a4,e882ec90 <uDNS_SetupDNSConfig+0x3b2>
    e882ec1e:	50078e63          	beqz	a5,e882f13a <uDNS_SetupDNSConfig+0x85c>
    e882ec22:	0287c703          	lbu	a4,40(a5)
    e882ec26:	0297c683          	lbu	a3,41(a5)
    e882ec2a:	01478613          	addi	a2,a5,20
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e882ec2e:	0722                	slli	a4,a4,0x8
    e882ec30:	8ed9                	or	a3,a3,a4
    e882ec32:	875a                	mv	a4,s6
    e882ec34:	c399                	beqz	a5,e882ec3a <uDNS_SetupDNSConfig+0x35c>
    e882ec36:	03078713          	addi	a4,a5,48
    e882ec3a:	4e0c8a63          	beqz	s9,e882f12e <uDNS_SetupDNSConfig+0x850>
    e882ec3e:	028cc583          	lbu	a1,40(s9)
    e882ec42:	029cc803          	lbu	a6,41(s9)
    e882ec46:	014c8793          	addi	a5,s9,20
    e882ec4a:	05a2                	slli	a1,a1,0x8
    e882ec4c:	00b86833          	or	a6,a6,a1
    e882ec50:	88da                	mv	a7,s6
    e882ec52:	000c8463          	beqz	s9,e882ec5a <uDNS_SetupDNSConfig+0x37c>
    e882ec56:	030c8893          	addi	a7,s9,48
    e882ec5a:	31495503          	lhu	a0,788(s2)
    e882ec5e:	ecbe                	sd	a5,88(sp)
    e882ec60:	e8c6                	sd	a7,80(sp)
    e882ec62:	e4ba                	sd	a4,72(sp)
    e882ec64:	e0b2                	sd	a2,64(sp)
    e882ec66:	fc42                	sd	a6,56(sp)
    e882ec68:	f436                	sd	a3,40(sp)
    e882ec6a:	ff7e60ef          	jal	ra,e8815c60 <DNSTypeName>
    e882ec6e:	1f093583          	ld	a1,496(s2)
    e882ec72:	68c6                	ld	a7,80(sp)
    e882ec74:	7862                	ld	a6,56(sp)
    e882ec76:	e82e                	sd	a1,16(sp)
    e882ec78:	67e6                	ld	a5,88(sp)
    e882ec7a:	21490593          	addi	a1,s2,532
    e882ec7e:	6726                	ld	a4,72(sp)
    e882ec80:	76a2                	ld	a3,40(sp)
    e882ec82:	6606                	ld	a2,64(sp)
    e882ec84:	e42a                	sd	a0,8(sp)
    e882ec86:	e02e                	sd	a1,0(sp)
    e882ec88:	450d                	li	a0,3
    e882ec8a:	85e2                	mv	a1,s8
    e882ec8c:	021000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                old = q->SuppressQuery;
    e882ec90:	14094d03          	lbu	s10,320(s2)
                new = ShouldSuppressUnicastQuery(m, q, s);
    e882ec94:	8666                	mv	a2,s9
    e882ec96:	85ca                	mv	a1,s2
    e882ec98:	8522                	mv	a0,s0
    e882ec9a:	e8aee0ef          	jal	ra,e881d324 <ShouldSuppressUnicastQuery>
                if (old != new)
    e882ec9e:	02ad0463          	beq	s10,a0,e882ecc6 <uDNS_SetupDNSConfig+0x3e8>
                    for (qptr = q->next ; qptr; qptr = qptr->next)
    e882eca2:	00093783          	ld	a5,0(s2)
                    q->Restart = 1;
    e882eca6:	1b5909a3          	sb	s5,435(s2)
                    q->SuppressQuery = new;
    e882ecaa:	14a90023          	sb	a0,320(s2)
                    for (qptr = q->next ; qptr; qptr = qptr->next)
    e882ecae:	e789                	bnez	a5,e882ecb8 <uDNS_SetupDNSConfig+0x3da>
                    Restart = mDNStrue;
    e882ecb0:	4a05                	li	s4,1
    for (q = m->Questions; q; q=q->next)
    e882ecb2:	00093903          	ld	s2,0(s2)
    e882ecb6:	b355                	j	e882ea5a <uDNS_SetupDNSConfig+0x17c>
                        if (qptr->DuplicateOf == q)
    e882ecb8:	6bb8                	ld	a4,80(a5)
    e882ecba:	01271463          	bne	a4,s2,e882ecc2 <uDNS_SetupDNSConfig+0x3e4>
                            qptr->Restart = 1;
    e882ecbe:	1b5789a3          	sb	s5,435(a5)
                    for (qptr = q->next ; qptr; qptr = qptr->next)
    e882ecc2:	639c                	ld	a5,0(a5)
    e882ecc4:	b7ed                	j	e882ecae <uDNS_SetupDNSConfig+0x3d0>
                    DNSServerChangeForQuestion(m, q, s);
    e882ecc6:	8666                	mv	a2,s9
    e882ecc8:	85ca                	mv	a1,s2
    e882ecca:	8522                	mv	a0,s0
    e882eccc:	bc1ff0ef          	jal	ra,e882e88c <DNSServerChangeForQuestion>
                    q->unansweredQueries = 0;
    e882ecd0:	18090223          	sb	zero,388(s2)
                    q->TargetQID = mDNS_NewMessageID(m);
    e882ecd4:	8522                	mv	a0,s0
    e882ecd6:	e98f60ef          	jal	ra,e882536e <mDNS_NewMessageID>
    e882ecda:	20a91923          	sh	a0,530(s2)
                    if (!QuerySuppressed(q))
    e882ecde:	31c94783          	lbu	a5,796(s2)
    e882ece2:	c781                	beqz	a5,e882ecea <uDNS_SetupDNSConfig+0x40c>
    e882ece4:	14094783          	lbu	a5,320(s2)
    e882ece8:	f7e9                	bnez	a5,e882ecb2 <uDNS_SetupDNSConfig+0x3d4>
    e882ecea:	1e694783          	lbu	a5,486(s2)
    e882ecee:	f3f1                	bnez	a5,e882ecb2 <uDNS_SetupDNSConfig+0x3d4>
                        ActivateUnicastQuery(m, q, mDNStrue);
    e882ecf0:	4605                	li	a2,1
    e882ecf2:	85ca                	mv	a1,s2
    e882ecf4:	8522                	mv	a0,s0
    e882ecf6:	e6af50ef          	jal	ra,e8824360 <ActivateUnicastQuery>
                        for (qptr = q->next ; qptr; qptr = qptr->next)
    e882ecfa:	00093c83          	ld	s9,0(s2)
    e882ecfe:	fa0c8ae3          	beqz	s9,e882ecb2 <uDNS_SetupDNSConfig+0x3d4>
                            if (qptr->DuplicateOf == q) ActivateUnicastQuery(m, qptr, mDNStrue);
    e882ed02:	050cb783          	ld	a5,80(s9)
    e882ed06:	01279763          	bne	a5,s2,e882ed14 <uDNS_SetupDNSConfig+0x436>
    e882ed0a:	4605                	li	a2,1
    e882ed0c:	85e6                	mv	a1,s9
    e882ed0e:	8522                	mv	a0,s0
    e882ed10:	e50f50ef          	jal	ra,e8824360 <ActivateUnicastQuery>
                        for (qptr = q->next ; qptr; qptr = qptr->next)
    e882ed14:	000cbc83          	ld	s9,0(s9)
    e882ed18:	b7dd                	j	e882ecfe <uDNS_SetupDNSConfig+0x420>
                for (qptr = q->next ; qptr; qptr = qptr->next)
    e882ed1a:	00093783          	ld	a5,0(s2)
    e882ed1e:	dbd1                	beqz	a5,e882ecb2 <uDNS_SetupDNSConfig+0x3d4>
                    if (qptr->DuplicateOf == q) { qptr->validDNSServers = q->validDNSServers; qptr->qDNSServer = q->qDNSServer; }
    e882ed20:	6bb8                	ld	a4,80(a5)
    e882ed22:	01271e63          	bne	a4,s2,e882ed3e <uDNS_SetupDNSConfig+0x460>
    e882ed26:	17093703          	ld	a4,368(s2)
    e882ed2a:	16e7b823          	sd	a4,368(a5)
    e882ed2e:	17893703          	ld	a4,376(s2)
    e882ed32:	16e7bc23          	sd	a4,376(a5)
    e882ed36:	16893703          	ld	a4,360(s2)
    e882ed3a:	16e7b423          	sd	a4,360(a5)
                for (qptr = q->next ; qptr; qptr = qptr->next)
    e882ed3e:	639c                	ld	a5,0(a5)
    e882ed40:	bff9                	j	e882ed1e <uDNS_SetupDNSConfig+0x440>
        m->RestartQuestion = q->next;
    e882ed42:	00093783          	ld	a5,0(s2)
    e882ed46:	2ef43023          	sd	a5,736(s0)
        if (q->Restart)
    e882ed4a:	1b394783          	lbu	a5,435(s2)
    e882ed4e:	d40785e3          	beqz	a5,e882ea98 <uDNS_SetupDNSConfig+0x1ba>
            if (mDNSOpaque16IsZero(q->TargetQID))
    e882ed52:	21295783          	lhu	a5,530(s2)
    e882ed56:	ef81                	bnez	a5,e882ed6e <uDNS_SetupDNSConfig+0x490>
                LogMsg("RestartUnicastQuestions: ERROR!! Restart set for multicast question %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e882ed58:	31495503          	lhu	a0,788(s2)
    e882ed5c:	f05e60ef          	jal	ra,e8815c60 <DNSTypeName>
    e882ed60:	86aa                	mv	a3,a0
    e882ed62:	21490613          	addi	a2,s2,532
    e882ed66:	85ce                	mv	a1,s3
    e882ed68:	4501                	li	a0,0
    e882ed6a:	742000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            q->Restart = 0;
    e882ed6e:	1a0909a3          	sb	zero,435(s2)
            SuppressStatusChanged(m, q, &restart);
    e882ed72:	0930                	addi	a2,sp,152
    e882ed74:	85ca                	mv	a1,s2
    e882ed76:	8522                	mv	a0,s0
    e882ed78:	e09fb0ef          	jal	ra,e882ab80 <SuppressStatusChanged>
    e882ed7c:	bb31                	j	e882ea98 <uDNS_SetupDNSConfig+0x1ba>
        restart = restart->next;
    e882ed7e:	00093783          	ld	a5,0(s2)
    e882ed82:	ed3e                	sd	a5,152(sp)
        q->next = mDNSNULL;
    e882ed84:	00093023          	sd	zero,0(s2)
        LogInfo("RestartUnicastQuestions: Start question %p %##s (%s)", q, q->qname.c, DNSTypeName(q->qtype));
    e882ed88:	0009a783          	lw	a5,0(s3)
    e882ed8c:	cf89                	beqz	a5,e882eda6 <uDNS_SetupDNSConfig+0x4c8>
    e882ed8e:	31495503          	lhu	a0,788(s2)
    e882ed92:	ecfe60ef          	jal	ra,e8815c60 <DNSTypeName>
    e882ed96:	872a                	mv	a4,a0
    e882ed98:	21490693          	addi	a3,s2,532
    e882ed9c:	864a                	mv	a2,s2
    e882ed9e:	85d2                	mv	a1,s4
    e882eda0:	450d                	li	a0,3
    e882eda2:	70a000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNS_StartQuery_internal(m, q);
    e882eda6:	85ca                	mv	a1,s2
    e882eda8:	8522                	mv	a0,s0
    e882edaa:	e44f60ef          	jal	ra,e88253ee <mDNS_StartQuery_internal>
    e882edae:	b309                	j	e882eab0 <uDNS_SetupDNSConfig+0x1d2>
    FORALL_CACHERECORDS(slot, cg, cr)
    e882edb0:	010abc83          	ld	s9,16(s5)
    e882edb4:	000c9563          	bnez	s9,e882edbe <uDNS_SetupDNSConfig+0x4e0>
    e882edb8:	000aba83          	ld	s5,0(s5)
    e882edbc:	bb21                	j	e882ead4 <uDNS_SetupDNSConfig+0x1f6>
        if (cr->resrec.InterfaceID)
    e882edbe:	020cbf03          	ld	t5,32(s9)
    e882edc2:	160f1963          	bnez	t5,e882ef34 <uDNS_SetupDNSConfig+0x656>
                               (cr->CRActiveQuestion ? cr->CRActiveQuestion->InterfaceID : mDNSNULL),
    e882edc6:	060cbd03          	ld	s10,96(s9)
        ptr = GetServerForName(m, cr->resrec.name,
    e882edca:	028cbd83          	ld	s11,40(s9)
    e882edce:	56fd                	li	a3,-1
    e882edd0:	000d0663          	beqz	s10,e882eddc <uDNS_SetupDNSConfig+0x4fe>
    e882edd4:	1e8d2683          	lw	a3,488(s10)
    e882edd8:	1f0d3d03          	ld	s10,496(s10)
    if ((InterfaceID == mDNSInterface_Unicast) || (InterfaceID == mDNSInterface_LocalOnly))
    e882eddc:	00074797          	auipc	a5,0x74
    e882ede0:	fa478793          	addi	a5,a5,-92 # e88a2d80 <mDNSInterface_Unicast>
    e882ede4:	639c                	ld	a5,0(a5)
    e882ede6:	0fa78363          	beq	a5,s10,e882eecc <uDNS_SetupDNSConfig+0x5ee>
    e882edea:	00074797          	auipc	a5,0x74
    e882edee:	f8678793          	addi	a5,a5,-122 # e88a2d70 <mDNSInterface_LocalOnly>
    e882edf2:	639c                	ld	a5,0(a5)
    e882edf4:	0da78c63          	beq	a5,s10,e882eecc <uDNS_SetupDNSConfig+0x5ee>
    char *ifname = mDNSNULL;    // for logging purposes only
    e882edf8:	4f01                	li	t5,0
    if (InterfaceID) ifname = InterfaceNameForID(m, InterfaceID);
    e882edfa:	000d0963          	beqz	s10,e882ee0c <uDNS_SetupDNSConfig+0x52e>
    e882edfe:	85ea                	mv	a1,s10
    e882ee00:	8522                	mv	a0,s0
    e882ee02:	f436                	sd	a3,40(sp)
    e882ee04:	d0def0ef          	jal	ra,e881eb10 <InterfaceNameForID>
    e882ee08:	8f2a                	mv	t5,a0
    e882ee0a:	76a2                	ld	a3,40(sp)
    curmatch = GetBestServer(m, name, InterfaceID, ServiceID, allValid, mDNSNULL, mDNStrue);
    e882ee0c:	57fd                	li	a5,-1
    e882ee0e:	4885                	li	a7,1
    e882ee10:	4801                	li	a6,0
    e882ee12:	577d                	li	a4,-1
    e882ee14:	866a                	mv	a2,s10
    e882ee16:	85ee                	mv	a1,s11
    e882ee18:	8522                	mv	a0,s0
    e882ee1a:	f47a                	sd	t5,40(sp)
    e882ee1c:	c8fee0ef          	jal	ra,e881daaa <GetBestServer>
    e882ee20:	8c2a                	mv	s8,a0
    if (curmatch != mDNSNULL)
    e882ee22:	7f22                	ld	t5,40(sp)
        LogInfo("GetServerForName: DNS server %#a:%d (Penalty Time Left %d) (Scope %s:%p) found for name %##s", &curmatch->addr,
    e882ee24:	000a2783          	lw	a5,0(s4)
    if (curmatch != mDNSNULL)
    e882ee28:	c545                	beqz	a0,e882eed0 <uDNS_SetupDNSConfig+0x5f2>
        LogInfo("GetServerForName: DNS server %#a:%d (Penalty Time Left %d) (Scope %s:%p) found for name %##s", &curmatch->addr,
    e882ee2a:	c3a1                	beqz	a5,e882ee6a <uDNS_SetupDNSConfig+0x58c>
    e882ee2c:	02854683          	lbu	a3,40(a0)
    e882ee30:	02954783          	lbu	a5,41(a0)
    e882ee34:	13052703          	lw	a4,304(a0)
    e882ee38:	0086969b          	slliw	a3,a3,0x8
    e882ee3c:	01450613          	addi	a2,a0,20
    e882ee40:	8edd                	or	a3,a3,a5
    e882ee42:	c701                	beqz	a4,e882ee4a <uDNS_SetupDNSConfig+0x56c>
    e882ee44:	24042783          	lw	a5,576(s0)
    e882ee48:	9f1d                	subw	a4,a4,a5
    e882ee4a:	00077797          	auipc	a5,0x77
    e882ee4e:	96678793          	addi	a5,a5,-1690 # e88a57b0 <end.8789+0x2108>
    e882ee52:	41e79f0b          	mveqz	t5,a5,t5
    e882ee56:	88ee                	mv	a7,s11
    e882ee58:	886a                	mv	a6,s10
    e882ee5a:	87fa                	mv	a5,t5
    e882ee5c:	0007d597          	auipc	a1,0x7d
    e882ee60:	99c58593          	addi	a1,a1,-1636 # e88ab7f8 <mDNS_DomainTypeNames+0x1e48>
    e882ee64:	450d                	li	a0,3
    e882ee66:	646000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (ptr && (ptr != cr->resrec.rDNSServer))
    e882ee6a:	038cb783          	ld	a5,56(s9)
    e882ee6e:	0d878363          	beq	a5,s8,e882ef34 <uDNS_SetupDNSConfig+0x656>
            if (cr->CRActiveQuestion == mDNSNULL || DNSSECQuestion(cr->CRActiveQuestion))
    e882ee72:	060cb783          	ld	a5,96(s9)
    e882ee76:	cf89                	beqz	a5,e882ee90 <uDNS_SetupDNSConfig+0x5b2>
    e882ee78:	3247c703          	lbu	a4,804(a5)
    e882ee7c:	eb11                	bnez	a4,e882ee90 <uDNS_SetupDNSConfig+0x5b2>
    e882ee7e:	14a7c703          	lbu	a4,330(a5)
    e882ee82:	e719                	bnez	a4,e882ee90 <uDNS_SetupDNSConfig+0x5b2>
    e882ee84:	3257c703          	lbu	a4,805(a5)
    e882ee88:	cb4d                	beqz	a4,e882ef3a <uDNS_SetupDNSConfig+0x65c>
    e882ee8a:	3267c783          	lbu	a5,806(a5)
    e882ee8e:	c7d5                	beqz	a5,e882ef3a <uDNS_SetupDNSConfig+0x65c>
                LogInfo("uDNS_SetupDNSConfig: Purging Resourcerecord %s, New DNS server %#a , Old DNS server %#a", CRDisplayString(m, cr),
    e882ee90:	000a2783          	lw	a5,0(s4)
    e882ee94:	c79d                	beqz	a5,e882eec2 <uDNS_SetupDNSConfig+0x5e4>
    e882ee96:	030cb583          	ld	a1,48(s9)
    e882ee9a:	865e                	mv	a2,s7
    e882ee9c:	008c8513          	addi	a0,s9,8
    e882eea0:	0591                	addi	a1,a1,4
    e882eea2:	b73e70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882eea6:	862a                	mv	a2,a0
    e882eea8:	038cb703          	ld	a4,56(s9)
    e882eeac:	014c0693          	addi	a3,s8,20
    e882eeb0:	c311                	beqz	a4,e882eeb4 <uDNS_SetupDNSConfig+0x5d6>
    e882eeb2:	0751                	addi	a4,a4,20
    e882eeb4:	0007d597          	auipc	a1,0x7d
    e882eeb8:	9ec58593          	addi	a1,a1,-1556 # e88ab8a0 <mDNS_DomainTypeNames+0x1ef0>
    e882eebc:	450d                	li	a0,3
    e882eebe:	5ee000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                mDNS_PurgeCacheResourceRecord(m, cr);
    e882eec2:	85e6                	mv	a1,s9
    e882eec4:	8522                	mv	a0,s0
    e882eec6:	f04f10ef          	jal	ra,e88205ca <mDNS_PurgeCacheResourceRecord>
    e882eeca:	a025                	j	e882eef2 <uDNS_SetupDNSConfig+0x614>
        InterfaceID = mDNSNULL;
    e882eecc:	4d01                	li	s10,0
    e882eece:	bf3d                	j	e882ee0c <uDNS_SetupDNSConfig+0x52e>
        LogInfo("GetServerForName: no DNS server (Scope %s:%p) found for name %##s", ifname ? ifname : "None", InterfaceID, name);
    e882eed0:	c38d                	beqz	a5,e882eef2 <uDNS_SetupDNSConfig+0x614>
    e882eed2:	00077797          	auipc	a5,0x77
    e882eed6:	8de78793          	addi	a5,a5,-1826 # e88a57b0 <end.8789+0x2108>
    e882eeda:	41e79f0b          	mveqz	t5,a5,t5
    e882eede:	876e                	mv	a4,s11
    e882eee0:	86ea                	mv	a3,s10
    e882eee2:	867a                	mv	a2,t5
    e882eee4:	0007d597          	auipc	a1,0x7d
    e882eee8:	97458593          	addi	a1,a1,-1676 # e88ab858 <mDNS_DomainTypeNames+0x1ea8>
    e882eeec:	450d                	li	a0,3
    e882eeee:	5be000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!cr->resrec.rDNSServer && cr->CRActiveQuestion && cr->CRActiveQuestion->qDNSServer)
    e882eef2:	038cb783          	ld	a5,56(s9)
    e882eef6:	ef9d                	bnez	a5,e882ef34 <uDNS_SetupDNSConfig+0x656>
    e882eef8:	060cb783          	ld	a5,96(s9)
    e882eefc:	cf85                	beqz	a5,e882ef34 <uDNS_SetupDNSConfig+0x656>
    e882eefe:	1687bc03          	ld	s8,360(a5)
    e882ef02:	020c0963          	beqz	s8,e882ef34 <uDNS_SetupDNSConfig+0x656>
            LogInfo("uDNS_SetupDNSConfig: Using active question's DNS server %#a for cache record %s", &cr->resrec.rDNSServer->addr, CRDisplayString(m, cr));
    e882ef06:	000a2703          	lw	a4,0(s4)
            cr->resrec.rDNSServer = cr->CRActiveQuestion->qDNSServer;
    e882ef0a:	038cbc23          	sd	s8,56(s9)
            LogInfo("uDNS_SetupDNSConfig: Using active question's DNS server %#a for cache record %s", &cr->resrec.rDNSServer->addr, CRDisplayString(m, cr));
    e882ef0e:	c31d                	beqz	a4,e882ef34 <uDNS_SetupDNSConfig+0x656>
    e882ef10:	030cb583          	ld	a1,48(s9)
    e882ef14:	865e                	mv	a2,s7
    e882ef16:	008c8513          	addi	a0,s9,8
    e882ef1a:	0591                	addi	a1,a1,4
    e882ef1c:	af9e70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882ef20:	86aa                	mv	a3,a0
    e882ef22:	014c0613          	addi	a2,s8,20
    e882ef26:	0007d597          	auipc	a1,0x7d
    e882ef2a:	a3a58593          	addi	a1,a1,-1478 # e88ab960 <mDNS_DomainTypeNames+0x1fb0>
    e882ef2e:	450d                	li	a0,3
    e882ef30:	57c000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    FORALL_CACHERECORDS(slot, cg, cr)
    e882ef34:	000cbc83          	ld	s9,0(s9)
    e882ef38:	bdb5                	j	e882edb4 <uDNS_SetupDNSConfig+0x4d6>
                LogInfo("uDNS_SetupDNSConfig: Purging/Reconfirming Resourcerecord %s, New DNS server %#a, Old DNS server %#a", CRDisplayString(m, cr),
    e882ef3a:	000a2783          	lw	a5,0(s4)
    e882ef3e:	c79d                	beqz	a5,e882ef6c <uDNS_SetupDNSConfig+0x68e>
    e882ef40:	030cb583          	ld	a1,48(s9)
    e882ef44:	865e                	mv	a2,s7
    e882ef46:	008c8513          	addi	a0,s9,8
    e882ef4a:	0591                	addi	a1,a1,4
    e882ef4c:	ac9e70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882ef50:	862a                	mv	a2,a0
    e882ef52:	038cb703          	ld	a4,56(s9)
    e882ef56:	014c0693          	addi	a3,s8,20
    e882ef5a:	c311                	beqz	a4,e882ef5e <uDNS_SetupDNSConfig+0x680>
    e882ef5c:	0751                	addi	a4,a4,20
    e882ef5e:	0007d597          	auipc	a1,0x7d
    e882ef62:	99a58593          	addi	a1,a1,-1638 # e88ab8f8 <mDNS_DomainTypeNames+0x1f48>
    e882ef66:	450d                	li	a0,3
    e882ef68:	544000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                PurgeOrReconfirmCacheRecord(m, cr, ptr, mDNSfalse);
    e882ef6c:	85e6                	mv	a1,s9
    e882ef6e:	8522                	mv	a0,s0
    e882ef70:	f82f10ef          	jal	ra,e88206f2 <PurgeOrReconfirmCacheRecord.isra.40>
    e882ef74:	bfbd                	j	e882eef2 <uDNS_SetupDNSConfig+0x614>
        if (((*p)->flags & DNSServer_FlagDelete) != 0)
    e882ef76:	02cd2783          	lw	a5,44(s10)
    e882ef7a:	0017f713          	andi	a4,a5,1
    e882ef7e:	14070d63          	beqz	a4,e882f0d8 <uDNS_SetupDNSConfig+0x7fa>
    e882ef82:	8a4e                	mv	s4,s3
                        LogInfo("uDNS_SetupDNSConfig: Cache Record %##s has no Active question, Record's DNSServer Address %#a, Server to be deleted %#a",
    e882ef84:	014d0a93          	addi	s5,s10,20
            FORALL_CACHERECORDS(slot, cg, cr)
    e882ef88:	000a3b03          	ld	s6,0(s4)
                            LogInfo("uDNS_SetupDNSConfig: Cache Record %s,  Active question %##s (%s) (scope:%p), pointing to DNSServer %#a (to be deleted),"
    e882ef8c:	03b40793          	addi	a5,s0,59
    e882ef90:	f43e                	sd	a5,40(sp)
            FORALL_CACHERECORDS(slot, cg, cr)
    e882ef92:	040b1663          	bnez	s6,e882efde <uDNS_SetupDNSConfig+0x700>
    e882ef96:	0a21                	addi	s4,s4,8
    e882ef98:	ff4918e3          	bne	s2,s4,e882ef88 <uDNS_SetupDNSConfig+0x6aa>
            *p = (*p)->next;
    e882ef9c:	609c                	ld	a5,0(s1)
    e882ef9e:	639c                	ld	a5,0(a5)
    e882efa0:	e09c                	sd	a5,0(s1)
            LogInfo("uDNS_SetupDNSConfig: Deleting server %p %#a:%d (%##s) %d", ptr, &ptr->addr, mDNSVal16(ptr->port), ptr->domain.c, NumUnicastDNSServers);
    e882efa2:	000ba783          	lw	a5,0(s7)
    e882efa6:	cb85                	beqz	a5,e882efd6 <uDNS_SetupDNSConfig+0x6f8>
    e882efa8:	028d4703          	lbu	a4,40(s10)
    e882efac:	029d4683          	lbu	a3,41(s10)
    e882efb0:	000b5817          	auipc	a6,0xb5
    e882efb4:	bac84803          	lbu	a6,-1108(a6) # e88e3b5c <NumUnicastDNSServers>
    e882efb8:	0087171b          	slliw	a4,a4,0x8
    e882efbc:	8f55                	or	a4,a4,a3
    e882efbe:	030d0793          	addi	a5,s10,48
    e882efc2:	014d0693          	addi	a3,s10,20
    e882efc6:	866a                	mv	a2,s10
    e882efc8:	0007d597          	auipc	a1,0x7d
    e882efcc:	b9058593          	addi	a1,a1,-1136 # e88abb58 <mDNS_DomainTypeNames+0x21a8>
    e882efd0:	450d                	li	a0,3
    e882efd2:	4da000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            mDNSPlatformMemFree(ptr);
    e882efd6:	856a                	mv	a0,s10
    e882efd8:	2aa010ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    e882efdc:	be09                	j	e882eaee <uDNS_SetupDNSConfig+0x210>
            FORALL_CACHERECORDS(slot, cg, cr)
    e882efde:	010b3d83          	ld	s11,16(s6)
    e882efe2:	000d9563          	bnez	s11,e882efec <uDNS_SetupDNSConfig+0x70e>
    e882efe6:	000b3b03          	ld	s6,0(s6)
    e882efea:	b765                	j	e882ef92 <uDNS_SetupDNSConfig+0x6b4>
                if (cr->resrec.InterfaceID) continue;
    e882efec:	020db783          	ld	a5,32(s11)
    e882eff0:	e3f1                	bnez	a5,e882f0b4 <uDNS_SetupDNSConfig+0x7d6>
                if (cr->resrec.rDNSServer == ptr)
    e882eff2:	038db783          	ld	a5,56(s11)
    e882eff6:	0ba79f63          	bne	a5,s10,e882f0b4 <uDNS_SetupDNSConfig+0x7d6>
                    if (cr->CRActiveQuestion)
    e882effa:	060dbc83          	ld	s9,96(s11)
    e882effe:	0a0c8e63          	beqz	s9,e882f0ba <uDNS_SetupDNSConfig+0x7dc>
                        if (qptr->qDNSServer == ptr)
    e882f002:	168cb783          	ld	a5,360(s9)
    e882f006:	05a79a63          	bne	a5,s10,e882f05a <uDNS_SetupDNSConfig+0x77c>
                            LogMsg("uDNS_SetupDNSConfig: ERROR!! Cache Record %s  Active question %##s (%s) (scope:%p) pointing to DNSServer Address %#a"
    e882f00a:	030db583          	ld	a1,48(s11)
    e882f00e:	7622                	ld	a2,40(sp)
    e882f010:	008d8513          	addi	a0,s11,8
    e882f014:	0591                	addi	a1,a1,4
    e882f016:	9ffe70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882f01a:	fc2a                	sd	a0,56(sp)
    e882f01c:	314cd503          	lhu	a0,788(s9)
    e882f020:	c41e60ef          	jal	ra,e8815c60 <DNSTypeName>
    e882f024:	872a                	mv	a4,a0
    e882f026:	1f0cb783          	ld	a5,496(s9)
    e882f02a:	7662                	ld	a2,56(sp)
    e882f02c:	8856                	mv	a6,s5
    e882f02e:	214c8693          	addi	a3,s9,532
    e882f032:	0007d597          	auipc	a1,0x7d
    e882f036:	97e58593          	addi	a1,a1,-1666 # e88ab9b0 <mDNS_DomainTypeNames+0x2000>
    e882f03a:	4501                	li	a0,0
    e882f03c:	470000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            qptr->qDNSServer = mDNSNULL;
    e882f040:	160cb423          	sd	zero,360(s9)
                            qptr->validDNSServers = zeroOpaque128;
    e882f044:	000c3783          	ld	a5,0(s8)
    e882f048:	16fcb823          	sd	a5,368(s9)
    e882f04c:	008c3783          	ld	a5,8(s8)
    e882f050:	16fcbc23          	sd	a5,376(s9)
                        cr->resrec.rDNSServer = mDNSNULL;
    e882f054:	020dbc23          	sd	zero,56(s11)
    e882f058:	a891                	j	e882f0ac <uDNS_SetupDNSConfig+0x7ce>
                            LogInfo("uDNS_SetupDNSConfig: Cache Record %s,  Active question %##s (%s) (scope:%p), pointing to DNSServer %#a (to be deleted),"
    e882f05a:	000ba783          	lw	a5,0(s7)
    e882f05e:	c3b9                	beqz	a5,e882f0a4 <uDNS_SetupDNSConfig+0x7c6>
    e882f060:	030db583          	ld	a1,48(s11)
    e882f064:	7622                	ld	a2,40(sp)
    e882f066:	008d8513          	addi	a0,s11,8
    e882f06a:	0591                	addi	a1,a1,4
    e882f06c:	9a9e70ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e882f070:	e0aa                	sd	a0,64(sp)
    e882f072:	314cd503          	lhu	a0,788(s9)
    e882f076:	214c8693          	addi	a3,s9,532
    e882f07a:	fc36                	sd	a3,56(sp)
    e882f07c:	be5e60ef          	jal	ra,e8815c60 <DNSTypeName>
    e882f080:	872a                	mv	a4,a0
    e882f082:	168cb883          	ld	a7,360(s9)
    e882f086:	1f0cb783          	ld	a5,496(s9)
    e882f08a:	76e2                	ld	a3,56(sp)
    e882f08c:	6606                	ld	a2,64(sp)
    e882f08e:	00088363          	beqz	a7,e882f094 <uDNS_SetupDNSConfig+0x7b6>
    e882f092:	08d1                	addi	a7,a7,20
    e882f094:	8856                	mv	a6,s5
    e882f096:	0007d597          	auipc	a1,0x7d
    e882f09a:	9a258593          	addi	a1,a1,-1630 # e88aba38 <mDNS_DomainTypeNames+0x2088>
    e882f09e:	450d                	li	a0,3
    e882f0a0:	40c000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                            cr->resrec.rDNSServer = qptr->qDNSServer;
    e882f0a4:	168cb783          	ld	a5,360(s9)
    e882f0a8:	02fdbc23          	sd	a5,56(s11)
                    PurgeOrReconfirmCacheRecord(m, cr, ptr, mDNStrue);
    e882f0ac:	85ee                	mv	a1,s11
    e882f0ae:	8522                	mv	a0,s0
    e882f0b0:	e42f10ef          	jal	ra,e88206f2 <PurgeOrReconfirmCacheRecord.isra.40>
            FORALL_CACHERECORDS(slot, cg, cr)
    e882f0b4:	000dbd83          	ld	s11,0(s11)
    e882f0b8:	b72d                	j	e882efe2 <uDNS_SetupDNSConfig+0x704>
                        LogInfo("uDNS_SetupDNSConfig: Cache Record %##s has no Active question, Record's DNSServer Address %#a, Server to be deleted %#a",
    e882f0ba:	000ba783          	lw	a5,0(s7)
    e882f0be:	dbd9                	beqz	a5,e882f054 <uDNS_SetupDNSConfig+0x776>
    e882f0c0:	028db603          	ld	a2,40(s11)
    e882f0c4:	8756                	mv	a4,s5
    e882f0c6:	86d6                	mv	a3,s5
    e882f0c8:	0007d597          	auipc	a1,0x7d
    e882f0cc:	a1858593          	addi	a1,a1,-1512 # e88abae0 <mDNS_DomainTypeNames+0x2130>
    e882f0d0:	450d                	li	a0,3
    e882f0d2:	3da000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882f0d6:	bfbd                	j	e882f054 <uDNS_SetupDNSConfig+0x776>
            (*p)->flags &= ~DNSServer_FlagNew;
    e882f0d8:	9bf5                	andi	a5,a5,-3
    e882f0da:	02fd2623          	sw	a5,44(s10)
            p = &(*p)->next;
    e882f0de:	6084                	ld	s1,0(s1)
    e882f0e0:	b439                	j	e882eaee <uDNS_SetupDNSConfig+0x210>
        FORALL_CACHERECORDS(slot, cg, cr)
    e882f0e2:	010a3483          	ld	s1,16(s4)
    e882f0e6:	e481                	bnez	s1,e882f0ee <uDNS_SetupDNSConfig+0x810>
    e882f0e8:	000a3a03          	ld	s4,0(s4)
    e882f0ec:	b41d                	j	e882eb12 <uDNS_SetupDNSConfig+0x234>
            if (!cr->resrec.InterfaceID)
    e882f0ee:	709c                	ld	a5,32(s1)
    e882f0f0:	eb81                	bnez	a5,e882f100 <uDNS_SetupDNSConfig+0x822>
                mDNS_PurgeCacheResourceRecord(m, cr);
    e882f0f2:	85a6                	mv	a1,s1
    e882f0f4:	8522                	mv	a0,s0
    e882f0f6:	f436                	sd	a3,40(sp)
    e882f0f8:	cd2f10ef          	jal	ra,e88205ca <mDNS_PurgeCacheResourceRecord>
                count++;
    e882f0fc:	76a2                	ld	a3,40(sp)
    e882f0fe:	2685                	addiw	a3,a3,1
        FORALL_CACHERECORDS(slot, cg, cr)
    e882f100:	6084                	ld	s1,0(s1)
    e882f102:	b7d5                	j	e882f0e6 <uDNS_SetupDNSConfig+0x808>
        mDNS_SetPrimaryInterfaceInfo(m, mDNSNULL, mDNSNULL, mDNSNULL);
    e882f104:	8522                	mv	a0,s0
    e882f106:	4681                	li	a3,0
    e882f108:	4601                	li	a2,0
    e882f10a:	4581                	li	a1,0
    e882f10c:	678060ef          	jal	ra,e8835784 <mDNS_SetPrimaryInterfaceInfo>
        if (m->FQDN.c[0]) mDNSPlatformDynDNSHostNameStatusChanged(&m->FQDN, 1); // Set status to 1 to indicate temporary failure
    e882f110:	6511                	lui	a0,0x4
    e882f112:	00a407b3          	add	a5,s0,a0
    e882f116:	a087c783          	lbu	a5,-1528(a5)
    e882f11a:	880786e3          	beqz	a5,e882e9a6 <uDNS_SetupDNSConfig+0xc8>
    e882f11e:	a0850513          	addi	a0,a0,-1528 # 3a08 <memcmp-0xe87fc5f8>
    e882f122:	4585                	li	a1,1
    e882f124:	9522                	add	a0,a0,s0
    e882f126:	001000ef          	jal	ra,e882f926 <mDNSPlatformDynDNSHostNameStatusChanged>
    e882f12a:	87dff06f          	j	e882e9a6 <uDNS_SetupDNSConfig+0xc8>
                LogInfo("uDNS_SetupDNSConfig: Updating DNS Server from %#a:%d (%##s) to %#a:%d (%##s) for question %##s (%s) (scope:%p)",
    e882f12e:	0009c583          	lbu	a1,0(s3)
    e882f132:	0019c803          	lbu	a6,1(s3)
    e882f136:	4781                	li	a5,0
    e882f138:	be09                	j	e882ec4a <uDNS_SetupDNSConfig+0x36c>
    e882f13a:	0009c703          	lbu	a4,0(s3)
    e882f13e:	0019c683          	lbu	a3,1(s3)
    e882f142:	4601                	li	a2,0
    e882f144:	b4ed                	j	e882ec2e <uDNS_SetupDNSConfig+0x350>

00000000e882f146 <mDNS_Init>:
{
    e882f146:	7139                	addi	sp,sp,-64
    e882f148:	e422                	sd	s0,8(sp)
    e882f14a:	e826                	sd	s1,16(sp)
    e882f14c:	f856                	sd	s5,48(sp)
    e882f14e:	fc06                	sd	ra,56(sp)
    e882f150:	ec4a                	sd	s2,24(sp)
    e882f152:	f04e                	sd	s3,32(sp)
    e882f154:	f452                	sd	s4,40(sp)
    e882f156:	842a                	mv	s0,a0
    e882f158:	84b2                	mv	s1,a2
    if (!rrcachestorage) rrcachesize = 0;
    e882f15a:	4a81                	li	s5,0
    e882f15c:	c211                	beqz	a2,e882f160 <mDNS_Init+0x1a>
    e882f15e:	8ab6                	mv	s5,a3
    m->AdvertiseLocalAddresses       = AdvertiseLocalAddresses;
    e882f160:	00e406a3          	sb	a4,13(s0)
    m->mDNSPlatformStatus            = mStatus_Waiting;
    e882f164:	4705                	li	a4,1
    m->UnicastPort4                  = zeroIPPort;
    e882f166:	00074a17          	auipc	s4,0x74
    e882f16a:	442a0a13          	addi	s4,s4,1090 # e88a35a8 <zeroIPPort>
    m->mDNSPlatformStatus            = mStatus_Waiting;
    e882f16e:	c818                	sw	a4,16(s0)
    m->UnicastPort4                  = zeroIPPort;
    e882f170:	000a5703          	lhu	a4,0(s4)
    m->MainContext                   = Context;
    e882f174:	fd04578b          	sdd	a5,a6,(s0),2,4
    m->p                             = p;
    e882f178:	e00c                	sd	a1,0(s0)
    m->UnicastPort4                  = zeroIPPort;
    e882f17a:	00e41a23          	sh	a4,20(s0)
    m->UnicastPort6                  = zeroIPPort;
    e882f17e:	00e41b23          	sh	a4,22(s0)
    m->PrimaryMAC                    = zeroEthAddr;
    e882f182:	00074717          	auipc	a4,0x74
    e882f186:	41670713          	addi	a4,a4,1046 # e88a3598 <zeroEthAddr>
    e882f18a:	4314                	lw	a3,0(a4)
    e882f18c:	00475703          	lhu	a4,4(a4)
    m->NetworkChanged                = 0;
    e882f190:	00042423          	sw	zero,8(s0)
    m->CanReceiveUnicastOn5353       = mDNSfalse; // Assume we can't receive unicasts on 5353, unless platform layer tells us otherwise
    e882f194:	00040623          	sb	zero,12(s0)
    m->DivertMulticastAdvertisements = mDNSfalse;
    e882f198:	00040723          	sb	zero,14(s0)
    m->PrimaryMAC                    = zeroEthAddr;
    e882f19c:	cc14                	sw	a3,24(s0)
    e882f19e:	00e41e23          	sh	a4,28(s0)
    m->rec.r.resrec.RecordType       = 0;
    e882f1a2:	67a5                	lui	a5,0x9
    e882f1a4:	97a2                	add	a5,a5,s0
    e882f1a6:	4e078023          	sb	zero,1248(a5) # 94e0 <memcmp-0xe87f6b20>
    m->rec.r.resrec.AnonInfo         = mDNSNULL;
    e882f1aa:	5007bc23          	sd	zero,1304(a5)
    m->ShutdownTime            = 0;
    e882f1ae:	24042623          	sw	zero,588(s0)
    m->mDNS_busy               = 0;
    e882f1b2:	02043823          	sd	zero,48(s0)
    m->lock_rrcache            = 0;
    e882f1b6:	02041c23          	sh	zero,56(s0)
    m->lock_Records            = 0;
    e882f1ba:	02040d23          	sb	zero,58(s0)
    result = mDNSPlatformTimeInit();
    e882f1be:	0d4010ef          	jal	ra,e8830292 <mDNSPlatformTimeInit>
    e882f1c2:	892a                	mv	s2,a0
    if (result != mStatus_NoError) return(result);
    e882f1c4:	24051a63          	bnez	a0,e882f418 <mDNS_Init+0x2d2>
    m->timenow_adjust = (mDNSs32)mDNSRandom(0xFFFFFFFF);
    e882f1c8:	557d                	li	a0,-1
    e882f1ca:	d3fe30ef          	jal	ra,e8812f08 <mDNSRandom>
    e882f1ce:	22a42e23          	sw	a0,572(s0)
    timenow = mDNS_TimeNow_NoLock(m);
    e882f1d2:	0c4010ef          	jal	ra,e8830296 <mDNSPlatformRawTime>
    e882f1d6:	23c42983          	lw	s3,572(s0)
    m->DelayConflictProcessing = MAX_CONFLICT_PROCESSING_DELAYS;
    e882f1da:	478d                	li	a5,3
    e882f1dc:	26f43823          	sd	a5,624(s0)
    m->AnnounceOwner           = NonZeroTime(timenow + 60 * mDNSPlatformOneSecond);
    e882f1e0:	000a6797          	auipc	a5,0xa6
    e882f1e4:	8a078793          	addi	a5,a5,-1888 # e88d4a80 <mDNSPlatformOneSecond>
    e882f1e8:	439c                	lw	a5,0(a5)
    timenow = mDNS_TimeNow_NoLock(m);
    e882f1ea:	00a989bb          	addw	s3,s3,a0
    m->AnnounceOwner           = NonZeroTime(timenow + 60 * mDNSPlatformOneSecond);
    e882f1ee:	03c00713          	li	a4,60
    e882f1f2:	864e                	mv	a2,s3
    e882f1f4:	24f7160b          	mulaw	a2,a4,a5
    m->NextCacheCheck          = timenow + FutureTime;
    e882f1f8:	38000937          	lui	s2,0x38000
    e882f1fc:	013906bb          	addw	a3,s2,s3
    m->timenow                 = 0;     // MUST only be set within mDNS_Lock/mDNS_Unlock section
    e882f200:	24042023          	sw	zero,576(s0)
    m->timenow_last            = timenow;
    e882f204:	25342223          	sw	s3,580(s0)
    m->NextScheduledEvent      = timenow;
    e882f208:	25342423          	sw	s3,584(s0)
    m->SuppressSending         = timenow;
    e882f20c:	25342823          	sw	s3,592(s0)
    m->NextCacheCheck          = timenow + FutureTime;
    e882f210:	24d42a23          	sw	a3,596(s0)
    m->NextScheduledQuery      = timenow + FutureTime;
    e882f214:	24d42c23          	sw	a3,600(s0)
    m->NextScheduledProbe      = timenow + FutureTime;
    e882f218:	24d42e23          	sw	a3,604(s0)
    m->NextScheduledResponse   = timenow + FutureTime;
    e882f21c:	26d42023          	sw	a3,608(s0)
    m->NextScheduledNATOp      = timenow + FutureTime;
    e882f220:	26d42223          	sw	a3,612(s0)
    m->NextScheduledSPS        = timenow + FutureTime;
    e882f224:	26d42423          	sw	a3,616(s0)
    m->NextScheduledKA         = timenow + FutureTime;
    e882f228:	26d42623          	sw	a3,620(s0)
    m->NextScheduledStopTime   = timenow + FutureTime;
    e882f22c:	2ad42623          	sw	a3,684(s0)
    m->NextBLEServiceTime      = 0;    // zero indicates inactive
    e882f230:	2a042823          	sw	zero,688(s0)
    m->RandomReconfirmDelay    = 0;
    e882f234:	26043c23          	sd	zero,632(s0)
    m->MPktNum                 = 0;
    e882f238:	28043023          	sd	zero,640(s0)
    m->NextCacheCheck          = timenow + FutureTime;
    e882f23c:	8936                	mv	s2,a3
    m->AnnounceOwner           = NonZeroTime(timenow + 60 * mDNSPlatformOneSecond);
    e882f23e:	87b2                	mv	a5,a2
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e882f240:	e211                	bnez	a2,e882f244 <mDNS_Init+0xfe>
    e882f242:	4785                	li	a5,1
    e882f244:	28f42623          	sw	a5,652(s0)
    m->rrcache_active          = 0;
    e882f248:	4795                	li	a5,5
    e882f24a:	1786                	slli	a5,a5,0x21
    e882f24c:	2ef43e23          	sd	a5,764(s0)
    e882f250:	6709                	lui	a4,0x2
    e882f252:	6785                	lui	a5,0x1
        m->rrcache_hash[slot]      = mDNSNULL;
    e882f254:	7579                	lui	a0,0xffffe
    e882f256:	2a878793          	addi	a5,a5,680 # 12a8 <memcmp-0xe87fed58>
    e882f25a:	a7470713          	addi	a4,a4,-1420 # 1a74 <memcmp-0xe87fe58c>
    e882f25e:	dc050513          	addi	a0,a0,-576 # ffffffffffffddc0 <__DRAM0_INF_BASE+0xffffffff0000ddc0>
    m->DelaySleep              = 0;
    e882f262:	28043823          	sd	zero,656(s0)
    m->Questions               = mDNSNULL;
    e882f266:	2a043c23          	sd	zero,696(s0)
    m->NewQuestions            = mDNSNULL;
    e882f26a:	2c043023          	sd	zero,704(s0)
    m->CurrentQuestion         = mDNSNULL;
    e882f26e:	2c043423          	sd	zero,712(s0)
    m->LocalOnlyQuestions      = mDNSNULL;
    e882f272:	2c043823          	sd	zero,720(s0)
    m->NewLocalOnlyQuestions   = mDNSNULL;
    e882f276:	2c043c23          	sd	zero,728(s0)
    m->RestartQuestion         = mDNSNULL;
    e882f27a:	2e043023          	sd	zero,736(s0)
    m->ValidationQuestion      = mDNSNULL;
    e882f27e:	2e043423          	sd	zero,744(s0)
    m->rrcache_size            = 0;
    e882f282:	2e043823          	sd	zero,752(s0)
    m->rrcache_free            = mDNSNULL;
    e882f286:	30043423          	sd	zero,776(s0)
    for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
    e882f28a:	97a2                	add	a5,a5,s0
    e882f28c:	9722                	add	a4,a4,s0
        m->rrcache_hash[slot]      = mDNSNULL;
    e882f28e:	8d01                	sub	a0,a0,s0
    e882f290:	62f5500b          	srd	zero,a0,a5,1
        m->rrcache_nextcheck[slot] = timenow + FutureTime;;
    e882f294:	5847d68b          	swia	a3,(a5),4,0
    for (slot = 0; slot < CACHE_HASH_SLOTS; slot++)
    e882f298:	fef71ce3          	bne	a4,a5,e882f290 <mDNS_Init+0x14a>
    mDNS_GrowCache_internal(m, rrcachestorage, rrcachesize);
    e882f29c:	8656                	mv	a2,s5
    e882f29e:	85a6                	mv	a1,s1
    e882f2a0:	8522                	mv	a0,s0
    e882f2a2:	b21ed0ef          	jal	ra,e881cdc2 <mDNS_GrowCache_internal>
    m->rrauth.rrauth_free            = mDNSNULL;
    e882f2a6:	6789                	lui	a5,0x2
    e882f2a8:	00f40733          	add	a4,s0,a5
    e882f2ac:	a8073423          	sd	zero,-1400(a4)
    for (slot = 0; slot < AUTH_HASH_SLOTS; slot++)
    e882f2b0:	670d                	lui	a4,0x3
    e882f2b2:	a9078793          	addi	a5,a5,-1392 # 1a90 <memcmp-0xe87fe570>
    e882f2b6:	a2870713          	addi	a4,a4,-1496 # 2a28 <memcmp-0xe87fd5d8>
    e882f2ba:	97a2                	add	a5,a5,s0
    e882f2bc:	9722                	add	a4,a4,s0
        m->rrauth.rrauth_hash[slot] = mDNSNULL;
    e882f2be:	7887d00b          	sdia	zero,(a5),8,0
    for (slot = 0; slot < AUTH_HASH_SLOTS; slot++)
    e882f2c2:	fef71ee3          	bne	a4,a5,e882f2be <mDNS_Init+0x178>
    m->Router                   = zeroAddr;
    e882f2c6:	00074717          	auipc	a4,0x74
    e882f2ca:	2ba70713          	addi	a4,a4,698 # e88a3580 <zeroAddr>
    e882f2ce:	6310                	ld	a2,0(a4)
    e882f2d0:	6714                	ld	a3,8(a4)
    e882f2d2:	4b18                	lw	a4,16(a4)
    m->hostlabel.c[0]          = 0;
    e882f2d4:	678d                	lui	a5,0x3
    e882f2d6:	97a2                	add	a5,a5,s0
    m->Router                   = zeroAddr;
    e882f2d8:	22e7a023          	sw	a4,544(a5) # 3220 <memcmp-0xe87fcde0>
    m->AdvertisedV4             = zeroAddr;
    e882f2dc:	22e7aa23          	sw	a4,564(a5)
    m->AdvertisedV6             = zeroAddr;
    e882f2e0:	24e7a423          	sw	a4,584(a5)
    m->ReverseMap.ThisQInterval = -1;
    e882f2e4:	577d                	li	a4,-1
    m->Router                   = zeroAddr;
    e882f2e6:	20c7b823          	sd	a2,528(a5)
    e882f2ea:	20d7bc23          	sd	a3,536(a5)
    m->AdvertisedV4             = zeroAddr;
    e882f2ee:	22c7b223          	sd	a2,548(a5)
    e882f2f2:	22d7b623          	sd	a3,556(a5)
    m->AdvertisedV6             = zeroAddr;
    e882f2f6:	22c7bc23          	sd	a2,568(a5)
    e882f2fa:	24d7b023          	sd	a3,576(a5)
    m->ReverseMap.ThisQInterval = -1;
    e882f2fe:	26e7a623          	sw	a4,620(a5)
    m->NextuDNSEvent            = timenow + FutureTime;
    e882f302:	1f27ac23          	sw	s2,504(a5)
    m->NextSRVUpdate            = timenow + FutureTime;
    e882f306:	1f27ae23          	sw	s2,508(a5)
    m->hostlabel.c[0]          = 0;
    e882f30a:	a6078423          	sb	zero,-1432(a5)
    m->nicelabel.c[0]          = 0;
    e882f30e:	a2078423          	sb	zero,-1496(a5)
    m->MulticastHostname.c[0]  = 0;
    e882f312:	aa078423          	sb	zero,-1368(a5)
    m->HIHardware.c[0]         = 0;
    e882f316:	ba078423          	sb	zero,-1112(a5)
    m->HISoftware.c[0]         = 0;
    e882f31a:	ca078423          	sb	zero,-856(a5)
    m->ResourceRecords         = mDNSNULL;
    e882f31e:	1a07bc23          	sd	zero,440(a5)
    m->DuplicateRecords        = mDNSNULL;
    e882f322:	1c07b023          	sd	zero,448(a5)
    m->NewLocalRecords         = mDNSNULL;
    e882f326:	1c07b423          	sd	zero,456(a5)
    m->NewLocalOnlyRecords     = mDNSfalse;
    e882f32a:	1c078c23          	sb	zero,472(a5)
    m->CurrentRecord           = mDNSNULL;
    e882f32e:	1c07b823          	sd	zero,464(a5)
    m->HostInterfaces          = mDNSNULL;
    e882f332:	1e07b023          	sd	zero,480(a5)
    m->ProbeFailTime           = 0;
    e882f336:	1e07b423          	sd	zero,488(a5)
    m->SuppressProbes          = 0;
    e882f33a:	1e07a823          	sw	zero,496(a5)
    m->DNSServers               = mDNSNULL;
    e882f33e:	2007b023          	sd	zero,512(a5)
    m->AuthInfoList             = mDNSNULL;
    e882f342:	2407b823          	sd	zero,592(a5)
    m->StaticHostname.c[0]      = 0;
    e882f346:	6491                	lui	s1,0x4
    e882f348:	94a2                	add	s1,s1,s0
    e882f34a:	90048423          	sb	zero,-1784(s1) # 3908 <memcmp-0xe87fc6f8>
    m->FQDN.c[0]                = 0;
    e882f34e:	a0048423          	sb	zero,-1528(s1)
    m->AutoTargetServices       = 0;
    e882f352:	6a95                	lui	s5,0x5
    m->Hostnames                = mDNSNULL;
    e882f354:	b004b423          	sd	zero,-1272(s1)
    m->ExtAddress               = zerov4Addr;
    e882f358:	00074797          	auipc	a5,0x74
    e882f35c:	28878793          	addi	a5,a5,648 # e88a35e0 <zerov4Addr>
    m->AutoTunnelNAT.clientContext = mDNSNULL;
    e882f360:	b604b023          	sd	zero,-1184(s1)
    m->WABBrowseQueriesCount    = 0;
    e882f364:	b604bc23          	sd	zero,-1160(s1)
    m->WABRegQueriesCount       = 0;
    e882f368:	b804a023          	sw	zero,-1152(s1)
    m->ExtAddress               = zerov4Addr;
    e882f36c:	439c                	lw	a5,0(a5)
    m->AutoTargetServices       = 0;
    e882f36e:	9aa2                	add	s5,s5,s0
    e882f370:	e40aa023          	sw	zero,-448(s5) # 4e40 <memcmp-0xe87fb1c0>
    m->PCPNonce[0]              = mDNSRandom(-1);
    e882f374:	557d                	li	a0,-1
    m->ExtAddress               = zerov4Addr;
    e882f376:	c0f4a423          	sw	a5,-1016(s1)
    m->retryGetAddr             = timenow + FutureTime; // absolute time when we retry
    e882f37a:	c124a223          	sw	s2,-1020(s1)
    m->LLQNAT.clientCallback    = mDNSNULL;
    e882f37e:	be04b023          	sd	zero,-1056(s1)
    m->LLQNAT.clientContext     = mDNSNULL;
    e882f382:	be04b423          	sd	zero,-1048(s1)
    m->NATTraversals            = mDNSNULL;
    e882f386:	be04b823          	sd	zero,-1040(s1)
    m->CurrentNATTraversal      = mDNSNULL;
    e882f38a:	be04bc23          	sd	zero,-1032(s1)
    m->retryIntervalGetAddr     = 0;    // delta between time sent and retry
    e882f38e:	c004a023          	sw	zero,-1024(s1)
    m->PCPNonce[0]              = mDNSRandom(-1);
    e882f392:	b77e30ef          	jal	ra,e8812f08 <mDNSRandom>
    e882f396:	c0a4a623          	sw	a0,-1012(s1)
    m->PCPNonce[1]              = mDNSRandom(-1);
    e882f39a:	557d                	li	a0,-1
    e882f39c:	b6de30ef          	jal	ra,e8812f08 <mDNSRandom>
    e882f3a0:	c0a4a823          	sw	a0,-1008(s1)
    m->PCPNonce[2]              = mDNSRandom(-1);
    e882f3a4:	557d                	li	a0,-1
    e882f3a6:	b63e30ef          	jal	ra,e8812f08 <mDNSRandom>
    e882f3aa:	c0a4aa23          	sw	a0,-1004(s1)
    m->UPnPRouterPort           = zeroIPPort;
    e882f3ae:	000a5783          	lhu	a5,0(s4)
    m->NATMcastRecvskt          = mDNSNULL;
    e882f3b2:	c004bc23          	sd	zero,-1000(s1)
    m->LastNATupseconds         = 0;
    e882f3b6:	c204a023          	sw	zero,-992(s1)
    m->LastNATReplyLocalTime    = timenow;
    e882f3ba:	c334a223          	sw	s3,-988(s1)
    m->LastNATMapResultCode     = NATErr_None;
    e882f3be:	c2049423          	sh	zero,-984(s1)
    m->UPnPInterfaceID          = 0;
    e882f3c2:	d004bc23          	sd	zero,-744(s1)
    m->SSDPSocket               = mDNSNULL;
    e882f3c6:	d204b023          	sd	zero,-736(s1)
    m->SSDPWANPPPConnection     = mDNSfalse;
    e882f3ca:	d2048423          	sb	zero,-728(s1)
    m->UPnPRouterPort           = zeroIPPort;
    e882f3ce:	d2f49523          	sh	a5,-726(s1)
    m->UPnPSOAPPort             = zeroIPPort;
    e882f3d2:	d2f49623          	sh	a5,-724(s1)
    m->UPnPRouterURL            = mDNSNULL;
    e882f3d6:	d204b823          	sd	zero,-720(s1)
    m->UPnPWANPPPConnection     = mDNSfalse;
    e882f3da:	d2048c23          	sb	zero,-712(s1)
    m->UPnPSOAPURL              = mDNSNULL;
    e882f3de:	d404b023          	sd	zero,-704(s1)
    m->UPnPRouterAddressString  = mDNSNULL;
    e882f3e2:	d404b423          	sd	zero,-696(s1)
    m->UPnPSOAPAddressString    = mDNSNULL;
    e882f3e6:	d404b823          	sd	zero,-688(s1)
    m->SPSType                  = 0;
    e882f3ea:	d604a823          	sw	zero,-656(s1)
    m->SPSFeatureFlags          = 0;
    e882f3ee:	d6049a23          	sh	zero,-652(s1)
    m->SPSProxyListChanged      = mDNSNULL;
    e882f3f2:	d604bc23          	sd	zero,-648(s1)
    m->SPSSocket                = mDNSNULL;
    e882f3f6:	d804b023          	sd	zero,-640(s1)
    result = mDNSPlatformInit(m);
    e882f3fa:	8522                	mv	a0,s0
    m->SPSBrowseCallback        = mDNSNULL;
    e882f3fc:	e00ab423          	sd	zero,-504(s5)
    m->ProxyRecords             = 0;
    e882f400:	e00aa823          	sw	zero,-496(s5)
    m->DNSPushServers           = mDNSNULL;
    e882f404:	d404bc23          	sd	zero,-680(s1)
    m->DNSPushZones             = mDNSNULL;
    e882f408:	d604b023          	sd	zero,-672(s1)
    result = mDNSPlatformInit(m);
    e882f40c:	1b4010ef          	jal	ra,e88305c0 <mDNSPlatformInit>
    e882f410:	892a                	mv	s2,a0
    uDNS_SetupDNSConfig(m);                     // Get initial DNS configuration
    e882f412:	8522                	mv	a0,s0
    e882f414:	ccaff0ef          	jal	ra,e882e8de <uDNS_SetupDNSConfig>
}
    e882f418:	70e2                	ld	ra,56(sp)
    e882f41a:	6422                	ld	s0,8(sp)
    e882f41c:	854a                	mv	a0,s2
    e882f41e:	64c2                	ld	s1,16(sp)
    e882f420:	6962                	ld	s2,24(sp)
    e882f422:	7982                	ld	s3,32(sp)
    e882f424:	7a22                	ld	s4,40(sp)
    e882f426:	7ac2                	ld	s5,48(sp)
    e882f428:	6121                	addi	sp,sp,64
    e882f42a:	8082                	ret

00000000e882f42c <mDNSCoreInitComplete>:

mDNSexport void mDNSCoreInitComplete(mDNS *const m, mStatus result)
{
    m->mDNSPlatformStatus = result;
    if (m->MainCallback)
    e882f42c:	711c                	ld	a5,32(a0)
    m->mDNSPlatformStatus = result;
    e882f42e:	c90c                	sw	a1,16(a0)
    if (m->MainCallback)
    e882f430:	cfad                	beqz	a5,e882f4aa <mDNSCoreInitComplete+0x7e>
{
    e882f432:	1141                	addi	sp,sp,-16
    {
        mDNS_Lock(m);
    e882f434:	00079597          	auipc	a1,0x79
    e882f438:	a8c58593          	addi	a1,a1,-1396 # e88a7ec0 <__func__.13110>
{
    e882f43c:	e022                	sd	s0,0(sp)
    e882f43e:	e406                	sd	ra,8(sp)
    e882f440:	842a                	mv	s0,a0
        mDNS_Lock(m);
    e882f442:	dc0e60ef          	jal	ra,e8815a02 <mDNS_Lock_>
        mDNS_DropLockBeforeCallback();      // Allow client to legally make mDNS API calls from the callback
    e882f446:	585c                	lw	a5,52(s0)
    e882f448:	5814                	lw	a3,48(s0)
    e882f44a:	0017871b          	addiw	a4,a5,1
    e882f44e:	d858                	sw	a4,52(s0)
    e882f450:	00d70d63          	beq	a4,a3,e882f46a <mDNSCoreInitComplete+0x3e>
    e882f454:	00079617          	auipc	a2,0x79
    e882f458:	a6c60613          	addi	a2,a2,-1428 # e88a7ec0 <__func__.13110>
    e882f45c:	00075597          	auipc	a1,0x75
    e882f460:	90c58593          	addi	a1,a1,-1780 # e88a3d68 <end.8789+0x6c0>
    e882f464:	4501                	li	a0,0
    e882f466:	046000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->MainCallback(m, mStatus_NoError);
    e882f46a:	701c                	ld	a5,32(s0)
    e882f46c:	4581                	li	a1,0
    e882f46e:	8522                	mv	a0,s0
    e882f470:	9782                	jalr	a5
        mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e882f472:	5814                	lw	a3,48(s0)
    e882f474:	5858                	lw	a4,52(s0)
    e882f476:	00e68d63          	beq	a3,a4,e882f490 <mDNSCoreInitComplete+0x64>
    e882f47a:	00079617          	auipc	a2,0x79
    e882f47e:	a4660613          	addi	a2,a2,-1466 # e88a7ec0 <__func__.13110>
    e882f482:	00075597          	auipc	a1,0x75
    e882f486:	92658593          	addi	a1,a1,-1754 # e88a3da8 <end.8789+0x700>
    e882f48a:	4501                	li	a0,0
    e882f48c:	020000ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882f490:	585c                	lw	a5,52(s0)
        mDNS_Unlock(m);
    e882f492:	8522                	mv	a0,s0
    e882f494:	00079597          	auipc	a1,0x79
    e882f498:	a2c58593          	addi	a1,a1,-1492 # e88a7ec0 <__func__.13110>
        mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e882f49c:	37fd                	addiw	a5,a5,-1
    e882f49e:	d85c                	sw	a5,52(s0)
    }
}
    e882f4a0:	6402                	ld	s0,0(sp)
    e882f4a2:	60a2                	ld	ra,8(sp)
    e882f4a4:	0141                	addi	sp,sp,16
        mDNS_Unlock(m);
    e882f4a6:	e26e606f          	j	e8815acc <mDNS_Unlock_>
    e882f4aa:	8082                	ret

00000000e882f4ac <LogMsgWithLevel>:
void debugf_(const char *format, ...)       LOG_HELPER_BODY(MDNS_LOG_DEBUG)
#endif

// Log message with default "mDNSResponder" ident string at the start
mDNSexport void LogMsgWithLevel(mDNSLogLevel_t logLevel, const char *format, ...)
LOG_HELPER_BODY(logLevel)
    e882f4ac:	7139                	addi	sp,sp,-64
    e882f4ae:	fcf1570b          	sdd	a4,a5,(sp),2,4
    e882f4b2:	081c                	addi	a5,sp,16
    e882f4b4:	fad1560b          	sdd	a2,a3,(sp),1,4
    e882f4b8:	ff11580b          	sdd	a6,a7,(sp),3,4
    e882f4bc:	e43e                	sd	a5,8(sp)
    e882f4be:	6121                	addi	sp,sp,64
    e882f4c0:	8082                	ret

00000000e882f4c2 <FreePosixNetworkInterface>:
}

// Frees the specified PosixNetworkInterface structure. The underlying
// interface must have already been deregistered with the mDNS core.
mDNSlocal void FreePosixNetworkInterface(PosixNetworkInterface *intf)
{
    e882f4c2:	1141                	addi	sp,sp,-16
    e882f4c4:	e022                	sd	s0,0(sp)
    e882f4c6:	e406                	sd	ra,8(sp)
    e882f4c8:	842a                	mv	s0,a0
    int rv;
    assert(intf != NULL);
    e882f4ca:	e11d                	bnez	a0,e882f4f0 <FreePosixNetworkInterface+0x2e>
    e882f4cc:	02f00593          	li	a1,47
    e882f4d0:	0007c517          	auipc	a0,0x7c
    e882f4d4:	73850513          	addi	a0,a0,1848 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882f4d8:	6a14c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882f4dc:	00150593          	addi	a1,a0,1
    e882f4e0:	24e00613          	li	a2,590
    e882f4e4:	00071517          	auipc	a0,0x71
    e882f4e8:	ccc50513          	addi	a0,a0,-820 # e88a01b0 <TWO52+0x5b8>
    e882f4ec:	5db4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (intf->intfName != NULL) free((void *)intf->intfName);
    e882f4f0:	6789                	lui	a5,0x2
    e882f4f2:	97a2                	add	a5,a5,s0
    e882f4f4:	a787b503          	ld	a0,-1416(a5) # 1a78 <memcmp-0xe87fe588>
    e882f4f8:	c119                	beqz	a0,e882f4fe <FreePosixNetworkInterface+0x3c>
    e882f4fa:	6074c0ef          	jal	ra,e887c300 <eLIBs_free>
    if (intf->multicastSocket4 != -1)
    e882f4fe:	6789                	lui	a5,0x2
    e882f500:	97a2                	add	a5,a5,s0
    e882f502:	a8c7a503          	lw	a0,-1396(a5) # 1a8c <memcmp-0xe87fe574>
    e882f506:	57fd                	li	a5,-1
    e882f508:	02f50763          	beq	a0,a5,e882f536 <FreePosixNetworkInterface+0x74>
    {
        rv = close(intf->multicastSocket4);
    e882f50c:	497550ef          	jal	ra,e88851a2 <lwip_close>
        assert(rv == 0);
    e882f510:	c11d                	beqz	a0,e882f536 <FreePosixNetworkInterface+0x74>
    e882f512:	02f00593          	li	a1,47
    e882f516:	0007c517          	auipc	a0,0x7c
    e882f51a:	6f250513          	addi	a0,a0,1778 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882f51e:	65b4c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882f522:	00150593          	addi	a1,a0,1
    e882f526:	25300613          	li	a2,595
    e882f52a:	00071517          	auipc	a0,0x71
    e882f52e:	c8650513          	addi	a0,a0,-890 # e88a01b0 <TWO52+0x5b8>
    e882f532:	5954c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    }
#if HAVE_IPV6
    if (intf->multicastSocket6 != -1)
    e882f536:	6789                	lui	a5,0x2
    e882f538:	97a2                	add	a5,a5,s0
    e882f53a:	a907a503          	lw	a0,-1392(a5) # 1a90 <memcmp-0xe87fe570>
    e882f53e:	57fd                	li	a5,-1
    e882f540:	02f50763          	beq	a0,a5,e882f56e <FreePosixNetworkInterface+0xac>
    {
        rv = close(intf->multicastSocket6);
    e882f544:	45f550ef          	jal	ra,e88851a2 <lwip_close>
        assert(rv == 0);
    e882f548:	c11d                	beqz	a0,e882f56e <FreePosixNetworkInterface+0xac>
    e882f54a:	02f00593          	li	a1,47
    e882f54e:	0007c517          	auipc	a0,0x7c
    e882f552:	6ba50513          	addi	a0,a0,1722 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882f556:	6234c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882f55a:	00150593          	addi	a1,a0,1
    e882f55e:	25900613          	li	a2,601
    e882f562:	00071517          	auipc	a0,0x71
    e882f566:	c4e50513          	addi	a0,a0,-946 # e88a01b0 <TWO52+0x5b8>
    e882f56a:	55d4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    }
#endif

    free(intf);
    e882f56e:	8522                	mv	a0,s0
    return;
    // Move interface to the RecentInterfaces list for a minute
    intf->LastSeen = mDNSPlatformUTC();
    intf->coreIntf.next = &gRecentInterfaces->coreIntf;
    gRecentInterfaces = intf;
}
    e882f570:	6402                	ld	s0,0(sp)
    e882f572:	60a2                	ld	ra,8(sp)
    e882f574:	0141                	addi	sp,sp,16
    free(intf);
    e882f576:	58b4c06f          	j	e887c300 <eLIBs_free>

00000000e882f57a <ClearInterfaceList>:

// Grab the first interface, deregister it, free it, and repeat until done.
mDNSlocal void ClearInterfaceList(mDNS *const m)
{
    e882f57a:	7139                	addi	sp,sp,-64
    e882f57c:	ec4a                	sd	s2,24(sp)
    e882f57e:	fc06                	sd	ra,56(sp)
    e882f580:	e422                	sd	s0,8(sp)
    e882f582:	e826                	sd	s1,16(sp)
    e882f584:	f04e                	sd	s3,32(sp)
    e882f586:	f452                	sd	s4,40(sp)
    e882f588:	f856                	sd	s5,48(sp)
    e882f58a:	892a                	mv	s2,a0
    assert(m != NULL);
    e882f58c:	e11d                	bnez	a0,e882f5b2 <ClearInterfaceList+0x38>
    e882f58e:	02f00593          	li	a1,47
    e882f592:	0007c517          	auipc	a0,0x7c
    e882f596:	67650513          	addi	a0,a0,1654 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882f59a:	5df4c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882f59e:	00150593          	addi	a1,a0,1
    e882f5a2:	26800613          	li	a2,616
    e882f5a6:	00071517          	auipc	a0,0x71
    e882f5aa:	c0a50513          	addi	a0,a0,-1014 # e88a01b0 <TWO52+0x5b8>
    e882f5ae:	5194c0ef          	jal	ra,e887c2c6 <eLIBs_printf>

    while (m->HostInterfaces)
    e882f5b2:	648d                	lui	s1,0x3
    e882f5b4:	94ca                	add	s1,s1,s2
    {
        PosixNetworkInterface *intf = (PosixNetworkInterface*)(m->HostInterfaces);
        mDNS_DeregisterInterface(m, &intf->coreIntf, NormalActivation);
        if (gMDNSPlatformPosixVerboseLevel > 0) printf("Deregistered interface %s\n", intf->intfName);
    e882f5b6:	000b4997          	auipc	s3,0xb4
    e882f5ba:	57a98993          	addi	s3,s3,1402 # e88e3b30 <gMDNSPlatformPosixVerboseLevel>
    e882f5be:	6a09                	lui	s4,0x2
    e882f5c0:	0007ca97          	auipc	s5,0x7c
    e882f5c4:	628a8a93          	addi	s5,s5,1576 # e88abbe8 <mDNS_DomainTypeNames+0x2238>
    while (m->HostInterfaces)
    e882f5c8:	1e04b403          	ld	s0,480(s1) # 31e0 <memcmp-0xe87fce20>
    e882f5cc:	e415                	bnez	s0,e882f5f8 <ClearInterfaceList+0x7e>
        FreePosixNetworkInterface(intf);
    }
    num_registered_interfaces = 0;
    num_pkts_accepted = 0;
    num_pkts_rejected = 0;
}
    e882f5ce:	70e2                	ld	ra,56(sp)
    e882f5d0:	6422                	ld	s0,8(sp)
    num_registered_interfaces = 0;
    e882f5d2:	000b4797          	auipc	a5,0xb4
    e882f5d6:	5607ab23          	sw	zero,1398(a5) # e88e3b48 <num_registered_interfaces>
    num_pkts_accepted = 0;
    e882f5da:	000b4797          	auipc	a5,0xb4
    e882f5de:	5607a323          	sw	zero,1382(a5) # e88e3b40 <num_pkts_accepted>
    num_pkts_rejected = 0;
    e882f5e2:	000b4797          	auipc	a5,0xb4
    e882f5e6:	5607a123          	sw	zero,1378(a5) # e88e3b44 <num_pkts_rejected>
}
    e882f5ea:	64c2                	ld	s1,16(sp)
    e882f5ec:	6962                	ld	s2,24(sp)
    e882f5ee:	7982                	ld	s3,32(sp)
    e882f5f0:	7a22                	ld	s4,40(sp)
    e882f5f2:	7ac2                	ld	s5,48(sp)
    e882f5f4:	6121                	addi	sp,sp,64
    e882f5f6:	8082                	ret
        mDNS_DeregisterInterface(m, &intf->coreIntf, NormalActivation);
    e882f5f8:	4605                	li	a2,1
    e882f5fa:	85a2                	mv	a1,s0
    e882f5fc:	854a                	mv	a0,s2
    e882f5fe:	cd7fb0ef          	jal	ra,e882b2d4 <mDNS_DeregisterInterface>
        if (gMDNSPlatformPosixVerboseLevel > 0) printf("Deregistered interface %s\n", intf->intfName);
    e882f602:	0009a783          	lw	a5,0(s3)
    e882f606:	00f05963          	blez	a5,e882f618 <ClearInterfaceList+0x9e>
    e882f60a:	014407b3          	add	a5,s0,s4
    e882f60e:	a787b583          	ld	a1,-1416(a5)
    e882f612:	8556                	mv	a0,s5
    e882f614:	4b34c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        FreePosixNetworkInterface(intf);
    e882f618:	8522                	mv	a0,s0
    e882f61a:	ea9ff0ef          	jal	ra,e882f4c2 <FreePosixNetworkInterface>
    e882f61e:	b76d                	j	e882f5c8 <ClearInterfaceList+0x4e>

00000000e882f620 <SockAddrTomDNSAddr>:
    switch (sa->sa_family)
    e882f620:	00154783          	lbu	a5,1(a0)
    e882f624:	4709                	li	a4,2
    e882f626:	04e78063          	beq	a5,a4,e882f666 <SockAddrTomDNSAddr+0x46>
    e882f62a:	4729                	li	a4,10
    e882f62c:	04e78763          	beq	a5,a4,e882f67a <SockAddrTomDNSAddr+0x5a>
		if(mDNSIPv6AddressIsZero(*(mDNSv6Addr*)&sin6->sin6_addr))
    e882f630:	e2e5478b          	lwd	a5,a4,(a0),1,3
    e882f634:	8fd9                	or	a5,a5,a4
    e882f636:	4918                	lw	a4,16(a0)
    e882f638:	8fd9                	or	a5,a5,a4
    e882f63a:	4958                	lw	a4,20(a0)
    e882f63c:	8fd9                	or	a5,a5,a4
    e882f63e:	2781                	sext.w	a5,a5
    e882f640:	e7b1                	bnez	a5,e882f68c <SockAddrTomDNSAddr+0x6c>
		   ipAddr->type 					= mDNSAddrType_IPv6;
    e882f642:	4799                	li	a5,6
    e882f644:	c19c                	sw	a5,0(a1)
     	   ipAddr->ip.v6                    = AllDNSLinkGroup_v6.ip.v6;
    e882f646:	00072797          	auipc	a5,0x72
    e882f64a:	50278793          	addi	a5,a5,1282 # e88a1b48 <AllDNSLinkGroup_v6>
    e882f64e:	0047b703          	ld	a4,4(a5)
    e882f652:	00c7b783          	ld	a5,12(a5)
    e882f656:	00e5b223          	sd	a4,4(a1)
    e882f65a:	00f5b623          	sd	a5,12(a1)
        if (ipPort) ipPort->NotAnInteger = 0;
    e882f65e:	c219                	beqz	a2,e882f664 <SockAddrTomDNSAddr+0x44>
    e882f660:	00061023          	sh	zero,0(a2)
}
    e882f664:	8082                	ret
        ipAddr->type                     = mDNSAddrType_IPv4;
    e882f666:	4791                	li	a5,4
    e882f668:	c19c                	sw	a5,0(a1)
        ipAddr->ip.v4.NotAnInteger       = sin->sin_addr.s_addr;
    e882f66a:	415c                	lw	a5,4(a0)
    e882f66c:	c1dc                	sw	a5,4(a1)
        if (ipPort) ipPort->NotAnInteger = sin6->sin6_port;
    e882f66e:	da7d                	beqz	a2,e882f664 <SockAddrTomDNSAddr+0x44>
    e882f670:	00255783          	lhu	a5,2(a0)
    e882f674:	00f61023          	sh	a5,0(a2)
    e882f678:	8082                	ret
        ipAddr->type                     = mDNSAddrType_IPv6;
    e882f67a:	4799                	li	a5,6
    e882f67c:	c19c                	sw	a5,0(a1)
        ipAddr->ip.v6                    = *(mDNSv6Addr*)&sin6->sin6_addr;
    e882f67e:	651c                	ld	a5,8(a0)
    e882f680:	00f5b223          	sd	a5,4(a1)
    e882f684:	691c                	ld	a5,16(a0)
    e882f686:	00f5b623          	sd	a5,12(a1)
    e882f68a:	b7d5                	j	e882f66e <SockAddrTomDNSAddr+0x4e>
			ipAddr->type = mDNSAddrType_None;
    e882f68c:	0005a023          	sw	zero,0(a1)
    e882f690:	b7f9                	j	e882f65e <SockAddrTomDNSAddr+0x3e>

00000000e882f692 <SocketDataReady>:
{
    e882f692:	c2010113          	addi	sp,sp,-992
    e882f696:	3c913423          	sd	s1,968(sp)
    e882f69a:	3d213023          	sd	s2,960(sp)
    e882f69e:	3b313c23          	sd	s3,952(sp)
    e882f6a2:	3b413823          	sd	s4,944(sp)
    e882f6a6:	3c113c23          	sd	ra,984(sp)
    e882f6aa:	3c813823          	sd	s0,976(sp)
    e882f6ae:	3b513423          	sd	s5,936(sp)
    e882f6b2:	3b613023          	sd	s6,928(sp)
    e882f6b6:	39713c23          	sd	s7,920(sp)
    e882f6ba:	39813823          	sd	s8,912(sp)
    e882f6be:	7379                	lui	t1,0xffffe
    e882f6c0:	911a                	add	sp,sp,t1
    e882f6c2:	892a                	mv	s2,a0
    e882f6c4:	84ae                	mv	s1,a1
    e882f6c6:	89b2                	mv	s3,a2
    e882f6c8:	4a01                	li	s4,0
    const mDNSInterfaceID InterfaceID = intf ? intf->coreIntf.InterfaceID : NULL;
    e882f6ca:	c589                	beqz	a1,e882f6d4 <SocketDataReady+0x42>
    e882f6cc:	6789                	lui	a5,0x2
    e882f6ce:	97ae                	add	a5,a5,a1
    e882f6d0:	9f07ba03          	ld	s4,-1552(a5) # 19f0 <memcmp-0xe87fe610>
    assert(m    != NULL);
    e882f6d4:	02091463          	bnez	s2,e882f6fc <SocketDataReady+0x6a>
    e882f6d8:	02f00593          	li	a1,47
    e882f6dc:	0007c517          	auipc	a0,0x7c
    e882f6e0:	52c50513          	addi	a0,a0,1324 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882f6e4:	4954c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882f6e8:	00150593          	addi	a1,a0,1
    e882f6ec:	0f100613          	li	a2,241
    e882f6f0:	00071517          	auipc	a0,0x71
    e882f6f4:	ac050513          	addi	a0,a0,-1344 # e88a01b0 <TWO52+0x5b8>
    e882f6f8:	3cf4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(skt  >= 0);
    e882f6fc:	0209d463          	bgez	s3,e882f724 <SocketDataReady+0x92>
    e882f700:	02f00593          	li	a1,47
    e882f704:	0007c517          	auipc	a0,0x7c
    e882f708:	50450513          	addi	a0,a0,1284 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882f70c:	46d4c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882f710:	00150593          	addi	a1,a0,1
    e882f714:	0f200613          	li	a2,242
    e882f718:	00071517          	auipc	a0,0x71
    e882f71c:	a9850513          	addi	a0,a0,-1384 # e88a01b0 <TWO52+0x5b8>
    e882f720:	3a74c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    packetLen = recvfrom_flags(skt, &packet, sizeof(packet), &flags, (struct sockaddr *) &from, &fromLen, &packetInfo, &ttl);
    e882f724:	6c09                	lui	s8,0x2
    e882f726:	390c0713          	addi	a4,s8,912 # 2390 <memcmp-0xe87fdc70>
    fromLen = sizeof(from);
    e882f72a:	7479                	lui	s0,0xffffe
    packetLen = recvfrom_flags(skt, &packet, sizeof(packet), &flags, (struct sockaddr *) &from, &fromLen, &packetInfo, &ttl);
    e882f72c:	970a                	add	a4,a4,sp
    e882f72e:	cb840b93          	addi	s7,s0,-840 # ffffffffffffdcb8 <__DRAM0_INF_BASE+0xffffffff0000dcb8>
    fromLen = sizeof(from);
    e882f732:	47f1                	li	a5,28
    packetLen = recvfrom_flags(skt, &packet, sizeof(packet), &flags, (struct sockaddr *) &from, &fromLen, &packetInfo, &ttl);
    e882f734:	9bba                	add	s7,s7,a4
    e882f736:	390c0713          	addi	a4,s8,912
    e882f73a:	970a                	add	a4,a4,sp
    fromLen = sizeof(from);
    e882f73c:	c83e                	sw	a5,16(sp)
    packetLen = recvfrom_flags(skt, &packet, sizeof(packet), &flags, (struct sockaddr *) &from, &fromLen, &packetInfo, &ttl);
    e882f73e:	c7740893          	addi	a7,s0,-905
    e882f742:	390c0793          	addi	a5,s8,912
    e882f746:	978a                	add	a5,a5,sp
    e882f748:	98ba                	add	a7,a7,a4
    e882f74a:	390c0613          	addi	a2,s8,912
    e882f74e:	390c0713          	addi	a4,s8,912
    e882f752:	390c0513          	addi	a0,s8,912
    e882f756:	970a                	add	a4,a4,sp
    e882f758:	960a                	add	a2,a2,sp
    e882f75a:	950a                	add	a0,a0,sp
    e882f75c:	cd840b13          	addi	s6,s0,-808
    e882f760:	9b3e                	add	s6,s6,a5
    e882f762:	c8440693          	addi	a3,s0,-892
    e882f766:	c8040793          	addi	a5,s0,-896
    e882f76a:	d0840593          	addi	a1,s0,-760
    e882f76e:	6a89                	lui	s5,0x2
    e882f770:	97ba                	add	a5,a5,a4
    e882f772:	96b2                	add	a3,a3,a2
    e882f774:	95aa                	add	a1,a1,a0
    e882f776:	885a                	mv	a6,s6
    e882f778:	854e                	mv	a0,s3
    e882f77a:	875e                	mv	a4,s7
    e882f77c:	2f8a8613          	addi	a2,s5,760 # 22f8 <memcmp-0xe87fdd08>
    flags   = 0;
    e882f780:	ca02                	sw	zero,20(sp)
    packetLen = recvfrom_flags(skt, &packet, sizeof(packet), &flags, (struct sockaddr *) &from, &fromLen, &packetInfo, &ttl);
    e882f782:	336010ef          	jal	ra,e8830ab8 <recvfrom_flags>
    e882f786:	89aa                	mv	s3,a0
    if (packetLen >= 0)
    e882f788:	0e054c63          	bltz	a0,e882f880 <SocketDataReady+0x1ee>
        SockAddrTomDNSAddr((struct sockaddr*)&from, &senderAddr, &senderPort);
    e882f78c:	390c0793          	addi	a5,s8,912
    e882f790:	978a                	add	a5,a5,sp
    e882f792:	c7840613          	addi	a2,s0,-904
    e882f796:	963e                	add	a2,a2,a5
    e882f798:	390c0793          	addi	a5,s8,912
    e882f79c:	978a                	add	a5,a5,sp
    e882f79e:	c8840593          	addi	a1,s0,-888
    e882f7a2:	95be                	add	a1,a1,a5
    e882f7a4:	855e                	mv	a0,s7
    e882f7a6:	e7bff0ef          	jal	ra,e882f620 <SockAddrTomDNSAddr>
        SockAddrTomDNSAddr((struct sockaddr*)&packetInfo.ipi_addr, &destAddr, NULL);
    e882f7aa:	ca040413          	addi	s0,s0,-864
    e882f7ae:	390c0793          	addi	a5,s8,912
    e882f7b2:	978a                	add	a5,a5,sp
    e882f7b4:	943e                	add	s0,s0,a5
    e882f7b6:	4601                	li	a2,0
    e882f7b8:	85a2                	mv	a1,s0
    e882f7ba:	855a                	mv	a0,s6
    e882f7bc:	e65ff0ef          	jal	ra,e882f620 <SockAddrTomDNSAddr>
        if (!intf)
    e882f7c0:	e8a1                	bnez	s1,e882f810 <SocketDataReady+0x17e>
            if (mDNSAddrIsDNSMulticast(&destAddr)) packetLen = -1;
    e882f7c2:	8522                	mv	a0,s0
    e882f7c4:	fcae30ef          	jal	ra,e8812f8e <mDNSAddrIsDNSMulticast>
    e882f7c8:	ed45                	bnez	a0,e882f880 <SocketDataReady+0x1ee>
        mDNSCoreReceive(m, &packet, (mDNSu8 *)&packet + packetLen,
    e882f7ca:	6609                	lui	a2,0x2
    e882f7cc:	39060713          	addi	a4,a2,912 # 2390 <memcmp-0xe87fdc70>
    e882f7d0:	75f9                	lui	a1,0xffffe
    e882f7d2:	970a                	add	a4,a4,sp
    e882f7d4:	ca058793          	addi	a5,a1,-864 # ffffffffffffdca0 <__DRAM0_INF_BASE+0xffffffff0000dca0>
    e882f7d8:	c8858693          	addi	a3,a1,-888
    e882f7dc:	d0858593          	addi	a1,a1,-760
    e882f7e0:	95ba                	add	a1,a1,a4
    e882f7e2:	00073717          	auipc	a4,0x73
    e882f7e6:	d7670713          	addi	a4,a4,-650 # e88a2558 <MulticastDNSPort>
    e882f7ea:	00075803          	lhu	a6,0(a4)
    e882f7ee:	39060713          	addi	a4,a2,912
    e882f7f2:	970a                	add	a4,a4,sp
    e882f7f4:	39060613          	addi	a2,a2,912
    e882f7f8:	960a                	add	a2,a2,sp
    e882f7fa:	97ba                	add	a5,a5,a4
    e882f7fc:	00815703          	lhu	a4,8(sp)
    e882f800:	96b2                	add	a3,a3,a2
    e882f802:	88d2                	mv	a7,s4
    e882f804:	01358633          	add	a2,a1,s3
    e882f808:	854a                	mv	a0,s2
    e882f80a:	c65fa0ef          	jal	ra,e882a46e <mDNSCoreReceive>
    e882f80e:	a88d                	j	e882f880 <SocketDataReady+0x1ee>
            if      (packetInfo.ipi_ifname[0] != 0) reject = (strcmp(packetInfo.ipi_ifname, intf->intfName) != 0);
    e882f810:	08814783          	lbu	a5,136(sp)
    e882f814:	000b4417          	auipc	s0,0xb4
    e882f818:	32c40413          	addi	s0,s0,812 # e88e3b40 <num_pkts_accepted>
    e882f81c:	cbd9                	beqz	a5,e882f8b2 <SocketDataReady+0x220>
    e882f81e:	94d6                	add	s1,s1,s5
    e882f820:	a784b583          	ld	a1,-1416(s1)
    e882f824:	020b0513          	addi	a0,s6,32
    e882f828:	3154c0ef          	jal	ra,e887c33c <eLIBs_strcmp>
            else if (packetInfo.ipi_ifindex != -1) reject = (packetInfo.ipi_ifindex != intf->index);
    e882f82c:	00a03533          	snez	a0,a0
            if (reject)
    e882f830:	c951                	beqz	a0,e882f8c4 <SocketDataReady+0x232>
                num_pkts_rejected++;
    e882f832:	000b4797          	auipc	a5,0xb4
    e882f836:	31278793          	addi	a5,a5,786 # e88e3b44 <num_pkts_rejected>
    e882f83a:	438c                	lw	a1,0(a5)
    e882f83c:	4010                	lw	a2,0(s0)
    e882f83e:	0015869b          	addiw	a3,a1,1
    e882f842:	c394                	sw	a3,0(a5)
                if (num_pkts_rejected > (num_pkts_accepted + 1) * (num_registered_interfaces + 1) * 2)
    e882f844:	000b4797          	auipc	a5,0xb4
    e882f848:	30478793          	addi	a5,a5,772 # e88e3b48 <num_registered_interfaces>
    e882f84c:	439c                	lw	a5,0(a5)
    e882f84e:	0016071b          	addiw	a4,a2,1
    e882f852:	2785                	addiw	a5,a5,1
    e882f854:	02e787bb          	mulw	a5,a5,a4
    e882f858:	0017979b          	slliw	a5,a5,0x1
    e882f85c:	02d7d263          	bge	a5,a3,e882f880 <SocketDataReady+0x1ee>
                    printf("*** WARNING: Received %d packets; Accepted %d packets; Rejected %d packets because of interface mismatch\n",
    e882f860:	00c685bb          	addw	a1,a3,a2
    e882f864:	0007c517          	auipc	a0,0x7c
    e882f868:	65c50513          	addi	a0,a0,1628 # e88abec0 <mDNS_DomainTypeNames+0x2510>
    e882f86c:	25b4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
                    num_pkts_accepted = 0;
    e882f870:	000b4797          	auipc	a5,0xb4
    e882f874:	2c07a823          	sw	zero,720(a5) # e88e3b40 <num_pkts_accepted>
                    num_pkts_rejected = 0;
    e882f878:	000b4797          	auipc	a5,0xb4
    e882f87c:	2c07a623          	sw	zero,716(a5) # e88e3b44 <num_pkts_rejected>
}
    e882f880:	6309                	lui	t1,0x2
    e882f882:	911a                	add	sp,sp,t1
    e882f884:	3d813083          	ld	ra,984(sp)
    e882f888:	3d013403          	ld	s0,976(sp)
    e882f88c:	3c813483          	ld	s1,968(sp)
    e882f890:	3c013903          	ld	s2,960(sp)
    e882f894:	3b813983          	ld	s3,952(sp)
    e882f898:	3b013a03          	ld	s4,944(sp)
    e882f89c:	3a813a83          	ld	s5,936(sp)
    e882f8a0:	3a013b03          	ld	s6,928(sp)
    e882f8a4:	39813b83          	ld	s7,920(sp)
    e882f8a8:	39013c03          	ld	s8,912(sp)
    e882f8ac:	3e010113          	addi	sp,sp,992
    e882f8b0:	8082                	ret
            else if (packetInfo.ipi_ifindex != -1) reject = (packetInfo.ipi_ifindex != intf->index);
    e882f8b2:	479a                	lw	a5,132(sp)
    e882f8b4:	577d                	li	a4,-1
    e882f8b6:	00e78763          	beq	a5,a4,e882f8c4 <SocketDataReady+0x232>
    e882f8ba:	94d6                	add	s1,s1,s5
    e882f8bc:	a884a503          	lw	a0,-1400(s1)
    e882f8c0:	8d1d                	sub	a0,a0,a5
    e882f8c2:	b7ad                	j	e882f82c <SocketDataReady+0x19a>
                num_pkts_accepted++;
    e882f8c4:	401c                	lw	a5,0(s0)
    e882f8c6:	2785                	addiw	a5,a5,1
    e882f8c8:	c01c                	sw	a5,0(s0)
    e882f8ca:	b701                	j	e882f7ca <SocketDataReady+0x138>

00000000e882f8cc <mDNSPosixAddToFDSet>:
    return 0;
}

mDNSlocal void mDNSPosixAddToFDSet(int *nfds, fd_set *readfds, int s)
{
    if (*nfds < s + 1) *nfds = s + 1;
    e882f8cc:	4114                	lw	a3,0(a0)
    e882f8ce:	0016071b          	addiw	a4,a2,1
    e882f8d2:	00e6d363          	bge	a3,a4,e882f8d8 <mDNSPosixAddToFDSet+0xc>
    e882f8d6:	c118                	sw	a4,0(a0)
    FD_SET(s, readfds);
    e882f8d8:	03100793          	li	a5,49
    e882f8dc:	00c7ed63          	bltu	a5,a2,e882f8f6 <mDNSPosixAddToFDSet+0x2a>
    e882f8e0:	4785                	li	a5,1
    e882f8e2:	40365713          	srai	a4,a2,0x3
    e882f8e6:	8a1d                	andi	a2,a2,7
    e882f8e8:	00c7963b          	sllw	a2,a5,a2
    e882f8ec:	80e5c78b          	lrbu	a5,a1,a4,0
    e882f8f0:	8e5d                	or	a2,a2,a5
    e882f8f2:	00e5d60b          	srb	a2,a1,a4,0
}
    e882f8f6:	8082                	ret

00000000e882f8f8 <mDNSPlatformTCPSocket>:
}
    e882f8f8:	4501                	li	a0,0
    e882f8fa:	8082                	ret

00000000e882f8fc <mDNSPlatformTCPGetFD>:
}
    e882f8fc:	557d                	li	a0,-1
    e882f8fe:	8082                	ret

00000000e882f900 <mDNSPlatformTCPConnect>:
}
    e882f900:	7541                	lui	a0,0xffff0
    e882f902:	1561                	addi	a0,a0,-8
    e882f904:	8082                	ret

00000000e882f906 <mDNSPlatformTCPCloseConnection>:
    e882f906:	8082                	ret

00000000e882f908 <mDNSPlatformReadTCP>:
}
    e882f908:	4501                	li	a0,0
    e882f90a:	8082                	ret

00000000e882f90c <mDNSPlatformWriteTCP>:
}
    e882f90c:	4501                	li	a0,0
    e882f90e:	8082                	ret

00000000e882f910 <mDNSPlatformUDPSocket>:
}
    e882f910:	4501                	li	a0,0
    e882f912:	8082                	ret

00000000e882f914 <mDNSPlatformUDPClose>:
    e882f914:	8082                	ret

00000000e882f916 <mDNSPlatformUpdateProxyList>:
    e882f916:	8082                	ret

00000000e882f918 <mDNSPlatformSendRawPacket>:
}
    e882f918:	8082                	ret

00000000e882f91a <mDNSPlatformSetAllowSleep>:
}
    e882f91a:	8082                	ret

00000000e882f91c <mDNSPlatformSetDNSConfig>:
}
    e882f91c:	4505                	li	a0,1
    e882f91e:	8082                	ret

00000000e882f920 <mDNSPlatformGetPrimaryInterface>:
}
    e882f920:	7541                	lui	a0,0xffff0
    e882f922:	1561                	addi	a0,a0,-8
    e882f924:	8082                	ret

00000000e882f926 <mDNSPlatformDynDNSHostNameStatusChanged>:
}
    e882f926:	8082                	ret

00000000e882f928 <mDNSPlatformInterfaceIDfromInterfaceIndex>:
{
    e882f928:	1101                	addi	sp,sp,-32
    e882f92a:	e422                	sd	s0,8(sp)
    e882f92c:	e826                	sd	s1,16(sp)
    e882f92e:	ec06                	sd	ra,24(sp)
    e882f930:	84aa                	mv	s1,a0
    e882f932:	842e                	mv	s0,a1
    assert(m != NULL);
    e882f934:	e11d                	bnez	a0,e882f95a <mDNSPlatformInterfaceIDfromInterfaceIndex+0x32>
    e882f936:	02f00593          	li	a1,47
    e882f93a:	0007c517          	auipc	a0,0x7c
    e882f93e:	2ce50513          	addi	a0,a0,718 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882f942:	2374c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882f946:	00150593          	addi	a1,a0,1
    e882f94a:	22300613          	li	a2,547
    e882f94e:	00071517          	auipc	a0,0x71
    e882f952:	86250513          	addi	a0,a0,-1950 # e88a01b0 <TWO52+0x5b8>
    e882f956:	1714c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (index == kDNSServiceInterfaceIndexLocalOnly) return(mDNSInterface_LocalOnly);
    e882f95a:	57fd                	li	a5,-1
    e882f95c:	00f41c63          	bne	s0,a5,e882f974 <mDNSPlatformInterfaceIDfromInterfaceIndex+0x4c>
    e882f960:	00073797          	auipc	a5,0x73
    e882f964:	41078793          	addi	a5,a5,1040 # e88a2d70 <mDNSInterface_LocalOnly>
    if (index == kDNSServiceInterfaceIndexP2P      ) return(mDNSInterface_P2P);
    e882f968:	6388                	ld	a0,0(a5)
}
    e882f96a:	60e2                	ld	ra,24(sp)
    e882f96c:	6422                	ld	s0,8(sp)
    e882f96e:	64c2                	ld	s1,16(sp)
    e882f970:	6105                	addi	sp,sp,32
    e882f972:	8082                	ret
    if (index == kDNSServiceInterfaceIndexP2P      ) return(mDNSInterface_P2P);
    e882f974:	57f5                	li	a5,-3
    e882f976:	00f41763          	bne	s0,a5,e882f984 <mDNSPlatformInterfaceIDfromInterfaceIndex+0x5c>
    e882f97a:	00073797          	auipc	a5,0x73
    e882f97e:	3fe78793          	addi	a5,a5,1022 # e88a2d78 <mDNSInterface_P2P>
    e882f982:	b7dd                	j	e882f968 <mDNSPlatformInterfaceIDfromInterfaceIndex+0x40>
    if (index == kDNSServiceInterfaceIndexAny      ) return(mDNSInterface_Any);
    e882f984:	00073797          	auipc	a5,0x73
    e882f988:	3dc78793          	addi	a5,a5,988 # e88a2d60 <mDNSInterface_Any>
    e882f98c:	dc71                	beqz	s0,e882f968 <mDNSPlatformInterfaceIDfromInterfaceIndex+0x40>
    intf = (PosixNetworkInterface*)(m->HostInterfaces);
    e882f98e:	678d                	lui	a5,0x3
    e882f990:	94be                	add	s1,s1,a5
    e882f992:	1e04b503          	ld	a0,480(s1)
    while ((intf != NULL) && (mDNSu32) intf->index != index)
    e882f996:	6709                	lui	a4,0x2
    e882f998:	2401                	sext.w	s0,s0
    e882f99a:	d961                	beqz	a0,e882f96a <mDNSPlatformInterfaceIDfromInterfaceIndex+0x42>
    e882f99c:	00e507b3          	add	a5,a0,a4
    e882f9a0:	a887a783          	lw	a5,-1400(a5) # 2a88 <memcmp-0xe87fd578>
    e882f9a4:	fc8783e3          	beq	a5,s0,e882f96a <mDNSPlatformInterfaceIDfromInterfaceIndex+0x42>
        intf = (PosixNetworkInterface *)(intf->coreIntf.next);
    e882f9a8:	6108                	ld	a0,0(a0)
    e882f9aa:	bfc5                	j	e882f99a <mDNSPlatformInterfaceIDfromInterfaceIndex+0x72>

00000000e882f9ac <mDNSPlatformInterfaceIndexfromInterfaceID>:
{
    e882f9ac:	1101                	addi	sp,sp,-32
    e882f9ae:	e422                	sd	s0,8(sp)
    e882f9b0:	e826                	sd	s1,16(sp)
    e882f9b2:	ec06                	sd	ra,24(sp)
    e882f9b4:	84aa                	mv	s1,a0
    e882f9b6:	842e                	mv	s0,a1
    assert(m != NULL);
    e882f9b8:	e11d                	bnez	a0,e882f9de <mDNSPlatformInterfaceIndexfromInterfaceID+0x32>
    e882f9ba:	02f00593          	li	a1,47
    e882f9be:	0007c517          	auipc	a0,0x7c
    e882f9c2:	24a50513          	addi	a0,a0,586 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882f9c6:	1b34c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882f9ca:	00150593          	addi	a1,a0,1
    e882f9ce:	23500613          	li	a2,565
    e882f9d2:	00070517          	auipc	a0,0x70
    e882f9d6:	7de50513          	addi	a0,a0,2014 # e88a01b0 <TWO52+0x5b8>
    e882f9da:	0ed4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (id == mDNSInterface_LocalOnly) return(kDNSServiceInterfaceIndexLocalOnly);
    e882f9de:	00073797          	auipc	a5,0x73
    e882f9e2:	39278793          	addi	a5,a5,914 # e88a2d70 <mDNSInterface_LocalOnly>
    e882f9e6:	639c                	ld	a5,0(a5)
    e882f9e8:	557d                	li	a0,-1
    e882f9ea:	04878163          	beq	a5,s0,e882fa2c <mDNSPlatformInterfaceIndexfromInterfaceID+0x80>
    if (id == mDNSInterface_P2P      ) return(kDNSServiceInterfaceIndexP2P);
    e882f9ee:	00073797          	auipc	a5,0x73
    e882f9f2:	38a78793          	addi	a5,a5,906 # e88a2d78 <mDNSInterface_P2P>
    e882f9f6:	639c                	ld	a5,0(a5)
    e882f9f8:	5575                	li	a0,-3
    e882f9fa:	02878963          	beq	a5,s0,e882fa2c <mDNSPlatformInterfaceIndexfromInterfaceID+0x80>
    if (id == mDNSInterface_Any      ) return(kDNSServiceInterfaceIndexAny);
    e882f9fe:	00073797          	auipc	a5,0x73
    e882fa02:	36278793          	addi	a5,a5,866 # e88a2d60 <mDNSInterface_Any>
    e882fa06:	639c                	ld	a5,0(a5)
    e882fa08:	4501                	li	a0,0
    e882fa0a:	02878163          	beq	a5,s0,e882fa2c <mDNSPlatformInterfaceIndexfromInterfaceID+0x80>
    intf = (PosixNetworkInterface*)(m->HostInterfaces);
    e882fa0e:	678d                	lui	a5,0x3
    e882fa10:	94be                	add	s1,s1,a5
    e882fa12:	1e04b783          	ld	a5,480(s1)
    while ((intf != NULL) && (mDNSInterfaceID) intf != id)
    e882fa16:	c385                	beqz	a5,e882fa36 <mDNSPlatformInterfaceIndexfromInterfaceID+0x8a>
    e882fa18:	00879763          	bne	a5,s0,e882fa26 <mDNSPlatformInterfaceIndexfromInterfaceID+0x7a>
    if (intf) return intf->index;
    e882fa1c:	6709                	lui	a4,0x2
    e882fa1e:	97ba                	add	a5,a5,a4
    e882fa20:	a887a503          	lw	a0,-1400(a5) # 2a88 <memcmp-0xe87fd578>
    e882fa24:	a021                	j	e882fa2c <mDNSPlatformInterfaceIndexfromInterfaceID+0x80>
        intf = (PosixNetworkInterface *)(intf->coreIntf.next);
    e882fa26:	639c                	ld	a5,0(a5)
    e882fa28:	b7fd                	j	e882fa16 <mDNSPlatformInterfaceIndexfromInterfaceID+0x6a>
    if (id == mDNSInterface_Any      ) return(kDNSServiceInterfaceIndexAny);
    e882fa2a:	4501                	li	a0,0
}
    e882fa2c:	60e2                	ld	ra,24(sp)
    e882fa2e:	6422                	ld	s0,8(sp)
    e882fa30:	64c2                	ld	s1,16(sp)
    e882fa32:	6105                	addi	sp,sp,32
    e882fa34:	8082                	ret
    intf = gRecentInterfaces;
    e882fa36:	000b4797          	auipc	a5,0xb4
    e882fa3a:	10278793          	addi	a5,a5,258 # e88e3b38 <gRecentInterfaces>
        intf = (PosixNetworkInterface *)(intf->coreIntf.next);
    e882fa3e:	639c                	ld	a5,0(a5)
    while ((intf != NULL) && (mDNSInterfaceID) intf != id)
    e882fa40:	d7ed                	beqz	a5,e882fa2a <mDNSPlatformInterfaceIndexfromInterfaceID+0x7e>
    e882fa42:	fe879ee3          	bne	a5,s0,e882fa3e <mDNSPlatformInterfaceIndexfromInterfaceID+0x92>
    e882fa46:	bfd9                	j	e882fa1c <mDNSPlatformInterfaceIndexfromInterfaceID+0x70>

00000000e882fa48 <NotifyCarplayAction>:
	char message[] = "action";
    e882fa48:	0007c797          	auipc	a5,0x7c
    e882fa4c:	32878793          	addi	a5,a5,808 # e88abd70 <mDNS_DomainTypeNames+0x23c0>
    e882fa50:	4398                	lw	a4,0(a5)
{
    e882fa52:	1101                	addi	sp,sp,-32
	char message[] = "action";
    e882fa54:	0037a783          	lw	a5,3(a5)
    e882fa58:	c43a                	sw	a4,8(sp)
{
    e882fa5a:	ec06                	sd	ra,24(sp)
	char message[] = "action";
    e882fa5c:	00f125a3          	sw	a5,11(sp)
	send(clientfd, message,sizeof(message), 0);
    e882fa60:	000a5797          	auipc	a5,0xa5
    e882fa64:	01c78793          	addi	a5,a5,28 # e88d4a7c <clientfd>
    e882fa68:	4388                	lw	a0,0(a5)
    e882fa6a:	002c                	addi	a1,sp,8
    e882fa6c:	4681                	li	a3,0
    e882fa6e:	461d                	li	a2,7
    e882fa70:	122560ef          	jal	ra,e8885b92 <lwip_send>
}
    e882fa74:	60e2                	ld	ra,24(sp)
    e882fa76:	6105                	addi	sp,sp,32
    e882fa78:	8082                	ret

00000000e882fa7a <DeleteCarplayNotify>:
{
    e882fa7a:	716d                	addi	sp,sp,-272
	if(recv(acceptfd, &message,10, 0) > 0)
    e882fa7c:	000a5797          	auipc	a5,0xa5
    e882fa80:	ffc78793          	addi	a5,a5,-4 # e88d4a78 <acceptfd>
{
    e882fa84:	e606                	sd	ra,264(sp)
	if(recv(acceptfd, &message,10, 0) > 0)
    e882fa86:	4388                	lw	a0,0(a5)
    e882fa88:	858a                	mv	a1,sp
    e882fa8a:	4681                	li	a3,0
    e882fa8c:	4629                	li	a2,10
    e882fa8e:	2f1550ef          	jal	ra,e888557e <lwip_recv>
}
    e882fa92:	60b2                	ld	ra,264(sp)
    e882fa94:	6151                	addi	sp,sp,272
    e882fa96:	8082                	ret

00000000e882fa98 <mDNSPlatformLock>:
}
    e882fa98:	8082                	ret

00000000e882fa9a <mDNSPlatformUnlock>:
    e882fa9a:	8082                	ret

00000000e882fa9c <mDNSPlatformStrLen>:
    return strlen((const char*)src);
    e882fa9c:	07d4c06f          	j	e887c318 <eLIBs_strlen>

00000000e882faa0 <mDNSPlatformMemCopy>:
    memcpy(dst, src, len);
    e882faa0:	7c06360b          	extu	a2,a2,31,0
    e882faa4:	0fd4c06f          	j	e887c3a0 <eLIBs_memcpy>

00000000e882faa8 <mDNSPlatformMemSame>:
    return memcmp(dst, src, len) == 0;
    e882faa8:	7c06360b          	extu	a2,a2,31,0
    e882faac:	4701                	li	a4,0
//#define memcmp(a,b,c)	(eLIBs_memcmp(a,b,c)!=EPDK_TRUE)
static inline int memcmp(const void *v1,const void *v2,size_t n){
    const unsigned char *c1=v1,*c2=v2;
    int ret=0;

    while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
    e882faae:	00e60c63          	beq	a2,a4,e882fac6 <mDNSPlatformMemSame+0x1e>
    e882fab2:	80e5478b          	lrbu	a5,a0,a4,0
    e882fab6:	80e5c68b          	lrbu	a3,a1,a4,0
    e882faba:	0705                	addi	a4,a4,1
    e882fabc:	9f95                	subw	a5,a5,a3
    e882fabe:	dbe5                	beqz	a5,e882faae <mDNSPlatformMemSame+0x6>
}
    e882fac0:	0017b513          	seqz	a0,a5
    e882fac4:	8082                	ret
    e882fac6:	4781                	li	a5,0
    e882fac8:	bfe5                	j	e882fac0 <mDNSPlatformMemSame+0x18>

00000000e882faca <mDNSPlatformMemCmp>:
    return (memcmp(dst, src, len));
    e882faca:	7c06360b          	extu	a2,a2,31,0
    e882face:	4701                	li	a4,0
    e882fad0:	00e60b63          	beq	a2,a4,e882fae6 <mDNSPlatformMemCmp+0x1c>
    e882fad4:	80e5478b          	lrbu	a5,a0,a4,0
    e882fad8:	80e5c68b          	lrbu	a3,a1,a4,0
    e882fadc:	0705                	addi	a4,a4,1
    e882fade:	9f95                	subw	a5,a5,a3
    e882fae0:	dbe5                	beqz	a5,e882fad0 <mDNSPlatformMemCmp+0x6>
}
    e882fae2:	853e                	mv	a0,a5
    e882fae4:	8082                	ret
    e882fae6:	4781                	li	a5,0
    e882fae8:	bfed                	j	e882fae2 <mDNSPlatformMemCmp+0x18>

00000000e882faea <VerifySignature>:
    e882faea:	8082                	ret

00000000e882faec <AddNSECSForCacheRecord>:
}
    e882faec:	4501                	li	a0,0
    e882faee:	8082                	ret

00000000e882faf0 <BumpDNSSECStats>:
}
    e882faf0:	8082                	ret

00000000e882faf2 <DNSProxySetAttributes>:
}
    e882faf2:	8536                	mv	a0,a3
    e882faf4:	8082                	ret

00000000e882faf6 <mDNSPlatformMemZero>:
    memset(dst, 0, len);
    e882faf6:	7c05b60b          	extu	a2,a1,31,0
    e882fafa:	4581                	li	a1,0
    e882fafc:	0994c06f          	j	e887c394 <eLIBs_memset>

00000000e882fb00 <mDNSPlatformSendUDP>:
{
    e882fb00:	7159                	addi	sp,sp,-112
    e882fb02:	f0a2                	sd	s0,96(sp)
    e882fb04:	eca6                	sd	s1,88(sp)
    e882fb06:	e8ca                	sd	s2,80(sp)
    e882fb08:	e4ce                	sd	s3,72(sp)
    e882fb0a:	e0d2                	sd	s4,64(sp)
    e882fb0c:	fc56                	sd	s5,56(sp)
    e882fb0e:	f85a                	sd	s6,48(sp)
    e882fb10:	f45e                	sd	s7,40(sp)
    e882fb12:	f486                	sd	ra,104(sp)
    e882fb14:	3c083b8b          	extu	s7,a6,15,0
    e882fb18:	89aa                	mv	s3,a0
    e882fb1a:	892e                	mv	s2,a1
    e882fb1c:	8b32                	mv	s6,a2
    e882fb1e:	84b6                	mv	s1,a3
    e882fb20:	843e                	mv	s0,a5
    e882fb22:	8a5e                	mv	s4,s7
	n = (int)( end - ( (const mDNSu8 * const) msg ) );
    e882fb24:	40b60ab3          	sub	s5,a2,a1
    assert(m != NULL);
    e882fb28:	e11d                	bnez	a0,e882fb4e <mDNSPlatformSendUDP+0x4e>
    e882fb2a:	02f00593          	li	a1,47
    e882fb2e:	0007c517          	auipc	a0,0x7c
    e882fb32:	0da50513          	addi	a0,a0,218 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882fb36:	0434c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882fb3a:	00150593          	addi	a1,a0,1
    e882fb3e:	0a000613          	li	a2,160
    e882fb42:	00070517          	auipc	a0,0x70
    e882fb46:	66e50513          	addi	a0,a0,1646 # e88a01b0 <TWO52+0x5b8>
    e882fb4a:	77c4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(msg != NULL);
    e882fb4e:	02091463          	bnez	s2,e882fb76 <mDNSPlatformSendUDP+0x76>
    e882fb52:	02f00593          	li	a1,47
    e882fb56:	0007c517          	auipc	a0,0x7c
    e882fb5a:	0b250513          	addi	a0,a0,178 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882fb5e:	01b4c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882fb62:	00150593          	addi	a1,a0,1
    e882fb66:	0a100613          	li	a2,161
    e882fb6a:	00070517          	auipc	a0,0x70
    e882fb6e:	64650513          	addi	a0,a0,1606 # e88a01b0 <TWO52+0x5b8>
    e882fb72:	7544c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(end != NULL);
    e882fb76:	020b1463          	bnez	s6,e882fb9e <mDNSPlatformSendUDP+0x9e>
    e882fb7a:	02f00593          	li	a1,47
    e882fb7e:	0007c517          	auipc	a0,0x7c
    e882fb82:	08a50513          	addi	a0,a0,138 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882fb86:	7f24c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882fb8a:	00150593          	addi	a1,a0,1
    e882fb8e:	0a200613          	li	a2,162
    e882fb92:	00070517          	auipc	a0,0x70
    e882fb96:	61e50513          	addi	a0,a0,1566 # e88a01b0 <TWO52+0x5b8>
    e882fb9a:	72c4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert((((char *) end) - ((char *) msg)) > 0);
    e882fb9e:	03504463          	bgtz	s5,e882fbc6 <mDNSPlatformSendUDP+0xc6>
    e882fba2:	02f00593          	li	a1,47
    e882fba6:	0007c517          	auipc	a0,0x7c
    e882fbaa:	06250513          	addi	a0,a0,98 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882fbae:	7ca4c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882fbb2:	00150593          	addi	a1,a0,1
    e882fbb6:	0a300613          	li	a2,163
    e882fbba:	00070517          	auipc	a0,0x70
    e882fbbe:	5f650513          	addi	a0,a0,1526 # e88a01b0 <TWO52+0x5b8>
    e882fbc2:	7044c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (dstPort.NotAnInteger == 0)
    e882fbc6:	000b9c63          	bnez	s7,e882fbde <mDNSPlatformSendUDP+0xde>
        LogMsg("mDNSPlatformSendUDP: Invalid argument -dstPort is set to 0");
    e882fbca:	0007c597          	auipc	a1,0x7c
    e882fbce:	3ce58593          	addi	a1,a1,974 # e88abf98 <kOn.10632+0x50>
    e882fbd2:	4501                	li	a0,0
    e882fbd4:	8d9ff0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return PosixErrorToStatus(err);
    e882fbd8:	7541                	lui	a0,0xffff0
    e882fbda:	157d                	addi	a0,a0,-1
    e882fbdc:	a8f1                	j	e882fcb8 <mDNSPlatformSendUDP+0x1b8>
    if (dst->type == mDNSAddrType_IPv4)
    e882fbde:	401c                	lw	a5,0(s0)
    e882fbe0:	4711                	li	a4,4
    e882fbe2:	0ce79763          	bne	a5,a4,e882fcb0 <mDNSPlatformSendUDP+0x1b0>
        sin->sin_len            = sizeof(*sin);
    e882fbe6:	21000793          	li	a5,528
    e882fbea:	00f11023          	sh	a5,0(sp)
        sin->sin_addr.s_addr    = dst->ip.v4.NotAnInteger;
    e882fbee:	405c                	lw	a5,4(s0)
        sin->sin_port           = dstPort.NotAnInteger;
    e882fbf0:	01411123          	sh	s4,2(sp)
        sin->sin_addr.s_addr    = dst->ip.v4.NotAnInteger;
    e882fbf4:	c23e                	sw	a5,4(sp)
        sendingsocket           = thisIntf ? thisIntf->multicastSocket4 : m->p->unicastSocket4;
    e882fbf6:	c8cd                	beqz	s1,e882fca8 <mDNSPlatformSendUDP+0x1a8>
    e882fbf8:	6789                	lui	a5,0x2
    e882fbfa:	97a6                	add	a5,a5,s1
    e882fbfc:	a8c7a503          	lw	a0,-1396(a5) # 1a8c <memcmp-0xe87fe574>
    if (sendingsocket >= 0)
    e882fc00:	0a054b63          	bltz	a0,e882fcb6 <mDNSPlatformSendUDP+0x1b6>
        err = sendto(sendingsocket, msg, (char*)end - (char*)msg, 0, (struct sockaddr *)&to, GET_SA_LEN(to));
    e882fc04:	00014783          	lbu	a5,0(sp)
    e882fc08:	4741                	li	a4,16
    e882fc0a:	00e7f363          	bgeu	a5,a4,e882fc10 <mDNSPlatformSendUDP+0x110>
    e882fc0e:	47c1                	li	a5,16
    e882fc10:	0ff7f793          	andi	a5,a5,255
    e882fc14:	870a                	mv	a4,sp
    e882fc16:	4681                	li	a3,0
    e882fc18:	8656                	mv	a2,s5
    e882fc1a:	85ca                	mv	a1,s2
    e882fc1c:	5c3550ef          	jal	ra,e88859de <lwip_sendto>
    if      (err > 0) err = 0;
    e882fc20:	08055b63          	bgez	a0,e882fcb6 <mDNSPlatformSendUDP+0x1b6>
        if (!mDNSAddressIsAllDNSLinkGroup(dst))
    e882fc24:	401c                	lw	a5,0(s0)
    e882fc26:	4711                	li	a4,4
    e882fc28:	0ce79f63          	bne	a5,a4,e882fd06 <mDNSPlatformSendUDP+0x206>
    e882fc2c:	00072797          	auipc	a5,0x72
    e882fc30:	f0478793          	addi	a5,a5,-252 # e88a1b30 <AllDNSLinkGroup_v4>
    e882fc34:	4058                	lw	a4,4(s0)
    e882fc36:	43dc                	lw	a5,4(a5)
    e882fc38:	02f70063          	beq	a4,a5,e882fc58 <mDNSPlatformSendUDP+0x158>
            if (lwip_errno == EHOSTDOWN || lwip_errno == ENETDOWN || lwip_errno == EHOSTUNREACH || lwip_errno == ENETUNREACH) return(mStatus_TransientErr);
    e882fc3c:	000b5797          	auipc	a5,0xb5
    e882fc40:	9ec78793          	addi	a5,a5,-1556 # e88e4628 <lwip_errno>
    e882fc44:	439c                	lw	a5,0(a5)
    e882fc46:	4705                	li	a4,1
    e882fc48:	f8b7869b          	addiw	a3,a5,-117
    e882fc4c:	10d77063          	bgeu	a4,a3,e882fd4c <mDNSPlatformSendUDP+0x24c>
    e882fc50:	f8e7879b          	addiw	a5,a5,-114
    e882fc54:	0ef77c63          	bgeu	a4,a5,e882fd4c <mDNSPlatformSendUDP+0x24c>
        if (MessageCount < 1000)
    e882fc58:	000b4717          	auipc	a4,0xb4
    e882fc5c:	eb070713          	addi	a4,a4,-336 # e88e3b08 <MessageCount.10472>
    e882fc60:	431c                	lw	a5,0(a4)
    e882fc62:	3e700693          	li	a3,999
    e882fc66:	f6f6c9e3          	blt	a3,a5,e882fbd8 <mDNSPlatformSendUDP+0xd8>
            MessageCount++;
    e882fc6a:	2785                	addiw	a5,a5,1
    e882fc6c:	c31c                	sw	a5,0(a4)
            if (thisIntf)
    e882fc6e:	000b5797          	auipc	a5,0xb5
    e882fc72:	9ba78793          	addi	a5,a5,-1606 # e88e4628 <lwip_errno>
    e882fc76:	4390                	lw	a2,0(a5)
    e882fc78:	cccd                	beqz	s1,e882fd32 <mDNSPlatformSendUDP+0x232>
                LogMsg("mDNSPlatformSendUDP got error %d (%s) sending packet to %#a on interface %#a/%s/%d",
    e882fc7a:	6789                	lui	a5,0x2
    e882fc7c:	00f48733          	add	a4,s1,a5
    e882fc80:	a8872883          	lw	a7,-1400(a4)
    e882fc84:	a7873803          	ld	a6,-1416(a4)
    e882fc88:	9f878793          	addi	a5,a5,-1544 # 19f8 <memcmp-0xe87fe608>
    e882fc8c:	97a6                	add	a5,a5,s1
    e882fc8e:	8722                	mv	a4,s0
    e882fc90:	00074697          	auipc	a3,0x74
    e882fc94:	a9068693          	addi	a3,a3,-1392 # e88a3720 <end.8789+0x78>
    e882fc98:	0007c597          	auipc	a1,0x7c
    e882fc9c:	34058593          	addi	a1,a1,832 # e88abfd8 <kOn.10632+0x90>
    e882fca0:	4501                	li	a0,0
    e882fca2:	80bff0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882fca6:	bf0d                	j	e882fbd8 <mDNSPlatformSendUDP+0xd8>
        sendingsocket           = thisIntf ? thisIntf->multicastSocket4 : m->p->unicastSocket4;
    e882fca8:	0009b783          	ld	a5,0(s3)
    e882fcac:	4388                	lw	a0,0(a5)
    e882fcae:	bf89                	j	e882fc00 <mDNSPlatformSendUDP+0x100>
    else if (dst->type == mDNSAddrType_IPv6)
    e882fcb0:	4719                	li	a4,6
    e882fcb2:	00e78e63          	beq	a5,a4,e882fcce <mDNSPlatformSendUDP+0x1ce>
    return PosixErrorToStatus(err);
    e882fcb6:	4501                	li	a0,0
}
    e882fcb8:	70a6                	ld	ra,104(sp)
    e882fcba:	7406                	ld	s0,96(sp)
    e882fcbc:	64e6                	ld	s1,88(sp)
    e882fcbe:	6946                	ld	s2,80(sp)
    e882fcc0:	69a6                	ld	s3,72(sp)
    e882fcc2:	6a06                	ld	s4,64(sp)
    e882fcc4:	7ae2                	ld	s5,56(sp)
    e882fcc6:	7b42                	ld	s6,48(sp)
    e882fcc8:	7ba2                	ld	s7,40(sp)
    e882fcca:	6165                	addi	sp,sp,112
    e882fccc:	8082                	ret
        mDNSPlatformMemZero(sin6, sizeof(*sin6));
    e882fcce:	45f1                	li	a1,28
    e882fcd0:	850a                	mv	a0,sp
    e882fcd2:	e25ff0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
        sin6->sin6_port           = dstPort.NotAnInteger;
    e882fcd6:	01411123          	sh	s4,2(sp)
        sin6->sin6_len            = sizeof(*sin6);
    e882fcda:	6785                	lui	a5,0x1
    e882fcdc:	a1c7879b          	addiw	a5,a5,-1508
    e882fce0:	00f11023          	sh	a5,0(sp)
        sin6->sin6_addr           = *(struct in6_addr*)&dst->ip.v6;//*(struct in6_addr*)&AllDNSLinkGroup_v6.ip.v6;
    e882fce4:	00443783          	ld	a5,4(s0)
        sin6->sin6_scope_id		  = 0;
    e882fce8:	cc02                	sw	zero,24(sp)
        sin6->sin6_addr           = *(struct in6_addr*)&dst->ip.v6;//*(struct in6_addr*)&AllDNSLinkGroup_v6.ip.v6;
    e882fcea:	e43e                	sd	a5,8(sp)
    e882fcec:	00c43783          	ld	a5,12(s0)
    e882fcf0:	e83e                	sd	a5,16(sp)
        sendingsocket             = thisIntf ? thisIntf->multicastSocket6 : m->p->unicastSocket6;
    e882fcf2:	c491                	beqz	s1,e882fcfe <mDNSPlatformSendUDP+0x1fe>
    e882fcf4:	6789                	lui	a5,0x2
    e882fcf6:	97a6                	add	a5,a5,s1
    e882fcf8:	a907a503          	lw	a0,-1392(a5) # 1a90 <memcmp-0xe87fe570>
    e882fcfc:	b711                	j	e882fc00 <mDNSPlatformSendUDP+0x100>
    e882fcfe:	0009b783          	ld	a5,0(s3)
    e882fd02:	43c8                	lw	a0,4(a5)
    e882fd04:	bdf5                	j	e882fc00 <mDNSPlatformSendUDP+0x100>
        if (!mDNSAddressIsAllDNSLinkGroup(dst))
    e882fd06:	4719                	li	a4,6
    e882fd08:	f2e79ae3          	bne	a5,a4,e882fc3c <mDNSPlatformSendUDP+0x13c>
    e882fd0c:	00072797          	auipc	a5,0x72
    e882fd10:	e3c78793          	addi	a5,a5,-452 # e88a1b48 <AllDNSLinkGroup_v6>
    e882fd14:	4054                	lw	a3,4(s0)
    e882fd16:	43d8                	lw	a4,4(a5)
    e882fd18:	f2e692e3          	bne	a3,a4,e882fc3c <mDNSPlatformSendUDP+0x13c>
    e882fd1c:	4414                	lw	a3,8(s0)
    e882fd1e:	4798                	lw	a4,8(a5)
    e882fd20:	f0e69ee3          	bne	a3,a4,e882fc3c <mDNSPlatformSendUDP+0x13c>
    e882fd24:	4454                	lw	a3,12(s0)
    e882fd26:	47d8                	lw	a4,12(a5)
    e882fd28:	f0e69ae3          	bne	a3,a4,e882fc3c <mDNSPlatformSendUDP+0x13c>
    e882fd2c:	4818                	lw	a4,16(s0)
    e882fd2e:	4b9c                	lw	a5,16(a5)
    e882fd30:	b721                	j	e882fc38 <mDNSPlatformSendUDP+0x138>
                LogMsg("mDNSPlatformSendUDP got error %d (%s) sending packet to %#a", lwip_errno, strerrno(lwip_errno), dst);
    e882fd32:	8722                	mv	a4,s0
    e882fd34:	00074697          	auipc	a3,0x74
    e882fd38:	9ec68693          	addi	a3,a3,-1556 # e88a3720 <end.8789+0x78>
    e882fd3c:	0007c597          	auipc	a1,0x7c
    e882fd40:	2f458593          	addi	a1,a1,756 # e88ac030 <kOn.10632+0xe8>
    e882fd44:	4501                	li	a0,0
    e882fd46:	f66ff0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e882fd4a:	b579                	j	e882fbd8 <mDNSPlatformSendUDP+0xd8>
            if (lwip_errno == EHOSTDOWN || lwip_errno == ENETDOWN || lwip_errno == EHOSTUNREACH || lwip_errno == ENETUNREACH) return(mStatus_TransientErr);
    e882fd4c:	7541                	lui	a0,0xffff0
    e882fd4e:	1519                	addi	a0,a0,-26
    e882fd50:	b7a5                	j	e882fcb8 <mDNSPlatformSendUDP+0x1b8>

00000000e882fd52 <InitNotifycation>:
{
    e882fd52:	7139                	addi	sp,sp,-64
    e882fd54:	f422                	sd	s0,40(sp)
	if(serverfd >= 0)
    e882fd56:	000a5417          	auipc	s0,0xa5
    e882fd5a:	d2e40413          	addi	s0,s0,-722 # e88d4a84 <serverfd>
    e882fd5e:	401c                	lw	a5,0(s0)
{
    e882fd60:	fc06                	sd	ra,56(sp)
    e882fd62:	f826                	sd	s1,48(sp)
	if(serverfd >= 0)
    e882fd64:	0c07d363          	bgez	a5,e882fe2a <InitNotifycation+0xd8>
	mDNSPlatformMemZero(&laddr, sizeof(laddr));
    e882fd68:	45c1                	li	a1,16
    e882fd6a:	0808                	addi	a0,sp,16
	int len=0;
    e882fd6c:	c602                	sw	zero,12(sp)
	mDNSPlatformMemZero(&laddr, sizeof(laddr));
    e882fd6e:	d89ff0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    laddr.sin_family = AF_INET;
    e882fd72:	4789                	li	a5,2
    laddr.sin_port = htons(1234);
    e882fd74:	4d200513          	li	a0,1234
    laddr.sin_family = AF_INET;
    e882fd78:	00f108a3          	sb	a5,17(sp)
    laddr.sin_port = htons(1234);
    e882fd7c:	1a2570ef          	jal	ra,e8886f1e <lwip_htons>
    e882fd80:	00a11923          	sh	a0,18(sp)
    laddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    e882fd84:	0007c517          	auipc	a0,0x7c
    e882fd88:	f1c50513          	addi	a0,a0,-228 # e88abca0 <mDNS_DomainTypeNames+0x22f0>
    e882fd8c:	229590ef          	jal	ra,e88897b4 <ipaddr_addr>
    e882fd90:	ca2a                	sw	a0,20(sp)
	serverfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    e882fd92:	4619                	li	a2,6
    e882fd94:	4585                	li	a1,1
    e882fd96:	4509                	li	a0,2
    e882fd98:	689550ef          	jal	ra,e8885c20 <lwip_socket>
    e882fd9c:	c008                	sw	a0,0(s0)
    ret = bind(serverfd, (struct sockaddr *) &laddr, sizeof(laddr));
    e882fd9e:	4641                	li	a2,16
    e882fda0:	080c                	addi	a1,sp,16
    e882fda2:	31a550ef          	jal	ra,e88850bc <lwip_bind>
    if (ret < 0)
    e882fda6:	00055863          	bgez	a0,e882fdb6 <InitNotifycation+0x64>
        printf("ERROR: bind(serverfd, (struct sockaddr *) &laddr, sizeof(laddr)); failed\n");
    e882fdaa:	0007c517          	auipc	a0,0x7c
    e882fdae:	f0650513          	addi	a0,a0,-250 # e88abcb0 <mDNS_DomainTypeNames+0x2300>
    e882fdb2:	5144c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	fcntl(serverfd, F_SETFL, fcntl(serverfd, F_GETFL, 0) | O_NONBLOCK);
    e882fdb6:	4004                	lw	s1,0(s0)
    e882fdb8:	4601                	li	a2,0
    e882fdba:	458d                	li	a1,3
    e882fdbc:	8526                	mv	a0,s1
    e882fdbe:	563560ef          	jal	ra,e8886b20 <lwip_fcntl>
    e882fdc2:	00156613          	ori	a2,a0,1
    e882fdc6:	2601                	sext.w	a2,a2
    e882fdc8:	4591                	li	a1,4
    e882fdca:	8526                	mv	a0,s1
    e882fdcc:	555560ef          	jal	ra,e8886b20 <lwip_fcntl>
	clientfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    e882fdd0:	000a5497          	auipc	s1,0xa5
    e882fdd4:	cac48493          	addi	s1,s1,-852 # e88d4a7c <clientfd>
	listen(serverfd, 5);
    e882fdd8:	4008                	lw	a0,0(s0)
    e882fdda:	4595                	li	a1,5
    e882fddc:	640550ef          	jal	ra,e888541c <lwip_listen>
	clientfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    e882fde0:	4619                	li	a2,6
    e882fde2:	4585                	li	a1,1
    e882fde4:	4509                	li	a0,2
    e882fde6:	63b550ef          	jal	ra,e8885c20 <lwip_socket>
    e882fdea:	c088                	sw	a0,0(s1)
	ret = connect(clientfd, (struct sockaddr *) &laddr, sizeof(laddr));
    e882fdec:	4641                	li	a2,16
    e882fdee:	080c                	addi	a1,sp,16
    e882fdf0:	534550ef          	jal	ra,e8885324 <lwip_connect>
    if (ret < 0)
    e882fdf4:	00055863          	bgez	a0,e882fe04 <InitNotifycation+0xb2>
        printf("ERROR: connect(serverfd, (struct sockaddr *) &laddr, sizeof(laddr)); failed\n");
    e882fdf8:	0007c517          	auipc	a0,0x7c
    e882fdfc:	f0850513          	addi	a0,a0,-248 # e88abd00 <mDNS_DomainTypeNames+0x2350>
    e882fe00:	4c64c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	acceptfd = accept(serverfd, (struct sockaddr*) &laddr, &len);
    e882fe04:	4008                	lw	a0,0(s0)
	len = sizeof(laddr);
    e882fe06:	47c1                	li	a5,16
	acceptfd = accept(serverfd, (struct sockaddr*) &laddr, &len);
    e882fe08:	0070                	addi	a2,sp,12
    e882fe0a:	080c                	addi	a1,sp,16
	len = sizeof(laddr);
    e882fe0c:	c63e                	sw	a5,12(sp)
	acceptfd = accept(serverfd, (struct sockaddr*) &laddr, &len);
    e882fe0e:	0a8550ef          	jal	ra,e8884eb6 <lwip_accept>
    e882fe12:	000a5797          	auipc	a5,0xa5
    e882fe16:	c6a7a323          	sw	a0,-922(a5) # e88d4a78 <acceptfd>
	printf("serverfd %x,clientfd %d\n",serverfd,clientfd);
    e882fe1a:	4090                	lw	a2,0(s1)
    e882fe1c:	400c                	lw	a1,0(s0)
    e882fe1e:	0007c517          	auipc	a0,0x7c
    e882fe22:	f3250513          	addi	a0,a0,-206 # e88abd50 <mDNS_DomainTypeNames+0x23a0>
    e882fe26:	4a04c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e882fe2a:	70e2                	ld	ra,56(sp)
    e882fe2c:	7422                	ld	s0,40(sp)
    e882fe2e:	74c2                	ld	s1,48(sp)
    e882fe30:	6121                	addi	sp,sp,64
    e882fe32:	8082                	ret

00000000e882fe34 <SetupSocket>:
{
    e882fe34:	7119                	addi	sp,sp,-128
    e882fe36:	f4a6                	sd	s1,104(sp)
    e882fe38:	f0ca                	sd	s2,96(sp)
    e882fe3a:	ecce                	sd	s3,88(sp)
    e882fe3c:	e8d2                	sd	s4,80(sp)
    e882fe3e:	e4d6                	sd	s5,72(sp)
    e882fe40:	fc86                	sd	ra,120(sp)
    e882fe42:	f8a2                	sd	s0,112(sp)
    e882fe44:	3c05ba0b          	extu	s4,a1,15,0
    e882fe48:	892a                	mv	s2,a0
    e882fe4a:	89d2                	mv	s3,s4
    e882fe4c:	8ab2                	mv	s5,a2
    e882fe4e:	84b6                	mv	s1,a3
    assert(sktPtr != NULL);
    e882fe50:	e29d                	bnez	a3,e882fe76 <SetupSocket+0x42>
    e882fe52:	02f00593          	li	a1,47
    e882fe56:	0007c517          	auipc	a0,0x7c
    e882fe5a:	db250513          	addi	a0,a0,-590 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882fe5e:	51a4c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882fe62:	00150593          	addi	a1,a0,1
    e882fe66:	28300613          	li	a2,643
    e882fe6a:	00070517          	auipc	a0,0x70
    e882fe6e:	34650513          	addi	a0,a0,838 # e88a01b0 <TWO52+0x5b8>
    e882fe72:	4544c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(*sktPtr == -1);
    e882fe76:	4098                	lw	a4,0(s1)
    e882fe78:	57fd                	li	a5,-1
    e882fe7a:	02f70463          	beq	a4,a5,e882fea2 <SetupSocket+0x6e>
    e882fe7e:	02f00593          	li	a1,47
    e882fe82:	0007c517          	auipc	a0,0x7c
    e882fe86:	d8650513          	addi	a0,a0,-634 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e882fe8a:	4ee4c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e882fe8e:	00150593          	addi	a1,a0,1
    e882fe92:	28400613          	li	a2,644
    e882fe96:	00070517          	auipc	a0,0x70
    e882fe9a:	31a50513          	addi	a0,a0,794 # e88a01b0 <TWO52+0x5b8>
    e882fe9e:	4284c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if      (intfAddr->sa_family == AF_INET) *sktPtr = socket(PF_INET,  SOCK_DGRAM, IPPROTO_UDP);
    e882fea2:	00194783          	lbu	a5,1(s2) # 38000001 <memcmp-0xb07fffff>
    e882fea6:	4709                	li	a4,2
    e882fea8:	04e79c63          	bne	a5,a4,e882ff00 <SetupSocket+0xcc>
    e882feac:	4645                	li	a2,17
    e882feae:	4589                	li	a1,2
    e882feb0:	4509                	li	a0,2
    else if (intfAddr->sa_family == AF_INET6) *sktPtr = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
    e882feb2:	56f550ef          	jal	ra,e8885c20 <lwip_socket>
    e882feb6:	c088                	sw	a0,0(s1)
    if (*sktPtr < 0) { err = lwip_errno; perror((intfAddr->sa_family == AF_INET) ? "socket AF_INET" : "socket AF_INET6"); }
    e882feb8:	409c                	lw	a5,0(s1)
    e882feba:	0407cb63          	bltz	a5,e882ff10 <SetupSocket+0xdc>
    e882febe:	4401                	li	s0,0
    if (err == 0 && port.NotAnInteger)
    e882fec0:	080a0163          	beqz	s4,e882ff42 <SetupSocket+0x10e>
        err = setsockopt(*sktPtr, SOL_SOCKET, SO_REUSEADDR, &kOn, sizeof(kOn));
    e882fec4:	4088                	lw	a0,0(s1)
    e882fec6:	6585                	lui	a1,0x1
    e882fec8:	4711                	li	a4,4
    e882feca:	0007c697          	auipc	a3,0x7c
    e882fece:	07e68693          	addi	a3,a3,126 # e88abf48 <kOn.10632>
    e882fed2:	4611                	li	a2,4
    e882fed4:	15fd                	addi	a1,a1,-1
    e882fed6:	582560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e882feda:	842a                	mv	s0,a0
        if (err < 0) { err = lwip_errno; perror("setsockopt - SO_REUSExxxx"); }
    e882fedc:	06055363          	bgez	a0,e882ff42 <SetupSocket+0x10e>
    e882fee0:	000b4797          	auipc	a5,0xb4
    e882fee4:	74878793          	addi	a5,a5,1864 # e88e4628 <lwip_errno>
    e882fee8:	0007c597          	auipc	a1,0x7c
    e882feec:	ee058593          	addi	a1,a1,-288 # e88abdc8 <mDNS_DomainTypeNames+0x2418>
    e882fef0:	0007c517          	auipc	a0,0x7c
    e882fef4:	ec850513          	addi	a0,a0,-312 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e882fef8:	4380                	lw	s0,0(a5)
    e882fefa:	3cc4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e882fefe:	a091                	j	e882ff42 <SetupSocket+0x10e>
    else if (intfAddr->sa_family == AF_INET6) *sktPtr = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
    e882ff00:	4729                	li	a4,10
    else return EINVAL;
    e882ff02:	4459                	li	s0,22
    else if (intfAddr->sa_family == AF_INET6) *sktPtr = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
    e882ff04:	34e79563          	bne	a5,a4,e883024e <SetupSocket+0x41a>
    e882ff08:	4645                	li	a2,17
    e882ff0a:	4589                	li	a1,2
    e882ff0c:	4529                	li	a0,10
    e882ff0e:	b755                	j	e882feb2 <SetupSocket+0x7e>
    if (*sktPtr < 0) { err = lwip_errno; perror((intfAddr->sa_family == AF_INET) ? "socket AF_INET" : "socket AF_INET6"); }
    e882ff10:	000b4797          	auipc	a5,0xb4
    e882ff14:	71878793          	addi	a5,a5,1816 # e88e4628 <lwip_errno>
    e882ff18:	00194703          	lbu	a4,1(s2)
    e882ff1c:	4380                	lw	s0,0(a5)
    e882ff1e:	4789                	li	a5,2
    e882ff20:	0007c597          	auipc	a1,0x7c
    e882ff24:	e7858593          	addi	a1,a1,-392 # e88abd98 <mDNS_DomainTypeNames+0x23e8>
    e882ff28:	00f70663          	beq	a4,a5,e882ff34 <SetupSocket+0x100>
    e882ff2c:	0007c597          	auipc	a1,0x7c
    e882ff30:	e7c58593          	addi	a1,a1,-388 # e88abda8 <mDNS_DomainTypeNames+0x23f8>
    e882ff34:	0007c517          	auipc	a0,0x7c
    e882ff38:	e8450513          	addi	a0,a0,-380 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e882ff3c:	38a4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (err == 0 && port.NotAnInteger)
    e882ff40:	dc3d                	beqz	s0,e882febe <SetupSocket+0x8a>
    if (intfAddr->sa_family == AF_INET)
    e882ff42:	00194783          	lbu	a5,1(s2)
    e882ff46:	4709                	li	a4,2
    e882ff48:	4088                	lw	a0,0(s1)
    e882ff4a:	1ee79863          	bne	a5,a4,e883013a <SetupSocket+0x306>
        if (err == 0)
    e882ff4e:	18041c63          	bnez	s0,e88300e6 <SetupSocket+0x2b2>
            err = setsockopt(*sktPtr, IPPROTO_IP, IP_PKTINFO, &kOn, sizeof(kOn));
    e882ff52:	4711                	li	a4,4
    e882ff54:	0007c697          	auipc	a3,0x7c
    e882ff58:	ff468693          	addi	a3,a3,-12 # e88abf48 <kOn.10632>
    e882ff5c:	4621                	li	a2,8
    e882ff5e:	4581                	li	a1,0
    e882ff60:	4f8560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e882ff64:	842a                	mv	s0,a0
            if (err < 0) { err = lwip_errno; perror("setsockopt - IP_PKTINFO"); }
    e882ff66:	02055163          	bgez	a0,e882ff88 <SetupSocket+0x154>
    e882ff6a:	000b4797          	auipc	a5,0xb4
    e882ff6e:	6be78793          	addi	a5,a5,1726 # e88e4628 <lwip_errno>
    e882ff72:	0007c597          	auipc	a1,0x7c
    e882ff76:	e7658593          	addi	a1,a1,-394 # e88abde8 <mDNS_DomainTypeNames+0x2438>
    e882ff7a:	0007c517          	auipc	a0,0x7c
    e882ff7e:	e3e50513          	addi	a0,a0,-450 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e882ff82:	4380                	lw	s0,0(a5)
    e882ff84:	3424c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (err == 0 && JoinMulticastGroup)
    e882ff88:	14041f63          	bnez	s0,e88300e6 <SetupSocket+0x2b2>
    e882ff8c:	0c0a1e63          	bnez	s4,e8830068 <SetupSocket+0x234>
            err = setsockopt(*sktPtr, IPPROTO_IP, IP_TTL, &kIntTwoFiveFive, sizeof(kIntTwoFiveFive));
    e882ff90:	4088                	lw	a0,0(s1)
    e882ff92:	4711                	li	a4,4
    e882ff94:	0007c697          	auipc	a3,0x7c
    e882ff98:	fb068693          	addi	a3,a3,-80 # e88abf44 <kIntTwoFiveFive.10633>
    e882ff9c:	4609                	li	a2,2
    e882ff9e:	4581                	li	a1,0
    e882ffa0:	4b8560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e882ffa4:	842a                	mv	s0,a0
            if (err < 0) { err = lwip_errno; perror("setsockopt - IP_TTL"); }
    e882ffa6:	02055163          	bgez	a0,e882ffc8 <SetupSocket+0x194>
    e882ffaa:	000b4797          	auipc	a5,0xb4
    e882ffae:	67e78793          	addi	a5,a5,1662 # e88e4628 <lwip_errno>
    e882ffb2:	0007c597          	auipc	a1,0x7c
    e882ffb6:	e8e58593          	addi	a1,a1,-370 # e88abe40 <mDNS_DomainTypeNames+0x2490>
    e882ffba:	0007c517          	auipc	a0,0x7c
    e882ffbe:	dfe50513          	addi	a0,a0,-514 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e882ffc2:	4380                	lw	s0,0(a5)
    e882ffc4:	3024c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (err == 0)
    e882ffc8:	10041f63          	bnez	s0,e88300e6 <SetupSocket+0x2b2>
            err = setsockopt(*sktPtr, IPPROTO_IP, IP_MULTICAST_TTL, &kByteTwoFiveFive, sizeof(kByteTwoFiveFive));
    e882ffcc:	4088                	lw	a0,0(s1)
    e882ffce:	4705                	li	a4,1
    e882ffd0:	0007c697          	auipc	a3,0x7c
    e882ffd4:	f7168693          	addi	a3,a3,-143 # e88abf41 <kByteTwoFiveFive.10634>
    e882ffd8:	4615                	li	a2,5
    e882ffda:	4581                	li	a1,0
    e882ffdc:	47c560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e882ffe0:	842a                	mv	s0,a0
            if (err < 0 && lwip_errno == EINVAL)
    e882ffe2:	02055763          	bgez	a0,e8830010 <SetupSocket+0x1dc>
    e882ffe6:	000b4797          	auipc	a5,0xb4
    e882ffea:	64278793          	addi	a5,a5,1602 # e88e4628 <lwip_errno>
    e882ffee:	4394                	lw	a3,0(a5)
    e882fff0:	4759                	li	a4,22
    e882fff2:	893e                	mv	s2,a5
    e882fff4:	12e68563          	beq	a3,a4,e883011e <SetupSocket+0x2ea>
            if (err < 0) { err = lwip_errno; perror("setsockopt - IP_MULTICAST_TTL"); }
    e882fff8:	0007c597          	auipc	a1,0x7c
    e882fffc:	e6058593          	addi	a1,a1,-416 # e88abe58 <mDNS_DomainTypeNames+0x24a8>
    e8830000:	0007c517          	auipc	a0,0x7c
    e8830004:	db850513          	addi	a0,a0,-584 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e8830008:	00092403          	lw	s0,0(s2)
    e883000c:	2ba4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (err == 0)
    e8830010:	4088                	lw	a0,0(s1)
    e8830012:	e871                	bnez	s0,e88300e6 <SetupSocket+0x2b2>
            bindAddr.sin_family      = AF_INET;
    e8830014:	4789                	li	a5,2
    e8830016:	02f100a3          	sb	a5,33(sp)
            bindAddr.sin_port        = port.NotAnInteger;
    e883001a:	03311123          	sh	s3,34(sp)
            bindAddr.sin_addr.s_addr = INADDR_ANY; // Want to receive multicasts AND unicasts on this socket
    e883001e:	d202                	sw	zero,36(sp)
            err = bind(*sktPtr, (struct sockaddr *) &bindAddr, sizeof(bindAddr));
    e8830020:	4641                	li	a2,16
    e8830022:	100c                	addi	a1,sp,32
            err = bind(*sktPtr, (struct sockaddr *) &bindAddr6, sizeof(bindAddr6));
    e8830024:	098550ef          	jal	ra,e88850bc <lwip_bind>
    e8830028:	842a                	mv	s0,a0
            if (err < 0) { err = lwip_errno; perror("bind");}
    e883002a:	02055163          	bgez	a0,e883004c <SetupSocket+0x218>
    e883002e:	000b4797          	auipc	a5,0xb4
    e8830032:	5fa78793          	addi	a5,a5,1530 # e88e4628 <lwip_errno>
    e8830036:	0007c597          	auipc	a1,0x7c
    e883003a:	e4258593          	addi	a1,a1,-446 # e88abe78 <mDNS_DomainTypeNames+0x24c8>
    e883003e:	0007c517          	auipc	a0,0x7c
    e8830042:	d7a50513          	addi	a0,a0,-646 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e8830046:	4380                	lw	s0,0(a5)
    e8830048:	27e4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (err == 0)
    e883004c:	ec49                	bnez	s0,e88300e6 <SetupSocket+0x2b2>
        err = fcntl(*sktPtr, F_GETFL, 0);
    e883004e:	4088                	lw	a0,0(s1)
    e8830050:	4601                	li	a2,0
    e8830052:	458d                	li	a1,3
    e8830054:	2cd560ef          	jal	ra,e8886b20 <lwip_fcntl>
        if (err < 0) err = lwip_errno;
    e8830058:	1a055563          	bgez	a0,e8830202 <SetupSocket+0x3ce>
            if (err < 0) err = lwip_errno;
    e883005c:	000b4797          	auipc	a5,0xb4
    e8830060:	5cc78793          	addi	a5,a5,1484 # e88e4628 <lwip_errno>
    e8830064:	4380                	lw	s0,0(a5)
    e8830066:	aa45                	j	e8830216 <SetupSocket+0x3e2>
            imr.imr_multiaddr.s_addr = AllDNSLinkGroup_v4.ip.v4.NotAnInteger;
    e8830068:	00072797          	auipc	a5,0x72
    e883006c:	ac878793          	addi	a5,a5,-1336 # e88a1b30 <AllDNSLinkGroup_v4>
    e8830070:	43dc                	lw	a5,4(a5)
            err = setsockopt(*sktPtr, IPPROTO_IP, IP_ADD_MEMBERSHIP, &imr, sizeof(imr));
    e8830072:	4088                	lw	a0,0(s1)
    e8830074:	4721                	li	a4,8
            imr.imr_multiaddr.s_addr = AllDNSLinkGroup_v4.ip.v4.NotAnInteger;
    e8830076:	c43e                	sw	a5,8(sp)
            imr.imr_interface        = ((struct sockaddr_in*)intfAddr)->sin_addr;
    e8830078:	00492783          	lw	a5,4(s2)
            err = setsockopt(*sktPtr, IPPROTO_IP, IP_ADD_MEMBERSHIP, &imr, sizeof(imr));
    e883007c:	0034                	addi	a3,sp,8
    e883007e:	460d                	li	a2,3
    e8830080:	4581                	li	a1,0
            imr.imr_interface        = ((struct sockaddr_in*)intfAddr)->sin_addr;
    e8830082:	c63e                	sw	a5,12(sp)
            err = setsockopt(*sktPtr, IPPROTO_IP, IP_ADD_MEMBERSHIP, &imr, sizeof(imr));
    e8830084:	3d4560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e8830088:	842a                	mv	s0,a0
            if (err < 0) { err = lwip_errno; perror("setsockopt - IP_ADD_MEMBERSHIP"); }
    e883008a:	02055163          	bgez	a0,e88300ac <SetupSocket+0x278>
    e883008e:	000b4797          	auipc	a5,0xb4
    e8830092:	59a78793          	addi	a5,a5,1434 # e88e4628 <lwip_errno>
    e8830096:	0007c597          	auipc	a1,0x7c
    e883009a:	d6a58593          	addi	a1,a1,-662 # e88abe00 <mDNS_DomainTypeNames+0x2450>
    e883009e:	0007c517          	auipc	a0,0x7c
    e88300a2:	d1a50513          	addi	a0,a0,-742 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e88300a6:	4380                	lw	s0,0(a5)
    e88300a8:	21e4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (err == 0 && JoinMulticastGroup)
    e88300ac:	4088                	lw	a0,0(s1)
    e88300ae:	ec05                	bnez	s0,e88300e6 <SetupSocket+0x2b2>
            err = setsockopt(*sktPtr, IPPROTO_IP, IP_MULTICAST_IF, &((struct sockaddr_in*)intfAddr)->sin_addr, sizeof(struct in_addr));
    e88300b0:	4711                	li	a4,4
    e88300b2:	00490693          	addi	a3,s2,4
    e88300b6:	4619                	li	a2,6
    e88300b8:	4581                	li	a1,0
    e88300ba:	39e560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e88300be:	842a                	mv	s0,a0
            if (err < 0) { err = lwip_errno; perror("setsockopt - IP_MULTICAST_IF"); }
    e88300c0:	02055163          	bgez	a0,e88300e2 <SetupSocket+0x2ae>
    e88300c4:	000b4797          	auipc	a5,0xb4
    e88300c8:	56478793          	addi	a5,a5,1380 # e88e4628 <lwip_errno>
    e88300cc:	0007c597          	auipc	a1,0x7c
    e88300d0:	d5458593          	addi	a1,a1,-684 # e88abe20 <mDNS_DomainTypeNames+0x2470>
    e88300d4:	0007c517          	auipc	a0,0x7c
    e88300d8:	ce450513          	addi	a0,a0,-796 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e88300dc:	4380                	lw	s0,0(a5)
    e88300de:	1e84c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (err == 0)
    e88300e2:	ea0407e3          	beqz	s0,e882ff90 <SetupSocket+0x15c>
    if (err != 0 && *sktPtr != -1)
    e88300e6:	4088                	lw	a0,0(s1)
    e88300e8:	57fd                	li	a5,-1
    e88300ea:	12f50863          	beq	a0,a5,e883021a <SetupSocket+0x3e6>
        rv = close(*sktPtr);
    e88300ee:	0b4550ef          	jal	ra,e88851a2 <lwip_close>
        assert(rv == 0);
    e88300f2:	c11d                	beqz	a0,e8830118 <SetupSocket+0x2e4>
    e88300f4:	02f00593          	li	a1,47
    e88300f8:	0007c517          	auipc	a0,0x7c
    e88300fc:	b1050513          	addi	a0,a0,-1264 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e8830100:	2784c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8830104:	00150593          	addi	a1,a0,1
    e8830108:	37200613          	li	a2,882
    e883010c:	00070517          	auipc	a0,0x70
    e8830110:	0a450513          	addi	a0,a0,164 # e88a01b0 <TWO52+0x5b8>
    e8830114:	1b24c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        *sktPtr = -1;
    e8830118:	57fd                	li	a5,-1
    e883011a:	c09c                	sw	a5,0(s1)
    e883011c:	a8fd                	j	e883021a <SetupSocket+0x3e6>
                err = setsockopt(*sktPtr, IPPROTO_IP, IP_MULTICAST_TTL, &kIntTwoFiveFive, sizeof(kIntTwoFiveFive));
    e883011e:	4088                	lw	a0,0(s1)
    e8830120:	4711                	li	a4,4
    e8830122:	0007c697          	auipc	a3,0x7c
    e8830126:	e2268693          	addi	a3,a3,-478 # e88abf44 <kIntTwoFiveFive.10633>
    e883012a:	4615                	li	a2,5
    e883012c:	4581                	li	a1,0
    e883012e:	32a560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e8830132:	842a                	mv	s0,a0
            if (err < 0) { err = lwip_errno; perror("setsockopt - IP_MULTICAST_TTL"); }
    e8830134:	ec055ee3          	bgez	a0,e8830010 <SetupSocket+0x1dc>
    e8830138:	b5c1                	j	e882fff8 <SetupSocket+0x1c4>
    else if (intfAddr->sa_family == AF_INET6)
    e883013a:	4729                	li	a4,10
    e883013c:	f0e798e3          	bne	a5,a4,e883004c <SetupSocket+0x218>
        if (err == 0 && JoinMulticastGroup)
    e8830140:	f05d                	bnez	s0,e88300e6 <SetupSocket+0x2b2>
    e8830142:	060a1963          	bnez	s4,e88301b4 <SetupSocket+0x380>
            err = setsockopt(*sktPtr, IPPROTO_IPV6, IPV6_V6ONLY, &kOn, sizeof(kOn));
    e8830146:	4088                	lw	a0,0(s1)
    e8830148:	4711                	li	a4,4
    e883014a:	0007c697          	auipc	a3,0x7c
    e883014e:	dfe68693          	addi	a3,a3,-514 # e88abf48 <kOn.10632>
    e8830152:	466d                	li	a2,27
    e8830154:	02900593          	li	a1,41
    e8830158:	300560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e883015c:	842a                	mv	s0,a0
            if (err < 0) { err = lwip_errno; perror("setsockopt - IPV6_V6ONLY"); }
    e883015e:	02055163          	bgez	a0,e8830180 <SetupSocket+0x34c>
    e8830162:	000b4797          	auipc	a5,0xb4
    e8830166:	4c678793          	addi	a5,a5,1222 # e88e4628 <lwip_errno>
    e883016a:	0007c597          	auipc	a1,0x7c
    e883016e:	d3658593          	addi	a1,a1,-714 # e88abea0 <mDNS_DomainTypeNames+0x24f0>
    e8830172:	0007c517          	auipc	a0,0x7c
    e8830176:	c4650513          	addi	a0,a0,-954 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
    e883017a:	4380                	lw	s0,0(a5)
    e883017c:	14a4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (err == 0)
    e8830180:	f03d                	bnez	s0,e88300e6 <SetupSocket+0x2b2>
            mDNSPlatformMemZero(&bindAddr6, sizeof(bindAddr6));
    e8830182:	45f1                	li	a1,28
    e8830184:	1008                	addi	a0,sp,32
    e8830186:	971ff0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
            bindAddr6.sin6_port        = port.NotAnInteger;
    e883018a:	03311123          	sh	s3,34(sp)
            bindAddr6.sin6_len         = sizeof(bindAddr6);
    e883018e:	6785                	lui	a5,0x1
    e8830190:	a1c7879b          	addiw	a5,a5,-1508
    e8830194:	02f11023          	sh	a5,32(sp)
            bindAddr6.sin6_addr        = in6addr_any; // Want to receive multicasts AND unicasts on this socket
    e8830198:	000a0797          	auipc	a5,0xa0
    e883019c:	08878793          	addi	a5,a5,136 # e88d0220 <in6addr_any>
    e88301a0:	6398                	ld	a4,0(a5)
    e88301a2:	679c                	ld	a5,8(a5)
            bindAddr6.sin6_flowinfo    = 0;
    e88301a4:	d202                	sw	zero,36(sp)
            bindAddr6.sin6_addr        = in6addr_any; // Want to receive multicasts AND unicasts on this socket
    e88301a6:	f43a                	sd	a4,40(sp)
    e88301a8:	f83e                	sd	a5,48(sp)
            bindAddr6.sin6_scope_id    = interfaceIndex;
    e88301aa:	dc56                	sw	s5,56(sp)
            err = bind(*sktPtr, (struct sockaddr *) &bindAddr6, sizeof(bindAddr6));
    e88301ac:	4671                	li	a2,28
    e88301ae:	100c                	addi	a1,sp,32
    e88301b0:	4088                	lw	a0,0(s1)
    e88301b2:	bd8d                	j	e8830024 <SetupSocket+0x1f0>
            imr6.ipv6mr_multiaddr       = *(const struct in6_addr*)&AllDNSLinkGroup_v6.ip.v6;
    e88301b4:	00072797          	auipc	a5,0x72
    e88301b8:	99478793          	addi	a5,a5,-1644 # e88a1b48 <AllDNSLinkGroup_v6>
    e88301bc:	0047b703          	ld	a4,4(a5)
    e88301c0:	00c7b783          	ld	a5,12(a5)
            err = setsockopt(*sktPtr, IPPROTO_IPV6, IPV6_JOIN_GROUP, &imr6, sizeof(imr6));
    e88301c4:	0034                	addi	a3,sp,8
            imr6.ipv6mr_multiaddr       = *(const struct in6_addr*)&AllDNSLinkGroup_v6.ip.v6;
    e88301c6:	e43a                	sd	a4,8(sp)
            err = setsockopt(*sktPtr, IPPROTO_IPV6, IPV6_JOIN_GROUP, &imr6, sizeof(imr6));
    e88301c8:	4631                	li	a2,12
    e88301ca:	4751                	li	a4,20
    e88301cc:	02900593          	li	a1,41
            imr6.ipv6mr_multiaddr       = *(const struct in6_addr*)&AllDNSLinkGroup_v6.ip.v6;
    e88301d0:	e83e                	sd	a5,16(sp)
            imr6.ipv6mr_interface       = interfaceIndex;
    e88301d2:	cc56                	sw	s5,24(sp)
            err = setsockopt(*sktPtr, IPPROTO_IPV6, IPV6_JOIN_GROUP, &imr6, sizeof(imr6));
    e88301d4:	284560ef          	jal	ra,e8886458 <lwip_setsockopt>
    e88301d8:	842a                	mv	s0,a0
            if (err < 0)
    e88301da:	02055163          	bgez	a0,e88301fc <SetupSocket+0x3c8>
                err = lwip_errno;
    e88301de:	000b4797          	auipc	a5,0xb4
    e88301e2:	44a78793          	addi	a5,a5,1098 # e88e4628 <lwip_errno>
                perror("setsockopt - IPV6_JOIN_GROUP");
    e88301e6:	0007c597          	auipc	a1,0x7c
    e88301ea:	c9a58593          	addi	a1,a1,-870 # e88abe80 <mDNS_DomainTypeNames+0x24d0>
    e88301ee:	0007c517          	auipc	a0,0x7c
    e88301f2:	bca50513          	addi	a0,a0,-1078 # e88abdb8 <mDNS_DomainTypeNames+0x2408>
                err = lwip_errno;
    e88301f6:	4380                	lw	s0,0(a5)
                perror("setsockopt - IPV6_JOIN_GROUP");
    e88301f8:	0ce4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (err == 0)
    e88301fc:	ee0415e3          	bnez	s0,e88300e6 <SetupSocket+0x2b2>
    e8830200:	b799                	j	e8830146 <SetupSocket+0x312>
            err = fcntl(*sktPtr, F_SETFL, err | O_NONBLOCK);
    e8830202:	00156613          	ori	a2,a0,1
    e8830206:	4088                	lw	a0,0(s1)
    e8830208:	2601                	sext.w	a2,a2
    e883020a:	4591                	li	a1,4
    e883020c:	115560ef          	jal	ra,e8886b20 <lwip_fcntl>
    e8830210:	842a                	mv	s0,a0
            if (err < 0) err = lwip_errno;
    e8830212:	e40545e3          	bltz	a0,e883005c <SetupSocket+0x228>
    if (err != 0 && *sktPtr != -1)
    e8830216:	ec0418e3          	bnez	s0,e88300e6 <SetupSocket+0x2b2>
    assert((err == 0) == (*sktPtr != -1));
    e883021a:	409c                	lw	a5,0(s1)
    e883021c:	00143713          	seqz	a4,s0
    e8830220:	0785                	addi	a5,a5,1
    e8830222:	00f037b3          	snez	a5,a5
    e8830226:	02f70463          	beq	a4,a5,e883024e <SetupSocket+0x41a>
    e883022a:	02f00593          	li	a1,47
    e883022e:	0007c517          	auipc	a0,0x7c
    e8830232:	9da50513          	addi	a0,a0,-1574 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e8830236:	1424c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e883023a:	00150593          	addi	a1,a0,1
    e883023e:	37500613          	li	a2,885
    e8830242:	00070517          	auipc	a0,0x70
    e8830246:	f6e50513          	addi	a0,a0,-146 # e88a01b0 <TWO52+0x5b8>
    e883024a:	07c4c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e883024e:	8522                	mv	a0,s0
    e8830250:	70e6                	ld	ra,120(sp)
    e8830252:	7446                	ld	s0,112(sp)
    e8830254:	74a6                	ld	s1,104(sp)
    e8830256:	7906                	ld	s2,96(sp)
    e8830258:	69e6                	ld	s3,88(sp)
    e883025a:	6a46                	ld	s4,80(sp)
    e883025c:	6aa6                	ld	s5,72(sp)
    e883025e:	6109                	addi	sp,sp,128
    e8830260:	8082                	ret

00000000e8830262 <mDNSPlatformMemAllocate>:
mDNSexport void *  mDNSPlatformMemAllocate(mDNSu32 len) { return(calloc(len,1)); }
    e8830262:	1101                	addi	sp,sp,-32
    e8830264:	ec06                	sd	ra,24(sp)
    e8830266:	e822                	sd	s0,16(sp)

static inline void *calloc(size_t nitems, size_t size)
{
    void *p;
    int len = nitems*size;
    p = malloc(len);
    e8830268:	e42a                	sd	a0,8(sp)
    e883026a:	5e44b0ef          	jal	ra,e887b84e <my_malloc>
    e883026e:	842a                	mv	s0,a0
    memset(p,0,len);
    e8830270:	6622                	ld	a2,8(sp)
    e8830272:	4581                	li	a1,0
    e8830274:	1204c0ef          	jal	ra,e887c394 <eLIBs_memset>
    e8830278:	8522                	mv	a0,s0
    e883027a:	60e2                	ld	ra,24(sp)
    e883027c:	6442                	ld	s0,16(sp)
    e883027e:	6105                	addi	sp,sp,32
    e8830280:	8082                	ret

00000000e8830282 <mDNSPlatformMemFree>:
mDNSexport void    mDNSPlatformMemFree    (void *mem)   { free(mem); }
    e8830282:	07e4c06f          	j	e887c300 <eLIBs_free>

00000000e8830286 <mDNSPlatformRandomNumber>:
	return(random(0x7FFFFFFF));
    e8830286:	80000537          	lui	a0,0x80000
    e883028a:	fff54513          	not	a0,a0
    e883028e:	0644c06f          	j	e887c2f2 <eLIBs_ramdom>

00000000e8830292 <mDNSPlatformTimeInit>:
}
    e8830292:	4501                	li	a0,0
    e8830294:	8082                	ret

00000000e8830296 <mDNSPlatformRawTime>:
	return GetTickCount();
    e8830296:	3424b06f          	j	e887b5d8 <GetTickCount>

00000000e883029a <mDNSPlatformUTC>:
{
    e883029a:	1141                	addi	sp,sp,-16
    e883029c:	e406                	sd	ra,8(sp)
	return GetTickCount()/1000;
    e883029e:	33a4b0ef          	jal	ra,e887b5d8 <GetTickCount>
}
    e88302a2:	60a2                	ld	ra,8(sp)
    e88302a4:	3e800793          	li	a5,1000
    e88302a8:	02f5553b          	divuw	a0,a0,a5
    e88302ac:	0141                	addi	sp,sp,16
    e88302ae:	8082                	ret

00000000e88302b0 <SetupInterfaceList>:
{
    e88302b0:	7119                	addi	sp,sp,-128
    e88302b2:	f0ca                	sd	s2,96(sp)
    e88302b4:	892a                	mv	s2,a0
	struct netif *netif = netif_get_by_index(INTERFACE_INDEX);
    e88302b6:	4509                	li	a0,2
{
    e88302b8:	fc86                	sd	ra,120(sp)
    e88302ba:	f8a2                	sd	s0,112(sp)
    e88302bc:	f4a6                	sd	s1,104(sp)
    e88302be:	ecce                	sd	s3,88(sp)
    e88302c0:	e8d2                	sd	s4,80(sp)
	struct netif *netif = netif_get_by_index(INTERFACE_INDEX);
    e88302c2:	56e5e0ef          	jal	ra,e888e830 <netif_get_by_index>
	if(netif != NULL)
    e88302c6:	0e050963          	beqz	a0,e88303b8 <SetupInterfaceList+0x108>
    e88302ca:	842a                	mv	s0,a0
		mDNSPlatformMemZero(&intfAddr, sizeof(intfAddr));
    e88302cc:	45f1                	li	a1,28
    e88302ce:	1808                	addi	a0,sp,48
    e88302d0:	827ff0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
		intfAddr.sin6_len			  = sizeof(struct sockaddr_in6);
    e88302d4:	6785                	lui	a5,0x1
    e88302d6:	a1c7871b          	addiw	a4,a5,-1508
    e88302da:	d83a                	sw	a4,48(sp)
		inet6_addr_from_ip6addr(&intfAddr.sin6_addr,ip_2_ip6(&netif->ip6_addr[0]));
    e88302dc:	6838                	ld	a4,80(s0)
		intfMask.sin_len = sizeof(struct sockaddr_in);
    e88302de:	a107879b          	addiw	a5,a5,-1520
		memcpy(&intfMask.sin_addr,&netif->ip_addr,sizeof(&netif->ip_addr));
    e88302e2:	00840593          	addi	a1,s0,8
		inet6_addr_from_ip6addr(&intfAddr.sin6_addr,ip_2_ip6(&netif->ip6_addr[0]));
    e88302e6:	fc3a                	sd	a4,56(sp)
    e88302e8:	6c38                	ld	a4,88(s0)
		memcpy(&intfMask.sin_addr,&netif->ip_addr,sizeof(&netif->ip_addr));
    e88302ea:	4621                	li	a2,8
    e88302ec:	1048                	addi	a0,sp,36
		inet6_addr_from_ip6addr(&intfAddr.sin6_addr,ip_2_ip6(&netif->ip6_addr[0]));
    e88302ee:	e0ba                	sd	a4,64(sp)
		intfMask.sin_len = sizeof(struct sockaddr_in);
    e88302f0:	d03e                	sw	a5,32(sp)
		memcpy(&intfMask.sin_addr,&netif->ip_addr,sizeof(&netif->ip_addr));
    e88302f2:	0ae4c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		if_indextoname(INTERFACE_INDEX,ifi_name);
    e88302f6:	080c                	addi	a1,sp,16
    e88302f8:	4509                	li	a0,2
    e88302fa:	369530ef          	jal	ra,e8883e62 <lwip_if_indextoname>
    assert(m != NULL);
    e88302fe:	02091463          	bnez	s2,e8830326 <SetupInterfaceList+0x76>
    e8830302:	02f00593          	li	a1,47
    e8830306:	0007c517          	auipc	a0,0x7c
    e883030a:	90250513          	addi	a0,a0,-1790 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e883030e:	06a4c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8830312:	00150593          	addi	a1,a0,1
    e8830316:	3be00613          	li	a2,958
    e883031a:	00070517          	auipc	a0,0x70
    e883031e:	e9650513          	addi	a0,a0,-362 # e88a01b0 <TWO52+0x5b8>
    e8830322:	7a54b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    intf = (PosixNetworkInterface*)malloc(sizeof(*intf));
    e8830326:	6489                	lui	s1,0x2
    e8830328:	a9848513          	addi	a0,s1,-1384 # 1a98 <memcmp-0xe87fe568>
    e883032c:	5224b0ef          	jal	ra,e887b84e <my_malloc>
    e8830330:	842a                	mv	s0,a0
    if (intf == NULL) { assert(0); err = ENOMEM; }
    e8830332:	c505                	beqz	a0,e883035a <SetupInterfaceList+0xaa>
        intf->intfName = strdup(intfName);
    e8830334:	0808                	addi	a0,sp,16
    e8830336:	4d22f0ef          	jal	ra,e885f808 <strdup>
    e883033a:	009409b3          	add	s3,s0,s1
    e883033e:	a6a9bc23          	sd	a0,-1416(s3)
        if (intf->intfName == NULL) { assert(0); err = ENOMEM; }
    e8830342:	e145                	bnez	a0,e88303e2 <SetupInterfaceList+0x132>
    e8830344:	02f00593          	li	a1,47
    e8830348:	0007c517          	auipc	a0,0x7c
    e883034c:	8c050513          	addi	a0,a0,-1856 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e8830350:	0284c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8830354:	3cb00613          	li	a2,971
    e8830358:	a819                	j	e883036e <SetupInterfaceList+0xbe>
    if (intf == NULL) { assert(0); err = ENOMEM; }
    e883035a:	02f00593          	li	a1,47
    e883035e:	0007c517          	auipc	a0,0x7c
    e8830362:	8aa50513          	addi	a0,a0,-1878 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e8830366:	0124c0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e883036a:	3c500613          	li	a2,965
        if (intf->intfName == NULL) { assert(0); err = ENOMEM; }
    e883036e:	00150593          	addi	a1,a0,1
    e8830372:	00070517          	auipc	a0,0x70
    e8830376:	e3e50513          	addi	a0,a0,-450 # e88a01b0 <TWO52+0x5b8>
    e883037a:	74d4b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e883037e:	4531                	li	a0,12
    e8830380:	e42a                	sd	a0,8(sp)
	InitNotifycation();
    e8830382:	9d1ff0ef          	jal	ra,e882fd52 <InitNotifycation>
    intf->coreIntf.DirectLink = mDNStrue;
    e8830386:	6789                	lui	a5,0x2
    e8830388:	97a2                	add	a5,a5,s0
    e883038a:	10100713          	li	a4,257
    if (err == 0)
    e883038e:	6522                	ld	a0,8(sp)
    intf->coreIntf.DirectLink = mDNStrue;
    e8830390:	a6e79623          	sh	a4,-1428(a5) # 1a6c <memcmp-0xe87fe594>
    if (err == 0)
    e8830394:	1a051e63          	bnez	a0,e8830550 <SetupInterfaceList+0x2a0>
        err = mDNS_RegisterInterface(m, &intf->coreIntf, NormalActivation);
    e8830398:	4605                	li	a2,1
    e883039a:	85a2                	mv	a1,s0
    e883039c:	854a                	mv	a0,s2
    e883039e:	a93fa0ef          	jal	ra,e882ae30 <mDNS_RegisterInterface>
    if (err == 0)
    e88303a2:	1a051763          	bnez	a0,e8830550 <SetupInterfaceList+0x2a0>
        num_registered_interfaces++;
    e88303a6:	000b3717          	auipc	a4,0xb3
    e88303aa:	7a270713          	addi	a4,a4,1954 # e88e3b48 <num_registered_interfaces>
    e88303ae:	431c                	lw	a5,0(a4)
    e88303b0:	2785                	addiw	a5,a5,1
    e88303b2:	c31c                	sw	a5,0(a4)
    assert((err == 0) == (intf != NULL));
    e88303b4:	1a040463          	beqz	s0,e883055c <SetupInterfaceList+0x2ac>
    const mDNSs32 utc = mDNSPlatformUTC();
    e88303b8:	ee3ff0ef          	jal	ra,e883029a <mDNSPlatformUTC>
    e88303bc:	84aa                	mv	s1,a0
    PosixNetworkInterface **ri = &gRecentInterfaces;
    e88303be:	000b3417          	auipc	s0,0xb3
    e88303c2:	77a40413          	addi	s0,s0,1914 # e88e3b38 <gRecentInterfaces>
        if (utc - pi->LastSeen < 60) ri = (PosixNetworkInterface **)&pi->coreIntf.next;
    e88303c6:	6909                	lui	s2,0x2
    e88303c8:	03b00993          	li	s3,59
    while (*ri)
    e88303cc:	6008                	ld	a0,0(s0)
    e88303ce:	1a051a63          	bnez	a0,e8830582 <SetupInterfaceList+0x2d2>
}
    e88303d2:	70e6                	ld	ra,120(sp)
    e88303d4:	7446                	ld	s0,112(sp)
    e88303d6:	74a6                	ld	s1,104(sp)
    e88303d8:	7906                	ld	s2,96(sp)
    e88303da:	69e6                	ld	s3,88(sp)
    e88303dc:	6a46                	ld	s4,80(sp)
    e88303de:	6109                	addi	sp,sp,128
    e88303e0:	8082                	ret
        SockAddrTomDNSAddr(intfAddr, &intf->coreIntf.ip, NULL);
    e88303e2:	9f848a13          	addi	s4,s1,-1544
    e88303e6:	9a22                	add	s4,s4,s0
    e88303e8:	4601                	li	a2,0
    e88303ea:	85d2                	mv	a1,s4
    e88303ec:	1808                	addi	a0,sp,48
    e88303ee:	a32ff0ef          	jal	ra,e882f620 <SockAddrTomDNSAddr>
        SockAddrTomDNSAddr(intfMask, &intf->coreIntf.mask, NULL);
    e88303f2:	a0c48693          	addi	a3,s1,-1524
    e88303f6:	96a2                	add	a3,a3,s0
    e88303f8:	85b6                	mv	a1,a3
    e88303fa:	4601                	li	a2,0
    e88303fc:	1008                	addi	a0,sp,32
    e88303fe:	e436                	sd	a3,8(sp)
    e8830400:	a20ff0ef          	jal	ra,e882f620 <SockAddrTomDNSAddr>
        LogMsg("SetupOneInterface: %#a %#a",  &intf->coreIntf.ip,  &intf->coreIntf.mask);
    e8830404:	66a2                	ld	a3,8(sp)
    e8830406:	8652                	mv	a2,s4
    e8830408:	0007c597          	auipc	a1,0x7c
    e883040c:	97058593          	addi	a1,a1,-1680 # e88abd78 <mDNS_DomainTypeNames+0x23c8>
    e8830410:	4501                	li	a0,0
    e8830412:	89aff0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        strncpy(intf->coreIntf.ifname, intfName, sizeof(intf->coreIntf.ifname));
    e8830416:	a2648513          	addi	a0,s1,-1498
    e883041a:	04000613          	li	a2,64
    e883041e:	080c                	addi	a1,sp,16
    e8830420:	9522                	add	a0,a0,s0
    e8830422:	70f4b0ef          	jal	ra,e887c330 <eLIBs_strncpy>
        intf->coreIntf.ifname[sizeof(intf->coreIntf.ifname)-1] = 0;
    e8830426:	a60982a3          	sb	zero,-1435(s3)
        intf->coreIntf.Advertise = m->AdvertiseLocalAddresses;
    e883042a:	00d94783          	lbu	a5,13(s2) # 200d <memcmp-0xe87fdff3>
    e883042e:	a6f98323          	sb	a5,-1434(s3)
        intf->coreIntf.McastTxRx = mDNStrue;
    e8830432:	4785                	li	a5,1
    e8830434:	a6f983a3          	sb	a5,-1433(s3)
        assert(intf->intfName != NULL);         // intf->intfName already set up above
    e8830438:	a789b783          	ld	a5,-1416(s3)
    e883043c:	e39d                	bnez	a5,e8830462 <SetupInterfaceList+0x1b2>
    e883043e:	02f00593          	li	a1,47
    e8830442:	0007b517          	auipc	a0,0x7b
    e8830446:	7c650513          	addi	a0,a0,1990 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e883044a:	72f4b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e883044e:	00150593          	addi	a1,a0,1
    e8830452:	3db00613          	li	a2,987
    e8830456:	00070517          	auipc	a0,0x70
    e883045a:	d5a50513          	addi	a0,a0,-678 # e88a01b0 <TWO52+0x5b8>
    e883045e:	6694b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        intf->index                = intfIndex;
    e8830462:	56fd                	li	a3,-1
    e8830464:	6789                	lui	a5,0x2
    e8830466:	02069713          	slli	a4,a3,0x20
    e883046a:	97a2                	add	a5,a5,s0
    e883046c:	0709                	addi	a4,a4,2
    e883046e:	a8e7b423          	sd	a4,-1400(a5) # 1a88 <memcmp-0xe87fe578>
        intf->multicastSocket6     = -1;
    e8830472:	a8d7a823          	sw	a3,-1392(a5)
        alias                      = SearchForInterfaceByName(m, intf->intfName);
    e8830476:	a787b983          	ld	s3,-1416(a5)
    assert(m != NULL);
    e883047a:	02091463          	bnez	s2,e88304a2 <SetupInterfaceList+0x1f2>
    e883047e:	02f00593          	li	a1,47
    e8830482:	0007b517          	auipc	a0,0x7b
    e8830486:	78650513          	addi	a0,a0,1926 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e883048a:	6ef4b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e883048e:	00150593          	addi	a1,a0,1
    e8830492:	21500613          	li	a2,533
    e8830496:	00070517          	auipc	a0,0x70
    e883049a:	d1a50513          	addi	a0,a0,-742 # e88a01b0 <TWO52+0x5b8>
    e883049e:	6294b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(intfName != NULL);
    e88304a2:	02099463          	bnez	s3,e88304ca <SetupInterfaceList+0x21a>
    e88304a6:	02f00593          	li	a1,47
    e88304aa:	0007b517          	auipc	a0,0x7b
    e88304ae:	75e50513          	addi	a0,a0,1886 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e88304b2:	6c74b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88304b6:	00150593          	addi	a1,a0,1
    e88304ba:	21600613          	li	a2,534
    e88304be:	00070517          	auipc	a0,0x70
    e88304c2:	cf250513          	addi	a0,a0,-782 # e88a01b0 <TWO52+0x5b8>
    e88304c6:	6014b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    intf = (PosixNetworkInterface*)(m->HostInterfaces);
    e88304ca:	678d                	lui	a5,0x3
    e88304cc:	97ca                	add	a5,a5,s2
    e88304ce:	1e07b483          	ld	s1,480(a5) # 31e0 <memcmp-0xe87fce20>
    while ((intf != NULL) && (strcmp(intf->intfName, intfName) != 0))
    e88304d2:	6a09                	lui	s4,0x2
    e88304d4:	cca5                	beqz	s1,e883054c <SetupInterfaceList+0x29c>
    e88304d6:	014487b3          	add	a5,s1,s4
    e88304da:	a787b503          	ld	a0,-1416(a5)
    e88304de:	85ce                	mv	a1,s3
    e88304e0:	65d4b0ef          	jal	ra,e887c33c <eLIBs_strcmp>
    e88304e4:	e135                	bnez	a0,e8830548 <SetupInterfaceList+0x298>
        intf->coreIntf.InterfaceID = (mDNSInterfaceID)alias;
    e88304e6:	6689                	lui	a3,0x2
        if (alias->multicastSocket4 == -1 && intfAddr->sa_family == AF_INET)
    e88304e8:	00d48733          	add	a4,s1,a3
        intf->coreIntf.InterfaceID = (mDNSInterfaceID)alias;
    e88304ec:	00d407b3          	add	a5,s0,a3
    e88304f0:	9e97b823          	sd	s1,-1552(a5)
        if (alias->multicastSocket4 == -1 && intfAddr->sa_family == AF_INET)
    e88304f4:	a8c72603          	lw	a2,-1396(a4)
    e88304f8:	577d                	li	a4,-1
    e88304fa:	00e61963          	bne	a2,a4,e883050c <SetupInterfaceList+0x25c>
    e88304fe:	03114603          	lbu	a2,49(sp)
    e8830502:	4709                	li	a4,2
            err = SetupSocket(intfAddr, MulticastDNSPort, intf->index, &alias->multicastSocket4);
    e8830504:	a8c68693          	addi	a3,a3,-1396 # 1a8c <memcmp-0xe87fe574>
        if (alias->multicastSocket4 == -1 && intfAddr->sa_family == AF_INET)
    e8830508:	02e60363          	beq	a2,a4,e883052e <SetupInterfaceList+0x27e>
        else if (alias->multicastSocket6 == -1 && intfAddr->sa_family == AF_INET6)
    e883050c:	6789                	lui	a5,0x2
    e883050e:	00f48733          	add	a4,s1,a5
    e8830512:	a9072683          	lw	a3,-1392(a4)
    e8830516:	577d                	li	a4,-1
    e8830518:	4501                	li	a0,0
    e883051a:	e6e693e3          	bne	a3,a4,e8830380 <SetupInterfaceList+0xd0>
    e883051e:	03114683          	lbu	a3,49(sp)
    e8830522:	4729                	li	a4,10
    e8830524:	e4e69ee3          	bne	a3,a4,e8830380 <SetupInterfaceList+0xd0>
            err = SetupSocket(intfAddr, MulticastDNSPort, intf->index, &alias->multicastSocket6);
    e8830528:	a9078693          	addi	a3,a5,-1392 # 1a90 <memcmp-0xe87fe570>
    e883052c:	97a2                	add	a5,a5,s0
    e883052e:	a887a603          	lw	a2,-1400(a5)
    e8830532:	00072797          	auipc	a5,0x72
    e8830536:	02678793          	addi	a5,a5,38 # e88a2558 <MulticastDNSPort>
    e883053a:	0007d583          	lhu	a1,0(a5)
    e883053e:	96a6                	add	a3,a3,s1
    e8830540:	1808                	addi	a0,sp,48
    e8830542:	8f3ff0ef          	jal	ra,e882fe34 <SetupSocket>
    e8830546:	bd2d                	j	e8830380 <SetupInterfaceList+0xd0>
        intf = (PosixNetworkInterface *)(intf->coreIntf.next);
    e8830548:	6084                	ld	s1,0(s1)
    e883054a:	b769                	j	e88304d4 <SetupInterfaceList+0x224>
    while ((intf != NULL) && (strcmp(intf->intfName, intfName) != 0))
    e883054c:	84a2                	mv	s1,s0
    e883054e:	bf61                	j	e88304e6 <SetupInterfaceList+0x236>
        if (intf) { FreePosixNetworkInterface(intf); intf = NULL; }
    e8830550:	e60404e3          	beqz	s0,e88303b8 <SetupInterfaceList+0x108>
    e8830554:	8522                	mv	a0,s0
    e8830556:	f6dfe0ef          	jal	ra,e882f4c2 <FreePosixNetworkInterface>
    e883055a:	bdb9                	j	e88303b8 <SetupInterfaceList+0x108>
    assert((err == 0) == (intf != NULL));
    e883055c:	02f00593          	li	a1,47
    e8830560:	0007b517          	auipc	a0,0x7b
    e8830564:	6a850513          	addi	a0,a0,1704 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e8830568:	6114b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e883056c:	00150593          	addi	a1,a0,1
    e8830570:	41000613          	li	a2,1040
    e8830574:	00070517          	auipc	a0,0x70
    e8830578:	c3c50513          	addi	a0,a0,-964 # e88a01b0 <TWO52+0x5b8>
    e883057c:	54b4b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return err;
    e8830580:	bd25                	j	e88303b8 <SetupInterfaceList+0x108>
        if (utc - pi->LastSeen < 60) ri = (PosixNetworkInterface **)&pi->coreIntf.next;
    e8830582:	012507b3          	add	a5,a0,s2
    e8830586:	a707a783          	lw	a5,-1424(a5)
    e883058a:	40f487bb          	subw	a5,s1,a5
    e883058e:	00f9c463          	blt	s3,a5,e8830596 <SetupInterfaceList+0x2e6>
    e8830592:	842a                	mv	s0,a0
    e8830594:	bd25                	j	e88303cc <SetupInterfaceList+0x11c>
    e8830596:	611c                	ld	a5,0(a0)
        else { *ri = (PosixNetworkInterface *)pi->coreIntf.next; free(pi); }
    e8830598:	e01c                	sd	a5,0(s0)
    e883059a:	5674b0ef          	jal	ra,e887c300 <eLIBs_free>
    e883059e:	b53d                	j	e88303cc <SetupInterfaceList+0x11c>

00000000e88305a0 <mDNSPlatformPosixRefreshInterfaceList>:
{
    e88305a0:	1141                	addi	sp,sp,-16
    e88305a2:	e022                	sd	s0,0(sp)
    e88305a4:	e406                	sd	ra,8(sp)
    e88305a6:	842a                	mv	s0,a0
    ClearInterfaceList(m);
    e88305a8:	fd3fe0ef          	jal	ra,e882f57a <ClearInterfaceList>
    err = SetupInterfaceList(m);
    e88305ac:	8522                	mv	a0,s0
    e88305ae:	d03ff0ef          	jal	ra,e88302b0 <SetupInterfaceList>
    return PosixErrorToStatus(err);
    e88305b2:	c119                	beqz	a0,e88305b8 <mDNSPlatformPosixRefreshInterfaceList+0x18>
    e88305b4:	7541                	lui	a0,0xffff0
    e88305b6:	157d                	addi	a0,a0,-1
}
    e88305b8:	60a2                	ld	ra,8(sp)
    e88305ba:	6402                	ld	s0,0(sp)
    e88305bc:	0141                	addi	sp,sp,16
    e88305be:	8082                	ret

00000000e88305c0 <mDNSPlatformInit>:
{
    e88305c0:	7139                	addi	sp,sp,-64
    e88305c2:	ec22                	sd	s0,24(sp)
    e88305c4:	fc06                	sd	ra,56(sp)
    e88305c6:	f026                	sd	s1,32(sp)
    e88305c8:	f44a                	sd	s2,40(sp)
    e88305ca:	f84e                	sd	s3,48(sp)
    e88305cc:	842a                	mv	s0,a0
    assert(m != NULL);
    e88305ce:	e11d                	bnez	a0,e88305f4 <mDNSPlatformInit+0x34>
    e88305d0:	02f00593          	li	a1,47
    e88305d4:	0007b517          	auipc	a0,0x7b
    e88305d8:	63450513          	addi	a0,a0,1588 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e88305dc:	59d4b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88305e0:	00150593          	addi	a1,a0,1
    e88305e4:	58200613          	li	a2,1410
    e88305e8:	00070517          	auipc	a0,0x70
    e88305ec:	bc850513          	addi	a0,a0,-1080 # e88a01b0 <TWO52+0x5b8>
    e88305f0:	4d74b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    int s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    e88305f4:	4645                	li	a2,17
    e88305f6:	4589                	li	a1,2
    e88305f8:	4509                	li	a0,2
    e88305fa:	626550ef          	jal	ra,e8885c20 <lwip_socket>
    e88305fe:	892a                	mv	s2,a0
    s5353.sin_family      = AF_INET;
    e8830600:	4789                	li	a5,2
    e8830602:	00f100a3          	sb	a5,1(sp)
    s5353.sin_port        = MulticastDNSPort.NotAnInteger;
    e8830606:	00072797          	auipc	a5,0x72
    e883060a:	f5278793          	addi	a5,a5,-174 # e88a2558 <MulticastDNSPort>
    e883060e:	0007d783          	lhu	a5,0(a5)
    err = bind(s, (struct sockaddr *)&s5353, sizeof(s5353));
    e8830612:	4641                	li	a2,16
    e8830614:	858a                	mv	a1,sp
    s5353.sin_port        = MulticastDNSPort.NotAnInteger;
    e8830616:	00f11123          	sh	a5,2(sp)
    s5353.sin_addr.s_addr = 0;
    e883061a:	c202                	sw	zero,4(sp)
    err = bind(s, (struct sockaddr *)&s5353, sizeof(s5353));
    e883061c:	2a1540ef          	jal	ra,e88850bc <lwip_bind>
    e8830620:	84aa                	mv	s1,a0
    close(s);
    e8830622:	854a                	mv	a0,s2
    e8830624:	37f540ef          	jal	ra,e88851a2 <lwip_close>
    if (mDNSPlatformInit_CanReceiveUnicast()) m->CanReceiveUnicastOn5353 = mDNStrue;
    e8830628:	e481                	bnez	s1,e8830630 <mDNSPlatformInit+0x70>
    e883062a:	4785                	li	a5,1
    e883062c:	00f40623          	sb	a5,12(s0)
    m->nicelabel.c[0] = 0;
    e8830630:	648d                	lui	s1,0x3
    e8830632:	00940933          	add	s2,s0,s1
    GetUserSpecifiedFriendlyComputerName(&m->nicelabel);
    e8830636:	a2848513          	addi	a0,s1,-1496 # 2a28 <memcmp-0xe87fd5d8>
    m->nicelabel.c[0] = 0;
    e883063a:	a2090423          	sb	zero,-1496(s2)
    if (m->nicelabel.c[0] == 0) MakeDomainLabelFromLiteralString(&m->nicelabel, "Computer");
    e883063e:	0007c597          	auipc	a1,0x7c
    e8830642:	91258593          	addi	a1,a1,-1774 # e88abf50 <kOn.10632+0x8>
    e8830646:	9522                	add	a0,a0,s0
    e8830648:	e5de20ef          	jal	ra,e88134a4 <MakeDomainLabelFromLiteralString>
    m->hostlabel.c[0] = 0;
    e883064c:	a6090423          	sb	zero,-1432(s2)
    GetUserSpecifiedRFC1034ComputerName(&m->hostlabel);
    e8830650:	a6848513          	addi	a0,s1,-1432
    if (m->hostlabel.c[0] == 0) MakeDomainLabelFromLiteralString(&m->hostlabel, "Computer");
    e8830654:	0007c597          	auipc	a1,0x7c
    e8830658:	8fc58593          	addi	a1,a1,-1796 # e88abf50 <kOn.10632+0x8>
    e883065c:	9522                	add	a0,a0,s0
    e883065e:	e47e20ef          	jal	ra,e88134a4 <MakeDomainLabelFromLiteralString>
    m->p->unicastSocket4 = -1;
    e8830662:	59fd                	li	s3,-1
    mDNS_SetFQDN(m);
    e8830664:	8522                	mv	a0,s0
    e8830666:	fb5f30ef          	jal	ra,e882461a <mDNS_SetFQDN>
    sa.sa_family = AF_INET;
    e883066a:	4789                	li	a5,2
    e883066c:	00f100a3          	sb	a5,1(sp)
    m->p->unicastSocket4 = -1;
    e8830670:	601c                	ld	a5,0(s0)
    if (err == mStatus_NoError) err = SetupSocket(&sa, zeroIPPort, 0, &m->p->unicastSocket4);
    e8830672:	4601                	li	a2,0
    e8830674:	850a                	mv	a0,sp
    m->p->unicastSocket4 = -1;
    e8830676:	0137a023          	sw	s3,0(a5)
    if (err == mStatus_NoError) err = SetupSocket(&sa, zeroIPPort, 0, &m->p->unicastSocket4);
    e883067a:	00073797          	auipc	a5,0x73
    e883067e:	f2e78793          	addi	a5,a5,-210 # e88a35a8 <zeroIPPort>
    e8830682:	0007d903          	lhu	s2,0(a5)
    e8830686:	6014                	ld	a3,0(s0)
    e8830688:	85ca                	mv	a1,s2
    e883068a:	faaff0ef          	jal	ra,e882fe34 <SetupSocket>
    e883068e:	84aa                	mv	s1,a0
    sa.sa_family = AF_INET6;
    e8830690:	47a9                	li	a5,10
    e8830692:	00f100a3          	sb	a5,1(sp)
    m->p->unicastSocket6 = -1;
    e8830696:	601c                	ld	a5,0(s0)
    e8830698:	0137a223          	sw	s3,4(a5)
    if (err == mStatus_NoError) err = SetupSocket(&sa, zeroIPPort, 0, &m->p->unicastSocket6);
    e883069c:	ed11                	bnez	a0,e88306b8 <mDNSPlatformInit+0xf8>
    e883069e:	6014                	ld	a3,0(s0)
    e88306a0:	4601                	li	a2,0
    e88306a2:	85ca                	mv	a1,s2
    e88306a4:	0691                	addi	a3,a3,4
    e88306a6:	850a                	mv	a0,sp
    e88306a8:	f8cff0ef          	jal	ra,e882fe34 <SetupSocket>
    e88306ac:	84aa                	mv	s1,a0
    if (err == mStatus_NoError) err = SetupInterfaceList(m);
    e88306ae:	e509                	bnez	a0,e88306b8 <mDNSPlatformInit+0xf8>
    e88306b0:	8522                	mv	a0,s0
    e88306b2:	bffff0ef          	jal	ra,e88302b0 <SetupInterfaceList>
    e88306b6:	84aa                	mv	s1,a0
    mDNS_Lock(m);
    e88306b8:	0007c597          	auipc	a1,0x7c
    e88306bc:	87858593          	addi	a1,a1,-1928 # e88abf30 <__func__.10719>
    e88306c0:	8522                	mv	a0,s0
    e88306c2:	b40e50ef          	jal	ra,e8815a02 <mDNS_Lock_>
    mDNS_Unlock(m);
    e88306c6:	0007c597          	auipc	a1,0x7c
    e88306ca:	86a58593          	addi	a1,a1,-1942 # e88abf30 <__func__.10719>
    e88306ce:	8522                	mv	a0,s0
    e88306d0:	bfce50ef          	jal	ra,e8815acc <mDNS_Unlock_>
    if (err == mStatus_NoError)
    e88306d4:	ec9d                	bnez	s1,e8830712 <mDNSPlatformInit+0x152>
    pChgRec = (IfChangeRec*) mDNSPlatformMemAllocate(sizeof *pChgRec);
    e88306d6:	4541                	li	a0,16
    e88306d8:	b8bff0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    if (pChgRec == NULL)
    e88306dc:	c905                	beqz	a0,e883070c <mDNSPlatformInit+0x14c>
    *pFD = -1;
    e88306de:	57fd                	li	a5,-1
    return err;
    e88306e0:	75c1                	lui	a1,0xffff0
    pChgRec->mDNS = m;
    e88306e2:	e500                	sd	s0,8(a0)
    *pFD = -1;
    e88306e4:	c11c                	sw	a5,0(a0)
    return err;
    e88306e6:	15fd                	addi	a1,a1,-1
			printf("mDNS WARNING: Unable to detect interface changes (%d).\n",err);
    e88306e8:	0007c517          	auipc	a0,0x7c
    e88306ec:	87850513          	addi	a0,a0,-1928 # e88abf60 <kOn.10632+0x18>
    e88306f0:	3d74b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        mDNSCoreInitComplete(m, mStatus_NoError);
    e88306f4:	4581                	li	a1,0
    e88306f6:	8522                	mv	a0,s0
    e88306f8:	d35fe0ef          	jal	ra,e882f42c <mDNSCoreInitComplete>
}
    e88306fc:	70e2                	ld	ra,56(sp)
    e88306fe:	6462                	ld	s0,24(sp)
    e8830700:	8526                	mv	a0,s1
    e8830702:	7922                	ld	s2,40(sp)
    e8830704:	7482                	ld	s1,32(sp)
    e8830706:	79c2                	ld	s3,48(sp)
    e8830708:	6121                	addi	sp,sp,64
    e883070a:	8082                	ret
        return mStatus_NoMemoryErr;
    e883070c:	75c1                	lui	a1,0xffff0
    e883070e:	15f5                	addi	a1,a1,-3
    e8830710:	bfe1                	j	e88306e8 <mDNSPlatformInit+0x128>
    return PosixErrorToStatus(err);
    e8830712:	74c1                	lui	s1,0xffff0
    e8830714:	14fd                	addi	s1,s1,-1
    e8830716:	b7dd                	j	e88306fc <mDNSPlatformInit+0x13c>

00000000e8830718 <mDNSPlatformSendWakeupPacket>:
}
    e8830718:	8082                	ret

00000000e883071a <mDNSPlatformValidRecordForInterface>:
}
    e883071a:	4505                	li	a0,1
    e883071c:	8082                	ret

00000000e883071e <mDNSPlatformValidQuestionForInterface>:
    e883071e:	4505                	li	a0,1
    e8830720:	8082                	ret

00000000e8830722 <mDNSPlatformSendKeepalive>:
}
    e8830722:	8082                	ret

00000000e8830724 <mDNSPlatformRetrieveTCPInfo>:
}
    e8830724:	4501                	li	a0,0
    e8830726:	8082                	ret

00000000e8830728 <mDNSPlatformGetRemoteMacAddr>:
}
    e8830728:	4501                	li	a0,0
    e883072a:	8082                	ret

00000000e883072c <mDNSPlatformStoreSPSMACAddr>:
}
    e883072c:	4501                	li	a0,0
    e883072e:	8082                	ret

00000000e8830730 <mDNSPlatformClearSPSData>:
    e8830730:	4501                	li	a0,0
    e8830732:	8082                	ret

00000000e8830734 <mDNSPlatformStoreOwnerOptRecord>:
}
    e8830734:	7541                	lui	a0,0xffff0
    e8830736:	1561                	addi	a0,a0,-8
    e8830738:	8082                	ret

00000000e883073a <mDNSPlatformInterfaceIsD2D>:
}
    e883073a:	4501                	li	a0,0
    e883073c:	8082                	ret

00000000e883073e <mDNSPlatformSetSocktOpt>:
}
    e883073e:	8082                	ret

00000000e8830740 <mDNSPlatformGetPID>:
    e8830740:	4501                	li	a0,0
    e8830742:	8082                	ret

00000000e8830744 <mDNSPosixGetFDSet>:
#if 1
mDNSexport void mDNSPosixGetFDSet(mDNS *m, int *nfds, fd_set *readfds, struct timeval *timeout)
{
    e8830744:	715d                	addi	sp,sp,-80
    e8830746:	e0a2                	sd	s0,64(sp)
    e8830748:	fc26                	sd	s1,56(sp)
    e883074a:	f84a                	sd	s2,48(sp)
    e883074c:	f44e                	sd	s3,40(sp)
    e883074e:	f052                	sd	s4,32(sp)
    e8830750:	ec56                	sd	s5,24(sp)
    e8830752:	8932                	mv	s2,a2
    e8830754:	8aaa                	mv	s5,a0
    e8830756:	e486                	sd	ra,72(sp)
    e8830758:	e85a                	sd	s6,16(sp)
    e883075a:	e45e                	sd	s7,8(sp)
    e883075c:	84ae                	mv	s1,a1
    e883075e:	8a36                	mv	s4,a3
    mDNSs32 ticks;
    struct timeval interval;

    // 1. Call mDNS_Execute() to let mDNSCore do what it needs to do
    mDNSs32 nextevent = mDNS_Execute(m);
    e8830760:	c38fd0ef          	jal	ra,e882db98 <mDNS_Execute>
    e8830764:	842a                	mv	s0,a0

    // 2. Build our list of active file descriptors
    PosixNetworkInterface *info = (PosixNetworkInterface *)(m->HostInterfaces);
    e8830766:	678d                	lui	a5,0x3
    e8830768:	97d6                	add	a5,a5,s5
    e883076a:	1e07b983          	ld	s3,480(a5) # 31e0 <memcmp-0xe87fce20>
    if (m->p->unicastSocket4 != -1) mDNSPosixAddToFDSet(nfds, readfds, m->p->unicastSocket4);
    e883076e:	000ab783          	ld	a5,0(s5)
    e8830772:	4390                	lw	a2,0(a5)
    e8830774:	57fd                	li	a5,-1
    e8830776:	00f60663          	beq	a2,a5,e8830782 <mDNSPosixGetFDSet+0x3e>
    e883077a:	85ca                	mv	a1,s2
    e883077c:	8526                	mv	a0,s1
    e883077e:	94eff0ef          	jal	ra,e882f8cc <mDNSPosixAddToFDSet>
#if HAVE_IPV6
    if (m->p->unicastSocket6 != -1) mDNSPosixAddToFDSet(nfds, readfds, m->p->unicastSocket6);
    e8830782:	000ab783          	ld	a5,0(s5)
    e8830786:	43d0                	lw	a2,4(a5)
    e8830788:	57fd                	li	a5,-1
    e883078a:	00f60663          	beq	a2,a5,e8830796 <mDNSPosixGetFDSet+0x52>
    e883078e:	85ca                	mv	a1,s2
    e8830790:	8526                	mv	a0,s1
    e8830792:	93aff0ef          	jal	ra,e882f8cc <mDNSPosixAddToFDSet>
#endif
    while (info)
    {
        if (info->multicastSocket4 != -1) mDNSPosixAddToFDSet(nfds, readfds, info->multicastSocket4);
    e8830796:	6b09                	lui	s6,0x2
    e8830798:	5bfd                	li	s7,-1
    e883079a:	a03d                	j	e88307c8 <mDNSPosixGetFDSet+0x84>
    e883079c:	016987b3          	add	a5,s3,s6
    e88307a0:	a8c7a603          	lw	a2,-1396(a5)
    e88307a4:	01760663          	beq	a2,s7,e88307b0 <mDNSPosixGetFDSet+0x6c>
    e88307a8:	85ca                	mv	a1,s2
    e88307aa:	8526                	mv	a0,s1
    e88307ac:	920ff0ef          	jal	ra,e882f8cc <mDNSPosixAddToFDSet>
#if HAVE_IPV6
        if (info->multicastSocket6 != -1) mDNSPosixAddToFDSet(nfds, readfds, info->multicastSocket6);
    e88307b0:	016987b3          	add	a5,s3,s6
    e88307b4:	a907a603          	lw	a2,-1392(a5)
    e88307b8:	01760663          	beq	a2,s7,e88307c4 <mDNSPosixGetFDSet+0x80>
    e88307bc:	85ca                	mv	a1,s2
    e88307be:	8526                	mv	a0,s1
    e88307c0:	90cff0ef          	jal	ra,e882f8cc <mDNSPosixAddToFDSet>
#endif
        info = (PosixNetworkInterface *)(info->coreIntf.next);
    e88307c4:	0009b983          	ld	s3,0(s3)
    while (info)
    e88307c8:	fc099ae3          	bnez	s3,e883079c <mDNSPosixGetFDSet+0x58>
    }
	
	if(acceptfd != -1) mDNSPosixAddToFDSet(nfds, readfds, acceptfd);
    e88307cc:	000a4797          	auipc	a5,0xa4
    e88307d0:	2ac78793          	addi	a5,a5,684 # e88d4a78 <acceptfd>
    e88307d4:	4390                	lw	a2,0(a5)
    e88307d6:	57fd                	li	a5,-1
    e88307d8:	00f60663          	beq	a2,a5,e88307e4 <mDNSPosixGetFDSet+0xa0>
    e88307dc:	85ca                	mv	a1,s2
    e88307de:	8526                	mv	a0,s1
    e88307e0:	8ecff0ef          	jal	ra,e882f8cc <mDNSPosixAddToFDSet>

    // 3. Calculate the time remaining to the next scheduled event (in struct timeval format)
    ticks = nextevent - mDNS_TimeNow(m);
    e88307e4:	8556                	mv	a0,s5
    e88307e6:	fc9ef0ef          	jal	ra,e88207ae <mDNS_TimeNow>
    e88307ea:	40a407bb          	subw	a5,s0,a0
    e88307ee:	853e                	mv	a0,a5
    if (ticks < 1) ticks = 1;
    e88307f0:	00f04363          	bgtz	a5,e88307f6 <mDNSPosixGetFDSet+0xb2>
    e88307f4:	4505                	li	a0,1
    interval.tv_sec  = ticks / 100;                     // The high 22 bits are seconds
    e88307f6:	06400713          	li	a4,100
    e88307fa:	02e547bb          	divw	a5,a0,a4
    interval.tv_usec = (ticks % 100)*10*1000;  // The low 10 bits are 1024ths
    e88307fe:	02e5653b          	remw	a0,a0,a4
    e8830802:	6709                	lui	a4,0x2
    e8830804:	7107071b          	addiw	a4,a4,1808
    e8830808:	02e5053b          	mulw	a0,a0,a4

    // 4. If client's proposed timeout is more than what we want, then reduce it
    if (timeout->tv_sec > interval.tv_sec ||
    e883080c:	000a3703          	ld	a4,0(s4) # 2000 <memcmp-0xe87fe000>
    e8830810:	00e7c863          	blt	a5,a4,e8830820 <mDNSPosixGetFDSet+0xdc>
    e8830814:	00e79863          	bne	a5,a4,e8830824 <mDNSPosixGetFDSet+0xe0>
        (timeout->tv_sec == interval.tv_sec && timeout->tv_usec > interval.tv_usec))
    e8830818:	008a3703          	ld	a4,8(s4)
    e883081c:	00e55463          	bge	a0,a4,e8830824 <mDNSPosixGetFDSet+0xe0>
        *timeout = interval;
    e8830820:	f8aa578b          	sdd	a5,a0,(s4),0,4
}
    e8830824:	60a6                	ld	ra,72(sp)
    e8830826:	6406                	ld	s0,64(sp)
    e8830828:	74e2                	ld	s1,56(sp)
    e883082a:	7942                	ld	s2,48(sp)
    e883082c:	79a2                	ld	s3,40(sp)
    e883082e:	7a02                	ld	s4,32(sp)
    e8830830:	6ae2                	ld	s5,24(sp)
    e8830832:	6b42                	ld	s6,16(sp)
    e8830834:	6ba2                	ld	s7,8(sp)
    e8830836:	6161                	addi	sp,sp,80
    e8830838:	8082                	ret

00000000e883083a <mDNSPosixProcessFDSet>:

mDNSexport void mDNSPosixProcessFDSet(mDNS *const m, fd_set *readfds)
{
    e883083a:	7139                	addi	sp,sp,-64
    e883083c:	f04e                	sd	s3,32(sp)
    e883083e:	f452                	sd	s4,40(sp)
    e8830840:	fc06                	sd	ra,56(sp)
    e8830842:	e422                	sd	s0,8(sp)
    e8830844:	e826                	sd	s1,16(sp)
    e8830846:	ec4a                	sd	s2,24(sp)
    e8830848:	f856                	sd	s5,48(sp)
    e883084a:	8a2a                	mv	s4,a0
    e883084c:	89ae                	mv	s3,a1
    PosixNetworkInterface *info;
    assert(m       != NULL);
    e883084e:	e11d                	bnez	a0,e8830874 <mDNSPosixProcessFDSet+0x3a>
    e8830850:	02f00593          	li	a1,47
    e8830854:	0007b517          	auipc	a0,0x7b
    e8830858:	3b450513          	addi	a0,a0,948 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e883085c:	31d4b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8830860:	00150593          	addi	a1,a0,1
    e8830864:	73900613          	li	a2,1849
    e8830868:	00070517          	auipc	a0,0x70
    e883086c:	94850513          	addi	a0,a0,-1720 # e88a01b0 <TWO52+0x5b8>
    e8830870:	2574b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    assert(readfds != NULL);
    e8830874:	02099463          	bnez	s3,e883089c <mDNSPosixProcessFDSet+0x62>
    e8830878:	02f00593          	li	a1,47
    e883087c:	0007b517          	auipc	a0,0x7b
    e8830880:	38c50513          	addi	a0,a0,908 # e88abc08 <mDNS_DomainTypeNames+0x2258>
    e8830884:	2f54b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8830888:	00150593          	addi	a1,a0,1
    e883088c:	73a00613          	li	a2,1850
    e8830890:	00070517          	auipc	a0,0x70
    e8830894:	92050513          	addi	a0,a0,-1760 # e88a01b0 <TWO52+0x5b8>
    e8830898:	22f4b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    info = (PosixNetworkInterface *)(m->HostInterfaces);
    e883089c:	678d                	lui	a5,0x3
    e883089e:	97d2                	add	a5,a5,s4
    e88308a0:	1e07ba83          	ld	s5,480(a5) # 31e0 <memcmp-0xe87fce20>

    if (m->p->unicastSocket4 != -1 && FD_ISSET(m->p->unicastSocket4, readfds))
    e88308a4:	000a3783          	ld	a5,0(s4)
    e88308a8:	03100713          	li	a4,49
    e88308ac:	439c                	lw	a5,0(a5)
    e88308ae:	02f76b63          	bltu	a4,a5,e88308e4 <mDNSPosixProcessFDSet+0xaa>
    e88308b2:	4037d613          	srai	a2,a5,0x3
    e88308b6:	80c9c58b          	lrbu	a1,s3,a2,0
    e88308ba:	0077f713          	andi	a4,a5,7
    e88308be:	40e5d6bb          	sraw	a3,a1,a4
    e88308c2:	8a85                	andi	a3,a3,1
    e88308c4:	c285                	beqz	a3,e88308e4 <mDNSPosixProcessFDSet+0xaa>
    {
        FD_CLR(m->p->unicastSocket4, readfds);
    e88308c6:	4785                	li	a5,1
    e88308c8:	00e797bb          	sllw	a5,a5,a4
    e88308cc:	fff7c793          	not	a5,a5
    e88308d0:	8fed                	and	a5,a5,a1
    e88308d2:	00c9d78b          	srb	a5,s3,a2,0
        SocketDataReady(m, NULL, m->p->unicastSocket4);
    e88308d6:	000a3783          	ld	a5,0(s4)
    e88308da:	4581                	li	a1,0
    e88308dc:	8552                	mv	a0,s4
    e88308de:	4390                	lw	a2,0(a5)
    e88308e0:	db3fe0ef          	jal	ra,e882f692 <SocketDataReady>
    }
#if HAVE_IPV6
    if (m->p->unicastSocket6 != -1 && FD_ISSET(m->p->unicastSocket6, readfds))
    e88308e4:	000a3783          	ld	a5,0(s4)
    e88308e8:	03100713          	li	a4,49
    e88308ec:	43dc                	lw	a5,4(a5)
    e88308ee:	02f76b63          	bltu	a4,a5,e8830924 <mDNSPosixProcessFDSet+0xea>
    e88308f2:	4037d613          	srai	a2,a5,0x3
    e88308f6:	80c9c58b          	lrbu	a1,s3,a2,0
    e88308fa:	0077f713          	andi	a4,a5,7
    e88308fe:	40e5d6bb          	sraw	a3,a1,a4
    e8830902:	8a85                	andi	a3,a3,1
    e8830904:	c285                	beqz	a3,e8830924 <mDNSPosixProcessFDSet+0xea>
    {
        FD_CLR(m->p->unicastSocket6, readfds);
    e8830906:	4785                	li	a5,1
    e8830908:	00e797bb          	sllw	a5,a5,a4
    e883090c:	fff7c793          	not	a5,a5
    e8830910:	8fed                	and	a5,a5,a1
    e8830912:	00c9d78b          	srb	a5,s3,a2,0
        SocketDataReady(m, NULL, m->p->unicastSocket6);
    e8830916:	000a3783          	ld	a5,0(s4)
    e883091a:	4581                	li	a1,0
    e883091c:	8552                	mv	a0,s4
    e883091e:	43d0                	lw	a2,4(a5)
    e8830920:	d73fe0ef          	jal	ra,e882f692 <SocketDataReady>
    }
#endif

    while (info)
    {
        if (info->multicastSocket4 != -1 && FD_ISSET(info->multicastSocket4, readfds))
    e8830924:	6409                	lui	s0,0x2
    e8830926:	03100493          	li	s1,49
        {
            FD_CLR(info->multicastSocket4, readfds);
    e883092a:	4905                	li	s2,1
    while (info)
    e883092c:	040a9763          	bnez	s5,e883097a <mDNSPosixProcessFDSet+0x140>
        }
#endif
        info = (PosixNetworkInterface *)(info->coreIntf.next);
    }

	if(acceptfd != -1 && FD_ISSET(acceptfd, readfds))
    e8830930:	000a4797          	auipc	a5,0xa4
    e8830934:	14878793          	addi	a5,a5,328 # e88d4a78 <acceptfd>
    e8830938:	439c                	lw	a5,0(a5)
    e883093a:	03100713          	li	a4,49
    e883093e:	0af76963          	bltu	a4,a5,e88309f0 <mDNSPosixProcessFDSet+0x1b6>
    e8830942:	4037d613          	srai	a2,a5,0x3
    e8830946:	80c9c58b          	lrbu	a1,s3,a2,0
    e883094a:	0077f713          	andi	a4,a5,7
    e883094e:	40e5d6bb          	sraw	a3,a1,a4
    e8830952:	8a85                	andi	a3,a3,1
    e8830954:	ced1                	beqz	a3,e88309f0 <mDNSPosixProcessFDSet+0x1b6>
	{
         FD_CLR(acceptfd, readfds);
    e8830956:	4785                	li	a5,1
    e8830958:	00e797bb          	sllw	a5,a5,a4
    e883095c:	fff7c793          	not	a5,a5
		 DeleteCarplayNotify();
	}
}
    e8830960:	6422                	ld	s0,8(sp)
         FD_CLR(acceptfd, readfds);
    e8830962:	8fed                	and	a5,a5,a1
    e8830964:	00c9d78b          	srb	a5,s3,a2,0
}
    e8830968:	70e2                	ld	ra,56(sp)
    e883096a:	64c2                	ld	s1,16(sp)
    e883096c:	6962                	ld	s2,24(sp)
    e883096e:	7982                	ld	s3,32(sp)
    e8830970:	7a22                	ld	s4,40(sp)
    e8830972:	7ac2                	ld	s5,48(sp)
    e8830974:	6121                	addi	sp,sp,64
		 DeleteCarplayNotify();
    e8830976:	904ff06f          	j	e882fa7a <DeleteCarplayNotify>
        if (info->multicastSocket4 != -1 && FD_ISSET(info->multicastSocket4, readfds))
    e883097a:	008a86b3          	add	a3,s5,s0
    e883097e:	a8c6a783          	lw	a5,-1396(a3)
    e8830982:	02f4e863          	bltu	s1,a5,e88309b2 <mDNSPosixProcessFDSet+0x178>
    e8830986:	4037d613          	srai	a2,a5,0x3
    e883098a:	80c9c58b          	lrbu	a1,s3,a2,0
    e883098e:	8b9d                	andi	a5,a5,7
    e8830990:	40f5d73b          	sraw	a4,a1,a5
    e8830994:	8b05                	andi	a4,a4,1
    e8830996:	cf11                	beqz	a4,e88309b2 <mDNSPosixProcessFDSet+0x178>
            FD_CLR(info->multicastSocket4, readfds);
    e8830998:	00f917bb          	sllw	a5,s2,a5
    e883099c:	fff7c793          	not	a5,a5
    e88309a0:	8fed                	and	a5,a5,a1
    e88309a2:	00c9d78b          	srb	a5,s3,a2,0
            SocketDataReady(m, info, info->multicastSocket4);
    e88309a6:	a8c6a603          	lw	a2,-1396(a3)
    e88309aa:	85d6                	mv	a1,s5
    e88309ac:	8552                	mv	a0,s4
    e88309ae:	ce5fe0ef          	jal	ra,e882f692 <SocketDataReady>
        if (info->multicastSocket6 != -1 && FD_ISSET(info->multicastSocket6, readfds))
    e88309b2:	008a86b3          	add	a3,s5,s0
    e88309b6:	a906a783          	lw	a5,-1392(a3)
    e88309ba:	02f4e863          	bltu	s1,a5,e88309ea <mDNSPosixProcessFDSet+0x1b0>
    e88309be:	4037d613          	srai	a2,a5,0x3
    e88309c2:	80c9c58b          	lrbu	a1,s3,a2,0
    e88309c6:	8b9d                	andi	a5,a5,7
    e88309c8:	40f5d73b          	sraw	a4,a1,a5
    e88309cc:	8b05                	andi	a4,a4,1
    e88309ce:	cf11                	beqz	a4,e88309ea <mDNSPosixProcessFDSet+0x1b0>
            FD_CLR(info->multicastSocket6, readfds);
    e88309d0:	00f917bb          	sllw	a5,s2,a5
    e88309d4:	fff7c793          	not	a5,a5
    e88309d8:	8fed                	and	a5,a5,a1
    e88309da:	00c9d78b          	srb	a5,s3,a2,0
            SocketDataReady(m, info, info->multicastSocket6);
    e88309de:	a906a603          	lw	a2,-1392(a3)
    e88309e2:	85d6                	mv	a1,s5
    e88309e4:	8552                	mv	a0,s4
    e88309e6:	cadfe0ef          	jal	ra,e882f692 <SocketDataReady>
        info = (PosixNetworkInterface *)(info->coreIntf.next);
    e88309ea:	000aba83          	ld	s5,0(s5)
    e88309ee:	bf3d                	j	e883092c <mDNSPosixProcessFDSet+0xf2>
}
    e88309f0:	70e2                	ld	ra,56(sp)
    e88309f2:	6422                	ld	s0,8(sp)
    e88309f4:	64c2                	ld	s1,16(sp)
    e88309f6:	6962                	ld	s2,24(sp)
    e88309f8:	7982                	ld	s3,32(sp)
    e88309fa:	7a22                	ld	s4,40(sp)
    e88309fc:	7ac2                	ld	s5,48(sp)
    e88309fe:	6121                	addi	sp,sp,64
    e8830a00:	8082                	ret

00000000e8830a02 <mDNSPosixRunEventLoopOnce>:
}

// Do a single pass through the attendent event sources and dispatch any found to their callbacks.
// Return as soon as internal timeout expires, or a signal we're listening for is received.
mStatus mDNSPosixRunEventLoopOnce(mDNS *m, const struct timeval *pTimeout, mDNSBool *pDataDispatched)
{
    e8830a02:	7139                	addi	sp,sp,-64
    e8830a04:	fc91540b          	sdd	s0,s1,(sp),2,4
    fd_set listenFDs = gEventFDs;
    e8830a08:	000b3797          	auipc	a5,0xb3
    e8830a0c:	10878793          	addi	a5,a5,264 # e88e3b10 <gEventFDs>
{
    e8830a10:	f84a                	sd	s2,48(sp)
    e8830a12:	fc06                	sd	ra,56(sp)
    fd_set listenFDs = gEventFDs;
    e8830a14:	4398                	lw	a4,0(a5)
    e8830a16:	0037a783          	lw	a5,3(a5)
    e8830a1a:	0020                	addi	s0,sp,8
    e8830a1c:	c43a                	sw	a4,8(sp)
{
    e8830a1e:	84b2                	mv	s1,a2
    fd_set listenFDs = gEventFDs;
    e8830a20:	00f421a3          	sw	a5,3(s0) # 2003 <memcmp-0xe87fdffd>
    int fdMax = 0, numReady;
    struct timeval timeout = *pTimeout;
    e8830a24:	619c                	ld	a5,0(a1)

    // Include the sockets that are listening to the wire in our select() set
    mDNSPosixGetFDSet(m, &fdMax, &listenFDs, &timeout); // timeout may get modified
    e8830a26:	0814                	addi	a3,sp,16
    e8830a28:	8622                	mv	a2,s0
    struct timeval timeout = *pTimeout;
    e8830a2a:	e83e                	sd	a5,16(sp)
    e8830a2c:	659c                	ld	a5,8(a1)
    mDNSPosixGetFDSet(m, &fdMax, &listenFDs, &timeout); // timeout may get modified
    e8830a2e:	004c                	addi	a1,sp,4
{
    e8830a30:	892a                	mv	s2,a0
    struct timeval timeout = *pTimeout;
    e8830a32:	ec3e                	sd	a5,24(sp)
    int fdMax = 0, numReady;
    e8830a34:	c202                	sw	zero,4(sp)
    mDNSPosixGetFDSet(m, &fdMax, &listenFDs, &timeout); // timeout may get modified
    e8830a36:	d0fff0ef          	jal	ra,e8830744 <mDNSPosixGetFDSet>
    if (fdMax < gMaxFD)
    e8830a3a:	000b3797          	auipc	a5,0xb3
    e8830a3e:	0fa78793          	addi	a5,a5,250 # e88e3b34 <gMaxFD>
    e8830a42:	439c                	lw	a5,0(a5)
    e8830a44:	4712                	lw	a4,4(sp)
    e8830a46:	00f75363          	bge	a4,a5,e8830a4c <mDNSPosixRunEventLoopOnce+0x4a>
        fdMax = gMaxFD;
    e8830a4a:	c23e                	sw	a5,4(sp)

    numReady = select(fdMax + 1, &listenFDs, (fd_set*) NULL, (fd_set*) NULL, &timeout);
    e8830a4c:	4512                	lw	a0,4(sp)
    e8830a4e:	0818                	addi	a4,sp,16
    e8830a50:	4681                	li	a3,0
    e8830a52:	4601                	li	a2,0
    e8830a54:	85a2                	mv	a1,s0
    e8830a56:	2505                	addiw	a0,a0,1
    e8830a58:	2d4550ef          	jal	ra,e8885d2c <lwip_select>

    // If any data appeared, invoke its callback
    if (numReady > 0)
    e8830a5c:	04a05b63          	blez	a0,e8830ab2 <mDNSPosixRunEventLoopOnce+0xb0>
    {
        PosixEventSource    *iSource;

        (void) mDNSPosixProcessFDSet(m, &listenFDs);    // call this first to process wire data for clients
    e8830a60:	85a2                	mv	a1,s0
    e8830a62:	854a                	mv	a0,s2
    e8830a64:	dd7ff0ef          	jal	ra,e883083a <mDNSPosixProcessFDSet>

        for (iSource=(PosixEventSource*)gEventSources.Head; iSource; iSource = iSource->Next)
    e8830a68:	000b3797          	auipc	a5,0xb3
    e8830a6c:	0b078793          	addi	a5,a5,176 # e88e3b18 <gEventSources>
    e8830a70:	639c                	ld	a5,0(a5)
        {
            if (FD_ISSET(iSource->fd, &listenFDs))
    e8830a72:	03100693          	li	a3,49
        for (iSource=(PosixEventSource*)gEventSources.Head; iSource; iSource = iSource->Next)
    e8830a76:	c395                	beqz	a5,e8830a9a <mDNSPosixRunEventLoopOnce+0x98>
            if (FD_ISSET(iSource->fd, &listenFDs))
    e8830a78:	4b88                	lw	a0,16(a5)
    e8830a7a:	02a6ea63          	bltu	a3,a0,e8830aae <mDNSPosixRunEventLoopOnce+0xac>
    e8830a7e:	40355713          	srai	a4,a0,0x3
    e8830a82:	80e4470b          	lrbu	a4,s0,a4,0
    e8830a86:	00757613          	andi	a2,a0,7
    e8830a8a:	40c7573b          	sraw	a4,a4,a2
    e8830a8e:	8b05                	andi	a4,a4,1
    e8830a90:	cf19                	beqz	a4,e8830aae <mDNSPosixRunEventLoopOnce+0xac>
            {
                iSource->Callback(iSource->fd, 0, iSource->Context);
    e8830a92:	f8c7c70b          	ldd	a4,a2,(a5),0,4
    e8830a96:	4581                	li	a1,0
    e8830a98:	9702                	jalr	a4
                break;  // in case callback removed elements from gEventSources
            }
        }
        *pDataDispatched = mDNStrue;
    e8830a9a:	4785                	li	a5,1
    e8830a9c:	00f48023          	sb	a5,0(s1) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    *pSignalsReceived = gEventSignals;
    sigemptyset(&gEventSignals);
    (void) sigprocmask(SIG_UNBLOCK, &gEventSignalSet, (sigset_t*) NULL);
*/
    return mStatus_NoError;
}
    e8830aa0:	70e2                	ld	ra,56(sp)
    e8830aa2:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8830aa6:	7942                	ld	s2,48(sp)
    e8830aa8:	4501                	li	a0,0
    e8830aaa:	6121                	addi	sp,sp,64
    e8830aac:	8082                	ret
        for (iSource=(PosixEventSource*)gEventSources.Head; iSource; iSource = iSource->Next)
    e8830aae:	6f9c                	ld	a5,24(a5)
    e8830ab0:	b7d9                	j	e8830a76 <mDNSPosixRunEventLoopOnce+0x74>
        *pDataDispatched = mDNSfalse;
    e8830ab2:	00048023          	sb	zero,0(s1)
    e8830ab6:	b7ed                	j	e8830aa0 <mDNSPosixRunEventLoopOnce+0x9e>

00000000e8830ab8 <recvfrom_flags>:
/* end free_ifi_info */
#endif
ssize_t
recvfrom_flags(int fd, void *ptr, size_t nbytes, int *flagsp,
               struct sockaddr *sa, socklen_t *salenptr, struct my_in_pktinfo *pktp, unsigned char *ttl)
{
    e8830ab8:	b7010113          	addi	sp,sp,-1168
    e8830abc:	48813023          	sd	s0,1152(sp)
    e8830ac0:	8436                	mv	s0,a3
    union {
        struct cmsghdr cm;
        char control[1024];
    } control_un;

    *ttl = 255;         // If kernel fails to provide TTL data then assume the TTL was 255 as it should be
    e8830ac2:	56fd                	li	a3,-1
{
    e8830ac4:	46913c23          	sd	s1,1144(sp)
    e8830ac8:	47213823          	sd	s2,1136(sp)
    *ttl = 255;         // If kernel fails to provide TTL data then assume the TTL was 255 as it should be
    e8830acc:	00d88023          	sb	a3,0(a7)
{
    e8830ad0:	48113423          	sd	ra,1160(sp)
    e8830ad4:	47313423          	sd	s3,1128(sp)
    e8830ad8:	47413023          	sd	s4,1120(sp)
    e8830adc:	45513c23          	sd	s5,1112(sp)
    e8830ae0:	45613823          	sd	s6,1104(sp)
    msg.msg_flags = 0;
#else
    memset(&msg, 0, sizeof(msg));   /* make certain msg_accrightslen = 0 */
#endif /* CMSG_FIRSTHDR */

    msg.msg_name = (char *) sa;
    e8830ae4:	f03a                	sd	a4,32(sp)
    msg.msg_namelen = *salenptr;
    e8830ae6:	4398                	lw	a4,0(a5)
    msg.msg_control = control_un.control;
    e8830ae8:	0894                	addi	a3,sp,80
    iov[0].iov_base = (char *)ptr;
    iov[0].iov_len = nbytes;
    e8830aea:	fac1558b          	sdd	a1,a2,(sp),1,4
    msg.msg_iov = iov;
    msg.msg_iovlen = 1;

    if ( (n = recvmsg(fd, &msg, *flagsp)) < 0)
    e8830aee:	4010                	lw	a2,0(s0)
    msg.msg_control = control_un.control;
    e8830af0:	e0b6                	sd	a3,64(sp)
    msg.msg_namelen = *salenptr;
    e8830af2:	e43e                	sd	a5,8(sp)
    msg.msg_controllen = sizeof(control_un.control);
    e8830af4:	40000693          	li	a3,1024
    msg.msg_namelen = *salenptr;
    e8830af8:	d43a                	sw	a4,40(sp)
    msg.msg_iov = iov;
    e8830afa:	081c                	addi	a5,sp,16
    msg.msg_iovlen = 1;
    e8830afc:	4705                	li	a4,1
    if ( (n = recvmsg(fd, &msg, *flagsp)) < 0)
    e8830afe:	100c                	addi	a1,sp,32
{
    e8830b00:	84c2                	mv	s1,a6
    msg.msg_controllen = sizeof(control_un.control);
    e8830b02:	e4b6                	sd	a3,72(sp)
    msg.msg_iov = iov;
    e8830b04:	f83e                	sd	a5,48(sp)
    msg.msg_iovlen = 1;
    e8830b06:	dc3a                	sw	a4,56(sp)
    if ( (n = recvmsg(fd, &msg, *flagsp)) < 0)
    e8830b08:	27f540ef          	jal	ra,e8885586 <lwip_recvmsg>
    e8830b0c:	892a                	mv	s2,a0
    e8830b0e:	04054363          	bltz	a0,e8830b54 <recvfrom_flags+0x9c>
        return(n);

    *salenptr = msg.msg_namelen;    /* pass back results */
    e8830b12:	5722                	lw	a4,40(sp)
    e8830b14:	67a2                	ld	a5,8(sp)
    e8830b16:	c398                	sw	a4,0(a5)
    if (pktp) {
    e8830b18:	c889                	beqz	s1,e8830b2a <recvfrom_flags+0x72>
           tell whether we returned a meaningful value or
           just some default.  Previously this code just
           set the value to 0, but I'm concerned that 0
           might be a valid interface value.
         */
        memset(pktp, 0, sizeof(struct my_in_pktinfo));
    e8830b1a:	03000613          	li	a2,48
    e8830b1e:	4581                	li	a1,0
    e8830b20:	8526                	mv	a0,s1
    e8830b22:	0734b0ef          	jal	ra,e887c394 <eLIBs_memset>
        pktp->ipi_ifindex = -1;
    e8830b26:	57fd                	li	a5,-1
    e8830b28:	ccdc                	sw	a5,28(s1)
    #warning CMSG_FIRSTHDR not defined. Will not be able to determine destination address, received interface, etc.
    *flagsp = 0;                    /* pass back results */
    return(n);
#else

    *flagsp = msg.msg_flags;        /* pass back results */
    e8830b2a:	47b6                	lw	a5,76(sp)
    if (msg.msg_controllen < (socklen_t)sizeof(struct cmsghdr) ||
    e8830b2c:	46a6                	lw	a3,72(sp)
    e8830b2e:	472d                	li	a4,11
    *flagsp = msg.msg_flags;        /* pass back results */
    e8830b30:	c01c                	sw	a5,0(s0)
    if (msg.msg_controllen < (socklen_t)sizeof(struct cmsghdr) ||
    e8830b32:	02d77163          	bgeu	a4,a3,e8830b54 <recvfrom_flags+0x9c>
        (msg.msg_flags & MSG_CTRUNC) || pktp == NULL)
    e8830b36:	8ba1                	andi	a5,a5,8
    if (msg.msg_controllen < (socklen_t)sizeof(struct cmsghdr) ||
    e8830b38:	ef91                	bnez	a5,e8830b54 <recvfrom_flags+0x9c>
        (msg.msg_flags & MSG_CTRUNC) || pktp == NULL)
    e8830b3a:	cc89                	beqz	s1,e8830b54 <recvfrom_flags+0x9c>
        return(n);

    for (cmptr = CMSG_FIRSTHDR(&msg); cmptr != NULL;
    e8830b3c:	6406                	ld	s0,64(sp)
            cmptr->cmsg_type == IPV6_2292_HOPLIMIT) {
            *ttl = *(int*)CMSG_DATA(cmptr);
            continue;
        }
#endif
        assert(0);  // unknown ancillary data
    e8830b3e:	0007b997          	auipc	s3,0x7b
    e8830b42:	53298993          	addi	s3,s3,1330 # e88ac070 <kOn.10632+0x128>
    e8830b46:	0006fa17          	auipc	s4,0x6f
    e8830b4a:	66aa0a13          	addi	s4,s4,1642 # e88a01b0 <TWO52+0x5b8>
        if (cmptr->cmsg_level == IPPROTO_IP &&
    e8830b4e:	4aa1                	li	s5,8
            sin->sin_family = AF_INET;
    e8830b50:	4b09                	li	s6,2
    for (cmptr = CMSG_FIRSTHDR(&msg); cmptr != NULL;
    e8830b52:	e40d                	bnez	s0,e8830b7c <recvfrom_flags+0xc4>
    }
    return(n);
#endif /* CMSG_FIRSTHDR */
}
    e8830b54:	48813083          	ld	ra,1160(sp)
    e8830b58:	48013403          	ld	s0,1152(sp)
    e8830b5c:	854a                	mv	a0,s2
    e8830b5e:	47813483          	ld	s1,1144(sp)
    e8830b62:	47013903          	ld	s2,1136(sp)
    e8830b66:	46813983          	ld	s3,1128(sp)
    e8830b6a:	46013a03          	ld	s4,1120(sp)
    e8830b6e:	45813a83          	ld	s5,1112(sp)
    e8830b72:	45013b03          	ld	s6,1104(sp)
    e8830b76:	49010113          	addi	sp,sp,1168
    e8830b7a:	8082                	ret
        if (cmptr->cmsg_level == IPPROTO_IP &&
    e8830b7c:	405c                	lw	a5,4(s0)
    e8830b7e:	eb9d                	bnez	a5,e8830bb4 <recvfrom_flags+0xfc>
    e8830b80:	441c                	lw	a5,8(s0)
    e8830b82:	03579963          	bne	a5,s5,e8830bb4 <recvfrom_flags+0xfc>
            sin->sin_family = AF_INET;
    e8830b86:	016480a3          	sb	s6,1(s1)
            sin->sin_addr = tmp->ipi_addr;
    e8830b8a:	485c                	lw	a5,20(s0)
            sin->sin_port = 0;
    e8830b8c:	00049123          	sh	zero,2(s1)
            sin->sin_addr = tmp->ipi_addr;
    e8830b90:	c0dc                	sw	a5,4(s1)
            pktp->ipi_ifindex = tmp->ipi_ifindex;
    e8830b92:	481c                	lw	a5,16(s0)
    e8830b94:	ccdc                	sw	a5,28(s1)
         cmptr = CMSG_NXTHDR(&msg, cmptr)) {
    e8830b96:	00046783          	lwu	a5,0(s0)
    e8830b9a:	04816603          	lwu	a2,72(sp)
    e8830b9e:	6706                	ld	a4,64(sp)
    e8830ba0:	079d                	addi	a5,a5,7
    e8830ba2:	9be1                	andi	a5,a5,-8
    e8830ba4:	01078693          	addi	a3,a5,16
    e8830ba8:	96a2                	add	a3,a3,s0
    e8830baa:	9732                	add	a4,a4,a2
    e8830bac:	fad764e3          	bltu	a4,a3,e8830b54 <recvfrom_flags+0x9c>
    e8830bb0:	943e                	add	s0,s0,a5
    e8830bb2:	b745                	j	e8830b52 <recvfrom_flags+0x9a>
        assert(0);  // unknown ancillary data
    e8830bb4:	02f00593          	li	a1,47
    e8830bb8:	854e                	mv	a0,s3
    e8830bba:	7be4b0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8830bbe:	00150593          	addi	a1,a0,1
    e8830bc2:	29800613          	li	a2,664
    e8830bc6:	8552                	mv	a0,s4
    e8830bc8:	6fe4b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8830bcc:	b7e9                	j	e8830b96 <recvfrom_flags+0xde>

00000000e8830bce <RRAdditionalSize>:
}

// We add three Additional Records for unicast resource record registrations
// which is a function of AuthInfo and AutoTunnel properties
mDNSlocal mDNSu32 RRAdditionalSize(mDNS *const m, DomainAuthInfo *AuthInfo)
{
    e8830bce:	7179                	addi	sp,sp,-48
    e8830bd0:	f406                	sd	ra,40(sp)
    e8830bd2:	f052                	sd	s4,32(sp)
    e8830bd4:	f891540b          	sdd	s0,s1,(sp),0,4
    e8830bd8:	fb31590b          	sdd	s2,s3,(sp),1,4
    leaseSize = 1 + rr_base_size + sizeof(rdataOPT);

    // HINFO: Resource Record Name + base size + RDATA
    // HINFO is added only for autotunnels
    hinfoSize = 0;
    if (AuthInfo && AuthInfo->AutoTunnel)
    e8830bdc:	c5b9                	beqz	a1,e8830c2a <RRAdditionalSize+0x5c>
    e8830bde:	00c5c703          	lbu	a4,12(a1) # ffffffffffff000c <__DRAM0_INF_BASE+0xffffffff0000000c>
    e8830be2:	6785                	lui	a5,0x1
    e8830be4:	57478993          	addi	s3,a5,1396 # 1574 <memcmp-0xe87fea8c>
    e8830be8:	84ae                	mv	s1,a1
    e8830bea:	99ae                	add	s3,s3,a1
    hinfoSize = 0;
    e8830bec:	4401                	li	s0,0
    if (AuthInfo && AuthInfo->AutoTunnel)
    e8830bee:	c705                	beqz	a4,e8830c16 <RRAdditionalSize+0x48>
        hinfoSize = (m->hostlabel.c[0] + 1) + DomainNameLength(&AuthInfo->domain) +
    e8830bf0:	690d                	lui	s2,0x3
    e8830bf2:	992a                	add	s2,s2,a0
    e8830bf4:	47478513          	addi	a0,a5,1140
    e8830bf8:	85ce                	mv	a1,s3
    e8830bfa:	9526                	add	a0,a0,s1
    e8830bfc:	a6894a03          	lbu	s4,-1432(s2) # 2a68 <memcmp-0xe87fd598>
    e8830c00:	d4ce20ef          	jal	ra,e881314c <DomainNameLengthLimit>
                    rr_base_size + (2 + m->HIHardware.c[0] + m->HISoftware.c[0]);
    e8830c04:	ba894403          	lbu	s0,-1112(s2)
    e8830c08:	ca894783          	lbu	a5,-856(s2)
        hinfoSize = (m->hostlabel.c[0] + 1) + DomainNameLength(&AuthInfo->domain) +
    e8830c0c:	0145053b          	addw	a0,a0,s4
                    rr_base_size + (2 + m->HIHardware.c[0] + m->HISoftware.c[0]);
    e8830c10:	9c3d                	addw	s0,s0,a5
        hinfoSize = (m->hostlabel.c[0] + 1) + DomainNameLength(&AuthInfo->domain) +
    e8830c12:	2435                	addiw	s0,s0,13
    e8830c14:	9c29                	addw	s0,s0,a0
    //  ID: 2 bytes
    //  Error: 2 bytes
    //  Len: 2 bytes
    //  Total: 58 bytes
    tsigSize = 0;
    if (AuthInfo) tsigSize = DomainNameLength(&AuthInfo->keyname) + rr_base_size + 58;
    e8830c16:	6585                	lui	a1,0x1
    e8830c18:	67458593          	addi	a1,a1,1652 # 1674 <memcmp-0xe87fe98c>
    e8830c1c:	95a6                	add	a1,a1,s1
    e8830c1e:	854e                	mv	a0,s3
    e8830c20:	d2ce20ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8830c24:	0445051b          	addiw	a0,a0,68
    e8830c28:	a019                	j	e8830c2e <RRAdditionalSize+0x60>
    hinfoSize = 0;
    e8830c2a:	4401                	li	s0,0
    tsigSize = 0;
    e8830c2c:	4501                	li	a0,0

    return (leaseSize + hinfoSize + tsigSize);
    e8830c2e:	9d21                	addw	a0,a0,s0
}
    e8830c30:	70a2                	ld	ra,40(sp)
    e8830c32:	f891440b          	ldd	s0,s1,(sp),0,4
    e8830c36:	7a02                	ld	s4,32(sp)
    e8830c38:	fb31490b          	ldd	s2,s3,(sp),1,4
    return (leaseSize + hinfoSize + tsigSize);
    e8830c3c:	0235051b          	addiw	a0,a0,35
}
    e8830c40:	6145                	addi	sp,sp,48
    e8830c42:	8082                	ret

00000000e8830c44 <StartLLQPolling>:
    q->state = LLQ_Poll;
    e8830c44:	4791                	li	a5,4
    e8830c46:	1af58a23          	sb	a5,436(a1)
    q->ThisQInterval = INIT_UCAST_POLL_INTERVAL;
    e8830c4a:	000a4797          	auipc	a5,0xa4
    e8830c4e:	e3678793          	addi	a5,a5,-458 # e88d4a80 <mDNSPlatformOneSecond>
    e8830c52:	4394                	lw	a3,0(a5)
    e8830c54:	478d                	li	a5,3
    e8830c56:	02d787bb          	mulw	a5,a5,a3
    q->LastQTime     = m->timenow - q->ThisQInterval + 1;
    e8830c5a:	4685                	li	a3,1
    e8830c5c:	9e9d                	subw	a3,a3,a5
    q->ThisQInterval = INIT_UCAST_POLL_INTERVAL;
    e8830c5e:	c9dc                	sw	a5,20(a1)
    q->LastQTime     = m->timenow - q->ThisQInterval + 1;
    e8830c60:	24052783          	lw	a5,576(a0)
    e8830c64:	9fb5                	addw	a5,a5,a3
    e8830c66:	c99c                	sw	a5,16(a1)
    SetNextQueryTime(m, q);
    e8830c68:	e04ed06f          	j	e881e26c <SetNextQueryTime>

00000000e8830c6c <FreeARElemCallback>:
}

mDNSlocal void FreeARElemCallback(mDNS *const m, AuthRecord *const rr, mStatus result)
{
    (void)m;    // unused
    if (result == mStatus_MemFree) mDNSPlatformMemFree(rr->RecordContext);
    e8830c6c:	77c1                	lui	a5,0xffff0
    e8830c6e:	f0078793          	addi	a5,a5,-256 # fffffffffffeff00 <__DRAM0_INF_BASE+0xfffffffeffffff00>
    e8830c72:	00f61563          	bne	a2,a5,e8830c7c <FreeARElemCallback+0x10>
    e8830c76:	79a8                	ld	a0,112(a1)
    e8830c78:	e0aff06f          	j	e8830282 <mDNSPlatformMemFree>
}
    e8830c7c:	8082                	ret

00000000e8830c7e <FoundStaticHostname>:
{
    e8830c7e:	7139                	addi	sp,sp,-64
    e8830c80:	f891540b          	sdd	s0,s1,(sp),0,4
    e8830c84:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8830c88:	fd515a0b          	sdd	s4,s5,(sp),2,4
    domainname *storedname = &m->StaticHostname;
    e8830c8c:	6791                	lui	a5,0x4
{
    e8830c8e:	fc06                	sd	ra,56(sp)
    e8830c90:	f85a                	sd	s6,48(sp)
    domainname *storedname = &m->StaticHostname;
    e8830c92:	90878913          	addi	s2,a5,-1784 # 3908 <memcmp-0xe87fc6f8>
    const domainname *pktname = &answer->rdata->u.name;
    e8830c96:	02863b03          	ld	s6,40(a2)
    HostnameInfo *h = m->Hostnames;
    e8830c9a:	97aa                	add	a5,a5,a0
    if (answer->rdlength != 0)
    e8830c9c:	00c65703          	lhu	a4,12(a2)
    HostnameInfo *h = m->Hostnames;
    e8830ca0:	b087ba03          	ld	s4,-1272(a5)
    e8830ca4:	000a4797          	auipc	a5,0xa4
    e8830ca8:	dd078793          	addi	a5,a5,-560 # e88d4a74 <mDNS_LoggingEnabled>
{
    e8830cac:	842a                	mv	s0,a0
    e8830cae:	8ab2                	mv	s5,a2
    e8830cb0:	89b6                	mv	s3,a3
    const domainname *pktname = &answer->rdata->u.name;
    e8830cb2:	004b0493          	addi	s1,s6,4 # 2004 <memcmp-0xe87fdffc>
    domainname *storedname = &m->StaticHostname;
    e8830cb6:	992a                	add	s2,s2,a0
    if (answer->rdlength != 0)
    e8830cb8:	439c                	lw	a5,0(a5)
    e8830cba:	c355                	beqz	a4,e8830d5e <FoundStaticHostname+0xe0>
        LogInfo("FoundStaticHostname: question %##s -> answer %##s (%s)", question->qname.c, answer->rdata->u.name.c, AddRecord ? "ADD" : "RMV");
    e8830cbc:	14078463          	beqz	a5,e8830e04 <FoundStaticHostname+0x186>
    e8830cc0:	21458613          	addi	a2,a1,532
    e8830cc4:	0007c717          	auipc	a4,0x7c
    e8830cc8:	94470713          	addi	a4,a4,-1724 # e88ac608 <kOn.10632+0x6c0>
    e8830ccc:	e689                	bnez	a3,e8830cd6 <FoundStaticHostname+0x58>
    e8830cce:	0007c717          	auipc	a4,0x7c
    e8830cd2:	94270713          	addi	a4,a4,-1726 # e88ac610 <kOn.10632+0x6c8>
    e8830cd6:	86a6                	mv	a3,s1
    e8830cd8:	0007c597          	auipc	a1,0x7c
    e8830cdc:	94058593          	addi	a1,a1,-1728 # e88ac618 <kOn.10632+0x6d0>
    e8830ce0:	450d                	li	a0,3
    e8830ce2:	fcafe0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (AddRecord && answer->rdlength != 0 && !SameDomainName(pktname, storedname))
    e8830ce6:	0e098e63          	beqz	s3,e8830de2 <FoundStaticHostname+0x164>
    e8830cea:	00cad783          	lhu	a5,12(s5)
    e8830cee:	cfe1                	beqz	a5,e8830dc6 <FoundStaticHostname+0x148>
    e8830cf0:	85ca                	mv	a1,s2
    e8830cf2:	8526                	mv	a0,s1
    e8830cf4:	b56e20ef          	jal	ra,e881304a <SameDomainName>
    e8830cf8:	e579                	bnez	a0,e8830dc6 <FoundStaticHostname+0x148>
        AssignDomainName(storedname, pktname);
    e8830cfa:	104b0593          	addi	a1,s6,260
    e8830cfe:	8526                	mv	a0,s1
    e8830d00:	c4ce20ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8830d04:	0005061b          	sext.w	a2,a0
    e8830d08:	10000793          	li	a5,256
    e8830d0c:	06c7ee63          	bltu	a5,a2,e8830d88 <FoundStaticHostname+0x10a>
    e8830d10:	85a6                	mv	a1,s1
    e8830d12:	854a                	mv	a0,s2
    e8830d14:	d8dfe0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            if (h->arv4.state == regState_Pending || h->arv4.state == regState_NATMap || h->arv6.state == regState_Pending)
    e8830d18:	4785                	li	a5,1
    e8830d1a:	4699                	li	a3,6
        while (h)
    e8830d1c:	060a1b63          	bnez	s4,e8830d92 <FoundStaticHostname+0x114>
        mDNS_Lock(m);
    e8830d20:	0007d597          	auipc	a1,0x7d
    e8830d24:	17058593          	addi	a1,a1,368 # e88ade90 <__func__.9336>
    e8830d28:	8522                	mv	a0,s0
    e8830d2a:	cd9e40ef          	jal	ra,e8815a02 <mDNS_Lock_>
        m->NextSRVUpdate = NonZeroTime(m->timenow);
    e8830d2e:	24042703          	lw	a4,576(s0)
    e8830d32:	e311                	bnez	a4,e8830d36 <FoundStaticHostname+0xb8>
    e8830d34:	4705                	li	a4,1
    e8830d36:	678d                	lui	a5,0x3
    e8830d38:	97a2                	add	a5,a5,s0
    e8830d3a:	1ee7ae23          	sw	a4,508(a5) # 31fc <memcmp-0xe87fce04>
        mDNS_Unlock(m);
    e8830d3e:	8522                	mv	a0,s0
}
    e8830d40:	f891440b          	ldd	s0,s1,(sp),0,4
    e8830d44:	70e2                	ld	ra,56(sp)
    e8830d46:	7b42                	ld	s6,48(sp)
    e8830d48:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8830d4c:	fd514a0b          	ldd	s4,s5,(sp),2,4
        mDNS_Unlock(m);
    e8830d50:	0007d597          	auipc	a1,0x7d
    e8830d54:	14058593          	addi	a1,a1,320 # e88ade90 <__func__.9336>
}
    e8830d58:	6121                	addi	sp,sp,64
        mDNS_Unlock(m);
    e8830d5a:	d73e406f          	j	e8815acc <mDNS_Unlock_>
        LogInfo("FoundStaticHostname: question %##s -> answer NULL (%s)", question->qname.c, AddRecord ? "ADD" : "RMV");
    e8830d5e:	c3c9                	beqz	a5,e8830de0 <FoundStaticHostname+0x162>
    e8830d60:	21458613          	addi	a2,a1,532
    e8830d64:	0007c697          	auipc	a3,0x7c
    e8830d68:	8a468693          	addi	a3,a3,-1884 # e88ac608 <kOn.10632+0x6c0>
    e8830d6c:	00099663          	bnez	s3,e8830d78 <FoundStaticHostname+0xfa>
    e8830d70:	0007c697          	auipc	a3,0x7c
    e8830d74:	8a068693          	addi	a3,a3,-1888 # e88ac610 <kOn.10632+0x6c8>
    e8830d78:	0007c597          	auipc	a1,0x7c
    e8830d7c:	8d858593          	addi	a1,a1,-1832 # e88ac650 <kOn.10632+0x708>
    e8830d80:	450d                	li	a0,3
    e8830d82:	f2afe0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8830d86:	b785                	j	e8830ce6 <FoundStaticHostname+0x68>
        AssignDomainName(storedname, pktname);
    e8830d88:	6791                	lui	a5,0x4
    e8830d8a:	97a2                	add	a5,a5,s0
    e8830d8c:	90078423          	sb	zero,-1784(a5) # 3908 <memcmp-0xe87fc6f8>
    e8830d90:	b761                	j	e8830d18 <FoundStaticHostname+0x9a>
            if (h->arv4.state == regState_Pending || h->arv4.state == regState_NATMap || h->arv6.state == regState_Pending)
    e8830d92:	2aca4703          	lbu	a4,684(s4)
    e8830d96:	00f70863          	beq	a4,a5,e8830da6 <FoundStaticHostname+0x128>
    e8830d9a:	00d70663          	beq	a4,a3,e8830da6 <FoundStaticHostname+0x128>
    e8830d9e:	6bca4703          	lbu	a4,1724(s4)
    e8830da2:	02f71c63          	bne	a4,a5,e8830dda <FoundStaticHostname+0x15c>
                m->NextSRVUpdate = NonZeroTime(m->timenow + 5 * mDNSPlatformOneSecond);
    e8830da6:	000a4797          	auipc	a5,0xa4
    e8830daa:	cda78793          	addi	a5,a5,-806 # e88d4a80 <mDNSPlatformOneSecond>
    e8830dae:	4398                	lw	a4,0(a5)
    e8830db0:	24042783          	lw	a5,576(s0)
    e8830db4:	4695                	li	a3,5
    e8830db6:	24e6978b          	mulaw	a5,a3,a4
    e8830dba:	e391                	bnez	a5,e8830dbe <FoundStaticHostname+0x140>
    e8830dbc:	4785                	li	a5,1
    e8830dbe:	670d                	lui	a4,0x3
    e8830dc0:	943a                	add	s0,s0,a4
    e8830dc2:	1ef42e23          	sw	a5,508(s0)
}
    e8830dc6:	70e2                	ld	ra,56(sp)
    e8830dc8:	f891440b          	ldd	s0,s1,(sp),0,4
    e8830dcc:	7b42                	ld	s6,48(sp)
    e8830dce:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8830dd2:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8830dd6:	6121                	addi	sp,sp,64
    e8830dd8:	8082                	ret
            h = h->next;
    e8830dda:	000a3a03          	ld	s4,0(s4)
    e8830dde:	bf3d                	j	e8830d1c <FoundStaticHostname+0x9e>
    if (AddRecord && answer->rdlength != 0 && !SameDomainName(pktname, storedname))
    e8830de0:	f2fd                	bnez	a3,e8830dc6 <FoundStaticHostname+0x148>
    else if (!AddRecord && SameDomainName(pktname, storedname))
    e8830de2:	85ca                	mv	a1,s2
    e8830de4:	8526                	mv	a0,s1
    e8830de6:	a64e20ef          	jal	ra,e881304a <SameDomainName>
    e8830dea:	dd71                	beqz	a0,e8830dc6 <FoundStaticHostname+0x148>
        mDNS_Lock(m);
    e8830dec:	0007d597          	auipc	a1,0x7d
    e8830df0:	0a458593          	addi	a1,a1,164 # e88ade90 <__func__.9336>
    e8830df4:	8522                	mv	a0,s0
    e8830df6:	c0de40ef          	jal	ra,e8815a02 <mDNS_Lock_>
        storedname->c[0] = 0;
    e8830dfa:	6791                	lui	a5,0x4
    e8830dfc:	97a2                	add	a5,a5,s0
    e8830dfe:	90078423          	sb	zero,-1784(a5) # 3908 <memcmp-0xe87fc6f8>
    e8830e02:	b735                	j	e8830d2e <FoundStaticHostname+0xb0>
    if (AddRecord && answer->rdlength != 0 && !SameDomainName(pktname, storedname))
    e8830e04:	ee0696e3          	bnez	a3,e8830cf0 <FoundStaticHostname+0x72>
    e8830e08:	bfe9                	j	e8830de2 <FoundStaticHostname+0x164>

00000000e8830e0a <putLLQ>:
{
    e8830e0a:	bb010113          	addi	sp,sp,-1104
    e8830e0e:	44813023          	sd	s0,1088(sp)
    ptr = putQuestion(msg, ptr, msg->data + AbsoluteMaxDNSMessageData, &question->qname, question->qtype, question->qclass);
    e8830e12:	6409                	lui	s0,0x2
{
    e8830e14:	42913c23          	sd	s1,1080(sp)
    e8830e18:	43213823          	sd	s2,1072(sp)
    e8830e1c:	43313423          	sd	s3,1064(sp)
    e8830e20:	44113423          	sd	ra,1096(sp)
    ptr = putQuestion(msg, ptr, msg->data + AbsoluteMaxDNSMessageData, &question->qname, question->qtype, question->qclass);
    e8830e24:	2f840413          	addi	s0,s0,760 # 22f8 <memcmp-0xe87fdd08>
    e8830e28:	31665783          	lhu	a5,790(a2)
    e8830e2c:	31465703          	lhu	a4,788(a2)
    e8830e30:	942a                	add	s0,s0,a0
{
    e8830e32:	89b6                	mv	s3,a3
    ptr = putQuestion(msg, ptr, msg->data + AbsoluteMaxDNSMessageData, &question->qname, question->qtype, question->qclass);
    e8830e34:	21460693          	addi	a3,a2,532
    e8830e38:	8622                	mv	a2,s0
{
    e8830e3a:	892a                	mv	s2,a0
    ptr = putQuestion(msg, ptr, msg->data + AbsoluteMaxDNSMessageData, &question->qname, question->qtype, question->qclass);
    e8830e3c:	9c3e30ef          	jal	ra,e88147fe <putQuestion>
    e8830e40:	84aa                	mv	s1,a0
    if (!ptr) { LogMsg("ERROR: putLLQ - putQuestion"); return mDNSNULL; }
    e8830e42:	0007e597          	auipc	a1,0x7e
    e8830e46:	b3e58593          	addi	a1,a1,-1218 # e88ae980 <__func__.9833+0x9e8>
    e8830e4a:	c935                	beqz	a0,e8830ebe <putLLQ+0xb4>
    mDNS_SetupResourceRecord(&rr, mDNSNULL, mDNSInterface_Any, kDNSType_OPT, kStandardTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, mDNSNULL, mDNSNULL);
    e8830e4c:	00072617          	auipc	a2,0x72
    e8830e50:	f1460613          	addi	a2,a2,-236 # e88a2d60 <mDNSInterface_Any>
    e8830e54:	6210                	ld	a2,0(a2)
    e8830e56:	6705                	lui	a4,0x1
    e8830e58:	4881                	li	a7,0
    e8830e5a:	4801                	li	a6,0
    e8830e5c:	02000793          	li	a5,32
    e8830e60:	19470713          	addi	a4,a4,404 # 1194 <memcmp-0xe87fee6c>
    e8830e64:	02900693          	li	a3,41
    e8830e68:	4581                	li	a1,0
    e8830e6a:	0808                	addi	a0,sp,16
    e8830e6c:	e002                	sd	zero,0(sp)
    e8830e6e:	f5de20ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
    opt->rrclass    = NormalMaxDNSMessageData;
    e8830e72:	5a000793          	li	a5,1440
    e8830e76:	00f11e23          	sh	a5,28(sp)
    opt->rdlength   = sizeof(rdataOPT); // One option in this OPT record
    e8830e7a:	001807b7          	lui	a5,0x180
    e8830e7e:	27e1                	addiw	a5,a5,24
    e8830e80:	d23e                	sw	a5,36(sp)
    optRD = &rr.resrec.rdata->u.opt[0];
    e8830e82:	6786                	ld	a5,64(sp)
    optRD->opt = kDNSOpt_LLQ;
    e8830e84:	4705                	li	a4,1
    ptr = PutResourceRecordTTLJumbo(msg, ptr, &msg->h.numAdditionals, opt, 0);
    e8830e86:	85a6                	mv	a1,s1
    optRD->opt = kDNSOpt_LLQ;
    e8830e88:	00e79223          	sh	a4,4(a5) # 180004 <memcmp-0xe867fffc>
    optRD->u.llq = *data;
    e8830e8c:	0009b683          	ld	a3,0(s3)
    e8830e90:	00878713          	addi	a4,a5,8
    ptr = PutResourceRecordTTLJumbo(msg, ptr, &msg->h.numAdditionals, opt, 0);
    e8830e94:	00a90613          	addi	a2,s2,10
    optRD->u.llq = *data;
    e8830e98:	e794                	sd	a3,8(a5)
    e8830e9a:	0089b783          	ld	a5,8(s3)
    ptr = PutResourceRecordTTLJumbo(msg, ptr, &msg->h.numAdditionals, opt, 0);
    e8830e9e:	0834                	addi	a3,sp,24
    e8830ea0:	854a                	mv	a0,s2
    optRD->u.llq = *data;
    e8830ea2:	e71c                	sd	a5,8(a4)
    e8830ea4:	0109a783          	lw	a5,16(s3)
    e8830ea8:	cb1c                	sw	a5,16(a4)
    ptr = PutResourceRecordTTLJumbo(msg, ptr, &msg->h.numAdditionals, opt, 0);
    e8830eaa:	87a2                	mv	a5,s0
    e8830eac:	4701                	li	a4,0
    e8830eae:	f92e50ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
    e8830eb2:	84aa                	mv	s1,a0
    if (!ptr) { LogMsg("ERROR: putLLQ - PutResourceRecordTTLJumbo"); return mDNSNULL; }
    e8830eb4:	e519                	bnez	a0,e8830ec2 <putLLQ+0xb8>
    e8830eb6:	0007e597          	auipc	a1,0x7e
    e8830eba:	aea58593          	addi	a1,a1,-1302 # e88ae9a0 <__func__.9833+0xa08>
    e8830ebe:	deefe0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8830ec2:	44813083          	ld	ra,1096(sp)
    e8830ec6:	44013403          	ld	s0,1088(sp)
    e8830eca:	8526                	mv	a0,s1
    e8830ecc:	43013903          	ld	s2,1072(sp)
    e8830ed0:	43813483          	ld	s1,1080(sp)
    e8830ed4:	42813983          	ld	s3,1064(sp)
    e8830ed8:	45010113          	addi	sp,sp,1104
    e8830edc:	8082                	ret

00000000e8830ede <sendChallengeResponse>:
{
    e8830ede:	7159                	addi	sp,sp,-112
    e8830ee0:	f0a2                	sd	s0,96(sp)
    e8830ee2:	f486                	sd	ra,104(sp)
    e8830ee4:	eca6                	sd	s1,88(sp)
    e8830ee6:	e8ca                	sd	s2,80(sp)
    e8830ee8:	e4ce                	sd	s3,72(sp)
    if (q->tcp) { LogMsg("sendChallengeResponse: ERROR!!: question %##s (%s) tcp non-NULL", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8830eea:	1a85b783          	ld	a5,424(a1)
{
    e8830eee:	842e                	mv	s0,a1
    if (q->tcp) { LogMsg("sendChallengeResponse: ERROR!!: question %##s (%s) tcp non-NULL", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8830ef0:	c795                	beqz	a5,e8830f1c <sendChallengeResponse+0x3e>
    e8830ef2:	3145d503          	lhu	a0,788(a1)
    e8830ef6:	d6be40ef          	jal	ra,e8815c60 <DNSTypeName>
    e8830efa:	86aa                	mv	a3,a0
    e8830efc:	21440613          	addi	a2,s0,532
    e8830f00:	0007e597          	auipc	a1,0x7e
    e8830f04:	ad858593          	addi	a1,a1,-1320 # e88ae9d8 <__func__.9833+0xa40>
    if (PrivateQuery(q)) { LogMsg("sendChallengeResponse: ERROR!!: Private Query %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8830f08:	4501                	li	a0,0
    e8830f0a:	da2fe0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8830f0e:	70a6                	ld	ra,104(sp)
    e8830f10:	7406                	ld	s0,96(sp)
    e8830f12:	64e6                	ld	s1,88(sp)
    e8830f14:	6946                	ld	s2,80(sp)
    e8830f16:	69a6                	ld	s3,72(sp)
    e8830f18:	6165                	addi	sp,sp,112
    e8830f1a:	8082                	ret
    if (PrivateQuery(q)) { LogMsg("sendChallengeResponse: ERROR!!: Private Query %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8830f1c:	65bc                	ld	a5,72(a1)
    e8830f1e:	84aa                	mv	s1,a0
    e8830f20:	86b2                	mv	a3,a2
    e8830f22:	c385                	beqz	a5,e8830f42 <sendChallengeResponse+0x64>
    e8830f24:	00c7c783          	lbu	a5,12(a5)
    e8830f28:	cf89                	beqz	a5,e8830f42 <sendChallengeResponse+0x64>
    e8830f2a:	3145d503          	lhu	a0,788(a1)
    e8830f2e:	d33e40ef          	jal	ra,e8815c60 <DNSTypeName>
    e8830f32:	86aa                	mv	a3,a0
    e8830f34:	21440613          	addi	a2,s0,532
    e8830f38:	0007e597          	auipc	a1,0x7e
    e8830f3c:	ae058593          	addi	a1,a1,-1312 # e88aea18 <__func__.9833+0xa80>
    e8830f40:	b7e1                	j	e8830f08 <sendChallengeResponse+0x2a>
    if (q->ntries++ == kLLQ_MAX_TRIES)
    e8830f42:	1c041603          	lh	a2,448(s0)
    e8830f46:	0016079b          	addiw	a5,a2,1
    e8830f4a:	3c07a70b          	ext	a4,a5,15,0
    e8830f4e:	1ce41023          	sh	a4,448(s0)
    e8830f52:	478d                	li	a5,3
    e8830f54:	02f61163          	bne	a2,a5,e8830f76 <sendChallengeResponse+0x98>
        LogMsg("sendChallengeResponse: %d failed attempts for LLQ %##s", kLLQ_MAX_TRIES, q->qname.c);
    e8830f58:	21440693          	addi	a3,s0,532
    e8830f5c:	460d                	li	a2,3
    e8830f5e:	0007e597          	auipc	a1,0x7e
    e8830f62:	af258593          	addi	a1,a1,-1294 # e88aea50 <__func__.9833+0xab8>
    e8830f66:	4501                	li	a0,0
    e8830f68:	d44fe0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    else StartLLQPolling(m,q);
    e8830f6c:	85a2                	mv	a1,s0
    e8830f6e:	8526                	mv	a0,s1
    e8830f70:	cd5ff0ef          	jal	ra,e8830c44 <StartLLQPolling>
    e8830f74:	bf69                	j	e8830f0e <sendChallengeResponse+0x30>
    if (!llq)       // Retransmission: need to make a new LLQOptData
    e8830f76:	ee89                	bnez	a3,e8830f90 <sendChallengeResponse+0xb2>
        llqBuf.vers     = kLLQ_Vers;
    e8830f78:	67c1                	lui	a5,0x10
    e8830f7a:	2785                	addiw	a5,a5,1
    e8830f7c:	d43e                	sw	a5,40(sp)
        llqBuf.id       = q->id;
    e8830f7e:	1dc43783          	ld	a5,476(s0)
        llqBuf.err      = LLQErr_NoError;   // Don't need to tell server UDP notification port when sending over UDP
    e8830f82:	02011623          	sh	zero,44(sp)
        llq = &llqBuf;
    e8830f86:	1034                	addi	a3,sp,40
        llqBuf.id       = q->id;
    e8830f88:	f83e                	sd	a5,48(sp)
        llqBuf.llqlease = q->ReqLease;
    e8830f8a:	1b842783          	lw	a5,440(s0)
    e8830f8e:	dc3e                	sw	a5,56(sp)
    q->LastQTime     = m->timenow;
    e8830f90:	2404a783          	lw	a5,576(s1)
    SetNextQueryTime(m, q);
    e8830f94:	85a2                	mv	a1,s0
    e8830f96:	8526                	mv	a0,s1
    q->LastQTime     = m->timenow;
    e8830f98:	c81c                	sw	a5,16(s0)
    q->ThisQInterval = q->tcp ? 0 : (kLLQ_INIT_RESEND * q->ntries * mDNSPlatformOneSecond);     // If using TCP, don't need to retransmit
    e8830f9a:	000a4797          	auipc	a5,0xa4
    e8830f9e:	ae678793          	addi	a5,a5,-1306 # e88d4a80 <mDNSPlatformOneSecond>
    e8830fa2:	439c                	lw	a5,0(a5)
    e8830fa4:	ec36                	sd	a3,24(sp)
    InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8830fa6:	699d                	lui	s3,0x7
    q->ThisQInterval = q->tcp ? 0 : (kLLQ_INIT_RESEND * q->ntries * mDNSPlatformOneSecond);     // If using TCP, don't need to retransmit
    e8830fa8:	02e787bb          	mulw	a5,a5,a4
    InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8830fac:	1e098913          	addi	s2,s3,480 # 71e0 <memcmp-0xe87f8e20>
    e8830fb0:	9926                	add	s2,s2,s1
    q->ThisQInterval = q->tcp ? 0 : (kLLQ_INIT_RESEND * q->ntries * mDNSPlatformOneSecond);     // If using TCP, don't need to retransmit
    e8830fb2:	0017979b          	slliw	a5,a5,0x1
    e8830fb6:	c85c                	sw	a5,20(s0)
    SetNextQueryTime(m, q);
    e8830fb8:	ab4ed0ef          	jal	ra,e881e26c <SetNextQueryTime>
    InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8830fbc:	00072797          	auipc	a5,0x72
    e8830fc0:	5bc78793          	addi	a5,a5,1468 # e88a3578 <uQueryFlags>
    e8830fc4:	0007d603          	lhu	a2,0(a5)
    e8830fc8:	21245583          	lhu	a1,530(s0)
    e8830fcc:	854a                	mv	a0,s2
    e8830fce:	e7ee30ef          	jal	ra,e881464c <InitializeDNSMessage>
    responsePtr = putLLQ(&m->omsg, responsePtr, q, llq);
    e8830fd2:	66e2                	ld	a3,24(sp)
    mDNSu8 *responsePtr = m->omsg.data;
    e8830fd4:	1ec98593          	addi	a1,s3,492
    responsePtr = putLLQ(&m->omsg, responsePtr, q, llq);
    e8830fd8:	8622                	mv	a2,s0
    e8830fda:	95a6                	add	a1,a1,s1
    e8830fdc:	854a                	mv	a0,s2
    e8830fde:	e2dff0ef          	jal	ra,e8830e0a <putLLQ>
    e8830fe2:	862a                	mv	a2,a0
    if (responsePtr)
    e8830fe4:	d541                	beqz	a0,e8830f6c <sendChallengeResponse+0x8e>
        mStatus err = mDNSSendDNSMessage(m, &m->omsg, responsePtr, mDNSInterface_Any, q->LocalSocket, &q->servAddr, q->servPort, mDNSNULL, mDNSNULL, mDNSfalse);
    e8830fe6:	00072697          	auipc	a3,0x72
    e8830fea:	d7a68693          	addi	a3,a3,-646 # e88a2d60 <mDNSInterface_Any>
    e8830fee:	6294                	ld	a3,0(a3)
    e8830ff0:	1a445803          	lhu	a6,420(s0)
    e8830ff4:	16043703          	ld	a4,352(s0)
    e8830ff8:	e402                	sd	zero,8(sp)
    e8830ffa:	e002                	sd	zero,0(sp)
    e8830ffc:	4881                	li	a7,0
    e8830ffe:	19040793          	addi	a5,s0,400
    e8831002:	85ca                	mv	a1,s2
    e8831004:	8526                	mv	a0,s1
    e8831006:	eace60ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
    e883100a:	86aa                	mv	a3,a0
        if (err) { LogMsg("sendChallengeResponse: mDNSSendDNSMessage%s failed: %d", q->tcp ? " (TCP)" : "", err); }
    e883100c:	f00501e3          	beqz	a0,e8830f0e <sendChallengeResponse+0x30>
    e8831010:	1a843783          	ld	a5,424(s0)
    e8831014:	0007e617          	auipc	a2,0x7e
    e8831018:	9bc60613          	addi	a2,a2,-1604 # e88ae9d0 <__func__.9833+0xa38>
    e883101c:	e789                	bnez	a5,e8831026 <sendChallengeResponse+0x148>
    e883101e:	00090617          	auipc	a2,0x90
    e8831022:	25260613          	addi	a2,a2,594 # e88c1270 <kHTTPServerClass+0x90>
    e8831026:	0007e597          	auipc	a1,0x7e
    e883102a:	a6258593          	addi	a1,a1,-1438 # e88aea88 <__func__.9833+0xaf0>
    e883102e:	4501                	li	a0,0
    e8831030:	c7cfe0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8831034:	bde9                	j	e8830f0e <sendChallengeResponse+0x30>

00000000e8831036 <SetRecordRetry>:
{
    e8831036:	7139                	addi	sp,sp,-64
    e8831038:	fd31590b          	sdd	s2,s3,(sp),2,4
    e883103c:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8831040:	fc06                	sd	ra,56(sp)
    e8831042:	f852                	sd	s4,48(sp)
    rr->LastAPTime = m->timenow;
    e8831044:	24052783          	lw	a5,576(a0)
{
    e8831048:	842e                	mv	s0,a1
    e883104a:	000a4717          	auipc	a4,0xa4
    e883104e:	a3670713          	addi	a4,a4,-1482 # e88d4a80 <mDNSPlatformOneSecond>
    rr->LastAPTime = m->timenow;
    e8831052:	10f5aa23          	sw	a5,276(a1)
    if (rr->expire && rr->refreshCount < MAX_UPDATE_REFRESH_COUNT)
    e8831056:	1505a583          	lw	a1,336(a1)
{
    e883105a:	892a                	mv	s2,a0
    e883105c:	4314                	lw	a3,0(a4)
    e883105e:	000a4997          	auipc	s3,0xa4
    e8831062:	a1698993          	addi	s3,s3,-1514 # e88d4a74 <mDNS_LoggingEnabled>
    if (rr->expire && rr->refreshCount < MAX_UPDATE_REFRESH_COUNT)
    e8831066:	c1f5                	beqz	a1,e883114a <SetRecordRetry+0x114>
    e8831068:	8a3a                	mv	s4,a4
    e883106a:	1d244703          	lbu	a4,466(s0)
    e883106e:	4511                	li	a0,4
    e8831070:	0ce56d63          	bltu	a0,a4,e883114a <SetRecordRetry+0x114>
        rr->refreshCount++;
    e8831074:	2705                	addiw	a4,a4,1
    e8831076:	1ce40923          	sb	a4,466(s0)
        if (remaining > MIN_UPDATE_REFRESH_TIME)
    e883107a:	12c00713          	li	a4,300
    e883107e:	02d7083b          	mulw	a6,a4,a3
        mDNSs32 remaining = rr->expire - m->timenow;
    e8831082:	40f5853b          	subw	a0,a1,a5
    e8831086:	87aa                	mv	a5,a0
        if (remaining > MIN_UPDATE_REFRESH_TIME)
    e8831088:	08a85463          	bge	a6,a0,e8831110 <SetRecordRetry+0xda>
            rr->ThisAPInterval =  7 * (remaining/10) + (random ? random : mDNSRandom(remaining/10));
    e883108c:	4529                	li	a0,10
    e883108e:	02a7c53b          	divw	a0,a5,a0
    e8831092:	449d                	li	s1,7
    e8831094:	02a484bb          	mulw	s1,s1,a0
    e8831098:	e609                	bnez	a2,e88310a2 <SetRecordRetry+0x6c>
    e883109a:	e6fe10ef          	jal	ra,e8812f08 <mDNSRandom>
    e883109e:	0005061b          	sext.w	a2,a0
            if (rr->ThisAPInterval < MIN_UPDATE_REFRESH_TIME)
    e88310a2:	000a2703          	lw	a4,0(s4)
    e88310a6:	12c00793          	li	a5,300
            rr->ThisAPInterval =  7 * (remaining/10) + (random ? random : mDNSRandom(remaining/10));
    e88310aa:	9e25                	addw	a2,a2,s1
    e88310ac:	8532                	mv	a0,a2
            if (rr->ThisAPInterval < MIN_UPDATE_REFRESH_TIME)
    e88310ae:	02e786bb          	mulw	a3,a5,a4
                rr->ThisAPInterval = MIN_UPDATE_REFRESH_TIME;
    e88310b2:	00d62633          	slt	a2,a2,a3
            if (rr->ThisAPInterval < MIN_UPDATE_REFRESH_TIME)
    e88310b6:	87b6                	mv	a5,a3
                rr->ThisAPInterval = MIN_UPDATE_REFRESH_TIME;
    e88310b8:	40c5178b          	mveqz	a5,a0,a2
    e88310bc:	863e                	mv	a2,a5
    e88310be:	10f42823          	sw	a5,272(s0)
            LogInfo("SetRecordRetry refresh in %d of %d for %s",
    e88310c2:	0009a783          	lw	a5,0(s3)
    e88310c6:	0e078763          	beqz	a5,e88311b4 <SetRecordRetry+0x17e>
    e88310ca:	15042683          	lw	a3,336(s0)
    e88310ce:	24092783          	lw	a5,576(s2)
    e88310d2:	02e644bb          	divw	s1,a2,a4
    e88310d6:	780c                	ld	a1,48(s0)
    e88310d8:	9e9d                	subw	a3,a3,a5
    e88310da:	03b90613          	addi	a2,s2,59
    e88310de:	0591                	addi	a1,a1,4
    e88310e0:	00840513          	addi	a0,s0,8
    e88310e4:	02e6c6bb          	divw	a3,a3,a4
    e88310e8:	e436                	sd	a3,8(sp)
    e88310ea:	92be50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88310ee:	872a                	mv	a4,a0
    e88310f0:	66a2                	ld	a3,8(sp)
    e88310f2:	8626                	mv	a2,s1
    e88310f4:	0007c597          	auipc	a1,0x7c
    e88310f8:	6ec58593          	addi	a1,a1,1772 # e88ad7e0 <kOn.10632+0x1898>
}
    e88310fc:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8831100:	70e2                	ld	ra,56(sp)
    e8831102:	7a42                	ld	s4,48(sp)
    e8831104:	fd31490b          	ldd	s2,s3,(sp),2,4
            LogInfo("SetRecordRetry clamping to min refresh in %d of %d for %s",
    e8831108:	450d                	li	a0,3
}
    e883110a:	6121                	addi	sp,sp,64
            LogInfo("SetRecordRetry clamping to min refresh in %d of %d for %s",
    e883110c:	ba0fe06f          	j	e882f4ac <LogMsgWithLevel>
    e8831110:	0009a783          	lw	a5,0(s3)
            rr->ThisAPInterval = MIN_UPDATE_REFRESH_TIME;
    e8831114:	11042823          	sw	a6,272(s0)
            LogInfo("SetRecordRetry clamping to min refresh in %d of %d for %s",
    e8831118:	cfd1                	beqz	a5,e88311b4 <SetRecordRetry+0x17e>
    e883111a:	24092783          	lw	a5,576(s2)
    e883111e:	02d844bb          	divw	s1,a6,a3
    e8831122:	03b90613          	addi	a2,s2,59
    e8831126:	9d9d                	subw	a1,a1,a5
    e8831128:	00840513          	addi	a0,s0,8
    e883112c:	02d5c6bb          	divw	a3,a1,a3
    e8831130:	780c                	ld	a1,48(s0)
    e8831132:	0591                	addi	a1,a1,4
    e8831134:	e436                	sd	a3,8(sp)
    e8831136:	8dfe50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883113a:	872a                	mv	a4,a0
    e883113c:	66a2                	ld	a3,8(sp)
    e883113e:	8626                	mv	a2,s1
    e8831140:	0007c597          	auipc	a1,0x7c
    e8831144:	6d058593          	addi	a1,a1,1744 # e88ad810 <kOn.10632+0x18c8>
    e8831148:	bf55                	j	e88310fc <SetRecordRetry+0xc6>
    rr->ThisAPInterval = rr->ThisAPInterval * QuestionIntervalStep; // Same Retry logic as Unicast Queries
    e883114a:	11042703          	lw	a4,272(s0)
    e883114e:	478d                	li	a5,3
    if (rr->ThisAPInterval > MAX_RECORD_REG_INTERVAL)
    e8831150:	38400593          	li	a1,900
    rr->ThisAPInterval = rr->ThisAPInterval * QuestionIntervalStep; // Same Retry logic as Unicast Queries
    e8831154:	02e787bb          	mulw	a5,a5,a4
    rr->expire = 0;
    e8831158:	14042823          	sw	zero,336(s0)
    if (rr->ThisAPInterval > MAX_RECORD_REG_INTERVAL)
    e883115c:	02d5863b          	mulw	a2,a1,a3
    rr->ThisAPInterval = rr->ThisAPInterval * QuestionIntervalStep; // Same Retry logic as Unicast Queries
    e8831160:	873e                	mv	a4,a5
    e8831162:	00d7a7b3          	slt	a5,a5,a3
    e8831166:	42f6970b          	mvnez	a4,a3,a5
    e883116a:	87ba                	mv	a5,a4
    if (rr->ThisAPInterval > MAX_RECORD_REG_INTERVAL)
    e883116c:	873e                	mv	a4,a5
        rr->ThisAPInterval = MAX_RECORD_REG_INTERVAL;
    e883116e:	00e62733          	slt	a4,a2,a4
    e8831172:	42e6178b          	mvnez	a5,a2,a4
    e8831176:	10f42823          	sw	a5,272(s0)
    LogInfo("SetRecordRetry retry in %d ms for %s", rr->ThisAPInterval, ARDisplayString(m, rr));
    e883117a:	0009a783          	lw	a5,0(s3)
    e883117e:	cb9d                	beqz	a5,e88311b4 <SetRecordRetry+0x17e>
    e8831180:	780c                	ld	a1,48(s0)
    e8831182:	11042483          	lw	s1,272(s0)
    e8831186:	03b90613          	addi	a2,s2,59
    e883118a:	0591                	addi	a1,a1,4
    e883118c:	00840513          	addi	a0,s0,8
    e8831190:	885e50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
}
    e8831194:	7a42                	ld	s4,48(sp)
    LogInfo("SetRecordRetry retry in %d ms for %s", rr->ThisAPInterval, ARDisplayString(m, rr));
    e8831196:	8626                	mv	a2,s1
}
    e8831198:	fa91440b          	ldd	s0,s1,(sp),1,4
    e883119c:	70e2                	ld	ra,56(sp)
    e883119e:	fd31490b          	ldd	s2,s3,(sp),2,4
    LogInfo("SetRecordRetry retry in %d ms for %s", rr->ThisAPInterval, ARDisplayString(m, rr));
    e88311a2:	86aa                	mv	a3,a0
    e88311a4:	0007c597          	auipc	a1,0x7c
    e88311a8:	6ac58593          	addi	a1,a1,1708 # e88ad850 <kOn.10632+0x1908>
    e88311ac:	450d                	li	a0,3
}
    e88311ae:	6121                	addi	sp,sp,64
    LogInfo("SetRecordRetry retry in %d ms for %s", rr->ThisAPInterval, ARDisplayString(m, rr));
    e88311b0:	afcfe06f          	j	e882f4ac <LogMsgWithLevel>
}
    e88311b4:	70e2                	ld	ra,56(sp)
    e88311b6:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88311ba:	7a42                	ld	s4,48(sp)
    e88311bc:	fd31490b          	ldd	s2,s3,(sp),2,4
    e88311c0:	6121                	addi	sp,sp,64
    e88311c2:	8082                	ret

00000000e88311c4 <GetZoneData_StartQuery>:
{
    e88311c4:	7179                	addi	sp,sp,-48
    e88311c6:	e422                	sd	s0,8(sp)
    e88311c8:	e826                	sd	s1,16(sp)
    e88311ca:	ec4a                	sd	s2,24(sp)
    e88311cc:	f406                	sd	ra,40(sp)
    e88311ce:	f04e                	sd	s3,32(sp)
    if (qtype == kDNSType_SRV)
    e88311d0:	02100793          	li	a5,33
{
    e88311d4:	892a                	mv	s2,a0
    e88311d6:	842e                	mv	s0,a1
    e88311d8:	84b2                	mv	s1,a2
    if (qtype == kDNSType_SRV)
    e88311da:	06f61363          	bne	a2,a5,e8831240 <GetZoneData_StartQuery+0x7c>
        AssignDomainName(&zd->question.qname, ZoneDataSRV(zd));
    e88311de:	1005c783          	lbu	a5,256(a1)
    e88311e2:	e7ed                	bnez	a5,e88312cc <GetZoneData_StartQuery+0x108>
    e88311e4:	3285c783          	lbu	a5,808(a1)
    e88311e8:	0007b517          	auipc	a0,0x7b
    e88311ec:	66850513          	addi	a0,a0,1640 # e88ac850 <kOn.10632+0x908>
    e88311f0:	e789                	bnez	a5,e88311fa <GetZoneData_StartQuery+0x36>
    e88311f2:	0007b517          	auipc	a0,0x7b
    e88311f6:	67650513          	addi	a0,a0,1654 # e88ac868 <kOn.10632+0x920>
    e88311fa:	10050593          	addi	a1,a0,256
    e88311fe:	f4fe10ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8831202:	0005061b          	sext.w	a2,a0
    e8831206:	10000793          	li	a5,256
    e883120a:	55440993          	addi	s3,s0,1364
    e883120e:	16c7e663          	bltu	a5,a2,e883137a <GetZoneData_StartQuery+0x1b6>
    e8831212:	10044783          	lbu	a5,256(s0)
    e8831216:	10079663          	bnez	a5,e8831322 <GetZoneData_StartQuery+0x15e>
    e883121a:	32844783          	lbu	a5,808(s0)
    e883121e:	0007b597          	auipc	a1,0x7b
    e8831222:	63258593          	addi	a1,a1,1586 # e88ac850 <kOn.10632+0x908>
    e8831226:	e789                	bnez	a5,e8831230 <GetZoneData_StartQuery+0x6c>
    e8831228:	0007b597          	auipc	a1,0x7b
    e883122c:	64058593          	addi	a1,a1,1600 # e88ac868 <kOn.10632+0x920>
    e8831230:	854e                	mv	a0,s3
    e8831232:	86ffe0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        AppendDomainName(&zd->question.qname, &zd->ZoneName);
    e8831236:	11040593          	addi	a1,s0,272
    e883123a:	854e                	mv	a0,s3
    e883123c:	a00e20ef          	jal	ra,e881343c <AppendDomainName>
    zd->question.ThisQInterval       = -1;
    e8831240:	57fd                	li	a5,-1
    e8831242:	34f42a23          	sw	a5,852(s0)
    zd->question.InterfaceID         = mDNSInterface_Any;
    e8831246:	00072797          	auipc	a5,0x72
    e883124a:	b1a78793          	addi	a5,a5,-1254 # e88a2d60 <mDNSInterface_Any>
    e883124e:	639c                	ld	a5,0(a5)
    zd->question.qtype               = qtype;
    e8831250:	64941a23          	sh	s1,1620(s0)
    zd->question.flags               = 0;
    e8831254:	52042c23          	sw	zero,1336(s0)
    zd->question.InterfaceID         = mDNSInterface_Any;
    e8831258:	52f43823          	sd	a5,1328(s0)
    zd->question.Target              = zeroAddr;
    e883125c:	00072797          	auipc	a5,0x72
    e8831260:	32478793          	addi	a5,a5,804 # e88a3580 <zeroAddr>
    e8831264:	6394                	ld	a3,0(a5)
    zd->question.TimeoutQuestion     = 0;
    e8831266:	64042f23          	sw	zero,1630(s0)
    zd->question.AppendSearchDomains = 0;
    e883126a:	66040123          	sb	zero,1634(s0)
    zd->question.Target              = zeroAddr;
    e883126e:	52d43e23          	sd	a3,1340(s0)
    e8831272:	6794                	ld	a3,8(a5)
    e8831274:	4b9c                	lw	a5,16(a5)
    zd->question.ValidatingResponse = 0;
    e8831276:	48040523          	sb	zero,1162(s0)
    zd->question.Target              = zeroAddr;
    e883127a:	54d43223          	sd	a3,1348(s0)
    e883127e:	54f42623          	sw	a5,1356(s0)
    zd->question.qclass              = kDNSClass_IN;
    e8831282:	100017b7          	lui	a5,0x10001
    e8831286:	07b2                	slli	a5,a5,0xc
    e8831288:	0785                	addi	a5,a5,1
    e883128a:	64f43b23          	sd	a5,1622(s0)
    zd->question.ValidationRequired = 0;
    e883128e:	66041223          	sh	zero,1636(s0)
    zd->question.qnameOrig           = mDNSNULL;
    e8831292:	68043023          	sd	zero,1664(s0)
    zd->question.AnonInfo            = mDNSNULL;
    e8831296:	3a043023          	sd	zero,928(s0)
    zd->question.pid                 = mDNSPlatformGetPID();
    e883129a:	ca6ff0ef          	jal	ra,e8830740 <mDNSPlatformGetPID>
    e883129e:	66a42423          	sw	a0,1640(s0)
    zd->question.QuestionCallback    = GetZoneData_QuestionCallback;
    e88312a2:	00001797          	auipc	a5,0x1
    e88312a6:	43c78793          	addi	a5,a5,1084 # e88326de <GetZoneData_QuestionCallback>
    zd->question.euid                = 0;
    e88312aa:	66042e23          	sw	zero,1660(s0)
    zd->question.QuestionCallback    = GetZoneData_QuestionCallback;
    e88312ae:	68f43423          	sd	a5,1672(s0)
    zd->question.QuestionContext     = zd;
    e88312b2:	68843823          	sd	s0,1680(s0)
    return(mDNS_StartQuery(m, &zd->question));
    e88312b6:	34040593          	addi	a1,s0,832
}
    e88312ba:	6422                	ld	s0,8(sp)
    e88312bc:	70a2                	ld	ra,40(sp)
    e88312be:	64c2                	ld	s1,16(sp)
    e88312c0:	7982                	ld	s3,32(sp)
    return(mDNS_StartQuery(m, &zd->question));
    e88312c2:	854a                	mv	a0,s2
}
    e88312c4:	6962                	ld	s2,24(sp)
    e88312c6:	6145                	addi	sp,sp,48
    return(mDNS_StartQuery(m, &zd->question));
    e88312c8:	95ff906f          	j	e882ac26 <mDNS_StartQuery>
        AssignDomainName(&zd->question.qname, ZoneDataSRV(zd));
    e88312cc:	4705                	li	a4,1
    e88312ce:	00e79e63          	bne	a5,a4,e88312ea <GetZoneData_StartQuery+0x126>
    e88312d2:	3285c783          	lbu	a5,808(a1)
    e88312d6:	00090517          	auipc	a0,0x90
    e88312da:	f9a50513          	addi	a0,a0,-102 # e88c1270 <kHTTPServerClass+0x90>
    e88312de:	df91                	beqz	a5,e88311fa <GetZoneData_StartQuery+0x36>
    e88312e0:	0007b517          	auipc	a0,0x7b
    e88312e4:	5a050513          	addi	a0,a0,1440 # e88ac880 <kOn.10632+0x938>
    e88312e8:	bf09                	j	e88311fa <GetZoneData_StartQuery+0x36>
    e88312ea:	4709                	li	a4,2
    e88312ec:	00e79f63          	bne	a5,a4,e883130a <GetZoneData_StartQuery+0x146>
    e88312f0:	3285c783          	lbu	a5,808(a1)
    e88312f4:	0007b517          	auipc	a0,0x7b
    e88312f8:	5a450513          	addi	a0,a0,1444 # e88ac898 <kOn.10632+0x950>
    e88312fc:	ee079fe3          	bnez	a5,e88311fa <GetZoneData_StartQuery+0x36>
    e8831300:	0007b517          	auipc	a0,0x7b
    e8831304:	54050513          	addi	a0,a0,1344 # e88ac840 <kOn.10632+0x8f8>
    e8831308:	bdcd                	j	e88311fa <GetZoneData_StartQuery+0x36>
    e883130a:	470d                	li	a4,3
    e883130c:	00090517          	auipc	a0,0x90
    e8831310:	f6450513          	addi	a0,a0,-156 # e88c1270 <kHTTPServerClass+0x90>
    e8831314:	eee793e3          	bne	a5,a4,e88311fa <GetZoneData_StartQuery+0x36>
    e8831318:	0007b517          	auipc	a0,0x7b
    e883131c:	59850513          	addi	a0,a0,1432 # e88ac8b0 <kOn.10632+0x968>
    e8831320:	bde9                	j	e88311fa <GetZoneData_StartQuery+0x36>
    e8831322:	4705                	li	a4,1
    e8831324:	00e79f63          	bne	a5,a4,e8831342 <GetZoneData_StartQuery+0x17e>
    e8831328:	32844783          	lbu	a5,808(s0)
    e883132c:	00090597          	auipc	a1,0x90
    e8831330:	f4458593          	addi	a1,a1,-188 # e88c1270 <kHTTPServerClass+0x90>
    e8831334:	ee078ee3          	beqz	a5,e8831230 <GetZoneData_StartQuery+0x6c>
    e8831338:	0007b597          	auipc	a1,0x7b
    e883133c:	54858593          	addi	a1,a1,1352 # e88ac880 <kOn.10632+0x938>
    e8831340:	bdc5                	j	e8831230 <GetZoneData_StartQuery+0x6c>
    e8831342:	4709                	li	a4,2
    e8831344:	00e79f63          	bne	a5,a4,e8831362 <GetZoneData_StartQuery+0x19e>
    e8831348:	32844783          	lbu	a5,808(s0)
    e883134c:	0007b597          	auipc	a1,0x7b
    e8831350:	54c58593          	addi	a1,a1,1356 # e88ac898 <kOn.10632+0x950>
    e8831354:	ec079ee3          	bnez	a5,e8831230 <GetZoneData_StartQuery+0x6c>
    e8831358:	0007b597          	auipc	a1,0x7b
    e883135c:	4e858593          	addi	a1,a1,1256 # e88ac840 <kOn.10632+0x8f8>
    e8831360:	bdc1                	j	e8831230 <GetZoneData_StartQuery+0x6c>
    e8831362:	470d                	li	a4,3
    e8831364:	00090597          	auipc	a1,0x90
    e8831368:	f0c58593          	addi	a1,a1,-244 # e88c1270 <kHTTPServerClass+0x90>
    e883136c:	ece792e3          	bne	a5,a4,e8831230 <GetZoneData_StartQuery+0x6c>
    e8831370:	0007b597          	auipc	a1,0x7b
    e8831374:	54058593          	addi	a1,a1,1344 # e88ac8b0 <kOn.10632+0x968>
    e8831378:	bd65                	j	e8831230 <GetZoneData_StartQuery+0x6c>
    e883137a:	54040a23          	sb	zero,1364(s0)
    e883137e:	bd65                	j	e8831236 <GetZoneData_StartQuery+0x72>

00000000e8831380 <RRMergeFailure>:
{
    e8831380:	1101                	addi	sp,sp,-32
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e8831382:	678d                	lui	a5,0x3
{
    e8831384:	f891540b          	sdd	s0,s1,(sp),0,4
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e8831388:	97aa                	add	a5,a5,a0
{
    e883138a:	e84a                	sd	s2,16(sp)
    e883138c:	ec06                	sd	ra,24(sp)
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e883138e:	1b87b403          	ld	s0,440(a5) # 31b8 <memcmp-0xe87fce48>
{
    e8831392:	84aa                	mv	s1,a0
        rr->mState = mergeState_DontMerge;
    e8831394:	4905                	li	s2,1
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e8831396:	e419                	bnez	s0,e88313a4 <RRMergeFailure+0x24>
}
    e8831398:	60e2                	ld	ra,24(sp)
    e883139a:	f891440b          	ldd	s0,s1,(sp),0,4
    e883139e:	6942                	ld	s2,16(sp)
    e88313a0:	6105                	addi	sp,sp,32
    e88313a2:	8082                	ret
        rr->mState = mergeState_DontMerge;
    e88313a4:	1d2408a3          	sb	s2,465(s0)
        rr->SendRNow = mDNSNULL;
    e88313a8:	0c043c23          	sd	zero,216(s0)
        ActivateUnicastRegistration(m, rr);
    e88313ac:	85a2                	mv	a1,s0
    e88313ae:	8526                	mv	a0,s1
    e88313b0:	cd6f00ef          	jal	ra,e8821886 <ActivateUnicastRegistration>
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e88313b4:	6000                	ld	s0,0(s0)
    e88313b6:	b7c5                	j	e8831396 <RRMergeFailure+0x16>

00000000e88313b8 <hostnameGetPublicAddressCallback>:
{
    e88313b8:	7179                	addi	sp,sp,-48
    e88313ba:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88313be:	f406                	sd	ra,40(sp)
    e88313c0:	f04a                	sd	s2,32(sp)
    HostnameInfo *h = (HostnameInfo *)n->clientContext;
    e88313c2:	69a0                	ld	s0,80(a1)
    if (!h) { LogMsg("RegisterHostnameRecord: registration cancelled"); return; }
    e88313c4:	ec09                	bnez	s0,e88313de <hostnameGetPublicAddressCallback+0x26>
}
    e88313c6:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88313ca:	70a2                	ld	ra,40(sp)
    e88313cc:	7902                	ld	s2,32(sp)
    if (!h) { LogMsg("RegisterHostnameRecord: registration cancelled"); return; }
    e88313ce:	0007d597          	auipc	a1,0x7d
    e88313d2:	be258593          	addi	a1,a1,-1054 # e88adfb0 <__func__.9833+0x18>
    e88313d6:	4501                	li	a0,0
}
    e88313d8:	6145                	addi	sp,sp,48
    if (!h) { LogMsg("RegisterHostnameRecord: registration cancelled"); return; }
    e88313da:	8d2fe06f          	j	e882f4ac <LogMsgWithLevel>
    if (!n->Result)
    e88313de:	5d9c                	lw	a5,56(a1)
    e88313e0:	e3dd                	bnez	a5,e8831486 <hostnameGetPublicAddressCallback+0xce>
        if (mDNSIPv4AddressIsZero(n->ExternalAddress) || mDNSv4AddrIsRFC1918(&n->ExternalAddress)) return;
    e88313e2:	559c                	lw	a5,40(a1)
    e88313e4:	c3cd                	beqz	a5,e8831486 <hostnameGetPublicAddressCallback+0xce>
    e88313e6:	02858793          	addi	a5,a1,40
    e88313ea:	892a                	mv	s2,a0
    e88313ec:	853e                	mv	a0,a5
    e88313ee:	84ae                	mv	s1,a1
    e88313f0:	e43e                	sd	a5,8(sp)
    e88313f2:	a09e10ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e88313f6:	e941                	bnez	a0,e8831486 <hostnameGetPublicAddressCallback+0xce>
        if (h->arv4.resrec.RecordType)
    e88313f8:	16844703          	lbu	a4,360(s0)
    e88313fc:	67a2                	ld	a5,8(sp)
    e88313fe:	c331                	beqz	a4,e8831442 <hostnameGetPublicAddressCallback+0x8a>
            if (mDNSSameIPv4Address(h->arv4.resrec.rdata->u.ipv4, n->ExternalAddress)) return;  // If address unchanged, do nothing
    e8831400:	19043703          	ld	a4,400(s0)
    e8831404:	5494                	lw	a3,40(s1)
    e8831406:	4350                	lw	a2,4(a4)
    e8831408:	06d60f63          	beq	a2,a3,e8831486 <hostnameGetPublicAddressCallback+0xce>
            LogInfo("Updating hostname %p %##s IPv4 from %.4a to %.4a (NAT gateway's external address)",n,
    e883140c:	000a3697          	auipc	a3,0xa3
    e8831410:	66868693          	addi	a3,a3,1640 # e88d4a74 <mDNS_LoggingEnabled>
    e8831414:	4294                	lw	a3,0(a3)
    e8831416:	ce81                	beqz	a3,e883142e <hostnameGetPublicAddressCallback+0x76>
    e8831418:	18843683          	ld	a3,392(s0)
    e883141c:	0711                	addi	a4,a4,4
    e883141e:	8626                	mv	a2,s1
    e8831420:	0007d597          	auipc	a1,0x7d
    e8831424:	bc058593          	addi	a1,a1,-1088 # e88adfe0 <__func__.9833+0x48>
    e8831428:	450d                	li	a0,3
    e883142a:	882fe0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            mDNS_Deregister(m, &h->arv4);   // mStatus_MemFree callback will re-register with new address
    e883142e:	16040593          	addi	a1,s0,352
}
    e8831432:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8831436:	70a2                	ld	ra,40(sp)
            mDNS_Deregister(m, &h->arv4);   // mStatus_MemFree callback will re-register with new address
    e8831438:	854a                	mv	a0,s2
}
    e883143a:	7902                	ld	s2,32(sp)
    e883143c:	6145                	addi	sp,sp,48
            mDNS_Deregister(m, &h->arv4);   // mStatus_MemFree callback will re-register with new address
    e883143e:	99ef306f          	j	e88245dc <mDNS_Deregister>
            LogInfo("Advertising hostname %##s IPv4 %.4a (NAT gateway's external address)", h->arv4.resrec.name->c, &n->ExternalAddress);
    e8831442:	000a3717          	auipc	a4,0xa3
    e8831446:	63270713          	addi	a4,a4,1586 # e88d4a74 <mDNS_LoggingEnabled>
    e883144a:	4318                	lw	a4,0(a4)
    e883144c:	cb19                	beqz	a4,e8831462 <hostnameGetPublicAddressCallback+0xaa>
    e883144e:	18843603          	ld	a2,392(s0)
    e8831452:	86be                	mv	a3,a5
    e8831454:	0007d597          	auipc	a1,0x7d
    e8831458:	be458593          	addi	a1,a1,-1052 # e88ae038 <__func__.9833+0xa0>
    e883145c:	450d                	li	a0,3
    e883145e:	84efe0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            h->arv4.resrec.RecordType = kDNSRecordTypeKnownUnique;
    e8831462:	02000793          	li	a5,32
    e8831466:	16f40423          	sb	a5,360(s0)
            h->arv4.resrec.rdata->u.ipv4 = n->ExternalAddress;
    e883146a:	19043783          	ld	a5,400(s0)
    e883146e:	5498                	lw	a4,40(s1)
            mDNS_Register(m, &h->arv4);
    e8831470:	16040593          	addi	a1,s0,352
    e8831474:	854a                	mv	a0,s2
            h->arv4.resrec.rdata->u.ipv4 = n->ExternalAddress;
    e8831476:	c3d8                	sw	a4,4(a5)
}
    e8831478:	fa91440b          	ldd	s0,s1,(sp),1,4
    e883147c:	70a2                	ld	ra,40(sp)
    e883147e:	7902                	ld	s2,32(sp)
    e8831480:	6145                	addi	sp,sp,48
            mDNS_Register(m, &h->arv4);
    e8831482:	91ef306f          	j	e88245a0 <mDNS_Register>
}
    e8831486:	70a2                	ld	ra,40(sp)
    e8831488:	fa91440b          	ldd	s0,s1,(sp),1,4
    e883148c:	7902                	ld	s2,32(sp)
    e883148e:	6145                	addi	sp,sp,48
    e8831490:	8082                	ret

00000000e8831492 <ParseTSIGError>:
{
    e8831492:	715d                	addi	sp,sp,-80
    e8831494:	f052                	sd	s4,32(sp)
    e8831496:	8a2e                	mv	s4,a1
    e8831498:	fc26                	sd	s1,56(sp)
    ptr = LocateAdditionals(msg, end);
    e883149a:	85b2                	mv	a1,a2
{
    e883149c:	84aa                	mv	s1,a0
    ptr = LocateAdditionals(msg, end);
    e883149e:	8552                	mv	a0,s4
{
    e88314a0:	f44e                	sd	s3,40(sp)
    e88314a2:	e85a                	sd	s6,16(sp)
    e88314a4:	e486                	sd	ra,72(sp)
    e88314a6:	e0a2                	sd	s0,64(sp)
    e88314a8:	f84a                	sd	s2,48(sp)
    e88314aa:	ec56                	sd	s5,24(sp)
    e88314ac:	e45e                	sd	s7,8(sp)
    e88314ae:	e062                	sd	s8,0(sp)
    e88314b0:	8b32                	mv	s6,a2
    e88314b2:	89b6                	mv	s3,a3
    ptr = LocateAdditionals(msg, end);
    e88314b4:	c8ee40ef          	jal	ra,e8815942 <LocateAdditionals>
    if (!ptr) goto finish;
    e88314b8:	cd19                	beqz	a0,e88314d6 <ParseTSIGError+0x44>
        ptr = GetLargeResourceRecord(m, msg, ptr, end, 0, kDNSRecordTypePacketAdd, &m->rec);
    e88314ba:	6925                	lui	s2,0x9
    e88314bc:	4d890a93          	addi	s5,s2,1240 # 94d8 <memcmp-0xe87f6b28>
    e88314c0:	4401                	li	s0,0
    e88314c2:	9aa6                	add	s5,s5,s1
        if (m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && m->rec.r.resrec.rrtype == kDNSType_TSIG)
    e88314c4:	9926                	add	s2,s2,s1
    e88314c6:	0f000b93          	li	s7,240
    e88314ca:	0fa00c13          	li	s8,250
    for (i = 0; i < msg->h.numAdditionals; i++)
    e88314ce:	00aa5783          	lhu	a5,10(s4)
    e88314d2:	02f44363          	blt	s0,a5,e88314f8 <ParseTSIGError+0x66>
    mStatus err = mStatus_NoError;
    e88314d6:	4501                	li	a0,0
    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e88314d8:	67a5                	lui	a5,0x9
    e88314da:	94be                	add	s1,s1,a5
    e88314dc:	4e048023          	sb	zero,1248(s1)
}
    e88314e0:	60a6                	ld	ra,72(sp)
    e88314e2:	6406                	ld	s0,64(sp)
    e88314e4:	74e2                	ld	s1,56(sp)
    e88314e6:	7942                	ld	s2,48(sp)
    e88314e8:	79a2                	ld	s3,40(sp)
    e88314ea:	7a02                	ld	s4,32(sp)
    e88314ec:	6ae2                	ld	s5,24(sp)
    e88314ee:	6b42                	ld	s6,16(sp)
    e88314f0:	6ba2                	ld	s7,8(sp)
    e88314f2:	6c02                	ld	s8,0(sp)
    e88314f4:	6161                	addi	sp,sp,80
    e88314f6:	8082                	ret
        ptr = GetLargeResourceRecord(m, msg, ptr, end, 0, kDNSRecordTypePacketAdd, &m->rec);
    e88314f8:	862a                	mv	a2,a0
    e88314fa:	8856                	mv	a6,s5
    e88314fc:	08000793          	li	a5,128
    e8831500:	4701                	li	a4,0
    e8831502:	86da                	mv	a3,s6
    e8831504:	85d2                	mv	a1,s4
    e8831506:	8526                	mv	a0,s1
    e8831508:	92be50ef          	jal	ra,e8816e32 <GetLargeResourceRecord>
        if (!ptr) goto finish;
    e883150c:	d569                	beqz	a0,e88314d6 <ParseTSIGError+0x44>
        if (m->rec.r.resrec.RecordType != kDNSRecordTypePacketNegative && m->rec.r.resrec.rrtype == kDNSType_TSIG)
    e883150e:	4e094783          	lbu	a5,1248(s2)
    e8831512:	0f778463          	beq	a5,s7,e88315fa <ParseTSIGError+0x168>
    e8831516:	4e295783          	lhu	a5,1250(s2)
    e883151a:	0f879063          	bne	a5,s8,e88315fa <ParseTSIGError+0x168>
            mDNSu8 *rd = m->rec.r.resrec.rdata->u.data;
    e883151e:	50893503          	ld	a0,1288(s2)
            mDNSu8 *rdend = rd + m->rec.r.resrec.rdlength;
    e8831522:	4ec95903          	lhu	s2,1260(s2)
            mDNSu8 *rd = m->rec.r.resrec.rdata->u.data;
    e8831526:	00450413          	addi	s0,a0,4
            mDNSu8 *rdend = rd + m->rec.r.resrec.rdlength;
    e883152a:	9922                	add	s2,s2,s0
            int alglen = DomainNameLengthLimit(&m->rec.r.resrec.rdata->u.name, rdend);
    e883152c:	85ca                	mv	a1,s2
    e883152e:	8522                	mv	a0,s0
    e8831530:	c1de10ef          	jal	ra,e881314c <DomainNameLengthLimit>
            if (alglen > MAX_DOMAIN_NAME) goto finish;
    e8831534:	0005071b          	sext.w	a4,a0
    e8831538:	10000793          	li	a5,256
    e883153c:	f8e7ede3          	bltu	a5,a4,e88314d6 <ParseTSIGError+0x44>
            rd += alglen;                                       // algorithm name
    e8831540:	9522                	add	a0,a0,s0
            if (rd + 6 > rdend) goto finish;
    e8831542:	00650793          	addi	a5,a0,6
    e8831546:	f8f968e3          	bltu	s2,a5,e88314d6 <ParseTSIGError+0x44>
            if (rd + sizeof(mDNSOpaque16) > rdend) goto finish;
    e883154a:	00850793          	addi	a5,a0,8
    e883154e:	f8f964e3          	bltu	s2,a5,e88314d6 <ParseTSIGError+0x44>
            if (rd + sizeof(mDNSOpaque16) > rdend) goto finish;
    e8831552:	00a50793          	addi	a5,a0,10
    e8831556:	f8f960e3          	bltu	s2,a5,e88314d6 <ParseTSIGError+0x44>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e883155a:	00854703          	lbu	a4,8(a0)
    e883155e:	00954683          	lbu	a3,9(a0)
    e8831562:	0087171b          	slliw	a4,a4,0x8
            if (rd + macsize > rdend) goto finish;
    e8831566:	8f55                	or	a4,a4,a3
    e8831568:	97ba                	add	a5,a5,a4
    e883156a:	f6f966e3          	bltu	s2,a5,e88314d6 <ParseTSIGError+0x44>
            if (rd + sizeof(mDNSOpaque16) > rdend) goto finish;
    e883156e:	00278713          	addi	a4,a5,2 # 9002 <memcmp-0xe87f6ffe>
    e8831572:	f6e962e3          	bltu	s2,a4,e88314d6 <ParseTSIGError+0x44>
            if (rd + sizeof(mDNSOpaque16) > rdend) goto finish;
    e8831576:	00478713          	addi	a4,a5,4
    e883157a:	f4e96ee3          	bltu	s2,a4,e88314d6 <ParseTSIGError+0x44>
    e883157e:	0027c683          	lbu	a3,2(a5)
    e8831582:	0037c783          	lbu	a5,3(a5)
    e8831586:	0086969b          	slliw	a3,a3,0x8
            err = mDNSVal16(*(mDNSOpaque16 *)rd);               // error code
    e883158a:	8edd                	or	a3,a3,a5
            if      (err == TSIG_ErrBadSig)  { LogMsg("%##s: bad signature", displayname->c);              err = mStatus_BadSig;     }
    e883158c:	47c1                	li	a5,16
    e883158e:	00f69d63          	bne	a3,a5,e88315a8 <ParseTSIGError+0x116>
    e8831592:	4501                	li	a0,0
    e8831594:	864e                	mv	a2,s3
    e8831596:	0007b597          	auipc	a1,0x7b
    e883159a:	5c258593          	addi	a1,a1,1474 # e88acb58 <kOn.10632+0xc10>
    e883159e:	f0ffd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88315a2:	7541                	lui	a0,0xffff0
    e88315a4:	1521                	addi	a0,a0,-24
    e88315a6:	bf0d                	j	e88314d8 <ParseTSIGError+0x46>
            else if (err == TSIG_ErrBadKey)  { LogMsg("%##s: bad key", displayname->c);                    err = mStatus_BadKey;     }
    e88315a8:	47c5                	li	a5,17
    e88315aa:	00f69d63          	bne	a3,a5,e88315c4 <ParseTSIGError+0x132>
    e88315ae:	4501                	li	a0,0
    e88315b0:	864e                	mv	a2,s3
    e88315b2:	0007b597          	auipc	a1,0x7b
    e88315b6:	5be58593          	addi	a1,a1,1470 # e88acb70 <kOn.10632+0xc28>
    e88315ba:	ef3fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88315be:	7541                	lui	a0,0xffff0
    e88315c0:	151d                	addi	a0,a0,-25
    e88315c2:	bf19                	j	e88314d8 <ParseTSIGError+0x46>
            else if (err == TSIG_ErrBadTime) { LogMsg("%##s: bad time", displayname->c);                   err = mStatus_BadTime;    }
    e88315c4:	47c9                	li	a5,18
    e88315c6:	00f69d63          	bne	a3,a5,e88315e0 <ParseTSIGError+0x14e>
    e88315ca:	4501                	li	a0,0
    e88315cc:	864e                	mv	a2,s3
    e88315ce:	0007b597          	auipc	a1,0x7b
    e88315d2:	5b258593          	addi	a1,a1,1458 # e88acb80 <kOn.10632+0xc38>
    e88315d6:	ed7fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88315da:	7541                	lui	a0,0xffff0
    e88315dc:	1525                	addi	a0,a0,-23
    e88315de:	bded                	j	e88314d8 <ParseTSIGError+0x46>
            else if (err)                    { LogMsg("%##s: unknown tsig error %d", displayname->c, err); err = mStatus_UnknownErr; }
    e88315e0:	ee068be3          	beqz	a3,e88314d6 <ParseTSIGError+0x44>
    e88315e4:	4501                	li	a0,0
    e88315e6:	864e                	mv	a2,s3
    e88315e8:	0007b597          	auipc	a1,0x7b
    e88315ec:	5a858593          	addi	a1,a1,1448 # e88acb90 <kOn.10632+0xc48>
    e88315f0:	ebdfd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88315f4:	7541                	lui	a0,0xffff0
    e88315f6:	157d                	addi	a0,a0,-1
    e88315f8:	b5c5                	j	e88314d8 <ParseTSIGError+0x46>
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e88315fa:	4e090023          	sb	zero,1248(s2)
    for (i = 0; i < msg->h.numAdditionals; i++)
    e88315fe:	2405                	addiw	s0,s0,1
    e8831600:	b5f9                	j	e88314ce <ParseTSIGError+0x3c>

00000000e8831602 <BuildUpdateMessage>:
{
    e8831602:	7139                	addi	sp,sp,-64
    e8831604:	f891540b          	sdd	s0,s1,(sp),0,4
    e8831608:	fb31590b          	sdd	s2,s3,(sp),1,4
    e883160c:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8831610:	fc06                	sd	ra,56(sp)
    e8831612:	f85a                	sd	s6,48(sp)
    if (rr->state == regState_DeregPending)
    e8831614:	14c64703          	lbu	a4,332(a2)
    e8831618:	478d                	li	a5,3
{
    e883161a:	84aa                	mv	s1,a0
    e883161c:	8432                	mv	s0,a2
    e883161e:	00860913          	addi	s2,a2,8
    if (rr->state == regState_DeregPending)
    e8831622:	04f71663          	bne	a4,a5,e883166e <BuildUpdateMessage+0x6c>
        ptr = putDeletionRecordWithLimit(&m->omsg, ptr, &rr->resrec, limit);
    e8831626:	651d                	lui	a0,0x7
    e8831628:	1e050513          	addi	a0,a0,480 # 71e0 <memcmp-0xe87f8e20>
        rr->expire = 0;     // Indicate that we have no active registration any more
    e883162c:	14062823          	sw	zero,336(a2)
        ptr = putDeletionRecordWithLimit(&m->omsg, ptr, &rr->resrec, limit);
    e8831630:	9526                	add	a0,a0,s1
    e8831632:	864a                	mv	a2,s2
    e8831634:	99ce50ef          	jal	ra,e88167d0 <putDeletionRecordWithLimit>
        if (!ptr) goto exit;
    e8831638:	e10d                	bnez	a0,e883165a <BuildUpdateMessage+0x58>
    LogMsg("BuildUpdateMessage: Error formatting message for %s", ARDisplayString(m, rr));
    e883163a:	780c                	ld	a1,48(s0)
    e883163c:	03b48613          	addi	a2,s1,59
    e8831640:	854a                	mv	a0,s2
    e8831642:	0591                	addi	a1,a1,4
    e8831644:	bd0e50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8831648:	862a                	mv	a2,a0
    e883164a:	0007b597          	auipc	a1,0x7b
    e883164e:	b2e58593          	addi	a1,a1,-1234 # e88ac178 <kOn.10632+0x230>
    e8831652:	4501                	li	a0,0
    e8831654:	e59fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return mDNSNULL;
    e8831658:	4501                	li	a0,0
}
    e883165a:	70e2                	ld	ra,56(sp)
    e883165c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8831660:	7b42                	ld	s6,48(sp)
    e8831662:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8831666:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e883166a:	6121                	addi	sp,sp,64
    e883166c:	8082                	ret
    if (rr->state == regState_Registered) rr->state = regState_Refresh;
    e883166e:	4789                	li	a5,2
    e8831670:	89ae                	mv	s3,a1
    e8831672:	8a36                	mv	s4,a3
    e8831674:	08f71963          	bne	a4,a5,e8831706 <BuildUpdateMessage+0x104>
    e8831678:	4795                	li	a5,5
        rr->state = regState_Pending;
    e883167a:	14f40623          	sb	a5,332(s0)
    if (rr->resrec.RecordType != kDNSRecordTypeAdvisory) rr->RequireGoodbye = mDNStrue;
    e883167e:	00844703          	lbu	a4,8(s0)
    e8831682:	4791                	li	a5,4
    e8831684:	00f70563          	beq	a4,a5,e883168e <BuildUpdateMessage+0x8c>
    e8831688:	4785                	li	a5,1
    e883168a:	0af40c23          	sb	a5,184(s0)
    if ((rr->resrec.rrtype == kDNSType_SRV) && (rr->AutoTarget == Target_AutoHostAndNATMAP) &&
    e883168e:	00a45703          	lhu	a4,10(s0)
    e8831692:	02100793          	li	a5,33
    e8831696:	00f71e63          	bne	a4,a5,e88316b2 <BuildUpdateMessage+0xb0>
    e883169a:	07844703          	lbu	a4,120(s0)
    e883169e:	4789                	li	a5,2
    e88316a0:	00f71963          	bne	a4,a5,e88316b2 <BuildUpdateMessage+0xb0>
    e88316a4:	1a845703          	lhu	a4,424(s0)
    e88316a8:	87ba                	mv	a5,a4
    e88316aa:	c701                	beqz	a4,e88316b2 <BuildUpdateMessage+0xb0>
        rr->resrec.rdata->u.srv.port = rr->NATinfo.ExternalPort;
    e88316ac:	7818                	ld	a4,48(s0)
    e88316ae:	00f71423          	sh	a5,8(a4)
    if (rr->state == regState_UpdatePending)
    e88316b2:	14c44703          	lbu	a4,332(s0)
    e88316b6:	479d                	li	a5,7
    e88316b8:	04f71e63          	bne	a4,a5,e8831714 <BuildUpdateMessage+0x112>
        SetNewRData(&rr->resrec, rr->OrigRData, rr->OrigRDLen);
    e88316bc:	1e045603          	lhu	a2,480(s0)
    e88316c0:	1e843583          	ld	a1,488(s0)
    e88316c4:	854a                	mv	a0,s2
        if (!(ptr = putDeletionRecordWithLimit(&m->omsg, ptr, &rr->resrec, limit))) goto exit; // delete old rdata
    e88316c6:	6b1d                	lui	s6,0x7
        SetNewRData(&rr->resrec, rr->OrigRData, rr->OrigRDLen);
    e88316c8:	b90e30ef          	jal	ra,e8814a58 <SetNewRData>
        if (!(ptr = putDeletionRecordWithLimit(&m->omsg, ptr, &rr->resrec, limit))) goto exit; // delete old rdata
    e88316cc:	1e0b0a93          	addi	s5,s6,480 # 71e0 <memcmp-0xe87f8e20>
    e88316d0:	9aa6                	add	s5,s5,s1
    e88316d2:	85ce                	mv	a1,s3
    e88316d4:	86d2                	mv	a3,s4
    e88316d6:	864a                	mv	a2,s2
    e88316d8:	8556                	mv	a0,s5
    e88316da:	8f6e50ef          	jal	ra,e88167d0 <putDeletionRecordWithLimit>
    e88316de:	89aa                	mv	s3,a0
    e88316e0:	dd29                	beqz	a0,e883163a <BuildUpdateMessage+0x38>
        SetNewRData(&rr->resrec, rr->InFlightRData, rr->InFlightRDLen);
    e88316e2:	1e245603          	lhu	a2,482(s0)
    e88316e6:	1f043583          	ld	a1,496(s0)
    e88316ea:	854a                	mv	a0,s2
    e88316ec:	b6ce30ef          	jal	ra,e8814a58 <SetNewRData>
        if (!(ptr = PutResourceRecordTTLWithLimit(&m->omsg, ptr, &m->omsg.h.mDNS_numUpdates, &rr->resrec, rr->resrec.rroriginalttl, limit))) goto exit;
    e88316f0:	4818                	lw	a4,16(s0)
    e88316f2:	1e8b0613          	addi	a2,s6,488
    e88316f6:	87d2                	mv	a5,s4
    e88316f8:	86ca                	mv	a3,s2
    e88316fa:	9626                	add	a2,a2,s1
    e88316fc:	85ce                	mv	a1,s3
    e88316fe:	8556                	mv	a0,s5
        ptr = PutResourceRecordTTLWithLimit(&m->omsg, ptr, &m->omsg.h.mDNS_numUpdates, &rr->resrec, rr->resrec.rroriginalttl, limit);
    e8831700:	f41e40ef          	jal	ra,e8816640 <PutResourceRecordTTLWithLimit>
        if (!ptr) goto exit;
    e8831704:	bf15                	j	e8831638 <BuildUpdateMessage+0x36>
    if (rr->state != regState_Refresh && rr->state != regState_UpdatePending)
    e8831706:	0fd77713          	andi	a4,a4,253
    e883170a:	4795                	li	a5,5
    e883170c:	f6f709e3          	beq	a4,a5,e883167e <BuildUpdateMessage+0x7c>
        rr->state = regState_Pending;
    e8831710:	4785                	li	a5,1
    e8831712:	b7a5                	j	e883167a <BuildUpdateMessage+0x78>
        if (rr->resrec.RecordType == kDNSRecordTypeKnownUnique || rr->resrec.RecordType == kDNSRecordTypeVerified)
    e8831714:	00844703          	lbu	a4,8(s0)
    e8831718:	ff07079b          	addiw	a5,a4,-16
    e883171c:	0ef7f793          	andi	a5,a5,239
    e8831720:	e385                	bnez	a5,e8831740 <BuildUpdateMessage+0x13e>
            ptr = putDeleteRRSetWithLimit(&m->omsg, ptr, rr->resrec.name, rr->resrec.rrtype, limit);
    e8831722:	00a45683          	lhu	a3,10(s0)
    e8831726:	7410                	ld	a2,40(s0)
    e8831728:	651d                	lui	a0,0x7
    e883172a:	1e050513          	addi	a0,a0,480 # 71e0 <memcmp-0xe87f8e20>
    e883172e:	85ce                	mv	a1,s3
    e8831730:	8752                	mv	a4,s4
    e8831732:	9526                	add	a0,a0,s1
    e8831734:	966e30ef          	jal	ra,e881489a <putDeleteRRSetWithLimit>
    e8831738:	89aa                	mv	s3,a0
            if (!ptr) goto exit;
    e883173a:	00099663          	bnez	s3,e8831746 <BuildUpdateMessage+0x144>
    e883173e:	bdf5                	j	e883163a <BuildUpdateMessage+0x38>
        else if (rr->resrec.RecordType != kDNSRecordTypeShared)
    e8831740:	47a1                	li	a5,8
    e8831742:	fef71ce3          	bne	a4,a5,e883173a <BuildUpdateMessage+0x138>
        ptr = PutResourceRecordTTLWithLimit(&m->omsg, ptr, &m->omsg.h.mDNS_numUpdates, &rr->resrec, rr->resrec.rroriginalttl, limit);
    e8831746:	651d                	lui	a0,0x7
    e8831748:	1e850613          	addi	a2,a0,488 # 71e8 <memcmp-0xe87f8e18>
    e883174c:	1e050513          	addi	a0,a0,480
    e8831750:	87d2                	mv	a5,s4
    e8831752:	4818                	lw	a4,16(s0)
    e8831754:	86ca                	mv	a3,s2
    e8831756:	9626                	add	a2,a2,s1
    e8831758:	85ce                	mv	a1,s3
    e883175a:	9526                	add	a0,a0,s1
    e883175c:	b755                	j	e8831700 <BuildUpdateMessage+0xfe>

00000000e883175e <FoundDomain>:
{
    SearchListElem *slElem = question->QuestionContext;
    mStatus err;
    const char *name;

    if (answer->rrtype != kDNSType_PTR) return;
    e883175e:	00265703          	lhu	a4,2(a2)
    e8831762:	47b1                	li	a5,12
    e8831764:	2af71163          	bne	a4,a5,e8831a06 <FoundDomain+0x2a8>
    if (answer->RecordType == kDNSRecordTypePacketNegative) return;
    e8831768:	00064703          	lbu	a4,0(a2)
    e883176c:	0f000793          	li	a5,240
    e8831770:	28f70b63          	beq	a4,a5,e8831a06 <FoundDomain+0x2a8>
{
    e8831774:	7159                	addi	sp,sp,-112
    if (answer->InterfaceID == mDNSInterface_LocalOnly) return;
    e8831776:	00071797          	auipc	a5,0x71
    e883177a:	5fa78793          	addi	a5,a5,1530 # e88a2d70 <mDNSInterface_LocalOnly>
{
    e883177e:	f85a                	sd	s6,48(sp)
    e8831780:	f486                	sd	ra,104(sp)
    e8831782:	f0a2                	sd	s0,96(sp)
    e8831784:	eca6                	sd	s1,88(sp)
    e8831786:	e8ca                	sd	s2,80(sp)
    e8831788:	e4ce                	sd	s3,72(sp)
    e883178a:	e0d2                	sd	s4,64(sp)
    e883178c:	fc56                	sd	s5,56(sp)
    e883178e:	f45e                	sd	s7,40(sp)
    e8831790:	f062                	sd	s8,32(sp)
    if (answer->InterfaceID == mDNSInterface_LocalOnly) return;
    e8831792:	0007bb03          	ld	s6,0(a5)
    e8831796:	01863c03          	ld	s8,24(a2)
    e883179a:	1f6c0063          	beq	s8,s6,e883197a <FoundDomain+0x21c>
    SearchListElem *slElem = question->QuestionContext;
    e883179e:	3505b983          	ld	s3,848(a1)

    if      (question == &slElem->BrowseQ) name = mDNS_DomainTypeNames[mDNS_DomainTypeBrowse];
    e88317a2:	11898793          	addi	a5,s3,280
    e88317a6:	06f59f63          	bne	a1,a5,e8831824 <FoundDomain+0xc6>
    e88317aa:	00078797          	auipc	a5,0x78
    e88317ae:	20678793          	addi	a5,a5,518 # e88a99b0 <mDNS_DomainTypeNames>
    e88317b2:	0007ba03          	ld	s4,0(a5)
    else if (question == &slElem->AutomaticBrowseQ) name = mDNS_DomainTypeNames[mDNS_DomainTypeBrowseAutomatic];
    else if (question == &slElem->RegisterQ) name = mDNS_DomainTypeNames[mDNS_DomainTypeRegistration];
    else if (question == &slElem->DefRegisterQ) name = mDNS_DomainTypeNames[mDNS_DomainTypeRegistrationDefault];
    else { LogMsg("FoundDomain - unknown question"); return; }

    LogInfo("FoundDomain: %p %s %s Q %##s A %s", answer->InterfaceID, AddRecord ? "Add" : "Rmv", name, question->qname.c, RRDisplayString(m, answer));
    e88317b6:	000a3a97          	auipc	s5,0xa3
    e88317ba:	2bea8a93          	addi	s5,s5,702 # e88d4a74 <mDNS_LoggingEnabled>
    e88317be:	000aa783          	lw	a5,0(s5)
    e88317c2:	8bb6                	mv	s7,a3
    e88317c4:	8432                	mv	s0,a2
    e88317c6:	84ae                	mv	s1,a1
    e88317c8:	892a                	mv	s2,a0
    e88317ca:	c3a1                	beqz	a5,e883180a <FoundDomain+0xac>
    e88317cc:	00073697          	auipc	a3,0x73
    e88317d0:	9e468693          	addi	a3,a3,-1564 # e88a41b0 <end.8789+0xb08>
    e88317d4:	000b9663          	bnez	s7,e88317e0 <FoundDomain+0x82>
    e88317d8:	00073697          	auipc	a3,0x73
    e88317dc:	9e068693          	addi	a3,a3,-1568 # e88a41b8 <end.8789+0xb10>
    e88317e0:	740c                	ld	a1,40(s0)
    e88317e2:	03b90613          	addi	a2,s2,59
    e88317e6:	8522                	mv	a0,s0
    e88317e8:	0591                	addi	a1,a1,4
    e88317ea:	ec36                	sd	a3,24(sp)
    e88317ec:	a28e50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88317f0:	882a                	mv	a6,a0
    e88317f2:	66e2                	ld	a3,24(sp)
    e88317f4:	21448793          	addi	a5,s1,532
    e88317f8:	8752                	mv	a4,s4
    e88317fa:	8662                	mv	a2,s8
    e88317fc:	0007b597          	auipc	a1,0x7b
    e8831800:	d1458593          	addi	a1,a1,-748 # e88ac510 <kOn.10632+0x5c8>
    e8831804:	450d                	li	a0,3
    e8831806:	ca7fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>

    if (AddRecord)
    e883180a:	180b8463          	beqz	s7,e8831992 <FoundDomain+0x234>
    {
        ARListElem *arElem = mDNSPlatformMemAllocate(sizeof(ARListElem));
    e883180e:	41800513          	li	a0,1048
    e8831812:	a51fe0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8831816:	84aa                	mv	s1,a0
        if (!arElem) { LogMsg("ERROR: FoundDomain out of memory"); return; }
    e8831818:	e559                	bnez	a0,e88318a6 <FoundDomain+0x148>
    e883181a:	0007b597          	auipc	a1,0x7b
    e883181e:	d1e58593          	addi	a1,a1,-738 # e88ac538 <kOn.10632+0x5f0>
    e8831822:	a0ad                	j	e883188c <FoundDomain+0x12e>
    else if (question == &slElem->DefBrowseQ) name = mDNS_DomainTypeNames[mDNS_DomainTypeBrowseDefault];
    e8831824:	47098793          	addi	a5,s3,1136
    e8831828:	00f59963          	bne	a1,a5,e883183a <FoundDomain+0xdc>
    e883182c:	00078797          	auipc	a5,0x78
    e8831830:	18478793          	addi	a5,a5,388 # e88a99b0 <mDNS_DomainTypeNames>
    e8831834:	0087ba03          	ld	s4,8(a5)
    e8831838:	bfbd                	j	e88317b6 <FoundDomain+0x58>
    else if (question == &slElem->AutomaticBrowseQ) name = mDNS_DomainTypeNames[mDNS_DomainTypeBrowseAutomatic];
    e883183a:	7c898793          	addi	a5,s3,1992
    e883183e:	00f59963          	bne	a1,a5,e8831850 <FoundDomain+0xf2>
    e8831842:	00078797          	auipc	a5,0x78
    e8831846:	16e78793          	addi	a5,a5,366 # e88a99b0 <mDNS_DomainTypeNames>
    e883184a:	0107ba03          	ld	s4,16(a5)
    e883184e:	b7a5                	j	e88317b6 <FoundDomain+0x58>
    else if (question == &slElem->RegisterQ) name = mDNS_DomainTypeNames[mDNS_DomainTypeRegistration];
    e8831850:	6785                	lui	a5,0x1
    e8831852:	b2078713          	addi	a4,a5,-1248 # b20 <memcmp-0xe87ff4e0>
    e8831856:	974e                	add	a4,a4,s3
    e8831858:	00e59963          	bne	a1,a4,e883186a <FoundDomain+0x10c>
    e883185c:	00078797          	auipc	a5,0x78
    e8831860:	15478793          	addi	a5,a5,340 # e88a99b0 <mDNS_DomainTypeNames>
    e8831864:	0187ba03          	ld	s4,24(a5)
    e8831868:	b7b9                	j	e88317b6 <FoundDomain+0x58>
    else if (question == &slElem->DefRegisterQ) name = mDNS_DomainTypeNames[mDNS_DomainTypeRegistrationDefault];
    e883186a:	e7878793          	addi	a5,a5,-392
    e883186e:	97ce                	add	a5,a5,s3
    e8831870:	00f59963          	bne	a1,a5,e8831882 <FoundDomain+0x124>
    e8831874:	00078797          	auipc	a5,0x78
    e8831878:	13c78793          	addi	a5,a5,316 # e88a99b0 <mDNS_DomainTypeNames>
    e883187c:	0207ba03          	ld	s4,32(a5)
    e8831880:	bf1d                	j	e88317b6 <FoundDomain+0x58>
    else { LogMsg("FoundDomain - unknown question"); return; }
    e8831882:	0007b597          	auipc	a1,0x7b
    e8831886:	c6e58593          	addi	a1,a1,-914 # e88ac4f0 <kOn.10632+0x5a8>
    e883188a:	4501                	li	a0,0
            }
            else
                ptr = &(*ptr)->next;
        }
    }
}
    e883188c:	7406                	ld	s0,96(sp)
    e883188e:	70a6                	ld	ra,104(sp)
    e8831890:	64e6                	ld	s1,88(sp)
    e8831892:	6946                	ld	s2,80(sp)
    e8831894:	69a6                	ld	s3,72(sp)
    e8831896:	6a06                	ld	s4,64(sp)
    e8831898:	7ae2                	ld	s5,56(sp)
    e883189a:	7b42                	ld	s6,48(sp)
    e883189c:	7ba2                	ld	s7,40(sp)
    e883189e:	7c02                	ld	s8,32(sp)
    e88318a0:	6165                	addi	sp,sp,112
        if (!arElem) { LogMsg("ERROR: FoundDomain out of memory"); return; }
    e88318a2:	c0bfd06f          	j	e882f4ac <LogMsgWithLevel>
        mDNS_SetupResourceRecord(&arElem->ar, mDNSNULL, mDNSInterface_LocalOnly, kDNSType_PTR, 7200, kDNSRecordTypeShared, AuthRecordLocalOnly, FreeARElemCallback, arElem);
    e88318a6:	00850b93          	addi	s7,a0,8
    e88318aa:	6709                	lui	a4,0x2
    e88318ac:	c2070713          	addi	a4,a4,-992 # 1c20 <memcmp-0xe87fe3e0>
    e88318b0:	865a                	mv	a2,s6
    e88318b2:	fffff897          	auipc	a7,0xfffff
    e88318b6:	3ba88893          	addi	a7,a7,954 # e8830c6c <FreeARElemCallback>
    e88318ba:	4811                	li	a6,4
    e88318bc:	46b1                	li	a3,12
    e88318be:	e02a                	sd	a0,0(sp)
    e88318c0:	47a1                	li	a5,8
    e88318c2:	4581                	li	a1,0
    e88318c4:	855e                	mv	a0,s7
    e88318c6:	d04e20ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
        MakeDomainNameFromDNSNameString2(&arElem->ar.namestorage, name);
    e88318ca:	20848793          	addi	a5,s1,520
    e88318ce:	85d2                	mv	a1,s4
    e88318d0:	853e                	mv	a0,a5
    e88318d2:	8a3e                	mv	s4,a5
    e88318d4:	bfde10ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
        AppendDNSNameString            (&arElem->ar.namestorage, "local");
    e88318d8:	00079597          	auipc	a1,0x79
    e88318dc:	28858593          	addi	a1,a1,648 # e88aab60 <mDNS_DomainTypeNames+0x11b0>
    e88318e0:	8552                	mv	a0,s4
    e88318e2:	9f7e10ef          	jal	ra,e88132d8 <AppendDNSNameString>
        AssignDomainName(&arElem->ar.resrec.rdata->u.name, &answer->rdata->u.name);
    e88318e6:	7408                	ld	a0,40(s0)
    e88318e8:	10450593          	addi	a1,a0,260
    e88318ec:	0511                	addi	a0,a0,4
    e88318ee:	85fe10ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88318f2:	0005061b          	sext.w	a2,a0
    e88318f6:	10000713          	li	a4,256
    e88318fa:	7c88                	ld	a0,56(s1)
    e88318fc:	06c76563          	bltu	a4,a2,e8831966 <FoundDomain+0x208>
    e8831900:	740c                	ld	a1,40(s0)
    e8831902:	0511                	addi	a0,a0,4
    e8831904:	0591                	addi	a1,a1,4
    e8831906:	99afe0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        LogInfo("FoundDomain: Registering %s", ARDisplayString(m, &arElem->ar));
    e883190a:	000aa783          	lw	a5,0(s5)
    e883190e:	c38d                	beqz	a5,e8831930 <FoundDomain+0x1d2>
    e8831910:	7c8c                	ld	a1,56(s1)
    e8831912:	03b90613          	addi	a2,s2,59
    e8831916:	01048513          	addi	a0,s1,16
    e883191a:	0591                	addi	a1,a1,4
    e883191c:	8f8e50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8831920:	862a                	mv	a2,a0
    e8831922:	0007b597          	auipc	a1,0x7b
    e8831926:	c3e58593          	addi	a1,a1,-962 # e88ac560 <kOn.10632+0x618>
    e883192a:	450d                	li	a0,3
    e883192c:	b81fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        err = mDNS_Register(m, &arElem->ar);
    e8831930:	85de                	mv	a1,s7
    e8831932:	854a                	mv	a0,s2
    e8831934:	c6df20ef          	jal	ra,e88245a0 <mDNS_Register>
    e8831938:	862a                	mv	a2,a0
        if (err) { LogMsg("ERROR: FoundDomain - mDNS_Register returned %d", err); mDNSPlatformMemFree(arElem); return; }
    e883193a:	c90d                	beqz	a0,e883196c <FoundDomain+0x20e>
    e883193c:	4501                	li	a0,0
    e883193e:	0007b597          	auipc	a1,0x7b
    e8831942:	c4258593          	addi	a1,a1,-958 # e88ac580 <kOn.10632+0x638>
    e8831946:	b67fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e883194a:	7406                	ld	s0,96(sp)
    e883194c:	70a6                	ld	ra,104(sp)
    e883194e:	6946                	ld	s2,80(sp)
    e8831950:	69a6                	ld	s3,72(sp)
    e8831952:	6a06                	ld	s4,64(sp)
    e8831954:	7ae2                	ld	s5,56(sp)
    e8831956:	7b42                	ld	s6,48(sp)
    e8831958:	7ba2                	ld	s7,40(sp)
    e883195a:	7c02                	ld	s8,32(sp)
        if (err) { LogMsg("ERROR: FoundDomain - mDNS_Register returned %d", err); mDNSPlatformMemFree(arElem); return; }
    e883195c:	8526                	mv	a0,s1
}
    e883195e:	64e6                	ld	s1,88(sp)
    e8831960:	6165                	addi	sp,sp,112
        if (err) { LogMsg("ERROR: FoundDomain - mDNS_Register returned %d", err); mDNSPlatformMemFree(arElem); return; }
    e8831962:	921fe06f          	j	e8830282 <mDNSPlatformMemFree>
        AssignDomainName(&arElem->ar.resrec.rdata->u.name, &answer->rdata->u.name);
    e8831966:	00050223          	sb	zero,4(a0)
    e883196a:	b745                	j	e883190a <FoundDomain+0x1ac>
        arElem->next = slElem->AuthRecs;
    e883196c:	6785                	lui	a5,0x1
    e883196e:	99be                	add	s3,s3,a5
    e8831970:	1d89b783          	ld	a5,472(s3)
    e8831974:	e09c                	sd	a5,0(s1)
        slElem->AuthRecs = arElem;
    e8831976:	1c99bc23          	sd	s1,472(s3)
}
    e883197a:	70a6                	ld	ra,104(sp)
    e883197c:	7406                	ld	s0,96(sp)
    e883197e:	64e6                	ld	s1,88(sp)
    e8831980:	6946                	ld	s2,80(sp)
    e8831982:	69a6                	ld	s3,72(sp)
    e8831984:	6a06                	ld	s4,64(sp)
    e8831986:	7ae2                	ld	s5,56(sp)
    e8831988:	7b42                	ld	s6,48(sp)
    e883198a:	7ba2                	ld	s7,40(sp)
    e883198c:	7c02                	ld	s8,32(sp)
    e883198e:	6165                	addi	sp,sp,112
    e8831990:	8082                	ret
        ARListElem **ptr = &slElem->AuthRecs;
    e8831992:	6485                	lui	s1,0x1
    e8831994:	1d848493          	addi	s1,s1,472 # 11d8 <memcmp-0xe87fee28>
    e8831998:	94ce                	add	s1,s1,s3
                if (err) LogMsg("ERROR: FoundDomain - mDNS_Deregister returned %d", err);
    e883199a:	0007ba17          	auipc	s4,0x7b
    e883199e:	c36a0a13          	addi	s4,s4,-970 # e88ac5d0 <kOn.10632+0x688>
                LogInfo("FoundDomain: Deregistering %s", ARDisplayString(m, &dereg->ar));
    e88319a2:	03b90b13          	addi	s6,s2,59
    e88319a6:	0007bb97          	auipc	s7,0x7b
    e88319aa:	c0ab8b93          	addi	s7,s7,-1014 # e88ac5b0 <kOn.10632+0x668>
        while (*ptr)
    e88319ae:	609c                	ld	a5,0(s1)
    e88319b0:	d7e9                	beqz	a5,e883197a <FoundDomain+0x21c>
            if (SameDomainName(&(*ptr)->ar.resrec.rdata->u.name, &answer->rdata->u.name))
    e88319b2:	740c                	ld	a1,40(s0)
    e88319b4:	7f88                	ld	a0,56(a5)
    e88319b6:	0591                	addi	a1,a1,4
    e88319b8:	0511                	addi	a0,a0,4
    e88319ba:	e90e10ef          	jal	ra,e881304a <SameDomainName>
    e88319be:	0004b983          	ld	s3,0(s1)
    e88319c2:	c121                	beqz	a0,e8831a02 <FoundDomain+0x2a4>
                *ptr = (*ptr)->next;
    e88319c4:	0009b783          	ld	a5,0(s3)
    e88319c8:	e09c                	sd	a5,0(s1)
                LogInfo("FoundDomain: Deregistering %s", ARDisplayString(m, &dereg->ar));
    e88319ca:	000aa783          	lw	a5,0(s5)
    e88319ce:	cf91                	beqz	a5,e88319ea <FoundDomain+0x28c>
    e88319d0:	0389b583          	ld	a1,56(s3)
    e88319d4:	865a                	mv	a2,s6
    e88319d6:	01098513          	addi	a0,s3,16
    e88319da:	0591                	addi	a1,a1,4
    e88319dc:	838e50ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88319e0:	862a                	mv	a2,a0
    e88319e2:	85de                	mv	a1,s7
    e88319e4:	450d                	li	a0,3
    e88319e6:	ac7fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                err = mDNS_Deregister(m, &dereg->ar);
    e88319ea:	00898593          	addi	a1,s3,8
    e88319ee:	854a                	mv	a0,s2
    e88319f0:	bedf20ef          	jal	ra,e88245dc <mDNS_Deregister>
    e88319f4:	862a                	mv	a2,a0
                if (err) LogMsg("ERROR: FoundDomain - mDNS_Deregister returned %d", err);
    e88319f6:	dd45                	beqz	a0,e88319ae <FoundDomain+0x250>
    e88319f8:	85d2                	mv	a1,s4
    e88319fa:	4501                	li	a0,0
    e88319fc:	ab1fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8831a00:	b77d                	j	e88319ae <FoundDomain+0x250>
                ptr = &(*ptr)->next;
    e8831a02:	84ce                	mv	s1,s3
    e8831a04:	b76d                	j	e88319ae <FoundDomain+0x250>
    e8831a06:	8082                	ret

00000000e8831a08 <uDNS_DeleteWABQueries>:

// This should probably move to the UDS daemon -- the concept of legacy clients and automatic registration / automatic browsing
// is really a UDS API issue, not something intrinsic to uDNS

mDNSlocal void uDNS_DeleteWABQueries(mDNS *const m, SearchListElem *ptr, int delete)
{
    e8831a08:	db010113          	addi	sp,sp,-592
    e8831a0c:	24813023          	sd	s0,576(sp)
    e8831a10:	23413023          	sd	s4,544(sp)
    e8831a14:	24113423          	sd	ra,584(sp)
    e8831a18:	22913c23          	sd	s1,568(sp)
    e8831a1c:	23213823          	sd	s2,560(sp)
    e8831a20:	23313423          	sd	s3,552(sp)
    e8831a24:	21513c23          	sd	s5,536(sp)
    e8831a28:	21613823          	sd	s6,528(sp)
    e8831a2c:	21713423          	sd	s7,520(sp)
    e8831a30:	21813023          	sd	s8,512(sp)
    ARListElem **arList = &ptr->AuthRecs;
    domainname namestorage1, namestorage2;
    mStatus err;

    // "delete" parameter indicates the type of query.
    switch (delete)
    e8831a34:	4789                	li	a5,2
{
    e8831a36:	8a2a                	mv	s4,a0
    e8831a38:	842e                	mv	s0,a1
    switch (delete)
    e8831a3a:	06f60263          	beq	a2,a5,e8831a9e <uDNS_DeleteWABQueries+0x96>
    e8831a3e:	4791                	li	a5,4
    e8831a40:	0cf60363          	beq	a2,a5,e8831b06 <uDNS_DeleteWABQueries+0xfe>
    e8831a44:	4785                	li	a5,1
    e8831a46:	0ef61563          	bne	a2,a5,e8831b30 <uDNS_DeleteWABQueries+0x128>
    {
    case UDNS_WAB_BROWSE_QUERY:
        mDNS_StopGetDomains(m, &ptr->BrowseQ);
    e8831a4a:	11858593          	addi	a1,a1,280
    e8831a4e:	b17f20ef          	jal	ra,e8824564 <mDNS_StopQuery>
        mDNS_StopGetDomains(m, &ptr->DefBrowseQ);
    e8831a52:	47040593          	addi	a1,s0,1136
    e8831a56:	8552                	mv	a0,s4
    e8831a58:	b0df20ef          	jal	ra,e8824564 <mDNS_StopQuery>
        name1 = mDNS_DomainTypeNames[mDNS_DomainTypeBrowse];
    e8831a5c:	00078797          	auipc	a5,0x78
    e8831a60:	f5478793          	addi	a5,a5,-172 # e88a99b0 <mDNS_DomainTypeNames>
        name2 = mDNS_DomainTypeNames[mDNS_DomainTypeBrowseDefault];
    e8831a64:	f937c90b          	ldd	s2,s3,(a5),0,4
    // When we get the results to the domain enumeration queries, we add a LocalOnly
    // entry. For example, if we issue a domain enumeration query for b._dns-sd._udp.xxxx.com,
    // and when we get a response, we add a LocalOnly entry b._dns-sd._udp.local whose RDATA
    // points to what we got in the response. Locate the appropriate LocalOnly entries and delete
    // them.
    if (name1)
    e8831a68:	00090d63          	beqz	s2,e8831a82 <uDNS_DeleteWABQueries+0x7a>
    {
        MakeDomainNameFromDNSNameString2(&namestorage1, name1);
    e8831a6c:	85ca                	mv	a1,s2
    e8831a6e:	850a                	mv	a0,sp
    e8831a70:	a61e10ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
        AppendDNSNameString(&namestorage1, "local");
    e8831a74:	00079597          	auipc	a1,0x79
    e8831a78:	0ec58593          	addi	a1,a1,236 # e88aab60 <mDNS_DomainTypeNames+0x11b0>
    e8831a7c:	850a                	mv	a0,sp
    e8831a7e:	85be10ef          	jal	ra,e88132d8 <AppendDNSNameString>
    }
    if (name2)
    e8831a82:	02098c63          	beqz	s3,e8831aba <uDNS_DeleteWABQueries+0xb2>
    {
        MakeDomainNameFromDNSNameString2(&namestorage2, name2);
    e8831a86:	85ce                	mv	a1,s3
    e8831a88:	0208                	addi	a0,sp,256
    e8831a8a:	a47e10ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
        AppendDNSNameString(&namestorage2, "local");
    e8831a8e:	00079597          	auipc	a1,0x79
    e8831a92:	0d258593          	addi	a1,a1,210 # e88aab60 <mDNS_DomainTypeNames+0x11b0>
    e8831a96:	0208                	addi	a0,sp,256
    e8831a98:	841e10ef          	jal	ra,e88132d8 <AppendDNSNameString>
    e8831a9c:	a839                	j	e8831aba <uDNS_DeleteWABQueries+0xb2>
        mDNS_StopGetDomains(m, &ptr->AutomaticBrowseQ);
    e8831a9e:	7c858593          	addi	a1,a1,1992
    e8831aa2:	ac3f20ef          	jal	ra,e8824564 <mDNS_StopQuery>
    const char *name2 = mDNSNULL;
    e8831aa6:	4981                	li	s3,0
        name1 = mDNS_DomainTypeNames[mDNS_DomainTypeBrowseAutomatic];
    e8831aa8:	00078797          	auipc	a5,0x78
    e8831aac:	f0878793          	addi	a5,a5,-248 # e88a99b0 <mDNS_DomainTypeNames>
    e8831ab0:	0107b903          	ld	s2,16(a5)
    if (name1)
    e8831ab4:	fa091ce3          	bnez	s2,e8831a6c <uDNS_DeleteWABQueries+0x64>
    const char *name2 = mDNSNULL;
    e8831ab8:	89ca                	mv	s3,s2
    ARListElem **arList = &ptr->AuthRecs;
    e8831aba:	6485                	lui	s1,0x1
    e8831abc:	1d848493          	addi	s1,s1,472 # 11d8 <memcmp-0xe87fee28>
    e8831ac0:	94a2                	add	s1,s1,s0
    e8831ac2:	000a3a97          	auipc	s5,0xa3
    e8831ac6:	fb2a8a93          	addi	s5,s5,-78 # e88d4a74 <mDNS_LoggingEnabled>
            (name2 && SameDomainName(&dereg->ar.namestorage, &namestorage2)))
        {
            LogInfo("uDNS_DeleteWABQueries: Deregistering PTR %##s -> %##s", dereg->ar.resrec.name->c, dereg->ar.resrec.rdata->u.name.c);
            *arList = dereg->next;
            err = mDNS_Deregister(m, &dereg->ar);
            if (err) LogMsg("uDNS_DeleteWABQueries:: ERROR!! mDNS_Deregister returned %d", err);
    e8831aca:	0007eb17          	auipc	s6,0x7e
    e8831ace:	a76b0b13          	addi	s6,s6,-1418 # e88af540 <__func__.9833+0x15a8>
            LogInfo("uDNS_DeleteWABQueries: Deregistering PTR %##s -> %##s", dereg->ar.resrec.name->c, dereg->ar.resrec.rdata->u.name.c);
    e8831ad2:	0007eb97          	auipc	s7,0x7e
    e8831ad6:	a36b8b93          	addi	s7,s7,-1482 # e88af508 <__func__.9833+0x1570>
            // Memory will be freed in the FreeARElemCallback
        }
        else
        {
            LogInfo("uDNS_DeleteWABQueries: Skipping PTR %##s -> %##s", dereg->ar.resrec.name->c, dereg->ar.resrec.rdata->u.name.c);
    e8831ada:	0007ec17          	auipc	s8,0x7e
    e8831ade:	aa6c0c13          	addi	s8,s8,-1370 # e88af580 <__func__.9833+0x15e8>
    while (*arList)
    e8831ae2:	6080                	ld	s0,0(s1)
    e8831ae4:	cc29                	beqz	s0,e8831b3e <uDNS_DeleteWABQueries+0x136>
        if ((name1 && SameDomainName(&dereg->ar.namestorage, &namestorage1)) ||
    e8831ae6:	08091363          	bnez	s2,e8831b6c <uDNS_DeleteWABQueries+0x164>
    e8831aea:	0a099f63          	bnez	s3,e8831ba8 <uDNS_DeleteWABQueries+0x1a0>
            LogInfo("uDNS_DeleteWABQueries: Skipping PTR %##s -> %##s", dereg->ar.resrec.name->c, dereg->ar.resrec.rdata->u.name.c);
    e8831aee:	000aa783          	lw	a5,0(s5)
    e8831af2:	cb81                	beqz	a5,e8831b02 <uDNS_DeleteWABQueries+0xfa>
    e8831af4:	7c14                	ld	a3,56(s0)
    e8831af6:	7810                	ld	a2,48(s0)
    e8831af8:	85e2                	mv	a1,s8
    e8831afa:	0691                	addi	a3,a3,4
    e8831afc:	450d                	li	a0,3
    e8831afe:	9affd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            arList = &(*arList)->next;
    e8831b02:	6084                	ld	s1,0(s1)
    e8831b04:	bff9                	j	e8831ae2 <uDNS_DeleteWABQueries+0xda>
        mDNS_StopGetDomains(m, &ptr->RegisterQ);
    e8831b06:	6485                	lui	s1,0x1
    e8831b08:	b2048593          	addi	a1,s1,-1248 # b20 <memcmp-0xe87ff4e0>
    e8831b0c:	95a2                	add	a1,a1,s0
    e8831b0e:	a57f20ef          	jal	ra,e8824564 <mDNS_StopQuery>
        mDNS_StopGetDomains(m, &ptr->DefRegisterQ);
    e8831b12:	e7848593          	addi	a1,s1,-392
    e8831b16:	95a2                	add	a1,a1,s0
    e8831b18:	8552                	mv	a0,s4
    e8831b1a:	a4bf20ef          	jal	ra,e8824564 <mDNS_StopQuery>
        name1 = mDNS_DomainTypeNames[mDNS_DomainTypeRegistration];
    e8831b1e:	00078797          	auipc	a5,0x78
    e8831b22:	e9278793          	addi	a5,a5,-366 # e88a99b0 <mDNS_DomainTypeNames>
    e8831b26:	0187b903          	ld	s2,24(a5)
        name2 = mDNS_DomainTypeNames[mDNS_DomainTypeRegistrationDefault];
    e8831b2a:	0207b983          	ld	s3,32(a5)
        break;
    e8831b2e:	bf2d                	j	e8831a68 <uDNS_DeleteWABQueries+0x60>
        LogMsg("uDNS_DeleteWABQueries: ERROR!! returning from default");
    e8831b30:	0007e597          	auipc	a1,0x7e
    e8831b34:	9a058593          	addi	a1,a1,-1632 # e88af4d0 <__func__.9833+0x1538>
    e8831b38:	4501                	li	a0,0
    e8831b3a:	973fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        }
    }
}
    e8831b3e:	24813083          	ld	ra,584(sp)
    e8831b42:	24013403          	ld	s0,576(sp)
    e8831b46:	23813483          	ld	s1,568(sp)
    e8831b4a:	23013903          	ld	s2,560(sp)
    e8831b4e:	22813983          	ld	s3,552(sp)
    e8831b52:	22013a03          	ld	s4,544(sp)
    e8831b56:	21813a83          	ld	s5,536(sp)
    e8831b5a:	21013b03          	ld	s6,528(sp)
    e8831b5e:	20813b83          	ld	s7,520(sp)
    e8831b62:	20013c03          	ld	s8,512(sp)
    e8831b66:	25010113          	addi	sp,sp,592
    e8831b6a:	8082                	ret
        if ((name1 && SameDomainName(&dereg->ar.namestorage, &namestorage1)) ||
    e8831b6c:	858a                	mv	a1,sp
    e8831b6e:	20840513          	addi	a0,s0,520
    e8831b72:	cd8e10ef          	jal	ra,e881304a <SameDomainName>
    e8831b76:	d935                	beqz	a0,e8831aea <uDNS_DeleteWABQueries+0xe2>
            LogInfo("uDNS_DeleteWABQueries: Deregistering PTR %##s -> %##s", dereg->ar.resrec.name->c, dereg->ar.resrec.rdata->u.name.c);
    e8831b78:	000aa783          	lw	a5,0(s5)
    e8831b7c:	cb81                	beqz	a5,e8831b8c <uDNS_DeleteWABQueries+0x184>
    e8831b7e:	7c14                	ld	a3,56(s0)
    e8831b80:	7810                	ld	a2,48(s0)
    e8831b82:	85de                	mv	a1,s7
    e8831b84:	0691                	addi	a3,a3,4
    e8831b86:	450d                	li	a0,3
    e8831b88:	925fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            *arList = dereg->next;
    e8831b8c:	85a2                	mv	a1,s0
    e8831b8e:	7885c78b          	ldia	a5,(a1),8,0
            err = mDNS_Deregister(m, &dereg->ar);
    e8831b92:	8552                	mv	a0,s4
            *arList = dereg->next;
    e8831b94:	e09c                	sd	a5,0(s1)
            err = mDNS_Deregister(m, &dereg->ar);
    e8831b96:	a47f20ef          	jal	ra,e88245dc <mDNS_Deregister>
    e8831b9a:	862a                	mv	a2,a0
            if (err) LogMsg("uDNS_DeleteWABQueries:: ERROR!! mDNS_Deregister returned %d", err);
    e8831b9c:	d139                	beqz	a0,e8831ae2 <uDNS_DeleteWABQueries+0xda>
    e8831b9e:	85da                	mv	a1,s6
    e8831ba0:	4501                	li	a0,0
    e8831ba2:	90bfd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8831ba6:	bf35                	j	e8831ae2 <uDNS_DeleteWABQueries+0xda>
            (name2 && SameDomainName(&dereg->ar.namestorage, &namestorage2)))
    e8831ba8:	020c                	addi	a1,sp,256
    e8831baa:	20840513          	addi	a0,s0,520
    e8831bae:	c9ce10ef          	jal	ra,e881304a <SameDomainName>
    e8831bb2:	f179                	bnez	a0,e8831b78 <uDNS_DeleteWABQueries+0x170>
    e8831bb4:	bf2d                	j	e8831aee <uDNS_DeleteWABQueries+0xe6>

00000000e8831bb6 <natTraversalHandlePortMapReplyWithAddress>:
{
    e8831bb6:	7119                	addi	sp,sp,-128
    e8831bb8:	f8a2                	sd	s0,112(sp)
    e8831bba:	f4a6                	sd	s1,104(sp)
    e8831bbc:	f0ca                	sd	s2,96(sp)
    e8831bbe:	e8d2                	sd	s4,80(sp)
    e8831bc0:	e4d6                	sd	s5,72(sp)
    e8831bc2:	e0da                	sd	s6,64(sp)
    e8831bc4:	fc86                	sd	ra,120(sp)
    e8831bc6:	ecce                	sd	s3,88(sp)
    e8831bc8:	fc5e                	sd	s7,56(sp)
    e8831bca:	d43a                	sw	a4,40(sp)
    e8831bcc:	3c07b70b          	extu	a4,a5,15,0
    const char *prot = n->Protocol == 0 ? "Add" : n->Protocol == NATOp_MapUDP ? "UDP" : n->Protocol == NATOp_MapTCP ? "TCP" : "???";
    e8831bd0:	03c5c783          	lbu	a5,60(a1)
{
    e8831bd4:	8b32                	mv	s6,a2
    e8831bd6:	892a                	mv	s2,a0
    e8831bd8:	842e                	mv	s0,a1
    e8831bda:	84b6                	mv	s1,a3
    e8831bdc:	8a3a                	mv	s4,a4
    e8831bde:	8ac6                	mv	s5,a7
    const char *prot = n->Protocol == 0 ? "Add" : n->Protocol == NATOp_MapUDP ? "UDP" : n->Protocol == NATOp_MapTCP ? "TCP" : "???";
    e8831be0:	00072617          	auipc	a2,0x72
    e8831be4:	5d060613          	addi	a2,a2,1488 # e88a41b0 <end.8789+0xb08>
    e8831be8:	c39d                	beqz	a5,e8831c0e <natTraversalHandlePortMapReplyWithAddress+0x58>
    e8831bea:	4685                	li	a3,1
    e8831bec:	00071617          	auipc	a2,0x71
    e8831bf0:	19c60613          	addi	a2,a2,412 # e88a2d88 <mDNSInterface_Unicast+0x8>
    e8831bf4:	00d78d63          	beq	a5,a3,e8831c0e <natTraversalHandlePortMapReplyWithAddress+0x58>
    e8831bf8:	4689                	li	a3,2
    e8831bfa:	00071617          	auipc	a2,0x71
    e8831bfe:	19e60613          	addi	a2,a2,414 # e88a2d98 <mDNSInterface_Unicast+0x18>
    e8831c02:	00d78663          	beq	a5,a3,e8831c0e <natTraversalHandlePortMapReplyWithAddress+0x58>
    e8831c06:	0007d617          	auipc	a2,0x7d
    e8831c0a:	c4260613          	addi	a2,a2,-958 # e88ae848 <__func__.9833+0x8b0>
    n->NewResult = err;
    e8831c0e:	00048b9b          	sext.w	s7,s1
    e8831c12:	01742a23          	sw	s7,20(s0)
    if (err || lease == 0 || mDNSIPPortIsZero(extport))
    e8831c16:	000a3997          	auipc	s3,0xa3
    e8831c1a:	e6a98993          	addi	s3,s3,-406 # e88d4a80 <mDNSPlatformOneSecond>
    e8831c1e:	e481                	bnez	s1,e8831c26 <natTraversalHandlePortMapReplyWithAddress+0x70>
    e8831c20:	00080363          	beqz	a6,e8831c26 <natTraversalHandlePortMapReplyWithAddress+0x70>
    e8831c24:	e759                	bnez	a4,e8831cb2 <natTraversalHandlePortMapReplyWithAddress+0xfc>
        LogInfo("natTraversalHandlePortMapReplyWithAddress: %p Response %s Port %5d External %.4a:%d lease %d error %d",
    e8831c26:	000a3797          	auipc	a5,0xa3
    e8831c2a:	e4e78793          	addi	a5,a5,-434 # e88d4a74 <mDNS_LoggingEnabled>
    e8831c2e:	439c                	lw	a5,0(a5)
    e8831c30:	cf85                	beqz	a5,e8831c68 <natTraversalHandlePortMapReplyWithAddress+0xb2>
    e8831c32:	03e44683          	lbu	a3,62(s0)
    e8831c36:	5c87358b          	extu	a1,a4,23,8
    e8831c3a:	0ff77793          	andi	a5,a4,255
    e8831c3e:	03f44703          	lbu	a4,63(s0)
    e8831c42:	0087979b          	slliw	a5,a5,0x8
    e8831c46:	0086969b          	slliw	a3,a3,0x8
    e8831c4a:	88c2                	mv	a7,a6
    e8831c4c:	8f55                	or	a4,a4,a3
    e8831c4e:	00b7e833          	or	a6,a5,a1
    e8831c52:	86b2                	mv	a3,a2
    e8831c54:	e05e                	sd	s7,0(sp)
    e8831c56:	103c                	addi	a5,sp,40
    e8831c58:	8622                	mv	a2,s0
    e8831c5a:	0007d597          	auipc	a1,0x7d
    e8831c5e:	c4658593          	addi	a1,a1,-954 # e88ae8a0 <__func__.9833+0x908>
    e8831c62:	450d                	li	a0,3
    e8831c64:	849fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        n->retryInterval = NATMAP_MAX_RETRY_INTERVAL;
    e8831c68:	0009a703          	lw	a4,0(s3)
    e8831c6c:	38400793          	li	a5,900
    e8831c70:	02e787bb          	mulw	a5,a5,a4
    e8831c74:	c45c                	sw	a5,12(s0)
        n->retryPortMap = m->timenow + NATMAP_MAX_RETRY_INTERVAL;
    e8831c76:	24092703          	lw	a4,576(s2)
    e8831c7a:	9fb9                	addw	a5,a5,a4
    e8831c7c:	c81c                	sw	a5,16(s0)
        if      (err == NATErr_Refused) n->NewResult = mStatus_NATPortMappingDisabled;
    e8831c7e:	4789                	li	a5,2
    e8831c80:	02fb9063          	bne	s7,a5,e8831ca0 <natTraversalHandlePortMapReplyWithAddress+0xea>
    e8831c84:	77c1                	lui	a5,0xffff0
    e8831c86:	378d                	addiw	a5,a5,-29
        else if (err > NATErr_None && err <= NATErr_Opcode) n->NewResult = mStatus_NATPortMappingUnsupported;
    e8831c88:	c85c                	sw	a5,20(s0)
}
    e8831c8a:	70e6                	ld	ra,120(sp)
    e8831c8c:	7446                	ld	s0,112(sp)
    e8831c8e:	74a6                	ld	s1,104(sp)
    e8831c90:	7906                	ld	s2,96(sp)
    e8831c92:	69e6                	ld	s3,88(sp)
    e8831c94:	6a46                	ld	s4,80(sp)
    e8831c96:	6aa6                	ld	s5,72(sp)
    e8831c98:	6b06                	ld	s6,64(sp)
    e8831c9a:	7be2                	ld	s7,56(sp)
    e8831c9c:	6109                	addi	sp,sp,128
    e8831c9e:	8082                	ret
        else if (err > NATErr_None && err <= NATErr_Opcode) n->NewResult = mStatus_NATPortMappingUnsupported;
    e8831ca0:	34fd                	addiw	s1,s1,-1
    e8831ca2:	3c04b48b          	extu	s1,s1,15,0
    e8831ca6:	4791                	li	a5,4
    e8831ca8:	fe97e1e3          	bltu	a5,s1,e8831c8a <natTraversalHandlePortMapReplyWithAddress+0xd4>
    e8831cac:	77c1                	lui	a5,0xffff0
    e8831cae:	3791                	addiw	a5,a5,-28
    e8831cb0:	bfe1                	j	e8831c88 <natTraversalHandlePortMapReplyWithAddress+0xd2>
        if (lease > 999999999UL / mDNSPlatformOneSecond)
    e8831cb2:	0009a683          	lw	a3,0(s3)
    e8831cb6:	3b9ad7b7          	lui	a5,0x3b9ad
    e8831cba:	9ff78793          	addi	a5,a5,-1537 # 3b9ac9ff <memcmp-0xace53601>
    e8831cbe:	02d7d7b3          	divu	a5,a5,a3
    e8831cc2:	7c08358b          	extu	a1,a6,31,0
    e8831cc6:	00b7f463          	bgeu	a5,a1,e8831cce <natTraversalHandlePortMapReplyWithAddress+0x118>
            lease = 999999999UL / mDNSPlatformOneSecond;
    e8831cca:	0007881b          	sext.w	a6,a5
        n->ExpiryTime = NonZeroTime(m->timenow + lease * mDNSPlatformOneSecond);
    e8831cce:	24092783          	lw	a5,576(s2)
    e8831cd2:	2506978b          	mulaw	a5,a3,a6
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e8831cd6:	e391                	bnez	a5,e8831cda <natTraversalHandlePortMapReplyWithAddress+0x124>
    e8831cd8:	4785                	li	a5,1
    e8831cda:	c41c                	sw	a5,8(s0)
        if (!mDNSSameIPv4Address(n->NewAddress, extaddr) || !mDNSSameIPPort(n->RequestedPort, extport))
    e8831cdc:	5454                	lw	a3,44(s0)
    e8831cde:	57a2                	lw	a5,40(sp)
    e8831ce0:	00f69663          	bne	a3,a5,e8831cec <natTraversalHandlePortMapReplyWithAddress+0x136>
    e8831ce4:	04045783          	lhu	a5,64(s0)
    e8831ce8:	08e78e63          	beq	a5,a4,e8831d84 <natTraversalHandlePortMapReplyWithAddress+0x1ce>
            LogInfo("natTraversalHandlePortMapReplyWithAddress: %p %s Response %s Port %5d External %.4a:%d changed to %.4a:%d lease %d",
    e8831cec:	000a3797          	auipc	a5,0xa3
    e8831cf0:	d8878793          	addi	a5,a5,-632 # e88d4a74 <mDNS_LoggingEnabled>
    e8831cf4:	439c                	lw	a5,0(a5)
    e8831cf6:	c7d9                	beqz	a5,e8831d84 <natTraversalHandlePortMapReplyWithAddress+0x1ce>
    e8831cf8:	01844783          	lbu	a5,24(s0)
    e8831cfc:	0007d697          	auipc	a3,0x7d
    e8831d00:	b7468693          	addi	a3,a3,-1164 # e88ae870 <__func__.9833+0x8d8>
    e8831d04:	cb95                	beqz	a5,e8831d38 <natTraversalHandlePortMapReplyWithAddress+0x182>
    e8831d06:	4585                	li	a1,1
    e8831d08:	0007d697          	auipc	a3,0x7d
    e8831d0c:	b5868693          	addi	a3,a3,-1192 # e88ae860 <__func__.9833+0x8c8>
    e8831d10:	02b78463          	beq	a5,a1,e8831d38 <natTraversalHandlePortMapReplyWithAddress+0x182>
    e8831d14:	4589                	li	a1,2
    e8831d16:	0007d697          	auipc	a3,0x7d
    e8831d1a:	b6a68693          	addi	a3,a3,-1174 # e88ae880 <__func__.9833+0x8e8>
    e8831d1e:	00b78d63          	beq	a5,a1,e8831d38 <natTraversalHandlePortMapReplyWithAddress+0x182>
    e8831d22:	458d                	li	a1,3
    e8831d24:	0007d697          	auipc	a3,0x7d
    e8831d28:	b2c68693          	addi	a3,a3,-1236 # e88ae850 <__func__.9833+0x8b8>
    e8831d2c:	00b78663          	beq	a5,a1,e8831d38 <natTraversalHandlePortMapReplyWithAddress+0x182>
    e8831d30:	0007d697          	auipc	a3,0x7d
    e8831d34:	b6068693          	addi	a3,a3,-1184 # e88ae890 <__func__.9833+0x8f8>
    e8831d38:	e842                	sd	a6,16(sp)
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8831d3a:	0ff77813          	andi	a6,a4,255
    e8831d3e:	0088181b          	slliw	a6,a6,0x8
    e8831d42:	04044583          	lbu	a1,64(s0)
    e8831d46:	5c87370b          	extu	a4,a4,23,8
    e8831d4a:	00e86733          	or	a4,a6,a4
    e8831d4e:	03e44783          	lbu	a5,62(s0)
    e8831d52:	03f44503          	lbu	a0,63(s0)
    e8831d56:	04144883          	lbu	a7,65(s0)
    e8831d5a:	0085959b          	slliw	a1,a1,0x8
    e8831d5e:	e43a                	sd	a4,8(sp)
    e8831d60:	1038                	addi	a4,sp,40
    e8831d62:	0087979b          	slliw	a5,a5,0x8
    e8831d66:	e03a                	sd	a4,0(sp)
    e8831d68:	0115e8b3          	or	a7,a1,a7
    e8831d6c:	8fc9                	or	a5,a5,a0
    e8831d6e:	8732                	mv	a4,a2
    e8831d70:	02c40813          	addi	a6,s0,44
    e8831d74:	8622                	mv	a2,s0
    e8831d76:	0007d597          	auipc	a1,0x7d
    e8831d7a:	b9258593          	addi	a1,a1,-1134 # e88ae908 <__func__.9833+0x970>
    e8831d7e:	450d                	li	a0,3
    e8831d80:	f2cfd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        n->NewAddress    = extaddr;
    e8831d84:	57a2                	lw	a5,40(sp)
        n->InterfaceID   = InterfaceID;
    e8831d86:	03643023          	sd	s6,32(s0)
        n->NewAddress    = extaddr;
    e8831d8a:	d45c                	sw	a5,44(s0)
        if (n->Protocol) n->RequestedPort = extport; // Don't report the (PCP) external port to address-only operations
    e8831d8c:	03c44783          	lbu	a5,60(s0)
    e8831d90:	c399                	beqz	a5,e8831d96 <natTraversalHandlePortMapReplyWithAddress+0x1e0>
    e8831d92:	05441023          	sh	s4,64(s0)
        n->lastSuccessfulProtocol = protocol;
    e8831d96:	01540c23          	sb	s5,24(s0)
    n->retryInterval = (n->ExpiryTime - m->timenow)/2;
    e8831d9a:	441c                	lw	a5,8(s0)
    e8831d9c:	24092703          	lw	a4,576(s2)
    if (n->retryInterval < NATMAP_MIN_RETRY_INTERVAL)   // Min retry interval is 2 seconds
    e8831da0:	0009a683          	lw	a3,0(s3)
    n->retryInterval = (n->ExpiryTime - m->timenow)/2;
    e8831da4:	9f99                	subw	a5,a5,a4
    e8831da6:	4709                	li	a4,2
    e8831da8:	02e7c7bb          	divw	a5,a5,a4
    if (n->retryInterval < NATMAP_MIN_RETRY_INTERVAL)   // Min retry interval is 2 seconds
    e8831dac:	0016961b          	slliw	a2,a3,0x1
    e8831db0:	86b2                	mv	a3,a2
    n->retryInterval = (n->ExpiryTime - m->timenow)/2;
    e8831db2:	873e                	mv	a4,a5
        n->retryInterval = NATMAP_MIN_RETRY_INTERVAL;
    e8831db4:	00c7a7b3          	slt	a5,a5,a2
    e8831db8:	40f7168b          	mveqz	a3,a4,a5
    e8831dbc:	c454                	sw	a3,12(s0)
    n->retryPortMap = m->timenow + n->retryInterval;
    e8831dbe:	24092703          	lw	a4,576(s2)
    e8831dc2:	00d707bb          	addw	a5,a4,a3
    e8831dc6:	c81c                	sw	a5,16(s0)
        m->NextScheduledNATOp = m->timenow;     // May need to invoke client callback immediately
    e8831dc8:	24092783          	lw	a5,576(s2)
    e8831dcc:	26f92223          	sw	a5,612(s2)
}
    e8831dd0:	bd6d                	j	e8831c8a <natTraversalHandlePortMapReplyWithAddress+0xd4>

00000000e8831dd2 <GetAuthInfoForName_direct.isra.1>:
mDNSlocal DomainAuthInfo *GetAuthInfoForName_direct(mDNS *m, const domainname *const name)
    e8831dd2:	7179                	addi	sp,sp,-48
    e8831dd4:	ec4a                	sd	s2,24(sp)
            if (SameDomainName(&ptr->domain, n))
    e8831dd6:	6905                	lui	s2,0x1
mDNSlocal DomainAuthInfo *GetAuthInfoForName_direct(mDNS *m, const domainname *const name)
    e8831dd8:	e826                	sd	s1,16(sp)
    e8831dda:	f04e                	sd	s3,32(sp)
    e8831ddc:	f406                	sd	ra,40(sp)
    e8831dde:	e422                	sd	s0,8(sp)
    e8831de0:	89aa                	mv	s3,a0
    e8831de2:	84ae                	mv	s1,a1
            if (SameDomainName(&ptr->domain, n))
    e8831de4:	47490913          	addi	s2,s2,1140 # 1474 <memcmp-0xe87feb8c>
    while (n->c[0])
    e8831de8:	0004c783          	lbu	a5,0(s1)
    e8831dec:	eb91                	bnez	a5,e8831e00 <GetAuthInfoForName_direct.isra.1+0x2e>
    return mDNSNULL;
    e8831dee:	4401                	li	s0,0
}
    e8831df0:	8522                	mv	a0,s0
    e8831df2:	70a2                	ld	ra,40(sp)
    e8831df4:	6422                	ld	s0,8(sp)
    e8831df6:	64c2                	ld	s1,16(sp)
    e8831df8:	6962                	ld	s2,24(sp)
    e8831dfa:	7982                	ld	s3,32(sp)
    e8831dfc:	6145                	addi	sp,sp,48
    e8831dfe:	8082                	ret
        for (ptr = m->AuthInfoList; ptr; ptr = ptr->next)
    e8831e00:	0009b403          	ld	s0,0(s3)
    e8831e04:	e411                	bnez	s0,e8831e10 <GetAuthInfoForName_direct.isra.1+0x3e>
        n = (const domainname *)(n->c + 1 + n->c[0]);
    e8831e06:	0004c783          	lbu	a5,0(s1)
    e8831e0a:	0785                	addi	a5,a5,1
    e8831e0c:	94be                	add	s1,s1,a5
    e8831e0e:	bfe9                	j	e8831de8 <GetAuthInfoForName_direct.isra.1+0x16>
            if (SameDomainName(&ptr->domain, n))
    e8831e10:	85a6                	mv	a1,s1
    e8831e12:	01240533          	add	a0,s0,s2
    e8831e16:	a34e10ef          	jal	ra,e881304a <SameDomainName>
    e8831e1a:	f979                	bnez	a0,e8831df0 <GetAuthInfoForName_direct.isra.1+0x1e>
        for (ptr = m->AuthInfoList; ptr; ptr = ptr->next)
    e8831e1c:	6000                	ld	s0,0(s0)
    e8831e1e:	b7dd                	j	e8831e04 <GetAuthInfoForName_direct.isra.1+0x32>

00000000e8831e20 <SetLLQTimer.isra.3>:
mDNSlocal void SetLLQTimer(mDNS *const m, DNSQuestion *const q, const LLQOptData *const llq)
    e8831e20:	7179                	addi	sp,sp,-48
    mDNSs32 lease = (mDNSs32)llq->llqlease * mDNSPlatformOneSecond;
    e8831e22:	000a3797          	auipc	a5,0xa3
    e8831e26:	c5e78793          	addi	a5,a5,-930 # e88d4a80 <mDNSPlatformOneSecond>
mDNSlocal void SetLLQTimer(mDNS *const m, DNSQuestion *const q, const LLQOptData *const llq)
    e8831e2a:	f026                	sd	s1,32(sp)
    e8831e2c:	f406                	sd	ra,40(sp)
    e8831e2e:	ec22                	sd	s0,24(sp)
    mDNSs32 lease = (mDNSs32)llq->llqlease * mDNSPlatformOneSecond;
    e8831e30:	4380                	lw	s0,0(a5)
mDNSlocal void SetLLQTimer(mDNS *const m, DNSQuestion *const q, const LLQOptData *const llq)
    e8831e32:	84aa                	mv	s1,a0
    q->ReqLease      = llq->llqlease;
    e8831e34:	1ac5ac23          	sw	a2,440(a1)
    mDNSs32 lease = (mDNSs32)llq->llqlease * mDNSPlatformOneSecond;
    e8831e38:	02c4043b          	mulw	s0,s0,a2
    q->LastQTime     = m->timenow;
    e8831e3c:	24052783          	lw	a5,576(a0)
    q->ThisQInterval = lease/2 + mDNSRandom(lease/10);
    e8831e40:	4529                	li	a0,10
    q->expire        = m->timenow + lease;
    e8831e42:	e42e                	sd	a1,8(sp)
    q->LastQTime     = m->timenow;
    e8831e44:	c99c                	sw	a5,16(a1)
    q->ThisQInterval = lease/2 + mDNSRandom(lease/10);
    e8831e46:	02a4453b          	divw	a0,s0,a0
    q->expire        = m->timenow + lease;
    e8831e4a:	9fa1                	addw	a5,a5,s0
    e8831e4c:	1af5ae23          	sw	a5,444(a1)
    q->ThisQInterval = lease/2 + mDNSRandom(lease/10);
    e8831e50:	8b8e10ef          	jal	ra,e8812f08 <mDNSRandom>
    e8831e54:	4789                	li	a5,2
    e8831e56:	02f4443b          	divw	s0,s0,a5
    e8831e5a:	65a2                	ld	a1,8(sp)
    e8831e5c:	9c29                	addw	s0,s0,a0
    e8831e5e:	c9c0                	sw	s0,20(a1)
}
    e8831e60:	6462                	ld	s0,24(sp)
    e8831e62:	70a2                	ld	ra,40(sp)
    SetNextQueryTime(m, q);
    e8831e64:	8526                	mv	a0,s1
}
    e8831e66:	7482                	ld	s1,32(sp)
    e8831e68:	6145                	addi	sp,sp,48
    SetNextQueryTime(m, q);
    e8831e6a:	c02ec06f          	j	e881e26c <SetNextQueryTime>

00000000e8831e6e <uDNS_SendNATMsg>:
{
    e8831e6e:	7159                	addi	sp,sp,-112
    e8831e70:	f486                	sd	ra,104(sp)
    e8831e72:	f0a2                	sd	s0,96(sp)
    e8831e74:	eca6                	sd	s1,88(sp)
    e8831e76:	e8ca                	sd	s2,80(sp)
    if (!info)
    e8831e78:	e18d                	bnez	a1,e8831e9a <uDNS_SendNATMsg+0x2c>
        LogMsg("uDNS_SendNATMsg called unexpectedly with NULL info");
    e8831e7a:	0007e597          	auipc	a1,0x7e
    e8831e7e:	21658593          	addi	a1,a1,534 # e88b0090 <__func__.9833+0x20f8>
    e8831e82:	4501                	li	a0,0
    e8831e84:	e28fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mStatus_BadParamErr;
    e8831e88:	77c1                	lui	a5,0xffff0
    e8831e8a:	17f1                	addi	a5,a5,-4
}
    e8831e8c:	70a6                	ld	ra,104(sp)
    e8831e8e:	7406                	ld	s0,96(sp)
    e8831e90:	64e6                	ld	s1,88(sp)
    e8831e92:	6946                	ld	s2,80(sp)
    e8831e94:	853e                	mv	a0,a5
    e8831e96:	6165                	addi	sp,sp,112
    e8831e98:	8082                	ret
    if (mDNSv4AddrIsRFC1918(&m->Router.ip.v4))
    e8831e9a:	690d                	lui	s2,0x3
    e8831e9c:	84aa                	mv	s1,a0
    e8831e9e:	21490513          	addi	a0,s2,532 # 3214 <memcmp-0xe87fcdec>
    e8831ea2:	9526                	add	a0,a0,s1
    e8831ea4:	842e                	mv	s0,a1
    e8831ea6:	e432                	sd	a2,8(sp)
    e8831ea8:	f53e00ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    mStatus err = mStatus_NoError;
    e8831eac:	4781                	li	a5,0
    if (mDNSv4AddrIsRFC1918(&m->Router.ip.v4))
    e8831eae:	dd79                	beqz	a0,e8831e8c <uDNS_SendNATMsg+0x1e>
        if (!usePCP)
    e8831eb0:	6622                	ld	a2,8(sp)
    e8831eb2:	e251                	bnez	a2,e8831f36 <uDNS_SendNATMsg+0xc8>
            if (!info->sentNATPMP)
    e8831eb4:	01944703          	lbu	a4,25(s0)
    e8831eb8:	fb71                	bnez	a4,e8831e8c <uDNS_SendNATMsg+0x1e>
                if (info->Protocol)
    e8831eba:	03c44703          	lbu	a4,60(s0)
    e8831ebe:	c33d                	beqz	a4,e8831f24 <uDNS_SendNATMsg+0xb6>
                    NATPortReq.vers    = NATMAP_VERS;
    e8831ec0:	000b2797          	auipc	a5,0xb2
    e8831ec4:	c8078823          	sb	zero,-880(a5) # e88e3b50 <NATPortReq.8956>
    e8831ec8:	000b2597          	auipc	a1,0xb2
    e8831ecc:	c8858593          	addi	a1,a1,-888 # e88e3b50 <NATPortReq.8956>
                    NATPortReq.unused  = zeroID;
    e8831ed0:	00071797          	auipc	a5,0x71
    e8831ed4:	6d078793          	addi	a5,a5,1744 # e88a35a0 <zeroID>
    e8831ed8:	0007d783          	lhu	a5,0(a5)
                    NATPortReq.opcode  = info->Protocol;
    e8831edc:	00e580a3          	sb	a4,1(a1)
                    err = mDNSPlatformSendUDP(m, (mDNSu8 *)&NATPortReq, end, 0, mDNSNULL, &m->Router, NATPMPPort, mDNSfalse);
    e8831ee0:	00070717          	auipc	a4,0x70
    e8831ee4:	68870713          	addi	a4,a4,1672 # e88a2568 <NATPMPPort>
                    NATPortReq.unused  = zeroID;
    e8831ee8:	00f59123          	sh	a5,2(a1)
                    NATPortReq.intport = info->IntPort;
    e8831eec:	03e45783          	lhu	a5,62(s0)
                    err = mDNSPlatformSendUDP(m, (mDNSu8 *)&NATPortReq, end, 0, mDNSNULL, &m->Router, NATPMPPort, mDNSfalse);
    e8831ef0:	00075803          	lhu	a6,0(a4)
    e8831ef4:	4881                	li	a7,0
                    NATPortReq.intport = info->IntPort;
    e8831ef6:	00f59223          	sh	a5,4(a1)
                    NATPortReq.extport = info->RequestedPort;
    e8831efa:	04045783          	lhu	a5,64(s0)
                    err = mDNSPlatformSendUDP(m, (mDNSu8 *)&NATPortReq, end, 0, mDNSNULL, &m->Router, NATPMPPort, mDNSfalse);
    e8831efe:	4701                	li	a4,0
    e8831f00:	4681                	li	a3,0
                    NATPortReq.extport = info->RequestedPort;
    e8831f02:	00f59323          	sh	a5,6(a1)
                    p[0] = (mDNSu8)((info->NATLease >> 24) &  0xFF);
    e8831f06:	407c                	lw	a5,68(s0)
                    err = mDNSPlatformSendUDP(m, (mDNSu8 *)&NATPortReq, end, 0, mDNSNULL, &m->Router, NATPMPPort, mDNSfalse);
    e8831f08:	000b2617          	auipc	a2,0xb2
    e8831f0c:	c5460613          	addi	a2,a2,-940 # e88e3b5c <NumUnicastDNSServers>
    e8831f10:	8526                	mv	a0,s1
    e8831f12:	9007978b          	revw	a5,a5
                    p[0] = (mDNSu8)((info->NATLease >> 24) &  0xFF);
    e8831f16:	c59c                	sw	a5,8(a1)
                    err = mDNSPlatformSendUDP(m, (mDNSu8 *)&NATPortReq, end, 0, mDNSNULL, &m->Router, NATPMPPort, mDNSfalse);
    e8831f18:	21090793          	addi	a5,s2,528
    e8831f1c:	97a6                	add	a5,a5,s1
    e8831f1e:	be3fd0ef          	jal	ra,e882fb00 <mDNSPlatformSendUDP>
    e8831f22:	87aa                	mv	a5,a0
                info->NewAddress = m->ExtAddress;
    e8831f24:	6711                	lui	a4,0x4
    e8831f26:	94ba                	add	s1,s1,a4
    e8831f28:	c084a703          	lw	a4,-1016(s1)
    e8831f2c:	d458                	sw	a4,44(s0)
                info->sentNATPMP = mDNStrue;
    e8831f2e:	4705                	li	a4,1
    e8831f30:	00e40ca3          	sb	a4,25(s0)
    e8831f34:	bfa1                	j	e8831e8c <uDNS_SendNATMsg+0x1e>
            req.version = PCP_VERS;
    e8831f36:	10200793          	li	a5,258
    e8831f3a:	00f11823          	sh	a5,16(sp)
            req.reserved = zeroID;
    e8831f3e:	00071797          	auipc	a5,0x71
    e8831f42:	66278793          	addi	a5,a5,1634 # e88a35a0 <zeroID>
    e8831f46:	0007d783          	lhu	a5,0(a5)
            mDNSAddrMapIPv4toIPv6(&m->AdvertisedV4.ip.v4, &req.clientAddr);
    e8831f4a:	22890513          	addi	a0,s2,552
    e8831f4e:	082c                	addi	a1,sp,24
            req.reserved = zeroID;
    e8831f50:	00f11923          	sh	a5,18(sp)
            p[0] = (mDNSu8)((info->NATLease >> 24) &  0xFF);
    e8831f54:	407c                	lw	a5,68(s0)
            mDNSAddrMapIPv4toIPv6(&m->AdvertisedV4.ip.v4, &req.clientAddr);
    e8831f56:	9526                	add	a0,a0,s1
    e8831f58:	9007978b          	revw	a5,a5
            p[0] = (mDNSu8)((info->NATLease >> 24) &  0xFF);
    e8831f5c:	ca3e                	sw	a5,20(sp)
            mDNSAddrMapIPv4toIPv6(&m->AdvertisedV4.ip.v4, &req.clientAddr);
    e8831f5e:	ed7e00ef          	jal	ra,e8812e34 <mDNSAddrMapIPv4toIPv6>
            req.nonce[2] = m->PCPNonce[2];
    e8831f62:	6791                	lui	a5,0x4
    e8831f64:	97a6                	add	a5,a5,s1
    e8831f66:	c147a703          	lw	a4,-1004(a5) # 3c14 <memcmp-0xe87fc3ec>
            req.nonce[0] = m->PCPNonce[0];
    e8831f6a:	c0c7b783          	ld	a5,-1012(a5)
            req.protocol = (info->Protocol == NATOp_MapUDP ? PCPProto_UDP : PCPProto_TCP);
    e8831f6e:	4685                	li	a3,1
            req.nonce[2] = m->PCPNonce[2];
    e8831f70:	d83a                	sw	a4,48(sp)
            req.nonce[0] = m->PCPNonce[0];
    e8831f72:	f43e                	sd	a5,40(sp)
            req.protocol = (info->Protocol == NATOp_MapUDP ? PCPProto_UDP : PCPProto_TCP);
    e8831f74:	03c44783          	lbu	a5,60(s0)
    e8831f78:	4745                	li	a4,17
    e8831f7a:	00d78363          	beq	a5,a3,e8831f80 <uDNS_SendNATMsg+0x112>
    e8831f7e:	4719                	li	a4,6
    e8831f80:	02e10a23          	sb	a4,52(sp)
            req.reservedMapOp[0] = 0;
    e8831f84:	02010aa3          	sb	zero,53(sp)
            req.reservedMapOp[1] = 0;
    e8831f88:	02011b23          	sh	zero,54(sp)
            req.intPort = info->Protocol ? info->IntPort : DiscardPort;
    e8831f8c:	c7a1                	beqz	a5,e8831fd4 <uDNS_SendNATMsg+0x166>
    e8831f8e:	03e45783          	lhu	a5,62(s0)
    e8831f92:	02f11c23          	sh	a5,56(sp)
            req.extPort = info->RequestedPort;
    e8831f96:	04045783          	lhu	a5,64(s0)
            mDNSAddrMapIPv4toIPv6(&info->NewAddress, &req.extAddress);
    e8831f9a:	186c                	addi	a1,sp,60
    e8831f9c:	02c40513          	addi	a0,s0,44
            req.extPort = info->RequestedPort;
    e8831fa0:	02f11d23          	sh	a5,58(sp)
            mDNSAddrMapIPv4toIPv6(&info->NewAddress, &req.extAddress);
    e8831fa4:	e91e00ef          	jal	ra,e8812e34 <mDNSAddrMapIPv4toIPv6>
            err = mDNSPlatformSendUDP(m, start, end, 0, mDNSNULL, &m->Router, NATPMPPort, mDNSfalse);
    e8831fa8:	00070797          	auipc	a5,0x70
    e8831fac:	5c078793          	addi	a5,a5,1472 # e88a2568 <NATPMPPort>
    e8831fb0:	0007d803          	lhu	a6,0(a5)
    e8831fb4:	678d                	lui	a5,0x3
    e8831fb6:	21078793          	addi	a5,a5,528 # 3210 <memcmp-0xe87fcdf0>
    e8831fba:	97a6                	add	a5,a5,s1
    e8831fbc:	4881                	li	a7,0
    e8831fbe:	4701                	li	a4,0
    e8831fc0:	4681                	li	a3,0
    e8831fc2:	00f0                	addi	a2,sp,76
    e8831fc4:	080c                	addi	a1,sp,16
    e8831fc6:	8526                	mv	a0,s1
    e8831fc8:	b39fd0ef          	jal	ra,e882fb00 <mDNSPlatformSendUDP>
    e8831fcc:	87aa                	mv	a5,a0
            info->sentNATPMP = mDNSfalse;
    e8831fce:	00040ca3          	sb	zero,25(s0)
    e8831fd2:	bd6d                	j	e8831e8c <uDNS_SendNATMsg+0x1e>
            req.intPort = info->Protocol ? info->IntPort : DiscardPort;
    e8831fd4:	00070797          	auipc	a5,0x70
    e8831fd8:	03c78793          	addi	a5,a5,60 # e88a2010 <DiscardPort>
    e8831fdc:	0007d783          	lhu	a5,0(a5)
    e8831fe0:	bf4d                	j	e8831f92 <uDNS_SendNATMsg+0x124>

00000000e8831fe2 <GetLLQEventPort>:
{
    e8831fe2:	7179                	addi	sp,sp,-48
    e8831fe4:	f022                	sd	s0,32(sp)
    e8831fe6:	842a                	mv	s0,a0
    mDNSPlatformSourceAddrForDest(&src, dst);
    e8831fe8:	0028                	addi	a0,sp,8
{
    e8831fea:	f406                	sd	ra,40(sp)
    mDNSPlatformSourceAddrForDest(&src, dst);
    e8831fec:	c13e70ef          	jal	ra,e8819bfe <mDNSPlatformSourceAddrForDest>
    return(mDNSv4AddrIsRFC1918(&src.ip.v4) ? mDNSVal16(m->LLQNAT.ExternalPort) : mDNSVal16(MulticastDNSPort));
    e8831ff0:	0068                	addi	a0,sp,12
    e8831ff2:	e09e00ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e8831ff6:	cd11                	beqz	a0,e8832012 <GetLLQEventPort+0x30>
    e8831ff8:	6791                	lui	a5,0x4
    e8831ffa:	97a2                	add	a5,a5,s0
    e8831ffc:	bc87c503          	lbu	a0,-1080(a5) # 3bc8 <memcmp-0xe87fc438>
    e8832000:	bc97c783          	lbu	a5,-1079(a5)
}
    e8832004:	70a2                	ld	ra,40(sp)
    e8832006:	7402                	ld	s0,32(sp)
    e8832008:	0085151b          	slliw	a0,a0,0x8
    e883200c:	8d5d                	or	a0,a0,a5
    e883200e:	6145                	addi	sp,sp,48
    e8832010:	8082                	ret
    e8832012:	00070797          	auipc	a5,0x70
    e8832016:	54678793          	addi	a5,a5,1350 # e88a2558 <MulticastDNSPort>
    e883201a:	0007c503          	lbu	a0,0(a5)
    e883201e:	0017c783          	lbu	a5,1(a5)
    e8832022:	b7cd                	j	e8832004 <GetLLQEventPort+0x22>

00000000e8832024 <UpdateAllServiceRecords>:
{
    e8832024:	7119                	addi	sp,sp,-128
    e8832026:	f8a2                	sd	s0,112(sp)
    e8832028:	f4a6                	sd	s1,104(sp)
    e883202a:	fc86                	sd	ra,120(sp)
    e883202c:	f0ca                	sd	s2,96(sp)
    e883202e:	ecce                	sd	s3,88(sp)
    e8832030:	e8d2                	sd	s4,80(sp)
    e8832032:	e4d6                	sd	s5,72(sp)
    e8832034:	e0da                	sd	s6,64(sp)
    e8832036:	fc5e                	sd	s7,56(sp)
    e8832038:	f862                	sd	s8,48(sp)
    e883203a:	f466                	sd	s9,40(sp)
    e883203c:	f06a                	sd	s10,32(sp)
    e883203e:	ec6e                	sd	s11,24(sp)
    if (rr->resrec.rrtype != kDNSType_SRV) { LogMsg("UpdateAllServiceRecords:ERROR!! ResourceRecord not a service record %s", ARDisplayString(m, rr)); return; }
    e8832040:	00a5d703          	lhu	a4,10(a1)
    e8832044:	02100793          	li	a5,33
{
    e8832048:	84aa                	mv	s1,a0
    e883204a:	842e                	mv	s0,a1
    if (rr->resrec.rrtype != kDNSType_SRV) { LogMsg("UpdateAllServiceRecords:ERROR!! ResourceRecord not a service record %s", ARDisplayString(m, rr)); return; }
    e883204c:	04f70063          	beq	a4,a5,e883208c <UpdateAllServiceRecords+0x68>
    e8832050:	798c                	ld	a1,48(a1)
    e8832052:	03b50613          	addi	a2,a0,59
    e8832056:	00840513          	addi	a0,s0,8
    e883205a:	0591                	addi	a1,a1,4
    e883205c:	9b9e40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8832060:	862a                	mv	a2,a0
    e8832062:	0007c597          	auipc	a1,0x7c
    e8832066:	91e58593          	addi	a1,a1,-1762 # e88ad980 <kOn.10632+0x1a38>
}
    e883206a:	7446                	ld	s0,112(sp)
    e883206c:	70e6                	ld	ra,120(sp)
    e883206e:	74a6                	ld	s1,104(sp)
    e8832070:	7906                	ld	s2,96(sp)
    e8832072:	69e6                	ld	s3,88(sp)
    e8832074:	6a46                	ld	s4,80(sp)
    e8832076:	6aa6                	ld	s5,72(sp)
    e8832078:	6b06                	ld	s6,64(sp)
    e883207a:	7be2                	ld	s7,56(sp)
    e883207c:	7c42                	ld	s8,48(sp)
    e883207e:	7ca2                	ld	s9,40(sp)
    e8832080:	7d02                	ld	s10,32(sp)
    e8832082:	6de2                	ld	s11,24(sp)
    if (reg && rr->state == regState_NoTarget) { LogMsg("UpdateAllServiceRecords:ERROR!! SRV record %s in noTarget state during registration", ARDisplayString(m, rr)); return; }
    e8832084:	4501                	li	a0,0
}
    e8832086:	6109                	addi	sp,sp,128
    if (reg && rr->state == regState_NoTarget) { LogMsg("UpdateAllServiceRecords:ERROR!! SRV record %s in noTarget state during registration", ARDisplayString(m, rr)); return; }
    e8832088:	c24fd06f          	j	e882f4ac <LogMsgWithLevel>
    e883208c:	8a32                	mv	s4,a2
    e883208e:	c605                	beqz	a2,e88320b6 <UpdateAllServiceRecords+0x92>
    e8832090:	14c5c703          	lbu	a4,332(a1)
    e8832094:	47a1                	li	a5,8
    e8832096:	02f71063          	bne	a4,a5,e88320b6 <UpdateAllServiceRecords+0x92>
    e883209a:	798c                	ld	a1,48(a1)
    e883209c:	03b50613          	addi	a2,a0,59
    e88320a0:	00840513          	addi	a0,s0,8
    e88320a4:	0591                	addi	a1,a1,4
    e88320a6:	96fe40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88320aa:	862a                	mv	a2,a0
    e88320ac:	0007c597          	auipc	a1,0x7c
    e88320b0:	91c58593          	addi	a1,a1,-1764 # e88ad9c8 <kOn.10632+0x1a80>
    e88320b4:	bf5d                	j	e883206a <UpdateAllServiceRecords+0x46>
    LogInfo("UpdateAllServiceRecords: ResourceRecord %s", ARDisplayString(m, rr));
    e88320b6:	000a3917          	auipc	s2,0xa3
    e88320ba:	9be90913          	addi	s2,s2,-1602 # e88d4a74 <mDNS_LoggingEnabled>
    e88320be:	00092783          	lw	a5,0(s2)
    e88320c2:	c38d                	beqz	a5,e88320e4 <UpdateAllServiceRecords+0xc0>
    e88320c4:	780c                	ld	a1,48(s0)
    e88320c6:	03b48613          	addi	a2,s1,59
    e88320ca:	00840513          	addi	a0,s0,8
    e88320ce:	0591                	addi	a1,a1,4
    e88320d0:	945e40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88320d4:	862a                	mv	a2,a0
    e88320d6:	0007c597          	auipc	a1,0x7c
    e88320da:	94a58593          	addi	a1,a1,-1718 # e88ada20 <kOn.10632+0x1ad8>
    e88320de:	450d                	li	a0,3
    e88320e0:	bccfd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (r = m->ResourceRecords; r; r=r->next)
    e88320e4:	678d                	lui	a5,0x3
    e88320e6:	97a6                	add	a5,a5,s1
    e88320e8:	1b87bb03          	ld	s6,440(a5) # 31b8 <memcmp-0xe87fce48>
        if (!AuthRecord_uDNS(r)) continue;
    e88320ec:	00071a97          	auipc	s5,0x71
    e88320f0:	c74a8a93          	addi	s5,s5,-908 # e88a2d60 <mDNSInterface_Any>
                if ((r->state == regState_Registered) ||
    e88320f4:	4b89                	li	s7,2
                    LogInfo("UpdateAllServiceRecords: not registering %s, state %d", ARDisplayString(m, r), r->state);
    e88320f6:	03b48993          	addi	s3,s1,59
    e88320fa:	0007cc17          	auipc	s8,0x7c
    e88320fe:	9d6c0c13          	addi	s8,s8,-1578 # e88adad0 <kOn.10632+0x1b88>
                if ((r->state == regState_Registered) ||
    e8832102:	4c85                	li	s9,1
                    LogInfo("UpdateAllServiceRecords: registering %s, state %d", ARDisplayString(m, r), r->state);
    e8832104:	0007cd17          	auipc	s10,0x7c
    e8832108:	a04d0d13          	addi	s10,s10,-1532 # e88adb08 <kOn.10632+0x1bc0>
                r->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e883210c:	000a3d97          	auipc	s11,0xa3
    e8832110:	974d8d93          	addi	s11,s11,-1676 # e88d4a80 <mDNSPlatformOneSecond>
    for (r = m->ResourceRecords; r; r=r->next)
    e8832114:	020b1163          	bnez	s6,e8832136 <UpdateAllServiceRecords+0x112>
}
    e8832118:	70e6                	ld	ra,120(sp)
    e883211a:	7446                	ld	s0,112(sp)
    e883211c:	74a6                	ld	s1,104(sp)
    e883211e:	7906                	ld	s2,96(sp)
    e8832120:	69e6                	ld	s3,88(sp)
    e8832122:	6a46                	ld	s4,80(sp)
    e8832124:	6aa6                	ld	s5,72(sp)
    e8832126:	6b06                	ld	s6,64(sp)
    e8832128:	7be2                	ld	s7,56(sp)
    e883212a:	7c42                	ld	s8,48(sp)
    e883212c:	7ca2                	ld	s9,40(sp)
    e883212e:	7d02                	ld	s10,32(sp)
    e8832130:	6de2                	ld	s11,24(sp)
    e8832132:	6109                	addi	sp,sp,128
    e8832134:	8082                	ret
        if (!AuthRecord_uDNS(r)) continue;
    e8832136:	020b3683          	ld	a3,32(s6)
    e883213a:	000ab703          	ld	a4,0(s5)
    e883213e:	08e69f63          	bne	a3,a4,e88321dc <UpdateAllServiceRecords+0x1b8>
    e8832142:	07ab4703          	lbu	a4,122(s6)
    e8832146:	eb59                	bnez	a4,e88321dc <UpdateAllServiceRecords+0x1b8>
    e8832148:	028b3503          	ld	a0,40(s6)
    e883214c:	f57e00ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8832150:	e551                	bnez	a0,e88321dc <UpdateAllServiceRecords+0x1b8>
        if (r->resrec.rrtype == kDNSType_PTR)
    e8832152:	00ab5683          	lhu	a3,10(s6)
    e8832156:	47b1                	li	a5,12
    e8832158:	08f69563          	bne	a3,a5,e88321e2 <UpdateAllServiceRecords+0x1be>
            srvRR = r->Additional1;
    e883215c:	048b3703          	ld	a4,72(s6)
        if (srvRR && srvRR->resrec.rrtype != kDNSType_SRV)
    e8832160:	cb05                	beqz	a4,e8832190 <UpdateAllServiceRecords+0x16c>
    e8832162:	00a75603          	lhu	a2,10(a4) # 400a <memcmp-0xe87fbff6>
    e8832166:	02100693          	li	a3,33
    e883216a:	02d60363          	beq	a2,a3,e8832190 <UpdateAllServiceRecords+0x16c>
            LogMsg("UpdateAllServiceRecords: ERROR!! Resource record %s wrong, expecting SRV type", ARDisplayString(m, srvRR));
    e883216e:	7b0c                	ld	a1,48(a4)
    e8832170:	00870513          	addi	a0,a4,8
    e8832174:	864e                	mv	a2,s3
    e8832176:	0591                	addi	a1,a1,4
    e8832178:	e43a                	sd	a4,8(sp)
    e883217a:	89be40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883217e:	862a                	mv	a2,a0
    e8832180:	0007c597          	auipc	a1,0x7c
    e8832184:	8d058593          	addi	a1,a1,-1840 # e88ada50 <kOn.10632+0x1b08>
    e8832188:	4501                	li	a0,0
    e883218a:	b22fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e883218e:	6722                	ld	a4,8(sp)
        if (srvRR == rr)
    e8832190:	04e41663          	bne	s0,a4,e88321dc <UpdateAllServiceRecords+0x1b8>
            if (!reg)
    e8832194:	00092703          	lw	a4,0(s2)
    e8832198:	040a1c63          	bnez	s4,e88321f0 <UpdateAllServiceRecords+0x1cc>
                LogInfo("UpdateAllServiceRecords: deregistering %s", ARDisplayString(m, r));
    e883219c:	c30d                	beqz	a4,e88321be <UpdateAllServiceRecords+0x19a>
    e883219e:	030b3583          	ld	a1,48(s6)
    e88321a2:	864e                	mv	a2,s3
    e88321a4:	008b0513          	addi	a0,s6,8
    e88321a8:	0591                	addi	a1,a1,4
    e88321aa:	86be40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88321ae:	862a                	mv	a2,a0
    e88321b0:	0007c597          	auipc	a1,0x7c
    e88321b4:	8f058593          	addi	a1,a1,-1808 # e88adaa0 <kOn.10632+0x1b58>
    e88321b8:	450d                	li	a0,3
    e88321ba:	af2fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                r->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e88321be:	000da683          	lw	a3,0(s11)
                r->SRVChanged = mDNStrue;
    e88321c2:	4705                	li	a4,1
    e88321c4:	1ceb0823          	sb	a4,464(s6)
                r->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e88321c8:	10db2823          	sw	a3,272(s6)
                r->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e88321cc:	2404a703          	lw	a4,576(s1)
    e88321d0:	9f15                	subw	a4,a4,a3
    e88321d2:	10eb2a23          	sw	a4,276(s6)
                r->state = regState_DeregPending;
    e88321d6:	470d                	li	a4,3
    e88321d8:	14eb0623          	sb	a4,332(s6)
    for (r = m->ResourceRecords; r; r=r->next)
    e88321dc:	000b3b03          	ld	s6,0(s6)
    e88321e0:	bf15                	j	e8832114 <UpdateAllServiceRecords+0xf0>
        else if (r->resrec.rrtype == kDNSType_TXT)
    e88321e2:	4641                	li	a2,16
        srvRR = mDNSNULL;
    e88321e4:	4701                	li	a4,0
        else if (r->resrec.rrtype == kDNSType_TXT)
    e88321e6:	fac695e3          	bne	a3,a2,e8832190 <UpdateAllServiceRecords+0x16c>
            srvRR = r->DependentOn;
    e88321ea:	058b3703          	ld	a4,88(s6)
    e88321ee:	bf8d                	j	e8832160 <UpdateAllServiceRecords+0x13c>
                if ((r->state == regState_Registered) ||
    e88321f0:	14cb4683          	lbu	a3,332(s6)
                r->SRVChanged = mDNSfalse;
    e88321f4:	1c0b0823          	sb	zero,464(s6)
                if ((r->state == regState_Registered) ||
    e88321f8:	01768a63          	beq	a3,s7,e883220c <UpdateAllServiceRecords+0x1e8>
    e88321fc:	03969963          	bne	a3,s9,e883222e <UpdateAllServiceRecords+0x20a>
                    (r->state == regState_Pending && r->nta && !mDNSIPv4AddressIsZero(r->nta->Addr.ip.v4)))
    e8832200:	168b3683          	ld	a3,360(s6)
    e8832204:	c68d                	beqz	a3,e883222e <UpdateAllServiceRecords+0x20a>
    e8832206:	3186a683          	lw	a3,792(a3)
    e883220a:	c295                	beqz	a3,e883222e <UpdateAllServiceRecords+0x20a>
                    LogInfo("UpdateAllServiceRecords: not registering %s, state %d", ARDisplayString(m, r), r->state);
    e883220c:	db61                	beqz	a4,e88321dc <UpdateAllServiceRecords+0x1b8>
    e883220e:	030b3583          	ld	a1,48(s6)
    e8832212:	864e                	mv	a2,s3
    e8832214:	008b0513          	addi	a0,s6,8
    e8832218:	0591                	addi	a1,a1,4
    e883221a:	ffae40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883221e:	862a                	mv	a2,a0
    e8832220:	14cb4683          	lbu	a3,332(s6)
    e8832224:	85e2                	mv	a1,s8
    e8832226:	450d                	li	a0,3
    e8832228:	a84fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e883222c:	bf45                	j	e88321dc <UpdateAllServiceRecords+0x1b8>
                    LogInfo("UpdateAllServiceRecords: registering %s, state %d", ARDisplayString(m, r), r->state);
    e883222e:	c305                	beqz	a4,e883224e <UpdateAllServiceRecords+0x22a>
    e8832230:	030b3583          	ld	a1,48(s6)
    e8832234:	864e                	mv	a2,s3
    e8832236:	008b0513          	addi	a0,s6,8
    e883223a:	0591                	addi	a1,a1,4
    e883223c:	fd8e40ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8832240:	862a                	mv	a2,a0
    e8832242:	14cb4683          	lbu	a3,332(s6)
    e8832246:	85ea                	mv	a1,s10
    e8832248:	450d                	li	a0,3
    e883224a:	a62fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    ActivateUnicastRegistration(m, r);
    e883224e:	85da                	mv	a1,s6
    e8832250:	8526                	mv	a0,s1
    e8832252:	e34ef0ef          	jal	ra,e8821886 <ActivateUnicastRegistration>
    e8832256:	b759                	j	e88321dc <UpdateAllServiceRecords+0x1b8>

00000000e8832258 <PenalizeDNSServer>:
{
    e8832258:	7139                	addi	sp,sp,-64
    e883225a:	fd31590b          	sdd	s2,s3,(sp),2,4
    e883225e:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8832262:	fc06                	sd	ra,56(sp)
    e8832264:	f852                	sd	s4,48(sp)
    mDNS_CheckLock(m);
    e8832266:	5958                	lw	a4,52(a0)
    e8832268:	5914                	lw	a3,48(a0)
{
    e883226a:	89aa                	mv	s3,a0
    mDNS_CheckLock(m);
    e883226c:	0017079b          	addiw	a5,a4,1
{
    e8832270:	842e                	mv	s0,a1
    e8832272:	8932                	mv	s2,a2
    DNSServer *orig = q->qDNSServer;
    e8832274:	1685ba03          	ld	s4,360(a1)
    mDNS_CheckLock(m);
    e8832278:	00d78d63          	beq	a5,a3,e8832292 <PenalizeDNSServer+0x3a>
    e883227c:	0007c617          	auipc	a2,0x7c
    e8832280:	b5460613          	addi	a2,a2,-1196 # e88addd0 <__func__.8887>
    e8832284:	00075597          	auipc	a1,0x75
    e8832288:	f0c58593          	addi	a1,a1,-244 # e88a7190 <end.8789+0x3ae8>
    e883228c:	4501                	li	a0,0
    e883228e:	a1efd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    LogInfo("PenalizeDNSServer: Penalizing DNS server %#a question for question %p %##s (%s) SuppressUnusable %d",
    e8832292:	000a2497          	auipc	s1,0xa2
    e8832296:	7e248493          	addi	s1,s1,2018 # e88d4a74 <mDNS_LoggingEnabled>
    e883229a:	409c                	lw	a5,0(s1)
    e883229c:	cb85                	beqz	a5,e88322cc <PenalizeDNSServer+0x74>
    e883229e:	16843603          	ld	a2,360(s0)
    e88322a2:	c211                	beqz	a2,e88322a6 <PenalizeDNSServer+0x4e>
    e88322a4:	0651                	addi	a2,a2,20
    e88322a6:	31445503          	lhu	a0,788(s0)
    e88322aa:	e432                	sd	a2,8(sp)
    e88322ac:	9b5e30ef          	jal	ra,e8815c60 <DNSTypeName>
    e88322b0:	87aa                	mv	a5,a0
    e88322b2:	31c44803          	lbu	a6,796(s0)
    e88322b6:	6622                	ld	a2,8(sp)
    e88322b8:	21440713          	addi	a4,s0,532
    e88322bc:	86a2                	mv	a3,s0
    e88322be:	0007b597          	auipc	a1,0x7b
    e88322c2:	8f258593          	addi	a1,a1,-1806 # e88acbb0 <kOn.10632+0xc68>
    e88322c6:	450d                	li	a0,3
    e88322c8:	9e4fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (mDNSOpaque16IsZero(q->responseFlags))
    e88322cc:	1e445783          	lhu	a5,484(s0)
    e88322d0:	e399                	bnez	a5,e88322d6 <PenalizeDNSServer+0x7e>
        q->responseFlags = responseFlags;
    e88322d2:	1f241223          	sh	s2,484(s0)
    if (!q->qDNSServer)
    e88322d6:	16843783          	ld	a5,360(s0)
    e88322da:	cf85                	beqz	a5,e8832312 <PenalizeDNSServer+0xba>
    if (!StrictUnicastOrdering)
    e88322dc:	000b2717          	auipc	a4,0xb2
    e88322e0:	88c74703          	lbu	a4,-1908(a4) # e88e3b68 <StrictUnicastOrdering>
    e88322e4:	409c                	lw	a5,0(s1)
    e88322e6:	ef61                	bnez	a4,e88323be <PenalizeDNSServer+0x166>
    rcode = (mDNSu8)(responseFlags.b[1] & kDNSFlag1_RC_Mask);
    e88322e8:	3c89390b          	extu	s2,s2,15,8
        LogInfo("PenalizeDNSServer: Strict Unicast Ordering is FALSE");
    e88322ec:	cb81                	beqz	a5,e88322fc <PenalizeDNSServer+0xa4>
    e88322ee:	0007b597          	auipc	a1,0x7b
    e88322f2:	92a58593          	addi	a1,a1,-1750 # e88acc18 <kOn.10632+0xcd0>
    e88322f6:	450d                	li	a0,3
    e88322f8:	9b4fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (q->qtype == kDNSType_PTR)
    e88322fc:	31445603          	lhu	a2,788(s0)
    e8832300:	47b1                	li	a5,12
    e8832302:	4098                	lw	a4,0(s1)
    e8832304:	04f61a63          	bne	a2,a5,e8832358 <PenalizeDNSServer+0x100>
            LogInfo("PenalizeDNSServer: Not Penalizing PTR question");
    e8832308:	0007b597          	auipc	a1,0x7b
    e883230c:	94858593          	addi	a1,a1,-1720 # e88acc50 <kOn.10632+0xd08>
    e8832310:	ef45                	bnez	a4,e88323c8 <PenalizeDNSServer+0x170>
    new = GetServerForQuestion(m, q);
    e8832312:	85a2                	mv	a1,s0
    e8832314:	854e                	mv	a0,s3
    e8832316:	f3bee0ef          	jal	ra,e8821250 <GetServerForQuestion>
    e883231a:	892a                	mv	s2,a0
    if (new == orig)
    e883231c:	0caa1a63          	bne	s4,a0,e88323f0 <PenalizeDNSServer+0x198>
        if (new)
    e8832320:	0a0a0863          	beqz	s4,e88323d0 <PenalizeDNSServer+0x178>
    e8832324:	028a4783          	lbu	a5,40(s4)
    e8832328:	029a4683          	lbu	a3,41(s4)
            LogMsg("PenalizeDNSServer: ERROR!! GetServerForQuestion returned the same server %#a:%d", &new->addr,
    e883232c:	014a0613          	addi	a2,s4,20
    e8832330:	0087979b          	slliw	a5,a5,0x8
    e8832334:	8edd                	or	a3,a3,a5
    e8832336:	0007b597          	auipc	a1,0x7b
    e883233a:	a0a58593          	addi	a1,a1,-1526 # e88acd40 <kOn.10632+0xdf8>
    e883233e:	4501                	li	a0,0
    e8832340:	96cfd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            q->ThisQInterval = 0;   // Inactivate this question so that we dont bombard the network
    e8832344:	00042a23          	sw	zero,20(s0)
}
    e8832348:	70e2                	ld	ra,56(sp)
    e883234a:	fa91440b          	ldd	s0,s1,(sp),1,4
    e883234e:	7a42                	ld	s4,48(sp)
    e8832350:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8832354:	6121                	addi	sp,sp,64
    e8832356:	8082                	ret
    rcode = (mDNSu8)(responseFlags.b[1] & kDNSFlag1_RC_Mask);
    e8832358:	00f97913          	andi	s2,s2,15
        else if ((rcode == kDNSFlag1_RC_FormErr) || (rcode == kDNSFlag1_RC_ServFail) || (rcode == kDNSFlag1_RC_NotImpl) || (rcode == kDNSFlag1_RC_Refused))
    e883235c:	fff9069b          	addiw	a3,s2,-1
    e8832360:	0ff6f693          	andi	a3,a3,255
    e8832364:	4585                	li	a1,1
    e8832366:	00d5f863          	bgeu	a1,a3,e8832376 <PenalizeDNSServer+0x11e>
    e883236a:	ffc9069b          	addiw	a3,s2,-4
    e883236e:	0ff6f693          	andi	a3,a3,255
    e8832372:	00d5ec63          	bltu	a1,a3,e883238a <PenalizeDNSServer+0x132>
            LogInfo("PenalizeDNSServer: Not Penalizing DNS Server since it at least responded with rcode %d", rcode);
    e8832376:	df51                	beqz	a4,e8832312 <PenalizeDNSServer+0xba>
    e8832378:	864a                	mv	a2,s2
    e883237a:	0007b597          	auipc	a1,0x7b
    e883237e:	90658593          	addi	a1,a1,-1786 # e88acc80 <kOn.10632+0xd38>
    e8832382:	450d                	li	a0,3
    e8832384:	928fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8832388:	b769                	j	e8832312 <PenalizeDNSServer+0xba>
            LogInfo("PenalizeDNSServer: Penalizing question type %d", q->qtype);
    e883238a:	cb01                	beqz	a4,e883239a <PenalizeDNSServer+0x142>
    e883238c:	0007b597          	auipc	a1,0x7b
    e8832390:	94c58593          	addi	a1,a1,-1716 # e88accd8 <kOn.10632+0xd90>
    e8832394:	450d                	li	a0,3
    e8832396:	916fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            q->qDNSServer->penaltyTime = NonZeroTime(m->timenow + DNSSERVER_PENALTY_TIME);
    e883239a:	000a2797          	auipc	a5,0xa2
    e883239e:	6e678793          	addi	a5,a5,1766 # e88d4a80 <mDNSPlatformOneSecond>
    e88323a2:	4398                	lw	a4,0(a5)
    e88323a4:	2409a783          	lw	a5,576(s3)
    e88323a8:	03c00693          	li	a3,60
    e88323ac:	24e6978b          	mulaw	a5,a3,a4
    e88323b0:	16843703          	ld	a4,360(s0)
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e88323b4:	e391                	bnez	a5,e88323b8 <PenalizeDNSServer+0x160>
    e88323b6:	4785                	li	a5,1
    e88323b8:	12f72823          	sw	a5,304(a4)
    e88323bc:	bf99                	j	e8832312 <PenalizeDNSServer+0xba>
        LogInfo("PenalizeDNSServer: Strict Unicast Ordering is TRUE");
    e88323be:	dbb1                	beqz	a5,e8832312 <PenalizeDNSServer+0xba>
    e88323c0:	0007b597          	auipc	a1,0x7b
    e88323c4:	94858593          	addi	a1,a1,-1720 # e88acd08 <kOn.10632+0xdc0>
    e88323c8:	450d                	li	a0,3
    e88323ca:	8e2fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88323ce:	b791                	j	e8832312 <PenalizeDNSServer+0xba>
            LogInfo("PenalizeDNSServer: GetServerForQuestion returned the same server NULL");
    e88323d0:	409c                	lw	a5,0(s1)
    e88323d2:	dbbd                	beqz	a5,e8832348 <PenalizeDNSServer+0xf0>
}
    e88323d4:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88323d8:	70e2                	ld	ra,56(sp)
    e88323da:	7a42                	ld	s4,48(sp)
    e88323dc:	fd31490b          	ldd	s2,s3,(sp),2,4
            LogInfo("PenalizeDNSServer: GetServerForQuestion returned the same server NULL");
    e88323e0:	0007b597          	auipc	a1,0x7b
    e88323e4:	9b058593          	addi	a1,a1,-1616 # e88acd90 <kOn.10632+0xe48>
    e88323e8:	450d                	li	a0,3
}
    e88323ea:	6121                	addi	sp,sp,64
            LogInfo("PenalizeDNSServer: GetServerForQuestion returned the same server NULL");
    e88323ec:	8c0fd06f          	j	e882f4ac <LogMsgWithLevel>
        DNSServerChangeForQuestion(m, q, new);
    e88323f0:	862a                	mv	a2,a0
    e88323f2:	85a2                	mv	a1,s0
    e88323f4:	854e                	mv	a0,s3
    e88323f6:	c96fc0ef          	jal	ra,e882e88c <DNSServerChangeForQuestion>
            LogInfo("PenalizeDNSServer: Server for %##s (%s) changed to %#a:%d (%##s)",
    e88323fa:	409c                	lw	a5,0(s1)
        if (new)
    e88323fc:	06090663          	beqz	s2,e8832468 <PenalizeDNSServer+0x210>
            LogInfo("PenalizeDNSServer: Server for %##s (%s) changed to %#a:%d (%##s)",
    e8832400:	cb9d                	beqz	a5,e8832436 <PenalizeDNSServer+0x1de>
    e8832402:	31445503          	lhu	a0,788(s0)
    e8832406:	85be30ef          	jal	ra,e8815c60 <DNSTypeName>
    e883240a:	16843703          	ld	a4,360(s0)
    e883240e:	21440613          	addi	a2,s0,532
    e8832412:	0007b597          	auipc	a1,0x7b
    e8832416:	9c658593          	addi	a1,a1,-1594 # e88acdd8 <kOn.10632+0xe90>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e883241a:	02874783          	lbu	a5,40(a4)
    e883241e:	02974683          	lbu	a3,41(a4)
    e8832422:	03070813          	addi	a6,a4,48
    e8832426:	0087979b          	slliw	a5,a5,0x8
    e883242a:	8fd5                	or	a5,a5,a3
    e883242c:	0751                	addi	a4,a4,20
    e883242e:	86aa                	mv	a3,a0
    e8832430:	450d                	li	a0,3
    e8832432:	87afd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (!q->triedAllServersOnce)
    e8832436:	18245783          	lhu	a5,386(s0)
    e883243a:	e785                	bnez	a5,e8832462 <PenalizeDNSServer+0x20a>
                q->ThisQInterval = InitialQuestionInterval;
    e883243c:	000a2797          	auipc	a5,0xa2
    e8832440:	64478793          	addi	a5,a5,1604 # e88d4a80 <mDNSPlatformOneSecond>
    e8832444:	439c                	lw	a5,0(a5)
    e8832446:	470d                	li	a4,3
                SetNextQueryTime(m, q);
    e8832448:	85a2                	mv	a1,s0
                q->ThisQInterval = InitialQuestionInterval;
    e883244a:	2789                	addiw	a5,a5,2
    e883244c:	02e7c7bb          	divw	a5,a5,a4
                SetNextQueryTime(m, q);
    e8832450:	854e                	mv	a0,s3
                q->ThisQInterval = InitialQuestionInterval;
    e8832452:	c85c                	sw	a5,20(s0)
                q->LastQTime  = m->timenow - q->ThisQInterval;
    e8832454:	2409a703          	lw	a4,576(s3)
    e8832458:	40f707bb          	subw	a5,a4,a5
    e883245c:	c81c                	sw	a5,16(s0)
                SetNextQueryTime(m, q);
    e883245e:	e0feb0ef          	jal	ra,e881e26c <SetNextQueryTime>
        q->unansweredQueries = 0;
    e8832462:	18040223          	sb	zero,388(s0)
}
    e8832466:	b5cd                	j	e8832348 <PenalizeDNSServer+0xf0>
            LogInfo("PenalizeDNSServer: Server for %p, %##s (%s) changed to NULL, Interval %d", q, q->qname.c, DNSTypeName(q->qtype), q->ThisQInterval);
    e8832468:	dfed                	beqz	a5,e8832462 <PenalizeDNSServer+0x20a>
    e883246a:	31445503          	lhu	a0,788(s0)
    e883246e:	ff2e30ef          	jal	ra,e8815c60 <DNSTypeName>
    e8832472:	872a                	mv	a4,a0
    e8832474:	485c                	lw	a5,20(s0)
    e8832476:	21440693          	addi	a3,s0,532
    e883247a:	8622                	mv	a2,s0
    e883247c:	0007b597          	auipc	a1,0x7b
    e8832480:	9a458593          	addi	a1,a1,-1628 # e88ace20 <kOn.10632+0xed8>
    e8832484:	450d                	li	a0,3
    e8832486:	826fd0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e883248a:	bfe1                	j	e8832462 <PenalizeDNSServer+0x20a>

00000000e883248c <GetAuthInfoForName_internal>:
{
    e883248c:	7159                	addi	sp,sp,-112
    e883248e:	eca6                	sd	s1,88(sp)
    e8832490:	e4ce                	sd	s3,72(sp)
    e8832492:	f45e                	sd	s7,40(sp)
    e8832494:	f486                	sd	ra,104(sp)
    e8832496:	f0a2                	sd	s0,96(sp)
    e8832498:	e8ca                	sd	s2,80(sp)
    e883249a:	e0d2                	sd	s4,64(sp)
    e883249c:	fc56                	sd	s5,56(sp)
    e883249e:	f85a                	sd	s6,48(sp)
    e88324a0:	f062                	sd	s8,32(sp)
    e88324a2:	ec66                	sd	s9,24(sp)
    e88324a4:	e86a                	sd	s10,16(sp)
    e88324a6:	e46e                	sd	s11,8(sp)
    mDNS_CheckLock(m);
    e88324a8:	5958                	lw	a4,52(a0)
    e88324aa:	5914                	lw	a3,48(a0)
    DomainAuthInfo **p = &m->AuthInfoList;
    e88324ac:	648d                	lui	s1,0x3
    e88324ae:	25048493          	addi	s1,s1,592 # 3250 <memcmp-0xe87fcdb0>
    mDNS_CheckLock(m);
    e88324b2:	0017079b          	addiw	a5,a4,1
{
    e88324b6:	89aa                	mv	s3,a0
    e88324b8:	8bae                	mv	s7,a1
    DomainAuthInfo **p = &m->AuthInfoList;
    e88324ba:	94aa                	add	s1,s1,a0
    mDNS_CheckLock(m);
    e88324bc:	00d78d63          	beq	a5,a3,e88324d6 <GetAuthInfoForName_internal+0x4a>
    e88324c0:	0007c617          	auipc	a2,0x7c
    e88324c4:	92860613          	addi	a2,a2,-1752 # e88adde8 <__func__.8906>
    e88324c8:	00075597          	auipc	a1,0x75
    e88324cc:	cc858593          	addi	a1,a1,-824 # e88a7190 <end.8789+0x3ae8>
    e88324d0:	4501                	li	a0,0
    e88324d2:	fdbfc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if ((*p)->deltime && m->timenow - (*p)->deltime >= 0 && AutoTunnelUnregistered(*p))
    e88324d6:	6a85                	lui	s5,0x1
            mDNSPlatformMemZero(info, sizeof(*info));
    e88324d8:	6b09                	lui	s6,0x2
{
    e88324da:	8a26                	mv	s4,s1
            LogInfo("GetAuthInfoForName_internal deleting expired key %##s %##s", info->domain.c, info->keyname.c);
    e88324dc:	000a2c17          	auipc	s8,0xa2
    e88324e0:	598c0c13          	addi	s8,s8,1432 # e88d4a74 <mDNS_LoggingEnabled>
            mDNSPlatformMemZero(info, sizeof(*info));
    e88324e4:	818b0b13          	addi	s6,s6,-2024 # 1818 <memcmp-0xe87fe7e8>
            LogInfo("GetAuthInfoForName_internal deleting expired key %##s %##s", info->domain.c, info->keyname.c);
    e88324e8:	574a8c93          	addi	s9,s5,1396 # 1574 <memcmp-0xe87fea8c>
    e88324ec:	474a8d13          	addi	s10,s5,1140
    e88324f0:	0007ad97          	auipc	s11,0x7a
    e88324f4:	198d8d93          	addi	s11,s11,408 # e88ac688 <kOn.10632+0x740>
    while (*p)
    e88324f8:	000a3403          	ld	s0,0(s4)
    e88324fc:	e01d                	bnez	s0,e8832522 <GetAuthInfoForName_internal+0x96>
}
    e88324fe:	7406                	ld	s0,96(sp)
    e8832500:	70a6                	ld	ra,104(sp)
    e8832502:	6946                	ld	s2,80(sp)
    e8832504:	69a6                	ld	s3,72(sp)
    e8832506:	6a06                	ld	s4,64(sp)
    e8832508:	7ae2                	ld	s5,56(sp)
    e883250a:	7b42                	ld	s6,48(sp)
    e883250c:	7c02                	ld	s8,32(sp)
    e883250e:	6ce2                	ld	s9,24(sp)
    e8832510:	6d42                	ld	s10,16(sp)
    e8832512:	6da2                	ld	s11,8(sp)
    return(GetAuthInfoForName_direct(m, name));
    e8832514:	85de                	mv	a1,s7
    e8832516:	8526                	mv	a0,s1
}
    e8832518:	7ba2                	ld	s7,40(sp)
    e883251a:	64e6                	ld	s1,88(sp)
    e883251c:	6165                	addi	sp,sp,112
    return(GetAuthInfoForName_direct(m, name));
    e883251e:	8b5ff06f          	j	e8831dd2 <GetAuthInfoForName_direct.isra.1>
        if ((*p)->deltime && m->timenow - (*p)->deltime >= 0 && AutoTunnelUnregistered(*p))
    e8832522:	4418                	lw	a4,8(s0)
    e8832524:	cf3d                	beqz	a4,e88325a2 <GetAuthInfoForName_internal+0x116>
    e8832526:	2409a783          	lw	a5,576(s3)
    e883252a:	9f99                	subw	a5,a5,a4
    e883252c:	0607cb63          	bltz	a5,e88325a2 <GetAuthInfoForName_internal+0x116>
    e8832530:	01844783          	lbu	a5,24(s0)
    e8832534:	e7bd                	bnez	a5,e88325a2 <GetAuthInfoForName_internal+0x116>
    e8832536:	42844783          	lbu	a5,1064(s0)
    e883253a:	e7a5                	bnez	a5,e88325a2 <GetAuthInfoForName_internal+0x116>
    e883253c:	015407b3          	add	a5,s0,s5
    e8832540:	8387c703          	lbu	a4,-1992(a5)
    e8832544:	ef39                	bnez	a4,e88325a2 <GetAuthInfoForName_internal+0x116>
    e8832546:	c487c703          	lbu	a4,-952(a5)
    e883254a:	ef21                	bnez	a4,e88325a2 <GetAuthInfoForName_internal+0x116>
    e883254c:	0587c783          	lbu	a5,88(a5)
    e8832550:	eba9                	bnez	a5,e88325a2 <GetAuthInfoForName_internal+0x116>
            LogInfo("GetAuthInfoForName_internal deleting expired key %##s %##s", info->domain.c, info->keyname.c);
    e8832552:	000c2783          	lw	a5,0(s8)
    e8832556:	cb89                	beqz	a5,e8832568 <GetAuthInfoForName_internal+0xdc>
    e8832558:	019406b3          	add	a3,s0,s9
    e883255c:	01a40633          	add	a2,s0,s10
    e8832560:	85ee                	mv	a1,s11
    e8832562:	450d                	li	a0,3
    e8832564:	f49fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            *p = info->next;    // Cut DomainAuthInfo from list *before* scanning our question list updating AuthInfo pointers
    e8832568:	601c                	ld	a5,0(s0)
    e883256a:	00fa3023          	sd	a5,0(s4)
            for (q = m->Questions; q; q=q->next)
    e883256e:	2b89b903          	ld	s2,696(s3)
    e8832572:	00091a63          	bnez	s2,e8832586 <GetAuthInfoForName_internal+0xfa>
            mDNSPlatformMemZero(info, sizeof(*info));
    e8832576:	8522                	mv	a0,s0
    e8832578:	85da                	mv	a1,s6
    e883257a:	d7cfd0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
            mDNSPlatformMemFree(info);
    e883257e:	8522                	mv	a0,s0
    e8832580:	d03fd0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
        {
    e8832584:	bf95                	j	e88324f8 <GetAuthInfoForName_internal+0x6c>
                if (q->AuthInfo == info)
    e8832586:	04893783          	ld	a5,72(s2)
    e883258a:	00879963          	bne	a5,s0,e883259c <GetAuthInfoForName_internal+0x110>
                    q->AuthInfo = GetAuthInfoForName_direct(m, &q->qname);
    e883258e:	21490593          	addi	a1,s2,532
    e8832592:	8526                	mv	a0,s1
    e8832594:	83fff0ef          	jal	ra,e8831dd2 <GetAuthInfoForName_direct.isra.1>
    e8832598:	04a93423          	sd	a0,72(s2)
            for (q = m->Questions; q; q=q->next)
    e883259c:	00093903          	ld	s2,0(s2)
    e88325a0:	bfc9                	j	e8832572 <GetAuthInfoForName_internal+0xe6>
            p = &(*p)->next;
    e88325a2:	8a22                	mv	s4,s0
    e88325a4:	bf91                	j	e88324f8 <GetAuthInfoForName_internal+0x6c>

00000000e88325a6 <IsRecordMergeable>:
    if (!AuthRecord_uDNS(rr)) return mDNSfalse;
    e88325a6:	00070797          	auipc	a5,0x70
    e88325aa:	7ba78793          	addi	a5,a5,1978 # e88a2d60 <mDNSInterface_Any>
    e88325ae:	7198                	ld	a4,32(a1)
    e88325b0:	639c                	ld	a5,0(a5)
    e88325b2:	00f70b63          	beq	a4,a5,e88325c8 <IsRecordMergeable+0x22>
    e88325b6:	4501                	li	a0,0
}
    e88325b8:	8082                	ret
    if (!AuthRecord_uDNS(rr)) return mDNSfalse;
    e88325ba:	4501                	li	a0,0
}
    e88325bc:	60e2                	ld	ra,24(sp)
    e88325be:	f891440b          	ldd	s0,s1,(sp),0,4
    e88325c2:	6942                	ld	s2,16(sp)
    e88325c4:	6105                	addi	sp,sp,32
    e88325c6:	8082                	ret
    if (!AuthRecord_uDNS(rr)) return mDNSfalse;
    e88325c8:	07a5c783          	lbu	a5,122(a1)
    e88325cc:	f7ed                	bnez	a5,e88325b6 <IsRecordMergeable+0x10>
{
    e88325ce:	1101                	addi	sp,sp,-32
    e88325d0:	f891540b          	sdd	s0,s1,(sp),0,4
    e88325d4:	e84a                	sd	s2,16(sp)
    e88325d6:	ec06                	sd	ra,24(sp)
    e88325d8:	84aa                	mv	s1,a0
    if (!AuthRecord_uDNS(rr)) return mDNSfalse;
    e88325da:	7588                	ld	a0,40(a1)
    e88325dc:	8932                	mv	s2,a2
    e88325de:	842e                	mv	s0,a1
    e88325e0:	ac3e00ef          	jal	ra,e88130a2 <IsLocalDomain>
    e88325e4:	f979                	bnez	a0,e88325ba <IsRecordMergeable+0x14>
    if (rr->LastAPTime + rr->ThisAPInterval - time > 0)
    e88325e6:	11042603          	lw	a2,272(s0)
    e88325ea:	11442783          	lw	a5,276(s0)
    e88325ee:	9fb1                	addw	a5,a5,a2
    e88325f0:	4127863b          	subw	a2,a5,s2
    e88325f4:	fcc043e3          	bgtz	a2,e88325ba <IsRecordMergeable+0x14>
    if (!rr->zone) return mDNSfalse;
    e88325f8:	16043583          	ld	a1,352(s0)
    e88325fc:	dddd                	beqz	a1,e88325ba <IsRecordMergeable+0x14>
    info = GetAuthInfoForName_internal(m, rr->zone);
    e88325fe:	8526                	mv	a0,s1
    e8832600:	e8dff0ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    if (info && info->deltime && m->timenow - info->deltime >= 0) {debugf("IsRecordMergeable: Domain %##s will be deleted soon", info->domain.c); return mDNSfalse;}
    e8832604:	c901                	beqz	a0,e8832614 <IsRecordMergeable+0x6e>
    e8832606:	4518                	lw	a4,8(a0)
    e8832608:	c711                	beqz	a4,e8832614 <IsRecordMergeable+0x6e>
    e883260a:	2404a783          	lw	a5,576(s1)
    e883260e:	9f99                	subw	a5,a5,a4
    e8832610:	fa07d5e3          	bgez	a5,e88325ba <IsRecordMergeable+0x14>
    if (rr->state != regState_DeregPending && rr->state != regState_Pending && rr->state != regState_Registered && rr->state != regState_Refresh && rr->state != regState_UpdatePending)
    e8832614:	14c44783          	lbu	a5,332(s0)
    e8832618:	4689                	li	a3,2
    e883261a:	fff7871b          	addiw	a4,a5,-1
    e883261e:	0ff77713          	andi	a4,a4,255
    e8832622:	00e6f763          	bgeu	a3,a4,e8832630 <IsRecordMergeable+0x8a>
    e8832626:	0fd7f793          	andi	a5,a5,253
    e883262a:	4715                	li	a4,5
    e883262c:	f8e797e3          	bne	a5,a4,e88325ba <IsRecordMergeable+0x14>
    if (!rr->nta || mDNSIPv4AddressIsZero(rr->nta->Addr.ip.v4)) return mDNSfalse;
    e8832630:	16843783          	ld	a5,360(s0)
    e8832634:	d3d9                	beqz	a5,e88325ba <IsRecordMergeable+0x14>
    e8832636:	3187a783          	lw	a5,792(a5)
    e883263a:	d3c1                	beqz	a5,e88325ba <IsRecordMergeable+0x14>
    if (!rr->uselease) return mDNSfalse;
    e883263c:	14d44783          	lbu	a5,333(s0)
    e8832640:	dfad                	beqz	a5,e88325ba <IsRecordMergeable+0x14>
    if (rr->mState == mergeState_DontMerge) {debugf("IsRecordMergeable Dontmerge true %s", ARDisplayString(m, rr)); return mDNSfalse;}
    e8832642:	1d144503          	lbu	a0,465(s0)
    e8832646:	157d                	addi	a0,a0,-1
    if (!AuthRecord_uDNS(rr)) return mDNSfalse;
    e8832648:	00a03533          	snez	a0,a0
    e883264c:	bf85                	j	e88325bc <IsRecordMergeable+0x16>

00000000e883264e <AreRecordsMergeable>:
{
    e883264e:	1101                	addi	sp,sp,-32
    e8832650:	e422                	sd	s0,8(sp)
    e8832652:	8432                	mv	s0,a2
    e8832654:	e826                	sd	s1,16(sp)
    if (!IsRecordMergeable(m, rr, time)) return mDNSfalse;
    e8832656:	8636                	mv	a2,a3
{
    e8832658:	84ae                	mv	s1,a1
    if (!IsRecordMergeable(m, rr, time)) return mDNSfalse;
    e883265a:	85a2                	mv	a1,s0
{
    e883265c:	ec06                	sd	ra,24(sp)
    if (!IsRecordMergeable(m, rr, time)) return mDNSfalse;
    e883265e:	f49ff0ef          	jal	ra,e88325a6 <IsRecordMergeable>
    e8832662:	e519                	bnez	a0,e8832670 <AreRecordsMergeable+0x22>
    e8832664:	4501                	li	a0,0
}
    e8832666:	60e2                	ld	ra,24(sp)
    e8832668:	6422                	ld	s0,8(sp)
    e883266a:	64c2                	ld	s1,16(sp)
    e883266c:	6105                	addi	sp,sp,32
    e883266e:	8082                	ret
    if (!SameDomainName(currentRR->zone, rr->zone))
    e8832670:	16043583          	ld	a1,352(s0)
    e8832674:	1604b503          	ld	a0,352(s1)
    e8832678:	9d3e00ef          	jal	ra,e881304a <SameDomainName>
    e883267c:	d565                	beqz	a0,e8832664 <AreRecordsMergeable+0x16>
    if (!mDNSSameIPv4Address(currentRR->nta->Addr.ip.v4, rr->nta->Addr.ip.v4)) return mDNSfalse;
    e883267e:	1684b703          	ld	a4,360(s1)
    e8832682:	16843783          	ld	a5,360(s0)
    e8832686:	31872603          	lw	a2,792(a4)
    e883268a:	3187a683          	lw	a3,792(a5)
    e883268e:	fcd61be3          	bne	a2,a3,e8832664 <AreRecordsMergeable+0x16>
    if (!mDNSSameIPPort(currentRR->nta->Port, rr->nta->Port)) return mDNSfalse;
    e8832692:	31275503          	lhu	a0,786(a4)
    e8832696:	3127d783          	lhu	a5,786(a5)
    e883269a:	8d1d                	sub	a0,a0,a5
    if (!IsRecordMergeable(m, rr, time)) return mDNSfalse;
    e883269c:	00153513          	seqz	a0,a0
    e88326a0:	b7d9                	j	e8832666 <AreRecordsMergeable+0x18>

00000000e88326a2 <GetAuthInfoForName>:
{
    e88326a2:	1101                	addi	sp,sp,-32
    e88326a4:	f891540b          	sdd	s0,s1,(sp),0,4
    mDNS_Lock(m);
    e88326a8:	0007b497          	auipc	s1,0x7b
    e88326ac:	76048493          	addi	s1,s1,1888 # e88ade08 <__func__.8920>
{
    e88326b0:	e84a                	sd	s2,16(sp)
    e88326b2:	892e                	mv	s2,a1
    mDNS_Lock(m);
    e88326b4:	85a6                	mv	a1,s1
{
    e88326b6:	ec06                	sd	ra,24(sp)
    e88326b8:	842a                	mv	s0,a0
    mDNS_Lock(m);
    e88326ba:	b48e30ef          	jal	ra,e8815a02 <mDNS_Lock_>
    d = GetAuthInfoForName_internal(m, name);
    e88326be:	85ca                	mv	a1,s2
    e88326c0:	8522                	mv	a0,s0
    e88326c2:	dcbff0ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    e88326c6:	892a                	mv	s2,a0
    mDNS_Unlock(m);
    e88326c8:	85a6                	mv	a1,s1
    e88326ca:	8522                	mv	a0,s0
    e88326cc:	c00e30ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e88326d0:	f891440b          	ldd	s0,s1,(sp),0,4
    e88326d4:	60e2                	ld	ra,24(sp)
    e88326d6:	854a                	mv	a0,s2
    e88326d8:	6942                	ld	s2,16(sp)
    e88326da:	6105                	addi	sp,sp,32
    e88326dc:	8082                	ret

00000000e88326de <GetZoneData_QuestionCallback>:
    if (!AddRecord) return;                                             // Don't care about REMOVE events
    e88326de:	2c068063          	beqz	a3,e883299e <GetZoneData_QuestionCallback+0x2c0>
    if (AddRecord == QC_addnocache && answer->rdlength == 0) return;    // Don't care about transient failure indications
    e88326e2:	4789                	li	a5,2
    e88326e4:	00f69663          	bne	a3,a5,e88326f0 <GetZoneData_QuestionCallback+0x12>
    e88326e8:	00c65783          	lhu	a5,12(a2)
    e88326ec:	2a078963          	beqz	a5,e883299e <GetZoneData_QuestionCallback+0x2c0>
    if (answer->rrtype != question->qtype) return;                      // Don't care about CNAMEs
    e88326f0:	3145d783          	lhu	a5,788(a1)
    e88326f4:	00265703          	lhu	a4,2(a2)
    e88326f8:	2ae79363          	bne	a5,a4,e883299e <GetZoneData_QuestionCallback+0x2c0>
{
    e88326fc:	7179                	addi	sp,sp,-48
    e88326fe:	e826                	sd	s1,16(sp)
    e8832700:	ec4a                	sd	s2,24(sp)
    e8832702:	f04e                	sd	s3,32(sp)
    e8832704:	f406                	sd	ra,40(sp)
    e8832706:	e422                	sd	s0,8(sp)
    if (answer->rrtype == kDNSType_SOA)
    e8832708:	4719                	li	a4,6
    e883270a:	8932                	mv	s2,a2
    e883270c:	84ae                	mv	s1,a1
    e883270e:	89aa                	mv	s3,a0
    ZoneData *zd = (ZoneData*)question->QuestionContext;
    e8832710:	3505b403          	ld	s0,848(a1)
    if (answer->rrtype == kDNSType_SOA)
    e8832714:	14e79563          	bne	a5,a4,e883285e <GetZoneData_QuestionCallback+0x180>
        mDNS_StopQuery(m, question);
    e8832718:	e4df10ef          	jal	ra,e8824564 <mDNS_StopQuery>
        if (question->ThisQInterval != -1)
    e883271c:	48d8                	lw	a4,20(s1)
    e883271e:	57fd                	li	a5,-1
    e8832720:	02f70163          	beq	a4,a5,e8832742 <GetZoneData_QuestionCallback+0x64>
            LogMsg("GetZoneData_QuestionCallback: Question %##s (%s) ThisQInterval %d not -1", question->qname.c, DNSTypeName(question->qtype), question->ThisQInterval);
    e8832724:	3144d503          	lhu	a0,788(s1)
    e8832728:	d38e30ef          	jal	ra,e8815c60 <DNSTypeName>
    e883272c:	86aa                	mv	a3,a0
    e883272e:	48d8                	lw	a4,20(s1)
    e8832730:	21448613          	addi	a2,s1,532
    e8832734:	0007a597          	auipc	a1,0x7a
    e8832738:	03c58593          	addi	a1,a1,60 # e88ac770 <kOn.10632+0x828>
    e883273c:	4501                	li	a0,0
    e883273e:	d6ffc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (answer->rdlength)
    e8832742:	00c95783          	lhu	a5,12(s2)
    e8832746:	cbb5                	beqz	a5,e88327ba <GetZoneData_QuestionCallback+0xdc>
            AssignDomainName(&zd->ZoneName, answer->name);
    e8832748:	02093503          	ld	a0,32(s2)
    e883274c:	11040493          	addi	s1,s0,272
    e8832750:	10050593          	addi	a1,a0,256
    e8832754:	9f9e00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8832758:	0005061b          	sext.w	a2,a0
    e883275c:	10000793          	li	a5,256
    e8832760:	04c7e763          	bltu	a5,a2,e88327ae <GetZoneData_QuestionCallback+0xd0>
    e8832764:	02093583          	ld	a1,32(s2)
    e8832768:	8526                	mv	a0,s1
    e883276a:	b36fd0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            zd->ZoneClass = answer->rrclass;
    e883276e:	00495783          	lhu	a5,4(s2)
            AssignDomainName(&zd->question.qname, &zd->ZoneName);
    e8832772:	21040593          	addi	a1,s0,528
    e8832776:	8526                	mv	a0,s1
            zd->ZoneClass = answer->rrclass;
    e8832778:	20f41823          	sh	a5,528(s0)
            AssignDomainName(&zd->question.qname, &zd->ZoneName);
    e883277c:	9d1e00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8832780:	0005061b          	sext.w	a2,a0
    e8832784:	10000793          	li	a5,256
    e8832788:	02c7e663          	bltu	a5,a2,e88327b4 <GetZoneData_QuestionCallback+0xd6>
    e883278c:	85a6                	mv	a1,s1
    e883278e:	55440513          	addi	a0,s0,1364
    e8832792:	b0efd0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
            GetZoneData_StartQuery(m, zd, kDNSType_SRV);
    e8832796:	02100613          	li	a2,33
                GetZoneData_StartQuery(m, zd, kDNSType_SOA);
    e883279a:	85a2                	mv	a1,s0
}
    e883279c:	6422                	ld	s0,8(sp)
    e883279e:	70a2                	ld	ra,40(sp)
    e88327a0:	64c2                	ld	s1,16(sp)
    e88327a2:	6962                	ld	s2,24(sp)
                GetZoneData_StartQuery(m, zd, kDNSType_SOA);
    e88327a4:	854e                	mv	a0,s3
}
    e88327a6:	7982                	ld	s3,32(sp)
    e88327a8:	6145                	addi	sp,sp,48
                GetZoneData_StartQuery(m, zd, kDNSType_SOA);
    e88327aa:	a1bfe06f          	j	e88311c4 <GetZoneData_StartQuery>
            AssignDomainName(&zd->ZoneName, answer->name);
    e88327ae:	10040823          	sb	zero,272(s0)
    e88327b2:	bf75                	j	e883276e <GetZoneData_QuestionCallback+0x90>
            AssignDomainName(&zd->question.qname, &zd->ZoneName);
    e88327b4:	54040a23          	sb	zero,1364(s0)
    e88327b8:	bff9                	j	e8832796 <GetZoneData_QuestionCallback+0xb8>
        else if (zd->CurrentSOA->c[0])
    e88327ba:	10843583          	ld	a1,264(s0)
    e88327be:	0005c783          	lbu	a5,0(a1)
    e88327c2:	c3d1                	beqz	a5,e8832846 <GetZoneData_QuestionCallback+0x168>
            DomainAuthInfo *AuthInfo = GetAuthInfoForName(m, zd->CurrentSOA);
    e88327c4:	854e                	mv	a0,s3
    e88327c6:	eddff0ef          	jal	ra,e88326a2 <GetAuthInfoForName>
            if (AuthInfo && AuthInfo->AutoTunnel)
    e88327ca:	c121                	beqz	a0,e883280a <GetZoneData_QuestionCallback+0x12c>
    e88327cc:	00c54783          	lbu	a5,12(a0)
    e88327d0:	cf8d                	beqz	a5,e883280a <GetZoneData_QuestionCallback+0x12c>
                LogInfo("GetZoneData_QuestionCallback: not chopping labels for %##s", zd->CurrentSOA->c);
    e88327d2:	000a2797          	auipc	a5,0xa2
    e88327d6:	2a278793          	addi	a5,a5,674 # e88d4a74 <mDNS_LoggingEnabled>
    e88327da:	439c                	lw	a5,0(a5)
    e88327dc:	cb91                	beqz	a5,e88327f0 <GetZoneData_QuestionCallback+0x112>
    e88327de:	10843603          	ld	a2,264(s0)
    e88327e2:	0007a597          	auipc	a1,0x7a
    e88327e6:	fde58593          	addi	a1,a1,-34 # e88ac7c0 <kOn.10632+0x878>
            LogInfo("GetZoneData recursed to root label of %##s without finding SOA", zd->ChildName.c);
    e88327ea:	450d                	li	a0,3
    e88327ec:	cc1fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            zd->ZoneDataCallback(m, mStatus_NoSuchNameErr, zd);
    e88327f0:	33043303          	ld	t1,816(s0)
    e88327f4:	75c1                	lui	a1,0xffff0
    e88327f6:	8622                	mv	a2,s0
    e88327f8:	15f9                	addi	a1,a1,-2
}
    e88327fa:	6422                	ld	s0,8(sp)
    e88327fc:	70a2                	ld	ra,40(sp)
    e88327fe:	64c2                	ld	s1,16(sp)
    e8832800:	6962                	ld	s2,24(sp)
        zd->ZoneDataCallback(m, mStatus_NoError, zd);
    e8832802:	854e                	mv	a0,s3
}
    e8832804:	7982                	ld	s3,32(sp)
    e8832806:	6145                	addi	sp,sp,48
        zd->ZoneDataCallback(m, mStatus_NoError, zd);
    e8832808:	8302                	jr	t1
                zd->CurrentSOA = (domainname *)(zd->CurrentSOA->c + zd->CurrentSOA->c[0]+1);
    e883280a:	10843783          	ld	a5,264(s0)
    e883280e:	0007c703          	lbu	a4,0(a5)
    e8832812:	0705                	addi	a4,a4,1
    e8832814:	00e78533          	add	a0,a5,a4
    e8832818:	10a43423          	sd	a0,264(s0)
                AssignDomainName(&zd->question.qname, zd->CurrentSOA);
    e883281c:	10050593          	addi	a1,a0,256
    e8832820:	92de00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8832824:	0005061b          	sext.w	a2,a0
    e8832828:	10000793          	li	a5,256
    e883282c:	00c7ea63          	bltu	a5,a2,e8832840 <GetZoneData_QuestionCallback+0x162>
    e8832830:	10843583          	ld	a1,264(s0)
    e8832834:	55440513          	addi	a0,s0,1364
    e8832838:	a68fd0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                GetZoneData_StartQuery(m, zd, kDNSType_SOA);
    e883283c:	4619                	li	a2,6
    e883283e:	bfb1                	j	e883279a <GetZoneData_QuestionCallback+0xbc>
                AssignDomainName(&zd->question.qname, zd->CurrentSOA);
    e8832840:	54040a23          	sb	zero,1364(s0)
    e8832844:	bfe5                	j	e883283c <GetZoneData_QuestionCallback+0x15e>
            LogInfo("GetZoneData recursed to root label of %##s without finding SOA", zd->ChildName.c);
    e8832846:	000a2797          	auipc	a5,0xa2
    e883284a:	22e78793          	addi	a5,a5,558 # e88d4a74 <mDNS_LoggingEnabled>
    e883284e:	439c                	lw	a5,0(a5)
    e8832850:	d3c5                	beqz	a5,e88327f0 <GetZoneData_QuestionCallback+0x112>
    e8832852:	8622                	mv	a2,s0
    e8832854:	0007a597          	auipc	a1,0x7a
    e8832858:	fac58593          	addi	a1,a1,-84 # e88ac800 <kOn.10632+0x8b8>
    e883285c:	b779                	j	e88327ea <GetZoneData_QuestionCallback+0x10c>
    else if (answer->rrtype == kDNSType_SRV)
    e883285e:	02100713          	li	a4,33
    e8832862:	0ce79b63          	bne	a5,a4,e8832938 <GetZoneData_QuestionCallback+0x25a>
        mDNS_StopQuery(m, question);
    e8832866:	cfff10ef          	jal	ra,e8824564 <mDNS_StopQuery>
        if (question->ThisQInterval != -1)
    e883286a:	48d8                	lw	a4,20(s1)
    e883286c:	57fd                	li	a5,-1
    e883286e:	02f70163          	beq	a4,a5,e8832890 <GetZoneData_QuestionCallback+0x1b2>
            LogMsg("GetZoneData_QuestionCallback: Question %##s (%s) ThisQInterval %d not -1", question->qname.c, DNSTypeName(question->qtype), question->ThisQInterval);
    e8832872:	3144d503          	lhu	a0,788(s1)
    e8832876:	beae30ef          	jal	ra,e8815c60 <DNSTypeName>
    e883287a:	86aa                	mv	a3,a0
    e883287c:	48d8                	lw	a4,20(s1)
    e883287e:	21448613          	addi	a2,s1,532
    e8832882:	0007a597          	auipc	a1,0x7a
    e8832886:	eee58593          	addi	a1,a1,-274 # e88ac770 <kOn.10632+0x828>
    e883288a:	4501                	li	a0,0
    e883288c:	c21fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (answer->rdlength)
    e8832890:	00c95783          	lhu	a5,12(s2)
    e8832894:	c7a5                	beqz	a5,e88328fc <GetZoneData_QuestionCallback+0x21e>
                AssignDomainName(&zd->Host, &answer->rdata->u.srv.target);
    e8832896:	02893503          	ld	a0,40(s2)
    e883289a:	21240493          	addi	s1,s0,530
    e883289e:	10a50593          	addi	a1,a0,266
    e88328a2:	0529                	addi	a0,a0,10
    e88328a4:	8a9e00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88328a8:	0005061b          	sext.w	a2,a0
    e88328ac:	10000793          	li	a5,256
    e88328b0:	04c7e063          	bltu	a5,a2,e88328f0 <GetZoneData_QuestionCallback+0x212>
    e88328b4:	02893583          	ld	a1,40(s2)
    e88328b8:	8526                	mv	a0,s1
    e88328ba:	05a9                	addi	a1,a1,10
    e88328bc:	9e4fd0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                zd->Port = answer->rdata->u.srv.port;
    e88328c0:	02893783          	ld	a5,40(s2)
                AssignDomainName(&zd->question.qname, &zd->Host);
    e88328c4:	31240593          	addi	a1,s0,786
    e88328c8:	8526                	mv	a0,s1
                zd->Port = answer->rdata->u.srv.port;
    e88328ca:	0087d783          	lhu	a5,8(a5)
    e88328ce:	30f41923          	sh	a5,786(s0)
                AssignDomainName(&zd->question.qname, &zd->Host);
    e88328d2:	87be00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88328d6:	0005061b          	sext.w	a2,a0
    e88328da:	10000793          	li	a5,256
    e88328de:	00c7ec63          	bltu	a5,a2,e88328f6 <GetZoneData_QuestionCallback+0x218>
    e88328e2:	85a6                	mv	a1,s1
    e88328e4:	55440513          	addi	a0,s0,1364
    e88328e8:	9b8fd0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
                GetZoneData_StartQuery(m, zd, kDNSType_A);
    e88328ec:	4605                	li	a2,1
    e88328ee:	b575                	j	e883279a <GetZoneData_QuestionCallback+0xbc>
                AssignDomainName(&zd->Host, &answer->rdata->u.srv.target);
    e88328f0:	20040923          	sb	zero,530(s0)
    e88328f4:	b7f1                	j	e88328c0 <GetZoneData_QuestionCallback+0x1e2>
                AssignDomainName(&zd->question.qname, &zd->Host);
    e88328f6:	54040a23          	sb	zero,1364(s0)
    e88328fa:	bfcd                	j	e88328ec <GetZoneData_QuestionCallback+0x20e>
                zd->Port = zeroIPPort;
    e88328fc:	00071797          	auipc	a5,0x71
    e8832900:	cac78793          	addi	a5,a5,-852 # e88a35a8 <zeroIPPort>
    e8832904:	0007d783          	lhu	a5,0(a5)
                zd->ZonePrivate = mDNSfalse;
    e8832908:	32040423          	sb	zero,808(s0)
                zd->Host.c[0] = 0;
    e883290c:	20040923          	sb	zero,530(s0)
                zd->Port = zeroIPPort;
    e8832910:	30f41923          	sh	a5,786(s0)
                zd->Addr = zeroAddr;
    e8832914:	00071797          	auipc	a5,0x71
    e8832918:	c6c78793          	addi	a5,a5,-916 # e88a3580 <zeroAddr>
    e883291c:	6394                	ld	a3,0(a5)
    e883291e:	30d43a23          	sd	a3,788(s0)
    e8832922:	6794                	ld	a3,8(a5)
    e8832924:	4b9c                	lw	a5,16(a5)
    e8832926:	30d43e23          	sd	a3,796(s0)
    e883292a:	32f42223          	sw	a5,804(s0)
        zd->ZoneDataCallback(m, mStatus_NoError, zd);
    e883292e:	33043303          	ld	t1,816(s0)
    e8832932:	8622                	mv	a2,s0
    e8832934:	4581                	li	a1,0
    e8832936:	b5d1                	j	e88327fa <GetZoneData_QuestionCallback+0x11c>
    else if (answer->rrtype == kDNSType_A)
    e8832938:	4705                	li	a4,1
    e883293a:	04e79b63          	bne	a5,a4,e8832990 <GetZoneData_QuestionCallback+0x2b2>
        mDNS_StopQuery(m, question);
    e883293e:	c27f10ef          	jal	ra,e8824564 <mDNS_StopQuery>
        if (question->ThisQInterval != -1)
    e8832942:	48d8                	lw	a4,20(s1)
    e8832944:	57fd                	li	a5,-1
    e8832946:	02f70163          	beq	a4,a5,e8832968 <GetZoneData_QuestionCallback+0x28a>
            LogMsg("GetZoneData_QuestionCallback: Question %##s (%s) ThisQInterval %d not -1", question->qname.c, DNSTypeName(question->qtype), question->ThisQInterval);
    e883294a:	3144d503          	lhu	a0,788(s1)
    e883294e:	b12e30ef          	jal	ra,e8815c60 <DNSTypeName>
    e8832952:	86aa                	mv	a3,a0
    e8832954:	48d8                	lw	a4,20(s1)
    e8832956:	21448613          	addi	a2,s1,532
    e883295a:	0007a597          	auipc	a1,0x7a
    e883295e:	e1658593          	addi	a1,a1,-490 # e88ac770 <kOn.10632+0x828>
    e8832962:	4501                	li	a0,0
    e8832964:	b49fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        zd->Addr.type  = mDNSAddrType_IPv4;
    e8832968:	4791                	li	a5,4
    e883296a:	30f42a23          	sw	a5,788(s0)
        zd->Addr.ip.v4 = (answer->rdlength == 4) ? answer->rdata->u.ipv4 : zerov4Addr;
    e883296e:	00c95703          	lhu	a4,12(s2)
    e8832972:	4791                	li	a5,4
    e8832974:	00f71863          	bne	a4,a5,e8832984 <GetZoneData_QuestionCallback+0x2a6>
    e8832978:	02893783          	ld	a5,40(s2)
    e883297c:	43dc                	lw	a5,4(a5)
    e883297e:	30f42c23          	sw	a5,792(s0)
    e8832982:	b775                	j	e883292e <GetZoneData_QuestionCallback+0x250>
    e8832984:	00071797          	auipc	a5,0x71
    e8832988:	c5c78793          	addi	a5,a5,-932 # e88a35e0 <zerov4Addr>
    e883298c:	439c                	lw	a5,0(a5)
    e883298e:	bfc5                	j	e883297e <GetZoneData_QuestionCallback+0x2a0>
}
    e8832990:	70a2                	ld	ra,40(sp)
    e8832992:	6422                	ld	s0,8(sp)
    e8832994:	64c2                	ld	s1,16(sp)
    e8832996:	6962                	ld	s2,24(sp)
    e8832998:	7982                	ld	s3,32(sp)
    e883299a:	6145                	addi	sp,sp,48
    e883299c:	8082                	ret
    e883299e:	8082                	ret

00000000e88329a0 <RecreateNATMappings>:
{
    e88329a0:	1101                	addi	sp,sp,-32
    e88329a2:	f891540b          	sdd	s0,s1,(sp),0,4
    e88329a6:	e84a                	sd	s2,16(sp)
    e88329a8:	ec06                	sd	ra,24(sp)
    mDNSu32 when = NonZeroTime(m->timenow + waitTicks);
    e88329aa:	24052483          	lw	s1,576(a0)
{
    e88329ae:	892a                	mv	s2,a0
    mDNSu32 when = NonZeroTime(m->timenow + waitTicks);
    e88329b0:	9cad                	addw	s1,s1,a1
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e88329b2:	e091                	bnez	s1,e88329b6 <RecreateNATMappings+0x16>
    e88329b4:	4485                	li	s1,1
        n->retryInterval = NATMAP_INIT_RETRY;
    e88329b6:	000a2717          	auipc	a4,0xa2
    e88329ba:	0ca70713          	addi	a4,a4,202 # e88d4a80 <mDNSPlatformOneSecond>
    e88329be:	4318                	lw	a4,0(a4)
    e88329c0:	4691                	li	a3,4
    for (n = m->NATTraversals; n; n=n->next)
    e88329c2:	6791                	lui	a5,0x4
        n->retryInterval = NATMAP_INIT_RETRY;
    e88329c4:	02d7473b          	divw	a4,a4,a3
    for (n = m->NATTraversals; n; n=n->next)
    e88329c8:	97ca                	add	a5,a5,s2
    e88329ca:	bf07b783          	ld	a5,-1040(a5) # 3bf0 <memcmp-0xe87fc410>
    e88329ce:	e3a1                	bnez	a5,e8832a0e <RecreateNATMappings+0x6e>
    m->PCPNonce[0] = mDNSRandom(-1);
    e88329d0:	557d                	li	a0,-1
    e88329d2:	d36e00ef          	jal	ra,e8812f08 <mDNSRandom>
    e88329d6:	6411                	lui	s0,0x4
    e88329d8:	944a                	add	s0,s0,s2
    e88329da:	c0a42623          	sw	a0,-1012(s0) # 3c0c <memcmp-0xe87fc3f4>
    m->PCPNonce[1] = mDNSRandom(-1);
    e88329de:	557d                	li	a0,-1
    e88329e0:	d28e00ef          	jal	ra,e8812f08 <mDNSRandom>
    e88329e4:	c0a42823          	sw	a0,-1008(s0)
    m->PCPNonce[2] = mDNSRandom(-1);
    e88329e8:	557d                	li	a0,-1
    e88329ea:	d1ee00ef          	jal	ra,e8812f08 <mDNSRandom>
    e88329ee:	c0a42a23          	sw	a0,-1004(s0)
    m->retryIntervalGetAddr = 0;
    e88329f2:	c0042023          	sw	zero,-1024(s0)
    m->retryGetAddr = when;
    e88329f6:	c0942223          	sw	s1,-1020(s0)
    m->NextScheduledNATOp = m->timenow;     // Need to send packets immediately
    e88329fa:	24092783          	lw	a5,576(s2)
}
    e88329fe:	60e2                	ld	ra,24(sp)
    e8832a00:	f891440b          	ldd	s0,s1,(sp),0,4
    m->NextScheduledNATOp = m->timenow;     // Need to send packets immediately
    e8832a04:	26f92223          	sw	a5,612(s2)
}
    e8832a08:	6942                	ld	s2,16(sp)
    e8832a0a:	6105                	addi	sp,sp,32
    e8832a0c:	8082                	ret
        if (!n->Protocol) n->NewResult = mStatus_NoError;
    e8832a0e:	03c7c683          	lbu	a3,60(a5)
        n->ExpiryTime    = 0;       // Mark this mapping as expired
    e8832a12:	0007a423          	sw	zero,8(a5)
        n->retryInterval = NATMAP_INIT_RETRY;
    e8832a16:	c7d8                	sw	a4,12(a5)
        n->retryPortMap  = when;
    e8832a18:	cb84                	sw	s1,16(a5)
        n->lastSuccessfulProtocol = NATTProtocolNone;
    e8832a1a:	00078c23          	sb	zero,24(a5)
        if (!n->Protocol) n->NewResult = mStatus_NoError;
    e8832a1e:	e299                	bnez	a3,e8832a24 <RecreateNATMappings+0x84>
    e8832a20:	0007aa23          	sw	zero,20(a5)
    for (n = m->NATTraversals; n; n=n->next)
    e8832a24:	639c                	ld	a5,0(a5)
    e8832a26:	b765                	j	e88329ce <RecreateNATMappings+0x2e>

00000000e8832a28 <natTraversalHandleAddressReply>:
{
    e8832a28:	7179                	addi	sp,sp,-48
    e8832a2a:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8832a2e:	f04a                	sd	s2,32(sp)
    e8832a30:	f406                	sd	ra,40(sp)
    e8832a32:	c432                	sw	a2,8(sp)
    e8832a34:	842a                	mv	s0,a0
    e8832a36:	84ae                	mv	s1,a1
    e8832a38:	000b1917          	auipc	s2,0xb1
    e8832a3c:	13290913          	addi	s2,s2,306 # e88e3b6a <last_err.8977>
    if (err)
    e8832a40:	c5d9                	beqz	a1,e8832ace <natTraversalHandleAddressReply+0xa6>
        if (err != last_err) LogMsg("Error getting external address %d", err);
    e8832a42:	00095783          	lhu	a5,0(s2)
    e8832a46:	0005861b          	sext.w	a2,a1
    e8832a4a:	00c78963          	beq	a5,a2,e8832a5c <natTraversalHandleAddressReply+0x34>
    e8832a4e:	0007c597          	auipc	a1,0x7c
    e8832a52:	d4a58593          	addi	a1,a1,-694 # e88ae798 <__func__.9833+0x800>
    e8832a56:	4501                	li	a0,0
    e8832a58:	a55fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        ExtAddr = zerov4Addr;
    e8832a5c:	00071797          	auipc	a5,0x71
    e8832a60:	b8478793          	addi	a5,a5,-1148 # e88a35e0 <zerov4Addr>
    e8832a64:	439c                	lw	a5,0(a5)
    e8832a66:	c43e                	sw	a5,8(sp)
    m->ExtAddress = ExtAddr;
    e8832a68:	46a2                	lw	a3,8(sp)
    e8832a6a:	6791                	lui	a5,0x4
    e8832a6c:	97a2                	add	a5,a5,s0
    e8832a6e:	c0d7a423          	sw	a3,-1016(a5) # 3c08 <memcmp-0xe87fc3f8>
    if (!err) // Success, back-off to maximum interval
    e8832a72:	ecc1                	bnez	s1,e8832b0a <natTraversalHandleAddressReply+0xe2>
        m->retryIntervalGetAddr = NATMAP_MAX_RETRY_INTERVAL;
    e8832a74:	000a2717          	auipc	a4,0xa2
    e8832a78:	00c70713          	addi	a4,a4,12 # e88d4a80 <mDNSPlatformOneSecond>
    e8832a7c:	4318                	lw	a4,0(a4)
    e8832a7e:	38400613          	li	a2,900
    e8832a82:	02c7073b          	mulw	a4,a4,a2
        m->retryIntervalGetAddr = NATMAP_INIT_RETRY;
    e8832a86:	c0e7a023          	sw	a4,-1024(a5)
    m->retryGetAddr = m->timenow + m->retryIntervalGetAddr;
    e8832a8a:	6711                	lui	a4,0x4
    e8832a8c:	9722                	add	a4,a4,s0
    e8832a8e:	24042783          	lw	a5,576(s0)
    e8832a92:	c0072603          	lw	a2,-1024(a4) # 3c00 <memcmp-0xe87fc400>
    e8832a96:	9fb1                	addw	a5,a5,a2
    e8832a98:	c0f72223          	sw	a5,-1020(a4)
    if (m->NextScheduledNATOp - m->retryGetAddr > 0)
    e8832a9c:	26442703          	lw	a4,612(s0)
    e8832aa0:	9f1d                	subw	a4,a4,a5
    e8832aa2:	00e05463          	blez	a4,e8832aaa <natTraversalHandleAddressReply+0x82>
        m->NextScheduledNATOp = m->retryGetAddr;
    e8832aa6:	26f42223          	sw	a5,612(s0)
    for (n = m->NATTraversals; n; n=n->next)
    e8832aaa:	6791                	lui	a5,0x4
    e8832aac:	97a2                	add	a5,a5,s0
    e8832aae:	bf07b703          	ld	a4,-1040(a5) # 3bf0 <memcmp-0xe87fc410>
    last_err = err;
    e8832ab2:	00991023          	sh	s1,0(s2)
            n->retryInterval = NATMAP_INIT_RETRY;
    e8832ab6:	000a2617          	auipc	a2,0xa2
    e8832aba:	fca60613          	addi	a2,a2,-54 # e88d4a80 <mDNSPlatformOneSecond>
    e8832abe:	4591                	li	a1,4
    for (n = m->NATTraversals; n; n=n->next)
    e8832ac0:	e32d                	bnez	a4,e8832b22 <natTraversalHandleAddressReply+0xfa>
}
    e8832ac2:	70a2                	ld	ra,40(sp)
    e8832ac4:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8832ac8:	7902                	ld	s2,32(sp)
    e8832aca:	6145                	addi	sp,sp,48
    e8832acc:	8082                	ret
        LogInfo("Received external IP address %.4a from NAT", &ExtAddr);
    e8832ace:	000a2797          	auipc	a5,0xa2
    e8832ad2:	fa678793          	addi	a5,a5,-90 # e88d4a74 <mDNS_LoggingEnabled>
    e8832ad6:	439c                	lw	a5,0(a5)
    e8832ad8:	cb89                	beqz	a5,e8832aea <natTraversalHandleAddressReply+0xc2>
    e8832ada:	0030                	addi	a2,sp,8
    e8832adc:	0007c597          	auipc	a1,0x7c
    e8832ae0:	ce458593          	addi	a1,a1,-796 # e88ae7c0 <__func__.9833+0x828>
    e8832ae4:	450d                	li	a0,3
    e8832ae6:	9c7fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (mDNSv4AddrIsRFC1918(&ExtAddr))
    e8832aea:	0028                	addi	a0,sp,8
    e8832aec:	b0ee00ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e8832af0:	c909                	beqz	a0,e8832b02 <natTraversalHandleAddressReply+0xda>
            LogMsg("Double NAT (external NAT gateway address %.4a is also a private RFC 1918 address)", &ExtAddr);
    e8832af2:	0030                	addi	a2,sp,8
    e8832af4:	0007c597          	auipc	a1,0x7c
    e8832af8:	cfc58593          	addi	a1,a1,-772 # e88ae7f0 <__func__.9833+0x858>
    e8832afc:	4501                	li	a0,0
    e8832afe:	9affc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (mDNSIPv4AddressIsZero(ExtAddr))
    e8832b02:	47a2                	lw	a5,8(sp)
    e8832b04:	f3b5                	bnez	a5,e8832a68 <natTraversalHandleAddressReply+0x40>
            err = NATErr_NetFail; // fake error to handle routers that pathologically report success with the zero address
    e8832b06:	448d                	li	s1,3
    e8832b08:	b785                	j	e8832a68 <natTraversalHandleAddressReply+0x40>
    else if (!last_err) // Failure after success, retry quickly (then back-off exponentially)
    e8832b0a:	00095703          	lhu	a4,0(s2)
    e8832b0e:	ff35                	bnez	a4,e8832a8a <natTraversalHandleAddressReply+0x62>
        m->retryIntervalGetAddr = NATMAP_INIT_RETRY;
    e8832b10:	000a2717          	auipc	a4,0xa2
    e8832b14:	f7070713          	addi	a4,a4,-144 # e88d4a80 <mDNSPlatformOneSecond>
    e8832b18:	4318                	lw	a4,0(a4)
    e8832b1a:	4611                	li	a2,4
    e8832b1c:	02c7473b          	divw	a4,a4,a2
    e8832b20:	b79d                	j	e8832a86 <natTraversalHandleAddressReply+0x5e>
        if (!mDNSSameIPv4Address(n->NewAddress, ExtAddr) &&
    e8832b22:	5748                	lw	a0,44(a4)
    e8832b24:	47a2                	lw	a5,8(sp)
    e8832b26:	02f50963          	beq	a0,a5,e8832b58 <natTraversalHandleAddressReply+0x130>
    e8832b2a:	03c74503          	lbu	a0,60(a4)
    e8832b2e:	01874783          	lbu	a5,24(a4)
    e8832b32:	c50d                	beqz	a0,e8832b5c <natTraversalHandleAddressReply+0x134>
               (n->lastSuccessfulProtocol == NATTProtocolNATPMP || n->lastSuccessfulProtocol == NATTProtocolUPNPIGD) :
    e8832b34:	37fd                	addiw	a5,a5,-1
        if (!mDNSSameIPv4Address(n->NewAddress, ExtAddr) &&
    e8832b36:	0ff7f793          	andi	a5,a5,255
    e8832b3a:	0027b793          	sltiu	a5,a5,2
    e8832b3e:	cf89                	beqz	a5,e8832b58 <natTraversalHandleAddressReply+0x130>
            n->retryInterval = NATMAP_INIT_RETRY;
    e8832b40:	421c                	lw	a5,0(a2)
            n->NewAddress    = ExtAddr;
    e8832b42:	d754                	sw	a3,44(a4)
            n->ExpiryTime    = 0;
    e8832b44:	00072423          	sw	zero,8(a4)
            n->retryInterval = NATMAP_INIT_RETRY;
    e8832b48:	02b7c7bb          	divw	a5,a5,a1
    e8832b4c:	c75c                	sw	a5,12(a4)
            n->retryPortMap  = m->timenow;
    e8832b4e:	24042783          	lw	a5,576(s0)
    e8832b52:	cb1c                	sw	a5,16(a4)
            m->NextScheduledNATOp = m->timenow;     // Need to send packets immediately
    e8832b54:	26f42223          	sw	a5,612(s0)
    for (n = m->NATTraversals; n; n=n->next)
    e8832b58:	6318                	ld	a4,0(a4)
    e8832b5a:	b79d                	j	e8832ac0 <natTraversalHandleAddressReply+0x98>
        if (!mDNSSameIPv4Address(n->NewAddress, ExtAddr) &&
    e8832b5c:	17f5                	addi	a5,a5,-3
    e8832b5e:	00f037b3          	snez	a5,a5
    e8832b62:	bff1                	j	e8832b3e <natTraversalHandleAddressReply+0x116>

00000000e8832b64 <natTraversalHandlePortMapReply>:
    natTraversalHandlePortMapReplyWithAddress(m, n, InterfaceID, err, m->ExtAddress, extport, lease, protocol);
    e8832b64:	6311                	lui	t1,0x4
    e8832b66:	932a                	add	t1,t1,a0
    e8832b68:	88c2                	mv	a7,a6
    e8832b6a:	883e                	mv	a6,a5
    e8832b6c:	87ba                	mv	a5,a4
    e8832b6e:	c0832703          	lw	a4,-1016(t1) # 3c08 <memcmp-0xe87fc3f8>
    e8832b72:	844ff06f          	j	e8831bb6 <natTraversalHandlePortMapReplyWithAddress>

00000000e8832b76 <mDNS_StartNATOperation_internal>:
{
    e8832b76:	715d                	addi	sp,sp,-80
    LogInfo("mDNS_StartNATOperation_internal %p Protocol %d IntPort %d RequestedPort %d NATLease %d", traversal,
    e8832b78:	000a2797          	auipc	a5,0xa2
    e8832b7c:	efc78793          	addi	a5,a5,-260 # e88d4a74 <mDNS_LoggingEnabled>
{
    e8832b80:	e0a2                	sd	s0,64(sp)
    e8832b82:	f84a                	sd	s2,48(sp)
    e8832b84:	e486                	sd	ra,72(sp)
    e8832b86:	fc26                	sd	s1,56(sp)
    e8832b88:	f44e                	sd	s3,40(sp)
    e8832b8a:	f052                	sd	s4,32(sp)
    e8832b8c:	ec56                	sd	s5,24(sp)
    LogInfo("mDNS_StartNATOperation_internal %p Protocol %d IntPort %d RequestedPort %d NATLease %d", traversal,
    e8832b8e:	439c                	lw	a5,0(a5)
{
    e8832b90:	892a                	mv	s2,a0
    e8832b92:	842e                	mv	s0,a1
    LogInfo("mDNS_StartNATOperation_internal %p Protocol %d IntPort %d RequestedPort %d NATLease %d", traversal,
    e8832b94:	cb9d                	beqz	a5,e8832bca <mDNS_StartNATOperation_internal+0x54>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8832b96:	03e5c703          	lbu	a4,62(a1)
    e8832b9a:	03f5c683          	lbu	a3,63(a1)
    e8832b9e:	0405c783          	lbu	a5,64(a1)
    e8832ba2:	0415c603          	lbu	a2,65(a1)
    e8832ba6:	0087171b          	slliw	a4,a4,0x8
    e8832baa:	0445a803          	lw	a6,68(a1)
    e8832bae:	8f55                	or	a4,a4,a3
    e8832bb0:	03c5c683          	lbu	a3,60(a1)
    e8832bb4:	0087979b          	slliw	a5,a5,0x8
    e8832bb8:	8fd1                	or	a5,a5,a2
    e8832bba:	450d                	li	a0,3
    e8832bbc:	862e                	mv	a2,a1
    e8832bbe:	0007c597          	auipc	a1,0x7c
    e8832bc2:	99258593          	addi	a1,a1,-1646 # e88ae550 <__func__.9833+0x5b8>
    e8832bc6:	8e7fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (n = &m->NATTraversals; *n; n=&(*n)->next)
    e8832bca:	6491                	lui	s1,0x4
    e8832bcc:	bf048493          	addi	s1,s1,-1040 # 3bf0 <memcmp-0xe87fc410>
        if (traversal->Protocol && traversal->Protocol == (*n)->Protocol && mDNSSameIPPort(traversal->IntPort, (*n)->IntPort) &&
    e8832bd0:	f00ff9b7          	lui	s3,0xf00ff
    for (n = &m->NATTraversals; *n; n=&(*n)->next)
    e8832bd4:	94ca                	add	s1,s1,s2
        if (traversal->Protocol && traversal->Protocol == (*n)->Protocol && mDNSSameIPPort(traversal->IntPort, (*n)->IntPort) &&
    e8832bd6:	09d2                	slli	s3,s3,0x14
            !mDNSSameIPPort(traversal->IntPort, SSHPort))
    e8832bd8:	00070a17          	auipc	s4,0x70
    e8832bdc:	bb0a0a13          	addi	s4,s4,-1104 # e88a2788 <SSHPort>
            LogMsg("Warning: Created port mapping request %p Prot %d Int %d TTL %d "
    e8832be0:	0007ca97          	auipc	s5,0x7c
    e8832be4:	a30a8a93          	addi	s5,s5,-1488 # e88ae610 <__func__.9833+0x678>
    for (n = &m->NATTraversals; *n; n=&(*n)->next)
    e8832be8:	0004b803          	ld	a6,0(s1)
    e8832bec:	407c                	lw	a5,68(s0)
    e8832bee:	08081b63          	bnez	a6,e8832c84 <mDNS_StartNATOperation_internal+0x10e>
    traversal->retryInterval   = NATMAP_INIT_RETRY;
    e8832bf2:	000a2717          	auipc	a4,0xa2
    e8832bf6:	e8e70713          	addi	a4,a4,-370 # e88d4a80 <mDNSPlatformOneSecond>
    traversal->next            = mDNSNULL;
    e8832bfa:	00043023          	sd	zero,0(s0)
    traversal->retryInterval   = NATMAP_INIT_RETRY;
    e8832bfe:	4318                	lw	a4,0(a4)
    e8832c00:	4691                	li	a3,4
    traversal->ExpiryTime      = 0;
    e8832c02:	00042423          	sw	zero,8(s0)
    traversal->retryInterval   = NATMAP_INIT_RETRY;
    e8832c06:	02d7473b          	divw	a4,a4,a3
    e8832c0a:	c458                	sw	a4,12(s0)
    traversal->retryPortMap    = m->timenow;
    e8832c0c:	24092683          	lw	a3,576(s2)
    traversal->NewResult       = mStatus_NoError;
    e8832c10:	00042a23          	sw	zero,20(s0)
    traversal->lastSuccessfulProtocol = NATTProtocolNone;
    e8832c14:	00041c23          	sh	zero,24(s0)
    traversal->retryPortMap    = m->timenow;
    e8832c18:	c814                	sw	a3,16(s0)
    traversal->ExternalAddress = onesIPv4Addr;
    e8832c1a:	00070697          	auipc	a3,0x70
    e8832c1e:	6f668693          	addi	a3,a3,1782 # e88a3310 <onesIPv4Addr>
    e8832c22:	4294                	lw	a3,0(a3)
    traversal->Lifetime        = 0;
    e8832c24:	02043a23          	sd	zero,52(s0)
    traversal->ExternalAddress = onesIPv4Addr;
    e8832c28:	d414                	sw	a3,40(s0)
    traversal->NewAddress      = zerov4Addr;
    e8832c2a:	00071697          	auipc	a3,0x71
    e8832c2e:	9b668693          	addi	a3,a3,-1610 # e88a35e0 <zerov4Addr>
    e8832c32:	4294                	lw	a3,0(a3)
    e8832c34:	d454                	sw	a3,44(s0)
    traversal->ExternalPort    = zeroIPPort;
    e8832c36:	00071697          	auipc	a3,0x71
    e8832c3a:	97268693          	addi	a3,a3,-1678 # e88a35a8 <zeroIPPort>
    e8832c3e:	0006d683          	lhu	a3,0(a3)
    e8832c42:	02d41823          	sh	a3,48(s0)
    if (!traversal->NATLease) traversal->NATLease = NATMAP_DEFAULT_LEASE;
    e8832c46:	e789                	bnez	a5,e8832c50 <mDNS_StartNATOperation_internal+0xda>
    e8832c48:	6789                	lui	a5,0x2
    e8832c4a:	c207879b          	addiw	a5,a5,-992
    e8832c4e:	c07c                	sw	a5,68(s0)
    if (!m->NATTraversals)      // If this is our first NAT request, kick off an address request too
    e8832c50:	6791                	lui	a5,0x4
    e8832c52:	97ca                	add	a5,a5,s2
    e8832c54:	bf07b683          	ld	a3,-1040(a5) # 3bf0 <memcmp-0xe87fc410>
    e8832c58:	e699                	bnez	a3,e8832c66 <mDNS_StartNATOperation_internal+0xf0>
        m->retryGetAddr         = m->timenow;
    e8832c5a:	24092683          	lw	a3,576(s2)
        m->retryIntervalGetAddr = NATMAP_INIT_RETRY;
    e8832c5e:	c0e7a023          	sw	a4,-1024(a5)
        m->retryGetAddr         = m->timenow;
    e8832c62:	c0d7a223          	sw	a3,-1020(a5)
    if (!traversal->Protocol)
    e8832c66:	03c44783          	lbu	a5,60(s0)
    e8832c6a:	e791                	bnez	a5,e8832c76 <mDNS_StartNATOperation_internal+0x100>
        traversal->NewAddress = m->ExtAddress;
    e8832c6c:	6791                	lui	a5,0x4
    e8832c6e:	97ca                	add	a5,a5,s2
    e8832c70:	c087a783          	lw	a5,-1016(a5) # 3c08 <memcmp-0xe87fc3f8>
    e8832c74:	d45c                	sw	a5,44(s0)
    m->NextScheduledNATOp = m->timenow; // This will always trigger sending the packet ASAP, and generate client callback if necessary
    e8832c76:	24092783          	lw	a5,576(s2)
    return(mStatus_NoError);
    e8832c7a:	4501                	li	a0,0
    m->NextScheduledNATOp = m->timenow; // This will always trigger sending the packet ASAP, and generate client callback if necessary
    e8832c7c:	26f92223          	sw	a5,612(s2)
    *n = traversal;     // Append new NATTraversalInfo to the end of our list
    e8832c80:	e080                	sd	s0,0(s1)
    return(mStatus_NoError);
    e8832c82:	a035                	j	e8832cae <mDNS_StartNATOperation_internal+0x138>
        if (traversal == *n)
    e8832c84:	03c44683          	lbu	a3,60(s0)
    e8832c88:	02881c63          	bne	a6,s0,e8832cc0 <mDNS_StartNATOperation_internal+0x14a>
    e8832c8c:	03e44703          	lbu	a4,62(s0)
    e8832c90:	03f44603          	lbu	a2,63(s0)
            LogFatalError("Error! Tried to add a NAT traversal that's already in the active list: request %p Prot %d Int %d TTL %d",
    e8832c94:	4501                	li	a0,0
    e8832c96:	0087171b          	slliw	a4,a4,0x8
    e8832c9a:	8f51                	or	a4,a4,a2
    e8832c9c:	0007c597          	auipc	a1,0x7c
    e8832ca0:	90c58593          	addi	a1,a1,-1780 # e88ae5a8 <__func__.9833+0x610>
    e8832ca4:	8622                	mv	a2,s0
    e8832ca6:	807fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return(mStatus_AlreadyRegistered);
    e8832caa:	7541                	lui	a0,0xffff0
    e8832cac:	1555                	addi	a0,a0,-11
}
    e8832cae:	60a6                	ld	ra,72(sp)
    e8832cb0:	6406                	ld	s0,64(sp)
    e8832cb2:	74e2                	ld	s1,56(sp)
    e8832cb4:	7942                	ld	s2,48(sp)
    e8832cb6:	79a2                	ld	s3,40(sp)
    e8832cb8:	7a02                	ld	s4,32(sp)
    e8832cba:	6ae2                	ld	s5,24(sp)
    e8832cbc:	6161                	addi	sp,sp,80
    e8832cbe:	8082                	ret
        if (traversal->Protocol && traversal->Protocol == (*n)->Protocol && mDNSSameIPPort(traversal->IntPort, (*n)->IntPort) &&
    e8832cc0:	caa9                	beqz	a3,e8832d12 <mDNS_StartNATOperation_internal+0x19c>
    e8832cc2:	7c10                	ld	a2,56(s0)
    e8832cc4:	03883703          	ld	a4,56(a6)
    e8832cc8:	01367633          	and	a2,a2,s3
    e8832ccc:	01377733          	and	a4,a4,s3
    e8832cd0:	04e61163          	bne	a2,a4,e8832d12 <mDNS_StartNATOperation_internal+0x19c>
    e8832cd4:	03e45603          	lhu	a2,62(s0)
    e8832cd8:	000a5703          	lhu	a4,0(s4)
    e8832cdc:	02e60b63          	beq	a2,a4,e8832d12 <mDNS_StartNATOperation_internal+0x19c>
            LogMsg("Warning: Created port mapping request %p Prot %d Int %d TTL %d "
    e8832ce0:	04482603          	lw	a2,68(a6)
    e8832ce4:	03c84883          	lbu	a7,60(a6)
    e8832ce8:	03e44703          	lbu	a4,62(s0)
    e8832cec:	e432                	sd	a2,8(sp)
    e8832cee:	03e84603          	lbu	a2,62(a6)
    e8832cf2:	03f84503          	lbu	a0,63(a6)
    e8832cf6:	03f44583          	lbu	a1,63(s0)
    e8832cfa:	0086161b          	slliw	a2,a2,0x8
    e8832cfe:	8e49                	or	a2,a2,a0
    e8832d00:	0087171b          	slliw	a4,a4,0x8
    e8832d04:	e032                	sd	a2,0(sp)
    e8832d06:	8f4d                	or	a4,a4,a1
    e8832d08:	8622                	mv	a2,s0
    e8832d0a:	85d6                	mv	a1,s5
    e8832d0c:	4501                	li	a0,0
    e8832d0e:	f9efc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (n = &m->NATTraversals; *n; n=&(*n)->next)
    e8832d12:	6084                	ld	s1,0(s1)
    e8832d14:	bdd1                	j	e8832be8 <mDNS_StartNATOperation_internal+0x72>

00000000e8832d16 <mDNS_StopNATOperation_internal>:
    NATTraversalInfo **ptr = &m->NATTraversals;
    e8832d16:	6791                	lui	a5,0x4
{
    e8832d18:	711d                	addi	sp,sp,-96
    NATTraversalInfo **ptr = &m->NATTraversals;
    e8832d1a:	bf078713          	addi	a4,a5,-1040 # 3bf0 <memcmp-0xe87fc410>
    e8832d1e:	97aa                	add	a5,a5,a0
{
    e8832d20:	e8a2                	sd	s0,80(sp)
    e8832d22:	e0ca                	sd	s2,64(sp)
    e8832d24:	ec86                	sd	ra,88(sp)
    e8832d26:	e4a6                	sd	s1,72(sp)
    e8832d28:	fc4e                	sd	s3,56(sp)
    e8832d2a:	f852                	sd	s4,48(sp)
    e8832d2c:	f456                	sd	s5,40(sp)
    e8832d2e:	f05a                	sd	s6,32(sp)
    e8832d30:	ec5e                	sd	s7,24(sp)
    e8832d32:	e862                	sd	s8,16(sp)
    NATTraversalInfo **ptr = &m->NATTraversals;
    e8832d34:	bf07b783          	ld	a5,-1040(a5)
{
    e8832d38:	892a                	mv	s2,a0
    e8832d3a:	842e                	mv	s0,a1
    NATTraversalInfo **ptr = &m->NATTraversals;
    e8832d3c:	972a                	add	a4,a4,a0
    while (*ptr && *ptr != traversal) ptr=&(*ptr)->next;
    e8832d3e:	16078863          	beqz	a5,e8832eae <mDNS_StopNATOperation_internal+0x198>
    e8832d42:	6394                	ld	a3,0(a5)
    e8832d44:	0c879e63          	bne	a5,s0,e8832e20 <mDNS_StopNATOperation_internal+0x10a>
    LogInfo("mDNS_StopNATOperation_internal %p %d %d %d %d", traversal,
    e8832d48:	000a2997          	auipc	s3,0xa2
    e8832d4c:	d2c98993          	addi	s3,s3,-724 # e88d4a74 <mDNS_LoggingEnabled>
    if (*ptr) *ptr = (*ptr)->next;      // If we found it, cut this NATTraversalInfo struct from our list
    e8832d50:	e314                	sd	a3,0(a4)
    LogInfo("mDNS_StopNATOperation_internal %p %d %d %d %d", traversal,
    e8832d52:	0009a783          	lw	a5,0(s3)
    e8832d56:	cb9d                	beqz	a5,e8832d8c <mDNS_StopNATOperation_internal+0x76>
    e8832d58:	03e44703          	lbu	a4,62(s0)
    e8832d5c:	03f44683          	lbu	a3,63(s0)
    e8832d60:	04044783          	lbu	a5,64(s0)
    e8832d64:	04144603          	lbu	a2,65(s0)
    e8832d68:	0087171b          	slliw	a4,a4,0x8
    e8832d6c:	8f55                	or	a4,a4,a3
    e8832d6e:	04442803          	lw	a6,68(s0)
    e8832d72:	03c44683          	lbu	a3,60(s0)
    e8832d76:	0087979b          	slliw	a5,a5,0x8
    e8832d7a:	8fd1                	or	a5,a5,a2
    e8832d7c:	0007c597          	auipc	a1,0x7c
    e8832d80:	91c58593          	addi	a1,a1,-1764 # e88ae698 <__func__.9833+0x700>
    e8832d84:	8622                	mv	a2,s0
    e8832d86:	450d                	li	a0,3
    e8832d88:	f24fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (m->CurrentNATTraversal == traversal)
    e8832d8c:	6791                	lui	a5,0x4
    e8832d8e:	97ca                	add	a5,a5,s2
    e8832d90:	bf87b703          	ld	a4,-1032(a5) # 3bf8 <memcmp-0xe87fc408>
    e8832d94:	00871563          	bne	a4,s0,e8832d9e <mDNS_StopNATOperation_internal+0x88>
        m->CurrentNATTraversal = m->CurrentNATTraversal->next;
    e8832d98:	6018                	ld	a4,0(s0)
    e8832d9a:	bee7bc23          	sd	a4,-1032(a5)
    for (p = m->NATTraversals; p; p=p->next)
    e8832d9e:	6791                	lui	a5,0x4
    e8832da0:	97ca                	add	a5,a5,s2
    e8832da2:	bf07b483          	ld	s1,-1040(a5) # 3bf0 <memcmp-0xe87fc410>
            ((traversal->Protocol == p->Protocol && mDNSSameIPPort(traversal->IntPort, p->IntPort)) ||
    e8832da6:	f00ffa37          	lui	s4,0xf00ff
    mDNSBool unmap = mDNStrue;
    e8832daa:	4a85                	li	s5,1
            (!p->Protocol || (p->Protocol == NATOp_MapTCP && mDNSSameIPPort(p->IntPort, DiscardPort))))
    e8832dac:	4b09                	li	s6,2
    e8832dae:	0006fb97          	auipc	s7,0x6f
    e8832db2:	262b8b93          	addi	s7,s7,610 # e88a2010 <DiscardPort>
            ((traversal->Protocol == p->Protocol && mDNSSameIPPort(traversal->IntPort, p->IntPort)) ||
    e8832db6:	0a52                	slli	s4,s4,0x14
            LogInfo("Warning: Removed port mapping request %p Prot %d Int %d TTL %d "
    e8832db8:	0007cc17          	auipc	s8,0x7c
    e8832dbc:	910c0c13          	addi	s8,s8,-1776 # e88ae6c8 <__func__.9833+0x730>
    for (p = m->NATTraversals; p; p=p->next)
    e8832dc0:	e0bd                	bnez	s1,e8832e26 <mDNS_StopNATOperation_internal+0x110>
    if (traversal->ExpiryTime && unmap)
    e8832dc2:	4404                	lw	s1,8(s0)
    e8832dc4:	c0a9                	beqz	s1,e8832e06 <mDNS_StopNATOperation_internal+0xf0>
    return(mStatus_NoError);
    e8832dc6:	4481                	li	s1,0
    if (traversal->ExpiryTime && unmap)
    e8832dc8:	020a8f63          	beqz	s5,e8832e06 <mDNS_StopNATOperation_internal+0xf0>
        traversal->RequestedPort = zeroIPPort;
    e8832dcc:	00070797          	auipc	a5,0x70
    e8832dd0:	7dc78793          	addi	a5,a5,2012 # e88a35a8 <zeroIPPort>
    e8832dd4:	0007d783          	lhu	a5,0(a5)
        uDNS_SendNATMsg(m, traversal, traversal->lastSuccessfulProtocol != NATTProtocolNATPMP);
    e8832dd8:	01844603          	lbu	a2,24(s0)
        traversal->NATLease = 0;
    e8832ddc:	04042223          	sw	zero,68(s0)
        traversal->RequestedPort = zeroIPPort;
    e8832de0:	04f41023          	sh	a5,64(s0)
        traversal->NewAddress = zerov4Addr;
    e8832de4:	00070797          	auipc	a5,0x70
    e8832de8:	7fc78793          	addi	a5,a5,2044 # e88a35e0 <zerov4Addr>
    e8832dec:	439c                	lw	a5,0(a5)
        uDNS_SendNATMsg(m, traversal, traversal->lastSuccessfulProtocol != NATTProtocolNATPMP);
    e8832dee:	167d                	addi	a2,a2,-1
        traversal->retryInterval = 0;
    e8832df0:	00042623          	sw	zero,12(s0)
        traversal->sentNATPMP = mDNSfalse;
    e8832df4:	00040ca3          	sb	zero,25(s0)
        traversal->NewAddress = zerov4Addr;
    e8832df8:	d45c                	sw	a5,44(s0)
        uDNS_SendNATMsg(m, traversal, traversal->lastSuccessfulProtocol != NATTProtocolNATPMP);
    e8832dfa:	00c03633          	snez	a2,a2
    e8832dfe:	85a2                	mv	a1,s0
    e8832e00:	854a                	mv	a0,s2
    e8832e02:	86cff0ef          	jal	ra,e8831e6e <uDNS_SendNATMsg>
}
    e8832e06:	60e6                	ld	ra,88(sp)
    e8832e08:	6446                	ld	s0,80(sp)
    e8832e0a:	8526                	mv	a0,s1
    e8832e0c:	6906                	ld	s2,64(sp)
    e8832e0e:	64a6                	ld	s1,72(sp)
    e8832e10:	79e2                	ld	s3,56(sp)
    e8832e12:	7a42                	ld	s4,48(sp)
    e8832e14:	7aa2                	ld	s5,40(sp)
    e8832e16:	7b02                	ld	s6,32(sp)
    e8832e18:	6be2                	ld	s7,24(sp)
    e8832e1a:	6c42                	ld	s8,16(sp)
    e8832e1c:	6125                	addi	sp,sp,96
    e8832e1e:	8082                	ret
    while (*ptr && *ptr != traversal) ptr=&(*ptr)->next;
    e8832e20:	873e                	mv	a4,a5
    e8832e22:	87b6                	mv	a5,a3
    e8832e24:	bf29                	j	e8832d3e <mDNS_StopNATOperation_internal+0x28>
        if (traversal->Protocol ?
    e8832e26:	03c44683          	lbu	a3,60(s0)
    e8832e2a:	caa5                	beqz	a3,e8832e9a <mDNS_StopNATOperation_internal+0x184>
            ((traversal->Protocol == p->Protocol && mDNSSameIPPort(traversal->IntPort, p->IntPort)) ||
    e8832e2c:	7c10                	ld	a2,56(s0)
    e8832e2e:	7c98                	ld	a4,56(s1)
    e8832e30:	4785                	li	a5,1
    e8832e32:	01467633          	and	a2,a2,s4
    e8832e36:	01477733          	and	a4,a4,s4
    e8832e3a:	00e60f63          	beq	a2,a4,e8832e58 <mDNS_StopNATOperation_internal+0x142>
    e8832e3e:	03c4c703          	lbu	a4,60(s1)
    e8832e42:	4781                	li	a5,0
    e8832e44:	eb11                	bnez	a4,e8832e58 <mDNS_StopNATOperation_internal+0x142>
             (!p->Protocol && traversal->Protocol == NATOp_MapTCP && mDNSSameIPPort(traversal->IntPort, DiscardPort))) :
    e8832e46:	01669963          	bne	a3,s6,e8832e58 <mDNS_StopNATOperation_internal+0x142>
    e8832e4a:	03e45783          	lhu	a5,62(s0)
            (!p->Protocol || (p->Protocol == NATOp_MapTCP && mDNSSameIPPort(p->IntPort, DiscardPort))))
    e8832e4e:	000bd703          	lhu	a4,0(s7)
    e8832e52:	8f99                	sub	a5,a5,a4
    e8832e54:	0017b793          	seqz	a5,a5
        if (traversal->Protocol ?
    e8832e58:	cf9d                	beqz	a5,e8832e96 <mDNS_StopNATOperation_internal+0x180>
            LogInfo("Warning: Removed port mapping request %p Prot %d Int %d TTL %d "
    e8832e5a:	0009a783          	lw	a5,0(s3)
            unmap = mDNSfalse;
    e8832e5e:	4a81                	li	s5,0
            LogInfo("Warning: Removed port mapping request %p Prot %d Int %d TTL %d "
    e8832e60:	cb9d                	beqz	a5,e8832e96 <mDNS_StopNATOperation_internal+0x180>
    e8832e62:	40fc                	lw	a5,68(s1)
    e8832e64:	03c4c883          	lbu	a7,60(s1)
    e8832e68:	03e44703          	lbu	a4,62(s0)
    e8832e6c:	e43e                	sd	a5,8(sp)
    e8832e6e:	03e4c783          	lbu	a5,62(s1)
    e8832e72:	03f4c583          	lbu	a1,63(s1)
    e8832e76:	03f44603          	lbu	a2,63(s0)
    e8832e7a:	0087979b          	slliw	a5,a5,0x8
    e8832e7e:	8fcd                	or	a5,a5,a1
    e8832e80:	e03e                	sd	a5,0(sp)
    e8832e82:	407c                	lw	a5,68(s0)
    e8832e84:	0087171b          	slliw	a4,a4,0x8
    e8832e88:	8f51                	or	a4,a4,a2
    e8832e8a:	8826                	mv	a6,s1
    e8832e8c:	8622                	mv	a2,s0
    e8832e8e:	85e2                	mv	a1,s8
    e8832e90:	450d                	li	a0,3
    e8832e92:	e1afc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (p = m->NATTraversals; p; p=p->next)
    e8832e96:	6084                	ld	s1,0(s1)
    e8832e98:	b725                	j	e8832dc0 <mDNS_StopNATOperation_internal+0xaa>
            (!p->Protocol || (p->Protocol == NATOp_MapTCP && mDNSSameIPPort(p->IntPort, DiscardPort))))
    e8832e9a:	03c4c703          	lbu	a4,60(s1)
    e8832e9e:	4785                	li	a5,1
    e8832ea0:	df45                	beqz	a4,e8832e58 <mDNS_StopNATOperation_internal+0x142>
    e8832ea2:	4781                	li	a5,0
    e8832ea4:	fb671ae3          	bne	a4,s6,e8832e58 <mDNS_StopNATOperation_internal+0x142>
    e8832ea8:	03e4d783          	lhu	a5,62(s1)
    e8832eac:	b74d                	j	e8832e4e <mDNS_StopNATOperation_internal+0x138>
        LogMsg("mDNS_StopNATOperation_internal: NATTraversalInfo %p not found in list", traversal);
    e8832eae:	8622                	mv	a2,s0
    e8832eb0:	0007c597          	auipc	a1,0x7c
    e8832eb4:	8a058593          	addi	a1,a1,-1888 # e88ae750 <__func__.9833+0x7b8>
    e8832eb8:	4501                	li	a0,0
        return(mStatus_BadReferenceErr);
    e8832eba:	74c1                	lui	s1,0xffff0
        LogMsg("mDNS_StopNATOperation_internal: NATTraversalInfo %p not found in list", traversal);
    e8832ebc:	df0fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return(mStatus_BadReferenceErr);
    e8832ec0:	14ed                	addi	s1,s1,-5
    e8832ec2:	b791                	j	e8832e06 <mDNS_StopNATOperation_internal+0xf0>

00000000e8832ec4 <AdvertiseHostname>:
    if (!mDNSIPv4AddressIsZero(m->AdvertisedV4.ip.v4) && h->arv4.resrec.RecordType == kDNSRecordTypeUnregistered)
    e8832ec4:	678d                	lui	a5,0x3
{
    e8832ec6:	715d                	addi	sp,sp,-80
    if (!mDNSIPv4AddressIsZero(m->AdvertisedV4.ip.v4) && h->arv4.resrec.RecordType == kDNSRecordTypeUnregistered)
    e8832ec8:	97aa                	add	a5,a5,a0
{
    e8832eca:	e0a2                	sd	s0,64(sp)
    e8832ecc:	fc26                	sd	s1,56(sp)
    e8832ece:	e486                	sd	ra,72(sp)
    e8832ed0:	f84a                	sd	s2,48(sp)
    e8832ed2:	f44e                	sd	s3,40(sp)
    if (!mDNSIPv4AddressIsZero(m->AdvertisedV4.ip.v4) && h->arv4.resrec.RecordType == kDNSRecordTypeUnregistered)
    e8832ed4:	2287a783          	lw	a5,552(a5) # 3228 <memcmp-0xe87fcdd8>
{
    e8832ed8:	84aa                	mv	s1,a0
    e8832eda:	842e                	mv	s0,a1
    if (!mDNSIPv4AddressIsZero(m->AdvertisedV4.ip.v4) && h->arv4.resrec.RecordType == kDNSRecordTypeUnregistered)
    e8832edc:	cfd5                	beqz	a5,e8832f98 <AdvertiseHostname+0xd4>
    e8832ede:	1685c783          	lbu	a5,360(a1)
    e8832ee2:	ebdd                	bnez	a5,e8832f98 <AdvertiseHostname+0xd4>
        mDNS_SetupResourceRecord(&h->arv4, mDNSNULL, mDNSInterface_Any, kDNSType_A, kHostNameTTL, kDNSRecordTypeUnregistered, AuthRecordAny, HostnameCallback, h);
    e8832ee4:	00070617          	auipc	a2,0x70
    e8832ee8:	e7c60613          	addi	a2,a2,-388 # e88a2d60 <mDNSInterface_Any>
    e8832eec:	6210                	ld	a2,0(a2)
    e8832eee:	16058913          	addi	s2,a1,352
    e8832ef2:	e02e                	sd	a1,0(sp)
    e8832ef4:	00000897          	auipc	a7,0x0
    e8832ef8:	1be88893          	addi	a7,a7,446 # e88330b2 <HostnameCallback>
    e8832efc:	4801                	li	a6,0
    e8832efe:	07800713          	li	a4,120
    e8832f02:	4685                	li	a3,1
    e8832f04:	4581                	li	a1,0
    e8832f06:	854a                	mv	a0,s2
    e8832f08:	ec3e00ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
        AssignDomainName(&h->arv4.namestorage, &h->fqdn);
    e8832f0c:	06040993          	addi	s3,s0,96
    e8832f10:	85ca                	mv	a1,s2
    e8832f12:	854e                	mv	a0,s3
    e8832f14:	a38e00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8832f18:	0005061b          	sext.w	a2,a0
    e8832f1c:	10000793          	li	a5,256
    e8832f20:	14c7e463          	bltu	a5,a2,e8833068 <AdvertiseHostname+0x1a4>
    e8832f24:	85ce                	mv	a1,s3
    e8832f26:	36040513          	addi	a0,s0,864
    e8832f2a:	b77fc0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        h->arv4.resrec.rdata->u.ipv4 = m->AdvertisedV4.ip.v4;
    e8832f2e:	668d                	lui	a3,0x3
    e8832f30:	00d48733          	add	a4,s1,a3
    e8832f34:	19043783          	ld	a5,400(s0)
    e8832f38:	22872703          	lw	a4,552(a4)
        if (mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4))
    e8832f3c:	22868693          	addi	a3,a3,552 # 3228 <memcmp-0xe87fcdd8>
    e8832f40:	96a6                	add	a3,a3,s1
        h->arv4.resrec.rdata->u.ipv4 = m->AdvertisedV4.ip.v4;
    e8832f42:	c3d8                	sw	a4,4(a5)
        h->arv4.state = regState_Unregistered;
    e8832f44:	4791                	li	a5,4
        if (mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4))
    e8832f46:	8536                	mv	a0,a3
        h->arv4.state = regState_Unregistered;
    e8832f48:	2af40623          	sb	a5,684(s0)
        if (mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4))
    e8832f4c:	ec36                	sd	a3,24(sp)
    e8832f4e:	eaddf0ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e8832f52:	66e2                	ld	a3,24(sp)
    e8832f54:	10050d63          	beqz	a0,e883306e <AdvertiseHostname+0x1aa>
            if (h->natinfo.clientContext) mDNS_StopNATOperation_internal(m, &h->natinfo);
    e8832f58:	6c3c                	ld	a5,88(s0)
    e8832f5a:	00840913          	addi	s2,s0,8
    e8832f5e:	c789                	beqz	a5,e8832f68 <AdvertiseHostname+0xa4>
    e8832f60:	85ca                	mv	a1,s2
    e8832f62:	8526                	mv	a0,s1
    e8832f64:	db3ff0ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
            h->natinfo.IntPort          = zeroIPPort;
    e8832f68:	00070797          	auipc	a5,0x70
    e8832f6c:	64078793          	addi	a5,a5,1600 # e88a35a8 <zeroIPPort>
    e8832f70:	0007d783          	lhu	a5,0(a5)
            h->natinfo.Protocol         = 0;
    e8832f74:	04040223          	sb	zero,68(s0)
            h->natinfo.NATLease         = 0;
    e8832f78:	04042623          	sw	zero,76(s0)
            h->natinfo.IntPort          = zeroIPPort;
    e8832f7c:	04f41323          	sh	a5,70(s0)
            h->natinfo.RequestedPort    = zeroIPPort;
    e8832f80:	04f41423          	sh	a5,72(s0)
            h->natinfo.clientCallback   = hostnameGetPublicAddressCallback;
    e8832f84:	ffffe797          	auipc	a5,0xffffe
    e8832f88:	43478793          	addi	a5,a5,1076 # e88313b8 <hostnameGetPublicAddressCallback>
    e8832f8c:	e83c                	sd	a5,80(s0)
            h->natinfo.clientContext    = h;
    e8832f8e:	ec20                	sd	s0,88(s0)
            mDNS_StartNATOperation_internal(m, &h->natinfo);
    e8832f90:	85ca                	mv	a1,s2
    e8832f92:	8526                	mv	a0,s1
    e8832f94:	be3ff0ef          	jal	ra,e8832b76 <mDNS_StartNATOperation_internal>
    if (!mDNSIPv6AddressIsZero(m->AdvertisedV6.ip.v6) && h->arv6.resrec.RecordType == kDNSRecordTypeUnregistered)
    e8832f98:	670d                	lui	a4,0x3
    e8832f9a:	9726                	add	a4,a4,s1
    e8832f9c:	24072683          	lw	a3,576(a4) # 3240 <memcmp-0xe87fcdc0>
    e8832fa0:	23c72783          	lw	a5,572(a4)
    e8832fa4:	8fd5                	or	a5,a5,a3
    e8832fa6:	24472683          	lw	a3,580(a4)
    e8832faa:	24872703          	lw	a4,584(a4)
    e8832fae:	8fd5                	or	a5,a5,a3
    e8832fb0:	8fd9                	or	a5,a5,a4
    e8832fb2:	2781                	sext.w	a5,a5
    e8832fb4:	0e078863          	beqz	a5,e88330a4 <AdvertiseHostname+0x1e0>
    e8832fb8:	57844783          	lbu	a5,1400(s0)
    e8832fbc:	0e079463          	bnez	a5,e88330a4 <AdvertiseHostname+0x1e0>
        mDNS_SetupResourceRecord(&h->arv6, mDNSNULL, mDNSInterface_Any, kDNSType_AAAA, kHostNameTTL, kDNSRecordTypeKnownUnique, AuthRecordAny, HostnameCallback, h);
    e8832fc0:	00070617          	auipc	a2,0x70
    e8832fc4:	da060613          	addi	a2,a2,-608 # e88a2d60 <mDNSInterface_Any>
    e8832fc8:	6210                	ld	a2,0(a2)
    e8832fca:	57040913          	addi	s2,s0,1392
    e8832fce:	02000793          	li	a5,32
    e8832fd2:	00000897          	auipc	a7,0x0
    e8832fd6:	0e088893          	addi	a7,a7,224 # e88330b2 <HostnameCallback>
    e8832fda:	4801                	li	a6,0
    e8832fdc:	07800713          	li	a4,120
    e8832fe0:	46f1                	li	a3,28
    e8832fe2:	4581                	li	a1,0
    e8832fe4:	854a                	mv	a0,s2
    e8832fe6:	e022                	sd	s0,0(sp)
    e8832fe8:	de3e00ef          	jal	ra,e8813dca <mDNS_SetupResourceRecord>
        AssignDomainName(&h->arv6.namestorage, &h->fqdn);
    e8832fec:	06040993          	addi	s3,s0,96
    e8832ff0:	16040593          	addi	a1,s0,352
    e8832ff4:	854e                	mv	a0,s3
    e8832ff6:	956e00ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8832ffa:	0005061b          	sext.w	a2,a0
    e8832ffe:	10000793          	li	a5,256
    e8833002:	08c7ee63          	bltu	a5,a2,e883309e <AdvertiseHostname+0x1da>
    e8833006:	85ce                	mv	a1,s3
    e8833008:	77040513          	addi	a0,s0,1904
    e883300c:	a95fc0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        h->arv6.resrec.rdata->u.ipv6 = m->AdvertisedV6.ip.v6;
    e8833010:	668d                	lui	a3,0x3
    e8833012:	00d48733          	add	a4,s1,a3
    e8833016:	23c73603          	ld	a2,572(a4)
    e883301a:	5a043783          	ld	a5,1440(s0)
    e883301e:	00c7b223          	sd	a2,4(a5)
    e8833022:	24473703          	ld	a4,580(a4)
    e8833026:	00e7b623          	sd	a4,12(a5)
        h->arv6.state = regState_Unregistered;
    e883302a:	4791                	li	a5,4
    e883302c:	6af40e23          	sb	a5,1724(s0)
        LogInfo("Advertising hostname %##s IPv6 %.16a", h->arv6.resrec.name->c, &m->AdvertisedV6.ip.v6);
    e8833030:	000a2797          	auipc	a5,0xa2
    e8833034:	a4478793          	addi	a5,a5,-1468 # e88d4a74 <mDNS_LoggingEnabled>
    e8833038:	439c                	lw	a5,0(a5)
    e883303a:	cf89                	beqz	a5,e8833054 <AdvertiseHostname+0x190>
    e883303c:	59843603          	ld	a2,1432(s0)
    e8833040:	23c68693          	addi	a3,a3,572 # 323c <memcmp-0xe87fcdc4>
    e8833044:	96a6                	add	a3,a3,s1
    e8833046:	00079597          	auipc	a1,0x79
    e883304a:	10a58593          	addi	a1,a1,266 # e88ac150 <kOn.10632+0x208>
    e883304e:	450d                	li	a0,3
    e8833050:	c5cfc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8833054:	6406                	ld	s0,64(sp)
    e8833056:	60a6                	ld	ra,72(sp)
    e8833058:	79a2                	ld	s3,40(sp)
        mDNS_Register_internal(m, &h->arv6);
    e883305a:	85ca                	mv	a1,s2
    e883305c:	8526                	mv	a0,s1
}
    e883305e:	7942                	ld	s2,48(sp)
    e8833060:	74e2                	ld	s1,56(sp)
    e8833062:	6161                	addi	sp,sp,80
        mDNS_Register_internal(m, &h->arv6);
    e8833064:	a17ee06f          	j	e8821a7a <mDNS_Register_internal>
        AssignDomainName(&h->arv4.namestorage, &h->fqdn);
    e8833068:	36040023          	sb	zero,864(s0)
    e883306c:	b5c9                	j	e8832f2e <AdvertiseHostname+0x6a>
            LogInfo("Advertising hostname %##s IPv4 %.4a", h->arv4.resrec.name->c, &m->AdvertisedV4.ip.v4);
    e883306e:	000a2797          	auipc	a5,0xa2
    e8833072:	a0678793          	addi	a5,a5,-1530 # e88d4a74 <mDNS_LoggingEnabled>
    e8833076:	439c                	lw	a5,0(a5)
    e8833078:	cb91                	beqz	a5,e883308c <AdvertiseHostname+0x1c8>
    e883307a:	18843603          	ld	a2,392(s0)
    e883307e:	00079597          	auipc	a1,0x79
    e8833082:	0aa58593          	addi	a1,a1,170 # e88ac128 <kOn.10632+0x1e0>
    e8833086:	450d                	li	a0,3
    e8833088:	c24fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            h->arv4.resrec.RecordType = kDNSRecordTypeKnownUnique;
    e883308c:	02000793          	li	a5,32
    e8833090:	16f40423          	sb	a5,360(s0)
            mDNS_Register_internal(m, &h->arv4);
    e8833094:	85ca                	mv	a1,s2
    e8833096:	8526                	mv	a0,s1
    e8833098:	9e3ee0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    e883309c:	bdf5                	j	e8832f98 <AdvertiseHostname+0xd4>
        AssignDomainName(&h->arv6.namestorage, &h->fqdn);
    e883309e:	76040823          	sb	zero,1904(s0)
    e88330a2:	b7bd                	j	e8833010 <AdvertiseHostname+0x14c>
}
    e88330a4:	60a6                	ld	ra,72(sp)
    e88330a6:	6406                	ld	s0,64(sp)
    e88330a8:	74e2                	ld	s1,56(sp)
    e88330aa:	7942                	ld	s2,48(sp)
    e88330ac:	79a2                	ld	s3,40(sp)
    e88330ae:	6161                	addi	sp,sp,80
    e88330b0:	8082                	ret

00000000e88330b2 <HostnameCallback>:
{
    e88330b2:	7179                	addi	sp,sp,-48
    e88330b4:	e422                	sd	s0,8(sp)
    e88330b6:	ec4a                	sd	s2,24(sp)
    e88330b8:	f406                	sd	ra,40(sp)
    e88330ba:	e826                	sd	s1,16(sp)
    e88330bc:	f04e                	sd	s3,32(sp)
    if (result == mStatus_MemFree)
    e88330be:	77c1                	lui	a5,0xffff0
    e88330c0:	f0078793          	addi	a5,a5,-256 # fffffffffffeff00 <__DRAM0_INF_BASE+0xfffffffeffffff00>
{
    e88330c4:	892a                	mv	s2,a0
    e88330c6:	842e                	mv	s0,a1
    HostnameInfo *hi = (HostnameInfo *)rr->RecordContext;
    e88330c8:	79a4                	ld	s1,112(a1)
    if (result == mStatus_MemFree)
    e88330ca:	0af61e63          	bne	a2,a5,e8833186 <HostnameCallback+0xd4>
        if (hi)
    e88330ce:	12048463          	beqz	s1,e88331f6 <HostnameCallback+0x144>
            LogInfo("HostnameCallback: Got mStatus_MemFree for %p %p %s", hi, rr, ARDisplayString(m, rr));
    e88330d2:	000a2797          	auipc	a5,0xa2
    e88330d6:	9a278793          	addi	a5,a5,-1630 # e88d4a74 <mDNS_LoggingEnabled>
    e88330da:	439c                	lw	a5,0(a5)
    e88330dc:	c39d                	beqz	a5,e8833102 <HostnameCallback+0x50>
    e88330de:	798c                	ld	a1,48(a1)
    e88330e0:	03b50613          	addi	a2,a0,59 # ffffffffffff003b <__DRAM0_INF_BASE+0xffffffff0000003b>
    e88330e4:	00840513          	addi	a0,s0,8
    e88330e8:	0591                	addi	a1,a1,4
    e88330ea:	92be30ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88330ee:	872a                	mv	a4,a0
    e88330f0:	86a2                	mv	a3,s0
    e88330f2:	8626                	mv	a2,s1
    e88330f4:	00079597          	auipc	a1,0x79
    e88330f8:	7d458593          	addi	a1,a1,2004 # e88ac8c8 <kOn.10632+0x980>
    e88330fc:	450d                	li	a0,3
    e88330fe:	baefc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            for (i = m->Hostnames; i; i = i->next)
    e8833102:	6791                	lui	a5,0x4
    e8833104:	97ca                	add	a5,a5,s2
    e8833106:	b087b983          	ld	s3,-1272(a5) # 3b08 <memcmp-0xe87fc4f8>
    e883310a:	02099b63          	bnez	s3,e8833140 <HostnameCallback+0x8e>
            if (hi->arv4.resrec.RecordType == kDNSRecordTypeUnregistered &&
    e883310e:	1684c783          	lbu	a5,360(s1) # ffffffffffff0168 <__DRAM0_INF_BASE+0xffffffff00000168>
    e8833112:	0e079263          	bnez	a5,e88331f6 <HostnameCallback+0x144>
    e8833116:	5784c783          	lbu	a5,1400(s1)
    e883311a:	eff1                	bnez	a5,e88331f6 <HostnameCallback+0x144>
                if (hi->natinfo.clientContext) mDNS_StopNATOperation_internal(m, &hi->natinfo);
    e883311c:	6cbc                	ld	a5,88(s1)
    e883311e:	c791                	beqz	a5,e883312a <HostnameCallback+0x78>
    e8833120:	00848593          	addi	a1,s1,8
    e8833124:	854a                	mv	a0,s2
    e8833126:	bf1ff0ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
                hi->natinfo.clientContext = mDNSNULL;
    e883312a:	0404bc23          	sd	zero,88(s1)
                mDNSPlatformMemFree(hi);    // free hi when both v4 and v6 AuthRecs deallocated
    e883312e:	8526                	mv	a0,s1
}
    e8833130:	6422                	ld	s0,8(sp)
    e8833132:	70a2                	ld	ra,40(sp)
    e8833134:	64c2                	ld	s1,16(sp)
    e8833136:	6962                	ld	s2,24(sp)
    e8833138:	7982                	ld	s3,32(sp)
    e883313a:	6145                	addi	sp,sp,48
        if (!hi) { mDNSPlatformMemFree(rr); return; }
    e883313c:	946fd06f          	j	e8830282 <mDNSPlatformMemFree>
                if (rr == &i->arv4 || rr == &i->arv6)
    e8833140:	16098793          	addi	a5,s3,352
    e8833144:	00f40663          	beq	s0,a5,e8833150 <HostnameCallback+0x9e>
    e8833148:	57098793          	addi	a5,s3,1392
    e883314c:	02f41a63          	bne	s0,a5,e8833180 <HostnameCallback+0xce>
                { mDNS_Lock(m); AdvertiseHostname(m, i); mDNS_Unlock(m); return; }
    e8833150:	854a                	mv	a0,s2
    e8833152:	0007b597          	auipc	a1,0x7b
    e8833156:	d2658593          	addi	a1,a1,-730 # e88ade78 <__func__.9319>
    e883315a:	8a9e20ef          	jal	ra,e8815a02 <mDNS_Lock_>
    e883315e:	85ce                	mv	a1,s3
    e8833160:	854a                	mv	a0,s2
    e8833162:	d63ff0ef          	jal	ra,e8832ec4 <AdvertiseHostname>
}
    e8833166:	6422                	ld	s0,8(sp)
    e8833168:	70a2                	ld	ra,40(sp)
    e883316a:	64c2                	ld	s1,16(sp)
    e883316c:	7982                	ld	s3,32(sp)
                { mDNS_Lock(m); AdvertiseHostname(m, i); mDNS_Unlock(m); return; }
    e883316e:	854a                	mv	a0,s2
}
    e8833170:	6962                	ld	s2,24(sp)
                { mDNS_Lock(m); AdvertiseHostname(m, i); mDNS_Unlock(m); return; }
    e8833172:	0007b597          	auipc	a1,0x7b
    e8833176:	d0658593          	addi	a1,a1,-762 # e88ade78 <__func__.9319>
}
    e883317a:	6145                	addi	sp,sp,48
                { mDNS_Lock(m); AdvertiseHostname(m, i); mDNS_Unlock(m); return; }
    e883317c:	951e206f          	j	e8815acc <mDNS_Unlock_>
            for (i = m->Hostnames; i; i = i->next)
    e8833180:	0009b983          	ld	s3,0(s3)
    e8833184:	b759                	j	e883310a <HostnameCallback+0x58>
    e8833186:	89b2                	mv	s3,a2
    if (result)
    e8833188:	ce35                	beqz	a2,e8833204 <HostnameCallback+0x152>
        if (rr->resrec.rrtype == kDNSType_A)
    e883318a:	7998                	ld	a4,48(a1)
    e883318c:	7594                	ld	a3,40(a1)
    e883318e:	00a5d583          	lhu	a1,10(a1)
    e8833192:	4785                	li	a5,1
    e8833194:	0711                	addi	a4,a4,4
    e8833196:	00f59c63          	bne	a1,a5,e88331ae <HostnameCallback+0xfc>
            LogMsg("HostnameCallback: Error %d for registration of %##s IP %.4a", result, rr->resrec.name->c, &rr->resrec.rdata->u.ipv4);
    e883319a:	00079597          	auipc	a1,0x79
    e883319e:	76658593          	addi	a1,a1,1894 # e88ac900 <kOn.10632+0x9b8>
            LogMsg("HostnameCallback: Error %d for registration of %##s IP %.16a", result, rr->resrec.name->c, &rr->resrec.rdata->u.ipv6);
    e88331a2:	4501                	li	a0,0
    e88331a4:	b08fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!hi) { mDNSPlatformMemFree(rr); return; }
    e88331a8:	e881                	bnez	s1,e88331b8 <HostnameCallback+0x106>
    e88331aa:	8522                	mv	a0,s0
    e88331ac:	b751                	j	e8833130 <HostnameCallback+0x7e>
            LogMsg("HostnameCallback: Error %d for registration of %##s IP %.16a", result, rr->resrec.name->c, &rr->resrec.rdata->u.ipv6);
    e88331ae:	00079597          	auipc	a1,0x79
    e88331b2:	79258593          	addi	a1,a1,1938 # e88ac940 <kOn.10632+0x9f8>
    e88331b6:	b7f5                	j	e88331a2 <HostnameCallback+0xf0>
        if (rr->state != regState_Unregistered) LogMsg("Error: HostnameCallback invoked with error code for record not in regState_Unregistered!");
    e88331b8:	14c44703          	lbu	a4,332(s0)
    e88331bc:	4791                	li	a5,4
    e88331be:	00f70963          	beq	a4,a5,e88331d0 <HostnameCallback+0x11e>
    e88331c2:	00079597          	auipc	a1,0x79
    e88331c6:	7be58593          	addi	a1,a1,1982 # e88ac980 <kOn.10632+0xa38>
    e88331ca:	4501                	li	a0,0
    e88331cc:	ae0fc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (hi->arv4.state == regState_Unregistered &&
    e88331d0:	2ac4c783          	lbu	a5,684(s1)
    e88331d4:	4711                	li	a4,4
    e88331d6:	02e79063          	bne	a5,a4,e88331f6 <HostnameCallback+0x144>
    e88331da:	6bc4c703          	lbu	a4,1724(s1)
    e88331de:	00f71c63          	bne	a4,a5,e88331f6 <HostnameCallback+0x144>
            rr->RecordContext = (void *)hi->StatusContext;
    e88331e2:	6785                	lui	a5,0x1
    e88331e4:	97a6                	add	a5,a5,s1
    e88331e6:	9887b703          	ld	a4,-1656(a5) # 988 <memcmp-0xe87ff678>
                hi->StatusCallback(m, rr, result); // client may NOT make API calls here
    e88331ea:	864e                	mv	a2,s3
            rr->RecordContext = (void *)hi->StatusContext;
    e88331ec:	f838                	sd	a4,112(s0)
            if (hi->StatusCallback)
    e88331ee:	9807b783          	ld	a5,-1664(a5)
    e88331f2:	ebd1                	bnez	a5,e8833286 <HostnameCallback+0x1d4>
    rr->RecordContext = (void *)hi;
    e88331f4:	f824                	sd	s1,112(s0)
}
    e88331f6:	70a2                	ld	ra,40(sp)
    e88331f8:	6422                	ld	s0,8(sp)
    e88331fa:	64c2                	ld	s1,16(sp)
    e88331fc:	6962                	ld	s2,24(sp)
    e88331fe:	7982                	ld	s3,32(sp)
    e8833200:	6145                	addi	sp,sp,48
    e8833202:	8082                	ret
    mDNS_Lock(m);
    e8833204:	0007b597          	auipc	a1,0x7b
    e8833208:	c7458593          	addi	a1,a1,-908 # e88ade78 <__func__.9319>
    e883320c:	ff6e20ef          	jal	ra,e8815a02 <mDNS_Lock_>
    m->NextSRVUpdate = NonZeroTime(m->timenow);
    e8833210:	24092703          	lw	a4,576(s2)
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e8833214:	e311                	bnez	a4,e8833218 <HostnameCallback+0x166>
    e8833216:	4705                	li	a4,1
    e8833218:	678d                	lui	a5,0x3
    e883321a:	97ca                	add	a5,a5,s2
    e883321c:	1ee7ae23          	sw	a4,508(a5) # 31fc <memcmp-0xe87fce04>
    mDNS_Unlock(m);
    e8833220:	0007b597          	auipc	a1,0x7b
    e8833224:	c5858593          	addi	a1,a1,-936 # e88ade78 <__func__.9319>
    e8833228:	854a                	mv	a0,s2
    e883322a:	8a3e20ef          	jal	ra,e8815acc <mDNS_Unlock_>
    if (!hi) { LogMsg("HostnameCallback invoked with orphaned address record"); return; }
    e883322e:	ec91                	bnez	s1,e883324a <HostnameCallback+0x198>
}
    e8833230:	6422                	ld	s0,8(sp)
    e8833232:	70a2                	ld	ra,40(sp)
    e8833234:	64c2                	ld	s1,16(sp)
    e8833236:	6962                	ld	s2,24(sp)
    e8833238:	7982                	ld	s3,32(sp)
    if (!hi) { LogMsg("HostnameCallback invoked with orphaned address record"); return; }
    e883323a:	00079597          	auipc	a1,0x79
    e883323e:	7a658593          	addi	a1,a1,1958 # e88ac9e0 <kOn.10632+0xa98>
    e8833242:	4501                	li	a0,0
}
    e8833244:	6145                	addi	sp,sp,48
    if (!hi) { LogMsg("HostnameCallback invoked with orphaned address record"); return; }
    e8833246:	a66fc06f          	j	e882f4ac <LogMsgWithLevel>
    if (rr->resrec.rrtype == kDNSType_A)
    e883324a:	00a45683          	lhu	a3,10(s0)
    e883324e:	000a2797          	auipc	a5,0xa2
    e8833252:	82678793          	addi	a5,a5,-2010 # e88d4a74 <mDNS_LoggingEnabled>
    e8833256:	4705                	li	a4,1
    e8833258:	439c                	lw	a5,0(a5)
    e883325a:	02e69a63          	bne	a3,a4,e883328e <HostnameCallback+0x1dc>
        LogInfo("Registered hostname %##s IP %.4a", rr->resrec.name->c, &rr->resrec.rdata->u.ipv4);
    e883325e:	cb99                	beqz	a5,e8833274 <HostnameCallback+0x1c2>
    e8833260:	7814                	ld	a3,48(s0)
    e8833262:	7410                	ld	a2,40(s0)
    e8833264:	00079597          	auipc	a1,0x79
    e8833268:	7b458593          	addi	a1,a1,1972 # e88aca18 <kOn.10632+0xad0>
    e883326c:	0691                	addi	a3,a3,4
        LogInfo("Registered hostname %##s IP %.16a", rr->resrec.name->c, &rr->resrec.rdata->u.ipv6);
    e883326e:	450d                	li	a0,3
    e8833270:	a3cfc0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    rr->RecordContext = (void *)hi->StatusContext;
    e8833274:	6785                	lui	a5,0x1
    e8833276:	97a6                	add	a5,a5,s1
    e8833278:	9887b703          	ld	a4,-1656(a5) # 988 <memcmp-0xe87ff678>
    e883327c:	f838                	sd	a4,112(s0)
    if (hi->StatusCallback)
    e883327e:	9807b783          	ld	a5,-1664(a5)
    e8833282:	dbad                	beqz	a5,e88331f4 <HostnameCallback+0x142>
        hi->StatusCallback(m, rr, result); // client may NOT make API calls here
    e8833284:	4601                	li	a2,0
    e8833286:	85a2                	mv	a1,s0
    e8833288:	854a                	mv	a0,s2
    e883328a:	9782                	jalr	a5
    e883328c:	b7a5                	j	e88331f4 <HostnameCallback+0x142>
        LogInfo("Registered hostname %##s IP %.16a", rr->resrec.name->c, &rr->resrec.rdata->u.ipv6);
    e883328e:	d3fd                	beqz	a5,e8833274 <HostnameCallback+0x1c2>
    e8833290:	7814                	ld	a3,48(s0)
    e8833292:	7410                	ld	a2,40(s0)
    e8833294:	00079597          	auipc	a1,0x79
    e8833298:	7ac58593          	addi	a1,a1,1964 # e88aca40 <kOn.10632+0xaf8>
    e883329c:	0691                	addi	a3,a3,4
    e883329e:	bfc1                	j	e883326e <HostnameCallback+0x1bc>

00000000e88332a0 <uDNS_recvLLQResponse>:
{
    e88332a0:	c2010113          	addi	sp,sp,-992
    e88332a4:	3b513423          	sd	s5,936(sp)
    e88332a8:	3c113c23          	sd	ra,984(sp)
    e88332ac:	3c813823          	sd	s0,976(sp)
    e88332b0:	3c913423          	sd	s1,968(sp)
    e88332b4:	3d213023          	sd	s2,960(sp)
    e88332b8:	3b313c23          	sd	s3,952(sp)
    e88332bc:	3b413823          	sd	s4,944(sp)
    e88332c0:	3b613023          	sd	s6,928(sp)
    e88332c4:	39713c23          	sd	s7,920(sp)
    e88332c8:	39813823          	sd	s8,912(sp)
    e88332cc:	39913423          	sd	s9,904(sp)
    e88332d0:	39a13023          	sd	s10,896(sp)
    e88332d4:	37b13c23          	sd	s11,888(sp)
    e88332d8:	8abe                	mv	s5,a5
    if (msg->h.numQuestions && getQuestion(msg, msg->data, end, 0, &pktQ))
    e88332da:	0045d783          	lhu	a5,4(a1)
    e88332de:	cf8d                	beqz	a5,e8833318 <uDNS_recvLLQResponse+0x78>
    e88332e0:	8a2e                	mv	s4,a1
    e88332e2:	892a                	mv	s2,a0
    e88332e4:	8c36                	mv	s8,a3
    e88332e6:	8cba                	mv	s9,a4
    e88332e8:	4681                	li	a3,0
    e88332ea:	0838                	addi	a4,sp,24
    e88332ec:	05b1                	addi	a1,a1,12
    e88332ee:	8552                	mv	a0,s4
    e88332f0:	8432                	mv	s0,a2
    e88332f2:	d4ae20ef          	jal	ra,e881583c <getQuestion>
    e88332f6:	c10d                	beqz	a0,e8833318 <uDNS_recvLLQResponse+0x78>
        const rdataOPT *opt = GetLLQOptData(m, msg, end);
    e88332f8:	8622                	mv	a2,s0
    e88332fa:	85d2                	mv	a1,s4
    e88332fc:	854a                	mv	a0,s2
    e88332fe:	d33e30ef          	jal	ra,e8817030 <GetLLQOptData>
        for (q = m->Questions; q; q = q->next)
    e8833302:	2b893403          	ld	s0,696(s2)
        const rdataOPT *opt = GetLLQOptData(m, msg, end);
    e8833306:	84aa                	mv	s1,a0
                if (q->state == LLQ_Poll && mDNSSameOpaque16(msg->h.id, q->TargetQID))
    e8833308:	4d91                	li	s11,4
                else if (opt && q->state == LLQ_Established && opt->u.llq.llqOp == kLLQOp_Event && mDNSSameOpaque64(&opt->u.llq.id, &q->id))
    e883330a:	4b8d                	li	s7,3
                    if (q->state < LLQ_Established && mDNSSameAddress(srcaddr, &q->servAddr))
    e883330c:	4d09                	li	s10,2
        for (q = m->Questions; q; q = q->next)
    e883330e:	e809                	bnez	s0,e8833320 <uDNS_recvLLQResponse+0x80>
        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8833310:	67a5                	lui	a5,0x9
    e8833312:	993e                	add	s2,s2,a5
    e8833314:	4e090023          	sb	zero,1248(s2)
    *matchQuestion = mDNSNULL;
    e8833318:	000ab023          	sd	zero,0(s5)
    return uDNS_LLQ_Not;
    e883331c:	4981                	li	s3,0
    e883331e:	a0cd                	j	e8833400 <uDNS_recvLLQResponse+0x160>
            if (!mDNSOpaque16IsZero(q->TargetQID) && q->LongLived && q->qtype == pktQ.qtype && q->qnamehash == pktQ.qnamehash && SameDomainName(&q->qname, &pktQ.qname))
    e8833320:	21245783          	lhu	a5,530(s0)
    e8833324:	3a078d63          	beqz	a5,e88336de <uDNS_recvLLQResponse+0x43e>
    e8833328:	31844783          	lbu	a5,792(s0)
    e883332c:	3a078963          	beqz	a5,e88336de <uDNS_recvLLQResponse+0x43e>
    e8833330:	31445703          	lhu	a4,788(s0)
    e8833334:	32c15783          	lhu	a5,812(sp)
    e8833338:	3af71363          	bne	a4,a5,e88336de <uDNS_recvLLQResponse+0x43e>
    e883333c:	4418                	lw	a4,8(s0)
    e883333e:	5782                	lw	a5,32(sp)
    e8833340:	38f71f63          	bne	a4,a5,e88336de <uDNS_recvLLQResponse+0x43e>
    e8833344:	21440b13          	addi	s6,s0,532
    e8833348:	146c                	addi	a1,sp,556
    e883334a:	855a                	mv	a0,s6
    e883334c:	cffdf0ef          	jal	ra,e881304a <SameDomainName>
    e8833350:	38050763          	beqz	a0,e88336de <uDNS_recvLLQResponse+0x43e>
                if (q->state == LLQ_Poll) debugf("uDNS_LLQ_Events: q->state == LLQ_Poll msg->h.id %d q->TargetQID %d", mDNSVal16(msg->h.id), mDNSVal16(q->TargetQID));
    e8833354:	1b444983          	lbu	s3,436(s0)
                if (q->state == LLQ_Poll && mDNSSameOpaque16(msg->h.id, q->TargetQID))
    e8833358:	0fb99263          	bne	s3,s11,e883343c <uDNS_recvLLQResponse+0x19c>
    e883335c:	000a5703          	lhu	a4,0(s4) # fffffffff00ff000 <__DRAM0_INF_BASE+0xfffffffef010f000>
    e8833360:	21245783          	lhu	a5,530(s0)
    e8833364:	0cf71c63          	bne	a4,a5,e883343c <uDNS_recvLLQResponse+0x19c>
                    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8833368:	67a5                	lui	a5,0x9
    e883336a:	97ca                	add	a5,a5,s2
    e883336c:	4e078023          	sb	zero,1248(a5) # 94e0 <memcmp-0xe87f6b20>
                    if (!mDNSAddressIsOnes(&q->servAddr) && !mDNSIPPortIsZero(m->LLQNAT.ExternalPort) &&
    e8833370:	57fd                	li	a5,-1
    e8833372:	19043703          	ld	a4,400(s0)
    e8833376:	1782                	slli	a5,a5,0x20
    e8833378:	0791                	addi	a5,a5,4
    e883337a:	04f70163          	beq	a4,a5,e88333bc <uDNS_recvLLQResponse+0x11c>
    e883337e:	19042703          	lw	a4,400(s0)
    e8833382:	4799                	li	a5,6
    e8833384:	02f71163          	bne	a4,a5,e88333a6 <uDNS_recvLLQResponse+0x106>
    e8833388:	19842703          	lw	a4,408(s0)
    e883338c:	19442783          	lw	a5,404(s0)
    e8833390:	8ff9                	and	a5,a5,a4
    e8833392:	19c42703          	lw	a4,412(s0)
    e8833396:	8ff9                	and	a5,a5,a4
    e8833398:	1a042703          	lw	a4,416(s0)
    e883339c:	8ff9                	and	a5,a5,a4
    e883339e:	2781                	sext.w	a5,a5
    e88333a0:	577d                	li	a4,-1
    e88333a2:	00e78d63          	beq	a5,a4,e88333bc <uDNS_recvLLQResponse+0x11c>
    e88333a6:	6791                	lui	a5,0x4
    e88333a8:	97ca                	add	a5,a5,s2
    e88333aa:	bc87d703          	lhu	a4,-1080(a5) # 3bc8 <memcmp-0xe87fc438>
    e88333ae:	c719                	beqz	a4,e88333bc <uDNS_recvLLQResponse+0x11c>
    e88333b0:	bd07a783          	lw	a5,-1072(a5)
    e88333b4:	e781                	bnez	a5,e88333bc <uDNS_recvLLQResponse+0x11c>
                        q->state         = LLQ_InitialRequest;
    e88333b6:	4785                	li	a5,1
    e88333b8:	1af40a23          	sb	a5,436(s0)
                    q->servPort      = zeroIPPort;      // Clear servPort so that startLLQHandshake will retry the GetZoneData processing
    e88333bc:	00070797          	auipc	a5,0x70
    e88333c0:	1ec78793          	addi	a5,a5,492 # e88a35a8 <zeroIPPort>
    e88333c4:	0007d783          	lhu	a5,0(a5)
                    q->ThisQInterval = LLQ_POLL_INTERVAL + mDNSRandom(LLQ_POLL_INTERVAL/10);    // Retry LLQ setup in approx 15 minutes
    e88333c8:	38400493          	li	s1,900
                    return uDNS_LLQ_Entire;     // uDNS_LLQ_Entire means flush stale records; assume a large effective TTL
    e88333cc:	4989                	li	s3,2
                    q->servPort      = zeroIPPort;      // Clear servPort so that startLLQHandshake will retry the GetZoneData processing
    e88333ce:	1af41223          	sh	a5,420(s0)
                    q->ThisQInterval = LLQ_POLL_INTERVAL + mDNSRandom(LLQ_POLL_INTERVAL/10);    // Retry LLQ setup in approx 15 minutes
    e88333d2:	000a1797          	auipc	a5,0xa1
    e88333d6:	6ae78793          	addi	a5,a5,1710 # e88d4a80 <mDNSPlatformOneSecond>
    e88333da:	4388                	lw	a0,0(a5)
    e88333dc:	02a484bb          	mulw	s1,s1,a0
    e88333e0:	4529                	li	a0,10
    e88333e2:	02a4c53b          	divw	a0,s1,a0
    e88333e6:	b23df0ef          	jal	ra,e8812f08 <mDNSRandom>
    e88333ea:	9d25                	addw	a0,a0,s1
    e88333ec:	c848                	sw	a0,20(s0)
                    q->LastQTime     = m->timenow;
    e88333ee:	24092783          	lw	a5,576(s2)
                    SetNextQueryTime(m, q);
    e88333f2:	85a2                	mv	a1,s0
    e88333f4:	854a                	mv	a0,s2
                    q->LastQTime     = m->timenow;
    e88333f6:	c81c                	sw	a5,16(s0)
                    SetNextQueryTime(m, q);
    e88333f8:	e75ea0ef          	jal	ra,e881e26c <SetNextQueryTime>
                    *matchQuestion = q;
    e88333fc:	008ab023          	sd	s0,0(s5)
}
    e8833400:	3d813083          	ld	ra,984(sp)
    e8833404:	3d013403          	ld	s0,976(sp)
    e8833408:	854e                	mv	a0,s3
    e883340a:	3c813483          	ld	s1,968(sp)
    e883340e:	3c013903          	ld	s2,960(sp)
    e8833412:	3b813983          	ld	s3,952(sp)
    e8833416:	3b013a03          	ld	s4,944(sp)
    e883341a:	3a813a83          	ld	s5,936(sp)
    e883341e:	3a013b03          	ld	s6,928(sp)
    e8833422:	39813b83          	ld	s7,920(sp)
    e8833426:	39013c03          	ld	s8,912(sp)
    e883342a:	38813c83          	ld	s9,904(sp)
    e883342e:	38013d03          	ld	s10,896(sp)
    e8833432:	37813d83          	ld	s11,888(sp)
    e8833436:	3e010113          	addi	sp,sp,992
    e883343a:	8082                	ret
                else if (opt && q->state == LLQ_Established && opt->u.llq.llqOp == kLLQOp_Event && mDNSSameOpaque64(&opt->u.llq.id, &q->id))
    e883343c:	2a048163          	beqz	s1,e88336de <uDNS_recvLLQResponse+0x43e>
    e8833440:	09799163          	bne	s3,s7,e88334c2 <uDNS_recvLLQResponse+0x222>
    e8833444:	0064d783          	lhu	a5,6(s1)
    e8833448:	07379d63          	bne	a5,s3,e88334c2 <uDNS_recvLLQResponse+0x222>
    e883344c:	44d8                	lw	a4,12(s1)
    e883344e:	1dc42783          	lw	a5,476(s0)
    e8833452:	06f71863          	bne	a4,a5,e88334c2 <uDNS_recvLLQResponse+0x222>
    e8833456:	4898                	lw	a4,16(s1)
    e8833458:	1e042783          	lw	a5,480(s0)
    e883345c:	06f71363          	bne	a4,a5,e88334c2 <uDNS_recvLLQResponse+0x222>
                    InitializeDNSMessage(&m->omsg.h, msg->h.id, ResponseFlags);
    e8833460:	0006f797          	auipc	a5,0x6f
    e8833464:	32078793          	addi	a5,a5,800 # e88a2780 <ResponseFlags>
    e8833468:	6b9d                	lui	s7,0x7
    e883346a:	0007d603          	lhu	a2,0(a5)
    e883346e:	000a5583          	lhu	a1,0(s4)
    e8833472:	1e0b8b13          	addi	s6,s7,480 # 71e0 <memcmp-0xe87f8e20>
    e8833476:	9b4a                	add	s6,s6,s2
    e8833478:	855a                	mv	a0,s6
    e883347a:	9d2e10ef          	jal	ra,e881464c <InitializeDNSMessage>
                    ackEnd = putLLQ(&m->omsg, m->omsg.data, q, &opt->u.llq);
    e883347e:	1ecb8593          	addi	a1,s7,492
    e8833482:	8622                	mv	a2,s0
    e8833484:	00448693          	addi	a3,s1,4
    e8833488:	95ca                	add	a1,a1,s2
    e883348a:	855a                	mv	a0,s6
    e883348c:	97ffd0ef          	jal	ra,e8830e0a <putLLQ>
    e8833490:	862a                	mv	a2,a0
                    if (ackEnd) mDNSSendDNSMessage(m, &m->omsg, ackEnd, mDNSInterface_Any, q->LocalSocket, srcaddr, srcport, mDNSNULL, mDNSNULL, mDNSfalse);
    e8833492:	c10d                	beqz	a0,e88334b4 <uDNS_recvLLQResponse+0x214>
    e8833494:	00070697          	auipc	a3,0x70
    e8833498:	8cc68693          	addi	a3,a3,-1844 # e88a2d60 <mDNSInterface_Any>
    e883349c:	16043703          	ld	a4,352(s0)
    e88334a0:	6294                	ld	a3,0(a3)
    e88334a2:	e402                	sd	zero,8(sp)
    e88334a4:	e002                	sd	zero,0(sp)
    e88334a6:	4881                	li	a7,0
    e88334a8:	8866                	mv	a6,s9
    e88334aa:	87e2                	mv	a5,s8
    e88334ac:	85da                	mv	a1,s6
    e88334ae:	854a                	mv	a0,s2
    e88334b0:	a02e40ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
                    m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e88334b4:	67a5                	lui	a5,0x9
    e88334b6:	993e                	add	s2,s2,a5
    e88334b8:	4e090023          	sb	zero,1248(s2)
                    *matchQuestion = q;
    e88334bc:	008ab023          	sd	s0,0(s5)
                    return uDNS_LLQ_Events;
    e88334c0:	b781                	j	e8833400 <uDNS_recvLLQResponse+0x160>
                if (opt && mDNSSameOpaque16(msg->h.id, q->TargetQID))
    e88334c2:	000a5703          	lhu	a4,0(s4)
    e88334c6:	21245783          	lhu	a5,530(s0)
    e88334ca:	20f71a63          	bne	a4,a5,e88336de <uDNS_recvLLQResponse+0x43e>
                    if (q->state == LLQ_Established && opt->u.llq.llqOp == kLLQOp_Refresh && mDNSSameOpaque64(&opt->u.llq.id, &q->id) && msg->h.numAdditionals && !msg->h.numAnswers)
    e88334ce:	09799063          	bne	s3,s7,e883354e <uDNS_recvLLQResponse+0x2ae>
    e88334d2:	0064d783          	lhu	a5,6(s1)
    e88334d6:	21a79463          	bne	a5,s10,e88336de <uDNS_recvLLQResponse+0x43e>
    e88334da:	44d8                	lw	a4,12(s1)
    e88334dc:	1dc42783          	lw	a5,476(s0)
    e88334e0:	1ef71f63          	bne	a4,a5,e88336de <uDNS_recvLLQResponse+0x43e>
    e88334e4:	4898                	lw	a4,16(s1)
    e88334e6:	1e042783          	lw	a5,480(s0)
    e88334ea:	1ef71a63          	bne	a4,a5,e88336de <uDNS_recvLLQResponse+0x43e>
    e88334ee:	00aa5783          	lhu	a5,10(s4)
    e88334f2:	1e078663          	beqz	a5,e88336de <uDNS_recvLLQResponse+0x43e>
    e88334f6:	006a5783          	lhu	a5,6(s4)
    e88334fa:	1e079263          	bnez	a5,e88336de <uDNS_recvLLQResponse+0x43e>
                        if (opt->u.llq.err != LLQErr_NoError) LogMsg("recvRefreshReply: received error %d from server", opt->u.llq.err);
    e88334fe:	0084d603          	lhu	a2,8(s1)
    e8833502:	c205                	beqz	a2,e8833522 <uDNS_recvLLQResponse+0x282>
    e8833504:	0007d597          	auipc	a1,0x7d
    e8833508:	6cc58593          	addi	a1,a1,1740 # e88b0bd0 <__func__.9833+0x2c38>
    e883350c:	4501                	li	a0,0
    e883350e:	f9ffb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e8833512:	67a5                	lui	a5,0x9
    e8833514:	993e                	add	s2,s2,a5
    e8833516:	4e090023          	sb	zero,1248(s2)
                        *matchQuestion = q;
    e883351a:	008ab023          	sd	s0,0(s5)
                        return (oldstate == LLQ_SecondaryRequest ? uDNS_LLQ_Entire : uDNS_LLQ_Ignore);
    e883351e:	4985                	li	s3,1
    e8833520:	b5c5                	j	e8833400 <uDNS_recvLLQResponse+0x160>
                            if (opt->u.llq.llqlease == 0 && m->SleepLimit) m->NextScheduledSPRetry = m->timenow;
    e8833522:	48dc                	lw	a5,20(s1)
    e8833524:	eb81                	bnez	a5,e8833534 <uDNS_recvLLQResponse+0x294>
    e8833526:	29492783          	lw	a5,660(s2)
    e883352a:	c789                	beqz	a5,e8833534 <uDNS_recvLLQResponse+0x294>
    e883352c:	24092783          	lw	a5,576(s2)
    e8833530:	2af92423          	sw	a5,680(s2)
                            GrantCacheExtensions(m, q, opt->u.llq.llqlease);
    e8833534:	48d0                	lw	a2,20(s1)
    e8833536:	85a2                	mv	a1,s0
    e8833538:	854a                	mv	a0,s2
    e883353a:	9d9ed0ef          	jal	ra,e8820f12 <GrantCacheExtensions>
                            SetLLQTimer(m, q, &opt->u.llq);
    e883353e:	48d0                	lw	a2,20(s1)
    e8833540:	85a2                	mv	a1,s0
    e8833542:	854a                	mv	a0,s2
    e8833544:	8ddfe0ef          	jal	ra,e8831e20 <SetLLQTimer.isra.3>
                            q->ntries = 0;
    e8833548:	1c041023          	sh	zero,448(s0)
    e883354c:	b7d9                	j	e8833512 <uDNS_recvLLQResponse+0x272>
                    if (q->state < LLQ_Established && mDNSSameAddress(srcaddr, &q->servAddr))
    e883354e:	193d6863          	bltu	s10,s3,e88336de <uDNS_recvLLQResponse+0x43e>
    e8833552:	19040593          	addi	a1,s0,400
    e8833556:	8562                	mv	a0,s8
    e8833558:	9e3df0ef          	jal	ra,e8812f3a <mDNSSameAddress>
    e883355c:	18050163          	beqz	a0,e88336de <uDNS_recvLLQResponse+0x43e>
                        recvSetupResponse(m, msg->h.flags.b[1] & kDNSFlag1_RC_Mask, q, &opt->u.llq);
    e8833560:	003a4783          	lbu	a5,3(s4)
                        LLQ_State oldstate = q->state;
    e8833564:	1b444983          	lbu	s3,436(s0)
                        recvSetupResponse(m, msg->h.flags.b[1] & kDNSFlag1_RC_Mask, q, &opt->u.llq);
    e8833568:	8bbd                	andi	a5,a5,15
    if (rcode && rcode != kDNSFlag1_RC_NXDomain)
    e883356a:	cb95                	beqz	a5,e883359e <uDNS_recvLLQResponse+0x2fe>
    e883356c:	03778963          	beq	a5,s7,e883359e <uDNS_recvLLQResponse+0x2fe>
    { LogMsg("ERROR: recvSetupResponse %##s (%s) - rcode && rcode != kDNSFlag1_RC_NXDomain", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8833570:	31445503          	lhu	a0,788(s0)
    e8833574:	eece20ef          	jal	ra,e8815c60 <DNSTypeName>
    e8833578:	86aa                	mv	a3,a0
    e883357a:	865a                	mv	a2,s6
    e883357c:	0007d597          	auipc	a1,0x7d
    e8833580:	68458593          	addi	a1,a1,1668 # e88b0c00 <__func__.9833+0x2c68>
    e8833584:	4501                	li	a0,0
    e8833586:	f27fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e883358a:	67a5                	lui	a5,0x9
    e883358c:	993e                	add	s2,s2,a5
    e883358e:	4e090023          	sb	zero,1248(s2)
                        return (oldstate == LLQ_SecondaryRequest ? uDNS_LLQ_Entire : uDNS_LLQ_Ignore);
    e8833592:	4789                	li	a5,2
                        *matchQuestion = q;
    e8833594:	008ab023          	sd	s0,0(s5)
                        return (oldstate == LLQ_SecondaryRequest ? uDNS_LLQ_Entire : uDNS_LLQ_Ignore);
    e8833598:	f8f993e3          	bne	s3,a5,e883351e <uDNS_recvLLQResponse+0x27e>
    e883359c:	b595                	j	e8833400 <uDNS_recvLLQResponse+0x160>
    if (llq->llqOp != kLLQOp_Setup)
    e883359e:	0064d703          	lhu	a4,6(s1)
    e88335a2:	4785                	li	a5,1
    e88335a4:	02f70263          	beq	a4,a5,e88335c8 <uDNS_recvLLQResponse+0x328>
    { LogMsg("ERROR: recvSetupResponse %##s (%s) - bad op %d", q->qname.c, DNSTypeName(q->qtype), llq->llqOp); return; }
    e88335a8:	31445503          	lhu	a0,788(s0)
    e88335ac:	eb4e20ef          	jal	ra,e8815c60 <DNSTypeName>
    e88335b0:	86aa                	mv	a3,a0
    e88335b2:	0064d703          	lhu	a4,6(s1)
    e88335b6:	865a                	mv	a2,s6
    e88335b8:	0007d597          	auipc	a1,0x7d
    e88335bc:	69858593          	addi	a1,a1,1688 # e88b0c50 <__func__.9833+0x2cb8>
    { LogMsg("ERROR: recvSetupResponse %##s (%s) - bad vers %d", q->qname.c, DNSTypeName(q->qtype), llq->vers); return; }
    e88335c0:	4501                	li	a0,0
    e88335c2:	eebfb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88335c6:	b7d1                	j	e883358a <uDNS_recvLLQResponse+0x2ea>
    if (llq->vers != kLLQ_Vers)
    e88335c8:	0044d783          	lhu	a5,4(s1)
    e88335cc:	00e78f63          	beq	a5,a4,e88335ea <uDNS_recvLLQResponse+0x34a>
    { LogMsg("ERROR: recvSetupResponse %##s (%s) - bad vers %d", q->qname.c, DNSTypeName(q->qtype), llq->vers); return; }
    e88335d0:	31445503          	lhu	a0,788(s0)
    e88335d4:	e8ce20ef          	jal	ra,e8815c60 <DNSTypeName>
    e88335d8:	86aa                	mv	a3,a0
    e88335da:	0044d703          	lhu	a4,4(s1)
    e88335de:	865a                	mv	a2,s6
    e88335e0:	0007d597          	auipc	a1,0x7d
    e88335e4:	6a058593          	addi	a1,a1,1696 # e88b0c80 <__func__.9833+0x2ce8>
    e88335e8:	bfe1                	j	e88335c0 <uDNS_recvLLQResponse+0x320>
    if (q->state == LLQ_InitialRequest)
    e88335ea:	04f99f63          	bne	s3,a5,e8833648 <uDNS_recvLLQResponse+0x3a8>
        if (llq->err) { LogMsg("recvSetupResponse - received llq->err %d from server", llq->err); StartLLQPolling(m,q); return; }
    e88335ee:	0084d603          	lhu	a2,8(s1)
    e88335f2:	ce09                	beqz	a2,e883360c <uDNS_recvLLQResponse+0x36c>
    e88335f4:	0007d597          	auipc	a1,0x7d
    e88335f8:	6c458593          	addi	a1,a1,1732 # e88b0cb8 <__func__.9833+0x2d20>
    e88335fc:	4501                	li	a0,0
    e88335fe:	eaffb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (llq->err) { LogMsg("ERROR: recvSetupResponse %##s (%s) code %d from server", q->qname.c, DNSTypeName(q->qtype), llq->err); StartLLQPolling(m,q); return; }
    e8833602:	85a2                	mv	a1,s0
    e8833604:	854a                	mv	a0,s2
    e8833606:	e3efd0ef          	jal	ra,e8830c44 <StartLLQPolling>
    e883360a:	b741                	j	e883358a <uDNS_recvLLQResponse+0x2ea>
        if (q->ReqLease != llq->llqlease)
    e883360c:	48d8                	lw	a4,20(s1)
        q->expire = m->timenow + ((mDNSs32)llq->llqlease * mDNSPlatformOneSecond);
    e883360e:	000a1797          	auipc	a5,0xa1
    e8833612:	47278793          	addi	a5,a5,1138 # e88d4a80 <mDNSPlatformOneSecond>
    e8833616:	4394                	lw	a3,0(a5)
        q->ReqLease = llq->llqlease;
    e8833618:	1ae42c23          	sw	a4,440(s0)
        q->expire = m->timenow + ((mDNSs32)llq->llqlease * mDNSPlatformOneSecond);
    e883361c:	24092783          	lw	a5,576(s2)
        sendChallengeResponse(m, q, llq);
    e8833620:	00448613          	addi	a2,s1,4
    e8833624:	85a2                	mv	a1,s0
        q->expire = m->timenow + ((mDNSs32)llq->llqlease * mDNSPlatformOneSecond);
    e8833626:	24e6978b          	mulaw	a5,a3,a4
        sendChallengeResponse(m, q, llq);
    e883362a:	854a                	mv	a0,s2
        q->expire = m->timenow + ((mDNSs32)llq->llqlease * mDNSPlatformOneSecond);
    e883362c:	1af42e23          	sw	a5,444(s0)
        q->state  = LLQ_SecondaryRequest;
    e8833630:	4789                	li	a5,2
    e8833632:	1af40a23          	sb	a5,436(s0)
        q->id     = llq->id;
    e8833636:	00c4b783          	ld	a5,12(s1)
        q->ntries = 0; // first attempt to send response
    e883363a:	1c041023          	sh	zero,448(s0)
        q->id     = llq->id;
    e883363e:	1cf43e23          	sd	a5,476(s0)
        sendChallengeResponse(m, q, llq);
    e8833642:	89dfd0ef          	jal	ra,e8830ede <sendChallengeResponse>
    e8833646:	b791                	j	e883358a <uDNS_recvLLQResponse+0x2ea>
    else if (q->state == LLQ_SecondaryRequest)
    e8833648:	4789                	li	a5,2
    e883364a:	f4f990e3          	bne	s3,a5,e883358a <uDNS_recvLLQResponse+0x2ea>
        if (PrivateQuery(q))
    e883364e:	643c                	ld	a5,72(s0)
    e8833650:	c79d                	beqz	a5,e883367e <uDNS_recvLLQResponse+0x3de>
    e8833652:	00c7c783          	lbu	a5,12(a5)
    e8833656:	c785                	beqz	a5,e883367e <uDNS_recvLLQResponse+0x3de>
            LogInfo("Private LLQ_SecondaryRequest; copying id %08X%08X", llq->id.l[0], llq->id.l[1]);
    e8833658:	000a1797          	auipc	a5,0xa1
    e883365c:	41c78793          	addi	a5,a5,1052 # e88d4a74 <mDNS_LoggingEnabled>
    e8833660:	439c                	lw	a5,0(a5)
    e8833662:	cb91                	beqz	a5,e8833676 <uDNS_recvLLQResponse+0x3d6>
    e8833664:	4894                	lw	a3,16(s1)
    e8833666:	44d0                	lw	a2,12(s1)
    e8833668:	0007d597          	auipc	a1,0x7d
    e883366c:	68858593          	addi	a1,a1,1672 # e88b0cf0 <__func__.9833+0x2d58>
    e8833670:	450d                	li	a0,3
    e8833672:	e3bfb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            q->id = llq->id;
    e8833676:	00c4b783          	ld	a5,12(s1)
    e883367a:	1cf43e23          	sd	a5,476(s0)
        if (llq->err) { LogMsg("ERROR: recvSetupResponse %##s (%s) code %d from server", q->qname.c, DNSTypeName(q->qtype), llq->err); StartLLQPolling(m,q); return; }
    e883367e:	0084d783          	lhu	a5,8(s1)
    e8833682:	c38d                	beqz	a5,e88336a4 <uDNS_recvLLQResponse+0x404>
    e8833684:	31445503          	lhu	a0,788(s0)
    e8833688:	dd8e20ef          	jal	ra,e8815c60 <DNSTypeName>
    e883368c:	86aa                	mv	a3,a0
    e883368e:	0084d703          	lhu	a4,8(s1)
    e8833692:	865a                	mv	a2,s6
    e8833694:	0007d597          	auipc	a1,0x7d
    e8833698:	69458593          	addi	a1,a1,1684 # e88b0d28 <__func__.9833+0x2d90>
    e883369c:	4501                	li	a0,0
    e883369e:	e0ffb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88336a2:	b785                	j	e8833602 <uDNS_recvLLQResponse+0x362>
        if (!mDNSSameOpaque64(&q->id, &llq->id))
    e88336a4:	1dc42703          	lw	a4,476(s0)
    e88336a8:	44dc                	lw	a5,12(s1)
    e88336aa:	00f71763          	bne	a4,a5,e88336b8 <uDNS_recvLLQResponse+0x418>
    e88336ae:	1e042703          	lw	a4,480(s0)
    e88336b2:	489c                	lw	a5,16(s1)
    e88336b4:	00f70a63          	beq	a4,a5,e88336c8 <uDNS_recvLLQResponse+0x428>
        { LogMsg("recvSetupResponse - ID changed.  discarding"); return; }     // this can happen rarely (on packet loss + reordering)
    e88336b8:	0007d597          	auipc	a1,0x7d
    e88336bc:	6a858593          	addi	a1,a1,1704 # e88b0d60 <__func__.9833+0x2dc8>
    e88336c0:	4501                	li	a0,0
    e88336c2:	debfb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88336c6:	b5d1                	j	e883358a <uDNS_recvLLQResponse+0x2ea>
        q->state         = LLQ_Established;
    e88336c8:	478d                	li	a5,3
    e88336ca:	1af40a23          	sb	a5,436(s0)
        q->ntries        = 0;
    e88336ce:	1c041023          	sh	zero,448(s0)
        SetLLQTimer(m, q, llq);
    e88336d2:	48d0                	lw	a2,20(s1)
    e88336d4:	85a2                	mv	a1,s0
    e88336d6:	854a                	mv	a0,s2
    e88336d8:	f48fe0ef          	jal	ra,e8831e20 <SetLLQTimer.isra.3>
    e88336dc:	b57d                	j	e883358a <uDNS_recvLLQResponse+0x2ea>
        for (q = m->Questions; q; q = q->next)
    e88336de:	6000                	ld	s0,0(s0)
    e88336e0:	b13d                	j	e883330e <uDNS_recvLLQResponse+0x6e>

00000000e88336e2 <DisposeTCPConn>:
{
    e88336e2:	1141                	addi	sp,sp,-16
    e88336e4:	e022                	sd	s0,0(sp)
    e88336e6:	e406                	sd	ra,8(sp)
    e88336e8:	842a                	mv	s0,a0
    mDNSPlatformTCPCloseConnection(tcp->sock);
    e88336ea:	6508                	ld	a0,8(a0)
    e88336ec:	a1afc0ef          	jal	ra,e882f906 <mDNSPlatformTCPCloseConnection>
    if (tcp->reply) mDNSPlatformMemFree(tcp->reply);
    e88336f0:	6789                	lui	a5,0x2
    e88336f2:	97a2                	add	a5,a5,s0
    e88336f4:	3387b503          	ld	a0,824(a5) # 2338 <memcmp-0xe87fdcc8>
    e88336f8:	c119                	beqz	a0,e88336fe <DisposeTCPConn+0x1c>
    e88336fa:	b89fc0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    mDNSPlatformMemFree(tcp);
    e88336fe:	8522                	mv	a0,s0
}
    e8833700:	6402                	ld	s0,0(sp)
    e8833702:	60a2                	ld	ra,8(sp)
    e8833704:	0141                	addi	sp,sp,16
    mDNSPlatformMemFree(tcp);
    e8833706:	b7dfc06f          	j	e8830282 <mDNSPlatformMemFree>

00000000e883370a <tcpCallback>:
    DNSQuestion *const q = tcpInfo->question;
    e883370a:	6789                	lui	a5,0x2
{
    e883370c:	7135                	addi	sp,sp,-160
    DNSQuestion *const q = tcpInfo->question;
    e883370e:	97ae                	add	a5,a5,a1
{
    e8833710:	e526                	sd	s1,136(sp)
    e8833712:	e14a                	sd	s2,128(sp)
    e8833714:	f4d6                	sd	s5,104(sp)
    e8833716:	f0da                	sd	s6,96(sp)
    e8833718:	ed06                	sd	ra,152(sp)
    e883371a:	e922                	sd	s0,144(sp)
    e883371c:	fcce                	sd	s3,120(sp)
    e883371e:	f8d2                	sd	s4,112(sp)
    e8833720:	ecde                	sd	s7,88(sp)
    DNSQuestion *const q = tcpInfo->question;
    e8833722:	3107b403          	ld	s0,784(a5) # 2310 <memcmp-0xe87fdcf0>
    mDNSBool closed  = mDNSfalse;
    e8833726:	02010ba3          	sb	zero,55(sp)
{
    e883372a:	8aaa                	mv	s5,a0
    e883372c:	892e                	mv	s2,a1
    e883372e:	8b32                	mv	s6,a2
    e8833730:	84b6                	mv	s1,a3
    mDNS      *m       = tcpInfo->m;
    e8833732:	0005b983          	ld	s3,0(a1)
        q                 ? &q->tcp :
    e8833736:	12040763          	beqz	s0,e8833864 <tcpCallback+0x15a>
    e883373a:	1a843783          	ld	a5,424(s0)
    e883373e:	1a840a13          	addi	s4,s0,424
    if (backpointer && *backpointer != tcpInfo)
    e8833742:	03278663          	beq	a5,s2,e883376e <tcpCallback+0x64>
        LogMsg("tcpCallback: %d backpointer %p incorrect tcpInfo %p question %p rr %p",
    e8833746:	00893503          	ld	a0,8(s2)
    e883374a:	9b2fc0ef          	jal	ra,e882f8fc <mDNSPlatformTCPGetFD>
    e883374e:	862a                	mv	a2,a0
    e8833750:	6789                	lui	a5,0x2
    e8833752:	97ca                	add	a5,a5,s2
    e8833754:	3187b803          	ld	a6,792(a5) # 2318 <memcmp-0xe87fdce8>
    e8833758:	000a3683          	ld	a3,0(s4)
    e883375c:	87a2                	mv	a5,s0
    e883375e:	874a                	mv	a4,s2
    e8833760:	0007b597          	auipc	a1,0x7b
    e8833764:	6b858593          	addi	a1,a1,1720 # e88aee18 <__func__.9833+0xe80>
    e8833768:	4501                	li	a0,0
    e883376a:	d43fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (err) goto exit;
    e883376e:	30049163          	bnez	s1,e8833a70 <tcpCallback+0x366>
    if (ConnectionEstablished)
    e8833772:	240b0363          	beqz	s6,e88339b8 <tcpCallback+0x2ae>
        mDNSu8    *end = ((mDNSu8*) &tcpInfo->request) + tcpInfo->requestLen;
    e8833776:	6789                	lui	a5,0x2
    e8833778:	97ca                	add	a5,a5,s2
        if (tcpInfo->rr && tcpInfo->rr->resrec.name != &tcpInfo->rr->namestorage)
    e883377a:	3187b683          	ld	a3,792(a5) # 2318 <memcmp-0xe87fdce8>
        mDNSu8    *end = ((mDNSu8*) &tcpInfo->request) + tcpInfo->requestLen;
    e883377e:	3087a483          	lw	s1,776(a5)
        if (tcpInfo->rr && tcpInfo->rr->resrec.name != &tcpInfo->rr->namestorage)
    e8833782:	ce89                	beqz	a3,e883379c <tcpCallback+0x92>
    e8833784:	7690                	ld	a2,40(a3)
    e8833786:	20068693          	addi	a3,a3,512
    e883378a:	00d60963          	beq	a2,a3,e883379c <tcpCallback+0x92>
            LogMsg("tcpCallback: ERROR: tcpInfo->rr->resrec.name %p != &tcpInfo->rr->namestorage %p",
    e883378e:	0007b597          	auipc	a1,0x7b
    e8833792:	6d258593          	addi	a1,a1,1746 # e88aee60 <__func__.9833+0xec8>
    e8833796:	4501                	li	a0,0
    e8833798:	d15fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (tcpInfo->rr  && tcpInfo->rr->resrec.name != &tcpInfo->rr->namestorage) return;
    e883379c:	6789                	lui	a5,0x2
    e883379e:	97ca                	add	a5,a5,s2
    e88337a0:	3187b503          	ld	a0,792(a5) # 2318 <memcmp-0xe87fdce8>
    e88337a4:	c909                	beqz	a0,e88337b6 <tcpCallback+0xac>
    e88337a6:	750c                	ld	a1,40(a0)
    e88337a8:	20050793          	addi	a5,a0,512
    e88337ac:	0af59163          	bne	a1,a5,e883384e <tcpCallback+0x144>
        AuthInfo =  tcpInfo->rr  ? GetAuthInfoForName(m, tcpInfo->rr->resrec.name)         : mDNSNULL;
    e88337b0:	854e                	mv	a0,s3
    e88337b2:	ef1fe0ef          	jal	ra,e88326a2 <GetAuthInfoForName>
        mDNSu8    *end = ((mDNSu8*) &tcpInfo->request) + tcpInfo->requestLen;
    e88337b6:	01090b13          	addi	s6,s2,16
    e88337ba:	009b05b3          	add	a1,s6,s1
        if (q && q->LongLived && q->state == LLQ_Established)
    e88337be:	cc19                	beqz	s0,e88337dc <tcpCallback+0xd2>
    e88337c0:	31844783          	lbu	a5,792(s0)
    e88337c4:	14078963          	beqz	a5,e8833916 <tcpCallback+0x20c>
    e88337c8:	1b444783          	lbu	a5,436(s0)
    e88337cc:	470d                	li	a4,3
    e88337ce:	0ae79463          	bne	a5,a4,e8833876 <tcpCallback+0x16c>
            end = ((mDNSu8*) &tcpInfo->request) + tcpInfo->requestLen;
    e88337d2:	6789                	lui	a5,0x2
    e88337d4:	97ca                	add	a5,a5,s2
    e88337d6:	3087a583          	lw	a1,776(a5) # 2308 <memcmp-0xe87fdcf8>
    e88337da:	95da                	add	a1,a1,s6
        err = mDNSSendDNSMessage(m, &tcpInfo->request, end, mDNSInterface_Any, mDNSNULL, &tcpInfo->Addr, tcpInfo->Port, sock, AuthInfo, mDNSfalse);
    e88337dc:	6789                	lui	a5,0x2
    e88337de:	00f90733          	add	a4,s2,a5
    e88337e2:	0006f697          	auipc	a3,0x6f
    e88337e6:	57e68693          	addi	a3,a3,1406 # e88a2d60 <mDNSInterface_Any>
    e88337ea:	e02a                	sd	a0,0(sp)
    e88337ec:	e402                	sd	zero,8(sp)
    e88337ee:	6294                	ld	a3,0(a3)
    e88337f0:	33475803          	lhu	a6,820(a4)
    e88337f4:	32078793          	addi	a5,a5,800 # 2320 <memcmp-0xe87fdce0>
    e88337f8:	862e                	mv	a2,a1
    e88337fa:	88d6                	mv	a7,s5
    e88337fc:	97ca                	add	a5,a5,s2
    e88337fe:	4701                	li	a4,0
    e8833800:	85da                	mv	a1,s6
    e8833802:	854e                	mv	a0,s3
    e8833804:	eafe30ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
        if (err) { debugf("ERROR: tcpCallback: mDNSSendDNSMessage - %d", err); err = mStatus_UnknownErr; goto exit; }
    e8833808:	10051063          	bnez	a0,e8833908 <tcpCallback+0x1fe>
        if (q)
    e883380c:	c029                	beqz	s0,e883384e <tcpCallback+0x144>
            mDNS_Lock(m);
    e883380e:	0007a597          	auipc	a1,0x7a
    e8833812:	61258593          	addi	a1,a1,1554 # e88ade20 <__func__.9109>
    e8833816:	854e                	mv	a0,s3
    e8833818:	9eae20ef          	jal	ra,e8815a02 <mDNS_Lock_>
            q->LastQTime = m->timenow;
    e883381c:	2409a783          	lw	a5,576(s3)
            if (q->ThisQInterval < (256 * mDNSPlatformOneSecond))   // Now we have a TCP connection open, make sure we wait at least 256 seconds before retrying
    e8833820:	4854                	lw	a3,20(s0)
            q->LastQTime = m->timenow;
    e8833822:	c81c                	sw	a5,16(s0)
            if (q->ThisQInterval < (256 * mDNSPlatformOneSecond))   // Now we have a TCP connection open, make sure we wait at least 256 seconds before retrying
    e8833824:	000a1797          	auipc	a5,0xa1
    e8833828:	25c78793          	addi	a5,a5,604 # e88d4a80 <mDNSPlatformOneSecond>
    e883382c:	439c                	lw	a5,0(a5)
    e883382e:	0087971b          	slliw	a4,a5,0x8
    e8833832:	00e6d363          	bge	a3,a4,e8833838 <tcpCallback+0x12e>
                q->ThisQInterval = (256 * mDNSPlatformOneSecond);
    e8833836:	c858                	sw	a4,20(s0)
            SetNextQueryTime(m, q);
    e8833838:	85a2                	mv	a1,s0
    e883383a:	854e                	mv	a0,s3
    e883383c:	a31ea0ef          	jal	ra,e881e26c <SetNextQueryTime>
            mDNS_Unlock(m);
    e8833840:	0007a597          	auipc	a1,0x7a
    e8833844:	5e058593          	addi	a1,a1,1504 # e88ade20 <__func__.9109>
    e8833848:	854e                	mv	a0,s3
    e883384a:	a82e20ef          	jal	ra,e8815acc <mDNS_Unlock_>
}
    e883384e:	60ea                	ld	ra,152(sp)
    e8833850:	644a                	ld	s0,144(sp)
    e8833852:	64aa                	ld	s1,136(sp)
    e8833854:	690a                	ld	s2,128(sp)
    e8833856:	79e6                	ld	s3,120(sp)
    e8833858:	7a46                	ld	s4,112(sp)
    e883385a:	7aa6                	ld	s5,104(sp)
    e883385c:	7b06                	ld	s6,96(sp)
    e883385e:	6be6                	ld	s7,88(sp)
    e8833860:	610d                	addi	sp,sp,160
    e8833862:	8082                	ret
        tcpInfo->rr       ? &tcpInfo->rr->tcp : mDNSNULL;
    e8833864:	3187ba03          	ld	s4,792(a5)
        q                 ? &q->tcp :
    e8833868:	460a0263          	beqz	s4,e8833ccc <tcpCallback+0x5c2>
    e883386c:	170a3783          	ld	a5,368(s4)
    e8833870:	170a0a13          	addi	s4,s4,368
    e8833874:	b5f9                	j	e8833742 <tcpCallback+0x38>
        else if (q && q->LongLived && q->state != LLQ_Poll && !mDNSIPPortIsZero(m->LLQNAT.ExternalPort) && !mDNSIPPortIsZero(q->servPort))
    e8833876:	4711                	li	a4,4
    e8833878:	08e78f63          	beq	a5,a4,e8833916 <tcpCallback+0x20c>
    e883387c:	6791                	lui	a5,0x4
    e883387e:	97ce                	add	a5,a5,s3
    e8833880:	bc87d783          	lhu	a5,-1080(a5) # 3bc8 <memcmp-0xe87fc438>
    e8833884:	cbc9                	beqz	a5,e8833916 <tcpCallback+0x20c>
    e8833886:	1a445783          	lhu	a5,420(s0)
    e883388a:	c7d1                	beqz	a5,e8833916 <tcpCallback+0x20c>
            llqData.vers  = kLLQ_Vers;
    e883388c:	67c1                	lui	a5,0x10
            llqData.err   = GetLLQEventPort(m, &tcpInfo->Addr); // We're using TCP; tell server what UDP port to send notifications to
    e883388e:	6589                	lui	a1,0x2
            llqData.vers  = kLLQ_Vers;
    e8833890:	2785                	addiw	a5,a5,1
            llqData.err   = GetLLQEventPort(m, &tcpInfo->Addr); // We're using TCP; tell server what UDP port to send notifications to
    e8833892:	32058593          	addi	a1,a1,800 # 2320 <memcmp-0xe87fdce0>
    e8833896:	95ca                	add	a1,a1,s2
    e8833898:	854e                	mv	a0,s3
            llqData.vers  = kLLQ_Vers;
    e883389a:	dc3e                	sw	a5,56(sp)
            llqData.err   = GetLLQEventPort(m, &tcpInfo->Addr); // We're using TCP; tell server what UDP port to send notifications to
    e883389c:	f46fe0ef          	jal	ra,e8831fe2 <GetLLQEventPort>
    e88338a0:	02a11e23          	sh	a0,60(sp)
            LogInfo("tcpCallback: eventPort %d", llqData.err);
    e88338a4:	000a1797          	auipc	a5,0xa1
    e88338a8:	1d078793          	addi	a5,a5,464 # e88d4a74 <mDNS_LoggingEnabled>
    e88338ac:	439c                	lw	a5,0(a5)
            llqData.err   = GetLLQEventPort(m, &tcpInfo->Addr); // We're using TCP; tell server what UDP port to send notifications to
    e88338ae:	862a                	mv	a2,a0
            LogInfo("tcpCallback: eventPort %d", llqData.err);
    e88338b0:	cb81                	beqz	a5,e88338c0 <tcpCallback+0x1b6>
    e88338b2:	0007b597          	auipc	a1,0x7b
    e88338b6:	5fe58593          	addi	a1,a1,1534 # e88aeeb0 <__func__.9833+0xf18>
    e88338ba:	450d                	li	a0,3
    e88338bc:	bf1fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            llqData.id    = zeroOpaque64;
    e88338c0:	00070797          	auipc	a5,0x70
    e88338c4:	d0078793          	addi	a5,a5,-768 # e88a35c0 <zeroOpaque64>
    e88338c8:	639c                	ld	a5,0(a5)
            InitializeDNSMessage(&tcpInfo->request.h, q->TargetQID, uQueryFlags);
    e88338ca:	855a                	mv	a0,s6
            llqData.id    = zeroOpaque64;
    e88338cc:	e0be                	sd	a5,64(sp)
            llqData.llqlease = kLLQ_DefLease;
    e88338ce:	6789                	lui	a5,0x2
    e88338d0:	c207879b          	addiw	a5,a5,-992
    e88338d4:	c4be                	sw	a5,72(sp)
            InitializeDNSMessage(&tcpInfo->request.h, q->TargetQID, uQueryFlags);
    e88338d6:	00070797          	auipc	a5,0x70
    e88338da:	ca278793          	addi	a5,a5,-862 # e88a3578 <uQueryFlags>
    e88338de:	0007d603          	lhu	a2,0(a5)
    e88338e2:	21245583          	lhu	a1,530(s0)
    e88338e6:	d67e00ef          	jal	ra,e881464c <InitializeDNSMessage>
            end = putLLQ(&tcpInfo->request, tcpInfo->request.data, q, &llqData);
    e88338ea:	01c90593          	addi	a1,s2,28
    e88338ee:	1834                	addi	a3,sp,56
    e88338f0:	8622                	mv	a2,s0
    e88338f2:	855a                	mv	a0,s6
    e88338f4:	d16fd0ef          	jal	ra,e8830e0a <putLLQ>
    e88338f8:	85aa                	mv	a1,a0
            if (!end) { LogMsg("ERROR: tcpCallback - putLLQ"); err = mStatus_UnknownErr; goto exit; }
    e88338fa:	e911                	bnez	a0,e883390e <tcpCallback+0x204>
    e88338fc:	0007b597          	auipc	a1,0x7b
    e8833900:	5d458593          	addi	a1,a1,1492 # e88aeed0 <__func__.9833+0xf38>
    e8833904:	ba9fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (err) { debugf("ERROR: tcpCallback: mDNSSendDNSMessage - %d", err); err = mStatus_UnknownErr; goto exit; }
    e8833908:	74c1                	lui	s1,0xffff0
    e883390a:	14fd                	addi	s1,s1,-1
    e883390c:	a285                	j	e8833a6c <tcpCallback+0x362>
            AuthInfo = q->AuthInfo;     // Need to add TSIG to this message
    e883390e:	6428                	ld	a0,72(s0)
            q->ntries = 0; // Reset ntries so that tcp/tls connection failures don't affect sendChallengeResponse failures
    e8833910:	1c041023          	sh	zero,448(s0)
        {
    e8833914:	b5e1                	j	e88337dc <tcpCallback+0xd2>
            InitializeDNSMessage(&tcpInfo->request.h, q->TargetQID, (DNSSECQuestion(q) ? DNSSecQFlags : uQueryFlags));
    e8833916:	32444783          	lbu	a5,804(s0)
    e883391a:	eb91                	bnez	a5,e883392e <tcpCallback+0x224>
    e883391c:	14a44783          	lbu	a5,330(s0)
    e8833920:	e799                	bnez	a5,e883392e <tcpCallback+0x224>
    e8833922:	32544783          	lbu	a5,805(s0)
    e8833926:	cfbd                	beqz	a5,e88339a4 <tcpCallback+0x29a>
    e8833928:	32644783          	lbu	a5,806(s0)
    e883392c:	cfa5                	beqz	a5,e88339a4 <tcpCallback+0x29a>
    e883392e:	0006e797          	auipc	a5,0x6e
    e8833932:	63a78793          	addi	a5,a5,1594 # e88a1f68 <DNSSecQFlags>
    e8833936:	0007d603          	lhu	a2,0(a5)
    e883393a:	21245583          	lhu	a1,530(s0)
    e883393e:	855a                	mv	a0,s6
            end = putQuestion(&tcpInfo->request, tcpInfo->request.data, tcpInfo->request.data + AbsoluteMaxDNSMessageData, &q->qname, q->qtype, q->qclass);
    e8833940:	6489                	lui	s1,0x2
            InitializeDNSMessage(&tcpInfo->request.h, q->TargetQID, (DNSSECQuestion(q) ? DNSSecQFlags : uQueryFlags));
    e8833942:	d0be00ef          	jal	ra,e881464c <InitializeDNSMessage>
            end = putQuestion(&tcpInfo->request, tcpInfo->request.data, tcpInfo->request.data + AbsoluteMaxDNSMessageData, &q->qname, q->qtype, q->qclass);
    e8833946:	30848493          	addi	s1,s1,776 # 2308 <memcmp-0xe87fdcf8>
    e883394a:	31645783          	lhu	a5,790(s0)
    e883394e:	31445703          	lhu	a4,788(s0)
    e8833952:	94ca                	add	s1,s1,s2
    e8833954:	01c90593          	addi	a1,s2,28
    e8833958:	21440693          	addi	a3,s0,532
    e883395c:	8626                	mv	a2,s1
    e883395e:	855a                	mv	a0,s6
    e8833960:	e9fe00ef          	jal	ra,e88147fe <putQuestion>
    e8833964:	85aa                	mv	a1,a0
            if (DNSSECQuestion(q) && q->qDNSServer && !q->qDNSServer->cellIntf)
    e8833966:	32444783          	lbu	a5,804(s0)
    e883396a:	eb91                	bnez	a5,e883397e <tcpCallback+0x274>
    e883396c:	14a44783          	lbu	a5,330(s0)
    e8833970:	e799                	bnez	a5,e883397e <tcpCallback+0x274>
    e8833972:	32544783          	lbu	a5,805(s0)
    e8833976:	c78d                	beqz	a5,e88339a0 <tcpCallback+0x296>
    e8833978:	32644783          	lbu	a5,806(s0)
    e883397c:	c395                	beqz	a5,e88339a0 <tcpCallback+0x296>
    e883397e:	16843783          	ld	a5,360(s0)
    e8833982:	cf99                	beqz	a5,e88339a0 <tcpCallback+0x296>
    e8833984:	13f7c783          	lbu	a5,319(a5)
    e8833988:	ef81                	bnez	a5,e88339a0 <tcpCallback+0x296>
                if (q->ProxyQuestion)
    e883398a:	32544783          	lbu	a5,805(s0)
    e883398e:	c385                	beqz	a5,e88339ae <tcpCallback+0x2a4>
                    end = DNSProxySetAttributes(q, &tcpInfo->request.h, &tcpInfo->request, end, tcpInfo->request.data + AbsoluteMaxDNSMessageData);
    e8833990:	86ae                	mv	a3,a1
    e8833992:	8726                	mv	a4,s1
    e8833994:	865a                	mv	a2,s6
    e8833996:	85da                	mv	a1,s6
    e8833998:	8522                	mv	a0,s0
    e883399a:	958fc0ef          	jal	ra,e882faf2 <DNSProxySetAttributes>
                    end = putDNSSECOption(&tcpInfo->request, end, tcpInfo->request.data + AbsoluteMaxDNSMessageData);
    e883399e:	85aa                	mv	a1,a0
            AuthInfo = q->AuthInfo;     // Need to add TSIG to this message
    e88339a0:	6428                	ld	a0,72(s0)
    e88339a2:	bd2d                	j	e88337dc <tcpCallback+0xd2>
            InitializeDNSMessage(&tcpInfo->request.h, q->TargetQID, (DNSSECQuestion(q) ? DNSSecQFlags : uQueryFlags));
    e88339a4:	00070797          	auipc	a5,0x70
    e88339a8:	bd478793          	addi	a5,a5,-1068 # e88a3578 <uQueryFlags>
    e88339ac:	b769                	j	e8833936 <tcpCallback+0x22c>
                    end = putDNSSECOption(&tcpInfo->request, end, tcpInfo->request.data + AbsoluteMaxDNSMessageData);
    e88339ae:	8626                	mv	a2,s1
    e88339b0:	855a                	mv	a0,s6
    e88339b2:	eebe20ef          	jal	ra,e881689c <putDNSSECOption>
    e88339b6:	b7e5                	j	e883399e <tcpCallback+0x294>
        const mDNSBool Read_replylen = (tcpInfo->nread < 2);  // Do we need to read the replylen field first?
    e88339b8:	6589                	lui	a1,0x2
    e88339ba:	00b904b3          	add	s1,s2,a1
    e88339be:	3484bb03          	ld	s6,840(s1)
        if (Read_replylen)         // First read the two-byte length preceeding the DNS message
    e88339c2:	4b85                	li	s7,1
    e88339c4:	156be963          	bltu	s7,s6,e8833b16 <tcpCallback+0x40c>
            mDNSu8 *lenptr = (mDNSu8 *)&tcpInfo->replylen;
    e88339c8:	34058593          	addi	a1,a1,832 # 2340 <memcmp-0xe87fdcc0>
    e88339cc:	95ca                	add	a1,a1,s2
            n = mDNSPlatformReadTCP(sock, lenptr + tcpInfo->nread, 2 - tcpInfo->nread, &closed);
    e88339ce:	4609                	li	a2,2
    e88339d0:	41660633          	sub	a2,a2,s6
    e88339d4:	95da                	add	a1,a1,s6
    e88339d6:	03710693          	addi	a3,sp,55
    e88339da:	8556                	mv	a0,s5
    e88339dc:	f2dfb0ef          	jal	ra,e882f908 <mDNSPlatformReadTCP>
    e88339e0:	862a                	mv	a2,a0
                LogMsg("ERROR: tcpCallback - attempt to read message length failed (%d)", n);
    e88339e2:	0007b597          	auipc	a1,0x7b
    e88339e6:	50e58593          	addi	a1,a1,1294 # e88aeef0 <__func__.9833+0xf58>
            if (n < 0)
    e88339ea:	16054263          	bltz	a0,e8833b4e <tcpCallback+0x444>
            else if (closed)
    e88339ee:	03714783          	lbu	a5,55(sp)
    e88339f2:	c39d                	beqz	a5,e8833a18 <tcpCallback+0x30e>
            if (tcpInfo->numReplies == 0)
    e88339f4:	3504a783          	lw	a5,848(s1)
    e88339f8:	eb81                	bnez	a5,e8833a08 <tcpCallback+0x2fe>
                LogMsg("ERROR: socket closed prematurely tcpInfo->nread = %d", tcpInfo->nread);
    e88339fa:	3484b603          	ld	a2,840(s1)
    e88339fe:	0007b597          	auipc	a1,0x7b
    e8833a02:	53258593          	addi	a1,a1,1330 # e88aef30 <__func__.9833+0xf98>
    e8833a06:	a2a1                	j	e8833b4e <tcpCallback+0x444>
                    if (backpointer) *backpointer = mDNSNULL; // Clear client backpointer FIRST so we don't risk double-disposing our tcpInfo_t
    e8833a08:	000a0463          	beqz	s4,e8833a10 <tcpCallback+0x306>
    e8833a0c:	000a3023          	sd	zero,0(s4)
        DisposeTCPConn(tcpInfo);
    e8833a10:	854a                	mv	a0,s2
    e8833a12:	cd1ff0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8833a16:	bd25                	j	e883384e <tcpCallback+0x144>
            tcpInfo->nread += n;
    e8833a18:	3484b503          	ld	a0,840(s1)
    e8833a1c:	962a                	add	a2,a2,a0
    e8833a1e:	34c4b423          	sd	a2,840(s1)
            if (tcpInfo->nread < 2) goto exit;
    e8833a22:	e2cbf6e3          	bgeu	s7,a2,e883384e <tcpCallback+0x144>
            tcpInfo->replylen = (mDNSu16)((mDNSu16)lenptr[0] << 8 | lenptr[1]);
    e8833a26:	3404c603          	lbu	a2,832(s1)
    e8833a2a:	3414c503          	lbu	a0,833(s1)
            if (tcpInfo->replylen < sizeof(DNSMessageHeader))
    e8833a2e:	47ad                	li	a5,11
            tcpInfo->replylen = (mDNSu16)((mDNSu16)lenptr[0] << 8 | lenptr[1]);
    e8833a30:	0086161b          	slliw	a2,a2,0x8
    e8833a34:	8e49                	or	a2,a2,a0
    e8833a36:	34c49023          	sh	a2,832(s1)
            if (tcpInfo->replylen < sizeof(DNSMessageHeader))
    e8833a3a:	2601                	sext.w	a2,a2
    e8833a3c:	00c7ea63          	bltu	a5,a2,e8833a50 <tcpCallback+0x346>
            { LogMsg("ERROR: tcpCallback - length too short (%d bytes)", tcpInfo->replylen); err = mStatus_UnknownErr; goto exit; }
    e8833a40:	0007b597          	auipc	a1,0x7b
    e8833a44:	52858593          	addi	a1,a1,1320 # e88aef68 <__func__.9833+0xfd0>
    e8833a48:	4501                	li	a0,0
    e8833a4a:	a63fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (err)
    e8833a4e:	bd6d                	j	e8833908 <tcpCallback+0x1fe>
            tcpInfo->reply = mDNSPlatformMemAllocate(tcpInfo->replylen);
    e8833a50:	8532                	mv	a0,a2
    e8833a52:	811fc0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8833a56:	32a4bc23          	sd	a0,824(s1)
            if (!tcpInfo->reply) { LogMsg("ERROR: tcpCallback - malloc failed"); err = mStatus_NoMemoryErr; goto exit; }
    e8833a5a:	ed55                	bnez	a0,e8833b16 <tcpCallback+0x40c>
    e8833a5c:	0007b597          	auipc	a1,0x7b
    e8833a60:	54458593          	addi	a1,a1,1348 # e88aefa0 <__func__.9833+0x1008>
    e8833a64:	74c1                	lui	s1,0xffff0
    e8833a66:	a47fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8833a6a:	14f5                	addi	s1,s1,-3
        if (backpointer) *backpointer = mDNSNULL;
    e8833a6c:	000a0463          	beqz	s4,e8833a74 <tcpCallback+0x36a>
    e8833a70:	000a3023          	sd	zero,0(s4)
        mDNS_Lock(m);       // Need to grab the lock to get m->timenow
    e8833a74:	0007a597          	auipc	a1,0x7a
    e8833a78:	3ac58593          	addi	a1,a1,940 # e88ade20 <__func__.9109>
    e8833a7c:	854e                	mv	a0,s3
    e8833a7e:	f85e10ef          	jal	ra,e8815a02 <mDNS_Lock_>
        if (q)
    e8833a82:	c051                	beqz	s0,e8833b06 <tcpCallback+0x3fc>
            if (q->ThisQInterval == 0)
    e8833a84:	4850                	lw	a2,20(s0)
    e8833a86:	000a1797          	auipc	a5,0xa1
    e8833a8a:	ffa78793          	addi	a5,a5,-6 # e88d4a80 <mDNSPlatformOneSecond>
    e8833a8e:	2409a683          	lw	a3,576(s3)
    e8833a92:	31844583          	lbu	a1,792(s0)
    e8833a96:	439c                	lw	a5,0(a5)
    e8833a98:	1a061863          	bnez	a2,e8833c48 <tcpCallback+0x53e>
                q->LastQTime = m->timenow;
    e8833a9c:	c814                	sw	a3,16(s0)
                if (q->LongLived)
    e8833a9e:	21440613          	addi	a2,s0,532
    e8833aa2:	31445503          	lhu	a0,788(s0)
    e8833aa6:	16058d63          	beqz	a1,e8833c20 <tcpCallback+0x516>
                    q->ThisQInterval = InitialQuestionInterval;
    e8833aaa:	0027869b          	addiw	a3,a5,2
    e8833aae:	458d                	li	a1,3
    e8833ab0:	02b6c6bb          	divw	a3,a3,a1
                    mDNSu32 count = q->ntries + 1; // want to wait at least 1 second before retrying
    e8833ab4:	1c041703          	lh	a4,448(s0)
                    for (; count; count--)
    e8833ab8:	5879                	li	a6,-2
                        q->ThisQInterval *= QuestionIntervalStep;
    e8833aba:	488d                	li	a7,3
                    q->ThisQInterval = InitialQuestionInterval;
    e8833abc:	c854                	sw	a3,20(s0)
                    for (; count; count--)
    e8833abe:	0007069b          	sext.w	a3,a4
    e8833ac2:	36fd                	addiw	a3,a3,-1
    e8833ac4:	484c                	lw	a1,20(s0)
    e8833ac6:	15069563          	bne	a3,a6,e8833c10 <tcpCallback+0x506>
                    if (q->ThisQInterval > LLQ_POLL_INTERVAL)
    e8833aca:	38400693          	li	a3,900
    e8833ace:	02f686bb          	mulw	a3,a3,a5
    e8833ad2:	14b6d363          	bge	a3,a1,e8833c18 <tcpCallback+0x50e>
                        q->ThisQInterval = LLQ_POLL_INTERVAL;
    e8833ad6:	c854                	sw	a3,20(s0)
    e8833ad8:	e832                	sd	a2,16(sp)
                    LogMsg("tcpCallback: stream connection for LLQ %##s (%s) failed %d times, retrying in %d ms", q->qname.c, DNSTypeName(q->qtype), q->ntries, q->ThisQInterval);
    e8833ada:	986e20ef          	jal	ra,e8815c60 <DNSTypeName>
    e8833ade:	86aa                	mv	a3,a0
    e8833ae0:	485c                	lw	a5,20(s0)
    e8833ae2:	1c041703          	lh	a4,448(s0)
    e8833ae6:	6642                	ld	a2,16(sp)
    e8833ae8:	0007b597          	auipc	a1,0x7b
    e8833aec:	50858593          	addi	a1,a1,1288 # e88aeff0 <__func__.9833+0x1058>
    e8833af0:	4501                	li	a0,0
    e8833af2:	9bbfb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                SetNextQueryTime(m, q);
    e8833af6:	85a2                	mv	a1,s0
    e8833af8:	854e                	mv	a0,s3
    e8833afa:	f72ea0ef          	jal	ra,e881e26c <SetNextQueryTime>
            if (q->LongLived && q->state == LLQ_SecondaryRequest)
    e8833afe:	31844783          	lbu	a5,792(s0)
    e8833b02:	14079d63          	bnez	a5,e8833c5c <tcpCallback+0x552>
        mDNS_Unlock(m);
    e8833b06:	0007a597          	auipc	a1,0x7a
    e8833b0a:	31a58593          	addi	a1,a1,794 # e88ade20 <__func__.9109>
    e8833b0e:	854e                	mv	a0,s3
    e8833b10:	fbde10ef          	jal	ra,e8815acc <mDNS_Unlock_>
    e8833b14:	bdf5                	j	e8833a10 <tcpCallback+0x306>
        n = mDNSPlatformReadTCP(sock, ((char *)tcpInfo->reply) + (tcpInfo->nread - 2), tcpInfo->replylen - (tcpInfo->nread - 2), &closed);
    e8833b16:	6b89                	lui	s7,0x2
    e8833b18:	017904b3          	add	s1,s2,s7
    e8833b1c:	3484b583          	ld	a1,840(s1) # ffffffffffff0348 <__DRAM0_INF_BASE+0xffffffff00000348>
    e8833b20:	3404d603          	lhu	a2,832(s1)
    e8833b24:	3384b783          	ld	a5,824(s1)
    e8833b28:	03710693          	addi	a3,sp,55
    e8833b2c:	8e0d                	sub	a2,a2,a1
    e8833b2e:	15f9                	addi	a1,a1,-2
    e8833b30:	0609                	addi	a2,a2,2
    e8833b32:	95be                	add	a1,a1,a5
    e8833b34:	8556                	mv	a0,s5
    e8833b36:	dd3fb0ef          	jal	ra,e882f908 <mDNSPlatformReadTCP>
    e8833b3a:	862a                	mv	a2,a0
        if (n < 0)
    e8833b3c:	02055063          	bgez	a0,e8833b5c <tcpCallback+0x452>
            if (!Read_replylen) { LogMsg("ERROR: tcpCallback - read returned %d", n); err = mStatus_ConnFailed; }
    e8833b40:	4785                	li	a5,1
    e8833b42:	0007b597          	auipc	a1,0x7b
    e8833b46:	48658593          	addi	a1,a1,1158 # e88aefc8 <__func__.9833+0x1030>
    e8833b4a:	d167f2e3          	bgeu	a5,s6,e883384e <tcpCallback+0x144>
                LogMsg("ERROR: socket closed prematurely tcpInfo->nread = %d", tcpInfo->nread);
    e8833b4e:	4501                	li	a0,0
                err = mStatus_ConnFailed;
    e8833b50:	74c1                	lui	s1,0xffff0
                LogMsg("ERROR: socket closed prematurely tcpInfo->nread = %d", tcpInfo->nread);
    e8833b52:	95bfb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                err = mStatus_ConnFailed;
    e8833b56:	f0448493          	addi	s1,s1,-252 # fffffffffffeff04 <__DRAM0_INF_BASE+0xfffffffeffffff04>
    e8833b5a:	bf09                	j	e8833a6c <tcpCallback+0x362>
        else if (closed)
    e8833b5c:	03714783          	lbu	a5,55(sp)
    e8833b60:	e8079ae3          	bnez	a5,e88339f4 <tcpCallback+0x2ea>
        tcpInfo->nread += n;
    e8833b64:	3484b503          	ld	a0,840(s1)
        if ((tcpInfo->nread - 2) == tcpInfo->replylen)
    e8833b68:	3404d783          	lhu	a5,832(s1)
        tcpInfo->nread += n;
    e8833b6c:	962a                	add	a2,a2,a0
    e8833b6e:	34c4b423          	sd	a2,840(s1)
        if ((tcpInfo->nread - 2) == tcpInfo->replylen)
    e8833b72:	1679                	addi	a2,a2,-2
    e8833b74:	ccf61de3          	bne	a2,a5,e883384e <tcpCallback+0x144>
            mDNSAddr Addr  = tcpInfo->Addr;
    e8833b78:	3304a783          	lw	a5,816(s1)
    e8833b7c:	3204b703          	ld	a4,800(s1)
            DNSMessage *reply = tcpInfo->reply;
    e8833b80:	3384bb03          	ld	s6,824(s1)
            mDNSAddr Addr  = tcpInfo->Addr;
    e8833b84:	c4be                	sw	a5,72(sp)
            mDNSIPPort srcPort = zeroIPPort;
    e8833b86:	00070797          	auipc	a5,0x70
    e8833b8a:	a2278793          	addi	a5,a5,-1502 # e88a35a8 <zeroIPPort>
    e8833b8e:	0007d803          	lhu	a6,0(a5)
            tcpInfo->numReplies++;
    e8833b92:	3504a783          	lw	a5,848(s1)
            mDNSAddr Addr  = tcpInfo->Addr;
    e8833b96:	fc3a                	sd	a4,56(sp)
    e8833b98:	3284b703          	ld	a4,808(s1)
            tcpInfo->numReplies++;
    e8833b9c:	2785                	addiw	a5,a5,1
    e8833b9e:	34f4a823          	sw	a5,848(s1)
            tcpInfo->reply    = mDNSNULL;   // Detach reply buffer from tcpInfo_t, to make sure client callback can't cause it to be disposed
    e8833ba2:	3204bc23          	sd	zero,824(s1)
            tcpInfo->nread    = 0;
    e8833ba6:	3404b423          	sd	zero,840(s1)
            tcpInfo->replylen = 0;
    e8833baa:	34049023          	sh	zero,832(s1)
            if (sock->flags & kTCPSocketFlags_UseTLS) tls = mDNStrue;
    e8833bae:	000ac783          	lbu	a5,0(s5)
            mDNSAddr Addr  = tcpInfo->Addr;
    e8833bb2:	e0ba                	sd	a4,64(sp)
            mDNSu8     *end   = (mDNSu8 *)tcpInfo->reply + tcpInfo->replylen;
    e8833bb4:	965a                	add	a2,a2,s6
            mDNSIPPort Port  = tcpInfo->Port;
    e8833bb6:	3344d703          	lhu	a4,820(s1)
            if (sock->flags & kTCPSocketFlags_UseTLS) tls = mDNStrue;
    e8833bba:	8b85                	andi	a5,a5,1
            if (q && q->tcp) {srcPort = q->tcp->SrcPort; q->tcpSrcPort = srcPort;}
    e8833bbc:	10040563          	beqz	s0,e8833cc6 <tcpCallback+0x5bc>
    e8833bc0:	1a843683          	ld	a3,424(s0)
    e8833bc4:	c691                	beqz	a3,e8833bd0 <tcpCallback+0x4c6>
    e8833bc6:	96de                	add	a3,a3,s7
    e8833bc8:	3366d803          	lhu	a6,822(a3)
    e8833bcc:	1b041823          	sh	a6,432(s0)
            if (backpointer)
    e8833bd0:	020a0263          	beqz	s4,e8833bf4 <tcpCallback+0x4ea>
                if (!q || !q->LongLived || m->SleepState)
    e8833bd4:	31844683          	lbu	a3,792(s0)
    e8833bd8:	ea85                	bnez	a3,e8833c08 <tcpCallback+0x4fe>
                { *backpointer = mDNSNULL; DisposeTCPConn(tcpInfo); }
    e8833bda:	000a3023          	sd	zero,0(s4)
    e8833bde:	854a                	mv	a0,s2
    e8833be0:	f442                	sd	a6,40(sp)
    e8833be2:	f03a                	sd	a4,32(sp)
    e8833be4:	ec3e                	sd	a5,24(sp)
    e8833be6:	e832                	sd	a2,16(sp)
    e8833be8:	afbff0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8833bec:	faf1460b          	ldd	a2,a5,(sp),1,4
    e8833bf0:	fd01470b          	ldd	a4,a6,(sp),2,4
            mDNSCoreReceive(m, reply, end, &Addr, Port, tls ? (mDNSAddr *)1 : mDNSNULL, srcPort, 0);
    e8833bf4:	854e                	mv	a0,s3
    e8833bf6:	4881                	li	a7,0
    e8833bf8:	1834                	addi	a3,sp,56
    e8833bfa:	85da                	mv	a1,s6
    e8833bfc:	873f60ef          	jal	ra,e882a46e <mDNSCoreReceive>
            mDNSPlatformMemFree(reply);
    e8833c00:	855a                	mv	a0,s6
    e8833c02:	e80fc0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
            return;
    e8833c06:	b1a1                	j	e883384e <tcpCallback+0x144>
                if (!q || !q->LongLived || m->SleepState)
    e8833c08:	2859c683          	lbu	a3,645(s3)
    e8833c0c:	f6f9                	bnez	a3,e8833bda <tcpCallback+0x4d0>
    e8833c0e:	b7dd                	j	e8833bf4 <tcpCallback+0x4ea>
                        q->ThisQInterval *= QuestionIntervalStep;
    e8833c10:	02b885bb          	mulw	a1,a7,a1
    e8833c14:	c84c                	sw	a1,20(s0)
                    for (; count; count--)
    e8833c16:	b575                	j	e8833ac2 <tcpCallback+0x3b8>
                        q->ntries++;
    e8833c18:	2705                	addiw	a4,a4,1
    e8833c1a:	1ce41023          	sh	a4,448(s0)
    e8833c1e:	bd6d                	j	e8833ad8 <tcpCallback+0x3ce>
                    q->ThisQInterval = MAX_UCAST_POLL_INTERVAL;
    e8833c20:	6705                	lui	a4,0x1
    e8833c22:	e107071b          	addiw	a4,a4,-496
    e8833c26:	02e787bb          	mulw	a5,a5,a4
    e8833c2a:	e832                	sd	a2,16(sp)
    e8833c2c:	c85c                	sw	a5,20(s0)
                    LogMsg("tcpCallback: stream connection for %##s (%s) failed, retrying in %d ms", q->qname.c, DNSTypeName(q->qtype), q->ThisQInterval);
    e8833c2e:	832e20ef          	jal	ra,e8815c60 <DNSTypeName>
    e8833c32:	86aa                	mv	a3,a0
    e8833c34:	4858                	lw	a4,20(s0)
    e8833c36:	6642                	ld	a2,16(sp)
    e8833c38:	0007b597          	auipc	a1,0x7b
    e8833c3c:	41058593          	addi	a1,a1,1040 # e88af048 <__func__.9833+0x10b0>
    e8833c40:	4501                	li	a0,0
    e8833c42:	86bfb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8833c46:	bd45                	j	e8833af6 <tcpCallback+0x3ec>
            else if (NextQSendTime(q) - m->timenow > (q->LongLived ? LLQ_POLL_INTERVAL : MAX_UCAST_POLL_INTERVAL))
    e8833c48:	4818                	lw	a4,16(s0)
    e8833c4a:	9f31                	addw	a4,a4,a2
    e8833c4c:	9f15                	subw	a4,a4,a3
    e8833c4e:	c98d                	beqz	a1,e8833c80 <tcpCallback+0x576>
    e8833c50:	38400613          	li	a2,900
    e8833c54:	02f607bb          	mulw	a5,a2,a5
    e8833c58:	02e7cb63          	blt	a5,a4,e8833c8e <tcpCallback+0x584>
            if (q->LongLived && q->state == LLQ_SecondaryRequest)
    e8833c5c:	1b444703          	lbu	a4,436(s0)
    e8833c60:	77c1                	lui	a5,0xffff0
    e8833c62:	4689                	li	a3,2
    e8833c64:	f0478793          	addi	a5,a5,-252 # fffffffffffeff04 <__DRAM0_INF_BASE+0xfffffffeffffff04>
    e8833c68:	04d71963          	bne	a4,a3,e8833cba <tcpCallback+0x5b0>
                q->state = LLQ_InitialRequest;
    e8833c6c:	4705                	li	a4,1
    e8833c6e:	1ae40a23          	sb	a4,436(s0)
            if (err != mStatus_ConnFailed)
    e8833c72:	e8f48ae3          	beq	s1,a5,e8833b06 <tcpCallback+0x3fc>
                if (q->LongLived && q->state != LLQ_Poll) StartLLQPolling(m, q);
    e8833c76:	85a2                	mv	a1,s0
    e8833c78:	854e                	mv	a0,s3
    e8833c7a:	fcbfc0ef          	jal	ra,e8830c44 <StartLLQPolling>
    e8833c7e:	b561                	j	e8833b06 <tcpCallback+0x3fc>
            else if (NextQSendTime(q) - m->timenow > (q->LongLived ? LLQ_POLL_INTERVAL : MAX_UCAST_POLL_INTERVAL))
    e8833c80:	6605                	lui	a2,0x1
    e8833c82:	e106061b          	addiw	a2,a2,-496
    e8833c86:	02f607bb          	mulw	a5,a2,a5
    e8833c8a:	e6e7dee3          	bge	a5,a4,e8833b06 <tcpCallback+0x3fc>
                q->ThisQInterval = q->LongLived ? LLQ_POLL_INTERVAL : MAX_UCAST_POLL_INTERVAL;
    e8833c8e:	e4f4568b          	swd	a3,a5,(s0),2,3
                SetNextQueryTime(m, q);
    e8833c92:	85a2                	mv	a1,s0
    e8833c94:	854e                	mv	a0,s3
    e8833c96:	dd6ea0ef          	jal	ra,e881e26c <SetNextQueryTime>
                LogMsg("tcpCallback: stream connection for %##s (%s) failed, retrying in %d ms", q->qname.c, DNSTypeName(q->qtype), q->ThisQInterval);
    e8833c9a:	31445503          	lhu	a0,788(s0)
    e8833c9e:	fc3e10ef          	jal	ra,e8815c60 <DNSTypeName>
    e8833ca2:	86aa                	mv	a3,a0
    e8833ca4:	4858                	lw	a4,20(s0)
    e8833ca6:	21440613          	addi	a2,s0,532
    e8833caa:	0007b597          	auipc	a1,0x7b
    e8833cae:	39e58593          	addi	a1,a1,926 # e88af048 <__func__.9833+0x10b0>
    e8833cb2:	4501                	li	a0,0
    e8833cb4:	ff8fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8833cb8:	b599                	j	e8833afe <tcpCallback+0x3f4>
            if (err != mStatus_ConnFailed)
    e8833cba:	e4f486e3          	beq	s1,a5,e8833b06 <tcpCallback+0x3fc>
                if (q->LongLived && q->state != LLQ_Poll) StartLLQPolling(m, q);
    e8833cbe:	4791                	li	a5,4
    e8833cc0:	e4f703e3          	beq	a4,a5,e8833b06 <tcpCallback+0x3fc>
    e8833cc4:	bf4d                	j	e8833c76 <tcpCallback+0x56c>
            if (backpointer)
    e8833cc6:	f20a07e3          	beqz	s4,e8833bf4 <tcpCallback+0x4ea>
    e8833cca:	bf01                	j	e8833bda <tcpCallback+0x4d0>
    if (err) goto exit;
    e8833ccc:	aa0683e3          	beqz	a3,e8833772 <tcpCallback+0x68>
    e8833cd0:	b355                	j	e8833a74 <tcpCallback+0x36a>

00000000e8833cd2 <MakeTCPConn>:
{
    e8833cd2:	7159                	addi	sp,sp,-112
    e8833cd4:	f45e                	sd	s7,40(sp)
    e8833cd6:	8bbe                	mv	s7,a5
    mDNSIPPort srcport = zeroIPPort;
    e8833cd8:	00070797          	auipc	a5,0x70
    e8833cdc:	8d078793          	addi	a5,a5,-1840 # e88a35a8 <zeroIPPort>
    e8833ce0:	0007d783          	lhu	a5,0(a5)
{
    e8833ce4:	e8ca                	sd	s2,80(sp)
    e8833ce6:	e4ce                	sd	s3,72(sp)
    e8833ce8:	e0d2                	sd	s4,64(sp)
    e8833cea:	fc56                	sd	s5,56(sp)
    e8833cec:	f85a                	sd	s6,48(sp)
    e8833cee:	f062                	sd	s8,32(sp)
    e8833cf0:	ec66                	sd	s9,24(sp)
    e8833cf2:	e86a                	sd	s10,16(sp)
    e8833cf4:	f486                	sd	ra,104(sp)
    e8833cf6:	f0a2                	sd	s0,96(sp)
    e8833cf8:	eca6                	sd	s1,88(sp)
    mDNSIPPort srcport = zeroIPPort;
    e8833cfa:	00f11423          	sh	a5,8(sp)
{
    e8833cfe:	8d2a                	mv	s10,a0
    e8833d00:	8b2e                	mv	s6,a1
    e8833d02:	8a32                	mv	s4,a2
    e8833d04:	8c36                	mv	s8,a3
    e8833d06:	89ba                	mv	s3,a4
    e8833d08:	8ac2                	mv	s5,a6
    e8833d0a:	8946                	mv	s2,a7
    e8833d0c:	4c81                	li	s9,0
    useBackgroundTrafficClass = question ? question->UseBackgroundTrafficClass : mDNSfalse;
    e8833d0e:	00088463          	beqz	a7,e8833d16 <MakeTCPConn+0x44>
    e8833d12:	3208cc83          	lbu	s9,800(a7)
    if ((flags & kTCPSocketFlags_UseTLS) && (!hostname || !hostname->c[0]))
    e8833d16:	020c0063          	beqz	s8,e8833d36 <MakeTCPConn+0x64>
    e8833d1a:	000a8563          	beqz	s5,e8833d24 <MakeTCPConn+0x52>
    e8833d1e:	000ac783          	lbu	a5,0(s5)
    e8833d22:	eb91                	bnez	a5,e8833d36 <MakeTCPConn+0x64>
    { LogMsg("MakeTCPConn: TLS connection being setup with NULL hostname"); return mDNSNULL; }
    e8833d24:	00079597          	auipc	a1,0x79
    e8833d28:	d7c58593          	addi	a1,a1,-644 # e88acaa0 <kOn.10632+0xb58>
    e8833d2c:	4501                	li	a0,0
    e8833d2e:	f7efb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    else if (err != mStatus_ConnPending    ) { LogInfo("MakeTCPConn: connection failed"); DisposeTCPConn(info); return(mDNSNULL); }
    e8833d32:	4401                	li	s0,0
    e8833d34:	a831                	j	e8833d50 <MakeTCPConn+0x7e>
    info = (tcpInfo_t *)mDNSPlatformMemAllocate(sizeof(tcpInfo_t));
    e8833d36:	6489                	lui	s1,0x2
    e8833d38:	35848513          	addi	a0,s1,856 # 2358 <memcmp-0xe87fdca8>
    e8833d3c:	d26fc0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8833d40:	842a                	mv	s0,a0
    if (!info) { LogMsg("ERROR: MakeTCP - memallocate failed"); return(mDNSNULL); }
    e8833d42:	e515                	bnez	a0,e8833d6e <MakeTCPConn+0x9c>
    e8833d44:	00079597          	auipc	a1,0x79
    e8833d48:	d9c58593          	addi	a1,a1,-612 # e88acae0 <kOn.10632+0xb98>
    e8833d4c:	f60fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8833d50:	8522                	mv	a0,s0
    e8833d52:	70a6                	ld	ra,104(sp)
    e8833d54:	7406                	ld	s0,96(sp)
    e8833d56:	64e6                	ld	s1,88(sp)
    e8833d58:	6946                	ld	s2,80(sp)
    e8833d5a:	69a6                	ld	s3,72(sp)
    e8833d5c:	6a06                	ld	s4,64(sp)
    e8833d5e:	7ae2                	ld	s5,56(sp)
    e8833d60:	7b42                	ld	s6,48(sp)
    e8833d62:	7ba2                	ld	s7,40(sp)
    e8833d64:	7c02                	ld	s8,32(sp)
    e8833d66:	6ce2                	ld	s9,24(sp)
    e8833d68:	6d42                	ld	s10,16(sp)
    e8833d6a:	6165                	addi	sp,sp,112
    e8833d6c:	8082                	ret
    mDNSPlatformMemZero(info, sizeof(tcpInfo_t));
    e8833d6e:	35848593          	addi	a1,s1,856
    e8833d72:	d85fb0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    info->m          = m;
    e8833d76:	01a43023          	sd	s10,0(s0)
    info->sock       = mDNSPlatformTCPSocket(flags, &srcport, useBackgroundTrafficClass);
    e8833d7a:	8666                	mv	a2,s9
    e8833d7c:	002c                	addi	a1,sp,8
    e8833d7e:	8562                	mv	a0,s8
    e8833d80:	b79fb0ef          	jal	ra,e882f8f8 <mDNSPlatformTCPSocket>
    e8833d84:	e408                	sd	a0,8(s0)
    info->rr         = rr;
    e8833d86:	7746                	ld	a4,112(sp)
    info->requestLen = 0;
    e8833d88:	009407b3          	add	a5,s0,s1
    e8833d8c:	3007a423          	sw	zero,776(a5)
    info->rr         = rr;
    e8833d90:	30e7bc23          	sd	a4,792(a5)
    info->question   = question;
    e8833d94:	3127b823          	sd	s2,784(a5)
    info->Addr       = *Addr;
    e8833d98:	0009b683          	ld	a3,0(s3)
    info->SrcPort = srcport;
    e8833d9c:	00815703          	lhu	a4,8(sp)
    info->Addr       = *Addr;
    e8833da0:	32d7b023          	sd	a3,800(a5)
    e8833da4:	0089b683          	ld	a3,8(s3)
    e8833da8:	32d7b423          	sd	a3,808(a5)
    e8833dac:	0109a683          	lw	a3,16(s3)
    info->Port       = Port;
    e8833db0:	33779a23          	sh	s7,820(a5)
    info->reply      = mDNSNULL;
    e8833db4:	3207bc23          	sd	zero,824(a5)
    info->Addr       = *Addr;
    e8833db8:	32d7a823          	sw	a3,816(a5)
    info->replylen   = 0;
    e8833dbc:	34079023          	sh	zero,832(a5)
    info->nread      = 0;
    e8833dc0:	3407b423          	sd	zero,840(a5)
    info->numReplies = 0;
    e8833dc4:	3407a823          	sw	zero,848(a5)
    info->SrcPort = srcport;
    e8833dc8:	32e79b23          	sh	a4,822(a5)
    if (msg)
    e8833dcc:	000b0c63          	beqz	s6,e8833de4 <MakeTCPConn+0x112>
        info->requestLen = (int) (end - ((mDNSu8*)msg));
    e8833dd0:	416a0633          	sub	a2,s4,s6
    e8833dd4:	30c7a423          	sw	a2,776(a5)
        mDNSPlatformMemCopy(&info->request, msg, info->requestLen);
    e8833dd8:	85da                	mv	a1,s6
    e8833dda:	2601                	sext.w	a2,a2
    e8833ddc:	01040513          	addi	a0,s0,16
    e8833de0:	cc1fb0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    if (!info->sock) { LogMsg("MakeTCPConn: unable to create TCP socket"); mDNSPlatformMemFree(info); return(mDNSNULL); }
    e8833de4:	6408                	ld	a0,8(s0)
    e8833de6:	e919                	bnez	a0,e8833dfc <MakeTCPConn+0x12a>
    e8833de8:	00079597          	auipc	a1,0x79
    e8833dec:	d2058593          	addi	a1,a1,-736 # e88acb08 <kOn.10632+0xbc0>
    e8833df0:	ebcfb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8833df4:	8522                	mv	a0,s0
    e8833df6:	c8cfc0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    e8833dfa:	bf25                	j	e8833d32 <MakeTCPConn+0x60>
    mDNSPlatformSetSocktOpt(info->sock, mDNSTransport_TCP, Addr->type, question);
    e8833dfc:	00098603          	lb	a2,0(s3)
    e8833e00:	86ca                	mv	a3,s2
    e8833e02:	4589                	li	a1,2
    e8833e04:	93bfc0ef          	jal	ra,e883073e <mDNSPlatformSetSocktOpt>
    err = mDNSPlatformTCPConnect(info->sock, Addr, Port, hostname, (question ? question->InterfaceID : mDNSNULL), tcpCallback, info);
    e8833e08:	6408                	ld	a0,8(s0)
    e8833e0a:	00090463          	beqz	s2,e8833e12 <MakeTCPConn+0x140>
    e8833e0e:	1f093903          	ld	s2,496(s2)
    e8833e12:	00000797          	auipc	a5,0x0
    e8833e16:	8f878793          	addi	a5,a5,-1800 # e883370a <tcpCallback>
    e8833e1a:	874a                	mv	a4,s2
    e8833e1c:	8822                	mv	a6,s0
    e8833e1e:	86d6                	mv	a3,s5
    e8833e20:	865e                	mv	a2,s7
    e8833e22:	85ce                	mv	a1,s3
    e8833e24:	addfb0ef          	jal	ra,e882f900 <mDNSPlatformTCPConnect>
    if      (err == mStatus_ConnEstablished) { tcpCallback(info->sock, info, mDNStrue, mStatus_NoError); }
    e8833e28:	77c1                	lui	a5,0xffff0
    e8833e2a:	f0378713          	addi	a4,a5,-253 # fffffffffffeff03 <__DRAM0_INF_BASE+0xfffffffeffffff03>
    e8833e2e:	00e51963          	bne	a0,a4,e8833e40 <MakeTCPConn+0x16e>
    e8833e32:	6408                	ld	a0,8(s0)
    e8833e34:	4681                	li	a3,0
    e8833e36:	4605                	li	a2,1
    e8833e38:	85a2                	mv	a1,s0
    e8833e3a:	8d1ff0ef          	jal	ra,e883370a <tcpCallback>
    e8833e3e:	bf09                	j	e8833d50 <MakeTCPConn+0x7e>
    else if (err != mStatus_ConnPending    ) { LogInfo("MakeTCPConn: connection failed"); DisposeTCPConn(info); return(mDNSNULL); }
    e8833e40:	f0578793          	addi	a5,a5,-251
    e8833e44:	f0f506e3          	beq	a0,a5,e8833d50 <MakeTCPConn+0x7e>
    e8833e48:	000a1797          	auipc	a5,0xa1
    e8833e4c:	c2c78793          	addi	a5,a5,-980 # e88d4a74 <mDNS_LoggingEnabled>
    e8833e50:	439c                	lw	a5,0(a5)
    e8833e52:	cb81                	beqz	a5,e8833e62 <MakeTCPConn+0x190>
    e8833e54:	00079597          	auipc	a1,0x79
    e8833e58:	ce458593          	addi	a1,a1,-796 # e88acb38 <kOn.10632+0xbf0>
    e8833e5c:	450d                	li	a0,3
    e8833e5e:	e4efb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8833e62:	8522                	mv	a0,s0
    e8833e64:	87fff0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8833e68:	b5e9                	j	e8833d32 <MakeTCPConn+0x60>

00000000e8833e6a <PrivateQueryGotZoneData>:
{
    e8833e6a:	715d                	addi	sp,sp,-80
    LogInfo("PrivateQueryGotZoneData %##s (%s) err %d Zone %##s Private %d", q->qname.c, DNSTypeName(q->qtype), err, zoneInfo->ZoneName.c, zoneInfo->ZonePrivate);
    e8833e6c:	000a1797          	auipc	a5,0xa1
    e8833e70:	c0878793          	addi	a5,a5,-1016 # e88d4a74 <mDNS_LoggingEnabled>
{
    e8833e74:	fc26                	sd	s1,56(sp)
    e8833e76:	f84a                	sd	s2,48(sp)
    e8833e78:	f44e                	sd	s3,40(sp)
    e8833e7a:	f052                	sd	s4,32(sp)
    e8833e7c:	e486                	sd	ra,72(sp)
    e8833e7e:	e0a2                	sd	s0,64(sp)
    LogInfo("PrivateQueryGotZoneData %##s (%s) err %d Zone %##s Private %d", q->qname.c, DNSTypeName(q->qtype), err, zoneInfo->ZoneName.c, zoneInfo->ZonePrivate);
    e8833e80:	4398                	lw	a4,0(a5)
{
    e8833e82:	892a                	mv	s2,a0
    e8833e84:	89ae                	mv	s3,a1
    e8833e86:	84b2                	mv	s1,a2
    DNSQuestion *q = (DNSQuestion *) zoneInfo->ZoneDataContext;
    e8833e88:	33863403          	ld	s0,824(a2) # 1338 <memcmp-0xe87fecc8>
    LogInfo("PrivateQueryGotZoneData %##s (%s) err %d Zone %##s Private %d", q->qname.c, DNSTypeName(q->qtype), err, zoneInfo->ZoneName.c, zoneInfo->ZonePrivate);
    e8833e8c:	8a3e                	mv	s4,a5
    e8833e8e:	c705                	beqz	a4,e8833eb6 <PrivateQueryGotZoneData+0x4c>
    e8833e90:	31445503          	lhu	a0,788(s0)
    e8833e94:	dcde10ef          	jal	ra,e8815c60 <DNSTypeName>
    e8833e98:	86aa                	mv	a3,a0
    e8833e9a:	3284c803          	lbu	a6,808(s1)
    e8833e9e:	11048793          	addi	a5,s1,272
    e8833ea2:	874e                	mv	a4,s3
    e8833ea4:	21440613          	addi	a2,s0,532
    e8833ea8:	00079597          	auipc	a1,0x79
    e8833eac:	fc858593          	addi	a1,a1,-56 # e88ace70 <kOn.10632+0xf28>
    e8833eb0:	450d                	li	a0,3
    e8833eb2:	dfafb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (q->nta != zoneInfo) LogMsg("PrivateQueryGotZoneData:ERROR!!: nta (%p) != zoneInfo (%p)  %##s (%s)", q->nta, zoneInfo, q->qname.c, DNSTypeName(q->qtype));
    e8833eb6:	18843603          	ld	a2,392(s0)
    e8833eba:	ec32                	sd	a2,24(sp)
    e8833ebc:	02960263          	beq	a2,s1,e8833ee0 <PrivateQueryGotZoneData+0x76>
    e8833ec0:	31445503          	lhu	a0,788(s0)
    e8833ec4:	d9de10ef          	jal	ra,e8815c60 <DNSTypeName>
    e8833ec8:	87aa                	mv	a5,a0
    e8833eca:	6662                	ld	a2,24(sp)
    e8833ecc:	21440713          	addi	a4,s0,532
    e8833ed0:	86a6                	mv	a3,s1
    e8833ed2:	00079597          	auipc	a1,0x79
    e8833ed6:	fde58593          	addi	a1,a1,-34 # e88aceb0 <kOn.10632+0xf68>
    e8833eda:	4501                	li	a0,0
    e8833edc:	dd0fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (err || !zoneInfo || mDNSAddressIsZero(&zoneInfo->Addr) || mDNSIPPortIsZero(zoneInfo->Port) || !zoneInfo->Host.c[0])
    e8833ee0:	02099163          	bnez	s3,e8833f02 <PrivateQueryGotZoneData+0x98>
    e8833ee4:	cc99                	beqz	s1,e8833f02 <PrivateQueryGotZoneData+0x98>
    e8833ee6:	3144a783          	lw	a5,788(s1)
    e8833eea:	4711                	li	a4,4
    e8833eec:	06e79363          	bne	a5,a4,e8833f52 <PrivateQueryGotZoneData+0xe8>
    e8833ef0:	3184a783          	lw	a5,792(s1)
    e8833ef4:	c799                	beqz	a5,e8833f02 <PrivateQueryGotZoneData+0x98>
    e8833ef6:	3124d783          	lhu	a5,786(s1)
    e8833efa:	c781                	beqz	a5,e8833f02 <PrivateQueryGotZoneData+0x98>
    e8833efc:	2124c783          	lbu	a5,530(s1)
    e8833f00:	efa5                	bnez	a5,e8833f78 <PrivateQueryGotZoneData+0x10e>
        LogInfo("PrivateQueryGotZoneData: ERROR!! %##s (%s) invoked with error code %d %p %#a:%d",
    e8833f02:	000a2783          	lw	a5,0(s4)
    e8833f06:	cf95                	beqz	a5,e8833f42 <PrivateQueryGotZoneData+0xd8>
    e8833f08:	31445503          	lhu	a0,788(s0)
    e8833f0c:	21440613          	addi	a2,s0,532
    e8833f10:	ec32                	sd	a2,24(sp)
    e8833f12:	d4fe10ef          	jal	ra,e8815c60 <DNSTypeName>
    e8833f16:	86aa                	mv	a3,a0
    e8833f18:	6662                	ld	a2,24(sp)
    e8833f1a:	cca1                	beqz	s1,e8833f72 <PrivateQueryGotZoneData+0x108>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8833f1c:	3124c883          	lbu	a7,786(s1)
    e8833f20:	3134c783          	lbu	a5,787(s1)
    e8833f24:	31448813          	addi	a6,s1,788
    e8833f28:	0088989b          	slliw	a7,a7,0x8
    e8833f2c:	00f8e8b3          	or	a7,a7,a5
    e8833f30:	87a6                	mv	a5,s1
    e8833f32:	874e                	mv	a4,s3
    e8833f34:	00079597          	auipc	a1,0x79
    e8833f38:	fc458593          	addi	a1,a1,-60 # e88acef8 <kOn.10632+0xfb0>
    e8833f3c:	450d                	li	a0,3
    e8833f3e:	d6efb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        CancelGetZoneData(m, q->nta);
    e8833f42:	18843583          	ld	a1,392(s0)
    if (q->nta) { CancelGetZoneData(m, q->nta); q->nta = mDNSNULL; }
    e8833f46:	854a                	mv	a0,s2
    e8833f48:	8eded0ef          	jal	ra,e8821834 <CancelGetZoneData>
    e8833f4c:	18043423          	sd	zero,392(s0)
    e8833f50:	a235                	j	e883407c <PrivateQueryGotZoneData+0x212>
    if (err || !zoneInfo || mDNSAddressIsZero(&zoneInfo->Addr) || mDNSIPPortIsZero(zoneInfo->Port) || !zoneInfo->Host.c[0])
    e8833f52:	4719                	li	a4,6
    e8833f54:	fae791e3          	bne	a5,a4,e8833ef6 <PrivateQueryGotZoneData+0x8c>
    e8833f58:	31c4a703          	lw	a4,796(s1)
    e8833f5c:	3184a783          	lw	a5,792(s1)
    e8833f60:	8fd9                	or	a5,a5,a4
    e8833f62:	3204a703          	lw	a4,800(s1)
    e8833f66:	8fd9                	or	a5,a5,a4
    e8833f68:	3244a703          	lw	a4,804(s1)
    e8833f6c:	8fd9                	or	a5,a5,a4
    e8833f6e:	2781                	sext.w	a5,a5
    e8833f70:	b751                	j	e8833ef4 <PrivateQueryGotZoneData+0x8a>
        LogInfo("PrivateQueryGotZoneData: ERROR!! %##s (%s) invoked with error code %d %p %#a:%d",
    e8833f72:	4801                	li	a6,0
    e8833f74:	4881                	li	a7,0
    e8833f76:	bf6d                	j	e8833f30 <PrivateQueryGotZoneData+0xc6>
    if (!zoneInfo->ZonePrivate)
    e8833f78:	3284c783          	lbu	a5,808(s1)
    e8833f7c:	e3b5                	bnez	a5,e8833fe0 <PrivateQueryGotZoneData+0x176>
        q->ThisQInterval = InitialQuestionInterval;
    e8833f7e:	000a1797          	auipc	a5,0xa1
    e8833f82:	b0278793          	addi	a5,a5,-1278 # e88d4a80 <mDNSPlatformOneSecond>
    e8833f86:	439c                	lw	a5,0(a5)
    e8833f88:	470d                	li	a4,3
        q->AuthInfo      = mDNSNULL;        // Clear AuthInfo so we try again non-private
    e8833f8a:	04043423          	sd	zero,72(s0)
        q->ThisQInterval = InitialQuestionInterval;
    e8833f8e:	2789                	addiw	a5,a5,2
    e8833f90:	02e7c7bb          	divw	a5,a5,a4
        CancelGetZoneData(m, q->nta);
    e8833f94:	18843583          	ld	a1,392(s0)
    e8833f98:	854a                	mv	a0,s2
        q->ThisQInterval = InitialQuestionInterval;
    e8833f9a:	c85c                	sw	a5,20(s0)
        q->LastQTime     = m->timenow - q->ThisQInterval;
    e8833f9c:	24092703          	lw	a4,576(s2)
    e8833fa0:	40f707bb          	subw	a5,a4,a5
    e8833fa4:	c81c                	sw	a5,16(s0)
        CancelGetZoneData(m, q->nta);
    e8833fa6:	88fed0ef          	jal	ra,e8821834 <CancelGetZoneData>
        q->nta = mDNSNULL;
    e8833faa:	18043423          	sd	zero,392(s0)
        mDNS_Lock(m);
    e8833fae:	854a                	mv	a0,s2
    e8833fb0:	0007a597          	auipc	a1,0x7a
    e8833fb4:	f7858593          	addi	a1,a1,-136 # e88adf28 <__func__.9625>
    e8833fb8:	a4be10ef          	jal	ra,e8815a02 <mDNS_Lock_>
        SetNextQueryTime(m, q);
    e8833fbc:	85a2                	mv	a1,s0
    e8833fbe:	854a                	mv	a0,s2
    e8833fc0:	aacea0ef          	jal	ra,e881e26c <SetNextQueryTime>
}
    e8833fc4:	6406                	ld	s0,64(sp)
    e8833fc6:	60a6                	ld	ra,72(sp)
    e8833fc8:	74e2                	ld	s1,56(sp)
    e8833fca:	79a2                	ld	s3,40(sp)
    e8833fcc:	7a02                	ld	s4,32(sp)
        mDNS_Unlock(m);
    e8833fce:	854a                	mv	a0,s2
}
    e8833fd0:	7942                	ld	s2,48(sp)
        mDNS_Unlock(m);
    e8833fd2:	0007a597          	auipc	a1,0x7a
    e8833fd6:	f5658593          	addi	a1,a1,-170 # e88adf28 <__func__.9625>
}
    e8833fda:	6161                	addi	sp,sp,80
        mDNS_Unlock(m);
    e8833fdc:	af1e106f          	j	e8815acc <mDNS_Unlock_>
    if (!PrivateQuery(q))
    e8833fe0:	643c                	ld	a5,72(s0)
    e8833fe2:	c781                	beqz	a5,e8833fea <PrivateQueryGotZoneData+0x180>
    e8833fe4:	00c7c783          	lbu	a5,12(a5)
    e8833fe8:	e38d                	bnez	a5,e883400a <PrivateQueryGotZoneData+0x1a0>
        LogMsg("PrivateQueryGotZoneData: ERROR!! Not a private query %##s (%s) AuthInfo %p", q->qname.c, DNSTypeName(q->qtype), q->AuthInfo);
    e8833fea:	31445503          	lhu	a0,788(s0)
    e8833fee:	c73e10ef          	jal	ra,e8815c60 <DNSTypeName>
    e8833ff2:	86aa                	mv	a3,a0
    e8833ff4:	6438                	ld	a4,72(s0)
    e8833ff6:	21440613          	addi	a2,s0,532
    e8833ffa:	00079597          	auipc	a1,0x79
    e8833ffe:	f4e58593          	addi	a1,a1,-178 # e88acf48 <kOn.10632+0x1000>
    e8834002:	4501                	li	a0,0
    e8834004:	ca8fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8834008:	bf2d                	j	e8833f42 <PrivateQueryGotZoneData+0xd8>
    q->TargetQID = mDNS_NewMessageID(m);
    e883400a:	854a                	mv	a0,s2
    e883400c:	b62f10ef          	jal	ra,e882536e <mDNS_NewMessageID>
    e8834010:	20a41923          	sh	a0,530(s0)
    if (q->tcp) { DisposeTCPConn(q->tcp); q->tcp = mDNSNULL; }
    e8834014:	1a843503          	ld	a0,424(s0)
    e8834018:	c509                	beqz	a0,e8834022 <PrivateQueryGotZoneData+0x1b8>
    e883401a:	ec8ff0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e883401e:	1a043423          	sd	zero,424(s0)
    if (!q->nta) { LogMsg("PrivateQueryGotZoneData:ERROR!! nta is NULL for %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8834022:	18843803          	ld	a6,392(s0)
    e8834026:	02081763          	bnez	a6,e8834054 <PrivateQueryGotZoneData+0x1ea>
    e883402a:	31445503          	lhu	a0,788(s0)
    e883402e:	c33e10ef          	jal	ra,e8815c60 <DNSTypeName>
}
    e8834032:	74e2                	ld	s1,56(sp)
    if (!q->nta) { LogMsg("PrivateQueryGotZoneData:ERROR!! nta is NULL for %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8834034:	21440613          	addi	a2,s0,532
}
    e8834038:	6406                	ld	s0,64(sp)
    e883403a:	60a6                	ld	ra,72(sp)
    e883403c:	7942                	ld	s2,48(sp)
    e883403e:	79a2                	ld	s3,40(sp)
    e8834040:	7a02                	ld	s4,32(sp)
    if (!q->nta) { LogMsg("PrivateQueryGotZoneData:ERROR!! nta is NULL for %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8834042:	86aa                	mv	a3,a0
    e8834044:	00079597          	auipc	a1,0x79
    e8834048:	f5458593          	addi	a1,a1,-172 # e88acf98 <kOn.10632+0x1050>
    e883404c:	4501                	li	a0,0
}
    e883404e:	6161                	addi	sp,sp,80
    if (!q->nta) { LogMsg("PrivateQueryGotZoneData:ERROR!! nta is NULL for %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8834050:	c5cfb06f          	j	e882f4ac <LogMsgWithLevel>
    q->tcp = MakeTCPConn(m, mDNSNULL, mDNSNULL, kTCPSocketFlags_UseTLS, &zoneInfo->Addr, zoneInfo->Port, &q->nta->Host, q, mDNSNULL);
    e8834054:	3124d783          	lhu	a5,786(s1)
    e8834058:	4581                	li	a1,0
    e883405a:	e002                	sd	zero,0(sp)
    e883405c:	88a2                	mv	a7,s0
    e883405e:	21280813          	addi	a6,a6,530
    e8834062:	31448713          	addi	a4,s1,788
    e8834066:	4685                	li	a3,1
    e8834068:	4601                	li	a2,0
    e883406a:	854a                	mv	a0,s2
    e883406c:	c67ff0ef          	jal	ra,e8833cd2 <MakeTCPConn>
    e8834070:	1aa43423          	sd	a0,424(s0)
    if (q->nta) { CancelGetZoneData(m, q->nta); q->nta = mDNSNULL; }
    e8834074:	18843583          	ld	a1,392(s0)
    e8834078:	ec0597e3          	bnez	a1,e8833f46 <PrivateQueryGotZoneData+0xdc>
}
    e883407c:	60a6                	ld	ra,72(sp)
    e883407e:	6406                	ld	s0,64(sp)
    e8834080:	74e2                	ld	s1,56(sp)
    e8834082:	7942                	ld	s2,48(sp)
    e8834084:	79a2                	ld	s3,40(sp)
    e8834086:	7a02                	ld	s4,32(sp)
    e8834088:	6161                	addi	sp,sp,80
    e883408a:	8082                	ret

00000000e883408c <SendGroupRRMessage>:
    if (!anchorRR) {debugf("SendGroupRRMessage: Could not merge records"); return;}
    e883408c:	1c058c63          	beqz	a1,e8834264 <SendGroupRRMessage+0x1d8>
{
    e8834090:	715d                	addi	sp,sp,-80
    e8834092:	e486                	sd	ra,72(sp)
    e8834094:	e0a2                	sd	s0,64(sp)
    e8834096:	fc26                	sd	s1,56(sp)
    e8834098:	f84a                	sd	s2,48(sp)
    e883409a:	f44e                	sd	s3,40(sp)
    e883409c:	f052                	sd	s4,32(sp)
    e883409e:	ec56                	sd	s5,24(sp)
    e88340a0:	e85a                	sd	s6,16(sp)
    if (info && info->AutoTunnel) limit = m->omsg.data + AbsoluteMaxDNSMessageData;
    e88340a2:	cea1                	beqz	a3,e88340fa <SendGroupRRMessage+0x6e>
    e88340a4:	00c6c783          	lbu	a5,12(a3)
    e88340a8:	cba9                	beqz	a5,e88340fa <SendGroupRRMessage+0x6e>
    e88340aa:	6925                	lui	s2,0x9
    e88340ac:	4d890913          	addi	s2,s2,1240 # 94d8 <memcmp-0xe87f6b28>
    ptr = putUpdateLeaseWithLimit(&m->omsg, ptr, DEFAULT_UPDATE_LEASE, limit);
    e88340b0:	699d                	lui	s3,0x7
    e88340b2:	1e098a93          	addi	s5,s3,480 # 71e0 <memcmp-0xe87f8e20>
    e88340b6:	87b2                	mv	a5,a2
    else limit = m->omsg.data + NormalMaxDNSMessageData;
    e88340b8:	992a                	add	s2,s2,a0
    ptr = putUpdateLeaseWithLimit(&m->omsg, ptr, DEFAULT_UPDATE_LEASE, limit);
    e88340ba:	9aaa                	add	s5,s5,a0
    e88340bc:	6609                	lui	a2,0x2
    e88340be:	8b36                	mv	s6,a3
    e88340c0:	842e                	mv	s0,a1
    e88340c2:	84aa                	mv	s1,a0
    e88340c4:	86ca                	mv	a3,s2
    e88340c6:	c2060613          	addi	a2,a2,-992 # 1c20 <memcmp-0xe87fe3e0>
    e88340ca:	85be                	mv	a1,a5
    e88340cc:	8556                	mv	a0,s5
    e88340ce:	f34e20ef          	jal	ra,e8816802 <putUpdateLeaseWithLimit>
    e88340d2:	8a2a                	mv	s4,a0
    if (!ptr)
    e88340d4:	e51d                	bnez	a0,e8834102 <SendGroupRRMessage+0x76>
        LogMsg("SendGroupRRMessage: ERROR: Could not put lease option, failing the group registration");
    e88340d6:	00079597          	auipc	a1,0x79
    e88340da:	3c258593          	addi	a1,a1,962 # e88ad498 <kOn.10632+0x1550>
    e88340de:	bcefb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e88340e2:	6406                	ld	s0,64(sp)
    e88340e4:	60a6                	ld	ra,72(sp)
    e88340e6:	7942                	ld	s2,48(sp)
    e88340e8:	79a2                	ld	s3,40(sp)
    e88340ea:	7a02                	ld	s4,32(sp)
    e88340ec:	6ae2                	ld	s5,24(sp)
    e88340ee:	6b42                	ld	s6,16(sp)
        RRMergeFailure(m);
    e88340f0:	8526                	mv	a0,s1
}
    e88340f2:	74e2                	ld	s1,56(sp)
    e88340f4:	6161                	addi	sp,sp,80
        RRMergeFailure(m);
    e88340f6:	a8afd06f          	j	e8831380 <RRMergeFailure>
    else limit = m->omsg.data + NormalMaxDNSMessageData;
    e88340fa:	691d                	lui	s2,0x7
    e88340fc:	78c90913          	addi	s2,s2,1932 # 778c <memcmp-0xe87f8874>
    e8834100:	bf45                	j	e88340b0 <SendGroupRRMessage+0x24>
    if (anchorRR->Private)
    e8834102:	15444783          	lbu	a5,340(s0)
    e8834106:	cbe9                	beqz	a5,e88341d8 <SendGroupRRMessage+0x14c>
        if (anchorRR->tcp) debugf("SendGroupRRMessage: Disposing existing TCP connection for %s", ARDisplayString(m, anchorRR));
    e8834108:	17043503          	ld	a0,368(s0)
        if (anchorRR->tcp) { DisposeTCPConn(anchorRR->tcp); anchorRR->tcp = mDNSNULL; }
    e883410c:	c509                	beqz	a0,e8834116 <SendGroupRRMessage+0x8a>
    e883410e:	dd4ff0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8834112:	16043823          	sd	zero,368(s0)
        if (!anchorRR->nta) { LogMsg("SendGroupRRMessage:ERROR!! nta is NULL for %s", ARDisplayString(m, anchorRR)); return; }
    e8834116:	16843703          	ld	a4,360(s0)
    e883411a:	eb15                	bnez	a4,e883414e <SendGroupRRMessage+0xc2>
    e883411c:	780c                	ld	a1,48(s0)
    e883411e:	03b48613          	addi	a2,s1,59
    e8834122:	00840513          	addi	a0,s0,8
    e8834126:	0591                	addi	a1,a1,4
    e8834128:	8ede20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883412c:	862a                	mv	a2,a0
    e883412e:	00079597          	auipc	a1,0x79
    e8834132:	3c258593          	addi	a1,a1,962 # e88ad4f0 <kOn.10632+0x15a8>
    e8834136:	4501                	li	a0,0
}
    e8834138:	6406                	ld	s0,64(sp)
    e883413a:	60a6                	ld	ra,72(sp)
    e883413c:	74e2                	ld	s1,56(sp)
    e883413e:	7942                	ld	s2,48(sp)
    e8834140:	79a2                	ld	s3,40(sp)
    e8834142:	7a02                	ld	s4,32(sp)
    e8834144:	6ae2                	ld	s5,24(sp)
    e8834146:	6b42                	ld	s6,16(sp)
    e8834148:	6161                	addi	sp,sp,80
        if (!anchorRR->tcp) LogInfo("SendGroupRRMessage: Cannot establish TCP connection for %s", ARDisplayString(m, anchorRR));
    e883414a:	b62fb06f          	j	e882f4ac <LogMsgWithLevel>
        anchorRR->tcp = MakeTCPConn(m, &m->omsg, ptr, kTCPSocketFlags_UseTLS, &anchorRR->nta->Addr, anchorRR->nta->Port, &anchorRR->nta->Host, mDNSNULL, anchorRR);
    e883414e:	31275783          	lhu	a5,786(a4) # 1312 <memcmp-0xe87fecee>
    e8834152:	21270813          	addi	a6,a4,530
    e8834156:	e022                	sd	s0,0(sp)
    e8834158:	4881                	li	a7,0
    e883415a:	31470713          	addi	a4,a4,788
    e883415e:	4685                	li	a3,1
    e8834160:	8652                	mv	a2,s4
    e8834162:	85d6                	mv	a1,s5
    e8834164:	8526                	mv	a0,s1
    e8834166:	b6dff0ef          	jal	ra,e8833cd2 <MakeTCPConn>
    e883416a:	16a43823          	sd	a0,368(s0)
        if (!anchorRR->tcp) LogInfo("SendGroupRRMessage: Cannot establish TCP connection for %s", ARDisplayString(m, anchorRR));
    e883416e:	000a1797          	auipc	a5,0xa1
    e8834172:	90678793          	addi	a5,a5,-1786 # e88d4a74 <mDNS_LoggingEnabled>
    e8834176:	439c                	lw	a5,0(a5)
    e8834178:	e10d                	bnez	a0,e883419a <SendGroupRRMessage+0x10e>
    e883417a:	cbf9                	beqz	a5,e8834250 <SendGroupRRMessage+0x1c4>
    e883417c:	780c                	ld	a1,48(s0)
    e883417e:	03b48613          	addi	a2,s1,59
    e8834182:	00840513          	addi	a0,s0,8
    e8834186:	0591                	addi	a1,a1,4
    e8834188:	88de20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883418c:	862a                	mv	a2,a0
    e883418e:	00079597          	auipc	a1,0x79
    e8834192:	39258593          	addi	a1,a1,914 # e88ad520 <kOn.10632+0x15d8>
    e8834196:	450d                	li	a0,3
    e8834198:	b745                	j	e8834138 <SendGroupRRMessage+0xac>
        else LogInfo("SendGroupRRMessage: Sent a group update ID: %d start %p, end %p, limit %p", mDNSVal16(m->omsg.h.id), m->omsg.data, ptr, limit);
    e883419a:	cbdd                	beqz	a5,e8834250 <SendGroupRRMessage+0x1c4>
    e883419c:	679d                	lui	a5,0x7
    e883419e:	1ec78693          	addi	a3,a5,492 # 71ec <memcmp-0xe87f8e14>
    e88341a2:	97a6                	add	a5,a5,s1
    e88341a4:	1e07c603          	lbu	a2,480(a5)
    e88341a8:	1e17c583          	lbu	a1,481(a5)
    e88341ac:	8752                	mv	a4,s4
    e88341ae:	0086161b          	slliw	a2,a2,0x8
    e88341b2:	8e4d                	or	a2,a2,a1
    e88341b4:	87ca                	mv	a5,s2
    e88341b6:	96a6                	add	a3,a3,s1
    e88341b8:	00079597          	auipc	a1,0x79
    e88341bc:	3a858593          	addi	a1,a1,936 # e88ad560 <kOn.10632+0x1618>
}
    e88341c0:	6406                	ld	s0,64(sp)
    e88341c2:	60a6                	ld	ra,72(sp)
    e88341c4:	74e2                	ld	s1,56(sp)
    e88341c6:	7942                	ld	s2,48(sp)
    e88341c8:	79a2                	ld	s3,40(sp)
    e88341ca:	7a02                	ld	s4,32(sp)
    e88341cc:	6ae2                	ld	s5,24(sp)
    e88341ce:	6b42                	ld	s6,16(sp)
        else LogInfo("SendGroupRRMessage: Sent a group UDP update ID: %d start %p, end %p, limit %p", mDNSVal16(m->omsg.h.id), m->omsg.data, ptr, limit);
    e88341d0:	450d                	li	a0,3
}
    e88341d2:	6161                	addi	sp,sp,80
        else LogInfo("SendGroupRRMessage: Sent a group UDP update ID: %d start %p, end %p, limit %p", mDNSVal16(m->omsg.h.id), m->omsg.data, ptr, limit);
    e88341d4:	ad8fb06f          	j	e882f4ac <LogMsgWithLevel>
        mStatus err = mDNSSendDNSMessage(m, &m->omsg, ptr, mDNSInterface_Any, mDNSNULL, &anchorRR->nta->Addr, anchorRR->nta->Port, mDNSNULL, info, mDNSfalse);
    e88341d8:	16843783          	ld	a5,360(s0)
    e88341dc:	0006f697          	auipc	a3,0x6f
    e88341e0:	b8468693          	addi	a3,a3,-1148 # e88a2d60 <mDNSInterface_Any>
    e88341e4:	6294                	ld	a3,0(a3)
    e88341e6:	3127d803          	lhu	a6,786(a5)
    e88341ea:	862a                	mv	a2,a0
    e88341ec:	31478793          	addi	a5,a5,788
    e88341f0:	e402                	sd	zero,8(sp)
    e88341f2:	e05a                	sd	s6,0(sp)
    e88341f4:	4881                	li	a7,0
    e88341f6:	4701                	li	a4,0
    e88341f8:	85d6                	mv	a1,s5
    e88341fa:	8526                	mv	a0,s1
    e88341fc:	cb6e30ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
        if (err) LogInfo("SendGroupRRMessage: Cannot send UDP message for %s", ARDisplayString(m, anchorRR));
    e8834200:	000a1797          	auipc	a5,0xa1
    e8834204:	87478793          	addi	a5,a5,-1932 # e88d4a74 <mDNS_LoggingEnabled>
    e8834208:	439c                	lw	a5,0(a5)
    e883420a:	c105                	beqz	a0,e883422a <SendGroupRRMessage+0x19e>
    e883420c:	c3b1                	beqz	a5,e8834250 <SendGroupRRMessage+0x1c4>
    e883420e:	780c                	ld	a1,48(s0)
    e8834210:	03b48613          	addi	a2,s1,59
    e8834214:	00840513          	addi	a0,s0,8
    e8834218:	0591                	addi	a1,a1,4
    e883421a:	ffae20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883421e:	862a                	mv	a2,a0
    e8834220:	00079597          	auipc	a1,0x79
    e8834224:	39058593          	addi	a1,a1,912 # e88ad5b0 <kOn.10632+0x1668>
    e8834228:	b7bd                	j	e8834196 <SendGroupRRMessage+0x10a>
        else LogInfo("SendGroupRRMessage: Sent a group UDP update ID: %d start %p, end %p, limit %p", mDNSVal16(m->omsg.h.id), m->omsg.data, ptr, limit);
    e883422a:	c39d                	beqz	a5,e8834250 <SendGroupRRMessage+0x1c4>
    e883422c:	1ec98693          	addi	a3,s3,492
    e8834230:	99a6                	add	s3,s3,s1
    e8834232:	1e09c603          	lbu	a2,480(s3)
    e8834236:	1e19c583          	lbu	a1,481(s3)
    e883423a:	87ca                	mv	a5,s2
    e883423c:	0086161b          	slliw	a2,a2,0x8
    e8834240:	8e4d                	or	a2,a2,a1
    e8834242:	8752                	mv	a4,s4
    e8834244:	96a6                	add	a3,a3,s1
    e8834246:	00079597          	auipc	a1,0x79
    e883424a:	3a258593          	addi	a1,a1,930 # e88ad5e8 <kOn.10632+0x16a0>
    e883424e:	bf8d                	j	e88341c0 <SendGroupRRMessage+0x134>
}
    e8834250:	60a6                	ld	ra,72(sp)
    e8834252:	6406                	ld	s0,64(sp)
    e8834254:	74e2                	ld	s1,56(sp)
    e8834256:	7942                	ld	s2,48(sp)
    e8834258:	79a2                	ld	s3,40(sp)
    e883425a:	7a02                	ld	s4,32(sp)
    e883425c:	6ae2                	ld	s5,24(sp)
    e883425e:	6b42                	ld	s6,16(sp)
    e8834260:	6161                	addi	sp,sp,80
    e8834262:	8082                	ret
    e8834264:	8082                	ret

00000000e8834266 <SendRecordRegistration>:
{
    e8834266:	711d                	addi	sp,sp,-96
    e8834268:	ec86                	sd	ra,88(sp)
    e883426a:	e8a2                	sd	s0,80(sp)
    e883426c:	e4a6                	sd	s1,72(sp)
    e883426e:	fc4e                	sd	s3,56(sp)
    e8834270:	e0ca                	sd	s2,64(sp)
    e8834272:	f852                	sd	s4,48(sp)
    e8834274:	f456                	sd	s5,40(sp)
    e8834276:	842e                	mv	s0,a1
    AuthInfo = GetAuthInfoForName_internal(m, rr->resrec.name);
    e8834278:	758c                	ld	a1,40(a1)
{
    e883427a:	84aa                	mv	s1,a0
    AuthInfo = GetAuthInfoForName_internal(m, rr->resrec.name);
    e883427c:	a10fe0ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    limit -= RRAdditionalSize(m, AuthInfo);
    e8834280:	85aa                	mv	a1,a0
    e8834282:	8526                	mv	a0,s1
    e8834284:	94bfc0ef          	jal	ra,e8830bce <RRAdditionalSize>
    e8834288:	0005099b          	sext.w	s3,a0
    mDNS_CheckLock(m);
    e883428c:	58d8                	lw	a4,52(s1)
    e883428e:	5894                	lw	a3,48(s1)
    e8834290:	0017079b          	addiw	a5,a4,1
    e8834294:	00d78d63          	beq	a5,a3,e88342ae <SendRecordRegistration+0x48>
    e8834298:	0007a617          	auipc	a2,0x7a
    e883429c:	c5060613          	addi	a2,a2,-944 # e88adee8 <__func__.9435>
    e88342a0:	00073597          	auipc	a1,0x73
    e88342a4:	ef058593          	addi	a1,a1,-272 # e88a7190 <end.8789+0x3ae8>
    e88342a8:	4501                	li	a0,0
    e88342aa:	a02fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!rr->nta || mDNSIPv4AddressIsZero(rr->nta->Addr.ip.v4))
    e88342ae:	16843783          	ld	a5,360(s0)
    e88342b2:	c781                	beqz	a5,e88342ba <SendRecordRegistration+0x54>
    e88342b4:	3187a783          	lw	a5,792(a5)
    e88342b8:	eb8d                	bnez	a5,e88342ea <SendRecordRegistration+0x84>
        LogMsg("SendRecordRegistration: No Zone information, should not happen %s", ARDisplayString(m, rr));
    e88342ba:	780c                	ld	a1,48(s0)
    e88342bc:	03b48613          	addi	a2,s1,59
    e88342c0:	00840513          	addi	a0,s0,8
    e88342c4:	0591                	addi	a1,a1,4
    e88342c6:	f4ee20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88342ca:	862a                	mv	a2,a0
    e88342cc:	00079597          	auipc	a1,0x79
    e88342d0:	36c58593          	addi	a1,a1,876 # e88ad638 <kOn.10632+0x16f0>
}
    e88342d4:	6446                	ld	s0,80(sp)
    e88342d6:	60e6                	ld	ra,88(sp)
    e88342d8:	64a6                	ld	s1,72(sp)
    e88342da:	6906                	ld	s2,64(sp)
    e88342dc:	79e2                	ld	s3,56(sp)
    e88342de:	7a42                	ld	s4,48(sp)
    e88342e0:	7aa2                	ld	s5,40(sp)
        if (!rr->nta) { LogMsg("SendRecordRegistration:Private:ERROR!! nta is NULL for %s", ARDisplayString(m, rr)); return; }
    e88342e2:	4501                	li	a0,0
}
    e88342e4:	6125                	addi	sp,sp,96
        if (!rr->nta) { LogMsg("SendRecordRegistration:Private:ERROR!! nta is NULL for %s", ARDisplayString(m, rr)); return; }
    e88342e6:	9c6fb06f          	j	e882f4ac <LogMsgWithLevel>
    rr->updateid = mDNS_NewMessageID(m);
    e88342ea:	8526                	mv	a0,s1
    e88342ec:	882f10ef          	jal	ra,e882536e <mDNS_NewMessageID>
    limit = ptr + AbsoluteMaxDNSMessageData;
    e88342f0:	6925                	lui	s2,0x9
    limit -= RRAdditionalSize(m, AuthInfo);
    e88342f2:	7c09b98b          	extu	s3,s3,31,0
    limit = ptr + AbsoluteMaxDNSMessageData;
    e88342f6:	4d890913          	addi	s2,s2,1240 # 94d8 <memcmp-0xe87f6b28>
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e88342fa:	0006f797          	auipc	a5,0x6f
    e88342fe:	a2e78793          	addi	a5,a5,-1490 # e88a2d28 <UpdateReqFlags>
    e8834302:	6a1d                	lui	s4,0x7
    limit = ptr + AbsoluteMaxDNSMessageData;
    e8834304:	9926                	add	s2,s2,s1
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e8834306:	0007d603          	lhu	a2,0(a5)
    limit -= RRAdditionalSize(m, AuthInfo);
    e883430a:	41390933          	sub	s2,s2,s3
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e883430e:	1e0a0993          	addi	s3,s4,480 # 71e0 <memcmp-0xe87f8e20>
    e8834312:	99a6                	add	s3,s3,s1
    e8834314:	85aa                	mv	a1,a0
    rr->updateid = mDNS_NewMessageID(m);
    e8834316:	14a41b23          	sh	a0,342(s0)
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e883431a:	854e                	mv	a0,s3
    e883431c:	b30e00ef          	jal	ra,e881464c <InitializeDNSMessage>
mDNSinline mDNSOpaque16 mDNSOpaque16fromIntVal(mDNSu16 v)
{
    mDNSOpaque16 x;
    x.b[0] = (mDNSu8)(v >> 8);
    x.b[1] = (mDNSu8)(v & 0xFF);
    return(x);
    e8834320:	00c45783          	lhu	a5,12(s0)
    ptr = putZone(&m->omsg, ptr, limit, rr->zone, mDNSOpaque16fromIntVal(rr->resrec.rrclass));
    e8834324:	16043683          	ld	a3,352(s0)
    mDNSu8 *ptr = m->omsg.data;
    e8834328:	1eca0593          	addi	a1,s4,492
    e883432c:	0087971b          	slliw	a4,a5,0x8
    e8834330:	5c87b78b          	extu	a5,a5,23,8
    ptr = putZone(&m->omsg, ptr, limit, rr->zone, mDNSOpaque16fromIntVal(rr->resrec.rrclass));
    e8834334:	95a6                	add	a1,a1,s1
    e8834336:	8f5d                	or	a4,a4,a5
    e8834338:	864a                	mv	a2,s2
    e883433a:	854e                	mv	a0,s3
    e883433c:	d1ae00ef          	jal	ra,e8814856 <putZone>
    e8834340:	85aa                	mv	a1,a0
    if (!ptr) goto exit;
    e8834342:	16050c63          	beqz	a0,e88344ba <SendRecordRegistration+0x254>
    if (!(ptr = BuildUpdateMessage(m, ptr, rr, limit))) goto exit;
    e8834346:	86ca                	mv	a3,s2
    e8834348:	8622                	mv	a2,s0
    e883434a:	8526                	mv	a0,s1
    e883434c:	ab6fd0ef          	jal	ra,e8831602 <BuildUpdateMessage>
    e8834350:	8a2a                	mv	s4,a0
    e8834352:	16050463          	beqz	a0,e88344ba <SendRecordRegistration+0x254>
    if (rr->uselease)
    e8834356:	14d44783          	lbu	a5,333(s0)
    e883435a:	cf81                	beqz	a5,e8834372 <SendRecordRegistration+0x10c>
        ptr = putUpdateLeaseWithLimit(&m->omsg, ptr, DEFAULT_UPDATE_LEASE, limit);
    e883435c:	6609                	lui	a2,0x2
    e883435e:	85aa                	mv	a1,a0
    e8834360:	86ca                	mv	a3,s2
    e8834362:	c2060613          	addi	a2,a2,-992 # 1c20 <memcmp-0xe87fe3e0>
    e8834366:	854e                	mv	a0,s3
    e8834368:	c9ae20ef          	jal	ra,e8816802 <putUpdateLeaseWithLimit>
    e883436c:	8a2a                	mv	s4,a0
        if (!ptr) goto exit;
    e883436e:	14050663          	beqz	a0,e88344ba <SendRecordRegistration+0x254>
    if (rr->Private)
    e8834372:	15444683          	lbu	a3,340(s0)
    e8834376:	000a0797          	auipc	a5,0xa0
    e883437a:	6fe78793          	addi	a5,a5,1790 # e88d4a74 <mDNS_LoggingEnabled>
    e883437e:	4398                	lw	a4,0(a5)
    e8834380:	893e                	mv	s2,a5
    e8834382:	c2e1                	beqz	a3,e8834442 <SendRecordRegistration+0x1dc>
        LogInfo("SendRecordRegistration TCP %p %s", rr->tcp, ARDisplayString(m, rr));
    e8834384:	c705                	beqz	a4,e88343ac <SendRecordRegistration+0x146>
    e8834386:	780c                	ld	a1,48(s0)
    e8834388:	17043a83          	ld	s5,368(s0)
    e883438c:	03b48613          	addi	a2,s1,59
    e8834390:	0591                	addi	a1,a1,4
    e8834392:	00840513          	addi	a0,s0,8
    e8834396:	e7ee20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883439a:	86aa                	mv	a3,a0
    e883439c:	8656                	mv	a2,s5
    e883439e:	00079597          	auipc	a1,0x79
    e88343a2:	2e258593          	addi	a1,a1,738 # e88ad680 <kOn.10632+0x1738>
    e88343a6:	450d                	li	a0,3
    e88343a8:	904fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (rr->tcp) LogInfo("SendRecordRegistration: Disposing existing TCP connection for %s", ARDisplayString(m, rr));
    e88343ac:	17043783          	ld	a5,368(s0)
    e88343b0:	c785                	beqz	a5,e88343d8 <SendRecordRegistration+0x172>
    e88343b2:	00092783          	lw	a5,0(s2)
    e88343b6:	c38d                	beqz	a5,e88343d8 <SendRecordRegistration+0x172>
    e88343b8:	780c                	ld	a1,48(s0)
    e88343ba:	03b48613          	addi	a2,s1,59
    e88343be:	00840513          	addi	a0,s0,8
    e88343c2:	0591                	addi	a1,a1,4
    e88343c4:	e50e20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88343c8:	862a                	mv	a2,a0
    e88343ca:	00079597          	auipc	a1,0x79
    e88343ce:	2de58593          	addi	a1,a1,734 # e88ad6a8 <kOn.10632+0x1760>
    e88343d2:	450d                	li	a0,3
    e88343d4:	8d8fb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL; }
    e88343d8:	17043503          	ld	a0,368(s0)
    e88343dc:	c509                	beqz	a0,e88343e6 <SendRecordRegistration+0x180>
    e88343de:	b04ff0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e88343e2:	16043823          	sd	zero,368(s0)
        if (!rr->nta) { LogMsg("SendRecordRegistration:Private:ERROR!! nta is NULL for %s", ARDisplayString(m, rr)); return; }
    e88343e6:	16843703          	ld	a4,360(s0)
    e88343ea:	ef19                	bnez	a4,e8834408 <SendRecordRegistration+0x1a2>
    e88343ec:	780c                	ld	a1,48(s0)
    e88343ee:	03b48613          	addi	a2,s1,59
    e88343f2:	00840513          	addi	a0,s0,8
    e88343f6:	0591                	addi	a1,a1,4
    e88343f8:	e1ce20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88343fc:	862a                	mv	a2,a0
    e88343fe:	00079597          	auipc	a1,0x79
    e8834402:	2f258593          	addi	a1,a1,754 # e88ad6f0 <kOn.10632+0x17a8>
    e8834406:	b5f9                	j	e88342d4 <SendRecordRegistration+0x6e>
        rr->tcp = MakeTCPConn(m, &m->omsg, ptr, kTCPSocketFlags_UseTLS, &rr->nta->Addr, rr->nta->Port, &rr->nta->Host, mDNSNULL, rr);
    e8834408:	31275783          	lhu	a5,786(a4)
    e883440c:	21270813          	addi	a6,a4,530
    e8834410:	e022                	sd	s0,0(sp)
    e8834412:	4881                	li	a7,0
    e8834414:	31470713          	addi	a4,a4,788
    e8834418:	4685                	li	a3,1
    e883441a:	8652                	mv	a2,s4
    e883441c:	85ce                	mv	a1,s3
    e883441e:	8526                	mv	a0,s1
    e8834420:	8b3ff0ef          	jal	ra,e8833cd2 <MakeTCPConn>
    e8834424:	16a43823          	sd	a0,368(s0)
    SetRecordRetry(m, rr, 0);
    e8834428:	85a2                	mv	a1,s0
}
    e883442a:	6446                	ld	s0,80(sp)
    e883442c:	60e6                	ld	ra,88(sp)
    e883442e:	6906                	ld	s2,64(sp)
    e8834430:	79e2                	ld	s3,56(sp)
    e8834432:	7a42                	ld	s4,48(sp)
    e8834434:	7aa2                	ld	s5,40(sp)
    SetRecordRetry(m, rr, 0);
    e8834436:	8526                	mv	a0,s1
}
    e8834438:	64a6                	ld	s1,72(sp)
    SetRecordRetry(m, rr, 0);
    e883443a:	4601                	li	a2,0
}
    e883443c:	6125                	addi	sp,sp,96
    SetRecordRetry(m, rr, 0);
    e883443e:	bf9fc06f          	j	e8831036 <SetRecordRetry>
        LogInfo("SendRecordRegistration UDP %s", ARDisplayString(m, rr));
    e8834442:	c30d                	beqz	a4,e8834464 <SendRecordRegistration+0x1fe>
    e8834444:	780c                	ld	a1,48(s0)
    e8834446:	03b48613          	addi	a2,s1,59
    e883444a:	00840513          	addi	a0,s0,8
    e883444e:	0591                	addi	a1,a1,4
    e8834450:	dc4e20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8834454:	862a                	mv	a2,a0
    e8834456:	00079597          	auipc	a1,0x79
    e883445a:	2da58593          	addi	a1,a1,730 # e88ad730 <kOn.10632+0x17e8>
    e883445e:	450d                	li	a0,3
    e8834460:	84cfb0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!rr->nta) { LogMsg("SendRecordRegistration:ERROR!! nta is NULL for %s", ARDisplayString(m, rr)); return; }
    e8834464:	16843903          	ld	s2,360(s0)
    e8834468:	02091063          	bnez	s2,e8834488 <SendRecordRegistration+0x222>
    e883446c:	780c                	ld	a1,48(s0)
    e883446e:	03b48613          	addi	a2,s1,59
    e8834472:	00840513          	addi	a0,s0,8
    e8834476:	0591                	addi	a1,a1,4
    e8834478:	d9ce20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883447c:	862a                	mv	a2,a0
    e883447e:	00079597          	auipc	a1,0x79
    e8834482:	2d258593          	addi	a1,a1,722 # e88ad750 <kOn.10632+0x1808>
    e8834486:	b5b9                	j	e88342d4 <SendRecordRegistration+0x6e>
        err = mDNSSendDNSMessage(m, &m->omsg, ptr, mDNSInterface_Any, mDNSNULL, &rr->nta->Addr, rr->nta->Port, mDNSNULL, GetAuthInfoForName_internal(m, rr->resrec.name), mDNSfalse);
    e8834488:	0006f797          	auipc	a5,0x6f
    e883448c:	8d878793          	addi	a5,a5,-1832 # e88a2d60 <mDNSInterface_Any>
    e8834490:	6394                	ld	a3,0(a5)
    e8834492:	740c                	ld	a1,40(s0)
    e8834494:	8526                	mv	a0,s1
    e8834496:	ec36                	sd	a3,24(sp)
    e8834498:	ff5fd0ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    e883449c:	31295803          	lhu	a6,786(s2)
    e88344a0:	66e2                	ld	a3,24(sp)
    e88344a2:	e02a                	sd	a0,0(sp)
    e88344a4:	e402                	sd	zero,8(sp)
    e88344a6:	4881                	li	a7,0
    e88344a8:	31490793          	addi	a5,s2,788
    e88344ac:	4701                	li	a4,0
    e88344ae:	8652                	mv	a2,s4
    e88344b0:	85ce                	mv	a1,s3
    e88344b2:	8526                	mv	a0,s1
    e88344b4:	9fee30ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
        if (err) debugf("ERROR: SendRecordRegistration - mDNSSendDNSMessage - %d", err);
    e88344b8:	bf85                	j	e8834428 <SendRecordRegistration+0x1c2>
    LogMsg("SendRecordRegistration: Error formatting message for %s, disabling further updates", ARDisplayString(m, rr));
    e88344ba:	780c                	ld	a1,48(s0)
    e88344bc:	03b48613          	addi	a2,s1,59
    e88344c0:	00840513          	addi	a0,s0,8
    e88344c4:	0591                	addi	a1,a1,4
    e88344c6:	d4ee20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88344ca:	862a                	mv	a2,a0
    e88344cc:	00079597          	auipc	a1,0x79
    e88344d0:	2bc58593          	addi	a1,a1,700 # e88ad788 <kOn.10632+0x1840>
    e88344d4:	4501                	li	a0,0
    e88344d6:	fd7fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e88344da:	64a6                	ld	s1,72(sp)
    rr->state = regState_NoTarget;
    e88344dc:	47a1                	li	a5,8
    e88344de:	14f40623          	sb	a5,332(s0)
}
    e88344e2:	60e6                	ld	ra,88(sp)
    e88344e4:	6446                	ld	s0,80(sp)
    e88344e6:	6906                	ld	s2,64(sp)
    e88344e8:	79e2                	ld	s3,56(sp)
    e88344ea:	7a42                	ld	s4,48(sp)
    e88344ec:	7aa2                	ld	s5,40(sp)
    e88344ee:	6125                	addi	sp,sp,96
    e88344f0:	8082                	ret

00000000e88344f2 <GetServiceTarget>:
{
    e88344f2:	7135                	addi	sp,sp,-160
    e88344f4:	ed06                	sd	ra,152(sp)
    e88344f6:	e922                	sd	s0,144(sp)
    e88344f8:	e526                	sd	s1,136(sp)
    e88344fa:	e14a                	sd	s2,128(sp)
    e88344fc:	fcce                	sd	s3,120(sp)
    e88344fe:	f8d2                	sd	s4,112(sp)
    e8834500:	f4d6                	sd	s5,104(sp)
    e8834502:	f0da                	sd	s6,96(sp)
    e8834504:	ecde                	sd	s7,88(sp)
    e8834506:	e8e2                	sd	s8,80(sp)
    e8834508:	e4e6                	sd	s9,72(sp)
    e883450a:	e0ea                	sd	s10,64(sp)
    e883450c:	fc6e                	sd	s11,56(sp)
    if (!rr->AutoTarget)        // If not automatically tracking this host's current name, just return the existing target
    e883450e:	0785c783          	lbu	a5,120(a1)
    e8834512:	e39d                	bnez	a5,e8834538 <GetServiceTarget+0x46>
        return(&rr->resrec.rdata->u.srv.target);
    e8834514:	7984                	ld	s1,48(a1)
    e8834516:	04a9                	addi	s1,s1,10
}
    e8834518:	60ea                	ld	ra,152(sp)
    e883451a:	644a                	ld	s0,144(sp)
    e883451c:	8526                	mv	a0,s1
    e883451e:	690a                	ld	s2,128(sp)
    e8834520:	64aa                	ld	s1,136(sp)
    e8834522:	79e6                	ld	s3,120(sp)
    e8834524:	7a46                	ld	s4,112(sp)
    e8834526:	7aa6                	ld	s5,104(sp)
    e8834528:	7b06                	ld	s6,96(sp)
    e883452a:	6be6                	ld	s7,88(sp)
    e883452c:	6c46                	ld	s8,80(sp)
    e883452e:	6ca6                	ld	s9,72(sp)
    e8834530:	6d06                	ld	s10,64(sp)
    e8834532:	7de2                	ld	s11,56(sp)
    e8834534:	610d                	addi	sp,sp,160
    e8834536:	8082                	ret
    e8834538:	892a                	mv	s2,a0
            const int srvcount = CountLabels(rr->resrec.name);
    e883453a:	7588                	ld	a0,40(a1)
    e883453c:	89ae                	mv	s3,a1
            int best = 0;
    e883453e:	4b01                	li	s6,0
            const int srvcount = CountLabels(rr->resrec.name);
    e8834540:	d07de0ef          	jal	ra,e8813246 <CountLabels>
    e8834544:	8aaa                	mv	s5,a0
            for (hi = m->Hostnames; hi; hi = hi->next)
    e8834546:	6791                	lui	a5,0x4
    e8834548:	97ca                	add	a5,a5,s2
    e883454a:	b087ba03          	ld	s4,-1272(a5) # 3b08 <memcmp-0xe87fc4f8>
            HostnameInfo *besthi = mDNSNULL, *hi;
    e883454e:	4481                	li	s1,0
                if (hi->arv4.state == regState_Registered || hi->arv4.state == regState_Refresh ||
    e8834550:	4b89                	li	s7,2
    e8834552:	4c15                	li	s8,5
            for (hi = m->Hostnames; hi; hi = hi->next)
    e8834554:	000a1663          	bnez	s4,e8834560 <GetServiceTarget+0x6e>
            if (besthi) return(&besthi->fqdn);
    e8834558:	c8bd                	beqz	s1,e88345ce <GetServiceTarget+0xdc>
    e883455a:	06048493          	addi	s1,s1,96
    e883455e:	bf6d                	j	e8834518 <GetServiceTarget+0x26>
                if (hi->arv4.state == regState_Registered || hi->arv4.state == regState_Refresh ||
    e8834560:	2aca4783          	lbu	a5,684(s4)
    e8834564:	01778a63          	beq	a5,s7,e8834578 <GetServiceTarget+0x86>
    e8834568:	01878863          	beq	a5,s8,e8834578 <GetServiceTarget+0x86>
                    hi->arv6.state == regState_Registered || hi->arv6.state == regState_Refresh)
    e883456c:	6bca4783          	lbu	a5,1724(s4)
                if (hi->arv4.state == regState_Registered || hi->arv4.state == regState_Refresh ||
    e8834570:	01778463          	beq	a5,s7,e8834578 <GetServiceTarget+0x86>
                    hi->arv6.state == regState_Registered || hi->arv6.state == regState_Refresh)
    e8834574:	03879363          	bne	a5,s8,e883459a <GetServiceTarget+0xa8>
                    int x, hostcount = CountLabels(&hi->fqdn);
    e8834578:	060a0c93          	addi	s9,s4,96
    e883457c:	8566                	mv	a0,s9
    e883457e:	cc9de0ef          	jal	ra,e8813246 <CountLabels>
                    for (x = hostcount < srvcount ? hostcount : srvcount; x > 0 && x > best; x--)
    e8834582:	01552433          	slt	s0,a0,s5
    e8834586:	87aa                	mv	a5,a0
    e8834588:	408a978b          	mveqz	a5,s5,s0
                    int x, hostcount = CountLabels(&hi->fqdn);
    e883458c:	8d2a                	mv	s10,a0
                    for (x = hostcount < srvcount ? hostcount : srvcount; x > 0 && x > best; x--)
    e883458e:	0007841b          	sext.w	s0,a5
    e8834592:	00805463          	blez	s0,e883459a <GetServiceTarget+0xa8>
    e8834596:	008b4563          	blt	s6,s0,e88345a0 <GetServiceTarget+0xae>
            for (hi = m->Hostnames; hi; hi = hi->next)
    e883459a:	000a3a03          	ld	s4,0(s4)
    e883459e:	bf5d                	j	e8834554 <GetServiceTarget+0x62>
                        if (SameDomainName(SkipLeadingLabels(rr->resrec.name, srvcount - x), SkipLeadingLabels(&hi->fqdn, hostcount - x)))
    e88345a0:	0289b503          	ld	a0,40(s3)
    e88345a4:	408a85bb          	subw	a1,s5,s0
    e88345a8:	cb3de0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e88345ac:	e42a                	sd	a0,8(sp)
    e88345ae:	408d05bb          	subw	a1,s10,s0
    e88345b2:	8566                	mv	a0,s9
    e88345b4:	ca7de0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e88345b8:	85aa                	mv	a1,a0
    e88345ba:	67a2                	ld	a5,8(sp)
    e88345bc:	853e                	mv	a0,a5
    e88345be:	a8dde0ef          	jal	ra,e881304a <SameDomainName>
    e88345c2:	42a41b0b          	mvnez	s6,s0,a0
    e88345c6:	42aa148b          	mvnez	s1,s4,a0
                    for (x = hostcount < srvcount ? hostcount : srvcount; x > 0 && x > best; x--)
    e88345ca:	347d                	addiw	s0,s0,-1
    e88345cc:	b7d9                	j	e8834592 <GetServiceTarget+0xa0>
        if (m->StaticHostname.c[0]) return(&m->StaticHostname);
    e88345ce:	6791                	lui	a5,0x4
    e88345d0:	00f90733          	add	a4,s2,a5
    e88345d4:	90874703          	lbu	a4,-1784(a4)
    e88345d8:	c709                	beqz	a4,e88345e2 <GetServiceTarget+0xf0>
    e88345da:	90878493          	addi	s1,a5,-1784 # 3908 <memcmp-0xe87fc6f8>
    e88345de:	94ca                	add	s1,s1,s2
    e88345e0:	bf25                	j	e8834518 <GetServiceTarget+0x26>
    if (m->ReverseMap.ThisQInterval != -1) return; // already running
    e88345e2:	6a0d                	lui	s4,0x3
    e88345e4:	01490433          	add	s0,s2,s4
    e88345e8:	26c42703          	lw	a4,620(s0)
    e88345ec:	57fd                	li	a5,-1
    e88345ee:	000a0a97          	auipc	s5,0xa0
    e88345f2:	486a8a93          	addi	s5,s5,1158 # e88d4a74 <mDNS_LoggingEnabled>
    e88345f6:	04f71b63          	bne	a4,a5,e883464c <GetServiceTarget+0x15a>
    if (mDNSIPv4AddressIsZero(m->AdvertisedV4.ip.v4)) return;
    e88345fa:	22842783          	lw	a5,552(s0)
    e88345fe:	c7b9                	beqz	a5,e883464c <GetServiceTarget+0x15a>
    DNSQuestion *q = &m->ReverseMap;
    e8834600:	258a0a13          	addi	s4,s4,600 # 3258 <memcmp-0xe87fcda8>
    e8834604:	9a4a                	add	s4,s4,s2
    mDNSPlatformMemZero(q, sizeof(*q));
    e8834606:	35800593          	li	a1,856
    e883460a:	8552                	mv	a0,s4
    e883460c:	ceafb0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    if (!MakeDomainNameFromDNSNameString2(&q->qname, buf)) { LogMsg("Error: GetStaticHostname - bad name %s", buf); return; }
    e8834610:	214a0b13          	addi	s6,s4,532
    mDNS_snprintf(buf, sizeof(buf), "%d.%d.%d.%d.in-addr.arpa.", ip[3], ip[2], ip[1], ip[0]);
    e8834614:	22844803          	lbu	a6,552(s0)
    e8834618:	22944783          	lbu	a5,553(s0)
    e883461c:	22a44703          	lbu	a4,554(s0)
    e8834620:	22b44683          	lbu	a3,555(s0)
    e8834624:	45f9                	li	a1,30
    e8834626:	00070617          	auipc	a2,0x70
    e883462a:	a8260613          	addi	a2,a2,-1406 # e88a40a8 <end.8789+0xa00>
    e883462e:	0808                	addi	a0,sp,16
    e8834630:	e12e10ef          	jal	ra,e8815c42 <mDNS_snprintf>
    if (!MakeDomainNameFromDNSNameString2(&q->qname, buf)) { LogMsg("Error: GetStaticHostname - bad name %s", buf); return; }
    e8834634:	080c                	addi	a1,sp,16
    e8834636:	855a                	mv	a0,s6
    e8834638:	e99de0ef          	jal	ra,e88134d0 <MakeDomainNameFromDNSNameString2>
    e883463c:	ed15                	bnez	a0,e8834678 <GetServiceTarget+0x186>
    e883463e:	0810                	addi	a2,sp,16
    e8834640:	00078597          	auipc	a1,0x78
    e8834644:	08858593          	addi	a1,a1,136 # e88ac6c8 <kOn.10632+0x780>
    e8834648:	e65fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        LogInfo("GetServiceTarget: Returning NULL for %s", ARDisplayString(m, rr));
    e883464c:	000aa783          	lw	a5,0(s5)
    e8834650:	ec0784e3          	beqz	a5,e8834518 <GetServiceTarget+0x26>
    e8834654:	0309b583          	ld	a1,48(s3)
    e8834658:	03b90613          	addi	a2,s2,59
    e883465c:	00898513          	addi	a0,s3,8
    e8834660:	0591                	addi	a1,a1,4
    e8834662:	bb2e20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8834666:	862a                	mv	a2,a0
    e8834668:	00078597          	auipc	a1,0x78
    e883466c:	0e058593          	addi	a1,a1,224 # e88ac748 <kOn.10632+0x800>
    e8834670:	450d                	li	a0,3
    e8834672:	e3bfa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8834676:	b54d                	j	e8834518 <GetServiceTarget+0x26>
    q->InterfaceID      = mDNSInterface_Any;
    e8834678:	0006e797          	auipc	a5,0x6e
    e883467c:	6e878793          	addi	a5,a5,1768 # e88a2d60 <mDNSInterface_Any>
    e8834680:	639c                	ld	a5,0(a5)
    q->flags            = 0;
    e8834682:	44042823          	sw	zero,1104(s0)
    q->UseBackgroundTrafficClass = mDNSfalse;
    e8834686:	56041c23          	sh	zero,1400(s0)
    q->InterfaceID      = mDNSInterface_Any;
    e883468a:	44f43423          	sd	a5,1096(s0)
    q->Target           = zeroAddr;
    e883468e:	0006f797          	auipc	a5,0x6f
    e8834692:	ef278793          	addi	a5,a5,-270 # e88a3580 <zeroAddr>
    e8834696:	6394                	ld	a3,0(a5)
    q->AppendSearchDomains = 0;
    e8834698:	56040d23          	sb	zero,1402(s0)
    q->ValidatingResponse = 0;
    e883469c:	3a040123          	sb	zero,930(s0)
    q->Target           = zeroAddr;
    e88346a0:	44d43a23          	sd	a3,1108(s0)
    e88346a4:	6794                	ld	a3,8(a5)
    e88346a6:	4b9c                	lw	a5,16(a5)
    q->ValidationRequired = 0;
    e88346a8:	56041e23          	sh	zero,1404(s0)
    q->Target           = zeroAddr;
    e88346ac:	44d43e23          	sd	a3,1116(s0)
    e88346b0:	46f42223          	sw	a5,1124(s0)
    q->qtype            = kDNSType_PTR;
    e88346b4:	67c1                	lui	a5,0x10
    e88346b6:	27b1                	addiw	a5,a5,12
    e88346b8:	56f42623          	sw	a5,1388(s0)
    q->LongLived        = mDNSfalse;
    e88346bc:	010007b7          	lui	a5,0x1000
    e88346c0:	56f43823          	sd	a5,1392(s0)
    q->qnameOrig        = mDNSNULL;
    e88346c4:	58043c23          	sd	zero,1432(s0)
    q->AnonInfo         = mDNSNULL;
    e88346c8:	2a043c23          	sd	zero,696(s0)
    q->pid              = mDNSPlatformGetPID();
    e88346cc:	874fc0ef          	jal	ra,e8830740 <mDNSPlatformGetPID>
    e88346d0:	58a42023          	sw	a0,1408(s0)
    q->QuestionCallback = FoundStaticHostname;
    e88346d4:	ffffc797          	auipc	a5,0xffffc
    e88346d8:	5aa78793          	addi	a5,a5,1450 # e8830c7e <FoundStaticHostname>
    e88346dc:	5af43023          	sd	a5,1440(s0)
    LogInfo("GetStaticHostname: %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e88346e0:	000aa783          	lw	a5,0(s5)
    q->euid             = 0;
    e88346e4:	58042a23          	sw	zero,1428(s0)
    q->QuestionContext  = mDNSNULL;
    e88346e8:	5a043423          	sd	zero,1448(s0)
    LogInfo("GetStaticHostname: %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e88346ec:	cf91                	beqz	a5,e8834708 <GetServiceTarget+0x216>
    e88346ee:	56c45503          	lhu	a0,1388(s0)
    e88346f2:	d6ee10ef          	jal	ra,e8815c60 <DNSTypeName>
    e88346f6:	86aa                	mv	a3,a0
    e88346f8:	865a                	mv	a2,s6
    e88346fa:	00078597          	auipc	a1,0x78
    e88346fe:	ff658593          	addi	a1,a1,-10 # e88ac6f0 <kOn.10632+0x7a8>
    e8834702:	450d                	li	a0,3
    e8834704:	da9fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    err = mDNS_StartQuery_internal(m, q);
    e8834708:	85d2                	mv	a1,s4
    e883470a:	854a                	mv	a0,s2
    e883470c:	ce3f00ef          	jal	ra,e88253ee <mDNS_StartQuery_internal>
    e8834710:	862a                	mv	a2,a0
    if (err) LogMsg("Error: GetStaticHostname - StartQuery returned error %d", err);
    e8834712:	dd0d                	beqz	a0,e883464c <GetServiceTarget+0x15a>
    e8834714:	00078597          	auipc	a1,0x78
    e8834718:	ffc58593          	addi	a1,a1,-4 # e88ac710 <kOn.10632+0x7c8>
    e883471c:	4501                	li	a0,0
    e883471e:	d8ffa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8834722:	b72d                	j	e883464c <GetServiceTarget+0x15a>

00000000e8834724 <UpdateOneSRVRecord>:
{
    e8834724:	7139                	addi	sp,sp,-64
    e8834726:	f891540b          	sdd	s0,s1,(sp),0,4
    e883472a:	fb31590b          	sdd	s2,s3,(sp),1,4
    e883472e:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8834732:	f85a                	sd	s6,48(sp)
    e8834734:	fc06                	sd	ra,56(sp)
    domainname *curtarget = &rr->resrec.rdata->u.srv.target;
    e8834736:	0305b983          	ld	s3,48(a1)
{
    e883473a:	84aa                	mv	s1,a0
    e883473c:	842e                	mv	s0,a1
    const domainname *const nt = GetServiceTarget(m, rr);
    e883473e:	db5ff0ef          	jal	ra,e88344f2 <GetServiceTarget>
    domainname *curtarget = &rr->resrec.rdata->u.srv.target;
    e8834742:	09a9                	addi	s3,s3,10
    const domainname *const nt = GetServiceTarget(m, rr);
    e8834744:	8b2a                	mv	s6,a0
    const domainname *const newtarget = nt ? nt : (domainname*)"";
    e8834746:	c16d                	beqz	a0,e8834828 <UpdateOneSRVRecord+0x104>
    mDNSBool TargetChanged = (newtarget->c[0] && rr->state == regState_NoTarget) || !SameDomainName(curtarget, newtarget);
    e8834748:	00054783          	lbu	a5,0(a0)
    e883474c:	c3fd                	beqz	a5,e8834832 <UpdateOneSRVRecord+0x10e>
    e883474e:	14c44703          	lbu	a4,332(s0)
    e8834752:	47a1                	li	a5,8
    e8834754:	892a                	mv	s2,a0
    e8834756:	0ef70063          	beq	a4,a5,e8834836 <UpdateOneSRVRecord+0x112>
    e883475a:	854e                	mv	a0,s3
    e883475c:	85ca                	mv	a1,s2
    e883475e:	8edde0ef          	jal	ra,e881304a <SameDomainName>
    e8834762:	2501                	sext.w	a0,a0
    e8834764:	00153993          	seqz	s3,a0
    mDNSIPPort port        = rr->resrec.rdata->u.srv.port;
    e8834768:	781c                	ld	a5,48(s0)
    mDNSBool NowNeedNATMAP = (rr->AutoTarget == Target_AutoHostAndNATMAP && !mDNSIPPortIsZero(port) && mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4) && rr->nta && !mDNSAddrIsRFC1918(&rr->nta->Addr));
    e883476a:	07844703          	lbu	a4,120(s0)
    mDNSIPPort port        = rr->resrec.rdata->u.srv.port;
    e883476e:	0087da03          	lhu	s4,8(a5)
    mDNSBool NowNeedNATMAP = (rr->AutoTarget == Target_AutoHostAndNATMAP && !mDNSIPPortIsZero(port) && mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4) && rr->nta && !mDNSAddrIsRFC1918(&rr->nta->Addr));
    e8834772:	4789                	li	a5,2
    e8834774:	0cf70363          	beq	a4,a5,e883483a <UpdateOneSRVRecord+0x116>
    e8834778:	4781                	li	a5,0
    mDNSBool PortWasMapped = (rr->NATinfo.clientContext && !mDNSSameIPPort(rr->NATinfo.RequestedPort, port));       // I think this is always false -- SC Sept 07
    e883477a:	1c843703          	ld	a4,456(s0)
    mDNSBool NATChanged    = (!WereBehindNAT && NowNeedNATMAP) || (!NowNeedNATMAP && PortWasMapped);
    e883477e:	8abe                	mv	s5,a5
    mDNSBool PortWasMapped = (rr->NATinfo.clientContext && !mDNSSameIPPort(rr->NATinfo.RequestedPort, port));       // I think this is always false -- SC Sept 07
    e8834780:	cb01                	beqz	a4,e8834790 <UpdateOneSRVRecord+0x6c>
    e8834782:	1b845703          	lhu	a4,440(s0)
    mDNSBool NATChanged    = (!WereBehindNAT && NowNeedNATMAP) || (!NowNeedNATMAP && PortWasMapped);
    e8834786:	0017ca93          	xori	s5,a5,1
    mDNSBool PortWasMapped = (rr->NATinfo.clientContext && !mDNSSameIPPort(rr->NATinfo.RequestedPort, port));       // I think this is always false -- SC Sept 07
    e883478a:	01471363          	bne	a4,s4,e8834790 <UpdateOneSRVRecord+0x6c>
    mDNSBool NATChanged    = (!WereBehindNAT && NowNeedNATMAP) || (!NowNeedNATMAP && PortWasMapped);
    e883478e:	4a81                	li	s5,0
    LogInfo("UpdateOneSRVRecord: Resource Record %s TargetChanged %d, NewTarget %##s", ARDisplayString(m, rr), TargetChanged, nt->c);
    e8834790:	000a0a17          	auipc	s4,0xa0
    e8834794:	2e4a0a13          	addi	s4,s4,740 # e88d4a74 <mDNS_LoggingEnabled>
    e8834798:	000a2783          	lw	a5,0(s4)
    e883479c:	c39d                	beqz	a5,e88347c2 <UpdateOneSRVRecord+0x9e>
    e883479e:	780c                	ld	a1,48(s0)
    e88347a0:	03b48613          	addi	a2,s1,59
    e88347a4:	00840513          	addi	a0,s0,8
    e88347a8:	0591                	addi	a1,a1,4
    e88347aa:	a6ae20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88347ae:	862a                	mv	a2,a0
    e88347b0:	875a                	mv	a4,s6
    e88347b2:	86ce                	mv	a3,s3
    e88347b4:	00079597          	auipc	a1,0x79
    e88347b8:	38c58593          	addi	a1,a1,908 # e88adb40 <kOn.10632+0x1bf8>
    e88347bc:	450d                	li	a0,3
    e88347be:	ceffa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    mDNS_CheckLock(m);
    e88347c2:	58d8                	lw	a4,52(s1)
    e88347c4:	5894                	lw	a3,48(s1)
    e88347c6:	0017079b          	addiw	a5,a4,1
    e88347ca:	00d78d63          	beq	a5,a3,e88347e4 <UpdateOneSRVRecord+0xc0>
    e88347ce:	00079617          	auipc	a2,0x79
    e88347d2:	69260613          	addi	a2,a2,1682 # e88ade60 <__func__.9279>
    e88347d6:	00073597          	auipc	a1,0x73
    e88347da:	9ba58593          	addi	a1,a1,-1606 # e88a7190 <end.8789+0x3ae8>
    e88347de:	4501                	li	a0,0
    e88347e0:	ccdfa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!TargetChanged && !NATChanged) return;
    e88347e4:	0159e7b3          	or	a5,s3,s5
    e88347e8:	1c078963          	beqz	a5,e88349ba <UpdateOneSRVRecord+0x296>
    if (rr->resrec.RecordType == kDNSRecordTypeDeregistering)
    e88347ec:	00844683          	lbu	a3,8(s0)
    e88347f0:	4705                	li	a4,1
    e88347f2:	000a2783          	lw	a5,0(s4)
    e88347f6:	06e69c63          	bne	a3,a4,e883486e <UpdateOneSRVRecord+0x14a>
        LogInfo("UpdateOneSRVRecord: Deregistering record, Ignoring TargetChanged %d, NATChanged %d for %##s, state %d", TargetChanged, NATChanged,
    e88347fa:	1c078063          	beqz	a5,e88349ba <UpdateOneSRVRecord+0x296>
    e88347fe:	14c44783          	lbu	a5,332(s0)
    e8834802:	7418                	ld	a4,40(s0)
}
    e8834804:	f891440b          	ldd	s0,s1,(sp),0,4
    e8834808:	70e2                	ld	ra,56(sp)
    e883480a:	7b42                	ld	s6,48(sp)
        LogInfo("UpdateOneSRVRecord: Deregistering record, Ignoring TargetChanged %d, NATChanged %d for %##s, state %d", TargetChanged, NATChanged,
    e883480c:	86d6                	mv	a3,s5
    e883480e:	864e                	mv	a2,s3
}
    e8834810:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8834814:	fb31490b          	ldd	s2,s3,(sp),1,4
        LogInfo("UpdateOneSRVRecord: Deregistering record, Ignoring TargetChanged %d, NATChanged %d for %##s, state %d", TargetChanged, NATChanged,
    e8834818:	00079597          	auipc	a1,0x79
    e883481c:	37058593          	addi	a1,a1,880 # e88adb88 <kOn.10632+0x1c40>
    e8834820:	450d                	li	a0,3
}
    e8834822:	6121                	addi	sp,sp,64
        LogInfo("UpdateOneSRVRecord: Deregistering record, Ignoring TargetChanged %d, NATChanged %d for %##s, state %d", TargetChanged, NATChanged,
    e8834824:	c89fa06f          	j	e882f4ac <LogMsgWithLevel>
    const domainname *const newtarget = nt ? nt : (domainname*)"";
    e8834828:	0008d917          	auipc	s2,0x8d
    e883482c:	a4890913          	addi	s2,s2,-1464 # e88c1270 <kHTTPServerClass+0x90>
    e8834830:	b72d                	j	e883475a <UpdateOneSRVRecord+0x36>
    e8834832:	892a                	mv	s2,a0
    e8834834:	b71d                	j	e883475a <UpdateOneSRVRecord+0x36>
    mDNSBool TargetChanged = (newtarget->c[0] && rr->state == regState_NoTarget) || !SameDomainName(curtarget, newtarget);
    e8834836:	4985                	li	s3,1
    e8834838:	bf05                	j	e8834768 <UpdateOneSRVRecord+0x44>
    mDNSBool NowNeedNATMAP = (rr->AutoTarget == Target_AutoHostAndNATMAP && !mDNSIPPortIsZero(port) && mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4) && rr->nta && !mDNSAddrIsRFC1918(&rr->nta->Addr));
    e883483a:	f20a0fe3          	beqz	s4,e8834778 <UpdateOneSRVRecord+0x54>
    e883483e:	650d                	lui	a0,0x3
    e8834840:	22850513          	addi	a0,a0,552 # 3228 <memcmp-0xe87fcdd8>
    e8834844:	9526                	add	a0,a0,s1
    e8834846:	db4de0ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e883484a:	d51d                	beqz	a0,e8834778 <UpdateOneSRVRecord+0x54>
    e883484c:	16843503          	ld	a0,360(s0)
    e8834850:	d505                	beqz	a0,e8834778 <UpdateOneSRVRecord+0x54>
    e8834852:	31452683          	lw	a3,788(a0)
    e8834856:	4711                	li	a4,4
    e8834858:	4785                	li	a5,1
    e883485a:	f2e690e3          	bne	a3,a4,e883477a <UpdateOneSRVRecord+0x56>
    e883485e:	31850513          	addi	a0,a0,792
    e8834862:	d98de0ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e8834866:	2501                	sext.w	a0,a0
    e8834868:	00153793          	seqz	a5,a0
    e883486c:	b739                	j	e883477a <UpdateOneSRVRecord+0x56>
        LogInfo("UpdateOneSRVRecord: TargetChanged %d, NATChanged %d for %##s, state %d, newtarget %##s", TargetChanged, NATChanged, rr->resrec.name->c, rr->state, newtarget->c);
    e883486e:	cf91                	beqz	a5,e883488a <UpdateOneSRVRecord+0x166>
    e8834870:	14c44783          	lbu	a5,332(s0)
    e8834874:	7418                	ld	a4,40(s0)
    e8834876:	884a                	mv	a6,s2
    e8834878:	86d6                	mv	a3,s5
    e883487a:	864e                	mv	a2,s3
    e883487c:	00079597          	auipc	a1,0x79
    e8834880:	37458593          	addi	a1,a1,884 # e88adbf0 <kOn.10632+0x1ca8>
    e8834884:	450d                	li	a0,3
    e8834886:	c27fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    switch(rr->state)
    e883488a:	14c44603          	lbu	a2,332(s0)
    e883488e:	4721                	li	a4,8
    e8834890:	fff6079b          	addiw	a5,a2,-1
    e8834894:	0ff7f793          	andi	a5,a5,255
    e8834898:	14f76963          	bltu	a4,a5,e88349ea <UpdateOneSRVRecord+0x2c6>
    e883489c:	00078717          	auipc	a4,0x78
    e88348a0:	86870713          	addi	a4,a4,-1944 # e88ac104 <kOn.10632+0x1bc>
    e88348a4:	44f7478b          	lrw	a5,a4,a5,2
    e88348a8:	97ba                	add	a5,a5,a4
    e88348aa:	8782                	jr	a5
        if (!NATChanged) return;
    e88348ac:	100a8763          	beqz	s5,e88349ba <UpdateOneSRVRecord+0x296>
        if (!newtarget->c[0])
    e88348b0:	00094703          	lbu	a4,0(s2)
    e88348b4:	000a2783          	lw	a5,0(s4)
    e88348b8:	ef05                	bnez	a4,e88348f0 <UpdateOneSRVRecord+0x1cc>
            LogInfo("UpdateOneSRVRecord: No target yet for Resource Record %s", ARDisplayString(m, rr));
    e88348ba:	10078063          	beqz	a5,e88349ba <UpdateOneSRVRecord+0x296>
    e88348be:	780c                	ld	a1,48(s0)
    e88348c0:	03b48613          	addi	a2,s1,59
    e88348c4:	00840513          	addi	a0,s0,8
    e88348c8:	0591                	addi	a1,a1,4
    e88348ca:	94ae20ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
}
    e88348ce:	f891440b          	ldd	s0,s1,(sp),0,4
    e88348d2:	70e2                	ld	ra,56(sp)
    e88348d4:	7b42                	ld	s6,48(sp)
    e88348d6:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88348da:	fd514a0b          	ldd	s4,s5,(sp),2,4
            LogInfo("UpdateOneSRVRecord: No target yet for Resource Record %s", ARDisplayString(m, rr));
    e88348de:	862a                	mv	a2,a0
    e88348e0:	00079597          	auipc	a1,0x79
    e88348e4:	36858593          	addi	a1,a1,872 # e88adc48 <kOn.10632+0x1d00>
    e88348e8:	450d                	li	a0,3
}
    e88348ea:	6121                	addi	sp,sp,64
            LogInfo("UpdateOneSRVRecord: No target yet for Resource Record %s", ARDisplayString(m, rr));
    e88348ec:	bc1fa06f          	j	e882f4ac <LogMsgWithLevel>
    LogInfo("RegisterAllServiceRecords: Service Record %##s", rr->resrec.name->c);
    e88348f0:	cb89                	beqz	a5,e8834902 <UpdateOneSRVRecord+0x1de>
    e88348f2:	7410                	ld	a2,40(s0)
    e88348f4:	00079597          	auipc	a1,0x79
    e88348f8:	39458593          	addi	a1,a1,916 # e88adc88 <kOn.10632+0x1d40>
    e88348fc:	450d                	li	a0,3
    e88348fe:	baffa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    AuthRecord **list = &m->ResourceRecords;
    e8834902:	678d                	lui	a5,0x3
    e8834904:	1b878713          	addi	a4,a5,440 # 31b8 <memcmp-0xe87fce48>
    e8834908:	97a6                	add	a5,a5,s1
    rr->SRVChanged = mDNSfalse;
    e883490a:	1c040823          	sb	zero,464(s0)
    AuthRecord **list = &m->ResourceRecords;
    e883490e:	1b87b783          	ld	a5,440(a5)
    e8834912:	9726                	add	a4,a4,s1
    while (*list && *list != rr) list = &(*list)->next;
    e8834914:	0e078c63          	beqz	a5,e8834a0c <UpdateOneSRVRecord+0x2e8>
    e8834918:	04f41d63          	bne	s0,a5,e8834972 <UpdateOneSRVRecord+0x24e>
        *list = rr->next;
    e883491c:	601c                	ld	a5,0(s0)
    e883491e:	e31c                	sd	a5,0(a4)
        if (rr->NATinfo.clientContext)
    e8834920:	1c843783          	ld	a5,456(s0)
        rr->next = mDNSNULL;
    e8834924:	00043023          	sd	zero,0(s0)
        if (rr->NATinfo.clientContext)
    e8834928:	c39d                	beqz	a5,e883494e <UpdateOneSRVRecord+0x22a>
            mDNS_StopNATOperation_internal(m, &rr->NATinfo);
    e883492a:	17840593          	addi	a1,s0,376
    e883492e:	8526                	mv	a0,s1
    e8834930:	be6fe0ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
            rr->NATinfo.clientContext = mDNSNULL;
    e8834934:	1c043423          	sd	zero,456(s0)
            if (rr->resrec.rrtype == kDNSType_SRV) rr->resrec.rdata->u.srv.port = rr->NATinfo.IntPort;
    e8834938:	00a45703          	lhu	a4,10(s0)
    e883493c:	02100793          	li	a5,33
    e8834940:	00f71763          	bne	a4,a5,e883494e <UpdateOneSRVRecord+0x22a>
    e8834944:	781c                	ld	a5,48(s0)
    e8834946:	1b645703          	lhu	a4,438(s0)
    e883494a:	00e79423          	sh	a4,8(a5)
    mDNS_Register_internal(m, rr);
    e883494e:	85a2                	mv	a1,s0
    e8834950:	8526                	mv	a0,s1
    e8834952:	928ed0ef          	jal	ra,e8821a7a <mDNS_Register_internal>
    UpdateAllServiceRecords(m, rr, mDNStrue);
    e8834956:	4605                	li	a2,1
            UpdateAllServiceRecords(m, rr, mDNSfalse);
    e8834958:	85a2                	mv	a1,s0
    e883495a:	8526                	mv	a0,s1
}
    e883495c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8834960:	70e2                	ld	ra,56(sp)
    e8834962:	7b42                	ld	s6,48(sp)
    e8834964:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8834968:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e883496c:	6121                	addi	sp,sp,64
            UpdateAllServiceRecords(m, rr, mDNSfalse);
    e883496e:	eb6fd06f          	j	e8832024 <UpdateAllServiceRecords>
    while (*list && *list != rr) list = &(*list)->next;
    e8834972:	873e                	mv	a4,a5
    e8834974:	639c                	ld	a5,0(a5)
    e8834976:	bf79                	j	e8834914 <UpdateOneSRVRecord+0x1f0>
        rr->SRVChanged = mDNStrue;
    e8834978:	4785                	li	a5,1
    e883497a:	1cf40823          	sb	a5,464(s0)
        rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e883497e:	000a0797          	auipc	a5,0xa0
    e8834982:	10278793          	addi	a5,a5,258 # e88d4a80 <mDNSPlatformOneSecond>
    e8834986:	4398                	lw	a4,0(a5)
    e8834988:	10e42823          	sw	a4,272(s0)
        rr->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e883498c:	2404a783          	lw	a5,576(s1)
    e8834990:	9f99                	subw	a5,a5,a4
    e8834992:	10f42a23          	sw	a5,276(s0)
        if (newtarget->c[0])
    e8834996:	00094703          	lbu	a4,0(s2)
    e883499a:	000a2783          	lw	a5,0(s4)
    e883499e:	cb05                	beqz	a4,e88349ce <UpdateOneSRVRecord+0x2aa>
            LogInfo("UpdateOneSRVRecord: SRV record changed for service %##s, registering with new target %##s",
    e88349a0:	cb91                	beqz	a5,e88349b4 <UpdateOneSRVRecord+0x290>
    e88349a2:	7410                	ld	a2,40(s0)
    e88349a4:	86ca                	mv	a3,s2
    e88349a6:	00079597          	auipc	a1,0x79
    e88349aa:	31258593          	addi	a1,a1,786 # e88adcb8 <kOn.10632+0x1d70>
    e88349ae:	450d                	li	a0,3
    e88349b0:	afdfa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            rr->state = regState_Pending;
    e88349b4:	4785                	li	a5,1
    e88349b6:	14f40623          	sb	a5,332(s0)
}
    e88349ba:	70e2                	ld	ra,56(sp)
    e88349bc:	f891440b          	ldd	s0,s1,(sp),0,4
    e88349c0:	7b42                	ld	s6,48(sp)
    e88349c2:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88349c6:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88349ca:	6121                	addi	sp,sp,64
    e88349cc:	8082                	ret
            LogInfo("UpdateOneSRVRecord: SRV record changed for service %##s de-registering", rr->resrec.name->c);
    e88349ce:	cb89                	beqz	a5,e88349e0 <UpdateOneSRVRecord+0x2bc>
    e88349d0:	7410                	ld	a2,40(s0)
    e88349d2:	00079597          	auipc	a1,0x79
    e88349d6:	34658593          	addi	a1,a1,838 # e88add18 <kOn.10632+0x1dd0>
    e88349da:	450d                	li	a0,3
    e88349dc:	ad1fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            rr->state = regState_DeregPending;
    e88349e0:	478d                	li	a5,3
    e88349e2:	14f40623          	sb	a5,332(s0)
            UpdateAllServiceRecords(m, rr, mDNSfalse);
    e88349e6:	4601                	li	a2,0
    e88349e8:	bf85                	j	e8834958 <UpdateOneSRVRecord+0x234>
    default: LogMsg("UpdateOneSRVRecord: Unknown state %d for %##s", rr->state, rr->resrec.name->c);
    e88349ea:	7414                	ld	a3,40(s0)
}
    e88349ec:	f891440b          	ldd	s0,s1,(sp),0,4
    e88349f0:	70e2                	ld	ra,56(sp)
    e88349f2:	7b42                	ld	s6,48(sp)
    e88349f4:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88349f8:	fd514a0b          	ldd	s4,s5,(sp),2,4
    default: LogMsg("UpdateOneSRVRecord: Unknown state %d for %##s", rr->state, rr->resrec.name->c);
    e88349fc:	00079597          	auipc	a1,0x79
    e8834a00:	36458593          	addi	a1,a1,868 # e88add60 <kOn.10632+0x1e18>
    e8834a04:	4501                	li	a0,0
}
    e8834a06:	6121                	addi	sp,sp,64
    default: LogMsg("UpdateOneSRVRecord: Unknown state %d for %##s", rr->state, rr->resrec.name->c);
    e8834a08:	aa5fa06f          	j	e882f4ac <LogMsgWithLevel>
    LogMsg("UnlinkResourceRecord:ERROR!! - no such active record %##s", rr->resrec.name->c);
    e8834a0c:	7410                	ld	a2,40(s0)
    e8834a0e:	00079597          	auipc	a1,0x79
    e8834a12:	38258593          	addi	a1,a1,898 # e88add90 <kOn.10632+0x1e48>
    e8834a16:	4501                	li	a0,0
    e8834a18:	a95fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    return(mStatus_NoSuchRecord);
    e8834a1c:	bf0d                	j	e883494e <UpdateOneSRVRecord+0x22a>

00000000e8834a1e <CompleteRecordNatMap>:
{
    e8834a1e:	7139                	addi	sp,sp,-64
    e8834a20:	fc06                	sd	ra,56(sp)
    e8834a22:	e422                	sd	s0,8(sp)
    e8834a24:	e826                	sd	s1,16(sp)
    e8834a26:	ec4a                	sd	s2,24(sp)
    e8834a28:	f04e                	sd	s3,32(sp)
    e8834a2a:	f452                	sd	s4,40(sp)
    e8834a2c:	f856                	sd	s5,48(sp)
    AuthRecord *rr = (AuthRecord *)n->clientContext;
    e8834a2e:	69a0                	ld	s0,80(a1)
    if (!rr) { LogMsg("CompleteRecordNatMap called with unknown AuthRecord object"); return; }
    e8834a30:	e005                	bnez	s0,e8834a50 <CompleteRecordNatMap+0x32>
}
    e8834a32:	6422                	ld	s0,8(sp)
    e8834a34:	70e2                	ld	ra,56(sp)
    e8834a36:	64c2                	ld	s1,16(sp)
    e8834a38:	6962                	ld	s2,24(sp)
    e8834a3a:	7982                	ld	s3,32(sp)
    e8834a3c:	7a22                	ld	s4,40(sp)
    e8834a3e:	7ac2                	ld	s5,48(sp)
    if (!rr) { LogMsg("CompleteRecordNatMap called with unknown AuthRecord object"); return; }
    e8834a40:	00078597          	auipc	a1,0x78
    e8834a44:	8c858593          	addi	a1,a1,-1848 # e88ac308 <kOn.10632+0x3c0>
    e8834a48:	4501                	li	a0,0
}
    e8834a4a:	6121                	addi	sp,sp,64
    if (!rr) { LogMsg("CompleteRecordNatMap called with unknown AuthRecord object"); return; }
    e8834a4c:	a61fa06f          	j	e882f4ac <LogMsgWithLevel>
    if (!n->NATLease) { LogMsg("CompleteRecordNatMap No NATLease for %s", ARDisplayString(m, rr)); return; }
    e8834a50:	41fc                	lw	a5,68(a1)
    e8834a52:	84aa                	mv	s1,a0
    e8834a54:	89ae                	mv	s3,a1
    e8834a56:	eb8d                	bnez	a5,e8834a88 <CompleteRecordNatMap+0x6a>
    e8834a58:	780c                	ld	a1,48(s0)
    e8834a5a:	03b50613          	addi	a2,a0,59
    e8834a5e:	00840513          	addi	a0,s0,8
    e8834a62:	0591                	addi	a1,a1,4
    e8834a64:	fb1e10ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8834a68:	862a                	mv	a2,a0
    e8834a6a:	00078597          	auipc	a1,0x78
    e8834a6e:	8de58593          	addi	a1,a1,-1826 # e88ac348 <kOn.10632+0x400>
    if (rr->resrec.rrtype != kDNSType_SRV) {LogMsg("CompleteRecordNatMap: Not a service record %s", ARDisplayString(m, rr)); return; }
    e8834a72:	4501                	li	a0,0
}
    e8834a74:	6422                	ld	s0,8(sp)
    e8834a76:	70e2                	ld	ra,56(sp)
    e8834a78:	64c2                	ld	s1,16(sp)
    e8834a7a:	6962                	ld	s2,24(sp)
    e8834a7c:	7982                	ld	s3,32(sp)
    e8834a7e:	7a22                	ld	s4,40(sp)
    e8834a80:	7ac2                	ld	s5,48(sp)
    e8834a82:	6121                	addi	sp,sp,64
    if (rr->resrec.rrtype != kDNSType_SRV) {LogMsg("CompleteRecordNatMap: Not a service record %s", ARDisplayString(m, rr)); return; }
    e8834a84:	a29fa06f          	j	e882f4ac <LogMsgWithLevel>
    e8834a88:	00a45703          	lhu	a4,10(s0)
    e8834a8c:	02100793          	li	a5,33
    e8834a90:	02f70063          	beq	a4,a5,e8834ab0 <CompleteRecordNatMap+0x92>
    e8834a94:	780c                	ld	a1,48(s0)
    e8834a96:	03b50613          	addi	a2,a0,59
    e8834a9a:	00840513          	addi	a0,s0,8
    e8834a9e:	0591                	addi	a1,a1,4
    e8834aa0:	f75e10ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8834aa4:	862a                	mv	a2,a0
    e8834aa6:	00078597          	auipc	a1,0x78
    e8834aaa:	8ca58593          	addi	a1,a1,-1846 # e88ac370 <kOn.10632+0x428>
    e8834aae:	b7d1                	j	e8834a72 <CompleteRecordNatMap+0x54>
    if (rr->resrec.RecordType == kDNSRecordTypeDeregistering) { LogInfo("CompleteRecordNatMap called for %s, Service deregistering", ARDisplayString(m, rr)); return; }
    e8834ab0:	00844783          	lbu	a5,8(s0)
    e8834ab4:	4905                	li	s2,1
    e8834ab6:	000a0a97          	auipc	s5,0xa0
    e8834aba:	fbea8a93          	addi	s5,s5,-66 # e88d4a74 <mDNS_LoggingEnabled>
    e8834abe:	03279463          	bne	a5,s2,e8834ae6 <CompleteRecordNatMap+0xc8>
    e8834ac2:	000aa783          	lw	a5,0(s5)
    e8834ac6:	cbc5                	beqz	a5,e8834b76 <CompleteRecordNatMap+0x158>
    e8834ac8:	780c                	ld	a1,48(s0)
    e8834aca:	03b50613          	addi	a2,a0,59
    e8834ace:	00840513          	addi	a0,s0,8
    e8834ad2:	0591                	addi	a1,a1,4
    e8834ad4:	f41e10ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8834ad8:	862a                	mv	a2,a0
    e8834ada:	00078597          	auipc	a1,0x78
    e8834ade:	8c658593          	addi	a1,a1,-1850 # e88ac3a0 <kOn.10632+0x458>
    if (rr->state == regState_DeregPending) { LogInfo("CompleteRecordNatMap called for %s, record in DeregPending", ARDisplayString(m, rr)); return; }
    e8834ae2:	450d                	li	a0,3
    e8834ae4:	bf41                	j	e8834a74 <CompleteRecordNatMap+0x56>
    e8834ae6:	14c44703          	lbu	a4,332(s0)
    e8834aea:	478d                	li	a5,3
    e8834aec:	02f71363          	bne	a4,a5,e8834b12 <CompleteRecordNatMap+0xf4>
    e8834af0:	000aa783          	lw	a5,0(s5)
    e8834af4:	c3c9                	beqz	a5,e8834b76 <CompleteRecordNatMap+0x158>
    e8834af6:	780c                	ld	a1,48(s0)
    e8834af8:	03b50613          	addi	a2,a0,59
    e8834afc:	00840513          	addi	a0,s0,8
    e8834b00:	0591                	addi	a1,a1,4
    e8834b02:	f13e10ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8834b06:	862a                	mv	a2,a0
    e8834b08:	00078597          	auipc	a1,0x78
    e8834b0c:	8d858593          	addi	a1,a1,-1832 # e88ac3e0 <kOn.10632+0x498>
    e8834b10:	bfc9                	j	e8834ae2 <CompleteRecordNatMap+0xc4>
    if (!rr->nta || mDNSIPv4AddressIsZero(rr->nta->Addr.ip.v4))
    e8834b12:	16843783          	ld	a5,360(s0)
    e8834b16:	c781                	beqz	a5,e8834b1e <CompleteRecordNatMap+0x100>
    e8834b18:	3187a783          	lw	a5,792(a5)
    e8834b1c:	e7b5                	bnez	a5,e8834b88 <CompleteRecordNatMap+0x16a>
        LogInfo("CompleteRecordNatMap called for %s but no zone information!", ARDisplayString(m, rr));
    e8834b1e:	000aa783          	lw	a5,0(s5)
    e8834b22:	c38d                	beqz	a5,e8834b44 <CompleteRecordNatMap+0x126>
    e8834b24:	780c                	ld	a1,48(s0)
    e8834b26:	03b48613          	addi	a2,s1,59
    e8834b2a:	00840513          	addi	a0,s0,8
    e8834b2e:	0591                	addi	a1,a1,4
    e8834b30:	ee5e10ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8834b34:	862a                	mv	a2,a0
    e8834b36:	00078597          	auipc	a1,0x78
    e8834b3a:	8ea58593          	addi	a1,a1,-1814 # e88ac420 <kOn.10632+0x4d8>
    e8834b3e:	450d                	li	a0,3
    e8834b40:	96dfa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (rr->NATinfo.clientContext)
    e8834b44:	1c843783          	ld	a5,456(s0)
    e8834b48:	cb81                	beqz	a5,e8834b58 <CompleteRecordNatMap+0x13a>
            mDNS_StopNATOperation_internal(m, &rr->NATinfo);
    e8834b4a:	17840593          	addi	a1,s0,376
    e8834b4e:	8526                	mv	a0,s1
    e8834b50:	9c6fe0ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
            rr->NATinfo.clientContext = mDNSNULL;
    e8834b54:	1c043423          	sd	zero,456(s0)
        rr->state = regState_Pending;
    e8834b58:	4785                	li	a5,1
    e8834b5a:	14f40623          	sb	a5,332(s0)
        rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e8834b5e:	000a0797          	auipc	a5,0xa0
    e8834b62:	f2278793          	addi	a5,a5,-222 # e88d4a80 <mDNSPlatformOneSecond>
    e8834b66:	4398                	lw	a4,0(a5)
    e8834b68:	10e42823          	sw	a4,272(s0)
        rr->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e8834b6c:	2404a783          	lw	a5,576(s1)
    e8834b70:	9f99                	subw	a5,a5,a4
    e8834b72:	10f42a23          	sw	a5,276(s0)
}
    e8834b76:	70e2                	ld	ra,56(sp)
    e8834b78:	6422                	ld	s0,8(sp)
    e8834b7a:	64c2                	ld	s1,16(sp)
    e8834b7c:	6962                	ld	s2,24(sp)
    e8834b7e:	7982                	ld	s3,32(sp)
    e8834b80:	7a22                	ld	s4,40(sp)
    e8834b82:	7ac2                	ld	s5,48(sp)
    e8834b84:	6121                	addi	sp,sp,64
    e8834b86:	8082                	ret
    mDNS_Lock(m);
    e8834b88:	00079597          	auipc	a1,0x79
    e8834b8c:	2c058593          	addi	a1,a1,704 # e88ade48 <__func__.9245>
    e8834b90:	e73e00ef          	jal	ra,e8815a02 <mDNS_Lock_>
    target = GetServiceTarget(m, rr);
    e8834b94:	85a2                	mv	a1,s0
    e8834b96:	8526                	mv	a0,s1
    e8834b98:	95bff0ef          	jal	ra,e88344f2 <GetServiceTarget>
    e8834b9c:	8a2a                	mv	s4,a0
    srvt = GetRRDomainNameTarget(&rr->resrec);
    e8834b9e:	00a45683          	lhu	a3,10(s0)
    e8834ba2:	02500793          	li	a5,37
    e8834ba6:	ffe6871b          	addiw	a4,a3,-2
    e8834baa:	3c07370b          	extu	a4,a4,15,0
    e8834bae:	08e7e663          	bltu	a5,a4,e8834c3a <CompleteRecordNatMap+0x21c>
    e8834bb2:	1916                	slli	s2,s2,0x25
    e8834bb4:	40990913          	addi	s2,s2,1033
    e8834bb8:	00e95933          	srl	s2,s2,a4
    e8834bbc:	0009390b          	extu	s2,s2,0,0
    e8834bc0:	06090d63          	beqz	s2,e8834c3a <CompleteRecordNatMap+0x21c>
    e8834bc4:	03043903          	ld	s2,48(s0)
    e8834bc8:	0911                	addi	s2,s2,4
    if (!target || target->c[0] == 0 || mDNSIPPortIsZero(n->ExternalPort))
    e8834bca:	000aa783          	lw	a5,0(s5)
    e8834bce:	0a0a0363          	beqz	s4,e8834c74 <CompleteRecordNatMap+0x256>
    e8834bd2:	000a4703          	lbu	a4,0(s4)
    e8834bd6:	cf59                	beqz	a4,e8834c74 <CompleteRecordNatMap+0x256>
    e8834bd8:	0309d703          	lhu	a4,48(s3)
    e8834bdc:	ef4d                	bnez	a4,e8834c96 <CompleteRecordNatMap+0x278>
            LogInfo("CompleteRecordNatMap - Target %##s for ResourceRecord %##s, ExternalPort %d", target->c, rr->resrec.name->c, mDNSVal16(n->ExternalPort));
    e8834bde:	c38d                	beqz	a5,e8834c00 <CompleteRecordNatMap+0x1e2>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8834be0:	0309c783          	lbu	a5,48(s3)
    e8834be4:	0319c703          	lbu	a4,49(s3)
    e8834be8:	7414                	ld	a3,40(s0)
    e8834bea:	0087979b          	slliw	a5,a5,0x8
    e8834bee:	8f5d                	or	a4,a4,a5
    e8834bf0:	8652                	mv	a2,s4
    e8834bf2:	00078597          	auipc	a1,0x78
    e8834bf6:	86e58593          	addi	a1,a1,-1938 # e88ac460 <kOn.10632+0x518>
    e8834bfa:	450d                	li	a0,3
    e8834bfc:	8b1fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (srvt) srvt->c[0] = 0;
    e8834c00:	00090463          	beqz	s2,e8834c08 <CompleteRecordNatMap+0x1ea>
    e8834c04:	00090023          	sb	zero,0(s2)
        rr->state = regState_NoTarget;
    e8834c08:	47a1                	li	a5,8
    e8834c0a:	14f40623          	sb	a5,332(s0)
        rr->resrec.rdlength = rr->resrec.rdestimate = 0;
    e8834c0e:	00042a23          	sw	zero,20(s0)
        mDNS_Unlock(m);
    e8834c12:	00079597          	auipc	a1,0x79
    e8834c16:	23658593          	addi	a1,a1,566 # e88ade48 <__func__.9245>
    e8834c1a:	8526                	mv	a0,s1
    e8834c1c:	eb1e00ef          	jal	ra,e8815acc <mDNS_Unlock_>
        UpdateAllServiceRecords(m, rr, mDNSfalse);
    e8834c20:	4601                	li	a2,0
    UpdateAllServiceRecords(m, rr, mDNStrue);
    e8834c22:	85a2                	mv	a1,s0
}
    e8834c24:	6422                	ld	s0,8(sp)
    e8834c26:	70e2                	ld	ra,56(sp)
    e8834c28:	6962                	ld	s2,24(sp)
    e8834c2a:	7982                	ld	s3,32(sp)
    e8834c2c:	7a22                	ld	s4,40(sp)
    e8834c2e:	7ac2                	ld	s5,48(sp)
    UpdateAllServiceRecords(m, rr, mDNStrue);
    e8834c30:	8526                	mv	a0,s1
}
    e8834c32:	64c2                	ld	s1,16(sp)
    e8834c34:	6121                	addi	sp,sp,64
    UpdateAllServiceRecords(m, rr, mDNStrue);
    e8834c36:	beefd06f          	j	e8832024 <UpdateAllServiceRecords>
    srvt = GetRRDomainNameTarget(&rr->resrec);
    e8834c3a:	0006871b          	sext.w	a4,a3
    e8834c3e:	02400793          	li	a5,36
    e8834c42:	4901                	li	s2,0
    e8834c44:	f8e7e3e3          	bltu	a5,a4,e8834bca <CompleteRecordNatMap+0x1ac>
    e8834c48:	002007b7          	lui	a5,0x200
    e8834c4c:	04978793          	addi	a5,a5,73 # 200049 <memcmp-0xe85fffb7>
    e8834c50:	07be                	slli	a5,a5,0xf
    e8834c52:	00d7d7b3          	srl	a5,a5,a3
    e8834c56:	0007b78b          	extu	a5,a5,0,0
    e8834c5a:	c789                	beqz	a5,e8834c64 <CompleteRecordNatMap+0x246>
    e8834c5c:	03043903          	ld	s2,48(s0)
    e8834c60:	0919                	addi	s2,s2,6
    e8834c62:	b7a5                	j	e8834bca <CompleteRecordNatMap+0x1ac>
    e8834c64:	02100793          	li	a5,33
    e8834c68:	f6f711e3          	bne	a4,a5,e8834bca <CompleteRecordNatMap+0x1ac>
    e8834c6c:	03043903          	ld	s2,48(s0)
    e8834c70:	0929                	addi	s2,s2,10
    e8834c72:	bfa1                	j	e8834bca <CompleteRecordNatMap+0x1ac>
            LogInfo("CompleteRecordNatMap - no target for %##s, ExternalPort %d", rr->resrec.name->c, mDNSVal16(n->ExternalPort));
    e8834c74:	d7d1                	beqz	a5,e8834c00 <CompleteRecordNatMap+0x1e2>
    e8834c76:	0309c783          	lbu	a5,48(s3)
    e8834c7a:	0319c683          	lbu	a3,49(s3)
    e8834c7e:	7410                	ld	a2,40(s0)
    e8834c80:	0087979b          	slliw	a5,a5,0x8
    e8834c84:	8edd                	or	a3,a3,a5
    e8834c86:	00078597          	auipc	a1,0x78
    e8834c8a:	82a58593          	addi	a1,a1,-2006 # e88ac4b0 <kOn.10632+0x568>
    e8834c8e:	450d                	li	a0,3
    e8834c90:	81dfa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8834c94:	b7b5                	j	e8834c00 <CompleteRecordNatMap+0x1e2>
    LogInfo("CompleteRecordNatMap - Target %##s for ResourceRecord %##s, ExternalPort %d", target->c, rr->resrec.name->c, mDNSVal16(n->ExternalPort));
    e8834c96:	c38d                	beqz	a5,e8834cb8 <CompleteRecordNatMap+0x29a>
    e8834c98:	0309c783          	lbu	a5,48(s3)
    e8834c9c:	0319c703          	lbu	a4,49(s3)
    e8834ca0:	7414                	ld	a3,40(s0)
    e8834ca2:	0087979b          	slliw	a5,a5,0x8
    e8834ca6:	8f5d                	or	a4,a4,a5
    e8834ca8:	8652                	mv	a2,s4
    e8834caa:	00077597          	auipc	a1,0x77
    e8834cae:	7b658593          	addi	a1,a1,1974 # e88ac460 <kOn.10632+0x518>
    e8834cb2:	450d                	li	a0,3
    e8834cb4:	ff8fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (srvt && !SameDomainName(srvt, target))
    e8834cb8:	02090c63          	beqz	s2,e8834cf0 <CompleteRecordNatMap+0x2d2>
    e8834cbc:	85d2                	mv	a1,s4
    e8834cbe:	854a                	mv	a0,s2
    e8834cc0:	b8ade0ef          	jal	ra,e881304a <SameDomainName>
    e8834cc4:	e515                	bnez	a0,e8834cf0 <CompleteRecordNatMap+0x2d2>
        AssignDomainName(srvt, target);
    e8834cc6:	100a0593          	addi	a1,s4,256
    e8834cca:	8552                	mv	a0,s4
    e8834ccc:	c80de0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8834cd0:	0005061b          	sext.w	a2,a0
    e8834cd4:	10000793          	li	a5,256
    e8834cd8:	06c7e663          	bltu	a5,a2,e8834d44 <CompleteRecordNatMap+0x326>
    e8834cdc:	85d2                	mv	a1,s4
    e8834cde:	854a                	mv	a0,s2
    e8834ce0:	dc1fa0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        SetNewRData(&rr->resrec, mDNSNULL, 0);      // Update rdlength, rdestimate, rdatahash
    e8834ce4:	4601                	li	a2,0
    e8834ce6:	4581                	li	a1,0
    e8834ce8:	00840513          	addi	a0,s0,8
    e8834cec:	d6ddf0ef          	jal	ra,e8814a58 <SetNewRData>
    rr->state = regState_Pending;
    e8834cf0:	4785                	li	a5,1
    rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e8834cf2:	000a0917          	auipc	s2,0xa0
    e8834cf6:	d8e90913          	addi	s2,s2,-626 # e88d4a80 <mDNSPlatformOneSecond>
    rr->state = regState_Pending;
    e8834cfa:	14f40623          	sb	a5,332(s0)
    rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e8834cfe:	00092783          	lw	a5,0(s2)
    rr->SRVChanged = mDNSfalse;
    e8834d02:	1c040823          	sb	zero,464(s0)
    if (IsRecordMergeable(m, rr, m->timenow + MERGE_DELAY_TIME))
    e8834d06:	85a2                	mv	a1,s0
    rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e8834d08:	10f42823          	sw	a5,272(s0)
    rr->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e8834d0c:	2404a703          	lw	a4,576(s1)
    if (IsRecordMergeable(m, rr, m->timenow + MERGE_DELAY_TIME))
    e8834d10:	8526                	mv	a0,s1
    rr->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e8834d12:	9f1d                	subw	a4,a4,a5
    e8834d14:	10e42a23          	sw	a4,276(s0)
    if (IsRecordMergeable(m, rr, m->timenow + MERGE_DELAY_TIME))
    e8834d18:	2404a603          	lw	a2,576(s1)
    e8834d1c:	9e3d                	addw	a2,a2,a5
    e8834d1e:	889fd0ef          	jal	ra,e88325a6 <IsRecordMergeable>
    e8834d22:	c901                	beqz	a0,e8834d32 <CompleteRecordNatMap+0x314>
        rr->LastAPTime += MERGE_DELAY_TIME;
    e8834d24:	11442783          	lw	a5,276(s0)
    e8834d28:	00092703          	lw	a4,0(s2)
    e8834d2c:	9fb9                	addw	a5,a5,a4
    e8834d2e:	10f42a23          	sw	a5,276(s0)
    mDNS_Unlock(m);
    e8834d32:	00079597          	auipc	a1,0x79
    e8834d36:	11658593          	addi	a1,a1,278 # e88ade48 <__func__.9245>
    e8834d3a:	8526                	mv	a0,s1
    e8834d3c:	d91e00ef          	jal	ra,e8815acc <mDNS_Unlock_>
    UpdateAllServiceRecords(m, rr, mDNStrue);
    e8834d40:	4605                	li	a2,1
    e8834d42:	b5c5                	j	e8834c22 <CompleteRecordNatMap+0x204>
        AssignDomainName(srvt, target);
    e8834d44:	00090023          	sb	zero,0(s2)
    e8834d48:	bf71                	j	e8834ce4 <CompleteRecordNatMap+0x2c6>

00000000e8834d4a <StartGetZoneData>:
{
    e8834d4a:	715d                	addi	sp,sp,-80
    e8834d4c:	fc26                	sd	s1,56(sp)
    e8834d4e:	f84a                	sd	s2,48(sp)
    e8834d50:	f44e                	sd	s3,40(sp)
    e8834d52:	f052                	sd	s4,32(sp)
    e8834d54:	ec56                	sd	s5,24(sp)
    e8834d56:	e85a                	sd	s6,16(sp)
    e8834d58:	e45e                	sd	s7,8(sp)
    e8834d5a:	e486                	sd	ra,72(sp)
    e8834d5c:	e0a2                	sd	s0,64(sp)
    e8834d5e:	89aa                	mv	s3,a0
    e8834d60:	8a2e                	mv	s4,a1
    e8834d62:	8bb2                	mv	s7,a2
    e8834d64:	8b36                	mv	s6,a3
    e8834d66:	8aba                	mv	s5,a4
    DomainAuthInfo *AuthInfo = GetAuthInfoForName_internal(m, name);
    e8834d68:	f24fd0ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    e8834d6c:	84aa                	mv	s1,a0
    int initialskip = (AuthInfo && AuthInfo->AutoTunnel) ? DomainNameLength(name) - DomainNameLength(&AuthInfo->domain) : 0;
    e8834d6e:	4901                	li	s2,0
    e8834d70:	c50d                	beqz	a0,e8834d9a <StartGetZoneData+0x50>
    e8834d72:	00c54783          	lbu	a5,12(a0)
    e8834d76:	c395                	beqz	a5,e8834d9a <StartGetZoneData+0x50>
    e8834d78:	100a0593          	addi	a1,s4,256
    e8834d7c:	8552                	mv	a0,s4
    e8834d7e:	bcede0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8834d82:	892a                	mv	s2,a0
    e8834d84:	6505                	lui	a0,0x1
    e8834d86:	57450593          	addi	a1,a0,1396 # 1574 <memcmp-0xe87fea8c>
    e8834d8a:	47450513          	addi	a0,a0,1140
    e8834d8e:	95a6                	add	a1,a1,s1
    e8834d90:	9526                	add	a0,a0,s1
    e8834d92:	bbade0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8834d96:	40a9093b          	subw	s2,s2,a0
    ZoneData *zd = (ZoneData*)mDNSPlatformMemAllocate(sizeof(ZoneData));
    e8834d9a:	69800513          	li	a0,1688
    e8834d9e:	cc4fb0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e8834da2:	842a                	mv	s0,a0
    if (!zd) { LogMsg("ERROR: StartGetZoneData - mDNSPlatformMemAllocate failed"); return mDNSNULL; }
    e8834da4:	e11d                	bnez	a0,e8834dca <StartGetZoneData+0x80>
    e8834da6:	00079597          	auipc	a1,0x79
    e8834daa:	ad258593          	addi	a1,a1,-1326 # e88ad878 <kOn.10632+0x1930>
    e8834dae:	efefa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8834db2:	8522                	mv	a0,s0
    e8834db4:	60a6                	ld	ra,72(sp)
    e8834db6:	6406                	ld	s0,64(sp)
    e8834db8:	74e2                	ld	s1,56(sp)
    e8834dba:	7942                	ld	s2,48(sp)
    e8834dbc:	79a2                	ld	s3,40(sp)
    e8834dbe:	7a02                	ld	s4,32(sp)
    e8834dc0:	6ae2                	ld	s5,24(sp)
    e8834dc2:	6b42                	ld	s6,16(sp)
    e8834dc4:	6ba2                	ld	s7,8(sp)
    e8834dc6:	6161                	addi	sp,sp,80
    e8834dc8:	8082                	ret
    mDNSPlatformMemZero(zd, sizeof(ZoneData));
    e8834dca:	69800593          	li	a1,1688
    e8834dce:	d29fa0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    AssignDomainName(&zd->ChildName, name);
    e8834dd2:	100a0593          	addi	a1,s4,256
    e8834dd6:	8552                	mv	a0,s4
    e8834dd8:	b74de0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8834ddc:	0005061b          	sext.w	a2,a0
    e8834de0:	10000793          	li	a5,256
    e8834de4:	18c7e563          	bltu	a5,a2,e8834f6e <StartGetZoneData+0x224>
    e8834de8:	85d2                	mv	a1,s4
    e8834dea:	8522                	mv	a0,s0
    e8834dec:	cb5fa0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    zd->Port             = zeroIPPort;
    e8834df0:	0006e797          	auipc	a5,0x6e
    e8834df4:	7b878793          	addi	a5,a5,1976 # e88a35a8 <zeroIPPort>
    e8834df8:	0007d783          	lhu	a5,0(a5)
    zd->CurrentSOA       = (domainname *)(&zd->ChildName.c[initialskip]);
    e8834dfc:	9922                	add	s2,s2,s0
    zd->ZoneService      = target;
    e8834dfe:	11740023          	sb	s7,256(s0)
    zd->Port             = zeroIPPort;
    e8834e02:	30f41923          	sh	a5,786(s0)
    zd->Addr             = zeroAddr;
    e8834e06:	0006e797          	auipc	a5,0x6e
    e8834e0a:	77a78793          	addi	a5,a5,1914 # e88a3580 <zeroAddr>
    e8834e0e:	6394                	ld	a3,0(a5)
    zd->CurrentSOA       = (domainname *)(&zd->ChildName.c[initialskip]);
    e8834e10:	11243423          	sd	s2,264(s0)
    zd->ZoneName.c[0]    = 0;
    e8834e14:	10040823          	sb	zero,272(s0)
    zd->Addr             = zeroAddr;
    e8834e18:	30d43a23          	sd	a3,788(s0)
    e8834e1c:	6794                	ld	a3,8(a5)
    e8834e1e:	4b9c                	lw	a5,16(a5)
    zd->ZoneClass        = 0;
    e8834e20:	20041823          	sh	zero,528(s0)
    zd->Host.c[0]        = 0;
    e8834e24:	20040923          	sb	zero,530(s0)
    zd->Addr             = zeroAddr;
    e8834e28:	32f42223          	sw	a5,804(s0)
    e8834e2c:	30d43e23          	sd	a3,796(s0)
    zd->ZonePrivate      = AuthInfo && AuthInfo->AutoTunnel ? mDNStrue : mDNSfalse;
    e8834e30:	4781                	li	a5,0
    e8834e32:	c489                	beqz	s1,e8834e3c <StartGetZoneData+0xf2>
    e8834e34:	00c4c783          	lbu	a5,12(s1)
    e8834e38:	00f037b3          	snez	a5,a5
    e8834e3c:	32f40423          	sb	a5,808(s0)
    zd->ZoneDataCallback = callback;
    e8834e40:	33643823          	sd	s6,816(s0)
    zd->ZoneDataContext  = ZoneDataContext;
    e8834e44:	33543c23          	sd	s5,824(s0)
    zd->question.QuestionContext = zd;
    e8834e48:	68843823          	sd	s0,1680(s0)
    mDNS_DropLockBeforeCallback();      // GetZoneData_StartQuery expects to be called from a normal callback, so we emulate that here
    e8834e4c:	0349a783          	lw	a5,52(s3)
    e8834e50:	0309a683          	lw	a3,48(s3)
    e8834e54:	0017871b          	addiw	a4,a5,1
    e8834e58:	02e9aa23          	sw	a4,52(s3)
    e8834e5c:	00d70d63          	beq	a4,a3,e8834e76 <StartGetZoneData+0x12c>
    e8834e60:	00079617          	auipc	a2,0x79
    e8834e64:	fd060613          	addi	a2,a2,-48 # e88ade30 <__func__.9205>
    e8834e68:	0006f597          	auipc	a1,0x6f
    e8834e6c:	f0058593          	addi	a1,a1,-256 # e88a3d68 <end.8789+0x6c0>
    e8834e70:	4501                	li	a0,0
    e8834e72:	e3afa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (AuthInfo && AuthInfo->AutoTunnel && !mDNSIPPortIsZero(AuthInfo->port))
    e8834e76:	12048463          	beqz	s1,e8834f9e <StartGetZoneData+0x254>
    e8834e7a:	00c4c783          	lbu	a5,12(s1)
    e8834e7e:	12078063          	beqz	a5,e8834f9e <StartGetZoneData+0x254>
    e8834e82:	6605                	lui	a2,0x1
    e8834e84:	00c487b3          	add	a5,s1,a2
    e8834e88:	7747d703          	lhu	a4,1908(a5)
    e8834e8c:	000a0797          	auipc	a5,0xa0
    e8834e90:	be878793          	addi	a5,a5,-1048 # e88d4a74 <mDNS_LoggingEnabled>
    e8834e94:	0e070963          	beqz	a4,e8834f86 <StartGetZoneData+0x23c>
        LogInfo("StartGetZoneData: Bypassing SOA, SRV query for %##s", AuthInfo->domain.c);
    e8834e98:	439c                	lw	a5,0(a5)
    e8834e9a:	47460613          	addi	a2,a2,1140 # 1474 <memcmp-0xe87feb8c>
    e8834e9e:	00c48933          	add	s2,s1,a2
    e8834ea2:	cb89                	beqz	a5,e8834eb4 <StartGetZoneData+0x16a>
    e8834ea4:	864a                	mv	a2,s2
    e8834ea6:	00079597          	auipc	a1,0x79
    e8834eaa:	a1258593          	addi	a1,a1,-1518 # e88ad8b8 <kOn.10632+0x1970>
    e8834eae:	450d                	li	a0,3
    e8834eb0:	dfcfa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        AssignDomainName(&zd->ZoneName, &AuthInfo->domain);
    e8834eb4:	6585                	lui	a1,0x1
    e8834eb6:	57458593          	addi	a1,a1,1396 # 1574 <memcmp-0xe87fea8c>
    e8834eba:	95a6                	add	a1,a1,s1
    e8834ebc:	854a                	mv	a0,s2
    e8834ebe:	a8ede0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8834ec2:	0005061b          	sext.w	a2,a0
    e8834ec6:	10000793          	li	a5,256
    e8834eca:	0ac7e563          	bltu	a5,a2,e8834f74 <StartGetZoneData+0x22a>
    e8834ece:	85ca                	mv	a1,s2
    e8834ed0:	11040513          	addi	a0,s0,272
    e8834ed4:	bcdfa0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        AssignDomainName(&zd->Host, &AuthInfo->hostname);
    e8834ed8:	6585                	lui	a1,0x1
    e8834eda:	67458913          	addi	s2,a1,1652 # 1674 <memcmp-0xe87fe98c>
        zd->ZoneClass = kDNSClass_IN;
    e8834ede:	4785                	li	a5,1
        AssignDomainName(&zd->Host, &AuthInfo->hostname);
    e8834ee0:	9926                	add	s2,s2,s1
    e8834ee2:	77458593          	addi	a1,a1,1908
        zd->ZoneClass = kDNSClass_IN;
    e8834ee6:	20f41823          	sh	a5,528(s0)
        AssignDomainName(&zd->Host, &AuthInfo->hostname);
    e8834eea:	95a6                	add	a1,a1,s1
    e8834eec:	854a                	mv	a0,s2
    e8834eee:	a5ede0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8834ef2:	0005061b          	sext.w	a2,a0
    e8834ef6:	10000793          	li	a5,256
    e8834efa:	21240a13          	addi	s4,s0,530
    e8834efe:	06c7ee63          	bltu	a5,a2,e8834f7a <StartGetZoneData+0x230>
    e8834f02:	85ca                	mv	a1,s2
    e8834f04:	8552                	mv	a0,s4
    e8834f06:	b9bfa0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        zd->Port = AuthInfo->port;
    e8834f0a:	6785                	lui	a5,0x1
    e8834f0c:	94be                	add	s1,s1,a5
    e8834f0e:	7744d783          	lhu	a5,1908(s1)
        AssignDomainName(&zd->question.qname, &zd->Host);
    e8834f12:	31240593          	addi	a1,s0,786
    e8834f16:	8552                	mv	a0,s4
        zd->Port = AuthInfo->port;
    e8834f18:	30f41923          	sh	a5,786(s0)
        AssignDomainName(&zd->question.qname, &zd->Host);
    e8834f1c:	a30de0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8834f20:	0005061b          	sext.w	a2,a0
    e8834f24:	10000793          	li	a5,256
    e8834f28:	04c7ec63          	bltu	a5,a2,e8834f80 <StartGetZoneData+0x236>
    e8834f2c:	85d2                	mv	a1,s4
    e8834f2e:	55440513          	addi	a0,s0,1364
    e8834f32:	b6ffa0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        GetZoneData_StartQuery(m, zd, kDNSType_A);
    e8834f36:	4605                	li	a2,1
        GetZoneData_StartQuery(m, zd, kDNSType_SOA);
    e8834f38:	85a2                	mv	a1,s0
    e8834f3a:	854e                	mv	a0,s3
    e8834f3c:	a88fc0ef          	jal	ra,e88311c4 <GetZoneData_StartQuery>
    mDNS_ReclaimLockAfterCallback();
    e8834f40:	0309a683          	lw	a3,48(s3)
    e8834f44:	0349a703          	lw	a4,52(s3)
    e8834f48:	00e68d63          	beq	a3,a4,e8834f62 <StartGetZoneData+0x218>
    e8834f4c:	00079617          	auipc	a2,0x79
    e8834f50:	ee460613          	addi	a2,a2,-284 # e88ade30 <__func__.9205>
    e8834f54:	0006f597          	auipc	a1,0x6f
    e8834f58:	e5458593          	addi	a1,a1,-428 # e88a3da8 <end.8789+0x700>
    e8834f5c:	4501                	li	a0,0
    e8834f5e:	d4efa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8834f62:	0349a783          	lw	a5,52(s3)
    e8834f66:	37fd                	addiw	a5,a5,-1
    e8834f68:	02f9aa23          	sw	a5,52(s3)
    return zd;
    e8834f6c:	b599                	j	e8834db2 <StartGetZoneData+0x68>
    AssignDomainName(&zd->ChildName, name);
    e8834f6e:	00040023          	sb	zero,0(s0)
    e8834f72:	bdbd                	j	e8834df0 <StartGetZoneData+0xa6>
        AssignDomainName(&zd->ZoneName, &AuthInfo->domain);
    e8834f74:	10040823          	sb	zero,272(s0)
    e8834f78:	b785                	j	e8834ed8 <StartGetZoneData+0x18e>
        AssignDomainName(&zd->Host, &AuthInfo->hostname);
    e8834f7a:	20040923          	sb	zero,530(s0)
    e8834f7e:	b771                	j	e8834f0a <StartGetZoneData+0x1c0>
        AssignDomainName(&zd->question.qname, &zd->Host);
    e8834f80:	54040a23          	sb	zero,1364(s0)
    e8834f84:	bf4d                	j	e8834f36 <StartGetZoneData+0x1ec>
        if (AuthInfo && AuthInfo->AutoTunnel) LogInfo("StartGetZoneData: Not Bypassing SOA, SRV query for %##s", AuthInfo->domain.c);
    e8834f86:	439c                	lw	a5,0(a5)
    e8834f88:	cb99                	beqz	a5,e8834f9e <StartGetZoneData+0x254>
    e8834f8a:	47460613          	addi	a2,a2,1140
    e8834f8e:	9626                	add	a2,a2,s1
    e8834f90:	00079597          	auipc	a1,0x79
    e8834f94:	96058593          	addi	a1,a1,-1696 # e88ad8f0 <kOn.10632+0x19a8>
    e8834f98:	450d                	li	a0,3
    e8834f9a:	d12fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        AssignDomainName(&zd->question.qname, zd->CurrentSOA);
    e8834f9e:	10843503          	ld	a0,264(s0)
    e8834fa2:	10050593          	addi	a1,a0,256
    e8834fa6:	9a6de0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8834faa:	0005061b          	sext.w	a2,a0
    e8834fae:	10000793          	li	a5,256
    e8834fb2:	00c7ea63          	bltu	a5,a2,e8834fc6 <StartGetZoneData+0x27c>
    e8834fb6:	10843583          	ld	a1,264(s0)
    e8834fba:	55440513          	addi	a0,s0,1364
    e8834fbe:	ae3fa0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
        GetZoneData_StartQuery(m, zd, kDNSType_SOA);
    e8834fc2:	4619                	li	a2,6
    e8834fc4:	bf95                	j	e8834f38 <StartGetZoneData+0x1ee>
        AssignDomainName(&zd->question.qname, zd->CurrentSOA);
    e8834fc6:	54040a23          	sb	zero,1364(s0)
    e8834fca:	bfe5                	j	e8834fc2 <StartGetZoneData+0x278>

00000000e8834fcc <startLLQHandshake>:
    if (m->LLQNAT.clientContext != mDNSNULL) // LLQNAT just started, give it some time
    e8834fcc:	6791                	lui	a5,0x4
{
    e8834fce:	711d                	addi	sp,sp,-96
    if (m->LLQNAT.clientContext != mDNSNULL) // LLQNAT just started, give it some time
    e8834fd0:	97aa                	add	a5,a5,a0
{
    e8834fd2:	e8a2                	sd	s0,80(sp)
    e8834fd4:	e4a6                	sd	s1,72(sp)
    e8834fd6:	ec86                	sd	ra,88(sp)
    e8834fd8:	e0ca                	sd	s2,64(sp)
    e8834fda:	fc4e                	sd	s3,56(sp)
    e8834fdc:	f852                	sd	s4,48(sp)
    if (m->LLQNAT.clientContext != mDNSNULL) // LLQNAT just started, give it some time
    e8834fde:	be87b703          	ld	a4,-1048(a5) # 3be8 <memcmp-0xe87fc418>
{
    e8834fe2:	84aa                	mv	s1,a0
    e8834fe4:	842e                	mv	s0,a1
    if (m->LLQNAT.clientContext != mDNSNULL) // LLQNAT just started, give it some time
    e8834fe6:	cf31                	beqz	a4,e8835042 <startLLQHandshake+0x76>
        LogInfo("startLLQHandshake: waiting for NAT status for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e8834fe8:	000a0797          	auipc	a5,0xa0
    e8834fec:	a8c78793          	addi	a5,a5,-1396 # e88d4a74 <mDNS_LoggingEnabled>
    e8834ff0:	439c                	lw	a5,0(a5)
    e8834ff2:	cf99                	beqz	a5,e8835010 <startLLQHandshake+0x44>
    e8834ff4:	3145d503          	lhu	a0,788(a1)
    e8834ff8:	c69e00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8834ffc:	86aa                	mv	a3,a0
    e8834ffe:	21440613          	addi	a2,s0,532
    e8835002:	0007a597          	auipc	a1,0x7a
    e8835006:	c2e58593          	addi	a1,a1,-978 # e88aec30 <__func__.9833+0xc98>
    e883500a:	450d                	li	a0,3
    e883500c:	ca0fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        q->ThisQInterval = LLQ_POLL_INTERVAL + mDNSRandom(LLQ_POLL_INTERVAL/10);    // Retry in approx 15 minutes
    e8835010:	000a0797          	auipc	a5,0xa0
    e8835014:	a7078793          	addi	a5,a5,-1424 # e88d4a80 <mDNSPlatformOneSecond>
    e8835018:	4388                	lw	a0,0(a5)
    e883501a:	38400913          	li	s2,900
    e883501e:	02a9093b          	mulw	s2,s2,a0
    e8835022:	4529                	li	a0,10
    e8835024:	02a9453b          	divw	a0,s2,a0
    e8835028:	ee1dd0ef          	jal	ra,e8812f08 <mDNSRandom>
    e883502c:	0125053b          	addw	a0,a0,s2
    e8835030:	c848                	sw	a0,20(s0)
            q->LastQTime     = m->timenow;
    e8835032:	2404a783          	lw	a5,576(s1)
            SetNextQueryTime(m, q);
    e8835036:	85a2                	mv	a1,s0
    e8835038:	8526                	mv	a0,s1
            q->LastQTime     = m->timenow;
    e883503a:	c81c                	sw	a5,16(s0)
            SetNextQueryTime(m, q);
    e883503c:	a30e90ef          	jal	ra,e881e26c <SetNextQueryTime>
    e8835040:	a0f1                	j	e883510c <startLLQHandshake+0x140>
    if (mDNSIPPortIsZero(m->LLQNAT.ExternalPort) || m->LLQNAT.Result)
    e8835042:	bc87d703          	lhu	a4,-1080(a5)
    e8835046:	c701                	beqz	a4,e883504e <startLLQHandshake+0x82>
    e8835048:	bd07a783          	lw	a5,-1072(a5)
    e883504c:	c7a9                	beqz	a5,e8835096 <startLLQHandshake+0xca>
        LogInfo("startLLQHandshake: Cannot receive inbound packets; will poll for %##s (%s) External Port %d, NAT Result %d",
    e883504e:	000a0797          	auipc	a5,0xa0
    e8835052:	a2678793          	addi	a5,a5,-1498 # e88d4a74 <mDNS_LoggingEnabled>
    e8835056:	439c                	lw	a5,0(a5)
    e8835058:	cb95                	beqz	a5,e883508c <startLLQHandshake+0xc0>
    e883505a:	31445503          	lhu	a0,788(s0)
    e883505e:	c03e00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8835062:	6791                	lui	a5,0x4
    e8835064:	97a6                	add	a5,a5,s1
    e8835066:	bc87c703          	lbu	a4,-1080(a5) # 3bc8 <memcmp-0xe87fc438>
    e883506a:	bc97c683          	lbu	a3,-1079(a5)
    e883506e:	bd07a783          	lw	a5,-1072(a5)
    e8835072:	0087171b          	slliw	a4,a4,0x8
    e8835076:	8f55                	or	a4,a4,a3
    e8835078:	21440613          	addi	a2,s0,532
    e883507c:	86aa                	mv	a3,a0
    e883507e:	0007a597          	auipc	a1,0x7a
    e8835082:	bea58593          	addi	a1,a1,-1046 # e88aec68 <__func__.9833+0xcd0>
    e8835086:	450d                	li	a0,3
    e8835088:	c24fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (!end) { LogMsg("ERROR: startLLQHandshake - putLLQ"); StartLLQPolling(m,q); return; }
    e883508c:	85a2                	mv	a1,s0
    e883508e:	8526                	mv	a0,s1
    e8835090:	bb5fb0ef          	jal	ra,e8830c44 <StartLLQPolling>
    e8835094:	a8a5                	j	e883510c <startLLQHandshake+0x140>
    if (mDNSIPPortIsZero(q->servPort))
    e8835096:	1a45d783          	lhu	a5,420(a1)
    e883509a:	e3c9                	bnez	a5,e883511c <startLLQHandshake+0x150>
        q->ThisQInterval = LLQ_POLL_INTERVAL + mDNSRandom(LLQ_POLL_INTERVAL/10);    // Retry in approx 15 minutes
    e883509c:	000a0797          	auipc	a5,0xa0
    e88350a0:	9e478793          	addi	a5,a5,-1564 # e88d4a80 <mDNSPlatformOneSecond>
    e88350a4:	4388                	lw	a0,0(a5)
    e88350a6:	38400913          	li	s2,900
    e88350aa:	02a9093b          	mulw	s2,s2,a0
    e88350ae:	4529                	li	a0,10
    e88350b0:	02a9453b          	divw	a0,s2,a0
    e88350b4:	e55dd0ef          	jal	ra,e8812f08 <mDNSRandom>
    e88350b8:	0125053b          	addw	a0,a0,s2
    e88350bc:	c848                	sw	a0,20(s0)
        q->LastQTime     = m->timenow;
    e88350be:	2404a783          	lw	a5,576(s1)
        SetNextQueryTime(m, q);
    e88350c2:	85a2                	mv	a1,s0
    e88350c4:	8526                	mv	a0,s1
        q->LastQTime     = m->timenow;
    e88350c6:	c81c                	sw	a5,16(s0)
        SetNextQueryTime(m, q);
    e88350c8:	9a4e90ef          	jal	ra,e881e26c <SetNextQueryTime>
        q->servAddr = zeroAddr;
    e88350cc:	0006e797          	auipc	a5,0x6e
    e88350d0:	4b478793          	addi	a5,a5,1204 # e88a3580 <zeroAddr>
    e88350d4:	6394                	ld	a3,0(a5)
        if (q->nta) CancelGetZoneData(m, q->nta);
    e88350d6:	18843583          	ld	a1,392(s0)
        q->servAddr = zeroAddr;
    e88350da:	18d43823          	sd	a3,400(s0)
    e88350de:	6794                	ld	a3,8(a5)
    e88350e0:	4b9c                	lw	a5,16(a5)
    e88350e2:	18d43c23          	sd	a3,408(s0)
    e88350e6:	1af42023          	sw	a5,416(s0)
        if (q->nta) CancelGetZoneData(m, q->nta);
    e88350ea:	c581                	beqz	a1,e88350f2 <startLLQHandshake+0x126>
    e88350ec:	8526                	mv	a0,s1
    e88350ee:	f46ec0ef          	jal	ra,e8821834 <CancelGetZoneData>
        q->nta = StartGetZoneData(m, &q->qname, ZoneServiceLLQ, LLQGotZoneData, q);
    e88350f2:	8722                	mv	a4,s0
    e88350f4:	00000697          	auipc	a3,0x0
    e88350f8:	1f468693          	addi	a3,a3,500 # e88352e8 <LLQGotZoneData>
    e88350fc:	4609                	li	a2,2
    e88350fe:	21440593          	addi	a1,s0,532
            q->nta = StartGetZoneData(m, &q->qname, ZoneServiceLLQ, LLQGotZoneData, q);
    e8835102:	8526                	mv	a0,s1
    e8835104:	c47ff0ef          	jal	ra,e8834d4a <StartGetZoneData>
    e8835108:	18a43423          	sd	a0,392(s0)
}
    e883510c:	60e6                	ld	ra,88(sp)
    e883510e:	6446                	ld	s0,80(sp)
    e8835110:	64a6                	ld	s1,72(sp)
    e8835112:	6906                	ld	s2,64(sp)
    e8835114:	79e2                	ld	s3,56(sp)
    e8835116:	7a42                	ld	s4,48(sp)
    e8835118:	6125                	addi	sp,sp,96
    e883511a:	8082                	ret
    if (PrivateQuery(q))
    e883511c:	65bc                	ld	a5,72(a1)
    e883511e:	10078363          	beqz	a5,e8835224 <startLLQHandshake+0x258>
    e8835122:	00c7c783          	lbu	a5,12(a5)
    e8835126:	0e078f63          	beqz	a5,e8835224 <startLLQHandshake+0x258>
        if (q->tcp) LogInfo("startLLQHandshake: Disposing existing TCP connection for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e883512a:	1a85b783          	ld	a5,424(a1)
    e883512e:	c78d                	beqz	a5,e8835158 <startLLQHandshake+0x18c>
    e8835130:	000a0797          	auipc	a5,0xa0
    e8835134:	94478793          	addi	a5,a5,-1724 # e88d4a74 <mDNS_LoggingEnabled>
    e8835138:	439c                	lw	a5,0(a5)
    e883513a:	cf99                	beqz	a5,e8835158 <startLLQHandshake+0x18c>
    e883513c:	3145d503          	lhu	a0,788(a1)
    e8835140:	b21e00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8835144:	86aa                	mv	a3,a0
    e8835146:	21440613          	addi	a2,s0,532
    e883514a:	0007a597          	auipc	a1,0x7a
    e883514e:	b8e58593          	addi	a1,a1,-1138 # e88aecd8 <__func__.9833+0xd40>
    e8835152:	450d                	li	a0,3
    e8835154:	b58fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (q->tcp) { DisposeTCPConn(q->tcp); q->tcp = mDNSNULL; }
    e8835158:	1a843503          	ld	a0,424(s0)
    e883515c:	c509                	beqz	a0,e8835166 <startLLQHandshake+0x19a>
    e883515e:	d84fe0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8835162:	1a043423          	sd	zero,424(s0)
        if (!q->nta)
    e8835166:	18843783          	ld	a5,392(s0)
    e883516a:	ef95                	bnez	a5,e88351a6 <startLLQHandshake+0x1da>
            LogInfo("startLLQHandshake: nta is NULL for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e883516c:	000a0797          	auipc	a5,0xa0
    e8835170:	90878793          	addi	a5,a5,-1784 # e88d4a74 <mDNS_LoggingEnabled>
    e8835174:	439c                	lw	a5,0(a5)
    e8835176:	21440913          	addi	s2,s0,532
    e883517a:	cf91                	beqz	a5,e8835196 <startLLQHandshake+0x1ca>
    e883517c:	31445503          	lhu	a0,788(s0)
    e8835180:	ae1e00ef          	jal	ra,e8815c60 <DNSTypeName>
    e8835184:	86aa                	mv	a3,a0
    e8835186:	864a                	mv	a2,s2
    e8835188:	0007a597          	auipc	a1,0x7a
    e883518c:	b9858593          	addi	a1,a1,-1128 # e88aed20 <__func__.9833+0xd88>
    e8835190:	450d                	li	a0,3
    e8835192:	b1afa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            q->nta = StartGetZoneData(m, &q->qname, ZoneServiceLLQ, LLQGotZoneData, q);
    e8835196:	8722                	mv	a4,s0
    e8835198:	00000697          	auipc	a3,0x0
    e883519c:	15068693          	addi	a3,a3,336 # e88352e8 <LLQGotZoneData>
    e88351a0:	4609                	li	a2,2
    e88351a2:	85ca                	mv	a1,s2
    e88351a4:	bfb9                	j	e8835102 <startLLQHandshake+0x136>
        else if (!q->nta->Host.c[0])
    e88351a6:	2127c783          	lbu	a5,530(a5)
    e88351aa:	e78d                	bnez	a5,e88351d4 <startLLQHandshake+0x208>
            LogMsg("startLLQHandshake: ERROR!!: nta non NULL for %##s (%s) but HostName %d NULL, LongLived %d", q->qname.c, DNSTypeName(q->qtype), q->nta->Host.c[0], q->LongLived);
    e88351ac:	31445503          	lhu	a0,788(s0)
    e88351b0:	ab1e00ef          	jal	ra,e8815c60 <DNSTypeName>
    e88351b4:	86aa                	mv	a3,a0
    e88351b6:	18843703          	ld	a4,392(s0)
    e88351ba:	31844783          	lbu	a5,792(s0)
    e88351be:	21440613          	addi	a2,s0,532
    e88351c2:	21274703          	lbu	a4,530(a4)
    e88351c6:	0007a597          	auipc	a1,0x7a
    e88351ca:	b8a58593          	addi	a1,a1,-1142 # e88aed50 <__func__.9833+0xdb8>
    e88351ce:	4501                	li	a0,0
    e88351d0:	adcfa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        q->tcp = MakeTCPConn(m, mDNSNULL, mDNSNULL, kTCPSocketFlags_UseTLS, &q->servAddr, q->servPort, &q->nta->Host, q, mDNSNULL);
    e88351d4:	18843803          	ld	a6,392(s0)
    e88351d8:	1a445783          	lhu	a5,420(s0)
    e88351dc:	e002                	sd	zero,0(sp)
    e88351de:	88a2                	mv	a7,s0
    e88351e0:	21280813          	addi	a6,a6,530
    e88351e4:	19040713          	addi	a4,s0,400
    e88351e8:	4685                	li	a3,1
    e88351ea:	4601                	li	a2,0
    e88351ec:	4581                	li	a1,0
    e88351ee:	8526                	mv	a0,s1
    e88351f0:	ae3fe0ef          	jal	ra,e8833cd2 <MakeTCPConn>
    e88351f4:	1aa43423          	sd	a0,424(s0)
        if (!q->tcp)
    e88351f8:	e919                	bnez	a0,e883520e <startLLQHandshake+0x242>
            q->ThisQInterval = mDNSPlatformOneSecond * 5;   // If TCP failed (transient networking glitch) try again in five seconds
    e88351fa:	000a0797          	auipc	a5,0xa0
    e88351fe:	88678793          	addi	a5,a5,-1914 # e88d4a80 <mDNSPlatformOneSecond>
    e8835202:	439c                	lw	a5,0(a5)
    e8835204:	4715                	li	a4,5
    e8835206:	02e787bb          	mulw	a5,a5,a4
            q->ThisQInterval = (kLLQ_INIT_RESEND * mDNSPlatformOneSecond);
    e883520a:	c85c                	sw	a5,20(s0)
    e883520c:	b51d                	j	e8835032 <startLLQHandshake+0x66>
            q->state         = LLQ_SecondaryRequest;        // Right now, for private DNS, we skip the four-way LLQ handshake
    e883520e:	4789                	li	a5,2
    e8835210:	1af40a23          	sb	a5,436(s0)
            q->ReqLease      = kLLQ_DefLease;
    e8835214:	6789                	lui	a5,0x2
    e8835216:	c207879b          	addiw	a5,a5,-992
    e883521a:	1af42c23          	sw	a5,440(s0)
            q->ThisQInterval = 0;
    e883521e:	00042a23          	sw	zero,20(s0)
        q->LastQTime     = m->timenow;
    e8835222:	bd01                	j	e8835032 <startLLQHandshake+0x66>
        if (q->ntries++ >= kLLQ_MAX_TRIES)
    e8835224:	1c041783          	lh	a5,448(s0)
    e8835228:	0017871b          	addiw	a4,a5,1
    e883522c:	1ce41023          	sh	a4,448(s0)
    e8835230:	4709                	li	a4,2
    e8835232:	00f75d63          	bge	a4,a5,e883524c <startLLQHandshake+0x280>
            LogMsg("startLLQHandshake: %d failed attempts for LLQ %##s Polling.", kLLQ_MAX_TRIES, q->qname.c);
    e8835236:	21440693          	addi	a3,s0,532
    e883523a:	460d                	li	a2,3
    e883523c:	0007a597          	auipc	a1,0x7a
    e8835240:	b7458593          	addi	a1,a1,-1164 # e88aedb0 <__func__.9833+0xe18>
    e8835244:	4501                	li	a0,0
    e8835246:	a66fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            StartLLQPolling(m, q);
    e883524a:	b589                	j	e883508c <startLLQHandshake+0xc0>
            llqData.vers  = kLLQ_Vers;
    e883524c:	67c1                	lui	a5,0x10
    e883524e:	2785                	addiw	a5,a5,1
    e8835250:	cc3e                	sw	a5,24(sp)
            llqData.id    = zeroOpaque64;
    e8835252:	0006e797          	auipc	a5,0x6e
    e8835256:	36e78793          	addi	a5,a5,878 # e88a35c0 <zeroOpaque64>
    e883525a:	639c                	ld	a5,0(a5)
            InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e883525c:	6a1d                	lui	s4,0x7
    e883525e:	21245583          	lhu	a1,530(s0)
            llqData.id    = zeroOpaque64;
    e8835262:	f03e                	sd	a5,32(sp)
            InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8835264:	0006e797          	auipc	a5,0x6e
    e8835268:	31478793          	addi	a5,a5,788 # e88a3578 <uQueryFlags>
    e883526c:	0007d603          	lhu	a2,0(a5)
    e8835270:	1e0a0913          	addi	s2,s4,480 # 71e0 <memcmp-0xe87f8e20>
    e8835274:	9926                	add	s2,s2,s1
            llqData.llqlease = kLLQ_DefLease;
    e8835276:	6989                	lui	s3,0x2
            InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8835278:	854a                	mv	a0,s2
            llqData.llqlease = kLLQ_DefLease;
    e883527a:	c209899b          	addiw	s3,s3,-992
            llqData.err   = LLQErr_NoError; // Don't need to tell server UDP notification port when sending over UDP
    e883527e:	00011e23          	sh	zero,28(sp)
            llqData.llqlease = kLLQ_DefLease;
    e8835282:	d44e                	sw	s3,40(sp)
            InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8835284:	bc8df0ef          	jal	ra,e881464c <InitializeDNSMessage>
            end = putLLQ(&m->omsg, m->omsg.data, q, &llqData);
    e8835288:	1eca0593          	addi	a1,s4,492
    e883528c:	8622                	mv	a2,s0
    e883528e:	0834                	addi	a3,sp,24
    e8835290:	95a6                	add	a1,a1,s1
    e8835292:	854a                	mv	a0,s2
    e8835294:	b77fb0ef          	jal	ra,e8830e0a <putLLQ>
    e8835298:	862a                	mv	a2,a0
            if (!end) { LogMsg("ERROR: startLLQHandshake - putLLQ"); StartLLQPolling(m,q); return; }
    e883529a:	e901                	bnez	a0,e88352aa <startLLQHandshake+0x2de>
    e883529c:	0007a597          	auipc	a1,0x7a
    e88352a0:	b5458593          	addi	a1,a1,-1196 # e88aedf0 <__func__.9833+0xe58>
    e88352a4:	a08fa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88352a8:	b3d5                	j	e883508c <startLLQHandshake+0xc0>
            mDNSSendDNSMessage(m, &m->omsg, end, mDNSInterface_Any, q->LocalSocket, &q->servAddr, q->servPort, mDNSNULL, mDNSNULL, mDNSfalse);
    e88352aa:	0006e697          	auipc	a3,0x6e
    e88352ae:	ab668693          	addi	a3,a3,-1354 # e88a2d60 <mDNSInterface_Any>
    e88352b2:	1a445803          	lhu	a6,420(s0)
    e88352b6:	16043703          	ld	a4,352(s0)
    e88352ba:	6294                	ld	a3,0(a3)
    e88352bc:	19040793          	addi	a5,s0,400
    e88352c0:	e402                	sd	zero,8(sp)
    e88352c2:	e002                	sd	zero,0(sp)
    e88352c4:	4881                	li	a7,0
    e88352c6:	85ca                	mv	a1,s2
    e88352c8:	8526                	mv	a0,s1
    e88352ca:	be8e20ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
            q->ReqLease      = kLLQ_DefLease;
    e88352ce:	1b342c23          	sw	s3,440(s0)
            q->state         = LLQ_InitialRequest;
    e88352d2:	4785                	li	a5,1
    e88352d4:	1af40a23          	sb	a5,436(s0)
            q->ThisQInterval = (kLLQ_INIT_RESEND * mDNSPlatformOneSecond);
    e88352d8:	0009f797          	auipc	a5,0x9f
    e88352dc:	7a878793          	addi	a5,a5,1960 # e88d4a80 <mDNSPlatformOneSecond>
    e88352e0:	439c                	lw	a5,0(a5)
    e88352e2:	0017979b          	slliw	a5,a5,0x1
    e88352e6:	b715                	j	e883520a <startLLQHandshake+0x23e>

00000000e88352e8 <LLQGotZoneData>:
{
    e88352e8:	7139                	addi	sp,sp,-64
    e88352ea:	f84e                	sd	s3,48(sp)
    e88352ec:	89ae                	mv	s3,a1
    mDNS_Lock(m);
    e88352ee:	00079597          	auipc	a1,0x79
    e88352f2:	c2a58593          	addi	a1,a1,-982 # e88adf18 <__func__.9618>
{
    e88352f6:	f026                	sd	s1,32(sp)
    e88352f8:	f44a                	sd	s2,40(sp)
    e88352fa:	fc06                	sd	ra,56(sp)
    e88352fc:	ec22                	sd	s0,24(sp)
    e88352fe:	892a                	mv	s2,a0
    DNSQuestion *q = (DNSQuestion *)zoneInfo->ZoneDataContext;
    e8835300:	33863403          	ld	s0,824(a2)
{
    e8835304:	84b2                	mv	s1,a2
    mDNS_Lock(m);
    e8835306:	efce00ef          	jal	ra,e8815a02 <mDNS_Lock_>
    q->servAddr = zeroAddr;
    e883530a:	0006e797          	auipc	a5,0x6e
    e883530e:	27678793          	addi	a5,a5,630 # e88a3580 <zeroAddr>
    e8835312:	6394                	ld	a3,0(a5)
    e8835314:	19040713          	addi	a4,s0,400
    e8835318:	18d43823          	sd	a3,400(s0)
    e883531c:	6794                	ld	a3,8(a5)
    e883531e:	4b9c                	lw	a5,16(a5)
    e8835320:	e714                	sd	a3,8(a4)
    e8835322:	cb1c                	sw	a5,16(a4)
    q->servPort = zeroIPPort;
    e8835324:	0006e797          	auipc	a5,0x6e
    e8835328:	28478793          	addi	a5,a5,644 # e88a35a8 <zeroIPPort>
    e883532c:	0007d783          	lhu	a5,0(a5)
    e8835330:	1af41223          	sh	a5,420(s0)
    if (!err && !mDNSIPPortIsZero(zoneInfo->Port) && !mDNSAddressIsZero(&zoneInfo->Addr) && zoneInfo->Host.c[0])
    e8835334:	0c099363          	bnez	s3,e88353fa <LLQGotZoneData+0x112>
    e8835338:	3124d783          	lhu	a5,786(s1)
    e883533c:	cfdd                	beqz	a5,e88353fa <LLQGotZoneData+0x112>
    e883533e:	3144a783          	lw	a5,788(s1)
    e8835342:	4691                	li	a3,4
    e8835344:	08d79b63          	bne	a5,a3,e88353da <LLQGotZoneData+0xf2>
    e8835348:	3184a783          	lw	a5,792(s1)
    e883534c:	c7dd                	beqz	a5,e88353fa <LLQGotZoneData+0x112>
    e883534e:	2124c783          	lbu	a5,530(s1)
    e8835352:	c7c5                	beqz	a5,e88353fa <LLQGotZoneData+0x112>
        q->servAddr = zoneInfo->Addr;
    e8835354:	3144b683          	ld	a3,788(s1)
    e8835358:	18d43823          	sd	a3,400(s0)
    e883535c:	31c4b683          	ld	a3,796(s1)
    e8835360:	e714                	sd	a3,8(a4)
    e8835362:	3244a783          	lw	a5,804(s1)
    e8835366:	cb1c                	sw	a5,16(a4)
        q->servPort = zoneInfo->Port;
    e8835368:	3124d783          	lhu	a5,786(s1)
    e883536c:	1af41223          	sh	a5,420(s0)
        if (!PrivateQuery(q))
    e8835370:	643c                	ld	a5,72(s0)
    e8835372:	c781                	beqz	a5,e883537a <LLQGotZoneData+0x92>
    e8835374:	00c7c783          	lbu	a5,12(a5)
    e8835378:	ef95                	bnez	a5,e88353b4 <LLQGotZoneData+0xcc>
            if (q->nta)
    e883537a:	18843603          	ld	a2,392(s0)
    e883537e:	ca1d                	beqz	a2,e88353b4 <LLQGotZoneData+0xcc>
                if (q->nta != zoneInfo) LogMsg("LLQGotZoneData: nta (%p) != zoneInfo (%p)  %##s (%s)", q->nta, zoneInfo, q->qname.c, DNSTypeName(q->qtype));
    e8835380:	e432                	sd	a2,8(sp)
    e8835382:	02960263          	beq	a2,s1,e88353a6 <LLQGotZoneData+0xbe>
    e8835386:	31445503          	lhu	a0,788(s0)
    e883538a:	8d7e00ef          	jal	ra,e8815c60 <DNSTypeName>
    e883538e:	87aa                	mv	a5,a0
    e8835390:	6622                	ld	a2,8(sp)
    e8835392:	21440713          	addi	a4,s0,532
    e8835396:	86a6                	mv	a3,s1
    e8835398:	00077597          	auipc	a1,0x77
    e883539c:	6d058593          	addi	a1,a1,1744 # e88aca68 <kOn.10632+0xb20>
    e88353a0:	4501                	li	a0,0
    e88353a2:	90afa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                CancelGetZoneData(m, q->nta);
    e88353a6:	18843583          	ld	a1,392(s0)
    e88353aa:	854a                	mv	a0,s2
    e88353ac:	c88ec0ef          	jal	ra,e8821834 <CancelGetZoneData>
                q->nta = mDNSNULL;
    e88353b0:	18043423          	sd	zero,392(s0)
        q->ntries = 0;
    e88353b4:	1c041023          	sh	zero,448(s0)
        startLLQHandshake(m, q);
    e88353b8:	85a2                	mv	a1,s0
    e88353ba:	854a                	mv	a0,s2
    e88353bc:	c11ff0ef          	jal	ra,e8834fcc <startLLQHandshake>
}
    e88353c0:	6462                	ld	s0,24(sp)
    e88353c2:	70e2                	ld	ra,56(sp)
    e88353c4:	7482                	ld	s1,32(sp)
    e88353c6:	79c2                	ld	s3,48(sp)
    mDNS_Unlock(m);
    e88353c8:	854a                	mv	a0,s2
}
    e88353ca:	7922                	ld	s2,40(sp)
    mDNS_Unlock(m);
    e88353cc:	00079597          	auipc	a1,0x79
    e88353d0:	b4c58593          	addi	a1,a1,-1204 # e88adf18 <__func__.9618>
}
    e88353d4:	6121                	addi	sp,sp,64
    mDNS_Unlock(m);
    e88353d6:	ef6e006f          	j	e8815acc <mDNS_Unlock_>
    if (!err && !mDNSIPPortIsZero(zoneInfo->Port) && !mDNSAddressIsZero(&zoneInfo->Addr) && zoneInfo->Host.c[0])
    e88353da:	4699                	li	a3,6
    e88353dc:	f6d799e3          	bne	a5,a3,e883534e <LLQGotZoneData+0x66>
    e88353e0:	31c4a683          	lw	a3,796(s1)
    e88353e4:	3184a783          	lw	a5,792(s1)
    e88353e8:	8fd5                	or	a5,a5,a3
    e88353ea:	3204a683          	lw	a3,800(s1)
    e88353ee:	8fd5                	or	a5,a5,a3
    e88353f0:	3244a683          	lw	a3,804(s1)
    e88353f4:	8fd5                	or	a5,a5,a3
    e88353f6:	2781                	sext.w	a5,a5
    e88353f8:	bf91                	j	e883534c <LLQGotZoneData+0x64>
        if (q->nta)
    e88353fa:	18843603          	ld	a2,392(s0)
    e88353fe:	ca1d                	beqz	a2,e8835434 <LLQGotZoneData+0x14c>
            if (q->nta != zoneInfo) LogMsg("LLQGotZoneData: nta (%p) != zoneInfo (%p)  %##s (%s)", q->nta, zoneInfo, q->qname.c, DNSTypeName(q->qtype));
    e8835400:	e432                	sd	a2,8(sp)
    e8835402:	02960263          	beq	a2,s1,e8835426 <LLQGotZoneData+0x13e>
    e8835406:	31445503          	lhu	a0,788(s0)
    e883540a:	857e00ef          	jal	ra,e8815c60 <DNSTypeName>
    e883540e:	87aa                	mv	a5,a0
    e8835410:	6622                	ld	a2,8(sp)
    e8835412:	21440713          	addi	a4,s0,532
    e8835416:	86a6                	mv	a3,s1
    e8835418:	00077597          	auipc	a1,0x77
    e883541c:	65058593          	addi	a1,a1,1616 # e88aca68 <kOn.10632+0xb20>
    e8835420:	4501                	li	a0,0
    e8835422:	88afa0ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            CancelGetZoneData(m, q->nta);
    e8835426:	18843583          	ld	a1,392(s0)
    e883542a:	854a                	mv	a0,s2
    e883542c:	c08ec0ef          	jal	ra,e8821834 <CancelGetZoneData>
            q->nta = mDNSNULL;
    e8835430:	18043423          	sd	zero,392(s0)
        StartLLQPolling(m,q);
    e8835434:	85a2                	mv	a1,s0
    e8835436:	854a                	mv	a0,s2
    e8835438:	80dfb0ef          	jal	ra,e8830c44 <StartLLQPolling>
        if (err == mStatus_NoSuchNameErr)
    e883543c:	77c1                	lui	a5,0xffff0
    e883543e:	17f9                	addi	a5,a5,-2
    e8835440:	f8f990e3          	bne	s3,a5,e88353c0 <LLQGotZoneData+0xd8>
            q->servAddr.type = mDNSAddrType_IPv4;
    e8835444:	4791                	li	a5,4
    e8835446:	18f42823          	sw	a5,400(s0)
            q->servAddr.ip.v4 = onesIPv4Addr;
    e883544a:	0006e797          	auipc	a5,0x6e
    e883544e:	ec678793          	addi	a5,a5,-314 # e88a3310 <onesIPv4Addr>
    e8835452:	439c                	lw	a5,0(a5)
    e8835454:	18f42a23          	sw	a5,404(s0)
    e8835458:	b7a5                	j	e88353c0 <LLQGotZoneData+0xd8>

00000000e883545a <GetAuthInfoForQuestion>:
    if (q->QuestionCallback == GetZoneData_QuestionCallback) return(mDNSNULL);
    e883545a:	3485b703          	ld	a4,840(a1)
    e883545e:	ffffd797          	auipc	a5,0xffffd
    e8835462:	28078793          	addi	a5,a5,640 # e88326de <GetZoneData_QuestionCallback>
    e8835466:	00f70b63          	beq	a4,a5,e883547c <GetAuthInfoForQuestion+0x22>
    if (q->qtype            == kDNSType_SOA                ) return(mDNSNULL);
    e883546a:	3145d703          	lhu	a4,788(a1)
    e883546e:	4799                	li	a5,6
    e8835470:	00f70663          	beq	a4,a5,e883547c <GetAuthInfoForQuestion+0x22>
    return(GetAuthInfoForName_internal(m, &q->qname));
    e8835474:	21458593          	addi	a1,a1,532
    e8835478:	814fd06f          	j	e883248c <GetAuthInfoForName_internal>
}
    e883547c:	4501                	li	a0,0
    e883547e:	8082                	ret

00000000e8835480 <UpdateAllSRVRecords>:
{
    e8835480:	7139                	addi	sp,sp,-64
    m->NextSRVUpdate = 0;
    e8835482:	678d                	lui	a5,0x3
{
    e8835484:	f026                	sd	s1,32(sp)
    e8835486:	fc06                	sd	ra,56(sp)
    e8835488:	ec22                	sd	s0,24(sp)
    e883548a:	f44a                	sd	s2,40(sp)
    e883548c:	f84e                	sd	s3,48(sp)
    m->NextSRVUpdate = 0;
    e883548e:	97aa                	add	a5,a5,a0
    e8835490:	1e07ae23          	sw	zero,508(a5) # 31fc <memcmp-0xe87fce04>
    LogInfo("UpdateAllSRVRecords %d", m->SleepState);
    e8835494:	0009f797          	auipc	a5,0x9f
    e8835498:	5e078793          	addi	a5,a5,1504 # e88d4a74 <mDNS_LoggingEnabled>
    e883549c:	439c                	lw	a5,0(a5)
{
    e883549e:	84aa                	mv	s1,a0
    LogInfo("UpdateAllSRVRecords %d", m->SleepState);
    e88354a0:	cb91                	beqz	a5,e88354b4 <UpdateAllSRVRecords+0x34>
    e88354a2:	28554603          	lbu	a2,645(a0)
    e88354a6:	00078597          	auipc	a1,0x78
    e88354aa:	48258593          	addi	a1,a1,1154 # e88ad928 <kOn.10632+0x19e0>
    e88354ae:	450d                	li	a0,3
    e88354b0:	ffdf90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (m->CurrentRecord)
    e88354b4:	678d                	lui	a5,0x3
    e88354b6:	97a6                	add	a5,a5,s1
    e88354b8:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e88354bc:	c105                	beqz	a0,e88354dc <UpdateAllSRVRecords+0x5c>
        LogMsg("UpdateAllSRVRecords ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e88354be:	790c                	ld	a1,48(a0)
    e88354c0:	03b48613          	addi	a2,s1,59
    e88354c4:	0521                	addi	a0,a0,8
    e88354c6:	0591                	addi	a1,a1,4
    e88354c8:	d4ce10ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88354cc:	862a                	mv	a2,a0
    e88354ce:	00078597          	auipc	a1,0x78
    e88354d2:	47258593          	addi	a1,a1,1138 # e88ad940 <kOn.10632+0x19f8>
    e88354d6:	4501                	li	a0,0
    e88354d8:	fd5f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentRecord = m->ResourceRecords;
    e88354dc:	678d                	lui	a5,0x3
    e88354de:	97a6                	add	a5,a5,s1
    e88354e0:	1b87b703          	ld	a4,440(a5) # 31b8 <memcmp-0xe87fce48>
    while (m->CurrentRecord)
    e88354e4:	843e                	mv	s0,a5
        if (AuthRecord_uDNS(rptr) && rptr->resrec.rrtype == kDNSType_SRV)
    e88354e6:	0006e917          	auipc	s2,0x6e
    e88354ea:	87a90913          	addi	s2,s2,-1926 # e88a2d60 <mDNSInterface_Any>
    m->CurrentRecord = m->ResourceRecords;
    e88354ee:	1ce7b823          	sd	a4,464(a5)
        if (AuthRecord_uDNS(rptr) && rptr->resrec.rrtype == kDNSType_SRV)
    e88354f2:	02100993          	li	s3,33
    while (m->CurrentRecord)
    e88354f6:	1d043583          	ld	a1,464(s0)
    e88354fa:	e981                	bnez	a1,e883550a <UpdateAllSRVRecords+0x8a>
}
    e88354fc:	70e2                	ld	ra,56(sp)
    e88354fe:	6462                	ld	s0,24(sp)
    e8835500:	7482                	ld	s1,32(sp)
    e8835502:	7922                	ld	s2,40(sp)
    e8835504:	79c2                	ld	s3,48(sp)
    e8835506:	6121                	addi	sp,sp,64
    e8835508:	8082                	ret
        m->CurrentRecord = m->CurrentRecord->next;
    e883550a:	619c                	ld	a5,0(a1)
    e883550c:	1cf43823          	sd	a5,464(s0)
        if (AuthRecord_uDNS(rptr) && rptr->resrec.rrtype == kDNSType_SRV)
    e8835510:	00093783          	ld	a5,0(s2)
    e8835514:	7198                	ld	a4,32(a1)
    e8835516:	fef710e3          	bne	a4,a5,e88354f6 <UpdateAllSRVRecords+0x76>
    e883551a:	07a5c783          	lbu	a5,122(a1)
    e883551e:	ffe1                	bnez	a5,e88354f6 <UpdateAllSRVRecords+0x76>
    e8835520:	7588                	ld	a0,40(a1)
    e8835522:	e42e                	sd	a1,8(sp)
    e8835524:	b7fdd0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8835528:	f579                	bnez	a0,e88354f6 <UpdateAllSRVRecords+0x76>
    e883552a:	65a2                	ld	a1,8(sp)
    e883552c:	00a5d783          	lhu	a5,10(a1)
    e8835530:	fd3793e3          	bne	a5,s3,e88354f6 <UpdateAllSRVRecords+0x76>
            UpdateOneSRVRecord(m, rptr);
    e8835534:	8526                	mv	a0,s1
    e8835536:	9eeff0ef          	jal	ra,e8834724 <UpdateOneSRVRecord>
    e883553a:	bf75                	j	e88354f6 <UpdateAllSRVRecords+0x76>

00000000e883553c <mDNS_AddDynDNSHostName>:
{
    e883553c:	7139                	addi	sp,sp,-64
    LogInfo("mDNS_AddDynDNSHostName %##s", fqdn);
    e883553e:	0009f797          	auipc	a5,0x9f
    e8835542:	53678793          	addi	a5,a5,1334 # e88d4a74 <mDNS_LoggingEnabled>
{
    e8835546:	e422                	sd	s0,8(sp)
    e8835548:	e826                	sd	s1,16(sp)
    e883554a:	ec4a                	sd	s2,24(sp)
    e883554c:	f04e                	sd	s3,32(sp)
    e883554e:	f452                	sd	s4,40(sp)
    e8835550:	fc06                	sd	ra,56(sp)
    e8835552:	f856                	sd	s5,48(sp)
    LogInfo("mDNS_AddDynDNSHostName %##s", fqdn);
    e8835554:	439c                	lw	a5,0(a5)
    HostnameInfo **ptr = &m->Hostnames;
    e8835556:	6411                	lui	s0,0x4
    e8835558:	b0840413          	addi	s0,s0,-1272 # 3b08 <memcmp-0xe87fc4f8>
{
    e883555c:	892a                	mv	s2,a0
    e883555e:	84ae                	mv	s1,a1
    e8835560:	8a32                	mv	s4,a2
    e8835562:	89b6                	mv	s3,a3
    HostnameInfo **ptr = &m->Hostnames;
    e8835564:	942a                	add	s0,s0,a0
    LogInfo("mDNS_AddDynDNSHostName %##s", fqdn);
    e8835566:	cb89                	beqz	a5,e8835578 <mDNS_AddDynDNSHostName+0x3c>
    e8835568:	862e                	mv	a2,a1
    e883556a:	450d                	li	a0,3
    e883556c:	00079597          	auipc	a1,0x79
    e8835570:	c4458593          	addi	a1,a1,-956 # e88ae1b0 <__func__.9833+0x218>
    e8835574:	f39f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    while (*ptr && !SameDomainName(fqdn, &(*ptr)->fqdn)) ptr = &(*ptr)->next;
    e8835578:	600c                	ld	a1,0(s0)
    e883557a:	c99d                	beqz	a1,e88355b0 <mDNS_AddDynDNSHostName+0x74>
    e883557c:	06058593          	addi	a1,a1,96
    e8835580:	8526                	mv	a0,s1
    e8835582:	ac9dd0ef          	jal	ra,e881304a <SameDomainName>
    e8835586:	601c                	ld	a5,0(s0)
    e8835588:	c115                	beqz	a0,e88355ac <mDNS_AddDynDNSHostName+0x70>
    if (*ptr) { LogMsg("DynDNSHostName %##s already in list", fqdn->c); return; }
    e883558a:	c39d                	beqz	a5,e88355b0 <mDNS_AddDynDNSHostName+0x74>
}
    e883558c:	6422                	ld	s0,8(sp)
    e883558e:	70e2                	ld	ra,56(sp)
    e8835590:	6962                	ld	s2,24(sp)
    e8835592:	7982                	ld	s3,32(sp)
    e8835594:	7a22                	ld	s4,40(sp)
    e8835596:	7ac2                	ld	s5,48(sp)
    if (*ptr) { LogMsg("DynDNSHostName %##s already in list", fqdn->c); return; }
    e8835598:	8626                	mv	a2,s1
}
    e883559a:	64c2                	ld	s1,16(sp)
    if (*ptr) { LogMsg("DynDNSHostName %##s already in list", fqdn->c); return; }
    e883559c:	00079597          	auipc	a1,0x79
    e88355a0:	c3458593          	addi	a1,a1,-972 # e88ae1d0 <__func__.9833+0x238>
    e88355a4:	4501                	li	a0,0
}
    e88355a6:	6121                	addi	sp,sp,64
    if (*ptr) { LogMsg("DynDNSHostName %##s already in list", fqdn->c); return; }
    e88355a8:	f05f906f          	j	e882f4ac <LogMsgWithLevel>
    while (*ptr && !SameDomainName(fqdn, &(*ptr)->fqdn)) ptr = &(*ptr)->next;
    e88355ac:	843e                	mv	s0,a5
    e88355ae:	b7e9                	j	e8835578 <mDNS_AddDynDNSHostName+0x3c>
    *ptr = mDNSPlatformMemAllocate(sizeof(**ptr));
    e88355b0:	6a85                	lui	s5,0x1
    e88355b2:	990a8513          	addi	a0,s5,-1648 # 990 <memcmp-0xe87ff670>
    e88355b6:	cadfa0ef          	jal	ra,e8830262 <mDNSPlatformMemAllocate>
    e88355ba:	e008                	sd	a0,0(s0)
    if (!*ptr) { LogMsg("ERROR: mDNS_AddDynDNSHostName - malloc"); return; }
    e88355bc:	ed19                	bnez	a0,e88355da <mDNS_AddDynDNSHostName+0x9e>
}
    e88355be:	6422                	ld	s0,8(sp)
    e88355c0:	70e2                	ld	ra,56(sp)
    e88355c2:	64c2                	ld	s1,16(sp)
    e88355c4:	6962                	ld	s2,24(sp)
    e88355c6:	7982                	ld	s3,32(sp)
    e88355c8:	7a22                	ld	s4,40(sp)
    e88355ca:	7ac2                	ld	s5,48(sp)
    if (!*ptr) { LogMsg("ERROR: mDNS_AddDynDNSHostName - malloc"); return; }
    e88355cc:	00079597          	auipc	a1,0x79
    e88355d0:	c2c58593          	addi	a1,a1,-980 # e88ae1f8 <__func__.9833+0x260>
}
    e88355d4:	6121                	addi	sp,sp,64
    if (!*ptr) { LogMsg("ERROR: mDNS_AddDynDNSHostName - malloc"); return; }
    e88355d6:	ed7f906f          	j	e882f4ac <LogMsgWithLevel>
    mDNSPlatformMemZero(*ptr, sizeof(**ptr));
    e88355da:	990a8593          	addi	a1,s5,-1648
    e88355de:	d18fa0ef          	jal	ra,e882faf6 <mDNSPlatformMemZero>
    AssignDomainName(&(*ptr)->fqdn, fqdn);
    e88355e2:	10048593          	addi	a1,s1,256
    e88355e6:	8526                	mv	a0,s1
    e88355e8:	b65dd0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88355ec:	0005061b          	sext.w	a2,a0
    e88355f0:	10000713          	li	a4,256
    e88355f4:	6008                	ld	a0,0(s0)
    e88355f6:	04c76363          	bltu	a4,a2,e883563c <mDNS_AddDynDNSHostName+0x100>
    e88355fa:	85a6                	mv	a1,s1
    e88355fc:	06050513          	addi	a0,a0,96
    e8835600:	ca0fa0ef          	jal	ra,e882faa0 <mDNSPlatformMemCopy>
    (*ptr)->arv4.state     = regState_Unregistered;
    e8835604:	6018                	ld	a4,0(s0)
    e8835606:	4791                	li	a5,4
    (*ptr)->StatusCallback = StatusCallback;
    e8835608:	6685                	lui	a3,0x1
    (*ptr)->arv4.state     = regState_Unregistered;
    e883560a:	2af70623          	sb	a5,684(a4)
    (*ptr)->arv6.state     = regState_Unregistered;
    e883560e:	6018                	ld	a4,0(s0)
    AdvertiseHostname(m, *ptr);
    e8835610:	854a                	mv	a0,s2
    (*ptr)->arv6.state     = regState_Unregistered;
    e8835612:	6af70e23          	sb	a5,1724(a4)
    (*ptr)->StatusCallback = StatusCallback;
    e8835616:	6018                	ld	a4,0(s0)
    e8835618:	9736                	add	a4,a4,a3
    e883561a:	99473023          	sd	s4,-1664(a4)
    (*ptr)->StatusContext  = StatusContext;
    e883561e:	601c                	ld	a5,0(s0)
    e8835620:	97b6                	add	a5,a5,a3
    e8835622:	9937b423          	sd	s3,-1656(a5)
    AdvertiseHostname(m, *ptr);
    e8835626:	600c                	ld	a1,0(s0)
}
    e8835628:	6422                	ld	s0,8(sp)
    e883562a:	70e2                	ld	ra,56(sp)
    e883562c:	64c2                	ld	s1,16(sp)
    e883562e:	6962                	ld	s2,24(sp)
    e8835630:	7982                	ld	s3,32(sp)
    e8835632:	7a22                	ld	s4,40(sp)
    e8835634:	7ac2                	ld	s5,48(sp)
    e8835636:	6121                	addi	sp,sp,64
    AdvertiseHostname(m, *ptr);
    e8835638:	88dfd06f          	j	e8832ec4 <AdvertiseHostname>
    AssignDomainName(&(*ptr)->fqdn, fqdn);
    e883563c:	06050023          	sb	zero,96(a0)
    e8835640:	b7d1                	j	e8835604 <mDNS_AddDynDNSHostName+0xc8>

00000000e8835642 <mDNS_RemoveDynDNSHostName>:
{
    e8835642:	7139                	addi	sp,sp,-64
    e8835644:	f856                	sd	s5,48(sp)
    LogInfo("mDNS_RemoveDynDNSHostName %##s", fqdn);
    e8835646:	0009fa97          	auipc	s5,0x9f
    e883564a:	42ea8a93          	addi	s5,s5,1070 # e88d4a74 <mDNS_LoggingEnabled>
    e883564e:	000aa783          	lw	a5,0(s5)
{
    e8835652:	e826                	sd	s1,16(sp)
    e8835654:	ec4a                	sd	s2,24(sp)
    e8835656:	f452                	sd	s4,40(sp)
    HostnameInfo **ptr = &m->Hostnames;
    e8835658:	6911                	lui	s2,0x4
{
    e883565a:	fc06                	sd	ra,56(sp)
    e883565c:	e422                	sd	s0,8(sp)
    e883565e:	f04e                	sd	s3,32(sp)
    HostnameInfo **ptr = &m->Hostnames;
    e8835660:	b0890913          	addi	s2,s2,-1272 # 3b08 <memcmp-0xe87fc4f8>
{
    e8835664:	84aa                	mv	s1,a0
    e8835666:	8a2e                	mv	s4,a1
    HostnameInfo **ptr = &m->Hostnames;
    e8835668:	992a                	add	s2,s2,a0
    LogInfo("mDNS_RemoveDynDNSHostName %##s", fqdn);
    e883566a:	cb89                	beqz	a5,e883567c <mDNS_RemoveDynDNSHostName+0x3a>
    e883566c:	862e                	mv	a2,a1
    e883566e:	450d                	li	a0,3
    e8835670:	00079597          	auipc	a1,0x79
    e8835674:	bb058593          	addi	a1,a1,-1104 # e88ae220 <__func__.9833+0x288>
    e8835678:	e35f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    while (*ptr && !SameDomainName(fqdn, &(*ptr)->fqdn)) ptr = &(*ptr)->next;
    e883567c:	00093583          	ld	a1,0(s2)
    e8835680:	edb1                	bnez	a1,e88356dc <mDNS_RemoveDynDNSHostName+0x9a>
    if (!*ptr) LogMsg("mDNS_RemoveDynDNSHostName: no such domainname %##s", fqdn->c);
    e8835682:	00093403          	ld	s0,0(s2)
    e8835686:	e425                	bnez	s0,e88356ee <mDNS_RemoveDynDNSHostName+0xac>
    e8835688:	8652                	mv	a2,s4
    e883568a:	00079597          	auipc	a1,0x79
    e883568e:	bb658593          	addi	a1,a1,-1098 # e88ae240 <__func__.9833+0x2a8>
    e8835692:	4501                	li	a0,0
    e8835694:	e19f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    mDNS_CheckLock(m);
    e8835698:	58d8                	lw	a4,52(s1)
    e883569a:	5894                	lw	a3,48(s1)
    e883569c:	0017079b          	addiw	a5,a4,1
    e88356a0:	00d78d63          	beq	a5,a3,e88356ba <mDNS_RemoveDynDNSHostName+0x78>
    e88356a4:	00079617          	auipc	a2,0x79
    e88356a8:	80460613          	addi	a2,a2,-2044 # e88adea8 <__func__.9366>
    e88356ac:	00072597          	auipc	a1,0x72
    e88356b0:	ae458593          	addi	a1,a1,-1308 # e88a7190 <end.8789+0x3ae8>
    e88356b4:	4501                	li	a0,0
    e88356b6:	df7f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->NextSRVUpdate = NonZeroTime(m->timenow);
    e88356ba:	2404a783          	lw	a5,576(s1)
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e88356be:	e391                	bnez	a5,e88356c2 <mDNS_RemoveDynDNSHostName+0x80>
    e88356c0:	4785                	li	a5,1
    e88356c2:	670d                	lui	a4,0x3
    e88356c4:	94ba                	add	s1,s1,a4
    e88356c6:	1ef4ae23          	sw	a5,508(s1)
}
    e88356ca:	70e2                	ld	ra,56(sp)
    e88356cc:	6422                	ld	s0,8(sp)
    e88356ce:	64c2                	ld	s1,16(sp)
    e88356d0:	6962                	ld	s2,24(sp)
    e88356d2:	7982                	ld	s3,32(sp)
    e88356d4:	7a22                	ld	s4,40(sp)
    e88356d6:	7ac2                	ld	s5,48(sp)
    e88356d8:	6121                	addi	sp,sp,64
    e88356da:	8082                	ret
    while (*ptr && !SameDomainName(fqdn, &(*ptr)->fqdn)) ptr = &(*ptr)->next;
    e88356dc:	06058593          	addi	a1,a1,96
    e88356e0:	8552                	mv	a0,s4
    e88356e2:	969dd0ef          	jal	ra,e881304a <SameDomainName>
    e88356e6:	fd51                	bnez	a0,e8835682 <mDNS_RemoveDynDNSHostName+0x40>
    e88356e8:	00093903          	ld	s2,0(s2)
    e88356ec:	bf41                	j	e883567c <mDNS_RemoveDynDNSHostName+0x3a>
        mDNSBool f4 = hi->arv4.resrec.RecordType != kDNSRecordTypeUnregistered && hi->arv4.state != regState_Unregistered;
    e88356ee:	16844703          	lbu	a4,360(s0)
    e88356f2:	4781                	li	a5,0
    e88356f4:	c711                	beqz	a4,e8835700 <mDNS_RemoveDynDNSHostName+0xbe>
    e88356f6:	2ac44783          	lbu	a5,684(s0)
    e88356fa:	17f1                	addi	a5,a5,-4
    e88356fc:	00f037b3          	snez	a5,a5
        mDNSBool f6 = hi->arv6.resrec.RecordType != kDNSRecordTypeUnregistered && hi->arv6.state != regState_Unregistered;
    e8835700:	57844703          	lbu	a4,1400(s0)
    e8835704:	4981                	li	s3,0
    e8835706:	c711                	beqz	a4,e8835712 <mDNS_RemoveDynDNSHostName+0xd0>
    e8835708:	6bc44983          	lbu	s3,1724(s0)
    e883570c:	19f1                	addi	s3,s3,-4
    e883570e:	013039b3          	snez	s3,s3
        *ptr = (*ptr)->next; // unlink
    e8835712:	6018                	ld	a4,0(s0)
    e8835714:	00e93023          	sd	a4,0(s2)
        if (f4 || f6)
    e8835718:	e78d                	bnez	a5,e8835742 <mDNS_RemoveDynDNSHostName+0x100>
    e883571a:	04098863          	beqz	s3,e883576a <mDNS_RemoveDynDNSHostName+0x128>
                LogInfo("mDNS_RemoveDynDNSHostName removing v6 %##s", fqdn);
    e883571e:	000aa783          	lw	a5,0(s5)
    e8835722:	cb89                	beqz	a5,e8835734 <mDNS_RemoveDynDNSHostName+0xf2>
    e8835724:	8652                	mv	a2,s4
    e8835726:	00079597          	auipc	a1,0x79
    e883572a:	b8258593          	addi	a1,a1,-1150 # e88ae2a8 <__func__.9833+0x310>
    e883572e:	450d                	li	a0,3
    e8835730:	d7df90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                mDNS_Deregister_internal(m, &hi->arv6, mDNS_Dereg_normal);
    e8835734:	4601                	li	a2,0
    e8835736:	57040593          	addi	a1,s0,1392
    e883573a:	8526                	mv	a0,s1
    e883573c:	830ed0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
    e8835740:	bfa1                	j	e8835698 <mDNS_RemoveDynDNSHostName+0x56>
                LogInfo("mDNS_RemoveDynDNSHostName removing v4 %##s", fqdn);
    e8835742:	000aa783          	lw	a5,0(s5)
    e8835746:	cb89                	beqz	a5,e8835758 <mDNS_RemoveDynDNSHostName+0x116>
    e8835748:	8652                	mv	a2,s4
    e883574a:	00079597          	auipc	a1,0x79
    e883574e:	b2e58593          	addi	a1,a1,-1234 # e88ae278 <__func__.9833+0x2e0>
    e8835752:	450d                	li	a0,3
    e8835754:	d59f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                mDNS_Deregister_internal(m, &hi->arv4, mDNS_Dereg_normal);
    e8835758:	4601                	li	a2,0
    e883575a:	16040593          	addi	a1,s0,352
    e883575e:	8526                	mv	a0,s1
    e8835760:	80ced0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
            if (f6)
    e8835764:	f2098ae3          	beqz	s3,e8835698 <mDNS_RemoveDynDNSHostName+0x56>
    e8835768:	bf5d                	j	e883571e <mDNS_RemoveDynDNSHostName+0xdc>
            if (hi->natinfo.clientContext)
    e883576a:	6c3c                	ld	a5,88(s0)
    e883576c:	cb81                	beqz	a5,e883577c <mDNS_RemoveDynDNSHostName+0x13a>
                mDNS_StopNATOperation_internal(m, &hi->natinfo);
    e883576e:	00840593          	addi	a1,s0,8
    e8835772:	8526                	mv	a0,s1
    e8835774:	da2fd0ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
                hi->natinfo.clientContext = mDNSNULL;
    e8835778:	04043c23          	sd	zero,88(s0)
            mDNSPlatformMemFree(hi);
    e883577c:	8522                	mv	a0,s0
    e883577e:	b05fa0ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
    e8835782:	bf19                	j	e8835698 <mDNS_RemoveDynDNSHostName+0x56>

00000000e8835784 <mDNS_SetPrimaryInterfaceInfo>:
{
    e8835784:	7119                	addi	sp,sp,-128
    e8835786:	f8a2                	sd	s0,112(sp)
    e8835788:	f4a6                	sd	s1,104(sp)
    e883578a:	f0ca                	sd	s2,96(sp)
    e883578c:	f862                	sd	s8,48(sp)
    e883578e:	fc86                	sd	ra,120(sp)
    e8835790:	ecce                	sd	s3,88(sp)
    e8835792:	e8d2                	sd	s4,80(sp)
    e8835794:	e4d6                	sd	s5,72(sp)
    e8835796:	e0da                	sd	s6,64(sp)
    e8835798:	fc5e                	sd	s7,56(sp)
    e883579a:	f466                	sd	s9,40(sp)
    e883579c:	f06a                	sd	s10,32(sp)
    e883579e:	ec6e                	sd	s11,24(sp)
    e88357a0:	84b2                	mv	s1,a2
    e88357a2:	8c36                	mv	s8,a3
    if (m->mDNS_busy != m->mDNS_reentrancy)
    e88357a4:	5910                	lw	a2,48(a0)
    e88357a6:	5954                	lw	a3,52(a0)
{
    e88357a8:	842a                	mv	s0,a0
    e88357aa:	892e                	mv	s2,a1
    if (m->mDNS_busy != m->mDNS_reentrancy)
    e88357ac:	00d60963          	beq	a2,a3,e88357be <mDNS_SetPrimaryInterfaceInfo+0x3a>
        LogMsg("mDNS_SetPrimaryInterfaceInfo: mDNS_busy (%ld) != mDNS_reentrancy (%ld)", m->mDNS_busy, m->mDNS_reentrancy);
    e88357b0:	00079597          	auipc	a1,0x79
    e88357b4:	b7858593          	addi	a1,a1,-1160 # e88ae328 <__func__.9833+0x390>
    e88357b8:	4501                	li	a0,0
    e88357ba:	cf3f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (v4addr && v4addr->type != mDNSAddrType_IPv4) { LogMsg("mDNS_SetPrimaryInterfaceInfo v4 address - incorrect type.  Discarding. %#a", v4addr); return; }
    e88357be:	02090d63          	beqz	s2,e88357f8 <mDNS_SetPrimaryInterfaceInfo+0x74>
    e88357c2:	00092703          	lw	a4,0(s2)
    e88357c6:	4791                	li	a5,4
    e88357c8:	02f70863          	beq	a4,a5,e88357f8 <mDNS_SetPrimaryInterfaceInfo+0x74>
    e88357cc:	864a                	mv	a2,s2
    e88357ce:	00079597          	auipc	a1,0x79
    e88357d2:	ba258593          	addi	a1,a1,-1118 # e88ae370 <__func__.9833+0x3d8>
}
    e88357d6:	7446                	ld	s0,112(sp)
    e88357d8:	70e6                	ld	ra,120(sp)
    e88357da:	74a6                	ld	s1,104(sp)
    e88357dc:	7906                	ld	s2,96(sp)
    e88357de:	69e6                	ld	s3,88(sp)
    e88357e0:	6a46                	ld	s4,80(sp)
    e88357e2:	6aa6                	ld	s5,72(sp)
    e88357e4:	6b06                	ld	s6,64(sp)
    e88357e6:	7be2                	ld	s7,56(sp)
    e88357e8:	7c42                	ld	s8,48(sp)
    e88357ea:	7ca2                	ld	s9,40(sp)
    e88357ec:	7d02                	ld	s10,32(sp)
    e88357ee:	6de2                	ld	s11,24(sp)
    if (v6addr && v6addr->type != mDNSAddrType_IPv6) { LogMsg("mDNS_SetPrimaryInterfaceInfo v6 address - incorrect type.  Discarding. %#a", v6addr); return; }
    e88357f0:	4501                	li	a0,0
}
    e88357f2:	6109                	addi	sp,sp,128
    if (v6addr && v6addr->type != mDNSAddrType_IPv6) { LogMsg("mDNS_SetPrimaryInterfaceInfo v6 address - incorrect type.  Discarding. %#a", v6addr); return; }
    e88357f4:	cb9f906f          	j	e882f4ac <LogMsgWithLevel>
    e88357f8:	c899                	beqz	s1,e883580e <mDNS_SetPrimaryInterfaceInfo+0x8a>
    e88357fa:	4098                	lw	a4,0(s1)
    e88357fc:	4799                	li	a5,6
    e88357fe:	00f70863          	beq	a4,a5,e883580e <mDNS_SetPrimaryInterfaceInfo+0x8a>
    e8835802:	8626                	mv	a2,s1
    e8835804:	00079597          	auipc	a1,0x79
    e8835808:	bbc58593          	addi	a1,a1,-1092 # e88ae3c0 <__func__.9833+0x428>
    e883580c:	b7e9                	j	e88357d6 <mDNS_SetPrimaryInterfaceInfo+0x52>
    if (router && router->type != mDNSAddrType_IPv4) { LogMsg("mDNS_SetPrimaryInterfaceInfo passed non-v4 router.  Discarding. %#a",        router); return; }
    e883580e:	000c0d63          	beqz	s8,e8835828 <mDNS_SetPrimaryInterfaceInfo+0xa4>
    e8835812:	000c2703          	lw	a4,0(s8)
    e8835816:	4791                	li	a5,4
    e8835818:	00f70863          	beq	a4,a5,e8835828 <mDNS_SetPrimaryInterfaceInfo+0xa4>
    e883581c:	8662                	mv	a2,s8
    e883581e:	00079597          	auipc	a1,0x79
    e8835822:	bf258593          	addi	a1,a1,-1038 # e88ae410 <__func__.9833+0x478>
    e8835826:	bf45                	j	e88357d6 <mDNS_SetPrimaryInterfaceInfo+0x52>
    mDNS_Lock(m);
    e8835828:	00078597          	auipc	a1,0x78
    e883582c:	6a058593          	addi	a1,a1,1696 # e88adec8 <__func__.9376>
    e8835830:	8522                	mv	a0,s0
    e8835832:	9d0e00ef          	jal	ra,e8815a02 <mDNS_Lock_>
    v4Changed     = !mDNSSameIPv4Address(m->AdvertisedV4.ip.v4, v4addr ? v4addr->ip.v4 : zerov4Addr);
    e8835836:	678d                	lui	a5,0x3
    e8835838:	97a2                	add	a5,a5,s0
    e883583a:	2287ab83          	lw	s7,552(a5) # 3228 <memcmp-0xe87fcdd8>
    e883583e:	22090563          	beqz	s2,e8835a68 <mDNS_SetPrimaryInterfaceInfo+0x2e4>
    e8835842:	00492a83          	lw	s5,4(s2)
    v6Changed     = !mDNSSameIPv6Address(m->AdvertisedV6.ip.v6, v6addr ? v6addr->ip.v6 : zerov6Addr);
    e8835846:	678d                	lui	a5,0x3
    e8835848:	97a2                	add	a5,a5,s0
    e883584a:	23c7a683          	lw	a3,572(a5) # 323c <memcmp-0xe87fcdc4>
    e883584e:	22048463          	beqz	s1,e8835a76 <mDNS_SetPrimaryInterfaceInfo+0x2f2>
    e8835852:	40d8                	lw	a4,4(s1)
    e8835854:	4785                	li	a5,1
    e8835856:	04e69063          	bne	a3,a4,e8835896 <mDNS_SetPrimaryInterfaceInfo+0x112>
    e883585a:	678d                	lui	a5,0x3
    e883585c:	97a2                	add	a5,a5,s0
    e883585e:	2407a683          	lw	a3,576(a5) # 3240 <memcmp-0xe87fcdc0>
    e8835862:	22048063          	beqz	s1,e8835a82 <mDNS_SetPrimaryInterfaceInfo+0x2fe>
    e8835866:	4498                	lw	a4,8(s1)
    e8835868:	4785                	li	a5,1
    e883586a:	02e69663          	bne	a3,a4,e8835896 <mDNS_SetPrimaryInterfaceInfo+0x112>
    e883586e:	678d                	lui	a5,0x3
    e8835870:	97a2                	add	a5,a5,s0
    e8835872:	2447a683          	lw	a3,580(a5) # 3244 <memcmp-0xe87fcdbc>
    e8835876:	20048c63          	beqz	s1,e8835a8e <mDNS_SetPrimaryInterfaceInfo+0x30a>
    e883587a:	44d8                	lw	a4,12(s1)
    e883587c:	4785                	li	a5,1
    e883587e:	00e69c63          	bne	a3,a4,e8835896 <mDNS_SetPrimaryInterfaceInfo+0x112>
    e8835882:	678d                	lui	a5,0x3
    e8835884:	97a2                	add	a5,a5,s0
    e8835886:	2487a783          	lw	a5,584(a5) # 3248 <memcmp-0xe87fcdb8>
    e883588a:	20048863          	beqz	s1,e8835a9a <mDNS_SetPrimaryInterfaceInfo+0x316>
    e883588e:	4898                	lw	a4,16(s1)
    e8835890:	8f99                	sub	a5,a5,a4
    e8835892:	00f037b3          	snez	a5,a5
    RouterChanged = !mDNSSameIPv4Address(m->Router.ip.v4,       router ? router->ip.v4 : zerov4Addr);
    e8835896:	670d                	lui	a4,0x3
    e8835898:	9722                	add	a4,a4,s0
    e883589a:	21472b03          	lw	s6,532(a4) # 3214 <memcmp-0xe87fcdec>
    e883589e:	200c0463          	beqz	s8,e8835aa6 <mDNS_SetPrimaryInterfaceInfo+0x322>
    e88358a2:	004c2a03          	lw	s4,4(s8)
    if (v4addr) m->AdvertisedV4 = *v4addr;else m->AdvertisedV4.ip.v4 = zerov4Addr;
    e88358a6:	670d                	lui	a4,0x3
    e88358a8:	9722                	add	a4,a4,s0
    e88358aa:	20090563          	beqz	s2,e8835ab4 <mDNS_SetPrimaryInterfaceInfo+0x330>
    e88358ae:	00093603          	ld	a2,0(s2)
    e88358b2:	22470693          	addi	a3,a4,548 # 3224 <memcmp-0xe87fcddc>
    e88358b6:	22c73223          	sd	a2,548(a4)
    e88358ba:	00893703          	ld	a4,8(s2)
    e88358be:	e698                	sd	a4,8(a3)
    e88358c0:	01092703          	lw	a4,16(s2)
    e88358c4:	ca98                	sw	a4,16(a3)
    if (v6addr) m->AdvertisedV6 = *v6addr;else m->AdvertisedV6.ip.v6 = zerov6Addr;
    e88358c6:	1e048f63          	beqz	s1,e8835ac4 <mDNS_SetPrimaryInterfaceInfo+0x340>
    e88358ca:	6090                	ld	a2,0(s1)
    e88358cc:	670d                	lui	a4,0x3
    e88358ce:	9722                	add	a4,a4,s0
    e88358d0:	22c73c23          	sd	a2,568(a4) # 3238 <memcmp-0xe87fcdc8>
    e88358d4:	23870693          	addi	a3,a4,568
    e88358d8:	6498                	ld	a4,8(s1)
    e88358da:	e698                	sd	a4,8(a3)
    e88358dc:	4898                	lw	a4,16(s1)
    e88358de:	ca98                	sw	a4,16(a3)
    if (router) m->Router       = *router;else m->Router.ip.v4 = zerov4Addr;
    e88358e0:	670d                	lui	a4,0x3
    e88358e2:	9722                	add	a4,a4,s0
    e88358e4:	1e0c0d63          	beqz	s8,e8835ade <mDNS_SetPrimaryInterfaceInfo+0x35a>
    e88358e8:	000c3603          	ld	a2,0(s8)
    e88358ec:	21070693          	addi	a3,a4,528 # 3210 <memcmp-0xe87fcdf0>
    e88358f0:	20c73823          	sd	a2,528(a4)
    e88358f4:	008c3703          	ld	a4,8(s8)
    e88358f8:	e698                	sd	a4,8(a3)
    e88358fa:	010c2703          	lw	a4,16(s8)
    e88358fe:	ca98                	sw	a4,16(a3)
    if (v4Changed || RouterChanged || v6Changed)
    e8835900:	015b9663          	bne	s7,s5,e883590c <mDNS_SetPrimaryInterfaceInfo+0x188>
    e8835904:	014b1463          	bne	s6,s4,e883590c <mDNS_SetPrimaryInterfaceInfo+0x188>
    e8835908:	12078b63          	beqz	a5,e8835a3e <mDNS_SetPrimaryInterfaceInfo+0x2ba>
        LogInfo("mDNS_SetPrimaryInterfaceInfo: %s%s%s%#a %#a %#a",
    e883590c:	0009f997          	auipc	s3,0x9f
    e8835910:	16898993          	addi	s3,s3,360 # e88d4a74 <mDNS_LoggingEnabled>
    e8835914:	0009a703          	lw	a4,0(s3)
    e8835918:	cb21                	beqz	a4,e8835968 <mDNS_SetPrimaryInterfaceInfo+0x1e4>
    e883591a:	00079617          	auipc	a2,0x79
    e883591e:	9be60613          	addi	a2,a2,-1602 # e88ae2d8 <__func__.9833+0x340>
    e8835922:	015b9663          	bne	s7,s5,e883592e <mDNS_SetPrimaryInterfaceInfo+0x1aa>
    e8835926:	0008c617          	auipc	a2,0x8c
    e883592a:	94a60613          	addi	a2,a2,-1718 # e88c1270 <kHTTPServerClass+0x90>
    e883592e:	00079697          	auipc	a3,0x79
    e8835932:	9ba68693          	addi	a3,a3,-1606 # e88ae2e8 <__func__.9833+0x350>
    e8835936:	014b1663          	bne	s6,s4,e8835942 <mDNS_SetPrimaryInterfaceInfo+0x1be>
    e883593a:	0008c697          	auipc	a3,0x8c
    e883593e:	93668693          	addi	a3,a3,-1738 # e88c1270 <kHTTPServerClass+0x90>
    e8835942:	00079717          	auipc	a4,0x79
    e8835946:	9b670713          	addi	a4,a4,-1610 # e88ae2f8 <__func__.9833+0x360>
    e883594a:	e789                	bnez	a5,e8835954 <mDNS_SetPrimaryInterfaceInfo+0x1d0>
    e883594c:	0008c717          	auipc	a4,0x8c
    e8835950:	92470713          	addi	a4,a4,-1756 # e88c1270 <kHTTPServerClass+0x90>
    e8835954:	88e2                	mv	a7,s8
    e8835956:	8826                	mv	a6,s1
    e8835958:	87ca                	mv	a5,s2
    e883595a:	00079597          	auipc	a1,0x79
    e883595e:	afe58593          	addi	a1,a1,-1282 # e88ae458 <__func__.9833+0x4c0>
    e8835962:	450d                	li	a0,3
    e8835964:	b49f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        for (i = m->Hostnames; i; i = i->next)
    e8835968:	6791                	lui	a5,0x4
    e883596a:	97a2                	add	a5,a5,s0
    e883596c:	b087bd83          	ld	s11,-1272(a5) # 3b08 <memcmp-0xe87fc4f8>
                !mDNSSameIPv4Address(i->arv4.resrec.rdata->u.ipv4, m->AdvertisedV4.ip.v4))
    e8835970:	648d                	lui	s1,0x3
            if (i->arv4.resrec.RecordType > kDNSRecordTypeDeregistering &&
    e8835972:	4c05                	li	s8,1
                !mDNSSameIPv4Address(i->arv4.resrec.rdata->u.ipv4, m->AdvertisedV4.ip.v4))
    e8835974:	94a2                	add	s1,s1,s0
                LogInfo("mDNS_SetPrimaryInterfaceInfo deregistering %s", ARDisplayString(m, &i->arv4));
    e8835976:	03b40c93          	addi	s9,s0,59
    e883597a:	00079d17          	auipc	s10,0x79
    e883597e:	b56d0d13          	addi	s10,s10,-1194 # e88ae4d0 <__func__.9833+0x538>
        for (i = m->Hostnames; i; i = i->next)
    e8835982:	160d9663          	bnez	s11,e8835aee <mDNS_SetPrimaryInterfaceInfo+0x36a>
        if (v4Changed || RouterChanged)
    e8835986:	015b9463          	bne	s7,s5,e883598e <mDNS_SetPrimaryInterfaceInfo+0x20a>
    e883598a:	094b0063          	beq	s6,s4,e8835a0a <mDNS_SetPrimaryInterfaceInfo+0x286>
            mDNSu32 waitSeconds = v4addr ? 0 : 5;
    e883598e:	4701                	li	a4,0
    e8835990:	00091363          	bnez	s2,e8835996 <mDNS_SetPrimaryInterfaceInfo+0x212>
    e8835994:	4715                	li	a4,5
            m->ExtAddress           = zerov4Addr;
    e8835996:	0006e917          	auipc	s2,0x6e
    e883599a:	c4a90913          	addi	s2,s2,-950 # e88a35e0 <zerov4Addr>
    e883599e:	00092783          	lw	a5,0(s2)
    e88359a2:	6491                	lui	s1,0x4
    e88359a4:	94a2                	add	s1,s1,s0
    e88359a6:	c0f4a423          	sw	a5,-1016(s1) # 3c08 <memcmp-0xe87fc3f8>
            RecreateNATMappings(m, mDNSPlatformOneSecond * waitSeconds);
    e88359aa:	0009f797          	auipc	a5,0x9f
    e88359ae:	0d678793          	addi	a5,a5,214 # e88d4a80 <mDNSPlatformOneSecond>
    e88359b2:	438c                	lw	a1,0(a5)
            m->LastNATMapResultCode = NATErr_None;
    e88359b4:	c2049423          	sh	zero,-984(s1)
            RecreateNATMappings(m, mDNSPlatformOneSecond * waitSeconds);
    e88359b8:	8522                	mv	a0,s0
    e88359ba:	02e585bb          	mulw	a1,a1,a4
    e88359be:	e43a                	sd	a4,8(sp)
    e88359c0:	fe1fc0ef          	jal	ra,e88329a0 <RecreateNATMappings>
            for (n = m->NATTraversals; n; n=n->next)
    e88359c4:	bf04b783          	ld	a5,-1040(s1)
    e88359c8:	6722                	ld	a4,8(sp)
    e88359ca:	1e079263          	bnez	a5,e8835bae <mDNS_SetPrimaryInterfaceInfo+0x42a>
            LogInfo("mDNS_SetPrimaryInterfaceInfo:%s%s: recreating NAT mappings in %d seconds",
    e88359ce:	0009a783          	lw	a5,0(s3)
    e88359d2:	cf85                	beqz	a5,e8835a0a <mDNS_SetPrimaryInterfaceInfo+0x286>
    e88359d4:	00079617          	auipc	a2,0x79
    e88359d8:	93460613          	addi	a2,a2,-1740 # e88ae308 <__func__.9833+0x370>
    e88359dc:	015b9663          	bne	s7,s5,e88359e8 <mDNS_SetPrimaryInterfaceInfo+0x264>
    e88359e0:	0008c617          	auipc	a2,0x8c
    e88359e4:	89060613          	addi	a2,a2,-1904 # e88c1270 <kHTTPServerClass+0x90>
    e88359e8:	00079697          	auipc	a3,0x79
    e88359ec:	93068693          	addi	a3,a3,-1744 # e88ae318 <__func__.9833+0x380>
    e88359f0:	014b1663          	bne	s6,s4,e88359fc <mDNS_SetPrimaryInterfaceInfo+0x278>
    e88359f4:	0008c697          	auipc	a3,0x8c
    e88359f8:	87c68693          	addi	a3,a3,-1924 # e88c1270 <kHTTPServerClass+0x90>
    e88359fc:	00079597          	auipc	a1,0x79
    e8835a00:	b0458593          	addi	a1,a1,-1276 # e88ae500 <__func__.9833+0x568>
    e8835a04:	450d                	li	a0,3
    e8835a06:	aa7f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (m->ReverseMap.ThisQInterval != -1) mDNS_StopQuery_internal(m, &m->ReverseMap);
    e8835a0a:	658d                	lui	a1,0x3
    e8835a0c:	00b407b3          	add	a5,s0,a1
    e8835a10:	26c7a703          	lw	a4,620(a5)
    e8835a14:	57fd                	li	a5,-1
    e8835a16:	00f70863          	beq	a4,a5,e8835a26 <mDNS_SetPrimaryInterfaceInfo+0x2a2>
    e8835a1a:	25858593          	addi	a1,a1,600 # 3258 <memcmp-0xe87fcda8>
    e8835a1e:	95a2                	add	a1,a1,s0
    e8835a20:	8522                	mv	a0,s0
    e8835a22:	9a1eb0ef          	jal	ra,e88213c2 <mDNS_StopQuery_internal>
        m->StaticHostname.c[0] = 0;
    e8835a26:	6791                	lui	a5,0x4
    e8835a28:	97a2                	add	a5,a5,s0
    e8835a2a:	90078423          	sb	zero,-1784(a5) # 3908 <memcmp-0xe87fc6f8>
        m->NextSRVUpdate = NonZeroTime(m->timenow);
    e8835a2e:	24042703          	lw	a4,576(s0)
    e8835a32:	e311                	bnez	a4,e8835a36 <mDNS_SetPrimaryInterfaceInfo+0x2b2>
    e8835a34:	4705                	li	a4,1
    e8835a36:	678d                	lui	a5,0x3
    e8835a38:	97a2                	add	a5,a5,s0
    e8835a3a:	1ee7ae23          	sw	a4,508(a5) # 31fc <memcmp-0xe87fce04>
    mDNS_Unlock(m);
    e8835a3e:	8522                	mv	a0,s0
}
    e8835a40:	7446                	ld	s0,112(sp)
    e8835a42:	70e6                	ld	ra,120(sp)
    e8835a44:	74a6                	ld	s1,104(sp)
    e8835a46:	7906                	ld	s2,96(sp)
    e8835a48:	69e6                	ld	s3,88(sp)
    e8835a4a:	6a46                	ld	s4,80(sp)
    e8835a4c:	6aa6                	ld	s5,72(sp)
    e8835a4e:	6b06                	ld	s6,64(sp)
    e8835a50:	7be2                	ld	s7,56(sp)
    e8835a52:	7c42                	ld	s8,48(sp)
    e8835a54:	7ca2                	ld	s9,40(sp)
    e8835a56:	7d02                	ld	s10,32(sp)
    e8835a58:	6de2                	ld	s11,24(sp)
    mDNS_Unlock(m);
    e8835a5a:	00078597          	auipc	a1,0x78
    e8835a5e:	46e58593          	addi	a1,a1,1134 # e88adec8 <__func__.9376>
}
    e8835a62:	6109                	addi	sp,sp,128
    mDNS_Unlock(m);
    e8835a64:	868e006f          	j	e8815acc <mDNS_Unlock_>
    v4Changed     = !mDNSSameIPv4Address(m->AdvertisedV4.ip.v4, v4addr ? v4addr->ip.v4 : zerov4Addr);
    e8835a68:	0006e797          	auipc	a5,0x6e
    e8835a6c:	b7878793          	addi	a5,a5,-1160 # e88a35e0 <zerov4Addr>
    e8835a70:	0007aa83          	lw	s5,0(a5)
    e8835a74:	bbc9                	j	e8835846 <mDNS_SetPrimaryInterfaceInfo+0xc2>
    v6Changed     = !mDNSSameIPv6Address(m->AdvertisedV6.ip.v6, v6addr ? v6addr->ip.v6 : zerov6Addr);
    e8835a76:	0006e797          	auipc	a5,0x6e
    e8835a7a:	b7278793          	addi	a5,a5,-1166 # e88a35e8 <zerov6Addr>
    e8835a7e:	4398                	lw	a4,0(a5)
    e8835a80:	bbd1                	j	e8835854 <mDNS_SetPrimaryInterfaceInfo+0xd0>
    e8835a82:	0006e797          	auipc	a5,0x6e
    e8835a86:	b6678793          	addi	a5,a5,-1178 # e88a35e8 <zerov6Addr>
    e8835a8a:	43d8                	lw	a4,4(a5)
    e8835a8c:	bbf1                	j	e8835868 <mDNS_SetPrimaryInterfaceInfo+0xe4>
    e8835a8e:	0006e797          	auipc	a5,0x6e
    e8835a92:	b5a78793          	addi	a5,a5,-1190 # e88a35e8 <zerov6Addr>
    e8835a96:	4798                	lw	a4,8(a5)
    e8835a98:	b3d5                	j	e883587c <mDNS_SetPrimaryInterfaceInfo+0xf8>
    e8835a9a:	0006e717          	auipc	a4,0x6e
    e8835a9e:	b4e70713          	addi	a4,a4,-1202 # e88a35e8 <zerov6Addr>
    e8835aa2:	4758                	lw	a4,12(a4)
    e8835aa4:	b3f5                	j	e8835890 <mDNS_SetPrimaryInterfaceInfo+0x10c>
    RouterChanged = !mDNSSameIPv4Address(m->Router.ip.v4,       router ? router->ip.v4 : zerov4Addr);
    e8835aa6:	0006e717          	auipc	a4,0x6e
    e8835aaa:	b3a70713          	addi	a4,a4,-1222 # e88a35e0 <zerov4Addr>
    e8835aae:	00072a03          	lw	s4,0(a4)
    e8835ab2:	bbd5                	j	e88358a6 <mDNS_SetPrimaryInterfaceInfo+0x122>
    if (v4addr) m->AdvertisedV4 = *v4addr;else m->AdvertisedV4.ip.v4 = zerov4Addr;
    e8835ab4:	0006e697          	auipc	a3,0x6e
    e8835ab8:	b2c68693          	addi	a3,a3,-1236 # e88a35e0 <zerov4Addr>
    e8835abc:	4294                	lw	a3,0(a3)
    e8835abe:	22d72423          	sw	a3,552(a4)
    e8835ac2:	b511                	j	e88358c6 <mDNS_SetPrimaryInterfaceInfo+0x142>
    if (v6addr) m->AdvertisedV6 = *v6addr;else m->AdvertisedV6.ip.v6 = zerov6Addr;
    e8835ac4:	0006e697          	auipc	a3,0x6e
    e8835ac8:	b2468693          	addi	a3,a3,-1244 # e88a35e8 <zerov6Addr>
    e8835acc:	6290                	ld	a2,0(a3)
    e8835ace:	6694                	ld	a3,8(a3)
    e8835ad0:	670d                	lui	a4,0x3
    e8835ad2:	9722                	add	a4,a4,s0
    e8835ad4:	22c73e23          	sd	a2,572(a4) # 323c <memcmp-0xe87fcdc4>
    e8835ad8:	24d73223          	sd	a3,580(a4)
    e8835adc:	b511                	j	e88358e0 <mDNS_SetPrimaryInterfaceInfo+0x15c>
    if (router) m->Router       = *router;else m->Router.ip.v4 = zerov4Addr;
    e8835ade:	0006e697          	auipc	a3,0x6e
    e8835ae2:	b0268693          	addi	a3,a3,-1278 # e88a35e0 <zerov4Addr>
    e8835ae6:	4294                	lw	a3,0(a3)
    e8835ae8:	20d72a23          	sw	a3,532(a4)
    e8835aec:	bd11                	j	e8835900 <mDNS_SetPrimaryInterfaceInfo+0x17c>
            LogInfo("mDNS_SetPrimaryInterfaceInfo updating host name registrations for %##s", i->fqdn.c);
    e8835aee:	0009a703          	lw	a4,0(s3)
    e8835af2:	cb11                	beqz	a4,e8835b06 <mDNS_SetPrimaryInterfaceInfo+0x382>
    e8835af4:	060d8613          	addi	a2,s11,96
    e8835af8:	00079597          	auipc	a1,0x79
    e8835afc:	99058593          	addi	a1,a1,-1648 # e88ae488 <__func__.9833+0x4f0>
    e8835b00:	450d                	li	a0,3
    e8835b02:	9abf90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (i->arv4.resrec.RecordType > kDNSRecordTypeDeregistering &&
    e8835b06:	168dc703          	lbu	a4,360(s11)
    e8835b0a:	02ec7d63          	bgeu	s8,a4,e8835b44 <mDNS_SetPrimaryInterfaceInfo+0x3c0>
                !mDNSSameIPv4Address(i->arv4.resrec.rdata->u.ipv4, m->AdvertisedV4.ip.v4))
    e8835b0e:	190db583          	ld	a1,400(s11)
            if (i->arv4.resrec.RecordType > kDNSRecordTypeDeregistering &&
    e8835b12:	2284a703          	lw	a4,552(s1)
    e8835b16:	41d4                	lw	a3,4(a1)
    e8835b18:	02e68663          	beq	a3,a4,e8835b44 <mDNS_SetPrimaryInterfaceInfo+0x3c0>
                LogInfo("mDNS_SetPrimaryInterfaceInfo deregistering %s", ARDisplayString(m, &i->arv4));
    e8835b1c:	0009a703          	lw	a4,0(s3)
    e8835b20:	cf01                	beqz	a4,e8835b38 <mDNS_SetPrimaryInterfaceInfo+0x3b4>
    e8835b22:	8666                	mv	a2,s9
    e8835b24:	0591                	addi	a1,a1,4
    e8835b26:	168d8513          	addi	a0,s11,360
    e8835b2a:	eebe00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8835b2e:	862a                	mv	a2,a0
    e8835b30:	85ea                	mv	a1,s10
    e8835b32:	450d                	li	a0,3
    e8835b34:	979f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                mDNS_Deregister_internal(m, &i->arv4, mDNS_Dereg_normal);
    e8835b38:	4601                	li	a2,0
    e8835b3a:	160d8593          	addi	a1,s11,352
    e8835b3e:	8522                	mv	a0,s0
    e8835b40:	c2dec0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
            if (i->arv6.resrec.RecordType > kDNSRecordTypeDeregistering &&
    e8835b44:	578dc703          	lbu	a4,1400(s11)
    e8835b48:	04ec7c63          	bgeu	s8,a4,e8835ba0 <mDNS_SetPrimaryInterfaceInfo+0x41c>
                !mDNSSameIPv6Address(i->arv6.resrec.rdata->u.ipv6, m->AdvertisedV6.ip.v6))
    e8835b4c:	5a0db583          	ld	a1,1440(s11)
            if (i->arv6.resrec.RecordType > kDNSRecordTypeDeregistering &&
    e8835b50:	23c4a703          	lw	a4,572(s1)
    e8835b54:	41d4                	lw	a3,4(a1)
    e8835b56:	02e69163          	bne	a3,a4,e8835b78 <mDNS_SetPrimaryInterfaceInfo+0x3f4>
                !mDNSSameIPv6Address(i->arv6.resrec.rdata->u.ipv6, m->AdvertisedV6.ip.v6))
    e8835b5a:	4594                	lw	a3,8(a1)
    e8835b5c:	2404a703          	lw	a4,576(s1)
    e8835b60:	00e69c63          	bne	a3,a4,e8835b78 <mDNS_SetPrimaryInterfaceInfo+0x3f4>
    e8835b64:	45d4                	lw	a3,12(a1)
    e8835b66:	2444a703          	lw	a4,580(s1)
    e8835b6a:	00e69763          	bne	a3,a4,e8835b78 <mDNS_SetPrimaryInterfaceInfo+0x3f4>
    e8835b6e:	4994                	lw	a3,16(a1)
    e8835b70:	2484a703          	lw	a4,584(s1)
    e8835b74:	02e68663          	beq	a3,a4,e8835ba0 <mDNS_SetPrimaryInterfaceInfo+0x41c>
                LogInfo("mDNS_SetPrimaryInterfaceInfo deregistering %s", ARDisplayString(m, &i->arv6));
    e8835b78:	0009a703          	lw	a4,0(s3)
    e8835b7c:	cf01                	beqz	a4,e8835b94 <mDNS_SetPrimaryInterfaceInfo+0x410>
    e8835b7e:	8666                	mv	a2,s9
    e8835b80:	0591                	addi	a1,a1,4
    e8835b82:	578d8513          	addi	a0,s11,1400
    e8835b86:	e8fe00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8835b8a:	862a                	mv	a2,a0
    e8835b8c:	85ea                	mv	a1,s10
    e8835b8e:	450d                	li	a0,3
    e8835b90:	91df90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                mDNS_Deregister_internal(m, &i->arv6, mDNS_Dereg_normal);
    e8835b94:	4601                	li	a2,0
    e8835b96:	570d8593          	addi	a1,s11,1392
    e8835b9a:	8522                	mv	a0,s0
    e8835b9c:	bd1ec0ef          	jal	ra,e882276c <mDNS_Deregister_internal>
            AdvertiseHostname(m, i);
    e8835ba0:	85ee                	mv	a1,s11
    e8835ba2:	8522                	mv	a0,s0
    e8835ba4:	b20fd0ef          	jal	ra,e8832ec4 <AdvertiseHostname>
        for (i = m->Hostnames; i; i = i->next)
    e8835ba8:	000dbd83          	ld	s11,0(s11)
    e8835bac:	bbd9                	j	e8835982 <mDNS_SetPrimaryInterfaceInfo+0x1fe>
                n->NewAddress = zerov4Addr;
    e8835bae:	00092683          	lw	a3,0(s2)
    e8835bb2:	d7d4                	sw	a3,44(a5)
            for (n = m->NATTraversals; n; n=n->next)
    e8835bb4:	639c                	ld	a5,0(a5)
    e8835bb6:	bd11                	j	e88359ca <mDNS_SetPrimaryInterfaceInfo+0x246>

00000000e8835bb8 <uDNS_ReceiveNATPacket>:
{
    e8835bb8:	7135                	addi	sp,sp,-160
    e8835bba:	ed06                	sd	ra,152(sp)
    e8835bbc:	e922                	sd	s0,144(sp)
    e8835bbe:	e526                	sd	s1,136(sp)
    e8835bc0:	e14a                	sd	s2,128(sp)
    e8835bc2:	fcce                	sd	s3,120(sp)
    e8835bc4:	f8d2                	sd	s4,112(sp)
    e8835bc6:	f4d6                	sd	s5,104(sp)
    e8835bc8:	f0da                	sd	s6,96(sp)
    e8835bca:	ecde                	sd	s7,88(sp)
    e8835bcc:	e8e2                	sd	s8,80(sp)
    e8835bce:	e4e6                	sd	s9,72(sp)
    e8835bd0:	e0ea                	sd	s10,64(sp)
    e8835bd2:	fc6e                	sd	s11,56(sp)
    if (len == 0)
    e8835bd4:	e69d                	bnez	a3,e8835c02 <uDNS_ReceiveNATPacket+0x4a>
        LogMsg("uDNS_ReceiveNATPacket: zero length packet");
    e8835bd6:	0007a597          	auipc	a1,0x7a
    e8835bda:	0d258593          	addi	a1,a1,210 # e88afca8 <__func__.9833+0x1d10>
    e8835bde:	4501                	li	a0,0
    e8835be0:	8cdf90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8835be4:	60ea                	ld	ra,152(sp)
    e8835be6:	644a                	ld	s0,144(sp)
    e8835be8:	64aa                	ld	s1,136(sp)
    e8835bea:	690a                	ld	s2,128(sp)
    e8835bec:	79e6                	ld	s3,120(sp)
    e8835bee:	7a46                	ld	s4,112(sp)
    e8835bf0:	7aa6                	ld	s5,104(sp)
    e8835bf2:	7b06                	ld	s6,96(sp)
    e8835bf4:	6be6                	ld	s7,88(sp)
    e8835bf6:	6c46                	ld	s8,80(sp)
    e8835bf8:	6ca6                	ld	s9,72(sp)
    e8835bfa:	6d06                	ld	s10,64(sp)
    e8835bfc:	7de2                	ld	s11,56(sp)
    e8835bfe:	610d                	addi	sp,sp,160
    e8835c00:	8082                	ret
    e8835c02:	8432                	mv	s0,a2
    else if (pkt[0] == PCP_VERS)
    e8835c04:	00064603          	lbu	a2,0(a2)
    e8835c08:	4789                	li	a5,2
    e8835c0a:	84aa                	mv	s1,a0
    e8835c0c:	8bae                	mv	s7,a1
    e8835c0e:	24f61163          	bne	a2,a5,e8835e50 <uDNS_ReceiveNATPacket+0x298>
    mDNSv4Addr mappedAddress = zerov4Addr;
    e8835c12:	0006e797          	auipc	a5,0x6e
    e8835c16:	9ce78793          	addi	a5,a5,-1586 # e88a35e0 <zerov4Addr>
    e8835c1a:	439c                	lw	a5,0(a5)
    mDNSBool checkEpochValidity = m->LastNATupseconds != 0;
    e8835c1c:	6c91                	lui	s9,0x4
    e8835c1e:	9caa                	add	s9,s9,a0
    mDNSv4Addr mappedAddress = zerov4Addr;
    e8835c20:	d43e                	sw	a5,40(sp)
    mDNSIPPort intport = zeroIPPort;
    e8835c22:	0006ea97          	auipc	s5,0x6e
    e8835c26:	986ada83          	lhu	s5,-1658(s5) # e88a35a8 <zeroIPPort>
    if (len < 24)
    e8835c2a:	0006891b          	sext.w	s2,a3
    e8835c2e:	47dd                	li	a5,23
    mDNSBool checkEpochValidity = m->LastNATupseconds != 0;
    e8835c30:	c20ca803          	lw	a6,-992(s9) # 3c20 <memcmp-0xe87fc3e0>
    mDNSIPPort extport = zeroIPPort;
    e8835c34:	8c56                	mv	s8,s5
    if (len < 24)
    e8835c36:	0127eb63          	bltu	a5,s2,e8835c4c <uDNS_ReceiveNATPacket+0x94>
        LogMsg("uDNS_ReceivePCPPacket: message too short (%d bytes)", len);
    e8835c3a:	864a                	mv	a2,s2
    e8835c3c:	0007a597          	auipc	a1,0x7a
    e8835c40:	09c58593          	addi	a1,a1,156 # e88afcd8 <__func__.9833+0x1d40>
    else { LogMsg("Received NAT-PMP response with unknown opcode 0x%X", AddrReply->opcode); return; }
    e8835c44:	4501                	li	a0,0
    e8835c46:	867f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8835c4a:	bf69                	j	e8835be4 <uDNS_ReceiveNATPacket+0x2c>
    strippedOpCode = reply->opCode & 0x7f;
    e8835c4c:	00144603          	lbu	a2,1(s0)
    if ((reply->opCode & 0x80) == 0x00 || (strippedOpCode != PCPOp_Announce && strippedOpCode != PCPOp_Map))
    e8835c50:	fc76378b          	extu	a5,a2,63,7
    e8835c54:	c789                	beqz	a5,e8835c5e <uDNS_ReceiveNATPacket+0xa6>
    e8835c56:	07e67b13          	andi	s6,a2,126
    e8835c5a:	000b0763          	beqz	s6,e8835c68 <uDNS_ReceiveNATPacket+0xb0>
        LogMsg("uDNS_ReceivePCPPacket: unhandled opCode %u", reply->opCode);
    e8835c5e:	0007a597          	auipc	a1,0x7a
    e8835c62:	0b258593          	addi	a1,a1,178 # e88afd10 <__func__.9833+0x1d78>
    e8835c66:	bff9                	j	e8835c44 <uDNS_ReceiveNATPacket+0x8c>
    reply->lifetime = (mDNSs32)((mDNSs32)pkt[4] << 24 | (mDNSs32)pkt[5] << 16 | (mDNSs32)pkt[ 6] << 8 | pkt[ 7]);
    e8835c68:	405c                	lw	a5,4(s0)
    e8835c6a:	00842983          	lw	s3,8(s0)
    client_delta = (m->timenow - m->LastNATReplyLocalTime) / mDNSPlatformOneSecond;
    e8835c6e:	0009f717          	auipc	a4,0x9f
    e8835c72:	e1270713          	addi	a4,a4,-494 # e88d4a80 <mDNSPlatformOneSecond>
    e8835c76:	9007978b          	revw	a5,a5
    e8835c7a:	9009998b          	revw	s3,s3
    reply->lifetime = (mDNSs32)((mDNSs32)pkt[4] << 24 | (mDNSs32)pkt[5] << 16 | (mDNSs32)pkt[ 6] << 8 | pkt[ 7]);
    e8835c7e:	c05c                	sw	a5,4(s0)
    reply->epoch    = (mDNSs32)((mDNSs32)pkt[8] << 24 | (mDNSs32)pkt[9] << 16 | (mDNSs32)pkt[10] << 8 | pkt[11]);
    e8835c80:	01342423          	sw	s3,8(s0)
    client_delta = (m->timenow - m->LastNATReplyLocalTime) / mDNSPlatformOneSecond;
    e8835c84:	24052a03          	lw	s4,576(a0)
    e8835c88:	86ce                	mv	a3,s3
    e8835c8a:	430c                	lw	a1,0(a4)
    server_delta = reply->epoch - m->LastNATupseconds;
    e8835c8c:	8d3a                	mv	s10,a4
    m->LastNATupseconds      = reply->epoch ? reply->epoch : 1;
    e8835c8e:	4705                	li	a4,1
    e8835c90:	42d6970b          	mvnez	a4,a3,a3
    if (m->SSDPSocket) { debugf("uDNS_ReceivePCPPacket: destroying SSDPSocket %p", &m->SSDPSocket); mDNSPlatformUDPClose(m->SSDPSocket); m->SSDPSocket = mDNSNULL; }
    e8835c94:	d20cb503          	ld	a0,-736(s9)
    client_delta = (m->timenow - m->LastNATReplyLocalTime) / mDNSPlatformOneSecond;
    e8835c98:	c24ca783          	lw	a5,-988(s9)
    server_delta = reply->epoch - m->LastNATupseconds;
    e8835c9c:	c20cad83          	lw	s11,-992(s9)
    m->LastNATReplyLocalTime = m->timenow;
    e8835ca0:	c34ca223          	sw	s4,-988(s9)
    m->LastNATupseconds      = reply->epoch ? reply->epoch : 1;
    e8835ca4:	c2eca023          	sw	a4,-992(s9)
    if (m->SSDPSocket) { debugf("uDNS_ReceivePCPPacket: destroying SSDPSocket %p", &m->SSDPSocket); mDNSPlatformUDPClose(m->SSDPSocket); m->SSDPSocket = mDNSNULL; }
    e8835ca8:	cd09                	beqz	a0,e8835cc2 <uDNS_ReceiveNATPacket+0x10a>
    e8835caa:	ec2e                	sd	a1,24(sp)
    e8835cac:	e83e                	sd	a5,16(sp)
    e8835cae:	e432                	sd	a2,8(sp)
    e8835cb0:	e042                	sd	a6,0(sp)
    e8835cb2:	c63f90ef          	jal	ra,e882f914 <mDNSPlatformUDPClose>
    e8835cb6:	d20cb023          	sd	zero,-736(s9)
    e8835cba:	65e2                	ld	a1,24(sp)
    e8835cbc:	67c2                	ld	a5,16(sp)
    e8835cbe:	6622                	ld	a2,8(sp)
    e8835cc0:	6802                	ld	a6,0(sp)
    strippedOpCode = reply->opCode & 0x7f;
    e8835cc2:	07f67613          	andi	a2,a2,127
    if (checkEpochValidity && (client_delta + 2 < server_delta - server_delta / 16 || server_delta + 2 < client_delta - client_delta / 16))
    e8835cc6:	06080263          	beqz	a6,e8835d2a <uDNS_ReceiveNATPacket+0x172>
    client_delta = (m->timenow - m->LastNATReplyLocalTime) / mDNSPlatformOneSecond;
    e8835cca:	40fa07bb          	subw	a5,s4,a5
    e8835cce:	02b7c7bb          	divw	a5,a5,a1
    server_delta = reply->epoch - m->LastNATupseconds;
    e8835cd2:	41b989bb          	subw	s3,s3,s11
    if (checkEpochValidity && (client_delta + 2 < server_delta - server_delta / 16 || server_delta + 2 < client_delta - client_delta / 16))
    e8835cd6:	0049d71b          	srliw	a4,s3,0x4
    e8835cda:	40e9873b          	subw	a4,s3,a4
    e8835cde:	0027869b          	addiw	a3,a5,2
    e8835ce2:	00e6e863          	bltu	a3,a4,e8835cf2 <uDNS_ReceiveNATPacket+0x13a>
    e8835ce6:	0047d71b          	srliw	a4,a5,0x4
    e8835cea:	2989                	addiw	s3,s3,2
    e8835cec:	9f99                	subw	a5,a5,a4
    e8835cee:	02f9fe63          	bgeu	s3,a5,e8835d2a <uDNS_ReceiveNATPacket+0x172>
        mDNSu32 waitTicks = strippedOpCode ? 0 : mDNSRandom(PCP_WAITSECS_AFTER_EPOCH_INVALID * mDNSPlatformOneSecond);
    e8835cf2:	4401                	li	s0,0
    e8835cf4:	ea11                	bnez	a2,e8835d08 <uDNS_ReceiveNATPacket+0x150>
    e8835cf6:	000d2783          	lw	a5,0(s10)
    e8835cfa:	4515                	li	a0,5
    e8835cfc:	02f5053b          	mulw	a0,a0,a5
    e8835d00:	a08dd0ef          	jal	ra,e8812f08 <mDNSRandom>
    e8835d04:	0005041b          	sext.w	s0,a0
        LogMsg("uDNS_ReceivePCPPacket: Epoch invalid, %#a likely rebooted, waiting %u ticks", &m->Router, waitTicks);
    e8835d08:	660d                	lui	a2,0x3
    e8835d0a:	21060613          	addi	a2,a2,528 # 3210 <memcmp-0xe87fcdf0>
    e8835d0e:	86a2                	mv	a3,s0
    e8835d10:	9626                	add	a2,a2,s1
    e8835d12:	0007a597          	auipc	a1,0x7a
    e8835d16:	02e58593          	addi	a1,a1,46 # e88afd40 <__func__.9833+0x1da8>
    e8835d1a:	4501                	li	a0,0
    e8835d1c:	f90f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        RecreateNATMappings(m, waitTicks);
    e8835d20:	85a2                	mv	a1,s0
    e8835d22:	8526                	mv	a0,s1
    e8835d24:	c7dfc0ef          	jal	ra,e88329a0 <RecreateNATMappings>
        return;
    e8835d28:	bd75                	j	e8835be4 <uDNS_ReceiveNATPacket+0x2c>
    if (strippedOpCode == PCPOp_Announce)
    e8835d2a:	ea060de3          	beqz	a2,e8835be4 <uDNS_ReceiveNATPacket+0x2c>
    m->LastNATMapResultCode = reply->result;
    e8835d2e:	00344783          	lbu	a5,3(s0)
    e8835d32:	6591                	lui	a1,0x4
    e8835d34:	95a6                	add	a1,a1,s1
    e8835d36:	c2f59423          	sh	a5,-984(a1) # 3c28 <memcmp-0xe87fc3d8>
    if (!reply->result)
    e8835d3a:	00344683          	lbu	a3,3(s0)
    e8835d3e:	eef9                	bnez	a3,e8835e1c <uDNS_ReceiveNATPacket+0x264>
        if (len < sizeof(PCPMapReply))
    e8835d40:	03b00793          	li	a5,59
    e8835d44:	0127e863          	bltu	a5,s2,e8835d54 <uDNS_ReceiveNATPacket+0x19c>
            LogMsg("uDNS_ReceivePCPPacket: mapping response too short (%d bytes)", len);
    e8835d48:	864a                	mv	a2,s2
    e8835d4a:	0007a597          	auipc	a1,0x7a
    e8835d4e:	04658593          	addi	a1,a1,70 # e88afd90 <__func__.9833+0x1df8>
    e8835d52:	bdcd                	j	e8835c44 <uDNS_ReceiveNATPacket+0x8c>
        if (reply->nonce[0] != m->PCPNonce[0] || reply->nonce[1] != m->PCPNonce[1] || reply->nonce[2] != m->PCPNonce[2])
    e8835d54:	4c10                	lw	a2,24(s0)
    e8835d56:	c0c5a783          	lw	a5,-1012(a1)
    e8835d5a:	4c54                	lw	a3,28(s0)
    e8835d5c:	c105a803          	lw	a6,-1008(a1)
    e8835d60:	5018                	lw	a4,32(s0)
    e8835d62:	c145a883          	lw	a7,-1004(a1)
    e8835d66:	00f61663          	bne	a2,a5,e8835d72 <uDNS_ReceiveNATPacket+0x1ba>
    e8835d6a:	00d81463          	bne	a6,a3,e8835d72 <uDNS_ReceiveNATPacket+0x1ba>
    e8835d6e:	01170a63          	beq	a4,a7,e8835d82 <uDNS_ReceiveNATPacket+0x1ca>
            LogMsg("uDNS_ReceivePCPPacket: invalid nonce, ignoring. received { %x %x %x } expected { %x %x %x }",
    e8835d72:	0007a597          	auipc	a1,0x7a
    e8835d76:	05e58593          	addi	a1,a1,94 # e88afdd0 <__func__.9833+0x1e38>
    e8835d7a:	4501                	li	a0,0
    e8835d7c:	f30f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            return;
    e8835d80:	b595                	j	e8835be4 <uDNS_ReceiveNATPacket+0x2c>
        if (!mDNSAddrIPv4FromMappedIPv6(&reply->extAddress, &mappedAddress))
    e8835d82:	02c40613          	addi	a2,s0,44
    e8835d86:	8532                	mv	a0,a2
    e8835d88:	102c                	addi	a1,sp,40
    e8835d8a:	e032                	sd	a2,0(sp)
        protocol = reply->protocol;
    e8835d8c:	02444b03          	lbu	s6,36(s0)
        intport = reply->intPort;
    e8835d90:	02845a83          	lhu	s5,40(s0)
        extport = reply->extPort;
    e8835d94:	02a45c03          	lhu	s8,42(s0)
        if (!mDNSAddrIPv4FromMappedIPv6(&reply->extAddress, &mappedAddress))
    e8835d98:	8c6dd0ef          	jal	ra,e8812e5e <mDNSAddrIPv4FromMappedIPv6>
    e8835d9c:	6602                	ld	a2,0(sp)
    e8835d9e:	e919                	bnez	a0,e8835db4 <uDNS_ReceiveNATPacket+0x1fc>
            LogMsg("uDNS_ReceivePCPPacket: unexpected external address: %.16a", &reply->extAddress);
    e8835da0:	0007a597          	auipc	a1,0x7a
    e8835da4:	09058593          	addi	a1,a1,144 # e88afe30 <__func__.9833+0x1e98>
    e8835da8:	f04f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            reply->result = NATErr_NetFail;
    e8835dac:	478d                	li	a5,3
    e8835dae:	00f401a3          	sb	a5,3(s0)
    e8835db2:	a019                	j	e8835db8 <uDNS_ReceiveNATPacket+0x200>
        else if (mDNSIPv4AddressIsZero(mappedAddress))
    e8835db4:	57a2                	lw	a5,40(sp)
    e8835db6:	dbfd                	beqz	a5,e8835dac <uDNS_ReceiveNATPacket+0x1f4>
    for (ptr = m->NATTraversals; ptr; ptr=ptr->next)
    e8835db8:	6791                	lui	a5,0x4
    e8835dba:	97a6                	add	a5,a5,s1
    e8835dbc:	bf07b903          	ld	s2,-1040(a5) # 3bf0 <memcmp-0xe87fc410>
        if ((protocol == ptrProtocol && mDNSSameIPPort(ptr->IntPort, intport)) ||
    e8835dc0:	4999                	li	s3,6
            (!ptr->Protocol && protocol == PCPProto_TCP && mDNSSameIPPort(DiscardPort, intport)))
    e8835dc2:	0006ca17          	auipc	s4,0x6c
    e8835dc6:	24ea0a13          	addi	s4,s4,590 # e88a2010 <DiscardPort>
    e8835dca:	2a81                	sext.w	s5,s5
        if ((protocol == ptrProtocol && mDNSSameIPPort(ptr->IntPort, intport)) ||
    e8835dcc:	4cc5                	li	s9,17
    for (ptr = m->NATTraversals; ptr; ptr=ptr->next)
    e8835dce:	e0090be3          	beqz	s2,e8835be4 <uDNS_ReceiveNATPacket+0x2c>
        mDNSu8 ptrProtocol = ((ptr->Protocol & NATOp_MapTCP) == NATOp_MapTCP ? PCPProto_TCP : PCPProto_UDP);
    e8835dd2:	03c94783          	lbu	a5,60(s2)
    e8835dd6:	0027f713          	andi	a4,a5,2
    e8835dda:	24071363          	bnez	a4,e8836020 <uDNS_ReceiveNATPacket+0x468>
        if ((protocol == ptrProtocol && mDNSSameIPPort(ptr->IntPort, intport)) ||
    e8835dde:	019b1663          	bne	s6,s9,e8835dea <uDNS_ReceiveNATPacket+0x232>
    e8835de2:	03e95703          	lhu	a4,62(s2)
    e8835de6:	01570963          	beq	a4,s5,e8835df8 <uDNS_ReceiveNATPacket+0x240>
    e8835dea:	e795                	bnez	a5,e8835e16 <uDNS_ReceiveNATPacket+0x25e>
            (!ptr->Protocol && protocol == PCPProto_TCP && mDNSSameIPPort(DiscardPort, intport)))
    e8835dec:	033b1563          	bne	s6,s3,e8835e16 <uDNS_ReceiveNATPacket+0x25e>
    e8835df0:	000a5783          	lhu	a5,0(s4)
    e8835df4:	03579163          	bne	a5,s5,e8835e16 <uDNS_ReceiveNATPacket+0x25e>
            natTraversalHandlePortMapReplyWithAddress(m, ptr, InterfaceID, reply->result ? NATErr_NetFail : NATErr_None, mappedAddress, extport, reply->lifetime, NATTProtocolPCP);
    e8835df8:	00344783          	lbu	a5,3(s0)
    e8835dfc:	468d                	li	a3,3
    e8835dfe:	e391                	bnez	a5,e8835e02 <uDNS_ReceiveNATPacket+0x24a>
    e8835e00:	4681                	li	a3,0
    e8835e02:	00442803          	lw	a6,4(s0)
    e8835e06:	5722                	lw	a4,40(sp)
    e8835e08:	488d                	li	a7,3
    e8835e0a:	87e2                	mv	a5,s8
    e8835e0c:	865e                	mv	a2,s7
    e8835e0e:	85ca                	mv	a1,s2
    e8835e10:	8526                	mv	a0,s1
    e8835e12:	da5fb0ef          	jal	ra,e8831bb6 <natTraversalHandlePortMapReplyWithAddress>
    for (ptr = m->NATTraversals; ptr; ptr=ptr->next)
    e8835e16:	00093903          	ld	s2,0(s2)
    e8835e1a:	bf55                	j	e8835dce <uDNS_ReceiveNATPacket+0x216>
        LogInfo("uDNS_ReceivePCPPacket: error received from server. opcode %X result %X lifetime %X epoch %X",
    e8835e1c:	0009f797          	auipc	a5,0x9f
    e8835e20:	c5878793          	addi	a5,a5,-936 # e88d4a74 <mDNS_LoggingEnabled>
    e8835e24:	439c                	lw	a5,0(a5)
    e8835e26:	cf81                	beqz	a5,e8835e3e <uDNS_ReceiveNATPacket+0x286>
    e8835e28:	441c                	lw	a5,8(s0)
    e8835e2a:	4058                	lw	a4,4(s0)
    e8835e2c:	00144603          	lbu	a2,1(s0)
    e8835e30:	0007a597          	auipc	a1,0x7a
    e8835e34:	04058593          	addi	a1,a1,64 # e88afe70 <__func__.9833+0x1ed8>
    e8835e38:	450d                	li	a0,3
    e8835e3a:	e72f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (len >= sizeof(PCPMapReply))
    e8835e3e:	03b00793          	li	a5,59
    e8835e42:	f727fbe3          	bgeu	a5,s2,e8835db8 <uDNS_ReceiveNATPacket+0x200>
            protocol = reply->protocol;
    e8835e46:	02444b03          	lbu	s6,36(s0)
            intport = reply->intPort;
    e8835e4a:	02845a83          	lhu	s5,40(s0)
    e8835e4e:	b7ad                	j	e8835db8 <uDNS_ReceiveNATPacket+0x200>
    else if (pkt[0] == NATMAP_VERS)
    e8835e50:	1c061163          	bnez	a2,e8836012 <uDNS_ReceiveNATPacket+0x45a>
    if (len < 4) { LogMsg("NAT-PMP message too short (%d bytes)", len); return; }
    e8835e54:	0006891b          	sext.w	s2,a3
    e8835e58:	478d                	li	a5,3
    e8835e5a:	0127e863          	bltu	a5,s2,e8835e6a <uDNS_ReceiveNATPacket+0x2b2>
    e8835e5e:	864a                	mv	a2,s2
    e8835e60:	0007a597          	auipc	a1,0x7a
    e8835e64:	07058593          	addi	a1,a1,112 # e88afed0 <__func__.9833+0x1f38>
    e8835e68:	bbf1                	j	e8835c44 <uDNS_ReceiveNATPacket+0x8c>
    AddrReply->err = (mDNSu16) ((mDNSu16)pkt[2] << 8 | pkt[3]);
    e8835e6a:	00244703          	lbu	a4,2(s0)
    e8835e6e:	00344783          	lbu	a5,3(s0)
    e8835e72:	0087171b          	slliw	a4,a4,0x8
    e8835e76:	8f5d                	or	a4,a4,a5
    e8835e78:	00e41123          	sh	a4,2(s0)
    if (AddrReply->err == NATErr_Vers)
    e8835e7c:	4785                	li	a5,1
    e8835e7e:	2701                	sext.w	a4,a4
    e8835e80:	04f71063          	bne	a4,a5,e8835ec0 <uDNS_ReceiveNATPacket+0x308>
        LogInfo("NAT-PMP version unsupported message received");
    e8835e84:	0009f797          	auipc	a5,0x9f
    e8835e88:	bf078793          	addi	a5,a5,-1040 # e88d4a74 <mDNS_LoggingEnabled>
    e8835e8c:	439c                	lw	a5,0(a5)
    e8835e8e:	cb81                	beqz	a5,e8835e9e <uDNS_ReceiveNATPacket+0x2e6>
    e8835e90:	0007a597          	auipc	a1,0x7a
    e8835e94:	06858593          	addi	a1,a1,104 # e88afef8 <__func__.9833+0x1f60>
    e8835e98:	450d                	li	a0,3
    e8835e9a:	e12f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        for (n = m->NATTraversals; n; n=n->next)
    e8835e9e:	6791                	lui	a5,0x4
    e8835ea0:	97a6                	add	a5,a5,s1
    e8835ea2:	bf07b403          	ld	s0,-1040(a5) # 3bf0 <memcmp-0xe87fc410>
    e8835ea6:	e411                	bnez	s0,e8835eb2 <uDNS_ReceiveNATPacket+0x2fa>
        m->NextScheduledNATOp = m->timenow;
    e8835ea8:	2404a783          	lw	a5,576(s1)
    e8835eac:	26f4a223          	sw	a5,612(s1)
        return;
    e8835eb0:	bb15                	j	e8835be4 <uDNS_ReceiveNATPacket+0x2c>
            uDNS_SendNATMsg(m, n, mDNSfalse);
    e8835eb2:	85a2                	mv	a1,s0
    e8835eb4:	4601                	li	a2,0
    e8835eb6:	8526                	mv	a0,s1
    e8835eb8:	fb7fb0ef          	jal	ra,e8831e6e <uDNS_SendNATMsg>
        for (n = m->NATTraversals; n; n=n->next)
    e8835ebc:	6000                	ld	s0,0(s0)
    e8835ebe:	b7e5                	j	e8835ea6 <uDNS_ReceiveNATPacket+0x2ee>
    if (len < 8)
    e8835ec0:	479d                	li	a5,7
    e8835ec2:	0127ed63          	bltu	a5,s2,e8835edc <uDNS_ReceiveNATPacket+0x324>
        LogMsg("NAT-PMP message too short (%d bytes) 0x%X 0x%X", len, AddrReply->opcode, AddrReply->err);
    e8835ec6:	00144683          	lbu	a3,1(s0)
    e8835eca:	864a                	mv	a2,s2
    e8835ecc:	0007a597          	auipc	a1,0x7a
    e8835ed0:	05c58593          	addi	a1,a1,92 # e88aff28 <__func__.9833+0x1f90>
        LogMsg("uDNS_ReceiveNATPacket: packet with version %u (expected %u or %u)", pkt[0], PCP_VERS, NATMAP_VERS);
    e8835ed4:	4501                	li	a0,0
    e8835ed6:	dd6f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
}
    e8835eda:	b329                	j	e8835be4 <uDNS_ReceiveNATPacket+0x2c>
    AddrReply->upseconds = (mDNSs32) ((mDNSs32)pkt[4] << 24 | (mDNSs32)pkt[5] << 16 | (mDNSs32)pkt[6] << 8 | pkt[7]);
    e8835edc:	405c                	lw	a5,4(s0)
    nat_elapsed = AddrReply->upseconds - m->LastNATupseconds;
    e8835ede:	6691                	lui	a3,0x4
    e8835ee0:	96aa                	add	a3,a3,a0
    e8835ee2:	9007978b          	revw	a5,a5
    AddrReply->upseconds = (mDNSs32) ((mDNSs32)pkt[4] << 24 | (mDNSs32)pkt[5] << 16 | (mDNSs32)pkt[6] << 8 | pkt[7]);
    e8835ee6:	c05c                	sw	a5,4(s0)
    nat_elapsed = AddrReply->upseconds - m->LastNATupseconds;
    e8835ee8:	c206a603          	lw	a2,-992(a3) # 3c20 <memcmp-0xe87fc3e0>
    if (AddrReply->upseconds < m->LastNATupseconds || nat_elapsed + 2 < our_elapsed - our_elapsed/8)
    e8835eec:	873e                	mv	a4,a5
    e8835eee:	02c76563          	bltu	a4,a2,e8835f18 <uDNS_ReceiveNATPacket+0x360>
    our_elapsed = (m->timenow - m->LastNATReplyLocalTime) / mDNSPlatformOneSecond;
    e8835ef2:	c246a683          	lw	a3,-988(a3)
    e8835ef6:	24052703          	lw	a4,576(a0)
    if (AddrReply->upseconds < m->LastNATupseconds || nat_elapsed + 2 < our_elapsed - our_elapsed/8)
    e8835efa:	9f91                	subw	a5,a5,a2
    e8835efc:	2789                	addiw	a5,a5,2
    our_elapsed = (m->timenow - m->LastNATReplyLocalTime) / mDNSPlatformOneSecond;
    e8835efe:	9f15                	subw	a4,a4,a3
    e8835f00:	0009f697          	auipc	a3,0x9f
    e8835f04:	b8068693          	addi	a3,a3,-1152 # e88d4a80 <mDNSPlatformOneSecond>
    e8835f08:	4294                	lw	a3,0(a3)
    e8835f0a:	02d7473b          	divw	a4,a4,a3
    if (AddrReply->upseconds < m->LastNATupseconds || nat_elapsed + 2 < our_elapsed - our_elapsed/8)
    e8835f0e:	0037569b          	srliw	a3,a4,0x3
    e8835f12:	9f15                	subw	a4,a4,a3
    e8835f14:	02e7f163          	bgeu	a5,a4,e8835f36 <uDNS_ReceiveNATPacket+0x37e>
    { LogMsg("NAT-PMP epoch time check failed: assuming NAT gateway %#a rebooted", &m->Router); RecreateNATMappings(m, 0); }
    e8835f18:	660d                	lui	a2,0x3
    e8835f1a:	21060613          	addi	a2,a2,528 # 3210 <memcmp-0xe87fcdf0>
    e8835f1e:	0007a597          	auipc	a1,0x7a
    e8835f22:	03a58593          	addi	a1,a1,58 # e88aff58 <__func__.9833+0x1fc0>
    e8835f26:	4501                	li	a0,0
    e8835f28:	9626                	add	a2,a2,s1
    e8835f2a:	d82f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8835f2e:	4581                	li	a1,0
    e8835f30:	8526                	mv	a0,s1
    e8835f32:	a6ffc0ef          	jal	ra,e88329a0 <RecreateNATMappings>
    m->LastNATupseconds      = AddrReply->upseconds;
    e8835f36:	4058                	lw	a4,4(s0)
    e8835f38:	6791                	lui	a5,0x4
    e8835f3a:	97a6                	add	a5,a5,s1
    e8835f3c:	c2e7a023          	sw	a4,-992(a5) # 3c20 <memcmp-0xe87fc3e0>
    m->LastNATReplyLocalTime = m->timenow;
    e8835f40:	2404a703          	lw	a4,576(s1)
    e8835f44:	c2e7a223          	sw	a4,-988(a5)
    if (AddrReply->opcode == NATOp_AddrResponse)
    e8835f48:	00144603          	lbu	a2,1(s0)
    e8835f4c:	08000793          	li	a5,128
    e8835f50:	02f61d63          	bne	a2,a5,e8835f8a <uDNS_ReceiveNATPacket+0x3d2>
        if (!AddrReply->err && len < sizeof(NATAddrReply)) { LogMsg("NAT-PMP AddrResponse message too short (%d bytes)", len); return; }
    e8835f54:	00245583          	lhu	a1,2(s0)
    e8835f58:	e991                	bnez	a1,e8835f6c <uDNS_ReceiveNATPacket+0x3b4>
    e8835f5a:	47ad                	li	a5,11
    e8835f5c:	0127e863          	bltu	a5,s2,e8835f6c <uDNS_ReceiveNATPacket+0x3b4>
    e8835f60:	864a                	mv	a2,s2
    e8835f62:	0007a597          	auipc	a1,0x7a
    e8835f66:	03e58593          	addi	a1,a1,62 # e88affa0 <__func__.9833+0x2008>
    e8835f6a:	b9e9                	j	e8835c44 <uDNS_ReceiveNATPacket+0x8c>
        natTraversalHandleAddressReply(m, AddrReply->err, AddrReply->ExtAddr);
    e8835f6c:	4410                	lw	a2,8(s0)
    e8835f6e:	8526                	mv	a0,s1
    e8835f70:	ab9fc0ef          	jal	ra,e8832a28 <natTraversalHandleAddressReply>
    if (m->SSDPSocket) { debugf("uDNS_ReceiveNATPMPPacket destroying SSDPSocket %p", &m->SSDPSocket); mDNSPlatformUDPClose(m->SSDPSocket); m->SSDPSocket = mDNSNULL; }
    e8835f74:	6791                	lui	a5,0x4
    e8835f76:	94be                	add	s1,s1,a5
    e8835f78:	d204b503          	ld	a0,-736(s1)
    e8835f7c:	c60504e3          	beqz	a0,e8835be4 <uDNS_ReceiveNATPacket+0x2c>
    e8835f80:	995f90ef          	jal	ra,e882f914 <mDNSPlatformUDPClose>
    e8835f84:	d204b023          	sd	zero,-736(s1)
    e8835f88:	b9b1                	j	e8835be4 <uDNS_ReceiveNATPacket+0x2c>
    else if (AddrReply->opcode == NATOp_MapUDPResponse || AddrReply->opcode == NATOp_MapTCPResponse)
    e8835f8a:	07f6079b          	addiw	a5,a2,127
    e8835f8e:	0ff7f793          	andi	a5,a5,255
    e8835f92:	4705                	li	a4,1
    e8835f94:	06f76a63          	bltu	a4,a5,e8836008 <uDNS_ReceiveNATPacket+0x450>
        mDNSu8 Protocol = AddrReply->opcode & 0x7F;
    e8835f98:	08100713          	li	a4,129
    e8835f9c:	4789                	li	a5,2
    e8835f9e:	00e61363          	bne	a2,a4,e8835fa4 <uDNS_ReceiveNATPacket+0x3ec>
    e8835fa2:	4785                	li	a5,1
        if (!PortMapReply->err)
    e8835fa4:	00245703          	lhu	a4,2(s0)
        mDNSu8 Protocol = AddrReply->opcode & 0x7F;
    e8835fa8:	0ff7f993          	andi	s3,a5,255
        if (!PortMapReply->err)
    e8835fac:	ef11                	bnez	a4,e8835fc8 <uDNS_ReceiveNATPacket+0x410>
            if (len < sizeof(NATPortMapReply)) { LogMsg("NAT-PMP PortMapReply message too short (%d bytes)", len); return; }
    e8835fae:	47bd                	li	a5,15
    e8835fb0:	0127e863          	bltu	a5,s2,e8835fc0 <uDNS_ReceiveNATPacket+0x408>
    e8835fb4:	864a                	mv	a2,s2
    e8835fb6:	0007a597          	auipc	a1,0x7a
    e8835fba:	02258593          	addi	a1,a1,34 # e88affd8 <__func__.9833+0x2040>
    e8835fbe:	b159                	j	e8835c44 <uDNS_ReceiveNATPacket+0x8c>
            PortMapReply->NATRep_lease = (mDNSu32) ((mDNSu32)pkt[12] << 24 | (mDNSu32)pkt[13] << 16 | (mDNSu32)pkt[14] << 8 | pkt[15]);
    e8835fc0:	445c                	lw	a5,12(s0)
    e8835fc2:	9007978b          	revw	a5,a5
    e8835fc6:	c45c                	sw	a5,12(s0)
        m->LastNATMapResultCode = PortMapReply->err;
    e8835fc8:	6791                	lui	a5,0x4
    e8835fca:	97a6                	add	a5,a5,s1
        for (ptr = m->NATTraversals; ptr; ptr=ptr->next)
    e8835fcc:	bf07b903          	ld	s2,-1040(a5) # 3bf0 <memcmp-0xe87fc410>
        m->LastNATMapResultCode = PortMapReply->err;
    e8835fd0:	c2e79423          	sh	a4,-984(a5)
        for (ptr = m->NATTraversals; ptr; ptr=ptr->next)
    e8835fd4:	fa0900e3          	beqz	s2,e8835f74 <uDNS_ReceiveNATPacket+0x3bc>
            if (ptr->Protocol == Protocol && mDNSSameIPPort(ptr->IntPort, PortMapReply->intport))
    e8835fd8:	03c94783          	lbu	a5,60(s2)
    e8835fdc:	03379363          	bne	a5,s3,e8836002 <uDNS_ReceiveNATPacket+0x44a>
    e8835fe0:	03e95703          	lhu	a4,62(s2)
    e8835fe4:	00845783          	lhu	a5,8(s0)
    e8835fe8:	00f71d63          	bne	a4,a5,e8836002 <uDNS_ReceiveNATPacket+0x44a>
                natTraversalHandlePortMapReply(m, ptr, InterfaceID, PortMapReply->err, PortMapReply->extport, PortMapReply->NATRep_lease, NATTProtocolNATPMP);
    e8835fec:	445c                	lw	a5,12(s0)
    e8835fee:	00a45703          	lhu	a4,10(s0)
    e8835ff2:	00245683          	lhu	a3,2(s0)
    e8835ff6:	4805                	li	a6,1
    e8835ff8:	865e                	mv	a2,s7
    e8835ffa:	85ca                	mv	a1,s2
    e8835ffc:	8526                	mv	a0,s1
    e8835ffe:	b67fc0ef          	jal	ra,e8832b64 <natTraversalHandlePortMapReply>
        for (ptr = m->NATTraversals; ptr; ptr=ptr->next)
    e8836002:	00093903          	ld	s2,0(s2)
    e8836006:	b7f9                	j	e8835fd4 <uDNS_ReceiveNATPacket+0x41c>
    else { LogMsg("Received NAT-PMP response with unknown opcode 0x%X", AddrReply->opcode); return; }
    e8836008:	0007a597          	auipc	a1,0x7a
    e883600c:	00858593          	addi	a1,a1,8 # e88b0010 <__func__.9833+0x2078>
    e8836010:	b915                	j	e8835c44 <uDNS_ReceiveNATPacket+0x8c>
        LogMsg("uDNS_ReceiveNATPacket: packet with version %u (expected %u or %u)", pkt[0], PCP_VERS, NATMAP_VERS);
    e8836012:	4701                	li	a4,0
    e8836014:	4689                	li	a3,2
    e8836016:	0007a597          	auipc	a1,0x7a
    e883601a:	03258593          	addi	a1,a1,50 # e88b0048 <__func__.9833+0x20b0>
    e883601e:	bd5d                	j	e8835ed4 <uDNS_ReceiveNATPacket+0x31c>
        if ((protocol == ptrProtocol && mDNSSameIPPort(ptr->IntPort, intport)) ||
    e8836020:	df3b1be3          	bne	s6,s3,e8835e16 <uDNS_ReceiveNATPacket+0x25e>
    e8836024:	bb7d                	j	e8835de2 <uDNS_ReceiveNATPacket+0x22a>

00000000e8836026 <uDNS_ReceiveMsg>:
{
    e8836026:	7131                	addi	sp,sp,-192
    e8836028:	f922                	sd	s0,176(sp)
    e883602a:	ed4e                	sd	s3,152(sp)
    e883602c:	e952                	sd	s4,144(sp)
    e883602e:	fd06                	sd	ra,184(sp)
    e8836030:	f526                	sd	s1,168(sp)
    e8836032:	f14a                	sd	s2,160(sp)
    e8836034:	e556                	sd	s5,136(sp)
    e8836036:	e15a                	sd	s6,128(sp)
    e8836038:	fcde                	sd	s7,120(sp)
    e883603a:	f8e2                	sd	s8,112(sp)
    e883603c:	f4e6                	sd	s9,104(sp)
    e883603e:	f0ea                	sd	s10,96(sp)
    e8836040:	ecee                	sd	s11,88(sp)
    mDNSu8 QR_OP   = (mDNSu8)(msg->h.flags.b[0] & kDNSFlag0_QROP_Mask);
    e8836042:	0025c783          	lbu	a5,2(a1)
{
    e8836046:	ec32                	sd	a2,24(sp)
    e8836048:	8a3a                	mv	s4,a4
    mDNSu8 QR_OP   = (mDNSu8)(msg->h.flags.b[0] & kDNSFlag0_QROP_Mask);
    e883604a:	0f87f793          	andi	a5,a5,248
    if (QR_OP == StdR)
    e883604e:	08000713          	li	a4,128
{
    e8836052:	842a                	mv	s0,a0
    e8836054:	89ae                	mv	s3,a1
    if (QR_OP == StdR)
    e8836056:	0ae79063          	bne	a5,a4,e88360f6 <uDNS_ReceiveMsg+0xd0>
        for (qptr = m->Questions; qptr; qptr = qptr->next)
    e883605a:	2b853483          	ld	s1,696(a0)
    e883605e:	8936                	mv	s2,a3
            if (msg->h.flags.b[0] & kDNSFlag0_TC && mDNSSameOpaque16(qptr->TargetQID, msg->h.id) && m->timenow - qptr->LastQTime < RESPONSE_WINDOW)
    e8836060:	0009fa97          	auipc	s5,0x9f
    e8836064:	a20a8a93          	addi	s5,s5,-1504 # e88d4a80 <mDNSPlatformOneSecond>
    e8836068:	03c00b13          	li	s6,60
                if (!srcaddr) LogMsg("uDNS_ReceiveMsg: TCP DNS response had TC bit set: ignoring");
    e883606c:	00079b97          	auipc	s7,0x79
    e8836070:	774b8b93          	addi	s7,s7,1908 # e88af7e0 <__func__.9833+0x1848>
        for (qptr = m->Questions; qptr; qptr = qptr->next)
    e8836074:	e085                	bnez	s1,e8836094 <uDNS_ReceiveMsg+0x6e>
}
    e8836076:	70ea                	ld	ra,184(sp)
    e8836078:	744a                	ld	s0,176(sp)
    e883607a:	74aa                	ld	s1,168(sp)
    e883607c:	790a                	ld	s2,160(sp)
    e883607e:	69ea                	ld	s3,152(sp)
    e8836080:	6a4a                	ld	s4,144(sp)
    e8836082:	6aaa                	ld	s5,136(sp)
    e8836084:	6b0a                	ld	s6,128(sp)
    e8836086:	7be6                	ld	s7,120(sp)
    e8836088:	7c46                	ld	s8,112(sp)
    e883608a:	7ca6                	ld	s9,104(sp)
    e883608c:	7d06                	ld	s10,96(sp)
    e883608e:	6de6                	ld	s11,88(sp)
    e8836090:	6129                	addi	sp,sp,192
    e8836092:	8082                	ret
            if (msg->h.flags.b[0] & kDNSFlag0_TC && mDNSSameOpaque16(qptr->TargetQID, msg->h.id) && m->timenow - qptr->LastQTime < RESPONSE_WINDOW)
    e8836094:	0029c783          	lbu	a5,2(s3)
    e8836098:	8b89                	andi	a5,a5,2
    e883609a:	c79d                	beqz	a5,e88360c8 <uDNS_ReceiveMsg+0xa2>
    e883609c:	2124d703          	lhu	a4,530(s1)
    e88360a0:	0009d783          	lhu	a5,0(s3)
    e88360a4:	02f71263          	bne	a4,a5,e88360c8 <uDNS_ReceiveMsg+0xa2>
    e88360a8:	000aa783          	lw	a5,0(s5)
    e88360ac:	24042703          	lw	a4,576(s0)
    e88360b0:	4894                	lw	a3,16(s1)
    e88360b2:	02fb07bb          	mulw	a5,s6,a5
    e88360b6:	9f15                	subw	a4,a4,a3
    e88360b8:	00f75863          	bge	a4,a5,e88360c8 <uDNS_ReceiveMsg+0xa2>
                if (!srcaddr) LogMsg("uDNS_ReceiveMsg: TCP DNS response had TC bit set: ignoring");
    e88360bc:	00091863          	bnez	s2,e88360cc <uDNS_ReceiveMsg+0xa6>
    e88360c0:	85de                	mv	a1,s7
    e88360c2:	4501                	li	a0,0
    e88360c4:	be8f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        for (qptr = m->Questions; qptr; qptr = qptr->next)
    e88360c8:	6084                	ld	s1,0(s1)
    e88360ca:	b76d                	j	e8836074 <uDNS_ReceiveMsg+0x4e>
                    if (qptr->tcp) { DisposeTCPConn(qptr->tcp); qptr->tcp = mDNSNULL; }
    e88360cc:	1a84b503          	ld	a0,424(s1)
    e88360d0:	c509                	beqz	a0,e88360da <uDNS_ReceiveMsg+0xb4>
    e88360d2:	e10fd0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e88360d6:	1a04b423          	sd	zero,424(s1)
                    qptr->tcp = MakeTCPConn(m, mDNSNULL, mDNSNULL, kTCPSocketFlags_Zero, srcaddr, srcport, mDNSNULL, qptr, mDNSNULL);
    e88360da:	e002                	sd	zero,0(sp)
    e88360dc:	88a6                	mv	a7,s1
    e88360de:	4801                	li	a6,0
    e88360e0:	87d2                	mv	a5,s4
    e88360e2:	874a                	mv	a4,s2
    e88360e4:	4681                	li	a3,0
    e88360e6:	4601                	li	a2,0
    e88360e8:	4581                	li	a1,0
    e88360ea:	8522                	mv	a0,s0
    e88360ec:	be7fd0ef          	jal	ra,e8833cd2 <MakeTCPConn>
    e88360f0:	1aa4b423          	sd	a0,424(s1)
    e88360f4:	bfd1                	j	e88360c8 <uDNS_ReceiveMsg+0xa2>
    if (QR_OP == UpdateR)
    e88360f6:	0a800713          	li	a4,168
    e88360fa:	f6e79ee3          	bne	a5,a4,e8836076 <uDNS_ReceiveMsg+0x50>
        mDNSBool gotlease = GetPktLease(m, msg, end, &pktlease);
    e88360fe:	00f4                	addi	a3,sp,76
    mDNSu8 rcode   = (mDNSu8)(msg->h.flags.b[1] & kDNSFlag1_RC_Mask);
    e8836100:	0035c903          	lbu	s2,3(a1)
        mDNSu32 pktlease = 0;
    e8836104:	c682                	sw	zero,76(sp)
        mDNSBool gotlease = GetPktLease(m, msg, end, &pktlease);
    e8836106:	f89e00ef          	jal	ra,e881708e <GetPktLease>
        mDNSu32 lease = gotlease ? pktlease : 60 * 60; // If lease option missing, assume one hour
    e883610a:	1e050f63          	beqz	a0,e8836308 <uDNS_ReceiveMsg+0x2e2>
    e883610e:	4bb6                	lw	s7,76(sp)
        mDNSs32 expire = m->timenow + (mDNSs32)lease * mDNSPlatformOneSecond;
    e8836110:	0009fa97          	auipc	s5,0x9f
    e8836114:	970a8a93          	addi	s5,s5,-1680 # e88d4a80 <mDNSPlatformOneSecond>
    e8836118:	000aa783          	lw	a5,0(s5)
        mDNSu32 random = mDNSRandom((mDNSs32)lease * mDNSPlatformOneSecond/10);
    e883611c:	4529                	li	a0,10
        mDNSs32 expire = m->timenow + (mDNSs32)lease * mDNSPlatformOneSecond;
    e883611e:	24042703          	lw	a4,576(s0)
    e8836122:	037787bb          	mulw	a5,a5,s7
        mDNSu32 random = mDNSRandom((mDNSs32)lease * mDNSPlatformOneSecond/10);
    e8836126:	02a7c53b          	divw	a0,a5,a0
        mDNSs32 expire = m->timenow + (mDNSs32)lease * mDNSPlatformOneSecond;
    e883612a:	9f3d                	addw	a4,a4,a5
    e883612c:	e83a                	sd	a4,16(sp)
        mDNSu32 random = mDNSRandom((mDNSs32)lease * mDNSPlatformOneSecond/10);
    e883612e:	ddbdc0ef          	jal	ra,e8812f08 <mDNSRandom>
    e8836132:	0005079b          	sext.w	a5,a0
    e8836136:	f43e                	sd	a5,40(sp)
        if (m->CurrentRecord)
    e8836138:	678d                	lui	a5,0x3
    e883613a:	97a2                	add	a5,a5,s0
    e883613c:	1d07b503          	ld	a0,464(a5) # 31d0 <memcmp-0xe87fce30>
    e8836140:	c105                	beqz	a0,e8836160 <uDNS_ReceiveMsg+0x13a>
            LogMsg("uDNS_ReceiveMsg ERROR m->CurrentRecord already set %s", ARDisplayString(m, m->CurrentRecord));
    e8836142:	790c                	ld	a1,48(a0)
    e8836144:	03b40613          	addi	a2,s0,59
    e8836148:	0521                	addi	a0,a0,8
    e883614a:	0591                	addi	a1,a1,4
    e883614c:	8c9e00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836150:	862a                	mv	a2,a0
    e8836152:	00079597          	auipc	a1,0x79
    e8836156:	6ce58593          	addi	a1,a1,1742 # e88af820 <__func__.9833+0x1888>
    e883615a:	4501                	li	a0,0
    e883615c:	b50f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        m->CurrentRecord = m->ResourceRecords;
    e8836160:	648d                	lui	s1,0x3
    e8836162:	94a2                	add	s1,s1,s0
    e8836164:	1b84b783          	ld	a5,440(s1) # 31b8 <memcmp-0xe87fce48>
            dt = GetRRDomainNameTarget(&rr->resrec);
    e8836168:	00200b37          	lui	s6,0x200
    if (rr->resrec.RecordType == kDNSRecordTypeDeregistering && rr->state == regState_DeregPending)
    e883616c:	4a05                	li	s4,1
            dt = GetRRDomainNameTarget(&rr->resrec);
    e883616e:	049b0b13          	addi	s6,s6,73 # 200049 <memcmp-0xe85fffb7>
        m->CurrentRecord = m->ResourceRecords;
    e8836172:	1cf4b823          	sd	a5,464(s1)
            dt = GetRRDomainNameTarget(&rr->resrec);
    e8836176:	025a1c93          	slli	s9,s4,0x25
    e883617a:	00fb1793          	slli	a5,s6,0xf
    mDNSu8 rcode   = (mDNSu8)(msg->h.flags.b[1] & kDNSFlag1_RC_Mask);
    e883617e:	00f97913          	andi	s2,s2,15
            dt = GetRRDomainNameTarget(&rr->resrec);
    e8836182:	f03e                	sd	a5,32(sp)
    e8836184:	409c8c93          	addi	s9,s9,1033
        while (m->CurrentRecord)
    e8836188:	1d04bd83          	ld	s11,464(s1)
    e883618c:	ee0d85e3          	beqz	s11,e8836076 <uDNS_ReceiveMsg+0x50>
            m->CurrentRecord = m->CurrentRecord->next;
    e8836190:	000db783          	ld	a5,0(s11)
    e8836194:	1cf4b823          	sd	a5,464(s1)
            if (AuthRecord_uDNS(rptr) && mDNSSameOpaque16(rptr->updateid, msg->h.id))
    e8836198:	0006d797          	auipc	a5,0x6d
    e883619c:	bc878793          	addi	a5,a5,-1080 # e88a2d60 <mDNSInterface_Any>
    e88361a0:	020db703          	ld	a4,32(s11)
    e88361a4:	639c                	ld	a5,0(a5)
    e88361a6:	fef711e3          	bne	a4,a5,e8836188 <uDNS_ReceiveMsg+0x162>
    e88361aa:	07adc783          	lbu	a5,122(s11)
    e88361ae:	ffe9                	bnez	a5,e8836188 <uDNS_ReceiveMsg+0x162>
    e88361b0:	028db503          	ld	a0,40(s11)
    e88361b4:	eefdc0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e88361b8:	f961                	bnez	a0,e8836188 <uDNS_ReceiveMsg+0x162>
    e88361ba:	156dd703          	lhu	a4,342(s11)
    e88361be:	0009d783          	lhu	a5,0(s3)
    e88361c2:	fcf713e3          	bne	a4,a5,e8836188 <uDNS_ReceiveMsg+0x162>
    if (!rcode) return mStatus_NoError;
    e88361c6:	14091563          	bnez	s2,e8836310 <uDNS_ReceiveMsg+0x2ea>
                if (!err && rptr->uselease && lease)
    e88361ca:	14ddc783          	lbu	a5,333(s11)
    e88361ce:	4b01                	li	s6,0
    e88361d0:	1e079363          	bnez	a5,e88363b6 <uDNS_ReceiveMsg+0x390>
    mDNS_CheckLock(m);
    e88361d4:	5858                	lw	a4,52(s0)
    e88361d6:	5814                	lw	a3,48(s0)
    mDNSIPPort UpdatePort = zeroIPPort;
    e88361d8:	0006dd17          	auipc	s10,0x6d
    e88361dc:	3d0d5d03          	lhu	s10,976(s10) # e88a35a8 <zeroIPPort>
    mDNS_CheckLock(m);
    e88361e0:	0017079b          	addiw	a5,a4,1
    e88361e4:	00d78d63          	beq	a5,a3,e88361fe <uDNS_ReceiveMsg+0x1d8>
    e88361e8:	00078617          	auipc	a2,0x78
    e88361ec:	d1860613          	addi	a2,a2,-744 # e88adf00 <__func__.9532>
    e88361f0:	00071597          	auipc	a1,0x71
    e88361f4:	fa058593          	addi	a1,a1,-96 # e88a7190 <end.8789+0x3ae8>
    e88361f8:	4501                	li	a0,0
    e88361fa:	ab2f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    LogInfo("hndlRecordUpdateReply: err %d ID %d state %d %s(%p)", err, mDNSVal16(rr->updateid), rr->state, ARDisplayString(m, rr), rr);
    e88361fe:	0009fc17          	auipc	s8,0x9f
    e8836202:	876c0c13          	addi	s8,s8,-1930 # e88d4a74 <mDNS_LoggingEnabled>
    e8836206:	000c2783          	lw	a5,0(s8)
    e883620a:	c3a9                	beqz	a5,e883624c <uDNS_ReceiveMsg+0x226>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e883620c:	156dc683          	lbu	a3,342(s11)
    e8836210:	157dc783          	lbu	a5,343(s11)
    e8836214:	030db583          	ld	a1,48(s11)
    e8836218:	14cdc703          	lbu	a4,332(s11)
    e883621c:	0086969b          	slliw	a3,a3,0x8
    e8836220:	8edd                	or	a3,a3,a5
    e8836222:	03b40613          	addi	a2,s0,59
    e8836226:	0591                	addi	a1,a1,4
    e8836228:	008d8513          	addi	a0,s11,8
    e883622c:	fc36                	sd	a3,56(sp)
    e883622e:	f83a                	sd	a4,48(sp)
    e8836230:	fe4e00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836234:	87aa                	mv	a5,a0
    e8836236:	fed1470b          	ldd	a4,a3,(sp),3,4
    e883623a:	886e                	mv	a6,s11
    e883623c:	865a                	mv	a2,s6
    e883623e:	00079597          	auipc	a1,0x79
    e8836242:	6c258593          	addi	a1,a1,1730 # e88af900 <__func__.9833+0x1968>
    e8836246:	450d                	li	a0,3
    e8836248:	a64f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    SetRecordRetry(m, rr, random);
    e883624c:	7622                	ld	a2,40(sp)
    rr->updateError = err;
    e883624e:	1d6daa23          	sw	s6,468(s11)
    SetRecordRetry(m, rr, random);
    e8836252:	85ee                	mv	a1,s11
    e8836254:	8522                	mv	a0,s0
    e8836256:	de1fa0ef          	jal	ra,e8831036 <SetRecordRetry>
    rr->updateid = zeroID;  // Make sure that this is not considered as part of a group anymore
    e883625a:	0006d797          	auipc	a5,0x6d
    e883625e:	34678793          	addi	a5,a5,838 # e88a35a0 <zeroID>
    e8836262:	0007d783          	lhu	a5,0(a5)
    e8836266:	14fd9b23          	sh	a5,342(s11)
    if (rr->nta)
    e883626a:	168db783          	ld	a5,360(s11)
    e883626e:	cfb1                	beqz	a5,e88362ca <uDNS_ReceiveMsg+0x2a4>
        if (rr->nta->question.ThisQInterval != -1)
    e8836270:	3547a703          	lw	a4,852(a5)
    e8836274:	57fd                	li	a5,-1
    e8836276:	04f70163          	beq	a4,a5,e88362b8 <uDNS_ReceiveMsg+0x292>
            LogMsg("hndlRecordUpdateReply: ResourceRecord %s, zone info question %##s (%s) interval %d not -1",
    e883627a:	030db583          	ld	a1,48(s11)
    e883627e:	03b40613          	addi	a2,s0,59
    e8836282:	008d8513          	addi	a0,s11,8
    e8836286:	0591                	addi	a1,a1,4
    e8836288:	f8ce00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883628c:	168dbd03          	ld	s10,360(s11)
    e8836290:	f82a                	sd	a0,48(sp)
    e8836292:	654d5503          	lhu	a0,1620(s10)
    e8836296:	9cbdf0ef          	jal	ra,e8815c60 <DNSTypeName>
    e883629a:	872a                	mv	a4,a0
    e883629c:	168db783          	ld	a5,360(s11)
    e88362a0:	7642                	ld	a2,48(sp)
    e88362a2:	554d0693          	addi	a3,s10,1364
    e88362a6:	3547a783          	lw	a5,852(a5)
    e88362aa:	00079597          	auipc	a1,0x79
    e88362ae:	68e58593          	addi	a1,a1,1678 # e88af938 <__func__.9833+0x19a0>
    e88362b2:	4501                	li	a0,0
    e88362b4:	9f8f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        UpdatePort = rr->nta->Port;
    e88362b8:	168db583          	ld	a1,360(s11)
        CancelGetZoneData(m, rr->nta);
    e88362bc:	8522                	mv	a0,s0
        UpdatePort = rr->nta->Port;
    e88362be:	3125dd03          	lhu	s10,786(a1)
        CancelGetZoneData(m, rr->nta);
    e88362c2:	d72eb0ef          	jal	ra,e8821834 <CancelGetZoneData>
        rr->nta = mDNSNULL;
    e88362c6:	160db423          	sd	zero,360(s11)
    if (rr->resrec.RecordType == kDNSRecordTypeDeregistering && rr->state == regState_DeregPending)
    e88362ca:	008dc783          	lbu	a5,8(s11)
    e88362ce:	11479c63          	bne	a5,s4,e88363e6 <uDNS_ReceiveMsg+0x3c0>
    e88362d2:	14cdc703          	lbu	a4,332(s11)
    e88362d6:	478d                	li	a5,3
    e88362d8:	10f71763          	bne	a4,a5,e88363e6 <uDNS_ReceiveMsg+0x3c0>
        if (err) LogMsg("ERROR: Deregistration of record %##s type %d failed with error %d",
    e88362dc:	000b0e63          	beqz	s6,e88362f8 <uDNS_ReceiveMsg+0x2d2>
    e88362e0:	00add683          	lhu	a3,10(s11)
    e88362e4:	028db603          	ld	a2,40(s11)
    e88362e8:	875a                	mv	a4,s6
    e88362ea:	00079597          	auipc	a1,0x79
    e88362ee:	6ae58593          	addi	a1,a1,1710 # e88af998 <__func__.9833+0x1a00>
    e88362f2:	4501                	li	a0,0
    e88362f4:	9b8f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->state = regState_Unregistered;
    e88362f8:	4791                	li	a5,4
    e88362fa:	14fd8623          	sb	a5,332(s11)
        CompleteDeregistration(m, rr);
    e88362fe:	85ee                	mv	a1,s11
    e8836300:	8522                	mv	a0,s0
    e8836302:	fc5ef0ef          	jal	ra,e88262c6 <CompleteDeregistration>
        return;
    e8836306:	b549                	j	e8836188 <uDNS_ReceiveMsg+0x162>
        mDNSu32 lease = gotlease ? pktlease : 60 * 60; // If lease option missing, assume one hour
    e8836308:	6b85                	lui	s7,0x1
    e883630a:	e10b8b93          	addi	s7,s7,-496 # e10 <memcmp-0xe87ff1f0>
    e883630e:	b509                	j	e8836110 <uDNS_ReceiveMsg+0xea>
    else if (rcode == kDNSFlag1_RC_YXDomain)
    e8836310:	4799                	li	a5,6
    e8836312:	0cf90663          	beq	s2,a5,e88363de <uDNS_ReceiveMsg+0x3b8>
    else if (rcode == kDNSFlag1_RC_Refused)
    e8836316:	4795                	li	a5,5
                err = checkUpdateResult(m, rptr->resrec.name, rcode, msg, end);
    e8836318:	028dbc03          	ld	s8,40(s11)
    else if (rcode == kDNSFlag1_RC_Refused)
    e883631c:	00f91d63          	bne	s2,a5,e8836336 <uDNS_ReceiveMsg+0x310>
        LogMsg("Update %##s refused", displayname->c);
    e8836320:	8662                	mv	a2,s8
    e8836322:	00079597          	auipc	a1,0x79
    e8836326:	53658593          	addi	a1,a1,1334 # e88af858 <__func__.9833+0x18c0>
    e883632a:	982f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mStatus_Refused;
    e883632e:	7341                	lui	t1,0xffff0
    e8836330:	fef30b13          	addi	s6,t1,-17 # fffffffffffeffef <__DRAM0_INF_BASE+0xfffffffeffffffef>
    e8836334:	b545                	j	e88361d4 <uDNS_ReceiveMsg+0x1ae>
    else if (rcode == kDNSFlag1_RC_NXRRSet)
    e8836336:	47a1                	li	a5,8
    e8836338:	00f91d63          	bne	s2,a5,e8836352 <uDNS_ReceiveMsg+0x32c>
        LogMsg("Reregister refused (NXRRSET): %##s", displayname->c);
    e883633c:	8662                	mv	a2,s8
    e883633e:	00079597          	auipc	a1,0x79
    e8836342:	53258593          	addi	a1,a1,1330 # e88af870 <__func__.9833+0x18d8>
    e8836346:	966f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mStatus_NoSuchRecord;
    e883634a:	7341                	lui	t1,0xffff0
    e883634c:	fee30b13          	addi	s6,t1,-18 # fffffffffffeffee <__DRAM0_INF_BASE+0xfffffffeffffffee>
    e8836350:	b551                	j	e88361d4 <uDNS_ReceiveMsg+0x1ae>
    else if (rcode == kDNSFlag1_RC_NotAuth)
    e8836352:	47a5                	li	a5,9
    e8836354:	02f91663          	bne	s2,a5,e8836380 <uDNS_ReceiveMsg+0x35a>
        mStatus tsigerr = ParseTSIGError(m, msg, end, displayname);
    e8836358:	6662                	ld	a2,24(sp)
    e883635a:	86e2                	mv	a3,s8
    e883635c:	85ce                	mv	a1,s3
    e883635e:	8522                	mv	a0,s0
    e8836360:	932fb0ef          	jal	ra,e8831492 <ParseTSIGError>
    e8836364:	8b2a                	mv	s6,a0
        if (!tsigerr)
    e8836366:	e60517e3          	bnez	a0,e88361d4 <uDNS_ReceiveMsg+0x1ae>
            LogMsg("Permission denied (NOAUTH): %##s", displayname->c);
    e883636a:	8662                	mv	a2,s8
    e883636c:	00079597          	auipc	a1,0x79
    e8836370:	52c58593          	addi	a1,a1,1324 # e88af898 <__func__.9833+0x1900>
            LogMsg("Format Error: %##s", displayname->c);
    e8836374:	938f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        return mStatus_UnknownErr;
    e8836378:	7341                	lui	t1,0xffff0
    e883637a:	fff30b13          	addi	s6,t1,-1 # fffffffffffeffff <__DRAM0_INF_BASE+0xfffffffeffffffff>
    e883637e:	bd99                	j	e88361d4 <uDNS_ReceiveMsg+0x1ae>
    else if (rcode == kDNSFlag1_RC_FormErr)
    e8836380:	03491163          	bne	s2,s4,e88363a2 <uDNS_ReceiveMsg+0x37c>
        mStatus tsigerr = ParseTSIGError(m, msg, end, displayname);
    e8836384:	6662                	ld	a2,24(sp)
    e8836386:	86e2                	mv	a3,s8
    e8836388:	85ce                	mv	a1,s3
    e883638a:	8522                	mv	a0,s0
    e883638c:	906fb0ef          	jal	ra,e8831492 <ParseTSIGError>
    e8836390:	8b2a                	mv	s6,a0
        if (!tsigerr)
    e8836392:	e40511e3          	bnez	a0,e88361d4 <uDNS_ReceiveMsg+0x1ae>
            LogMsg("Format Error: %##s", displayname->c);
    e8836396:	8662                	mv	a2,s8
    e8836398:	00079597          	auipc	a1,0x79
    e883639c:	52858593          	addi	a1,a1,1320 # e88af8c0 <__func__.9833+0x1928>
    e88363a0:	bfd1                	j	e8836374 <uDNS_ReceiveMsg+0x34e>
        LogMsg("Update %##s failed with rcode %d", displayname->c, rcode);
    e88363a2:	86ca                	mv	a3,s2
    e88363a4:	8662                	mv	a2,s8
    e88363a6:	00079597          	auipc	a1,0x79
    e88363aa:	53258593          	addi	a1,a1,1330 # e88af8d8 <__func__.9833+0x1940>
    e88363ae:	4501                	li	a0,0
    e88363b0:	8fcf90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88363b4:	b7d1                	j	e8836378 <uDNS_ReceiveMsg+0x352>
                if (!err && rptr->uselease && lease)
    e88363b6:	e00b8fe3          	beqz	s7,e88361d4 <uDNS_ReceiveMsg+0x1ae>
                    if (rptr->expire - expire >= 0 || rptr->state != regState_UpdatePending)
    e88363ba:	150da783          	lw	a5,336(s11)
    e88363be:	6742                	ld	a4,16(sp)
    e88363c0:	9f99                	subw	a5,a5,a4
    e88363c2:	0007d763          	bgez	a5,e88363d0 <uDNS_ReceiveMsg+0x3aa>
    e88363c6:	14cdc703          	lbu	a4,332(s11)
    e88363ca:	479d                	li	a5,7
    e88363cc:	e0f704e3          	beq	a4,a5,e88361d4 <uDNS_ReceiveMsg+0x1ae>
                        rptr->expire = expire;
    e88363d0:	67c2                	ld	a5,16(sp)
                        rptr->refreshCount = 0;
    e88363d2:	1c0d8923          	sb	zero,466(s11)
    e88363d6:	4b01                	li	s6,0
                        rptr->expire = expire;
    e88363d8:	14fda823          	sw	a5,336(s11)
                        rptr->refreshCount = 0;
    e88363dc:	bbe5                	j	e88361d4 <uDNS_ReceiveMsg+0x1ae>
        return mStatus_NameConflict;
    e88363de:	7341                	lui	t1,0xffff0
    e88363e0:	ff430b13          	addi	s6,t1,-12 # fffffffffffefff4 <__DRAM0_INF_BASE+0xfffffffefffffff4>
    e88363e4:	bbc5                	j	e88361d4 <uDNS_ReceiveMsg+0x1ae>
    if (m->SleepState)
    e88363e6:	28544783          	lbu	a5,645(s0)
    e88363ea:	cf91                	beqz	a5,e8836406 <uDNS_ReceiveMsg+0x3e0>
        if (rr->resrec.rrtype == kDNSType_SRV && rr->state == regState_DeregPending)
    e88363ec:	00add703          	lhu	a4,10(s11)
    e88363f0:	02100793          	li	a5,33
    e88363f4:	d8f71ae3          	bne	a4,a5,e8836188 <uDNS_ReceiveMsg+0x162>
    e88363f8:	14cdc703          	lbu	a4,332(s11)
    e88363fc:	478d                	li	a5,3
    e88363fe:	d8f715e3          	bne	a4,a5,e8836188 <uDNS_ReceiveMsg+0x162>
            rr->state = regState_NoTarget;  // Wait for the next target change
    e8836402:	47a1                	li	a5,8
    e8836404:	aa25                	j	e883653c <uDNS_ReceiveMsg+0x516>
    if (rr->state == regState_UpdatePending)
    e8836406:	14cdc703          	lbu	a4,332(s11)
    e883640a:	479d                	li	a5,7
    e883640c:	04f71763          	bne	a4,a5,e883645a <uDNS_ReceiveMsg+0x434>
        if (err) LogMsg("Update record failed for %##s (err %d)", rr->resrec.name->c, err);
    e8836410:	000b0c63          	beqz	s6,e8836428 <uDNS_ReceiveMsg+0x402>
    e8836414:	028db603          	ld	a2,40(s11)
    e8836418:	86da                	mv	a3,s6
    e883641a:	00079597          	auipc	a1,0x79
    e883641e:	5c658593          	addi	a1,a1,1478 # e88af9e0 <__func__.9833+0x1a48>
    e8836422:	4501                	li	a0,0
    e8836424:	888f90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->state = regState_Registered;
    e8836428:	4789                	li	a5,2
    e883642a:	14fd8623          	sb	a5,332(s11)
        if (rr->UpdateCallback) rr->UpdateCallback(m, rr, rr->OrigRData, rr->OrigRDLen);
    e883642e:	138db783          	ld	a5,312(s11)
    e8836432:	cb81                	beqz	a5,e8836442 <uDNS_ReceiveMsg+0x41c>
    e8836434:	1e0dd683          	lhu	a3,480(s11)
    e8836438:	1e8db603          	ld	a2,488(s11)
    e883643c:	85ee                	mv	a1,s11
    e883643e:	8522                	mv	a0,s0
    e8836440:	9782                	jalr	a5
        SetNewRData(&rr->resrec, rr->InFlightRData, rr->InFlightRDLen);
    e8836442:	1e2dd603          	lhu	a2,482(s11)
    e8836446:	1f0db583          	ld	a1,496(s11)
    e883644a:	008d8513          	addi	a0,s11,8
    e883644e:	e0ade0ef          	jal	ra,e8814a58 <SetNewRData>
        rr->OrigRData = mDNSNULL;
    e8836452:	1e0db423          	sd	zero,488(s11)
        rr->InFlightRData = mDNSNULL;
    e8836456:	1e0db823          	sd	zero,496(s11)
    if (rr->SRVChanged)
    e883645a:	1d0dc783          	lbu	a5,464(s11)
    e883645e:	20078863          	beqz	a5,e883666e <uDNS_ReceiveMsg+0x648>
        if (rr->resrec.rrtype == kDNSType_SRV)
    e8836462:	00add503          	lhu	a0,10(s11)
    e8836466:	02100793          	li	a5,33
    e883646a:	1af51463          	bne	a0,a5,e8836612 <uDNS_ReceiveMsg+0x5ec>
    const domainname *target = GetServiceTarget(m, rr);
    e883646e:	85ee                	mv	a1,s11
    e8836470:	8522                	mv	a0,s0
    e8836472:	880fe0ef          	jal	ra,e88344f2 <GetServiceTarget>
    e8836476:	862a                	mv	a2,a0
    if (!target || target->c[0] == 0)
    e8836478:	14cdc683          	lbu	a3,332(s11)
    e883647c:	c501                	beqz	a0,e8836484 <uDNS_ReceiveMsg+0x45e>
    e883647e:	00054783          	lbu	a5,0(a0)
    e8836482:	efe9                	bnez	a5,e883655c <uDNS_ReceiveMsg+0x536>
        if (rr->state == regState_DeregPending)
    e8836484:	470d                	li	a4,3
    e8836486:	000c2783          	lw	a5,0(s8)
    e883648a:	08e69263          	bne	a3,a4,e883650e <uDNS_ReceiveMsg+0x4e8>
            LogInfo("hndlSRVChanged: SRVChanged, No Target, SRV Deregistered for %##s, state %d", rr->resrec.name->c,
    e883648e:	cb99                	beqz	a5,e88364a4 <uDNS_ReceiveMsg+0x47e>
    e8836490:	028db603          	ld	a2,40(s11)
    e8836494:	468d                	li	a3,3
    e8836496:	00079597          	auipc	a1,0x79
    e883649a:	57258593          	addi	a1,a1,1394 # e88afa08 <__func__.9833+0x1a70>
    e883649e:	450d                	li	a0,3
    e88364a0:	80cf90ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            dt = GetRRDomainNameTarget(&rr->resrec);
    e88364a4:	00add703          	lhu	a4,10(s11)
            rr->SRVChanged = mDNSfalse;
    e88364a8:	1c0d8823          	sb	zero,464(s11)
            dt = GetRRDomainNameTarget(&rr->resrec);
    e88364ac:	02500693          	li	a3,37
    e88364b0:	ffe7079b          	addiw	a5,a4,-2
    e88364b4:	3c07b78b          	extu	a5,a5,15,0
    e88364b8:	02f6e363          	bltu	a3,a5,e88364de <uDNS_ReceiveMsg+0x4b8>
    e88364bc:	00fcd7b3          	srl	a5,s9,a5
    e88364c0:	0007b78b          	extu	a5,a5,0,0
    e88364c4:	cf89                	beqz	a5,e88364de <uDNS_ReceiveMsg+0x4b8>
    e88364c6:	030db783          	ld	a5,48(s11)
    e88364ca:	0791                	addi	a5,a5,4
            if (dt) dt->c[0] = 0;
    e88364cc:	c399                	beqz	a5,e88364d2 <uDNS_ReceiveMsg+0x4ac>
    e88364ce:	00078023          	sb	zero,0(a5)
            rr->state = regState_NoTarget;  // Wait for the next target change
    e88364d2:	47a1                	li	a5,8
    e88364d4:	14fd8623          	sb	a5,332(s11)
            rr->resrec.rdlength = rr->resrec.rdestimate = 0;
    e88364d8:	000daa23          	sw	zero,20(s11)
            return;
    e88364dc:	b175                	j	e8836188 <uDNS_ReceiveMsg+0x162>
            dt = GetRRDomainNameTarget(&rr->resrec);
    e88364de:	0007079b          	sext.w	a5,a4
    e88364e2:	02400693          	li	a3,36
    e88364e6:	fef6e6e3          	bltu	a3,a5,e88364d2 <uDNS_ReceiveMsg+0x4ac>
    e88364ea:	7682                	ld	a3,32(sp)
    e88364ec:	00e6d733          	srl	a4,a3,a4
    e88364f0:	0007370b          	extu	a4,a4,0,0
    e88364f4:	c709                	beqz	a4,e88364fe <uDNS_ReceiveMsg+0x4d8>
    e88364f6:	030db783          	ld	a5,48(s11)
    e88364fa:	0799                	addi	a5,a5,6
    e88364fc:	bfc1                	j	e88364cc <uDNS_ReceiveMsg+0x4a6>
    e88364fe:	02100713          	li	a4,33
    e8836502:	fce798e3          	bne	a5,a4,e88364d2 <uDNS_ReceiveMsg+0x4ac>
    e8836506:	030db783          	ld	a5,48(s11)
    e883650a:	07a9                	addi	a5,a5,10
    e883650c:	b7c1                	j	e88364cc <uDNS_ReceiveMsg+0x4a6>
        if (rr->state == regState_Pending)
    e883650e:	03469a63          	bne	a3,s4,e8836542 <uDNS_ReceiveMsg+0x51c>
            LogInfo("hndlSRVChanged: SRVChanged, No Target, Deregistering again %##s, state %d", rr->resrec.name->c, rr->state);
    e8836512:	cb99                	beqz	a5,e8836528 <uDNS_ReceiveMsg+0x502>
    e8836514:	028db603          	ld	a2,40(s11)
    e8836518:	4685                	li	a3,1
    e883651a:	00079597          	auipc	a1,0x79
    e883651e:	53e58593          	addi	a1,a1,1342 # e88afa58 <__func__.9833+0x1ac0>
    e8836522:	450d                	li	a0,3
    e8836524:	f89f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e8836528:	000aa703          	lw	a4,0(s5)
    e883652c:	10eda823          	sw	a4,272(s11)
            rr->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e8836530:	24042783          	lw	a5,576(s0)
    e8836534:	9f99                	subw	a5,a5,a4
    e8836536:	10fdaa23          	sw	a5,276(s11)
            rr->state = regState_DeregPending;
    e883653a:	478d                	li	a5,3
    e883653c:	14fd8623          	sb	a5,332(s11)
            return;
    e8836540:	b1a1                	j	e8836188 <uDNS_ReceiveMsg+0x162>
        LogInfo("hndlSRVChanged: Not in DeregPending or RegPending state %##s, state %d", rr->resrec.name->c, rr->state);
    e8836542:	cb91                	beqz	a5,e8836556 <uDNS_ReceiveMsg+0x530>
    e8836544:	028db603          	ld	a2,40(s11)
    e8836548:	00079597          	auipc	a1,0x79
    e883654c:	56058593          	addi	a1,a1,1376 # e88afaa8 <__func__.9833+0x1b10>
    e8836550:	450d                	li	a0,3
    e8836552:	f5bf80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    rr->SRVChanged = mDNSfalse;
    e8836556:	1c0d8823          	sb	zero,464(s11)
    e883655a:	b13d                	j	e8836188 <uDNS_ReceiveMsg+0x162>
        if ((rr->state == regState_DeregPending) ||
    e883655c:	478d                	li	a5,3
    e883655e:	06f69063          	bne	a3,a5,e88365be <uDNS_ReceiveMsg+0x598>
            dt = GetRRDomainNameTarget(&rr->resrec);
    e8836562:	00add703          	lhu	a4,10(s11)
    e8836566:	02500693          	li	a3,37
    e883656a:	ffe7079b          	addiw	a5,a4,-2
    e883656e:	3c07b78b          	extu	a5,a5,15,0
    e8836572:	06f6e863          	bltu	a3,a5,e88365e2 <uDNS_ReceiveMsg+0x5bc>
    e8836576:	00fcd7b3          	srl	a5,s9,a5
    e883657a:	0007b78b          	extu	a5,a5,0,0
    e883657e:	c3b5                	beqz	a5,e88365e2 <uDNS_ReceiveMsg+0x5bc>
    e8836580:	030db783          	ld	a5,48(s11)
    e8836584:	0791                	addi	a5,a5,4
            if (dt) dt->c[0] = 0;
    e8836586:	c399                	beqz	a5,e883658c <uDNS_ReceiveMsg+0x566>
    e8836588:	00078023          	sb	zero,0(a5)
            rr->state = regState_NoTarget;  // NoTarget will allow us to pick up new target OR nat traversal state
    e883658c:	47a1                	li	a5,8
    e883658e:	14fd8623          	sb	a5,332(s11)
            LogInfo("hndlSRVChanged: SRVChanged, Valid Target %##s, Registering all records for %##s, state %d",
    e8836592:	000c2783          	lw	a5,0(s8)
            rr->resrec.rdlength = rr->resrec.rdestimate = 0;
    e8836596:	000daa23          	sw	zero,20(s11)
            LogInfo("hndlSRVChanged: SRVChanged, Valid Target %##s, Registering all records for %##s, state %d",
    e883659a:	cb99                	beqz	a5,e88365b0 <uDNS_ReceiveMsg+0x58a>
    e883659c:	028db683          	ld	a3,40(s11)
    e88365a0:	4721                	li	a4,8
    e88365a2:	00079597          	auipc	a1,0x79
    e88365a6:	54e58593          	addi	a1,a1,1358 # e88afaf0 <__func__.9833+0x1b58>
    e88365aa:	450d                	li	a0,3
    e88365ac:	f01f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            rr->SRVChanged = mDNSfalse;
    e88365b0:	1c0d8823          	sb	zero,464(s11)
            UpdateOneSRVRecord(m, rr);
    e88365b4:	85ee                	mv	a1,s11
    e88365b6:	8522                	mv	a0,s0
    e88365b8:	96cfe0ef          	jal	ra,e8834724 <UpdateOneSRVRecord>
            return;
    e88365bc:	b6f1                	j	e8836188 <uDNS_ReceiveMsg+0x162>
        if ((rr->state == regState_DeregPending) ||
    e88365be:	f9469ce3          	bne	a3,s4,e8836556 <uDNS_ReceiveMsg+0x530>
            (rr->state == regState_Pending && !SameDomainName(target, &rr->resrec.rdata->u.srv.target)))
    e88365c2:	030db583          	ld	a1,48(s11)
    e88365c6:	f82a                	sd	a0,48(sp)
    e88365c8:	05a9                	addi	a1,a1,10
    e88365ca:	a81dc0ef          	jal	ra,e881304a <SameDomainName>
    e88365ce:	7642                	ld	a2,48(sp)
    e88365d0:	d949                	beqz	a0,e8836562 <uDNS_ReceiveMsg+0x53c>
        if (rr->state == regState_Pending) rr->state = regState_Registered;
    e88365d2:	14cdc783          	lbu	a5,332(s11)
    e88365d6:	f94790e3          	bne	a5,s4,e8836556 <uDNS_ReceiveMsg+0x530>
    e88365da:	4789                	li	a5,2
    e88365dc:	14fd8623          	sb	a5,332(s11)
    e88365e0:	bf9d                	j	e8836556 <uDNS_ReceiveMsg+0x530>
            dt = GetRRDomainNameTarget(&rr->resrec);
    e88365e2:	0007079b          	sext.w	a5,a4
    e88365e6:	02400693          	li	a3,36
    e88365ea:	faf6e1e3          	bltu	a3,a5,e883658c <uDNS_ReceiveMsg+0x566>
    e88365ee:	7682                	ld	a3,32(sp)
    e88365f0:	00e6d733          	srl	a4,a3,a4
    e88365f4:	0007370b          	extu	a4,a4,0,0
    e88365f8:	c709                	beqz	a4,e8836602 <uDNS_ReceiveMsg+0x5dc>
    e88365fa:	030db783          	ld	a5,48(s11)
    e88365fe:	0799                	addi	a5,a5,6
    e8836600:	b759                	j	e8836586 <uDNS_ReceiveMsg+0x560>
    e8836602:	02100713          	li	a4,33
    e8836606:	f8e793e3          	bne	a5,a4,e883658c <uDNS_ReceiveMsg+0x566>
    e883660a:	030db783          	ld	a5,48(s11)
    e883660e:	07a9                	addi	a5,a5,10
    e8836610:	bf9d                	j	e8836586 <uDNS_ReceiveMsg+0x560>
            LogInfo("hndlRecordUpdateReply: Deregistered %##s (%s), state %d", rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype), rr->state);
    e8836612:	000c2783          	lw	a5,0(s8)
    e8836616:	c38d                	beqz	a5,e8836638 <uDNS_ReceiveMsg+0x612>
    e8836618:	028db603          	ld	a2,40(s11)
    e883661c:	f832                	sd	a2,48(sp)
    e883661e:	e42df0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8836622:	86aa                	mv	a3,a0
    e8836624:	14cdc703          	lbu	a4,332(s11)
    e8836628:	7642                	ld	a2,48(sp)
    e883662a:	00079597          	auipc	a1,0x79
    e883662e:	52658593          	addi	a1,a1,1318 # e88afb50 <__func__.9833+0x1bb8>
    e8836632:	450d                	li	a0,3
    e8836634:	e79f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (rr->state != regState_DeregPending) LogMsg("hndlRecordUpdateReply: ResourceRecord %s not in DeregPending state %d", ARDisplayString(m, rr), rr->state);
    e8836638:	14cdc703          	lbu	a4,332(s11)
            rr->SRVChanged = mDNSfalse;
    e883663c:	1c0d8823          	sb	zero,464(s11)
            if (rr->state != regState_DeregPending) LogMsg("hndlRecordUpdateReply: ResourceRecord %s not in DeregPending state %d", ARDisplayString(m, rr), rr->state);
    e8836640:	478d                	li	a5,3
    e8836642:	dcf700e3          	beq	a4,a5,e8836402 <uDNS_ReceiveMsg+0x3dc>
    e8836646:	030db583          	ld	a1,48(s11)
    e883664a:	03b40613          	addi	a2,s0,59
    e883664e:	008d8513          	addi	a0,s11,8
    e8836652:	0591                	addi	a1,a1,4
    e8836654:	bc0e00ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836658:	862a                	mv	a2,a0
    e883665a:	14cdc683          	lbu	a3,332(s11)
    e883665e:	00079597          	auipc	a1,0x79
    e8836662:	52a58593          	addi	a1,a1,1322 # e88afb88 <__func__.9833+0x1bf0>
    e8836666:	4501                	li	a0,0
    e8836668:	e45f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e883666c:	bb59                	j	e8836402 <uDNS_ReceiveMsg+0x3dc>
    if (rr->state == regState_Pending || rr->state == regState_Refresh)
    e883666e:	14cdc783          	lbu	a5,332(s11)
    e8836672:	0fb7f713          	andi	a4,a5,251
    e8836676:	0b471f63          	bne	a4,s4,e8836734 <uDNS_ReceiveMsg+0x70e>
        if (!err)
    e883667a:	040b1463          	bnez	s6,e88366c2 <uDNS_ReceiveMsg+0x69c>
            if (rr->state == regState_Refresh) InvokeCallback = mDNSfalse;
    e883667e:	17ed                	addi	a5,a5,-5
            rr->state = regState_Registered;
    e8836680:	4709                	li	a4,2
    mDNSBool InvokeCallback = mDNStrue;
    e8836682:	00f037b3          	snez	a5,a5
            rr->state = regState_Registered;
    e8836686:	14ed8623          	sb	a4,332(s11)
    if (rr->QueuedRData && rr->state == regState_Registered)
    e883668a:	1f8db703          	ld	a4,504(s11)
    e883668e:	c74d                	beqz	a4,e8836738 <uDNS_ReceiveMsg+0x712>
    e8836690:	14cdc603          	lbu	a2,332(s11)
    e8836694:	4689                	li	a3,2
    e8836696:	0ad61163          	bne	a2,a3,e8836738 <uDNS_ReceiveMsg+0x712>
        rr->state = regState_UpdatePending;
    e883669a:	479d                	li	a5,7
    e883669c:	14fd8623          	sb	a5,332(s11)
        rr->InFlightRDLen = rr->QueuedRDLen;
    e88366a0:	1e4dd783          	lhu	a5,484(s11)
        rr->InFlightRData = rr->QueuedRData;
    e88366a4:	1eedb823          	sd	a4,496(s11)
        rr->QueuedRData = mDNSNULL;
    e88366a8:	1e0dbc23          	sd	zero,504(s11)
        rr->InFlightRDLen = rr->QueuedRDLen;
    e88366ac:	1efd9123          	sh	a5,482(s11)
        rr->OrigRData = rr->resrec.rdata;
    e88366b0:	030db783          	ld	a5,48(s11)
    e88366b4:	1efdb423          	sd	a5,488(s11)
        rr->OrigRDLen = rr->resrec.rdlength;
    e88366b8:	014dd783          	lhu	a5,20(s11)
    e88366bc:	1efd9023          	sh	a5,480(s11)
        rr->QueuedRData = mDNSNULL;
    e88366c0:	a881                	j	e8836710 <uDNS_ReceiveMsg+0x6ea>
            LogMsg("hndlRecordUpdateReply: Registration of record %##s type %d failed with error %d", rr->resrec.name->c, rr->resrec.rrtype, err);
    e88366c2:	00add683          	lhu	a3,10(s11)
    e88366c6:	028db603          	ld	a2,40(s11)
    e88366ca:	875a                	mv	a4,s6
    e88366cc:	00079597          	auipc	a1,0x79
    e88366d0:	50458593          	addi	a1,a1,1284 # e88afbd0 <__func__.9833+0x1c38>
    e88366d4:	4501                	li	a0,0
    e88366d6:	dd7f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (!rr->Private && rr->uselease && err == mStatus_UnknownErr && mDNSSameIPPort(UpdatePort, UnicastDNSPort))
    e88366da:	154dc783          	lbu	a5,340(s11)
    e88366de:	ebb9                	bnez	a5,e8836734 <uDNS_ReceiveMsg+0x70e>
    e88366e0:	14ddc783          	lbu	a5,333(s11)
    e88366e4:	cba1                	beqz	a5,e8836734 <uDNS_ReceiveMsg+0x70e>
    e88366e6:	77c1                	lui	a5,0xffff0
    e88366e8:	17fd                	addi	a5,a5,-1
    e88366ea:	04fb1563          	bne	s6,a5,e8836734 <uDNS_ReceiveMsg+0x70e>
    e88366ee:	0006c797          	auipc	a5,0x6c
    e88366f2:	6327d783          	lhu	a5,1586(a5) # e88a2d20 <UnicastDNSPort>
    e88366f6:	03a79f63          	bne	a5,s10,e8836734 <uDNS_ReceiveMsg+0x70e>
                LogMsg("hndlRecordUpdateReply: Will retry update of record %##s without lease option", rr->resrec.name->c);
    e88366fa:	028db603          	ld	a2,40(s11)
    e88366fe:	00079597          	auipc	a1,0x79
    e8836702:	52258593          	addi	a1,a1,1314 # e88afc20 <__func__.9833+0x1c88>
    e8836706:	4501                	li	a0,0
    e8836708:	da5f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                rr->uselease = mDNSfalse;
    e883670c:	140d86a3          	sb	zero,333(s11)
        rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e8836710:	000aa783          	lw	a5,0(s5)
    e8836714:	10fda823          	sw	a5,272(s11)
        rr->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e8836718:	24042703          	lw	a4,576(s0)
    e883671c:	40f707bb          	subw	a5,a4,a5
    e8836720:	10fdaa23          	sw	a5,276(s11)
        SetNextuDNSEvent(m, rr);
    e8836724:	1f84a783          	lw	a5,504(s1)
    e8836728:	9f99                	subw	a5,a5,a4
    e883672a:	a407cfe3          	bltz	a5,e8836188 <uDNS_ReceiveMsg+0x162>
    e883672e:	1ee4ac23          	sw	a4,504(s1)
    e8836732:	bc99                	j	e8836188 <uDNS_ReceiveMsg+0x162>
    mDNSBool InvokeCallback = mDNStrue;
    e8836734:	4785                	li	a5,1
    e8836736:	bf91                	j	e883668a <uDNS_ReceiveMsg+0x664>
    if (!err && InvokeCallback && rr->RecordCallback)
    e8836738:	a40b18e3          	bnez	s6,e8836188 <uDNS_ReceiveMsg+0x162>
    e883673c:	a40786e3          	beqz	a5,e8836188 <uDNS_ReceiveMsg+0x162>
    e8836740:	068db783          	ld	a5,104(s11)
    e8836744:	a40782e3          	beqz	a5,e8836188 <uDNS_ReceiveMsg+0x162>
        LogInfo("hndlRecordUpdateReply: Calling record callback on %##s", rr->resrec.name->c);
    e8836748:	000c2783          	lw	a5,0(s8)
    e883674c:	cb91                	beqz	a5,e8836760 <uDNS_ReceiveMsg+0x73a>
    e883674e:	028db603          	ld	a2,40(s11)
    e8836752:	00079597          	auipc	a1,0x79
    e8836756:	51e58593          	addi	a1,a1,1310 # e88afc70 <__func__.9833+0x1cd8>
    e883675a:	450d                	li	a0,3
    e883675c:	d51f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        mDNS_DropLockBeforeCallback();
    e8836760:	585c                	lw	a5,52(s0)
    e8836762:	5814                	lw	a3,48(s0)
    e8836764:	0017871b          	addiw	a4,a5,1
    e8836768:	d858                	sw	a4,52(s0)
    e883676a:	00d70d63          	beq	a4,a3,e8836784 <uDNS_ReceiveMsg+0x75e>
    e883676e:	00077617          	auipc	a2,0x77
    e8836772:	79260613          	addi	a2,a2,1938 # e88adf00 <__func__.9532>
    e8836776:	0006d597          	auipc	a1,0x6d
    e883677a:	5f258593          	addi	a1,a1,1522 # e88a3d68 <end.8789+0x6c0>
    e883677e:	4501                	li	a0,0
    e8836780:	d2df80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->RecordCallback(m, rr, err);
    e8836784:	068db783          	ld	a5,104(s11)
    e8836788:	4601                	li	a2,0
    e883678a:	85ee                	mv	a1,s11
    e883678c:	8522                	mv	a0,s0
    e883678e:	9782                	jalr	a5
        mDNS_ReclaimLockAfterCallback();
    e8836790:	5814                	lw	a3,48(s0)
    e8836792:	5858                	lw	a4,52(s0)
    e8836794:	00e68d63          	beq	a3,a4,e88367ae <uDNS_ReceiveMsg+0x788>
    e8836798:	00077617          	auipc	a2,0x77
    e883679c:	76860613          	addi	a2,a2,1896 # e88adf00 <__func__.9532>
    e88367a0:	0006d597          	auipc	a1,0x6d
    e88367a4:	60858593          	addi	a1,a1,1544 # e88a3da8 <end.8789+0x700>
    e88367a8:	4501                	li	a0,0
    e88367aa:	d03f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88367ae:	585c                	lw	a5,52(s0)
    e88367b0:	37fd                	addiw	a5,a5,-1
    e88367b2:	d85c                	sw	a5,52(s0)
    e88367b4:	bad1                	j	e8836188 <uDNS_ReceiveMsg+0x162>

00000000e88367b6 <sendLLQRefresh>:
{
    e88367b6:	7159                	addi	sp,sp,-112
    e88367b8:	f0a2                	sd	s0,96(sp)
    e88367ba:	e8ca                	sd	s2,80(sp)
    e88367bc:	f486                	sd	ra,104(sp)
    e88367be:	eca6                	sd	s1,88(sp)
    e88367c0:	e4ce                	sd	s3,72(sp)
    if (q->ReqLease)
    e88367c2:	1b85a783          	lw	a5,440(a1)
{
    e88367c6:	892a                	mv	s2,a0
    e88367c8:	842e                	mv	s0,a1
    if (q->ReqLease)
    e88367ca:	c7b5                	beqz	a5,e8836836 <sendLLQRefresh+0x80>
        if ((q->state == LLQ_Established && q->ntries >= kLLQ_MAX_TRIES) || q->expire - m->timenow < 0)
    e88367cc:	1b45c703          	lbu	a4,436(a1)
    e88367d0:	478d                	li	a5,3
    e88367d2:	00f71763          	bne	a4,a5,e88367e0 <sendLLQRefresh+0x2a>
    e88367d6:	1c059703          	lh	a4,448(a1)
    e88367da:	4789                	li	a5,2
    e88367dc:	00e7c963          	blt	a5,a4,e88367ee <sendLLQRefresh+0x38>
    e88367e0:	1bc42783          	lw	a5,444(s0)
    e88367e4:	24092703          	lw	a4,576(s2)
    e88367e8:	9f99                	subw	a5,a5,a4
    e88367ea:	0407d663          	bgez	a5,e8836836 <sendLLQRefresh+0x80>
            LogMsg("Unable to refresh LLQ %##s (%s) - will retry in %d seconds", q->qname.c, DNSTypeName(q->qtype), LLQ_POLL_INTERVAL / mDNSPlatformOneSecond);
    e88367ee:	31445503          	lhu	a0,788(s0)
    e88367f2:	c6edf0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88367f6:	86aa                	mv	a3,a0
    e88367f8:	0009e797          	auipc	a5,0x9e
    e88367fc:	28878793          	addi	a5,a5,648 # e88d4a80 <mDNSPlatformOneSecond>
    e8836800:	4398                	lw	a4,0(a5)
    e8836802:	38400793          	li	a5,900
    e8836806:	00078597          	auipc	a1,0x78
    e883680a:	2ba58593          	addi	a1,a1,698 # e88aeac0 <__func__.9833+0xb28>
    e883680e:	02e787bb          	mulw	a5,a5,a4
    e8836812:	4501                	li	a0,0
    e8836814:	21440613          	addi	a2,s0,532
    e8836818:	02e7c73b          	divw	a4,a5,a4
    e883681c:	c91f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            StartLLQPolling(m,q);
    e8836820:	85a2                	mv	a1,s0
    e8836822:	854a                	mv	a0,s2
    e8836824:	c20fa0ef          	jal	ra,e8830c44 <StartLLQPolling>
}
    e8836828:	70a6                	ld	ra,104(sp)
    e883682a:	7406                	ld	s0,96(sp)
    e883682c:	64e6                	ld	s1,88(sp)
    e883682e:	6946                	ld	s2,80(sp)
    e8836830:	69a6                	ld	s3,72(sp)
    e8836832:	6165                	addi	sp,sp,112
    e8836834:	8082                	ret
    llq.vers     = kLLQ_Vers;
    e8836836:	000207b7          	lui	a5,0x20
    e883683a:	2785                	addiw	a5,a5,1
    e883683c:	d43e                	sw	a5,40(sp)
    llq.err      = q->tcp ? GetLLQEventPort(m, &q->servAddr) : LLQErr_NoError;  // If using TCP tell server what UDP port to send notifications to
    e883683e:	1a843783          	ld	a5,424(s0)
    e8836842:	4501                	li	a0,0
    e8836844:	c791                	beqz	a5,e8836850 <sendLLQRefresh+0x9a>
    e8836846:	19040593          	addi	a1,s0,400
    e883684a:	854a                	mv	a0,s2
    e883684c:	f96fb0ef          	jal	ra,e8831fe2 <GetLLQEventPort>
    llq.id       = q->id;
    e8836850:	1dc43783          	ld	a5,476(s0)
    InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8836854:	649d                	lui	s1,0x7
    e8836856:	21245583          	lhu	a1,530(s0)
    llq.id       = q->id;
    e883685a:	f83e                	sd	a5,48(sp)
    llq.llqlease = q->ReqLease;
    e883685c:	1b842783          	lw	a5,440(s0)
    InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8836860:	1e048993          	addi	s3,s1,480 # 71e0 <memcmp-0xe87f8e20>
    e8836864:	99ca                	add	s3,s3,s2
    llq.llqlease = q->ReqLease;
    e8836866:	dc3e                	sw	a5,56(sp)
    InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8836868:	0006d797          	auipc	a5,0x6d
    e883686c:	d1078793          	addi	a5,a5,-752 # e88a3578 <uQueryFlags>
    e8836870:	0007d603          	lhu	a2,0(a5)
    llq.err      = q->tcp ? GetLLQEventPort(m, &q->servAddr) : LLQErr_NoError;  // If using TCP tell server what UDP port to send notifications to
    e8836874:	02a11623          	sh	a0,44(sp)
    InitializeDNSMessage(&m->omsg.h, q->TargetQID, uQueryFlags);
    e8836878:	854e                	mv	a0,s3
    e883687a:	dd3dd0ef          	jal	ra,e881464c <InitializeDNSMessage>
    end = putLLQ(&m->omsg, m->omsg.data, q, &llq);
    e883687e:	1ec48593          	addi	a1,s1,492
    e8836882:	8622                	mv	a2,s0
    e8836884:	1034                	addi	a3,sp,40
    e8836886:	95ca                	add	a1,a1,s2
    e8836888:	854e                	mv	a0,s3
    e883688a:	d80fa0ef          	jal	ra,e8830e0a <putLLQ>
    e883688e:	f02a                	sd	a0,32(sp)
    e8836890:	862a                	mv	a2,a0
    if (!end) { LogMsg("sendLLQRefresh: putLLQ failed %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8836892:	e105                	bnez	a0,e88368b2 <sendLLQRefresh+0xfc>
    e8836894:	31445503          	lhu	a0,788(s0)
    e8836898:	bc8df0ef          	jal	ra,e8815c60 <DNSTypeName>
    e883689c:	86aa                	mv	a3,a0
    e883689e:	21440613          	addi	a2,s0,532
    e88368a2:	00078597          	auipc	a1,0x78
    e88368a6:	25e58593          	addi	a1,a1,606 # e88aeb00 <__func__.9833+0xb68>
        if (!end) { LogMsg("sendLLQRefresh: DNSDigest_SignMessage failed %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e88368aa:	4501                	li	a0,0
    e88368ac:	c01f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88368b0:	bfa5                	j	e8836828 <sendLLQRefresh+0x72>
    end = putHINFO(m, &m->omsg, end, q->AuthInfo, limit);
    e88368b2:	6725                	lui	a4,0x9
    e88368b4:	6434                	ld	a3,72(s0)
    e88368b6:	4d870713          	addi	a4,a4,1240 # 94d8 <memcmp-0xe87f6b28>
    e88368ba:	974a                	add	a4,a4,s2
    e88368bc:	85ce                	mv	a1,s3
    e88368be:	854a                	mv	a0,s2
    e88368c0:	942e00ef          	jal	ra,e8816a02 <putHINFO>
    e88368c4:	f02a                	sd	a0,32(sp)
    if (!end) { LogMsg("sendLLQRefresh: putHINFO failed %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e88368c6:	ed09                	bnez	a0,e88368e0 <sendLLQRefresh+0x12a>
    e88368c8:	31445503          	lhu	a0,788(s0)
    e88368cc:	b94df0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88368d0:	86aa                	mv	a3,a0
    e88368d2:	21440613          	addi	a2,s0,532
    e88368d6:	00078597          	auipc	a1,0x78
    e88368da:	25258593          	addi	a1,a1,594 # e88aeb28 <__func__.9833+0xb90>
    e88368de:	b7f1                	j	e88368aa <sendLLQRefresh+0xf4>
    if (PrivateQuery(q))
    e88368e0:	643c                	ld	a5,72(s0)
    e88368e2:	c3e9                	beqz	a5,e88369a4 <sendLLQRefresh+0x1ee>
    e88368e4:	00c7c783          	lbu	a5,12(a5)
    e88368e8:	cfd5                	beqz	a5,e88369a4 <sendLLQRefresh+0x1ee>
        DNSDigest_SignMessageHostByteOrder(&m->omsg, &end, q->AuthInfo);
    e88368ea:	94ca                	add	s1,s1,s2
    e88368ec:	1e44c783          	lbu	a5,484(s1)
    e88368f0:	1e54c703          	lbu	a4,485(s1)
    e88368f4:	4681                	li	a3,0
    e88368f6:	0087979b          	slliw	a5,a5,0x8
    e88368fa:	8fd9                	or	a5,a5,a4
    e88368fc:	1ef49223          	sh	a5,484(s1)
    e8836900:	1e64c783          	lbu	a5,486(s1)
    e8836904:	1e74c703          	lbu	a4,487(s1)
    e8836908:	100c                	addi	a1,sp,32
    e883690a:	0087979b          	slliw	a5,a5,0x8
    e883690e:	8fd9                	or	a5,a5,a4
    e8836910:	1ef49323          	sh	a5,486(s1)
    e8836914:	1e84c783          	lbu	a5,488(s1)
    e8836918:	1e94c703          	lbu	a4,489(s1)
    e883691c:	854e                	mv	a0,s3
    e883691e:	0087979b          	slliw	a5,a5,0x8
    e8836922:	8fd9                	or	a5,a5,a4
    e8836924:	1ef49423          	sh	a5,488(s1)
    e8836928:	1ea4c783          	lbu	a5,490(s1)
    e883692c:	1eb4c703          	lbu	a4,491(s1)
    e8836930:	0087979b          	slliw	a5,a5,0x8
    e8836934:	8fd9                	or	a5,a5,a4
    e8836936:	1ef49523          	sh	a5,490(s1)
    e883693a:	6430                	ld	a2,72(s0)
    e883693c:	830e30ef          	jal	ra,e881996c <DNSDigest_SignMessage>
    e8836940:	1e44c783          	lbu	a5,484(s1)
    e8836944:	1e54c703          	lbu	a4,485(s1)
    e8836948:	0087979b          	slliw	a5,a5,0x8
    e883694c:	8fd9                	or	a5,a5,a4
    e883694e:	1ef49223          	sh	a5,484(s1)
    e8836952:	1e64c783          	lbu	a5,486(s1)
    e8836956:	1e74c703          	lbu	a4,487(s1)
    e883695a:	0087979b          	slliw	a5,a5,0x8
    e883695e:	8fd9                	or	a5,a5,a4
    e8836960:	1ef49323          	sh	a5,486(s1)
    e8836964:	1e84c783          	lbu	a5,488(s1)
    e8836968:	1e94c703          	lbu	a4,489(s1)
    e883696c:	0087979b          	slliw	a5,a5,0x8
    e8836970:	8fd9                	or	a5,a5,a4
    e8836972:	1ef49423          	sh	a5,488(s1)
    e8836976:	1ea4c783          	lbu	a5,490(s1)
    e883697a:	1eb4c703          	lbu	a4,491(s1)
    e883697e:	0087979b          	slliw	a5,a5,0x8
    e8836982:	8fd9                	or	a5,a5,a4
    e8836984:	1ef49523          	sh	a5,490(s1)
        if (!end) { LogMsg("sendLLQRefresh: DNSDigest_SignMessage failed %##s (%s)", q->qname.c, DNSTypeName(q->qtype)); return; }
    e8836988:	7782                	ld	a5,32(sp)
    e883698a:	ef89                	bnez	a5,e88369a4 <sendLLQRefresh+0x1ee>
    e883698c:	31445503          	lhu	a0,788(s0)
    e8836990:	ad0df0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8836994:	86aa                	mv	a3,a0
    e8836996:	21440613          	addi	a2,s0,532
    e883699a:	00078597          	auipc	a1,0x78
    e883699e:	1be58593          	addi	a1,a1,446 # e88aeb58 <__func__.9833+0xbc0>
    e88369a2:	b721                	j	e88368aa <sendLLQRefresh+0xf4>
    if (PrivateQuery(q) && !q->tcp)
    e88369a4:	643c                	ld	a5,72(s0)
    e88369a6:	0009e717          	auipc	a4,0x9e
    e88369aa:	0ce70713          	addi	a4,a4,206 # e88d4a74 <mDNS_LoggingEnabled>
    e88369ae:	4318                	lw	a4,0(a4)
    e88369b0:	c7d9                	beqz	a5,e8836a3e <sendLLQRefresh+0x288>
    e88369b2:	00c7c783          	lbu	a5,12(a5)
    e88369b6:	0ff7f693          	andi	a3,a5,255
    e88369ba:	cac1                	beqz	a3,e8836a4a <sendLLQRefresh+0x294>
    e88369bc:	1a843683          	ld	a3,424(s0)
    e88369c0:	e6c9                	bnez	a3,e8836a4a <sendLLQRefresh+0x294>
        LogInfo("sendLLQRefresh setting up new TLS session %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e88369c2:	cf19                	beqz	a4,e88369e0 <sendLLQRefresh+0x22a>
    e88369c4:	31445503          	lhu	a0,788(s0)
    e88369c8:	a98df0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88369cc:	86aa                	mv	a3,a0
    e88369ce:	21440613          	addi	a2,s0,532
    e88369d2:	00078597          	auipc	a1,0x78
    e88369d6:	1be58593          	addi	a1,a1,446 # e88aeb90 <__func__.9833+0xbf8>
    e88369da:	450d                	li	a0,3
    e88369dc:	ad1f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!q->nta)
    e88369e0:	18843803          	ld	a6,392(s0)
    e88369e4:	02081063          	bnez	a6,e8836a04 <sendLLQRefresh+0x24e>
            q->nta = StartGetZoneData(m, &q->qname, ZoneServiceLLQ, LLQGotZoneData, q);
    e88369e8:	8722                	mv	a4,s0
    e88369ea:	fffff697          	auipc	a3,0xfffff
    e88369ee:	8fe68693          	addi	a3,a3,-1794 # e88352e8 <LLQGotZoneData>
    e88369f2:	4609                	li	a2,2
    e88369f4:	21440593          	addi	a1,s0,532
    e88369f8:	854a                	mv	a0,s2
    e88369fa:	b50fe0ef          	jal	ra,e8834d4a <StartGetZoneData>
    e88369fe:	18a43423          	sd	a0,392(s0)
            return;
    e8836a02:	b51d                	j	e8836828 <sendLLQRefresh+0x72>
        q->tcp = MakeTCPConn(m, &m->omsg, end, kTCPSocketFlags_UseTLS, &q->servAddr, q->servPort, &q->nta->Host, q, mDNSNULL);
    e8836a04:	1a445783          	lhu	a5,420(s0)
    e8836a08:	7602                	ld	a2,32(sp)
    e8836a0a:	e002                	sd	zero,0(sp)
    e8836a0c:	88a2                	mv	a7,s0
    e8836a0e:	21280813          	addi	a6,a6,530
    e8836a12:	19040713          	addi	a4,s0,400
    e8836a16:	4685                	li	a3,1
    e8836a18:	85ce                	mv	a1,s3
    e8836a1a:	854a                	mv	a0,s2
    e8836a1c:	ab6fd0ef          	jal	ra,e8833cd2 <MakeTCPConn>
    e8836a20:	1aa43423          	sd	a0,424(s0)
    q->ntries++;
    e8836a24:	1c045783          	lhu	a5,448(s0)
    SetNextQueryTime(m, q);
    e8836a28:	85a2                	mv	a1,s0
    e8836a2a:	854a                	mv	a0,s2
    q->ntries++;
    e8836a2c:	2785                	addiw	a5,a5,1
    e8836a2e:	1cf41023          	sh	a5,448(s0)
    q->LastQTime = m->timenow;
    e8836a32:	24092783          	lw	a5,576(s2)
    e8836a36:	c81c                	sw	a5,16(s0)
    SetNextQueryTime(m, q);
    e8836a38:	835e70ef          	jal	ra,e881e26c <SetNextQueryTime>
    e8836a3c:	b3f5                	j	e8836828 <sendLLQRefresh+0x72>
        LogInfo("sendLLQRefresh: using existing %s session %##s (%s)", PrivateQuery(q) ? "TLS" : "UDP",
    e8836a3e:	c331                	beqz	a4,e8836a82 <sendLLQRefresh+0x2cc>
    e8836a40:	0006c617          	auipc	a2,0x6c
    e8836a44:	34860613          	addi	a2,a2,840 # e88a2d88 <mDNSInterface_Unicast+0x8>
    e8836a48:	a829                	j	e8836a62 <sendLLQRefresh+0x2ac>
    e8836a4a:	cf05                	beqz	a4,e8836a82 <sendLLQRefresh+0x2cc>
    e8836a4c:	0ff7f793          	andi	a5,a5,255
    e8836a50:	0006c617          	auipc	a2,0x6c
    e8836a54:	33860613          	addi	a2,a2,824 # e88a2d88 <mDNSInterface_Unicast+0x8>
    e8836a58:	c789                	beqz	a5,e8836a62 <sendLLQRefresh+0x2ac>
    e8836a5a:	0006c617          	auipc	a2,0x6c
    e8836a5e:	33660613          	addi	a2,a2,822 # e88a2d90 <mDNSInterface_Unicast+0x10>
    e8836a62:	31445503          	lhu	a0,788(s0)
    e8836a66:	ec32                	sd	a2,24(sp)
    e8836a68:	9f8df0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8836a6c:	872a                	mv	a4,a0
    e8836a6e:	6662                	ld	a2,24(sp)
    e8836a70:	21440693          	addi	a3,s0,532
    e8836a74:	00078597          	auipc	a1,0x78
    e8836a78:	15458593          	addi	a1,a1,340 # e88aebc8 <__func__.9833+0xc30>
    e8836a7c:	450d                	li	a0,3
    e8836a7e:	a2ff80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        err = mDNSSendDNSMessage(m, &m->omsg, end, mDNSInterface_Any, q->LocalSocket, &q->servAddr, q->servPort, q->tcp ? q->tcp->sock : mDNSNULL, mDNSNULL, mDNSfalse);
    e8836a82:	1a843883          	ld	a7,424(s0)
    e8836a86:	0006c797          	auipc	a5,0x6c
    e8836a8a:	2da78793          	addi	a5,a5,730 # e88a2d60 <mDNSInterface_Any>
    e8836a8e:	6394                	ld	a3,0(a5)
    e8836a90:	7602                	ld	a2,32(sp)
    e8836a92:	16043703          	ld	a4,352(s0)
    e8836a96:	19040793          	addi	a5,s0,400
    e8836a9a:	00088463          	beqz	a7,e8836aa2 <sendLLQRefresh+0x2ec>
    e8836a9e:	0088b883          	ld	a7,8(a7)
    e8836aa2:	1a445803          	lhu	a6,420(s0)
    e8836aa6:	e402                	sd	zero,8(sp)
    e8836aa8:	e002                	sd	zero,0(sp)
    e8836aaa:	85ce                	mv	a1,s3
    e8836aac:	854a                	mv	a0,s2
    e8836aae:	c05e00ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
    e8836ab2:	86aa                	mv	a3,a0
        if (err)
    e8836ab4:	d925                	beqz	a0,e8836a24 <sendLLQRefresh+0x26e>
            LogMsg("sendLLQRefresh: mDNSSendDNSMessage%s failed: %d", q->tcp ? " (TCP)" : "", err);
    e8836ab6:	1a843783          	ld	a5,424(s0)
    e8836aba:	00078617          	auipc	a2,0x78
    e8836abe:	f1660613          	addi	a2,a2,-234 # e88ae9d0 <__func__.9833+0xa38>
    e8836ac2:	e789                	bnez	a5,e8836acc <sendLLQRefresh+0x316>
    e8836ac4:	0008a617          	auipc	a2,0x8a
    e8836ac8:	7ac60613          	addi	a2,a2,1964 # e88c1270 <kHTTPServerClass+0x90>
    e8836acc:	4501                	li	a0,0
    e8836ace:	00078597          	auipc	a1,0x78
    e8836ad2:	13258593          	addi	a1,a1,306 # e88aec00 <__func__.9833+0xc68>
    e8836ad6:	9d7f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (q->tcp) { DisposeTCPConn(q->tcp); q->tcp = mDNSNULL; }
    e8836ada:	1a843503          	ld	a0,424(s0)
    e8836ade:	d139                	beqz	a0,e8836a24 <sendLLQRefresh+0x26e>
    e8836ae0:	c03fc0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8836ae4:	1a043423          	sd	zero,424(s0)
    e8836ae8:	bf35                	j	e8836a24 <sendLLQRefresh+0x26e>

00000000e8836aea <uDNS_DeregisterRecord>:
{
    e8836aea:	711d                	addi	sp,sp,-96
    e8836aec:	fc4e                	sd	s3,56(sp)
    LogInfo("uDNS_DeregisterRecord: Resource Record %s, state %d", ARDisplayString(m, rr), rr->state);
    e8836aee:	0009e997          	auipc	s3,0x9e
    e8836af2:	f8698993          	addi	s3,s3,-122 # e88d4a74 <mDNS_LoggingEnabled>
{
    e8836af6:	e8a2                	sd	s0,80(sp)
    e8836af8:	e4a6                	sd	s1,72(sp)
    e8836afa:	ec86                	sd	ra,88(sp)
    e8836afc:	e0ca                	sd	s2,64(sp)
    e8836afe:	f852                	sd	s4,48(sp)
    e8836b00:	f456                	sd	s5,40(sp)
    e8836b02:	f05a                	sd	s6,32(sp)
    e8836b04:	ec5e                	sd	s7,24(sp)
    e8836b06:	e862                	sd	s8,16(sp)
    LogInfo("uDNS_DeregisterRecord: Resource Record %s, state %d", ARDisplayString(m, rr), rr->state);
    e8836b08:	0009a783          	lw	a5,0(s3)
{
    e8836b0c:	84aa                	mv	s1,a0
    e8836b0e:	842e                	mv	s0,a1
    LogInfo("uDNS_DeregisterRecord: Resource Record %s, state %d", ARDisplayString(m, rr), rr->state);
    e8836b10:	c39d                	beqz	a5,e8836b36 <uDNS_DeregisterRecord+0x4c>
    e8836b12:	798c                	ld	a1,48(a1)
    e8836b14:	03b50613          	addi	a2,a0,59
    e8836b18:	00840513          	addi	a0,s0,8
    e8836b1c:	0591                	addi	a1,a1,4
    e8836b1e:	ef7df0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836b22:	862a                	mv	a2,a0
    e8836b24:	14c44683          	lbu	a3,332(s0)
    e8836b28:	00079597          	auipc	a1,0x79
    e8836b2c:	a9058593          	addi	a1,a1,-1392 # e88af5b8 <__func__.9833+0x1620>
    e8836b30:	450d                	li	a0,3
    e8836b32:	97bf80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    switch (rr->state)
    e8836b36:	14c44603          	lbu	a2,332(s0)
    e8836b3a:	479d                	li	a5,7
    e8836b3c:	00c7e863          	bltu	a5,a2,e8836b4c <uDNS_DeregisterRecord+0x62>
    e8836b40:	4785                	li	a5,1
    e8836b42:	00c797b3          	sll	a5,a5,a2
    e8836b46:	0ae7f793          	andi	a5,a5,174
    e8836b4a:	ebb9                	bnez	a5,e8836ba0 <uDNS_DeregisterRecord+0xb6>
        LogInfo("uDNS_DeregisterRecord: State %d for %##s type %s", rr->state, rr->resrec.name->c, DNSTypeName(rr->resrec.rrtype));
    e8836b4c:	0009a783          	lw	a5,0(s3)
    e8836b50:	c395                	beqz	a5,e8836b74 <uDNS_DeregisterRecord+0x8a>
    e8836b52:	7414                	ld	a3,40(s0)
    e8836b54:	00a45503          	lhu	a0,10(s0)
    e8836b58:	e432                	sd	a2,8(sp)
    e8836b5a:	e036                	sd	a3,0(sp)
    e8836b5c:	904df0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8836b60:	872a                	mv	a4,a0
    e8836b62:	f8c1468b          	ldd	a3,a2,(sp),0,4
    e8836b66:	00079597          	auipc	a1,0x79
    e8836b6a:	a8a58593          	addi	a1,a1,-1398 # e88af5f0 <__func__.9833+0x1658>
    e8836b6e:	450d                	li	a0,3
    e8836b70:	93df80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (rr->resrec.RecordType == kDNSRecordTypeDeregistering) CompleteDeregistration(m, rr);
    e8836b74:	00844703          	lbu	a4,8(s0)
    e8836b78:	4785                	li	a5,1
    e8836b7a:	00f71663          	bne	a4,a5,e8836b86 <uDNS_DeregisterRecord+0x9c>
    e8836b7e:	85a2                	mv	a1,s0
    e8836b80:	8526                	mv	a0,s1
    e8836b82:	f44ef0ef          	jal	ra,e88262c6 <CompleteDeregistration>
}
    e8836b86:	60e6                	ld	ra,88(sp)
    e8836b88:	6446                	ld	s0,80(sp)
    e8836b8a:	64a6                	ld	s1,72(sp)
    e8836b8c:	6906                	ld	s2,64(sp)
    e8836b8e:	79e2                	ld	s3,56(sp)
    e8836b90:	7a42                	ld	s4,48(sp)
    e8836b92:	7aa2                	ld	s5,40(sp)
    e8836b94:	7b02                	ld	s6,32(sp)
    e8836b96:	6be2                	ld	s7,24(sp)
    e8836b98:	6c42                	ld	s8,16(sp)
    e8836b9a:	4501                	li	a0,0
    e8836b9c:	6125                	addi	sp,sp,96
    e8836b9e:	8082                	ret
    if (rr->InFlightRData && rr->UpdateCallback)
    e8836ba0:	1f043783          	ld	a5,496(s0)
    e8836ba4:	c7a1                	beqz	a5,e8836bec <uDNS_DeregisterRecord+0x102>
    e8836ba6:	13843703          	ld	a4,312(s0)
    e8836baa:	c329                	beqz	a4,e8836bec <uDNS_DeregisterRecord+0x102>
        if (rr->InFlightRData != rr->resrec.rdata)
    e8836bac:	780c                	ld	a1,48(s0)
    e8836bae:	0009a703          	lw	a4,0(s3)
    e8836bb2:	12b78f63          	beq	a5,a1,e8836cf0 <uDNS_DeregisterRecord+0x206>
            LogInfo("uDNS_DeregisterRecord: Freeing InFlightRData for %s", ARDisplayString(m, rr));
    e8836bb6:	c305                	beqz	a4,e8836bd6 <uDNS_DeregisterRecord+0xec>
    e8836bb8:	03b48613          	addi	a2,s1,59
    e8836bbc:	0591                	addi	a1,a1,4
    e8836bbe:	00840513          	addi	a0,s0,8
    e8836bc2:	e53df0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836bc6:	862a                	mv	a2,a0
    e8836bc8:	00079597          	auipc	a1,0x79
    e8836bcc:	a6058593          	addi	a1,a1,-1440 # e88af628 <__func__.9833+0x1690>
    e8836bd0:	450d                	li	a0,3
    e8836bd2:	8dbf80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            rr->UpdateCallback(m, rr, rr->InFlightRData, rr->InFlightRDLen);
    e8836bd6:	13843783          	ld	a5,312(s0)
    e8836bda:	1e245683          	lhu	a3,482(s0)
    e8836bde:	1f043603          	ld	a2,496(s0)
    e8836be2:	85a2                	mv	a1,s0
    e8836be4:	8526                	mv	a0,s1
    e8836be6:	9782                	jalr	a5
            rr->InFlightRData = mDNSNULL;
    e8836be8:	1e043823          	sd	zero,496(s0)
    if (rr->QueuedRData && rr->UpdateCallback)
    e8836bec:	1f843783          	ld	a5,504(s0)
    e8836bf0:	c79d                	beqz	a5,e8836c1e <uDNS_DeregisterRecord+0x134>
    e8836bf2:	13843703          	ld	a4,312(s0)
    e8836bf6:	c705                	beqz	a4,e8836c1e <uDNS_DeregisterRecord+0x134>
        if (rr->QueuedRData == rr->resrec.rdata)
    e8836bf8:	780c                	ld	a1,48(s0)
    e8836bfa:	10b79e63          	bne	a5,a1,e8836d16 <uDNS_DeregisterRecord+0x22c>
            LogMsg("uDNS_DeregisterRecord: ERROR!! QueuedRData same as rdata for %s", ARDisplayString(m, rr));
    e8836bfe:	03b48613          	addi	a2,s1,59
    e8836c02:	00478593          	addi	a1,a5,4
    e8836c06:	00840513          	addi	a0,s0,8
    e8836c0a:	e0bdf0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836c0e:	862a                	mv	a2,a0
    e8836c10:	00079597          	auipc	a1,0x79
    e8836c14:	a9058593          	addi	a1,a1,-1392 # e88af6a0 <__func__.9833+0x1708>
    e8836c18:	4501                	li	a0,0
    e8836c1a:	893f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!mDNSOpaque16IsZero(rr->updateid))
    e8836c1e:	15645783          	lhu	a5,342(s0)
    e8836c22:	cbb9                	beqz	a5,e8836c78 <uDNS_DeregisterRecord+0x18e>
        for (anchorRR = m->ResourceRecords; anchorRR; anchorRR = anchorRR->next)
    e8836c24:	678d                	lui	a5,0x3
    e8836c26:	97a6                	add	a5,a5,s1
    e8836c28:	1b87b903          	ld	s2,440(a5) # 31b8 <memcmp-0xe87fce48>
        mDNSBool found = mDNSfalse;
    e8836c2c:	4a01                	li	s4,0
            if (AuthRecord_uDNS(rr) && mDNSSameOpaque16(anchorRR->updateid, rr->updateid) && anchorRR->tcp)
    e8836c2e:	0006cb17          	auipc	s6,0x6c
    e8836c32:	132b0b13          	addi	s6,s6,306 # e88a2d60 <mDNSInterface_Any>
                    LogMsg("uDNS_DeregisterRecord: ERROR: Another anchorRR %s found", ARDisplayString(m, anchorRR));
    e8836c36:	03b48a93          	addi	s5,s1,59
    e8836c3a:	00079b97          	auipc	s7,0x79
    e8836c3e:	b16b8b93          	addi	s7,s7,-1258 # e88af750 <__func__.9833+0x17b8>
                LogInfo("uDNS_DeregisterRecord: Found Anchor RR %s terminated", ARDisplayString(m, anchorRR));
    e8836c42:	00079c17          	auipc	s8,0x79
    e8836c46:	ad6c0c13          	addi	s8,s8,-1322 # e88af718 <__func__.9833+0x1780>
        for (anchorRR = m->ResourceRecords; anchorRR; anchorRR = anchorRR->next)
    e8836c4a:	10091463          	bnez	s2,e8836d52 <uDNS_DeregisterRecord+0x268>
        if (!found) LogInfo("uDNSDeregisterRecord: Cannot find the anchor Resource Record for %s, not an error", ARDisplayString(m, rr));
    e8836c4e:	020a1563          	bnez	s4,e8836c78 <uDNS_DeregisterRecord+0x18e>
    e8836c52:	0009a783          	lw	a5,0(s3)
    e8836c56:	c38d                	beqz	a5,e8836c78 <uDNS_DeregisterRecord+0x18e>
    e8836c58:	780c                	ld	a1,48(s0)
    e8836c5a:	03b48613          	addi	a2,s1,59
    e8836c5e:	00840513          	addi	a0,s0,8
    e8836c62:	0591                	addi	a1,a1,4
    e8836c64:	db1df0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836c68:	862a                	mv	a2,a0
    e8836c6a:	00079597          	auipc	a1,0x79
    e8836c6e:	b1e58593          	addi	a1,a1,-1250 # e88af788 <__func__.9833+0x17f0>
    e8836c72:	450d                	li	a0,3
    e8836c74:	839f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e8836c78:	0009e917          	auipc	s2,0x9e
    e8836c7c:	e0890913          	addi	s2,s2,-504 # e88d4a80 <mDNSPlatformOneSecond>
    e8836c80:	00092703          	lw	a4,0(s2)
    rr->state          = regState_DeregPending;
    e8836c84:	478d                	li	a5,3
    e8836c86:	14f40623          	sb	a5,332(s0)
    rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e8836c8a:	10e42823          	sw	a4,272(s0)
    rr->LastAPTime     = m->timenow - INIT_RECORD_REG_INTERVAL;
    e8836c8e:	2404a783          	lw	a5,576(s1)
    info = GetAuthInfoForName_internal(m, rr->resrec.name);
    e8836c92:	740c                	ld	a1,40(s0)
    e8836c94:	8526                	mv	a0,s1
    rr->LastAPTime     = m->timenow - INIT_RECORD_REG_INTERVAL;
    e8836c96:	9f99                	subw	a5,a5,a4
    e8836c98:	10f42a23          	sw	a5,276(s0)
    info = GetAuthInfoForName_internal(m, rr->resrec.name);
    e8836c9c:	ff0fb0ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    e8836ca0:	89aa                	mv	s3,a0
    if (IsRecordMergeable(m, rr, m->timenow + MERGE_DELAY_TIME))
    e8836ca2:	2404a603          	lw	a2,576(s1)
    e8836ca6:	00092783          	lw	a5,0(s2)
    e8836caa:	85a2                	mv	a1,s0
    e8836cac:	8526                	mv	a0,s1
    e8836cae:	9e3d                	addw	a2,a2,a5
    e8836cb0:	8f7fb0ef          	jal	ra,e88325a6 <IsRecordMergeable>
    e8836cb4:	cd19                	beqz	a0,e8836cd2 <uDNS_DeregisterRecord+0x1e8>
        if (info && info->deltime) rr->LastAPTime += (2 * MERGE_DELAY_TIME);
    e8836cb6:	11442703          	lw	a4,276(s0)
    e8836cba:	00092783          	lw	a5,0(s2)
    e8836cbe:	00098763          	beqz	s3,e8836ccc <uDNS_DeregisterRecord+0x1e2>
    e8836cc2:	0089a683          	lw	a3,8(s3)
    e8836cc6:	c299                	beqz	a3,e8836ccc <uDNS_DeregisterRecord+0x1e2>
    e8836cc8:	0017979b          	slliw	a5,a5,0x1
        else rr->LastAPTime += MERGE_DELAY_TIME;
    e8836ccc:	9fb9                	addw	a5,a5,a4
    e8836cce:	10f42a23          	sw	a5,276(s0)
    if (m->NextuDNSEvent - (rr->LastAPTime + rr->ThisAPInterval) >= 0)
    e8836cd2:	11042703          	lw	a4,272(s0)
    e8836cd6:	11442783          	lw	a5,276(s0)
    e8836cda:	9fb9                	addw	a5,a5,a4
    e8836cdc:	670d                	lui	a4,0x3
    e8836cde:	94ba                	add	s1,s1,a4
    e8836ce0:	1f84a703          	lw	a4,504(s1)
    e8836ce4:	9f1d                	subw	a4,a4,a5
    e8836ce6:	ea0740e3          	bltz	a4,e8836b86 <uDNS_DeregisterRecord+0x9c>
        m->NextuDNSEvent = (rr->LastAPTime + rr->ThisAPInterval);
    e8836cea:	1ef4ac23          	sw	a5,504(s1)
    e8836cee:	bd61                	j	e8836b86 <uDNS_DeregisterRecord+0x9c>
            LogInfo("uDNS_DeregisterRecord: InFlightRData same as rdata for %s", ARDisplayString(m, rr));
    e8836cf0:	ee070ee3          	beqz	a4,e8836bec <uDNS_DeregisterRecord+0x102>
    e8836cf4:	03b48613          	addi	a2,s1,59
    e8836cf8:	00478593          	addi	a1,a5,4
    e8836cfc:	00840513          	addi	a0,s0,8
    e8836d00:	d15df0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836d04:	862a                	mv	a2,a0
    e8836d06:	00079597          	auipc	a1,0x79
    e8836d0a:	95a58593          	addi	a1,a1,-1702 # e88af660 <__func__.9833+0x16c8>
    e8836d0e:	450d                	li	a0,3
    e8836d10:	f9cf80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8836d14:	bde1                	j	e8836bec <uDNS_DeregisterRecord+0x102>
            LogInfo("uDNS_DeregisterRecord: Freeing QueuedRData for %s", ARDisplayString(m, rr));
    e8836d16:	0009a783          	lw	a5,0(s3)
    e8836d1a:	c385                	beqz	a5,e8836d3a <uDNS_DeregisterRecord+0x250>
    e8836d1c:	03b48613          	addi	a2,s1,59
    e8836d20:	0591                	addi	a1,a1,4
    e8836d22:	00840513          	addi	a0,s0,8
    e8836d26:	cefdf0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836d2a:	862a                	mv	a2,a0
    e8836d2c:	00079597          	auipc	a1,0x79
    e8836d30:	9b458593          	addi	a1,a1,-1612 # e88af6e0 <__func__.9833+0x1748>
    e8836d34:	450d                	li	a0,3
    e8836d36:	f76f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            rr->UpdateCallback(m, rr, rr->QueuedRData, rr->QueuedRDLen);
    e8836d3a:	13843783          	ld	a5,312(s0)
    e8836d3e:	1e445683          	lhu	a3,484(s0)
    e8836d42:	1f843603          	ld	a2,504(s0)
    e8836d46:	85a2                	mv	a1,s0
    e8836d48:	8526                	mv	a0,s1
    e8836d4a:	9782                	jalr	a5
            rr->QueuedRData = mDNSNULL;
    e8836d4c:	1e043c23          	sd	zero,504(s0)
    e8836d50:	b5f9                	j	e8836c1e <uDNS_DeregisterRecord+0x134>
            if (AuthRecord_uDNS(rr) && mDNSSameOpaque16(anchorRR->updateid, rr->updateid) && anchorRR->tcp)
    e8836d52:	7018                	ld	a4,32(s0)
    e8836d54:	000b3783          	ld	a5,0(s6)
    e8836d58:	06f71863          	bne	a4,a5,e8836dc8 <uDNS_DeregisterRecord+0x2de>
    e8836d5c:	07a44783          	lbu	a5,122(s0)
    e8836d60:	e7a5                	bnez	a5,e8836dc8 <uDNS_DeregisterRecord+0x2de>
    e8836d62:	7408                	ld	a0,40(s0)
    e8836d64:	b3edc0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e8836d68:	e125                	bnez	a0,e8836dc8 <uDNS_DeregisterRecord+0x2de>
    e8836d6a:	15695703          	lhu	a4,342(s2)
    e8836d6e:	15645783          	lhu	a5,342(s0)
    e8836d72:	04f71b63          	bne	a4,a5,e8836dc8 <uDNS_DeregisterRecord+0x2de>
    e8836d76:	17093783          	ld	a5,368(s2)
    e8836d7a:	c7b9                	beqz	a5,e8836dc8 <uDNS_DeregisterRecord+0x2de>
                LogInfo("uDNS_DeregisterRecord: Found Anchor RR %s terminated", ARDisplayString(m, anchorRR));
    e8836d7c:	0009a783          	lw	a5,0(s3)
    e8836d80:	cf91                	beqz	a5,e8836d9c <uDNS_DeregisterRecord+0x2b2>
    e8836d82:	03093583          	ld	a1,48(s2)
    e8836d86:	8656                	mv	a2,s5
    e8836d88:	00890513          	addi	a0,s2,8
    e8836d8c:	0591                	addi	a1,a1,4
    e8836d8e:	c87df0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836d92:	862a                	mv	a2,a0
    e8836d94:	85e2                	mv	a1,s8
    e8836d96:	450d                	li	a0,3
    e8836d98:	f14f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (found)
    e8836d9c:	000a0f63          	beqz	s4,e8836dba <uDNS_DeregisterRecord+0x2d0>
                    LogMsg("uDNS_DeregisterRecord: ERROR: Another anchorRR %s found", ARDisplayString(m, anchorRR));
    e8836da0:	03093583          	ld	a1,48(s2)
    e8836da4:	8656                	mv	a2,s5
    e8836da6:	00890513          	addi	a0,s2,8
    e8836daa:	0591                	addi	a1,a1,4
    e8836dac:	c69df0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8836db0:	862a                	mv	a2,a0
    e8836db2:	85de                	mv	a1,s7
    e8836db4:	4501                	li	a0,0
    e8836db6:	ef6f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                DisposeTCPConn(anchorRR->tcp);
    e8836dba:	17093503          	ld	a0,368(s2)
                found = mDNStrue;
    e8836dbe:	4a05                	li	s4,1
                DisposeTCPConn(anchorRR->tcp);
    e8836dc0:	923fc0ef          	jal	ra,e88336e2 <DisposeTCPConn>
                anchorRR->tcp = mDNSNULL;
    e8836dc4:	16093823          	sd	zero,368(s2)
        for (anchorRR = m->ResourceRecords; anchorRR; anchorRR = anchorRR->next)
    e8836dc8:	00093903          	ld	s2,0(s2)
    e8836dcc:	bdbd                	j	e8836c4a <uDNS_DeregisterRecord+0x160>

00000000e8836dce <RecordRegistrationGotZoneData>:
    if (!zoneData) { LogMsg("ERROR: RecordRegistrationGotZoneData invoked with NULL result and no error"); return; }
    e8836dce:	ea01                	bnez	a2,e8836dde <RecordRegistrationGotZoneData+0x10>
    e8836dd0:	00076597          	auipc	a1,0x76
    e8836dd4:	20858593          	addi	a1,a1,520 # e88acfd8 <kOn.10632+0x1090>
    e8836dd8:	4501                	li	a0,0
    e8836dda:	ed2f806f          	j	e882f4ac <LogMsgWithLevel>
{
    e8836dde:	715d                	addi	sp,sp,-80
    e8836de0:	fc26                	sd	s1,56(sp)
    e8836de2:	f84a                	sd	s2,48(sp)
    e8836de4:	f052                	sd	s4,32(sp)
    e8836de6:	e486                	sd	ra,72(sp)
    e8836de8:	e0a2                	sd	s0,64(sp)
    e8836dea:	f44e                	sd	s3,40(sp)
    e8836dec:	ec56                	sd	s5,24(sp)
    newRR = (AuthRecord*)zoneData->ZoneDataContext;
    e8836dee:	33863403          	ld	s0,824(a2)
    e8836df2:	8932                	mv	s2,a2
    e8836df4:	8a2e                	mv	s4,a1
    if (newRR->nta != zoneData)
    e8836df6:	16843603          	ld	a2,360(s0)
    e8836dfa:	84aa                	mv	s1,a0
    e8836dfc:	e432                	sd	a2,8(sp)
    e8836dfe:	03260363          	beq	a2,s2,e8836e24 <RecordRegistrationGotZoneData+0x56>
        LogMsg("RecordRegistrationGotZoneData: nta (%p) != zoneData (%p)  %##s (%s)", newRR->nta, zoneData, newRR->resrec.name->c, DNSTypeName(newRR->resrec.rrtype));
    e8836e02:	7418                	ld	a4,40(s0)
    e8836e04:	00a45503          	lhu	a0,10(s0)
    e8836e08:	e03a                	sd	a4,0(sp)
    e8836e0a:	e57de0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8836e0e:	87aa                	mv	a5,a0
    e8836e10:	6702                	ld	a4,0(sp)
    e8836e12:	6622                	ld	a2,8(sp)
    e8836e14:	86ca                	mv	a3,s2
    e8836e16:	00076597          	auipc	a1,0x76
    e8836e1a:	21258593          	addi	a1,a1,530 # e88ad028 <kOn.10632+0x10e0>
    e8836e1e:	4501                	li	a0,0
    e8836e20:	e8cf80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (m->mDNS_busy != m->mDNS_reentrancy)
    e8836e24:	5890                	lw	a2,48(s1)
    e8836e26:	58d4                	lw	a3,52(s1)
    e8836e28:	00d60963          	beq	a2,a3,e8836e3a <RecordRegistrationGotZoneData+0x6c>
        LogMsg("RecordRegistrationGotZoneData: mDNS_busy (%ld) != mDNS_reentrancy (%ld)", m->mDNS_busy, m->mDNS_reentrancy);
    e8836e2c:	00076597          	auipc	a1,0x76
    e8836e30:	24458593          	addi	a1,a1,580 # e88ad070 <kOn.10632+0x1128>
    e8836e34:	4501                	li	a0,0
    e8836e36:	e76f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    for (ptr = m->ResourceRecords; ptr; ptr = ptr->next) if (ptr == newRR) break;
    e8836e3a:	678d                	lui	a5,0x3
    e8836e3c:	97a6                	add	a5,a5,s1
    e8836e3e:	1b87b983          	ld	s3,440(a5) # 31b8 <memcmp-0xe87fce48>
    e8836e42:	00099a63          	bnez	s3,e8836e56 <RecordRegistrationGotZoneData+0x88>
        LogMsg("RecordRegistrationGotZoneData - RR no longer in list.  Discarding.");
    e8836e46:	00076597          	auipc	a1,0x76
    e8836e4a:	60a58593          	addi	a1,a1,1546 # e88ad450 <kOn.10632+0x1508>
    e8836e4e:	4501                	li	a0,0
    e8836e50:	e5cf80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8836e54:	a1fd                	j	e8837342 <RecordRegistrationGotZoneData+0x574>
    for (ptr = m->ResourceRecords; ptr; ptr = ptr->next) if (ptr == newRR) break;
    e8836e56:	4c898863          	beq	s3,s0,e8837326 <RecordRegistrationGotZoneData+0x558>
    e8836e5a:	0009b983          	ld	s3,0(s3)
    e8836e5e:	b7d5                	j	e8836e42 <RecordRegistrationGotZoneData+0x74>
    if (newRR->resrec.rrclass != zoneData->ZoneClass)
    e8836e60:	00c9d603          	lhu	a2,12(s3)
    e8836e64:	21095683          	lhu	a3,528(s2)
    e8836e68:	02d60963          	beq	a2,a3,e8836e9a <RecordRegistrationGotZoneData+0xcc>
        LogMsg("ERROR: New resource record's class (%d) does not match zone class (%d)", newRR->resrec.rrclass, zoneData->ZoneClass);
    e8836e6c:	00076597          	auipc	a1,0x76
    e8836e70:	27458593          	addi	a1,a1,628 # e88ad0e0 <kOn.10632+0x1198>
    e8836e74:	4501                	li	a0,0
    e8836e76:	e36f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        CancelGetZoneData(m, newRR->nta);
    e8836e7a:	1689b583          	ld	a1,360(s3)
    e8836e7e:	8526                	mv	a0,s1
    e8836e80:	9b5ea0ef          	jal	ra,e8821834 <CancelGetZoneData>
        newRR->nta = mDNSNULL;
    e8836e84:	1609b423          	sd	zero,360(s3)
}
    e8836e88:	60a6                	ld	ra,72(sp)
    e8836e8a:	6406                	ld	s0,64(sp)
    e8836e8c:	74e2                	ld	s1,56(sp)
    e8836e8e:	7942                	ld	s2,48(sp)
    e8836e90:	79a2                	ld	s3,40(sp)
    e8836e92:	7a02                	ld	s4,32(sp)
    e8836e94:	6ae2                	ld	s5,24(sp)
    e8836e96:	6161                	addi	sp,sp,80
    e8836e98:	8082                	ret
    if (zoneData->ZoneName.c[0] == 0)
    e8836e9a:	11094783          	lbu	a5,272(s2)
    e8836e9e:	e38d                	bnez	a5,e8836ec0 <RecordRegistrationGotZoneData+0xf2>
        LogInfo("RecordRegistrationGotZoneData: No name server found claiming responsibility for \"%##s\"!", newRR->resrec.name->c);
    e8836ea0:	0009e797          	auipc	a5,0x9e
    e8836ea4:	bd478793          	addi	a5,a5,-1068 # e88d4a74 <mDNS_LoggingEnabled>
    e8836ea8:	439c                	lw	a5,0(a5)
    e8836eaa:	48078c63          	beqz	a5,e8837342 <RecordRegistrationGotZoneData+0x574>
    e8836eae:	7410                	ld	a2,40(s0)
    e8836eb0:	00076597          	auipc	a1,0x76
    e8836eb4:	27858593          	addi	a1,a1,632 # e88ad128 <kOn.10632+0x11e0>
        LogInfo("RecordRegistrationGotZoneData: No _dns-update._udp service found for \"%##s\"!", newRR->resrec.name->c);
    e8836eb8:	450d                	li	a0,3
    e8836eba:	df2f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        CancelGetZoneData(m, newRR->nta);
    e8836ebe:	a151                	j	e8837342 <RecordRegistrationGotZoneData+0x574>
    c1 = CountLabels(newRR->resrec.name);
    e8836ec0:	0289b503          	ld	a0,40(s3)
    c2 = CountLabels(&zoneData->ZoneName);
    e8836ec4:	11090a13          	addi	s4,s2,272
    c1 = CountLabels(newRR->resrec.name);
    e8836ec8:	b7edc0ef          	jal	ra,e8813246 <CountLabels>
    e8836ecc:	8aaa                	mv	s5,a0
    c2 = CountLabels(&zoneData->ZoneName);
    e8836ece:	8552                	mv	a0,s4
    e8836ed0:	b76dc0ef          	jal	ra,e8813246 <CountLabels>
    if (c2 > c1)
    e8836ed4:	0289b683          	ld	a3,40(s3)
    e8836ed8:	00aadb63          	bge	s5,a0,e8836eee <RecordRegistrationGotZoneData+0x120>
        LogMsg("RecordRegistrationGotZoneData: Zone \"%##s\" is longer than \"%##s\"", zoneData->ZoneName.c, newRR->resrec.name->c);
    e8836edc:	8652                	mv	a2,s4
    e8836ede:	00076597          	auipc	a1,0x76
    e8836ee2:	2a258593          	addi	a1,a1,674 # e88ad180 <kOn.10632+0x1238>
    e8836ee6:	4501                	li	a0,0
    e8836ee8:	dc4f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        CancelGetZoneData(m, newRR->nta);
    e8836eec:	b779                	j	e8836e7a <RecordRegistrationGotZoneData+0xac>
    newRR->zone = SkipLeadingLabels(newRR->resrec.name, c1-c2);
    e8836eee:	40aa85bb          	subw	a1,s5,a0
    e8836ef2:	8536                	mv	a0,a3
    e8836ef4:	b66dc0ef          	jal	ra,e881325a <SkipLeadingLabels>
    e8836ef8:	16a9b023          	sd	a0,352(s3)
    if (!SameDomainName(newRR->zone, &zoneData->ZoneName))
    e8836efc:	85d2                	mv	a1,s4
    e8836efe:	94cdc0ef          	jal	ra,e881304a <SameDomainName>
    e8836f02:	ed09                	bnez	a0,e8836f1c <RecordRegistrationGotZoneData+0x14e>
        LogMsg("RecordRegistrationGotZoneData: Zone \"%##s\" does not match \"%##s\" for \"%##s\"", newRR->zone->c, zoneData->ZoneName.c, newRR->resrec.name->c);
    e8836f04:	0289b703          	ld	a4,40(s3)
    e8836f08:	1609b603          	ld	a2,352(s3)
    e8836f0c:	86d2                	mv	a3,s4
    e8836f0e:	00076597          	auipc	a1,0x76
    e8836f12:	2ba58593          	addi	a1,a1,698 # e88ad1c8 <kOn.10632+0x1280>
    e8836f16:	d96f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8836f1a:	b785                	j	e8836e7a <RecordRegistrationGotZoneData+0xac>
    if (mDNSIPPortIsZero(zoneData->Port) || mDNSAddressIsZero(&zoneData->Addr) || !zoneData->Host.c[0])
    e8836f1c:	31295783          	lhu	a5,786(s2)
    e8836f20:	cf81                	beqz	a5,e8836f38 <RecordRegistrationGotZoneData+0x16a>
    e8836f22:	31492783          	lw	a5,788(s2)
    e8836f26:	4711                	li	a4,4
    e8836f28:	02e79563          	bne	a5,a4,e8836f52 <RecordRegistrationGotZoneData+0x184>
    e8836f2c:	31892783          	lw	a5,792(s2)
    e8836f30:	c781                	beqz	a5,e8836f38 <RecordRegistrationGotZoneData+0x16a>
    e8836f32:	21294783          	lbu	a5,530(s2)
    e8836f36:	ef95                	bnez	a5,e8836f72 <RecordRegistrationGotZoneData+0x1a4>
        LogInfo("RecordRegistrationGotZoneData: No _dns-update._udp service found for \"%##s\"!", newRR->resrec.name->c);
    e8836f38:	0009e797          	auipc	a5,0x9e
    e8836f3c:	b3c78793          	addi	a5,a5,-1220 # e88d4a74 <mDNS_LoggingEnabled>
    e8836f40:	439c                	lw	a5,0(a5)
    e8836f42:	40078063          	beqz	a5,e8837342 <RecordRegistrationGotZoneData+0x574>
    e8836f46:	7410                	ld	a2,40(s0)
    e8836f48:	00076597          	auipc	a1,0x76
    e8836f4c:	2d058593          	addi	a1,a1,720 # e88ad218 <kOn.10632+0x12d0>
    e8836f50:	b7a5                	j	e8836eb8 <RecordRegistrationGotZoneData+0xea>
    if (mDNSIPPortIsZero(zoneData->Port) || mDNSAddressIsZero(&zoneData->Addr) || !zoneData->Host.c[0])
    e8836f52:	4719                	li	a4,6
    e8836f54:	fce79fe3          	bne	a5,a4,e8836f32 <RecordRegistrationGotZoneData+0x164>
    e8836f58:	31c92703          	lw	a4,796(s2)
    e8836f5c:	31892783          	lw	a5,792(s2)
    e8836f60:	8fd9                	or	a5,a5,a4
    e8836f62:	32092703          	lw	a4,800(s2)
    e8836f66:	8fd9                	or	a5,a5,a4
    e8836f68:	32492703          	lw	a4,804(s2)
    e8836f6c:	8fd9                	or	a5,a5,a4
    e8836f6e:	2781                	sext.w	a5,a5
    e8836f70:	b7c1                	j	e8836f30 <RecordRegistrationGotZoneData+0x162>
    newRR->Private      = zoneData->ZonePrivate;
    e8836f72:	32894783          	lbu	a5,808(s2)
    if (newRR->state == regState_DeregPending)
    e8836f76:	14c44703          	lbu	a4,332(s0)
    newRR->Private      = zoneData->ZonePrivate;
    e8836f7a:	14f40a23          	sb	a5,340(s0)
    if (newRR->state == regState_DeregPending)
    e8836f7e:	478d                	li	a5,3
    e8836f80:	02f71c63          	bne	a4,a5,e8836fb8 <RecordRegistrationGotZoneData+0x1ea>
        mDNS_Lock(m);
    e8836f84:	00077597          	auipc	a1,0x77
    e8836f88:	fbc58593          	addi	a1,a1,-68 # e88adf40 <__func__.9638>
    e8836f8c:	8526                	mv	a0,s1
    e8836f8e:	a75de0ef          	jal	ra,e8815a02 <mDNS_Lock_>
        uDNS_DeregisterRecord(m, newRR);
    e8836f92:	85a2                	mv	a1,s0
    e8836f94:	8526                	mv	a0,s1
    e8836f96:	b55ff0ef          	jal	ra,e8836aea <uDNS_DeregisterRecord>
}
    e8836f9a:	6406                	ld	s0,64(sp)
    e8836f9c:	60a6                	ld	ra,72(sp)
    e8836f9e:	7942                	ld	s2,48(sp)
    e8836fa0:	79a2                	ld	s3,40(sp)
    e8836fa2:	7a02                	ld	s4,32(sp)
    e8836fa4:	6ae2                	ld	s5,24(sp)
    mDNS_Unlock(m);
    e8836fa6:	8526                	mv	a0,s1
}
    e8836fa8:	74e2                	ld	s1,56(sp)
    mDNS_Unlock(m);
    e8836faa:	00077597          	auipc	a1,0x77
    e8836fae:	f9658593          	addi	a1,a1,-106 # e88adf40 <__func__.9638>
}
    e8836fb2:	6161                	addi	sp,sp,80
    mDNS_Unlock(m);
    e8836fb4:	b19de06f          	j	e8815acc <mDNS_Unlock_>
    if (newRR->resrec.rrtype == kDNSType_SRV)
    e8836fb8:	00a45903          	lhu	s2,10(s0)
    e8836fbc:	02100793          	li	a5,33
    e8836fc0:	18f91763          	bne	s2,a5,e883714e <RecordRegistrationGotZoneData+0x380>
        mDNS_Lock(m);
    e8836fc4:	00077597          	auipc	a1,0x77
    e8836fc8:	f7c58593          	addi	a1,a1,-132 # e88adf40 <__func__.9638>
    e8836fcc:	8526                	mv	a0,s1
    e8836fce:	a35de0ef          	jal	ra,e8815a02 <mDNS_Lock_>
        target = GetServiceTarget(m, newRR);
    e8836fd2:	85a2                	mv	a1,s0
    e8836fd4:	8526                	mv	a0,s1
    e8836fd6:	d1cfd0ef          	jal	ra,e88344f2 <GetServiceTarget>
    e8836fda:	89aa                	mv	s3,a0
        mDNS_Unlock(m);
    e8836fdc:	00077597          	auipc	a1,0x77
    e8836fe0:	f6458593          	addi	a1,a1,-156 # e88adf40 <__func__.9638>
    e8836fe4:	8526                	mv	a0,s1
    e8836fe6:	ae7de0ef          	jal	ra,e8815acc <mDNS_Unlock_>
        if (!target || target->c[0] == 0)
    e8836fea:	00a45683          	lhu	a3,10(s0)
    e8836fee:	00098563          	beqz	s3,e8836ff8 <RecordRegistrationGotZoneData+0x22a>
    e8836ff2:	0009c783          	lbu	a5,0(s3)
    e8836ff6:	ebd1                	bnez	a5,e883708a <RecordRegistrationGotZoneData+0x2bc>
            domainname *t = GetRRDomainNameTarget(&newRR->resrec);
    e8836ff8:	ffe6871b          	addiw	a4,a3,-2
    e8836ffc:	3c07378b          	extu	a5,a4,15,0
    e8837000:	02500713          	li	a4,37
    e8837004:	04f76663          	bltu	a4,a5,e8837050 <RecordRegistrationGotZoneData+0x282>
    e8837008:	4705                	li	a4,1
    e883700a:	1716                	slli	a4,a4,0x25
    e883700c:	40970713          	addi	a4,a4,1033 # 3409 <memcmp-0xe87fcbf7>
    e8837010:	00f75733          	srl	a4,a4,a5
    e8837014:	0007370b          	extu	a4,a4,0,0
    e8837018:	cf05                	beqz	a4,e8837050 <RecordRegistrationGotZoneData+0x282>
    e883701a:	03043903          	ld	s2,48(s0)
    e883701e:	0911                	addi	s2,s2,4
            LogInfo("RecordRegistrationGotZoneData - no target for %##s", newRR->resrec.name->c);
    e8837020:	0009e797          	auipc	a5,0x9e
    e8837024:	a5478793          	addi	a5,a5,-1452 # e88d4a74 <mDNS_LoggingEnabled>
    e8837028:	439c                	lw	a5,0(a5)
    e883702a:	cb89                	beqz	a5,e883703c <RecordRegistrationGotZoneData+0x26e>
    e883702c:	7410                	ld	a2,40(s0)
    e883702e:	00076597          	auipc	a1,0x76
    e8837032:	23a58593          	addi	a1,a1,570 # e88ad268 <kOn.10632+0x1320>
    e8837036:	450d                	li	a0,3
            LogMsg("RecordRegistrationGotZoneData: ERROR!! AutoTunnel has Target_AutoHostAndNATMAP for %s", ARDisplayString(m, newRR));
    e8837038:	c74f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (t) t->c[0] = 0;
    e883703c:	00090463          	beqz	s2,e8837044 <RecordRegistrationGotZoneData+0x276>
    e8837040:	00090023          	sb	zero,0(s2)
            newRR->state = regState_NoTarget;
    e8837044:	47a1                	li	a5,8
            newRR->resrec.rdlength = newRR->resrec.rdestimate = 0;
    e8837046:	00042a23          	sw	zero,20(s0)
            newRR->state = regState_NoTarget;
    e883704a:	14f40623          	sb	a5,332(s0)
            CancelGetZoneData(m, newRR->nta);
    e883704e:	acd5                	j	e8837342 <RecordRegistrationGotZoneData+0x574>
            domainname *t = GetRRDomainNameTarget(&newRR->resrec);
    e8837050:	0006871b          	sext.w	a4,a3
    e8837054:	02400793          	li	a5,36
    e8837058:	4901                	li	s2,0
    e883705a:	fce7e3e3          	bltu	a5,a4,e8837020 <RecordRegistrationGotZoneData+0x252>
    e883705e:	002007b7          	lui	a5,0x200
    e8837062:	04978793          	addi	a5,a5,73 # 200049 <memcmp-0xe85fffb7>
    e8837066:	07be                	slli	a5,a5,0xf
    e8837068:	00d7d7b3          	srl	a5,a5,a3
    e883706c:	0007b78b          	extu	a5,a5,0,0
    e8837070:	c789                	beqz	a5,e883707a <RecordRegistrationGotZoneData+0x2ac>
    e8837072:	03043903          	ld	s2,48(s0)
    e8837076:	0919                	addi	s2,s2,6
    e8837078:	b765                	j	e8837020 <RecordRegistrationGotZoneData+0x252>
    e883707a:	02100793          	li	a5,33
    e883707e:	faf711e3          	bne	a4,a5,e8837020 <RecordRegistrationGotZoneData+0x252>
    e8837082:	03043903          	ld	s2,48(s0)
    e8837086:	0929                	addi	s2,s2,10
    e8837088:	bf61                	j	e8837020 <RecordRegistrationGotZoneData+0x252>
    if (newRR->resrec.rrtype == kDNSType_SRV && !mDNSIPPortIsZero(newRR->resrec.rdata->u.srv.port) &&
    e883708a:	0d269263          	bne	a3,s2,e883714e <RecordRegistrationGotZoneData+0x380>
    e883708e:	781c                	ld	a5,48(s0)
    e8837090:	0087d783          	lhu	a5,8(a5)
    e8837094:	cfcd                	beqz	a5,e883714e <RecordRegistrationGotZoneData+0x380>
        mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4) && newRR->nta && !mDNSAddrIsRFC1918(&newRR->nta->Addr) &&
    e8837096:	650d                	lui	a0,0x3
    e8837098:	22850513          	addi	a0,a0,552 # 3228 <memcmp-0xe87fcdd8>
    e883709c:	9526                	add	a0,a0,s1
    e883709e:	d5ddb0ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    if (newRR->resrec.rrtype == kDNSType_SRV && !mDNSIPPortIsZero(newRR->resrec.rdata->u.srv.port) &&
    e88370a2:	c555                	beqz	a0,e883714e <RecordRegistrationGotZoneData+0x380>
        mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4) && newRR->nta && !mDNSAddrIsRFC1918(&newRR->nta->Addr) &&
    e88370a4:	16843503          	ld	a0,360(s0)
    e88370a8:	c15d                	beqz	a0,e883714e <RecordRegistrationGotZoneData+0x380>
    e88370aa:	31452703          	lw	a4,788(a0)
    e88370ae:	4791                	li	a5,4
    e88370b0:	08f70a63          	beq	a4,a5,e8837144 <RecordRegistrationGotZoneData+0x376>
        newRR->AutoTarget == Target_AutoHostAndNATMAP)
    e88370b4:	07844983          	lbu	s3,120(s0)
        mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4) && newRR->nta && !mDNSAddrIsRFC1918(&newRR->nta->Addr) &&
    e88370b8:	4789                	li	a5,2
    e88370ba:	08f99a63          	bne	s3,a5,e883714e <RecordRegistrationGotZoneData+0x380>
        AuthInfo = GetAuthInfoForName(m, newRR->resrec.name);
    e88370be:	740c                	ld	a1,40(s0)
    e88370c0:	8526                	mv	a0,s1
    e88370c2:	de0fb0ef          	jal	ra,e88326a2 <GetAuthInfoForName>
        if (AuthInfo && AuthInfo->AutoTunnel)
    e88370c6:	10050b63          	beqz	a0,e88371dc <RecordRegistrationGotZoneData+0x40e>
    e88370ca:	00c54783          	lbu	a5,12(a0)
    e88370ce:	10078763          	beqz	a5,e88371dc <RecordRegistrationGotZoneData+0x40e>
            domainname *t = GetRRDomainNameTarget(&newRR->resrec);
    e88370d2:	00a45503          	lhu	a0,10(s0)
    e88370d6:	7814                	ld	a3,48(s0)
    e88370d8:	02500793          	li	a5,37
    e88370dc:	ffe5071b          	addiw	a4,a0,-2
    e88370e0:	3c07360b          	extu	a2,a4,15,0
    e88370e4:	00468593          	addi	a1,a3,4
    e88370e8:	00c7ee63          	bltu	a5,a2,e8837104 <RecordRegistrationGotZoneData+0x336>
    e88370ec:	4705                	li	a4,1
    e88370ee:	1716                	slli	a4,a4,0x25
    e88370f0:	40970713          	addi	a4,a4,1033
    e88370f4:	00c75733          	srl	a4,a4,a2
    e88370f8:	00468913          	addi	s2,a3,4
    e88370fc:	0007370b          	extu	a4,a4,0,0
    e8837100:	85ca                	mv	a1,s2
    e8837102:	e705                	bnez	a4,e883712a <RecordRegistrationGotZoneData+0x35c>
    e8837104:	0005071b          	sext.w	a4,a0
    e8837108:	02400793          	li	a5,36
    e883710c:	4901                	li	s2,0
    e883710e:	00e7ee63          	bltu	a5,a4,e883712a <RecordRegistrationGotZoneData+0x35c>
    e8837112:	002007b7          	lui	a5,0x200
    e8837116:	04978793          	addi	a5,a5,73 # 200049 <memcmp-0xe85fffb7>
    e883711a:	07be                	slli	a5,a5,0xf
    e883711c:	00a7d7b3          	srl	a5,a5,a0
    e8837120:	0007b78b          	extu	a5,a5,0,0
    e8837124:	c7cd                	beqz	a5,e88371ce <RecordRegistrationGotZoneData+0x400>
    e8837126:	00668913          	addi	s2,a3,6
            LogMsg("RecordRegistrationGotZoneData: ERROR!! AutoTunnel has Target_AutoHostAndNATMAP for %s", ARDisplayString(m, newRR));
    e883712a:	03b48613          	addi	a2,s1,59
    e883712e:	00840513          	addi	a0,s0,8
    e8837132:	8e3df0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8837136:	862a                	mv	a2,a0
    e8837138:	00076597          	auipc	a1,0x76
    e883713c:	16858593          	addi	a1,a1,360 # e88ad2a0 <kOn.10632+0x1358>
    e8837140:	4501                	li	a0,0
    e8837142:	bddd                	j	e8837038 <RecordRegistrationGotZoneData+0x26a>
        mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4) && newRR->nta && !mDNSAddrIsRFC1918(&newRR->nta->Addr) &&
    e8837144:	31850513          	addi	a0,a0,792
    e8837148:	cb3db0ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e883714c:	d525                	beqz	a0,e88370b4 <RecordRegistrationGotZoneData+0x2e6>
    mDNS_Lock(m);
    e883714e:	00077597          	auipc	a1,0x77
    e8837152:	df258593          	addi	a1,a1,-526 # e88adf40 <__func__.9638>
    e8837156:	8526                	mv	a0,s1
    e8837158:	8abde0ef          	jal	ra,e8815a02 <mDNS_Lock_>
    if (newRR->updateError == mStatus_NoError)
    e883715c:	0009e917          	auipc	s2,0x9e
    e8837160:	92490913          	addi	s2,s2,-1756 # e88d4a80 <mDNSPlatformOneSecond>
    e8837164:	1d442783          	lw	a5,468(s0)
    e8837168:	eb91                	bnez	a5,e883717c <RecordRegistrationGotZoneData+0x3ae>
        newRR->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e883716a:	00092703          	lw	a4,0(s2)
    e883716e:	10e42823          	sw	a4,272(s0)
        newRR->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e8837172:	2404a783          	lw	a5,576(s1)
    e8837176:	9f99                	subw	a5,a5,a4
    e8837178:	10f42a23          	sw	a5,276(s0)
    if (IsRecordMergeable(m, newRR, m->timenow + MERGE_DELAY_TIME))
    e883717c:	2404a603          	lw	a2,576(s1)
    e8837180:	00092783          	lw	a5,0(s2)
    e8837184:	85a2                	mv	a1,s0
    e8837186:	8526                	mv	a0,s1
    e8837188:	9e3d                	addw	a2,a2,a5
    e883718a:	c1cfb0ef          	jal	ra,e88325a6 <IsRecordMergeable>
    e883718e:	e00506e3          	beqz	a0,e8836f9a <RecordRegistrationGotZoneData+0x1cc>
        LogInfo("RecordRegistrationGotZoneData: Delayed registration for %s", ARDisplayString(m, newRR));
    e8837192:	0009e797          	auipc	a5,0x9e
    e8837196:	8e278793          	addi	a5,a5,-1822 # e88d4a74 <mDNS_LoggingEnabled>
    e883719a:	439c                	lw	a5,0(a5)
    e883719c:	c38d                	beqz	a5,e88371be <RecordRegistrationGotZoneData+0x3f0>
    e883719e:	780c                	ld	a1,48(s0)
    e88371a0:	03b48613          	addi	a2,s1,59
    e88371a4:	00840513          	addi	a0,s0,8
    e88371a8:	0591                	addi	a1,a1,4
    e88371aa:	86bdf0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88371ae:	862a                	mv	a2,a0
    e88371b0:	00076597          	auipc	a1,0x76
    e88371b4:	26058593          	addi	a1,a1,608 # e88ad410 <kOn.10632+0x14c8>
    e88371b8:	450d                	li	a0,3
    e88371ba:	af2f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        newRR->LastAPTime += MERGE_DELAY_TIME;
    e88371be:	11442783          	lw	a5,276(s0)
    e88371c2:	00092703          	lw	a4,0(s2)
    e88371c6:	9fb9                	addw	a5,a5,a4
    e88371c8:	10f42a23          	sw	a5,276(s0)
    e88371cc:	b3f9                	j	e8836f9a <RecordRegistrationGotZoneData+0x1cc>
            domainname *t = GetRRDomainNameTarget(&newRR->resrec);
    e88371ce:	02100793          	li	a5,33
    e88371d2:	f4f71ce3          	bne	a4,a5,e883712a <RecordRegistrationGotZoneData+0x35c>
    e88371d6:	00a68913          	addi	s2,a3,10
    e88371da:	bf81                	j	e883712a <RecordRegistrationGotZoneData+0x35c>
        if (!newRR->NATinfo.clientContext)
    e88371dc:	1c843683          	ld	a3,456(s0)
    e88371e0:	0009e797          	auipc	a5,0x9e
    e88371e4:	89478793          	addi	a5,a5,-1900 # e88d4a74 <mDNS_LoggingEnabled>
    e88371e8:	4398                	lw	a4,0(a5)
    e88371ea:	893e                	mv	s2,a5
    e88371ec:	10069663          	bnez	a3,e88372f8 <RecordRegistrationGotZoneData+0x52a>
            LogInfo("RecordRegistrationGotZoneData StartRecordNatMap %s", ARDisplayString(m, newRR));
    e88371f0:	c30d                	beqz	a4,e8837212 <RecordRegistrationGotZoneData+0x444>
    e88371f2:	780c                	ld	a1,48(s0)
    e88371f4:	03b48613          	addi	a2,s1,59
    e88371f8:	00840513          	addi	a0,s0,8
    e88371fc:	0591                	addi	a1,a1,4
    e88371fe:	817df0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8837202:	862a                	mv	a2,a0
    e8837204:	00076597          	auipc	a1,0x76
    e8837208:	0f458593          	addi	a1,a1,244 # e88ad2f8 <kOn.10632+0x13b0>
    e883720c:	450d                	li	a0,3
    e883720e:	a9ef80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            newRR->state = regState_NATMap;
    e8837212:	4799                	li	a5,6
    if (rr->resrec.rrtype != kDNSType_SRV)
    e8837214:	00a45683          	lhu	a3,10(s0)
            newRR->state = regState_NATMap;
    e8837218:	14f40623          	sb	a5,332(s0)
    if (rr->resrec.rrtype != kDNSType_SRV)
    e883721c:	02100793          	li	a5,33
    e8837220:	02f68663          	beq	a3,a5,e883724c <RecordRegistrationGotZoneData+0x47e>
        LogInfo("StartRecordNatMap: Resource Record %##s type %d, not supported", rr->resrec.name->c, rr->resrec.rrtype);
    e8837224:	00092783          	lw	a5,0(s2)
    e8837228:	c60780e3          	beqz	a5,e8836e88 <RecordRegistrationGotZoneData+0xba>
    e883722c:	7410                	ld	a2,40(s0)
}
    e883722e:	6406                	ld	s0,64(sp)
    e8837230:	60a6                	ld	ra,72(sp)
    e8837232:	74e2                	ld	s1,56(sp)
    e8837234:	7942                	ld	s2,48(sp)
    e8837236:	79a2                	ld	s3,40(sp)
    e8837238:	7a02                	ld	s4,32(sp)
    e883723a:	6ae2                	ld	s5,24(sp)
        LogInfo("StartRecordNatMap: Resource Record %##s type %d, not supported", rr->resrec.name->c, rr->resrec.rrtype);
    e883723c:	00076597          	auipc	a1,0x76
    e8837240:	0f458593          	addi	a1,a1,244 # e88ad330 <kOn.10632+0x13e8>
    e8837244:	450d                	li	a0,3
}
    e8837246:	6161                	addi	sp,sp,80
        LogInfo("StartRecordNatMap: Resource Record %##s type %d, not supported", rr->resrec.name->c, rr->resrec.rrtype);
    e8837248:	a64f806f          	j	e882f4ac <LogMsgWithLevel>
    p = rr->resrec.name->c;
    e883724c:	02843903          	ld	s2,40(s0)
    if (p[0]) p += 1 + p[0];
    e8837250:	00094783          	lbu	a5,0(s2)
    e8837254:	c399                	beqz	a5,e883725a <RecordRegistrationGotZoneData+0x48c>
    e8837256:	0785                	addi	a5,a5,1
    e8837258:	993e                	add	s2,s2,a5
    if (p[0]) p += 1 + p[0];
    e883725a:	00094783          	lbu	a5,0(s2)
    e883725e:	c399                	beqz	a5,e8837264 <RecordRegistrationGotZoneData+0x496>
    e8837260:	0785                	addi	a5,a5,1
    e8837262:	993e                	add	s2,s2,a5
    if      (SameDomainLabel(p, (mDNSu8 *)"\x4" "_tcp")) protocol = NATOp_MapTCP;
    e8837264:	00075597          	auipc	a1,0x75
    e8837268:	5fc58593          	addi	a1,a1,1532 # e88ac860 <kOn.10632+0x918>
    e883726c:	854a                	mv	a0,s2
    e883726e:	d79db0ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e8837272:	e90d                	bnez	a0,e88372a4 <RecordRegistrationGotZoneData+0x4d6>
    else if (SameDomainLabel(p, (mDNSu8 *)"\x4" "_udp")) protocol = NATOp_MapUDP;
    e8837274:	00073597          	auipc	a1,0x73
    e8837278:	2ac58593          	addi	a1,a1,684 # e88aa520 <mDNS_DomainTypeNames+0xb70>
    e883727c:	854a                	mv	a0,s2
    e883727e:	d69db0ef          	jal	ra,e8812fe6 <SameDomainLabel>
    e8837282:	4985                	li	s3,1
    e8837284:	e105                	bnez	a0,e88372a4 <RecordRegistrationGotZoneData+0x4d6>
    else { LogMsg("StartRecordNatMap: could not determine transport protocol of service %##s", rr->resrec.name->c); return; }
    e8837286:	7410                	ld	a2,40(s0)
}
    e8837288:	6406                	ld	s0,64(sp)
    e883728a:	60a6                	ld	ra,72(sp)
    e883728c:	74e2                	ld	s1,56(sp)
    e883728e:	7942                	ld	s2,48(sp)
    e8837290:	79a2                	ld	s3,40(sp)
    e8837292:	7a02                	ld	s4,32(sp)
    e8837294:	6ae2                	ld	s5,24(sp)
    else { LogMsg("StartRecordNatMap: could not determine transport protocol of service %##s", rr->resrec.name->c); return; }
    e8837296:	00076597          	auipc	a1,0x76
    e883729a:	0da58593          	addi	a1,a1,218 # e88ad370 <kOn.10632+0x1428>
}
    e883729e:	6161                	addi	sp,sp,80
    else { LogMsg("StartRecordNatMap: could not determine transport protocol of service %##s", rr->resrec.name->c); return; }
    e88372a0:	a0cf806f          	j	e882f4ac <LogMsgWithLevel>
    if (rr->NATinfo.clientContext) mDNS_StopNATOperation_internal(m, &rr->NATinfo);
    e88372a4:	1c843783          	ld	a5,456(s0)
    e88372a8:	17840913          	addi	s2,s0,376
    e88372ac:	c789                	beqz	a5,e88372b6 <RecordRegistrationGotZoneData+0x4e8>
    e88372ae:	85ca                	mv	a1,s2
    e88372b0:	8526                	mv	a0,s1
    e88372b2:	a65fb0ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
    rr->NATinfo.IntPort        = rr->resrec.rdata->u.srv.port;
    e88372b6:	781c                	ld	a5,48(s0)
    rr->NATinfo.Protocol       = protocol;
    e88372b8:	1b340a23          	sb	s3,436(s0)
    mDNS_StartNATOperation_internal(m, &rr->NATinfo);
    e88372bc:	85ca                	mv	a1,s2
    rr->NATinfo.IntPort        = rr->resrec.rdata->u.srv.port;
    e88372be:	0087d703          	lhu	a4,8(a5)
    mDNS_StartNATOperation_internal(m, &rr->NATinfo);
    e88372c2:	8526                	mv	a0,s1
    rr->NATinfo.IntPort        = rr->resrec.rdata->u.srv.port;
    e88372c4:	1ae41b23          	sh	a4,438(s0)
    rr->NATinfo.RequestedPort  = rr->resrec.rdata->u.srv.port;
    e88372c8:	0087d783          	lhu	a5,8(a5)
    rr->NATinfo.NATLease       = 0;     // Request default lease
    e88372cc:	1a042e23          	sw	zero,444(s0)
    rr->NATinfo.clientContext  = rr;
    e88372d0:	1c843423          	sd	s0,456(s0)
    rr->NATinfo.RequestedPort  = rr->resrec.rdata->u.srv.port;
    e88372d4:	1af41c23          	sh	a5,440(s0)
    rr->NATinfo.clientCallback = CompleteRecordNatMap;
    e88372d8:	ffffd797          	auipc	a5,0xffffd
    e88372dc:	74678793          	addi	a5,a5,1862 # e8834a1e <CompleteRecordNatMap>
    e88372e0:	1cf43023          	sd	a5,448(s0)
}
    e88372e4:	6406                	ld	s0,64(sp)
    e88372e6:	60a6                	ld	ra,72(sp)
    e88372e8:	74e2                	ld	s1,56(sp)
    e88372ea:	7942                	ld	s2,48(sp)
    e88372ec:	79a2                	ld	s3,40(sp)
    e88372ee:	7a02                	ld	s4,32(sp)
    e88372f0:	6ae2                	ld	s5,24(sp)
    e88372f2:	6161                	addi	sp,sp,80
    mDNS_StartNATOperation_internal(m, &rr->NATinfo);
    e88372f4:	883fb06f          	j	e8832b76 <mDNS_StartNATOperation_internal>
        else LogInfo("RecordRegistrationGotZoneData: StartRecordNatMap for %s, state %d, context %p", ARDisplayString(m, newRR), newRR->state, newRR->NATinfo.clientContext);
    e88372f8:	e4070be3          	beqz	a4,e883714e <RecordRegistrationGotZoneData+0x380>
    e88372fc:	780c                	ld	a1,48(s0)
    e88372fe:	03b48613          	addi	a2,s1,59
    e8837302:	00840513          	addi	a0,s0,8
    e8837306:	0591                	addi	a1,a1,4
    e8837308:	f0cdf0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883730c:	862a                	mv	a2,a0
    e883730e:	1c843703          	ld	a4,456(s0)
    e8837312:	14c44683          	lbu	a3,332(s0)
    e8837316:	00076597          	auipc	a1,0x76
    e883731a:	0aa58593          	addi	a1,a1,170 # e88ad3c0 <kOn.10632+0x1478>
    e883731e:	450d                	li	a0,3
    e8837320:	98cf80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8837324:	b52d                	j	e883714e <RecordRegistrationGotZoneData+0x380>
    if (err)
    e8837326:	b20a0de3          	beqz	s4,e8836e60 <RecordRegistrationGotZoneData+0x92>
        if (err != mStatus_NoSuchNameErr) LogMsg("RecordRegistrationGotZoneData: error %d", err);
    e883732a:	77c1                	lui	a5,0xffff0
    e883732c:	17f9                	addi	a5,a5,-2
    e883732e:	00fa0a63          	beq	s4,a5,e8837342 <RecordRegistrationGotZoneData+0x574>
    e8837332:	8652                	mv	a2,s4
    e8837334:	00076597          	auipc	a1,0x76
    e8837338:	d8458593          	addi	a1,a1,-636 # e88ad0b8 <kOn.10632+0x1170>
    e883733c:	4501                	li	a0,0
    e883733e:	96ef80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        CancelGetZoneData(m, newRR->nta);
    e8837342:	16843583          	ld	a1,360(s0)
    e8837346:	8526                	mv	a0,s1
    e8837348:	cecea0ef          	jal	ra,e8821834 <CancelGetZoneData>
        newRR->nta = mDNSNULL;
    e883734c:	16043423          	sd	zero,360(s0)
        return;
    e8837350:	be25                	j	e8836e88 <RecordRegistrationGotZoneData+0xba>

00000000e8837352 <uDNS_CheckCurrentQuestion>:
{
    e8837352:	7175                	addi	sp,sp,-144
    e8837354:	e506                	sd	ra,136(sp)
    e8837356:	e122                	sd	s0,128(sp)
    e8837358:	fca6                	sd	s1,120(sp)
    e883735a:	f8ca                	sd	s2,112(sp)
    e883735c:	f4ce                	sd	s3,104(sp)
    e883735e:	f0d2                	sd	s4,96(sp)
    e8837360:	ecd6                	sd	s5,88(sp)
    e8837362:	e8da                	sd	s6,80(sp)
    e8837364:	e4de                	sd	s7,72(sp)
    e8837366:	e0e2                	sd	s8,64(sp)
    e8837368:	fc66                	sd	s9,56(sp)
    DNSQuestion *q = m->CurrentQuestion;
    e883736a:	2c853403          	ld	s0,712(a0)
    if (m->timenow - NextQSendTime(q) < 0) return;
    e883736e:	e4e4478b          	lwd	a5,a4,(s0),2,3
    e8837372:	9f3d                	addw	a4,a4,a5
    e8837374:	24052783          	lw	a5,576(a0)
    e8837378:	9f99                	subw	a5,a5,a4
    e883737a:	4207c963          	bltz	a5,e88377ac <uDNS_CheckCurrentQuestion+0x45a>
    if (q->LongLived)
    e883737e:	31844783          	lbu	a5,792(s0)
    e8837382:	84aa                	mv	s1,a0
    e8837384:	cf99                	beqz	a5,e88373a2 <uDNS_CheckCurrentQuestion+0x50>
    switch (q->state)
    e8837386:	1b444783          	lbu	a5,436(s0)
    e883738a:	4709                	li	a4,2
    e883738c:	06e78d63          	beq	a5,a4,e8837406 <uDNS_CheckCurrentQuestion+0xb4>
    e8837390:	470d                	li	a4,3
    e8837392:	08e78563          	beq	a5,a4,e883741c <uDNS_CheckCurrentQuestion+0xca>
    e8837396:	4705                	li	a4,1
    e8837398:	00e79563          	bne	a5,a4,e88373a2 <uDNS_CheckCurrentQuestion+0x50>
            if (PrivateQuery(q))   startLLQHandshake(m, q);
    e883739c:	85a2                	mv	a1,s0
    e883739e:	c2ffd0ef          	jal	ra,e8834fcc <startLLQHandshake>
    handle_unanswered_query(m);
    e88373a2:	2c84b903          	ld	s2,712(s1)
    if (q->unansweredQueries >= MAX_DNSSEC_UNANSWERED_QUERIES && DNSSECOptionalQuestion(q))
    e88373a6:	18494783          	lbu	a5,388(s2)
    e88373aa:	c3e1                	beqz	a5,e883746a <uDNS_CheckCurrentQuestion+0x118>
    e88373ac:	32494703          	lbu	a4,804(s2)
    e88373b0:	4789                	li	a5,2
    e88373b2:	0af71c63          	bne	a4,a5,e883746a <uDNS_CheckCurrentQuestion+0x118>
        if (!q->qDNSServer->DNSSECAware && q->qDNSServer->req_DO)
    e88373b6:	16893783          	ld	a5,360(s2)
    e88373ba:	1437c703          	lbu	a4,323(a5) # ffffffffffff0143 <__DRAM0_INF_BASE+0xffffffff00000143>
    e88373be:	e34d                	bnez	a4,e8837460 <uDNS_CheckCurrentQuestion+0x10e>
    e88373c0:	1427c703          	lbu	a4,322(a5)
    e88373c4:	e325                	bnez	a4,e8837424 <uDNS_CheckCurrentQuestion+0xd2>
            if (q->ProxyQuestion)
    e88373c6:	32594783          	lbu	a5,805(s2)
            q->ValidationState     = DNSSECValNotRequired;
    e88373ca:	14090423          	sb	zero,328(s2)
            q->ValidationRequired  = DNSSEC_VALIDATION_NONE;
    e88373ce:	32090223          	sb	zero,804(s2)
            if (q->ProxyQuestion)
    e88373d2:	20079663          	bnez	a5,e88375de <uDNS_CheckCurrentQuestion+0x28c>
            LogInfo("handle_unanswered_query: unanswered query for %##s (%s), so turned off validation for %#a",
    e88373d6:	0009d797          	auipc	a5,0x9d
    e88373da:	69e78793          	addi	a5,a5,1694 # e88d4a74 <mDNS_LoggingEnabled>
    e88373de:	439c                	lw	a5,0(a5)
    e88373e0:	c7c9                	beqz	a5,e883746a <uDNS_CheckCurrentQuestion+0x118>
    e88373e2:	31495503          	lhu	a0,788(s2)
    e88373e6:	87bde0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88373ea:	86aa                	mv	a3,a0
    e88373ec:	16893703          	ld	a4,360(s2)
    e88373f0:	21490613          	addi	a2,s2,532
    e88373f4:	00078597          	auipc	a1,0x78
    e88373f8:	cd458593          	addi	a1,a1,-812 # e88af0c8 <__func__.9833+0x1130>
    e88373fc:	0751                	addi	a4,a4,20
    e88373fe:	450d                	li	a0,3
    e8837400:	8acf80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8837404:	a09d                	j	e883746a <uDNS_CheckCurrentQuestion+0x118>
            if (PrivateQuery(q))   startLLQHandshake(m, q);
    e8837406:	643c                	ld	a5,72(s0)
    e8837408:	c781                	beqz	a5,e8837410 <uDNS_CheckCurrentQuestion+0xbe>
    e883740a:	00c7c783          	lbu	a5,12(a5)
    e883740e:	f7d9                	bnez	a5,e883739c <uDNS_CheckCurrentQuestion+0x4a>
            else                   sendChallengeResponse(m, q, mDNSNULL);
    e8837410:	4601                	li	a2,0
    e8837412:	85a2                	mv	a1,s0
    e8837414:	8526                	mv	a0,s1
    e8837416:	ac9f90ef          	jal	ra,e8830ede <sendChallengeResponse>
    e883741a:	b761                	j	e88373a2 <uDNS_CheckCurrentQuestion+0x50>
        case LLQ_Established:      sendLLQRefresh(m, q); break;
    e883741c:	85a2                	mv	a1,s0
    e883741e:	b98ff0ef          	jal	ra,e88367b6 <sendLLQRefresh>
    e8837422:	b741                	j	e88373a2 <uDNS_CheckCurrentQuestion+0x50>
            q->qDNSServer->retransDO++;
    e8837424:	13e7c703          	lbu	a4,318(a5)
    e8837428:	2705                	addiw	a4,a4,1
    e883742a:	12e78f23          	sb	a4,318(a5)
            if (q->qDNSServer->retransDO == MAX_DNSSEC_RETRANSMISSIONS)
    e883742e:	16893603          	ld	a2,360(s2)
    e8837432:	478d                	li	a5,3
    e8837434:	13e64703          	lbu	a4,318(a2)
    e8837438:	02f71463          	bne	a4,a5,e8837460 <uDNS_CheckCurrentQuestion+0x10e>
                LogInfo("handle_unanswered_query: setting req_DO false for %#a", &q->qDNSServer->addr);
    e883743c:	0009d797          	auipc	a5,0x9d
    e8837440:	63878793          	addi	a5,a5,1592 # e88d4a74 <mDNS_LoggingEnabled>
    e8837444:	439c                	lw	a5,0(a5)
    e8837446:	cb89                	beqz	a5,e8837458 <uDNS_CheckCurrentQuestion+0x106>
    e8837448:	0651                	addi	a2,a2,20
    e883744a:	00078597          	auipc	a1,0x78
    e883744e:	c4658593          	addi	a1,a1,-954 # e88af090 <__func__.9833+0x10f8>
    e8837452:	450d                	li	a0,3
    e8837454:	858f80ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                q->qDNSServer->req_DO = mDNSfalse;
    e8837458:	16893783          	ld	a5,360(s2)
    e883745c:	14078123          	sb	zero,322(a5)
        if (!q->qDNSServer->req_DO)
    e8837460:	16893783          	ld	a5,360(s2)
    e8837464:	1427c783          	lbu	a5,322(a5)
    e8837468:	dfb9                	beqz	a5,e88373c6 <uDNS_CheckCurrentQuestion+0x74>
    if (!(q->LongLived && q->state != LLQ_Poll))
    e883746a:	31844783          	lbu	a5,792(s0)
    e883746e:	c791                	beqz	a5,e883747a <uDNS_CheckCurrentQuestion+0x128>
    e8837470:	1b444703          	lbu	a4,436(s0)
    e8837474:	4791                	li	a5,4
    e8837476:	32f71b63          	bne	a4,a5,e88377ac <uDNS_CheckCurrentQuestion+0x45a>
        if (q->unansweredQueries >= MAX_UCAST_UNANSWERED_QUERIES)
    e883747a:	18444603          	lbu	a2,388(s0)
    e883747e:	4785                	li	a5,1
    e8837480:	21440913          	addi	s2,s0,532
    e8837484:	06c7f463          	bgeu	a5,a2,e88374ec <uDNS_CheckCurrentQuestion+0x19a>
    e8837488:	16843983          	ld	s3,360(s0)
            if (orig)
    e883748c:	04098363          	beqz	s3,e88374d2 <uDNS_CheckCurrentQuestion+0x180>
                LogInfo("uDNS_CheckCurrentQuestion: Sent %d unanswered queries for %##s (%s) to %#a:%d (%##s)",
    e8837490:	0009d797          	auipc	a5,0x9d
    e8837494:	5e478793          	addi	a5,a5,1508 # e88d4a74 <mDNS_LoggingEnabled>
    e8837498:	439c                	lw	a5,0(a5)
    e883749a:	cf85                	beqz	a5,e88374d2 <uDNS_CheckCurrentQuestion+0x180>
    e883749c:	31445503          	lhu	a0,788(s0)
    e88374a0:	e832                	sd	a2,16(sp)
    e88374a2:	fbede0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88374a6:	872a                	mv	a4,a0
    e88374a8:	0289c783          	lbu	a5,40(s3)
    e88374ac:	0299c803          	lbu	a6,41(s3)
    e88374b0:	6642                	ld	a2,16(sp)
    e88374b2:	0087979b          	slliw	a5,a5,0x8
    e88374b6:	0107e833          	or	a6,a5,a6
    e88374ba:	03098893          	addi	a7,s3,48
    e88374be:	01498793          	addi	a5,s3,20
    e88374c2:	86ca                	mv	a3,s2
    e88374c4:	00078597          	auipc	a1,0x78
    e88374c8:	c6458593          	addi	a1,a1,-924 # e88af128 <__func__.9833+0x1190>
    e88374cc:	450d                	li	a0,3
    e88374ce:	fdff70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            PenalizeDNSServer(m, q, zeroID);
    e88374d2:	0006c797          	auipc	a5,0x6c
    e88374d6:	0ce78793          	addi	a5,a5,206 # e88a35a0 <zeroID>
    e88374da:	0007d603          	lhu	a2,0(a5)
    e88374de:	85a2                	mv	a1,s0
    e88374e0:	8526                	mv	a0,s1
    e88374e2:	d77fa0ef          	jal	ra,e8832258 <PenalizeDNSServer>
            q->noServerResponse = 1;
    e88374e6:	4785                	li	a5,1
    e88374e8:	18f41023          	sh	a5,384(s0)
        if (!q->qDNSServer && q->noServerResponse)
    e88374ec:	16843783          	ld	a5,360(s0)
    e88374f0:	0e078a63          	beqz	a5,e88375e4 <uDNS_CheckCurrentQuestion+0x292>
            InitializeDNSMessage(&m->omsg.h, q->TargetQID, (DNSSECQuestion(q) ? DNSSecQFlags : uQueryFlags));
    e88374f4:	32444783          	lbu	a5,804(s0)
    e88374f8:	699d                	lui	s3,0x7
    e88374fa:	1e098993          	addi	s3,s3,480 # 71e0 <memcmp-0xe87f8e20>
    e88374fe:	99a6                	add	s3,s3,s1
    e8837500:	ef81                	bnez	a5,e8837518 <uDNS_CheckCurrentQuestion+0x1c6>
    e8837502:	14a44783          	lbu	a5,330(s0)
    e8837506:	eb89                	bnez	a5,e8837518 <uDNS_CheckCurrentQuestion+0x1c6>
    e8837508:	32544783          	lbu	a5,805(s0)
    e883750c:	2c078e63          	beqz	a5,e88377e8 <uDNS_CheckCurrentQuestion+0x496>
    e8837510:	32644783          	lbu	a5,806(s0)
    e8837514:	2c078a63          	beqz	a5,e88377e8 <uDNS_CheckCurrentQuestion+0x496>
    e8837518:	0006b797          	auipc	a5,0x6b
    e883751c:	a5078793          	addi	a5,a5,-1456 # e88a1f68 <DNSSecQFlags>
    e8837520:	0007d603          	lhu	a2,0(a5)
    e8837524:	21245583          	lhu	a1,530(s0)
    e8837528:	854e                	mv	a0,s3
            end = putQuestion(&m->omsg, m->omsg.data, m->omsg.data + AbsoluteMaxDNSMessageData, &q->qname, q->qtype, q->qclass);
    e883752a:	6a9d                	lui	s5,0x7
            InitializeDNSMessage(&m->omsg.h, q->TargetQID, (DNSSECQuestion(q) ? DNSSecQFlags : uQueryFlags));
    e883752c:	920dd0ef          	jal	ra,e881464c <InitializeDNSMessage>
            end = putQuestion(&m->omsg, m->omsg.data, m->omsg.data + AbsoluteMaxDNSMessageData, &q->qname, q->qtype, q->qclass);
    e8837530:	6b25                	lui	s6,0x9
    e8837532:	31645783          	lhu	a5,790(s0)
    e8837536:	1eca8a93          	addi	s5,s5,492 # 71ec <memcmp-0xe87f8e14>
    e883753a:	4d8b0b13          	addi	s6,s6,1240 # 94d8 <memcmp-0xe87f6b28>
    e883753e:	31445703          	lhu	a4,788(s0)
    e8837542:	9aa6                	add	s5,s5,s1
    e8837544:	9b26                	add	s6,s6,s1
    e8837546:	86ca                	mv	a3,s2
    e8837548:	865a                	mv	a2,s6
    e883754a:	85d6                	mv	a1,s5
    e883754c:	854e                	mv	a0,s3
    e883754e:	ab0dd0ef          	jal	ra,e88147fe <putQuestion>
    e8837552:	8a2a                	mv	s4,a0
            if (DNSSECQuestion(q) && !q->qDNSServer->cellIntf)
    e8837554:	32444783          	lbu	a5,804(s0)
    e8837558:	eb91                	bnez	a5,e883756c <uDNS_CheckCurrentQuestion+0x21a>
    e883755a:	14a44783          	lbu	a5,330(s0)
    e883755e:	e799                	bnez	a5,e883756c <uDNS_CheckCurrentQuestion+0x21a>
    e8837560:	32544783          	lbu	a5,805(s0)
    e8837564:	c78d                	beqz	a5,e883758e <uDNS_CheckCurrentQuestion+0x23c>
    e8837566:	32644783          	lbu	a5,806(s0)
    e883756a:	c395                	beqz	a5,e883758e <uDNS_CheckCurrentQuestion+0x23c>
    e883756c:	16843783          	ld	a5,360(s0)
    e8837570:	13f7c783          	lbu	a5,319(a5)
    e8837574:	ef89                	bnez	a5,e883758e <uDNS_CheckCurrentQuestion+0x23c>
                if (q->ProxyQuestion)
    e8837576:	32544783          	lbu	a5,805(s0)
    e883757a:	26078c63          	beqz	a5,e88377f2 <uDNS_CheckCurrentQuestion+0x4a0>
                    end = DNSProxySetAttributes(q, &m->omsg.h, &m->omsg, end, m->omsg.data + AbsoluteMaxDNSMessageData);
    e883757e:	875a                	mv	a4,s6
    e8837580:	86d2                	mv	a3,s4
    e8837582:	864e                	mv	a2,s3
    e8837584:	85ce                	mv	a1,s3
    e8837586:	8522                	mv	a0,s0
    e8837588:	d6af80ef          	jal	ra,e882faf2 <DNSProxySetAttributes>
                    end = putDNSSECOption(&m->omsg, end, m->omsg.data + AbsoluteMaxDNSMessageData);
    e883758c:	8a2a                	mv	s4,a0
            private = PrivateQuery(q);
    e883758e:	643c                	ld	a5,72(s0)
    e8837590:	c789                	beqz	a5,e883759a <uDNS_CheckCurrentQuestion+0x248>
    e8837592:	00c7c783          	lbu	a5,12(a5)
    e8837596:	50079563          	bnez	a5,e8837aa0 <uDNS_CheckCurrentQuestion+0x74e>
            if (end > m->omsg.data)
    e883759a:	054af063          	bgeu	s5,s4,e88375da <uDNS_CheckCurrentQuestion+0x288>
                    if (!q->LocalSocket)
    e883759e:	16043783          	ld	a5,352(s0)
    e88375a2:	eb85                	bnez	a5,e88375d2 <uDNS_CheckCurrentQuestion+0x280>
                        q->LocalSocket = mDNSPlatformUDPSocket(zeroIPPort);
    e88375a4:	0006c797          	auipc	a5,0x6c
    e88375a8:	00478793          	addi	a5,a5,4 # e88a35a8 <zeroIPPort>
    e88375ac:	0007d503          	lhu	a0,0(a5)
    e88375b0:	b60f80ef          	jal	ra,e882f910 <mDNSPlatformUDPSocket>
    e88375b4:	16a43023          	sd	a0,352(s0)
                        if (q->LocalSocket)
    e88375b8:	cd09                	beqz	a0,e88375d2 <uDNS_CheckCurrentQuestion+0x280>
                            mDNSPlatformSetSocktOpt(q->LocalSocket, mDNSTransport_UDP, mDNSAddrType_IPv4, q);
    e88375ba:	86a2                	mv	a3,s0
    e88375bc:	4611                	li	a2,4
    e88375be:	4585                	li	a1,1
    e88375c0:	97ef90ef          	jal	ra,e883073e <mDNSPlatformSetSocktOpt>
                            mDNSPlatformSetSocktOpt(q->LocalSocket, mDNSTransport_UDP, mDNSAddrType_IPv6, q);
    e88375c4:	16043503          	ld	a0,352(s0)
    e88375c8:	86a2                	mv	a3,s0
    e88375ca:	4619                	li	a2,6
    e88375cc:	4585                	li	a1,1
    e88375ce:	970f90ef          	jal	ra,e883073e <mDNSPlatformSetSocktOpt>
                    if (!q->LocalSocket) err = mStatus_NoMemoryErr; // If failed to make socket (should be very rare), we'll try again next time
    e88375d2:	16043703          	ld	a4,352(s0)
    e88375d6:	24071963          	bnez	a4,e8837828 <uDNS_CheckCurrentQuestion+0x4d6>
            private = PrivateQuery(q);
    e88375da:	4681                	li	a3,0
    e88375dc:	a301                	j	e8837adc <uDNS_CheckCurrentQuestion+0x78a>
                q->ProxyDNSSECOK = mDNSfalse;
    e88375de:	32090323          	sb	zero,806(s2)
    e88375e2:	bbd5                	j	e88373d6 <uDNS_CheckCurrentQuestion+0x84>
        if (!q->qDNSServer && q->noServerResponse)
    e88375e4:	18045783          	lhu	a5,384(s0)
    e88375e8:	cbb5                	beqz	a5,e883765c <uDNS_CheckCurrentQuestion+0x30a>
            q->triedAllServersOnce = 1;
    e88375ea:	4785                	li	a5,1
    e88375ec:	18f41123          	sh	a5,386(s0)
            SetValidDNSServers(m, q);
    e88375f0:	85a2                	mv	a1,s0
    e88375f2:	8526                	mv	a0,s1
    e88375f4:	ac9e90ef          	jal	ra,e88210bc <SetValidDNSServers>
            new = GetServerForQuestion(m, q);
    e88375f8:	85a2                	mv	a1,s0
    e88375fa:	8526                	mv	a0,s1
    e88375fc:	c55e90ef          	jal	ra,e8821250 <GetServerForQuestion>
    e8837600:	89aa                	mv	s3,a0
            if (new)
    e8837602:	c531                	beqz	a0,e883764e <uDNS_CheckCurrentQuestion+0x2fc>
                LogInfo("uDNS_checkCurrentQuestion: Retrying question %p %##s (%s) DNS Server %#a:%d ThisQInterval %d",
    e8837604:	0009d797          	auipc	a5,0x9d
    e8837608:	47078793          	addi	a5,a5,1136 # e88d4a74 <mDNS_LoggingEnabled>
    e883760c:	439c                	lw	a5,0(a5)
    e883760e:	cb9d                	beqz	a5,e8837644 <uDNS_CheckCurrentQuestion+0x2f2>
    e8837610:	31445503          	lhu	a0,788(s0)
    e8837614:	e4cde0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8837618:	872a                	mv	a4,a0
    e883761a:	0289c783          	lbu	a5,40(s3)
    e883761e:	0299c803          	lbu	a6,41(s3)
    e8837622:	01442883          	lw	a7,20(s0)
    e8837626:	0087979b          	slliw	a5,a5,0x8
    e883762a:	0107e833          	or	a6,a5,a6
    e883762e:	86ca                	mv	a3,s2
    e8837630:	01498793          	addi	a5,s3,20
    e8837634:	8622                	mv	a2,s0
    e8837636:	00078597          	auipc	a1,0x78
    e883763a:	b4a58593          	addi	a1,a1,-1206 # e88af180 <__func__.9833+0x11e8>
    e883763e:	450d                	li	a0,3
    e8837640:	e6df70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                DNSServerChangeForQuestion(m, q, new);
    e8837644:	864e                	mv	a2,s3
    e8837646:	85a2                	mv	a1,s0
    e8837648:	8526                	mv	a0,s1
    e883764a:	a42f70ef          	jal	ra,e882e88c <DNSServerChangeForQuestion>
            for (qptr = q->next ; qptr; qptr = qptr->next)
    e883764e:	601c                	ld	a5,0(s0)
    e8837650:	16079b63          	bnez	a5,e88377c6 <uDNS_CheckCurrentQuestion+0x474>
        if (q->qDNSServer)
    e8837654:	16843783          	ld	a5,360(s0)
    e8837658:	e8079ee3          	bnez	a5,e88374f4 <uDNS_CheckCurrentQuestion+0x1a2>
            const mDNSu32 slot = HashSlotFromNameHash(q->qnamehash);
    e883765c:	440c                	lw	a1,8(s0)
            CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e883765e:	864a                	mv	a2,s2
            const mDNSu32 slot = HashSlotFromNameHash(q->qnamehash);
    e8837660:	1f300993          	li	s3,499
            CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e8837664:	8526                	mv	a0,s1
            const mDNSu32 slot = HashSlotFromNameHash(q->qnamehash);
    e8837666:	0335f9bb          	remuw	s3,a1,s3
            CacheGroup *const cg = CacheGroupForName(m, q->qnamehash, &q->qname);
    e883766a:	fdfe60ef          	jal	ra,e881e648 <CacheGroupForName>
    e883766e:	8a2a                	mv	s4,a0
            if (!q->qDNSServer)
    e8837670:	16843603          	ld	a2,360(s0)
    e8837674:	38061f63          	bnez	a2,e8837a12 <uDNS_CheckCurrentQuestion+0x6c0>
                if (!mDNSOpaque128IsZero(&q->validDNSServers))
    e8837678:	17042783          	lw	a5,368(s0)
    e883767c:	17442703          	lw	a4,372(s0)
    e8837680:	17842683          	lw	a3,376(s0)
    e8837684:	17c42603          	lw	a2,380(s0)
    e8837688:	00e7e5b3          	or	a1,a5,a4
    e883768c:	8dd5                	or	a1,a1,a3
    e883768e:	8dd1                	or	a1,a1,a2
    e8837690:	c595                	beqz	a1,e88376bc <uDNS_CheckCurrentQuestion+0x36a>
                    LogMsg("uDNS_CheckCurrentQuestion: ERROR!!: valid DNSServer bits not zero 0x%x, 0x%x 0x%x 0x%x for question %##s (%s)",
    e8837692:	31445503          	lhu	a0,788(s0)
    e8837696:	f432                	sd	a2,40(sp)
    e8837698:	f036                	sd	a3,32(sp)
    e883769a:	ec3a                	sd	a4,24(sp)
    e883769c:	e83e                	sd	a5,16(sp)
    e883769e:	dc2de0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88376a2:	88aa                	mv	a7,a0
    e88376a4:	fae1478b          	ldd	a5,a4,(sp),1,4
    e88376a8:	fcc1468b          	ldd	a3,a2,(sp),2,4
    e88376ac:	884a                	mv	a6,s2
    e88376ae:	00078597          	auipc	a1,0x78
    e88376b2:	c5a58593          	addi	a1,a1,-934 # e88af308 <__func__.9833+0x1370>
    e88376b6:	4501                	li	a0,0
    e88376b8:	df5f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                SetValidDNSServers(m, q);
    e88376bc:	85a2                	mv	a1,s0
    e88376be:	8526                	mv	a0,s1
    e88376c0:	9fde90ef          	jal	ra,e88210bc <SetValidDNSServers>
                if (mDNSOpaque128IsZero(&q->validDNSServers))
    e88376c4:	17442703          	lw	a4,372(s0)
    e88376c8:	17042783          	lw	a5,368(s0)
    e88376cc:	8fd9                	or	a5,a5,a4
    e88376ce:	17842703          	lw	a4,376(s0)
    e88376d2:	8fd9                	or	a5,a5,a4
    e88376d4:	17c42703          	lw	a4,380(s0)
    e88376d8:	8fd9                	or	a5,a5,a4
    e88376da:	2781                	sext.w	a5,a5
    e88376dc:	28079e63          	bnez	a5,e8837978 <uDNS_CheckCurrentQuestion+0x626>
                    LogInfo("uDNS_CheckCurrentQuestion: no DNS server for %##s (%s)", q->qname.c, DNSTypeName(q->qtype));
    e88376e0:	0009d797          	auipc	a5,0x9d
    e88376e4:	39478793          	addi	a5,a5,916 # e88d4a74 <mDNS_LoggingEnabled>
    e88376e8:	439c                	lw	a5,0(a5)
    e88376ea:	cf91                	beqz	a5,e8837706 <uDNS_CheckCurrentQuestion+0x3b4>
    e88376ec:	31445503          	lhu	a0,788(s0)
    e88376f0:	d70de0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88376f4:	86aa                	mv	a3,a0
    e88376f6:	864a                	mv	a2,s2
    e88376f8:	00078597          	auipc	a1,0x78
    e88376fc:	c8058593          	addi	a1,a1,-896 # e88af378 <__func__.9833+0x13e0>
    e8837700:	450d                	li	a0,3
    e8837702:	dabf70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    q->ThisQInterval = 0;
    e8837706:	00042a23          	sw	zero,20(s0)
            if (cg)
    e883770a:	320a1763          	bnez	s4,e8837a38 <uDNS_CheckCurrentQuestion+0x6e6>
            MakeNegativeCacheRecord(m, &m->rec.r, &q->qname, q->qnamehash, q->qtype, q->qclass, (DomainEnumQuery(&q->qname) ? 60 * 15 : 60), mDNSInterface_Any, q->qDNSServer);
    e883770e:	65a5                	lui	a1,0x9
    e8837710:	4414                	lw	a3,8(s0)
    e8837712:	31445703          	lhu	a4,788(s0)
    e8837716:	31645783          	lhu	a5,790(s0)
    e883771a:	4d858593          	addi	a1,a1,1240 # 94d8 <memcmp-0xe87f6b28>
    e883771e:	95a6                	add	a1,a1,s1
    e8837720:	854a                	mv	a0,s2
    e8837722:	f42e                	sd	a1,40(sp)
    e8837724:	f036                	sd	a3,32(sp)
    e8837726:	ec3a                	sd	a4,24(sp)
    e8837728:	e83e                	sd	a5,16(sp)
    e883772a:	913e90ef          	jal	ra,e882103c <DomainEnumQuery>
    e883772e:	38400813          	li	a6,900
    e8837732:	fae1478b          	ldd	a5,a4,(sp),1,4
    e8837736:	fcb1468b          	ldd	a3,a1,(sp),2,4
    e883773a:	e119                	bnez	a0,e8837740 <uDNS_CheckCurrentQuestion+0x3ee>
    e883773c:	03c00813          	li	a6,60
    e8837740:	16843603          	ld	a2,360(s0)
    e8837744:	8526                	mv	a0,s1
    e8837746:	e032                	sd	a2,0(sp)
    e8837748:	0006b617          	auipc	a2,0x6b
    e883774c:	61860613          	addi	a2,a2,1560 # e88a2d60 <mDNSInterface_Any>
    e8837750:	00063883          	ld	a7,0(a2)
    e8837754:	864a                	mv	a2,s2
    e8837756:	80de90ef          	jal	ra,e8820f62 <MakeNegativeCacheRecord>
            q->unansweredQueries = 0;
    e883775a:	18040223          	sb	zero,388(s0)
            if (!mDNSOpaque16IsZero(q->responseFlags))
    e883775e:	1e445783          	lhu	a5,484(s0)
    e8837762:	873e                	mv	a4,a5
    e8837764:	c789                	beqz	a5,e883776e <uDNS_CheckCurrentQuestion+0x41c>
                m->rec.r.responseFlags = q->responseFlags;
    e8837766:	67a5                	lui	a5,0x9
    e8837768:	97a6                	add	a5,a5,s1
    e883776a:	54e79323          	sh	a4,1350(a5) # 9546 <memcmp-0xe87f6aba>
            CreateNewCacheEntry(m, slot, cg, NonZeroTime(m->timenow), mDNStrue, mDNSNULL);
    e883776e:	2404a683          	lw	a3,576(s1)
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e8837772:	e291                	bnez	a3,e8837776 <uDNS_CheckCurrentQuestion+0x424>
    e8837774:	4685                	li	a3,1
    e8837776:	8652                	mv	a2,s4
    e8837778:	4781                	li	a5,0
    e883777a:	4705                	li	a4,1
    e883777c:	85ce                	mv	a1,s3
    e883777e:	8526                	mv	a0,s1
    e8837780:	b3bef0ef          	jal	ra,e88272ba <CreateNewCacheEntry>
            ScheduleNextCacheCheckTime(m, slot, NonZeroTime(m->timenow));
    e8837784:	2404a603          	lw	a2,576(s1)
    e8837788:	e211                	bnez	a2,e883778c <uDNS_CheckCurrentQuestion+0x43a>
    e883778a:	4605                	li	a2,1
    e883778c:	8526                	mv	a0,s1
    e883778e:	85ce                	mv	a1,s3
    e8837790:	ba0e70ef          	jal	ra,e881eb30 <ScheduleNextCacheCheckTime>
            m->rec.r.responseFlags = zeroID;
    e8837794:	67a5                	lui	a5,0x9
    e8837796:	94be                	add	s1,s1,a5
    e8837798:	0006c797          	auipc	a5,0x6c
    e883779c:	e0878793          	addi	a5,a5,-504 # e88a35a0 <zeroID>
    e88377a0:	0007d783          	lhu	a5,0(a5)
            m->rec.r.resrec.RecordType = 0;     // Clear RecordType to show we're not still using it
    e88377a4:	4e048023          	sb	zero,1248(s1)
            m->rec.r.responseFlags = zeroID;
    e88377a8:	54f49323          	sh	a5,1350(s1)
}
    e88377ac:	60aa                	ld	ra,136(sp)
    e88377ae:	640a                	ld	s0,128(sp)
    e88377b0:	74e6                	ld	s1,120(sp)
    e88377b2:	7946                	ld	s2,112(sp)
    e88377b4:	79a6                	ld	s3,104(sp)
    e88377b6:	7a06                	ld	s4,96(sp)
    e88377b8:	6ae6                	ld	s5,88(sp)
    e88377ba:	6b46                	ld	s6,80(sp)
    e88377bc:	6ba6                	ld	s7,72(sp)
    e88377be:	6c06                	ld	s8,64(sp)
    e88377c0:	7ce2                	ld	s9,56(sp)
    e88377c2:	6149                	addi	sp,sp,144
    e88377c4:	8082                	ret
                if (qptr->DuplicateOf == q) { qptr->validDNSServers = q->validDNSServers; qptr->qDNSServer = q->qDNSServer; }
    e88377c6:	6bb8                	ld	a4,80(a5)
    e88377c8:	00871e63          	bne	a4,s0,e88377e4 <uDNS_CheckCurrentQuestion+0x492>
    e88377cc:	17043703          	ld	a4,368(s0)
    e88377d0:	16e7b823          	sd	a4,368(a5)
    e88377d4:	17843703          	ld	a4,376(s0)
    e88377d8:	16e7bc23          	sd	a4,376(a5)
    e88377dc:	16843703          	ld	a4,360(s0)
    e88377e0:	16e7b423          	sd	a4,360(a5)
            for (qptr = q->next ; qptr; qptr = qptr->next)
    e88377e4:	639c                	ld	a5,0(a5)
    e88377e6:	b5ad                	j	e8837650 <uDNS_CheckCurrentQuestion+0x2fe>
            InitializeDNSMessage(&m->omsg.h, q->TargetQID, (DNSSECQuestion(q) ? DNSSecQFlags : uQueryFlags));
    e88377e8:	0006c797          	auipc	a5,0x6c
    e88377ec:	d9078793          	addi	a5,a5,-624 # e88a3578 <uQueryFlags>
    e88377f0:	bb05                	j	e8837520 <uDNS_CheckCurrentQuestion+0x1ce>
                    end = putDNSSECOption(&m->omsg, end, m->omsg.data + AbsoluteMaxDNSMessageData);
    e88377f2:	865a                	mv	a2,s6
    e88377f4:	85d2                	mv	a1,s4
    e88377f6:	854e                	mv	a0,s3
    e88377f8:	8a4df0ef          	jal	ra,e881689c <putDNSSECOption>
    e88377fc:	bb41                	j	e883758c <uDNS_CheckCurrentQuestion+0x23a>
                    if (q->state == LLQ_Poll) q->ThisQInterval = (LLQ_POLL_INTERVAL + mDNSRandom(LLQ_POLL_INTERVAL/10)) / QuestionIntervalStep;
    e88377fe:	0009d797          	auipc	a5,0x9d
    e8837802:	28278793          	addi	a5,a5,642 # e88d4a80 <mDNSPlatformOneSecond>
    e8837806:	4388                	lw	a0,0(a5)
    e8837808:	38400993          	li	s3,900
    e883780c:	02a989bb          	mulw	s3,s3,a0
    e8837810:	4529                	li	a0,10
    e8837812:	02a9c53b          	divw	a0,s3,a0
    e8837816:	ef2db0ef          	jal	ra,e8812f08 <mDNSRandom>
    e883781a:	0135053b          	addw	a0,a0,s3
    e883781e:	498d                	li	s3,3
    e8837820:	0335553b          	divuw	a0,a0,s3
    e8837824:	c848                	sw	a0,20(s0)
    e8837826:	ac55                	j	e8837ada <uDNS_CheckCurrentQuestion+0x788>
                        err = mDNSSendDNSMessage(m, &m->omsg, end, q->qDNSServer->interfaceID, q->LocalSocket, &q->qDNSServer->addr, q->qDNSServer->port, mDNSNULL, mDNSNULL, q->UseBackgroundTrafficClass);
    e8837828:	16843783          	ld	a5,360(s0)
    e883782c:	32044603          	lbu	a2,800(s0)
    e8837830:	4881                	li	a7,0
    e8837832:	0287d803          	lhu	a6,40(a5)
    e8837836:	6794                	ld	a3,8(a5)
    e8837838:	85ce                	mv	a1,s3
    e883783a:	e432                	sd	a2,8(sp)
    e883783c:	07d1                	addi	a5,a5,20
    e883783e:	e002                	sd	zero,0(sp)
    e8837840:	8652                	mv	a2,s4
    e8837842:	8526                	mv	a0,s1
    e8837844:	e6fdf0ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
            if (err == mStatus_HostUnreachErr)
    e8837848:	77c1                	lui	a5,0xffff0
    e883784a:	fdf78713          	addi	a4,a5,-33 # fffffffffffeffdf <__DRAM0_INF_BASE+0xfffffffeffffffdf>
    e883784e:	10e51e63          	bne	a0,a4,e883796a <uDNS_CheckCurrentQuestion+0x618>
                LogInfo("uDNS_CheckCurrentQuestion: host unreachable error for DNS server %#a for question [%p] %##s (%s)",
    e8837852:	0009d797          	auipc	a5,0x9d
    e8837856:	22278793          	addi	a5,a5,546 # e88d4a74 <mDNS_LoggingEnabled>
    e883785a:	4398                	lw	a4,0(a5)
    e883785c:	8a3e                	mv	s4,a5
    e883785e:	c705                	beqz	a4,e8837886 <uDNS_CheckCurrentQuestion+0x534>
    e8837860:	16843603          	ld	a2,360(s0)
    e8837864:	31445503          	lhu	a0,788(s0)
    e8837868:	0651                	addi	a2,a2,20
    e883786a:	e832                	sd	a2,16(sp)
    e883786c:	bf4de0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8837870:	87aa                	mv	a5,a0
    e8837872:	6642                	ld	a2,16(sp)
    e8837874:	874a                	mv	a4,s2
    e8837876:	86a2                	mv	a3,s0
    e8837878:	00078597          	auipc	a1,0x78
    e883787c:	96858593          	addi	a1,a1,-1688 # e88af1e0 <__func__.9833+0x1248>
    e8837880:	450d                	li	a0,3
    e8837882:	c2bf70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (!StrictUnicastOrdering)
    e8837886:	000ac797          	auipc	a5,0xac
    e883788a:	2e27c783          	lbu	a5,738(a5) # e88e3b68 <StrictUnicastOrdering>
    e883788e:	e395                	bnez	a5,e88378b2 <uDNS_CheckCurrentQuestion+0x560>
                    q->qDNSServer->penaltyTime = NonZeroTime(m->timenow + DNSSERVER_PENALTY_TIME);
    e8837890:	0009d797          	auipc	a5,0x9d
    e8837894:	1f078793          	addi	a5,a5,496 # e88d4a80 <mDNSPlatformOneSecond>
    e8837898:	4398                	lw	a4,0(a5)
    e883789a:	2404a783          	lw	a5,576(s1)
    e883789e:	03c00693          	li	a3,60
    e88378a2:	24e6978b          	mulaw	a5,a3,a4
    e88378a6:	16843703          	ld	a4,360(s0)
    e88378aa:	e391                	bnez	a5,e88378ae <uDNS_CheckCurrentQuestion+0x55c>
    e88378ac:	4785                	li	a5,1
    e88378ae:	12f72823          	sw	a5,304(a4)
                newServer = GetServerForQuestion(m, q);
    e88378b2:	85a2                	mv	a1,s0
    e88378b4:	8526                	mv	a0,s1
    e88378b6:	99be90ef          	jal	ra,e8821250 <GetServerForQuestion>
    e88378ba:	89aa                	mv	s3,a0
                if (!newServer)
    e88378bc:	ed11                	bnez	a0,e88378d8 <uDNS_CheckCurrentQuestion+0x586>
                    q->triedAllServersOnce = 1;
    e88378be:	4785                	li	a5,1
    e88378c0:	18f41123          	sh	a5,386(s0)
                    SetValidDNSServers(m, q);
    e88378c4:	85a2                	mv	a1,s0
    e88378c6:	8526                	mv	a0,s1
    e88378c8:	ff4e90ef          	jal	ra,e88210bc <SetValidDNSServers>
                    newServer = GetServerForQuestion(m, q);
    e88378cc:	85a2                	mv	a1,s0
    e88378ce:	8526                	mv	a0,s1
    e88378d0:	981e90ef          	jal	ra,e8821250 <GetServerForQuestion>
    e88378d4:	89aa                	mv	s3,a0
                if (newServer)
    e88378d6:	c139                	beqz	a0,e883791c <uDNS_CheckCurrentQuestion+0x5ca>
                    LogInfo("uDNS_checkCurrentQuestion: Retrying question %p %##s (%s) DNS Server %#a:%u ThisQInterval %d",
    e88378d8:	000a2783          	lw	a5,0(s4)
    e88378dc:	cb9d                	beqz	a5,e8837912 <uDNS_CheckCurrentQuestion+0x5c0>
    e88378de:	31445503          	lhu	a0,788(s0)
    e88378e2:	b7ede0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88378e6:	872a                	mv	a4,a0
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e88378e8:	0289c783          	lbu	a5,40(s3)
    e88378ec:	0299c803          	lbu	a6,41(s3)
    e88378f0:	01442883          	lw	a7,20(s0)
    e88378f4:	0087979b          	slliw	a5,a5,0x8
    e88378f8:	0107e833          	or	a6,a5,a6
    e88378fc:	86ca                	mv	a3,s2
    e88378fe:	01498793          	addi	a5,s3,20
    e8837902:	8622                	mv	a2,s0
    e8837904:	00078597          	auipc	a1,0x78
    e8837908:	94458593          	addi	a1,a1,-1724 # e88af248 <__func__.9833+0x12b0>
    e883790c:	450d                	li	a0,3
    e883790e:	b9ff70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    DNSServerChangeForQuestion(m, q, newServer);
    e8837912:	864e                	mv	a2,s3
    e8837914:	85a2                	mv	a1,s0
    e8837916:	8526                	mv	a0,s1
    e8837918:	f75f60ef          	jal	ra,e882e88c <DNSServerChangeForQuestion>
                if (q->triedAllServersOnce)
    e883791c:	18245783          	lhu	a5,386(s0)
    e8837920:	c795                	beqz	a5,e883794c <uDNS_CheckCurrentQuestion+0x5fa>
                    q->LastQTime = m->timenow;
    e8837922:	2404a783          	lw	a5,576(s1)
                    q->LastQTime     = m->timenow - q->ThisQInterval;
    e8837926:	c81c                	sw	a5,16(s0)
                q->unansweredQueries = 0;
    e8837928:	18040223          	sb	zero,388(s0)
            SetNextQueryTime(m, q);
    e883792c:	85a2                	mv	a1,s0
}
    e883792e:	640a                	ld	s0,128(sp)
    e8837930:	60aa                	ld	ra,136(sp)
    e8837932:	7946                	ld	s2,112(sp)
    e8837934:	79a6                	ld	s3,104(sp)
    e8837936:	7a06                	ld	s4,96(sp)
    e8837938:	6ae6                	ld	s5,88(sp)
    e883793a:	6b46                	ld	s6,80(sp)
    e883793c:	6ba6                	ld	s7,72(sp)
    e883793e:	6c06                	ld	s8,64(sp)
    e8837940:	7ce2                	ld	s9,56(sp)
            SetNextQueryTime(m, q);
    e8837942:	8526                	mv	a0,s1
}
    e8837944:	74e6                	ld	s1,120(sp)
    e8837946:	6149                	addi	sp,sp,144
            SetNextQueryTime(m, q);
    e8837948:	925e606f          	j	e881e26c <SetNextQueryTime>
                    q->ThisQInterval = InitialQuestionInterval;
    e883794c:	0009d797          	auipc	a5,0x9d
    e8837950:	13478793          	addi	a5,a5,308 # e88d4a80 <mDNSPlatformOneSecond>
    e8837954:	439c                	lw	a5,0(a5)
    e8837956:	470d                	li	a4,3
    e8837958:	2789                	addiw	a5,a5,2
    e883795a:	02e7c7bb          	divw	a5,a5,a4
    e883795e:	c85c                	sw	a5,20(s0)
                    q->LastQTime     = m->timenow - q->ThisQInterval;
    e8837960:	2404a703          	lw	a4,576(s1)
    e8837964:	40f707bb          	subw	a5,a4,a5
    e8837968:	bf7d                	j	e8837926 <uDNS_CheckCurrentQuestion+0x5d4>
                if (err != mStatus_TransientErr)   // if it is not a transient error backoff and DO NOT flood queries unnecessarily
    e883796a:	1799                	addi	a5,a5,-26
    e883796c:	c6f517e3          	bne	a0,a5,e88375da <uDNS_CheckCurrentQuestion+0x288>
                q->LastQTime = m->timenow;
    e8837970:	2404a783          	lw	a5,576(s1)
    e8837974:	c81c                	sw	a5,16(s0)
    e8837976:	bf5d                	j	e883792c <uDNS_CheckCurrentQuestion+0x5da>
                    q->ThisQInterval = q->ThisQInterval * QuestionIntervalStep;
    e8837978:	485c                	lw	a5,20(s0)
    e883797a:	470d                	li	a4,3
                    SetNextQueryTime(m, q);
    e883797c:	85a2                	mv	a1,s0
                    q->ThisQInterval = q->ThisQInterval * QuestionIntervalStep;
    e883797e:	02e787bb          	mulw	a5,a5,a4
                    SetNextQueryTime(m, q);
    e8837982:	8526                	mv	a0,s1
                    q->ThisQInterval = q->ThisQInterval * QuestionIntervalStep;
    e8837984:	c85c                	sw	a5,20(s0)
                    q->LastQTime = m->timenow;
    e8837986:	2404a783          	lw	a5,576(s1)
    e883798a:	c81c                	sw	a5,16(s0)
                    SetNextQueryTime(m, q);
    e883798c:	8e1e60ef          	jal	ra,e881e26c <SetNextQueryTime>
                    q->qDNSServer = GetServerForQuestion(m, q);
    e8837990:	85a2                	mv	a1,s0
    e8837992:	8526                	mv	a0,s1
    e8837994:	8bde90ef          	jal	ra,e8821250 <GetServerForQuestion>
    e8837998:	16a43423          	sd	a0,360(s0)
                    for (qptr = q->next ; qptr; qptr = qptr->next)
    e883799c:	601c                	ld	a5,0(s0)
    e883799e:	eba9                	bnez	a5,e88379f0 <uDNS_CheckCurrentQuestion+0x69e>
                    LogInfo("uDNS_checkCurrentQuestion: Tried all DNS servers, retry question %p SuppressUnusable %d %##s (%s) with DNS Server %#a:%d after 60 seconds, ThisQInterval %d",
    e88379a0:	0009d797          	auipc	a5,0x9d
    e88379a4:	0d478793          	addi	a5,a5,212 # e88d4a74 <mDNS_LoggingEnabled>
    e88379a8:	439c                	lw	a5,0(a5)
    e88379aa:	d60780e3          	beqz	a5,e883770a <uDNS_CheckCurrentQuestion+0x3b8>
    e88379ae:	31c44683          	lbu	a3,796(s0)
    e88379b2:	31445503          	lhu	a0,788(s0)
    e88379b6:	e836                	sd	a3,16(sp)
    e88379b8:	aa8de0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88379bc:	87aa                	mv	a5,a0
    e88379be:	16843803          	ld	a6,360(s0)
    e88379c2:	66c2                	ld	a3,16(sp)
    e88379c4:	0c080563          	beqz	a6,e8837a8e <uDNS_CheckCurrentQuestion+0x73c>
    e88379c8:	02884703          	lbu	a4,40(a6)
    e88379cc:	02984883          	lbu	a7,41(a6)
    e88379d0:	0851                	addi	a6,a6,20
    e88379d2:	4850                	lw	a2,20(s0)
    e88379d4:	0722                	slli	a4,a4,0x8
    e88379d6:	00e8e8b3          	or	a7,a7,a4
    e88379da:	e032                	sd	a2,0(sp)
    e88379dc:	874a                	mv	a4,s2
    e88379de:	8622                	mv	a2,s0
    e88379e0:	00078597          	auipc	a1,0x78
    e88379e4:	9d058593          	addi	a1,a1,-1584 # e88af3b0 <__func__.9833+0x1418>
    e88379e8:	450d                	li	a0,3
    e88379ea:	ac3f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e88379ee:	bb31                	j	e883770a <uDNS_CheckCurrentQuestion+0x3b8>
                        if (qptr->DuplicateOf == q) { qptr->validDNSServers = q->validDNSServers; qptr->qDNSServer = q->qDNSServer; }
    e88379f0:	6bb8                	ld	a4,80(a5)
    e88379f2:	00871e63          	bne	a4,s0,e8837a0e <uDNS_CheckCurrentQuestion+0x6bc>
    e88379f6:	17043703          	ld	a4,368(s0)
    e88379fa:	16e7b823          	sd	a4,368(a5)
    e88379fe:	17843703          	ld	a4,376(s0)
    e8837a02:	16e7bc23          	sd	a4,376(a5)
    e8837a06:	16843703          	ld	a4,360(s0)
    e8837a0a:	16e7b423          	sd	a4,360(a5)
                    for (qptr = q->next ; qptr; qptr = qptr->next)
    e8837a0e:	639c                	ld	a5,0(a5)
    e8837a10:	b779                	j	e883799e <uDNS_CheckCurrentQuestion+0x64c>
                q->ThisQInterval = 0;
    e8837a12:	00042a23          	sw	zero,20(s0)
    e8837a16:	02864783          	lbu	a5,40(a2)
    e8837a1a:	02964683          	lbu	a3,41(a2)
                LogMsg("uDNS_CheckCurrentQuestion DNS server %#a:%d for %##s is disabled", &q->qDNSServer->addr, mDNSVal16(q->qDNSServer->port), q->qname.c);
    e8837a1e:	874a                	mv	a4,s2
    e8837a20:	0087979b          	slliw	a5,a5,0x8
    e8837a24:	8edd                	or	a3,a3,a5
    e8837a26:	0651                	addi	a2,a2,20
    e8837a28:	00078597          	auipc	a1,0x78
    e8837a2c:	a2858593          	addi	a1,a1,-1496 # e88af450 <__func__.9833+0x14b8>
    e8837a30:	4501                	li	a0,0
    e8837a32:	a7bf70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8837a36:	b9d1                	j	e883770a <uDNS_CheckCurrentQuestion+0x3b8>
                for (rr = cg->members; rr; rr=rr->next)
    e8837a38:	010a3a83          	ld	s5,16(s4)
                        LogInfo("uDNS_CheckCurrentQuestion: Purged resourcerecord %s", CRDisplayString(m, rr));
    e8837a3c:	0009db97          	auipc	s7,0x9d
    e8837a40:	038b8b93          	addi	s7,s7,56 # e88d4a74 <mDNS_LoggingEnabled>
    e8837a44:	03b48c13          	addi	s8,s1,59
    e8837a48:	00078c97          	auipc	s9,0x78
    e8837a4c:	a50c8c93          	addi	s9,s9,-1456 # e88af498 <__func__.9833+0x1500>
                for (rr = cg->members; rr; rr=rr->next)
    e8837a50:	ca0a8fe3          	beqz	s5,e883770e <uDNS_CheckCurrentQuestion+0x3bc>
                    if (SameNameRecordAnswersQuestion(&rr->resrec, q))
    e8837a54:	008a8b13          	addi	s6,s5,8
    e8837a58:	85a2                	mv	a1,s0
    e8837a5a:	855a                	mv	a0,s6
    e8837a5c:	c2ede0ef          	jal	ra,e8815e8a <SameNameRecordAnswersQuestion>
    e8837a60:	c505                	beqz	a0,e8837a88 <uDNS_CheckCurrentQuestion+0x736>
                        LogInfo("uDNS_CheckCurrentQuestion: Purged resourcerecord %s", CRDisplayString(m, rr));
    e8837a62:	000ba783          	lw	a5,0(s7)
    e8837a66:	cf89                	beqz	a5,e8837a80 <uDNS_CheckCurrentQuestion+0x72e>
    e8837a68:	030ab583          	ld	a1,48(s5)
    e8837a6c:	8662                	mv	a2,s8
    e8837a6e:	855a                	mv	a0,s6
    e8837a70:	0591                	addi	a1,a1,4
    e8837a72:	fa3de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8837a76:	862a                	mv	a2,a0
    e8837a78:	85e6                	mv	a1,s9
    e8837a7a:	450d                	li	a0,3
    e8837a7c:	a31f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                        mDNS_PurgeCacheResourceRecord(m, rr);
    e8837a80:	85d6                	mv	a1,s5
    e8837a82:	8526                	mv	a0,s1
    e8837a84:	b47e80ef          	jal	ra,e88205ca <mDNS_PurgeCacheResourceRecord>
                for (rr = cg->members; rr; rr=rr->next)
    e8837a88:	000aba83          	ld	s5,0(s5)
    e8837a8c:	b7d1                	j	e8837a50 <uDNS_CheckCurrentQuestion+0x6fe>
                    LogInfo("uDNS_checkCurrentQuestion: Tried all DNS servers, retry question %p SuppressUnusable %d %##s (%s) with DNS Server %#a:%d after 60 seconds, ThisQInterval %d",
    e8837a8e:	0006c617          	auipc	a2,0x6c
    e8837a92:	b1a60613          	addi	a2,a2,-1254 # e88a35a8 <zeroIPPort>
    e8837a96:	00064703          	lbu	a4,0(a2)
    e8837a9a:	00164883          	lbu	a7,1(a2)
    e8837a9e:	bf15                	j	e88379d2 <uDNS_CheckCurrentQuestion+0x680>
            if (end > m->omsg.data)
    e8837aa0:	034afd63          	bgeu	s5,s4,e8837ada <uDNS_CheckCurrentQuestion+0x788>
                    if (q->nta) CancelGetZoneData(m, q->nta);
    e8837aa4:	18843583          	ld	a1,392(s0)
    e8837aa8:	c581                	beqz	a1,e8837ab0 <uDNS_CheckCurrentQuestion+0x75e>
    e8837aaa:	8526                	mv	a0,s1
    e8837aac:	d89e90ef          	jal	ra,e8821834 <CancelGetZoneData>
                    q->nta = StartGetZoneData(m, &q->qname, q->LongLived ? ZoneServiceLLQ : ZoneServiceQuery, PrivateQueryGotZoneData, q);
    e8837ab0:	31844603          	lbu	a2,792(s0)
    e8837ab4:	8722                	mv	a4,s0
    e8837ab6:	ffffc697          	auipc	a3,0xffffc
    e8837aba:	3b468693          	addi	a3,a3,948 # e8833e6a <PrivateQueryGotZoneData>
    e8837abe:	00c03633          	snez	a2,a2
    e8837ac2:	0605                	addi	a2,a2,1
    e8837ac4:	85ca                	mv	a1,s2
    e8837ac6:	8526                	mv	a0,s1
    e8837ac8:	a82fd0ef          	jal	ra,e8834d4a <StartGetZoneData>
    e8837acc:	18a43423          	sd	a0,392(s0)
                    if (q->state == LLQ_Poll) q->ThisQInterval = (LLQ_POLL_INTERVAL + mDNSRandom(LLQ_POLL_INTERVAL/10)) / QuestionIntervalStep;
    e8837ad0:	1b444703          	lbu	a4,436(s0)
    e8837ad4:	4791                	li	a5,4
    e8837ad6:	d2f704e3          	beq	a4,a5,e88377fe <uDNS_CheckCurrentQuestion+0x4ac>
            private = PrivateQuery(q);
    e8837ada:	4685                	li	a3,1
                    q->ThisQInterval = q->ThisQInterval * UDNSBackOffMultiplier;
    e8837adc:	485c                	lw	a5,20(s0)
    e8837ade:	0017961b          	slliw	a2,a5,0x1
    e8837ae2:	c850                	sw	a2,20(s0)
                    if ((q->ThisQInterval > 0) && (q->ThisQInterval < MinQuestionInterval))  // We do not want to retx within 1 sec
    e8837ae4:	0009d797          	auipc	a5,0x9d
    e8837ae8:	f9c78793          	addi	a5,a5,-100 # e88d4a80 <mDNSPlatformOneSecond>
    e8837aec:	4398                	lw	a4,0(a5)
    e8837aee:	89be                	mv	s3,a5
    e8837af0:	00c05563          	blez	a2,e8837afa <uDNS_CheckCurrentQuestion+0x7a8>
    e8837af4:	00e65363          	bge	a2,a4,e8837afa <uDNS_CheckCurrentQuestion+0x7a8>
                        q->ThisQInterval = MinQuestionInterval;
    e8837af8:	c858                	sw	a4,20(s0)
                    q->unansweredQueries++;
    e8837afa:	18444783          	lbu	a5,388(s0)
                    if (q->ThisQInterval > MAX_UCAST_POLL_INTERVAL)
    e8837afe:	484c                	lw	a1,20(s0)
                    q->unansweredQueries++;
    e8837b00:	2785                	addiw	a5,a5,1
    e8837b02:	18f40223          	sb	a5,388(s0)
                    if (q->ThisQInterval > MAX_UCAST_POLL_INTERVAL)
    e8837b06:	6785                	lui	a5,0x1
    e8837b08:	e107879b          	addiw	a5,a5,-496
    e8837b0c:	02f7063b          	mulw	a2,a4,a5
    e8837b10:	00b65363          	bge	a2,a1,e8837b16 <uDNS_CheckCurrentQuestion+0x7c4>
                        q->ThisQInterval = MAX_UCAST_POLL_INTERVAL;
    e8837b14:	c850                	sw	a2,20(s0)
                    if (private && q->state != LLQ_Poll)
    e8837b16:	cab9                	beqz	a3,e8837b6c <uDNS_CheckCurrentQuestion+0x81a>
    e8837b18:	1b444683          	lbu	a3,436(s0)
    e8837b1c:	4791                	li	a5,4
    e8837b1e:	04f68763          	beq	a3,a5,e8837b6c <uDNS_CheckCurrentQuestion+0x81a>
                        if (q->ThisQInterval < (3 * mDNSPlatformOneSecond))
    e8837b22:	478d                	li	a5,3
    e8837b24:	02e7863b          	mulw	a2,a5,a4
    e8837b28:	4854                	lw	a3,20(s0)
    e8837b2a:	00c6d563          	bge	a3,a2,e8837b34 <uDNS_CheckCurrentQuestion+0x7e2>
                            q->ThisQInterval = q->ThisQInterval * QuestionIntervalStep;
    e8837b2e:	02d787bb          	mulw	a5,a5,a3
    e8837b32:	c85c                	sw	a5,20(s0)
                        if (q->ThisQInterval > LLQ_POLL_INTERVAL)
    e8837b34:	38400793          	li	a5,900
    e8837b38:	02e787bb          	mulw	a5,a5,a4
    e8837b3c:	4854                	lw	a3,20(s0)
    e8837b3e:	00d7d363          	bge	a5,a3,e8837b44 <uDNS_CheckCurrentQuestion+0x7f2>
                            q->ThisQInterval = LLQ_POLL_INTERVAL;
    e8837b42:	c85c                	sw	a5,20(s0)
                        LogInfo("uDNS_CheckCurrentQuestion: private non polling question for %##s (%s) will be retried in %d ms", q->qname.c, DNSTypeName(q->qtype), q->ThisQInterval);
    e8837b44:	0009d797          	auipc	a5,0x9d
    e8837b48:	f3078793          	addi	a5,a5,-208 # e88d4a74 <mDNS_LoggingEnabled>
    e8837b4c:	439c                	lw	a5,0(a5)
    e8837b4e:	cf99                	beqz	a5,e8837b6c <uDNS_CheckCurrentQuestion+0x81a>
    e8837b50:	31445503          	lhu	a0,788(s0)
    e8837b54:	90cde0ef          	jal	ra,e8815c60 <DNSTypeName>
    e8837b58:	86aa                	mv	a3,a0
    e8837b5a:	4858                	lw	a4,20(s0)
    e8837b5c:	864a                	mv	a2,s2
    e8837b5e:	00077597          	auipc	a1,0x77
    e8837b62:	74a58593          	addi	a1,a1,1866 # e88af2a8 <__func__.9833+0x1310>
    e8837b66:	450d                	li	a0,3
    e8837b68:	945f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    if (q->qDNSServer->cellIntf)
    e8837b6c:	16843783          	ld	a5,360(s0)
    e8837b70:	13f7c783          	lbu	a5,319(a5)
    e8837b74:	de078ee3          	beqz	a5,e8837970 <uDNS_CheckCurrentQuestion+0x61e>
                        if (q->ThisQInterval < MIN_UCAST_RETRANS_TIMEOUT)
    e8837b78:	0009a783          	lw	a5,0(s3)
    e8837b7c:	4854                	lw	a3,20(s0)
    e8837b7e:	0017971b          	slliw	a4,a5,0x1
    e8837b82:	dee6d7e3          	bge	a3,a4,e8837970 <uDNS_CheckCurrentQuestion+0x61e>
                            q->ThisQInterval = MIN_UCAST_RETRANS_TIMEOUT;
    e8837b86:	c858                	sw	a4,20(s0)
    e8837b88:	b3e5                	j	e8837970 <uDNS_CheckCurrentQuestion+0x61e>

00000000e8837b8a <CheckNATMappings>:
{
    e8837b8a:	7159                	addi	sp,sp,-112
    e8837b8c:	f0a2                	sd	s0,96(sp)
    mDNSBool rfc1918 = mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4);
    e8837b8e:	640d                	lui	s0,0x3
{
    e8837b90:	eca6                	sd	s1,88(sp)
    e8837b92:	84aa                	mv	s1,a0
    mDNSBool rfc1918 = mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4);
    e8837b94:	22840513          	addi	a0,s0,552 # 3228 <memcmp-0xe87fcdd8>
    e8837b98:	9526                	add	a0,a0,s1
{
    e8837b9a:	e4ce                	sd	s3,72(sp)
    e8837b9c:	f486                	sd	ra,104(sp)
    e8837b9e:	e8ca                	sd	s2,80(sp)
    e8837ba0:	e0d2                	sd	s4,64(sp)
    e8837ba2:	fc56                	sd	s5,56(sp)
    e8837ba4:	f85a                	sd	s6,48(sp)
    e8837ba6:	f45e                	sd	s7,40(sp)
    e8837ba8:	f062                	sd	s8,32(sp)
    e8837baa:	ec66                	sd	s9,24(sp)
    mDNSBool rfc1918 = mDNSv4AddrIsRFC1918(&m->AdvertisedV4.ip.v4);
    e8837bac:	a4edb0ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    mDNSBool HaveRoutable = !rfc1918 && !mDNSIPv4AddressIsZero(m->AdvertisedV4.ip.v4);
    e8837bb0:	4981                	li	s3,0
    e8837bb2:	e511                	bnez	a0,e8837bbe <CheckNATMappings+0x34>
    e8837bb4:	9426                	add	s0,s0,s1
    e8837bb6:	22842983          	lw	s3,552(s0)
    e8837bba:	013039b3          	snez	s3,s3
    m->NextScheduledNATOp = m->timenow + FutureTime;
    e8837bbe:	2404a783          	lw	a5,576(s1)
    e8837bc2:	38000737          	lui	a4,0x38000
    e8837bc6:	9fb9                	addw	a5,a5,a4
    e8837bc8:	26f4a223          	sw	a5,612(s1)
    if (HaveRoutable) m->ExtAddress = m->AdvertisedV4.ip.v4;
    e8837bcc:	00098a63          	beqz	s3,e8837be0 <CheckNATMappings+0x56>
    e8837bd0:	670d                	lui	a4,0x3
    e8837bd2:	9726                	add	a4,a4,s1
    e8837bd4:	22872703          	lw	a4,552(a4) # 3228 <memcmp-0xe87fcdd8>
    e8837bd8:	6791                	lui	a5,0x4
    e8837bda:	97a6                	add	a5,a5,s1
    e8837bdc:	c0e7a423          	sw	a4,-1016(a5) # 3c08 <memcmp-0xe87fc3f8>
    if (m->NATTraversals && rfc1918)            // Do we need to open a socket to receive multicast announcements from router?
    e8837be0:	6411                	lui	s0,0x4
    e8837be2:	9426                	add	s0,s0,s1
    e8837be4:	bf043703          	ld	a4,-1040(s0) # 3bf0 <memcmp-0xe87fc410>
    e8837be8:	c1843783          	ld	a5,-1000(s0)
    e8837bec:	0e070d63          	beqz	a4,e8837ce6 <CheckNATMappings+0x15c>
    e8837bf0:	0e050b63          	beqz	a0,e8837ce6 <CheckNATMappings+0x15c>
        if (m->NATMcastRecvskt == mDNSNULL)     // If we are behind a NAT and the socket hasn't been opened yet, open it
    e8837bf4:	10079b63          	bnez	a5,e8837d0a <CheckNATMappings+0x180>
            m->NATMcastRecvskt = mDNSPlatformUDPSocket(NATPMPAnnouncementPort);
    e8837bf8:	0006b797          	auipc	a5,0x6b
    e8837bfc:	96878793          	addi	a5,a5,-1688 # e88a2560 <NATPMPAnnouncementPort>
    e8837c00:	0007d503          	lhu	a0,0(a5)
    e8837c04:	d0df70ef          	jal	ra,e882f910 <mDNSPlatformUDPSocket>
    e8837c08:	c0a43c23          	sd	a0,-1000(s0)
            if (!m->NATMcastRecvskt)
    e8837c0c:	0009d797          	auipc	a5,0x9d
    e8837c10:	e7c78793          	addi	a5,a5,-388 # e88d4a88 <needLog.9732>
    e8837c14:	e569                	bnez	a0,e8837cde <CheckNATMappings+0x154>
                if (needLog)
    e8837c16:	0007c783          	lbu	a5,0(a5)
    e8837c1a:	cb99                	beqz	a5,e8837c30 <CheckNATMappings+0xa6>
                    LogMsg("CheckNATMappings: Failed to allocate port 5350 UDP multicast socket for PCP & NAT-PMP announcements");
    e8837c1c:	00074597          	auipc	a1,0x74
    e8837c20:	59458593          	addi	a1,a1,1428 # e88ac1b0 <kOn.10632+0x268>
    e8837c24:	889f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    needLog = mDNSfalse;
    e8837c28:	0009d797          	auipc	a5,0x9d
    e8837c2c:	e6078023          	sb	zero,-416(a5) # e88d4a88 <needLog.9732>
    if (!m->NATTraversals)
    e8837c30:	6791                	lui	a5,0x4
    e8837c32:	97a6                	add	a5,a5,s1
    e8837c34:	bf07b783          	ld	a5,-1040(a5) # 3bf0 <memcmp-0xe87fc410>
    e8837c38:	ebe9                	bnez	a5,e8837d0a <CheckNATMappings+0x180>
        m->retryGetAddr = NonZeroTime(m->timenow + FutureTime);
    e8837c3a:	2404a703          	lw	a4,576(s1)
    e8837c3e:	380007b7          	lui	a5,0x38000
    e8837c42:	9fb9                	addw	a5,a5,a4
mDNSinline mDNSs32 NonZeroTime(mDNSs32 t) { if (t) return(t);else return(1);}
    e8837c44:	e391                	bnez	a5,e8837c48 <CheckNATMappings+0xbe>
    e8837c46:	4785                	li	a5,1
    e8837c48:	6711                	lui	a4,0x4
    e8837c4a:	9726                	add	a4,a4,s1
    e8837c4c:	c0f72223          	sw	a5,-1020(a4) # 3c04 <memcmp-0xe87fc3fc>
        LogInfo("uDNS_RequestAddress: Setting retryGetAddr to future");
    e8837c50:	0009d797          	auipc	a5,0x9d
    e8837c54:	e2478793          	addi	a5,a5,-476 # e88d4a74 <mDNS_LoggingEnabled>
    e8837c58:	439c                	lw	a5,0(a5)
    e8837c5a:	cb81                	beqz	a5,e8837c6a <CheckNATMappings+0xe0>
    e8837c5c:	00074597          	auipc	a1,0x74
    e8837c60:	5bc58593          	addi	a1,a1,1468 # e88ac218 <kOn.10632+0x2d0>
    e8837c64:	450d                	li	a0,3
    e8837c66:	847f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (m->NextScheduledNATOp - m->retryGetAddr > 0)
    e8837c6a:	6791                	lui	a5,0x4
    e8837c6c:	97a6                	add	a5,a5,s1
    e8837c6e:	c047a703          	lw	a4,-1020(a5) # 3c04 <memcmp-0xe87fc3fc>
    e8837c72:	2644a783          	lw	a5,612(s1)
    e8837c76:	9f99                	subw	a5,a5,a4
    e8837c78:	00f05463          	blez	a5,e8837c80 <CheckNATMappings+0xf6>
        m->NextScheduledNATOp = m->retryGetAddr;
    e8837c7c:	26e4a223          	sw	a4,612(s1)
    if (m->CurrentNATTraversal) LogMsg("WARNING m->CurrentNATTraversal already in use");
    e8837c80:	6791                	lui	a5,0x4
    e8837c82:	97a6                	add	a5,a5,s1
    e8837c84:	bf87b783          	ld	a5,-1032(a5) # 3bf8 <memcmp-0xe87fc408>
    e8837c88:	cb81                	beqz	a5,e8837c98 <CheckNATMappings+0x10e>
    e8837c8a:	00074597          	auipc	a1,0x74
    e8837c8e:	5c658593          	addi	a1,a1,1478 # e88ac250 <kOn.10632+0x308>
    e8837c92:	4501                	li	a0,0
    e8837c94:	819f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentNATTraversal = m->NATTraversals;
    e8837c98:	6911                	lui	s2,0x4
    e8837c9a:	9926                	add	s2,s2,s1
    e8837c9c:	bf093783          	ld	a5,-1040(s2) # 3bf0 <memcmp-0xe87fc410>
        mDNSv4Addr EffectiveAddress = HaveRoutable ? m->AdvertisedV4.ip.v4 : cur->NewAddress;
    e8837ca0:	6a0d                	lui	s4,0x3
    e8837ca2:	01448c33          	add	s8,s1,s4
            const mStatus EffectiveResult = cur->NewResult ? cur->NewResult : mDNSv4AddrIsRFC1918(&EffectiveAddress) ? mStatus_DoubleNAT : mStatus_NoError;
    e8837ca6:	7bc1                	lui	s7,0xffff0
                            LogMsg("CheckNATMapping: Failed to obtain NAT port mapping %p from router %#a external address %.4a internal port %5d interval %d error %d",
    e8837ca8:	210a0a13          	addi	s4,s4,528 # 3210 <memcmp-0xe87fcdf0>
    m->CurrentNATTraversal = m->NATTraversals;
    e8837cac:	bef93c23          	sd	a5,-1032(s2)
    while (m->CurrentNATTraversal)
    e8837cb0:	0009db17          	auipc	s6,0x9d
    e8837cb4:	dd0b0b13          	addi	s6,s6,-560 # e88d4a80 <mDNSPlatformOneSecond>
                            LogMsg("CheckNATMapping: Failed to obtain NAT port mapping %p from router %#a external address %.4a internal port %5d interval %d error %d",
    e8837cb8:	9a26                	add	s4,s4,s1
            const mStatus EffectiveResult = cur->NewResult ? cur->NewResult : mDNSv4AddrIsRFC1918(&EffectiveAddress) ? mStatus_DoubleNAT : mStatus_NoError;
    e8837cba:	1ba9                	addi	s7,s7,-22
    while (m->CurrentNATTraversal)
    e8837cbc:	bf893403          	ld	s0,-1032(s2)
    e8837cc0:	0e041b63          	bnez	s0,e8837db6 <CheckNATMappings+0x22c>
}
    e8837cc4:	70a6                	ld	ra,104(sp)
    e8837cc6:	7406                	ld	s0,96(sp)
    e8837cc8:	64e6                	ld	s1,88(sp)
    e8837cca:	6946                	ld	s2,80(sp)
    e8837ccc:	69a6                	ld	s3,72(sp)
    e8837cce:	6a06                	ld	s4,64(sp)
    e8837cd0:	7ae2                	ld	s5,56(sp)
    e8837cd2:	7b42                	ld	s6,48(sp)
    e8837cd4:	7ba2                	ld	s7,40(sp)
    e8837cd6:	7c02                	ld	s8,32(sp)
    e8837cd8:	6ce2                	ld	s9,24(sp)
    e8837cda:	6165                	addi	sp,sp,112
    e8837cdc:	8082                	ret
                needLog = mDNStrue;
    e8837cde:	4705                	li	a4,1
    e8837ce0:	00e78023          	sb	a4,0(a5)
    e8837ce4:	b7b1                	j	e8837c30 <CheckNATMappings+0xa6>
        if (m->NATMcastRecvskt) { mDNSPlatformUDPClose(m->NATMcastRecvskt); m->NATMcastRecvskt = mDNSNULL; }
    e8837ce6:	cb81                	beqz	a5,e8837cf6 <CheckNATMappings+0x16c>
    e8837ce8:	853e                	mv	a0,a5
    e8837cea:	c2bf70ef          	jal	ra,e882f914 <mDNSPlatformUDPClose>
    e8837cee:	6791                	lui	a5,0x4
    e8837cf0:	97a6                	add	a5,a5,s1
    e8837cf2:	c007bc23          	sd	zero,-1000(a5) # 3c18 <memcmp-0xe87fc3e8>
        if (m->SSDPSocket)      { debugf("CheckNATMappings destroying SSDPSocket %p", &m->SSDPSocket); mDNSPlatformUDPClose(m->SSDPSocket); m->SSDPSocket = mDNSNULL; }
    e8837cf6:	6411                	lui	s0,0x4
    e8837cf8:	9426                	add	s0,s0,s1
    e8837cfa:	d2043503          	ld	a0,-736(s0) # 3d20 <memcmp-0xe87fc2e0>
    e8837cfe:	d90d                	beqz	a0,e8837c30 <CheckNATMappings+0xa6>
    e8837d00:	c15f70ef          	jal	ra,e882f914 <mDNSPlatformUDPClose>
    e8837d04:	d2043023          	sd	zero,-736(s0)
    e8837d08:	b725                	j	e8837c30 <CheckNATMappings+0xa6>
    else if (m->timenow - m->retryGetAddr >= 0)
    e8837d0a:	6711                	lui	a4,0x4
    e8837d0c:	9726                	add	a4,a4,s1
    e8837d0e:	2404a783          	lw	a5,576(s1)
    e8837d12:	c0472703          	lw	a4,-1020(a4) # 3c04 <memcmp-0xe87fc3fc>
    e8837d16:	9f99                	subw	a5,a5,a4
    e8837d18:	f407c9e3          	bltz	a5,e8837c6a <CheckNATMappings+0xe0>
        if (mDNSv4AddrIsRFC1918(&m->Router.ip.v4))
    e8837d1c:	640d                	lui	s0,0x3
    e8837d1e:	21440513          	addi	a0,s0,532 # 3214 <memcmp-0xe87fcdec>
    e8837d22:	9526                	add	a0,a0,s1
    e8837d24:	8d6db0ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e8837d28:	c905                	beqz	a0,e8837d58 <CheckNATMappings+0x1ce>
            err = mDNSPlatformSendUDP(m, start, end, 0, mDNSNULL, &m->Router, NATPMPPort, mDNSfalse);
    e8837d2a:	0006b717          	auipc	a4,0x6b
    e8837d2e:	83e70713          	addi	a4,a4,-1986 # e88a2568 <NATPMPPort>
    e8837d32:	00075803          	lhu	a6,0(a4)
    e8837d36:	21040793          	addi	a5,s0,528
    e8837d3a:	4881                	li	a7,0
    e8837d3c:	97a6                	add	a5,a5,s1
    e8837d3e:	4701                	li	a4,0
    e8837d40:	4681                	li	a3,0
    e8837d42:	000ac617          	auipc	a2,0xac
    e8837d46:	e3060613          	addi	a2,a2,-464 # e88e3b72 <req.8947+0x2>
    e8837d4a:	000ac597          	auipc	a1,0xac
    e8837d4e:	e2658593          	addi	a1,a1,-474 # e88e3b70 <req.8947>
    e8837d52:	8526                	mv	a0,s1
    e8837d54:	dadf70ef          	jal	ra,e882fb00 <mDNSPlatformSendUDP>
        if (m->retryIntervalGetAddr < NATMAP_INIT_RETRY)
    e8837d58:	0009d697          	auipc	a3,0x9d
    e8837d5c:	d2868693          	addi	a3,a3,-728 # e88d4a80 <mDNSPlatformOneSecond>
    e8837d60:	428c                	lw	a1,0(a3)
    e8837d62:	4611                	li	a2,4
    e8837d64:	6791                	lui	a5,0x4
    e8837d66:	02c5c6bb          	divw	a3,a1,a2
    e8837d6a:	97a6                	add	a5,a5,s1
    e8837d6c:	c007a703          	lw	a4,-1024(a5) # 3c00 <memcmp-0xe87fc400>
    e8837d70:	02d75263          	bge	a4,a3,e8837d94 <CheckNATMappings+0x20a>
            m->retryIntervalGetAddr = NATMAP_INIT_RETRY;
    e8837d74:	c0d7a023          	sw	a3,-1024(a5)
        m->retryGetAddr = NonZeroTime(m->timenow + m->retryIntervalGetAddr);
    e8837d78:	6711                	lui	a4,0x4
    e8837d7a:	9726                	add	a4,a4,s1
    e8837d7c:	2404a783          	lw	a5,576(s1)
    e8837d80:	c0072703          	lw	a4,-1024(a4) # 3c00 <memcmp-0xe87fc400>
    e8837d84:	9fb9                	addw	a5,a5,a4
    e8837d86:	e391                	bnez	a5,e8837d8a <CheckNATMappings+0x200>
    e8837d88:	4785                	li	a5,1
    e8837d8a:	6711                	lui	a4,0x4
    e8837d8c:	9726                	add	a4,a4,s1
    e8837d8e:	c0f72223          	sw	a5,-1020(a4) # 3c04 <memcmp-0xe87fc3fc>
    e8837d92:	bde1                	j	e8837c6a <CheckNATMappings+0xe0>
        else if (m->retryIntervalGetAddr < NATMAP_MAX_RETRY_INTERVAL / 2)
    e8837d94:	38400693          	li	a3,900
    e8837d98:	02b686bb          	mulw	a3,a3,a1
    e8837d9c:	4609                	li	a2,2
    e8837d9e:	02c6c63b          	divw	a2,a3,a2
    e8837da2:	00c75763          	bge	a4,a2,e8837db0 <CheckNATMappings+0x226>
            m->retryIntervalGetAddr *= 2;
    e8837da6:	0017171b          	slliw	a4,a4,0x1
    e8837daa:	c0e7a023          	sw	a4,-1024(a5)
    e8837dae:	b7e9                	j	e8837d78 <CheckNATMappings+0x1ee>
            m->retryIntervalGetAddr = NATMAP_MAX_RETRY_INTERVAL;
    e8837db0:	c0d7a023          	sw	a3,-1024(a5)
    e8837db4:	b7d1                	j	e8837d78 <CheckNATMappings+0x1ee>
        mDNSv4Addr EffectiveAddress = HaveRoutable ? m->AdvertisedV4.ip.v4 : cur->NewAddress;
    e8837db6:	14098663          	beqz	s3,e8837f02 <CheckNATMappings+0x378>
    e8837dba:	228c2783          	lw	a5,552(s8)
    e8837dbe:	c43e                	sw	a5,8(sp)
        m->CurrentNATTraversal = m->CurrentNATTraversal->next;
    e8837dc0:	601c                	ld	a5,0(s0)
    e8837dc2:	bef93c23          	sd	a5,-1032(s2)
        if (HaveRoutable)       // If not RFC 1918 address, our own address and port are effectively our external address and port
    e8837dc6:	14098063          	beqz	s3,e8837f06 <CheckNATMappings+0x37c>
            cur->ExpiryTime = 0;
    e8837dca:	00042423          	sw	zero,8(s0)
            cur->NewResult  = mStatus_NoError;
    e8837dce:	00042a23          	sw	zero,20(s0)
        if (!mDNSIPv4AddressIsZero(EffectiveAddress) || cur->retryInterval > NATMAP_INIT_RETRY * 8)
    e8837dd2:	47a2                	lw	a5,8(sp)
    e8837dd4:	eb99                	bnez	a5,e8837dea <CheckNATMappings+0x260>
    e8837dd6:	000b2783          	lw	a5,0(s6)
    e8837dda:	4711                	li	a4,4
    e8837ddc:	02e7c7bb          	divw	a5,a5,a4
    e8837de0:	4458                	lw	a4,12(s0)
    e8837de2:	0037979b          	slliw	a5,a5,0x3
    e8837de6:	ece7dbe3          	bge	a5,a4,e8837cbc <CheckNATMappings+0x132>
            const mStatus EffectiveResult = cur->NewResult ? cur->NewResult : mDNSv4AddrIsRFC1918(&EffectiveAddress) ? mStatus_DoubleNAT : mStatus_NoError;
    e8837dea:	01442a83          	lw	s5,20(s0)
    e8837dee:	000a9763          	bnez	s5,e8837dfc <CheckNATMappings+0x272>
    e8837df2:	0028                	addi	a0,sp,8
    e8837df4:	806db0ef          	jal	ra,e8812dfa <mDNSv4AddrIsRFC1918>
    e8837df8:	42ab9a8b          	mvnez	s5,s7,a0
            const mDNSIPPort ExternalPort = HaveRoutable ? cur->IntPort :
    e8837dfc:	1a098963          	beqz	s3,e8837fae <CheckNATMappings+0x424>
    e8837e00:	03e45c83          	lhu	s9,62(s0)
            if (!cur->Protocol || HaveRoutable || cur->ExpiryTime || cur->retryInterval > NATMAP_INIT_RETRY * 8)
    e8837e04:	03c44703          	lbu	a4,60(s0)
    e8837e08:	cf19                	beqz	a4,e8837e26 <CheckNATMappings+0x29c>
    e8837e0a:	00099e63          	bnez	s3,e8837e26 <CheckNATMappings+0x29c>
    e8837e0e:	441c                	lw	a5,8(s0)
    e8837e10:	eb99                	bnez	a5,e8837e26 <CheckNATMappings+0x29c>
    e8837e12:	000b2783          	lw	a5,0(s6)
    e8837e16:	4691                	li	a3,4
    e8837e18:	02d7c7bb          	divw	a5,a5,a3
    e8837e1c:	4454                	lw	a3,12(s0)
    e8837e1e:	0037979b          	slliw	a5,a5,0x3
    e8837e22:	e8d7dde3          	bge	a5,a3,e8837cbc <CheckNATMappings+0x132>
                if (!mDNSSameIPv4Address(cur->ExternalAddress, EffectiveAddress) ||
    e8837e26:	5414                	lw	a3,40(s0)
    e8837e28:	47a2                	lw	a5,8(sp)
    e8837e2a:	00f69963          	bne	a3,a5,e8837e3c <CheckNATMappings+0x2b2>
    e8837e2e:	03045783          	lhu	a5,48(s0)
    e8837e32:	01979563          	bne	a5,s9,e8837e3c <CheckNATMappings+0x2b2>
                    !mDNSSameIPPort     (cur->ExternalPort,       ExternalPort)    ||
    e8837e36:	5c1c                	lw	a5,56(s0)
    e8837e38:	e95782e3          	beq	a5,s5,e8837cbc <CheckNATMappings+0x132>
                    if (cur->Protocol && mDNSIPPortIsZero(ExternalPort) && !mDNSIPv4AddressIsZero(m->Router.ip.v4))
    e8837e3c:	c331                	beqz	a4,e8837e80 <CheckNATMappings+0x2f6>
    e8837e3e:	040c9163          	bnez	s9,e8837e80 <CheckNATMappings+0x2f6>
    e8837e42:	214c2783          	lw	a5,532(s8)
    e8837e46:	cf8d                	beqz	a5,e8837e80 <CheckNATMappings+0x2f6>
                        if (!EffectiveResult)
    e8837e48:	160a9f63          	bnez	s5,e8837fc6 <CheckNATMappings+0x43c>
                            LogInfo("CheckNATMapping: Failed to obtain NAT port mapping %p from router %#a external address %.4a internal port %5d interval %d error %d",
    e8837e4c:	0009d797          	auipc	a5,0x9d
    e8837e50:	c2878793          	addi	a5,a5,-984 # e88d4a74 <mDNS_LoggingEnabled>
    e8837e54:	439c                	lw	a5,0(a5)
    e8837e56:	c78d                	beqz	a5,e8837e80 <CheckNATMappings+0x2f6>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8837e58:	03e44783          	lbu	a5,62(s0)
    e8837e5c:	03f44703          	lbu	a4,63(s0)
    e8837e60:	00c42803          	lw	a6,12(s0)
    e8837e64:	0087979b          	slliw	a5,a5,0x8
    e8837e68:	8fd9                	or	a5,a5,a4
    e8837e6a:	4881                	li	a7,0
    e8837e6c:	0038                	addi	a4,sp,8
    e8837e6e:	86d2                	mv	a3,s4
    e8837e70:	8622                	mv	a2,s0
    e8837e72:	00074597          	auipc	a1,0x74
    e8837e76:	40e58593          	addi	a1,a1,1038 # e88ac280 <kOn.10632+0x338>
    e8837e7a:	450d                	li	a0,3
                            LogMsg("CheckNATMapping: Failed to obtain NAT port mapping %p from router %#a external address %.4a internal port %5d interval %d error %d",
    e8837e7c:	e30f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    cur->ExternalAddress = EffectiveAddress;
    e8837e80:	47a2                	lw	a5,8(sp)
                    cur->ExternalPort    = ExternalPort;
    e8837e82:	03941823          	sh	s9,48(s0)
                                           (cur->ExpiryTime - m->timenow + mDNSPlatformOneSecond/2) / mDNSPlatformOneSecond : 0;
    e8837e86:	4701                	li	a4,0
                    cur->ExternalAddress = EffectiveAddress;
    e8837e88:	d41c                	sw	a5,40(s0)
                    cur->Lifetime        = cur->ExpiryTime && !mDNSIPPortIsZero(ExternalPort) ?
    e8837e8a:	441c                	lw	a5,8(s0)
                                           (cur->ExpiryTime - m->timenow + mDNSPlatformOneSecond/2) / mDNSPlatformOneSecond : 0;
    e8837e8c:	cf91                	beqz	a5,e8837ea8 <CheckNATMappings+0x31e>
                    cur->Lifetime        = cur->ExpiryTime && !mDNSIPPortIsZero(ExternalPort) ?
    e8837e8e:	000c8d63          	beqz	s9,e8837ea8 <CheckNATMappings+0x31e>
                                           (cur->ExpiryTime - m->timenow + mDNSPlatformOneSecond/2) / mDNSPlatformOneSecond : 0;
    e8837e92:	2404a683          	lw	a3,576(s1)
    e8837e96:	000b2703          	lw	a4,0(s6)
    e8837e9a:	9f95                	subw	a5,a5,a3
    e8837e9c:	4689                	li	a3,2
    e8837e9e:	02d746bb          	divw	a3,a4,a3
    e8837ea2:	9fb5                	addw	a5,a5,a3
    e8837ea4:	02e7c73b          	divw	a4,a5,a4
                    cur->Lifetime        = cur->ExpiryTime && !mDNSIPPortIsZero(ExternalPort) ?
    e8837ea8:	d858                	sw	a4,52(s0)
                    cur->Result          = EffectiveResult;
    e8837eaa:	03542c23          	sw	s5,56(s0)
                    mDNS_DropLockBeforeCallback();      // Allow client to legally make mDNS API calls from the callback
    e8837eae:	58dc                	lw	a5,52(s1)
    e8837eb0:	5894                	lw	a3,48(s1)
    e8837eb2:	0017871b          	addiw	a4,a5,1
    e8837eb6:	d8d8                	sw	a4,52(s1)
    e8837eb8:	00d70d63          	beq	a4,a3,e8837ed2 <CheckNATMappings+0x348>
    e8837ebc:	00076617          	auipc	a2,0x76
    e8837ec0:	0c460613          	addi	a2,a2,196 # e88adf80 <__func__.9737>
    e8837ec4:	0006c597          	auipc	a1,0x6c
    e8837ec8:	ea458593          	addi	a1,a1,-348 # e88a3d68 <end.8789+0x6c0>
    e8837ecc:	4501                	li	a0,0
    e8837ece:	ddef70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    if (cur->clientCallback)
    e8837ed2:	643c                	ld	a5,72(s0)
    e8837ed4:	c781                	beqz	a5,e8837edc <CheckNATMappings+0x352>
                        cur->clientCallback(m, cur);
    e8837ed6:	85a2                	mv	a1,s0
    e8837ed8:	8526                	mv	a0,s1
    e8837eda:	9782                	jalr	a5
                    mDNS_ReclaimLockAfterCallback();    // Decrement mDNS_reentrancy to block mDNS API calls again
    e8837edc:	5894                	lw	a3,48(s1)
    e8837ede:	58d8                	lw	a4,52(s1)
    e8837ee0:	00e68d63          	beq	a3,a4,e8837efa <CheckNATMappings+0x370>
    e8837ee4:	00076617          	auipc	a2,0x76
    e8837ee8:	09c60613          	addi	a2,a2,156 # e88adf80 <__func__.9737>
    e8837eec:	0006c597          	auipc	a1,0x6c
    e8837ef0:	ebc58593          	addi	a1,a1,-324 # e88a3da8 <end.8789+0x700>
    e8837ef4:	4501                	li	a0,0
    e8837ef6:	db6f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8837efa:	58dc                	lw	a5,52(s1)
    e8837efc:	37fd                	addiw	a5,a5,-1
    e8837efe:	d8dc                	sw	a5,52(s1)
    e8837f00:	bb75                	j	e8837cbc <CheckNATMappings+0x132>
        mDNSv4Addr EffectiveAddress = HaveRoutable ? m->AdvertisedV4.ip.v4 : cur->NewAddress;
    e8837f02:	545c                	lw	a5,44(s0)
    e8837f04:	bd6d                	j	e8837dbe <CheckNATMappings+0x234>
            if (m->timenow - cur->retryPortMap >= 0) // Time to send a mapping request for this packet
    e8837f06:	2404a683          	lw	a3,576(s1)
    e8837f0a:	4818                	lw	a4,16(s0)
    e8837f0c:	40e6873b          	subw	a4,a3,a4
    e8837f10:	04074a63          	bltz	a4,e8837f64 <CheckNATMappings+0x3da>
                if (cur->ExpiryTime && cur->ExpiryTime - m->timenow < 0)    // Mapping has expired
    e8837f14:	441c                	lw	a5,8(s0)
    e8837f16:	cf81                	beqz	a5,e8837f2e <CheckNATMappings+0x3a4>
    e8837f18:	9f95                	subw	a5,a5,a3
    e8837f1a:	0007da63          	bgez	a5,e8837f2e <CheckNATMappings+0x3a4>
                    cur->retryInterval = NATMAP_INIT_RETRY;
    e8837f1e:	000b2783          	lw	a5,0(s6)
    e8837f22:	4711                	li	a4,4
                    cur->ExpiryTime    = 0;
    e8837f24:	00042423          	sw	zero,8(s0)
                    cur->retryInterval = NATMAP_INIT_RETRY;
    e8837f28:	02e7c7bb          	divw	a5,a5,a4
    e8837f2c:	c45c                	sw	a5,12(s0)
                uDNS_SendNATMsg(m, cur, mDNStrue); // Will also do UPnP discovery for us, if necessary
    e8837f2e:	4605                	li	a2,1
    e8837f30:	85a2                	mv	a1,s0
    e8837f32:	8526                	mv	a0,s1
    e8837f34:	f3bf90ef          	jal	ra,e8831e6e <uDNS_SendNATMsg>
                if (cur->ExpiryTime)                        // If have active mapping then set next renewal time halfway to expiry
    e8837f38:	441c                	lw	a5,8(s0)
    e8837f3a:	cf95                	beqz	a5,e8837f76 <CheckNATMappings+0x3ec>
    n->retryInterval = (n->ExpiryTime - m->timenow)/2;
    e8837f3c:	2404a703          	lw	a4,576(s1)
    if (n->retryInterval < NATMAP_MIN_RETRY_INTERVAL)   // Min retry interval is 2 seconds
    e8837f40:	000b2683          	lw	a3,0(s6)
    n->retryInterval = (n->ExpiryTime - m->timenow)/2;
    e8837f44:	9f99                	subw	a5,a5,a4
    e8837f46:	4709                	li	a4,2
    e8837f48:	02e7c73b          	divw	a4,a5,a4
    if (n->retryInterval < NATMAP_MIN_RETRY_INTERVAL)   // Min retry interval is 2 seconds
    e8837f4c:	0016961b          	slliw	a2,a3,0x1
    n->retryInterval = (n->ExpiryTime - m->timenow)/2;
    e8837f50:	87ba                	mv	a5,a4
        n->retryInterval = NATMAP_MIN_RETRY_INTERVAL;
    e8837f52:	00c72733          	slt	a4,a4,a2
    e8837f56:	42e6178b          	mvnez	a5,a2,a4
    e8837f5a:	c45c                	sw	a5,12(s0)
    n->retryPortMap = m->timenow + n->retryInterval;
    e8837f5c:	2404a703          	lw	a4,576(s1)
                    cur->retryPortMap = m->timenow + cur->retryInterval;
    e8837f60:	9fb9                	addw	a5,a5,a4
    e8837f62:	c81c                	sw	a5,16(s0)
            if (m->NextScheduledNATOp - cur->retryPortMap > 0)
    e8837f64:	4818                	lw	a4,16(s0)
    e8837f66:	2644a783          	lw	a5,612(s1)
    e8837f6a:	9f99                	subw	a5,a5,a4
    e8837f6c:	e6f053e3          	blez	a5,e8837dd2 <CheckNATMappings+0x248>
                m->NextScheduledNATOp = cur->retryPortMap;
    e8837f70:	26e4a223          	sw	a4,612(s1)
    e8837f74:	bdb9                	j	e8837dd2 <CheckNATMappings+0x248>
                    if      (cur->retryInterval < NATMAP_INIT_RETRY            ) cur->retryInterval = NATMAP_INIT_RETRY;
    e8837f76:	000b2603          	lw	a2,0(s6)
    e8837f7a:	4691                	li	a3,4
    e8837f7c:	445c                	lw	a5,12(s0)
    e8837f7e:	02d6473b          	divw	a4,a2,a3
    e8837f82:	00e7d763          	bge	a5,a4,e8837f90 <CheckNATMappings+0x406>
    e8837f86:	c458                	sw	a4,12(s0)
                    cur->retryPortMap = m->timenow + cur->retryInterval;
    e8837f88:	2404a783          	lw	a5,576(s1)
    e8837f8c:	4458                	lw	a4,12(s0)
    e8837f8e:	bfc9                	j	e8837f60 <CheckNATMappings+0x3d6>
                    else if (cur->retryInterval < NATMAP_MAX_RETRY_INTERVAL / 2) cur->retryInterval *= 2;
    e8837f90:	38400713          	li	a4,900
    e8837f94:	02c7073b          	mulw	a4,a4,a2
    e8837f98:	4689                	li	a3,2
    e8837f9a:	02d746bb          	divw	a3,a4,a3
    e8837f9e:	00d7d663          	bge	a5,a3,e8837faa <CheckNATMappings+0x420>
    e8837fa2:	0017979b          	slliw	a5,a5,0x1
    e8837fa6:	c45c                	sw	a5,12(s0)
    e8837fa8:	b7c5                	j	e8837f88 <CheckNATMappings+0x3fe>
                    else cur->retryInterval = NATMAP_MAX_RETRY_INTERVAL;
    e8837faa:	c458                	sw	a4,12(s0)
    e8837fac:	bff1                	j	e8837f88 <CheckNATMappings+0x3fe>
                                            !mDNSIPv4AddressIsZero(EffectiveAddress) && cur->ExpiryTime ? cur->RequestedPort : zeroIPPort;
    e8837fae:	47a2                	lw	a5,8(sp)
    e8837fb0:	c791                	beqz	a5,e8837fbc <CheckNATMappings+0x432>
    e8837fb2:	441c                	lw	a5,8(s0)
    e8837fb4:	c781                	beqz	a5,e8837fbc <CheckNATMappings+0x432>
            const mDNSIPPort ExternalPort = HaveRoutable ? cur->IntPort :
    e8837fb6:	04045c83          	lhu	s9,64(s0)
    e8837fba:	b5a9                	j	e8837e04 <CheckNATMappings+0x27a>
    e8837fbc:	0006bc97          	auipc	s9,0x6b
    e8837fc0:	5eccdc83          	lhu	s9,1516(s9) # e88a35a8 <zeroIPPort>
    e8837fc4:	b581                	j	e8837e04 <CheckNATMappings+0x27a>
    e8837fc6:	03e44783          	lbu	a5,62(s0)
    e8837fca:	03f44703          	lbu	a4,63(s0)
                            LogMsg("CheckNATMapping: Failed to obtain NAT port mapping %p from router %#a external address %.4a internal port %5d interval %d error %d",
    e8837fce:	88d6                	mv	a7,s5
    e8837fd0:	0087979b          	slliw	a5,a5,0x8
    e8837fd4:	8fd9                	or	a5,a5,a4
    e8837fd6:	00c42803          	lw	a6,12(s0)
    e8837fda:	0038                	addi	a4,sp,8
    e8837fdc:	86d2                	mv	a3,s4
    e8837fde:	8622                	mv	a2,s0
    e8837fe0:	00074597          	auipc	a1,0x74
    e8837fe4:	2a058593          	addi	a1,a1,672 # e88ac280 <kOn.10632+0x338>
    e8837fe8:	4501                	li	a0,0
    e8837fea:	bd49                	j	e8837e7c <CheckNATMappings+0x2f2>

00000000e8837fec <uDNS_Tasks>:
{
    e8837fec:	7155                	addi	sp,sp,-208
    e8837fee:	e1a2                	sd	s0,192(sp)
    e8837ff0:	e55e                	sd	s7,136(sp)
    e8837ff2:	e586                	sd	ra,200(sp)
    e8837ff4:	fd26                	sd	s1,184(sp)
    e8837ff6:	f94a                	sd	s2,176(sp)
    e8837ff8:	f54e                	sd	s3,168(sp)
    e8837ffa:	f152                	sd	s4,160(sp)
    e8837ffc:	ed56                	sd	s5,152(sp)
    e8837ffe:	e95a                	sd	s6,144(sp)
    e8838000:	e162                	sd	s8,128(sp)
    e8838002:	fce6                	sd	s9,120(sp)
    e8838004:	f8ea                	sd	s10,112(sp)
    e8838006:	f4ee                	sd	s11,104(sp)
    m->NextuDNSEvent = m->timenow + FutureTime;
    e8838008:	24052703          	lw	a4,576(a0)
    e883800c:	380007b7          	lui	a5,0x38000
{
    e8838010:	842a                	mv	s0,a0
    m->NextuDNSEvent = m->timenow + FutureTime;
    e8838012:	00e78bbb          	addw	s7,a5,a4
                InitializeDNSMessage(&m->omsg.h, msgid, UpdateReqFlags);
    e8838016:	679d                	lui	a5,0x7
    m->NextuDNSEvent = m->timenow + FutureTime;
    e8838018:	670d                	lui	a4,0x3
                InitializeDNSMessage(&m->omsg.h, msgid, UpdateReqFlags);
    e883801a:	1e078793          	addi	a5,a5,480 # 71e0 <memcmp-0xe87f8e20>
    m->NextuDNSEvent = m->timenow + FutureTime;
    e883801e:	972a                	add	a4,a4,a0
                InitializeDNSMessage(&m->omsg.h, msgid, UpdateReqFlags);
    e8838020:	97aa                	add	a5,a5,a0
    m->NextuDNSEvent = m->timenow + FutureTime;
    e8838022:	1f772c23          	sw	s7,504(a4) # 31f8 <memcmp-0xe87fce08>
                InitializeDNSMessage(&m->omsg.h, msgid, UpdateReqFlags);
    e8838026:	e8be                	sd	a5,80(sp)
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e8838028:	678d                	lui	a5,0x3
    e883802a:	97a2                	add	a5,a5,s0
    e883802c:	f03e                	sd	a5,32(sp)
    e883802e:	a681                	j	e883836e <uDNS_Tasks+0x382>
                limit = next + spaceleft;
    e8838030:	97ee                	add	a5,a5,s11
                msgid = mDNS_NewMessageID(m);
    e8838032:	8522                	mv	a0,s0
                limit = next + spaceleft;
    e8838034:	ec3e                	sd	a5,24(sp)
                msgid = mDNS_NewMessageID(m);
    e8838036:	b38ed0ef          	jal	ra,e882536e <mDNS_NewMessageID>
                InitializeDNSMessage(&m->omsg.h, msgid, UpdateReqFlags);
    e883803a:	3c05358b          	extu	a1,a0,15,0
    e883803e:	0006b797          	auipc	a5,0x6b
    e8838042:	cea78793          	addi	a5,a5,-790 # e88a2d28 <UpdateReqFlags>
    e8838046:	0007d603          	lhu	a2,0(a5)
                msgid = mDNS_NewMessageID(m);
    e883804a:	04a11323          	sh	a0,70(sp)
                InitializeDNSMessage(&m->omsg.h, msgid, UpdateReqFlags);
    e883804e:	6546                	ld	a0,80(sp)
    e8838050:	dfcdc0ef          	jal	ra,e881464c <InitializeDNSMessage>
                zoneSize = DomainNameLength(rr->zone) + 4;
    e8838054:	160c3503          	ld	a0,352(s8)
    e8838058:	10050593          	addi	a1,a0,256
    e883805c:	8f0db0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e8838060:	0045079b          	addiw	a5,a0,4
    e8838064:	f83e                	sd	a5,48(sp)
                spaceleft -= zoneSize;
    e8838066:	40f9093b          	subw	s2,s2,a5
                if (spaceleft <= 0)
    e883806a:	01204763          	bgtz	s2,e8838078 <uDNS_Tasks+0x8c>
                    LogMsg("SendGroupUpdates: ERROR no space for zone information, disabling merge");
    e883806e:	00078597          	auipc	a1,0x78
    e8838072:	65258593          	addi	a1,a1,1618 # e88b06c0 <__func__.9833+0x2728>
    e8838076:	a2a9                	j	e88381c0 <uDNS_Tasks+0x1d4>
    return(x);
    e8838078:	00cc5783          	lhu	a5,12(s8)
                next = putZone(&m->omsg, next, limit, rr->zone, mDNSOpaque16fromIntVal(rr->resrec.rrclass));
    e883807c:	160c3683          	ld	a3,352(s8)
    e8838080:	6662                	ld	a2,24(sp)
    e8838082:	6546                	ld	a0,80(sp)
    e8838084:	0087971b          	slliw	a4,a5,0x8
    e8838088:	5c87b78b          	extu	a5,a5,23,8
    e883808c:	8f5d                	or	a4,a4,a5
    e883808e:	85ee                	mv	a1,s11
    e8838090:	fc6dc0ef          	jal	ra,e8814856 <putZone>
    e8838094:	89aa                	mv	s3,a0
                if (!next)
    e8838096:	e511                	bnez	a0,e88380a2 <uDNS_Tasks+0xb6>
                    LogMsg("SendGroupUpdates: ERROR! Cannot put zone, disabling merge");
    e8838098:	00078597          	auipc	a1,0x78
    e883809c:	67058593          	addi	a1,a1,1648 # e88b0708 <__func__.9833+0x2770>
    e88380a0:	a20d                	j	e88381c2 <uDNS_Tasks+0x1d6>
                if (!next)
    e88380a2:	8a62                	mv	s4,s8
            rrSize = RREstimatedSize(rr, zoneSize - 4);
    e88380a4:	77c2                	ld	a5,48(sp)
    e88380a6:	028c3503          	ld	a0,40(s8)
    if (rr->state == regState_UpdatePending)
    e88380aa:	471d                	li	a4,7
            rrSize = RREstimatedSize(rr, zoneSize - 4);
    e88380ac:	ffc78c9b          	addiw	s9,a5,-4
    if (rr->state == regState_UpdatePending)
    e88380b0:	14cc4783          	lbu	a5,332(s8)
    e88380b4:	10050593          	addi	a1,a0,256
    e88380b8:	02e79463          	bne	a5,a4,e88380e0 <uDNS_Tasks+0xf4>
        rdlength = rr->OrigRDLen + rr->InFlightRDLen;
    e88380bc:	1e0c5483          	lhu	s1,480(s8)
    e88380c0:	1e2c5783          	lhu	a5,482(s8)
    e88380c4:	94be                	add	s1,s1,a5
    if (rr->resrec.RecordType == kDNSRecordTypeKnownUnique || rr->resrec.RecordType == kDNSRecordTypeVerified)
    e88380c6:	008c4783          	lbu	a5,8(s8)
    e88380ca:	37c1                	addiw	a5,a5,-16
    e88380cc:	0ef7f793          	andi	a5,a5,239
    e88380d0:	14079b63          	bnez	a5,e8838226 <uDNS_Tasks+0x23a>
        return DomainNameLength(rr->resrec.name) - zoneSize + 2 + 10 + 2 + 10 + rdlength;
    e88380d4:	419484bb          	subw	s1,s1,s9
    e88380d8:	874db0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88380dc:	24e1                	addiw	s1,s1,24
    e88380de:	a819                	j	e88380f4 <uDNS_Tasks+0x108>
    if (rr->state == regState_DeregPending)
    e88380e0:	470d                	li	a4,3
        rdlength = rr->resrec.rdestimate;
    e88380e2:	016c5483          	lhu	s1,22(s8)
    if (rr->state == regState_DeregPending)
    e88380e6:	fee790e3          	bne	a5,a4,e88380c6 <uDNS_Tasks+0xda>
        return DomainNameLength(rr->resrec.name) - zoneSize + 2 + 10 + rdlength;
    e88380ea:	24b1                	addiw	s1,s1,12
    e88380ec:	860db0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e88380f0:	419484bb          	subw	s1,s1,s9
        return DomainNameLength(rr->resrec.name) - zoneSize + 2 + 10 + rdlength;
    e88380f4:	9ca9                	addw	s1,s1,a0
                    LogInfo("SendGroupUpdates: Skipping message %s, spaceleft %d, rrSize %d", ARDisplayString(m, rr), spaceleft, rrSize);
    e88380f6:	0009d797          	auipc	a5,0x9d
    e88380fa:	97e78793          	addi	a5,a5,-1666 # e88d4a74 <mDNS_LoggingEnabled>
            if ((spaceleft - rrSize) < 0)
    e88380fe:	40990cbb          	subw	s9,s2,s1
                    LogInfo("SendGroupUpdates: Skipping message %s, spaceleft %d, rrSize %d", ARDisplayString(m, rr), spaceleft, rrSize);
    e8838102:	439c                	lw	a5,0(a5)
            if ((spaceleft - rrSize) < 0)
    e8838104:	160cd363          	bgez	s9,e883826a <uDNS_Tasks+0x27e>
                if (!nrecords)
    e8838108:	120b1563          	bnez	s6,e8838232 <uDNS_Tasks+0x246>
                    LogInfo("SendGroupUpdates: Skipping message %s, spaceleft %d, rrSize %d", ARDisplayString(m, rr), spaceleft, rrSize);
    e883810c:	c785                	beqz	a5,e8838134 <uDNS_Tasks+0x148>
    e883810e:	030c3583          	ld	a1,48(s8)
    e8838112:	03b40613          	addi	a2,s0,59
    e8838116:	008c0513          	addi	a0,s8,8
    e883811a:	0591                	addi	a1,a1,4
    e883811c:	8f9de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8838120:	862a                	mv	a2,a0
    e8838122:	8726                	mv	a4,s1
    e8838124:	86ca                	mv	a3,s2
    e8838126:	00078597          	auipc	a1,0x78
    e883812a:	62258593          	addi	a1,a1,1570 # e88b0748 <__func__.9833+0x27b0>
    e883812e:	450d                	li	a0,3
    e8838130:	b7cf70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    rr->SendRNow = uDNSInterfaceMark;
    e8838134:	77a2                	ld	a5,40(sp)
                    anchorRR = mDNSNULL;
    e8838136:	4a01                	li	s4,0
                    sentallRecords = mDNSfalse;
    e8838138:	fc02                	sd	zero,56(sp)
                    rr->SendRNow = uDNSInterfaceMark;
    e883813a:	0cfc3c23          	sd	a5,216(s8)
                    rr->ThisAPInterval = INIT_RECORD_REG_INTERVAL;
    e883813e:	0009d797          	auipc	a5,0x9d
    e8838142:	94278793          	addi	a5,a5,-1726 # e88d4a80 <mDNSPlatformOneSecond>
    e8838146:	4398                	lw	a4,0(a5)
    e8838148:	10ec2823          	sw	a4,272(s8)
                    rr->LastAPTime = m->timenow - INIT_RECORD_REG_INTERVAL;
    e883814c:	24042783          	lw	a5,576(s0)
    e8838150:	9f99                	subw	a5,a5,a4
    e8838152:	10fc2a23          	sw	a5,276(s8)
                    rr = rr->next;
    e8838156:	000c3c03          	ld	s8,0(s8)
    while (startRR)
    e883815a:	1c0c0763          	beqz	s8,e8838328 <uDNS_Tasks+0x33c>
            if (rr->SendRNow != uDNSInterfaceMark) continue;
    e883815e:	0006b797          	auipc	a5,0x6b
    e8838162:	41278793          	addi	a5,a5,1042 # e88a3570 <uDNSInterfaceMark>
    e8838166:	639c                	ld	a5,0(a5)
        AuthInfo = mDNSNULL;
    e8838168:	4a81                	li	s5,0
        anchorRR = mDNSNULL;
    e883816a:	4a01                	li	s4,0
            if (rr->SendRNow != uDNSInterfaceMark) continue;
    e883816c:	f43e                	sd	a5,40(sp)
                LogMsg("SendGroupUpdates: ERROR!! Record size estimation is wrong for %s, Estimate %d, Actual %d, state %d", ARDisplayString(m, rr), rrSize, next - oldnext, rr->state);
    e883816e:	03b40793          	addi	a5,s0,59
        zoneSize = 0;
    e8838172:	f802                	sd	zero,48(sp)
        nrecords = 0;
    e8838174:	4b01                	li	s6,0
                LogMsg("SendGroupUpdates: ERROR!! Record size estimation is wrong for %s, Estimate %d, Actual %d, state %d", ARDisplayString(m, rr), rrSize, next - oldnext, rr->state);
    e8838176:	e4be                	sd	a5,72(sp)
            if (rr->SendRNow != uDNSInterfaceMark) continue;
    e8838178:	0d8c3783          	ld	a5,216(s8)
    e883817c:	7722                	ld	a4,40(sp)
    e883817e:	1ae79163          	bne	a5,a4,e8838320 <uDNS_Tasks+0x334>
            rr->SendRNow = mDNSNULL;
    e8838182:	0c0c3c23          	sd	zero,216(s8)
            if (!anchorRR)
    e8838186:	f00a1fe3          	bnez	s4,e88380a4 <uDNS_Tasks+0xb8>
                AuthInfo = GetAuthInfoForName_internal(m, rr->zone);
    e883818a:	160c3583          	ld	a1,352(s8)
    e883818e:	8522                	mv	a0,s0
                else spaceleft = NormalMaxDNSMessageData;
    e8838190:	5a000913          	li	s2,1440
                AuthInfo = GetAuthInfoForName_internal(m, rr->zone);
    e8838194:	af8fa0ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    e8838198:	8aaa                	mv	s5,a0
                if (AuthInfo && AuthInfo->AutoTunnel) spaceleft = AbsoluteMaxDNSMessageData;
    e883819a:	c511                	beqz	a0,e88381a6 <uDNS_Tasks+0x1ba>
    e883819c:	00c54783          	lbu	a5,12(a0)
    e88381a0:	6766                	ld	a4,88(sp)
    e88381a2:	42f7190b          	mvnez	s2,a4,a5
                spaceleft -= RRAdditionalSize(m, AuthInfo);
    e88381a6:	85d6                	mv	a1,s5
    e88381a8:	8522                	mv	a0,s0
    e88381aa:	a25f80ef          	jal	ra,e8830bce <RRAdditionalSize>
    e88381ae:	40a907bb          	subw	a5,s2,a0
    e88381b2:	893e                	mv	s2,a5
                if (spaceleft <= 0)
    e88381b4:	e6f04ee3          	bgtz	a5,e8838030 <uDNS_Tasks+0x44>
                    LogMsg("SendGroupUpdates: ERROR!!: spaceleft is zero at the beginning");
    e88381b8:	00078597          	auipc	a1,0x78
    e88381bc:	4c858593          	addi	a1,a1,1224 # e88b0680 <__func__.9833+0x26e8>
                    LogMsg("SendGroupUpdates: ERROR no space for zone information, disabling merge");
    e88381c0:	4501                	li	a0,0
                    LogMsg("SendGroupUpdates: ERROR! Cannot put zone, disabling merge");
    e88381c2:	aeaf70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    RRMergeFailure(m);
    e88381c6:	8522                	mv	a0,s0
    e88381c8:	9b8f90ef          	jal	ra,e8831380 <RRMergeFailure>
            for (rr = m->ResourceRecords; rr; rr = nextRR)
    e88381cc:	678d                	lui	a5,0x3
    e88381ce:	97a2                	add	a5,a5,s0
    e88381d0:	1b87b503          	ld	a0,440(a5) # 31b8 <memcmp-0xe87fce48>
                if (rr->SendRNow == uDNSInterfaceMark)
    e88381d4:	0006b497          	auipc	s1,0x6b
    e88381d8:	39c48493          	addi	s1,s1,924 # e88a3570 <uDNSInterfaceMark>
                    { LogMsg("CheckGroupRecordUpdates: ERROR!! Resourcerecord %s not ready", ARDisplayString(m, rr)); continue; }
    e88381dc:	03b40913          	addi	s2,s0,59
    e88381e0:	00078997          	auipc	s3,0x78
    e88381e4:	74098993          	addi	s3,s3,1856 # e88b0920 <__func__.9833+0x2988>
            for (rr = m->ResourceRecords; rr; rr = nextRR)
    e88381e8:	e40500e3          	beqz	a0,e8838028 <uDNS_Tasks+0x3c>
                if (rr->SendRNow == uDNSInterfaceMark)
    e88381ec:	6d78                	ld	a4,216(a0)
    e88381ee:	609c                	ld	a5,0(s1)
                nextRR = rr->next;
    e88381f0:	00053a03          	ld	s4,0(a0)
                if (rr->SendRNow == uDNSInterfaceMark)
    e88381f4:	02f71763          	bne	a4,a5,e8838222 <uDNS_Tasks+0x236>
                    if (rr->LastAPTime + rr->ThisAPInterval - m->timenow > 0)
    e88381f8:	11052703          	lw	a4,272(a0)
    e88381fc:	11452783          	lw	a5,276(a0)
    e8838200:	9fb9                	addw	a5,a5,a4
    e8838202:	24042703          	lw	a4,576(s0)
    e8838206:	9f99                	subw	a5,a5,a4
    e8838208:	22f05e63          	blez	a5,e8838444 <uDNS_Tasks+0x458>
                    { LogMsg("CheckGroupRecordUpdates: ERROR!! Resourcerecord %s not ready", ARDisplayString(m, rr)); continue; }
    e883820c:	790c                	ld	a1,48(a0)
    e883820e:	864a                	mv	a2,s2
    e8838210:	0521                	addi	a0,a0,8
    e8838212:	0591                	addi	a1,a1,4
    e8838214:	801de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8838218:	862a                	mv	a2,a0
    e883821a:	85ce                	mv	a1,s3
    e883821c:	4501                	li	a0,0
    e883821e:	a8ef70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    mDNSs32 spaceleft = 0;
    e8838222:	8552                	mv	a0,s4
    e8838224:	b7d1                	j	e88381e8 <uDNS_Tasks+0x1fc>
        return DomainNameLength(rr->resrec.name) - zoneSize + 2 + 10 + rdlength;
    e8838226:	419484bb          	subw	s1,s1,s9
    e883822a:	f23da0ef          	jal	ra,e881314c <DomainNameLengthLimit>
    e883822e:	24b1                	addiw	s1,s1,12
    e8838230:	b5d1                	j	e88380f4 <uDNS_Tasks+0x108>
                    LogInfo("SendGroupUpdates:1: Parsed %d records and sending using %s, spaceleft %d, rrSize %d", nrecords, ARDisplayString(m, anchorRR), spaceleft, rrSize);
    e8838232:	c78d                	beqz	a5,e883825c <uDNS_Tasks+0x270>
    e8838234:	030a3583          	ld	a1,48(s4)
    e8838238:	03b40613          	addi	a2,s0,59
    e883823c:	008a0513          	addi	a0,s4,8
    e8838240:	0591                	addi	a1,a1,4
    e8838242:	fd2de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8838246:	86aa                	mv	a3,a0
    e8838248:	87a6                	mv	a5,s1
    e883824a:	874a                	mv	a4,s2
    e883824c:	865a                	mv	a2,s6
    e883824e:	00078597          	auipc	a1,0x78
    e8838252:	53a58593          	addi	a1,a1,1338 # e88b0788 <__func__.9833+0x27f0>
    e8838256:	450d                	li	a0,3
    e8838258:	a54f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    SendGroupRRMessage(m, anchorRR, next, AuthInfo);
    e883825c:	86d6                	mv	a3,s5
    e883825e:	864e                	mv	a2,s3
    e8838260:	85d2                	mv	a1,s4
    e8838262:	8522                	mv	a0,s0
    e8838264:	e29fb0ef          	jal	ra,e883408c <SendGroupRRMessage>
    e8838268:	bdcd                	j	e883815a <uDNS_Tasks+0x16e>
            LogInfo("SendGroupUpdates: Building a message with resource record %s, next %p, state %d, ttl %d", ARDisplayString(m, rr), next, rr->state, rr->resrec.rroriginalttl);
    e883826a:	c795                	beqz	a5,e8838296 <uDNS_Tasks+0x2aa>
    e883826c:	030c3583          	ld	a1,48(s8)
    e8838270:	6626                	ld	a2,72(sp)
    e8838272:	008c0513          	addi	a0,s8,8
    e8838276:	0591                	addi	a1,a1,4
    e8838278:	f9cde0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883827c:	862a                	mv	a2,a0
    e883827e:	010c2783          	lw	a5,16(s8)
    e8838282:	14cc4703          	lbu	a4,332(s8)
    e8838286:	86ce                	mv	a3,s3
    e8838288:	00078597          	auipc	a1,0x78
    e883828c:	55858593          	addi	a1,a1,1368 # e88b07e0 <__func__.9833+0x2848>
    e8838290:	450d                	li	a0,3
    e8838292:	a1af70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (!(next = BuildUpdateMessage(m, next, rr, limit)))
    e8838296:	66e2                	ld	a3,24(sp)
    e8838298:	8662                	mv	a2,s8
    e883829a:	85ce                	mv	a1,s3
    e883829c:	8522                	mv	a0,s0
    e883829e:	b64f90ef          	jal	ra,e8831602 <BuildUpdateMessage>
    e88382a2:	8d2a                	mv	s10,a0
    e88382a4:	e11d                	bnez	a0,e88382ca <uDNS_Tasks+0x2de>
                LogMsg("SendGroupUpdates: ptr NULL while building message with %s", ARDisplayString(m, rr));
    e88382a6:	030c3583          	ld	a1,48(s8)
    e88382aa:	03b40613          	addi	a2,s0,59
    e88382ae:	008c0513          	addi	a0,s8,8
    e88382b2:	0591                	addi	a1,a1,4
    e88382b4:	f60de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88382b8:	862a                	mv	a2,a0
    e88382ba:	00078597          	auipc	a1,0x78
    e88382be:	57e58593          	addi	a1,a1,1406 # e88b0838 <__func__.9833+0x28a0>
    e88382c2:	4501                	li	a0,0
    e88382c4:	9e8f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                RRMergeFailure(m);
    e88382c8:	bdfd                	j	e88381c6 <uDNS_Tasks+0x1da>
            if ((next - oldnext) > rrSize)
    e88382ca:	413509b3          	sub	s3,a0,s3
    e88382ce:	1734d863          	bge	s1,s3,e883843e <uDNS_Tasks+0x452>
                LogMsg("SendGroupUpdates: ERROR!! Record size estimation is wrong for %s, Estimate %d, Actual %d, state %d", ARDisplayString(m, rr), rrSize, next - oldnext, rr->state);
    e88382d2:	030c3583          	ld	a1,48(s8)
    e88382d6:	6626                	ld	a2,72(sp)
    e88382d8:	008c0513          	addi	a0,s8,8
    e88382dc:	0591                	addi	a1,a1,4
    e88382de:	f36de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88382e2:	862a                	mv	a2,a0
    e88382e4:	14cc4783          	lbu	a5,332(s8)
    e88382e8:	874e                	mv	a4,s3
    e88382ea:	86a6                	mv	a3,s1
    e88382ec:	00078597          	auipc	a1,0x78
    e88382f0:	58c58593          	addi	a1,a1,1420 # e88b0878 <__func__.9833+0x28e0>
    e88382f4:	4501                	li	a0,0
    e88382f6:	9b6f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
            if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL;}
    e88382fa:	170c3503          	ld	a0,368(s8)
            nrecords++;
    e88382fe:	2b05                	addiw	s6,s6,1
            if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL;}
    e8838300:	c509                	beqz	a0,e883830a <uDNS_Tasks+0x31e>
    e8838302:	be0fb0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e8838306:	160c3823          	sd	zero,368(s8)
            rr->updateid = msgid;
    e883830a:	04615783          	lhu	a5,70(sp)
            SetRecordRetry(m, rr, 0);
    e883830e:	4601                	li	a2,0
    e8838310:	85e2                	mv	a1,s8
            rr->updateid = msgid;
    e8838312:	14fc1b23          	sh	a5,342(s8)
            SetRecordRetry(m, rr, 0);
    e8838316:	8522                	mv	a0,s0
    e8838318:	d1ff80ef          	jal	ra,e8831036 <SetRecordRetry>
    e883831c:	89ea                	mv	s3,s10
    e883831e:	8966                	mv	s2,s9
        for (rr = startRR; rr; rr = rr->next)
    e8838320:	000c3c03          	ld	s8,0(s8)
    e8838324:	e40c1ae3          	bnez	s8,e8838178 <uDNS_Tasks+0x18c>
    if (anchorRR)
    e8838328:	040a0063          	beqz	s4,e8838368 <uDNS_Tasks+0x37c>
        LogInfo("SendGroupUpdates: Parsed %d records and sending using %s", nrecords, ARDisplayString(m, anchorRR));
    e883832c:	0009c797          	auipc	a5,0x9c
    e8838330:	74878793          	addi	a5,a5,1864 # e88d4a74 <mDNS_LoggingEnabled>
    e8838334:	439c                	lw	a5,0(a5)
    e8838336:	c39d                	beqz	a5,e883835c <uDNS_Tasks+0x370>
    e8838338:	030a3583          	ld	a1,48(s4)
    e883833c:	03b40613          	addi	a2,s0,59
    e8838340:	008a0513          	addi	a0,s4,8
    e8838344:	0591                	addi	a1,a1,4
    e8838346:	ecede0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883834a:	86aa                	mv	a3,a0
    e883834c:	865a                	mv	a2,s6
    e883834e:	00078597          	auipc	a1,0x78
    e8838352:	59258593          	addi	a1,a1,1426 # e88b08e0 <__func__.9833+0x2948>
    e8838356:	450d                	li	a0,3
    e8838358:	954f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        SendGroupRRMessage(m, anchorRR, next, AuthInfo);
    e883835c:	86d6                	mv	a3,s5
    e883835e:	864e                	mv	a2,s3
    e8838360:	85d2                	mv	a1,s4
    e8838362:	8522                	mv	a0,s0
    e8838364:	d29fb0ef          	jal	ra,e883408c <SendGroupRRMessage>
        if (!SendGroupUpdates(m))
    e8838368:	77e2                	ld	a5,56(sp)
    e883836a:	e60781e3          	beqz	a5,e88381cc <uDNS_Tasks+0x1e0>
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e883836e:	7782                	ld	a5,32(sp)
    AuthRecord *firstRR = mDNSNULL;
    e8838370:	4901                	li	s2,0
        rr->SendRNow = uDNSInterfaceMark;
    e8838372:	0006b997          	auipc	s3,0x6b
    e8838376:	1fe98993          	addi	s3,s3,510 # e88a3570 <uDNSInterfaceMark>
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e883837a:	1b87b483          	ld	s1,440(a5)
        if (rr->SendRNow) LogMsg("MarkRRForSending: Resourcerecord %s already marked for sending", ARDisplayString(m, rr));
    e883837e:	03b40a13          	addi	s4,s0,59
    e8838382:	00078a97          	auipc	s5,0x78
    e8838386:	5dea8a93          	addi	s5,s5,1502 # e88b0960 <__func__.9833+0x29c8>
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e883838a:	e4e1                	bnez	s1,e8838452 <uDNS_Tasks+0x466>
    if (firstRR)
    e883838c:	7782                	ld	a5,32(sp)
    e883838e:	1b87b483          	ld	s1,440(a5)
    e8838392:	18091d63          	bnez	s2,e883852c <uDNS_Tasks+0x540>
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e8838396:	699d                	lui	s3,0x7
    limit = ptr + AbsoluteMaxDNSMessageData;
    e8838398:	6a25                	lui	s4,0x9
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e883839a:	1e098913          	addi	s2,s3,480 # 71e0 <memcmp-0xe87f8e20>
    limit = ptr + AbsoluteMaxDNSMessageData;
    e883839e:	4d8a0a13          	addi	s4,s4,1240 # 94d8 <memcmp-0xe87f6b28>
    mDNSu8 *ptr = m->omsg.data;
    e88383a2:	1ec98993          	addi	s3,s3,492
    limit = ptr + AbsoluteMaxDNSMessageData;
    e88383a6:	9a22                	add	s4,s4,s0
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e88383a8:	9922                	add	s2,s2,s0
    mDNSu8 *ptr = m->omsg.data;
    e88383aa:	99a2                	add	s3,s3,s0
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e88383ac:	18049963          	bnez	s1,e883853e <uDNS_Tasks+0x552>
    if (m->NextuDNSEvent - nexte > 0)
    e88383b0:	678d                	lui	a5,0x3
    e88383b2:	97a2                	add	a5,a5,s0
    e88383b4:	1f87a703          	lw	a4,504(a5) # 31f8 <memcmp-0xe87fce08>
    e88383b8:	4177073b          	subw	a4,a4,s7
    e88383bc:	00e05463          	blez	a4,e88383c4 <uDNS_Tasks+0x3d8>
        m->NextuDNSEvent = nexte;
    e88383c0:	1f77ac23          	sw	s7,504(a5)
    for (d = m->DNSServers; d; d=d->next)
    e88383c4:	690d                	lui	s2,0x3
    e88383c6:	9922                	add	s2,s2,s0
    e88383c8:	20093483          	ld	s1,512(s2) # 3200 <memcmp-0xe87fce00>
                LogInfo("DNS server %#a:%d out of penalty box", &d->addr, mDNSVal16(d->port));
    e88383cc:	0009c997          	auipc	s3,0x9c
    e88383d0:	6a898993          	addi	s3,s3,1704 # e88d4a74 <mDNS_LoggingEnabled>
    e88383d4:	00078a17          	auipc	s4,0x78
    e88383d8:	794a0a13          	addi	s4,s4,1940 # e88b0b68 <__func__.9833+0x2bd0>
    for (d = m->DNSServers; d; d=d->next)
    e88383dc:	44049163          	bnez	s1,e883881e <uDNS_Tasks+0x832>
    if (m->CurrentQuestion)
    e88383e0:	2c843483          	ld	s1,712(s0)
    e88383e4:	cc99                	beqz	s1,e8838402 <uDNS_Tasks+0x416>
        LogMsg("uDNS_Tasks ERROR m->CurrentQuestion already set: %##s (%s)", m->CurrentQuestion->qname.c, DNSTypeName(m->CurrentQuestion->qtype));
    e88383e6:	3144d503          	lhu	a0,788(s1)
    e88383ea:	877dd0ef          	jal	ra,e8815c60 <DNSTypeName>
    e88383ee:	86aa                	mv	a3,a0
    e88383f0:	21448613          	addi	a2,s1,532
    e88383f4:	00078597          	auipc	a1,0x78
    e88383f8:	79c58593          	addi	a1,a1,1948 # e88b0b90 <__func__.9833+0x2bf8>
    e88383fc:	4501                	li	a0,0
    e88383fe:	8aef70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    m->CurrentQuestion = m->Questions;
    e8838402:	2b843783          	ld	a5,696(s0)
                if (m->NextuDNSEvent - NextQSendTime(q) > 0)
    e8838406:	690d                	lui	s2,0x3
    e8838408:	9922                	add	s2,s2,s0
    m->CurrentQuestion = m->Questions;
    e883840a:	2cf43423          	sd	a5,712(s0)
    while (m->CurrentQuestion && m->CurrentQuestion != m->NewQuestions)
    e883840e:	2c843483          	ld	s1,712(s0)
    e8838412:	c489                	beqz	s1,e883841c <uDNS_Tasks+0x430>
    e8838414:	2c043783          	ld	a5,704(s0)
    e8838418:	44f49763          	bne	s1,a5,e8838866 <uDNS_Tasks+0x87a>
    m->CurrentQuestion = mDNSNULL;
    e883841c:	2c043423          	sd	zero,712(s0)
}
    e8838420:	60ae                	ld	ra,200(sp)
    e8838422:	640e                	ld	s0,192(sp)
    e8838424:	74ea                	ld	s1,184(sp)
    e8838426:	794a                	ld	s2,176(sp)
    e8838428:	79aa                	ld	s3,168(sp)
    e883842a:	7a0a                	ld	s4,160(sp)
    e883842c:	6aea                	ld	s5,152(sp)
    e883842e:	6b4a                	ld	s6,144(sp)
    e8838430:	6baa                	ld	s7,136(sp)
    e8838432:	6c0a                	ld	s8,128(sp)
    e8838434:	7ce6                	ld	s9,120(sp)
    e8838436:	7d46                	ld	s10,112(sp)
    e8838438:	7da6                	ld	s11,104(sp)
    e883843a:	6169                	addi	sp,sp,208
    e883843c:	8082                	ret
            else { spaceleft += rrSize; spaceleft -= (next - oldnext); }
    e883843e:	41390cbb          	subw	s9,s2,s3
    e8838442:	bd65                	j	e88382fa <uDNS_Tasks+0x30e>
                    SendRecordRegistration(m, rr);
    e8838444:	85aa                	mv	a1,a0
                    rr->SendRNow = mDNSNULL;
    e8838446:	0c053c23          	sd	zero,216(a0)
                    SendRecordRegistration(m, rr);
    e883844a:	8522                	mv	a0,s0
    e883844c:	e1bfb0ef          	jal	ra,e8834266 <SendRecordRegistration>
    e8838450:	bbc9                	j	e8838222 <uDNS_Tasks+0x236>
        if (!firstRR)
    e8838452:	0009c797          	auipc	a5,0x9c
    e8838456:	62e78793          	addi	a5,a5,1582 # e88d4a80 <mDNSPlatformOneSecond>
    e883845a:	24042683          	lw	a3,576(s0)
    e883845e:	4390                	lw	a2,0(a5)
    e8838460:	9eb1                	addw	a3,a3,a2
    e8838462:	02091b63          	bnez	s2,e8838498 <uDNS_Tasks+0x4ac>
            if (!IsRecordMergeable(m, rr, m->timenow + MERGE_DELAY_TIME)) continue;
    e8838466:	8636                	mv	a2,a3
    e8838468:	85a6                	mv	a1,s1
    e883846a:	8522                	mv	a0,s0
    e883846c:	93afa0ef          	jal	ra,e88325a6 <IsRecordMergeable>
    e8838470:	c915                	beqz	a0,e88384a4 <uDNS_Tasks+0x4b8>
    e8838472:	8926                	mv	s2,s1
        if (rr->SendRNow) LogMsg("MarkRRForSending: Resourcerecord %s already marked for sending", ARDisplayString(m, rr));
    e8838474:	6cfc                	ld	a5,216(s1)
    e8838476:	cf89                	beqz	a5,e8838490 <uDNS_Tasks+0x4a4>
    e8838478:	788c                	ld	a1,48(s1)
    e883847a:	8652                	mv	a2,s4
    e883847c:	00848513          	addi	a0,s1,8
    e8838480:	0591                	addi	a1,a1,4
    e8838482:	d92de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8838486:	862a                	mv	a2,a0
    e8838488:	85d6                	mv	a1,s5
    e883848a:	4501                	li	a0,0
    e883848c:	820f70ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        rr->SendRNow = uDNSInterfaceMark;
    e8838490:	0009b783          	ld	a5,0(s3)
    e8838494:	ecfc                	sd	a5,216(s1)
    e8838496:	a039                	j	e88384a4 <uDNS_Tasks+0x4b8>
        else if (!AreRecordsMergeable(m, firstRR, rr, m->timenow + MERGE_DELAY_TIME)) continue;
    e8838498:	8626                	mv	a2,s1
    e883849a:	85ca                	mv	a1,s2
    e883849c:	8522                	mv	a0,s0
    e883849e:	9b0fa0ef          	jal	ra,e883264e <AreRecordsMergeable>
    e88384a2:	f969                	bnez	a0,e8838474 <uDNS_Tasks+0x488>
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e88384a4:	6084                	ld	s1,0(s1)
    e88384a6:	b5d5                	j	e883838a <uDNS_Tasks+0x39e>
            if ((rr->state != regState_Registered && rr->state != regState_Refresh) ||
    e88384a8:	14c4c783          	lbu	a5,332(s1)
    e88384ac:	01578463          	beq	a5,s5,e88384b4 <uDNS_Tasks+0x4c8>
    e88384b0:	03979763          	bne	a5,s9,e88384de <uDNS_Tasks+0x4f2>
                (rr->SendRNow == uDNSInterfaceMark) ||
    e88384b4:	000b3a03          	ld	s4,0(s6)
            if ((rr->state != regState_Registered && rr->state != regState_Refresh) ||
    e88384b8:	6cfc                	ld	a5,216(s1)
    e88384ba:	03478263          	beq	a5,s4,e88384de <uDNS_Tasks+0x4f2>
                (!AreRecordsMergeable(m, firstRR, rr, m->timenow + rr->ThisAPInterval/2)))
    e88384be:	1104a783          	lw	a5,272(s1)
    e88384c2:	24042683          	lw	a3,576(s0)
    e88384c6:	8626                	mv	a2,s1
    e88384c8:	0387c7bb          	divw	a5,a5,s8
    e88384cc:	85ca                	mv	a1,s2
    e88384ce:	8522                	mv	a0,s0
    e88384d0:	9ebd                	addw	a3,a3,a5
    e88384d2:	97cfa0ef          	jal	ra,e883264e <AreRecordsMergeable>
                (rr->SendRNow == uDNSInterfaceMark) ||
    e88384d6:	c501                	beqz	a0,e88384de <uDNS_Tasks+0x4f2>
            rr->SendRNow = uDNSInterfaceMark;
    e88384d8:	0d44bc23          	sd	s4,216(s1)
            acc++;
    e88384dc:	2985                	addiw	s3,s3,1
        for (rr = m->ResourceRecords; rr; rr = rr->next)
    e88384de:	6084                	ld	s1,0(s1)
    e88384e0:	f4e1                	bnez	s1,e88384a8 <uDNS_Tasks+0x4bc>
        if (acc) LogInfo("MarkRRForSending: Accelereated %d records", acc);
    e88384e2:	02098063          	beqz	s3,e8838502 <uDNS_Tasks+0x516>
    e88384e6:	0009c797          	auipc	a5,0x9c
    e88384ea:	58e78793          	addi	a5,a5,1422 # e88d4a74 <mDNS_LoggingEnabled>
    e88384ee:	439c                	lw	a5,0(a5)
    e88384f0:	cb89                	beqz	a5,e8838502 <uDNS_Tasks+0x516>
    e88384f2:	864e                	mv	a2,s3
    e88384f4:	00078597          	auipc	a1,0x78
    e88384f8:	4ac58593          	addi	a1,a1,1196 # e88b09a0 <__func__.9833+0x2a08>
    e88384fc:	450d                	li	a0,3
    e88384fe:	faff60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    mDNSu8 *next = m->omsg.data;
    e8838502:	679d                	lui	a5,0x7
    e8838504:	1ec78793          	addi	a5,a5,492 # 71ec <memcmp-0xe87f8e14>
    e8838508:	00f40db3          	add	s11,s0,a5
    AuthRecord *startRR = m->ResourceRecords;
    e883850c:	7782                	ld	a5,32(sp)
    DomainAuthInfo *AuthInfo = mDNSNULL;
    e883850e:	4a81                	li	s5,0
    mDNSu8 *limit = mDNSNULL;
    e8838510:	ec02                	sd	zero,24(sp)
    AuthRecord *startRR = m->ResourceRecords;
    e8838512:	1b87bc03          	ld	s8,440(a5)
    mDNSBool sentallRecords = mDNStrue;
    e8838516:	4785                	li	a5,1
    e8838518:	fc3e                	sd	a5,56(sp)
                if (AuthInfo && AuthInfo->AutoTunnel) spaceleft = AbsoluteMaxDNSMessageData;
    e883851a:	6789                	lui	a5,0x2
    e883851c:	2ec78793          	addi	a5,a5,748 # 22ec <memcmp-0xe87fdd14>
    AuthRecord *anchorRR = mDNSNULL;
    e8838520:	4a01                	li	s4,0
    mDNSu8 *next = m->omsg.data;
    e8838522:	89ee                	mv	s3,s11
    int nrecords = 0;
    e8838524:	4b01                	li	s6,0
    mDNSs32 spaceleft = 0;
    e8838526:	4901                	li	s2,0
                if (AuthInfo && AuthInfo->AutoTunnel) spaceleft = AbsoluteMaxDNSMessageData;
    e8838528:	ecbe                	sd	a5,88(sp)
    e883852a:	b905                	j	e883815a <uDNS_Tasks+0x16e>
        int acc = 0;
    e883852c:	4981                	li	s3,0
            if ((rr->state != regState_Registered && rr->state != regState_Refresh) ||
    e883852e:	4a89                	li	s5,2
                (rr->SendRNow == uDNSInterfaceMark) ||
    e8838530:	0006bb17          	auipc	s6,0x6b
    e8838534:	040b0b13          	addi	s6,s6,64 # e88a3570 <uDNSInterfaceMark>
                (!AreRecordsMergeable(m, firstRR, rr, m->timenow + rr->ThisAPInterval/2)))
    e8838538:	4c09                	li	s8,2
            if ((rr->state != regState_Registered && rr->state != regState_Refresh) ||
    e883853a:	4c95                	li	s9,5
    e883853c:	b755                	j	e88384e0 <uDNS_Tasks+0x4f4>
        if (!AuthRecord_uDNS(rr)) continue;
    e883853e:	0006b797          	auipc	a5,0x6b
    e8838542:	82278793          	addi	a5,a5,-2014 # e88a2d60 <mDNSInterface_Any>
    e8838546:	0007ba83          	ld	s5,0(a5)
    e883854a:	709c                	ld	a5,32(s1)
    e883854c:	11579b63          	bne	a5,s5,e8838662 <uDNS_Tasks+0x676>
    e8838550:	07a4c783          	lbu	a5,122(s1)
    e8838554:	10079763          	bnez	a5,e8838662 <uDNS_Tasks+0x676>
    e8838558:	7488                	ld	a0,40(s1)
    e883855a:	b49da0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e883855e:	10051263          	bnez	a0,e8838662 <uDNS_Tasks+0x676>
        if (rr->state == regState_NoTarget) {debugf("CheckRecordUpdates: Record %##s in NoTarget", rr->resrec.name->c); continue;}
    e8838562:	14c4c783          	lbu	a5,332(s1)
        if (rr->state == regState_NATMap) {debugf("CheckRecordUpdates: Record %##s in NATMap", rr->resrec.name->c); continue;}
    e8838566:	ffa7871b          	addiw	a4,a5,-6
    e883856a:	0fd77713          	andi	a4,a4,253
    e883856e:	0e070a63          	beqz	a4,e8838662 <uDNS_Tasks+0x676>
        if (rr->state == regState_Pending || rr->state == regState_DeregPending || rr->state == regState_UpdatePending ||
    e8838572:	fff7871b          	addiw	a4,a5,-1
    e8838576:	0ff77713          	andi	a4,a4,255
    e883857a:	4689                	li	a3,2
    e883857c:	00e6f763          	bgeu	a3,a4,e883858a <uDNS_Tasks+0x59e>
    e8838580:	0fd7f793          	andi	a5,a5,253
    e8838584:	4715                	li	a4,5
    e8838586:	0ce79463          	bne	a5,a4,e883864e <uDNS_Tasks+0x662>
            if (rr->LastAPTime + rr->ThisAPInterval - m->timenow <= 0)
    e883858a:	1104a703          	lw	a4,272(s1)
    e883858e:	1144a783          	lw	a5,276(s1)
    e8838592:	9fb9                	addw	a5,a5,a4
    e8838594:	24042703          	lw	a4,576(s0)
    e8838598:	9f99                	subw	a5,a5,a4
    e883859a:	0af04a63          	bgtz	a5,e883864e <uDNS_Tasks+0x662>
                if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL; }
    e883859e:	1704b503          	ld	a0,368(s1)
    e88385a2:	c509                	beqz	a0,e88385ac <uDNS_Tasks+0x5c0>
    e88385a4:	93efb0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e88385a8:	1604b823          	sd	zero,368(s1)
                if (!rr->nta || mDNSIPv4AddressIsZero(rr->nta->Addr.ip.v4))
    e88385ac:	1684b583          	ld	a1,360(s1)
    e88385b0:	cd99                	beqz	a1,e88385ce <uDNS_Tasks+0x5e2>
    e88385b2:	3185a783          	lw	a5,792(a1)
    e88385b6:	ef95                	bnez	a5,e88385f2 <uDNS_Tasks+0x606>
                    if (rr->nta) { rr->updateid = zeroID; CancelGetZoneData(m, rr->nta); }
    e88385b8:	0006b797          	auipc	a5,0x6b
    e88385bc:	fe878793          	addi	a5,a5,-24 # e88a35a0 <zeroID>
    e88385c0:	0007d783          	lhu	a5,0(a5)
    e88385c4:	8522                	mv	a0,s0
    e88385c6:	14f49b23          	sh	a5,342(s1)
    e88385ca:	a6ae90ef          	jal	ra,e8821834 <CancelGetZoneData>
                    rr->nta = StartGetZoneData(m, rr->resrec.name, ZoneServiceUpdate, RecordRegistrationGotZoneData, rr);
    e88385ce:	748c                	ld	a1,40(s1)
    e88385d0:	8726                	mv	a4,s1
    e88385d2:	ffffe697          	auipc	a3,0xffffe
    e88385d6:	7fc68693          	addi	a3,a3,2044 # e8836dce <RecordRegistrationGotZoneData>
    e88385da:	4601                	li	a2,0
    e88385dc:	8522                	mv	a0,s0
    e88385de:	f6cfc0ef          	jal	ra,e8834d4a <StartGetZoneData>
    e88385e2:	16a4b423          	sd	a0,360(s1)
    SetRecordRetry(m, rr, 0);
    e88385e6:	4601                	li	a2,0
    e88385e8:	85a6                	mv	a1,s1
    e88385ea:	8522                	mv	a0,s0
    e88385ec:	a4bf80ef          	jal	ra,e8831036 <SetRecordRetry>
    return;
    e88385f0:	a8b9                	j	e883864e <uDNS_Tasks+0x662>
                else if (rr->state == regState_DeregPending) SendRecordDeregistration(m, rr);
    e88385f2:	14c4c703          	lbu	a4,332(s1)
    e88385f6:	478d                	li	a5,3
    e88385f8:	20f71e63          	bne	a4,a5,e8838814 <uDNS_Tasks+0x828>
    mDNS_CheckLock(m);
    e88385fc:	5858                	lw	a4,52(s0)
    e88385fe:	5814                	lw	a3,48(s0)
    e8838600:	0017079b          	addiw	a5,a4,1
    e8838604:	00d78d63          	beq	a5,a3,e883861e <uDNS_Tasks+0x632>
    e8838608:	00076617          	auipc	a2,0x76
    e883860c:	95860613          	addi	a2,a2,-1704 # e88adf60 <__func__.9650>
    e8838610:	0006f597          	auipc	a1,0x6f
    e8838614:	b8058593          	addi	a1,a1,-1152 # e88a7190 <end.8789+0x3ae8>
    e8838618:	4501                	li	a0,0
    e883861a:	e93f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    if (!rr->nta || mDNSIPv4AddressIsZero(rr->nta->Addr.ip.v4))
    e883861e:	1684b783          	ld	a5,360(s1)
    e8838622:	c781                	beqz	a5,e883862a <uDNS_Tasks+0x63e>
    e8838624:	3187a783          	lw	a5,792(a5)
    e8838628:	ef9d                	bnez	a5,e8838666 <uDNS_Tasks+0x67a>
        LogMsg("SendRecordDeRegistration: No zone info for Resource record %s RecordType %d", ARDisplayString(m, rr), rr->resrec.RecordType);
    e883862a:	788c                	ld	a1,48(s1)
    e883862c:	03b40613          	addi	a2,s0,59
    e8838630:	00848513          	addi	a0,s1,8
    e8838634:	0591                	addi	a1,a1,4
    e8838636:	bdede0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883863a:	862a                	mv	a2,a0
    e883863c:	0084c683          	lbu	a3,8(s1)
    e8838640:	00078597          	auipc	a1,0x78
    e8838644:	39058593          	addi	a1,a1,912 # e88b09d0 <__func__.9833+0x2a38>
    e8838648:	4501                	li	a0,0
    e883864a:	e63f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (nextevent - (rr->LastAPTime + rr->ThisAPInterval) > 0)
    e883864e:	1144a783          	lw	a5,276(s1)
    e8838652:	1104a703          	lw	a4,272(s1)
    e8838656:	9f3d                	addw	a4,a4,a5
    e8838658:	40eb87bb          	subw	a5,s7,a4
    e883865c:	00f05363          	blez	a5,e8838662 <uDNS_Tasks+0x676>
            nextevent = (rr->LastAPTime + rr->ThisAPInterval);
    e8838660:	8bba                	mv	s7,a4
    for (rr = m->ResourceRecords; rr; rr = rr->next)
    e8838662:	6084                	ld	s1,0(s1)
    e8838664:	b3a1                	j	e88383ac <uDNS_Tasks+0x3c0>
    AuthInfo = GetAuthInfoForName_internal(m, rr->resrec.name);
    e8838666:	748c                	ld	a1,40(s1)
    e8838668:	8522                	mv	a0,s0
    e883866a:	e23f90ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    limit -= RRAdditionalSize(m, AuthInfo);
    e883866e:	85aa                	mv	a1,a0
    e8838670:	8522                	mv	a0,s0
    e8838672:	d5cf80ef          	jal	ra,e8830bce <RRAdditionalSize>
    e8838676:	7c05350b          	extu	a0,a0,31,0
    e883867a:	40aa0b33          	sub	s6,s4,a0
    rr->updateid = mDNS_NewMessageID(m);
    e883867e:	8522                	mv	a0,s0
    e8838680:	cefec0ef          	jal	ra,e882536e <mDNS_NewMessageID>
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e8838684:	85aa                	mv	a1,a0
    e8838686:	0006a797          	auipc	a5,0x6a
    e883868a:	6a278793          	addi	a5,a5,1698 # e88a2d28 <UpdateReqFlags>
    e883868e:	0007d603          	lhu	a2,0(a5)
    rr->updateid = mDNS_NewMessageID(m);
    e8838692:	14a49b23          	sh	a0,342(s1)
    InitializeDNSMessage(&m->omsg.h, rr->updateid, UpdateReqFlags);
    e8838696:	854a                	mv	a0,s2
    e8838698:	fb5db0ef          	jal	ra,e881464c <InitializeDNSMessage>
    e883869c:	00c4d783          	lhu	a5,12(s1)
    ptr = putZone(&m->omsg, ptr, limit, rr->zone, mDNSOpaque16fromIntVal(rr->resrec.rrclass));
    e88386a0:	1604b683          	ld	a3,352(s1)
    e88386a4:	85ce                	mv	a1,s3
    e88386a6:	0087971b          	slliw	a4,a5,0x8
    e88386aa:	5c87b78b          	extu	a5,a5,23,8
    e88386ae:	8f5d                	or	a4,a4,a5
    e88386b0:	865a                	mv	a2,s6
    e88386b2:	854a                	mv	a0,s2
    e88386b4:	9a2dc0ef          	jal	ra,e8814856 <putZone>
    e88386b8:	85aa                	mv	a1,a0
    if (!ptr) goto exit;
    e88386ba:	12050f63          	beqz	a0,e88387f8 <uDNS_Tasks+0x80c>
    ptr = BuildUpdateMessage(m, ptr, rr, limit);
    e88386be:	86da                	mv	a3,s6
    e88386c0:	8626                	mv	a2,s1
    e88386c2:	8522                	mv	a0,s0
    e88386c4:	f3ff80ef          	jal	ra,e8831602 <BuildUpdateMessage>
    e88386c8:	8b2a                	mv	s6,a0
    if (!ptr) goto exit;
    e88386ca:	12050763          	beqz	a0,e88387f8 <uDNS_Tasks+0x80c>
    if (rr->Private)
    e88386ce:	1544c703          	lbu	a4,340(s1)
    e88386d2:	0009cc17          	auipc	s8,0x9c
    e88386d6:	3a2c0c13          	addi	s8,s8,930 # e88d4a74 <mDNS_LoggingEnabled>
    e88386da:	000c2783          	lw	a5,0(s8)
    e88386de:	c75d                	beqz	a4,e883878c <uDNS_Tasks+0x7a0>
        LogInfo("SendRecordDeregistration TCP %p %s", rr->tcp, ARDisplayString(m, rr));
    e88386e0:	c785                	beqz	a5,e8838708 <uDNS_Tasks+0x71c>
    e88386e2:	788c                	ld	a1,48(s1)
    e88386e4:	1704ba83          	ld	s5,368(s1)
    e88386e8:	03b40613          	addi	a2,s0,59
    e88386ec:	0591                	addi	a1,a1,4
    e88386ee:	00848513          	addi	a0,s1,8
    e88386f2:	b22de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88386f6:	86aa                	mv	a3,a0
    e88386f8:	8656                	mv	a2,s5
    e88386fa:	00078597          	auipc	a1,0x78
    e88386fe:	32658593          	addi	a1,a1,806 # e88b0a20 <__func__.9833+0x2a88>
    e8838702:	450d                	li	a0,3
    e8838704:	da9f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (rr->tcp) LogInfo("SendRecordDeregistration: Disposing existing TCP connection for %s", ARDisplayString(m, rr));
    e8838708:	1704b783          	ld	a5,368(s1)
    e883870c:	c785                	beqz	a5,e8838734 <uDNS_Tasks+0x748>
    e883870e:	000c2783          	lw	a5,0(s8)
    e8838712:	c38d                	beqz	a5,e8838734 <uDNS_Tasks+0x748>
    e8838714:	788c                	ld	a1,48(s1)
    e8838716:	03b40613          	addi	a2,s0,59
    e883871a:	00848513          	addi	a0,s1,8
    e883871e:	0591                	addi	a1,a1,4
    e8838720:	af4de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8838724:	862a                	mv	a2,a0
    e8838726:	00078597          	auipc	a1,0x78
    e883872a:	32258593          	addi	a1,a1,802 # e88b0a48 <__func__.9833+0x2ab0>
    e883872e:	450d                	li	a0,3
    e8838730:	d7df60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (rr->tcp) { DisposeTCPConn(rr->tcp); rr->tcp = mDNSNULL; }
    e8838734:	1704b503          	ld	a0,368(s1)
    e8838738:	c509                	beqz	a0,e8838742 <uDNS_Tasks+0x756>
    e883873a:	fa9fa0ef          	jal	ra,e88336e2 <DisposeTCPConn>
    e883873e:	1604b823          	sd	zero,368(s1)
        if (!rr->nta) { LogMsg("SendRecordDeregistration:Private:ERROR!! nta is NULL for %s", ARDisplayString(m, rr)); return; }
    e8838742:	1684b703          	ld	a4,360(s1)
    e8838746:	e315                	bnez	a4,e883876a <uDNS_Tasks+0x77e>
    e8838748:	788c                	ld	a1,48(s1)
    e883874a:	03b40613          	addi	a2,s0,59
    e883874e:	00848513          	addi	a0,s1,8
    e8838752:	0591                	addi	a1,a1,4
    e8838754:	ac0de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8838758:	862a                	mv	a2,a0
    e883875a:	00078597          	auipc	a1,0x78
    e883875e:	33658593          	addi	a1,a1,822 # e88b0a90 <__func__.9833+0x2af8>
        if (!rr->nta) { LogMsg("SendRecordDeregistration:ERROR!! nta is NULL for %s", ARDisplayString(m, rr)); return; }
    e8838762:	4501                	li	a0,0
    e8838764:	d49f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8838768:	b5dd                	j	e883864e <uDNS_Tasks+0x662>
        rr->tcp = MakeTCPConn(m, &m->omsg, ptr, kTCPSocketFlags_UseTLS, &rr->nta->Addr, rr->nta->Port, &rr->nta->Host, mDNSNULL, rr);
    e883876a:	31275783          	lhu	a5,786(a4)
    e883876e:	21270813          	addi	a6,a4,530
    e8838772:	e026                	sd	s1,0(sp)
    e8838774:	4881                	li	a7,0
    e8838776:	31470713          	addi	a4,a4,788
    e883877a:	4685                	li	a3,1
    e883877c:	865a                	mv	a2,s6
    e883877e:	85ca                	mv	a1,s2
    e8838780:	8522                	mv	a0,s0
    e8838782:	d50fb0ef          	jal	ra,e8833cd2 <MakeTCPConn>
    e8838786:	16a4b823          	sd	a0,368(s1)
    e883878a:	bdb1                	j	e88385e6 <uDNS_Tasks+0x5fa>
        LogInfo("SendRecordDeregistration UDP %s", ARDisplayString(m, rr));
    e883878c:	c38d                	beqz	a5,e88387ae <uDNS_Tasks+0x7c2>
    e883878e:	788c                	ld	a1,48(s1)
    e8838790:	03b40613          	addi	a2,s0,59
    e8838794:	00848513          	addi	a0,s1,8
    e8838798:	0591                	addi	a1,a1,4
    e883879a:	a7ade0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e883879e:	862a                	mv	a2,a0
    e88387a0:	00078597          	auipc	a1,0x78
    e88387a4:	33058593          	addi	a1,a1,816 # e88b0ad0 <__func__.9833+0x2b38>
    e88387a8:	450d                	li	a0,3
    e88387aa:	d03f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if (!rr->nta) { LogMsg("SendRecordDeregistration:ERROR!! nta is NULL for %s", ARDisplayString(m, rr)); return; }
    e88387ae:	1684bc03          	ld	s8,360(s1)
    e88387b2:	020c1063          	bnez	s8,e88387d2 <uDNS_Tasks+0x7e6>
    e88387b6:	788c                	ld	a1,48(s1)
    e88387b8:	03b40613          	addi	a2,s0,59
    e88387bc:	00848513          	addi	a0,s1,8
    e88387c0:	0591                	addi	a1,a1,4
    e88387c2:	a52de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e88387c6:	862a                	mv	a2,a0
    e88387c8:	00078597          	auipc	a1,0x78
    e88387cc:	32858593          	addi	a1,a1,808 # e88b0af0 <__func__.9833+0x2b58>
    e88387d0:	bf49                	j	e8838762 <uDNS_Tasks+0x776>
        err = mDNSSendDNSMessage(m, &m->omsg, ptr, mDNSInterface_Any, mDNSNULL, &rr->nta->Addr, rr->nta->Port, mDNSNULL, GetAuthInfoForName_internal(m, rr->resrec.name), mDNSfalse);
    e88387d2:	748c                	ld	a1,40(s1)
    e88387d4:	8522                	mv	a0,s0
    e88387d6:	cb7f90ef          	jal	ra,e883248c <GetAuthInfoForName_internal>
    e88387da:	312c5803          	lhu	a6,786(s8)
    e88387de:	4881                	li	a7,0
    e88387e0:	e02a                	sd	a0,0(sp)
    e88387e2:	e402                	sd	zero,8(sp)
    e88387e4:	314c0793          	addi	a5,s8,788
    e88387e8:	4701                	li	a4,0
    e88387ea:	86d6                	mv	a3,s5
    e88387ec:	865a                	mv	a2,s6
    e88387ee:	85ca                	mv	a1,s2
    e88387f0:	8522                	mv	a0,s0
    e88387f2:	ec1de0ef          	jal	ra,e88176b2 <mDNSSendDNSMessage>
        if (err) debugf("ERROR: SendRecordDeregistration - mDNSSendDNSMessage - %d", err);
    e88387f6:	bbc5                	j	e88385e6 <uDNS_Tasks+0x5fa>
    LogMsg("SendRecordDeregistration: Error formatting message for %s", ARDisplayString(m, rr));
    e88387f8:	788c                	ld	a1,48(s1)
    e88387fa:	03b40613          	addi	a2,s0,59
    e88387fe:	00848513          	addi	a0,s1,8
    e8838802:	0591                	addi	a1,a1,4
    e8838804:	a10de0ef          	jal	ra,e8816a14 <GetRRDisplayString_rdb>
    e8838808:	862a                	mv	a2,a0
    e883880a:	00078597          	auipc	a1,0x78
    e883880e:	31e58593          	addi	a1,a1,798 # e88b0b28 <__func__.9833+0x2b90>
    e8838812:	bf81                	j	e8838762 <uDNS_Tasks+0x776>
                else SendRecordRegistration(m, rr);
    e8838814:	85a6                	mv	a1,s1
    e8838816:	8522                	mv	a0,s0
    e8838818:	a4ffb0ef          	jal	ra,e8834266 <SendRecordRegistration>
    e883881c:	bd0d                	j	e883864e <uDNS_Tasks+0x662>
        if (d->penaltyTime)
    e883881e:	1304a783          	lw	a5,304(s1)
    e8838822:	cb85                	beqz	a5,e8838852 <uDNS_Tasks+0x866>
            if (m->timenow - d->penaltyTime >= 0)
    e8838824:	24042703          	lw	a4,576(s0)
    e8838828:	9f1d                	subw	a4,a4,a5
    e883882a:	02074663          	bltz	a4,e8838856 <uDNS_Tasks+0x86a>
                LogInfo("DNS server %#a:%d out of penalty box", &d->addr, mDNSVal16(d->port));
    e883882e:	0009a783          	lw	a5,0(s3)
    e8838832:	cf91                	beqz	a5,e883884e <uDNS_Tasks+0x862>
mDNSinline mDNSu16 mDNSVal16(mDNSOpaque16 x) { return((mDNSu16)((mDNSu16)x.b[0] <<  8 | (mDNSu16)x.b[1])); }
    e8838834:	0284c783          	lbu	a5,40(s1)
    e8838838:	0294c683          	lbu	a3,41(s1)
    e883883c:	01448613          	addi	a2,s1,20
    e8838840:	0087979b          	slliw	a5,a5,0x8
    e8838844:	8edd                	or	a3,a3,a5
    e8838846:	85d2                	mv	a1,s4
    e8838848:	450d                	li	a0,3
    e883884a:	c63f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                d->penaltyTime = 0;
    e883884e:	1204a823          	sw	zero,304(s1)
    for (d = m->DNSServers; d; d=d->next)
    e8838852:	6084                	ld	s1,0(s1)
    e8838854:	b661                	j	e88383dc <uDNS_Tasks+0x3f0>
            if (m->NextuDNSEvent - d->penaltyTime > 0)
    e8838856:	1f892703          	lw	a4,504(s2) # 31f8 <memcmp-0xe87fce08>
    e883885a:	9f1d                	subw	a4,a4,a5
    e883885c:	fee05be3          	blez	a4,e8838852 <uDNS_Tasks+0x866>
                m->NextuDNSEvent = d->penaltyTime;
    e8838860:	1ef92c23          	sw	a5,504(s2)
    e8838864:	b7fd                	j	e8838852 <uDNS_Tasks+0x866>
        if (ActiveQuestion(q) && !mDNSOpaque16IsZero(q->TargetQID))
    e8838866:	48dc                	lw	a5,20(s1)
    e8838868:	02f05863          	blez	a5,e8838898 <uDNS_Tasks+0x8ac>
    e883886c:	68bc                	ld	a5,80(s1)
    e883886e:	e78d                	bnez	a5,e8838898 <uDNS_Tasks+0x8ac>
    e8838870:	2124d783          	lhu	a5,530(s1)
    e8838874:	c395                	beqz	a5,e8838898 <uDNS_Tasks+0x8ac>
            uDNS_CheckCurrentQuestion(m);
    e8838876:	8522                	mv	a0,s0
    e8838878:	adbfe0ef          	jal	ra,e8837352 <uDNS_CheckCurrentQuestion>
            if (q == m->CurrentQuestion)
    e883887c:	2c843783          	ld	a5,712(s0)
    e8838880:	b89797e3          	bne	a5,s1,e883840e <uDNS_Tasks+0x422>
                if (m->NextuDNSEvent - NextQSendTime(q) > 0)
    e8838884:	e4e4c78b          	lwd	a5,a4,(s1),2,3
    e8838888:	9fb9                	addw	a5,a5,a4
    e883888a:	1f892703          	lw	a4,504(s2)
    e883888e:	9f1d                	subw	a4,a4,a5
    e8838890:	00e05463          	blez	a4,e8838898 <uDNS_Tasks+0x8ac>
                    m->NextuDNSEvent = NextQSendTime(q);
    e8838894:	1ef92c23          	sw	a5,504(s2)
            m->CurrentQuestion = q->next;
    e8838898:	609c                	ld	a5,0(s1)
    e883889a:	2cf43423          	sd	a5,712(s0)
    e883889e:	be85                	j	e883840e <uDNS_Tasks+0x422>

00000000e88388a0 <SleepRecordRegistrations>:
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e88388a0:	678d                	lui	a5,0x3
{
    e88388a2:	7139                	addi	sp,sp,-64
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e88388a4:	97aa                	add	a5,a5,a0
{
    e88388a6:	e826                	sd	s1,16(sp)
    e88388a8:	ec4a                	sd	s2,24(sp)
    e88388aa:	f04e                	sd	s3,32(sp)
    e88388ac:	f452                	sd	s4,40(sp)
    e88388ae:	f856                	sd	s5,48(sp)
    e88388b0:	fc06                	sd	ra,56(sp)
    e88388b2:	e422                	sd	s0,8(sp)
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e88388b4:	1b87b403          	ld	s0,440(a5) # 31b8 <memcmp-0xe87fce48>
{
    e88388b8:	84aa                	mv	s1,a0
        if (AuthRecord_uDNS(rr))
    e88388ba:	0006a917          	auipc	s2,0x6a
    e88388be:	4a690913          	addi	s2,s2,1190 # e88a2d60 <mDNSInterface_Any>
            if (rr->state == regState_UpdatePending)
    e88388c2:	499d                	li	s3,7
                rr->state = regState_Registered;
    e88388c4:	4a09                	li	s4,2
            if (rr->nta) { rr->updateid = zeroID; CancelGetZoneData(m, rr->nta); rr->nta = mDNSNULL; }
    e88388c6:	0006ba97          	auipc	s5,0x6b
    e88388ca:	cdaa8a93          	addi	s5,s5,-806 # e88a35a0 <zeroID>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e88388ce:	e811                	bnez	s0,e88388e2 <SleepRecordRegistrations+0x42>
}
    e88388d0:	70e2                	ld	ra,56(sp)
    e88388d2:	6422                	ld	s0,8(sp)
    e88388d4:	64c2                	ld	s1,16(sp)
    e88388d6:	6962                	ld	s2,24(sp)
    e88388d8:	7982                	ld	s3,32(sp)
    e88388da:	7a22                	ld	s4,40(sp)
    e88388dc:	7ac2                	ld	s5,48(sp)
    e88388de:	6121                	addi	sp,sp,64
    e88388e0:	8082                	ret
        if (AuthRecord_uDNS(rr))
    e88388e2:	7018                	ld	a4,32(s0)
    e88388e4:	00093783          	ld	a5,0(s2)
    e88388e8:	06f71f63          	bne	a4,a5,e8838966 <SleepRecordRegistrations+0xc6>
    e88388ec:	07a44783          	lbu	a5,122(s0)
    e88388f0:	ebbd                	bnez	a5,e8838966 <SleepRecordRegistrations+0xc6>
    e88388f2:	7408                	ld	a0,40(s0)
    e88388f4:	faeda0ef          	jal	ra,e88130a2 <IsLocalDomain>
    e88388f8:	e53d                	bnez	a0,e8838966 <SleepRecordRegistrations+0xc6>
            if (rr->nta) { rr->updateid = zeroID; CancelGetZoneData(m, rr->nta); rr->nta = mDNSNULL; }
    e88388fa:	16843583          	ld	a1,360(s0)
    e88388fe:	c991                	beqz	a1,e8838912 <SleepRecordRegistrations+0x72>
    e8838900:	000ad783          	lhu	a5,0(s5)
    e8838904:	8526                	mv	a0,s1
    e8838906:	14f41b23          	sh	a5,342(s0)
    e883890a:	f2be80ef          	jal	ra,e8821834 <CancelGetZoneData>
    e883890e:	16043423          	sd	zero,360(s0)
            if (rr->NATinfo.clientContext)
    e8838912:	1c843783          	ld	a5,456(s0)
    e8838916:	cb81                	beqz	a5,e8838926 <SleepRecordRegistrations+0x86>
                mDNS_StopNATOperation_internal(m, &rr->NATinfo);
    e8838918:	17840593          	addi	a1,s0,376
    e883891c:	8526                	mv	a0,s1
    e883891e:	bf8fa0ef          	jal	ra,e8832d16 <mDNS_StopNATOperation_internal>
                rr->NATinfo.clientContext = mDNSNULL;
    e8838922:	1c043423          	sd	zero,456(s0)
            if (rr->state == regState_UpdatePending)
    e8838926:	14c44783          	lbu	a5,332(s0)
    e883892a:	03379a63          	bne	a5,s3,e883895e <SleepRecordRegistrations+0xbe>
                if (rr->UpdateCallback) rr->UpdateCallback(m, rr, rr->OrigRData, rr->OrigRDLen);
    e883892e:	13843783          	ld	a5,312(s0)
                rr->state = regState_Registered;
    e8838932:	15440623          	sb	s4,332(s0)
                if (rr->UpdateCallback) rr->UpdateCallback(m, rr, rr->OrigRData, rr->OrigRDLen);
    e8838936:	cb81                	beqz	a5,e8838946 <SleepRecordRegistrations+0xa6>
    e8838938:	1e045683          	lhu	a3,480(s0)
    e883893c:	1e843603          	ld	a2,488(s0)
    e8838940:	85a2                	mv	a1,s0
    e8838942:	8526                	mv	a0,s1
    e8838944:	9782                	jalr	a5
                SetNewRData(&rr->resrec, rr->InFlightRData, rr->InFlightRDLen);
    e8838946:	1e245603          	lhu	a2,482(s0)
    e883894a:	1f043583          	ld	a1,496(s0)
    e883894e:	00840513          	addi	a0,s0,8
    e8838952:	906dc0ef          	jal	ra,e8814a58 <SetNewRData>
                rr->OrigRData = mDNSNULL;
    e8838956:	1e043423          	sd	zero,488(s0)
                rr->InFlightRData = mDNSNULL;
    e883895a:	1e043823          	sd	zero,496(s0)
            uDNS_DeregisterRecord(m, rr);
    e883895e:	85a2                	mv	a1,s0
    e8838960:	8526                	mv	a0,s1
    e8838962:	988fe0ef          	jal	ra,e8836aea <uDNS_DeregisterRecord>
    for (rr = m->ResourceRecords; rr; rr=rr->next)
    e8838966:	6000                	ld	s0,0(s0)
    e8838968:	b79d                	j	e88388ce <SleepRecordRegistrations+0x2e>

00000000e883896a <uDNS_SetupWABQueries>:

mDNSexport void uDNS_SetupWABQueries(mDNS *const m)
{
    e883896a:	7119                	addi	sp,sp,-128
    SearchListElem **p = &SearchList, *ptr;
    mStatus err;
    int action = 0;

    // step 1: mark each element for removal
    for (ptr = SearchList; ptr; ptr = ptr->next)
    e883896c:	000ab717          	auipc	a4,0xab
    e8838970:	1f470713          	addi	a4,a4,500 # e88e3b60 <SearchList>
{
    e8838974:	f8a2                	sd	s0,112(sp)
    e8838976:	f4a6                	sd	s1,104(sp)
    e8838978:	fc86                	sd	ra,120(sp)
    e883897a:	f0ca                	sd	s2,96(sp)
    e883897c:	ecce                	sd	s3,88(sp)
    e883897e:	e8d2                	sd	s4,80(sp)
    e8838980:	e4d6                	sd	s5,72(sp)
    e8838982:	e0da                	sd	s6,64(sp)
    e8838984:	fc5e                	sd	s7,56(sp)
    e8838986:	f862                	sd	s8,48(sp)
    e8838988:	f466                	sd	s9,40(sp)
    e883898a:	f06a                	sd	s10,32(sp)
    e883898c:	ec6e                	sd	s11,24(sp)
    for (ptr = SearchList; ptr; ptr = ptr->next)
    e883898e:	631c                	ld	a5,0(a4)
{
    e8838990:	842a                	mv	s0,a0
    e8838992:	84ba                	mv	s1,a4
    for (ptr = SearchList; ptr; ptr = ptr->next)
    e8838994:	ebd1                	bnez	a5,e8838a28 <uDNS_SetupWABQueries+0xbe>
        ptr->flag |= SLE_DELETE;

    // Make sure we have the search domains from the platform layer so that if we start the WAB
    // queries below, we have the latest information.
    mDNS_Lock(m);
    e8838996:	00075597          	auipc	a1,0x75
    e883899a:	60258593          	addi	a1,a1,1538 # e88adf98 <__func__.9833>
    e883899e:	8522                	mv	a0,s0
    e88389a0:	862dd0ef          	jal	ra,e8815a02 <mDNS_Lock_>
    if (!mDNSPlatformSetDNSConfig(mDNSfalse, mDNStrue, mDNSNULL, mDNSNULL, mDNSNULL, mDNSfalse))
    e88389a4:	4781                	li	a5,0
    e88389a6:	4701                	li	a4,0
    e88389a8:	4681                	li	a3,0
    e88389aa:	4601                	li	a2,0
    e88389ac:	4585                	li	a1,1
    e88389ae:	4501                	li	a0,0
    e88389b0:	f6df60ef          	jal	ra,e882f91c <mDNSPlatformSetDNSConfig>
    e88389b4:	e105                	bnez	a0,e88389d4 <uDNS_SetupWABQueries+0x6a>
    {
        // If the configuration did not change, clear the flag so that we don't free the searchlist.
        // We still have to start the domain enumeration queries as we may not have started them
        // before.
        for (ptr = SearchList; ptr; ptr = ptr->next)
    e88389b6:	609c                	ld	a5,0(s1)
    e88389b8:	e3c1                	bnez	a5,e8838a38 <uDNS_SetupWABQueries+0xce>
            ptr->flag &= ~SLE_DELETE;
        LogInfo("uDNS_SetupWABQueries: No config change");
    e88389ba:	0009c797          	auipc	a5,0x9c
    e88389be:	0ba78793          	addi	a5,a5,186 # e88d4a74 <mDNS_LoggingEnabled>
    e88389c2:	439c                	lw	a5,0(a5)
    e88389c4:	cb81                	beqz	a5,e88389d4 <uDNS_SetupWABQueries+0x6a>
    e88389c6:	00077597          	auipc	a1,0x77
    e88389ca:	70258593          	addi	a1,a1,1794 # e88b00c8 <__func__.9833+0x2130>
    e88389ce:	450d                	li	a0,3
    e88389d0:	addf60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    }
    mDNS_Unlock(m);
    e88389d4:	00075597          	auipc	a1,0x75
    e88389d8:	5c458593          	addi	a1,a1,1476 # e88adf98 <__func__.9833>
    e88389dc:	8522                	mv	a0,s0
    e88389de:	8eedd0ef          	jal	ra,e8815acc <mDNS_Unlock_>

    if (m->WABBrowseQueriesCount)
    e88389e2:	6791                	lui	a5,0x4
    e88389e4:	97a2                	add	a5,a5,s0
    e88389e6:	b787a483          	lw	s1,-1160(a5) # 3b78 <memcmp-0xe87fc488>
        action |= UDNS_WAB_BROWSE_QUERY;
    if (m->WABLBrowseQueriesCount)
    e88389ea:	b7c7a783          	lw	a5,-1156(a5)
    int action = 0;
    e88389ee:	009034b3          	snez	s1,s1
    if (m->WABLBrowseQueriesCount)
    e88389f2:	c781                	beqz	a5,e88389fa <uDNS_SetupWABQueries+0x90>
        action |= UDNS_WAB_LBROWSE_QUERY;
    e88389f4:	0024e493          	ori	s1,s1,2
    e88389f8:	2481                	sext.w	s1,s1
    if (m->WABRegQueriesCount)
    e88389fa:	6791                	lui	a5,0x4
    e88389fc:	97a2                	add	a5,a5,s0
    e88389fe:	b807a783          	lw	a5,-1152(a5) # 3b80 <memcmp-0xe87fc480>
    e8838a02:	c399                	beqz	a5,e8838a08 <uDNS_SetupWABQueries+0x9e>
        action |= UDNS_WAB_REG_QUERY;
    e8838a04:	0044e493          	ori	s1,s1,4

    // delete elems marked for removal, do queries for elems marked add
    while (*p)
    {
        ptr = *p;
        LogInfo("uDNS_SetupWABQueries:action 0x%x: Flags 0x%x,  AuthRecs %p, InterfaceID %p %##s", action, ptr->flag, ptr->AuthRecs, ptr->InterfaceID, ptr->domain.c);
    e8838a08:	6a85                	lui	s5,0x1
    e8838a0a:	0024f913          	andi	s2,s1,2
    e8838a0e:	0044f993          	andi	s3,s1,4
{
    e8838a12:	000abb17          	auipc	s6,0xab
    e8838a16:	14eb0b13          	addi	s6,s6,334 # e88e3b60 <SearchList>
                }
                if ((ptr->flag & SLE_WAB_REG_QUERY_STARTED) &&
                    !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
                {
                    LogInfo("uDNS_SetupWABQueries: DELETE  Registration for domain  %##s", ptr->domain.c);
                    mDNS_StopGetDomains(m, &ptr->RegisterQ);
    e8838a1a:	b20a8c13          	addi	s8,s5,-1248 # b20 <memcmp-0xe87ff4e0>
            (!(action & UDNS_WAB_BROWSE_QUERY) && (ptr->flag & SLE_WAB_BROWSE_QUERY_STARTED)) ||
    e8838a1e:	0014fb93          	andi	s7,s1,1
                {
                    ptr->flag |= SLE_WAB_BROWSE_QUERY_STARTED;
                }
            }
        }
        if ((action & UDNS_WAB_LBROWSE_QUERY) && !(ptr->flag & SLE_WAB_LBROWSE_QUERY_STARTED))
    e8838a22:	2901                	sext.w	s2,s2
                    ptr->flag |= SLE_WAB_LBROWSE_QUERY_STARTED;
                    LogInfo("uDNS_SetupWABQueries: Starting Legacy Browse for domain %##s", ptr->domain.c);
                }
            }
        }
        if ((action & UDNS_WAB_REG_QUERY) && !(ptr->flag & SLE_WAB_REG_QUERY_STARTED))
    e8838a24:	2981                	sext.w	s3,s3
    e8838a26:	a695                	j	e8838d8a <uDNS_SetupWABQueries+0x420>
        ptr->flag |= SLE_DELETE;
    e8838a28:	1087a703          	lw	a4,264(a5)
    e8838a2c:	00176713          	ori	a4,a4,1
    e8838a30:	10e7a423          	sw	a4,264(a5)
    for (ptr = SearchList; ptr; ptr = ptr->next)
    e8838a34:	639c                	ld	a5,0(a5)
    e8838a36:	bfb9                	j	e8838994 <uDNS_SetupWABQueries+0x2a>
            ptr->flag &= ~SLE_DELETE;
    e8838a38:	1087a703          	lw	a4,264(a5)
    e8838a3c:	9b79                	andi	a4,a4,-2
    e8838a3e:	10e7a423          	sw	a4,264(a5)
        for (ptr = SearchList; ptr; ptr = ptr->next)
    e8838a42:	639c                	ld	a5,0(a5)
    e8838a44:	bf95                	j	e88389b8 <uDNS_SetupWABQueries+0x4e>
        LogInfo("uDNS_SetupWABQueries:action 0x%x: Flags 0x%x,  AuthRecs %p, InterfaceID %p %##s", action, ptr->flag, ptr->AuthRecs, ptr->InterfaceID, ptr->domain.c);
    e8838a46:	0009cd17          	auipc	s10,0x9c
    e8838a4a:	02ed0d13          	addi	s10,s10,46 # e88d4a74 <mDNS_LoggingEnabled>
    e8838a4e:	000d2783          	lw	a5,0(s10)
    e8838a52:	c39d                	beqz	a5,e8838a78 <uDNS_SetupWABQueries+0x10e>
    e8838a54:	015c8733          	add	a4,s9,s5
    e8838a58:	110cb783          	ld	a5,272(s9)
    e8838a5c:	1d873703          	ld	a4,472(a4)
    e8838a60:	108ca683          	lw	a3,264(s9)
    e8838a64:	008c8813          	addi	a6,s9,8
    e8838a68:	8626                	mv	a2,s1
    e8838a6a:	00077597          	auipc	a1,0x77
    e8838a6e:	68658593          	addi	a1,a1,1670 # e88b00f0 <__func__.9833+0x2158>
    e8838a72:	450d                	li	a0,3
    e8838a74:	a39f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if ((ptr->flag & SLE_DELETE) ||
    e8838a78:	108ca783          	lw	a5,264(s9)
    e8838a7c:	0017f713          	andi	a4,a5,1
    e8838a80:	1c071b63          	bnez	a4,e8838c56 <uDNS_SetupWABQueries+0x2ec>
    e8838a84:	000b9663          	bnez	s7,e8838a90 <uDNS_SetupWABQueries+0x126>
            (!(action & UDNS_WAB_BROWSE_QUERY) && (ptr->flag & SLE_WAB_BROWSE_QUERY_STARTED)) ||
    e8838a88:	0027f713          	andi	a4,a5,2
    e8838a8c:	36071263          	bnez	a4,e8838df0 <uDNS_SetupWABQueries+0x486>
    e8838a90:	00091663          	bnez	s2,e8838a9c <uDNS_SetupWABQueries+0x132>
            (!(action & UDNS_WAB_LBROWSE_QUERY) && (ptr->flag & SLE_WAB_LBROWSE_QUERY_STARTED)) ||
    e8838a94:	0047f713          	andi	a4,a5,4
    e8838a98:	34071a63          	bnez	a4,e8838dec <uDNS_SetupWABQueries+0x482>
    e8838a9c:	00099663          	bnez	s3,e8838aa8 <uDNS_SetupWABQueries+0x13e>
            (!(action & UDNS_WAB_REG_QUERY) && (ptr->flag & SLE_WAB_REG_QUERY_STARTED)))
    e8838aa0:	0087f713          	andi	a4,a5,8
    e8838aa4:	34071463          	bnez	a4,e8838dec <uDNS_SetupWABQueries+0x482>
        if ((action & UDNS_WAB_BROWSE_QUERY) && !(ptr->flag & SLE_WAB_BROWSE_QUERY_STARTED))
    e8838aa8:	0a0b8263          	beqz	s7,e8838b4c <uDNS_SetupWABQueries+0x1e2>
    e8838aac:	108ca783          	lw	a5,264(s9)
    e8838ab0:	8b89                	andi	a5,a5,2
    e8838ab2:	efc9                	bnez	a5,e8838b4c <uDNS_SetupWABQueries+0x1e2>
            if (!SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838ab4:	008c8a13          	addi	s4,s9,8
    e8838ab8:	0006a597          	auipc	a1,0x6a
    e8838abc:	9f058593          	addi	a1,a1,-1552 # e88a24a8 <DiscardPort+0x498>
    e8838ac0:	8552                	mv	a0,s4
    e8838ac2:	d88da0ef          	jal	ra,e881304a <SameDomainName>
    e8838ac6:	e159                	bnez	a0,e8838b4c <uDNS_SetupWABQueries+0x1e2>
    e8838ac8:	0006a797          	auipc	a5,0x6a
    e8838acc:	29878793          	addi	a5,a5,664 # e88a2d60 <mDNSInterface_Any>
    e8838ad0:	110cb703          	ld	a4,272(s9)
    e8838ad4:	639c                	ld	a5,0(a5)
    e8838ad6:	06f71b63          	bne	a4,a5,e8838b4c <uDNS_SetupWABQueries+0x1e2>
                err1 = mDNS_GetDomains(m, &ptr->BrowseQ,          mDNS_DomainTypeBrowse,              &ptr->domain, ptr->InterfaceID, FoundDomain, ptr);
    e8838ada:	8866                	mv	a6,s9
    e8838adc:	ffff9797          	auipc	a5,0xffff9
    e8838ae0:	c8278793          	addi	a5,a5,-894 # e883175e <FoundDomain>
    e8838ae4:	86d2                	mv	a3,s4
    e8838ae6:	4601                	li	a2,0
    e8838ae8:	118c8593          	addi	a1,s9,280
    e8838aec:	8522                	mv	a0,s0
    e8838aee:	974f20ef          	jal	ra,e882ac62 <mDNS_GetDomains>
    e8838af2:	8b2a                	mv	s6,a0
                if (err1)
    e8838af4:	40050a63          	beqz	a0,e8838f08 <uDNS_SetupWABQueries+0x59e>
                    LogMsg("uDNS_SetupWABQueries: GetDomains for domain %##s returned error(s):\n"
    e8838af8:	86aa                	mv	a3,a0
    e8838afa:	8652                	mv	a2,s4
    e8838afc:	00078597          	auipc	a1,0x78
    e8838b00:	83458593          	addi	a1,a1,-1996 # e88b0330 <__func__.9833+0x2398>
    e8838b04:	4501                	li	a0,0
    e8838b06:	9a7f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                err2 = mDNS_GetDomains(m, &ptr->DefBrowseQ,       mDNS_DomainTypeBrowseDefault,       &ptr->domain, ptr->InterfaceID, FoundDomain, ptr);
    e8838b0a:	110cb703          	ld	a4,272(s9)
    e8838b0e:	86d2                	mv	a3,s4
    e8838b10:	8866                	mv	a6,s9
    e8838b12:	ffff9797          	auipc	a5,0xffff9
    e8838b16:	c4c78793          	addi	a5,a5,-948 # e883175e <FoundDomain>
    e8838b1a:	4605                	li	a2,1
    e8838b1c:	470c8593          	addi	a1,s9,1136
    e8838b20:	8522                	mv	a0,s0
    e8838b22:	940f20ef          	jal	ra,e882ac62 <mDNS_GetDomains>
    e8838b26:	86aa                	mv	a3,a0
                if (err2)
    e8838b28:	3e050d63          	beqz	a0,e8838f22 <uDNS_SetupWABQueries+0x5b8>
                    LogMsg("uDNS_SetupWABQueries: GetDomains for domain %##s returned error(s):\n"
    e8838b2c:	8652                	mv	a2,s4
    e8838b2e:	00078597          	auipc	a1,0x78
    e8838b32:	89a58593          	addi	a1,a1,-1894 # e88b03c8 <__func__.9833+0x2430>
    e8838b36:	4501                	li	a0,0
    e8838b38:	975f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                if (!err1 || !err2)
    e8838b3c:	000b1863          	bnez	s6,e8838b4c <uDNS_SetupWABQueries+0x1e2>
                    ptr->flag |= SLE_WAB_BROWSE_QUERY_STARTED;
    e8838b40:	108ca783          	lw	a5,264(s9)
    e8838b44:	0027e793          	ori	a5,a5,2
    e8838b48:	10fca423          	sw	a5,264(s9)
        if ((action & UDNS_WAB_LBROWSE_QUERY) && !(ptr->flag & SLE_WAB_LBROWSE_QUERY_STARTED))
    e8838b4c:	06090063          	beqz	s2,e8838bac <uDNS_SetupWABQueries+0x242>
    e8838b50:	108ca783          	lw	a5,264(s9)
    e8838b54:	8b91                	andi	a5,a5,4
    e8838b56:	ebb9                	bnez	a5,e8838bac <uDNS_SetupWABQueries+0x242>
            if (!SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838b58:	008c8a13          	addi	s4,s9,8
    e8838b5c:	0006a597          	auipc	a1,0x6a
    e8838b60:	94c58593          	addi	a1,a1,-1716 # e88a24a8 <DiscardPort+0x498>
    e8838b64:	8552                	mv	a0,s4
    e8838b66:	ce4da0ef          	jal	ra,e881304a <SameDomainName>
    e8838b6a:	e129                	bnez	a0,e8838bac <uDNS_SetupWABQueries+0x242>
    e8838b6c:	0006a797          	auipc	a5,0x6a
    e8838b70:	1f478793          	addi	a5,a5,500 # e88a2d60 <mDNSInterface_Any>
    e8838b74:	110cb703          	ld	a4,272(s9)
    e8838b78:	639c                	ld	a5,0(a5)
    e8838b7a:	02f71963          	bne	a4,a5,e8838bac <uDNS_SetupWABQueries+0x242>
                err1 = mDNS_GetDomains(m, &ptr->AutomaticBrowseQ, mDNS_DomainTypeBrowseAutomatic,     &ptr->domain, ptr->InterfaceID, FoundDomain, ptr);
    e8838b7e:	86d2                	mv	a3,s4
    e8838b80:	8866                	mv	a6,s9
    e8838b82:	ffff9797          	auipc	a5,0xffff9
    e8838b86:	bdc78793          	addi	a5,a5,-1060 # e883175e <FoundDomain>
    e8838b8a:	4609                	li	a2,2
    e8838b8c:	7c8c8593          	addi	a1,s9,1992
    e8838b90:	8522                	mv	a0,s0
    e8838b92:	8d0f20ef          	jal	ra,e882ac62 <mDNS_GetDomains>
    e8838b96:	86aa                	mv	a3,a0
                if (err1)
    e8838b98:	3a050263          	beqz	a0,e8838f3c <uDNS_SetupWABQueries+0x5d2>
                    LogMsg("uDNS_SetupWABQueries: GetDomains for domain %##s returned error(s):\n"
    e8838b9c:	8652                	mv	a2,s4
    e8838b9e:	00078597          	auipc	a1,0x78
    e8838ba2:	8d258593          	addi	a1,a1,-1838 # e88b0470 <__func__.9833+0x24d8>
    e8838ba6:	4501                	li	a0,0
    e8838ba8:	905f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
        if ((action & UDNS_WAB_REG_QUERY) && !(ptr->flag & SLE_WAB_REG_QUERY_STARTED))
    e8838bac:	0a098363          	beqz	s3,e8838c52 <uDNS_SetupWABQueries+0x2e8>
    e8838bb0:	108ca783          	lw	a5,264(s9)
    e8838bb4:	8ba1                	andi	a5,a5,8
    e8838bb6:	efd1                	bnez	a5,e8838c52 <uDNS_SetupWABQueries+0x2e8>
        {
            // If the user has "local" in their DNS searchlist, we ignore that for the purposes of domain enumeration queries.
            // Also, suppress the domain enumeration for scoped search domains for now until there is a need.
            if (!SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838bb8:	008c8a13          	addi	s4,s9,8
    e8838bbc:	0006a597          	auipc	a1,0x6a
    e8838bc0:	8ec58593          	addi	a1,a1,-1812 # e88a24a8 <DiscardPort+0x498>
    e8838bc4:	8552                	mv	a0,s4
    e8838bc6:	c84da0ef          	jal	ra,e881304a <SameDomainName>
    e8838bca:	e541                	bnez	a0,e8838c52 <uDNS_SetupWABQueries+0x2e8>
    e8838bcc:	0006a797          	auipc	a5,0x6a
    e8838bd0:	19478793          	addi	a5,a5,404 # e88a2d60 <mDNSInterface_Any>
    e8838bd4:	110cb703          	ld	a4,272(s9)
    e8838bd8:	639c                	ld	a5,0(a5)
    e8838bda:	06f71c63          	bne	a4,a5,e8838c52 <uDNS_SetupWABQueries+0x2e8>
            {
                mStatus err1, err2;
                err1 = mDNS_GetDomains(m, &ptr->RegisterQ,        mDNS_DomainTypeRegistration,        &ptr->domain, ptr->InterfaceID, FoundDomain, ptr);
    e8838bde:	8866                	mv	a6,s9
    e8838be0:	ffff9797          	auipc	a5,0xffff9
    e8838be4:	b7e78793          	addi	a5,a5,-1154 # e883175e <FoundDomain>
    e8838be8:	86d2                	mv	a3,s4
    e8838bea:	460d                	li	a2,3
    e8838bec:	018c85b3          	add	a1,s9,s8
    e8838bf0:	8522                	mv	a0,s0
    e8838bf2:	870f20ef          	jal	ra,e882ac62 <mDNS_GetDomains>
    e8838bf6:	8b2a                	mv	s6,a0
                if (err1)
    e8838bf8:	36050563          	beqz	a0,e8838f62 <uDNS_SetupWABQueries+0x5f8>
                {
                    LogMsg("uDNS_SetupWABQueries: GetDomains for domain %##s returned error(s):\n"
    e8838bfc:	86aa                	mv	a3,a0
    e8838bfe:	8652                	mv	a2,s4
    e8838c00:	00078597          	auipc	a1,0x78
    e8838c04:	92058593          	addi	a1,a1,-1760 # e88b0520 <__func__.9833+0x2588>
    e8838c08:	4501                	li	a0,0
    e8838c0a:	8a3f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                }
                else
                {
                    LogInfo("uDNS_SetupWABQueries: Starting Registration for domain %##s", ptr->domain.c);
                }
                err2 = mDNS_GetDomains(m, &ptr->DefRegisterQ,     mDNS_DomainTypeRegistrationDefault, &ptr->domain, ptr->InterfaceID, FoundDomain, ptr);
    e8838c0e:	110cb703          	ld	a4,272(s9)
    e8838c12:	e78a8593          	addi	a1,s5,-392
    e8838c16:	86d2                	mv	a3,s4
    e8838c18:	8866                	mv	a6,s9
    e8838c1a:	ffff9797          	auipc	a5,0xffff9
    e8838c1e:	b4478793          	addi	a5,a5,-1212 # e883175e <FoundDomain>
    e8838c22:	4611                	li	a2,4
    e8838c24:	95e6                	add	a1,a1,s9
    e8838c26:	8522                	mv	a0,s0
    e8838c28:	83af20ef          	jal	ra,e882ac62 <mDNS_GetDomains>
    e8838c2c:	86aa                	mv	a3,a0
                if (err2)
    e8838c2e:	34050763          	beqz	a0,e8838f7c <uDNS_SetupWABQueries+0x612>
                {
                    LogMsg("uDNS_SetupWABQueries: GetDomains for domain %##s returned error(s):\n"
    e8838c32:	8652                	mv	a2,s4
    e8838c34:	00078597          	auipc	a1,0x78
    e8838c38:	99458593          	addi	a1,a1,-1644 # e88b05c8 <__func__.9833+0x2630>
    e8838c3c:	4501                	li	a0,0
    e8838c3e:	86ff60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                }
                else
                {
                    LogInfo("uDNS_SetupWABQueries: Starting Default Registration for domain %##s", ptr->domain.c);
                }
                if (!err1 || !err2)
    e8838c42:	000b1863          	bnez	s6,e8838c52 <uDNS_SetupWABQueries+0x2e8>
                {
                    ptr->flag |= SLE_WAB_REG_QUERY_STARTED;
    e8838c46:	108ca783          	lw	a5,264(s9)
    e8838c4a:	0087e793          	ori	a5,a5,8
    e8838c4e:	10fca423          	sw	a5,264(s9)
                }
            }
        }

        p = &ptr->next;
    e8838c52:	8b66                	mv	s6,s9
    e8838c54:	aa1d                	j	e8838d8a <uDNS_SetupWABQueries+0x420>
                ARListElem *arList = ptr->AuthRecs;
    e8838c56:	015c87b3          	add	a5,s9,s5
    e8838c5a:	1d87ba03          	ld	s4,472(a5)
                ptr->AuthRecs = mDNSNULL;
    e8838c5e:	1c07bc23          	sd	zero,472(a5)
                *p = ptr->next;
    e8838c62:	000cb783          	ld	a5,0(s9)
    e8838c66:	00fb3023          	sd	a5,0(s6)
                if ((ptr->flag & SLE_WAB_BROWSE_QUERY_STARTED) &&
    e8838c6a:	108ca783          	lw	a5,264(s9)
    e8838c6e:	8b89                	andi	a5,a5,2
    e8838c70:	cbb1                	beqz	a5,e8838cc4 <uDNS_SetupWABQueries+0x35a>
                    !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838c72:	008c8613          	addi	a2,s9,8
    e8838c76:	0006a597          	auipc	a1,0x6a
    e8838c7a:	83258593          	addi	a1,a1,-1998 # e88a24a8 <DiscardPort+0x498>
    e8838c7e:	8532                	mv	a0,a2
    e8838c80:	e432                	sd	a2,8(sp)
    e8838c82:	bc8da0ef          	jal	ra,e881304a <SameDomainName>
                if ((ptr->flag & SLE_WAB_BROWSE_QUERY_STARTED) &&
    e8838c86:	ed1d                	bnez	a0,e8838cc4 <uDNS_SetupWABQueries+0x35a>
                    !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838c88:	0006a797          	auipc	a5,0x6a
    e8838c8c:	0d878793          	addi	a5,a5,216 # e88a2d60 <mDNSInterface_Any>
    e8838c90:	110cb703          	ld	a4,272(s9)
    e8838c94:	639c                	ld	a5,0(a5)
    e8838c96:	6622                	ld	a2,8(sp)
    e8838c98:	02f71663          	bne	a4,a5,e8838cc4 <uDNS_SetupWABQueries+0x35a>
                    LogInfo("uDNS_SetupWABQueries: DELETE  Browse for domain  %##s", ptr->domain.c);
    e8838c9c:	000d2783          	lw	a5,0(s10)
    e8838ca0:	cb81                	beqz	a5,e8838cb0 <uDNS_SetupWABQueries+0x346>
    e8838ca2:	00077597          	auipc	a1,0x77
    e8838ca6:	49e58593          	addi	a1,a1,1182 # e88b0140 <__func__.9833+0x21a8>
    e8838caa:	450d                	li	a0,3
    e8838cac:	801f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    mDNS_StopGetDomains(m, &ptr->BrowseQ);
    e8838cb0:	118c8593          	addi	a1,s9,280
    e8838cb4:	8522                	mv	a0,s0
    e8838cb6:	8afeb0ef          	jal	ra,e8824564 <mDNS_StopQuery>
                    mDNS_StopGetDomains(m, &ptr->DefBrowseQ);
    e8838cba:	470c8593          	addi	a1,s9,1136
    e8838cbe:	8522                	mv	a0,s0
    e8838cc0:	8a5eb0ef          	jal	ra,e8824564 <mDNS_StopQuery>
                if ((ptr->flag & SLE_WAB_LBROWSE_QUERY_STARTED) &&
    e8838cc4:	108ca783          	lw	a5,264(s9)
    e8838cc8:	8b91                	andi	a5,a5,4
    e8838cca:	c7a9                	beqz	a5,e8838d14 <uDNS_SetupWABQueries+0x3aa>
                    !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838ccc:	008c8613          	addi	a2,s9,8
    e8838cd0:	00069597          	auipc	a1,0x69
    e8838cd4:	7d858593          	addi	a1,a1,2008 # e88a24a8 <DiscardPort+0x498>
    e8838cd8:	8532                	mv	a0,a2
    e8838cda:	e432                	sd	a2,8(sp)
    e8838cdc:	b6eda0ef          	jal	ra,e881304a <SameDomainName>
                if ((ptr->flag & SLE_WAB_LBROWSE_QUERY_STARTED) &&
    e8838ce0:	e915                	bnez	a0,e8838d14 <uDNS_SetupWABQueries+0x3aa>
                    !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838ce2:	0006a797          	auipc	a5,0x6a
    e8838ce6:	07e78793          	addi	a5,a5,126 # e88a2d60 <mDNSInterface_Any>
    e8838cea:	110cb703          	ld	a4,272(s9)
    e8838cee:	639c                	ld	a5,0(a5)
    e8838cf0:	6622                	ld	a2,8(sp)
    e8838cf2:	02f71163          	bne	a4,a5,e8838d14 <uDNS_SetupWABQueries+0x3aa>
                    LogInfo("uDNS_SetupWABQueries: DELETE  Legacy Browse for domain  %##s", ptr->domain.c);
    e8838cf6:	000d2783          	lw	a5,0(s10)
    e8838cfa:	cb81                	beqz	a5,e8838d0a <uDNS_SetupWABQueries+0x3a0>
    e8838cfc:	00077597          	auipc	a1,0x77
    e8838d00:	47c58593          	addi	a1,a1,1148 # e88b0178 <__func__.9833+0x21e0>
    e8838d04:	450d                	li	a0,3
    e8838d06:	fa6f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    mDNS_StopGetDomains(m, &ptr->AutomaticBrowseQ);
    e8838d0a:	7c8c8593          	addi	a1,s9,1992
    e8838d0e:	8522                	mv	a0,s0
    e8838d10:	855eb0ef          	jal	ra,e8824564 <mDNS_StopQuery>
                if ((ptr->flag & SLE_WAB_REG_QUERY_STARTED) &&
    e8838d14:	108ca783          	lw	a5,264(s9)
    e8838d18:	8ba1                	andi	a5,a5,8
    e8838d1a:	cbb9                	beqz	a5,e8838d70 <uDNS_SetupWABQueries+0x406>
                    !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838d1c:	008c8613          	addi	a2,s9,8
    e8838d20:	00069597          	auipc	a1,0x69
    e8838d24:	78858593          	addi	a1,a1,1928 # e88a24a8 <DiscardPort+0x498>
    e8838d28:	8532                	mv	a0,a2
    e8838d2a:	e432                	sd	a2,8(sp)
    e8838d2c:	b1eda0ef          	jal	ra,e881304a <SameDomainName>
                if ((ptr->flag & SLE_WAB_REG_QUERY_STARTED) &&
    e8838d30:	e121                	bnez	a0,e8838d70 <uDNS_SetupWABQueries+0x406>
                    !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838d32:	0006a797          	auipc	a5,0x6a
    e8838d36:	02e78793          	addi	a5,a5,46 # e88a2d60 <mDNSInterface_Any>
    e8838d3a:	110cb703          	ld	a4,272(s9)
    e8838d3e:	639c                	ld	a5,0(a5)
    e8838d40:	6622                	ld	a2,8(sp)
    e8838d42:	02f71763          	bne	a4,a5,e8838d70 <uDNS_SetupWABQueries+0x406>
                    LogInfo("uDNS_SetupWABQueries: DELETE  Registration for domain  %##s", ptr->domain.c);
    e8838d46:	000d2783          	lw	a5,0(s10)
    e8838d4a:	cb81                	beqz	a5,e8838d5a <uDNS_SetupWABQueries+0x3f0>
    e8838d4c:	00077597          	auipc	a1,0x77
    e8838d50:	46c58593          	addi	a1,a1,1132 # e88b01b8 <__func__.9833+0x2220>
    e8838d54:	450d                	li	a0,3
    e8838d56:	f56f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    mDNS_StopGetDomains(m, &ptr->RegisterQ);
    e8838d5a:	018c85b3          	add	a1,s9,s8
    e8838d5e:	8522                	mv	a0,s0
    e8838d60:	805eb0ef          	jal	ra,e8824564 <mDNS_StopQuery>
                    mDNS_StopGetDomains(m, &ptr->DefRegisterQ);
    e8838d64:	e78a8593          	addi	a1,s5,-392
    e8838d68:	95e6                	add	a1,a1,s9
    e8838d6a:	8522                	mv	a0,s0
    e8838d6c:	ff8eb0ef          	jal	ra,e8824564 <mDNS_StopQuery>
                mDNSPlatformMemFree(ptr);
    e8838d70:	8566                	mv	a0,s9
    e8838d72:	d10f70ef          	jal	ra,e8830282 <mDNSPlatformMemFree>
                    LogInfo("uDNS_SetupWABQueries: DELETE Deregistering PTR %##s -> %##s", dereg->ar.resrec.name->c, dereg->ar.resrec.rdata->u.name.c);
    e8838d76:	00077c97          	auipc	s9,0x77
    e8838d7a:	482c8c93          	addi	s9,s9,1154 # e88b01f8 <__func__.9833+0x2260>
                    if (err) LogMsg("uDNS_SetupWABQueries:: ERROR!! mDNS_Deregister returned %d", err);
    e8838d7e:	00077d17          	auipc	s10,0x77
    e8838d82:	4bad0d13          	addi	s10,s10,1210 # e88b0238 <__func__.9833+0x22a0>
                while (arList)
    e8838d86:	020a1563          	bnez	s4,e8838db0 <uDNS_SetupWABQueries+0x446>
    while (*p)
    e8838d8a:	000b3c83          	ld	s9,0(s6)
    e8838d8e:	ca0c9ce3          	bnez	s9,e8838a46 <uDNS_SetupWABQueries+0xdc>
    }
}
    e8838d92:	70e6                	ld	ra,120(sp)
    e8838d94:	7446                	ld	s0,112(sp)
    e8838d96:	74a6                	ld	s1,104(sp)
    e8838d98:	7906                	ld	s2,96(sp)
    e8838d9a:	69e6                	ld	s3,88(sp)
    e8838d9c:	6a46                	ld	s4,80(sp)
    e8838d9e:	6aa6                	ld	s5,72(sp)
    e8838da0:	6b06                	ld	s6,64(sp)
    e8838da2:	7be2                	ld	s7,56(sp)
    e8838da4:	7c42                	ld	s8,48(sp)
    e8838da6:	7ca2                	ld	s9,40(sp)
    e8838da8:	7d02                	ld	s10,32(sp)
    e8838daa:	6de2                	ld	s11,24(sp)
    e8838dac:	6109                	addi	sp,sp,128
    e8838dae:	8082                	ret
                    LogInfo("uDNS_SetupWABQueries: DELETE Deregistering PTR %##s -> %##s", dereg->ar.resrec.name->c, dereg->ar.resrec.rdata->u.name.c);
    e8838db0:	0009c797          	auipc	a5,0x9c
    e8838db4:	cc478793          	addi	a5,a5,-828 # e88d4a74 <mDNS_LoggingEnabled>
    e8838db8:	439c                	lw	a5,0(a5)
                    arList = arList->next;
    e8838dba:	000a3d83          	ld	s11,0(s4)
                    LogInfo("uDNS_SetupWABQueries: DELETE Deregistering PTR %##s -> %##s", dereg->ar.resrec.name->c, dereg->ar.resrec.rdata->u.name.c);
    e8838dbe:	cb91                	beqz	a5,e8838dd2 <uDNS_SetupWABQueries+0x468>
    e8838dc0:	038a3683          	ld	a3,56(s4)
    e8838dc4:	030a3603          	ld	a2,48(s4)
    e8838dc8:	85e6                	mv	a1,s9
    e8838dca:	0691                	addi	a3,a3,4
    e8838dcc:	450d                	li	a0,3
    e8838dce:	edef60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                    err = mDNS_Deregister(m, &dereg->ar);
    e8838dd2:	008a0593          	addi	a1,s4,8
    e8838dd6:	8522                	mv	a0,s0
    e8838dd8:	805eb0ef          	jal	ra,e88245dc <mDNS_Deregister>
    e8838ddc:	862a                	mv	a2,a0
                    if (err) LogMsg("uDNS_SetupWABQueries:: ERROR!! mDNS_Deregister returned %d", err);
    e8838dde:	c509                	beqz	a0,e8838de8 <uDNS_SetupWABQueries+0x47e>
    e8838de0:	85ea                	mv	a1,s10
    e8838de2:	4501                	li	a0,0
    e8838de4:	ec8f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
{
    e8838de8:	8a6e                	mv	s4,s11
    e8838dea:	bf71                	j	e8838d86 <uDNS_SetupWABQueries+0x41c>
            if (!(action & UDNS_WAB_BROWSE_QUERY) && (ptr->flag & SLE_WAB_BROWSE_QUERY_STARTED) &&
    e8838dec:	040b9d63          	bnez	s7,e8838e46 <uDNS_SetupWABQueries+0x4dc>
    e8838df0:	8b89                	andi	a5,a5,2
    e8838df2:	cbb1                	beqz	a5,e8838e46 <uDNS_SetupWABQueries+0x4dc>
                !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838df4:	008c8613          	addi	a2,s9,8
    e8838df8:	00069597          	auipc	a1,0x69
    e8838dfc:	6b058593          	addi	a1,a1,1712 # e88a24a8 <DiscardPort+0x498>
    e8838e00:	8532                	mv	a0,a2
    e8838e02:	e432                	sd	a2,8(sp)
    e8838e04:	a46da0ef          	jal	ra,e881304a <SameDomainName>
            if (!(action & UDNS_WAB_BROWSE_QUERY) && (ptr->flag & SLE_WAB_BROWSE_QUERY_STARTED) &&
    e8838e08:	ed1d                	bnez	a0,e8838e46 <uDNS_SetupWABQueries+0x4dc>
                !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838e0a:	0006a797          	auipc	a5,0x6a
    e8838e0e:	f5678793          	addi	a5,a5,-170 # e88a2d60 <mDNSInterface_Any>
    e8838e12:	110cb703          	ld	a4,272(s9)
    e8838e16:	639c                	ld	a5,0(a5)
    e8838e18:	6622                	ld	a2,8(sp)
    e8838e1a:	02f71663          	bne	a4,a5,e8838e46 <uDNS_SetupWABQueries+0x4dc>
                LogInfo("uDNS_SetupWABQueries: Deleting Browse for domain  %##s", ptr->domain.c);
    e8838e1e:	000d2783          	lw	a5,0(s10)
    e8838e22:	cb81                	beqz	a5,e8838e32 <uDNS_SetupWABQueries+0x4c8>
    e8838e24:	00077597          	auipc	a1,0x77
    e8838e28:	45458593          	addi	a1,a1,1108 # e88b0278 <__func__.9833+0x22e0>
    e8838e2c:	450d                	li	a0,3
    e8838e2e:	e7ef60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                ptr->flag &= ~SLE_WAB_BROWSE_QUERY_STARTED;
    e8838e32:	108ca783          	lw	a5,264(s9)
                uDNS_DeleteWABQueries(m, ptr, UDNS_WAB_BROWSE_QUERY);
    e8838e36:	4605                	li	a2,1
    e8838e38:	85e6                	mv	a1,s9
                ptr->flag &= ~SLE_WAB_BROWSE_QUERY_STARTED;
    e8838e3a:	9bf5                	andi	a5,a5,-3
    e8838e3c:	10fca423          	sw	a5,264(s9)
                uDNS_DeleteWABQueries(m, ptr, UDNS_WAB_BROWSE_QUERY);
    e8838e40:	8522                	mv	a0,s0
    e8838e42:	bc7f80ef          	jal	ra,e8831a08 <uDNS_DeleteWABQueries>
            if (!(action & UDNS_WAB_LBROWSE_QUERY) && (ptr->flag & SLE_WAB_LBROWSE_QUERY_STARTED) &&
    e8838e46:	04091f63          	bnez	s2,e8838ea4 <uDNS_SetupWABQueries+0x53a>
    e8838e4a:	108ca783          	lw	a5,264(s9)
    e8838e4e:	8b91                	andi	a5,a5,4
    e8838e50:	cbb1                	beqz	a5,e8838ea4 <uDNS_SetupWABQueries+0x53a>
                !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838e52:	008c8613          	addi	a2,s9,8
    e8838e56:	00069597          	auipc	a1,0x69
    e8838e5a:	65258593          	addi	a1,a1,1618 # e88a24a8 <DiscardPort+0x498>
    e8838e5e:	8532                	mv	a0,a2
    e8838e60:	e432                	sd	a2,8(sp)
    e8838e62:	9e8da0ef          	jal	ra,e881304a <SameDomainName>
            if (!(action & UDNS_WAB_LBROWSE_QUERY) && (ptr->flag & SLE_WAB_LBROWSE_QUERY_STARTED) &&
    e8838e66:	ed1d                	bnez	a0,e8838ea4 <uDNS_SetupWABQueries+0x53a>
                !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838e68:	0006a797          	auipc	a5,0x6a
    e8838e6c:	ef878793          	addi	a5,a5,-264 # e88a2d60 <mDNSInterface_Any>
    e8838e70:	110cb703          	ld	a4,272(s9)
    e8838e74:	639c                	ld	a5,0(a5)
    e8838e76:	6622                	ld	a2,8(sp)
    e8838e78:	02f71663          	bne	a4,a5,e8838ea4 <uDNS_SetupWABQueries+0x53a>
                LogInfo("uDNS_SetupWABQueries: Deleting Legacy Browse for domain  %##s", ptr->domain.c);
    e8838e7c:	000d2783          	lw	a5,0(s10)
    e8838e80:	cb81                	beqz	a5,e8838e90 <uDNS_SetupWABQueries+0x526>
    e8838e82:	00077597          	auipc	a1,0x77
    e8838e86:	42e58593          	addi	a1,a1,1070 # e88b02b0 <__func__.9833+0x2318>
    e8838e8a:	450d                	li	a0,3
    e8838e8c:	e20f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                ptr->flag &= ~SLE_WAB_LBROWSE_QUERY_STARTED;
    e8838e90:	108ca783          	lw	a5,264(s9)
                uDNS_DeleteWABQueries(m, ptr, UDNS_WAB_LBROWSE_QUERY);
    e8838e94:	4609                	li	a2,2
    e8838e96:	85e6                	mv	a1,s9
                ptr->flag &= ~SLE_WAB_LBROWSE_QUERY_STARTED;
    e8838e98:	9bed                	andi	a5,a5,-5
    e8838e9a:	10fca423          	sw	a5,264(s9)
                uDNS_DeleteWABQueries(m, ptr, UDNS_WAB_LBROWSE_QUERY);
    e8838e9e:	8522                	mv	a0,s0
    e8838ea0:	b69f80ef          	jal	ra,e8831a08 <uDNS_DeleteWABQueries>
            if (!(action & UDNS_WAB_REG_QUERY) && (ptr->flag & SLE_WAB_REG_QUERY_STARTED) &&
    e8838ea4:	c00992e3          	bnez	s3,e8838aa8 <uDNS_SetupWABQueries+0x13e>
    e8838ea8:	108ca783          	lw	a5,264(s9)
    e8838eac:	8ba1                	andi	a5,a5,8
    e8838eae:	be078de3          	beqz	a5,e8838aa8 <uDNS_SetupWABQueries+0x13e>
                !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838eb2:	008c8613          	addi	a2,s9,8
    e8838eb6:	00069597          	auipc	a1,0x69
    e8838eba:	5f258593          	addi	a1,a1,1522 # e88a24a8 <DiscardPort+0x498>
    e8838ebe:	8532                	mv	a0,a2
    e8838ec0:	e432                	sd	a2,8(sp)
    e8838ec2:	988da0ef          	jal	ra,e881304a <SameDomainName>
            if (!(action & UDNS_WAB_REG_QUERY) && (ptr->flag & SLE_WAB_REG_QUERY_STARTED) &&
    e8838ec6:	be0511e3          	bnez	a0,e8838aa8 <uDNS_SetupWABQueries+0x13e>
                !SameDomainName(&ptr->domain, &localdomain) && (ptr->InterfaceID == mDNSInterface_Any))
    e8838eca:	0006a797          	auipc	a5,0x6a
    e8838ece:	e9678793          	addi	a5,a5,-362 # e88a2d60 <mDNSInterface_Any>
    e8838ed2:	110cb703          	ld	a4,272(s9)
    e8838ed6:	639c                	ld	a5,0(a5)
    e8838ed8:	6622                	ld	a2,8(sp)
    e8838eda:	bcf717e3          	bne	a4,a5,e8838aa8 <uDNS_SetupWABQueries+0x13e>
                LogInfo("uDNS_SetupWABQueries: Deleting Registration for domain  %##s", ptr->domain.c);
    e8838ede:	000d2783          	lw	a5,0(s10)
    e8838ee2:	cb81                	beqz	a5,e8838ef2 <uDNS_SetupWABQueries+0x588>
    e8838ee4:	00077597          	auipc	a1,0x77
    e8838ee8:	40c58593          	addi	a1,a1,1036 # e88b02f0 <__func__.9833+0x2358>
    e8838eec:	450d                	li	a0,3
    e8838eee:	dbef60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
                ptr->flag &= ~SLE_WAB_REG_QUERY_STARTED;
    e8838ef2:	108ca783          	lw	a5,264(s9)
                uDNS_DeleteWABQueries(m, ptr, UDNS_WAB_REG_QUERY);
    e8838ef6:	4611                	li	a2,4
    e8838ef8:	85e6                	mv	a1,s9
                ptr->flag &= ~SLE_WAB_REG_QUERY_STARTED;
    e8838efa:	9bdd                	andi	a5,a5,-9
    e8838efc:	10fca423          	sw	a5,264(s9)
                uDNS_DeleteWABQueries(m, ptr, UDNS_WAB_REG_QUERY);
    e8838f00:	8522                	mv	a0,s0
    e8838f02:	b07f80ef          	jal	ra,e8831a08 <uDNS_DeleteWABQueries>
    e8838f06:	b64d                	j	e8838aa8 <uDNS_SetupWABQueries+0x13e>
                    LogInfo("uDNS_SetupWABQueries: Starting Browse for domain %##s", ptr->domain.c);
    e8838f08:	000d2783          	lw	a5,0(s10)
    e8838f0c:	be078fe3          	beqz	a5,e8838b0a <uDNS_SetupWABQueries+0x1a0>
    e8838f10:	8652                	mv	a2,s4
    e8838f12:	00077597          	auipc	a1,0x77
    e8838f16:	47e58593          	addi	a1,a1,1150 # e88b0390 <__func__.9833+0x23f8>
    e8838f1a:	450d                	li	a0,3
    e8838f1c:	d90f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8838f20:	b6ed                	j	e8838b0a <uDNS_SetupWABQueries+0x1a0>
                    LogInfo("uDNS_SetupWABQueries: Starting Default Browse for domain %##s", ptr->domain.c);
    e8838f22:	000d2783          	lw	a5,0(s10)
    e8838f26:	c0078de3          	beqz	a5,e8838b40 <uDNS_SetupWABQueries+0x1d6>
    e8838f2a:	8652                	mv	a2,s4
    e8838f2c:	00077597          	auipc	a1,0x77
    e8838f30:	50458593          	addi	a1,a1,1284 # e88b0430 <__func__.9833+0x2498>
    e8838f34:	450d                	li	a0,3
    e8838f36:	d76f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8838f3a:	b119                	j	e8838b40 <uDNS_SetupWABQueries+0x1d6>
                    ptr->flag |= SLE_WAB_LBROWSE_QUERY_STARTED;
    e8838f3c:	108ca783          	lw	a5,264(s9)
    e8838f40:	0047e793          	ori	a5,a5,4
    e8838f44:	10fca423          	sw	a5,264(s9)
                    LogInfo("uDNS_SetupWABQueries: Starting Legacy Browse for domain %##s", ptr->domain.c);
    e8838f48:	000d2783          	lw	a5,0(s10)
    e8838f4c:	c60780e3          	beqz	a5,e8838bac <uDNS_SetupWABQueries+0x242>
    e8838f50:	8652                	mv	a2,s4
    e8838f52:	00077597          	auipc	a1,0x77
    e8838f56:	58e58593          	addi	a1,a1,1422 # e88b04e0 <__func__.9833+0x2548>
    e8838f5a:	450d                	li	a0,3
    e8838f5c:	d50f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8838f60:	b1b1                	j	e8838bac <uDNS_SetupWABQueries+0x242>
                    LogInfo("uDNS_SetupWABQueries: Starting Registration for domain %##s", ptr->domain.c);
    e8838f62:	000d2783          	lw	a5,0(s10)
    e8838f66:	ca0784e3          	beqz	a5,e8838c0e <uDNS_SetupWABQueries+0x2a4>
    e8838f6a:	8652                	mv	a2,s4
    e8838f6c:	00077597          	auipc	a1,0x77
    e8838f70:	61c58593          	addi	a1,a1,1564 # e88b0588 <__func__.9833+0x25f0>
    e8838f74:	450d                	li	a0,3
    e8838f76:	d36f60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8838f7a:	b951                	j	e8838c0e <uDNS_SetupWABQueries+0x2a4>
                    LogInfo("uDNS_SetupWABQueries: Starting Default Registration for domain %##s", ptr->domain.c);
    e8838f7c:	000d2783          	lw	a5,0(s10)
    e8838f80:	cc0783e3          	beqz	a5,e8838c46 <uDNS_SetupWABQueries+0x2dc>
    e8838f84:	8652                	mv	a2,s4
    e8838f86:	00077597          	auipc	a1,0x77
    e8838f8a:	6b258593          	addi	a1,a1,1714 # e88b0638 <__func__.9833+0x26a0>
    e8838f8e:	450d                	li	a0,3
    e8838f90:	d1cf60ef          	jal	ra,e882f4ac <LogMsgWithLevel>
    e8838f94:	b94d                	j	e8838c46 <uDNS_SetupWABQueries+0x2dc>

00000000e8838f96 <aes_ecb_encrypt>:
    return EXIT_SUCCESS;
}

AES_RETURN aes_ecb_encrypt(const unsigned char *ibuf, unsigned char *obuf,
                    int len, const aes_encrypt_ctx ctx[1])
{   int nb = len >> 4;
    e8838f96:	7139                	addi	sp,sp,-64
    e8838f98:	f026                	sd	s1,32(sp)
    e8838f9a:	fc06                	sd	ra,56(sp)
    e8838f9c:	ec22                	sd	s0,24(sp)
    e8838f9e:	f44a                	sd	s2,40(sp)
    e8838fa0:	f84e                	sd	s3,48(sp)

    if(len & (AES_BLOCK_SIZE - 1))
    e8838fa2:	00f67493          	andi	s1,a2,15
    e8838fa6:	c49d                	beqz	s1,e8838fd4 <aes_ecb_encrypt+0x3e>
        return EXIT_FAILURE;
    e8838fa8:	4485                	li	s1,1
        ibuf += AES_BLOCK_SIZE;
        obuf += AES_BLOCK_SIZE;
    }
#endif
    return EXIT_SUCCESS;
}
    e8838faa:	70e2                	ld	ra,56(sp)
    e8838fac:	6462                	ld	s0,24(sp)
    e8838fae:	8526                	mv	a0,s1
    e8838fb0:	7922                	ld	s2,40(sp)
    e8838fb2:	7482                	ld	s1,32(sp)
    e8838fb4:	79c2                	ld	s3,48(sp)
    e8838fb6:	6121                	addi	sp,sp,64
    e8838fb8:	8082                	ret
        if(aes_encrypt(ibuf, obuf, ctx) != EXIT_SUCCESS)
    e8838fba:	8636                	mv	a2,a3
    e8838fbc:	85ce                	mv	a1,s3
    e8838fbe:	854a                	mv	a0,s2
    e8838fc0:	e436                	sd	a3,8(sp)
    e8838fc2:	348000ef          	jal	ra,e883930a <gladman_aes_encrypt>
    e8838fc6:	347d                	addiw	s0,s0,-1
    e8838fc8:	f165                	bnez	a0,e8838fa8 <aes_ecb_encrypt+0x12>
        obuf += AES_BLOCK_SIZE;
    e8838fca:	66a2                	ld	a3,8(sp)
        ibuf += AES_BLOCK_SIZE;
    e8838fcc:	0941                	addi	s2,s2,16
        obuf += AES_BLOCK_SIZE;
    e8838fce:	09c1                	addi	s3,s3,16
    while(nb--)
    e8838fd0:	f46d                	bnez	s0,e8838fba <aes_ecb_encrypt+0x24>
    e8838fd2:	bfe1                	j	e8838faa <aes_ecb_encrypt+0x14>
    e8838fd4:	892a                	mv	s2,a0
    e8838fd6:	89ae                	mv	s3,a1
    e8838fd8:	40465413          	srai	s0,a2,0x4
    e8838fdc:	bfd5                	j	e8838fd0 <aes_ecb_encrypt+0x3a>

00000000e8838fde <aes_cbc_encrypt>:
    return EXIT_SUCCESS;
}

AES_RETURN aes_cbc_encrypt(const unsigned char *ibuf, unsigned char *obuf,
                    int len, unsigned char *iv, const aes_encrypt_ctx ctx[1])
{   int nb = len >> 4;
    e8838fde:	7139                	addi	sp,sp,-64
    e8838fe0:	f452                	sd	s4,40(sp)
    e8838fe2:	fc06                	sd	ra,56(sp)
    e8838fe4:	e422                	sd	s0,8(sp)
    e8838fe6:	e826                	sd	s1,16(sp)
    e8838fe8:	ec4a                	sd	s2,24(sp)
    e8838fea:	f04e                	sd	s3,32(sp)
    e8838fec:	f856                	sd	s5,48(sp)

    if(len & (AES_BLOCK_SIZE - 1))
    e8838fee:	00f67a13          	andi	s4,a2,15
    e8838ff2:	000a0d63          	beqz	s4,e883900c <aes_cbc_encrypt+0x2e>
        return EXIT_FAILURE;
    e8838ff6:	4a05                	li	s4,1
            ibuf += AES_BLOCK_SIZE;
            obuf += AES_BLOCK_SIZE;
        }
#endif
    return EXIT_SUCCESS;
}
    e8838ff8:	70e2                	ld	ra,56(sp)
    e8838ffa:	6422                	ld	s0,8(sp)
    e8838ffc:	8552                	mv	a0,s4
    e8838ffe:	64c2                	ld	s1,16(sp)
    e8839000:	6962                	ld	s2,24(sp)
    e8839002:	7982                	ld	s3,32(sp)
    e8839004:	7a22                	ld	s4,40(sp)
    e8839006:	7ac2                	ld	s5,48(sp)
    e8839008:	6121                	addi	sp,sp,64
    e883900a:	8082                	ret
    if(!ALIGN_OFFSET( ibuf, 4 ) && !ALIGN_OFFSET( iv, 4 ))
    e883900c:	00a6e7b3          	or	a5,a3,a0
    e8839010:	8b8d                	andi	a5,a5,3
    e8839012:	84aa                	mv	s1,a0
    e8839014:	89ae                	mv	s3,a1
    e8839016:	8436                	mv	s0,a3
    e8839018:	8aba                	mv	s5,a4
    e883901a:	40465913          	srai	s2,a2,0x4
    e883901e:	14079263          	bnez	a5,e8839162 <aes_cbc_encrypt+0x184>
        while(nb--)
    e8839022:	fc090be3          	beqz	s2,e8838ff8 <aes_cbc_encrypt+0x1a>
            lp32(iv)[0] ^= lp32(ibuf)[0];
    e8839026:	4098                	lw	a4,0(s1)
    e8839028:	401c                	lw	a5,0(s0)
            if(aes_encrypt(iv, iv, ctx) != EXIT_SUCCESS)
    e883902a:	8656                	mv	a2,s5
    e883902c:	85a2                	mv	a1,s0
            lp32(iv)[0] ^= lp32(ibuf)[0];
    e883902e:	8fb9                	xor	a5,a5,a4
    e8839030:	c01c                	sw	a5,0(s0)
            lp32(iv)[1] ^= lp32(ibuf)[1];
    e8839032:	405c                	lw	a5,4(s0)
    e8839034:	40d8                	lw	a4,4(s1)
            if(aes_encrypt(iv, iv, ctx) != EXIT_SUCCESS)
    e8839036:	8522                	mv	a0,s0
    e8839038:	397d                	addiw	s2,s2,-1
            lp32(iv)[1] ^= lp32(ibuf)[1];
    e883903a:	8fb9                	xor	a5,a5,a4
    e883903c:	c05c                	sw	a5,4(s0)
            lp32(iv)[2] ^= lp32(ibuf)[2];
    e883903e:	441c                	lw	a5,8(s0)
    e8839040:	4498                	lw	a4,8(s1)
    e8839042:	8fb9                	xor	a5,a5,a4
    e8839044:	c41c                	sw	a5,8(s0)
            lp32(iv)[3] ^= lp32(ibuf)[3];
    e8839046:	445c                	lw	a5,12(s0)
    e8839048:	44d8                	lw	a4,12(s1)
    e883904a:	8fb9                	xor	a5,a5,a4
    e883904c:	c45c                	sw	a5,12(s0)
            if(aes_encrypt(iv, iv, ctx) != EXIT_SUCCESS)
    e883904e:	2bc000ef          	jal	ra,e883930a <gladman_aes_encrypt>
    e8839052:	f155                	bnez	a0,e8838ff6 <aes_cbc_encrypt+0x18>
            memcpy(obuf, iv, AES_BLOCK_SIZE);
    e8839054:	854e                	mv	a0,s3
    e8839056:	4641                	li	a2,16
    e8839058:	85a2                	mv	a1,s0
    e883905a:	346430ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            ibuf += AES_BLOCK_SIZE;
    e883905e:	04c1                	addi	s1,s1,16
            obuf += AES_BLOCK_SIZE;
    e8839060:	09c1                	addi	s3,s3,16
    e8839062:	b7c1                	j	e8839022 <aes_cbc_encrypt+0x44>
            iv[ 0] ^= ibuf[ 0]; iv[ 1] ^= ibuf[ 1];
    e8839064:	0004c703          	lbu	a4,0(s1)
    e8839068:	00044783          	lbu	a5,0(s0)
            if(aes_encrypt(iv, iv, ctx) != EXIT_SUCCESS)
    e883906c:	8656                	mv	a2,s5
    e883906e:	85a2                	mv	a1,s0
            iv[ 0] ^= ibuf[ 0]; iv[ 1] ^= ibuf[ 1];
    e8839070:	8fb9                	xor	a5,a5,a4
    e8839072:	00f40023          	sb	a5,0(s0)
    e8839076:	00144783          	lbu	a5,1(s0)
    e883907a:	0014c703          	lbu	a4,1(s1)
            if(aes_encrypt(iv, iv, ctx) != EXIT_SUCCESS)
    e883907e:	8522                	mv	a0,s0
    e8839080:	397d                	addiw	s2,s2,-1
            iv[ 0] ^= ibuf[ 0]; iv[ 1] ^= ibuf[ 1];
    e8839082:	8fb9                	xor	a5,a5,a4
    e8839084:	00f400a3          	sb	a5,1(s0)
            iv[ 2] ^= ibuf[ 2]; iv[ 3] ^= ibuf[ 3];
    e8839088:	00244783          	lbu	a5,2(s0)
    e883908c:	0024c703          	lbu	a4,2(s1)
    e8839090:	8fb9                	xor	a5,a5,a4
    e8839092:	00f40123          	sb	a5,2(s0)
    e8839096:	00344783          	lbu	a5,3(s0)
    e883909a:	0034c703          	lbu	a4,3(s1)
    e883909e:	8fb9                	xor	a5,a5,a4
    e88390a0:	00f401a3          	sb	a5,3(s0)
            iv[ 4] ^= ibuf[ 4]; iv[ 5] ^= ibuf[ 5];
    e88390a4:	00444783          	lbu	a5,4(s0)
    e88390a8:	0044c703          	lbu	a4,4(s1)
    e88390ac:	8fb9                	xor	a5,a5,a4
    e88390ae:	00f40223          	sb	a5,4(s0)
    e88390b2:	00544783          	lbu	a5,5(s0)
    e88390b6:	0054c703          	lbu	a4,5(s1)
    e88390ba:	8fb9                	xor	a5,a5,a4
    e88390bc:	00f402a3          	sb	a5,5(s0)
            iv[ 6] ^= ibuf[ 6]; iv[ 7] ^= ibuf[ 7];
    e88390c0:	00644783          	lbu	a5,6(s0)
    e88390c4:	0064c703          	lbu	a4,6(s1)
    e88390c8:	8fb9                	xor	a5,a5,a4
    e88390ca:	00f40323          	sb	a5,6(s0)
    e88390ce:	00744783          	lbu	a5,7(s0)
    e88390d2:	0074c703          	lbu	a4,7(s1)
    e88390d6:	8fb9                	xor	a5,a5,a4
    e88390d8:	00f403a3          	sb	a5,7(s0)
            iv[ 8] ^= ibuf[ 8]; iv[ 9] ^= ibuf[ 9];
    e88390dc:	00844783          	lbu	a5,8(s0)
    e88390e0:	0084c703          	lbu	a4,8(s1)
    e88390e4:	8fb9                	xor	a5,a5,a4
    e88390e6:	00f40423          	sb	a5,8(s0)
    e88390ea:	00944783          	lbu	a5,9(s0)
    e88390ee:	0094c703          	lbu	a4,9(s1)
    e88390f2:	8fb9                	xor	a5,a5,a4
    e88390f4:	00f404a3          	sb	a5,9(s0)
            iv[10] ^= ibuf[10]; iv[11] ^= ibuf[11];
    e88390f8:	00a44783          	lbu	a5,10(s0)
    e88390fc:	00a4c703          	lbu	a4,10(s1)
    e8839100:	8fb9                	xor	a5,a5,a4
    e8839102:	00f40523          	sb	a5,10(s0)
    e8839106:	00b4c703          	lbu	a4,11(s1)
    e883910a:	00b44783          	lbu	a5,11(s0)
    e883910e:	8fb9                	xor	a5,a5,a4
    e8839110:	00f405a3          	sb	a5,11(s0)
            iv[12] ^= ibuf[12]; iv[13] ^= ibuf[13];
    e8839114:	00c44783          	lbu	a5,12(s0)
    e8839118:	00c4c703          	lbu	a4,12(s1)
    e883911c:	8fb9                	xor	a5,a5,a4
    e883911e:	00f40623          	sb	a5,12(s0)
    e8839122:	00d44783          	lbu	a5,13(s0)
    e8839126:	00d4c703          	lbu	a4,13(s1)
    e883912a:	8fb9                	xor	a5,a5,a4
    e883912c:	00f406a3          	sb	a5,13(s0)
            iv[14] ^= ibuf[14]; iv[15] ^= ibuf[15];
    e8839130:	00e44783          	lbu	a5,14(s0)
    e8839134:	00e4c703          	lbu	a4,14(s1)
    e8839138:	8fb9                	xor	a5,a5,a4
    e883913a:	00f40723          	sb	a5,14(s0)
    e883913e:	00f44783          	lbu	a5,15(s0)
    e8839142:	00f4c703          	lbu	a4,15(s1)
    e8839146:	8fb9                	xor	a5,a5,a4
    e8839148:	00f407a3          	sb	a5,15(s0)
            if(aes_encrypt(iv, iv, ctx) != EXIT_SUCCESS)
    e883914c:	1be000ef          	jal	ra,e883930a <gladman_aes_encrypt>
    e8839150:	ea0513e3          	bnez	a0,e8838ff6 <aes_cbc_encrypt+0x18>
            memcpy(obuf, iv, AES_BLOCK_SIZE);
    e8839154:	854e                	mv	a0,s3
    e8839156:	4641                	li	a2,16
    e8839158:	85a2                	mv	a1,s0
    e883915a:	246430ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            ibuf += AES_BLOCK_SIZE;
    e883915e:	04c1                	addi	s1,s1,16
            obuf += AES_BLOCK_SIZE;
    e8839160:	09c1                	addi	s3,s3,16
        while(nb--)
    e8839162:	f00911e3          	bnez	s2,e8839064 <aes_cbc_encrypt+0x86>
    e8839166:	bd49                	j	e8838ff8 <aes_cbc_encrypt+0x1a>

00000000e8839168 <aes_cbc_decrypt>:

AES_RETURN aes_cbc_decrypt(const unsigned char *ibuf, unsigned char *obuf,
                    int len, unsigned char *iv, const aes_decrypt_ctx ctx[1])
{   unsigned char tmp[AES_BLOCK_SIZE];
    e8839168:	715d                	addi	sp,sp,-80
    e883916a:	f052                	sd	s4,32(sp)
    e883916c:	e486                	sd	ra,72(sp)
    e883916e:	e0a2                	sd	s0,64(sp)
    e8839170:	fc26                	sd	s1,56(sp)
    e8839172:	f84a                	sd	s2,48(sp)
    e8839174:	f44e                	sd	s3,40(sp)
    e8839176:	ec56                	sd	s5,24(sp)
    int nb = len >> 4;

    if(len & (AES_BLOCK_SIZE - 1))
    e8839178:	00f67a13          	andi	s4,a2,15
    e883917c:	000a0d63          	beqz	s4,e8839196 <aes_cbc_decrypt+0x2e>
        return EXIT_FAILURE;
    e8839180:	4a05                	li	s4,1
            ibuf += AES_BLOCK_SIZE;
            obuf += AES_BLOCK_SIZE;
        }
#endif
    return EXIT_SUCCESS;
}
    e8839182:	60a6                	ld	ra,72(sp)
    e8839184:	6406                	ld	s0,64(sp)
    e8839186:	8552                	mv	a0,s4
    e8839188:	74e2                	ld	s1,56(sp)
    e883918a:	7942                	ld	s2,48(sp)
    e883918c:	79a2                	ld	s3,40(sp)
    e883918e:	7a02                	ld	s4,32(sp)
    e8839190:	6ae2                	ld	s5,24(sp)
    e8839192:	6161                	addi	sp,sp,80
    e8839194:	8082                	ret
    if(!ALIGN_OFFSET( obuf, 4 ) && !ALIGN_OFFSET( iv, 4 ))
    e8839196:	00b6e7b3          	or	a5,a3,a1
    e883919a:	8b8d                	andi	a5,a5,3
    e883919c:	89aa                	mv	s3,a0
    e883919e:	842e                	mv	s0,a1
    e88391a0:	84b6                	mv	s1,a3
    e88391a2:	8aba                	mv	s5,a4
    e88391a4:	40465913          	srai	s2,a2,0x4
    e88391a8:	14079e63          	bnez	a5,e8839304 <aes_cbc_decrypt+0x19c>
        while(nb--)
    e88391ac:	fc090be3          	beqz	s2,e8839182 <aes_cbc_decrypt+0x1a>
            memcpy(tmp, ibuf, AES_BLOCK_SIZE);
    e88391b0:	4641                	li	a2,16
    e88391b2:	85ce                	mv	a1,s3
    e88391b4:	850a                	mv	a0,sp
    e88391b6:	1ea430ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            if(aes_decrypt(ibuf, obuf, ctx) != EXIT_SUCCESS)
    e88391ba:	397d                	addiw	s2,s2,-1
    e88391bc:	8656                	mv	a2,s5
    e88391be:	85a2                	mv	a1,s0
    e88391c0:	854e                	mv	a0,s3
    e88391c2:	7f7000ef          	jal	ra,e883a1b8 <gladman_aes_decrypt>
    e88391c6:	fd4d                	bnez	a0,e8839180 <aes_cbc_decrypt+0x18>
            lp32(obuf)[0] ^= lp32(iv)[0];
    e88391c8:	4098                	lw	a4,0(s1)
    e88391ca:	401c                	lw	a5,0(s0)
            memcpy(iv, tmp, AES_BLOCK_SIZE);
    e88391cc:	4641                	li	a2,16
    e88391ce:	858a                	mv	a1,sp
            lp32(obuf)[0] ^= lp32(iv)[0];
    e88391d0:	8fb9                	xor	a5,a5,a4
    e88391d2:	c01c                	sw	a5,0(s0)
            lp32(obuf)[1] ^= lp32(iv)[1];
    e88391d4:	405c                	lw	a5,4(s0)
    e88391d6:	40d8                	lw	a4,4(s1)
            memcpy(iv, tmp, AES_BLOCK_SIZE);
    e88391d8:	8526                	mv	a0,s1
            ibuf += AES_BLOCK_SIZE;
    e88391da:	09c1                	addi	s3,s3,16
            lp32(obuf)[1] ^= lp32(iv)[1];
    e88391dc:	8fb9                	xor	a5,a5,a4
    e88391de:	c05c                	sw	a5,4(s0)
            lp32(obuf)[2] ^= lp32(iv)[2];
    e88391e0:	441c                	lw	a5,8(s0)
    e88391e2:	4498                	lw	a4,8(s1)
            obuf += AES_BLOCK_SIZE;
    e88391e4:	0441                	addi	s0,s0,16
            lp32(obuf)[2] ^= lp32(iv)[2];
    e88391e6:	8fb9                	xor	a5,a5,a4
    e88391e8:	fef42c23          	sw	a5,-8(s0)
            lp32(obuf)[3] ^= lp32(iv)[3];
    e88391ec:	ffc42783          	lw	a5,-4(s0)
    e88391f0:	44d8                	lw	a4,12(s1)
    e88391f2:	8fb9                	xor	a5,a5,a4
    e88391f4:	fef42e23          	sw	a5,-4(s0)
            memcpy(iv, tmp, AES_BLOCK_SIZE);
    e88391f8:	1a8430ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            obuf += AES_BLOCK_SIZE;
    e88391fc:	bf45                	j	e88391ac <aes_cbc_decrypt+0x44>
            memcpy(tmp, ibuf, AES_BLOCK_SIZE);
    e88391fe:	4641                	li	a2,16
    e8839200:	85ce                	mv	a1,s3
    e8839202:	850a                	mv	a0,sp
    e8839204:	19c430ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            if(aes_decrypt(ibuf, obuf, ctx) != EXIT_SUCCESS)
    e8839208:	397d                	addiw	s2,s2,-1
    e883920a:	8656                	mv	a2,s5
    e883920c:	85a2                	mv	a1,s0
    e883920e:	854e                	mv	a0,s3
    e8839210:	7a9000ef          	jal	ra,e883a1b8 <gladman_aes_decrypt>
    e8839214:	f535                	bnez	a0,e8839180 <aes_cbc_decrypt+0x18>
            obuf[ 0] ^= iv[ 0]; obuf[ 1] ^= iv[ 1];
    e8839216:	0004c703          	lbu	a4,0(s1)
    e883921a:	00044783          	lbu	a5,0(s0)
            memcpy(iv, tmp, AES_BLOCK_SIZE);
    e883921e:	4641                	li	a2,16
    e8839220:	858a                	mv	a1,sp
            obuf[ 0] ^= iv[ 0]; obuf[ 1] ^= iv[ 1];
    e8839222:	8fb9                	xor	a5,a5,a4
    e8839224:	00f40023          	sb	a5,0(s0)
    e8839228:	00144783          	lbu	a5,1(s0)
    e883922c:	0014c703          	lbu	a4,1(s1)
            memcpy(iv, tmp, AES_BLOCK_SIZE);
    e8839230:	8526                	mv	a0,s1
            ibuf += AES_BLOCK_SIZE;
    e8839232:	09c1                	addi	s3,s3,16
            obuf[ 0] ^= iv[ 0]; obuf[ 1] ^= iv[ 1];
    e8839234:	8fb9                	xor	a5,a5,a4
    e8839236:	00f400a3          	sb	a5,1(s0)
            obuf[ 2] ^= iv[ 2]; obuf[ 3] ^= iv[ 3];
    e883923a:	00244783          	lbu	a5,2(s0)
    e883923e:	0024c703          	lbu	a4,2(s1)
            obuf += AES_BLOCK_SIZE;
    e8839242:	0441                	addi	s0,s0,16
            obuf[ 2] ^= iv[ 2]; obuf[ 3] ^= iv[ 3];
    e8839244:	8fb9                	xor	a5,a5,a4
    e8839246:	fef40923          	sb	a5,-14(s0)
    e883924a:	ff344783          	lbu	a5,-13(s0)
    e883924e:	0034c703          	lbu	a4,3(s1)
    e8839252:	8fb9                	xor	a5,a5,a4
    e8839254:	fef409a3          	sb	a5,-13(s0)
            obuf[ 4] ^= iv[ 4]; obuf[ 5] ^= iv[ 5];
    e8839258:	ff444783          	lbu	a5,-12(s0)
    e883925c:	0044c703          	lbu	a4,4(s1)
    e8839260:	8fb9                	xor	a5,a5,a4
    e8839262:	fef40a23          	sb	a5,-12(s0)
    e8839266:	ff544783          	lbu	a5,-11(s0)
    e883926a:	0054c703          	lbu	a4,5(s1)
    e883926e:	8fb9                	xor	a5,a5,a4
    e8839270:	fef40aa3          	sb	a5,-11(s0)
            obuf[ 6] ^= iv[ 6]; obuf[ 7] ^= iv[ 7];
    e8839274:	ff644783          	lbu	a5,-10(s0)
    e8839278:	0064c703          	lbu	a4,6(s1)
    e883927c:	8fb9                	xor	a5,a5,a4
    e883927e:	fef40b23          	sb	a5,-10(s0)
    e8839282:	ff744783          	lbu	a5,-9(s0)
    e8839286:	0074c703          	lbu	a4,7(s1)
    e883928a:	8fb9                	xor	a5,a5,a4
    e883928c:	fef40ba3          	sb	a5,-9(s0)
            obuf[ 8] ^= iv[ 8]; obuf[ 9] ^= iv[ 9];
    e8839290:	ff844783          	lbu	a5,-8(s0)
    e8839294:	0084c703          	lbu	a4,8(s1)
    e8839298:	8fb9                	xor	a5,a5,a4
    e883929a:	fef40c23          	sb	a5,-8(s0)
    e883929e:	ff944783          	lbu	a5,-7(s0)
    e88392a2:	0094c703          	lbu	a4,9(s1)
    e88392a6:	8fb9                	xor	a5,a5,a4
    e88392a8:	fef40ca3          	sb	a5,-7(s0)
            obuf[10] ^= iv[10]; obuf[11] ^= iv[11];
    e88392ac:	ffa44783          	lbu	a5,-6(s0)
    e88392b0:	00a4c703          	lbu	a4,10(s1)
    e88392b4:	8fb9                	xor	a5,a5,a4
    e88392b6:	fef40d23          	sb	a5,-6(s0)
    e88392ba:	00b4c703          	lbu	a4,11(s1)
    e88392be:	ffb44783          	lbu	a5,-5(s0)
    e88392c2:	8fb9                	xor	a5,a5,a4
    e88392c4:	fef40da3          	sb	a5,-5(s0)
            obuf[12] ^= iv[12]; obuf[13] ^= iv[13];
    e88392c8:	ffc44783          	lbu	a5,-4(s0)
    e88392cc:	00c4c703          	lbu	a4,12(s1)
    e88392d0:	8fb9                	xor	a5,a5,a4
    e88392d2:	fef40e23          	sb	a5,-4(s0)
    e88392d6:	ffd44783          	lbu	a5,-3(s0)
    e88392da:	00d4c703          	lbu	a4,13(s1)
    e88392de:	8fb9                	xor	a5,a5,a4
    e88392e0:	fef40ea3          	sb	a5,-3(s0)
            obuf[14] ^= iv[14]; obuf[15] ^= iv[15];
    e88392e4:	ffe44783          	lbu	a5,-2(s0)
    e88392e8:	00e4c703          	lbu	a4,14(s1)
    e88392ec:	8fb9                	xor	a5,a5,a4
    e88392ee:	fef40f23          	sb	a5,-2(s0)
    e88392f2:	fff44783          	lbu	a5,-1(s0)
    e88392f6:	00f4c703          	lbu	a4,15(s1)
    e88392fa:	8fb9                	xor	a5,a5,a4
    e88392fc:	fef40fa3          	sb	a5,-1(s0)
            memcpy(iv, tmp, AES_BLOCK_SIZE);
    e8839300:	0a0430ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        while(nb--)
    e8839304:	ee091de3          	bnez	s2,e88391fe <aes_cbc_decrypt+0x96>
    e8839308:	bdad                	j	e8839182 <aes_cbc_decrypt+0x1a>

00000000e883930a <gladman_aes_encrypt>:
    const uint_32t   *kp;
#if defined( dec_fmvars )
    dec_fmvars; /* declare variables for fwd_mcol() if needed */
#endif

    if( cx->inf.b[0] != 10 * 16 && cx->inf.b[0] != 12 * 16 && cx->inf.b[0] != 14 * 16 )
    e883930a:	0f064783          	lbu	a5,240(a2)
    e883930e:	0a000713          	li	a4,160
    e8839312:	0bf7f693          	andi	a3,a5,191
    e8839316:	00e68763          	beq	a3,a4,e8839324 <gladman_aes_encrypt+0x1a>
    e883931a:	0c000693          	li	a3,192
        return EXIT_FAILURE;
    e883931e:	4705                	li	a4,1
    if( cx->inf.b[0] != 10 * 16 && cx->inf.b[0] != 12 * 16 && cx->inf.b[0] != 14 * 16 )
    e8839320:	28d792e3          	bne	a5,a3,e8839da4 <gladman_aes_encrypt+0xa9a>

    kp = cx->ks;
    state_in(b0, in, kp);
    e8839324:	00052803          	lw	a6,0(a0)
    e8839328:	4154                	lw	a3,4(a0)
    e883932a:	00862883          	lw	a7,8(a2)
    e883932e:	9008170b          	revw	a4,a6
    e8839332:	00062803          	lw	a6,0(a2)
    e8839336:	00e84833          	xor	a6,a6,a4
    e883933a:	9006970b          	revw	a4,a3
    e883933e:	4254                	lw	a3,4(a2)
    e8839340:	8eb9                	xor	a3,a3,a4
    e8839342:	4518                	lw	a4,8(a0)
    e8839344:	4548                	lw	a0,12(a0)
    e8839346:	9007170b          	revw	a4,a4
    e883934a:	00e8c733          	xor	a4,a7,a4
    e883934e:	00c62883          	lw	a7,12(a2)
    e8839352:	9005150b          	revw	a0,a0
    e8839356:	00a8c533          	xor	a0,a7,a0

#if (ENC_UNROLL == FULL)

    switch(cx->inf.b[0])
    e883935a:	0c000893          	li	a7,192
    e883935e:	451788e3          	beq	a5,a7,e8839fae <gladman_aes_encrypt+0xca4>
    e8839362:	0e000893          	li	a7,224
    e8839366:	251781e3          	beq	a5,a7,e8839da8 <gladman_aes_encrypt+0xa9e>
    e883936a:	0a000893          	li	a7,160
    e883936e:	21179de3          	bne	a5,a7,e8839d88 <gladman_aes_encrypt+0xa7e>
    case 12 * 16:
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
        kp += 2 * N_COLS;
    case 10 * 16:
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e8839372:	0ff57893          	andi	a7,a0,255
    e8839376:	00079797          	auipc	a5,0x79
    e883937a:	a1a78793          	addi	a5,a5,-1510 # e88b1d90 <t_fn>
    e883937e:	0188531b          	srliw	t1,a6,0x18
    e8839382:	30088893          	addi	a7,a7,768
    e8839386:	4517c88b          	lrw	a7,a5,a7,2
    e883938a:	5467c30b          	lurw	t1,a5,t1,2
    e883938e:	0ff87e13          	andi	t3,a6,255
    e8839392:	300e0e13          	addi	t3,t3,768
    e8839396:	01134333          	xor	t1,t1,a7
    e883939a:	01062883          	lw	a7,16(a2)
    e883939e:	45c7ce0b          	lrw	t3,a5,t3,2
    e88393a2:	01875e9b          	srliw	t4,a4,0x18
    e88393a6:	01134333          	xor	t1,t1,a7
    e88393aa:	5d06b88b          	extu	a7,a3,23,16
    e88393ae:	10088893          	addi	a7,a7,256
    e88393b2:	4517c88b          	lrw	a7,a5,a7,2
    e88393b6:	55d7ce8b          	lurw	t4,a5,t4,2
    e88393ba:	01134333          	xor	t1,t1,a7
    e88393be:	3c87388b          	extu	a7,a4,15,8
    e88393c2:	20088893          	addi	a7,a7,512
    e88393c6:	4517c88b          	lrw	a7,a5,a7,2
    e88393ca:	01134333          	xor	t1,t1,a7
    e88393ce:	0186d89b          	srliw	a7,a3,0x18
    e88393d2:	5517c88b          	lurw	a7,a5,a7,2
    e88393d6:	2301                	sext.w	t1,t1
    e88393d8:	01c8c8b3          	xor	a7,a7,t3
    e88393dc:	01462e03          	lw	t3,20(a2)
    e88393e0:	01c8c8b3          	xor	a7,a7,t3
    e88393e4:	5d073e0b          	extu	t3,a4,23,16
    e88393e8:	100e0e13          	addi	t3,t3,256
    e88393ec:	45c7ce0b          	lrw	t3,a5,t3,2
    e88393f0:	0ff77713          	andi	a4,a4,255
    e88393f4:	01c8c8b3          	xor	a7,a7,t3
    e88393f8:	3c853e0b          	extu	t3,a0,15,8
    e88393fc:	200e0e13          	addi	t3,t3,512
    e8839400:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839404:	01c8c8b3          	xor	a7,a7,t3
    e8839408:	0ff6fe13          	andi	t3,a3,255
    e883940c:	300e0e13          	addi	t3,t3,768
    e8839410:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839414:	3c86b68b          	extu	a3,a3,15,8
    e8839418:	20068693          	addi	a3,a3,512
    e883941c:	01ceceb3          	xor	t4,t4,t3
    e8839420:	01862e03          	lw	t3,24(a2)
    e8839424:	44d7c68b          	lrw	a3,a5,a3,2
    e8839428:	2881                	sext.w	a7,a7
    e883942a:	01ceceb3          	xor	t4,t4,t3
    e883942e:	5d053e0b          	extu	t3,a0,23,16
    e8839432:	100e0e13          	addi	t3,t3,256
    e8839436:	45c7ce0b          	lrw	t3,a5,t3,2
    e883943a:	0185551b          	srliw	a0,a0,0x18
    e883943e:	01ceceb3          	xor	t4,t4,t3
    e8839442:	3c883e0b          	extu	t3,a6,15,8
    e8839446:	200e0e13          	addi	t3,t3,512
    e883944a:	45c7ce0b          	lrw	t3,a5,t3,2
    e883944e:	5d08380b          	extu	a6,a6,23,16
    e8839452:	10080813          	addi	a6,a6,256
    e8839456:	01ceceb3          	xor	t4,t4,t3
    e883945a:	30070e13          	addi	t3,a4,768
    e883945e:	54a7c70b          	lurw	a4,a5,a0,2
    e8839462:	45c7c50b          	lrw	a0,a5,t3,2
    e8839466:	2e81                	sext.w	t4,t4
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839468:	018ede1b          	srliw	t3,t4,0x18
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e883946c:	8f29                	xor	a4,a4,a0
    e883946e:	4e48                	lw	a0,28(a2)
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839470:	55c7ce0b          	lurw	t3,a5,t3,2
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e8839474:	8f29                	xor	a4,a4,a0
    e8839476:	4507c50b          	lrw	a0,a5,a6,2
    e883947a:	8f29                	xor	a4,a4,a0
    e883947c:	8f35                	xor	a4,a4,a3
    e883947e:	2701                	sext.w	a4,a4
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839480:	0ff77693          	andi	a3,a4,255
    e8839484:	0183551b          	srliw	a0,t1,0x18
    e8839488:	30068693          	addi	a3,a3,768
    e883948c:	54a7c80b          	lurw	a6,a5,a0,2
    e8839490:	44d7c68b          	lrw	a3,a5,a3,2
    e8839494:	0ff37513          	andi	a0,t1,255
    e8839498:	30050513          	addi	a0,a0,768
    e883949c:	00d84833          	xor	a6,a6,a3
    e88394a0:	5214                	lw	a3,32(a2)
    e88394a2:	44a7c50b          	lrw	a0,a5,a0,2
    e88394a6:	00d84833          	xor	a6,a6,a3
    e88394aa:	5d08b68b          	extu	a3,a7,23,16
    e88394ae:	10068693          	addi	a3,a3,256
    e88394b2:	44d7c68b          	lrw	a3,a5,a3,2
    e88394b6:	00d84833          	xor	a6,a6,a3
    e88394ba:	3c8eb68b          	extu	a3,t4,15,8
    e88394be:	20068693          	addi	a3,a3,512
    e88394c2:	44d7c68b          	lrw	a3,a5,a3,2
    e88394c6:	00d84833          	xor	a6,a6,a3
    e88394ca:	0188d69b          	srliw	a3,a7,0x18
    e88394ce:	54d7c68b          	lurw	a3,a5,a3,2
    e88394d2:	2801                	sext.w	a6,a6
    e88394d4:	8ea9                	xor	a3,a3,a0
    e88394d6:	5248                	lw	a0,36(a2)
    e88394d8:	8ea9                	xor	a3,a3,a0
    e88394da:	5d0eb50b          	extu	a0,t4,23,16
    e88394de:	10050513          	addi	a0,a0,256
    e88394e2:	44a7c50b          	lrw	a0,a5,a0,2
    e88394e6:	0ffefe93          	andi	t4,t4,255
    e88394ea:	300e8e93          	addi	t4,t4,768
    e88394ee:	8ea9                	xor	a3,a3,a0
    e88394f0:	3c87350b          	extu	a0,a4,15,8
    e88394f4:	20050513          	addi	a0,a0,512
    e88394f8:	44a7c50b          	lrw	a0,a5,a0,2
    e88394fc:	8ea9                	xor	a3,a3,a0
    e88394fe:	0ff8f513          	andi	a0,a7,255
    e8839502:	30050513          	addi	a0,a0,768
    e8839506:	44a7c50b          	lrw	a0,a5,a0,2
    e883950a:	3c88b88b          	extu	a7,a7,15,8
    e883950e:	20088893          	addi	a7,a7,512
    e8839512:	00ae4e33          	xor	t3,t3,a0
    e8839516:	5608                	lw	a0,40(a2)
    e8839518:	2681                	sext.w	a3,a3
    e883951a:	00ae4e33          	xor	t3,t3,a0
    e883951e:	5d07350b          	extu	a0,a4,23,16
    e8839522:	10050513          	addi	a0,a0,256
    e8839526:	44a7c50b          	lrw	a0,a5,a0,2
    e883952a:	0187571b          	srliw	a4,a4,0x18
    e883952e:	54e7c70b          	lurw	a4,a5,a4,2
    e8839532:	00ae4e33          	xor	t3,t3,a0
    e8839536:	3c83350b          	extu	a0,t1,15,8
    e883953a:	20050513          	addi	a0,a0,512
    e883953e:	44a7c50b          	lrw	a0,a5,a0,2
    e8839542:	5d03330b          	extu	t1,t1,23,16
    e8839546:	10030313          	addi	t1,t1,256
    e883954a:	00ae4e33          	xor	t3,t3,a0
    e883954e:	45d7c50b          	lrw	a0,a5,t4,2
    e8839552:	2e01                	sext.w	t3,t3
        round(fwd_rnd,  b1, b0, kp + 3 * N_COLS);
    e8839554:	0ff6fe93          	andi	t4,a3,255
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839558:	8f29                	xor	a4,a4,a0
    e883955a:	5648                	lw	a0,44(a2)
        round(fwd_rnd,  b1, b0, kp + 3 * N_COLS);
    e883955c:	300e8e93          	addi	t4,t4,768
    e8839560:	45d7ce8b          	lrw	t4,a5,t4,2
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839564:	8f29                	xor	a4,a4,a0
    e8839566:	4467c50b          	lrw	a0,a5,t1,2
        round(fwd_rnd,  b1, b0, kp + 3 * N_COLS);
    e883956a:	0ff87313          	andi	t1,a6,255
    e883956e:	30030313          	addi	t1,t1,768
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839572:	8f29                	xor	a4,a4,a0
    e8839574:	4517c50b          	lrw	a0,a5,a7,2
        round(fwd_rnd,  b1, b0, kp + 3 * N_COLS);
    e8839578:	0188589b          	srliw	a7,a6,0x18
    e883957c:	5517c88b          	lurw	a7,a5,a7,2
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839580:	8f29                	xor	a4,a4,a0
    e8839582:	2701                	sext.w	a4,a4
        round(fwd_rnd,  b1, b0, kp + 3 * N_COLS);
    e8839584:	0ff77513          	andi	a0,a4,255
    e8839588:	30050513          	addi	a0,a0,768
    e883958c:	44a7c50b          	lrw	a0,a5,a0,2
    e8839590:	4467c30b          	lrw	t1,a5,t1,2
    e8839594:	00a8c8b3          	xor	a7,a7,a0
    e8839598:	5a08                	lw	a0,48(a2)
    e883959a:	00a8c8b3          	xor	a7,a7,a0
    e883959e:	5d06b50b          	extu	a0,a3,23,16
    e88395a2:	10050513          	addi	a0,a0,256
    e88395a6:	44a7c50b          	lrw	a0,a5,a0,2
    e88395aa:	00a8c8b3          	xor	a7,a7,a0
    e88395ae:	3c8e350b          	extu	a0,t3,15,8
    e88395b2:	20050513          	addi	a0,a0,512
    e88395b6:	44a7c50b          	lrw	a0,a5,a0,2
    e88395ba:	00a8c8b3          	xor	a7,a7,a0
    e88395be:	0186d51b          	srliw	a0,a3,0x18
    e88395c2:	54a7c50b          	lurw	a0,a5,a0,2
    e88395c6:	3c86b68b          	extu	a3,a3,15,8
    e88395ca:	20068693          	addi	a3,a3,512
    e88395ce:	00654533          	xor	a0,a0,t1
    e88395d2:	03462303          	lw	t1,52(a2)
    e88395d6:	44d7c68b          	lrw	a3,a5,a3,2
    e88395da:	2881                	sext.w	a7,a7
    e88395dc:	00654533          	xor	a0,a0,t1
    e88395e0:	5d0e330b          	extu	t1,t3,23,16
    e88395e4:	10030313          	addi	t1,t1,256
    e88395e8:	4467c30b          	lrw	t1,a5,t1,2
    e88395ec:	00654533          	xor	a0,a0,t1
    e88395f0:	3c87330b          	extu	t1,a4,15,8
    e88395f4:	20030313          	addi	t1,t1,512
    e88395f8:	4467c30b          	lrw	t1,a5,t1,2
    e88395fc:	00654533          	xor	a0,a0,t1
    e8839600:	018e531b          	srliw	t1,t3,0x18
    e8839604:	5467c30b          	lurw	t1,a5,t1,2
    e8839608:	0ffe7e13          	andi	t3,t3,255
    e883960c:	300e0e13          	addi	t3,t3,768
    e8839610:	01d34333          	xor	t1,t1,t4
    e8839614:	03862e83          	lw	t4,56(a2)
    e8839618:	45c7ce0b          	lrw	t3,a5,t3,2
    e883961c:	2501                	sext.w	a0,a0
    e883961e:	01d34333          	xor	t1,t1,t4
    e8839622:	5d073e8b          	extu	t4,a4,23,16
    e8839626:	100e8e93          	addi	t4,t4,256
    e883962a:	45d7ce8b          	lrw	t4,a5,t4,2
    e883962e:	0187571b          	srliw	a4,a4,0x18
    e8839632:	54e7c70b          	lurw	a4,a5,a4,2
    e8839636:	01d34333          	xor	t1,t1,t4
    e883963a:	3c883e8b          	extu	t4,a6,15,8
    e883963e:	5d08380b          	extu	a6,a6,23,16
    e8839642:	01c74733          	xor	a4,a4,t3
    e8839646:	10080813          	addi	a6,a6,256
    e883964a:	03c62e03          	lw	t3,60(a2)
    e883964e:	4507c80b          	lrw	a6,a5,a6,2
    e8839652:	200e8e93          	addi	t4,t4,512
    e8839656:	01c74733          	xor	a4,a4,t3
    e883965a:	01074733          	xor	a4,a4,a6
    e883965e:	8f35                	xor	a4,a4,a3
    e8839660:	2701                	sext.w	a4,a4
        round(fwd_rnd,  b0, b1, kp + 4 * N_COLS);
    e8839662:	0ff77693          	andi	a3,a4,255
    e8839666:	0188d81b          	srliw	a6,a7,0x18
    e883966a:	30068693          	addi	a3,a3,768
    e883966e:	44d7c68b          	lrw	a3,a5,a3,2
    e8839672:	5507c80b          	lurw	a6,a5,a6,2
        round(fwd_rnd,  b1, b0, kp + 3 * N_COLS);
    e8839676:	45d7ce8b          	lrw	t4,a5,t4,2
        round(fwd_rnd,  b0, b1, kp + 4 * N_COLS);
    e883967a:	0ff8fe13          	andi	t3,a7,255
    e883967e:	00d84833          	xor	a6,a6,a3
    e8839682:	4234                	lw	a3,64(a2)
        round(fwd_rnd,  b1, b0, kp + 3 * N_COLS);
    e8839684:	01d34333          	xor	t1,t1,t4
    e8839688:	2301                	sext.w	t1,t1
        round(fwd_rnd,  b0, b1, kp + 4 * N_COLS);
    e883968a:	00d84833          	xor	a6,a6,a3
    e883968e:	5d05368b          	extu	a3,a0,23,16
    e8839692:	10068693          	addi	a3,a3,256
    e8839696:	44d7c68b          	lrw	a3,a5,a3,2
    e883969a:	300e0e13          	addi	t3,t3,768
    e883969e:	0ff57e93          	andi	t4,a0,255
    e88396a2:	00d84833          	xor	a6,a6,a3
    e88396a6:	3c83368b          	extu	a3,t1,15,8
    e88396aa:	20068693          	addi	a3,a3,512
    e88396ae:	44d7c68b          	lrw	a3,a5,a3,2
    e88396b2:	45c7ce0b          	lrw	t3,a5,t3,2
    e88396b6:	300e8e93          	addi	t4,t4,768
    e88396ba:	00d84833          	xor	a6,a6,a3
    e88396be:	0185569b          	srliw	a3,a0,0x18
    e88396c2:	54d7c68b          	lurw	a3,a5,a3,2
    e88396c6:	45d7ce8b          	lrw	t4,a5,t4,2
    e88396ca:	3c85350b          	extu	a0,a0,15,8
    e88396ce:	01c6c6b3          	xor	a3,a3,t3
    e88396d2:	04462e03          	lw	t3,68(a2)
    e88396d6:	20050513          	addi	a0,a0,512
    e88396da:	44a7c50b          	lrw	a0,a5,a0,2
    e88396de:	01c6c6b3          	xor	a3,a3,t3
    e88396e2:	5d033e0b          	extu	t3,t1,23,16
    e88396e6:	100e0e13          	addi	t3,t3,256
    e88396ea:	45c7ce0b          	lrw	t3,a5,t3,2
    e88396ee:	2801                	sext.w	a6,a6
    e88396f0:	01c6c6b3          	xor	a3,a3,t3
    e88396f4:	3c873e0b          	extu	t3,a4,15,8
    e88396f8:	200e0e13          	addi	t3,t3,512
    e88396fc:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839700:	01c6c6b3          	xor	a3,a3,t3
    e8839704:	01835e1b          	srliw	t3,t1,0x18
    e8839708:	55c7ce0b          	lurw	t3,a5,t3,2
    e883970c:	0ff37313          	andi	t1,t1,255
    e8839710:	30030313          	addi	t1,t1,768
    e8839714:	01de4e33          	xor	t3,t3,t4
    e8839718:	04862e83          	lw	t4,72(a2)
    e883971c:	4467c30b          	lrw	t1,a5,t1,2
    e8839720:	2681                	sext.w	a3,a3
    e8839722:	01de4e33          	xor	t3,t3,t4
    e8839726:	5d073e8b          	extu	t4,a4,23,16
    e883972a:	100e8e93          	addi	t4,t4,256
    e883972e:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839732:	0187571b          	srliw	a4,a4,0x18
    e8839736:	54e7c70b          	lurw	a4,a5,a4,2
    e883973a:	01de4e33          	xor	t3,t3,t4
    e883973e:	3c88be8b          	extu	t4,a7,15,8
    e8839742:	5d08b88b          	extu	a7,a7,23,16
    e8839746:	00674733          	xor	a4,a4,t1
    e883974a:	10088893          	addi	a7,a7,256
    e883974e:	04c62303          	lw	t1,76(a2)
    e8839752:	4517c88b          	lrw	a7,a5,a7,2
    e8839756:	200e8e93          	addi	t4,t4,512
    e883975a:	00674733          	xor	a4,a4,t1
    e883975e:	01174733          	xor	a4,a4,a7
    e8839762:	8f29                	xor	a4,a4,a0
    e8839764:	2701                	sext.w	a4,a4
        round(fwd_rnd,  b1, b0, kp + 5 * N_COLS);
    e8839766:	0ff77513          	andi	a0,a4,255
    e883976a:	0188589b          	srliw	a7,a6,0x18
    e883976e:	30050513          	addi	a0,a0,768
    e8839772:	44a7c50b          	lrw	a0,a5,a0,2
    e8839776:	5517c88b          	lurw	a7,a5,a7,2
        round(fwd_rnd,  b0, b1, kp + 4 * N_COLS);
    e883977a:	45d7ce8b          	lrw	t4,a5,t4,2
        round(fwd_rnd,  b1, b0, kp + 5 * N_COLS);
    e883977e:	0ff87313          	andi	t1,a6,255
    e8839782:	00a8c8b3          	xor	a7,a7,a0
    e8839786:	4a28                	lw	a0,80(a2)
        round(fwd_rnd,  b0, b1, kp + 4 * N_COLS);
    e8839788:	01de4e33          	xor	t3,t3,t4
    e883978c:	2e01                	sext.w	t3,t3
        round(fwd_rnd,  b1, b0, kp + 5 * N_COLS);
    e883978e:	00a8c8b3          	xor	a7,a7,a0
    e8839792:	5d06b50b          	extu	a0,a3,23,16
    e8839796:	10050513          	addi	a0,a0,256
    e883979a:	44a7c50b          	lrw	a0,a5,a0,2
    e883979e:	30030313          	addi	t1,t1,768
    e88397a2:	4467c30b          	lrw	t1,a5,t1,2
    e88397a6:	00a8c8b3          	xor	a7,a7,a0
    e88397aa:	3c8e350b          	extu	a0,t3,15,8
    e88397ae:	20050513          	addi	a0,a0,512
    e88397b2:	44a7c50b          	lrw	a0,a5,a0,2
    e88397b6:	0ff6fe93          	andi	t4,a3,255
    e88397ba:	300e8e93          	addi	t4,t4,768
    e88397be:	00a8c8b3          	xor	a7,a7,a0
    e88397c2:	0186d51b          	srliw	a0,a3,0x18
    e88397c6:	54a7c50b          	lurw	a0,a5,a0,2
    e88397ca:	45d7ce8b          	lrw	t4,a5,t4,2
    e88397ce:	3c86b68b          	extu	a3,a3,15,8
    e88397d2:	00654533          	xor	a0,a0,t1
    e88397d6:	05462303          	lw	t1,84(a2)
    e88397da:	20068693          	addi	a3,a3,512
    e88397de:	2881                	sext.w	a7,a7
    e88397e0:	00654533          	xor	a0,a0,t1
    e88397e4:	5d0e330b          	extu	t1,t3,23,16
    e88397e8:	10030313          	addi	t1,t1,256
    e88397ec:	4467c30b          	lrw	t1,a5,t1,2
    e88397f0:	00654533          	xor	a0,a0,t1
    e88397f4:	3c87330b          	extu	t1,a4,15,8
    e88397f8:	20030313          	addi	t1,t1,512
    e88397fc:	4467c30b          	lrw	t1,a5,t1,2
    e8839800:	00654533          	xor	a0,a0,t1
    e8839804:	018e531b          	srliw	t1,t3,0x18
    e8839808:	5467c30b          	lurw	t1,a5,t1,2
    e883980c:	0ffe7e13          	andi	t3,t3,255
    e8839810:	300e0e13          	addi	t3,t3,768
    e8839814:	01d34333          	xor	t1,t1,t4
    e8839818:	05862e83          	lw	t4,88(a2)
    e883981c:	2501                	sext.w	a0,a0
    e883981e:	01d34333          	xor	t1,t1,t4
    e8839822:	5d073e8b          	extu	t4,a4,23,16
    e8839826:	100e8e93          	addi	t4,t4,256
    e883982a:	45d7ce8b          	lrw	t4,a5,t4,2
    e883982e:	0187571b          	srliw	a4,a4,0x18
    e8839832:	54e7c70b          	lurw	a4,a5,a4,2
    e8839836:	01d34333          	xor	t1,t1,t4
    e883983a:	3c883e8b          	extu	t4,a6,15,8
    e883983e:	200e8e93          	addi	t4,t4,512
    e8839842:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839846:	45c7ce0b          	lrw	t3,a5,t3,2
    e883984a:	5d08380b          	extu	a6,a6,23,16
    e883984e:	10080813          	addi	a6,a6,256
    e8839852:	01c74733          	xor	a4,a4,t3
    e8839856:	05c62e03          	lw	t3,92(a2)
    e883985a:	4507c80b          	lrw	a6,a5,a6,2
    e883985e:	44d7c68b          	lrw	a3,a5,a3,2
    e8839862:	01c74733          	xor	a4,a4,t3
    e8839866:	01074733          	xor	a4,a4,a6
    e883986a:	8f35                	xor	a4,a4,a3
    e883986c:	2701                	sext.w	a4,a4
        round(fwd_rnd,  b0, b1, kp + 6 * N_COLS);
    e883986e:	0ff77693          	andi	a3,a4,255
    e8839872:	0188d81b          	srliw	a6,a7,0x18
    e8839876:	30068693          	addi	a3,a3,768
    e883987a:	44d7c68b          	lrw	a3,a5,a3,2
    e883987e:	5507c80b          	lurw	a6,a5,a6,2
        round(fwd_rnd,  b1, b0, kp + 5 * N_COLS);
    e8839882:	01d34333          	xor	t1,t1,t4
    e8839886:	2301                	sext.w	t1,t1
        round(fwd_rnd,  b0, b1, kp + 6 * N_COLS);
    e8839888:	00d84833          	xor	a6,a6,a3
    e883988c:	5234                	lw	a3,96(a2)
    e883988e:	0ff8fe13          	andi	t3,a7,255
    e8839892:	300e0e13          	addi	t3,t3,768
    e8839896:	00d84833          	xor	a6,a6,a3
    e883989a:	5d05368b          	extu	a3,a0,23,16
    e883989e:	10068693          	addi	a3,a3,256
    e88398a2:	44d7c68b          	lrw	a3,a5,a3,2
    e88398a6:	45c7ce0b          	lrw	t3,a5,t3,2
    e88398aa:	0ff57e93          	andi	t4,a0,255
    e88398ae:	00d84833          	xor	a6,a6,a3
    e88398b2:	3c83368b          	extu	a3,t1,15,8
    e88398b6:	20068693          	addi	a3,a3,512
    e88398ba:	44d7c68b          	lrw	a3,a5,a3,2
    e88398be:	300e8e93          	addi	t4,t4,768
    e88398c2:	45d7ce8b          	lrw	t4,a5,t4,2
    e88398c6:	00d84833          	xor	a6,a6,a3
    e88398ca:	0185569b          	srliw	a3,a0,0x18
    e88398ce:	54d7c68b          	lurw	a3,a5,a3,2
    e88398d2:	3c85350b          	extu	a0,a0,15,8
    e88398d6:	20050513          	addi	a0,a0,512
    e88398da:	01c6c6b3          	xor	a3,a3,t3
    e88398de:	06462e03          	lw	t3,100(a2)
    e88398e2:	44a7c50b          	lrw	a0,a5,a0,2
    e88398e6:	2801                	sext.w	a6,a6
    e88398e8:	01c6c6b3          	xor	a3,a3,t3
    e88398ec:	5d033e0b          	extu	t3,t1,23,16
    e88398f0:	100e0e13          	addi	t3,t3,256
    e88398f4:	45c7ce0b          	lrw	t3,a5,t3,2
    e88398f8:	01c6c6b3          	xor	a3,a3,t3
    e88398fc:	3c873e0b          	extu	t3,a4,15,8
    e8839900:	200e0e13          	addi	t3,t3,512
    e8839904:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839908:	01c6c6b3          	xor	a3,a3,t3
    e883990c:	01835e1b          	srliw	t3,t1,0x18
    e8839910:	55c7ce0b          	lurw	t3,a5,t3,2
    e8839914:	0ff37313          	andi	t1,t1,255
    e8839918:	30030313          	addi	t1,t1,768
    e883991c:	01de4e33          	xor	t3,t3,t4
    e8839920:	06862e83          	lw	t4,104(a2)
    e8839924:	4467c30b          	lrw	t1,a5,t1,2
    e8839928:	2681                	sext.w	a3,a3
    e883992a:	01de4e33          	xor	t3,t3,t4
    e883992e:	5d073e8b          	extu	t4,a4,23,16
    e8839932:	100e8e93          	addi	t4,t4,256
    e8839936:	45d7ce8b          	lrw	t4,a5,t4,2
    e883993a:	0187571b          	srliw	a4,a4,0x18
    e883993e:	54e7c70b          	lurw	a4,a5,a4,2
    e8839942:	01de4e33          	xor	t3,t3,t4
    e8839946:	3c88be8b          	extu	t4,a7,15,8
    e883994a:	5d08b88b          	extu	a7,a7,23,16
    e883994e:	00674733          	xor	a4,a4,t1
    e8839952:	10088893          	addi	a7,a7,256
    e8839956:	06c62303          	lw	t1,108(a2)
    e883995a:	4517c88b          	lrw	a7,a5,a7,2
    e883995e:	200e8e93          	addi	t4,t4,512
    e8839962:	00674733          	xor	a4,a4,t1
    e8839966:	01174733          	xor	a4,a4,a7
    e883996a:	8f29                	xor	a4,a4,a0
    e883996c:	2701                	sext.w	a4,a4
        round(fwd_rnd,  b1, b0, kp + 7 * N_COLS);
    e883996e:	0ff77513          	andi	a0,a4,255
    e8839972:	0188589b          	srliw	a7,a6,0x18
    e8839976:	30050513          	addi	a0,a0,768
    e883997a:	44a7c50b          	lrw	a0,a5,a0,2
    e883997e:	5517c88b          	lurw	a7,a5,a7,2
        round(fwd_rnd,  b0, b1, kp + 6 * N_COLS);
    e8839982:	45d7ce8b          	lrw	t4,a5,t4,2
        round(fwd_rnd,  b1, b0, kp + 7 * N_COLS);
    e8839986:	0ff87313          	andi	t1,a6,255
    e883998a:	00a8c8b3          	xor	a7,a7,a0
    e883998e:	5a28                	lw	a0,112(a2)
        round(fwd_rnd,  b0, b1, kp + 6 * N_COLS);
    e8839990:	01de4e33          	xor	t3,t3,t4
    e8839994:	2e01                	sext.w	t3,t3
        round(fwd_rnd,  b1, b0, kp + 7 * N_COLS);
    e8839996:	00a8c8b3          	xor	a7,a7,a0
    e883999a:	5d06b50b          	extu	a0,a3,23,16
    e883999e:	10050513          	addi	a0,a0,256
    e88399a2:	44a7c50b          	lrw	a0,a5,a0,2
    e88399a6:	30030313          	addi	t1,t1,768
    e88399aa:	4467c30b          	lrw	t1,a5,t1,2
    e88399ae:	00a8c8b3          	xor	a7,a7,a0
    e88399b2:	3c8e350b          	extu	a0,t3,15,8
    e88399b6:	20050513          	addi	a0,a0,512
    e88399ba:	44a7c50b          	lrw	a0,a5,a0,2
    e88399be:	0ff6fe93          	andi	t4,a3,255
    e88399c2:	300e8e93          	addi	t4,t4,768
    e88399c6:	00a8c8b3          	xor	a7,a7,a0
    e88399ca:	0186d51b          	srliw	a0,a3,0x18
    e88399ce:	54a7c50b          	lurw	a0,a5,a0,2
    e88399d2:	3c86b68b          	extu	a3,a3,15,8
    e88399d6:	20068693          	addi	a3,a3,512
    e88399da:	00654533          	xor	a0,a0,t1
    e88399de:	07462303          	lw	t1,116(a2)
    e88399e2:	2881                	sext.w	a7,a7
    e88399e4:	00654533          	xor	a0,a0,t1
    e88399e8:	5d0e330b          	extu	t1,t3,23,16
    e88399ec:	10030313          	addi	t1,t1,256
    e88399f0:	4467c30b          	lrw	t1,a5,t1,2
    e88399f4:	45d7ce8b          	lrw	t4,a5,t4,2
    e88399f8:	44d7c68b          	lrw	a3,a5,a3,2
    e88399fc:	00654533          	xor	a0,a0,t1
    e8839a00:	3c87330b          	extu	t1,a4,15,8
    e8839a04:	20030313          	addi	t1,t1,512
    e8839a08:	4467c30b          	lrw	t1,a5,t1,2
    e8839a0c:	00654533          	xor	a0,a0,t1
    e8839a10:	018e531b          	srliw	t1,t3,0x18
    e8839a14:	5467c30b          	lurw	t1,a5,t1,2
    e8839a18:	0ffe7e13          	andi	t3,t3,255
    e8839a1c:	300e0e13          	addi	t3,t3,768
    e8839a20:	01d34333          	xor	t1,t1,t4
    e8839a24:	07862e83          	lw	t4,120(a2)
    e8839a28:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839a2c:	2501                	sext.w	a0,a0
    e8839a2e:	01d34333          	xor	t1,t1,t4
    e8839a32:	5d073e8b          	extu	t4,a4,23,16
    e8839a36:	100e8e93          	addi	t4,t4,256
    e8839a3a:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839a3e:	0187571b          	srliw	a4,a4,0x18
    e8839a42:	54e7c70b          	lurw	a4,a5,a4,2
    e8839a46:	01d34333          	xor	t1,t1,t4
    e8839a4a:	3c883e8b          	extu	t4,a6,15,8
    e8839a4e:	5d08380b          	extu	a6,a6,23,16
    e8839a52:	01c74733          	xor	a4,a4,t3
    e8839a56:	10080813          	addi	a6,a6,256
    e8839a5a:	07c62e03          	lw	t3,124(a2)
    e8839a5e:	4507c80b          	lrw	a6,a5,a6,2
    e8839a62:	200e8e93          	addi	t4,t4,512
    e8839a66:	01c74733          	xor	a4,a4,t3
    e8839a6a:	01074733          	xor	a4,a4,a6
    e8839a6e:	8f35                	xor	a4,a4,a3
    e8839a70:	2701                	sext.w	a4,a4
        round(fwd_rnd,  b0, b1, kp + 8 * N_COLS);
    e8839a72:	0ff77693          	andi	a3,a4,255
    e8839a76:	0188d81b          	srliw	a6,a7,0x18
    e8839a7a:	30068693          	addi	a3,a3,768
    e8839a7e:	44d7c68b          	lrw	a3,a5,a3,2
    e8839a82:	5507c80b          	lurw	a6,a5,a6,2
        round(fwd_rnd,  b1, b0, kp + 7 * N_COLS);
    e8839a86:	45d7ce8b          	lrw	t4,a5,t4,2
        round(fwd_rnd,  b0, b1, kp + 8 * N_COLS);
    e8839a8a:	0ff8fe13          	andi	t3,a7,255
    e8839a8e:	00d84833          	xor	a6,a6,a3
    e8839a92:	08062683          	lw	a3,128(a2)
        round(fwd_rnd,  b1, b0, kp + 7 * N_COLS);
    e8839a96:	01d34333          	xor	t1,t1,t4
    e8839a9a:	2301                	sext.w	t1,t1
        round(fwd_rnd,  b0, b1, kp + 8 * N_COLS);
    e8839a9c:	00d84833          	xor	a6,a6,a3
    e8839aa0:	5d05368b          	extu	a3,a0,23,16
    e8839aa4:	10068693          	addi	a3,a3,256
    e8839aa8:	44d7c68b          	lrw	a3,a5,a3,2
    e8839aac:	300e0e13          	addi	t3,t3,768
    e8839ab0:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839ab4:	00d84833          	xor	a6,a6,a3
    e8839ab8:	3c83368b          	extu	a3,t1,15,8
    e8839abc:	20068693          	addi	a3,a3,512
    e8839ac0:	44d7c68b          	lrw	a3,a5,a3,2
    e8839ac4:	0ff57e93          	andi	t4,a0,255
    e8839ac8:	300e8e93          	addi	t4,t4,768
    e8839acc:	00d84833          	xor	a6,a6,a3
    e8839ad0:	0185569b          	srliw	a3,a0,0x18
    e8839ad4:	54d7c68b          	lurw	a3,a5,a3,2
    e8839ad8:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839adc:	3c85350b          	extu	a0,a0,15,8
    e8839ae0:	01c6c6b3          	xor	a3,a3,t3
    e8839ae4:	08462e03          	lw	t3,132(a2)
    e8839ae8:	20050513          	addi	a0,a0,512
    e8839aec:	44a7c50b          	lrw	a0,a5,a0,2
    e8839af0:	01c6c6b3          	xor	a3,a3,t3
    e8839af4:	5d033e0b          	extu	t3,t1,23,16
    e8839af8:	100e0e13          	addi	t3,t3,256
    e8839afc:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839b00:	2801                	sext.w	a6,a6
    e8839b02:	01c6c6b3          	xor	a3,a3,t3
    e8839b06:	3c873e0b          	extu	t3,a4,15,8
    e8839b0a:	200e0e13          	addi	t3,t3,512
    e8839b0e:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839b12:	01c6c6b3          	xor	a3,a3,t3
    e8839b16:	01835e1b          	srliw	t3,t1,0x18
    e8839b1a:	55c7ce0b          	lurw	t3,a5,t3,2
    e8839b1e:	0ff37313          	andi	t1,t1,255
    e8839b22:	30030313          	addi	t1,t1,768
    e8839b26:	01de4e33          	xor	t3,t3,t4
    e8839b2a:	08862e83          	lw	t4,136(a2)
    e8839b2e:	4467c30b          	lrw	t1,a5,t1,2
    e8839b32:	2681                	sext.w	a3,a3
    e8839b34:	01de4e33          	xor	t3,t3,t4
    e8839b38:	5d073e8b          	extu	t4,a4,23,16
    e8839b3c:	100e8e93          	addi	t4,t4,256
    e8839b40:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839b44:	0187571b          	srliw	a4,a4,0x18
    e8839b48:	54e7c70b          	lurw	a4,a5,a4,2
    e8839b4c:	01de4e33          	xor	t3,t3,t4
    e8839b50:	3c88be8b          	extu	t4,a7,15,8
    e8839b54:	5d08b88b          	extu	a7,a7,23,16
    e8839b58:	00674733          	xor	a4,a4,t1
    e8839b5c:	10088893          	addi	a7,a7,256
    e8839b60:	08c62303          	lw	t1,140(a2)
    e8839b64:	4517c88b          	lrw	a7,a5,a7,2
    e8839b68:	200e8e93          	addi	t4,t4,512
    e8839b6c:	00674733          	xor	a4,a4,t1
    e8839b70:	01174733          	xor	a4,a4,a7
    e8839b74:	8f29                	xor	a4,a4,a0
    e8839b76:	2701                	sext.w	a4,a4
        round(fwd_rnd,  b1, b0, kp + 9 * N_COLS);
    e8839b78:	0ff77513          	andi	a0,a4,255
    e8839b7c:	0188589b          	srliw	a7,a6,0x18
    e8839b80:	30050513          	addi	a0,a0,768
        round(fwd_rnd,  b0, b1, kp + 8 * N_COLS);
    e8839b84:	45d7ce8b          	lrw	t4,a5,t4,2
        round(fwd_rnd,  b1, b0, kp + 9 * N_COLS);
    e8839b88:	5517c30b          	lurw	t1,a5,a7,2
    e8839b8c:	44a7c50b          	lrw	a0,a5,a0,2
        round(fwd_rnd,  b0, b1, kp + 8 * N_COLS);
    e8839b90:	01de4e33          	xor	t3,t3,t4
    e8839b94:	2e01                	sext.w	t3,t3
        round(fwd_rnd,  b1, b0, kp + 9 * N_COLS);
    e8839b96:	00a34333          	xor	t1,t1,a0
    e8839b9a:	09062503          	lw	a0,144(a2)
    e8839b9e:	0186d89b          	srliw	a7,a3,0x18
    e8839ba2:	5517c88b          	lurw	a7,a5,a7,2
    e8839ba6:	00a34333          	xor	t1,t1,a0
    e8839baa:	5d06b50b          	extu	a0,a3,23,16
    e8839bae:	10050513          	addi	a0,a0,256
    e8839bb2:	44a7c50b          	lrw	a0,a5,a0,2
    e8839bb6:	0ff6fe93          	andi	t4,a3,255
    e8839bba:	300e8e93          	addi	t4,t4,768
    e8839bbe:	00a34333          	xor	t1,t1,a0
    e8839bc2:	3c8e350b          	extu	a0,t3,15,8
    e8839bc6:	20050513          	addi	a0,a0,512
    e8839bca:	44a7c50b          	lrw	a0,a5,a0,2
    e8839bce:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839bd2:	3c86b68b          	extu	a3,a3,15,8
    e8839bd6:	00a34333          	xor	t1,t1,a0
    e8839bda:	0ff87513          	andi	a0,a6,255
    e8839bde:	30050513          	addi	a0,a0,768
    e8839be2:	44a7c50b          	lrw	a0,a5,a0,2
    e8839be6:	20068693          	addi	a3,a3,512
    e8839bea:	2301                	sext.w	t1,t1
    e8839bec:	00a8c8b3          	xor	a7,a7,a0
    e8839bf0:	09462503          	lw	a0,148(a2)
    e8839bf4:	00a8c8b3          	xor	a7,a7,a0
    e8839bf8:	5d0e350b          	extu	a0,t3,23,16
    e8839bfc:	10050513          	addi	a0,a0,256
    e8839c00:	44a7c50b          	lrw	a0,a5,a0,2
    e8839c04:	00a8c8b3          	xor	a7,a7,a0
    e8839c08:	3c87350b          	extu	a0,a4,15,8
    e8839c0c:	20050513          	addi	a0,a0,512
    e8839c10:	44a7c50b          	lrw	a0,a5,a0,2
    e8839c14:	00a8c8b3          	xor	a7,a7,a0
    e8839c18:	018e551b          	srliw	a0,t3,0x18
    e8839c1c:	54a7c50b          	lurw	a0,a5,a0,2
    e8839c20:	0ffe7e13          	andi	t3,t3,255
    e8839c24:	300e0e13          	addi	t3,t3,768
    e8839c28:	01d54533          	xor	a0,a0,t4
    e8839c2c:	09862e83          	lw	t4,152(a2)
    e8839c30:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839c34:	2881                	sext.w	a7,a7
    e8839c36:	01d54533          	xor	a0,a0,t4
    e8839c3a:	5d073e8b          	extu	t4,a4,23,16
    e8839c3e:	100e8e93          	addi	t4,t4,256
    e8839c42:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839c46:	0187571b          	srliw	a4,a4,0x18
    e8839c4a:	54e7c70b          	lurw	a4,a5,a4,2
    e8839c4e:	01d54533          	xor	a0,a0,t4
    e8839c52:	3c883e8b          	extu	t4,a6,15,8
    e8839c56:	5d08380b          	extu	a6,a6,23,16
    e8839c5a:	01c74733          	xor	a4,a4,t3
    e8839c5e:	10080813          	addi	a6,a6,256
    e8839c62:	09c62e03          	lw	t3,156(a2)
    e8839c66:	4507c80b          	lrw	a6,a5,a6,2
    e8839c6a:	200e8e93          	addi	t4,t4,512
    e8839c6e:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839c72:	44d7c78b          	lrw	a5,a5,a3,2
    e8839c76:	01c74733          	xor	a4,a4,t3
    e8839c7a:	01074733          	xor	a4,a4,a6
    e8839c7e:	8fb9                	xor	a5,a5,a4
    e8839c80:	2781                	sext.w	a5,a5
        round(fwd_lrnd, b0, b1, kp +10 * N_COLS);
    e8839c82:	0ff7f713          	andi	a4,a5,255
    e8839c86:	00077e17          	auipc	t3,0x77
    e8839c8a:	10ae0e13          	addi	t3,t3,266 # e88b0d90 <t_fl>
    e8839c8e:	0183569b          	srliw	a3,t1,0x18
    e8839c92:	30070713          	addi	a4,a4,768
    e8839c96:	54de480b          	lurw	a6,t3,a3,2
    e8839c9a:	44ee470b          	lrw	a4,t3,a4,2
        round(fwd_rnd,  b1, b0, kp + 9 * N_COLS);
    e8839c9e:	01d54533          	xor	a0,a0,t4
    e8839ca2:	2501                	sext.w	a0,a0
        round(fwd_lrnd, b0, b1, kp +10 * N_COLS);
    e8839ca4:	00e84833          	xor	a6,a6,a4
    e8839ca8:	0a062703          	lw	a4,160(a2)
    e8839cac:	0188d69b          	srliw	a3,a7,0x18
    e8839cb0:	54de468b          	lurw	a3,t3,a3,2
    e8839cb4:	00e84833          	xor	a6,a6,a4
    e8839cb8:	5d08b70b          	extu	a4,a7,23,16
    e8839cbc:	10070713          	addi	a4,a4,256
    e8839cc0:	44ee470b          	lrw	a4,t3,a4,2
    e8839cc4:	0ff8fe93          	andi	t4,a7,255
    e8839cc8:	300e8e93          	addi	t4,t4,768
    e8839ccc:	00e84833          	xor	a6,a6,a4
    e8839cd0:	3c85370b          	extu	a4,a0,15,8
    e8839cd4:	20070713          	addi	a4,a4,512
    e8839cd8:	44ee470b          	lrw	a4,t3,a4,2
    e8839cdc:	45de4e8b          	lrw	t4,t3,t4,2
    e8839ce0:	3c88b88b          	extu	a7,a7,15,8
    e8839ce4:	00e84833          	xor	a6,a6,a4
    e8839ce8:	0ff37713          	andi	a4,t1,255
    e8839cec:	30070713          	addi	a4,a4,768
    e8839cf0:	44ee470b          	lrw	a4,t3,a4,2
    e8839cf4:	20088893          	addi	a7,a7,512
    e8839cf8:	2801                	sext.w	a6,a6
    e8839cfa:	8eb9                	xor	a3,a3,a4
    e8839cfc:	0a462703          	lw	a4,164(a2)
    e8839d00:	8eb9                	xor	a3,a3,a4
    e8839d02:	5d05370b          	extu	a4,a0,23,16
    e8839d06:	10070713          	addi	a4,a4,256
    e8839d0a:	44ee470b          	lrw	a4,t3,a4,2
    e8839d0e:	8eb9                	xor	a3,a3,a4
    e8839d10:	3c87b70b          	extu	a4,a5,15,8
    e8839d14:	20070713          	addi	a4,a4,512
    e8839d18:	44ee470b          	lrw	a4,t3,a4,2
    e8839d1c:	8eb9                	xor	a3,a3,a4
    e8839d1e:	0185571b          	srliw	a4,a0,0x18
    e8839d22:	54ee470b          	lurw	a4,t3,a4,2
    e8839d26:	0ff57513          	andi	a0,a0,255
    e8839d2a:	2681                	sext.w	a3,a3
    e8839d2c:	01d74733          	xor	a4,a4,t4
    e8839d30:	0a862e83          	lw	t4,168(a2)
    e8839d34:	01d74733          	xor	a4,a4,t4
    e8839d38:	5d07be8b          	extu	t4,a5,23,16
    e8839d3c:	100e8e93          	addi	t4,t4,256
    e8839d40:	45de4e8b          	lrw	t4,t3,t4,2
    e8839d44:	0187d79b          	srliw	a5,a5,0x18
    e8839d48:	01d74733          	xor	a4,a4,t4
    e8839d4c:	3c833e8b          	extu	t4,t1,15,8
    e8839d50:	200e8e93          	addi	t4,t4,512
    e8839d54:	45de4e8b          	lrw	t4,t3,t4,2
    e8839d58:	5d03330b          	extu	t1,t1,23,16
    e8839d5c:	10030313          	addi	t1,t1,256
    e8839d60:	01d74733          	xor	a4,a4,t4
    e8839d64:	30050e93          	addi	t4,a0,768
    e8839d68:	54fe450b          	lurw	a0,t3,a5,2
    e8839d6c:	45de478b          	lrw	a5,t3,t4,2
    e8839d70:	2701                	sext.w	a4,a4
    e8839d72:	8d3d                	xor	a0,a0,a5
    e8839d74:	0ac62783          	lw	a5,172(a2)
    e8839d78:	8d3d                	xor	a0,a0,a5
    e8839d7a:	446e478b          	lrw	a5,t3,t1,2
    e8839d7e:	8d3d                	xor	a0,a0,a5
    e8839d80:	451e478b          	lrw	a5,t3,a7,2
    e8839d84:	8d3d                	xor	a0,a0,a5
    e8839d86:	2501                	sext.w	a0,a0
        kp += N_COLS;
        round(fwd_lrnd, b0, b1, kp);
    }
#endif

    state_out(out, b0);
    e8839d88:	9007170b          	revw	a4,a4
    e8839d8c:	9008180b          	revw	a6,a6
    e8839d90:	9006968b          	revw	a3,a3
    e8839d94:	9005150b          	revw	a0,a0
    e8839d98:	c598                	sw	a4,8(a1)
    e8839d9a:	0105a023          	sw	a6,0(a1)
    e8839d9e:	c1d4                	sw	a3,4(a1)
    e8839da0:	c5c8                	sw	a0,12(a1)
    return EXIT_SUCCESS;
    e8839da2:	4701                	li	a4,0
}
    e8839da4:	853a                	mv	a0,a4
    e8839da6:	8082                	ret
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e8839da8:	0ff57893          	andi	a7,a0,255
    e8839dac:	00078797          	auipc	a5,0x78
    e8839db0:	fe478793          	addi	a5,a5,-28 # e88b1d90 <t_fn>
    e8839db4:	0188531b          	srliw	t1,a6,0x18
    e8839db8:	30088893          	addi	a7,a7,768
    e8839dbc:	4517c88b          	lrw	a7,a5,a7,2
    e8839dc0:	5467c30b          	lurw	t1,a5,t1,2
    e8839dc4:	0ff87e13          	andi	t3,a6,255
    e8839dc8:	300e0e13          	addi	t3,t3,768
    e8839dcc:	01134333          	xor	t1,t1,a7
    e8839dd0:	01062883          	lw	a7,16(a2)
    e8839dd4:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839dd8:	0ff6fe93          	andi	t4,a3,255
    e8839ddc:	01134333          	xor	t1,t1,a7
    e8839de0:	5d06b88b          	extu	a7,a3,23,16
    e8839de4:	10088893          	addi	a7,a7,256
    e8839de8:	4517c88b          	lrw	a7,a5,a7,2
    e8839dec:	300e8e93          	addi	t4,t4,768
    e8839df0:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839df4:	01134333          	xor	t1,t1,a7
    e8839df8:	3c87388b          	extu	a7,a4,15,8
    e8839dfc:	20088893          	addi	a7,a7,512
    e8839e00:	4517c88b          	lrw	a7,a5,a7,2
        kp += 2 * N_COLS;
    e8839e04:	02060613          	addi	a2,a2,32
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e8839e08:	01134333          	xor	t1,t1,a7
    e8839e0c:	0186d89b          	srliw	a7,a3,0x18
    e8839e10:	5517c88b          	lurw	a7,a5,a7,2
    e8839e14:	3c86b68b          	extu	a3,a3,15,8
    e8839e18:	20068693          	addi	a3,a3,512
    e8839e1c:	01c8c8b3          	xor	a7,a7,t3
    e8839e20:	ff462e03          	lw	t3,-12(a2)
    e8839e24:	2301                	sext.w	t1,t1
    e8839e26:	01c8c8b3          	xor	a7,a7,t3
    e8839e2a:	5d073e0b          	extu	t3,a4,23,16
    e8839e2e:	100e0e13          	addi	t3,t3,256
    e8839e32:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839e36:	01c8c8b3          	xor	a7,a7,t3
    e8839e3a:	3c853e0b          	extu	t3,a0,15,8
    e8839e3e:	200e0e13          	addi	t3,t3,512
    e8839e42:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839e46:	01c8c8b3          	xor	a7,a7,t3
    e8839e4a:	01875e1b          	srliw	t3,a4,0x18
    e8839e4e:	55c7ce0b          	lurw	t3,a5,t3,2
    e8839e52:	0ff77713          	andi	a4,a4,255
    e8839e56:	30070713          	addi	a4,a4,768
    e8839e5a:	01de4e33          	xor	t3,t3,t4
    e8839e5e:	ff862e83          	lw	t4,-8(a2)
    e8839e62:	44e7c70b          	lrw	a4,a5,a4,2
    e8839e66:	2881                	sext.w	a7,a7
    e8839e68:	01de4e33          	xor	t3,t3,t4
    e8839e6c:	5d053e8b          	extu	t4,a0,23,16
    e8839e70:	0185551b          	srliw	a0,a0,0x18
    e8839e74:	54a7c50b          	lurw	a0,a5,a0,2
    e8839e78:	100e8e93          	addi	t4,t4,256
    e8839e7c:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839e80:	8d39                	xor	a0,a0,a4
    e8839e82:	ffc62703          	lw	a4,-4(a2)
    e8839e86:	01de4e33          	xor	t3,t3,t4
    e8839e8a:	3c883e8b          	extu	t4,a6,15,8
    e8839e8e:	5d08380b          	extu	a6,a6,23,16
    e8839e92:	10080813          	addi	a6,a6,256
    e8839e96:	8d39                	xor	a0,a0,a4
    e8839e98:	4507c70b          	lrw	a4,a5,a6,2
    e8839e9c:	200e8e93          	addi	t4,t4,512
    e8839ea0:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839ea4:	8d39                	xor	a0,a0,a4
    e8839ea6:	44d7c70b          	lrw	a4,a5,a3,2
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839eaa:	0183569b          	srliw	a3,t1,0x18
    e8839eae:	54d7c80b          	lurw	a6,a5,a3,2
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e8839eb2:	8d39                	xor	a0,a0,a4
    e8839eb4:	2501                	sext.w	a0,a0
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839eb6:	0ff57713          	andi	a4,a0,255
    e8839eba:	30070713          	addi	a4,a4,768
    e8839ebe:	44e7c70b          	lrw	a4,a5,a4,2
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e8839ec2:	01de4e33          	xor	t3,t3,t4
    e8839ec6:	2e01                	sext.w	t3,t3
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e8839ec8:	00e84833          	xor	a6,a6,a4
    e8839ecc:	4218                	lw	a4,0(a2)
    e8839ece:	0188d69b          	srliw	a3,a7,0x18
    e8839ed2:	54d7c68b          	lurw	a3,a5,a3,2
    e8839ed6:	00e84833          	xor	a6,a6,a4
    e8839eda:	5d08b70b          	extu	a4,a7,23,16
    e8839ede:	10070713          	addi	a4,a4,256
    e8839ee2:	44e7c70b          	lrw	a4,a5,a4,2
    e8839ee6:	0ff8fe93          	andi	t4,a7,255
    e8839eea:	300e8e93          	addi	t4,t4,768
    e8839eee:	00e84833          	xor	a6,a6,a4
    e8839ef2:	3c8e370b          	extu	a4,t3,15,8
    e8839ef6:	20070713          	addi	a4,a4,512
    e8839efa:	44e7c70b          	lrw	a4,a5,a4,2
    e8839efe:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839f02:	3c88b88b          	extu	a7,a7,15,8
    e8839f06:	00e84833          	xor	a6,a6,a4
    e8839f0a:	0ff37713          	andi	a4,t1,255
    e8839f0e:	30070713          	addi	a4,a4,768
    e8839f12:	44e7c70b          	lrw	a4,a5,a4,2
    e8839f16:	20088893          	addi	a7,a7,512
    e8839f1a:	2801                	sext.w	a6,a6
    e8839f1c:	8eb9                	xor	a3,a3,a4
    e8839f1e:	4258                	lw	a4,4(a2)
    e8839f20:	8eb9                	xor	a3,a3,a4
    e8839f22:	5d0e370b          	extu	a4,t3,23,16
    e8839f26:	10070713          	addi	a4,a4,256
    e8839f2a:	44e7c70b          	lrw	a4,a5,a4,2
    e8839f2e:	8eb9                	xor	a3,a3,a4
    e8839f30:	3c85370b          	extu	a4,a0,15,8
    e8839f34:	20070713          	addi	a4,a4,512
    e8839f38:	44e7c70b          	lrw	a4,a5,a4,2
    e8839f3c:	8eb9                	xor	a3,a3,a4
    e8839f3e:	018e571b          	srliw	a4,t3,0x18
    e8839f42:	54e7c70b          	lurw	a4,a5,a4,2
    e8839f46:	0ffe7e13          	andi	t3,t3,255
    e8839f4a:	300e0e13          	addi	t3,t3,768
    e8839f4e:	01d74733          	xor	a4,a4,t4
    e8839f52:	00862e83          	lw	t4,8(a2)
    e8839f56:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839f5a:	2681                	sext.w	a3,a3
    e8839f5c:	01d74733          	xor	a4,a4,t4
    e8839f60:	5d053e8b          	extu	t4,a0,23,16
    e8839f64:	100e8e93          	addi	t4,t4,256
    e8839f68:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839f6c:	0185551b          	srliw	a0,a0,0x18
    e8839f70:	54a7c50b          	lurw	a0,a5,a0,2
    e8839f74:	01d74733          	xor	a4,a4,t4
    e8839f78:	3c833e8b          	extu	t4,t1,15,8
    e8839f7c:	5d03330b          	extu	t1,t1,23,16
    e8839f80:	01c54533          	xor	a0,a0,t3
    e8839f84:	10030313          	addi	t1,t1,256
    e8839f88:	00c62e03          	lw	t3,12(a2)
    e8839f8c:	4467c30b          	lrw	t1,a5,t1,2
    e8839f90:	200e8e93          	addi	t4,t4,512
    e8839f94:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839f98:	4517c78b          	lrw	a5,a5,a7,2
    e8839f9c:	01c54533          	xor	a0,a0,t3
    e8839fa0:	00654533          	xor	a0,a0,t1
    e8839fa4:	01d74733          	xor	a4,a4,t4
    e8839fa8:	8d3d                	xor	a0,a0,a5
    e8839faa:	2701                	sext.w	a4,a4
    e8839fac:	2501                	sext.w	a0,a0
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e8839fae:	0ff57893          	andi	a7,a0,255
    e8839fb2:	00078797          	auipc	a5,0x78
    e8839fb6:	dde78793          	addi	a5,a5,-546 # e88b1d90 <t_fn>
    e8839fba:	0188531b          	srliw	t1,a6,0x18
    e8839fbe:	30088893          	addi	a7,a7,768
    e8839fc2:	4517c88b          	lrw	a7,a5,a7,2
    e8839fc6:	5467c30b          	lurw	t1,a5,t1,2
    e8839fca:	0ff87e13          	andi	t3,a6,255
    e8839fce:	300e0e13          	addi	t3,t3,768
    e8839fd2:	01134333          	xor	t1,t1,a7
    e8839fd6:	01062883          	lw	a7,16(a2)
    e8839fda:	45c7ce0b          	lrw	t3,a5,t3,2
    e8839fde:	0ff6fe93          	andi	t4,a3,255
    e8839fe2:	01134333          	xor	t1,t1,a7
    e8839fe6:	5d06b88b          	extu	a7,a3,23,16
    e8839fea:	10088893          	addi	a7,a7,256
    e8839fee:	4517c88b          	lrw	a7,a5,a7,2
    e8839ff2:	300e8e93          	addi	t4,t4,768
    e8839ff6:	45d7ce8b          	lrw	t4,a5,t4,2
    e8839ffa:	01134333          	xor	t1,t1,a7
    e8839ffe:	3c87388b          	extu	a7,a4,15,8
    e883a002:	20088893          	addi	a7,a7,512
    e883a006:	4517c88b          	lrw	a7,a5,a7,2
        kp += 2 * N_COLS;
    e883a00a:	02060613          	addi	a2,a2,32
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e883a00e:	01134333          	xor	t1,t1,a7
    e883a012:	0186d89b          	srliw	a7,a3,0x18
    e883a016:	5517c88b          	lurw	a7,a5,a7,2
    e883a01a:	3c86b68b          	extu	a3,a3,15,8
    e883a01e:	20068693          	addi	a3,a3,512
    e883a022:	01c8c8b3          	xor	a7,a7,t3
    e883a026:	ff462e03          	lw	t3,-12(a2)
    e883a02a:	2301                	sext.w	t1,t1
    e883a02c:	01c8c8b3          	xor	a7,a7,t3
    e883a030:	5d073e0b          	extu	t3,a4,23,16
    e883a034:	100e0e13          	addi	t3,t3,256
    e883a038:	45c7ce0b          	lrw	t3,a5,t3,2
    e883a03c:	01c8c8b3          	xor	a7,a7,t3
    e883a040:	3c853e0b          	extu	t3,a0,15,8
    e883a044:	200e0e13          	addi	t3,t3,512
    e883a048:	45c7ce0b          	lrw	t3,a5,t3,2
    e883a04c:	01c8c8b3          	xor	a7,a7,t3
    e883a050:	01875e1b          	srliw	t3,a4,0x18
    e883a054:	55c7ce0b          	lurw	t3,a5,t3,2
    e883a058:	0ff77713          	andi	a4,a4,255
    e883a05c:	30070713          	addi	a4,a4,768
    e883a060:	01de4e33          	xor	t3,t3,t4
    e883a064:	ff862e83          	lw	t4,-8(a2)
    e883a068:	44e7c70b          	lrw	a4,a5,a4,2
    e883a06c:	2881                	sext.w	a7,a7
    e883a06e:	01de4e33          	xor	t3,t3,t4
    e883a072:	5d053e8b          	extu	t4,a0,23,16
    e883a076:	0185551b          	srliw	a0,a0,0x18
    e883a07a:	54a7c50b          	lurw	a0,a5,a0,2
    e883a07e:	100e8e93          	addi	t4,t4,256
    e883a082:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a086:	8d39                	xor	a0,a0,a4
    e883a088:	ffc62703          	lw	a4,-4(a2)
    e883a08c:	01de4e33          	xor	t3,t3,t4
    e883a090:	3c883e8b          	extu	t4,a6,15,8
    e883a094:	5d08380b          	extu	a6,a6,23,16
    e883a098:	10080813          	addi	a6,a6,256
    e883a09c:	8d39                	xor	a0,a0,a4
    e883a09e:	4507c70b          	lrw	a4,a5,a6,2
    e883a0a2:	200e8e93          	addi	t4,t4,512
    e883a0a6:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a0aa:	8d39                	xor	a0,a0,a4
    e883a0ac:	44d7c70b          	lrw	a4,a5,a3,2
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e883a0b0:	0183569b          	srliw	a3,t1,0x18
    e883a0b4:	54d7c80b          	lurw	a6,a5,a3,2
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e883a0b8:	8d39                	xor	a0,a0,a4
    e883a0ba:	2501                	sext.w	a0,a0
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e883a0bc:	0ff57713          	andi	a4,a0,255
    e883a0c0:	30070713          	addi	a4,a4,768
    e883a0c4:	44e7c70b          	lrw	a4,a5,a4,2
        round(fwd_rnd,  b1, b0, kp + 1 * N_COLS);
    e883a0c8:	01de4e33          	xor	t3,t3,t4
    e883a0cc:	2e01                	sext.w	t3,t3
        round(fwd_rnd,  b0, b1, kp + 2 * N_COLS);
    e883a0ce:	00e84833          	xor	a6,a6,a4
    e883a0d2:	4218                	lw	a4,0(a2)
    e883a0d4:	0188d69b          	srliw	a3,a7,0x18
    e883a0d8:	54d7c68b          	lurw	a3,a5,a3,2
    e883a0dc:	00e84833          	xor	a6,a6,a4
    e883a0e0:	5d08b70b          	extu	a4,a7,23,16
    e883a0e4:	10070713          	addi	a4,a4,256
    e883a0e8:	44e7c70b          	lrw	a4,a5,a4,2
    e883a0ec:	0ff8fe93          	andi	t4,a7,255
    e883a0f0:	300e8e93          	addi	t4,t4,768
    e883a0f4:	00e84833          	xor	a6,a6,a4
    e883a0f8:	3c8e370b          	extu	a4,t3,15,8
    e883a0fc:	20070713          	addi	a4,a4,512
    e883a100:	44e7c70b          	lrw	a4,a5,a4,2
    e883a104:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a108:	3c88b88b          	extu	a7,a7,15,8
    e883a10c:	00e84833          	xor	a6,a6,a4
    e883a110:	0ff37713          	andi	a4,t1,255
    e883a114:	30070713          	addi	a4,a4,768
    e883a118:	44e7c70b          	lrw	a4,a5,a4,2
    e883a11c:	20088893          	addi	a7,a7,512
    e883a120:	2801                	sext.w	a6,a6
    e883a122:	8eb9                	xor	a3,a3,a4
    e883a124:	4258                	lw	a4,4(a2)
    e883a126:	8eb9                	xor	a3,a3,a4
    e883a128:	5d0e370b          	extu	a4,t3,23,16
    e883a12c:	10070713          	addi	a4,a4,256
    e883a130:	44e7c70b          	lrw	a4,a5,a4,2
    e883a134:	8eb9                	xor	a3,a3,a4
    e883a136:	3c85370b          	extu	a4,a0,15,8
    e883a13a:	20070713          	addi	a4,a4,512
    e883a13e:	44e7c70b          	lrw	a4,a5,a4,2
    e883a142:	8eb9                	xor	a3,a3,a4
    e883a144:	018e571b          	srliw	a4,t3,0x18
    e883a148:	54e7c70b          	lurw	a4,a5,a4,2
    e883a14c:	0ffe7e13          	andi	t3,t3,255
    e883a150:	300e0e13          	addi	t3,t3,768
    e883a154:	01d74733          	xor	a4,a4,t4
    e883a158:	00862e83          	lw	t4,8(a2)
    e883a15c:	45c7ce0b          	lrw	t3,a5,t3,2
    e883a160:	2681                	sext.w	a3,a3
    e883a162:	01d74733          	xor	a4,a4,t4
    e883a166:	5d053e8b          	extu	t4,a0,23,16
    e883a16a:	100e8e93          	addi	t4,t4,256
    e883a16e:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a172:	0185551b          	srliw	a0,a0,0x18
    e883a176:	54a7c50b          	lurw	a0,a5,a0,2
    e883a17a:	01d74733          	xor	a4,a4,t4
    e883a17e:	3c833e8b          	extu	t4,t1,15,8
    e883a182:	5d03330b          	extu	t1,t1,23,16
    e883a186:	01c54533          	xor	a0,a0,t3
    e883a18a:	10030313          	addi	t1,t1,256
    e883a18e:	00c62e03          	lw	t3,12(a2)
    e883a192:	4467c30b          	lrw	t1,a5,t1,2
    e883a196:	200e8e93          	addi	t4,t4,512
    e883a19a:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a19e:	4517c78b          	lrw	a5,a5,a7,2
    e883a1a2:	01c54533          	xor	a0,a0,t3
    e883a1a6:	00654533          	xor	a0,a0,t1
    e883a1aa:	01d74733          	xor	a4,a4,t4
    e883a1ae:	8d3d                	xor	a0,a0,a5
    e883a1b0:	2701                	sext.w	a4,a4
    e883a1b2:	2501                	sext.w	a0,a0
        kp += 2 * N_COLS;
    e883a1b4:	9beff06f          	j	e8839372 <gladman_aes_encrypt+0x68>

00000000e883a1b8 <gladman_aes_decrypt>:
#if defined( dec_imvars )
    dec_imvars; /* declare variables for inv_mcol() if needed */
#endif
    const uint_32t *kp;

    if( cx->inf.b[0] != 10 * 16 && cx->inf.b[0] != 12 * 16 && cx->inf.b[0] != 14 * 16 )
    e883a1b8:	0f064783          	lbu	a5,240(a2)
    e883a1bc:	0a000713          	li	a4,160
    e883a1c0:	0bf7f693          	andi	a3,a5,191
    e883a1c4:	00e68763          	beq	a3,a4,e883a1d2 <gladman_aes_decrypt+0x1a>
    e883a1c8:	0c000693          	li	a3,192
        return EXIT_FAILURE;
    e883a1cc:	4705                	li	a4,1
    if( cx->inf.b[0] != 10 * 16 && cx->inf.b[0] != 12 * 16 && cx->inf.b[0] != 14 * 16 )
    e883a1ce:	28d79ee3          	bne	a5,a3,e883ac6a <gladman_aes_decrypt+0xab2>

    kp = cx->ks + (key_ofs ? (cx->inf.b[0] >> 2) : 0);
    state_in(b0, in, kp);
    e883a1d2:	00052803          	lw	a6,0(a0)
    e883a1d6:	4154                	lw	a3,4(a0)
    e883a1d8:	00862883          	lw	a7,8(a2)
    e883a1dc:	9008170b          	revw	a4,a6
    e883a1e0:	00062803          	lw	a6,0(a2)

#if (DEC_UNROLL == FULL)

    kp = cx->ks + (key_ofs ? 0 : (cx->inf.b[0] >> 2));
    e883a1e4:	0027df13          	srli	t5,a5,0x2
    switch(cx->inf.b[0])
    e883a1e8:	0c000313          	li	t1,192
    state_in(b0, in, kp);
    e883a1ec:	00e84833          	xor	a6,a6,a4
    e883a1f0:	9006970b          	revw	a4,a3
    e883a1f4:	4254                	lw	a3,4(a2)
    e883a1f6:	8eb9                	xor	a3,a3,a4
    e883a1f8:	4518                	lw	a4,8(a0)
    e883a1fa:	4548                	lw	a0,12(a0)
    e883a1fc:	9007170b          	revw	a4,a4
    e883a200:	00e8c733          	xor	a4,a7,a4
    e883a204:	00c62883          	lw	a7,12(a2)
    e883a208:	9005150b          	revw	a0,a0
    e883a20c:	00a8c533          	xor	a0,a7,a0
    kp = cx->ks + (key_ofs ? 0 : (cx->inf.b[0] >> 2));
    e883a210:	05e6188b          	addsl	a7,a2,t5,2
    switch(cx->inf.b[0])
    e883a214:	466782e3          	beq	a5,t1,e883ae78 <gladman_aes_decrypt+0xcc0>
    e883a218:	0e000313          	li	t1,224
    e883a21c:	246789e3          	beq	a5,t1,e883ac6e <gladman_aes_decrypt+0xab6>
    e883a220:	0a000313          	li	t1,160
    e883a224:	226795e3          	bne	a5,t1,e883ac4e <gladman_aes_decrypt+0xa96>
        round(inv_rnd,  b0, b1, rnd_key(-12));
    case 12 * 16:
        round(inv_rnd,  b1, b0, rnd_key(-11));
        round(inv_rnd,  b0, b1, rnd_key(-10));
    case 10 * 16:
        round(inv_rnd,  b1, b0, rnd_key(-9));
    e883a228:	0ff6f313          	andi	t1,a3,255
    e883a22c:	0007b797          	auipc	a5,0x7b
    e883a230:	b6478793          	addi	a5,a5,-1180 # e88b4d90 <t_in>
    e883a234:	01885e1b          	srliw	t3,a6,0x18
    e883a238:	30030313          	addi	t1,t1,768
    e883a23c:	55c7cf8b          	lurw	t6,a5,t3,2
    e883a240:	4467c30b          	lrw	t1,a5,t1,2
    e883a244:	0ff77e13          	andi	t3,a4,255
    e883a248:	300e0e13          	addi	t3,t3,768
    e883a24c:	006fcfb3          	xor	t6,t6,t1
    e883a250:	f708a303          	lw	t1,-144(a7)
    e883a254:	45c7ce0b          	lrw	t3,a5,t3,2
    e883a258:	0ff57e93          	andi	t4,a0,255
    e883a25c:	006fcfb3          	xor	t6,t6,t1
    e883a260:	5d05330b          	extu	t1,a0,23,16
    e883a264:	10030313          	addi	t1,t1,256
    e883a268:	4467c30b          	lrw	t1,a5,t1,2
    e883a26c:	300e8e93          	addi	t4,t4,768
    e883a270:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a274:	006fcfb3          	xor	t6,t6,t1
    e883a278:	3c87330b          	extu	t1,a4,15,8
    e883a27c:	20030313          	addi	t1,t1,512
    e883a280:	4467c30b          	lrw	t1,a5,t1,2
    e883a284:	006fcfb3          	xor	t6,t6,t1
    e883a288:	0186d31b          	srliw	t1,a3,0x18
    e883a28c:	5467c30b          	lurw	t1,a5,t1,2
    e883a290:	2f81                	sext.w	t6,t6
    e883a292:	01c34333          	xor	t1,t1,t3
    e883a296:	f748ae03          	lw	t3,-140(a7)
    e883a29a:	01c34333          	xor	t1,t1,t3
    e883a29e:	5d083e0b          	extu	t3,a6,23,16
    e883a2a2:	100e0e13          	addi	t3,t3,256
    e883a2a6:	45c7ce0b          	lrw	t3,a5,t3,2
    e883a2aa:	01c34333          	xor	t1,t1,t3
    e883a2ae:	3c853e0b          	extu	t3,a0,15,8
    e883a2b2:	200e0e13          	addi	t3,t3,512
    e883a2b6:	45c7ce0b          	lrw	t3,a5,t3,2
    e883a2ba:	0185551b          	srliw	a0,a0,0x18
    e883a2be:	54a7c50b          	lurw	a0,a5,a0,2
    e883a2c2:	01c34333          	xor	t1,t1,t3
    e883a2c6:	01875e1b          	srliw	t3,a4,0x18
    e883a2ca:	55c7ce0b          	lurw	t3,a5,t3,2
    e883a2ce:	5d07370b          	extu	a4,a4,23,16
    e883a2d2:	10070713          	addi	a4,a4,256
    e883a2d6:	01de4e33          	xor	t3,t3,t4
    e883a2da:	f788ae83          	lw	t4,-136(a7)
    e883a2de:	44e7c70b          	lrw	a4,a5,a4,2
    e883a2e2:	2301                	sext.w	t1,t1
    e883a2e4:	01de4e33          	xor	t3,t3,t4
    e883a2e8:	5d06be8b          	extu	t4,a3,23,16
    e883a2ec:	100e8e93          	addi	t4,t4,256
    e883a2f0:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a2f4:	3c86b68b          	extu	a3,a3,15,8
    e883a2f8:	20068693          	addi	a3,a3,512
    e883a2fc:	01de4e33          	xor	t3,t3,t4
    e883a300:	3c883e8b          	extu	t4,a6,15,8
    e883a304:	0ff87813          	andi	a6,a6,255
    e883a308:	30080813          	addi	a6,a6,768
    e883a30c:	4507c80b          	lrw	a6,a5,a6,2
    e883a310:	44d7c68b          	lrw	a3,a5,a3,2
    e883a314:	200e8e93          	addi	t4,t4,512
    e883a318:	01054533          	xor	a0,a0,a6
    e883a31c:	f7c8a803          	lw	a6,-132(a7)
    e883a320:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a324:	01054533          	xor	a0,a0,a6
    e883a328:	8f29                	xor	a4,a4,a0
    e883a32a:	8f35                	xor	a4,a4,a3
        round(inv_rnd,  b0, b1, rnd_key(-8));
    e883a32c:	0ff37693          	andi	a3,t1,255
    e883a330:	018fd51b          	srliw	a0,t6,0x18
    e883a334:	30068693          	addi	a3,a3,768
    e883a338:	44d7c68b          	lrw	a3,a5,a3,2
        round(inv_rnd,  b1, b0, rnd_key(-9));
    e883a33c:	01de4e33          	xor	t3,t3,t4
        round(inv_rnd,  b0, b1, rnd_key(-8));
    e883a340:	54a7ce8b          	lurw	t4,a5,a0,2
        round(inv_rnd,  b1, b0, rnd_key(-9));
    e883a344:	2701                	sext.w	a4,a4
    e883a346:	2e01                	sext.w	t3,t3
        round(inv_rnd,  b0, b1, rnd_key(-8));
    e883a348:	00deceb3          	xor	t4,t4,a3
    e883a34c:	f808a683          	lw	a3,-128(a7)
    e883a350:	0ffe7513          	andi	a0,t3,255
    e883a354:	30050513          	addi	a0,a0,768
    e883a358:	00deceb3          	xor	t4,t4,a3
    e883a35c:	5d07368b          	extu	a3,a4,23,16
    e883a360:	10068693          	addi	a3,a3,256
    e883a364:	44d7c68b          	lrw	a3,a5,a3,2
    e883a368:	44a7c50b          	lrw	a0,a5,a0,2
    e883a36c:	018e581b          	srliw	a6,t3,0x18
    e883a370:	00deceb3          	xor	t4,t4,a3
    e883a374:	3c8e368b          	extu	a3,t3,15,8
    e883a378:	20068693          	addi	a3,a3,512
    e883a37c:	44d7c68b          	lrw	a3,a5,a3,2
    e883a380:	5507c80b          	lurw	a6,a5,a6,2
    e883a384:	5d0e3e0b          	extu	t3,t3,23,16
    e883a388:	00deceb3          	xor	t4,t4,a3
    e883a38c:	0183569b          	srliw	a3,t1,0x18
    e883a390:	54d7c68b          	lurw	a3,a5,a3,2
    e883a394:	100e0e13          	addi	t3,t3,256
    e883a398:	2e81                	sext.w	t4,t4
    e883a39a:	8ea9                	xor	a3,a3,a0
    e883a39c:	f848a503          	lw	a0,-124(a7)
    e883a3a0:	8ea9                	xor	a3,a3,a0
    e883a3a2:	5d0fb50b          	extu	a0,t6,23,16
    e883a3a6:	10050513          	addi	a0,a0,256
    e883a3aa:	44a7c50b          	lrw	a0,a5,a0,2
    e883a3ae:	8ea9                	xor	a3,a3,a0
    e883a3b0:	3c87350b          	extu	a0,a4,15,8
    e883a3b4:	20050513          	addi	a0,a0,512
    e883a3b8:	44a7c50b          	lrw	a0,a5,a0,2
    e883a3bc:	8ea9                	xor	a3,a3,a0
    e883a3be:	0ff77513          	andi	a0,a4,255
    e883a3c2:	30050513          	addi	a0,a0,768
    e883a3c6:	44a7c50b          	lrw	a0,a5,a0,2
    e883a3ca:	0187571b          	srliw	a4,a4,0x18
    e883a3ce:	2681                	sext.w	a3,a3
    e883a3d0:	00a84833          	xor	a6,a6,a0
    e883a3d4:	f888a503          	lw	a0,-120(a7)
    e883a3d8:	54e7c70b          	lurw	a4,a5,a4,2
    e883a3dc:	00a84833          	xor	a6,a6,a0
    e883a3e0:	5d03350b          	extu	a0,t1,23,16
    e883a3e4:	10050513          	addi	a0,a0,256
    e883a3e8:	44a7c50b          	lrw	a0,a5,a0,2
    e883a3ec:	3c83330b          	extu	t1,t1,15,8
    e883a3f0:	20030313          	addi	t1,t1,512
    e883a3f4:	00a84833          	xor	a6,a6,a0
    e883a3f8:	3c8fb50b          	extu	a0,t6,15,8
    e883a3fc:	20050513          	addi	a0,a0,512
    e883a400:	44a7c50b          	lrw	a0,a5,a0,2
    e883a404:	0fffff93          	andi	t6,t6,255
    e883a408:	300f8f93          	addi	t6,t6,768
    e883a40c:	00a84833          	xor	a6,a6,a0
    e883a410:	45f7c50b          	lrw	a0,a5,t6,2
    e883a414:	2801                	sext.w	a6,a6
    e883a416:	8f29                	xor	a4,a4,a0
    e883a418:	f8c8a503          	lw	a0,-116(a7)
    e883a41c:	8f29                	xor	a4,a4,a0
    e883a41e:	45c7c50b          	lrw	a0,a5,t3,2
    e883a422:	8f29                	xor	a4,a4,a0
    e883a424:	4467c50b          	lrw	a0,a5,t1,2
        round(inv_rnd,  b1, b0, rnd_key(-7));
    e883a428:	018ed31b          	srliw	t1,t4,0x18
    e883a42c:	5467ce0b          	lurw	t3,a5,t1,2
        round(inv_rnd,  b0, b1, rnd_key(-8));
    e883a430:	8f29                	xor	a4,a4,a0
        round(inv_rnd,  b1, b0, rnd_key(-7));
    e883a432:	0ff6f513          	andi	a0,a3,255
    e883a436:	30050513          	addi	a0,a0,768
    e883a43a:	44a7c50b          	lrw	a0,a5,a0,2
        round(inv_rnd,  b0, b1, rnd_key(-8));
    e883a43e:	2701                	sext.w	a4,a4
        round(inv_rnd,  b1, b0, rnd_key(-7));
    e883a440:	0ff87313          	andi	t1,a6,255
    e883a444:	00ae4e33          	xor	t3,t3,a0
    e883a448:	f908a503          	lw	a0,-112(a7)
    e883a44c:	30030313          	addi	t1,t1,768
    e883a450:	4467c30b          	lrw	t1,a5,t1,2
    e883a454:	00ae4e33          	xor	t3,t3,a0
    e883a458:	5d07350b          	extu	a0,a4,23,16
    e883a45c:	10050513          	addi	a0,a0,256
    e883a460:	44a7c50b          	lrw	a0,a5,a0,2
    e883a464:	0ff77f93          	andi	t6,a4,255
    e883a468:	300f8f93          	addi	t6,t6,768
    e883a46c:	00ae4e33          	xor	t3,t3,a0
    e883a470:	3c88350b          	extu	a0,a6,15,8
    e883a474:	20050513          	addi	a0,a0,512
    e883a478:	44a7c50b          	lrw	a0,a5,a0,2
    e883a47c:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a480:	00ae4e33          	xor	t3,t3,a0
    e883a484:	0186d51b          	srliw	a0,a3,0x18
    e883a488:	54a7c50b          	lurw	a0,a5,a0,2
    e883a48c:	2e01                	sext.w	t3,t3
    e883a48e:	00654533          	xor	a0,a0,t1
    e883a492:	f948a303          	lw	t1,-108(a7)
    e883a496:	00654533          	xor	a0,a0,t1
    e883a49a:	5d0eb30b          	extu	t1,t4,23,16
    e883a49e:	10030313          	addi	t1,t1,256
    e883a4a2:	4467c30b          	lrw	t1,a5,t1,2
    e883a4a6:	00654533          	xor	a0,a0,t1
    e883a4aa:	3c87330b          	extu	t1,a4,15,8
    e883a4ae:	20030313          	addi	t1,t1,512
    e883a4b2:	4467c30b          	lrw	t1,a5,t1,2
    e883a4b6:	0187571b          	srliw	a4,a4,0x18
    e883a4ba:	54e7c70b          	lurw	a4,a5,a4,2
    e883a4be:	00654533          	xor	a0,a0,t1
    e883a4c2:	0188531b          	srliw	t1,a6,0x18
    e883a4c6:	5467c30b          	lurw	t1,a5,t1,2
    e883a4ca:	5d08380b          	extu	a6,a6,23,16
    e883a4ce:	10080813          	addi	a6,a6,256
    e883a4d2:	01f34333          	xor	t1,t1,t6
    e883a4d6:	f988af83          	lw	t6,-104(a7)
    e883a4da:	4507c80b          	lrw	a6,a5,a6,2
    e883a4de:	2501                	sext.w	a0,a0
    e883a4e0:	01f34333          	xor	t1,t1,t6
    e883a4e4:	5d06bf8b          	extu	t6,a3,23,16
    e883a4e8:	100f8f93          	addi	t6,t6,256
    e883a4ec:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a4f0:	3c86b68b          	extu	a3,a3,15,8
    e883a4f4:	20068693          	addi	a3,a3,512
    e883a4f8:	01f34333          	xor	t1,t1,t6
    e883a4fc:	3c8ebf8b          	extu	t6,t4,15,8
    e883a500:	0ffefe93          	andi	t4,t4,255
    e883a504:	300e8e93          	addi	t4,t4,768
    e883a508:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a50c:	44d7c68b          	lrw	a3,a5,a3,2
    e883a510:	200f8f93          	addi	t6,t6,512
    e883a514:	01d74733          	xor	a4,a4,t4
    e883a518:	f9c8ae83          	lw	t4,-100(a7)
    e883a51c:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a520:	01d74733          	xor	a4,a4,t4
    e883a524:	01074733          	xor	a4,a4,a6
    e883a528:	8f35                	xor	a4,a4,a3
        round(inv_rnd,  b0, b1, rnd_key(-6));
    e883a52a:	0ff57693          	andi	a3,a0,255
    e883a52e:	018e581b          	srliw	a6,t3,0x18
    e883a532:	30068693          	addi	a3,a3,768
    e883a536:	5507ce8b          	lurw	t4,a5,a6,2
    e883a53a:	44d7c68b          	lrw	a3,a5,a3,2
        round(inv_rnd,  b1, b0, rnd_key(-7));
    e883a53e:	2701                	sext.w	a4,a4
    e883a540:	01f34333          	xor	t1,t1,t6
        round(inv_rnd,  b0, b1, rnd_key(-6));
    e883a544:	00deceb3          	xor	t4,t4,a3
    e883a548:	fa08a683          	lw	a3,-96(a7)
        round(inv_rnd,  b1, b0, rnd_key(-7));
    e883a54c:	2301                	sext.w	t1,t1
        round(inv_rnd,  b0, b1, rnd_key(-6));
    e883a54e:	0ff37813          	andi	a6,t1,255
    e883a552:	00deceb3          	xor	t4,t4,a3
    e883a556:	5d07368b          	extu	a3,a4,23,16
    e883a55a:	10068693          	addi	a3,a3,256
    e883a55e:	44d7c68b          	lrw	a3,a5,a3,2
    e883a562:	30080813          	addi	a6,a6,768
    e883a566:	0ff77f93          	andi	t6,a4,255
    e883a56a:	00deceb3          	xor	t4,t4,a3
    e883a56e:	3c83368b          	extu	a3,t1,15,8
    e883a572:	20068693          	addi	a3,a3,512
    e883a576:	44d7c68b          	lrw	a3,a5,a3,2
    e883a57a:	4507c80b          	lrw	a6,a5,a6,2
    e883a57e:	300f8f93          	addi	t6,t6,768
    e883a582:	00deceb3          	xor	t4,t4,a3
    e883a586:	0185569b          	srliw	a3,a0,0x18
    e883a58a:	54d7c68b          	lurw	a3,a5,a3,2
    e883a58e:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a592:	2e81                	sext.w	t4,t4
    e883a594:	0106c6b3          	xor	a3,a3,a6
    e883a598:	fa48a803          	lw	a6,-92(a7)
    e883a59c:	0106c6b3          	xor	a3,a3,a6
    e883a5a0:	5d0e380b          	extu	a6,t3,23,16
    e883a5a4:	10080813          	addi	a6,a6,256
    e883a5a8:	4507c80b          	lrw	a6,a5,a6,2
    e883a5ac:	0106c6b3          	xor	a3,a3,a6
    e883a5b0:	3c87380b          	extu	a6,a4,15,8
    e883a5b4:	20080813          	addi	a6,a6,512
    e883a5b8:	4507c80b          	lrw	a6,a5,a6,2
    e883a5bc:	0187571b          	srliw	a4,a4,0x18
    e883a5c0:	54e7c70b          	lurw	a4,a5,a4,2
    e883a5c4:	0106c6b3          	xor	a3,a3,a6
    e883a5c8:	0183581b          	srliw	a6,t1,0x18
    e883a5cc:	5507c80b          	lurw	a6,a5,a6,2
    e883a5d0:	5d03330b          	extu	t1,t1,23,16
    e883a5d4:	10030313          	addi	t1,t1,256
    e883a5d8:	01f84833          	xor	a6,a6,t6
    e883a5dc:	fa88af83          	lw	t6,-88(a7)
    e883a5e0:	4467c30b          	lrw	t1,a5,t1,2
    e883a5e4:	2681                	sext.w	a3,a3
    e883a5e6:	01f84833          	xor	a6,a6,t6
    e883a5ea:	5d053f8b          	extu	t6,a0,23,16
    e883a5ee:	100f8f93          	addi	t6,t6,256
    e883a5f2:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a5f6:	3c85350b          	extu	a0,a0,15,8
    e883a5fa:	20050513          	addi	a0,a0,512
    e883a5fe:	01f84833          	xor	a6,a6,t6
    e883a602:	3c8e3f8b          	extu	t6,t3,15,8
    e883a606:	0ffe7e13          	andi	t3,t3,255
    e883a60a:	300e0e13          	addi	t3,t3,768
    e883a60e:	45c7ce0b          	lrw	t3,a5,t3,2
    e883a612:	44a7c50b          	lrw	a0,a5,a0,2
    e883a616:	200f8f93          	addi	t6,t6,512
    e883a61a:	01c74733          	xor	a4,a4,t3
    e883a61e:	fac8ae03          	lw	t3,-84(a7)
    e883a622:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a626:	01c74733          	xor	a4,a4,t3
    e883a62a:	00674733          	xor	a4,a4,t1
    e883a62e:	8f29                	xor	a4,a4,a0
        round(inv_rnd,  b1, b0, rnd_key(-5));
    e883a630:	0ff6f513          	andi	a0,a3,255
    e883a634:	018ed31b          	srliw	t1,t4,0x18
    e883a638:	30050513          	addi	a0,a0,768
    e883a63c:	5467ce0b          	lurw	t3,a5,t1,2
    e883a640:	44a7c50b          	lrw	a0,a5,a0,2
        round(inv_rnd,  b0, b1, rnd_key(-6));
    e883a644:	2701                	sext.w	a4,a4
    e883a646:	01f84833          	xor	a6,a6,t6
        round(inv_rnd,  b1, b0, rnd_key(-5));
    e883a64a:	00ae4e33          	xor	t3,t3,a0
    e883a64e:	fb08a503          	lw	a0,-80(a7)
        round(inv_rnd,  b0, b1, rnd_key(-6));
    e883a652:	2801                	sext.w	a6,a6
        round(inv_rnd,  b1, b0, rnd_key(-5));
    e883a654:	0ff87313          	andi	t1,a6,255
    e883a658:	00ae4e33          	xor	t3,t3,a0
    e883a65c:	5d07350b          	extu	a0,a4,23,16
    e883a660:	10050513          	addi	a0,a0,256
    e883a664:	44a7c50b          	lrw	a0,a5,a0,2
    e883a668:	30030313          	addi	t1,t1,768
    e883a66c:	4467c30b          	lrw	t1,a5,t1,2
    e883a670:	00ae4e33          	xor	t3,t3,a0
    e883a674:	3c88350b          	extu	a0,a6,15,8
    e883a678:	20050513          	addi	a0,a0,512
    e883a67c:	44a7c50b          	lrw	a0,a5,a0,2
    e883a680:	0ff77f93          	andi	t6,a4,255
    e883a684:	300f8f93          	addi	t6,t6,768
    e883a688:	00ae4e33          	xor	t3,t3,a0
    e883a68c:	0186d51b          	srliw	a0,a3,0x18
    e883a690:	54a7c50b          	lurw	a0,a5,a0,2
    e883a694:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a698:	2e01                	sext.w	t3,t3
    e883a69a:	00654533          	xor	a0,a0,t1
    e883a69e:	fb48a303          	lw	t1,-76(a7)
    e883a6a2:	00654533          	xor	a0,a0,t1
    e883a6a6:	5d0eb30b          	extu	t1,t4,23,16
    e883a6aa:	10030313          	addi	t1,t1,256
    e883a6ae:	4467c30b          	lrw	t1,a5,t1,2
    e883a6b2:	00654533          	xor	a0,a0,t1
    e883a6b6:	3c87330b          	extu	t1,a4,15,8
    e883a6ba:	20030313          	addi	t1,t1,512
    e883a6be:	4467c30b          	lrw	t1,a5,t1,2
    e883a6c2:	0187571b          	srliw	a4,a4,0x18
    e883a6c6:	54e7c70b          	lurw	a4,a5,a4,2
    e883a6ca:	00654533          	xor	a0,a0,t1
    e883a6ce:	0188531b          	srliw	t1,a6,0x18
    e883a6d2:	5467c30b          	lurw	t1,a5,t1,2
    e883a6d6:	5d08380b          	extu	a6,a6,23,16
    e883a6da:	10080813          	addi	a6,a6,256
    e883a6de:	01f34333          	xor	t1,t1,t6
    e883a6e2:	fb88af83          	lw	t6,-72(a7)
    e883a6e6:	2501                	sext.w	a0,a0
    e883a6e8:	01f34333          	xor	t1,t1,t6
    e883a6ec:	5d06bf8b          	extu	t6,a3,23,16
    e883a6f0:	100f8f93          	addi	t6,t6,256
    e883a6f4:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a6f8:	3c86b68b          	extu	a3,a3,15,8
    e883a6fc:	20068693          	addi	a3,a3,512
    e883a700:	01f34333          	xor	t1,t1,t6
    e883a704:	3c8ebf8b          	extu	t6,t4,15,8
    e883a708:	0ffefe93          	andi	t4,t4,255
    e883a70c:	200f8f93          	addi	t6,t6,512
    e883a710:	300e8e93          	addi	t4,t4,768
    e883a714:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a718:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a71c:	4507c80b          	lrw	a6,a5,a6,2
    e883a720:	44d7c68b          	lrw	a3,a5,a3,2
    e883a724:	01d74733          	xor	a4,a4,t4
    e883a728:	fbc8ae83          	lw	t4,-68(a7)
    e883a72c:	01f34333          	xor	t1,t1,t6
    e883a730:	2301                	sext.w	t1,t1
    e883a732:	01d74733          	xor	a4,a4,t4
    e883a736:	01074733          	xor	a4,a4,a6
    e883a73a:	8f35                	xor	a4,a4,a3
        round(inv_rnd,  b0, b1, rnd_key(-4));
    e883a73c:	0ff57693          	andi	a3,a0,255
    e883a740:	018e581b          	srliw	a6,t3,0x18
    e883a744:	30068693          	addi	a3,a3,768
    e883a748:	5507ce8b          	lurw	t4,a5,a6,2
    e883a74c:	44d7c68b          	lrw	a3,a5,a3,2
        round(inv_rnd,  b1, b0, rnd_key(-5));
    e883a750:	2701                	sext.w	a4,a4
        round(inv_rnd,  b0, b1, rnd_key(-4));
    e883a752:	0ff37813          	andi	a6,t1,255
    e883a756:	00deceb3          	xor	t4,t4,a3
    e883a75a:	fc08a683          	lw	a3,-64(a7)
    e883a75e:	30080813          	addi	a6,a6,768
    e883a762:	4507c80b          	lrw	a6,a5,a6,2
    e883a766:	00deceb3          	xor	t4,t4,a3
    e883a76a:	5d07368b          	extu	a3,a4,23,16
    e883a76e:	10068693          	addi	a3,a3,256
    e883a772:	44d7c68b          	lrw	a3,a5,a3,2
    e883a776:	0ff77f93          	andi	t6,a4,255
    e883a77a:	300f8f93          	addi	t6,t6,768
    e883a77e:	00deceb3          	xor	t4,t4,a3
    e883a782:	3c83368b          	extu	a3,t1,15,8
    e883a786:	20068693          	addi	a3,a3,512
    e883a78a:	44d7c68b          	lrw	a3,a5,a3,2
    e883a78e:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a792:	00deceb3          	xor	t4,t4,a3
    e883a796:	0185569b          	srliw	a3,a0,0x18
    e883a79a:	54d7c68b          	lurw	a3,a5,a3,2
    e883a79e:	2e81                	sext.w	t4,t4
    e883a7a0:	0106c6b3          	xor	a3,a3,a6
    e883a7a4:	fc48a803          	lw	a6,-60(a7)
    e883a7a8:	0106c6b3          	xor	a3,a3,a6
    e883a7ac:	5d0e380b          	extu	a6,t3,23,16
    e883a7b0:	10080813          	addi	a6,a6,256
    e883a7b4:	4507c80b          	lrw	a6,a5,a6,2
    e883a7b8:	0106c6b3          	xor	a3,a3,a6
    e883a7bc:	3c87380b          	extu	a6,a4,15,8
    e883a7c0:	20080813          	addi	a6,a6,512
    e883a7c4:	4507c80b          	lrw	a6,a5,a6,2
    e883a7c8:	0187571b          	srliw	a4,a4,0x18
    e883a7cc:	54e7c70b          	lurw	a4,a5,a4,2
    e883a7d0:	0106c6b3          	xor	a3,a3,a6
    e883a7d4:	0183581b          	srliw	a6,t1,0x18
    e883a7d8:	5507c80b          	lurw	a6,a5,a6,2
    e883a7dc:	5d03330b          	extu	t1,t1,23,16
    e883a7e0:	10030313          	addi	t1,t1,256
    e883a7e4:	01f84833          	xor	a6,a6,t6
    e883a7e8:	fc88af83          	lw	t6,-56(a7)
    e883a7ec:	4467c30b          	lrw	t1,a5,t1,2
    e883a7f0:	2681                	sext.w	a3,a3
    e883a7f2:	01f84833          	xor	a6,a6,t6
    e883a7f6:	5d053f8b          	extu	t6,a0,23,16
    e883a7fa:	100f8f93          	addi	t6,t6,256
    e883a7fe:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a802:	3c85350b          	extu	a0,a0,15,8
    e883a806:	20050513          	addi	a0,a0,512
    e883a80a:	01f84833          	xor	a6,a6,t6
    e883a80e:	3c8e3f8b          	extu	t6,t3,15,8
    e883a812:	0ffe7e13          	andi	t3,t3,255
    e883a816:	300e0e13          	addi	t3,t3,768
    e883a81a:	45c7ce0b          	lrw	t3,a5,t3,2
    e883a81e:	44a7c50b          	lrw	a0,a5,a0,2
    e883a822:	200f8f93          	addi	t6,t6,512
    e883a826:	01c74733          	xor	a4,a4,t3
    e883a82a:	fcc8ae03          	lw	t3,-52(a7)
    e883a82e:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a832:	01c74733          	xor	a4,a4,t3
    e883a836:	00674733          	xor	a4,a4,t1
    e883a83a:	8f29                	xor	a4,a4,a0
        round(inv_rnd,  b1, b0, rnd_key(-3));
    e883a83c:	0ff6f513          	andi	a0,a3,255
    e883a840:	018ed31b          	srliw	t1,t4,0x18
    e883a844:	30050513          	addi	a0,a0,768
    e883a848:	5467ce0b          	lurw	t3,a5,t1,2
    e883a84c:	44a7c50b          	lrw	a0,a5,a0,2
        round(inv_rnd,  b0, b1, rnd_key(-4));
    e883a850:	2701                	sext.w	a4,a4
    e883a852:	01f84833          	xor	a6,a6,t6
        round(inv_rnd,  b1, b0, rnd_key(-3));
    e883a856:	00ae4e33          	xor	t3,t3,a0
    e883a85a:	fd08a503          	lw	a0,-48(a7)
        round(inv_rnd,  b0, b1, rnd_key(-4));
    e883a85e:	2801                	sext.w	a6,a6
        round(inv_rnd,  b1, b0, rnd_key(-3));
    e883a860:	0ff87313          	andi	t1,a6,255
    e883a864:	00ae4e33          	xor	t3,t3,a0
    e883a868:	5d07350b          	extu	a0,a4,23,16
    e883a86c:	10050513          	addi	a0,a0,256
    e883a870:	44a7c50b          	lrw	a0,a5,a0,2
    e883a874:	30030313          	addi	t1,t1,768
    e883a878:	4467c30b          	lrw	t1,a5,t1,2
    e883a87c:	00ae4e33          	xor	t3,t3,a0
    e883a880:	3c88350b          	extu	a0,a6,15,8
    e883a884:	20050513          	addi	a0,a0,512
    e883a888:	44a7c50b          	lrw	a0,a5,a0,2
    e883a88c:	0ff77f93          	andi	t6,a4,255
    e883a890:	300f8f93          	addi	t6,t6,768
    e883a894:	00ae4e33          	xor	t3,t3,a0
    e883a898:	0186d51b          	srliw	a0,a3,0x18
    e883a89c:	54a7c50b          	lurw	a0,a5,a0,2
    e883a8a0:	2e01                	sext.w	t3,t3
    e883a8a2:	00654533          	xor	a0,a0,t1
    e883a8a6:	fd48a303          	lw	t1,-44(a7)
    e883a8aa:	00654533          	xor	a0,a0,t1
    e883a8ae:	5d0eb30b          	extu	t1,t4,23,16
    e883a8b2:	10030313          	addi	t1,t1,256
    e883a8b6:	4467c30b          	lrw	t1,a5,t1,2
    e883a8ba:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a8be:	00654533          	xor	a0,a0,t1
    e883a8c2:	3c87330b          	extu	t1,a4,15,8
    e883a8c6:	20030313          	addi	t1,t1,512
    e883a8ca:	4467c30b          	lrw	t1,a5,t1,2
    e883a8ce:	0187571b          	srliw	a4,a4,0x18
    e883a8d2:	54e7c70b          	lurw	a4,a5,a4,2
    e883a8d6:	00654533          	xor	a0,a0,t1
    e883a8da:	0188531b          	srliw	t1,a6,0x18
    e883a8de:	5467c30b          	lurw	t1,a5,t1,2
    e883a8e2:	5d08380b          	extu	a6,a6,23,16
    e883a8e6:	10080813          	addi	a6,a6,256
    e883a8ea:	01f34333          	xor	t1,t1,t6
    e883a8ee:	fd88af83          	lw	t6,-40(a7)
    e883a8f2:	4507c80b          	lrw	a6,a5,a6,2
    e883a8f6:	2501                	sext.w	a0,a0
    e883a8f8:	01f34333          	xor	t1,t1,t6
    e883a8fc:	5d06bf8b          	extu	t6,a3,23,16
    e883a900:	100f8f93          	addi	t6,t6,256
    e883a904:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a908:	3c86b68b          	extu	a3,a3,15,8
    e883a90c:	20068693          	addi	a3,a3,512
    e883a910:	01f34333          	xor	t1,t1,t6
    e883a914:	3c8ebf8b          	extu	t6,t4,15,8
    e883a918:	0ffefe93          	andi	t4,t4,255
    e883a91c:	300e8e93          	addi	t4,t4,768
    e883a920:	45d7ce8b          	lrw	t4,a5,t4,2
    e883a924:	44d7c68b          	lrw	a3,a5,a3,2
    e883a928:	200f8f93          	addi	t6,t6,512
    e883a92c:	01d74733          	xor	a4,a4,t4
    e883a930:	fdc8ae83          	lw	t4,-36(a7)
    e883a934:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a938:	01d74733          	xor	a4,a4,t4
    e883a93c:	01074733          	xor	a4,a4,a6
    e883a940:	8f35                	xor	a4,a4,a3
        round(inv_rnd,  b0, b1, rnd_key(-2));
    e883a942:	0ff57693          	andi	a3,a0,255
    e883a946:	018e581b          	srliw	a6,t3,0x18
    e883a94a:	30068693          	addi	a3,a3,768
    e883a94e:	5507ce8b          	lurw	t4,a5,a6,2
    e883a952:	44d7c68b          	lrw	a3,a5,a3,2
        round(inv_rnd,  b1, b0, rnd_key(-3));
    e883a956:	2701                	sext.w	a4,a4
    e883a958:	01f34333          	xor	t1,t1,t6
        round(inv_rnd,  b0, b1, rnd_key(-2));
    e883a95c:	00deceb3          	xor	t4,t4,a3
    e883a960:	fe08a683          	lw	a3,-32(a7)
        round(inv_rnd,  b1, b0, rnd_key(-3));
    e883a964:	2301                	sext.w	t1,t1
        round(inv_rnd,  b0, b1, rnd_key(-2));
    e883a966:	0ff37813          	andi	a6,t1,255
    e883a96a:	00deceb3          	xor	t4,t4,a3
    e883a96e:	5d07368b          	extu	a3,a4,23,16
    e883a972:	10068693          	addi	a3,a3,256
    e883a976:	44d7c68b          	lrw	a3,a5,a3,2
    e883a97a:	30080813          	addi	a6,a6,768
    e883a97e:	4507c80b          	lrw	a6,a5,a6,2
    e883a982:	00deceb3          	xor	t4,t4,a3
    e883a986:	3c83368b          	extu	a3,t1,15,8
    e883a98a:	20068693          	addi	a3,a3,512
    e883a98e:	44d7c68b          	lrw	a3,a5,a3,2
    e883a992:	0ff77f93          	andi	t6,a4,255
    e883a996:	300f8f93          	addi	t6,t6,768
    e883a99a:	00deceb3          	xor	t4,t4,a3
    e883a99e:	0185569b          	srliw	a3,a0,0x18
    e883a9a2:	54d7c68b          	lurw	a3,a5,a3,2
    e883a9a6:	45f7cf8b          	lrw	t6,a5,t6,2
    e883a9aa:	2e81                	sext.w	t4,t4
    e883a9ac:	0106c6b3          	xor	a3,a3,a6
    e883a9b0:	fe48a803          	lw	a6,-28(a7)
    e883a9b4:	0106c6b3          	xor	a3,a3,a6
    e883a9b8:	5d0e380b          	extu	a6,t3,23,16
    e883a9bc:	10080813          	addi	a6,a6,256
    e883a9c0:	4507c80b          	lrw	a6,a5,a6,2
    e883a9c4:	0106c6b3          	xor	a3,a3,a6
    e883a9c8:	3c87380b          	extu	a6,a4,15,8
    e883a9cc:	20080813          	addi	a6,a6,512
    e883a9d0:	4507c80b          	lrw	a6,a5,a6,2
    e883a9d4:	0187571b          	srliw	a4,a4,0x18
    e883a9d8:	54e7c70b          	lurw	a4,a5,a4,2
    e883a9dc:	0106c6b3          	xor	a3,a3,a6
    e883a9e0:	0183581b          	srliw	a6,t1,0x18
    e883a9e4:	5507c80b          	lurw	a6,a5,a6,2
    e883a9e8:	5d03330b          	extu	t1,t1,23,16
    e883a9ec:	10030313          	addi	t1,t1,256
    e883a9f0:	01f84833          	xor	a6,a6,t6
    e883a9f4:	fe88af83          	lw	t6,-24(a7)
    e883a9f8:	4467c30b          	lrw	t1,a5,t1,2
    e883a9fc:	2681                	sext.w	a3,a3
    e883a9fe:	01f84833          	xor	a6,a6,t6
    e883aa02:	5d053f8b          	extu	t6,a0,23,16
    e883aa06:	100f8f93          	addi	t6,t6,256
    e883aa0a:	45f7cf8b          	lrw	t6,a5,t6,2
    e883aa0e:	3c85350b          	extu	a0,a0,15,8
    e883aa12:	20050513          	addi	a0,a0,512
    e883aa16:	01f84833          	xor	a6,a6,t6
    e883aa1a:	3c8e3f8b          	extu	t6,t3,15,8
    e883aa1e:	0ffe7e13          	andi	t3,t3,255
    e883aa22:	300e0e13          	addi	t3,t3,768
    e883aa26:	45c7ce0b          	lrw	t3,a5,t3,2
    e883aa2a:	44a7c50b          	lrw	a0,a5,a0,2
    e883aa2e:	200f8f93          	addi	t6,t6,512
    e883aa32:	01c74733          	xor	a4,a4,t3
    e883aa36:	fec8ae03          	lw	t3,-20(a7)
    e883aa3a:	45f7cf8b          	lrw	t6,a5,t6,2
    e883aa3e:	01c74733          	xor	a4,a4,t3
    e883aa42:	00674733          	xor	a4,a4,t1
        round(inv_rnd,  b1, b0, rnd_key(-1));
    e883aa46:	0ff6f313          	andi	t1,a3,255
        round(inv_rnd,  b0, b1, rnd_key(-2));
    e883aa4a:	8f29                	xor	a4,a4,a0
        round(inv_rnd,  b1, b0, rnd_key(-1));
    e883aa4c:	30030313          	addi	t1,t1,768
    e883aa50:	018ed51b          	srliw	a0,t4,0x18
    e883aa54:	54a7c50b          	lurw	a0,a5,a0,2
    e883aa58:	4467c30b          	lrw	t1,a5,t1,2
        round(inv_rnd,  b0, b1, rnd_key(-2));
    e883aa5c:	2701                	sext.w	a4,a4
    e883aa5e:	01f84833          	xor	a6,a6,t6
        round(inv_rnd,  b1, b0, rnd_key(-1));
    e883aa62:	00654533          	xor	a0,a0,t1
    e883aa66:	ff08a303          	lw	t1,-16(a7)
        round(inv_rnd,  b0, b1, rnd_key(-2));
    e883aa6a:	2801                	sext.w	a6,a6
        round(inv_rnd,  b1, b0, rnd_key(-1));
    e883aa6c:	0ff87e13          	andi	t3,a6,255
    e883aa70:	00654533          	xor	a0,a0,t1
    e883aa74:	5d07330b          	extu	t1,a4,23,16
    e883aa78:	10030313          	addi	t1,t1,256
    e883aa7c:	4467c30b          	lrw	t1,a5,t1,2
    e883aa80:	300e0e13          	addi	t3,t3,768
    e883aa84:	45c7ce0b          	lrw	t3,a5,t3,2
    e883aa88:	00654533          	xor	a0,a0,t1
    e883aa8c:	3c88330b          	extu	t1,a6,15,8
    e883aa90:	20030313          	addi	t1,t1,512
    e883aa94:	4467c30b          	lrw	t1,a5,t1,2
    e883aa98:	0ff77f93          	andi	t6,a4,255
    e883aa9c:	300f8f93          	addi	t6,t6,768
    e883aaa0:	00654533          	xor	a0,a0,t1
    e883aaa4:	0186d31b          	srliw	t1,a3,0x18
    e883aaa8:	5467c30b          	lurw	t1,a5,t1,2
    e883aaac:	45f7cf8b          	lrw	t6,a5,t6,2
    e883aab0:	2501                	sext.w	a0,a0
    e883aab2:	01c34333          	xor	t1,t1,t3
    e883aab6:	ff48ae03          	lw	t3,-12(a7)
    e883aaba:	01c34333          	xor	t1,t1,t3
    e883aabe:	5d0ebe0b          	extu	t3,t4,23,16
    e883aac2:	100e0e13          	addi	t3,t3,256
    e883aac6:	45c7ce0b          	lrw	t3,a5,t3,2
    e883aaca:	01c34333          	xor	t1,t1,t3
    e883aace:	3c873e0b          	extu	t3,a4,15,8
    e883aad2:	200e0e13          	addi	t3,t3,512
    e883aad6:	45c7ce0b          	lrw	t3,a5,t3,2
    e883aada:	0187571b          	srliw	a4,a4,0x18
    e883aade:	54e7c70b          	lurw	a4,a5,a4,2
    e883aae2:	01c34333          	xor	t1,t1,t3
    e883aae6:	01885e1b          	srliw	t3,a6,0x18
    e883aaea:	55c7ce0b          	lurw	t3,a5,t3,2
    e883aaee:	5d08380b          	extu	a6,a6,23,16
    e883aaf2:	10080813          	addi	a6,a6,256
    e883aaf6:	01fe4e33          	xor	t3,t3,t6
    e883aafa:	ff88af83          	lw	t6,-8(a7)
    e883aafe:	4507c80b          	lrw	a6,a5,a6,2
    e883ab02:	2301                	sext.w	t1,t1
    e883ab04:	01fe4e33          	xor	t3,t3,t6
    e883ab08:	5d06bf8b          	extu	t6,a3,23,16
    e883ab0c:	100f8f93          	addi	t6,t6,256
    e883ab10:	45f7cf8b          	lrw	t6,a5,t6,2
    e883ab14:	3c86b68b          	extu	a3,a3,15,8
    e883ab18:	20068693          	addi	a3,a3,512
    e883ab1c:	01fe4e33          	xor	t3,t3,t6
    e883ab20:	3c8ebf8b          	extu	t6,t4,15,8
    e883ab24:	0ffefe93          	andi	t4,t4,255
    e883ab28:	300e8e93          	addi	t4,t4,768
    e883ab2c:	45d7ce8b          	lrw	t4,a5,t4,2
    e883ab30:	200f8f93          	addi	t6,t6,512
    e883ab34:	45f7cf8b          	lrw	t6,a5,t6,2
    e883ab38:	01d74733          	xor	a4,a4,t4
    e883ab3c:	ffc8ae83          	lw	t4,-4(a7)
    e883ab40:	44d7c78b          	lrw	a5,a5,a3,2
        round(inv_lrnd, b0, b1, rnd_key( 0));
    e883ab44:	0185569b          	srliw	a3,a0,0x18
        round(inv_rnd,  b1, b0, rnd_key(-1));
    e883ab48:	01d74733          	xor	a4,a4,t4
    e883ab4c:	01074733          	xor	a4,a4,a6
    e883ab50:	8fb9                	xor	a5,a5,a4
        round(inv_lrnd, b0, b1, rnd_key( 0));
    e883ab52:	0ff37713          	andi	a4,t1,255
    e883ab56:	00078e97          	auipc	t4,0x78
    e883ab5a:	23ae8e93          	addi	t4,t4,570 # e88b2d90 <t_il>
    e883ab5e:	30070713          	addi	a4,a4,768
    e883ab62:	54dec80b          	lurw	a6,t4,a3,2
    e883ab66:	44eec70b          	lrw	a4,t4,a4,2
        round(inv_rnd,  b1, b0, rnd_key(-1));
    e883ab6a:	2781                	sext.w	a5,a5
    e883ab6c:	01fe4e33          	xor	t3,t3,t6
        round(inv_lrnd, b0, b1, rnd_key( 0));
    e883ab70:	00e84833          	xor	a6,a6,a4
    e883ab74:	45e6470b          	lrw	a4,a2,t5,2
        round(inv_rnd,  b1, b0, rnd_key(-1));
    e883ab78:	2e01                	sext.w	t3,t3
        round(inv_lrnd, b0, b1, rnd_key( 0));
    e883ab7a:	0183569b          	srliw	a3,t1,0x18
    e883ab7e:	00e84833          	xor	a6,a6,a4
    e883ab82:	5d07b70b          	extu	a4,a5,23,16
    e883ab86:	10070713          	addi	a4,a4,256
    e883ab8a:	44eec70b          	lrw	a4,t4,a4,2
    e883ab8e:	54dec68b          	lurw	a3,t4,a3,2
    e883ab92:	0ff7f613          	andi	a2,a5,255
    e883ab96:	00e84833          	xor	a6,a6,a4
    e883ab9a:	3c8e370b          	extu	a4,t3,15,8
    e883ab9e:	20070713          	addi	a4,a4,512
    e883aba2:	44eec70b          	lrw	a4,t4,a4,2
    e883aba6:	30060613          	addi	a2,a2,768
    e883abaa:	44cec60b          	lrw	a2,t4,a2,2
    e883abae:	00e84833          	xor	a6,a6,a4
    e883abb2:	0ffe7713          	andi	a4,t3,255
    e883abb6:	30070713          	addi	a4,a4,768
    e883abba:	44eec70b          	lrw	a4,t4,a4,2
    e883abbe:	2801                	sext.w	a6,a6
    e883abc0:	8eb9                	xor	a3,a3,a4
    e883abc2:	0048a703          	lw	a4,4(a7)
    e883abc6:	8eb9                	xor	a3,a3,a4
    e883abc8:	5d05370b          	extu	a4,a0,23,16
    e883abcc:	10070713          	addi	a4,a4,256
    e883abd0:	44eec70b          	lrw	a4,t4,a4,2
    e883abd4:	8eb9                	xor	a3,a3,a4
    e883abd6:	3c87b70b          	extu	a4,a5,15,8
    e883abda:	20070713          	addi	a4,a4,512
    e883abde:	44eec70b          	lrw	a4,t4,a4,2
    e883abe2:	0187d79b          	srliw	a5,a5,0x18
    e883abe6:	8eb9                	xor	a3,a3,a4
    e883abe8:	018e571b          	srliw	a4,t3,0x18
    e883abec:	54eec70b          	lurw	a4,t4,a4,2
    e883abf0:	5d0e3e0b          	extu	t3,t3,23,16
    e883abf4:	100e0e13          	addi	t3,t3,256
    e883abf8:	8f31                	xor	a4,a4,a2
    e883abfa:	0088a603          	lw	a2,8(a7)
    e883abfe:	2681                	sext.w	a3,a3
    e883ac00:	8f31                	xor	a4,a4,a2
    e883ac02:	5d03360b          	extu	a2,t1,23,16
    e883ac06:	10060613          	addi	a2,a2,256
    e883ac0a:	44cec60b          	lrw	a2,t4,a2,2
    e883ac0e:	3c83330b          	extu	t1,t1,15,8
    e883ac12:	20030313          	addi	t1,t1,512
    e883ac16:	8f31                	xor	a4,a4,a2
    e883ac18:	3c85360b          	extu	a2,a0,15,8
    e883ac1c:	20060613          	addi	a2,a2,512
    e883ac20:	44cec60b          	lrw	a2,t4,a2,2
    e883ac24:	0ff57513          	andi	a0,a0,255
    e883ac28:	8f31                	xor	a4,a4,a2
    e883ac2a:	30050613          	addi	a2,a0,768
    e883ac2e:	54fec50b          	lurw	a0,t4,a5,2
    e883ac32:	44cec78b          	lrw	a5,t4,a2,2
    e883ac36:	2701                	sext.w	a4,a4
    e883ac38:	8d3d                	xor	a0,a0,a5
    e883ac3a:	00c8a783          	lw	a5,12(a7)
    e883ac3e:	8d3d                	xor	a0,a0,a5
    e883ac40:	45cec78b          	lrw	a5,t4,t3,2
    e883ac44:	8d3d                	xor	a0,a0,a5
    e883ac46:	446ec78b          	lrw	a5,t4,t1,2
    e883ac4a:	8d3d                	xor	a0,a0,a5
    e883ac4c:	2501                	sext.w	a0,a0
        kp = rnd_key(1);
        round(inv_lrnd, b0, b1, kp);
        }
#endif

    state_out(out, b0);
    e883ac4e:	9007170b          	revw	a4,a4
    e883ac52:	9008180b          	revw	a6,a6
    e883ac56:	9006968b          	revw	a3,a3
    e883ac5a:	9005150b          	revw	a0,a0
    e883ac5e:	c598                	sw	a4,8(a1)
    e883ac60:	0105a023          	sw	a6,0(a1)
    e883ac64:	c1d4                	sw	a3,4(a1)
    e883ac66:	c5c8                	sw	a0,12(a1)
    return EXIT_SUCCESS;
    e883ac68:	4701                	li	a4,0
}
    e883ac6a:	853a                	mv	a0,a4
    e883ac6c:	8082                	ret
        round(inv_rnd,  b1, b0, rnd_key(-13));
    e883ac6e:	0ff6f313          	andi	t1,a3,255
    e883ac72:	0007a797          	auipc	a5,0x7a
    e883ac76:	11e78793          	addi	a5,a5,286 # e88b4d90 <t_in>
    e883ac7a:	01885e1b          	srliw	t3,a6,0x18
    e883ac7e:	30030313          	addi	t1,t1,768
    e883ac82:	55c7ce8b          	lurw	t4,a5,t3,2
    e883ac86:	4467c30b          	lrw	t1,a5,t1,2
    e883ac8a:	0ff77e13          	andi	t3,a4,255
    e883ac8e:	300e0e13          	addi	t3,t3,768
    e883ac92:	006eceb3          	xor	t4,t4,t1
    e883ac96:	f308a303          	lw	t1,-208(a7)
    e883ac9a:	45c7ce0b          	lrw	t3,a5,t3,2
    e883ac9e:	0ff57f93          	andi	t6,a0,255
    e883aca2:	006eceb3          	xor	t4,t4,t1
    e883aca6:	5d05330b          	extu	t1,a0,23,16
    e883acaa:	10030313          	addi	t1,t1,256
    e883acae:	4467c30b          	lrw	t1,a5,t1,2
    e883acb2:	300f8f93          	addi	t6,t6,768
    e883acb6:	45f7cf8b          	lrw	t6,a5,t6,2
    e883acba:	006eceb3          	xor	t4,t4,t1
    e883acbe:	3c87330b          	extu	t1,a4,15,8
    e883acc2:	20030313          	addi	t1,t1,512
    e883acc6:	4467c30b          	lrw	t1,a5,t1,2
    e883acca:	006eceb3          	xor	t4,t4,t1
    e883acce:	0186d31b          	srliw	t1,a3,0x18
    e883acd2:	5467c30b          	lurw	t1,a5,t1,2
    e883acd6:	2e81                	sext.w	t4,t4
    e883acd8:	01c34333          	xor	t1,t1,t3
    e883acdc:	f348ae03          	lw	t3,-204(a7)
    e883ace0:	01c34333          	xor	t1,t1,t3
    e883ace4:	5d083e0b          	extu	t3,a6,23,16
    e883ace8:	100e0e13          	addi	t3,t3,256
    e883acec:	45c7ce0b          	lrw	t3,a5,t3,2
    e883acf0:	01c34333          	xor	t1,t1,t3
    e883acf4:	3c853e0b          	extu	t3,a0,15,8
    e883acf8:	200e0e13          	addi	t3,t3,512
    e883acfc:	45c7ce0b          	lrw	t3,a5,t3,2
    e883ad00:	0185551b          	srliw	a0,a0,0x18
    e883ad04:	54a7c50b          	lurw	a0,a5,a0,2
    e883ad08:	01c34333          	xor	t1,t1,t3
    e883ad0c:	01875e1b          	srliw	t3,a4,0x18
    e883ad10:	55c7ce0b          	lurw	t3,a5,t3,2
    e883ad14:	5d07370b          	extu	a4,a4,23,16
    e883ad18:	10070713          	addi	a4,a4,256
    e883ad1c:	01fe4e33          	xor	t3,t3,t6
    e883ad20:	f388af83          	lw	t6,-200(a7)
    e883ad24:	44e7c70b          	lrw	a4,a5,a4,2
    e883ad28:	2301                	sext.w	t1,t1
    e883ad2a:	01fe4e33          	xor	t3,t3,t6
    e883ad2e:	5d06bf8b          	extu	t6,a3,23,16
    e883ad32:	100f8f93          	addi	t6,t6,256
    e883ad36:	45f7cf8b          	lrw	t6,a5,t6,2
    e883ad3a:	3c86b68b          	extu	a3,a3,15,8
    e883ad3e:	20068693          	addi	a3,a3,512
    e883ad42:	01fe4e33          	xor	t3,t3,t6
    e883ad46:	3c883f8b          	extu	t6,a6,15,8
    e883ad4a:	0ff87813          	andi	a6,a6,255
    e883ad4e:	30080813          	addi	a6,a6,768
    e883ad52:	4507c80b          	lrw	a6,a5,a6,2
    e883ad56:	200f8f93          	addi	t6,t6,512
    e883ad5a:	45f7cf8b          	lrw	t6,a5,t6,2
    e883ad5e:	01054533          	xor	a0,a0,a6
    e883ad62:	f3c8a803          	lw	a6,-196(a7)
    e883ad66:	01fe4e33          	xor	t3,t3,t6
    e883ad6a:	2e01                	sext.w	t3,t3
    e883ad6c:	01054533          	xor	a0,a0,a6
    e883ad70:	8d39                	xor	a0,a0,a4
    e883ad72:	44d7c70b          	lrw	a4,a5,a3,2
        round(inv_rnd,  b0, b1, rnd_key(-12));
    e883ad76:	018ed69b          	srliw	a3,t4,0x18
    e883ad7a:	54d7c80b          	lurw	a6,a5,a3,2
        round(inv_rnd,  b1, b0, rnd_key(-13));
    e883ad7e:	8d39                	xor	a0,a0,a4
        round(inv_rnd,  b0, b1, rnd_key(-12));
    e883ad80:	0ff37713          	andi	a4,t1,255
    e883ad84:	30070713          	addi	a4,a4,768
    e883ad88:	44e7c70b          	lrw	a4,a5,a4,2
        round(inv_rnd,  b1, b0, rnd_key(-13));
    e883ad8c:	2501                	sext.w	a0,a0
        round(inv_rnd,  b0, b1, rnd_key(-12));
    e883ad8e:	0183569b          	srliw	a3,t1,0x18
    e883ad92:	00e84833          	xor	a6,a6,a4
    e883ad96:	f408a703          	lw	a4,-192(a7)
    e883ad9a:	54d7c68b          	lurw	a3,a5,a3,2
    e883ad9e:	0ff57f93          	andi	t6,a0,255
    e883ada2:	00e84833          	xor	a6,a6,a4
    e883ada6:	5d05370b          	extu	a4,a0,23,16
    e883adaa:	10070713          	addi	a4,a4,256
    e883adae:	44e7c70b          	lrw	a4,a5,a4,2
    e883adb2:	300f8f93          	addi	t6,t6,768
    e883adb6:	45f7cf8b          	lrw	t6,a5,t6,2
    e883adba:	00e84833          	xor	a6,a6,a4
    e883adbe:	3c8e370b          	extu	a4,t3,15,8
    e883adc2:	20070713          	addi	a4,a4,512
    e883adc6:	44e7c70b          	lrw	a4,a5,a4,2
    e883adca:	00e84833          	xor	a6,a6,a4
    e883adce:	0ffe7713          	andi	a4,t3,255
    e883add2:	30070713          	addi	a4,a4,768
    e883add6:	44e7c70b          	lrw	a4,a5,a4,2
    e883adda:	2801                	sext.w	a6,a6
    e883addc:	8eb9                	xor	a3,a3,a4
    e883adde:	f448a703          	lw	a4,-188(a7)
    e883ade2:	8eb9                	xor	a3,a3,a4
    e883ade4:	5d0eb70b          	extu	a4,t4,23,16
    e883ade8:	10070713          	addi	a4,a4,256
    e883adec:	44e7c70b          	lrw	a4,a5,a4,2
    e883adf0:	8eb9                	xor	a3,a3,a4
    e883adf2:	3c85370b          	extu	a4,a0,15,8
    e883adf6:	20070713          	addi	a4,a4,512
    e883adfa:	44e7c70b          	lrw	a4,a5,a4,2
    e883adfe:	0185551b          	srliw	a0,a0,0x18
    e883ae02:	8eb9                	xor	a3,a3,a4
    e883ae04:	018e571b          	srliw	a4,t3,0x18
    e883ae08:	54e7c70b          	lurw	a4,a5,a4,2
    e883ae0c:	5d0e3e0b          	extu	t3,t3,23,16
    e883ae10:	100e0e13          	addi	t3,t3,256
    e883ae14:	01f74733          	xor	a4,a4,t6
    e883ae18:	f488af83          	lw	t6,-184(a7)
    e883ae1c:	54a7c50b          	lurw	a0,a5,a0,2
    e883ae20:	45c7ce0b          	lrw	t3,a5,t3,2
    e883ae24:	01f74733          	xor	a4,a4,t6
    e883ae28:	5d033f8b          	extu	t6,t1,23,16
    e883ae2c:	100f8f93          	addi	t6,t6,256
    e883ae30:	45f7cf8b          	lrw	t6,a5,t6,2
    e883ae34:	3c83330b          	extu	t1,t1,15,8
    e883ae38:	20030313          	addi	t1,t1,512
    e883ae3c:	01f74733          	xor	a4,a4,t6
    e883ae40:	3c8ebf8b          	extu	t6,t4,15,8
    e883ae44:	0ffefe93          	andi	t4,t4,255
    e883ae48:	300e8e93          	addi	t4,t4,768
    e883ae4c:	45d7ce8b          	lrw	t4,a5,t4,2
    e883ae50:	200f8f93          	addi	t6,t6,512
    e883ae54:	45f7cf8b          	lrw	t6,a5,t6,2
    e883ae58:	01d54533          	xor	a0,a0,t4
    e883ae5c:	f4c8ae83          	lw	t4,-180(a7)
    e883ae60:	4467c78b          	lrw	a5,a5,t1,2
    e883ae64:	01f74733          	xor	a4,a4,t6
    e883ae68:	01d54533          	xor	a0,a0,t4
    e883ae6c:	01c54533          	xor	a0,a0,t3
    e883ae70:	8d3d                	xor	a0,a0,a5
    e883ae72:	2681                	sext.w	a3,a3
    e883ae74:	2701                	sext.w	a4,a4
    e883ae76:	2501                	sext.w	a0,a0
        round(inv_rnd,  b1, b0, rnd_key(-11));
    e883ae78:	0ff6f313          	andi	t1,a3,255
    e883ae7c:	0007a797          	auipc	a5,0x7a
    e883ae80:	f1478793          	addi	a5,a5,-236 # e88b4d90 <t_in>
    e883ae84:	01885e1b          	srliw	t3,a6,0x18
    e883ae88:	30030313          	addi	t1,t1,768
    e883ae8c:	55c7ce8b          	lurw	t4,a5,t3,2
    e883ae90:	4467c30b          	lrw	t1,a5,t1,2
    e883ae94:	0ff77e13          	andi	t3,a4,255
    e883ae98:	300e0e13          	addi	t3,t3,768
    e883ae9c:	006eceb3          	xor	t4,t4,t1
    e883aea0:	f508a303          	lw	t1,-176(a7)
    e883aea4:	45c7ce0b          	lrw	t3,a5,t3,2
    e883aea8:	0ff57f93          	andi	t6,a0,255
    e883aeac:	006eceb3          	xor	t4,t4,t1
    e883aeb0:	5d05330b          	extu	t1,a0,23,16
    e883aeb4:	10030313          	addi	t1,t1,256
    e883aeb8:	4467c30b          	lrw	t1,a5,t1,2
    e883aebc:	300f8f93          	addi	t6,t6,768
    e883aec0:	45f7cf8b          	lrw	t6,a5,t6,2
    e883aec4:	006eceb3          	xor	t4,t4,t1
    e883aec8:	3c87330b          	extu	t1,a4,15,8
    e883aecc:	20030313          	addi	t1,t1,512
    e883aed0:	4467c30b          	lrw	t1,a5,t1,2
    e883aed4:	006eceb3          	xor	t4,t4,t1
    e883aed8:	0186d31b          	srliw	t1,a3,0x18
    e883aedc:	5467c30b          	lurw	t1,a5,t1,2
    e883aee0:	2e81                	sext.w	t4,t4
    e883aee2:	01c34333          	xor	t1,t1,t3
    e883aee6:	f548ae03          	lw	t3,-172(a7)
    e883aeea:	01c34333          	xor	t1,t1,t3
    e883aeee:	5d083e0b          	extu	t3,a6,23,16
    e883aef2:	100e0e13          	addi	t3,t3,256
    e883aef6:	45c7ce0b          	lrw	t3,a5,t3,2
    e883aefa:	01c34333          	xor	t1,t1,t3
    e883aefe:	3c853e0b          	extu	t3,a0,15,8
    e883af02:	200e0e13          	addi	t3,t3,512
    e883af06:	45c7ce0b          	lrw	t3,a5,t3,2
    e883af0a:	0185551b          	srliw	a0,a0,0x18
    e883af0e:	54a7c50b          	lurw	a0,a5,a0,2
    e883af12:	01c34333          	xor	t1,t1,t3
    e883af16:	01875e1b          	srliw	t3,a4,0x18
    e883af1a:	55c7ce0b          	lurw	t3,a5,t3,2
    e883af1e:	5d07370b          	extu	a4,a4,23,16
    e883af22:	10070713          	addi	a4,a4,256
    e883af26:	01fe4e33          	xor	t3,t3,t6
    e883af2a:	f588af83          	lw	t6,-168(a7)
    e883af2e:	44e7c70b          	lrw	a4,a5,a4,2
    e883af32:	2301                	sext.w	t1,t1
    e883af34:	01fe4e33          	xor	t3,t3,t6
    e883af38:	5d06bf8b          	extu	t6,a3,23,16
    e883af3c:	100f8f93          	addi	t6,t6,256
    e883af40:	45f7cf8b          	lrw	t6,a5,t6,2
    e883af44:	3c86b68b          	extu	a3,a3,15,8
    e883af48:	20068693          	addi	a3,a3,512
    e883af4c:	01fe4e33          	xor	t3,t3,t6
    e883af50:	3c883f8b          	extu	t6,a6,15,8
    e883af54:	0ff87813          	andi	a6,a6,255
    e883af58:	30080813          	addi	a6,a6,768
    e883af5c:	4507c80b          	lrw	a6,a5,a6,2
    e883af60:	200f8f93          	addi	t6,t6,512
    e883af64:	45f7cf8b          	lrw	t6,a5,t6,2
    e883af68:	01054533          	xor	a0,a0,a6
    e883af6c:	f5c8a803          	lw	a6,-164(a7)
    e883af70:	01fe4e33          	xor	t3,t3,t6
    e883af74:	2e01                	sext.w	t3,t3
    e883af76:	01054533          	xor	a0,a0,a6
    e883af7a:	8d39                	xor	a0,a0,a4
    e883af7c:	44d7c70b          	lrw	a4,a5,a3,2
        round(inv_rnd,  b0, b1, rnd_key(-10));
    e883af80:	018ed69b          	srliw	a3,t4,0x18
    e883af84:	54d7c80b          	lurw	a6,a5,a3,2
        round(inv_rnd,  b1, b0, rnd_key(-11));
    e883af88:	8d39                	xor	a0,a0,a4
        round(inv_rnd,  b0, b1, rnd_key(-10));
    e883af8a:	0ff37713          	andi	a4,t1,255
    e883af8e:	30070713          	addi	a4,a4,768
    e883af92:	44e7c70b          	lrw	a4,a5,a4,2
        round(inv_rnd,  b1, b0, rnd_key(-11));
    e883af96:	2501                	sext.w	a0,a0
        round(inv_rnd,  b0, b1, rnd_key(-10));
    e883af98:	0183569b          	srliw	a3,t1,0x18
    e883af9c:	00e84833          	xor	a6,a6,a4
    e883afa0:	f608a703          	lw	a4,-160(a7)
    e883afa4:	54d7c68b          	lurw	a3,a5,a3,2
    e883afa8:	0ff57f93          	andi	t6,a0,255
    e883afac:	00e84833          	xor	a6,a6,a4
    e883afb0:	5d05370b          	extu	a4,a0,23,16
    e883afb4:	10070713          	addi	a4,a4,256
    e883afb8:	44e7c70b          	lrw	a4,a5,a4,2
    e883afbc:	300f8f93          	addi	t6,t6,768
    e883afc0:	45f7cf8b          	lrw	t6,a5,t6,2
    e883afc4:	00e84833          	xor	a6,a6,a4
    e883afc8:	3c8e370b          	extu	a4,t3,15,8
    e883afcc:	20070713          	addi	a4,a4,512
    e883afd0:	44e7c70b          	lrw	a4,a5,a4,2
    e883afd4:	00e84833          	xor	a6,a6,a4
    e883afd8:	0ffe7713          	andi	a4,t3,255
    e883afdc:	30070713          	addi	a4,a4,768
    e883afe0:	44e7c70b          	lrw	a4,a5,a4,2
    e883afe4:	2801                	sext.w	a6,a6
    e883afe6:	8eb9                	xor	a3,a3,a4
    e883afe8:	f648a703          	lw	a4,-156(a7)
    e883afec:	8eb9                	xor	a3,a3,a4
    e883afee:	5d0eb70b          	extu	a4,t4,23,16
    e883aff2:	10070713          	addi	a4,a4,256
    e883aff6:	44e7c70b          	lrw	a4,a5,a4,2
    e883affa:	8eb9                	xor	a3,a3,a4
    e883affc:	3c85370b          	extu	a4,a0,15,8
    e883b000:	20070713          	addi	a4,a4,512
    e883b004:	44e7c70b          	lrw	a4,a5,a4,2
    e883b008:	0185551b          	srliw	a0,a0,0x18
    e883b00c:	8eb9                	xor	a3,a3,a4
    e883b00e:	018e571b          	srliw	a4,t3,0x18
    e883b012:	54e7c70b          	lurw	a4,a5,a4,2
    e883b016:	5d0e3e0b          	extu	t3,t3,23,16
    e883b01a:	100e0e13          	addi	t3,t3,256
    e883b01e:	01f74733          	xor	a4,a4,t6
    e883b022:	f688af83          	lw	t6,-152(a7)
    e883b026:	54a7c50b          	lurw	a0,a5,a0,2
    e883b02a:	45c7ce0b          	lrw	t3,a5,t3,2
    e883b02e:	01f74733          	xor	a4,a4,t6
    e883b032:	5d033f8b          	extu	t6,t1,23,16
    e883b036:	100f8f93          	addi	t6,t6,256
    e883b03a:	45f7cf8b          	lrw	t6,a5,t6,2
    e883b03e:	3c83330b          	extu	t1,t1,15,8
    e883b042:	20030313          	addi	t1,t1,512
    e883b046:	01f74733          	xor	a4,a4,t6
    e883b04a:	3c8ebf8b          	extu	t6,t4,15,8
    e883b04e:	0ffefe93          	andi	t4,t4,255
    e883b052:	300e8e93          	addi	t4,t4,768
    e883b056:	45d7ce8b          	lrw	t4,a5,t4,2
    e883b05a:	200f8f93          	addi	t6,t6,512
    e883b05e:	45f7cf8b          	lrw	t6,a5,t6,2
    e883b062:	01d54533          	xor	a0,a0,t4
    e883b066:	f6c8ae83          	lw	t4,-148(a7)
    e883b06a:	4467c78b          	lrw	a5,a5,t1,2
    e883b06e:	01f74733          	xor	a4,a4,t6
    e883b072:	01d54533          	xor	a0,a0,t4
    e883b076:	01c54533          	xor	a0,a0,t3
    e883b07a:	8d3d                	xor	a0,a0,a5
    e883b07c:	2681                	sext.w	a3,a3
    e883b07e:	2701                	sext.w	a4,a4
    e883b080:	2501                	sext.w	a0,a0
    e883b082:	9a6ff06f          	j	e883a228 <gladman_aes_decrypt+0x70>

00000000e883b086 <aes_encrypt_key128>:
}

AES_RETURN aes_encrypt_key128(const unsigned char *key, aes_encrypt_ctx cx[1])
{   uint_32t    ss[4];

    cx->ks[0] = ss[0] = word_in(key, 0);
    e883b086:	411c                	lw	a5,0(a0)
    cx->ks[1] = ss[1] = word_in(key, 1);
    cx->ks[2] = ss[2] = word_in(key, 2);
    cx->ks[3] = ss[3] = word_in(key, 3);

#ifdef ENC_KS_UNROLL
    ke4(cx->ks, 0);  ke4(cx->ks, 1);
    e883b088:	0007b617          	auipc	a2,0x7b
    e883b08c:	d0860613          	addi	a2,a2,-760 # e88b5d90 <t_rc>
    e883b090:	00076717          	auipc	a4,0x76
    e883b094:	d0070713          	addi	a4,a4,-768 # e88b0d90 <t_fl>
    e883b098:	90079e8b          	revw	t4,a5
    cx->ks[0] = ss[0] = word_in(key, 0);
    e883b09c:	01d5a023          	sw	t4,0(a1)
    cx->ks[1] = ss[1] = word_in(key, 1);
    e883b0a0:	00452883          	lw	a7,4(a0)
    ke4(cx->ks, 0);  ke4(cx->ks, 1);
    e883b0a4:	421c                	lw	a5,0(a2)
    e883b0a6:	9008988b          	revw	a7,a7
    cx->ks[1] = ss[1] = word_in(key, 1);
    e883b0aa:	0115a223          	sw	a7,4(a1)
    cx->ks[2] = ss[2] = word_in(key, 2);
    e883b0ae:	00852303          	lw	t1,8(a0)
    ke4(cx->ks, 0);  ke4(cx->ks, 1);
    e883b0b2:	01d7c7b3          	xor	a5,a5,t4
    e883b0b6:	90031e0b          	revw	t3,t1
    cx->ks[2] = ss[2] = word_in(key, 2);
    e883b0ba:	01c5a423          	sw	t3,8(a1)
    cx->ks[3] = ss[3] = word_in(key, 3);
    e883b0be:	4554                	lw	a3,12(a0)
    e883b0c0:	9006980b          	revw	a6,a3
    ke4(cx->ks, 0);  ke4(cx->ks, 1);
    e883b0c4:	0ff87693          	andi	a3,a6,255
    e883b0c8:	20068693          	addi	a3,a3,512
    e883b0cc:	44d7468b          	lrw	a3,a4,a3,2
    cx->ks[3] = ss[3] = word_in(key, 3);
    e883b0d0:	0105a623          	sw	a6,12(a1)
    ke4(cx->ks, 0);  ke4(cx->ks, 1);
    e883b0d4:	8fb5                	xor	a5,a5,a3
    e883b0d6:	7d88368b          	extu	a3,a6,31,24
    e883b0da:	30068693          	addi	a3,a3,768
    e883b0de:	44d7468b          	lrw	a3,a4,a3,2
    e883b0e2:	8fb5                	xor	a5,a5,a3
    e883b0e4:	5d08368b          	extu	a3,a6,23,16
    e883b0e8:	54d7468b          	lurw	a3,a4,a3,2
    e883b0ec:	8fb5                	xor	a5,a5,a3
    e883b0ee:	3c88368b          	extu	a3,a6,15,8
    e883b0f2:	10068693          	addi	a3,a3,256
    e883b0f6:	44d7468b          	lrw	a3,a4,a3,2
    e883b0fa:	8fb5                	xor	a5,a5,a3
    e883b0fc:	2781                	sext.w	a5,a5
    e883b0fe:	0117c333          	xor	t1,a5,a7
    e883b102:	2301                	sext.w	t1,t1
    e883b104:	0065aa23          	sw	t1,20(a1)
    e883b108:	01c34333          	xor	t1,t1,t3
    e883b10c:	2301                	sext.w	t1,t1
    e883b10e:	010346b3          	xor	a3,t1,a6
    e883b112:	2681                	sext.w	a3,a3
    e883b114:	0ff6f513          	andi	a0,a3,255
    e883b118:	7d86be0b          	extu	t3,a3,31,24
    e883b11c:	20050513          	addi	a0,a0,512
    e883b120:	300e0e13          	addi	t3,t3,768
    e883b124:	45c74e0b          	lrw	t3,a4,t3,2
    e883b128:	44a7450b          	lrw	a0,a4,a0,2
    e883b12c:	cdd4                	sw	a3,28(a1)
    e883b12e:	c99c                	sw	a5,16(a1)
    e883b130:	01c54533          	xor	a0,a0,t3
    e883b134:	00462e03          	lw	t3,4(a2)
    e883b138:	0065ac23          	sw	t1,24(a1)
    e883b13c:	01c54533          	xor	a0,a0,t3
    e883b140:	5d06be0b          	extu	t3,a3,23,16
    e883b144:	3c86b68b          	extu	a3,a3,15,8
    e883b148:	55c74e0b          	lurw	t3,a4,t3,2
    e883b14c:	10068693          	addi	a3,a3,256
    e883b150:	44d7468b          	lrw	a3,a4,a3,2
    e883b154:	01c54533          	xor	a0,a0,t3
    ke4(cx->ks, 2);  ke4(cx->ks, 3);
    e883b158:	00862e03          	lw	t3,8(a2)
    ke4(cx->ks, 0);  ke4(cx->ks, 1);
    e883b15c:	8d35                	xor	a0,a0,a3
    e883b15e:	2501                	sext.w	a0,a0
    e883b160:	8fa9                	xor	a5,a5,a0
    e883b162:	01154533          	xor	a0,a0,a7
    e883b166:	0005089b          	sext.w	a7,a0
    e883b16a:	011346b3          	xor	a3,t1,a7
    e883b16e:	d594                	sw	a3,40(a1)
    e883b170:	0108c6b3          	xor	a3,a7,a6
    e883b174:	2681                	sext.w	a3,a3
    ke4(cx->ks, 2);  ke4(cx->ks, 3);
    e883b176:	0ff6f513          	andi	a0,a3,255
    e883b17a:	20050513          	addi	a0,a0,512
    e883b17e:	44a7450b          	lrw	a0,a4,a0,2
    ke4(cx->ks, 0);  ke4(cx->ks, 1);
    e883b182:	d19c                	sw	a5,32(a1)
    ke4(cx->ks, 2);  ke4(cx->ks, 3);
    e883b184:	01c7c7b3          	xor	a5,a5,t3
    e883b188:	8fa9                	xor	a5,a5,a0
    e883b18a:	7d86b50b          	extu	a0,a3,31,24
    e883b18e:	30050513          	addi	a0,a0,768
    e883b192:	44a7450b          	lrw	a0,a4,a0,2
    ke4(cx->ks, 0);  ke4(cx->ks, 1);
    e883b196:	0315a223          	sw	a7,36(a1)
    e883b19a:	d5d4                	sw	a3,44(a1)
    ke4(cx->ks, 2);  ke4(cx->ks, 3);
    e883b19c:	8fa9                	xor	a5,a5,a0
    e883b19e:	5d06b50b          	extu	a0,a3,23,16
    e883b1a2:	54a7450b          	lurw	a0,a4,a0,2
    e883b1a6:	8fa9                	xor	a5,a5,a0
    e883b1a8:	3c86b50b          	extu	a0,a3,15,8
    e883b1ac:	10050513          	addi	a0,a0,256
    e883b1b0:	44a7450b          	lrw	a0,a4,a0,2
    e883b1b4:	8fa9                	xor	a5,a5,a0
    e883b1b6:	2781                	sext.w	a5,a5
    e883b1b8:	00f34333          	xor	t1,t1,a5
    e883b1bc:	00f8c533          	xor	a0,a7,a5
    e883b1c0:	d99c                	sw	a5,48(a1)
    e883b1c2:	0066c6b3          	xor	a3,a3,t1
    e883b1c6:	d9c8                	sw	a0,52(a1)
    e883b1c8:	7d86be0b          	extu	t3,a3,31,24
    e883b1cc:	0ff6f513          	andi	a0,a3,255
    e883b1d0:	20050513          	addi	a0,a0,512
    e883b1d4:	300e0e13          	addi	t3,t3,768
    e883b1d8:	45c74e0b          	lrw	t3,a4,t3,2
    e883b1dc:	44a7450b          	lrw	a0,a4,a0,2
    e883b1e0:	ddd4                	sw	a3,60(a1)
    e883b1e2:	0265ac23          	sw	t1,56(a1)
    e883b1e6:	01c54533          	xor	a0,a0,t3
    e883b1ea:	00c62e03          	lw	t3,12(a2)
    e883b1ee:	01c54533          	xor	a0,a0,t3
    e883b1f2:	5d06be0b          	extu	t3,a3,23,16
    e883b1f6:	3c86b68b          	extu	a3,a3,15,8
    e883b1fa:	55c74e0b          	lurw	t3,a4,t3,2
    e883b1fe:	10068693          	addi	a3,a3,256
    e883b202:	44d7468b          	lrw	a3,a4,a3,2
    e883b206:	01c54533          	xor	a0,a0,t3
    e883b20a:	8ea9                	xor	a3,a3,a0
    e883b20c:	2681                	sext.w	a3,a3
    e883b20e:	00d8c533          	xor	a0,a7,a3
    e883b212:	8fb5                	xor	a5,a5,a3
    e883b214:	0106c6b3          	xor	a3,a3,a6
    e883b218:	0006881b          	sext.w	a6,a3
    e883b21c:	00a348b3          	xor	a7,t1,a0
    ke4(cx->ks, 4);  ke4(cx->ks, 5);
    e883b220:	0ff87693          	andi	a3,a6,255
    ke4(cx->ks, 2);  ke4(cx->ks, 3);
    e883b224:	0515a423          	sw	a7,72(a1)
    ke4(cx->ks, 4);  ke4(cx->ks, 5);
    e883b228:	20068693          	addi	a3,a3,512
    e883b22c:	01062883          	lw	a7,16(a2)
    e883b230:	44d7468b          	lrw	a3,a4,a3,2
    ke4(cx->ks, 2);  ke4(cx->ks, 3);
    e883b234:	c1bc                	sw	a5,64(a1)
    ke4(cx->ks, 4);  ke4(cx->ks, 5);
    e883b236:	0117c7b3          	xor	a5,a5,a7
    e883b23a:	8fb5                	xor	a5,a5,a3
    e883b23c:	7d88368b          	extu	a3,a6,31,24
    e883b240:	30068693          	addi	a3,a3,768
    e883b244:	44d7468b          	lrw	a3,a4,a3,2
    ke4(cx->ks, 2);  ke4(cx->ks, 3);
    e883b248:	c1e8                	sw	a0,68(a1)
    e883b24a:	0505a623          	sw	a6,76(a1)
    ke4(cx->ks, 4);  ke4(cx->ks, 5);
    e883b24e:	8fb5                	xor	a5,a5,a3
    e883b250:	5d08368b          	extu	a3,a6,23,16
    e883b254:	54d7468b          	lurw	a3,a4,a3,2
    e883b258:	8fb5                	xor	a5,a5,a3
    e883b25a:	3c88368b          	extu	a3,a6,15,8
    e883b25e:	10068693          	addi	a3,a3,256
    e883b262:	44d7468b          	lrw	a3,a4,a3,2
    e883b266:	8fb5                	xor	a5,a5,a3
    e883b268:	2781                	sext.w	a5,a5
    e883b26a:	00f34333          	xor	t1,t1,a5
    e883b26e:	00f546b3          	xor	a3,a0,a5
    e883b272:	006848b3          	xor	a7,a6,t1
    e883b276:	c9f4                	sw	a3,84(a1)
    e883b278:	7d88be0b          	extu	t3,a7,31,24
    e883b27c:	0ff8f693          	andi	a3,a7,255
    e883b280:	20068693          	addi	a3,a3,512
    e883b284:	300e0e13          	addi	t3,t3,768
    e883b288:	45c74e0b          	lrw	t3,a4,t3,2
    e883b28c:	44d7468b          	lrw	a3,a4,a3,2
    e883b290:	0515ae23          	sw	a7,92(a1)
    e883b294:	c9bc                	sw	a5,80(a1)
    e883b296:	01c6c6b3          	xor	a3,a3,t3
    e883b29a:	01462e03          	lw	t3,20(a2)
    e883b29e:	0465ac23          	sw	t1,88(a1)
    e883b2a2:	01c6c6b3          	xor	a3,a3,t3
    e883b2a6:	5d08be0b          	extu	t3,a7,23,16
    e883b2aa:	3c88b88b          	extu	a7,a7,15,8
    e883b2ae:	55c74e0b          	lurw	t3,a4,t3,2
    e883b2b2:	10088893          	addi	a7,a7,256
    e883b2b6:	4517488b          	lrw	a7,a4,a7,2
    e883b2ba:	01c6c6b3          	xor	a3,a3,t3
    ke4(cx->ks, 6);  ke4(cx->ks, 7);
    e883b2be:	01862e03          	lw	t3,24(a2)
    ke4(cx->ks, 4);  ke4(cx->ks, 5);
    e883b2c2:	0116c6b3          	xor	a3,a3,a7
    e883b2c6:	2681                	sext.w	a3,a3
    e883b2c8:	8d35                	xor	a0,a0,a3
    e883b2ca:	8fb5                	xor	a5,a5,a3
    e883b2cc:	00a346b3          	xor	a3,t1,a0
    e883b2d0:	d5b4                	sw	a3,104(a1)
    e883b2d2:	00a846b3          	xor	a3,a6,a0
    ke4(cx->ks, 6);  ke4(cx->ks, 7);
    e883b2d6:	0ff6f893          	andi	a7,a3,255
    e883b2da:	20088893          	addi	a7,a7,512
    e883b2de:	4517488b          	lrw	a7,a4,a7,2
    ke4(cx->ks, 4);  ke4(cx->ks, 5);
    e883b2e2:	d1bc                	sw	a5,96(a1)
    ke4(cx->ks, 6);  ke4(cx->ks, 7);
    e883b2e4:	01c7c7b3          	xor	a5,a5,t3
    e883b2e8:	0117c7b3          	xor	a5,a5,a7
    e883b2ec:	7d86b88b          	extu	a7,a3,31,24
    e883b2f0:	30088893          	addi	a7,a7,768
    e883b2f4:	4517488b          	lrw	a7,a4,a7,2
    ke4(cx->ks, 4);  ke4(cx->ks, 5);
    e883b2f8:	d1e8                	sw	a0,100(a1)
    e883b2fa:	d5f4                	sw	a3,108(a1)
    ke4(cx->ks, 6);  ke4(cx->ks, 7);
    e883b2fc:	0117c7b3          	xor	a5,a5,a7
    e883b300:	5d06b88b          	extu	a7,a3,23,16
    e883b304:	5517488b          	lurw	a7,a4,a7,2
    e883b308:	0117c7b3          	xor	a5,a5,a7
    e883b30c:	3c86b88b          	extu	a7,a3,15,8
    e883b310:	10088893          	addi	a7,a7,256
    e883b314:	4517488b          	lrw	a7,a4,a7,2
    e883b318:	0117c7b3          	xor	a5,a5,a7
    e883b31c:	2781                	sext.w	a5,a5
    e883b31e:	00f34333          	xor	t1,t1,a5
    e883b322:	00f548b3          	xor	a7,a0,a5
    e883b326:	0066c6b3          	xor	a3,a3,t1
    e883b32a:	0715aa23          	sw	a7,116(a1)
    e883b32e:	7d86be0b          	extu	t3,a3,31,24
    e883b332:	0ff6f893          	andi	a7,a3,255
    e883b336:	20088893          	addi	a7,a7,512
    e883b33a:	300e0e13          	addi	t3,t3,768
    e883b33e:	45c74e0b          	lrw	t3,a4,t3,2
    e883b342:	4517488b          	lrw	a7,a4,a7,2
    e883b346:	ddf4                	sw	a3,124(a1)
    e883b348:	d9bc                	sw	a5,112(a1)
    e883b34a:	01c8c8b3          	xor	a7,a7,t3
    e883b34e:	01c62e03          	lw	t3,28(a2)
    e883b352:	0665ac23          	sw	t1,120(a1)
    e883b356:	01c8c8b3          	xor	a7,a7,t3
    e883b35a:	5d06be0b          	extu	t3,a3,23,16
    e883b35e:	3c86b68b          	extu	a3,a3,15,8
    e883b362:	55c74e0b          	lurw	t3,a4,t3,2
    e883b366:	10068693          	addi	a3,a3,256
    e883b36a:	44d7468b          	lrw	a3,a4,a3,2
    e883b36e:	01c8c8b3          	xor	a7,a7,t3
    e883b372:	00d8c6b3          	xor	a3,a7,a3
    e883b376:	2681                	sext.w	a3,a3
    e883b378:	8d35                	xor	a0,a0,a3
    e883b37a:	00a348b3          	xor	a7,t1,a0
    e883b37e:	8fb5                	xor	a5,a5,a3
    e883b380:	00d846b3          	xor	a3,a6,a3
    ke4(cx->ks, 8);
    e883b384:	0ff6f813          	andi	a6,a3,255
    ke4(cx->ks, 6);  ke4(cx->ks, 7);
    e883b388:	0915a423          	sw	a7,136(a1)
    ke4(cx->ks, 8);
    e883b38c:	20080813          	addi	a6,a6,512
    e883b390:	02062883          	lw	a7,32(a2)
    e883b394:	4507480b          	lrw	a6,a4,a6,2
    ke4(cx->ks, 6);  ke4(cx->ks, 7);
    e883b398:	08f5a023          	sw	a5,128(a1)
    ke4(cx->ks, 8);
    e883b39c:	0117c7b3          	xor	a5,a5,a7
    e883b3a0:	0107c7b3          	xor	a5,a5,a6
    e883b3a4:	7d86b80b          	extu	a6,a3,31,24
    e883b3a8:	30080813          	addi	a6,a6,768
    e883b3ac:	4507480b          	lrw	a6,a4,a6,2
    {   uint_32t i;
        for(i = 0; i < 9; ++i)
            ke4(cx->ks, i);
    }
#endif
    ke4(cx->ks, 9);
    e883b3b0:	5250                	lw	a2,36(a2)
    ke4(cx->ks, 6);  ke4(cx->ks, 7);
    e883b3b2:	08a5a223          	sw	a0,132(a1)
    ke4(cx->ks, 8);
    e883b3b6:	0107c7b3          	xor	a5,a5,a6
    e883b3ba:	5d06b80b          	extu	a6,a3,23,16
    e883b3be:	5507480b          	lurw	a6,a4,a6,2
    ke4(cx->ks, 6);  ke4(cx->ks, 7);
    e883b3c2:	08d5a623          	sw	a3,140(a1)
    ke4(cx->ks, 8);
    e883b3c6:	0107c7b3          	xor	a5,a5,a6
    e883b3ca:	3c86b80b          	extu	a6,a3,15,8
    e883b3ce:	10080813          	addi	a6,a6,256
    e883b3d2:	4507480b          	lrw	a6,a4,a6,2
    e883b3d6:	0107c7b3          	xor	a5,a5,a6
    e883b3da:	2781                	sext.w	a5,a5
    e883b3dc:	00f54833          	xor	a6,a0,a5
    e883b3e0:	00f34333          	xor	t1,t1,a5
    e883b3e4:	0066ce33          	xor	t3,a3,t1
    e883b3e8:	0905aa23          	sw	a6,148(a1)
    ke4(cx->ks, 9);
    e883b3ec:	0ffe7893          	andi	a7,t3,255
    e883b3f0:	7d8e380b          	extu	a6,t3,31,24
    e883b3f4:	20088893          	addi	a7,a7,512
    e883b3f8:	30080813          	addi	a6,a6,768
    e883b3fc:	4507480b          	lrw	a6,a4,a6,2
    e883b400:	4517488b          	lrw	a7,a4,a7,2
    ke4(cx->ks, 8);
    e883b404:	09c5ae23          	sw	t3,156(a1)
    e883b408:	08f5a823          	sw	a5,144(a1)
    ke4(cx->ks, 9);
    e883b40c:	0108c8b3          	xor	a7,a7,a6
    e883b410:	5d0e380b          	extu	a6,t3,23,16
    e883b414:	3c8e3e0b          	extu	t3,t3,15,8
    e883b418:	5507480b          	lurw	a6,a4,a6,2
    e883b41c:	100e0e13          	addi	t3,t3,256
    e883b420:	45c7470b          	lrw	a4,a4,t3,2
    e883b424:	00c8c633          	xor	a2,a7,a2
    e883b428:	01064633          	xor	a2,a2,a6
    e883b42c:	8f31                	xor	a4,a4,a2
    e883b42e:	2701                	sext.w	a4,a4
    e883b430:	8d39                	xor	a0,a0,a4
    ke4(cx->ks, 8);
    e883b432:	0865ac23          	sw	t1,152(a1)
    ke4(cx->ks, 9);
    e883b436:	8fb9                	xor	a5,a5,a4
    e883b438:	00a34333          	xor	t1,t1,a0
    e883b43c:	0af5a023          	sw	a5,160(a1)
    e883b440:	0aa5a223          	sw	a0,164(a1)
    e883b444:	0a65a423          	sw	t1,168(a1)
    e883b448:	8ea9                	xor	a3,a3,a0
    cx->inf.l = 0;
    e883b44a:	0a000793          	li	a5,160
    ke4(cx->ks, 9);
    e883b44e:	0ad5a623          	sw	a3,172(a1)
#if USE_VIA_ACE_IF_PRESENT
    if(VIA_ACE_AVAILABLE)
        cx->inf.b[1] = 0xff;
#endif
    return EXIT_SUCCESS;
}
    e883b452:	4501                	li	a0,0
    cx->inf.l = 0;
    e883b454:	0ef5a823          	sw	a5,240(a1)
}
    e883b458:	8082                	ret

00000000e883b45a <aes_decrypt_key128>:
}

#endif

AES_RETURN aes_decrypt_key128(const unsigned char *key, aes_decrypt_ctx cx[1])
{   uint_32t    ss[5];
    e883b45a:	1141                	addi	sp,sp,-16
    e883b45c:	e422                	sd	s0,8(sp)
    e883b45e:	4118                	lw	a4,0(a0)
    cx->ks[v(40,(1))] = ss[1] = word_in(key, 1);
    cx->ks[v(40,(2))] = ss[2] = word_in(key, 2);
    cx->ks[v(40,(3))] = ss[3] = word_in(key, 3);

#ifdef DEC_KS_UNROLL
     kdf4(cx->ks, 0); kd4(cx->ks, 1);
    e883b460:	00076697          	auipc	a3,0x76
    e883b464:	93068693          	addi	a3,a3,-1744 # e88b0d90 <t_fl>
    e883b468:	0007b317          	auipc	t1,0x7b
    e883b46c:	92830313          	addi	t1,t1,-1752 # e88b5d90 <t_rc>
    e883b470:	9007178b          	revw	a5,a4
    cx->ks[v(40,(0))] = ss[0] = word_in(key, 0);
    e883b474:	0af5a023          	sw	a5,160(a1)
    cx->ks[v(40,(1))] = ss[1] = word_in(key, 1);
    e883b478:	00452f83          	lw	t6,4(a0)
    e883b47c:	900f9f8b          	revw	t6,t6
    e883b480:	0bf5a223          	sw	t6,164(a1)
    cx->ks[v(40,(2))] = ss[2] = word_in(key, 2);
    e883b484:	00852e03          	lw	t3,8(a0)
     kdf4(cx->ks, 0); kd4(cx->ks, 1);
    e883b488:	01f7c8b3          	xor	a7,a5,t6
    e883b48c:	900e1e0b          	revw	t3,t3
    cx->ks[v(40,(2))] = ss[2] = word_in(key, 2);
    e883b490:	0bc5a423          	sw	t3,168(a1)
    cx->ks[v(40,(3))] = ss[3] = word_in(key, 3);
    e883b494:	00c52803          	lw	a6,12(a0)
     kdf4(cx->ks, 0); kd4(cx->ks, 1);
    e883b498:	01c8c8b3          	xor	a7,a7,t3
    e883b49c:	9008180b          	revw	a6,a6
    e883b4a0:	0ff87713          	andi	a4,a6,255
    e883b4a4:	7d88360b          	extu	a2,a6,31,24
    e883b4a8:	20070713          	addi	a4,a4,512
    e883b4ac:	30060613          	addi	a2,a2,768
    e883b4b0:	44c6c60b          	lrw	a2,a3,a2,2
    e883b4b4:	44e6c70b          	lrw	a4,a3,a4,2
    e883b4b8:	0108c8b3          	xor	a7,a7,a6
    cx->ks[v(40,(3))] = ss[3] = word_in(key, 3);
    e883b4bc:	0b05a623          	sw	a6,172(a1)
     kdf4(cx->ks, 0); kd4(cx->ks, 1);
    e883b4c0:	8f31                	xor	a4,a4,a2
    e883b4c2:	00032603          	lw	a2,0(t1)
    e883b4c6:	8f31                	xor	a4,a4,a2
    e883b4c8:	5d08360b          	extu	a2,a6,23,16
    e883b4cc:	54c6c60b          	lurw	a2,a3,a2,2
    e883b4d0:	8f31                	xor	a4,a4,a2
    e883b4d2:	3c88360b          	extu	a2,a6,15,8
    e883b4d6:	10060613          	addi	a2,a2,256
    e883b4da:	44c6c60b          	lrw	a2,a3,a2,2
    e883b4de:	8f31                	xor	a4,a4,a2
    e883b4e0:	2701                	sext.w	a4,a4
    e883b4e2:	00e8c8b3          	xor	a7,a7,a4
    e883b4e6:	8f3d                	xor	a4,a4,a5
    e883b4e8:	2701                	sext.w	a4,a4
    e883b4ea:	0ff77613          	andi	a2,a4,255
    e883b4ee:	00079797          	auipc	a5,0x79
    e883b4f2:	8a278793          	addi	a5,a5,-1886 # e88b3d90 <t_im>
    e883b4f6:	0187551b          	srliw	a0,a4,0x18
    e883b4fa:	30060613          	addi	a2,a2,768
    e883b4fe:	54a7c28b          	lurw	t0,a5,a0,2
    e883b502:	44c7c60b          	lrw	a2,a5,a2,2
    e883b506:	2881                	sext.w	a7,a7
    e883b508:	00c2c2b3          	xor	t0,t0,a2
    e883b50c:	5d07360b          	extu	a2,a4,23,16
    e883b510:	10060613          	addi	a2,a2,256
    e883b514:	44c7c60b          	lrw	a2,a5,a2,2
    e883b518:	00c2c2b3          	xor	t0,t0,a2
    e883b51c:	3c87360b          	extu	a2,a4,15,8
    e883b520:	20060613          	addi	a2,a2,512
    e883b524:	44c7c60b          	lrw	a2,a5,a2,2
    e883b528:	01f74733          	xor	a4,a4,t6
    e883b52c:	2701                	sext.w	a4,a4
    e883b52e:	00c2c2b3          	xor	t0,t0,a2
    e883b532:	0ff77613          	andi	a2,a4,255
    e883b536:	0187551b          	srliw	a0,a4,0x18
    e883b53a:	30060613          	addi	a2,a2,768
    e883b53e:	44c7c60b          	lrw	a2,a5,a2,2
    e883b542:	54a7c50b          	lurw	a0,a5,a0,2
    e883b546:	2281                	sext.w	t0,t0
    e883b548:	0855a823          	sw	t0,144(a1)
    e883b54c:	8d31                	xor	a0,a0,a2
    e883b54e:	5d07360b          	extu	a2,a4,23,16
    e883b552:	10060613          	addi	a2,a2,256
    e883b556:	44c7c60b          	lrw	a2,a5,a2,2
    e883b55a:	8d31                	xor	a0,a0,a2
    e883b55c:	3c87360b          	extu	a2,a4,15,8
    e883b560:	20060613          	addi	a2,a2,512
    e883b564:	44c7c60b          	lrw	a2,a5,a2,2
    e883b568:	01c74733          	xor	a4,a4,t3
    e883b56c:	2701                	sext.w	a4,a4
    e883b56e:	0ff77e93          	andi	t4,a4,255
    e883b572:	8d31                	xor	a0,a0,a2
    e883b574:	300e8e93          	addi	t4,t4,768
    e883b578:	0187561b          	srliw	a2,a4,0x18
    e883b57c:	45d7ce8b          	lrw	t4,a5,t4,2
    e883b580:	54c7c60b          	lurw	a2,a5,a2,2
    e883b584:	2501                	sext.w	a0,a0
    e883b586:	08a5aa23          	sw	a0,148(a1)
    e883b58a:	01d64633          	xor	a2,a2,t4
    e883b58e:	5d073e8b          	extu	t4,a4,23,16
    e883b592:	100e8e93          	addi	t4,t4,256
    e883b596:	45d7ce8b          	lrw	t4,a5,t4,2
    e883b59a:	010e4e33          	xor	t3,t3,a6
    e883b59e:	01d64633          	xor	a2,a2,t4
    e883b5a2:	3c873e8b          	extu	t4,a4,15,8
    e883b5a6:	200e8e93          	addi	t4,t4,512
    e883b5aa:	45d7ce8b          	lrw	t4,a5,t4,2
    e883b5ae:	01074733          	xor	a4,a4,a6
    e883b5b2:	2701                	sext.w	a4,a4
    e883b5b4:	0ff77f13          	andi	t5,a4,255
    e883b5b8:	01d64633          	xor	a2,a2,t4
    e883b5bc:	300f0f13          	addi	t5,t5,768
    e883b5c0:	01875e9b          	srliw	t4,a4,0x18
    e883b5c4:	45e7cf0b          	lrw	t5,a5,t5,2
    e883b5c8:	55d7ce8b          	lurw	t4,a5,t4,2
    e883b5cc:	2601                	sext.w	a2,a2
    e883b5ce:	08c5ac23          	sw	a2,152(a1)
    e883b5d2:	01eeceb3          	xor	t4,t4,t5
    e883b5d6:	5d073f0b          	extu	t5,a4,23,16
    e883b5da:	100f0f13          	addi	t5,t5,256
    e883b5de:	3c87370b          	extu	a4,a4,15,8
    e883b5e2:	45e7cf0b          	lrw	t5,a5,t5,2
    e883b5e6:	20070713          	addi	a4,a4,512
    e883b5ea:	44e7c70b          	lrw	a4,a5,a4,2
    e883b5ee:	01eeceb3          	xor	t4,t4,t5
    e883b5f2:	0ff8ff13          	andi	t5,a7,255
    e883b5f6:	00eeceb3          	xor	t4,t4,a4
    e883b5fa:	7d88b70b          	extu	a4,a7,31,24
    e883b5fe:	200f0f13          	addi	t5,t5,512
    e883b602:	30070713          	addi	a4,a4,768
    e883b606:	44e6c70b          	lrw	a4,a3,a4,2
    e883b60a:	45e6cf0b          	lrw	t5,a3,t5,2
    e883b60e:	2e81                	sext.w	t4,t4
    e883b610:	09d5ae23          	sw	t4,156(a1)
    e883b614:	00ef4f33          	xor	t5,t5,a4
    e883b618:	00432703          	lw	a4,4(t1)
    e883b61c:	00ef4f33          	xor	t5,t5,a4
    e883b620:	5d08b70b          	extu	a4,a7,23,16
    e883b624:	54e6c70b          	lurw	a4,a3,a4,2
    e883b628:	00ef4f33          	xor	t5,t5,a4
    e883b62c:	3c88b70b          	extu	a4,a7,15,8
    e883b630:	10070713          	addi	a4,a4,256
    e883b634:	44e6c70b          	lrw	a4,a3,a4,2
    e883b638:	00ef4f33          	xor	t5,t5,a4
    e883b63c:	2f01                	sext.w	t5,t5
    e883b63e:	0fff7393          	andi	t2,t5,255
    e883b642:	010fc733          	xor	a4,t6,a6
    e883b646:	30038393          	addi	t2,t2,768
    e883b64a:	018f5f9b          	srliw	t6,t5,0x18
    e883b64e:	4477c38b          	lrw	t2,a5,t2,2
    e883b652:	55f7cf8b          	lurw	t6,a5,t6,2
    e883b656:	01e74733          	xor	a4,a4,t5
    e883b65a:	2701                	sext.w	a4,a4
    e883b65c:	007fcfb3          	xor	t6,t6,t2
    e883b660:	005fc2b3          	xor	t0,t6,t0
    e883b664:	5d0f3f8b          	extu	t6,t5,23,16
    e883b668:	100f8f93          	addi	t6,t6,256
    e883b66c:	3c8f3f0b          	extu	t5,t5,15,8
    e883b670:	45f7cf8b          	lrw	t6,a5,t6,2
    e883b674:	200f0f13          	addi	t5,t5,512
    e883b678:	45e7cf0b          	lrw	t5,a5,t5,2
    e883b67c:	01f2c2b3          	xor	t0,t0,t6
     kd4(cx->ks, 2);  kd4(cx->ks, 3);
    e883b680:	7d873f8b          	extu	t6,a4,31,24
     kdf4(cx->ks, 0); kd4(cx->ks, 1);
    e883b684:	01e2c2b3          	xor	t0,t0,t5
    e883b688:	2281                	sext.w	t0,t0
    e883b68a:	00554f33          	xor	t5,a0,t0
    e883b68e:	01e64633          	xor	a2,a2,t5
    e883b692:	09e5a223          	sw	t5,132(a1)
    e883b696:	00cecf33          	xor	t5,t4,a2
    e883b69a:	09e5a623          	sw	t5,140(a1)
     kd4(cx->ks, 2);  kd4(cx->ks, 3);
    e883b69e:	0ff77f13          	andi	t5,a4,255
    e883b6a2:	200f0f13          	addi	t5,t5,512
    e883b6a6:	300f8f93          	addi	t6,t6,768
    e883b6aa:	45f6cf8b          	lrw	t6,a3,t6,2
    e883b6ae:	45e6cf0b          	lrw	t5,a3,t5,2
     kdf4(cx->ks, 0); kd4(cx->ks, 1);
    e883b6b2:	0855a023          	sw	t0,128(a1)
    e883b6b6:	08c5a423          	sw	a2,136(a1)
     kd4(cx->ks, 2);  kd4(cx->ks, 3);
    e883b6ba:	01ff4f33          	xor	t5,t5,t6
    e883b6be:	00832f83          	lw	t6,8(t1)
    e883b6c2:	01ff4f33          	xor	t5,t5,t6
    e883b6c6:	5d073f8b          	extu	t6,a4,23,16
    e883b6ca:	55f6cf8b          	lurw	t6,a3,t6,2
    e883b6ce:	01ff4f33          	xor	t5,t5,t6
    e883b6d2:	3c873f8b          	extu	t6,a4,15,8
    e883b6d6:	100f8f93          	addi	t6,t6,256
    e883b6da:	45f6cf8b          	lrw	t6,a3,t6,2
    e883b6de:	01ff4f33          	xor	t5,t5,t6
    e883b6e2:	2f01                	sext.w	t5,t5
    e883b6e4:	0fff7393          	andi	t2,t5,255
    e883b6e8:	018f5f9b          	srliw	t6,t5,0x18
    e883b6ec:	30038393          	addi	t2,t2,768
    e883b6f0:	4477c38b          	lrw	t2,a5,t2,2
    e883b6f4:	55f7cf8b          	lurw	t6,a5,t6,2
    e883b6f8:	01ee4e33          	xor	t3,t3,t5
    e883b6fc:	2e01                	sext.w	t3,t3
    e883b6fe:	007fcfb3          	xor	t6,t6,t2
    e883b702:	5d0f338b          	extu	t2,t5,23,16
    e883b706:	10038393          	addi	t2,t2,256
    e883b70a:	3c8f3f0b          	extu	t5,t5,15,8
    e883b70e:	4477c38b          	lrw	t2,a5,t2,2
    e883b712:	200f0f13          	addi	t5,t5,512
    e883b716:	45e7cf0b          	lrw	t5,a5,t5,2
    e883b71a:	007fcfb3          	xor	t6,t6,t2
    e883b71e:	01efcf33          	xor	t5,t6,t5
    e883b722:	2f01                	sext.w	t5,t5
    e883b724:	01e54533          	xor	a0,a0,t5
    e883b728:	01e2c433          	xor	s0,t0,t5
    e883b72c:	00a64f33          	xor	t5,a2,a0
    e883b730:	07e5ac23          	sw	t5,120(a1)
    e883b734:	7d8e3f8b          	extu	t6,t3,31,24
    e883b738:	0ffe7f13          	andi	t5,t3,255
    e883b73c:	200f0f13          	addi	t5,t5,512
    e883b740:	300f8f93          	addi	t6,t6,768
    e883b744:	45f6cf8b          	lrw	t6,a3,t6,2
    e883b748:	45e6cf0b          	lrw	t5,a3,t5,2
    e883b74c:	00aec3b3          	xor	t2,t4,a0
    e883b750:	d9a0                	sw	s0,112(a1)
    e883b752:	01ff4f33          	xor	t5,t5,t6
    e883b756:	00c32f83          	lw	t6,12(t1)
    e883b75a:	d9e8                	sw	a0,116(a1)
    e883b75c:	0675ae23          	sw	t2,124(a1)
    e883b760:	01ff4f33          	xor	t5,t5,t6
    e883b764:	5d0e3f8b          	extu	t6,t3,23,16
    e883b768:	55f6cf8b          	lurw	t6,a3,t6,2
    e883b76c:	01ff4f33          	xor	t5,t5,t6
    e883b770:	3c8e3f8b          	extu	t6,t3,15,8
    e883b774:	100f8f93          	addi	t6,t6,256
    e883b778:	45f6cf8b          	lrw	t6,a3,t6,2
    e883b77c:	01ff4f33          	xor	t5,t5,t6
    e883b780:	2f01                	sext.w	t5,t5
    e883b782:	0fff7f93          	andi	t6,t5,255
    e883b786:	018f529b          	srliw	t0,t5,0x18
    e883b78a:	300f8f93          	addi	t6,t6,768
    e883b78e:	45f7cf8b          	lrw	t6,a5,t6,2
    e883b792:	5457c28b          	lurw	t0,a5,t0,2
    e883b796:	010f4833          	xor	a6,t5,a6
    e883b79a:	2801                	sext.w	a6,a6
    e883b79c:	01f2c2b3          	xor	t0,t0,t6
    e883b7a0:	5d0f3f8b          	extu	t6,t5,23,16
    e883b7a4:	100f8f93          	addi	t6,t6,256
    e883b7a8:	45f7cf8b          	lrw	t6,a5,t6,2
    e883b7ac:	3c8f3f0b          	extu	t5,t5,15,8
    e883b7b0:	0082c2b3          	xor	t0,t0,s0
    e883b7b4:	200f0f13          	addi	t5,t5,512
    e883b7b8:	01f2c2b3          	xor	t0,t0,t6
    e883b7bc:	45e7cf8b          	lrw	t6,a5,t5,2
    e883b7c0:	01f2c2b3          	xor	t0,t0,t6
    e883b7c4:	2281                	sext.w	t0,t0
    e883b7c6:	00554f33          	xor	t5,a0,t0
    e883b7ca:	07e5a223          	sw	t5,100(a1)
     kd4(cx->ks, 4);  kd4(cx->ks, 5);
    e883b7ce:	7d883f8b          	extu	t6,a6,31,24
    e883b7d2:	0ff87f13          	andi	t5,a6,255
    e883b7d6:	200f0f13          	addi	t5,t5,512
    e883b7da:	300f8f93          	addi	t6,t6,768
    e883b7de:	45f6cf8b          	lrw	t6,a3,t6,2
    e883b7e2:	45e6cf0b          	lrw	t5,a3,t5,2
     kd4(cx->ks, 2);  kd4(cx->ks, 3);
    e883b7e6:	00564633          	xor	a2,a2,t0
    e883b7ea:	00c3c3b3          	xor	t2,t2,a2
     kd4(cx->ks, 4);  kd4(cx->ks, 5);
    e883b7ee:	01ff4f33          	xor	t5,t5,t6
    e883b7f2:	01032f83          	lw	t6,16(t1)
     kd4(cx->ks, 2);  kd4(cx->ks, 3);
    e883b7f6:	0675a623          	sw	t2,108(a1)
    e883b7fa:	0655a023          	sw	t0,96(a1)
     kd4(cx->ks, 4);  kd4(cx->ks, 5);
    e883b7fe:	01ff4f33          	xor	t5,t5,t6
    e883b802:	5d083f8b          	extu	t6,a6,23,16
    e883b806:	55f6cf8b          	lurw	t6,a3,t6,2
     kd4(cx->ks, 2);  kd4(cx->ks, 3);
    e883b80a:	d5b0                	sw	a2,104(a1)
     kd4(cx->ks, 4);  kd4(cx->ks, 5);
    e883b80c:	01ff4f33          	xor	t5,t5,t6
    e883b810:	3c883f8b          	extu	t6,a6,15,8
    e883b814:	100f8f93          	addi	t6,t6,256
    e883b818:	45f6cf8b          	lrw	t6,a3,t6,2
    e883b81c:	01ff4f33          	xor	t5,t5,t6
    e883b820:	2f01                	sext.w	t5,t5
    e883b822:	0fff7393          	andi	t2,t5,255
    e883b826:	018f5f9b          	srliw	t6,t5,0x18
    e883b82a:	30038393          	addi	t2,t2,768
    e883b82e:	4477c38b          	lrw	t2,a5,t2,2
    e883b832:	55f7cf8b          	lurw	t6,a5,t6,2
    e883b836:	01e8c8b3          	xor	a7,a7,t5
    e883b83a:	007fcfb3          	xor	t6,t6,t2
    e883b83e:	5d0f338b          	extu	t2,t5,23,16
    e883b842:	10038393          	addi	t2,t2,256
    e883b846:	3c8f3f0b          	extu	t5,t5,15,8
    e883b84a:	4477c38b          	lrw	t2,a5,t2,2
    e883b84e:	200f0f13          	addi	t5,t5,512
    e883b852:	45e7cf0b          	lrw	t5,a5,t5,2
    e883b856:	007fcfb3          	xor	t6,t6,t2
    e883b85a:	3c88b38b          	extu	t2,a7,15,8
    e883b85e:	01efcf33          	xor	t5,t6,t5
    e883b862:	2f01                	sext.w	t5,t5
    e883b864:	01e54533          	xor	a0,a0,t5
    e883b868:	00a64fb3          	xor	t6,a2,a0
    e883b86c:	01eeceb3          	xor	t4,t4,t5
    e883b870:	01e2c2b3          	xor	t0,t0,t5
    e883b874:	05f5ac23          	sw	t6,88(a1)
    e883b878:	0ff8ff13          	andi	t5,a7,255
    e883b87c:	7d88bf8b          	extu	t6,a7,31,24
    e883b880:	200f0f13          	addi	t5,t5,512
    e883b884:	300f8f93          	addi	t6,t6,768
    e883b888:	45f6cf8b          	lrw	t6,a3,t6,2
    e883b88c:	45e6cf0b          	lrw	t5,a3,t5,2
    e883b890:	10038393          	addi	t2,t2,256
    e883b894:	0455a823          	sw	t0,80(a1)
    e883b898:	01ff4f33          	xor	t5,t5,t6
    e883b89c:	01432f83          	lw	t6,20(t1)
    e883b8a0:	c9e8                	sw	a0,84(a1)
    e883b8a2:	05d5ae23          	sw	t4,92(a1)
    e883b8a6:	01ff4f33          	xor	t5,t5,t6
    e883b8aa:	5d08bf8b          	extu	t6,a7,23,16
    e883b8ae:	55f6cf8b          	lurw	t6,a3,t6,2
    e883b8b2:	01ff4f33          	xor	t5,t5,t6
    e883b8b6:	4476cf8b          	lrw	t6,a3,t2,2
    e883b8ba:	01ff4f33          	xor	t5,t5,t6
    e883b8be:	2f01                	sext.w	t5,t5
    e883b8c0:	0fff7393          	andi	t2,t5,255
    e883b8c4:	018f5f9b          	srliw	t6,t5,0x18
    e883b8c8:	30038393          	addi	t2,t2,768
    e883b8cc:	4477c38b          	lrw	t2,a5,t2,2
    e883b8d0:	55f7cf8b          	lurw	t6,a5,t6,2
    e883b8d4:	01e74733          	xor	a4,a4,t5
    e883b8d8:	007fcfb3          	xor	t6,t6,t2
    e883b8dc:	005fcfb3          	xor	t6,t6,t0
    e883b8e0:	5d0f328b          	extu	t0,t5,23,16
    e883b8e4:	10028293          	addi	t0,t0,256
    e883b8e8:	3c8f3f0b          	extu	t5,t5,15,8
    e883b8ec:	4457c28b          	lrw	t0,a5,t0,2
    e883b8f0:	200f0f13          	addi	t5,t5,512
    e883b8f4:	45e7cf0b          	lrw	t5,a5,t5,2
    e883b8f8:	005fcfb3          	xor	t6,t6,t0
     kd4(cx->ks, 6);  kd4(cx->ks, 7);
    e883b8fc:	7d87328b          	extu	t0,a4,31,24
     kd4(cx->ks, 4);  kd4(cx->ks, 5);
    e883b900:	01efcfb3          	xor	t6,t6,t5
    e883b904:	2f81                	sext.w	t6,t6
    e883b906:	01f54f33          	xor	t5,a0,t6
    e883b90a:	05f5a023          	sw	t6,64(a1)
    e883b90e:	01f64633          	xor	a2,a2,t6
    e883b912:	05e5a223          	sw	t5,68(a1)
    e883b916:	00cecf33          	xor	t5,t4,a2
    e883b91a:	05e5a623          	sw	t5,76(a1)
     kd4(cx->ks, 6);  kd4(cx->ks, 7);
    e883b91e:	0ff77f13          	andi	t5,a4,255
    e883b922:	200f0f13          	addi	t5,t5,512
    e883b926:	30028293          	addi	t0,t0,768
    e883b92a:	4456c28b          	lrw	t0,a3,t0,2
    e883b92e:	45e6cf0b          	lrw	t5,a3,t5,2
     kd4(cx->ks, 4);  kd4(cx->ks, 5);
    e883b932:	c5b0                	sw	a2,72(a1)
     kd4(cx->ks, 6);  kd4(cx->ks, 7);
    e883b934:	005f4f33          	xor	t5,t5,t0
    e883b938:	01832283          	lw	t0,24(t1)
    e883b93c:	005f4f33          	xor	t5,t5,t0
    e883b940:	5d07328b          	extu	t0,a4,23,16
    e883b944:	5456c28b          	lurw	t0,a3,t0,2
    e883b948:	005f4f33          	xor	t5,t5,t0
    e883b94c:	3c87328b          	extu	t0,a4,15,8
    e883b950:	10028293          	addi	t0,t0,256
    e883b954:	4456c28b          	lrw	t0,a3,t0,2
    e883b958:	005f4f33          	xor	t5,t5,t0
    e883b95c:	2f01                	sext.w	t5,t5
    e883b95e:	0fff7393          	andi	t2,t5,255
    e883b962:	018f529b          	srliw	t0,t5,0x18
    e883b966:	30038393          	addi	t2,t2,768
    e883b96a:	4477c38b          	lrw	t2,a5,t2,2
    e883b96e:	5457c28b          	lurw	t0,a5,t0,2
    e883b972:	01ee4e33          	xor	t3,t3,t5
    e883b976:	0072c2b3          	xor	t0,t0,t2
    e883b97a:	5d0f338b          	extu	t2,t5,23,16
    e883b97e:	10038393          	addi	t2,t2,256
    e883b982:	3c8f3f0b          	extu	t5,t5,15,8
    e883b986:	4477c38b          	lrw	t2,a5,t2,2
    e883b98a:	200f0f13          	addi	t5,t5,512
    e883b98e:	45e7cf0b          	lrw	t5,a5,t5,2
    e883b992:	0072c2b3          	xor	t0,t0,t2
    e883b996:	01e2cf33          	xor	t5,t0,t5
    e883b99a:	2f01                	sext.w	t5,t5
    e883b99c:	01e54533          	xor	a0,a0,t5
    e883b9a0:	01efcfb3          	xor	t6,t6,t5
    e883b9a4:	00a64f33          	xor	t5,a2,a0
    e883b9a8:	03e5ac23          	sw	t5,56(a1)
    e883b9ac:	7d8e328b          	extu	t0,t3,31,24
    e883b9b0:	0ffe7f13          	andi	t5,t3,255
    e883b9b4:	200f0f13          	addi	t5,t5,512
    e883b9b8:	30028293          	addi	t0,t0,768
    e883b9bc:	4456c28b          	lrw	t0,a3,t0,2
    e883b9c0:	45e6cf0b          	lrw	t5,a3,t5,2
    e883b9c4:	03f5a823          	sw	t6,48(a1)
    e883b9c8:	00aec3b3          	xor	t2,t4,a0
    e883b9cc:	005f4f33          	xor	t5,t5,t0
    e883b9d0:	01c32283          	lw	t0,28(t1)
    e883b9d4:	0275ae23          	sw	t2,60(a1)
    e883b9d8:	d9c8                	sw	a0,52(a1)
    e883b9da:	005f4f33          	xor	t5,t5,t0
    e883b9de:	5d0e328b          	extu	t0,t3,23,16
    e883b9e2:	5456c28b          	lurw	t0,a3,t0,2
    e883b9e6:	005f4f33          	xor	t5,t5,t0
    e883b9ea:	3c8e328b          	extu	t0,t3,15,8
    e883b9ee:	10028293          	addi	t0,t0,256
    e883b9f2:	4456c28b          	lrw	t0,a3,t0,2
    e883b9f6:	005f4f33          	xor	t5,t5,t0
    e883b9fa:	2f01                	sext.w	t5,t5
    e883b9fc:	0fff7413          	andi	s0,t5,255
    e883ba00:	018f529b          	srliw	t0,t5,0x18
    e883ba04:	30040413          	addi	s0,s0,768
    e883ba08:	4487c40b          	lrw	s0,a5,s0,2
    e883ba0c:	5457c28b          	lurw	t0,a5,t0,2
    e883ba10:	01e84833          	xor	a6,a6,t5
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883ba14:	010e4e33          	xor	t3,t3,a6
     kd4(cx->ks, 6);  kd4(cx->ks, 7);
    e883ba18:	0082c2b3          	xor	t0,t0,s0
    e883ba1c:	01f2cfb3          	xor	t6,t0,t6
    e883ba20:	5d0f328b          	extu	t0,t5,23,16
    e883ba24:	10028293          	addi	t0,t0,256
    e883ba28:	3c8f3f0b          	extu	t5,t5,15,8
    e883ba2c:	4457c28b          	lrw	t0,a5,t0,2
    e883ba30:	200f0f13          	addi	t5,t5,512
    e883ba34:	45e7cf0b          	lrw	t5,a5,t5,2
    e883ba38:	005fcfb3          	xor	t6,t6,t0
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883ba3c:	7d88328b          	extu	t0,a6,31,24
     kd4(cx->ks, 6);  kd4(cx->ks, 7);
    e883ba40:	01efcfb3          	xor	t6,t6,t5
    e883ba44:	2f81                	sext.w	t6,t6
    e883ba46:	01f54f33          	xor	t5,a0,t6
    e883ba4a:	03e5a223          	sw	t5,36(a1)
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883ba4e:	0ff87f13          	andi	t5,a6,255
    e883ba52:	200f0f13          	addi	t5,t5,512
    e883ba56:	30028293          	addi	t0,t0,768
    e883ba5a:	4456c28b          	lrw	t0,a3,t0,2
    e883ba5e:	45e6cf0b          	lrw	t5,a3,t5,2
     kd4(cx->ks, 6);  kd4(cx->ks, 7);
    e883ba62:	01f64633          	xor	a2,a2,t6
    e883ba66:	00c3c3b3          	xor	t2,t2,a2
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883ba6a:	005f4f33          	xor	t5,t5,t0
    e883ba6e:	02032283          	lw	t0,32(t1)
     kd4(cx->ks, 6);  kd4(cx->ks, 7);
    e883ba72:	03f5a023          	sw	t6,32(a1)
    e883ba76:	d590                	sw	a2,40(a1)
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883ba78:	005f4f33          	xor	t5,t5,t0
    e883ba7c:	5d08328b          	extu	t0,a6,23,16
    e883ba80:	5456c28b          	lurw	t0,a3,t0,2
     kd4(cx->ks, 6);  kd4(cx->ks, 7);
    e883ba84:	0275a623          	sw	t2,44(a1)
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883ba88:	005f4f33          	xor	t5,t5,t0
    e883ba8c:	3c88328b          	extu	t0,a6,15,8
    e883ba90:	10028293          	addi	t0,t0,256
    e883ba94:	4456c28b          	lrw	t0,a3,t0,2
#if USE_VIA_ACE_IF_PRESENT
    if(VIA_ACE_AVAILABLE)
        cx->inf.b[1] = 0xff;
#endif
    return EXIT_SUCCESS;
}
    e883ba98:	6422                	ld	s0,8(sp)
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883ba9a:	005f4f33          	xor	t5,t5,t0
    e883ba9e:	2f01                	sext.w	t5,t5
    e883baa0:	0fff7393          	andi	t2,t5,255
    e883baa4:	018f529b          	srliw	t0,t5,0x18
    e883baa8:	30038393          	addi	t2,t2,768
    e883baac:	4477c38b          	lrw	t2,a5,t2,2
    e883bab0:	5457c28b          	lurw	t0,a5,t0,2
    e883bab4:	01e8c8b3          	xor	a7,a7,t5
    e883bab8:	0072c2b3          	xor	t0,t0,t2
    e883babc:	5d0f338b          	extu	t2,t5,23,16
    e883bac0:	10038393          	addi	t2,t2,256
    e883bac4:	3c8f3f0b          	extu	t5,t5,15,8
    e883bac8:	4477c38b          	lrw	t2,a5,t2,2
    e883bacc:	200f0f13          	addi	t5,t5,512
    e883bad0:	45e7c78b          	lrw	a5,a5,t5,2
    e883bad4:	0072c2b3          	xor	t0,t0,t2
    e883bad8:	00f2c7b3          	xor	a5,t0,a5
    e883badc:	2781                	sext.w	a5,a5
    e883bade:	8d3d                	xor	a0,a0,a5
    e883bae0:	00ffcfb3          	xor	t6,t6,a5
    e883bae4:	00feceb3          	xor	t4,t4,a5
    e883bae8:	02432783          	lw	a5,36(t1)
    e883baec:	c9c8                	sw	a0,20(a1)
    e883baee:	8d31                	xor	a0,a0,a2
    e883baf0:	0ff8f613          	andi	a2,a7,255
    e883baf4:	20060613          	addi	a2,a2,512
    e883baf8:	8fb9                	xor	a5,a5,a4
    e883bafa:	44c6c70b          	lrw	a4,a3,a2,2
    e883bafe:	cd88                	sw	a0,24(a1)
    e883bb00:	01f5a823          	sw	t6,16(a1)
    e883bb04:	8fb9                	xor	a5,a5,a4
    e883bb06:	7d88b70b          	extu	a4,a7,31,24
    e883bb0a:	30070713          	addi	a4,a4,768
    e883bb0e:	44e6c70b          	lrw	a4,a3,a4,2
    e883bb12:	01d5ae23          	sw	t4,28(a1)
}
    e883bb16:	4501                	li	a0,0
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883bb18:	8fb9                	xor	a5,a5,a4
    e883bb1a:	5d08b70b          	extu	a4,a7,23,16
    e883bb1e:	54e6c70b          	lurw	a4,a3,a4,2
    e883bb22:	8fb9                	xor	a5,a5,a4
    e883bb24:	3c88b70b          	extu	a4,a7,15,8
    e883bb28:	10070713          	addi	a4,a4,256
    e883bb2c:	44e6c70b          	lrw	a4,a3,a4,2
    e883bb30:	8fb9                	xor	a5,a5,a4
    e883bb32:	2781                	sext.w	a5,a5
    e883bb34:	00f8c8b3          	xor	a7,a7,a5
    e883bb38:	00f84833          	xor	a6,a6,a5
    e883bb3c:	e2f5d88b          	swd	a7,a5,(a1),1,3
    e883bb40:	011e4e33          	xor	t3,t3,a7
    cx->inf.l = 0;
    e883bb44:	0a000793          	li	a5,160
     kd4(cx->ks, 8);  kdl4(cx->ks, 9);
    e883bb48:	01c5a023          	sw	t3,0(a1)
    e883bb4c:	0105a223          	sw	a6,4(a1)
    cx->inf.l = 0;
    e883bb50:	0ef5a823          	sw	a5,240(a1)
}
    e883bb54:	0141                	addi	sp,sp,16
    e883bb56:	8082                	ret

00000000e883bb58 <aes_init>:
/* implemented in case of wrong call for fixed tables */

AES_RETURN aes_init(void)
{
    return EXIT_SUCCESS;
}
    e883bb58:	4501                	li	a0,0
    e883bb5a:	8082                	ret

00000000e883bb5c <fe_1>:
h = 1
*/

static void fe_1(fe h)
{
  h[0] = 1;
    e883bb5c:	4785                	li	a5,1
    e883bb5e:	e11c                	sd	a5,0(a0)
  h[1] = 0;
  h[2] = 0;
    e883bb60:	00053423          	sd	zero,8(a0)
  h[3] = 0;
  h[4] = 0;
    e883bb64:	00053823          	sd	zero,16(a0)
  h[5] = 0;
  h[6] = 0;
    e883bb68:	00053c23          	sd	zero,24(a0)
  h[7] = 0;
  h[8] = 0;
    e883bb6c:	02053023          	sd	zero,32(a0)
  h[9] = 0;
}
    e883bb70:	8082                	ret

00000000e883bb72 <fe_add>:
  crypto_int32 g6 = g[6];
  crypto_int32 g7 = g[7];
  crypto_int32 g8 = g[8];
  crypto_int32 g9 = g[9];
  crypto_int32 h0 = f0 + g0;
  crypto_int32 h1 = f1 + g1;
    e883bb72:	425c                	lw	a5,4(a2)
    e883bb74:	0045af03          	lw	t5,4(a1)
  crypto_int32 h2 = f2 + g2;
    e883bb78:	0085ae83          	lw	t4,8(a1)
  crypto_int32 h3 = f3 + g3;
    e883bb7c:	00c5ae03          	lw	t3,12(a1)
  crypto_int32 h1 = f1 + g1;
    e883bb80:	00ff0f3b          	addw	t5,t5,a5
  crypto_int32 h2 = f2 + g2;
    e883bb84:	461c                	lw	a5,8(a2)
  crypto_int32 h4 = f4 + g4;
    e883bb86:	0105a303          	lw	t1,16(a1)
  crypto_int32 h5 = f5 + g5;
    e883bb8a:	0145a883          	lw	a7,20(a1)
  crypto_int32 h2 = f2 + g2;
    e883bb8e:	00fe8ebb          	addw	t4,t4,a5
  crypto_int32 h3 = f3 + g3;
    e883bb92:	465c                	lw	a5,12(a2)
  crypto_int32 h6 = f6 + g6;
    e883bb94:	0185a803          	lw	a6,24(a1)
  crypto_int32 h7 = f7 + g7;
    e883bb98:	4dd4                	lw	a3,28(a1)
  crypto_int32 h3 = f3 + g3;
    e883bb9a:	00fe0e3b          	addw	t3,t3,a5
  crypto_int32 h4 = f4 + g4;
    e883bb9e:	4a1c                	lw	a5,16(a2)
  crypto_int32 h8 = f8 + g8;
    e883bba0:	5198                	lw	a4,32(a1)
  crypto_int32 h9 = f9 + g9;
    e883bba2:	02462f83          	lw	t6,36(a2)
  crypto_int32 h4 = f4 + g4;
    e883bba6:	00f3033b          	addw	t1,t1,a5
  crypto_int32 h5 = f5 + g5;
    e883bbaa:	4a5c                	lw	a5,20(a2)
    e883bbac:	00f888bb          	addw	a7,a7,a5
  crypto_int32 h6 = f6 + g6;
    e883bbb0:	4e1c                	lw	a5,24(a2)
    e883bbb2:	00f8083b          	addw	a6,a6,a5
  crypto_int32 h7 = f7 + g7;
    e883bbb6:	4e5c                	lw	a5,28(a2)
    e883bbb8:	9ebd                	addw	a3,a3,a5
  crypto_int32 h8 = f8 + g8;
    e883bbba:	521c                	lw	a5,32(a2)
  crypto_int32 h0 = f0 + g0;
    e883bbbc:	4210                	lw	a2,0(a2)
  crypto_int32 h8 = f8 + g8;
    e883bbbe:	9f3d                	addw	a4,a4,a5
  crypto_int32 h9 = f9 + g9;
    e883bbc0:	51dc                	lw	a5,36(a1)
  crypto_int32 h0 = f0 + g0;
    e883bbc2:	418c                	lw	a1,0(a1)
  h[0] = h0;
  h[1] = h1;
  h[2] = h2;
  h[3] = h3;
    e883bbc4:	e3c55e8b          	swd	t4,t3,(a0),1,3
  crypto_int32 h9 = f9 + g9;
    e883bbc8:	01f787bb          	addw	a5,a5,t6
  crypto_int32 h0 = f0 + g0;
    e883bbcc:	9db1                	addw	a1,a1,a2
  h[1] = h1;
    e883bbce:	e1e5558b          	swd	a1,t5,(a0),0,3
  h[4] = h4;
  h[5] = h5;
    e883bbd2:	e515530b          	swd	t1,a7,(a0),2,3
  h[6] = h6;
    e883bbd6:	01052c23          	sw	a6,24(a0)
  h[7] = h7;
    e883bbda:	cd54                	sw	a3,28(a0)
  h[8] = h8;
    e883bbdc:	d118                	sw	a4,32(a0)
  h[9] = h9;
    e883bbde:	d15c                	sw	a5,36(a0)
}
    e883bbe0:	8082                	ret

00000000e883bbe2 <fe_cmov>:

Preconditions: b in {0,1}.
*/

static void fe_cmov(fe f,const fe g,unsigned int b)
{
    e883bbe2:	7139                	addi	sp,sp,-64
    e883bbe4:	fb31590b          	sdd	s2,s3,(sp),1,4
    e883bbe8:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e883bbec:	ff715b0b          	sdd	s6,s7,(sp),3,4
    e883bbf0:	f891540b          	sdd	s0,s1,(sp),0,4
  crypto_int32 f0 = f[0];
  crypto_int32 f1 = f[1];
    e883bbf4:	e1c54e8b          	lwd	t4,t3,(a0),0,3
  crypto_int32 f2 = f[2];
  crypto_int32 f3 = f[3];
    e883bbf8:	e315430b          	lwd	t1,a7,(a0),1,3
  crypto_int32 g5 = g[5];
  crypto_int32 g6 = g[6];
  crypto_int32 g7 = g[7];
  crypto_int32 g8 = g[8];
  crypto_int32 g9 = g[9];
  crypto_int32 x0 = f0 ^ g0;
    e883bbfc:	0005a803          	lw	a6,0(a1)
  crypto_int32 x1 = f1 ^ g1;
    e883bc00:	41d4                	lw	a3,4(a1)
  crypto_int32 x2 = f2 ^ g2;
    e883bc02:	4598                	lw	a4,8(a1)
  crypto_int32 x3 = f3 ^ g3;
    e883bc04:	45dc                	lw	a5,12(a1)
  crypto_int32 x4 = f4 ^ g4;
    e883bc06:	4980                	lw	s0,16(a1)
  crypto_int32 x5 = f5 ^ g5;
  crypto_int32 x6 = f6 ^ g6;
  crypto_int32 x7 = f7 ^ g7;
    e883bc08:	4dc4                	lw	s1,28(a1)
  crypto_int32 f5 = f[5];
    e883bc0a:	e5654b8b          	lwd	s7,s6,(a0),2,3
  crypto_int32 f7 = f[7];
    e883bc0e:	01c52a03          	lw	s4,28(a0)
  crypto_int32 x8 = f8 ^ g8;
  crypto_int32 x9 = f9 ^ g9;
  b = -b;
    e883bc12:	40c0063b          	negw	a2,a2
  crypto_int32 x5 = f5 ^ g5;
    e883bc16:	0145a383          	lw	t2,20(a1)
  crypto_int32 x6 = f6 ^ g6;
    e883bc1a:	0185a283          	lw	t0,24(a1)
  crypto_int32 x8 = f8 ^ g8;
    e883bc1e:	0205af83          	lw	t6,32(a1)
  crypto_int32 x9 = f9 ^ g9;
    e883bc22:	0245af03          	lw	t5,36(a1)
  crypto_int32 f6 = f[6];
    e883bc26:	01852a83          	lw	s5,24(a0)
  crypto_int32 f8 = f[8];
    e883bc2a:	02052983          	lw	s3,32(a0)
  crypto_int32 f9 = f[9];
    e883bc2e:	02452903          	lw	s2,36(a0)
  crypto_int32 x0 = f0 ^ g0;
    e883bc32:	010ec833          	xor	a6,t4,a6
  crypto_int32 x1 = f1 ^ g1;
    e883bc36:	00de46b3          	xor	a3,t3,a3
  crypto_int32 x2 = f2 ^ g2;
    e883bc3a:	00e34733          	xor	a4,t1,a4
  crypto_int32 x3 = f3 ^ g3;
    e883bc3e:	00f8c7b3          	xor	a5,a7,a5
  x0 &= b;
    e883bc42:	00c87833          	and	a6,a6,a2
  x1 &= b;
    e883bc46:	8ef1                	and	a3,a3,a2
  x2 &= b;
    e883bc48:	8f71                	and	a4,a4,a2
  x3 &= b;
    e883bc4a:	8ff1                	and	a5,a5,a2
  crypto_int32 x4 = f4 ^ g4;
    e883bc4c:	008bc433          	xor	s0,s7,s0
  crypto_int32 x7 = f7 ^ g7;
    e883bc50:	009a44b3          	xor	s1,s4,s1
  x5 &= b;
  x6 &= b;
  x7 &= b;
  x8 &= b;
  x9 &= b;
  f[0] = f0 ^ x0;
    e883bc54:	01d84eb3          	xor	t4,a6,t4
  f[1] = f1 ^ x1;
    e883bc58:	01c6ce33          	xor	t3,a3,t3
  f[2] = f2 ^ x2;
    e883bc5c:	00674333          	xor	t1,a4,t1
  f[3] = f3 ^ x3;
    e883bc60:	0117c8b3          	xor	a7,a5,a7
  x4 &= b;
    e883bc64:	8c71                	and	s0,s0,a2
  x7 &= b;
    e883bc66:	8cf1                	and	s1,s1,a2
  crypto_int32 x5 = f5 ^ g5;
    e883bc68:	007b43b3          	xor	t2,s6,t2
  crypto_int32 x6 = f6 ^ g6;
    e883bc6c:	005ac2b3          	xor	t0,s5,t0
  crypto_int32 x8 = f8 ^ g8;
    e883bc70:	01f9cfb3          	xor	t6,s3,t6
  crypto_int32 x9 = f9 ^ g9;
    e883bc74:	01e94f33          	xor	t5,s2,t5
  f[0] = f0 ^ x0;
    e883bc78:	01d52023          	sw	t4,0(a0)
  f[1] = f1 ^ x1;
    e883bc7c:	01c52223          	sw	t3,4(a0)
  f[2] = f2 ^ x2;
    e883bc80:	00652423          	sw	t1,8(a0)
  f[3] = f3 ^ x3;
    e883bc84:	01152623          	sw	a7,12(a0)
  f[4] = f4 ^ x4;
    e883bc88:	01744833          	xor	a6,s0,s7
  x5 &= b;
    e883bc8c:	00c3f3b3          	and	t2,t2,a2
  x6 &= b;
    e883bc90:	00c2f2b3          	and	t0,t0,a2
  x8 &= b;
    e883bc94:	00cfffb3          	and	t6,t6,a2
  x9 &= b;
    e883bc98:	00cf7633          	and	a2,t5,a2
  f[4] = f4 ^ x4;
    e883bc9c:	01052823          	sw	a6,16(a0)
  f[5] = f5 ^ x5;
  f[6] = f6 ^ x6;
  f[7] = f7 ^ x7;
    e883bca0:	0144c733          	xor	a4,s1,s4
  f[5] = f5 ^ x5;
    e883bca4:	0163c5b3          	xor	a1,t2,s6
  f[6] = f6 ^ x6;
    e883bca8:	0152c6b3          	xor	a3,t0,s5
  f[8] = f8 ^ x8;
    e883bcac:	013fc7b3          	xor	a5,t6,s3
  f[9] = f9 ^ x9;
    e883bcb0:	01264633          	xor	a2,a2,s2
}
    e883bcb4:	f891440b          	ldd	s0,s1,(sp),0,4
  f[5] = f5 ^ x5;
    e883bcb8:	c94c                	sw	a1,20(a0)
  f[6] = f6 ^ x6;
    e883bcba:	cd14                	sw	a3,24(a0)
  f[7] = f7 ^ x7;
    e883bcbc:	cd58                	sw	a4,28(a0)
  f[8] = f8 ^ x8;
    e883bcbe:	d11c                	sw	a5,32(a0)
  f[9] = f9 ^ x9;
    e883bcc0:	d150                	sw	a2,36(a0)
}
    e883bcc2:	fb31490b          	ldd	s2,s3,(sp),1,4
    e883bcc6:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e883bcca:	ff714b0b          	ldd	s6,s7,(sp),3,4
    e883bcce:	6121                	addi	sp,sp,64
    e883bcd0:	8082                	ret

00000000e883bcd2 <fe_copy>:

static void fe_copy(fe h,const fe f)
{
  crypto_int32 f0 = f[0];
  crypto_int32 f1 = f[1];
  crypto_int32 f2 = f[2];
    e883bcd2:	f8c5c80b          	ldd	a6,a2,(a1),0,4
  crypto_int32 f3 = f[3];
  crypto_int32 f4 = f[4];
  crypto_int32 f5 = f[5];
  crypto_int32 f6 = f[6];
    e883bcd6:	fae5c68b          	ldd	a3,a4,(a1),1,4
  crypto_int32 f7 = f[7];
  crypto_int32 f8 = f[8];
    e883bcda:	719c                	ld	a5,32(a1)
  crypto_int32 f9 = f[9];
  h[0] = f0;
  h[1] = f1;
  h[2] = f2;
    e883bcdc:	f8c5580b          	sdd	a6,a2,(a0),0,4
  h[3] = f3;
  h[4] = f4;
  h[5] = f5;
  h[6] = f6;
    e883bce0:	fae5568b          	sdd	a3,a4,(a0),1,4
  h[7] = f7;
  h[8] = f8;
    e883bce4:	f11c                	sd	a5,32(a0)
  h[9] = f9;
}
    e883bce6:	8082                	ret

00000000e883bce8 <fe_mul>:

With tighter constraints on inputs can squeeze carries into int32.
*/

static void fe_mul(fe h,const fe f,const fe g)
{
    e883bce8:	7131                	addi	sp,sp,-192
    e883bcea:	f926                	sd	s1,176(sp)
    e883bcec:	f54a                	sd	s2,168(sp)
    e883bcee:	f14e                	sd	s3,160(sp)
    e883bcf0:	ed52                	sd	s4,152(sp)
    e883bcf2:	f0ee                	sd	s11,96(sp)
    e883bcf4:	fd22                	sd	s0,184(sp)
    e883bcf6:	e956                	sd	s5,144(sp)
    e883bcf8:	e55a                	sd	s6,136(sp)
    e883bcfa:	e15e                	sd	s7,128(sp)
    e883bcfc:	fce2                	sd	s8,120(sp)
    e883bcfe:	f8e6                	sd	s9,112(sp)
    e883bd00:	f4ea                	sd	s10,104(sp)
  crypto_int32 g1 = g[1];
  crypto_int32 g2 = g[2];
  crypto_int32 g3 = g[3];
  crypto_int32 g4 = g[4];
  crypto_int32 g5 = g[5];
  crypto_int32 g6 = g[6];
    e883bd02:	4e18                	lw	a4,24(a2)
  crypto_int32 g3 = g[3];
    e883bd04:	e2564f0b          	lwd	t5,t0,(a2),1,3
  crypto_int32 g5 = g[5];
    e883bd08:	e586440b          	lwd	s0,s8,(a2),2,3
  crypto_int32 g6 = g[6];
    e883bd0c:	f03a                	sd	a4,32(sp)
  crypto_int32 g7 = g[7];
    e883bd0e:	4e58                	lw	a4,28(a2)
  crypto_int32 f1_2 = 2 * f1;
  crypto_int32 f3_2 = 2 * f3;
  crypto_int32 f5_2 = 2 * f5;
  crypto_int32 f7_2 = 2 * f7;
  crypto_int32 f9_2 = 2 * f9;
  crypto_int64 f0g0    = f0   * (crypto_int64) g0;
    e883bd10:	0005ae83          	lw	t4,0(a1)
  crypto_int32 g1 = g[1];
    e883bd14:	00462803          	lw	a6,4(a2)
  crypto_int32 g7 = g[7];
    e883bd18:	f83a                	sd	a4,48(sp)
  crypto_int32 g8 = g[8];
    e883bd1a:	5218                	lw	a4,32(a2)
  crypto_int64 f0g0    = f0   * (crypto_int64) g0;
    e883bd1c:	4214                	lw	a3,0(a2)
  crypto_int32 f3 = f[3];
    e883bd1e:	00c5ac83          	lw	s9,12(a1)
  crypto_int32 g8 = g[8];
    e883bd22:	e0ba                	sd	a4,64(sp)
  crypto_int32 g9 = g[9];
    e883bd24:	5258                	lw	a4,36(a2)
  crypto_int32 f5 = f[5];
    e883bd26:	0145ab83          	lw	s7,20(a1)
  crypto_int32 f7 = f[7];
    e883bd2a:	01c5ab03          	lw	s6,28(a1)
  crypto_int32 f9 = f[9];
    e883bd2e:	0245aa83          	lw	s5,36(a1)
  crypto_int32 f1 = f[1];
    e883bd32:	0045ad03          	lw	s10,4(a1)
  crypto_int32 g9 = g[9];
    e883bd36:	e8ba                	sd	a4,80(sp)
  crypto_int64 f1g4    = f1   * (crypto_int64) g4;
  crypto_int64 f1g5_2  = f1_2 * (crypto_int64) g5;
  crypto_int64 f1g6    = f1   * (crypto_int64) g6;
  crypto_int64 f1g7_2  = f1_2 * (crypto_int64) g7;
  crypto_int64 f1g8    = f1   * (crypto_int64) g8;
  crypto_int64 f1g9_38 = f1_2 * (crypto_int64) g9_19;
    e883bd38:	6646                	ld	a2,80(sp)
  crypto_int32 g9_19 = 19 * g9;
    e883bd3a:	474d                	li	a4,19
  crypto_int64 f7g7_38 = f7_2 * (crypto_int64) g7_19;
  crypto_int64 f7g8_19 = f7   * (crypto_int64) g8_19;
  crypto_int64 f7g9_38 = f7_2 * (crypto_int64) g9_19;
  crypto_int64 f8g0    = f8   * (crypto_int64) g0;
  crypto_int64 f8g1    = f8   * (crypto_int64) g1;
  crypto_int64 f8g2_19 = f8   * (crypto_int64) g2_19;
    e883bd3c:	03e707bb          	mulw	a5,a4,t5
  crypto_int64 f2g0    = f2   * (crypto_int64) g0;
    e883bd40:	0085ae03          	lw	t3,8(a1)
  crypto_int64 f4g0    = f4   * (crypto_int64) g0;
    e883bd44:	0105a303          	lw	t1,16(a1)
  crypto_int64 f6g0    = f6   * (crypto_int64) g0;
    e883bd48:	0185a883          	lw	a7,24(a1)
  crypto_int32 f1_2 = 2 * f1;
    e883bd4c:	001d199b          	slliw	s3,s10,0x1
  crypto_int32 f3_2 = 2 * f3;
    e883bd50:	001c991b          	slliw	s2,s9,0x1
  crypto_int64 f1g9_38 = f1_2 * (crypto_int64) g9_19;
    e883bd54:	02c70fbb          	mulw	t6,a4,a2
  crypto_int64 f2g8_19 = f2   * (crypto_int64) g8_19;
    e883bd58:	6606                	ld	a2,64(sp)
  crypto_int64 f8g2_19 = f8   * (crypto_int64) g2_19;
    e883bd5a:	ecbe                	sd	a5,88(sp)
  crypto_int32 f9_2 = 2 * f9;
    e883bd5c:	001a979b          	slliw	a5,s5,0x1
  crypto_int64 f8g6_19 = f8   * (crypto_int64) g6_19;
  crypto_int64 f8g7_19 = f8   * (crypto_int64) g7_19;
  crypto_int64 f8g8_19 = f8   * (crypto_int64) g8_19;
  crypto_int64 f8g9_19 = f8   * (crypto_int64) g9_19;
  crypto_int64 f9g0    = f9   * (crypto_int64) g0;
  crypto_int64 f9g1_38 = f9_2 * (crypto_int64) g1_19;
    e883bd60:	ec3e                	sd	a5,24(sp)
  crypto_int64 f2g8_19 = f2   * (crypto_int64) g8_19;
    e883bd62:	02c703bb          	mulw	t2,a4,a2
  crypto_int64 f3g7_38 = f3_2 * (crypto_int64) g7_19;
    e883bd66:	7642                	ld	a2,48(sp)
  crypto_int64 f2g8_19 = f2   * (crypto_int64) g8_19;
    e883bd68:	027e07b3          	mul	a5,t3,t2
  crypto_int64 f3g7_38 = f3_2 * (crypto_int64) g7_19;
    e883bd6c:	02c70a3b          	mulw	s4,a4,a2
  crypto_int64 f4g6_19 = f4   * (crypto_int64) g6_19;
    e883bd70:	7602                	ld	a2,32(sp)
    e883bd72:	02c70dbb          	mulw	s11,a4,a2
  crypto_int32 f5_2 = 2 * f5;
    e883bd76:	001b961b          	slliw	a2,s7,0x1
  crypto_int64 f5g1_2  = f5_2 * (crypto_int64) g1;
    e883bd7a:	e432                	sd	a2,8(sp)
  crypto_int64 f5g5_38 = f5_2 * (crypto_int64) g5_19;
    e883bd7c:	0387063b          	mulw	a2,a4,s8
  crypto_int64 f9g5_38 = f9_2 * (crypto_int64) g5_19;
  crypto_int64 f9g6_19 = f9   * (crypto_int64) g6_19;
  crypto_int64 f9g7_38 = f9_2 * (crypto_int64) g7_19;
  crypto_int64 f9g8_19 = f9   * (crypto_int64) g8_19;
  crypto_int64 f9g9_38 = f9_2 * (crypto_int64) g9_19;
  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;
    e883bd80:	20de978b          	mula	a5,t4,a3
  crypto_int64 f5g5_38 = f5_2 * (crypto_int64) g5_19;
    e883bd84:	f432                	sd	a2,40(sp)
  crypto_int64 f6g4_19 = f6   * (crypto_int64) g4_19;
    e883bd86:	0287063b          	mulw	a2,a4,s0
  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;
    e883bd8a:	028704bb          	mulw	s1,a4,s0
  crypto_int64 f6g4_19 = f6   * (crypto_int64) g4_19;
    e883bd8e:	fc32                	sd	a2,56(sp)
  crypto_int32 f7_2 = 2 * f7;
    e883bd90:	001b161b          	slliw	a2,s6,0x1
  crypto_int64 f7g1_2  = f7_2 * (crypto_int64) g1;
    e883bd94:	e832                	sd	a2,16(sp)
  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;
    e883bd96:	21b3178b          	mula	a5,t1,s11
  crypto_int64 f7g3_38 = f7_2 * (crypto_int64) g3_19;
    e883bd9a:	0257063b          	mulw	a2,a4,t0
  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;
    e883bd9e:	2098978b          	mula	a5,a7,s1
  crypto_int64 f7g3_38 = f7_2 * (crypto_int64) g3_19;
    e883bda2:	e4b2                	sd	a2,72(sp)
  crypto_int64 f8g0    = f8   * (crypto_int64) g0;
    e883bda4:	5190                	lw	a2,32(a1)
  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;
    e883bda6:	65a2                	ld	a1,8(sp)
    e883bda8:	03e704bb          	mulw	s1,a4,t5
    e883bdac:	2096178b          	mula	a5,a2,s1
    e883bdb0:	21f9978b          	mula	a5,s3,t6
    e883bdb4:	038704bb          	mulw	s1,a4,s8
    e883bdb8:	2149178b          	mula	a5,s2,s4
    e883bdbc:	2095978b          	mula	a5,a1,s1
    e883bdc0:	64c2                	ld	s1,16(sp)
    e883bdc2:	025705bb          	mulw	a1,a4,t0
  crypto_int64 f9g1_38 = f9_2 * (crypto_int64) g1_19;
    e883bdc6:	0307073b          	mulw	a4,a4,a6
  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;
    e883bdca:	20b4978b          	mula	a5,s1,a1
    e883bdce:	65e2                	ld	a1,24(sp)
    e883bdd0:	20b7178b          	mula	a5,a4,a1
  crypto_int64 h1 = f0g1+f1g0   +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19;
    e883bdd4:	75a2                	ld	a1,40(sp)
  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;
    e883bdd6:	873e                	mv	a4,a5
  crypto_int64 f1g0    = f1   * (crypto_int64) g0;
    e883bdd8:	03a687b3          	mul	a5,a3,s10
  crypto_int64 h1 = f0g1+f1g0   +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19;
    e883bddc:	210e978b          	mula	a5,t4,a6
    e883bde0:	21cf978b          	mula	a5,t6,t3
    e883bde4:	2193978b          	mula	a5,t2,s9
    e883bde8:	206a178b          	mula	a5,s4,t1
    e883bdec:	217d978b          	mula	a5,s11,s7
    e883bdf0:	2115978b          	mula	a5,a1,a7
    e883bdf4:	75e2                	ld	a1,56(sp)
    e883bdf6:	2165978b          	mula	a5,a1,s6
    e883bdfa:	65a6                	ld	a1,72(sp)
    e883bdfc:	20c5978b          	mula	a5,a1,a2
    e883be00:	65e6                	ld	a1,88(sp)
    e883be02:	2155978b          	mula	a5,a1,s5
  crypto_int64 h2 = f0g2+f1g1_2 +f2g0   +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38;
    e883be06:	75e2                	ld	a1,56(sp)
  crypto_int64 h1 = f0g1+f1g0   +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19;
    e883be08:	ecbe                	sd	a5,88(sp)
  crypto_int64 f2g0    = f2   * (crypto_int64) g0;
    e883be0a:	03c687b3          	mul	a5,a3,t3
  crypto_int64 h2 = f0g2+f1g1_2 +f2g0   +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38;
    e883be0e:	21ee978b          	mula	a5,t4,t5
    e883be12:	2063978b          	mula	a5,t2,t1
    e883be16:	211d978b          	mula	a5,s11,a7
    e883be1a:	20c5978b          	mula	a5,a1,a2
    e883be1e:	65a2                	ld	a1,8(sp)
    e883be20:	2138178b          	mula	a5,a6,s3
    e883be24:	212f978b          	mula	a5,t6,s2
    e883be28:	20ba178b          	mula	a5,s4,a1
    e883be2c:	85a6                	mv	a1,s1
    e883be2e:	74a2                	ld	s1,40(sp)
    e883be30:	20b4978b          	mula	a5,s1,a1
    e883be34:	65a6                	ld	a1,72(sp)
    e883be36:	64e2                	ld	s1,24(sp)
    e883be38:	2095978b          	mula	a5,a1,s1
  crypto_int64 h3 = f0g3+f1g2   +f2g1   +f3g0   +f4g9_19+f5g8_19+f6g7_19+f7g6_19+f8g5_19+f9g4_19;
    e883be3c:	75a2                	ld	a1,40(sp)
  crypto_int64 h2 = f0g2+f1g1_2 +f2g0   +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38;
    e883be3e:	e4be                	sd	a5,72(sp)
  crypto_int64 f1g2    = f1   * (crypto_int64) g2;
    e883be40:	03af07b3          	mul	a5,t5,s10
  crypto_int64 h3 = f0g3+f1g2   +f2g1   +f3g0   +f4g9_19+f5g8_19+f6g7_19+f7g6_19+f8g5_19+f9g4_19;
    e883be44:	205e978b          	mula	a5,t4,t0
    e883be48:	21c8178b          	mula	a5,a6,t3
    e883be4c:	2196978b          	mula	a5,a3,s9
    e883be50:	206f978b          	mula	a5,t6,t1
    e883be54:	2173978b          	mula	a5,t2,s7
    e883be58:	211a178b          	mula	a5,s4,a7
    e883be5c:	216d978b          	mula	a5,s11,s6
    e883be60:	20c5978b          	mula	a5,a1,a2
    e883be64:	75e2                	ld	a1,56(sp)
    e883be66:	2155978b          	mula	a5,a1,s5
    e883be6a:	fc3e                	sd	a5,56(sp)
  crypto_int64 f2g2    = f2   * (crypto_int64) g2;
    e883be6c:	03cf07b3          	mul	a5,t5,t3
  crypto_int64 h4 = f0g4+f1g3_2 +f2g2   +f3g1_2 +f4g0   +f5g9_38+f6g8_19+f7g7_38+f8g6_19+f9g5_38;
    e883be70:	65a2                	ld	a1,8(sp)
    e883be72:	208e978b          	mula	a5,t4,s0
    e883be76:	2066978b          	mula	a5,a3,t1
    e883be7a:	2113978b          	mula	a5,t2,a7
    e883be7e:	20cd978b          	mula	a5,s11,a2
    e883be82:	2132978b          	mula	a5,t0,s3
    e883be86:	2128178b          	mula	a5,a6,s2
    e883be8a:	20bf978b          	mula	a5,t6,a1
    e883be8e:	65c2                	ld	a1,16(sp)
    e883be90:	20ba178b          	mula	a5,s4,a1
    e883be94:	85a6                	mv	a1,s1
    e883be96:	74a2                	ld	s1,40(sp)
    e883be98:	20b4978b          	mula	a5,s1,a1
  crypto_int64 h5 = f0g5+f1g4   +f2g3   +f3g2   +f4g1   +f5g0   +f6g9_19+f7g8_19+f8g7_19+f9g6_19;
  crypto_int64 h6 = f0g6+f1g5_2 +f2g4   +f3g3_2 +f4g2   +f5g1_2 +f6g0   +f7g9_38+f8g8_19+f9g7_38;
    e883be9c:	7482                	ld	s1,32(sp)
  crypto_int64 h4 = f0g4+f1g3_2 +f2g2   +f3g1_2 +f4g0   +f5g9_38+f6g8_19+f7g7_38+f8g6_19+f9g5_38;
    e883be9e:	85be                	mv	a1,a5
  crypto_int64 f1g4    = f1   * (crypto_int64) g4;
    e883bea0:	03a407b3          	mul	a5,s0,s10
  crypto_int64 h5 = f0g5+f1g4   +f2g3   +f3g2   +f4g1   +f5g0   +f6g9_19+f7g8_19+f8g7_19+f9g6_19;
    e883bea4:	218e978b          	mula	a5,t4,s8
    e883bea8:	21c2978b          	mula	a5,t0,t3
    e883beac:	219f178b          	mula	a5,t5,s9
    e883beb0:	2068178b          	mula	a5,a6,t1
    e883beb4:	2176978b          	mula	a5,a3,s7
    e883beb8:	211f978b          	mula	a5,t6,a7
    e883bebc:	2163978b          	mula	a5,t2,s6
    e883bec0:	20ca178b          	mula	a5,s4,a2
    e883bec4:	215d978b          	mula	a5,s11,s5
    e883bec8:	8dbe                	mv	s11,a5
  crypto_int64 f2g4    = f2   * (crypto_int64) g4;
    e883beca:	03c407b3          	mul	a5,s0,t3
  crypto_int64 h6 = f0g6+f1g5_2 +f2g4   +f3g3_2 +f4g2   +f5g1_2 +f6g0   +f7g9_38+f8g8_19+f9g7_38;
    e883bece:	209e978b          	mula	a5,t4,s1
    e883bed2:	64a2                	ld	s1,8(sp)
    e883bed4:	206f178b          	mula	a5,t5,t1
    e883bed8:	2116978b          	mula	a5,a3,a7
    e883bedc:	20c3978b          	mula	a5,t2,a2
    e883bee0:	213c178b          	mula	a5,s8,s3
    e883bee4:	2122978b          	mula	a5,t0,s2
    e883bee8:	2098178b          	mula	a5,a6,s1
    e883beec:	64c2                	ld	s1,16(sp)
    e883beee:	209f978b          	mula	a5,t6,s1
    e883bef2:	64e2                	ld	s1,24(sp)
    e883bef4:	209a178b          	mula	a5,s4,s1
  crypto_int64 h7 = f0g7+f1g6   +f2g5   +f3g4   +f4g3   +f5g2   +f6g1   +f7g0   +f8g9_19+f9g8_19;
    e883bef8:	74c2                	ld	s1,48(sp)
  crypto_int64 h6 = f0g6+f1g5_2 +f2g4   +f3g3_2 +f4g2   +f5g1_2 +f6g0   +f7g9_38+f8g8_19+f9g7_38;
    e883befa:	8a3e                	mv	s4,a5
  crypto_int64 f1g6    = f1   * (crypto_int64) g6;
    e883befc:	7782                	ld	a5,32(sp)
    e883befe:	03a787b3          	mul	a5,a5,s10
  crypto_int64 h7 = f0g7+f1g6   +f2g5   +f3g4   +f4g3   +f5g2   +f6g1   +f7g0   +f8g9_19+f9g8_19;
    e883bf02:	209e978b          	mula	a5,t4,s1
  crypto_int64 h8 = f0g8+f1g7_2 +f2g6   +f3g5_2 +f4g4   +f5g3_2 +f6g2   +f7g1_2 +f8g0   +f9g9_38;
    e883bf06:	6486                	ld	s1,64(sp)
  crypto_int64 h7 = f0g7+f1g6   +f2g5   +f3g4   +f4g3   +f5g2   +f6g1   +f7g0   +f8g9_19+f9g8_19;
    e883bf08:	21cc178b          	mula	a5,s8,t3
    e883bf0c:	2194178b          	mula	a5,s0,s9
    e883bf10:	2062978b          	mula	a5,t0,t1
    e883bf14:	217f178b          	mula	a5,t5,s7
    e883bf18:	2118178b          	mula	a5,a6,a7
    e883bf1c:	2166978b          	mula	a5,a3,s6
    e883bf20:	20cf978b          	mula	a5,t6,a2
    e883bf24:	2153978b          	mula	a5,t2,s5
    e883bf28:	83be                	mv	t2,a5
  crypto_int64 f2g6    = f2   * (crypto_int64) g6;
    e883bf2a:	7782                	ld	a5,32(sp)
    e883bf2c:	03c787b3          	mul	a5,a5,t3
  crypto_int64 h8 = f0g8+f1g7_2 +f2g6   +f3g5_2 +f4g4   +f5g3_2 +f6g2   +f7g1_2 +f8g0   +f9g9_38;
    e883bf30:	209e978b          	mula	a5,t4,s1
    e883bf34:	74c2                	ld	s1,48(sp)
    e883bf36:	2064178b          	mula	a5,s0,t1
    e883bf3a:	211f178b          	mula	a5,t5,a7
    e883bf3e:	20c6978b          	mula	a5,a3,a2
    e883bf42:	2134978b          	mula	a5,s1,s3
    e883bf46:	64a2                	ld	s1,8(sp)
    e883bf48:	212c178b          	mula	a5,s8,s2
    e883bf4c:	2092978b          	mula	a5,t0,s1
    e883bf50:	64c2                	ld	s1,16(sp)
    e883bf52:	2098178b          	mula	a5,a6,s1
    e883bf56:	64e2                	ld	s1,24(sp)
    e883bf58:	209f978b          	mula	a5,t6,s1
  crypto_int64 f1g8    = f1   * (crypto_int64) g8;
    e883bf5c:	6486                	ld	s1,64(sp)
    e883bf5e:	03a48d33          	mul	s10,s1,s10
  crypto_int64 h9 = f0g9+f1g8   +f2g7   +f3g6   +f4g5   +f5g4   +f6g3   +f7g2   +f8g1   +f9g0   ;
    e883bf62:	64c6                	ld	s1,80(sp)
    e883bf64:	21d49d0b          	mula	s10,s1,t4
    e883bf68:	74c2                	ld	s1,48(sp)
    e883bf6a:	21c49d0b          	mula	s10,s1,t3
    e883bf6e:	7482                	ld	s1,32(sp)
    e883bf70:	21949d0b          	mula	s10,s1,s9
    e883bf74:	206c1d0b          	mula	s10,s8,t1
    e883bf78:	21741d0b          	mula	s10,s0,s7
    i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8
  |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19))
    i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9
  */

  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883bf7c:	6466                	ld	s0,88(sp)
  crypto_int64 h9 = f0g9+f1g8   +f2g7   +f3g6   +f4g5   +f5g4   +f6g3   +f7g2   +f8g1   +f9g0   ;
    e883bf7e:	21129d0b          	mula	s10,t0,a7
  /* |h0| <= 2^25 */
  /* |h4| <= 2^25 */
  /* |h1| <= 1.71*2^59 */
  /* |h5| <= 1.71*2^59 */

  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883bf82:	fe0002b7          	lui	t0,0xfe000
  crypto_int64 h9 = f0g9+f1g8   +f2g7   +f3g6   +f4g5   +f5g4   +f6g3   +f7g2   +f8g1   +f9g0   ;
    e883bf86:	88ea                	mv	a7,s10
    e883bf88:	216f188b          	mula	a7,t5,s6
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883bf8c:	fc000f37          	lui	t5,0xfc000
  crypto_int64 h9 = f0g9+f1g8   +f2g7   +f3g6   +f4g5   +f5g4   +f6g3   +f7g2   +f8g1   +f9g0   ;
    e883bf90:	20c8188b          	mula	a7,a6,a2
    e883bf94:	8646                	mv	a2,a7
    e883bf96:	2156960b          	mula	a2,a3,s5
    e883bf9a:	86b2                	mv	a3,a2
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883bf9c:	02000637          	lui	a2,0x2000
    e883bfa0:	00c70833          	add	a6,a4,a2
    e883bfa4:	41a85e93          	srai	t4,a6,0x1a
    e883bfa8:	01e87833          	and	a6,a6,t5
    e883bfac:	41070733          	sub	a4,a4,a6
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883bfb0:	00c58833          	add	a6,a1,a2
    e883bfb4:	41a85313          	srai	t1,a6,0x1a
    e883bfb8:	01e87833          	and	a6,a6,t5
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883bfbc:	9ea2                	add	t4,t4,s0
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883bfbe:	410585b3          	sub	a1,a1,a6
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883bfc2:	01000837          	lui	a6,0x1000
    e883bfc6:	010e88b3          	add	a7,t4,a6
    e883bfca:	6426                	ld	s0,72(sp)
    e883bfcc:	4198df93          	srai	t6,a7,0x19
    e883bfd0:	0058f8b3          	and	a7,a7,t0
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883bfd4:	9d9a                	add	s11,s11,t1
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883bfd6:	411e8eb3          	sub	t4,t4,a7
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883bfda:	010d88b3          	add	a7,s11,a6
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883bfde:	9fa2                	add	t6,t6,s0
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883bfe0:	4198d313          	srai	t1,a7,0x19
  /* |h1| <= 2^24; from now on fits into int32 */
  /* |h5| <= 2^24; from now on fits into int32 */
  /* |h2| <= 1.41*2^60 */
  /* |h6| <= 1.41*2^60 */

  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883bfe4:	7462                	ld	s0,56(sp)
    e883bfe6:	00cf8933          	add	s2,t6,a2
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883bfea:	9a1a                	add	s4,s4,t1
    e883bfec:	0058f8b3          	and	a7,a7,t0
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883bff0:	00ca04b3          	add	s1,s4,a2
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883bff4:	41a95e13          	srai	t3,s2,0x1a
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883bff8:	411d8db3          	sub	s11,s11,a7
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883bffc:	9e22                	add	t3,t3,s0
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883bffe:	41a4d893          	srai	a7,s1,0x1a
  /* |h2| <= 2^25; from now on fits into int32 unchanged */
  /* |h6| <= 2^25; from now on fits into int32 unchanged */
  /* |h3| <= 1.71*2^59 */
  /* |h7| <= 1.71*2^59 */

  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c002:	010e0ab3          	add	s5,t3,a6
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c006:	93c6                	add	t2,t2,a7
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c008:	419ad893          	srai	a7,s5,0x19
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c00c:	01038433          	add	s0,t2,a6
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c010:	95c6                	add	a1,a1,a7
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c012:	41945893          	srai	a7,s0,0x19
    e883c016:	98be                	add	a7,a7,a5
  /* |h7| <= 2^24; from now on fits into int32 unchanged */
  /* |h4| <= 1.72*2^34 */
  /* |h8| <= 1.41*2^60 */

  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883c018:	00c889b3          	add	s3,a7,a2
    e883c01c:	41a9d793          	srai	a5,s3,0x1a
    e883c020:	96be                	add	a3,a3,a5
  /* |h4| <= 2^25; from now on fits into int32 unchanged */
  /* |h8| <= 2^25; from now on fits into int32 unchanged */
  /* |h5| <= 1.01*2^24 */
  /* |h9| <= 1.71*2^59 */

  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883c022:	9836                	add	a6,a6,a3
    e883c024:	41985b13          	srai	s6,a6,0x19
    e883c028:	47cd                	li	a5,19
    e883c02a:	20fb170b          	mula	a4,s6,a5
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c02e:	00c58333          	add	t1,a1,a2
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883c032:	01e97933          	and	s2,s2,t5
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c036:	005afab3          	and	s5,s5,t0
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c03a:	01e4f4b3          	and	s1,s1,t5
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c03e:	00547433          	and	s0,s0,t0
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883c042:	00587833          	and	a6,a6,t0
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c046:	409a0a33          	sub	s4,s4,s1
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883c04a:	412f8fb3          	sub	t6,t6,s2
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c04e:	415e0e33          	sub	t3,t3,s5
  /* |h9| <= 2^24; from now on fits into int32 unchanged */
  /* |h0| <= 1.1*2^39 */

  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c052:	963a                	add	a2,a2,a4
    e883c054:	01e677b3          	and	a5,a2,t5
    e883c058:	8f1d                	sub	a4,a4,a5
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c05a:	01e377b3          	and	a5,t1,t5
    e883c05e:	8d9d                	sub	a1,a1,a5
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c060:	8669                	srai	a2,a2,0x1a
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883c062:	01e9f7b3          	and	a5,s3,t5
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c066:	41a35313          	srai	t1,t1,0x1a
    e883c06a:	936e                	add	t1,t1,s11
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c06c:	408383b3          	sub	t2,t2,s0
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c070:	9676                	add	a2,a2,t4
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883c072:	40f887b3          	sub	a5,a7,a5
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883c076:	410686b3          	sub	a3,a3,a6
  h[1] = (crypto_int32) h1;
  h[2] = (crypto_int32) h2;
  h[3] = (crypto_int32) h3;
  h[4] = (crypto_int32) h4;
  h[5] = (crypto_int32) h5;
  h[6] = (crypto_int32) h6;
    e883c07a:	01452c23          	sw	s4,24(a0)
  h[0] = (crypto_int32) h0;
    e883c07e:	c118                	sw	a4,0(a0)
  h[1] = (crypto_int32) h1;
    e883c080:	c150                	sw	a2,4(a0)
  h[2] = (crypto_int32) h2;
    e883c082:	01f52423          	sw	t6,8(a0)
  h[3] = (crypto_int32) h3;
    e883c086:	01c52623          	sw	t3,12(a0)
  h[4] = (crypto_int32) h4;
    e883c08a:	c90c                	sw	a1,16(a0)
  h[5] = (crypto_int32) h5;
    e883c08c:	00652a23          	sw	t1,20(a0)
  h[7] = (crypto_int32) h7;
    e883c090:	00752e23          	sw	t2,28(a0)
  h[8] = (crypto_int32) h8;
    e883c094:	d11c                	sw	a5,32(a0)
  h[9] = (crypto_int32) h9;
    e883c096:	d154                	sw	a3,36(a0)
}
    e883c098:	746a                	ld	s0,184(sp)
    e883c09a:	74ca                	ld	s1,176(sp)
    e883c09c:	792a                	ld	s2,168(sp)
    e883c09e:	798a                	ld	s3,160(sp)
    e883c0a0:	6a6a                	ld	s4,152(sp)
    e883c0a2:	6aca                	ld	s5,144(sp)
    e883c0a4:	6b2a                	ld	s6,136(sp)
    e883c0a6:	6b8a                	ld	s7,128(sp)
    e883c0a8:	7c66                	ld	s8,120(sp)
    e883c0aa:	7cc6                	ld	s9,112(sp)
    e883c0ac:	7d26                	ld	s10,104(sp)
    e883c0ae:	7d86                	ld	s11,96(sp)
    e883c0b0:	6129                	addi	sp,sp,192
    e883c0b2:	8082                	ret

00000000e883c0b4 <fe_neg>:
  crypto_int32 f6 = f[6];
  crypto_int32 f7 = f[7];
  crypto_int32 f8 = f[8];
  crypto_int32 f9 = f[9];
  crypto_int32 h0 = -f0;
  crypto_int32 h1 = -f1;
    e883c0b4:	0045ae83          	lw	t4,4(a1)
  crypto_int32 h2 = -f2;
    e883c0b8:	0085ae03          	lw	t3,8(a1)
  crypto_int32 h3 = -f3;
    e883c0bc:	00c5a303          	lw	t1,12(a1)
  crypto_int32 h4 = -f4;
    e883c0c0:	0105a883          	lw	a7,16(a1)
  crypto_int32 h5 = -f5;
    e883c0c4:	0145a803          	lw	a6,20(a1)
  crypto_int32 h6 = -f6;
    e883c0c8:	4d90                	lw	a2,24(a1)
  crypto_int32 h7 = -f7;
    e883c0ca:	4dd4                	lw	a3,28(a1)
  crypto_int32 h8 = -f8;
    e883c0cc:	5198                	lw	a4,32(a1)
  crypto_int32 h9 = -f9;
    e883c0ce:	51dc                	lw	a5,36(a1)
  crypto_int32 h0 = -f0;
    e883c0d0:	418c                	lw	a1,0(a1)
  crypto_int32 h1 = -f1;
    e883c0d2:	41d00ebb          	negw	t4,t4
  crypto_int32 h2 = -f2;
    e883c0d6:	41c00e3b          	negw	t3,t3
  crypto_int32 h3 = -f3;
    e883c0da:	4060033b          	negw	t1,t1
  crypto_int32 h4 = -f4;
    e883c0de:	411008bb          	negw	a7,a7
  crypto_int32 h5 = -f5;
    e883c0e2:	4100083b          	negw	a6,a6
  crypto_int32 h6 = -f6;
    e883c0e6:	40c0063b          	negw	a2,a2
  crypto_int32 h7 = -f7;
    e883c0ea:	40d006bb          	negw	a3,a3
  crypto_int32 h8 = -f8;
    e883c0ee:	40e0073b          	negw	a4,a4
  crypto_int32 h9 = -f9;
    e883c0f2:	40f007bb          	negw	a5,a5
  crypto_int32 h0 = -f0;
    e883c0f6:	40b005bb          	negw	a1,a1
  h[0] = h0;
  h[1] = h1;
    e883c0fa:	e1d5558b          	swd	a1,t4,(a0),0,3
  h[2] = h2;
  h[3] = h3;
    e883c0fe:	e2655e0b          	swd	t3,t1,(a0),1,3
  h[4] = h4;
  h[5] = h5;
    e883c102:	e505588b          	swd	a7,a6,(a0),2,3
  h[6] = h6;
    e883c106:	cd10                	sw	a2,24(a0)
  h[7] = h7;
    e883c108:	cd54                	sw	a3,28(a0)
  h[8] = h8;
    e883c10a:	d118                	sw	a4,32(a0)
  h[9] = h9;
    e883c10c:	d15c                	sw	a5,36(a0)
}
    e883c10e:	8082                	ret

00000000e883c110 <fe_sq>:
/*
See fe_mul.c for discussion of implementation strategy.
*/

static void fe_sq(fe h,const fe f)
{
    e883c110:	715d                	addi	sp,sp,-80
    e883c112:	e0a6                	sd	s1,64(sp)
    e883c114:	fc4a                	sd	s2,56(sp)
    e883c116:	f056                	sd	s5,32(sp)
    e883c118:	ec5a                	sd	s6,24(sp)
    e883c11a:	e85e                	sd	s7,16(sp)
    e883c11c:	e4a2                	sd	s0,72(sp)
    e883c11e:	f84e                	sd	s3,48(sp)
    e883c120:	f452                	sd	s4,40(sp)
    e883c122:	e462                	sd	s8,8(sp)
    e883c124:	e066                	sd	s9,0(sp)
  crypto_int32 f3 = f[3];
  crypto_int32 f4 = f[4];
  crypto_int32 f5 = f[5];
  crypto_int32 f6 = f[6];
  crypto_int32 f7 = f[7];
  crypto_int32 f8 = f[8];
    e883c126:	5198                	lw	a4,32(a1)
  crypto_int32 f5 = f[5];
    e883c128:	e485cc0b          	lwd	s8,s0,(a1),2,3
  crypto_int32 f3 = f[3];
    e883c12c:	e395c88b          	lwd	a7,s9,(a1),1,3
  crypto_int32 f6 = f[6];
    e883c130:	0185a383          	lw	t2,24(a1)
  crypto_int32 f1 = f[1];
    e883c134:	e0d5cf0b          	lwd	t5,a3,(a1),0,3
  crypto_int32 f7 = f[7];
    e883c138:	01c5a983          	lw	s3,28(a1)
  crypto_int32 f9 = f[9];
    e883c13c:	0245aa03          	lw	s4,36(a1)
  crypto_int32 f6_2 = 2 * f6;
  crypto_int32 f7_2 = 2 * f7;
  crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */
  crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */
  crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */
  crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */
    e883c140:	45cd                	li	a1,19
  crypto_int64 f2f3_2  = f2_2 * (crypto_int64) f3;
  crypto_int64 f2f4_2  = f2_2 * (crypto_int64) f4;
  crypto_int64 f2f5_2  = f2_2 * (crypto_int64) f5;
  crypto_int64 f2f6_2  = f2_2 * (crypto_int64) f6;
  crypto_int64 f2f7_2  = f2_2 * (crypto_int64) f7;
  crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;
    e883c142:	02e58ebb          	mulw	t4,a1,a4
  crypto_int32 f2_2 = 2 * f2;
    e883c146:	0018991b          	slliw	s2,a7,0x1
  crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */
    e883c14a:	02600613          	li	a2,38
  crypto_int32 f1_2 = 2 * f1;
    e883c14e:	00169a9b          	slliw	s5,a3,0x1
  crypto_int32 f3_2 = 2 * f3;
    e883c152:	001c9e1b          	slliw	t3,s9,0x1
  crypto_int32 f4_2 = 2 * f4;
    e883c156:	001c149b          	slliw	s1,s8,0x1
  crypto_int32 f0_2 = 2 * f0;
    e883c15a:	001f131b          	slliw	t1,t5,0x1
  crypto_int32 f5_2 = 2 * f5;
    e883c15e:	00141b9b          	slliw	s7,s0,0x1
  crypto_int32 f7_2 = 2 * f7;
    e883c162:	0019979b          	slliw	a5,s3,0x1
  crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38;
    e883c166:	03460b3b          	mulw	s6,a2,s4
  crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;
    e883c16a:	03d90833          	mul	a6,s2,t4
  crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19;
  crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38;
  crypto_int64 f8f8_19 = f8   * (crypto_int64) f8_19;
  crypto_int64 f8f9_38 = f8   * (crypto_int64) f9_38;
  crypto_int64 f9f9_38 = f9   * (crypto_int64) f9_38;
  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
    e883c16e:	216a980b          	mula	a6,s5,s6
  crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38;
    e883c172:	03360fbb          	mulw	t6,a2,s3
  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
    e883c176:	21ef180b          	mula	a6,t5,t5
  crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19;
    e883c17a:	027585bb          	mulw	a1,a1,t2
  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
    e883c17e:	21fe180b          	mula	a6,t3,t6
  crypto_int64 f5f5_38 = f5   * (crypto_int64) f5_38;
    e883c182:	0286063b          	mulw	a2,a2,s0
  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
    e883c186:	20b4980b          	mula	a6,s1,a1
    e883c18a:	2086180b          	mula	a6,a2,s0
  crypto_int64 f1f1_2  = f1_2 * (crypto_int64) f1;
    e883c18e:	03568633          	mul	a2,a3,s5
  crypto_int64 f2f9_38 = f2   * (crypto_int64) f9_38;
    e883c192:	036882b3          	mul	t0,a7,s6
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883c196:	2113160b          	mula	a2,t1,a7
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
    e883c19a:	20d3128b          	mula	t0,t1,a3
  crypto_int32 f6_2 = 2 * f6;
    e883c19e:	0013969b          	slliw	a3,t2,0x1
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883c1a2:	216e160b          	mula	a2,t3,s6
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
    e883c1a6:	21de128b          	mula	t0,t3,t4
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883c1aa:	209e960b          	mula	a2,t4,s1
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
    e883c1ae:	21fc128b          	mula	t0,s8,t6
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883c1b2:	21fb960b          	mula	a2,s7,t6
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
    e883c1b6:	20bb928b          	mula	t0,s7,a1
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883c1ba:	20b3960b          	mula	a2,t2,a1
  crypto_int64 f1f3_4  = f1_2 * (crypto_int64) f3_2;
    e883c1be:	03ca85b3          	mul	a1,s5,t3
  crypto_int64 f1f2_2  = f1_2 * (crypto_int64) f2;
    e883c1c2:	03588f33          	mul	t5,a7,s5
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883c1c6:	2183158b          	mula	a1,t1,s8
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
    e883c1ca:	21931f0b          	mula	t5,t1,s9
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883c1ce:	2118958b          	mula	a1,a7,a7
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
    e883c1d2:	216c1f0b          	mula	t5,s8,s6
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883c1d6:	216b958b          	mula	a1,s7,s6
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
    e883c1da:	21db9f0b          	mula	t5,s7,t4
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883c1de:	21d6958b          	mula	a1,a3,t4
  crypto_int64 f1f5_4  = f1_2 * (crypto_int64) f5_2;
    e883c1e2:	037a88b3          	mul	a7,s5,s7
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883c1e6:	21f9958b          	mula	a1,s3,t6
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
    e883c1ea:	21f39f0b          	mula	t5,t2,t6
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883c1ee:	2073188b          	mula	a7,t1,t2
  crypto_int64 f1f4_2  = f1_2 * (crypto_int64) f4;
    e883c1f2:	035c0fb3          	mul	t6,s8,s5
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883c1f6:	212c188b          	mula	a7,s8,s2
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
    e883c1fa:	20831f8b          	mula	t6,t1,s0
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883c1fe:	21cc988b          	mula	a7,s9,t3
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
    e883c202:	212c9f8b          	mula	t6,s9,s2
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883c206:	2167988b          	mula	a7,a5,s6
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
    e883c20a:	21639f8b          	mula	t6,t2,s6
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883c20e:	21d7188b          	mula	a7,a4,t4
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
    e883c212:	21d79f8b          	mula	t6,a5,t4
  crypto_int64 f1f6_2  = f1_2 * (crypto_int64) f6;
    e883c216:	03538eb3          	mul	t4,t2,s5
  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;
    e883c21a:	21331e8b          	mula	t4,t1,s3
    e883c21e:	21241e8b          	mula	t4,s0,s2
  crypto_int64 f1f7_4  = f1_2 * (crypto_int64) f7_2;
    e883c222:	02fa86b3          	mul	a3,s5,a5
  crypto_int64 carry6;
  crypto_int64 carry7;
  crypto_int64 carry8;
  crypto_int64 carry9;

  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c226:	020007b7          	lui	a5,0x2000
  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;
    e883c22a:	21cc1e8b          	mula	t4,s8,t3
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883c22e:	20e3168b          	mula	a3,t1,a4
  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;
    e883c232:	21671e8b          	mula	t4,a4,s6
  crypto_int64 f1f8_2  = f1_2 * (crypto_int64) f8;
    e883c236:	03570733          	mul	a4,a4,s5
  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
    e883c23a:	2143170b          	mula	a4,t1,s4
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883c23e:	218c168b          	mula	a3,s8,s8
  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
    e883c242:	2129970b          	mula	a4,s3,s2
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883c246:	2123968b          	mula	a3,t2,s2
  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
    e883c24a:	21c3970b          	mula	a4,t2,t3
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c24e:	fc0003b7          	lui	t2,0xfc000
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883c252:	217e168b          	mula	a3,t3,s7
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c256:	00f80e33          	add	t3,a6,a5
    e883c25a:	41ae5313          	srai	t1,t3,0x1a
    e883c25e:	007e7e33          	and	t3,t3,t2
    e883c262:	929a                	add	t0,t0,t1
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c264:	00f58333          	add	t1,a1,a5
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c268:	41c80833          	sub	a6,a6,t3
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c26c:	41a35e13          	srai	t3,t1,0x1a
    e883c270:	00737333          	and	t1,t1,t2
    e883c274:	406585b3          	sub	a1,a1,t1

  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883c278:	01000337          	lui	t1,0x1000
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c27c:	9ff2                	add	t6,t6,t3
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883c27e:	00628e33          	add	t3,t0,t1
  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
    e883c282:	2094170b          	mula	a4,s0,s1
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883c286:	419e5413          	srai	s0,t3,0x19
    e883c28a:	9622                	add	a2,a2,s0
    e883c28c:	fe000437          	lui	s0,0xfe000
    e883c290:	008e7e33          	and	t3,t3,s0
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883c294:	006f84b3          	add	s1,t6,t1
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883c298:	41c282b3          	sub	t0,t0,t3
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883c29c:	4194de13          	srai	t3,s1,0x19

  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883c2a0:	00f609b3          	add	s3,a2,a5
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883c2a4:	98f2                	add	a7,a7,t3
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883c2a6:	216a168b          	mula	a3,s4,s6
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883c2aa:	41a9de13          	srai	t3,s3,0x1a
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c2ae:	00f88933          	add	s2,a7,a5
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883c2b2:	9f72                	add	t5,t5,t3
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c2b4:	41a95e13          	srai	t3,s2,0x1a

  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c2b8:	006f0ab3          	add	s5,t5,t1
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883c2bc:	8ce1                	and	s1,s1,s0
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c2be:	9ef2                	add	t4,t4,t3
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c2c0:	419ade13          	srai	t3,s5,0x19
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883c2c4:	409f8fb3          	sub	t6,t6,s1
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c2c8:	006e84b3          	add	s1,t4,t1
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c2cc:	95f2                	add	a1,a1,t3
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c2ce:	4194de13          	srai	t3,s1,0x19
    e883c2d2:	96f2                	add	a3,a3,t3

  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883c2d4:	00f68a33          	add	s4,a3,a5
    e883c2d8:	41aa5b13          	srai	s6,s4,0x1a
    e883c2dc:	975a                	add	a4,a4,s6

  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883c2de:	933a                	add	t1,t1,a4
    e883c2e0:	41935b93          	srai	s7,t1,0x19
    e883c2e4:	4b4d                	li	s6,19
    e883c2e6:	216b980b          	mula	a6,s7,s6
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c2ea:	00f58e33          	add	t3,a1,a5
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c2ee:	008afab3          	and	s5,s5,s0
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c2f2:	8ce1                	and	s1,s1,s0
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883c2f4:	00837333          	and	t1,t1,s0
  h[5] = (crypto_int32) h5;
  h[6] = (crypto_int32) h6;
  h[7] = (crypto_int32) h7;
  h[8] = (crypto_int32) h8;
  h[9] = (crypto_int32) h9;
}
    e883c2f8:	6426                	ld	s0,72(sp)
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883c2fa:	0079f9b3          	and	s3,s3,t2
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c2fe:	00797933          	and	s2,s2,t2
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883c302:	41360633          	sub	a2,a2,s3
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c306:	415f0f33          	sub	t5,t5,s5
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c30a:	97c2                	add	a5,a5,a6
    e883c30c:	0077fb33          	and	s6,a5,t2
    e883c310:	87e9                	srai	a5,a5,0x1a
    e883c312:	9796                	add	a5,a5,t0
  h[1] = (crypto_int32) h1;
    e883c314:	c15c                	sw	a5,4(a0)
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c316:	007e77b3          	and	a5,t3,t2
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883c31a:	007a73b3          	and	t2,s4,t2
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c31e:	41ae5e13          	srai	t3,t3,0x1a
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c322:	41680833          	sub	a6,a6,s6
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c326:	412888b3          	sub	a7,a7,s2
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c32a:	409e8eb3          	sub	t4,t4,s1
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c32e:	8d9d                	sub	a1,a1,a5
    e883c330:	9e7e                	add	t3,t3,t6
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883c332:	407686b3          	sub	a3,a3,t2
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883c336:	40670733          	sub	a4,a4,t1
}
    e883c33a:	6486                	ld	s1,64(sp)
  h[0] = (crypto_int32) h0;
    e883c33c:	01052023          	sw	a6,0(a0)
  h[2] = (crypto_int32) h2;
    e883c340:	c510                	sw	a2,8(a0)
  h[3] = (crypto_int32) h3;
    e883c342:	01e52623          	sw	t5,12(a0)
  h[4] = (crypto_int32) h4;
    e883c346:	c90c                	sw	a1,16(a0)
  h[5] = (crypto_int32) h5;
    e883c348:	01c52a23          	sw	t3,20(a0)
  h[6] = (crypto_int32) h6;
    e883c34c:	01152c23          	sw	a7,24(a0)
  h[7] = (crypto_int32) h7;
    e883c350:	01d52e23          	sw	t4,28(a0)
  h[8] = (crypto_int32) h8;
    e883c354:	d114                	sw	a3,32(a0)
  h[9] = (crypto_int32) h9;
    e883c356:	d158                	sw	a4,36(a0)
}
    e883c358:	7962                	ld	s2,56(sp)
    e883c35a:	79c2                	ld	s3,48(sp)
    e883c35c:	7a22                	ld	s4,40(sp)
    e883c35e:	7a82                	ld	s5,32(sp)
    e883c360:	6b62                	ld	s6,24(sp)
    e883c362:	6bc2                	ld	s7,16(sp)
    e883c364:	6c22                	ld	s8,8(sp)
    e883c366:	6c82                	ld	s9,0(sp)
    e883c368:	6161                	addi	sp,sp,80
    e883c36a:	8082                	ret

00000000e883c36c <fe_invert>:
{
    e883c36c:	7131                	addi	sp,sp,-192
    e883c36e:	f526                	sd	s1,168(sp)
    e883c370:	84aa                	mv	s1,a0
fe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0);
    e883c372:	850a                	mv	a0,sp
{
    e883c374:	fd06                	sd	ra,184(sp)
    e883c376:	f922                	sd	s0,176(sp)
    e883c378:	842e                	mv	s0,a1
fe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0);
    e883c37a:	d97ff0ef          	jal	ra,e883c110 <fe_sq>
fe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1);
    e883c37e:	858a                	mv	a1,sp
    e883c380:	1028                	addi	a0,sp,40
    e883c382:	d8fff0ef          	jal	ra,e883c110 <fe_sq>
    e883c386:	102c                	addi	a1,sp,40
    e883c388:	852e                	mv	a0,a1
    e883c38a:	d87ff0ef          	jal	ra,e883c110 <fe_sq>
fe_mul(t1,z,t1);
    e883c38e:	1030                	addi	a2,sp,40
    e883c390:	85a2                	mv	a1,s0
    e883c392:	8532                	mv	a0,a2
    e883c394:	955ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t1); for (i = 1;i < 5;++i) fe_sq(t2,t2);
    e883c398:	4411                	li	s0,4
fe_mul(t0,t0,t1);
    e883c39a:	1030                	addi	a2,sp,40
    e883c39c:	858a                	mv	a1,sp
    e883c39e:	850a                	mv	a0,sp
    e883c3a0:	949ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t0); for (i = 1;i < 1;++i) fe_sq(t2,t2);
    e883c3a4:	858a                	mv	a1,sp
    e883c3a6:	0888                	addi	a0,sp,80
    e883c3a8:	d69ff0ef          	jal	ra,e883c110 <fe_sq>
fe_mul(t1,t1,t2);
    e883c3ac:	102c                	addi	a1,sp,40
    e883c3ae:	852e                	mv	a0,a1
    e883c3b0:	0890                	addi	a2,sp,80
    e883c3b2:	937ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t1); for (i = 1;i < 5;++i) fe_sq(t2,t2);
    e883c3b6:	102c                	addi	a1,sp,40
    e883c3b8:	0888                	addi	a0,sp,80
    e883c3ba:	d57ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c3be:	088c                	addi	a1,sp,80
    e883c3c0:	852e                	mv	a0,a1
    e883c3c2:	347d                	addiw	s0,s0,-1
    e883c3c4:	d4dff0ef          	jal	ra,e883c110 <fe_sq>
    e883c3c8:	f87d                	bnez	s0,e883c3be <fe_invert+0x52>
fe_mul(t1,t2,t1);
    e883c3ca:	1030                	addi	a2,sp,40
    e883c3cc:	8532                	mv	a0,a2
    e883c3ce:	088c                	addi	a1,sp,80
    e883c3d0:	919ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t1); for (i = 1;i < 10;++i) fe_sq(t2,t2);
    e883c3d4:	4425                	li	s0,9
    e883c3d6:	102c                	addi	a1,sp,40
    e883c3d8:	0888                	addi	a0,sp,80
    e883c3da:	d37ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c3de:	088c                	addi	a1,sp,80
    e883c3e0:	852e                	mv	a0,a1
    e883c3e2:	347d                	addiw	s0,s0,-1
    e883c3e4:	d2dff0ef          	jal	ra,e883c110 <fe_sq>
    e883c3e8:	f87d                	bnez	s0,e883c3de <fe_invert+0x72>
fe_mul(t2,t2,t1);
    e883c3ea:	088c                	addi	a1,sp,80
    e883c3ec:	852e                	mv	a0,a1
    e883c3ee:	1030                	addi	a2,sp,40
    e883c3f0:	8f9ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t3,t2); for (i = 1;i < 20;++i) fe_sq(t3,t3);
    e883c3f4:	444d                	li	s0,19
    e883c3f6:	088c                	addi	a1,sp,80
    e883c3f8:	18a8                	addi	a0,sp,120
    e883c3fa:	d17ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c3fe:	18ac                	addi	a1,sp,120
    e883c400:	852e                	mv	a0,a1
    e883c402:	347d                	addiw	s0,s0,-1
    e883c404:	d0dff0ef          	jal	ra,e883c110 <fe_sq>
    e883c408:	f87d                	bnez	s0,e883c3fe <fe_invert+0x92>
fe_mul(t2,t3,t2);
    e883c40a:	0890                	addi	a2,sp,80
    e883c40c:	8532                	mv	a0,a2
    e883c40e:	18ac                	addi	a1,sp,120
    e883c410:	8d9ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t2); for (i = 1;i < 10;++i) fe_sq(t2,t2);
    e883c414:	4425                	li	s0,9
    e883c416:	088c                	addi	a1,sp,80
    e883c418:	852e                	mv	a0,a1
    e883c41a:	cf7ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c41e:	088c                	addi	a1,sp,80
    e883c420:	852e                	mv	a0,a1
    e883c422:	347d                	addiw	s0,s0,-1
    e883c424:	cedff0ef          	jal	ra,e883c110 <fe_sq>
    e883c428:	f87d                	bnez	s0,e883c41e <fe_invert+0xb2>
fe_mul(t1,t2,t1);
    e883c42a:	1030                	addi	a2,sp,40
    e883c42c:	8532                	mv	a0,a2
    e883c42e:	088c                	addi	a1,sp,80
    e883c430:	8b9ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t1); for (i = 1;i < 50;++i) fe_sq(t2,t2);
    e883c434:	03100413          	li	s0,49
    e883c438:	102c                	addi	a1,sp,40
    e883c43a:	0888                	addi	a0,sp,80
    e883c43c:	cd5ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c440:	088c                	addi	a1,sp,80
    e883c442:	852e                	mv	a0,a1
    e883c444:	347d                	addiw	s0,s0,-1
    e883c446:	ccbff0ef          	jal	ra,e883c110 <fe_sq>
    e883c44a:	f87d                	bnez	s0,e883c440 <fe_invert+0xd4>
fe_mul(t2,t2,t1);
    e883c44c:	088c                	addi	a1,sp,80
    e883c44e:	852e                	mv	a0,a1
    e883c450:	1030                	addi	a2,sp,40
    e883c452:	897ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t3,t2); for (i = 1;i < 100;++i) fe_sq(t3,t3);
    e883c456:	06300413          	li	s0,99
    e883c45a:	088c                	addi	a1,sp,80
    e883c45c:	18a8                	addi	a0,sp,120
    e883c45e:	cb3ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c462:	18ac                	addi	a1,sp,120
    e883c464:	852e                	mv	a0,a1
    e883c466:	347d                	addiw	s0,s0,-1
    e883c468:	ca9ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c46c:	f87d                	bnez	s0,e883c462 <fe_invert+0xf6>
fe_mul(t2,t3,t2);
    e883c46e:	0890                	addi	a2,sp,80
    e883c470:	8532                	mv	a0,a2
    e883c472:	18ac                	addi	a1,sp,120
    e883c474:	875ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t2); for (i = 1;i < 50;++i) fe_sq(t2,t2);
    e883c478:	03100413          	li	s0,49
    e883c47c:	088c                	addi	a1,sp,80
    e883c47e:	852e                	mv	a0,a1
    e883c480:	c91ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c484:	088c                	addi	a1,sp,80
    e883c486:	852e                	mv	a0,a1
    e883c488:	347d                	addiw	s0,s0,-1
    e883c48a:	c87ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c48e:	f87d                	bnez	s0,e883c484 <fe_invert+0x118>
fe_mul(t1,t2,t1);
    e883c490:	1030                	addi	a2,sp,40
    e883c492:	8532                	mv	a0,a2
    e883c494:	088c                	addi	a1,sp,80
    e883c496:	853ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t1,t1); for (i = 1;i < 5;++i) fe_sq(t1,t1);
    e883c49a:	4411                	li	s0,4
    e883c49c:	102c                	addi	a1,sp,40
    e883c49e:	852e                	mv	a0,a1
    e883c4a0:	c71ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c4a4:	102c                	addi	a1,sp,40
    e883c4a6:	852e                	mv	a0,a1
    e883c4a8:	347d                	addiw	s0,s0,-1
    e883c4aa:	c67ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c4ae:	f87d                	bnez	s0,e883c4a4 <fe_invert+0x138>
fe_mul(out,t1,t0);
    e883c4b0:	860a                	mv	a2,sp
    e883c4b2:	102c                	addi	a1,sp,40
    e883c4b4:	8526                	mv	a0,s1
    e883c4b6:	833ff0ef          	jal	ra,e883bce8 <fe_mul>
}
    e883c4ba:	744a                	ld	s0,176(sp)
    e883c4bc:	70ea                	ld	ra,184(sp)
    e883c4be:	74aa                	ld	s1,168(sp)
    e883c4c0:	6129                	addi	sp,sp,192
    e883c4c2:	8082                	ret

00000000e883c4c4 <fe_pow22523>:
{
    e883c4c4:	7135                	addi	sp,sp,-160
    e883c4c6:	e14a                	sd	s2,128(sp)
    e883c4c8:	892a                	mv	s2,a0
fe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0);
    e883c4ca:	0028                	addi	a0,sp,8
{
    e883c4cc:	ed06                	sd	ra,152(sp)
    e883c4ce:	e922                	sd	s0,144(sp)
    e883c4d0:	e526                	sd	s1,136(sp)
    e883c4d2:	84ae                	mv	s1,a1
fe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0);
    e883c4d4:	c3dff0ef          	jal	ra,e883c110 <fe_sq>
fe_sq(t1,t0); for (i = 1;i < 5;++i) fe_sq(t1,t1);
    e883c4d8:	4411                	li	s0,4
fe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1);
    e883c4da:	002c                	addi	a1,sp,8
    e883c4dc:	1808                	addi	a0,sp,48
    e883c4de:	c33ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c4e2:	180c                	addi	a1,sp,48
    e883c4e4:	852e                	mv	a0,a1
    e883c4e6:	c2bff0ef          	jal	ra,e883c110 <fe_sq>
fe_mul(t1,z,t1);
    e883c4ea:	1810                	addi	a2,sp,48
    e883c4ec:	8532                	mv	a0,a2
    e883c4ee:	85a6                	mv	a1,s1
    e883c4f0:	ff8ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(t0,t0,t1);
    e883c4f4:	002c                	addi	a1,sp,8
    e883c4f6:	1810                	addi	a2,sp,48
    e883c4f8:	852e                	mv	a0,a1
    e883c4fa:	feeff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t0,t0); for (i = 1;i < 1;++i) fe_sq(t0,t0);
    e883c4fe:	002c                	addi	a1,sp,8
    e883c500:	852e                	mv	a0,a1
    e883c502:	c0fff0ef          	jal	ra,e883c110 <fe_sq>
fe_mul(t0,t1,t0);
    e883c506:	0030                	addi	a2,sp,8
    e883c508:	8532                	mv	a0,a2
    e883c50a:	180c                	addi	a1,sp,48
    e883c50c:	fdcff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t1,t0); for (i = 1;i < 5;++i) fe_sq(t1,t1);
    e883c510:	002c                	addi	a1,sp,8
    e883c512:	1808                	addi	a0,sp,48
    e883c514:	bfdff0ef          	jal	ra,e883c110 <fe_sq>
    e883c518:	180c                	addi	a1,sp,48
    e883c51a:	852e                	mv	a0,a1
    e883c51c:	347d                	addiw	s0,s0,-1
    e883c51e:	bf3ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c522:	f87d                	bnez	s0,e883c518 <fe_pow22523+0x54>
fe_mul(t0,t1,t0);
    e883c524:	0030                	addi	a2,sp,8
    e883c526:	8532                	mv	a0,a2
    e883c528:	180c                	addi	a1,sp,48
    e883c52a:	fbeff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t1,t0); for (i = 1;i < 10;++i) fe_sq(t1,t1);
    e883c52e:	4425                	li	s0,9
    e883c530:	002c                	addi	a1,sp,8
    e883c532:	1808                	addi	a0,sp,48
    e883c534:	bddff0ef          	jal	ra,e883c110 <fe_sq>
    e883c538:	180c                	addi	a1,sp,48
    e883c53a:	852e                	mv	a0,a1
    e883c53c:	347d                	addiw	s0,s0,-1
    e883c53e:	bd3ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c542:	f87d                	bnez	s0,e883c538 <fe_pow22523+0x74>
fe_mul(t1,t1,t0);
    e883c544:	180c                	addi	a1,sp,48
    e883c546:	852e                	mv	a0,a1
    e883c548:	0030                	addi	a2,sp,8
    e883c54a:	f9eff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t1); for (i = 1;i < 20;++i) fe_sq(t2,t2);
    e883c54e:	444d                	li	s0,19
    e883c550:	180c                	addi	a1,sp,48
    e883c552:	08a8                	addi	a0,sp,88
    e883c554:	bbdff0ef          	jal	ra,e883c110 <fe_sq>
    e883c558:	08ac                	addi	a1,sp,88
    e883c55a:	852e                	mv	a0,a1
    e883c55c:	347d                	addiw	s0,s0,-1
    e883c55e:	bb3ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c562:	f87d                	bnez	s0,e883c558 <fe_pow22523+0x94>
fe_mul(t1,t2,t1);
    e883c564:	1810                	addi	a2,sp,48
    e883c566:	8532                	mv	a0,a2
    e883c568:	08ac                	addi	a1,sp,88
    e883c56a:	f7eff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t1,t1); for (i = 1;i < 10;++i) fe_sq(t1,t1);
    e883c56e:	4425                	li	s0,9
    e883c570:	180c                	addi	a1,sp,48
    e883c572:	852e                	mv	a0,a1
    e883c574:	b9dff0ef          	jal	ra,e883c110 <fe_sq>
    e883c578:	180c                	addi	a1,sp,48
    e883c57a:	852e                	mv	a0,a1
    e883c57c:	347d                	addiw	s0,s0,-1
    e883c57e:	b93ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c582:	f87d                	bnez	s0,e883c578 <fe_pow22523+0xb4>
fe_mul(t0,t1,t0);
    e883c584:	0030                	addi	a2,sp,8
    e883c586:	8532                	mv	a0,a2
    e883c588:	180c                	addi	a1,sp,48
    e883c58a:	f5eff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t1,t0); for (i = 1;i < 50;++i) fe_sq(t1,t1);
    e883c58e:	03100413          	li	s0,49
    e883c592:	002c                	addi	a1,sp,8
    e883c594:	1808                	addi	a0,sp,48
    e883c596:	b7bff0ef          	jal	ra,e883c110 <fe_sq>
    e883c59a:	180c                	addi	a1,sp,48
    e883c59c:	852e                	mv	a0,a1
    e883c59e:	347d                	addiw	s0,s0,-1
    e883c5a0:	b71ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c5a4:	f87d                	bnez	s0,e883c59a <fe_pow22523+0xd6>
fe_mul(t1,t1,t0);
    e883c5a6:	180c                	addi	a1,sp,48
    e883c5a8:	852e                	mv	a0,a1
    e883c5aa:	0030                	addi	a2,sp,8
    e883c5ac:	f3cff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t2,t1); for (i = 1;i < 100;++i) fe_sq(t2,t2);
    e883c5b0:	06300413          	li	s0,99
    e883c5b4:	180c                	addi	a1,sp,48
    e883c5b6:	08a8                	addi	a0,sp,88
    e883c5b8:	b59ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c5bc:	08ac                	addi	a1,sp,88
    e883c5be:	852e                	mv	a0,a1
    e883c5c0:	347d                	addiw	s0,s0,-1
    e883c5c2:	b4fff0ef          	jal	ra,e883c110 <fe_sq>
    e883c5c6:	f87d                	bnez	s0,e883c5bc <fe_pow22523+0xf8>
fe_mul(t1,t2,t1);
    e883c5c8:	1810                	addi	a2,sp,48
    e883c5ca:	8532                	mv	a0,a2
    e883c5cc:	08ac                	addi	a1,sp,88
    e883c5ce:	f1aff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t1,t1); for (i = 1;i < 50;++i) fe_sq(t1,t1);
    e883c5d2:	03100413          	li	s0,49
    e883c5d6:	180c                	addi	a1,sp,48
    e883c5d8:	852e                	mv	a0,a1
    e883c5da:	b37ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c5de:	180c                	addi	a1,sp,48
    e883c5e0:	852e                	mv	a0,a1
    e883c5e2:	347d                	addiw	s0,s0,-1
    e883c5e4:	b2dff0ef          	jal	ra,e883c110 <fe_sq>
    e883c5e8:	f87d                	bnez	s0,e883c5de <fe_pow22523+0x11a>
fe_mul(t0,t1,t0);
    e883c5ea:	0030                	addi	a2,sp,8
    e883c5ec:	8532                	mv	a0,a2
    e883c5ee:	180c                	addi	a1,sp,48
    e883c5f0:	ef8ff0ef          	jal	ra,e883bce8 <fe_mul>
fe_sq(t0,t0); for (i = 1;i < 2;++i) fe_sq(t0,t0);
    e883c5f4:	002c                	addi	a1,sp,8
    e883c5f6:	852e                	mv	a0,a1
    e883c5f8:	b19ff0ef          	jal	ra,e883c110 <fe_sq>
    e883c5fc:	002c                	addi	a1,sp,8
    e883c5fe:	852e                	mv	a0,a1
    e883c600:	b11ff0ef          	jal	ra,e883c110 <fe_sq>
fe_mul(out,t0,z);
    e883c604:	8626                	mv	a2,s1
    e883c606:	002c                	addi	a1,sp,8
    e883c608:	854a                	mv	a0,s2
    e883c60a:	edeff0ef          	jal	ra,e883bce8 <fe_mul>
}
    e883c60e:	644a                	ld	s0,144(sp)
    e883c610:	60ea                	ld	ra,152(sp)
    e883c612:	64aa                	ld	s1,136(sp)
    e883c614:	690a                	ld	s2,128(sp)
    e883c616:	610d                	addi	sp,sp,160
    e883c618:	8082                	ret

00000000e883c61a <fe_sub>:
  crypto_int32 g6 = g[6];
  crypto_int32 g7 = g[7];
  crypto_int32 g8 = g[8];
  crypto_int32 g9 = g[9];
  crypto_int32 h0 = f0 - g0;
  crypto_int32 h1 = f1 - g1;
    e883c61a:	425c                	lw	a5,4(a2)
    e883c61c:	0045af03          	lw	t5,4(a1)
  crypto_int32 h2 = f2 - g2;
    e883c620:	0085ae83          	lw	t4,8(a1)
  crypto_int32 h3 = f3 - g3;
    e883c624:	00c5ae03          	lw	t3,12(a1)
  crypto_int32 h1 = f1 - g1;
    e883c628:	40ff0f3b          	subw	t5,t5,a5
  crypto_int32 h2 = f2 - g2;
    e883c62c:	461c                	lw	a5,8(a2)
  crypto_int32 h4 = f4 - g4;
    e883c62e:	0105a303          	lw	t1,16(a1)
  crypto_int32 h5 = f5 - g5;
    e883c632:	0145a883          	lw	a7,20(a1)
  crypto_int32 h2 = f2 - g2;
    e883c636:	40fe8ebb          	subw	t4,t4,a5
  crypto_int32 h3 = f3 - g3;
    e883c63a:	465c                	lw	a5,12(a2)
  crypto_int32 h6 = f6 - g6;
    e883c63c:	0185a803          	lw	a6,24(a1)
  crypto_int32 h7 = f7 - g7;
    e883c640:	4dd4                	lw	a3,28(a1)
  crypto_int32 h3 = f3 - g3;
    e883c642:	40fe0e3b          	subw	t3,t3,a5
  crypto_int32 h4 = f4 - g4;
    e883c646:	4a1c                	lw	a5,16(a2)
  crypto_int32 h8 = f8 - g8;
    e883c648:	5198                	lw	a4,32(a1)
  crypto_int32 h9 = f9 - g9;
    e883c64a:	02462f83          	lw	t6,36(a2) # 2000024 <memcmp-0xe67fffdc>
  crypto_int32 h4 = f4 - g4;
    e883c64e:	40f3033b          	subw	t1,t1,a5
  crypto_int32 h5 = f5 - g5;
    e883c652:	4a5c                	lw	a5,20(a2)
    e883c654:	40f888bb          	subw	a7,a7,a5
  crypto_int32 h6 = f6 - g6;
    e883c658:	4e1c                	lw	a5,24(a2)
    e883c65a:	40f8083b          	subw	a6,a6,a5
  crypto_int32 h7 = f7 - g7;
    e883c65e:	4e5c                	lw	a5,28(a2)
    e883c660:	9e9d                	subw	a3,a3,a5
  crypto_int32 h8 = f8 - g8;
    e883c662:	521c                	lw	a5,32(a2)
  crypto_int32 h0 = f0 - g0;
    e883c664:	4210                	lw	a2,0(a2)
  crypto_int32 h8 = f8 - g8;
    e883c666:	9f1d                	subw	a4,a4,a5
  crypto_int32 h9 = f9 - g9;
    e883c668:	51dc                	lw	a5,36(a1)
  crypto_int32 h0 = f0 - g0;
    e883c66a:	418c                	lw	a1,0(a1)
  h[0] = h0;
  h[1] = h1;
  h[2] = h2;
  h[3] = h3;
    e883c66c:	e3c55e8b          	swd	t4,t3,(a0),1,3
  crypto_int32 h9 = f9 - g9;
    e883c670:	41f787bb          	subw	a5,a5,t6
  crypto_int32 h0 = f0 - g0;
    e883c674:	9d91                	subw	a1,a1,a2
  h[1] = h1;
    e883c676:	e1e5558b          	swd	a1,t5,(a0),0,3
  h[4] = h4;
  h[5] = h5;
    e883c67a:	e515530b          	swd	t1,a7,(a0),2,3
  h[6] = h6;
    e883c67e:	01052c23          	sw	a6,24(a0)
  h[7] = h7;
    e883c682:	cd54                	sw	a3,28(a0)
  h[8] = h8;
    e883c684:	d118                	sw	a4,32(a0)
  h[9] = h9;
    e883c686:	d15c                	sw	a5,36(a0)
}
    e883c688:	8082                	ret

00000000e883c68a <fe_tobytes>:
  crypto_int32 h4 = h[4];
  crypto_int32 h5 = h[5];
  crypto_int32 h6 = h[6];
  crypto_int32 h7 = h[7];
  crypto_int32 h8 = h[8];
  crypto_int32 h9 = h[9];
    e883c68a:	51d4                	lw	a3,36(a1)
  crypto_int32 h5 = h[5];
    e883c68c:	e465ce0b          	lwd	t3,t1,(a1),2,3
  crypto_int32 h1 = h[1];
    e883c690:	e1f5c70b          	lwd	a4,t6,(a1),0,3
  crypto_int32 h3 = h[3];
    e883c694:	e3d5cf0b          	lwd	t5,t4,(a1),1,3
  crypto_int32 h6 = h[6];
    e883c698:	0185a883          	lw	a7,24(a1)
  crypto_int32 h7 = h[7];
    e883c69c:	01c5a803          	lw	a6,28(a1)
  crypto_int32 h8 = h[8];
    e883c6a0:	5190                	lw	a2,32(a1)
  crypto_int32 carry6;
  crypto_int32 carry7;
  crypto_int32 carry8;
  crypto_int32 carry9;

  q = (19 * h9 + (((crypto_int32) 1) << 24)) >> 25;
    e883c6a2:	010007b7          	lui	a5,0x1000
    e883c6a6:	45cd                	li	a1,19
    e883c6a8:	24d5978b          	mulaw	a5,a1,a3
    e883c6ac:	4197d79b          	sraiw	a5,a5,0x19
  q = (h0 + q) >> 26;
    e883c6b0:	9fb9                	addw	a5,a5,a4
    e883c6b2:	41a7d79b          	sraiw	a5,a5,0x1a
  q = (h1 + q) >> 25;
    e883c6b6:	01f787bb          	addw	a5,a5,t6
    e883c6ba:	4197d79b          	sraiw	a5,a5,0x19
  q = (h2 + q) >> 26;
    e883c6be:	01e787bb          	addw	a5,a5,t5
    e883c6c2:	41a7d79b          	sraiw	a5,a5,0x1a
  q = (h3 + q) >> 25;
    e883c6c6:	01d787bb          	addw	a5,a5,t4
    e883c6ca:	4197d79b          	sraiw	a5,a5,0x19
  q = (h4 + q) >> 26;
    e883c6ce:	01c787bb          	addw	a5,a5,t3
    e883c6d2:	41a7d79b          	sraiw	a5,a5,0x1a
  q = (h5 + q) >> 25;
    e883c6d6:	006787bb          	addw	a5,a5,t1
    e883c6da:	4197d79b          	sraiw	a5,a5,0x19
  q = (h6 + q) >> 26;
    e883c6de:	011787bb          	addw	a5,a5,a7
    e883c6e2:	41a7d79b          	sraiw	a5,a5,0x1a
  q = (h7 + q) >> 25;
    e883c6e6:	010787bb          	addw	a5,a5,a6
    e883c6ea:	4197d79b          	sraiw	a5,a5,0x19
  q = (h8 + q) >> 26;
    e883c6ee:	9fb1                	addw	a5,a5,a2
    e883c6f0:	41a7d79b          	sraiw	a5,a5,0x1a
  q = (h9 + q) >> 25;
    e883c6f4:	9fb5                	addw	a5,a5,a3
    e883c6f6:	4197d79b          	sraiw	a5,a5,0x19

  /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */
  h0 += 19 * q;
    e883c6fa:	24b7970b          	mulaw	a4,a5,a1
    e883c6fe:	87ba                	mv	a5,a4
  /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */

  carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883c700:	41a7571b          	sraiw	a4,a4,0x1a
    e883c704:	01f70fbb          	addw	t6,a4,t6
  carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883c708:	419fd71b          	sraiw	a4,t6,0x19
    e883c70c:	01e70f3b          	addw	t5,a4,t5
  carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883c710:	41af571b          	sraiw	a4,t5,0x1a
    e883c714:	01d70ebb          	addw	t4,a4,t4
  carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883c718:	419ed71b          	sraiw	a4,t4,0x19
    e883c71c:	01c70e3b          	addw	t3,a4,t3
  carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883c720:	41ae571b          	sraiw	a4,t3,0x1a
    e883c724:	0067073b          	addw	a4,a4,t1
  carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883c728:	4197531b          	sraiw	t1,a4,0x19
    e883c72c:	011308bb          	addw	a7,t1,a7
  carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883c730:	41a8d59b          	sraiw	a1,a7,0x1a
    e883c734:	0105883b          	addw	a6,a1,a6
  carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883c738:	4198559b          	sraiw	a1,a6,0x19
    e883c73c:	9e2d                	addw	a2,a2,a1
  carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883c73e:	41a6559b          	sraiw	a1,a2,0x1a
    e883c742:	6407b78b          	extu	a5,a5,25,0
    e883c746:	2781                	sext.w	a5,a5
    e883c748:	9ead                	addw	a3,a3,a1
  Goal: Output h0+...+2^230 h9.
  */

  s[0] = (uint8_t)(h0 >> 0);
  s[1] = (uint8_t)(h0 >> 8);
  s[2] = (uint8_t)(h0 >> 16);
    e883c74a:	4107d59b          	sraiw	a1,a5,0x10
  s[3] = (uint8_t)((h0 >> 24) | (h1 << 2));
    e883c74e:	08000337          	lui	t1,0x8000
  s[2] = (uint8_t)(h0 >> 16);
    e883c752:	00b50123          	sb	a1,2(a0)
  s[3] = (uint8_t)((h0 >> 24) | (h1 << 2));
    e883c756:	ffc30293          	addi	t0,t1,-4 # 7fffffc <memcmp-0xe0800004>
    e883c75a:	002f959b          	slliw	a1,t6,0x2
  s[0] = (uint8_t)(h0 >> 0);
    e883c75e:	00f51023          	sh	a5,0(a0)
  s[3] = (uint8_t)((h0 >> 24) | (h1 << 2));
    e883c762:	0055f5b3          	and	a1,a1,t0
    e883c766:	7d87b78b          	extu	a5,a5,31,24
    e883c76a:	8fcd                	or	a5,a5,a1
    e883c76c:	00f501a3          	sb	a5,3(a0)
  s[4] = (uint8_t)(h1 >> 6);
    e883c770:	606fb78b          	extu	a5,t6,24,6
    e883c774:	00f50223          	sb	a5,4(a0)
  s[5] = (uint8_t)(h1 >> 14);
    e883c778:	60efb78b          	extu	a5,t6,24,14
  s[6] = (uint8_t)((h1 >> 22) | (h2 << 3));
    e883c77c:	200005b7          	lui	a1,0x20000
  s[5] = (uint8_t)(h1 >> 14);
    e883c780:	00f502a3          	sb	a5,5(a0)
  s[6] = (uint8_t)((h1 >> 22) | (h2 << 3));
    e883c784:	15e1                	addi	a1,a1,-8
    e883c786:	003f179b          	slliw	a5,t5,0x3
    e883c78a:	8fed                	and	a5,a5,a1
    e883c78c:	616fbf8b          	extu	t6,t6,24,22
    e883c790:	00ffefb3          	or	t6,t6,a5
  s[7] = (uint8_t)(h2 >> 5);
    e883c794:	645f378b          	extu	a5,t5,25,5
    e883c798:	00f503a3          	sb	a5,7(a0)
  s[8] = (uint8_t)(h2 >> 13);
    e883c79c:	64df378b          	extu	a5,t5,25,13
  s[9] = (uint8_t)((h2 >> 21) | (h3 << 5));
    e883c7a0:	400005b7          	lui	a1,0x40000
  s[6] = (uint8_t)((h1 >> 22) | (h2 << 3));
    e883c7a4:	01f50323          	sb	t6,6(a0)
  s[8] = (uint8_t)(h2 >> 13);
    e883c7a8:	00f50423          	sb	a5,8(a0)
  s[9] = (uint8_t)((h2 >> 21) | (h3 << 5));
    e883c7ac:	fe058f93          	addi	t6,a1,-32 # 3fffffe0 <memcmp-0xa8800020>
    e883c7b0:	005e979b          	slliw	a5,t4,0x5
    e883c7b4:	01f7f7b3          	and	a5,a5,t6
    e883c7b8:	655f3f0b          	extu	t5,t5,25,21
    e883c7bc:	00ff6f33          	or	t5,t5,a5
  s[10] = (uint8_t)(h3 >> 3);
    e883c7c0:	603eb78b          	extu	a5,t4,24,3
    e883c7c4:	00f50523          	sb	a5,10(a0)
  s[11] = (uint8_t)(h3 >> 11);
    e883c7c8:	60beb78b          	extu	a5,t4,24,11
    e883c7cc:	00f505a3          	sb	a5,11(a0)
  s[12] = (uint8_t)((h3 >> 19) | (h4 << 6));
    e883c7d0:	006e179b          	slliw	a5,t3,0x6
    e883c7d4:	613ebe8b          	extu	t4,t4,24,19
    e883c7d8:	00feeeb3          	or	t4,t4,a5
  s[13] = (uint8_t)(h4 >> 2);
    e883c7dc:	642e378b          	extu	a5,t3,25,2
    e883c7e0:	00f506a3          	sb	a5,13(a0)
    e883c7e4:	6007370b          	extu	a4,a4,24,0
  s[14] = (uint8_t)(h4 >> 10);
    e883c7e8:	64ae378b          	extu	a5,t3,25,10
    e883c7ec:	2701                	sext.w	a4,a4
    e883c7ee:	00f50723          	sb	a5,14(a0)
  s[15] = (uint8_t)(h4 >> 18);
  s[16] = (uint8_t)(h5 >> 0);
  s[17] = (uint8_t)(h5 >> 8);
  s[18] = (uint8_t)(h5 >> 16);
    e883c7f2:	4107579b          	sraiw	a5,a4,0x10
    e883c7f6:	00f50923          	sb	a5,18(a0)
  s[19] = (uint8_t)((h5 >> 24) | (h6 << 1));
    e883c7fa:	1379                	addi	t1,t1,-2
    e883c7fc:	0018979b          	slliw	a5,a7,0x1
    e883c800:	0067f7b3          	and	a5,a5,t1
  s[16] = (uint8_t)(h5 >> 0);
    e883c804:	00e51823          	sh	a4,16(a0)
  s[19] = (uint8_t)((h5 >> 24) | (h6 << 1));
    e883c808:	7d87370b          	extu	a4,a4,31,24
    e883c80c:	8f5d                	or	a4,a4,a5
  s[20] = (uint8_t)(h6 >> 7);
    e883c80e:	6478b78b          	extu	a5,a7,25,7
    e883c812:	00f50a23          	sb	a5,20(a0)
  s[21] = (uint8_t)(h6 >> 15);
    e883c816:	64f8b78b          	extu	a5,a7,25,15
  s[19] = (uint8_t)((h5 >> 24) | (h6 << 1));
    e883c81a:	00e509a3          	sb	a4,19(a0)
  s[22] = (uint8_t)((h6 >> 23) | (h7 << 3));
    e883c81e:	10000737          	lui	a4,0x10000
  s[21] = (uint8_t)(h6 >> 15);
    e883c822:	00f50aa3          	sb	a5,21(a0)
  s[22] = (uint8_t)((h6 >> 23) | (h7 << 3));
    e883c826:	1761                	addi	a4,a4,-8
    e883c828:	0038179b          	slliw	a5,a6,0x3
    e883c82c:	8ff9                	and	a5,a5,a4
    e883c82e:	6578b88b          	extu	a7,a7,25,23
    e883c832:	00f8e8b3          	or	a7,a7,a5
  s[23] = (uint8_t)(h7 >> 5);
    e883c836:	6058378b          	extu	a5,a6,24,5
  s[15] = (uint8_t)(h4 >> 18);
    e883c83a:	412e5e1b          	sraiw	t3,t3,0x12
  s[23] = (uint8_t)(h7 >> 5);
    e883c83e:	00f50ba3          	sb	a5,23(a0)
  s[9] = (uint8_t)((h2 >> 21) | (h3 << 5));
    e883c842:	01e504a3          	sb	t5,9(a0)
  s[24] = (uint8_t)(h7 >> 13);
    e883c846:	60d8378b          	extu	a5,a6,24,13
  s[12] = (uint8_t)((h3 >> 19) | (h4 << 6));
    e883c84a:	01d50623          	sb	t4,12(a0)
  s[15] = (uint8_t)(h4 >> 18);
    e883c84e:	01c507a3          	sb	t3,15(a0)
  s[22] = (uint8_t)((h6 >> 23) | (h7 << 3));
    e883c852:	01150b23          	sb	a7,22(a0)
  s[25] = (uint8_t)((h7 >> 21) | (h8 << 4));
    e883c856:	15c1                	addi	a1,a1,-16
  s[24] = (uint8_t)(h7 >> 13);
    e883c858:	00f50c23          	sb	a5,24(a0)
  s[25] = (uint8_t)((h7 >> 21) | (h8 << 4));
    e883c85c:	0046179b          	slliw	a5,a2,0x4
    e883c860:	8dfd                	and	a1,a1,a5
  s[26] = (uint8_t)(h8 >> 4);
    e883c862:	6446378b          	extu	a5,a2,25,4
    e883c866:	00f50d23          	sb	a5,26(a0)
  s[27] = (uint8_t)(h8 >> 12);
    e883c86a:	64c6378b          	extu	a5,a2,25,12
  s[28] = (uint8_t)((h8 >> 20) | (h9 << 6));
    e883c86e:	80000737          	lui	a4,0x80000
  s[27] = (uint8_t)(h8 >> 12);
    e883c872:	00f50da3          	sb	a5,27(a0)
  s[28] = (uint8_t)((h8 >> 20) | (h9 << 6));
    e883c876:	fc074713          	xori	a4,a4,-64
    e883c87a:	0066979b          	slliw	a5,a3,0x6
    e883c87e:	8ff9                	and	a5,a5,a4
    e883c880:	6546360b          	extu	a2,a2,25,20
    e883c884:	8e5d                	or	a2,a2,a5
  s[29] = (uint8_t)(h9 >> 2);
    e883c886:	6026b78b          	extu	a5,a3,24,2
  s[25] = (uint8_t)((h7 >> 21) | (h8 << 4));
    e883c88a:	6158380b          	extu	a6,a6,24,21
    e883c88e:	00b86833          	or	a6,a6,a1
  s[29] = (uint8_t)(h9 >> 2);
    e883c892:	00f50ea3          	sb	a5,29(a0)
  s[30] = (uint8_t)(h9 >> 10);
    e883c896:	60a6b78b          	extu	a5,a3,24,10
  s[31] = (uint8_t)(h9 >> 18);
    e883c89a:	6126b68b          	extu	a3,a3,24,18
  s[25] = (uint8_t)((h7 >> 21) | (h8 << 4));
    e883c89e:	01050ca3          	sb	a6,25(a0)
  s[28] = (uint8_t)((h8 >> 20) | (h9 << 6));
    e883c8a2:	00c50e23          	sb	a2,28(a0)
  s[30] = (uint8_t)(h9 >> 10);
    e883c8a6:	00f50f23          	sb	a5,30(a0)
  s[31] = (uint8_t)(h9 >> 18);
    e883c8aa:	00d50fa3          	sb	a3,31(a0)
}
    e883c8ae:	8082                	ret

00000000e883c8b0 <ge_add>:
/*
r = p + q
*/

static void ge_add(ge_p1p1 *r,const ge_p3 *p,const ge_cached *q)
{
    e883c8b0:	7159                	addi	sp,sp,-112
    e883c8b2:	e4ce                	sd	s3,72(sp)
/* qhasm: fe D */

/* qhasm: YpX1 = Y1+X1 */
/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */
/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */
fe_add(r->X,p->Y,p->X);
    e883c8b4:	02858993          	addi	s3,a1,40
{
    e883c8b8:	e8ca                	sd	s2,80(sp)
    e883c8ba:	e0d2                	sd	s4,64(sp)
    e883c8bc:	892e                	mv	s2,a1
    e883c8be:	8a32                	mv	s4,a2
fe_add(r->X,p->Y,p->X);
    e883c8c0:	862e                	mv	a2,a1
    e883c8c2:	85ce                	mv	a1,s3
{
    e883c8c4:	f486                	sd	ra,104(sp)
    e883c8c6:	f0a2                	sd	s0,96(sp)
    e883c8c8:	eca6                	sd	s1,88(sp)
    e883c8ca:	fc56                	sd	s5,56(sp)
    e883c8cc:	842a                	mv	s0,a0
fe_add(r->X,p->Y,p->X);
    e883c8ce:	aa4ff0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: YmX1 = Y1-X1 */
/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */
/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */
fe_sub(r->Y,p->Y,p->X);
    e883c8d2:	02840493          	addi	s1,s0,40 # fffffffffe000028 <__DRAM0_INF_BASE+0xfffffffefe010028>
    e883c8d6:	864a                	mv	a2,s2
    e883c8d8:	85ce                	mv	a1,s3
    e883c8da:	8526                	mv	a0,s1
    e883c8dc:	d3fff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: A = YpX1*YpX2 */
/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<YpX2=fe#15); */
/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<YpX2=q->YplusX); */
fe_mul(r->Z,r->X,q->YplusX);
    e883c8e0:	05040993          	addi	s3,s0,80
    e883c8e4:	8652                	mv	a2,s4
    e883c8e6:	85a2                	mv	a1,s0
    e883c8e8:	854e                	mv	a0,s3
    e883c8ea:	bfeff0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->Y,r->Y,q->YminusX);

/* qhasm: C = T2d2*T1 */
/* asm 1: fe_mul(>C=fe#4,<T2d2=fe#18,<T1=fe#14); */
/* asm 2: fe_mul(>C=r->T,<T2d2=q->T2d,<T1=p->T); */
fe_mul(r->T,q->T2d,p->T);
    e883c8ee:	07840a93          	addi	s5,s0,120
fe_mul(r->Y,r->Y,q->YminusX);
    e883c8f2:	028a0613          	addi	a2,s4,40
    e883c8f6:	85a6                	mv	a1,s1
    e883c8f8:	8526                	mv	a0,s1
    e883c8fa:	beeff0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->T,q->T2d,p->T);
    e883c8fe:	07890613          	addi	a2,s2,120
    e883c902:	078a0593          	addi	a1,s4,120
    e883c906:	8556                	mv	a0,s5
    e883c908:	be0ff0ef          	jal	ra,e883bce8 <fe_mul>

/* qhasm: ZZ = Z1*Z2 */
/* asm 1: fe_mul(>ZZ=fe#1,<Z1=fe#13,<Z2=fe#17); */
/* asm 2: fe_mul(>ZZ=r->X,<Z1=p->Z,<Z2=q->Z); */
fe_mul(r->X,p->Z,q->Z);
    e883c90c:	050a0613          	addi	a2,s4,80
    e883c910:	05090593          	addi	a1,s2,80
    e883c914:	8522                	mv	a0,s0
    e883c916:	bd2ff0ef          	jal	ra,e883bce8 <fe_mul>

/* qhasm: D = 2*ZZ */
/* asm 1: fe_add(>D=fe#5,<ZZ=fe#1,<ZZ=fe#1); */
/* asm 2: fe_add(>D=t0,<ZZ=r->X,<ZZ=r->X); */
fe_add(t0,r->X,r->X);
    e883c91a:	8622                	mv	a2,s0
    e883c91c:	85a2                	mv	a1,s0
    e883c91e:	0028                	addi	a0,sp,8
    e883c920:	a52ff0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: X3 = A-B */
/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */
/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */
fe_sub(r->X,r->Z,r->Y);
    e883c924:	8626                	mv	a2,s1
    e883c926:	85ce                	mv	a1,s3
    e883c928:	8522                	mv	a0,s0
    e883c92a:	cf1ff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: Y3 = A+B */
/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */
/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */
fe_add(r->Y,r->Z,r->Y);
    e883c92e:	8626                	mv	a2,s1
    e883c930:	85ce                	mv	a1,s3
    e883c932:	8526                	mv	a0,s1
    e883c934:	a3eff0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: Z3 = D+C */
/* asm 1: fe_add(>Z3=fe#3,<D=fe#5,<C=fe#4); */
/* asm 2: fe_add(>Z3=r->Z,<D=t0,<C=r->T); */
fe_add(r->Z,t0,r->T);
    e883c938:	8656                	mv	a2,s5
    e883c93a:	002c                	addi	a1,sp,8
    e883c93c:	854e                	mv	a0,s3
    e883c93e:	a34ff0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: T3 = D-C */
/* asm 1: fe_sub(>T3=fe#4,<D=fe#5,<C=fe#4); */
/* asm 2: fe_sub(>T3=r->T,<D=t0,<C=r->T); */
fe_sub(r->T,t0,r->T);
    e883c942:	8656                	mv	a2,s5
    e883c944:	002c                	addi	a1,sp,8
    e883c946:	8556                	mv	a0,s5
    e883c948:	cd3ff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: return */
}
    e883c94c:	7406                	ld	s0,96(sp)
    e883c94e:	70a6                	ld	ra,104(sp)
    e883c950:	64e6                	ld	s1,88(sp)
    e883c952:	6946                	ld	s2,80(sp)
    e883c954:	69a6                	ld	s3,72(sp)
    e883c956:	6a06                	ld	s4,64(sp)
    e883c958:	7ae2                	ld	s5,56(sp)
    e883c95a:	6165                	addi	sp,sp,112
    e883c95c:	8082                	ret

00000000e883c95e <ge_slide>:

static void ge_slide(signed char *r,const unsigned char *a)
{
    e883c95e:	4781                	li	a5,0
  int i;
  int b;
  int k;

  for (i = 0;i < 256;++i)
    e883c960:	10000613          	li	a2,256
    e883c964:	0007869b          	sext.w	a3,a5
    r[i] = 1 & (a[i >> 3] >> (i & 7));
    e883c968:	4036d713          	srai	a4,a3,0x3
    e883c96c:	80e5c70b          	lrbu	a4,a1,a4,0
    e883c970:	8a9d                	andi	a3,a3,7
    e883c972:	40d7573b          	sraw	a4,a4,a3
    e883c976:	8b05                	andi	a4,a4,1
    e883c978:	00f5570b          	srb	a4,a0,a5,0
  for (i = 0;i < 256;++i)
    e883c97c:	0785                	addi	a5,a5,1
    e883c97e:	fec793e3          	bne	a5,a2,e883c964 <ge_slide+0x6>
    e883c982:	4701                	li	a4,0

  for (i = 0;i < 256;++i)
    if (r[i]) {
      for (b = 1;b <= 6 && i + b < 256;++b) {
    e883c984:	0ff00313          	li	t1,255
        if (r[i + b]) {
          if (r[i] + (r[i + b] << b) <= 15) {
    e883c988:	4e3d                	li	t3,15
            r[i] += r[i + b] << b; r[i + b] = 0;
          } else if (r[i] - (r[i + b] << b) >= -15) {
    e883c98a:	5ec5                	li	t4,-15
            r[i] -= r[i + b] << b;
            for (k = i + b;k < 256;++k) {
              if (!r[k]) {
                r[k] = 1;
    e883c98c:	4f05                	li	t5,1
      for (b = 1;b <= 6 && i + b < 256;++b) {
    e883c98e:	4f9d                	li	t6,7
  for (i = 0;i < 256;++i)
    e883c990:	10000293          	li	t0,256
    if (r[i]) {
    e883c994:	80e5478b          	lrbu	a5,a0,a4,0
    e883c998:	00170893          	addi	a7,a4,1 # ffffffff80000001 <__DRAM0_INF_BASE+0xfffffffe80010001>
    e883c99c:	cf8d                	beqz	a5,e883c9d6 <ge_slide+0x78>
    e883c99e:	8646                	mv	a2,a7
      for (b = 1;b <= 6 && i + b < 256;++b) {
    e883c9a0:	4685                	li	a3,1
    e883c9a2:	00e687bb          	addw	a5,a3,a4
    e883c9a6:	02f36863          	bltu	t1,a5,e883c9d6 <ge_slide+0x78>
        if (r[i + b]) {
    e883c9aa:	00c5478b          	lrb	a5,a0,a2,0
    e883c9ae:	c385                	beqz	a5,e883c9ce <ge_slide+0x70>
          if (r[i] + (r[i + b] << b) <= 15) {
    e883c9b0:	00e5458b          	lrb	a1,a0,a4,0
    e883c9b4:	00d797bb          	sllw	a5,a5,a3
    e883c9b8:	0005881b          	sext.w	a6,a1
    e883c9bc:	010783bb          	addw	t2,a5,a6
    e883c9c0:	007e4f63          	blt	t3,t2,e883c9de <ge_slide+0x80>
            r[i] += r[i + b] << b; r[i + b] = 0;
    e883c9c4:	9fad                	addw	a5,a5,a1
    e883c9c6:	00e5578b          	srb	a5,a0,a4,0
    e883c9ca:	00c5500b          	srb	zero,a0,a2,0
      for (b = 1;b <= 6 && i + b < 256;++b) {
    e883c9ce:	2685                	addiw	a3,a3,1
    e883c9d0:	0605                	addi	a2,a2,1
    e883c9d2:	fdf698e3          	bne	a3,t6,e883c9a2 <ge_slide+0x44>
  for (i = 0;i < 256;++i)
    e883c9d6:	8746                	mv	a4,a7
    e883c9d8:	fa589ee3          	bne	a7,t0,e883c994 <ge_slide+0x36>
    e883c9dc:	8082                	ret
          } else if (r[i] - (r[i + b] << b) >= -15) {
    e883c9de:	40f8083b          	subw	a6,a6,a5
    e883c9e2:	ffd84ae3          	blt	a6,t4,e883c9d6 <ge_slide+0x78>
            r[i] -= r[i + b] << b;
    e883c9e6:	40f587bb          	subw	a5,a1,a5
    e883c9ea:	00e5578b          	srb	a5,a0,a4,0
    e883c9ee:	87b2                	mv	a5,a2
              if (!r[k]) {
    e883c9f0:	80f5480b          	lrbu	a6,a0,a5,0
    e883c9f4:	00f505b3          	add	a1,a0,a5
    e883c9f8:	00081563          	bnez	a6,e883ca02 <ge_slide+0xa4>
                r[k] = 1;
    e883c9fc:	01e58023          	sb	t5,0(a1)
                break;
    e883ca00:	b7f9                	j	e883c9ce <ge_slide+0x70>
              }
              r[k] = 0;
    e883ca02:	00f5500b          	srb	zero,a0,a5,0
            for (k = i + b;k < 256;++k) {
    e883ca06:	0785                	addi	a5,a5,1
    e883ca08:	0007859b          	sext.w	a1,a5
    e883ca0c:	feb352e3          	bge	t1,a1,e883c9f0 <ge_slide+0x92>
    e883ca10:	bf7d                	j	e883c9ce <ge_slide+0x70>

00000000e883ca12 <ge_madd>:
/*
r = p + q
*/

static void ge_madd(ge_p1p1 *r,const ge_p3 *p,const ge_precomp *q)
{
    e883ca12:	7159                	addi	sp,sp,-112
    e883ca14:	e4ce                	sd	s3,72(sp)
/* qhasm: fe D */

/* qhasm: YpX1 = Y1+X1 */
/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */
/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */
fe_add(r->X,p->Y,p->X);
    e883ca16:	02858993          	addi	s3,a1,40
{
    e883ca1a:	f0a2                	sd	s0,96(sp)
    e883ca1c:	fc56                	sd	s5,56(sp)
    e883ca1e:	842e                	mv	s0,a1
    e883ca20:	8ab2                	mv	s5,a2
fe_add(r->X,p->Y,p->X);
    e883ca22:	862e                	mv	a2,a1
    e883ca24:	85ce                	mv	a1,s3
{
    e883ca26:	f486                	sd	ra,104(sp)
    e883ca28:	eca6                	sd	s1,88(sp)
    e883ca2a:	e8ca                	sd	s2,80(sp)
    e883ca2c:	e0d2                	sd	s4,64(sp)
    e883ca2e:	892a                	mv	s2,a0
fe_add(r->X,p->Y,p->X);
    e883ca30:	942ff0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: YmX1 = Y1-X1 */
/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */
/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */
fe_sub(r->Y,p->Y,p->X);
    e883ca34:	02890493          	addi	s1,s2,40
    e883ca38:	8622                	mv	a2,s0
    e883ca3a:	85ce                	mv	a1,s3
    e883ca3c:	8526                	mv	a0,s1
    e883ca3e:	bddff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: A = YpX1*ypx2 */
/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<ypx2=fe#15); */
/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<ypx2=q->yplusx); */
fe_mul(r->Z,r->X,q->yplusx);
    e883ca42:	05090993          	addi	s3,s2,80
    e883ca46:	8656                	mv	a2,s5
    e883ca48:	85ca                	mv	a1,s2
    e883ca4a:	854e                	mv	a0,s3
    e883ca4c:	a9cff0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->Y,r->Y,q->yminusx);

/* qhasm: C = xy2d2*T1 */
/* asm 1: fe_mul(>C=fe#4,<xy2d2=fe#17,<T1=fe#14); */
/* asm 2: fe_mul(>C=r->T,<xy2d2=q->xy2d,<T1=p->T); */
fe_mul(r->T,q->xy2d,p->T);
    e883ca50:	07890a13          	addi	s4,s2,120
fe_mul(r->Y,r->Y,q->yminusx);
    e883ca54:	028a8613          	addi	a2,s5,40
    e883ca58:	85a6                	mv	a1,s1
    e883ca5a:	8526                	mv	a0,s1
    e883ca5c:	a8cff0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->T,q->xy2d,p->T);
    e883ca60:	07840613          	addi	a2,s0,120
    e883ca64:	050a8593          	addi	a1,s5,80
    e883ca68:	8552                	mv	a0,s4
    e883ca6a:	a7eff0ef          	jal	ra,e883bce8 <fe_mul>

/* qhasm: D = 2*Z1 */
/* asm 1: fe_add(>D=fe#5,<Z1=fe#13,<Z1=fe#13); */
/* asm 2: fe_add(>D=t0,<Z1=p->Z,<Z1=p->Z); */
fe_add(t0,p->Z,p->Z);
    e883ca6e:	05040613          	addi	a2,s0,80
    e883ca72:	85b2                	mv	a1,a2
    e883ca74:	0028                	addi	a0,sp,8
    e883ca76:	8fcff0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: X3 = A-B */
/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */
/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */
fe_sub(r->X,r->Z,r->Y);
    e883ca7a:	8626                	mv	a2,s1
    e883ca7c:	85ce                	mv	a1,s3
    e883ca7e:	854a                	mv	a0,s2
    e883ca80:	b9bff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: Y3 = A+B */
/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */
/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */
fe_add(r->Y,r->Z,r->Y);
    e883ca84:	8626                	mv	a2,s1
    e883ca86:	85ce                	mv	a1,s3
    e883ca88:	8526                	mv	a0,s1
    e883ca8a:	8e8ff0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: Z3 = D+C */
/* asm 1: fe_add(>Z3=fe#3,<D=fe#5,<C=fe#4); */
/* asm 2: fe_add(>Z3=r->Z,<D=t0,<C=r->T); */
fe_add(r->Z,t0,r->T);
    e883ca8e:	8652                	mv	a2,s4
    e883ca90:	002c                	addi	a1,sp,8
    e883ca92:	854e                	mv	a0,s3
    e883ca94:	8deff0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: T3 = D-C */
/* asm 1: fe_sub(>T3=fe#4,<D=fe#5,<C=fe#4); */
/* asm 2: fe_sub(>T3=r->T,<D=t0,<C=r->T); */
fe_sub(r->T,t0,r->T);
    e883ca98:	8652                	mv	a2,s4
    e883ca9a:	002c                	addi	a1,sp,8
    e883ca9c:	8552                	mv	a0,s4
    e883ca9e:	b7dff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: return */
}
    e883caa2:	7406                	ld	s0,96(sp)
    e883caa4:	70a6                	ld	ra,104(sp)
    e883caa6:	64e6                	ld	s1,88(sp)
    e883caa8:	6946                	ld	s2,80(sp)
    e883caaa:	69a6                	ld	s3,72(sp)
    e883caac:	6a06                	ld	s4,64(sp)
    e883caae:	7ae2                	ld	s5,56(sp)
    e883cab0:	6165                	addi	sp,sp,112
    e883cab2:	8082                	ret

00000000e883cab4 <ge_p1p1_to_p2>:
/*
r = p
*/

static void ge_p1p1_to_p2(ge_p2 *r,const ge_p1p1 *p)
{
    e883cab4:	7179                	addi	sp,sp,-48
    e883cab6:	f04e                	sd	s3,32(sp)
  fe_mul(r->X,p->X,p->T);
    e883cab8:	07858993          	addi	s3,a1,120
    e883cabc:	864e                	mv	a2,s3
{
    e883cabe:	f406                	sd	ra,40(sp)
    e883cac0:	e422                	sd	s0,8(sp)
    e883cac2:	e826                	sd	s1,16(sp)
    e883cac4:	ec4a                	sd	s2,24(sp)
    e883cac6:	84aa                	mv	s1,a0
    e883cac8:	842e                	mv	s0,a1
  fe_mul(r->X,p->X,p->T);
    e883caca:	a1eff0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(r->Y,p->Y,p->Z);
    e883cace:	05040913          	addi	s2,s0,80
    e883cad2:	864a                	mv	a2,s2
    e883cad4:	02840593          	addi	a1,s0,40
    e883cad8:	02848513          	addi	a0,s1,40
    e883cadc:	a0cff0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(r->Z,p->Z,p->T);
}
    e883cae0:	6422                	ld	s0,8(sp)
    e883cae2:	70a2                	ld	ra,40(sp)
  fe_mul(r->Z,p->Z,p->T);
    e883cae4:	864e                	mv	a2,s3
    e883cae6:	85ca                	mv	a1,s2
}
    e883cae8:	7982                	ld	s3,32(sp)
    e883caea:	6962                	ld	s2,24(sp)
  fe_mul(r->Z,p->Z,p->T);
    e883caec:	05048513          	addi	a0,s1,80
}
    e883caf0:	64c2                	ld	s1,16(sp)
    e883caf2:	6145                	addi	sp,sp,48
  fe_mul(r->Z,p->Z,p->T);
    e883caf4:	9f4ff06f          	j	e883bce8 <fe_mul>

00000000e883caf8 <ge_p1p1_to_p3>:
/*
r = p
*/

static void ge_p1p1_to_p3(ge_p3 *r,const ge_p1p1 *p)
{
    e883caf8:	7179                	addi	sp,sp,-48
    e883cafa:	f052                	sd	s4,32(sp)
  fe_mul(r->X,p->X,p->T);
    e883cafc:	07858a13          	addi	s4,a1,120
    e883cb00:	8652                	mv	a2,s4
{
    e883cb02:	f406                	sd	ra,40(sp)
    e883cb04:	f891540b          	sdd	s0,s1,(sp),0,4
    e883cb08:	fb31590b          	sdd	s2,s3,(sp),1,4
    e883cb0c:	842e                	mv	s0,a1
    e883cb0e:	84aa                	mv	s1,a0
  fe_mul(r->X,p->X,p->T);
    e883cb10:	9d8ff0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(r->Y,p->Y,p->Z);
    e883cb14:	02840913          	addi	s2,s0,40
    e883cb18:	05040993          	addi	s3,s0,80
    e883cb1c:	864e                	mv	a2,s3
    e883cb1e:	85ca                	mv	a1,s2
    e883cb20:	02848513          	addi	a0,s1,40
    e883cb24:	9c4ff0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(r->Z,p->Z,p->T);
    e883cb28:	8652                	mv	a2,s4
    e883cb2a:	85ce                	mv	a1,s3
    e883cb2c:	05048513          	addi	a0,s1,80
    e883cb30:	9b8ff0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(r->T,p->X,p->Y);
}
    e883cb34:	7a02                	ld	s4,32(sp)
  fe_mul(r->T,p->X,p->Y);
    e883cb36:	85a2                	mv	a1,s0
    e883cb38:	07848513          	addi	a0,s1,120
}
    e883cb3c:	f891440b          	ldd	s0,s1,(sp),0,4
    e883cb40:	70a2                	ld	ra,40(sp)
  fe_mul(r->T,p->X,p->Y);
    e883cb42:	864a                	mv	a2,s2
}
    e883cb44:	fb31490b          	ldd	s2,s3,(sp),1,4
    e883cb48:	6145                	addi	sp,sp,48
  fe_mul(r->T,p->X,p->Y);
    e883cb4a:	99eff06f          	j	e883bce8 <fe_mul>

00000000e883cb4e <ge_p2_dbl>:
/*
r = 2 * p
*/

static void ge_p2_dbl(ge_p1p1 *r,const ge_p2 *p)
{
    e883cb4e:	7171                	addi	sp,sp,-176
    e883cb50:	f506                	sd	ra,168(sp)
    e883cb52:	f122                	sd	s0,160(sp)
    e883cb54:	ed26                	sd	s1,152(sp)
    e883cb56:	842a                	mv	s0,a0
    e883cb58:	e94a                	sd	s2,144(sp)
    e883cb5a:	e54e                	sd	s3,136(sp)
    e883cb5c:	e152                	sd	s4,128(sp)
    e883cb5e:	fcd6                	sd	s5,120(sp)
    e883cb60:	f8da                	sd	s6,112(sp)
    e883cb62:	f4de                	sd	s7,104(sp)
    e883cb64:	f0e2                	sd	s8,96(sp)
    e883cb66:	ece6                	sd	s9,88(sp)
    e883cb68:	e8ea                	sd	s10,80(sp)
    e883cb6a:	e4ee                	sd	s11,72(sp)
    e883cb6c:	84ae                	mv	s1,a1
/* qhasm: fe T3 */

/* qhasm: XX=X1^2 */
/* asm 1: fe_sq(>XX=fe#1,<X1=fe#11); */
/* asm 2: fe_sq(>XX=r->X,<X1=p->X); */
fe_sq(r->X,p->X);
    e883cb6e:	da2ff0ef          	jal	ra,e883c110 <fe_sq>

/* qhasm: YY=Y1^2 */
/* asm 1: fe_sq(>YY=fe#3,<Y1=fe#12); */
/* asm 2: fe_sq(>YY=r->Z,<Y1=p->Y); */
fe_sq(r->Z,p->Y);
    e883cb72:	05040913          	addi	s2,s0,80
    e883cb76:	02848613          	addi	a2,s1,40
    e883cb7a:	85b2                	mv	a1,a2
    e883cb7c:	854a                	mv	a0,s2
    e883cb7e:	e432                	sd	a2,8(sp)
    e883cb80:	d90ff0ef          	jal	ra,e883c110 <fe_sq>
  crypto_int32 f9 = f[9];
    e883cb84:	0744ab83          	lw	s7,116(s1)
  crypto_int32 f8 = f[8];
    e883cb88:	58b8                	lw	a4,112(s1)
  crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */
    e883cb8a:	4f4d                	li	t5,19
  crypto_int32 f2 = f[2];
    e883cb8c:	0584a883          	lw	a7,88(s1)
  crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;
    e883cb90:	02ef0ebb          	mulw	t4,t5,a4
  crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */
    e883cb94:	02600813          	li	a6,38
  crypto_int32 f2_2 = 2 * f2;
    e883cb98:	00189a9b          	slliw	s5,a7,0x1
  crypto_int32 f1 = f[1];
    e883cb9c:	48e8                	lw	a0,84(s1)
  crypto_int32 f7 = f[7];
    e883cb9e:	06c4ab03          	lw	s6,108(s1)
  crypto_int32 f0 = f[0];
    e883cba2:	0504a283          	lw	t0,80(s1)
  crypto_int32 f1_2 = 2 * f1;
    e883cba6:	00151c1b          	slliw	s8,a0,0x1
  crypto_int32 f3 = f[3];
    e883cbaa:	4cf4                	lw	a3,92(s1)
  crypto_int32 f6 = f[6];
    e883cbac:	0684a383          	lw	t2,104(s1)
  crypto_int32 f4 = f[4];
    e883cbb0:	0604ad83          	lw	s11,96(s1)
  crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38;
    e883cbb4:	03780cbb          	mulw	s9,a6,s7
  crypto_int32 f3_2 = 2 * f3;
    e883cbb8:	00169e1b          	slliw	t3,a3,0x1
  crypto_int32 f5 = f[5];
    e883cbbc:	0644a083          	lw	ra,100(s1)
  crypto_int32 f4_2 = 2 * f4;
    e883cbc0:	001d9a1b          	slliw	s4,s11,0x1
  crypto_int32 f0_2 = 2 * f0;
    e883cbc4:	0012931b          	slliw	t1,t0,0x1
  crypto_int32 f5_2 = 2 * f5;
    e883cbc8:	00109d1b          	slliw	s10,ra,0x1
  crypto_int32 f7_2 = 2 * f7;
    e883cbcc:	001b159b          	slliw	a1,s6,0x1
fe_sq2(r->T,p->Z);

/* qhasm: A=X1+Y1 */
/* asm 1: fe_add(>A=fe#2,<X1=fe#11,<Y1=fe#12); */
/* asm 2: fe_add(>A=r->Y,<X1=p->X,<Y1=p->Y); */
fe_add(r->Y,p->X,p->Y);
    e883cbd0:	6622                	ld	a2,8(sp)
fe_sq2(r->T,p->Z);
    e883cbd2:	07840993          	addi	s3,s0,120
  crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;
    e883cbd6:	03da87b3          	mul	a5,s5,t4
  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
    e883cbda:	219c178b          	mula	a5,s8,s9
  crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38;
    e883cbde:	03680fbb          	mulw	t6,a6,s6
  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
    e883cbe2:	2052978b          	mula	a5,t0,t0
  crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19;
    e883cbe6:	027f0f3b          	mulw	t5,t5,t2
  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
    e883cbea:	21fe178b          	mula	a5,t3,t6
  crypto_int64 f5f5_38 = f5   * (crypto_int64) f5_38;
    e883cbee:	0218083b          	mulw	a6,a6,ra
  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
    e883cbf2:	21ea178b          	mula	a5,s4,t5
    e883cbf6:	2018178b          	mula	a5,a6,ra
  crypto_int64 f1f1_2  = f1_2 * (crypto_int64) f1;
    e883cbfa:	03850833          	mul	a6,a0,s8
  h0 += h0;
    e883cbfe:	0786                	slli	a5,a5,0x1
  crypto_int64 f2f9_38 = f2   * (crypto_int64) f9_38;
    e883cc00:	039882b3          	mul	t0,a7,s9
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883cc04:	2113180b          	mula	a6,t1,a7
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
    e883cc08:	20a3128b          	mula	t0,t1,a0
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883cc0c:	219e180b          	mula	a6,t3,s9
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
    e883cc10:	21de128b          	mula	t0,t3,t4
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883cc14:	214e980b          	mula	a6,t4,s4
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
    e883cc18:	21fd928b          	mula	t0,s11,t6
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883cc1c:	21fd180b          	mula	a6,s10,t6
  crypto_int64 f1f3_4  = f1_2 * (crypto_int64) f3_2;
    e883cc20:	03cc0533          	mul	a0,s8,t3
  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
    e883cc24:	21ed128b          	mula	t0,s10,t5
  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
    e883cc28:	21e3980b          	mula	a6,t2,t5
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883cc2c:	21b3150b          	mula	a0,t1,s11
  crypto_int64 f1f2_2  = f1_2 * (crypto_int64) f2;
    e883cc30:	03888f33          	mul	t5,a7,s8
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883cc34:	2118950b          	mula	a0,a7,a7
  crypto_int32 f6_2 = 2 * f6;
    e883cc38:	0013989b          	slliw	a7,t2,0x1
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
    e883cc3c:	20d31f0b          	mula	t5,t1,a3
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883cc40:	219d150b          	mula	a0,s10,s9
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
    e883cc44:	219d9f0b          	mula	t5,s11,s9
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883cc48:	21d8950b          	mula	a0,a7,t4
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
    e883cc4c:	21dd1f0b          	mula	t5,s10,t4
  crypto_int64 f1f5_4  = f1_2 * (crypto_int64) f5_2;
    e883cc50:	03ac08b3          	mul	a7,s8,s10
  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
    e883cc54:	21f39f0b          	mula	t5,t2,t6
  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;
    e883cc58:	21fb150b          	mula	a0,s6,t6
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883cc5c:	2073188b          	mula	a7,t1,t2
  h4 += h4;
    e883cc60:	0506                	slli	a0,a0,0x1
  crypto_int64 f1f4_2  = f1_2 * (crypto_int64) f4;
    e883cc62:	038d8fb3          	mul	t6,s11,s8
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883cc66:	215d988b          	mula	a7,s11,s5
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
    e883cc6a:	20131f8b          	mula	t6,t1,ra
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883cc6e:	21c6988b          	mula	a7,a3,t3
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
    e883cc72:	21569f8b          	mula	t6,a3,s5
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883cc76:	020006b7          	lui	a3,0x2000
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
    e883cc7a:	21939f8b          	mula	t6,t2,s9
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883cc7e:	2195988b          	mula	a7,a1,s9
  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
    e883cc82:	21d59f8b          	mula	t6,a1,t4
  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
    e883cc86:	21d7188b          	mula	a7,a4,t4
  crypto_int64 f1f6_2  = f1_2 * (crypto_int64) f6;
    e883cc8a:	03838eb3          	mul	t4,t2,s8
  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;
    e883cc8e:	21631e8b          	mula	t4,t1,s6
    e883cc92:	21509e8b          	mula	t4,ra,s5
  crypto_int64 f1f7_4  = f1_2 * (crypto_int64) f7_2;
    e883cc96:	02bc05b3          	mul	a1,s8,a1
  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;
    e883cc9a:	21cd9e8b          	mula	t4,s11,t3
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883cc9e:	20e3158b          	mula	a1,t1,a4
  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;
    e883cca2:	21971e8b          	mula	t4,a4,s9
  crypto_int64 f1f8_2  = f1_2 * (crypto_int64) f8;
    e883cca6:	03870733          	mul	a4,a4,s8
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883ccaa:	21bd958b          	mula	a1,s11,s11
  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
    e883ccae:	2173170b          	mula	a4,t1,s7
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883ccb2:	00d78333          	add	t1,a5,a3
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883ccb6:	2153958b          	mula	a1,t2,s5
  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
    e883ccba:	215b170b          	mula	a4,s6,s5
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883ccbe:	21ae158b          	mula	a1,t3,s10
  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
    e883ccc2:	21c3970b          	mula	a4,t2,t3
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883ccc6:	41a35e13          	srai	t3,t1,0x1a
    e883ccca:	025e128b          	addsl	t0,t3,t0,1
    e883ccce:	fc000e37          	lui	t3,0xfc000
    e883ccd2:	01c37333          	and	t1,t1,t3
    e883ccd6:	406787b3          	sub	a5,a5,t1
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883ccda:	00d50333          	add	t1,a0,a3
    e883ccde:	41a35393          	srai	t2,t1,0x1a
    e883cce2:	01c37333          	and	t1,t1,t3
    e883cce6:	40650533          	sub	a0,a0,t1
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883ccea:	01000337          	lui	t1,0x1000
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883ccee:	03f39f8b          	addsl	t6,t2,t6,1
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883ccf2:	006283b3          	add	t2,t0,t1
  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
    e883ccf6:	2140970b          	mula	a4,ra,s4
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883ccfa:	4193d093          	srai	ra,t2,0x19
    e883ccfe:	0300980b          	addsl	a6,ra,a6,1
    e883cd02:	fe0000b7          	lui	ra,0xfe000
    e883cd06:	0013f3b3          	and	t2,t2,ra
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883cd0a:	006f8a33          	add	s4,t6,t1
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883cd0e:	407282b3          	sub	t0,t0,t2
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883cd12:	419a5393          	srai	t2,s4,0x19
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883cd16:	00d80ab3          	add	s5,a6,a3
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883cd1a:	0313988b          	addsl	a7,t2,a7,1
  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;
    e883cd1e:	219b958b          	mula	a1,s7,s9
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883cd22:	41aad393          	srai	t2,s5,0x1a
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883cd26:	00d88b33          	add	s6,a7,a3
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883cd2a:	03e39f0b          	addsl	t5,t2,t5,1
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883cd2e:	41ab5393          	srai	t2,s6,0x1a
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883cd32:	001a7a33          	and	s4,s4,ra
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883cd36:	006f0bb3          	add	s7,t5,t1
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883cd3a:	03d39e8b          	addsl	t4,t2,t4,1
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883cd3e:	419bd393          	srai	t2,s7,0x19
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883cd42:	414f8fb3          	sub	t6,t6,s4
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883cd46:	006e8a33          	add	s4,t4,t1
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883cd4a:	951e                	add	a0,a0,t2
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883cd4c:	419a5393          	srai	t2,s4,0x19
    e883cd50:	02b3958b          	addsl	a1,t2,a1,1
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883cd54:	00d58c33          	add	s8,a1,a3
    e883cd58:	41ac5c93          	srai	s9,s8,0x1a
    e883cd5c:	02ec970b          	addsl	a4,s9,a4,1
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883cd60:	933a                	add	t1,t1,a4
    e883cd62:	41935d13          	srai	s10,t1,0x19
    e883cd66:	4ccd                	li	s9,19
    e883cd68:	219d178b          	mula	a5,s10,s9
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883cd6c:	00d503b3          	add	t2,a0,a3
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883cd70:	001a7a33          	and	s4,s4,ra
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883cd74:	01cafab3          	and	s5,s5,t3
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883cd78:	01cb7b33          	and	s6,s6,t3
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883cd7c:	001bfbb3          	and	s7,s7,ra
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883cd80:	00137333          	and	t1,t1,ra
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883cd84:	41580833          	sub	a6,a6,s5
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883cd88:	417f0f33          	sub	t5,t5,s7
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883cd8c:	416888b3          	sub	a7,a7,s6
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883cd90:	96be                	add	a3,a3,a5
    e883cd92:	01c6fcb3          	and	s9,a3,t3
    e883cd96:	419787b3          	sub	a5,a5,s9
  h[0] = (crypto_int32) h0;
    e883cd9a:	dc3c                	sw	a5,120(s0)
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883cd9c:	01c3f7b3          	and	a5,t2,t3
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883cda0:	01cc7e33          	and	t3,s8,t3
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883cda4:	8d1d                	sub	a0,a0,a5
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883cda6:	41c585b3          	sub	a1,a1,t3
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883cdaa:	41a3d393          	srai	t2,t2,0x1a
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883cdae:	86e9                	srai	a3,a3,0x1a
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883cdb0:	414e8eb3          	sub	t4,t4,s4
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883cdb4:	9696                	add	a3,a3,t0
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883cdb6:	9f9e                	add	t6,t6,t2
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883cdb8:	40670733          	sub	a4,a4,t1
fe_add(r->Y,p->X,p->Y);
    e883cdbc:	02840a13          	addi	s4,s0,40
  h[1] = (crypto_int32) h1;
    e883cdc0:	dc74                	sw	a3,124(s0)
  h[2] = (crypto_int32) h2;
    e883cdc2:	09042023          	sw	a6,128(s0)
  h[3] = (crypto_int32) h3;
    e883cdc6:	09e42223          	sw	t5,132(s0)
  h[5] = (crypto_int32) h5;
    e883cdca:	09f42623          	sw	t6,140(s0)
  h[6] = (crypto_int32) h6;
    e883cdce:	09142823          	sw	a7,144(s0)
  h[7] = (crypto_int32) h7;
    e883cdd2:	09d42a23          	sw	t4,148(s0)
  h[9] = (crypto_int32) h9;
    e883cdd6:	08e42e23          	sw	a4,156(s0)
  h[4] = (crypto_int32) h4;
    e883cdda:	08a42423          	sw	a0,136(s0)
  h[8] = (crypto_int32) h8;
    e883cdde:	08b42c23          	sw	a1,152(s0)
fe_add(r->Y,p->X,p->Y);
    e883cde2:	8552                	mv	a0,s4
    e883cde4:	85a6                	mv	a1,s1
    e883cde6:	d8dfe0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: AA=A^2 */
/* asm 1: fe_sq(>AA=fe#5,<A=fe#2); */
/* asm 2: fe_sq(>AA=t0,<A=r->Y); */
fe_sq(t0,r->Y);
    e883cdea:	85d2                	mv	a1,s4
    e883cdec:	0828                	addi	a0,sp,24
    e883cdee:	b22ff0ef          	jal	ra,e883c110 <fe_sq>

/* qhasm: Y3=YY+XX */
/* asm 1: fe_add(>Y3=fe#2,<YY=fe#3,<XX=fe#1); */
/* asm 2: fe_add(>Y3=r->Y,<YY=r->Z,<XX=r->X); */
fe_add(r->Y,r->Z,r->X);
    e883cdf2:	8622                	mv	a2,s0
    e883cdf4:	85ca                	mv	a1,s2
    e883cdf6:	8552                	mv	a0,s4
    e883cdf8:	d7bfe0ef          	jal	ra,e883bb72 <fe_add>

/* qhasm: Z3=YY-XX */
/* asm 1: fe_sub(>Z3=fe#3,<YY=fe#3,<XX=fe#1); */
/* asm 2: fe_sub(>Z3=r->Z,<YY=r->Z,<XX=r->X); */
fe_sub(r->Z,r->Z,r->X);
    e883cdfc:	8622                	mv	a2,s0
    e883cdfe:	85ca                	mv	a1,s2
    e883ce00:	854a                	mv	a0,s2
    e883ce02:	819ff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: X3=AA-Y3 */
/* asm 1: fe_sub(>X3=fe#1,<AA=fe#5,<Y3=fe#2); */
/* asm 2: fe_sub(>X3=r->X,<AA=t0,<Y3=r->Y); */
fe_sub(r->X,t0,r->Y);
    e883ce06:	8652                	mv	a2,s4
    e883ce08:	082c                	addi	a1,sp,24
    e883ce0a:	8522                	mv	a0,s0
    e883ce0c:	80fff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: T3=B-Z3 */
/* asm 1: fe_sub(>T3=fe#4,<B=fe#4,<Z3=fe#3); */
/* asm 2: fe_sub(>T3=r->T,<B=r->T,<Z3=r->Z); */
fe_sub(r->T,r->T,r->Z);
    e883ce10:	864a                	mv	a2,s2
    e883ce12:	85ce                	mv	a1,s3
    e883ce14:	854e                	mv	a0,s3
    e883ce16:	805ff0ef          	jal	ra,e883c61a <fe_sub>

/* qhasm: return */
}
    e883ce1a:	740a                	ld	s0,160(sp)
    e883ce1c:	70aa                	ld	ra,168(sp)
    e883ce1e:	64ea                	ld	s1,152(sp)
    e883ce20:	694a                	ld	s2,144(sp)
    e883ce22:	69aa                	ld	s3,136(sp)
    e883ce24:	6a0a                	ld	s4,128(sp)
    e883ce26:	7ae6                	ld	s5,120(sp)
    e883ce28:	7b46                	ld	s6,112(sp)
    e883ce2a:	7ba6                	ld	s7,104(sp)
    e883ce2c:	7c06                	ld	s8,96(sp)
    e883ce2e:	6ce6                	ld	s9,88(sp)
    e883ce30:	6d46                	ld	s10,80(sp)
    e883ce32:	6da6                	ld	s11,72(sp)
    e883ce34:	614d                	addi	sp,sp,176
    e883ce36:	8082                	ret

00000000e883ce38 <ge_p3_to_cached>:
static const fe d2 = {
-21827239,-5839606,-30745221,13898782,229458,15978800,-12551817,-6495438,29715968,9444199
} ;

static void ge_p3_to_cached(ge_cached *r,const ge_p3 *p)
{
    e883ce38:	1101                	addi	sp,sp,-32
    e883ce3a:	e84a                	sd	s2,16(sp)
  fe_add(r->YplusX,p->Y,p->X);
    e883ce3c:	02858913          	addi	s2,a1,40
{
    e883ce40:	f891540b          	sdd	s0,s1,(sp),0,4
  fe_add(r->YplusX,p->Y,p->X);
    e883ce44:	862e                	mv	a2,a1
{
    e883ce46:	842e                	mv	s0,a1
  fe_add(r->YplusX,p->Y,p->X);
    e883ce48:	85ca                	mv	a1,s2
{
    e883ce4a:	ec06                	sd	ra,24(sp)
    e883ce4c:	84aa                	mv	s1,a0
  fe_add(r->YplusX,p->Y,p->X);
    e883ce4e:	d25fe0ef          	jal	ra,e883bb72 <fe_add>
  fe_sub(r->YminusX,p->Y,p->X);
    e883ce52:	8622                	mv	a2,s0
    e883ce54:	85ca                	mv	a1,s2
    e883ce56:	02848513          	addi	a0,s1,40
    e883ce5a:	fc0ff0ef          	jal	ra,e883c61a <fe_sub>
  fe_copy(r->Z,p->Z);
    e883ce5e:	05040593          	addi	a1,s0,80
    e883ce62:	05048513          	addi	a0,s1,80
    e883ce66:	e6dfe0ef          	jal	ra,e883bcd2 <fe_copy>
  fe_mul(r->T2d,p->T,d2);
}
    e883ce6a:	6942                	ld	s2,16(sp)
  fe_mul(r->T2d,p->T,d2);
    e883ce6c:	07840593          	addi	a1,s0,120
    e883ce70:	07848513          	addi	a0,s1,120
}
    e883ce74:	f891440b          	ldd	s0,s1,(sp),0,4
    e883ce78:	60e2                	ld	ra,24(sp)
  fe_mul(r->T2d,p->T,d2);
    e883ce7a:	00081617          	auipc	a2,0x81
    e883ce7e:	b2660613          	addi	a2,a2,-1242 # e88bd9a0 <d2>
}
    e883ce82:	6105                	addi	sp,sp,32
  fe_mul(r->T2d,p->T,d2);
    e883ce84:	e65fe06f          	j	e883bce8 <fe_mul>

00000000e883ce88 <ge_p3_dbl>:
{
    e883ce88:	7135                	addi	sp,sp,-160
    e883ce8a:	e526                	sd	s1,136(sp)
    e883ce8c:	84aa                	mv	s1,a0
r = p
*/

static void ge_p3_to_p2(ge_p2 *r,const ge_p3 *p)
{
  fe_copy(r->X,p->X);
    e883ce8e:	0028                	addi	a0,sp,8
{
    e883ce90:	ed06                	sd	ra,152(sp)
    e883ce92:	e922                	sd	s0,144(sp)
    e883ce94:	842e                	mv	s0,a1
  fe_copy(r->X,p->X);
    e883ce96:	e3dfe0ef          	jal	ra,e883bcd2 <fe_copy>
  fe_copy(r->Y,p->Y);
    e883ce9a:	02840593          	addi	a1,s0,40
    e883ce9e:	1808                	addi	a0,sp,48
    e883cea0:	e33fe0ef          	jal	ra,e883bcd2 <fe_copy>
  fe_copy(r->Z,p->Z);
    e883cea4:	05040593          	addi	a1,s0,80
    e883cea8:	08a8                	addi	a0,sp,88
    e883ceaa:	e29fe0ef          	jal	ra,e883bcd2 <fe_copy>
  ge_p2_dbl(r,&q);
    e883ceae:	002c                	addi	a1,sp,8
    e883ceb0:	8526                	mv	a0,s1
    e883ceb2:	c9dff0ef          	jal	ra,e883cb4e <ge_p2_dbl>
}
    e883ceb6:	644a                	ld	s0,144(sp)
    e883ceb8:	60ea                	ld	ra,152(sp)
    e883ceba:	64aa                	ld	s1,136(sp)
    e883cebc:	610d                	addi	sp,sp,160
    e883cebe:	8082                	ret

00000000e883cec0 <ge_cmov>:
  x >>= 63; /* 1: yes; 0: no */
  return (unsigned char) x;
}

static void ge_cmov(ge_precomp *t,const ge_precomp *u,unsigned char b)
{
    e883cec0:	1101                	addi	sp,sp,-32
    e883cec2:	f891540b          	sdd	s0,s1,(sp),0,4
    e883cec6:	ec06                	sd	ra,24(sp)
    e883cec8:	e84a                	sd	s2,16(sp)
    e883ceca:	84aa                	mv	s1,a0
    e883cecc:	892e                	mv	s2,a1
  fe_cmov(t->yplusx,u->yplusx,b);
    e883cece:	8432                	mv	s0,a2
    e883ced0:	d13fe0ef          	jal	ra,e883bbe2 <fe_cmov>
  fe_cmov(t->yminusx,u->yminusx,b);
    e883ced4:	8622                	mv	a2,s0
    e883ced6:	02890593          	addi	a1,s2,40
    e883ceda:	02848513          	addi	a0,s1,40
    e883cede:	d05fe0ef          	jal	ra,e883bbe2 <fe_cmov>
  fe_cmov(t->xy2d,u->xy2d,b);
    e883cee2:	8622                	mv	a2,s0
    e883cee4:	05048513          	addi	a0,s1,80
}
    e883cee8:	f891440b          	ldd	s0,s1,(sp),0,4
    e883ceec:	60e2                	ld	ra,24(sp)
  fe_cmov(t->xy2d,u->xy2d,b);
    e883ceee:	05090593          	addi	a1,s2,80
}
    e883cef2:	6942                	ld	s2,16(sp)
    e883cef4:	6105                	addi	sp,sp,32
  fe_cmov(t->xy2d,u->xy2d,b);
    e883cef6:	cedfe06f          	j	e883bbe2 <fe_cmov>

00000000e883cefa <crypto_load_3>:

static crypto_uint64 crypto_load_3(const unsigned char *in)
{
  crypto_uint64 result;
  result = (crypto_uint64) in[0];
  result |= ((crypto_uint64) in[1]) << 8;
    e883cefa:	00154783          	lbu	a5,1(a0)
  result |= ((crypto_uint64) in[2]) << 16;
    e883cefe:	00254703          	lbu	a4,2(a0)
  result = (crypto_uint64) in[0];
    e883cf02:	00054683          	lbu	a3,0(a0)
  result |= ((crypto_uint64) in[1]) << 8;
    e883cf06:	07a2                	slli	a5,a5,0x8
  result |= ((crypto_uint64) in[2]) << 16;
    e883cf08:	0742                	slli	a4,a4,0x10
    e883cf0a:	8fd9                	or	a5,a5,a4
  return result;
}
    e883cf0c:	00d7e533          	or	a0,a5,a3
    e883cf10:	8082                	ret

00000000e883cf12 <crypto_load_4>:
  result = (crypto_uint64) in[0];
  result |= ((crypto_uint64) in[1]) << 8;
  result |= ((crypto_uint64) in[2]) << 16;
  result |= ((crypto_uint64) in[3]) << 24;
  return result;
}
    e883cf12:	00056503          	lwu	a0,0(a0)
    e883cf16:	8082                	ret

00000000e883cf18 <sc_reduce>:
{
    e883cf18:	7155                	addi	sp,sp,-208
    e883cf1a:	e586                	sd	ra,200(sp)
    e883cf1c:	e1a2                	sd	s0,192(sp)
    e883cf1e:	fd26                	sd	s1,184(sp)
    e883cf20:	842a                	mv	s0,a0
    e883cf22:	f94a                	sd	s2,176(sp)
    e883cf24:	f54e                	sd	s3,168(sp)
    e883cf26:	f152                	sd	s4,160(sp)
    e883cf28:	ed56                	sd	s5,152(sp)
    e883cf2a:	e95a                	sd	s6,144(sp)
    e883cf2c:	e55e                	sd	s7,136(sp)
    e883cf2e:	e162                	sd	s8,128(sp)
    e883cf30:	fce6                	sd	s9,120(sp)
    e883cf32:	f8ea                	sd	s10,112(sp)
    e883cf34:	f4ee                	sd	s11,104(sp)
  crypto_int64 s0 = 2097151 & crypto_load_3(s);
    e883cf36:	fc5ff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883cf3a:	5005378b          	extu	a5,a0,20,0
  crypto_int64 s1 = 2097151 & (crypto_load_4(s + 2) >> 5);
    e883cf3e:	00240513          	addi	a0,s0,2
  crypto_int64 s0 = 2097151 & crypto_load_3(s);
    e883cf42:	e03e                	sd	a5,0(sp)
  crypto_int64 s1 = 2097151 & (crypto_load_4(s + 2) >> 5);
    e883cf44:	fcfff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883cf48:	6455378b          	extu	a5,a0,25,5
  crypto_int64 s2 = 2097151 & (crypto_load_3(s + 5) >> 2);
    e883cf4c:	00540513          	addi	a0,s0,5
  crypto_int64 s1 = 2097151 & (crypto_load_4(s + 2) >> 5);
    e883cf50:	e43e                	sd	a5,8(sp)
  crypto_int64 s2 = 2097151 & (crypto_load_3(s + 5) >> 2);
    e883cf52:	fa9ff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883cf56:	5825378b          	extu	a5,a0,22,2
  crypto_int64 s3 = 2097151 & (crypto_load_4(s + 7) >> 7);
    e883cf5a:	00740513          	addi	a0,s0,7
  crypto_int64 s2 = 2097151 & (crypto_load_3(s + 5) >> 2);
    e883cf5e:	e83e                	sd	a5,16(sp)
  crypto_int64 s3 = 2097151 & (crypto_load_4(s + 7) >> 7);
    e883cf60:	fb3ff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883cf64:	6c75378b          	extu	a5,a0,27,7
  crypto_int64 s4 = 2097151 & (crypto_load_4(s + 10) >> 4);
    e883cf68:	00a40513          	addi	a0,s0,10
  crypto_int64 s3 = 2097151 & (crypto_load_4(s + 7) >> 7);
    e883cf6c:	ec3e                	sd	a5,24(sp)
  crypto_int64 s4 = 2097151 & (crypto_load_4(s + 10) >> 4);
    e883cf6e:	fa5ff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883cf72:	6045378b          	extu	a5,a0,24,4
  crypto_int64 s5 = 2097151 & (crypto_load_3(s + 13) >> 1);
    e883cf76:	00d40513          	addi	a0,s0,13
  crypto_int64 s4 = 2097151 & (crypto_load_4(s + 10) >> 4);
    e883cf7a:	f03e                	sd	a5,32(sp)
  crypto_int64 s5 = 2097151 & (crypto_load_3(s + 13) >> 1);
    e883cf7c:	f7fff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883cf80:	5415378b          	extu	a5,a0,21,1
  crypto_int64 s6 = 2097151 & (crypto_load_4(s + 15) >> 6);
    e883cf84:	00f40513          	addi	a0,s0,15
  crypto_int64 s5 = 2097151 & (crypto_load_3(s + 13) >> 1);
    e883cf88:	f43e                	sd	a5,40(sp)
  crypto_int64 s6 = 2097151 & (crypto_load_4(s + 15) >> 6);
    e883cf8a:	f89ff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883cf8e:	68653b8b          	extu	s7,a0,26,6
  crypto_int64 s7 = 2097151 & (crypto_load_3(s + 18) >> 3);
    e883cf92:	01240513          	addi	a0,s0,18
    e883cf96:	f65ff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883cf9a:	5c353b0b          	extu	s6,a0,23,3
  crypto_int64 s8 = 2097151 & crypto_load_3(s + 21);
    e883cf9e:	01540513          	addi	a0,s0,21
    e883cfa2:	f59ff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883cfa6:	5005378b          	extu	a5,a0,20,0
  crypto_int64 s9 = 2097151 & (crypto_load_4(s + 23) >> 5);
    e883cfaa:	01740513          	addi	a0,s0,23
  crypto_int64 s8 = 2097151 & crypto_load_3(s + 21);
    e883cfae:	8d3e                	mv	s10,a5
  crypto_int64 s9 = 2097151 & (crypto_load_4(s + 23) >> 5);
    e883cfb0:	f63ff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883cfb4:	6455370b          	extu	a4,a0,25,5
  crypto_int64 s10 = 2097151 & (crypto_load_3(s + 26) >> 2);
    e883cfb8:	01a40513          	addi	a0,s0,26
  crypto_int64 s9 = 2097151 & (crypto_load_4(s + 23) >> 5);
    e883cfbc:	ecba                	sd	a4,88(sp)
  crypto_int64 s10 = 2097151 & (crypto_load_3(s + 26) >> 2);
    e883cfbe:	f3dff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883cfc2:	58253f8b          	extu	t6,a0,22,2
  crypto_int64 s11 = 2097151 & (crypto_load_4(s + 28) >> 7);
    e883cfc6:	01c40513          	addi	a0,s0,28
  crypto_int64 s10 = 2097151 & (crypto_load_3(s + 26) >> 2);
    e883cfca:	e8fe                	sd	t6,80(sp)
  crypto_int64 s11 = 2097151 & (crypto_load_4(s + 28) >> 7);
    e883cfcc:	f47ff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883cfd0:	6c75378b          	extu	a5,a0,27,7
  crypto_int64 s12 = 2097151 & (crypto_load_4(s + 31) >> 4);
    e883cfd4:	01f40513          	addi	a0,s0,31
  crypto_int64 s11 = 2097151 & (crypto_load_4(s + 28) >> 7);
    e883cfd8:	e4be                	sd	a5,72(sp)
  crypto_int64 s12 = 2097151 & (crypto_load_4(s + 31) >> 4);
    e883cfda:	f39ff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883cfde:	6045348b          	extu	s1,a0,24,4
  crypto_int64 s13 = 2097151 & (crypto_load_3(s + 34) >> 1);
    e883cfe2:	02240513          	addi	a0,s0,34
    e883cfe6:	f15ff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883cfea:	54153e8b          	extu	t4,a0,21,1
  crypto_int64 s14 = 2097151 & (crypto_load_4(s + 36) >> 6);
    e883cfee:	02440513          	addi	a0,s0,36
  crypto_int64 s13 = 2097151 & (crypto_load_3(s + 34) >> 1);
    e883cff2:	e0f6                	sd	t4,64(sp)
  crypto_int64 s14 = 2097151 & (crypto_load_4(s + 36) >> 6);
    e883cff4:	f1fff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883cff8:	6865338b          	extu	t2,a0,26,6
  crypto_int64 s15 = 2097151 & (crypto_load_3(s + 39) >> 3);
    e883cffc:	02740513          	addi	a0,s0,39
  crypto_int64 s14 = 2097151 & (crypto_load_4(s + 36) >> 6);
    e883d000:	fc1e                	sd	t2,56(sp)
  crypto_int64 s15 = 2097151 & (crypto_load_3(s + 39) >> 3);
    e883d002:	ef9ff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883d006:	5c353f0b          	extu	t5,a0,23,3
  crypto_int64 s16 = 2097151 & crypto_load_3(s + 42);
    e883d00a:	02a40513          	addi	a0,s0,42
  crypto_int64 s15 = 2097151 & (crypto_load_3(s + 39) >> 3);
    e883d00e:	f87a                	sd	t5,48(sp)
  crypto_int64 s16 = 2097151 & crypto_load_3(s + 42);
    e883d010:	eebff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883d014:	5005398b          	extu	s3,a0,20,0
  crypto_int64 s17 = 2097151 & (crypto_load_4(s + 44) >> 5);
    e883d018:	02c40513          	addi	a0,s0,44
    e883d01c:	ef7ff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883d020:	64553a0b          	extu	s4,a0,25,5
  crypto_int64 s18 = 2097151 & (crypto_load_3(s + 47) >> 2);
    e883d024:	02f40513          	addi	a0,s0,47
    e883d028:	ed3ff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883d02c:	58253a8b          	extu	s5,a0,22,2
  crypto_int64 s19 = 2097151 & (crypto_load_4(s + 49) >> 7);
    e883d030:	03140513          	addi	a0,s0,49
    e883d034:	edfff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883d038:	6c753c0b          	extu	s8,a0,27,7
  crypto_int64 s20 = 2097151 & (crypto_load_4(s + 52) >> 4);
    e883d03c:	03440513          	addi	a0,s0,52
    e883d040:	ed3ff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883d044:	60453c8b          	extu	s9,a0,24,4
  crypto_int64 s21 = 2097151 & (crypto_load_3(s + 55) >> 1);
    e883d048:	03740513          	addi	a0,s0,55
    e883d04c:	eafff0ef          	jal	ra,e883cefa <crypto_load_3>
    e883d050:	54153d8b          	extu	s11,a0,21,1
  crypto_int64 s22 = 2097151 & (crypto_load_4(s + 57) >> 6);
    e883d054:	03940513          	addi	a0,s0,57
    e883d058:	ebbff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883d05c:	6865390b          	extu	s2,a0,26,6
  crypto_int64 s23 = (crypto_load_4(s + 60) >> 3);
    e883d060:	03c40513          	addi	a0,s0,60
    e883d064:	eafff0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883d068:	810d                	srli	a0,a0,0x3
  s11 += s23 * 666643;
    e883d06a:	67a6                	ld	a5,72(sp)
    e883d06c:	000a3337          	lui	t1,0xa3
    e883d070:	c1330313          	addi	t1,t1,-1005 # a2c13 <memcmp-0xe875d3ed>
    e883d074:	2065178b          	mula	a5,a0,t1
  s12 += s23 * 470296;
    e883d078:	000738b7          	lui	a7,0x73
    e883d07c:	d1888893          	addi	a7,a7,-744 # 72d18 <memcmp-0xe878d2e8>
  s13 += s23 * 654183;
    e883d080:	000a0837          	lui	a6,0xa0
    e883d084:	b6780813          	addi	a6,a6,-1177 # 9fb67 <memcmp-0xe8760499>
  s10 += s21 * 470296;
    e883d088:	6fc6                	ld	t6,80(sp)
  s13 += s23 * 654183;
    e883d08a:	6e86                	ld	t4,64(sp)
  s14 -= s23 * 997805;
    e883d08c:	fff0c5b7          	lui	a1,0xfff0c
    e883d090:	65358593          	addi	a1,a1,1619 # fffffffffff0c653 <__DRAM0_INF_BASE+0xfffffffefff1c653>
    e883d094:	73e2                	ld	t2,56(sp)
  s10 += s21 * 470296;
    e883d096:	031d8e33          	mul	t3,s11,a7
  s15 += s23 * 136657;
    e883d09a:	00021637          	lui	a2,0x21
    e883d09e:	5d160613          	addi	a2,a2,1489 # 215d1 <memcmp-0xe87dea2f>
    e883d0a2:	7f42                	ld	t5,48(sp)
  s16 -= s23 * 683901;
    e883d0a4:	fff596b7          	lui	a3,0xfff59
    e883d0a8:	08368693          	addi	a3,a3,131 # fffffffffff59083 <__DRAM0_INF_BASE+0xfffffffefff69083>
  s9 += s20 * 470296;
    e883d0ac:	6766                	ld	a4,88(sp)
  s11 += s22 * 470296;
    e883d0ae:	2119178b          	mula	a5,s2,a7
  s10 += s21 * 470296;
    e883d0b2:	20691e0b          	mula	t3,s2,t1
  s12 += s23 * 470296;
    e883d0b6:	2115148b          	mula	s1,a0,a7
  s10 += s21 * 470296;
    e883d0ba:	9e7e                	add	t3,t3,t6
  s11 += s21 * 654183;
    e883d0bc:	210d978b          	mula	a5,s11,a6
  s9 += s20 * 470296;
    e883d0c0:	031c8fb3          	mul	t6,s9,a7
  s12 += s22 * 654183;
    e883d0c4:	2109148b          	mula	s1,s2,a6
  s13 += s23 * 654183;
    e883d0c8:	21051e8b          	mula	t4,a0,a6
  s11 -= s20 * 997805;
    e883d0cc:	20bc978b          	mula	a5,s9,a1
  s10 += s20 * 654183;
    e883d0d0:	210c9e0b          	mula	t3,s9,a6
  s8 += s19 * 470296;
    e883d0d4:	031c02b3          	mul	t0,s8,a7
  s9 += s20 * 470296;
    e883d0d8:	206d9f8b          	mula	t6,s11,t1
  s12 -= s21 * 997805;
    e883d0dc:	20bd948b          	mula	s1,s11,a1
  s9 += s20 * 470296;
    e883d0e0:	977e                	add	a4,a4,t6
  s13 -= s22 * 997805;
    e883d0e2:	20b91e8b          	mula	t4,s2,a1
  s14 -= s23 * 997805;
    e883d0e6:	20b5138b          	mula	t2,a0,a1
  s11 += s19 * 136657;
    e883d0ea:	20cc178b          	mula	a5,s8,a2
  s16 -= s23 * 683901;
    e883d0ee:	20d5198b          	mula	s3,a0,a3
  s15 += s23 * 136657;
    e883d0f2:	20c51f0b          	mula	t5,a0,a2
  s7 += s18 * 470296;
    e883d0f6:	031a8533          	mul	a0,s5,a7
  s8 += s19 * 470296;
    e883d0fa:	206c928b          	mula	t0,s9,t1
  s10 -= s19 * 997805;
    e883d0fe:	20bc1e0b          	mula	t3,s8,a1
  s8 += s19 * 470296;
    e883d102:	92ea                	add	t0,t0,s10
  s12 += s20 * 136657;
    e883d104:	20cc948b          	mula	s1,s9,a2
  s9 += s19 * 654183;
    e883d108:	210c170b          	mula	a4,s8,a6
  s13 += s21 * 136657;
    e883d10c:	20cd9e8b          	mula	t4,s11,a2
  s14 += s22 * 136657;
    e883d110:	20c9138b          	mula	t2,s2,a2
  s11 -= s18 * 683901;
    e883d114:	20da978b          	mula	a5,s5,a3
  s6 += s18 * 666643;
    e883d118:	206a9b8b          	mula	s7,s5,t1
  s7 += s18 * 470296;
    e883d11c:	206c150b          	mula	a0,s8,t1
  s10 += s18 * 136657;
    e883d120:	20ca9e0b          	mula	t3,s5,a2
  s7 += s18 * 470296;
    e883d124:	9b2a                	add	s6,s6,a0
  s8 += s18 * 654183;
    e883d126:	210a928b          	mula	t0,s5,a6
  s12 -= s19 * 683901;
    e883d12a:	20dc148b          	mula	s1,s8,a3
  s9 -= s18 * 997805;
    e883d12e:	20ba970b          	mula	a4,s5,a1
  s15 -= s22 * 683901;
    e883d132:	20d91f0b          	mula	t5,s2,a3
  s11 -= s18 * 683901;
    e883d136:	893e                	mv	s2,a5
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883d138:	001007b7          	lui	a5,0x100
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d13c:	00fe0c33          	add	s8,t3,a5
  s13 -= s20 * 683901;
    e883d140:	20dc9e8b          	mula	t4,s9,a3
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d144:	00f28cb3          	add	s9,t0,a5
    e883d148:	415cdf93          	srai	t6,s9,0x15
    e883d14c:	9fba                	add	t6,t6,a4
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883d14e:	ffe00737          	lui	a4,0xffe00
  s15 -= s22 * 683901;
    e883d152:	f87a                	sd	t5,48(sp)
  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;
    e883d154:	7ac2                	ld	s5,48(sp)
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d156:	00ecfcb3          	and	s9,s9,a4
  s14 -= s21 * 683901;
    e883d15a:	20dd938b          	mula	t2,s11,a3
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883d15e:	00fb8db3          	add	s11,s7,a5
    e883d162:	415dd513          	srai	a0,s11,0x15
    e883d166:	9b2a                	add	s6,s6,a0
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d168:	415c5513          	srai	a0,s8,0x15
    e883d16c:	992a                	add	s2,s2,a0
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883d16e:	00f48533          	add	a0,s1,a5
  s13 -= s20 * 683901;
    e883d172:	8f76                	mv	t5,t4
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883d174:	41555e93          	srai	t4,a0,0x15
    e883d178:	8d79                	and	a0,a0,a4
    e883d17a:	8c89                	sub	s1,s1,a0
  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;
    e883d17c:	00f38533          	add	a0,t2,a5
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883d180:	9efa                	add	t4,t4,t5
  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;
    e883d182:	41555f13          	srai	t5,a0,0x15
    e883d186:	8d79                	and	a0,a0,a4
    e883d188:	40a38533          	sub	a0,t2,a0
    e883d18c:	8d2a                	mv	s10,a0
  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;
    e883d18e:	00f98533          	add	a0,s3,a5
    e883d192:	41555393          	srai	t2,a0,0x15
    e883d196:	8d79                	and	a0,a0,a4
    e883d198:	40a98533          	sub	a0,s3,a0
    e883d19c:	f82a                	sd	a0,48(sp)
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883d19e:	00f90533          	add	a0,s2,a5
    e883d1a2:	41555993          	srai	s3,a0,0x15
    e883d1a6:	8d79                	and	a0,a0,a4
    e883d1a8:	40a90533          	sub	a0,s2,a0
    e883d1ac:	fc2a                	sd	a0,56(sp)
  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;
    e883d1ae:	00fe8533          	add	a0,t4,a5
  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;
    e883d1b2:	9a1e                	add	s4,s4,t2
  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;
    e883d1b4:	41555913          	srai	s2,a0,0x15
    e883d1b8:	8d79                	and	a0,a0,a4
    e883d1ba:	996a                	add	s2,s2,s10
  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;
    e883d1bc:	9f56                	add	t5,t5,s5
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883d1be:	7d42                	ld	s10,48(sp)
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d1c0:	00fb0ab3          	add	s5,s6,a5
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d1c4:	210a1b0b          	mula	s6,s4,a6
  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;
    e883d1c8:	40ae8eb3          	sub	t4,t4,a0
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883d1cc:	00ff0533          	add	a0,t5,a5
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883d1d0:	94ce                	add	s1,s1,s3
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883d1d2:	41555993          	srai	s3,a0,0x15
    e883d1d6:	99ea                	add	s3,s3,s10
  s5 += s17 * 666643;
    e883d1d8:	7d22                	ld	s10,40(sp)
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883d1da:	8d79                	and	a0,a0,a4
    e883d1dc:	40af0533          	sub	a0,t5,a0
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d1e0:	00eaff33          	and	t5,s5,a4
    e883d1e4:	20da1e0b          	mula	t3,s4,a3
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d1e8:	00ff83b3          	add	t2,t6,a5
  s7 += s17 * 654183;
    e883d1ec:	41eb0b33          	sub	s6,s6,t5
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d1f0:	00e3ff33          	and	t5,t2,a4
    e883d1f4:	4153d393          	srai	t2,t2,0x15
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d1f8:	00ec7c33          	and	s8,s8,a4
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883d1fc:	00edfdb3          	and	s11,s11,a4
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d200:	415ada93          	srai	s5,s5,0x15
  s5 += s17 * 666643;
    e883d204:	206a1d0b          	mula	s10,s4,t1
  s6 += s17 * 470296;
    e883d208:	9e1e                	add	t3,t3,t2
  s10 -= s17 * 683901;
    e883d20a:	418e0e33          	sub	t3,t3,s8
  s3 += s15 * 666643;
    e883d20e:	6c62                	ld	s8,24(sp)
  s6 += s17 * 470296;
    e883d210:	211a1b8b          	mula	s7,s4,a7
    e883d214:	20ba128b          	mula	t0,s4,a1
    e883d218:	41bb8bb3          	sub	s7,s7,s11
  s4 += s15 * 470296;
    e883d21c:	031503b3          	mul	t2,a0,a7
    e883d220:	92d6                	add	t0,t0,s5
  s8 -= s17 * 997805;
    e883d222:	419282b3          	sub	t0,t0,s9
  s9 += s17 * 136657;
    e883d226:	20ca1f8b          	mula	t6,s4,a2
  s5 += s16 * 470296;
    e883d22a:	21199d0b          	mula	s10,s3,a7
  s9 += s17 * 136657;
    e883d22e:	41ef8fb3          	sub	t6,t6,t5
  s4 += s15 * 470296;
    e883d232:	7f02                	ld	t5,32(sp)
  s6 += s16 * 654183;
    e883d234:	21099b8b          	mula	s7,s3,a6
  s3 += s15 * 666643;
    e883d238:	20651c0b          	mula	s8,a0,t1
  s4 += s15 * 470296;
    e883d23c:	2069938b          	mula	t2,s3,t1
  s7 -= s16 * 997805;
    e883d240:	20b99b0b          	mula	s6,s3,a1
  s4 += s15 * 470296;
    e883d244:	93fa                	add	t2,t2,t5
  s1 += s13 * 666643;
    e883d246:	6f22                	ld	t5,8(sp)
  s8 += s16 * 136657;
    e883d248:	20c9928b          	mula	t0,s3,a2
  s9 -= s16 * 683901;
    e883d24c:	20d99f8b          	mula	t6,s3,a3
  s2 += s13 * 470296;
    e883d250:	031e89b3          	mul	s3,t4,a7
  s5 += s15 * 654183;
    e883d254:	21051d0b          	mula	s10,a0,a6
  s6 -= s15 * 997805;
    e883d258:	20b51b8b          	mula	s7,a0,a1
  s3 += s14 * 470296;
    e883d25c:	21191c0b          	mula	s8,s2,a7
  s4 += s14 * 654183;
    e883d260:	2109138b          	mula	t2,s2,a6
  s2 += s13 * 470296;
    e883d264:	2069198b          	mula	s3,s2,t1
  s5 -= s14 * 997805;
    e883d268:	20b91d0b          	mula	s10,s2,a1
  s1 += s13 * 666643;
    e883d26c:	206e9f0b          	mula	t5,t4,t1
  s6 += s14 * 136657;
    e883d270:	20c91b8b          	mula	s7,s2,a2
  s3 += s13 * 654183;
    e883d274:	210e9c0b          	mula	s8,t4,a6
  s8 -= s15 * 683901;
    e883d278:	20d5128b          	mula	t0,a0,a3
  s7 += s15 * 136657;
    e883d27c:	20c51b0b          	mula	s6,a0,a2
  s2 += s13 * 470296;
    e883d280:	6542                	ld	a0,16(sp)
    e883d282:	99aa                	add	s3,s3,a0
  s0 += s12 * 666643;
    e883d284:	6502                	ld	a0,0(sp)
  s4 -= s13 * 997805;
    e883d286:	20be938b          	mula	t2,t4,a1
  s2 += s12 * 654183;
    e883d28a:	2104998b          	mula	s3,s1,a6
  s5 += s13 * 136657;
    e883d28e:	20ce9d0b          	mula	s10,t4,a2
  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883d292:	00f98cb3          	add	s9,s3,a5
  s0 += s12 * 666643;
    e883d296:	2064950b          	mula	a0,s1,t1
  s1 += s12 * 470296;
    e883d29a:	21149f0b          	mula	t5,s1,a7
  s6 -= s13 * 683901;
    e883d29e:	20de9b8b          	mula	s7,t4,a3
  s4 += s12 * 136657;
    e883d2a2:	8e9e                	mv	t4,t2
  s3 -= s12 * 997805;
    e883d2a4:	20b49c0b          	mula	s8,s1,a1
  s7 -= s14 * 683901;
    e883d2a8:	20d91b0b          	mula	s6,s2,a3
  s1 += s12 * 470296;
    e883d2ac:	897a                	mv	s2,t5
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883d2ae:	00f50f33          	add	t5,a0,a5
    e883d2b2:	415f5393          	srai	t2,t5,0x15
    e883d2b6:	93ca                	add	t2,t2,s2
    e883d2b8:	00ef7f33          	and	t5,t5,a4
  s4 += s12 * 136657;
    e883d2bc:	20c49e8b          	mula	t4,s1,a2
  s5 -= s12 * 683901;
    e883d2c0:	20d49d0b          	mula	s10,s1,a3
  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883d2c4:	415cd493          	srai	s1,s9,0x15
    e883d2c8:	9c26                	add	s8,s8,s1
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883d2ca:	00fb84b3          	add	s1,s7,a5
    e883d2ce:	4154d913          	srai	s2,s1,0x15
    e883d2d2:	9b4a                	add	s6,s6,s2
    e883d2d4:	8cf9                	and	s1,s1,a4
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d2d6:	00f28933          	add	s2,t0,a5
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883d2da:	409b84b3          	sub	s1,s7,s1
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d2de:	41595b93          	srai	s7,s2,0x15
    e883d2e2:	00e97933          	and	s2,s2,a4
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883d2e6:	00fe8ab3          	add	s5,t4,a5
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d2ea:	9fde                	add	t6,t6,s7
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d2ec:	00fe0bb3          	add	s7,t3,a5
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d2f0:	412282b3          	sub	t0,t0,s2
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883d2f4:	415ada13          	srai	s4,s5,0x15
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d2f8:	415bd913          	srai	s2,s7,0x15
    e883d2fc:	00ebfbb3          	and	s7,s7,a4
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883d300:	9a6a                	add	s4,s4,s10
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d302:	417e0e33          	sub	t3,t3,s7
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883d306:	00fa0db3          	add	s11,s4,a5
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d30a:	e072                	sd	t3,0(sp)
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883d30c:	415dde13          	srai	t3,s11,0x15
    e883d310:	94f2                	add	s1,s1,t3
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d312:	00fb0e33          	add	t3,s6,a5
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883d316:	e426                	sd	s1,8(sp)
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d318:	415e5493          	srai	s1,t3,0x15
    e883d31c:	9496                	add	s1,s1,t0
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d31e:	7d62                	ld	s10,56(sp)
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d320:	e826                	sd	s1,16(sp)
    e883d322:	00ee7e33          	and	t3,t3,a4
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d326:	6482                	ld	s1,0(sp)
    e883d328:	00ff82b3          	add	t0,t6,a5
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d32c:	41cb0b33          	sub	s6,s6,t3
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d330:	4152de13          	srai	t3,t0,0x15
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d334:	996a                	add	s2,s2,s10
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d336:	9e26                	add	t3,t3,s1
  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883d338:	00f38d33          	add	s10,t2,a5
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883d33c:	00fc0bb3          	add	s7,s8,a5
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883d340:	97ca                	add	a5,a5,s2
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d342:	e072                	sd	t3,0(sp)
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883d344:	4157de13          	srai	t3,a5,0x15
  s0 += s12 * 666643;
    e883d348:	206e150b          	mula	a0,t3,t1
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d34c:	00e2f2b3          	and	t0,t0,a4
  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883d350:	00ecfcb3          	and	s9,s9,a4
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883d354:	00eafab3          	and	s5,s5,a4
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883d358:	8ff9                	and	a5,a5,a4
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d35a:	405f8fb3          	sub	t6,t6,t0
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883d35e:	40f907b3          	sub	a5,s2,a5
  s0 += s12 * 666643;
    e883d362:	211e138b          	mula	t2,t3,a7
    e883d366:	41e50533          	sub	a0,a0,t5
  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883d36a:	00ed7f33          	and	t5,s10,a4
    e883d36e:	415d5d13          	srai	s10,s10,0x15
    e883d372:	20de1a0b          	mula	s4,t3,a3
  s1 += s12 * 470296;
    e883d376:	41e383b3          	sub	t2,t2,t5
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883d37a:	00ebff33          	and	t5,s7,a4
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883d37e:	00edf733          	and	a4,s11,a4
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883d382:	415bdb93          	srai	s7,s7,0x15
    e883d386:	210e198b          	mula	s3,t3,a6
  s5 -= s12 * 683901;
    e883d38a:	40ea0a33          	sub	s4,s4,a4
  carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883d38e:	41555713          	srai	a4,a0,0x15
    e883d392:	93ba                	add	t2,t2,a4
    e883d394:	5005350b          	extu	a0,a0,20,0
    e883d398:	20be1c0b          	mula	s8,t3,a1
    e883d39c:	419989b3          	sub	s3,s3,s9
  s2 += s12 * 654183;
    e883d3a0:	99ea                	add	s3,s3,s10
  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883d3a2:	4153dd13          	srai	s10,t2,0x15
    e883d3a6:	99ea                	add	s3,s3,s10
  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883d3a8:	4159d713          	srai	a4,s3,0x15
    e883d3ac:	5003b38b          	extu	t2,t2,20,0
    e883d3b0:	5009b98b          	extu	s3,s3,20,0
    e883d3b4:	20ce1e8b          	mula	t4,t3,a2
  s3 -= s12 * 997805;
    e883d3b8:	41ec0c33          	sub	s8,s8,t5
  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883d3bc:	9c3a                	add	s8,s8,a4
    e883d3be:	415e8eb3          	sub	t4,t4,s5
  s4 += s12 * 136657;
    e883d3c2:	9ede                	add	t4,t4,s7
  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883d3c4:	415c5b93          	srai	s7,s8,0x15
    e883d3c8:	9ede                	add	t4,t4,s7
  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883d3ca:	415ed713          	srai	a4,t4,0x15
    e883d3ce:	9a3a                	add	s4,s4,a4
  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883d3d0:	6722                	ld	a4,8(sp)
    e883d3d2:	415a5e13          	srai	t3,s4,0x15
    e883d3d6:	500ebb8b          	extu	s7,t4,20,0
    e883d3da:	9e3a                	add	t3,t3,a4
  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883d3dc:	415e5e93          	srai	t4,t3,0x15
  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d3e0:	6742                	ld	a4,16(sp)
  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883d3e2:	9b76                	add	s6,s6,t4
  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d3e4:	415b5293          	srai	t0,s6,0x15
    e883d3e8:	00e284b3          	add	s1,t0,a4
  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d3ec:	4154d713          	srai	a4,s1,0x15
    e883d3f0:	9fba                	add	t6,t6,a4
  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d3f2:	6702                	ld	a4,0(sp)
    e883d3f4:	500e3a8b          	extu	s5,t3,20,0
    e883d3f8:	415fde13          	srai	t3,t6,0x15
    e883d3fc:	9e3a                	add	t3,t3,a4
  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d3fe:	415e5913          	srai	s2,t3,0x15
    e883d402:	97ca                	add	a5,a5,s2
  carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883d404:	4157de93          	srai	t4,a5,0x15
  s0 += s12 * 666643;
    e883d408:	206e950b          	mula	a0,t4,t1
    e883d40c:	500c3c0b          	extu	s8,s8,20,0
  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883d410:	500a3a0b          	extu	s4,s4,20,0
  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d414:	500b3b0b          	extu	s6,s6,20,0
  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d418:	5004b28b          	extu	t0,s1,20,0
  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d41c:	500fbf8b          	extu	t6,t6,20,0
  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d420:	500e3f0b          	extu	t5,t3,20,0
  carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883d424:	5007b78b          	extu	a5,a5,20,0
  s1 += s12 * 470296;
    e883d428:	211e938b          	mula	t2,t4,a7
  s2 += s12 * 654183;
    e883d42c:	5005330b          	extu	t1,a0,20,0
  s[0] = (uint8_t)(s0 >> 0);
    e883d430:	00641023          	sh	t1,0(s0)
  s[2] = (uint8_t)((s0 >> 16) | (s1 << 5));
    e883d434:	41035313          	srai	t1,t1,0x10
  s2 += s12 * 654183;
    e883d438:	210e998b          	mula	s3,t4,a6
  s3 -= s12 * 997805;
    e883d43c:	20be9c0b          	mula	s8,t4,a1
  carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883d440:	41555593          	srai	a1,a0,0x15
    e883d444:	959e                	add	a1,a1,t2
  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883d446:	4155d893          	srai	a7,a1,0x15
    e883d44a:	98ce                	add	a7,a7,s3
  s4 += s12 * 136657;
    e883d44c:	20ce9b8b          	mula	s7,t4,a2
  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883d450:	4158d613          	srai	a2,a7,0x15
    e883d454:	9662                	add	a2,a2,s8
  s5 -= s12 * 683901;
    e883d456:	20de9a0b          	mula	s4,t4,a3
  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883d45a:	41565693          	srai	a3,a2,0x15
    e883d45e:	96de                	add	a3,a3,s7
  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883d460:	4156d813          	srai	a6,a3,0x15
  s[2] = (uint8_t)((s0 >> 16) | (s1 << 5));
    e883d464:	00559e93          	slli	t4,a1,0x5
  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883d468:	9852                	add	a6,a6,s4
  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883d46a:	41585713          	srai	a4,a6,0x15
    e883d46e:	9756                	add	a4,a4,s5
  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883d470:	41575513          	srai	a0,a4,0x15
    e883d474:	9b2a                	add	s6,s6,a0
  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883d476:	415b5493          	srai	s1,s6,0x15
    e883d47a:	9496                	add	s1,s1,t0
  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883d47c:	4154d513          	srai	a0,s1,0x15
    e883d480:	9faa                	add	t6,t6,a0
  s[2] = (uint8_t)((s0 >> 16) | (s1 << 5));
    e883d482:	04000537          	lui	a0,0x4000
    e883d486:	1501                	addi	a0,a0,-32
    e883d488:	00aefeb3          	and	t4,t4,a0
    e883d48c:	006ee333          	or	t1,t4,t1
    e883d490:	00640123          	sb	t1,2(s0)
  s[3] = (uint8_t)(s1 >> 3);
    e883d494:	5035b30b          	extu	t1,a1,20,3
    e883d498:	006401a3          	sb	t1,3(s0)
  s[4] = (uint8_t)(s1 >> 11);
    e883d49c:	50b5b30b          	extu	t1,a1,20,11
    e883d4a0:	00640223          	sb	t1,4(s0)
  s[5] = (uint8_t)((s1 >> 19) | (s2 << 2));
    e883d4a4:	00800337          	lui	t1,0x800
    e883d4a8:	00289e93          	slli	t4,a7,0x2
    e883d4ac:	1371                	addi	t1,t1,-4
    e883d4ae:	006efeb3          	and	t4,t4,t1
    e883d4b2:	5135b58b          	extu	a1,a1,20,19
    e883d4b6:	01d5e5b3          	or	a1,a1,t4
    e883d4ba:	00b402a3          	sb	a1,5(s0)
  s[6] = (uint8_t)(s2 >> 6);
    e883d4be:	5068b58b          	extu	a1,a7,20,6
  s[7] = (uint8_t)((s2 >> 14) | (s3 << 7));
    e883d4c2:	10000eb7          	lui	t4,0x10000
  s[6] = (uint8_t)(s2 >> 6);
    e883d4c6:	00b40323          	sb	a1,6(s0)
  s[7] = (uint8_t)((s2 >> 14) | (s3 << 7));
    e883d4ca:	f80e8e93          	addi	t4,t4,-128 # fffff80 <memcmp-0xd8800080>
    e883d4ce:	00761593          	slli	a1,a2,0x7
    e883d4d2:	01d5f5b3          	and	a1,a1,t4
    e883d4d6:	50e8b88b          	extu	a7,a7,20,14
    e883d4da:	00b8e8b3          	or	a7,a7,a1
  s[8] = (uint8_t)(s3 >> 1);
    e883d4de:	5016358b          	extu	a1,a2,20,1
    e883d4e2:	00b40423          	sb	a1,8(s0)
  s[9] = (uint8_t)(s3 >> 9);
    e883d4e6:	5096358b          	extu	a1,a2,20,9
  s[7] = (uint8_t)((s2 >> 14) | (s3 << 7));
    e883d4ea:	011403a3          	sb	a7,7(s0)
  s[10] = (uint8_t)((s3 >> 17) | (s4 << 4));
    e883d4ee:	020008b7          	lui	a7,0x2000
  s[9] = (uint8_t)(s3 >> 9);
    e883d4f2:	00b404a3          	sb	a1,9(s0)
  s[10] = (uint8_t)((s3 >> 17) | (s4 << 4));
    e883d4f6:	18c1                	addi	a7,a7,-16
    e883d4f8:	00469593          	slli	a1,a3,0x4
    e883d4fc:	0115f5b3          	and	a1,a1,a7
    e883d500:	5116360b          	extu	a2,a2,20,17
    e883d504:	8e4d                	or	a2,a2,a1
    e883d506:	00c40523          	sb	a2,10(s0)
  s[11] = (uint8_t)(s4 >> 4);
    e883d50a:	5046b60b          	extu	a2,a3,20,4
    e883d50e:	00c405a3          	sb	a2,11(s0)
  s[12] = (uint8_t)(s4 >> 12);
    e883d512:	50c6b60b          	extu	a2,a3,20,12
  s[13] = (uint8_t)((s4 >> 20) | (s5 << 1));
    e883d516:	004005b7          	lui	a1,0x400
  s[12] = (uint8_t)(s4 >> 12);
    e883d51a:	00c40623          	sb	a2,12(s0)
  s[13] = (uint8_t)((s4 >> 20) | (s5 << 1));
    e883d51e:	15f9                	addi	a1,a1,-2
    e883d520:	00181613          	slli	a2,a6,0x1
    e883d524:	8e6d                	and	a2,a2,a1
    e883d526:	5146b68b          	extu	a3,a3,20,20
    e883d52a:	8ed1                	or	a3,a3,a2
    e883d52c:	00d406a3          	sb	a3,13(s0)
  s[14] = (uint8_t)(s5 >> 7);
    e883d530:	5078368b          	extu	a3,a6,20,7
  s[15] = (uint8_t)((s5 >> 15) | (s6 << 6));
    e883d534:	08000637          	lui	a2,0x8000
  s[14] = (uint8_t)(s5 >> 7);
    e883d538:	00d40723          	sb	a3,14(s0)
  s[15] = (uint8_t)((s5 >> 15) | (s6 << 6));
    e883d53c:	fc060613          	addi	a2,a2,-64 # 7ffffc0 <memcmp-0xe0800040>
    e883d540:	00671693          	slli	a3,a4,0x6
    e883d544:	8ef1                	and	a3,a3,a2
    e883d546:	50f8380b          	extu	a6,a6,20,15
    e883d54a:	00d86833          	or	a6,a6,a3
    e883d54e:	010407a3          	sb	a6,15(s0)
  s[16] = (uint8_t)(s6 >> 2);
    e883d552:	5027368b          	extu	a3,a4,20,2
    e883d556:	00d40823          	sb	a3,16(s0)
  s[17] = (uint8_t)(s6 >> 10);
    e883d55a:	50a7368b          	extu	a3,a4,20,10
  s[18] = (uint8_t)((s6 >> 18) | (s7 << 3));
    e883d55e:	01000637          	lui	a2,0x1000
  s[17] = (uint8_t)(s6 >> 10);
    e883d562:	00d408a3          	sb	a3,17(s0)
  s[18] = (uint8_t)((s6 >> 18) | (s7 << 3));
    e883d566:	1661                	addi	a2,a2,-8
    e883d568:	003b1693          	slli	a3,s6,0x3
    e883d56c:	5127370b          	extu	a4,a4,20,18
    e883d570:	8ef1                	and	a3,a3,a2
    e883d572:	8f55                	or	a4,a4,a3
    e883d574:	00e40923          	sb	a4,18(s0)
  s[19] = (uint8_t)(s7 >> 5);
    e883d578:	505b370b          	extu	a4,s6,20,5
    e883d57c:	00e409a3          	sb	a4,19(s0)
  s[23] = (uint8_t)((s8 >> 16) | (s9 << 5));
    e883d580:	005f9713          	slli	a4,t6,0x5
    e883d584:	8d79                	and	a0,a0,a4
  s[24] = (uint8_t)(s9 >> 3);
    e883d586:	503fb70b          	extu	a4,t6,20,3
    e883d58a:	00e40c23          	sb	a4,24(s0)
  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d58e:	415fde13          	srai	t3,t6,0x15
  s[25] = (uint8_t)(s9 >> 11);
    e883d592:	50bfb70b          	extu	a4,t6,20,11
  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883d596:	9e7a                	add	t3,t3,t5
  s[25] = (uint8_t)(s9 >> 11);
    e883d598:	00e40ca3          	sb	a4,25(s0)
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883d59c:	002e1713          	slli	a4,t3,0x2
  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d5a0:	415e5913          	srai	s2,t3,0x15
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883d5a4:	00677333          	and	t1,a4,t1
  s[27] = (uint8_t)(s10 >> 6);
    e883d5a8:	506e370b          	extu	a4,t3,20,6
  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883d5ac:	97ca                	add	a5,a5,s2
  s[27] = (uint8_t)(s10 >> 6);
    e883d5ae:	00e40da3          	sb	a4,27(s0)
  s[28] = (uint8_t)((s10 >> 14) | (s11 << 7));
    e883d5b2:	00779713          	slli	a4,a5,0x7
    e883d5b6:	50ee3e0b          	extu	t3,t3,20,14
    e883d5ba:	5004b48b          	extu	s1,s1,20,0
    e883d5be:	00ee6e33          	or	t3,t3,a4
  s[29] = (uint8_t)(s11 >> 1);
    e883d5c2:	4017d713          	srai	a4,a5,0x1
  s[21] = (uint8_t)(s8 >> 0);
    e883d5c6:	00941aa3          	sh	s1,21(s0)
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883d5ca:	513fbf8b          	extu	t6,t6,20,19
  s[23] = (uint8_t)((s8 >> 16) | (s9 << 5));
    e883d5ce:	84c1                	srai	s1,s1,0x10
  s[29] = (uint8_t)(s11 >> 1);
    e883d5d0:	00e40ea3          	sb	a4,29(s0)
  s[20] = (uint8_t)(s7 >> 13);
    e883d5d4:	40db5b13          	srai	s6,s6,0xd
  s[23] = (uint8_t)((s8 >> 16) | (s9 << 5));
    e883d5d8:	8cc9                	or	s1,s1,a0
  s[30] = (uint8_t)(s11 >> 9);
    e883d5da:	4097d713          	srai	a4,a5,0x9
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883d5de:	006fefb3          	or	t6,t6,t1
  s[31] = (uint8_t)(s11 >> 17);
    e883d5e2:	87c5                	srai	a5,a5,0x11
  s[20] = (uint8_t)(s7 >> 13);
    e883d5e4:	01640a23          	sb	s6,20(s0)
  s[23] = (uint8_t)((s8 >> 16) | (s9 << 5));
    e883d5e8:	00940ba3          	sb	s1,23(s0)
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883d5ec:	01f40d23          	sb	t6,26(s0)
  s[28] = (uint8_t)((s10 >> 14) | (s11 << 7));
    e883d5f0:	01c40e23          	sb	t3,28(s0)
  s[30] = (uint8_t)(s11 >> 9);
    e883d5f4:	00e40f23          	sb	a4,30(s0)
  s[31] = (uint8_t)(s11 >> 17);
    e883d5f8:	00f40fa3          	sb	a5,31(s0)
}
    e883d5fc:	60ae                	ld	ra,200(sp)
    e883d5fe:	640e                	ld	s0,192(sp)
    e883d600:	74ea                	ld	s1,184(sp)
    e883d602:	794a                	ld	s2,176(sp)
    e883d604:	79aa                	ld	s3,168(sp)
    e883d606:	7a0a                	ld	s4,160(sp)
    e883d608:	6aea                	ld	s5,152(sp)
    e883d60a:	6b4a                	ld	s6,144(sp)
    e883d60c:	6baa                	ld	s7,136(sp)
    e883d60e:	6c0a                	ld	s8,128(sp)
    e883d610:	7ce6                	ld	s9,120(sp)
    e883d612:	7d46                	ld	s10,112(sp)
    e883d614:	7da6                	ld	s11,104(sp)
    e883d616:	6169                	addi	sp,sp,208
    e883d618:	8082                	ret

00000000e883d61a <crypto_verify_32>:

static int crypto_verify_32(const unsigned char *x,const unsigned char *y)
{
  unsigned int differentbits = 0;
#define F(i) differentbits |= x[i] ^ y[i];
  F(0)
    e883d61a:	0005c703          	lbu	a4,0(a1) # 400000 <memcmp-0xe8400000>
    e883d61e:	00054783          	lbu	a5,0(a0) # 4000000 <memcmp-0xe4800000>
  F(1)
    e883d622:	0015c683          	lbu	a3,1(a1)
  F(0)
    e883d626:	8fb9                	xor	a5,a5,a4
  F(1)
    e883d628:	00154703          	lbu	a4,1(a0)
    e883d62c:	8f35                	xor	a4,a4,a3
  F(26)
  F(27)
  F(28)
  F(29)
  F(30)
  F(31)
    e883d62e:	8fd9                	or	a5,a5,a4
  F(2)
    e883d630:	0025c683          	lbu	a3,2(a1)
    e883d634:	00254703          	lbu	a4,2(a0)
    e883d638:	8f35                	xor	a4,a4,a3
  F(31)
    e883d63a:	8fd9                	or	a5,a5,a4
  F(3)
    e883d63c:	0035c683          	lbu	a3,3(a1)
    e883d640:	00354703          	lbu	a4,3(a0)
    e883d644:	8f35                	xor	a4,a4,a3
  F(31)
    e883d646:	8fd9                	or	a5,a5,a4
  F(4)
    e883d648:	0045c683          	lbu	a3,4(a1)
    e883d64c:	00454703          	lbu	a4,4(a0)
    e883d650:	8f35                	xor	a4,a4,a3
  F(31)
    e883d652:	8fd9                	or	a5,a5,a4
  F(5)
    e883d654:	0055c683          	lbu	a3,5(a1)
    e883d658:	00554703          	lbu	a4,5(a0)
    e883d65c:	8f35                	xor	a4,a4,a3
  F(31)
    e883d65e:	8fd9                	or	a5,a5,a4
  F(6)
    e883d660:	0065c683          	lbu	a3,6(a1)
    e883d664:	00654703          	lbu	a4,6(a0)
    e883d668:	8f35                	xor	a4,a4,a3
  F(31)
    e883d66a:	8fd9                	or	a5,a5,a4
  F(7)
    e883d66c:	0075c683          	lbu	a3,7(a1)
    e883d670:	00754703          	lbu	a4,7(a0)
    e883d674:	8f35                	xor	a4,a4,a3
  F(31)
    e883d676:	8fd9                	or	a5,a5,a4
  F(8)
    e883d678:	0085c683          	lbu	a3,8(a1)
    e883d67c:	00854703          	lbu	a4,8(a0)
    e883d680:	8f35                	xor	a4,a4,a3
  F(31)
    e883d682:	8fd9                	or	a5,a5,a4
  F(9)
    e883d684:	0095c683          	lbu	a3,9(a1)
    e883d688:	00954703          	lbu	a4,9(a0)
    e883d68c:	8f35                	xor	a4,a4,a3
  F(31)
    e883d68e:	8fd9                	or	a5,a5,a4
  F(10)
    e883d690:	00a5c683          	lbu	a3,10(a1)
    e883d694:	00a54703          	lbu	a4,10(a0)
    e883d698:	8f35                	xor	a4,a4,a3
  F(31)
    e883d69a:	8fd9                	or	a5,a5,a4
  F(11)
    e883d69c:	00b5c683          	lbu	a3,11(a1)
    e883d6a0:	00b54703          	lbu	a4,11(a0)
    e883d6a4:	8f35                	xor	a4,a4,a3
  F(31)
    e883d6a6:	8fd9                	or	a5,a5,a4
  F(12)
    e883d6a8:	00c5c683          	lbu	a3,12(a1)
    e883d6ac:	00c54703          	lbu	a4,12(a0)
    e883d6b0:	8f35                	xor	a4,a4,a3
  F(31)
    e883d6b2:	8fd9                	or	a5,a5,a4
  F(13)
    e883d6b4:	00d5c683          	lbu	a3,13(a1)
    e883d6b8:	00d54703          	lbu	a4,13(a0)
    e883d6bc:	8f35                	xor	a4,a4,a3
  F(31)
    e883d6be:	8fd9                	or	a5,a5,a4
  F(14)
    e883d6c0:	00e5c683          	lbu	a3,14(a1)
    e883d6c4:	00e54703          	lbu	a4,14(a0)
    e883d6c8:	8f35                	xor	a4,a4,a3
  F(31)
    e883d6ca:	8fd9                	or	a5,a5,a4
  F(15)
    e883d6cc:	00f5c683          	lbu	a3,15(a1)
    e883d6d0:	00f54703          	lbu	a4,15(a0)
    e883d6d4:	8f35                	xor	a4,a4,a3
  F(31)
    e883d6d6:	8fd9                	or	a5,a5,a4
  F(16)
    e883d6d8:	01054703          	lbu	a4,16(a0)
    e883d6dc:	0105c683          	lbu	a3,16(a1)
    e883d6e0:	8f35                	xor	a4,a4,a3
  F(31)
    e883d6e2:	8fd9                	or	a5,a5,a4
  F(17)
    e883d6e4:	0115c683          	lbu	a3,17(a1)
    e883d6e8:	01154703          	lbu	a4,17(a0)
    e883d6ec:	8f35                	xor	a4,a4,a3
  F(31)
    e883d6ee:	8fd9                	or	a5,a5,a4
  F(18)
    e883d6f0:	0125c683          	lbu	a3,18(a1)
    e883d6f4:	01254703          	lbu	a4,18(a0)
    e883d6f8:	8f35                	xor	a4,a4,a3
  F(31)
    e883d6fa:	8fd9                	or	a5,a5,a4
  F(19)
    e883d6fc:	0135c683          	lbu	a3,19(a1)
    e883d700:	01354703          	lbu	a4,19(a0)
    e883d704:	8f35                	xor	a4,a4,a3
  F(31)
    e883d706:	8fd9                	or	a5,a5,a4
  F(20)
    e883d708:	0145c683          	lbu	a3,20(a1)
    e883d70c:	01454703          	lbu	a4,20(a0)
    e883d710:	8f35                	xor	a4,a4,a3
  F(31)
    e883d712:	8fd9                	or	a5,a5,a4
  F(21)
    e883d714:	0155c683          	lbu	a3,21(a1)
    e883d718:	01554703          	lbu	a4,21(a0)
    e883d71c:	8f35                	xor	a4,a4,a3
  F(31)
    e883d71e:	8fd9                	or	a5,a5,a4
  F(22)
    e883d720:	0165c683          	lbu	a3,22(a1)
    e883d724:	01654703          	lbu	a4,22(a0)
    e883d728:	8f35                	xor	a4,a4,a3
  F(31)
    e883d72a:	8fd9                	or	a5,a5,a4
  F(23)
    e883d72c:	0175c683          	lbu	a3,23(a1)
    e883d730:	01754703          	lbu	a4,23(a0)
    e883d734:	8f35                	xor	a4,a4,a3
  F(31)
    e883d736:	8fd9                	or	a5,a5,a4
  F(24)
    e883d738:	0185c683          	lbu	a3,24(a1)
    e883d73c:	01854703          	lbu	a4,24(a0)
    e883d740:	8f35                	xor	a4,a4,a3
  F(31)
    e883d742:	8fd9                	or	a5,a5,a4
  F(25)
    e883d744:	0195c683          	lbu	a3,25(a1)
    e883d748:	01954703          	lbu	a4,25(a0)
    e883d74c:	8f35                	xor	a4,a4,a3
  F(31)
    e883d74e:	8fd9                	or	a5,a5,a4
  F(26)
    e883d750:	01a5c683          	lbu	a3,26(a1)
    e883d754:	01a54703          	lbu	a4,26(a0)
    e883d758:	8f35                	xor	a4,a4,a3
  F(31)
    e883d75a:	8fd9                	or	a5,a5,a4
  F(27)
    e883d75c:	01b5c683          	lbu	a3,27(a1)
    e883d760:	01b54703          	lbu	a4,27(a0)
    e883d764:	8f35                	xor	a4,a4,a3
  F(31)
    e883d766:	8fd9                	or	a5,a5,a4
  F(28)
    e883d768:	01c5c683          	lbu	a3,28(a1)
    e883d76c:	01c54703          	lbu	a4,28(a0)
    e883d770:	8f35                	xor	a4,a4,a3
  F(31)
    e883d772:	8fd9                	or	a5,a5,a4
  F(29)
    e883d774:	01d5c683          	lbu	a3,29(a1)
    e883d778:	01d54703          	lbu	a4,29(a0)
    e883d77c:	8f35                	xor	a4,a4,a3
  F(31)
    e883d77e:	8fd9                	or	a5,a5,a4
  F(30)
    e883d780:	01e5c683          	lbu	a3,30(a1)
    e883d784:	01e54703          	lbu	a4,30(a0)
  F(31)
    e883d788:	01f54503          	lbu	a0,31(a0)
  F(30)
    e883d78c:	8f35                	xor	a4,a4,a3
  F(31)
    e883d78e:	8fd9                	or	a5,a5,a4
    e883d790:	01f5c703          	lbu	a4,31(a1)
    e883d794:	8d39                	xor	a0,a0,a4
    e883d796:	8d5d                	or	a0,a0,a5
  return (1 & ((differentbits - 1) >> 8)) - 1;
    e883d798:	357d                	addiw	a0,a0,-1
    e883d79a:	2085350b          	extu	a0,a0,8,8
}
    e883d79e:	157d                	addi	a0,a0,-1
    e883d7a0:	8082                	ret

00000000e883d7a2 <ge_select>:
{
    e883d7a2:	7131                	addi	sp,sp,-192
    e883d7a4:	e952                	sd	s4,144(sp)
  x >>= 63; /* 1: yes; 0: no */
    e883d7a6:	03f65a13          	srli	s4,a2,0x3f
{
    e883d7aa:	f922                	sd	s0,176(sp)
  unsigned char babs = (unsigned char)(b - (((-bnegative) & b) << 1));
    e883d7ac:	4140043b          	negw	s0,s4
    e883d7b0:	8c71                	and	s0,s0,a2
    e883d7b2:	0014141b          	slliw	s0,s0,0x1
    e883d7b6:	9e01                	subw	a2,a2,s0
{
    e883d7b8:	fd06                	sd	ra,184(sp)
    e883d7ba:	f526                	sd	s1,168(sp)
    e883d7bc:	f14a                	sd	s2,160(sp)
    e883d7be:	84aa                	mv	s1,a0
    e883d7c0:	ed4e                	sd	s3,152(sp)
    e883d7c2:	e556                	sd	s5,136(sp)
  unsigned char babs = (unsigned char)(b - (((-bnegative) & b) << 1));
    e883d7c4:	0ff67413          	andi	s0,a2,255
{
    e883d7c8:	892e                	mv	s2,a1
  fe_1(h->yplusx);
    e883d7ca:	b92fe0ef          	jal	ra,e883bb5c <fe_1>
  fe_1(h->yminusx);
    e883d7ce:	02848a93          	addi	s5,s1,40
    e883d7d2:	8556                	mv	a0,s5
    e883d7d4:	b88fe0ef          	jal	ra,e883bb5c <fe_1>
  ge_cmov(t,&base[pos][0],ge_equal(babs,1));
    e883d7d8:	00079997          	auipc	s3,0x79
    e883d7dc:	9a098993          	addi	s3,s3,-1632 # e88b6178 <base>
    e883d7e0:	3c000793          	li	a5,960
    e883d7e4:	02f90933          	mul	s2,s2,a5
  crypto_uint32 y = x; /* 0: yes; 1..255: no */
    e883d7e8:	00144613          	xori	a2,s0,1
  y -= 1; /* 4294967295: yes; 0..254: no */
    e883d7ec:	367d                	addiw	a2,a2,-1
  ge_cmov(t,&base[pos][0],ge_equal(babs,1));
    e883d7ee:	8526                	mv	a0,s1
  h[0] = 0;
    e883d7f0:	0404b823          	sd	zero,80(s1)
  h[2] = 0;
    e883d7f4:	0404bc23          	sd	zero,88(s1)
  h[4] = 0;
    e883d7f8:	0604b023          	sd	zero,96(s1)
  h[6] = 0;
    e883d7fc:	0604b423          	sd	zero,104(s1)
  h[8] = 0;
    e883d800:	0604b823          	sd	zero,112(s1)
  ge_cmov(t,&base[pos][0],ge_equal(babs,1));
    e883d804:	01f6561b          	srliw	a2,a2,0x1f
    e883d808:	012985b3          	add	a1,s3,s2
    e883d80c:	eb4ff0ef          	jal	ra,e883cec0 <ge_cmov>
  crypto_uint32 y = x; /* 0: yes; 1..255: no */
    e883d810:	00244613          	xori	a2,s0,2
  ge_cmov(t,&base[pos][1],ge_equal(babs,2));
    e883d814:	07890593          	addi	a1,s2,120
  y -= 1; /* 4294967295: yes; 0..254: no */
    e883d818:	367d                	addiw	a2,a2,-1
  ge_cmov(t,&base[pos][1],ge_equal(babs,2));
    e883d81a:	95ce                	add	a1,a1,s3
    e883d81c:	8526                	mv	a0,s1
    e883d81e:	01f6561b          	srliw	a2,a2,0x1f
    e883d822:	e9eff0ef          	jal	ra,e883cec0 <ge_cmov>
  crypto_uint32 y = x; /* 0: yes; 1..255: no */
    e883d826:	00344613          	xori	a2,s0,3
  ge_cmov(t,&base[pos][2],ge_equal(babs,3));
    e883d82a:	0f090593          	addi	a1,s2,240
  y -= 1; /* 4294967295: yes; 0..254: no */
    e883d82e:	367d                	addiw	a2,a2,-1
  ge_cmov(t,&base[pos][2],ge_equal(babs,3));
    e883d830:	95ce                	add	a1,a1,s3
    e883d832:	8526                	mv	a0,s1
    e883d834:	01f6561b          	srliw	a2,a2,0x1f
    e883d838:	e88ff0ef          	jal	ra,e883cec0 <ge_cmov>
  crypto_uint32 y = x; /* 0: yes; 1..255: no */
    e883d83c:	00444613          	xori	a2,s0,4
  ge_cmov(t,&base[pos][3],ge_equal(babs,4));
    e883d840:	16890593          	addi	a1,s2,360
  y -= 1; /* 4294967295: yes; 0..254: no */
    e883d844:	367d                	addiw	a2,a2,-1
  ge_cmov(t,&base[pos][3],ge_equal(babs,4));
    e883d846:	95ce                	add	a1,a1,s3
    e883d848:	8526                	mv	a0,s1
    e883d84a:	01f6561b          	srliw	a2,a2,0x1f
    e883d84e:	e72ff0ef          	jal	ra,e883cec0 <ge_cmov>
  crypto_uint32 y = x; /* 0: yes; 1..255: no */
    e883d852:	00544613          	xori	a2,s0,5
  ge_cmov(t,&base[pos][4],ge_equal(babs,5));
    e883d856:	1e090593          	addi	a1,s2,480
  y -= 1; /* 4294967295: yes; 0..254: no */
    e883d85a:	367d                	addiw	a2,a2,-1
  ge_cmov(t,&base[pos][4],ge_equal(babs,5));
    e883d85c:	95ce                	add	a1,a1,s3
    e883d85e:	8526                	mv	a0,s1
    e883d860:	01f6561b          	srliw	a2,a2,0x1f
    e883d864:	e5cff0ef          	jal	ra,e883cec0 <ge_cmov>
  crypto_uint32 y = x; /* 0: yes; 1..255: no */
    e883d868:	00644613          	xori	a2,s0,6
  ge_cmov(t,&base[pos][5],ge_equal(babs,6));
    e883d86c:	25890593          	addi	a1,s2,600
  y -= 1; /* 4294967295: yes; 0..254: no */
    e883d870:	367d                	addiw	a2,a2,-1
  ge_cmov(t,&base[pos][5],ge_equal(babs,6));
    e883d872:	95ce                	add	a1,a1,s3
    e883d874:	8526                	mv	a0,s1
    e883d876:	01f6561b          	srliw	a2,a2,0x1f
    e883d87a:	e46ff0ef          	jal	ra,e883cec0 <ge_cmov>
  crypto_uint32 y = x; /* 0: yes; 1..255: no */
    e883d87e:	00744613          	xori	a2,s0,7
  ge_cmov(t,&base[pos][6],ge_equal(babs,7));
    e883d882:	2d090593          	addi	a1,s2,720
  y -= 1; /* 4294967295: yes; 0..254: no */
    e883d886:	367d                	addiw	a2,a2,-1
  ge_cmov(t,&base[pos][6],ge_equal(babs,7));
    e883d888:	95ce                	add	a1,a1,s3
    e883d88a:	8526                	mv	a0,s1
    e883d88c:	01f6561b          	srliw	a2,a2,0x1f
    e883d890:	e30ff0ef          	jal	ra,e883cec0 <ge_cmov>
  crypto_uint32 y = x; /* 0: yes; 1..255: no */
    e883d894:	00844613          	xori	a2,s0,8
  ge_cmov(t,&base[pos][7],ge_equal(babs,8));
    e883d898:	34890593          	addi	a1,s2,840
  y -= 1; /* 4294967295: yes; 0..254: no */
    e883d89c:	367d                	addiw	a2,a2,-1
  ge_cmov(t,&base[pos][7],ge_equal(babs,8));
    e883d89e:	01f6561b          	srliw	a2,a2,0x1f
    e883d8a2:	95ce                	add	a1,a1,s3
    e883d8a4:	8526                	mv	a0,s1
    e883d8a6:	e1aff0ef          	jal	ra,e883cec0 <ge_cmov>
  fe_copy(minust.yplusx,t->yminusx);
    e883d8aa:	85d6                	mv	a1,s5
    e883d8ac:	0028                	addi	a0,sp,8
    e883d8ae:	c24fe0ef          	jal	ra,e883bcd2 <fe_copy>
  fe_copy(minust.yminusx,t->yplusx);
    e883d8b2:	85a6                	mv	a1,s1
    e883d8b4:	1808                	addi	a0,sp,48
    e883d8b6:	c1cfe0ef          	jal	ra,e883bcd2 <fe_copy>
  fe_neg(minust.xy2d,t->xy2d);
    e883d8ba:	05048593          	addi	a1,s1,80
    e883d8be:	08a8                	addi	a0,sp,88
    e883d8c0:	ff4fe0ef          	jal	ra,e883c0b4 <fe_neg>
  ge_cmov(t,&minust,bnegative);
    e883d8c4:	8652                	mv	a2,s4
    e883d8c6:	002c                	addi	a1,sp,8
    e883d8c8:	8526                	mv	a0,s1
    e883d8ca:	df6ff0ef          	jal	ra,e883cec0 <ge_cmov>
}
    e883d8ce:	744a                	ld	s0,176(sp)
    e883d8d0:	70ea                	ld	ra,184(sp)
    e883d8d2:	74aa                	ld	s1,168(sp)
    e883d8d4:	790a                	ld	s2,160(sp)
    e883d8d6:	69ea                	ld	s3,152(sp)
    e883d8d8:	6a4a                	ld	s4,144(sp)
    e883d8da:	6aaa                	ld	s5,136(sp)
    e883d8dc:	6129                	addi	sp,sp,192
    e883d8de:	8082                	ret

00000000e883d8e0 <ge_double_scalarmult_vartime>:
{
    e883d8e0:	7125                	addi	sp,sp,-416
    e883d8e2:	ef06                	sd	ra,408(sp)
    e883d8e4:	eb22                	sd	s0,400(sp)
    e883d8e6:	e726                	sd	s1,392(sp)
    e883d8e8:	e34a                	sd	s2,384(sp)
    e883d8ea:	fece                	sd	s3,376(sp)
    e883d8ec:	fad2                	sd	s4,368(sp)
    e883d8ee:	f6d6                	sd	s5,360(sp)
    e883d8f0:	f2da                	sd	s6,352(sp)
    e883d8f2:	eede                	sd	s7,344(sp)
    e883d8f4:	eae2                	sd	s8,336(sp)
    e883d8f6:	e6e6                	sd	s9,328(sp)
    e883d8f8:	e2ea                	sd	s10,320(sp)
    e883d8fa:	fe6e                	sd	s11,312(sp)
    e883d8fc:	81010113          	addi	sp,sp,-2032
  ge_slide(aslide,a);
    e883d900:	22010a93          	addi	s5,sp,544
{
    e883d904:	8a2a                	mv	s4,a0
  ge_slide(aslide,a);
    e883d906:	8556                	mv	a0,s5
{
    e883d908:	8932                	mv	s2,a2
    e883d90a:	e436                	sd	a3,8(sp)
  ge_slide(aslide,a);
    e883d90c:	852ff0ef          	jal	ra,e883c95e <ge_slide>
  ge_slide(bslide,b);
    e883d910:	32010b13          	addi	s6,sp,800
    e883d914:	66a2                	ld	a3,8(sp)
    e883d916:	855a                	mv	a0,s6
  ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
    e883d918:	6985                	lui	s3,0x1
  ge_slide(bslide,b);
    e883d91a:	85b6                	mv	a1,a3
    e883d91c:	842ff0ef          	jal	ra,e883c95e <ge_slide>
  ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
    e883d920:	747d                	lui	s0,0xfffff
  ge_p3_to_cached(&Ai[0],A);
    e883d922:	85ca                	mv	a1,s2
    e883d924:	42010513          	addi	a0,sp,1056
    e883d928:	d10ff0ef          	jal	ra,e883ce38 <ge_p3_to_cached>
  ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
    e883d92c:	72040493          	addi	s1,s0,1824 # fffffffffffff720 <__DRAM0_INF_BASE+0xffffffff0000f720>
    e883d930:	0818                	addi	a4,sp,16
    e883d932:	91098793          	addi	a5,s3,-1776 # 910 <memcmp-0xe87ff6f0>
    e883d936:	97ba                	add	a5,a5,a4
    e883d938:	94be                	add	s1,s1,a5
    e883d93a:	85ca                	mv	a1,s2
    e883d93c:	8526                	mv	a0,s1
    e883d93e:	d4aff0ef          	jal	ra,e883ce88 <ge_p3_dbl>
  ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u);
    e883d942:	7c040413          	addi	s0,s0,1984
  ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
    e883d946:	85a6                	mv	a1,s1
    e883d948:	0308                	addi	a0,sp,384
    e883d94a:	9aeff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
  ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u);
    e883d94e:	42010613          	addi	a2,sp,1056
    e883d952:	030c                	addi	a1,sp,384
    e883d954:	8526                	mv	a0,s1
    e883d956:	f5bfe0ef          	jal	ra,e883c8b0 <ge_add>
    e883d95a:	0818                	addi	a4,sp,16
    e883d95c:	91098793          	addi	a5,s3,-1776
    e883d960:	97ba                	add	a5,a5,a4
    e883d962:	943e                	add	s0,s0,a5
    e883d964:	85a6                	mv	a1,s1
    e883d966:	8522                	mv	a0,s0
    e883d968:	990ff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
    e883d96c:	85a2                	mv	a1,s0
    e883d96e:	4c010513          	addi	a0,sp,1216
    e883d972:	cc6ff0ef          	jal	ra,e883ce38 <ge_p3_to_cached>
  ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u);
    e883d976:	4c010613          	addi	a2,sp,1216
    e883d97a:	030c                	addi	a1,sp,384
    e883d97c:	8526                	mv	a0,s1
    e883d97e:	f33fe0ef          	jal	ra,e883c8b0 <ge_add>
    e883d982:	85a6                	mv	a1,s1
    e883d984:	8522                	mv	a0,s0
    e883d986:	972ff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
    e883d98a:	85a2                	mv	a1,s0
    e883d98c:	56010513          	addi	a0,sp,1376
    e883d990:	ca8ff0ef          	jal	ra,e883ce38 <ge_p3_to_cached>
  ge_add(&t,&A2,&Ai[2]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[3],&u);
    e883d994:	56010613          	addi	a2,sp,1376
    e883d998:	030c                	addi	a1,sp,384
    e883d99a:	8526                	mv	a0,s1
    e883d99c:	f15fe0ef          	jal	ra,e883c8b0 <ge_add>
    e883d9a0:	85a6                	mv	a1,s1
    e883d9a2:	8522                	mv	a0,s0
    e883d9a4:	954ff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
    e883d9a8:	85a2                	mv	a1,s0
    e883d9aa:	60010513          	addi	a0,sp,1536
    e883d9ae:	c8aff0ef          	jal	ra,e883ce38 <ge_p3_to_cached>
  ge_add(&t,&A2,&Ai[3]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[4],&u);
    e883d9b2:	60010613          	addi	a2,sp,1536
    e883d9b6:	030c                	addi	a1,sp,384
    e883d9b8:	8526                	mv	a0,s1
    e883d9ba:	ef7fe0ef          	jal	ra,e883c8b0 <ge_add>
    e883d9be:	85a6                	mv	a1,s1
    e883d9c0:	8522                	mv	a0,s0
    e883d9c2:	936ff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
    e883d9c6:	85a2                	mv	a1,s0
    e883d9c8:	6a010513          	addi	a0,sp,1696
    e883d9cc:	c6cff0ef          	jal	ra,e883ce38 <ge_p3_to_cached>
  ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u);
    e883d9d0:	6a010613          	addi	a2,sp,1696
    e883d9d4:	030c                	addi	a1,sp,384
    e883d9d6:	8526                	mv	a0,s1
    e883d9d8:	ed9fe0ef          	jal	ra,e883c8b0 <ge_add>
    e883d9dc:	85a6                	mv	a1,s1
    e883d9de:	8522                	mv	a0,s0
    e883d9e0:	918ff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
    e883d9e4:	85a2                	mv	a1,s0
    e883d9e6:	74010513          	addi	a0,sp,1856
    e883d9ea:	c4eff0ef          	jal	ra,e883ce38 <ge_p3_to_cached>
  ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u);
    e883d9ee:	74010613          	addi	a2,sp,1856
    e883d9f2:	030c                	addi	a1,sp,384
    e883d9f4:	8526                	mv	a0,s1
    e883d9f6:	ebbfe0ef          	jal	ra,e883c8b0 <ge_add>
    e883d9fa:	85a6                	mv	a1,s1
    e883d9fc:	8522                	mv	a0,s0
    e883d9fe:	8faff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
    e883da02:	85a2                	mv	a1,s0
    e883da04:	7e010513          	addi	a0,sp,2016
    e883da08:	c30ff0ef          	jal	ra,e883ce38 <ge_p3_to_cached>
  ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u);
    e883da0c:	7e010613          	addi	a2,sp,2016
    e883da10:	030c                	addi	a1,sp,384
    e883da12:	8526                	mv	a0,s1
    e883da14:	e9dfe0ef          	jal	ra,e883c8b0 <ge_add>
    e883da18:	85a6                	mv	a1,s1
    e883da1a:	8522                	mv	a0,s0
    e883da1c:	8dcff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
    e883da20:	87098793          	addi	a5,s3,-1936
    e883da24:	0818                	addi	a4,sp,16
    e883da26:	00f70533          	add	a0,a4,a5
    e883da2a:	85a2                	mv	a1,s0
    e883da2c:	c0cff0ef          	jal	ra,e883ce38 <ge_p3_to_cached>
  h[0] = 0;
    e883da30:	000a3023          	sd	zero,0(s4)
  fe_1(h->Y);
    e883da34:	028a0513          	addi	a0,s4,40
  h[2] = 0;
    e883da38:	000a3423          	sd	zero,8(s4)
  h[4] = 0;
    e883da3c:	000a3823          	sd	zero,16(s4)
  h[6] = 0;
    e883da40:	000a3c23          	sd	zero,24(s4)
  h[8] = 0;
    e883da44:	020a3023          	sd	zero,32(s4)
  fe_1(h->Y);
    e883da48:	914fe0ef          	jal	ra,e883bb5c <fe_1>
  fe_1(h->Z);
    e883da4c:	050a0513          	addi	a0,s4,80
    e883da50:	90cfe0ef          	jal	ra,e883bb5c <fe_1>
    e883da54:	0ff00793          	li	a5,255
  for (i = 255;i >= 0;--i) {
    e883da58:	577d                	li	a4,-1
    if (aslide[i] || bslide[i]) break;
    e883da5a:	80fac68b          	lrbu	a3,s5,a5,0
    e883da5e:	00078c9b          	sext.w	s9,a5
    e883da62:	e681                	bnez	a3,e883da6a <ge_double_scalarmult_vartime+0x18a>
    e883da64:	80fb468b          	lrbu	a3,s6,a5,0
    e883da68:	cec5                	beqz	a3,e883db20 <ge_double_scalarmult_vartime+0x240>
    ge_p2_dbl(&t,r);
    e883da6a:	6785                	lui	a5,0x1
    e883da6c:	0814                	addi	a3,sp,16
    e883da6e:	91078713          	addi	a4,a5,-1776 # 910 <memcmp-0xe87ff6f0>
    e883da72:	79fd                	lui	s3,0xfffff
    e883da74:	9736                	add	a4,a4,a3
    e883da76:	72098413          	addi	s0,s3,1824 # fffffffffffff720 <__DRAM0_INF_BASE+0xffffffff0000f720>
    e883da7a:	943a                	add	s0,s0,a4
      ge_p1p1_to_p3(&u,&t);
    e883da7c:	91078713          	addi	a4,a5,-1776
    e883da80:	7c098493          	addi	s1,s3,1984
    e883da84:	9736                	add	a4,a4,a3
fe_add(t0,r->X,r->X);
    e883da86:	91078793          	addi	a5,a5,-1776
      ge_p1p1_to_p3(&u,&t);
    e883da8a:	94ba                	add	s1,s1,a4
fe_add(t0,r->X,r->X);
    e883da8c:	6f898993          	addi	s3,s3,1784
    e883da90:	97b6                	add	a5,a5,a3
    e883da92:	8c66                	mv	s8,s9
fe_add(r->X,p->Y,p->X);
    e883da94:	02848d13          	addi	s10,s1,40
fe_sub(r->Y,p->Y,p->X);
    e883da98:	02840913          	addi	s2,s0,40
fe_add(t0,r->X,r->X);
    e883da9c:	99be                	add	s3,s3,a5
    ge_p2_dbl(&t,r);
    e883da9e:	85d2                	mv	a1,s4
    e883daa0:	8522                	mv	a0,s0
    e883daa2:	8acff0ef          	jal	ra,e883cb4e <ge_p2_dbl>
    if (aslide[i] > 0) {
    e883daa6:	018ac78b          	lrb	a5,s5,s8,0
    e883daaa:	08f05f63          	blez	a5,e883db48 <ge_double_scalarmult_vartime+0x268>
      ge_p1p1_to_p3(&u,&t);
    e883daae:	85a2                	mv	a1,s0
    e883dab0:	8526                	mv	a0,s1
    e883dab2:	846ff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
      ge_add(&t,&u,&Ai[aslide[i]/2]);
    e883dab6:	018ac78b          	lrb	a5,s5,s8,0
    e883daba:	4709                	li	a4,2
    e883dabc:	42010613          	addi	a2,sp,1056
    e883dac0:	02e7c7bb          	divw	a5,a5,a4
    e883dac4:	0a000713          	li	a4,160
    e883dac8:	85a6                	mv	a1,s1
    e883daca:	8522                	mv	a0,s0
    e883dacc:	1c07a78b          	ext	a5,a5,7,0
    e883dad0:	20e7960b          	mula	a2,a5,a4
    e883dad4:	dddfe0ef          	jal	ra,e883c8b0 <ge_add>
    if (bslide[i] > 0) {
    e883dad8:	018b478b          	lrb	a5,s6,s8,0
    e883dadc:	12f05463          	blez	a5,e883dc04 <ge_double_scalarmult_vartime+0x324>
      ge_p1p1_to_p3(&u,&t);
    e883dae0:	85a2                	mv	a1,s0
    e883dae2:	8526                	mv	a0,s1
    e883dae4:	814ff0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
      ge_madd(&t,&u,&Bi[bslide[i]/2]);
    e883dae8:	018b478b          	lrb	a5,s6,s8,0
    e883daec:	4709                	li	a4,2
    e883daee:	00078617          	auipc	a2,0x78
    e883daf2:	2ca60613          	addi	a2,a2,714 # e88b5db8 <Bi>
    e883daf6:	02e7c7bb          	divw	a5,a5,a4
    e883dafa:	07800713          	li	a4,120
    e883dafe:	85a6                	mv	a1,s1
    e883db00:	8522                	mv	a0,s0
    e883db02:	1c07a78b          	ext	a5,a5,7,0
    e883db06:	20e7960b          	mula	a2,a5,a4
    e883db0a:	f09fe0ef          	jal	ra,e883ca12 <ge_madd>
    ge_p1p1_to_p2(r,&t);
    e883db0e:	85a2                	mv	a1,s0
    e883db10:	8552                	mv	a0,s4
  for (;i >= 0;--i) {
    e883db12:	3cfd                	addiw	s9,s9,-1
    ge_p1p1_to_p2(r,&t);
    e883db14:	fa1fe0ef          	jal	ra,e883cab4 <ge_p1p1_to_p2>
  for (;i >= 0;--i) {
    e883db18:	1c7d                	addi	s8,s8,-1
    e883db1a:	f80cd2e3          	bgez	s9,e883da9e <ge_double_scalarmult_vartime+0x1be>
    e883db1e:	a021                	j	e883db26 <ge_double_scalarmult_vartime+0x246>
  for (i = 255;i >= 0;--i) {
    e883db20:	17fd                	addi	a5,a5,-1
    e883db22:	f2e79ce3          	bne	a5,a4,e883da5a <ge_double_scalarmult_vartime+0x17a>
}
    e883db26:	7f010113          	addi	sp,sp,2032
    e883db2a:	60fa                	ld	ra,408(sp)
    e883db2c:	645a                	ld	s0,400(sp)
    e883db2e:	64ba                	ld	s1,392(sp)
    e883db30:	691a                	ld	s2,384(sp)
    e883db32:	79f6                	ld	s3,376(sp)
    e883db34:	7a56                	ld	s4,368(sp)
    e883db36:	7ab6                	ld	s5,360(sp)
    e883db38:	7b16                	ld	s6,352(sp)
    e883db3a:	6bf6                	ld	s7,344(sp)
    e883db3c:	6c56                	ld	s8,336(sp)
    e883db3e:	6cb6                	ld	s9,328(sp)
    e883db40:	6d16                	ld	s10,320(sp)
    e883db42:	7df2                	ld	s11,312(sp)
    e883db44:	611d                	addi	sp,sp,416
    e883db46:	8082                	ret
    } else if (aslide[i] < 0) {
    e883db48:	dbc1                	beqz	a5,e883dad8 <ge_double_scalarmult_vartime+0x1f8>
      ge_p1p1_to_p3(&u,&t);
    e883db4a:	85a2                	mv	a1,s0
    e883db4c:	8526                	mv	a0,s1
    e883db4e:	fabfe0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
      ge_sub(&t,&u,&Ai[(-aslide[i])/2]);
    e883db52:	018acb8b          	lrb	s7,s5,s8,0
    e883db56:	4609                	li	a2,2
fe_add(r->X,p->Y,p->X);
    e883db58:	85ea                	mv	a1,s10
      ge_sub(&t,&u,&Ai[(-aslide[i])/2]);
    e883db5a:	41700bbb          	negw	s7,s7
    e883db5e:	02cbcbbb          	divw	s7,s7,a2
fe_add(r->X,p->Y,p->X);
    e883db62:	8522                	mv	a0,s0
    e883db64:	8626                	mv	a2,s1
    e883db66:	80cfe0ef          	jal	ra,e883bb72 <fe_add>
fe_mul(r->Z,r->X,q->YminusX);
    e883db6a:	05040d93          	addi	s11,s0,80
fe_sub(r->Y,p->Y,p->X);
    e883db6e:	8626                	mv	a2,s1
    e883db70:	85ea                	mv	a1,s10
    e883db72:	854a                	mv	a0,s2
    e883db74:	aa7fe0ef          	jal	ra,e883c61a <fe_sub>
fe_mul(r->Z,r->X,q->YminusX);
    e883db78:	0a000613          	li	a2,160
    e883db7c:	42010793          	addi	a5,sp,1056
    e883db80:	85a2                	mv	a1,s0
    e883db82:	856e                	mv	a0,s11
    e883db84:	02cb8bb3          	mul	s7,s7,a2
    e883db88:	028b8613          	addi	a2,s7,40 # ffffffffffff0028 <__DRAM0_INF_BASE+0xffffffff00000028>
    e883db8c:	963e                	add	a2,a2,a5
    e883db8e:	95afe0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->Y,r->Y,q->YplusX);
    e883db92:	42010793          	addi	a5,sp,1056
    e883db96:	01778633          	add	a2,a5,s7
    e883db9a:	85ca                	mv	a1,s2
    e883db9c:	854a                	mv	a0,s2
    e883db9e:	94afe0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->T,q->T2d,p->T);
    e883dba2:	42010713          	addi	a4,sp,1056
    e883dba6:	07840793          	addi	a5,s0,120
    e883dbaa:	078b8593          	addi	a1,s7,120
    e883dbae:	95ba                	add	a1,a1,a4
    e883dbb0:	0ab0                	addi	a2,sp,344
    e883dbb2:	853e                	mv	a0,a5
    e883dbb4:	e43e                	sd	a5,8(sp)
    e883dbb6:	932fe0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->X,p->Z,q->Z);
    e883dbba:	42010793          	addi	a5,sp,1056
    e883dbbe:	050b8613          	addi	a2,s7,80
    e883dbc2:	963e                	add	a2,a2,a5
    e883dbc4:	1a0c                	addi	a1,sp,304
    e883dbc6:	8522                	mv	a0,s0
    e883dbc8:	920fe0ef          	jal	ra,e883bce8 <fe_mul>
fe_add(t0,r->X,r->X);
    e883dbcc:	8622                	mv	a2,s0
    e883dbce:	85a2                	mv	a1,s0
    e883dbd0:	854e                	mv	a0,s3
    e883dbd2:	fa1fd0ef          	jal	ra,e883bb72 <fe_add>
fe_sub(r->X,r->Z,r->Y);
    e883dbd6:	864a                	mv	a2,s2
    e883dbd8:	85ee                	mv	a1,s11
    e883dbda:	8522                	mv	a0,s0
    e883dbdc:	a3ffe0ef          	jal	ra,e883c61a <fe_sub>
fe_add(r->Y,r->Z,r->Y);
    e883dbe0:	864a                	mv	a2,s2
    e883dbe2:	85ee                	mv	a1,s11
    e883dbe4:	854a                	mv	a0,s2
    e883dbe6:	f8dfd0ef          	jal	ra,e883bb72 <fe_add>
fe_sub(r->Z,t0,r->T);
    e883dbea:	67a2                	ld	a5,8(sp)
    e883dbec:	85ce                	mv	a1,s3
    e883dbee:	856e                	mv	a0,s11
    e883dbf0:	863e                	mv	a2,a5
    e883dbf2:	a29fe0ef          	jal	ra,e883c61a <fe_sub>
fe_add(r->T,t0,r->T);
    e883dbf6:	67a2                	ld	a5,8(sp)
    e883dbf8:	85ce                	mv	a1,s3
    e883dbfa:	863e                	mv	a2,a5
    e883dbfc:	853e                	mv	a0,a5
    e883dbfe:	f75fd0ef          	jal	ra,e883bb72 <fe_add>
    e883dc02:	bdd9                	j	e883dad8 <ge_double_scalarmult_vartime+0x1f8>
    } else if (bslide[i] < 0) {
    e883dc04:	f00785e3          	beqz	a5,e883db0e <ge_double_scalarmult_vartime+0x22e>
      ge_p1p1_to_p3(&u,&t);
    e883dc08:	85a2                	mv	a1,s0
    e883dc0a:	8526                	mv	a0,s1
    e883dc0c:	eedfe0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
      ge_msub(&t,&u,&Bi[(-bslide[i])/2]);
    e883dc10:	018b4b8b          	lrb	s7,s6,s8,0
    e883dc14:	4589                	li	a1,2
fe_add(r->X,p->Y,p->X);
    e883dc16:	8626                	mv	a2,s1
      ge_msub(&t,&u,&Bi[(-bslide[i])/2]);
    e883dc18:	41700bbb          	negw	s7,s7
    e883dc1c:	02bbcbbb          	divw	s7,s7,a1
fe_add(r->X,p->Y,p->X);
    e883dc20:	8522                	mv	a0,s0
    e883dc22:	85ea                	mv	a1,s10
    e883dc24:	f4ffd0ef          	jal	ra,e883bb72 <fe_add>
fe_mul(r->Z,r->X,q->yminusx);
    e883dc28:	05040d93          	addi	s11,s0,80
fe_sub(r->Y,p->Y,p->X);
    e883dc2c:	8626                	mv	a2,s1
    e883dc2e:	85ea                	mv	a1,s10
    e883dc30:	854a                	mv	a0,s2
    e883dc32:	9e9fe0ef          	jal	ra,e883c61a <fe_sub>
fe_mul(r->Z,r->X,q->yminusx);
    e883dc36:	07800593          	li	a1,120
    e883dc3a:	00078797          	auipc	a5,0x78
    e883dc3e:	17e78793          	addi	a5,a5,382 # e88b5db8 <Bi>
    e883dc42:	856e                	mv	a0,s11
    e883dc44:	02bb8bb3          	mul	s7,s7,a1
    e883dc48:	85a2                	mv	a1,s0
    e883dc4a:	028b8613          	addi	a2,s7,40
    e883dc4e:	963e                	add	a2,a2,a5
    e883dc50:	898fe0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->Y,r->Y,q->yplusx);
    e883dc54:	00078797          	auipc	a5,0x78
    e883dc58:	16478793          	addi	a5,a5,356 # e88b5db8 <Bi>
    e883dc5c:	01778633          	add	a2,a5,s7
    e883dc60:	85ca                	mv	a1,s2
    e883dc62:	854a                	mv	a0,s2
    e883dc64:	884fe0ef          	jal	ra,e883bce8 <fe_mul>
fe_mul(r->T,q->xy2d,p->T);
    e883dc68:	00078797          	auipc	a5,0x78
    e883dc6c:	15078793          	addi	a5,a5,336 # e88b5db8 <Bi>
    e883dc70:	050b8593          	addi	a1,s7,80
    e883dc74:	07840b93          	addi	s7,s0,120
    e883dc78:	95be                	add	a1,a1,a5
    e883dc7a:	0ab0                	addi	a2,sp,344
    e883dc7c:	855e                	mv	a0,s7
    e883dc7e:	86afe0ef          	jal	ra,e883bce8 <fe_mul>
fe_add(t0,p->Z,p->Z);
    e883dc82:	1a10                	addi	a2,sp,304
    e883dc84:	85b2                	mv	a1,a2
    e883dc86:	854e                	mv	a0,s3
    e883dc88:	eebfd0ef          	jal	ra,e883bb72 <fe_add>
fe_sub(r->X,r->Z,r->Y);
    e883dc8c:	864a                	mv	a2,s2
    e883dc8e:	85ee                	mv	a1,s11
    e883dc90:	8522                	mv	a0,s0
    e883dc92:	989fe0ef          	jal	ra,e883c61a <fe_sub>
fe_add(r->Y,r->Z,r->Y);
    e883dc96:	864a                	mv	a2,s2
    e883dc98:	85ee                	mv	a1,s11
    e883dc9a:	854a                	mv	a0,s2
    e883dc9c:	ed7fd0ef          	jal	ra,e883bb72 <fe_add>
fe_sub(r->Z,t0,r->T);
    e883dca0:	865e                	mv	a2,s7
    e883dca2:	85ce                	mv	a1,s3
    e883dca4:	856e                	mv	a0,s11
    e883dca6:	975fe0ef          	jal	ra,e883c61a <fe_sub>
fe_add(r->T,t0,r->T);
    e883dcaa:	865e                	mv	a2,s7
    e883dcac:	85ce                	mv	a1,s3
    e883dcae:	855e                	mv	a0,s7
    e883dcb0:	ec3fd0ef          	jal	ra,e883bb72 <fe_add>
    e883dcb4:	bda9                	j	e883db0e <ge_double_scalarmult_vartime+0x22e>

00000000e883dcb6 <ge_scalarmult_base>:
{
    e883dcb6:	7101                	addi	sp,sp,-512
    e883dcb8:	870a                	mv	a4,sp
    e883dcba:	fba2                	sd	s0,496(sp)
    e883dcbc:	f3ca                	sd	s2,480(sp)
    e883dcbe:	842a                	mv	s0,a0
    e883dcc0:	ff86                	sd	ra,504(sp)
    e883dcc2:	f7a6                	sd	s1,488(sp)
    e883dcc4:	efce                	sd	s3,472(sp)
    e883dcc6:	86ba                	mv	a3,a4
    e883dcc8:	4781                	li	a5,0
    e883dcca:	893a                	mv	s2,a4
  for (i = 0;i < 32;++i) {
    e883dccc:	02000513          	li	a0,32
    e[2 * i + 0] = (a[i] >> 0) & 15;
    e883dcd0:	80f5c60b          	lrbu	a2,a1,a5,0
    e883dcd4:	0785                	addi	a5,a5,1
    e883dcd6:	0689                	addi	a3,a3,2
    e883dcd8:	00f67813          	andi	a6,a2,15
    e[2 * i + 1] = (a[i] >> 4) & 15;
    e883dcdc:	0046561b          	srliw	a2,a2,0x4
    e[2 * i + 0] = (a[i] >> 0) & 15;
    e883dce0:	ff068f23          	sb	a6,-2(a3)
    e[2 * i + 1] = (a[i] >> 4) & 15;
    e883dce4:	fec68fa3          	sb	a2,-1(a3)
  for (i = 0;i < 32;++i) {
    e883dce8:	fea794e3          	bne	a5,a0,e883dcd0 <ge_scalarmult_base+0x1a>
    e883dcec:	03f70613          	addi	a2,a4,63 # ffffffffffe0003f <__DRAM0_INF_BASE+0xfffffffeffe1003f>
  carry = 0;
    e883dcf0:	4681                	li	a3,0
    e[i] += carry;
    e883dcf2:	00074783          	lbu	a5,0(a4)
    e883dcf6:	9fb5                	addw	a5,a5,a3
    e883dcf8:	1c07a78b          	ext	a5,a5,7,0
    carry = e[i] + 8;
    e883dcfc:	0087869b          	addiw	a3,a5,8
    carry >>= 4;
    e883dd00:	1c46a68b          	ext	a3,a3,7,4
    e[i] -= carry << 4;
    e883dd04:	0046959b          	slliw	a1,a3,0x4
    e883dd08:	9f8d                	subw	a5,a5,a1
    e883dd0a:	1817578b          	sbia	a5,(a4),1,0
  for (i = 0;i < 63;++i) {
    e883dd0e:	fee612e3          	bne	a2,a4,e883dcf2 <ge_scalarmult_base+0x3c>
  e[63] += carry;
    e883dd12:	03f14783          	lbu	a5,63(sp)
  fe_1(h->Y);
    e883dd16:	02840513          	addi	a0,s0,40
  h[0] = 0;
    e883dd1a:	00043023          	sd	zero,0(s0)
  e[63] += carry;
    e883dd1e:	9fb5                	addw	a5,a5,a3
  h[2] = 0;
    e883dd20:	00043423          	sd	zero,8(s0)
  h[4] = 0;
    e883dd24:	00043823          	sd	zero,16(s0)
  h[6] = 0;
    e883dd28:	00043c23          	sd	zero,24(s0)
  h[8] = 0;
    e883dd2c:	02043023          	sd	zero,32(s0)
  e[63] += carry;
    e883dd30:	02f10fa3          	sb	a5,63(sp)
  fe_1(h->Y);
    e883dd34:	e29fd0ef          	jal	ra,e883bb5c <fe_1>
  h[8] = 0;
    e883dd38:	4485                	li	s1,1
  fe_1(h->Z);
    e883dd3a:	05040513          	addi	a0,s0,80
    e883dd3e:	e1ffd0ef          	jal	ra,e883bb5c <fe_1>
  for (i = 1;i < 64;i += 2) {
    e883dd42:	04100993          	li	s3,65
  h[0] = 0;
    e883dd46:	06043c23          	sd	zero,120(s0)
  h[2] = 0;
    e883dd4a:	08043023          	sd	zero,128(s0)
  h[4] = 0;
    e883dd4e:	08043423          	sd	zero,136(s0)
  h[6] = 0;
    e883dd52:	08043823          	sd	zero,144(s0)
  h[8] = 0;
    e883dd56:	08043c23          	sd	zero,152(s0)
    ge_select(&t,i / 2,e[i]);
    e883dd5a:	0099460b          	lrb	a2,s2,s1,0
    e883dd5e:	4014d59b          	sraiw	a1,s1,0x1
    e883dd62:	1928                	addi	a0,sp,184
    e883dd64:	a3fff0ef          	jal	ra,e883d7a2 <ge_select>
    ge_madd(&r,h,&t); ge_p1p1_to_p3(h,&r);
    e883dd68:	0489                	addi	s1,s1,2
    e883dd6a:	1930                	addi	a2,sp,184
    e883dd6c:	85a2                	mv	a1,s0
    e883dd6e:	1a08                	addi	a0,sp,304
    e883dd70:	ca3fe0ef          	jal	ra,e883ca12 <ge_madd>
    e883dd74:	1a0c                	addi	a1,sp,304
    e883dd76:	8522                	mv	a0,s0
    e883dd78:	d81fe0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
  for (i = 1;i < 64;i += 2) {
    e883dd7c:	fd349fe3          	bne	s1,s3,e883dd5a <ge_scalarmult_base+0xa4>
  ge_p3_dbl(&r,h);  ge_p1p1_to_p2(&s,&r);
    e883dd80:	85a2                	mv	a1,s0
    e883dd82:	1a08                	addi	a0,sp,304
    e883dd84:	904ff0ef          	jal	ra,e883ce88 <ge_p3_dbl>
  ge_p2_dbl(&r,&s); ge_p1p1_to_p3(h,&r);
    e883dd88:	4481                	li	s1,0
  ge_p3_dbl(&r,h);  ge_p1p1_to_p2(&s,&r);
    e883dd8a:	1a0c                	addi	a1,sp,304
    e883dd8c:	0088                	addi	a0,sp,64
    e883dd8e:	d27fe0ef          	jal	ra,e883cab4 <ge_p1p1_to_p2>
  for (i = 0;i < 64;i += 2) {
    e883dd92:	04000993          	li	s3,64
  ge_p2_dbl(&r,&s); ge_p1p1_to_p2(&s,&r);
    e883dd96:	008c                	addi	a1,sp,64
    e883dd98:	1a08                	addi	a0,sp,304
    e883dd9a:	db5fe0ef          	jal	ra,e883cb4e <ge_p2_dbl>
    e883dd9e:	1a0c                	addi	a1,sp,304
    e883dda0:	0088                	addi	a0,sp,64
    e883dda2:	d13fe0ef          	jal	ra,e883cab4 <ge_p1p1_to_p2>
  ge_p2_dbl(&r,&s); ge_p1p1_to_p2(&s,&r);
    e883dda6:	008c                	addi	a1,sp,64
    e883dda8:	1a08                	addi	a0,sp,304
    e883ddaa:	da5fe0ef          	jal	ra,e883cb4e <ge_p2_dbl>
    e883ddae:	1a0c                	addi	a1,sp,304
    e883ddb0:	0088                	addi	a0,sp,64
    e883ddb2:	d03fe0ef          	jal	ra,e883cab4 <ge_p1p1_to_p2>
  ge_p2_dbl(&r,&s); ge_p1p1_to_p3(h,&r);
    e883ddb6:	008c                	addi	a1,sp,64
    e883ddb8:	1a08                	addi	a0,sp,304
    e883ddba:	d95fe0ef          	jal	ra,e883cb4e <ge_p2_dbl>
    e883ddbe:	1a0c                	addi	a1,sp,304
    e883ddc0:	8522                	mv	a0,s0
    e883ddc2:	d37fe0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
    ge_select(&t,i / 2,e[i]);
    e883ddc6:	0099460b          	lrb	a2,s2,s1,0
    e883ddca:	4014d59b          	sraiw	a1,s1,0x1
    e883ddce:	1928                	addi	a0,sp,184
    e883ddd0:	9d3ff0ef          	jal	ra,e883d7a2 <ge_select>
    ge_madd(&r,h,&t); ge_p1p1_to_p3(h,&r);
    e883ddd4:	0489                	addi	s1,s1,2
    e883ddd6:	1930                	addi	a2,sp,184
    e883ddd8:	85a2                	mv	a1,s0
    e883ddda:	1a08                	addi	a0,sp,304
    e883dddc:	c37fe0ef          	jal	ra,e883ca12 <ge_madd>
    e883dde0:	1a0c                	addi	a1,sp,304
    e883dde2:	8522                	mv	a0,s0
    e883dde4:	d15fe0ef          	jal	ra,e883caf8 <ge_p1p1_to_p3>
  for (i = 0;i < 64;i += 2) {
    e883dde8:	fd349fe3          	bne	s1,s3,e883ddc6 <ge_scalarmult_base+0x110>
}
    e883ddec:	70fe                	ld	ra,504(sp)
    e883ddee:	745e                	ld	s0,496(sp)
    e883ddf0:	74be                	ld	s1,488(sp)
    e883ddf2:	791e                	ld	s2,480(sp)
    e883ddf4:	69fe                	ld	s3,472(sp)
    e883ddf6:	20010113          	addi	sp,sp,512
    e883ddfa:	8082                	ret

00000000e883ddfc <ge_p3_tobytes>:
{
    e883ddfc:	7131                	addi	sp,sp,-192
    e883ddfe:	f922                	sd	s0,176(sp)
    e883de00:	f526                	sd	s1,168(sp)
    e883de02:	842a                	mv	s0,a0
    e883de04:	84ae                	mv	s1,a1
  fe_invert(recip,h->Z);
    e883de06:	1028                	addi	a0,sp,40
    e883de08:	05058593          	addi	a1,a1,80
{
    e883de0c:	fd06                	sd	ra,184(sp)
  fe_invert(recip,h->Z);
    e883de0e:	d5efe0ef          	jal	ra,e883c36c <fe_invert>
  fe_mul(x,h->X,recip);
    e883de12:	1030                	addi	a2,sp,40
    e883de14:	85a6                	mv	a1,s1
    e883de16:	0888                	addi	a0,sp,80
    e883de18:	ed1fd0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(y,h->Y,recip);
    e883de1c:	1030                	addi	a2,sp,40
    e883de1e:	02848593          	addi	a1,s1,40
    e883de22:	18a8                	addi	a0,sp,120
    e883de24:	ec5fd0ef          	jal	ra,e883bce8 <fe_mul>
  fe_tobytes(s,y);
    e883de28:	18ac                	addi	a1,sp,120
    e883de2a:	8522                	mv	a0,s0
    e883de2c:	85ffe0ef          	jal	ra,e883c68a <fe_tobytes>
  fe_tobytes(s,f);
    e883de30:	088c                	addi	a1,sp,80
    e883de32:	0028                	addi	a0,sp,8
    e883de34:	857fe0ef          	jal	ra,e883c68a <fe_tobytes>
}
    e883de38:	74aa                	ld	s1,168(sp)
  return s[0] & 1;
    e883de3a:	00814783          	lbu	a5,8(sp)
  s[31] ^= fe_isnegative(x) << 7;
    e883de3e:	01f44703          	lbu	a4,31(s0)
}
    e883de42:	70ea                	ld	ra,184(sp)
  return s[0] & 1;
    e883de44:	8b85                	andi	a5,a5,1
  s[31] ^= fe_isnegative(x) << 7;
    e883de46:	0077979b          	slliw	a5,a5,0x7
    e883de4a:	8fb9                	xor	a5,a5,a4
    e883de4c:	00f40fa3          	sb	a5,31(s0)
}
    e883de50:	744a                	ld	s0,176(sp)
    e883de52:	6129                	addi	sp,sp,192
    e883de54:	8082                	ret

00000000e883de56 <ed25519_make_key_pair_ref>:
{
    e883de56:	7111                	addi	sp,sp,-256
    e883de58:	f9a2                	sd	s0,240(sp)
    e883de5a:	842e                	mv	s0,a1
    e883de5c:	f5a6                	sd	s1,232(sp)
  RandomBytes(sk,32);
    e883de5e:	02000593          	li	a1,32
{
    e883de62:	84aa                	mv	s1,a0
  RandomBytes(sk,32);
    e883de64:	8522                	mv	a0,s0
{
    e883de66:	fd86                	sd	ra,248(sp)
  RandomBytes(sk,32);
    e883de68:	23c1f0ef          	jal	ra,e885d0a4 <RandomBytes>
  SHA512(sk,32,h);
    e883de6c:	860a                	mv	a2,sp
    e883de6e:	02000593          	li	a1,32
    e883de72:	8522                	mv	a0,s0
    e883de74:	010200ef          	jal	ra,e885de84 <SHA512_compat>
  h[0] &= 248;
    e883de78:	00014783          	lbu	a5,0(sp)
  ge_scalarmult_base(&A,h);
    e883de7c:	858a                	mv	a1,sp
    e883de7e:	0088                	addi	a0,sp,64
  h[0] &= 248;
    e883de80:	9be1                	andi	a5,a5,-8
    e883de82:	00f10023          	sb	a5,0(sp)
  h[31] &= 127;
    e883de86:	01f14783          	lbu	a5,31(sp)
    e883de8a:	07f7f793          	andi	a5,a5,127
  h[31] |= 64;
    e883de8e:	0407e793          	ori	a5,a5,64
    e883de92:	00f10fa3          	sb	a5,31(sp)
  ge_scalarmult_base(&A,h);
    e883de96:	e21ff0ef          	jal	ra,e883dcb6 <ge_scalarmult_base>
  ge_p3_tobytes(pk,&A);
    e883de9a:	008c                	addi	a1,sp,64
    e883de9c:	8526                	mv	a0,s1
    e883de9e:	f5fff0ef          	jal	ra,e883ddfc <ge_p3_tobytes>
}
    e883dea2:	744e                	ld	s0,240(sp)
    e883dea4:	70ee                	ld	ra,248(sp)
    e883dea6:	74ae                	ld	s1,232(sp)
    e883dea8:	6111                	addi	sp,sp,256
    e883deaa:	8082                	ret

00000000e883deac <ed25519_sign_ref>:
{
    e883deac:	ca010113          	addi	sp,sp,-864
    e883deb0:	34813823          	sd	s0,848(sp)
    e883deb4:	34913423          	sd	s1,840(sp)
    e883deb8:	35213023          	sd	s2,832(sp)
    e883debc:	84aa                	mv	s1,a0
    e883debe:	842e                	mv	s0,a1
  SHA512(sk,32,az);
    e883dec0:	853a                	mv	a0,a4
{
    e883dec2:	8932                	mv	s2,a2
  SHA512(sk,32,az);
    e883dec4:	02000593          	li	a1,32
    e883dec8:	0190                	addi	a2,sp,192
{
    e883deca:	34113c23          	sd	ra,856(sp)
    e883dece:	33313c23          	sd	s3,824(sp)
    e883ded2:	33413823          	sd	s4,816(sp)
    e883ded6:	33513423          	sd	s5,808(sp)
    e883deda:	33613023          	sd	s6,800(sp)
    e883dede:	31713c23          	sd	s7,792(sp)
    e883dee2:	31813823          	sd	s8,784(sp)
    e883dee6:	31913423          	sd	s9,776(sp)
    e883deea:	31a13023          	sd	s10,768(sp)
    e883deee:	2fb13c23          	sd	s11,760(sp)
    e883def2:	e036                	sd	a3,0(sp)
  SHA512(sk,32,az);
    e883def4:	7911f0ef          	jal	ra,e885de84 <SHA512_compat>
  az[0] &= 248;
    e883def8:	0c014783          	lbu	a5,192(sp)
  SHA512_Init(&ctx);
    e883defc:	1408                	addi	a0,sp,544
  az[0] &= 248;
    e883defe:	9be1                	andi	a5,a5,-8
    e883df00:	0cf10023          	sb	a5,192(sp)
  az[31] &= 63;
    e883df04:	0df14783          	lbu	a5,223(sp)
    e883df08:	03f7f793          	andi	a5,a5,63
  az[31] |= 64;
    e883df0c:	0407e793          	ori	a5,a5,64
    e883df10:	0cf10fa3          	sb	a5,223(sp)
  SHA512_Init(&ctx);
    e883df14:	5771f0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
  SHA512_Update(&ctx,&az[32],32);
    e883df18:	118c                	addi	a1,sp,224
    e883df1a:	02000613          	li	a2,32
    e883df1e:	1408                	addi	a0,sp,544
    e883df20:	5d71f0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
  SHA512_Update(&ctx,m,mlen);
    e883df24:	864a                	mv	a2,s2
    e883df26:	85a2                	mv	a1,s0
    e883df28:	1408                	addi	a0,sp,544
    e883df2a:	5cd1f0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
  SHA512_Final(r,&ctx);
    e883df2e:	140c                	addi	a1,sp,544
    e883df30:	0208                	addi	a0,sp,256
    e883df32:	65f1f0ef          	jal	ra,e885dd90 <SHA512_Final_compat>
  sc_reduce(r);
    e883df36:	0208                	addi	a0,sp,256
    e883df38:	fe1fe0ef          	jal	ra,e883cf18 <sc_reduce>
  ge_scalarmult_base(&R,r);
    e883df3c:	020c                	addi	a1,sp,256
    e883df3e:	0308                	addi	a0,sp,384
    e883df40:	d77ff0ef          	jal	ra,e883dcb6 <ge_scalarmult_base>
  ge_p3_tobytes(sig,&R);
    e883df44:	030c                	addi	a1,sp,384
    e883df46:	8526                	mv	a0,s1
    e883df48:	eb5ff0ef          	jal	ra,e883ddfc <ge_p3_tobytes>
  SHA512_Init(&ctx);
    e883df4c:	1408                	addi	a0,sp,544
    e883df4e:	53d1f0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
  SHA512_Update(&ctx,sig,32);
    e883df52:	85a6                	mv	a1,s1
    e883df54:	02000613          	li	a2,32
    e883df58:	1408                	addi	a0,sp,544
    e883df5a:	59d1f0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
  SHA512_Update(&ctx,pk,32);
    e883df5e:	6682                	ld	a3,0(sp)
    e883df60:	02000613          	li	a2,32
    e883df64:	1408                	addi	a0,sp,544
    e883df66:	85b6                	mv	a1,a3
    e883df68:	58f1f0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
  SHA512_Update(&ctx,m,mlen);
    e883df6c:	864a                	mv	a2,s2
    e883df6e:	85a2                	mv	a1,s0
    e883df70:	1408                	addi	a0,sp,544
    e883df72:	5851f0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
  SHA512_Final(hram,&ctx);
    e883df76:	140c                	addi	a1,sp,544
    e883df78:	0288                	addi	a0,sp,320
    e883df7a:	6171f0ef          	jal	ra,e885dd90 <SHA512_Final_compat>
  sc_reduce(hram);
    e883df7e:	0288                	addi	a0,sp,320
    e883df80:	f99fe0ef          	jal	ra,e883cf18 <sc_reduce>
  crypto_int64 a0 = 2097151 & crypto_load_3(a);
    e883df84:	0288                	addi	a0,sp,320
    e883df86:	f75fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883df8a:	50053b0b          	extu	s6,a0,20,0
  crypto_int64 a1 = 2097151 & (crypto_load_4(a + 2) >> 5);
    e883df8e:	14210513          	addi	a0,sp,322
    e883df92:	f81fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883df96:	6455328b          	extu	t0,a0,25,5
  crypto_int64 a2 = 2097151 & (crypto_load_3(a + 5) >> 2);
    e883df9a:	14510513          	addi	a0,sp,325
  crypto_int64 a1 = 2097151 & (crypto_load_4(a + 2) >> 5);
    e883df9e:	fd16                	sd	t0,184(sp)
  crypto_int64 a2 = 2097151 & (crypto_load_3(a + 5) >> 2);
    e883dfa0:	f5bfe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883dfa4:	58253f0b          	extu	t5,a0,22,2
  crypto_int64 a3 = 2097151 & (crypto_load_4(a + 7) >> 7);
    e883dfa8:	14710513          	addi	a0,sp,327
  crypto_int64 a2 = 2097151 & (crypto_load_3(a + 5) >> 2);
    e883dfac:	f97a                	sd	t5,176(sp)
  crypto_int64 a3 = 2097151 & (crypto_load_4(a + 7) >> 7);
    e883dfae:	f65fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883dfb2:	6c753e0b          	extu	t3,a0,27,7
  crypto_int64 a4 = 2097151 & (crypto_load_4(a + 10) >> 4);
    e883dfb6:	14a10513          	addi	a0,sp,330
  crypto_int64 a3 = 2097151 & (crypto_load_4(a + 7) >> 7);
    e883dfba:	f572                	sd	t3,168(sp)
  crypto_int64 a4 = 2097151 & (crypto_load_4(a + 10) >> 4);
    e883dfbc:	f57fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883dfc0:	6045388b          	extu	a7,a0,24,4
  crypto_int64 a5 = 2097151 & (crypto_load_3(a + 13) >> 1);
    e883dfc4:	14d10513          	addi	a0,sp,333
  crypto_int64 a4 = 2097151 & (crypto_load_4(a + 10) >> 4);
    e883dfc8:	f146                	sd	a7,160(sp)
  crypto_int64 a5 = 2097151 & (crypto_load_3(a + 13) >> 1);
    e883dfca:	f31fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883dfce:	5415358b          	extu	a1,a0,21,1
  crypto_int64 a6 = 2097151 & (crypto_load_4(a + 15) >> 6);
    e883dfd2:	14f10513          	addi	a0,sp,335
  crypto_int64 a5 = 2097151 & (crypto_load_3(a + 13) >> 1);
    e883dfd6:	ed2e                	sd	a1,152(sp)
  crypto_int64 a6 = 2097151 & (crypto_load_4(a + 15) >> 6);
    e883dfd8:	f3bfe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883dfdc:	6865368b          	extu	a3,a0,26,6
  crypto_int64 a7 = 2097151 & (crypto_load_3(a + 18) >> 3);
    e883dfe0:	15210513          	addi	a0,sp,338
  crypto_int64 a6 = 2097151 & (crypto_load_4(a + 15) >> 6);
    e883dfe4:	e936                	sd	a3,144(sp)
  crypto_int64 a7 = 2097151 & (crypto_load_3(a + 18) >> 3);
    e883dfe6:	f15fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883dfea:	5c35378b          	extu	a5,a0,23,3
  crypto_int64 a8 = 2097151 & crypto_load_3(a + 21);
    e883dfee:	15510513          	addi	a0,sp,341
  crypto_int64 a7 = 2097151 & (crypto_load_3(a + 18) >> 3);
    e883dff2:	e53e                	sd	a5,136(sp)
  crypto_int64 a8 = 2097151 & crypto_load_3(a + 21);
    e883dff4:	f07fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883dff8:	50053a8b          	extu	s5,a0,20,0
  crypto_int64 a9 = 2097151 & (crypto_load_4(a + 23) >> 5);
    e883dffc:	15710513          	addi	a0,sp,343
    e883e000:	f13fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e004:	64553d0b          	extu	s10,a0,25,5
  crypto_int64 a10 = 2097151 & (crypto_load_3(a + 26) >> 2);
    e883e008:	15a10513          	addi	a0,sp,346
    e883e00c:	eeffe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e010:	58253c0b          	extu	s8,a0,22,2
  crypto_int64 a11 = (crypto_load_4(a + 28) >> 7);
    e883e014:	0ae8                	addi	a0,sp,348
    e883e016:	efdfe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e01a:	00755b93          	srli	s7,a0,0x7
  crypto_int64 b0 = 2097151 & crypto_load_3(b);
    e883e01e:	0188                	addi	a0,sp,192
    e883e020:	edbfe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e024:	5005378b          	extu	a5,a0,20,0
  crypto_int64 b1 = 2097151 & (crypto_load_4(b + 2) >> 5);
    e883e028:	0c210513          	addi	a0,sp,194
  crypto_int64 b0 = 2097151 & crypto_load_3(b);
    e883e02c:	e03e                	sd	a5,0(sp)
  crypto_int64 b1 = 2097151 & (crypto_load_4(b + 2) >> 5);
    e883e02e:	ee5fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e032:	64553f8b          	extu	t6,a0,25,5
  crypto_int64 b2 = 2097151 & (crypto_load_3(b + 5) >> 2);
    e883e036:	0c510513          	addi	a0,sp,197
  crypto_int64 b1 = 2097151 & (crypto_load_4(b + 2) >> 5);
    e883e03a:	ecfe                	sd	t6,88(sp)
  crypto_int64 b2 = 2097151 & (crypto_load_3(b + 5) >> 2);
    e883e03c:	ebffe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e040:	58253e8b          	extu	t4,a0,22,2
  crypto_int64 b3 = 2097151 & (crypto_load_4(b + 7) >> 7);
    e883e044:	0c710513          	addi	a0,sp,199
  crypto_int64 b2 = 2097151 & (crypto_load_3(b + 5) >> 2);
    e883e048:	e176                	sd	t4,128(sp)
  crypto_int64 b3 = 2097151 & (crypto_load_4(b + 7) >> 7);
    e883e04a:	ec9fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e04e:	6c75330b          	extu	t1,a0,27,7
  crypto_int64 b4 = 2097151 & (crypto_load_4(b + 10) >> 4);
    e883e052:	0ca10513          	addi	a0,sp,202
  crypto_int64 b3 = 2097151 & (crypto_load_4(b + 7) >> 7);
    e883e056:	f09a                	sd	t1,96(sp)
  crypto_int64 b4 = 2097151 & (crypto_load_4(b + 10) >> 4);
    e883e058:	ebbfe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e05c:	6045380b          	extu	a6,a0,24,4
  crypto_int64 b5 = 2097151 & (crypto_load_3(b + 13) >> 1);
    e883e060:	0cd10513          	addi	a0,sp,205
  crypto_int64 b4 = 2097151 & (crypto_load_4(b + 10) >> 4);
    e883e064:	fcc2                	sd	a6,120(sp)
  crypto_int64 b5 = 2097151 & (crypto_load_3(b + 13) >> 1);
    e883e066:	e95fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e06a:	5415360b          	extu	a2,a0,21,1
  crypto_int64 b6 = 2097151 & (crypto_load_4(b + 15) >> 6);
    e883e06e:	0cf10513          	addi	a0,sp,207
  crypto_int64 b5 = 2097151 & (crypto_load_3(b + 13) >> 1);
    e883e072:	f4b2                	sd	a2,104(sp)
  crypto_int64 b6 = 2097151 & (crypto_load_4(b + 15) >> 6);
    e883e074:	e9ffe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e078:	6865370b          	extu	a4,a0,26,6
  crypto_int64 b7 = 2097151 & (crypto_load_3(b + 18) >> 3);
    e883e07c:	0d210513          	addi	a0,sp,210
  crypto_int64 b6 = 2097151 & (crypto_load_4(b + 15) >> 6);
    e883e080:	f8ba                	sd	a4,112(sp)
  crypto_int64 b7 = 2097151 & (crypto_load_3(b + 18) >> 3);
    e883e082:	e79fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e086:	5c353d8b          	extu	s11,a0,23,3
  crypto_int64 b8 = 2097151 & crypto_load_3(b + 21);
    e883e08a:	0d510513          	addi	a0,sp,213
    e883e08e:	e6dfe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e092:	5005390b          	extu	s2,a0,20,0
  crypto_int64 b9 = 2097151 & (crypto_load_4(b + 23) >> 5);
    e883e096:	0d710513          	addi	a0,sp,215
    e883e09a:	e79fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e09e:	64553c8b          	extu	s9,a0,25,5
  crypto_int64 b10 = 2097151 & (crypto_load_3(b + 26) >> 2);
    e883e0a2:	0da10513          	addi	a0,sp,218
    e883e0a6:	e55fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e0aa:	58253a0b          	extu	s4,a0,22,2
  crypto_int64 b11 = (crypto_load_4(b + 28) >> 7);
    e883e0ae:	09e8                	addi	a0,sp,220
    e883e0b0:	e63fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e0b4:	00755993          	srli	s3,a0,0x7
  crypto_int64 c0 = 2097151 & crypto_load_3(c);
    e883e0b8:	0208                	addi	a0,sp,256
    e883e0ba:	e41fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e0be:	e42a                	sd	a0,8(sp)
  crypto_int64 c1 = 2097151 & (crypto_load_4(c + 2) >> 5);
    e883e0c0:	10210513          	addi	a0,sp,258
    e883e0c4:	e4ffe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e0c8:	842a                	mv	s0,a0
  crypto_int64 c2 = 2097151 & (crypto_load_3(c + 5) >> 2);
    e883e0ca:	10510513          	addi	a0,sp,261
    e883e0ce:	e2dfe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e0d2:	e82a                	sd	a0,16(sp)
  crypto_int64 c3 = 2097151 & (crypto_load_4(c + 7) >> 7);
    e883e0d4:	10710513          	addi	a0,sp,263
    e883e0d8:	e3bfe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e0dc:	ec2a                	sd	a0,24(sp)
  crypto_int64 c4 = 2097151 & (crypto_load_4(c + 10) >> 4);
    e883e0de:	10a10513          	addi	a0,sp,266
    e883e0e2:	e31fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e0e6:	f02a                	sd	a0,32(sp)
  crypto_int64 c5 = 2097151 & (crypto_load_3(c + 13) >> 1);
    e883e0e8:	10d10513          	addi	a0,sp,269
    e883e0ec:	e0ffe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e0f0:	f42a                	sd	a0,40(sp)
  crypto_int64 c6 = 2097151 & (crypto_load_4(c + 15) >> 6);
    e883e0f2:	10f10513          	addi	a0,sp,271
    e883e0f6:	e1dfe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e0fa:	f82a                	sd	a0,48(sp)
  crypto_int64 c7 = 2097151 & (crypto_load_3(c + 18) >> 3);
    e883e0fc:	11210513          	addi	a0,sp,274
    e883e100:	dfbfe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e104:	fc2a                	sd	a0,56(sp)
  crypto_int64 c8 = 2097151 & crypto_load_3(c + 21);
    e883e106:	11510513          	addi	a0,sp,277
    e883e10a:	df1fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e10e:	e0aa                	sd	a0,64(sp)
  crypto_int64 c9 = 2097151 & (crypto_load_4(c + 23) >> 5);
    e883e110:	11710513          	addi	a0,sp,279
    e883e114:	dfffe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883e118:	e4aa                	sd	a0,72(sp)
  crypto_int64 c10 = 2097151 & (crypto_load_3(c + 26) >> 2);
    e883e11a:	11a10513          	addi	a0,sp,282
    e883e11e:	dddfe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883e122:	e8aa                	sd	a0,80(sp)
  crypto_int64 c11 = (crypto_load_4(c + 28) >> 7);
    e883e124:	0a68                	addi	a0,sp,284
    e883e126:	dedfe0ef          	jal	ra,e883cf12 <crypto_load_4>
  crypto_int64 c0 = 2097151 & crypto_load_3(c);
    e883e12a:	63a2                	ld	t2,8(sp)
  s0 = c0 + a0*b0;
    e883e12c:	6782                	ld	a5,0(sp)
  s1 = c1 + a0*b1 + a1*b0;
    e883e12e:	72ea                	ld	t0,184(sp)
  crypto_int64 c0 = 2097151 & crypto_load_3(c);
    e883e130:	5003b38b          	extu	t2,t2,20,0
  s0 = c0 + a0*b0;
    e883e134:	20fb138b          	mula	t2,s6,a5
  s1 = c1 + a0*b1 + a1*b0;
    e883e138:	6fe6                	ld	t6,88(sp)
  s2 = c2 + a0*b2 + a1*b1 + a2*b0;
    e883e13a:	6e8a                	ld	t4,128(sp)
    e883e13c:	7f4a                	ld	t5,176(sp)
  s3 = c3 + a0*b3 + a1*b2 + a2*b1 + a3*b0;
    e883e13e:	7306                	ld	t1,96(sp)
    e883e140:	7e2a                	ld	t3,168(sp)
  s4 = c4 + a0*b4 + a1*b3 + a2*b2 + a3*b1 + a4*b0;
    e883e142:	7866                	ld	a6,120(sp)
    e883e144:	788a                	ld	a7,160(sp)
  s5 = c5 + a0*b5 + a1*b4 + a2*b3 + a3*b2 + a4*b1 + a5*b0;
    e883e146:	7626                	ld	a2,104(sp)
    e883e148:	65ea                	ld	a1,152(sp)
  s0 = c0 + a0*b0;
    e883e14a:	e41e                	sd	t2,8(sp)
  s1 = c1 + a0*b1 + a1*b0;
    e883e14c:	02f283b3          	mul	t2,t0,a5
  crypto_int64 c1 = 2097151 & (crypto_load_4(c + 2) >> 5);
    e883e150:	6454378b          	extu	a5,s0,25,5
  s6 = c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0;
    e883e154:	7746                	ld	a4,112(sp)
  s1 = c1 + a0*b1 + a1*b0;
    e883e156:	21fb138b          	mula	t2,s6,t6
    e883e15a:	979e                	add	a5,a5,t2
  s2 = c2 + a0*b2 + a1*b1 + a2*b0;
    e883e15c:	03f283b3          	mul	t2,t0,t6
  s1 = c1 + a0*b1 + a1*b0;
    e883e160:	ecbe                	sd	a5,88(sp)
  crypto_int64 c2 = 2097151 & (crypto_load_3(c + 5) >> 2);
    e883e162:	67c2                	ld	a5,16(sp)
    e883e164:	5827b78b          	extu	a5,a5,22,2
  s2 = c2 + a0*b2 + a1*b1 + a2*b0;
    e883e168:	21db138b          	mula	t2,s6,t4
    e883e16c:	93be                	add	t2,t2,a5
    e883e16e:	6782                	ld	a5,0(sp)
    e883e170:	20ff138b          	mula	t2,t5,a5
  crypto_int64 c3 = 2097151 & (crypto_load_4(c + 7) >> 7);
    e883e174:	67e2                	ld	a5,24(sp)
    e883e176:	6c77b78b          	extu	a5,a5,27,7
  s2 = c2 + a0*b2 + a1*b1 + a2*b0;
    e883e17a:	e81e                	sd	t2,16(sp)
  s3 = c3 + a0*b3 + a1*b2 + a2*b1 + a3*b0;
    e883e17c:	03d283b3          	mul	t2,t0,t4
    e883e180:	206b138b          	mula	t2,s6,t1
    e883e184:	93be                	add	t2,t2,a5
    e883e186:	6782                	ld	a5,0(sp)
    e883e188:	20fe138b          	mula	t2,t3,a5
  crypto_int64 c4 = 2097151 & (crypto_load_4(c + 10) >> 4);
    e883e18c:	7782                	ld	a5,32(sp)
    e883e18e:	6047b78b          	extu	a5,a5,24,4
  s3 = c3 + a0*b3 + a1*b2 + a2*b1 + a3*b0;
    e883e192:	21ff138b          	mula	t2,t5,t6
    e883e196:	f09e                	sd	t2,96(sp)
  s4 = c4 + a0*b4 + a1*b3 + a2*b2 + a3*b1 + a4*b0;
    e883e198:	026283b3          	mul	t2,t0,t1
    e883e19c:	210b138b          	mula	t2,s6,a6
    e883e1a0:	93be                	add	t2,t2,a5
    e883e1a2:	21fe138b          	mula	t2,t3,t6
    e883e1a6:	6782                	ld	a5,0(sp)
    e883e1a8:	21df138b          	mula	t2,t5,t4
    e883e1ac:	20f8938b          	mula	t2,a7,a5
  crypto_int64 c5 = 2097151 & (crypto_load_3(c + 13) >> 1);
    e883e1b0:	77a2                	ld	a5,40(sp)
    e883e1b2:	5417b78b          	extu	a5,a5,21,1
  s4 = c4 + a0*b4 + a1*b3 + a2*b2 + a3*b1 + a4*b0;
    e883e1b6:	ec1e                	sd	t2,24(sp)
  s5 = c5 + a0*b5 + a1*b4 + a2*b3 + a3*b2 + a4*b1 + a5*b0;
    e883e1b8:	030283b3          	mul	t2,t0,a6
    e883e1bc:	20cb138b          	mula	t2,s6,a2
    e883e1c0:	93be                	add	t2,t2,a5
    e883e1c2:	21de138b          	mula	t2,t3,t4
    e883e1c6:	6782                	ld	a5,0(sp)
    e883e1c8:	206f138b          	mula	t2,t5,t1
    e883e1cc:	20f5938b          	mula	t2,a1,a5
    e883e1d0:	21f8938b          	mula	t2,a7,t6
    e883e1d4:	f49e                	sd	t2,104(sp)
  s6 = c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0;
    e883e1d6:	02c283b3          	mul	t2,t0,a2
  crypto_int64 c6 = 2097151 & (crypto_load_4(c + 15) >> 6);
    e883e1da:	77c2                	ld	a5,48(sp)
  s6 = c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0;
    e883e1dc:	66ca                	ld	a3,144(sp)
  s7 = c7 + a0*b7 + a1*b6 + a2*b5 + a3*b4 + a4*b3 + a5*b2 + a6*b1 + a7*b0;
    e883e1de:	6402                	ld	s0,0(sp)
  crypto_int64 c6 = 2097151 & (crypto_load_4(c + 15) >> 6);
    e883e1e0:	6867b78b          	extu	a5,a5,26,6
  s6 = c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0;
    e883e1e4:	20eb138b          	mula	t2,s6,a4
    e883e1e8:	93be                	add	t2,t2,a5
    e883e1ea:	206e138b          	mula	t2,t3,t1
    e883e1ee:	6782                	ld	a5,0(sp)
    e883e1f0:	210f138b          	mula	t2,t5,a6
    e883e1f4:	21f5938b          	mula	t2,a1,t6
    e883e1f8:	21d8938b          	mula	t2,a7,t4
    e883e1fc:	20f6938b          	mula	t2,a3,a5
  crypto_int64 c7 = 2097151 & (crypto_load_3(c + 18) >> 3);
    e883e200:	77e2                	ld	a5,56(sp)
    e883e202:	5c37b78b          	extu	a5,a5,23,3
  s6 = c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0;
    e883e206:	f01e                	sd	t2,32(sp)
  s7 = c7 + a0*b7 + a1*b6 + a2*b5 + a3*b4 + a4*b3 + a5*b2 + a6*b1 + a7*b0;
    e883e208:	02e283b3          	mul	t2,t0,a4
    e883e20c:	21bb138b          	mula	t2,s6,s11
    e883e210:	93be                	add	t2,t2,a5
    e883e212:	210e138b          	mula	t2,t3,a6
    e883e216:	67aa                	ld	a5,136(sp)
    e883e218:	20cf138b          	mula	t2,t5,a2
    e883e21c:	21d5938b          	mula	t2,a1,t4
    e883e220:	2068938b          	mula	t2,a7,t1
    e883e224:	2087938b          	mula	t2,a5,s0
    e883e228:	21f6938b          	mula	t2,a3,t6
    e883e22c:	fc1e                	sd	t2,56(sp)
  s8 = c8 + a0*b8 + a1*b7 + a2*b6 + a3*b5 + a4*b4 + a5*b3 + a6*b2 + a7*b1 + a8*b0;
    e883e22e:	028a83b3          	mul	t2,s5,s0
  crypto_int64 c8 = 2097151 & crypto_load_3(c + 21);
    e883e232:	6406                	ld	s0,64(sp)
    e883e234:	5004340b          	extu	s0,s0,20,0
  s8 = c8 + a0*b8 + a1*b7 + a2*b6 + a3*b5 + a4*b4 + a5*b3 + a6*b2 + a7*b1 + a8*b0;
    e883e238:	212b138b          	mula	t2,s6,s2
    e883e23c:	93a2                	add	t2,t2,s0
    e883e23e:	21b2938b          	mula	t2,t0,s11
  crypto_int64 c9 = 2097151 & (crypto_load_4(c + 23) >> 5);
    e883e242:	6426                	ld	s0,72(sp)
    e883e244:	6454340b          	extu	s0,s0,25,5
  s8 = c8 + a0*b8 + a1*b7 + a2*b6 + a3*b5 + a4*b4 + a5*b3 + a6*b2 + a7*b1 + a8*b0;
    e883e248:	20ce138b          	mula	t2,t3,a2
    e883e24c:	20ef138b          	mula	t2,t5,a4
    e883e250:	2065938b          	mula	t2,a1,t1
    e883e254:	2108938b          	mula	t2,a7,a6
    e883e258:	21f7938b          	mula	t2,a5,t6
    e883e25c:	21d6938b          	mula	t2,a3,t4
    e883e260:	f41e                	sd	t2,40(sp)
  s9 = c9 + a0*b9 + a1*b8 + a2*b7 + a3*b6 + a4*b5 + a5*b4 + a6*b3 + a7*b2 + a8*b1 + a9*b0;
    e883e262:	032283b3          	mul	t2,t0,s2
    e883e266:	219b138b          	mula	t2,s6,s9
    e883e26a:	93a2                	add	t2,t2,s0
    e883e26c:	20ee138b          	mula	t2,t3,a4
    e883e270:	6402                	ld	s0,0(sp)
    e883e272:	21bf138b          	mula	t2,t5,s11
    e883e276:	2105938b          	mula	t2,a1,a6
    e883e27a:	20c8938b          	mula	t2,a7,a2
    e883e27e:	21d7938b          	mula	t2,a5,t4
    e883e282:	2066938b          	mula	t2,a3,t1
    e883e286:	208d138b          	mula	t2,s10,s0
  crypto_int64 c10 = 2097151 & (crypto_load_3(c + 26) >> 2);
    e883e28a:	6446                	ld	s0,80(sp)
    e883e28c:	5824340b          	extu	s0,s0,22,2
  s9 = c9 + a0*b9 + a1*b8 + a2*b7 + a3*b6 + a4*b5 + a5*b4 + a6*b3 + a7*b2 + a8*b1 + a9*b0;
    e883e290:	21fa938b          	mula	t2,s5,t6
    e883e294:	e09e                	sd	t2,64(sp)
  s10 = c10 + a0*b10 + a1*b9 + a2*b8 + a3*b7 + a4*b6 + a5*b5 + a6*b4 + a7*b3 + a8*b2 + a9*b1 + a10*b0;
    e883e296:	039283b3          	mul	t2,t0,s9
    e883e29a:	214b138b          	mula	t2,s6,s4
    e883e29e:	93a2                	add	t2,t2,s0
    e883e2a0:	21be138b          	mula	t2,t3,s11
    e883e2a4:	6402                	ld	s0,0(sp)
    e883e2a6:	212f138b          	mula	t2,t5,s2
    e883e2aa:	20c5938b          	mula	t2,a1,a2
    e883e2ae:	20e8938b          	mula	t2,a7,a4
    e883e2b2:	2067938b          	mula	t2,a5,t1
    e883e2b6:	2106938b          	mula	t2,a3,a6
    e883e2ba:	21fd138b          	mula	t2,s10,t6
    e883e2be:	21da938b          	mula	t2,s5,t4
    e883e2c2:	208c138b          	mula	t2,s8,s0
    e883e2c6:	f81e                	sd	t2,48(sp)
  crypto_int64 c11 = (crypto_load_4(c + 28) >> 7);
    e883e2c8:	00755393          	srli	t2,a0,0x7
  s12 = a1*b11 + a2*b10 + a3*b9 + a4*b8 + a5*b7 + a6*b6 + a7*b5 + a8*b4 + a9*b3 + a10*b2 + a11*b1;
    e883e2cc:	034f0533          	mul	a0,t5,s4
    e883e2d0:	2132950b          	mula	a0,t0,s3
    e883e2d4:	2128950b          	mula	a0,a7,s2
    e883e2d8:	219e150b          	mula	a0,t3,s9
    e883e2dc:	20e6950b          	mula	a0,a3,a4
    e883e2e0:	21b5950b          	mula	a0,a1,s11
    e883e2e4:	210a950b          	mula	a0,s5,a6
    e883e2e8:	20c7950b          	mula	a0,a5,a2
    e883e2ec:	21dc150b          	mula	a0,s8,t4
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e2f0:	028b8433          	mul	s0,s7,s0
  s12 = a1*b11 + a2*b10 + a3*b9 + a4*b8 + a5*b7 + a6*b6 + a7*b5 + a8*b4 + a9*b3 + a10*b2 + a11*b1;
    e883e2f4:	206d150b          	mula	a0,s10,t1
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e2f8:	213b140b          	mula	s0,s6,s3
  s12 = a1*b11 + a2*b10 + a3*b9 + a4*b8 + a5*b7 + a6*b6 + a7*b5 + a8*b4 + a9*b3 + a10*b2 + a11*b1;
    e883e2fc:	21fb950b          	mula	a0,s7,t6
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e300:	93a2                	add	t2,t2,s0
    e883e302:	2142938b          	mula	t2,t0,s4
  s12 = a1*b11 + a2*b10 + a3*b9 + a4*b8 + a5*b7 + a6*b6 + a7*b5 + a8*b4 + a9*b3 + a10*b2 + a11*b1;
    e883e306:	e02a                	sd	a0,0(sp)
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e308:	034e0533          	mul	a0,t3,s4
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e30c:	212e138b          	mula	t2,t3,s2
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e310:	213f150b          	mula	a0,t5,s3
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e314:	219f138b          	mula	t2,t5,s9
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e318:	8f2a                	mv	t5,a0
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e31a:	03488533          	mul	a0,a7,s4
    e883e31e:	213e150b          	mula	a0,t3,s3
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e322:	21259f0b          	mula	t5,a1,s2
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e326:	2126950b          	mula	a0,a3,s2
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e32a:	21989f0b          	mula	t5,a7,s9
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e32e:	2195950b          	mula	a0,a1,s9
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e332:	20e5938b          	mula	t2,a1,a4
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e336:	20e79f0b          	mula	t5,a5,a4
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e33a:	20ea950b          	mula	a0,s5,a4
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e33e:	21b8938b          	mula	t2,a7,s11
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e342:	21b69f0b          	mula	t5,a3,s11
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e346:	21b7950b          	mula	a0,a5,s11
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e34a:	2107938b          	mula	t2,a5,a6
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e34e:	210d1f0b          	mula	t5,s10,a6
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e352:	210c150b          	mula	a0,s8,a6
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e356:	20c6938b          	mula	t2,a3,a2
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e35a:	20ca9f0b          	mula	t5,s5,a2
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e35e:	20cd150b          	mula	a0,s10,a2
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e362:	21dd138b          	mula	t2,s10,t4
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e366:	21db9f0b          	mula	t5,s7,t4
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e36a:	206b950b          	mula	a0,s7,t1
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e36e:	206c1f0b          	mula	t5,s8,t1
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e372:	206a938b          	mula	t2,s5,t1
  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;
    e883e376:	832a                	mv	t1,a0
  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;
    e883e378:	82fa                	mv	t0,t5
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e37a:	03458533          	mul	a0,a1,s4
    e883e37e:	2138950b          	mula	a0,a7,s3
  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;
    e883e382:	21fc138b          	mula	t2,s8,t6
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e386:	8faa                	mv	t6,a0
  s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5;
    e883e388:	03468533          	mul	a0,a3,s4
    e883e38c:	2135950b          	mula	a0,a1,s3
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e390:	21279f8b          	mula	t6,a5,s2
  s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6;
    e883e394:	03478433          	mul	s0,a5,s4
  s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5;
    e883e398:	212a950b          	mula	a0,s5,s2
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e39c:	21969f8b          	mula	t6,a3,s9
  s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6;
    e883e3a0:	2136940b          	mula	s0,a3,s3
  s18 = a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7;
    e883e3a4:	034a86b3          	mul	a3,s5,s4
  s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5;
    e883e3a8:	2197950b          	mula	a0,a5,s9
  s18 = a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7;
    e883e3ac:	2137968b          	mula	a3,a5,s3
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e3b0:	001007b7          	lui	a5,0x100
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e3b4:	20ed1f8b          	mula	t6,s10,a4
  s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5;
    e883e3b8:	20ec150b          	mula	a0,s8,a4
  s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6;
    e883e3bc:	212d140b          	mula	s0,s10,s2
  s18 = a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7;
    e883e3c0:	212c168b          	mula	a3,s8,s2
  s19 = a8*b11 + a9*b10 + a10*b9 + a11*b8;
    e883e3c4:	032b8933          	mul	s2,s7,s2
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e3c8:	21ba9f8b          	mula	t6,s5,s11
  s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5;
    e883e3cc:	21bd150b          	mula	a0,s10,s11
  s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6;
    e883e3d0:	219a940b          	mula	s0,s5,s9
  s19 = a8*b11 + a9*b10 + a10*b9 + a11*b8;
    e883e3d4:	213a990b          	mula	s2,s5,s3
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e3d8:	210b9f8b          	mula	t6,s7,a6
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e3dc:	6822                	ld	a6,8(sp)
  s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5;
    e883e3de:	20cb950b          	mula	a0,s7,a2
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e3e2:	88fe                	mv	a7,t6
  s20 = a9*b11 + a10*b10 + a11*b9;
    e883e3e4:	034c05b3          	mul	a1,s8,s4
  s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6;
    e883e3e8:	20eb940b          	mula	s0,s7,a4
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e3ec:	6722                	ld	a4,8(sp)
  s19 = a8*b11 + a9*b10 + a10*b9 + a11*b8;
    e883e3ee:	214d190b          	mula	s2,s10,s4
  s21 = a10*b11 + a11*b10;
    e883e3f2:	034b8a33          	mul	s4,s7,s4
  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;
    e883e3f6:	20cc188b          	mula	a7,s8,a2
  s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5;
    e883e3fa:	862a                	mv	a2,a0
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e3fc:	00f70533          	add	a0,a4,a5
    e883e400:	6766                	ld	a4,88(sp)
  s20 = a9*b11 + a10*b10 + a11*b9;
    e883e402:	213d158b          	mula	a1,s10,s3
  s19 = a8*b11 + a9*b10 + a10*b9 + a11*b8;
    e883e406:	219c190b          	mula	s2,s8,s9
  s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6;
    e883e40a:	21bc140b          	mula	s0,s8,s11
  s19 = a8*b11 + a9*b10 + a10*b9 + a11*b8;
    e883e40e:	e4ca                	sd	s2,72(sp)
  s21 = a10*b11 + a11*b10;
    e883e410:	213c1a0b          	mula	s4,s8,s3
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e414:	41555c13          	srai	s8,a0,0x15
    e883e418:	9c3a                	add	s8,s8,a4
    e883e41a:	ffe00737          	lui	a4,0xffe00
    e883e41e:	8d79                	and	a0,a0,a4
    e883e420:	40a80533          	sub	a0,a6,a0
    e883e424:	e8aa                	sd	a0,80(sp)
  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883e426:	6542                	ld	a0,16(sp)
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e428:	7862                	ld	a6,56(sp)
  s20 = a9*b11 + a10*b10 + a11*b9;
    e883e42a:	219b958b          	mula	a1,s7,s9
  s18 = a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7;
    e883e42e:	219d168b          	mula	a3,s10,s9
  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883e432:	00f50cb3          	add	s9,a0,a5
    e883e436:	7506                	ld	a0,96(sp)
    e883e438:	415cdb13          	srai	s6,s9,0x15
    e883e43c:	00ecfcb3          	and	s9,s9,a4
    e883e440:	9b2a                	add	s6,s6,a0
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883e442:	6562                	ld	a0,24(sp)
    e883e444:	00f50e33          	add	t3,a0,a5
    e883e448:	7526                	ld	a0,104(sp)
    e883e44a:	415e5913          	srai	s2,t3,0x15
  s18 = a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7;
    e883e44e:	21bb968b          	mula	a3,s7,s11
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883e452:	992a                	add	s2,s2,a0
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e454:	7502                	ld	a0,32(sp)
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883e456:	00ee7e33          	and	t3,t3,a4
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e45a:	00f50ab3          	add	s5,a0,a5
    e883e45e:	415ad513          	srai	a0,s5,0x15
    e883e462:	9542                	add	a0,a0,a6
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e464:	7822                	ld	a6,40(sp)
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e466:	00eafab3          	and	s5,s5,a4
  s22 = a11*b11;
    e883e46a:	033b89b3          	mul	s3,s7,s3
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e46e:	00f80eb3          	add	t4,a6,a5
    e883e472:	6806                	ld	a6,64(sp)
    e883e474:	415edd93          	srai	s11,t4,0x15
    e883e478:	00eefeb3          	and	t4,t4,a4
    e883e47c:	9dc2                	add	s11,s11,a6
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e47e:	7842                	ld	a6,48(sp)
    e883e480:	983e                	add	a6,a6,a5
    e883e482:	e442                	sd	a6,8(sp)
    e883e484:	41585813          	srai	a6,a6,0x15
    e883e488:	981e                	add	a6,a6,t2
    e883e48a:	fc42                	sd	a6,56(sp)
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883e48c:	6802                	ld	a6,0(sp)
  carry18 = (s18 + (1<<20)) >> 21; s19 += carry18; s18 -= carry18 << 21;
    e883e48e:	00f683b3          	add	t2,a3,a5
    e883e492:	6ba6                	ld	s7,72(sp)
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883e494:	00f80d33          	add	s10,a6,a5
  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;
    e883e498:	00f30833          	add	a6,t1,a5
    e883e49c:	41585f93          	srai	t6,a6,0x15
    e883e4a0:	9fc6                	add	t6,t6,a7
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883e4a2:	415d5f13          	srai	t5,s10,0x15
  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;
    e883e4a6:	00f608b3          	add	a7,a2,a5
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883e4aa:	9f16                	add	t5,t5,t0
  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;
    e883e4ac:	4158d293          	srai	t0,a7,0x15
    e883e4b0:	9416                	add	s0,s0,t0
  carry18 = (s18 + (1<<20)) >> 21; s19 += carry18; s18 -= carry18 << 21;
    e883e4b2:	4153d293          	srai	t0,t2,0x15
    e883e4b6:	00e3f3b3          	and	t2,t2,a4
    e883e4ba:	407686b3          	sub	a3,a3,t2
    e883e4be:	e0b6                	sd	a3,64(sp)
  carry20 = (s20 + (1<<20)) >> 21; s21 += carry20; s20 -= carry20 << 21;
    e883e4c0:	00f586b3          	add	a3,a1,a5
  carry18 = (s18 + (1<<20)) >> 21; s19 += carry18; s18 -= carry18 << 21;
    e883e4c4:	92de                	add	t0,t0,s7
  carry20 = (s20 + (1<<20)) >> 21; s21 += carry20; s20 -= carry20 << 21;
    e883e4c6:	4156d393          	srai	t2,a3,0x15
  carry22 = (s22 + (1<<20)) >> 21; s23 += carry22; s22 -= carry22 << 21;
    e883e4ca:	00f98bb3          	add	s7,s3,a5
  carry20 = (s20 + (1<<20)) >> 21; s21 += carry20; s20 -= carry20 << 21;
    e883e4ce:	8ef9                	and	a3,a3,a4
    e883e4d0:	40d586b3          	sub	a3,a1,a3
  carry22 = (s22 + (1<<20)) >> 21; s23 += carry22; s22 -= carry22 << 21;
    e883e4d4:	415bd593          	srai	a1,s7,0x15
    e883e4d8:	00ebfbb3          	and	s7,s7,a4
    e883e4dc:	41798bb3          	sub	s7,s3,s7
    e883e4e0:	69c2                	ld	s3,16(sp)
  carry20 = (s20 + (1<<20)) >> 21; s21 += carry20; s20 -= carry20 << 21;
    e883e4e2:	e4b6                	sd	a3,72(sp)
  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e4e4:	00fc06b3          	add	a3,s8,a5
  carry20 = (s20 + (1<<20)) >> 21; s21 += carry20; s20 -= carry20 << 21;
    e883e4e8:	9a1e                	add	s4,s4,t2
  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e4ea:	4156d393          	srai	t2,a3,0x15
    e883e4ee:	8ef9                	and	a3,a3,a4
    e883e4f0:	40dc06b3          	sub	a3,s8,a3
    e883e4f4:	93ce                	add	t2,t2,s3
    e883e4f6:	419383b3          	sub	t2,t2,s9
    e883e4fa:	f0b6                	sd	a3,96(sp)
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e4fc:	00fb06b3          	add	a3,s6,a5
  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e500:	ec9e                	sd	t2,88(sp)
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e502:	4156d393          	srai	t2,a3,0x15
    e883e506:	8ef9                	and	a3,a3,a4
    e883e508:	41c383b3          	sub	t2,t2,t3
    e883e50c:	40db06b3          	sub	a3,s6,a3
    e883e510:	6e62                	ld	t3,24(sp)
    e883e512:	f4b6                	sd	a3,104(sp)
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e514:	00f906b3          	add	a3,s2,a5
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e518:	9e1e                	add	t3,t3,t2
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e51a:	4156d393          	srai	t2,a3,0x15
    e883e51e:	8ef9                	and	a3,a3,a4
    e883e520:	40d906b3          	sub	a3,s2,a3
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e524:	ec72                	sd	t3,24(sp)
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e526:	7e02                	ld	t3,32(sp)
    e883e528:	f8b6                	sd	a3,112(sp)
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e52a:	76e2                	ld	a3,56(sp)
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e52c:	41538ab3          	sub	s5,t2,s5
    e883e530:	9e56                	add	t3,t3,s5
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e532:	00f68cb3          	add	s9,a3,a5
  carry17 = (s17 + (1<<20)) >> 21; s18 += carry17; s17 -= carry17 << 21;
    e883e536:	00f409b3          	add	s3,s0,a5
    e883e53a:	6686                	ld	a3,64(sp)
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e53c:	f072                	sd	t3,32(sp)
  carry17 = (s17 + (1<<20)) >> 21; s18 += carry17; s17 -= carry17 << 21;
    e883e53e:	4159de13          	srai	t3,s3,0x15
    e883e542:	00e9f9b3          	and	s3,s3,a4
    e883e546:	9e36                	add	t3,t3,a3
    e883e548:	413406b3          	sub	a3,s0,s3
  s16 -= s23 * 683901;
    e883e54c:	fff599b7          	lui	s3,0xfff59
    e883e550:	08398993          	addi	s3,s3,131 # fffffffffff59083 <__DRAM0_INF_BASE+0xfffffffefff69083>
    e883e554:	2135960b          	mula	a2,a1,s3
  carry19 = (s19 + (1<<20)) >> 21; s20 += carry19; s19 -= carry19 << 21;
    e883e558:	00f283b3          	add	t2,t0,a5
  carry17 = (s17 + (1<<20)) >> 21; s18 += carry17; s17 -= carry17 << 21;
    e883e55c:	e0b6                	sd	a3,64(sp)
  carry19 = (s19 + (1<<20)) >> 21; s20 += carry19; s19 -= carry19 << 21;
    e883e55e:	6426                	ld	s0,72(sp)
    e883e560:	4153d693          	srai	a3,t2,0x15
    e883e564:	00e3f3b3          	and	t2,t2,a4
    e883e568:	407282b3          	sub	t0,t0,t2
  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;
    e883e56c:	00e8f8b3          	and	a7,a7,a4
  carry21 = (s21 + (1<<20)) >> 21; s22 += carry21; s21 -= carry21 << 21;
    e883e570:	00fa03b3          	add	t2,s4,a5
  carry19 = (s19 + (1<<20)) >> 21; s20 += carry19; s19 -= carry19 << 21;
    e883e574:	96a2                	add	a3,a3,s0
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883e576:	00ff8c33          	add	s8,t6,a5
  carry21 = (s21 + (1<<20)) >> 21; s22 += carry21; s21 -= carry21 << 21;
    e883e57a:	4153d413          	srai	s0,t2,0x15
    e883e57e:	411608b3          	sub	a7,a2,a7
    e883e582:	9ba2                	add	s7,s7,s0
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883e584:	415c5613          	srai	a2,s8,0x15
  s16 -= s23 * 683901;
    e883e588:	9646                	add	a2,a2,a7
  s15 -= s22 * 683901;
    e883e58a:	033b88b3          	mul	a7,s7,s3
  s16 -= s23 * 683901;
    e883e58e:	e832                	sd	a2,16(sp)
  s15 += s23 * 136657;
    e883e590:	00021637          	lui	a2,0x21
    e883e594:	5d160613          	addi	a2,a2,1489 # 215d1 <memcmp-0xe87dea2f>
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883e598:	00ec7c33          	and	s8,s8,a4
  carry21 = (s21 + (1<<20)) >> 21; s22 += carry21; s21 -= carry21 << 21;
    e883e59c:	00e3f3b3          	and	t2,t2,a4
    e883e5a0:	407a0a33          	sub	s4,s4,t2
  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;
    e883e5a4:	00ff0b33          	add	s6,t5,a5
  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;
    e883e5a8:	00e87833          	and	a6,a6,a4
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e5ac:	00f50ab3          	add	s5,a0,a5
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e5b0:	20c5988b          	mula	a7,a1,a2
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e5b4:	00eaf3b3          	and	t2,s5,a4
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e5b8:	00fd8933          	add	s2,s11,a5
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e5bc:	415ada93          	srai	s5,s5,0x15
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883e5c0:	00ed7d33          	and	s10,s10,a4
    e883e5c4:	9fc6                	add	t6,t6,a7
  s15 -= s22 * 683901;
    e883e5c6:	418f8c33          	sub	s8,t6,s8
  s14 -= s23 * 997805;
    e883e5ca:	fff0cfb7          	lui	t6,0xfff0c
    e883e5ce:	653f8f93          	addi	t6,t6,1619 # fffffffffff0c653 <__DRAM0_INF_BASE+0xfffffffefff1c653>
    e883e5d2:	21f5930b          	mula	t1,a1,t6
  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;
    e883e5d6:	415b5893          	srai	a7,s6,0x15
    e883e5da:	00eb7b33          	and	s6,s6,a4
    e883e5de:	20cb930b          	mula	t1,s7,a2
    e883e5e2:	213a130b          	mula	t1,s4,s3
    e883e5e6:	41030833          	sub	a6,t1,a6
  s14 -= s21 * 683901;
    e883e5ea:	01088433          	add	s0,a7,a6
  s13 += s21 * 136657;
    e883e5ee:	02ca08b3          	mul	a7,s4,a2
  s13 += s23 * 654183;
    e883e5f2:	000a0837          	lui	a6,0xa0
    e883e5f6:	b6780813          	addi	a6,a6,-1177 # 9fb67 <memcmp-0xe8760499>
  s7 += s19 * 666643;
    e883e5fa:	000a3337          	lui	t1,0xa3
    e883e5fe:	c1330313          	addi	t1,t1,-1005 # a2c13 <memcmp-0xe875d3ed>
    e883e602:	21fb988b          	mula	a7,s7,t6
    e883e606:	2105988b          	mula	a7,a1,a6
    e883e60a:	2062950b          	mula	a0,t0,t1
    e883e60e:	2136988b          	mula	a7,a3,s3
    e883e612:	9f46                	add	t5,t5,a7
    e883e614:	407508b3          	sub	a7,a0,t2
  s12 -= s21 * 997805;
    e883e618:	03fa0533          	mul	a0,s4,t6
    e883e61c:	73a2                	ld	t2,40(sp)
  s13 -= s20 * 683901;
    e883e61e:	416f0b33          	sub	s6,t5,s6
  s8 += s19 * 470296;
    e883e622:	00073f37          	lui	t5,0x73
    e883e626:	d18f0f13          	addi	t5,t5,-744 # 72d18 <memcmp-0xe878d2e8>
    e883e62a:	2066938b          	mula	t2,a3,t1
    e883e62e:	210b950b          	mula	a0,s7,a6
    e883e632:	41d383b3          	sub	t2,t2,t4
    e883e636:	21e69d8b          	mula	s11,a3,t5
    e883e63a:	21e2938b          	mula	t2,t0,t5
    e883e63e:	21e5950b          	mula	a0,a1,t5
    e883e642:	007a8eb3          	add	t4,s5,t2
  s12 -= s19 * 683901;
    e883e646:	6382                	ld	t2,0(sp)
  s6 += s18 * 666643;
    e883e648:	7a82                	ld	s5,32(sp)
    e883e64a:	206a1d8b          	mula	s11,s4,t1
    e883e64e:	951e                	add	a0,a0,t2
  s10 += s21 * 470296;
    e883e650:	03ea03b3          	mul	t2,s4,t5
  s11 += s21 * 654183;
    e883e654:	030a0a33          	mul	s4,s4,a6
    e883e658:	20c6950b          	mula	a0,a3,a2
    e883e65c:	21029d8b          	mula	s11,t0,a6
    e883e660:	21eb9a0b          	mula	s4,s7,t5
    e883e664:	2132950b          	mula	a0,t0,s3
    e883e668:	21fe1d8b          	mula	s11,t3,t6
    e883e66c:	41a50d33          	sub	s10,a0,s10
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e670:	415cd513          	srai	a0,s9,0x15
  s12 -= s19 * 683901;
    e883e674:	9d2a                	add	s10,s10,a0
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e676:	00e97533          	and	a0,s2,a4
    e883e67a:	41595913          	srai	s2,s2,0x15
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e67e:	00ecfcb3          	and	s9,s9,a4
    e883e682:	206b938b          	mula	t2,s7,t1
  s9 -= s18 * 997805;
    e883e686:	40ad8db3          	sub	s11,s11,a0
    e883e68a:	7542                	ld	a0,48(sp)
    e883e68c:	20659a0b          	mula	s4,a1,t1
    e883e690:	93aa                	add	t2,t2,a0
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e692:	6522                	ld	a0,8(sp)
    e883e694:	2106938b          	mula	t2,a3,a6
    e883e698:	21f69a0b          	mula	s4,a3,t6
    e883e69c:	76e2                	ld	a3,56(sp)
    e883e69e:	20c29a0b          	mula	s4,t0,a2
    e883e6a2:	21f2938b          	mula	t2,t0,t6
  s8 += s18 * 654183;
    e883e6a6:	210e1e8b          	mula	t4,t3,a6
    e883e6aa:	93ca                	add	t2,t2,s2
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e6ac:	00e57933          	and	s2,a0,a4
    e883e6b0:	213e1a0b          	mula	s4,t3,s3
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e6b4:	00fe85b3          	add	a1,t4,a5
    e883e6b8:	20ce138b          	mula	t2,t3,a2
    e883e6bc:	9a36                	add	s4,s4,a3
    e883e6be:	4155d693          	srai	a3,a1,0x15
  s11 -= s18 * 683901;
    e883e6c2:	419a0cb3          	sub	s9,s4,s9
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e6c6:	9db6                	add	s11,s11,a3
    e883e6c8:	8df9                	and	a1,a1,a4
  s6 += s18 * 666643;
    e883e6ca:	206e1a8b          	mula	s5,t3,t1
  s10 += s18 * 136657;
    e883e6ce:	41238933          	sub	s2,t2,s2
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e6d2:	00f90a33          	add	s4,s2,a5
    e883e6d6:	415a5693          	srai	a3,s4,0x15
    e883e6da:	9cb6                	add	s9,s9,a3
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883e6dc:	00fd06b3          	add	a3,s10,a5
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e6e0:	00fc8bb3          	add	s7,s9,a5
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e6e4:	00ea7a33          	and	s4,s4,a4
  s7 += s18 * 470296;
    e883e6e8:	21ee188b          	mula	a7,t3,t5
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e6ec:	00fa8533          	add	a0,s5,a5
    e883e6f0:	41555393          	srai	t2,a0,0x15
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883e6f4:	4156de13          	srai	t3,a3,0x15
    e883e6f8:	8ef9                	and	a3,a3,a4
    e883e6fa:	40dd0d33          	sub	s10,s10,a3
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e6fe:	8d79                	and	a0,a0,a4
    e883e700:	40aa8533          	sub	a0,s5,a0
  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;
    e883e704:	9b72                	add	s6,s6,t3
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e706:	00fd8e33          	add	t3,s11,a5
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e70a:	989e                	add	a7,a7,t2
  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;
    e883e70c:	00f403b3          	add	t2,s0,a5
    e883e710:	4153d693          	srai	a3,t2,0x15
    e883e714:	9c36                	add	s8,s8,a3
  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;
    e883e716:	66c2                	ld	a3,16(sp)
  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;
    e883e718:	00e3f3b3          	and	t2,t2,a4
    e883e71c:	407403b3          	sub	t2,s0,t2
  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;
    e883e720:	00f68ab3          	add	s5,a3,a5
    e883e724:	6686                	ld	a3,64(sp)
    e883e726:	415ad413          	srai	s0,s5,0x15
    e883e72a:	00eafab3          	and	s5,s5,a4
    e883e72e:	9436                	add	s0,s0,a3
    e883e730:	66c2                	ld	a3,16(sp)
  s6 += s17 * 470296;
    e883e732:	21e4150b          	mula	a0,s0,t5
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e736:	00f882b3          	add	t0,a7,a5
  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;
    e883e73a:	41568ab3          	sub	s5,a3,s5
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e73e:	415bd693          	srai	a3,s7,0x15
    e883e742:	00ebfbb3          	and	s7,s7,a4
    e883e746:	9d36                	add	s10,s10,a3
    e883e748:	417c86b3          	sub	a3,s9,s7
    e883e74c:	e036                	sd	a3,0(sp)
  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;
    e883e74e:	00fb06b3          	add	a3,s6,a5
    e883e752:	4156db93          	srai	s7,a3,0x15
    e883e756:	8ef9                	and	a3,a3,a4
    e883e758:	40db0b33          	sub	s6,s6,a3
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883e75c:	00fc06b3          	add	a3,s8,a5
  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;
    e883e760:	9b9e                	add	s7,s7,t2
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883e762:	4156d393          	srai	t2,a3,0x15
    e883e766:	8ef9                	and	a3,a3,a4
    e883e768:	40dc0c33          	sub	s8,s8,a3
  s5 += s17 * 666643;
    e883e76c:	76c6                	ld	a3,112(sp)
  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;
    e883e76e:	01538cb3          	add	s9,t2,s5
  s4 += s16 * 666643;
    e883e772:	63e2                	ld	t2,24(sp)
  s5 += s17 * 666643;
    e883e774:	2064168b          	mula	a3,s0,t1
  s6 += s17 * 470296;
    e883e778:	8aaa                	mv	s5,a0
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e77a:	00e2f533          	and	a0,t0,a4
    e883e77e:	4152d293          	srai	t0,t0,0x15
    e883e782:	2104188b          	mula	a7,s0,a6
  s4 += s16 * 666643;
    e883e786:	206c938b          	mula	t2,s9,t1
  s7 += s17 * 654183;
    e883e78a:	40a888b3          	sub	a7,a7,a0
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e78e:	00ee7533          	and	a0,t3,a4
    e883e792:	415e5e13          	srai	t3,t3,0x15
    e883e796:	2134190b          	mula	s2,s0,s3
  s5 += s16 * 470296;
    e883e79a:	21ec968b          	mula	a3,s9,t5
    e883e79e:	9972                	add	s2,s2,t3
  s3 += s15 * 666643;
    e883e7a0:	7e26                	ld	t3,104(sp)
  s10 -= s17 * 683901;
    e883e7a2:	41490a33          	sub	s4,s2,s4
    e883e7a6:	21f41e8b          	mula	t4,s0,t6
    e883e7aa:	20c41d8b          	mula	s11,s0,a2
    e883e7ae:	9e96                	add	t4,t4,t0
  s8 -= s17 * 997805;
    e883e7b0:	40be8eb3          	sub	t4,t4,a1
  s4 += s15 * 470296;
    e883e7b4:	21ec138b          	mula	t2,s8,t5
  s9 += s17 * 136657;
    e883e7b8:	40ad8db3          	sub	s11,s11,a0
  s5 += s15 * 654183;
    e883e7bc:	210c168b          	mula	a3,s8,a6
  s3 += s15 * 666643;
    e883e7c0:	206c1e0b          	mula	t3,s8,t1
  s5 += s15 * 654183;
    e883e7c4:	85b6                	mv	a1,a3
  s6 += s16 * 654183;
    e883e7c6:	210c9a8b          	mula	s5,s9,a6
  s8 += s16 * 136657;
    e883e7ca:	20cc9e8b          	mula	t4,s9,a2
  s9 -= s16 * 683901;
    e883e7ce:	213c9d8b          	mula	s11,s9,s3
  s7 -= s16 * 997805;
    e883e7d2:	21fc988b          	mula	a7,s9,t6
  s2 += s14 * 666643;
    e883e7d6:	6ce6                	ld	s9,88(sp)
  s1 += s13 * 666643;
    e883e7d8:	7686                	ld	a3,96(sp)
  s0 += s12 * 666643;
    e883e7da:	6446                	ld	s0,80(sp)
  s4 += s14 * 654183;
    e883e7dc:	210b938b          	mula	t2,s7,a6
  s2 += s14 * 666643;
    e883e7e0:	206b9c8b          	mula	s9,s7,t1
  s3 += s14 * 470296;
    e883e7e4:	21eb9e0b          	mula	t3,s7,t5
  s5 -= s14 * 997805;
    e883e7e8:	21fb958b          	mula	a1,s7,t6
  s6 -= s15 * 997805;
    e883e7ec:	21fc1a8b          	mula	s5,s8,t6
  s4 -= s13 * 997805;
    e883e7f0:	21fb138b          	mula	t2,s6,t6
  s2 += s13 * 470296;
    e883e7f4:	21eb1c8b          	mula	s9,s6,t5
  s1 += s13 * 666643;
    e883e7f8:	206b168b          	mula	a3,s6,t1
  s3 += s13 * 654183;
    e883e7fc:	210b1e0b          	mula	t3,s6,a6
  s5 += s13 * 136657;
    e883e800:	20cb158b          	mula	a1,s6,a2
  s6 += s14 * 136657;
    e883e804:	20cb9a8b          	mula	s5,s7,a2
  s0 += s12 * 666643;
    e883e808:	206d140b          	mula	s0,s10,t1
  s4 += s12 * 136657;
    e883e80c:	20cd138b          	mula	t2,s10,a2
  s2 += s12 * 654183;
    e883e810:	210d1c8b          	mula	s9,s10,a6
  s4 += s12 * 136657;
    e883e814:	891e                	mv	s2,t2
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e816:	00f403b3          	add	t2,s0,a5
  s7 += s15 * 136657;
    e883e81a:	20cc188b          	mula	a7,s8,a2
  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883e81e:	00fc82b3          	add	t0,s9,a5
  s1 += s12 * 470296;
    e883e822:	21ed168b          	mula	a3,s10,t5
  s3 -= s12 * 997805;
    e883e826:	21fd1e0b          	mula	t3,s10,t6
  s5 -= s12 * 683901;
    e883e82a:	213d158b          	mula	a1,s10,s3
  s6 -= s13 * 683901;
    e883e82e:	213b1a8b          	mula	s5,s6,s3
  s5 -= s12 * 683901;
    e883e832:	8d2e                	mv	s10,a1
  s8 -= s15 * 683901;
    e883e834:	213c1e8b          	mula	t4,s8,s3
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e838:	4153dc13          	srai	s8,t2,0x15
    e883e83c:	9c36                	add	s8,s8,a3
  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883e83e:	4152d693          	srai	a3,t0,0x15
    e883e842:	9e36                	add	t3,t3,a3
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883e844:	00f906b3          	add	a3,s2,a5
    e883e848:	4156d593          	srai	a1,a3,0x15
    e883e84c:	9d2e                	add	s10,s10,a1
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e84e:	00fa85b3          	add	a1,s5,a5
    e883e852:	4155d513          	srai	a0,a1,0x15
  s7 -= s14 * 683901;
    e883e856:	213b988b          	mula	a7,s7,s3
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e85a:	8df9                	and	a1,a1,a4
    e883e85c:	40ba8b33          	sub	s6,s5,a1
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e860:	00fe85b3          	add	a1,t4,a5
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e864:	00fe0ab3          	add	s5,t3,a5
  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883e868:	00e2f2b3          	and	t0,t0,a4
  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883e86c:	8ef9                	and	a3,a3,a4
  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e86e:	98aa                	add	a7,a7,a0
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e870:	4155d513          	srai	a0,a1,0x15
    e883e874:	8df9                	and	a1,a1,a4
    e883e876:	40be8eb3          	sub	t4,t4,a1
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e87a:	00fa05b3          	add	a1,s4,a5
    e883e87e:	4155db93          	srai	s7,a1,0x15
    e883e882:	8df9                	and	a1,a1,a4
  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e884:	9daa                	add	s11,s11,a0
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e886:	40ba05b3          	sub	a1,s4,a1
    e883e88a:	6502                	ld	a0,0(sp)
    e883e88c:	e02e                	sd	a1,0(sp)
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e88e:	00fd05b3          	add	a1,s10,a5
  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e892:	9baa                	add	s7,s7,a0
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e894:	4155d513          	srai	a0,a1,0x15
    e883e898:	955a                	add	a0,a0,s6
    e883e89a:	e42a                	sd	a0,8(sp)
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e89c:	00f88533          	add	a0,a7,a5
    e883e8a0:	41555b13          	srai	s6,a0,0x15
    e883e8a4:	8d79                	and	a0,a0,a4
    e883e8a6:	40a88533          	sub	a0,a7,a0
    e883e8aa:	9b76                	add	s6,s6,t4
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e8ac:	6e82                	ld	t4,0(sp)
  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e8ae:	e82a                	sd	a0,16(sp)
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e8b0:	00fd8533          	add	a0,s11,a5
    e883e8b4:	41555893          	srai	a7,a0,0x15
    e883e8b8:	98f6                	add	a7,a7,t4
  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e8ba:	00fc0a33          	add	s4,s8,a5
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e8be:	97de                	add	a5,a5,s7
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e8c0:	8ec6                	mv	t4,a7
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e8c2:	4157d893          	srai	a7,a5,0x15
    e883e8c6:	21e89c0b          	mula	s8,a7,t5
  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e8ca:	8d79                	and	a0,a0,a4
    e883e8cc:	40ad8db3          	sub	s11,s11,a0
  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e8d0:	00ea7533          	and	a0,s4,a4
  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e8d4:	8ff9                	and	a5,a5,a4
    e883e8d6:	40fb87b3          	sub	a5,s7,a5
  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e8da:	00e3fbb3          	and	s7,t2,a4
  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e8de:	415a5a13          	srai	s4,s4,0x15
  s0 += s12 * 666643;
    e883e8e2:	2068940b          	mula	s0,a7,t1
  s1 += s12 * 470296;
    e883e8e6:	40ac0c33          	sub	s8,s8,a0
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e8ea:	00eaf533          	and	a0,s5,a4
  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e8ee:	8f6d                	and	a4,a4,a1
  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e8f0:	415ada93          	srai	s5,s5,0x15
    e883e8f4:	21389d0b          	mula	s10,a7,s3
  s0 += s12 * 666643;
    e883e8f8:	41740433          	sub	s0,s0,s7
  s2 += s12 * 654183;
    e883e8fc:	21089c8b          	mula	s9,a7,a6
  s5 -= s12 * 683901;
    e883e900:	40ed0d33          	sub	s10,s10,a4
  carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e904:	41545713          	srai	a4,s0,0x15
    e883e908:	9c3a                	add	s8,s8,a4
  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e90a:	6722                	ld	a4,8(sp)
    e883e90c:	5004340b          	extu	s0,s0,20,0
    e883e910:	20c8990b          	mula	s2,a7,a2
    e883e914:	9cd2                	add	s9,s9,s4
  s2 += s12 * 654183;
    e883e916:	405c8cb3          	sub	s9,s9,t0
  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e91a:	415c5293          	srai	t0,s8,0x15
    e883e91e:	9c96                	add	s9,s9,t0
    e883e920:	500c3c0b          	extu	s8,s8,20,0
    e883e924:	21f89e0b          	mula	t3,a7,t6
    e883e928:	40d90933          	sub	s2,s2,a3
  s4 += s12 * 136657;
    e883e92c:	9956                	add	s2,s2,s5
  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883e92e:	415cda93          	srai	s5,s9,0x15
    e883e932:	500cbc8b          	extu	s9,s9,20,0
  s3 -= s12 * 997805;
    e883e936:	40ae0e33          	sub	t3,t3,a0
  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883e93a:	9e56                	add	t3,t3,s5
  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e93c:	415e5693          	srai	a3,t3,0x15
    e883e940:	9936                	add	s2,s2,a3
  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883e942:	41595593          	srai	a1,s2,0x15
    e883e946:	95ea                	add	a1,a1,s10
  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e948:	4155d513          	srai	a0,a1,0x15
    e883e94c:	953a                	add	a0,a0,a4
  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e94e:	6742                	ld	a4,16(sp)
    e883e950:	500e3a8b          	extu	s5,t3,20,0
    e883e954:	41555e13          	srai	t3,a0,0x15
    e883e958:	9e3a                	add	t3,t3,a4
  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e95a:	415e5393          	srai	t2,t3,0x15
    e883e95e:	9b1e                	add	s6,s6,t2
  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e960:	415b5713          	srai	a4,s6,0x15
    e883e964:	9dba                	add	s11,s11,a4
  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e966:	415dd893          	srai	a7,s11,0x15
    e883e96a:	98f6                	add	a7,a7,t4
  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e96c:	4158db93          	srai	s7,a7,0x15
    e883e970:	97de                	add	a5,a5,s7
    e883e972:	5009368b          	extu	a3,s2,20,0
  carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e976:	4157d913          	srai	s2,a5,0x15
  s0 += s12 * 666643;
    e883e97a:	2069140b          	mula	s0,s2,t1
    e883e97e:	5005b58b          	extu	a1,a1,20,0
  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e982:	5005350b          	extu	a0,a0,20,0
  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e986:	500e3e0b          	extu	t3,t3,20,0
  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e98a:	500b338b          	extu	t2,s6,20,0
  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e98e:	500dbd8b          	extu	s11,s11,20,0
  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883e992:	5008b88b          	extu	a7,a7,20,0
  carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21;
    e883e996:	5007b78b          	extu	a5,a5,20,0
  s1 += s12 * 470296;
    e883e99a:	21e91c0b          	mula	s8,s2,t5
  s2 += s12 * 654183;
    e883e99e:	50043f0b          	extu	t5,s0,20,0
  s[0] = (uint8_t)(s0 >> 0);
    e883e9a2:	03e49023          	sh	t5,32(s1)
  s[2] = (uint8_t)((s0 >> 16) | (s1 << 5));
    e883e9a6:	410f5f13          	srai	t5,t5,0x10
  s2 += s12 * 654183;
    e883e9aa:	21091c8b          	mula	s9,s2,a6
  carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21;
    e883e9ae:	41545813          	srai	a6,s0,0x15
    e883e9b2:	9862                	add	a6,a6,s8
  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e9b4:	41585313          	srai	t1,a6,0x15
  s3 -= s12 * 997805;
    e883e9b8:	21f91a8b          	mula	s5,s2,t6
  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;
    e883e9bc:	9366                	add	t1,t1,s9
  s4 += s12 * 136657;
    e883e9be:	20c9168b          	mula	a3,s2,a2
  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;
    e883e9c2:	41535613          	srai	a2,t1,0x15
    e883e9c6:	9656                	add	a2,a2,s5
  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e9c8:	41565713          	srai	a4,a2,0x15
  s5 -= s12 * 683901;
    e883e9cc:	2139158b          	mula	a1,s2,s3
  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;
    e883e9d0:	96ba                	add	a3,a3,a4
  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;
    e883e9d2:	4156d713          	srai	a4,a3,0x15
    e883e9d6:	95ba                	add	a1,a1,a4
  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;
    e883e9d8:	4155d713          	srai	a4,a1,0x15
    e883e9dc:	972a                	add	a4,a4,a0
  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;
    e883e9de:	41575e93          	srai	t4,a4,0x15
    e883e9e2:	9e76                	add	t3,t3,t4
  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;
    e883e9e4:	415e5b13          	srai	s6,t3,0x15
    e883e9e8:	9b1e                	add	s6,s6,t2
  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;
    e883e9ea:	415b5513          	srai	a0,s6,0x15
    e883e9ee:	9daa                	add	s11,s11,a0
  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;
    e883e9f0:	415dd513          	srai	a0,s11,0x15
    e883e9f4:	98aa                	add	a7,a7,a0
  s[2] = (uint8_t)((s0 >> 16) | (s1 << 5));
    e883e9f6:	04000537          	lui	a0,0x4000
    e883e9fa:	00581e93          	slli	t4,a6,0x5
    e883e9fe:	1501                	addi	a0,a0,-32
    e883ea00:	00aefeb3          	and	t4,t4,a0
    e883ea04:	01eeef33          	or	t5,t4,t5
  s[3] = (uint8_t)(s1 >> 3);
    e883ea08:	50383e8b          	extu	t4,a6,20,3
    e883ea0c:	03d481a3          	sb	t4,35(s1)
  s[4] = (uint8_t)(s1 >> 11);
    e883ea10:	50b83e8b          	extu	t4,a6,20,11
    e883ea14:	03d48223          	sb	t4,36(s1)
  s[5] = (uint8_t)((s1 >> 19) | (s2 << 2));
    e883ea18:	00800eb7          	lui	t4,0x800
  s[2] = (uint8_t)((s0 >> 16) | (s1 << 5));
    e883ea1c:	03e48123          	sb	t5,34(s1)
  s[5] = (uint8_t)((s1 >> 19) | (s2 << 2));
    e883ea20:	1ef1                	addi	t4,t4,-4
    e883ea22:	00231f13          	slli	t5,t1,0x2
    e883ea26:	01df7f33          	and	t5,t5,t4
    e883ea2a:	5138380b          	extu	a6,a6,20,19
    e883ea2e:	01e86833          	or	a6,a6,t5
    e883ea32:	030482a3          	sb	a6,37(s1)
  s[6] = (uint8_t)(s2 >> 6);
    e883ea36:	5063380b          	extu	a6,t1,20,6
  s[7] = (uint8_t)((s2 >> 14) | (s3 << 7));
    e883ea3a:	10000f37          	lui	t5,0x10000
  s[6] = (uint8_t)(s2 >> 6);
    e883ea3e:	03048323          	sb	a6,38(s1)
  s[7] = (uint8_t)((s2 >> 14) | (s3 << 7));
    e883ea42:	f80f0f13          	addi	t5,t5,-128 # fffff80 <memcmp-0xd8800080>
    e883ea46:	00761813          	slli	a6,a2,0x7
    e883ea4a:	01e87833          	and	a6,a6,t5
    e883ea4e:	50e3330b          	extu	t1,t1,20,14
    e883ea52:	01036333          	or	t1,t1,a6
  s[8] = (uint8_t)(s3 >> 1);
    e883ea56:	5016380b          	extu	a6,a2,20,1
    e883ea5a:	03048423          	sb	a6,40(s1)
  s[9] = (uint8_t)(s3 >> 9);
    e883ea5e:	5096380b          	extu	a6,a2,20,9
  s[7] = (uint8_t)((s2 >> 14) | (s3 << 7));
    e883ea62:	026483a3          	sb	t1,39(s1)
  s[10] = (uint8_t)((s3 >> 17) | (s4 << 4));
    e883ea66:	02000337          	lui	t1,0x2000
  s[9] = (uint8_t)(s3 >> 9);
    e883ea6a:	030484a3          	sb	a6,41(s1)
  s[10] = (uint8_t)((s3 >> 17) | (s4 << 4));
    e883ea6e:	1341                	addi	t1,t1,-16
    e883ea70:	00469813          	slli	a6,a3,0x4
    e883ea74:	00687833          	and	a6,a6,t1
    e883ea78:	5116360b          	extu	a2,a2,20,17
    e883ea7c:	01066633          	or	a2,a2,a6
    e883ea80:	02c48523          	sb	a2,42(s1)
  s[11] = (uint8_t)(s4 >> 4);
    e883ea84:	5046b60b          	extu	a2,a3,20,4
    e883ea88:	02c485a3          	sb	a2,43(s1)
  s[12] = (uint8_t)(s4 >> 12);
    e883ea8c:	50c6b60b          	extu	a2,a3,20,12
  s[13] = (uint8_t)((s4 >> 20) | (s5 << 1));
    e883ea90:	00400837          	lui	a6,0x400
  s[12] = (uint8_t)(s4 >> 12);
    e883ea94:	02c48623          	sb	a2,44(s1)
  s[13] = (uint8_t)((s4 >> 20) | (s5 << 1));
    e883ea98:	1879                	addi	a6,a6,-2
    e883ea9a:	00159613          	slli	a2,a1,0x1
    e883ea9e:	01067633          	and	a2,a2,a6
    e883eaa2:	5146b68b          	extu	a3,a3,20,20
    e883eaa6:	8ed1                	or	a3,a3,a2
    e883eaa8:	02d486a3          	sb	a3,45(s1)
  s[14] = (uint8_t)(s5 >> 7);
    e883eaac:	5075b68b          	extu	a3,a1,20,7
  s[15] = (uint8_t)((s5 >> 15) | (s6 << 6));
    e883eab0:	08000637          	lui	a2,0x8000
  s[14] = (uint8_t)(s5 >> 7);
    e883eab4:	02d48723          	sb	a3,46(s1)
  s[15] = (uint8_t)((s5 >> 15) | (s6 << 6));
    e883eab8:	fc060613          	addi	a2,a2,-64 # 7ffffc0 <memcmp-0xe0800040>
    e883eabc:	00671693          	slli	a3,a4,0x6
    e883eac0:	8ef1                	and	a3,a3,a2
    e883eac2:	50f5b58b          	extu	a1,a1,20,15
    e883eac6:	8dd5                	or	a1,a1,a3
  s[16] = (uint8_t)(s6 >> 2);
    e883eac8:	5027368b          	extu	a3,a4,20,2
    e883eacc:	02d48823          	sb	a3,48(s1)
  s[17] = (uint8_t)(s6 >> 10);
    e883ead0:	50a7368b          	extu	a3,a4,20,10
  s[18] = (uint8_t)((s6 >> 18) | (s7 << 3));
    e883ead4:	01000637          	lui	a2,0x1000
  s[17] = (uint8_t)(s6 >> 10);
    e883ead8:	02d488a3          	sb	a3,49(s1)
  s[18] = (uint8_t)((s6 >> 18) | (s7 << 3));
    e883eadc:	1661                	addi	a2,a2,-8
    e883eade:	003e1693          	slli	a3,t3,0x3
    e883eae2:	5127370b          	extu	a4,a4,20,18
    e883eae6:	8ef1                	and	a3,a3,a2
    e883eae8:	8f55                	or	a4,a4,a3
    e883eaea:	02e48923          	sb	a4,50(s1)
  s[19] = (uint8_t)(s7 >> 5);
    e883eaee:	505e370b          	extu	a4,t3,20,5
    e883eaf2:	02e489a3          	sb	a4,51(s1)
  s[23] = (uint8_t)((s8 >> 16) | (s9 << 5));
    e883eaf6:	005d9713          	slli	a4,s11,0x5
    e883eafa:	500b3b0b          	extu	s6,s6,20,0
  s[21] = (uint8_t)(s8 >> 0);
    e883eafe:	03649aa3          	sh	s6,53(s1)
  s[23] = (uint8_t)((s8 >> 16) | (s9 << 5));
    e883eb02:	8d79                	and	a0,a0,a4
    e883eb04:	410b5b13          	srai	s6,s6,0x10
  s[24] = (uint8_t)(s9 >> 3);
    e883eb08:	503db70b          	extu	a4,s11,20,3
  s[23] = (uint8_t)((s8 >> 16) | (s9 << 5));
    e883eb0c:	01656b33          	or	s6,a0,s6
  s[20] = (uint8_t)(s7 >> 13);
    e883eb10:	40de5e13          	srai	t3,t3,0xd
  s[23] = (uint8_t)((s8 >> 16) | (s9 << 5));
    e883eb14:	03648ba3          	sb	s6,55(s1)
  s[24] = (uint8_t)(s9 >> 3);
    e883eb18:	02e48c23          	sb	a4,56(s1)
  s[15] = (uint8_t)((s5 >> 15) | (s6 << 6));
    e883eb1c:	02b487a3          	sb	a1,47(s1)
  s[25] = (uint8_t)(s9 >> 11);
    e883eb20:	50bdb70b          	extu	a4,s11,20,11
  s[20] = (uint8_t)(s7 >> 13);
    e883eb24:	03c48a23          	sb	t3,52(s1)
  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883eb28:	4158db93          	srai	s7,a7,0x15
  s[25] = (uint8_t)(s9 >> 11);
    e883eb2c:	02e48ca3          	sb	a4,57(s1)
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883eb30:	00289713          	slli	a4,a7,0x2
    e883eb34:	01d77eb3          	and	t4,a4,t4
  s[27] = (uint8_t)(s10 >> 6);
    e883eb38:	5068b70b          	extu	a4,a7,20,6
  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;
    e883eb3c:	97de                	add	a5,a5,s7
  s[27] = (uint8_t)(s10 >> 6);
    e883eb3e:	02e48da3          	sb	a4,59(s1)
  s[28] = (uint8_t)((s10 >> 14) | (s11 << 7));
    e883eb42:	00779713          	slli	a4,a5,0x7
    e883eb46:	50e8b88b          	extu	a7,a7,20,14
    e883eb4a:	00e8e8b3          	or	a7,a7,a4
  s[29] = (uint8_t)(s11 >> 1);
    e883eb4e:	4017d713          	srai	a4,a5,0x1
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883eb52:	513dbd8b          	extu	s11,s11,20,19
  s[29] = (uint8_t)(s11 >> 1);
    e883eb56:	02e48ea3          	sb	a4,61(s1)
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883eb5a:	01ddedb3          	or	s11,s11,t4
  s[30] = (uint8_t)(s11 >> 9);
    e883eb5e:	4097d713          	srai	a4,a5,0x9
}
    e883eb62:	35813083          	ld	ra,856(sp)
    e883eb66:	35013403          	ld	s0,848(sp)
  s[31] = (uint8_t)(s11 >> 17);
    e883eb6a:	87c5                	srai	a5,a5,0x11
  s[26] = (uint8_t)((s9 >> 19) | (s10 << 2));
    e883eb6c:	03b48d23          	sb	s11,58(s1)
  s[28] = (uint8_t)((s10 >> 14) | (s11 << 7));
    e883eb70:	03148e23          	sb	a7,60(s1)
  s[30] = (uint8_t)(s11 >> 9);
    e883eb74:	02e48f23          	sb	a4,62(s1)
  s[31] = (uint8_t)(s11 >> 17);
    e883eb78:	02f48fa3          	sb	a5,63(s1)
}
    e883eb7c:	34013903          	ld	s2,832(sp)
    e883eb80:	34813483          	ld	s1,840(sp)
    e883eb84:	33813983          	ld	s3,824(sp)
    e883eb88:	33013a03          	ld	s4,816(sp)
    e883eb8c:	32813a83          	ld	s5,808(sp)
    e883eb90:	32013b03          	ld	s6,800(sp)
    e883eb94:	31813b83          	ld	s7,792(sp)
    e883eb98:	31013c03          	ld	s8,784(sp)
    e883eb9c:	30813c83          	ld	s9,776(sp)
    e883eba0:	30013d03          	ld	s10,768(sp)
    e883eba4:	2f813d83          	ld	s11,760(sp)
    e883eba8:	36010113          	addi	sp,sp,864
    e883ebac:	8082                	ret

00000000e883ebae <ed25519_verify_ref>:
{
    e883ebae:	ca010113          	addi	sp,sp,-864
    e883ebb2:	35213023          	sd	s2,832(sp)
    e883ebb6:	892a                	mv	s2,a0
  crypto_int64 h0 = crypto_load_4(s);
    e883ebb8:	8536                	mv	a0,a3
{
    e883ebba:	34113c23          	sd	ra,856(sp)
    e883ebbe:	34813823          	sd	s0,848(sp)
    e883ebc2:	34913423          	sd	s1,840(sp)
    e883ebc6:	8436                	mv	s0,a3
    e883ebc8:	84b2                	mv	s1,a2
    e883ebca:	33313c23          	sd	s3,824(sp)
    e883ebce:	33413823          	sd	s4,816(sp)
    e883ebd2:	89ae                	mv	s3,a1
    e883ebd4:	33513423          	sd	s5,808(sp)
    e883ebd8:	33613023          	sd	s6,800(sp)
    e883ebdc:	31713c23          	sd	s7,792(sp)
    e883ebe0:	31813823          	sd	s8,784(sp)
    e883ebe4:	31913423          	sd	s9,776(sp)
    e883ebe8:	31a13023          	sd	s10,768(sp)
    e883ebec:	2fb13c23          	sd	s11,760(sp)
  crypto_int64 h0 = crypto_load_4(s);
    e883ebf0:	b22fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883ebf4:	e42a                	sd	a0,8(sp)
  crypto_int64 h1 = crypto_load_3(s + 4) << 6;
    e883ebf6:	00440513          	addi	a0,s0,4
    e883ebfa:	b00fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883ebfe:	00651a93          	slli	s5,a0,0x6
  crypto_int64 h2 = crypto_load_3(s + 7) << 5;
    e883ec02:	00740513          	addi	a0,s0,7
    e883ec06:	af4fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883ec0a:	00551d93          	slli	s11,a0,0x5
  crypto_int64 h3 = crypto_load_3(s + 10) << 3;
    e883ec0e:	00a40513          	addi	a0,s0,10
    e883ec12:	ae8fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883ec16:	00351a13          	slli	s4,a0,0x3
  crypto_int64 h4 = crypto_load_3(s + 13) << 2;
    e883ec1a:	00d40513          	addi	a0,s0,13
    e883ec1e:	adcfe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883ec22:	00251d13          	slli	s10,a0,0x2
  crypto_int64 h5 = crypto_load_4(s + 16);
    e883ec26:	01040513          	addi	a0,s0,16
    e883ec2a:	ae8fe0ef          	jal	ra,e883cf12 <crypto_load_4>
    e883ec2e:	8c2a                	mv	s8,a0
  crypto_int64 h6 = crypto_load_3(s + 20) << 7;
    e883ec30:	01440513          	addi	a0,s0,20
    e883ec34:	ac6fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883ec38:	00751c93          	slli	s9,a0,0x7
  crypto_int64 h7 = crypto_load_3(s + 23) << 5;
    e883ec3c:	01740513          	addi	a0,s0,23
    e883ec40:	abafe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883ec44:	00551b13          	slli	s6,a0,0x5
  crypto_int64 h8 = crypto_load_3(s + 26) << 4;
    e883ec48:	01a40513          	addi	a0,s0,26
    e883ec4c:	aaefe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883ec50:	00451b93          	slli	s7,a0,0x4
  crypto_int64 h9 = (crypto_load_3(s + 29) & 8388607) << 2;
    e883ec54:	01d40513          	addi	a0,s0,29
    e883ec58:	aa2fe0ef          	jal	ra,e883cefa <crypto_load_3>
    e883ec5c:	050a                	slli	a0,a0,0x2
    e883ec5e:	02000eb7          	lui	t4,0x2000
    e883ec62:	ffce8f13          	addi	t5,t4,-4 # 1fffffc <memcmp-0xe6800004>
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883ec66:	010007b7          	lui	a5,0x1000
  crypto_int64 h9 = (crypto_load_3(s + 29) & 8388607) << 2;
    e883ec6a:	01e57533          	and	a0,a0,t5
  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
    e883ec6e:	6e22                	ld	t3,8(sp)
    e883ec70:	00f500b3          	add	ra,a0,a5
    e883ec74:	4190d693          	srai	a3,ra,0x19
    e883ec78:	474d                	li	a4,19
    e883ec7a:	20e69e0b          	mula	t3,a3,a4
    e883ec7e:	fe0003b7          	lui	t2,0xfe000
    e883ec82:	0070f0b3          	and	ra,ra,t2
    e883ec86:	40150f33          	sub	t5,a0,ra
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883ec8a:	00fa8533          	add	a0,s5,a5
    e883ec8e:	41955893          	srai	a7,a0,0x19
    e883ec92:	00757533          	and	a0,a0,t2
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883ec96:	00fc00b3          	add	ra,s8,a5
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883ec9a:	40aa8ab3          	sub	s5,s5,a0
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883ec9e:	00fa0533          	add	a0,s4,a5
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883eca2:	97da                	add	a5,a5,s6
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883eca4:	41955593          	srai	a1,a0,0x19
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883eca8:	4190d293          	srai	t0,ra,0x19
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883ecac:	00757533          	and	a0,a0,t2
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883ecb0:	4197df93          	srai	t6,a5,0x19
    e883ecb4:	9fde                	add	t6,t6,s7
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883ecb6:	fc000737          	lui	a4,0xfc000
    e883ecba:	01de0333          	add	t1,t3,t4
  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
    e883ecbe:	98ee                	add	a7,a7,s11
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883ecc0:	95ea                	add	a1,a1,s10
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883ecc2:	92e6                	add	t0,t0,s9
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883ecc4:	01d88833          	add	a6,a7,t4
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883ecc8:	01d58633          	add	a2,a1,t4
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883eccc:	01d286b3          	add	a3,t0,t4
  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
    e883ecd0:	40aa0a33          	sub	s4,s4,a0
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883ecd4:	01df8533          	add	a0,t6,t4
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883ecd8:	00e37eb3          	and	t4,t1,a4
    e883ecdc:	41a35313          	srai	t1,t1,0x1a
    e883ece0:	9356                	add	t1,t1,s5
  h[1] = (crypto_int32) h1;
    e883ece2:	1a612623          	sw	t1,428(sp)
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883ece6:	00e87333          	and	t1,a6,a4
    e883ecea:	41a85813          	srai	a6,a6,0x1a
    e883ecee:	9852                	add	a6,a6,s4
  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
    e883ecf0:	0070f0b3          	and	ra,ra,t2
    e883ecf4:	401c00b3          	sub	ra,s8,ra
  h[3] = (crypto_int32) h3;
    e883ecf8:	1b012a23          	sw	a6,436(sp)
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883ecfc:	00e67833          	and	a6,a2,a4
    e883ed00:	8669                	srai	a2,a2,0x1a
    e883ed02:	9606                	add	a2,a2,ra
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883ed04:	0077f7b3          	and	a5,a5,t2
  h[5] = (crypto_int32) h5;
    e883ed08:	1ac12e23          	sw	a2,444(sp)
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883ed0c:	00e6f633          	and	a2,a3,a4
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883ed10:	8f69                	and	a4,a4,a0
    e883ed12:	8569                	srai	a0,a0,0x1a
    e883ed14:	957a                	add	a0,a0,t5
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883ed16:	86e9                	srai	a3,a3,0x1a
  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
    e883ed18:	40fb07b3          	sub	a5,s6,a5
  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
    e883ed1c:	410585b3          	sub	a1,a1,a6
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883ed20:	40c282b3          	sub	t0,t0,a2
  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
    e883ed24:	41de0e33          	sub	t3,t3,t4
  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
    e883ed28:	406888b3          	sub	a7,a7,t1
  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
    e883ed2c:	97b6                	add	a5,a5,a3
  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
    e883ed2e:	40ef8733          	sub	a4,t6,a4
  h[9] = (crypto_int32) h9;
    e883ed32:	1ca12623          	sw	a0,460(sp)
  fe_1(h->Z);
    e883ed36:	0b88                	addi	a0,sp,464
  h[0] = (crypto_int32) h0;
    e883ed38:	1bc12423          	sw	t3,424(sp)
  h[2] = (crypto_int32) h2;
    e883ed3c:	1b112823          	sw	a7,432(sp)
  h[6] = (crypto_int32) h6;
    e883ed40:	1c512023          	sw	t0,448(sp)
  h[7] = (crypto_int32) h7;
    e883ed44:	1cf12223          	sw	a5,452(sp)
  h[8] = (crypto_int32) h8;
    e883ed48:	1ce12423          	sw	a4,456(sp)
  h[4] = (crypto_int32) h4;
    e883ed4c:	1ab12c23          	sw	a1,440(sp)
  fe_1(h->Z);
    e883ed50:	e0dfc0ef          	jal	ra,e883bb5c <fe_1>
  fe_sq(u,h->Y);
    e883ed54:	132c                	addi	a1,sp,424
    e883ed56:	18a8                	addi	a0,sp,120
    e883ed58:	bb8fd0ef          	jal	ra,e883c110 <fe_sq>
  fe_mul(v,u,d);
    e883ed5c:	0007f617          	auipc	a2,0x7f
    e883ed60:	c1c60613          	addi	a2,a2,-996 # e88bd978 <d>
    e883ed64:	18ac                	addi	a1,sp,120
    e883ed66:	1108                	addi	a0,sp,160
    e883ed68:	f81fc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_sub(u,u,h->Z);       /* u = y^2-1 */
    e883ed6c:	18ac                	addi	a1,sp,120
    e883ed6e:	852e                	mv	a0,a1
    e883ed70:	0b90                	addi	a2,sp,464
    e883ed72:	8a9fd0ef          	jal	ra,e883c61a <fe_sub>
  fe_add(v,v,h->Z);       /* v = dy^2+1 */
    e883ed76:	110c                	addi	a1,sp,160
    e883ed78:	0b90                	addi	a2,sp,464
    e883ed7a:	852e                	mv	a0,a1
    e883ed7c:	df7fc0ef          	jal	ra,e883bb72 <fe_add>
  fe_sq(v3,v);
    e883ed80:	110c                	addi	a1,sp,160
    e883ed82:	01a8                	addi	a0,sp,200
    e883ed84:	b8cfd0ef          	jal	ra,e883c110 <fe_sq>
  fe_mul(v3,v3,v);        /* v3 = v^3 */
    e883ed88:	01ac                	addi	a1,sp,200
    e883ed8a:	1110                	addi	a2,sp,160
    e883ed8c:	852e                	mv	a0,a1
    e883ed8e:	f5bfc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_sq(h->X,v3);
    e883ed92:	01ac                	addi	a1,sp,200
    e883ed94:	0308                	addi	a0,sp,384
    e883ed96:	b7afd0ef          	jal	ra,e883c110 <fe_sq>
  fe_mul(h->X,h->X,v);
    e883ed9a:	030c                	addi	a1,sp,384
    e883ed9c:	852e                	mv	a0,a1
    e883ed9e:	1110                	addi	a2,sp,160
    e883eda0:	f49fc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(h->X,h->X,u);    /* x = uv^7 */
    e883eda4:	030c                	addi	a1,sp,384
    e883eda6:	18b0                	addi	a2,sp,120
    e883eda8:	852e                	mv	a0,a1
    e883edaa:	f3ffc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */
    e883edae:	030c                	addi	a1,sp,384
    e883edb0:	852e                	mv	a0,a1
    e883edb2:	f12fd0ef          	jal	ra,e883c4c4 <fe_pow22523>
  fe_mul(h->X,h->X,v3);
    e883edb6:	030c                	addi	a1,sp,384
    e883edb8:	852e                	mv	a0,a1
    e883edba:	01b0                	addi	a2,sp,200
    e883edbc:	f2dfc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(h->X,h->X,u);    /* x = uv^3(uv^7)^((q-5)/8) */
    e883edc0:	030c                	addi	a1,sp,384
    e883edc2:	18b0                	addi	a2,sp,120
    e883edc4:	852e                	mv	a0,a1
    e883edc6:	f23fc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_sq(vxx,h->X);
    e883edca:	030c                	addi	a1,sp,384
    e883edcc:	0228                	addi	a0,sp,264
    e883edce:	b42fd0ef          	jal	ra,e883c110 <fe_sq>
  fe_mul(vxx,vxx,v);
    e883edd2:	022c                	addi	a1,sp,264
    e883edd4:	852e                	mv	a0,a1
    e883edd6:	1110                	addi	a2,sp,160
    e883edd8:	f11fc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_sub(check,vxx,u);    /* vx^2-u */
    e883eddc:	18b0                	addi	a2,sp,120
    e883edde:	022c                	addi	a1,sp,264
    e883ede0:	1408                	addi	a0,sp,544
    e883ede2:	839fd0ef          	jal	ra,e883c61a <fe_sub>
  fe_tobytes(s,f);
    e883ede6:	140c                	addi	a1,sp,544
    e883ede8:	0888                	addi	a0,sp,80
    e883edea:	8a1fd0ef          	jal	ra,e883c68a <fe_tobytes>
  return crypto_verify_32(s,zero);
    e883edee:	0007f597          	auipc	a1,0x7f
    e883edf2:	c0258593          	addi	a1,a1,-1022 # e88bd9f0 <zero>
    e883edf6:	0888                	addi	a0,sp,80
    e883edf8:	823fe0ef          	jal	ra,e883d61a <crypto_verify_32>
  if (fe_isnonzero(check)) {
    e883edfc:	c925                	beqz	a0,e883ee6c <ed25519_verify_ref+0x2be>
    fe_add(check,vxx,u);  /* vx^2+u */
    e883edfe:	18b0                	addi	a2,sp,120
    e883ee00:	022c                	addi	a1,sp,264
    e883ee02:	1408                	addi	a0,sp,544
    e883ee04:	d6ffc0ef          	jal	ra,e883bb72 <fe_add>
  fe_tobytes(s,f);
    e883ee08:	140c                	addi	a1,sp,544
    e883ee0a:	0888                	addi	a0,sp,80
    e883ee0c:	87ffd0ef          	jal	ra,e883c68a <fe_tobytes>
  return crypto_verify_32(s,zero);
    e883ee10:	0007f597          	auipc	a1,0x7f
    e883ee14:	be058593          	addi	a1,a1,-1056 # e88bd9f0 <zero>
    e883ee18:	0888                	addi	a0,sp,80
    e883ee1a:	801fe0ef          	jal	ra,e883d61a <crypto_verify_32>
    if (fe_isnonzero(check)) return -1;
    e883ee1e:	cd1d                	beqz	a0,e883ee5c <ed25519_verify_ref+0x2ae>
  if (ge_frombytes_negate_vartime(&A,pk) != 0) return -1;
    e883ee20:	557d                	li	a0,-1
}
    e883ee22:	35813083          	ld	ra,856(sp)
    e883ee26:	35013403          	ld	s0,848(sp)
    e883ee2a:	34813483          	ld	s1,840(sp)
    e883ee2e:	34013903          	ld	s2,832(sp)
    e883ee32:	33813983          	ld	s3,824(sp)
    e883ee36:	33013a03          	ld	s4,816(sp)
    e883ee3a:	32813a83          	ld	s5,808(sp)
    e883ee3e:	32013b03          	ld	s6,800(sp)
    e883ee42:	31813b83          	ld	s7,792(sp)
    e883ee46:	31013c03          	ld	s8,784(sp)
    e883ee4a:	30813c83          	ld	s9,776(sp)
    e883ee4e:	30013d03          	ld	s10,768(sp)
    e883ee52:	2f813d83          	ld	s11,760(sp)
    e883ee56:	36010113          	addi	sp,sp,864
    e883ee5a:	8082                	ret
    fe_mul(h->X,h->X,sqrtm1);
    e883ee5c:	030c                	addi	a1,sp,384
    e883ee5e:	0007f617          	auipc	a2,0x7f
    e883ee62:	b6a60613          	addi	a2,a2,-1174 # e88bd9c8 <sqrtm1>
    e883ee66:	852e                	mv	a0,a1
    e883ee68:	e81fc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_tobytes(s,f);
    e883ee6c:	030c                	addi	a1,sp,384
    e883ee6e:	0888                	addi	a0,sp,80
    e883ee70:	81bfd0ef          	jal	ra,e883c68a <fe_tobytes>
  return s[0] & 1;
    e883ee74:	05014783          	lbu	a5,80(sp)
  if (fe_isnegative(h->X) == (s[31] >> 7))
    e883ee78:	01f44703          	lbu	a4,31(s0)
    e883ee7c:	8b85                	andi	a5,a5,1
    e883ee7e:	831d                	srli	a4,a4,0x7
    e883ee80:	00f71663          	bne	a4,a5,e883ee8c <ed25519_verify_ref+0x2de>
    fe_neg(h->X,h->X);
    e883ee84:	030c                	addi	a1,sp,384
    e883ee86:	852e                	mv	a0,a1
    e883ee88:	a2cfd0ef          	jal	ra,e883c0b4 <fe_neg>
  fe_mul(h->T,h->X,h->Y);
    e883ee8c:	1330                	addi	a2,sp,424
    e883ee8e:	030c                	addi	a1,sp,384
    e883ee90:	1ba8                	addi	a0,sp,504
    e883ee92:	e57fc0ef          	jal	ra,e883bce8 <fe_mul>
  SHA512_Init(&ctx);
    e883ee96:	1408                	addi	a0,sp,544
    e883ee98:	5f31e0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
  SHA512_Update(&ctx,sig,32);
    e883ee9c:	85a6                	mv	a1,s1
    e883ee9e:	02000613          	li	a2,32
    e883eea2:	1408                	addi	a0,sp,544
    e883eea4:	6531e0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
  SHA512_Update(&ctx,pk,32);
    e883eea8:	85a2                	mv	a1,s0
    e883eeaa:	02000613          	li	a2,32
    e883eeae:	1408                	addi	a0,sp,544
    e883eeb0:	6471e0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
  SHA512_Update(&ctx,m,mlen);
    e883eeb4:	864e                	mv	a2,s3
    e883eeb6:	85ca                	mv	a1,s2
    e883eeb8:	1408                	addi	a0,sp,544
    e883eeba:	63d1e0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
  SHA512_Final(h,&ctx);
    e883eebe:	140c                	addi	a1,sp,544
    e883eec0:	01a8                	addi	a0,sp,200
    e883eec2:	6cf1e0ef          	jal	ra,e885dd90 <SHA512_Final_compat>
  sc_reduce(h);
    e883eec6:	01a8                	addi	a0,sp,200
    e883eec8:	850fe0ef          	jal	ra,e883cf18 <sc_reduce>
  ge_double_scalarmult_vartime(&R,h,&A,sig + 32);
    e883eecc:	02048693          	addi	a3,s1,32
    e883eed0:	0310                	addi	a2,sp,384
    e883eed2:	01ac                	addi	a1,sp,200
    e883eed4:	0228                	addi	a0,sp,264
    e883eed6:	a0bfe0ef          	jal	ra,e883d8e0 <ge_double_scalarmult_vartime>
  fe_invert(recip,h->Z);
    e883eeda:	0aac                	addi	a1,sp,344
    e883eedc:	0888                	addi	a0,sp,80
    e883eede:	c8efd0ef          	jal	ra,e883c36c <fe_invert>
  fe_mul(x,h->X,recip);
    e883eee2:	0890                	addi	a2,sp,80
    e883eee4:	022c                	addi	a1,sp,264
    e883eee6:	18a8                	addi	a0,sp,120
    e883eee8:	e01fc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_mul(y,h->Y,recip);
    e883eeec:	0890                	addi	a2,sp,80
    e883eeee:	1a0c                	addi	a1,sp,304
    e883eef0:	1108                	addi	a0,sp,160
    e883eef2:	df7fc0ef          	jal	ra,e883bce8 <fe_mul>
  fe_tobytes(s,y);
    e883eef6:	110c                	addi	a1,sp,160
    e883eef8:	0808                	addi	a0,sp,16
    e883eefa:	f90fd0ef          	jal	ra,e883c68a <fe_tobytes>
  fe_tobytes(s,f);
    e883eefe:	18ac                	addi	a1,sp,120
    e883ef00:	1808                	addi	a0,sp,48
    e883ef02:	f88fd0ef          	jal	ra,e883c68a <fe_tobytes>
  return s[0] & 1;
    e883ef06:	03014783          	lbu	a5,48(sp)
  s[31] ^= fe_isnegative(x) << 7;
    e883ef0a:	02f14703          	lbu	a4,47(sp)
  return crypto_verify_32(checkr,sig);
    e883ef0e:	85a6                	mv	a1,s1
  return s[0] & 1;
    e883ef10:	8b85                	andi	a5,a5,1
  s[31] ^= fe_isnegative(x) << 7;
    e883ef12:	0077979b          	slliw	a5,a5,0x7
    e883ef16:	8fb9                	xor	a5,a5,a4
  return crypto_verify_32(checkr,sig);
    e883ef18:	0808                	addi	a0,sp,16
  s[31] ^= fe_isnegative(x) << 7;
    e883ef1a:	02f107a3          	sb	a5,47(sp)
  return crypto_verify_32(checkr,sig);
    e883ef1e:	efcfe0ef          	jal	ra,e883d61a <crypto_verify_32>
    e883ef22:	b701                	j	e883ee22 <ed25519_verify_ref+0x274>

00000000e883ef24 <fast_mp_invmod>:
 *
 * Based on slow invmod except this is optimized for the case where b is 
 * odd as per HAC Note 14.64 on pp. 610
 */
int fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c)
{
    e883ef24:	7131                	addi	sp,sp,-192
    e883ef26:	fd06                	sd	ra,184(sp)
    e883ef28:	f922                	sd	s0,176(sp)
    e883ef2a:	f526                	sd	s1,168(sp)
    e883ef2c:	f14a                	sd	s2,160(sp)
    e883ef2e:	ed4e                	sd	s3,152(sp)
    e883ef30:	e952                	sd	s4,144(sp)
  mp_int  x, y, u, v, B, D;
  int     res, neg;

  /* 2. [modified] b must be odd   */
  if (mp_iseven (b) == 1) {
    e883ef32:	419c                	lw	a5,0(a1)
    e883ef34:	00f05763          	blez	a5,e883ef42 <fast_mp_invmod+0x1e>
    e883ef38:	699c                	ld	a5,16(a1)
    return MP_VAL;
    e883ef3a:	5475                	li	s0,-3
  if (mp_iseven (b) == 1) {
    e883ef3c:	639c                	ld	a5,0(a5)
    e883ef3e:	8b85                	andi	a5,a5,1
    e883ef40:	cfc1                	beqz	a5,e883efd8 <fast_mp_invmod+0xb4>
    e883ef42:	8932                	mv	s2,a2
    e883ef44:	84ae                	mv	s1,a1
    e883ef46:	89aa                	mv	s3,a0
  }

  /* init all our temps */
  if ((res = mp_init_multi(&x, &y, &u, &v, &B, &D, NULL)) != MP_OKAY) {
    e883ef48:	4801                	li	a6,0
    e883ef4a:	18bc                	addi	a5,sp,120
    e883ef4c:	1098                	addi	a4,sp,96
    e883ef4e:	00b4                	addi	a3,sp,72
    e883ef50:	1810                	addi	a2,sp,48
    e883ef52:	082c                	addi	a1,sp,24
    e883ef54:	850a                	mv	a0,sp
    e883ef56:	6c0010ef          	jal	ra,e8840616 <mp_init_multi>
    e883ef5a:	842a                	mv	s0,a0
    e883ef5c:	ed35                	bnez	a0,e883efd8 <fast_mp_invmod+0xb4>
     return res;
  }

  /* x == modulus, y == value to invert */
  if ((res = mp_copy (b, &x)) != MP_OKAY) {
    e883ef5e:	858a                	mv	a1,sp
    e883ef60:	8526                	mv	a0,s1
    e883ef62:	16f000ef          	jal	ra,e883f8d0 <mp_copy>
    e883ef66:	842a                	mv	s0,a0
    e883ef68:	ed39                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
    goto LBL_ERR;
  }

  /* we need y = |a| */
  if ((res = mp_mod (a, b, &y)) != MP_OKAY) {
    e883ef6a:	0830                	addi	a2,sp,24
    e883ef6c:	85a6                	mv	a1,s1
    e883ef6e:	854e                	mv	a0,s3
    e883ef70:	5c7010ef          	jal	ra,e8840d36 <mp_mod>
    e883ef74:	842a                	mv	s0,a0
    e883ef76:	e921                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
    goto LBL_ERR;
  }

  /* 3. u=x, v=y, A=1, B=0, C=0,D=1 */
  if ((res = mp_copy (&x, &u)) != MP_OKAY) {
    e883ef78:	180c                	addi	a1,sp,48
    e883ef7a:	850a                	mv	a0,sp
    e883ef7c:	155000ef          	jal	ra,e883f8d0 <mp_copy>
    e883ef80:	842a                	mv	s0,a0
    e883ef82:	e131                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
    goto LBL_ERR;
  }
  if ((res = mp_copy (&y, &v)) != MP_OKAY) {
    e883ef84:	00ac                	addi	a1,sp,72
    e883ef86:	0828                	addi	a0,sp,24
    e883ef88:	149000ef          	jal	ra,e883f8d0 <mp_copy>
    e883ef8c:	842a                	mv	s0,a0
    e883ef8e:	ed05                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
    goto LBL_ERR;
  }
  mp_set (&D, 1);
    e883ef90:	4585                	li	a1,1
    e883ef92:	18a8                	addi	a0,sp,120
    e883ef94:	756020ef          	jal	ra,e88416ea <mp_set>
      goto LBL_ERR;
    }
  }

  /* 6.  if u >= v then */
  if (mp_cmp (&u, &v) != MP_LT) {
    e883ef98:	5a7d                	li	s4,-1
  while (mp_iseven (&u) == 1) {
    e883ef9a:	57c2                	lw	a5,48(sp)
    e883ef9c:	08f05d63          	blez	a5,e883f036 <fast_mp_invmod+0x112>
    e883efa0:	6786                	ld	a5,64(sp)
    e883efa2:	639c                	ld	a5,0(a5)
    e883efa4:	8b85                	andi	a5,a5,1
    e883efa6:	ebc1                	bnez	a5,e883f036 <fast_mp_invmod+0x112>
    if ((res = mp_div_2 (&u, &u)) != MP_OKAY) {
    e883efa8:	180c                	addi	a1,sp,48
    e883efaa:	852e                	mv	a0,a1
    e883efac:	4eb000ef          	jal	ra,e883fc96 <mp_div_2>
    e883efb0:	842a                	mv	s0,a0
    e883efb2:	e911                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
    if (mp_isodd (&B) == 1) {
    e883efb4:	5786                	lw	a5,96(sp)
    e883efb6:	02f04a63          	bgtz	a5,e883efea <fast_mp_invmod+0xc6>
    if ((res = mp_div_2 (&B, &B)) != MP_OKAY) {
    e883efba:	108c                	addi	a1,sp,96
    e883efbc:	852e                	mv	a0,a1
    e883efbe:	4d9000ef          	jal	ra,e883fc96 <mp_div_2>
    e883efc2:	842a                	mv	s0,a0
    e883efc4:	d979                	beqz	a0,e883ef9a <fast_mp_invmod+0x76>
  }
  mp_exch (&D, c);
  c->sign = neg;
  res = MP_OKAY;

LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &B, &D, NULL);
    e883efc6:	4801                	li	a6,0
    e883efc8:	18bc                	addi	a5,sp,120
    e883efca:	1098                	addi	a4,sp,96
    e883efcc:	00b4                	addi	a3,sp,72
    e883efce:	1810                	addi	a2,sp,48
    e883efd0:	082c                	addi	a1,sp,24
    e883efd2:	850a                	mv	a0,sp
    e883efd4:	037000ef          	jal	ra,e883f80a <mp_clear_multi>
  return res;
}
    e883efd8:	8522                	mv	a0,s0
    e883efda:	70ea                	ld	ra,184(sp)
    e883efdc:	744a                	ld	s0,176(sp)
    e883efde:	74aa                	ld	s1,168(sp)
    e883efe0:	790a                	ld	s2,160(sp)
    e883efe2:	69ea                	ld	s3,152(sp)
    e883efe4:	6a4a                	ld	s4,144(sp)
    e883efe6:	6129                	addi	sp,sp,192
    e883efe8:	8082                	ret
    if (mp_isodd (&B) == 1) {
    e883efea:	77c6                	ld	a5,112(sp)
    e883efec:	639c                	ld	a5,0(a5)
    e883efee:	8b85                	andi	a5,a5,1
    e883eff0:	d7e9                	beqz	a5,e883efba <fast_mp_invmod+0x96>
      if ((res = mp_sub (&B, &x, &B)) != MP_OKAY) {
    e883eff2:	1090                	addi	a2,sp,96
    e883eff4:	858a                	mv	a1,sp
    e883eff6:	8532                	mv	a0,a2
    e883eff8:	7d2020ef          	jal	ra,e88417ca <mp_sub>
    e883effc:	842a                	mv	s0,a0
    e883effe:	dd55                	beqz	a0,e883efba <fast_mp_invmod+0x96>
    e883f000:	b7d9                	j	e883efc6 <fast_mp_invmod+0xa2>
    if (mp_isodd (&D) == 1) {
    e883f002:	67aa                	ld	a5,136(sp)
    e883f004:	639c                	ld	a5,0(a5)
    e883f006:	8b85                	andi	a5,a5,1
    e883f008:	c38d                	beqz	a5,e883f02a <fast_mp_invmod+0x106>
      if ((res = mp_sub (&D, &x, &D)) != MP_OKAY) {
    e883f00a:	18b0                	addi	a2,sp,120
    e883f00c:	858a                	mv	a1,sp
    e883f00e:	8532                	mv	a0,a2
    e883f010:	7ba020ef          	jal	ra,e88417ca <mp_sub>
    e883f014:	842a                	mv	s0,a0
    e883f016:	c911                	beqz	a0,e883f02a <fast_mp_invmod+0x106>
    e883f018:	b77d                	j	e883efc6 <fast_mp_invmod+0xa2>
    if ((res = mp_div_2 (&v, &v)) != MP_OKAY) {
    e883f01a:	852e                	mv	a0,a1
    e883f01c:	47b000ef          	jal	ra,e883fc96 <mp_div_2>
    e883f020:	842a                	mv	s0,a0
    e883f022:	f155                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
    if (mp_isodd (&D) == 1) {
    e883f024:	57e6                	lw	a5,120(sp)
    e883f026:	fcf04ee3          	bgtz	a5,e883f002 <fast_mp_invmod+0xde>
    if ((res = mp_div_2 (&D, &D)) != MP_OKAY) {
    e883f02a:	18ac                	addi	a1,sp,120
    e883f02c:	852e                	mv	a0,a1
    e883f02e:	469000ef          	jal	ra,e883fc96 <mp_div_2>
    e883f032:	842a                	mv	s0,a0
    e883f034:	f949                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
  while (mp_iseven (&v) == 1) {
    e883f036:	47a6                	lw	a5,72(sp)
    if ((res = mp_div_2 (&v, &v)) != MP_OKAY) {
    e883f038:	00ac                	addi	a1,sp,72
  while (mp_iseven (&v) == 1) {
    e883f03a:	00f05663          	blez	a5,e883f046 <fast_mp_invmod+0x122>
    e883f03e:	67e6                	ld	a5,88(sp)
    e883f040:	639c                	ld	a5,0(a5)
    e883f042:	8b85                	andi	a5,a5,1
    e883f044:	dbf9                	beqz	a5,e883f01a <fast_mp_invmod+0xf6>
  if (mp_cmp (&u, &v) != MP_LT) {
    e883f046:	1808                	addi	a0,sp,48
    e883f048:	7f0000ef          	jal	ra,e883f838 <mp_cmp>
    e883f04c:	01451c63          	bne	a0,s4,e883f064 <fast_mp_invmod+0x140>
    if ((res = mp_sub (&v, &u, &v)) != MP_OKAY) {
    e883f050:	00b0                	addi	a2,sp,72
    e883f052:	180c                	addi	a1,sp,48
    e883f054:	8532                	mv	a0,a2
    e883f056:	774020ef          	jal	ra,e88417ca <mp_sub>
    e883f05a:	842a                	mv	s0,a0
    e883f05c:	f52d                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
    if ((res = mp_sub (&D, &B, &D)) != MP_OKAY) {
    e883f05e:	18b0                	addi	a2,sp,120
    e883f060:	108c                	addi	a1,sp,96
    e883f062:	a811                	j	e883f076 <fast_mp_invmod+0x152>
    if ((res = mp_sub (&u, &v, &u)) != MP_OKAY) {
    e883f064:	1810                	addi	a2,sp,48
    e883f066:	00ac                	addi	a1,sp,72
    e883f068:	8532                	mv	a0,a2
    e883f06a:	760020ef          	jal	ra,e88417ca <mp_sub>
    e883f06e:	842a                	mv	s0,a0
    e883f070:	f939                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
    if ((res = mp_sub (&B, &D, &B)) != MP_OKAY) {
    e883f072:	1090                	addi	a2,sp,96
    e883f074:	18ac                	addi	a1,sp,120
    e883f076:	8532                	mv	a0,a2
    e883f078:	752020ef          	jal	ra,e88417ca <mp_sub>
    e883f07c:	842a                	mv	s0,a0
    e883f07e:	f521                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
  if (mp_iszero (&u) == 0) {
    e883f080:	57c2                	lw	a5,48(sp)
    e883f082:	f0079ce3          	bnez	a5,e883ef9a <fast_mp_invmod+0x76>
  if (mp_cmp_d (&v, 1) != MP_EQ) {
    e883f086:	4585                	li	a1,1
    e883f088:	00a8                	addi	a0,sp,72
    e883f08a:	7d4000ef          	jal	ra,e883f85e <mp_cmp_d>
    res = MP_VAL;
    e883f08e:	5475                	li	s0,-3
  if (mp_cmp_d (&v, 1) != MP_EQ) {
    e883f090:	f91d                	bnez	a0,e883efc6 <fast_mp_invmod+0xa2>
  neg = a->sign;
    e883f092:	0089a983          	lw	s3,8(s3)
  while (D.sign == MP_NEG) {
    e883f096:	4a05                	li	s4,1
    e883f098:	478a                	lw	a5,128(sp)
    e883f09a:	01478a63          	beq	a5,s4,e883f0ae <fast_mp_invmod+0x18a>
  mp_exch (&D, c);
    e883f09e:	85ca                	mv	a1,s2
    e883f0a0:	18a8                	addi	a0,sp,120
    e883f0a2:	6f7000ef          	jal	ra,e883ff98 <mp_exch>
  res = MP_OKAY;
    e883f0a6:	4401                	li	s0,0
  c->sign = neg;
    e883f0a8:	01392423          	sw	s3,8(s2)
  res = MP_OKAY;
    e883f0ac:	bf29                	j	e883efc6 <fast_mp_invmod+0xa2>
    if ((res = mp_add (&D, b, &D)) != MP_OKAY) {
    e883f0ae:	18b0                	addi	a2,sp,120
    e883f0b0:	85a6                	mv	a1,s1
    e883f0b2:	8532                	mv	a0,a2
    e883f0b4:	596000ef          	jal	ra,e883f64a <mp_add>
    e883f0b8:	842a                	mv	s0,a0
    e883f0ba:	dd79                	beqz	a0,e883f098 <fast_mp_invmod+0x174>
    e883f0bc:	b729                	j	e883efc6 <fast_mp_invmod+0xa2>

00000000e883f0be <fast_mp_montgomery_reduce>:
 * reduction.
 *
 * Based on Algorithm 14.32 on pp.601 of HAC.
*/
int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho)
{
    e883f0be:	7179                	addi	sp,sp,-48
    e883f0c0:	fa91540b          	sdd	s0,s1,(sp),1,4
    e883f0c4:	f406                	sd	ra,40(sp)
    e883f0c6:	f04a                	sd	s2,32(sp)
    e883f0c8:	84ae                	mv	s1,a1

  /* get old used count */
  olduse = x->used;

  /* grow a as required */
  if (x->alloc < n->used + 1) {
    e883f0ca:	418c                	lw	a1,0(a1)
    e883f0cc:	415c                	lw	a5,4(a0)
{
    e883f0ce:	737d                	lui	t1,0xfffff
  if (x->alloc < n->used + 1) {
    e883f0d0:	2585                	addiw	a1,a1,1
{
    e883f0d2:	911a                	add	sp,sp,t1
    e883f0d4:	842a                	mv	s0,a0
  olduse = x->used;
    e883f0d6:	00052903          	lw	s2,0(a0) # 4000000 <memcmp-0xe4800000>
  if (x->alloc < n->used + 1) {
    e883f0da:	0eb7c463          	blt	a5,a1,e883f1c2 <fast_mp_montgomery_reduce+0x104>
    /* alias for the digits of  x*/
    tmpx = x->dp;

    /* copy the digits of a into W[0..a->used-1] */
    for (ix = 0; ix < x->used; ix++) {
      *_W++ = *tmpx++;
    e883f0de:	6585                	lui	a1,0x1
    e883f0e0:	0808                	addi	a0,sp,16
    tmpx = x->dp;
    e883f0e2:	01043803          	ld	a6,16(s0)
    for (ix = 0; ix < x->used; ix++) {
    e883f0e6:	4018                	lw	a4,0(s0)
      *_W++ = *tmpx++;
    e883f0e8:	76fd                	lui	a3,0xfffff
    e883f0ea:	95aa                	add	a1,a1,a0
    for (ix = 0; ix < x->used; ix++) {
    e883f0ec:	4781                	li	a5,0
      *_W++ = *tmpx++;
    e883f0ee:	96ae                	add	a3,a3,a1
    for (ix = 0; ix < x->used; ix++) {
    e883f0f0:	0007859b          	sext.w	a1,a5
    e883f0f4:	0ee5c663          	blt	a1,a4,e883f1e0 <fast_mp_montgomery_reduce+0x122>
    e883f0f8:	87ba                	mv	a5,a4
    e883f0fa:	00075363          	bgez	a4,e883f100 <fast_mp_montgomery_reduce+0x42>
    e883f0fe:	4781                	li	a5,0
    e883f100:	080c                	addi	a1,sp,16
    e883f102:	6685                	lui	a3,0x1
    e883f104:	96ae                	add	a3,a3,a1
    e883f106:	777d                	lui	a4,0xfffff
    e883f108:	9736                	add	a4,a4,a3
    }

    /* zero the high words of W[a->used..m->used*2] */
    for (; ix < n->used * 2 + 1; ix++) {
    e883f10a:	4094                	lw	a3,0(s1)
    e883f10c:	e43a                	sd	a4,8(sp)
    e883f10e:	06f7158b          	addsl	a1,a4,a5,3
    e883f112:	0016951b          	slliw	a0,a3,0x1
    e883f116:	2505                	addiw	a0,a0,1
    e883f118:	4701                	li	a4,0
    e883f11a:	00f708bb          	addw	a7,a4,a5
    e883f11e:	0ca8c763          	blt	a7,a0,e883f1ec <fast_mp_montgomery_reduce+0x12e>
    e883f122:	6705                	lui	a4,0x1
    e883f124:	080c                	addi	a1,sp,16
    e883f126:	77fd                	lui	a5,0xfffff
    e883f128:	972e                	add	a4,a4,a1
    e883f12a:	97ba                	add	a5,a5,a4
  }

  /* now we proceed to zero successive digits
   * from the least significant upwards
   */
  for (ix = 0; ix < n->used; ix++) {
    e883f12c:	4881                	li	a7,0
    e883f12e:	0cd8c363          	blt	a7,a3,e883f1f4 <fast_mp_montgomery_reduce+0x136>
    e883f132:	8736                	mv	a4,a3
    e883f134:	0006d363          	bgez	a3,e883f13a <fast_mp_montgomery_reduce+0x7c>
    e883f138:	4701                	li	a4,0
    e883f13a:	6585                	lui	a1,0x1
    e883f13c:	01010893          	addi	a7,sp,16
    e883f140:	77fd                	lui	a5,0xfffff
    e883f142:	95c6                	add	a1,a1,a7
    e883f144:	97ae                	add	a5,a5,a1
    e883f146:	0007061b          	sext.w	a2,a4

    /* alias for current word */
    _W1 = W + ix;

    /* alias for next word, where the carry goes */
    _W = W + ++ix;
    e883f14a:	2705                	addiw	a4,a4,1
    e883f14c:	06c7930b          	addsl	t1,a5,a2,3
    e883f150:	e43e                	sd	a5,8(sp)
    e883f152:	06e7970b          	addsl	a4,a5,a4,3

    for (; ix <= n->used * 2 + 1; ix++) {
    e883f156:	2605                	addiw	a2,a2,1
    e883f158:	4781                	li	a5,0
    e883f15a:	00f605bb          	addw	a1,a2,a5
    e883f15e:	0cb55b63          	bge	a0,a1,e883f234 <fast_mp_montgomery_reduce+0x176>

    /* alias for destination word */
    tmpx = x->dp;

    /* alias for shifted double precision result */
    _W = W + n->used;
    e883f162:	6705                	lui	a4,0x1
    e883f164:	0810                	addi	a2,sp,16
    e883f166:	77fd                	lui	a5,0xfffff
    e883f168:	9732                	add	a4,a4,a2
    e883f16a:	97ba                	add	a5,a5,a4
    e883f16c:	e43e                	sd	a5,8(sp)
    e883f16e:	06d7968b          	addsl	a3,a5,a3,3

    for (ix = 0; ix < n->used + 1; ix++) {
    e883f172:	4781                	li	a5,0
    e883f174:	4098                	lw	a4,0(s1)
    e883f176:	0007859b          	sext.w	a1,a5
    e883f17a:	06f8160b          	addsl	a2,a6,a5,3
    e883f17e:	2705                	addiw	a4,a4,1
    e883f180:	0ce5c563          	blt	a1,a4,e883f24a <fast_mp_montgomery_reduce+0x18c>
    e883f184:	4701                	li	a4,0
    }

    /* zero oldused digits, if the input a was larger than
     * m->used+1 we'll have to clear the digits
     */
    for (; ix < olduse; ix++) {
    e883f186:	00e786bb          	addw	a3,a5,a4
    e883f18a:	0d26c863          	blt	a3,s2,e883f25a <fast_mp_montgomery_reduce+0x19c>
      *tmpx++ = 0;
    }
  }

  /* set the max used and clamp */
  x->used = n->used + 1;
    e883f18e:	409c                	lw	a5,0(s1)
  mp_clamp (x);
    e883f190:	8522                	mv	a0,s0
  x->used = n->used + 1;
    e883f192:	2785                	addiw	a5,a5,1
    e883f194:	c01c                	sw	a5,0(s0)
  mp_clamp (x);
    e883f196:	618000ef          	jal	ra,e883f7ae <mp_clamp>

  /* if A >= m then A = A - m */
  if (mp_cmp_mag (x, n) != MP_LT) {
    e883f19a:	85a6                	mv	a1,s1
    e883f19c:	8522                	mv	a0,s0
    e883f19e:	6e6000ef          	jal	ra,e883f884 <mp_cmp_mag>
    e883f1a2:	577d                	li	a4,-1
    return s_mp_sub (x, n, x);
  }
  return MP_OKAY;
    e883f1a4:	4781                	li	a5,0
  if (mp_cmp_mag (x, n) != MP_LT) {
    e883f1a6:	02e50463          	beq	a0,a4,e883f1ce <fast_mp_montgomery_reduce+0x110>
}
    e883f1aa:	6305                	lui	t1,0x1
    e883f1ac:	911a                	add	sp,sp,t1
    return s_mp_sub (x, n, x);
    e883f1ae:	8622                	mv	a2,s0
    e883f1b0:	85a6                	mv	a1,s1
    e883f1b2:	8522                	mv	a0,s0
}
    e883f1b4:	70a2                	ld	ra,40(sp)
    e883f1b6:	7902                	ld	s2,32(sp)
    e883f1b8:	fa91440b          	ldd	s0,s1,(sp),1,4
    e883f1bc:	6145                	addi	sp,sp,48
    return s_mp_sub (x, n, x);
    e883f1be:	7520306f          	j	e8842910 <s_mp_sub>
    e883f1c2:	e432                	sd	a2,8(sp)
    if ((res = mp_grow (x, n->used + 1)) != MP_OKAY) {
    e883f1c4:	392010ef          	jal	ra,e8840556 <mp_grow>
    e883f1c8:	87aa                	mv	a5,a0
    e883f1ca:	6622                	ld	a2,8(sp)
    e883f1cc:	d909                	beqz	a0,e883f0de <fast_mp_montgomery_reduce+0x20>
}
    e883f1ce:	6305                	lui	t1,0x1
    e883f1d0:	911a                	add	sp,sp,t1
    e883f1d2:	70a2                	ld	ra,40(sp)
    e883f1d4:	853e                	mv	a0,a5
    e883f1d6:	7902                	ld	s2,32(sp)
    e883f1d8:	fa91440b          	ldd	s0,s1,(sp),1,4
    e883f1dc:	6145                	addi	sp,sp,48
    e883f1de:	8082                	ret
      *_W++ = *tmpx++;
    e883f1e0:	66f8458b          	lrd	a1,a6,a5,3
    e883f1e4:	66f6d58b          	srd	a1,a3,a5,3
    for (ix = 0; ix < x->used; ix++) {
    e883f1e8:	0785                	addi	a5,a5,1
    e883f1ea:	b719                	j	e883f0f0 <fast_mp_montgomery_reduce+0x32>
      *_W++ = 0;
    e883f1ec:	66e5d00b          	srd	zero,a1,a4,3
    for (; ix < n->used * 2 + 1; ix++) {
    e883f1f0:	0705                	addi	a4,a4,1
    e883f1f2:	b725                	j	e883f11a <fast_mp_montgomery_reduce+0x5c>
    mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK);
    e883f1f4:	6398                	ld	a4,0(a5)
      tmpn = n->dp;
    e883f1f6:	0104be83          	ld	t4,16(s1)
    e883f1fa:	4581                	li	a1,0
    mu = (mp_digit) (((W[ix] & MP_MASK) * rho) & MP_MASK);
    e883f1fc:	6c07370b          	extu	a4,a4,27,0
    e883f200:	02c70733          	mul	a4,a4,a2
    e883f204:	6c07370b          	extu	a4,a4,27,0
          *_W++ += ((mp_word)mu) * ((mp_word)*tmpn++);
    e883f208:	66b7c30b          	lrd	t1,a5,a1,3
    e883f20c:	66bece0b          	lrd	t3,t4,a1,3
    e883f210:	21c7130b          	mula	t1,a4,t3
    e883f214:	66b7d30b          	srd	t1,a5,a1,3
      for (iy = 0; iy < n->used; iy++) {
    e883f218:	0585                	addi	a1,a1,1
    e883f21a:	0005831b          	sext.w	t1,a1
    e883f21e:	fed345e3          	blt	t1,a3,e883f208 <fast_mp_montgomery_reduce+0x14a>
    W[ix + 1] += W[ix] >> ((mp_word) DIGIT_BIT);
    e883f222:	6398                	ld	a4,0(a5)
    e883f224:	2885                	addiw	a7,a7,1
    e883f226:	01c75593          	srli	a1,a4,0x1c
    e883f22a:	6798                	ld	a4,8(a5)
    e883f22c:	972e                	add	a4,a4,a1
    e883f22e:	6887d70b          	sdib	a4,(a5),8,0
  for (ix = 0; ix < n->used; ix++) {
    e883f232:	bdf5                	j	e883f12e <fast_mp_montgomery_reduce+0x70>
      *_W++ += *_W1++ >> ((mp_word) DIGIT_BIT);
    e883f234:	66f3458b          	lrd	a1,t1,a5,3
    e883f238:	01c5d893          	srli	a7,a1,0x1c
    e883f23c:	66f7458b          	lrd	a1,a4,a5,3
    e883f240:	95c6                	add	a1,a1,a7
    e883f242:	66f7558b          	srd	a1,a4,a5,3
    for (; ix <= n->used * 2 + 1; ix++) {
    e883f246:	0785                	addi	a5,a5,1
    e883f248:	bf09                	j	e883f15a <fast_mp_montgomery_reduce+0x9c>
      *tmpx++ = (mp_digit)(*_W++ & ((mp_word) MP_MASK));
    e883f24a:	66f6c70b          	lrd	a4,a3,a5,3
    e883f24e:	6c07370b          	extu	a4,a4,27,0
    e883f252:	66f8570b          	srd	a4,a6,a5,3
    for (ix = 0; ix < n->used + 1; ix++) {
    e883f256:	0785                	addi	a5,a5,1
    e883f258:	bf31                	j	e883f174 <fast_mp_montgomery_reduce+0xb6>
      *tmpx++ = 0;
    e883f25a:	66e6500b          	srd	zero,a2,a4,3
    for (; ix < olduse; ix++) {
    e883f25e:	0705                	addi	a4,a4,1
    e883f260:	b71d                	j	e883f186 <fast_mp_montgomery_reduce+0xc8>

00000000e883f262 <fast_s_mp_mul_digs>:
 *
 * Based on Algorithm 14.12 on pp.595 of HAC.
 *
 */
int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
{
    e883f262:	7179                	addi	sp,sp,-48
    e883f264:	ec22                	sd	s0,24(sp)
    e883f266:	f026                	sd	s1,32(sp)
    e883f268:	f406                	sd	ra,40(sp)
  int     olduse, res, pa, ix, iz;
  mp_digit W[MP_WARRAY];
  register mp_word  _W;

  /* grow the destination as required */
  if (c->alloc < digs) {
    e883f26a:	425c                	lw	a5,4(a2)
{
    e883f26c:	737d                	lui	t1,0xfffff
    e883f26e:	911a                	add	sp,sp,t1
    e883f270:	842a                	mv	s0,a0
    e883f272:	84ae                	mv	s1,a1
  if (c->alloc < digs) {
    e883f274:	06d7cd63          	blt	a5,a3,e883f2ee <fast_s_mp_mul_digs+0x8c>
      return res;
    }
  }

  /* number of output digits to produce */
  pa = MIN(digs, a->used + b->used);
    e883f278:	00042e83          	lw	t4,0(s0)
    e883f27c:	0004af03          	lw	t5,0(s1)
         _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--);

      }

      /* store term */
      W[ix] = ((mp_digit)_W) & MP_MASK;
    e883f280:	78fd                	lui	a7,0xfffff
  for (ix = 0; ix < pa; ix++) { 
    e883f282:	4501                	li	a0,0
  pa = MIN(digs, a->used + b->used);
    e883f284:	01ee873b          	addw	a4,t4,t5
    e883f288:	87ba                	mv	a5,a4
    e883f28a:	00e6a733          	slt	a4,a3,a4
    e883f28e:	42e6978b          	mvnez	a5,a3,a4
    e883f292:	0007881b          	sext.w	a6,a5
      W[ix] = ((mp_digit)_W) & MP_MASK;
    e883f296:	0818                	addi	a4,sp,16
    e883f298:	6785                	lui	a5,0x1
    e883f29a:	97ba                	add	a5,a5,a4
  _W = 0;
    e883f29c:	4581                	li	a1,0
         _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--);
    e883f29e:	5fe1                	li	t6,-8
      W[ix] = ((mp_digit)_W) & MP_MASK;
    e883f2a0:	98be                	add	a7,a7,a5
    e883f2a2:	0005071b          	sext.w	a4,a0
  for (ix = 0; ix < pa; ix++) { 
    e883f2a6:	07074463          	blt	a4,a6,e883f30e <fast_s_mp_mul_digs+0xac>
  {
    register mp_digit *tmpc;
    tmpc = c->dp;
    for (ix = 0; ix < pa+1; ix++) {
      /* now extract the previous digit [below the carry] */
      *tmpc++ = W[ix];
    e883f2aa:	6405                	lui	s0,0x1
    e883f2ac:	0804                	addi	s1,sp,16
    tmpc = c->dp;
    e883f2ae:	6a14                	ld	a3,16(a2)
      *tmpc++ = W[ix];
    e883f2b0:	75fd                	lui	a1,0xfffff
    e883f2b2:	9426                	add	s0,s0,s1
  olduse  = c->used;
    e883f2b4:	4208                	lw	a0,0(a2)
    for (ix = 0; ix < pa+1; ix++) {
    e883f2b6:	4701                	li	a4,0
  c->used = pa;
    e883f2b8:	01062023          	sw	a6,0(a2)
    for (ix = 0; ix < pa+1; ix++) {
    e883f2bc:	0018079b          	addiw	a5,a6,1
      *tmpc++ = W[ix];
    e883f2c0:	95a2                	add	a1,a1,s0
    for (ix = 0; ix < pa+1; ix++) {
    e883f2c2:	0007081b          	sext.w	a6,a4
    e883f2c6:	0af84663          	blt	a6,a5,e883f372 <fast_s_mp_mul_digs+0x110>
    e883f2ca:	873e                	mv	a4,a5
    e883f2cc:	0007d363          	bgez	a5,e883f2d2 <fast_s_mp_mul_digs+0x70>
    e883f2d0:	4701                	li	a4,0
    e883f2d2:	0007079b          	sext.w	a5,a4
    e883f2d6:	06f6968b          	addsl	a3,a3,a5,3
    e883f2da:	4701                	li	a4,0
    }

    /* clear unused digits [that existed in the old copy of c] */
    for (; ix < olduse; ix++) {
    e883f2dc:	00f705bb          	addw	a1,a4,a5
    e883f2e0:	08a5cf63          	blt	a1,a0,e883f37e <fast_s_mp_mul_digs+0x11c>
      *tmpc++ = 0;
    }
  }
  mp_clamp (c);
    e883f2e4:	8532                	mv	a0,a2
    e883f2e6:	4c8000ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e883f2ea:	4501                	li	a0,0
    e883f2ec:	a811                	j	e883f300 <fast_s_mp_mul_digs+0x9e>
    if ((res = mp_grow (c, digs)) != MP_OKAY) {
    e883f2ee:	85b6                	mv	a1,a3
    e883f2f0:	8532                	mv	a0,a2
    e883f2f2:	e436                	sd	a3,8(sp)
    e883f2f4:	e032                	sd	a2,0(sp)
    e883f2f6:	260010ef          	jal	ra,e8840556 <mp_grow>
    e883f2fa:	f8d1460b          	ldd	a2,a3,(sp),0,4
    e883f2fe:	dd2d                	beqz	a0,e883f278 <fast_s_mp_mul_digs+0x16>
}
    e883f300:	6305                	lui	t1,0x1
    e883f302:	911a                	add	sp,sp,t1
    e883f304:	70a2                	ld	ra,40(sp)
    e883f306:	6462                	ld	s0,24(sp)
    e883f308:	7482                	ld	s1,32(sp)
    e883f30a:	6145                	addi	sp,sp,48
    e883f30c:	8082                	ret
      ty = MIN(b->used-1, ix);
    e883f30e:	ffff069b          	addiw	a3,t5,-1
    e883f312:	87b6                	mv	a5,a3
    e883f314:	00d726b3          	slt	a3,a4,a3
    e883f318:	42d7178b          	mvnez	a5,a4,a3
      tmpx = a->dp + tx;
    e883f31c:	01043303          	ld	t1,16(s0) # 1010 <memcmp-0xe87feff0>
    e883f320:	40f70e3b          	subw	t3,a4,a5
      iy = MIN(a->used-tx, ty+1);
    e883f324:	40e7873b          	subw	a4,a5,a4
    e883f328:	01d706bb          	addw	a3,a4,t4
    e883f32c:	0017829b          	addiw	t0,a5,1
      tmpx = a->dp + tx;
    e883f330:	07c3130b          	addsl	t1,t1,t3,3
      tmpy = b->dp + ty;
    e883f334:	0104be03          	ld	t3,16(s1)
      iy = MIN(a->used-tx, ty+1);
    e883f338:	8736                	mv	a4,a3
    e883f33a:	00d2a6b3          	slt	a3,t0,a3
    e883f33e:	42d2970b          	mvnez	a4,t0,a3
      tmpy = b->dp + ty;
    e883f342:	06fe1e0b          	addsl	t3,t3,a5,3
      for (iz = 0; iz < iy; ++iz) {
    e883f346:	4681                	li	a3,0
    e883f348:	0006879b          	sext.w	a5,a3
    e883f34c:	00e7c963          	blt	a5,a4,e883f35e <fast_s_mp_mul_digs+0xfc>
      W[ix] = ((mp_digit)_W) & MP_MASK;
    e883f350:	6c05b78b          	extu	a5,a1,27,0
    e883f354:	66a8d78b          	srd	a5,a7,a0,3
      _W = _W >> ((mp_word)DIGIT_BIT);
    e883f358:	81f1                	srli	a1,a1,0x1c
  for (ix = 0; ix < pa; ix++) { 
    e883f35a:	0505                	addi	a0,a0,1
    e883f35c:	b799                	j	e883f2a2 <fast_s_mp_mul_digs+0x40>
         _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--);
    e883f35e:	03f687b3          	mul	a5,a3,t6
    e883f362:	60fe428b          	lrd	t0,t3,a5,0
    e883f366:	66d3478b          	lrd	a5,t1,a3,3
    e883f36a:	0685                	addi	a3,a3,1
    e883f36c:	20f2958b          	mula	a1,t0,a5
      for (iz = 0; iz < iy; ++iz) {
    e883f370:	bfe1                	j	e883f348 <fast_s_mp_mul_digs+0xe6>
      *tmpc++ = W[ix];
    e883f372:	66e5c80b          	lrd	a6,a1,a4,3
    e883f376:	66e6d80b          	srd	a6,a3,a4,3
    for (ix = 0; ix < pa+1; ix++) {
    e883f37a:	0705                	addi	a4,a4,1
    e883f37c:	b799                	j	e883f2c2 <fast_s_mp_mul_digs+0x60>
      *tmpc++ = 0;
    e883f37e:	66e6d00b          	srd	zero,a3,a4,3
    for (; ix < olduse; ix++) {
    e883f382:	0705                	addi	a4,a4,1
    e883f384:	bfa1                	j	e883f2dc <fast_s_mp_mul_digs+0x7a>

00000000e883f386 <fast_s_mp_mul_high_digs>:
 * only the higher digits were needed.  This essentially halves the work.
 *
 * Based on Algorithm 14.12 on pp.595 of HAC.
 */
int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
{
    e883f386:	7139                	addi	sp,sp,-64
    e883f388:	f026                	sd	s1,32(sp)
    e883f38a:	84ae                	mv	s1,a1
    e883f38c:	ec22                	sd	s0,24(sp)
    e883f38e:	fc06                	sd	ra,56(sp)
    e883f390:	f44a                	sd	s2,40(sp)
    e883f392:	f84e                	sd	s3,48(sp)
  int     olduse, res, pa, ix, iz;
  mp_digit W[MP_WARRAY];
  mp_word  _W;

  /* grow the destination as required */
  pa = a->used + b->used;
    e883f394:	409c                	lw	a5,0(s1)
    e883f396:	410c                	lw	a1,0(a0)
{
    e883f398:	737d                	lui	t1,0xfffff
    e883f39a:	911a                	add	sp,sp,t1
  pa = a->used + b->used;
    e883f39c:	9dbd                	addw	a1,a1,a5
  if (c->alloc < pa) {
    e883f39e:	425c                	lw	a5,4(a2)
{
    e883f3a0:	842a                	mv	s0,a0
  if (c->alloc < pa) {
    e883f3a2:	04b7cb63          	blt	a5,a1,e883f3f8 <fast_s_mp_mul_high_digs+0x72>
      return res;
    }
  }

  /* number of output digits to produce */
  pa = a->used + b->used;
    e883f3a6:	00042283          	lw	t0,0(s0)
    e883f3aa:	0004a383          	lw	t2,0(s1)
    e883f3ae:	6705                	lui	a4,0x1
    e883f3b0:	080c                	addi	a1,sp,16
    e883f3b2:	972e                	add	a4,a4,a1
    e883f3b4:	77fd                	lui	a5,0xfffff
    e883f3b6:	97ba                	add	a5,a5,a4
    e883f3b8:	00369f13          	slli	t5,a3,0x3
    e883f3bc:	00728ebb          	addw	t4,t0,t2
    e883f3c0:	01e78533          	add	a0,a5,t5
    e883f3c4:	8ff6                	mv	t6,t4
  _W = 0;
  for (ix = digs; ix < pa; ix++) { 
    e883f3c6:	e03e                	sd	a5,0(sp)
    e883f3c8:	80aa                	mv	ra,a0
    e883f3ca:	8736                	mv	a4,a3
  _W = 0;
    e883f3cc:	4801                	li	a6,0
       */
      iy = MIN(a->used-tx, ty+1);

      /* execute loop */
      for (iz = 0; iz < iy; iz++) {
         _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--);
    e883f3ce:	5961                	li	s2,-8
  for (ix = digs; ix < pa; ix++) { 
    e883f3d0:	05d74563          	blt	a4,t4,e883f41a <fast_s_mp_mul_high_digs+0x94>
  c->used = pa;

  {
    register mp_digit *tmpc;

    tmpc = c->dp + digs;
    e883f3d4:	6a1c                	ld	a5,16(a2)
  olduse  = c->used;
    e883f3d6:	00062803          	lw	a6,0(a2)
  c->used = pa;
    e883f3da:	01f62023          	sw	t6,0(a2)
    tmpc = c->dp + digs;
    e883f3de:	97fa                	add	a5,a5,t5
    for (ix = digs; ix < pa; ix++) {
    e883f3e0:	0bd6c363          	blt	a3,t4,e883f486 <fast_s_mp_mul_high_digs+0x100>
    e883f3e4:	4701                	li	a4,0
      /* now extract the previous digit [below the carry] */
      *tmpc++ = W[ix];
    }

    /* clear unused digits [that existed in the old copy of c] */
    for (; ix < olduse; ix++) {
    e883f3e6:	00e685bb          	addw	a1,a3,a4
    e883f3ea:	0b05c463          	blt	a1,a6,e883f492 <fast_s_mp_mul_high_digs+0x10c>
      *tmpc++ = 0;
    }
  }
  mp_clamp (c);
    e883f3ee:	8532                	mv	a0,a2
    e883f3f0:	3be000ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e883f3f4:	4501                	li	a0,0
    e883f3f6:	a809                	j	e883f408 <fast_s_mp_mul_high_digs+0x82>
    if ((res = mp_grow (c, pa)) != MP_OKAY) {
    e883f3f8:	8532                	mv	a0,a2
    e883f3fa:	e436                	sd	a3,8(sp)
    e883f3fc:	e032                	sd	a2,0(sp)
    e883f3fe:	158010ef          	jal	ra,e8840556 <mp_grow>
    e883f402:	f8d1460b          	ldd	a2,a3,(sp),0,4
    e883f406:	d145                	beqz	a0,e883f3a6 <fast_s_mp_mul_high_digs+0x20>
}
    e883f408:	6305                	lui	t1,0x1
    e883f40a:	911a                	add	sp,sp,t1
    e883f40c:	70e2                	ld	ra,56(sp)
    e883f40e:	6462                	ld	s0,24(sp)
    e883f410:	7482                	ld	s1,32(sp)
    e883f412:	7922                	ld	s2,40(sp)
    e883f414:	79c2                	ld	s3,48(sp)
    e883f416:	6121                	addi	sp,sp,64
    e883f418:	8082                	ret
      ty = MIN(b->used-1, ix);
    e883f41a:	fff3859b          	addiw	a1,t2,-1
    e883f41e:	87ae                	mv	a5,a1
    e883f420:	00b725b3          	slt	a1,a4,a1
    e883f424:	42b7178b          	mvnez	a5,a4,a1
      tmpx = a->dp + tx;
    e883f428:	01043303          	ld	t1,16(s0)
    e883f42c:	40f708bb          	subw	a7,a4,a5
      tmpy = b->dp + ty;
    e883f430:	0104be03          	ld	t3,16(s1)
      ty = MIN(b->used-1, ix);
    e883f434:	0007859b          	sext.w	a1,a5
      tmpx = a->dp + tx;
    e883f438:	0713130b          	addsl	t1,t1,a7,3
      iy = MIN(a->used-tx, ty+1);
    e883f43c:	40e788bb          	subw	a7,a5,a4
    e883f440:	0017899b          	addiw	s3,a5,1
      tmpy = b->dp + ty;
    e883f444:	06be1e0b          	addsl	t3,t3,a1,3
      iy = MIN(a->used-tx, ty+1);
    e883f448:	005885bb          	addw	a1,a7,t0
    e883f44c:	88ae                	mv	a7,a1
    e883f44e:	00b9a5b3          	slt	a1,s3,a1
    e883f452:	87ce                	mv	a5,s3
    e883f454:	40b8978b          	mveqz	a5,a7,a1
      for (iz = 0; iz < iy; iz++) {
    e883f458:	4581                	li	a1,0
    e883f45a:	0005889b          	sext.w	a7,a1
    e883f45e:	00f8ca63          	blt	a7,a5,e883f472 <fast_s_mp_mul_high_digs+0xec>
      W[ix] = ((mp_digit)_W) & MP_MASK;
    e883f462:	6c08378b          	extu	a5,a6,27,0
    e883f466:	7880d78b          	sdia	a5,(ra),8,0
      _W = _W >> ((mp_word)DIGIT_BIT);
    e883f46a:	01c85813          	srli	a6,a6,0x1c
  for (ix = digs; ix < pa; ix++) { 
    e883f46e:	2705                	addiw	a4,a4,1
    e883f470:	b785                	j	e883f3d0 <fast_s_mp_mul_high_digs+0x4a>
         _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--);
    e883f472:	032588b3          	mul	a7,a1,s2
    e883f476:	611e498b          	lrd	s3,t3,a7,0
    e883f47a:	66b3488b          	lrd	a7,t1,a1,3
    e883f47e:	0585                	addi	a1,a1,1
    e883f480:	2119980b          	mula	a6,s3,a7
      for (iz = 0; iz < iy; iz++) {
    e883f484:	bfd9                	j	e883f45a <fast_s_mp_mul_high_digs+0xd4>
      *tmpc++ = W[ix];
    e883f486:	7885470b          	ldia	a4,(a0),8,0
    for (ix = digs; ix < pa; ix++) {
    e883f48a:	2685                	addiw	a3,a3,1
      *tmpc++ = W[ix];
    e883f48c:	7887d70b          	sdia	a4,(a5),8,0
    for (ix = digs; ix < pa; ix++) {
    e883f490:	bf81                	j	e883f3e0 <fast_s_mp_mul_high_digs+0x5a>
      *tmpc++ = 0;
    e883f492:	66e7d00b          	srd	zero,a5,a4,3
    for (; ix < olduse; ix++) {
    e883f496:	0705                	addi	a4,a4,1
    e883f498:	b7b9                	j	e883f3e6 <fast_s_mp_mul_high_digs+0x60>

00000000e883f49a <fast_s_mp_sqr>:

After that loop you do the squares and add them in.
*/

int fast_s_mp_sqr (mp_int * a, mp_int * b)
{
    e883f49a:	7139                	addi	sp,sp,-64
    e883f49c:	f026                	sd	s1,32(sp)
    e883f49e:	f44a                	sd	s2,40(sp)
    e883f4a0:	f84e                	sd	s3,48(sp)
    e883f4a2:	fc06                	sd	ra,56(sp)
    e883f4a4:	ec22                	sd	s0,24(sp)
  int       olduse, res, pa, ix, iz;
  mp_digit   W[MP_WARRAY], *tmpx;
  mp_word   W1;

  /* grow the destination as required */
  pa = a->used + a->used;
    e883f4a6:	4100                	lw	s0,0(a0)
  if (b->alloc < pa) {
    e883f4a8:	41dc                	lw	a5,4(a1)
{
    e883f4aa:	737d                	lui	t1,0xfffff
    e883f4ac:	0341                	addi	t1,t1,16
  pa = a->used + a->used;
    e883f4ae:	0014191b          	slliw	s2,s0,0x1
{
    e883f4b2:	911a                	add	sp,sp,t1
    e883f4b4:	89aa                	mv	s3,a0
    e883f4b6:	84ae                	mv	s1,a1
  pa = a->used + a->used;
    e883f4b8:	844a                	mv	s0,s2
  if (b->alloc < pa) {
    e883f4ba:	0527ce63          	blt	a5,s2,e883f516 <fast_s_mp_sqr+0x7c>
    e883f4be:	0009a603          	lw	a2,0(s3)
      if ((ix&1) == 0) {
         _W += ((mp_word)a->dp[ix>>1])*((mp_word)a->dp[ix>>1]);
      }

      /* store it */
      W[ix] = (mp_digit)(_W & MP_MASK);
    e883f4c2:	6785                	lui	a5,0x1
    e883f4c4:	787d                	lui	a6,0xfffff
    e883f4c6:	978a                	add	a5,a5,sp
      ty = MIN(a->used-1, ix);
    e883f4c8:	fff60f1b          	addiw	t5,a2,-1
    e883f4cc:	4501                	li	a0,0
    e883f4ce:	4281                	li	t0,0
         _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--);
    e883f4d0:	5fe1                	li	t6,-8
      W[ix] = (mp_digit)(_W & MP_MASK);
    e883f4d2:	983e                	add	a6,a6,a5
    e883f4d4:	0005071b          	sext.w	a4,a0
  for (ix = 0; ix < pa; ix++) { 
    e883f4d8:	05274e63          	blt	a4,s2,e883f534 <fast_s_mp_sqr+0x9a>
      W1 = _W >> ((mp_word)DIGIT_BIT);
  }

  /* setup dest */
  olduse  = b->used;
  b->used = a->used+a->used;
    e883f4dc:	0016161b          	slliw	a2,a2,0x1
  olduse  = b->used;
    e883f4e0:	408c                	lw	a1,0(s1)

  {
    mp_digit *tmpb;
    tmpb = b->dp;
    e883f4e2:	6898                	ld	a4,16(s1)
  b->used = a->used+a->used;
    e883f4e4:	c090                	sw	a2,0(s1)
    for (ix = 0; ix < pa; ix++) {
      *tmpb++ = W[ix] & MP_MASK;
    e883f4e6:	6605                	lui	a2,0x1
    e883f4e8:	76fd                	lui	a3,0xfffff
    e883f4ea:	960a                	add	a2,a2,sp
    for (ix = 0; ix < pa; ix++) {
    e883f4ec:	4781                	li	a5,0
      *tmpb++ = W[ix] & MP_MASK;
    e883f4ee:	96b2                	add	a3,a3,a2
    for (ix = 0; ix < pa; ix++) {
    e883f4f0:	0007861b          	sext.w	a2,a5
    e883f4f4:	0d264663          	blt	a2,s2,e883f5c0 <fast_s_mp_sqr+0x126>
    e883f4f8:	00095363          	bgez	s2,e883f4fe <fast_s_mp_sqr+0x64>
    e883f4fc:	4401                	li	s0,0
    e883f4fe:	0687170b          	addsl	a4,a4,s0,3
    e883f502:	4781                	li	a5,0
    }

    /* clear unused digits [that existed in the old copy of c] */
    for (; ix < olduse; ix++) {
    e883f504:	008786bb          	addw	a3,a5,s0
    e883f508:	0cb6c463          	blt	a3,a1,e883f5d0 <fast_s_mp_sqr+0x136>
      *tmpb++ = 0;
    }
  }
  mp_clamp (b);
    e883f50c:	8526                	mv	a0,s1
    e883f50e:	2a0000ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e883f512:	4501                	li	a0,0
    e883f514:	a031                	j	e883f520 <fast_s_mp_sqr+0x86>
    if ((res = mp_grow (b, pa)) != MP_OKAY) {
    e883f516:	85ca                	mv	a1,s2
    e883f518:	8526                	mv	a0,s1
    e883f51a:	03c010ef          	jal	ra,e8840556 <mp_grow>
    e883f51e:	d145                	beqz	a0,e883f4be <fast_s_mp_sqr+0x24>
}
    e883f520:	6305                	lui	t1,0x1
    e883f522:	1341                	addi	t1,t1,-16
    e883f524:	911a                	add	sp,sp,t1
    e883f526:	70e2                	ld	ra,56(sp)
    e883f528:	6462                	ld	s0,24(sp)
    e883f52a:	7482                	ld	s1,32(sp)
    e883f52c:	7922                	ld	s2,40(sp)
    e883f52e:	79c2                	ld	s3,48(sp)
    e883f530:	6121                	addi	sp,sp,64
    e883f532:	8082                	ret
      ty = MIN(a->used-1, ix);
    e883f534:	01e726b3          	slt	a3,a4,t5
    e883f538:	87ba                	mv	a5,a4
    e883f53a:	40df178b          	mveqz	a5,t5,a3
    e883f53e:	8e3e                	mv	t3,a5
    e883f540:	86f2                	mv	a3,t3
      tmpx = a->dp + tx;
    e883f542:	9e99                	subw	a3,a3,a4
      iy = MIN(a->used-tx, ty+1);
    e883f544:	0017839b          	addiw	t2,a5,1
    e883f548:	00c68ebb          	addw	t4,a3,a2
    e883f54c:	85f6                	mv	a1,t4
    e883f54e:	01d3aeb3          	slt	t4,t2,t4
    e883f552:	43d3958b          	mvnez	a1,t2,t4
      tmpx = a->dp + tx;
    e883f556:	40f7033b          	subw	t1,a4,a5
      iy = MIN(iy, (ty-tx+1)>>1);
    e883f55a:	00d387bb          	addw	a5,t2,a3
      tmpx = a->dp + tx;
    e883f55e:	0109b883          	ld	a7,16(s3)
      iy = MIN(iy, (ty-tx+1)>>1);
    e883f562:	4017d69b          	sraiw	a3,a5,0x1
    e883f566:	00058e9b          	sext.w	t4,a1
    e883f56a:	87b6                	mv	a5,a3
    e883f56c:	00dea6b3          	slt	a3,t4,a3
    e883f570:	42d5978b          	mvnez	a5,a1,a3
      tmpx = a->dp + tx;
    e883f574:	0668930b          	addsl	t1,a7,t1,3
      tmpy = a->dp + ty;
    e883f578:	07c89e0b          	addsl	t3,a7,t3,3
      for (iz = 0; iz < iy; iz++) {
    e883f57c:	4581                	li	a1,0
      _W = 0;
    e883f57e:	4681                	li	a3,0
      for (iz = 0; iz < iy; iz++) {
    e883f580:	00058e9b          	sext.w	t4,a1
    e883f584:	02fec463          	blt	t4,a5,e883f5ac <fast_s_mp_sqr+0x112>
      _W = _W + _W + W1;
    e883f588:	02d2978b          	addsl	a5,t0,a3,1
      if ((ix&1) == 0) {
    e883f58c:	00177693          	andi	a3,a4,1
    e883f590:	e691                	bnez	a3,e883f59c <fast_s_mp_sqr+0x102>
         _W += ((mp_word)a->dp[ix>>1])*((mp_word)a->dp[ix>>1]);
    e883f592:	8705                	srai	a4,a4,0x1
    e883f594:	66e8c70b          	lrd	a4,a7,a4,3
    e883f598:	20e7178b          	mula	a5,a4,a4
      W[ix] = (mp_digit)(_W & MP_MASK);
    e883f59c:	6c07b70b          	extu	a4,a5,27,0
    e883f5a0:	66a8570b          	srd	a4,a6,a0,3
      W1 = _W >> ((mp_word)DIGIT_BIT);
    e883f5a4:	01c7d293          	srli	t0,a5,0x1c
  for (ix = 0; ix < pa; ix++) { 
    e883f5a8:	0505                	addi	a0,a0,1
    e883f5aa:	b72d                	j	e883f4d4 <fast_s_mp_sqr+0x3a>
         _W += ((mp_word)*tmpx++)*((mp_word)*tmpy--);
    e883f5ac:	03f58eb3          	mul	t4,a1,t6
    e883f5b0:	61de438b          	lrd	t2,t3,t4,0
    e883f5b4:	66b34e8b          	lrd	t4,t1,a1,3
    e883f5b8:	0585                	addi	a1,a1,1
    e883f5ba:	21d3968b          	mula	a3,t2,t4
      for (iz = 0; iz < iy; iz++) {
    e883f5be:	b7c9                	j	e883f580 <fast_s_mp_sqr+0xe6>
      *tmpb++ = W[ix] & MP_MASK;
    e883f5c0:	66f6c60b          	lrd	a2,a3,a5,3
    e883f5c4:	6c06360b          	extu	a2,a2,27,0
    e883f5c8:	66f7560b          	srd	a2,a4,a5,3
    for (ix = 0; ix < pa; ix++) {
    e883f5cc:	0785                	addi	a5,a5,1
    e883f5ce:	b70d                	j	e883f4f0 <fast_s_mp_sqr+0x56>
      *tmpb++ = 0;
    e883f5d0:	66f7500b          	srd	zero,a4,a5,3
    for (; ix < olduse; ix++) {
    e883f5d4:	0785                	addi	a5,a5,1
    e883f5d6:	b73d                	j	e883f504 <fast_s_mp_sqr+0x6a>

00000000e883f5d8 <mp_2expt>:
 * Simple algorithm which zeroes the int, grows it then just sets one bit
 * as required.
 */
int
mp_2expt (mp_int * a, int b)
{
    e883f5d8:	7179                	addi	sp,sp,-48
    e883f5da:	f891540b          	sdd	s0,s1,(sp),0,4
    e883f5de:	fb31590b          	sdd	s2,s3,(sp),1,4
    e883f5e2:	84ae                	mv	s1,a1

  /* zero a as per default */
  mp_zero (a);

  /* grow a to accomodate the single bit */
  if ((res = mp_grow (a, b / DIGIT_BIT + 1)) != MP_OKAY) {
    e883f5e4:	49f1                	li	s3,28
{
    e883f5e6:	f052                	sd	s4,32(sp)
    e883f5e8:	f406                	sd	ra,40(sp)
    e883f5ea:	892a                	mv	s2,a0
  mp_zero (a);
    e883f5ec:	315020ef          	jal	ra,e8842100 <mp_zero>
  if ((res = mp_grow (a, b / DIGIT_BIT + 1)) != MP_OKAY) {
    e883f5f0:	0334ca3b          	divw	s4,s1,s3
    e883f5f4:	854a                	mv	a0,s2
    e883f5f6:	001a059b          	addiw	a1,s4,1
    e883f5fa:	842e                	mv	s0,a1
    e883f5fc:	75b000ef          	jal	ra,e8840556 <mp_grow>
    e883f600:	ed01                	bnez	a0,e883f618 <mp_2expt+0x40>

  /* set the used count of where the bit will go */
  a->used = b / DIGIT_BIT + 1;

  /* put the single bit in its place */
  a->dp[b / DIGIT_BIT] = ((mp_digit)1) << (b % DIGIT_BIT);
    e883f602:	0334e4bb          	remw	s1,s1,s3
    e883f606:	01093703          	ld	a4,16(s2)
  a->used = b / DIGIT_BIT + 1;
    e883f60a:	00892023          	sw	s0,0(s2)
  a->dp[b / DIGIT_BIT] = ((mp_digit)1) << (b % DIGIT_BIT);
    e883f60e:	4785                	li	a5,1
    e883f610:	009794b3          	sll	s1,a5,s1
    e883f614:	6747548b          	srd	s1,a4,s4,3

  return MP_OKAY;
}
    e883f618:	70a2                	ld	ra,40(sp)
    e883f61a:	f891440b          	ldd	s0,s1,(sp),0,4
    e883f61e:	7a02                	ld	s4,32(sp)
    e883f620:	fb31490b          	ldd	s2,s3,(sp),1,4
    e883f624:	6145                	addi	sp,sp,48
    e883f626:	8082                	ret

00000000e883f628 <mp_abs>:
 *
 * Simple function copies the input and fixes the sign to positive
 */
int
mp_abs (mp_int * a, mp_int * b)
{
    e883f628:	1141                	addi	sp,sp,-16
    e883f62a:	e022                	sd	s0,0(sp)
    e883f62c:	e406                	sd	ra,8(sp)
    e883f62e:	842e                	mv	s0,a1
  int     res;

  /* copy a to b */
  if (a != b) {
    e883f630:	00a59963          	bne	a1,a0,e883f642 <mp_abs+0x1a>
       return res;
     }
  }

  /* force the sign of b to positive */
  b->sign = MP_ZPOS;
    e883f634:	00042423          	sw	zero,8(s0)

  return MP_OKAY;
    e883f638:	4501                	li	a0,0
}
    e883f63a:	60a2                	ld	ra,8(sp)
    e883f63c:	6402                	ld	s0,0(sp)
    e883f63e:	0141                	addi	sp,sp,16
    e883f640:	8082                	ret
     if ((res = mp_copy (a, b)) != MP_OKAY) {
    e883f642:	28e000ef          	jal	ra,e883f8d0 <mp_copy>
    e883f646:	d57d                	beqz	a0,e883f634 <mp_abs+0xc>
    e883f648:	bfcd                	j	e883f63a <mp_abs+0x12>

00000000e883f64a <mp_add>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* high level addition (handles signs) */
int mp_add (mp_int * a, mp_int * b, mp_int * c)
{
    e883f64a:	7139                	addi	sp,sp,-64
    e883f64c:	fc06                	sd	ra,56(sp)
    e883f64e:	ec22                	sd	s0,24(sp)
    e883f650:	f026                	sd	s1,32(sp)
    e883f652:	f44a                	sd	s2,40(sp)
    e883f654:	f84e                	sd	s3,48(sp)
  int     sa, sb, res;

  /* get sign of both inputs */
  sa = a->sign;
    e883f656:	00852903          	lw	s2,8(a0)
  sb = b->sign;
    e883f65a:	0085a983          	lw	s3,8(a1) # fffffffffffff008 <__DRAM0_INF_BASE+0xffffffff0000f008>

  /* handle two cases, not four */
  if (sa == sb) {
    e883f65e:	01391c63          	bne	s2,s3,e883f676 <mp_add+0x2c>
    /* both positive or both negative */
    /* add their magnitudes, copy the sign */
    c->sign = sa;
    e883f662:	01262423          	sw	s2,8(a2) # 1008 <memcmp-0xe87feff8>
      c->sign = sa;
      res = s_mp_sub (a, b, c);
    }
  }
  return res;
}
    e883f666:	6462                	ld	s0,24(sp)
    e883f668:	70e2                	ld	ra,56(sp)
    e883f66a:	7482                	ld	s1,32(sp)
    e883f66c:	7922                	ld	s2,40(sp)
    e883f66e:	79c2                	ld	s3,48(sp)
    e883f670:	6121                	addi	sp,sp,64
    res = s_mp_add (a, b, c);
    e883f672:	2cf0206f          	j	e8842140 <s_mp_add>
    e883f676:	e432                	sd	a2,8(sp)
    if (mp_cmp_mag (a, b) == MP_LT) {
    e883f678:	842a                	mv	s0,a0
    e883f67a:	84ae                	mv	s1,a1
    e883f67c:	208000ef          	jal	ra,e883f884 <mp_cmp_mag>
    e883f680:	57fd                	li	a5,-1
    e883f682:	6622                	ld	a2,8(sp)
    e883f684:	00f51e63          	bne	a0,a5,e883f6a0 <mp_add+0x56>
      c->sign = sb;
    e883f688:	01362423          	sw	s3,8(a2)
      res = s_mp_sub (b, a, c);
    e883f68c:	85a2                	mv	a1,s0
    e883f68e:	8526                	mv	a0,s1
}
    e883f690:	6462                	ld	s0,24(sp)
    e883f692:	70e2                	ld	ra,56(sp)
    e883f694:	7482                	ld	s1,32(sp)
    e883f696:	7922                	ld	s2,40(sp)
    e883f698:	79c2                	ld	s3,48(sp)
    e883f69a:	6121                	addi	sp,sp,64
      res = s_mp_sub (a, b, c);
    e883f69c:	2740306f          	j	e8842910 <s_mp_sub>
      c->sign = sa;
    e883f6a0:	01262423          	sw	s2,8(a2)
      res = s_mp_sub (a, b, c);
    e883f6a4:	85a6                	mv	a1,s1
    e883f6a6:	8522                	mv	a0,s0
    e883f6a8:	b7e5                	j	e883f690 <mp_add+0x46>

00000000e883f6aa <mp_add_d>:
 */

/* single digit addition */
int
mp_add_d (mp_int * a, mp_digit b, mp_int * c)
{
    e883f6aa:	7179                	addi	sp,sp,-48
    e883f6ac:	e422                	sd	s0,8(sp)
    e883f6ae:	e826                	sd	s1,16(sp)
    e883f6b0:	ec4a                	sd	s2,24(sp)
    e883f6b2:	f406                	sd	ra,40(sp)
    e883f6b4:	f04e                	sd	s3,32(sp)
    e883f6b6:	84ae                	mv	s1,a1
  int     res, ix, oldused;
  mp_digit *tmpa, *tmpc, mu;

  /* grow c as required */
  if (c->alloc < a->used + 1) {
    e883f6b8:	410c                	lw	a1,0(a0)
    e883f6ba:	425c                	lw	a5,4(a2)
{
    e883f6bc:	842a                	mv	s0,a0
  if (c->alloc < a->used + 1) {
    e883f6be:	2585                	addiw	a1,a1,1
{
    e883f6c0:	8932                	mv	s2,a2
  if (c->alloc < a->used + 1) {
    e883f6c2:	02b7cd63          	blt	a5,a1,e883f6fc <mp_add_d+0x52>
        return res;
     }
  }

  /* if a is negative and |a| >= b, call c = |a| - b */
  if (a->sign == MP_NEG && (a->used > 1 || a->dp[0] >= b)) {
    e883f6c6:	441c                	lw	a5,8(s0)
    e883f6c8:	4705                	li	a4,1
    e883f6ca:	04e79663          	bne	a5,a4,e883f716 <mp_add_d+0x6c>
    e883f6ce:	4018                	lw	a4,0(s0)
    e883f6d0:	00e7c663          	blt	a5,a4,e883f6dc <mp_add_d+0x32>
    e883f6d4:	681c                	ld	a5,16(s0)
    e883f6d6:	639c                	ld	a5,0(a5)
    e883f6d8:	0297ef63          	bltu	a5,s1,e883f716 <mp_add_d+0x6c>
     /* temporarily fix sign of a */
     a->sign = MP_ZPOS;
    e883f6dc:	00042423          	sw	zero,8(s0)

     /* c = |a| - b */
     res = mp_sub_d(a, b, c);
    e883f6e0:	864a                	mv	a2,s2
    e883f6e2:	85a6                	mv	a1,s1
    e883f6e4:	8522                	mv	a0,s0
    e883f6e6:	13e020ef          	jal	ra,e8841824 <mp_sub_d>
    e883f6ea:	89aa                	mv	s3,a0

     /* fix sign  */
     a->sign = c->sign = MP_NEG;
    e883f6ec:	4785                	li	a5,1
    e883f6ee:	00f92423          	sw	a5,8(s2)

     /* clamp */
     mp_clamp(c);
    e883f6f2:	854a                	mv	a0,s2
     a->sign = c->sign = MP_NEG;
    e883f6f4:	c41c                	sw	a5,8(s0)
     mp_clamp(c);
    e883f6f6:	0b8000ef          	jal	ra,e883f7ae <mp_clamp>

     return res;
    e883f6fa:	a031                	j	e883f706 <mp_add_d+0x5c>
     if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) {
    e883f6fc:	8532                	mv	a0,a2
    e883f6fe:	659000ef          	jal	ra,e8840556 <mp_grow>
    e883f702:	89aa                	mv	s3,a0
    e883f704:	d169                	beqz	a0,e883f6c6 <mp_add_d+0x1c>
     *tmpc++ = 0;
  }
  mp_clamp(c);

  return MP_OKAY;
}
    e883f706:	70a2                	ld	ra,40(sp)
    e883f708:	6422                	ld	s0,8(sp)
    e883f70a:	854e                	mv	a0,s3
    e883f70c:	64c2                	ld	s1,16(sp)
    e883f70e:	6962                	ld	s2,24(sp)
    e883f710:	7982                	ld	s3,32(sp)
    e883f712:	6145                	addi	sp,sp,48
    e883f714:	8082                	ret
  c->sign = MP_ZPOS;
    e883f716:	00092423          	sw	zero,8(s2)
  tmpc    = c->dp;
    e883f71a:	01093703          	ld	a4,16(s2)
  if (a->sign == MP_ZPOS) {
    e883f71e:	4414                	lw	a3,8(s0)
  oldused = c->used;
    e883f720:	00092803          	lw	a6,0(s2)
  if (a->sign == MP_ZPOS) {
    e883f724:	00870793          	addi	a5,a4,8 # 1008 <memcmp-0xe87feff8>
    e883f728:	e2a5                	bnez	a3,e883f788 <mp_add_d+0xde>
  tmpa    = a->dp;
    e883f72a:	6808                	ld	a0,16(s0)
     *tmpc   = *tmpa++ + b;
    e883f72c:	6114                	ld	a3,0(a0)
    e883f72e:	94b6                	add	s1,s1,a3
     mu      = *tmpc >> DIGIT_BIT;
    e883f730:	01c4d593          	srli	a1,s1,0x1c
     *tmpc++ &= MP_MASK;
    e883f734:	6c04b48b          	extu	s1,s1,27,0
    e883f738:	e304                	sd	s1,0(a4)
     for (ix = 1; ix < a->used; ix++) {
    e883f73a:	4701                	li	a4,0
    e883f73c:	00042303          	lw	t1,0(s0)
    e883f740:	0027069b          	addiw	a3,a4,2
    e883f744:	0705                	addi	a4,a4,1
    e883f746:	0007089b          	sext.w	a7,a4
    e883f74a:	00878613          	addi	a2,a5,8 # 1008 <memcmp-0xe87feff8>
    e883f74e:	0268c263          	blt	a7,t1,e883f772 <mp_add_d+0xc8>
     *tmpc++  = mu;
    e883f752:	e38c                	sd	a1,0(a5)
     c->used = a->used + 1;
    e883f754:	401c                	lw	a5,0(s0)
    e883f756:	2785                	addiw	a5,a5,1
    e883f758:	00f92023          	sw	a5,0(s2)
    e883f75c:	87b2                	mv	a5,a2
    e883f75e:	4701                	li	a4,0
  while (ix++ < oldused) {
    e883f760:	00d7063b          	addw	a2,a4,a3
    e883f764:	05064163          	blt	a2,a6,e883f7a6 <mp_add_d+0xfc>
  mp_clamp(c);
    e883f768:	854a                	mv	a0,s2
    e883f76a:	044000ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e883f76e:	4981                	li	s3,0
    e883f770:	bf59                	j	e883f706 <mp_add_d+0x5c>
        *tmpc   = *tmpa++ + mu;
    e883f772:	66e5478b          	lrd	a5,a0,a4,3
    e883f776:	97ae                	add	a5,a5,a1
        mu      = *tmpc >> DIGIT_BIT;
    e883f778:	01c7d593          	srli	a1,a5,0x1c
        *tmpc++ &= MP_MASK;
    e883f77c:	6c07b78b          	extu	a5,a5,27,0
    e883f780:	fef63c23          	sd	a5,-8(a2)
    e883f784:	87b2                	mv	a5,a2
    e883f786:	bf5d                	j	e883f73c <mp_add_d+0x92>
     c->used  = 1;
    e883f788:	4685                	li	a3,1
    e883f78a:	00d92023          	sw	a3,0(s2)
     if (a->used == 1) {
    e883f78e:	4014                	lw	a3,0(s0)
    e883f790:	4605                	li	a2,1
    e883f792:	00c69763          	bne	a3,a2,e883f7a0 <mp_add_d+0xf6>
        *tmpc++  =  b - a->dp[0];
    e883f796:	6810                	ld	a2,16(s0)
    e883f798:	6210                	ld	a2,0(a2)
    e883f79a:	8c91                	sub	s1,s1,a2
    e883f79c:	e304                	sd	s1,0(a4)
    e883f79e:	b7c1                	j	e883f75e <mp_add_d+0xb4>
        *tmpc++  =  b;
    e883f7a0:	e304                	sd	s1,0(a4)
     ix       = 1;
    e883f7a2:	4685                	li	a3,1
    e883f7a4:	bf6d                	j	e883f75e <mp_add_d+0xb4>
     *tmpc++ = 0;
    e883f7a6:	66e7d00b          	srd	zero,a5,a4,3
    e883f7aa:	0705                	addi	a4,a4,1
    e883f7ac:	bf55                	j	e883f760 <mp_add_d+0xb6>

00000000e883f7ae <mp_clamp>:
mp_clamp (mp_int * a)
{
  /* decrease used while the most significant digit is
   * zero.
   */
  while (a->used > 0 && a->dp[a->used - 1] == 0) {
    e883f7ae:	411c                	lw	a5,0(a0)
    e883f7b0:	00f05c63          	blez	a5,e883f7c8 <mp_clamp+0x1a>
    e883f7b4:	6918                	ld	a4,16(a0)
    e883f7b6:	06f7170b          	addsl	a4,a4,a5,3
    e883f7ba:	ff873703          	ld	a4,-8(a4)
    e883f7be:	c311                	beqz	a4,e883f7c2 <mp_clamp+0x14>
    e883f7c0:	8082                	ret
    --(a->used);
    e883f7c2:	37fd                	addiw	a5,a5,-1
    e883f7c4:	c11c                	sw	a5,0(a0)
    e883f7c6:	b7e5                	j	e883f7ae <mp_clamp>
  }

  /* reset the sign flag if used == 0 */
  if (a->used == 0) {
    e883f7c8:	e399                	bnez	a5,e883f7ce <mp_clamp+0x20>
    a->sign = MP_ZPOS;
    e883f7ca:	00052423          	sw	zero,8(a0)
  }
}
    e883f7ce:	8082                	ret

00000000e883f7d0 <mp_clear>:
mp_clear (mp_int * a)
{
  int i;

  /* only do anything if a hasn't been freed previously */
  if (a->dp != NULL) {
    e883f7d0:	6918                	ld	a4,16(a0)
    e883f7d2:	e71d                	bnez	a4,e883f800 <mp_clear+0x30>
    e883f7d4:	8082                	ret
    /* first zero the digits */
    for (i = 0; i < a->used; i++) {
        a->dp[i] = 0;
    e883f7d6:	66f7500b          	srd	zero,a4,a5,3
    for (i = 0; i < a->used; i++) {
    e883f7da:	2785                	addiw	a5,a5,1
    e883f7dc:	4114                	lw	a3,0(a0)
    e883f7de:	6918                	ld	a4,16(a0)
    e883f7e0:	fed7cbe3          	blt	a5,a3,e883f7d6 <mp_clear+0x6>
    e883f7e4:	842a                	mv	s0,a0
    }

    /* free ram */
    XFREE(a->dp);
    e883f7e6:	853a                	mv	a0,a4
    e883f7e8:	3193c0ef          	jal	ra,e887c300 <eLIBs_free>

    /* reset members to make debugging easier */
    a->dp    = NULL;
    e883f7ec:	00043823          	sd	zero,16(s0)
    a->alloc = a->used = 0;
    e883f7f0:	00043023          	sd	zero,0(s0)
    a->sign  = MP_ZPOS;
    e883f7f4:	00042423          	sw	zero,8(s0)
  }
}
    e883f7f8:	60a2                	ld	ra,8(sp)
    e883f7fa:	6402                	ld	s0,0(sp)
    e883f7fc:	0141                	addi	sp,sp,16
    e883f7fe:	8082                	ret
{
    e883f800:	1141                	addi	sp,sp,-16
    e883f802:	e406                	sd	ra,8(sp)
    e883f804:	e022                	sd	s0,0(sp)
    e883f806:	4781                	li	a5,0
    e883f808:	bfd1                	j	e883f7dc <mp_clear+0xc>

00000000e883f80a <mp_clear_multi>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */
//#include <stdarg.h>

void mp_clear_multi(mp_int *mp, ...) 
{
    e883f80a:	711d                	addi	sp,sp,-96
    e883f80c:	e4be                	sd	a5,72(sp)
    mp_int* next_mp = mp;
    va_list args;
    va_start(args, mp);
    e883f80e:	103c                	addi	a5,sp,40
{
    e883f810:	ec06                	sd	ra,24(sp)
    e883f812:	f42e                	sd	a1,40(sp)
    e883f814:	fed1560b          	sdd	a2,a3,(sp),3,4
    e883f818:	e0ba                	sd	a4,64(sp)
    e883f81a:	e8c2                	sd	a6,80(sp)
    e883f81c:	ecc6                	sd	a7,88(sp)
    va_start(args, mp);
    e883f81e:	e43e                	sd	a5,8(sp)
    while (next_mp != NULL) {
    e883f820:	e501                	bnez	a0,e883f828 <mp_clear_multi+0x1e>
        mp_clear(next_mp);
        next_mp = va_arg(args, mp_int*);
    }
    va_end(args);
}
    e883f822:	60e2                	ld	ra,24(sp)
    e883f824:	6125                	addi	sp,sp,96
    e883f826:	8082                	ret
        mp_clear(next_mp);
    e883f828:	fa9ff0ef          	jal	ra,e883f7d0 <mp_clear>
        next_mp = va_arg(args, mp_int*);
    e883f82c:	67a2                	ld	a5,8(sp)
    e883f82e:	00878713          	addi	a4,a5,8
    e883f832:	e43a                	sd	a4,8(sp)
    e883f834:	6388                	ld	a0,0(a5)
    e883f836:	b7ed                	j	e883f820 <mp_clear_multi+0x16>

00000000e883f838 <mp_cmp>:
/* compare two ints (signed)*/
int
mp_cmp (mp_int * a, mp_int * b)
{
  /* compare based on sign */
  if (a->sign != b->sign) {
    e883f838:	4510                	lw	a2,8(a0)
    e883f83a:	4594                	lw	a3,8(a1)
{
    e883f83c:	87ae                	mv	a5,a1
  if (a->sign != b->sign) {
    e883f83e:	00c68863          	beq	a3,a2,e883f84e <mp_cmp+0x16>
     if (a->sign == MP_NEG) {
    e883f842:	4785                	li	a5,1
        return MP_LT;
    e883f844:	557d                	li	a0,-1
     if (a->sign == MP_NEG) {
    e883f846:	00f60b63          	beq	a2,a5,e883f85c <mp_cmp+0x24>
     } else {
        return MP_GT;
    e883f84a:	4505                	li	a0,1
    e883f84c:	8082                	ret
     }
  }
  
  /* compare digits */
  if (a->sign == MP_NEG) {
    e883f84e:	4605                	li	a2,1
    e883f850:	00c69463          	bne	a3,a2,e883f858 <mp_cmp+0x20>
     /* if negative compare opposite direction */
     return mp_cmp_mag(b, a);
    e883f854:	85aa                	mv	a1,a0
    e883f856:	853e                	mv	a0,a5
  } else {
     return mp_cmp_mag(a, b);
    e883f858:	02c0006f          	j	e883f884 <mp_cmp_mag>
  }
}
    e883f85c:	8082                	ret

00000000e883f85e <mp_cmp_d>:

/* compare a digit */
int mp_cmp_d(mp_int * a, mp_digit b)
{
  /* compare based on sign */
  if (a->sign == MP_NEG) {
    e883f85e:	4518                	lw	a4,8(a0)
    e883f860:	4785                	li	a5,1
    e883f862:	00f70f63          	beq	a4,a5,e883f880 <mp_cmp_d+0x22>
    return MP_LT;
  }

  /* compare based on magnitude */
  if (a->used > 1) {
    e883f866:	4118                	lw	a4,0(a0)
    e883f868:	00e7ca63          	blt	a5,a4,e883f87c <mp_cmp_d+0x1e>
    return MP_GT;
  }

  /* compare the only digit of a to b */
  if (a->dp[0] > b) {
    e883f86c:	6918                	ld	a4,16(a0)
    e883f86e:	6308                	ld	a0,0(a4)
    e883f870:	00a5e663          	bltu	a1,a0,e883f87c <mp_cmp_d+0x1e>
    return MP_GT;
  } else if (a->dp[0] < b) {
    e883f874:	00b53533          	sltu	a0,a0,a1
    e883f878:	40a007b3          	neg	a5,a0
    return MP_LT;
  } else {
    return MP_EQ;
  }
}
    e883f87c:	853e                	mv	a0,a5
    e883f87e:	8082                	ret
    return MP_LT;
    e883f880:	57fd                	li	a5,-1
    e883f882:	bfed                	j	e883f87c <mp_cmp_d+0x1e>

00000000e883f884 <mp_cmp_mag>:
{
  int     n;
  mp_digit *tmpa, *tmpb;

  /* compare based on # of non-zero digits */
  if (a->used > b->used) {
    e883f884:	4118                	lw	a4,0(a0)
    e883f886:	4194                	lw	a3,0(a1)
    e883f888:	04e6c263          	blt	a3,a4,e883f8cc <mp_cmp_mag+0x48>
    return MP_GT;
  }
  
  if (a->used < b->used) {
    return MP_LT;
    e883f88c:	57fd                	li	a5,-1
  if (a->used < b->used) {
    e883f88e:	02d74063          	blt	a4,a3,e883f8ae <mp_cmp_mag+0x2a>
  }

  /* alias for a */
  tmpa = a->dp + (a->used - 1);
    e883f892:	00371793          	slli	a5,a4,0x3
    e883f896:	6914                	ld	a3,16(a0)

  /* alias for b */
  tmpb = b->dp + (a->used - 1);
    e883f898:	6990                	ld	a2,16(a1)
  tmpa = a->dp + (a->used - 1);
    e883f89a:	17e1                	addi	a5,a5,-8
    e883f89c:	96be                	add	a3,a3,a5
  tmpb = b->dp + (a->used - 1);
    e883f89e:	963e                	add	a2,a2,a5

  /* compare based on digits  */
  for (n = 0; n < a->used; ++n, --tmpa, --tmpb) {
    e883f8a0:	5861                	li	a6,-8
    e883f8a2:	4781                	li	a5,0
    e883f8a4:	0007859b          	sext.w	a1,a5
    e883f8a8:	00e5c563          	blt	a1,a4,e883f8b2 <mp_cmp_mag+0x2e>

    if (*tmpa < *tmpb) {
      return MP_LT;
    }
  }
  return MP_EQ;
    e883f8ac:	4781                	li	a5,0
}
    e883f8ae:	853e                	mv	a0,a5
    e883f8b0:	8082                	ret
    if (*tmpa > *tmpb) {
    e883f8b2:	030785b3          	mul	a1,a5,a6
    e883f8b6:	60b6c50b          	lrd	a0,a3,a1,0
    e883f8ba:	60b6458b          	lrd	a1,a2,a1,0
    e883f8be:	00a5e763          	bltu	a1,a0,e883f8cc <mp_cmp_mag+0x48>
    if (*tmpa < *tmpb) {
    e883f8c2:	0785                	addi	a5,a5,1
    e883f8c4:	feb570e3          	bgeu	a0,a1,e883f8a4 <mp_cmp_mag+0x20>
    return MP_LT;
    e883f8c8:	57fd                	li	a5,-1
    e883f8ca:	b7d5                	j	e883f8ae <mp_cmp_mag+0x2a>
    return MP_GT;
    e883f8cc:	4785                	li	a5,1
    e883f8ce:	b7c5                	j	e883f8ae <mp_cmp_mag+0x2a>

00000000e883f8d0 <mp_copy>:
mp_copy (mp_int * a, mp_int * b)
{
  int     res, n;

  /* if dst == src do nothing */
  if (a == b) {
    e883f8d0:	06b50563          	beq	a0,a1,e883f93a <mp_copy+0x6a>
{
    e883f8d4:	1101                	addi	sp,sp,-32
    e883f8d6:	e422                	sd	s0,8(sp)
    e883f8d8:	842e                	mv	s0,a1
    e883f8da:	e826                	sd	s1,16(sp)
    e883f8dc:	ec06                	sd	ra,24(sp)
    return MP_OKAY;
  }

  /* grow dest */
  if (b->alloc < a->used) {
    e883f8de:	410c                	lw	a1,0(a0)
    e883f8e0:	405c                	lw	a5,4(s0)
    e883f8e2:	84aa                	mv	s1,a0
    e883f8e4:	02b7c863          	blt	a5,a1,e883f914 <mp_copy+0x44>
    register mp_digit *tmpa, *tmpb;

    /* pointer aliases */

    /* source */
    tmpa = a->dp;
    e883f8e8:	6888                	ld	a0,16(s1)

    /* destination */
    tmpb = b->dp;
    e883f8ea:	6818                	ld	a4,16(s0)

    /* copy all the digits */
    for (n = 0; n < a->used; n++) {
    e883f8ec:	4781                	li	a5,0
    e883f8ee:	4090                	lw	a2,0(s1)
    e883f8f0:	0007869b          	sext.w	a3,a5
    e883f8f4:	06f7158b          	addsl	a1,a4,a5,3
    e883f8f8:	02c6c763          	blt	a3,a2,e883f926 <mp_copy+0x56>
    e883f8fc:	4701                	li	a4,0
      *tmpb++ = *tmpa++;
    }

    /* clear high digits */
    for (; n < b->used; n++) {
    e883f8fe:	4010                	lw	a2,0(s0)
    e883f900:	00f706bb          	addw	a3,a4,a5
    e883f904:	02c6c763          	blt	a3,a2,e883f932 <mp_copy+0x62>
      *tmpb++ = 0;
    }
  }

  /* copy used count and sign */
  b->used = a->used;
    e883f908:	409c                	lw	a5,0(s1)
  b->sign = a->sign;
  return MP_OKAY;
    e883f90a:	4501                	li	a0,0
  b->used = a->used;
    e883f90c:	c01c                	sw	a5,0(s0)
  b->sign = a->sign;
    e883f90e:	449c                	lw	a5,8(s1)
    e883f910:	c41c                	sw	a5,8(s0)
  return MP_OKAY;
    e883f912:	a029                	j	e883f91c <mp_copy+0x4c>
     if ((res = mp_grow (b, a->used)) != MP_OKAY) {
    e883f914:	8522                	mv	a0,s0
    e883f916:	441000ef          	jal	ra,e8840556 <mp_grow>
    e883f91a:	d579                	beqz	a0,e883f8e8 <mp_copy+0x18>
}
    e883f91c:	60e2                	ld	ra,24(sp)
    e883f91e:	6422                	ld	s0,8(sp)
    e883f920:	64c2                	ld	s1,16(sp)
    e883f922:	6105                	addi	sp,sp,32
    e883f924:	8082                	ret
      *tmpb++ = *tmpa++;
    e883f926:	66f5468b          	lrd	a3,a0,a5,3
    e883f92a:	66f7568b          	srd	a3,a4,a5,3
    for (n = 0; n < a->used; n++) {
    e883f92e:	0785                	addi	a5,a5,1
    e883f930:	bf7d                	j	e883f8ee <mp_copy+0x1e>
      *tmpb++ = 0;
    e883f932:	66e5d00b          	srd	zero,a1,a4,3
    for (; n < b->used; n++) {
    e883f936:	0705                	addi	a4,a4,1
    e883f938:	b7d9                	j	e883f8fe <mp_copy+0x2e>
    return MP_OKAY;
    e883f93a:	4501                	li	a0,0
}
    e883f93c:	8082                	ret

00000000e883f93e <mp_count_bits>:
{
  int     r;
  mp_digit q;

  /* shortcut */
  if (a->used == 0) {
    e883f93e:	411c                	lw	a5,0(a0)
    e883f940:	cf81                	beqz	a5,e883f958 <mp_count_bits+0x1a>

  /* get number of digits and add that */
  r = (a->used - 1) * DIGIT_BIT;
  
  /* take the last digit and count the bits in it */
  q = a->dp[a->used - 1];
    e883f942:	6908                	ld	a0,16(a0)
  r = (a->used - 1) * DIGIT_BIT;
    e883f944:	fff7869b          	addiw	a3,a5,-1
  q = a->dp[a->used - 1];
    e883f948:	06f5150b          	addsl	a0,a0,a5,3
  r = (a->used - 1) * DIGIT_BIT;
    e883f94c:	47f1                	li	a5,28
    e883f94e:	02f687bb          	mulw	a5,a3,a5
  q = a->dp[a->used - 1];
    e883f952:	ff853703          	ld	a4,-8(a0)
  while (q > ((mp_digit) 0)) {
    e883f956:	e319                	bnez	a4,e883f95c <mp_count_bits+0x1e>
    ++r;
    q >>= ((mp_digit) 1);
  }
  return r;
}
    e883f958:	853e                	mv	a0,a5
    e883f95a:	8082                	ret
    ++r;
    e883f95c:	2785                	addiw	a5,a5,1
    q >>= ((mp_digit) 1);
    e883f95e:	8305                	srli	a4,a4,0x1
    e883f960:	bfdd                	j	e883f956 <mp_count_bits+0x18>

00000000e883f962 <mp_div>:
 *
 * The overall algorithm is as described as 
 * 14.20 from HAC but fixed to treat these cases.
*/
int mp_div (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
{
    e883f962:	7169                	addi	sp,sp,-304
    e883f964:	f222                	sd	s0,288(sp)
    e883f966:	f606                	sd	ra,296(sp)
    e883f968:	ee26                	sd	s1,280(sp)
    e883f96a:	ea4a                	sd	s2,272(sp)
    e883f96c:	e64e                	sd	s3,264(sp)
    e883f96e:	e252                	sd	s4,256(sp)
    e883f970:	fdd6                	sd	s5,248(sp)
    e883f972:	f9da                	sd	s6,240(sp)
    e883f974:	f5de                	sd	s7,232(sp)
    e883f976:	f1e2                	sd	s8,224(sp)
    e883f978:	ede6                	sd	s9,216(sp)
    e883f97a:	e9ea                	sd	s10,208(sp)
    e883f97c:	e5ee                	sd	s11,200(sp)
  mp_int  q, x, y, t1, t2;
  int     res, n, t, i, norm, neg;

  /* is divisor zero ? */
  if (mp_iszero (b) == 1) {
    e883f97e:	419c                	lw	a5,0(a1)
    return MP_VAL;
    e883f980:	5475                	li	s0,-3
  if (mp_iszero (b) == 1) {
    e883f982:	c79d                	beqz	a5,e883f9b0 <mp_div+0x4e>
    e883f984:	89aa                	mv	s3,a0
    e883f986:	84ae                	mv	s1,a1
    e883f988:	8bb6                	mv	s7,a3
    e883f98a:	8ab2                	mv	s5,a2
  }

  /* if a < b then q=0, r = a */
  if (mp_cmp_mag (a, b) == MP_LT) {
    e883f98c:	ef9ff0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e883f990:	57fd                	li	a5,-1
    e883f992:	02f51f63          	bne	a0,a5,e883f9d0 <mp_div+0x6e>
    if (d != NULL) {
      res = mp_copy (a, d);
    } else {
      res = MP_OKAY;
    e883f996:	4401                	li	s0,0
    if (d != NULL) {
    e883f998:	000b8763          	beqz	s7,e883f9a6 <mp_div+0x44>
      res = mp_copy (a, d);
    e883f99c:	85de                	mv	a1,s7
    e883f99e:	854e                	mv	a0,s3
    e883f9a0:	f31ff0ef          	jal	ra,e883f8d0 <mp_copy>
    e883f9a4:	842a                	mv	s0,a0
    }
    if (c != NULL) {
    e883f9a6:	000a8563          	beqz	s5,e883f9b0 <mp_div+0x4e>
      mp_zero (c);
    e883f9aa:	8556                	mv	a0,s5
    e883f9ac:	754020ef          	jal	ra,e8842100 <mp_zero>
LBL_X:mp_clear (&x);
LBL_T2:mp_clear (&t2);
LBL_T1:mp_clear (&t1);
LBL_Q:mp_clear (&q);
  return res;
}
    e883f9b0:	8522                	mv	a0,s0
    e883f9b2:	70b2                	ld	ra,296(sp)
    e883f9b4:	7412                	ld	s0,288(sp)
    e883f9b6:	64f2                	ld	s1,280(sp)
    e883f9b8:	6952                	ld	s2,272(sp)
    e883f9ba:	69b2                	ld	s3,264(sp)
    e883f9bc:	6a12                	ld	s4,256(sp)
    e883f9be:	7aee                	ld	s5,248(sp)
    e883f9c0:	7b4e                	ld	s6,240(sp)
    e883f9c2:	7bae                	ld	s7,232(sp)
    e883f9c4:	7c0e                	ld	s8,224(sp)
    e883f9c6:	6cee                	ld	s9,216(sp)
    e883f9c8:	6d4e                	ld	s10,208(sp)
    e883f9ca:	6dae                	ld	s11,200(sp)
    e883f9cc:	6155                	addi	sp,sp,304
    e883f9ce:	8082                	ret
  if ((res = mp_init_size (&q, a->used + 2)) != MP_OKAY) {
    e883f9d0:	0009a583          	lw	a1,0(s3)
    e883f9d4:	00a8                	addi	a0,sp,72
    e883f9d6:	2589                	addiw	a1,a1,2
    e883f9d8:	4a1000ef          	jal	ra,e8840678 <mp_init_size>
    e883f9dc:	842a                	mv	s0,a0
    e883f9de:	f969                	bnez	a0,e883f9b0 <mp_div+0x4e>
  q.used = a->used + 2;
    e883f9e0:	0009a783          	lw	a5,0(s3)
  if ((res = mp_init (&t1)) != MP_OKAY) {
    e883f9e4:	0908                	addi	a0,sp,144
  q.used = a->used + 2;
    e883f9e6:	2789                	addiw	a5,a5,2
    e883f9e8:	c4be                	sw	a5,72(sp)
  if ((res = mp_init (&t1)) != MP_OKAY) {
    e883f9ea:	3c3000ef          	jal	ra,e88405ac <mp_init>
    e883f9ee:	842a                	mv	s0,a0
    e883f9f0:	10051d63          	bnez	a0,e883fb0a <mp_div+0x1a8>
  if ((res = mp_init (&t2)) != MP_OKAY) {
    e883f9f4:	1128                	addi	a0,sp,168
    e883f9f6:	3b7000ef          	jal	ra,e88405ac <mp_init>
    e883f9fa:	842a                	mv	s0,a0
    e883f9fc:	10051463          	bnez	a0,e883fb04 <mp_div+0x1a2>
  if ((res = mp_init_copy (&x, a)) != MP_OKAY) {
    e883fa00:	85ce                	mv	a1,s3
    e883fa02:	1088                	addi	a0,sp,96
    e883fa04:	3e7000ef          	jal	ra,e88405ea <mp_init_copy>
    e883fa08:	842a                	mv	s0,a0
    e883fa0a:	0e051a63          	bnez	a0,e883fafe <mp_div+0x19c>
  if ((res = mp_init_copy (&y, b)) != MP_OKAY) {
    e883fa0e:	85a6                	mv	a1,s1
    e883fa10:	18a8                	addi	a0,sp,120
    e883fa12:	3d9000ef          	jal	ra,e88405ea <mp_init_copy>
    e883fa16:	842a                	mv	s0,a0
    e883fa18:	0e051063          	bnez	a0,e883faf8 <mp_div+0x196>
  neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;
    e883fa1c:	0089a783          	lw	a5,8(s3)
  norm = mp_count_bits(&y) % DIGIT_BIT;
    e883fa20:	18a8                	addi	a0,sp,120
  x.sign = y.sign = MP_ZPOS;
    e883fa22:	c102                	sw	zero,128(sp)
  neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;
    e883fa24:	e03e                	sd	a5,0(sp)
    e883fa26:	449c                	lw	a5,8(s1)
  x.sign = y.sign = MP_ZPOS;
    e883fa28:	d482                	sw	zero,104(sp)
  neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;
    e883fa2a:	e43e                	sd	a5,8(sp)
  norm = mp_count_bits(&y) % DIGIT_BIT;
    e883fa2c:	f13ff0ef          	jal	ra,e883f93e <mp_count_bits>
    e883fa30:	47f1                	li	a5,28
    e883fa32:	02f5673b          	remw	a4,a0,a5
  if (norm < (int)(DIGIT_BIT-1)) {
    e883fa36:	47ed                	li	a5,27
    e883fa38:	02f70263          	beq	a4,a5,e883fa5c <mp_div+0xfa>
     norm = (DIGIT_BIT-1) - norm;
    e883fa3c:	446d                	li	s0,27
    e883fa3e:	9c19                	subw	s0,s0,a4
     if ((res = mp_mul_2d (&x, norm, &x)) != MP_OKAY) {
    e883fa40:	1090                	addi	a2,sp,96
    e883fa42:	85a2                	mv	a1,s0
    e883fa44:	8532                	mv	a0,a2
    e883fa46:	6e2010ef          	jal	ra,e8841128 <mp_mul_2d>
    e883fa4a:	84aa                	mv	s1,a0
    e883fa4c:	e155                	bnez	a0,e883faf0 <mp_div+0x18e>
     if ((res = mp_mul_2d (&y, norm, &y)) != MP_OKAY) {
    e883fa4e:	18b0                	addi	a2,sp,120
    e883fa50:	85a2                	mv	a1,s0
    e883fa52:	8532                	mv	a0,a2
    e883fa54:	6d4010ef          	jal	ra,e8841128 <mp_mul_2d>
    e883fa58:	84aa                	mv	s1,a0
    e883fa5a:	e959                	bnez	a0,e883faf0 <mp_div+0x18e>
  n = x.used - 1;
    e883fa5c:	5a06                	lw	s4,96(sp)
  t = y.used - 1;
    e883fa5e:	5c66                	lw	s8,120(sp)
  if ((res = mp_lshd (&y, n - t)) != MP_OKAY) { /* y = y*b**{n-t} */
    e883fa60:	18a8                	addi	a0,sp,120
    e883fa62:	418a093b          	subw	s2,s4,s8
    e883fa66:	85ca                	mv	a1,s2
    e883fa68:	25a010ef          	jal	ra,e8840cc2 <mp_lshd>
    e883fa6c:	84aa                	mv	s1,a0
    e883fa6e:	e149                	bnez	a0,e883faf0 <mp_div+0x18e>
    ++(q.dp[n - t]);
    e883fa70:	00391c93          	slli	s9,s2,0x3
  while (mp_cmp (&x, &y) != MP_LT) {
    e883fa74:	5b7d                	li	s6,-1
    e883fa76:	18ac                	addi	a1,sp,120
    e883fa78:	1088                	addi	a0,sp,96
    e883fa7a:	dbfff0ef          	jal	ra,e883f838 <mp_cmp>
    e883fa7e:	09651a63          	bne	a0,s6,e883fb12 <mp_div+0x1b0>
  mp_rshd (&y, n - t);
    e883fa82:	85ca                	mv	a1,s2
    e883fa84:	18a8                	addi	a0,sp,120
    e883fa86:	415010ef          	jal	ra,e884169a <mp_rshd>
    if (x.dp[i] == y.dp[t]) {
    e883fa8a:	fffc0c9b          	addiw	s9,s8,-1
    e883fa8e:	4785                	li	a5,1
    e883fa90:	418787bb          	subw	a5,a5,s8
    e883fa94:	da3e                	sw	a5,52(sp)
      t1.dp[0] = (t - 1 < 0) ? 0 : y.dp[t - 1];
    e883fa96:	ffec079b          	addiw	a5,s8,-2
  n = x.used - 1;
    e883fa9a:	fffa0b1b          	addiw	s6,s4,-1
  for (i = n; i >= (t + 1); i--) {
    e883fa9e:	ffea0d9b          	addiw	s11,s4,-2
    if (x.dp[i] == y.dp[t]) {
    e883faa2:	0c8e                	slli	s9,s9,0x3
    e883faa4:	3a75                	addiw	s4,s4,-3
    e883faa6:	f462                	sd	s8,40(sp)
      t1.dp[0] = (t - 1 < 0) ? 0 : y.dp[t - 1];
    e883faa8:	fc3e                	sd	a5,56(sp)
  for (i = n; i >= (t + 1); i--) {
    e883faaa:	5786                	lw	a5,96(sp)
    e883faac:	098b5163          	bge	s6,s8,e883fb2e <mp_div+0x1cc>
  x.sign = x.used == 0 ? MP_ZPOS : a->sign;
    e883fab0:	c399                	beqz	a5,e883fab6 <mp_div+0x154>
    e883fab2:	0089a783          	lw	a5,8(s3)
    e883fab6:	d4be                	sw	a5,104(sp)
  if (c != NULL) {
    e883fab8:	020a8063          	beqz	s5,e883fad8 <mp_div+0x176>
    mp_clamp (&q);
    e883fabc:	00a8                	addi	a0,sp,72
    e883fabe:	cf1ff0ef          	jal	ra,e883f7ae <mp_clamp>
    mp_exch (&q, c);
    e883fac2:	85d6                	mv	a1,s5
    e883fac4:	00a8                	addi	a0,sp,72
    e883fac6:	4d2000ef          	jal	ra,e883ff98 <mp_exch>
  neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;
    e883faca:	f8e1478b          	ldd	a5,a4,(sp),0,4
    e883face:	8f99                	sub	a5,a5,a4
    e883fad0:	00f037b3          	snez	a5,a5
    c->sign = neg;
    e883fad4:	00faa423          	sw	a5,8(s5)
  if (d != NULL) {
    e883fad8:	000b8c63          	beqz	s7,e883faf0 <mp_div+0x18e>
    mp_div_2d (&x, norm, &x, NULL);
    e883fadc:	1090                	addi	a2,sp,96
    e883fade:	85a2                	mv	a1,s0
    e883fae0:	4681                	li	a3,0
    e883fae2:	8532                	mv	a0,a2
    e883fae4:	23a000ef          	jal	ra,e883fd1e <mp_div_2d>
    mp_exch (&x, d);
    e883fae8:	85de                	mv	a1,s7
    e883faea:	1088                	addi	a0,sp,96
    e883faec:	4ac000ef          	jal	ra,e883ff98 <mp_exch>
LBL_Y:mp_clear (&y);
    e883faf0:	18a8                	addi	a0,sp,120
    e883faf2:	cdfff0ef          	jal	ra,e883f7d0 <mp_clear>
    e883faf6:	8426                	mv	s0,s1
LBL_X:mp_clear (&x);
    e883faf8:	1088                	addi	a0,sp,96
    e883fafa:	cd7ff0ef          	jal	ra,e883f7d0 <mp_clear>
LBL_T2:mp_clear (&t2);
    e883fafe:	1128                	addi	a0,sp,168
    e883fb00:	cd1ff0ef          	jal	ra,e883f7d0 <mp_clear>
LBL_T1:mp_clear (&t1);
    e883fb04:	0908                	addi	a0,sp,144
    e883fb06:	ccbff0ef          	jal	ra,e883f7d0 <mp_clear>
LBL_Q:mp_clear (&q);
    e883fb0a:	00a8                	addi	a0,sp,72
    e883fb0c:	cc5ff0ef          	jal	ra,e883f7d0 <mp_clear>
  return res;
    e883fb10:	b545                	j	e883f9b0 <mp_div+0x4e>
    ++(q.dp[n - t]);
    e883fb12:	6766                	ld	a4,88(sp)
    if ((res = mp_sub (&x, &y, &x)) != MP_OKAY) {
    e883fb14:	1090                	addi	a2,sp,96
    e883fb16:	18ac                	addi	a1,sp,120
    ++(q.dp[n - t]);
    e883fb18:	6197478b          	lrd	a5,a4,s9,0
    if ((res = mp_sub (&x, &y, &x)) != MP_OKAY) {
    e883fb1c:	8532                	mv	a0,a2
    ++(q.dp[n - t]);
    e883fb1e:	0785                	addi	a5,a5,1
    e883fb20:	6197578b          	srd	a5,a4,s9,0
    if ((res = mp_sub (&x, &y, &x)) != MP_OKAY) {
    e883fb24:	4a7010ef          	jal	ra,e88417ca <mp_sub>
    e883fb28:	d539                	beqz	a0,e883fa76 <mp_div+0x114>
      if ((res = mp_add (&x, &t1, &x)) != MP_OKAY) {
    e883fb2a:	84aa                	mv	s1,a0
    e883fb2c:	b7d1                	j	e883faf0 <mp_div+0x18e>
    if (i > x.used) {
    e883fb2e:	1567c063          	blt	a5,s6,e883fc6e <mp_div+0x30c>
    if (x.dp[i] == y.dp[t]) {
    e883fb32:	67aa                	ld	a5,136(sp)
    e883fb34:	76c6                	ld	a3,112(sp)
    e883fb36:	e85a                	sd	s6,16(sp)
    e883fb38:	6197c58b          	lrd	a1,a5,s9,0
    e883fb3c:	57d2                	lw	a5,52(sp)
    e883fb3e:	6766c70b          	lrd	a4,a3,s6,3
    e883fb42:	003b1d13          	slli	s10,s6,0x3
    e883fb46:	0167893b          	addw	s2,a5,s6
    e883fb4a:	090e                	slli	s2,s2,0x3
    e883fb4c:	1961                	addi	s2,s2,-8
    e883fb4e:	6666                	ld	a2,88(sp)
    e883fb50:	12b71363          	bne	a4,a1,e883fc76 <mp_div+0x314>
      q.dp[i - t - 1] = ((((mp_digit)1) << DIGIT_BIT) - 1);
    e883fb54:	100007b7          	lui	a5,0x10000
    e883fb58:	17fd                	addi	a5,a5,-1
      q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK));
    e883fb5a:	6126578b          	srd	a5,a2,s2,0
    q.dp[i - t - 1] = (q.dp[i - t - 1] + 1) & MP_MASK;
    e883fb5e:	6766                	ld	a4,88(sp)
      t2.dp[0] = (i - 2 < 0) ? 0 : x.dp[i - 2];
    e883fb60:	ec52                	sd	s4,24(sp)
      t2.dp[1] = (i - 1 < 0) ? 0 : x.dp[i - 1];
    e883fb62:	f06e                	sd	s11,32(sp)
    q.dp[i - t - 1] = (q.dp[i - t - 1] + 1) & MP_MASK;
    e883fb64:	6127478b          	lrd	a5,a4,s2,0
    e883fb68:	0785                	addi	a5,a5,1
    e883fb6a:	6c07b78b          	extu	a5,a5,27,0
    e883fb6e:	6127578b          	srd	a5,a4,s2,0
      q.dp[i - t - 1] = (q.dp[i - t - 1] - 1) & MP_MASK;
    e883fb72:	6766                	ld	a4,88(sp)
      mp_zero (&t1);
    e883fb74:	0908                	addi	a0,sp,144
      q.dp[i - t - 1] = (q.dp[i - t - 1] - 1) & MP_MASK;
    e883fb76:	6127478b          	lrd	a5,a4,s2,0
    e883fb7a:	17fd                	addi	a5,a5,-1
    e883fb7c:	6c07b78b          	extu	a5,a5,27,0
    e883fb80:	6127578b          	srd	a5,a4,s2,0
      mp_zero (&t1);
    e883fb84:	57c020ef          	jal	ra,e8842100 <mp_zero>
      t1.dp[0] = (t - 1 < 0) ? 0 : y.dp[t - 1];
    e883fb88:	7762                	ld	a4,56(sp)
    e883fb8a:	4781                	li	a5,0
    e883fb8c:	00074663          	bltz	a4,e883fb98 <mp_div+0x236>
    e883fb90:	67aa                	ld	a5,136(sp)
    e883fb92:	97e6                	add	a5,a5,s9
    e883fb94:	ff87b783          	ld	a5,-8(a5) # ffffff8 <memcmp-0xd8800008>
    e883fb98:	770a                	ld	a4,160(sp)
      if ((res = mp_mul_d (&t1, q.dp[i - t - 1], &t1)) != MP_OKAY) {
    e883fb9a:	0910                	addi	a2,sp,144
    e883fb9c:	8532                	mv	a0,a2
      t1.dp[0] = (t - 1 < 0) ? 0 : y.dp[t - 1];
    e883fb9e:	e31c                	sd	a5,0(a4)
      t1.dp[1] = y.dp[t];
    e883fba0:	67aa                	ld	a5,136(sp)
    e883fba2:	6197c70b          	lrd	a4,a5,s9,0
    e883fba6:	778a                	ld	a5,160(sp)
    e883fba8:	e798                	sd	a4,8(a5)
      t1.used = 2;
    e883fbaa:	4789                	li	a5,2
    e883fbac:	c93e                	sw	a5,144(sp)
      if ((res = mp_mul_d (&t1, q.dp[i - t - 1], &t1)) != MP_OKAY) {
    e883fbae:	67e6                	ld	a5,88(sp)
    e883fbb0:	6127c58b          	lrd	a1,a5,s2,0
    e883fbb4:	628010ef          	jal	ra,e88411dc <mp_mul_d>
    e883fbb8:	f92d                	bnez	a0,e883fb2a <mp_div+0x1c8>
      t2.dp[0] = (i - 2 < 0) ? 0 : x.dp[i - 2];
    e883fbba:	6762                	ld	a4,24(sp)
    e883fbbc:	4781                	li	a5,0
    e883fbbe:	00074663          	bltz	a4,e883fbca <mp_div+0x268>
    e883fbc2:	77c6                	ld	a5,112(sp)
    e883fbc4:	97ea                	add	a5,a5,s10
    e883fbc6:	ff07b783          	ld	a5,-16(a5)
    e883fbca:	776a                	ld	a4,184(sp)
    e883fbcc:	e31c                	sd	a5,0(a4)
      t2.dp[1] = (i - 1 < 0) ? 0 : x.dp[i - 1];
    e883fbce:	7702                	ld	a4,32(sp)
    e883fbd0:	4781                	li	a5,0
    e883fbd2:	00074663          	bltz	a4,e883fbde <mp_div+0x27c>
    e883fbd6:	77c6                	ld	a5,112(sp)
    e883fbd8:	97ea                	add	a5,a5,s10
    e883fbda:	ff87b783          	ld	a5,-8(a5)
    e883fbde:	776a                	ld	a4,184(sp)
    } while (mp_cmp_mag(&t1, &t2) == MP_GT);
    e883fbe0:	112c                	addi	a1,sp,168
    e883fbe2:	0908                	addi	a0,sp,144
      t2.dp[1] = (i - 1 < 0) ? 0 : x.dp[i - 1];
    e883fbe4:	e71c                	sd	a5,8(a4)
      t2.dp[2] = x.dp[i];
    e883fbe6:	77c6                	ld	a5,112(sp)
    e883fbe8:	61a7c70b          	lrd	a4,a5,s10,0
    e883fbec:	77ea                	ld	a5,184(sp)
    e883fbee:	eb98                	sd	a4,16(a5)
      t2.used = 3;
    e883fbf0:	478d                	li	a5,3
    e883fbf2:	d53e                	sw	a5,168(sp)
    } while (mp_cmp_mag(&t1, &t2) == MP_GT);
    e883fbf4:	c91ff0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e883fbf8:	4785                	li	a5,1
    e883fbfa:	f6f50ce3          	beq	a0,a5,e883fb72 <mp_div+0x210>
    if ((res = mp_mul_d (&y, q.dp[i - t - 1], &t1)) != MP_OKAY) {
    e883fbfe:	67e6                	ld	a5,88(sp)
    e883fc00:	0910                	addi	a2,sp,144
    e883fc02:	18a8                	addi	a0,sp,120
    e883fc04:	6127c58b          	lrd	a1,a5,s2,0
    e883fc08:	5d4010ef          	jal	ra,e88411dc <mp_mul_d>
    e883fc0c:	fd19                	bnez	a0,e883fb2a <mp_div+0x1c8>
    if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) {
    e883fc0e:	67c2                	ld	a5,16(sp)
    e883fc10:	7722                	ld	a4,40(sp)
    e883fc12:	0908                	addi	a0,sp,144
    e883fc14:	40e78d3b          	subw	s10,a5,a4
    e883fc18:	85ea                	mv	a1,s10
    e883fc1a:	0a8010ef          	jal	ra,e8840cc2 <mp_lshd>
    e883fc1e:	f00516e3          	bnez	a0,e883fb2a <mp_div+0x1c8>
    if ((res = mp_sub (&x, &t1, &x)) != MP_OKAY) {
    e883fc22:	1090                	addi	a2,sp,96
    e883fc24:	090c                	addi	a1,sp,144
    e883fc26:	8532                	mv	a0,a2
    e883fc28:	3a3010ef          	jal	ra,e88417ca <mp_sub>
    e883fc2c:	ee051fe3          	bnez	a0,e883fb2a <mp_div+0x1c8>
    if (x.sign == MP_NEG) {
    e883fc30:	57a6                	lw	a5,104(sp)
    e883fc32:	4705                	li	a4,1
    e883fc34:	02e79d63          	bne	a5,a4,e883fc6e <mp_div+0x30c>
      if ((res = mp_copy (&y, &t1)) != MP_OKAY) {
    e883fc38:	090c                	addi	a1,sp,144
    e883fc3a:	18a8                	addi	a0,sp,120
    e883fc3c:	c95ff0ef          	jal	ra,e883f8d0 <mp_copy>
    e883fc40:	ee0515e3          	bnez	a0,e883fb2a <mp_div+0x1c8>
      if ((res = mp_lshd (&t1, i - t - 1)) != MP_OKAY) {
    e883fc44:	85ea                	mv	a1,s10
    e883fc46:	0908                	addi	a0,sp,144
    e883fc48:	07a010ef          	jal	ra,e8840cc2 <mp_lshd>
    e883fc4c:	ec051fe3          	bnez	a0,e883fb2a <mp_div+0x1c8>
      if ((res = mp_add (&x, &t1, &x)) != MP_OKAY) {
    e883fc50:	1090                	addi	a2,sp,96
    e883fc52:	090c                	addi	a1,sp,144
    e883fc54:	8532                	mv	a0,a2
    e883fc56:	9f5ff0ef          	jal	ra,e883f64a <mp_add>
    e883fc5a:	ec0518e3          	bnez	a0,e883fb2a <mp_div+0x1c8>
      q.dp[i - t - 1] = (q.dp[i - t - 1] - 1UL) & MP_MASK;
    e883fc5e:	6766                	ld	a4,88(sp)
    e883fc60:	6127478b          	lrd	a5,a4,s2,0
    e883fc64:	17fd                	addi	a5,a5,-1
    e883fc66:	6c07b78b          	extu	a5,a5,27,0
    e883fc6a:	6127578b          	srd	a5,a4,s2,0
  for (i = n; i >= (t + 1); i--) {
    e883fc6e:	3b7d                	addiw	s6,s6,-1
    e883fc70:	3dfd                	addiw	s11,s11,-1
    e883fc72:	3a7d                	addiw	s4,s4,-1
    e883fc74:	bd1d                	j	e883faaa <mp_div+0x148>
      tmp |= ((mp_word) x.dp[i - 1]);
    e883fc76:	96ea                	add	a3,a3,s10
      tmp = ((mp_word) x.dp[i]) << ((mp_word) DIGIT_BIT);
    e883fc78:	01c71793          	slli	a5,a4,0x1c
      tmp |= ((mp_word) x.dp[i - 1]);
    e883fc7c:	ff86b703          	ld	a4,-8(a3) # ffffffffffffeff8 <__DRAM0_INF_BASE+0xffffffff0000eff8>
      q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK));
    e883fc80:	100006b7          	lui	a3,0x10000
      tmp |= ((mp_word) x.dp[i - 1]);
    e883fc84:	8fd9                	or	a5,a5,a4
      tmp /= ((mp_word) y.dp[t]);
    e883fc86:	02b7d7b3          	divu	a5,a5,a1
      q.dp[i - t - 1] = (mp_digit) (tmp & (mp_word) (MP_MASK));
    e883fc8a:	00d7b733          	sltu	a4,a5,a3
    e883fc8e:	16fd                	addi	a3,a3,-1
    e883fc90:	40e6978b          	mveqz	a5,a3,a4
    e883fc94:	b5d9                	j	e883fb5a <mp_div+0x1f8>

00000000e883fc96 <mp_div_2>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* b = a/2 */
int mp_div_2(mp_int * a, mp_int * b)
{
    e883fc96:	1101                	addi	sp,sp,-32
    e883fc98:	e422                	sd	s0,8(sp)
    e883fc9a:	842e                	mv	s0,a1
    e883fc9c:	e826                	sd	s1,16(sp)
    e883fc9e:	ec06                	sd	ra,24(sp)
  int     x, res, oldused;

  /* copy */
  if (b->alloc < a->used) {
    e883fca0:	405c                	lw	a5,4(s0)
    e883fca2:	410c                	lw	a1,0(a0)
{
    e883fca4:	84aa                	mv	s1,a0
  if (b->alloc < a->used) {
    e883fca6:	04b7c263          	blt	a5,a1,e883fcea <mp_div_2+0x54>
      return res;
    }
  }

  oldused = b->used;
  b->used = a->used;
    e883fcaa:	409c                	lw	a5,0(s1)
  oldused = b->used;
    e883fcac:	00042883          	lw	a7,0(s0)

    /* source alias */
    tmpa = a->dp + b->used - 1;

    /* dest alias */
    tmpb = b->dp + b->used - 1;
    e883fcb0:	680c                	ld	a1,16(s0)
  b->used = a->used;
    e883fcb2:	c01c                	sw	a5,0(s0)
    tmpa = a->dp + b->used - 1;
    e883fcb4:	00379713          	slli	a4,a5,0x3
    e883fcb8:	6890                	ld	a2,16(s1)
    e883fcba:	1761                	addi	a4,a4,-8
    tmpb = b->dp + b->used - 1;
    e883fcbc:	95ba                	add	a1,a1,a4
    tmpa = a->dp + b->used - 1;
    e883fcbe:	963a                	add	a2,a2,a4

    /* carry */
    r = 0;
    for (x = b->used - 1; x >= 0; x--) {
    e883fcc0:	37fd                	addiw	a5,a5,-1
    e883fcc2:	4681                	li	a3,0
    r = 0;
    e883fcc4:	4701                	li	a4,0
    for (x = b->used - 1; x >= 0; x--) {
    e883fcc6:	0207db63          	bgez	a5,e883fcfc <mp_div_2+0x66>
      /* forward carry to next iteration */
      r = rr;
    }

    /* zero excess digits */
    tmpb = b->dp + b->used;
    e883fcca:	4014                	lw	a3,0(s0)
    e883fccc:	6818                	ld	a4,16(s0)
    for (x = b->used; x < oldused; x++) {
    e883fcce:	4781                	li	a5,0
    tmpb = b->dp + b->used;
    e883fcd0:	06d7170b          	addsl	a4,a4,a3,3
    for (x = b->used; x < oldused; x++) {
    e883fcd4:	00f6863b          	addw	a2,a3,a5
    e883fcd8:	03164f63          	blt	a2,a7,e883fd16 <mp_div_2+0x80>
      *tmpb++ = 0;
    }
  }
  b->sign = a->sign;
    e883fcdc:	449c                	lw	a5,8(s1)
  mp_clamp (b);
    e883fcde:	8522                	mv	a0,s0
  b->sign = a->sign;
    e883fce0:	c41c                	sw	a5,8(s0)
  mp_clamp (b);
    e883fce2:	acdff0ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e883fce6:	4501                	li	a0,0
    e883fce8:	a029                	j	e883fcf2 <mp_div_2+0x5c>
    if ((res = mp_grow (b, a->used)) != MP_OKAY) {
    e883fcea:	8522                	mv	a0,s0
    e883fcec:	06b000ef          	jal	ra,e8840556 <mp_grow>
    e883fcf0:	dd4d                	beqz	a0,e883fcaa <mp_div_2+0x14>
}
    e883fcf2:	60e2                	ld	ra,24(sp)
    e883fcf4:	6422                	ld	s0,8(sp)
    e883fcf6:	64c2                	ld	s1,16(sp)
    e883fcf8:	6105                	addi	sp,sp,32
    e883fcfa:	8082                	ret
      rr = *tmpa & 1;
    e883fcfc:	60d6480b          	lrd	a6,a2,a3,0
      *tmpb-- = (*tmpa-- >> 1) | (r << (DIGIT_BIT - 1));
    e883fd00:	076e                	slli	a4,a4,0x1b
    for (x = b->used - 1; x >= 0; x--) {
    e883fd02:	37fd                	addiw	a5,a5,-1
      *tmpb-- = (*tmpa-- >> 1) | (r << (DIGIT_BIT - 1));
    e883fd04:	00185513          	srli	a0,a6,0x1
    e883fd08:	8f49                	or	a4,a4,a0
    e883fd0a:	60d5d70b          	srd	a4,a1,a3,0
    for (x = b->used - 1; x >= 0; x--) {
    e883fd0e:	16e1                	addi	a3,a3,-8
      rr = *tmpa & 1;
    e883fd10:	00187713          	andi	a4,a6,1
    e883fd14:	bf4d                	j	e883fcc6 <mp_div_2+0x30>
      *tmpb++ = 0;
    e883fd16:	66f7500b          	srd	zero,a4,a5,3
    for (x = b->used; x < oldused; x++) {
    e883fd1a:	0785                	addi	a5,a5,1
    e883fd1c:	bf65                	j	e883fcd4 <mp_div_2+0x3e>

00000000e883fd1e <mp_div_2d>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* shift right by a certain bit count (store quotient in c, optional remainder in d) */
int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d)
{
    e883fd1e:	715d                	addi	sp,sp,-80
    e883fd20:	f84a                	sd	s2,48(sp)
    e883fd22:	f44e                	sd	s3,40(sp)
    e883fd24:	e486                	sd	ra,72(sp)
    e883fd26:	e0a2                	sd	s0,64(sp)
    e883fd28:	fc26                	sd	s1,56(sp)
    e883fd2a:	f052                	sd	s4,32(sp)
    e883fd2c:	8932                	mv	s2,a2
    e883fd2e:	89b6                	mv	s3,a3
  int     x, res;
  mp_int  t;


  /* if the shift count is <= 0 then we do no work */
  if (b <= 0) {
    e883fd30:	02b04463          	bgtz	a1,e883fd58 <mp_div_2d+0x3a>
    res = mp_copy (a, c);
    e883fd34:	85b2                	mv	a1,a2
    e883fd36:	b9bff0ef          	jal	ra,e883f8d0 <mp_copy>
    e883fd3a:	84aa                	mv	s1,a0
    if (d != NULL) {
    e883fd3c:	00098563          	beqz	s3,e883fd46 <mp_div_2d+0x28>
      mp_zero (d);
    e883fd40:	854e                	mv	a0,s3
    e883fd42:	3be020ef          	jal	ra,e8842100 <mp_zero>
  if (d != NULL) {
    mp_exch (&t, d);
  }
  mp_clear (&t);
  return MP_OKAY;
}
    e883fd46:	60a6                	ld	ra,72(sp)
    e883fd48:	6406                	ld	s0,64(sp)
    e883fd4a:	8526                	mv	a0,s1
    e883fd4c:	7942                	ld	s2,48(sp)
    e883fd4e:	74e2                	ld	s1,56(sp)
    e883fd50:	79a2                	ld	s3,40(sp)
    e883fd52:	7a02                	ld	s4,32(sp)
    e883fd54:	6161                	addi	sp,sp,80
    e883fd56:	8082                	ret
    e883fd58:	8a2a                	mv	s4,a0
  if ((res = mp_init (&t)) != MP_OKAY) {
    e883fd5a:	0028                	addi	a0,sp,8
    e883fd5c:	842e                	mv	s0,a1
    e883fd5e:	04f000ef          	jal	ra,e88405ac <mp_init>
    e883fd62:	84aa                	mv	s1,a0
    e883fd64:	f16d                	bnez	a0,e883fd46 <mp_div_2d+0x28>
  if (d != NULL) {
    e883fd66:	00098d63          	beqz	s3,e883fd80 <mp_div_2d+0x62>
    if ((res = mp_mod_2d (a, b, &t)) != MP_OKAY) {
    e883fd6a:	0030                	addi	a2,sp,8
    e883fd6c:	85a2                	mv	a1,s0
    e883fd6e:	8552                	mv	a0,s4
    e883fd70:	02c010ef          	jal	ra,e8840d9c <mp_mod_2d>
    e883fd74:	84aa                	mv	s1,a0
    e883fd76:	c509                	beqz	a0,e883fd80 <mp_div_2d+0x62>
  mp_clear (&t);
    e883fd78:	0028                	addi	a0,sp,8
    e883fd7a:	a57ff0ef          	jal	ra,e883f7d0 <mp_clear>
  return MP_OKAY;
    e883fd7e:	b7e1                	j	e883fd46 <mp_div_2d+0x28>
  if ((res = mp_copy (a, c)) != MP_OKAY) {
    e883fd80:	85ca                	mv	a1,s2
    e883fd82:	8552                	mv	a0,s4
    e883fd84:	b4dff0ef          	jal	ra,e883f8d0 <mp_copy>
    e883fd88:	84aa                	mv	s1,a0
    e883fd8a:	f57d                	bnez	a0,e883fd78 <mp_div_2d+0x5a>
  if (b >= (int)DIGIT_BIT) {
    e883fd8c:	47ed                	li	a5,27
    e883fd8e:	0087d863          	bge	a5,s0,e883fd9e <mp_div_2d+0x80>
    mp_rshd (c, b / DIGIT_BIT);
    e883fd92:	45f1                	li	a1,28
    e883fd94:	02b445bb          	divw	a1,s0,a1
    e883fd98:	854a                	mv	a0,s2
    e883fd9a:	101010ef          	jal	ra,e884169a <mp_rshd>
  D = (mp_digit) (b % DIGIT_BIT);
    e883fd9e:	47f1                	li	a5,28
    e883fda0:	02f4643b          	remw	s0,s0,a5
  if (D != 0) {
    e883fda4:	e819                	bnez	s0,e883fdba <mp_div_2d+0x9c>
  mp_clamp (c);
    e883fda6:	854a                	mv	a0,s2
    e883fda8:	a07ff0ef          	jal	ra,e883f7ae <mp_clamp>
  if (d != NULL) {
    e883fdac:	fc0986e3          	beqz	s3,e883fd78 <mp_div_2d+0x5a>
    mp_exch (&t, d);
    e883fdb0:	85ce                	mv	a1,s3
    e883fdb2:	0028                	addi	a0,sp,8
    e883fdb4:	1e4000ef          	jal	ra,e883ff98 <mp_exch>
    e883fdb8:	b7c1                	j	e883fd78 <mp_div_2d+0x5a>
    tmpc = c->dp + (c->used - 1);
    e883fdba:	00092783          	lw	a5,0(s2)
    shift = DIGIT_BIT - D;
    e883fdbe:	45f1                	li	a1,28
    e883fdc0:	8d81                	sub	a1,a1,s0
    tmpc = c->dp + (c->used - 1);
    e883fdc2:	00379713          	slli	a4,a5,0x3
    e883fdc6:	ff870693          	addi	a3,a4,-8
    e883fdca:	01093703          	ld	a4,16(s2)
    for (x = c->used - 1; x >= 0; x--) {
    e883fdce:	37fd                	addiw	a5,a5,-1
    r = 0;
    e883fdd0:	4601                	li	a2,0
    tmpc = c->dp + (c->used - 1);
    e883fdd2:	9736                	add	a4,a4,a3
    for (x = c->used - 1; x >= 0; x--) {
    e883fdd4:	56fd                	li	a3,-1
    e883fdd6:	008696b3          	sll	a3,a3,s0
    e883fdda:	fff6c693          	not	a3,a3
    e883fdde:	fc07c4e3          	bltz	a5,e883fda6 <mp_div_2d+0x88>
      rr = *tmpc & mask;
    e883fde2:	00073803          	ld	a6,0(a4)
      *tmpc = (*tmpc >> D) | (r << shift);
    e883fde6:	00b61633          	sll	a2,a2,a1
    for (x = c->used - 1; x >= 0; x--) {
    e883fdea:	37fd                	addiw	a5,a5,-1
      *tmpc = (*tmpc >> D) | (r << shift);
    e883fdec:	00885533          	srl	a0,a6,s0
    e883fdf0:	8e49                	or	a2,a2,a0
    e883fdf2:	7987560b          	sdia	a2,(a4),-8,0
      rr = *tmpc & mask;
    e883fdf6:	00d87633          	and	a2,a6,a3
    e883fdfa:	b7d5                	j	e883fdde <mp_div_2d+0xc0>

00000000e883fdfc <mp_div_3>:
 */

/* divide by three (based on routine from MPI and the GMP manual) */
int
mp_div_3 (mp_int * a, mp_int *c, mp_digit * d)
{
    e883fdfc:	715d                	addi	sp,sp,-80
    e883fdfe:	e0a2                	sd	s0,64(sp)
    e883fe00:	fc26                	sd	s1,56(sp)
    e883fe02:	f84a                	sd	s2,48(sp)
    e883fe04:	e486                	sd	ra,72(sp)
    e883fe06:	892e                	mv	s2,a1
  int      res, ix;
  
  /* b = 2**DIGIT_BIT / 3 */
  b = (((mp_word)1) << ((mp_word)DIGIT_BIT)) / ((mp_word)3);

  if ((res = mp_init_size(&q, a->used)) != MP_OKAY) {
    e883fe08:	410c                	lw	a1,0(a0)
{
    e883fe0a:	842a                	mv	s0,a0
  if ((res = mp_init_size(&q, a->used)) != MP_OKAY) {
    e883fe0c:	0828                	addi	a0,sp,24
{
    e883fe0e:	e432                	sd	a2,8(sp)
  if ((res = mp_init_size(&q, a->used)) != MP_OKAY) {
    e883fe10:	069000ef          	jal	ra,e8840678 <mp_init_size>
    e883fe14:	84aa                	mv	s1,a0
    e883fe16:	e121                	bnez	a0,e883fe56 <mp_div_3+0x5a>
     return res;
  }
  
  q.used = a->used;
    e883fe18:	4018                	lw	a4,0(s0)
  q.sign = a->sign;
    e883fe1a:	441c                	lw	a5,8(s0)
  w = 0;
  for (ix = a->used - 1; ix >= 0; ix--) {
    e883fe1c:	6622                	ld	a2,8(sp)
  q.used = a->used;
    e883fe1e:	cc3a                	sw	a4,24(sp)
     w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]);

     if (w >= 3) {
        /* multiply w by [1/3] */
        t = (w * ((mp_word)b)) >> ((mp_word)DIGIT_BIT);
    e883fe20:	05555537          	lui	a0,0x5555
  for (ix = a->used - 1; ix >= 0; ix--) {
    e883fe24:	377d                	addiw	a4,a4,-1
  q.sign = a->sign;
    e883fe26:	d03e                	sw	a5,32(sp)
  for (ix = a->used - 1; ix >= 0; ix--) {
    e883fe28:	00371593          	slli	a1,a4,0x3
  w = 0;
    e883fe2c:	4781                	li	a5,0
     if (w >= 3) {
    e883fe2e:	4809                	li	a6,2
        t = (w * ((mp_word)b)) >> ((mp_word)DIGIT_BIT);
    e883fe30:	55550513          	addi	a0,a0,1365 # 5555555 <memcmp-0xe32aaaab>

        /* now subtract 3 * [w/3] from w, to get the remainder */
        w -= t+t+t;
    e883fe34:	488d                	li	a7,3
  for (ix = a->used - 1; ix >= 0; ix--) {
    e883fe36:	02075763          	bgez	a4,e883fe64 <mp_div_3+0x68>
      }
      q.dp[ix] = (mp_digit)t;
  }

  /* [optional] store the remainder */
  if (d != NULL) {
    e883fe3a:	c211                	beqz	a2,e883fe3e <mp_div_3+0x42>
     *d = (mp_digit)w;
    e883fe3c:	e21c                	sd	a5,0(a2)
  }

  /* [optional] store the quotient */
  if (c != NULL) {
    e883fe3e:	00090963          	beqz	s2,e883fe50 <mp_div_3+0x54>
     mp_clamp(&q);
    e883fe42:	0828                	addi	a0,sp,24
    e883fe44:	96bff0ef          	jal	ra,e883f7ae <mp_clamp>
     mp_exch(&q, c);
    e883fe48:	85ca                	mv	a1,s2
    e883fe4a:	0828                	addi	a0,sp,24
    e883fe4c:	14c000ef          	jal	ra,e883ff98 <mp_exch>
  }
  mp_clear(&q);
    e883fe50:	0828                	addi	a0,sp,24
    e883fe52:	97fff0ef          	jal	ra,e883f7d0 <mp_clear>
  
  return res;
}
    e883fe56:	60a6                	ld	ra,72(sp)
    e883fe58:	6406                	ld	s0,64(sp)
    e883fe5a:	8526                	mv	a0,s1
    e883fe5c:	7942                	ld	s2,48(sp)
    e883fe5e:	74e2                	ld	s1,56(sp)
    e883fe60:	6161                	addi	sp,sp,80
    e883fe62:	8082                	ret
     w = (w << ((mp_word)DIGIT_BIT)) | ((mp_word)a->dp[ix]);
    e883fe64:	6814                	ld	a3,16(s0)
    e883fe66:	07f2                	slli	a5,a5,0x1c
    e883fe68:	60b6c68b          	lrd	a3,a3,a1,0
    e883fe6c:	8fd5                	or	a5,a5,a3
        t = 0;
    e883fe6e:	4681                	li	a3,0
     if (w >= 3) {
    e883fe70:	00f87963          	bgeu	a6,a5,e883fe82 <mp_div_3+0x86>
        t = (w * ((mp_word)b)) >> ((mp_word)DIGIT_BIT);
    e883fe74:	02a786b3          	mul	a3,a5,a0
    e883fe78:	82f1                	srli	a3,a3,0x1c
        w -= t+t+t;
    e883fe7a:	2316978b          	muls	a5,a3,a7
        while (w >= 3) {
    e883fe7e:	00f86863          	bltu	a6,a5,e883fe8e <mp_div_3+0x92>
      q.dp[ix] = (mp_digit)t;
    e883fe82:	7322                	ld	t1,40(sp)
  for (ix = a->used - 1; ix >= 0; ix--) {
    e883fe84:	377d                	addiw	a4,a4,-1
      q.dp[ix] = (mp_digit)t;
    e883fe86:	60b3568b          	srd	a3,t1,a1,0
  for (ix = a->used - 1; ix >= 0; ix--) {
    e883fe8a:	15e1                	addi	a1,a1,-8
    e883fe8c:	b76d                	j	e883fe36 <mp_div_3+0x3a>
           t += 1;
    e883fe8e:	0685                	addi	a3,a3,1
           w -= 3;
    e883fe90:	17f5                	addi	a5,a5,-3
    e883fe92:	b7f5                	j	e883fe7e <mp_div_3+0x82>

00000000e883fe94 <mp_dr_is_modulus>:
int mp_dr_is_modulus(mp_int *a)
{
   int ix;

   /* must be at least two digits */
   if (a->used < 2) {
    e883fe94:	4114                	lw	a3,0(a0)
    e883fe96:	4785                	li	a5,1
    e883fe98:	02d7d163          	bge	a5,a3,e883feba <mp_dr_is_modulus+0x26>

   /* must be of the form b**k - a [a <= b] so all
    * but the first digit must be equal to -1 (mod b).
    */
   for (ix = 1; ix < a->used; ix++) {
       if (a->dp[ix] != MP_MASK) {
    e883fe9c:	690c                	ld	a1,16(a0)
    e883fe9e:	10000737          	lui	a4,0x10000
    e883fea2:	177d                	addi	a4,a4,-1
    e883fea4:	66f5c60b          	lrd	a2,a1,a5,3
    e883fea8:	00e61963          	bne	a2,a4,e883feba <mp_dr_is_modulus+0x26>
   for (ix = 1; ix < a->used; ix++) {
    e883feac:	0785                	addi	a5,a5,1
    e883feae:	0007861b          	sext.w	a2,a5
    e883feb2:	fed649e3          	blt	a2,a3,e883fea4 <mp_dr_is_modulus+0x10>
          return 0;
       }
   }
   return 1;
    e883feb6:	4505                	li	a0,1
    e883feb8:	8082                	ret
      return 0;
    e883feba:	4501                	li	a0,0
}
    e883febc:	8082                	ret

00000000e883febe <mp_dr_reduce>:
 *
 * Input x must be in the range 0 <= x <= (n-1)**2
 */
int
mp_dr_reduce (mp_int * x, mp_int * n, mp_digit k)
{
    e883febe:	715d                	addi	sp,sp,-80
    e883fec0:	e0a2                	sd	s0,64(sp)
    e883fec2:	f44e                	sd	s3,40(sp)
    e883fec4:	ec56                	sd	s5,24(sp)
    e883fec6:	e486                	sd	ra,72(sp)
    e883fec8:	fc26                	sd	s1,56(sp)
    e883feca:	f84a                	sd	s2,48(sp)
    e883fecc:	f052                	sd	s4,32(sp)
    e883fece:	e85a                	sd	s6,16(sp)
    e883fed0:	e45e                	sd	s7,8(sp)
    e883fed2:	e062                	sd	s8,0(sp)
  int      err, i, m;
  mp_word  r;
  mp_digit mu, *tmpx1, *tmpx2;

  /* m = digits in modulus */
  m = n->used;
    e883fed4:	0005a903          	lw	s2,0(a1)

  /* ensure that "x" has at least 2m digits */
  if (x->alloc < m + m) {
    e883fed8:	415c                	lw	a5,4(a0)
{
    e883feda:	89ae                	mv	s3,a1
  if (x->alloc < m + m) {
    e883fedc:	0019159b          	slliw	a1,s2,0x1
{
    e883fee0:	842a                	mv	s0,a0
    e883fee2:	8ab2                	mv	s5,a2
  if (x->alloc < m + m) {
    e883fee4:	06b7c063          	blt	a5,a1,e883ff44 <mp_dr_reduce+0x86>
  /* aliases for digits */
  /* alias for lower half of x */
  tmpx1 = x->dp;

  /* alias for upper half of x, or x/B**m */
  tmpx2 = x->dp + m;
    e883fee8:	00391a13          	slli	s4,s2,0x3
    e883feec:	87ca                	mv	a5,s2
    e883feee:	00095363          	bgez	s2,e883fef4 <mp_dr_reduce+0x36>
    e883fef2:	4781                	li	a5,0
    e883fef4:	00379b13          	slli	s6,a5,0x3
    e883fef8:	0785                	addi	a5,a5,1
    e883fefa:	00379493          	slli	s1,a5,0x3

  /* set final carry */
  *tmpx1++ = mu;

  /* zero words above m */
  for (i = m + 1; i < x->used; i++) {
    e883fefe:	00190c1b          	addiw	s8,s2,1
  mp_clamp (x);

  /* if x >= n then subtract and reduce again
   * Each successive "recursion" makes the input smaller and smaller.
   */
  if (mp_cmp_mag (x, n) != MP_LT) {
    e883ff02:	5bfd                	li	s7,-1
  tmpx1 = x->dp;
    e883ff04:	6814                	ld	a3,16(s0)
  for (i = 0; i < m; i++) {
    e883ff06:	4701                	li	a4,0
  mu = 0;
    e883ff08:	4781                	li	a5,0
  tmpx2 = x->dp + m;
    e883ff0a:	014685b3          	add	a1,a3,s4
  for (i = 0; i < m; i++) {
    e883ff0e:	0007061b          	sext.w	a2,a4
    e883ff12:	05264863          	blt	a2,s2,e883ff62 <mp_dr_reduce+0xa4>
  *tmpx1++ = mu;
    e883ff16:	6166d78b          	srd	a5,a3,s6,0
    e883ff1a:	00968733          	add	a4,a3,s1
  for (i = m + 1; i < x->used; i++) {
    e883ff1e:	87e2                	mv	a5,s8
    e883ff20:	4014                	lw	a3,0(s0)
    e883ff22:	04d7ce63          	blt	a5,a3,e883ff7e <mp_dr_reduce+0xc0>
  mp_clamp (x);
    e883ff26:	8522                	mv	a0,s0
    e883ff28:	887ff0ef          	jal	ra,e883f7ae <mp_clamp>
  if (mp_cmp_mag (x, n) != MP_LT) {
    e883ff2c:	85ce                	mv	a1,s3
    e883ff2e:	8522                	mv	a0,s0
    e883ff30:	955ff0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e883ff34:	05750963          	beq	a0,s7,e883ff86 <mp_dr_reduce+0xc8>
    s_mp_sub(x, n, x);
    e883ff38:	8622                	mv	a2,s0
    e883ff3a:	85ce                	mv	a1,s3
    e883ff3c:	8522                	mv	a0,s0
    e883ff3e:	1d3020ef          	jal	ra,e8842910 <s_mp_sub>
    goto top;
    e883ff42:	b7c9                	j	e883ff04 <mp_dr_reduce+0x46>
    if ((err = mp_grow (x, m + m)) != MP_OKAY) {
    e883ff44:	612000ef          	jal	ra,e8840556 <mp_grow>
    e883ff48:	d145                	beqz	a0,e883fee8 <mp_dr_reduce+0x2a>
  }
  return MP_OKAY;
}
    e883ff4a:	60a6                	ld	ra,72(sp)
    e883ff4c:	6406                	ld	s0,64(sp)
    e883ff4e:	74e2                	ld	s1,56(sp)
    e883ff50:	7942                	ld	s2,48(sp)
    e883ff52:	79a2                	ld	s3,40(sp)
    e883ff54:	7a02                	ld	s4,32(sp)
    e883ff56:	6ae2                	ld	s5,24(sp)
    e883ff58:	6b42                	ld	s6,16(sp)
    e883ff5a:	6ba2                	ld	s7,8(sp)
    e883ff5c:	6c02                	ld	s8,0(sp)
    e883ff5e:	6161                	addi	sp,sp,80
    e883ff60:	8082                	ret
      r         = ((mp_word)*tmpx2++) * ((mp_word)k) + *tmpx1 + mu;
    e883ff62:	66e6c60b          	lrd	a2,a3,a4,3
    e883ff66:	97b2                	add	a5,a5,a2
    e883ff68:	66e5c60b          	lrd	a2,a1,a4,3
    e883ff6c:	20ca978b          	mula	a5,s5,a2
      *tmpx1++  = (mp_digit)(r & MP_MASK);
    e883ff70:	6c07b60b          	extu	a2,a5,27,0
    e883ff74:	66e6d60b          	srd	a2,a3,a4,3
      mu        = (mp_digit)(r >> ((mp_word)DIGIT_BIT));
    e883ff78:	83f1                	srli	a5,a5,0x1c
  for (i = 0; i < m; i++) {
    e883ff7a:	0705                	addi	a4,a4,1
    e883ff7c:	bf49                	j	e883ff0e <mp_dr_reduce+0x50>
      *tmpx1++ = 0;
    e883ff7e:	7887500b          	sdia	zero,(a4),8,0
  for (i = m + 1; i < x->used; i++) {
    e883ff82:	2785                	addiw	a5,a5,1
    e883ff84:	bf71                	j	e883ff20 <mp_dr_reduce+0x62>
  return MP_OKAY;
    e883ff86:	4501                	li	a0,0
    e883ff88:	b7c9                	j	e883ff4a <mp_dr_reduce+0x8c>

00000000e883ff8a <mp_dr_setup>:
{
   /* the casts are required if DIGIT_BIT is one less than
    * the number of bits in a mp_digit [e.g. DIGIT_BIT==31]
    */
   *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - 
        ((mp_word)a->dp[0]));
    e883ff8a:	691c                	ld	a5,16(a0)
   *d = (mp_digit)((((mp_word)1) << ((mp_word)DIGIT_BIT)) - 
    e883ff8c:	6398                	ld	a4,0(a5)
    e883ff8e:	100007b7          	lui	a5,0x10000
    e883ff92:	8f99                	sub	a5,a5,a4
    e883ff94:	e19c                	sd	a5,0(a1)
}
    e883ff96:	8082                	ret

00000000e883ff98 <mp_exch>:
mp_exch (mp_int * a, mp_int * b)
{
  mp_int  t;

  t  = *a;
  *a = *b;
    e883ff98:	6190                	ld	a2,0(a1)
  t  = *a;
    e883ff9a:	6114                	ld	a3,0(a0)
    e883ff9c:	4518                	lw	a4,8(a0)
  *a = *b;
    e883ff9e:	e110                	sd	a2,0(a0)
    e883ffa0:	6590                	ld	a2,8(a1)
  t  = *a;
    e883ffa2:	691c                	ld	a5,16(a0)
  *a = *b;
    e883ffa4:	e510                	sd	a2,8(a0)
    e883ffa6:	6990                	ld	a2,16(a1)
    e883ffa8:	e910                	sd	a2,16(a0)
  *b = t;
    e883ffaa:	e194                	sd	a3,0(a1)
    e883ffac:	c598                	sw	a4,8(a1)
    e883ffae:	e99c                	sd	a5,16(a1)
}
    e883ffb0:	8082                	ret

00000000e883ffb2 <mp_exptmod>:
 * exptmod functions.  Originally the call to the montgomery code was
 * embedded in the normal function but that wasted alot of stack space
 * for nothing (since 99% of the time the Montgomery code would be called)
 */
int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y)
{
    e883ffb2:	711d                	addi	sp,sp,-96
    e883ffb4:	e8a2                	sd	s0,80(sp)
    e883ffb6:	ec86                	sd	ra,88(sp)
    e883ffb8:	e4a6                	sd	s1,72(sp)
    e883ffba:	e0ca                	sd	s2,64(sp)
    e883ffbc:	fc4e                	sd	s3,56(sp)
    e883ffbe:	f852                	sd	s4,48(sp)
  int dr;

  /* modulus P must be positive */
  if (P->sign == MP_NEG) {
    e883ffc0:	461c                	lw	a5,8(a2)
    e883ffc2:	4405                	li	s0,1
    e883ffc4:	0c878263          	beq	a5,s0,e8840088 <mp_exptmod+0xd6>
     return MP_VAL;
  }

  /* if exponent X is negative we have to recurse */
  if (X->sign == MP_NEG) {
    e883ffc8:	459c                	lw	a5,8(a1)
    e883ffca:	8a36                	mv	s4,a3
    e883ffcc:	84b2                	mv	s1,a2
    e883ffce:	892e                	mv	s2,a1
    e883ffd0:	89aa                	mv	s3,a0
    e883ffd2:	06879363          	bne	a5,s0,e8840038 <mp_exptmod+0x86>
#ifdef BN_MP_INVMOD_C
     mp_int tmpG, tmpX;
     int err;

     /* first compute 1/G mod P */
     if ((err = mp_init(&tmpG)) != MP_OKAY) {
    e883ffd6:	850a                	mv	a0,sp
    e883ffd8:	5d4000ef          	jal	ra,e88405ac <mp_init>
    e883ffdc:	842a                	mv	s0,a0
    e883ffde:	e919                	bnez	a0,e883fff4 <mp_exptmod+0x42>
        return err;
     }
     if ((err = mp_invmod(G, P, &tmpG)) != MP_OKAY) {
    e883ffe0:	860a                	mv	a2,sp
    e883ffe2:	85a6                	mv	a1,s1
    e883ffe4:	854e                	mv	a0,s3
    e883ffe6:	6ec000ef          	jal	ra,e88406d2 <mp_invmod>
    e883ffea:	842a                	mv	s0,a0
    e883ffec:	cd09                	beqz	a0,e8840006 <mp_exptmod+0x54>
        return err;
     }

     /* now get |X| */
     if ((err = mp_init(&tmpX)) != MP_OKAY) {
        mp_clear(&tmpG);
    e883ffee:	850a                	mv	a0,sp
    e883fff0:	fe0ff0ef          	jal	ra,e883f7d0 <mp_clear>
    return MP_VAL;
#endif
#ifdef BN_MP_EXPTMOD_FAST_C
  }
#endif
}
    e883fff4:	8522                	mv	a0,s0
    e883fff6:	60e6                	ld	ra,88(sp)
    e883fff8:	6446                	ld	s0,80(sp)
    e883fffa:	64a6                	ld	s1,72(sp)
    e883fffc:	6906                	ld	s2,64(sp)
    e883fffe:	79e2                	ld	s3,56(sp)
    e8840000:	7a42                	ld	s4,48(sp)
    e8840002:	6125                	addi	sp,sp,96
    e8840004:	8082                	ret
     if ((err = mp_init(&tmpX)) != MP_OKAY) {
    e8840006:	0828                	addi	a0,sp,24
    e8840008:	5a4000ef          	jal	ra,e88405ac <mp_init>
    e884000c:	842a                	mv	s0,a0
    e884000e:	f165                	bnez	a0,e883ffee <mp_exptmod+0x3c>
     if ((err = mp_abs(X, &tmpX)) != MP_OKAY) {
    e8840010:	082c                	addi	a1,sp,24
    e8840012:	854a                	mv	a0,s2
    e8840014:	e14ff0ef          	jal	ra,e883f628 <mp_abs>
    e8840018:	842a                	mv	s0,a0
    e884001a:	c519                	beqz	a0,e8840028 <mp_exptmod+0x76>
     mp_clear_multi(&tmpG, &tmpX, NULL);
    e884001c:	4601                	li	a2,0
    e884001e:	082c                	addi	a1,sp,24
    e8840020:	850a                	mv	a0,sp
    e8840022:	fe8ff0ef          	jal	ra,e883f80a <mp_clear_multi>
     return err;
    e8840026:	b7f9                	j	e883fff4 <mp_exptmod+0x42>
     err = mp_exptmod(&tmpG, &tmpX, P, Y);
    e8840028:	86d2                	mv	a3,s4
    e884002a:	8626                	mv	a2,s1
    e884002c:	082c                	addi	a1,sp,24
    e884002e:	850a                	mv	a0,sp
    e8840030:	f83ff0ef          	jal	ra,e883ffb2 <mp_exptmod>
    e8840034:	842a                	mv	s0,a0
    e8840036:	b7dd                	j	e884001c <mp_exptmod+0x6a>
  if (mp_reduce_is_2k_l(P) == MP_YES) {
    e8840038:	8532                	mv	a0,a2
    e884003a:	5ea010ef          	jal	ra,e8841624 <mp_reduce_is_2k_l>
     return s_mp_exptmod(G, X, P, Y, 1);
    e884003e:	4705                	li	a4,1
  if (mp_reduce_is_2k_l(P) == MP_YES) {
    e8840040:	02850d63          	beq	a0,s0,e884007a <mp_exptmod+0xc8>
  dr = mp_dr_is_modulus(P);
    e8840044:	8526                	mv	a0,s1
    e8840046:	e4fff0ef          	jal	ra,e883fe94 <mp_dr_is_modulus>
  if (dr == 0) {
    e884004a:	e511                	bnez	a0,e8840056 <mp_exptmod+0xa4>
     dr = mp_reduce_is_2k(P) << 1;
    e884004c:	8526                	mv	a0,s1
    e884004e:	584010ef          	jal	ra,e88415d2 <mp_reduce_is_2k>
    e8840052:	0015151b          	slliw	a0,a0,0x1
  if (mp_isodd (P) == 1 || dr !=  0) {
    e8840056:	409c                	lw	a5,0(s1)
    e8840058:	00f05663          	blez	a5,e8840064 <mp_exptmod+0xb2>
    e884005c:	689c                	ld	a5,16(s1)
    e884005e:	639c                	ld	a5,0(a5)
    e8840060:	8b85                	andi	a5,a5,1
    e8840062:	e391                	bnez	a5,e8840066 <mp_exptmod+0xb4>
    e8840064:	c911                	beqz	a0,e8840078 <mp_exptmod+0xc6>
    return mp_exptmod_fast (G, X, P, Y, dr);
    e8840066:	872a                	mv	a4,a0
    e8840068:	86d2                	mv	a3,s4
    e884006a:	8626                	mv	a2,s1
    e884006c:	85ca                	mv	a1,s2
    e884006e:	854e                	mv	a0,s3
    e8840070:	01c000ef          	jal	ra,e884008c <mp_exptmod_fast>
    return s_mp_exptmod (G, X, P, Y, 0);
    e8840074:	842a                	mv	s0,a0
    e8840076:	bfbd                	j	e883fff4 <mp_exptmod+0x42>
    e8840078:	4701                	li	a4,0
    e884007a:	86d2                	mv	a3,s4
    e884007c:	8626                	mv	a2,s1
    e884007e:	85ca                	mv	a1,s2
    e8840080:	854e                	mv	a0,s3
    e8840082:	19c020ef          	jal	ra,e884221e <s_mp_exptmod>
    e8840086:	b7fd                	j	e8840074 <mp_exptmod+0xc2>
     return MP_VAL;
    e8840088:	5475                	li	s0,-3
    e884008a:	b7ad                	j	e883fff4 <mp_exptmod+0x42>

00000000e884008c <mp_exptmod_fast>:
#else
   #define TAB_SIZE 256
#endif

int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode)
{
    e884008c:	7119                	addi	sp,sp,-128
    e884008e:	7379                	lui	t1,0xffffe
    e8840090:	f466                	sd	s9,40(sp)
    e8840092:	7b030313          	addi	t1,t1,1968 # ffffffffffffe7b0 <__DRAM0_INF_BASE+0xffffffff0000e7b0>
    e8840096:	f8a2                	sd	s0,112(sp)
    e8840098:	f4a6                	sd	s1,104(sp)
    e884009a:	fc5e                	sd	s7,56(sp)
    e884009c:	ec6e                	sd	s11,24(sp)
    e884009e:	fc86                	sd	ra,120(sp)
    e88400a0:	f0ca                	sd	s2,96(sp)
    e88400a2:	ecce                	sd	s3,88(sp)
    e88400a4:	e8d2                	sd	s4,80(sp)
    e88400a6:	e4d6                	sd	s5,72(sp)
    e88400a8:	e0da                	sd	s6,64(sp)
    e88400aa:	f862                	sd	s8,48(sp)
    e88400ac:	f06a                	sd	s10,32(sp)
    e88400ae:	8baa                	mv	s7,a0
    e88400b0:	911a                	add	sp,sp,t1
   * the code with if statements everywhere.
   */
  int     (*redux)(mp_int*,mp_int*,mp_digit);

  /* find window size */
  x = mp_count_bits (X);
    e88400b2:	852e                	mv	a0,a1
{
    e88400b4:	8dae                	mv	s11,a1
    e88400b6:	8432                	mv	s0,a2
    e88400b8:	f436                	sd	a3,40(sp)
    e88400ba:	e83a                	sd	a4,16(sp)
  x = mp_count_bits (X);
    e88400bc:	883ff0ef          	jal	ra,e883f93e <mp_count_bits>
  if (x <= 7) {
    winsize = 2;
    e88400c0:	4489                	li	s1,2
  if (x <= 7) {
    e88400c2:	479d                	li	a5,7
    e88400c4:	02a7dc63          	bge	a5,a0,e88400fc <mp_exptmod_fast+0x70>
  } else if (x <= 36) {
    e88400c8:	02400793          	li	a5,36
    winsize = 3;
    e88400cc:	448d                	li	s1,3
  } else if (x <= 36) {
    e88400ce:	02a7d763          	bge	a5,a0,e88400fc <mp_exptmod_fast+0x70>
  } else if (x <= 140) {
    e88400d2:	08c00793          	li	a5,140
    winsize = 4;
    e88400d6:	4491                	li	s1,4
  } else if (x <= 140) {
    e88400d8:	02a7d263          	bge	a5,a0,e88400fc <mp_exptmod_fast+0x70>
  } else if (x <= 450) {
    e88400dc:	1c200793          	li	a5,450
    winsize = 5;
    e88400e0:	4495                	li	s1,5
  } else if (x <= 450) {
    e88400e2:	00a7dd63          	bge	a5,a0,e88400fc <mp_exptmod_fast+0x70>
  } else if (x <= 1303) {
    e88400e6:	51700793          	li	a5,1303
    winsize = 6;
    e88400ea:	4499                	li	s1,6
  } else if (x <= 1303) {
    e88400ec:	00a7d863          	bge	a5,a0,e88400fc <mp_exptmod_fast+0x70>
  } else if (x <= 3529) {
    e88400f0:	6485                	lui	s1,0x1
    e88400f2:	dc948493          	addi	s1,s1,-567 # dc9 <memcmp-0xe87ff237>
    winsize = 7;
  } else {
    winsize = 8;
    e88400f6:	00a4a4b3          	slt	s1,s1,a0
    e88400fa:	049d                	addi	s1,s1,7
  }
#endif

  /* init M array */
  /* init first cell */
  if ((err = mp_init(&M[1])) != MP_OKAY) {
    e88400fc:	6789                	lui	a5,0x2
    e88400fe:	0098                	addi	a4,sp,64
    e8840100:	79fd                	lui	s3,0xfffff
    e8840102:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840106:	97ba                	add	a5,a5,a4
    e8840108:	80098993          	addi	s3,s3,-2048 # ffffffffffffe800 <__DRAM0_INF_BASE+0xffffffff0000e800>
    e884010c:	99be                	add	s3,s3,a5
    e884010e:	01898513          	addi	a0,s3,24
    e8840112:	49a000ef          	jal	ra,e88405ac <mp_init>
    e8840116:	8c2a                	mv	s8,a0
    e8840118:	22051f63          	bnez	a0,e8840356 <mp_exptmod_fast+0x2ca>
     return err;
  }

  /* now init the second half of the array */
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    e884011c:	4785                	li	a5,1
    e884011e:	fff48a9b          	addiw	s5,s1,-1
    e8840122:	01579a3b          	sllw	s4,a5,s5
    e8840126:	009797bb          	sllw	a5,a5,s1
    e884012a:	e43e                	sd	a5,8(sp)
    e884012c:	47e1                	li	a5,24
    e884012e:	20fa198b          	mula	s3,s4,a5
    e8840132:	8cd2                	mv	s9,s4
    e8840134:	8952                	mv	s2,s4
    e8840136:	8b4e                	mv	s6,s3
    e8840138:	8d4e                	mv	s10,s3
    e884013a:	67a2                	ld	a5,8(sp)
    e884013c:	1ef94a63          	blt	s2,a5,e8840330 <mp_exptmod_fast+0x2a4>
      return err;
    }
  }

  /* determine and setup reduction code */
  if (redmode == 0) {
    e8840140:	67c2                	ld	a5,16(sp)
    e8840142:	75f9                	lui	a1,0xffffe
    e8840144:	7e058593          	addi	a1,a1,2016 # ffffffffffffe7e0 <__DRAM0_INF_BASE+0xffffffff0000e7e0>
    e8840148:	24079363          	bnez	a5,e884038e <mp_exptmod_fast+0x302>
#ifdef BN_MP_MONTGOMERY_SETUP_C     
     /* now setup montgomery  */
     if ((err = mp_montgomery_setup (P, &mp)) != MP_OKAY) {
    e884014c:	6789                	lui	a5,0x2
    e884014e:	0098                	addi	a4,sp,64
    e8840150:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840154:	97ba                	add	a5,a5,a4
    e8840156:	95be                	add	a1,a1,a5
    e8840158:	8522                	mv	a0,s0
    e884015a:	663000ef          	jal	ra,e8840fbc <mp_montgomery_setup>
    e884015e:	8c2a                	mv	s8,a0
    e8840160:	3a051563          	bnez	a0,e884050a <mp_exptmod_fast+0x47e>
     goto LBL_M;
#endif

     /* automatically pick the comba one if available (saves quite a few calls/ifs) */
#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C
     if (((P->used * 2 + 1) < MP_WARRAY) &&
    e8840164:	4018                	lw	a4,0(s0)
    e8840166:	1ff00693          	li	a3,511
     } else 
#endif
     {
#ifdef BN_MP_MONTGOMERY_REDUCE_C
        /* use slower baseline Montgomery method */
        redux = mp_montgomery_reduce;
    e884016a:	00001917          	auipc	s2,0x1
    e884016e:	d5290913          	addi	s2,s2,-686 # e8840ebc <mp_montgomery_reduce>
     if (((P->used * 2 + 1) < MP_WARRAY) &&
    e8840172:	0017179b          	slliw	a5,a4,0x1
    e8840176:	2785                	addiw	a5,a5,1
    e8840178:	00f6ca63          	blt	a3,a5,e884018c <mp_exptmod_fast+0x100>
    e884017c:	0ff00793          	li	a5,255
    e8840180:	00e7c663          	blt	a5,a4,e884018c <mp_exptmod_fast+0x100>
        redux = fast_mp_montgomery_reduce;
    e8840184:	fffff917          	auipc	s2,0xfffff
    e8840188:	f3a90913          	addi	s2,s2,-198 # e883f0be <fast_mp_montgomery_reduce>
     goto LBL_M;
#endif
  }

  /* setup result */
  if ((err = mp_init (&res)) != MP_OKAY) {
    e884018c:	6789                	lui	a5,0x2
    e884018e:	0098                	addi	a4,sp,64
    e8840190:	7d79                	lui	s10,0xffffe
    e8840192:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840196:	97ba                	add	a5,a5,a4
    e8840198:	7e8d0d13          	addi	s10,s10,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e884019c:	9d3e                	add	s10,s10,a5
    e884019e:	856a                	mv	a0,s10
    e88401a0:	40c000ef          	jal	ra,e88405ac <mp_init>
    e88401a4:	8c2a                	mv	s8,a0
    e88401a6:	36051263          	bnez	a0,e884050a <mp_exptmod_fast+0x47e>

   *
   * The first half of the table is not computed though accept for M[0] and M[1]
   */

  if (redmode == 0) {
    e88401aa:	6742                	ld	a4,16(sp)
    e88401ac:	22071463          	bnez	a4,e88403d4 <mp_exptmod_fast+0x348>
#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C
     /* now we need R mod m */
     if ((err = mp_montgomery_calc_normalization (&res, P)) != MP_OKAY) {
    e88401b0:	85a2                	mv	a1,s0
    e88401b2:	856a                	mv	a0,s10
    e88401b4:	477000ef          	jal	ra,e8840e2a <mp_montgomery_calc_normalization>
    e88401b8:	8c2a                	mv	s8,a0
    e88401ba:	32051d63          	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
     err = MP_VAL;
     goto LBL_RES;
#endif

     /* now set M[1] to G * R mod m */
     if ((err = mp_mulmod (G, &res, P, &M[1])) != MP_OKAY) {
    e88401be:	6789                	lui	a5,0x2
    e88401c0:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e88401c4:	0098                	addi	a4,sp,64
    e88401c6:	76fd                	lui	a3,0xfffff
    e88401c8:	97ba                	add	a5,a5,a4
    e88401ca:	96be                	add	a3,a3,a5
    e88401cc:	81868693          	addi	a3,a3,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    e88401d0:	8622                	mv	a2,s0
    e88401d2:	85ea                	mv	a1,s10
    e88401d4:	855e                	mv	a0,s7
    e88401d6:	092010ef          	jal	ra,e8841268 <mp_mulmod>
    e88401da:	8c2a                	mv	s8,a0
    e88401dc:	30051c63          	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
        goto LBL_RES;
     }
  }

  /* compute the value at M[1<<(winsize-1)] by squaring M[1] (winsize-1) times */
  if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) {
    e88401e0:	6789                	lui	a5,0x2
    e88401e2:	0098                	addi	a4,sp,64
    e88401e4:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e88401e8:	97ba                	add	a5,a5,a4
    e88401ea:	757d                	lui	a0,0xfffff
    e88401ec:	953e                	add	a0,a0,a5
    e88401ee:	85ce                	mv	a1,s3
    e88401f0:	81850513          	addi	a0,a0,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    e88401f4:	edcff0ef          	jal	ra,e883f8d0 <mp_copy>
    e88401f8:	8c2a                	mv	s8,a0
    e88401fa:	2e051d63          	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>

  for (x = 0; x < (winsize - 1); x++) {
    if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) {
      goto LBL_RES;
    }
    if ((err = redux (&M[1 << (winsize - 1)], P, mp)) != MP_OKAY) {
    e88401fe:	6789                	lui	a5,0x2
    e8840200:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840204:	0098                	addi	a4,sp,64
    e8840206:	7bf9                	lui	s7,0xffffe
    e8840208:	97ba                	add	a5,a5,a4
  for (x = 0; x < (winsize - 1); x++) {
    e884020a:	4d01                	li	s10,0
    if ((err = redux (&M[1 << (winsize - 1)], P, mp)) != MP_OKAY) {
    e884020c:	9bbe                	add	s7,s7,a5
    if ((err = mp_sqr (&M[1 << (winsize - 1)], &M[1 << (winsize - 1)])) != MP_OKAY) {
    e884020e:	85ce                	mv	a1,s3
    e8840210:	854e                	mv	a0,s3
    e8840212:	554010ef          	jal	ra,e8841766 <mp_sqr>
    e8840216:	8c2a                	mv	s8,a0
    e8840218:	2c051e63          	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
    if ((err = redux (&M[1 << (winsize - 1)], P, mp)) != MP_OKAY) {
    e884021c:	7e0bb603          	ld	a2,2016(s7) # ffffffffffffe7e0 <__DRAM0_INF_BASE+0xffffffff0000e7e0>
    e8840220:	85a2                	mv	a1,s0
    e8840222:	854e                	mv	a0,s3
    e8840224:	9902                	jalr	s2
    e8840226:	32051663          	bnez	a0,e8840552 <mp_exptmod_fast+0x4c6>
  for (x = 0; x < (winsize - 1); x++) {
    e884022a:	2d05                	addiw	s10,s10,1
    e884022c:	ff5d41e3          	blt	s10,s5,e884020e <mp_exptmod_fast+0x182>
      goto LBL_RES;
    }
  }

  /* create upper table */
  for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) {
    e8840230:	47e1                	li	a5,24
    e8840232:	2c85                	addiw	s9,s9,1
    if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) {
    e8840234:	6709                	lui	a4,0x2
    e8840236:	414c8bb3          	sub	s7,s9,s4
    e884023a:	0094                	addi	a3,sp,64
    e884023c:	02fb8bb3          	mul	s7,s7,a5
    e8840240:	82070793          	addi	a5,a4,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840244:	97b6                	add	a5,a5,a3
    e8840246:	7afd                	lui	s5,0xfffff
    e8840248:	9abe                	add	s5,s5,a5
      goto LBL_RES;
    }
    if ((err = redux (&M[x], P, mp)) != MP_OKAY) {
    e884024a:	82070793          	addi	a5,a4,-2016
    e884024e:	7d79                	lui	s10,0xffffe
    e8840250:	97b6                	add	a5,a5,a3
    if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) {
    e8840252:	818a8a93          	addi	s5,s5,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    if ((err = redux (&M[x], P, mp)) != MP_OKAY) {
    e8840256:	9d3e                	add	s10,s10,a5
  for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) {
    e8840258:	67a2                	ld	a5,8(sp)
    e884025a:	18fccf63          	blt	s9,a5,e88403f8 <mp_exptmod_fast+0x36c>

    if (bitcpy == winsize) {
      /* ok window is filled so square as required and multiply  */
      /* square first */
      for (x = 0; x < winsize; x++) {
        if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e884025e:	6789                	lui	a5,0x2
    e8840260:	008c                	addi	a1,sp,64
    e8840262:	82078613          	addi	a2,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840266:	76f9                	lui	a3,0xffffe
    e8840268:	962e                	add	a2,a2,a1
    e884026a:	7e868993          	addi	s3,a3,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e884026e:	99b2                	add	s3,s3,a2
          goto LBL_RES;
        }
        if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e8840270:	82078613          	addi	a2,a5,-2016
    e8840274:	962e                	add	a2,a2,a1
    e8840276:	96b2                	add	a3,a3,a2
  digidx = X->used - 1;
    e8840278:	000dab83          	lw	s7,0(s11)
        if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e884027c:	ec36                	sd	a3,24(sp)
          goto LBL_RES;
        }
      }

      /* then multiply */
      if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) {
    e884027e:	82078793          	addi	a5,a5,-2016
    e8840282:	76fd                	lui	a3,0xfffff
    e8840284:	80068693          	addi	a3,a3,-2048 # ffffffffffffe800 <__DRAM0_INF_BASE+0xffffffff0000e800>
    e8840288:	97ae                	add	a5,a5,a1
    e884028a:	97b6                	add	a5,a5,a3
  digidx = X->used - 1;
    e884028c:	3bfd                	addiw	s7,s7,-1
  mode   = 0;
    e884028e:	4701                	li	a4,0
  bitcpy = 0;
    e8840290:	4a81                	li	s5,0
  bitbuf = 0;
    e8840292:	4c01                	li	s8,0
  bitcnt = 1;
    e8840294:	4d05                	li	s10,1
  buf    = 0;
    e8840296:	4c81                	li	s9,0
      if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) {
    e8840298:	f83e                	sd	a5,48(sp)
    if (--bitcnt == 0) {
    e884029a:	3d7d                	addiw	s10,s10,-1
    e884029c:	000d1b63          	bnez	s10,e88402b2 <mp_exptmod_fast+0x226>
      if (digidx == -1) {
    e88402a0:	57fd                	li	a5,-1
    e88402a2:	1afb8963          	beq	s7,a5,e8840454 <mp_exptmod_fast+0x3c8>
      buf    = X->dp[digidx--];
    e88402a6:	010db683          	ld	a3,16(s11)
      bitcnt = (int)DIGIT_BIT;
    e88402aa:	4d71                	li	s10,28
      buf    = X->dp[digidx--];
    e88402ac:	6776cc8b          	lrd	s9,a3,s7,3
    e88402b0:	3bfd                	addiw	s7,s7,-1
    y     = (mp_digit)(buf >> (DIGIT_BIT - 1)) & 1;
    e88402b2:	6dbcb50b          	extu	a0,s9,27,27
    buf <<= (mp_digit)1;
    e88402b6:	0c86                	slli	s9,s9,0x1
    if (mode == 0 && y == 0) {
    e88402b8:	16071963          	bnez	a4,e884042a <mp_exptmod_fast+0x39e>
    e88402bc:	16050563          	beqz	a0,e8840426 <mp_exptmod_fast+0x39a>
    bitbuf |= (y << (winsize - ++bitcpy));
    e88402c0:	2a85                	addiw	s5,s5,1
    e88402c2:	4154873b          	subw	a4,s1,s5
    e88402c6:	00e5153b          	sllw	a0,a0,a4
    e88402ca:	00ac67b3          	or	a5,s8,a0
    e88402ce:	2781                	sext.w	a5,a5
    e88402d0:	f03e                	sd	a5,32(sp)
    if (bitcpy == winsize) {
    e88402d2:	15549863          	bne	s1,s5,e8840422 <mp_exptmod_fast+0x396>
      for (x = 0; x < winsize; x++) {
    e88402d6:	4701                	li	a4,0
        if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e88402d8:	85ce                	mv	a1,s3
    e88402da:	854e                	mv	a0,s3
    e88402dc:	fc3a                	sd	a4,56(sp)
    e88402de:	488010ef          	jal	ra,e8841766 <mp_sqr>
    e88402e2:	8c2a                	mv	s8,a0
    e88402e4:	20051863          	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
        if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e88402e8:	67e2                	ld	a5,24(sp)
    e88402ea:	85a2                	mv	a1,s0
    e88402ec:	854e                	mv	a0,s3
    e88402ee:	7e07b603          	ld	a2,2016(a5)
    e88402f2:	9902                	jalr	s2
    e88402f4:	8c2a                	mv	s8,a0
    e88402f6:	1e051f63          	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
      for (x = 0; x < winsize; x++) {
    e88402fa:	7762                	ld	a4,56(sp)
    e88402fc:	2705                	addiw	a4,a4,1
    e88402fe:	fd574de3          	blt	a4,s5,e88402d8 <mp_exptmod_fast+0x24c>
      if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) {
    e8840302:	75c2                	ld	a1,48(sp)
    e8840304:	7702                	ld	a4,32(sp)
    e8840306:	47e1                	li	a5,24
    e8840308:	864e                	mv	a2,s3
    e884030a:	20f7158b          	mula	a1,a4,a5
    e884030e:	854e                	mv	a0,s3
    e8840310:	4f1000ef          	jal	ra,e8841000 <mp_mul>
    e8840314:	8c2a                	mv	s8,a0
    e8840316:	1c051f63          	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
        goto LBL_RES;
      }
      if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e884031a:	67e2                	ld	a5,24(sp)
    e884031c:	85a2                	mv	a1,s0
    e884031e:	854e                	mv	a0,s3
    e8840320:	7e07b603          	ld	a2,2016(a5)
    e8840324:	9902                	jalr	s2
    e8840326:	8c2a                	mv	s8,a0
    e8840328:	1c051663          	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
        goto LBL_RES;
      }

      /* empty window and reset */
      bitcpy = 0;
    e884032c:	4a81                	li	s5,0
    e884032e:	a20d                	j	e8840450 <mp_exptmod_fast+0x3c4>
    if ((err = mp_init(&M[x])) != MP_OKAY) {
    e8840330:	856a                	mv	a0,s10
    e8840332:	27a000ef          	jal	ra,e88405ac <mp_init>
    e8840336:	8c2a                	mv	s8,a0
    e8840338:	0d61                	addi	s10,s10,24
    e884033a:	c921                	beqz	a0,e884038a <mp_exptmod_fast+0x2fe>
      for (y = 1<<(winsize-1); y < x; y++) {
    e884033c:	052a4163          	blt	s4,s2,e884037e <mp_exptmod_fast+0x2f2>
      mp_clear(&M[1]);
    e8840340:	6789                	lui	a5,0x2
    e8840342:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840346:	0098                	addi	a4,sp,64
    e8840348:	757d                	lui	a0,0xfffff
    e884034a:	97ba                	add	a5,a5,a4
    e884034c:	953e                	add	a0,a0,a5
    e884034e:	81850513          	addi	a0,a0,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    e8840352:	c7eff0ef          	jal	ra,e883f7d0 <mp_clear>
  mp_clear(&M[1]);
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    mp_clear (&M[x]);
  }
  return err;
}
    e8840356:	6309                	lui	t1,0x2
    e8840358:	85030313          	addi	t1,t1,-1968 # 1850 <memcmp-0xe87fe7b0>
    e884035c:	911a                	add	sp,sp,t1
    e884035e:	70e6                	ld	ra,120(sp)
    e8840360:	8562                	mv	a0,s8
    e8840362:	7446                	ld	s0,112(sp)
    e8840364:	74a6                	ld	s1,104(sp)
    e8840366:	7906                	ld	s2,96(sp)
    e8840368:	69e6                	ld	s3,88(sp)
    e884036a:	6a46                	ld	s4,80(sp)
    e884036c:	6aa6                	ld	s5,72(sp)
    e884036e:	6b06                	ld	s6,64(sp)
    e8840370:	7be2                	ld	s7,56(sp)
    e8840372:	7c42                	ld	s8,48(sp)
    e8840374:	7ca2                	ld	s9,40(sp)
    e8840376:	7d02                	ld	s10,32(sp)
    e8840378:	6de2                	ld	s11,24(sp)
    e884037a:	6109                	addi	sp,sp,128
    e884037c:	8082                	ret
        mp_clear (&M[y]);
    e884037e:	855a                	mv	a0,s6
    e8840380:	c50ff0ef          	jal	ra,e883f7d0 <mp_clear>
      for (y = 1<<(winsize-1); y < x; y++) {
    e8840384:	2a05                	addiw	s4,s4,1
    e8840386:	0b61                	addi	s6,s6,24
    e8840388:	bf55                	j	e884033c <mp_exptmod_fast+0x2b0>
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    e884038a:	2905                	addiw	s2,s2,1
    e884038c:	b37d                	j	e884013a <mp_exptmod_fast+0xae>
  } else if (redmode == 1) {
    e884038e:	6742                	ld	a4,16(sp)
    e8840390:	4785                	li	a5,1
    e8840392:	02f71063          	bne	a4,a5,e88403b2 <mp_exptmod_fast+0x326>
     mp_dr_setup(P, &mp);
    e8840396:	6789                	lui	a5,0x2
    e8840398:	0098                	addi	a4,sp,64
    e884039a:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e884039e:	97ba                	add	a5,a5,a4
    e88403a0:	95be                	add	a1,a1,a5
    e88403a2:	8522                	mv	a0,s0
    e88403a4:	be7ff0ef          	jal	ra,e883ff8a <mp_dr_setup>
     redux = mp_dr_reduce;
    e88403a8:	00000917          	auipc	s2,0x0
    e88403ac:	b1690913          	addi	s2,s2,-1258 # e883febe <mp_dr_reduce>
    e88403b0:	bbf1                	j	e884018c <mp_exptmod_fast+0x100>
     if ((err = mp_reduce_2k_setup(P, &mp)) != MP_OKAY) {
    e88403b2:	6789                	lui	a5,0x2
    e88403b4:	0098                	addi	a4,sp,64
    e88403b6:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e88403ba:	97ba                	add	a5,a5,a4
    e88403bc:	95be                	add	a1,a1,a5
    e88403be:	8522                	mv	a0,s0
    e88403c0:	172010ef          	jal	ra,e8841532 <mp_reduce_2k_setup>
    e88403c4:	8c2a                	mv	s8,a0
    e88403c6:	14051263          	bnez	a0,e884050a <mp_exptmod_fast+0x47e>
     redux = mp_reduce_2k;
    e88403ca:	00001917          	auipc	s2,0x1
    e88403ce:	04c90913          	addi	s2,s2,76 # e8841416 <mp_reduce_2k>
    e88403d2:	bb6d                	j	e884018c <mp_exptmod_fast+0x100>
     mp_set(&res, 1);
    e88403d4:	856a                	mv	a0,s10
    e88403d6:	4585                	li	a1,1
    e88403d8:	312010ef          	jal	ra,e88416ea <mp_set>
     if ((err = mp_mod(G, P, &M[1])) != MP_OKAY) {
    e88403dc:	6789                	lui	a5,0x2
    e88403de:	0098                	addi	a4,sp,64
    e88403e0:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e88403e4:	97ba                	add	a5,a5,a4
    e88403e6:	767d                	lui	a2,0xfffff
    e88403e8:	963e                	add	a2,a2,a5
    e88403ea:	81860613          	addi	a2,a2,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    e88403ee:	85a2                	mv	a1,s0
    e88403f0:	855e                	mv	a0,s7
    e88403f2:	145000ef          	jal	ra,e8840d36 <mp_mod>
    e88403f6:	b3d5                	j	e88401da <mp_exptmod_fast+0x14e>
    if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) {
    e88403f8:	01798733          	add	a4,s3,s7
    e88403fc:	863a                	mv	a2,a4
    e88403fe:	85d6                	mv	a1,s5
    e8840400:	854e                	mv	a0,s3
    e8840402:	ec3a                	sd	a4,24(sp)
    e8840404:	3fd000ef          	jal	ra,e8841000 <mp_mul>
    e8840408:	8c2a                	mv	s8,a0
    e884040a:	e56d                	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
    if ((err = redux (&M[x], P, mp)) != MP_OKAY) {
    e884040c:	6762                	ld	a4,24(sp)
    e884040e:	7e0d3603          	ld	a2,2016(s10) # ffffffffffffe7e0 <__DRAM0_INF_BASE+0xffffffff0000e7e0>
    e8840412:	85a2                	mv	a1,s0
    e8840414:	853a                	mv	a0,a4
    e8840416:	9902                	jalr	s2
    e8840418:	8c2a                	mv	s8,a0
    e884041a:	09e1                	addi	s3,s3,24
    e884041c:	ed61                	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
  for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) {
    e884041e:	2c85                	addiw	s9,s9,1
    e8840420:	bd25                	j	e8840258 <mp_exptmod_fast+0x1cc>
    bitbuf |= (y << (winsize - ++bitcpy));
    e8840422:	7c02                	ld	s8,32(sp)
    mode    = 2;
    e8840424:	4509                	li	a0,2
      mode   = 1;
    e8840426:	872a                	mv	a4,a0
    e8840428:	bd8d                	j	e884029a <mp_exptmod_fast+0x20e>
    if (mode == 1 && y == 0) {
    e884042a:	4685                	li	a3,1
    e884042c:	e8d71ae3          	bne	a4,a3,e88402c0 <mp_exptmod_fast+0x234>
    e8840430:	e80518e3          	bnez	a0,e88402c0 <mp_exptmod_fast+0x234>
      if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e8840434:	85ce                	mv	a1,s3
    e8840436:	854e                	mv	a0,s3
    e8840438:	32e010ef          	jal	ra,e8841766 <mp_sqr>
    e884043c:	10051b63          	bnez	a0,e8840552 <mp_exptmod_fast+0x4c6>
      if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e8840440:	67e2                	ld	a5,24(sp)
    e8840442:	85a2                	mv	a1,s0
    e8840444:	854e                	mv	a0,s3
    e8840446:	7e07b603          	ld	a2,2016(a5)
    e884044a:	9902                	jalr	s2
    e884044c:	10051363          	bnez	a0,e8840552 <mp_exptmod_fast+0x4c6>
      mode   = 1;
    e8840450:	4505                	li	a0,1
    e8840452:	bfd1                	j	e8840426 <mp_exptmod_fast+0x39a>
  if (mode == 2 && bitcpy > 0) {
    e8840454:	4689                	li	a3,2
    e8840456:	02d70263          	beq	a4,a3,e884047a <mp_exptmod_fast+0x3ee>
  if (redmode == 0) {
    e884045a:	67c2                	ld	a5,16(sp)
    e884045c:	cbf9                	beqz	a5,e8840532 <mp_exptmod_fast+0x4a6>
  mp_exch (&res, Y);
    e884045e:	6789                	lui	a5,0x2
    e8840460:	0098                	addi	a4,sp,64
    e8840462:	75a2                	ld	a1,40(sp)
    e8840464:	7579                	lui	a0,0xffffe
    e8840466:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e884046a:	97ba                	add	a5,a5,a4
    e884046c:	7e850513          	addi	a0,a0,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e8840470:	953e                	add	a0,a0,a5
    e8840472:	b27ff0ef          	jal	ra,e883ff98 <mp_exch>
  err = MP_OKAY;
    e8840476:	4c01                	li	s8,0
    e8840478:	a8b5                	j	e88404f4 <mp_exptmod_fast+0x468>
  if (mode == 2 && bitcpy > 0) {
    e884047a:	ff5050e3          	blez	s5,e884045a <mp_exptmod_fast+0x3ce>
      if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e884047e:	6789                	lui	a5,0x2
    e8840480:	0094                	addi	a3,sp,64
    e8840482:	82078713          	addi	a4,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840486:	79f9                	lui	s3,0xffffe
    e8840488:	9736                	add	a4,a4,a3
    e884048a:	7e898493          	addi	s1,s3,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e884048e:	94ba                	add	s1,s1,a4
      if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e8840490:	82078713          	addi	a4,a5,-2016
        if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) {
    e8840494:	82078793          	addi	a5,a5,-2016
    e8840498:	7d7d                	lui	s10,0xfffff
    e884049a:	97b6                	add	a5,a5,a3
      if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e884049c:	9736                	add	a4,a4,a3
        if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) {
    e884049e:	9d3e                	add	s10,s10,a5
    for (x = 0; x < bitcpy; x++) {
    e88404a0:	4c81                	li	s9,0
    e88404a2:	8be2                	mv	s7,s8
      if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e88404a4:	99ba                	add	s3,s3,a4
        if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) {
    e88404a6:	818d0d13          	addi	s10,s10,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
      if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e88404aa:	85a6                	mv	a1,s1
    e88404ac:	8526                	mv	a0,s1
    e88404ae:	2b8010ef          	jal	ra,e8841766 <mp_sqr>
    e88404b2:	8c2a                	mv	s8,a0
    e88404b4:	e121                	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
      if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e88404b6:	7e09b603          	ld	a2,2016(s3)
    e88404ba:	85a2                	mv	a1,s0
    e88404bc:	8526                	mv	a0,s1
    e88404be:	9902                	jalr	s2
    e88404c0:	8c2a                	mv	s8,a0
    e88404c2:	e90d                	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
      if ((bitbuf & (1 << winsize)) != 0) {
    e88404c4:	67a2                	ld	a5,8(sp)
      bitbuf <<= 1;
    e88404c6:	001b9b9b          	slliw	s7,s7,0x1
      if ((bitbuf & (1 << winsize)) != 0) {
    e88404ca:	0177f7b3          	and	a5,a5,s7
    e88404ce:	e789                	bnez	a5,e88404d8 <mp_exptmod_fast+0x44c>
    for (x = 0; x < bitcpy; x++) {
    e88404d0:	2c85                	addiw	s9,s9,1
    e88404d2:	fd9a9ce3          	bne	s5,s9,e88404aa <mp_exptmod_fast+0x41e>
    e88404d6:	b751                	j	e884045a <mp_exptmod_fast+0x3ce>
        if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) {
    e88404d8:	8626                	mv	a2,s1
    e88404da:	85ea                	mv	a1,s10
    e88404dc:	8526                	mv	a0,s1
    e88404de:	323000ef          	jal	ra,e8841000 <mp_mul>
    e88404e2:	8c2a                	mv	s8,a0
    e88404e4:	e901                	bnez	a0,e88404f4 <mp_exptmod_fast+0x468>
        if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e88404e6:	7e09b603          	ld	a2,2016(s3)
    e88404ea:	85a2                	mv	a1,s0
    e88404ec:	8526                	mv	a0,s1
    e88404ee:	9902                	jalr	s2
    e88404f0:	8c2a                	mv	s8,a0
    e88404f2:	dd79                	beqz	a0,e88404d0 <mp_exptmod_fast+0x444>
LBL_RES:mp_clear (&res);
    e88404f4:	6789                	lui	a5,0x2
    e88404f6:	7579                	lui	a0,0xffffe
    e88404f8:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e88404fc:	0098                	addi	a4,sp,64
    e88404fe:	7e850513          	addi	a0,a0,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e8840502:	97ba                	add	a5,a5,a4
    e8840504:	953e                	add	a0,a0,a5
    e8840506:	acaff0ef          	jal	ra,e883f7d0 <mp_clear>
  mp_clear(&M[1]);
    e884050a:	6789                	lui	a5,0x2
    e884050c:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e8840510:	0098                	addi	a4,sp,64
    e8840512:	757d                	lui	a0,0xfffff
    e8840514:	97ba                	add	a5,a5,a4
    e8840516:	953e                	add	a0,a0,a5
    e8840518:	81850513          	addi	a0,a0,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    e884051c:	ab4ff0ef          	jal	ra,e883f7d0 <mp_clear>
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    e8840520:	67a2                	ld	a5,8(sp)
    e8840522:	e2fa5ae3          	bge	s4,a5,e8840356 <mp_exptmod_fast+0x2ca>
    mp_clear (&M[x]);
    e8840526:	855a                	mv	a0,s6
    e8840528:	aa8ff0ef          	jal	ra,e883f7d0 <mp_clear>
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    e884052c:	2a05                	addiw	s4,s4,1
    e884052e:	0b61                	addi	s6,s6,24
    e8840530:	bfc5                	j	e8840520 <mp_exptmod_fast+0x494>
     if ((err = redux(&res, P, mp)) != MP_OKAY) {
    e8840532:	6789                	lui	a5,0x2
    e8840534:	0098                	addi	a4,sp,64
    e8840536:	7579                	lui	a0,0xffffe
    e8840538:	6606                	ld	a2,64(sp)
    e884053a:	82078793          	addi	a5,a5,-2016 # 1820 <memcmp-0xe87fe7e0>
    e884053e:	97ba                	add	a5,a5,a4
    e8840540:	7e850513          	addi	a0,a0,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e8840544:	85a2                	mv	a1,s0
    e8840546:	953e                	add	a0,a0,a5
    e8840548:	9902                	jalr	s2
    e884054a:	8c2a                	mv	s8,a0
    e884054c:	f00509e3          	beqz	a0,e884045e <mp_exptmod_fast+0x3d2>
    e8840550:	b755                	j	e88404f4 <mp_exptmod_fast+0x468>
      if ((err = redux (&res, P, mp)) != MP_OKAY) {
    e8840552:	8c2a                	mv	s8,a0
    e8840554:	b745                	j	e88404f4 <mp_exptmod_fast+0x468>

00000000e8840556 <mp_grow>:
{
  int     i;
  mp_digit *tmp;

  /* if the alloc size is smaller alloc more ram */
  if (a->alloc < size) {
    e8840556:	415c                	lw	a5,4(a0)
    e8840558:	00b7c563          	blt	a5,a1,e8840562 <mp_grow+0xc>
    a->alloc = size;
    for (; i < a->alloc; i++) {
      a->dp[i] = 0;
    }
  }
  return MP_OKAY;
    e884055c:	4781                	li	a5,0
}
    e884055e:	853e                	mv	a0,a5
    e8840560:	8082                	ret
{
    e8840562:	1101                	addi	sp,sp,-32
    e8840564:	e422                	sd	s0,8(sp)
    size += (MP_PREC * 2) - (size % MP_PREC);
    e8840566:	02000413          	li	s0,32
    e884056a:	0285e43b          	remw	s0,a1,s0
{
    e884056e:	e826                	sd	s1,16(sp)
    e8840570:	ec06                	sd	ra,24(sp)
    e8840572:	84aa                	mv	s1,a0
    size += (MP_PREC * 2) - (size % MP_PREC);
    e8840574:	0405859b          	addiw	a1,a1,64
    tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * size);
    e8840578:	6908                	ld	a0,16(a0)
    size += (MP_PREC * 2) - (size % MP_PREC);
    e884057a:	9d81                	subw	a1,a1,s0
    e884057c:	842e                	mv	s0,a1
    tmp = OPT_CAST(mp_digit) XREALLOC (a->dp, sizeof (mp_digit) * size);
    e884057e:	058e                	slli	a1,a1,0x3
    e8840580:	58d3b0ef          	jal	ra,e887c30c <eLIBs_realloc>
      return MP_MEM;
    e8840584:	57f9                	li	a5,-2
    if (tmp == NULL) {
    e8840586:	c901                	beqz	a0,e8840596 <mp_grow+0x40>
    i        = a->alloc;
    e8840588:	40dc                	lw	a5,4(s1)
    a->dp = tmp;
    e884058a:	e888                	sd	a0,16(s1)
    a->alloc = size;
    e884058c:	c0c0                	sw	s0,4(s1)
    for (; i < a->alloc; i++) {
    e884058e:	40d8                	lw	a4,4(s1)
    e8840590:	00e7c963          	blt	a5,a4,e88405a2 <mp_grow+0x4c>
  return MP_OKAY;
    e8840594:	4781                	li	a5,0
}
    e8840596:	60e2                	ld	ra,24(sp)
    e8840598:	6422                	ld	s0,8(sp)
    e884059a:	64c2                	ld	s1,16(sp)
    e884059c:	853e                	mv	a0,a5
    e884059e:	6105                	addi	sp,sp,32
    e88405a0:	8082                	ret
      a->dp[i] = 0;
    e88405a2:	6898                	ld	a4,16(s1)
    e88405a4:	66f7500b          	srd	zero,a4,a5,3
    for (; i < a->alloc; i++) {
    e88405a8:	2785                	addiw	a5,a5,1
    e88405aa:	b7d5                	j	e884058e <mp_grow+0x38>

00000000e88405ac <mp_init>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* init a new mp_int */
int mp_init (mp_int * a)
{
    e88405ac:	1141                	addi	sp,sp,-16
    e88405ae:	e022                	sd	s0,0(sp)
    e88405b0:	842a                	mv	s0,a0
  int i;

  /* allocate memory required and clear it */
  a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * MP_PREC);
    e88405b2:	10000513          	li	a0,256
{
    e88405b6:	e406                	sd	ra,8(sp)
  a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * MP_PREC);
    e88405b8:	2963b0ef          	jal	ra,e887b84e <my_malloc>
    e88405bc:	e808                	sd	a0,16(s0)
  if (a->dp == NULL) {
    e88405be:	c505                	beqz	a0,e88405e6 <mp_init+0x3a>
    e88405c0:	4781                	li	a5,0
    return MP_MEM;
  }

  /* set the digits to zero */
  for (i = 0; i < MP_PREC; i++) {
    e88405c2:	10000713          	li	a4,256
      a->dp[i] = 0;
    e88405c6:	6814                	ld	a3,16(s0)
    e88405c8:	60f6d00b          	srd	zero,a3,a5,0
  for (i = 0; i < MP_PREC; i++) {
    e88405cc:	07a1                	addi	a5,a5,8
    e88405ce:	fee79ce3          	bne	a5,a4,e88405c6 <mp_init+0x1a>
  }

  /* set the used to zero, allocated digits to the default precision
   * and sign to positive */
  a->used  = 0;
    e88405d2:	4785                	li	a5,1
    e88405d4:	1796                	slli	a5,a5,0x25
    e88405d6:	e01c                	sd	a5,0(s0)
  a->alloc = MP_PREC;
  a->sign  = MP_ZPOS;
    e88405d8:	00042423          	sw	zero,8(s0)

  return MP_OKAY;
    e88405dc:	4501                	li	a0,0
}
    e88405de:	60a2                	ld	ra,8(sp)
    e88405e0:	6402                	ld	s0,0(sp)
    e88405e2:	0141                	addi	sp,sp,16
    e88405e4:	8082                	ret
    return MP_MEM;
    e88405e6:	5579                	li	a0,-2
    e88405e8:	bfdd                	j	e88405de <mp_init+0x32>

00000000e88405ea <mp_init_copy>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* creates "a" then copies b into it */
int mp_init_copy (mp_int * a, mp_int * b)
{
    e88405ea:	1101                	addi	sp,sp,-32
    e88405ec:	e422                	sd	s0,8(sp)
    e88405ee:	e826                	sd	s1,16(sp)
    e88405f0:	ec06                	sd	ra,24(sp)
    e88405f2:	84aa                	mv	s1,a0
    e88405f4:	842e                	mv	s0,a1
  int     res;

  if ((res = mp_init (a)) != MP_OKAY) {
    e88405f6:	fb7ff0ef          	jal	ra,e88405ac <mp_init>
    e88405fa:	e909                	bnez	a0,e884060c <mp_init_copy+0x22>
    return res;
  }
  return mp_copy (b, a);
    e88405fc:	8522                	mv	a0,s0
}
    e88405fe:	6422                	ld	s0,8(sp)
    e8840600:	60e2                	ld	ra,24(sp)
  return mp_copy (b, a);
    e8840602:	85a6                	mv	a1,s1
}
    e8840604:	64c2                	ld	s1,16(sp)
    e8840606:	6105                	addi	sp,sp,32
  return mp_copy (b, a);
    e8840608:	ac8ff06f          	j	e883f8d0 <mp_copy>
}
    e884060c:	60e2                	ld	ra,24(sp)
    e884060e:	6422                	ld	s0,8(sp)
    e8840610:	64c2                	ld	s1,16(sp)
    e8840612:	6105                	addi	sp,sp,32
    e8840614:	8082                	ret

00000000e8840616 <mp_init_multi>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */
//#include <stdarg.h>

int mp_init_multi(mp_int *mp, ...) 
{
    e8840616:	7159                	addi	sp,sp,-112
    e8840618:	ecbe                	sd	a5,88(sp)
    mp_err res = MP_OKAY;      /* Assume ok until proven otherwise */
    int n = 0;                 /* Number of ok inits */
    mp_int* cur_arg = mp;
    va_list args;

    va_start(args, mp);        /* init args to next argument from caller */
    e884061a:	183c                	addi	a5,sp,56
{
    e884061c:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8840620:	f406                	sd	ra,40(sp)
    e8840622:	f04a                	sd	s2,32(sp)
    e8840624:	84aa                	mv	s1,a0
    e8840626:	fc2e                	sd	a1,56(sp)
    e8840628:	e0b2                	sd	a2,64(sp)
    e884062a:	e4b6                	sd	a3,72(sp)
    e884062c:	e8ba                	sd	a4,80(sp)
    e884062e:	f0c2                	sd	a6,96(sp)
    e8840630:	f4c6                	sd	a7,104(sp)
    va_start(args, mp);        /* init args to next argument from caller */
    e8840632:	e03e                	sd	a5,0(sp)
    int n = 0;                 /* Number of ok inits */
    e8840634:	4401                	li	s0,0
    while (cur_arg != NULL) {
    e8840636:	c919                	beqz	a0,e884064c <mp_init_multi+0x36>
        if (mp_init(cur_arg) != MP_OKAY) {
    e8840638:	f75ff0ef          	jal	ra,e88405ac <mp_init>
    e884063c:	c51d                	beqz	a0,e884066a <mp_init_multi+0x54>
            /* end the current list */
            va_end(args);
            
            /* now start cleaning up */            
            cur_arg = mp;
            va_start(clean_args, mp);
    e884063e:	183c                	addi	a5,sp,56
    e8840640:	e43e                	sd	a5,8(sp)
            while (n--) {
    e8840642:	597d                	li	s2,-1
    e8840644:	347d                	addiw	s0,s0,-1
    e8840646:	01241963          	bne	s0,s2,e8840658 <mp_init_multi+0x42>
                mp_clear(cur_arg);
                cur_arg = va_arg(clean_args, mp_int*);
            }
            va_end(clean_args);
            res = MP_MEM;
    e884064a:	5579                	li	a0,-2
        n++;
        cur_arg = va_arg(args, mp_int*);
    }
    va_end(args);
    return res;                /* Assumed ok, if error flagged above. */
}
    e884064c:	70a2                	ld	ra,40(sp)
    e884064e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8840652:	7902                	ld	s2,32(sp)
    e8840654:	6165                	addi	sp,sp,112
    e8840656:	8082                	ret
                mp_clear(cur_arg);
    e8840658:	8526                	mv	a0,s1
    e884065a:	976ff0ef          	jal	ra,e883f7d0 <mp_clear>
                cur_arg = va_arg(clean_args, mp_int*);
    e884065e:	67a2                	ld	a5,8(sp)
    e8840660:	00878713          	addi	a4,a5,8
    e8840664:	e43a                	sd	a4,8(sp)
    e8840666:	6384                	ld	s1,0(a5)
    e8840668:	bff1                	j	e8840644 <mp_init_multi+0x2e>
        cur_arg = va_arg(args, mp_int*);
    e884066a:	6782                	ld	a5,0(sp)
        n++;
    e884066c:	2405                	addiw	s0,s0,1
        cur_arg = va_arg(args, mp_int*);
    e884066e:	00878713          	addi	a4,a5,8
    e8840672:	e03a                	sd	a4,0(sp)
    e8840674:	6388                	ld	a0,0(a5)
    e8840676:	b7c1                	j	e8840636 <mp_init_multi+0x20>

00000000e8840678 <mp_init_size>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* init an mp_init for a given size */
int mp_init_size (mp_int * a, int size)
{
    e8840678:	1101                	addi	sp,sp,-32
    e884067a:	f891540b          	sdd	s0,s1,(sp),0,4
  int x;

  /* pad size so there are always extra digits */
  size += (MP_PREC * 2) - (size % MP_PREC);	
    e884067e:	02000413          	li	s0,32
    e8840682:	0285e43b          	remw	s0,a1,s0
    e8840686:	0405859b          	addiw	a1,a1,64
{
    e884068a:	e84a                	sd	s2,16(sp)
    e884068c:	84aa                	mv	s1,a0
    e884068e:	ec06                	sd	ra,24(sp)
  size += (MP_PREC * 2) - (size % MP_PREC);	
    e8840690:	4085893b          	subw	s2,a1,s0
  
  /* alloc mem */
  a->dp = OPT_CAST(mp_digit) XMALLOC (sizeof (mp_digit) * size);
    e8840694:	00391513          	slli	a0,s2,0x3
    e8840698:	1b63b0ef          	jal	ra,e887b84e <my_malloc>
    e884069c:	e888                	sd	a0,16(s1)
  if (a->dp == NULL) {
    e884069e:	c905                	beqz	a0,e88406ce <mp_init_size+0x56>
    return MP_MEM;
  }

  /* set the members */
  a->used  = 0;
    e88406a0:	0004a023          	sw	zero,0(s1)
  a->alloc = size;
    e88406a4:	0124a223          	sw	s2,4(s1)
  a->sign  = MP_ZPOS;
    e88406a8:	0004a423          	sw	zero,8(s1)

  /* zero the digits */
  for (x = 0; x < size; x++) {
    e88406ac:	4781                	li	a5,0
    e88406ae:	0007871b          	sext.w	a4,a5
    e88406b2:	01274963          	blt	a4,s2,e88406c4 <mp_init_size+0x4c>
      a->dp[x] = 0;
  }

  return MP_OKAY;
    e88406b6:	4501                	li	a0,0
}
    e88406b8:	60e2                	ld	ra,24(sp)
    e88406ba:	f891440b          	ldd	s0,s1,(sp),0,4
    e88406be:	6942                	ld	s2,16(sp)
    e88406c0:	6105                	addi	sp,sp,32
    e88406c2:	8082                	ret
      a->dp[x] = 0;
    e88406c4:	6898                	ld	a4,16(s1)
    e88406c6:	66f7500b          	srd	zero,a4,a5,3
  for (x = 0; x < size; x++) {
    e88406ca:	0785                	addi	a5,a5,1
    e88406cc:	b7cd                	j	e88406ae <mp_init_size+0x36>
    return MP_MEM;
    e88406ce:	5579                	li	a0,-2
    e88406d0:	b7e5                	j	e88406b8 <mp_init_size+0x40>

00000000e88406d2 <mp_invmod>:

/* hac 14.61, pp608 */
int mp_invmod (mp_int * a, mp_int * b, mp_int * c)
{
  /* b cannot be negative */
  if (b->sign == MP_NEG || mp_iszero(b) == 1) {
    e88406d2:	0085a883          	lw	a7,8(a1)
    e88406d6:	4705                	li	a4,1
{
    e88406d8:	86aa                	mv	a3,a0
    e88406da:	87ae                	mv	a5,a1
    e88406dc:	8832                	mv	a6,a2
  if (b->sign == MP_NEG || mp_iszero(b) == 1) {
    e88406de:	02e88163          	beq	a7,a4,e8840700 <mp_invmod+0x2e>
    e88406e2:	4198                	lw	a4,0(a1)
    e88406e4:	cf11                	beqz	a4,e8840700 <mp_invmod+0x2e>
    return MP_VAL;
  }

#ifdef BN_FAST_MP_INVMOD_C
  /* if the modulus is odd we can use a faster routine instead */
  if (mp_isodd (b) == 1) {
    e88406e6:	00e05863          	blez	a4,e88406f6 <mp_invmod+0x24>
    e88406ea:	6998                	ld	a4,16(a1)
    e88406ec:	6318                	ld	a4,0(a4)
    e88406ee:	8b05                	andi	a4,a4,1
    e88406f0:	c319                	beqz	a4,e88406f6 <mp_invmod+0x24>
    return fast_mp_invmod (a, b, c);
    e88406f2:	833fe06f          	j	e883ef24 <fast_mp_invmod>
  }
#endif

#ifdef BN_MP_INVMOD_SLOW_C
  return mp_invmod_slow(a, b, c);
    e88406f6:	8642                	mv	a2,a6
    e88406f8:	85be                	mv	a1,a5
    e88406fa:	8536                	mv	a0,a3
    e88406fc:	0080006f          	j	e8840704 <mp_invmod_slow>
#endif

  return MP_VAL;
}
    e8840700:	5575                	li	a0,-3
    e8840702:	8082                	ret

00000000e8840704 <mp_invmod_slow>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* hac 14.61, pp608 */
int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c)
{
    e8840704:	7111                	addi	sp,sp,-256
    e8840706:	f9a2                	sd	s0,240(sp)
    e8840708:	fd86                	sd	ra,248(sp)
    e884070a:	f5a6                	sd	s1,232(sp)
    e884070c:	f1ca                	sd	s2,224(sp)
    e884070e:	edce                	sd	s3,216(sp)
  mp_int  x, y, u, v, A, B, C, D;
  int     res;

  /* b cannot be negative */
  if (b->sign == MP_NEG || mp_iszero(b) == 1) {
    e8840710:	4598                	lw	a4,8(a1)
    e8840712:	4785                	li	a5,1
    return MP_VAL;
    e8840714:	5475                	li	s0,-3
  if (b->sign == MP_NEG || mp_iszero(b) == 1) {
    e8840716:	0ef70463          	beq	a4,a5,e88407fe <mp_invmod_slow+0xfa>
    e884071a:	419c                	lw	a5,0(a1)
    return MP_VAL;
    e884071c:	5475                	li	s0,-3
  if (b->sign == MP_NEG || mp_iszero(b) == 1) {
    e884071e:	0e078063          	beqz	a5,e88407fe <mp_invmod_slow+0xfa>
    e8840722:	8932                	mv	s2,a2
    e8840724:	84ae                	mv	s1,a1
    e8840726:	89aa                	mv	s3,a0
  }

  /* init temps */
  if ((res = mp_init_multi(&x, &y, &u, &v, 
    e8840728:	e002                	sd	zero,0(sp)
    e884072a:	0b810893          	addi	a7,sp,184
    e884072e:	0a010813          	addi	a6,sp,160
    e8840732:	013c                	addi	a5,sp,136
    e8840734:	1898                	addi	a4,sp,112
    e8840736:	08b4                	addi	a3,sp,88
    e8840738:	0090                	addi	a2,sp,64
    e884073a:	102c                	addi	a1,sp,40
    e884073c:	0808                	addi	a0,sp,16
    e884073e:	ed9ff0ef          	jal	ra,e8840616 <mp_init_multi>
    e8840742:	842a                	mv	s0,a0
    e8840744:	ed4d                	bnez	a0,e88407fe <mp_invmod_slow+0xfa>
                           &A, &B, &C, &D, NULL)) != MP_OKAY) {
     return res;
  }

  /* x = a, y = b */
  if ((res = mp_mod(a, b, &x)) != MP_OKAY) {
    e8840746:	0810                	addi	a2,sp,16
    e8840748:	85a6                	mv	a1,s1
    e884074a:	854e                	mv	a0,s3
    e884074c:	5ea000ef          	jal	ra,e8840d36 <mp_mod>
    e8840750:	842a                	mv	s0,a0
    e8840752:	e949                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
      goto LBL_ERR;
  }
  if ((res = mp_copy (b, &y)) != MP_OKAY) {
    e8840754:	102c                	addi	a1,sp,40
    e8840756:	8526                	mv	a0,s1
    e8840758:	978ff0ef          	jal	ra,e883f8d0 <mp_copy>
    e884075c:	842a                	mv	s0,a0
    e884075e:	e159                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    goto LBL_ERR;
  }

  /* 2. [modified] if x,y are both even then return an error! */
  if (mp_iseven (&x) == 1 && mp_iseven (&y) == 1) {
    e8840760:	47c2                	lw	a5,16(sp)
    e8840762:	00f05e63          	blez	a5,e884077e <mp_invmod_slow+0x7a>
    e8840766:	7782                	ld	a5,32(sp)
    e8840768:	639c                	ld	a5,0(a5)
    e884076a:	8b85                	andi	a5,a5,1
    e884076c:	eb89                	bnez	a5,e884077e <mp_invmod_slow+0x7a>
    e884076e:	57a2                	lw	a5,40(sp)
    e8840770:	00f05763          	blez	a5,e884077e <mp_invmod_slow+0x7a>
    e8840774:	77e2                	ld	a5,56(sp)
    res = MP_VAL;
    e8840776:	5475                	li	s0,-3
  if (mp_iseven (&x) == 1 && mp_iseven (&y) == 1) {
    e8840778:	639c                	ld	a5,0(a5)
    e884077a:	8b85                	andi	a5,a5,1
    e884077c:	c7a5                	beqz	a5,e88407e4 <mp_invmod_slow+0xe0>
    goto LBL_ERR;
  }

  /* 3. u=x, v=y, A=1, B=0, C=0,D=1 */
  if ((res = mp_copy (&x, &u)) != MP_OKAY) {
    e884077e:	008c                	addi	a1,sp,64
    e8840780:	0808                	addi	a0,sp,16
    e8840782:	94eff0ef          	jal	ra,e883f8d0 <mp_copy>
    e8840786:	842a                	mv	s0,a0
    e8840788:	ed31                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    goto LBL_ERR;
  }
  if ((res = mp_copy (&y, &v)) != MP_OKAY) {
    e884078a:	08ac                	addi	a1,sp,88
    e884078c:	1028                	addi	a0,sp,40
    e884078e:	942ff0ef          	jal	ra,e883f8d0 <mp_copy>
    e8840792:	842a                	mv	s0,a0
    e8840794:	e921                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    goto LBL_ERR;
  }
  mp_set (&A, 1);
    e8840796:	4585                	li	a1,1
    e8840798:	1888                	addi	a0,sp,112
    e884079a:	751000ef          	jal	ra,e88416ea <mp_set>
      goto LBL_ERR;
    }
  }

  /* 6.  if u >= v then */
  if (mp_cmp (&u, &v) != MP_LT) {
    e884079e:	59fd                	li	s3,-1
  mp_set (&D, 1);
    e88407a0:	4585                	li	a1,1
    e88407a2:	1928                	addi	a0,sp,184
    e88407a4:	747000ef          	jal	ra,e88416ea <mp_set>
  while (mp_iseven (&u) == 1) {
    e88407a8:	4786                	lw	a5,64(sp)
    e88407aa:	0ef05a63          	blez	a5,e884089e <mp_invmod_slow+0x19a>
    e88407ae:	67c6                	ld	a5,80(sp)
    e88407b0:	639c                	ld	a5,0(a5)
    e88407b2:	8b85                	andi	a5,a5,1
    e88407b4:	0e079563          	bnez	a5,e884089e <mp_invmod_slow+0x19a>
    if ((res = mp_div_2 (&u, &u)) != MP_OKAY) {
    e88407b8:	008c                	addi	a1,sp,64
    e88407ba:	852e                	mv	a0,a1
    e88407bc:	cdaff0ef          	jal	ra,e883fc96 <mp_div_2>
    e88407c0:	842a                	mv	s0,a0
    e88407c2:	e10d                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    if (mp_isodd (&A) == 1 || mp_isodd (&B) == 1) {
    e88407c4:	57c6                	lw	a5,112(sp)
    e88407c6:	00f05663          	blez	a5,e88407d2 <mp_invmod_slow+0xce>
    e88407ca:	678a                	ld	a5,128(sp)
    e88407cc:	639c                	ld	a5,0(a5)
    e88407ce:	8b85                	andi	a5,a5,1
    e88407d0:	e3b9                	bnez	a5,e8840816 <mp_invmod_slow+0x112>
    e88407d2:	47aa                	lw	a5,136(sp)
    e88407d4:	02f04d63          	bgtz	a5,e884080e <mp_invmod_slow+0x10a>
    if ((res = mp_div_2 (&A, &A)) != MP_OKAY) {
    e88407d8:	188c                	addi	a1,sp,112
    e88407da:	852e                	mv	a0,a1
    e88407dc:	cbaff0ef          	jal	ra,e883fc96 <mp_div_2>
    e88407e0:	842a                	mv	s0,a0
    e88407e2:	c929                	beqz	a0,e8840834 <mp_invmod_slow+0x130>
  }
  
  /* C is now the inverse */
  mp_exch (&C, c);
  res = MP_OKAY;
LBL_ERR:mp_clear_multi (&x, &y, &u, &v, &A, &B, &C, &D, NULL);
    e88407e4:	e002                	sd	zero,0(sp)
    e88407e6:	0b810893          	addi	a7,sp,184
    e88407ea:	0a010813          	addi	a6,sp,160
    e88407ee:	013c                	addi	a5,sp,136
    e88407f0:	1898                	addi	a4,sp,112
    e88407f2:	08b4                	addi	a3,sp,88
    e88407f4:	0090                	addi	a2,sp,64
    e88407f6:	102c                	addi	a1,sp,40
    e88407f8:	0808                	addi	a0,sp,16
    e88407fa:	810ff0ef          	jal	ra,e883f80a <mp_clear_multi>
  return res;
}
    e88407fe:	8522                	mv	a0,s0
    e8840800:	70ee                	ld	ra,248(sp)
    e8840802:	744e                	ld	s0,240(sp)
    e8840804:	74ae                	ld	s1,232(sp)
    e8840806:	790e                	ld	s2,224(sp)
    e8840808:	69ee                	ld	s3,216(sp)
    e884080a:	6111                	addi	sp,sp,256
    e884080c:	8082                	ret
    if (mp_isodd (&A) == 1 || mp_isodd (&B) == 1) {
    e884080e:	67ea                	ld	a5,152(sp)
    e8840810:	639c                	ld	a5,0(a5)
    e8840812:	8b85                	andi	a5,a5,1
    e8840814:	d3f1                	beqz	a5,e88407d8 <mp_invmod_slow+0xd4>
      if ((res = mp_add (&A, &y, &A)) != MP_OKAY) {
    e8840816:	1890                	addi	a2,sp,112
    e8840818:	102c                	addi	a1,sp,40
    e884081a:	8532                	mv	a0,a2
    e884081c:	e2ffe0ef          	jal	ra,e883f64a <mp_add>
    e8840820:	842a                	mv	s0,a0
    e8840822:	f169                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
      if ((res = mp_sub (&B, &x, &B)) != MP_OKAY) {
    e8840824:	0130                	addi	a2,sp,136
    e8840826:	080c                	addi	a1,sp,16
    e8840828:	8532                	mv	a0,a2
    e884082a:	7a1000ef          	jal	ra,e88417ca <mp_sub>
    e884082e:	842a                	mv	s0,a0
    e8840830:	d545                	beqz	a0,e88407d8 <mp_invmod_slow+0xd4>
    e8840832:	bf4d                	j	e88407e4 <mp_invmod_slow+0xe0>
    if ((res = mp_div_2 (&B, &B)) != MP_OKAY) {
    e8840834:	012c                	addi	a1,sp,136
    e8840836:	852e                	mv	a0,a1
    e8840838:	c5eff0ef          	jal	ra,e883fc96 <mp_div_2>
    e884083c:	842a                	mv	s0,a0
    e884083e:	d52d                	beqz	a0,e88407a8 <mp_invmod_slow+0xa4>
    e8840840:	b755                	j	e88407e4 <mp_invmod_slow+0xe0>
    if (mp_isodd (&C) == 1 || mp_isodd (&D) == 1) {
    e8840842:	67ae                	ld	a5,200(sp)
    e8840844:	639c                	ld	a5,0(a5)
    e8840846:	8b85                	andi	a5,a5,1
    e8840848:	cf9d                	beqz	a5,e8840886 <mp_invmod_slow+0x182>
      if ((res = mp_add (&C, &y, &C)) != MP_OKAY) {
    e884084a:	1110                	addi	a2,sp,160
    e884084c:	102c                	addi	a1,sp,40
    e884084e:	8532                	mv	a0,a2
    e8840850:	dfbfe0ef          	jal	ra,e883f64a <mp_add>
    e8840854:	842a                	mv	s0,a0
    e8840856:	f559                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
      if ((res = mp_sub (&D, &x, &D)) != MP_OKAY) {
    e8840858:	1930                	addi	a2,sp,184
    e884085a:	080c                	addi	a1,sp,16
    e884085c:	8532                	mv	a0,a2
    e884085e:	76d000ef          	jal	ra,e88417ca <mp_sub>
    e8840862:	842a                	mv	s0,a0
    e8840864:	c10d                	beqz	a0,e8840886 <mp_invmod_slow+0x182>
    e8840866:	bfbd                	j	e88407e4 <mp_invmod_slow+0xe0>
    if ((res = mp_div_2 (&v, &v)) != MP_OKAY) {
    e8840868:	852e                	mv	a0,a1
    e884086a:	c2cff0ef          	jal	ra,e883fc96 <mp_div_2>
    e884086e:	842a                	mv	s0,a0
    e8840870:	f935                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    if (mp_isodd (&C) == 1 || mp_isodd (&D) == 1) {
    e8840872:	578a                	lw	a5,160(sp)
    e8840874:	00f05663          	blez	a5,e8840880 <mp_invmod_slow+0x17c>
    e8840878:	77ca                	ld	a5,176(sp)
    e884087a:	639c                	ld	a5,0(a5)
    e884087c:	8b85                	andi	a5,a5,1
    e884087e:	f7f1                	bnez	a5,e884084a <mp_invmod_slow+0x146>
    e8840880:	57ea                	lw	a5,184(sp)
    e8840882:	fcf040e3          	bgtz	a5,e8840842 <mp_invmod_slow+0x13e>
    if ((res = mp_div_2 (&C, &C)) != MP_OKAY) {
    e8840886:	110c                	addi	a1,sp,160
    e8840888:	852e                	mv	a0,a1
    e884088a:	c0cff0ef          	jal	ra,e883fc96 <mp_div_2>
    e884088e:	842a                	mv	s0,a0
    e8840890:	f931                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    if ((res = mp_div_2 (&D, &D)) != MP_OKAY) {
    e8840892:	192c                	addi	a1,sp,184
    e8840894:	852e                	mv	a0,a1
    e8840896:	c00ff0ef          	jal	ra,e883fc96 <mp_div_2>
    e884089a:	842a                	mv	s0,a0
    e884089c:	f521                	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
  while (mp_iseven (&v) == 1) {
    e884089e:	47e6                	lw	a5,88(sp)
    if ((res = mp_div_2 (&v, &v)) != MP_OKAY) {
    e88408a0:	08ac                	addi	a1,sp,88
  while (mp_iseven (&v) == 1) {
    e88408a2:	00f05663          	blez	a5,e88408ae <mp_invmod_slow+0x1aa>
    e88408a6:	77a6                	ld	a5,104(sp)
    e88408a8:	639c                	ld	a5,0(a5)
    e88408aa:	8b85                	andi	a5,a5,1
    e88408ac:	dfd5                	beqz	a5,e8840868 <mp_invmod_slow+0x164>
  if (mp_cmp (&u, &v) != MP_LT) {
    e88408ae:	0088                	addi	a0,sp,64
    e88408b0:	f89fe0ef          	jal	ra,e883f838 <mp_cmp>
    e88408b4:	03351563          	bne	a0,s3,e88408de <mp_invmod_slow+0x1da>
    if ((res = mp_sub (&v, &u, &v)) != MP_OKAY) {
    e88408b8:	08b0                	addi	a2,sp,88
    e88408ba:	008c                	addi	a1,sp,64
    e88408bc:	8532                	mv	a0,a2
    e88408be:	70d000ef          	jal	ra,e88417ca <mp_sub>
    e88408c2:	842a                	mv	s0,a0
    e88408c4:	f20510e3          	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    if ((res = mp_sub (&C, &A, &C)) != MP_OKAY) {
    e88408c8:	1110                	addi	a2,sp,160
    e88408ca:	188c                	addi	a1,sp,112
    e88408cc:	8532                	mv	a0,a2
    e88408ce:	6fd000ef          	jal	ra,e88417ca <mp_sub>
    e88408d2:	842a                	mv	s0,a0
    e88408d4:	f00518e3          	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    if ((res = mp_sub (&D, &B, &D)) != MP_OKAY) {
    e88408d8:	1930                	addi	a2,sp,184
    e88408da:	012c                	addi	a1,sp,136
    e88408dc:	a01d                	j	e8840902 <mp_invmod_slow+0x1fe>
    if ((res = mp_sub (&u, &v, &u)) != MP_OKAY) {
    e88408de:	0090                	addi	a2,sp,64
    e88408e0:	08ac                	addi	a1,sp,88
    e88408e2:	8532                	mv	a0,a2
    e88408e4:	6e7000ef          	jal	ra,e88417ca <mp_sub>
    e88408e8:	842a                	mv	s0,a0
    e88408ea:	ee051de3          	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    if ((res = mp_sub (&A, &C, &A)) != MP_OKAY) {
    e88408ee:	1890                	addi	a2,sp,112
    e88408f0:	110c                	addi	a1,sp,160
    e88408f2:	8532                	mv	a0,a2
    e88408f4:	6d7000ef          	jal	ra,e88417ca <mp_sub>
    e88408f8:	842a                	mv	s0,a0
    e88408fa:	ee0515e3          	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
    if ((res = mp_sub (&B, &D, &B)) != MP_OKAY) {
    e88408fe:	0130                	addi	a2,sp,136
    e8840900:	192c                	addi	a1,sp,184
    e8840902:	8532                	mv	a0,a2
    e8840904:	6c7000ef          	jal	ra,e88417ca <mp_sub>
    e8840908:	842a                	mv	s0,a0
    e884090a:	ec051de3          	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
  if (mp_iszero (&u) == 0)
    e884090e:	4786                	lw	a5,64(sp)
    e8840910:	e8079ce3          	bnez	a5,e88407a8 <mp_invmod_slow+0xa4>
  if (mp_cmp_d (&v, 1) != MP_EQ) {
    e8840914:	4585                	li	a1,1
    e8840916:	08a8                	addi	a0,sp,88
    e8840918:	f47fe0ef          	jal	ra,e883f85e <mp_cmp_d>
    res = MP_VAL;
    e884091c:	5475                	li	s0,-3
  while (mp_cmp_d(&C, 0) == MP_LT) {
    e884091e:	59fd                	li	s3,-1
  if (mp_cmp_d (&v, 1) != MP_EQ) {
    e8840920:	ec0512e3          	bnez	a0,e88407e4 <mp_invmod_slow+0xe0>
  while (mp_cmp_d(&C, 0) == MP_LT) {
    e8840924:	4581                	li	a1,0
    e8840926:	1108                	addi	a0,sp,160
    e8840928:	f37fe0ef          	jal	ra,e883f85e <mp_cmp_d>
    e884092c:	01350f63          	beq	a0,s3,e884094a <mp_invmod_slow+0x246>
  while (mp_cmp_mag(&C, b) != MP_LT) {
    e8840930:	59fd                	li	s3,-1
    e8840932:	85a6                	mv	a1,s1
    e8840934:	1108                	addi	a0,sp,160
    e8840936:	f4ffe0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e884093a:	03351063          	bne	a0,s3,e884095a <mp_invmod_slow+0x256>
  mp_exch (&C, c);
    e884093e:	85ca                	mv	a1,s2
    e8840940:	1108                	addi	a0,sp,160
    e8840942:	e56ff0ef          	jal	ra,e883ff98 <mp_exch>
  res = MP_OKAY;
    e8840946:	4401                	li	s0,0
    e8840948:	bd71                	j	e88407e4 <mp_invmod_slow+0xe0>
      if ((res = mp_add(&C, b, &C)) != MP_OKAY) {
    e884094a:	1110                	addi	a2,sp,160
    e884094c:	85a6                	mv	a1,s1
    e884094e:	8532                	mv	a0,a2
    e8840950:	cfbfe0ef          	jal	ra,e883f64a <mp_add>
    e8840954:	842a                	mv	s0,a0
    e8840956:	d579                	beqz	a0,e8840924 <mp_invmod_slow+0x220>
    e8840958:	b571                	j	e88407e4 <mp_invmod_slow+0xe0>
      if ((res = mp_sub(&C, b, &C)) != MP_OKAY) {
    e884095a:	1110                	addi	a2,sp,160
    e884095c:	85a6                	mv	a1,s1
    e884095e:	8532                	mv	a0,a2
    e8840960:	66b000ef          	jal	ra,e88417ca <mp_sub>
    e8840964:	842a                	mv	s0,a0
    e8840966:	d571                	beqz	a0,e8840932 <mp_invmod_slow+0x22e>
    e8840968:	bdb5                	j	e88407e4 <mp_invmod_slow+0xe0>

00000000e884096a <mp_karatsuba_mul>:
 * the standard O(N**2) that the baseline/comba methods use.  
 * Generally though the overhead of this method doesn't pay off 
 * until a certain size (N ~ 80) is reached.
 */
int mp_karatsuba_mul (mp_int * a, mp_int * b, mp_int * c)
{
    e884096a:	7151                	addi	sp,sp,-240
    e884096c:	eda6                	sd	s1,216(sp)
    e884096e:	e9ca                	sd	s2,208(sp)
    e8840970:	e5ce                	sd	s3,200(sp)
    e8840972:	fd56                	sd	s5,184(sp)
    e8840974:	f95a                	sd	s6,176(sp)
    e8840976:	f586                	sd	ra,232(sp)
    e8840978:	f1a2                	sd	s0,224(sp)
    e884097a:	e1d2                	sd	s4,192(sp)

  /* default the return code to an error */
  err = MP_MEM;

  /* min # of digits */
  B = MIN (a->used, b->used);
    e884097c:	4118                	lw	a4,0(a0)
    e884097e:	4180                	lw	s0,0(a1)
{
    e8840980:	8b2a                	mv	s6,a0
    e8840982:	89ae                	mv	s3,a1
  B = MIN (a->used, b->used);
    e8840984:	008727b3          	slt	a5,a4,s0
    e8840988:	42f7140b          	mvnez	s0,a4,a5

  /* now divide in two */
  B = B >> 1;
    e884098c:	4014549b          	sraiw	s1,s0,0x1

  /* init copy all the temps */
  if (mp_init_size (&x0, B) != MP_OKAY)
    e8840990:	85a6                	mv	a1,s1
    e8840992:	0028                	addi	a0,sp,8
{
    e8840994:	8ab2                	mv	s5,a2
  if (mp_init_size (&x0, B) != MP_OKAY)
    e8840996:	ce3ff0ef          	jal	ra,e8840678 <mp_init_size>
  err = MP_MEM;
    e884099a:	5979                	li	s2,-2
  if (mp_init_size (&x0, B) != MP_OKAY)
    e884099c:	16051763          	bnez	a0,e8840b0a <mp_karatsuba_mul+0x1a0>
    goto ERR;
  if (mp_init_size (&x1, a->used - B) != MP_OKAY)
    e88409a0:	000b2583          	lw	a1,0(s6)
    e88409a4:	1008                	addi	a0,sp,32
    e88409a6:	8426                	mv	s0,s1
    e88409a8:	9d85                	subw	a1,a1,s1
    e88409aa:	ccfff0ef          	jal	ra,e8840678 <mp_init_size>
  err = MP_MEM;
    e88409ae:	5979                	li	s2,-2
  if (mp_init_size (&x1, a->used - B) != MP_OKAY)
    e88409b0:	14051a63          	bnez	a0,e8840b04 <mp_karatsuba_mul+0x19a>
    goto X0;
  if (mp_init_size (&y0, B) != MP_OKAY)
    e88409b4:	85a6                	mv	a1,s1
    e88409b6:	1828                	addi	a0,sp,56
    e88409b8:	cc1ff0ef          	jal	ra,e8840678 <mp_init_size>
    e88409bc:	14051163          	bnez	a0,e8840afe <mp_karatsuba_mul+0x194>
    goto X1;
  if (mp_init_size (&y1, b->used - B) != MP_OKAY)
    e88409c0:	0009a583          	lw	a1,0(s3)
    e88409c4:	0888                	addi	a0,sp,80
    e88409c6:	9d85                	subw	a1,a1,s1
    e88409c8:	cb1ff0ef          	jal	ra,e8840678 <mp_init_size>
    e88409cc:	12051663          	bnez	a0,e8840af8 <mp_karatsuba_mul+0x18e>
    goto Y0;

  /* init temps */
  if (mp_init_size (&t1, B * 2) != MP_OKAY)
    e88409d0:	00149a1b          	slliw	s4,s1,0x1
    e88409d4:	85d2                	mv	a1,s4
    e88409d6:	10a8                	addi	a0,sp,104
    e88409d8:	ca1ff0ef          	jal	ra,e8840678 <mp_init_size>
    e88409dc:	10051b63          	bnez	a0,e8840af2 <mp_karatsuba_mul+0x188>
    goto Y1;
  if (mp_init_size (&x0y0, B * 2) != MP_OKAY)
    e88409e0:	85d2                	mv	a1,s4
    e88409e2:	0108                	addi	a0,sp,128
    e88409e4:	c95ff0ef          	jal	ra,e8840678 <mp_init_size>
    e88409e8:	10051263          	bnez	a0,e8840aec <mp_karatsuba_mul+0x182>
    goto T1;
  if (mp_init_size (&x1y1, B * 2) != MP_OKAY)
    e88409ec:	85d2                	mv	a1,s4
    e88409ee:	0928                	addi	a0,sp,152
    e88409f0:	c89ff0ef          	jal	ra,e8840678 <mp_init_size>
    e88409f4:	0e051963          	bnez	a0,e8840ae6 <mp_karatsuba_mul+0x17c>
    goto X0Y0;

  /* now shift the digits */
  x0.used = y0.used = B;
  x1.used = a->used - B;
    e88409f8:	000b2783          	lw	a5,0(s6)
    register mp_digit *tmpa, *tmpb, *tmpx, *tmpy;

    /* we copy the digits directly instead of using higher level functions
     * since we also need to shift the digits
     */
    tmpa = a->dp;
    e88409fc:	010b3683          	ld	a3,16(s6)
    tmpb = b->dp;
    e8840a00:	0109b703          	ld	a4,16(s3)
  x1.used = a->used - B;
    e8840a04:	9f85                	subw	a5,a5,s1
    e8840a06:	d03e                	sw	a5,32(sp)
  y1.used = b->used - B;
    e8840a08:	0009a783          	lw	a5,0(s3)

    tmpx = x0.dp;
    e8840a0c:	65e2                	ld	a1,24(sp)
    tmpy = y0.dp;
    e8840a0e:	6526                	ld	a0,72(sp)
  y1.used = b->used - B;
    e8840a10:	9f85                	subw	a5,a5,s1
    e8840a12:	c8be                	sw	a5,80(sp)
  x0.used = y0.used = B;
    e8840a14:	dc26                	sw	s1,56(sp)
    e8840a16:	c426                	sw	s1,8(sp)
    for (x = 0; x < B; x++) {
    e8840a18:	4781                	li	a5,0
    e8840a1a:	0007861b          	sext.w	a2,a5
    e8840a1e:	10964163          	blt	a2,s1,e8840b20 <mp_karatsuba_mul+0x1b6>
    e8840a22:	0004d363          	bgez	s1,e8840a28 <mp_karatsuba_mul+0xbe>
    e8840a26:	4401                	li	s0,0
      *tmpx++ = *tmpa++;
      *tmpy++ = *tmpb++;
    }

    tmpx = x1.dp;
    e8840a28:	7542                	ld	a0,48(sp)
    e8840a2a:	040e                	slli	s0,s0,0x3
    e8840a2c:	96a2                	add	a3,a3,s0
    for (x = B; x < a->used; x++) {
    e8840a2e:	4781                	li	a5,0
    e8840a30:	943a                	add	s0,s0,a4
    e8840a32:	8726                	mv	a4,s1
    e8840a34:	000b2583          	lw	a1,0(s6)
    e8840a38:	00e7863b          	addw	a2,a5,a4
    e8840a3c:	0eb64c63          	blt	a2,a1,e8840b34 <mp_karatsuba_mul+0x1ca>
      *tmpx++ = *tmpa++;
    }

    tmpy = y1.dp;
    e8840a40:	7586                	ld	a1,96(sp)
    for (x = B; x < b->used; x++) {
    e8840a42:	4781                	li	a5,0
    e8840a44:	0009a603          	lw	a2,0(s3)
    e8840a48:	00e786bb          	addw	a3,a5,a4
    e8840a4c:	0ec6ca63          	blt	a3,a2,e8840b40 <mp_karatsuba_mul+0x1d6>
  }

  /* only need to clamp the lower words since by definition the 
   * upper words x1/y1 must have a known number of digits
   */
  mp_clamp (&x0);
    e8840a50:	0028                	addi	a0,sp,8
    e8840a52:	d5dfe0ef          	jal	ra,e883f7ae <mp_clamp>
  mp_clamp (&y0);
    e8840a56:	1828                	addi	a0,sp,56
    e8840a58:	d57fe0ef          	jal	ra,e883f7ae <mp_clamp>

  /* now calc the products x0y0 and x1y1 */
  /* after this x0 is no longer required, free temp [x0==t2]! */
  if (mp_mul (&x0, &y0, &x0y0) != MP_OKAY)  
    e8840a5c:	0110                	addi	a2,sp,128
    e8840a5e:	182c                	addi	a1,sp,56
    e8840a60:	0028                	addi	a0,sp,8
    e8840a62:	59e000ef          	jal	ra,e8841000 <mp_mul>
    e8840a66:	ed25                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* x0y0 = x0*y0 */
  if (mp_mul (&x1, &y1, &x1y1) != MP_OKAY)
    e8840a68:	0930                	addi	a2,sp,152
    e8840a6a:	088c                	addi	a1,sp,80
    e8840a6c:	1008                	addi	a0,sp,32
    e8840a6e:	592000ef          	jal	ra,e8841000 <mp_mul>
    e8840a72:	e535                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* x1y1 = x1*y1 */

  /* now calc x1+x0 and y1+y0 */
  if (s_mp_add (&x1, &x0, &t1) != MP_OKAY)
    e8840a74:	10b0                	addi	a2,sp,104
    e8840a76:	002c                	addi	a1,sp,8
    e8840a78:	1008                	addi	a0,sp,32
    e8840a7a:	6c6010ef          	jal	ra,e8842140 <s_mp_add>
    e8840a7e:	e125                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* t1 = x1 - x0 */
  if (s_mp_add (&y1, &y0, &x0) != MP_OKAY)
    e8840a80:	0030                	addi	a2,sp,8
    e8840a82:	182c                	addi	a1,sp,56
    e8840a84:	0888                	addi	a0,sp,80
    e8840a86:	6ba010ef          	jal	ra,e8842140 <s_mp_add>
    e8840a8a:	e931                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* t2 = y1 - y0 */
  if (mp_mul (&t1, &x0, &t1) != MP_OKAY)
    e8840a8c:	10b0                	addi	a2,sp,104
    e8840a8e:	002c                	addi	a1,sp,8
    e8840a90:	8532                	mv	a0,a2
    e8840a92:	56e000ef          	jal	ra,e8841000 <mp_mul>
    e8840a96:	e521                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* t1 = (x1 + x0) * (y1 + y0) */

  /* add x0y0 */
  if (mp_add (&x0y0, &x1y1, &x0) != MP_OKAY)
    e8840a98:	0030                	addi	a2,sp,8
    e8840a9a:	092c                	addi	a1,sp,152
    e8840a9c:	0108                	addi	a0,sp,128
    e8840a9e:	badfe0ef          	jal	ra,e883f64a <mp_add>
    e8840aa2:	ed15                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* t2 = x0y0 + x1y1 */
  if (s_mp_sub (&t1, &x0, &t1) != MP_OKAY)
    e8840aa4:	10b0                	addi	a2,sp,104
    e8840aa6:	002c                	addi	a1,sp,8
    e8840aa8:	8532                	mv	a0,a2
    e8840aaa:	667010ef          	jal	ra,e8842910 <s_mp_sub>
    e8840aae:	e905                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* t1 = (x1+x0)*(y1+y0) - (x1y1 + x0y0) */

  /* shift by B */
  if (mp_lshd (&t1, B) != MP_OKAY)
    e8840ab0:	85a6                	mv	a1,s1
    e8840ab2:	10a8                	addi	a0,sp,104
    e8840ab4:	20e000ef          	jal	ra,e8840cc2 <mp_lshd>
    e8840ab8:	e11d                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* t1 = (x0y0 + x1y1 - (x1-x0)*(y1-y0))<<B */
  if (mp_lshd (&x1y1, B * 2) != MP_OKAY)
    e8840aba:	85d2                	mv	a1,s4
    e8840abc:	0928                	addi	a0,sp,152
    e8840abe:	204000ef          	jal	ra,e8840cc2 <mp_lshd>
    e8840ac2:	ed11                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* x1y1 = x1y1 << 2*B */

  if (mp_add (&x0y0, &t1, &t1) != MP_OKAY)
    e8840ac4:	10b0                	addi	a2,sp,104
    e8840ac6:	85b2                	mv	a1,a2
    e8840ac8:	0108                	addi	a0,sp,128
    e8840aca:	b81fe0ef          	jal	ra,e883f64a <mp_add>
    e8840ace:	e901                	bnez	a0,e8840ade <mp_karatsuba_mul+0x174>
    goto X1Y1;          /* t1 = x0y0 + t1 */
  if (mp_add (&t1, &x1y1, c) != MP_OKAY)
    e8840ad0:	8656                	mv	a2,s5
    e8840ad2:	092c                	addi	a1,sp,152
    e8840ad4:	10a8                	addi	a0,sp,104
    e8840ad6:	b75fe0ef          	jal	ra,e883f64a <mp_add>
    e8840ada:	892a                	mv	s2,a0
    e8840adc:	c111                	beqz	a0,e8840ae0 <mp_karatsuba_mul+0x176>
  err = MP_MEM;
    e8840ade:	5979                	li	s2,-2
    goto X1Y1;          /* t1 = x0y0 + t1 + x1y1 */

  /* Algorithm succeeded set the return code to MP_OKAY */
  err = MP_OKAY;

X1Y1:mp_clear (&x1y1);
    e8840ae0:	0928                	addi	a0,sp,152
    e8840ae2:	ceffe0ef          	jal	ra,e883f7d0 <mp_clear>
X0Y0:mp_clear (&x0y0);
    e8840ae6:	0108                	addi	a0,sp,128
    e8840ae8:	ce9fe0ef          	jal	ra,e883f7d0 <mp_clear>
T1:mp_clear (&t1);
    e8840aec:	10a8                	addi	a0,sp,104
    e8840aee:	ce3fe0ef          	jal	ra,e883f7d0 <mp_clear>
Y1:mp_clear (&y1);
    e8840af2:	0888                	addi	a0,sp,80
    e8840af4:	cddfe0ef          	jal	ra,e883f7d0 <mp_clear>
Y0:mp_clear (&y0);
    e8840af8:	1828                	addi	a0,sp,56
    e8840afa:	cd7fe0ef          	jal	ra,e883f7d0 <mp_clear>
X1:mp_clear (&x1);
    e8840afe:	1008                	addi	a0,sp,32
    e8840b00:	cd1fe0ef          	jal	ra,e883f7d0 <mp_clear>
X0:mp_clear (&x0);
    e8840b04:	0028                	addi	a0,sp,8
    e8840b06:	ccbfe0ef          	jal	ra,e883f7d0 <mp_clear>
ERR:
  return err;
}
    e8840b0a:	70ae                	ld	ra,232(sp)
    e8840b0c:	740e                	ld	s0,224(sp)
    e8840b0e:	854a                	mv	a0,s2
    e8840b10:	64ee                	ld	s1,216(sp)
    e8840b12:	694e                	ld	s2,208(sp)
    e8840b14:	69ae                	ld	s3,200(sp)
    e8840b16:	6a0e                	ld	s4,192(sp)
    e8840b18:	7aea                	ld	s5,184(sp)
    e8840b1a:	7b4a                	ld	s6,176(sp)
    e8840b1c:	616d                	addi	sp,sp,240
    e8840b1e:	8082                	ret
      *tmpx++ = *tmpa++;
    e8840b20:	66f6c60b          	lrd	a2,a3,a5,3
    e8840b24:	66f5d60b          	srd	a2,a1,a5,3
      *tmpy++ = *tmpb++;
    e8840b28:	66f7460b          	lrd	a2,a4,a5,3
    e8840b2c:	66f5560b          	srd	a2,a0,a5,3
    for (x = 0; x < B; x++) {
    e8840b30:	0785                	addi	a5,a5,1
    e8840b32:	b5e5                	j	e8840a1a <mp_karatsuba_mul+0xb0>
      *tmpx++ = *tmpa++;
    e8840b34:	66f6c60b          	lrd	a2,a3,a5,3
    e8840b38:	66f5560b          	srd	a2,a0,a5,3
    for (x = B; x < a->used; x++) {
    e8840b3c:	0785                	addi	a5,a5,1
    e8840b3e:	bddd                	j	e8840a34 <mp_karatsuba_mul+0xca>
      *tmpy++ = *tmpb++;
    e8840b40:	66f4468b          	lrd	a3,s0,a5,3
    e8840b44:	66f5d68b          	srd	a3,a1,a5,3
    for (x = B; x < b->used; x++) {
    e8840b48:	0785                	addi	a5,a5,1
    e8840b4a:	bded                	j	e8840a44 <mp_karatsuba_mul+0xda>

00000000e8840b4c <mp_karatsuba_sqr>:
 * See comments of karatsuba_mul for details.  It 
 * is essentially the same algorithm but merely 
 * tuned to perform recursive squarings.
 */
int mp_karatsuba_sqr (mp_int * a, mp_int * b)
{
    e8840b4c:	7155                	addi	sp,sp,-208
    e8840b4e:	fd26                	sd	s1,184(sp)
    e8840b50:	f94a                	sd	s2,176(sp)
    e8840b52:	f54e                	sd	s3,168(sp)
    e8840b54:	ed56                	sd	s5,152(sp)
    e8840b56:	e586                	sd	ra,200(sp)
    e8840b58:	e1a2                	sd	s0,192(sp)
    e8840b5a:	f152                	sd	s4,160(sp)
  int     B, err;

  err = MP_MEM;

  /* min # of digits */
  B = a->used;
    e8840b5c:	4100                	lw	s0,0(a0)
{
    e8840b5e:	84aa                	mv	s1,a0
    e8840b60:	8aae                	mv	s5,a1

  /* now divide in two */
  B = B >> 1;
    e8840b62:	4014599b          	sraiw	s3,s0,0x1

  /* init copy all the temps */
  if (mp_init_size (&x0, B) != MP_OKAY)
    e8840b66:	85ce                	mv	a1,s3
    e8840b68:	850a                	mv	a0,sp
    e8840b6a:	b0fff0ef          	jal	ra,e8840678 <mp_init_size>
  err = MP_MEM;
    e8840b6e:	5979                	li	s2,-2
  if (mp_init_size (&x0, B) != MP_OKAY)
    e8840b70:	12051363          	bnez	a0,e8840c96 <mp_karatsuba_sqr+0x14a>
    goto ERR;
  if (mp_init_size (&x1, a->used - B) != MP_OKAY)
    e8840b74:	408c                	lw	a1,0(s1)
    e8840b76:	0828                	addi	a0,sp,24
    e8840b78:	844e                	mv	s0,s3
    e8840b7a:	413585bb          	subw	a1,a1,s3
    e8840b7e:	afbff0ef          	jal	ra,e8840678 <mp_init_size>
  err = MP_MEM;
    e8840b82:	5979                	li	s2,-2
  if (mp_init_size (&x1, a->used - B) != MP_OKAY)
    e8840b84:	10051663          	bnez	a0,e8840c90 <mp_karatsuba_sqr+0x144>
    goto X0;

  /* init temps */
  if (mp_init_size (&t1, a->used * 2) != MP_OKAY)
    e8840b88:	408c                	lw	a1,0(s1)
    e8840b8a:	1808                	addi	a0,sp,48
    e8840b8c:	0015959b          	slliw	a1,a1,0x1
    e8840b90:	ae9ff0ef          	jal	ra,e8840678 <mp_init_size>
    e8840b94:	0e051b63          	bnez	a0,e8840c8a <mp_karatsuba_sqr+0x13e>
    goto X1;
  if (mp_init_size (&t2, a->used * 2) != MP_OKAY)
    e8840b98:	408c                	lw	a1,0(s1)
    e8840b9a:	00a8                	addi	a0,sp,72
    e8840b9c:	0015959b          	slliw	a1,a1,0x1
    e8840ba0:	ad9ff0ef          	jal	ra,e8840678 <mp_init_size>
    e8840ba4:	0e051063          	bnez	a0,e8840c84 <mp_karatsuba_sqr+0x138>
    goto T1;
  if (mp_init_size (&x0x0, B * 2) != MP_OKAY)
    e8840ba8:	00199a1b          	slliw	s4,s3,0x1
    e8840bac:	85d2                	mv	a1,s4
    e8840bae:	1088                	addi	a0,sp,96
    e8840bb0:	ac9ff0ef          	jal	ra,e8840678 <mp_init_size>
    e8840bb4:	0c051563          	bnez	a0,e8840c7e <mp_karatsuba_sqr+0x132>
    goto T2;
  if (mp_init_size (&x1x1, (a->used - B) * 2) != MP_OKAY)
    e8840bb8:	408c                	lw	a1,0(s1)
    e8840bba:	18a8                	addi	a0,sp,120
    e8840bbc:	413585bb          	subw	a1,a1,s3
    e8840bc0:	0015959b          	slliw	a1,a1,0x1
    e8840bc4:	ab5ff0ef          	jal	ra,e8840678 <mp_init_size>
    e8840bc8:	e945                	bnez	a0,e8840c78 <mp_karatsuba_sqr+0x12c>

  {
    register int x;
    register mp_digit *dst, *src;

    src = a->dp;
    e8840bca:	6898                	ld	a4,16(s1)

    /* now shift the digits */
    dst = x0.dp;
    e8840bcc:	6642                	ld	a2,16(sp)
    for (x = 0; x < B; x++) {
    e8840bce:	4781                	li	a5,0
    e8840bd0:	0007869b          	sext.w	a3,a5
    e8840bd4:	0d36cb63          	blt	a3,s3,e8840caa <mp_karatsuba_sqr+0x15e>
    e8840bd8:	86a2                	mv	a3,s0
    e8840bda:	0009d363          	bgez	s3,e8840be0 <mp_karatsuba_sqr+0x94>
    e8840bde:	4681                	li	a3,0
      *dst++ = *src++;
    }

    dst = x1.dp;
    e8840be0:	75a2                	ld	a1,40(sp)
    e8840be2:	06d7168b          	addsl	a3,a4,a3,3
    for (x = B; x < a->used; x++) {
    e8840be6:	4781                	li	a5,0
    e8840be8:	4098                	lw	a4,0(s1)
    e8840bea:	0137863b          	addw	a2,a5,s3
    e8840bee:	0ce64463          	blt	a2,a4,e8840cb6 <mp_karatsuba_sqr+0x16a>
      *dst++ = *src++;
    }
  }

  x0.used = B;
    e8840bf2:	c022                	sw	s0,0(sp)
  x1.used = a->used - B;

  mp_clamp (&x0);
    e8840bf4:	850a                	mv	a0,sp
  x1.used = a->used - B;
    e8840bf6:	4087043b          	subw	s0,a4,s0
    e8840bfa:	cc22                	sw	s0,24(sp)
  mp_clamp (&x0);
    e8840bfc:	bb3fe0ef          	jal	ra,e883f7ae <mp_clamp>

  /* now calc the products x0*x0 and x1*x1 */
  if (mp_sqr (&x0, &x0x0) != MP_OKAY)
    e8840c00:	108c                	addi	a1,sp,96
    e8840c02:	850a                	mv	a0,sp
    e8840c04:	363000ef          	jal	ra,e8841766 <mp_sqr>
    e8840c08:	e525                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* x0x0 = x0*x0 */
  if (mp_sqr (&x1, &x1x1) != MP_OKAY)
    e8840c0a:	18ac                	addi	a1,sp,120
    e8840c0c:	0828                	addi	a0,sp,24
    e8840c0e:	359000ef          	jal	ra,e8841766 <mp_sqr>
    e8840c12:	ed39                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* x1x1 = x1*x1 */

  /* now calc (x1+x0)**2 */
  if (s_mp_add (&x1, &x0, &t1) != MP_OKAY)
    e8840c14:	1810                	addi	a2,sp,48
    e8840c16:	858a                	mv	a1,sp
    e8840c18:	0828                	addi	a0,sp,24
    e8840c1a:	526010ef          	jal	ra,e8842140 <s_mp_add>
    e8840c1e:	e929                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* t1 = x1 - x0 */
  if (mp_sqr (&t1, &t1) != MP_OKAY)
    e8840c20:	180c                	addi	a1,sp,48
    e8840c22:	852e                	mv	a0,a1
    e8840c24:	343000ef          	jal	ra,e8841766 <mp_sqr>
    e8840c28:	e521                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* t1 = (x1 - x0) * (x1 - x0) */

  /* add x0y0 */
  if (s_mp_add (&x0x0, &x1x1, &t2) != MP_OKAY)
    e8840c2a:	00b0                	addi	a2,sp,72
    e8840c2c:	18ac                	addi	a1,sp,120
    e8840c2e:	1088                	addi	a0,sp,96
    e8840c30:	510010ef          	jal	ra,e8842140 <s_mp_add>
    e8840c34:	ed15                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* t2 = x0x0 + x1x1 */
  if (s_mp_sub (&t1, &t2, &t1) != MP_OKAY)
    e8840c36:	1810                	addi	a2,sp,48
    e8840c38:	00ac                	addi	a1,sp,72
    e8840c3a:	8532                	mv	a0,a2
    e8840c3c:	4d5010ef          	jal	ra,e8842910 <s_mp_sub>
    e8840c40:	e905                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* t1 = (x1+x0)**2 - (x0x0 + x1x1) */

  /* shift by B */
  if (mp_lshd (&t1, B) != MP_OKAY)
    e8840c42:	85ce                	mv	a1,s3
    e8840c44:	1808                	addi	a0,sp,48
    e8840c46:	07c000ef          	jal	ra,e8840cc2 <mp_lshd>
    e8840c4a:	e11d                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* t1 = (x0x0 + x1x1 - (x1-x0)*(x1-x0))<<B */
  if (mp_lshd (&x1x1, B * 2) != MP_OKAY)
    e8840c4c:	85d2                	mv	a1,s4
    e8840c4e:	18a8                	addi	a0,sp,120
    e8840c50:	072000ef          	jal	ra,e8840cc2 <mp_lshd>
    e8840c54:	ed11                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* x1x1 = x1x1 << 2*B */

  if (mp_add (&x0x0, &t1, &t1) != MP_OKAY)
    e8840c56:	1810                	addi	a2,sp,48
    e8840c58:	85b2                	mv	a1,a2
    e8840c5a:	1088                	addi	a0,sp,96
    e8840c5c:	9effe0ef          	jal	ra,e883f64a <mp_add>
    e8840c60:	e901                	bnez	a0,e8840c70 <mp_karatsuba_sqr+0x124>
    goto X1X1;           /* t1 = x0x0 + t1 */
  if (mp_add (&t1, &x1x1, b) != MP_OKAY)
    e8840c62:	8656                	mv	a2,s5
    e8840c64:	18ac                	addi	a1,sp,120
    e8840c66:	1808                	addi	a0,sp,48
    e8840c68:	9e3fe0ef          	jal	ra,e883f64a <mp_add>
    e8840c6c:	892a                	mv	s2,a0
    e8840c6e:	c111                	beqz	a0,e8840c72 <mp_karatsuba_sqr+0x126>
  err = MP_MEM;
    e8840c70:	5979                	li	s2,-2
    goto X1X1;           /* t1 = x0x0 + t1 + x1x1 */

  err = MP_OKAY;

X1X1:mp_clear (&x1x1);
    e8840c72:	18a8                	addi	a0,sp,120
    e8840c74:	b5dfe0ef          	jal	ra,e883f7d0 <mp_clear>
X0X0:mp_clear (&x0x0);
    e8840c78:	1088                	addi	a0,sp,96
    e8840c7a:	b57fe0ef          	jal	ra,e883f7d0 <mp_clear>
T2:mp_clear (&t2);
    e8840c7e:	00a8                	addi	a0,sp,72
    e8840c80:	b51fe0ef          	jal	ra,e883f7d0 <mp_clear>
T1:mp_clear (&t1);
    e8840c84:	1808                	addi	a0,sp,48
    e8840c86:	b4bfe0ef          	jal	ra,e883f7d0 <mp_clear>
X1:mp_clear (&x1);
    e8840c8a:	0828                	addi	a0,sp,24
    e8840c8c:	b45fe0ef          	jal	ra,e883f7d0 <mp_clear>
X0:mp_clear (&x0);
    e8840c90:	850a                	mv	a0,sp
    e8840c92:	b3ffe0ef          	jal	ra,e883f7d0 <mp_clear>
ERR:
  return err;
}
    e8840c96:	60ae                	ld	ra,200(sp)
    e8840c98:	640e                	ld	s0,192(sp)
    e8840c9a:	854a                	mv	a0,s2
    e8840c9c:	74ea                	ld	s1,184(sp)
    e8840c9e:	794a                	ld	s2,176(sp)
    e8840ca0:	79aa                	ld	s3,168(sp)
    e8840ca2:	7a0a                	ld	s4,160(sp)
    e8840ca4:	6aea                	ld	s5,152(sp)
    e8840ca6:	6169                	addi	sp,sp,208
    e8840ca8:	8082                	ret
      *dst++ = *src++;
    e8840caa:	66f7468b          	lrd	a3,a4,a5,3
    e8840cae:	66f6568b          	srd	a3,a2,a5,3
    for (x = 0; x < B; x++) {
    e8840cb2:	0785                	addi	a5,a5,1
    e8840cb4:	bf31                	j	e8840bd0 <mp_karatsuba_sqr+0x84>
      *dst++ = *src++;
    e8840cb6:	66f6c70b          	lrd	a4,a3,a5,3
    e8840cba:	66f5d70b          	srd	a4,a1,a5,3
    for (x = B; x < a->used; x++) {
    e8840cbe:	0785                	addi	a5,a5,1
    e8840cc0:	b725                	j	e8840be8 <mp_karatsuba_sqr+0x9c>

00000000e8840cc2 <mp_lshd>:
int mp_lshd (mp_int * a, int b)
{
  int     x, res;

  /* if its less than zero return */
  if (b <= 0) {
    e8840cc2:	06b05863          	blez	a1,e8840d32 <mp_lshd+0x70>
{
    e8840cc6:	1101                	addi	sp,sp,-32
    e8840cc8:	e422                	sd	s0,8(sp)
    e8840cca:	e826                	sd	s1,16(sp)
    e8840ccc:	ec06                	sd	ra,24(sp)
    e8840cce:	842e                	mv	s0,a1
    return MP_OKAY;
  }

  /* grow to fit the new digits */
  if (a->alloc < a->used + b) {
    e8840cd0:	410c                	lw	a1,0(a0)
    e8840cd2:	415c                	lw	a5,4(a0)
    e8840cd4:	84aa                	mv	s1,a0
    e8840cd6:	9da1                	addw	a1,a1,s0
    e8840cd8:	02b7ce63          	blt	a5,a1,e8840d14 <mp_lshd+0x52>

  {
    register mp_digit *top, *bottom;

    /* increment the used by the shift amount then copy upwards */
    a->used += b;
    e8840cdc:	409c                	lw	a5,0(s1)

    /* top */
    top = a->dp + a->used - 1;
    e8840cde:	6898                	ld	a4,16(s1)
    a->used += b;
    e8840ce0:	008786bb          	addw	a3,a5,s0
    top = a->dp + a->used - 1;
    e8840ce4:	06d7160b          	addsl	a2,a4,a3,3
    a->used += b;
    e8840ce8:	87b6                	mv	a5,a3
    e8840cea:	c094                	sw	a3,0(s1)

    /* base */
    bottom = a->dp + a->used - 1 - b;
    e8840cec:	8e81                	sub	a3,a3,s0
    e8840cee:	06d7170b          	addsl	a4,a4,a3,3
    top = a->dp + a->used - 1;
    e8840cf2:	1661                	addi	a2,a2,-8
    bottom = a->dp + a->used - 1 - b;
    e8840cf4:	1761                	addi	a4,a4,-8

    /* much like mp_rshd this is implemented using a sliding window
     * except the window goes the otherway around.  Copying from
     * the bottom to the top.  see bn_mp_rshd.c for more info.
     */
    for (x = a->used - 1; x >= b; x--) {
    e8840cf6:	37fd                	addiw	a5,a5,-1
    e8840cf8:	4681                	li	a3,0
    e8840cfa:	0287d563          	bge	a5,s0,e8840d24 <mp_lshd+0x62>
      *top-- = *bottom--;
    }

    /* zero the lower digits */
    top = a->dp;
    e8840cfe:	6894                	ld	a3,16(s1)
    e8840d00:	4781                	li	a5,0
    for (x = 0; x < b; x++) {
      *top++ = 0;
    e8840d02:	66f6d00b          	srd	zero,a3,a5,3
    for (x = 0; x < b; x++) {
    e8840d06:	0785                	addi	a5,a5,1
    e8840d08:	0007871b          	sext.w	a4,a5
    e8840d0c:	fe874be3          	blt	a4,s0,e8840d02 <mp_lshd+0x40>
    return MP_OKAY;
    e8840d10:	4501                	li	a0,0
    e8840d12:	a021                	j	e8840d1a <mp_lshd+0x58>
     if ((res = mp_grow (a, a->used + b)) != MP_OKAY) {
    e8840d14:	843ff0ef          	jal	ra,e8840556 <mp_grow>
    e8840d18:	d171                	beqz	a0,e8840cdc <mp_lshd+0x1a>
    }
  }
  return MP_OKAY;
}
    e8840d1a:	60e2                	ld	ra,24(sp)
    e8840d1c:	6422                	ld	s0,8(sp)
    e8840d1e:	64c2                	ld	s1,16(sp)
    e8840d20:	6105                	addi	sp,sp,32
    e8840d22:	8082                	ret
      *top-- = *bottom--;
    e8840d24:	60d7458b          	lrd	a1,a4,a3,0
    for (x = a->used - 1; x >= b; x--) {
    e8840d28:	37fd                	addiw	a5,a5,-1
      *top-- = *bottom--;
    e8840d2a:	60d6558b          	srd	a1,a2,a3,0
    for (x = a->used - 1; x >= b; x--) {
    e8840d2e:	16e1                	addi	a3,a3,-8
    e8840d30:	b7e9                	j	e8840cfa <mp_lshd+0x38>
    return MP_OKAY;
    e8840d32:	4501                	li	a0,0
}
    e8840d34:	8082                	ret

00000000e8840d36 <mp_mod>:
 */

/* c = a mod b, 0 <= c < b if b > 0, b < c <= 0 if b < 0 */
int
mp_mod (mp_int * a, mp_int * b, mp_int * c)
{
    e8840d36:	715d                	addi	sp,sp,-80
    e8840d38:	f44e                	sd	s3,40(sp)
    e8840d3a:	89aa                	mv	s3,a0
  mp_int  t;
  int     res;

  if ((res = mp_init (&t)) != MP_OKAY) {
    e8840d3c:	0028                	addi	a0,sp,8
{
    e8840d3e:	e0a2                	sd	s0,64(sp)
    e8840d40:	fc26                	sd	s1,56(sp)
    e8840d42:	f84a                	sd	s2,48(sp)
    e8840d44:	e486                	sd	ra,72(sp)
    e8840d46:	84ae                	mv	s1,a1
    e8840d48:	8932                	mv	s2,a2
  if ((res = mp_init (&t)) != MP_OKAY) {
    e8840d4a:	863ff0ef          	jal	ra,e88405ac <mp_init>
    e8840d4e:	842a                	mv	s0,a0
    e8840d50:	ed01                	bnez	a0,e8840d68 <mp_mod+0x32>
    return res;
  }

  if ((res = mp_div (a, b, NULL, &t)) != MP_OKAY) {
    e8840d52:	0034                	addi	a3,sp,8
    e8840d54:	4601                	li	a2,0
    e8840d56:	85a6                	mv	a1,s1
    e8840d58:	854e                	mv	a0,s3
    e8840d5a:	c09fe0ef          	jal	ra,e883f962 <mp_div>
    e8840d5e:	842a                	mv	s0,a0
    e8840d60:	cd01                	beqz	a0,e8840d78 <mp_mod+0x42>
    mp_exch (&t, c);
  } else {
    res = mp_add (b, &t, c);
  }

  mp_clear (&t);
    e8840d62:	0028                	addi	a0,sp,8
    e8840d64:	a6dfe0ef          	jal	ra,e883f7d0 <mp_clear>
  return res;
}
    e8840d68:	8522                	mv	a0,s0
    e8840d6a:	60a6                	ld	ra,72(sp)
    e8840d6c:	6406                	ld	s0,64(sp)
    e8840d6e:	74e2                	ld	s1,56(sp)
    e8840d70:	7942                	ld	s2,48(sp)
    e8840d72:	79a2                	ld	s3,40(sp)
    e8840d74:	6161                	addi	sp,sp,80
    e8840d76:	8082                	ret
  if (mp_iszero(&t) || t.sign == b->sign) {
    e8840d78:	47a2                	lw	a5,8(sp)
    e8840d7a:	c789                	beqz	a5,e8840d84 <mp_mod+0x4e>
    e8840d7c:	4742                	lw	a4,16(sp)
    e8840d7e:	449c                	lw	a5,8(s1)
    e8840d80:	00f71763          	bne	a4,a5,e8840d8e <mp_mod+0x58>
    mp_exch (&t, c);
    e8840d84:	85ca                	mv	a1,s2
    e8840d86:	0028                	addi	a0,sp,8
    e8840d88:	a10ff0ef          	jal	ra,e883ff98 <mp_exch>
    e8840d8c:	bfd9                	j	e8840d62 <mp_mod+0x2c>
    res = mp_add (b, &t, c);
    e8840d8e:	864a                	mv	a2,s2
    e8840d90:	002c                	addi	a1,sp,8
    e8840d92:	8526                	mv	a0,s1
    e8840d94:	8b7fe0ef          	jal	ra,e883f64a <mp_add>
    e8840d98:	842a                	mv	s0,a0
    e8840d9a:	b7e1                	j	e8840d62 <mp_mod+0x2c>

00000000e8840d9c <mp_mod_2d>:
 */

/* calc a value mod 2**b */
int
mp_mod_2d (mp_int * a, int b, mp_int * c)
{
    e8840d9c:	7179                	addi	sp,sp,-48
    e8840d9e:	f406                	sd	ra,40(sp)
    e8840da0:	f04a                	sd	s2,32(sp)
    e8840da2:	fa91540b          	sdd	s0,s1,(sp),1,4
  int     x, res;

  /* if b is <= 0 then zero the int */
  if (b <= 0) {
    e8840da6:	00b04d63          	bgtz	a1,e8840dc0 <mp_mod_2d+0x24>
    mp_zero (c);
    e8840daa:	8532                	mv	a0,a2
    e8840dac:	354010ef          	jal	ra,e8842100 <mp_zero>
    return MP_OKAY;
    e8840db0:	4901                	li	s2,0
  /* clear the digit that is not completely outside/inside the modulus */
  c->dp[b / DIGIT_BIT] &=
    (mp_digit) ((((mp_digit) 1) << (((mp_digit) b) % DIGIT_BIT)) - ((mp_digit) 1));
  mp_clamp (c);
  return MP_OKAY;
}
    e8840db2:	70a2                	ld	ra,40(sp)
    e8840db4:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8840db8:	854a                	mv	a0,s2
    e8840dba:	7902                	ld	s2,32(sp)
    e8840dbc:	6145                	addi	sp,sp,48
    e8840dbe:	8082                	ret
  if (b >= (int) (a->used * DIGIT_BIT)) {
    e8840dc0:	411c                	lw	a5,0(a0)
    e8840dc2:	4471                	li	s0,28
    e8840dc4:	84ae                	mv	s1,a1
    e8840dc6:	02f407bb          	mulw	a5,s0,a5
    res = mp_copy (a, c);
    e8840dca:	85b2                	mv	a1,a2
  if (b >= (int) (a->used * DIGIT_BIT)) {
    e8840dcc:	00f4c963          	blt	s1,a5,e8840dde <mp_mod_2d+0x42>
}
    e8840dd0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8840dd4:	70a2                	ld	ra,40(sp)
    e8840dd6:	7902                	ld	s2,32(sp)
    e8840dd8:	6145                	addi	sp,sp,48
    res = mp_copy (a, c);
    e8840dda:	af7fe06f          	j	e883f8d0 <mp_copy>
  if ((res = mp_copy (a, c)) != MP_OKAY) {
    e8840dde:	e432                	sd	a2,8(sp)
    e8840de0:	af1fe0ef          	jal	ra,e883f8d0 <mp_copy>
    e8840de4:	892a                	mv	s2,a0
    e8840de6:	f571                	bnez	a0,e8840db2 <mp_mod_2d+0x16>
  for (x = (b / DIGIT_BIT) + ((b % DIGIT_BIT) == 0 ? 0 : 1); x < c->used; x++) {
    e8840de8:	0284e7bb          	remw	a5,s1,s0
    e8840dec:	6622                	ld	a2,8(sp)
    e8840dee:	0284c6bb          	divw	a3,s1,s0
    e8840df2:	00f037b3          	snez	a5,a5
    e8840df6:	9fb5                	addw	a5,a5,a3
    e8840df8:	420c                	lw	a1,0(a2)
    e8840dfa:	6a18                	ld	a4,16(a2)
    e8840dfc:	02b7c363          	blt	a5,a1,e8840e22 <mp_mod_2d+0x86>
    (mp_digit) ((((mp_digit) 1) << (((mp_digit) b) % DIGIT_BIT)) - ((mp_digit) 1));
    e8840e00:	47f1                	li	a5,28
    e8840e02:	02f4f4b3          	remu	s1,s1,a5
  c->dp[b / DIGIT_BIT] &=
    e8840e06:	57fd                	li	a5,-1
  mp_clamp (c);
    e8840e08:	8532                	mv	a0,a2
  c->dp[b / DIGIT_BIT] &=
    e8840e0a:	009794b3          	sll	s1,a5,s1
    e8840e0e:	66d7478b          	lrd	a5,a4,a3,3
    e8840e12:	fff4c493          	not	s1,s1
    e8840e16:	8cfd                	and	s1,s1,a5
    e8840e18:	66d7548b          	srd	s1,a4,a3,3
  mp_clamp (c);
    e8840e1c:	993fe0ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e8840e20:	bf49                	j	e8840db2 <mp_mod_2d+0x16>
    c->dp[x] = 0;
    e8840e22:	66f7500b          	srd	zero,a4,a5,3
  for (x = (b / DIGIT_BIT) + ((b % DIGIT_BIT) == 0 ? 0 : 1); x < c->used; x++) {
    e8840e26:	2785                	addiw	a5,a5,1
    e8840e28:	bfc1                	j	e8840df8 <mp_mod_2d+0x5c>

00000000e8840e2a <mp_montgomery_calc_normalization>:
 *
 * The method is slightly modified to shift B unconditionally upto just under
 * the leading bit of b.  This saves alot of multiple precision shifting.
 */
int mp_montgomery_calc_normalization (mp_int * a, mp_int * b)
{
    e8840e2a:	7139                	addi	sp,sp,-64
    e8840e2c:	e422                	sd	s0,8(sp)
    e8840e2e:	842a                	mv	s0,a0
  int     x, bits, res;

  /* how many bits of last digit does b use */
  bits = mp_count_bits (b) % DIGIT_BIT;
    e8840e30:	852e                	mv	a0,a1
{
    e8840e32:	f04e                	sd	s3,32(sp)
    e8840e34:	fc06                	sd	ra,56(sp)
    e8840e36:	89ae                	mv	s3,a1
    e8840e38:	e826                	sd	s1,16(sp)
    e8840e3a:	ec4a                	sd	s2,24(sp)
    e8840e3c:	f452                	sd	s4,40(sp)
    e8840e3e:	f856                	sd	s5,48(sp)
  bits = mp_count_bits (b) % DIGIT_BIT;
    e8840e40:	afffe0ef          	jal	ra,e883f93e <mp_count_bits>

  if (b->used > 1) {
    e8840e44:	0009a783          	lw	a5,0(s3)
    e8840e48:	4705                	li	a4,1
    e8840e4a:	02f75963          	bge	a4,a5,e8840e7c <mp_montgomery_calc_normalization+0x52>
  bits = mp_count_bits (b) % DIGIT_BIT;
    e8840e4e:	4771                	li	a4,28
    e8840e50:	02e564bb          	remw	s1,a0,a4
     if ((res = mp_2expt (a, (b->used - 1) * DIGIT_BIT + bits - 1)) != MP_OKAY) {
    e8840e54:	37fd                	addiw	a5,a5,-1
    e8840e56:	8522                	mv	a0,s0
  bits = mp_count_bits (b) % DIGIT_BIT;
    e8840e58:	85a6                	mv	a1,s1
     if ((res = mp_2expt (a, (b->used - 1) * DIGIT_BIT + bits - 1)) != MP_OKAY) {
    e8840e5a:	24e7958b          	mulaw	a1,a5,a4
    e8840e5e:	35fd                	addiw	a1,a1,-1
    e8840e60:	f78fe0ef          	jal	ra,e883f5d8 <mp_2expt>
    e8840e64:	892a                	mv	s2,a0
    e8840e66:	c105                	beqz	a0,e8840e86 <mp_montgomery_calc_normalization+0x5c>
      }
    }
  }

  return MP_OKAY;
}
    e8840e68:	70e2                	ld	ra,56(sp)
    e8840e6a:	6422                	ld	s0,8(sp)
    e8840e6c:	854a                	mv	a0,s2
    e8840e6e:	64c2                	ld	s1,16(sp)
    e8840e70:	6962                	ld	s2,24(sp)
    e8840e72:	7982                	ld	s3,32(sp)
    e8840e74:	7a22                	ld	s4,40(sp)
    e8840e76:	7ac2                	ld	s5,48(sp)
    e8840e78:	6121                	addi	sp,sp,64
    e8840e7a:	8082                	ret
     mp_set(a, 1);
    e8840e7c:	4585                	li	a1,1
    e8840e7e:	8522                	mv	a0,s0
    e8840e80:	06b000ef          	jal	ra,e88416ea <mp_set>
     bits = 1;
    e8840e84:	4485                	li	s1,1
  for (x = bits - 1; x < (int)DIGIT_BIT; x++) {
    e8840e86:	34fd                	addiw	s1,s1,-1
    if (mp_cmp_mag (a, b) != MP_LT) {
    e8840e88:	5a7d                	li	s4,-1
  for (x = bits - 1; x < (int)DIGIT_BIT; x++) {
    e8840e8a:	4af1                	li	s5,28
    if ((res = mp_mul_2 (a, a)) != MP_OKAY) {
    e8840e8c:	85a2                	mv	a1,s0
    e8840e8e:	8522                	mv	a0,s0
    e8840e90:	208000ef          	jal	ra,e8841098 <mp_mul_2>
    e8840e94:	892a                	mv	s2,a0
    e8840e96:	f969                	bnez	a0,e8840e68 <mp_montgomery_calc_normalization+0x3e>
    if (mp_cmp_mag (a, b) != MP_LT) {
    e8840e98:	85ce                	mv	a1,s3
    e8840e9a:	8522                	mv	a0,s0
    e8840e9c:	9e9fe0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e8840ea0:	01451663          	bne	a0,s4,e8840eac <mp_montgomery_calc_normalization+0x82>
  for (x = bits - 1; x < (int)DIGIT_BIT; x++) {
    e8840ea4:	2485                	addiw	s1,s1,1
    e8840ea6:	ff5493e3          	bne	s1,s5,e8840e8c <mp_montgomery_calc_normalization+0x62>
    e8840eaa:	bf7d                	j	e8840e68 <mp_montgomery_calc_normalization+0x3e>
      if ((res = s_mp_sub (a, b, a)) != MP_OKAY) {
    e8840eac:	8622                	mv	a2,s0
    e8840eae:	85ce                	mv	a1,s3
    e8840eb0:	8522                	mv	a0,s0
    e8840eb2:	25f010ef          	jal	ra,e8842910 <s_mp_sub>
    e8840eb6:	d57d                	beqz	a0,e8840ea4 <mp_montgomery_calc_normalization+0x7a>
    e8840eb8:	892a                	mv	s2,a0
    e8840eba:	b77d                	j	e8840e68 <mp_montgomery_calc_normalization+0x3e>

00000000e8840ebc <mp_montgomery_reduce>:
 */

/* computes xR**-1 == x (mod N) via Montgomery Reduction */
int
mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho)
{
    e8840ebc:	7179                	addi	sp,sp,-48
    e8840ebe:	e422                	sd	s0,8(sp)
    e8840ec0:	e826                	sd	s1,16(sp)
    e8840ec2:	ec4a                	sd	s2,24(sp)
    e8840ec4:	f04e                	sd	s3,32(sp)
    e8840ec6:	f406                	sd	ra,40(sp)
   *
   * Note that unlike in mul you're safely allowed *less*
   * than the available columns [255 per default] since carries
   * are fixed up in the inner loop.
   */
  digs = n->used * 2 + 1;
    e8840ec8:	4198                	lw	a4,0(a1)
  if ((digs < MP_WARRAY) &&
    e8840eca:	1ff00693          	li	a3,511
{
    e8840ece:	842a                	mv	s0,a0
  digs = n->used * 2 + 1;
    e8840ed0:	0017191b          	slliw	s2,a4,0x1
    e8840ed4:	0019079b          	addiw	a5,s2,1
{
    e8840ed8:	84ae                	mv	s1,a1
    e8840eda:	89b2                	mv	s3,a2
  digs = n->used * 2 + 1;
    e8840edc:	893e                	mv	s2,a5
  if ((digs < MP_WARRAY) &&
    e8840ede:	00f6ce63          	blt	a3,a5,e8840efa <mp_montgomery_reduce+0x3e>
    e8840ee2:	0ff00693          	li	a3,255
    e8840ee6:	00e6ca63          	blt	a3,a4,e8840efa <mp_montgomery_reduce+0x3e>
  if (mp_cmp_mag (x, n) != MP_LT) {
    return s_mp_sub (x, n, x);
  }

  return MP_OKAY;
}
    e8840eea:	6422                	ld	s0,8(sp)
    e8840eec:	70a2                	ld	ra,40(sp)
    e8840eee:	64c2                	ld	s1,16(sp)
    e8840ef0:	6962                	ld	s2,24(sp)
    e8840ef2:	7982                	ld	s3,32(sp)
    e8840ef4:	6145                	addi	sp,sp,48
    return fast_mp_montgomery_reduce (x, n, rho);
    e8840ef6:	9c8fe06f          	j	e883f0be <fast_mp_montgomery_reduce>
  if (x->alloc < digs) {
    e8840efa:	4058                	lw	a4,4(s0)
    e8840efc:	04f74263          	blt	a4,a5,e8840f40 <mp_montgomery_reduce+0x84>
  x->used = digs;
    e8840f00:	01242023          	sw	s2,0(s0)
  for (ix = 0; ix < n->used; ix++) {
    e8840f04:	4681                	li	a3,0
    e8840f06:	409c                	lw	a5,0(s1)
    e8840f08:	04f6ca63          	blt	a3,a5,e8840f5c <mp_montgomery_reduce+0xa0>
  mp_clamp(x);
    e8840f0c:	8522                	mv	a0,s0
    e8840f0e:	8a1fe0ef          	jal	ra,e883f7ae <mp_clamp>
  mp_rshd (x, n->used);
    e8840f12:	408c                	lw	a1,0(s1)
    e8840f14:	8522                	mv	a0,s0
    e8840f16:	784000ef          	jal	ra,e884169a <mp_rshd>
  if (mp_cmp_mag (x, n) != MP_LT) {
    e8840f1a:	85a6                	mv	a1,s1
    e8840f1c:	8522                	mv	a0,s0
    e8840f1e:	967fe0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e8840f22:	577d                	li	a4,-1
  return MP_OKAY;
    e8840f24:	4781                	li	a5,0
  if (mp_cmp_mag (x, n) != MP_LT) {
    e8840f26:	02e50363          	beq	a0,a4,e8840f4c <mp_montgomery_reduce+0x90>
    return s_mp_sub (x, n, x);
    e8840f2a:	8622                	mv	a2,s0
    e8840f2c:	8522                	mv	a0,s0
}
    e8840f2e:	6422                	ld	s0,8(sp)
    e8840f30:	70a2                	ld	ra,40(sp)
    e8840f32:	6962                	ld	s2,24(sp)
    e8840f34:	7982                	ld	s3,32(sp)
    return s_mp_sub (x, n, x);
    e8840f36:	85a6                	mv	a1,s1
}
    e8840f38:	64c2                	ld	s1,16(sp)
    e8840f3a:	6145                	addi	sp,sp,48
    return s_mp_sub (x, n, x);
    e8840f3c:	1d50106f          	j	e8842910 <s_mp_sub>
    if ((res = mp_grow (x, digs)) != MP_OKAY) {
    e8840f40:	85be                	mv	a1,a5
    e8840f42:	8522                	mv	a0,s0
    e8840f44:	e12ff0ef          	jal	ra,e8840556 <mp_grow>
    e8840f48:	87aa                	mv	a5,a0
    e8840f4a:	d95d                	beqz	a0,e8840f00 <mp_montgomery_reduce+0x44>
}
    e8840f4c:	70a2                	ld	ra,40(sp)
    e8840f4e:	6422                	ld	s0,8(sp)
    e8840f50:	64c2                	ld	s1,16(sp)
    e8840f52:	6962                	ld	s2,24(sp)
    e8840f54:	7982                	ld	s3,32(sp)
    e8840f56:	853e                	mv	a0,a5
    e8840f58:	6145                	addi	sp,sp,48
    e8840f5a:	8082                	ret
    mu = (mp_digit) (((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK);
    e8840f5c:	681c                	ld	a5,16(s0)
      tmpn = n->dp;
    e8840f5e:	0104b303          	ld	t1,16(s1)
      for (iy = 0; iy < n->used; iy++) {
    e8840f62:	4701                	li	a4,0
    mu = (mp_digit) (((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK);
    e8840f64:	66d7c50b          	lrd	a0,a5,a3,3
    e8840f68:	06d7960b          	addsl	a2,a5,a3,3
      u = 0;
    e8840f6c:	4581                	li	a1,0
    mu = (mp_digit) (((mp_word)x->dp[ix]) * ((mp_word)rho) & MP_MASK);
    e8840f6e:	02a98533          	mul	a0,s3,a0
    e8840f72:	6c05350b          	extu	a0,a0,27,0
      for (iy = 0; iy < n->used; iy++) {
    e8840f76:	0004a883          	lw	a7,0(s1)
    e8840f7a:	0007081b          	sext.w	a6,a4
    e8840f7e:	06e6178b          	addsl	a5,a2,a4,3
    e8840f82:	01184563          	blt	a6,a7,e8840f8c <mp_montgomery_reduce+0xd0>
      while (u) {
    e8840f86:	e195                	bnez	a1,e8840faa <mp_montgomery_reduce+0xee>
  for (ix = 0; ix < n->used; ix++) {
    e8840f88:	2685                	addiw	a3,a3,1
    e8840f8a:	bfb5                	j	e8840f06 <mp_montgomery_reduce+0x4a>
        r       = ((mp_word)mu) * ((mp_word)*tmpn++) +
    e8840f8c:	66e6478b          	lrd	a5,a2,a4,3
    e8840f90:	66e3480b          	lrd	a6,t1,a4,3
    e8840f94:	97ae                	add	a5,a5,a1
    e8840f96:	2105178b          	mula	a5,a0,a6
        u       = (mp_digit)(r >> ((mp_word) DIGIT_BIT));
    e8840f9a:	01c7d593          	srli	a1,a5,0x1c
        *tmpx++ = (mp_digit)(r & ((mp_word) MP_MASK));
    e8840f9e:	6c07b78b          	extu	a5,a5,27,0
    e8840fa2:	66e6578b          	srd	a5,a2,a4,3
      for (iy = 0; iy < n->used; iy++) {
    e8840fa6:	0705                	addi	a4,a4,1
    e8840fa8:	b7f9                	j	e8840f76 <mp_montgomery_reduce+0xba>
        *tmpx   += u;
    e8840faa:	6398                	ld	a4,0(a5)
    e8840fac:	972e                	add	a4,a4,a1
        u        = *tmpx >> DIGIT_BIT;
    e8840fae:	01c75593          	srli	a1,a4,0x1c
        *tmpx++ &= MP_MASK;
    e8840fb2:	6c07370b          	extu	a4,a4,27,0
    e8840fb6:	7887d70b          	sdia	a4,(a5),8,0
    e8840fba:	b7f1                	j	e8840f86 <mp_montgomery_reduce+0xca>

00000000e8840fbc <mp_montgomery_setup>:
 *
 * XA = 1 (mod 2**n)  =>  (X(2-XA)) A = 1 (mod 2**2n)
 *                    =>  2*X*A - X*X*A*A = 1
 *                    =>  2*(1) - (1)     = 1
 */
  b = n->dp[0];
    e8840fbc:	691c                	ld	a5,16(a0)
    e8840fbe:	6394                	ld	a3,0(a5)

  if ((b & 1) == 0) {
    e8840fc0:	0016f793          	andi	a5,a3,1
    e8840fc4:	cf85                	beqz	a5,e8840ffc <mp_montgomery_setup+0x40>
    return MP_VAL;
  }

  x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */
    e8840fc6:	00268713          	addi	a4,a3,2
    e8840fca:	0706                	slli	a4,a4,0x1
  x *= 2 - b * x;               /* here x*a==1 mod 2**8 */
    e8840fcc:	4789                	li	a5,2
  x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */
    e8840fce:	8b21                	andi	a4,a4,8
    e8840fd0:	9736                	add	a4,a4,a3
  x *= 2 - b * x;               /* here x*a==1 mod 2**8 */
    e8840fd2:	863e                	mv	a2,a5
    e8840fd4:	22e6960b          	muls	a2,a3,a4
#endif

  /* rho = -1/m mod b */
  *rho = (unsigned long)(((mp_word)1 << ((mp_word) DIGIT_BIT)) - x) & MP_MASK;

  return MP_OKAY;
    e8840fd8:	4501                	li	a0,0
  x *= 2 - b * x;               /* here x*a==1 mod 2**8 */
    e8840fda:	02e60633          	mul	a2,a2,a4
  x *= 2 - b * x;               /* here x*a==1 mod 2**16 */
    e8840fde:	873e                	mv	a4,a5
    e8840fe0:	22c6970b          	muls	a4,a3,a2
    e8840fe4:	02c70733          	mul	a4,a4,a2
  x *= 2 - b * x;               /* here x*a==1 mod 2**32 */
    e8840fe8:	22e6978b          	muls	a5,a3,a4
    e8840fec:	02e787b3          	mul	a5,a5,a4
  *rho = (unsigned long)(((mp_word)1 << ((mp_word) DIGIT_BIT)) - x) & MP_MASK;
    e8840ff0:	40f007b3          	neg	a5,a5
    e8840ff4:	6c07b78b          	extu	a5,a5,27,0
    e8840ff8:	e19c                	sd	a5,0(a1)
  return MP_OKAY;
    e8840ffa:	8082                	ret
    return MP_VAL;
    e8840ffc:	5575                	li	a0,-3
}
    e8840ffe:	8082                	ret

00000000e8841000 <mp_mul>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* high level multiplication (handles sign) */
int mp_mul (mp_int * a, mp_int * b, mp_int * c)
{
    e8841000:	1101                	addi	sp,sp,-32
    e8841002:	f891540b          	sdd	s0,s1,(sp),0,4
    e8841006:	ec06                	sd	ra,24(sp)
    e8841008:	e84a                	sd	s2,16(sp)
  int     res, neg;
  neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;

  /* use Toom-Cook? */
#ifdef BN_MP_TOOM_MUL_C
  if (MIN (a->used, b->used) >= TOOM_MUL_CUTOFF) {
    e884100a:	4194                	lw	a3,0(a1)
    e884100c:	00052883          	lw	a7,0(a0)
{
    e8841010:	8432                	mv	s0,a2
  neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;
    e8841012:	4504                	lw	s1,8(a0)
  if (MIN (a->used, b->used) >= TOOM_MUL_CUTOFF) {
    e8841014:	00d8a7b3          	slt	a5,a7,a3
    e8841018:	8346                	mv	t1,a7
    e884101a:	40f6930b          	mveqz	t1,a3,a5
    e884101e:	879a                	mv	a5,t1
    e8841020:	00094317          	auipc	t1,0x94
    e8841024:	a7430313          	addi	t1,t1,-1420 # e88d4a94 <TOOM_MUL_CUTOFF>
    e8841028:	00032303          	lw	t1,0(t1)
  neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;
    e884102c:	0085a903          	lw	s2,8(a1)
  if (MIN (a->used, b->used) >= TOOM_MUL_CUTOFF) {
    e8841030:	0267c363          	blt	a5,t1,e8841056 <mp_mul+0x56>
    res = mp_toom_mul(a, b, c);
    e8841034:	13d000ef          	jal	ra,e8841970 <mp_toom_mul>
#else
      res = MP_VAL;
#endif

  }
  c->sign = (c->used > 0) ? neg : MP_ZPOS;
    e8841038:	4018                	lw	a4,0(s0)
    e884103a:	4781                	li	a5,0
    e884103c:	00e05663          	blez	a4,e8841048 <mp_mul+0x48>
  neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG;
    e8841040:	412484b3          	sub	s1,s1,s2
    e8841044:	009037b3          	snez	a5,s1
  c->sign = (c->used > 0) ? neg : MP_ZPOS;
    e8841048:	c41c                	sw	a5,8(s0)
  return res;
}
    e884104a:	60e2                	ld	ra,24(sp)
    e884104c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8841050:	6942                	ld	s2,16(sp)
    e8841052:	6105                	addi	sp,sp,32
    e8841054:	8082                	ret
  if (MIN (a->used, b->used) >= KARATSUBA_MUL_CUTOFF) {
    e8841056:	00094317          	auipc	t1,0x94
    e884105a:	a3630313          	addi	t1,t1,-1482 # e88d4a8c <KARATSUBA_MUL_CUTOFF>
    e884105e:	00032303          	lw	t1,0(t1)
    e8841062:	0067c563          	blt	a5,t1,e884106c <mp_mul+0x6c>
    res = mp_karatsuba_mul (a, b, c);
    e8841066:	905ff0ef          	jal	ra,e884096a <mp_karatsuba_mul>
    e884106a:	b7f9                	j	e8841038 <mp_mul+0x38>
    int     digs = a->used + b->used + 1;
    e884106c:	2685                	addiw	a3,a3,1
    e884106e:	011686bb          	addw	a3,a3,a7
    if ((digs < MP_WARRAY) &&
    e8841072:	1ff00893          	li	a7,511
    e8841076:	872a                	mv	a4,a0
    e8841078:	882e                	mv	a6,a1
    e884107a:	00d8c963          	blt	a7,a3,e884108c <mp_mul+0x8c>
    e884107e:	10000893          	li	a7,256
    e8841082:	00f8c563          	blt	a7,a5,e884108c <mp_mul+0x8c>
      res = fast_s_mp_mul_digs (a, b, c, digs);
    e8841086:	9dcfe0ef          	jal	ra,e883f262 <fast_s_mp_mul_digs>
    e884108a:	b77d                	j	e8841038 <mp_mul+0x38>
      res = s_mp_mul (a, b, c); /* uses s_mp_mul_digs */
    e884108c:	8622                	mv	a2,s0
    e884108e:	85c2                	mv	a1,a6
    e8841090:	853a                	mv	a0,a4
    e8841092:	5ce010ef          	jal	ra,e8842660 <s_mp_mul_digs>
    e8841096:	b74d                	j	e8841038 <mp_mul+0x38>

00000000e8841098 <mp_mul_2>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* b = a*2 */
int mp_mul_2(mp_int * a, mp_int * b)
{
    e8841098:	1101                	addi	sp,sp,-32
    e884109a:	e422                	sd	s0,8(sp)
    e884109c:	e826                	sd	s1,16(sp)
    e884109e:	842e                	mv	s0,a1
    e88410a0:	ec06                	sd	ra,24(sp)
  int     x, res, oldused;

  /* grow to accomodate result */
  if (b->alloc < a->used + 1) {
    e88410a2:	410c                	lw	a1,0(a0)
    e88410a4:	405c                	lw	a5,4(s0)
{
    e88410a6:	84aa                	mv	s1,a0
  if (b->alloc < a->used + 1) {
    e88410a8:	2585                	addiw	a1,a1,1
    e88410aa:	04b7c563          	blt	a5,a1,e88410f4 <mp_mul_2+0x5c>
      return res;
    }
  }

  oldused = b->used;
  b->used = a->used;
    e88410ae:	409c                	lw	a5,0(s1)
  oldused = b->used;
    e88410b0:	4008                	lw	a0,0(s0)

    /* alias for source */
    tmpa = a->dp;
    
    /* alias for dest */
    tmpb = b->dp;
    e88410b2:	6810                	ld	a2,16(s0)
  b->used = a->used;
    e88410b4:	c01c                	sw	a5,0(s0)
    tmpa = a->dp;
    e88410b6:	0104b883          	ld	a7,16(s1)

    /* carry */
    r = 0;
    for (x = 0; x < a->used; x++) {
    e88410ba:	4781                	li	a5,0
    r = 0;
    e88410bc:	4681                	li	a3,0
    for (x = 0; x < a->used; x++) {
    e88410be:	0004a803          	lw	a6,0(s1)
    e88410c2:	0007859b          	sext.w	a1,a5
    e88410c6:	06f6170b          	addsl	a4,a2,a5,3
    e88410ca:	0305ce63          	blt	a1,a6,e8841106 <mp_mul_2+0x6e>
       */
      r = rr;
    }

    /* new leading digit? */
    if (r != 0) {
    e88410ce:	c691                	beqz	a3,e88410da <mp_mul_2+0x42>
      /* add a MSB which is always 1 at this point */
      *tmpb = 1;
    e88410d0:	4785                	li	a5,1
    e88410d2:	e31c                	sd	a5,0(a4)
      ++(b->used);
    e88410d4:	401c                	lw	a5,0(s0)
    e88410d6:	2785                	addiw	a5,a5,1
    e88410d8:	c01c                	sw	a5,0(s0)
    }

    /* now zero any excess digits on the destination 
     * that we didn't write to 
     */
    tmpb = b->dp + b->used;
    e88410da:	4014                	lw	a3,0(s0)
    e88410dc:	6818                	ld	a4,16(s0)
    for (x = b->used; x < oldused; x++) {
    e88410de:	4781                	li	a5,0
    tmpb = b->dp + b->used;
    e88410e0:	06d7170b          	addsl	a4,a4,a3,3
    for (x = b->used; x < oldused; x++) {
    e88410e4:	00f6863b          	addw	a2,a3,a5
    e88410e8:	02a64c63          	blt	a2,a0,e8841120 <mp_mul_2+0x88>
      *tmpb++ = 0;
    }
  }
  b->sign = a->sign;
    e88410ec:	449c                	lw	a5,8(s1)
  return MP_OKAY;
    e88410ee:	4501                	li	a0,0
  b->sign = a->sign;
    e88410f0:	c41c                	sw	a5,8(s0)
  return MP_OKAY;
    e88410f2:	a029                	j	e88410fc <mp_mul_2+0x64>
    if ((res = mp_grow (b, a->used + 1)) != MP_OKAY) {
    e88410f4:	8522                	mv	a0,s0
    e88410f6:	c60ff0ef          	jal	ra,e8840556 <mp_grow>
    e88410fa:	d955                	beqz	a0,e88410ae <mp_mul_2+0x16>
}
    e88410fc:	60e2                	ld	ra,24(sp)
    e88410fe:	6422                	ld	s0,8(sp)
    e8841100:	64c2                	ld	s1,16(sp)
    e8841102:	6105                	addi	sp,sp,32
    e8841104:	8082                	ret
      rr = *tmpa >> ((mp_digit)(DIGIT_BIT - 1));
    e8841106:	66f8c58b          	lrd	a1,a7,a5,3
      *tmpb++ = ((*tmpa++ << ((mp_digit)1)) | r) & MP_MASK;
    e884110a:	00159713          	slli	a4,a1,0x1
    e884110e:	8f55                	or	a4,a4,a3
    e8841110:	6c07370b          	extu	a4,a4,27,0
    e8841114:	66f6570b          	srd	a4,a2,a5,3
      rr = *tmpa >> ((mp_digit)(DIGIT_BIT - 1));
    e8841118:	01b5d693          	srli	a3,a1,0x1b
    e884111c:	0785                	addi	a5,a5,1
    e884111e:	b745                	j	e88410be <mp_mul_2+0x26>
      *tmpb++ = 0;
    e8841120:	66f7500b          	srd	zero,a4,a5,3
    for (x = b->used; x < oldused; x++) {
    e8841124:	0785                	addi	a5,a5,1
    e8841126:	bf7d                	j	e88410e4 <mp_mul_2+0x4c>

00000000e8841128 <mp_mul_2d>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* shift left by a certain bit count */
int mp_mul_2d (mp_int * a, int b, mp_int * c)
{
    e8841128:	1101                	addi	sp,sp,-32
    e884112a:	f891540b          	sdd	s0,s1,(sp),0,4
    e884112e:	ec06                	sd	ra,24(sp)
    e8841130:	e84a                	sd	s2,16(sp)
    e8841132:	84ae                	mv	s1,a1
    e8841134:	8432                	mv	s0,a2
  mp_digit d;
  int      res;

  /* copy */
  if (a != c) {
    e8841136:	04a61163          	bne	a2,a0,e8841178 <mp_mul_2d+0x50>
     if ((res = mp_copy (a, c)) != MP_OKAY) {
       return res;
     }
  }

  if (c->alloc < (int)(c->used + b/DIGIT_BIT + 1)) {
    e884113a:	45f1                	li	a1,28
    e884113c:	02b4c93b          	divw	s2,s1,a1
    e8841140:	401c                	lw	a5,0(s0)
    e8841142:	0019059b          	addiw	a1,s2,1
    e8841146:	9dbd                	addw	a1,a1,a5
    e8841148:	405c                	lw	a5,4(s0)
    e884114a:	00b7d663          	bge	a5,a1,e8841156 <mp_mul_2d+0x2e>
     if ((res = mp_grow (c, c->used + b / DIGIT_BIT + 1)) != MP_OKAY) {
    e884114e:	8522                	mv	a0,s0
    e8841150:	c06ff0ef          	jal	ra,e8840556 <mp_grow>
    e8841154:	e515                	bnez	a0,e8841180 <mp_mul_2d+0x58>
       return res;
     }
  }

  /* shift by as many digits in the bit count */
  if (b >= (int)DIGIT_BIT) {
    e8841156:	47ed                	li	a5,27
    e8841158:	0097d763          	bge	a5,s1,e8841166 <mp_mul_2d+0x3e>
    if ((res = mp_lshd (c, b / DIGIT_BIT)) != MP_OKAY) {
    e884115c:	85ca                	mv	a1,s2
    e884115e:	8522                	mv	a0,s0
    e8841160:	b63ff0ef          	jal	ra,e8840cc2 <mp_lshd>
    e8841164:	ed11                	bnez	a0,e8841180 <mp_mul_2d+0x58>
      return res;
    }
  }

  /* shift any bit count < DIGIT_BIT */
  d = (mp_digit) (b % DIGIT_BIT);
    e8841166:	45f1                	li	a1,28
    e8841168:	02b4e5bb          	remw	a1,s1,a1
  if (d != 0) {
    e884116c:	e185                	bnez	a1,e884118c <mp_mul_2d+0x64>
    /* set final carry */
    if (r != 0) {
       c->dp[(c->used)++] = r;
    }
  }
  mp_clamp (c);
    e884116e:	8522                	mv	a0,s0
    e8841170:	e3efe0ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e8841174:	4501                	li	a0,0
    e8841176:	a029                	j	e8841180 <mp_mul_2d+0x58>
     if ((res = mp_copy (a, c)) != MP_OKAY) {
    e8841178:	85b2                	mv	a1,a2
    e884117a:	f56fe0ef          	jal	ra,e883f8d0 <mp_copy>
    e884117e:	dd55                	beqz	a0,e884113a <mp_mul_2d+0x12>
}
    e8841180:	60e2                	ld	ra,24(sp)
    e8841182:	f891440b          	ldd	s0,s1,(sp),0,4
    e8841186:	6942                	ld	s2,16(sp)
    e8841188:	6105                	addi	sp,sp,32
    e884118a:	8082                	ret
    shift = DIGIT_BIT - d;
    e884118c:	577d                	li	a4,-1
    tmpc = c->dp;
    e884118e:	01043883          	ld	a7,16(s0)
    shift = DIGIT_BIT - d;
    e8841192:	4871                	li	a6,28
    e8841194:	00b71733          	sll	a4,a4,a1
    e8841198:	40b80833          	sub	a6,a6,a1
    for (x = 0; x < c->used; x++) {
    e884119c:	fff74713          	not	a4,a4
    e88411a0:	4781                	li	a5,0
    r    = 0;
    e88411a2:	4601                	li	a2,0
    for (x = 0; x < c->used; x++) {
    e88411a4:	4014                	lw	a3,0(s0)
    e88411a6:	0007851b          	sext.w	a0,a5
    e88411aa:	00d54a63          	blt	a0,a3,e88411be <mp_mul_2d+0x96>
    if (r != 0) {
    e88411ae:	d261                	beqz	a2,e884116e <mp_mul_2d+0x46>
       c->dp[(c->used)++] = r;
    e88411b0:	681c                	ld	a5,16(s0)
    e88411b2:	0016871b          	addiw	a4,a3,1
    e88411b6:	c018                	sw	a4,0(s0)
    e88411b8:	66d7d60b          	srd	a2,a5,a3,3
    e88411bc:	bf4d                	j	e884116e <mp_mul_2d+0x46>
      rr = (*tmpc >> shift) & mask;
    e88411be:	66f8c50b          	lrd	a0,a7,a5,3
      *tmpc = ((*tmpc << d) | r) & MP_MASK;
    e88411c2:	00b516b3          	sll	a3,a0,a1
    e88411c6:	8ed1                	or	a3,a3,a2
    e88411c8:	6c06b68b          	extu	a3,a3,27,0
    e88411cc:	66f8d68b          	srd	a3,a7,a5,3
      rr = (*tmpc >> shift) & mask;
    e88411d0:	010556b3          	srl	a3,a0,a6
    e88411d4:	0785                	addi	a5,a5,1
    e88411d6:	00e6f633          	and	a2,a3,a4
    e88411da:	b7e9                	j	e88411a4 <mp_mul_2d+0x7c>

00000000e88411dc <mp_mul_d>:
 */

/* multiply by a digit */
int
mp_mul_d (mp_int * a, mp_digit b, mp_int * c)
{
    e88411dc:	7179                	addi	sp,sp,-48
    e88411de:	ec22                	sd	s0,24(sp)
    e88411e0:	f026                	sd	s1,32(sp)
    e88411e2:	f406                	sd	ra,40(sp)
    e88411e4:	84ae                	mv	s1,a1
  mp_digit u, *tmpa, *tmpc;
  mp_word  r;
  int      ix, res, olduse;

  /* make sure c is big enough to hold a*b */
  if (c->alloc < a->used + 1) {
    e88411e6:	410c                	lw	a1,0(a0)
    e88411e8:	425c                	lw	a5,4(a2)
{
    e88411ea:	842a                	mv	s0,a0
  if (c->alloc < a->used + 1) {
    e88411ec:	2585                	addiw	a1,a1,1
    e88411ee:	04b7c263          	blt	a5,a1,e8841232 <mp_mul_d+0x56>

  /* get the original destinations used count */
  olduse = c->used;

  /* set the sign */
  c->sign = a->sign;
    e88411f2:	441c                	lw	a5,8(s0)
  olduse = c->used;
    e88411f4:	4208                	lw	a0,0(a2)

  /* alias for a->dp [source] */
  tmpa = a->dp;

  /* alias for c->dp [dest] */
  tmpc = c->dp;
    e88411f6:	6a0c                	ld	a1,16(a2)
  c->sign = a->sign;
    e88411f8:	c61c                	sw	a5,8(a2)
  tmpa = a->dp;
    e88411fa:	01043e03          	ld	t3,16(s0)

  /* zero carry */
  u = 0;

  /* compute columns */
  for (ix = 0; ix < a->used; ix++) {
    e88411fe:	4701                	li	a4,0
  u = 0;
    e8841200:	4781                	li	a5,0
  for (ix = 0; ix < a->used; ix++) {
    e8841202:	00042303          	lw	t1,0(s0)
    e8841206:	0007089b          	sext.w	a7,a4
    e884120a:	00858693          	addi	a3,a1,8
    e884120e:	0017081b          	addiw	a6,a4,1
    e8841212:	0268cb63          	blt	a7,t1,e8841248 <mp_mul_d+0x6c>
    /* send carry into next iteration */
    u       = (mp_digit) (r >> ((mp_word) DIGIT_BIT));
  }

  /* store final carry [if any] and increment ix offset  */
  *tmpc++ = u;
    e8841216:	e19c                	sd	a5,0(a1)
  ++ix;

  /* now zero digits above the top */
  while (ix++ < olduse) {
    e8841218:	4781                	li	a5,0
    e884121a:	0107873b          	addw	a4,a5,a6
    e884121e:	04a74163          	blt	a4,a0,e8841260 <mp_mul_d+0x84>
     *tmpc++ = 0;
  }

  /* set used count */
  c->used = a->used + 1;
    e8841222:	401c                	lw	a5,0(s0)
  mp_clamp(c);
    e8841224:	8532                	mv	a0,a2
  c->used = a->used + 1;
    e8841226:	2785                	addiw	a5,a5,1
    e8841228:	c21c                	sw	a5,0(a2)
  mp_clamp(c);
    e884122a:	d84fe0ef          	jal	ra,e883f7ae <mp_clamp>

  return MP_OKAY;
    e884122e:	4501                	li	a0,0
    e8841230:	a039                	j	e884123e <mp_mul_d+0x62>
    if ((res = mp_grow (c, a->used + 1)) != MP_OKAY) {
    e8841232:	8532                	mv	a0,a2
    e8841234:	e432                	sd	a2,8(sp)
    e8841236:	b20ff0ef          	jal	ra,e8840556 <mp_grow>
    e884123a:	6622                	ld	a2,8(sp)
    e884123c:	d95d                	beqz	a0,e88411f2 <mp_mul_d+0x16>
}
    e884123e:	70a2                	ld	ra,40(sp)
    e8841240:	6462                	ld	s0,24(sp)
    e8841242:	7482                	ld	s1,32(sp)
    e8841244:	6145                	addi	sp,sp,48
    e8841246:	8082                	ret
    r       = ((mp_word) u) + ((mp_word)*tmpa++) * ((mp_word)b);
    e8841248:	66ee458b          	lrd	a1,t3,a4,3
    e884124c:	0705                	addi	a4,a4,1
    e884124e:	20b4978b          	mula	a5,s1,a1
    *tmpc++ = (mp_digit) (r & ((mp_word) MP_MASK));
    e8841252:	6c07b58b          	extu	a1,a5,27,0
    e8841256:	feb6bc23          	sd	a1,-8(a3)
    u       = (mp_digit) (r >> ((mp_word) DIGIT_BIT));
    e884125a:	83f1                	srli	a5,a5,0x1c
    e884125c:	85b6                	mv	a1,a3
    e884125e:	b755                	j	e8841202 <mp_mul_d+0x26>
     *tmpc++ = 0;
    e8841260:	66f6d00b          	srd	zero,a3,a5,3
    e8841264:	0785                	addi	a5,a5,1
    e8841266:	bf55                	j	e884121a <mp_mul_d+0x3e>

00000000e8841268 <mp_mulmod>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* d = a * b (mod c) */
int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d)
{
    e8841268:	711d                	addi	sp,sp,-96
    e884126a:	fc4e                	sd	s3,56(sp)
    e884126c:	89aa                	mv	s3,a0
  int     res;
  mp_int  t;

  if ((res = mp_init (&t)) != MP_OKAY) {
    e884126e:	0828                	addi	a0,sp,24
{
    e8841270:	e8a2                	sd	s0,80(sp)
    e8841272:	e4a6                	sd	s1,72(sp)
    e8841274:	e0ca                	sd	s2,64(sp)
    e8841276:	ec86                	sd	ra,88(sp)
    e8841278:	e42e                	sd	a1,8(sp)
    e884127a:	84b2                	mv	s1,a2
    e884127c:	8936                	mv	s2,a3
  if ((res = mp_init (&t)) != MP_OKAY) {
    e884127e:	b2eff0ef          	jal	ra,e88405ac <mp_init>
    e8841282:	842a                	mv	s0,a0
    e8841284:	e919                	bnez	a0,e884129a <mp_mulmod+0x32>
    return res;
  }

  if ((res = mp_mul (a, b, &t)) != MP_OKAY) {
    e8841286:	65a2                	ld	a1,8(sp)
    e8841288:	0830                	addi	a2,sp,24
    e884128a:	854e                	mv	a0,s3
    e884128c:	d75ff0ef          	jal	ra,e8841000 <mp_mul>
    e8841290:	842a                	mv	s0,a0
    e8841292:	cd01                	beqz	a0,e88412aa <mp_mulmod+0x42>
    mp_clear (&t);
    return res;
  }
  res = mp_mod (&t, c, d);
  mp_clear (&t);
    e8841294:	0828                	addi	a0,sp,24
    e8841296:	d3afe0ef          	jal	ra,e883f7d0 <mp_clear>
  return res;
}
    e884129a:	8522                	mv	a0,s0
    e884129c:	60e6                	ld	ra,88(sp)
    e884129e:	6446                	ld	s0,80(sp)
    e88412a0:	64a6                	ld	s1,72(sp)
    e88412a2:	6906                	ld	s2,64(sp)
    e88412a4:	79e2                	ld	s3,56(sp)
    e88412a6:	6125                	addi	sp,sp,96
    e88412a8:	8082                	ret
  res = mp_mod (&t, c, d);
    e88412aa:	864a                	mv	a2,s2
    e88412ac:	85a6                	mv	a1,s1
    e88412ae:	0828                	addi	a0,sp,24
    e88412b0:	a87ff0ef          	jal	ra,e8840d36 <mp_mod>
    e88412b4:	842a                	mv	s0,a0
    e88412b6:	bff9                	j	e8841294 <mp_mulmod+0x2c>

00000000e88412b8 <mp_read_unsigned_bin>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* reads a unsigned char array, assumes the msb is stored first [big endian] */
int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c)
{
    e88412b8:	7179                	addi	sp,sp,-48
    e88412ba:	e422                	sd	s0,8(sp)
    e88412bc:	ec4a                	sd	s2,24(sp)
    e88412be:	f04e                	sd	s3,32(sp)
    e88412c0:	f406                	sd	ra,40(sp)
    e88412c2:	e826                	sd	s1,16(sp)
  int     res;

  /* make sure there are at least two digits */
  if (a->alloc < 2) {
    e88412c4:	4158                	lw	a4,4(a0)
    e88412c6:	4785                	li	a5,1
{
    e88412c8:	842a                	mv	s0,a0
    e88412ca:	89ae                	mv	s3,a1
    e88412cc:	8932                	mv	s2,a2
  if (a->alloc < 2) {
    e88412ce:	00e7df63          	bge	a5,a4,e88412ec <mp_read_unsigned_bin+0x34>
        return res;
     }
  }

  /* zero the int */
  mp_zero (a);
    e88412d2:	8522                	mv	a0,s0
    e88412d4:	62d000ef          	jal	ra,e8842100 <mp_zero>

  /* read the bytes in */
  while (c-- > 0) {
    e88412d8:	4481                	li	s1,0
    e88412da:	409907bb          	subw	a5,s2,s1
    e88412de:	02f04263          	bgtz	a5,e8841302 <mp_read_unsigned_bin+0x4a>
      a->dp[0] = (*b & MP_MASK);
      a->dp[1] |= ((*b++ >> 7U) & 1);
      a->used += 2;
#endif
  }
  mp_clamp (a);
    e88412e2:	8522                	mv	a0,s0
    e88412e4:	ccafe0ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e88412e8:	4501                	li	a0,0
    e88412ea:	a029                	j	e88412f4 <mp_read_unsigned_bin+0x3c>
     if ((res = mp_grow(a, 2)) != MP_OKAY) {
    e88412ec:	4589                	li	a1,2
    e88412ee:	a68ff0ef          	jal	ra,e8840556 <mp_grow>
    e88412f2:	d165                	beqz	a0,e88412d2 <mp_read_unsigned_bin+0x1a>
}
    e88412f4:	70a2                	ld	ra,40(sp)
    e88412f6:	6422                	ld	s0,8(sp)
    e88412f8:	64c2                	ld	s1,16(sp)
    e88412fa:	6962                	ld	s2,24(sp)
    e88412fc:	7982                	ld	s3,32(sp)
    e88412fe:	6145                	addi	sp,sp,48
    e8841300:	8082                	ret
    if ((res = mp_mul_2d (a, 8, a)) != MP_OKAY) {
    e8841302:	8622                	mv	a2,s0
    e8841304:	45a1                	li	a1,8
    e8841306:	8522                	mv	a0,s0
    e8841308:	e21ff0ef          	jal	ra,e8841128 <mp_mul_2d>
    e884130c:	f565                	bnez	a0,e88412f4 <mp_read_unsigned_bin+0x3c>
      a->dp[0] |= *b++;
    e884130e:	6818                	ld	a4,16(s0)
    e8841310:	8099c68b          	lrbu	a3,s3,s1,0
    e8841314:	0485                	addi	s1,s1,1
    e8841316:	631c                	ld	a5,0(a4)
    e8841318:	8fd5                	or	a5,a5,a3
    e884131a:	e31c                	sd	a5,0(a4)
      a->used += 1;
    e884131c:	401c                	lw	a5,0(s0)
    e884131e:	2785                	addiw	a5,a5,1
    e8841320:	c01c                	sw	a5,0(s0)
    e8841322:	bf65                	j	e88412da <mp_read_unsigned_bin+0x22>

00000000e8841324 <mp_reduce>:
/* reduces x mod m, assumes 0 < x < m**2, mu is 
 * precomputed via mp_reduce_setup.
 * From HAC pp.604 Algorithm 14.42
 */
int mp_reduce (mp_int * x, mp_int * m, mp_int * mu)
{
    e8841324:	715d                	addi	sp,sp,-80
    e8841326:	e0a2                	sd	s0,64(sp)
    e8841328:	fc26                	sd	s1,56(sp)
    e884132a:	f44e                	sd	s3,40(sp)
    e884132c:	f052                	sd	s4,32(sp)
    e884132e:	e486                	sd	ra,72(sp)
    e8841330:	f84a                	sd	s2,48(sp)
    e8841332:	84aa                	mv	s1,a0
  mp_int  q;
  int     res, um = m->used;
    e8841334:	0005a903          	lw	s2,0(a1)
{
    e8841338:	89ae                	mv	s3,a1

  /* q = x */
  if ((res = mp_init_copy (&q, x)) != MP_OKAY) {
    e884133a:	85aa                	mv	a1,a0
    e884133c:	0028                	addi	a0,sp,8
{
    e884133e:	8a32                	mv	s4,a2
  if ((res = mp_init_copy (&q, x)) != MP_OKAY) {
    e8841340:	aaaff0ef          	jal	ra,e88405ea <mp_init_copy>
    e8841344:	842a                	mv	s0,a0
    e8841346:	e141                	bnez	a0,e88413c6 <mp_reduce+0xa2>
    return res;
  }

  /* q1 = x / b**(k-1)  */
  mp_rshd (&q, um - 1);         
    e8841348:	fff9059b          	addiw	a1,s2,-1
    e884134c:	0028                	addi	a0,sp,8
    e884134e:	34c000ef          	jal	ra,e884169a <mp_rshd>

  /* according to HAC this optimization is ok */
  if (((unsigned long) um) > (((mp_digit)1) << (DIGIT_BIT - 1))) {
    e8841352:	080007b7          	lui	a5,0x8000
    e8841356:	0927f163          	bgeu	a5,s2,e88413d8 <mp_reduce+0xb4>
    if ((res = mp_mul (&q, mu, &q)) != MP_OKAY) {
    e884135a:	0030                	addi	a2,sp,8
    e884135c:	85d2                	mv	a1,s4
    e884135e:	8532                	mv	a0,a2
    e8841360:	ca1ff0ef          	jal	ra,e8841000 <mp_mul>
    e8841364:	842a                	mv	s0,a0
    e8841366:	ed29                	bnez	a0,e88413c0 <mp_reduce+0x9c>
    }
#endif
  }

  /* q3 = q2 / b**(k+1) */
  mp_rshd (&q, um + 1);         
    e8841368:	00190a1b          	addiw	s4,s2,1
    e884136c:	85d2                	mv	a1,s4
    e884136e:	0028                	addi	a0,sp,8
    e8841370:	32a000ef          	jal	ra,e884169a <mp_rshd>

  /* x = x mod b**(k+1), quick (no division) */
  if ((res = mp_mod_2d (x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) {
    e8841374:	45f1                	li	a1,28
    e8841376:	034585bb          	mulw	a1,a1,s4
    e884137a:	8626                	mv	a2,s1
    e884137c:	8526                	mv	a0,s1
    e884137e:	a1fff0ef          	jal	ra,e8840d9c <mp_mod_2d>
    e8841382:	842a                	mv	s0,a0
    e8841384:	ed15                	bnez	a0,e88413c0 <mp_reduce+0x9c>
    goto CLEANUP;
  }

  /* q = q * m mod b**(k+1), quick (no division) */
  if ((res = s_mp_mul_digs (&q, m, &q, um + 1)) != MP_OKAY) {
    e8841386:	0030                	addi	a2,sp,8
    e8841388:	86d2                	mv	a3,s4
    e884138a:	85ce                	mv	a1,s3
    e884138c:	8532                	mv	a0,a2
    e884138e:	2d2010ef          	jal	ra,e8842660 <s_mp_mul_digs>
    e8841392:	842a                	mv	s0,a0
    e8841394:	e515                	bnez	a0,e88413c0 <mp_reduce+0x9c>
    goto CLEANUP;
  }

  /* x = x - q */
  if ((res = mp_sub (x, &q, x)) != MP_OKAY) {
    e8841396:	8626                	mv	a2,s1
    e8841398:	002c                	addi	a1,sp,8
    e884139a:	8526                	mv	a0,s1
    e884139c:	42e000ef          	jal	ra,e88417ca <mp_sub>
    e88413a0:	842a                	mv	s0,a0
    e88413a2:	ed19                	bnez	a0,e88413c0 <mp_reduce+0x9c>
    goto CLEANUP;
  }

  /* If x < 0, add b**(k+1) to it */
  if (mp_cmp_d (x, 0) == MP_LT) {
    e88413a4:	4581                	li	a1,0
    e88413a6:	8526                	mv	a0,s1
    e88413a8:	cb6fe0ef          	jal	ra,e883f85e <mp_cmp_d>
    e88413ac:	57fd                	li	a5,-1
    e88413ae:	02f50c63          	beq	a0,a5,e88413e6 <mp_reduce+0xc2>
    if ((res = mp_add (x, &q, x)) != MP_OKAY)
      goto CLEANUP;
  }

  /* Back off if it's too big */
  while (mp_cmp (x, m) != MP_LT) {
    e88413b2:	597d                	li	s2,-1
    e88413b4:	85ce                	mv	a1,s3
    e88413b6:	8526                	mv	a0,s1
    e88413b8:	c80fe0ef          	jal	ra,e883f838 <mp_cmp>
    e88413bc:	05251663          	bne	a0,s2,e8841408 <mp_reduce+0xe4>
      goto CLEANUP;
    }
  }
  
CLEANUP:
  mp_clear (&q);
    e88413c0:	0028                	addi	a0,sp,8
    e88413c2:	c0efe0ef          	jal	ra,e883f7d0 <mp_clear>

  return res;
}
    e88413c6:	8522                	mv	a0,s0
    e88413c8:	60a6                	ld	ra,72(sp)
    e88413ca:	6406                	ld	s0,64(sp)
    e88413cc:	74e2                	ld	s1,56(sp)
    e88413ce:	7942                	ld	s2,48(sp)
    e88413d0:	79a2                	ld	s3,40(sp)
    e88413d2:	7a02                	ld	s4,32(sp)
    e88413d4:	6161                	addi	sp,sp,80
    e88413d6:	8082                	ret
    if ((res = s_mp_mul_high_digs (&q, mu, &q, um)) != MP_OKAY) {
    e88413d8:	0030                	addi	a2,sp,8
    e88413da:	86ca                	mv	a3,s2
    e88413dc:	85d2                	mv	a1,s4
    e88413de:	8532                	mv	a0,a2
    e88413e0:	364010ef          	jal	ra,e8842744 <s_mp_mul_high_digs>
    e88413e4:	b741                	j	e8841364 <mp_reduce+0x40>
    mp_set (&q, 1);
    e88413e6:	4585                	li	a1,1
    e88413e8:	0028                	addi	a0,sp,8
    e88413ea:	300000ef          	jal	ra,e88416ea <mp_set>
    if ((res = mp_lshd (&q, um + 1)) != MP_OKAY)
    e88413ee:	85d2                	mv	a1,s4
    e88413f0:	0028                	addi	a0,sp,8
    e88413f2:	8d1ff0ef          	jal	ra,e8840cc2 <mp_lshd>
    e88413f6:	e519                	bnez	a0,e8841404 <mp_reduce+0xe0>
    if ((res = mp_add (x, &q, x)) != MP_OKAY)
    e88413f8:	8626                	mv	a2,s1
    e88413fa:	002c                	addi	a1,sp,8
    e88413fc:	8526                	mv	a0,s1
    e88413fe:	a4cfe0ef          	jal	ra,e883f64a <mp_add>
    e8841402:	d945                	beqz	a0,e88413b2 <mp_reduce+0x8e>
    e8841404:	842a                	mv	s0,a0
    e8841406:	bf6d                	j	e88413c0 <mp_reduce+0x9c>
    if ((res = s_mp_sub (x, m, x)) != MP_OKAY) {
    e8841408:	8626                	mv	a2,s1
    e884140a:	85ce                	mv	a1,s3
    e884140c:	8526                	mv	a0,s1
    e884140e:	502010ef          	jal	ra,e8842910 <s_mp_sub>
    e8841412:	d14d                	beqz	a0,e88413b4 <mp_reduce+0x90>
    e8841414:	bfc5                	j	e8841404 <mp_reduce+0xe0>

00000000e8841416 <mp_reduce_2k>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* reduces a modulo n where n is of the form 2**p - d */
int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d)
{
    e8841416:	711d                	addi	sp,sp,-96
    e8841418:	e4a6                	sd	s1,72(sp)
    e884141a:	84aa                	mv	s1,a0
   mp_int q;
   int    p, res;
   
   if ((res = mp_init(&q)) != MP_OKAY) {
    e884141c:	0028                	addi	a0,sp,8
{
    e884141e:	e8a2                	sd	s0,80(sp)
    e8841420:	e0ca                	sd	s2,64(sp)
    e8841422:	fc4e                	sd	s3,56(sp)
    e8841424:	ec86                	sd	ra,88(sp)
    e8841426:	f852                	sd	s4,48(sp)
    e8841428:	f456                	sd	s5,40(sp)
    e884142a:	f05a                	sd	s6,32(sp)
    e884142c:	892e                	mv	s2,a1
    e884142e:	89b2                	mv	s3,a2
   if ((res = mp_init(&q)) != MP_OKAY) {
    e8841430:	97cff0ef          	jal	ra,e88405ac <mp_init>
    e8841434:	842a                	mv	s0,a0
    e8841436:	e91d                	bnez	a0,e884146c <mp_reduce_2k+0x56>
      return res;
   }
   
   p = mp_count_bits(n);    
    e8841438:	854a                	mv	a0,s2
    e884143a:	d04fe0ef          	jal	ra,e883f93e <mp_count_bits>
    e884143e:	8a2a                	mv	s4,a0
   /* q = a/2**p, a = a mod 2**p */
   if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) {
      goto ERR;
   }
   
   if (d != 1) {
    e8841440:	4a85                	li	s5,1
   /* a = a + q */
   if ((res = s_mp_add(a, &q, a)) != MP_OKAY) {
      goto ERR;
   }
   
   if (mp_cmp_mag(a, n) != MP_LT) {
    e8841442:	5b7d                	li	s6,-1
   if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) {
    e8841444:	86a6                	mv	a3,s1
    e8841446:	0030                	addi	a2,sp,8
    e8841448:	85d2                	mv	a1,s4
    e884144a:	8526                	mv	a0,s1
    e884144c:	8d3fe0ef          	jal	ra,e883fd1e <mp_div_2d>
    e8841450:	842a                	mv	s0,a0
    e8841452:	e911                	bnez	a0,e8841466 <mp_reduce_2k+0x50>
   if (d != 1) {
    e8841454:	03599763          	bne	s3,s5,e8841482 <mp_reduce_2k+0x6c>
   if ((res = s_mp_add(a, &q, a)) != MP_OKAY) {
    e8841458:	8626                	mv	a2,s1
    e884145a:	002c                	addi	a1,sp,8
    e884145c:	8526                	mv	a0,s1
    e884145e:	4e3000ef          	jal	ra,e8842140 <s_mp_add>
    e8841462:	842a                	mv	s0,a0
    e8841464:	c51d                	beqz	a0,e8841492 <mp_reduce_2k+0x7c>
      s_mp_sub(a, n, a);
      goto top;
   }
   
ERR:
   mp_clear(&q);
    e8841466:	0028                	addi	a0,sp,8
    e8841468:	b68fe0ef          	jal	ra,e883f7d0 <mp_clear>
   return res;
}
    e884146c:	8522                	mv	a0,s0
    e884146e:	60e6                	ld	ra,88(sp)
    e8841470:	6446                	ld	s0,80(sp)
    e8841472:	64a6                	ld	s1,72(sp)
    e8841474:	6906                	ld	s2,64(sp)
    e8841476:	79e2                	ld	s3,56(sp)
    e8841478:	7a42                	ld	s4,48(sp)
    e884147a:	7aa2                	ld	s5,40(sp)
    e884147c:	7b02                	ld	s6,32(sp)
    e884147e:	6125                	addi	sp,sp,96
    e8841480:	8082                	ret
      if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) { 
    e8841482:	0030                	addi	a2,sp,8
    e8841484:	85ce                	mv	a1,s3
    e8841486:	8532                	mv	a0,a2
    e8841488:	d55ff0ef          	jal	ra,e88411dc <mp_mul_d>
    e884148c:	842a                	mv	s0,a0
    e884148e:	d569                	beqz	a0,e8841458 <mp_reduce_2k+0x42>
    e8841490:	bfd9                	j	e8841466 <mp_reduce_2k+0x50>
   if (mp_cmp_mag(a, n) != MP_LT) {
    e8841492:	85ca                	mv	a1,s2
    e8841494:	8526                	mv	a0,s1
    e8841496:	beefe0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e884149a:	fd6506e3          	beq	a0,s6,e8841466 <mp_reduce_2k+0x50>
      s_mp_sub(a, n, a);
    e884149e:	8626                	mv	a2,s1
    e88414a0:	85ca                	mv	a1,s2
    e88414a2:	8526                	mv	a0,s1
    e88414a4:	46c010ef          	jal	ra,e8842910 <s_mp_sub>
      goto top;
    e88414a8:	bf71                	j	e8841444 <mp_reduce_2k+0x2e>

00000000e88414aa <mp_reduce_2k_l>:
/* reduces a modulo n where n is of the form 2**p - d 
   This differs from reduce_2k since "d" can be larger
   than a single digit.
*/
int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d)
{
    e88414aa:	711d                	addi	sp,sp,-96
    e88414ac:	e4a6                	sd	s1,72(sp)
    e88414ae:	84aa                	mv	s1,a0
   mp_int q;
   int    p, res;
   
   if ((res = mp_init(&q)) != MP_OKAY) {
    e88414b0:	0028                	addi	a0,sp,8
{
    e88414b2:	e8a2                	sd	s0,80(sp)
    e88414b4:	e0ca                	sd	s2,64(sp)
    e88414b6:	f852                	sd	s4,48(sp)
    e88414b8:	ec86                	sd	ra,88(sp)
    e88414ba:	fc4e                	sd	s3,56(sp)
    e88414bc:	f456                	sd	s5,40(sp)
    e88414be:	892e                	mv	s2,a1
    e88414c0:	8a32                	mv	s4,a2
   if ((res = mp_init(&q)) != MP_OKAY) {
    e88414c2:	8eaff0ef          	jal	ra,e88405ac <mp_init>
    e88414c6:	842a                	mv	s0,a0
    e88414c8:	e939                	bnez	a0,e884151e <mp_reduce_2k_l+0x74>
      return res;
   }
   
   p = mp_count_bits(n);    
    e88414ca:	854a                	mv	a0,s2
    e88414cc:	c72fe0ef          	jal	ra,e883f93e <mp_count_bits>
    e88414d0:	89aa                	mv	s3,a0
   /* a = a + q */
   if ((res = s_mp_add(a, &q, a)) != MP_OKAY) {
      goto ERR;
   }
   
   if (mp_cmp_mag(a, n) != MP_LT) {
    e88414d2:	5afd                	li	s5,-1
   if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) {
    e88414d4:	86a6                	mv	a3,s1
    e88414d6:	0030                	addi	a2,sp,8
    e88414d8:	85ce                	mv	a1,s3
    e88414da:	8526                	mv	a0,s1
    e88414dc:	843fe0ef          	jal	ra,e883fd1e <mp_div_2d>
    e88414e0:	842a                	mv	s0,a0
    e88414e2:	e91d                	bnez	a0,e8841518 <mp_reduce_2k_l+0x6e>
   if ((res = mp_mul(&q, d, &q)) != MP_OKAY) { 
    e88414e4:	0030                	addi	a2,sp,8
    e88414e6:	85d2                	mv	a1,s4
    e88414e8:	8532                	mv	a0,a2
    e88414ea:	b17ff0ef          	jal	ra,e8841000 <mp_mul>
    e88414ee:	842a                	mv	s0,a0
    e88414f0:	e505                	bnez	a0,e8841518 <mp_reduce_2k_l+0x6e>
   if ((res = s_mp_add(a, &q, a)) != MP_OKAY) {
    e88414f2:	8626                	mv	a2,s1
    e88414f4:	002c                	addi	a1,sp,8
    e88414f6:	8526                	mv	a0,s1
    e88414f8:	449000ef          	jal	ra,e8842140 <s_mp_add>
    e88414fc:	842a                	mv	s0,a0
    e88414fe:	ed09                	bnez	a0,e8841518 <mp_reduce_2k_l+0x6e>
   if (mp_cmp_mag(a, n) != MP_LT) {
    e8841500:	85ca                	mv	a1,s2
    e8841502:	8526                	mv	a0,s1
    e8841504:	b80fe0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e8841508:	01550863          	beq	a0,s5,e8841518 <mp_reduce_2k_l+0x6e>
      s_mp_sub(a, n, a);
    e884150c:	8626                	mv	a2,s1
    e884150e:	85ca                	mv	a1,s2
    e8841510:	8526                	mv	a0,s1
    e8841512:	3fe010ef          	jal	ra,e8842910 <s_mp_sub>
      goto top;
    e8841516:	bf7d                	j	e88414d4 <mp_reduce_2k_l+0x2a>
   }
   
ERR:
   mp_clear(&q);
    e8841518:	0028                	addi	a0,sp,8
    e884151a:	ab6fe0ef          	jal	ra,e883f7d0 <mp_clear>
   return res;
}
    e884151e:	8522                	mv	a0,s0
    e8841520:	60e6                	ld	ra,88(sp)
    e8841522:	6446                	ld	s0,80(sp)
    e8841524:	64a6                	ld	s1,72(sp)
    e8841526:	6906                	ld	s2,64(sp)
    e8841528:	79e2                	ld	s3,56(sp)
    e884152a:	7a42                	ld	s4,48(sp)
    e884152c:	7aa2                	ld	s5,40(sp)
    e884152e:	6125                	addi	sp,sp,96
    e8841530:	8082                	ret

00000000e8841532 <mp_reduce_2k_setup>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* determines the setup value */
int mp_reduce_2k_setup(mp_int *a, mp_digit *d)
{
    e8841532:	7139                	addi	sp,sp,-64
    e8841534:	fc91540b          	sdd	s0,s1,(sp),2,4
    e8841538:	84aa                	mv	s1,a0
   int res, p;
   mp_int tmp;
   
   if ((res = mp_init(&tmp)) != MP_OKAY) {
    e884153a:	0028                	addi	a0,sp,8
{
    e884153c:	f84a                	sd	s2,48(sp)
    e884153e:	fc06                	sd	ra,56(sp)
    e8841540:	892e                	mv	s2,a1
   if ((res = mp_init(&tmp)) != MP_OKAY) {
    e8841542:	86aff0ef          	jal	ra,e88405ac <mp_init>
    e8841546:	842a                	mv	s0,a0
    e8841548:	ed09                	bnez	a0,e8841562 <mp_reduce_2k_setup+0x30>
      return res;
   }
   
   p = mp_count_bits(a);
    e884154a:	8526                	mv	a0,s1
    e884154c:	bf2fe0ef          	jal	ra,e883f93e <mp_count_bits>
   if ((res = mp_2expt(&tmp, p)) != MP_OKAY) {
    e8841550:	85aa                	mv	a1,a0
    e8841552:	0028                	addi	a0,sp,8
    e8841554:	884fe0ef          	jal	ra,e883f5d8 <mp_2expt>
    e8841558:	842a                	mv	s0,a0
    e884155a:	c919                	beqz	a0,e8841570 <mp_reduce_2k_setup+0x3e>
      mp_clear(&tmp);
      return res;
   }
   
   *d = tmp.dp[0];
   mp_clear(&tmp);
    e884155c:	0028                	addi	a0,sp,8
    e884155e:	a72fe0ef          	jal	ra,e883f7d0 <mp_clear>
   return MP_OKAY;
}
    e8841562:	8522                	mv	a0,s0
    e8841564:	70e2                	ld	ra,56(sp)
    e8841566:	fc91440b          	ldd	s0,s1,(sp),2,4
    e884156a:	7942                	ld	s2,48(sp)
    e884156c:	6121                	addi	sp,sp,64
    e884156e:	8082                	ret
   if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) {
    e8841570:	0030                	addi	a2,sp,8
    e8841572:	85a6                	mv	a1,s1
    e8841574:	8532                	mv	a0,a2
    e8841576:	39a010ef          	jal	ra,e8842910 <s_mp_sub>
    e884157a:	842a                	mv	s0,a0
    e884157c:	f165                	bnez	a0,e884155c <mp_reduce_2k_setup+0x2a>
   *d = tmp.dp[0];
    e884157e:	67e2                	ld	a5,24(sp)
    e8841580:	639c                	ld	a5,0(a5)
    e8841582:	00f93023          	sd	a5,0(s2)
    e8841586:	bfd9                	j	e884155c <mp_reduce_2k_setup+0x2a>

00000000e8841588 <mp_reduce_2k_setup_l>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* determines the setup value */
int mp_reduce_2k_setup_l(mp_int *a, mp_int *d)
{
    e8841588:	7139                	addi	sp,sp,-64
    e884158a:	fc91540b          	sdd	s0,s1,(sp),2,4
    e884158e:	84aa                	mv	s1,a0
   int    res;
   mp_int tmp;
   
   if ((res = mp_init(&tmp)) != MP_OKAY) {
    e8841590:	0028                	addi	a0,sp,8
{
    e8841592:	f84a                	sd	s2,48(sp)
    e8841594:	fc06                	sd	ra,56(sp)
    e8841596:	892e                	mv	s2,a1
   if ((res = mp_init(&tmp)) != MP_OKAY) {
    e8841598:	814ff0ef          	jal	ra,e88405ac <mp_init>
    e884159c:	842a                	mv	s0,a0
    e884159e:	e11d                	bnez	a0,e88415c4 <mp_reduce_2k_setup_l+0x3c>
      return res;
   }
   
   if ((res = mp_2expt(&tmp, mp_count_bits(a))) != MP_OKAY) {
    e88415a0:	8526                	mv	a0,s1
    e88415a2:	b9cfe0ef          	jal	ra,e883f93e <mp_count_bits>
    e88415a6:	85aa                	mv	a1,a0
    e88415a8:	0028                	addi	a0,sp,8
    e88415aa:	82efe0ef          	jal	ra,e883f5d8 <mp_2expt>
    e88415ae:	842a                	mv	s0,a0
    e88415b0:	e519                	bnez	a0,e88415be <mp_reduce_2k_setup_l+0x36>
      goto ERR;
   }
   
   if ((res = s_mp_sub(&tmp, a, d)) != MP_OKAY) {
    e88415b2:	864a                	mv	a2,s2
    e88415b4:	85a6                	mv	a1,s1
    e88415b6:	0028                	addi	a0,sp,8
    e88415b8:	358010ef          	jal	ra,e8842910 <s_mp_sub>
    e88415bc:	842a                	mv	s0,a0
      goto ERR;
   }
   
ERR:
   mp_clear(&tmp);
    e88415be:	0028                	addi	a0,sp,8
    e88415c0:	a10fe0ef          	jal	ra,e883f7d0 <mp_clear>
   return res;
}
    e88415c4:	8522                	mv	a0,s0
    e88415c6:	70e2                	ld	ra,56(sp)
    e88415c8:	fc91440b          	ldd	s0,s1,(sp),2,4
    e88415cc:	7942                	ld	s2,48(sp)
    e88415ce:	6121                	addi	sp,sp,64
    e88415d0:	8082                	ret

00000000e88415d2 <mp_reduce_is_2k>:
int mp_reduce_is_2k(mp_int *a)
{
   int ix, iy, iw;
   mp_digit iz;
   
   if (a->used == 0) {
    e88415d2:	4118                	lw	a4,0(a0)
    e88415d4:	eb01                	bnez	a4,e88415e4 <mp_reduce_is_2k+0x12>
      return MP_NO;
    e88415d6:	4501                	li	a0,0
    e88415d8:	8082                	ret
    e88415da:	4501                	li	a0,0
             iz = 1;
          }
      }
   }
   return MP_YES;
}
    e88415dc:	60a2                	ld	ra,8(sp)
    e88415de:	6402                	ld	s0,0(sp)
    e88415e0:	0141                	addi	sp,sp,16
    e88415e2:	8082                	ret
   } else if (a->used > 1) {
    e88415e4:	4685                	li	a3,1
    e88415e6:	00e6c463          	blt	a3,a4,e88415ee <mp_reduce_is_2k+0x1c>
   return MP_YES;
    e88415ea:	4505                	li	a0,1
}
    e88415ec:	8082                	ret
{
    e88415ee:	1141                	addi	sp,sp,-16
    e88415f0:	e022                	sd	s0,0(sp)
    e88415f2:	e406                	sd	ra,8(sp)
    e88415f4:	842a                	mv	s0,a0
      iy = mp_count_bits(a);
    e88415f6:	b48fe0ef          	jal	ra,e883f93e <mp_count_bits>
      iz = 1;
    e88415fa:	4785                	li	a5,1
      iw = 1;
    e88415fc:	4685                	li	a3,1
      for (ix = DIGIT_BIT; ix < iy; ix++) {
    e88415fe:	4771                	li	a4,28
          if (iz > (mp_digit)MP_MASK) {
    e8841600:	100005b7          	lui	a1,0x10000
      for (ix = DIGIT_BIT; ix < iy; ix++) {
    e8841604:	00a74463          	blt	a4,a0,e884160c <mp_reduce_is_2k+0x3a>
   return MP_YES;
    e8841608:	4505                	li	a0,1
    e884160a:	bfc9                	j	e88415dc <mp_reduce_is_2k+0xa>
          if ((a->dp[iw] & iz) == 0) {
    e884160c:	6810                	ld	a2,16(s0)
    e884160e:	66d6460b          	lrd	a2,a2,a3,3
    e8841612:	8e7d                	and	a2,a2,a5
    e8841614:	d279                	beqz	a2,e88415da <mp_reduce_is_2k+0x8>
          iz <<= 1;
    e8841616:	0786                	slli	a5,a5,0x1
          if (iz > (mp_digit)MP_MASK) {
    e8841618:	00b7e463          	bltu	a5,a1,e8841620 <mp_reduce_is_2k+0x4e>
             ++iw;
    e884161c:	2685                	addiw	a3,a3,1
             iz = 1;
    e884161e:	4785                	li	a5,1
      for (ix = DIGIT_BIT; ix < iy; ix++) {
    e8841620:	2705                	addiw	a4,a4,1
    e8841622:	b7cd                	j	e8841604 <mp_reduce_is_2k+0x32>

00000000e8841624 <mp_reduce_is_2k_l>:
/* determines if reduce_2k_l can be used */
int mp_reduce_is_2k_l(mp_int *a)
{
   int ix, iy;
   
   if (a->used == 0) {
    e8841624:	411c                	lw	a5,0(a0)
    e8841626:	cf85                	beqz	a5,e884165e <mp_reduce_is_2k_l+0x3a>
      return MP_NO;
   } else if (a->used == 1) {
    e8841628:	4705                	li	a4,1
    e884162a:	02e78a63          	beq	a5,a4,e884165e <mp_reduce_is_2k_l+0x3a>
      return MP_YES;
   } else if (a->used > 1) {
    e884162e:	02f75a63          	bge	a4,a5,e8841662 <mp_reduce_is_2k_l+0x3e>
      /* if more than half of the digits are -1 we're sold */
      for (iy = ix = 0; ix < a->used; ix++) {
          if (a->dp[ix] == MP_MASK) {
    e8841632:	100006b7          	lui	a3,0x10000
    e8841636:	690c                	ld	a1,16(a0)
    e8841638:	4701                	li	a4,0
      for (iy = ix = 0; ix < a->used; ix++) {
    e884163a:	4501                	li	a0,0
          if (a->dp[ix] == MP_MASK) {
    e884163c:	16fd                	addi	a3,a3,-1
    e884163e:	66e5c60b          	lrd	a2,a1,a4,3
    e8841642:	00d61363          	bne	a2,a3,e8841648 <mp_reduce_is_2k_l+0x24>
              ++iy;
    e8841646:	2505                	addiw	a0,a0,1
      for (iy = ix = 0; ix < a->used; ix++) {
    e8841648:	0705                	addi	a4,a4,1
    e884164a:	0007061b          	sext.w	a2,a4
    e884164e:	fef648e3          	blt	a2,a5,e884163e <mp_reduce_is_2k_l+0x1a>
          }
      }
      return (iy >= (a->used/2)) ? MP_YES : MP_NO;
    e8841652:	8785                	srai	a5,a5,0x1
    e8841654:	00f527b3          	slt	a5,a0,a5
    e8841658:	0017c793          	xori	a5,a5,1
    e884165c:	2781                	sext.w	a5,a5
      
   }
   return MP_NO;
}
    e884165e:	853e                	mv	a0,a5
    e8841660:	8082                	ret
      return MP_NO;
    e8841662:	4781                	li	a5,0
    e8841664:	bfed                	j	e884165e <mp_reduce_is_2k_l+0x3a>

00000000e8841666 <mp_reduce_setup>:

/* pre-calculate the value required for Barrett reduction
 * For a given modulus "b" it calulates the value required in "a"
 */
int mp_reduce_setup (mp_int * a, mp_int * b)
{
    e8841666:	1101                	addi	sp,sp,-32
    e8841668:	e822                	sd	s0,16(sp)
    e884166a:	ec06                	sd	ra,24(sp)
  int     res;
  
  if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) {
    e884166c:	419c                	lw	a5,0(a1)
{
    e884166e:	842e                	mv	s0,a1
  if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) {
    e8841670:	03800593          	li	a1,56
    e8841674:	02f585bb          	mulw	a1,a1,a5
{
    e8841678:	e42a                	sd	a0,8(sp)
  if ((res = mp_2expt (a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) {
    e884167a:	f5ffd0ef          	jal	ra,e883f5d8 <mp_2expt>
    e884167e:	e911                	bnez	a0,e8841692 <mp_reduce_setup+0x2c>
    return res;
  }
  return mp_div (a, b, a, NULL);
    e8841680:	6622                	ld	a2,8(sp)
    e8841682:	85a2                	mv	a1,s0
}
    e8841684:	6442                	ld	s0,16(sp)
    e8841686:	60e2                	ld	ra,24(sp)
  return mp_div (a, b, a, NULL);
    e8841688:	4681                	li	a3,0
    e884168a:	8532                	mv	a0,a2
}
    e884168c:	6105                	addi	sp,sp,32
  return mp_div (a, b, a, NULL);
    e884168e:	ad4fe06f          	j	e883f962 <mp_div>
}
    e8841692:	60e2                	ld	ra,24(sp)
    e8841694:	6442                	ld	s0,16(sp)
    e8841696:	6105                	addi	sp,sp,32
    e8841698:	8082                	ret

00000000e884169a <mp_rshd>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* shift right a certain amount of digits */
void mp_rshd (mp_int * a, int b)
{
    e884169a:	872a                	mv	a4,a0
  int     x;

  /* if b <= 0 then ignore it */
  if (b <= 0) {
    e884169c:	02b05c63          	blez	a1,e88416d4 <mp_rshd+0x3a>
    return;
  }

  /* if b > used then simply zero it and return */
  if (a->used <= b) {
    e88416a0:	411c                	lw	a5,0(a0)
    e88416a2:	00f5c463          	blt	a1,a5,e88416aa <mp_rshd+0x10>
    mp_zero (a);
    e88416a6:	25b0006f          	j	e8842100 <mp_zero>
    register mp_digit *bottom, *top;

    /* shift the digits down */

    /* bottom */
    bottom = a->dp;
    e88416aa:	6910                	ld	a2,16(a0)

     b-2 | b-1 | b0 | b1 | b2 | ... | bb |   ---->
                 /\                   |      ---->
                  \-------------------/      ---->
     */
    for (x = 0; x < (a->used - b); x++) {
    e88416ac:	4781                	li	a5,0
    top = a->dp + b;
    e88416ae:	06b6188b          	addsl	a7,a2,a1,3
    for (x = 0; x < (a->used - b); x++) {
    e88416b2:	4314                	lw	a3,0(a4)
    e88416b4:	0007851b          	sext.w	a0,a5
    e88416b8:	06f6180b          	addsl	a6,a2,a5,3
    e88416bc:	9e8d                	subw	a3,a3,a1
    e88416be:	00d54c63          	blt	a0,a3,e88416d6 <mp_rshd+0x3c>
    e88416c2:	4601                	li	a2,0
      *bottom++ = *top++;
    }

    /* zero the top digits */
    for (; x < a->used; x++) {
    e88416c4:	4314                	lw	a3,0(a4)
    e88416c6:	00f6053b          	addw	a0,a2,a5
    e88416ca:	00d54c63          	blt	a0,a3,e88416e2 <mp_rshd+0x48>
      *bottom++ = 0;
    }
  }
  
  /* remove excess digits */
  a->used -= b;
    e88416ce:	40b685bb          	subw	a1,a3,a1
    e88416d2:	c30c                	sw	a1,0(a4)
}
    e88416d4:	8082                	ret
      *bottom++ = *top++;
    e88416d6:	66f8c68b          	lrd	a3,a7,a5,3
    e88416da:	66f6568b          	srd	a3,a2,a5,3
    for (x = 0; x < (a->used - b); x++) {
    e88416de:	0785                	addi	a5,a5,1
    e88416e0:	bfc9                	j	e88416b2 <mp_rshd+0x18>
      *bottom++ = 0;
    e88416e2:	66c8500b          	srd	zero,a6,a2,3
    for (; x < a->used; x++) {
    e88416e6:	0605                	addi	a2,a2,1
    e88416e8:	bff1                	j	e88416c4 <mp_rshd+0x2a>

00000000e88416ea <mp_set>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* set to a digit */
void mp_set (mp_int * a, mp_digit b)
{
    e88416ea:	1101                	addi	sp,sp,-32
    e88416ec:	e822                	sd	s0,16(sp)
    e88416ee:	ec06                	sd	ra,24(sp)
    e88416f0:	842a                	mv	s0,a0
    e88416f2:	e42e                	sd	a1,8(sp)
  mp_zero (a);
    e88416f4:	20d000ef          	jal	ra,e8842100 <mp_zero>
  a->dp[0] = b & MP_MASK;
    e88416f8:	65a2                	ld	a1,8(sp)
    e88416fa:	681c                	ld	a5,16(s0)
    e88416fc:	6c05b58b          	extu	a1,a1,27,0
    e8841700:	e38c                	sd	a1,0(a5)
  a->used  = (a->dp[0] != 0) ? 1 : 0;
    e8841702:	681c                	ld	a5,16(s0)
}
    e8841704:	60e2                	ld	ra,24(sp)
  a->used  = (a->dp[0] != 0) ? 1 : 0;
    e8841706:	639c                	ld	a5,0(a5)
    e8841708:	00f037b3          	snez	a5,a5
    e884170c:	c01c                	sw	a5,0(s0)
}
    e884170e:	6442                	ld	s0,16(sp)
    e8841710:	6105                	addi	sp,sp,32
    e8841712:	8082                	ret

00000000e8841714 <mp_set_int>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* set a 32-bit const */
int mp_set_int (mp_int * a, unsigned long b)
{
    e8841714:	7179                	addi	sp,sp,-48
    e8841716:	e422                	sd	s0,8(sp)
    e8841718:	e826                	sd	s1,16(sp)
    e884171a:	ec4a                	sd	s2,24(sp)
    e884171c:	f406                	sd	ra,40(sp)
    e884171e:	f04e                	sd	s3,32(sp)
    e8841720:	842a                	mv	s0,a0
    e8841722:	892e                	mv	s2,a1
  int     x, res;

  mp_zero (a);
    e8841724:	44a1                	li	s1,8
    e8841726:	1db000ef          	jal	ra,e8842100 <mp_zero>
  
  /* set four bits at a time */
  for (x = 0; x < 8; x++) {
    /* shift the number up four bits */
    if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) {
    e884172a:	8622                	mv	a2,s0
    e884172c:	4591                	li	a1,4
    e884172e:	8522                	mv	a0,s0
    e8841730:	9f9ff0ef          	jal	ra,e8841128 <mp_mul_2d>
    e8841734:	89aa                	mv	s3,a0
    e8841736:	e105                	bnez	a0,e8841756 <mp_set_int+0x42>
      return res;
    }

    /* OR in the top four bits of the source */
    a->dp[0] |= (b >> 28) & 15;
    e8841738:	6818                	ld	a4,16(s0)
    e884173a:	7dc9368b          	extu	a3,s2,31,28
    e884173e:	34fd                	addiw	s1,s1,-1
    e8841740:	631c                	ld	a5,0(a4)

    /* shift the source up to the next four bits */
    b <<= 4;
    e8841742:	0912                	slli	s2,s2,0x4
    a->dp[0] |= (b >> 28) & 15;
    e8841744:	8fd5                	or	a5,a5,a3
    e8841746:	e31c                	sd	a5,0(a4)

    /* ensure that digits are not clamped off */
    a->used += 1;
    e8841748:	401c                	lw	a5,0(s0)
    e884174a:	2785                	addiw	a5,a5,1
    e884174c:	c01c                	sw	a5,0(s0)
  for (x = 0; x < 8; x++) {
    e884174e:	fcf1                	bnez	s1,e884172a <mp_set_int+0x16>
  }
  mp_clamp (a);
    e8841750:	8522                	mv	a0,s0
    e8841752:	85cfe0ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
}
    e8841756:	70a2                	ld	ra,40(sp)
    e8841758:	6422                	ld	s0,8(sp)
    e884175a:	854e                	mv	a0,s3
    e884175c:	64c2                	ld	s1,16(sp)
    e884175e:	6962                	ld	s2,24(sp)
    e8841760:	7982                	ld	s3,32(sp)
    e8841762:	6145                	addi	sp,sp,48
    e8841764:	8082                	ret

00000000e8841766 <mp_sqr>:
 */

/* computes b = a*a */
int
mp_sqr (mp_int * a, mp_int * b)
{
    e8841766:	1141                	addi	sp,sp,-16
  int     res;

#ifdef BN_MP_TOOM_SQR_C
  /* use Toom-Cook? */
  if (a->used >= TOOM_SQR_CUTOFF) {
    e8841768:	00093717          	auipc	a4,0x93
    e884176c:	33070713          	addi	a4,a4,816 # e88d4a98 <TOOM_SQR_CUTOFF>
{
    e8841770:	e022                	sd	s0,0(sp)
    e8841772:	e406                	sd	ra,8(sp)
  if (a->used >= TOOM_SQR_CUTOFF) {
    e8841774:	411c                	lw	a5,0(a0)
    e8841776:	4318                	lw	a4,0(a4)
{
    e8841778:	842e                	mv	s0,a1
  if (a->used >= TOOM_SQR_CUTOFF) {
    e884177a:	00e7ca63          	blt	a5,a4,e884178e <mp_sqr+0x28>
    res = mp_toom_sqr(a, b);
    e884177e:	638000ef          	jal	ra,e8841db6 <mp_toom_sqr>
      res = s_mp_sqr (a, b);
#else
      res = MP_VAL;
#endif
  }
  b->sign = MP_ZPOS;
    e8841782:	00042423          	sw	zero,8(s0)
  return res;
}
    e8841786:	60a2                	ld	ra,8(sp)
    e8841788:	6402                	ld	s0,0(sp)
    e884178a:	0141                	addi	sp,sp,16
    e884178c:	8082                	ret
if (a->used >= KARATSUBA_SQR_CUTOFF) {
    e884178e:	00093717          	auipc	a4,0x93
    e8841792:	30270713          	addi	a4,a4,770 # e88d4a90 <KARATSUBA_SQR_CUTOFF>
    e8841796:	4318                	lw	a4,0(a4)
    e8841798:	00e7c563          	blt	a5,a4,e88417a2 <mp_sqr+0x3c>
    res = mp_karatsuba_sqr (a, b);
    e884179c:	bb0ff0ef          	jal	ra,e8840b4c <mp_karatsuba_sqr>
    e88417a0:	b7cd                	j	e8841782 <mp_sqr+0x1c>
    if ((a->used * 2 + 1) < MP_WARRAY && 
    e88417a2:	0017971b          	slliw	a4,a5,0x1
    e88417a6:	2705                	addiw	a4,a4,1
    e88417a8:	1ff00613          	li	a2,511
    e88417ac:	86aa                	mv	a3,a0
    e88417ae:	00e64963          	blt	a2,a4,e88417c0 <mp_sqr+0x5a>
    e88417b2:	07f00713          	li	a4,127
    e88417b6:	00f74563          	blt	a4,a5,e88417c0 <mp_sqr+0x5a>
      res = fast_s_mp_sqr (a, b);
    e88417ba:	ce1fd0ef          	jal	ra,e883f49a <fast_s_mp_sqr>
    e88417be:	b7d1                	j	e8841782 <mp_sqr+0x1c>
      res = s_mp_sqr (a, b);
    e88417c0:	85a2                	mv	a1,s0
    e88417c2:	8536                	mv	a0,a3
    e88417c4:	068010ef          	jal	ra,e884282c <s_mp_sqr>
    e88417c8:	bf6d                	j	e8841782 <mp_sqr+0x1c>

00000000e88417ca <mp_sub>:
 */

/* high level subtraction (handles signs) */
int
mp_sub (mp_int * a, mp_int * b, mp_int * c)
{
    e88417ca:	7179                	addi	sp,sp,-48
    e88417cc:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88417d0:	f406                	sd	ra,40(sp)
    e88417d2:	f04a                	sd	s2,32(sp)
  int     sa, sb, res;

  sa = a->sign;
    e88417d4:	4518                	lw	a4,8(a0)
  sb = b->sign;

  if (sa != sb) {
    e88417d6:	0085a903          	lw	s2,8(a1) # 10000008 <memcmp-0xd87ffff8>
    e88417da:	00e90a63          	beq	s2,a4,e88417ee <mp_sub+0x24>
    /* subtract a negative from a positive, OR */
    /* subtract a positive from a negative. */
    /* In either case, ADD their magnitudes, */
    /* and use the sign of the first number. */
    c->sign = sa;
    e88417de:	c618                	sw	a4,8(a2)
      /* The second has a larger magnitude */
      res = s_mp_sub (b, a, c);
    }
  }
  return res;
}
    e88417e0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88417e4:	70a2                	ld	ra,40(sp)
    e88417e6:	7902                	ld	s2,32(sp)
    e88417e8:	6145                	addi	sp,sp,48
    res = s_mp_add (a, b, c);
    e88417ea:	1570006f          	j	e8842140 <s_mp_add>
    e88417ee:	e432                	sd	a2,8(sp)
    if (mp_cmp_mag (a, b) != MP_LT) {
    e88417f0:	84aa                	mv	s1,a0
    e88417f2:	842e                	mv	s0,a1
    e88417f4:	890fe0ef          	jal	ra,e883f884 <mp_cmp_mag>
    e88417f8:	57fd                	li	a5,-1
    e88417fa:	6622                	ld	a2,8(sp)
    e88417fc:	00f50d63          	beq	a0,a5,e8841816 <mp_sub+0x4c>
      c->sign = sa;
    e8841800:	01262423          	sw	s2,8(a2)
      res = s_mp_sub (a, b, c);
    e8841804:	85a2                	mv	a1,s0
    e8841806:	8526                	mv	a0,s1
}
    e8841808:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884180c:	70a2                	ld	ra,40(sp)
    e884180e:	7902                	ld	s2,32(sp)
    e8841810:	6145                	addi	sp,sp,48
      res = s_mp_sub (b, a, c);
    e8841812:	0fe0106f          	j	e8842910 <s_mp_sub>
      c->sign = (sa == MP_ZPOS) ? MP_NEG : MP_ZPOS;
    e8841816:	00193913          	seqz	s2,s2
    e884181a:	01262423          	sw	s2,8(a2)
      res = s_mp_sub (b, a, c);
    e884181e:	85a6                	mv	a1,s1
    e8841820:	8522                	mv	a0,s0
    e8841822:	b7dd                	j	e8841808 <mp_sub+0x3e>

00000000e8841824 <mp_sub_d>:
 */

/* single digit subtraction */
int
mp_sub_d (mp_int * a, mp_digit b, mp_int * c)
{
    e8841824:	7179                	addi	sp,sp,-48
    e8841826:	f891540b          	sdd	s0,s1,(sp),0,4
    e884182a:	fb31590b          	sdd	s2,s3,(sp),1,4
    e884182e:	f406                	sd	ra,40(sp)
    e8841830:	f052                	sd	s4,32(sp)
    e8841832:	892e                	mv	s2,a1
  mp_digit *tmpa, *tmpc, mu;
  int       res, ix, oldused;

  /* grow c as required */
  if (c->alloc < a->used + 1) {
    e8841834:	410c                	lw	a1,0(a0)
    e8841836:	425c                	lw	a5,4(a2)
{
    e8841838:	84aa                	mv	s1,a0
  if (c->alloc < a->used + 1) {
    e884183a:	2585                	addiw	a1,a1,1
{
    e884183c:	8432                	mv	s0,a2
  if (c->alloc < a->used + 1) {
    e884183e:	02b7c763          	blt	a5,a1,e884186c <mp_sub_d+0x48>
  }

  /* if a is negative just do an unsigned
   * addition [with fudged signs]
   */
  if (a->sign == MP_NEG) {
    e8841842:	0084aa03          	lw	s4,8(s1)
    e8841846:	4585                	li	a1,1
    e8841848:	04ba1063          	bne	s4,a1,e8841888 <mp_sub_d+0x64>
     a->sign = MP_ZPOS;
    e884184c:	0004a423          	sw	zero,8(s1)
     res     = mp_add_d(a, b, c);
    e8841850:	8622                	mv	a2,s0
    e8841852:	85ca                	mv	a1,s2
    e8841854:	8526                	mv	a0,s1
    e8841856:	e55fd0ef          	jal	ra,e883f6aa <mp_add_d>
     a->sign = c->sign = MP_NEG;
    e884185a:	01442423          	sw	s4,8(s0)
     res     = mp_add_d(a, b, c);
    e884185e:	89aa                	mv	s3,a0
     a->sign = c->sign = MP_NEG;
    e8841860:	0144a423          	sw	s4,8(s1)

     /* clamp */
     mp_clamp(c);
    e8841864:	8522                	mv	a0,s0
    e8841866:	f49fd0ef          	jal	ra,e883f7ae <mp_clamp>

     return res;
    e884186a:	a031                	j	e8841876 <mp_sub_d+0x52>
     if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) {
    e884186c:	8532                	mv	a0,a2
    e884186e:	ce9fe0ef          	jal	ra,e8840556 <mp_grow>
    e8841872:	89aa                	mv	s3,a0
    e8841874:	d579                	beqz	a0,e8841842 <mp_sub_d+0x1e>
  while (ix++ < oldused) {
     *tmpc++ = 0;
  }
  mp_clamp(c);
  return MP_OKAY;
}
    e8841876:	70a2                	ld	ra,40(sp)
    e8841878:	f891440b          	ldd	s0,s1,(sp),0,4
    e884187c:	854e                	mv	a0,s3
    e884187e:	7a02                	ld	s4,32(sp)
    e8841880:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8841884:	6145                	addi	sp,sp,48
    e8841886:	8082                	ret
  tmpc    = c->dp;
    e8841888:	6818                	ld	a4,16(s0)
  if ((a->used == 1 && a->dp[0] <= b) || a->used == 0) {
    e884188a:	409c                	lw	a5,0(s1)
  oldused = c->used;
    e884188c:	00042803          	lw	a6,0(s0)
  tmpa    = a->dp;
    e8841890:	6890                	ld	a2,16(s1)
  if ((a->used == 1 && a->dp[0] <= b) || a->used == 0) {
    e8841892:	00870693          	addi	a3,a4,8
    e8841896:	04b79663          	bne	a5,a1,e88418e2 <mp_sub_d+0xbe>
    e884189a:	621c                	ld	a5,0(a2)
    e884189c:	06f97463          	bgeu	s2,a5,e8841904 <mp_sub_d+0xe0>
     c->sign = MP_ZPOS;
    e88418a0:	00042423          	sw	zero,8(s0)
     c->used = a->used;
    e88418a4:	409c                	lw	a5,0(s1)
    e88418a6:	c01c                	sw	a5,0(s0)
     *tmpc    = *tmpa++ - b;
    e88418a8:	621c                	ld	a5,0(a2)
    e88418aa:	41278933          	sub	s2,a5,s2
     mu       = *tmpc >> (sizeof(mp_digit) * CHAR_BIT - 1);
    e88418ae:	03f95513          	srli	a0,s2,0x3f
     *tmpc++ &= MP_MASK;
    e88418b2:	6c09390b          	extu	s2,s2,27,0
    e88418b6:	01273023          	sd	s2,0(a4)
     for (ix = 1; ix < a->used; ix++) {
    e88418ba:	4701                	li	a4,0
    e88418bc:	0004a883          	lw	a7,0(s1)
    e88418c0:	0017059b          	addiw	a1,a4,1
    e88418c4:	0705                	addi	a4,a4,1
    e88418c6:	0007079b          	sext.w	a5,a4
    e88418ca:	0317d363          	bge	a5,a7,e88418f0 <mp_sub_d+0xcc>
        *tmpc    = *tmpa++ - mu;
    e88418ce:	66e6478b          	lrd	a5,a2,a4,3
    e88418d2:	8f89                	sub	a5,a5,a0
        mu       = *tmpc >> (sizeof(mp_digit) * CHAR_BIT - 1);
    e88418d4:	03f7d513          	srli	a0,a5,0x3f
        *tmpc++ &= MP_MASK;
    e88418d8:	6c07b78b          	extu	a5,a5,27,0
    e88418dc:	7886d78b          	sdia	a5,(a3),8,0
     for (ix = 1; ix < a->used; ix++) {
    e88418e0:	bff1                	j	e88418bc <mp_sub_d+0x98>
  if ((a->used == 1 && a->dp[0] <= b) || a->used == 0) {
    e88418e2:	ffdd                	bnez	a5,e88418a0 <mp_sub_d+0x7c>
        *tmpc++ = b;
    e88418e4:	01273023          	sd	s2,0(a4)
     c->sign = MP_NEG;
    e88418e8:	4785                	li	a5,1
    e88418ea:	c41c                	sw	a5,8(s0)
     c->used = 1;
    e88418ec:	c01c                	sw	a5,0(s0)
     ix      = 1;
    e88418ee:	4585                	li	a1,1
     for (ix = 1; ix < a->used; ix++) {
    e88418f0:	4781                	li	a5,0
  while (ix++ < oldused) {
    e88418f2:	00b7873b          	addw	a4,a5,a1
    e88418f6:	01074a63          	blt	a4,a6,e884190a <mp_sub_d+0xe6>
  mp_clamp(c);
    e88418fa:	8522                	mv	a0,s0
    e88418fc:	eb3fd0ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e8841900:	4981                	li	s3,0
    e8841902:	bf95                	j	e8841876 <mp_sub_d+0x52>
        *tmpc++ = b - *tmpa;
    e8841904:	40f90933          	sub	s2,s2,a5
    e8841908:	bff1                	j	e88418e4 <mp_sub_d+0xc0>
     *tmpc++ = 0;
    e884190a:	66f6d00b          	srd	zero,a3,a5,3
    e884190e:	0785                	addi	a5,a5,1
    e8841910:	b7cd                	j	e88418f2 <mp_sub_d+0xce>

00000000e8841912 <mp_to_unsigned_bin>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* store in unsigned [big endian] format */
int mp_to_unsigned_bin (mp_int * a, unsigned char *b)
{
    e8841912:	715d                	addi	sp,sp,-80
    e8841914:	e0a2                	sd	s0,64(sp)
    e8841916:	842e                	mv	s0,a1
  int     x, res;
  mp_int  t;

  if ((res = mp_init_copy (&t, a)) != MP_OKAY) {
    e8841918:	85aa                	mv	a1,a0
    e884191a:	0828                	addi	a0,sp,24
{
    e884191c:	e486                	sd	ra,72(sp)
    e884191e:	fc26                	sd	s1,56(sp)
  if ((res = mp_init_copy (&t, a)) != MP_OKAY) {
    e8841920:	ccbfe0ef          	jal	ra,e88405ea <mp_init_copy>
    e8841924:	85aa                	mv	a1,a0
    e8841926:	c91d                	beqz	a0,e884195c <mp_to_unsigned_bin+0x4a>
    }
  }
  bn_reverse (b, x);
  mp_clear (&t);
  return MP_OKAY;
}
    e8841928:	60a6                	ld	ra,72(sp)
    e884192a:	6406                	ld	s0,64(sp)
    e884192c:	74e2                	ld	s1,56(sp)
    e884192e:	852e                	mv	a0,a1
    e8841930:	6161                	addi	sp,sp,80
    e8841932:	8082                	ret
      b[x++] = (unsigned char) (t.dp[0] & 255);
    e8841934:	77a2                	ld	a5,40(sp)
    if ((res = mp_div_2d (&t, 8, &t, NULL)) != MP_OKAY) {
    e8841936:	0830                	addi	a2,sp,24
      b[x++] = (unsigned char) (t.dp[0] & 255);
    e8841938:	0015849b          	addiw	s1,a1,1
    e884193c:	639c                	ld	a5,0(a5)
    if ((res = mp_div_2d (&t, 8, &t, NULL)) != MP_OKAY) {
    e884193e:	4681                	li	a3,0
    e8841940:	8532                	mv	a0,a2
      b[x++] = (unsigned char) (t.dp[0] & 255);
    e8841942:	00b4578b          	srb	a5,s0,a1,0
    if ((res = mp_div_2d (&t, 8, &t, NULL)) != MP_OKAY) {
    e8841946:	45a1                	li	a1,8
    e8841948:	bd6fe0ef          	jal	ra,e883fd1e <mp_div_2d>
    e884194c:	c519                	beqz	a0,e884195a <mp_to_unsigned_bin+0x48>
    e884194e:	e42a                	sd	a0,8(sp)
      mp_clear (&t);
    e8841950:	0828                	addi	a0,sp,24
    e8841952:	e7ffd0ef          	jal	ra,e883f7d0 <mp_clear>
      return res;
    e8841956:	65a2                	ld	a1,8(sp)
    e8841958:	bfc1                	j	e8841928 <mp_to_unsigned_bin+0x16>
      b[x++] = (unsigned char) (t.dp[0] & 255);
    e884195a:	85a6                	mv	a1,s1
  while (mp_iszero (&t) == 0) {
    e884195c:	47e2                	lw	a5,24(sp)
    e884195e:	fbf9                	bnez	a5,e8841934 <mp_to_unsigned_bin+0x22>
  bn_reverse (b, x);
    e8841960:	8522                	mv	a0,s0
    e8841962:	7be000ef          	jal	ra,e8842120 <bn_reverse>
  mp_clear (&t);
    e8841966:	0828                	addi	a0,sp,24
    e8841968:	e69fd0ef          	jal	ra,e883f7d0 <mp_clear>
  return MP_OKAY;
    e884196c:	4581                	li	a1,0
    e884196e:	bf6d                	j	e8841928 <mp_to_unsigned_bin+0x16>

00000000e8841970 <mp_toom_mul>:
 * asymptotic running time of O(N**1.464).  This algorithm is 
 * only particularly useful on VERY large inputs 
 * (we're talking 1000s of digits here...).
*/
int mp_toom_mul(mp_int *a, mp_int *b, mp_int *c)
{
    e8841970:	7161                	addi	sp,sp,-432
    mp_int w0, w1, w2, w3, w4, tmp1, tmp2, a0, a1, a2, b0, b1, b2;
    int res, B;
        
    /* init temps */
    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, 
    e8841972:	01bc                	addi	a5,sp,200
    e8841974:	f03e                	sd	a5,32(sp)
    e8841976:	191c                	addi	a5,sp,176
    e8841978:	ec3e                	sd	a5,24(sp)
    e884197a:	0abc                	addi	a5,sp,344
    e884197c:	e83e                	sd	a5,16(sp)
    e884197e:	029c                	addi	a5,sp,320
    e8841980:	e43e                	sd	a5,8(sp)
    e8841982:	123c                	addi	a5,sp,296
{
    e8841984:	e74e                	sd	s3,392(sp)
    e8841986:	e352                	sd	s4,384(sp)
    e8841988:	fada                	sd	s6,368(sp)
    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, 
    e884198a:	e03e                	sd	a5,0(sp)
{
    e884198c:	8a2a                	mv	s4,a0
    e884198e:	89ae                	mv	s3,a1
    e8841990:	8b32                	mv	s6,a2
    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, 
    e8841992:	f402                	sd	zero,40(sp)
    e8841994:	11010893          	addi	a7,sp,272
    e8841998:	0f810813          	addi	a6,sp,248
    e884199c:	119c                	addi	a5,sp,224
    e884199e:	0938                	addi	a4,sp,152
    e88419a0:	0114                	addi	a3,sp,128
    e88419a2:	10b0                	addi	a2,sp,104
    e88419a4:	088c                	addi	a1,sp,80
    e88419a6:	1828                	addi	a0,sp,56
{
    e88419a8:	f322                	sd	s0,416(sp)
    e88419aa:	f706                	sd	ra,424(sp)
    e88419ac:	ef26                	sd	s1,408(sp)
    e88419ae:	eb4a                	sd	s2,400(sp)
    e88419b0:	fed6                	sd	s5,376(sp)
    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, 
    e88419b2:	c65fe0ef          	jal	ra,e8840616 <mp_init_multi>
    e88419b6:	842a                	mv	s0,a0
    e88419b8:	3e051463          	bnez	a0,e8841da0 <mp_toom_mul+0x430>
                             &b2, &tmp1, &tmp2, NULL)) != MP_OKAY) {
       return res;
    }
    
    /* B */
    B = MIN(a->used, b->used) / 3;
    e88419bc:	000a2703          	lw	a4,0(s4)
    e88419c0:	0009a483          	lw	s1,0(s3)
    
    /* a = a2 * B**2 + a1 * B + a0 */
    if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) {
    e88419c4:	4971                	li	s2,28
    e88419c6:	1190                	addi	a2,sp,224
    B = MIN(a->used, b->used) / 3;
    e88419c8:	009727b3          	slt	a5,a4,s1
    e88419cc:	42f7148b          	mvnez	s1,a4,a5
    e88419d0:	478d                	li	a5,3
    e88419d2:	02f4cabb          	divw	s5,s1,a5
    if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) {
    e88419d6:	8552                	mv	a0,s4
    e88419d8:	0359093b          	mulw	s2,s2,s5
    e88419dc:	85ca                	mv	a1,s2
    e88419de:	bbeff0ef          	jal	ra,e8840d9c <mp_mod_2d>
    e88419e2:	842a                	mv	s0,a0
    e88419e4:	38051763          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }

    if ((res = mp_copy(a, &a1)) != MP_OKAY) {
    e88419e8:	19ac                	addi	a1,sp,248
    e88419ea:	8552                	mv	a0,s4
    e88419ec:	ee5fd0ef          	jal	ra,e883f8d0 <mp_copy>
    e88419f0:	842a                	mv	s0,a0
    e88419f2:	38051063          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    mp_rshd(&a1, B);
    e88419f6:	85d6                	mv	a1,s5
    e88419f8:	19a8                	addi	a0,sp,248
    e88419fa:	ca1ff0ef          	jal	ra,e884169a <mp_rshd>
    mp_mod_2d(&a1, DIGIT_BIT * B, &a1);
    e88419fe:	19b0                	addi	a2,sp,248
    e8841a00:	85ca                	mv	a1,s2
    e8841a02:	8532                	mv	a0,a2
    e8841a04:	b98ff0ef          	jal	ra,e8840d9c <mp_mod_2d>

    if ((res = mp_copy(a, &a2)) != MP_OKAY) {
    e8841a08:	0a0c                	addi	a1,sp,272
    e8841a0a:	8552                	mv	a0,s4
    e8841a0c:	ec5fd0ef          	jal	ra,e883f8d0 <mp_copy>
    e8841a10:	842a                	mv	s0,a0
    e8841a12:	36051063          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    mp_rshd(&a2, B*2);
    e8841a16:	001a9a1b          	slliw	s4,s5,0x1
    e8841a1a:	85d2                	mv	a1,s4
    e8841a1c:	0a08                	addi	a0,sp,272
    e8841a1e:	c7dff0ef          	jal	ra,e884169a <mp_rshd>
    
    /* b = b2 * B**2 + b1 * B + b0 */
    if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) {
    e8841a22:	1230                	addi	a2,sp,296
    e8841a24:	85ca                	mv	a1,s2
    e8841a26:	854e                	mv	a0,s3
    e8841a28:	b74ff0ef          	jal	ra,e8840d9c <mp_mod_2d>
    e8841a2c:	842a                	mv	s0,a0
    e8841a2e:	34051263          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }

    if ((res = mp_copy(b, &b1)) != MP_OKAY) {
    e8841a32:	028c                	addi	a1,sp,320
    e8841a34:	854e                	mv	a0,s3
    e8841a36:	e9bfd0ef          	jal	ra,e883f8d0 <mp_copy>
    e8841a3a:	842a                	mv	s0,a0
    e8841a3c:	32051b63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    mp_rshd(&b1, B);
    e8841a40:	85d6                	mv	a1,s5
    e8841a42:	0288                	addi	a0,sp,320
    e8841a44:	c57ff0ef          	jal	ra,e884169a <mp_rshd>
    mp_mod_2d(&b1, DIGIT_BIT * B, &b1);
    e8841a48:	0290                	addi	a2,sp,320
    e8841a4a:	85ca                	mv	a1,s2
    e8841a4c:	8532                	mv	a0,a2
    e8841a4e:	b4eff0ef          	jal	ra,e8840d9c <mp_mod_2d>

    if ((res = mp_copy(b, &b2)) != MP_OKAY) {
    e8841a52:	0aac                	addi	a1,sp,344
    e8841a54:	854e                	mv	a0,s3
    e8841a56:	e7bfd0ef          	jal	ra,e883f8d0 <mp_copy>
    e8841a5a:	842a                	mv	s0,a0
    e8841a5c:	30051b63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    mp_rshd(&b2, B*2);
    e8841a60:	85d2                	mv	a1,s4
    e8841a62:	0aa8                	addi	a0,sp,344
    e8841a64:	c37ff0ef          	jal	ra,e884169a <mp_rshd>
    
    /* w0 = a0*b0 */
    if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) {
    e8841a68:	1830                	addi	a2,sp,56
    e8841a6a:	122c                	addi	a1,sp,296
    e8841a6c:	1188                	addi	a0,sp,224
    e8841a6e:	d92ff0ef          	jal	ra,e8841000 <mp_mul>
    e8841a72:	842a                	mv	s0,a0
    e8841a74:	2e051f63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    
    /* w4 = a2 * b2 */
    if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) {
    e8841a78:	0930                	addi	a2,sp,152
    e8841a7a:	0aac                	addi	a1,sp,344
    e8841a7c:	0a08                	addi	a0,sp,272
    e8841a7e:	d82ff0ef          	jal	ra,e8841000 <mp_mul>
    e8841a82:	842a                	mv	s0,a0
    e8841a84:	2e051763          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    
    /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */
    if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) {
    e8841a88:	190c                	addi	a1,sp,176
    e8841a8a:	1188                	addi	a0,sp,224
    e8841a8c:	e0cff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841a90:	842a                	mv	s0,a0
    e8841a92:	2e051063          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) {
    e8841a96:	1910                	addi	a2,sp,176
    e8841a98:	19ac                	addi	a1,sp,248
    e8841a9a:	8532                	mv	a0,a2
    e8841a9c:	baffd0ef          	jal	ra,e883f64a <mp_add>
    e8841aa0:	842a                	mv	s0,a0
    e8841aa2:	2c051863          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) {
    e8841aa6:	190c                	addi	a1,sp,176
    e8841aa8:	852e                	mv	a0,a1
    e8841aaa:	deeff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841aae:	842a                	mv	s0,a0
    e8841ab0:	2c051163          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) {
    e8841ab4:	1910                	addi	a2,sp,176
    e8841ab6:	0a0c                	addi	a1,sp,272
    e8841ab8:	8532                	mv	a0,a2
    e8841aba:	b91fd0ef          	jal	ra,e883f64a <mp_add>
    e8841abe:	842a                	mv	s0,a0
    e8841ac0:	2a051963          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    
    if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) {
    e8841ac4:	01ac                	addi	a1,sp,200
    e8841ac6:	1228                	addi	a0,sp,296
    e8841ac8:	dd0ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841acc:	842a                	mv	s0,a0
    e8841ace:	2a051263          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) {
    e8841ad2:	01b0                	addi	a2,sp,200
    e8841ad4:	028c                	addi	a1,sp,320
    e8841ad6:	8532                	mv	a0,a2
    e8841ad8:	b73fd0ef          	jal	ra,e883f64a <mp_add>
    e8841adc:	842a                	mv	s0,a0
    e8841ade:	28051a63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) {
    e8841ae2:	01ac                	addi	a1,sp,200
    e8841ae4:	852e                	mv	a0,a1
    e8841ae6:	db2ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841aea:	842a                	mv	s0,a0
    e8841aec:	28051363          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) {
    e8841af0:	01b0                	addi	a2,sp,200
    e8841af2:	0aac                	addi	a1,sp,344
    e8841af4:	8532                	mv	a0,a2
    e8841af6:	b55fd0ef          	jal	ra,e883f64a <mp_add>
    e8841afa:	842a                	mv	s0,a0
    e8841afc:	26051b63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    
    if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) {
    e8841b00:	0890                	addi	a2,sp,80
    e8841b02:	01ac                	addi	a1,sp,200
    e8841b04:	1908                	addi	a0,sp,176
    e8841b06:	cfaff0ef          	jal	ra,e8841000 <mp_mul>
    e8841b0a:	842a                	mv	s0,a0
    e8841b0c:	26051363          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    
    /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */
    if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) {
    e8841b10:	190c                	addi	a1,sp,176
    e8841b12:	0a08                	addi	a0,sp,272
    e8841b14:	d84ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841b18:	842a                	mv	s0,a0
    e8841b1a:	24051c63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) {
    e8841b1e:	1910                	addi	a2,sp,176
    e8841b20:	19ac                	addi	a1,sp,248
    e8841b22:	8532                	mv	a0,a2
    e8841b24:	b27fd0ef          	jal	ra,e883f64a <mp_add>
    e8841b28:	842a                	mv	s0,a0
    e8841b2a:	24051463          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) {
    e8841b2e:	190c                	addi	a1,sp,176
    e8841b30:	852e                	mv	a0,a1
    e8841b32:	d66ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841b36:	842a                	mv	s0,a0
    e8841b38:	22051d63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) {
    e8841b3c:	1910                	addi	a2,sp,176
    e8841b3e:	118c                	addi	a1,sp,224
    e8841b40:	8532                	mv	a0,a2
    e8841b42:	b09fd0ef          	jal	ra,e883f64a <mp_add>
    e8841b46:	842a                	mv	s0,a0
    e8841b48:	22051563          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    
    if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) {
    e8841b4c:	01ac                	addi	a1,sp,200
    e8841b4e:	0aa8                	addi	a0,sp,344
    e8841b50:	d48ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841b54:	842a                	mv	s0,a0
    e8841b56:	20051e63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) {
    e8841b5a:	01b0                	addi	a2,sp,200
    e8841b5c:	028c                	addi	a1,sp,320
    e8841b5e:	8532                	mv	a0,a2
    e8841b60:	aebfd0ef          	jal	ra,e883f64a <mp_add>
    e8841b64:	842a                	mv	s0,a0
    e8841b66:	20051663          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) {
    e8841b6a:	01ac                	addi	a1,sp,200
    e8841b6c:	852e                	mv	a0,a1
    e8841b6e:	d2aff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841b72:	842a                	mv	s0,a0
    e8841b74:	1e051f63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) {
    e8841b78:	01b0                	addi	a2,sp,200
    e8841b7a:	122c                	addi	a1,sp,296
    e8841b7c:	8532                	mv	a0,a2
    e8841b7e:	acdfd0ef          	jal	ra,e883f64a <mp_add>
    e8841b82:	842a                	mv	s0,a0
    e8841b84:	1e051763          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    
    if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) {
    e8841b88:	0110                	addi	a2,sp,128
    e8841b8a:	01ac                	addi	a1,sp,200
    e8841b8c:	1908                	addi	a0,sp,176
    e8841b8e:	c72ff0ef          	jal	ra,e8841000 <mp_mul>
    e8841b92:	842a                	mv	s0,a0
    e8841b94:	1c051f63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    

    /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */
    if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) {
    e8841b98:	1910                	addi	a2,sp,176
    e8841b9a:	19ac                	addi	a1,sp,248
    e8841b9c:	0a08                	addi	a0,sp,272
    e8841b9e:	aadfd0ef          	jal	ra,e883f64a <mp_add>
    e8841ba2:	842a                	mv	s0,a0
    e8841ba4:	1c051763          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) {
    e8841ba8:	1910                	addi	a2,sp,176
    e8841baa:	118c                	addi	a1,sp,224
    e8841bac:	8532                	mv	a0,a2
    e8841bae:	a9dfd0ef          	jal	ra,e883f64a <mp_add>
    e8841bb2:	842a                	mv	s0,a0
    e8841bb4:	1a051f63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&b2, &b1, &tmp2)) != MP_OKAY) {
    e8841bb8:	01b0                	addi	a2,sp,200
    e8841bba:	028c                	addi	a1,sp,320
    e8841bbc:	0aa8                	addi	a0,sp,344
    e8841bbe:	a8dfd0ef          	jal	ra,e883f64a <mp_add>
    e8841bc2:	842a                	mv	s0,a0
    e8841bc4:	1a051763          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) {
    e8841bc8:	01b0                	addi	a2,sp,200
    e8841bca:	122c                	addi	a1,sp,296
    e8841bcc:	8532                	mv	a0,a2
    e8841bce:	a7dfd0ef          	jal	ra,e883f64a <mp_add>
    e8841bd2:	842a                	mv	s0,a0
    e8841bd4:	18051f63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       goto ERR;
    }
    if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) {
    e8841bd8:	10b0                	addi	a2,sp,104
    e8841bda:	01ac                	addi	a1,sp,200
    e8841bdc:	1908                	addi	a0,sp,176
    e8841bde:	c22ff0ef          	jal	ra,e8841000 <mp_mul>
    e8841be2:	842a                	mv	s0,a0
    e8841be4:	18051763          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
       using 12 subtractions, 4 shifts, 
              2 small divisions and 1 small multiplication 
     */
     
     /* r1 - r4 */
     if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) {
    e8841be8:	0890                	addi	a2,sp,80
    e8841bea:	092c                	addi	a1,sp,152
    e8841bec:	8532                	mv	a0,a2
    e8841bee:	bddff0ef          	jal	ra,e88417ca <mp_sub>
    e8841bf2:	842a                	mv	s0,a0
    e8841bf4:	16051f63          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r3 - r0 */
     if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) {
    e8841bf8:	0110                	addi	a2,sp,128
    e8841bfa:	182c                	addi	a1,sp,56
    e8841bfc:	8532                	mv	a0,a2
    e8841bfe:	bcdff0ef          	jal	ra,e88417ca <mp_sub>
    e8841c02:	842a                	mv	s0,a0
    e8841c04:	16051763          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r1/2 */
     if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) {
    e8841c08:	088c                	addi	a1,sp,80
    e8841c0a:	852e                	mv	a0,a1
    e8841c0c:	88afe0ef          	jal	ra,e883fc96 <mp_div_2>
    e8841c10:	842a                	mv	s0,a0
    e8841c12:	16051063          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r3/2 */
     if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) {
    e8841c16:	010c                	addi	a1,sp,128
    e8841c18:	852e                	mv	a0,a1
    e8841c1a:	87cfe0ef          	jal	ra,e883fc96 <mp_div_2>
    e8841c1e:	842a                	mv	s0,a0
    e8841c20:	14051963          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r2 - r0 - r4 */
     if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) {
    e8841c24:	10b0                	addi	a2,sp,104
    e8841c26:	182c                	addi	a1,sp,56
    e8841c28:	8532                	mv	a0,a2
    e8841c2a:	ba1ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841c2e:	842a                	mv	s0,a0
    e8841c30:	14051163          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) {
    e8841c34:	10b0                	addi	a2,sp,104
    e8841c36:	092c                	addi	a1,sp,152
    e8841c38:	8532                	mv	a0,a2
    e8841c3a:	b91ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841c3e:	842a                	mv	s0,a0
    e8841c40:	12051963          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r1 - r2 */
     if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) {
    e8841c44:	0890                	addi	a2,sp,80
    e8841c46:	10ac                	addi	a1,sp,104
    e8841c48:	8532                	mv	a0,a2
    e8841c4a:	b81ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841c4e:	842a                	mv	s0,a0
    e8841c50:	12051163          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r3 - r2 */
     if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) {
    e8841c54:	0110                	addi	a2,sp,128
    e8841c56:	10ac                	addi	a1,sp,104
    e8841c58:	8532                	mv	a0,a2
    e8841c5a:	b71ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841c5e:	842a                	mv	s0,a0
    e8841c60:	10051963          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r1 - 8r0 */
     if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) {
    e8841c64:	1910                	addi	a2,sp,176
    e8841c66:	458d                	li	a1,3
    e8841c68:	1828                	addi	a0,sp,56
    e8841c6a:	cbeff0ef          	jal	ra,e8841128 <mp_mul_2d>
    e8841c6e:	842a                	mv	s0,a0
    e8841c70:	10051163          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) {
    e8841c74:	0890                	addi	a2,sp,80
    e8841c76:	190c                	addi	a1,sp,176
    e8841c78:	8532                	mv	a0,a2
    e8841c7a:	b51ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841c7e:	842a                	mv	s0,a0
    e8841c80:	0e051963          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r3 - 8r4 */
     if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) {
    e8841c84:	1910                	addi	a2,sp,176
    e8841c86:	458d                	li	a1,3
    e8841c88:	0928                	addi	a0,sp,152
    e8841c8a:	c9eff0ef          	jal	ra,e8841128 <mp_mul_2d>
    e8841c8e:	842a                	mv	s0,a0
    e8841c90:	0e051163          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) {
    e8841c94:	0110                	addi	a2,sp,128
    e8841c96:	190c                	addi	a1,sp,176
    e8841c98:	8532                	mv	a0,a2
    e8841c9a:	b31ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841c9e:	842a                	mv	s0,a0
    e8841ca0:	0c051963          	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* 3r2 - r1 - r3 */
     if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) {
    e8841ca4:	10b0                	addi	a2,sp,104
    e8841ca6:	458d                	li	a1,3
    e8841ca8:	8532                	mv	a0,a2
    e8841caa:	d32ff0ef          	jal	ra,e88411dc <mp_mul_d>
    e8841cae:	842a                	mv	s0,a0
    e8841cb0:	e169                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) {
    e8841cb2:	10b0                	addi	a2,sp,104
    e8841cb4:	088c                	addi	a1,sp,80
    e8841cb6:	8532                	mv	a0,a2
    e8841cb8:	b13ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841cbc:	842a                	mv	s0,a0
    e8841cbe:	e955                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) {
    e8841cc0:	10b0                	addi	a2,sp,104
    e8841cc2:	010c                	addi	a1,sp,128
    e8841cc4:	8532                	mv	a0,a2
    e8841cc6:	b05ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841cca:	842a                	mv	s0,a0
    e8841ccc:	e15d                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r1 - r2 */
     if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) {
    e8841cce:	0890                	addi	a2,sp,80
    e8841cd0:	10ac                	addi	a1,sp,104
    e8841cd2:	8532                	mv	a0,a2
    e8841cd4:	af7ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841cd8:	842a                	mv	s0,a0
    e8841cda:	ed41                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r3 - r2 */
     if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) {
    e8841cdc:	0110                	addi	a2,sp,128
    e8841cde:	10ac                	addi	a1,sp,104
    e8841ce0:	8532                	mv	a0,a2
    e8841ce2:	ae9ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841ce6:	842a                	mv	s0,a0
    e8841ce8:	e549                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r1/3 */
     if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) {
    e8841cea:	088c                	addi	a1,sp,80
    e8841cec:	4601                	li	a2,0
    e8841cee:	852e                	mv	a0,a1
    e8841cf0:	90cfe0ef          	jal	ra,e883fdfc <mp_div_3>
    e8841cf4:	842a                	mv	s0,a0
    e8841cf6:	ed35                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     /* r3/3 */
     if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) {
    e8841cf8:	010c                	addi	a1,sp,128
    e8841cfa:	4601                	li	a2,0
    e8841cfc:	852e                	mv	a0,a1
    e8841cfe:	8fefe0ef          	jal	ra,e883fdfc <mp_div_3>
    e8841d02:	842a                	mv	s0,a0
    e8841d04:	e53d                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     
     /* at this point shift W[n] by B*n */
     if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) {
    e8841d06:	85d6                	mv	a1,s5
    e8841d08:	0888                	addi	a0,sp,80
    e8841d0a:	fb9fe0ef          	jal	ra,e8840cc2 <mp_lshd>
    e8841d0e:	842a                	mv	s0,a0
    e8841d10:	e12d                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) {
    e8841d12:	85d2                	mv	a1,s4
    e8841d14:	10a8                	addi	a0,sp,104
    e8841d16:	fadfe0ef          	jal	ra,e8840cc2 <mp_lshd>
    e8841d1a:	842a                	mv	s0,a0
    e8841d1c:	e939                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) {
    e8841d1e:	458d                	li	a1,3
    e8841d20:	035585bb          	mulw	a1,a1,s5
    e8841d24:	0108                	addi	a0,sp,128
    e8841d26:	f9dfe0ef          	jal	ra,e8840cc2 <mp_lshd>
    e8841d2a:	842a                	mv	s0,a0
    e8841d2c:	e139                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) {
    e8841d2e:	002a959b          	slliw	a1,s5,0x2
    e8841d32:	0928                	addi	a0,sp,152
    e8841d34:	f8ffe0ef          	jal	ra,e8840cc2 <mp_lshd>
    e8841d38:	842a                	mv	s0,a0
    e8841d3a:	ed05                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }     
     
     if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) {
    e8841d3c:	865a                	mv	a2,s6
    e8841d3e:	088c                	addi	a1,sp,80
    e8841d40:	1828                	addi	a0,sp,56
    e8841d42:	909fd0ef          	jal	ra,e883f64a <mp_add>
    e8841d46:	842a                	mv	s0,a0
    e8841d48:	e50d                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) {
    e8841d4a:	1910                	addi	a2,sp,176
    e8841d4c:	010c                	addi	a1,sp,128
    e8841d4e:	10a8                	addi	a0,sp,104
    e8841d50:	8fbfd0ef          	jal	ra,e883f64a <mp_add>
    e8841d54:	842a                	mv	s0,a0
    e8841d56:	ed11                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) {
    e8841d58:	1910                	addi	a2,sp,176
    e8841d5a:	85b2                	mv	a1,a2
    e8841d5c:	0928                	addi	a0,sp,152
    e8841d5e:	8edfd0ef          	jal	ra,e883f64a <mp_add>
    e8841d62:	842a                	mv	s0,a0
    e8841d64:	e519                	bnez	a0,e8841d72 <mp_toom_mul+0x402>
        goto ERR;
     }
     if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) {
    e8841d66:	865a                	mv	a2,s6
    e8841d68:	85da                	mv	a1,s6
    e8841d6a:	1908                	addi	a0,sp,176
    e8841d6c:	8dffd0ef          	jal	ra,e883f64a <mp_add>
    e8841d70:	842a                	mv	s0,a0
        goto ERR;
     }     
     
ERR:
     mp_clear_multi(&w0, &w1, &w2, &w3, &w4, 
    e8841d72:	01bc                	addi	a5,sp,200
    e8841d74:	f03e                	sd	a5,32(sp)
    e8841d76:	191c                	addi	a5,sp,176
    e8841d78:	ec3e                	sd	a5,24(sp)
    e8841d7a:	0abc                	addi	a5,sp,344
    e8841d7c:	e83e                	sd	a5,16(sp)
    e8841d7e:	029c                	addi	a5,sp,320
    e8841d80:	e43e                	sd	a5,8(sp)
    e8841d82:	123c                	addi	a5,sp,296
    e8841d84:	e03e                	sd	a5,0(sp)
    e8841d86:	f402                	sd	zero,40(sp)
    e8841d88:	11010893          	addi	a7,sp,272
    e8841d8c:	0f810813          	addi	a6,sp,248
    e8841d90:	119c                	addi	a5,sp,224
    e8841d92:	0938                	addi	a4,sp,152
    e8841d94:	0114                	addi	a3,sp,128
    e8841d96:	10b0                	addi	a2,sp,104
    e8841d98:	088c                	addi	a1,sp,80
    e8841d9a:	1828                	addi	a0,sp,56
    e8841d9c:	a6ffd0ef          	jal	ra,e883f80a <mp_clear_multi>
                    &a0, &a1, &a2, &b0, &b1, 
                    &b2, &tmp1, &tmp2, NULL);
     return res;
}     
    e8841da0:	8522                	mv	a0,s0
    e8841da2:	70ba                	ld	ra,424(sp)
    e8841da4:	741a                	ld	s0,416(sp)
    e8841da6:	64fa                	ld	s1,408(sp)
    e8841da8:	695a                	ld	s2,400(sp)
    e8841daa:	69ba                	ld	s3,392(sp)
    e8841dac:	6a1a                	ld	s4,384(sp)
    e8841dae:	7af6                	ld	s5,376(sp)
    e8841db0:	7b56                	ld	s6,368(sp)
    e8841db2:	615d                	addi	sp,sp,432
    e8841db4:	8082                	ret

00000000e8841db6 <mp_toom_sqr>:
 */

/* squaring using Toom-Cook 3-way algorithm */
int
mp_toom_sqr(mp_int *a, mp_int *b)
{
    e8841db6:	7169                	addi	sp,sp,-304
    mp_int w0, w1, w2, w3, w4, tmp1, a0, a1, a2;
    int res, B;

    /* init temps */
    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL)) != MP_OKAY) {
    e8841db8:	091c                	addi	a5,sp,144
{
    e8841dba:	ea4a                	sd	s2,272(sp)
    e8841dbc:	e252                	sd	s4,256(sp)
    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL)) != MP_OKAY) {
    e8841dbe:	e03e                	sd	a5,0(sp)
{
    e8841dc0:	892a                	mv	s2,a0
    e8841dc2:	8a2e                	mv	s4,a1
    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL)) != MP_OKAY) {
    e8841dc4:	e402                	sd	zero,8(sp)
    e8841dc6:	0d810893          	addi	a7,sp,216
    e8841dca:	0c010813          	addi	a6,sp,192
    e8841dce:	113c                	addi	a5,sp,168
    e8841dd0:	18b8                	addi	a4,sp,120
    e8841dd2:	1094                	addi	a3,sp,96
    e8841dd4:	00b0                	addi	a2,sp,72
    e8841dd6:	180c                	addi	a1,sp,48
    e8841dd8:	0828                	addi	a0,sp,24
{
    e8841dda:	f222                	sd	s0,288(sp)
    e8841ddc:	f606                	sd	ra,296(sp)
    e8841dde:	ee26                	sd	s1,280(sp)
    e8841de0:	e64e                	sd	s3,264(sp)
    e8841de2:	fdd6                	sd	s5,248(sp)
    if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL)) != MP_OKAY) {
    e8841de4:	833fe0ef          	jal	ra,e8840616 <mp_init_multi>
    e8841de8:	842a                	mv	s0,a0
    e8841dea:	2e051263          	bnez	a0,e88420ce <mp_toom_sqr+0x318>
       return res;
    }

    /* B */
    B = a->used / 3;
    e8841dee:	00092483          	lw	s1,0(s2)
    e8841df2:	478d                	li	a5,3

    /* a = a2 * B**2 + a1 * B + a0 */
    if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) {
    e8841df4:	49f1                	li	s3,28
    B = a->used / 3;
    e8841df6:	02f4cabb          	divw	s5,s1,a5
    if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) {
    e8841dfa:	1130                	addi	a2,sp,168
    e8841dfc:	854a                	mv	a0,s2
    e8841dfe:	035989bb          	mulw	s3,s3,s5
    e8841e02:	85ce                	mv	a1,s3
    e8841e04:	f99fe0ef          	jal	ra,e8840d9c <mp_mod_2d>
    e8841e08:	842a                	mv	s0,a0
    e8841e0a:	2a051363          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }

    if ((res = mp_copy(a, &a1)) != MP_OKAY) {
    e8841e0e:	018c                	addi	a1,sp,192
    e8841e10:	854a                	mv	a0,s2
    e8841e12:	abffd0ef          	jal	ra,e883f8d0 <mp_copy>
    e8841e16:	842a                	mv	s0,a0
    e8841e18:	28051c63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    mp_rshd(&a1, B);
    e8841e1c:	85d6                	mv	a1,s5
    e8841e1e:	0188                	addi	a0,sp,192
    e8841e20:	87bff0ef          	jal	ra,e884169a <mp_rshd>
    mp_mod_2d(&a1, DIGIT_BIT * B, &a1);
    e8841e24:	0190                	addi	a2,sp,192
    e8841e26:	85ce                	mv	a1,s3
    e8841e28:	8532                	mv	a0,a2
    e8841e2a:	f73fe0ef          	jal	ra,e8840d9c <mp_mod_2d>

    if ((res = mp_copy(a, &a2)) != MP_OKAY) {
    e8841e2e:	09ac                	addi	a1,sp,216
    e8841e30:	854a                	mv	a0,s2
    e8841e32:	a9ffd0ef          	jal	ra,e883f8d0 <mp_copy>
    e8841e36:	842a                	mv	s0,a0
    e8841e38:	26051c63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    mp_rshd(&a2, B*2);
    e8841e3c:	001a991b          	slliw	s2,s5,0x1
    e8841e40:	85ca                	mv	a1,s2
    e8841e42:	09a8                	addi	a0,sp,216
    e8841e44:	857ff0ef          	jal	ra,e884169a <mp_rshd>

    /* w0 = a0*a0 */
    if ((res = mp_sqr(&a0, &w0)) != MP_OKAY) {
    e8841e48:	082c                	addi	a1,sp,24
    e8841e4a:	1128                	addi	a0,sp,168
    e8841e4c:	91bff0ef          	jal	ra,e8841766 <mp_sqr>
    e8841e50:	842a                	mv	s0,a0
    e8841e52:	24051f63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }

    /* w4 = a2 * a2 */
    if ((res = mp_sqr(&a2, &w4)) != MP_OKAY) {
    e8841e56:	18ac                	addi	a1,sp,120
    e8841e58:	09a8                	addi	a0,sp,216
    e8841e5a:	90dff0ef          	jal	ra,e8841766 <mp_sqr>
    e8841e5e:	842a                	mv	s0,a0
    e8841e60:	24051863          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }

    /* w1 = (a2 + 2(a1 + 2a0))**2 */
    if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) {
    e8841e64:	090c                	addi	a1,sp,144
    e8841e66:	1128                	addi	a0,sp,168
    e8841e68:	a30ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841e6c:	842a                	mv	s0,a0
    e8841e6e:	24051163          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) {
    e8841e72:	0910                	addi	a2,sp,144
    e8841e74:	018c                	addi	a1,sp,192
    e8841e76:	8532                	mv	a0,a2
    e8841e78:	fd2fd0ef          	jal	ra,e883f64a <mp_add>
    e8841e7c:	842a                	mv	s0,a0
    e8841e7e:	22051963          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) {
    e8841e82:	090c                	addi	a1,sp,144
    e8841e84:	852e                	mv	a0,a1
    e8841e86:	a12ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841e8a:	842a                	mv	s0,a0
    e8841e8c:	22051263          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) {
    e8841e90:	0910                	addi	a2,sp,144
    e8841e92:	09ac                	addi	a1,sp,216
    e8841e94:	8532                	mv	a0,a2
    e8841e96:	fb4fd0ef          	jal	ra,e883f64a <mp_add>
    e8841e9a:	842a                	mv	s0,a0
    e8841e9c:	20051a63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }

    if ((res = mp_sqr(&tmp1, &w1)) != MP_OKAY) {
    e8841ea0:	180c                	addi	a1,sp,48
    e8841ea2:	0908                	addi	a0,sp,144
    e8841ea4:	8c3ff0ef          	jal	ra,e8841766 <mp_sqr>
    e8841ea8:	842a                	mv	s0,a0
    e8841eaa:	20051363          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }

    /* w3 = (a0 + 2(a1 + 2a2))**2 */
    if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) {
    e8841eae:	090c                	addi	a1,sp,144
    e8841eb0:	09a8                	addi	a0,sp,216
    e8841eb2:	9e6ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841eb6:	842a                	mv	s0,a0
    e8841eb8:	1e051c63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) {
    e8841ebc:	0910                	addi	a2,sp,144
    e8841ebe:	018c                	addi	a1,sp,192
    e8841ec0:	8532                	mv	a0,a2
    e8841ec2:	f88fd0ef          	jal	ra,e883f64a <mp_add>
    e8841ec6:	842a                	mv	s0,a0
    e8841ec8:	1e051463          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) {
    e8841ecc:	090c                	addi	a1,sp,144
    e8841ece:	852e                	mv	a0,a1
    e8841ed0:	9c8ff0ef          	jal	ra,e8841098 <mp_mul_2>
    e8841ed4:	842a                	mv	s0,a0
    e8841ed6:	1c051d63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) {
    e8841eda:	0910                	addi	a2,sp,144
    e8841edc:	112c                	addi	a1,sp,168
    e8841ede:	8532                	mv	a0,a2
    e8841ee0:	f6afd0ef          	jal	ra,e883f64a <mp_add>
    e8841ee4:	842a                	mv	s0,a0
    e8841ee6:	1c051563          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }

    if ((res = mp_sqr(&tmp1, &w3)) != MP_OKAY) {
    e8841eea:	108c                	addi	a1,sp,96
    e8841eec:	0908                	addi	a0,sp,144
    e8841eee:	879ff0ef          	jal	ra,e8841766 <mp_sqr>
    e8841ef2:	842a                	mv	s0,a0
    e8841ef4:	1a051e63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }


    /* w2 = (a2 + a1 + a0)**2 */
    if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) {
    e8841ef8:	0910                	addi	a2,sp,144
    e8841efa:	018c                	addi	a1,sp,192
    e8841efc:	09a8                	addi	a0,sp,216
    e8841efe:	f4cfd0ef          	jal	ra,e883f64a <mp_add>
    e8841f02:	842a                	mv	s0,a0
    e8841f04:	1a051663          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) {
    e8841f08:	0910                	addi	a2,sp,144
    e8841f0a:	112c                	addi	a1,sp,168
    e8841f0c:	8532                	mv	a0,a2
    e8841f0e:	f3cfd0ef          	jal	ra,e883f64a <mp_add>
    e8841f12:	842a                	mv	s0,a0
    e8841f14:	18051e63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
       goto ERR;
    }
    if ((res = mp_sqr(&tmp1, &w2)) != MP_OKAY) {
    e8841f18:	00ac                	addi	a1,sp,72
    e8841f1a:	0908                	addi	a0,sp,144
    e8841f1c:	84bff0ef          	jal	ra,e8841766 <mp_sqr>
    e8841f20:	842a                	mv	s0,a0
    e8841f22:	18051763          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>

       using 12 subtractions, 4 shifts, 2 small divisions and 1 small multiplication.
     */

     /* r1 - r4 */
     if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) {
    e8841f26:	1810                	addi	a2,sp,48
    e8841f28:	18ac                	addi	a1,sp,120
    e8841f2a:	8532                	mv	a0,a2
    e8841f2c:	89fff0ef          	jal	ra,e88417ca <mp_sub>
    e8841f30:	842a                	mv	s0,a0
    e8841f32:	16051f63          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r3 - r0 */
     if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) {
    e8841f36:	1090                	addi	a2,sp,96
    e8841f38:	082c                	addi	a1,sp,24
    e8841f3a:	8532                	mv	a0,a2
    e8841f3c:	88fff0ef          	jal	ra,e88417ca <mp_sub>
    e8841f40:	842a                	mv	s0,a0
    e8841f42:	16051763          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r1/2 */
     if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) {
    e8841f46:	180c                	addi	a1,sp,48
    e8841f48:	852e                	mv	a0,a1
    e8841f4a:	d4dfd0ef          	jal	ra,e883fc96 <mp_div_2>
    e8841f4e:	842a                	mv	s0,a0
    e8841f50:	16051063          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r3/2 */
     if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) {
    e8841f54:	108c                	addi	a1,sp,96
    e8841f56:	852e                	mv	a0,a1
    e8841f58:	d3ffd0ef          	jal	ra,e883fc96 <mp_div_2>
    e8841f5c:	842a                	mv	s0,a0
    e8841f5e:	14051963          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r2 - r0 - r4 */
     if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) {
    e8841f62:	00b0                	addi	a2,sp,72
    e8841f64:	082c                	addi	a1,sp,24
    e8841f66:	8532                	mv	a0,a2
    e8841f68:	863ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841f6c:	842a                	mv	s0,a0
    e8841f6e:	14051163          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) {
    e8841f72:	00b0                	addi	a2,sp,72
    e8841f74:	18ac                	addi	a1,sp,120
    e8841f76:	8532                	mv	a0,a2
    e8841f78:	853ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841f7c:	842a                	mv	s0,a0
    e8841f7e:	12051963          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r1 - r2 */
     if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) {
    e8841f82:	1810                	addi	a2,sp,48
    e8841f84:	00ac                	addi	a1,sp,72
    e8841f86:	8532                	mv	a0,a2
    e8841f88:	843ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841f8c:	842a                	mv	s0,a0
    e8841f8e:	12051163          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r3 - r2 */
     if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) {
    e8841f92:	1090                	addi	a2,sp,96
    e8841f94:	00ac                	addi	a1,sp,72
    e8841f96:	8532                	mv	a0,a2
    e8841f98:	833ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841f9c:	842a                	mv	s0,a0
    e8841f9e:	10051963          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r1 - 8r0 */
     if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) {
    e8841fa2:	0910                	addi	a2,sp,144
    e8841fa4:	458d                	li	a1,3
    e8841fa6:	0828                	addi	a0,sp,24
    e8841fa8:	980ff0ef          	jal	ra,e8841128 <mp_mul_2d>
    e8841fac:	842a                	mv	s0,a0
    e8841fae:	10051163          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) {
    e8841fb2:	1810                	addi	a2,sp,48
    e8841fb4:	090c                	addi	a1,sp,144
    e8841fb6:	8532                	mv	a0,a2
    e8841fb8:	813ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841fbc:	842a                	mv	s0,a0
    e8841fbe:	0e051963          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r3 - 8r4 */
     if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) {
    e8841fc2:	0910                	addi	a2,sp,144
    e8841fc4:	458d                	li	a1,3
    e8841fc6:	18a8                	addi	a0,sp,120
    e8841fc8:	960ff0ef          	jal	ra,e8841128 <mp_mul_2d>
    e8841fcc:	842a                	mv	s0,a0
    e8841fce:	0e051163          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) {
    e8841fd2:	1090                	addi	a2,sp,96
    e8841fd4:	090c                	addi	a1,sp,144
    e8841fd6:	8532                	mv	a0,a2
    e8841fd8:	ff2ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841fdc:	842a                	mv	s0,a0
    e8841fde:	0c051963          	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* 3r2 - r1 - r3 */
     if ((res = mp_mul_d(&w2, 3, &w2)) != MP_OKAY) {
    e8841fe2:	00b0                	addi	a2,sp,72
    e8841fe4:	458d                	li	a1,3
    e8841fe6:	8532                	mv	a0,a2
    e8841fe8:	9f4ff0ef          	jal	ra,e88411dc <mp_mul_d>
    e8841fec:	842a                	mv	s0,a0
    e8841fee:	e169                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) {
    e8841ff0:	00b0                	addi	a2,sp,72
    e8841ff2:	180c                	addi	a1,sp,48
    e8841ff4:	8532                	mv	a0,a2
    e8841ff6:	fd4ff0ef          	jal	ra,e88417ca <mp_sub>
    e8841ffa:	842a                	mv	s0,a0
    e8841ffc:	e955                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) {
    e8841ffe:	00b0                	addi	a2,sp,72
    e8842000:	108c                	addi	a1,sp,96
    e8842002:	8532                	mv	a0,a2
    e8842004:	fc6ff0ef          	jal	ra,e88417ca <mp_sub>
    e8842008:	842a                	mv	s0,a0
    e884200a:	e15d                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r1 - r2 */
     if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) {
    e884200c:	1810                	addi	a2,sp,48
    e884200e:	00ac                	addi	a1,sp,72
    e8842010:	8532                	mv	a0,a2
    e8842012:	fb8ff0ef          	jal	ra,e88417ca <mp_sub>
    e8842016:	842a                	mv	s0,a0
    e8842018:	ed41                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r3 - r2 */
     if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) {
    e884201a:	1090                	addi	a2,sp,96
    e884201c:	00ac                	addi	a1,sp,72
    e884201e:	8532                	mv	a0,a2
    e8842020:	faaff0ef          	jal	ra,e88417ca <mp_sub>
    e8842024:	842a                	mv	s0,a0
    e8842026:	e549                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r1/3 */
     if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) {
    e8842028:	180c                	addi	a1,sp,48
    e884202a:	4601                	li	a2,0
    e884202c:	852e                	mv	a0,a1
    e884202e:	dcffd0ef          	jal	ra,e883fdfc <mp_div_3>
    e8842032:	842a                	mv	s0,a0
    e8842034:	ed35                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     /* r3/3 */
     if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) {
    e8842036:	108c                	addi	a1,sp,96
    e8842038:	4601                	li	a2,0
    e884203a:	852e                	mv	a0,a1
    e884203c:	dc1fd0ef          	jal	ra,e883fdfc <mp_div_3>
    e8842040:	842a                	mv	s0,a0
    e8842042:	e53d                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }

     /* at this point shift W[n] by B*n */
     if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) {
    e8842044:	85d6                	mv	a1,s5
    e8842046:	1808                	addi	a0,sp,48
    e8842048:	c7bfe0ef          	jal	ra,e8840cc2 <mp_lshd>
    e884204c:	842a                	mv	s0,a0
    e884204e:	e12d                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) {
    e8842050:	85ca                	mv	a1,s2
    e8842052:	00a8                	addi	a0,sp,72
    e8842054:	c6ffe0ef          	jal	ra,e8840cc2 <mp_lshd>
    e8842058:	842a                	mv	s0,a0
    e884205a:	e939                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) {
    e884205c:	458d                	li	a1,3
    e884205e:	035585bb          	mulw	a1,a1,s5
    e8842062:	1088                	addi	a0,sp,96
    e8842064:	c5ffe0ef          	jal	ra,e8840cc2 <mp_lshd>
    e8842068:	842a                	mv	s0,a0
    e884206a:	e139                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) {
    e884206c:	002a959b          	slliw	a1,s5,0x2
    e8842070:	18a8                	addi	a0,sp,120
    e8842072:	c51fe0ef          	jal	ra,e8840cc2 <mp_lshd>
    e8842076:	842a                	mv	s0,a0
    e8842078:	ed05                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }

     if ((res = mp_add(&w0, &w1, b)) != MP_OKAY) {
    e884207a:	8652                	mv	a2,s4
    e884207c:	180c                	addi	a1,sp,48
    e884207e:	0828                	addi	a0,sp,24
    e8842080:	dcafd0ef          	jal	ra,e883f64a <mp_add>
    e8842084:	842a                	mv	s0,a0
    e8842086:	e50d                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) {
    e8842088:	0910                	addi	a2,sp,144
    e884208a:	108c                	addi	a1,sp,96
    e884208c:	00a8                	addi	a0,sp,72
    e884208e:	dbcfd0ef          	jal	ra,e883f64a <mp_add>
    e8842092:	842a                	mv	s0,a0
    e8842094:	ed11                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) {
    e8842096:	0910                	addi	a2,sp,144
    e8842098:	85b2                	mv	a1,a2
    e884209a:	18a8                	addi	a0,sp,120
    e884209c:	daefd0ef          	jal	ra,e883f64a <mp_add>
    e88420a0:	842a                	mv	s0,a0
    e88420a2:	e519                	bnez	a0,e88420b0 <mp_toom_sqr+0x2fa>
        goto ERR;
     }
     if ((res = mp_add(&tmp1, b, b)) != MP_OKAY) {
    e88420a4:	8652                	mv	a2,s4
    e88420a6:	85d2                	mv	a1,s4
    e88420a8:	0908                	addi	a0,sp,144
    e88420aa:	da0fd0ef          	jal	ra,e883f64a <mp_add>
    e88420ae:	842a                	mv	s0,a0
        goto ERR;
     }

ERR:
     mp_clear_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL);
    e88420b0:	091c                	addi	a5,sp,144
    e88420b2:	e03e                	sd	a5,0(sp)
    e88420b4:	e402                	sd	zero,8(sp)
    e88420b6:	0d810893          	addi	a7,sp,216
    e88420ba:	0c010813          	addi	a6,sp,192
    e88420be:	113c                	addi	a5,sp,168
    e88420c0:	18b8                	addi	a4,sp,120
    e88420c2:	1094                	addi	a3,sp,96
    e88420c4:	00b0                	addi	a2,sp,72
    e88420c6:	180c                	addi	a1,sp,48
    e88420c8:	0828                	addi	a0,sp,24
    e88420ca:	f40fd0ef          	jal	ra,e883f80a <mp_clear_multi>
     return res;
}
    e88420ce:	8522                	mv	a0,s0
    e88420d0:	70b2                	ld	ra,296(sp)
    e88420d2:	7412                	ld	s0,288(sp)
    e88420d4:	64f2                	ld	s1,280(sp)
    e88420d6:	6952                	ld	s2,272(sp)
    e88420d8:	69b2                	ld	s3,264(sp)
    e88420da:	6a12                	ld	s4,256(sp)
    e88420dc:	7aee                	ld	s5,248(sp)
    e88420de:	6155                	addi	sp,sp,304
    e88420e0:	8082                	ret

00000000e88420e2 <mp_unsigned_bin_size>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* get the size for an unsigned equivalent */
int mp_unsigned_bin_size (mp_int * a)
{
    e88420e2:	1141                	addi	sp,sp,-16
    e88420e4:	e406                	sd	ra,8(sp)
  int     size = mp_count_bits (a);
    e88420e6:	859fd0ef          	jal	ra,e883f93e <mp_count_bits>
  return (size / 8 + ((size & 7) != 0 ? 1 : 0));
    e88420ea:	00757793          	andi	a5,a0,7
    e88420ee:	4721                	li	a4,8
    e88420f0:	02e5453b          	divw	a0,a0,a4
}
    e88420f4:	60a2                	ld	ra,8(sp)
  return (size / 8 + ((size & 7) != 0 ? 1 : 0));
    e88420f6:	00f037b3          	snez	a5,a5
}
    e88420fa:	0141                	addi	sp,sp,16
    e88420fc:	9d3d                	addw	a0,a0,a5
    e88420fe:	8082                	ret

00000000e8842100 <mp_zero>:
  mp_digit *tmp;

  a->sign = MP_ZPOS;
  a->used = 0;

  tmp = a->dp;
    e8842100:	6910                	ld	a2,16(a0)
  a->sign = MP_ZPOS;
    e8842102:	00052423          	sw	zero,8(a0)
  a->used = 0;
    e8842106:	00052023          	sw	zero,0(a0)
  for (n = 0; n < a->alloc; n++) {
    e884210a:	4781                	li	a5,0
    e884210c:	4154                	lw	a3,4(a0)
    e884210e:	0007871b          	sext.w	a4,a5
    e8842112:	00d74363          	blt	a4,a3,e8842118 <mp_zero+0x18>
     *tmp++ = 0;
  }
}
    e8842116:	8082                	ret
     *tmp++ = 0;
    e8842118:	66f6500b          	srd	zero,a2,a5,3
  for (n = 0; n < a->alloc; n++) {
    e884211c:	0785                	addi	a5,a5,1
    e884211e:	b7fd                	j	e884210c <mp_zero+0xc>

00000000e8842120 <bn_reverse>:
{
  int     ix, iy;
  unsigned char t;

  ix = 0;
  iy = len - 1;
    e8842120:	35fd                	addiw	a1,a1,-1
  ix = 0;
    e8842122:	4781                	li	a5,0
  while (ix < iy) {
    e8842124:	00b7c363          	blt	a5,a1,e884212a <bn_reverse+0xa>
    s[ix] = s[iy];
    s[iy] = t;
    ++ix;
    --iy;
  }
}
    e8842128:	8082                	ret
    s[ix] = s[iy];
    e884212a:	80b5468b          	lrbu	a3,a0,a1,0
    t     = s[ix];
    e884212e:	80f5470b          	lrbu	a4,a0,a5,0
    s[ix] = s[iy];
    e8842132:	00f5568b          	srb	a3,a0,a5,0
    ++ix;
    e8842136:	2785                	addiw	a5,a5,1
    s[iy] = t;
    e8842138:	00b5570b          	srb	a4,a0,a1,0
    --iy;
    e884213c:	35fd                	addiw	a1,a1,-1
    e884213e:	b7dd                	j	e8842124 <bn_reverse+0x4>

00000000e8842140 <s_mp_add>:
 */

/* low level addition, based on HAC pp.594, Algorithm 14.7 */
int
s_mp_add (mp_int * a, mp_int * b, mp_int * c)
{
    e8842140:	715d                	addi	sp,sp,-80
    e8842142:	f84a                	sd	s2,48(sp)
    e8842144:	f44e                	sd	s3,40(sp)
    e8842146:	f052                	sd	s4,32(sp)
    e8842148:	e486                	sd	ra,72(sp)
    e884214a:	e0a2                	sd	s0,64(sp)
    e884214c:	fc26                	sd	s1,56(sp)
    e884214e:	ec56                	sd	s5,24(sp)
  int     olduse, res, min, max;

  /* find sizes, we let |a| <= |b| which means we have to sort
   * them.  "x" will point to the input with the most digits
   */
  if (a->used > b->used) {
    e8842150:	4104                	lw	s1,0(a0)
    e8842152:	4180                	lw	s0,0(a1)
{
    e8842154:	892a                	mv	s2,a0
    e8842156:	89ae                	mv	s3,a1
    e8842158:	8a2a                	mv	s4,a0
  if (a->used > b->used) {
    e884215a:	00944663          	blt	s0,s1,e8842166 <s_mp_add+0x26>
    e884215e:	87a2                	mv	a5,s0
    max = a->used;
    x = a;
  } else {
    min = a->used;
    max = b->used;
    x = b;
    e8842160:	8a2e                	mv	s4,a1
  if (a->used > b->used) {
    e8842162:	8426                	mv	s0,s1
    e8842164:	84be                	mv	s1,a5
  }

  /* init result */
  if (c->alloc < max + 1) {
    e8842166:	425c                	lw	a5,4(a2)
    e8842168:	0014859b          	addiw	a1,s1,1
    e884216c:	8aae                	mv	s5,a1
    e884216e:	04b7c863          	blt	a5,a1,e88421be <s_mp_add+0x7e>
      return res;
    }
  }

  /* get old used digit count and set new one */
  olduse = c->used;
    e8842172:	00062803          	lw	a6,0(a2)

    /* second input */
    tmpb = b->dp;

    /* destination */
    tmpc = c->dp;
    e8842176:	6a1c                	ld	a5,16(a2)
  c->used = max + 1;
    e8842178:	01562023          	sw	s5,0(a2)
    tmpa = a->dp;
    e884217c:	01093503          	ld	a0,16(s2)
    tmpb = b->dp;
    e8842180:	0109b883          	ld	a7,16(s3)

    /* zero the carry */
    u = 0;
    for (i = 0; i < min; i++) {
    e8842184:	4681                	li	a3,0
    u = 0;
    e8842186:	4581                	li	a1,0
    for (i = 0; i < min; i++) {
    e8842188:	0006871b          	sext.w	a4,a3
    e884218c:	04874863          	blt	a4,s0,e88421dc <s_mp_add+0x9c>
    e8842190:	8722                	mv	a4,s0
    e8842192:	00045363          	bgez	s0,e8842198 <s_mp_add+0x58>
    e8842196:	4701                	li	a4,0
    e8842198:	00371693          	slli	a3,a4,0x3
    e884219c:	97b6                	add	a5,a5,a3
    }

    /* now copy higher words if any, that is in A+B 
     * if A or B has more digits add those in 
     */
    if (min != max) {
    e884219e:	00940663          	beq	s0,s1,e88421aa <s_mp_add+0x6a>
      for (; i < max; i++) {
    e88421a2:	00878513          	addi	a0,a5,8 # 8000008 <memcmp-0xe07ffff8>
    e88421a6:	04974963          	blt	a4,s1,e88421f8 <s_mp_add+0xb8>
        *tmpc++ &= MP_MASK;
      }
    }

    /* add carry */
    *tmpc++ = u;
    e88421aa:	7887d58b          	sdia	a1,(a5),8,0

    /* clear digits above oldused */
    for (i = c->used; i < olduse; i++) {
    e88421ae:	4218                	lw	a4,0(a2)
    e88421b0:	07074363          	blt	a4,a6,e8842216 <s_mp_add+0xd6>
      *tmpc++ = 0;
    }
  }

  mp_clamp (c);
    e88421b4:	8532                	mv	a0,a2
    e88421b6:	df8fd0ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e88421ba:	4501                	li	a0,0
    e88421bc:	a039                	j	e88421ca <s_mp_add+0x8a>
    if ((res = mp_grow (c, max + 1)) != MP_OKAY) {
    e88421be:	8532                	mv	a0,a2
    e88421c0:	e432                	sd	a2,8(sp)
    e88421c2:	b94fe0ef          	jal	ra,e8840556 <mp_grow>
    e88421c6:	6622                	ld	a2,8(sp)
    e88421c8:	d54d                	beqz	a0,e8842172 <s_mp_add+0x32>
}
    e88421ca:	60a6                	ld	ra,72(sp)
    e88421cc:	6406                	ld	s0,64(sp)
    e88421ce:	74e2                	ld	s1,56(sp)
    e88421d0:	7942                	ld	s2,48(sp)
    e88421d2:	79a2                	ld	s3,40(sp)
    e88421d4:	7a02                	ld	s4,32(sp)
    e88421d6:	6ae2                	ld	s5,24(sp)
    e88421d8:	6161                	addi	sp,sp,80
    e88421da:	8082                	ret
      *tmpc = *tmpa++ + *tmpb++ + u;
    e88421dc:	66d5470b          	lrd	a4,a0,a3,3
    e88421e0:	66d8c30b          	lrd	t1,a7,a3,3
    e88421e4:	971a                	add	a4,a4,t1
    e88421e6:	972e                	add	a4,a4,a1
      u = *tmpc >> ((mp_digit)DIGIT_BIT);
    e88421e8:	01c75593          	srli	a1,a4,0x1c
      *tmpc++ &= MP_MASK;
    e88421ec:	6c07370b          	extu	a4,a4,27,0
    e88421f0:	66d7d70b          	srd	a4,a5,a3,3
    for (i = 0; i < min; i++) {
    e88421f4:	0685                	addi	a3,a3,1
    e88421f6:	bf49                	j	e8842188 <s_mp_add+0x48>
        *tmpc = x->dp[i] + u;
    e88421f8:	010a3783          	ld	a5,16(s4)
      for (; i < max; i++) {
    e88421fc:	2705                	addiw	a4,a4,1
        *tmpc = x->dp[i] + u;
    e88421fe:	60d7c78b          	lrd	a5,a5,a3,0
    e8842202:	06a1                	addi	a3,a3,8
    e8842204:	97ae                	add	a5,a5,a1
        u = *tmpc >> ((mp_digit)DIGIT_BIT);
    e8842206:	01c7d593          	srli	a1,a5,0x1c
        *tmpc++ &= MP_MASK;
    e884220a:	6c07b78b          	extu	a5,a5,27,0
    e884220e:	fef53c23          	sd	a5,-8(a0)
    e8842212:	87aa                	mv	a5,a0
    e8842214:	b779                	j	e88421a2 <s_mp_add+0x62>
      *tmpc++ = 0;
    e8842216:	7887d00b          	sdia	zero,(a5),8,0
    for (i = c->used; i < olduse; i++) {
    e884221a:	2705                	addiw	a4,a4,1
    e884221c:	bf51                	j	e88421b0 <s_mp_add+0x70>

00000000e884221e <s_mp_exptmod>:
#else
   #define TAB_SIZE 256
#endif

int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode)
{
    e884221e:	7119                	addi	sp,sp,-128
    e8842220:	7379                	lui	t1,0xffffe
    e8842222:	f466                	sd	s9,40(sp)
    e8842224:	7a030313          	addi	t1,t1,1952 # ffffffffffffe7a0 <__DRAM0_INF_BASE+0xffffffff0000e7a0>
    e8842228:	f8a2                	sd	s0,112(sp)
    e884222a:	f4a6                	sd	s1,104(sp)
    e884222c:	ecce                	sd	s3,88(sp)
    e884222e:	f862                	sd	s8,48(sp)
    e8842230:	ec6e                	sd	s11,24(sp)
    e8842232:	fc86                	sd	ra,120(sp)
    e8842234:	f0ca                	sd	s2,96(sp)
    e8842236:	e8d2                	sd	s4,80(sp)
    e8842238:	e4d6                	sd	s5,72(sp)
    e884223a:	e0da                	sd	s6,64(sp)
    e884223c:	fc5e                	sd	s7,56(sp)
    e884223e:	f06a                	sd	s10,32(sp)
    e8842240:	8c2a                	mv	s8,a0
    e8842242:	911a                	add	sp,sp,t1
  mp_digit buf;
  int     err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize;
  int (*redux)(mp_int*,mp_int*,mp_int*);

  /* find window size */
  x = mp_count_bits (X);
    e8842244:	852e                	mv	a0,a1
{
    e8842246:	8dae                	mv	s11,a1
    e8842248:	84b2                	mv	s1,a2
    e884224a:	f436                	sd	a3,40(sp)
    e884224c:	89ba                	mv	s3,a4
  x = mp_count_bits (X);
    e884224e:	ef0fd0ef          	jal	ra,e883f93e <mp_count_bits>
  if (x <= 7) {
    winsize = 2;
    e8842252:	4409                	li	s0,2
  if (x <= 7) {
    e8842254:	479d                	li	a5,7
    e8842256:	02a7dc63          	bge	a5,a0,e884228e <s_mp_exptmod+0x70>
  } else if (x <= 36) {
    e884225a:	02400793          	li	a5,36
    winsize = 3;
    e884225e:	440d                	li	s0,3
  } else if (x <= 36) {
    e8842260:	02a7d763          	bge	a5,a0,e884228e <s_mp_exptmod+0x70>
  } else if (x <= 140) {
    e8842264:	08c00793          	li	a5,140
    winsize = 4;
    e8842268:	4411                	li	s0,4
  } else if (x <= 140) {
    e884226a:	02a7d263          	bge	a5,a0,e884228e <s_mp_exptmod+0x70>
  } else if (x <= 450) {
    e884226e:	1c200793          	li	a5,450
    winsize = 5;
    e8842272:	4415                	li	s0,5
  } else if (x <= 450) {
    e8842274:	00a7dd63          	bge	a5,a0,e884228e <s_mp_exptmod+0x70>
  } else if (x <= 1303) {
    e8842278:	51700793          	li	a5,1303
    winsize = 6;
    e884227c:	4419                	li	s0,6
  } else if (x <= 1303) {
    e884227e:	00a7d863          	bge	a5,a0,e884228e <s_mp_exptmod+0x70>
  } else if (x <= 3529) {
    e8842282:	6405                	lui	s0,0x1
    e8842284:	dc940413          	addi	s0,s0,-567 # dc9 <memcmp-0xe87ff237>
    winsize = 7;
  } else {
    winsize = 8;
    e8842288:	00a42433          	slt	s0,s0,a0
    e884228c:	041d                	addi	s0,s0,7
    }
#endif

  /* init M array */
  /* init first cell */
  if ((err = mp_init(&M[1])) != MP_OKAY) {
    e884228e:	6789                	lui	a5,0x2
    e8842290:	0098                	addi	a4,sp,64
    e8842292:	7a7d                	lui	s4,0xfffff
    e8842294:	83078793          	addi	a5,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e8842298:	97ba                	add	a5,a5,a4
    e884229a:	800a0a13          	addi	s4,s4,-2048 # ffffffffffffe800 <__DRAM0_INF_BASE+0xffffffff0000e800>
    e884229e:	9a3e                	add	s4,s4,a5
    e88422a0:	018a0513          	addi	a0,s4,24
    e88422a4:	b08fe0ef          	jal	ra,e88405ac <mp_init>
    e88422a8:	8d2a                	mv	s10,a0
    e88422aa:	ed5d                	bnez	a0,e8842368 <s_mp_exptmod+0x14a>
     return err; 
  }

  /* now init the second half of the array */
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    e88422ac:	4a85                	li	s5,1
    e88422ae:	fff40c9b          	addiw	s9,s0,-1
    e88422b2:	019a993b          	sllw	s2,s5,s9
    e88422b6:	47e1                	li	a5,24
    e88422b8:	20f91a0b          	mula	s4,s2,a5
    e88422bc:	c44a                	sw	s2,8(sp)
    e88422be:	008a9abb          	sllw	s5,s5,s0
    e88422c2:	8b4a                	mv	s6,s2
    e88422c4:	8bd2                	mv	s7,s4
    e88422c6:	8752                	mv	a4,s4
    e88422c8:	075b4b63          	blt	s6,s5,e884233e <s_mp_exptmod+0x120>
      return err;
    }
  }

  /* create mu, used for Barrett reduction */
  if ((err = mp_init (&mu)) != MP_OKAY) {
    e88422cc:	6709                	lui	a4,0x2
    e88422ce:	0094                	addi	a3,sp,64
    e88422d0:	77f9                	lui	a5,0xffffe
    e88422d2:	83070713          	addi	a4,a4,-2000 # 1830 <memcmp-0xe87fe7d0>
    e88422d6:	7e878793          	addi	a5,a5,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e88422da:	9736                	add	a4,a4,a3
    e88422dc:	00f70b33          	add	s6,a4,a5
    e88422e0:	855a                	mv	a0,s6
    e88422e2:	acafe0ef          	jal	ra,e88405ac <mp_init>
    e88422e6:	8d2a                	mv	s10,a0
    e88422e8:	e905                	bnez	a0,e8842318 <s_mp_exptmod+0xfa>
    goto LBL_M;
  }
  
  if (redmode == 0) {
    e88422ea:	0a099b63          	bnez	s3,e88423a0 <s_mp_exptmod+0x182>
     if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) {
    e88422ee:	85a6                	mv	a1,s1
    e88422f0:	855a                	mv	a0,s6
    e88422f2:	b74ff0ef          	jal	ra,e8841666 <mp_reduce_setup>
    e88422f6:	8d2a                	mv	s10,a0
        goto LBL_MU;
     }
     redux = mp_reduce;
    e88422f8:	fffff997          	auipc	s3,0xfffff
    e88422fc:	02c98993          	addi	s3,s3,44 # e8841324 <mp_reduce>
     if ((err = mp_reduce_setup (&mu, P)) != MP_OKAY) {
    e8842300:	c955                	beqz	a0,e88423b4 <s_mp_exptmod+0x196>
  }

  mp_exch (&res, Y);
  err = MP_OKAY;
LBL_RES:mp_clear (&res);
LBL_MU:mp_clear (&mu);
    e8842302:	6789                	lui	a5,0x2
    e8842304:	7579                	lui	a0,0xffffe
    e8842306:	83078793          	addi	a5,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e884230a:	0098                	addi	a4,sp,64
    e884230c:	7e850513          	addi	a0,a0,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e8842310:	97ba                	add	a5,a5,a4
    e8842312:	953e                	add	a0,a0,a5
    e8842314:	cbcfd0ef          	jal	ra,e883f7d0 <mp_clear>
LBL_M:
  mp_clear(&M[1]);
    e8842318:	6789                	lui	a5,0x2
    e884231a:	83078793          	addi	a5,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e884231e:	0098                	addi	a4,sp,64
    e8842320:	757d                	lui	a0,0xfffff
    e8842322:	97ba                	add	a5,a5,a4
    e8842324:	953e                	add	a0,a0,a5
    e8842326:	81850513          	addi	a0,a0,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    e884232a:	ca6fd0ef          	jal	ra,e883f7d0 <mp_clear>
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    e884232e:	03595d63          	bge	s2,s5,e8842368 <s_mp_exptmod+0x14a>
    mp_clear (&M[x]);
    e8842332:	855e                	mv	a0,s7
    e8842334:	c9cfd0ef          	jal	ra,e883f7d0 <mp_clear>
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    e8842338:	2905                	addiw	s2,s2,1
    e884233a:	0be1                	addi	s7,s7,24
    e884233c:	bfcd                	j	e884232e <s_mp_exptmod+0x110>
    if ((err = mp_init(&M[x])) != MP_OKAY) {
    e884233e:	853a                	mv	a0,a4
    e8842340:	e83a                	sd	a4,16(sp)
    e8842342:	a6afe0ef          	jal	ra,e88405ac <mp_init>
    e8842346:	8d2a                	mv	s10,a0
    e8842348:	6742                	ld	a4,16(sp)
    e884234a:	0761                	addi	a4,a4,24
    e884234c:	c921                	beqz	a0,e884239c <s_mp_exptmod+0x17e>
      for (y = 1<<(winsize-1); y < x; y++) {
    e884234e:	05694163          	blt	s2,s6,e8842390 <s_mp_exptmod+0x172>
      mp_clear(&M[1]);
    e8842352:	6789                	lui	a5,0x2
    e8842354:	83078793          	addi	a5,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e8842358:	0098                	addi	a4,sp,64
    e884235a:	757d                	lui	a0,0xfffff
    e884235c:	97ba                	add	a5,a5,a4
    e884235e:	953e                	add	a0,a0,a5
    e8842360:	81850513          	addi	a0,a0,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    e8842364:	c6cfd0ef          	jal	ra,e883f7d0 <mp_clear>
  }
  return err;
}
    e8842368:	6309                	lui	t1,0x2
    e884236a:	86030313          	addi	t1,t1,-1952 # 1860 <memcmp-0xe87fe7a0>
    e884236e:	911a                	add	sp,sp,t1
    e8842370:	70e6                	ld	ra,120(sp)
    e8842372:	856a                	mv	a0,s10
    e8842374:	7446                	ld	s0,112(sp)
    e8842376:	74a6                	ld	s1,104(sp)
    e8842378:	7906                	ld	s2,96(sp)
    e884237a:	69e6                	ld	s3,88(sp)
    e884237c:	6a46                	ld	s4,80(sp)
    e884237e:	6aa6                	ld	s5,72(sp)
    e8842380:	6b06                	ld	s6,64(sp)
    e8842382:	7be2                	ld	s7,56(sp)
    e8842384:	7c42                	ld	s8,48(sp)
    e8842386:	7ca2                	ld	s9,40(sp)
    e8842388:	7d02                	ld	s10,32(sp)
    e884238a:	6de2                	ld	s11,24(sp)
    e884238c:	6109                	addi	sp,sp,128
    e884238e:	8082                	ret
        mp_clear (&M[y]);
    e8842390:	855e                	mv	a0,s7
    e8842392:	c3efd0ef          	jal	ra,e883f7d0 <mp_clear>
      for (y = 1<<(winsize-1); y < x; y++) {
    e8842396:	2905                	addiw	s2,s2,1
    e8842398:	0be1                	addi	s7,s7,24
    e884239a:	bf55                	j	e884234e <s_mp_exptmod+0x130>
  for (x = 1<<(winsize-1); x < (1 << winsize); x++) {
    e884239c:	2b05                	addiw	s6,s6,1
    e884239e:	b72d                	j	e88422c8 <s_mp_exptmod+0xaa>
     if ((err = mp_reduce_2k_setup_l (P, &mu)) != MP_OKAY) {
    e88423a0:	85da                	mv	a1,s6
    e88423a2:	8526                	mv	a0,s1
    e88423a4:	9e4ff0ef          	jal	ra,e8841588 <mp_reduce_2k_setup_l>
    e88423a8:	8d2a                	mv	s10,a0
    e88423aa:	fd21                	bnez	a0,e8842302 <s_mp_exptmod+0xe4>
     redux = mp_reduce_2k_l;
    e88423ac:	fffff997          	auipc	s3,0xfffff
    e88423b0:	0fe98993          	addi	s3,s3,254 # e88414aa <mp_reduce_2k_l>
  if ((err = mp_mod (G, P, &M[1])) != MP_OKAY) {
    e88423b4:	6709                	lui	a4,0x2
    e88423b6:	0094                	addi	a3,sp,64
    e88423b8:	83070713          	addi	a4,a4,-2000 # 1830 <memcmp-0xe87fe7d0>
    e88423bc:	9736                	add	a4,a4,a3
    e88423be:	77fd                	lui	a5,0xfffff
    e88423c0:	97ba                	add	a5,a5,a4
    e88423c2:	81878b13          	addi	s6,a5,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    e88423c6:	865a                	mv	a2,s6
    e88423c8:	85a6                	mv	a1,s1
    e88423ca:	8562                	mv	a0,s8
    e88423cc:	96bfe0ef          	jal	ra,e8840d36 <mp_mod>
    e88423d0:	8d2a                	mv	s10,a0
    e88423d2:	f905                	bnez	a0,e8842302 <s_mp_exptmod+0xe4>
  if ((err = mp_copy (&M[1], &M[1 << (winsize - 1)])) != MP_OKAY) {
    e88423d4:	85d2                	mv	a1,s4
    e88423d6:	855a                	mv	a0,s6
    e88423d8:	cf8fd0ef          	jal	ra,e883f8d0 <mp_copy>
    e88423dc:	8d2a                	mv	s10,a0
    e88423de:	f115                	bnez	a0,e8842302 <s_mp_exptmod+0xe4>
    if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) {
    e88423e0:	6709                	lui	a4,0x2
    e88423e2:	83070793          	addi	a5,a4,-2000 # 1830 <memcmp-0xe87fe7d0>
    e88423e6:	7c79                	lui	s8,0xffffe
    e88423e8:	0098                	addi	a4,sp,64
    e88423ea:	7e8c0c13          	addi	s8,s8,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e88423ee:	97ba                	add	a5,a5,a4
  for (x = 0; x < (winsize - 1); x++) {
    e88423f0:	4b01                	li	s6,0
    if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) {
    e88423f2:	9c3e                	add	s8,s8,a5
    if ((err = mp_sqr (&M[1 << (winsize - 1)], 
    e88423f4:	85d2                	mv	a1,s4
    e88423f6:	8552                	mv	a0,s4
    e88423f8:	b6eff0ef          	jal	ra,e8841766 <mp_sqr>
    e88423fc:	8d2a                	mv	s10,a0
    e88423fe:	f00512e3          	bnez	a0,e8842302 <s_mp_exptmod+0xe4>
    if ((err = redux (&M[1 << (winsize - 1)], P, &mu)) != MP_OKAY) {
    e8842402:	8662                	mv	a2,s8
    e8842404:	85a6                	mv	a1,s1
    e8842406:	8552                	mv	a0,s4
    e8842408:	9982                	jalr	s3
    e884240a:	8d2a                	mv	s10,a0
    e884240c:	ee051be3          	bnez	a0,e8842302 <s_mp_exptmod+0xe4>
  for (x = 0; x < (winsize - 1); x++) {
    e8842410:	2b05                	addiw	s6,s6,1
    e8842412:	ff9b41e3          	blt	s6,s9,e88423f4 <s_mp_exptmod+0x1d6>
  for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) {
    e8842416:	47a2                	lw	a5,8(sp)
    e8842418:	4761                	li	a4,24
    if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) {
    e884241a:	6689                	lui	a3,0x2
  for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) {
    e884241c:	2785                	addiw	a5,a5,1
    e884241e:	41278cb3          	sub	s9,a5,s2
    if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) {
    e8842422:	0090                	addi	a2,sp,64
    e8842424:	02ec8cb3          	mul	s9,s9,a4
    e8842428:	83068713          	addi	a4,a3,-2000 # 1830 <memcmp-0xe87fe7d0>
    e884242c:	9732                	add	a4,a4,a2
    e884242e:	7c7d                	lui	s8,0xfffff
    e8842430:	9c3a                	add	s8,s8,a4
    if ((err = redux (&M[x], P, &mu)) != MP_OKAY) {
    e8842432:	7b79                	lui	s6,0xffffe
    e8842434:	83068713          	addi	a4,a3,-2000
    e8842438:	7e8b0b13          	addi	s6,s6,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
    e884243c:	9732                	add	a4,a4,a2
    if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) {
    e884243e:	818c0c13          	addi	s8,s8,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
    if ((err = redux (&M[x], P, &mu)) != MP_OKAY) {
    e8842442:	9b3a                	add	s6,s6,a4
  for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) {
    e8842444:	0f57cf63          	blt	a5,s5,e8842542 <s_mp_exptmod+0x324>
  if ((err = mp_init (&res)) != MP_OKAY) {
    e8842448:	6789                	lui	a5,0x2
    e884244a:	83078713          	addi	a4,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e884244e:	76f9                	lui	a3,0xffffe
    e8842450:	009c                	addi	a5,sp,64
    e8842452:	973e                	add	a4,a4,a5
    e8842454:	7d068613          	addi	a2,a3,2000 # ffffffffffffe7d0 <__DRAM0_INF_BASE+0xffffffff0000e7d0>
    e8842458:	00c70b33          	add	s6,a4,a2
    e884245c:	855a                	mv	a0,s6
    e884245e:	94efe0ef          	jal	ra,e88405ac <mp_init>
    e8842462:	7a79                	lui	s4,0xffffe
    e8842464:	8d2a                	mv	s10,a0
    e8842466:	e8051ee3          	bnez	a0,e8842302 <s_mp_exptmod+0xe4>
  mp_set (&res, 1);
    e884246a:	855a                	mv	a0,s6
    e884246c:	4585                	li	a1,1
    e884246e:	a7cff0ef          	jal	ra,e88416ea <mp_set>
        if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e8842472:	7e8a0a13          	addi	s4,s4,2024 # ffffffffffffe7e8 <__DRAM0_INF_BASE+0xffffffff0000e7e8>
        if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e8842476:	7779                	lui	a4,0xffffe
  bitcnt = 1;
    e8842478:	4605                	li	a2,1
        if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e884247a:	7d070713          	addi	a4,a4,2000 # ffffffffffffe7d0 <__DRAM0_INF_BASE+0xffffffff0000e7d0>
        if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e884247e:	6789                	lui	a5,0x2
  bitcnt = 1;
    e8842480:	e432                	sd	a2,8(sp)
        if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e8842482:	f03a                	sd	a4,32(sp)
        if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e8842484:	0090                	addi	a2,sp,64
    e8842486:	83078713          	addi	a4,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e884248a:	9732                	add	a4,a4,a2
    e884248c:	9752                	add	a4,a4,s4
  digidx = X->used - 1;
    e884248e:	000dac03          	lw	s8,0(s11)
        if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e8842492:	e83a                	sd	a4,16(sp)
      if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) {
    e8842494:	83078793          	addi	a5,a5,-2000
    e8842498:	777d                	lui	a4,0xfffff
    e884249a:	80070713          	addi	a4,a4,-2048 # ffffffffffffe800 <__DRAM0_INF_BASE+0xffffffff0000e800>
    e884249e:	97b2                	add	a5,a5,a2
    e88424a0:	97ba                	add	a5,a5,a4
  digidx = X->used - 1;
    e88424a2:	3c7d                	addiw	s8,s8,-1
  mode   = 0;
    e88424a4:	4681                	li	a3,0
  bitcpy = 0;
    e88424a6:	4b01                	li	s6,0
  buf    = 0;
    e88424a8:	4c81                	li	s9,0
      if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) {
    e88424aa:	f83e                	sd	a5,48(sp)
    if (--bitcnt == 0) {
    e88424ac:	67a2                	ld	a5,8(sp)
    e88424ae:	37fd                	addiw	a5,a5,-1
    e88424b0:	e43e                	sd	a5,8(sp)
    e88424b2:	eb99                	bnez	a5,e88424c8 <s_mp_exptmod+0x2aa>
      if (digidx == -1) {
    e88424b4:	577d                	li	a4,-1
    e88424b6:	0eec0a63          	beq	s8,a4,e88425aa <s_mp_exptmod+0x38c>
      buf    = X->dp[digidx--];
    e88424ba:	010db703          	ld	a4,16(s11)
      bitcnt = (int) DIGIT_BIT;
    e88424be:	47f1                	li	a5,28
    e88424c0:	e43e                	sd	a5,8(sp)
      buf    = X->dp[digidx--];
    e88424c2:	67874c8b          	lrd	s9,a4,s8,3
    e88424c6:	3c7d                	addiw	s8,s8,-1
    y     = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1;
    e88424c8:	6dbcb70b          	extu	a4,s9,27,27
    buf <<= (mp_digit)1;
    e88424cc:	0c86                	slli	s9,s9,0x1
    if (mode == 0 && y == 0) {
    e88424ce:	e6d5                	bnez	a3,e884257a <s_mp_exptmod+0x35c>
    e88424d0:	c35d                	beqz	a4,e8842576 <s_mp_exptmod+0x358>
    bitbuf |= (y << (winsize - ++bitcpy));
    e88424d2:	2b05                	addiw	s6,s6,1
    e88424d4:	416406bb          	subw	a3,s0,s6
    e88424d8:	00d7173b          	sllw	a4,a4,a3
    e88424dc:	00ed67b3          	or	a5,s10,a4
    e88424e0:	2781                	sext.w	a5,a5
    e88424e2:	ec3e                	sd	a5,24(sp)
    if (bitcpy == winsize) {
    e88424e4:	09641763          	bne	s0,s6,e8842572 <s_mp_exptmod+0x354>
        if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e88424e8:	0098                	addi	a4,sp,64
    e88424ea:	6789                	lui	a5,0x2
    e88424ec:	83078793          	addi	a5,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e88424f0:	97ba                	add	a5,a5,a4
    e88424f2:	7702                	ld	a4,32(sp)
      for (x = 0; x < winsize; x++) {
    e88424f4:	4681                	li	a3,0
        if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e88424f6:	00e78a33          	add	s4,a5,a4
    e88424fa:	85d2                	mv	a1,s4
    e88424fc:	8552                	mv	a0,s4
    e88424fe:	fc36                	sd	a3,56(sp)
    e8842500:	a66ff0ef          	jal	ra,e8841766 <mp_sqr>
    e8842504:	8d2a                	mv	s10,a0
    e8842506:	e171                	bnez	a0,e88425ca <s_mp_exptmod+0x3ac>
        if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e8842508:	6642                	ld	a2,16(sp)
    e884250a:	85a6                	mv	a1,s1
    e884250c:	8552                	mv	a0,s4
    e884250e:	9982                	jalr	s3
    e8842510:	8d2a                	mv	s10,a0
    e8842512:	ed45                	bnez	a0,e88425ca <s_mp_exptmod+0x3ac>
      for (x = 0; x < winsize; x++) {
    e8842514:	76e2                	ld	a3,56(sp)
    e8842516:	2685                	addiw	a3,a3,1
    e8842518:	ff66c1e3          	blt	a3,s6,e88424fa <s_mp_exptmod+0x2dc>
      if ((err = mp_mul (&res, &M[bitbuf], &res)) != MP_OKAY) {
    e884251c:	75c2                	ld	a1,48(sp)
    e884251e:	6762                	ld	a4,24(sp)
    e8842520:	47e1                	li	a5,24
    e8842522:	8652                	mv	a2,s4
    e8842524:	20f7158b          	mula	a1,a4,a5
    e8842528:	8552                	mv	a0,s4
    e884252a:	ad7fe0ef          	jal	ra,e8841000 <mp_mul>
    e884252e:	8d2a                	mv	s10,a0
    e8842530:	ed49                	bnez	a0,e88425ca <s_mp_exptmod+0x3ac>
      if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e8842532:	6642                	ld	a2,16(sp)
    e8842534:	85a6                	mv	a1,s1
    e8842536:	8552                	mv	a0,s4
    e8842538:	9982                	jalr	s3
    e884253a:	8d2a                	mv	s10,a0
    e884253c:	e559                	bnez	a0,e88425ca <s_mp_exptmod+0x3ac>
      bitcpy = 0;
    e884253e:	4b01                	li	s6,0
    e8842540:	a09d                	j	e88425a6 <s_mp_exptmod+0x388>
    e8842542:	014c8733          	add	a4,s9,s4
    if ((err = mp_mul (&M[x - 1], &M[1], &M[x])) != MP_OKAY) {
    e8842546:	863a                	mv	a2,a4
    e8842548:	85e2                	mv	a1,s8
    e884254a:	8552                	mv	a0,s4
    e884254c:	e83e                	sd	a5,16(sp)
    e884254e:	e43a                	sd	a4,8(sp)
    e8842550:	ab1fe0ef          	jal	ra,e8841000 <mp_mul>
    e8842554:	8d2a                	mv	s10,a0
    e8842556:	da0516e3          	bnez	a0,e8842302 <s_mp_exptmod+0xe4>
    if ((err = redux (&M[x], P, &mu)) != MP_OKAY) {
    e884255a:	6722                	ld	a4,8(sp)
    e884255c:	865a                	mv	a2,s6
    e884255e:	85a6                	mv	a1,s1
    e8842560:	853a                	mv	a0,a4
    e8842562:	9982                	jalr	s3
    e8842564:	8d2a                	mv	s10,a0
    e8842566:	0a61                	addi	s4,s4,24
    e8842568:	d8051de3          	bnez	a0,e8842302 <s_mp_exptmod+0xe4>
  for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) {
    e884256c:	67c2                	ld	a5,16(sp)
    e884256e:	2785                	addiw	a5,a5,1
    e8842570:	bdd1                	j	e8842444 <s_mp_exptmod+0x226>
    bitbuf |= (y << (winsize - ++bitcpy));
    e8842572:	6d62                	ld	s10,24(sp)
    mode    = 2;
    e8842574:	4709                	li	a4,2
      mode   = 1;
    e8842576:	86ba                	mv	a3,a4
    e8842578:	bf15                	j	e88424ac <s_mp_exptmod+0x28e>
    if (mode == 1 && y == 0) {
    e884257a:	4605                	li	a2,1
    e884257c:	f4c69be3          	bne	a3,a2,e88424d2 <s_mp_exptmod+0x2b4>
    e8842580:	fb29                	bnez	a4,e88424d2 <s_mp_exptmod+0x2b4>
      if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e8842582:	0098                	addi	a4,sp,64
    e8842584:	6789                	lui	a5,0x2
    e8842586:	83078793          	addi	a5,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e884258a:	97ba                	add	a5,a5,a4
    e884258c:	7702                	ld	a4,32(sp)
    e884258e:	00e78a33          	add	s4,a5,a4
    e8842592:	85d2                	mv	a1,s4
    e8842594:	8552                	mv	a0,s4
    e8842596:	9d0ff0ef          	jal	ra,e8841766 <mp_sqr>
    e884259a:	e169                	bnez	a0,e884265c <s_mp_exptmod+0x43e>
      if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e884259c:	6642                	ld	a2,16(sp)
    e884259e:	85a6                	mv	a1,s1
    e88425a0:	8552                	mv	a0,s4
    e88425a2:	9982                	jalr	s3
    e88425a4:	ed45                	bnez	a0,e884265c <s_mp_exptmod+0x43e>
      mode   = 1;
    e88425a6:	4705                	li	a4,1
    e88425a8:	b7f9                	j	e8842576 <s_mp_exptmod+0x358>
  if (mode == 2 && bitcpy > 0) {
    e88425aa:	4709                	li	a4,2
    e88425ac:	02e68b63          	beq	a3,a4,e88425e2 <s_mp_exptmod+0x3c4>
  mp_exch (&res, Y);
    e88425b0:	6789                	lui	a5,0x2
    e88425b2:	0098                	addi	a4,sp,64
    e88425b4:	75a2                	ld	a1,40(sp)
    e88425b6:	7579                	lui	a0,0xffffe
    e88425b8:	83078793          	addi	a5,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e88425bc:	97ba                	add	a5,a5,a4
    e88425be:	7d050513          	addi	a0,a0,2000 # ffffffffffffe7d0 <__DRAM0_INF_BASE+0xffffffff0000e7d0>
    e88425c2:	953e                	add	a0,a0,a5
    e88425c4:	9d5fd0ef          	jal	ra,e883ff98 <mp_exch>
  err = MP_OKAY;
    e88425c8:	4d01                	li	s10,0
LBL_RES:mp_clear (&res);
    e88425ca:	6789                	lui	a5,0x2
    e88425cc:	0098                	addi	a4,sp,64
    e88425ce:	7579                	lui	a0,0xffffe
    e88425d0:	83078793          	addi	a5,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e88425d4:	97ba                	add	a5,a5,a4
    e88425d6:	7d050513          	addi	a0,a0,2000 # ffffffffffffe7d0 <__DRAM0_INF_BASE+0xffffffff0000e7d0>
    e88425da:	953e                	add	a0,a0,a5
    e88425dc:	9f4fd0ef          	jal	ra,e883f7d0 <mp_clear>
    e88425e0:	b30d                	j	e8842302 <s_mp_exptmod+0xe4>
  if (mode == 2 && bitcpy > 0) {
    e88425e2:	fd6057e3          	blez	s6,e88425b0 <s_mp_exptmod+0x392>
      if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e88425e6:	6789                	lui	a5,0x2
    e88425e8:	0094                	addi	a3,sp,64
    e88425ea:	83078713          	addi	a4,a5,-2000 # 1830 <memcmp-0xe87fe7d0>
    e88425ee:	7a79                	lui	s4,0xffffe
    e88425f0:	9736                	add	a4,a4,a3
    e88425f2:	7d0a0413          	addi	s0,s4,2000 # ffffffffffffe7d0 <__DRAM0_INF_BASE+0xffffffff0000e7d0>
    e88425f6:	943a                	add	s0,s0,a4
      if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e88425f8:	83078713          	addi	a4,a5,-2000
        if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) {
    e88425fc:	83078793          	addi	a5,a5,-2000
    e8842600:	7cfd                	lui	s9,0xfffff
    e8842602:	97b6                	add	a5,a5,a3
      if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e8842604:	7e8a0a13          	addi	s4,s4,2024
    e8842608:	9736                	add	a4,a4,a3
        if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) {
    e884260a:	9cbe                	add	s9,s9,a5
    for (x = 0; x < bitcpy; x++) {
    e884260c:	4d81                	li	s11,0
    e884260e:	8c6a                	mv	s8,s10
      if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e8842610:	9a3a                	add	s4,s4,a4
        if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) {
    e8842612:	818c8c93          	addi	s9,s9,-2024 # ffffffffffffe818 <__DRAM0_INF_BASE+0xffffffff0000e818>
      if ((err = mp_sqr (&res, &res)) != MP_OKAY) {
    e8842616:	85a2                	mv	a1,s0
    e8842618:	8522                	mv	a0,s0
    e884261a:	94cff0ef          	jal	ra,e8841766 <mp_sqr>
    e884261e:	8d2a                	mv	s10,a0
    e8842620:	f54d                	bnez	a0,e88425ca <s_mp_exptmod+0x3ac>
      if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e8842622:	8652                	mv	a2,s4
    e8842624:	85a6                	mv	a1,s1
    e8842626:	8522                	mv	a0,s0
    e8842628:	9982                	jalr	s3
    e884262a:	8d2a                	mv	s10,a0
    e884262c:	fd59                	bnez	a0,e88425ca <s_mp_exptmod+0x3ac>
      bitbuf <<= 1;
    e884262e:	001c1c1b          	slliw	s8,s8,0x1
      if ((bitbuf & (1 << winsize)) != 0) {
    e8842632:	018af7b3          	and	a5,s5,s8
    e8842636:	e789                	bnez	a5,e8842640 <s_mp_exptmod+0x422>
    for (x = 0; x < bitcpy; x++) {
    e8842638:	2d85                	addiw	s11,s11,1
    e884263a:	fdbb1ee3          	bne	s6,s11,e8842616 <s_mp_exptmod+0x3f8>
    e884263e:	bf8d                	j	e88425b0 <s_mp_exptmod+0x392>
        if ((err = mp_mul (&res, &M[1], &res)) != MP_OKAY) {
    e8842640:	8622                	mv	a2,s0
    e8842642:	85e6                	mv	a1,s9
    e8842644:	8522                	mv	a0,s0
    e8842646:	9bbfe0ef          	jal	ra,e8841000 <mp_mul>
    e884264a:	8d2a                	mv	s10,a0
    e884264c:	fd3d                	bnez	a0,e88425ca <s_mp_exptmod+0x3ac>
        if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e884264e:	8652                	mv	a2,s4
    e8842650:	85a6                	mv	a1,s1
    e8842652:	8522                	mv	a0,s0
    e8842654:	9982                	jalr	s3
    e8842656:	8d2a                	mv	s10,a0
    e8842658:	d165                	beqz	a0,e8842638 <s_mp_exptmod+0x41a>
    e884265a:	bf85                	j	e88425ca <s_mp_exptmod+0x3ac>
      if ((err = redux (&res, P, &mu)) != MP_OKAY) {
    e884265c:	8d2a                	mv	s10,a0
    e884265e:	b7b5                	j	e88425ca <s_mp_exptmod+0x3ac>

00000000e8842660 <s_mp_mul_digs>:
/* multiplies |a| * |b| and only computes upto digs digits of result
 * HAC pp. 595, Algorithm 14.12  Modified so you can control how 
 * many digits of output are created.
 */
int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
{
    e8842660:	715d                	addi	sp,sp,-80
    e8842662:	e0a2                	sd	s0,64(sp)
    e8842664:	fc26                	sd	s1,56(sp)
    e8842666:	f44e                	sd	s3,40(sp)
    e8842668:	f052                	sd	s4,32(sp)
    e884266a:	e486                	sd	ra,72(sp)
    e884266c:	f84a                	sd	s2,48(sp)
  mp_digit u;
  mp_word r;
  mp_digit tmpx, *tmpt, *tmpy;

  /* can we use the fast multiplier? */
  if (((digs) < MP_WARRAY) &&
    e884266e:	1ff00793          	li	a5,511
{
    e8842672:	89aa                	mv	s3,a0
    e8842674:	8a2e                	mv	s4,a1
    e8842676:	84b2                	mv	s1,a2
    e8842678:	8436                	mv	s0,a3
  if (((digs) < MP_WARRAY) &&
    e884267a:	02d7c963          	blt	a5,a3,e88426ac <s_mp_mul_digs+0x4c>
      MIN (a->used, b->used) < 
    e884267e:	00052803          	lw	a6,0(a0)
    e8842682:	419c                	lw	a5,0(a1)
    e8842684:	00f82733          	slt	a4,a6,a5
    e8842688:	42e8178b          	mvnez	a5,a6,a4
  if (((digs) < MP_WARRAY) &&
    e884268c:	0ff00713          	li	a4,255
    e8842690:	00f74e63          	blt	a4,a5,e88426ac <s_mp_mul_digs+0x4c>
          (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) {
    return fast_s_mp_mul_digs (a, b, c, digs);
    e8842694:	bcffc0ef          	jal	ra,e883f262 <fast_s_mp_mul_digs>
    e8842698:	892a                	mv	s2,a0
  mp_clamp (&t);
  mp_exch (&t, c);

  mp_clear (&t);
  return MP_OKAY;
}
    e884269a:	60a6                	ld	ra,72(sp)
    e884269c:	6406                	ld	s0,64(sp)
    e884269e:	854a                	mv	a0,s2
    e88426a0:	74e2                	ld	s1,56(sp)
    e88426a2:	7942                	ld	s2,48(sp)
    e88426a4:	79a2                	ld	s3,40(sp)
    e88426a6:	7a02                	ld	s4,32(sp)
    e88426a8:	6161                	addi	sp,sp,80
    e88426aa:	8082                	ret
  if ((res = mp_init_size (&t, digs)) != MP_OKAY) {
    e88426ac:	85a2                	mv	a1,s0
    e88426ae:	0028                	addi	a0,sp,8
    e88426b0:	fc9fd0ef          	jal	ra,e8840678 <mp_init_size>
    e88426b4:	892a                	mv	s2,a0
    e88426b6:	f175                	bnez	a0,e884269a <s_mp_mul_digs+0x3a>
  pa = a->used;
    e88426b8:	0009a803          	lw	a6,0(s3)
  t.used = digs;
    e88426bc:	c422                	sw	s0,8(sp)
  for (ix = 0; ix < pa; ix++) {
    e88426be:	4601                	li	a2,0
    e88426c0:	0006051b          	sext.w	a0,a2
    e88426c4:	01054d63          	blt	a0,a6,e88426de <s_mp_mul_digs+0x7e>
  mp_clamp (&t);
    e88426c8:	0028                	addi	a0,sp,8
    e88426ca:	8e4fd0ef          	jal	ra,e883f7ae <mp_clamp>
  mp_exch (&t, c);
    e88426ce:	0028                	addi	a0,sp,8
    e88426d0:	85a6                	mv	a1,s1
    e88426d2:	8c7fd0ef          	jal	ra,e883ff98 <mp_exch>
  mp_clear (&t);
    e88426d6:	0028                	addi	a0,sp,8
    e88426d8:	8f8fd0ef          	jal	ra,e883f7d0 <mp_clear>
  return MP_OKAY;
    e88426dc:	bf7d                	j	e884269a <s_mp_mul_digs+0x3a>
    pb = MIN (b->used, digs - ix);
    e88426de:	000a2783          	lw	a5,0(s4)
    e88426e2:	40a405bb          	subw	a1,s0,a0
    tmpy = b->dp;
    e88426e6:	010a3e03          	ld	t3,16(s4)
    pb = MIN (b->used, digs - ix);
    e88426ea:	00f5a6b3          	slt	a3,a1,a5
    e88426ee:	42d5978b          	mvnez	a5,a1,a3
    e88426f2:	873e                	mv	a4,a5
    tmpt = t.dp + ix;
    e88426f4:	65e2                	ld	a1,24(sp)
    tmpx = a->dp[ix];
    e88426f6:	0109b783          	ld	a5,16(s3)
    for (iy = 0; iy < pb; iy++) {
    e88426fa:	4681                	li	a3,0
    tmpt = t.dp + ix;
    e88426fc:	06c5958b          	addsl	a1,a1,a2,3
    tmpx = a->dp[ix];
    e8842700:	66c7c30b          	lrd	t1,a5,a2,3
    u = 0;
    e8842704:	4781                	li	a5,0
    for (iy = 0; iy < pb; iy++) {
    e8842706:	0006889b          	sext.w	a7,a3
    e884270a:	00e8cf63          	blt	a7,a4,e8842728 <s_mp_mul_digs+0xc8>
    e884270e:	86ba                	mv	a3,a4
    e8842710:	00075363          	bgez	a4,e8842716 <s_mp_mul_digs+0xb6>
    e8842714:	4681                	li	a3,0
    e8842716:	0006871b          	sext.w	a4,a3
    if (ix + iy < digs) {
    e884271a:	9ea9                	addw	a3,a3,a0
    e884271c:	0086d463          	bge	a3,s0,e8842724 <s_mp_mul_digs+0xc4>
      *tmpt = u;
    e8842720:	66e5d78b          	srd	a5,a1,a4,3
  for (ix = 0; ix < pa; ix++) {
    e8842724:	0605                	addi	a2,a2,1
    e8842726:	bf69                	j	e88426c0 <s_mp_mul_digs+0x60>
      r       = ((mp_word)*tmpt) +
    e8842728:	66d5c88b          	lrd	a7,a1,a3,3
    e884272c:	97c6                	add	a5,a5,a7
                ((mp_word)tmpx) * ((mp_word)*tmpy++) +
    e884272e:	66de488b          	lrd	a7,t3,a3,3
      r       = ((mp_word)*tmpt) +
    e8842732:	2113178b          	mula	a5,t1,a7
      *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK));
    e8842736:	6c07b88b          	extu	a7,a5,27,0
    e884273a:	66d5d88b          	srd	a7,a1,a3,3
      u       = (mp_digit) (r >> ((mp_word) DIGIT_BIT));
    e884273e:	83f1                	srli	a5,a5,0x1c
    for (iy = 0; iy < pb; iy++) {
    e8842740:	0685                	addi	a3,a3,1
    e8842742:	b7d1                	j	e8842706 <s_mp_mul_digs+0xa6>

00000000e8842744 <s_mp_mul_high_digs>:
/* multiplies |a| * |b| and does not compute the lower digs digits
 * [meant to get the higher part of the product]
 */
int
s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs)
{
    e8842744:	715d                	addi	sp,sp,-80
    e8842746:	e0a2                	sd	s0,64(sp)
    e8842748:	fc26                	sd	s1,56(sp)
    e884274a:	f44e                	sd	s3,40(sp)
    e884274c:	f052                	sd	s4,32(sp)
    e884274e:	e486                	sd	ra,72(sp)
    e8842750:	f84a                	sd	s2,48(sp)
  mp_word r;
  mp_digit tmpx, *tmpt, *tmpy;

  /* can we use the fast multiplier? */
#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C
  if (((a->used + b->used + 1) < MP_WARRAY)
    e8842752:	0005a803          	lw	a6,0(a1)
    e8842756:	00052883          	lw	a7,0(a0)
    e884275a:	1ff00793          	li	a5,511
    e884275e:	0018071b          	addiw	a4,a6,1
    e8842762:	0117073b          	addw	a4,a4,a7
{
    e8842766:	89aa                	mv	s3,a0
    e8842768:	8a2e                	mv	s4,a1
    e884276a:	84b2                	mv	s1,a2
    e884276c:	8436                	mv	s0,a3
  if (((a->used + b->used + 1) < MP_WARRAY)
    e884276e:	02e7c763          	blt	a5,a4,e884279c <s_mp_mul_high_digs+0x58>
      && MIN (a->used, b->used) < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) {
    e8842772:	011827b3          	slt	a5,a6,a7
    e8842776:	40f8980b          	mveqz	a6,a7,a5
    e884277a:	87c2                	mv	a5,a6
    e884277c:	0ff00813          	li	a6,255
    e8842780:	00f84e63          	blt	a6,a5,e884279c <s_mp_mul_high_digs+0x58>
    return fast_s_mp_mul_high_digs (a, b, c, digs);
    e8842784:	c03fc0ef          	jal	ra,e883f386 <fast_s_mp_mul_high_digs>
    e8842788:	892a                	mv	s2,a0
  }
  mp_clamp (&t);
  mp_exch (&t, c);
  mp_clear (&t);
  return MP_OKAY;
}
    e884278a:	60a6                	ld	ra,72(sp)
    e884278c:	6406                	ld	s0,64(sp)
    e884278e:	854a                	mv	a0,s2
    e8842790:	74e2                	ld	s1,56(sp)
    e8842792:	7942                	ld	s2,48(sp)
    e8842794:	79a2                	ld	s3,40(sp)
    e8842796:	7a02                	ld	s4,32(sp)
    e8842798:	6161                	addi	sp,sp,80
    e884279a:	8082                	ret
  if ((res = mp_init_size (&t, a->used + b->used + 1)) != MP_OKAY) {
    e884279c:	85ba                	mv	a1,a4
    e884279e:	0028                	addi	a0,sp,8
    e88427a0:	ed9fd0ef          	jal	ra,e8840678 <mp_init_size>
    e88427a4:	892a                	mv	s2,a0
    e88427a6:	f175                	bnez	a0,e884278a <s_mp_mul_high_digs+0x46>
  t.used = a->used + b->used + 1;
    e88427a8:	000a2883          	lw	a7,0(s4)
    e88427ac:	0009a803          	lw	a6,0(s3)
    tmpt = &(t.dp[digs]);
    e88427b0:	00341313          	slli	t1,s0,0x3
  t.used = a->used + b->used + 1;
    e88427b4:	0018879b          	addiw	a5,a7,1
    e88427b8:	010787bb          	addw	a5,a5,a6
    e88427bc:	c43e                	sw	a5,8(sp)
  for (ix = 0; ix < pa; ix++) {
    e88427be:	0004069b          	sext.w	a3,s0
    e88427c2:	4581                	li	a1,0
    e88427c4:	0005879b          	sext.w	a5,a1
    e88427c8:	0107cd63          	blt	a5,a6,e88427e2 <s_mp_mul_high_digs+0x9e>
  mp_clamp (&t);
    e88427cc:	0028                	addi	a0,sp,8
    e88427ce:	fe1fc0ef          	jal	ra,e883f7ae <mp_clamp>
  mp_exch (&t, c);
    e88427d2:	0028                	addi	a0,sp,8
    e88427d4:	85a6                	mv	a1,s1
    e88427d6:	fc2fd0ef          	jal	ra,e883ff98 <mp_exch>
  mp_clear (&t);
    e88427da:	0028                	addi	a0,sp,8
    e88427dc:	ff5fc0ef          	jal	ra,e883f7d0 <mp_clear>
  return MP_OKAY;
    e88427e0:	b76d                	j	e884278a <s_mp_mul_high_digs+0x46>
    tmpx = a->dp[ix];
    e88427e2:	0109b783          	ld	a5,16(s3)
    tmpt = &(t.dp[digs]);
    e88427e6:	6662                	ld	a2,24(sp)
    tmpy = b->dp + (digs - ix);
    e88427e8:	010a3503          	ld	a0,16(s4)
    tmpx = a->dp[ix];
    e88427ec:	66b7cf0b          	lrd	t5,a5,a1,3
    tmpt = &(t.dp[digs]);
    e88427f0:	961a                	add	a2,a2,t1
    tmpy = b->dp + (digs - ix);
    e88427f2:	06d5150b          	addsl	a0,a0,a3,3
    for (iy = digs - ix; iy < pb; iy++) {
    e88427f6:	4701                	li	a4,0
    u = 0;
    e88427f8:	4781                	li	a5,0
    for (iy = digs - ix; iy < pb; iy++) {
    e88427fa:	00d70ebb          	addw	t4,a4,a3
    e88427fe:	06e61e0b          	addsl	t3,a2,a4,3
    e8842802:	011ec763          	blt	t4,a7,e8842810 <s_mp_mul_high_digs+0xcc>
    *tmpt = u;
    e8842806:	00fe3023          	sd	a5,0(t3) # fffffffffc000000 <__DRAM0_INF_BASE+0xfffffffefc010000>
  for (ix = 0; ix < pa; ix++) {
    e884280a:	0585                	addi	a1,a1,1
    e884280c:	36fd                	addiw	a3,a3,-1
    e884280e:	bf5d                	j	e88427c4 <s_mp_mul_high_digs+0x80>
      r       = ((mp_word)*tmpt) +
    e8842810:	66e64e0b          	lrd	t3,a2,a4,3
    e8842814:	97f2                	add	a5,a5,t3
                ((mp_word)tmpx) * ((mp_word)*tmpy++) +
    e8842816:	66e54e0b          	lrd	t3,a0,a4,3
      r       = ((mp_word)*tmpt) +
    e884281a:	21cf178b          	mula	a5,t5,t3
      *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK));
    e884281e:	6c07be0b          	extu	t3,a5,27,0
    e8842822:	66e65e0b          	srd	t3,a2,a4,3
      u       = (mp_digit) (r >> ((mp_word) DIGIT_BIT));
    e8842826:	83f1                	srli	a5,a5,0x1c
    for (iy = digs - ix; iy < pb; iy++) {
    e8842828:	0705                	addi	a4,a4,1
    e884282a:	bfc1                	j	e88427fa <s_mp_mul_high_digs+0xb6>

00000000e884282c <s_mp_sqr>:
 * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
 */

/* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */
int s_mp_sqr (mp_int * a, mp_int * b)
{
    e884282c:	715d                	addi	sp,sp,-80
    e884282e:	e0a2                	sd	s0,64(sp)
    e8842830:	f84a                	sd	s2,48(sp)
    e8842832:	f44e                	sd	s3,40(sp)
    e8842834:	f052                	sd	s4,32(sp)
    e8842836:	e486                	sd	ra,72(sp)
    e8842838:	fc26                	sd	s1,56(sp)
  mp_int  t;
  int     res, ix, iy, pa;
  mp_word r;
  mp_digit u, tmpx, *tmpt;

  pa = a->used;
    e884283a:	4104                	lw	s1,0(a0)
{
    e884283c:	892a                	mv	s2,a0
    e884283e:	842e                	mv	s0,a1
  if ((res = mp_init_size (&t, 2*pa + 1)) != MP_OKAY) {
    e8842840:	0014999b          	slliw	s3,s1,0x1
    e8842844:	0019859b          	addiw	a1,s3,1
    e8842848:	0028                	addi	a0,sp,8
    e884284a:	89ae                	mv	s3,a1
    e884284c:	e2dfd0ef          	jal	ra,e8840678 <mp_init_size>
    e8842850:	8a2a                	mv	s4,a0
    e8842852:	e105                	bnez	a0,e8842872 <s_mp_sqr+0x46>
    return res;
  }

  /* default used is maximum possible size */
  t.used = 2*pa + 1;
    e8842854:	c44e                	sw	s3,8(sp)

  for (ix = 0; ix < pa; ix++) {
    e8842856:	4681                	li	a3,0
    e8842858:	4581                	li	a1,0
    e884285a:	0296c563          	blt	a3,s1,e8842884 <s_mp_sqr+0x58>
      *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK));
      u       = (mp_digit)(r >> ((mp_word) DIGIT_BIT));
    }
  }

  mp_clamp (&t);
    e884285e:	0028                	addi	a0,sp,8
    e8842860:	f4ffc0ef          	jal	ra,e883f7ae <mp_clamp>
  mp_exch (&t, b);
    e8842864:	0028                	addi	a0,sp,8
    e8842866:	85a2                	mv	a1,s0
    e8842868:	f30fd0ef          	jal	ra,e883ff98 <mp_exch>
  mp_clear (&t);
    e884286c:	0028                	addi	a0,sp,8
    e884286e:	f63fc0ef          	jal	ra,e883f7d0 <mp_clear>
  return MP_OKAY;
}
    e8842872:	60a6                	ld	ra,72(sp)
    e8842874:	6406                	ld	s0,64(sp)
    e8842876:	8552                	mv	a0,s4
    e8842878:	74e2                	ld	s1,56(sp)
    e884287a:	7942                	ld	s2,48(sp)
    e884287c:	79a2                	ld	s3,40(sp)
    e884287e:	7a02                	ld	s4,32(sp)
    e8842880:	6161                	addi	sp,sp,80
    e8842882:	8082                	ret
    r = ((mp_word) t.dp[2*ix]) +
    e8842884:	6562                	ld	a0,24(sp)
        ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]);
    e8842886:	01093783          	ld	a5,16(s2)
    r = ((mp_word) t.dp[2*ix]) +
    e884288a:	0016961b          	slliw	a2,a3,0x1
    e884288e:	00361713          	slli	a4,a2,0x3
        ((mp_word)a->dp[ix])*((mp_word)a->dp[ix]);
    e8842892:	60b7c80b          	lrd	a6,a5,a1,0
    r = ((mp_word) t.dp[2*ix]) +
    e8842896:	66c5478b          	lrd	a5,a0,a2,3
    for (iy = ix + 1; iy < pa; iy++) {
    e884289a:	2685                	addiw	a3,a3,1
    e884289c:	00369313          	slli	t1,a3,0x3
    r = ((mp_word) t.dp[2*ix]) +
    e88428a0:	2108178b          	mula	a5,a6,a6
    t.dp[ix+ix] = (mp_digit) (r & ((mp_word) MP_MASK));
    e88428a4:	6c07b80b          	extu	a6,a5,27,0
    e88428a8:	66c5580b          	srd	a6,a0,a2,3
    tmpx        = a->dp[ix];
    e88428ac:	01093603          	ld	a2,16(s2)
    u           = (mp_digit)(r >> ((mp_word) DIGIT_BIT));
    e88428b0:	83f1                	srli	a5,a5,0x1c
    for (iy = ix + 1; iy < pa; iy++) {
    e88428b2:	8536                	mv	a0,a3
    tmpx        = a->dp[ix];
    e88428b4:	60b6488b          	lrd	a7,a2,a1,0
    tmpt        = t.dp + (2*ix + 1);
    e88428b8:	00870613          	addi	a2,a4,8
    e88428bc:	6762                	ld	a4,24(sp)
    e88428be:	9732                	add	a4,a4,a2
    for (iy = ix + 1; iy < pa; iy++) {
    e88428c0:	4601                	li	a2,0
    e88428c2:	00951b63          	bne	a0,s1,e88428d8 <s_mp_sqr+0xac>
    e88428c6:	40d4863b          	subw	a2,s1,a3
    e88428ca:	7c06360b          	extu	a2,a2,31,0
    e88428ce:	06c7170b          	addsl	a4,a4,a2,3
    while (u != ((mp_digit) 0)) {
    e88428d2:	e79d                	bnez	a5,e8842900 <s_mp_sqr+0xd4>
    e88428d4:	05a1                	addi	a1,a1,8
    e88428d6:	b751                	j	e884285a <s_mp_sqr+0x2e>
      r       = ((mp_word)tmpx) * ((mp_word)a->dp[iy]);
    e88428d8:	01093803          	ld	a6,16(s2)
      r       = ((mp_word) *tmpt) + r + r + ((mp_word) u);
    e88428dc:	60c74e0b          	lrd	t3,a4,a2,0
    for (iy = ix + 1; iy < pa; iy++) {
    e88428e0:	2505                	addiw	a0,a0,1
      r       = ((mp_word)tmpx) * ((mp_word)a->dp[iy]);
    e88428e2:	9832                	add	a6,a6,a2
      r       = ((mp_word) *tmpt) + r + r + ((mp_word) u);
    e88428e4:	6068480b          	lrd	a6,a6,t1,0
    e88428e8:	97f2                	add	a5,a5,t3
    e88428ea:	03088833          	mul	a6,a7,a6
    e88428ee:	0307978b          	addsl	a5,a5,a6,1
      *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK));
    e88428f2:	6c07b80b          	extu	a6,a5,27,0
    e88428f6:	60c7580b          	srd	a6,a4,a2,0
      u       = (mp_digit)(r >> ((mp_word) DIGIT_BIT));
    e88428fa:	83f1                	srli	a5,a5,0x1c
    for (iy = ix + 1; iy < pa; iy++) {
    e88428fc:	0621                	addi	a2,a2,8
    e88428fe:	b7d1                	j	e88428c2 <s_mp_sqr+0x96>
      r       = ((mp_word) *tmpt) + ((mp_word) u);
    e8842900:	6310                	ld	a2,0(a4)
    e8842902:	97b2                	add	a5,a5,a2
      *tmpt++ = (mp_digit) (r & ((mp_word) MP_MASK));
    e8842904:	6c07b60b          	extu	a2,a5,27,0
    e8842908:	7887560b          	sdia	a2,(a4),8,0
      u       = (mp_digit)(r >> ((mp_word) DIGIT_BIT));
    e884290c:	83f1                	srli	a5,a5,0x1c
    e884290e:	b7d1                	j	e88428d2 <s_mp_sqr+0xa6>

00000000e8842910 <s_mp_sub>:
 */

/* low level subtraction (assumes |a| > |b|), HAC pp.595 Algorithm 14.9 */
int
s_mp_sub (mp_int * a, mp_int * b, mp_int * c)
{
    e8842910:	7139                	addi	sp,sp,-64
    e8842912:	f44a                	sd	s2,40(sp)
    e8842914:	f84e                	sd	s3,48(sp)
    e8842916:	fc06                	sd	ra,56(sp)
    e8842918:	ec22                	sd	s0,24(sp)
    e884291a:	f026                	sd	s1,32(sp)
  int     olduse, res, min, max;

  /* find sizes */
  min = b->used;
  max = a->used;
    e884291c:	4100                	lw	s0,0(a0)

  /* init result */
  if (c->alloc < max) {
    e884291e:	425c                	lw	a5,4(a2)
{
    e8842920:	892a                	mv	s2,a0
    e8842922:	89ae                	mv	s3,a1
  min = b->used;
    e8842924:	4184                	lw	s1,0(a1)
  if (c->alloc < max) {
    e8842926:	0487cb63          	blt	a5,s0,e884297c <s_mp_sub+0x6c>
    if ((res = mp_grow (c, max)) != MP_OKAY) {
      return res;
    }
  }
  olduse = c->used;
    e884292a:	00062883          	lw	a7,0(a2)
    register int i;

    /* alias for digit pointers */
    tmpa = a->dp;
    tmpb = b->dp;
    tmpc = c->dp;
    e884292e:	6a08                	ld	a0,16(a2)
  c->used = max;
    e8842930:	c200                	sw	s0,0(a2)
    tmpa = a->dp;
    e8842932:	01093683          	ld	a3,16(s2)
    tmpb = b->dp;
    e8842936:	0109b583          	ld	a1,16(s3)

    /* set carry to zero */
    u = 0;
    for (i = 0; i < min; i++) {
    e884293a:	4701                	li	a4,0
    u = 0;
    e884293c:	4801                	li	a6,0
    for (i = 0; i < min; i++) {
    e884293e:	0007079b          	sext.w	a5,a4
    e8842942:	0497cb63          	blt	a5,s1,e8842998 <s_mp_sub+0x88>
    e8842946:	85a6                	mv	a1,s1
    e8842948:	0004d363          	bgez	s1,e884294e <s_mp_sub+0x3e>
    e884294c:	4581                	li	a1,0
    e884294e:	00359713          	slli	a4,a1,0x3
    e8842952:	00e687b3          	add	a5,a3,a4
    e8842956:	953a                	add	a0,a0,a4
    e8842958:	4701                	li	a4,0
      /* Clear carry from T[i] */
      *tmpc++ &= MP_MASK;
    }

    /* now copy higher words if any, e.g. if A has more digits than B  */
    for (; i < max; i++) {
    e884295a:	00b706bb          	addw	a3,a4,a1
    e884295e:	06e5130b          	addsl	t1,a0,a4,3
    e8842962:	0486cb63          	blt	a3,s0,e88429b8 <s_mp_sub+0xa8>
      /* Clear carry from T[i] */
      *tmpc++ &= MP_MASK;
    }

    /* clear digits above used (since we may not have grown result above) */
    for (i = c->used; i < olduse; i++) {
    e8842966:	4214                	lw	a3,0(a2)
    e8842968:	4781                	li	a5,0
    e884296a:	00d7873b          	addw	a4,a5,a3
    e884296e:	07174163          	blt	a4,a7,e88429d0 <s_mp_sub+0xc0>
      *tmpc++ = 0;
    }
  }

  mp_clamp (c);
    e8842972:	8532                	mv	a0,a2
    e8842974:	e3bfc0ef          	jal	ra,e883f7ae <mp_clamp>
  return MP_OKAY;
    e8842978:	4501                	li	a0,0
    e884297a:	a801                	j	e884298a <s_mp_sub+0x7a>
    if ((res = mp_grow (c, max)) != MP_OKAY) {
    e884297c:	8532                	mv	a0,a2
    e884297e:	85a2                	mv	a1,s0
    e8842980:	e432                	sd	a2,8(sp)
    e8842982:	bd5fd0ef          	jal	ra,e8840556 <mp_grow>
    e8842986:	6622                	ld	a2,8(sp)
    e8842988:	d14d                	beqz	a0,e884292a <s_mp_sub+0x1a>
}
    e884298a:	70e2                	ld	ra,56(sp)
    e884298c:	6462                	ld	s0,24(sp)
    e884298e:	7482                	ld	s1,32(sp)
    e8842990:	7922                	ld	s2,40(sp)
    e8842992:	79c2                	ld	s3,48(sp)
    e8842994:	6121                	addi	sp,sp,64
    e8842996:	8082                	ret
      *tmpc = *tmpa++ - *tmpb++ - u;
    e8842998:	66e6c78b          	lrd	a5,a3,a4,3
    e884299c:	410787b3          	sub	a5,a5,a6
    e88429a0:	66e5c80b          	lrd	a6,a1,a4,3
    e88429a4:	410787b3          	sub	a5,a5,a6
      u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1));
    e88429a8:	03f7d813          	srli	a6,a5,0x3f
      *tmpc++ &= MP_MASK;
    e88429ac:	6c07b78b          	extu	a5,a5,27,0
    e88429b0:	66e5578b          	srd	a5,a0,a4,3
    for (i = 0; i < min; i++) {
    e88429b4:	0705                	addi	a4,a4,1
    e88429b6:	b761                	j	e884293e <s_mp_sub+0x2e>
      *tmpc = *tmpa++ - u;
    e88429b8:	66e7c68b          	lrd	a3,a5,a4,3
    e88429bc:	410686b3          	sub	a3,a3,a6
      u = *tmpc >> ((mp_digit)(CHAR_BIT * sizeof (mp_digit) - 1));
    e88429c0:	03f6d813          	srli	a6,a3,0x3f
      *tmpc++ &= MP_MASK;
    e88429c4:	6c06b68b          	extu	a3,a3,27,0
    e88429c8:	66e5568b          	srd	a3,a0,a4,3
    for (; i < max; i++) {
    e88429cc:	0705                	addi	a4,a4,1
    e88429ce:	b771                	j	e884295a <s_mp_sub+0x4a>
      *tmpc++ = 0;
    e88429d0:	66f3500b          	srd	zero,t1,a5,3
    for (i = c->used; i < olduse; i++) {
    e88429d4:	0785                	addi	a5,a5,1
    e88429d6:	bf51                	j	e884296a <s_mp_sub+0x5a>

00000000e88429d8 <Cfree>:
 * to a function than are called for, as long as the required arguments
 * are in proper form.  If extra arguments to malloc() and free() cause
 * problems, define PEDANTIC_ARGS below.
 */
static void * Cmalloc(size_t n, void * heap) { (void) heap; return malloc(n); } // APPLE MODIFICATION: Use size_t
static void Cfree(void * p, void * heap) { (void) heap; free(p); }
    e88429d8:	1293906f          	j	e887c300 <eLIBs_free>

00000000e88429dc <Cmalloc>:
static void * Cmalloc(size_t n, void * heap) { (void) heap; return malloc(n); } // APPLE MODIFICATION: Use size_t
    e88429dc:	6733806f          	j	e887b84e <my_malloc>

00000000e88429e0 <cstr_alloc>:
static int
cstr_alloc(cstr * str, int len)
{
  char * t;

  if(len > str->cap) {
    e88429e0:	455c                	lw	a5,12(a0)
    e88429e2:	06b7dc63          	bge	a5,a1,e8842a5a <cstr_alloc+0x7a>
{
    e88429e6:	1101                	addi	sp,sp,-32
    e88429e8:	ec06                	sd	ra,24(sp)
    e88429ea:	e84a                	sd	s2,16(sp)
    e88429ec:	f891540b          	sdd	s0,s1,(sp),0,4
    e88429f0:	4691                	li	a3,4
    e88429f2:	872e                	mv	a4,a1
    e88429f4:	00d5d363          	bge	a1,a3,e88429fa <cstr_alloc+0x1a>
    e88429f8:	4711                	li	a4,4
    e88429fa:	0007069b          	sext.w	a3,a4
    if(len < EXPFACTOR * str->cap)
    e88429fe:	0017979b          	slliw	a5,a5,0x1
    e8842a02:	842a                	mv	s0,a0
    e8842a04:	853e                	mv	a0,a5
    e8842a06:	00d7a7b3          	slt	a5,a5,a3
    e8842a0a:	42f7150b          	mvnez	a0,a4,a5
      len = EXPFACTOR * str->cap;
    if(len < MINSIZE)
      len = MINSIZE;

    t = (char *) (*str->allocator->alloc)(((size_t)len) * sizeof(char),
    e8842a0e:	6c1c                	ld	a5,24(s0)
    e8842a10:	0005049b          	sext.w	s1,a0
    e8842a14:	8526                	mv	a0,s1
    e8842a16:	6398                	ld	a4,0(a5)
    e8842a18:	6b8c                	ld	a1,16(a5)
    e8842a1a:	9702                	jalr	a4
    e8842a1c:	892a                	mv	s2,a0
      str->data = t;
      str->cap = len;
      return 1;
    }
    else
      return -1;
    e8842a1e:	57fd                	li	a5,-1
    if(t) {
    e8842a20:	c515                	beqz	a0,e8842a4c <cstr_alloc+0x6c>
      if(str->data) {
    e8842a22:	601c                	ld	a5,0(s0)
    e8842a24:	c385                	beqz	a5,e8842a44 <cstr_alloc+0x64>
	t[str->length] = 0;
    e8842a26:	441c                	lw	a5,8(s0)
    e8842a28:	00f5500b          	srb	zero,a0,a5,0
	if(str->cap > 0) {
    e8842a2c:	445c                	lw	a5,12(s0)
    e8842a2e:	00f05b63          	blez	a5,e8842a44 <cstr_alloc+0x64>
	  if(str->length > 0)
    e8842a32:	4410                	lw	a2,8(s0)
    e8842a34:	00c05563          	blez	a2,e8842a3e <cstr_alloc+0x5e>
	    memcpy(t, str->data, str->length);
    e8842a38:	600c                	ld	a1,0(s0)
    e8842a3a:	167390ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	  free(str->data);
    e8842a3e:	6008                	ld	a0,0(s0)
    e8842a40:	0c1390ef          	jal	ra,e887c300 <eLIBs_free>
      str->data = t;
    e8842a44:	01243023          	sd	s2,0(s0)
      str->cap = len;
    e8842a48:	c444                	sw	s1,12(s0)
      return 1;
    e8842a4a:	4785                	li	a5,1
  }
  else
    return 0;
}
    e8842a4c:	60e2                	ld	ra,24(sp)
    e8842a4e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8842a52:	6942                	ld	s2,16(sp)
    e8842a54:	853e                	mv	a0,a5
    e8842a56:	6105                	addi	sp,sp,32
    e8842a58:	8082                	ret
    return 0;
    e8842a5a:	4781                	li	a5,0
}
    e8842a5c:	853e                	mv	a0,a5
    e8842a5e:	8082                	ret

00000000e8842a60 <cstr_new_alloc>:
{
    e8842a60:	1141                	addi	sp,sp,-16
    e8842a62:	e022                	sd	s0,0(sp)
    e8842a64:	e406                	sd	ra,8(sp)
    e8842a66:	842a                	mv	s0,a0
  if(alloc == NULL) {
    e8842a68:	ed09                	bnez	a0,e8842a82 <cstr_new_alloc+0x22>
    if(default_alloc == NULL) {
    e8842a6a:	000a1797          	auipc	a5,0xa1
    e8842a6e:	11678793          	addi	a5,a5,278 # e88e3b80 <default_alloc>
    e8842a72:	6398                	ld	a4,0(a5)
    e8842a74:	e711                	bnez	a4,e8842a80 <cstr_new_alloc+0x20>
      default_alloc = &malloc_allocator;
    e8842a76:	00092717          	auipc	a4,0x92
    e8842a7a:	02a70713          	addi	a4,a4,42 # e88d4aa0 <malloc_allocator>
    e8842a7e:	e398                	sd	a4,0(a5)
    alloc = default_alloc;
    e8842a80:	6380                	ld	s0,0(a5)
  str = (cstr *) (*alloc->alloc)(sizeof(cstr), alloc->heap);
    e8842a82:	601c                	ld	a5,0(s0)
    e8842a84:	680c                	ld	a1,16(s0)
    e8842a86:	02000513          	li	a0,32
    e8842a8a:	9782                	jalr	a5
  if(str) {
    e8842a8c:	c919                	beqz	a0,e8842aa2 <cstr_new_alloc+0x42>
    str->data = cstr_empty_string;
    e8842a8e:	000a1797          	auipc	a5,0xa1
    e8842a92:	0ea78793          	addi	a5,a5,234 # e88e3b78 <cstr_empty_string>
    e8842a96:	e11c                	sd	a5,0(a0)
    str->ref = 1;
    e8842a98:	4785                	li	a5,1
    str->length = str->cap = 0;
    e8842a9a:	00053423          	sd	zero,8(a0)
    str->ref = 1;
    e8842a9e:	c91c                	sw	a5,16(a0)
    str->allocator = alloc;
    e8842aa0:	ed00                	sd	s0,24(a0)
}
    e8842aa2:	60a2                	ld	ra,8(sp)
    e8842aa4:	6402                	ld	s0,0(sp)
    e8842aa6:	0141                	addi	sp,sp,16
    e8842aa8:	8082                	ret

00000000e8842aaa <cstr_new>:
  return cstr_new_alloc(NULL);
    e8842aaa:	4501                	li	a0,0
    e8842aac:	fb5ff06f          	j	e8842a60 <cstr_new_alloc>

00000000e8842ab0 <cstr_clear_free>:
  if(--str->ref == 0) {
    e8842ab0:	491c                	lw	a5,16(a0)
    e8842ab2:	fff7871b          	addiw	a4,a5,-1
    e8842ab6:	c918                	sw	a4,16(a0)
    e8842ab8:	eb15                	bnez	a4,e8842aec <cstr_clear_free+0x3c>
{
    e8842aba:	1141                	addi	sp,sp,-16
    e8842abc:	e022                	sd	s0,0(sp)
    e8842abe:	e406                	sd	ra,8(sp)
    if(str->cap > 0) {
    e8842ac0:	4550                	lw	a2,12(a0)
    e8842ac2:	842a                	mv	s0,a0
    e8842ac4:	00c05b63          	blez	a2,e8842ada <cstr_clear_free+0x2a>
      memset(str->data, 0, str->cap);
    e8842ac8:	6108                	ld	a0,0(a0)
    e8842aca:	4581                	li	a1,0
    e8842acc:	0c9390ef          	jal	ra,e887c394 <eLIBs_memset>
      (*str->allocator->free)(str->data, str->allocator->heap);
    e8842ad0:	6c1c                	ld	a5,24(s0)
    e8842ad2:	6008                	ld	a0,0(s0)
    e8842ad4:	6798                	ld	a4,8(a5)
    e8842ad6:	6b8c                	ld	a1,16(a5)
    e8842ad8:	9702                	jalr	a4
    (*str->allocator->free)(str, str->allocator->heap);
    e8842ada:	6c1c                	ld	a5,24(s0)
    e8842adc:	8522                	mv	a0,s0
}
    e8842ade:	6402                	ld	s0,0(sp)
    e8842ae0:	60a2                	ld	ra,8(sp)
    (*str->allocator->free)(str, str->allocator->heap);
    e8842ae2:	0087b303          	ld	t1,8(a5)
    e8842ae6:	6b8c                	ld	a1,16(a5)
}
    e8842ae8:	0141                	addi	sp,sp,16
    (*str->allocator->free)(str, str->allocator->heap);
    e8842aea:	8302                	jr	t1
    e8842aec:	8082                	ret

00000000e8842aee <cstr_detach>:
  *outPtr = (uint8_t *)str->data;
    e8842aee:	611c                	ld	a5,0(a0)
    e8842af0:	e19c                	sd	a5,0(a1)
  *outLen = (size_t)str->length;
    e8842af2:	451c                	lw	a5,8(a0)
    e8842af4:	e21c                	sd	a5,0(a2)
  str->length = str->cap = 0;
    e8842af6:	00053423          	sd	zero,8(a0)
}
    e8842afa:	8082                	ret

00000000e8842afc <cstr_free>:
  if(--str->ref == 0) {
    e8842afc:	491c                	lw	a5,16(a0)
    e8842afe:	fff7871b          	addiw	a4,a5,-1
    e8842b02:	c918                	sw	a4,16(a0)
    e8842b04:	e715                	bnez	a4,e8842b30 <cstr_free+0x34>
{
    e8842b06:	1141                	addi	sp,sp,-16
    e8842b08:	e022                	sd	s0,0(sp)
    e8842b0a:	e406                	sd	ra,8(sp)
    if(str->cap > 0)
    e8842b0c:	455c                	lw	a5,12(a0)
    e8842b0e:	842a                	mv	s0,a0
    e8842b10:	00f05763          	blez	a5,e8842b1e <cstr_free+0x22>
    e8842b14:	6d1c                	ld	a5,24(a0)
      (*str->allocator->free)(str->data, str->allocator->heap);
    e8842b16:	6108                	ld	a0,0(a0)
    e8842b18:	6798                	ld	a4,8(a5)
    e8842b1a:	6b8c                	ld	a1,16(a5)
    e8842b1c:	9702                	jalr	a4
    (*str->allocator->free)(str, str->allocator->heap);
    e8842b1e:	6c1c                	ld	a5,24(s0)
    e8842b20:	8522                	mv	a0,s0
}
    e8842b22:	6402                	ld	s0,0(sp)
    e8842b24:	60a2                	ld	ra,8(sp)
    (*str->allocator->free)(str, str->allocator->heap);
    e8842b26:	0087b303          	ld	t1,8(a5)
    e8842b2a:	6b8c                	ld	a1,16(a5)
}
    e8842b2c:	0141                	addi	sp,sp,16
    (*str->allocator->free)(str, str->allocator->heap);
    e8842b2e:	8302                	jr	t1
    e8842b30:	8082                	ret

00000000e8842b32 <cstr_setn>:
  return cstr_setn(str, s, (int) strlen(s)); // APPLE MODIFICATION: Added int cast to fix warning.
}

_TYPE( int )
cstr_setn(cstr * str, const char * s, int len)
{
    e8842b32:	1101                	addi	sp,sp,-32
    e8842b34:	e84a                	sd	s2,16(sp)
    e8842b36:	892e                	mv	s2,a1
  if(cstr_alloc(str, len + 1) < 0)
    e8842b38:	0016059b          	addiw	a1,a2,1
{
    e8842b3c:	f891540b          	sdd	s0,s1,(sp),0,4
    e8842b40:	ec06                	sd	ra,24(sp)
    e8842b42:	84aa                	mv	s1,a0
    e8842b44:	8432                	mv	s0,a2
  if(cstr_alloc(str, len + 1) < 0)
    e8842b46:	e9bff0ef          	jal	ra,e88429e0 <cstr_alloc>
    e8842b4a:	02054663          	bltz	a0,e8842b76 <cstr_setn+0x44>
    return -1;
  str->data[len] = 0;
    e8842b4e:	609c                	ld	a5,0(s1)
    e8842b50:	0087d00b          	srb	zero,a5,s0,0
  if(s != NULL && len > 0)
    e8842b54:	00090963          	beqz	s2,e8842b66 <cstr_setn+0x34>
    e8842b58:	00805763          	blez	s0,e8842b66 <cstr_setn+0x34>
    memmove(str->data, s, len);
    e8842b5c:	6088                	ld	a0,0(s1)
    e8842b5e:	8622                	mv	a2,s0
    e8842b60:	85ca                	mv	a1,s2
    e8842b62:	04b390ef          	jal	ra,e887c3ac <eLIBs_memmove>
  str->length = len;
    e8842b66:	c480                	sw	s0,8(s1)
  return 1;
    e8842b68:	4505                	li	a0,1
}
    e8842b6a:	60e2                	ld	ra,24(sp)
    e8842b6c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8842b70:	6942                	ld	s2,16(sp)
    e8842b72:	6105                	addi	sp,sp,32
    e8842b74:	8082                	ret
    return -1;
    e8842b76:	557d                	li	a0,-1
    e8842b78:	bfcd                	j	e8842b6a <cstr_setn+0x38>

00000000e8842b7a <cstr_set_length>:

_TYPE( int )
cstr_set_length(cstr * str, int len)
{
    e8842b7a:	1101                	addi	sp,sp,-32
    e8842b7c:	f891540b          	sdd	s0,s1,(sp),0,4
    e8842b80:	ec06                	sd	ra,24(sp)
    e8842b82:	e84a                	sd	s2,16(sp)
  if(len < str->length) {
    e8842b84:	4514                	lw	a3,8(a0)
{
    e8842b86:	842a                	mv	s0,a0
  if(len < str->length) {
    e8842b88:	00d5de63          	bge	a1,a3,e8842ba4 <cstr_set_length+0x2a>
    str->data[len] = 0;
    e8842b8c:	6118                	ld	a4,0(a0)
    e8842b8e:	00b7500b          	srb	zero,a4,a1,0
    str->length = len;
    e8842b92:	c50c                	sw	a1,8(a0)
  else if(len > str->length) {
    if(cstr_alloc(str, len + 1) < 0)
      return -1;
    memset(str->data + str->length, 0, len - str->length + 1);
    str->length = len;
    return 1;
    e8842b94:	4705                	li	a4,1
  }
  else
    return 0;
}
    e8842b96:	60e2                	ld	ra,24(sp)
    e8842b98:	f891440b          	ldd	s0,s1,(sp),0,4
    e8842b9c:	6942                	ld	s2,16(sp)
    e8842b9e:	853a                	mv	a0,a4
    e8842ba0:	6105                	addi	sp,sp,32
    e8842ba2:	8082                	ret
    return 0;
    e8842ba4:	4701                	li	a4,0
  else if(len > str->length) {
    e8842ba6:	feb6d8e3          	bge	a3,a1,e8842b96 <cstr_set_length+0x1c>
    e8842baa:	84ae                	mv	s1,a1
    if(cstr_alloc(str, len + 1) < 0)
    e8842bac:	2585                	addiw	a1,a1,1
    e8842bae:	892e                	mv	s2,a1
    e8842bb0:	e31ff0ef          	jal	ra,e88429e0 <cstr_alloc>
      return -1;
    e8842bb4:	577d                	li	a4,-1
    if(cstr_alloc(str, len + 1) < 0)
    e8842bb6:	fe0540e3          	bltz	a0,e8842b96 <cstr_set_length+0x1c>
    memset(str->data + str->length, 0, len - str->length + 1);
    e8842bba:	441c                	lw	a5,8(s0)
    e8842bbc:	6008                	ld	a0,0(s0)
    e8842bbe:	4581                	li	a1,0
    e8842bc0:	40f9063b          	subw	a2,s2,a5
    e8842bc4:	953e                	add	a0,a0,a5
    e8842bc6:	7ce390ef          	jal	ra,e887c394 <eLIBs_memset>
    str->length = len;
    e8842bca:	c404                	sw	s1,8(s0)
    e8842bcc:	b7e1                	j	e8842b94 <cstr_set_length+0x1a>

00000000e8842bce <default_secret_bits_cb>:
default_secret_bits_cb(int modsize)
{
  (void) modsize; /* unused */ // APPLE MODIFICATION: Unused parameters.
  return 256;
  /*return modsize;*/   /* Warning: Very Slow */
}
    e8842bce:	10000513          	li	a0,256
    e8842bd2:	8082                	ret

00000000e8842bd4 <_SRPSHA512Final>:
	SHA512_Update( &ctx->sha512, inData, inLen );
}

static void	_SRPSHA512Final( uint8_t *outDigest, SRPHashCtx *ctx )
{
	SHA512_Final( outDigest, &ctx->sha512 );
    e8842bd4:	1bc1b06f          	j	e885dd90 <SHA512_Final_compat>

00000000e8842bd8 <_SRPSHA512Update>:
	SHA512_Update( &ctx->sha512, inData, inLen );
    e8842bd8:	11e1b06f          	j	e885dcf6 <SHA512_Update_compat>

00000000e8842bdc <_SRPSHA512Init>:
	SHA512_Init( &ctx->sha512 );
    e8842bdc:	0ae1b06f          	j	e885dc8a <SHA512_Init_compat>

00000000e8842be0 <SRP_get_secret_bits>:
  return (*srp_sb_cb)(modsize);
    e8842be0:	00092797          	auipc	a5,0x92
    e8842be4:	ee078793          	addi	a5,a5,-288 # e88d4ac0 <srp_sb_cb>
    e8842be8:	0007b303          	ld	t1,0(a5)
    e8842bec:	8302                	jr	t1

00000000e8842bee <SRP_SERVER_do_lookup>:
  return (*slu->meth->lookup)(slu, srp, username);
    e8842bee:	611c                	ld	a5,0(a0)
    e8842bf0:	0187b303          	ld	t1,24(a5)
    e8842bf4:	8302                	jr	t1

00000000e8842bf6 <SRP_new>:
{
    e8842bf6:	1101                	addi	sp,sp,-32
    e8842bf8:	f891540b          	sdd	s0,s1,(sp),0,4
    e8842bfc:	84aa                	mv	s1,a0
  SRP * srp = (SRP *) malloc(sizeof(SRP));
    e8842bfe:	09800513          	li	a0,152
{
    e8842c02:	e84a                	sd	s2,16(sp)
    e8842c04:	ec06                	sd	ra,24(sp)
    e8842c06:	892e                	mv	s2,a1
  SRP * srp = (SRP *) malloc(sizeof(SRP));
    e8842c08:	447380ef          	jal	ra,e887b84e <my_malloc>
    e8842c0c:	842a                	mv	s0,a0
  if(srp == NULL)
    e8842c0e:	c135                	beqz	a0,e8842c72 <SRP_new+0x7c>
  srp->flags = 0;
    e8842c10:	00052223          	sw	zero,4(a0)
  srp->username = cstr_new();
    e8842c14:	e97ff0ef          	jal	ra,e8842aaa <cstr_new>
    e8842c18:	e408                	sd	a0,8(s0)
  srp->bctx = BigIntegerCtxNew();
    e8842c1a:	21e010ef          	jal	ra,e8843e38 <BigIntegerCtxNew>
    e8842c1e:	f828                	sd	a0,112(s0)
  srp->modulus = NULL;
    e8842c20:	00043823          	sd	zero,16(s0)
  srp->accel = NULL;
    e8842c24:	06043c23          	sd	zero,120(s0)
  srp->generator = NULL;
    e8842c28:	00043c23          	sd	zero,24(s0)
  srp->salt = NULL;
    e8842c2c:	02043023          	sd	zero,32(s0)
  srp->verifier = NULL;
    e8842c30:	02043423          	sd	zero,40(s0)
  srp->password = NULL;
    e8842c34:	02043823          	sd	zero,48(s0)
  srp->pubkey = NULL;
    e8842c38:	02043c23          	sd	zero,56(s0)
  srp->secret = NULL;
    e8842c3c:	04043023          	sd	zero,64(s0)
  srp->u = NULL;
    e8842c40:	04043423          	sd	zero,72(s0)
  srp->key = NULL;
    e8842c44:	04043823          	sd	zero,80(s0)
  srp->ex_data = cstr_new();
    e8842c48:	e63ff0ef          	jal	ra,e8842aaa <cstr_new>
    e8842c4c:	ec28                	sd	a0,88(s0)
  srp->param_cb = NULL;
    e8842c4e:	08043023          	sd	zero,128(s0)
  srp->meth = meth;
    e8842c52:	f024                	sd	s1,96(s0)
  srp->meth_data = NULL;
    e8842c54:	06043423          	sd	zero,104(s0)
  srp->slu = NULL;
    e8842c58:	08043423          	sd	zero,136(s0)
  srp->hashDesc = hashDesc;
    e8842c5c:	09243823          	sd	s2,144(s0)
  if(srp->meth->init == NULL || (*srp->meth->init)(srp) == SRP_SUCCESS)
    e8842c60:	649c                	ld	a5,8(s1)
    e8842c62:	cb81                	beqz	a5,e8842c72 <SRP_new+0x7c>
    e8842c64:	8522                	mv	a0,s0
    e8842c66:	9782                	jalr	a5
    e8842c68:	c509                	beqz	a0,e8842c72 <SRP_new+0x7c>
  free(srp);
    e8842c6a:	8522                	mv	a0,s0
    e8842c6c:	694390ef          	jal	ra,e887c300 <eLIBs_free>
  return NULL;
    e8842c70:	4401                	li	s0,0
}
    e8842c72:	8522                	mv	a0,s0
    e8842c74:	60e2                	ld	ra,24(sp)
    e8842c76:	f891440b          	ldd	s0,s1,(sp),0,4
    e8842c7a:	6942                	ld	s2,16(sp)
    e8842c7c:	6105                	addi	sp,sp,32
    e8842c7e:	8082                	ret

00000000e8842c80 <SRP_free>:
{
    e8842c80:	1141                	addi	sp,sp,-16
    e8842c82:	e022                	sd	s0,0(sp)
    e8842c84:	e406                	sd	ra,8(sp)
  if(srp->meth->finish)
    e8842c86:	713c                	ld	a5,96(a0)
{
    e8842c88:	842a                	mv	s0,a0
  if(srp->meth->finish)
    e8842c8a:	6b9c                	ld	a5,16(a5)
    e8842c8c:	c391                	beqz	a5,e8842c90 <SRP_free+0x10>
    (*srp->meth->finish)(srp);
    e8842c8e:	9782                	jalr	a5
  if(srp->username)
    e8842c90:	6408                	ld	a0,8(s0)
    e8842c92:	c119                	beqz	a0,e8842c98 <SRP_free+0x18>
    cstr_clear_free(srp->username);
    e8842c94:	e1dff0ef          	jal	ra,e8842ab0 <cstr_clear_free>
  if(srp->modulus)
    e8842c98:	6808                	ld	a0,16(s0)
    e8842c9a:	c119                	beqz	a0,e8842ca0 <SRP_free+0x20>
    BigIntegerFree(srp->modulus);
    e8842c9c:	17c010ef          	jal	ra,e8843e18 <BigIntegerFree>
  if(srp->accel)
    e8842ca0:	7c28                	ld	a0,120(s0)
    e8842ca2:	c119                	beqz	a0,e8842ca8 <SRP_free+0x28>
    BigIntegerModAccelFree(srp->accel);
    e8842ca4:	1a0010ef          	jal	ra,e8843e44 <BigIntegerModAccelFree>
  if(srp->generator)
    e8842ca8:	6c08                	ld	a0,24(s0)
    e8842caa:	c119                	beqz	a0,e8842cb0 <SRP_free+0x30>
    BigIntegerFree(srp->generator);
    e8842cac:	16c010ef          	jal	ra,e8843e18 <BigIntegerFree>
  if(srp->salt)
    e8842cb0:	7008                	ld	a0,32(s0)
    e8842cb2:	c119                	beqz	a0,e8842cb8 <SRP_free+0x38>
    cstr_clear_free(srp->salt);
    e8842cb4:	dfdff0ef          	jal	ra,e8842ab0 <cstr_clear_free>
  if(srp->verifier)
    e8842cb8:	7408                	ld	a0,40(s0)
    e8842cba:	c119                	beqz	a0,e8842cc0 <SRP_free+0x40>
    BigIntegerClearFree(srp->verifier);
    e8842cbc:	178010ef          	jal	ra,e8843e34 <BigIntegerClearFree>
  if(srp->password)
    e8842cc0:	7808                	ld	a0,48(s0)
    e8842cc2:	c119                	beqz	a0,e8842cc8 <SRP_free+0x48>
    BigIntegerClearFree(srp->password);
    e8842cc4:	170010ef          	jal	ra,e8843e34 <BigIntegerClearFree>
  if(srp->pubkey)
    e8842cc8:	7c08                	ld	a0,56(s0)
    e8842cca:	c119                	beqz	a0,e8842cd0 <SRP_free+0x50>
    BigIntegerFree(srp->pubkey);
    e8842ccc:	14c010ef          	jal	ra,e8843e18 <BigIntegerFree>
  if(srp->secret)
    e8842cd0:	6028                	ld	a0,64(s0)
    e8842cd2:	c119                	beqz	a0,e8842cd8 <SRP_free+0x58>
    BigIntegerClearFree(srp->secret);
    e8842cd4:	160010ef          	jal	ra,e8843e34 <BigIntegerClearFree>
  if(srp->u)
    e8842cd8:	6428                	ld	a0,72(s0)
    e8842cda:	c119                	beqz	a0,e8842ce0 <SRP_free+0x60>
    BigIntegerFree(srp->u);
    e8842cdc:	13c010ef          	jal	ra,e8843e18 <BigIntegerFree>
  if(srp->key)
    e8842ce0:	6828                	ld	a0,80(s0)
    e8842ce2:	c119                	beqz	a0,e8842ce8 <SRP_free+0x68>
    BigIntegerClearFree(srp->key);
    e8842ce4:	150010ef          	jal	ra,e8843e34 <BigIntegerClearFree>
  if(srp->bctx)
    e8842ce8:	7828                	ld	a0,112(s0)
    e8842cea:	c119                	beqz	a0,e8842cf0 <SRP_free+0x70>
    BigIntegerCtxFree(srp->bctx);
    e8842cec:	150010ef          	jal	ra,e8843e3c <BigIntegerCtxFree>
  if(srp->ex_data)
    e8842cf0:	6c28                	ld	a0,88(s0)
    e8842cf2:	c119                	beqz	a0,e8842cf8 <SRP_free+0x78>
    cstr_clear_free(srp->ex_data);
    e8842cf4:	dbdff0ef          	jal	ra,e8842ab0 <cstr_clear_free>
  free(srp);
    e8842cf8:	8522                	mv	a0,s0
    e8842cfa:	606390ef          	jal	ra,e887c300 <eLIBs_free>
}
    e8842cfe:	6402                	ld	s0,0(sp)
    e8842d00:	60a2                	ld	ra,8(sp)
    e8842d02:	4501                	li	a0,0
    e8842d04:	0141                	addi	sp,sp,16
    e8842d06:	8082                	ret

00000000e8842d08 <SRP_set_user_raw>:
{
    e8842d08:	1141                	addi	sp,sp,-16
    e8842d0a:	e022                	sd	s0,0(sp)
    e8842d0c:	e406                	sd	ra,8(sp)
    e8842d0e:	842a                	mv	s0,a0
  cstr_setn(srp->username, (const char *) user, userlen); // APPLE MODIFICATION: Casts to fix warnings.
    e8842d10:	6508                	ld	a0,8(a0)
    e8842d12:	e21ff0ef          	jal	ra,e8842b32 <cstr_setn>
  if(srp->slu)
    e8842d16:	6448                	ld	a0,136(s0)
    e8842d18:	c901                	beqz	a0,e8842d28 <SRP_set_user_raw+0x20>
    return SRP_SERVER_do_lookup(srp->slu, srp, srp->username);
    e8842d1a:	6410                	ld	a2,8(s0)
    e8842d1c:	85a2                	mv	a1,s0
}
    e8842d1e:	6402                	ld	s0,0(sp)
    e8842d20:	60a2                	ld	ra,8(sp)
    e8842d22:	0141                	addi	sp,sp,16
    return SRP_SERVER_do_lookup(srp->slu, srp, srp->username);
    e8842d24:	ecbff06f          	j	e8842bee <SRP_SERVER_do_lookup>
}
    e8842d28:	60a2                	ld	ra,8(sp)
    e8842d2a:	6402                	ld	s0,0(sp)
    e8842d2c:	4501                	li	a0,0
    e8842d2e:	0141                	addi	sp,sp,16
    e8842d30:	8082                	ret

00000000e8842d32 <SRP_set_params>:
  if(modulus == NULL || generator == NULL || salt == NULL)
    e8842d32:	ed91                	bnez	a1,e8842d4e <SRP_set_params+0x1c>
    return SRP_ERROR;
    e8842d34:	557d                	li	a0,-1
}
    e8842d36:	8082                	ret
    return SRP_ERROR;
    e8842d38:	557d                	li	a0,-1
}
    e8842d3a:	70e2                	ld	ra,56(sp)
    e8842d3c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8842d40:	7b42                	ld	s6,48(sp)
    e8842d42:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8842d46:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8842d4a:	6121                	addi	sp,sp,64
    e8842d4c:	8082                	ret
  if(modulus == NULL || generator == NULL || salt == NULL)
    e8842d4e:	d2fd                	beqz	a3,e8842d34 <SRP_set_params+0x2>
    e8842d50:	d3f5                	beqz	a5,e8842d34 <SRP_set_params+0x2>
{
    e8842d52:	7139                	addi	sp,sp,-64
    e8842d54:	f891540b          	sdd	s0,s1,(sp),0,4
    e8842d58:	84ae                	mv	s1,a1
    e8842d5a:	842a                	mv	s0,a0
  srp->modulus = BigIntegerFromBytes(modulus, modlen);
    e8842d5c:	85b2                	mv	a1,a2
    e8842d5e:	8526                	mv	a0,s1
{
    e8842d60:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8842d64:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8842d68:	f85a                	sd	s6,48(sp)
    e8842d6a:	8abe                	mv	s5,a5
    e8842d6c:	fc06                	sd	ra,56(sp)
    e8842d6e:	8b42                	mv	s6,a6
    e8842d70:	8a3a                	mv	s4,a4
    e8842d72:	8936                	mv	s2,a3
    e8842d74:	89b2                	mv	s3,a2
  srp->modulus = BigIntegerFromBytes(modulus, modlen);
    e8842d76:	6f9000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e8842d7a:	e808                	sd	a0,16(s0)
  if(srp->flags & SRP_FLAG_MOD_ACCEL)
    e8842d7c:	405c                	lw	a5,4(s0)
    e8842d7e:	8b85                	andi	a5,a5,1
    e8842d80:	c789                	beqz	a5,e8842d8a <SRP_set_params+0x58>
    srp->accel = BigIntegerModAccelNew(srp->modulus, srp->bctx);
    e8842d82:	782c                	ld	a1,112(s0)
    e8842d84:	0bc010ef          	jal	ra,e8843e40 <BigIntegerModAccelNew>
    e8842d88:	fc28                	sd	a0,120(s0)
  srp->generator = BigIntegerFromBytes(generator, genlen);
    e8842d8a:	85d2                	mv	a1,s4
    e8842d8c:	854a                	mv	a0,s2
    e8842d8e:	6e1000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e8842d92:	ec08                	sd	a0,24(s0)
  if(srp->salt == NULL)
    e8842d94:	701c                	ld	a5,32(s0)
    e8842d96:	e781                	bnez	a5,e8842d9e <SRP_set_params+0x6c>
    srp->salt = cstr_new();
    e8842d98:	d13ff0ef          	jal	ra,e8842aaa <cstr_new>
    e8842d9c:	f008                	sd	a0,32(s0)
  cstr_setn(srp->salt, (const char *) salt, saltlen); // APPLE MODIFICATION: Casts to fix warnings.
    e8842d9e:	7008                	ld	a0,32(s0)
    e8842da0:	865a                	mv	a2,s6
    e8842da2:	85d6                	mv	a1,s5
    e8842da4:	d8fff0ef          	jal	ra,e8842b32 <cstr_setn>
  if(BigIntegerBitLen(srp->modulus) < SRP_get_modulus_min_bits())
    e8842da8:	6808                	ld	a0,16(s0)
    e8842daa:	7b1000ef          	jal	ra,e8843d5a <BigIntegerBitLen>
    e8842dae:	00092797          	auipc	a5,0x92
    e8842db2:	d0a78793          	addi	a5,a5,-758 # e88d4ab8 <srp_modulus_min_bits>
    e8842db6:	439c                	lw	a5,0(a5)
    e8842db8:	f8f540e3          	blt	a0,a5,e8842d38 <SRP_set_params+0x6>
  if(srp->param_cb) {
    e8842dbc:	605c                	ld	a5,128(s0)
    e8842dbe:	e78d                	bnez	a5,e8842de8 <SRP_set_params+0xb6>
  return (*srp->meth->params)(srp, modulus, modlen, generator, genlen,
    e8842dc0:	703c                	ld	a5,96(s0)
    e8842dc2:	85a6                	mv	a1,s1
    e8842dc4:	8522                	mv	a0,s0
}
    e8842dc6:	f891440b          	ldd	s0,s1,(sp),0,4
  return (*srp->meth->params)(srp, modulus, modlen, generator, genlen,
    e8842dca:	0187b303          	ld	t1,24(a5)
}
    e8842dce:	70e2                	ld	ra,56(sp)
  return (*srp->meth->params)(srp, modulus, modlen, generator, genlen,
    e8842dd0:	885a                	mv	a6,s6
    e8842dd2:	87d6                	mv	a5,s5
}
    e8842dd4:	7b42                	ld	s6,48(sp)
  return (*srp->meth->params)(srp, modulus, modlen, generator, genlen,
    e8842dd6:	8752                	mv	a4,s4
    e8842dd8:	86ca                	mv	a3,s2
}
    e8842dda:	fd514a0b          	ldd	s4,s5,(sp),2,4
  return (*srp->meth->params)(srp, modulus, modlen, generator, genlen,
    e8842dde:	864e                	mv	a2,s3
}
    e8842de0:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8842de4:	6121                	addi	sp,sp,64
  return (*srp->meth->params)(srp, modulus, modlen, generator, genlen,
    e8842de6:	8302                	jr	t1
    rc = (*srp->param_cb)(srp, modulus, modlen, generator, genlen);
    e8842de8:	8752                	mv	a4,s4
    e8842dea:	86ca                	mv	a3,s2
    e8842dec:	864e                	mv	a2,s3
    e8842dee:	85a6                	mv	a1,s1
    e8842df0:	8522                	mv	a0,s0
    e8842df2:	9782                	jalr	a5
    if(!SRP_OK(rc))
    e8842df4:	d571                	beqz	a0,e8842dc0 <SRP_set_params+0x8e>
    e8842df6:	b791                	j	e8842d3a <SRP_set_params+0x8>

00000000e8842df8 <SRP_set_authenticator>:
  return (*srp->meth->auth)(srp, a, alen);
    e8842df8:	713c                	ld	a5,96(a0)
    e8842dfa:	0207b303          	ld	t1,32(a5)
    e8842dfe:	8302                	jr	t1

00000000e8842e00 <SRP_set_auth_password_raw>:
  return (*srp->meth->passwd)(srp, password, passlen);
    e8842e00:	713c                	ld	a5,96(a0)
    e8842e02:	0287b303          	ld	t1,40(a5)
    e8842e06:	8302                	jr	t1

00000000e8842e08 <SRP_gen_pub>:
  return (*srp->meth->genpub)(srp, result);
    e8842e08:	713c                	ld	a5,96(a0)
    e8842e0a:	0307b303          	ld	t1,48(a5)
    e8842e0e:	8302                	jr	t1

00000000e8842e10 <SRP_compute_key>:
  return (*srp->meth->key)(srp, result, pubkey, pubkeylen);
    e8842e10:	713c                	ld	a5,96(a0)
    e8842e12:	0387b303          	ld	t1,56(a5)
    e8842e16:	8302                	jr	t1

00000000e8842e18 <SRP_verify>:
  return (*srp->meth->verify)(srp, proof, prooflen);
    e8842e18:	713c                	ld	a5,96(a0)
    e8842e1a:	0407b303          	ld	t1,64(a5)
    e8842e1e:	8302                	jr	t1

00000000e8842e20 <SRP_respond>:
  return (*srp->meth->respond)(srp, proof);
    e8842e20:	713c                	ld	a5,96(a0)
    e8842e22:	0487b303          	ld	t1,72(a5)
    e8842e26:	8302                	jr	t1

00000000e8842e28 <t_mgf1>:
{
    e8842e28:	7115                	addi	sp,sp,-224
    e8842e2a:	e9a2                	sd	s0,208(sp)
    e8842e2c:	e5a6                	sd	s1,200(sp)
    e8842e2e:	fd4e                	sd	s3,184(sp)
    e8842e30:	f556                	sd	s5,168(sp)
    e8842e32:	f15a                	sd	s6,160(sp)
    e8842e34:	ed5e                	sd	s7,152(sp)
    e8842e36:	ed86                	sd	ra,216(sp)
    e8842e38:	e1ca                	sd	s2,192(sp)
    e8842e3a:	f952                	sd	s4,176(sp)
    e8842e3c:	8aaa                	mv	s5,a0
    e8842e3e:	84ae                	mv	s1,a1
    e8842e40:	8b32                	mv	s6,a2
  unsigned pos = 0;
    e8842e42:	4401                	li	s0,0
  unsigned i = 0;
    e8842e44:	4981                	li	s3,0
    SHA1Update(&ctxt, seed, seedlen);
    e8842e46:	7c06bb8b          	extu	s7,a3,31,0
  while(pos < masklen) {
    e8842e4a:	02946863          	bltu	s0,s1,e8842e7a <t_mgf1+0x52>
  memset(hout, 0, sizeof(hout));
    e8842e4e:	0808                	addi	a0,sp,16
    e8842e50:	4651                	li	a2,20
    e8842e52:	4581                	li	a1,0
    e8842e54:	540390ef          	jal	ra,e887c394 <eLIBs_memset>
  memset((unsigned char *)&ctxt, 0, sizeof(ctxt));
    e8842e58:	1028                	addi	a0,sp,40
    e8842e5a:	06800613          	li	a2,104
    e8842e5e:	4581                	li	a1,0
    e8842e60:	534390ef          	jal	ra,e887c394 <eLIBs_memset>
}
    e8842e64:	644e                	ld	s0,208(sp)
    e8842e66:	60ee                	ld	ra,216(sp)
    e8842e68:	64ae                	ld	s1,200(sp)
    e8842e6a:	690e                	ld	s2,192(sp)
    e8842e6c:	79ea                	ld	s3,184(sp)
    e8842e6e:	7a4a                	ld	s4,176(sp)
    e8842e70:	7aaa                	ld	s5,168(sp)
    e8842e72:	7b0a                	ld	s6,160(sp)
    e8842e74:	6bea                	ld	s7,152(sp)
    e8842e76:	612d                	addi	sp,sp,224
    e8842e78:	8082                	ret
    cnt[3] = (unsigned char)(i & 0xFF);
    e8842e7a:	9009978b          	revw	a5,s3
    SHA1Init(&ctxt);
    e8842e7e:	1028                	addi	a0,sp,40
    cnt[0] = (unsigned char)((i >> 24) & 0xFF);
    e8842e80:	c43e                	sw	a5,8(sp)
    SHA1Init(&ctxt);
    e8842e82:	4431a0ef          	jal	ra,e885dac4 <SHA1_Init_compat>
    SHA1Update(&ctxt, seed, seedlen);
    e8842e86:	7c04390b          	extu	s2,s0,31,0
    e8842e8a:	865e                	mv	a2,s7
    e8842e8c:	85da                	mv	a1,s6
    e8842e8e:	1028                	addi	a0,sp,40
    e8842e90:	4631a0ef          	jal	ra,e885daf2 <SHA1_Update_compat>
    if(pos + SHA_DIGESTSIZE > masklen) {
    e8842e94:	01440a1b          	addiw	s4,s0,20
    SHA1Update(&ctxt, cnt, 4);
    e8842e98:	002c                	addi	a1,sp,8
    e8842e9a:	4611                	li	a2,4
    e8842e9c:	1028                	addi	a0,sp,40
    e8842e9e:	4551a0ef          	jal	ra,e885daf2 <SHA1_Update_compat>
    if(pos + SHA_DIGESTSIZE > masklen) {
    e8842ea2:	9956                	add	s2,s2,s5
      SHA1Final(hout, &ctxt);
    e8842ea4:	102c                	addi	a1,sp,40
    if(pos + SHA_DIGESTSIZE > masklen) {
    e8842ea6:	0344f163          	bgeu	s1,s4,e8842ec8 <t_mgf1+0xa0>
      SHA1Final(hout, &ctxt);
    e8842eaa:	0808                	addi	a0,sp,16
    e8842eac:	4e11a0ef          	jal	ra,e885db8c <SHA1_Final_compat>
      memcpy(mask + pos, hout, masklen - pos);
    e8842eb0:	8a26                	mv	s4,s1
    e8842eb2:	4084863b          	subw	a2,s1,s0
    e8842eb6:	7c06360b          	extu	a2,a2,31,0
    e8842eba:	080c                	addi	a1,sp,16
    e8842ebc:	854a                	mv	a0,s2
    e8842ebe:	4e2390ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    ++i;
    e8842ec2:	2985                	addiw	s3,s3,1
    e8842ec4:	8452                	mv	s0,s4
    e8842ec6:	b751                	j	e8842e4a <t_mgf1+0x22>
      SHA1Final(mask + pos, &ctxt);
    e8842ec8:	854a                	mv	a0,s2
    e8842eca:	4c31a0ef          	jal	ra,e885db8c <SHA1_Final_compat>
      pos += SHA_DIGESTSIZE;
    e8842ece:	bfd5                	j	e8842ec2 <t_mgf1+0x9a>

00000000e8842ed0 <srp6_client_params>:

static SRP_RESULT
srp6_client_params(SRP * srp, const unsigned char * modulus, int modlen,
		   const unsigned char * generator, int genlen,
		   const unsigned char * salt, int saltlen)
{
    e8842ed0:	7125                	addi	sp,sp,-416
    e8842ed2:	ef06                	sd	ra,408(sp)
    e8842ed4:	eb22                	sd	s0,400(sp)
    e8842ed6:	e726                	sd	s1,392(sp)
    e8842ed8:	e34a                	sd	s2,384(sp)
    e8842eda:	fece                	sd	s3,376(sp)
    e8842edc:	893e                	mv	s2,a5
  SRPHashCtx ctxt;

  /* Fields set by SRP_set_params */

  /* Update hash state */
  srp->hashDesc->init_f(&ctxt);
    e8842ede:	695c                	ld	a5,144(a0)
{
    e8842ee0:	842a                	mv	s0,a0
  srp->hashDesc->init_f(&ctxt);
    e8842ee2:	1108                	addi	a0,sp,160
    e8842ee4:	6b9c                	ld	a5,16(a5)
{
    e8842ee6:	89c2                	mv	s3,a6
    e8842ee8:	e436                	sd	a3,8(sp)
    e8842eea:	e03a                	sd	a4,0(sp)
    e8842eec:	ec2e                	sd	a1,24(sp)
    e8842eee:	e832                	sd	a2,16(sp)
  srp->hashDesc->init_f(&ctxt);
    e8842ef0:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, modulus, (size_t) modlen);
  srp->hashDesc->final_f(buf1, &ctxt);	/* buf1 = H(modulus) */

  srp->hashDesc->init_f(&ctxt);
  srp->hashDesc->update_f(&ctxt, generator, (size_t) genlen);
  srp->hashDesc->final_f(buf2, &ctxt);	/* buf2 = H(generator) */
    e8842ef2:	1084                	addi	s1,sp,96
  srp->hashDesc->update_f(&ctxt, modulus, (size_t) modlen);
    e8842ef4:	685c                	ld	a5,144(s0)
    e8842ef6:	fab1460b          	ldd	a2,a1,(sp),1,4
    e8842efa:	1108                	addi	a0,sp,160
    e8842efc:	6f9c                	ld	a5,24(a5)
    e8842efe:	9782                	jalr	a5
  srp->hashDesc->final_f(buf1, &ctxt);	/* buf1 = H(modulus) */
    e8842f00:	685c                	ld	a5,144(s0)
    e8842f02:	110c                	addi	a1,sp,160
    e8842f04:	1008                	addi	a0,sp,32
    e8842f06:	739c                	ld	a5,32(a5)
    e8842f08:	9782                	jalr	a5
  srp->hashDesc->init_f(&ctxt);
    e8842f0a:	685c                	ld	a5,144(s0)
    e8842f0c:	1108                	addi	a0,sp,160
    e8842f0e:	6b9c                	ld	a5,16(a5)
    e8842f10:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, generator, (size_t) genlen);
    e8842f12:	685c                	ld	a5,144(s0)
    e8842f14:	6702                	ld	a4,0(sp)
    e8842f16:	66a2                	ld	a3,8(sp)
    e8842f18:	6f9c                	ld	a5,24(a5)
    e8842f1a:	863a                	mv	a2,a4
    e8842f1c:	85b6                	mv	a1,a3
    e8842f1e:	1108                	addi	a0,sp,160
    e8842f20:	9782                	jalr	a5
  srp->hashDesc->final_f(buf2, &ctxt);	/* buf2 = H(generator) */
    e8842f22:	685c                	ld	a5,144(s0)
    e8842f24:	110c                	addi	a1,sp,160
    e8842f26:	8526                	mv	a0,s1
    e8842f28:	739c                	ld	a5,32(a5)
    e8842f2a:	9782                	jalr	a5

  for(i = 0; i < (int) srp->hashDesc->digestLen; ++i)
    e8842f2c:	684c                	ld	a1,144(s0)
    e8842f2e:	4701                	li	a4,0
    e8842f30:	6190                	ld	a2,0(a1)
    e8842f32:	0007079b          	sext.w	a5,a4
    e8842f36:	0006069b          	sext.w	a3,a2
    e8842f3a:	04d7ca63          	blt	a5,a3,e8842f8e <srp6_client_params+0xbe>
    buf1[i] ^= buf2[i];		/* buf1 = H(modulus) xor H(generator) */

  /* hash: H(N) xor H(g) */
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->hash, buf1, srp->hashDesc->digestLen);
    e8842f3e:	6d9c                	ld	a5,24(a1)
    e8842f40:	7428                	ld	a0,104(s0)
    e8842f42:	100c                	addi	a1,sp,32
    e8842f44:	9782                	jalr	a5

  srp->hashDesc->init_f(&ctxt);
    e8842f46:	685c                	ld	a5,144(s0)
    e8842f48:	1108                	addi	a0,sp,160
    e8842f4a:	6b9c                	ld	a5,16(a5)
    e8842f4c:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, srp->username->data, (size_t) srp->username->length);
    e8842f4e:	6418                	ld	a4,8(s0)
    e8842f50:	685c                	ld	a5,144(s0)
    e8842f52:	1108                	addi	a0,sp,160
    e8842f54:	4710                	lw	a2,8(a4)
    e8842f56:	630c                	ld	a1,0(a4)
    e8842f58:	6f9c                	ld	a5,24(a5)
    e8842f5a:	9782                	jalr	a5
  srp->hashDesc->final_f(buf1, &ctxt);	/* buf1 = H(user) */
    e8842f5c:	685c                	ld	a5,144(s0)
    e8842f5e:	110c                	addi	a1,sp,160
    e8842f60:	1008                	addi	a0,sp,32
    e8842f62:	739c                	ld	a5,32(a5)
    e8842f64:	9782                	jalr	a5

  /* hash: (H(N) xor H(g)) | H(U) */
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->hash, buf1, srp->hashDesc->digestLen);
    e8842f66:	6858                	ld	a4,144(s0)
    e8842f68:	7428                	ld	a0,104(s0)
    e8842f6a:	100c                	addi	a1,sp,32
    e8842f6c:	6f1c                	ld	a5,24(a4)
    e8842f6e:	6310                	ld	a2,0(a4)
    e8842f70:	9782                	jalr	a5

  /* hash: (H(N) xor H(g)) | H(U) | s */
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->hash, salt, (size_t) saltlen);
    e8842f72:	685c                	ld	a5,144(s0)
    e8842f74:	7428                	ld	a0,104(s0)
    e8842f76:	864e                	mv	a2,s3
    e8842f78:	6f98                	ld	a4,24(a5)
    e8842f7a:	85ca                	mv	a1,s2
    e8842f7c:	9702                	jalr	a4

  return SRP_SUCCESS;
}
    e8842f7e:	645a                	ld	s0,400(sp)
    e8842f80:	60fa                	ld	ra,408(sp)
    e8842f82:	64ba                	ld	s1,392(sp)
    e8842f84:	691a                	ld	s2,384(sp)
    e8842f86:	79f6                	ld	s3,376(sp)
    e8842f88:	4501                	li	a0,0
    e8842f8a:	611d                	addi	sp,sp,416
    e8842f8c:	8082                	ret
    buf1[i] ^= buf2[i];		/* buf1 = H(modulus) xor H(generator) */
    e8842f8e:	101c                	addi	a5,sp,32
    e8842f90:	80e7c68b          	lrbu	a3,a5,a4,0
    e8842f94:	80e4c78b          	lrbu	a5,s1,a4,0
    e8842f98:	8ebd                	xor	a3,a3,a5
    e8842f9a:	101c                	addi	a5,sp,32
    e8842f9c:	00e7d68b          	srb	a3,a5,a4,0
  for(i = 0; i < (int) srp->hashDesc->digestLen; ++i)
    e8842fa0:	0705                	addi	a4,a4,1
    e8842fa2:	b779                	j	e8842f30 <srp6_client_params+0x60>

00000000e8842fa4 <srp6_client_verify>:
  return ret;
}

static SRP_RESULT
srp6_client_verify(SRP * srp, const unsigned char * proof, int prooflen)
{
    e8842fa4:	7159                	addi	sp,sp,-112
    e8842fa6:	f0a2                	sd	s0,96(sp)
    e8842fa8:	eca6                	sd	s1,88(sp)
    e8842faa:	f486                	sd	ra,104(sp)
  unsigned char expected[SRP_MAX_DIGEST_SIZE];

  srp->hashDesc->final_f(expected, &CLIENT_CTXP(srp)->ckhash);
    e8842fac:	695c                	ld	a5,144(a0)
{
    e8842fae:	842e                	mv	s0,a1
  srp->hashDesc->final_f(expected, &CLIENT_CTXP(srp)->ckhash);
    e8842fb0:	752c                	ld	a1,104(a0)
    e8842fb2:	739c                	ld	a5,32(a5)
{
    e8842fb4:	84aa                	mv	s1,a0
  srp->hashDesc->final_f(expected, &CLIENT_CTXP(srp)->ckhash);
    e8842fb6:	0d058593          	addi	a1,a1,208
    e8842fba:	0808                	addi	a0,sp,16
{
    e8842fbc:	e432                	sd	a2,8(sp)
  srp->hashDesc->final_f(expected, &CLIENT_CTXP(srp)->ckhash);
    e8842fbe:	9782                	jalr	a5
  if(prooflen == (int) srp->hashDesc->digestLen && memcmp(expected, proof, (size_t) prooflen) == 0)
    e8842fc0:	68dc                	ld	a5,144(s1)
    e8842fc2:	6622                	ld	a2,8(sp)
    e8842fc4:	4398                	lw	a4,0(a5)
    e8842fc6:	00c71e63          	bne	a4,a2,e8842fe2 <srp6_client_verify+0x3e>
    e8842fca:	4781                	li	a5,0
    while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
    e8842fcc:	147d                	addi	s0,s0,-1
    e8842fce:	02f70063          	beq	a4,a5,e8842fee <srp6_client_verify+0x4a>
    e8842fd2:	0814                	addi	a3,sp,16
    e8842fd4:	80f6c68b          	lrbu	a3,a3,a5,0
    e8842fd8:	0785                	addi	a5,a5,1
    e8842fda:	80f4460b          	lrbu	a2,s0,a5,0
    e8842fde:	fed608e3          	beq	a2,a3,e8842fce <srp6_client_verify+0x2a>
    return SRP_SUCCESS;
  else
    return SRP_ERROR;
    e8842fe2:	557d                	li	a0,-1
}
    e8842fe4:	70a6                	ld	ra,104(sp)
    e8842fe6:	7406                	ld	s0,96(sp)
    e8842fe8:	64e6                	ld	s1,88(sp)
    e8842fea:	6165                	addi	sp,sp,112
    e8842fec:	8082                	ret
    return SRP_SUCCESS;
    e8842fee:	4501                	li	a0,0
    e8842ff0:	bfd5                	j	e8842fe4 <srp6_client_verify+0x40>

00000000e8842ff2 <srp6_client_respond>:

static SRP_RESULT
srp6_client_respond(SRP * srp, cstr ** proof)
{
  if(proof == NULL)
    e8842ff2:	cdb9                	beqz	a1,e8843050 <srp6_client_respond+0x5e>
{
    e8842ff4:	1101                	addi	sp,sp,-32
    e8842ff6:	e422                	sd	s0,8(sp)
    e8842ff8:	e826                	sd	s1,16(sp)
    e8842ffa:	ec06                	sd	ra,24(sp)
    return SRP_ERROR;

  if(*proof == NULL)
    e8842ffc:	619c                	ld	a5,0(a1)
    e8842ffe:	84ae                	mv	s1,a1
    e8843000:	842a                	mv	s0,a0
    e8843002:	e781                	bnez	a5,e884300a <srp6_client_respond+0x18>
    *proof = cstr_new();
    e8843004:	aa7ff0ef          	jal	ra,e8842aaa <cstr_new>
    e8843008:	e088                	sd	a0,0(s1)

  /* proof contains client's response */
  cstr_set_length(*proof, (int) srp->hashDesc->digestLen);
    e884300a:	685c                	ld	a5,144(s0)
    e884300c:	6088                	ld	a0,0(s1)
    e884300e:	438c                	lw	a1,0(a5)
    e8843010:	b6bff0ef          	jal	ra,e8842b7a <cstr_set_length>
  srp->hashDesc->final_f((unsigned char *)(*proof)->data, &CLIENT_CTXP(srp)->hash);
    e8843014:	6098                	ld	a4,0(s1)
    e8843016:	685c                	ld	a5,144(s0)
    e8843018:	742c                	ld	a1,104(s0)
    e884301a:	6308                	ld	a0,0(a4)
    e884301c:	739c                	ld	a5,32(a5)
    e884301e:	9782                	jalr	a5

  /* ckhash: A | M | K */
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->ckhash, (*proof)->data, (size_t)(*proof)->length);
    e8843020:	609c                	ld	a5,0(s1)
    e8843022:	6858                	ld	a4,144(s0)
    e8843024:	7428                	ld	a0,104(s0)
    e8843026:	4790                	lw	a2,8(a5)
    e8843028:	638c                	ld	a1,0(a5)
    e884302a:	6f18                	ld	a4,24(a4)
    e884302c:	0d050513          	addi	a0,a0,208
    e8843030:	9702                	jalr	a4
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->ckhash, CLIENT_CTXP(srp)->k, srp->hashDesc->keyLen);
    e8843032:	685c                	ld	a5,144(s0)
    e8843034:	7428                	ld	a0,104(s0)
    e8843036:	6f98                	ld	a4,24(a5)
    e8843038:	6790                	ld	a2,8(a5)
    e884303a:	1a050593          	addi	a1,a0,416
    e884303e:	0d050513          	addi	a0,a0,208
    e8843042:	9702                	jalr	a4
  return SRP_SUCCESS;
}
    e8843044:	6422                	ld	s0,8(sp)
    e8843046:	60e2                	ld	ra,24(sp)
    e8843048:	64c2                	ld	s1,16(sp)
  return SRP_SUCCESS;
    e884304a:	4501                	li	a0,0
}
    e884304c:	6105                	addi	sp,sp,32
    e884304e:	8082                	ret
    return SRP_ERROR;
    e8843050:	557d                	li	a0,-1
}
    e8843052:	8082                	ret

00000000e8843054 <srp6_client_auth>:
{
    e8843054:	1141                	addi	sp,sp,-16
    e8843056:	e022                	sd	s0,0(sp)
    e8843058:	842a                	mv	s0,a0
    e884305a:	852e                	mv	a0,a1
  srp->password = BigIntegerFromBytes(a, alen);
    e884305c:	85b2                	mv	a1,a2
{
    e884305e:	e406                	sd	ra,8(sp)
  srp->password = BigIntegerFromBytes(a, alen);
    e8843060:	40f000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e8843064:	f808                	sd	a0,48(s0)
  srp->verifier = BigIntegerFromInt(0);
    e8843066:	4501                	li	a0,0
    e8843068:	3d9000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e884306c:	f408                	sd	a0,40(s0)
  BigIntegerModExp(srp->verifier, srp->generator, srp->password, srp->modulus, srp->bctx, srp->accel);
    e884306e:	7c3c                	ld	a5,120(s0)
    e8843070:	7838                	ld	a4,112(s0)
    e8843072:	6814                	ld	a3,16(s0)
    e8843074:	7810                	ld	a2,48(s0)
    e8843076:	6c0c                	ld	a1,24(s0)
    e8843078:	587000ef          	jal	ra,e8843dfe <BigIntegerModExp>
}
    e884307c:	6402                	ld	s0,0(sp)
    e884307e:	60a2                	ld	ra,8(sp)
    e8843080:	4501                	li	a0,0
    e8843082:	0141                	addi	sp,sp,16
    e8843084:	8082                	ret

00000000e8843086 <srp6_client_key_ex>:
{
    e8843086:	710d                	addi	sp,sp,-352
    e8843088:	eaa2                	sd	s0,336(sp)
    e884308a:	e2ca                	sd	s2,320(sp)
    e884308c:	fa52                	sd	s4,304(sp)
    e884308e:	f656                	sd	s5,296(sp)
    e8843090:	f25a                	sd	s6,288(sp)
    e8843092:	ee5e                	sd	s7,280(sp)
    e8843094:	ee86                	sd	ra,344(sp)
    e8843096:	e6a6                	sd	s1,328(sp)
    e8843098:	fe4e                	sd	s3,312(sp)
    e884309a:	842a                	mv	s0,a0
  modlen = BigIntegerByteLen(srp->modulus);
    e884309c:	6908                	ld	a0,16(a0)
{
    e884309e:	8aae                	mv	s5,a1
    e88430a0:	8a32                	mv	s4,a2
    e88430a2:	8936                	mv	s2,a3
    e88430a4:	8bba                	mv	s7,a4
  modlen = BigIntegerByteLen(srp->modulus);
    e88430a6:	4b5000ef          	jal	ra,e8843d5a <BigIntegerBitLen>
    e88430aa:	251d                	addiw	a0,a0,7
    e88430ac:	47a1                	li	a5,8
    e88430ae:	02f54b3b          	divw	s6,a0,a5
  if(pubkeylen > modlen)
    e88430b2:	092b4d63          	blt	s6,s2,e884314c <srp6_client_key_ex+0xc6>
  srp->hashDesc->init_f(&ctxt);
    e88430b6:	685c                	ld	a5,144(s0)
    e88430b8:	0088                	addi	a0,sp,64
    e88430ba:	6b9c                	ld	a5,16(a5)
    e88430bc:	9782                	jalr	a5
  s = cstr_new();
    e88430be:	9edff0ef          	jal	ra,e8842aaa <cstr_new>
    e88430c2:	84aa                	mv	s1,a0
  if(srp->flags & SRP_FLAG_LEFT_PAD) {
    e88430c4:	405c                	lw	a5,4(s0)
    e88430c6:	7c08                	ld	a0,56(s0)
    e88430c8:	8b89                	andi	a5,a5,2
    e88430ca:	c3d9                	beqz	a5,e8843150 <srp6_client_key_ex+0xca>
    BigIntegerToCstrEx(srp->pubkey, s, modlen);
    e88430cc:	865a                	mv	a2,s6
    e88430ce:	85a6                	mv	a1,s1
    e88430d0:	435000ef          	jal	ra,e8843d04 <BigIntegerToCstrEx>
    srp->hashDesc->update_f(&ctxt, s->data, (size_t) s->length);
    e88430d4:	685c                	ld	a5,144(s0)
    e88430d6:	4490                	lw	a2,8(s1)
    e88430d8:	608c                	ld	a1,0(s1)
    e88430da:	6f9c                	ld	a5,24(a5)
    e88430dc:	0088                	addi	a0,sp,64
    e88430de:	9782                	jalr	a5
    if(pubkeylen < modlen) {
    e88430e0:	09695163          	bge	s2,s6,e8843162 <srp6_client_key_ex+0xdc>
      memcpy(s->data + (modlen - pubkeylen), pubkey, pubkeylen);
    e88430e4:	6088                	ld	a0,0(s1)
    e88430e6:	412b09bb          	subw	s3,s6,s2
    e88430ea:	864a                	mv	a2,s2
    e88430ec:	85d2                	mv	a1,s4
    e88430ee:	954e                	add	a0,a0,s3
    e88430f0:	2b0390ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memset(s->data, 0, modlen - pubkeylen);
    e88430f4:	6088                	ld	a0,0(s1)
    e88430f6:	864e                	mv	a2,s3
    e88430f8:	4581                	li	a1,0
    e88430fa:	29a390ef          	jal	ra,e887c394 <eLIBs_memset>
      srp->hashDesc->update_f(&ctxt, s->data, (size_t) modlen);
    e88430fe:	685c                	ld	a5,144(s0)
    e8843100:	608c                	ld	a1,0(s1)
    e8843102:	865a                	mv	a2,s6
    e8843104:	6f9c                	ld	a5,24(a5)
    srp->hashDesc->update_f(&ctxt, pubkey, (size_t) pubkeylen);
    e8843106:	0088                	addi	a0,sp,64
    e8843108:	9782                	jalr	a5
  srp->hashDesc->final_f(dig, &ctxt);
    e884310a:	685c                	ld	a5,144(s0)
    e884310c:	008c                	addi	a1,sp,64
    e884310e:	850a                	mv	a0,sp
    e8843110:	739c                	ld	a5,32(a5)
    e8843112:	9782                	jalr	a5
  srp->u = BigIntegerFromBytes(dig, (int) srp->hashDesc->digestLen);
    e8843114:	685c                	ld	a5,144(s0)
    e8843116:	850a                	mv	a0,sp
    e8843118:	438c                	lw	a1,0(a5)
    e884311a:	355000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e884311e:	e428                	sd	a0,72(s0)
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->hash, pubkey, (size_t) pubkeylen);
    e8843120:	685c                	ld	a5,144(s0)
    e8843122:	7428                	ld	a0,104(s0)
    e8843124:	864a                	mv	a2,s2
    e8843126:	6f9c                	ld	a5,24(a5)
    e8843128:	85d2                	mv	a1,s4
    e884312a:	9782                	jalr	a5
  gb = BigIntegerFromBytes(pubkey, pubkeylen);
    e884312c:	85ca                	mv	a1,s2
    e884312e:	8552                	mv	a0,s4
    e8843130:	33f000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e8843134:	89aa                	mv	s3,a0
  if(BigIntegerCmp(gb, srp->modulus) >= 0 || BigIntegerCmpInt(gb, 0) == 0) {
    e8843136:	680c                	ld	a1,16(s0)
    e8843138:	427000ef          	jal	ra,e8843d5e <BigIntegerCmp>
    e884313c:	02054863          	bltz	a0,e884316c <srp6_client_key_ex+0xe6>
    BigIntegerFree(gb);
    e8843140:	854e                	mv	a0,s3
    e8843142:	4d7000ef          	jal	ra,e8843e18 <BigIntegerFree>
    cstr_clear_free(s);
    e8843146:	8526                	mv	a0,s1
    e8843148:	969ff0ef          	jal	ra,e8842ab0 <cstr_clear_free>
    return SRP_ERROR;
    e884314c:	557d                	li	a0,-1
    e884314e:	a221                	j	e8843256 <srp6_client_key_ex+0x1d0>
    BigIntegerToCstr(srp->pubkey, s);
    e8843150:	85a6                	mv	a1,s1
    e8843152:	369000ef          	jal	ra,e8843cba <BigIntegerToCstr>
    srp->hashDesc->update_f(&ctxt, s->data, (size_t) s->length);
    e8843156:	685c                	ld	a5,144(s0)
    e8843158:	4490                	lw	a2,8(s1)
    e884315a:	608c                	ld	a1,0(s1)
    e884315c:	6f9c                	ld	a5,24(a5)
    e884315e:	0088                	addi	a0,sp,64
    e8843160:	9782                	jalr	a5
    srp->hashDesc->update_f(&ctxt, pubkey, (size_t) pubkeylen);
    e8843162:	685c                	ld	a5,144(s0)
    e8843164:	864a                	mv	a2,s2
    e8843166:	85d2                	mv	a1,s4
    e8843168:	6f9c                	ld	a5,24(a5)
    e884316a:	bf71                	j	e8843106 <srp6_client_key_ex+0x80>
  if(BigIntegerCmp(gb, srp->modulus) >= 0 || BigIntegerCmpInt(gb, 0) == 0) {
    e884316c:	4581                	li	a1,0
    e884316e:	854e                	mv	a0,s3
    e8843170:	3f3000ef          	jal	ra,e8843d62 <BigIntegerCmpInt>
    e8843174:	d571                	beqz	a0,e8843140 <srp6_client_key_ex+0xba>
  e = BigIntegerFromInt(0);
    e8843176:	4501                	li	a0,0
    e8843178:	2c9000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e884317c:	892a                	mv	s2,a0
  srp->key = BigIntegerFromInt(0);
    e884317e:	4501                	li	a0,0
    e8843180:	2c1000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e8843184:	e828                	sd	a0,80(s0)
  BigIntegerSub(srp->key, srp->modulus, srp->verifier);
    e8843186:	7410                	ld	a2,40(s0)
    e8843188:	680c                	ld	a1,16(s0)
    e884318a:	413000ef          	jal	ra,e8843d9c <BigIntegerSub>
  BigIntegerMul(e, k, srp->key, srp->bctx);
    e884318e:	7834                	ld	a3,112(s0)
    e8843190:	6830                	ld	a2,80(s0)
    e8843192:	85de                	mv	a1,s7
    e8843194:	854a                	mv	a0,s2
    e8843196:	41f000ef          	jal	ra,e8843db4 <BigIntegerMul>
  BigIntegerAdd(e, e, gb);
    e884319a:	864e                	mv	a2,s3
    e884319c:	85ca                	mv	a1,s2
    e884319e:	854a                	mv	a0,s2
    e88431a0:	3cb000ef          	jal	ra,e8843d6a <BigIntegerAdd>
  BigIntegerMod(gb, e, srp->modulus, srp->bctx);
    e88431a4:	7834                	ld	a3,112(s0)
    e88431a6:	6810                	ld	a2,16(s0)
    e88431a8:	85ca                	mv	a1,s2
    e88431aa:	854e                	mv	a0,s3
    e88431ac:	421000ef          	jal	ra,e8843dcc <BigIntegerMod>
  BigIntegerMul(e, srp->password, srp->u, srp->bctx);
    e88431b0:	7834                	ld	a3,112(s0)
    e88431b2:	6430                	ld	a2,72(s0)
    e88431b4:	780c                	ld	a1,48(s0)
    e88431b6:	854a                	mv	a0,s2
    e88431b8:	3fd000ef          	jal	ra,e8843db4 <BigIntegerMul>
  BigIntegerAdd(e, e, srp->secret);	/* e = a + ux */
    e88431bc:	6030                	ld	a2,64(s0)
    e88431be:	85ca                	mv	a1,s2
    e88431c0:	854a                	mv	a0,s2
    e88431c2:	3a9000ef          	jal	ra,e8843d6a <BigIntegerAdd>
  BigIntegerModExp(srp->key, gb, e, srp->modulus, srp->bctx, srp->accel);
    e88431c6:	7c3c                	ld	a5,120(s0)
    e88431c8:	7838                	ld	a4,112(s0)
    e88431ca:	6814                	ld	a3,16(s0)
    e88431cc:	6828                	ld	a0,80(s0)
    e88431ce:	864a                	mv	a2,s2
    e88431d0:	85ce                	mv	a1,s3
    e88431d2:	42d000ef          	jal	ra,e8843dfe <BigIntegerModExp>
  BigIntegerClearFree(e);
    e88431d6:	854a                	mv	a0,s2
    e88431d8:	45d000ef          	jal	ra,e8843e34 <BigIntegerClearFree>
  BigIntegerClearFree(gb);
    e88431dc:	854e                	mv	a0,s3
    e88431de:	457000ef          	jal	ra,e8843e34 <BigIntegerClearFree>
  BigIntegerToCstr(srp->key, s);
    e88431e2:	6828                	ld	a0,80(s0)
    e88431e4:	85a6                	mv	a1,s1
    e88431e6:	2d5000ef          	jal	ra,e8843cba <BigIntegerToCstr>
  if(srp->hashDesc->keyLen == 40) {
    e88431ea:	685c                	ld	a5,144(s0)
    e88431ec:	02800713          	li	a4,40
    e88431f0:	6794                	ld	a3,8(a5)
    e88431f2:	06e69d63          	bne	a3,a4,e884326c <srp6_client_key_ex+0x1e6>
    t_mgf1(CLIENT_CTXP(srp)->k, (unsigned int)srp->hashDesc->keyLen, (const unsigned char *) s->data, (unsigned int)s->length); /* Interleaved hash */
    e88431f6:	7428                	ld	a0,104(s0)
    e88431f8:	4494                	lw	a3,8(s1)
    e88431fa:	6090                	ld	a2,0(s1)
    e88431fc:	02800593          	li	a1,40
    e8843200:	1a050513          	addi	a0,a0,416
    e8843204:	c25ff0ef          	jal	ra,e8842e28 <t_mgf1>
  cstr_clear_free(s);
    e8843208:	8526                	mv	a0,s1
    e884320a:	8a7ff0ef          	jal	ra,e8842ab0 <cstr_clear_free>
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->hash, CLIENT_CTXP(srp)->k, srp->hashDesc->keyLen);
    e884320e:	685c                	ld	a5,144(s0)
    e8843210:	7428                	ld	a0,104(s0)
    e8843212:	6790                	ld	a2,8(a5)
    e8843214:	6f98                	ld	a4,24(a5)
    e8843216:	1a050593          	addi	a1,a0,416
    e884321a:	9702                	jalr	a4
  if(srp->ex_data->length > 0)
    e884321c:	6c3c                	ld	a5,88(s0)
    e884321e:	4790                	lw	a2,8(a5)
    e8843220:	00c05763          	blez	a2,e884322e <srp6_client_key_ex+0x1a8>
    srp->hashDesc->update_f(&CLIENT_CTXP(srp)->hash, srp->ex_data->data, (size_t) srp->ex_data->length);
    e8843224:	6858                	ld	a4,144(s0)
    e8843226:	638c                	ld	a1,0(a5)
    e8843228:	7428                	ld	a0,104(s0)
    e884322a:	6f18                	ld	a4,24(a4)
    e884322c:	9702                	jalr	a4
  return SRP_SUCCESS;
    e884322e:	4501                	li	a0,0
  if(result) {
    e8843230:	020a8363          	beqz	s5,e8843256 <srp6_client_key_ex+0x1d0>
    if(*result == NULL)
    e8843234:	000ab783          	ld	a5,0(s5)
    e8843238:	e789                	bnez	a5,e8843242 <srp6_client_key_ex+0x1bc>
      *result = cstr_new();
    e884323a:	871ff0ef          	jal	ra,e8842aaa <cstr_new>
    e884323e:	00aab023          	sd	a0,0(s5)
    cstr_setn(*result, (const char *) CLIENT_CTXP(srp)->k, (int) srp->hashDesc->keyLen);
    e8843242:	685c                	ld	a5,144(s0)
    e8843244:	742c                	ld	a1,104(s0)
    e8843246:	000ab503          	ld	a0,0(s5)
    e884324a:	4790                	lw	a2,8(a5)
    e884324c:	1a058593          	addi	a1,a1,416
    e8843250:	8e3ff0ef          	jal	ra,e8842b32 <cstr_setn>
  return SRP_SUCCESS;
    e8843254:	4501                	li	a0,0
}
    e8843256:	60f6                	ld	ra,344(sp)
    e8843258:	6456                	ld	s0,336(sp)
    e884325a:	64b6                	ld	s1,328(sp)
    e884325c:	6916                	ld	s2,320(sp)
    e884325e:	79f2                	ld	s3,312(sp)
    e8843260:	7a52                	ld	s4,304(sp)
    e8843262:	7ab2                	ld	s5,296(sp)
    e8843264:	7b12                	ld	s6,288(sp)
    e8843266:	6bf2                	ld	s7,280(sp)
    e8843268:	6135                	addi	sp,sp,352
    e884326a:	8082                	ret
    srp->hashDesc->init_f(&ctxt);
    e884326c:	6b9c                	ld	a5,16(a5)
    e884326e:	0088                	addi	a0,sp,64
    e8843270:	9782                	jalr	a5
    srp->hashDesc->update_f(&ctxt, s->data, (size_t)s->length);
    e8843272:	685c                	ld	a5,144(s0)
    e8843274:	608c                	ld	a1,0(s1)
    e8843276:	4490                	lw	a2,8(s1)
    e8843278:	6f9c                	ld	a5,24(a5)
    e884327a:	0088                	addi	a0,sp,64
    e884327c:	9782                	jalr	a5
    srp->hashDesc->final_f(CLIENT_CTXP(srp)->k, &ctxt);
    e884327e:	685c                	ld	a5,144(s0)
    e8843280:	7428                	ld	a0,104(s0)
    e8843282:	008c                	addi	a1,sp,64
    e8843284:	739c                	ld	a5,32(a5)
    e8843286:	1a050513          	addi	a0,a0,416
    e884328a:	9782                	jalr	a5
    e884328c:	bfb5                	j	e8843208 <srp6_client_key_ex+0x182>

00000000e884328e <srp6a_client_key>:
{
    e884328e:	714d                	addi	sp,sp,-336
    e8843290:	e686                	sd	ra,328(sp)
    e8843292:	e2a2                	sd	s0,320(sp)
    e8843294:	fe26                	sd	s1,312(sp)
    e8843296:	f64e                	sd	s3,296(sp)
    e8843298:	f252                	sd	s4,288(sp)
    e884329a:	ee56                	sd	s5,280(sp)
    e884329c:	fa4a                	sd	s2,304(sp)
  srp->hashDesc->init_f(&ctxt);
    e884329e:	695c                	ld	a5,144(a0)
{
    e88432a0:	842a                	mv	s0,a0
  srp->hashDesc->init_f(&ctxt);
    e88432a2:	0088                	addi	a0,sp,64
    e88432a4:	6b9c                	ld	a5,16(a5)
{
    e88432a6:	8a32                	mv	s4,a2
    e88432a8:	8ab6                	mv	s5,a3
    e88432aa:	89ae                	mv	s3,a1
  srp->hashDesc->init_f(&ctxt);
    e88432ac:	9782                	jalr	a5
  s = cstr_new();
    e88432ae:	ffcff0ef          	jal	ra,e8842aaa <cstr_new>
    e88432b2:	84aa                	mv	s1,a0
  BigIntegerToCstr(srp->modulus, s);
    e88432b4:	85aa                	mv	a1,a0
    e88432b6:	6808                	ld	a0,16(s0)
    e88432b8:	203000ef          	jal	ra,e8843cba <BigIntegerToCstr>
  srp->hashDesc->update_f(&ctxt, s->data, (size_t) s->length);
    e88432bc:	685c                	ld	a5,144(s0)
    e88432be:	4490                	lw	a2,8(s1)
    e88432c0:	608c                	ld	a1,0(s1)
    e88432c2:	6f9c                	ld	a5,24(a5)
    e88432c4:	0088                	addi	a0,sp,64
    e88432c6:	9782                	jalr	a5
  if(srp->flags & SRP_FLAG_LEFT_PAD)
    e88432c8:	405c                	lw	a5,4(s0)
    e88432ca:	6c08                	ld	a0,24(s0)
    e88432cc:	8b89                	andi	a5,a5,2
    e88432ce:	c3bd                	beqz	a5,e8843334 <srp6a_client_key+0xa6>
    BigIntegerToCstrEx(srp->generator, s, s->length);
    e88432d0:	4490                	lw	a2,8(s1)
    e88432d2:	85a6                	mv	a1,s1
    e88432d4:	231000ef          	jal	ra,e8843d04 <BigIntegerToCstrEx>
  srp->hashDesc->update_f(&ctxt, s->data, (size_t)s->length);
    e88432d8:	685c                	ld	a5,144(s0)
    e88432da:	4490                	lw	a2,8(s1)
    e88432dc:	608c                	ld	a1,0(s1)
    e88432de:	6f9c                	ld	a5,24(a5)
    e88432e0:	0088                	addi	a0,sp,64
    e88432e2:	9782                	jalr	a5
  srp->hashDesc->final_f(dig, &ctxt);
    e88432e4:	685c                	ld	a5,144(s0)
    e88432e6:	008c                	addi	a1,sp,64
    e88432e8:	850a                	mv	a0,sp
    e88432ea:	739c                	ld	a5,32(a5)
    e88432ec:	9782                	jalr	a5
  cstr_free(s);
    e88432ee:	8526                	mv	a0,s1
    e88432f0:	80dff0ef          	jal	ra,e8842afc <cstr_free>
    ret = SRP_ERROR;
    e88432f4:	54fd                	li	s1,-1
  k = BigIntegerFromBytes(dig, (int) srp->hashDesc->digestLen);
    e88432f6:	685c                	ld	a5,144(s0)
    e88432f8:	850a                	mv	a0,sp
    e88432fa:	438c                	lw	a1,0(a5)
    e88432fc:	173000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e8843300:	892a                	mv	s2,a0
  if(BigIntegerCmpInt(k, 0) == 0)
    e8843302:	4581                	li	a1,0
    e8843304:	25f000ef          	jal	ra,e8843d62 <BigIntegerCmpInt>
    e8843308:	c909                	beqz	a0,e884331a <srp6a_client_key+0x8c>
    ret = srp6_client_key_ex(srp, result, pubkey, pubkeylen, k);
    e884330a:	874a                	mv	a4,s2
    e884330c:	86d6                	mv	a3,s5
    e884330e:	8652                	mv	a2,s4
    e8843310:	85ce                	mv	a1,s3
    e8843312:	8522                	mv	a0,s0
    e8843314:	d73ff0ef          	jal	ra,e8843086 <srp6_client_key_ex>
    e8843318:	84aa                	mv	s1,a0
  BigIntegerClearFree(k);
    e884331a:	854a                	mv	a0,s2
    e884331c:	319000ef          	jal	ra,e8843e34 <BigIntegerClearFree>
}
    e8843320:	6416                	ld	s0,320(sp)
    e8843322:	60b6                	ld	ra,328(sp)
    e8843324:	8526                	mv	a0,s1
    e8843326:	7952                	ld	s2,304(sp)
    e8843328:	74f2                	ld	s1,312(sp)
    e884332a:	79b2                	ld	s3,296(sp)
    e884332c:	7a12                	ld	s4,288(sp)
    e884332e:	6af2                	ld	s5,280(sp)
    e8843330:	6171                	addi	sp,sp,336
    e8843332:	8082                	ret
    BigIntegerToCstr(srp->generator, s);
    e8843334:	85a6                	mv	a1,s1
    e8843336:	185000ef          	jal	ra,e8843cba <BigIntegerToCstr>
    e884333a:	bf79                	j	e88432d8 <srp6a_client_key+0x4a>

00000000e884333c <srp6_client_genpub>:
{
    e884333c:	7139                	addi	sp,sp,-64
    e884333e:	fc06                	sd	ra,56(sp)
    e8843340:	ec22                	sd	s0,24(sp)
    e8843342:	f44a                	sd	s2,40(sp)
    e8843344:	f84e                	sd	s3,48(sp)
    e8843346:	f026                	sd	s1,32(sp)
    e8843348:	842a                	mv	s0,a0
  int slen = (SRP_get_secret_bits(BigIntegerBitLen(srp->modulus)) + 7) / 8;
    e884334a:	6908                	ld	a0,16(a0)
{
    e884334c:	892e                	mv	s2,a1
  int slen = (SRP_get_secret_bits(BigIntegerBitLen(srp->modulus)) + 7) / 8;
    e884334e:	49a1                	li	s3,8
    e8843350:	20b000ef          	jal	ra,e8843d5a <BigIntegerBitLen>
    e8843354:	88dff0ef          	jal	ra,e8842be0 <SRP_get_secret_bits>
    e8843358:	251d                	addiw	a0,a0,7
    e884335a:	033549bb          	divw	s3,a0,s3
  if(result == NULL)
    e884335e:	08091d63          	bnez	s2,e88433f8 <srp6_client_genpub+0xbc>
    astr = cstr_new();
    e8843362:	f48ff0ef          	jal	ra,e8842aaa <cstr_new>
    e8843366:	84aa                	mv	s1,a0
  cstr_set_length(astr, BigIntegerByteLen(srp->modulus));
    e8843368:	6808                	ld	a0,16(s0)
    e884336a:	1f1000ef          	jal	ra,e8843d5a <BigIntegerBitLen>
    e884336e:	0075059b          	addiw	a1,a0,7
    e8843372:	47a1                	li	a5,8
    e8843374:	8526                	mv	a0,s1
    e8843376:	02f5c5bb          	divw	a1,a1,a5
    e884337a:	801ff0ef          	jal	ra,e8842b7a <cstr_set_length>
    t_random((unsigned char *) astr->data, (size_t)slen);
    e884337e:	6088                	ld	a0,0(s1)
    e8843380:	85ce                	mv	a1,s3
    e8843382:	523190ef          	jal	ra,e885d0a4 <RandomBytes>
  srp->secret = BigIntegerFromBytes((const unsigned char *) astr->data, slen);
    e8843386:	6088                	ld	a0,0(s1)
    e8843388:	85ce                	mv	a1,s3
    e884338a:	0e5000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e884338e:	e028                	sd	a0,64(s0)
    e8843390:	e42a                	sd	a0,8(sp)
  BigIntegerAddInt(srp->secret, srp->secret, (unsigned int)BigIntegerBitLen(srp->modulus));
    e8843392:	6808                	ld	a0,16(s0)
    e8843394:	1c7000ef          	jal	ra,e8843d5a <BigIntegerBitLen>
    e8843398:	0005061b          	sext.w	a2,a0
    e884339c:	65a2                	ld	a1,8(sp)
    e884339e:	852e                	mv	a0,a1
    e88433a0:	1e3000ef          	jal	ra,e8843d82 <BigIntegerAddInt>
  srp->pubkey = BigIntegerFromInt(0);
    e88433a4:	4501                	li	a0,0
    e88433a6:	09b000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e88433aa:	fc08                	sd	a0,56(s0)
  BigIntegerModExp(srp->pubkey, srp->generator, srp->secret, srp->modulus, srp->bctx, srp->accel);
    e88433ac:	7c3c                	ld	a5,120(s0)
    e88433ae:	7838                	ld	a4,112(s0)
    e88433b0:	6814                	ld	a3,16(s0)
    e88433b2:	6030                	ld	a2,64(s0)
    e88433b4:	6c0c                	ld	a1,24(s0)
    e88433b6:	249000ef          	jal	ra,e8843dfe <BigIntegerModExp>
  BigIntegerToCstr(srp->pubkey, astr);
    e88433ba:	7c08                	ld	a0,56(s0)
    e88433bc:	85a6                	mv	a1,s1
    e88433be:	0fd000ef          	jal	ra,e8843cba <BigIntegerToCstr>
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->hash, astr->data, (size_t) astr->length);
    e88433c2:	685c                	ld	a5,144(s0)
    e88433c4:	4490                	lw	a2,8(s1)
    e88433c6:	608c                	ld	a1,0(s1)
    e88433c8:	6f9c                	ld	a5,24(a5)
    e88433ca:	7428                	ld	a0,104(s0)
    e88433cc:	9782                	jalr	a5
  srp->hashDesc->update_f(&CLIENT_CTXP(srp)->ckhash, astr->data, (size_t) astr->length);
    e88433ce:	685c                	ld	a5,144(s0)
    e88433d0:	7428                	ld	a0,104(s0)
    e88433d2:	4490                	lw	a2,8(s1)
    e88433d4:	6f9c                	ld	a5,24(a5)
    e88433d6:	608c                	ld	a1,0(s1)
    e88433d8:	0d050513          	addi	a0,a0,208
    e88433dc:	9782                	jalr	a5
  if(result == NULL)	/* astr was a temporary */
    e88433de:	00091563          	bnez	s2,e88433e8 <srp6_client_genpub+0xac>
    cstr_clear_free(astr);
    e88433e2:	8526                	mv	a0,s1
    e88433e4:	eccff0ef          	jal	ra,e8842ab0 <cstr_clear_free>
}
    e88433e8:	70e2                	ld	ra,56(sp)
    e88433ea:	6462                	ld	s0,24(sp)
    e88433ec:	7482                	ld	s1,32(sp)
    e88433ee:	7922                	ld	s2,40(sp)
    e88433f0:	79c2                	ld	s3,48(sp)
    e88433f2:	4501                	li	a0,0
    e88433f4:	6121                	addi	sp,sp,64
    e88433f6:	8082                	ret
    if(*result == NULL)
    e88433f8:	00093783          	ld	a5,0(s2)
    e88433fc:	e789                	bnez	a5,e8843406 <srp6_client_genpub+0xca>
      *result = cstr_new();
    e88433fe:	eacff0ef          	jal	ra,e8842aaa <cstr_new>
    e8843402:	00a93023          	sd	a0,0(s2)
    astr = *result;
    e8843406:	00093483          	ld	s1,0(s2)
    e884340a:	bfb9                	j	e8843368 <srp6_client_genpub+0x2c>

00000000e884340c <srp6_client_passwd>:
{
    e884340c:	7169                	addi	sp,sp,-304
    e884340e:	f606                	sd	ra,296(sp)
    e8843410:	f222                	sd	s0,288(sp)
    e8843412:	ee26                	sd	s1,280(sp)
    e8843414:	ea4a                	sd	s2,272(sp)
  srp->hashDesc->init_f(&ctxt);
    e8843416:	695c                	ld	a5,144(a0)
{
    e8843418:	842a                	mv	s0,a0
  srp->hashDesc->init_f(&ctxt);
    e884341a:	0088                	addi	a0,sp,64
    e884341c:	6b9c                	ld	a5,16(a5)
{
    e884341e:	84ae                	mv	s1,a1
    e8843420:	8932                	mv	s2,a2
  srp->hashDesc->init_f(&ctxt);
    e8843422:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, srp->username->data, (size_t) srp->username->length);
    e8843424:	641c                	ld	a5,8(s0)
    e8843426:	6858                	ld	a4,144(s0)
    e8843428:	0088                	addi	a0,sp,64
    e884342a:	4790                	lw	a2,8(a5)
    e884342c:	6f18                	ld	a4,24(a4)
    e884342e:	638c                	ld	a1,0(a5)
    e8843430:	9702                	jalr	a4
  srp->hashDesc->update_f(&ctxt, ":", 1);
    e8843432:	685c                	ld	a5,144(s0)
    e8843434:	0088                	addi	a0,sp,64
    e8843436:	4605                	li	a2,1
    e8843438:	6f9c                	ld	a5,24(a5)
    e884343a:	0007a597          	auipc	a1,0x7a
    e884343e:	5fe58593          	addi	a1,a1,1534 # e88bda38 <kSRPHashDescriptor_SHA512+0x28>
    e8843442:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, p, (size_t) plen);
    e8843444:	685c                	ld	a5,144(s0)
    e8843446:	864a                	mv	a2,s2
    e8843448:	85a6                	mv	a1,s1
    e884344a:	6f9c                	ld	a5,24(a5)
    e884344c:	0088                	addi	a0,sp,64
    e884344e:	9782                	jalr	a5
  srp->hashDesc->final_f(dig, &ctxt);	/* dig = H(U | ":" | P) */
    e8843450:	685c                	ld	a5,144(s0)
    e8843452:	008c                	addi	a1,sp,64
    e8843454:	850a                	mv	a0,sp
    e8843456:	739c                	ld	a5,32(a5)
    e8843458:	9782                	jalr	a5
  srp->hashDesc->init_f(&ctxt);
    e884345a:	685c                	ld	a5,144(s0)
    e884345c:	0088                	addi	a0,sp,64
    e884345e:	6b9c                	ld	a5,16(a5)
    e8843460:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, srp->salt->data, (size_t) srp->salt->length);
    e8843462:	701c                	ld	a5,32(s0)
    e8843464:	6858                	ld	a4,144(s0)
    e8843466:	0088                	addi	a0,sp,64
    e8843468:	4790                	lw	a2,8(a5)
    e884346a:	638c                	ld	a1,0(a5)
    e884346c:	6f18                	ld	a4,24(a4)
    e884346e:	9702                	jalr	a4
  srp->hashDesc->update_f(&ctxt, dig, srp->hashDesc->digestLen);
    e8843470:	685c                	ld	a5,144(s0)
    e8843472:	858a                	mv	a1,sp
    e8843474:	0088                	addi	a0,sp,64
    e8843476:	6f98                	ld	a4,24(a5)
    e8843478:	6390                	ld	a2,0(a5)
    e884347a:	9702                	jalr	a4
  srp->hashDesc->final_f(dig, &ctxt);	/* dig = H(s | H(U | ":" | P)) */
    e884347c:	685c                	ld	a5,144(s0)
    e884347e:	008c                	addi	a1,sp,64
    e8843480:	850a                	mv	a0,sp
    e8843482:	739c                	ld	a5,32(a5)
    e8843484:	9782                	jalr	a5
  memset(&ctxt, 0, sizeof(ctxt));
    e8843486:	0088                	addi	a0,sp,64
    e8843488:	0d000613          	li	a2,208
    e884348c:	4581                	li	a1,0
    e884348e:	707380ef          	jal	ra,e887c394 <eLIBs_memset>
  r = SRP_set_authenticator(srp, dig, (int) srp->hashDesc->digestLen);
    e8843492:	685c                	ld	a5,144(s0)
    e8843494:	858a                	mv	a1,sp
    e8843496:	8522                	mv	a0,s0
    e8843498:	4390                	lw	a2,0(a5)
    e884349a:	95fff0ef          	jal	ra,e8842df8 <SRP_set_authenticator>
    e884349e:	84aa                	mv	s1,a0
  memset(dig, 0, srp->hashDesc->digestLen);
    e88434a0:	685c                	ld	a5,144(s0)
    e88434a2:	850a                	mv	a0,sp
    e88434a4:	4581                	li	a1,0
    e88434a6:	6390                	ld	a2,0(a5)
    e88434a8:	6ed380ef          	jal	ra,e887c394 <eLIBs_memset>
}
    e88434ac:	7412                	ld	s0,288(sp)
    e88434ae:	70b2                	ld	ra,296(sp)
    e88434b0:	8526                	mv	a0,s1
    e88434b2:	6952                	ld	s2,272(sp)
    e88434b4:	64f2                	ld	s1,280(sp)
    e88434b6:	6155                	addi	sp,sp,304
    e88434b8:	8082                	ret

00000000e88434ba <srp6_client_finish>:
  if(srp->meth_data) {
    e88434ba:	753c                	ld	a5,104(a0)
    e88434bc:	c39d                	beqz	a5,e88434e2 <srp6_client_finish+0x28>
{
    e88434be:	1141                	addi	sp,sp,-16
    e88434c0:	e022                	sd	s0,0(sp)
    memset(srp->meth_data, 0, sizeof(struct client_meth_st));
    e88434c2:	1e000613          	li	a2,480
    e88434c6:	842a                	mv	s0,a0
    e88434c8:	4581                	li	a1,0
    e88434ca:	853e                	mv	a0,a5
{
    e88434cc:	e406                	sd	ra,8(sp)
    memset(srp->meth_data, 0, sizeof(struct client_meth_st));
    e88434ce:	6c7380ef          	jal	ra,e887c394 <eLIBs_memset>
    free(srp->meth_data);
    e88434d2:	7428                	ld	a0,104(s0)
    e88434d4:	62d380ef          	jal	ra,e887c300 <eLIBs_free>
}
    e88434d8:	6402                	ld	s0,0(sp)
    e88434da:	60a2                	ld	ra,8(sp)
    e88434dc:	4501                	li	a0,0
    e88434de:	0141                	addi	sp,sp,16
    e88434e0:	8082                	ret
    e88434e2:	4501                	li	a0,0
    e88434e4:	8082                	ret

00000000e88434e6 <srp6a_client_init>:
{
    e88434e6:	1141                	addi	sp,sp,-16
  srp->magic = SRP_MAGIC_CLIENT;
    e88434e8:	478d                	li	a5,3
{
    e88434ea:	e406                	sd	ra,8(sp)
    e88434ec:	e022                	sd	s0,0(sp)
  srp->magic = SRP_MAGIC_CLIENT;
    e88434ee:	1782                	slli	a5,a5,0x20
    e88434f0:	07b1                	addi	a5,a5,12
{
    e88434f2:	842a                	mv	s0,a0
  srp->magic = SRP_MAGIC_CLIENT;
    e88434f4:	e11c                	sd	a5,0(a0)
  srp->meth_data = malloc(sizeof(struct client_meth_st));
    e88434f6:	1e000513          	li	a0,480
    e88434fa:	354380ef          	jal	ra,e887b84e <my_malloc>
    e88434fe:	f428                	sd	a0,104(s0)
  srp->hashDesc->init_f(&CLIENT_CTXP(srp)->hash);
    e8843500:	685c                	ld	a5,144(s0)
    e8843502:	6b9c                	ld	a5,16(a5)
    e8843504:	9782                	jalr	a5
  srp->hashDesc->init_f(&CLIENT_CTXP(srp)->ckhash);
    e8843506:	685c                	ld	a5,144(s0)
    e8843508:	7428                	ld	a0,104(s0)
    e884350a:	6b9c                	ld	a5,16(a5)
    e884350c:	0d050513          	addi	a0,a0,208
    e8843510:	9782                	jalr	a5
}
    e8843512:	6402                	ld	s0,0(sp)
    e8843514:	60a2                	ld	ra,8(sp)
    e8843516:	4501                	li	a0,0
    e8843518:	0141                	addi	sp,sp,16
    e884351a:	8082                	ret

00000000e884351c <SRP6a_client_method>:

_TYPE( SRP_METHOD * )
SRP6a_client_method()
{
  return &srp6a_client_meth;
}
    e884351c:	00091517          	auipc	a0,0x91
    e8843520:	5ac50513          	addi	a0,a0,1452 # e88d4ac8 <srp6a_client_meth>
    e8843524:	8082                	ret

00000000e8843526 <srp6_server_params>:

static SRP_RESULT
srp6_server_params(SRP * srp, const unsigned char * modulus, int modlen,
		   const unsigned char * generator, int genlen,
		   const unsigned char * salt, int saltlen)
{
    e8843526:	7125                	addi	sp,sp,-416
    e8843528:	ef06                	sd	ra,408(sp)
    e884352a:	eb22                	sd	s0,400(sp)
    e884352c:	e726                	sd	s1,392(sp)
    e884352e:	e34a                	sd	s2,384(sp)
    e8843530:	fece                	sd	s3,376(sp)
    e8843532:	893e                	mv	s2,a5
  int i;

  /* Fields set by SRP_set_params */

  /* Update hash state */
  srp->hashDesc->init_f(&ctxt);
    e8843534:	695c                	ld	a5,144(a0)
{
    e8843536:	842a                	mv	s0,a0
  srp->hashDesc->init_f(&ctxt);
    e8843538:	1108                	addi	a0,sp,160
    e884353a:	6b9c                	ld	a5,16(a5)
{
    e884353c:	89c2                	mv	s3,a6
    e884353e:	e436                	sd	a3,8(sp)
    e8843540:	e03a                	sd	a4,0(sp)
    e8843542:	ec2e                	sd	a1,24(sp)
    e8843544:	e832                	sd	a2,16(sp)
  srp->hashDesc->init_f(&ctxt);
    e8843546:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, modulus, (size_t)modlen);
  srp->hashDesc->final_f(buf1, &ctxt);	/* buf1 = H(modulus) */

  srp->hashDesc->init_f(&ctxt);
  srp->hashDesc->update_f(&ctxt, generator, (size_t)genlen);
  srp->hashDesc->final_f(buf2, &ctxt);	/* buf2 = H(generator) */
    e8843548:	1084                	addi	s1,sp,96
  srp->hashDesc->update_f(&ctxt, modulus, (size_t)modlen);
    e884354a:	685c                	ld	a5,144(s0)
    e884354c:	fab1460b          	ldd	a2,a1,(sp),1,4
    e8843550:	1108                	addi	a0,sp,160
    e8843552:	6f9c                	ld	a5,24(a5)
    e8843554:	9782                	jalr	a5
  srp->hashDesc->final_f(buf1, &ctxt);	/* buf1 = H(modulus) */
    e8843556:	685c                	ld	a5,144(s0)
    e8843558:	110c                	addi	a1,sp,160
    e884355a:	1008                	addi	a0,sp,32
    e884355c:	739c                	ld	a5,32(a5)
    e884355e:	9782                	jalr	a5
  srp->hashDesc->init_f(&ctxt);
    e8843560:	685c                	ld	a5,144(s0)
    e8843562:	1108                	addi	a0,sp,160
    e8843564:	6b9c                	ld	a5,16(a5)
    e8843566:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, generator, (size_t)genlen);
    e8843568:	685c                	ld	a5,144(s0)
    e884356a:	6702                	ld	a4,0(sp)
    e884356c:	66a2                	ld	a3,8(sp)
    e884356e:	6f9c                	ld	a5,24(a5)
    e8843570:	863a                	mv	a2,a4
    e8843572:	85b6                	mv	a1,a3
    e8843574:	1108                	addi	a0,sp,160
    e8843576:	9782                	jalr	a5
  srp->hashDesc->final_f(buf2, &ctxt);	/* buf2 = H(generator) */
    e8843578:	685c                	ld	a5,144(s0)
    e884357a:	110c                	addi	a1,sp,160
    e884357c:	8526                	mv	a0,s1
    e884357e:	739c                	ld	a5,32(a5)
    e8843580:	9782                	jalr	a5

  for(i = 0; i < (int) srp->hashDesc->digestLen; ++i)
    e8843582:	684c                	ld	a1,144(s0)
    e8843584:	4701                	li	a4,0
    e8843586:	6190                	ld	a2,0(a1)
    e8843588:	0007079b          	sext.w	a5,a4
    e884358c:	0006069b          	sext.w	a3,a2
    e8843590:	06d7c063          	blt	a5,a3,e88435f0 <srp6_server_params+0xca>
    buf1[i] ^= buf2[i];		/* buf1 = H(modulus) XOR H(generator) */

  /* ckhash: H(N) xor H(g) */
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->ckhash, buf1, srp->hashDesc->digestLen);
    e8843594:	7428                	ld	a0,104(s0)
    e8843596:	6d9c                	ld	a5,24(a1)
    e8843598:	100c                	addi	a1,sp,32
    e884359a:	0d050513          	addi	a0,a0,208
    e884359e:	9782                	jalr	a5

  srp->hashDesc->init_f(&ctxt);
    e88435a0:	685c                	ld	a5,144(s0)
    e88435a2:	1108                	addi	a0,sp,160
    e88435a4:	6b9c                	ld	a5,16(a5)
    e88435a6:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, srp->username->data, (size_t)srp->username->length);
    e88435a8:	6418                	ld	a4,8(s0)
    e88435aa:	685c                	ld	a5,144(s0)
    e88435ac:	1108                	addi	a0,sp,160
    e88435ae:	4710                	lw	a2,8(a4)
    e88435b0:	630c                	ld	a1,0(a4)
    e88435b2:	6f9c                	ld	a5,24(a5)
    e88435b4:	9782                	jalr	a5
  srp->hashDesc->final_f(buf1, &ctxt);	/* buf1 = H(user) */
    e88435b6:	685c                	ld	a5,144(s0)
    e88435b8:	110c                	addi	a1,sp,160
    e88435ba:	1008                	addi	a0,sp,32
    e88435bc:	739c                	ld	a5,32(a5)
    e88435be:	9782                	jalr	a5

  /* ckhash: (H(N) xor H(g)) | H(U) */
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->ckhash, buf1, srp->hashDesc->digestLen);
    e88435c0:	6858                	ld	a4,144(s0)
    e88435c2:	7428                	ld	a0,104(s0)
    e88435c4:	100c                	addi	a1,sp,32
    e88435c6:	6f1c                	ld	a5,24(a4)
    e88435c8:	6310                	ld	a2,0(a4)
    e88435ca:	0d050513          	addi	a0,a0,208
    e88435ce:	9782                	jalr	a5

  /* ckhash: (H(N) xor H(g)) | H(U) | s */
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->ckhash, salt, (size_t)saltlen);
    e88435d0:	685c                	ld	a5,144(s0)
    e88435d2:	7428                	ld	a0,104(s0)
    e88435d4:	864e                	mv	a2,s3
    e88435d6:	6f98                	ld	a4,24(a5)
    e88435d8:	85ca                	mv	a1,s2
    e88435da:	0d050513          	addi	a0,a0,208
    e88435de:	9702                	jalr	a4

  return SRP_SUCCESS;
}
    e88435e0:	645a                	ld	s0,400(sp)
    e88435e2:	60fa                	ld	ra,408(sp)
    e88435e4:	64ba                	ld	s1,392(sp)
    e88435e6:	691a                	ld	s2,384(sp)
    e88435e8:	79f6                	ld	s3,376(sp)
    e88435ea:	4501                	li	a0,0
    e88435ec:	611d                	addi	sp,sp,416
    e88435ee:	8082                	ret
    buf1[i] ^= buf2[i];		/* buf1 = H(modulus) XOR H(generator) */
    e88435f0:	101c                	addi	a5,sp,32
    e88435f2:	80e7c68b          	lrbu	a3,a5,a4,0
    e88435f6:	80e4c78b          	lrbu	a5,s1,a4,0
    e88435fa:	8ebd                	xor	a3,a3,a5
    e88435fc:	101c                	addi	a5,sp,32
    e88435fe:	00e7d68b          	srb	a3,a5,a4,0
  for(i = 0; i < (int) srp->hashDesc->digestLen; ++i)
    e8843602:	0705                	addi	a4,a4,1
    e8843604:	b749                	j	e8843586 <srp6_server_params+0x60>

00000000e8843606 <srp6_server_respond>:
}

static SRP_RESULT
srp6_server_respond(SRP * srp, cstr ** proof)
{
  if(proof == NULL)
    e8843606:	c1a1                	beqz	a1,e8843646 <srp6_server_respond+0x40>
{
    e8843608:	1101                	addi	sp,sp,-32
    e884360a:	e422                	sd	s0,8(sp)
    e884360c:	e826                	sd	s1,16(sp)
    e884360e:	ec06                	sd	ra,24(sp)
    return SRP_ERROR;

  if(*proof == NULL)
    e8843610:	619c                	ld	a5,0(a1)
    e8843612:	842e                	mv	s0,a1
    e8843614:	84aa                	mv	s1,a0
    e8843616:	e781                	bnez	a5,e884361e <srp6_server_respond+0x18>
    *proof = cstr_new();
    e8843618:	c92ff0ef          	jal	ra,e8842aaa <cstr_new>
    e884361c:	e008                	sd	a0,0(s0)

  cstr_set_length(*proof, (int) srp->hashDesc->digestLen);
    e884361e:	68dc                	ld	a5,144(s1)
    e8843620:	6008                	ld	a0,0(s0)
    e8843622:	438c                	lw	a1,0(a5)
    e8843624:	d56ff0ef          	jal	ra,e8842b7a <cstr_set_length>
  memcpy((*proof)->data, SERVER_CTXP(srp)->r, srp->hashDesc->digestLen);
    e8843628:	68d8                	ld	a4,144(s1)
    e884362a:	601c                	ld	a5,0(s0)
    e884362c:	74ac                	ld	a1,104(s1)
    e884362e:	6310                	ld	a2,0(a4)
    e8843630:	6388                	ld	a0,0(a5)
    e8843632:	38058593          	addi	a1,a1,896
    e8843636:	56b380ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  return SRP_SUCCESS;
}
    e884363a:	6422                	ld	s0,8(sp)
    e884363c:	60e2                	ld	ra,24(sp)
    e884363e:	64c2                	ld	s1,16(sp)
  return SRP_SUCCESS;
    e8843640:	4501                	li	a0,0
}
    e8843642:	6105                	addi	sp,sp,32
    e8843644:	8082                	ret
    return SRP_ERROR;
    e8843646:	557d                	li	a0,-1
}
    e8843648:	8082                	ret

00000000e884364a <srp6_server_auth>:
{
    e884364a:	1141                	addi	sp,sp,-16
    e884364c:	e022                	sd	s0,0(sp)
    e884364e:	842a                	mv	s0,a0
    e8843650:	852e                	mv	a0,a1
  srp->verifier = BigIntegerFromBytes(a, alen);
    e8843652:	85b2                	mv	a1,a2
{
    e8843654:	e406                	sd	ra,8(sp)
  srp->verifier = BigIntegerFromBytes(a, alen);
    e8843656:	618000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e884365a:	f408                	sd	a0,40(s0)
}
    e884365c:	60a2                	ld	ra,8(sp)
    e884365e:	6402                	ld	s0,0(sp)
    e8843660:	4501                	li	a0,0
    e8843662:	0141                	addi	sp,sp,16
    e8843664:	8082                	ret

00000000e8843666 <srp6_server_passwd>:
{
    e8843666:	7169                	addi	sp,sp,-304
    e8843668:	f606                	sd	ra,296(sp)
    e884366a:	f222                	sd	s0,288(sp)
    e884366c:	ee26                	sd	s1,280(sp)
    e884366e:	ea4a                	sd	s2,272(sp)
  srp->hashDesc->init_f(&ctxt);
    e8843670:	695c                	ld	a5,144(a0)
{
    e8843672:	842a                	mv	s0,a0
  srp->hashDesc->init_f(&ctxt);
    e8843674:	0088                	addi	a0,sp,64
    e8843676:	6b9c                	ld	a5,16(a5)
{
    e8843678:	84ae                	mv	s1,a1
    e884367a:	8932                	mv	s2,a2
  srp->hashDesc->init_f(&ctxt);
    e884367c:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, srp->username->data, (size_t)srp->username->length);
    e884367e:	641c                	ld	a5,8(s0)
    e8843680:	6858                	ld	a4,144(s0)
    e8843682:	0088                	addi	a0,sp,64
    e8843684:	4790                	lw	a2,8(a5)
    e8843686:	6f18                	ld	a4,24(a4)
    e8843688:	638c                	ld	a1,0(a5)
    e884368a:	9702                	jalr	a4
  srp->hashDesc->update_f(&ctxt, ":", 1);
    e884368c:	685c                	ld	a5,144(s0)
    e884368e:	0088                	addi	a0,sp,64
    e8843690:	4605                	li	a2,1
    e8843692:	6f9c                	ld	a5,24(a5)
    e8843694:	0007a597          	auipc	a1,0x7a
    e8843698:	3a458593          	addi	a1,a1,932 # e88bda38 <kSRPHashDescriptor_SHA512+0x28>
    e884369c:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, p, (size_t)plen);
    e884369e:	685c                	ld	a5,144(s0)
    e88436a0:	864a                	mv	a2,s2
    e88436a2:	85a6                	mv	a1,s1
    e88436a4:	6f9c                	ld	a5,24(a5)
    e88436a6:	0088                	addi	a0,sp,64
    e88436a8:	9782                	jalr	a5
  srp->hashDesc->final_f(dig, &ctxt);	/* dig = H(U | ":" | P) */
    e88436aa:	685c                	ld	a5,144(s0)
    e88436ac:	008c                	addi	a1,sp,64
    e88436ae:	850a                	mv	a0,sp
    e88436b0:	739c                	ld	a5,32(a5)
    e88436b2:	9782                	jalr	a5
  srp->hashDesc->init_f(&ctxt);
    e88436b4:	685c                	ld	a5,144(s0)
    e88436b6:	0088                	addi	a0,sp,64
    e88436b8:	6b9c                	ld	a5,16(a5)
    e88436ba:	9782                	jalr	a5
  srp->hashDesc->update_f(&ctxt, srp->salt->data, (size_t)srp->salt->length);
    e88436bc:	701c                	ld	a5,32(s0)
    e88436be:	6858                	ld	a4,144(s0)
    e88436c0:	0088                	addi	a0,sp,64
    e88436c2:	4790                	lw	a2,8(a5)
    e88436c4:	638c                	ld	a1,0(a5)
    e88436c6:	6f18                	ld	a4,24(a4)
    e88436c8:	9702                	jalr	a4
  srp->hashDesc->update_f(&ctxt, dig, srp->hashDesc->digestLen);
    e88436ca:	685c                	ld	a5,144(s0)
    e88436cc:	858a                	mv	a1,sp
    e88436ce:	0088                	addi	a0,sp,64
    e88436d0:	6f98                	ld	a4,24(a5)
    e88436d2:	6390                	ld	a2,0(a5)
    e88436d4:	9702                	jalr	a4
  srp->hashDesc->final_f(dig, &ctxt);	/* dig = H(s | H(U | ":" | P)) */
    e88436d6:	685c                	ld	a5,144(s0)
    e88436d8:	008c                	addi	a1,sp,64
    e88436da:	850a                	mv	a0,sp
    e88436dc:	739c                	ld	a5,32(a5)
    e88436de:	9782                	jalr	a5
  memset(&ctxt, 0, sizeof(ctxt));
    e88436e0:	0d000613          	li	a2,208
    e88436e4:	0088                	addi	a0,sp,64
    e88436e6:	4581                	li	a1,0
    e88436e8:	4ad380ef          	jal	ra,e887c394 <eLIBs_memset>
  srp->password = BigIntegerFromBytes(dig, (int) srp->hashDesc->digestLen);
    e88436ec:	685c                	ld	a5,144(s0)
    e88436ee:	850a                	mv	a0,sp
    e88436f0:	438c                	lw	a1,0(a5)
    e88436f2:	57c000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e88436f6:	f808                	sd	a0,48(s0)
  memset(dig, 0, srp->hashDesc->digestLen);
    e88436f8:	685c                	ld	a5,144(s0)
    e88436fa:	4581                	li	a1,0
    e88436fc:	850a                	mv	a0,sp
    e88436fe:	6390                	ld	a2,0(a5)
    e8843700:	495380ef          	jal	ra,e887c394 <eLIBs_memset>
  srp->verifier = BigIntegerFromInt(0);
    e8843704:	4501                	li	a0,0
    e8843706:	53a000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e884370a:	f408                	sd	a0,40(s0)
  BigIntegerModExp(srp->verifier, srp->generator, srp->password, srp->modulus, srp->bctx, srp->accel);
    e884370c:	7c3c                	ld	a5,120(s0)
    e884370e:	7838                	ld	a4,112(s0)
    e8843710:	6814                	ld	a3,16(s0)
    e8843712:	7810                	ld	a2,48(s0)
    e8843714:	6c0c                	ld	a1,24(s0)
    e8843716:	6e8000ef          	jal	ra,e8843dfe <BigIntegerModExp>
}
    e884371a:	7412                	ld	s0,288(sp)
    e884371c:	70b2                	ld	ra,296(sp)
    e884371e:	64f2                	ld	s1,280(sp)
    e8843720:	6952                	ld	s2,272(sp)
    e8843722:	4501                	li	a0,0
    e8843724:	6155                	addi	sp,sp,304
    e8843726:	8082                	ret

00000000e8843728 <srp6_server_key>:
{
    e8843728:	714d                	addi	sp,sp,-336
    e884372a:	e2a2                	sd	s0,320(sp)
    e884372c:	fa4a                	sd	s2,304(sp)
    e884372e:	f64e                	sd	s3,296(sp)
    e8843730:	f252                	sd	s4,288(sp)
    e8843732:	ea5a                	sd	s6,272(sp)
    e8843734:	e686                	sd	ra,328(sp)
    e8843736:	fe26                	sd	s1,312(sp)
    e8843738:	ee56                	sd	s5,280(sp)
    e884373a:	842a                	mv	s0,a0
  modlen = BigIntegerByteLen(srp->modulus);
    e884373c:	6908                	ld	a0,16(a0)
{
    e884373e:	8b2e                	mv	s6,a1
    e8843740:	89b2                	mv	s3,a2
    e8843742:	8936                	mv	s2,a3
  modlen = BigIntegerByteLen(srp->modulus);
    e8843744:	616000ef          	jal	ra,e8843d5a <BigIntegerBitLen>
    e8843748:	251d                	addiw	a0,a0,7
    e884374a:	47a1                	li	a5,8
    e884374c:	02f54a3b          	divw	s4,a0,a5
  if(pubkeylen > modlen)
    e8843750:	132a4463          	blt	s4,s2,e8843878 <srp6_server_key+0x150>
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->ckhash, pubkey, (size_t)pubkeylen);
    e8843754:	685c                	ld	a5,144(s0)
    e8843756:	7428                	ld	a0,104(s0)
    e8843758:	864a                	mv	a2,s2
    e884375a:	6f9c                	ld	a5,24(a5)
    e884375c:	85ce                	mv	a1,s3
    e884375e:	0d050513          	addi	a0,a0,208
    e8843762:	9782                	jalr	a5
  s = cstr_new();
    e8843764:	b46ff0ef          	jal	ra,e8842aaa <cstr_new>
    e8843768:	84aa                	mv	s1,a0
  BigIntegerToCstr(srp->pubkey, s);	/* get encoding of B */
    e884376a:	85aa                	mv	a1,a0
    e884376c:	7c08                	ld	a0,56(s0)
    e884376e:	54c000ef          	jal	ra,e8843cba <BigIntegerToCstr>
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->ckhash, s->data, (size_t)s->length);
    e8843772:	685c                	ld	a5,144(s0)
    e8843774:	7428                	ld	a0,104(s0)
    e8843776:	4490                	lw	a2,8(s1)
    e8843778:	6f9c                	ld	a5,24(a5)
    e884377a:	608c                	ld	a1,0(s1)
    e884377c:	0d050513          	addi	a0,a0,208
    e8843780:	9782                	jalr	a5
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->hash, pubkey, (size_t)pubkeylen);
    e8843782:	685c                	ld	a5,144(s0)
    e8843784:	7428                	ld	a0,104(s0)
    e8843786:	864a                	mv	a2,s2
    e8843788:	6f9c                	ld	a5,24(a5)
    e884378a:	85ce                	mv	a1,s3
    e884378c:	9782                	jalr	a5
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->oldhash, pubkey, (size_t)pubkeylen);
    e884378e:	685c                	ld	a5,144(s0)
    e8843790:	7428                	ld	a0,104(s0)
    e8843792:	864a                	mv	a2,s2
    e8843794:	6f9c                	ld	a5,24(a5)
    e8843796:	85ce                	mv	a1,s3
    e8843798:	1a050513          	addi	a0,a0,416
    e884379c:	9782                	jalr	a5
  srp->hashDesc->init_f(&ctxt);
    e884379e:	685c                	ld	a5,144(s0)
    e88437a0:	0088                	addi	a0,sp,64
    e88437a2:	6b9c                	ld	a5,16(a5)
    e88437a4:	9782                	jalr	a5
  if(srp->flags & SRP_FLAG_LEFT_PAD) {
    e88437a6:	405c                	lw	a5,4(s0)
    e88437a8:	8b89                	andi	a5,a5,2
    e88437aa:	0c078963          	beqz	a5,e884387c <srp6_server_key+0x154>
    if(pubkeylen < modlen) {
    e88437ae:	03495f63          	bge	s2,s4,e88437ec <srp6_server_key+0xc4>
      cstr_set_length(s, modlen);
    e88437b2:	85d2                	mv	a1,s4
    e88437b4:	8526                	mv	a0,s1
    e88437b6:	bc4ff0ef          	jal	ra,e8842b7a <cstr_set_length>
      memcpy(s->data + (modlen - pubkeylen), pubkey, pubkeylen);
    e88437ba:	412a0abb          	subw	s5,s4,s2
    e88437be:	6088                	ld	a0,0(s1)
    e88437c0:	864a                	mv	a2,s2
    e88437c2:	85ce                	mv	a1,s3
    e88437c4:	9556                	add	a0,a0,s5
    e88437c6:	3db380ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memset(s->data, 0, modlen - pubkeylen);
    e88437ca:	6088                	ld	a0,0(s1)
    e88437cc:	8656                	mv	a2,s5
    e88437ce:	4581                	li	a1,0
    e88437d0:	3c5380ef          	jal	ra,e887c394 <eLIBs_memset>
      srp->hashDesc->update_f(&ctxt, s->data, (size_t)modlen);
    e88437d4:	685c                	ld	a5,144(s0)
    e88437d6:	608c                	ld	a1,0(s1)
    e88437d8:	8652                	mv	a2,s4
    e88437da:	6f9c                	ld	a5,24(a5)
    e88437dc:	0088                	addi	a0,sp,64
    e88437de:	9782                	jalr	a5
	BigIntegerToCstrEx(srp->pubkey, s, modlen);
    e88437e0:	7c08                	ld	a0,56(s0)
    e88437e2:	8652                	mv	a2,s4
    e88437e4:	85a6                	mv	a1,s1
    e88437e6:	51e000ef          	jal	ra,e8843d04 <BigIntegerToCstrEx>
    e88437ea:	a811                	j	e88437fe <srp6_server_key+0xd6>
      srp->hashDesc->update_f(&ctxt, pubkey, (size_t)pubkeylen);
    e88437ec:	685c                	ld	a5,144(s0)
    e88437ee:	864a                	mv	a2,s2
    e88437f0:	85ce                	mv	a1,s3
    e88437f2:	6f9c                	ld	a5,24(a5)
    e88437f4:	0088                	addi	a0,sp,64
    e88437f6:	9782                	jalr	a5
      if(s->length < modlen)
    e88437f8:	449c                	lw	a5,8(s1)
    e88437fa:	ff47c3e3          	blt	a5,s4,e88437e0 <srp6_server_key+0xb8>
  srp->hashDesc->update_f(&ctxt, s->data, (size_t)s->length);
    e88437fe:	685c                	ld	a5,144(s0)
    e8843800:	4490                	lw	a2,8(s1)
    e8843802:	608c                	ld	a1,0(s1)
    e8843804:	6f9c                	ld	a5,24(a5)
    e8843806:	0088                	addi	a0,sp,64
    e8843808:	9782                	jalr	a5
  srp->hashDesc->final_f(dig, &ctxt);	/* dig = H(A || B) */
    e884380a:	685c                	ld	a5,144(s0)
    e884380c:	008c                	addi	a1,sp,64
    e884380e:	850a                	mv	a0,sp
    e8843810:	739c                	ld	a5,32(a5)
    e8843812:	9782                	jalr	a5
  srp->u = BigIntegerFromBytes(dig, (int) srp->hashDesc->digestLen);
    e8843814:	685c                	ld	a5,144(s0)
    e8843816:	850a                	mv	a0,sp
    e8843818:	438c                	lw	a1,0(a5)
    e884381a:	454000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e884381e:	e428                	sd	a0,72(s0)
  t1 = BigIntegerFromInt(0);
    e8843820:	4501                	li	a0,0
    e8843822:	41e000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e8843826:	8a2a                	mv	s4,a0
  BigIntegerModExp(t1, srp->verifier, srp->u, srp->modulus, srp->bctx, srp->accel); /* t1 = v^u */
    e8843828:	7c3c                	ld	a5,120(s0)
    e884382a:	7838                	ld	a4,112(s0)
    e884382c:	6814                	ld	a3,16(s0)
    e884382e:	6430                	ld	a2,72(s0)
    e8843830:	740c                	ld	a1,40(s0)
    e8843832:	5cc000ef          	jal	ra,e8843dfe <BigIntegerModExp>
  t2 = BigIntegerFromBytes(pubkey, pubkeylen); /* t2 = A */
    e8843836:	85ca                	mv	a1,s2
    e8843838:	854e                	mv	a0,s3
    e884383a:	434000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e884383e:	89aa                	mv	s3,a0
  t3 = BigIntegerFromInt(0);
    e8843840:	4501                	li	a0,0
    e8843842:	3fe000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e8843846:	892a                	mv	s2,a0
  BigIntegerModMul(t3, t2, t1, srp->modulus, srp->bctx); /* t3 = A*v^u (mod N) */
    e8843848:	7838                	ld	a4,112(s0)
    e884384a:	6814                	ld	a3,16(s0)
    e884384c:	85ce                	mv	a1,s3
    e884384e:	8652                	mv	a2,s4
    e8843850:	594000ef          	jal	ra,e8843de4 <BigIntegerModMul>
  BigIntegerFree(t2);
    e8843854:	854e                	mv	a0,s3
    e8843856:	5c2000ef          	jal	ra,e8843e18 <BigIntegerFree>
  if(BigIntegerCmpInt(t3, 1) <= 0) {	/* Reject A*v^u == 0,1 (mod N) */
    e884385a:	4585                	li	a1,1
    e884385c:	854a                	mv	a0,s2
    e884385e:	504000ef          	jal	ra,e8843d62 <BigIntegerCmpInt>
    e8843862:	02a04463          	bgtz	a0,e884388a <srp6_server_key+0x162>
    BigIntegerClearFree(t1);
    e8843866:	8552                	mv	a0,s4
    e8843868:	5cc000ef          	jal	ra,e8843e34 <BigIntegerClearFree>
    BigIntegerClearFree(t3);
    e884386c:	854a                	mv	a0,s2
    e884386e:	5c6000ef          	jal	ra,e8843e34 <BigIntegerClearFree>
    cstr_free(s);
    e8843872:	8526                	mv	a0,s1
    e8843874:	a88ff0ef          	jal	ra,e8842afc <cstr_free>
    return SRP_ERROR;
    e8843878:	557d                	li	a0,-1
    e884387a:	a0dd                	j	e8843960 <srp6_server_key+0x238>
    srp->hashDesc->update_f(&ctxt, pubkey, (size_t)pubkeylen);
    e884387c:	685c                	ld	a5,144(s0)
    e884387e:	864a                	mv	a2,s2
    e8843880:	85ce                	mv	a1,s3
    e8843882:	6f9c                	ld	a5,24(a5)
    e8843884:	0088                	addi	a0,sp,64
    e8843886:	9782                	jalr	a5
    e8843888:	bf9d                	j	e88437fe <srp6_server_key+0xd6>
  BigIntegerAddInt(t1, t3, 1);
    e884388a:	85ca                	mv	a1,s2
    e884388c:	4605                	li	a2,1
    e884388e:	8552                	mv	a0,s4
    e8843890:	4f2000ef          	jal	ra,e8843d82 <BigIntegerAddInt>
  if(BigIntegerCmp(t1, srp->modulus) == 0) {  /* Reject A*v^u == -1 (mod N) */
    e8843894:	680c                	ld	a1,16(s0)
    e8843896:	8552                	mv	a0,s4
    e8843898:	4c6000ef          	jal	ra,e8843d5e <BigIntegerCmp>
    e884389c:	d569                	beqz	a0,e8843866 <srp6_server_key+0x13e>
  srp->key = BigIntegerFromInt(0);
    e884389e:	4501                	li	a0,0
    e88438a0:	3a0000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e88438a4:	e828                	sd	a0,80(s0)
  BigIntegerModExp(srp->key, t3, srp->secret, srp->modulus, srp->bctx, srp->accel);  /* (Av^u)^b */
    e88438a6:	7c3c                	ld	a5,120(s0)
    e88438a8:	7838                	ld	a4,112(s0)
    e88438aa:	6814                	ld	a3,16(s0)
    e88438ac:	6030                	ld	a2,64(s0)
    e88438ae:	85ca                	mv	a1,s2
    e88438b0:	54e000ef          	jal	ra,e8843dfe <BigIntegerModExp>
  BigIntegerClearFree(t1);
    e88438b4:	8552                	mv	a0,s4
    e88438b6:	57e000ef          	jal	ra,e8843e34 <BigIntegerClearFree>
  BigIntegerClearFree(t3);
    e88438ba:	854a                	mv	a0,s2
    e88438bc:	578000ef          	jal	ra,e8843e34 <BigIntegerClearFree>
  BigIntegerToCstr(srp->key, s);
    e88438c0:	6828                	ld	a0,80(s0)
    e88438c2:	85a6                	mv	a1,s1
    e88438c4:	3f6000ef          	jal	ra,e8843cba <BigIntegerToCstr>
  if(srp->hashDesc->keyLen == 40) {
    e88438c8:	685c                	ld	a5,144(s0)
    e88438ca:	02800713          	li	a4,40
    e88438ce:	6794                	ld	a3,8(a5)
    e88438d0:	0ae69263          	bne	a3,a4,e8843974 <srp6_server_key+0x24c>
    t_mgf1(SERVER_CTXP(srp)->k, (unsigned int) srp->hashDesc->keyLen, (const unsigned char *) s->data, (unsigned int)s->length); /* Interleaved hash */
    e88438d4:	7428                	ld	a0,104(s0)
    e88438d6:	4494                	lw	a3,8(s1)
    e88438d8:	6090                	ld	a2,0(s1)
    e88438da:	02800593          	li	a1,40
    e88438de:	34050513          	addi	a0,a0,832
    e88438e2:	d46ff0ef          	jal	ra,e8842e28 <t_mgf1>
  cstr_clear_free(s);
    e88438e6:	8526                	mv	a0,s1
    e88438e8:	9c8ff0ef          	jal	ra,e8842ab0 <cstr_clear_free>
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->ckhash, SERVER_CTXP(srp)->k, srp->hashDesc->keyLen);
    e88438ec:	685c                	ld	a5,144(s0)
    e88438ee:	7428                	ld	a0,104(s0)
    e88438f0:	6790                	ld	a2,8(a5)
    e88438f2:	6f98                	ld	a4,24(a5)
    e88438f4:	34050593          	addi	a1,a0,832
    e88438f8:	0d050513          	addi	a0,a0,208
    e88438fc:	9702                	jalr	a4
  if(srp->ex_data->length > 0)
    e88438fe:	6c3c                	ld	a5,88(s0)
    e8843900:	4790                	lw	a2,8(a5)
    e8843902:	00c05963          	blez	a2,e8843914 <srp6_server_key+0x1ec>
    srp->hashDesc->update_f(&SERVER_CTXP(srp)->ckhash, srp->ex_data->data, (size_t)srp->ex_data->length);
    e8843906:	6858                	ld	a4,144(s0)
    e8843908:	7428                	ld	a0,104(s0)
    e884390a:	638c                	ld	a1,0(a5)
    e884390c:	6f18                	ld	a4,24(a4)
    e884390e:	0d050513          	addi	a0,a0,208
    e8843912:	9702                	jalr	a4
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->oldhash, SERVER_CTXP(srp)->k, srp->hashDesc->keyLen);
    e8843914:	685c                	ld	a5,144(s0)
    e8843916:	7428                	ld	a0,104(s0)
    e8843918:	6f98                	ld	a4,24(a5)
    e884391a:	6790                	ld	a2,8(a5)
    e884391c:	34050593          	addi	a1,a0,832
    e8843920:	1a050513          	addi	a0,a0,416
    e8843924:	9702                	jalr	a4
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->oldckhash, SERVER_CTXP(srp)->k, srp->hashDesc->keyLen);
    e8843926:	685c                	ld	a5,144(s0)
    e8843928:	7428                	ld	a0,104(s0)
    e884392a:	6f98                	ld	a4,24(a5)
    e884392c:	6790                	ld	a2,8(a5)
    e884392e:	34050593          	addi	a1,a0,832
    e8843932:	27050513          	addi	a0,a0,624
    e8843936:	9702                	jalr	a4
  return SRP_SUCCESS;
    e8843938:	4501                	li	a0,0
  if(result) {
    e884393a:	020b0363          	beqz	s6,e8843960 <srp6_server_key+0x238>
    if(*result == NULL)
    e884393e:	000b3783          	ld	a5,0(s6)
    e8843942:	e789                	bnez	a5,e884394c <srp6_server_key+0x224>
      *result = cstr_new();
    e8843944:	966ff0ef          	jal	ra,e8842aaa <cstr_new>
    e8843948:	00ab3023          	sd	a0,0(s6)
    cstr_setn(*result, (const char *) SERVER_CTXP(srp)->k, (int) srp->hashDesc->keyLen);
    e884394c:	685c                	ld	a5,144(s0)
    e884394e:	742c                	ld	a1,104(s0)
    e8843950:	000b3503          	ld	a0,0(s6)
    e8843954:	4790                	lw	a2,8(a5)
    e8843956:	34058593          	addi	a1,a1,832
    e884395a:	9d8ff0ef          	jal	ra,e8842b32 <cstr_setn>
  return SRP_SUCCESS;
    e884395e:	4501                	li	a0,0
}
    e8843960:	60b6                	ld	ra,328(sp)
    e8843962:	6416                	ld	s0,320(sp)
    e8843964:	74f2                	ld	s1,312(sp)
    e8843966:	7952                	ld	s2,304(sp)
    e8843968:	79b2                	ld	s3,296(sp)
    e884396a:	7a12                	ld	s4,288(sp)
    e884396c:	6af2                	ld	s5,280(sp)
    e884396e:	6b52                	ld	s6,272(sp)
    e8843970:	6171                	addi	sp,sp,336
    e8843972:	8082                	ret
    srp->hashDesc->init_f(&ctxt);
    e8843974:	6b9c                	ld	a5,16(a5)
    e8843976:	0088                	addi	a0,sp,64
    e8843978:	9782                	jalr	a5
    srp->hashDesc->update_f(&ctxt, s->data, (size_t)s->length);
    e884397a:	685c                	ld	a5,144(s0)
    e884397c:	608c                	ld	a1,0(s1)
    e884397e:	4490                	lw	a2,8(s1)
    e8843980:	6f9c                	ld	a5,24(a5)
    e8843982:	0088                	addi	a0,sp,64
    e8843984:	9782                	jalr	a5
    srp->hashDesc->final_f(SERVER_CTXP(srp)->k, &ctxt);
    e8843986:	685c                	ld	a5,144(s0)
    e8843988:	7428                	ld	a0,104(s0)
    e884398a:	008c                	addi	a1,sp,64
    e884398c:	739c                	ld	a5,32(a5)
    e884398e:	34050513          	addi	a0,a0,832
    e8843992:	9782                	jalr	a5
    e8843994:	bf89                	j	e88438e6 <srp6_server_key+0x1be>

00000000e8843996 <srp6_server_genpub_ex>:
{
    e8843996:	7179                	addi	sp,sp,-48
    e8843998:	fb31590b          	sdd	s2,s3,(sp),1,4
    e884399c:	f891540b          	sdd	s0,s1,(sp),0,4
    e88439a0:	f406                	sd	ra,40(sp)
    e88439a2:	f052                	sd	s4,32(sp)
    e88439a4:	842a                	mv	s0,a0
  int slen = (SRP_get_secret_bits(BigIntegerBitLen(srp->modulus)) + 7) / 8;
    e88439a6:	6908                	ld	a0,16(a0)
{
    e88439a8:	892e                	mv	s2,a1
    e88439aa:	89b2                	mv	s3,a2
  int slen = (SRP_get_secret_bits(BigIntegerBitLen(srp->modulus)) + 7) / 8;
    e88439ac:	3ae000ef          	jal	ra,e8843d5a <BigIntegerBitLen>
    e88439b0:	a30ff0ef          	jal	ra,e8842be0 <SRP_get_secret_bits>
    e88439b4:	251d                	addiw	a0,a0,7
    e88439b6:	4a21                	li	s4,8
    e88439b8:	03454a3b          	divw	s4,a0,s4
  if(result == NULL)
    e88439bc:	08091f63          	bnez	s2,e8843a5a <srp6_server_genpub_ex+0xc4>
    bstr = cstr_new();
    e88439c0:	8eaff0ef          	jal	ra,e8842aaa <cstr_new>
    e88439c4:	84aa                	mv	s1,a0
  cstr_set_length(bstr, BigIntegerByteLen(srp->modulus));
    e88439c6:	6808                	ld	a0,16(s0)
    e88439c8:	392000ef          	jal	ra,e8843d5a <BigIntegerBitLen>
    e88439cc:	0075059b          	addiw	a1,a0,7
    e88439d0:	47a1                	li	a5,8
    e88439d2:	8526                	mv	a0,s1
    e88439d4:	02f5c5bb          	divw	a1,a1,a5
    e88439d8:	9a2ff0ef          	jal	ra,e8842b7a <cstr_set_length>
    t_random((unsigned char *) bstr->data, (size_t)slen);
    e88439dc:	6088                	ld	a0,0(s1)
    e88439de:	85d2                	mv	a1,s4
    e88439e0:	6c4190ef          	jal	ra,e885d0a4 <RandomBytes>
  srp->secret = BigIntegerFromBytes((const unsigned char *) bstr->data, slen);
    e88439e4:	6088                	ld	a0,0(s1)
    e88439e6:	85d2                	mv	a1,s4
    e88439e8:	286000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e88439ec:	e028                	sd	a0,64(s0)
  srp->pubkey = BigIntegerFromInt(0);
    e88439ee:	4501                	li	a0,0
    e88439f0:	250000ef          	jal	ra,e8843c40 <BigIntegerFromInt>
    e88439f4:	fc08                	sd	a0,56(s0)
  BigIntegerMul(srp->pubkey, k, srp->verifier, srp->bctx);
    e88439f6:	7834                	ld	a3,112(s0)
    e88439f8:	7410                	ld	a2,40(s0)
    e88439fa:	85ce                	mv	a1,s3
    e88439fc:	3b8000ef          	jal	ra,e8843db4 <BigIntegerMul>
  BigIntegerModExp(k, srp->generator, srp->secret, srp->modulus, srp->bctx, srp->accel);
    e8843a00:	7c3c                	ld	a5,120(s0)
    e8843a02:	7838                	ld	a4,112(s0)
    e8843a04:	6814                	ld	a3,16(s0)
    e8843a06:	6030                	ld	a2,64(s0)
    e8843a08:	6c0c                	ld	a1,24(s0)
    e8843a0a:	854e                	mv	a0,s3
    e8843a0c:	3f2000ef          	jal	ra,e8843dfe <BigIntegerModExp>
  BigIntegerAdd(k, k, srp->pubkey);
    e8843a10:	7c10                	ld	a2,56(s0)
    e8843a12:	85ce                	mv	a1,s3
    e8843a14:	854e                	mv	a0,s3
    e8843a16:	354000ef          	jal	ra,e8843d6a <BigIntegerAdd>
  BigIntegerMod(srp->pubkey, k, srp->modulus, srp->bctx);
    e8843a1a:	6810                	ld	a2,16(s0)
    e8843a1c:	7834                	ld	a3,112(s0)
    e8843a1e:	7c08                	ld	a0,56(s0)
    e8843a20:	85ce                	mv	a1,s3
    e8843a22:	3aa000ef          	jal	ra,e8843dcc <BigIntegerMod>
  BigIntegerToCstr(srp->pubkey, bstr);
    e8843a26:	7c08                	ld	a0,56(s0)
    e8843a28:	85a6                	mv	a1,s1
    e8843a2a:	290000ef          	jal	ra,e8843cba <BigIntegerToCstr>
  srp->hashDesc->update_f(&SERVER_CTXP(srp)->oldckhash, bstr->data, (size_t)bstr->length);
    e8843a2e:	685c                	ld	a5,144(s0)
    e8843a30:	7428                	ld	a0,104(s0)
    e8843a32:	4490                	lw	a2,8(s1)
    e8843a34:	6f9c                	ld	a5,24(a5)
    e8843a36:	608c                	ld	a1,0(s1)
    e8843a38:	27050513          	addi	a0,a0,624
    e8843a3c:	9782                	jalr	a5
  if(result == NULL)	/* bstr was a temporary */
    e8843a3e:	00091563          	bnez	s2,e8843a48 <srp6_server_genpub_ex+0xb2>
    cstr_clear_free(bstr);
    e8843a42:	8526                	mv	a0,s1
    e8843a44:	86cff0ef          	jal	ra,e8842ab0 <cstr_clear_free>
}
    e8843a48:	70a2                	ld	ra,40(sp)
    e8843a4a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8843a4e:	7a02                	ld	s4,32(sp)
    e8843a50:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8843a54:	4501                	li	a0,0
    e8843a56:	6145                	addi	sp,sp,48
    e8843a58:	8082                	ret
    if(*result == NULL)
    e8843a5a:	00093783          	ld	a5,0(s2)
    e8843a5e:	e789                	bnez	a5,e8843a68 <srp6_server_genpub_ex+0xd2>
      *result = cstr_new();
    e8843a60:	84aff0ef          	jal	ra,e8842aaa <cstr_new>
    e8843a64:	00a93023          	sd	a0,0(s2)
    bstr = *result;
    e8843a68:	00093483          	ld	s1,0(s2)
    e8843a6c:	bfa9                	j	e88439c6 <srp6_server_genpub_ex+0x30>

00000000e8843a6e <srp6a_server_genpub>:
{
    e8843a6e:	7129                	addi	sp,sp,-320
    e8843a70:	fe06                	sd	ra,312(sp)
    e8843a72:	fa22                	sd	s0,304(sp)
    e8843a74:	f626                	sd	s1,296(sp)
    e8843a76:	ee4e                	sd	s3,280(sp)
    e8843a78:	f24a                	sd	s2,288(sp)
  srp->hashDesc->init_f(&ctxt);
    e8843a7a:	695c                	ld	a5,144(a0)
{
    e8843a7c:	842a                	mv	s0,a0
  srp->hashDesc->init_f(&ctxt);
    e8843a7e:	0088                	addi	a0,sp,64
    e8843a80:	6b9c                	ld	a5,16(a5)
{
    e8843a82:	89ae                	mv	s3,a1
  srp->hashDesc->init_f(&ctxt);
    e8843a84:	9782                	jalr	a5
  s = cstr_new();
    e8843a86:	824ff0ef          	jal	ra,e8842aaa <cstr_new>
    e8843a8a:	84aa                	mv	s1,a0
  BigIntegerToCstr(srp->modulus, s);
    e8843a8c:	85aa                	mv	a1,a0
    e8843a8e:	6808                	ld	a0,16(s0)
    e8843a90:	22a000ef          	jal	ra,e8843cba <BigIntegerToCstr>
  srp->hashDesc->update_f(&ctxt, s->data, (size_t)s->length);
    e8843a94:	685c                	ld	a5,144(s0)
    e8843a96:	4490                	lw	a2,8(s1)
    e8843a98:	608c                	ld	a1,0(s1)
    e8843a9a:	6f9c                	ld	a5,24(a5)
    e8843a9c:	0088                	addi	a0,sp,64
    e8843a9e:	9782                	jalr	a5
  if(srp->flags & SRP_FLAG_LEFT_PAD)
    e8843aa0:	405c                	lw	a5,4(s0)
    e8843aa2:	6c08                	ld	a0,24(s0)
    e8843aa4:	8b89                	andi	a5,a5,2
    e8843aa6:	cfb9                	beqz	a5,e8843b04 <srp6a_server_genpub+0x96>
    BigIntegerToCstrEx(srp->generator, s, s->length);
    e8843aa8:	4490                	lw	a2,8(s1)
    e8843aaa:	85a6                	mv	a1,s1
    e8843aac:	258000ef          	jal	ra,e8843d04 <BigIntegerToCstrEx>
  srp->hashDesc->update_f(&ctxt, s->data, (size_t)s->length);
    e8843ab0:	685c                	ld	a5,144(s0)
    e8843ab2:	4490                	lw	a2,8(s1)
    e8843ab4:	608c                	ld	a1,0(s1)
    e8843ab6:	6f9c                	ld	a5,24(a5)
    e8843ab8:	0088                	addi	a0,sp,64
    e8843aba:	9782                	jalr	a5
  srp->hashDesc->final_f(dig, &ctxt);
    e8843abc:	685c                	ld	a5,144(s0)
    e8843abe:	008c                	addi	a1,sp,64
    e8843ac0:	850a                	mv	a0,sp
    e8843ac2:	739c                	ld	a5,32(a5)
    e8843ac4:	9782                	jalr	a5
  cstr_free(s);
    e8843ac6:	8526                	mv	a0,s1
    e8843ac8:	834ff0ef          	jal	ra,e8842afc <cstr_free>
    ret = SRP_ERROR;
    e8843acc:	54fd                	li	s1,-1
  k = BigIntegerFromBytes(dig, (int) srp->hashDesc->digestLen);
    e8843ace:	685c                	ld	a5,144(s0)
    e8843ad0:	850a                	mv	a0,sp
    e8843ad2:	438c                	lw	a1,0(a5)
    e8843ad4:	19a000ef          	jal	ra,e8843c6e <BigIntegerFromBytes>
    e8843ad8:	892a                	mv	s2,a0
  if(BigIntegerCmpInt(k, 0) == 0)
    e8843ada:	4581                	li	a1,0
    e8843adc:	286000ef          	jal	ra,e8843d62 <BigIntegerCmpInt>
    e8843ae0:	c519                	beqz	a0,e8843aee <srp6a_server_genpub+0x80>
    ret = srp6_server_genpub_ex(srp, result, k);
    e8843ae2:	864a                	mv	a2,s2
    e8843ae4:	85ce                	mv	a1,s3
    e8843ae6:	8522                	mv	a0,s0
    e8843ae8:	eafff0ef          	jal	ra,e8843996 <srp6_server_genpub_ex>
    e8843aec:	84aa                	mv	s1,a0
  BigIntegerClearFree(k);
    e8843aee:	854a                	mv	a0,s2
    e8843af0:	344000ef          	jal	ra,e8843e34 <BigIntegerClearFree>
}
    e8843af4:	7452                	ld	s0,304(sp)
    e8843af6:	70f2                	ld	ra,312(sp)
    e8843af8:	8526                	mv	a0,s1
    e8843afa:	7912                	ld	s2,288(sp)
    e8843afc:	74b2                	ld	s1,296(sp)
    e8843afe:	69f2                	ld	s3,280(sp)
    e8843b00:	6131                	addi	sp,sp,320
    e8843b02:	8082                	ret
    BigIntegerToCstr(srp->generator, s);
    e8843b04:	85a6                	mv	a1,s1
    e8843b06:	1b4000ef          	jal	ra,e8843cba <BigIntegerToCstr>
    e8843b0a:	b75d                	j	e8843ab0 <srp6a_server_genpub+0x42>

00000000e8843b0c <srp6_server_finish>:
  if(srp->meth_data) {
    e8843b0c:	753c                	ld	a5,104(a0)
    e8843b0e:	c39d                	beqz	a5,e8843b34 <srp6_server_finish+0x28>
{
    e8843b10:	1141                	addi	sp,sp,-16
    e8843b12:	e022                	sd	s0,0(sp)
    memset(srp->meth_data, 0, sizeof(struct server_meth_st));
    e8843b14:	3c000613          	li	a2,960
    e8843b18:	842a                	mv	s0,a0
    e8843b1a:	4581                	li	a1,0
    e8843b1c:	853e                	mv	a0,a5
{
    e8843b1e:	e406                	sd	ra,8(sp)
    memset(srp->meth_data, 0, sizeof(struct server_meth_st));
    e8843b20:	075380ef          	jal	ra,e887c394 <eLIBs_memset>
    free(srp->meth_data);
    e8843b24:	7428                	ld	a0,104(s0)
    e8843b26:	7da380ef          	jal	ra,e887c300 <eLIBs_free>
}
    e8843b2a:	6402                	ld	s0,0(sp)
    e8843b2c:	60a2                	ld	ra,8(sp)
    e8843b2e:	4501                	li	a0,0
    e8843b30:	0141                	addi	sp,sp,16
    e8843b32:	8082                	ret
    e8843b34:	4501                	li	a0,0
    e8843b36:	8082                	ret

00000000e8843b38 <srp6a_server_init>:
{
    e8843b38:	1141                	addi	sp,sp,-16
  srp->magic = SRP_MAGIC_SERVER;
    e8843b3a:	478d                	li	a5,3
{
    e8843b3c:	e406                	sd	ra,8(sp)
    e8843b3e:	e022                	sd	s0,0(sp)
  srp->magic = SRP_MAGIC_SERVER;
    e8843b40:	1782                	slli	a5,a5,0x20
    e8843b42:	07f1                	addi	a5,a5,28
{
    e8843b44:	842a                	mv	s0,a0
  srp->magic = SRP_MAGIC_SERVER;
    e8843b46:	e11c                	sd	a5,0(a0)
  srp->meth_data = malloc(sizeof(struct server_meth_st));
    e8843b48:	3c000513          	li	a0,960
    e8843b4c:	503370ef          	jal	ra,e887b84e <my_malloc>
    e8843b50:	f428                	sd	a0,104(s0)
  srp->hashDesc->init_f(&SERVER_CTXP(srp)->hash);
    e8843b52:	685c                	ld	a5,144(s0)
    e8843b54:	6b9c                	ld	a5,16(a5)
    e8843b56:	9782                	jalr	a5
  srp->hashDesc->init_f(&SERVER_CTXP(srp)->ckhash);
    e8843b58:	685c                	ld	a5,144(s0)
    e8843b5a:	7428                	ld	a0,104(s0)
    e8843b5c:	6b9c                	ld	a5,16(a5)
    e8843b5e:	0d050513          	addi	a0,a0,208
    e8843b62:	9782                	jalr	a5
  srp->hashDesc->init_f(&SERVER_CTXP(srp)->oldhash);
    e8843b64:	685c                	ld	a5,144(s0)
    e8843b66:	7428                	ld	a0,104(s0)
    e8843b68:	6b9c                	ld	a5,16(a5)
    e8843b6a:	1a050513          	addi	a0,a0,416
    e8843b6e:	9782                	jalr	a5
  srp->hashDesc->init_f(&SERVER_CTXP(srp)->oldckhash);
    e8843b70:	685c                	ld	a5,144(s0)
    e8843b72:	7428                	ld	a0,104(s0)
    e8843b74:	6b9c                	ld	a5,16(a5)
    e8843b76:	27050513          	addi	a0,a0,624
    e8843b7a:	9782                	jalr	a5
}
    e8843b7c:	6402                	ld	s0,0(sp)
    e8843b7e:	60a2                	ld	ra,8(sp)
    e8843b80:	4501                	li	a0,0
    e8843b82:	0141                	addi	sp,sp,16
    e8843b84:	8082                	ret

00000000e8843b86 <srp6_server_verify>:
{
    e8843b86:	711d                	addi	sp,sp,-96
    e8843b88:	e8a2                	sd	s0,80(sp)
    e8843b8a:	e4a6                	sd	s1,72(sp)
    e8843b8c:	e0ca                	sd	s2,64(sp)
    e8843b8e:	ec86                	sd	ra,88(sp)
  srp->hashDesc->final_f(expected, &SERVER_CTXP(srp)->oldckhash);
    e8843b90:	695c                	ld	a5,144(a0)
{
    e8843b92:	84ae                	mv	s1,a1
  srp->hashDesc->final_f(expected, &SERVER_CTXP(srp)->oldckhash);
    e8843b94:	752c                	ld	a1,104(a0)
    e8843b96:	739c                	ld	a5,32(a5)
{
    e8843b98:	842a                	mv	s0,a0
  srp->hashDesc->final_f(expected, &SERVER_CTXP(srp)->oldckhash);
    e8843b9a:	27058593          	addi	a1,a1,624
    e8843b9e:	850a                	mv	a0,sp
{
    e8843ba0:	8932                	mv	s2,a2
  srp->hashDesc->final_f(expected, &SERVER_CTXP(srp)->oldckhash);
    e8843ba2:	9782                	jalr	a5
  if(prooflen == (int) srp->hashDesc->digestLen && memcmp(expected, proof, (size_t) prooflen) == 0) {
    e8843ba4:	6858                	ld	a4,144(s0)
    e8843ba6:	431c                	lw	a5,0(a4)
    e8843ba8:	01279e63          	bne	a5,s2,e8843bc4 <srp6_server_verify+0x3e>
    e8843bac:	4781                	li	a5,0
    e8843bae:	fff48593          	addi	a1,s1,-1
    e8843bb2:	06f90b63          	beq	s2,a5,e8843c28 <srp6_server_verify+0xa2>
    e8843bb6:	80f1468b          	lrbu	a3,sp,a5,0
    e8843bba:	0785                	addi	a5,a5,1
    e8843bbc:	80f5c60b          	lrbu	a2,a1,a5,0
    e8843bc0:	fed609e3          	beq	a2,a3,e8843bb2 <srp6_server_verify+0x2c>
  srp->hashDesc->final_f(expected, &SERVER_CTXP(srp)->ckhash);
    e8843bc4:	742c                	ld	a1,104(s0)
    e8843bc6:	731c                	ld	a5,32(a4)
    e8843bc8:	850a                	mv	a0,sp
    e8843bca:	0d058593          	addi	a1,a1,208
    e8843bce:	9782                	jalr	a5
  if(prooflen == (int) srp->hashDesc->digestLen && memcmp(expected, proof, (size_t) prooflen) == 0) {
    e8843bd0:	6858                	ld	a4,144(s0)
  return SRP_ERROR;
    e8843bd2:	557d                	li	a0,-1
  if(prooflen == (int) srp->hashDesc->digestLen && memcmp(expected, proof, (size_t) prooflen) == 0) {
    e8843bd4:	6310                	ld	a2,0(a4)
    e8843bd6:	0006079b          	sext.w	a5,a2
    e8843bda:	01279e63          	bne	a5,s2,e8843bf6 <srp6_server_verify+0x70>
    e8843bde:	4781                	li	a5,0
    e8843be0:	14fd                	addi	s1,s1,-1
    e8843be2:	02f90063          	beq	s2,a5,e8843c02 <srp6_server_verify+0x7c>
    e8843be6:	80f1468b          	lrbu	a3,sp,a5,0
    e8843bea:	0785                	addi	a5,a5,1
    e8843bec:	80f4c58b          	lrbu	a1,s1,a5,0
    e8843bf0:	fed589e3          	beq	a1,a3,e8843be2 <srp6_server_verify+0x5c>
  return SRP_ERROR;
    e8843bf4:	557d                	li	a0,-1
}
    e8843bf6:	60e6                	ld	ra,88(sp)
    e8843bf8:	6446                	ld	s0,80(sp)
    e8843bfa:	64a6                	ld	s1,72(sp)
    e8843bfc:	6906                	ld	s2,64(sp)
    e8843bfe:	6125                	addi	sp,sp,96
    e8843c00:	8082                	ret
    srp->hashDesc->update_f(&SERVER_CTXP(srp)->hash, expected, srp->hashDesc->digestLen);
    e8843c02:	6f1c                	ld	a5,24(a4)
    e8843c04:	7428                	ld	a0,104(s0)
    e8843c06:	858a                	mv	a1,sp
    e8843c08:	9782                	jalr	a5
    srp->hashDesc->update_f(&SERVER_CTXP(srp)->hash, SERVER_CTXP(srp)->k, srp->hashDesc->keyLen);
    e8843c0a:	685c                	ld	a5,144(s0)
    e8843c0c:	7428                	ld	a0,104(s0)
    e8843c0e:	6f98                	ld	a4,24(a5)
    e8843c10:	6790                	ld	a2,8(a5)
    e8843c12:	34050593          	addi	a1,a0,832
    e8843c16:	9702                	jalr	a4
    srp->hashDesc->final_f(SERVER_CTXP(srp)->r, &SERVER_CTXP(srp)->hash);
    e8843c18:	685c                	ld	a5,144(s0)
    e8843c1a:	742c                	ld	a1,104(s0)
    e8843c1c:	739c                	ld	a5,32(a5)
    e8843c1e:	38058513          	addi	a0,a1,896
    srp->hashDesc->final_f(SERVER_CTXP(srp)->r, &SERVER_CTXP(srp)->oldhash);
    e8843c22:	9782                	jalr	a5
    return SRP_SUCCESS;
    e8843c24:	4501                	li	a0,0
    e8843c26:	bfc1                	j	e8843bf6 <srp6_server_verify+0x70>
    srp->hashDesc->final_f(SERVER_CTXP(srp)->r, &SERVER_CTXP(srp)->oldhash);
    e8843c28:	7428                	ld	a0,104(s0)
    e8843c2a:	731c                	ld	a5,32(a4)
    e8843c2c:	1a050593          	addi	a1,a0,416
    e8843c30:	38050513          	addi	a0,a0,896
    e8843c34:	b7fd                	j	e8843c22 <srp6_server_verify+0x9c>

00000000e8843c36 <SRP6a_server_method>:

_TYPE( SRP_METHOD * )
SRP6a_server_method()
{
  return &srp6a_server_meth;
}
    e8843c36:	00091517          	auipc	a0,0x91
    e8843c3a:	eea50513          	addi	a0,a0,-278 # e88d4b20 <srp6a_server_meth>
    e8843c3e:	8082                	ret

00000000e8843c40 <BigIntegerFromInt>:
/* Math library interface stubs */

// APPLE MODIFICATION: Use ANSI C declarators.
BigInteger
BigIntegerFromInt(unsigned int n)
{
    e8843c40:	1101                	addi	sp,sp,-32
    e8843c42:	e826                	sd	s1,16(sp)
    e8843c44:	84aa                	mv	s1,a0
#elif defined(GCRYPT)
  BigInteger rv = gcry_mpi_new(32);
  gcry_mpi_set_ui(rv, n);
  return rv;
#elif defined(MPI) || defined(TOMMATH)
  BigInteger rv = (BigInteger) malloc(sizeof(mp_int));
    e8843c46:	4561                	li	a0,24
{
    e8843c48:	e422                	sd	s0,8(sp)
    e8843c4a:	ec06                	sd	ra,24(sp)
  BigInteger rv = (BigInteger) malloc(sizeof(mp_int));
    e8843c4c:	403370ef          	jal	ra,e887b84e <my_malloc>
    e8843c50:	842a                	mv	s0,a0
  if(rv) {
    e8843c52:	c901                	beqz	a0,e8843c62 <BigIntegerFromInt+0x22>
    mp_init(rv);
    e8843c54:	959fc0ef          	jal	ra,e88405ac <mp_init>
    mp_set_int(rv, n);
    e8843c58:	7c04b58b          	extu	a1,s1,31,0
    e8843c5c:	8522                	mv	a0,s0
    e8843c5e:	ab7fd0ef          	jal	ra,e8841714 <mp_set_int>
  }
  return rv;
#endif
}
    e8843c62:	8522                	mv	a0,s0
    e8843c64:	60e2                	ld	ra,24(sp)
    e8843c66:	6422                	ld	s0,8(sp)
    e8843c68:	64c2                	ld	s1,16(sp)
    e8843c6a:	6105                	addi	sp,sp,32
    e8843c6c:	8082                	ret

00000000e8843c6e <BigIntegerFromBytes>:
// APPLE MODIFICATION: Use ANSI C declarators.
BigInteger
BigIntegerFromBytes(
     const unsigned char * bytes,
     int length)
{
    e8843c6e:	1101                	addi	sp,sp,-32
    e8843c70:	f891540b          	sdd	s0,s1,(sp),0,4
    e8843c74:	84aa                	mv	s1,a0
#elif defined(GCRYPT)
  BigInteger rv;
  gcry_mpi_scan(&rv, GCRYMPI_FMT_USG, bytes, length, NULL);
  return rv;
#elif defined(MPI) || defined(TOMMATH)
  BigInteger rv = (BigInteger) malloc(sizeof(mp_int));
    e8843c76:	4561                	li	a0,24
{
    e8843c78:	e84a                	sd	s2,16(sp)
    e8843c7a:	ec06                	sd	ra,24(sp)
    e8843c7c:	892e                	mv	s2,a1
  BigInteger rv = (BigInteger) malloc(sizeof(mp_int));
    e8843c7e:	3d1370ef          	jal	ra,e887b84e <my_malloc>
    e8843c82:	842a                	mv	s0,a0
  if(rv) {
    e8843c84:	c901                	beqz	a0,e8843c94 <BigIntegerFromBytes+0x26>
    mp_init(rv);
    e8843c86:	927fc0ef          	jal	ra,e88405ac <mp_init>
    mp_read_unsigned_bin(rv, (unsigned char *)bytes, length);
    e8843c8a:	864a                	mv	a2,s2
    e8843c8c:	85a6                	mv	a1,s1
    e8843c8e:	8522                	mv	a0,s0
    e8843c90:	e28fd0ef          	jal	ra,e88412b8 <mp_read_unsigned_bin>
  }
  return rv;
#endif
}
    e8843c94:	8522                	mv	a0,s0
    e8843c96:	60e2                	ld	ra,24(sp)
    e8843c98:	f891440b          	ldd	s0,s1,(sp),0,4
    e8843c9c:	6942                	ld	s2,16(sp)
    e8843c9e:	6105                	addi	sp,sp,32
    e8843ca0:	8082                	ret

00000000e8843ca2 <BigIntegerToBytes>:
int
BigIntegerToBytes(
     BigInteger src,
     unsigned char * dest,
     int destlen)
{
    e8843ca2:	1141                	addi	sp,sp,-16
    e8843ca4:	e022                	sd	s0,0(sp)
    e8843ca6:	e406                	sd	ra,8(sp)
    e8843ca8:	842a                	mv	s0,a0
  size_t r = 0;
  gcry_mpi_print(GCRYMPI_FMT_USG, dest, destlen, &r, src);
  return r;
#elif defined(MPI) || defined(TOMMATH)
  (void)destlen;
  mp_to_unsigned_bin(src, dest);
    e8843caa:	c69fd0ef          	jal	ra,e8841912 <mp_to_unsigned_bin>
  return mp_unsigned_bin_size(src);
    e8843cae:	8522                	mv	a0,s0
#endif
}
    e8843cb0:	6402                	ld	s0,0(sp)
    e8843cb2:	60a2                	ld	ra,8(sp)
    e8843cb4:	0141                	addi	sp,sp,16
  return mp_unsigned_bin_size(src);
    e8843cb6:	c2cfe06f          	j	e88420e2 <mp_unsigned_bin_size>

00000000e8843cba <BigIntegerToCstr>:

BigIntegerResult
BigIntegerToCstr(BigInteger x, cstr * out)
{
    e8843cba:	7179                	addi	sp,sp,-48
    e8843cbc:	ec22                	sd	s0,24(sp)
    e8843cbe:	f026                	sd	s1,32(sp)
    e8843cc0:	842e                	mv	s0,a1
    e8843cc2:	f406                	sd	ra,40(sp)
    e8843cc4:	84aa                	mv	s1,a0
#elif defined(GNU_MP)
  return mpz_sizeinbase(b, 2);
#elif defined(GCRYPT)
  return gcry_mpi_get_nbits(b);
#elif defined(MPI) || defined(TOMMATH)
  return mp_count_bits(b);
    e8843cc6:	c79fb0ef          	jal	ra,e883f93e <mp_count_bits>
  int n = BigIntegerByteLen(x);
    e8843cca:	251d                	addiw	a0,a0,7
    e8843ccc:	4621                	li	a2,8
    e8843cce:	02c5463b          	divw	a2,a0,a2
  if(cstr_set_length(out, n) < 0)
    e8843cd2:	8522                	mv	a0,s0
    e8843cd4:	85b2                	mv	a1,a2
    e8843cd6:	e432                	sd	a2,8(sp)
    e8843cd8:	ea3fe0ef          	jal	ra,e8842b7a <cstr_set_length>
    e8843cdc:	02054263          	bltz	a0,e8843d00 <BigIntegerToCstr+0x46>
  if(cstr_set_length(out, BigIntegerToBytes(x, (unsigned char *) out->data, n)) < 0) // APPLE MODIFICATION: Casts to fix warnings.
    e8843ce0:	6622                	ld	a2,8(sp)
    e8843ce2:	600c                	ld	a1,0(s0)
    e8843ce4:	8526                	mv	a0,s1
    e8843ce6:	fbdff0ef          	jal	ra,e8843ca2 <BigIntegerToBytes>
    e8843cea:	85aa                	mv	a1,a0
    e8843cec:	8522                	mv	a0,s0
    e8843cee:	e8dfe0ef          	jal	ra,e8842b7a <cstr_set_length>
    e8843cf2:	41f5551b          	sraiw	a0,a0,0x1f
}
    e8843cf6:	70a2                	ld	ra,40(sp)
    e8843cf8:	6462                	ld	s0,24(sp)
    e8843cfa:	7482                	ld	s1,32(sp)
    e8843cfc:	6145                	addi	sp,sp,48
    e8843cfe:	8082                	ret
    return BIG_INTEGER_ERROR;
    e8843d00:	557d                	li	a0,-1
    e8843d02:	bfd5                	j	e8843cf6 <BigIntegerToCstr+0x3c>

00000000e8843d04 <BigIntegerToCstrEx>:
{
    e8843d04:	1101                	addi	sp,sp,-32
    e8843d06:	f891540b          	sdd	s0,s1,(sp),0,4
    e8843d0a:	84ae                	mv	s1,a1
    e8843d0c:	e84a                	sd	s2,16(sp)
  if(cstr_set_length(out, len) < 0)
    e8843d0e:	85b2                	mv	a1,a2
{
    e8843d10:	892a                	mv	s2,a0
  if(cstr_set_length(out, len) < 0)
    e8843d12:	8526                	mv	a0,s1
{
    e8843d14:	ec06                	sd	ra,24(sp)
    e8843d16:	8432                	mv	s0,a2
  if(cstr_set_length(out, len) < 0)
    e8843d18:	e63fe0ef          	jal	ra,e8842b7a <cstr_set_length>
    e8843d1c:	02054d63          	bltz	a0,e8843d56 <BigIntegerToCstrEx+0x52>
  n = BigIntegerToBytes(x, (unsigned char *) out->data, len); // APPLE MODIFICATION: Casts to fix warnings.
    e8843d20:	608c                	ld	a1,0(s1)
    e8843d22:	8622                	mv	a2,s0
    e8843d24:	854a                	mv	a0,s2
    e8843d26:	f7dff0ef          	jal	ra,e8843ca2 <BigIntegerToBytes>
    e8843d2a:	862a                	mv	a2,a0
  return BIG_INTEGER_SUCCESS;
    e8843d2c:	4901                	li	s2,0
  if(n < len) {
    e8843d2e:	00855d63          	bge	a0,s0,e8843d48 <BigIntegerToCstrEx+0x44>
    memmove(out->data + (len - n), out->data, n);
    e8843d32:	608c                	ld	a1,0(s1)
    e8843d34:	9c09                	subw	s0,s0,a0
    e8843d36:	00858533          	add	a0,a1,s0
    e8843d3a:	672380ef          	jal	ra,e887c3ac <eLIBs_memmove>
    memset(out->data, 0, len - n);
    e8843d3e:	6088                	ld	a0,0(s1)
    e8843d40:	8622                	mv	a2,s0
    e8843d42:	4581                	li	a1,0
    e8843d44:	650380ef          	jal	ra,e887c394 <eLIBs_memset>
}
    e8843d48:	60e2                	ld	ra,24(sp)
    e8843d4a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8843d4e:	854a                	mv	a0,s2
    e8843d50:	6942                	ld	s2,16(sp)
    e8843d52:	6105                	addi	sp,sp,32
    e8843d54:	8082                	ret
    return BIG_INTEGER_ERROR;
    e8843d56:	597d                	li	s2,-1
    e8843d58:	bfc5                	j	e8843d48 <BigIntegerToCstrEx+0x44>

00000000e8843d5a <BigIntegerBitLen>:
  return mp_count_bits(b);
    e8843d5a:	be5fb06f          	j	e883f93e <mp_count_bits>

00000000e8843d5e <BigIntegerCmp>:
#elif defined(GNU_MP)
  return mpz_cmp(c1, c2);
#elif defined(GCRYPT)
  return gcry_mpi_cmp(c1, c2);
#elif defined(MPI) || defined(TOMMATH)
  return mp_cmp(c1, c2);
    e8843d5e:	adbfb06f          	j	e883f838 <mp_cmp>

00000000e8843d62 <BigIntegerCmpInt>:
  freeBignum(t);
  return rv;
#elif defined(GNU_MP)
  return mpz_cmp_ui(c1, c2);
#elif defined(TOMMATH)
  return mp_cmp_d(c1, c2);
    e8843d62:	7c05b58b          	extu	a1,a1,31,0
    e8843d66:	af9fb06f          	j	e883f85e <mp_cmp_d>

00000000e8843d6a <BigIntegerAdd>:
BigIntegerResult
BigIntegerAdd(
     BigInteger result, 
	 BigInteger a1, 
	 BigInteger a2)
{
    e8843d6a:	87ae                	mv	a5,a1
    e8843d6c:	1141                	addi	sp,sp,-16
    e8843d6e:	85b2                	mv	a1,a2
#elif defined(GNU_MP)
  mpz_add(result, a1, a2);
#elif defined(GCRYPT)
  gcry_mpi_add(result, a1, a2);
#elif defined(MPI) || defined(TOMMATH)
  mp_add(a1, a2, result);
    e8843d70:	862a                	mv	a2,a0
    e8843d72:	853e                	mv	a0,a5
{
    e8843d74:	e406                	sd	ra,8(sp)
  mp_add(a1, a2, result);
    e8843d76:	8d5fb0ef          	jal	ra,e883f64a <mp_add>
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843d7a:	60a2                	ld	ra,8(sp)
    e8843d7c:	4501                	li	a0,0
    e8843d7e:	0141                	addi	sp,sp,16
    e8843d80:	8082                	ret

00000000e8843d82 <BigIntegerAddInt>:
BigIntegerResult
BigIntegerAddInt(
     BigInteger result, 
	 BigInteger a1,
     unsigned int a2)
{
    e8843d82:	87ae                	mv	a5,a1
    e8843d84:	1141                	addi	sp,sp,-16
#elif defined(GNU_MP)
  mpz_add_ui(result, a1, a2);
#elif defined(GCRYPT)
  gcry_mpi_add_ui(result, a1, a2);
#elif defined(MPI) || defined(TOMMATH)
  mp_add_d(a1, a2, result);
    e8843d86:	7c06358b          	extu	a1,a2,31,0
    e8843d8a:	862a                	mv	a2,a0
    e8843d8c:	853e                	mv	a0,a5
{
    e8843d8e:	e406                	sd	ra,8(sp)
  mp_add_d(a1, a2, result);
    e8843d90:	91bfb0ef          	jal	ra,e883f6aa <mp_add_d>
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843d94:	60a2                	ld	ra,8(sp)
    e8843d96:	4501                	li	a0,0
    e8843d98:	0141                	addi	sp,sp,16
    e8843d9a:	8082                	ret

00000000e8843d9c <BigIntegerSub>:
BigIntegerResult
BigIntegerSub(
     BigInteger result, 
	 BigInteger s1, 
	 BigInteger s2)
{
    e8843d9c:	87ae                	mv	a5,a1
    e8843d9e:	1141                	addi	sp,sp,-16
    e8843da0:	85b2                	mv	a1,a2
#elif defined(GNU_MP)
  mpz_sub(result, s1, s2);
#elif defined(GCRYPT)
  gcry_mpi_sub(result, s1, s2);
#elif defined(MPI) || defined(TOMMATH)
  mp_sub(s1, s2, result);
    e8843da2:	862a                	mv	a2,a0
    e8843da4:	853e                	mv	a0,a5
{
    e8843da6:	e406                	sd	ra,8(sp)
  mp_sub(s1, s2, result);
    e8843da8:	a23fd0ef          	jal	ra,e88417ca <mp_sub>
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843dac:	60a2                	ld	ra,8(sp)
    e8843dae:	4501                	li	a0,0
    e8843db0:	0141                	addi	sp,sp,16
    e8843db2:	8082                	ret

00000000e8843db4 <BigIntegerMul>:
BigIntegerMul(
     BigInteger result, 
	 BigInteger m1, 
	 BigInteger m2, 
     BigIntegerCtx c)
{
    e8843db4:	87ae                	mv	a5,a1
    e8843db6:	1141                	addi	sp,sp,-16
    e8843db8:	85b2                	mv	a1,a2
  mpz_mul(result, m1, m2);
#elif defined(GCRYPT)
  gcry_mpi_mul(result, m1, m2);
#elif defined(MPI) || defined(TOMMATH)
  (void)c;
  mp_mul(m1, m2, result);
    e8843dba:	862a                	mv	a2,a0
    e8843dbc:	853e                	mv	a0,a5
{
    e8843dbe:	e406                	sd	ra,8(sp)
  mp_mul(m1, m2, result);
    e8843dc0:	a40fd0ef          	jal	ra,e8841000 <mp_mul>
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843dc4:	60a2                	ld	ra,8(sp)
    e8843dc6:	4501                	li	a0,0
    e8843dc8:	0141                	addi	sp,sp,16
    e8843dca:	8082                	ret

00000000e8843dcc <BigIntegerMod>:
BigIntegerMod(
     BigInteger result, 
	 BigInteger d, 
	 BigInteger m,
     BigIntegerCtx c)
{
    e8843dcc:	87ae                	mv	a5,a1
    e8843dce:	1141                	addi	sp,sp,-16
    e8843dd0:	85b2                	mv	a1,a2
  mpz_mod(result, d, m);
#elif defined(GCRYPT)
  gcry_mpi_mod(result, d, m);
#elif defined(MPI) || defined(TOMMATH)
  (void)c;
  mp_mod(d, m, result);
    e8843dd2:	862a                	mv	a2,a0
    e8843dd4:	853e                	mv	a0,a5
{
    e8843dd6:	e406                	sd	ra,8(sp)
  mp_mod(d, m, result);
    e8843dd8:	f5ffc0ef          	jal	ra,e8840d36 <mp_mod>
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843ddc:	60a2                	ld	ra,8(sp)
    e8843dde:	4501                	li	a0,0
    e8843de0:	0141                	addi	sp,sp,16
    e8843de2:	8082                	ret

00000000e8843de4 <BigIntegerModMul>:
     BigInteger r, 
	 BigInteger m1, 
	 BigInteger m2, 
	 BigInteger modulus,
     BigIntegerCtx c)
{
    e8843de4:	87ae                	mv	a5,a1
    e8843de6:	1141                	addi	sp,sp,-16
    e8843de8:	85b2                	mv	a1,a2
    e8843dea:	8636                	mv	a2,a3
  mpz_mod(r, r, modulus);
#elif defined(GCRYPT)
  gcry_mpi_mulm(r, m1, m2, modulus);
#elif defined(MPI) || defined(TOMMATH)
  (void)c;
  mp_mulmod(m1, m2, modulus, r);
    e8843dec:	86aa                	mv	a3,a0
    e8843dee:	853e                	mv	a0,a5
{
    e8843df0:	e406                	sd	ra,8(sp)
  mp_mulmod(m1, m2, modulus, r);
    e8843df2:	c76fd0ef          	jal	ra,e8841268 <mp_mulmod>
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843df6:	60a2                	ld	ra,8(sp)
    e8843df8:	4501                	li	a0,0
    e8843dfa:	0141                	addi	sp,sp,16
    e8843dfc:	8082                	ret

00000000e8843dfe <BigIntegerModExp>:
BigIntegerResult
BigIntegerModExp(
     BigInteger r, BigInteger b, BigInteger e, BigInteger m,
     BigIntegerCtx c,
     BigIntegerModAccel a)
{
    e8843dfe:	87ae                	mv	a5,a1
    e8843e00:	1141                	addi	sp,sp,-16
    e8843e02:	85b2                	mv	a1,a2
    e8843e04:	8636                	mv	a2,a3
#elif defined(GCRYPT)
  gcry_mpi_powm(r, b, e, m);
#elif defined(MPI) || defined(TOMMATH)
  (void)c;
  (void)a;
  mp_exptmod(b, e, m, r);
    e8843e06:	86aa                	mv	a3,a0
    e8843e08:	853e                	mv	a0,a5
{
    e8843e0a:	e406                	sd	ra,8(sp)
  mp_exptmod(b, e, m, r);
    e8843e0c:	9a6fc0ef          	jal	ra,e883ffb2 <mp_exptmod>
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843e10:	60a2                	ld	ra,8(sp)
    e8843e12:	4501                	li	a0,0
    e8843e14:	0141                	addi	sp,sp,16
    e8843e16:	8082                	ret

00000000e8843e18 <BigIntegerFree>:
}

// APPLE MODIFICATION: Use ANSI C declarators.
BigIntegerResult
BigIntegerFree(BigInteger b)
{
    e8843e18:	1141                	addi	sp,sp,-16
    e8843e1a:	e406                	sd	ra,8(sp)
    e8843e1c:	e022                	sd	s0,0(sp)
    e8843e1e:	842a                	mv	s0,a0
  mpz_clear(b);
  free(b);
#elif defined(GCRYPT)
  gcry_mpi_release(b);
#elif defined(MPI) || defined(TOMMATH)
  mp_clear(b);
    e8843e20:	9b1fb0ef          	jal	ra,e883f7d0 <mp_clear>
  free(b);
    e8843e24:	8522                	mv	a0,s0
    e8843e26:	4da380ef          	jal	ra,e887c300 <eLIBs_free>
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843e2a:	6402                	ld	s0,0(sp)
    e8843e2c:	60a2                	ld	ra,8(sp)
    e8843e2e:	4501                	li	a0,0
    e8843e30:	0141                	addi	sp,sp,16
    e8843e32:	8082                	ret

00000000e8843e34 <BigIntegerClearFree>:
    e8843e34:	fe5ff06f          	j	e8843e18 <BigIntegerFree>

00000000e8843e38 <BigIntegerCtxNew>:
#ifdef OPENSSL
  return BN_CTX_new();
#else
  return NULL;
#endif
}
    e8843e38:	4501                	li	a0,0
    e8843e3a:	8082                	ret

00000000e8843e3c <BigIntegerCtxFree>:
    BN_CTX_free(ctx);
#else
 (void)ctx;
#endif
  return BIG_INTEGER_SUCCESS;
}
    e8843e3c:	4501                	li	a0,0
    e8843e3e:	8082                	ret

00000000e8843e40 <BigIntegerModAccelNew>:
#else
  (void)c;
  (void)m;
  return NULL;
#endif
}
    e8843e40:	4501                	li	a0,0
    e8843e42:	8082                	ret

00000000e8843e44 <BigIntegerModAccelFree>:
    e8843e44:	4501                	li	a0,0
    e8843e46:	8082                	ret

00000000e8843e48 <AES_CTR_Init>:
OSStatus
	AES_CTR_Init( 
		AES_CTR_Context *	inContext, 
		const uint8_t		inKey[ kAES_CTR_Size ], 
		const uint8_t		inNonce[ kAES_CTR_Size ] )
{
    e8843e48:	1101                	addi	sp,sp,-32
    e8843e4a:	ec06                	sd	ra,24(sp)
    e8843e4c:	f891540b          	sdd	s0,s1,(sp),0,4
    e8843e50:	e84a                	sd	s2,16(sp)
    e8843e52:	842a                	mv	s0,a0
    e8843e54:	84b2                	mv	s1,a2
    e8843e56:	892e                	mv	s2,a1
	err = CCCryptorCreate( kCCEncrypt, kCCAlgorithmAES, kCCOptionECBMode, inKey, kAES_CTR_Size, NULL, 
		&inContext->cryptor );
	check_noerr( err );
	if( err ) return( err );
#elif( AES_UTILS_USE_GLADMAN_AES )
	aes_init();
    e8843e58:	d01f70ef          	jal	ra,e883bb58 <aes_init>
	aes_encrypt_key128( inKey, &inContext->ctx );
    e8843e5c:	85a2                	mv	a1,s0
    e8843e5e:	854a                	mv	a0,s2
    e8843e60:	a26f70ef          	jal	ra,e883b086 <aes_encrypt_key128>
	check_noerr( err );
	if( err ) return( err );
#else
	AES_set_encrypt_key( inKey, kAES_CTR_Size * 8, &inContext->key );
#endif
	memcpy( inContext->ctr, inNonce, kAES_CTR_Size );
    e8843e64:	85a6                	mv	a1,s1
    e8843e66:	0f440513          	addi	a0,s0,244
    e8843e6a:	4641                	li	a2,16
    e8843e6c:	534380ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	inContext->used = 0;
    e8843e70:	10043c23          	sd	zero,280(s0)
	return( kNoErr );
}
    e8843e74:	60e2                	ld	ra,24(sp)
    e8843e76:	f891440b          	ldd	s0,s1,(sp),0,4
    e8843e7a:	6942                	ld	s2,16(sp)
    e8843e7c:	4501                	li	a0,0
    e8843e7e:	6105                	addi	sp,sp,32
    e8843e80:	8082                	ret

00000000e8843e82 <AES_CTR_Update>:
//===========================================================================================================================
//	AES_CTR_Update
//===========================================================================================================================

OSStatus	AES_CTR_Update( AES_CTR_Context *inContext, const void *inSrc, size_t inLen, void *inDst )
{
    e8843e82:	7159                	addi	sp,sp,-112
    e8843e84:	f0a2                	sd	s0,96(sp)
    e8843e86:	f85a                	sd	s6,48(sp)
    e8843e88:	f486                	sd	ra,104(sp)
    e8843e8a:	eca6                	sd	s1,88(sp)
    e8843e8c:	e8ca                	sd	s2,80(sp)
    e8843e8e:	e4ce                	sd	s3,72(sp)
    e8843e90:	e0d2                	sd	s4,64(sp)
    e8843e92:	fc56                	sd	s5,56(sp)
    e8843e94:	f45e                	sd	s7,40(sp)
    e8843e96:	f062                	sd	s8,32(sp)
    e8843e98:	ec66                	sd	s9,24(sp)
    e8843e9a:	e86a                	sd	s10,16(sp)
    e8843e9c:	e46e                	sd	s11,8(sp)
	dst = (uint8_t *) inDst;
	
	// If there's any buffered key material from a previous block then use that first.
	
	buf  = inContext->buf;
	used = inContext->used;
    e8843e9e:	11853903          	ld	s2,280(a0)
{
    e8843ea2:	842a                	mv	s0,a0
	buf  = inContext->buf;
    e8843ea4:	10450b13          	addi	s6,a0,260
	while( ( inLen > 0 ) && ( used != 0 ) ) 
    e8843ea8:	4781                	li	a5,0
    e8843eaa:	40f604b3          	sub	s1,a2,a5
    e8843eae:	00f68a33          	add	s4,a3,a5
    e8843eb2:	00f58ab3          	add	s5,a1,a5
    e8843eb6:	0cf60163          	beq	a2,a5,e8843f78 <AES_CTR_Update+0xf6>
    e8843eba:	0a091163          	bnez	s2,e8843f5c <AES_CTR_Update+0xda>
	{
		*dst++ = *src++ ^ buf[ used++ ];
		used %= kAES_CTR_Size;
		inLen -= 1;
	}
	inContext->used = used;
    e8843ebe:	11243c23          	sd	s2,280(s0)
	
	// Process whole blocks.
	
	while( inLen >= kAES_CTR_Size )
    e8843ec2:	4981                	li	s3,0
    e8843ec4:	4bbd                	li	s7,15
		#if( AES_UTILS_USE_COMMON_CRYPTO )
			err = CCCryptorUpdate( inContext->cryptor, inContext->ctr, kAES_CTR_Size, buf, kAES_CTR_Size, &i );
			require_noerr( err, exit );
			require_action( i == kAES_CTR_Size, exit, err = kSizeErr );
		#elif( AES_UTILS_USE_GLADMAN_AES )
			aes_ecb_encrypt( inContext->ctr, buf, kAES_CTR_Size, &inContext->ctx );
    e8843ec6:	0f440d13          	addi	s10,s0,244
    e8843eca:	ff040d93          	addi	s11,s0,-16
	while( inLen >= kAES_CTR_Size )
    e8843ece:	013487b3          	add	a5,s1,s3
    e8843ed2:	413a0cb3          	sub	s9,s4,s3
    e8843ed6:	413a8c33          	sub	s8,s5,s3
    e8843eda:	0afbe163          	bltu	s7,a5,e8843f7c <AES_CTR_Update+0xfa>
    e8843ede:	0044d793          	srli	a5,s1,0x4
    e8843ee2:	5741                	li	a4,-16
    e8843ee4:	20e7948b          	mula	s1,a5,a4
    e8843ee8:	0792                	slli	a5,a5,0x4
    e8843eea:	9abe                	add	s5,s5,a5
    e8843eec:	9a3e                	add	s4,s4,a5
		inLen -= kAES_CTR_Size;
	}
	
	// Process any trailing sub-block bytes. Extra key material is buffered for next time.
	
	if( inLen > 0 )
    e8843eee:	c4b9                	beqz	s1,e8843f3c <AES_CTR_Update+0xba>
		#if( AES_UTILS_USE_COMMON_CRYPTO )
			err = CCCryptorUpdate( inContext->cryptor, inContext->ctr, kAES_CTR_Size, buf, kAES_CTR_Size, &i );
			require_noerr( err, exit );
			require_action( i == kAES_CTR_Size, exit, err = kSizeErr );
		#elif( AES_UTILS_USE_GLADMAN_AES )
			aes_ecb_encrypt( inContext->ctr, buf, kAES_CTR_Size, &inContext->ctx );
    e8843ef0:	86a2                	mv	a3,s0
    e8843ef2:	4641                	li	a2,16
    e8843ef4:	85da                	mv	a1,s6
    e8843ef6:	0f440513          	addi	a0,s0,244
    e8843efa:	89cf50ef          	jal	ra,e8838f96 <aes_ecb_encrypt>
/*!	@function	BigEndianIntegerIncrement
	@abstract	Increments a big endian integer.
*/
STATIC_INLINE void	BigEndianIntegerIncrement( uint8_t *inInteger, size_t inLen )
{
	while( inLen-- > 0 )
    e8843efe:	8722                	mv	a4,s0
    e8843f00:	ff040693          	addi	a3,s0,-16
    e8843f04:	00e68b63          	beq	a3,a4,e8843f1a <AES_CTR_Update+0x98>
	{
		if( ++( inInteger[ inLen ] ) != 0 )
    e8843f08:	10374783          	lbu	a5,259(a4)
    e8843f0c:	177d                	addi	a4,a4,-1
    e8843f0e:	2785                	addiw	a5,a5,1
    e8843f10:	0ff7f793          	andi	a5,a5,255
    e8843f14:	10f70223          	sb	a5,260(a4)
    e8843f18:	d7f5                	beqz	a5,e8843f04 <AES_CTR_Update+0x82>
		#endif
		BigEndianIntegerIncrement( inContext->ctr, kAES_CTR_Size );
		
		for( i = 0; i < inLen; ++i )
		{
			*dst++ = *src++ ^ buf[ used++ ];
    e8843f1a:	10490693          	addi	a3,s2,260
	while( inLen >= kAES_CTR_Size )
    e8843f1e:	4781                	li	a5,0
			*dst++ = *src++ ^ buf[ used++ ];
    e8843f20:	96a2                	add	a3,a3,s0
    e8843f22:	80f6c70b          	lrbu	a4,a3,a5,0
    e8843f26:	80fac60b          	lrbu	a2,s5,a5,0
    e8843f2a:	8f31                	xor	a4,a4,a2
    e8843f2c:	00fa570b          	srb	a4,s4,a5,0
		for( i = 0; i < inLen; ++i )
    e8843f30:	0785                	addi	a5,a5,1
    e8843f32:	fef498e3          	bne	s1,a5,e8843f22 <AES_CTR_Update+0xa0>
		}
		inContext->used = used;
    e8843f36:	94ca                	add	s1,s1,s2
    e8843f38:	10943c23          	sd	s1,280(s0)
	
#if( AES_UTILS_USE_COMMON_CRYPTO || AES_UTILS_USE_WINDOWS_API )
exit:
#endif
	return( err );
}
    e8843f3c:	70a6                	ld	ra,104(sp)
    e8843f3e:	7406                	ld	s0,96(sp)
    e8843f40:	64e6                	ld	s1,88(sp)
    e8843f42:	6946                	ld	s2,80(sp)
    e8843f44:	69a6                	ld	s3,72(sp)
    e8843f46:	6a06                	ld	s4,64(sp)
    e8843f48:	7ae2                	ld	s5,56(sp)
    e8843f4a:	7b42                	ld	s6,48(sp)
    e8843f4c:	7ba2                	ld	s7,40(sp)
    e8843f4e:	7c02                	ld	s8,32(sp)
    e8843f50:	6ce2                	ld	s9,24(sp)
    e8843f52:	6d42                	ld	s10,16(sp)
    e8843f54:	6da2                	ld	s11,8(sp)
    e8843f56:	4501                	li	a0,0
    e8843f58:	6165                	addi	sp,sp,112
    e8843f5a:	8082                	ret
		*dst++ = *src++ ^ buf[ used++ ];
    e8843f5c:	812b470b          	lrbu	a4,s6,s2,0
    e8843f60:	80f5c80b          	lrbu	a6,a1,a5,0
    e8843f64:	00190513          	addi	a0,s2,1
		used %= kAES_CTR_Size;
    e8843f68:	00f57913          	andi	s2,a0,15
		*dst++ = *src++ ^ buf[ used++ ];
    e8843f6c:	01074733          	xor	a4,a4,a6
    e8843f70:	00f6d70b          	srb	a4,a3,a5,0
		inLen -= 1;
    e8843f74:	0785                	addi	a5,a5,1
    e8843f76:	bf15                	j	e8843eaa <AES_CTR_Update+0x28>
    e8843f78:	4481                	li	s1,0
    e8843f7a:	b791                	j	e8843ebe <AES_CTR_Update+0x3c>
			aes_ecb_encrypt( inContext->ctr, buf, kAES_CTR_Size, &inContext->ctx );
    e8843f7c:	86a2                	mv	a3,s0
    e8843f7e:	4641                	li	a2,16
    e8843f80:	85da                	mv	a1,s6
    e8843f82:	856a                	mv	a0,s10
    e8843f84:	812f50ef          	jal	ra,e8838f96 <aes_ecb_encrypt>
	while( inLen-- > 0 )
    e8843f88:	8722                	mv	a4,s0
    e8843f8a:	00ed8b63          	beq	s11,a4,e8843fa0 <AES_CTR_Update+0x11e>
		if( ++( inInteger[ inLen ] ) != 0 )
    e8843f8e:	10374783          	lbu	a5,259(a4)
    e8843f92:	177d                	addi	a4,a4,-1
    e8843f94:	2785                	addiw	a5,a5,1
    e8843f96:	0ff7f793          	andi	a5,a5,255
    e8843f9a:	10f70223          	sb	a5,260(a4)
    e8843f9e:	d7f5                	beqz	a5,e8843f8a <AES_CTR_Update+0x108>
    e8843fa0:	4781                	li	a5,0
		for( i = 0; i < kAES_CTR_Size; ++i )
    e8843fa2:	46c1                	li	a3,16
			dst[ i ] = src[ i ] ^ buf[ i ];
    e8843fa4:	80fb470b          	lrbu	a4,s6,a5,0
    e8843fa8:	80fc460b          	lrbu	a2,s8,a5,0
    e8843fac:	8f31                	xor	a4,a4,a2
    e8843fae:	00fcd70b          	srb	a4,s9,a5,0
		for( i = 0; i < kAES_CTR_Size; ++i )
    e8843fb2:	0785                	addi	a5,a5,1
    e8843fb4:	fed798e3          	bne	a5,a3,e8843fa4 <AES_CTR_Update+0x122>
		inLen -= kAES_CTR_Size;
    e8843fb8:	19c1                	addi	s3,s3,-16
    e8843fba:	bf11                	j	e8843ece <AES_CTR_Update+0x4c>

00000000e8843fbc <AES_CTR_Final>:
#else
STATIC_INLINE void	MemZeroSecure( void *inPtr, size_t inLen )
{
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
	
	while( inLen-- ) *ptr++ = 0;
    e8843fbc:	12050793          	addi	a5,a0,288
    e8843fc0:	00f51363          	bne	a0,a5,e8843fc6 <AES_CTR_Final+0xa>
#elif( AES_UTILS_USE_WINDOWS_API )
	if( inContext->key )		CryptDestroyKey( inContext->key );
	if( inContext->provider )	CryptReleaseContext( inContext->provider, 0 );
#endif
	MemZeroSecure( inContext, sizeof( *inContext ) );
}
    e8843fc4:	8082                	ret
    e8843fc6:	1815500b          	sbia	zero,(a0),1,0
    e8843fca:	bfdd                	j	e8843fc0 <AES_CTR_Final+0x4>

00000000e8843fcc <AES_CBCFrame_Init>:
	AES_CBCFrame_Init( 
		AES_CBCFrame_Context *	inContext, 
		const uint8_t			inKey[ kAES_CBCFrame_Size ], 
		const uint8_t			inIV[ kAES_CBCFrame_Size ], 
		Boolean					inEncrypt )
{
    e8843fcc:	7179                	addi	sp,sp,-48
    e8843fce:	e422                	sd	s0,8(sp)
    e8843fd0:	e826                	sd	s1,16(sp)
    e8843fd2:	ec4a                	sd	s2,24(sp)
    e8843fd4:	f04e                	sd	s3,32(sp)
    e8843fd6:	892e                	mv	s2,a1
    e8843fd8:	842a                	mv	s0,a0
    e8843fda:	f406                	sd	ra,40(sp)
    e8843fdc:	89b2                	mv	s3,a2
    e8843fde:	84b6                	mv	s1,a3
	err = CCCryptorCreate( inEncrypt ? kCCEncrypt : kCCDecrypt, kCCAlgorithmAES, 0, inKey, kAES_CTR_Size, 
		NULL, &inContext->cryptor );
	check_noerr( err );
	if( err ) return( err );
#elif( AES_UTILS_USE_GLADMAN_AES )
	aes_init();
    e8843fe0:	b79f70ef          	jal	ra,e883bb58 <aes_init>
	if( inEncrypt ) aes_encrypt_key128( inKey, &inContext->ctx.encrypt );
    e8843fe4:	85a2                	mv	a1,s0
    e8843fe6:	854a                	mv	a0,s2
    e8843fe8:	c09d                	beqz	s1,e884400e <AES_CBCFrame_Init+0x42>
    e8843fea:	89cf70ef          	jal	ra,e883b086 <aes_encrypt_key128>
	else			aes_decrypt_key128( inKey, &inContext->ctx.decrypt );
	inContext->encrypt = inEncrypt;
    e8843fee:	0e942a23          	sw	s1,244(s0)
#else
	if( inEncrypt ) AES_set_encrypt_key( inKey, kAES_CBCFrame_Size * 8, &inContext->key );
	else			AES_set_decrypt_key( inKey, kAES_CBCFrame_Size * 8, &inContext->key );
	inContext->mode = inEncrypt ? AES_ENCRYPT : AES_DECRYPT;
#endif
	memcpy( inContext->iv, inIV, kAES_CBCFrame_Size );
    e8843ff2:	85ce                	mv	a1,s3
    e8843ff4:	0f840513          	addi	a0,s0,248
    e8843ff8:	4641                	li	a2,16
    e8843ffa:	3a6380ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	return( kNoErr );
}
    e8843ffe:	6422                	ld	s0,8(sp)
    e8844000:	70a2                	ld	ra,40(sp)
    e8844002:	64c2                	ld	s1,16(sp)
    e8844004:	6962                	ld	s2,24(sp)
    e8844006:	7982                	ld	s3,32(sp)
    e8844008:	4501                	li	a0,0
    e884400a:	6145                	addi	sp,sp,48
    e884400c:	8082                	ret
	else			aes_decrypt_key128( inKey, &inContext->ctx.decrypt );
    e884400e:	c4cf70ef          	jal	ra,e883b45a <aes_decrypt_key128>
    e8844012:	bff1                	j	e8843fee <AES_CBCFrame_Init+0x22>

00000000e8844014 <AES_CBCFrame_Update>:
//===========================================================================================================================
//	AES_CBCFrame_Update
//===========================================================================================================================

OSStatus	AES_CBCFrame_Update( AES_CBCFrame_Context *inContext, const void *inSrc, size_t inSrcLen, void *inDst )
{
    e8844014:	715d                	addi	sp,sp,-80
    e8844016:	e0a2                	sd	s0,64(sp)
    e8844018:	fc26                	sd	s1,56(sp)
    e884401a:	f84a                	sd	s2,48(sp)
    e884401c:	f44e                	sd	s3,40(sp)
    e884401e:	e486                	sd	ra,72(sp)
	end = src + inSrcLen;
	dst = (uint8_t *) inDst;
	
	// Process whole blocks.
	
	len = inSrcLen & ~( (size_t)( kAES_CBCFrame_Size - 1 ) );
    e8844020:	ff067493          	andi	s1,a2,-16
{
    e8844024:	842e                	mv	s0,a1
    e8844026:	8936                	mv	s2,a3
	end = src + inSrcLen;
    e8844028:	00c589b3          	add	s3,a1,a2
	if( len > 0 )
    e884402c:	c48d                	beqz	s1,e8844056 <AES_CBCFrame_Update+0x42>
			err = CCCryptorUpdate( inContext->cryptor, src, len, dst, len, &len );
			require_noerr( err, exit );
		#elif( AES_UTILS_USE_GLADMAN_AES )
			uint8_t		iv[ kAES_CBCFrame_Size ];
			
			memcpy( iv, inContext->iv, kAES_CBCFrame_Size ); // Use local copy so original IV is not changed.
    e884402e:	0f850593          	addi	a1,a0,248
    e8844032:	4641                	li	a2,16
    e8844034:	e42a                	sd	a0,8(sp)
    e8844036:	0808                	addi	a0,sp,16
    e8844038:	368380ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			if( inContext->encrypt )	aes_cbc_encrypt( src, dst, (int) len, iv, &inContext->ctx.encrypt );
    e884403c:	6722                	ld	a4,8(sp)
    e884403e:	0004861b          	sext.w	a2,s1
    e8844042:	0814                	addi	a3,sp,16
    e8844044:	0f472783          	lw	a5,244(a4)
    e8844048:	85ca                	mv	a1,s2
    e884404a:	8522                	mv	a0,s0
    e884404c:	c395                	beqz	a5,e8844070 <AES_CBCFrame_Update+0x5c>
    e884404e:	f91f40ef          	jal	ra,e8838fde <aes_cbc_encrypt>
			uint8_t		iv[ kAES_CBCFrame_Size ];
			
			memcpy( iv, inContext->iv, kAES_CBCFrame_Size ); // Use local copy so original IV is not changed.
			AES_cbc_encrypt( src, dst, (unsigned long) len, &inContext->key, iv, inContext->mode );
		#endif
		src += len;
    e8844052:	9426                	add	s0,s0,s1
		dst += len;
    e8844054:	9926                	add	s2,s2,s1
    e8844056:	408989b3          	sub	s3,s3,s0
{
    e884405a:	4781                	li	a5,0
	}
	
	// The remaining bytes are just copied unencrypted.
	
	while( src != end ) *dst++ = *src++;
    e884405c:	01379d63          	bne	a5,s3,e8844076 <AES_CBCFrame_Update+0x62>
	
#if( AES_UTILS_USE_COMMON_CRYPTO || AES_UTILS_USE_WINDOWS_API )
exit:
#endif
	return( err );
}
    e8844060:	60a6                	ld	ra,72(sp)
    e8844062:	6406                	ld	s0,64(sp)
    e8844064:	74e2                	ld	s1,56(sp)
    e8844066:	7942                	ld	s2,48(sp)
    e8844068:	79a2                	ld	s3,40(sp)
    e884406a:	4501                	li	a0,0
    e884406c:	6161                	addi	sp,sp,80
    e884406e:	8082                	ret
			else						aes_cbc_decrypt( src, dst, (int) len, iv, &inContext->ctx.decrypt );
    e8844070:	8f8f50ef          	jal	ra,e8839168 <aes_cbc_decrypt>
    e8844074:	bff9                	j	e8844052 <AES_CBCFrame_Update+0x3e>
	while( src != end ) *dst++ = *src++;
    e8844076:	80f4470b          	lrbu	a4,s0,a5,0
    e884407a:	00f9570b          	srb	a4,s2,a5,0
    e884407e:	0785                	addi	a5,a5,1
    e8844080:	bff1                	j	e884405c <AES_CBCFrame_Update+0x48>

00000000e8844082 <AES_CBCFrame_Final>:
    e8844082:	10850793          	addi	a5,a0,264
    e8844086:	00f51363          	bne	a0,a5,e884408c <AES_CBCFrame_Final+0xa>
#elif( AES_UTILS_USE_WINDOWS_API )
	if( inContext->key )		CryptDestroyKey( inContext->key );
	if( inContext->provider )	CryptReleaseContext( inContext->provider, 0 );
#endif
	MemZeroSecure( inContext, sizeof( *inContext ) );
}
    e884408a:	8082                	ret
    e884408c:	1815500b          	sbia	zero,(a0),1,0
    e8844090:	bfdd                	j	e8844086 <AES_CBCFrame_Final+0x4>

00000000e8844092 <_AsyncConnection_Release>:
{
	dispatch_async_f( inConnection->handlerQueue, inConnection, _AsyncConnection_UserRelease );
}

static void	_AsyncConnection_Release( void *inArg )
{
    e8844092:	1141                	addi	sp,sp,-16
    e8844094:	e022                	sd	s0,0(sp)
    e8844096:	e406                	sd	ra,8(sp)
	AsyncConnectionRef const		connection = (AsyncConnectionRef) inArg;
	
	if( --connection->refCount == 0 )
    e8844098:	411c                	lw	a5,0(a0)
{
    e884409a:	842a                	mv	s0,a0
	if( --connection->refCount == 0 )
    e884409c:	fff7871b          	addiw	a4,a5,-1
    e88440a0:	c118                	sw	a4,0(a0)
    e88440a2:	eb0d                	bnez	a4,e88440d4 <_AsyncConnection_Release+0x42>
	{
		_AsyncConnection_Complete( connection, kInvalidSocketRef, kCanceledErr );
    e88440a4:	7679                	lui	a2,0xffffe
    e88440a6:	5bd60613          	addi	a2,a2,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
    e88440aa:	55fd                	li	a1,-1
    e88440ac:	0b0000ef          	jal	ra,e884415c <_AsyncConnection_Complete>
		dispatch_forget( &connection->handlerQueue );
    e88440b0:	6c28                	ld	a0,88(s0)
    e88440b2:	c509                	beqz	a0,e88440bc <_AsyncConnection_Release+0x2a>
    e88440b4:	19d0a0ef          	jal	ra,e884ea50 <dispatch_release>
    e88440b8:	04043c23          	sd	zero,88(s0)
		ForgetMem( &connection->destination );
    e88440bc:	6408                	ld	a0,8(s0)
    e88440be:	c509                	beqz	a0,e88440c8 <_AsyncConnection_Release+0x36>
    e88440c0:	240380ef          	jal	ra,e887c300 <eLIBs_free>
    e88440c4:	00043423          	sd	zero,8(s0)
		free( connection );
    e88440c8:	8522                	mv	a0,s0
	}
}
    e88440ca:	6402                	ld	s0,0(sp)
    e88440cc:	60a2                	ld	ra,8(sp)
    e88440ce:	0141                	addi	sp,sp,16
		free( connection );
    e88440d0:	2303806f          	j	e887c300 <eLIBs_free>
}
    e88440d4:	60a2                	ld	ra,8(sp)
    e88440d6:	6402                	ld	s0,0(sp)
    e88440d8:	0141                	addi	sp,sp,16
    e88440da:	8082                	ret

00000000e88440dc <_AsyncConnection_ReleaseOperation>:
//===========================================================================================================================
//	_AsyncConnection_ReleaseOperation
//===========================================================================================================================

static void	_AsyncConnection_ReleaseOperation( AsyncConnectionOperationRef inOperation )
{
    e88440dc:	1141                	addi	sp,sp,-16
    e88440de:	e022                	sd	s0,0(sp)
    e88440e0:	e406                	sd	ra,8(sp)
    e88440e2:	842a                	mv	s0,a0
		SCNetworkReachabilitySetDispatchQueue( inOperation->reachability, NULL );
		CFRelease( inOperation->reachability );
		inOperation->reachability = NULL;
	}
#endif
	dispatch_source_forget( &inOperation->delayTimer );
    e88440e4:	6528                	ld	a0,72(a0)
    e88440e6:	c901                	beqz	a0,e88440f6 <_AsyncConnection_ReleaseOperation+0x1a>
    e88440e8:	35f0b0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e88440ec:	6428                	ld	a0,72(s0)
    e88440ee:	1630a0ef          	jal	ra,e884ea50 <dispatch_release>
    e88440f2:	04043423          	sd	zero,72(s0)
	dispatch_source_forget( &inOperation->readSource );
    e88440f6:	6828                	ld	a0,80(s0)
    e88440f8:	c901                	beqz	a0,e8844108 <_AsyncConnection_ReleaseOperation+0x2c>
    e88440fa:	34d0b0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e88440fe:	6828                	ld	a0,80(s0)
    e8844100:	1510a0ef          	jal	ra,e884ea50 <dispatch_release>
    e8844104:	04043823          	sd	zero,80(s0)
	dispatch_source_forget( &inOperation->writeSource );
    e8844108:	6c28                	ld	a0,88(s0)
    e884410a:	c901                	beqz	a0,e884411a <_AsyncConnection_ReleaseOperation+0x3e>
    e884410c:	33b0b0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8844110:	6c28                	ld	a0,88(s0)
    e8844112:	13f0a0ef          	jal	ra,e884ea50 <dispatch_release>
    e8844116:	04043c23          	sd	zero,88(s0)
#if( ASYNC_CONNECTION_BONJOUR )
	DNSServiceForget( &inOperation->service );
    e884411a:	6028                	ld	a0,64(s0)
    e884411c:	c509                	beqz	a0,e8844126 <_AsyncConnection_ReleaseOperation+0x4a>
    e884411e:	bc3d60ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    e8844122:	04043023          	sd	zero,64(s0)
#endif
	if( --inOperation->refCount == 0 )
    e8844126:	401c                	lw	a5,0(s0)
    e8844128:	fff7871b          	addiw	a4,a5,-1
    e884412c:	c018                	sw	a4,0(s0)
    e884412e:	e30d                	bnez	a4,e8844150 <_AsyncConnection_ReleaseOperation+0x74>
	{
		ForgetSocket( &inOperation->nativeSock );
    e8844130:	5c48                	lw	a0,60(s0)
    e8844132:	00054663          	bltz	a0,e884413e <_AsyncConnection_ReleaseOperation+0x62>
    e8844136:	06c410ef          	jal	ra,e88851a2 <lwip_close>
    e884413a:	57fd                	li	a5,-1
    e884413c:	dc5c                	sw	a5,60(s0)
		_AsyncConnection_Release( inOperation->connection );
    e884413e:	6808                	ld	a0,16(s0)
    e8844140:	f53ff0ef          	jal	ra,e8844092 <_AsyncConnection_Release>
		free( inOperation );
    e8844144:	8522                	mv	a0,s0
	}
}
    e8844146:	6402                	ld	s0,0(sp)
    e8844148:	60a2                	ld	ra,8(sp)
    e884414a:	0141                	addi	sp,sp,16
		free( inOperation );
    e884414c:	1b43806f          	j	e887c300 <eLIBs_free>
}
    e8844150:	60a2                	ld	ra,8(sp)
    e8844152:	6402                	ld	s0,0(sp)
    e8844154:	0141                	addi	sp,sp,16
    e8844156:	8082                	ret

00000000e8844158 <_AsyncConnection_CancelHandler>:
//	_AsyncConnection_CancelHandler
//===========================================================================================================================

static void	_AsyncConnection_CancelHandler( void *inContext )
{
	_AsyncConnection_ReleaseOperation( (AsyncConnectionOperationRef) inContext );
    e8844158:	f85ff06f          	j	e88440dc <_AsyncConnection_ReleaseOperation>

00000000e884415c <_AsyncConnection_Complete>:
{
    e884415c:	1141                	addi	sp,sp,-16
    e884415e:	e022                	sd	s0,0(sp)
    e8844160:	e406                	sd	ra,8(sp)
	handlerFunc = inConnection->handlerFunc;
    e8844162:	713c                	ld	a5,96(a0)
	inConnection->handlerFunc = NULL;
    e8844164:	06053023          	sd	zero,96(a0)
{
    e8844168:	842a                	mv	s0,a0
	if( handlerFunc ) handlerFunc( inSock, inError, inConnection->handlerArg );
    e884416a:	c789                	beqz	a5,e8844174 <_AsyncConnection_Complete+0x18>
    e884416c:	852e                	mv	a0,a1
    e884416e:	85b2                	mv	a1,a2
    e8844170:	7430                	ld	a2,104(s0)
    e8844172:	9782                	jalr	a5
	dispatch_source_forget( &inConnection->timerSource );
    e8844174:	7c08                	ld	a0,56(s0)
    e8844176:	c901                	beqz	a0,e8844186 <_AsyncConnection_Complete+0x2a>
    e8844178:	2cf0b0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e884417c:	7c08                	ld	a0,56(s0)
    e884417e:	0d30a0ef          	jal	ra,e884ea50 <dispatch_release>
    e8844182:	02043c23          	sd	zero,56(s0)
	while( ( operation = inConnection->operationList ) != NULL )
    e8844186:	6028                	ld	a0,64(s0)
    e8844188:	e509                	bnez	a0,e8844192 <_AsyncConnection_Complete+0x36>
}
    e884418a:	60a2                	ld	ra,8(sp)
    e884418c:	6402                	ld	s0,0(sp)
    e884418e:	0141                	addi	sp,sp,16
    e8844190:	8082                	ret
		inConnection->operationList = operation->next;
    e8844192:	651c                	ld	a5,8(a0)
    e8844194:	e03c                	sd	a5,64(s0)
		_AsyncConnection_ReleaseOperation( operation );
    e8844196:	f47ff0ef          	jal	ra,e88440dc <_AsyncConnection_ReleaseOperation>
    e884419a:	b7f5                	j	e8844186 <_AsyncConnection_Complete+0x2a>

00000000e884419c <_AsyncConnection_TimeoutHandler>:
//===========================================================================================================================
//	_AsyncConnection_TimeoutHandler
//===========================================================================================================================

static void	_AsyncConnection_TimeoutHandler( void *inArg )
{
    e884419c:	1141                	addi	sp,sp,-16
    e884419e:	e022                	sd	s0,0(sp)
    e88441a0:	e406                	sd	ra,8(sp)
    e88441a2:	842a                	mv	s0,a0
	AsyncConnectionRef const		me = (AsyncConnectionRef) inArg;
	
	ac_ulog( me, kLogLevelInfo, "### Connect to %s timed out\n", me->destination );
    e88441a4:	7928                	ld	a0,112(a0)
    e88441a6:	02800713          	li	a4,40
    e88441aa:	411c                	lw	a5,0(a0)
    e88441ac:	02f74363          	blt	a4,a5,e88441d2 <_AsyncConnection_TimeoutHandler+0x36>
    e88441b0:	577d                	li	a4,-1
    e88441b2:	02e78a63          	beq	a5,a4,e88441e6 <_AsyncConnection_TimeoutHandler+0x4a>
    e88441b6:	6418                	ld	a4,8(s0)
    e88441b8:	7828                	ld	a0,112(s0)
    e88441ba:	0007a697          	auipc	a3,0x7a
    e88441be:	ad668693          	addi	a3,a3,-1322 # e88bdc90 <kSRPHashDescriptor_SHA512+0x280>
    e88441c2:	02800613          	li	a2,40
    e88441c6:	0007a597          	auipc	a1,0x7a
    e88441ca:	c0258593          	addi	a1,a1,-1022 # e88bddc8 <__PRETTY_FUNCTION__.10585>
    e88441ce:	2a6100ef          	jal	ra,e8854474 <LogPrintF>
	_AsyncConnection_Complete( me, kInvalidSocketRef, kTimeoutErr );
    e88441d2:	8522                	mv	a0,s0
}
    e88441d4:	6402                	ld	s0,0(sp)
    e88441d6:	60a2                	ld	ra,8(sp)
	_AsyncConnection_Complete( me, kInvalidSocketRef, kTimeoutErr );
    e88441d8:	7679                	lui	a2,0xffffe
    e88441da:	5be60613          	addi	a2,a2,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e88441de:	55fd                	li	a1,-1
}
    e88441e0:	0141                	addi	sp,sp,16
	_AsyncConnection_Complete( me, kInvalidSocketRef, kTimeoutErr );
    e88441e2:	f7bff06f          	j	e884415c <_AsyncConnection_Complete>
	ac_ulog( me, kLogLevelInfo, "### Connect to %s timed out\n", me->destination );
    e88441e6:	02800593          	li	a1,40
    e88441ea:	6890f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88441ee:	d175                	beqz	a0,e88441d2 <_AsyncConnection_TimeoutHandler+0x36>
    e88441f0:	b7d9                	j	e88441b6 <_AsyncConnection_TimeoutHandler+0x1a>

00000000e88441f2 <_AsyncConnection_ErrorHandler>:
{
    e88441f2:	1141                	addi	sp,sp,-16
    e88441f4:	e406                	sd	ra,8(sp)
    e88441f6:	e022                	sd	s0,0(sp)
	AsyncConnectionRef const			connection = inOperation->connection;
    e88441f8:	691c                	ld	a5,16(a0)
	for( next = &connection->operationList; ( curr = *next ) != NULL; next = &curr->next )
    e88441fa:	63a0                	ld	s0,64(a5)
    e88441fc:	04078713          	addi	a4,a5,64
    e8844200:	c409                	beqz	s0,e884420a <_AsyncConnection_ErrorHandler+0x18>
		if( curr == inOperation )
    e8844202:	6414                	ld	a3,8(s0)
    e8844204:	02851163          	bne	a0,s0,e8844226 <_AsyncConnection_ErrorHandler+0x34>
			*next = curr->next;
    e8844208:	e314                	sd	a3,0(a4)
	if( connection->operationList == NULL )
    e884420a:	63b8                	ld	a4,64(a5)
    e884420c:	e711                	bnez	a4,e8844218 <_AsyncConnection_ErrorHandler+0x26>
    e884420e:	862e                	mv	a2,a1
		_AsyncConnection_Complete( connection, kInvalidSocketRef, inError );
    e8844210:	853e                	mv	a0,a5
    e8844212:	55fd                	li	a1,-1
    e8844214:	f49ff0ef          	jal	ra,e884415c <_AsyncConnection_Complete>
	if( curr )
    e8844218:	c819                	beqz	s0,e884422e <_AsyncConnection_ErrorHandler+0x3c>
		_AsyncConnection_ReleaseOperation( curr );
    e884421a:	8522                	mv	a0,s0
}
    e884421c:	6402                	ld	s0,0(sp)
    e884421e:	60a2                	ld	ra,8(sp)
    e8844220:	0141                	addi	sp,sp,16
		_AsyncConnection_ReleaseOperation( curr );
    e8844222:	ebbff06f          	j	e88440dc <_AsyncConnection_ReleaseOperation>
	for( next = &connection->operationList; ( curr = *next ) != NULL; next = &curr->next )
    e8844226:	00840713          	addi	a4,s0,8
    e884422a:	8436                	mv	s0,a3
    e884422c:	bfd1                	j	e8844200 <_AsyncConnection_ErrorHandler+0xe>
}
    e884422e:	60a2                	ld	ra,8(sp)
    e8844230:	6402                	ld	s0,0(sp)
    e8844232:	0141                	addi	sp,sp,16
    e8844234:	8082                	ret

00000000e8844236 <_AsyncConnection_ConnectHandler>:
{
    e8844236:	7175                	addi	sp,sp,-144
    e8844238:	e122                	sd	s0,128(sp)
    e884423a:	fca6                	sd	s1,120(sp)
    e884423c:	842a                	mv	s0,a0
    e884423e:	b4a2                	fsd	fs0,104(sp)
    e8844240:	e506                	sd	ra,136(sp)
	now = CFAbsoluteTimeGetCurrent();
    e8844242:	034070ef          	jal	ra,e884b276 <CFAbsoluteTimeGetCurrent>
	sock = inOperation->nativeSock;
    e8844246:	5c44                	lw	s1,60(s0)
	inOperation->connectSecs = now - inOperation->connectStartTime;
    e8844248:	285c                	fld	fa5,144(s0)
	err = getsockopt( sock, SOL_SOCKET, SO_ERROR, (char *) &tempInt, &len );
    e884424a:	6585                	lui	a1,0x1
	len = (socklen_t) sizeof( tempInt );
    e884424c:	4791                	li	a5,4
	inOperation->connectSecs = now - inOperation->connectStartTime;
    e884424e:	0af577d3          	fsub.d	fa5,fa0,fa5
	err = getsockopt( sock, SOL_SOCKET, SO_ERROR, (char *) &tempInt, &len );
    e8844252:	00758613          	addi	a2,a1,7 # 1007 <memcmp-0xe87feff9>
    e8844256:	0858                	addi	a4,sp,20
    e8844258:	0814                	addi	a3,sp,16
    e884425a:	15fd                	addi	a1,a1,-1
    e884425c:	8526                	mv	a0,s1
	now = CFAbsoluteTimeGetCurrent();
    e884425e:	22a50453          	fmv.d	fs0,fa0
	inOperation->connectSecs = now - inOperation->connectStartTime;
    e8844262:	ac5c                	fsd	fa5,152(s0)
	tempInt = 0;
    e8844264:	c802                	sw	zero,16(sp)
	len = (socklen_t) sizeof( tempInt );
    e8844266:	ca3e                	sw	a5,20(sp)
	err = getsockopt( sock, SOL_SOCKET, SO_ERROR, (char *) &tempInt, &len );
    e8844268:	655410ef          	jal	ra,e88860bc <lwip_getsockopt>
	err = map_socket_noerr_errno( sock, err );
    e884426c:	cd11                	beqz	a0,e8844288 <_AsyncConnection_ConnectHandler+0x52>
    e884426e:	000a0797          	auipc	a5,0xa0
    e8844272:	3ba78793          	addi	a5,a5,954 # e88e4628 <lwip_errno>
    e8844276:	438c                	lw	a1,0(a5)
    e8844278:	e581                	bnez	a1,e8844280 <_AsyncConnection_ConnectHandler+0x4a>
    e884427a:	75f9                	lui	a1,0xffffe
    e884427c:	5d458593          	addi	a1,a1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( err ) _AsyncConnection_ErrorHandler( inOperation, err );
    e8844280:	8522                	mv	a0,s0
    e8844282:	f71ff0ef          	jal	ra,e88441f2 <_AsyncConnection_ErrorHandler>
    e8844286:	a855                	j	e884433a <_AsyncConnection_ConnectHandler+0x104>
	if( err == 0 ) err = tempInt;
    e8844288:	45c2                	lw	a1,16(sp)
	if( err ) goto exit;
    e884428a:	f9fd                	bnez	a1,e8844280 <_AsyncConnection_ConnectHandler+0x4a>
	memset( &info, 0, sizeof( info ) );
    e884428c:	04800613          	li	a2,72
    e8844290:	0828                	addi	a0,sp,24
    e8844292:	102380ef          	jal	ra,e887c394 <eLIBs_memset>
	info.addr				= inOperation->addr;
    e8844296:	4671                	li	a2,28
    e8844298:	01840593          	addi	a1,s0,24
    e884429c:	0828                	addi	a0,sp,24
    e884429e:	dcbbb0ef          	jal	ra,e8800068 <memcpy>
	info.reachabilitySecs	= inOperation->reachabilitySecs;
    e88442a2:	343c                	fld	fa5,104(s0)
	info.totalSecs			= now - inOperation->connection->startTime;
    e88442a4:	681c                	ld	a5,16(s0)
	ac_ulog( inOperation->connection, kLogLevelVerbose, 
    e88442a6:	4751                	li	a4,20
	info.reachabilitySecs	= inOperation->reachabilitySecs;
    e88442a8:	bc3e                	fsd	fa5,56(sp)
	info.srvSecs			= inOperation->srvSecs;
    e88442aa:	3c3c                	fld	fa5,120(s0)
	ac_ulog( inOperation->connection, kLogLevelVerbose, 
    e88442ac:	7ba8                	ld	a0,112(a5)
	info.srvSecs			= inOperation->srvSecs;
    e88442ae:	a0be                	fsd	fa5,64(sp)
	info.dnsResolveSecs		= inOperation->dnsResolveSecs;
    e88442b0:	245c                	fld	fa5,136(s0)
    e88442b2:	a4be                	fsd	fa5,72(sp)
	info.connectSecs		= inOperation->connectSecs;
    e88442b4:	2c5c                	fld	fa5,152(s0)
    e88442b6:	a8be                	fsd	fa5,80(sp)
	info.totalSecs			= now - inOperation->connection->startTime;
    e88442b8:	3b88                	fld	fa0,48(a5)
    e88442ba:	0aa47453          	fsub.d	fs0,fs0,fa0
    e88442be:	aca2                	fsd	fs0,88(sp)
	ac_ulog( inOperation->connection, kLogLevelVerbose, 
    e88442c0:	411c                	lw	a5,0(a0)
    e88442c2:	04f74e63          	blt	a4,a5,e884431e <_AsyncConnection_ConnectHandler+0xe8>
    e88442c6:	577d                	li	a4,-1
    e88442c8:	06e78f63          	beq	a5,a4,e8844346 <_AsyncConnection_ConnectHandler+0x110>
    e88442cc:	2766                	fld	fa4,88(sp)
    e88442ce:	00079797          	auipc	a5,0x79
    e88442d2:	7c27b787          	fld	fa5,1986(a5) # e88bda90 <kSRPHashDescriptor_SHA512+0x80>
    e88442d6:	0838                	addi	a4,sp,24
    e88442d8:	12f77753          	fmul.d	fa4,fa4,fa5
    e88442dc:	681c                	ld	a5,16(s0)
    e88442de:	00079697          	auipc	a3,0x79
    e88442e2:	7ba68693          	addi	a3,a3,1978 # e88bda98 <kSRPHashDescriptor_SHA512+0x88>
    e88442e6:	4651                	li	a2,20
    e88442e8:	7ba8                	ld	a0,112(a5)
    e88442ea:	0007a597          	auipc	a1,0x7a
    e88442ee:	a9e58593          	addi	a1,a1,-1378 # e88bdd88 <__PRETTY_FUNCTION__.10559>
    e88442f2:	a43a                	fsd	fa4,8(sp)
    e88442f4:	2746                	fld	fa4,80(sp)
    e88442f6:	12f77753          	fmul.d	fa4,fa4,fa5
    e88442fa:	a03a                	fsd	fa4,0(sp)
    e88442fc:	2726                	fld	fa4,72(sp)
    e88442fe:	12f77753          	fmul.d	fa4,fa4,fa5
    e8844302:	e20708d3          	fmv.x.d	a7,fa4
    e8844306:	2706                	fld	fa4,64(sp)
    e8844308:	12f77753          	fmul.d	fa4,fa4,fa5
    e884430c:	e2070853          	fmv.x.d	a6,fa4
    e8844310:	3762                	fld	fa4,56(sp)
    e8844312:	12f777d3          	fmul.d	fa5,fa4,fa5
    e8844316:	e20787d3          	fmv.x.d	a5,fa5
    e884431a:	15a100ef          	jal	ra,e8854474 <LogPrintF>
	AsyncConnectionProgress( inOperation->connection, kAsyncConnectionPhase_Connected, &info );
    e884431e:	6818                	ld	a4,16(s0)
    e8844320:	673c                	ld	a5,72(a4)
    e8844322:	c789                	beqz	a5,e884432c <_AsyncConnection_ConnectHandler+0xf6>
    e8844324:	6b30                	ld	a2,80(a4)
    e8844326:	082c                	addi	a1,sp,24
    e8844328:	4511                	li	a0,4
    e884432a:	9782                	jalr	a5
	_AsyncConnection_Complete( inOperation->connection, sock, kNoErr );
    e884432c:	6808                	ld	a0,16(s0)
	inOperation->nativeSock = kInvalidSocketRef;
    e884432e:	57fd                	li	a5,-1
    e8844330:	dc5c                	sw	a5,60(s0)
	_AsyncConnection_Complete( inOperation->connection, sock, kNoErr );
    e8844332:	4601                	li	a2,0
    e8844334:	85a6                	mv	a1,s1
    e8844336:	e27ff0ef          	jal	ra,e884415c <_AsyncConnection_Complete>
}
    e884433a:	60aa                	ld	ra,136(sp)
    e884433c:	640a                	ld	s0,128(sp)
    e884433e:	74e6                	ld	s1,120(sp)
    e8844340:	3426                	fld	fs0,104(sp)
    e8844342:	6149                	addi	sp,sp,144
    e8844344:	8082                	ret
	ac_ulog( inOperation->connection, kLogLevelVerbose, 
    e8844346:	45d1                	li	a1,20
    e8844348:	52b0f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884434c:	d969                	beqz	a0,e884431e <_AsyncConnection_ConnectHandler+0xe8>
    e884434e:	bfbd                	j	e88442cc <_AsyncConnection_ConnectHandler+0x96>

00000000e8844350 <_AsyncConnection_UserRelease>:
	_AsyncConnection_Complete( (AsyncConnectionRef) inArg, kInvalidSocketRef, kCanceledErr );
    e8844350:	7679                	lui	a2,0xffffe
{
    e8844352:	1141                	addi	sp,sp,-16
	_AsyncConnection_Complete( (AsyncConnectionRef) inArg, kInvalidSocketRef, kCanceledErr );
    e8844354:	5bd60613          	addi	a2,a2,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
    e8844358:	55fd                	li	a1,-1
{
    e884435a:	e022                	sd	s0,0(sp)
    e884435c:	e406                	sd	ra,8(sp)
    e884435e:	842a                	mv	s0,a0
	_AsyncConnection_Complete( (AsyncConnectionRef) inArg, kInvalidSocketRef, kCanceledErr );
    e8844360:	dfdff0ef          	jal	ra,e884415c <_AsyncConnection_Complete>
	_AsyncConnection_Release( (AsyncConnectionRef) inArg );
    e8844364:	8522                	mv	a0,s0
}
    e8844366:	6402                	ld	s0,0(sp)
    e8844368:	60a2                	ld	ra,8(sp)
    e884436a:	0141                	addi	sp,sp,16
	_AsyncConnection_Release( (AsyncConnectionRef) inArg );
    e884436c:	d27ff06f          	j	e8844092 <_AsyncConnection_Release>

00000000e8844370 <_AsyncConnection_EventHandler>:
{
    e8844370:	7139                	addi	sp,sp,-64
    e8844372:	f026                	sd	s1,32(sp)
    e8844374:	fc06                	sd	ra,56(sp)
    e8844376:	ec22                	sd	s0,24(sp)
    e8844378:	f44a                	sd	s2,40(sp)
    e884437a:	f84e                	sd	s3,48(sp)
    e884437c:	84aa                	mv	s1,a0
	if( operation->service )
    e884437e:	6128                	ld	a0,64(a0)
    e8844380:	c929                	beqz	a0,e88443d2 <_AsyncConnection_EventHandler+0x62>
		err = DNSServiceProcessResult( operation->service );
    e8844382:	95bd60ef          	jal	ra,e881acdc <DNSServiceProcessResult>
    e8844386:	842a                	mv	s0,a0
		if( err )
    e8844388:	cd55                	beqz	a0,e8844444 <_AsyncConnection_EventHandler+0xd4>
			ac_ulog( operation->connection, kLogLevelAssert, "DNSServiceProcessResult failed: %#m...Bonjour crashed\n", err );
    e884438a:	689c                	ld	a5,16(s1)
    e884438c:	04600713          	li	a4,70
    e8844390:	7ba8                	ld	a0,112(a5)
    e8844392:	411c                	lw	a5,0(a0)
    e8844394:	02f74463          	blt	a4,a5,e88443bc <_AsyncConnection_EventHandler+0x4c>
    e8844398:	577d                	li	a4,-1
    e884439a:	02e78663          	beq	a5,a4,e88443c6 <_AsyncConnection_EventHandler+0x56>
    e884439e:	689c                	ld	a5,16(s1)
    e88443a0:	8722                	mv	a4,s0
    e88443a2:	00079697          	auipc	a3,0x79
    e88443a6:	78e68693          	addi	a3,a3,1934 # e88bdb30 <kSRPHashDescriptor_SHA512+0x120>
    e88443aa:	7ba8                	ld	a0,112(a5)
    e88443ac:	04600613          	li	a2,70
    e88443b0:	0007a597          	auipc	a1,0x7a
    e88443b4:	9f858593          	addi	a1,a1,-1544 # e88bdda8 <__PRETTY_FUNCTION__.10567>
    e88443b8:	0bc100ef          	jal	ra,e8854474 <LogPrintF>
			_AsyncConnection_ErrorHandler( operation, err );
    e88443bc:	85a2                	mv	a1,s0
    e88443be:	8526                	mv	a0,s1
    e88443c0:	e33ff0ef          	jal	ra,e88441f2 <_AsyncConnection_ErrorHandler>
}
    e88443c4:	a041                	j	e8844444 <_AsyncConnection_EventHandler+0xd4>
			ac_ulog( operation->connection, kLogLevelAssert, "DNSServiceProcessResult failed: %#m...Bonjour crashed\n", err );
    e88443c6:	04600593          	li	a1,70
    e88443ca:	4a90f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88443ce:	d57d                	beqz	a0,e88443bc <_AsyncConnection_EventHandler+0x4c>
    e88443d0:	b7f9                	j	e884439e <_AsyncConnection_EventHandler+0x2e>
		err = connect( operation->nativeSock, &operation->addr.sa, SockAddrGetSize( &operation->addr ) );
    e88443d2:	01848913          	addi	s2,s1,24
    e88443d6:	5cc0                	lw	s0,60(s1)
    e88443d8:	854a                	mv	a0,s2
    e88443da:	1f6120ef          	jal	ra,e88565d0 <SockAddrGetSize>
    e88443de:	0005061b          	sext.w	a2,a0
    e88443e2:	85ca                	mv	a1,s2
    e88443e4:	8522                	mv	a0,s0
    e88443e6:	73f400ef          	jal	ra,e8885324 <lwip_connect>
		err = map_socket_noerr_errno( operation->nativeSock, err );
    e88443ea:	c931                	beqz	a0,e884443e <_AsyncConnection_EventHandler+0xce>
    e88443ec:	000a0997          	auipc	s3,0xa0
    e88443f0:	23c98993          	addi	s3,s3,572 # e88e4628 <lwip_errno>
    e88443f4:	0009a403          	lw	s0,0(s3)
    e88443f8:	ec1d                	bnez	s0,e8844436 <_AsyncConnection_EventHandler+0xc6>
    e88443fa:	7479                	lui	s0,0xffffe
    e88443fc:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
			ac_ulog( operation->connection, kLogLevelInfo, "### Connect 2 to %##a failed: %#m\n", &operation->addr, err );
    e8844400:	689c                	ld	a5,16(s1)
    e8844402:	02800713          	li	a4,40
    e8844406:	7ba8                	ld	a0,112(a5)
    e8844408:	411c                	lw	a5,0(a0)
    e884440a:	faf749e3          	blt	a4,a5,e88443bc <_AsyncConnection_EventHandler+0x4c>
    e884440e:	577d                	li	a4,-1
    e8844410:	06e78963          	beq	a5,a4,e8844482 <_AsyncConnection_EventHandler+0x112>
    e8844414:	6888                	ld	a0,16(s1)
    e8844416:	87a2                	mv	a5,s0
    e8844418:	874a                	mv	a4,s2
    e884441a:	7928                	ld	a0,112(a0)
    e884441c:	00079697          	auipc	a3,0x79
    e8844420:	74c68693          	addi	a3,a3,1868 # e88bdb68 <kSRPHashDescriptor_SHA512+0x158>
    e8844424:	02800613          	li	a2,40
    e8844428:	0007a597          	auipc	a1,0x7a
    e884442c:	98058593          	addi	a1,a1,-1664 # e88bdda8 <__PRETTY_FUNCTION__.10567>
    e8844430:	044100ef          	jal	ra,e8854474 <LogPrintF>
    e8844434:	b761                	j	e88443bc <_AsyncConnection_EventHandler+0x4c>
		if( ( err == 0 ) || ( err == EISCONN ) )
    e8844436:	07f00793          	li	a5,127
    e884443a:	00f41c63          	bne	s0,a5,e8844452 <_AsyncConnection_EventHandler+0xe2>
			_AsyncConnection_ConnectHandler( operation );
    e884443e:	8526                	mv	a0,s1
    e8844440:	df7ff0ef          	jal	ra,e8844236 <_AsyncConnection_ConnectHandler>
}
    e8844444:	70e2                	ld	ra,56(sp)
    e8844446:	6462                	ld	s0,24(sp)
    e8844448:	7482                	ld	s1,32(sp)
    e884444a:	7922                	ld	s2,40(sp)
    e884444c:	79c2                	ld	s3,48(sp)
    e884444e:	6121                	addi	sp,sp,64
    e8844450:	8082                	ret
			if( err == EINVAL )
    e8844452:	47d9                	li	a5,22
    e8844454:	faf416e3          	bne	s0,a5,e8844400 <_AsyncConnection_EventHandler+0x90>
				err = getsockopt( operation->nativeSock, SOL_SOCKET, SO_ERROR, (char *) &tmp, &len );
    e8844458:	5cc8                	lw	a0,60(s1)
    e884445a:	6585                	lui	a1,0x1
				len = (socklen_t) sizeof( tmp );
    e884445c:	4791                	li	a5,4
				err = getsockopt( operation->nativeSock, SOL_SOCKET, SO_ERROR, (char *) &tmp, &len );
    e884445e:	00758613          	addi	a2,a1,7 # 1007 <memcmp-0xe87feff9>
    e8844462:	0078                	addi	a4,sp,12
    e8844464:	0034                	addi	a3,sp,8
    e8844466:	15fd                	addi	a1,a1,-1
				tmp = 0;
    e8844468:	c402                	sw	zero,8(sp)
				len = (socklen_t) sizeof( tmp );
    e884446a:	c63e                	sw	a5,12(sp)
				err = getsockopt( operation->nativeSock, SOL_SOCKET, SO_ERROR, (char *) &tmp, &len );
    e884446c:	451410ef          	jal	ra,e88860bc <lwip_getsockopt>
				err = map_socket_noerr_errno( operation->nativeSock, err );
    e8844470:	c509                	beqz	a0,e884447a <_AsyncConnection_EventHandler+0x10a>
    e8844472:	0009a403          	lw	s0,0(s3)
    e8844476:	f449                	bnez	s0,e8844400 <_AsyncConnection_EventHandler+0x90>
    e8844478:	b749                	j	e88443fa <_AsyncConnection_EventHandler+0x8a>
				if( !err ) err = tmp;
    e884447a:	47a2                	lw	a5,8(sp)
				if( !err ) err = EINVAL;
    e884447c:	42f7940b          	mvnez	s0,a5,a5
    e8844480:	b741                	j	e8844400 <_AsyncConnection_EventHandler+0x90>
			ac_ulog( operation->connection, kLogLevelInfo, "### Connect 2 to %##a failed: %#m\n", &operation->addr, err );
    e8844482:	02800593          	li	a1,40
    e8844486:	3ed0f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884448a:	d90d                	beqz	a0,e88443bc <_AsyncConnection_EventHandler+0x4c>
    e884448c:	b761                	j	e8844414 <_AsyncConnection_EventHandler+0xa4>

00000000e884448e <ParseDestination.constprop.4>:
//===========================================================================================================================
//	ParseDestination
//===========================================================================================================================

static OSStatus
	ParseDestination( 
    e884448e:	7159                	addi	sp,sp,-112
    e8844490:	e0d2                	sd	s4,64(sp)
    e8844492:	8a2e                	mv	s4,a1
	int					n;
	size_t				len;
	
	hasPort = 0;
	port = 0;
	ptr = strchr( inDestination, '%' );
    e8844494:	02500593          	li	a1,37
	ParseDestination( 
    e8844498:	e4ce                	sd	s3,72(sp)
    e884449a:	fc56                	sd	s5,56(sp)
    e884449c:	f85a                	sd	s6,48(sp)
    e884449e:	f486                	sd	ra,104(sp)
    e88444a0:	f0a2                	sd	s0,96(sp)
    e88444a2:	eca6                	sd	s1,88(sp)
    e88444a4:	e8ca                	sd	s2,80(sp)
    e88444a6:	f45e                	sd	s7,40(sp)
    e88444a8:	f062                	sd	s8,32(sp)
    e88444aa:	ec66                	sd	s9,24(sp)
    e88444ac:	89aa                	mv	s3,a0
    e88444ae:	8b32                	mv	s6,a2
    e88444b0:	8ab6                	mv	s5,a3
	ptr = strchr( inDestination, '%' );
    e88444b2:	6bb370ef          	jal	ra,e887c36c <eLIBs_strchr>
	if( ptr )
    e88444b6:	c54d                	beqz	a0,e8844560 <ParseDestination.constprop.4+0xd2>
	{
		ptr2 = ptr + 1;
    e88444b8:	00150c93          	addi	s9,a0,1
    e88444bc:	842a                	mv	s0,a0
		end = strchr( ptr2, ':' );
    e88444be:	03a00593          	li	a1,58
    e88444c2:	8566                	mv	a0,s9
    e88444c4:	6a9370ef          	jal	ra,e887c36c <eLIBs_strchr>
    e88444c8:	892a                	mv	s2,a0
		if( end )
    e88444ca:	c149                	beqz	a0,e884454c <ParseDestination.constprop.4+0xbe>
		{
			//n = sscanf( end + 1, "%d", &port );
			port = atoi(end+1);
    e88444cc:	0505                	addi	a0,a0,1
    e88444ce:	619370ef          	jal	ra,e887c2e6 <eLIBs_atoi>
    e88444d2:	8baa                	mv	s7,a0
			n = 1;
			require_action( n == 1, exit, err = kMalformedErr );
			hasPort = 1;
    e88444d4:	4485                	li	s1,1
		}
		else
		{
			end = ptr2 + strlen( ptr );
		}
		len = (size_t)( end - ptr2 );
    e88444d6:	41990933          	sub	s2,s2,s9
		require_action( len < sizeof( ifname ), exit, err = kMalformedErr );
    e88444da:	4799                	li	a5,6
    e88444dc:	0b27ea63          	bltu	a5,s2,e8844590 <ParseDestination.constprop.4+0x102>
		memcpy( ifname, ptr2, len );
    e88444e0:	00810c13          	addi	s8,sp,8
    e88444e4:	864a                	mv	a2,s2
    e88444e6:	85e6                	mv	a1,s9
    e88444e8:	8562                	mv	a0,s8
    e88444ea:	6b7370ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		ifname[ len ] = '\0';
    e88444ee:	012c500b          	srb	zero,s8,s2,0
		
		ifindex = if_nametoindex( ifname );
    e88444f2:	8562                	mv	a0,s8
    e88444f4:	1a73f0ef          	jal	ra,e8883e9a <lwip_if_nametoindex>
    e88444f8:	0005091b          	sext.w	s2,a0
		if( ifindex == 0 )
    e88444fc:	00091763          	bnez	s2,e884450a <ParseDestination.constprop.4+0x7c>
		{
			//n = sscanf( ifname, "%u", &ifindex );
			ifindex = atoi(ifname);
    e8844500:	8562                	mv	a0,s8
    e8844502:	5e5370ef          	jal	ra,e887c2e6 <eLIBs_atoi>
    e8844506:	0005091b          	sext.w	s2,a0
			n = 1;
			require_action( n == 1, exit, err = kMalformedErr );
		}
		len = (size_t)( ptr - inDestination );
    e884450a:	41340433          	sub	s0,s0,s3
		{
			len = strlen( inDestination );
		}
		ifindex = 0;
	}
	require_action( len < inNameMaxLen, exit, err = kSizeErr );
    e884450e:	3f000793          	li	a5,1008
    e8844512:	0887e363          	bltu	a5,s0,e8844598 <ParseDestination.constprop.4+0x10a>
	memcpy( inNameBuf, inDestination, len );
    e8844516:	8622                	mv	a2,s0
    e8844518:	85ce                	mv	a1,s3
    e884451a:	8552                	mv	a0,s4
    e884451c:	685370ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	inNameBuf[ len ] = '\0';
    e8844520:	008a500b          	srb	zero,s4,s0,0
	
	*outIndex = ifindex;
    e8844524:	012b2023          	sw	s2,0(s6)
	if( hasPort ) *outPort = port;
    e8844528:	c481                	beqz	s1,e8844530 <ParseDestination.constprop.4+0xa2>
    e884452a:	017aa023          	sw	s7,0(s5)
	err = kNoErr;
    e884452e:	4481                	li	s1,0
	
exit:
	return( err );
}
    e8844530:	70a6                	ld	ra,104(sp)
    e8844532:	7406                	ld	s0,96(sp)
    e8844534:	8526                	mv	a0,s1
    e8844536:	6946                	ld	s2,80(sp)
    e8844538:	64e6                	ld	s1,88(sp)
    e884453a:	69a6                	ld	s3,72(sp)
    e884453c:	6a06                	ld	s4,64(sp)
    e884453e:	7ae2                	ld	s5,56(sp)
    e8844540:	7b42                	ld	s6,48(sp)
    e8844542:	7ba2                	ld	s7,40(sp)
    e8844544:	7c02                	ld	s8,32(sp)
    e8844546:	6ce2                	ld	s9,24(sp)
    e8844548:	6165                	addi	sp,sp,112
    e884454a:	8082                	ret
			end = ptr2 + strlen( ptr );
    e884454c:	8522                	mv	a0,s0
    e884454e:	5cb370ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8844552:	7c05350b          	extu	a0,a0,31,0
    e8844556:	00ac8933          	add	s2,s9,a0
	port = 0;
    e884455a:	4b81                	li	s7,0
	hasPort = 0;
    e884455c:	4481                	li	s1,0
    e884455e:	bfa5                	j	e88444d6 <ParseDestination.constprop.4+0x48>
		ptr = strchr( inDestination, ':' );
    e8844560:	03a00593          	li	a1,58
    e8844564:	854e                	mv	a0,s3
    e8844566:	607370ef          	jal	ra,e887c36c <eLIBs_strchr>
    e884456a:	842a                	mv	s0,a0
		if( ptr )
    e884456c:	c911                	beqz	a0,e8844580 <ParseDestination.constprop.4+0xf2>
			port = atoi(ptr+1);
    e884456e:	0505                	addi	a0,a0,1
    e8844570:	577370ef          	jal	ra,e887c2e6 <eLIBs_atoi>
    e8844574:	8baa                	mv	s7,a0
			len = (size_t)( ptr - inDestination );
    e8844576:	41340433          	sub	s0,s0,s3
			hasPort = 1;
    e884457a:	4485                	li	s1,1
		ifindex = 0;
    e884457c:	4901                	li	s2,0
    e884457e:	bf41                	j	e884450e <ParseDestination.constprop.4+0x80>
			len = strlen( inDestination );
    e8844580:	854e                	mv	a0,s3
    e8844582:	597370ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8844586:	7c05340b          	extu	s0,a0,31,0
	port = 0;
    e884458a:	4b81                	li	s7,0
	hasPort = 0;
    e884458c:	4481                	li	s1,0
    e884458e:	b7fd                	j	e884457c <ParseDestination.constprop.4+0xee>
		require_action( len < sizeof( ifname ), exit, err = kMalformedErr );
    e8844590:	74f9                	lui	s1,0xffffe
    e8844592:	5aa48493          	addi	s1,s1,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e8844596:	bf69                	j	e8844530 <ParseDestination.constprop.4+0xa2>
	require_action( len < inNameMaxLen, exit, err = kSizeErr );
    e8844598:	74f9                	lui	s1,0xffffe
    e884459a:	5a948493          	addi	s1,s1,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e884459e:	bf49                	j	e8844530 <ParseDestination.constprop.4+0xa2>

00000000e88445a0 <calloc.constprop.5>:
static inline void *calloc(size_t nitems, size_t size)
    e88445a0:	1101                	addi	sp,sp,-32
    e88445a2:	ec06                	sd	ra,24(sp)
    e88445a4:	e822                	sd	s0,16(sp)
    e88445a6:	e42a                	sd	a0,8(sp)
    p = malloc(len);
    e88445a8:	2a6370ef          	jal	ra,e887b84e <my_malloc>
    e88445ac:	842a                	mv	s0,a0
    memset(p,0,len);
    e88445ae:	6622                	ld	a2,8(sp)
    e88445b0:	4581                	li	a1,0
    e88445b2:	5e3370ef          	jal	ra,e887c394 <eLIBs_memset>
    return p;
}
    e88445b6:	8522                	mv	a0,s0
    e88445b8:	60e2                	ld	ra,24(sp)
    e88445ba:	6442                	ld	s0,16(sp)
    e88445bc:	6105                	addi	sp,sp,32
    e88445be:	8082                	ret

00000000e88445c0 <_AsyncConnection_StartDNSResolve>:
{
    e88445c0:	bd010113          	addi	sp,sp,-1072
    e88445c4:	40913c23          	sd	s1,1048(sp)
    e88445c8:	84aa                	mv	s1,a0
	obj = (AsyncConnectionOperationRef) calloc( 1, sizeof( *obj ) );
    e88445ca:	0a000513          	li	a0,160
{
    e88445ce:	41213823          	sd	s2,1040(sp)
    e88445d2:	41313423          	sd	s3,1032(sp)
    e88445d6:	41413023          	sd	s4,1024(sp)
    e88445da:	42113423          	sd	ra,1064(sp)
    e88445de:	42813023          	sd	s0,1056(sp)
    e88445e2:	892e                	mv	s2,a1
    e88445e4:	89b2                	mv	s3,a2
    e88445e6:	8a36                	mv	s4,a3
	obj = (AsyncConnectionOperationRef) calloc( 1, sizeof( *obj ) );
    e88445e8:	fb9ff0ef          	jal	ra,e88445a0 <calloc.constprop.5>
	require_action( obj, exit, err = kNoMemoryErr );
    e88445ec:	10050f63          	beqz	a0,e884470a <_AsyncConnection_StartDNSResolve+0x14a>
	++inConnection->refCount;
    e88445f0:	409c                	lw	a5,0(s1)
    e88445f2:	842a                	mv	s0,a0
    e88445f4:	2785                	addiw	a5,a5,1
    e88445f6:	c09c                	sw	a5,0(s1)
	obj->refCount				= 1;
    e88445f8:	4785                	li	a5,1
    e88445fa:	c11c                	sw	a5,0(a0)
	obj->nativeSock				= kInvalidSocketRef;
    e88445fc:	57fd                	li	a5,-1
	obj->connection				= inConnection;
    e88445fe:	e904                	sd	s1,16(a0)
	obj->nativeSock				= kInvalidSocketRef;
    e8844600:	dd5c                	sw	a5,60(a0)
	obj->dnsResolveStartTime	= CFAbsoluteTimeGetCurrent();
    e8844602:	475060ef          	jal	ra,e884b276 <CFAbsoluteTimeGetCurrent>
    e8844606:	a048                	fsd	fa0,128(s0)
	if( inParentOp )
    e8844608:	00090863          	beqz	s2,e8844618 <_AsyncConnection_StartDNSResolve+0x58>
		obj->reachabilitySecs	= inParentOp->reachabilitySecs;
    e884460c:	06893787          	fld	fa5,104(s2)
    e8844610:	b43c                	fsd	fa5,104(s0)
		obj->srvSecs			= inParentOp->srvSecs;
    e8844612:	07893787          	fld	fa5,120(s2)
    e8844616:	bc3c                	fsd	fa5,120(s0)
	err = ParseDestination( inDestination, host, sizeof( host ), &ifindex, &port );
    e8844618:	0054                	addi	a3,sp,4
    e884461a:	860a                	mv	a2,sp
    e884461c:	002c                	addi	a1,sp,8
    e884461e:	854e                	mv	a0,s3
	port = 0;
    e8844620:	c202                	sw	zero,4(sp)
	err = ParseDestination( inDestination, host, sizeof( host ), &ifindex, &port );
    e8844622:	e6dff0ef          	jal	ra,e884448e <ParseDestination.constprop.4>
    e8844626:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e8844628:	0e051863          	bnez	a0,e8844718 <_AsyncConnection_StartDNSResolve+0x158>
	obj->defaultPort = ( ( port == 0 ) || ( inDefaultPort < 0 ) ) ? inDefaultPort : port;
    e884462c:	4792                	lw	a5,4(sp)
    e884462e:	c781                	beqz	a5,e8844636 <_AsyncConnection_StartDNSResolve+0x76>
    e8844630:	000a4363          	bltz	s4,e8844636 <_AsyncConnection_StartDNSResolve+0x76>
    e8844634:	8a3e                	mv	s4,a5
    e8844636:	03442c23          	sw	s4,56(s0)
	ac_ulog( inConnection, kLogLevelVerbose, "Resolving     %s\n", inDestination );
    e884463a:	78a8                	ld	a0,112(s1)
    e884463c:	4751                	li	a4,20
    e884463e:	411c                	lw	a5,0(a0)
    e8844640:	02f74263          	blt	a4,a5,e8844664 <_AsyncConnection_StartDNSResolve+0xa4>
    e8844644:	577d                	li	a4,-1
    e8844646:	0ae78d63          	beq	a5,a4,e8844700 <_AsyncConnection_StartDNSResolve+0x140>
    e884464a:	78a8                	ld	a0,112(s1)
    e884464c:	874e                	mv	a4,s3
    e884464e:	00079697          	auipc	a3,0x79
    e8844652:	61268693          	addi	a3,a3,1554 # e88bdc60 <kSRPHashDescriptor_SHA512+0x250>
    e8844656:	4651                	li	a2,20
    e8844658:	00079597          	auipc	a1,0x79
    e884465c:	69858593          	addi	a1,a1,1688 # e88bdcf0 <__PRETTY_FUNCTION__.10490>
    e8844660:	6150f0ef          	jal	ra,e8854474 <LogPrintF>
	AsyncConnectionProgress( inConnection, kAsyncConnectionPhase_ResolvingDNS, inDestination );
    e8844664:	64bc                	ld	a5,72(s1)
    e8844666:	c789                	beqz	a5,e8844670 <_AsyncConnection_StartDNSResolve+0xb0>
    e8844668:	68b0                	ld	a2,80(s1)
    e884466a:	85ce                	mv	a1,s3
    e884466c:	4509                	li	a0,2
    e884466e:	9782                	jalr	a5
	if( inConnection->flags & kAsyncConnectionFlag_SuppressUnusable ) flags |= kDNSServiceFlagsSuppressUnusable_compat;
    e8844670:	48cc                	lw	a1,20(s1)
    e8844672:	8989                	andi	a1,a1,2
    e8844674:	2581                	sext.w	a1,a1
    e8844676:	c191                	beqz	a1,e884467a <_AsyncConnection_StartDNSResolve+0xba>
    e8844678:	65a1                	lui	a1,0x8
	err = DNSServiceGetAddrInfo( &obj->service, flags, ifindex, 0, host, _AsyncConnection_DNSCallBack, obj );
    e884467a:	4602                	lw	a2,0(sp)
    e884467c:	8822                	mv	a6,s0
    e884467e:	00001797          	auipc	a5,0x1
    e8844682:	82c78793          	addi	a5,a5,-2004 # e8844eaa <_AsyncConnection_DNSCallBack>
    e8844686:	0038                	addi	a4,sp,8
    e8844688:	4681                	li	a3,0
    e884468a:	04040513          	addi	a0,s0,64
    e884468e:	f17d60ef          	jal	ra,e881b5a4 <DNSServiceGetAddrInfo>
    e8844692:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e8844694:	e151                	bnez	a0,e8844718 <_AsyncConnection_StartDNSResolve+0x158>
	obj->readSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_READ, DNSServiceRefSockFD( obj->service ), 0, 
    e8844696:	6028                	ld	a0,64(s0)
    e8844698:	e40d60ef          	jal	ra,e881acd8 <DNSServiceRefSockFD>
    e884469c:	85aa                	mv	a1,a0
    e884469e:	6cb4                	ld	a3,88(s1)
    e88446a0:	4601                	li	a2,0
    e88446a2:	4501                	li	a0,0
    e88446a4:	70a0a0ef          	jal	ra,e884edae <dispatch_source_create>
    e88446a8:	e828                	sd	a0,80(s0)
	require_action( obj->readSource, exit, err = kUnknownErr );
    e88446aa:	c525                	beqz	a0,e8844712 <_AsyncConnection_StartDNSResolve+0x152>
	dispatch_set_context( obj->readSource, obj );
    e88446ac:	85a2                	mv	a1,s0
    e88446ae:	56e0a0ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( obj->readSource, _AsyncConnection_EventHandler );
    e88446b2:	6828                	ld	a0,80(s0)
    e88446b4:	00000597          	auipc	a1,0x0
    e88446b8:	cbc58593          	addi	a1,a1,-836 # e8844370 <_AsyncConnection_EventHandler>
    e88446bc:	7ae0a0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( obj->readSource, _AsyncConnection_CancelHandler );
    e88446c0:	6828                	ld	a0,80(s0)
    e88446c2:	00000597          	auipc	a1,0x0
    e88446c6:	a9658593          	addi	a1,a1,-1386 # e8844158 <_AsyncConnection_CancelHandler>
    e88446ca:	7a40a0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	dispatch_resume( obj->readSource );
    e88446ce:	6828                	ld	a0,80(s0)
    e88446d0:	4260b0ef          	jal	ra,e884faf6 <dispatch_resume>
	++obj->refCount;
    e88446d4:	401c                	lw	a5,0(s0)
    e88446d6:	2785                	addiw	a5,a5,1
    e88446d8:	c01c                	sw	a5,0(s0)
	obj->next = inConnection->operationList;
    e88446da:	60bc                	ld	a5,64(s1)
    e88446dc:	e41c                	sd	a5,8(s0)
	inConnection->operationList = obj;
    e88446de:	e0a0                	sd	s0,64(s1)
}
    e88446e0:	42813083          	ld	ra,1064(sp)
    e88446e4:	42013403          	ld	s0,1056(sp)
    e88446e8:	854a                	mv	a0,s2
    e88446ea:	41813483          	ld	s1,1048(sp)
    e88446ee:	41013903          	ld	s2,1040(sp)
    e88446f2:	40813983          	ld	s3,1032(sp)
    e88446f6:	40013a03          	ld	s4,1024(sp)
    e88446fa:	43010113          	addi	sp,sp,1072
    e88446fe:	8082                	ret
	ac_ulog( inConnection, kLogLevelVerbose, "Resolving     %s\n", inDestination );
    e8844700:	45d1                	li	a1,20
    e8844702:	1710f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8844706:	dd39                	beqz	a0,e8844664 <_AsyncConnection_StartDNSResolve+0xa4>
    e8844708:	b789                	j	e884464a <_AsyncConnection_StartDNSResolve+0x8a>
	require_action( obj, exit, err = kNoMemoryErr );
    e884470a:	7979                	lui	s2,0xffffe
    e884470c:	5b890913          	addi	s2,s2,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8844710:	bfc1                	j	e88446e0 <_AsyncConnection_StartDNSResolve+0x120>
	require_action( obj->readSource, exit, err = kUnknownErr );
    e8844712:	7979                	lui	s2,0xffffe
    e8844714:	5d490913          	addi	s2,s2,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( obj ) _AsyncConnection_ReleaseOperation( obj );
    e8844718:	8522                	mv	a0,s0
    e884471a:	9c3ff0ef          	jal	ra,e88440dc <_AsyncConnection_ReleaseOperation>
	return( err );
    e884471e:	b7c9                	j	e88446e0 <_AsyncConnection_StartDNSResolve+0x120>

00000000e8844720 <_AsyncConnection_SRVCallBack>:
{
    e8844720:	b6010113          	addi	sp,sp,-1184
    e8844724:	47413823          	sd	s4,1136(sp)
    e8844728:	48113c23          	sd	ra,1176(sp)
    e884472c:	48813823          	sd	s0,1168(sp)
    e8844730:	48913423          	sd	s1,1160(sp)
    e8844734:	49213023          	sd	s2,1152(sp)
    e8844738:	47313c23          	sd	s3,1144(sp)
    e884473c:	47513423          	sd	s5,1128(sp)
    e8844740:	47613023          	sd	s6,1120(sp)
    e8844744:	4a013783          	ld	a5,1184(sp)
    e8844748:	4b013a03          	ld	s4,1200(sp)
	require_noerr_action( inErrorCode, exit, err = inErrorCode );
    e884474c:	12069263          	bnez	a3,e8844870 <_AsyncConnection_SRVCallBack+0x150>
	require_action_quiet( inFlags & kDNSServiceFlagsAdd, exit, err = kNoErr );
    e8844750:	0025f693          	andi	a3,a1,2
    e8844754:	84ae                	mv	s1,a1
    e8844756:	12068163          	beqz	a3,e8844878 <_AsyncConnection_SRVCallBack+0x158>
	require_action( inRDataSize > 6, exit, err = kMalformedErr );
    e884475a:	4699                	li	a3,6
    e884475c:	1916fe63          	bgeu	a3,a7,e88448f8 <_AsyncConnection_SRVCallBack+0x1d8>
    e8844760:	0047d683          	lhu	a3,4(a5)
	const uint8_t *src			= name->c;							// Domain name we're reading
    e8844764:	00678893          	addi	a7,a5,6
	const uint8_t *const max	= name->c + MAX_DOMAIN_NAME;		// Maximum that's valid
    e8844768:	10578e93          	addi	t4,a5,261
    e884476c:	0086991b          	slliw	s2,a3,0x8
    e8844770:	5c86b68b          	extu	a3,a3,23,8
    e8844774:	00d966b3          	or	a3,s2,a3
    e8844778:	3c06b90b          	extu	s2,a3,15,0
	if (*src == 0) *ptr++ = '.';									// Special case: For root, just write a dot
    e884477c:	0067c683          	lbu	a3,6(a5)
    e8844780:	8432                	mv	s0,a2
	port = ( ptr[ 4 ] << 8 ) | ptr[ 5 ];
    e8844782:	0009099b          	sext.w	s3,s2
	if (*src == 0) *ptr++ = '.';									// Special case: For root, just write a dot
    e8844786:	103c                	addi	a5,sp,40
    e8844788:	e699                	bnez	a3,e8844796 <_AsyncConnection_SRVCallBack+0x76>
    e884478a:	02e00793          	li	a5,46
    e884478e:	02f10423          	sb	a5,40(sp)
    e8844792:	02910793          	addi	a5,sp,41
				*ptr++	= esc;
    e8844796:	630d                	lui	t1,0x3
	if (len > MAX_DOMAIN_LABEL) return(NULL);					// If illegal label, abort
    e8844798:	03f00f13          	li	t5,63
			if (c == '.' || c == esc)							// If character is a dot or the escape character
    e884479c:	02e00f93          	li	t6,46
				*ptr++ = esc;									// Output escape character
    e88447a0:	05c00293          	li	t0,92
			if (c == '.' || c == esc)							// If character is a dot or the escape character
    e88447a4:	05c00393          	li	t2,92
			else if (c <= ' ')									// If non-printing ascii,
    e88447a8:	02000093          	li	ra,32
				*ptr++	= esc;
    e88447ac:	05c3031b          	addiw	t1,t1,92
				*ptr++	= (char)   ('0' + (c /  10) % 10);
    e88447b0:	4e29                	li	t3,10
		*ptr++ = '.';												// Write the dot after the label
    e88447b2:	02e00a93          	li	s5,46
	while (*src)													// While more characters in the domain name
    e88447b6:	0008c803          	lbu	a6,0(a7) # fffffffffffff000 <__DRAM0_INF_BASE+0xffffffff0000f000>
    e88447ba:	00081563          	bnez	a6,e88447c4 <_AsyncConnection_SRVCallBack+0xa4>
	*ptr++ = 0;														// Null-terminate the string
    e88447be:	00078023          	sb	zero,0(a5)
	return(ptr);													// and return
    e88447c2:	a821                	j	e88447da <_AsyncConnection_SRVCallBack+0xba>
		if (src + 1 + *src >= max) return(NULL);
    e88447c4:	00180693          	addi	a3,a6,1 # fffffffffffff001 <__DRAM0_INF_BASE+0xffffffff0000f001>
    e88447c8:	96c6                	add	a3,a3,a7
    e88447ca:	01d6f863          	bgeu	a3,t4,e88447da <_AsyncConnection_SRVCallBack+0xba>
	const uint8_t			len = *src++;						// Read length of this (non-null) label
    e88447ce:	00188613          	addi	a2,a7,1
	const uint8_t *const	end = src + len;					// Work out where the label ends
    e88447d2:	01060b33          	add	s6,a2,a6
	if (len > MAX_DOMAIN_LABEL) return(NULL);					// If illegal label, abort
    e88447d6:	0d0f7e63          	bgeu	t5,a6,e88448b2 <_AsyncConnection_SRVCallBack+0x192>
    e88447da:	ec3a                	sd	a4,24(sp)
	operation->srvSecs = CFAbsoluteTimeGetCurrent() - operation->srvStartTime;
    e88447dc:	29b060ef          	jal	ra,e884b276 <CFAbsoluteTimeGetCurrent>
    e88447e0:	070a3787          	fld	fa5,112(s4)
	ac_ulog( operation->connection, kLogLevelVerbose, "SRV resolved  %s -> %s port %d, If %u, Flags 0x%X, TTL %u\n", 
    e88447e4:	010a3783          	ld	a5,16(s4)
    e88447e8:	46d1                	li	a3,20
	operation->srvSecs = CFAbsoluteTimeGetCurrent() - operation->srvStartTime;
    e88447ea:	0af57553          	fsub.d	fa0,fa0,fa5
	ac_ulog( operation->connection, kLogLevelVerbose, "SRV resolved  %s -> %s port %d, If %u, Flags 0x%X, TTL %u\n", 
    e88447ee:	6762                	ld	a4,24(sp)
	operation->srvSecs = CFAbsoluteTimeGetCurrent() - operation->srvStartTime;
    e88447f0:	06aa3c27          	fsd	fa0,120(s4)
	ac_ulog( operation->connection, kLogLevelVerbose, "SRV resolved  %s -> %s port %d, If %u, Flags 0x%X, TTL %u\n", 
    e88447f4:	7ba8                	ld	a0,112(a5)
    e88447f6:	411c                	lw	a5,0(a0)
    e88447f8:	02f6ca63          	blt	a3,a5,e884482c <_AsyncConnection_SRVCallBack+0x10c>
    e88447fc:	56fd                	li	a3,-1
    e88447fe:	0ed78663          	beq	a5,a3,e88448ea <_AsyncConnection_SRVCallBack+0x1ca>
    e8844802:	010a3783          	ld	a5,16(s4)
    e8844806:	88a2                	mv	a7,s0
    e8844808:	884e                	mv	a6,s3
    e884480a:	7ba8                	ld	a0,112(a5)
    e884480c:	4a812783          	lw	a5,1192(sp)
    e8844810:	e026                	sd	s1,0(sp)
    e8844812:	00079697          	auipc	a3,0x79
    e8844816:	37e68693          	addi	a3,a3,894 # e88bdb90 <kSRPHashDescriptor_SHA512+0x180>
    e884481a:	e43e                	sd	a5,8(sp)
    e884481c:	4651                	li	a2,20
    e884481e:	103c                	addi	a5,sp,40
    e8844820:	00079597          	auipc	a1,0x79
    e8844824:	4b058593          	addi	a1,a1,1200 # e88bdcd0 <__PRETTY_FUNCTION__.10474>
    e8844828:	44d0f0ef          	jal	ra,e8854474 <LogPrintF>
	len = strlen( host );
    e884482c:	1028                	addi	a0,sp,40
    e884482e:	2eb370ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8844832:	7c05350b          	extu	a0,a0,31,0
	snprintf( &host[ len ], sizeof( host ) - len, "%%%u", inIfIndex );
    e8844836:	43100593          	li	a1,1073
    e884483a:	103c                	addi	a5,sp,40
    e884483c:	8d89                	sub	a1,a1,a0
    e884483e:	86a2                	mv	a3,s0
    e8844840:	00079617          	auipc	a2,0x79
    e8844844:	39060613          	addi	a2,a2,912 # e88bdbd0 <kSRPHashDescriptor_SHA512+0x1c0>
    e8844848:	953e                	add	a0,a0,a5
    e884484a:	207370ef          	jal	ra,e887c250 <eLIBs_snprintf>
	if( ( port == 0 ) || ( operation->defaultPort < 0 ) ) port = operation->defaultPort;
    e884484e:	00090663          	beqz	s2,e884485a <_AsyncConnection_SRVCallBack+0x13a>
    e8844852:	038a2783          	lw	a5,56(s4)
    e8844856:	0007d463          	bgez	a5,e884485e <_AsyncConnection_SRVCallBack+0x13e>
    e884485a:	038a2983          	lw	s3,56(s4)
	err = _AsyncConnection_StartDNSResolve( operation->connection, operation, host, port );
    e884485e:	010a3503          	ld	a0,16(s4)
    e8844862:	86ce                	mv	a3,s3
    e8844864:	1030                	addi	a2,sp,40
    e8844866:	85d2                	mv	a1,s4
    e8844868:	d59ff0ef          	jal	ra,e88445c0 <_AsyncConnection_StartDNSResolve>
    e884486c:	86aa                	mv	a3,a0
	if( err ) _AsyncConnection_ErrorHandler( operation, err );
    e884486e:	c509                	beqz	a0,e8844878 <_AsyncConnection_SRVCallBack+0x158>
    e8844870:	85b6                	mv	a1,a3
    e8844872:	8552                	mv	a0,s4
    e8844874:	97fff0ef          	jal	ra,e88441f2 <_AsyncConnection_ErrorHandler>
}
    e8844878:	49813083          	ld	ra,1176(sp)
    e884487c:	49013403          	ld	s0,1168(sp)
    e8844880:	48813483          	ld	s1,1160(sp)
    e8844884:	48013903          	ld	s2,1152(sp)
    e8844888:	47813983          	ld	s3,1144(sp)
    e884488c:	47013a03          	ld	s4,1136(sp)
    e8844890:	46813a83          	ld	s5,1128(sp)
    e8844894:	46013b03          	ld	s6,1120(sp)
    e8844898:	4a010113          	addi	sp,sp,1184
    e884489c:	8082                	ret
		uint8_t c = *src++;
    e884489e:	9816468b          	lbuia	a3,(a2),1,0
			if (c == '.' || c == esc)							// If character is a dot or the escape character
    e88448a2:	01f68463          	beq	a3,t6,e88448aa <_AsyncConnection_SRVCallBack+0x18a>
    e88448a6:	00769c63          	bne	a3,t2,e88448be <_AsyncConnection_SRVCallBack+0x19e>
				*ptr++ = esc;									// Output escape character
    e88448aa:	1817d28b          	sbia	t0,(a5),1,0
		*ptr++ = (char)c;										// Copy the character
    e88448ae:	1817d68b          	sbia	a3,(a5),1,0
	while (src < end)											// While we have characters in the label
    e88448b2:	ff6666e3          	bltu	a2,s6,e884489e <_AsyncConnection_SRVCallBack+0x17e>
		if (!ptr) return(NULL);
    e88448b6:	e78d                	bnez	a5,e88448e0 <_AsyncConnection_SRVCallBack+0x1c0>
	*ptr = 0;													// Null-terminate the string
    e88448b8:	00000023          	sb	zero,0(zero) # 0 <memcmp-0xe8800000>
    e88448bc:	bf39                	j	e88447da <_AsyncConnection_SRVCallBack+0xba>
			else if (c <= ' ')									// If non-printing ascii,
    e88448be:	fed0e8e3          	bltu	ra,a3,e88448ae <_AsyncConnection_SRVCallBack+0x18e>
				*ptr++	= (char)   ('0' + (c /  10) % 10);
    e88448c2:	03c6d53b          	divuw	a0,a3,t3
				*ptr++	= esc;
    e88448c6:	85be                	mv	a1,a5
    e88448c8:	3835d30b          	shia	t1,(a1),3,0
				c		= (uint8_t)('0' + (c      ) % 10);
    e88448cc:	03c6f6bb          	remuw	a3,a3,t3
				*ptr++	= (char)   ('0' + (c /  10) % 10);
    e88448d0:	0305051b          	addiw	a0,a0,48
    e88448d4:	00a78123          	sb	a0,2(a5)
    e88448d8:	87ae                	mv	a5,a1
				c		= (uint8_t)('0' + (c      ) % 10);
    e88448da:	03068693          	addi	a3,a3,48
    e88448de:	bfc1                	j	e88448ae <_AsyncConnection_SRVCallBack+0x18e>
		src += 1 + *src;
    e88448e0:	0805                	addi	a6,a6,1
    e88448e2:	98c2                	add	a7,a7,a6
		*ptr++ = '.';												// Write the dot after the label
    e88448e4:	1817da8b          	sbia	s5,(a5),1,0
    e88448e8:	b5f9                	j	e88447b6 <_AsyncConnection_SRVCallBack+0x96>
	ac_ulog( operation->connection, kLogLevelVerbose, "SRV resolved  %s -> %s port %d, If %u, Flags 0x%X, TTL %u\n", 
    e88448ea:	45d1                	li	a1,20
    e88448ec:	ec3a                	sd	a4,24(sp)
    e88448ee:	7840f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88448f2:	6762                	ld	a4,24(sp)
    e88448f4:	dd05                	beqz	a0,e884482c <_AsyncConnection_SRVCallBack+0x10c>
    e88448f6:	b731                	j	e8844802 <_AsyncConnection_SRVCallBack+0xe2>
	require_action( inRDataSize > 6, exit, err = kMalformedErr );
    e88448f8:	76f9                	lui	a3,0xffffe
    e88448fa:	5aa68693          	addi	a3,a3,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e88448fe:	bf8d                	j	e8844870 <_AsyncConnection_SRVCallBack+0x150>

00000000e8844900 <_AsyncConnection_StartSRVQuery>:
{
    e8844900:	bd010113          	addi	sp,sp,-1072
    e8844904:	41213823          	sd	s2,1040(sp)
    e8844908:	892a                	mv	s2,a0
	obj = (AsyncConnectionOperationRef) calloc( 1, sizeof( *obj ) );
    e884490a:	0a000513          	li	a0,160
{
    e884490e:	41313423          	sd	s3,1032(sp)
    e8844912:	41413023          	sd	s4,1024(sp)
    e8844916:	42113423          	sd	ra,1064(sp)
    e884491a:	42813023          	sd	s0,1056(sp)
    e884491e:	40913c23          	sd	s1,1048(sp)
    e8844922:	89ae                	mv	s3,a1
    e8844924:	8a32                	mv	s4,a2
	obj = (AsyncConnectionOperationRef) calloc( 1, sizeof( *obj ) );
    e8844926:	c7bff0ef          	jal	ra,e88445a0 <calloc.constprop.5>
	require_action( obj, exit, err = kNoMemoryErr );
    e884492a:	12050063          	beqz	a0,e8844a4a <_AsyncConnection_StartSRVQuery+0x14a>
	++inConnection->refCount;
    e884492e:	00092783          	lw	a5,0(s2)
    e8844932:	842a                	mv	s0,a0
    e8844934:	2785                	addiw	a5,a5,1
    e8844936:	00f92023          	sw	a5,0(s2)
	obj->refCount		= 1;
    e884493a:	4785                	li	a5,1
    e884493c:	c11c                	sw	a5,0(a0)
	obj->nativeSock		= kInvalidSocketRef;
    e884493e:	57fd                	li	a5,-1
    e8844940:	dd5c                	sw	a5,60(a0)
	obj->connection		= inConnection;
    e8844942:	01253823          	sd	s2,16(a0)
	obj->srvStartTime	= CFAbsoluteTimeGetCurrent();
    e8844946:	131060ef          	jal	ra,e884b276 <CFAbsoluteTimeGetCurrent>
    e884494a:	b828                	fsd	fa0,112(s0)
	err = ParseDestination( inDestination, host, sizeof( host ), &ifindex, &port );
    e884494c:	0054                	addi	a3,sp,4
    e884494e:	860a                	mv	a2,sp
    e8844950:	002c                	addi	a1,sp,8
    e8844952:	854e                	mv	a0,s3
	port = 0;
    e8844954:	c202                	sw	zero,4(sp)
	err = ParseDestination( inDestination, host, sizeof( host ), &ifindex, &port );
    e8844956:	b39ff0ef          	jal	ra,e884448e <ParseDestination.constprop.4>
    e884495a:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e884495c:	0e051e63          	bnez	a0,e8844a58 <_AsyncConnection_StartSRVQuery+0x158>
	obj->defaultPort = ( ( port == 0 ) || ( inDefaultPort < 0 ) ) ? inDefaultPort : port;
    e8844960:	4792                	lw	a5,4(sp)
    e8844962:	c781                	beqz	a5,e884496a <_AsyncConnection_StartSRVQuery+0x6a>
    e8844964:	000a4363          	bltz	s4,e884496a <_AsyncConnection_StartSRVQuery+0x6a>
    e8844968:	8a3e                	mv	s4,a5
    e884496a:	03442c23          	sw	s4,56(s0)
	ac_ulog( inConnection, kLogLevelVerbose, "Querying SRV  %s\n", inDestination );
    e884496e:	07093503          	ld	a0,112(s2)
    e8844972:	4751                	li	a4,20
    e8844974:	411c                	lw	a5,0(a0)
    e8844976:	02f74363          	blt	a4,a5,e884499c <_AsyncConnection_StartSRVQuery+0x9c>
    e884497a:	577d                	li	a4,-1
    e884497c:	0ce78263          	beq	a5,a4,e8844a40 <_AsyncConnection_StartSRVQuery+0x140>
    e8844980:	07093503          	ld	a0,112(s2)
    e8844984:	874e                	mv	a4,s3
    e8844986:	00079697          	auipc	a3,0x79
    e884498a:	2f268693          	addi	a3,a3,754 # e88bdc78 <kSRPHashDescriptor_SHA512+0x268>
    e884498e:	4651                	li	a2,20
    e8844990:	00079597          	auipc	a1,0x79
    e8844994:	32058593          	addi	a1,a1,800 # e88bdcb0 <__PRETTY_FUNCTION__.10451>
    e8844998:	2dd0f0ef          	jal	ra,e8854474 <LogPrintF>
	AsyncConnectionProgress( inConnection, kAsyncConnectionPhase_QueryingSRV, inDestination );
    e884499c:	04893783          	ld	a5,72(s2)
    e88449a0:	c791                	beqz	a5,e88449ac <_AsyncConnection_StartSRVQuery+0xac>
    e88449a2:	05093603          	ld	a2,80(s2)
    e88449a6:	85ce                	mv	a1,s3
    e88449a8:	4505                	li	a0,1
    e88449aa:	9782                	jalr	a5
	err = DNSServiceQueryRecord( &obj->service, kDNSServiceFlagsUnicastResponse_compat, ifindex, host, 
    e88449ac:	4602                	lw	a2,0(sp)
    e88449ae:	88a2                	mv	a7,s0
    e88449b0:	00000817          	auipc	a6,0x0
    e88449b4:	d7080813          	addi	a6,a6,-656 # e8844720 <_AsyncConnection_SRVCallBack>
    e88449b8:	4785                	li	a5,1
    e88449ba:	02100713          	li	a4,33
    e88449be:	0034                	addi	a3,sp,8
    e88449c0:	004005b7          	lui	a1,0x400
    e88449c4:	04040513          	addi	a0,s0,64
    e88449c8:	9c5d60ef          	jal	ra,e881b38c <DNSServiceQueryRecord>
    e88449cc:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e88449ce:	e549                	bnez	a0,e8844a58 <_AsyncConnection_StartSRVQuery+0x158>
	obj->readSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_READ, DNSServiceRefSockFD( obj->service ), 0, 
    e88449d0:	6028                	ld	a0,64(s0)
    e88449d2:	b06d60ef          	jal	ra,e881acd8 <DNSServiceRefSockFD>
    e88449d6:	85aa                	mv	a1,a0
    e88449d8:	05893683          	ld	a3,88(s2)
    e88449dc:	4601                	li	a2,0
    e88449de:	4501                	li	a0,0
    e88449e0:	3ce0a0ef          	jal	ra,e884edae <dispatch_source_create>
    e88449e4:	e828                	sd	a0,80(s0)
	require_action( obj->readSource, exit, err = kUnknownErr );
    e88449e6:	c535                	beqz	a0,e8844a52 <_AsyncConnection_StartSRVQuery+0x152>
	dispatch_set_context( obj->readSource, obj );
    e88449e8:	85a2                	mv	a1,s0
    e88449ea:	2320a0ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( obj->readSource, _AsyncConnection_EventHandler );
    e88449ee:	6828                	ld	a0,80(s0)
    e88449f0:	00000597          	auipc	a1,0x0
    e88449f4:	98058593          	addi	a1,a1,-1664 # e8844370 <_AsyncConnection_EventHandler>
    e88449f8:	4720a0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( obj->readSource, _AsyncConnection_CancelHandler );
    e88449fc:	6828                	ld	a0,80(s0)
    e88449fe:	fffff597          	auipc	a1,0xfffff
    e8844a02:	75a58593          	addi	a1,a1,1882 # e8844158 <_AsyncConnection_CancelHandler>
    e8844a06:	4680a0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	dispatch_resume( obj->readSource );
    e8844a0a:	6828                	ld	a0,80(s0)
    e8844a0c:	0ea0b0ef          	jal	ra,e884faf6 <dispatch_resume>
	++obj->refCount;
    e8844a10:	401c                	lw	a5,0(s0)
    e8844a12:	2785                	addiw	a5,a5,1
    e8844a14:	c01c                	sw	a5,0(s0)
	obj->next = inConnection->operationList;
    e8844a16:	04093783          	ld	a5,64(s2)
    e8844a1a:	e41c                	sd	a5,8(s0)
	inConnection->operationList = obj;
    e8844a1c:	04893023          	sd	s0,64(s2)
}
    e8844a20:	42813083          	ld	ra,1064(sp)
    e8844a24:	42013403          	ld	s0,1056(sp)
    e8844a28:	8526                	mv	a0,s1
    e8844a2a:	41013903          	ld	s2,1040(sp)
    e8844a2e:	41813483          	ld	s1,1048(sp)
    e8844a32:	40813983          	ld	s3,1032(sp)
    e8844a36:	40013a03          	ld	s4,1024(sp)
    e8844a3a:	43010113          	addi	sp,sp,1072
    e8844a3e:	8082                	ret
	ac_ulog( inConnection, kLogLevelVerbose, "Querying SRV  %s\n", inDestination );
    e8844a40:	45d1                	li	a1,20
    e8844a42:	6300f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8844a46:	d939                	beqz	a0,e884499c <_AsyncConnection_StartSRVQuery+0x9c>
    e8844a48:	bf25                	j	e8844980 <_AsyncConnection_StartSRVQuery+0x80>
	require_action( obj, exit, err = kNoMemoryErr );
    e8844a4a:	74f9                	lui	s1,0xffffe
    e8844a4c:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8844a50:	bfc1                	j	e8844a20 <_AsyncConnection_StartSRVQuery+0x120>
	require_action( obj->readSource, exit, err = kUnknownErr );
    e8844a52:	74f9                	lui	s1,0xffffe
    e8844a54:	5d448493          	addi	s1,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( obj ) _AsyncConnection_ReleaseOperation( obj );
    e8844a58:	8522                	mv	a0,s0
    e8844a5a:	e82ff0ef          	jal	ra,e88440dc <_AsyncConnection_ReleaseOperation>
	return( err );
    e8844a5e:	b7c9                	j	e8844a20 <_AsyncConnection_StartSRVQuery+0x120>

00000000e8844a60 <_AsyncConnection_StartConnectNow>:
{
    e8844a60:	711d                	addi	sp,sp,-96
    e8844a62:	e4a6                	sd	s1,72(sp)
    e8844a64:	84aa                	mv	s1,a0
	obj = (AsyncConnectionOperationRef) calloc( 1, sizeof( *obj ) );
    e8844a66:	0a000513          	li	a0,160
{
    e8844a6a:	e0ca                	sd	s2,64(sp)
    e8844a6c:	f852                	sd	s4,48(sp)
    e8844a6e:	f456                	sd	s5,40(sp)
    e8844a70:	ec86                	sd	ra,88(sp)
    e8844a72:	e8a2                	sd	s0,80(sp)
    e8844a74:	fc4e                	sd	s3,56(sp)
    e8844a76:	8a2e                	mv	s4,a1
    e8844a78:	e432                	sd	a2,8(sp)
    e8844a7a:	8936                	mv	s2,a3
    e8844a7c:	8aba                	mv	s5,a4
	obj = (AsyncConnectionOperationRef) calloc( 1, sizeof( *obj ) );
    e8844a7e:	b23ff0ef          	jal	ra,e88445a0 <calloc.constprop.5>
	require_action( obj, exit, err = kNoMemoryErr );
    e8844a82:	24050963          	beqz	a0,e8844cd4 <_AsyncConnection_StartConnectNow+0x274>
	++inConnection->refCount;
    e8844a86:	409c                	lw	a5,0(s1)
	SockAddrCopy( inAddr, &obj->addr );
    e8844a88:	6622                	ld	a2,8(sp)
    e8844a8a:	01850993          	addi	s3,a0,24
	++inConnection->refCount;
    e8844a8e:	2785                	addiw	a5,a5,1
    e8844a90:	c09c                	sw	a5,0(s1)
	obj->refCount	= 1;
    e8844a92:	4785                	li	a5,1
    e8844a94:	842a                	mv	s0,a0
    e8844a96:	c11c                	sw	a5,0(a0)
	obj->connection	= inConnection;
    e8844a98:	e904                	sd	s1,16(a0)
	SockAddrCopy( inAddr, &obj->addr );
    e8844a9a:	85ce                	mv	a1,s3
    e8844a9c:	8532                	mv	a0,a2
    e8844a9e:	7d9110ef          	jal	ra,e8856a76 <SockAddrCopy>
	if(      inDefaultPort < 0 )					SockAddrSetPort( &obj->addr, -inDefaultPort );
    e8844aa2:	040add63          	bgez	s5,e8844afc <_AsyncConnection_StartConnectNow+0x9c>
    e8844aa6:	415005bb          	negw	a1,s5
    e8844aaa:	2581                	sext.w	a1,a1
	else if( SockAddrGetPort( &obj->addr ) == 0 )	SockAddrSetPort( &obj->addr,  inDefaultPort );
    e8844aac:	854e                	mv	a0,s3
    e8844aae:	76f110ef          	jal	ra,e8856a1c <SockAddrSetPort>
	obj->defaultPort = inDefaultPort;
    e8844ab2:	03542c23          	sw	s5,56(s0)
	obj->connectStartTime = CFAbsoluteTimeGetCurrent();
    e8844ab6:	7c0060ef          	jal	ra,e884b276 <CFAbsoluteTimeGetCurrent>
    e8844aba:	a848                	fsd	fa0,144(s0)
	if( inParentOp )
    e8844abc:	000a0b63          	beqz	s4,e8844ad2 <_AsyncConnection_StartConnectNow+0x72>
		obj->reachabilitySecs	= inParentOp->reachabilitySecs;
    e8844ac0:	068a3787          	fld	fa5,104(s4)
    e8844ac4:	b43c                	fsd	fa5,104(s0)
		obj->srvSecs			= inParentOp->srvSecs;
    e8844ac6:	078a3787          	fld	fa5,120(s4)
    e8844aca:	bc3c                	fsd	fa5,120(s0)
		obj->dnsResolveSecs		= inParentOp->dnsResolveSecs;
    e8844acc:	088a3787          	fld	fa5,136(s4)
    e8844ad0:	a45c                	fsd	fa5,136(s0)
	obj->nativeSock = socket( obj->addr.sa.sa_family, SOCK_STREAM, IPPROTO_TCP );
    e8844ad2:	01944503          	lbu	a0,25(s0)
    e8844ad6:	4619                	li	a2,6
    e8844ad8:	4585                	li	a1,1
    e8844ada:	146410ef          	jal	ra,e8885c20 <lwip_socket>
    e8844ade:	dc48                	sw	a0,60(s0)
	err = map_socket_creation_errno( obj->nativeSock );
    e8844ae0:	02055463          	bgez	a0,e8844b08 <_AsyncConnection_StartConnectNow+0xa8>
    e8844ae4:	000a0797          	auipc	a5,0xa0
    e8844ae8:	b4478793          	addi	a5,a5,-1212 # e88e4628 <lwip_errno>
    e8844aec:	0007a903          	lw	s2,0(a5)
    e8844af0:	12091363          	bnez	s2,e8844c16 <_AsyncConnection_StartConnectNow+0x1b6>
    e8844af4:	7979                	lui	s2,0xffffe
    e8844af6:	5d490913          	addi	s2,s2,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8844afa:	aa31                	j	e8844c16 <_AsyncConnection_StartConnectNow+0x1b6>
	else if( SockAddrGetPort( &obj->addr ) == 0 )	SockAddrSetPort( &obj->addr,  inDefaultPort );
    e8844afc:	854e                	mv	a0,s3
    e8844afe:	43f110ef          	jal	ra,e885673c <SockAddrGetPort>
    e8844b02:	f945                	bnez	a0,e8844ab2 <_AsyncConnection_StartConnectNow+0x52>
    e8844b04:	85d6                	mv	a1,s5
    e8844b06:	b75d                	j	e8844aac <_AsyncConnection_StartConnectNow+0x4c>
	err = SocketMakeNonBlocking( obj->nativeSock );
    e8844b08:	4585                	li	a1,1
    e8844b0a:	53e110ef          	jal	ra,e8856048 <SocketSetNonBlocking>
    e8844b0e:	8a2a                	mv	s4,a0
	require_noerr( err, exit );
    e8844b10:	1c051663          	bnez	a0,e8844cdc <_AsyncConnection_StartConnectNow+0x27c>
	if( inConnection->flags & kAsyncConnectionFlag_P2P ) SocketSetP2P( obj->nativeSock, true );
    e8844b14:	48dc                	lw	a5,20(s1)
    e8844b16:	8b85                	andi	a5,a5,1
    e8844b18:	c789                	beqz	a5,e8844b22 <_AsyncConnection_StartConnectNow+0xc2>
    e8844b1a:	5c48                	lw	a0,60(s0)
    e8844b1c:	4585                	li	a1,1
    e8844b1e:	7cc110ef          	jal	ra,e88562ea <SocketSetP2P>
	if( ( inIfIndex != 0 ) && ( inConnection->flags & kAsyncConnectionFlag_BoundInterface ) )
    e8844b22:	00090b63          	beqz	s2,e8844b38 <_AsyncConnection_StartConnectNow+0xd8>
    e8844b26:	48dc                	lw	a5,20(s1)
    e8844b28:	8ba1                	andi	a5,a5,8
    e8844b2a:	c799                	beqz	a5,e8844b38 <_AsyncConnection_StartConnectNow+0xd8>
		SocketSetBoundInterface( obj->nativeSock, obj->addr.sa.sa_family, inIfIndex );
    e8844b2c:	01944583          	lbu	a1,25(s0)
    e8844b30:	5c48                	lw	a0,60(s0)
    e8844b32:	864a                	mv	a2,s2
    e8844b34:	2fa110ef          	jal	ra,e8855e2e <SocketSetBoundInterface>
	setsockopt( obj->nativeSock, IPPROTO_TCP, TCP_NODELAY, (char *) &tempInt, (socklen_t) sizeof( tempInt ) );
    e8844b38:	5c48                	lw	a0,60(s0)
	tempInt = 1;
    e8844b3a:	4785                	li	a5,1
	setsockopt( obj->nativeSock, IPPROTO_TCP, TCP_NODELAY, (char *) &tempInt, (socklen_t) sizeof( tempInt ) );
    e8844b3c:	4711                	li	a4,4
    e8844b3e:	0874                	addi	a3,sp,28
    e8844b40:	4605                	li	a2,1
    e8844b42:	4599                	li	a1,6
	tempInt = 1;
    e8844b44:	ce3e                	sw	a5,28(sp)
	setsockopt( obj->nativeSock, IPPROTO_TCP, TCP_NODELAY, (char *) &tempInt, (socklen_t) sizeof( tempInt ) );
    e8844b46:	113410ef          	jal	ra,e8886458 <lwip_setsockopt>
	SocketSetBufferSize( obj->nativeSock, SO_SNDBUF, inConnection->socketSendBufferSize );
    e8844b4a:	6a85                	lui	s5,0x1
    e8844b4c:	5490                	lw	a2,40(s1)
    e8844b4e:	5c48                	lw	a0,60(s0)
    e8844b50:	001a8593          	addi	a1,s5,1 # 1001 <memcmp-0xe87fefff>
    e8844b54:	314110ef          	jal	ra,e8855e68 <SocketSetBufferSize>
	SocketSetBufferSize( obj->nativeSock, SO_RCVBUF, inConnection->socketRecvBufferSize );
    e8844b58:	54d0                	lw	a2,44(s1)
    e8844b5a:	5c48                	lw	a0,60(s0)
    e8844b5c:	002a8593          	addi	a1,s5,2
    e8844b60:	308110ef          	jal	ra,e8855e68 <SocketSetBufferSize>
	ac_ulog( inConnection, kLogLevelVerbose, "Connecting to %##a, interface %d\n", &obj->addr, 
    e8844b64:	78a8                	ld	a0,112(s1)
    e8844b66:	4751                	li	a4,20
    e8844b68:	411c                	lw	a5,0(a0)
    e8844b6a:	02f74c63          	blt	a4,a5,e8844ba2 <_AsyncConnection_StartConnectNow+0x142>
    e8844b6e:	577d                	li	a4,-1
    e8844b70:	02e78563          	beq	a5,a4,e8844b9a <_AsyncConnection_StartConnectNow+0x13a>
    e8844b74:	48dc                	lw	a5,20(s1)
    e8844b76:	78a8                	ld	a0,112(s1)
    e8844b78:	8ba1                	andi	a5,a5,8
    e8844b7a:	e391                	bnez	a5,e8844b7e <_AsyncConnection_StartConnectNow+0x11e>
    e8844b7c:	4901                	li	s2,0
    e8844b7e:	87ca                	mv	a5,s2
    e8844b80:	874e                	mv	a4,s3
    e8844b82:	00079697          	auipc	a3,0x79
    e8844b86:	08e68693          	addi	a3,a3,142 # e88bdc10 <kSRPHashDescriptor_SHA512+0x200>
    e8844b8a:	4651                	li	a2,20
    e8844b8c:	00079597          	auipc	a1,0x79
    e8844b90:	1d458593          	addi	a1,a1,468 # e88bdd60 <__PRETTY_FUNCTION__.10548>
    e8844b94:	0e10f0ef          	jal	ra,e8854474 <LogPrintF>
    e8844b98:	a029                	j	e8844ba2 <_AsyncConnection_StartConnectNow+0x142>
    e8844b9a:	45d1                	li	a1,20
    e8844b9c:	4d60f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8844ba0:	f971                	bnez	a0,e8844b74 <_AsyncConnection_StartConnectNow+0x114>
	AsyncConnectionProgress( inConnection, kAsyncConnectionPhase_Connecting, &obj->addr );
    e8844ba2:	64bc                	ld	a5,72(s1)
    e8844ba4:	c789                	beqz	a5,e8844bae <_AsyncConnection_StartConnectNow+0x14e>
    e8844ba6:	68b0                	ld	a2,80(s1)
    e8844ba8:	85ce                	mv	a1,s3
    e8844baa:	450d                	li	a0,3
    e8844bac:	9782                	jalr	a5
	err = connect( obj->nativeSock, &obj->addr.sa, SockAddrGetSize( &obj->addr ) );
    e8844bae:	03c42903          	lw	s2,60(s0)
    e8844bb2:	854e                	mv	a0,s3
    e8844bb4:	21d110ef          	jal	ra,e88565d0 <SockAddrGetSize>
    e8844bb8:	0005061b          	sext.w	a2,a0
    e8844bbc:	85ce                	mv	a1,s3
    e8844bbe:	854a                	mv	a0,s2
    e8844bc0:	764400ef          	jal	ra,e8885324 <lwip_connect>
    e8844bc4:	892a                	mv	s2,a0
	err = map_socket_noerr_errno( obj->nativeSock, err );
    e8844bc6:	c529                	beqz	a0,e8844c10 <_AsyncConnection_StartConnectNow+0x1b0>
    e8844bc8:	000a0797          	auipc	a5,0xa0
    e8844bcc:	a6078793          	addi	a5,a5,-1440 # e88e4628 <lwip_errno>
    e8844bd0:	0007a903          	lw	s2,0(a5)
    e8844bd4:	04091663          	bnez	s2,e8844c20 <_AsyncConnection_StartConnectNow+0x1c0>
    e8844bd8:	7979                	lui	s2,0xffffe
    e8844bda:	5d490913          	addi	s2,s2,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
		ac_ulog( inConnection, kLogLevelInfo, "### Connect 1 to %##a failed: %#m\n", &obj->addr, err );
    e8844bde:	78a8                	ld	a0,112(s1)
    e8844be0:	02800713          	li	a4,40
    e8844be4:	411c                	lw	a5,0(a0)
    e8844be6:	02f74863          	blt	a4,a5,e8844c16 <_AsyncConnection_StartConnectNow+0x1b6>
    e8844bea:	577d                	li	a4,-1
    e8844bec:	0ce78e63          	beq	a5,a4,e8844cc8 <_AsyncConnection_StartConnectNow+0x268>
    e8844bf0:	78a8                	ld	a0,112(s1)
    e8844bf2:	87ca                	mv	a5,s2
    e8844bf4:	874e                	mv	a4,s3
    e8844bf6:	00079697          	auipc	a3,0x79
    e8844bfa:	04268693          	addi	a3,a3,66 # e88bdc38 <kSRPHashDescriptor_SHA512+0x228>
    e8844bfe:	02800613          	li	a2,40
    e8844c02:	00079597          	auipc	a1,0x79
    e8844c06:	15e58593          	addi	a1,a1,350 # e88bdd60 <__PRETTY_FUNCTION__.10548>
    e8844c0a:	06b0f0ef          	jal	ra,e8854474 <LogPrintF>
    e8844c0e:	a021                	j	e8844c16 <_AsyncConnection_StartConnectNow+0x1b6>
	if( err == 0 ) { _AsyncConnection_ConnectHandler( obj ); goto exit; }
    e8844c10:	8522                	mv	a0,s0
    e8844c12:	e24ff0ef          	jal	ra,e8844236 <_AsyncConnection_ConnectHandler>
	if( obj ) _AsyncConnection_ReleaseOperation( obj );
    e8844c16:	8522                	mv	a0,s0
    e8844c18:	cc4ff0ef          	jal	ra,e88440dc <_AsyncConnection_ReleaseOperation>
    e8844c1c:	8a4a                	mv	s4,s2
	return( err );
    e8844c1e:	a859                	j	e8844cb4 <_AsyncConnection_StartConnectNow+0x254>
	if( ( err != EINPROGRESS ) && ( err != EWOULDBLOCK ) )
    e8844c20:	07700793          	li	a5,119
    e8844c24:	00f90563          	beq	s2,a5,e8844c2e <_AsyncConnection_StartConnectNow+0x1ce>
    e8844c28:	47ad                	li	a5,11
    e8844c2a:	faf91ae3          	bne	s2,a5,e8844bde <_AsyncConnection_StartConnectNow+0x17e>
	obj->readSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_READ, (uintptr_t) obj->nativeSock, 0, inConnection->handlerQueue );
    e8844c2e:	6cb4                	ld	a3,88(s1)
    e8844c30:	5c4c                	lw	a1,60(s0)
    e8844c32:	4601                	li	a2,0
    e8844c34:	4501                	li	a0,0
    e8844c36:	1780a0ef          	jal	ra,e884edae <dispatch_source_create>
    e8844c3a:	e828                	sd	a0,80(s0)
	require_action( obj->readSource, exit, err = kUnknownErr );
    e8844c3c:	ea050ce3          	beqz	a0,e8844af4 <_AsyncConnection_StartConnectNow+0x94>
	dispatch_set_context( obj->readSource, obj );
    e8844c40:	85a2                	mv	a1,s0
    e8844c42:	7db090ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( obj->readSource, _AsyncConnection_EventHandler );
    e8844c46:	6828                	ld	a0,80(s0)
    e8844c48:	fffff597          	auipc	a1,0xfffff
    e8844c4c:	72858593          	addi	a1,a1,1832 # e8844370 <_AsyncConnection_EventHandler>
    e8844c50:	21a0a0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( obj->readSource, _AsyncConnection_CancelHandler );
    e8844c54:	6828                	ld	a0,80(s0)
    e8844c56:	fffff597          	auipc	a1,0xfffff
    e8844c5a:	50258593          	addi	a1,a1,1282 # e8844158 <_AsyncConnection_CancelHandler>
    e8844c5e:	2100a0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	dispatch_resume( obj->readSource );
    e8844c62:	6828                	ld	a0,80(s0)
    e8844c64:	6930a0ef          	jal	ra,e884faf6 <dispatch_resume>
	++obj->refCount;
    e8844c68:	401c                	lw	a5,0(s0)
	obj->writeSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_WRITE, (uintptr_t) obj->nativeSock, 0, inConnection->handlerQueue );
    e8844c6a:	5c4c                	lw	a1,60(s0)
    e8844c6c:	4601                	li	a2,0
	++obj->refCount;
    e8844c6e:	2785                	addiw	a5,a5,1
    e8844c70:	c01c                	sw	a5,0(s0)
	obj->writeSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_WRITE, (uintptr_t) obj->nativeSock, 0, inConnection->handlerQueue );
    e8844c72:	6cb4                	ld	a3,88(s1)
    e8844c74:	450d                	li	a0,3
    e8844c76:	1380a0ef          	jal	ra,e884edae <dispatch_source_create>
    e8844c7a:	ec28                	sd	a0,88(s0)
	require_action( obj->writeSource, exit, err = kUnknownErr );
    e8844c7c:	e6050ce3          	beqz	a0,e8844af4 <_AsyncConnection_StartConnectNow+0x94>
	dispatch_set_context( obj->writeSource, obj );
    e8844c80:	85a2                	mv	a1,s0
    e8844c82:	79b090ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( obj->writeSource, _AsyncConnection_EventHandler );
    e8844c86:	6c28                	ld	a0,88(s0)
    e8844c88:	fffff597          	auipc	a1,0xfffff
    e8844c8c:	6e858593          	addi	a1,a1,1768 # e8844370 <_AsyncConnection_EventHandler>
    e8844c90:	1da0a0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( obj->writeSource, _AsyncConnection_CancelHandler );
    e8844c94:	6c28                	ld	a0,88(s0)
    e8844c96:	fffff597          	auipc	a1,0xfffff
    e8844c9a:	4c258593          	addi	a1,a1,1218 # e8844158 <_AsyncConnection_CancelHandler>
    e8844c9e:	1d00a0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	dispatch_resume( obj->writeSource );
    e8844ca2:	6c28                	ld	a0,88(s0)
    e8844ca4:	6530a0ef          	jal	ra,e884faf6 <dispatch_resume>
	++obj->refCount;
    e8844ca8:	401c                	lw	a5,0(s0)
    e8844caa:	2785                	addiw	a5,a5,1
    e8844cac:	c01c                	sw	a5,0(s0)
	obj->next = inConnection->operationList;
    e8844cae:	60bc                	ld	a5,64(s1)
    e8844cb0:	e41c                	sd	a5,8(s0)
	inConnection->operationList = obj;
    e8844cb2:	e0a0                	sd	s0,64(s1)
}
    e8844cb4:	60e6                	ld	ra,88(sp)
    e8844cb6:	6446                	ld	s0,80(sp)
    e8844cb8:	8552                	mv	a0,s4
    e8844cba:	64a6                	ld	s1,72(sp)
    e8844cbc:	6906                	ld	s2,64(sp)
    e8844cbe:	79e2                	ld	s3,56(sp)
    e8844cc0:	7a42                	ld	s4,48(sp)
    e8844cc2:	7aa2                	ld	s5,40(sp)
    e8844cc4:	6125                	addi	sp,sp,96
    e8844cc6:	8082                	ret
		ac_ulog( inConnection, kLogLevelInfo, "### Connect 1 to %##a failed: %#m\n", &obj->addr, err );
    e8844cc8:	02800593          	li	a1,40
    e8844ccc:	3a60f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8844cd0:	d139                	beqz	a0,e8844c16 <_AsyncConnection_StartConnectNow+0x1b6>
    e8844cd2:	bf39                	j	e8844bf0 <_AsyncConnection_StartConnectNow+0x190>
	require_action( obj, exit, err = kNoMemoryErr );
    e8844cd4:	7a79                	lui	s4,0xffffe
    e8844cd6:	5b8a0a13          	addi	s4,s4,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8844cda:	bfe9                	j	e8844cb4 <_AsyncConnection_StartConnectNow+0x254>
    e8844cdc:	892a                	mv	s2,a0
    e8844cde:	bf25                	j	e8844c16 <_AsyncConnection_StartConnectNow+0x1b6>

00000000e8844ce0 <_AsyncConnection_ConnectDelayedHandler>:
{
    e8844ce0:	85aa                	mv	a1,a0
	err = _AsyncConnection_StartConnectNow( operation->connection, operation, &operation->addr, operation->ifIndex, 
    e8844ce2:	5d18                	lw	a4,56(a0)
    e8844ce4:	5954                	lw	a3,52(a0)
    e8844ce6:	01850613          	addi	a2,a0,24
    e8844cea:	6908                	ld	a0,16(a0)
    e8844cec:	d75ff06f          	j	e8844a60 <_AsyncConnection_StartConnectNow>

00000000e8844cf0 <_AsyncConnection_StartConnect>:
{
    e8844cf0:	715d                	addi	sp,sp,-80
    e8844cf2:	e0a2                	sd	s0,64(sp)
    e8844cf4:	e486                	sd	ra,72(sp)
    e8844cf6:	fc26                	sd	s1,56(sp)
    e8844cf8:	f84a                	sd	s2,48(sp)
    e8844cfa:	f44e                	sd	s3,40(sp)
    e8844cfc:	f052                	sd	s4,32(sp)
    e8844cfe:	ec56                	sd	s5,24(sp)
    e8844d00:	e85a                	sd	s6,16(sp)
    e8844d02:	e45e                	sd	s7,8(sp)
	require_action_quiet( !( inConnection->flags & kAsyncConnectionFlag_NonLinkLocal ) || !SockAddrIsLinkLocal( inAddr ), 
    e8844d04:	01454803          	lbu	a6,20(a0)
    e8844d08:	00164783          	lbu	a5,1(a2)
    e8844d0c:	fc78340b          	extu	s0,a6,63,7
    e8844d10:	14040863          	beqz	s0,e8844e60 <_AsyncConnection_StartConnect+0x170>
    e8844d14:	4809                	li	a6,2
    e8844d16:	03079a63          	bne	a5,a6,e8844d4a <_AsyncConnection_StartConnect+0x5a>
    e8844d1a:	00464803          	lbu	a6,4(a2)
    e8844d1e:	0a900793          	li	a5,169
    e8844d22:	14f81263          	bne	a6,a5,e8844e66 <_AsyncConnection_StartConnect+0x176>
    e8844d26:	00564803          	lbu	a6,5(a2)
    e8844d2a:	0fe00793          	li	a5,254
    e8844d2e:	12f81c63          	bne	a6,a5,e8844e66 <_AsyncConnection_StartConnect+0x176>
    e8844d32:	4501                	li	a0,0
}
    e8844d34:	60a6                	ld	ra,72(sp)
    e8844d36:	6406                	ld	s0,64(sp)
    e8844d38:	74e2                	ld	s1,56(sp)
    e8844d3a:	7942                	ld	s2,48(sp)
    e8844d3c:	79a2                	ld	s3,40(sp)
    e8844d3e:	7a02                	ld	s4,32(sp)
    e8844d40:	6ae2                	ld	s5,24(sp)
    e8844d42:	6b42                	ld	s6,16(sp)
    e8844d44:	6ba2                	ld	s7,8(sp)
    e8844d46:	6161                	addi	sp,sp,80
    e8844d48:	8082                	ret
	require_action_quiet( !( inConnection->flags & kAsyncConnectionFlag_NonLinkLocal ) || !SockAddrIsLinkLocal( inAddr ), 
    e8844d4a:	4829                	li	a6,10
    e8844d4c:	11079d63          	bne	a5,a6,e8844e66 <_AsyncConnection_StartConnect+0x176>
    e8844d50:	00864803          	lbu	a6,8(a2)
    e8844d54:	0fe00793          	li	a5,254
    e8844d58:	00f81a63          	bne	a6,a5,e8844d6c <_AsyncConnection_StartConnect+0x7c>
    e8844d5c:	00964783          	lbu	a5,9(a2)
    e8844d60:	08000813          	li	a6,128
    e8844d64:	0c07f793          	andi	a5,a5,192
    e8844d68:	fd0785e3          	beq	a5,a6,e8844d32 <_AsyncConnection_StartConnect+0x42>
	if( ( peerIP->sa.sa_family == AF_INET6 ) && ( inConnection->ipv6DelayNanos > 0 ) )
    e8844d6c:	01853b03          	ld	s6,24(a0)
    e8844d70:	0e0b0b63          	beqz	s6,e8844e66 <_AsyncConnection_StartConnect+0x176>
    e8844d74:	84aa                	mv	s1,a0
	ac_ulog( inConnection, kLogLevelVerbose, "Delaying connect to %##a, interface %u by %llu ms\n", 
    e8844d76:	7928                	ld	a0,112(a0)
    e8844d78:	8a3a                	mv	s4,a4
    e8844d7a:	4751                	li	a4,20
    e8844d7c:	411c                	lw	a5,0(a0)
    e8844d7e:	8ab6                	mv	s5,a3
    e8844d80:	8932                	mv	s2,a2
    e8844d82:	89ae                	mv	s3,a1
    e8844d84:	02f74963          	blt	a4,a5,e8844db6 <_AsyncConnection_StartConnect+0xc6>
    e8844d88:	577d                	li	a4,-1
    e8844d8a:	0ee78a63          	beq	a5,a4,e8844e7e <_AsyncConnection_StartConnect+0x18e>
    e8844d8e:	000f4837          	lui	a6,0xf4
    e8844d92:	24080813          	addi	a6,a6,576 # f4240 <memcmp-0xe870bdc0>
    e8844d96:	030b5833          	divu	a6,s6,a6
    e8844d9a:	78a8                	ld	a0,112(s1)
    e8844d9c:	87d6                	mv	a5,s5
    e8844d9e:	874a                	mv	a4,s2
    e8844da0:	00079697          	auipc	a3,0x79
    e8844da4:	e3868693          	addi	a3,a3,-456 # e88bdbd8 <kSRPHashDescriptor_SHA512+0x1c8>
    e8844da8:	4651                	li	a2,20
    e8844daa:	00079597          	auipc	a1,0x79
    e8844dae:	f8e58593          	addi	a1,a1,-114 # e88bdd38 <__PRETTY_FUNCTION__.10527>
    e8844db2:	6c20f0ef          	jal	ra,e8854474 <LogPrintF>
	obj = (AsyncConnectionOperationRef) calloc( 1, sizeof( *obj ) );
    e8844db6:	0a000513          	li	a0,160
    e8844dba:	fe6ff0ef          	jal	ra,e88445a0 <calloc.constprop.5>
    e8844dbe:	842a                	mv	s0,a0
	require_action( obj, exit, err = kNoMemoryErr );
    e8844dc0:	0c050a63          	beqz	a0,e8844e94 <_AsyncConnection_StartConnect+0x1a4>
	++inConnection->refCount;
    e8844dc4:	409c                	lw	a5,0(s1)
	SockAddrCopy( inAddr, &obj->addr );
    e8844dc6:	01850b93          	addi	s7,a0,24
    e8844dca:	85de                	mv	a1,s7
	++inConnection->refCount;
    e8844dcc:	2785                	addiw	a5,a5,1
    e8844dce:	c09c                	sw	a5,0(s1)
	obj->refCount			= 1;
    e8844dd0:	4785                	li	a5,1
    e8844dd2:	c11c                	sw	a5,0(a0)
	obj->connection			= inConnection;
    e8844dd4:	e904                	sd	s1,16(a0)
	SockAddrCopy( inAddr, &obj->addr );
    e8844dd6:	854a                	mv	a0,s2
    e8844dd8:	49f110ef          	jal	ra,e8856a76 <SockAddrCopy>
	obj->ifIndex			= inIfIndex;
    e8844ddc:	03542a23          	sw	s5,52(s0)
	if(      inDefaultPort < 0 )					SockAddrSetPort( &obj->addr, -inDefaultPort );
    e8844de0:	0a0a5463          	bgez	s4,e8844e88 <_AsyncConnection_StartConnect+0x198>
    e8844de4:	414005bb          	negw	a1,s4
    e8844de8:	2581                	sext.w	a1,a1
	else if( SockAddrGetPort( &obj->addr ) == 0 )	SockAddrSetPort( &obj->addr,  inDefaultPort );
    e8844dea:	855e                	mv	a0,s7
    e8844dec:	431110ef          	jal	ra,e8856a1c <SockAddrSetPort>
	obj->nativeSock			= kInvalidSocketRef;
    e8844df0:	57fd                	li	a5,-1
	obj->defaultPort		= inDefaultPort;
    e8844df2:	03442c23          	sw	s4,56(s0)
	obj->nativeSock			= kInvalidSocketRef;
    e8844df6:	dc5c                	sw	a5,60(s0)
	obj->connectStartTime	= CFAbsoluteTimeGetCurrent();
    e8844df8:	47e060ef          	jal	ra,e884b276 <CFAbsoluteTimeGetCurrent>
    e8844dfc:	a848                	fsd	fa0,144(s0)
	if( inParentOp )
    e8844dfe:	00098b63          	beqz	s3,e8844e14 <_AsyncConnection_StartConnect+0x124>
		obj->reachabilitySecs	= inParentOp->reachabilitySecs;
    e8844e02:	0689b787          	fld	fa5,104(s3)
    e8844e06:	b43c                	fsd	fa5,104(s0)
		obj->srvSecs			= inParentOp->srvSecs;
    e8844e08:	0789b787          	fld	fa5,120(s3)
    e8844e0c:	bc3c                	fsd	fa5,120(s0)
		obj->dnsResolveSecs		= inParentOp->dnsResolveSecs;
    e8844e0e:	0889b787          	fld	fa5,136(s3)
    e8844e12:	a45c                	fsd	fa5,136(s0)
	obj->delayTimer = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, inConnection->handlerQueue );
    e8844e14:	6cb4                	ld	a3,88(s1)
    e8844e16:	4601                	li	a2,0
    e8844e18:	4581                	li	a1,0
    e8844e1a:	4509                	li	a0,2
    e8844e1c:	793090ef          	jal	ra,e884edae <dispatch_source_create>
    e8844e20:	e428                	sd	a0,72(s0)
	require_action( obj->delayTimer, exit, err = kUnknownErr );
    e8844e22:	cd2d                	beqz	a0,e8844e9c <_AsyncConnection_StartConnect+0x1ac>
	dispatch_set_context( obj->delayTimer, obj );
    e8844e24:	85a2                	mv	a1,s0
    e8844e26:	5f7090ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( obj->delayTimer, _AsyncConnection_ConnectDelayedHandler );
    e8844e2a:	6428                	ld	a0,72(s0)
    e8844e2c:	00000597          	auipc	a1,0x0
    e8844e30:	eb458593          	addi	a1,a1,-332 # e8844ce0 <_AsyncConnection_ConnectDelayedHandler>
    e8844e34:	0360a0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_timer( obj->delayTimer, dispatch_time( DISPATCH_TIME_NOW, (int64_t) inDelayNanos ), 
    e8844e38:	04843903          	ld	s2,72(s0)
    e8844e3c:	85da                	mv	a1,s6
    e8844e3e:	4501                	li	a0,0
    e8844e40:	1140a0ef          	jal	ra,e884ef54 <dispatch_time>
    e8844e44:	85aa                	mv	a1,a0
    e8844e46:	002b5693          	srli	a3,s6,0x2
    e8844e4a:	567d                	li	a2,-1
    e8844e4c:	854a                	mv	a0,s2
    e8844e4e:	57b0a0ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
	dispatch_resume( obj->delayTimer );
    e8844e52:	6428                	ld	a0,72(s0)
    e8844e54:	4a30a0ef          	jal	ra,e884faf6 <dispatch_resume>
	obj->next = inConnection->operationList;
    e8844e58:	60bc                	ld	a5,64(s1)
    e8844e5a:	e41c                	sd	a5,8(s0)
	inConnection->operationList = obj;
    e8844e5c:	e0a0                	sd	s0,64(s1)
	if( obj ) _AsyncConnection_ReleaseOperation( obj );
    e8844e5e:	bdd1                	j	e8844d32 <_AsyncConnection_StartConnect+0x42>
	if( ( peerIP->sa.sa_family == AF_INET6 ) && ( inConnection->ipv6DelayNanos > 0 ) )
    e8844e60:	4829                	li	a6,10
    e8844e62:	f10785e3          	beq	a5,a6,e8844d6c <_AsyncConnection_StartConnect+0x7c>
}
    e8844e66:	6406                	ld	s0,64(sp)
    e8844e68:	60a6                	ld	ra,72(sp)
    e8844e6a:	74e2                	ld	s1,56(sp)
    e8844e6c:	7942                	ld	s2,48(sp)
    e8844e6e:	79a2                	ld	s3,40(sp)
    e8844e70:	7a02                	ld	s4,32(sp)
    e8844e72:	6ae2                	ld	s5,24(sp)
    e8844e74:	6b42                	ld	s6,16(sp)
    e8844e76:	6ba2                	ld	s7,8(sp)
    e8844e78:	6161                	addi	sp,sp,80
	err = _AsyncConnection_StartConnectNow( inConnection, inParentOp, inAddr, inIfIndex, inDefaultPort );
    e8844e7a:	be7ff06f          	j	e8844a60 <_AsyncConnection_StartConnectNow>
	ac_ulog( inConnection, kLogLevelVerbose, "Delaying connect to %##a, interface %u by %llu ms\n", 
    e8844e7e:	45d1                	li	a1,20
    e8844e80:	1f20f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8844e84:	d90d                	beqz	a0,e8844db6 <_AsyncConnection_StartConnect+0xc6>
    e8844e86:	b721                	j	e8844d8e <_AsyncConnection_StartConnect+0x9e>
	else if( SockAddrGetPort( &obj->addr ) == 0 )	SockAddrSetPort( &obj->addr,  inDefaultPort );
    e8844e88:	855e                	mv	a0,s7
    e8844e8a:	0b3110ef          	jal	ra,e885673c <SockAddrGetPort>
    e8844e8e:	f12d                	bnez	a0,e8844df0 <_AsyncConnection_StartConnect+0x100>
    e8844e90:	85d2                	mv	a1,s4
    e8844e92:	bfa1                	j	e8844dea <_AsyncConnection_StartConnect+0xfa>
	require_action( obj, exit, err = kNoMemoryErr );
    e8844e94:	7579                	lui	a0,0xffffe
    e8844e96:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8844e9a:	bd69                	j	e8844d34 <_AsyncConnection_StartConnect+0x44>
	if( obj ) _AsyncConnection_ReleaseOperation( obj );
    e8844e9c:	8522                	mv	a0,s0
    e8844e9e:	a3eff0ef          	jal	ra,e88440dc <_AsyncConnection_ReleaseOperation>
	require_action( obj->delayTimer, exit, err = kUnknownErr );
    e8844ea2:	7579                	lui	a0,0xffffe
    e8844ea4:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	return( err );
    e8844ea8:	b571                	j	e8844d34 <_AsyncConnection_StartConnect+0x44>

00000000e8844eaa <_AsyncConnection_DNSCallBack>:
	require_noerr_action_quiet( inErrorCode, exit, err = inErrorCode );
    e8844eaa:	ead9                	bnez	a3,e8844f40 <_AsyncConnection_DNSCallBack+0x96>
	require_action_quiet( inFlags & kDNSServiceFlagsAdd, exit, err = kNoErr );
    e8844eac:	0025f693          	andi	a3,a1,2
    e8844eb0:	cac1                	beqz	a3,e8844f40 <_AsyncConnection_DNSCallBack+0x96>
{
    e8844eb2:	715d                	addi	sp,sp,-80
    e8844eb4:	e0a2                	sd	s0,64(sp)
    e8844eb6:	fc26                	sd	s1,56(sp)
    e8844eb8:	f84a                	sd	s2,48(sp)
    e8844eba:	f44e                	sd	s3,40(sp)
    e8844ebc:	ec56                	sd	s5,24(sp)
    e8844ebe:	e85a                	sd	s6,16(sp)
    e8844ec0:	8446                	mv	s0,a7
    e8844ec2:	e486                	sd	ra,72(sp)
    e8844ec4:	f052                	sd	s4,32(sp)
    e8844ec6:	84be                	mv	s1,a5
    e8844ec8:	8aba                	mv	s5,a4
	AsyncConnectionRef const				connection	= operation->connection;
    e8844eca:	0108ba03          	ld	s4,16(a7)
	operation->dnsResolveSecs = CFAbsoluteTimeGetCurrent() - operation->dnsResolveStartTime;
    e8844ece:	8b42                	mv	s6,a6
    e8844ed0:	8932                	mv	s2,a2
    e8844ed2:	89ae                	mv	s3,a1
    e8844ed4:	3a2060ef          	jal	ra,e884b276 <CFAbsoluteTimeGetCurrent>
    e8844ed8:	205c                	fld	fa5,128(s0)
	ac_ulog( connection, kLogLevelVerbose, "Resolved      %s -> %##a, Flags 0x%X, If %u, TTL %u\n", 
    e8844eda:	4751                	li	a4,20
	operation->dnsResolveSecs = CFAbsoluteTimeGetCurrent() - operation->dnsResolveStartTime;
    e8844edc:	0af57553          	fsub.d	fa0,fa0,fa5
    e8844ee0:	a448                	fsd	fa0,136(s0)
	ac_ulog( connection, kLogLevelVerbose, "Resolved      %s -> %##a, Flags 0x%X, If %u, TTL %u\n", 
    e8844ee2:	070a3503          	ld	a0,112(s4)
    e8844ee6:	411c                	lw	a5,0(a0)
    e8844ee8:	02f74763          	blt	a4,a5,e8844f16 <_AsyncConnection_DNSCallBack+0x6c>
    e8844eec:	577d                	li	a4,-1
    e8844eee:	04e78463          	beq	a5,a4,e8844f36 <_AsyncConnection_DNSCallBack+0x8c>
    e8844ef2:	070a3503          	ld	a0,112(s4)
    e8844ef6:	88ca                	mv	a7,s2
    e8844ef8:	e05a                	sd	s6,0(sp)
    e8844efa:	884e                	mv	a6,s3
    e8844efc:	87a6                	mv	a5,s1
    e8844efe:	8756                	mv	a4,s5
    e8844f00:	00079697          	auipc	a3,0x79
    e8844f04:	bf868693          	addi	a3,a3,-1032 # e88bdaf8 <kSRPHashDescriptor_SHA512+0xe8>
    e8844f08:	4651                	li	a2,20
    e8844f0a:	00079597          	auipc	a1,0x79
    e8844f0e:	e0e58593          	addi	a1,a1,-498 # e88bdd18 <__PRETTY_FUNCTION__.10506>
    e8844f12:	5620f0ef          	jal	ra,e8854474 <LogPrintF>
	err = _AsyncConnection_StartConnect( connection, operation, inAddr, inIfIndex, operation->defaultPort );
    e8844f16:	5c18                	lw	a4,56(s0)
    e8844f18:	85a2                	mv	a1,s0
}
    e8844f1a:	6406                	ld	s0,64(sp)
    e8844f1c:	60a6                	ld	ra,72(sp)
    e8844f1e:	79a2                	ld	s3,40(sp)
    e8844f20:	6ae2                	ld	s5,24(sp)
    e8844f22:	6b42                	ld	s6,16(sp)
	err = _AsyncConnection_StartConnect( connection, operation, inAddr, inIfIndex, operation->defaultPort );
    e8844f24:	86ca                	mv	a3,s2
    e8844f26:	8626                	mv	a2,s1
}
    e8844f28:	7942                	ld	s2,48(sp)
    e8844f2a:	74e2                	ld	s1,56(sp)
	err = _AsyncConnection_StartConnect( connection, operation, inAddr, inIfIndex, operation->defaultPort );
    e8844f2c:	8552                	mv	a0,s4
}
    e8844f2e:	7a02                	ld	s4,32(sp)
    e8844f30:	6161                	addi	sp,sp,80
	err = _AsyncConnection_StartConnect( connection, operation, inAddr, inIfIndex, operation->defaultPort );
    e8844f32:	dbfff06f          	j	e8844cf0 <_AsyncConnection_StartConnect>
	ac_ulog( connection, kLogLevelVerbose, "Resolved      %s -> %##a, Flags 0x%X, If %u, TTL %u\n", 
    e8844f36:	45d1                	li	a1,20
    e8844f38:	13a0f0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8844f3c:	dd69                	beqz	a0,e8844f16 <_AsyncConnection_DNSCallBack+0x6c>
    e8844f3e:	bf55                	j	e8844ef2 <_AsyncConnection_DNSCallBack+0x48>
    e8844f40:	8082                	ret

00000000e8844f42 <_AsyncConnection_Connect>:
{
    e8844f42:	7151                	addi	sp,sp,-240
    e8844f44:	f1a2                	sd	s0,224(sp)
    e8844f46:	eda6                	sd	s1,216(sp)
    e8844f48:	e5ce                	sd	s3,200(sp)
    e8844f4a:	e1d2                	sd	s4,192(sp)
    e8844f4c:	fd56                	sd	s5,184(sp)
    e8844f4e:	f586                	sd	ra,232(sp)
    e8844f50:	e9ca                	sd	s2,208(sp)
	str = connection->destination;
    e8844f52:	651c                	ld	a5,8(a0)
	OSStatus						err = kParamErr;
    e8844f54:	7479                	lui	s0,0xffffe
{
    e8844f56:	84aa                	mv	s1,a0
	str = connection->destination;
    e8844f58:	e43e                	sd	a5,8(sp)
	OSStatus						err = kParamErr;
    e8844f5a:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
	while( ( ptr = strsep( &str, kASCII_RecordSeparatorStr ) ) != NULL )
    e8844f5e:	00079a17          	auipc	s4,0x79
    e8844f62:	b2aa0a13          	addi	s4,s4,-1238 # e88bda88 <kSRPHashDescriptor_SHA512+0x78>
		if( ptr2 && ( ptr2[ 1 ] == '/' ) && ( ptr2[ 2 ] == '/' ) ) // If it looks like a URL.
    e8844f66:	02f00993          	li	s3,47
		else if( strcasestr( ptr, "._tcp." ) )
    e8844f6a:	00079a97          	auipc	s5,0x79
    e8844f6e:	11ea8a93          	addi	s5,s5,286 # e88be088 <__PRETTY_FUNCTION__.10585+0x2c0>
	while( ( ptr = strsep( &str, kASCII_RecordSeparatorStr ) ) != NULL )
    e8844f72:	85d2                	mv	a1,s4
    e8844f74:	0028                	addi	a0,sp,8
    e8844f76:	3611a0ef          	jal	ra,e885fad6 <strsep_compat>
    e8844f7a:	892a                	mv	s2,a0
    e8844f7c:	e92d                	bnez	a0,e8844fee <_AsyncConnection_Connect+0xac>
	if( connection->timeoutNanos != DISPATCH_TIME_FOREVER )
    e8844f7e:	7098                	ld	a4,32(s1)
    e8844f80:	57fd                	li	a5,-1
    e8844f82:	04f70763          	beq	a4,a5,e8844fd0 <_AsyncConnection_Connect+0x8e>
		connection->timerSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, connection->handlerQueue );
    e8844f86:	6cb4                	ld	a3,88(s1)
    e8844f88:	4601                	li	a2,0
    e8844f8a:	4581                	li	a1,0
    e8844f8c:	4509                	li	a0,2
    e8844f8e:	621090ef          	jal	ra,e884edae <dispatch_source_create>
    e8844f92:	fc88                	sd	a0,56(s1)
		require_action( connection->timerSource, exit, err = kUnknownErr );
    e8844f94:	0c050c63          	beqz	a0,e884506c <_AsyncConnection_Connect+0x12a>
		dispatch_set_context( connection->timerSource, connection );
    e8844f98:	85a6                	mv	a1,s1
    e8844f9a:	483090ef          	jal	ra,e884ec1c <dispatch_set_context>
		dispatch_source_set_event_handler_f( connection->timerSource, _AsyncConnection_TimeoutHandler );
    e8844f9e:	7c88                	ld	a0,56(s1)
    e8844fa0:	fffff597          	auipc	a1,0xfffff
    e8844fa4:	1fc58593          	addi	a1,a1,508 # e884419c <_AsyncConnection_TimeoutHandler>
    e8844fa8:	6c3090ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
		dispatch_source_set_timer( connection->timerSource, dispatch_time( DISPATCH_TIME_NOW, (int64_t) connection->timeoutNanos ), 
    e8844fac:	0384b903          	ld	s2,56(s1)
    e8844fb0:	708c                	ld	a1,32(s1)
    e8844fb2:	4501                	li	a0,0
    e8844fb4:	7a1090ef          	jal	ra,e884ef54 <dispatch_time>
    e8844fb8:	85aa                	mv	a1,a0
    e8844fba:	05f5e6b7          	lui	a3,0x5f5e
    e8844fbe:	854a                	mv	a0,s2
    e8844fc0:	10068693          	addi	a3,a3,256 # 5f5e100 <memcmp-0xe28a1f00>
    e8844fc4:	567d                	li	a2,-1
    e8844fc6:	4030a0ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
		dispatch_resume( connection->timerSource );
    e8844fca:	7c88                	ld	a0,56(s1)
    e8844fcc:	32b0a0ef          	jal	ra,e884faf6 <dispatch_resume>
	if( err ) _AsyncConnection_Complete( connection, kInvalidSocketRef, err );
    e8844fd0:	c411                	beqz	s0,e8844fdc <_AsyncConnection_Connect+0x9a>
    e8844fd2:	8622                	mv	a2,s0
    e8844fd4:	55fd                	li	a1,-1
    e8844fd6:	8526                	mv	a0,s1
    e8844fd8:	984ff0ef          	jal	ra,e884415c <_AsyncConnection_Complete>
}
    e8844fdc:	70ae                	ld	ra,232(sp)
    e8844fde:	740e                	ld	s0,224(sp)
    e8844fe0:	64ee                	ld	s1,216(sp)
    e8844fe2:	694e                	ld	s2,208(sp)
    e8844fe4:	69ae                	ld	s3,200(sp)
    e8844fe6:	6a0e                	ld	s4,192(sp)
    e8844fe8:	7aea                	ld	s5,184(sp)
    e8844fea:	616d                	addi	sp,sp,240
    e8844fec:	8082                	ret
		ptr2 = strchr( ptr, ':' );
    e8844fee:	03a00593          	li	a1,58
    e8844ff2:	37a370ef          	jal	ra,e887c36c <eLIBs_strchr>
		if( ptr2 && ( ptr2[ 1 ] == '/' ) && ( ptr2[ 2 ] == '/' ) ) // If it looks like a URL.
    e8844ff6:	c505                	beqz	a0,e884501e <_AsyncConnection_Connect+0xdc>
    e8844ff8:	00154703          	lbu	a4,1(a0)
    e8844ffc:	03371163          	bne	a4,s3,e884501e <_AsyncConnection_Connect+0xdc>
    e8845000:	00254783          	lbu	a5,2(a0)
    e8845004:	01379d63          	bne	a5,s3,e884501e <_AsyncConnection_Connect+0xdc>
			err = URLParseComponents( ptr2, NULL, &urlComps, NULL );
    e8845008:	4681                	li	a3,0
    e884500a:	1810                	addi	a2,sp,48
    e884500c:	4581                	li	a1,0
    e884500e:	6941c0ef          	jal	ra,e88616a2 <URLParseComponents>
    e8845012:	842a                	mv	s0,a0
			require_noerr( err, exit );
    e8845014:	fd5d                	bnez	a0,e8844fd2 <_AsyncConnection_Connect+0x90>
			ptr = (char *) urlComps.hostPtr;
    e8845016:	7906                	ld	s2,96(sp)
			ptr[ urlComps.hostLen ] = '\0';
    e8845018:	77a6                	ld	a5,104(sp)
    e884501a:	00f9500b          	srb	zero,s2,a5,0
		if( *ptr == '\0' ) continue;
    e884501e:	00094783          	lbu	a5,0(s2)
    e8845022:	dba1                	beqz	a5,e8844f72 <_AsyncConnection_Connect+0x30>
		err = StringToSockAddr( ptr, &sip, sizeof( sip ), NULL );
    e8845024:	4681                	li	a3,0
    e8845026:	4671                	li	a2,28
    e8845028:	080c                	addi	a1,sp,16
    e884502a:	854a                	mv	a0,s2
    e884502c:	4d8110ef          	jal	ra,e8856504 <StringToSockAddr>
		if( !err )
    e8845030:	ed01                	bnez	a0,e8845048 <_AsyncConnection_Connect+0x106>
				err = _AsyncConnection_StartConnect( connection, NULL, &sip, 0, connection->defaultPort );
    e8845032:	4898                	lw	a4,16(s1)
    e8845034:	4681                	li	a3,0
    e8845036:	0810                	addi	a2,sp,16
    e8845038:	4581                	li	a1,0
    e884503a:	8526                	mv	a0,s1
    e884503c:	cb5ff0ef          	jal	ra,e8844cf0 <_AsyncConnection_StartConnect>
    e8845040:	842a                	mv	s0,a0
				require_noerr_quiet( err, exit );
    e8845042:	f941                	bnez	a0,e8844fd2 <_AsyncConnection_Connect+0x90>
    e8845044:	4401                	li	s0,0
    e8845046:	b735                	j	e8844f72 <_AsyncConnection_Connect+0x30>
		else if( strcasestr( ptr, "._tcp." ) )
    e8845048:	85d6                	mv	a1,s5
    e884504a:	854a                	mv	a0,s2
    e884504c:	2b31a0ef          	jal	ra,e885fafe <strcasestr>
    e8845050:	4894                	lw	a3,16(s1)
    e8845052:	c519                	beqz	a0,e8845060 <_AsyncConnection_Connect+0x11e>
			err = _AsyncConnection_StartSRVQuery( connection, ptr, connection->defaultPort );
    e8845054:	8636                	mv	a2,a3
    e8845056:	85ca                	mv	a1,s2
    e8845058:	8526                	mv	a0,s1
    e884505a:	8a7ff0ef          	jal	ra,e8844900 <_AsyncConnection_StartSRVQuery>
    e884505e:	b7cd                	j	e8845040 <_AsyncConnection_Connect+0xfe>
			err = _AsyncConnection_StartDNSResolve( connection, NULL, ptr, connection->defaultPort );
    e8845060:	864a                	mv	a2,s2
    e8845062:	4581                	li	a1,0
    e8845064:	8526                	mv	a0,s1
    e8845066:	d5aff0ef          	jal	ra,e88445c0 <_AsyncConnection_StartDNSResolve>
    e884506a:	bfd9                	j	e8845040 <_AsyncConnection_Connect+0xfe>
		require_action( connection->timerSource, exit, err = kUnknownErr );
    e884506c:	7479                	lui	s0,0xffffe
    e884506e:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8845072:	b785                	j	e8844fd2 <_AsyncConnection_Connect+0x90>

00000000e8845074 <AsyncConnection_ConnectEx>:
	require_action( *inParams->destination != '\0', exit, err = kParamErr );
    e8845074:	619c                	ld	a5,0(a1)
    e8845076:	0007c783          	lbu	a5,0(a5)
    e884507a:	cbd9                	beqz	a5,e8845110 <AsyncConnection_ConnectEx+0x9c>
{
    e884507c:	1101                	addi	sp,sp,-32
    e884507e:	e84a                	sd	s2,16(sp)
    e8845080:	892a                	mv	s2,a0
	obj = (AsyncConnectionRef) calloc( 1, sizeof( *obj ) );
    e8845082:	07800513          	li	a0,120
{
    e8845086:	f891540b          	sdd	s0,s1,(sp),0,4
    e884508a:	ec06                	sd	ra,24(sp)
    e884508c:	84ae                	mv	s1,a1
	obj = (AsyncConnectionRef) calloc( 1, sizeof( *obj ) );
    e884508e:	d12ff0ef          	jal	ra,e88445a0 <calloc.constprop.5>
    e8845092:	842a                	mv	s0,a0
	require_action( obj, exit, err = kNoMemoryErr );
    e8845094:	c549                	beqz	a0,e884511e <AsyncConnection_ConnectEx+0xaa>
	obj->refCount = 1;
    e8845096:	4785                	li	a5,1
    e8845098:	c11c                	sw	a5,0(a0)
	obj->destination = strdup( inParams->destination );
    e884509a:	6088                	ld	a0,0(s1)
    e884509c:	76c1a0ef          	jal	ra,e885f808 <strdup>
    e88450a0:	e408                	sd	a0,8(s0)
	require_action( obj->destination, exit, err = kNoMemoryErr );
    e88450a2:	c93d                	beqz	a0,e8845118 <AsyncConnection_ConnectEx+0xa4>
	obj->defaultPort			= inParams->defaultPort;
    e88450a4:	449c                	lw	a5,8(s1)
    e88450a6:	c81c                	sw	a5,16(s0)
	obj->flags					= inParams->flags;
    e88450a8:	44dc                	lw	a5,12(s1)
    e88450aa:	c85c                	sw	a5,20(s0)
	obj->timeoutNanos			= ( inParams->timeoutNanos != 0 ) ? inParams->timeoutNanos : DISPATCH_TIME_FOREVER;
    e88450ac:	689c                	ld	a5,16(s1)
    e88450ae:	e391                	bnez	a5,e88450b2 <AsyncConnection_ConnectEx+0x3e>
    e88450b0:	57fd                	li	a5,-1
    e88450b2:	f01c                	sd	a5,32(s0)
	obj->ipv6DelayNanos			= inParams->ipv6DelayNanos;
    e88450b4:	68bc                	ld	a5,80(s1)
    e88450b6:	ec1c                	sd	a5,24(s0)
	obj->startTime				= CFAbsoluteTimeGetCurrent();
    e88450b8:	1be060ef          	jal	ra,e884b276 <CFAbsoluteTimeGetCurrent>
    e88450bc:	b808                	fsd	fa0,48(s0)
	obj->socketSendBufferSize	= inParams->socketSendBufferSize;
    e88450be:	4c9c                	lw	a5,24(s1)
    e88450c0:	d41c                	sw	a5,40(s0)
	obj->socketRecvBufferSize	= inParams->socketRecvBufferSize;
    e88450c2:	4cdc                	lw	a5,28(s1)
    e88450c4:	d45c                	sw	a5,44(s0)
	obj->progressFunc			= inParams->progressFunc;
    e88450c6:	709c                	ld	a5,32(s1)
    e88450c8:	e43c                	sd	a5,72(s0)
	obj->progressArg			= inParams->progressArg;
    e88450ca:	749c                	ld	a5,40(s1)
    e88450cc:	e83c                	sd	a5,80(s0)
	obj->ucat					= inParams->logCategory ? inParams->logCategory : ac_ucat();
    e88450ce:	64bc                	ld	a5,72(s1)
    e88450d0:	e789                	bnez	a5,e88450da <AsyncConnection_ConnectEx+0x66>
    e88450d2:	00090797          	auipc	a5,0x90
    e88450d6:	aa678793          	addi	a5,a5,-1370 # e88d4b78 <gLogCategory_AsyncConnection>
    e88450da:	f83c                	sd	a5,112(s0)
	obj->handlerQueue			= inParams->handlerQueue;
    e88450dc:	60bc                	ld	a5,64(s1)
    e88450de:	ec3c                	sd	a5,88(s0)
	obj->handlerFunc			= inParams->handlerFunc;
    e88450e0:	789c                	ld	a5,48(s1)
    e88450e2:	f03c                	sd	a5,96(s0)
	obj->handlerArg				= inParams->handlerArg;
    e88450e4:	7c9c                	ld	a5,56(s1)
    e88450e6:	f43c                	sd	a5,104(s0)
	arc_safe_dispatch_retain( inParams->handlerQueue );
    e88450e8:	60a8                	ld	a0,64(s1)
    e88450ea:	15b090ef          	jal	ra,e884ea44 <dispatch_retain>
	dispatch_async_f( inParams->handlerQueue, obj, _AsyncConnection_Connect );
    e88450ee:	60a8                	ld	a0,64(s1)
    e88450f0:	00000617          	auipc	a2,0x0
    e88450f4:	e5260613          	addi	a2,a2,-430 # e8844f42 <_AsyncConnection_Connect>
    e88450f8:	85a2                	mv	a1,s0
    e88450fa:	327090ef          	jal	ra,e884ec20 <dispatch_async_f>
	*outConnection = obj;
    e88450fe:	00893023          	sd	s0,0(s2)
	err = kNoErr;
    e8845102:	4501                	li	a0,0
}
    e8845104:	60e2                	ld	ra,24(sp)
    e8845106:	f891440b          	ldd	s0,s1,(sp),0,4
    e884510a:	6942                	ld	s2,16(sp)
    e884510c:	6105                	addi	sp,sp,32
    e884510e:	8082                	ret
	require_action( *inParams->destination != '\0', exit, err = kParamErr );
    e8845110:	7579                	lui	a0,0xffffe
    e8845112:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e8845116:	8082                	ret
	if( obj ) _AsyncConnection_Release( obj );
    e8845118:	8522                	mv	a0,s0
    e884511a:	f79fe0ef          	jal	ra,e8844092 <_AsyncConnection_Release>
    e884511e:	7579                	lui	a0,0xffffe
    e8845120:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	return( err );
    e8845124:	b7c5                	j	e8845104 <AsyncConnection_ConnectEx+0x90>

00000000e8845126 <AsyncConnection_Release>:
{
    e8845126:	85aa                	mv	a1,a0
	dispatch_async_f( inConnection->handlerQueue, inConnection, _AsyncConnection_UserRelease );
    e8845128:	6d28                	ld	a0,88(a0)
    e884512a:	fffff617          	auipc	a2,0xfffff
    e884512e:	22660613          	addi	a2,a2,550 # e8844350 <_AsyncConnection_UserRelease>
    e8845132:	2ef0906f          	j	e884ec20 <dispatch_async_f>

00000000e8845136 <atomic_add_and_fetch_32>:
//===========================================================================================================================
//	atomic_add_and_fetch_32
//===========================================================================================================================

int32_t	atomic_add_and_fetch_32( int32_t *inPtr, int32_t inVal )
{
    e8845136:	7179                	addi	sp,sp,-48
    e8845138:	fa91540b          	sdd	s0,s1,(sp),1,4
	int32_t		tmp;
	
	pthread_mutex_lock( &gAtomicMutex );
    e884513c:	00090417          	auipc	s0,0x90
    e8845140:	a9c40413          	addi	s0,s0,-1380 # e88d4bd8 <gAtomicMutex>
{
    e8845144:	84aa                	mv	s1,a0
	pthread_mutex_lock( &gAtomicMutex );
    e8845146:	8522                	mv	a0,s0
{
    e8845148:	f406                	sd	ra,40(sp)
    e884514a:	f04a                	sd	s2,32(sp)
    e884514c:	e42e                	sd	a1,8(sp)
	pthread_mutex_lock( &gAtomicMutex );
    e884514e:	1d1360ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	*inPtr += inVal;
    e8845152:	409c                	lw	a5,0(s1)
    e8845154:	65a2                	ld	a1,8(sp)
	tmp = *inPtr;
	pthread_mutex_unlock( &gAtomicMutex );
    e8845156:	8522                	mv	a0,s0
	*inPtr += inVal;
    e8845158:	00b7893b          	addw	s2,a5,a1
    e884515c:	0124a023          	sw	s2,0(s1)
	pthread_mutex_unlock( &gAtomicMutex );
    e8845160:	203360ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	return( tmp );
}
    e8845164:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8845168:	70a2                	ld	ra,40(sp)
    e884516a:	854a                	mv	a0,s2
    e884516c:	7902                	ld	s2,32(sp)
    e884516e:	6145                	addi	sp,sp,48
    e8845170:	8082                	ret

00000000e8845172 <atomic_bool_compare_and_swap_32>:
	pthread_mutex_unlock( &gAtomicMutex );
	return( tmp );
}

Boolean	atomic_bool_compare_and_swap_32( int32_t *inPtr, int32_t inOldValue, int32_t inNewValue )
{
    e8845172:	1101                	addi	sp,sp,-32
    e8845174:	e822                	sd	s0,16(sp)
    e8845176:	842a                	mv	s0,a0
	Boolean tmp = 0;
	pthread_mutex_lock( &gAtomicMutex );
    e8845178:	00090517          	auipc	a0,0x90
    e884517c:	a6050513          	addi	a0,a0,-1440 # e88d4bd8 <gAtomicMutex>
{
    e8845180:	e42e                	sd	a1,8(sp)
    e8845182:	e032                	sd	a2,0(sp)
    e8845184:	ec06                	sd	ra,24(sp)
	pthread_mutex_lock( &gAtomicMutex );
    e8845186:	199360ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if(*inPtr == inOldValue)
    e884518a:	401c                	lw	a5,0(s0)
    e884518c:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e8845190:	00b79f63          	bne	a5,a1,e88451ae <atomic_bool_compare_and_swap_32+0x3c>
	{
		*inPtr = inNewValue;
    e8845194:	c010                	sw	a2,0(s0)
		tmp = 1;
    e8845196:	4405                	li	s0,1
	}
	pthread_mutex_unlock( &gAtomicMutex );
    e8845198:	00090517          	auipc	a0,0x90
    e884519c:	a4050513          	addi	a0,a0,-1472 # e88d4bd8 <gAtomicMutex>
    e88451a0:	1c3360ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	return( tmp );
}
    e88451a4:	8522                	mv	a0,s0
    e88451a6:	60e2                	ld	ra,24(sp)
    e88451a8:	6442                	ld	s0,16(sp)
    e88451aa:	6105                	addi	sp,sp,32
    e88451ac:	8082                	ret
	Boolean tmp = 0;
    e88451ae:	4401                	li	s0,0
    e88451b0:	b7e5                	j	e8845198 <atomic_bool_compare_and_swap_32+0x26>

00000000e88451b2 <atomic_read_write_barrier>:

void atomic_read_write_barrier(void)
{
}
    e88451b2:	8082                	ret

00000000e88451b4 <atomic_val_compare_and_swap_32>:

int32_t	atomic_val_compare_and_swap_32( int32_t *inPtr, int32_t inOldValue, int32_t inNewValue )
{
    e88451b4:	7179                	addi	sp,sp,-48
    e88451b6:	f026                	sd	s1,32(sp)
    e88451b8:	84aa                	mv	s1,a0
	int32_t		tmp;
	pthread_mutex_lock( &gAtomicMutex );
    e88451ba:	00090517          	auipc	a0,0x90
    e88451be:	a1e50513          	addi	a0,a0,-1506 # e88d4bd8 <gAtomicMutex>
{
    e88451c2:	ec22                	sd	s0,24(sp)
    e88451c4:	e42e                	sd	a1,8(sp)
    e88451c6:	e032                	sd	a2,0(sp)
    e88451c8:	f406                	sd	ra,40(sp)
	pthread_mutex_lock( &gAtomicMutex );
    e88451ca:	155360ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( *inPtr == inOldValue )
    e88451ce:	4080                	lw	s0,0(s1)
    e88451d0:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e88451d4:	00b41363          	bne	s0,a1,e88451da <atomic_val_compare_and_swap_32+0x26>
	{ 
		*inPtr = inNewValue;
    e88451d8:	c090                	sw	a2,0(s1)
	}
	else
	{
		tmp = *inPtr;
	}
	pthread_mutex_unlock( &gAtomicMutex );
    e88451da:	00090517          	auipc	a0,0x90
    e88451de:	9fe50513          	addi	a0,a0,-1538 # e88d4bd8 <gAtomicMutex>
    e88451e2:	181360ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	return( tmp );
}
    e88451e6:	7482                	ld	s1,32(sp)
    e88451e8:	8522                	mv	a0,s0
    e88451ea:	70a2                	ld	ra,40(sp)
    e88451ec:	6462                	ld	s0,24(sp)
    e88451ee:	6145                	addi	sp,sp,48
    e88451f0:	8082                	ret

00000000e88451f2 <atomic_fetch_and_or_32>:

int32_t	atomic_fetch_and_or_32( int32_t *inPtr, int32_t inVal )
{
    e88451f2:	7179                	addi	sp,sp,-48
    e88451f4:	fa91540b          	sdd	s0,s1,(sp),1,4
	int32_t		tmp;
	
	pthread_mutex_lock( &gAtomicMutex );
    e88451f8:	00090497          	auipc	s1,0x90
    e88451fc:	9e048493          	addi	s1,s1,-1568 # e88d4bd8 <gAtomicMutex>
{
    e8845200:	f04a                	sd	s2,32(sp)
    e8845202:	892a                	mv	s2,a0
	pthread_mutex_lock( &gAtomicMutex );
    e8845204:	8526                	mv	a0,s1
{
    e8845206:	f406                	sd	ra,40(sp)
    e8845208:	e42e                	sd	a1,8(sp)
	pthread_mutex_lock( &gAtomicMutex );
    e884520a:	115360ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	tmp = *inPtr;
    e884520e:	00092403          	lw	s0,0(s2)
	*inPtr |= inVal;
    e8845212:	65a2                	ld	a1,8(sp)
	pthread_mutex_unlock( &gAtomicMutex );
    e8845214:	8526                	mv	a0,s1
	*inPtr |= inVal;
    e8845216:	8dc1                	or	a1,a1,s0
    e8845218:	00b92023          	sw	a1,0(s2)
	pthread_mutex_unlock( &gAtomicMutex );
    e884521c:	147360ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	return( tmp );
}
    e8845220:	7902                	ld	s2,32(sp)
    e8845222:	8522                	mv	a0,s0
    e8845224:	70a2                	ld	ra,40(sp)
    e8845226:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884522a:	6145                	addi	sp,sp,48
    e884522c:	8082                	ret

00000000e884522e <atomic_fetch_and_and_32>:

int32_t	atomic_fetch_and_and_32( int32_t *inPtr, int32_t inVal )
{
    e884522e:	7179                	addi	sp,sp,-48
    e8845230:	fa91540b          	sdd	s0,s1,(sp),1,4
	int32_t		tmp;
	
	pthread_mutex_lock( &gAtomicMutex );
    e8845234:	00090497          	auipc	s1,0x90
    e8845238:	9a448493          	addi	s1,s1,-1628 # e88d4bd8 <gAtomicMutex>
{
    e884523c:	f04a                	sd	s2,32(sp)
    e884523e:	892a                	mv	s2,a0
	pthread_mutex_lock( &gAtomicMutex );
    e8845240:	8526                	mv	a0,s1
{
    e8845242:	f406                	sd	ra,40(sp)
    e8845244:	e42e                	sd	a1,8(sp)
	pthread_mutex_lock( &gAtomicMutex );
    e8845246:	0d9360ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	tmp = *inPtr;
    e884524a:	00092403          	lw	s0,0(s2)
	*inPtr *= inVal;
    e884524e:	65a2                	ld	a1,8(sp)
	pthread_mutex_unlock( &gAtomicMutex );
    e8845250:	8526                	mv	a0,s1
	*inPtr *= inVal;
    e8845252:	02b405bb          	mulw	a1,s0,a1
    e8845256:	00b92023          	sw	a1,0(s2)
	pthread_mutex_unlock( &gAtomicMutex );
    e884525a:	109360ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	return( tmp );
}
    e884525e:	7902                	ld	s2,32(sp)
    e8845260:	8522                	mv	a0,s0
    e8845262:	70a2                	ld	ra,40(sp)
    e8845264:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8845268:	6145                	addi	sp,sp,48
    e884526a:	8082                	ret

00000000e884526c <_BonjourBrowserGetTypeID>:
	dispatch_once_f( &gBonjourBrowserInitOnce, NULL, _BonjourBrowserGetTypeID );
	return( gBonjourBrowserTypeID );
}

static void _BonjourBrowserGetTypeID( void *inContext )
{
    e884526c:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gBonjourBrowserTypeID = _CFRuntimeRegisterClass( &kBonjourBrowserClass );
    e884526e:	00079517          	auipc	a0,0x79
    e8845272:	22a50513          	addi	a0,a0,554 # e88be498 <kBonjourBrowserClass>
{
    e8845276:	e406                	sd	ra,8(sp)
	gBonjourBrowserTypeID = _CFRuntimeRegisterClass( &kBonjourBrowserClass );
    e8845278:	4d6020ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e884527c:	0009f797          	auipc	a5,0x9f
    e8845280:	90a7a823          	sw	a0,-1776(a5) # e88e3b8c <gBonjourBrowserTypeID>
	check( gBonjourBrowserTypeID != _kCFRuntimeNotATypeID );
}
    e8845284:	60a2                	ld	ra,8(sp)
    e8845286:	0141                	addi	sp,sp,16
    e8845288:	8082                	ret

00000000e884528a <_BonjourBrowser_RetryTimerCanceled>:

static void	_BonjourBrowser_RetryTimerCanceled( void *inArg )
{
	BonjourBrowserRef const		me = (BonjourBrowserRef) inArg;
	
	CFRelease( me );
    e884528a:	6c10106f          	j	e884714a <CFRelease>

00000000e884528e <_BonjourBrowser_PostEventOnEventQueue>:
{
    e884528e:	1141                	addi	sp,sp,-16
    e8845290:	e022                	sd	s0,0(sp)
    e8845292:	e406                	sd	ra,8(sp)
    e8845294:	842a                	mv	s0,a0
	params->eventHandler_f( params->eventType, params->deviceInfo, params->eventHandler_ctx );
    e8845296:	f8c5478b          	ldd	a5,a2,(a0),0,4
    e884529a:	6d0c                	ld	a1,24(a0)
    e884529c:	4908                	lw	a0,16(a0)
    e884529e:	9782                	jalr	a5
	CFReleaseNullSafe( params->deviceInfo );
    e88452a0:	6c08                	ld	a0,24(s0)
    e88452a2:	c119                	beqz	a0,e88452a8 <_BonjourBrowser_PostEventOnEventQueue+0x1a>
    e88452a4:	6a7010ef          	jal	ra,e884714a <CFRelease>
	free( params );
    e88452a8:	8522                	mv	a0,s0
}
    e88452aa:	6402                	ld	s0,0(sp)
    e88452ac:	60a2                	ld	ra,8(sp)
    e88452ae:	0141                	addi	sp,sp,16
	free( params );
    e88452b0:	0503706f          	j	e887c300 <eLIBs_free>

00000000e88452b4 <_BonjourService_Free>:
//===========================================================================================================================
//	_BonjourService_Free
//===========================================================================================================================

static void	_BonjourService_Free( BonjourServiceRef inService )
{
    e88452b4:	1141                	addi	sp,sp,-16
    e88452b6:	e022                	sd	s0,0(sp)
    e88452b8:	e406                	sd	ra,8(sp)
    e88452ba:	842a                	mv	s0,a0
	BonjourRDataRef		rdata;
	
	ForgetMem( &inService->name );
    e88452bc:	6d08                	ld	a0,24(a0)
    e88452be:	c509                	beqz	a0,e88452c8 <_BonjourService_Free+0x14>
    e88452c0:	040370ef          	jal	ra,e887c300 <eLIBs_free>
    e88452c4:	00043c23          	sd	zero,24(s0)
	ForgetMem( &inService->type );
    e88452c8:	7008                	ld	a0,32(s0)
    e88452ca:	c509                	beqz	a0,e88452d4 <_BonjourService_Free+0x20>
    e88452cc:	034370ef          	jal	ra,e887c300 <eLIBs_free>
    e88452d0:	02043023          	sd	zero,32(s0)
	ForgetMem( &inService->domain );
    e88452d4:	7408                	ld	a0,40(s0)
    e88452d6:	c509                	beqz	a0,e88452e0 <_BonjourService_Free+0x2c>
    e88452d8:	028370ef          	jal	ra,e887c300 <eLIBs_free>
    e88452dc:	02043423          	sd	zero,40(s0)
	DNSServiceForget( &inService->txtQueryRef );
    e88452e0:	6428                	ld	a0,72(s0)
    e88452e2:	c509                	beqz	a0,e88452ec <_BonjourService_Free+0x38>
    e88452e4:	9fdd50ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    e88452e8:	04043423          	sd	zero,72(s0)
	while( ( rdata = inService->txtRDataList ) != NULL )
    e88452ec:	6828                	ld	a0,80(s0)
    e88452ee:	e519                	bnez	a0,e88452fc <_BonjourService_Free+0x48>
	{
		inService->txtRDataList = rdata->next;
		free( rdata );
	}
	free( inService );
    e88452f0:	8522                	mv	a0,s0
}
    e88452f2:	6402                	ld	s0,0(sp)
    e88452f4:	60a2                	ld	ra,8(sp)
    e88452f6:	0141                	addi	sp,sp,16
	free( inService );
    e88452f8:	0083706f          	j	e887c300 <eLIBs_free>
		inService->txtRDataList = rdata->next;
    e88452fc:	611c                	ld	a5,0(a0)
    e88452fe:	e83c                	sd	a5,80(s0)
		free( rdata );
    e8845300:	000370ef          	jal	ra,e887c300 <eLIBs_free>
    e8845304:	b7e5                	j	e88452ec <_BonjourService_Free+0x38>

00000000e8845306 <_BonjourService_StartTXTQuery>:
//===========================================================================================================================
//	_BonjourService_StartTXTQuery
//===========================================================================================================================

static OSStatus	_BonjourService_StartTXTQuery( BonjourServiceRef inService )
{
    e8845306:	bf010113          	addi	sp,sp,-1040
    e884530a:	40813023          	sd	s0,1024(sp)
    e884530e:	40113423          	sd	ra,1032(sp)
	OSStatus			err;
	char				fullName[ kDNSServiceMaxDomainName ];
	DNSServiceRef		service;
	
	err = DNSServiceConstructFullName( fullName, inService->name, inService->type, inService->domain );
    e8845312:	7514                	ld	a3,40(a0)
    e8845314:	7110                	ld	a2,32(a0)
    e8845316:	6d0c                	ld	a1,24(a0)
{
    e8845318:	842a                	mv	s0,a0
	err = DNSServiceConstructFullName( fullName, inService->name, inService->type, inService->domain );
    e884531a:	0028                	addi	a0,sp,8
    e884531c:	8f0d50ef          	jal	ra,e881a40c <DNSServiceConstructFullName>
	require_noerr( err, exit );
    e8845320:	e11d                	bnez	a0,e8845346 <_BonjourService_StartTXTQuery+0x40>
	service = inService->browser->connectionRef;
#else
	//require_action( inService->browser->connectionCtx, exit, err = kNotPreparedErr );
	service = 0;
#endif
	err = DNSServiceQueryRecord( &service, kDNSServiceFlagsShareConnection | kDNSServiceFlagsUnicastResponse_compat, 
    e8845322:	5810                	lw	a2,48(s0)
    e8845324:	88a2                	mv	a7,s0
    e8845326:	00001817          	auipc	a6,0x1
    e884532a:	ac680813          	addi	a6,a6,-1338 # e8845dec <_BonjourService_TXTHandler>
    e884532e:	4785                	li	a5,1
    e8845330:	4741                	li	a4,16
    e8845332:	0034                	addi	a3,sp,8
    e8845334:	004045b7          	lui	a1,0x404
    e8845338:	850a                	mv	a0,sp
	service = 0;
    e884533a:	e002                	sd	zero,0(sp)
	err = DNSServiceQueryRecord( &service, kDNSServiceFlagsShareConnection | kDNSServiceFlagsUnicastResponse_compat, 
    e884533c:	850d60ef          	jal	ra,e881b38c <DNSServiceQueryRecord>
		inService->ifindex, fullName, kDNSServiceType_TXT, kDNSServiceClass_IN, _BonjourService_TXTHandler, inService );
	require_noerr( err, exit );
    e8845340:	e119                	bnez	a0,e8845346 <_BonjourService_StartTXTQuery+0x40>
	inService->txtQueryRef = service;
    e8845342:	6782                	ld	a5,0(sp)
    e8845344:	e43c                	sd	a5,72(s0)
	
exit:
	return( err );
}
    e8845346:	40813083          	ld	ra,1032(sp)
    e884534a:	40013403          	ld	s0,1024(sp)
    e884534e:	41010113          	addi	sp,sp,1040
    e8845352:	8082                	ret

00000000e8845354 <_BonjourService_CreateDictionary>:
//===========================================================================================================================
//	_BonjourService_CreateDictionary
//===========================================================================================================================

static CFDictionaryRef	_BonjourService_CreateDictionary( BonjourServiceRef inService, OSStatus *outErr )
{
    e8845354:	b9010113          	addi	sp,sp,-1136
    e8845358:	44913c23          	sd	s1,1112(sp)
    e884535c:	45313423          	sd	s3,1096(sp)
    e8845360:	84aa                	mv	s1,a0
    e8845362:	89ae                	mv	s3,a1
	OSStatus					err;
	CFMutableDictionaryRef		serviceDict = NULL;
	char						fullName[ kDNSServiceMaxDomainName + 64 ];
	size_t						len;
	
	serviceDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8845364:	00079697          	auipc	a3,0x79
    e8845368:	46468693          	addi	a3,a3,1124 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884536c:	00079617          	auipc	a2,0x79
    e8845370:	42c60613          	addi	a2,a2,1068 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8845374:	4581                	li	a1,0
    e8845376:	4501                	li	a0,0
{
    e8845378:	46813023          	sd	s0,1120(sp)
    e884537c:	46113423          	sd	ra,1128(sp)
    e8845380:	45213823          	sd	s2,1104(sp)
	serviceDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8845384:	022020ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8845388:	842a                	mv	s0,a0
	require_action( serviceDict, exit, err = kNoMemoryErr );
    e884538a:	10050163          	beqz	a0,e884548c <_BonjourService_CreateDictionary+0x138>
		
	// DNSName
	
	err = DNSServiceConstructFullNameEx( fullName, inService->name, inService->type, inService->domain );
    e884538e:	7494                	ld	a3,40(s1)
    e8845390:	7090                	ld	a2,32(s1)
    e8845392:	6c8c                	ld	a1,24(s1)
    e8845394:	0028                	addi	a0,sp,8
    e8845396:	46b1a0ef          	jal	ra,e8860000 <DNSServiceConstructFullNameEx>
    e884539a:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e884539c:	0e051c63          	bnez	a0,e8845494 <_BonjourService_CreateDictionary+0x140>
	len = strlen( fullName );
    e88453a0:	0028                	addi	a0,sp,8
    e88453a2:	777360ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88453a6:	7c05350b          	extu	a0,a0,31,0
	snprintf( &fullName[ len ], sizeof( fullName ) - len, "%%%u", inService->ifindex );
    e88453aa:	5894                	lw	a3,48(s1)
    e88453ac:	003c                	addi	a5,sp,8
    e88453ae:	43100593          	li	a1,1073
    e88453b2:	8d89                	sub	a1,a1,a0
    e88453b4:	00079617          	auipc	a2,0x79
    e88453b8:	81c60613          	addi	a2,a2,-2020 # e88bdbd0 <kSRPHashDescriptor_SHA512+0x1c0>
    e88453bc:	953e                	add	a0,a0,a5
    e88453be:	693360ef          	jal	ra,e887c250 <eLIBs_snprintf>
	CFDictionarySetCString( serviceDict, CFSTR( kBonjourDeviceKey_DNSName ), fullName, kSizeCString );
    e88453c2:	56fd                	li	a3,-1
    e88453c4:	0030                	addi	a2,sp,8
    e88453c6:	00058597          	auipc	a1,0x58
    e88453ca:	cea58593          	addi	a1,a1,-790 # e889d0b0 <icmp6_param_problem+0x42>
    e88453ce:	8522                	mv	a0,s0
    e88453d0:	6b3060ef          	jal	ra,e884c282 <CFDictionarySetCString>
	
	// Domain
	
	CFDictionarySetCString( serviceDict, CFSTR( kBonjourDeviceKey_Domain ), inService->domain, kSizeCString );
    e88453d4:	7490                	ld	a2,40(s1)
    e88453d6:	56fd                	li	a3,-1
    e88453d8:	00058597          	auipc	a1,0x58
    e88453dc:	ce858593          	addi	a1,a1,-792 # e889d0c0 <icmp6_param_problem+0x52>
    e88453e0:	8522                	mv	a0,s0
    e88453e2:	6a1060ef          	jal	ra,e884c282 <CFDictionarySetCString>
	
	// InterfaceIndex
	
	CFDictionarySetInt64( serviceDict, CFSTR( kBonjourDeviceKey_InterfaceIndex ), inService->ifindex );
    e88453e6:	0304e603          	lwu	a2,48(s1)
    e88453ea:	00058597          	auipc	a1,0x58
    e88453ee:	ce658593          	addi	a1,a1,-794 # e889d0d0 <icmp6_param_problem+0x62>
    e88453f2:	8522                	mv	a0,s0
    e88453f4:	2d3070ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	
	// InterfaceName
	
	CFDictionarySetCString( serviceDict, CFSTR( kBonjourDeviceKey_InterfaceName ), inService->ifname, kSizeCString );
    e88453f8:	56fd                	li	a3,-1
    e88453fa:	03448613          	addi	a2,s1,52
    e88453fe:	00058597          	auipc	a1,0x58
    e8845402:	ce258593          	addi	a1,a1,-798 # e889d0e0 <icmp6_param_problem+0x72>
    e8845406:	8522                	mv	a0,s0
    e8845408:	67b060ef          	jal	ra,e884c282 <CFDictionarySetCString>
	
	// P2P
	
	if( inService->isP2P ) CFDictionarySetValue( serviceDict, CFSTR( kBonjourDeviceKey_P2P ), kCFBooleanTrue );
    e884540c:	03b4c783          	lbu	a5,59(s1)
    e8845410:	cf89                	beqz	a5,e884542a <_BonjourService_CreateDictionary+0xd6>
    e8845412:	00090797          	auipc	a5,0x90
    e8845416:	8be78793          	addi	a5,a5,-1858 # e88d4cd0 <kCFLBooleanTrue>
    e884541a:	6390                	ld	a2,0(a5)
    e884541c:	00058597          	auipc	a1,0x58
    e8845420:	cd458593          	addi	a1,a1,-812 # e889d0f0 <icmp6_param_problem+0x82>
    e8845424:	8522                	mv	a0,s0
    e8845426:	02c020ef          	jal	ra,e8847452 <CFDictionarySetValue>
	
	// RawName
	
	CFDictionarySetCString( serviceDict, CFSTR( kBonjourDeviceKey_RawName ), inService->name, kSizeCString );
    e884542a:	6c90                	ld	a2,24(s1)
    e884542c:	56fd                	li	a3,-1
    e884542e:	00058597          	auipc	a1,0x58
    e8845432:	cd258593          	addi	a1,a1,-814 # e889d100 <icmp6_param_problem+0x92>
    e8845436:	8522                	mv	a0,s0
    e8845438:	64b060ef          	jal	ra,e884c282 <CFDictionarySetCString>
	
	// TransportType
	
	CFDictionarySetInt64( serviceDict, CFSTR( kBonjourDeviceKey_TransportType ), inService->transportType );
    e884543c:	0404e603          	lwu	a2,64(s1)
    e8845440:	00058597          	auipc	a1,0x58
    e8845444:	cd058593          	addi	a1,a1,-816 # e889d110 <icmp6_param_problem+0xa2>
    e8845448:	8522                	mv	a0,s0
    e884544a:	27d070ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	
	// WiFi
	
	if( inService->isWiFi ) CFDictionarySetValue( serviceDict, CFSTR( kBonjourDeviceKey_WiFi ), kCFBooleanTrue );
    e884544e:	03c4c783          	lbu	a5,60(s1)
    e8845452:	cf89                	beqz	a5,e884546c <_BonjourService_CreateDictionary+0x118>
    e8845454:	00090797          	auipc	a5,0x90
    e8845458:	87c78793          	addi	a5,a5,-1924 # e88d4cd0 <kCFLBooleanTrue>
    e884545c:	6390                	ld	a2,0(a5)
    e884545e:	00058597          	auipc	a1,0x58
    e8845462:	cca58593          	addi	a1,a1,-822 # e889d128 <icmp6_param_problem+0xba>
    e8845466:	8522                	mv	a0,s0
    e8845468:	7eb010ef          	jal	ra,e8847452 <CFDictionarySetValue>
	
exit:
	CFReleaseNullSafe( serviceDict );
	if( outErr ) *outErr = err;
	return( result );
}
    e884546c:	8522                	mv	a0,s0
    e884546e:	46813083          	ld	ra,1128(sp)
    e8845472:	46013403          	ld	s0,1120(sp)
	if( outErr ) *outErr = err;
    e8845476:	0129a023          	sw	s2,0(s3)
}
    e884547a:	45813483          	ld	s1,1112(sp)
    e884547e:	45013903          	ld	s2,1104(sp)
    e8845482:	44813983          	ld	s3,1096(sp)
    e8845486:	47010113          	addi	sp,sp,1136
    e884548a:	8082                	ret
	require_action( serviceDict, exit, err = kNoMemoryErr );
    e884548c:	7979                	lui	s2,0xffffe
    e884548e:	5b890913          	addi	s2,s2,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8845492:	bfe9                	j	e884546c <_BonjourService_CreateDictionary+0x118>
	CFReleaseNullSafe( serviceDict );
    e8845494:	8522                	mv	a0,s0
    e8845496:	4b5010ef          	jal	ra,e884714a <CFRelease>
	CFDictionaryRef				result = NULL;
    e884549a:	4401                	li	s0,0
    e884549c:	bfc1                	j	e884546c <_BonjourService_CreateDictionary+0x118>

00000000e884549e <_BonjourBrowser_ReconfirmDevice>:
{
    e884549e:	a6010113          	addi	sp,sp,-1440
    e88454a2:	58913423          	sd	s1,1416(sp)
    e88454a6:	58113c23          	sd	ra,1432(sp)
    e88454aa:	58813823          	sd	s0,1424(sp)
    e88454ae:	59213023          	sd	s2,1408(sp)
    e88454b2:	57313c23          	sd	s3,1400(sp)
    e88454b6:	57413823          	sd	s4,1392(sp)
    e88454ba:	57513423          	sd	s5,1384(sp)
    e88454be:	57613023          	sd	s6,1376(sp)
    e88454c2:	55713c23          	sd	s7,1368(sp)
    e88454c6:	55813823          	sd	s8,1360(sp)
    e88454ca:	55913423          	sd	s9,1352(sp)
    e88454ce:	55a13023          	sd	s10,1344(sp)
    e88454d2:	84aa                	mv	s1,a0
	BonjourBrowserRef const								browser = params->browser;
    e88454d4:	00053a83          	ld	s5,0(a0)
	CFDictionaryGetCString( params->deviceInfo, CFSTR( kBonjourDeviceKey_DeviceID ), deviceID, sizeof( deviceID ), NULL );
    e88454d8:	6508                	ld	a0,8(a0)
    e88454da:	4701                	li	a4,0
    e88454dc:	04000693          	li	a3,64
    e88454e0:	0030                	addi	a2,sp,8
    e88454e2:	00058597          	auipc	a1,0x58
    e88454e6:	c5658593          	addi	a1,a1,-938 # e889d138 <icmp6_param_problem+0xca>
	*deviceID = '\0';
    e88454ea:	00010423          	sb	zero,8(sp)
	CFDictionaryGetCString( params->deviceInfo, CFSTR( kBonjourDeviceKey_DeviceID ), deviceID, sizeof( deviceID ), NULL );
    e88454ee:	549060ef          	jal	ra,e884c236 <CFDictionaryGetCString>
	require( *deviceID != '\0', exit );
    e88454f2:	00814783          	lbu	a5,8(sp)
    e88454f6:	e7a9                	bnez	a5,e8845540 <_BonjourBrowser_ReconfirmDevice+0xa2>
	CFRelease( params->deviceInfo );
    e88454f8:	6488                	ld	a0,8(s1)
    e88454fa:	451010ef          	jal	ra,e884714a <CFRelease>
	free( params );
    e88454fe:	8526                	mv	a0,s1
    e8845500:	601360ef          	jal	ra,e887c300 <eLIBs_free>
	CFRelease( browser );
    e8845504:	8556                	mv	a0,s5
    e8845506:	445010ef          	jal	ra,e884714a <CFRelease>
}
    e884550a:	59013403          	ld	s0,1424(sp)
    e884550e:	59813083          	ld	ra,1432(sp)
    e8845512:	58813483          	ld	s1,1416(sp)
    e8845516:	58013903          	ld	s2,1408(sp)
    e884551a:	57813983          	ld	s3,1400(sp)
    e884551e:	57013a03          	ld	s4,1392(sp)
    e8845522:	56813a83          	ld	s5,1384(sp)
    e8845526:	56013b03          	ld	s6,1376(sp)
    e884552a:	55813b83          	ld	s7,1368(sp)
    e884552e:	55013c03          	ld	s8,1360(sp)
    e8845532:	54813c83          	ld	s9,1352(sp)
    e8845536:	54013d03          	ld	s10,1344(sp)
    e884553a:	5a010113          	addi	sp,sp,1440
    e884553e:	8082                	ret
	for( device = browser->devices; device; device = device->next )
    e8845540:	030ab403          	ld	s0,48(s5)
    e8845544:	d855                	beqz	s0,e88454f8 <_BonjourBrowser_ReconfirmDevice+0x5a>
		if( stricmp( device->deviceID, deviceID ) == 0 )
    e8845546:	002c                	addi	a1,sp,8
    e8845548:	01040513          	addi	a0,s0,16
    e884554c:	5fd360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8845550:	c149                	beqz	a0,e88455d2 <_BonjourBrowser_ReconfirmDevice+0x134>
	for( device = browser->devices; device; device = device->next )
    e8845552:	6000                	ld	s0,0(s0)
    e8845554:	bfc5                	j	e8845544 <_BonjourBrowser_ReconfirmDevice+0xa6>
		err = DNSServiceConstructFullName( name, service->name, service->type, service->domain );
    e8845556:	7414                	ld	a3,40(s0)
    e8845558:	7010                	ld	a2,32(s0)
    e884555a:	6c0c                	ld	a1,24(s0)
    e884555c:	02a8                	addi	a0,sp,328
    e884555e:	eafd40ef          	jal	ra,e881a40c <DNSServiceConstructFullName>
		if( err ) continue;
    e8845562:	ed31                	bnez	a0,e88455be <_BonjourBrowser_ReconfirmDevice+0x120>
		ptr = MakeDomainNameFromDNSNameString( rdata, name );
    e8845564:	02ac                	addi	a1,sp,328
    e8845566:	8552                	mv	a0,s4
    e8845568:	4391a0ef          	jal	ra,e88601a0 <MakeDomainNameFromDNSNameString>
    e884556c:	892a                	mv	s2,a0
		if( !ptr ) continue;
    e884556e:	c921                	beqz	a0,e88455be <_BonjourBrowser_ReconfirmDevice+0x120>
		snprintf( name, sizeof( name ), "%s%s", service->type, service->domain );
    e8845570:	7418                	ld	a4,40(s0)
    e8845572:	7014                	ld	a3,32(s0)
    e8845574:	866a                	mv	a2,s10
    e8845576:	3f100593          	li	a1,1009
    e884557a:	02a8                	addi	a0,sp,328
    e884557c:	4d5360ef          	jal	ra,e887c250 <eLIBs_snprintf>
		bb_ulog( kLogLevelNotice, "Reconfirming PTR for %s.%s%s on %s\n", service->name, service->type, service->domain, 
    e8845580:	0009a783          	lw	a5,0(s3)
    e8845584:	02fcc163          	blt	s9,a5,e88455a6 <_BonjourBrowser_ReconfirmDevice+0x108>
    e8845588:	03878e63          	beq	a5,s8,e88455c4 <_BonjourBrowser_ReconfirmDevice+0x126>
    e884558c:	02843803          	ld	a6,40(s0)
    e8845590:	701c                	ld	a5,32(s0)
    e8845592:	6c18                	ld	a4,24(s0)
    e8845594:	03440893          	addi	a7,s0,52
    e8845598:	86de                	mv	a3,s7
    e884559a:	03200613          	li	a2,50
    e884559e:	85da                	mv	a1,s6
    e88455a0:	854e                	mv	a0,s3
    e88455a2:	6d30e0ef          	jal	ra,e8854474 <LogPrintF>
		err = DNSServiceReconfirmRecord( 0, service->ifindex, name, kDNSServiceType_PTR, kDNSServiceClass_IN, 
    e88455a6:	580c                	lw	a1,48(s0)
			(uint16_t)( ptr - rdata ), rdata );
    e88455a8:	414907b3          	sub	a5,s2,s4
		err = DNSServiceReconfirmRecord( 0, service->ifindex, name, kDNSServiceType_PTR, kDNSServiceClass_IN, 
    e88455ac:	8852                	mv	a6,s4
    e88455ae:	3c07b78b          	extu	a5,a5,15,0
    e88455b2:	4705                	li	a4,1
    e88455b4:	46b1                	li	a3,12
    e88455b6:	02b0                	addi	a2,sp,328
    e88455b8:	4501                	li	a0,0
    e88455ba:	892d60ef          	jal	ra,e881b64c <DNSServiceReconfirmRecord>
	for( service = device->services; service; service = service->nextForDevice )
    e88455be:	6400                	ld	s0,8(s0)
    e88455c0:	f859                	bnez	s0,e8845556 <_BonjourBrowser_ReconfirmDevice+0xb8>
    e88455c2:	bf1d                	j	e88454f8 <_BonjourBrowser_ReconfirmDevice+0x5a>
		bb_ulog( kLogLevelNotice, "Reconfirming PTR for %s.%s%s on %s\n", service->name, service->type, service->domain, 
    e88455c4:	03200593          	li	a1,50
    e88455c8:	854e                	mv	a0,s3
    e88455ca:	2a90e0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88455ce:	dd61                	beqz	a0,e88455a6 <_BonjourBrowser_ReconfirmDevice+0x108>
    e88455d0:	bf75                	j	e884558c <_BonjourBrowser_ReconfirmDevice+0xee>
	for( service = device->services; service; service = service->nextForDevice )
    e88455d2:	6c20                	ld	s0,88(s0)
		ptr = MakeDomainNameFromDNSNameString( rdata, name );
    e88455d4:	04810a13          	addi	s4,sp,72
		snprintf( name, sizeof( name ), "%s%s", service->type, service->domain );
    e88455d8:	00079d17          	auipc	s10,0x79
    e88455dc:	a18d0d13          	addi	s10,s10,-1512 # e88bdff0 <__PRETTY_FUNCTION__.10585+0x228>
		bb_ulog( kLogLevelNotice, "Reconfirming PTR for %s.%s%s on %s\n", service->name, service->type, service->domain, 
    e88455e0:	0008f997          	auipc	s3,0x8f
    e88455e4:	60098993          	addi	s3,s3,1536 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88455e8:	03200c93          	li	s9,50
    e88455ec:	5c7d                	li	s8,-1
    e88455ee:	00079b97          	auipc	s7,0x79
    e88455f2:	a0ab8b93          	addi	s7,s7,-1526 # e88bdff8 <__PRETTY_FUNCTION__.10585+0x230>
    e88455f6:	00079b17          	auipc	s6,0x79
    e88455fa:	da2b0b13          	addi	s6,s6,-606 # e88be398 <__PRETTY_FUNCTION__.10503>
	for( service = device->services; service; service = service->nextForDevice )
    e88455fe:	b7c9                	j	e88455c0 <_BonjourBrowser_ReconfirmDevice+0x122>

00000000e8845600 <_BonjourBrowser_Finalize>:
{
    e8845600:	1141                	addi	sp,sp,-16
    e8845602:	e022                	sd	s0,0(sp)
    e8845604:	e406                	sd	ra,8(sp)
    e8845606:	842a                	mv	s0,a0
	dispatch_forget( &browser->internalQueue );
    e8845608:	6508                	ld	a0,8(a0)
    e884560a:	c509                	beqz	a0,e8845614 <_BonjourBrowser_Finalize+0x14>
    e884560c:	444090ef          	jal	ra,e884ea50 <dispatch_release>
    e8845610:	00043423          	sd	zero,8(s0)
	dispatch_forget( &browser->eventQueue );
    e8845614:	7828                	ld	a0,112(s0)
    e8845616:	c509                	beqz	a0,e8845620 <_BonjourBrowser_Finalize+0x20>
    e8845618:	438090ef          	jal	ra,e884ea50 <dispatch_release>
    e884561c:	06043823          	sd	zero,112(s0)
	bb_ulog( kLogLevelVerbose, "Finalized browser\n" );
    e8845620:	0008f517          	auipc	a0,0x8f
    e8845624:	5c050513          	addi	a0,a0,1472 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8845628:	411c                	lw	a5,0(a0)
    e884562a:	4751                	li	a4,20
    e884562c:	02f74b63          	blt	a4,a5,e8845662 <_BonjourBrowser_Finalize+0x62>
    e8845630:	577d                	li	a4,-1
    e8845632:	02e78463          	beq	a5,a4,e884565a <_BonjourBrowser_Finalize+0x5a>
}
    e8845636:	6402                	ld	s0,0(sp)
    e8845638:	60a2                	ld	ra,8(sp)
	bb_ulog( kLogLevelVerbose, "Finalized browser\n" );
    e884563a:	00079697          	auipc	a3,0x79
    e884563e:	94668693          	addi	a3,a3,-1722 # e88bdf80 <__PRETTY_FUNCTION__.10585+0x1b8>
    e8845642:	4651                	li	a2,20
    e8845644:	00079597          	auipc	a1,0x79
    e8845648:	cfc58593          	addi	a1,a1,-772 # e88be340 <__PRETTY_FUNCTION__.10380>
    e884564c:	0008f517          	auipc	a0,0x8f
    e8845650:	59450513          	addi	a0,a0,1428 # e88d4be0 <gLogCategory_BonjourBrowser>
}
    e8845654:	0141                	addi	sp,sp,16
	bb_ulog( kLogLevelVerbose, "Finalized browser\n" );
    e8845656:	61f0e06f          	j	e8854474 <LogPrintF>
    e884565a:	45d1                	li	a1,20
    e884565c:	2170e0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8845660:	f979                	bnez	a0,e8845636 <_BonjourBrowser_Finalize+0x36>
}
    e8845662:	60a2                	ld	ra,8(sp)
    e8845664:	6402                	ld	s0,0(sp)
    e8845666:	0141                	addi	sp,sp,16
    e8845668:	8082                	ret

00000000e884566a <_BonjourDevice_GetBestService.isra.1>:
static BonjourServiceRef	_BonjourDevice_GetBestService( BonjourDeviceRef inDevice )
    e884566a:	7179                	addi	sp,sp,-48
    e884566c:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8845670:	f891540b          	sdd	s0,s1,(sp),0,4
    e8845674:	f052                	sd	s4,32(sp)
    e8845676:	f406                	sd	ra,40(sp)
	for( service = inDevice->services; service; service = service->nextForDevice )
    e8845678:	6104                	ld	s1,0(a0)
static BonjourServiceRef	_BonjourDevice_GetBestService( BonjourDeviceRef inDevice )
    e884567a:	89aa                	mv	s3,a0
	firstLocal  = NULL;
    e884567c:	4901                	li	s2,0
	firstNonP2P = NULL;
    e884567e:	4401                	li	s0,0
		if( strcmp( service->domain, "local." ) == 0 )
    e8845680:	0005ea17          	auipc	s4,0x5e
    e8845684:	4d0a0a13          	addi	s4,s4,1232 # e88a3b50 <end.8789+0x4a8>
	for( service = inDevice->services; service; service = service->nextForDevice )
    e8845688:	e085                	bnez	s1,e88456a8 <_BonjourDevice_GetBestService.isra.1+0x3e>
	if( firstNonP2P ) return( firstNonP2P );
    e884568a:	e411                	bnez	s0,e8845696 <_BonjourDevice_GetBestService.isra.1+0x2c>
	if( firstLocal )  return( firstLocal );
    e884568c:	844a                	mv	s0,s2
    e884568e:	00091463          	bnez	s2,e8845696 <_BonjourDevice_GetBestService.isra.1+0x2c>
	return( inDevice->services );
    e8845692:	0009b403          	ld	s0,0(s3)
}
    e8845696:	8522                	mv	a0,s0
    e8845698:	70a2                	ld	ra,40(sp)
    e884569a:	f891440b          	ldd	s0,s1,(sp),0,4
    e884569e:	7a02                	ld	s4,32(sp)
    e88456a0:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88456a4:	6145                	addi	sp,sp,48
    e88456a6:	8082                	ret
		if( strcmp( service->domain, "local." ) == 0 )
    e88456a8:	7488                	ld	a0,40(s1)
    e88456aa:	85d2                	mv	a1,s4
    e88456ac:	491360ef          	jal	ra,e887c33c <eLIBs_strcmp>
    e88456b0:	ed09                	bnez	a0,e88456ca <_BonjourDevice_GetBestService.isra.1+0x60>
			if( !service->isWiFi )					return( service ); // Prefer wired interfaces over all others.
    e88456b2:	03c4c783          	lbu	a5,60(s1)
    e88456b6:	cf81                	beqz	a5,e88456ce <_BonjourDevice_GetBestService.isra.1+0x64>
			if( !firstNonP2P && !service->isP2P )	firstNonP2P = service;
    e88456b8:	e419                	bnez	s0,e88456c6 <_BonjourDevice_GetBestService.isra.1+0x5c>
    e88456ba:	03b4c403          	lbu	s0,59(s1)
    e88456be:	87a6                	mv	a5,s1
    e88456c0:	4280178b          	mvnez	a5,zero,s0
    e88456c4:	843e                	mv	s0,a5
			if( !firstLocal )						firstLocal = service;
    e88456c6:	4124990b          	mveqz	s2,s1,s2
	for( service = inDevice->services; service; service = service->nextForDevice )
    e88456ca:	6484                	ld	s1,8(s1)
    e88456cc:	bf75                	j	e8845688 <_BonjourDevice_GetBestService.isra.1+0x1e>
			if( !service->isWiFi )					return( service ); // Prefer wired interfaces over all others.
    e88456ce:	8426                	mv	s0,s1
    e88456d0:	b7d9                	j	e8845696 <_BonjourDevice_GetBestService.isra.1+0x2c>

00000000e88456d2 <_BonjourDevice_UpdateTXTQueries>:
{
    e88456d2:	7139                	addi	sp,sp,-64
    e88456d4:	f44a                	sd	s2,40(sp)
    e88456d6:	892a                	mv	s2,a0
	bestService = _BonjourDevice_GetBestService( inDevice );
    e88456d8:	05850513          	addi	a0,a0,88
{
    e88456dc:	fc06                	sd	ra,56(sp)
    e88456de:	ec22                	sd	s0,24(sp)
    e88456e0:	f026                	sd	s1,32(sp)
    e88456e2:	f84e                	sd	s3,48(sp)
	bestService = _BonjourDevice_GetBestService( inDevice );
    e88456e4:	f87ff0ef          	jal	ra,e884566a <_BonjourDevice_GetBestService.isra.1>
	require_action( bestService, exit, err = kNotFoundErr );
    e88456e8:	cd61                	beqz	a0,e88457c0 <_BonjourDevice_UpdateTXTQueries+0xee>
	if( ( inDevice->autoStopTXT < 0 ) && bestService->txtRDataList )
    e88456ea:	06092783          	lw	a5,96(s2)
    e88456ee:	842a                	mv	s0,a0
    e88456f0:	0007df63          	bgez	a5,e884570e <_BonjourDevice_UpdateTXTQueries+0x3c>
    e88456f4:	693c                	ld	a5,80(a0)
    e88456f6:	cf81                	beqz	a5,e884570e <_BonjourDevice_UpdateTXTQueries+0x3c>
	const char *		valuePtr;
	uint8_t				valueLen;
	int					n;
	uint64_t			u64;
	
	if( stricmp( inService->type, "_raop._tcp." ) == 0 )
    e88456f8:	7108                	ld	a0,32(a0)
    e88456fa:	00079597          	auipc	a1,0x79
    e88456fe:	99658593          	addi	a1,a1,-1642 # e88be090 <__PRETTY_FUNCTION__.10585+0x2c8>
    e8845702:	447360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8845706:	c905                	beqz	a0,e8845736 <_BonjourDevice_UpdateTXTQueries+0x64>
		if( valuePtr && ( strnicmp_prefix( valuePtr, valueLen, "AppleTV" ) == 0 ) )
		{
			return( true );
		}
	}
	return( false );
    e8845708:	4501                	li	a0,0
		inDevice->autoStopTXT = _BonjourService_IsAutoStopTXT( bestService );
    e884570a:	06a92023          	sw	a0,96(s2)
	for( service = inDevice->services; service; service = service->nextForDevice )
    e884570e:	05893483          	ld	s1,88(s2)
    e8845712:	06092783          	lw	a5,96(s2)
    e8845716:	e8c9                	bnez	s1,e88457a8 <_BonjourDevice_UpdateTXTQueries+0xd6>
	err = kNoErr;
    e8845718:	4501                	li	a0,0
	if( ( inDevice->autoStopTXT <= 0 ) && !bestService->txtQueryRef )
    e884571a:	00f04763          	bgtz	a5,e8845728 <_BonjourDevice_UpdateTXTQueries+0x56>
    e884571e:	643c                	ld	a5,72(s0)
    e8845720:	e781                	bnez	a5,e8845728 <_BonjourDevice_UpdateTXTQueries+0x56>
		err = _BonjourService_StartTXTQuery( bestService );
    e8845722:	8522                	mv	a0,s0
    e8845724:	be3ff0ef          	jal	ra,e8845306 <_BonjourService_StartTXTQuery>
}
    e8845728:	70e2                	ld	ra,56(sp)
    e884572a:	6462                	ld	s0,24(sp)
    e884572c:	7482                	ld	s1,32(sp)
    e884572e:	7922                	ld	s2,40(sp)
    e8845730:	79c2                	ld	s3,48(sp)
    e8845732:	6121                	addi	sp,sp,64
    e8845734:	8082                	ret
		txtPtr = inService->txtRDataList->rdata;
    e8845736:	683c                	ld	a5,80(s0)
		valuePtr = (const char *) TXTRecordGetValuePtr( txtLen, txtPtr, "ft", &valueLen );
    e8845738:	00710693          	addi	a3,sp,7
    e884573c:	00079617          	auipc	a2,0x79
    e8845740:	96460613          	addi	a2,a2,-1692 # e88be0a0 <__PRETTY_FUNCTION__.10585+0x2d8>
		txtLen = (uint16_t) inService->txtRDataList->rdlen;
    e8845744:	0087d983          	lhu	s3,8(a5)
		txtPtr = inService->txtRDataList->rdata;
    e8845748:	01078493          	addi	s1,a5,16
		valuePtr = (const char *) TXTRecordGetValuePtr( txtLen, txtPtr, "ft", &valueLen );
    e884574c:	85a6                	mv	a1,s1
    e884574e:	854e                	mv	a0,s3
    e8845750:	fd5d40ef          	jal	ra,e881a724 <TXTRecordGetValuePtr>
		if( valuePtr )
    e8845754:	e51d                	bnez	a0,e8845782 <_BonjourDevice_UpdateTXTQueries+0xb0>
		valuePtr = (const char *) TXTRecordGetValuePtr( txtLen, txtPtr, "am", &valueLen );
    e8845756:	00710693          	addi	a3,sp,7
    e884575a:	0007c617          	auipc	a2,0x7c
    e884575e:	1be60613          	addi	a2,a2,446 # e88c1918 <__PRETTY_FUNCTION__.10057+0x98>
    e8845762:	85a6                	mv	a1,s1
    e8845764:	854e                	mv	a0,s3
    e8845766:	fbfd40ef          	jal	ra,e881a724 <TXTRecordGetValuePtr>
		if( valuePtr && ( strnicmp_prefix( valuePtr, valueLen, "AppleTV" ) == 0 ) )
    e884576a:	dd59                	beqz	a0,e8845708 <_BonjourDevice_UpdateTXTQueries+0x36>
    e884576c:	00714583          	lbu	a1,7(sp)
    e8845770:	00079617          	auipc	a2,0x79
    e8845774:	94060613          	addi	a2,a2,-1728 # e88be0b0 <__PRETTY_FUNCTION__.10585+0x2e8>
    e8845778:	1541a0ef          	jal	ra,e885f8cc <strnicmp_prefix>
	return( false );
    e884577c:	00153513          	seqz	a0,a0
    e8845780:	b769                	j	e884570a <_BonjourDevice_UpdateTXTQueries+0x38>
			n = SNScanF( valuePtr, valueLen, "%llx", &u64 );
    e8845782:	00714583          	lbu	a1,7(sp)
    e8845786:	0034                	addi	a3,sp,8
    e8845788:	00079617          	auipc	a2,0x79
    e884578c:	92060613          	addi	a2,a2,-1760 # e88be0a8 <__PRETTY_FUNCTION__.10585+0x2e0>
    e8845790:	4b21b0ef          	jal	ra,e8860c42 <SNScanF>
			if( ( n == 1 ) && ( u64 & 0x40000000 ) ) // kAirPlayFeature_UnifiedBonjour
    e8845794:	4785                	li	a5,1
    e8845796:	fcf510e3          	bne	a0,a5,e8845756 <_BonjourDevice_UpdateTXTQueries+0x84>
    e884579a:	67a2                	ld	a5,8(sp)
				return( true );
    e884579c:	4505                	li	a0,1
			if( ( n == 1 ) && ( u64 & 0x40000000 ) ) // kAirPlayFeature_UnifiedBonjour
    e884579e:	02179713          	slli	a4,a5,0x21
    e88457a2:	fa075ae3          	bgez	a4,e8845756 <_BonjourDevice_UpdateTXTQueries+0x84>
    e88457a6:	b795                	j	e884570a <_BonjourDevice_UpdateTXTQueries+0x38>
		if( ( inDevice->autoStopTXT > 0 ) || ( service != bestService ) )
    e88457a8:	00f04463          	bgtz	a5,e88457b0 <_BonjourDevice_UpdateTXTQueries+0xde>
    e88457ac:	00848863          	beq	s1,s0,e88457bc <_BonjourDevice_UpdateTXTQueries+0xea>
			DNSServiceForget( &service->txtQueryRef );
    e88457b0:	64a8                	ld	a0,72(s1)
    e88457b2:	c509                	beqz	a0,e88457bc <_BonjourDevice_UpdateTXTQueries+0xea>
    e88457b4:	d2cd50ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    e88457b8:	0404b423          	sd	zero,72(s1)
	for( service = inDevice->services; service; service = service->nextForDevice )
    e88457bc:	6484                	ld	s1,8(s1)
    e88457be:	bf91                	j	e8845712 <_BonjourDevice_UpdateTXTQueries+0x40>
	require_action( bestService, exit, err = kNotFoundErr );
    e88457c0:	7579                	lui	a0,0xffffe
    e88457c2:	5b950513          	addi	a0,a0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e88457c6:	b78d                	j	e8845728 <_BonjourDevice_UpdateTXTQueries+0x56>

00000000e88457c8 <_BonjourDevice_CreateDictionary>:
{
    e88457c8:	92010113          	addi	sp,sp,-1760
    e88457cc:	6b613023          	sd	s6,1696(sp)
    e88457d0:	8b2a                	mv	s6,a0
	bestService = _BonjourDevice_GetBestService( inDevice );
    e88457d2:	05850513          	addi	a0,a0,88
{
    e88457d6:	6b513423          	sd	s5,1704(sp)
    e88457da:	6c113c23          	sd	ra,1752(sp)
    e88457de:	6c813823          	sd	s0,1744(sp)
    e88457e2:	6c913423          	sd	s1,1736(sp)
    e88457e6:	6d213023          	sd	s2,1728(sp)
    e88457ea:	6b313c23          	sd	s3,1720(sp)
    e88457ee:	6b413823          	sd	s4,1712(sp)
    e88457f2:	8aae                	mv	s5,a1
	bestService = _BonjourDevice_GetBestService( inDevice );
    e88457f4:	e77ff0ef          	jal	ra,e884566a <_BonjourDevice_GetBestService.isra.1>
	if( !bestService || !bestService->txtRDataList )
    e88457f8:	c511                	beqz	a0,e8845804 <_BonjourDevice_CreateDictionary+0x3c>
    e88457fa:	05053983          	ld	s3,80(a0)
    e88457fe:	84aa                	mv	s1,a0
    e8845800:	06099563          	bnez	s3,e884586a <_BonjourDevice_CreateDictionary+0xa2>
		require_action_quiet( inDevice->deviceInfo, exit, err = kNotPreparedErr );
    e8845804:	050b3403          	ld	s0,80(s6)
    e8845808:	ec05                	bnez	s0,e8845840 <_BonjourDevice_CreateDictionary+0x78>
    e884580a:	77f9                	lui	a5,0xffffe
    e884580c:	5a77879b          	addiw	a5,a5,1447
    e8845810:	da3e                	sw	a5,52(sp)
	if( outErr ) *outErr = err;
    e8845812:	57d2                	lw	a5,52(sp)
}
    e8845814:	8522                	mv	a0,s0
    e8845816:	6d813083          	ld	ra,1752(sp)
    e884581a:	6d013403          	ld	s0,1744(sp)
	if( outErr ) *outErr = err;
    e884581e:	00faa023          	sw	a5,0(s5)
}
    e8845822:	6c813483          	ld	s1,1736(sp)
    e8845826:	6c013903          	ld	s2,1728(sp)
    e884582a:	6b813983          	ld	s3,1720(sp)
    e884582e:	6b013a03          	ld	s4,1712(sp)
    e8845832:	6a813a83          	ld	s5,1704(sp)
    e8845836:	6a013b03          	ld	s6,1696(sp)
    e884583a:	6e010113          	addi	sp,sp,1760
    e884583e:	8082                	ret
		result = CFDictionaryCreateMutableCopy( NULL, 0, inDevice->deviceInfo );
    e8845840:	8622                	mv	a2,s0
    e8845842:	4581                	li	a1,0
    e8845844:	4501                	li	a0,0
    e8845846:	3cf010ef          	jal	ra,e8847414 <CFDictionaryCreateMutableCopy>
    e884584a:	842a                	mv	s0,a0
		require_action( result, exit, err = kNoMemoryErr );
    e884584c:	e519                	bnez	a0,e884585a <_BonjourDevice_CreateDictionary+0x92>
    e884584e:	77f9                	lui	a5,0xffffe
    e8845850:	5b87879b          	addiw	a5,a5,1464
    e8845854:	da3e                	sw	a5,52(sp)
	CFReleaseNullSafe( newDeviceInfo );
    e8845856:	4401                	li	s0,0
    e8845858:	bf6d                	j	e8845812 <_BonjourDevice_CreateDictionary+0x4a>
		CFDictionaryRemoveValue( result, CFSTR( kBonjourDeviceKey_Services ) );
    e884585a:	00058597          	auipc	a1,0x58
    e884585e:	8f658593          	addi	a1,a1,-1802 # e889d150 <icmp6_param_problem+0xe2>
    e8845862:	3f9010ef          	jal	ra,e884745a <CFDictionaryRemoveValue>
		err = kNoErr;
    e8845866:	da02                	sw	zero,52(sp)
	CFReleaseNullSafe( newDeviceInfo );
    e8845868:	b76d                	j	e8845812 <_BonjourDevice_CreateDictionary+0x4a>
	newDeviceInfo = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e884586a:	00079697          	auipc	a3,0x79
    e884586e:	f5e68693          	addi	a3,a3,-162 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8845872:	00079617          	auipc	a2,0x79
    e8845876:	f2660613          	addi	a2,a2,-218 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884587a:	4581                	li	a1,0
    e884587c:	4501                	li	a0,0
	txtLen = bestService->txtRDataList->rdlen;
    e884587e:	0089ba03          	ld	s4,8(s3)
	newDeviceInfo = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8845882:	325010ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8845886:	842a                	mv	s0,a0
	require_action( newDeviceInfo, exit, err = kNoMemoryErr );
    e8845888:	d179                	beqz	a0,e884584e <_BonjourDevice_CreateDictionary+0x86>
	if( stricmp( inService->type, "_raop._tcp." ) == 0 )
    e884588a:	7088                	ld	a0,32(s1)
    e884588c:	00079597          	auipc	a1,0x79
    e8845890:	80458593          	addi	a1,a1,-2044 # e88be090 <__PRETTY_FUNCTION__.10585+0x2c8>
    e8845894:	2b5360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8845898:	0184b903          	ld	s2,24(s1)
    e884589c:	e919                	bnez	a0,e88458b2 <_BonjourDevice_CreateDictionary+0xea>
		namePtr = strchr( inService->name, '@' );
    e884589e:	854a                	mv	a0,s2
    e88458a0:	04000593          	li	a1,64
    e88458a4:	2c9360ef          	jal	ra,e887c36c <eLIBs_strchr>
		namePtr = namePtr ? ( namePtr + 1 ) : inService->name;
    e88458a8:	00150913          	addi	s2,a0,1
    e88458ac:	e119                	bnez	a0,e88458b2 <_BonjourDevice_CreateDictionary+0xea>
    e88458ae:	0184b903          	ld	s2,24(s1)
		nameLen = strlen( namePtr );
    e88458b2:	854a                	mv	a0,s2
    e88458b4:	265360ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88458b8:	7c05368b          	extu	a3,a0,31,0
	CFDictionarySetCString( newDeviceInfo, CFSTR( kBonjourDeviceKey_Name ), namePtr, nameLen );
    e88458bc:	864a                	mv	a2,s2
    e88458be:	00058597          	auipc	a1,0x58
    e88458c2:	8aa58593          	addi	a1,a1,-1878 # e889d168 <icmp6_param_problem+0xfa>
    e88458c6:	8522                	mv	a0,s0
    e88458c8:	1bb060ef          	jal	ra,e884c282 <CFDictionarySetCString>
	CFDictionarySetCString( newDeviceInfo, CFSTR( kBonjourDeviceKey_DeviceID ), inDevice->deviceID, kSizeCString );
    e88458cc:	56fd                	li	a3,-1
    e88458ce:	010b0613          	addi	a2,s6,16
    e88458d2:	00058597          	auipc	a1,0x58
    e88458d6:	86658593          	addi	a1,a1,-1946 # e889d138 <icmp6_param_problem+0xca>
    e88458da:	8522                	mv	a0,s0
    e88458dc:	1a7060ef          	jal	ra,e884c282 <CFDictionarySetCString>
	err = DNSServiceConstructFullNameEx( fullName, bestService->name, bestService->type, bestService->domain );
    e88458e0:	7494                	ld	a3,40(s1)
    e88458e2:	7090                	ld	a2,32(s1)
    e88458e4:	6c8c                	ld	a1,24(s1)
    e88458e6:	14a8                	addi	a0,sp,616
    e88458e8:	7181a0ef          	jal	ra,e8860000 <DNSServiceConstructFullNameEx>
    e88458ec:	da2a                	sw	a0,52(sp)
	require_noerr( err, exit );
    e88458ee:	e13d                	bnez	a0,e8845954 <_BonjourDevice_CreateDictionary+0x18c>
	len = strlen( fullName );
    e88458f0:	14a8                	addi	a0,sp,616
    e88458f2:	227360ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88458f6:	7c05350b          	extu	a0,a0,31,0
	snprintf( &fullName[ len ], sizeof( fullName ) - len, "%%%u", bestService->ifindex );
    e88458fa:	5894                	lw	a3,48(s1)
    e88458fc:	14bc                	addi	a5,sp,616
    e88458fe:	43100593          	li	a1,1073
    e8845902:	8d89                	sub	a1,a1,a0
    e8845904:	00078617          	auipc	a2,0x78
    e8845908:	2cc60613          	addi	a2,a2,716 # e88bdbd0 <kSRPHashDescriptor_SHA512+0x1c0>
    e884590c:	953e                	add	a0,a0,a5
    e884590e:	143360ef          	jal	ra,e887c250 <eLIBs_snprintf>
	CFDictionarySetCString( newDeviceInfo, CFSTR( kBonjourDeviceKey_DNSName ), fullName, kSizeCString );
    e8845912:	56fd                	li	a3,-1
    e8845914:	14b0                	addi	a2,sp,616
    e8845916:	00057597          	auipc	a1,0x57
    e884591a:	79a58593          	addi	a1,a1,1946 # e889d0b0 <icmp6_param_problem+0x42>
    e884591e:	8522                	mv	a0,s0
    e8845920:	163060ef          	jal	ra,e884c282 <CFDictionarySetCString>
	CFDictionarySetCString( newDeviceInfo, CFSTR( kBonjourDeviceKey_ServiceType ), bestService->type, kSizeCString );
    e8845924:	7090                	ld	a2,32(s1)
    e8845926:	00058597          	auipc	a1,0x58
    e884592a:	85258593          	addi	a1,a1,-1966 # e889d178 <icmp6_param_problem+0x10a>
    e884592e:	56fd                	li	a3,-1
    e8845930:	8522                	mv	a0,s0
    e8845932:	151060ef          	jal	ra,e884c282 <CFDictionarySetCString>
	if( stricmp( bestService->type, "_airport._tcp." ) == 0 )
    e8845936:	7088                	ld	a0,32(s1)
    e8845938:	00078597          	auipc	a1,0x78
    e884593c:	74858593          	addi	a1,a1,1864 # e88be080 <__PRETTY_FUNCTION__.10585+0x2b8>
    e8845940:	209360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8845944:	0c051e63          	bnez	a0,e8845a20 <_BonjourDevice_CreateDictionary+0x258>
		require_action( txtLen > 0, exit, err = kSizeErr );
    e8845948:	000a1a63          	bnez	s4,e884595c <_BonjourDevice_CreateDictionary+0x194>
    e884594c:	77f9                	lui	a5,0xffffe
    e884594e:	5a97879b          	addiw	a5,a5,1449
			require_action( serviceArray, exit, err = kNoMemoryErr );
    e8845952:	da3e                	sw	a5,52(sp)
	CFReleaseNullSafe( newDeviceInfo );
    e8845954:	8522                	mv	a0,s0
    e8845956:	7f4010ef          	jal	ra,e884714a <CFRelease>
    e884595a:	bdf5                	j	e8845856 <_BonjourDevice_CreateDictionary+0x8e>
		end = src + ( txtLen - 1 );
    e884595c:	1a7d                	addi	s4,s4,-1
		src = ( (const char *) txtPtr ) + 1;
    e884595e:	09c5                	addi	s3,s3,17
		TXTRecordCreate( &txtRec, (uint16_t) sizeof( txtBuf ), txtBuf );
    e8845960:	10b0                	addi	a2,sp,104
    e8845962:	10000593          	li	a1,256
    e8845966:	08a8                	addi	a0,sp,88
    e8845968:	c27d40ef          	jal	ra,e881a58e <TXTRecordCreate>
		while( ParseCommaSeparatedNameValuePair( src, end, keyStr, sizeof( keyStr ) - 1, &keyLen, NULL, 
    e884596c:	0084                	addi	s1,sp,64
		src = ( (const char *) txtPtr ) + 1;
    e884596e:	fc4e                	sd	s3,56(sp)
		while( ParseCommaSeparatedNameValuePair( src, end, keyStr, sizeof( keyStr ) - 1, &keyLen, NULL, 
    e8845970:	05010913          	addi	s2,sp,80
		end = src + ( txtLen - 1 );
    e8845974:	99d2                	add	s3,s3,s4
		while( ParseCommaSeparatedNameValuePair( src, end, keyStr, sizeof( keyStr ) - 1, &keyLen, NULL, 
    e8845976:	03810a13          	addi	s4,sp,56
    e884597a:	7562                	ld	a0,56(sp)
    e884597c:	e852                	sd	s4,16(sp)
    e884597e:	e402                	sd	zero,8(sp)
    e8845980:	e04a                	sd	s2,0(sp)
    e8845982:	10000893          	li	a7,256
    e8845986:	16810813          	addi	a6,sp,360
    e884598a:	4781                	li	a5,0
    e884598c:	00b8                	addi	a4,sp,72
    e884598e:	469d                	li	a3,7
    e8845990:	8626                	mv	a2,s1
    e8845992:	85ce                	mv	a1,s3
    e8845994:	45c1a0ef          	jal	ra,e885fdf0 <ParseCommaSeparatedNameValuePair>
    e8845998:	c92d                	beqz	a0,e8845a0a <_BonjourDevice_CreateDictionary+0x242>
		CFDictionarySetData( newDeviceInfo, CFSTR( kBonjourDeviceKey_TXT ), 
    e884599a:	08a8                	addi	a0,sp,88
    e884599c:	d85d40ef          	jal	ra,e881a720 <TXTRecordGetBytesPtr>
    e88459a0:	f42a                	sd	a0,40(sp)
			TXTRecordGetBytesPtr( &txtRec ), TXTRecordGetLength( &txtRec ) );
    e88459a2:	08a8                	addi	a0,sp,88
    e88459a4:	d77d40ef          	jal	ra,e881a71a <TXTRecordGetLength>
		CFDictionarySetData( newDeviceInfo, CFSTR( kBonjourDeviceKey_TXT ), 
    e88459a8:	86aa                	mv	a3,a0
    e88459aa:	7622                	ld	a2,40(sp)
    e88459ac:	00057597          	auipc	a1,0x57
    e88459b0:	7e458593          	addi	a1,a1,2020 # e889d190 <icmp6_param_problem+0x122>
    e88459b4:	8522                	mv	a0,s0
    e88459b6:	3ab060ef          	jal	ra,e884c560 <CFDictionarySetData>
		TXTRecordDeallocate( &txtRec );
    e88459ba:	08a8                	addi	a0,sp,88
    e88459bc:	be3d40ef          	jal	ra,e881a59e <TXTRecordDeallocate>
	for( service = inDevice->services; service; service = service->nextForDevice )
    e88459c0:	058b3903          	ld	s2,88(s6)
	p2pOnly = true;
    e88459c4:	4985                	li	s3,1
	CFMutableArrayRef			serviceArray	= NULL;
    e88459c6:	4481                	li	s1,0
			serviceArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e88459c8:	00079b17          	auipc	s6,0x79
    e88459cc:	da8b0b13          	addi	s6,s6,-600 # e88be770 <kCFLArrayCallBacksCFLTypes>
	for( service = inDevice->services; service; service = service->nextForDevice )
    e88459d0:	06091363          	bnez	s2,e8845a36 <_BonjourDevice_CreateDictionary+0x26e>
	if( serviceArray )
    e88459d4:	cc81                	beqz	s1,e88459ec <_BonjourDevice_CreateDictionary+0x224>
		CFDictionarySetValue( newDeviceInfo, CFSTR( kBonjourDeviceKey_Services ), serviceArray );
    e88459d6:	8522                	mv	a0,s0
    e88459d8:	8626                	mv	a2,s1
    e88459da:	00057597          	auipc	a1,0x57
    e88459de:	77658593          	addi	a1,a1,1910 # e889d150 <icmp6_param_problem+0xe2>
    e88459e2:	271010ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( serviceArray );
    e88459e6:	8526                	mv	a0,s1
    e88459e8:	762010ef          	jal	ra,e884714a <CFRelease>
	if( p2pOnly ) CFDictionarySetValue( newDeviceInfo, CFSTR( kBonjourDeviceKey_P2POnly ), kCFBooleanTrue );
    e88459ec:	e20983e3          	beqz	s3,e8845812 <_BonjourDevice_CreateDictionary+0x4a>
    e88459f0:	0008f797          	auipc	a5,0x8f
    e88459f4:	2e078793          	addi	a5,a5,736 # e88d4cd0 <kCFLBooleanTrue>
    e88459f8:	6390                	ld	a2,0(a5)
    e88459fa:	00057597          	auipc	a1,0x57
    e88459fe:	7a658593          	addi	a1,a1,1958 # e889d1a0 <icmp6_param_problem+0x132>
    e8845a02:	8522                	mv	a0,s0
    e8845a04:	24f010ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFReleaseNullSafe( newDeviceInfo );
    e8845a08:	b529                	j	e8845812 <_BonjourDevice_CreateDictionary+0x4a>
			keyStr[ keyLen ] = '\0';
    e8845a0a:	67a6                	ld	a5,72(sp)
			TXTRecordSetValue( &txtRec, keyStr, (uint8_t) valueLen, valueStr );
    e8845a0c:	05014603          	lbu	a2,80(sp)
    e8845a10:	12b4                	addi	a3,sp,360
    e8845a12:	85a6                	mv	a1,s1
    e8845a14:	08a8                	addi	a0,sp,88
			keyStr[ keyLen ] = '\0';
    e8845a16:	00f4d00b          	srb	zero,s1,a5,0
			TXTRecordSetValue( &txtRec, keyStr, (uint8_t) valueLen, valueStr );
    e8845a1a:	be3d40ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e8845a1e:	bfb1                	j	e884597a <_BonjourDevice_CreateDictionary+0x1b2>
		CFDictionarySetData( newDeviceInfo, CFSTR( kBonjourDeviceKey_TXT ), txtPtr, txtLen );
    e8845a20:	86d2                	mv	a3,s4
    e8845a22:	01098613          	addi	a2,s3,16
    e8845a26:	00057597          	auipc	a1,0x57
    e8845a2a:	76a58593          	addi	a1,a1,1898 # e889d190 <icmp6_param_problem+0x122>
    e8845a2e:	8522                	mv	a0,s0
    e8845a30:	331060ef          	jal	ra,e884c560 <CFDictionarySetData>
    e8845a34:	b771                	j	e88459c0 <_BonjourDevice_CreateDictionary+0x1f8>
		if( !service->isP2P ) p2pOnly = false;
    e8845a36:	03b94783          	lbu	a5,59(s2)
    e8845a3a:	e391                	bnez	a5,e8845a3e <_BonjourDevice_CreateDictionary+0x276>
    e8845a3c:	4981                	li	s3,0
		if( !serviceArray )
    e8845a3e:	ec81                	bnez	s1,e8845a56 <_BonjourDevice_CreateDictionary+0x28e>
			serviceArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8845a40:	865a                	mv	a2,s6
    e8845a42:	4581                	li	a1,0
    e8845a44:	4501                	li	a0,0
    e8845a46:	780010ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e8845a4a:	84aa                	mv	s1,a0
			require_action( serviceArray, exit, err = kNoMemoryErr );
    e8845a4c:	e509                	bnez	a0,e8845a56 <_BonjourDevice_CreateDictionary+0x28e>
    e8845a4e:	77f9                	lui	a5,0xffffe
    e8845a50:	5b87879b          	addiw	a5,a5,1464
    e8845a54:	bdfd                	j	e8845952 <_BonjourDevice_CreateDictionary+0x18a>
		serviceDict = _BonjourService_CreateDictionary( service, &err );
    e8845a56:	184c                	addi	a1,sp,52
    e8845a58:	854a                	mv	a0,s2
    e8845a5a:	8fbff0ef          	jal	ra,e8845354 <_BonjourService_CreateDictionary>
    e8845a5e:	8a2a                	mv	s4,a0
		require_noerr( err, exit );
    e8845a60:	57d2                	lw	a5,52(sp)
    e8845a62:	eb99                	bnez	a5,e8845a78 <_BonjourDevice_CreateDictionary+0x2b0>
		CFArrayAppendValue( serviceArray, serviceDict );
    e8845a64:	85aa                	mv	a1,a0
    e8845a66:	8526                	mv	a0,s1
    e8845a68:	009010ef          	jal	ra,e8847270 <CFArrayAppendValue>
		CFRelease( serviceDict );
    e8845a6c:	8552                	mv	a0,s4
    e8845a6e:	6dc010ef          	jal	ra,e884714a <CFRelease>
	for( service = inDevice->services; service; service = service->nextForDevice )
    e8845a72:	00893903          	ld	s2,8(s2)
    e8845a76:	bfa9                	j	e88459d0 <_BonjourDevice_CreateDictionary+0x208>
	CFReleaseNullSafe( serviceArray );
    e8845a78:	8526                	mv	a0,s1
    e8845a7a:	6d0010ef          	jal	ra,e884714a <CFRelease>
    e8845a7e:	bdd9                	j	e8845954 <_BonjourDevice_CreateDictionary+0x18c>

00000000e8845a80 <_BonjourService_GetDeviceID.constprop.3>:
static OSStatus	_BonjourService_GetDeviceID( BonjourServiceRef inService, char *inKeyBuf, size_t inKeyMaxLen )
    e8845a80:	7165                	addi	sp,sp,-400
    e8845a82:	e322                	sd	s0,384(sp)
    e8845a84:	f6ce                	sd	s3,360(sp)
    e8845a86:	f2d2                	sd	s4,352(sp)
    e8845a88:	eed6                	sd	s5,344(sp)
    e8845a8a:	e706                	sd	ra,392(sp)
    e8845a8c:	fea6                	sd	s1,376(sp)
    e8845a8e:	faca                	sd	s2,368(sp)
	txtPtr = inService->txtRDataList->rdata;
    e8845a90:	6924                	ld	s1,80(a0)
static OSStatus	_BonjourService_GetDeviceID( BonjourServiceRef inService, char *inKeyBuf, size_t inKeyMaxLen )
    e8845a92:	842a                	mv	s0,a0
	if( ( stricmp( inService->type, "_airplay._tcp." )    == 0 ) ||
    e8845a94:	7108                	ld	a0,32(a0)
	txtLen = (uint16_t) inService->txtRDataList->rdlen;
    e8845a96:	0084b903          	ld	s2,8(s1)
static OSStatus	_BonjourService_GetDeviceID( BonjourServiceRef inService, char *inKeyBuf, size_t inKeyMaxLen )
    e8845a9a:	89ae                	mv	s3,a1
	if( ( stricmp( inService->type, "_airplay._tcp." )    == 0 ) ||
    e8845a9c:	00078597          	auipc	a1,0x78
    e8845aa0:	61c58593          	addi	a1,a1,1564 # e88be0b8 <__PRETTY_FUNCTION__.10585+0x2f0>
	txtPtr = inService->txtRDataList->rdata;
    e8845aa4:	01048a93          	addi	s5,s1,16
	txtLen = (uint16_t) inService->txtRDataList->rdlen;
    e8845aa8:	3c093a0b          	extu	s4,s2,15,0
	if( ( stricmp( inService->type, "_airplay._tcp." )    == 0 ) ||
    e8845aac:	09d360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8845ab0:	e905                	bnez	a0,e8845ae0 <_BonjourService_GetDeviceID.constprop.3+0x60>
		keyPtr = (const char *) TXTRecordGetValuePtr( txtLen, txtPtr, "deviceid", &keyLen );
    e8845ab2:	02710693          	addi	a3,sp,39
    e8845ab6:	00078617          	auipc	a2,0x78
    e8845aba:	61260613          	addi	a2,a2,1554 # e88be0c8 <__PRETTY_FUNCTION__.10585+0x300>
		keyPtr = (const char *) TXTRecordGetValuePtr( txtLen, txtPtr, "id", &keyLen );
    e8845abe:	85d6                	mv	a1,s5
    e8845ac0:	8552                	mv	a0,s4
    e8845ac2:	c63d40ef          	jal	ra,e881a724 <TXTRecordGetValuePtr>
		require_action( keyPtr, exit, err = kNotFoundErr );
    e8845ac6:	e171                	bnez	a0,e8845b8a <_BonjourService_GetDeviceID.constprop.3+0x10a>
		require_action( keyPtr, exit, err = kNotFoundErr );
    e8845ac8:	7579                	lui	a0,0xffffe
    e8845aca:	5b950513          	addi	a0,a0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
}
    e8845ace:	60ba                	ld	ra,392(sp)
    e8845ad0:	641a                	ld	s0,384(sp)
    e8845ad2:	74f6                	ld	s1,376(sp)
    e8845ad4:	7956                	ld	s2,368(sp)
    e8845ad6:	79b6                	ld	s3,360(sp)
    e8845ad8:	7a16                	ld	s4,352(sp)
    e8845ada:	6af6                	ld	s5,344(sp)
    e8845adc:	6159                	addi	sp,sp,400
    e8845ade:	8082                	ret
		( stricmp( inService->type, "_mfi-config._tcp." ) == 0 ) )
    e8845ae0:	7008                	ld	a0,32(s0)
    e8845ae2:	00078597          	auipc	a1,0x78
    e8845ae6:	5f658593          	addi	a1,a1,1526 # e88be0d8 <__PRETTY_FUNCTION__.10585+0x310>
    e8845aea:	05f360ef          	jal	ra,e887c348 <eLIBs_stricmp>
	if( ( stricmp( inService->type, "_airplay._tcp." )    == 0 ) ||
    e8845aee:	d171                	beqz	a0,e8845ab2 <_BonjourService_GetDeviceID.constprop.3+0x32>
	else if( ( inService->browser->flags & kBonjourBrowserFlag_StandardID ) || 
    e8845af0:	681c                	ld	a5,16(s0)
    e8845af2:	77bc                	ld	a5,104(a5)
    e8845af4:	00479713          	slli	a4,a5,0x4
    e8845af8:	00075963          	bgez	a4,e8845b0a <_BonjourService_GetDeviceID.constprop.3+0x8a>
		keyPtr = (const char *) TXTRecordGetValuePtr( txtLen, txtPtr, "id", &keyLen );
    e8845afc:	02710693          	addi	a3,sp,39
    e8845b00:	00078617          	auipc	a2,0x78
    e8845b04:	5f060613          	addi	a2,a2,1520 # e88be0f0 <__PRETTY_FUNCTION__.10585+0x328>
    e8845b08:	bf5d                	j	e8845abe <_BonjourService_GetDeviceID.constprop.3+0x3e>
			 ( stricmp( inService->type, "_hap._tcp." ) == 0 ) )
    e8845b0a:	7008                	ld	a0,32(s0)
    e8845b0c:	00078597          	auipc	a1,0x78
    e8845b10:	5ec58593          	addi	a1,a1,1516 # e88be0f8 <__PRETTY_FUNCTION__.10585+0x330>
    e8845b14:	035360ef          	jal	ra,e887c348 <eLIBs_stricmp>
	else if( ( inService->browser->flags & kBonjourBrowserFlag_StandardID ) || 
    e8845b18:	d175                	beqz	a0,e8845afc <_BonjourService_GetDeviceID.constprop.3+0x7c>
	else if( stricmp( inService->type, "_airport._tcp." ) == 0 )
    e8845b1a:	7008                	ld	a0,32(s0)
    e8845b1c:	00078597          	auipc	a1,0x78
    e8845b20:	56458593          	addi	a1,a1,1380 # e88be080 <__PRETTY_FUNCTION__.10585+0x2b8>
    e8845b24:	025360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8845b28:	e155                	bnez	a0,e8845bcc <_BonjourService_GetDeviceID.constprop.3+0x14c>
		require_action( txtLen > 0, exit, err = kSizeErr );
    e8845b2a:	100a0663          	beqz	s4,e8845c36 <_BonjourService_GetDeviceID.constprop.3+0x1b6>
		end = src + ( txtLen - 1 );
    e8845b2e:	3c09390b          	extu	s2,s2,15,0
    e8845b32:	197d                	addi	s2,s2,-1
		src = ( (const char *) txtPtr ) + 1;
    e8845b34:	04c5                	addi	s1,s1,17
    e8845b36:	f826                	sd	s1,48(sp)
		keyLen = 0;
    e8845b38:	020103a3          	sb	zero,39(sp)
		end = src + ( txtLen - 1 );
    e8845b3c:	94ca                	add	s1,s1,s2
		while( ParseCommaSeparatedNameValuePair( src, end, nameStr, sizeof( nameStr ), &nameLen, NULL, 
    e8845b3e:	00a0                	addi	s0,sp,72
    e8845b40:	03010913          	addi	s2,sp,48
			if( strnicmpx( nameStr, nameLen, "waMA" ) == 0 )
    e8845b44:	00078a17          	auipc	s4,0x78
    e8845b48:	5c4a0a13          	addi	s4,s4,1476 # e88be108 <__PRETTY_FUNCTION__.10585+0x340>
		while( ParseCommaSeparatedNameValuePair( src, end, nameStr, sizeof( nameStr ), &nameLen, NULL, 
    e8845b4c:	7542                	ld	a0,48(sp)
    e8845b4e:	e84a                	sd	s2,16(sp)
    e8845b50:	e402                	sd	zero,8(sp)
    e8845b52:	e022                	sd	s0,0(sp)
    e8845b54:	10000893          	li	a7,256
    e8845b58:	05010813          	addi	a6,sp,80
    e8845b5c:	4781                	li	a5,0
    e8845b5e:	0098                	addi	a4,sp,64
    e8845b60:	46a1                	li	a3,8
    e8845b62:	1830                	addi	a2,sp,56
    e8845b64:	85a6                	mv	a1,s1
    e8845b66:	28a1a0ef          	jal	ra,e885fdf0 <ParseCommaSeparatedNameValuePair>
    e8845b6a:	fd39                	bnez	a0,e8845ac8 <_BonjourService_GetDeviceID.constprop.3+0x48>
			if( strnicmpx( nameStr, nameLen, "waMA" ) == 0 )
    e8845b6c:	6586                	ld	a1,64(sp)
    e8845b6e:	8652                	mv	a2,s4
    e8845b70:	1828                	addi	a0,sp,56
    e8845b72:	5eb190ef          	jal	ra,e885f95c <strnicmpx>
    e8845b76:	f979                	bnez	a0,e8845b4c <_BonjourService_GetDeviceID.constprop.3+0xcc>
				keyLen = (uint8_t) valueLen;
    e8845b78:	65a6                	ld	a1,72(sp)
		err = TextToMACAddress( keyPtr, keyLen, deviceID );
    e8845b7a:	1034                	addi	a3,sp,40
    e8845b7c:	4619                	li	a2,6
				keyLen = (uint8_t) valueLen;
    e8845b7e:	02b103a3          	sb	a1,39(sp)
		err = TextToMACAddress( keyPtr, keyLen, deviceID );
    e8845b82:	0888                	addi	a0,sp,80
    e8845b84:	0ff5f593          	andi	a1,a1,255
    e8845b88:	a029                	j	e8845b92 <_BonjourService_GetDeviceID.constprop.3+0x112>
		err = TextToMACAddress( keyPtr, keyLen, deviceID );
    e8845b8a:	02714583          	lbu	a1,39(sp)
    e8845b8e:	1034                	addi	a3,sp,40
    e8845b90:	4619                	li	a2,6
		err = TextToMACAddress( keyPtr, keyLen, deviceID );
    e8845b92:	40a190ef          	jal	ra,e885ef9c <TextToHardwareAddress>
		require_noerr( err, exit );
    e8845b96:	fd05                	bnez	a0,e8845ace <_BonjourService_GetDeviceID.constprop.3+0x4e>
		keyPtr = MACAddressToCString( deviceID, valueStr );
    e8845b98:	0890                	addi	a2,sp,80
    e8845b9a:	4599                	li	a1,6
    e8845b9c:	1028                	addi	a0,sp,40
    e8845b9e:	4e4190ef          	jal	ra,e885f082 <HardwareAddressToCString>
    e8845ba2:	842a                	mv	s0,a0
		keyLen = (uint8_t) strlen( keyPtr );
    e8845ba4:	774360ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8845ba8:	02a103a3          	sb	a0,39(sp)
	require_action( keyLen < inKeyMaxLen, exit, err = kSizeErr );
    e8845bac:	02714603          	lbu	a2,39(sp)
    e8845bb0:	03f00793          	li	a5,63
    e8845bb4:	08c7e163          	bltu	a5,a2,e8845c36 <_BonjourService_GetDeviceID.constprop.3+0x1b6>
	memcpy( inKeyBuf, keyPtr, keyLen );
    e8845bb8:	85a2                	mv	a1,s0
    e8845bba:	854e                	mv	a0,s3
    e8845bbc:	7e4360ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	inKeyBuf[ keyLen ] = '\0';
    e8845bc0:	02714783          	lbu	a5,39(sp)
	err = kNoErr;
    e8845bc4:	4501                	li	a0,0
	inKeyBuf[ keyLen ] = '\0';
    e8845bc6:	00f9d00b          	srb	zero,s3,a5,0
	err = kNoErr;
    e8845bca:	b711                	j	e8845ace <_BonjourService_GetDeviceID.constprop.3+0x4e>
	else if( stricmp( inService->type, "_raop._tcp." ) == 0 )
    e8845bcc:	7008                	ld	a0,32(s0)
    e8845bce:	00078597          	auipc	a1,0x78
    e8845bd2:	4c258593          	addi	a1,a1,1218 # e88be090 <__PRETTY_FUNCTION__.10585+0x2c8>
    e8845bd6:	772360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8845bda:	e10d                	bnez	a0,e8845bfc <_BonjourService_GetDeviceID.constprop.3+0x17c>
		keyPtr = strchr( inService->name, '@' );
    e8845bdc:	6c08                	ld	a0,24(s0)
    e8845bde:	04000593          	li	a1,64
    e8845be2:	78a360ef          	jal	ra,e887c36c <eLIBs_strchr>
    e8845be6:	85aa                	mv	a1,a0
		require_action( keyPtr, exit, err = kMalformedErr );
    e8845be8:	c139                	beqz	a0,e8845c2e <_BonjourService_GetDeviceID.constprop.3+0x1ae>
		keyLen = (uint8_t)( keyPtr - inService->name );
    e8845bea:	6c08                	ld	a0,24(s0)
		err = TextToMACAddress( keyPtr, keyLen, deviceID );
    e8845bec:	1034                	addi	a3,sp,40
    e8845bee:	4619                	li	a2,6
		keyLen = (uint8_t)( keyPtr - inService->name );
    e8845bf0:	8d89                	sub	a1,a1,a0
    e8845bf2:	02b103a3          	sb	a1,39(sp)
		err = TextToMACAddress( keyPtr, keyLen, deviceID );
    e8845bf6:	0ff5f593          	andi	a1,a1,255
    e8845bfa:	bf61                	j	e8845b92 <_BonjourService_GetDeviceID.constprop.3+0x112>
		dlogassert( "Unsupported service type '%s'", inService->type );
    e8845bfc:	02043883          	ld	a7,32(s0)
    e8845c00:	4501                	li	a0,0
    e8845c02:	00078817          	auipc	a6,0x78
    e8845c06:	50e80813          	addi	a6,a6,1294 # e88be110 <__PRETTY_FUNCTION__.10585+0x348>
    e8845c0a:	00079797          	auipc	a5,0x79
    e8845c0e:	86e78793          	addi	a5,a5,-1938 # e88be478 <__PRETTY_FUNCTION__.10808>
    e8845c12:	75000713          	li	a4,1872
    e8845c16:	00078697          	auipc	a3,0x78
    e8845c1a:	51a68693          	addi	a3,a3,1306 # e88be130 <__PRETTY_FUNCTION__.10585+0x368>
    e8845c1e:	4601                	li	a2,0
    e8845c20:	4581                	li	a1,0
    e8845c22:	7a6080ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kUnsupportedErr;
    e8845c26:	7579                	lui	a0,0xffffe
    e8845c28:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e8845c2c:	b54d                	j	e8845ace <_BonjourService_GetDeviceID.constprop.3+0x4e>
		require_action( keyPtr, exit, err = kMalformedErr );
    e8845c2e:	7579                	lui	a0,0xffffe
    e8845c30:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e8845c34:	bd69                	j	e8845ace <_BonjourService_GetDeviceID.constprop.3+0x4e>
	require_action( keyLen < inKeyMaxLen, exit, err = kSizeErr );
    e8845c36:	7579                	lui	a0,0xffffe
    e8845c38:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e8845c3c:	bd49                	j	e8845ace <_BonjourService_GetDeviceID.constprop.3+0x4e>

00000000e8845c3e <calloc.constprop.4>:
    p = malloc(len);
    e8845c3e:	0005061b          	sext.w	a2,a0
static inline void *calloc(size_t nitems, size_t size)
    e8845c42:	1101                	addi	sp,sp,-32
    p = malloc(len);
    e8845c44:	8532                	mv	a0,a2
static inline void *calloc(size_t nitems, size_t size)
    e8845c46:	ec06                	sd	ra,24(sp)
    e8845c48:	e822                	sd	s0,16(sp)
    p = malloc(len);
    e8845c4a:	e432                	sd	a2,8(sp)
    e8845c4c:	403350ef          	jal	ra,e887b84e <my_malloc>
    e8845c50:	842a                	mv	s0,a0
    memset(p,0,len);
    e8845c52:	6622                	ld	a2,8(sp)
    e8845c54:	4581                	li	a1,0
    e8845c56:	73e360ef          	jal	ra,e887c394 <eLIBs_memset>
}
    e8845c5a:	8522                	mv	a0,s0
    e8845c5c:	60e2                	ld	ra,24(sp)
    e8845c5e:	6442                	ld	s0,16(sp)
    e8845c60:	6105                	addi	sp,sp,32
    e8845c62:	8082                	ret

00000000e8845c64 <_BonjourBrowser_PostEvent>:
{
    e8845c64:	715d                	addi	sp,sp,-80
    e8845c66:	e486                	sd	ra,72(sp)
    e8845c68:	e0a2                	sd	s0,64(sp)
    e8845c6a:	fc26                	sd	s1,56(sp)
    e8845c6c:	f84a                	sd	s2,48(sp)
    e8845c6e:	f44e                	sd	s3,40(sp)
    e8845c70:	f052                	sd	s4,32(sp)
	require_action_quiet( inBrowser->eventHandler_f, exit, err = kNoErr );
    e8845c72:	7d3c                	ld	a5,120(a0)
    e8845c74:	eb99                	bnez	a5,e8845c8a <_BonjourBrowser_PostEvent+0x26>
    e8845c76:	ca02                	sw	zero,20(sp)
}
    e8845c78:	60a6                	ld	ra,72(sp)
    e8845c7a:	6406                	ld	s0,64(sp)
    e8845c7c:	4552                	lw	a0,20(sp)
    e8845c7e:	74e2                	ld	s1,56(sp)
    e8845c80:	7942                	ld	s2,48(sp)
    e8845c82:	79a2                	ld	s3,40(sp)
    e8845c84:	7a02                	ld	s4,32(sp)
    e8845c86:	6161                	addi	sp,sp,80
    e8845c88:	8082                	ret
    e8845c8a:	892a                	mv	s2,a0
    e8845c8c:	8a2e                	mv	s4,a1
    e8845c8e:	8432                	mv	s0,a2
	if( inDevice )
    e8845c90:	ce51                	beqz	a2,e8845d2c <_BonjourBrowser_PostEvent+0xc8>
		deviceInfo = _BonjourDevice_CreateDictionary( inDevice, &err );
    e8845c92:	8532                	mv	a0,a2
    e8845c94:	084c                	addi	a1,sp,20
    e8845c96:	84b6                	mv	s1,a3
    e8845c98:	b31ff0ef          	jal	ra,e88457c8 <_BonjourDevice_CreateDictionary>
    e8845c9c:	862a                	mv	a2,a0
		require_noerr( err, exit );
    e8845c9e:	47d2                	lw	a5,20(sp)
    e8845ca0:	ffe1                	bnez	a5,e8845c78 <_BonjourBrowser_PostEvent+0x14>
		CFReleaseNullSafe( inDevice->deviceInfo );
    e8845ca2:	6828                	ld	a0,80(s0)
    e8845ca4:	c509                	beqz	a0,e8845cae <_BonjourBrowser_PostEvent+0x4a>
    e8845ca6:	e432                	sd	a2,8(sp)
    e8845ca8:	4a2010ef          	jal	ra,e884714a <CFRelease>
    e8845cac:	6622                	ld	a2,8(sp)
		inDevice->deviceInfo = deviceInfo;
    e8845cae:	e830                	sd	a2,80(s0)
		if( inRemovedService )
    e8845cb0:	c0c1                	beqz	s1,e8845d30 <_BonjourBrowser_PostEvent+0xcc>
			mutableDeviceInfo = CFDictionaryCreateMutableCopy( NULL, 0, deviceInfo );
    e8845cb2:	4581                	li	a1,0
    e8845cb4:	4501                	li	a0,0
    e8845cb6:	75e010ef          	jal	ra,e8847414 <CFDictionaryCreateMutableCopy>
    e8845cba:	842a                	mv	s0,a0
			require_action( mutableDeviceInfo, exit, err = kNoMemoryErr );
    e8845cbc:	e919                	bnez	a0,e8845cd2 <_BonjourBrowser_PostEvent+0x6e>
    e8845cbe:	77f9                	lui	a5,0xffffe
    e8845cc0:	5b87879b          	addiw	a5,a5,1464
    e8845cc4:	ca3e                	sw	a5,20(sp)
			mutableDeviceInfo = CFDictionaryCreateMutableCopy( NULL, 0, deviceInfo );
    e8845cc6:	84a2                	mv	s1,s0
	CFReleaseNullSafe( mutableDeviceInfo );
    e8845cc8:	d8c5                	beqz	s1,e8845c78 <_BonjourBrowser_PostEvent+0x14>
    e8845cca:	8526                	mv	a0,s1
    e8845ccc:	47e010ef          	jal	ra,e884714a <CFRelease>
    e8845cd0:	b765                	j	e8845c78 <_BonjourBrowser_PostEvent+0x14>
			serviceDict = _BonjourService_CreateDictionary( inRemovedService, &err );
    e8845cd2:	084c                	addi	a1,sp,20
    e8845cd4:	8526                	mv	a0,s1
    e8845cd6:	e7eff0ef          	jal	ra,e8845354 <_BonjourService_CreateDictionary>
    e8845cda:	89aa                	mv	s3,a0
			require_noerr( err, exit );
    e8845cdc:	47d2                	lw	a5,20(sp)
    e8845cde:	f7e5                	bnez	a5,e8845cc6 <_BonjourBrowser_PostEvent+0x62>
			objects[ 0 ] = serviceDict;
    e8845ce0:	ec2a                	sd	a0,24(sp)
			removedServices = CFArrayCreate( NULL, objects, 1, &kCFTypeArrayCallBacks );
    e8845ce2:	00079697          	auipc	a3,0x79
    e8845ce6:	a8e68693          	addi	a3,a3,-1394 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e8845cea:	4605                	li	a2,1
    e8845cec:	082c                	addi	a1,sp,24
    e8845cee:	4501                	li	a0,0
    e8845cf0:	47c010ef          	jal	ra,e884716c <CFArrayCreate>
    e8845cf4:	84aa                	mv	s1,a0
			CFRelease( serviceDict );
    e8845cf6:	854e                	mv	a0,s3
    e8845cf8:	452010ef          	jal	ra,e884714a <CFRelease>
			require_action( removedServices, exit, err = kNoMemoryErr );
    e8845cfc:	d0e9                	beqz	s1,e8845cbe <_BonjourBrowser_PostEvent+0x5a>
			CFDictionarySetValue( mutableDeviceInfo, CFSTR( kBonjourDeviceKey_RemovedServices ), removedServices );
    e8845cfe:	8626                	mv	a2,s1
    e8845d00:	00057597          	auipc	a1,0x57
    e8845d04:	4b058593          	addi	a1,a1,1200 # e889d1b0 <icmp6_param_problem+0x142>
    e8845d08:	8522                	mv	a0,s0
    e8845d0a:	748010ef          	jal	ra,e8847452 <CFDictionarySetValue>
			CFRelease( removedServices );
    e8845d0e:	8526                	mv	a0,s1
    e8845d10:	43a010ef          	jal	ra,e884714a <CFRelease>
			deviceInfo = mutableDeviceInfo;
    e8845d14:	84a2                	mv	s1,s0
	params = (BonjourBrowser_PostEventParams *) calloc( 1, sizeof( *params ) );
    e8845d16:	02000513          	li	a0,32
    e8845d1a:	f25ff0ef          	jal	ra,e8845c3e <calloc.constprop.4>
    e8845d1e:	85aa                	mv	a1,a0
	require_action( params, exit, err = kNoMemoryErr );
    e8845d20:	e911                	bnez	a0,e8845d34 <_BonjourBrowser_PostEvent+0xd0>
    e8845d22:	77f9                	lui	a5,0xffffe
    e8845d24:	5b87879b          	addiw	a5,a5,1464
    e8845d28:	ca3e                	sw	a5,20(sp)
    e8845d2a:	bf79                	j	e8845cc8 <_BonjourBrowser_PostEvent+0x64>
	CFMutableDictionaryRef		mutableDeviceInfo = NULL;
    e8845d2c:	4481                	li	s1,0
    e8845d2e:	b7e5                	j	e8845d16 <_BonjourBrowser_PostEvent+0xb2>
		deviceInfo = _BonjourDevice_CreateDictionary( inDevice, &err );
    e8845d30:	8432                	mv	s0,a2
    e8845d32:	b7d5                	j	e8845d16 <_BonjourBrowser_PostEvent+0xb2>
	params->eventType			= inEventType;
    e8845d34:	01452823          	sw	s4,16(a0)
	params->eventHandler_f		= inBrowser->eventHandler_f;
    e8845d38:	07893783          	ld	a5,120(s2)
    e8845d3c:	e11c                	sd	a5,0(a0)
	params->eventHandler_ctx	= inBrowser->eventHandler_ctx;
    e8845d3e:	08093783          	ld	a5,128(s2)
	params->deviceInfo			= deviceInfo;
    e8845d42:	ed00                	sd	s0,24(a0)
	params->eventHandler_ctx	= inBrowser->eventHandler_ctx;
    e8845d44:	e51c                	sd	a5,8(a0)
	CFRetainNullSafe( deviceInfo );
    e8845d46:	c411                	beqz	s0,e8845d52 <_BonjourBrowser_PostEvent+0xee>
    e8845d48:	e42a                	sd	a0,8(sp)
    e8845d4a:	8522                	mv	a0,s0
    e8845d4c:	3fa010ef          	jal	ra,e8847146 <CFRetain>
    e8845d50:	65a2                	ld	a1,8(sp)
	dispatch_async_f( inBrowser->eventQueue, params, _BonjourBrowser_PostEventOnEventQueue );
    e8845d52:	07093503          	ld	a0,112(s2)
    e8845d56:	fffff617          	auipc	a2,0xfffff
    e8845d5a:	53860613          	addi	a2,a2,1336 # e884528e <_BonjourBrowser_PostEventOnEventQueue>
    e8845d5e:	6c3080ef          	jal	ra,e884ec20 <dispatch_async_f>
	err = kNoErr;
    e8845d62:	ca02                	sw	zero,20(sp)
    e8845d64:	b795                	j	e8845cc8 <_BonjourBrowser_PostEvent+0x64>

00000000e8845d66 <_BonjourBrowser_RemoveService>:
{
    e8845d66:	1101                	addi	sp,sp,-32
    e8845d68:	ec06                	sd	ra,24(sp)
    e8845d6a:	e422                	sd	s0,8(sp)
    e8845d6c:	e826                	sd	s1,16(sp)
	device = inService->device;
    e8845d6e:	6da0                	ld	s0,88(a1)
	if( !device ) goto exit;
    e8845d70:	c82d                	beqz	s0,e8845de2 <_BonjourBrowser_RemoveService+0x7c>
	for( serviceNext = &device->services; ( service = *serviceNext ) != NULL; serviceNext = &service->nextForDevice )
    e8845d72:	6c3c                	ld	a5,88(s0)
    e8845d74:	05840713          	addi	a4,s0,88
    e8845d78:	c789                	beqz	a5,e8845d82 <_BonjourBrowser_RemoveService+0x1c>
		if( service == inService )
    e8845d7a:	6794                	ld	a3,8(a5)
    e8845d7c:	04f59063          	bne	a1,a5,e8845dbc <_BonjourBrowser_RemoveService+0x56>
			*serviceNext = service->nextForDevice;
    e8845d80:	e314                	sd	a3,0(a4)
	if( device->services == NULL )
    e8845d82:	6c3c                	ld	a5,88(s0)
    e8845d84:	84b2                	mv	s1,a2
    e8845d86:	86ae                	mv	a3,a1
    e8845d88:	e3a9                	bnez	a5,e8845dca <_BonjourBrowser_RemoveService+0x64>
		for( deviceNext = &inBrowser->devices; ( deviceCurr = *deviceNext ) != NULL; deviceNext = &deviceCurr->next )
    e8845d8a:	791c                	ld	a5,48(a0)
    e8845d8c:	03050713          	addi	a4,a0,48
    e8845d90:	c789                	beqz	a5,e8845d9a <_BonjourBrowser_RemoveService+0x34>
			if( deviceCurr == device )
    e8845d92:	6390                	ld	a2,0(a5)
    e8845d94:	02f41863          	bne	s0,a5,e8845dc4 <_BonjourBrowser_RemoveService+0x5e>
				*deviceNext = device->next;
    e8845d98:	e310                	sd	a2,0(a4)
		_BonjourBrowser_PostEvent( inBrowser, kBonjourBrowserEventType_RemoveDevice, device, inService );
    e8845d9a:	8622                	mv	a2,s0
    e8845d9c:	4589                	li	a1,2
    e8845d9e:	ec7ff0ef          	jal	ra,e8845c64 <_BonjourBrowser_PostEvent>
	ForgetCF( &inDevice->deviceInfo );
    e8845da2:	6828                	ld	a0,80(s0)
    e8845da4:	c509                	beqz	a0,e8845dae <_BonjourBrowser_RemoveService+0x48>
    e8845da6:	3a4010ef          	jal	ra,e884714a <CFRelease>
    e8845daa:	04043823          	sd	zero,80(s0)
	free( inDevice );
    e8845dae:	8522                	mv	a0,s0
}
    e8845db0:	6422                	ld	s0,8(sp)
    e8845db2:	60e2                	ld	ra,24(sp)
    e8845db4:	64c2                	ld	s1,16(sp)
    e8845db6:	6105                	addi	sp,sp,32
	free( inDevice );
    e8845db8:	5483606f          	j	e887c300 <eLIBs_free>
	for( serviceNext = &device->services; ( service = *serviceNext ) != NULL; serviceNext = &service->nextForDevice )
    e8845dbc:	00878713          	addi	a4,a5,8 # ffffffffffffe008 <__DRAM0_INF_BASE+0xffffffff0000e008>
    e8845dc0:	87b6                	mv	a5,a3
    e8845dc2:	bf5d                	j	e8845d78 <_BonjourBrowser_RemoveService+0x12>
		for( deviceNext = &inBrowser->devices; ( deviceCurr = *deviceNext ) != NULL; deviceNext = &deviceCurr->next )
    e8845dc4:	873e                	mv	a4,a5
    e8845dc6:	87b2                	mv	a5,a2
    e8845dc8:	b7e1                	j	e8845d90 <_BonjourBrowser_RemoveService+0x2a>
		_BonjourBrowser_PostEvent( inBrowser, kBonjourBrowserEventType_AddOrUpdateDevice, device, inService );
    e8845dca:	8622                	mv	a2,s0
    e8845dcc:	4585                	li	a1,1
    e8845dce:	e97ff0ef          	jal	ra,e8845c64 <_BonjourBrowser_PostEvent>
		if( inUpdateTXT ) _BonjourDevice_UpdateTXTQueries( device );
    e8845dd2:	c881                	beqz	s1,e8845de2 <_BonjourBrowser_RemoveService+0x7c>
    e8845dd4:	8522                	mv	a0,s0
}
    e8845dd6:	6422                	ld	s0,8(sp)
    e8845dd8:	60e2                	ld	ra,24(sp)
    e8845dda:	64c2                	ld	s1,16(sp)
    e8845ddc:	6105                	addi	sp,sp,32
		if( inUpdateTXT ) _BonjourDevice_UpdateTXTQueries( device );
    e8845dde:	8f5ff06f          	j	e88456d2 <_BonjourDevice_UpdateTXTQueries>
}
    e8845de2:	60e2                	ld	ra,24(sp)
    e8845de4:	6422                	ld	s0,8(sp)
    e8845de6:	64c2                	ld	s1,16(sp)
    e8845de8:	6105                	addi	sp,sp,32
    e8845dea:	8082                	ret

00000000e8845dec <_BonjourService_TXTHandler>:
{
    e8845dec:	7115                	addi	sp,sp,-224
    e8845dee:	e9a2                	sd	s0,208(sp)
    e8845df0:	744e                	ld	s0,240(sp)
    e8845df2:	e5a6                	sd	s1,200(sp)
    e8845df4:	f952                	sd	s4,176(sp)
    e8845df6:	ed86                	sd	ra,216(sp)
    e8845df8:	e1ca                	sd	s2,192(sp)
    e8845dfa:	fd4e                	sd	s3,184(sp)
    e8845dfc:	f556                	sd	s5,168(sp)
    e8845dfe:	f15a                	sd	s6,160(sp)
    e8845e00:	ed5e                	sd	s7,152(sp)
    e8845e02:	e962                	sd	s8,144(sp)
    e8845e04:	e566                	sd	s9,136(sp)
    e8845e06:	e16a                	sd	s10,128(sp)
    e8845e08:	fcee                	sd	s11,120(sp)
    e8845e0a:	0008f517          	auipc	a0,0x8f
    e8845e0e:	dd650513          	addi	a0,a0,-554 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8845e12:	84c6                	mv	s1,a7
    e8845e14:	7a0e                	ld	s4,224(sp)
	BonjourBrowserRef const		browser = service->browser;
    e8845e16:	01043903          	ld	s2,16(s0)
	require_noerr_action_quiet( inError, exit, // This probably means discoveryd crashed. Ignore here. PTR handler will retry.
    e8845e1a:	00052883          	lw	a7,0(a0)
    e8845e1e:	c2b5                	beqz	a3,e8845e82 <_BonjourService_TXTHandler+0x96>
    e8845e20:	03c00793          	li	a5,60
    e8845e24:	0317c863          	blt	a5,a7,e8845e54 <_BonjourService_TXTHandler+0x68>
    e8845e28:	57fd                	li	a5,-1
    e8845e2a:	04f88463          	beq	a7,a5,e8845e72 <_BonjourService_TXTHandler+0x86>
    e8845e2e:	05093703          	ld	a4,80(s2)
    e8845e32:	87b6                	mv	a5,a3
    e8845e34:	03c00613          	li	a2,60
    e8845e38:	00078697          	auipc	a3,0x78
    e8845e3c:	3b068693          	addi	a3,a3,944 # e88be1e8 <__PRETTY_FUNCTION__.10585+0x420>
    e8845e40:	00078597          	auipc	a1,0x78
    e8845e44:	5d858593          	addi	a1,a1,1496 # e88be418 <__PRETTY_FUNCTION__.10739>
    e8845e48:	0008f517          	auipc	a0,0x8f
    e8845e4c:	d9850513          	addi	a0,a0,-616 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8845e50:	6240e0ef          	jal	ra,e8854474 <LogPrintF>
}
    e8845e54:	60ee                	ld	ra,216(sp)
    e8845e56:	644e                	ld	s0,208(sp)
    e8845e58:	64ae                	ld	s1,200(sp)
    e8845e5a:	690e                	ld	s2,192(sp)
    e8845e5c:	79ea                	ld	s3,184(sp)
    e8845e5e:	7a4a                	ld	s4,176(sp)
    e8845e60:	7aaa                	ld	s5,168(sp)
    e8845e62:	7b0a                	ld	s6,160(sp)
    e8845e64:	6bea                	ld	s7,152(sp)
    e8845e66:	6c4a                	ld	s8,144(sp)
    e8845e68:	6caa                	ld	s9,136(sp)
    e8845e6a:	6d0a                	ld	s10,128(sp)
    e8845e6c:	7de6                	ld	s11,120(sp)
    e8845e6e:	612d                	addi	sp,sp,224
    e8845e70:	8082                	ret
	require_noerr_action_quiet( inError, exit, // This probably means discoveryd crashed. Ignore here. PTR handler will retry.
    e8845e72:	03c00593          	li	a1,60
    e8845e76:	f036                	sd	a3,32(sp)
    e8845e78:	1fa0e0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8845e7c:	7682                	ld	a3,32(sp)
    e8845e7e:	d979                	beqz	a0,e8845e54 <_BonjourService_TXTHandler+0x68>
    e8845e80:	b77d                	j	e8845e2e <_BonjourService_TXTHandler+0x42>
    e8845e82:	87ba                	mv	a5,a4
	require_action( browser->started, exit, bb_ulog( kLogLevelWarning, "### TXT response after stop\n" ) );
    e8845e84:	03894703          	lbu	a4,56(s2)
    e8845e88:	ef1d                	bnez	a4,e8845ec6 <_BonjourService_TXTHandler+0xda>
    e8845e8a:	03c00793          	li	a5,60
    e8845e8e:	fd17c3e3          	blt	a5,a7,e8845e54 <_BonjourService_TXTHandler+0x68>
    e8845e92:	57fd                	li	a5,-1
    e8845e94:	02f88363          	beq	a7,a5,e8845eba <_BonjourService_TXTHandler+0xce>
    e8845e98:	00078697          	auipc	a3,0x78
    e8845e9c:	37868693          	addi	a3,a3,888 # e88be210 <__PRETTY_FUNCTION__.10585+0x448>
    e8845ea0:	03c00613          	li	a2,60
    e8845ea4:	00078597          	auipc	a1,0x78
    e8845ea8:	57458593          	addi	a1,a1,1396 # e88be418 <__PRETTY_FUNCTION__.10739>
    e8845eac:	0008f517          	auipc	a0,0x8f
    e8845eb0:	d3450513          	addi	a0,a0,-716 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8845eb4:	5c00e0ef          	jal	ra,e8854474 <LogPrintF>
    e8845eb8:	bf71                	j	e8845e54 <_BonjourService_TXTHandler+0x68>
    e8845eba:	03c00593          	li	a1,60
    e8845ebe:	1b40e0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8845ec2:	d949                	beqz	a0,e8845e54 <_BonjourService_TXTHandler+0x68>
    e8845ec4:	bfd1                	j	e8845e98 <_BonjourService_TXTHandler+0xac>
	bb_ulog( kLogLevelVerbose, "Bonjour TXT %s %s on %u\n", add ? "Add" : "Rmv", inFullName, inIfIndex );
    e8845ec6:	4751                	li	a4,20
    e8845ec8:	8aaa                	mv	s5,a0
	add = ( inFlags & kDNSServiceFlagsAdd ) ? true : false;
    e8845eca:	0415b98b          	extu	s3,a1,1,1
	bb_ulog( kLogLevelVerbose, "Bonjour TXT %s %s on %u\n", add ? "Add" : "Rmv", inFullName, inIfIndex );
    e8845ece:	05174863          	blt	a4,a7,e8845f1e <_BonjourService_TXTHandler+0x132>
    e8845ed2:	577d                	li	a4,-1
    e8845ed4:	02e88d63          	beq	a7,a4,e8845f0e <_BonjourService_TXTHandler+0x122>
    e8845ed8:	0005e717          	auipc	a4,0x5e
    e8845edc:	2d870713          	addi	a4,a4,728 # e88a41b0 <end.8789+0xb08>
    e8845ee0:	00099663          	bnez	s3,e8845eec <_BonjourService_TXTHandler+0x100>
    e8845ee4:	0005e717          	auipc	a4,0x5e
    e8845ee8:	2d470713          	addi	a4,a4,724 # e88a41b8 <end.8789+0xb10>
    e8845eec:	8832                	mv	a6,a2
    e8845eee:	00078697          	auipc	a3,0x78
    e8845ef2:	34268693          	addi	a3,a3,834 # e88be230 <__PRETTY_FUNCTION__.10585+0x468>
    e8845ef6:	4651                	li	a2,20
    e8845ef8:	00078597          	auipc	a1,0x78
    e8845efc:	52058593          	addi	a1,a1,1312 # e88be418 <__PRETTY_FUNCTION__.10739>
    e8845f00:	0008f517          	auipc	a0,0x8f
    e8845f04:	ce050513          	addi	a0,a0,-800 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8845f08:	56c0e0ef          	jal	ra,e8854474 <LogPrintF>
    e8845f0c:	a809                	j	e8845f1e <_BonjourService_TXTHandler+0x132>
    e8845f0e:	45d1                	li	a1,20
    e8845f10:	f43e                	sd	a5,40(sp)
    e8845f12:	f032                	sd	a2,32(sp)
    e8845f14:	15e0e0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8845f18:	fcf1460b          	ldd	a2,a5,(sp),2,4
    e8845f1c:	fd55                	bnez	a0,e8845ed8 <_BonjourService_TXTHandler+0xec>
	if( add )	_BonjourService_AddRData(    service, inRData, inRDataSize );
    e8845f1e:	6828                	ld	a0,80(s0)
    e8845f20:	1c098063          	beqz	s3,e88460e0 <_BonjourService_TXTHandler+0x2f4>
	if( inService->txtRDataList && log_category_enabled( bb_issues_ucat(), kLogLevelInfo ) )
    e8845f24:	e15d                	bnez	a0,e8845fca <_BonjourService_TXTHandler+0x1de>
	for( obj = inService->txtRDataList; obj; obj = obj->next )
    e8845f26:	683c                	ld	a5,80(s0)
    e8845f28:	18079b63          	bnez	a5,e88460be <_BonjourService_TXTHandler+0x2d2>
	obj = (BonjourRDataRef) calloc( 1, offsetof( struct BonjourRData, rdata ) + inRDLen );
    e8845f2c:	01048513          	addi	a0,s1,16
    e8845f30:	d0fff0ef          	jal	ra,e8845c3e <calloc.constprop.4>
    e8845f34:	89aa                	mv	s3,a0
	require_action( obj, exit, err = kNoMemoryErr );
    e8845f36:	1e050b63          	beqz	a0,e884612c <_BonjourService_TXTHandler+0x340>
	obj->next  = inService->txtRDataList;
    e8845f3a:	683c                	ld	a5,80(s0)
	memcpy( obj->rdata, inRData, inRDLen );
    e8845f3c:	8626                	mv	a2,s1
    e8845f3e:	85d2                	mv	a1,s4
	obj->rdlen = inRDLen;
    e8845f40:	f895578b          	sdd	a5,s1,(a0),0,4
	memcpy( obj->rdata, inRData, inRDLen );
    e8845f44:	0541                	addi	a0,a0,16
    e8845f46:	45a360ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	inService->txtRDataList = obj;
    e8845f4a:	05343823          	sd	s3,80(s0)
		err = _BonjourService_GetDeviceID( service, deviceID, sizeof( deviceID ) );
    e8845f4e:	03010993          	addi	s3,sp,48
    e8845f52:	85ce                	mv	a1,s3
    e8845f54:	8522                	mv	a0,s0
    e8845f56:	b2bff0ef          	jal	ra,e8845a80 <_BonjourService_GetDeviceID.constprop.3>
		require_noerr( err, exit );
    e8845f5a:	ee051de3          	bnez	a0,e8845e54 <_BonjourService_TXTHandler+0x68>
		device = service->device;
    e8845f5e:	6c24                	ld	s1,88(s0)
		if( device && ( stricmp( device->deviceID, deviceID ) != 0 ) )
    e8845f60:	c0b5                	beqz	s1,e8845fc4 <_BonjourService_TXTHandler+0x1d8>
    e8845f62:	01048a13          	addi	s4,s1,16
    e8845f66:	85ce                	mv	a1,s3
    e8845f68:	8552                	mv	a0,s4
    e8845f6a:	3de360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8845f6e:	20050663          	beqz	a0,e884617a <_BonjourService_TXTHandler+0x38e>
			bb_issues_ulog( kLogLevelInfo, "Removing and re-adding %s.%s%s for stale TXT record update (%s -> %s)\n", 
    e8845f72:	0008f517          	auipc	a0,0x8f
    e8845f76:	cce50513          	addi	a0,a0,-818 # e88d4c40 <gLogCategory_BonjourIssues>
    e8845f7a:	411c                	lw	a5,0(a0)
    e8845f7c:	02800713          	li	a4,40
    e8845f80:	02f74b63          	blt	a4,a5,e8845fb6 <_BonjourService_TXTHandler+0x1ca>
    e8845f84:	577d                	li	a4,-1
    e8845f86:	1ee78363          	beq	a5,a4,e884616c <_BonjourService_TXTHandler+0x380>
    e8845f8a:	e04e                	sd	s3,0(sp)
    e8845f8c:	02843803          	ld	a6,40(s0)
    e8845f90:	701c                	ld	a5,32(s0)
    e8845f92:	6c18                	ld	a4,24(s0)
    e8845f94:	88d2                	mv	a7,s4
    e8845f96:	00078697          	auipc	a3,0x78
    e8845f9a:	36268693          	addi	a3,a3,866 # e88be2f8 <__PRETTY_FUNCTION__.10585+0x530>
    e8845f9e:	02800613          	li	a2,40
    e8845fa2:	00078597          	auipc	a1,0x78
    e8845fa6:	47658593          	addi	a1,a1,1142 # e88be418 <__PRETTY_FUNCTION__.10739>
    e8845faa:	0008f517          	auipc	a0,0x8f
    e8845fae:	c9650513          	addi	a0,a0,-874 # e88d4c40 <gLogCategory_BonjourIssues>
    e8845fb2:	4c20e0ef          	jal	ra,e8854474 <LogPrintF>
			_BonjourBrowser_RemoveService( browser, service, true );
    e8845fb6:	4605                	li	a2,1
    e8845fb8:	85a2                	mv	a1,s0
    e8845fba:	854a                	mv	a0,s2
    e8845fbc:	dabff0ef          	jal	ra,e8845d66 <_BonjourBrowser_RemoveService>
			service->device = NULL;
    e8845fc0:	04043c23          	sd	zero,88(s0)
			for( device = browser->devices; device; device = device->next )
    e8845fc4:	03093483          	ld	s1,48(s2)
    e8845fc8:	aae9                	j	e88461a2 <_BonjourService_TXTHandler+0x3b6>
	if( inService->txtRDataList && log_category_enabled( bb_issues_ucat(), kLogLevelInfo ) )
    e8845fca:	0008f997          	auipc	s3,0x8f
    e8845fce:	c7698993          	addi	s3,s3,-906 # e88d4c40 <gLogCategory_BonjourIssues>
    e8845fd2:	0009a783          	lw	a5,0(s3)
    e8845fd6:	02800713          	li	a4,40
    e8845fda:	f4f746e3          	blt	a4,a5,e8845f26 <_BonjourService_TXTHandler+0x13a>
    e8845fde:	577d                	li	a4,-1
    e8845fe0:	0ae78663          	beq	a5,a4,e884608c <_BonjourService_TXTHandler+0x2a0>
		bb_issues_ulog( kLogLevelInfo, "### Add without remove new:   %s.%s%s%%%u: %#{txt}\n", 
    e8845fe4:	0009a783          	lw	a5,0(s3)
    e8845fe8:	02800713          	li	a4,40
    e8845fec:	02f74d63          	blt	a4,a5,e8846026 <_BonjourService_TXTHandler+0x23a>
    e8845ff0:	577d                	li	a4,-1
    e8845ff2:	0ae78563          	beq	a5,a4,e884609c <_BonjourService_TXTHandler+0x2b0>
    e8845ff6:	e426                	sd	s1,8(sp)
    e8845ff8:	e052                	sd	s4,0(sp)
    e8845ffa:	03042883          	lw	a7,48(s0)
    e8845ffe:	02843803          	ld	a6,40(s0)
    e8846002:	701c                	ld	a5,32(s0)
    e8846004:	6c18                	ld	a4,24(s0)
    e8846006:	00078697          	auipc	a3,0x78
    e884600a:	24a68693          	addi	a3,a3,586 # e88be250 <__PRETTY_FUNCTION__.10585+0x488>
    e884600e:	02800613          	li	a2,40
    e8846012:	00078597          	auipc	a1,0x78
    e8846016:	42658593          	addi	a1,a1,1062 # e88be438 <__PRETTY_FUNCTION__.10753>
    e884601a:	0008f517          	auipc	a0,0x8f
    e884601e:	c2650513          	addi	a0,a0,-986 # e88d4c40 <gLogCategory_BonjourIssues>
    e8846022:	4520e0ef          	jal	ra,e8854474 <LogPrintF>
		for( obj = inService->txtRDataList; obj; obj = obj->next )
    e8846026:	05043a83          	ld	s5,80(s0)
		i = 1;
    e884602a:	4b05                	li	s6,1
			bb_issues_ulog( kLogLevelInfo, "### Add without remove old %d: %s.%s%s%%%u: %#{txt}\n", 
    e884602c:	02800c13          	li	s8,40
    e8846030:	5cfd                	li	s9,-1
    e8846032:	0008fb97          	auipc	s7,0x8f
    e8846036:	c0eb8b93          	addi	s7,s7,-1010 # e88d4c40 <gLogCategory_BonjourIssues>
    e884603a:	00078d17          	auipc	s10,0x78
    e884603e:	24ed0d13          	addi	s10,s10,590 # e88be288 <__PRETTY_FUNCTION__.10585+0x4c0>
    e8846042:	00078d97          	auipc	s11,0x78
    e8846046:	3f6d8d93          	addi	s11,s11,1014 # e88be438 <__PRETTY_FUNCTION__.10753>
		for( obj = inService->txtRDataList; obj; obj = obj->next )
    e884604a:	ec0a8ee3          	beqz	s5,e8845f26 <_BonjourService_TXTHandler+0x13a>
			bb_issues_ulog( kLogLevelInfo, "### Add without remove old %d: %s.%s%s%%%u: %#{txt}\n", 
    e884604e:	0009a783          	lw	a5,0(s3)
    e8846052:	02fc4963          	blt	s8,a5,e8846084 <_BonjourService_TXTHandler+0x298>
    e8846056:	05978d63          	beq	a5,s9,e88460b0 <_BonjourService_TXTHandler+0x2c4>
    e884605a:	008ab783          	ld	a5,8(s5)
    e884605e:	875a                	mv	a4,s6
    e8846060:	86ea                	mv	a3,s10
    e8846062:	e83e                	sd	a5,16(sp)
    e8846064:	010a8793          	addi	a5,s5,16
    e8846068:	e43e                	sd	a5,8(sp)
    e884606a:	581c                	lw	a5,48(s0)
    e884606c:	02800613          	li	a2,40
    e8846070:	85ee                	mv	a1,s11
    e8846072:	e03e                	sd	a5,0(sp)
    e8846074:	02843883          	ld	a7,40(s0)
    e8846078:	02043803          	ld	a6,32(s0)
    e884607c:	6c1c                	ld	a5,24(s0)
    e884607e:	855e                	mv	a0,s7
    e8846080:	3f40e0ef          	jal	ra,e8854474 <LogPrintF>
			++i;
    e8846084:	2b05                	addiw	s6,s6,1
		for( obj = inService->txtRDataList; obj; obj = obj->next )
    e8846086:	000aba83          	ld	s5,0(s5)
    e884608a:	b7c1                	j	e884604a <_BonjourService_TXTHandler+0x25e>
	if( inService->txtRDataList && log_category_enabled( bb_issues_ucat(), kLogLevelInfo ) )
    e884608c:	02800593          	li	a1,40
    e8846090:	854e                	mv	a0,s3
    e8846092:	7e10d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846096:	e80508e3          	beqz	a0,e8845f26 <_BonjourService_TXTHandler+0x13a>
    e884609a:	b7a9                	j	e8845fe4 <_BonjourService_TXTHandler+0x1f8>
		bb_issues_ulog( kLogLevelInfo, "### Add without remove new:   %s.%s%s%%%u: %#{txt}\n", 
    e884609c:	02800593          	li	a1,40
    e88460a0:	0008f517          	auipc	a0,0x8f
    e88460a4:	ba050513          	addi	a0,a0,-1120 # e88d4c40 <gLogCategory_BonjourIssues>
    e88460a8:	7cb0d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88460ac:	dd2d                	beqz	a0,e8846026 <_BonjourService_TXTHandler+0x23a>
    e88460ae:	b7a1                	j	e8845ff6 <_BonjourService_TXTHandler+0x20a>
			bb_issues_ulog( kLogLevelInfo, "### Add without remove old %d: %s.%s%s%%%u: %#{txt}\n", 
    e88460b0:	02800593          	li	a1,40
    e88460b4:	855e                	mv	a0,s7
    e88460b6:	7bd0d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88460ba:	d569                	beqz	a0,e8846084 <_BonjourService_TXTHandler+0x298>
    e88460bc:	bf79                	j	e884605a <_BonjourService_TXTHandler+0x26e>
		if( MemEqual( inRData, inRDLen, obj->rdata, obj->rdlen ) )
    e88460be:	6798                	ld	a4,8(a5)
    e88460c0:	00971e63          	bne	a4,s1,e88460dc <_BonjourService_TXTHandler+0x2f0>
    e88460c4:	4701                	li	a4,0
    while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
    e88460c6:	00f78593          	addi	a1,a5,15
    e88460ca:	06e48163          	beq	s1,a4,e884612c <_BonjourService_TXTHandler+0x340>
    e88460ce:	80ea468b          	lrbu	a3,s4,a4,0
    e88460d2:	0705                	addi	a4,a4,1
    e88460d4:	80e5c60b          	lrbu	a2,a1,a4,0
    e88460d8:	fed609e3          	beq	a2,a3,e88460ca <_BonjourService_TXTHandler+0x2de>
	for( obj = inService->txtRDataList; obj; obj = obj->next )
    e88460dc:	639c                	ld	a5,0(a5)
    e88460de:	b5a9                	j	e8845f28 <_BonjourService_TXTHandler+0x13c>
	for( next = &inService->txtRDataList; ( curr = *next ) != NULL; next = &curr->next )
    e88460e0:	05040713          	addi	a4,s0,80
    e88460e4:	e921                	bnez	a0,e8846134 <_BonjourService_TXTHandler+0x348>
		bb_ulog( kLogLevelInfo, "### Removed RData missing for %s.%s%s %%%u\n%1.1H\n", 
    e88460e6:	000aa783          	lw	a5,0(s5)
    e88460ea:	02800713          	li	a4,40
    e88460ee:	02f74f63          	blt	a4,a5,e884612c <_BonjourService_TXTHandler+0x340>
    e88460f2:	577d                	li	a4,-1
    e88460f4:	06e78263          	beq	a5,a4,e8846158 <_BonjourService_TXTHandler+0x36c>
    e88460f8:	2481                	sext.w	s1,s1
    e88460fa:	e826                	sd	s1,16(sp)
    e88460fc:	e426                	sd	s1,8(sp)
    e88460fe:	e052                	sd	s4,0(sp)
    e8846100:	03042883          	lw	a7,48(s0)
    e8846104:	02843803          	ld	a6,40(s0)
    e8846108:	701c                	ld	a5,32(s0)
    e884610a:	6c18                	ld	a4,24(s0)
    e884610c:	00078697          	auipc	a3,0x78
    e8846110:	1b468693          	addi	a3,a3,436 # e88be2c0 <__PRETTY_FUNCTION__.10585+0x4f8>
    e8846114:	02800613          	li	a2,40
    e8846118:	00078597          	auipc	a1,0x78
    e884611c:	34058593          	addi	a1,a1,832 # e88be458 <__PRETTY_FUNCTION__.10771>
    e8846120:	0008f517          	auipc	a0,0x8f
    e8846124:	ac050513          	addi	a0,a0,-1344 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846128:	34c0e0ef          	jal	ra,e8854474 <LogPrintF>
	if( service->txtRDataList )
    e884612c:	683c                	ld	a5,80(s0)
    e884612e:	d20783e3          	beqz	a5,e8845e54 <_BonjourService_TXTHandler+0x68>
    e8846132:	bd31                	j	e8845f4e <_BonjourService_TXTHandler+0x162>
		if( MemEqual( inRData, inRDLen, curr->rdata, curr->rdlen ) )
    e8846134:	651c                	ld	a5,8(a0)
    e8846136:	00f49e63          	bne	s1,a5,e8846152 <_BonjourService_TXTHandler+0x366>
    e884613a:	4781                	li	a5,0
    e884613c:	00f50593          	addi	a1,a0,15
    e8846140:	08f48e63          	beq	s1,a5,e88461dc <_BonjourService_TXTHandler+0x3f0>
    e8846144:	80fa468b          	lrbu	a3,s4,a5,0
    e8846148:	0785                	addi	a5,a5,1
    e884614a:	80f5c60b          	lrbu	a2,a1,a5,0
    e884614e:	fed609e3          	beq	a2,a3,e8846140 <_BonjourService_TXTHandler+0x354>
	for( next = &inService->txtRDataList; ( curr = *next ) != NULL; next = &curr->next )
    e8846152:	872a                	mv	a4,a0
    e8846154:	6108                	ld	a0,0(a0)
    e8846156:	b779                	j	e88460e4 <_BonjourService_TXTHandler+0x2f8>
		bb_ulog( kLogLevelInfo, "### Removed RData missing for %s.%s%s %%%u\n%1.1H\n", 
    e8846158:	02800593          	li	a1,40
    e884615c:	0008f517          	auipc	a0,0x8f
    e8846160:	a8450513          	addi	a0,a0,-1404 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846164:	70f0d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846168:	d171                	beqz	a0,e884612c <_BonjourService_TXTHandler+0x340>
    e884616a:	b779                	j	e88460f8 <_BonjourService_TXTHandler+0x30c>
			bb_issues_ulog( kLogLevelInfo, "Removing and re-adding %s.%s%s for stale TXT record update (%s -> %s)\n", 
    e884616c:	02800593          	li	a1,40
    e8846170:	7030d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846174:	e40501e3          	beqz	a0,e8845fb6 <_BonjourService_TXTHandler+0x1ca>
    e8846178:	bd09                	j	e8845f8a <_BonjourService_TXTHandler+0x19e>
		if( !service->device )
    e884617a:	6c3c                	ld	a5,88(s0)
    e884617c:	e40784e3          	beqz	a5,e8845fc4 <_BonjourService_TXTHandler+0x1d8>
		_BonjourDevice_UpdateTXTQueries( device );
    e8846180:	8526                	mv	a0,s1
    e8846182:	d50ff0ef          	jal	ra,e88456d2 <_BonjourDevice_UpdateTXTQueries>
		_BonjourBrowser_PostEvent( browser, kBonjourBrowserEventType_AddOrUpdateDevice, device, NULL );
    e8846186:	4681                	li	a3,0
    e8846188:	8626                	mv	a2,s1
    e884618a:	4585                	li	a1,1
    e884618c:	854a                	mv	a0,s2
    e884618e:	ad7ff0ef          	jal	ra,e8845c64 <_BonjourBrowser_PostEvent>
	return;
    e8846192:	b1c9                	j	e8845e54 <_BonjourService_TXTHandler+0x68>
				if( stricmp( device->deviceID, deviceID ) == 0 )
    e8846194:	85ce                	mv	a1,s3
    e8846196:	01048513          	addi	a0,s1,16
    e884619a:	1ae360ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e884619e:	c915                	beqz	a0,e88461d2 <_BonjourService_TXTHandler+0x3e6>
			for( device = browser->devices; device; device = device->next )
    e88461a0:	6084                	ld	s1,0(s1)
    e88461a2:	f8ed                	bnez	s1,e8846194 <_BonjourService_TXTHandler+0x3a8>
				device = (BonjourDeviceRef) calloc( 1, sizeof( *device ) );
    e88461a4:	06800513          	li	a0,104
    e88461a8:	a97ff0ef          	jal	ra,e8845c3e <calloc.constprop.4>
    e88461ac:	84aa                	mv	s1,a0
				require_action( device, exit, err = kNoMemoryErr );
    e88461ae:	ca0503e3          	beqz	a0,e8845e54 <_BonjourService_TXTHandler+0x68>
				device->autoStopTXT = -1; // -1 means we don't know yet.
    e88461b2:	57fd                	li	a5,-1
    e88461b4:	d0bc                	sw	a5,96(s1)
				device->browser = browser;
    e88461b6:	0124b423          	sd	s2,8(s1)
				strlcpy( device->deviceID, deviceID, sizeof( device->deviceID ) );
    e88461ba:	04000613          	li	a2,64
    e88461be:	85ce                	mv	a1,s3
    e88461c0:	01048513          	addi	a0,s1,16
    e88461c4:	0bb190ef          	jal	ra,e885fa7e <strlcpy>
				device->next = browser->devices;
    e88461c8:	03093783          	ld	a5,48(s2)
    e88461cc:	e09c                	sd	a5,0(s1)
				browser->devices = device;
    e88461ce:	02993823          	sd	s1,48(s2)
			service->device = device;
    e88461d2:	ec24                	sd	s1,88(s0)
			service->nextForDevice = device->services;
    e88461d4:	6cbc                	ld	a5,88(s1)
    e88461d6:	e41c                	sd	a5,8(s0)
			device->services = service;
    e88461d8:	eca0                	sd	s0,88(s1)
    e88461da:	b75d                	j	e8846180 <_BonjourService_TXTHandler+0x394>
			*next = curr->next;
    e88461dc:	611c                	ld	a5,0(a0)
    e88461de:	e31c                	sd	a5,0(a4)
			free( curr );
    e88461e0:	120360ef          	jal	ra,e887c300 <eLIBs_free>
	if( !curr )
    e88461e4:	b7a1                	j	e884612c <_BonjourService_TXTHandler+0x340>

00000000e88461e6 <_BonjourBrowser_EnsureStopped>:
{
    e88461e6:	1101                	addi	sp,sp,-32
    e88461e8:	e422                	sd	s0,8(sp)
    e88461ea:	ec06                	sd	ra,24(sp)
    e88461ec:	e826                	sd	s1,16(sp)
	if( inBrowser->connectionCtx )
    e88461ee:	691c                	ld	a5,16(a0)
{
    e88461f0:	842a                	mv	s0,a0
	if( inBrowser->connectionCtx )
    e88461f2:	cf91                	beqz	a5,e884620e <_BonjourBrowser_EnsureStopped+0x28>
		dispatch_source_forget( &inBrowser->connectionCtx->dnsSource );
    e88461f4:	6f88                	ld	a0,24(a5)
    e88461f6:	c911                	beqz	a0,e884620a <_BonjourBrowser_EnsureStopped+0x24>
    e88461f8:	24f090ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e88461fc:	681c                	ld	a5,16(s0)
    e88461fe:	6f88                	ld	a0,24(a5)
    e8846200:	051080ef          	jal	ra,e884ea50 <dispatch_release>
    e8846204:	681c                	ld	a5,16(s0)
    e8846206:	0007bc23          	sd	zero,24(a5)
		inBrowser->connectionCtx = NULL;
    e884620a:	00043823          	sd	zero,16(s0)
	inBrowser->browseRef = NULL;
    e884620e:	00043c23          	sd	zero,24(s0)
	inBrowser->detailedBrowseRef = NULL;
    e8846212:	02043023          	sd	zero,32(s0)
	while( ( device = inBrowser->devices ) != NULL )
    e8846216:	7804                	ld	s1,48(s0)
    e8846218:	e881                	bnez	s1,e8846228 <_BonjourBrowser_EnsureStopped+0x42>
	while( ( service = inBrowser->services ) != NULL )
    e884621a:	7408                	ld	a0,40(s0)
    e884621c:	e115                	bnez	a0,e8846240 <_BonjourBrowser_EnsureStopped+0x5a>
}
    e884621e:	60e2                	ld	ra,24(sp)
    e8846220:	6422                	ld	s0,8(sp)
    e8846222:	64c2                	ld	s1,16(sp)
    e8846224:	6105                	addi	sp,sp,32
    e8846226:	8082                	ret
		inBrowser->devices = device->next;
    e8846228:	609c                	ld	a5,0(s1)
    e884622a:	f81c                	sd	a5,48(s0)
	ForgetCF( &inDevice->deviceInfo );
    e884622c:	68a8                	ld	a0,80(s1)
    e884622e:	c509                	beqz	a0,e8846238 <_BonjourBrowser_EnsureStopped+0x52>
    e8846230:	71b000ef          	jal	ra,e884714a <CFRelease>
    e8846234:	0404b823          	sd	zero,80(s1)
	free( inDevice );
    e8846238:	8526                	mv	a0,s1
    e884623a:	0c6360ef          	jal	ra,e887c300 <eLIBs_free>
    e884623e:	bfe1                	j	e8846216 <_BonjourBrowser_EnsureStopped+0x30>
		inBrowser->services = service->nextForBrowser;
    e8846240:	611c                	ld	a5,0(a0)
    e8846242:	f41c                	sd	a5,40(s0)
		service->txtQueryRef = NULL; // Invalidated by DNSServiceRefDeallocate of parent connection DNSServiceRef.
    e8846244:	04053423          	sd	zero,72(a0)
		_BonjourService_Free( service );
    e8846248:	86cff0ef          	jal	ra,e88452b4 <_BonjourService_Free>
    e884624c:	b7f9                	j	e884621a <_BonjourBrowser_EnsureStopped+0x34>

00000000e884624e <_BonjourBrowser_HandleError.part.2>:
static void	_BonjourBrowser_HandleError( BonjourBrowserRef me, OSStatus inError )
    e884624e:	7179                	addi	sp,sp,-48
    e8846250:	e422                	sd	s0,8(sp)
    e8846252:	f04e                	sd	s3,32(sp)
    e8846254:	f406                	sd	ra,40(sp)
    e8846256:	e826                	sd	s1,16(sp)
    e8846258:	ec4a                	sd	s2,24(sp)
	if( !me->retryTimer ) _BonjourBrowser_PostEvent( me, kBonjourBrowserEventType_Restarted, NULL, NULL );
    e884625a:	653c                	ld	a5,72(a0)
static void	_BonjourBrowser_HandleError( BonjourBrowserRef me, OSStatus inError )
    e884625c:	842a                	mv	s0,a0
    e884625e:	89ae                	mv	s3,a1
	if( !me->retryTimer ) _BonjourBrowser_PostEvent( me, kBonjourBrowserEventType_Restarted, NULL, NULL );
    e8846260:	e791                	bnez	a5,e884626c <_BonjourBrowser_HandleError.part.2+0x1e>
    e8846262:	4681                	li	a3,0
    e8846264:	4601                	li	a2,0
    e8846266:	4591                	li	a1,4
    e8846268:	9fdff0ef          	jal	ra,e8845c64 <_BonjourBrowser_PostEvent>
	while( ( service = me->services ) != NULL )
    e884626c:	7404                	ld	s1,40(s0)
    e884626e:	eccd                	bnez	s1,e8846328 <_BonjourBrowser_HandleError.part.2+0xda>
	_BonjourBrowser_EnsureStopped( me );
    e8846270:	8522                	mv	a0,s0
    e8846272:	f75ff0ef          	jal	ra,e88461e6 <_BonjourBrowser_EnsureStopped>
	require_quiet( !me->retryTimer, exit );
    e8846276:	643c                	ld	a5,72(s0)
    e8846278:	0e079363          	bnez	a5,e884635e <_BonjourBrowser_HandleError.part.2+0x110>
	ms = UpTicksToMilliseconds( UpTicks() - me->startTicks );
    e884627c:	7491a0ef          	jal	ra,e88611c4 <UpTicks>
	ms = ( ms < 10513 ) ? ( 10513 - ms ) : 100; // Use 10513 to avoid being syntonic with 10 second launchd re-launching.
    e8846280:	06400913          	li	s2,100
	ms = UpTicksToMilliseconds( UpTicks() - me->startTicks );
    e8846284:	603c                	ld	a5,64(s0)
    e8846286:	8d1d                	sub	a0,a0,a5
    e8846288:	7a11a0ef          	jal	ra,e8861228 <UpTicksToMilliseconds>
	ms = ( ms < 10513 ) ? ( 10513 - ms ) : 100; // Use 10513 to avoid being syntonic with 10 second launchd re-launching.
    e884628c:	678d                	lui	a5,0x3
    e884628e:	91078713          	addi	a4,a5,-1776 # 2910 <memcmp-0xe87fd6f0>
    e8846292:	00a76663          	bltu	a4,a0,e884629e <_BonjourBrowser_HandleError.part.2+0x50>
    e8846296:	91178793          	addi	a5,a5,-1775
    e884629a:	40a78933          	sub	s2,a5,a0
	bb_ulog( kLogLevelNotice, "### Browse for %s failed, retrying in %llu ms: %#m\n", me->serviceType, ms, inError );
    e884629e:	0008f497          	auipc	s1,0x8f
    e88462a2:	94248493          	addi	s1,s1,-1726 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88462a6:	409c                	lw	a5,0(s1)
    e88462a8:	03200713          	li	a4,50
    e88462ac:	02f74863          	blt	a4,a5,e88462dc <_BonjourBrowser_HandleError.part.2+0x8e>
    e88462b0:	577d                	li	a4,-1
    e88462b2:	08e78663          	beq	a5,a4,e884633e <_BonjourBrowser_HandleError.part.2+0xf0>
    e88462b6:	6838                	ld	a4,80(s0)
    e88462b8:	884e                	mv	a6,s3
    e88462ba:	87ca                	mv	a5,s2
    e88462bc:	00078697          	auipc	a3,0x78
    e88462c0:	cdc68693          	addi	a3,a3,-804 # e88bdf98 <__PRETTY_FUNCTION__.10585+0x1d0>
    e88462c4:	03200613          	li	a2,50
    e88462c8:	00078597          	auipc	a1,0x78
    e88462cc:	11058593          	addi	a1,a1,272 # e88be3d8 <__PRETTY_FUNCTION__.10605>
    e88462d0:	0008f517          	auipc	a0,0x8f
    e88462d4:	91050513          	addi	a0,a0,-1776 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88462d8:	19c0e0ef          	jal	ra,e8854474 <LogPrintF>
	me->retryTimer = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, me->internalQueue );
    e88462dc:	6414                	ld	a3,8(s0)
    e88462de:	4601                	li	a2,0
    e88462e0:	4581                	li	a1,0
    e88462e2:	4509                	li	a0,2
    e88462e4:	2cb080ef          	jal	ra,e884edae <dispatch_source_create>
    e88462e8:	e428                	sd	a0,72(s0)
	require_action( me->retryTimer, exit, bb_ulog( kLogLevelWarning, "### Bonjour retry timer failed\n" ) );
    e88462ea:	e149                	bnez	a0,e884636c <_BonjourBrowser_HandleError.part.2+0x11e>
    e88462ec:	409c                	lw	a5,0(s1)
    e88462ee:	03c00713          	li	a4,60
    e88462f2:	06f74663          	blt	a4,a5,e884635e <_BonjourBrowser_HandleError.part.2+0x110>
    e88462f6:	577d                	li	a4,-1
    e88462f8:	04e78a63          	beq	a5,a4,e884634c <_BonjourBrowser_HandleError.part.2+0xfe>
}
    e88462fc:	6422                	ld	s0,8(sp)
    e88462fe:	70a2                	ld	ra,40(sp)
    e8846300:	64c2                	ld	s1,16(sp)
    e8846302:	6962                	ld	s2,24(sp)
    e8846304:	7982                	ld	s3,32(sp)
	require_action( me->retryTimer, exit, bb_ulog( kLogLevelWarning, "### Bonjour retry timer failed\n" ) );
    e8846306:	00078697          	auipc	a3,0x78
    e884630a:	cca68693          	addi	a3,a3,-822 # e88bdfd0 <__PRETTY_FUNCTION__.10585+0x208>
    e884630e:	03c00613          	li	a2,60
    e8846312:	00078597          	auipc	a1,0x78
    e8846316:	0c658593          	addi	a1,a1,198 # e88be3d8 <__PRETTY_FUNCTION__.10605>
    e884631a:	0008f517          	auipc	a0,0x8f
    e884631e:	8c650513          	addi	a0,a0,-1850 # e88d4be0 <gLogCategory_BonjourBrowser>
}
    e8846322:	6145                	addi	sp,sp,48
	require_action( me->retryTimer, exit, bb_ulog( kLogLevelWarning, "### Bonjour retry timer failed\n" ) );
    e8846324:	1500e06f          	j	e8854474 <LogPrintF>
		me->services = service->nextForBrowser;
    e8846328:	609c                	ld	a5,0(s1)
		_BonjourBrowser_RemoveService( me, service, false );
    e884632a:	8522                	mv	a0,s0
    e884632c:	4601                	li	a2,0
		me->services = service->nextForBrowser;
    e884632e:	f41c                	sd	a5,40(s0)
		_BonjourBrowser_RemoveService( me, service, false );
    e8846330:	85a6                	mv	a1,s1
    e8846332:	a35ff0ef          	jal	ra,e8845d66 <_BonjourBrowser_RemoveService>
		_BonjourService_Free( service );
    e8846336:	8526                	mv	a0,s1
    e8846338:	f7dfe0ef          	jal	ra,e88452b4 <_BonjourService_Free>
    e884633c:	bf05                	j	e884626c <_BonjourBrowser_HandleError.part.2+0x1e>
	bb_ulog( kLogLevelNotice, "### Browse for %s failed, retrying in %llu ms: %#m\n", me->serviceType, ms, inError );
    e884633e:	03200593          	li	a1,50
    e8846342:	8526                	mv	a0,s1
    e8846344:	52f0d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846348:	d951                	beqz	a0,e88462dc <_BonjourBrowser_HandleError.part.2+0x8e>
    e884634a:	b7b5                	j	e88462b6 <_BonjourBrowser_HandleError.part.2+0x68>
	require_action( me->retryTimer, exit, bb_ulog( kLogLevelWarning, "### Bonjour retry timer failed\n" ) );
    e884634c:	03c00593          	li	a1,60
    e8846350:	0008f517          	auipc	a0,0x8f
    e8846354:	89050513          	addi	a0,a0,-1904 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846358:	51b0d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884635c:	f145                	bnez	a0,e88462fc <_BonjourBrowser_HandleError.part.2+0xae>
}
    e884635e:	70a2                	ld	ra,40(sp)
    e8846360:	6422                	ld	s0,8(sp)
    e8846362:	64c2                	ld	s1,16(sp)
    e8846364:	6962                	ld	s2,24(sp)
    e8846366:	7982                	ld	s3,32(sp)
    e8846368:	6145                	addi	sp,sp,48
    e884636a:	8082                	ret
	CFRetain( me );
    e884636c:	8522                	mv	a0,s0
    e884636e:	5d9000ef          	jal	ra,e8847146 <CFRetain>
	dispatch_set_context( me->retryTimer, me );
    e8846372:	6428                	ld	a0,72(s0)
    e8846374:	85a2                	mv	a1,s0
    e8846376:	0a7080ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( me->retryTimer, _BonjourBrowser_RetryTimerFired );
    e884637a:	6428                	ld	a0,72(s0)
    e884637c:	00000597          	auipc	a1,0x0
    e8846380:	6c458593          	addi	a1,a1,1732 # e8846a40 <_BonjourBrowser_RetryTimerFired>
    e8846384:	2e7080ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( me->retryTimer, _BonjourBrowser_RetryTimerCanceled );
    e8846388:	6428                	ld	a0,72(s0)
    e884638a:	fffff597          	auipc	a1,0xfffff
    e884638e:	f0058593          	addi	a1,a1,-256 # e884528a <_BonjourBrowser_RetryTimerCanceled>
    e8846392:	2dd080ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	dispatch_source_set_timer( me->retryTimer, dispatch_time_milliseconds( ms ), DISPATCH_TIME_FOREVER, kNanosecondsPerSecond );
    e8846396:	6424                	ld	s1,72(s0)
    e8846398:	000f45b7          	lui	a1,0xf4
    e884639c:	24058593          	addi	a1,a1,576 # f4240 <memcmp-0xe870bdc0>
    e88463a0:	02b905b3          	mul	a1,s2,a1
    e88463a4:	4501                	li	a0,0
    e88463a6:	3af080ef          	jal	ra,e884ef54 <dispatch_time>
    e88463aa:	85aa                	mv	a1,a0
    e88463ac:	3b9ad6b7          	lui	a3,0x3b9ad
    e88463b0:	8526                	mv	a0,s1
    e88463b2:	a0068693          	addi	a3,a3,-1536 # 3b9aca00 <memcmp-0xace53600>
    e88463b6:	567d                	li	a2,-1
    e88463b8:	011090ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
}
    e88463bc:	64c2                	ld	s1,16(sp)
	dispatch_resume( me->retryTimer );
    e88463be:	6428                	ld	a0,72(s0)
}
    e88463c0:	6422                	ld	s0,8(sp)
    e88463c2:	70a2                	ld	ra,40(sp)
    e88463c4:	6962                	ld	s2,24(sp)
    e88463c6:	7982                	ld	s3,32(sp)
    e88463c8:	6145                	addi	sp,sp,48
	dispatch_resume( me->retryTimer );
    e88463ca:	72c0906f          	j	e884faf6 <dispatch_resume>

00000000e88463ce <_BonjourBrowser_BrowseHandler>:
{
    e88463ce:	7159                	addi	sp,sp,-112
    e88463d0:	eca6                	sd	s1,88(sp)
    e88463d2:	fc56                	sd	s5,56(sp)
    e88463d4:	f85a                	sd	s6,48(sp)
    e88463d6:	f486                	sd	ra,104(sp)
    e88463d8:	f0a2                	sd	s0,96(sp)
    e88463da:	e8ca                	sd	s2,80(sp)
    e88463dc:	e4ce                	sd	s3,72(sp)
    e88463de:	e0d2                	sd	s4,64(sp)
    e88463e0:	f45e                	sd	s7,40(sp)
    e88463e2:	8aba                	mv	s5,a4
	if( inError == kDNSServiceErr_ServiceNotRunning )
    e88463e4:	7741                	lui	a4,0xffff0
    e88463e6:	0008e517          	auipc	a0,0x8e
    e88463ea:	7fa50513          	addi	a0,a0,2042 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88463ee:	1715                	addi	a4,a4,-27
{
    e88463f0:	8b3e                	mv	s6,a5
    e88463f2:	84c6                	mv	s1,a7
    e88463f4:	411c                	lw	a5,0(a0)
	if( inError == kDNSServiceErr_ServiceNotRunning )
    e88463f6:	04e69f63          	bne	a3,a4,e8846454 <_BonjourBrowser_BrowseHandler+0x86>
		bb_ulog( kLogLevelWarning, "### Browser for %s server crashed\n", browser->serviceType );
    e88463fa:	03c00713          	li	a4,60
    e88463fe:	02f74663          	blt	a4,a5,e884642a <_BonjourBrowser_BrowseHandler+0x5c>
    e8846402:	577d                	li	a4,-1
    e8846404:	04e78263          	beq	a5,a4,e8846448 <_BonjourBrowser_BrowseHandler+0x7a>
    e8846408:	68b8                	ld	a4,80(s1)
    e884640a:	00078697          	auipc	a3,0x78
    e884640e:	9fe68693          	addi	a3,a3,-1538 # e88bde08 <__PRETTY_FUNCTION__.10585+0x40>
    e8846412:	03c00613          	li	a2,60
    e8846416:	00078597          	auipc	a1,0x78
    e884641a:	fa258593          	addi	a1,a1,-94 # e88be3b8 <__PRETTY_FUNCTION__.10532>
    e884641e:	0008e517          	auipc	a0,0x8e
    e8846422:	7c250513          	addi	a0,a0,1986 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846426:	04e0e0ef          	jal	ra,e8854474 <LogPrintF>
}
    e884642a:	7406                	ld	s0,96(sp)
    e884642c:	70a6                	ld	ra,104(sp)
    e884642e:	6946                	ld	s2,80(sp)
    e8846430:	69a6                	ld	s3,72(sp)
    e8846432:	6a06                	ld	s4,64(sp)
    e8846434:	7ae2                	ld	s5,56(sp)
    e8846436:	7b42                	ld	s6,48(sp)
    e8846438:	7ba2                	ld	s7,40(sp)
    e884643a:	8526                	mv	a0,s1
    e884643c:	64e6                	ld	s1,88(sp)
    e884643e:	75c1                	lui	a1,0xffff0
    e8846440:	1595                	addi	a1,a1,-27
    e8846442:	6165                	addi	sp,sp,112
    e8846444:	e0bff06f          	j	e884624e <_BonjourBrowser_HandleError.part.2>
		bb_ulog( kLogLevelWarning, "### Browser for %s server crashed\n", browser->serviceType );
    e8846448:	03c00593          	li	a1,60
    e884644c:	4270d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846450:	dd69                	beqz	a0,e884642a <_BonjourBrowser_BrowseHandler+0x5c>
    e8846452:	bf5d                	j	e8846408 <_BonjourBrowser_BrowseHandler+0x3a>
	else if( inError )
    e8846454:	c6b5                	beqz	a3,e88464c0 <_BonjourBrowser_BrowseHandler+0xf2>
		bb_ulog( kLogLevelWarning, "### Browser for %s browse error: %#m\n", browser->serviceType, inError );
    e8846456:	03c00713          	li	a4,60
    e884645a:	04f74863          	blt	a4,a5,e88464aa <_BonjourBrowser_BrowseHandler+0xdc>
    e884645e:	577d                	li	a4,-1
    e8846460:	02e78e63          	beq	a5,a4,e884649c <_BonjourBrowser_BrowseHandler+0xce>
}
    e8846464:	7406                	ld	s0,96(sp)
		bb_ulog( kLogLevelWarning, "### Browser for %s browse error: %#m\n", browser->serviceType, inError );
    e8846466:	68b8                	ld	a4,80(s1)
}
    e8846468:	70a6                	ld	ra,104(sp)
    e884646a:	64e6                	ld	s1,88(sp)
    e884646c:	6946                	ld	s2,80(sp)
    e884646e:	69a6                	ld	s3,72(sp)
    e8846470:	6a06                	ld	s4,64(sp)
    e8846472:	7ae2                	ld	s5,56(sp)
    e8846474:	7b42                	ld	s6,48(sp)
    e8846476:	7ba2                	ld	s7,40(sp)
		bb_ulog( kLogLevelWarning, "### Browser for %s browse error: %#m\n", browser->serviceType, inError );
    e8846478:	87b6                	mv	a5,a3
    e884647a:	00078697          	auipc	a3,0x78
    e884647e:	9b668693          	addi	a3,a3,-1610 # e88bde30 <__PRETTY_FUNCTION__.10585+0x68>
    e8846482:	03c00613          	li	a2,60
    e8846486:	00078597          	auipc	a1,0x78
    e884648a:	f3258593          	addi	a1,a1,-206 # e88be3b8 <__PRETTY_FUNCTION__.10532>
    e884648e:	0008e517          	auipc	a0,0x8e
    e8846492:	75250513          	addi	a0,a0,1874 # e88d4be0 <gLogCategory_BonjourBrowser>
}
    e8846496:	6165                	addi	sp,sp,112
		bb_ulog( kLogLevelWarning, "### Browser for %s browse error: %#m\n", browser->serviceType, inError );
    e8846498:	7dd0d06f          	j	e8854474 <LogPrintF>
    e884649c:	03c00593          	li	a1,60
    e88464a0:	ec36                	sd	a3,24(sp)
    e88464a2:	3d10d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88464a6:	66e2                	ld	a3,24(sp)
    e88464a8:	fd55                	bnez	a0,e8846464 <_BonjourBrowser_BrowseHandler+0x96>
}
    e88464aa:	70a6                	ld	ra,104(sp)
    e88464ac:	7406                	ld	s0,96(sp)
    e88464ae:	64e6                	ld	s1,88(sp)
    e88464b0:	6946                	ld	s2,80(sp)
    e88464b2:	69a6                	ld	s3,72(sp)
    e88464b4:	6a06                	ld	s4,64(sp)
    e88464b6:	7ae2                	ld	s5,56(sp)
    e88464b8:	7b42                	ld	s6,48(sp)
    e88464ba:	7ba2                	ld	s7,40(sp)
    e88464bc:	6165                	addi	sp,sp,112
    e88464be:	8082                	ret
	require_action( browser->started, exit, bb_ulog( kLogLevelWarning, "### Browse response after stop\n" ) );
    e88464c0:	0388c703          	lbu	a4,56(a7)
    e88464c4:	eb21                	bnez	a4,e8846514 <_BonjourBrowser_BrowseHandler+0x146>
    e88464c6:	03c00713          	li	a4,60
    e88464ca:	fef740e3          	blt	a4,a5,e88464aa <_BonjourBrowser_BrowseHandler+0xdc>
    e88464ce:	577d                	li	a4,-1
    e88464d0:	02e78c63          	beq	a5,a4,e8846508 <_BonjourBrowser_BrowseHandler+0x13a>
}
    e88464d4:	7406                	ld	s0,96(sp)
    e88464d6:	70a6                	ld	ra,104(sp)
    e88464d8:	64e6                	ld	s1,88(sp)
    e88464da:	6946                	ld	s2,80(sp)
    e88464dc:	69a6                	ld	s3,72(sp)
    e88464de:	6a06                	ld	s4,64(sp)
    e88464e0:	7ae2                	ld	s5,56(sp)
    e88464e2:	7b42                	ld	s6,48(sp)
    e88464e4:	7ba2                	ld	s7,40(sp)
	require_action( browser->started, exit, bb_ulog( kLogLevelWarning, "### Browse response after stop\n" ) );
    e88464e6:	00078697          	auipc	a3,0x78
    e88464ea:	97268693          	addi	a3,a3,-1678 # e88bde58 <__PRETTY_FUNCTION__.10585+0x90>
    e88464ee:	03c00613          	li	a2,60
    e88464f2:	00078597          	auipc	a1,0x78
    e88464f6:	ec658593          	addi	a1,a1,-314 # e88be3b8 <__PRETTY_FUNCTION__.10532>
    e88464fa:	0008e517          	auipc	a0,0x8e
    e88464fe:	6e650513          	addi	a0,a0,1766 # e88d4be0 <gLogCategory_BonjourBrowser>
}
    e8846502:	6165                	addi	sp,sp,112
	require_action( browser->started, exit, bb_ulog( kLogLevelWarning, "### Browse response after stop\n" ) );
    e8846504:	7710d06f          	j	e8854474 <LogPrintF>
    e8846508:	03c00593          	li	a1,60
    e884650c:	3670d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846510:	dd49                	beqz	a0,e88464aa <_BonjourBrowser_BrowseHandler+0xdc>
    e8846512:	b7c9                	j	e88464d4 <_BonjourBrowser_BrowseHandler+0x106>
	bb_ulog( kLogLevelVerbose, "Bonjour PTR %s %s.%s%s on %u\n", add ? "Add" : "Rmv", inName, inType, inDomain, inIfIndex );
    e8846514:	4751                	li	a4,20
    e8846516:	8a32                	mv	s4,a2
    e8846518:	8bc2                	mv	s7,a6
	add = ( inFlags & kDNSServiceFlagsAdd ) ? true : false;
    e884651a:	0415b90b          	extu	s2,a1,1,1
	bb_ulog( kLogLevelVerbose, "Bonjour PTR %s %s.%s%s on %u\n", add ? "Add" : "Rmv", inName, inType, inDomain, inIfIndex );
    e884651e:	04f74763          	blt	a4,a5,e884656c <_BonjourBrowser_BrowseHandler+0x19e>
    e8846522:	577d                	li	a4,-1
    e8846524:	04e78063          	beq	a5,a4,e8846564 <_BonjourBrowser_BrowseHandler+0x196>
    e8846528:	0005e717          	auipc	a4,0x5e
    e884652c:	c8870713          	addi	a4,a4,-888 # e88a41b0 <end.8789+0xb08>
    e8846530:	00091663          	bnez	s2,e884653c <_BonjourBrowser_BrowseHandler+0x16e>
    e8846534:	0005e717          	auipc	a4,0x5e
    e8846538:	c8470713          	addi	a4,a4,-892 # e88a41b8 <end.8789+0xb10>
    e884653c:	e052                	sd	s4,0(sp)
    e884653e:	88de                	mv	a7,s7
    e8846540:	885a                	mv	a6,s6
    e8846542:	87d6                	mv	a5,s5
    e8846544:	00078697          	auipc	a3,0x78
    e8846548:	93468693          	addi	a3,a3,-1740 # e88bde78 <__PRETTY_FUNCTION__.10585+0xb0>
    e884654c:	4651                	li	a2,20
    e884654e:	00078597          	auipc	a1,0x78
    e8846552:	e6a58593          	addi	a1,a1,-406 # e88be3b8 <__PRETTY_FUNCTION__.10532>
    e8846556:	0008e517          	auipc	a0,0x8e
    e884655a:	68a50513          	addi	a0,a0,1674 # e88d4be0 <gLogCategory_BonjourBrowser>
    e884655e:	7170d0ef          	jal	ra,e8854474 <LogPrintF>
    e8846562:	a029                	j	e884656c <_BonjourBrowser_BrowseHandler+0x19e>
    e8846564:	45d1                	li	a1,20
    e8846566:	30d0d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884656a:	fd5d                	bnez	a0,e8846528 <_BonjourBrowser_BrowseHandler+0x15a>
	for( nextService = &browser->services; ( service = *nextService ) != NULL; nextService = &service->nextForBrowser )
    e884656c:	02848993          	addi	s3,s1,40
    e8846570:	0009b403          	ld	s0,0(s3)
    e8846574:	e849                	bnez	s0,e8846606 <_BonjourBrowser_BrowseHandler+0x238>
	if( add )
    e8846576:	f2090ae3          	beqz	s2,e88464aa <_BonjourBrowser_BrowseHandler+0xdc>
	obj = (BonjourServiceRef) calloc( 1, sizeof( *obj ) );
    e884657a:	06000513          	li	a0,96
    e884657e:	ec0ff0ef          	jal	ra,e8845c3e <calloc.constprop.4>
    e8846582:	842a                	mv	s0,a0
	require_action( obj, exit, err = kNoMemoryErr );
    e8846584:	d11d                	beqz	a0,e88464aa <_BonjourBrowser_BrowseHandler+0xdc>
	obj->browser = inBrowser;
    e8846586:	e904                	sd	s1,16(a0)
	obj->name = strdup( inName );
    e8846588:	8556                	mv	a0,s5
    e884658a:	27e190ef          	jal	ra,e885f808 <strdup>
    e884658e:	ec08                	sd	a0,24(s0)
	require_action( obj->name, exit, err = kDNSServiceErr_NoMemory );
    e8846590:	cd31                	beqz	a0,e88465ec <_BonjourBrowser_BrowseHandler+0x21e>
	obj->type = strdup( inType );
    e8846592:	855a                	mv	a0,s6
    e8846594:	274190ef          	jal	ra,e885f808 <strdup>
    e8846598:	f008                	sd	a0,32(s0)
	require_action( obj->type, exit, err = kDNSServiceErr_NoMemory );
    e884659a:	c929                	beqz	a0,e88465ec <_BonjourBrowser_BrowseHandler+0x21e>
	obj->domain = strdup( inDomain );
    e884659c:	855e                	mv	a0,s7
    e884659e:	26a190ef          	jal	ra,e885f808 <strdup>
    e88465a2:	f408                	sd	a0,40(s0)
	require_action( obj->domain, exit, err = kDNSServiceErr_NoMemory );
    e88465a4:	c521                	beqz	a0,e88465ec <_BonjourBrowser_BrowseHandler+0x21e>
	if_indextoname( inIfIndex, obj->ifname );
    e88465a6:	03440493          	addi	s1,s0,52
    e88465aa:	85a6                	mv	a1,s1
	obj->ifindex = inIfIndex;
    e88465ac:	03442823          	sw	s4,48(s0)
	if_indextoname( inIfIndex, obj->ifname );
    e88465b0:	8552                	mv	a0,s4
    e88465b2:	0b13d0ef          	jal	ra,e8883e62 <lwip_if_indextoname>
	SocketGetInterfaceInfo( kInvalidSocketRef, obj->ifname, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &obj->transportType );
    e88465b6:	e002                	sd	zero,0(sp)
    e88465b8:	04040793          	addi	a5,s0,64
    e88465bc:	e43e                	sd	a5,8(sp)
    e88465be:	4701                	li	a4,0
    e88465c0:	4781                	li	a5,0
    e88465c2:	4881                	li	a7,0
    e88465c4:	4801                	li	a6,0
    e88465c6:	4681                	li	a3,0
    e88465c8:	4601                	li	a2,0
    e88465ca:	85a6                	mv	a1,s1
    e88465cc:	557d                	li	a0,-1
    e88465ce:	6b4100ef          	jal	ra,e8856c82 <SocketGetInterfaceInfo>
	if( NetTransportTypeIsP2P( obj->transportType ) )		{ obj->isP2P  = true; obj->isWiFi = true; }
    e88465d2:	403c                	lw	a5,64(s0)
    e88465d4:	04000713          	li	a4,64
    e88465d8:	06e79663          	bne	a5,a4,e8846644 <_BonjourBrowser_BrowseHandler+0x276>
    e88465dc:	10100793          	li	a5,257
    e88465e0:	02f41da3          	sh	a5,59(s0)
		err = _BonjourService_StartTXTQuery( service );
    e88465e4:	8522                	mv	a0,s0
    e88465e6:	d21fe0ef          	jal	ra,e8845306 <_BonjourService_StartTXTQuery>
		if( err ) _BonjourService_Free( service );
    e88465ea:	c525                	beqz	a0,e8846652 <_BonjourBrowser_BrowseHandler+0x284>
	if( obj ) _BonjourService_Free( obj );
    e88465ec:	8522                	mv	a0,s0
}
    e88465ee:	7406                	ld	s0,96(sp)
    e88465f0:	70a6                	ld	ra,104(sp)
    e88465f2:	64e6                	ld	s1,88(sp)
    e88465f4:	6946                	ld	s2,80(sp)
    e88465f6:	69a6                	ld	s3,72(sp)
    e88465f8:	6a06                	ld	s4,64(sp)
    e88465fa:	7ae2                	ld	s5,56(sp)
    e88465fc:	7b42                	ld	s6,48(sp)
    e88465fe:	7ba2                	ld	s7,40(sp)
    e8846600:	6165                	addi	sp,sp,112
	if( obj ) _BonjourService_Free( obj );
    e8846602:	cb3fe06f          	j	e88452b4 <_BonjourService_Free>
		if( service->ifindex != inIfIndex )				continue; // Interface must match (zero/all is not allowed here).
    e8846606:	581c                	lw	a5,48(s0)
    e8846608:	01478463          	beq	a5,s4,e8846610 <_BonjourBrowser_BrowseHandler+0x242>
	for( nextService = &browser->services; ( service = *nextService ) != NULL; nextService = &service->nextForBrowser )
    e884660c:	89a2                	mv	s3,s0
    e884660e:	b78d                	j	e8846570 <_BonjourBrowser_BrowseHandler+0x1a2>
		if( stricmp( service->name,   inName   ) != 0 )	continue; // Name must match.
    e8846610:	6c08                	ld	a0,24(s0)
    e8846612:	85d6                	mv	a1,s5
    e8846614:	535350ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8846618:	f975                	bnez	a0,e884660c <_BonjourBrowser_BrowseHandler+0x23e>
		if( stricmp( service->type,   inType   ) != 0 )	continue; // Type must match.
    e884661a:	7008                	ld	a0,32(s0)
    e884661c:	85da                	mv	a1,s6
    e884661e:	52b350ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8846622:	f56d                	bnez	a0,e884660c <_BonjourBrowser_BrowseHandler+0x23e>
		if( stricmp( service->domain, inDomain ) != 0 )	continue; // Domain must match.
    e8846624:	7408                	ld	a0,40(s0)
    e8846626:	85de                	mv	a1,s7
    e8846628:	521350ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e884662c:	f165                	bnez	a0,e884660c <_BonjourBrowser_BrowseHandler+0x23e>
	if( add )
    e884662e:	e6091ee3          	bnez	s2,e88464aa <_BonjourBrowser_BrowseHandler+0xdc>
		*nextService = service->nextForBrowser;
    e8846632:	601c                	ld	a5,0(s0)
		_BonjourBrowser_RemoveService( browser, service, true );
    e8846634:	4605                	li	a2,1
    e8846636:	85a2                	mv	a1,s0
		*nextService = service->nextForBrowser;
    e8846638:	00f9b023          	sd	a5,0(s3)
		_BonjourBrowser_RemoveService( browser, service, true );
    e884663c:	8526                	mv	a0,s1
    e884663e:	f28ff0ef          	jal	ra,e8845d66 <_BonjourBrowser_RemoveService>
		_BonjourService_Free( service );
    e8846642:	b76d                	j	e88465ec <_BonjourBrowser_BrowseHandler+0x21e>
	else if( obj->transportType == kNetTransportType_WiFi )	  obj->isWiFi = true;
    e8846644:	4709                	li	a4,2
    e8846646:	f8e79fe3          	bne	a5,a4,e88465e4 <_BonjourBrowser_BrowseHandler+0x216>
    e884664a:	4785                	li	a5,1
    e884664c:	02f40e23          	sb	a5,60(s0)
		require_noerr( err, exit );
    e8846650:	bf51                	j	e88465e4 <_BonjourBrowser_BrowseHandler+0x216>
		*nextService = service;
    e8846652:	0089b023          	sd	s0,0(s3)
    e8846656:	bd91                	j	e88464aa <_BonjourBrowser_BrowseHandler+0xdc>

00000000e8846658 <_BonjourBrowser_IgnoredBrowseHandler>:
	require_quiet( browser->flags & kBonjourBrowserFlag_Traffic, exit );
    e8846658:	0688b303          	ld	t1,104(a7)
    e884665c:	00231e13          	slli	t3,t1,0x2
    e8846660:	000e5463          	bgez	t3,e8846668 <_BonjourBrowser_IgnoredBrowseHandler+0x10>
	_BonjourBrowser_BrowseHandler( inRef, inFlags, inIfIndex, inError, inName, inType, inDomain, inContext );
    e8846664:	d6bff06f          	j	e88463ce <_BonjourBrowser_BrowseHandler>
}
    e8846668:	8082                	ret

00000000e884666a <_BonjourBrowser_Stop>:
{
    e884666a:	1101                	addi	sp,sp,-32
    e884666c:	e422                	sd	s0,8(sp)
    e884666e:	ec06                	sd	ra,24(sp)
    e8846670:	e826                	sd	s1,16(sp)
	wasStarted = browser->started;
    e8846672:	03854483          	lbu	s1,56(a0)
	browser->started = false;
    e8846676:	02050c23          	sb	zero,56(a0)
{
    e884667a:	842a                	mv	s0,a0
	if( wasStarted ) bb_ulog( kLogLevelTrace, "Stopping browse for %s\n", browser->serviceType );
    e884667c:	cc85                	beqz	s1,e88466b4 <_BonjourBrowser_Stop+0x4a>
    e884667e:	0008e517          	auipc	a0,0x8e
    e8846682:	56250513          	addi	a0,a0,1378 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846686:	411c                	lw	a5,0(a0)
    e8846688:	4779                	li	a4,30
    e884668a:	02f74563          	blt	a4,a5,e88466b4 <_BonjourBrowser_Stop+0x4a>
    e884668e:	577d                	li	a4,-1
    e8846690:	0ae78c63          	beq	a5,a4,e8846748 <_BonjourBrowser_Stop+0xde>
    e8846694:	6838                	ld	a4,80(s0)
    e8846696:	00078697          	auipc	a3,0x78
    e884669a:	9ba68693          	addi	a3,a3,-1606 # e88be050 <__PRETTY_FUNCTION__.10585+0x288>
    e884669e:	4679                	li	a2,30
    e88466a0:	00078597          	auipc	a1,0x78
    e88466a4:	cc058593          	addi	a1,a1,-832 # e88be360 <__PRETTY_FUNCTION__.10426>
    e88466a8:	0008e517          	auipc	a0,0x8e
    e88466ac:	53850513          	addi	a0,a0,1336 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88466b0:	5c50d0ef          	jal	ra,e8854474 <LogPrintF>
	dispatch_source_forget( &browser->retryTimer );
    e88466b4:	6428                	ld	a0,72(s0)
    e88466b6:	c901                	beqz	a0,e88466c6 <_BonjourBrowser_Stop+0x5c>
    e88466b8:	58e090ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e88466bc:	6428                	ld	a0,72(s0)
    e88466be:	392080ef          	jal	ra,e884ea50 <dispatch_release>
    e88466c2:	04043423          	sd	zero,72(s0)
	_BonjourBrowser_EnsureStopped( browser );
    e88466c6:	8522                	mv	a0,s0
    e88466c8:	b1fff0ef          	jal	ra,e88461e6 <_BonjourBrowser_EnsureStopped>
	if( wasStarted )
    e88466cc:	c4a9                	beqz	s1,e8846716 <_BonjourBrowser_Stop+0xac>
		_BonjourBrowser_PostEvent( browser, kBonjourBrowserEventType_Stop, NULL, NULL );
    e88466ce:	4681                	li	a3,0
    e88466d0:	4601                	li	a2,0
    e88466d2:	458d                	li	a1,3
    e88466d4:	8522                	mv	a0,s0
    e88466d6:	d8eff0ef          	jal	ra,e8845c64 <_BonjourBrowser_PostEvent>
		bb_ulog( kLogLevelTrace, "Stopped browse for %s\n", browser->serviceType );
    e88466da:	0008e517          	auipc	a0,0x8e
    e88466de:	50650513          	addi	a0,a0,1286 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88466e2:	411c                	lw	a5,0(a0)
    e88466e4:	4779                	li	a4,30
    e88466e6:	02f74563          	blt	a4,a5,e8846710 <_BonjourBrowser_Stop+0xa6>
    e88466ea:	577d                	li	a4,-1
    e88466ec:	06e78363          	beq	a5,a4,e8846752 <_BonjourBrowser_Stop+0xe8>
    e88466f0:	6838                	ld	a4,80(s0)
    e88466f2:	00078697          	auipc	a3,0x78
    e88466f6:	97668693          	addi	a3,a3,-1674 # e88be068 <__PRETTY_FUNCTION__.10585+0x2a0>
    e88466fa:	4679                	li	a2,30
    e88466fc:	00078597          	auipc	a1,0x78
    e8846700:	c6458593          	addi	a1,a1,-924 # e88be360 <__PRETTY_FUNCTION__.10426>
    e8846704:	0008e517          	auipc	a0,0x8e
    e8846708:	4dc50513          	addi	a0,a0,1244 # e88d4be0 <gLogCategory_BonjourBrowser>
    e884670c:	5690d0ef          	jal	ra,e8854474 <LogPrintF>
		CFRelease( browser ); // Undo retain from _BonjourBrowser_Start on first start.
    e8846710:	8522                	mv	a0,s0
    e8846712:	239000ef          	jal	ra,e884714a <CFRelease>
	ForgetMem( &browser->serviceType );
    e8846716:	6828                	ld	a0,80(s0)
    e8846718:	c509                	beqz	a0,e8846722 <_BonjourBrowser_Stop+0xb8>
    e884671a:	3e7350ef          	jal	ra,e887c300 <eLIBs_free>
    e884671e:	04043823          	sd	zero,80(s0)
	ForgetMem( &browser->domain );
    e8846722:	6c28                	ld	a0,88(s0)
    e8846724:	c509                	beqz	a0,e884672e <_BonjourBrowser_Stop+0xc4>
    e8846726:	3db350ef          	jal	ra,e887c300 <eLIBs_free>
    e884672a:	04043c23          	sd	zero,88(s0)
	ForgetMem( &browser->ifname );
    e884672e:	7028                	ld	a0,96(s0)
    e8846730:	c509                	beqz	a0,e884673a <_BonjourBrowser_Stop+0xd0>
    e8846732:	3cf350ef          	jal	ra,e887c300 <eLIBs_free>
    e8846736:	06043023          	sd	zero,96(s0)
	CFRelease( browser ); // Undo retain from BonjourBrowser_Stop.
    e884673a:	8522                	mv	a0,s0
}
    e884673c:	6422                	ld	s0,8(sp)
    e884673e:	60e2                	ld	ra,24(sp)
    e8846740:	64c2                	ld	s1,16(sp)
    e8846742:	6105                	addi	sp,sp,32
	CFRelease( browser ); // Undo retain from BonjourBrowser_Stop.
    e8846744:	2070006f          	j	e884714a <CFRelease>
	if( wasStarted ) bb_ulog( kLogLevelTrace, "Stopping browse for %s\n", browser->serviceType );
    e8846748:	45f9                	li	a1,30
    e884674a:	1290d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884674e:	d13d                	beqz	a0,e88466b4 <_BonjourBrowser_Stop+0x4a>
    e8846750:	b791                	j	e8846694 <_BonjourBrowser_Stop+0x2a>
		bb_ulog( kLogLevelTrace, "Stopped browse for %s\n", browser->serviceType );
    e8846752:	45f9                	li	a1,30
    e8846754:	11f0d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846758:	dd45                	beqz	a0,e8846710 <_BonjourBrowser_Stop+0xa6>
    e884675a:	bf59                	j	e88466f0 <_BonjourBrowser_Stop+0x86>

00000000e884675c <_BonjourBrowser_EnsureStarted>:
{
    e884675c:	711d                	addi	sp,sp,-96
    e884675e:	e8a2                	sd	s0,80(sp)
    e8846760:	e0ca                	sd	s2,64(sp)
    e8846762:	f456                	sd	s5,40(sp)
    e8846764:	ec5e                	sd	s7,24(sp)
    e8846766:	ec86                	sd	ra,88(sp)
    e8846768:	e4a6                	sd	s1,72(sp)
    e884676a:	fc4e                	sd	s3,56(sp)
    e884676c:	f852                	sd	s4,48(sp)
    e884676e:	f05a                	sd	s6,32(sp)
	uint64_t				flags64		= inBrowser->flags;
    e8846770:	06853a03          	ld	s4,104(a0)
	ctx = inBrowser->connectionCtx; 
    e8846774:	6904                	ld	s1,16(a0)
{
    e8846776:	842a                	mv	s0,a0
	uint32_t				flags32		= (uint32_t)( flags64 & 0xFFFFFFFFU );
    e8846778:	000a091b          	sext.w	s2,s4
	Boolean const			traffic		= ( flags64 & kBonjourBrowserFlag_Traffic )    ? true : false;
    e884677c:	f7da3a8b          	extu	s5,s4,61,61
	Boolean const			background	= ( flags64 & kBonjourBrowserFlag_Background ) ? true : false;
    e8846780:	fbea3b8b          	extu	s7,s4,62,62
	if( !ctx )
    e8846784:	e889                	bnez	s1,e8846796 <_BonjourBrowser_EnsureStarted+0x3a>
		ctx = (DNSServiceContext *) calloc( 1, sizeof( *ctx ) );
    e8846786:	02000513          	li	a0,32
    e884678a:	cb4ff0ef          	jal	ra,e8845c3e <calloc.constprop.4>
    e884678e:	84aa                	mv	s1,a0
		require_action( ctx, exit, err = kNoMemoryErr );
    e8846790:	1a050a63          	beqz	a0,e8846944 <_BonjourBrowser_EnsureStarted+0x1e8>
		ctx->browser = inBrowser;
    e8846794:	e100                	sd	s0,0(a0)
	if( !inBrowser->browseRef )
    e8846796:	6c1c                	ld	a5,24(s0)
    e8846798:	ebd1                	bnez	a5,e884682c <_BonjourBrowser_EnsureStarted+0xd0>
		flags32Alt = flags32;
    e884679a:	89ca                	mv	s3,s2
		if( traffic )
    e884679c:	000a8663          	beqz	s5,e88467a8 <_BonjourBrowser_EnsureStarted+0x4c>
			flags32Alt |= kDNSServiceFlagsThresholdOne_compat;
    e88467a0:	020009b7          	lui	s3,0x2000
    e88467a4:	013969b3          	or	s3,s2,s3
		ifindex = inBrowser->ifname ? if_nametoindex( inBrowser->ifname ) : kDNSServiceInterfaceIndexAny;
    e88467a8:	7028                	ld	a0,96(s0)
    e88467aa:	4b01                	li	s6,0
    e88467ac:	c509                	beqz	a0,e88467b6 <_BonjourBrowser_EnsureStarted+0x5a>
    e88467ae:	6ec3d0ef          	jal	ra,e8883e9a <lwip_if_nametoindex>
    e88467b2:	00050b1b          	sext.w	s6,a0
		bb_ulog( kLogLevelTrace, "Starting browse for %s on if %s, flags 0x%X\n", 
    e88467b6:	0008e517          	auipc	a0,0x8e
    e88467ba:	42a50513          	addi	a0,a0,1066 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88467be:	411c                	lw	a5,0(a0)
		service = 0;
    e88467c0:	e402                	sd	zero,8(sp)
		bb_ulog( kLogLevelTrace, "Starting browse for %s on if %s, flags 0x%X\n", 
    e88467c2:	4779                	li	a4,30
    e88467c4:	04f74163          	blt	a4,a5,e8846806 <_BonjourBrowser_EnsureStarted+0xaa>
    e88467c8:	577d                	li	a4,-1
    e88467ca:	02e78a63          	beq	a5,a4,e88467fe <_BonjourBrowser_EnsureStarted+0xa2>
    e88467ce:	703c                	ld	a5,96(s0)
    e88467d0:	6838                	ld	a4,80(s0)
    e88467d2:	e789                	bnez	a5,e88467dc <_BonjourBrowser_EnsureStarted+0x80>
    e88467d4:	00077797          	auipc	a5,0x77
    e88467d8:	6c478793          	addi	a5,a5,1732 # e88bde98 <__PRETTY_FUNCTION__.10585+0xd0>
    e88467dc:	884e                	mv	a6,s3
    e88467de:	00077697          	auipc	a3,0x77
    e88467e2:	6c268693          	addi	a3,a3,1730 # e88bdea0 <__PRETTY_FUNCTION__.10585+0xd8>
    e88467e6:	4679                	li	a2,30
    e88467e8:	00078597          	auipc	a1,0x78
    e88467ec:	b9058593          	addi	a1,a1,-1136 # e88be378 <__PRETTY_FUNCTION__.10441>
    e88467f0:	0008e517          	auipc	a0,0x8e
    e88467f4:	3f050513          	addi	a0,a0,1008 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88467f8:	47d0d0ef          	jal	ra,e8854474 <LogPrintF>
    e88467fc:	a029                	j	e8846806 <_BonjourBrowser_EnsureStarted+0xaa>
    e88467fe:	45f9                	li	a1,30
    e8846800:	0730d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846804:	f569                	bnez	a0,e88467ce <_BonjourBrowser_EnsureStarted+0x72>
		err = DNSServiceBrowse( &service, kDNSServiceFlagsShareConnection | flags32Alt, ifindex, 
    e8846806:	6c38                	ld	a4,88(s0)
    e8846808:	6834                	ld	a3,80(s0)
    e884680a:	6591                	lui	a1,0x4
    e884680c:	00b9e5b3          	or	a1,s3,a1
    e8846810:	8822                	mv	a6,s0
    e8846812:	00000797          	auipc	a5,0x0
    e8846816:	bbc78793          	addi	a5,a5,-1092 # e88463ce <_BonjourBrowser_BrowseHandler>
    e884681a:	865a                	mv	a2,s6
    e884681c:	0028                	addi	a0,sp,8
    e884681e:	f24d40ef          	jal	ra,e881af42 <DNSServiceBrowse>
    e8846822:	89aa                	mv	s3,a0
		require_noerr( err, exit );
    e8846824:	12051363          	bnez	a0,e884694a <_BonjourBrowser_EnsureStarted+0x1ee>
		inBrowser->browseRef = service;
    e8846828:	67a2                	ld	a5,8(sp)
    e884682a:	ec1c                	sd	a5,24(s0)
	if( background )
    e884682c:	060b8f63          	beqz	s7,e88468aa <_BonjourBrowser_EnsureStarted+0x14e>
		if( inBrowser->detailedBrowseRef )
    e8846830:	701c                	ld	a5,32(s0)
    e8846832:	c3ad                	beqz	a5,e8846894 <_BonjourBrowser_EnsureStarted+0x138>
			bb_ulog( kLogLevelInfo, "Stopping detail browse for %s, if %s, flags 0x%X\n", 
    e8846834:	0008e517          	auipc	a0,0x8e
    e8846838:	3ac50513          	addi	a0,a0,940 # e88d4be0 <gLogCategory_BonjourBrowser>
    e884683c:	411c                	lw	a5,0(a0)
    e884683e:	02800713          	li	a4,40
    e8846842:	04f74363          	blt	a4,a5,e8846888 <_BonjourBrowser_EnsureStarted+0x12c>
    e8846846:	577d                	li	a4,-1
    e8846848:	02e78b63          	beq	a5,a4,e884687e <_BonjourBrowser_EnsureStarted+0x122>
    e884684c:	703c                	ld	a5,96(s0)
    e884684e:	6838                	ld	a4,80(s0)
    e8846850:	e789                	bnez	a5,e884685a <_BonjourBrowser_EnsureStarted+0xfe>
    e8846852:	00077797          	auipc	a5,0x77
    e8846856:	64678793          	addi	a5,a5,1606 # e88bde98 <__PRETTY_FUNCTION__.10585+0xd0>
    e884685a:	884a                	mv	a6,s2
    e884685c:	00077697          	auipc	a3,0x77
    e8846860:	67468693          	addi	a3,a3,1652 # e88bded0 <__PRETTY_FUNCTION__.10585+0x108>
    e8846864:	02800613          	li	a2,40
    e8846868:	00078597          	auipc	a1,0x78
    e884686c:	b1058593          	addi	a1,a1,-1264 # e88be378 <__PRETTY_FUNCTION__.10441>
    e8846870:	0008e517          	auipc	a0,0x8e
    e8846874:	37050513          	addi	a0,a0,880 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846878:	3fd0d0ef          	jal	ra,e8854474 <LogPrintF>
    e884687c:	a031                	j	e8846888 <_BonjourBrowser_EnsureStarted+0x12c>
    e884687e:	02800593          	li	a1,40
    e8846882:	7f00d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846886:	f179                	bnez	a0,e884684c <_BonjourBrowser_EnsureStarted+0xf0>
			DNSServiceForget( &inBrowser->detailedBrowseRef );
    e8846888:	7008                	ld	a0,32(s0)
    e884688a:	c509                	beqz	a0,e8846894 <_BonjourBrowser_EnsureStarted+0x138>
    e884688c:	c54d40ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    e8846890:	02043023          	sd	zero,32(s0)
		dispatch_source_forget( &me->retryTimer );
    e8846894:	6428                	ld	a0,72(s0)
    e8846896:	10050d63          	beqz	a0,e88469b0 <_BonjourBrowser_EnsureStarted+0x254>
    e884689a:	3ac090ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e884689e:	6428                	ld	a0,72(s0)
    e88468a0:	1b0080ef          	jal	ra,e884ea50 <dispatch_release>
    e88468a4:	04043423          	sd	zero,72(s0)
    e88468a8:	a221                	j	e88469b0 <_BonjourBrowser_EnsureStarted+0x254>
	else if( traffic && !inBrowser->detailedBrowseRef )
    e88468aa:	fe0a85e3          	beqz	s5,e8846894 <_BonjourBrowser_EnsureStarted+0x138>
    e88468ae:	701c                	ld	a5,32(s0)
    e88468b0:	f3f5                	bnez	a5,e8846894 <_BonjourBrowser_EnsureStarted+0x138>
		ifindex = inBrowser->ifname ? if_nametoindex( inBrowser->ifname ) : kDNSServiceInterfaceIndexAny;
    e88468b2:	7028                	ld	a0,96(s0)
		flags32 &= ~kDNSServiceFlagsThresholdOne_compat;
    e88468b4:	fe0007b7          	lui	a5,0xfe000
    e88468b8:	17fd                	addi	a5,a5,-1
    e88468ba:	00f97933          	and	s2,s2,a5
		ifindex = inBrowser->ifname ? if_nametoindex( inBrowser->ifname ) : kDNSServiceInterfaceIndexAny;
    e88468be:	4481                	li	s1,0
    e88468c0:	c509                	beqz	a0,e88468ca <_BonjourBrowser_EnsureStarted+0x16e>
    e88468c2:	5d83d0ef          	jal	ra,e8883e9a <lwip_if_nametoindex>
    e88468c6:	0005049b          	sext.w	s1,a0
		bb_ulog( kLogLevelInfo, "Starting detail browse for %s, if %s, flags 0x%X\n", 
    e88468ca:	0008e517          	auipc	a0,0x8e
    e88468ce:	31650513          	addi	a0,a0,790 # e88d4be0 <gLogCategory_BonjourBrowser>
    e88468d2:	411c                	lw	a5,0(a0)
		service = 0;
    e88468d4:	e402                	sd	zero,8(sp)
		bb_ulog( kLogLevelInfo, "Starting detail browse for %s, if %s, flags 0x%X\n", 
    e88468d6:	02800713          	li	a4,40
    e88468da:	04f74363          	blt	a4,a5,e8846920 <_BonjourBrowser_EnsureStarted+0x1c4>
    e88468de:	577d                	li	a4,-1
    e88468e0:	02e78b63          	beq	a5,a4,e8846916 <_BonjourBrowser_EnsureStarted+0x1ba>
    e88468e4:	703c                	ld	a5,96(s0)
    e88468e6:	6838                	ld	a4,80(s0)
    e88468e8:	e789                	bnez	a5,e88468f2 <_BonjourBrowser_EnsureStarted+0x196>
    e88468ea:	00077797          	auipc	a5,0x77
    e88468ee:	5ae78793          	addi	a5,a5,1454 # e88bde98 <__PRETTY_FUNCTION__.10585+0xd0>
    e88468f2:	884a                	mv	a6,s2
    e88468f4:	00077697          	auipc	a3,0x77
    e88468f8:	61468693          	addi	a3,a3,1556 # e88bdf08 <__PRETTY_FUNCTION__.10585+0x140>
    e88468fc:	02800613          	li	a2,40
    e8846900:	00078597          	auipc	a1,0x78
    e8846904:	a7858593          	addi	a1,a1,-1416 # e88be378 <__PRETTY_FUNCTION__.10441>
    e8846908:	0008e517          	auipc	a0,0x8e
    e884690c:	2d850513          	addi	a0,a0,728 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846910:	3650d0ef          	jal	ra,e8854474 <LogPrintF>
    e8846914:	a031                	j	e8846920 <_BonjourBrowser_EnsureStarted+0x1c4>
    e8846916:	02800593          	li	a1,40
    e884691a:	7580d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884691e:	f179                	bnez	a0,e88468e4 <_BonjourBrowser_EnsureStarted+0x188>
		err = DNSServiceBrowse( &service, kDNSServiceFlagsShareConnection | flags32, ifindex, 
    e8846920:	6c38                	ld	a4,88(s0)
    e8846922:	6834                	ld	a3,80(s0)
    e8846924:	6591                	lui	a1,0x4
    e8846926:	8822                	mv	a6,s0
    e8846928:	00000797          	auipc	a5,0x0
    e884692c:	d3078793          	addi	a5,a5,-720 # e8846658 <_BonjourBrowser_IgnoredBrowseHandler>
    e8846930:	8626                	mv	a2,s1
    e8846932:	00b965b3          	or	a1,s2,a1
    e8846936:	0028                	addi	a0,sp,8
    e8846938:	e0ad40ef          	jal	ra,e881af42 <DNSServiceBrowse>
		if( !err ) inBrowser->detailedBrowseRef = service;
    e884693c:	fd21                	bnez	a0,e8846894 <_BonjourBrowser_EnsureStarted+0x138>
    e884693e:	67a2                	ld	a5,8(sp)
    e8846940:	f01c                	sd	a5,32(s0)
	if( !inError )
    e8846942:	bf89                	j	e8846894 <_BonjourBrowser_EnsureStarted+0x138>
		require_action( ctx, exit, err = kNoMemoryErr );
    e8846944:	79f9                	lui	s3,0xffffe
    e8846946:	5b898993          	addi	s3,s3,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
		bb_ulog( kLogLevelWarning, "### Start browse for %s on if %s, flags 0x%llX failed: %#m\n", 
    e884694a:	0008e517          	auipc	a0,0x8e
    e884694e:	29650513          	addi	a0,a0,662 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846952:	411c                	lw	a5,0(a0)
    e8846954:	03c00713          	li	a4,60
    e8846958:	04f74463          	blt	a4,a5,e88469a0 <_BonjourBrowser_EnsureStarted+0x244>
    e884695c:	577d                	li	a4,-1
    e884695e:	02e78c63          	beq	a5,a4,e8846996 <_BonjourBrowser_EnsureStarted+0x23a>
    e8846962:	703c                	ld	a5,96(s0)
    e8846964:	6838                	ld	a4,80(s0)
    e8846966:	e789                	bnez	a5,e8846970 <_BonjourBrowser_EnsureStarted+0x214>
    e8846968:	00077797          	auipc	a5,0x77
    e884696c:	53078793          	addi	a5,a5,1328 # e88bde98 <__PRETTY_FUNCTION__.10585+0xd0>
    e8846970:	88ce                	mv	a7,s3
    e8846972:	8852                	mv	a6,s4
    e8846974:	00077697          	auipc	a3,0x77
    e8846978:	5cc68693          	addi	a3,a3,1484 # e88bdf40 <__PRETTY_FUNCTION__.10585+0x178>
    e884697c:	03c00613          	li	a2,60
    e8846980:	00078597          	auipc	a1,0x78
    e8846984:	9f858593          	addi	a1,a1,-1544 # e88be378 <__PRETTY_FUNCTION__.10441>
    e8846988:	0008e517          	auipc	a0,0x8e
    e884698c:	25850513          	addi	a0,a0,600 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846990:	2e50d0ef          	jal	ra,e8854474 <LogPrintF>
    e8846994:	a031                	j	e88469a0 <_BonjourBrowser_EnsureStarted+0x244>
    e8846996:	03c00593          	li	a1,60
    e884699a:	6d80d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884699e:	f171                	bnez	a0,e8846962 <_BonjourBrowser_EnsureStarted+0x206>
		_BonjourBrowser_EnsureStopped( inBrowser );
    e88469a0:	8522                	mv	a0,s0
    e88469a2:	845ff0ef          	jal	ra,e88461e6 <_BonjourBrowser_EnsureStopped>
	if( !inError )
    e88469a6:	85ce                	mv	a1,s3
    e88469a8:	8522                	mv	a0,s0
    e88469aa:	8a5ff0ef          	jal	ra,e884624e <_BonjourBrowser_HandleError.part.2>
	if( ctx )
    e88469ae:	ec81                	bnez	s1,e88469c6 <_BonjourBrowser_EnsureStarted+0x26a>
}
    e88469b0:	60e6                	ld	ra,88(sp)
    e88469b2:	6446                	ld	s0,80(sp)
    e88469b4:	64a6                	ld	s1,72(sp)
    e88469b6:	6906                	ld	s2,64(sp)
    e88469b8:	79e2                	ld	s3,56(sp)
    e88469ba:	7a42                	ld	s4,48(sp)
    e88469bc:	7aa2                	ld	s5,40(sp)
    e88469be:	7b02                	ld	s6,32(sp)
    e88469c0:	6be2                	ld	s7,24(sp)
    e88469c2:	6125                	addi	sp,sp,96
    e88469c4:	8082                	ret
		DNSServiceForget( &ctx->dnsService );
    e88469c6:	6888                	ld	a0,16(s1)
    e88469c8:	c509                	beqz	a0,e88469d2 <_BonjourBrowser_EnsureStarted+0x276>
    e88469ca:	b16d40ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    e88469ce:	0004b823          	sd	zero,16(s1)
		free( ctx );
    e88469d2:	8526                	mv	a0,s1
    e88469d4:	12d350ef          	jal	ra,e887c300 <eLIBs_free>
}
    e88469d8:	bfe1                	j	e88469b0 <_BonjourBrowser_EnsureStarted+0x254>

00000000e88469da <_BonjourBrowser_Start>:
{
    e88469da:	1101                	addi	sp,sp,-32
    e88469dc:	e826                	sd	s1,16(sp)
    e88469de:	ec06                	sd	ra,24(sp)
    e88469e0:	e422                	sd	s0,8(sp)
	BonjourBrowserRef const					browser	= params->browser;
    e88469e2:	6100                	ld	s0,0(a0)
{
    e88469e4:	84aa                	mv	s1,a0
	FreeNullSafe( browser->serviceType );
    e88469e6:	6828                	ld	a0,80(s0)
    e88469e8:	c119                	beqz	a0,e88469ee <_BonjourBrowser_Start+0x14>
    e88469ea:	117350ef          	jal	ra,e887c300 <eLIBs_free>
	browser->serviceType = params->serviceType;
    e88469ee:	649c                	ld	a5,8(s1)
	FreeNullSafe( browser->domain );
    e88469f0:	6c28                	ld	a0,88(s0)
	browser->serviceType = params->serviceType;
    e88469f2:	e83c                	sd	a5,80(s0)
	FreeNullSafe( browser->domain );
    e88469f4:	c119                	beqz	a0,e88469fa <_BonjourBrowser_Start+0x20>
    e88469f6:	10b350ef          	jal	ra,e887c300 <eLIBs_free>
	browser->domain = params->domain;
    e88469fa:	689c                	ld	a5,16(s1)
	FreeNullSafe( browser->ifname );
    e88469fc:	7028                	ld	a0,96(s0)
	browser->domain = params->domain;
    e88469fe:	ec3c                	sd	a5,88(s0)
	FreeNullSafe( browser->ifname );
    e8846a00:	c119                	beqz	a0,e8846a06 <_BonjourBrowser_Start+0x2c>
    e8846a02:	0ff350ef          	jal	ra,e887c300 <eLIBs_free>
	browser->ifname = params->ifname;
    e8846a06:	6c9c                	ld	a5,24(s1)
    e8846a08:	f03c                	sd	a5,96(s0)
	browser->flags = params->flags;
    e8846a0a:	709c                	ld	a5,32(s1)
    e8846a0c:	f43c                	sd	a5,104(s0)
	if( !browser->started )
    e8846a0e:	03844783          	lbu	a5,56(s0)
    e8846a12:	eb91                	bnez	a5,e8846a26 <_BonjourBrowser_Start+0x4c>
		CFRetain( browser );
    e8846a14:	8522                	mv	a0,s0
    e8846a16:	730000ef          	jal	ra,e8847146 <CFRetain>
		browser->started = true;
    e8846a1a:	4785                	li	a5,1
    e8846a1c:	02f40c23          	sb	a5,56(s0)
		browser->startTicks	= UpTicks();
    e8846a20:	7a41a0ef          	jal	ra,e88611c4 <UpTicks>
    e8846a24:	e028                	sd	a0,64(s0)
	_BonjourBrowser_EnsureStarted( browser );
    e8846a26:	8522                	mv	a0,s0
    e8846a28:	d35ff0ef          	jal	ra,e884675c <_BonjourBrowser_EnsureStarted>
	free( params );
    e8846a2c:	8526                	mv	a0,s1
    e8846a2e:	0d3350ef          	jal	ra,e887c300 <eLIBs_free>
}
    e8846a32:	64c2                	ld	s1,16(sp)
	CFRelease( browser );
    e8846a34:	8522                	mv	a0,s0
}
    e8846a36:	6422                	ld	s0,8(sp)
    e8846a38:	60e2                	ld	ra,24(sp)
    e8846a3a:	6105                	addi	sp,sp,32
	CFRelease( browser );
    e8846a3c:	70e0006f          	j	e884714a <CFRelease>

00000000e8846a40 <_BonjourBrowser_RetryTimerFired>:
{
    e8846a40:	1141                	addi	sp,sp,-16
    e8846a42:	e022                	sd	s0,0(sp)
    e8846a44:	842a                	mv	s0,a0
	bb_ulog( kLogLevelNotice, "Retrying Bonjour start for %s after failure\n", me->serviceType );
    e8846a46:	0008e517          	auipc	a0,0x8e
    e8846a4a:	19a50513          	addi	a0,a0,410 # e88d4be0 <gLogCategory_BonjourBrowser>
{
    e8846a4e:	e406                	sd	ra,8(sp)
	bb_ulog( kLogLevelNotice, "Retrying Bonjour start for %s after failure\n", me->serviceType );
    e8846a50:	411c                	lw	a5,0(a0)
    e8846a52:	03200713          	li	a4,50
    e8846a56:	02f74663          	blt	a4,a5,e8846a82 <_BonjourBrowser_RetryTimerFired+0x42>
    e8846a5a:	577d                	li	a4,-1
    e8846a5c:	04e78563          	beq	a5,a4,e8846aa6 <_BonjourBrowser_RetryTimerFired+0x66>
    e8846a60:	6838                	ld	a4,80(s0)
    e8846a62:	00077697          	auipc	a3,0x77
    e8846a66:	5be68693          	addi	a3,a3,1470 # e88be020 <__PRETTY_FUNCTION__.10585+0x258>
    e8846a6a:	03200613          	li	a2,50
    e8846a6e:	00078597          	auipc	a1,0x78
    e8846a72:	98a58593          	addi	a1,a1,-1654 # e88be3f8 <__PRETTY_FUNCTION__.10610>
    e8846a76:	0008e517          	auipc	a0,0x8e
    e8846a7a:	16a50513          	addi	a0,a0,362 # e88d4be0 <gLogCategory_BonjourBrowser>
    e8846a7e:	1f70d0ef          	jal	ra,e8854474 <LogPrintF>
	dispatch_source_forget( &me->retryTimer );
    e8846a82:	6428                	ld	a0,72(s0)
    e8846a84:	c901                	beqz	a0,e8846a94 <_BonjourBrowser_RetryTimerFired+0x54>
    e8846a86:	1c0090ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8846a8a:	6428                	ld	a0,72(s0)
    e8846a8c:	7c5070ef          	jal	ra,e884ea50 <dispatch_release>
    e8846a90:	04043423          	sd	zero,72(s0)
	me->startTicks = UpTicks();
    e8846a94:	7301a0ef          	jal	ra,e88611c4 <UpTicks>
    e8846a98:	e028                	sd	a0,64(s0)
	_BonjourBrowser_EnsureStarted( me );
    e8846a9a:	8522                	mv	a0,s0
}
    e8846a9c:	6402                	ld	s0,0(sp)
    e8846a9e:	60a2                	ld	ra,8(sp)
    e8846aa0:	0141                	addi	sp,sp,16
	_BonjourBrowser_EnsureStarted( me );
    e8846aa2:	cbbff06f          	j	e884675c <_BonjourBrowser_EnsureStarted>
	bb_ulog( kLogLevelNotice, "Retrying Bonjour start for %s after failure\n", me->serviceType );
    e8846aa6:	03200593          	li	a1,50
    e8846aaa:	5c80d0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8846aae:	d971                	beqz	a0,e8846a82 <_BonjourBrowser_RetryTimerFired+0x42>
    e8846ab0:	bf45                	j	e8846a60 <_BonjourBrowser_RetryTimerFired+0x20>

00000000e8846ab2 <BonjourBrowserGetTypeID>:
	dispatch_once_f( &gBonjourBrowserInitOnce, NULL, _BonjourBrowserGetTypeID );
    e8846ab2:	0009d517          	auipc	a0,0x9d
    e8846ab6:	0d650513          	addi	a0,a0,214 # e88e3b88 <gBonjourBrowserInitOnce>
    e8846aba:	4118                	lw	a4,0(a0)
    e8846abc:	4789                	li	a5,2
    e8846abe:	02f70363          	beq	a4,a5,e8846ae4 <BonjourBrowserGetTypeID+0x32>
{
    e8846ac2:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gBonjourBrowserInitOnce, NULL, _BonjourBrowserGetTypeID );
    e8846ac4:	ffffe617          	auipc	a2,0xffffe
    e8846ac8:	7a860613          	addi	a2,a2,1960 # e884526c <_BonjourBrowserGetTypeID>
    e8846acc:	4581                	li	a1,0
{
    e8846ace:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gBonjourBrowserInitOnce, NULL, _BonjourBrowserGetTypeID );
    e8846ad0:	3a2080ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e8846ad4:	60a2                	ld	ra,8(sp)
    e8846ad6:	0009d797          	auipc	a5,0x9d
    e8846ada:	0b678793          	addi	a5,a5,182 # e88e3b8c <gBonjourBrowserTypeID>
    e8846ade:	4388                	lw	a0,0(a5)
    e8846ae0:	0141                	addi	sp,sp,16
    e8846ae2:	8082                	ret
    e8846ae4:	0009d797          	auipc	a5,0x9d
    e8846ae8:	0a878793          	addi	a5,a5,168 # e88e3b8c <gBonjourBrowserTypeID>
    e8846aec:	4388                	lw	a0,0(a5)
    e8846aee:	8082                	ret

00000000e8846af0 <BonjourBrowser_Create>:
{
    e8846af0:	1101                	addi	sp,sp,-32
    e8846af2:	e84a                	sd	s2,16(sp)
    e8846af4:	f891540b          	sdd	s0,s1,(sp),0,4
    e8846af8:	ec06                	sd	ra,24(sp)
    e8846afa:	84ae                	mv	s1,a1
    e8846afc:	892a                	mv	s2,a0
	obj = (BonjourBrowserRef) _CFRuntimeCreateInstance( NULL, BonjourBrowserGetTypeID(), (CFIndex) extraLen, NULL );
    e8846afe:	fb5ff0ef          	jal	ra,e8846ab2 <BonjourBrowserGetTypeID>
    e8846b02:	0005059b          	sext.w	a1,a0
    e8846b06:	4681                	li	a3,0
    e8846b08:	08000613          	li	a2,128
    e8846b0c:	4501                	li	a0,0
    e8846b0e:	467000ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( obj, exit, err = kNoMemoryErr );
    e8846b12:	c129                	beqz	a0,e8846b54 <BonjourBrowser_Create+0x64>
    e8846b14:	842a                	mv	s0,a0
	memset(( (uint8_t *) obj ) + sizeof( obj->base ), 0, extraLen );
    e8846b16:	08000613          	li	a2,128
    e8846b1a:	4581                	li	a1,0
    e8846b1c:	0521                	addi	a0,a0,8
    e8846b1e:	077350ef          	jal	ra,e887c394 <eLIBs_memset>
	obj->internalQueue = dispatch_queue_create( inLabel ? inLabel : "BonjourBrowser", NULL );
    e8846b22:	e489                	bnez	s1,e8846b2c <BonjourBrowser_Create+0x3c>
    e8846b24:	00077497          	auipc	s1,0x77
    e8846b28:	2d448493          	addi	s1,s1,724 # e88bddf8 <__PRETTY_FUNCTION__.10585+0x30>
    e8846b2c:	4581                	li	a1,0
    e8846b2e:	8526                	mv	a0,s1
    e8846b30:	24e090ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e8846b34:	e408                	sd	a0,8(s0)
	require_action( obj->internalQueue, exit, err = kUnknownErr );
    e8846b36:	c11d                	beqz	a0,e8846b5c <BonjourBrowser_Create+0x6c>
	obj->eventQueue = dispatch_get_main_queue();
    e8846b38:	228090ef          	jal	ra,e884fd60 <dispatch_get_main_queue>
    e8846b3c:	f828                	sd	a0,112(s0)
	arc_safe_dispatch_retain( obj->eventQueue );
    e8846b3e:	707070ef          	jal	ra,e884ea44 <dispatch_retain>
	*outBrowser = obj;
    e8846b42:	00893023          	sd	s0,0(s2)
	err = kNoErr;
    e8846b46:	4501                	li	a0,0
}
    e8846b48:	60e2                	ld	ra,24(sp)
    e8846b4a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8846b4e:	6942                	ld	s2,16(sp)
    e8846b50:	6105                	addi	sp,sp,32
    e8846b52:	8082                	ret
	require_action( obj, exit, err = kNoMemoryErr );
    e8846b54:	7579                	lui	a0,0xffffe
    e8846b56:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8846b5a:	b7fd                	j	e8846b48 <BonjourBrowser_Create+0x58>
	CFReleaseNullSafe( obj );
    e8846b5c:	8522                	mv	a0,s0
    e8846b5e:	5ec000ef          	jal	ra,e884714a <CFRelease>
	require_action( obj->internalQueue, exit, err = kUnknownErr );
    e8846b62:	7579                	lui	a0,0xffffe
    e8846b64:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	return( err );
    e8846b68:	b7c5                	j	e8846b48 <BonjourBrowser_Create+0x58>

00000000e8846b6a <BonjourBrowser_SetDispatchQueue>:
{
    e8846b6a:	1101                	addi	sp,sp,-32
    e8846b6c:	e422                	sd	s0,8(sp)
    e8846b6e:	e826                	sd	s1,16(sp)
    e8846b70:	ec06                	sd	ra,24(sp)
    e8846b72:	84aa                	mv	s1,a0
    e8846b74:	842e                	mv	s0,a1
	ReplaceDispatchQueue( &inBrowser->eventQueue, inQueue );
    e8846b76:	e581                	bnez	a1,e8846b7e <BonjourBrowser_SetDispatchQueue+0x14>
    e8846b78:	1e8090ef          	jal	ra,e884fd60 <dispatch_get_main_queue>
    e8846b7c:	842a                	mv	s0,a0
    e8846b7e:	8522                	mv	a0,s0
    e8846b80:	6c5070ef          	jal	ra,e884ea44 <dispatch_retain>
    e8846b84:	78a8                	ld	a0,112(s1)
    e8846b86:	c119                	beqz	a0,e8846b8c <BonjourBrowser_SetDispatchQueue+0x22>
    e8846b88:	6c9070ef          	jal	ra,e884ea50 <dispatch_release>
    e8846b8c:	f8a0                	sd	s0,112(s1)
}
    e8846b8e:	60e2                	ld	ra,24(sp)
    e8846b90:	6422                	ld	s0,8(sp)
    e8846b92:	64c2                	ld	s1,16(sp)
    e8846b94:	6105                	addi	sp,sp,32
    e8846b96:	8082                	ret

00000000e8846b98 <BonjourBrowser_SetEventHandler>:
	inBrowser->eventHandler_f	= inFunc;
    e8846b98:	fd2c                	sd	a1,120(a0)
	inBrowser->eventHandler_ctx	= inContext;
    e8846b9a:	e150                	sd	a2,128(a0)
}
    e8846b9c:	8082                	ret

00000000e8846b9e <BonjourBrowser_Start>:
{
    e8846b9e:	7139                	addi	sp,sp,-64
    e8846ba0:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8846ba4:	89aa                	mv	s3,a0
	params = (BonjourBrowser_StartParams *) calloc( 1, sizeof( *params ) );
    e8846ba6:	02800513          	li	a0,40
{
    e8846baa:	f852                	sd	s4,48(sp)
    e8846bac:	fc06                	sd	ra,56(sp)
    e8846bae:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8846bb2:	e42e                	sd	a1,8(sp)
    e8846bb4:	8a32                	mv	s4,a2
    e8846bb6:	8936                	mv	s2,a3
    e8846bb8:	e03a                	sd	a4,0(sp)
	params = (BonjourBrowser_StartParams *) calloc( 1, sizeof( *params ) );
    e8846bba:	884ff0ef          	jal	ra,e8845c3e <calloc.constprop.4>
	require_action( params, exit, err = kNoMemoryErr );
    e8846bbe:	c549                	beqz	a0,e8846c48 <BonjourBrowser_Start+0xaa>
	params->flags = inFlags;
    e8846bc0:	6702                	ld	a4,0(sp)
	params->serviceType = strdup( inServiceType );
    e8846bc2:	65a2                	ld	a1,8(sp)
    e8846bc4:	842a                	mv	s0,a0
	params->browser = inBrowser;
    e8846bc6:	01353023          	sd	s3,0(a0)
	params->flags = inFlags;
    e8846bca:	f118                	sd	a4,32(a0)
	params->serviceType = strdup( inServiceType );
    e8846bcc:	852e                	mv	a0,a1
    e8846bce:	43b180ef          	jal	ra,e885f808 <strdup>
    e8846bd2:	e408                	sd	a0,8(s0)
    e8846bd4:	84aa                	mv	s1,a0
	require_action( params->serviceType, exit, err = kNoMemoryErr );
    e8846bd6:	cd31                	beqz	a0,e8846c32 <BonjourBrowser_Start+0x94>
	params->domain = strdup( inDomain ? inDomain : "" );
    e8846bd8:	000a1663          	bnez	s4,e8846be4 <BonjourBrowser_Start+0x46>
    e8846bdc:	0007aa17          	auipc	s4,0x7a
    e8846be0:	694a0a13          	addi	s4,s4,1684 # e88c1270 <kHTTPServerClass+0x90>
    e8846be4:	8552                	mv	a0,s4
    e8846be6:	423180ef          	jal	ra,e885f808 <strdup>
    e8846bea:	e808                	sd	a0,16(s0)
	require_action( params->domain, exit, err = kNoMemoryErr );
    e8846bec:	c121                	beqz	a0,e8846c2c <BonjourBrowser_Start+0x8e>
	if( inIfName && ( *inIfName != '\0' ) )
    e8846bee:	02091763          	bnez	s2,e8846c1c <BonjourBrowser_Start+0x7e>
	CFRetain( inBrowser );
    e8846bf2:	854e                	mv	a0,s3
    e8846bf4:	552000ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( inBrowser->internalQueue, params, _BonjourBrowser_Start );
    e8846bf8:	0089b503          	ld	a0,8(s3)
    e8846bfc:	00000617          	auipc	a2,0x0
    e8846c00:	dde60613          	addi	a2,a2,-546 # e88469da <_BonjourBrowser_Start>
    e8846c04:	85a2                	mv	a1,s0
    e8846c06:	01a080ef          	jal	ra,e884ec20 <dispatch_async_f>
	err = kNoErr;
    e8846c0a:	4501                	li	a0,0
}
    e8846c0c:	70e2                	ld	ra,56(sp)
    e8846c0e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8846c12:	7a42                	ld	s4,48(sp)
    e8846c14:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8846c18:	6121                	addi	sp,sp,64
    e8846c1a:	8082                	ret
	if( inIfName && ( *inIfName != '\0' ) )
    e8846c1c:	00094783          	lbu	a5,0(s2)
    e8846c20:	dbe9                	beqz	a5,e8846bf2 <BonjourBrowser_Start+0x54>
		params->ifname = strdup( inIfName );
    e8846c22:	854a                	mv	a0,s2
    e8846c24:	3e5180ef          	jal	ra,e885f808 <strdup>
    e8846c28:	ec08                	sd	a0,24(s0)
		require_action( params->ifname, exit, err = kNoMemoryErr );
    e8846c2a:	f561                	bnez	a0,e8846bf2 <BonjourBrowser_Start+0x54>
		FreeNullSafe( params->serviceType );
    e8846c2c:	8526                	mv	a0,s1
    e8846c2e:	6d2350ef          	jal	ra,e887c300 <eLIBs_free>
		FreeNullSafe( params->domain );
    e8846c32:	6808                	ld	a0,16(s0)
    e8846c34:	c119                	beqz	a0,e8846c3a <BonjourBrowser_Start+0x9c>
    e8846c36:	6ca350ef          	jal	ra,e887c300 <eLIBs_free>
		FreeNullSafe( params->ifname );
    e8846c3a:	6c08                	ld	a0,24(s0)
    e8846c3c:	c119                	beqz	a0,e8846c42 <BonjourBrowser_Start+0xa4>
    e8846c3e:	6c2350ef          	jal	ra,e887c300 <eLIBs_free>
		free( params );
    e8846c42:	8522                	mv	a0,s0
    e8846c44:	6bc350ef          	jal	ra,e887c300 <eLIBs_free>
    e8846c48:	7579                	lui	a0,0xffffe
    e8846c4a:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	return( err );
    e8846c4e:	bf7d                	j	e8846c0c <BonjourBrowser_Start+0x6e>

00000000e8846c50 <BonjourBrowser_Stop>:
{
    e8846c50:	1101                	addi	sp,sp,-32
    e8846c52:	ec06                	sd	ra,24(sp)
    e8846c54:	e42a                	sd	a0,8(sp)
	CFRetain( inBrowser );
    e8846c56:	4f0000ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( inBrowser->internalQueue, inBrowser, _BonjourBrowser_Stop );
    e8846c5a:	65a2                	ld	a1,8(sp)
}
    e8846c5c:	60e2                	ld	ra,24(sp)
	dispatch_async_f( inBrowser->internalQueue, inBrowser, _BonjourBrowser_Stop );
    e8846c5e:	00000617          	auipc	a2,0x0
    e8846c62:	a0c60613          	addi	a2,a2,-1524 # e884666a <_BonjourBrowser_Stop>
    e8846c66:	6588                	ld	a0,8(a1)
}
    e8846c68:	6105                	addi	sp,sp,32
	dispatch_async_f( inBrowser->internalQueue, inBrowser, _BonjourBrowser_Stop );
    e8846c6a:	7b70706f          	j	e884ec20 <dispatch_async_f>

00000000e8846c6e <BonjourBrowser_ReconfirmDevice>:
{
    e8846c6e:	7179                	addi	sp,sp,-48
    e8846c70:	f026                	sd	s1,32(sp)
    e8846c72:	84aa                	mv	s1,a0
	params = (BonjourBrowser_ReconfirmDeviceParams *) malloc( sizeof( *params ) );
    e8846c74:	4541                	li	a0,16
{
    e8846c76:	f406                	sd	ra,40(sp)
    e8846c78:	ec22                	sd	s0,24(sp)
    e8846c7a:	e42e                	sd	a1,8(sp)
	params = (BonjourBrowser_ReconfirmDeviceParams *) malloc( sizeof( *params ) );
    e8846c7c:	3d3340ef          	jal	ra,e887b84e <my_malloc>
	require( params, exit );
    e8846c80:	c51d                	beqz	a0,e8846cae <BonjourBrowser_ReconfirmDevice+0x40>
	params->deviceInfo = inDeviceInfo;
    e8846c82:	65a2                	ld	a1,8(sp)
    e8846c84:	842a                	mv	s0,a0
	params->browser = inBrowser;
    e8846c86:	e104                	sd	s1,0(a0)
	params->deviceInfo = inDeviceInfo;
    e8846c88:	e50c                	sd	a1,8(a0)
	CFRetain( inDeviceInfo );
    e8846c8a:	852e                	mv	a0,a1
    e8846c8c:	4ba000ef          	jal	ra,e8847146 <CFRetain>
	CFRetain( inBrowser );
    e8846c90:	8526                	mv	a0,s1
    e8846c92:	4b4000ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( inBrowser->internalQueue, params, _BonjourBrowser_ReconfirmDevice );
    e8846c96:	85a2                	mv	a1,s0
}
    e8846c98:	6462                	ld	s0,24(sp)
	dispatch_async_f( inBrowser->internalQueue, params, _BonjourBrowser_ReconfirmDevice );
    e8846c9a:	6488                	ld	a0,8(s1)
}
    e8846c9c:	70a2                	ld	ra,40(sp)
    e8846c9e:	7482                	ld	s1,32(sp)
	dispatch_async_f( inBrowser->internalQueue, params, _BonjourBrowser_ReconfirmDevice );
    e8846ca0:	ffffe617          	auipc	a2,0xffffe
    e8846ca4:	7fe60613          	addi	a2,a2,2046 # e884549e <_BonjourBrowser_ReconfirmDevice>
}
    e8846ca8:	6145                	addi	sp,sp,48
	dispatch_async_f( inBrowser->internalQueue, params, _BonjourBrowser_ReconfirmDevice );
    e8846caa:	7770706f          	j	e884ec20 <dispatch_async_f>
}
    e8846cae:	70a2                	ld	ra,40(sp)
    e8846cb0:	6462                	ld	s0,24(sp)
    e8846cb2:	7482                	ld	s1,32(sp)
    e8846cb4:	6145                	addi	sp,sp,48
    e8846cb6:	8082                	ret

00000000e8846cb8 <BonjourDevice_GetDeviceID>:
//===========================================================================================================================
//	BonjourDevice_GetDeviceID
//===========================================================================================================================

uint64_t	BonjourDevice_GetDeviceID( CFDictionaryRef inDeviceInfo, uint8_t outDeviceID[ 6 ], OSStatus *outErr )
{
    e8846cb8:	7159                	addi	sp,sp,-112
    e8846cba:	f0a2                	sd	s0,96(sp)
    e8846cbc:	842e                	mv	s0,a1
	Boolean				good;
	OSStatus			err;
	
	value = 0;
	
	tempCFStr = (CFStringRef) CFDictionaryGetValue( inDeviceInfo, CFSTR( kBonjourDeviceKey_DeviceID ) );
    e8846cbe:	00056597          	auipc	a1,0x56
    e8846cc2:	47a58593          	addi	a1,a1,1146 # e889d138 <icmp6_param_problem+0xca>
{
    e8846cc6:	eca6                	sd	s1,88(sp)
    e8846cc8:	f486                	sd	ra,104(sp)
    e8846cca:	84b2                	mv	s1,a2
	tempCFStr = (CFStringRef) CFDictionaryGetValue( inDeviceInfo, CFSTR( kBonjourDeviceKey_DeviceID ) );
    e8846ccc:	772000ef          	jal	ra,e884743e <CFDictionaryGetValue>
	require_action( tempCFStr, exit, err = kInternalErr );
    e8846cd0:	c12d                	beqz	a0,e8846d32 <BonjourDevice_GetDeviceID+0x7a>
	
	good = CFStringGetCString( tempCFStr, tempCStr, (CFIndex) sizeof( tempCStr ), kCFStringEncodingASCII );
    e8846cd2:	60000693          	li	a3,1536
    e8846cd6:	04000613          	li	a2,64
    e8846cda:	080c                	addi	a1,sp,16
    e8846cdc:	103000ef          	jal	ra,e88475de <CFStringGetCString>
	require_action( good, exit, err = kMalformedErr );
    e8846ce0:	cd31                	beqz	a0,e8846d3c <BonjourDevice_GetDeviceID+0x84>
	
	if( !outDeviceID ) outDeviceID = tempBuf;
    e8846ce2:	e011                	bnez	s0,e8846ce6 <BonjourDevice_GetDeviceID+0x2e>
    e8846ce4:	0020                	addi	s0,sp,8
	err = TextToMACAddress( tempCStr, kSizeCString, outDeviceID );
    e8846ce6:	86a2                	mv	a3,s0
    e8846ce8:	4619                	li	a2,6
    e8846cea:	55fd                	li	a1,-1
    e8846cec:	0808                	addi	a0,sp,16
    e8846cee:	2ae180ef          	jal	ra,e885ef9c <TextToHardwareAddress>
	value = 0;
    e8846cf2:	4781                	li	a5,0
	require_noerr( err, exit );
    e8846cf4:	e51d                	bnez	a0,e8846d22 <BonjourDevice_GetDeviceID+0x6a>
	value = ReadBig48( outDeviceID );
    e8846cf6:	00144703          	lbu	a4,1(s0)
    e8846cfa:	00044783          	lbu	a5,0(s0)
    e8846cfe:	1702                	slli	a4,a4,0x20
    e8846d00:	17a2                	slli	a5,a5,0x28
    e8846d02:	8fd9                	or	a5,a5,a4
    e8846d04:	00544703          	lbu	a4,5(s0)
    e8846d08:	8fd9                	or	a5,a5,a4
    e8846d0a:	00244703          	lbu	a4,2(s0)
    e8846d0e:	0762                	slli	a4,a4,0x18
    e8846d10:	8fd9                	or	a5,a5,a4
    e8846d12:	00344703          	lbu	a4,3(s0)
    e8846d16:	0742                	slli	a4,a4,0x10
    e8846d18:	8fd9                	or	a5,a5,a4
    e8846d1a:	00444703          	lbu	a4,4(s0)
    e8846d1e:	0722                	slli	a4,a4,0x8
    e8846d20:	8fd9                	or	a5,a5,a4
	
exit:
	if( outErr ) *outErr = err;
    e8846d22:	c091                	beqz	s1,e8846d26 <BonjourDevice_GetDeviceID+0x6e>
    e8846d24:	c088                	sw	a0,0(s1)
	return( value );
}
    e8846d26:	70a6                	ld	ra,104(sp)
    e8846d28:	7406                	ld	s0,96(sp)
    e8846d2a:	64e6                	ld	s1,88(sp)
    e8846d2c:	853e                	mv	a0,a5
    e8846d2e:	6165                	addi	sp,sp,112
    e8846d30:	8082                	ret
	require_action( tempCFStr, exit, err = kInternalErr );
    e8846d32:	7579                	lui	a0,0xffffe
    e8846d34:	59650513          	addi	a0,a0,1430 # ffffffffffffe596 <__DRAM0_INF_BASE+0xffffffff0000e596>
	value = 0;
    e8846d38:	4781                	li	a5,0
    e8846d3a:	b7e5                	j	e8846d22 <BonjourDevice_GetDeviceID+0x6a>
	require_action( good, exit, err = kMalformedErr );
    e8846d3c:	7579                	lui	a0,0xffffe
    e8846d3e:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e8846d42:	bfdd                	j	e8846d38 <BonjourDevice_GetDeviceID+0x80>

00000000e8846d44 <BonjourDevice_MergeInfo>:
//===========================================================================================================================
//	BonjourDevice_MergeInfo
//===========================================================================================================================

OSStatus	BonjourDevice_MergeInfo( CFDictionaryRef *ioDeviceInfo, CFDictionaryRef inNewDeviceInfo )
{
    e8846d44:	7135                	addi	sp,sp,-160
    e8846d46:	fcce                	sd	s3,120(sp)
    e8846d48:	e4e6                	sd	s9,72(sp)
    e8846d4a:	ed06                	sd	ra,152(sp)
    e8846d4c:	e922                	sd	s0,144(sp)
    e8846d4e:	e526                	sd	s1,136(sp)
    e8846d50:	e14a                	sd	s2,128(sp)
    e8846d52:	f8d2                	sd	s4,112(sp)
    e8846d54:	f4d6                	sd	s5,104(sp)
    e8846d56:	f0da                	sd	s6,96(sp)
    e8846d58:	ecde                	sd	s7,88(sp)
    e8846d5a:	e8e2                	sd	s8,80(sp)
    e8846d5c:	e0ea                	sd	s10,64(sp)
    e8846d5e:	fc6e                	sd	s11,56(sp)
	CFDictionaryRef const		oldDeviceInfo	= *ioDeviceInfo;
    e8846d60:	00053b03          	ld	s6,0(a0)
{
    e8846d64:	8caa                	mv	s9,a0
    e8846d66:	89ae                	mv	s3,a1
	CFIndex						removedIndex, removedCount;
	CFDictionaryRef				removedServiceDict;
	CFTypeRef					oldDomain, oldIfName, newDomain, newIfName, removedDomain, removedIfName;
	Boolean						p2pOnly;
	
	if( !oldDeviceInfo )
    e8846d68:	020b1863          	bnez	s6,e8846d98 <BonjourDevice_MergeInfo+0x54>
	{
		CFRetain( inNewDeviceInfo );
    e8846d6c:	852e                	mv	a0,a1
    e8846d6e:	3d8000ef          	jal	ra,e8847146 <CFRetain>
		*ioDeviceInfo = inNewDeviceInfo;
		err = kNoErr;
    e8846d72:	4401                	li	s0,0
		*ioDeviceInfo = inNewDeviceInfo;
    e8846d74:	013cb023          	sd	s3,0(s9)
exit:
	CFReleaseNullSafe( mergedServices );
	CFReleaseNullSafe( mergedInfo );
	CFReleaseNullSafe( oldServices );
	return( err );
}
    e8846d78:	8522                	mv	a0,s0
    e8846d7a:	60ea                	ld	ra,152(sp)
    e8846d7c:	644a                	ld	s0,144(sp)
    e8846d7e:	64aa                	ld	s1,136(sp)
    e8846d80:	690a                	ld	s2,128(sp)
    e8846d82:	79e6                	ld	s3,120(sp)
    e8846d84:	7a46                	ld	s4,112(sp)
    e8846d86:	7aa6                	ld	s5,104(sp)
    e8846d88:	7b06                	ld	s6,96(sp)
    e8846d8a:	6be6                	ld	s7,88(sp)
    e8846d8c:	6c46                	ld	s8,80(sp)
    e8846d8e:	6ca6                	ld	s9,72(sp)
    e8846d90:	6d06                	ld	s10,64(sp)
    e8846d92:	7de2                	ld	s11,56(sp)
    e8846d94:	610d                	addi	sp,sp,160
    e8846d96:	8082                	ret
	oldServices = CFDictionaryGetCFArray( oldDeviceInfo, CFSTR( kBonjourDeviceKey_Services ), NULL );
    e8846d98:	3d0000ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8846d9c:	0005061b          	sext.w	a2,a0
    e8846da0:	4681                	li	a3,0
    e8846da2:	00056597          	auipc	a1,0x56
    e8846da6:	3ae58593          	addi	a1,a1,942 # e889d150 <icmp6_param_problem+0xe2>
    e8846daa:	855a                	mv	a0,s6
    e8846dac:	0ff050ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8846db0:	892a                	mv	s2,a0
	CFRetainNullSafe( oldServices );
    e8846db2:	c119                	beqz	a0,e8846db8 <BonjourDevice_MergeInfo+0x74>
    e8846db4:	392000ef          	jal	ra,e8847146 <CFRetain>
	mergedInfo = CFDictionaryCreateMutableCopy( NULL, 0, oldDeviceInfo );
    e8846db8:	865a                	mv	a2,s6
    e8846dba:	4581                	li	a1,0
    e8846dbc:	4501                	li	a0,0
    e8846dbe:	656000ef          	jal	ra,e8847414 <CFDictionaryCreateMutableCopy>
    e8846dc2:	842a                	mv	s0,a0
	require_action( mergedInfo, exit, err = kNoMemoryErr );
    e8846dc4:	24050963          	beqz	a0,e8847016 <BonjourDevice_MergeInfo+0x2d2>
	CFDictionaryMergeDictionary( mergedInfo, inNewDeviceInfo );
    e8846dc8:	85ce                	mv	a1,s3
    e8846dca:	44e050ef          	jal	ra,e884c218 <CFDictionaryMergeDictionary>
	CFDictionaryRemoveValue( mergedInfo, CFSTR( kBonjourDeviceKey_RemovedServices ) );
    e8846dce:	00056597          	auipc	a1,0x56
    e8846dd2:	3e258593          	addi	a1,a1,994 # e889d1b0 <icmp6_param_problem+0x142>
    e8846dd6:	8522                	mv	a0,s0
    e8846dd8:	682000ef          	jal	ra,e884745a <CFDictionaryRemoveValue>
	newServices = CFDictionaryGetCFArray( inNewDeviceInfo, CFSTR( kBonjourDeviceKey_Services ), NULL );
    e8846ddc:	38c000ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8846de0:	0005061b          	sext.w	a2,a0
    e8846de4:	4681                	li	a3,0
    e8846de6:	00056597          	auipc	a1,0x56
    e8846dea:	36a58593          	addi	a1,a1,874 # e889d150 <icmp6_param_problem+0xe2>
    e8846dee:	854e                	mv	a0,s3
    e8846df0:	0bb050ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8846df4:	8aaa                	mv	s5,a0
	if( newServices )	mergedServices = CFArrayCreateMutableCopy( NULL, 0, newServices );
    e8846df6:	c545                	beqz	a0,e8846e9e <BonjourDevice_MergeInfo+0x15a>
    e8846df8:	862a                	mv	a2,a0
    e8846dfa:	4581                	li	a1,0
    e8846dfc:	4501                	li	a0,0
    e8846dfe:	3de000ef          	jal	ra,e88471dc <CFArrayCreateMutableCopy>
	else				mergedServices = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8846e02:	84aa                	mv	s1,a0
	require_action( mergedServices, exit, err = kNoMemoryErr );
    e8846e04:	20050663          	beqz	a0,e8847010 <BonjourDevice_MergeInfo+0x2cc>
	removedServices	= CFDictionaryGetCFArray( inNewDeviceInfo, CFSTR( kBonjourDeviceKey_RemovedServices ), NULL );
    e8846e08:	360000ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8846e0c:	0005061b          	sext.w	a2,a0
    e8846e10:	4681                	li	a3,0
    e8846e12:	00056597          	auipc	a1,0x56
    e8846e16:	39e58593          	addi	a1,a1,926 # e889d1b0 <icmp6_param_problem+0x142>
    e8846e1a:	854e                	mv	a0,s3
    e8846e1c:	08f050ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8846e20:	e82a                	sd	a0,16(sp)
	removedCount	= removedServices ? CFArrayGetCount( removedServices ) : 0;
    e8846e22:	e002                	sd	zero,0(sp)
    e8846e24:	c501                	beqz	a0,e8846e2c <BonjourDevice_MergeInfo+0xe8>
    e8846e26:	3cc000ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8846e2a:	e02a                	sd	a0,0(sp)
	newCount		= newServices ? CFArrayGetCount( newServices ) : 0;
    e8846e2c:	e402                	sd	zero,8(sp)
    e8846e2e:	000a8663          	beqz	s5,e8846e3a <BonjourDevice_MergeInfo+0xf6>
    e8846e32:	8556                	mv	a0,s5
    e8846e34:	3be000ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8846e38:	e42a                	sd	a0,8(sp)
	oldCount		= oldServices ? CFArrayGetCount( oldServices ) : 0;
    e8846e3a:	06091a63          	bnez	s2,e8846eae <BonjourDevice_MergeInfo+0x16a>
	CFDictionarySetValue( mergedInfo, CFSTR( kBonjourDeviceKey_Services ), mergedServices );
    e8846e3e:	8626                	mv	a2,s1
    e8846e40:	00056597          	auipc	a1,0x56
    e8846e44:	31058593          	addi	a1,a1,784 # e889d150 <icmp6_param_problem+0xe2>
    e8846e48:	8522                	mv	a0,s0
    e8846e4a:	608000ef          	jal	ra,e8847452 <CFDictionarySetValue>
	for( newIndex = 0; newIndex < newCount; ++newIndex )
    e8846e4e:	4981                	li	s3,0
	newCount = CFArrayGetCount( mergedServices );
    e8846e50:	8526                	mv	a0,s1
    e8846e52:	3a0000ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8846e56:	8a2a                	mv	s4,a0
		if( !CFDictionaryGetBoolean( newServiceDict, CFSTR( kBonjourDeviceKey_P2P ), NULL ) )
    e8846e58:	00056a97          	auipc	s5,0x56
    e8846e5c:	298a8a93          	addi	s5,s5,664 # e889d0f0 <icmp6_param_problem+0x82>
	for( newIndex = 0; newIndex < newCount; ++newIndex )
    e8846e60:	1749cf63          	blt	s3,s4,e8846fde <BonjourDevice_MergeInfo+0x29a>
	if( p2pOnly )	CFDictionarySetValue( mergedInfo, CFSTR( kBonjourDeviceKey_P2POnly ), kCFBooleanTrue );
    e8846e64:	19405e63          	blez	s4,e8847000 <BonjourDevice_MergeInfo+0x2bc>
    e8846e68:	0008e797          	auipc	a5,0x8e
    e8846e6c:	e6878793          	addi	a5,a5,-408 # e88d4cd0 <kCFLBooleanTrue>
    e8846e70:	6390                	ld	a2,0(a5)
    e8846e72:	00056597          	auipc	a1,0x56
    e8846e76:	32e58593          	addi	a1,a1,814 # e889d1a0 <icmp6_param_problem+0x132>
    e8846e7a:	8522                	mv	a0,s0
    e8846e7c:	5d6000ef          	jal	ra,e8847452 <CFDictionarySetValue>
	if( oldDeviceInfo ) CFRelease( oldDeviceInfo );
    e8846e80:	855a                	mv	a0,s6
    e8846e82:	2c8000ef          	jal	ra,e884714a <CFRelease>
	*ioDeviceInfo = mergedInfo;
    e8846e86:	008cb023          	sd	s0,0(s9)
	CFReleaseNullSafe( mergedServices );
    e8846e8a:	8526                	mv	a0,s1
    e8846e8c:	2be000ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e8846e90:	4401                	li	s0,0
	CFReleaseNullSafe( oldServices );
    e8846e92:	ee0903e3          	beqz	s2,e8846d78 <BonjourDevice_MergeInfo+0x34>
    e8846e96:	854a                	mv	a0,s2
    e8846e98:	2b2000ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e8846e9c:	bdf1                	j	e8846d78 <BonjourDevice_MergeInfo+0x34>
	else				mergedServices = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8846e9e:	00078617          	auipc	a2,0x78
    e8846ea2:	8d260613          	addi	a2,a2,-1838 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e8846ea6:	4581                	li	a1,0
    e8846ea8:	31e000ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e8846eac:	bf99                	j	e8846e02 <BonjourDevice_MergeInfo+0xbe>
	oldCount		= oldServices ? CFArrayGetCount( oldServices ) : 0;
    e8846eae:	854a                	mv	a0,s2
    e8846eb0:	342000ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8846eb4:	ec2a                	sd	a0,24(sp)
	for( oldIndex = 0; oldIndex < oldCount; ++oldIndex )
    e8846eb6:	4d01                	li	s10,0
		oldDomain = CFDictionaryGetValue( oldServiceDict, CFSTR( kBonjourDeviceKey_Domain ) );
    e8846eb8:	00056d97          	auipc	s11,0x56
    e8846ebc:	208d8d93          	addi	s11,s11,520 # e889d0c0 <icmp6_param_problem+0x52>
	for( oldIndex = 0; oldIndex < oldCount; ++oldIndex )
    e8846ec0:	67e2                	ld	a5,24(sp)
    e8846ec2:	f6fd5ee3          	bge	s10,a5,e8846e3e <BonjourDevice_MergeInfo+0xfa>
		oldServiceDict = CFArrayGetCFDictionaryAtIndex( oldServices, oldIndex, NULL );
    e8846ec6:	4dc000ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8846eca:	0005061b          	sext.w	a2,a0
    e8846ece:	4681                	li	a3,0
    e8846ed0:	85ea                	mv	a1,s10
    e8846ed2:	854a                	mv	a0,s2
    e8846ed4:	1b8050ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
    e8846ed8:	8c2a                	mv	s8,a0
		if( !oldServiceDict ) continue;
    e8846eda:	c92d                	beqz	a0,e8846f4c <BonjourDevice_MergeInfo+0x208>
		oldDomain = CFDictionaryGetValue( oldServiceDict, CFSTR( kBonjourDeviceKey_Domain ) );
    e8846edc:	85ee                	mv	a1,s11
    e8846ede:	560000ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8846ee2:	89aa                	mv	s3,a0
		oldIfName = CFDictionaryGetValue( oldServiceDict, CFSTR( kBonjourDeviceKey_InterfaceName ) );
    e8846ee4:	00056597          	auipc	a1,0x56
    e8846ee8:	1fc58593          	addi	a1,a1,508 # e889d0e0 <icmp6_param_problem+0x72>
    e8846eec:	8562                	mv	a0,s8
    e8846eee:	550000ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8846ef2:	8a2a                	mv	s4,a0
		for( newIndex = 0; newIndex < newCount; ++newIndex )
    e8846ef4:	4b81                	li	s7,0
    e8846ef6:	67a2                	ld	a5,8(sp)
    e8846ef8:	00fbcb63          	blt	s7,a5,e8846f0e <BonjourDevice_MergeInfo+0x1ca>
		for( removedIndex = 0; removedIndex < removedCount; ++removedIndex )
    e8846efc:	4b81                	li	s7,0
    e8846efe:	6782                	ld	a5,0(sp)
    e8846f00:	06fbcc63          	blt	s7,a5,e8846f78 <BonjourDevice_MergeInfo+0x234>
		CFArrayAppendValue( mergedServices, oldServiceDict );
    e8846f04:	85e2                	mv	a1,s8
    e8846f06:	8526                	mv	a0,s1
    e8846f08:	368000ef          	jal	ra,e8847270 <CFArrayAppendValue>
    e8846f0c:	a081                	j	e8846f4c <BonjourDevice_MergeInfo+0x208>
			newServiceDict = CFArrayGetCFDictionaryAtIndex( newServices, newIndex, NULL );
    e8846f0e:	494000ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8846f12:	0005061b          	sext.w	a2,a0
    e8846f16:	4681                	li	a3,0
    e8846f18:	85de                	mv	a1,s7
    e8846f1a:	8556                	mv	a0,s5
    e8846f1c:	170050ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
			if( !newServiceDict ) continue;
    e8846f20:	e119                	bnez	a0,e8846f26 <BonjourDevice_MergeInfo+0x1e2>
		for( newIndex = 0; newIndex < newCount; ++newIndex )
    e8846f22:	2b85                	addiw	s7,s7,1
    e8846f24:	bfc9                	j	e8846ef6 <BonjourDevice_MergeInfo+0x1b2>
			newDomain = CFDictionaryGetValue( newServiceDict, CFSTR( kBonjourDeviceKey_Domain ) );
    e8846f26:	85ee                	mv	a1,s11
    e8846f28:	f42a                	sd	a0,40(sp)
    e8846f2a:	514000ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8846f2e:	f02a                	sd	a0,32(sp)
			newIfName = CFDictionaryGetValue( newServiceDict, CFSTR( kBonjourDeviceKey_InterfaceName ) );
    e8846f30:	77a2                	ld	a5,40(sp)
    e8846f32:	00056597          	auipc	a1,0x56
    e8846f36:	1ae58593          	addi	a1,a1,430 # e889d0e0 <icmp6_param_problem+0x72>
    e8846f3a:	853e                	mv	a0,a5
    e8846f3c:	502000ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8846f40:	87aa                	mv	a5,a0
			if( CFEqualNullSafe( oldDomain, newDomain ) && CFEqualNullSafe( oldIfName, newIfName ) )
    e8846f42:	7702                	ld	a4,32(sp)
    e8846f44:	00e99663          	bne	s3,a4,e8846f50 <BonjourDevice_MergeInfo+0x20c>
    e8846f48:	00fa1f63          	bne	s4,a5,e8846f66 <BonjourDevice_MergeInfo+0x222>
	for( oldIndex = 0; oldIndex < oldCount; ++oldIndex )
    e8846f4c:	2d05                	addiw	s10,s10,1
    e8846f4e:	bf8d                	j	e8846ec0 <BonjourDevice_MergeInfo+0x17c>
    e8846f50:	f02a                	sd	a0,32(sp)
			if( CFEqualNullSafe( oldDomain, newDomain ) && CFEqualNullSafe( oldIfName, newIfName ) )
    e8846f52:	fc0988e3          	beqz	s3,e8846f22 <BonjourDevice_MergeInfo+0x1de>
    e8846f56:	d771                	beqz	a4,e8846f22 <BonjourDevice_MergeInfo+0x1de>
    e8846f58:	85ba                	mv	a1,a4
    e8846f5a:	854e                	mv	a0,s3
    e8846f5c:	1f2000ef          	jal	ra,e884714e <CFEqual>
    e8846f60:	7782                	ld	a5,32(sp)
    e8846f62:	f17d                	bnez	a0,e8846f48 <BonjourDevice_MergeInfo+0x204>
    e8846f64:	bf7d                	j	e8846f22 <BonjourDevice_MergeInfo+0x1de>
    e8846f66:	fa0a0ee3          	beqz	s4,e8846f22 <BonjourDevice_MergeInfo+0x1de>
    e8846f6a:	dfc5                	beqz	a5,e8846f22 <BonjourDevice_MergeInfo+0x1de>
    e8846f6c:	85be                	mv	a1,a5
    e8846f6e:	8552                	mv	a0,s4
    e8846f70:	1de000ef          	jal	ra,e884714e <CFEqual>
    e8846f74:	d55d                	beqz	a0,e8846f22 <BonjourDevice_MergeInfo+0x1de>
    e8846f76:	bfd9                	j	e8846f4c <BonjourDevice_MergeInfo+0x208>
			removedServiceDict = CFArrayGetCFDictionaryAtIndex( removedServices, removedIndex, NULL );
    e8846f78:	42a000ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8846f7c:	0005061b          	sext.w	a2,a0
    e8846f80:	6542                	ld	a0,16(sp)
    e8846f82:	4681                	li	a3,0
    e8846f84:	85de                	mv	a1,s7
    e8846f86:	106050ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
			if( !removedServiceDict ) continue;
    e8846f8a:	e119                	bnez	a0,e8846f90 <BonjourDevice_MergeInfo+0x24c>
		for( removedIndex = 0; removedIndex < removedCount; ++removedIndex )
    e8846f8c:	2b85                	addiw	s7,s7,1
    e8846f8e:	bf85                	j	e8846efe <BonjourDevice_MergeInfo+0x1ba>
			removedDomain = CFDictionaryGetValue( removedServiceDict, CFSTR( kBonjourDeviceKey_Domain ) );
    e8846f90:	85ee                	mv	a1,s11
    e8846f92:	f42a                	sd	a0,40(sp)
    e8846f94:	4aa000ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8846f98:	f02a                	sd	a0,32(sp)
			removedIfName = CFDictionaryGetValue( removedServiceDict, CFSTR( kBonjourDeviceKey_InterfaceName ) );
    e8846f9a:	77a2                	ld	a5,40(sp)
    e8846f9c:	00056597          	auipc	a1,0x56
    e8846fa0:	14458593          	addi	a1,a1,324 # e889d0e0 <icmp6_param_problem+0x72>
    e8846fa4:	853e                	mv	a0,a5
    e8846fa6:	498000ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8846faa:	87aa                	mv	a5,a0
			if( CFEqualNullSafe( oldDomain, removedDomain ) && CFEqualNullSafe( oldIfName, removedIfName ) )
    e8846fac:	7702                	ld	a4,32(sp)
    e8846fae:	00e99d63          	bne	s3,a4,e8846fc8 <BonjourDevice_MergeInfo+0x284>
    e8846fb2:	f8fa0de3          	beq	s4,a5,e8846f4c <BonjourDevice_MergeInfo+0x208>
    e8846fb6:	fc0a0be3          	beqz	s4,e8846f8c <BonjourDevice_MergeInfo+0x248>
    e8846fba:	dbe9                	beqz	a5,e8846f8c <BonjourDevice_MergeInfo+0x248>
    e8846fbc:	85be                	mv	a1,a5
    e8846fbe:	8552                	mv	a0,s4
    e8846fc0:	18e000ef          	jal	ra,e884714e <CFEqual>
    e8846fc4:	d561                	beqz	a0,e8846f8c <BonjourDevice_MergeInfo+0x248>
    e8846fc6:	b759                	j	e8846f4c <BonjourDevice_MergeInfo+0x208>
    e8846fc8:	f02a                	sd	a0,32(sp)
    e8846fca:	fc0981e3          	beqz	s3,e8846f8c <BonjourDevice_MergeInfo+0x248>
    e8846fce:	df5d                	beqz	a4,e8846f8c <BonjourDevice_MergeInfo+0x248>
    e8846fd0:	85ba                	mv	a1,a4
    e8846fd2:	854e                	mv	a0,s3
    e8846fd4:	17a000ef          	jal	ra,e884714e <CFEqual>
    e8846fd8:	7782                	ld	a5,32(sp)
    e8846fda:	fd61                	bnez	a0,e8846fb2 <BonjourDevice_MergeInfo+0x26e>
    e8846fdc:	bf45                	j	e8846f8c <BonjourDevice_MergeInfo+0x248>
		newServiceDict = CFArrayGetCFDictionaryAtIndex( mergedServices, newIndex, NULL );
    e8846fde:	3c4000ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8846fe2:	0005061b          	sext.w	a2,a0
    e8846fe6:	4681                	li	a3,0
    e8846fe8:	85ce                	mv	a1,s3
    e8846fea:	8526                	mv	a0,s1
    e8846fec:	0a0050ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
		if( !newServiceDict ) continue;
    e8846ff0:	e119                	bnez	a0,e8846ff6 <BonjourDevice_MergeInfo+0x2b2>
	for( newIndex = 0; newIndex < newCount; ++newIndex )
    e8846ff2:	2985                	addiw	s3,s3,1
    e8846ff4:	b5b5                	j	e8846e60 <BonjourDevice_MergeInfo+0x11c>
		if( !CFDictionaryGetBoolean( newServiceDict, CFSTR( kBonjourDeviceKey_P2P ), NULL ) )
    e8846ff6:	4601                	li	a2,0
    e8846ff8:	85d6                	mv	a1,s5
    e8846ffa:	676050ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8846ffe:	f975                	bnez	a0,e8846ff2 <BonjourDevice_MergeInfo+0x2ae>
	else			CFDictionaryRemoveValue( mergedInfo, CFSTR( kBonjourDeviceKey_P2POnly ) );
    e8847000:	00056597          	auipc	a1,0x56
    e8847004:	1a058593          	addi	a1,a1,416 # e889d1a0 <icmp6_param_problem+0x132>
    e8847008:	8522                	mv	a0,s0
    e884700a:	450000ef          	jal	ra,e884745a <CFDictionaryRemoveValue>
    e884700e:	bd8d                	j	e8846e80 <BonjourDevice_MergeInfo+0x13c>
	CFReleaseNullSafe( mergedInfo );
    e8847010:	8522                	mv	a0,s0
    e8847012:	138000ef          	jal	ra,e884714a <CFRelease>
	require_action( mergedInfo, exit, err = kNoMemoryErr );
    e8847016:	7479                	lui	s0,0xffffe
    e8847018:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	CFReleaseNullSafe( mergedInfo );
    e884701c:	bd9d                	j	e8846e92 <BonjourDevice_MergeInfo+0x14e>

00000000e884701e <BonjourDevice_RemoveInterfaceInfo>:
//===========================================================================================================================
//	BonjourDevice_RemoveInterfaceInfo
//===========================================================================================================================

OSStatus	BonjourDevice_RemoveInterfaceInfo( CFDictionaryRef *ioDeviceInfo, const char *inIfName, Boolean inRemoveOthers )
{
    e884701e:	711d                	addi	sp,sp,-96
    e8847020:	ec86                	sd	ra,88(sp)
    e8847022:	e8a2                	sd	s0,80(sp)
    e8847024:	e4a6                	sd	s1,72(sp)
    e8847026:	e0ca                	sd	s2,64(sp)
    e8847028:	fc4e                	sd	s3,56(sp)
    e884702a:	f852                	sd	s4,48(sp)
    e884702c:	f456                	sd	s5,40(sp)
    e884702e:	f05a                	sd	s6,32(sp)
    e8847030:	ec5e                	sd	s7,24(sp)
	CFArrayRef					oldServices;
	CFIndex						n;
	CFDictionaryRef				serviceDict;
	char						ifname[ IF_NAMESIZE + 1 ];
	
	require_action_quiet( *ioDeviceInfo, exit, err = kNoErr );
    e8847032:	6100                	ld	s0,0(a0)
    e8847034:	ec09                	bnez	s0,e884704e <BonjourDevice_RemoveInterfaceInfo+0x30>
	else		CFDictionaryRemoveValue( newInfo, CFSTR( kBonjourDeviceKey_Services ) );
	
	CFRelease( *ioDeviceInfo );
	*ioDeviceInfo = newInfo;
	newInfo = NULL;
	err = kNoErr;
    e8847036:	4501                	li	a0,0
	
exit:
	CFReleaseNullSafe( newServices );
	CFReleaseNullSafe( newInfo );
	return( err );
}
    e8847038:	60e6                	ld	ra,88(sp)
    e884703a:	6446                	ld	s0,80(sp)
    e884703c:	64a6                	ld	s1,72(sp)
    e884703e:	6906                	ld	s2,64(sp)
    e8847040:	79e2                	ld	s3,56(sp)
    e8847042:	7a42                	ld	s4,48(sp)
    e8847044:	7aa2                	ld	s5,40(sp)
    e8847046:	7b02                	ld	s6,32(sp)
    e8847048:	6be2                	ld	s7,24(sp)
    e884704a:	6125                	addi	sp,sp,96
    e884704c:	8082                	ret
    e884704e:	8a32                	mv	s4,a2
    e8847050:	8aae                	mv	s5,a1
    e8847052:	84aa                	mv	s1,a0
	oldServices = CFDictionaryGetCFArray( *ioDeviceInfo, CFSTR( kBonjourDeviceKey_Services ), NULL );
    e8847054:	114000ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8847058:	0005061b          	sext.w	a2,a0
    e884705c:	4681                	li	a3,0
    e884705e:	8522                	mv	a0,s0
    e8847060:	00056597          	auipc	a1,0x56
    e8847064:	0f058593          	addi	a1,a1,240 # e889d150 <icmp6_param_problem+0xe2>
    e8847068:	642050ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e884706c:	842a                	mv	s0,a0
	n = oldServices ? CFArrayGetCount( oldServices ) : 0;
    e884706e:	d561                	beqz	a0,e8847036 <BonjourDevice_RemoveInterfaceInfo+0x18>
    e8847070:	182000ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8847074:	892a                	mv	s2,a0
	require_action_quiet( n > 0, exit, err = kNoErr );
    e8847076:	fca050e3          	blez	a0,e8847036 <BonjourDevice_RemoveInterfaceInfo+0x18>
	newInfo = CFDictionaryCreateMutableCopy( NULL, 0, *ioDeviceInfo );
    e884707a:	6090                	ld	a2,0(s1)
    e884707c:	4581                	li	a1,0
    e884707e:	4501                	li	a0,0
    e8847080:	394000ef          	jal	ra,e8847414 <CFDictionaryCreateMutableCopy>
    e8847084:	89aa                	mv	s3,a0
	require_action( newInfo, exit, err = kNoMemoryErr );
    e8847086:	c155                	beqz	a0,e884712a <BonjourDevice_RemoveInterfaceInfo+0x10c>
	newServices = CFArrayCreateMutableCopy( NULL, 0, oldServices );
    e8847088:	8622                	mv	a2,s0
    e884708a:	4581                	li	a1,0
    e884708c:	4501                	li	a0,0
    e884708e:	14e000ef          	jal	ra,e88471dc <CFArrayCreateMutableCopy>
    e8847092:	842a                	mv	s0,a0
	require_action( newServices, exit, err = kNoMemoryErr );
    e8847094:	c941                	beqz	a0,e8847124 <BonjourDevice_RemoveInterfaceInfo+0x106>
	while( n-- > 0 )
    e8847096:	5b7d                	li	s6,-1
		CFDictionaryGetCString( serviceDict, CFSTR( kBonjourDeviceKey_InterfaceName ), ifname, sizeof( ifname ), NULL );
    e8847098:	00056b97          	auipc	s7,0x56
    e884709c:	048b8b93          	addi	s7,s7,72 # e889d0e0 <icmp6_param_problem+0x72>
		if( ( strcmp( ifname, inIfName ) == 0 ) != !inRemoveOthers ) continue;
    e88470a0:	001a3a13          	seqz	s4,s4
	while( n-- > 0 )
    e88470a4:	397d                	addiw	s2,s2,-1
    e88470a6:	03691863          	bne	s2,s6,e88470d6 <BonjourDevice_RemoveInterfaceInfo+0xb8>
	n = CFArrayGetCount( newServices );
    e88470aa:	8522                	mv	a0,s0
    e88470ac:	146000ef          	jal	ra,e88471f2 <CFArrayGetCount>
	if( n > 0 )	CFDictionarySetValue( newInfo, CFSTR( kBonjourDeviceKey_Services ), newServices );
    e88470b0:	06a05263          	blez	a0,e8847114 <BonjourDevice_RemoveInterfaceInfo+0xf6>
    e88470b4:	8622                	mv	a2,s0
    e88470b6:	00056597          	auipc	a1,0x56
    e88470ba:	09a58593          	addi	a1,a1,154 # e889d150 <icmp6_param_problem+0xe2>
    e88470be:	854e                	mv	a0,s3
    e88470c0:	392000ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( *ioDeviceInfo );
    e88470c4:	6088                	ld	a0,0(s1)
    e88470c6:	084000ef          	jal	ra,e884714a <CFRelease>
	*ioDeviceInfo = newInfo;
    e88470ca:	0134b023          	sd	s3,0(s1)
	CFReleaseNullSafe( newServices );
    e88470ce:	8522                	mv	a0,s0
    e88470d0:	07a000ef          	jal	ra,e884714a <CFRelease>
    e88470d4:	b78d                	j	e8847036 <BonjourDevice_RemoveInterfaceInfo+0x18>
		serviceDict = CFArrayGetCFDictionaryAtIndex( newServices, n, NULL );
    e88470d6:	2cc000ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e88470da:	0005061b          	sext.w	a2,a0
    e88470de:	4681                	li	a3,0
    e88470e0:	85ca                	mv	a1,s2
    e88470e2:	8522                	mv	a0,s0
    e88470e4:	7a9040ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
		if( !serviceDict ) continue;
    e88470e8:	dd55                	beqz	a0,e88470a4 <BonjourDevice_RemoveInterfaceInfo+0x86>
		CFDictionaryGetCString( serviceDict, CFSTR( kBonjourDeviceKey_InterfaceName ), ifname, sizeof( ifname ), NULL );
    e88470ea:	4701                	li	a4,0
    e88470ec:	469d                	li	a3,7
    e88470ee:	0030                	addi	a2,sp,8
    e88470f0:	85de                	mv	a1,s7
		*ifname = '\0';
    e88470f2:	00010423          	sb	zero,8(sp)
		CFDictionaryGetCString( serviceDict, CFSTR( kBonjourDeviceKey_InterfaceName ), ifname, sizeof( ifname ), NULL );
    e88470f6:	140050ef          	jal	ra,e884c236 <CFDictionaryGetCString>
		if( ( strcmp( ifname, inIfName ) == 0 ) != !inRemoveOthers ) continue;
    e88470fa:	85d6                	mv	a1,s5
    e88470fc:	0028                	addi	a0,sp,8
    e88470fe:	23e350ef          	jal	ra,e887c33c <eLIBs_strcmp>
    e8847102:	00153513          	seqz	a0,a0
    e8847106:	f9451fe3          	bne	a0,s4,e88470a4 <BonjourDevice_RemoveInterfaceInfo+0x86>
		CFArrayRemoveValueAtIndex( newServices, n );
    e884710a:	85ca                	mv	a1,s2
    e884710c:	8522                	mv	a0,s0
    e884710e:	166000ef          	jal	ra,e8847274 <CFArrayRemoveValueAtIndex>
    e8847112:	bf49                	j	e88470a4 <BonjourDevice_RemoveInterfaceInfo+0x86>
	else		CFDictionaryRemoveValue( newInfo, CFSTR( kBonjourDeviceKey_Services ) );
    e8847114:	00056597          	auipc	a1,0x56
    e8847118:	03c58593          	addi	a1,a1,60 # e889d150 <icmp6_param_problem+0xe2>
    e884711c:	854e                	mv	a0,s3
    e884711e:	33c000ef          	jal	ra,e884745a <CFDictionaryRemoveValue>
    e8847122:	b74d                	j	e88470c4 <BonjourDevice_RemoveInterfaceInfo+0xa6>
	CFReleaseNullSafe( newInfo );
    e8847124:	854e                	mv	a0,s3
    e8847126:	024000ef          	jal	ra,e884714a <CFRelease>
	require_action( newInfo, exit, err = kNoMemoryErr );
    e884712a:	7579                	lui	a0,0xffffe
    e884712c:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8847130:	b721                	j	e8847038 <BonjourDevice_RemoveInterfaceInfo+0x1a>

00000000e8847132 <CFGetTypeID>:
//===========================================================================================================================
//	CFGetTypeID
//===========================================================================================================================

CFTypeID	CFGetTypeID( CFTypeRef inObj )
{
    e8847132:	1101                	addi	sp,sp,-32
	CFTypeID		id;
	
	id = 0;
	CFLGetTypeID( inObj, &id );
    e8847134:	006c                	addi	a1,sp,12
{
    e8847136:	ec06                	sd	ra,24(sp)
	id = 0;
    e8847138:	c602                	sw	zero,12(sp)
	CFLGetTypeID( inObj, &id );
    e884713a:	25d000ef          	jal	ra,e8847b96 <CFLGetTypeID>
	return( id );
}
    e884713e:	60e2                	ld	ra,24(sp)
    e8847140:	4532                	lw	a0,12(sp)
    e8847142:	6105                	addi	sp,sp,32
    e8847144:	8082                	ret

00000000e8847146 <CFRetain>:
//	CFRetain
//===========================================================================================================================

CFTypeRef	CFRetain( CFTypeRef inObject )
{
	return( CFLRetain( inObject ) );
    e8847146:	2830006f          	j	e8847bc8 <CFLRetain>

00000000e884714a <CFRelease>:
//	CFRelease
//===========================================================================================================================

void	CFRelease( CFTypeRef inObject )
{
	CFLRelease( inObject );
    e884714a:	2cd0006f          	j	e8847c16 <CFLRelease>

00000000e884714e <CFEqual>:
//	CFEqual
//===========================================================================================================================

Boolean	CFEqual( CFTypeRef inLeft, CFTypeRef inRight )
{
	return( CFLEqual( inLeft, inRight ) );
    e884714e:	3750006f          	j	e8847cc2 <CFLEqual>

00000000e8847152 <CFPropertyListCreateDeepCopy>:
CFPropertyListRef
	CFPropertyListCreateDeepCopy( 
		CFAllocatorRef 		inAllocator, 
		CFPropertyListRef	inPropertyList, 
		CFOptionFlags		inMutabilityOption )
{
    e8847152:	1101                	addi	sp,sp,-32
    e8847154:	852e                	mv	a0,a1
	
	(void) inAllocator;			// Unused
	(void) inMutabilityOption;	// Unused
	
	obj = NULL;
	CFLCopy( inPropertyList, &obj );
    e8847156:	002c                	addi	a1,sp,8
{
    e8847158:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e884715a:	e402                	sd	zero,8(sp)
	CFLCopy( inPropertyList, &obj );
    e884715c:	000020ef          	jal	ra,e884915c <CFLCopy>
	return( obj );
}
    e8847160:	60e2                	ld	ra,24(sp)
    e8847162:	6522                	ld	a0,8(sp)
    e8847164:	6105                	addi	sp,sp,32
    e8847166:	8082                	ret

00000000e8847168 <CFArrayGetTypeID>:
//	CFArrayGetTypeID
//===========================================================================================================================

CFTypeID	CFArrayGetTypeID( void )
{
	return( CFLArrayGetTypeID() );
    e8847168:	4290006f          	j	e8847d90 <CFLArrayGetTypeID>

00000000e884716c <CFArrayCreate>:
	CFArrayCreate( 
		CFAllocatorRef				inAllocator, 
		const void **				inValues, 
		CFIndex						inCount, 
		const CFArrayCallBacks *	inCallBacks )
{
    e884716c:	7139                	addi	sp,sp,-64
    e884716e:	f44a                	sd	s2,40(sp)
    e8847170:	f84e                	sd	s3,48(sp)
    e8847172:	fc06                	sd	ra,56(sp)
    e8847174:	ec22                	sd	s0,24(sp)
    e8847176:	f026                	sd	s1,32(sp)
	CFLArrayRef		tmp;
	CFIndex			i;
	OSStatus		err;
	
	obj = NULL;
	tmp = NULL;
    e8847178:	e402                	sd	zero,8(sp)
{
    e884717a:	89ae                	mv	s3,a1
    e884717c:	8932                	mv	s2,a2
	require_action( inValues || ( inCount == 0 ), exit, err = kParamErr );
    e884717e:	ed99                	bnez	a1,e884719c <CFArrayCreate+0x30>
    e8847180:	ce11                	beqz	a2,e884719c <CFArrayCreate+0x30>
	obj = NULL;
    e8847182:	4481                	li	s1,0
	
	obj = tmp;
	tmp = NULL;
	
exit:
	if( tmp ) CFLRelease( tmp );
    e8847184:	6522                	ld	a0,8(sp)
    e8847186:	c119                	beqz	a0,e884718c <CFArrayCreate+0x20>
    e8847188:	28f000ef          	jal	ra,e8847c16 <CFLRelease>
	return( obj );	
}
    e884718c:	70e2                	ld	ra,56(sp)
    e884718e:	6462                	ld	s0,24(sp)
    e8847190:	8526                	mv	a0,s1
    e8847192:	7922                	ld	s2,40(sp)
    e8847194:	7482                	ld	s1,32(sp)
    e8847196:	79c2                	ld	s3,48(sp)
    e8847198:	6121                	addi	sp,sp,64
    e884719a:	8082                	ret
	err = CFLArrayCreate( inAllocator, inCallBacks, &tmp );
    e884719c:	0030                	addi	a2,sp,8
    e884719e:	85b6                	mv	a1,a3
    e88471a0:	3f5000ef          	jal	ra,e8847d94 <CFLArrayCreate>
	require_noerr( err, exit );
    e88471a4:	4401                	li	s0,0
    e88471a6:	fd71                	bnez	a0,e8847182 <CFArrayCreate+0x16>
	for( i = 0; i < inCount; ++i )
    e88471a8:	0004079b          	sext.w	a5,s0
    e88471ac:	64a2                	ld	s1,8(sp)
    e88471ae:	0127c463          	blt	a5,s2,e88471b6 <CFArrayCreate+0x4a>
	tmp = NULL;
    e88471b2:	e402                	sd	zero,8(sp)
    e88471b4:	bfc1                	j	e8847184 <CFArrayCreate+0x18>
		err = CFLArrayAppendValue( tmp, inValues[ i ] );
    e88471b6:	6689c58b          	lrd	a1,s3,s0,3
    e88471ba:	8526                	mv	a0,s1
    e88471bc:	0405                	addi	s0,s0,1
    e88471be:	58f000ef          	jal	ra,e8847f4c <CFLArrayAppendValue>
		require_noerr( err, exit );
    e88471c2:	d17d                	beqz	a0,e88471a8 <CFArrayCreate+0x3c>
    e88471c4:	bf7d                	j	e8847182 <CFArrayCreate+0x16>

00000000e88471c6 <CFArrayCreateMutable>:
//===========================================================================================================================
//	CFArrayCreateMutable
//===========================================================================================================================

CFMutableArrayRef	CFArrayCreateMutable( CFAllocatorRef inAllocator, CFIndex inCapacity, const CFArrayCallBacks *inCallBacks )
{
    e88471c6:	1101                	addi	sp,sp,-32
    e88471c8:	85b2                	mv	a1,a2
	CFArrayRef		obj;
	
	(void) inCapacity; // Unused
	
	obj = NULL;
	CFLArrayCreate( inAllocator, inCallBacks, &obj );
    e88471ca:	0030                	addi	a2,sp,8
{
    e88471cc:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e88471ce:	e402                	sd	zero,8(sp)
	CFLArrayCreate( inAllocator, inCallBacks, &obj );
    e88471d0:	3c5000ef          	jal	ra,e8847d94 <CFLArrayCreate>
	return( obj );
}
    e88471d4:	60e2                	ld	ra,24(sp)
    e88471d6:	6522                	ld	a0,8(sp)
    e88471d8:	6105                	addi	sp,sp,32
    e88471da:	8082                	ret

00000000e88471dc <CFArrayCreateMutableCopy>:
//===========================================================================================================================
//	CFArrayCreateMutableCopy
//===========================================================================================================================

CFMutableArrayRef	CFArrayCreateMutableCopy( CFAllocatorRef inAllocator, CFIndex inCapacity, CFArrayRef inArray )
{
    e88471dc:	1101                	addi	sp,sp,-32
    e88471de:	85b2                	mv	a1,a2
	CFArrayRef		obj;
	
	(void) inCapacity; // Unused
	
	obj = NULL;
	CFLArrayCreateCopy( inAllocator, inArray, &obj );
    e88471e0:	0030                	addi	a2,sp,8
{
    e88471e2:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e88471e4:	e402                	sd	zero,8(sp)
	CFLArrayCreateCopy( inAllocator, inArray, &obj );
    e88471e6:	56f000ef          	jal	ra,e8847f54 <CFLArrayCreateCopy>
	return( obj );
}
    e88471ea:	60e2                	ld	ra,24(sp)
    e88471ec:	6522                	ld	a0,8(sp)
    e88471ee:	6105                	addi	sp,sp,32
    e88471f0:	8082                	ret

00000000e88471f2 <CFArrayGetCount>:
//===========================================================================================================================
//	CFArrayGetCount
//===========================================================================================================================

CFIndex	CFArrayGetCount( CFArrayRef inObject )
{
    e88471f2:	1101                	addi	sp,sp,-32
	CFIndex		n;
	
	n = 0;
	CFLArrayGetCount( inObject, &n );
    e88471f4:	006c                	addi	a1,sp,12
{
    e88471f6:	ec06                	sd	ra,24(sp)
	n = 0;
    e88471f8:	c602                	sw	zero,12(sp)
	CFLArrayGetCount( inObject, &n );
    e88471fa:	405000ef          	jal	ra,e8847dfe <CFLArrayGetCount>
	return( n );
}
    e88471fe:	60e2                	ld	ra,24(sp)
    e8847200:	4532                	lw	a0,12(sp)
    e8847202:	6105                	addi	sp,sp,32
    e8847204:	8082                	ret

00000000e8847206 <CFArrayGetValueAtIndex>:
//===========================================================================================================================
//	CFArrayGetValueAtIndex
//===========================================================================================================================

void *	CFArrayGetValueAtIndex( CFArrayRef inObject, CFIndex inIndex )
{
    e8847206:	1101                	addi	sp,sp,-32
	void *		value;
	
	value = NULL;
	CFLArrayGetValueAtIndex( inObject, inIndex, &value );
    e8847208:	0030                	addi	a2,sp,8
{
    e884720a:	ec06                	sd	ra,24(sp)
	value = NULL;
    e884720c:	e402                	sd	zero,8(sp)
	CFLArrayGetValueAtIndex( inObject, inIndex, &value );
    e884720e:	41f000ef          	jal	ra,e8847e2c <CFLArrayGetValueAtIndex>
	return( value );
}
    e8847212:	60e2                	ld	ra,24(sp)
    e8847214:	6522                	ld	a0,8(sp)
    e8847216:	6105                	addi	sp,sp,32
    e8847218:	8082                	ret

00000000e884721a <CFArrayGetFirstIndexOfValue>:
{
    e884721a:	7179                	addi	sp,sp,-48
    e884721c:	e422                	sd	s0,8(sp)
	i = inRange.location;
    e884721e:	0005841b          	sext.w	s0,a1
	n = i + inRange.length;
    e8847222:	fe05a58b          	ext	a1,a1,63,32
{
    e8847226:	e826                	sd	s1,16(sp)
    e8847228:	ec4a                	sd	s2,24(sp)
    e884722a:	f04e                	sd	s3,32(sp)
    e884722c:	f406                	sd	ra,40(sp)
    e884722e:	892a                	mv	s2,a0
    e8847230:	89b2                	mv	s3,a2
	n = i + inRange.length;
    e8847232:	008584bb          	addw	s1,a1,s0
	maxN = CFArrayGetCount( inArray );
    e8847236:	fbdff0ef          	jal	ra,e88471f2 <CFArrayGetCount>
	require( ( i >= 0 ) && ( i <= n ), exit );
    e884723a:	00045b63          	bgez	s0,e8847250 <CFArrayGetFirstIndexOfValue+0x36>
	return( -1 );
    e884723e:	547d                	li	s0,-1
}
    e8847240:	8522                	mv	a0,s0
    e8847242:	70a2                	ld	ra,40(sp)
    e8847244:	6422                	ld	s0,8(sp)
    e8847246:	64c2                	ld	s1,16(sp)
    e8847248:	6962                	ld	s2,24(sp)
    e884724a:	7982                	ld	s3,32(sp)
    e884724c:	6145                	addi	sp,sp,48
    e884724e:	8082                	ret
	require( ( i >= 0 ) && ( i <= n ), exit );
    e8847250:	fe84c7e3          	blt	s1,s0,e884723e <CFArrayGetFirstIndexOfValue+0x24>
	require( ( n >= 0 ) && ( n <= maxN ), exit );
    e8847254:	fe9545e3          	blt	a0,s1,e884723e <CFArrayGetFirstIndexOfValue+0x24>
	for( ; i < n; ++i )
    e8847258:	fe9403e3          	beq	s0,s1,e884723e <CFArrayGetFirstIndexOfValue+0x24>
		obj = CFArrayGetValueAtIndex( inArray, i );
    e884725c:	85a2                	mv	a1,s0
    e884725e:	854a                	mv	a0,s2
    e8847260:	fa7ff0ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
	return( CFLEqual( inLeft, inRight ) );
    e8847264:	85ce                	mv	a1,s3
    e8847266:	25d000ef          	jal	ra,e8847cc2 <CFLEqual>
		if( CFEqual( obj, inValue ) )
    e884726a:	f979                	bnez	a0,e8847240 <CFArrayGetFirstIndexOfValue+0x26>
	for( ; i < n; ++i )
    e884726c:	2405                	addiw	s0,s0,1
    e884726e:	b7ed                	j	e8847258 <CFArrayGetFirstIndexOfValue+0x3e>

00000000e8847270 <CFArrayAppendValue>:
//	CFArrayAppendValue
//===========================================================================================================================

void	CFArrayAppendValue( CFMutableArrayRef inObject, const void *inValue )
{
	CFLArrayAppendValue( inObject, inValue );
    e8847270:	4dd0006f          	j	e8847f4c <CFLArrayAppendValue>

00000000e8847274 <CFArrayRemoveValueAtIndex>:
//	CFArrayRemoveValueAtIndex
//===========================================================================================================================

void	CFArrayRemoveValueAtIndex( CFMutableArrayRef inObject, CFIndex inIndex )
{
	CFLArrayRemoveValueAtIndex( inObject, inIndex );
    e8847274:	5630006f          	j	e8847fd6 <CFLArrayRemoveValueAtIndex>

00000000e8847278 <CFArrayRemoveAllValues>:
//	CFArrayRemoveAllValues
//===========================================================================================================================

void	CFArrayRemoveAllValues( CFMutableArrayRef inObject )
{
	CFLArrayRemoveAllValues( inObject );
    e8847278:	6350006f          	j	e88480ac <CFLArrayRemoveAllValues>

00000000e884727c <CFArrayContainsValue>:
//===========================================================================================================================
//	CFArrayContainsValue
//===========================================================================================================================

Boolean	CFArrayContainsValue( CFArrayRef inArray, CFRange inRange, const void *inValue )
{
    e884727c:	87ae                	mv	a5,a1
	return( CFLArrayContainsValue( inArray, inRange.location, inRange.location + inRange.length, inValue ) );
    e884727e:	fe07a78b          	ext	a5,a5,63,32
    e8847282:	2581                	sext.w	a1,a1
    e8847284:	86b2                	mv	a3,a2
    e8847286:	00b7863b          	addw	a2,a5,a1
    e884728a:	6910006f          	j	e884811a <CFLArrayContainsValue>

00000000e884728e <CFBooleanGetTypeID>:
//	CFBooleanGetTypeID
//===========================================================================================================================

CFTypeID	CFBooleanGetTypeID( void )
{
	return( CFLBooleanGetTypeID() );
    e884728e:	76f0006f          	j	e88481fc <CFLBooleanGetTypeID>

00000000e8847292 <CFDataGetTypeID>:
//	CFDataGetTypeID
//===========================================================================================================================

CFTypeID	CFDataGetTypeID( void )
{
	return( CFLDataGetTypeID() );
    e8847292:	76f0006f          	j	e8848200 <CFLDataGetTypeID>

00000000e8847296 <CFDataCreate>:
//===========================================================================================================================
//	CFDataCreate
//===========================================================================================================================

CFDataRef	CFDataCreate( CFAllocatorRef inAllocator, const uint8_t *inData, CFIndex inSize )
{
    e8847296:	1101                	addi	sp,sp,-32
	CFDataRef		obj;
	
	obj = NULL;
	CFLDataCreate( inAllocator, inData, (size_t) inSize, &obj );
    e8847298:	0034                	addi	a3,sp,8
{
    e884729a:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e884729c:	e402                	sd	zero,8(sp)
	CFLDataCreate( inAllocator, inData, (size_t) inSize, &obj );
    e884729e:	767000ef          	jal	ra,e8848204 <CFLDataCreate>
	return( obj );
}
    e88472a2:	60e2                	ld	ra,24(sp)
    e88472a4:	6522                	ld	a0,8(sp)
    e88472a6:	6105                	addi	sp,sp,32
    e88472a8:	8082                	ret

00000000e88472aa <CFDataCreateMutable>:
//===========================================================================================================================
//	CFDataCreateMutable
//===========================================================================================================================

CFMutableDataRef	CFDataCreateMutable( CFAllocatorRef inAllocator, CFIndex inCapacity )
{
    e88472aa:	1101                	addi	sp,sp,-32
	CFMutableDataRef		obj;
	
	(void) inCapacity; // Unused
	
	obj = NULL;
	CFLDataCreate( inAllocator, NULL, 0, &obj );
    e88472ac:	0034                	addi	a3,sp,8
    e88472ae:	4601                	li	a2,0
    e88472b0:	4581                	li	a1,0
{
    e88472b2:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e88472b4:	e402                	sd	zero,8(sp)
	CFLDataCreate( inAllocator, NULL, 0, &obj );
    e88472b6:	74f000ef          	jal	ra,e8848204 <CFLDataCreate>
	return( obj );
}
    e88472ba:	60e2                	ld	ra,24(sp)
    e88472bc:	6522                	ld	a0,8(sp)
    e88472be:	6105                	addi	sp,sp,32
    e88472c0:	8082                	ret

00000000e88472c2 <CFDataCreateWithBytesNoCopy>:
	CFDataCreateWithBytesNoCopy( 
		CFAllocatorRef 	inAllocator, 
		const uint8_t *	inBytes,
		CFIndex			inLen, 
		CFAllocatorRef	inBytesDeallocator )
{
    e88472c2:	1101                	addi	sp,sp,-32
	CFDataRef		obj;
	
	obj = NULL;
	CFLDataCreateNoCopy( inAllocator, inBytes, (size_t) inLen, inBytesDeallocator, &obj );
    e88472c4:	0038                	addi	a4,sp,8
{
    e88472c6:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e88472c8:	e402                	sd	zero,8(sp)
	CFLDataCreateNoCopy( inAllocator, inBytes, (size_t) inLen, inBytesDeallocator, &obj );
    e88472ca:	7d5000ef          	jal	ra,e884829e <CFLDataCreateNoCopy>
	return( obj );
}
    e88472ce:	60e2                	ld	ra,24(sp)
    e88472d0:	6522                	ld	a0,8(sp)
    e88472d2:	6105                	addi	sp,sp,32
    e88472d4:	8082                	ret

00000000e88472d6 <CFDataGetLength>:
//===========================================================================================================================
//	CFDataGetLength
//===========================================================================================================================

CFIndex	CFDataGetLength( CFDataRef inObject )
{
    e88472d6:	1101                	addi	sp,sp,-32
	size_t		size;
	
	size = 0;
	CFLDataGetDataPtr( inObject, NULL, &size );
    e88472d8:	0030                	addi	a2,sp,8
    e88472da:	4581                	li	a1,0
{
    e88472dc:	ec06                	sd	ra,24(sp)
	size = 0;
    e88472de:	e402                	sd	zero,8(sp)
	CFLDataGetDataPtr( inObject, NULL, &size );
    e88472e0:	02e010ef          	jal	ra,e884830e <CFLDataGetDataPtr>
	return( (CFIndex) size );
}
    e88472e4:	60e2                	ld	ra,24(sp)
    e88472e6:	4522                	lw	a0,8(sp)
    e88472e8:	6105                	addi	sp,sp,32
    e88472ea:	8082                	ret

00000000e88472ec <CFDataGetBytePtr>:
//===========================================================================================================================
//	CFDataGetBytePtr
//===========================================================================================================================

const uint8_t *	CFDataGetBytePtr( CFDataRef inObject )
{
    e88472ec:	1101                	addi	sp,sp,-32
	uint8_t *		p;
	
	p = NULL;
	CFLDataGetDataPtr( inObject, &p, NULL );
    e88472ee:	002c                	addi	a1,sp,8
    e88472f0:	4601                	li	a2,0
{
    e88472f2:	ec06                	sd	ra,24(sp)
	p = NULL;
    e88472f4:	e402                	sd	zero,8(sp)
	CFLDataGetDataPtr( inObject, &p, NULL );
    e88472f6:	018010ef          	jal	ra,e884830e <CFLDataGetDataPtr>
	return( p );
}
    e88472fa:	60e2                	ld	ra,24(sp)
    e88472fc:	6522                	ld	a0,8(sp)
    e88472fe:	6105                	addi	sp,sp,32
    e8847300:	8082                	ret

00000000e8847302 <CFDataGetMutableBytePtr>:
    e8847302:	febff06f          	j	e88472ec <CFDataGetBytePtr>

00000000e8847306 <CFDataAppendBytes>:
//	CFDataAppendBytes
//===========================================================================================================================

void	CFDataAppendBytes( CFMutableDataRef inObject, const uint8_t *inData, CFIndex inSize )
{
	CFLDataAppendData( inObject, inData, (size_t) inSize );
    e8847306:	2ae0206f          	j	e88495b4 <CFLDataAppendData>

00000000e884730a <CFDateGetTypeID>:
//	CFDateGetTypeID
//===========================================================================================================================

CFTypeID	CFDateGetTypeID( void )
{
	return( CFLDateGetTypeID() );
    e884730a:	0380106f          	j	e8848342 <CFLDateGetTypeID>

00000000e884730e <CFDateCreate>:
CFDateRef	CFDateCreate( CFAllocatorRef inAllocator, CFAbsoluteTime inTime )
{
	CFDateRef				date;
	CFLDateComponents		comps;
	
	inTime += ( ( (int64_t) kDaysToCoreFoundationEpoch ) * kSecondsPerDay );
    e884730e:	00077797          	auipc	a5,0x77
    e8847312:	1f27b787          	fld	fa5,498(a5) # e88be500 <kBonjourBrowserClass+0x68>
    e8847316:	02f57553          	fadd.d	fa0,fa0,fa5
{
    e884731a:	7179                	addi	sp,sp,-48
    e884731c:	f022                	sd	s0,32(sp)
    e884731e:	842a                	mv	s0,a0
	SecondsToYMD_HMS( (int64_t) inTime, &comps.year, &comps.month, &comps.day, &comps.hour, &comps.minute, &comps.second );
    e8847320:	01c10813          	addi	a6,sp,28
    e8847324:	083c                	addi	a5,sp,24
    e8847326:	0858                	addi	a4,sp,20
    e8847328:	c2251553          	fcvt.l.d	a0,fa0,rtz
    e884732c:	0814                	addi	a3,sp,16
    e884732e:	0070                	addi	a2,sp,12
    e8847330:	002c                	addi	a1,sp,8
{
    e8847332:	f406                	sd	ra,40(sp)
	SecondsToYMD_HMS( (int64_t) inTime, &comps.year, &comps.month, &comps.day, &comps.hour, &comps.minute, &comps.second );
    e8847334:	07a1a0ef          	jal	ra,e88613ae <SecondsToYMD_HMS>
	date = NULL;
    e8847338:	e002                	sd	zero,0(sp)
	CFLDateCreate( inAllocator, &comps, &date );
    e884733a:	860a                	mv	a2,sp
    e884733c:	002c                	addi	a1,sp,8
    e884733e:	8522                	mv	a0,s0
    e8847340:	076010ef          	jal	ra,e88483b6 <CFLDateCreate>
	return( date );
}
    e8847344:	7402                	ld	s0,32(sp)
    e8847346:	70a2                	ld	ra,40(sp)
    e8847348:	6502                	ld	a0,0(sp)
    e884734a:	6145                	addi	sp,sp,48
    e884734c:	8082                	ret

00000000e884734e <CFDateCreateWithComponents>:
		int				inMonth, 
		int				inDay, 
		int				inHour, 
		int				inMinute, 
		int				inSecond )
{
    e884734e:	7179                	addi	sp,sp,-48
	CFDateRef				date;
	CFLDateComponents		components = { inYear, inMonth, inDay, inHour, inMinute, inSecond };
    e8847350:	e2c1558b          	swd	a1,a2,(sp),1,3
	
	date = NULL;
	CFLDateCreate( inAllocator, &components, &date );
    e8847354:	860a                	mv	a2,sp
    e8847356:	002c                	addi	a1,sp,8
{
    e8847358:	f406                	sd	ra,40(sp)
	CFLDateComponents		components = { inYear, inMonth, inDay, inHour, inMinute, inSecond };
    e884735a:	e4e1568b          	swd	a3,a4,(sp),2,3
    e884735e:	cc3e                	sw	a5,24(sp)
    e8847360:	ce42                	sw	a6,28(sp)
	date = NULL;
    e8847362:	e002                	sd	zero,0(sp)
	CFLDateCreate( inAllocator, &components, &date );
    e8847364:	052010ef          	jal	ra,e88483b6 <CFLDateCreate>
	return( date );
}
    e8847368:	70a2                	ld	ra,40(sp)
    e884736a:	6502                	ld	a0,0(sp)
    e884736c:	6145                	addi	sp,sp,48
    e884736e:	8082                	ret

00000000e8847370 <CFDateGetAbsoluteTime>:
//===========================================================================================================================
//	CFDateGetAbsoluteTime
//===========================================================================================================================

CFAbsoluteTime	CFDateGetAbsoluteTime( CFDateRef inDate )
{
    e8847370:	7179                	addi	sp,sp,-48
	CFAbsoluteTime			at;
	OSStatus				err;
	CFLDateComponents		d;
	
	at = 0;
	err = CFLDateGetDate( inDate, &d );
    e8847372:	002c                	addi	a1,sp,8
{
    e8847374:	f406                	sd	ra,40(sp)
	err = CFLDateGetDate( inDate, &d );
    e8847376:	7d1000ef          	jal	ra,e8848346 <CFLDateGetDate>
	require_noerr( err, exit );
    e884737a:	f2000553          	fmv.d.x	fa0,zero
    e884737e:	ed19                	bnez	a0,e884739c <CFDateGetAbsoluteTime+0x2c>
	
	at = (CFAbsoluteTime) YMD_HMStoSeconds( d.year, d.month, d.day, d.hour, d.minute, d.second, kDaysToCoreFoundationEpoch );
    e8847380:	47f2                	lw	a5,28(sp)
    e8847382:	4762                	lw	a4,24(sp)
    e8847384:	46d2                	lw	a3,20(sp)
    e8847386:	4642                	lw	a2,16(sp)
    e8847388:	45b2                	lw	a1,12(sp)
    e884738a:	4522                	lw	a0,8(sp)
    e884738c:	000b2837          	lui	a6,0xb2
    e8847390:	57680813          	addi	a6,a6,1398 # b2576 <memcmp-0xe874da8a>
    e8847394:	77f190ef          	jal	ra,e8861312 <YMD_HMStoSeconds>
    e8847398:	d2257553          	fcvt.d.l	fa0,a0
	
exit:
	return( at );
}
    e884739c:	70a2                	ld	ra,40(sp)
    e884739e:	6145                	addi	sp,sp,48
    e88473a0:	8082                	ret

00000000e88473a2 <CFDictionaryGetTypeID>:
//	CFDictionaryGetTypeID
//===========================================================================================================================

CFTypeID	CFDictionaryGetTypeID( void )
{
	return( CFLDictionaryGetTypeID() );
    e88473a2:	0740106f          	j	e8848416 <CFLDictionaryGetTypeID>

00000000e88473a6 <CFDictionaryCreateMutable>:
	CFDictionaryCreateMutable( 
		CFAllocatorRef 						inAllocator, 
		CFIndex								inCapacity, 
		const CFDictionaryKeyCallBacks *	inKeyCallBacks, 
		const CFDictionaryValueCallBacks *	inValueCallBacks )
{
    e88473a6:	1101                	addi	sp,sp,-32
	CFMutableDictionaryRef		obj;
	
	obj = NULL;
	CFLDictionaryCreate( inAllocator, inCapacity, inKeyCallBacks, inValueCallBacks, &obj );
    e88473a8:	0038                	addi	a4,sp,8
{
    e88473aa:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e88473ac:	e402                	sd	zero,8(sp)
	CFLDictionaryCreate( inAllocator, inCapacity, inKeyCallBacks, inValueCallBacks, &obj );
    e88473ae:	06c010ef          	jal	ra,e884841a <CFLDictionaryCreate>
	return( obj );
}
    e88473b2:	60e2                	ld	ra,24(sp)
    e88473b4:	6522                	ld	a0,8(sp)
    e88473b6:	6105                	addi	sp,sp,32
    e88473b8:	8082                	ret

00000000e88473ba <CFDictionaryCreate>:
{
    e88473ba:	7179                	addi	sp,sp,-48
    e88473bc:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88473c0:	8936                	mv	s2,a3
    e88473c2:	f052                	sd	s4,32(sp)
    e88473c4:	89ae                	mv	s3,a1
    e88473c6:	8a32                	mv	s4,a2
	obj = CFDictionaryCreateMutable( inAllocator, inCount, inKeyCallBacks, inValueCallBacks );
    e88473c8:	86be                	mv	a3,a5
    e88473ca:	863a                	mv	a2,a4
    e88473cc:	85ca                	mv	a1,s2
{
    e88473ce:	f891540b          	sdd	s0,s1,(sp),0,4
    e88473d2:	f406                	sd	ra,40(sp)
	obj = CFDictionaryCreateMutable( inAllocator, inCount, inKeyCallBacks, inValueCallBacks );
    e88473d4:	fd3ff0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e88473d8:	842a                	mv	s0,a0
	require( obj, exit );
    e88473da:	4481                	li	s1,0
    e88473dc:	e911                	bnez	a0,e88473f0 <CFDictionaryCreate+0x36>
}
    e88473de:	8522                	mv	a0,s0
    e88473e0:	70a2                	ld	ra,40(sp)
    e88473e2:	f891440b          	ldd	s0,s1,(sp),0,4
    e88473e6:	7a02                	ld	s4,32(sp)
    e88473e8:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88473ec:	6145                	addi	sp,sp,48
    e88473ee:	8082                	ret
	for( i = 0; i < inCount; ++i )
    e88473f0:	0004879b          	sext.w	a5,s1
    e88473f4:	ff27d5e3          	bge	a5,s2,e88473de <CFDictionaryCreate+0x24>
		err = CFLDictionarySetValue( obj, inKeys[ i ], inValues[ i ] );
    e88473f8:	669a460b          	lrd	a2,s4,s1,3
    e88473fc:	6699c58b          	lrd	a1,s3,s1,3
    e8847400:	8522                	mv	a0,s0
    e8847402:	0485                	addi	s1,s1,1
    e8847404:	21c010ef          	jal	ra,e8848620 <CFLDictionarySetValue>
		if( err )
    e8847408:	d565                	beqz	a0,e88473f0 <CFDictionaryCreate+0x36>
	CFLRelease( inObject );
    e884740a:	8522                	mv	a0,s0
    e884740c:	00b000ef          	jal	ra,e8847c16 <CFLRelease>
			obj = NULL;
    e8847410:	4401                	li	s0,0
			goto exit;
    e8847412:	b7f1                	j	e88473de <CFDictionaryCreate+0x24>

00000000e8847414 <CFDictionaryCreateMutableCopy>:
//===========================================================================================================================
//	CFDictionaryCreateMutable
//===========================================================================================================================

CFMutableDictionaryRef	CFDictionaryCreateMutableCopy( CFAllocatorRef inAllocator, CFIndex inCapacity, CFDictionaryRef inDict )
{
    e8847414:	1101                	addi	sp,sp,-32
    e8847416:	85b2                	mv	a1,a2
	CFMutableDictionaryRef		obj = NULL;
	
	(void) inCapacity;
	
	CFLDictionaryCreateCopy( inAllocator, inDict, &obj );
    e8847418:	0030                	addi	a2,sp,8
{
    e884741a:	ec06                	sd	ra,24(sp)
	CFMutableDictionaryRef		obj = NULL;
    e884741c:	e402                	sd	zero,8(sp)
	CFLDictionaryCreateCopy( inAllocator, inDict, &obj );
    e884741e:	354010ef          	jal	ra,e8848772 <CFLDictionaryCreateCopy>
	return( obj );
}
    e8847422:	60e2                	ld	ra,24(sp)
    e8847424:	6522                	ld	a0,8(sp)
    e8847426:	6105                	addi	sp,sp,32
    e8847428:	8082                	ret

00000000e884742a <CFDictionaryGetCount>:
//===========================================================================================================================
//	CFDictionaryGetCount
//===========================================================================================================================

CFIndex	CFDictionaryGetCount( CFDictionaryRef inObject )
{
    e884742a:	1101                	addi	sp,sp,-32
	CFIndex		n;
	
	n = 0;
	CFLDictionaryGetCount( inObject, &n );
    e884742c:	006c                	addi	a1,sp,12
{
    e884742e:	ec06                	sd	ra,24(sp)
	n = 0;
    e8847430:	c602                	sw	zero,12(sp)
	CFLDictionaryGetCount( inObject, &n );
    e8847432:	0e2010ef          	jal	ra,e8848514 <CFLDictionaryGetCount>
	return( n );
}
    e8847436:	60e2                	ld	ra,24(sp)
    e8847438:	4532                	lw	a0,12(sp)
    e884743a:	6105                	addi	sp,sp,32
    e884743c:	8082                	ret

00000000e884743e <CFDictionaryGetValue>:
//===========================================================================================================================
//	CFDictionaryGetValue
//===========================================================================================================================

const void *	CFDictionaryGetValue( CFDictionaryRef inObject, const void *inKey )
{
    e884743e:	1101                	addi	sp,sp,-32
	void *		value;
	
	value = NULL;
	CFLDictionaryGetValue( inObject, inKey, &value );
    e8847440:	0030                	addi	a2,sp,8
{
    e8847442:	ec06                	sd	ra,24(sp)
	value = NULL;
    e8847444:	e402                	sd	zero,8(sp)
	CFLDictionaryGetValue( inObject, inKey, &value );
    e8847446:	0fc010ef          	jal	ra,e8848542 <CFLDictionaryGetValue>
	return( value );
}
    e884744a:	60e2                	ld	ra,24(sp)
    e884744c:	6522                	ld	a0,8(sp)
    e884744e:	6105                	addi	sp,sp,32
    e8847450:	8082                	ret

00000000e8847452 <CFDictionarySetValue>:
//	CFDictionarySetValue
//===========================================================================================================================

void	CFDictionarySetValue( CFMutableDictionaryRef inObject, const void *inKey, const void *inValue )
{
	CFLDictionarySetValue( inObject, inKey, inValue );
    e8847452:	1ce0106f          	j	e8848620 <CFLDictionarySetValue>

00000000e8847456 <CFDictionaryAddValue>:
//	CFDictionaryAddValue
//===========================================================================================================================

void	CFDictionaryAddValue( CFMutableDictionaryRef inObject, const void *inKey, const void *inValue )
{
	CFLDictionaryAddValue( inObject, inKey, inValue );
    e8847456:	27e0106f          	j	e88486d4 <CFLDictionaryAddValue>

00000000e884745a <CFDictionaryRemoveValue>:
//	CFDictionaryRemoveValue
//===========================================================================================================================

void	CFDictionaryRemoveValue( CFMutableDictionaryRef inObject, const void *inKey )
{
	CFLDictionaryRemoveValue( inObject, inKey );
    e884745a:	3bc0106f          	j	e8848816 <CFLDictionaryRemoveValue>

00000000e884745e <CFDictionaryRemoveAllValues>:
//	CFDictionaryRemoveAllValues
//===========================================================================================================================

void	CFDictionaryRemoveAllValues( CFMutableDictionaryRef inObject )
{
	CFLDictionaryRemoveAllValues( inObject );
    e884745e:	44a0106f          	j	e88488a8 <CFLDictionaryRemoveAllValues>

00000000e8847462 <CFDictionaryGetKeysAndValues>:
//	CFDictionaryGetKeysAndValues
//===========================================================================================================================

void	CFDictionaryGetKeysAndValues( CFDictionaryRef inObject, const void **ioKeys, const void **ioValues )
{
	CFLDictionaryGetKeysAndValues( inObject, ioKeys, ioValues );
    e8847462:	5100106f          	j	e8848972 <CFLDictionaryGetKeysAndValues>

00000000e8847466 <CFDictionaryApplyFunction>:
//	CFDictionaryApplyFunction
//===========================================================================================================================

void	CFDictionaryApplyFunction( CFDictionaryRef inDict, CFDictionaryApplierFunction inApplier, void *inContext )
{
	CFLDictionaryApplyFunction( inDict, inApplier, inContext );
    e8847466:	56c0106f          	j	e88489d2 <CFLDictionaryApplyFunction>

00000000e884746a <CFNumberGetTypeID>:
//	CFNumberGetTypeID
//===========================================================================================================================

CFTypeID	CFNumberGetTypeID( void )
{
	return( CFLNumberGetTypeID() );
    e884746a:	5dc0106f          	j	e8848a46 <CFLNumberGetTypeID>

00000000e884746e <CFNumberCreate>:
//===========================================================================================================================
//	CFNumberCreate
//===========================================================================================================================

CFNumberRef CFNumberCreate( CFAllocatorRef inAllocator, CFNumberType inType, const void *inValuePtr )
{
    e884746e:	1101                	addi	sp,sp,-32
	CFNumberRef		obj;
	OSStatus		err;
	
	obj = NULL;
	err = CFLNumberCreate( inAllocator, inType, inValuePtr, &obj );
    e8847470:	0034                	addi	a3,sp,8
{
    e8847472:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e8847474:	e402                	sd	zero,8(sp)
	err = CFLNumberCreate( inAllocator, inType, inValuePtr, &obj );
    e8847476:	5d4010ef          	jal	ra,e8848a4a <CFLNumberCreate>
	require_noerr( err, exit );
	
exit:
	return( obj );
}
    e884747a:	60e2                	ld	ra,24(sp)
    e884747c:	6522                	ld	a0,8(sp)
    e884747e:	6105                	addi	sp,sp,32
    e8847480:	8082                	ret

00000000e8847482 <CFNumberGetValue>:
//===========================================================================================================================
//	CFNumberGetValue
//===========================================================================================================================

Boolean CFNumberGetValue( CFNumberRef inNumber, CFNumberType inType, void *outValue )
{
    e8847482:	1141                	addi	sp,sp,-16
    e8847484:	e406                	sd	ra,8(sp)
	return( CFLNumberGetValue( inNumber, inType, outValue ) == kNoErr );
    e8847486:	77a010ef          	jal	ra,e8848c00 <CFLNumberGetValue>
}
    e884748a:	00153513          	seqz	a0,a0
    e884748e:	60a2                	ld	ra,8(sp)
    e8847490:	0141                	addi	sp,sp,16
    e8847492:	8082                	ret

00000000e8847494 <CFStringGetTypeID>:
//	CFStringGetTypeID
//===========================================================================================================================

CFTypeID	CFStringGetTypeID( void )
{
	return( CFLStringGetTypeID() );
    e8847494:	2fd0106f          	j	e8848f90 <CFLStringGetTypeID>

00000000e8847498 <CFStringCreateWithBytes>:
		CFAllocatorRef 		inAllocator, 
		const uint8_t *		inBytes, 
		CFIndex				inSize, 
		CFStringEncoding	inEncoding, 
		Boolean				inIsExternal )
{
    e8847498:	7179                	addi	sp,sp,-48
    e884749a:	f022                	sd	s0,32(sp)
    e884749c:	f406                	sd	ra,40(sp)
	size_t			utf8Len;
#endif
	
	(void) inIsExternal;	// Unused
	
	obj = NULL;
    e884749e:	e402                	sd	zero,8(sp)

#if( CFCOMPAT_HAS_UNICODE_SUPPORT )
	utf8Ptr	= NULL;
    e88474a0:	e802                	sd	zero,16(sp)
	if( ( inEncoding == kCFStringEncodingWindowsLatin1 ) || 
    e88474a2:	50000793          	li	a5,1280
{
    e88474a6:	842a                	mv	s0,a0
    e88474a8:	852e                	mv	a0,a1
    e88474aa:	85b2                	mv	a1,a2
	if( ( inEncoding == kCFStringEncodingWindowsLatin1 ) || 
    e88474ac:	00f68663          	beq	a3,a5,e88474b8 <CFStringCreateWithBytes+0x20>
    e88474b0:	20100793          	li	a5,513
    e88474b4:	02f69b63          	bne	a3,a5,e88474ea <CFStringCreateWithBytes+0x52>
		( inEncoding == kCFStringEncodingISOLatin1 ) )
	{
		err = latin1_to_utf8_copy( inBytes, (size_t) inSize, &utf8Ptr, &utf8Len, '/', 0 );
    e88474b8:	4781                	li	a5,0
    e88474ba:	02f00713          	li	a4,47
    e88474be:	0834                	addi	a3,sp,24
    e88474c0:	0810                	addi	a2,sp,16
    e88474c2:	29a1b0ef          	jal	ra,e886275c <latin1_to_utf8_copy>
		
		if(      inEncoding == kCFStringEncodingUTF16BE )	flags = UTF_BIG_ENDIAN;
		else if( inEncoding == kCFStringEncodingUTF16LE )	flags = UTF_LITTLE_ENDIAN;
		else												flags = 0;
		err = utf8_encodestr_copy( (const uint16_t *) inBytes, (size_t) inSize, &utf8Ptr, &utf8Len, '/', flags );
		require_noerr( err, exit );
    e88474c6:	e909                	bnez	a0,e88474d8 <CFStringCreateWithBytes+0x40>
		
		inBytes = utf8Ptr;
    e88474c8:	6542                	ld	a0,16(sp)
		inSize  = (CFIndex) utf8Len;
    e88474ca:	45e2                	lw	a1,24(sp)
#else
	require_action( ( inEncoding == kCFStringEncodingUTF8 ) ||
					( inEncoding == kCFStringEncodingASCII ), exit, err = kUnsupportedErr );
#endif
	
	err = CFLStringCreateWithText( inAllocator, inBytes, (size_t) inSize, &obj );
    e88474cc:	862e                	mv	a2,a1
    e88474ce:	0034                	addi	a3,sp,8
    e88474d0:	85aa                	mv	a1,a0
    e88474d2:	8522                	mv	a0,s0
    e88474d4:	425010ef          	jal	ra,e88490f8 <CFLStringCreateWithText>
	require_noerr( err, exit );
	
exit:
#if( CFCOMPAT_HAS_UNICODE_SUPPORT )
	if( utf8Ptr ) utffree( utf8Ptr );
    e88474d8:	6542                	ld	a0,16(sp)
    e88474da:	c119                	beqz	a0,e88474e0 <CFStringCreateWithBytes+0x48>
    e88474dc:	625340ef          	jal	ra,e887c300 <eLIBs_free>
#endif
	return( obj );
}
    e88474e0:	70a2                	ld	ra,40(sp)
    e88474e2:	7402                	ld	s0,32(sp)
    e88474e4:	6522                	ld	a0,8(sp)
    e88474e6:	6145                	addi	sp,sp,48
    e88474e8:	8082                	ret
	else if( ( inEncoding == kCFStringEncodingUTF16 )   || 
    e88474ea:	f00007b7          	lui	a5,0xf0000
    e88474ee:	17fd                	addi	a5,a5,-1
    e88474f0:	8ff5                	and	a5,a5,a3
    e88474f2:	10000713          	li	a4,256
    e88474f6:	00e78863          	beq	a5,a4,e8847506 <CFStringCreateWithBytes+0x6e>
			 ( inEncoding == kCFStringEncodingUTF16BE ) || 
    e88474fa:	140007b7          	lui	a5,0x14000
    e88474fe:	10078793          	addi	a5,a5,256 # 14000100 <memcmp-0xd47fff00>
    e8847502:	fcf695e3          	bne	a3,a5,e88474cc <CFStringCreateWithBytes+0x34>
		if(      inEncoding == kCFStringEncodingUTF16BE )	flags = UTF_BIG_ENDIAN;
    e8847506:	100007b7          	lui	a5,0x10000
    e884750a:	10078793          	addi	a5,a5,256 # 10000100 <memcmp-0xd87fff00>
    e884750e:	40f687b3          	sub	a5,a3,a5
		err = utf8_encodestr_copy( (const uint16_t *) inBytes, (size_t) inSize, &utf8Ptr, &utf8Len, '/', flags );
    e8847512:	0017b793          	seqz	a5,a5
    e8847516:	02f00713          	li	a4,47
    e884751a:	0834                	addi	a3,sp,24
    e884751c:	0810                	addi	a2,sp,16
    e884751e:	1561b0ef          	jal	ra,e8862674 <utf8_encodestr_copy>
    e8847522:	b755                	j	e88474c6 <CFStringCreateWithBytes+0x2e>

00000000e8847524 <CFStringCreateWithCString>:
//===========================================================================================================================
//	CFStringCreateWithCString
//===========================================================================================================================

CFStringRef	CFStringCreateWithCString( CFAllocatorRef inAllocator, const char *inString, CFStringEncoding inEncoding )
{
    e8847524:	1101                	addi	sp,sp,-32
    e8847526:	e822                	sd	s0,16(sp)
    e8847528:	842a                	mv	s0,a0
	return( CFStringCreateWithBytes( inAllocator, (const uint8_t *) inString, (CFIndex) strlen( inString ), inEncoding, false ) );
    e884752a:	852e                	mv	a0,a1
{
    e884752c:	ec06                	sd	ra,24(sp)
    e884752e:	e432                	sd	a2,8(sp)
	return( CFStringCreateWithBytes( inAllocator, (const uint8_t *) inString, (CFIndex) strlen( inString ), inEncoding, false ) );
    e8847530:	e02e                	sd	a1,0(sp)
    e8847532:	5e7340ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8847536:	0005061b          	sext.w	a2,a0
    e884753a:	8522                	mv	a0,s0
}
    e884753c:	6442                	ld	s0,16(sp)
	return( CFStringCreateWithBytes( inAllocator, (const uint8_t *) inString, (CFIndex) strlen( inString ), inEncoding, false ) );
    e884753e:	66a2                	ld	a3,8(sp)
    e8847540:	6582                	ld	a1,0(sp)
}
    e8847542:	60e2                	ld	ra,24(sp)
	return( CFStringCreateWithBytes( inAllocator, (const uint8_t *) inString, (CFIndex) strlen( inString ), inEncoding, false ) );
    e8847544:	4701                	li	a4,0
}
    e8847546:	6105                	addi	sp,sp,32
	return( CFStringCreateWithBytes( inAllocator, (const uint8_t *) inString, (CFIndex) strlen( inString ), inEncoding, false ) );
    e8847548:	f51ff06f          	j	e8847498 <CFStringCreateWithBytes>

00000000e884754c <CFStringCreateWithFormat>:
	CFStringCreateWithFormat( 
		CFAllocatorRef	inAllocator, 
		CFDictionaryRef	inFormatOptions, 
		CFStringRef		inFormat, 
		... )
{
    e884754c:	711d                	addi	sp,sp,-96
    e884754e:	f406                	sd	ra,40(sp)
    e8847550:	f022                	sd	s0,32(sp)
    e8847552:	fc36                	sd	a3,56(sp)
    e8847554:	e0ba                	sd	a4,64(sp)
    e8847556:	e4be                	sd	a5,72(sp)
    e8847558:	e8c2                	sd	a6,80(sp)
    e884755a:	ecc6                	sd	a7,88(sp)
	va_list				args;
	char *				str;
	int					n;
	
	resultString = NULL;
	require( inFormatOptions == NULL, exit ); // We don't support format options yet.
    e884755c:	c599                	beqz	a1,e884756a <CFStringCreateWithFormat+0x1e>
	resultString = NULL;
    e884755e:	4401                	li	s0,0
	free( str );
	require( resultString, exit );
	
exit:
	return( resultString );
}
    e8847560:	8522                	mv	a0,s0
    e8847562:	70a2                	ld	ra,40(sp)
    e8847564:	7402                	ld	s0,32(sp)
    e8847566:	6125                	addi	sp,sp,96
    e8847568:	8082                	ret
    e884756a:	842a                	mv	s0,a0
	err = CFLStringGetCStringPtr( inFormat, &formatCStr, NULL );
    e884756c:	002c                	addi	a1,sp,8
    e884756e:	8532                	mv	a0,a2
    e8847570:	4601                	li	a2,0
    e8847572:	275010ef          	jal	ra,e8848fe6 <CFLStringGetCStringPtr>
	require_noerr( err, exit );
    e8847576:	f565                	bnez	a0,e884755e <CFStringCreateWithFormat+0x12>
	n = VASPrintF( &str, formatCStr, args );
    e8847578:	65a2                	ld	a1,8(sp)
	va_start( args, inFormat );
    e884757a:	1830                	addi	a2,sp,56
	n = VASPrintF( &str, formatCStr, args );
    e884757c:	0828                	addi	a0,sp,24
	va_start( args, inFormat );
    e884757e:	e832                	sd	a2,16(sp)
	n = VASPrintF( &str, formatCStr, args );
    e8847580:	0b8150ef          	jal	ra,e885c638 <VASPrintF>
	require( n >= 0, exit );
    e8847584:	fc054de3          	bltz	a0,e884755e <CFStringCreateWithFormat+0x12>
	resultString = CFStringCreateWithCString( inAllocator, str, kCFStringEncodingUTF8 );
    e8847588:	65e2                	ld	a1,24(sp)
    e884758a:	08000637          	lui	a2,0x8000
    e884758e:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e8847592:	8522                	mv	a0,s0
    e8847594:	f91ff0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e8847598:	842a                	mv	s0,a0
	free( str );
    e884759a:	6562                	ld	a0,24(sp)
    e884759c:	565340ef          	jal	ra,e887c300 <eLIBs_free>
	return( resultString );
    e88475a0:	b7c1                	j	e8847560 <CFStringCreateWithFormat+0x14>

00000000e88475a2 <CFStringGetLength>:
//===========================================================================================================================
//	CFStringGetLength
//===========================================================================================================================

CFIndex	CFStringGetLength( CFStringRef inObject )
{
    e88475a2:	1101                	addi	sp,sp,-32
	CFIndex		n;
	
	n = 0;
	CFLStringGetLength( inObject, &n );
    e88475a4:	006c                	addi	a1,sp,12
{
    e88475a6:	ec06                	sd	ra,24(sp)
	n = 0;
    e88475a8:	c602                	sw	zero,12(sp)
	CFLStringGetLength( inObject, &n );
    e88475aa:	1eb010ef          	jal	ra,e8848f94 <CFLStringGetLength>
	return( n );
}
    e88475ae:	60e2                	ld	ra,24(sp)
    e88475b0:	4532                	lw	a0,12(sp)
    e88475b2:	6105                	addi	sp,sp,32
    e88475b4:	8082                	ret

00000000e88475b6 <CFStringGetMaximumSizeForEncoding>:
CFIndex	CFStringGetMaximumSizeForEncoding( CFIndex inSize, CFStringEncoding inEncoding )
{
	(void) inEncoding; // Unused
	
	return( inSize * 4 ); // Max spec'd by Unicode is 4 bytes even though UTF-8 itself can support 6 bytes.
}
    e88475b6:	0025151b          	slliw	a0,a0,0x2
    e88475ba:	8082                	ret

00000000e88475bc <CFStringGetCStringPtr>:
//===========================================================================================================================
//	CFStringGetCStringPtr
//===========================================================================================================================

const char *	CFStringGetCStringPtr( CFStringRef inString, CFStringEncoding inEncoding )
{
    e88475bc:	1101                	addi	sp,sp,-32
	const char *		s;
	
	s = NULL;
	require( inEncoding == kCFStringEncodingUTF8, exit );
    e88475be:	080007b7          	lui	a5,0x8000
{
    e88475c2:	ec06                	sd	ra,24(sp)
	s = NULL;
    e88475c4:	e402                	sd	zero,8(sp)
	require( inEncoding == kCFStringEncodingUTF8, exit );
    e88475c6:	10078793          	addi	a5,a5,256 # 8000100 <memcmp-0xe07fff00>
    e88475ca:	00f59663          	bne	a1,a5,e88475d6 <CFStringGetCStringPtr+0x1a>
	
	CFLStringGetCStringPtr( inString, &s, NULL );
    e88475ce:	4601                	li	a2,0
    e88475d0:	002c                	addi	a1,sp,8
    e88475d2:	215010ef          	jal	ra,e8848fe6 <CFLStringGetCStringPtr>
	
exit:
	return( s );
}
    e88475d6:	60e2                	ld	ra,24(sp)
    e88475d8:	6522                	ld	a0,8(sp)
    e88475da:	6105                	addi	sp,sp,32
    e88475dc:	8082                	ret

00000000e88475de <CFStringGetCString>:
//===========================================================================================================================
//	CFStringGetCString
//===========================================================================================================================

Boolean	CFStringGetCString( CFStringRef inString, char *outBuffer, CFIndex inMaxSize, CFStringEncoding inEncoding )
{
    e88475de:	7179                	addi	sp,sp,-48
    e88475e0:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88475e4:	f04a                	sd	s2,32(sp)
    e88475e6:	84ae                	mv	s1,a1
    e88475e8:	8932                	mv	s2,a2
	const char *		str;
	size_t				size;
	
	(void ) inEncoding;					// Unused
	
	err = CFLStringGetCStringPtr( inString, &str, &size );
    e88475ea:	858a                	mv	a1,sp
    e88475ec:	0030                	addi	a2,sp,8
{
    e88475ee:	f406                	sd	ra,40(sp)
	err = CFLStringGetCStringPtr( inString, &str, &size );
    e88475f0:	1f7010ef          	jal	ra,e8848fe6 <CFLStringGetCStringPtr>
    e88475f4:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88475f6:	e909                	bnez	a0,e8847608 <CFStringGetCString+0x2a>
	require_action_quiet( size < (size_t) inMaxSize, exit, err = kSizeErr );
    e88475f8:	6622                	ld	a2,8(sp)
    e88475fa:	01267f63          	bgeu	a2,s2,e8847618 <CFStringGetCString+0x3a>
	
	memcpy( outBuffer, str, size + 1 );
    e88475fe:	6582                	ld	a1,0(sp)
    e8847600:	0605                	addi	a2,a2,1
    e8847602:	8526                	mv	a0,s1
    e8847604:	59d340ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	
exit:
	return( (Boolean)( err ? false : true ) );
}
    e8847608:	00143513          	seqz	a0,s0
    e884760c:	70a2                	ld	ra,40(sp)
    e884760e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8847612:	7902                	ld	s2,32(sp)
    e8847614:	6145                	addi	sp,sp,48
    e8847616:	8082                	ret
	require_action_quiet( size < (size_t) inMaxSize, exit, err = kSizeErr );
    e8847618:	7479                	lui	s0,0xffffe
    e884761a:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e884761e:	b7ed                	j	e8847608 <CFStringGetCString+0x2a>

00000000e8847620 <CFStringGetBytes>:
		UInt8				inLossByte,
		Boolean				inIsExternalRepresentation,
		UInt8 *				inBuffer,
		CFIndex				inMaxBufLen,
		CFIndex *			outUsedBufLen )
{
    e8847620:	715d                	addi	sp,sp,-80
    e8847622:	f84a                	sd	s2,48(sp)
    e8847624:	f44e                	sd	s3,40(sp)
    e8847626:	fe05a90b          	ext	s2,a1,63,32
	(void ) inLossByte;					// Unused
	(void ) inIsExternalRepresentation; // Unused
	
	nConverted = 0;
	
	err = CFLStringGetCStringPtr( inString, &str, &size );
    e884762a:	0005899b          	sext.w	s3,a1
    e884762e:	0830                	addi	a2,sp,24
    e8847630:	080c                	addi	a1,sp,16
{
    e8847632:	e0a2                	sd	s0,64(sp)
    e8847634:	f052                	sd	s4,32(sp)
    e8847636:	e486                	sd	ra,72(sp)
    e8847638:	fc26                	sd	s1,56(sp)
    e884763a:	e43e                	sd	a5,8(sp)
    e884763c:	e042                	sd	a6,0(sp)
    e884763e:	8a46                	mv	s4,a7
	err = CFLStringGetCStringPtr( inString, &str, &size );
    e8847640:	1a7010ef          	jal	ra,e8848fe6 <CFLStringGetCStringPtr>
	nConverted = 0;
    e8847644:	4401                	li	s0,0
	require_noerr( err, exit );
    e8847646:	ed05                	bnez	a0,e884767e <CFStringGetBytes+0x5e>
	require( inRange.location <= ( (CFIndex) size ), exit );
    e8847648:	4762                	lw	a4,24(sp)
    e884764a:	842a                	mv	s0,a0
    e884764c:	03374963          	blt	a4,s3,e884767e <CFStringGetBytes+0x5e>
    e8847650:	0009049b          	sext.w	s1,s2
	require( inRange.length <= ( (CFIndex) size ), exit );
    e8847654:	02974563          	blt	a4,s1,e884767e <CFStringGetBytes+0x5e>
	require( ( inRange.location + inRange.length ) <= ( (CFIndex) size ), exit );
    e8847658:	013906bb          	addw	a3,s2,s3
    e884765c:	02d74163          	blt	a4,a3,e884767e <CFStringGetBytes+0x5e>
	
	if( inRange.length > inMaxBufLen ) inRange.length = inMaxBufLen;
    e8847660:	6802                	ld	a6,0(sp)
	if( inBuffer ) memmove( inBuffer, str + inRange.location, inRange.length );
    e8847662:	67a2                	ld	a5,8(sp)
    e8847664:	0104a4b3          	slt	s1,s1,a6
    e8847668:	4098190b          	mveqz	s2,a6,s1
    e884766c:	0009041b          	sext.w	s0,s2
    e8847670:	c799                	beqz	a5,e884767e <CFStringGetBytes+0x5e>
    e8847672:	65c2                	ld	a1,16(sp)
    e8847674:	8622                	mv	a2,s0
    e8847676:	853e                	mv	a0,a5
    e8847678:	95ce                	add	a1,a1,s3
    e884767a:	533340ef          	jal	ra,e887c3ac <eLIBs_memmove>
	nConverted = inRange.length;
	
exit:
	if( outUsedBufLen ) *outUsedBufLen = nConverted;
    e884767e:	000a0463          	beqz	s4,e8847686 <CFStringGetBytes+0x66>
    e8847682:	008a2023          	sw	s0,0(s4)
	return( nConverted );
}
    e8847686:	8522                	mv	a0,s0
    e8847688:	60a6                	ld	ra,72(sp)
    e884768a:	6406                	ld	s0,64(sp)
    e884768c:	74e2                	ld	s1,56(sp)
    e884768e:	7942                	ld	s2,48(sp)
    e8847690:	79a2                	ld	s3,40(sp)
    e8847692:	7a02                	ld	s4,32(sp)
    e8847694:	6161                	addi	sp,sp,80
    e8847696:	8082                	ret

00000000e8847698 <CFStringGetIntValue>:
//===========================================================================================================================
//	CFStringGetIntValue
//===========================================================================================================================

int32_t	CFStringGetIntValue( CFStringRef inObject )
{
    e8847698:	1101                	addi	sp,sp,-32
	const char *		str;
	size_t				len;
	
	val = 0;
	
	err = CFLStringGetCStringPtr( inObject, &str, &len );
    e884769a:	0030                	addi	a2,sp,8
    e884769c:	858a                	mv	a1,sp
{
    e884769e:	ec06                	sd	ra,24(sp)
	err = CFLStringGetCStringPtr( inObject, &str, &len );
    e88476a0:	147010ef          	jal	ra,e8848fe6 <CFLStringGetCStringPtr>
	require_noerr( err, exit );
    e88476a4:	e909                	bnez	a0,e88476b6 <CFStringGetIntValue+0x1e>
	
	val = TextToInt32( str, len, 10 );
    e88476a6:	65a2                	ld	a1,8(sp)
    e88476a8:	6502                	ld	a0,0(sp)
    e88476aa:	4629                	li	a2,10
    e88476ac:	5ab170ef          	jal	ra,e885f456 <TextToInt32>
	
exit:
	return( val );
}
    e88476b0:	60e2                	ld	ra,24(sp)
    e88476b2:	6105                	addi	sp,sp,32
    e88476b4:	8082                	ret
	val = 0;
    e88476b6:	4501                	li	a0,0
    e88476b8:	bfe5                	j	e88476b0 <CFStringGetIntValue+0x18>

00000000e88476ba <CFPropertyListCreateData>:
		CFAllocatorRef			inAllocator, 
		CFPropertyListRef		inPropertyList, 
		CFPropertyListFormat	inFormat, 
		CFOptionFlags			inOptions, 
		CFErrorRef *			outError )
{
    e88476ba:	1141                	addi	sp,sp,-16
    e88476bc:	e022                	sd	s0,0(sp)
    e88476be:	e406                	sd	ra,8(sp)
	(void) inAllocator;
	(void) inOptions;
	
	if( 0 ) {}
#if( CFL_BINARY_PLISTS )
	else if( inFormat == kCFPropertyListBinaryFormat_v1_0 )
    e88476c0:	0c800793          	li	a5,200
{
    e88476c4:	843a                	mv	s0,a4
	else if( inFormat == kCFPropertyListBinaryFormat_v1_0 )
    e88476c6:	00f61d63          	bne	a2,a5,e88476e0 <CFPropertyListCreateData+0x26>
    e88476ca:	852e                	mv	a0,a1
	{
		data = CFBinaryPlistV0CreateData( inPropertyList, NULL );
    e88476cc:	4581                	li	a1,0
    e88476ce:	755020ef          	jal	ra,e884a622 <CFBinaryPlistV0CreateData>
		dlogassert( "Unsupported plist format: %d\n", (int) inFormat );
		goto exit;
	}
	
exit:
	if( outError ) *outError = NULL;
    e88476d2:	c019                	beqz	s0,e88476d8 <CFPropertyListCreateData+0x1e>
    e88476d4:	00043023          	sd	zero,0(s0)
	return( data );
}
    e88476d8:	60a2                	ld	ra,8(sp)
    e88476da:	6402                	ld	s0,0(sp)
    e88476dc:	0141                	addi	sp,sp,16
    e88476de:	8082                	ret
		dlogassert( "Unsupported plist format: %d\n", (int) inFormat );
    e88476e0:	88b2                	mv	a7,a2
    e88476e2:	4501                	li	a0,0
    e88476e4:	00077817          	auipc	a6,0x77
    e88476e8:	e2480813          	addi	a6,a6,-476 # e88be508 <kBonjourBrowserClass+0x70>
    e88476ec:	00077797          	auipc	a5,0x77
    e88476f0:	eec78793          	addi	a5,a5,-276 # e88be5d8 <__PRETTY_FUNCTION__.9500>
    e88476f4:	56400713          	li	a4,1380
    e88476f8:	00077697          	auipc	a3,0x77
    e88476fc:	e3068693          	addi	a3,a3,-464 # e88be528 <kBonjourBrowserClass+0x90>
    e8847700:	4601                	li	a2,0
    e8847702:	4581                	li	a1,0
    e8847704:	4c5060ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	CFDataRef		data = NULL;
    e8847708:	4501                	li	a0,0
		goto exit;
    e884770a:	b7e1                	j	e88476d2 <CFPropertyListCreateData+0x18>

00000000e884770c <CFPropertyListCreateWithData>:
		CFAllocatorRef			inAllocator, 
		CFDataRef				inData, 
		CFOptionFlags			inOptions, 
		CFPropertyListFormat *	outFormat, 
		CFErrorRef *			outError )
{
    e884770c:	7179                	addi	sp,sp,-48
	size_t					len;
	
	(void) inAllocator;
	(void) inOptions;
	
	ptr = CFDataGetBytePtr( inData );
    e884770e:	852e                	mv	a0,a1
{
    e8847710:	e83a                	sd	a4,16(sp)
    e8847712:	f406                	sd	ra,40(sp)
    e8847714:	ec36                	sd	a3,24(sp)
    e8847716:	f022                	sd	s0,32(sp)
	ptr = CFDataGetBytePtr( inData );
    e8847718:	e42e                	sd	a1,8(sp)
    e884771a:	bd3ff0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e884771e:	842a                	mv	s0,a0
	len = (size_t) CFDataGetLength( inData );
    e8847720:	65a2                	ld	a1,8(sp)
    e8847722:	852e                	mv	a0,a1
    e8847724:	bb3ff0ef          	jal	ra,e88472d6 <CFDataGetLength>
	plist = CFBinaryPlistV0CreateWithData( ptr, len, NULL );
    e8847728:	85aa                	mv	a1,a0
    e884772a:	4601                	li	a2,0
    e884772c:	8522                	mv	a0,s0
    e884772e:	715020ef          	jal	ra,e884a642 <CFBinaryPlistV0CreateWithData>
	if( plist )
    e8847732:	6742                	ld	a4,16(sp)
    e8847734:	c511                	beqz	a0,e8847740 <CFPropertyListCreateWithData+0x34>
	{
		if( outFormat ) *outFormat = kCFPropertyListBinaryFormat_v1_0;
    e8847736:	66e2                	ld	a3,24(sp)
    e8847738:	c681                	beqz	a3,e8847740 <CFPropertyListCreateWithData+0x34>
    e884773a:	0c800793          	li	a5,200
    e884773e:	c29c                	sw	a5,0(a3)
		goto exit;
	}
#endif
exit:
	if( outError ) *outError = NULL;
    e8847740:	c319                	beqz	a4,e8847746 <CFPropertyListCreateWithData+0x3a>
    e8847742:	00073023          	sd	zero,0(a4)
	return( plist );
}
    e8847746:	70a2                	ld	ra,40(sp)
    e8847748:	7402                	ld	s0,32(sp)
    e884774a:	6145                	addi	sp,sp,48
    e884774c:	8082                	ret

00000000e884774e <_CFRuntimeRegisterClass>:
//===========================================================================================================================
//	_CFRuntimeRegisterClass
//===========================================================================================================================

CFTypeID	_CFRuntimeRegisterClass( const CFRuntimeClass * const inClass )
{
    e884774e:	7139                	addi	sp,sp,-64
    e8847750:	fc06                	sd	ra,56(sp)
	CFTypeID			typeID;
	CFLRuntimeClass		c;
	
	c.name		= inClass->className;
    e8847752:	651c                	ld	a5,8(a0)
	c.freeObj	= inClass->finalize;
	c.equal		= inClass->equal;
	c.hash		= inClass->hash;
	
	typeID = _kCFRuntimeNotATypeID;
	CFLRuntimeRegisterClass( &c, &typeID );
    e8847754:	006c                	addi	a1,sp,12
	typeID = _kCFRuntimeNotATypeID;
    e8847756:	c602                	sw	zero,12(sp)
	c.name		= inClass->className;
    e8847758:	e83e                	sd	a5,16(sp)
	c.freeObj	= inClass->finalize;
    e884775a:	711c                	ld	a5,32(a0)
    e884775c:	ec3e                	sd	a5,24(sp)
	c.equal		= inClass->equal;
    e884775e:	751c                	ld	a5,40(a0)
    e8847760:	f03e                	sd	a5,32(sp)
	c.hash		= inClass->hash;
    e8847762:	791c                	ld	a5,48(a0)
	CFLRuntimeRegisterClass( &c, &typeID );
    e8847764:	0808                	addi	a0,sp,16
	c.hash		= inClass->hash;
    e8847766:	f43e                	sd	a5,40(sp)
	CFLRuntimeRegisterClass( &c, &typeID );
    e8847768:	439010ef          	jal	ra,e88493a0 <CFLRuntimeRegisterClass>
	return( typeID );
}
    e884776c:	70e2                	ld	ra,56(sp)
    e884776e:	4532                	lw	a0,12(sp)
    e8847770:	6121                	addi	sp,sp,64
    e8847772:	8082                	ret

00000000e8847774 <_CFRuntimeCreateInstance>:
		_CFRuntimeCreateInstance( 
			CFAllocatorRef	inAllocator, 
			CFTypeID		inTypeID, 
			CFIndex 		inExtraBytes, 
			unsigned char *	inCategory )
{
    e8847774:	1101                	addi	sp,sp,-32
	CFTypeRef		obj;
	
	(void) inCategory; // Unused
	
	obj = NULL;
	CFLRuntimeCreateInstance( inAllocator, inTypeID, (size_t) inExtraBytes, (void *) &obj );
    e8847776:	0034                	addi	a3,sp,8
{
    e8847778:	ec06                	sd	ra,24(sp)
	obj = NULL;
    e884777a:	e402                	sd	zero,8(sp)
	CFLRuntimeCreateInstance( inAllocator, inTypeID, (size_t) inExtraBytes, (void *) &obj );
    e884777c:	4ff010ef          	jal	ra,e884947a <CFLRuntimeCreateInstance>
	return( obj );
}
    e8847780:	60e2                	ld	ra,24(sp)
    e8847782:	6522                	ld	a0,8(sp)
    e8847784:	6105                	addi	sp,sp,32
    e8847786:	8082                	ret

00000000e8847788 <CFDateGetComponents>:
		int *		outDay, 
		int *		outHour, 
		int *		outMinute, 
		int *		outSecond, 
		int *		outMicros )
{
    e8847788:	711d                	addi	sp,sp,-96
    e884778a:	e8a2                	sd	s0,80(sp)
    e884778c:	842e                	mv	s0,a1
	CFLDateComponents		components;
	
	CFLDateGetDate( inDate, &components );
    e884778e:	182c                	addi	a1,sp,56
{
    e8847790:	f432                	sd	a2,40(sp)
    e8847792:	f036                	sd	a3,32(sp)
    e8847794:	ec3a                	sd	a4,24(sp)
    e8847796:	e83e                	sd	a5,16(sp)
    e8847798:	e442                	sd	a6,8(sp)
    e884779a:	e046                	sd	a7,0(sp)
    e884779c:	ec86                	sd	ra,88(sp)
	CFLDateGetDate( inDate, &components );
    e884779e:	3a9000ef          	jal	ra,e8848346 <CFLDateGetDate>
	*outYear	= components.year;
    e88477a2:	55e2                	lw	a1,56(sp)
	*outMonth	= components.month;
    e88477a4:	7622                	ld	a2,40(sp)
	*outDay		= components.day;
    e88477a6:	7682                	ld	a3,32(sp)
	*outYear	= components.year;
    e88477a8:	c00c                	sw	a1,0(s0)
	*outMonth	= components.month;
    e88477aa:	55f2                	lw	a1,60(sp)
	*outHour	= components.hour;
    e88477ac:	6762                	ld	a4,24(sp)
	*outMinute	= components.minute;
    e88477ae:	67c2                	ld	a5,16(sp)
	*outMonth	= components.month;
    e88477b0:	c20c                	sw	a1,0(a2)
	*outDay		= components.day;
    e88477b2:	4606                	lw	a2,64(sp)
	*outSecond	= components.second;
    e88477b4:	6822                	ld	a6,8(sp)
	if( outMicros ) *outMicros	= 0;
    e88477b6:	6882                	ld	a7,0(sp)
	*outDay		= components.day;
    e88477b8:	c290                	sw	a2,0(a3)
	*outHour	= components.hour;
    e88477ba:	4696                	lw	a3,68(sp)
    e88477bc:	c314                	sw	a3,0(a4)
	*outMinute	= components.minute;
    e88477be:	4726                	lw	a4,72(sp)
    e88477c0:	c398                	sw	a4,0(a5)
	*outSecond	= components.second;
    e88477c2:	47b6                	lw	a5,76(sp)
    e88477c4:	00f82023          	sw	a5,0(a6)
	if( outMicros ) *outMicros	= 0;
    e88477c8:	00088463          	beqz	a7,e88477d0 <CFDateGetComponents+0x48>
    e88477cc:	0008a023          	sw	zero,0(a7)
	return( kNoErr );
}
    e88477d0:	60e6                	ld	ra,88(sp)
    e88477d2:	6446                	ld	s0,80(sp)
    e88477d4:	4501                	li	a0,0
    e88477d6:	6125                	addi	sp,sp,96
    e88477d8:	8082                	ret

00000000e88477da <_CFLArrayEqual>:
//===========================================================================================================================
//	_CFLArrayEqual
//===========================================================================================================================

static Boolean	_CFLArrayEqual( CFLObjectRef inLeft, CFLObjectRef inRight )
{
    e88477da:	7179                	addi	sp,sp,-48
    e88477dc:	f406                	sd	ra,40(sp)
    e88477de:	e422                	sd	s0,8(sp)
    e88477e0:	e826                	sd	s1,16(sp)
    e88477e2:	ec4a                	sd	s2,24(sp)
    e88477e4:	f04e                	sd	s3,32(sp)
	l = (CFLArray *) inLeft;
	r = (CFLArray *) inRight;
	
	// Different counts means different objects.
	
	if( l->count != r->count )
    e88477e6:	03052983          	lw	s3,48(a0)
    e88477ea:	599c                	lw	a5,48(a1)
    e88477ec:	01378e63          	beq	a5,s3,e8847808 <_CFLArrayEqual+0x2e>
	{
		err = kMismatchErr;
    e88477f0:	7579                	lui	a0,0xffffe
    e88477f2:	5a450513          	addi	a0,a0,1444 # ffffffffffffe5a4 <__DRAM0_INF_BASE+0xffffffff0000e5a4>
	
	err = kNoErr;
	
exit:
	return( (Boolean)( err == kNoErr ) );
}
    e88477f6:	70a2                	ld	ra,40(sp)
    e88477f8:	6422                	ld	s0,8(sp)
    e88477fa:	64c2                	ld	s1,16(sp)
    e88477fc:	6962                	ld	s2,24(sp)
    e88477fe:	7982                	ld	s3,32(sp)
    e8847800:	00153513          	seqz	a0,a0
    e8847804:	6145                	addi	sp,sp,48
    e8847806:	8082                	ret
	if( l->callbacks.equal != r->callbacks.equal )
    e8847808:	7518                	ld	a4,40(a0)
    e884780a:	759c                	ld	a5,40(a1)
    e884780c:	fef712e3          	bne	a4,a5,e88477f0 <_CFLArrayEqual+0x16>
    e8847810:	892e                	mv	s2,a1
    e8847812:	842a                	mv	s0,a0
    e8847814:	4481                	li	s1,0
	for( i = 0; i < n; ++i )
    e8847816:	0004879b          	sext.w	a5,s1
    e884781a:	0137c463          	blt	a5,s3,e8847822 <_CFLArrayEqual+0x48>
	err = kNoErr;
    e884781e:	4501                	li	a0,0
    e8847820:	bfd9                	j	e88477f6 <_CFLArrayEqual+0x1c>
		lValue = l->storage[ i ];
    e8847822:	7c1c                	ld	a5,56(s0)
    e8847824:	6697c50b          	lrd	a0,a5,s1,3
		rValue = r->storage[ i ];
    e8847828:	03893783          	ld	a5,56(s2)
    e884782c:	6697c58b          	lrd	a1,a5,s1,3
		if( lValue == rValue ) continue;
    e8847830:	00b51463          	bne	a0,a1,e8847838 <_CFLArrayEqual+0x5e>
	for( i = 0; i < n; ++i )
    e8847834:	0485                	addi	s1,s1,1
    e8847836:	b7c5                	j	e8847816 <_CFLArrayEqual+0x3c>
		if( l->callbacks.equal )
    e8847838:	741c                	ld	a5,40(s0)
    e884783a:	dfed                	beqz	a5,e8847834 <_CFLArrayEqual+0x5a>
			if( !l->callbacks.equal( lValue, rValue ) )
    e884783c:	9782                	jalr	a5
    e884783e:	f97d                	bnez	a0,e8847834 <_CFLArrayEqual+0x5a>
    e8847840:	bf45                	j	e88477f0 <_CFLArrayEqual+0x16>

00000000e8847842 <_CFLArrayHash>:
	
	check( CFLValidObjectType( inObject, kCFLTypeArray ) );
	object = (CFLArray *) inObject;
	
	return( (CFLHashCode) object->count );
}
    e8847842:	5908                	lw	a0,48(a0)
    e8847844:	8082                	ret

00000000e8847846 <_CFLDataEqual>:
	l = (CFLData *) inLeft;
	r = (CFLData *) inRight;
	
	// Different sizes means different objects.
	
	if( l->usedSize != r->usedSize )
    e8847846:	6918                	ld	a4,16(a0)
    e8847848:	699c                	ld	a5,16(a1)
    e884784a:	02f71763          	bne	a4,a5,e8847878 <_CFLDataEqual+0x32>
		goto exit;
	}
	
	// Different content means different objects.
	
	if( l->data && r->data && ( l->usedSize > 0 ) )
    e884784e:	6510                	ld	a2,8(a0)
		}
	}
	
	// All equality tests passed. Objects are equal.
	
	err = kNoErr;
    e8847850:	4501                	li	a0,0
	if( l->data && r->data && ( l->usedSize > 0 ) )
    e8847852:	c601                	beqz	a2,e884785a <_CFLDataEqual+0x14>
    e8847854:	6594                	ld	a3,8(a1)
    e8847856:	c291                	beqz	a3,e884785a <_CFLDataEqual+0x14>
    e8847858:	eb09                	bnez	a4,e884786a <_CFLDataEqual+0x24>
	
exit:
	return( (Boolean)( err == kNoErr ) );
}
    e884785a:	00153513          	seqz	a0,a0
    e884785e:	8082                	ret
    e8847860:	0785                	addi	a5,a5,1
    e8847862:	00f71563          	bne	a4,a5,e884786c <_CFLDataEqual+0x26>
	err = kNoErr;
    e8847866:	4501                	li	a0,0
    e8847868:	bfcd                	j	e884785a <_CFLDataEqual+0x14>
    e884786a:	4781                	li	a5,0
    e884786c:	80f6450b          	lrbu	a0,a2,a5,0
    e8847870:	80f6c58b          	lrbu	a1,a3,a5,0
    e8847874:	feb506e3          	beq	a0,a1,e8847860 <_CFLDataEqual+0x1a>
		err = kMismatchErr;
    e8847878:	7579                	lui	a0,0xffffe
    e884787a:	5a450513          	addi	a0,a0,1444 # ffffffffffffe5a4 <__DRAM0_INF_BASE+0xffffffff0000e5a4>
    e884787e:	bff1                	j	e884785a <_CFLDataEqual+0x14>

00000000e8847880 <_CFLDateHash>:
	check( CFLValidObjectType( inObject, kCFLTypeDate ) );
	obj = (CFLDate *) inObject;
	
	// Use the total seconds as the hash.
	
	hash  =   (CFLHashCode)( obj->date.year   * kSecondsPerYear );
    e8847880:	451c                	lw	a5,8(a0)
    e8847882:	01e13737          	lui	a4,0x1e13
    e8847886:	3807071b          	addiw	a4,a4,896
    e884788a:	02e787bb          	mulw	a5,a5,a4
	hash += ( (CFLHashCode)( obj->date.month  * kSecondsPerMonth ) );
    e884788e:	4554                	lw	a3,12(a0)
    e8847890:	00279737          	lui	a4,0x279
    e8847894:	d007071b          	addiw	a4,a4,-768
    e8847898:	24e6978b          	mulaw	a5,a3,a4
    e884789c:	4d58                	lw	a4,28(a0)
	hash += ( (CFLHashCode)( obj->date.day    * kSecondsPerDay ) );
    e884789e:	4914                	lw	a3,16(a0)
    e88478a0:	9fb9                	addw	a5,a5,a4
    e88478a2:	6755                	lui	a4,0x15
    e88478a4:	1807071b          	addiw	a4,a4,384
    e88478a8:	24e6978b          	mulaw	a5,a3,a4
	hash += ( (CFLHashCode)( obj->date.hour   * kSecondsPerHour ) );
    e88478ac:	4954                	lw	a3,20(a0)
    e88478ae:	6705                	lui	a4,0x1
    e88478b0:	e107071b          	addiw	a4,a4,-496
    e88478b4:	24e6978b          	mulaw	a5,a3,a4
	hash += ( (CFLHashCode)( obj->date.minute * kSecondsPerMinute ) );
    e88478b8:	4d18                	lw	a4,24(a0)
	hash += ( (CFLHashCode)  obj->date.second );
	return( hash );
}
    e88478ba:	03c00693          	li	a3,60
    e88478be:	853e                	mv	a0,a5
    e88478c0:	24e6950b          	mulaw	a0,a3,a4
    e88478c4:	8082                	ret

00000000e88478c6 <_CFLDateFree>:
	DEBUG_USE_ONLY( inObject );
	
	// The upper-level CFLRelease/etc routine will have already validated parameters so just assert here.
	
	check( CFLValidObjectType( inObject, kCFLTypeDate ) );
}
    e88478c6:	8082                	ret

00000000e88478c8 <_CFLDictionaryHash>:
	
	check( CFLValidObjectType( inObject, kCFLTypeDictionary ) );
	object = (CFLDictionary *) inObject;
	
	return( (CFLHashCode) object->count );
}
    e88478c8:	5128                	lw	a0,96(a0)
    e88478ca:	8082                	ret

00000000e88478cc <_CFLDictionaryFindKey>:
//===========================================================================================================================
//	_CFLDictionaryFindKey
//===========================================================================================================================

static OSStatus	_CFLDictionaryFindKey( const CFLDictionary *inObject, const void *inKey, CFLDictionaryNode ***outNode )
{
    e88478cc:	7179                	addi	sp,sp,-48
    e88478ce:	e826                	sd	s1,16(sp)
    e88478d0:	ec4a                	sd	s2,24(sp)
    e88478d2:	f04e                	sd	s3,32(sp)
    e88478d4:	f406                	sd	ra,40(sp)
    e88478d6:	e422                	sd	s0,8(sp)
	
	check( inObject );
	
	node = NULL;
	
	if( inObject->keyCallBacks.hash )
    e88478d8:	791c                	ld	a5,48(a0)
{
    e88478da:	84aa                	mv	s1,a0
    e88478dc:	892e                	mv	s2,a1
    e88478de:	89b2                	mv	s3,a2
    e88478e0:	0005851b          	sext.w	a0,a1
	if( inObject->keyCallBacks.hash )
    e88478e4:	c781                	beqz	a5,e88478ec <_CFLDictionaryFindKey+0x20>
	{
		hash = inObject->keyCallBacks.hash( inKey );
    e88478e6:	852e                	mv	a0,a1
    e88478e8:	9782                	jalr	a5
    e88478ea:	2501                	sext.w	a0,a0
	}
	else
	{
		hash = (CFLHashCode)(uintptr_t) inKey;
	}
	hash %= (CFLHashCode) inObject->bucketCount;
    e88478ec:	50e0                	lw	s0,100(s1)
    e88478ee:	0285753b          	remuw	a0,a0,s0
	
	for( node = &inObject->buckets[ hash ]; *node; node = &( *node )->next )
    e88478f2:	74a0                	ld	s0,104(s1)
    e88478f4:	7c05350b          	extu	a0,a0,31,0
    e88478f8:	06a4140b          	addsl	s0,s0,a0,3
    e88478fc:	601c                	ld	a5,0(s0)
    e88478fe:	ef99                	bnez	a5,e884791c <_CFLDictionaryFindKey+0x50>
			{
				break;
			}
		}
	}
	err = ( *node ) ? kNoErr : kNotFoundErr;
    e8847900:	7579                	lui	a0,0xffffe
    e8847902:	5b950513          	addi	a0,a0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
	if( outNode ) *outNode = node;
    e8847906:	00098463          	beqz	s3,e884790e <_CFLDictionaryFindKey+0x42>
    e884790a:	0089b023          	sd	s0,0(s3)
	return( err );
}
    e884790e:	70a2                	ld	ra,40(sp)
    e8847910:	6422                	ld	s0,8(sp)
    e8847912:	64c2                	ld	s1,16(sp)
    e8847914:	6962                	ld	s2,24(sp)
    e8847916:	7982                	ld	s3,32(sp)
    e8847918:	6145                	addi	sp,sp,48
    e884791a:	8082                	ret
		if( inObject->keyCallBacks.equal )
    e884791c:	7498                	ld	a4,40(s1)
    e884791e:	678c                	ld	a1,8(a5)
    e8847920:	c711                	beqz	a4,e884792c <_CFLDictionaryFindKey+0x60>
			if( inObject->keyCallBacks.equal( inKey, ( *node )->key ) )
    e8847922:	854a                	mv	a0,s2
    e8847924:	9702                	jalr	a4
    e8847926:	e519                	bnez	a0,e8847934 <_CFLDictionaryFindKey+0x68>
	for( node = &inObject->buckets[ hash ]; *node; node = &( *node )->next )
    e8847928:	6000                	ld	s0,0(s0)
    e884792a:	bfc9                	j	e88478fc <_CFLDictionaryFindKey+0x30>
			if( inKey == ( *node )->key )
    e884792c:	feb91ee3          	bne	s2,a1,e8847928 <_CFLDictionaryFindKey+0x5c>
	err = ( *node ) ? kNoErr : kNotFoundErr;
    e8847930:	4501                	li	a0,0
    e8847932:	bfd1                	j	e8847906 <_CFLDictionaryFindKey+0x3a>
    e8847934:	601c                	ld	a5,0(s0)
    e8847936:	ffed                	bnez	a5,e8847930 <_CFLDictionaryFindKey+0x64>
    e8847938:	b7e1                	j	e8847900 <_CFLDictionaryFindKey+0x34>

00000000e884793a <_CFLNumberEqual>:
	r = (CFLNumber *) inRight;
	
	// Equal values means equal objects.
	
#if( CFL_FLOATING_POINT_NUMBERS )
	if( !CFLNumberTypeIsFloatType( l->type ) )
    e884793a:	00854883          	lbu	a7,8(a0)
    e884793e:	0085c683          	lbu	a3,8(a1)
    e8847942:	4605                	li	a2,1
    e8847944:	ffb8879b          	addiw	a5,a7,-5
    e8847948:	ffb6871b          	addiw	a4,a3,-5
    e884794c:	0ff7f793          	andi	a5,a5,255
    e8847950:	0ff77713          	andi	a4,a4,255
    e8847954:	08f67763          	bgeu	a2,a5,e88479e2 <_CFLNumberEqual+0xa8>
    e8847958:	ff48879b          	addiw	a5,a7,-12
    e884795c:	0ff7f793          	andi	a5,a5,255
    e8847960:	08f67163          	bgeu	a2,a5,e88479e2 <_CFLNumberEqual+0xa8>
	{
		if( CFLNumberTypeIsFloatType( r->type ) )
		{
			return( false );
    e8847964:	4781                	li	a5,0
		if( CFLNumberTypeIsFloatType( r->type ) )
    e8847966:	02e67f63          	bgeu	a2,a4,e88479a4 <_CFLNumberEqual+0x6a>
    e884796a:	ff46871b          	addiw	a4,a3,-12
    e884796e:	0ff77713          	andi	a4,a4,255
    e8847972:	02e67963          	bgeu	a2,a4,e88479a4 <_CFLNumberEqual+0x6a>
		}
		if( ( l->type == kCFLNumberSInt128Type ) == ( r->type == kCFLNumberSInt128Type ) )
    e8847976:	ff188813          	addi	a6,a7,-15
    e884797a:	ff168793          	addi	a5,a3,-15
    e884797e:	01003833          	snez	a6,a6
    e8847982:	0017b793          	seqz	a5,a5
    e8847986:	6918                	ld	a4,16(a0)
    e8847988:	6990                	ld	a2,16(a1)
    e884798a:	433d                	li	t1,15
    e884798c:	00f80e63          	beq	a6,a5,e88479a8 <_CFLNumberEqual+0x6e>
		{
			return( ( l->value.s128.hi == r->value.s128.hi ) && ( l->value.s128.lo == r->value.s128.lo ) );
    e8847990:	4681                	li	a3,0
    e8847992:	00c71763          	bne	a4,a2,e88479a0 <_CFLNumberEqual+0x66>
    e8847996:	6d94                	ld	a3,24(a1)
    e8847998:	6d1c                	ld	a5,24(a0)
    e884799a:	8f95                	sub	a5,a5,a3
    e884799c:	0017b693          	seqz	a3,a5
    e88479a0:	0ff6f793          	andi	a5,a3,255
		s128.lo = (uint64_t) l->value.s64;
		return( ( s128.hi == r->value.s128.hi ) && ( s128.lo == r->value.s128.lo ) );
	}
	return( (Boolean)( l->value.s64 == r->value.s64 ) );
#endif
}
    e88479a4:	853e                	mv	a0,a5
    e88479a6:	8082                	ret
		else if( l->type == kCFLNumberSInt128Type )
    e88479a8:	00689e63          	bne	a7,t1,e88479c4 <_CFLNumberEqual+0x8a>
			s128.hi = ( r->value.s64 < 0 ) ? -1 : 0;
    e88479ac:	43f65693          	srai	a3,a2,0x3f
			return( ( l->value.s128.hi == s128.hi ) && ( l->value.s128.lo == s128.lo ) );
    e88479b0:	4781                	li	a5,0
    e88479b2:	00d71663          	bne	a4,a3,e88479be <_CFLNumberEqual+0x84>
    e88479b6:	6d1c                	ld	a5,24(a0)
    e88479b8:	8f91                	sub	a5,a5,a2
			return( ( s128.hi == r->value.s128.hi ) && ( s128.lo == r->value.s128.lo ) );
    e88479ba:	0017b793          	seqz	a5,a5
    e88479be:	0ff7f793          	andi	a5,a5,255
    e88479c2:	b7cd                	j	e88479a4 <_CFLNumberEqual+0x6a>
		else if( r->type == kCFLNumberSInt128Type )
    e88479c4:	00669a63          	bne	a3,t1,e88479d8 <_CFLNumberEqual+0x9e>
			s128.hi = ( l->value.s64 < 0 ) ? -1 : 0;
    e88479c8:	43f75693          	srai	a3,a4,0x3f
			return( ( s128.hi == r->value.s128.hi ) && ( s128.lo == r->value.s128.lo ) );
    e88479cc:	4781                	li	a5,0
    e88479ce:	fec698e3          	bne	a3,a2,e88479be <_CFLNumberEqual+0x84>
    e88479d2:	6d9c                	ld	a5,24(a1)
    e88479d4:	8f99                	sub	a5,a5,a4
    e88479d6:	b7d5                	j	e88479ba <_CFLNumberEqual+0x80>
		return( (Boolean)( l->value.s64 == r->value.s64 ) );
    e88479d8:	40c707b3          	sub	a5,a4,a2
    e88479dc:	0017b793          	seqz	a5,a5
    e88479e0:	b7d1                	j	e88479a4 <_CFLNumberEqual+0x6a>
		if( !CFLNumberTypeIsFloatType( r->type ) )
    e88479e2:	4605                	li	a2,1
    e88479e4:	00e67863          	bgeu	a2,a4,e88479f4 <_CFLNumberEqual+0xba>
    e88479e8:	36d1                	addiw	a3,a3,-12
    e88479ea:	0ff6f693          	andi	a3,a3,255
			return( false );
    e88479ee:	4781                	li	a5,0
		if( !CFLNumberTypeIsFloatType( r->type ) )
    e88479f0:	fad66ae3          	bltu	a2,a3,e88479a4 <_CFLNumberEqual+0x6a>
		return( (Boolean)( l->value.f64 == r->value.f64 ) );
    e88479f4:	291c                	fld	fa5,16(a0)
    e88479f6:	2998                	fld	fa4,16(a1)
    e88479f8:	a2e7a7d3          	feq.d	a5,fa5,fa4
    e88479fc:	b765                	j	e88479a4 <_CFLNumberEqual+0x6a>

00000000e88479fe <_CFLStringFree>:
	check_string( !CFLIsConstantObject( inObject ), "constant objects should never get freed" );
	object = (CFLString *) inObject;
	
	// Free the memory used by the string.
	
	if( object->data ) free( object->data );
    e88479fe:	6508                	ld	a0,8(a0)
    e8847a00:	c119                	beqz	a0,e8847a06 <_CFLStringFree+0x8>
    e8847a02:	0ff3406f          	j	e887c300 <eLIBs_free>
}
    e8847a06:	8082                	ret

00000000e8847a08 <_CFLStringEqual>:
{
    e8847a08:	1141                	addi	sp,sp,-16
    e8847a0a:	e406                	sd	ra,8(sp)
	if( lConst && rConst )	// Both Const
    e8847a0c:	00254703          	lbu	a4,2(a0)
    e8847a10:	0025c783          	lbu	a5,2(a1)
    e8847a14:	8b05                	andi	a4,a4,1
    e8847a16:	8b85                	andi	a5,a5,1
    e8847a18:	c31d                	beqz	a4,e8847a3e <_CFLStringEqual+0x36>
    e8847a1a:	0521                	addi	a0,a0,8
    e8847a1c:	cf99                	beqz	a5,e8847a3a <_CFLStringEqual+0x32>
		if( strcmp( CFLGetConstantStringPtr( l ), CFLGetConstantStringPtr( r ) ) != 0 )
    e8847a1e:	05a1                	addi	a1,a1,8
    e8847a20:	11d340ef          	jal	ra,e887c33c <eLIBs_strcmp>
    e8847a24:	c909                	beqz	a0,e8847a36 <_CFLStringEqual+0x2e>
			err = kMismatchErr;
    e8847a26:	7579                	lui	a0,0xffffe
    e8847a28:	5a450513          	addi	a0,a0,1444 # ffffffffffffe5a4 <__DRAM0_INF_BASE+0xffffffff0000e5a4>
}
    e8847a2c:	60a2                	ld	ra,8(sp)
    e8847a2e:	00153513          	seqz	a0,a0
    e8847a32:	0141                	addi	sp,sp,16
    e8847a34:	8082                	ret
	err = kNoErr;
    e8847a36:	4501                	li	a0,0
    e8847a38:	bfd5                	j	e8847a2c <_CFLStringEqual+0x24>
		if( strcmp( CFLGetConstantStringPtr( l ), r->data ) != 0 )
    e8847a3a:	658c                	ld	a1,8(a1)
    e8847a3c:	b7d5                	j	e8847a20 <_CFLStringEqual+0x18>
	else if( rConst )		// Right Const, Left Non-Const
    e8847a3e:	c781                	beqz	a5,e8847a46 <_CFLStringEqual+0x3e>
		if( strcmp( l->data, CFLGetConstantStringPtr( r ) ) != 0 )
    e8847a40:	05a1                	addi	a1,a1,8
		if( strcmp( l->data, r->data ) != 0 )
    e8847a42:	6508                	ld	a0,8(a0)
    e8847a44:	bff1                	j	e8847a20 <_CFLStringEqual+0x18>
		if( l->size != r->size )
    e8847a46:	6918                	ld	a4,16(a0)
    e8847a48:	699c                	ld	a5,16(a1)
    e8847a4a:	fcf71ee3          	bne	a4,a5,e8847a26 <_CFLStringEqual+0x1e>
		if( strcmp( l->data, r->data ) != 0 )
    e8847a4e:	658c                	ld	a1,8(a1)
    e8847a50:	bfcd                	j	e8847a42 <_CFLStringEqual+0x3a>

00000000e8847a52 <_CFLDateEqual>:
	if( ( l->date.year 		== r->date.year ) 	&& 
    e8847a52:	4518                	lw	a4,8(a0)
    e8847a54:	459c                	lw	a5,8(a1)
    e8847a56:	02f71a63          	bne	a4,a5,e8847a8a <_CFLDateEqual+0x38>
    e8847a5a:	4554                	lw	a3,12(a0)
    e8847a5c:	45d8                	lw	a4,12(a1)
	return( false );
    e8847a5e:	4781                	li	a5,0
	if( ( l->date.year 		== r->date.year ) 	&& 
    e8847a60:	02e69363          	bne	a3,a4,e8847a86 <_CFLDateEqual+0x34>
		( l->date.month 	== r->date.month ) 	&& 
    e8847a64:	4914                	lw	a3,16(a0)
    e8847a66:	4998                	lw	a4,16(a1)
    e8847a68:	00e69f63          	bne	a3,a4,e8847a86 <_CFLDateEqual+0x34>
		( l->date.day 		== r->date.day ) 	&& 
    e8847a6c:	4954                	lw	a3,20(a0)
    e8847a6e:	49d8                	lw	a4,20(a1)
    e8847a70:	00e69b63          	bne	a3,a4,e8847a86 <_CFLDateEqual+0x34>
		( l->date.hour 		== r->date.hour ) 	&& 
    e8847a74:	4d14                	lw	a3,24(a0)
    e8847a76:	4d98                	lw	a4,24(a1)
    e8847a78:	00e69763          	bne	a3,a4,e8847a86 <_CFLDateEqual+0x34>
		( l->date.minute 	== r->date.minute ) && 
    e8847a7c:	4d5c                	lw	a5,28(a0)
    e8847a7e:	4dc8                	lw	a0,28(a1)
    e8847a80:	8f89                	sub	a5,a5,a0
	return( false );
    e8847a82:	0017b793          	seqz	a5,a5
}
    e8847a86:	853e                	mv	a0,a5
    e8847a88:	8082                	ret
	return( false );
    e8847a8a:	4781                	li	a5,0
    e8847a8c:	bfed                	j	e8847a86 <_CFLDateEqual+0x34>

00000000e8847a8e <calloc.constprop.10>:
    p = malloc(len);
    e8847a8e:	0005061b          	sext.w	a2,a0
static inline void *calloc(size_t nitems, size_t size)
    e8847a92:	1101                	addi	sp,sp,-32
    p = malloc(len);
    e8847a94:	8532                	mv	a0,a2
static inline void *calloc(size_t nitems, size_t size)
    e8847a96:	ec06                	sd	ra,24(sp)
    e8847a98:	e822                	sd	s0,16(sp)
    p = malloc(len);
    e8847a9a:	e432                	sd	a2,8(sp)
    e8847a9c:	5b3330ef          	jal	ra,e887b84e <my_malloc>
    e8847aa0:	842a                	mv	s0,a0
    memset(p,0,len);
    e8847aa2:	6622                	ld	a2,8(sp)
    e8847aa4:	4581                	li	a1,0
    e8847aa6:	0ef340ef          	jal	ra,e887c394 <eLIBs_memset>
}
    e8847aaa:	8522                	mv	a0,s0
    e8847aac:	60e2                	ld	ra,24(sp)
    e8847aae:	6442                	ld	s0,16(sp)
    e8847ab0:	6105                	addi	sp,sp,32
    e8847ab2:	8082                	ret

00000000e8847ab4 <_CFLNumberFree>:
    e8847ab4:	8082                	ret

00000000e8847ab6 <_CFLStringHash>:
	return( _CFLHashFNV1a( CFLIsConstantObject( inObject ) ? CFLGetConstantStringPtr( inObject ) : object->data, kSizeCString ) );
    e8847ab6:	00254783          	lbu	a5,2(a0)
    e8847aba:	8b85                	andi	a5,a5,1
    e8847abc:	cf99                	beqz	a5,e8847ada <_CFLStringHash+0x24>
    e8847abe:	00850793          	addi	a5,a0,8
	const uint8_t * const		ptr = (const uint8_t *) inPtr;
	CFLHashCode					hash;
	size_t						i;
	uint8_t						b;
	
	hash = UINT32_C( 0x811c9dc5 );
    e8847ac2:	811ca537          	lui	a0,0x811ca
	if( inLen == kSizeCString )
	{
		for( i = 0; ( b = ptr[ i ] ) != '\0'; ++i )
		{
			hash ^= b;
			hash *= UINT32_C( 0x01000193 );
    e8847ac6:	01000737          	lui	a4,0x1000
	hash = UINT32_C( 0x811c9dc5 );
    e8847aca:	dc550513          	addi	a0,a0,-571 # ffffffff811c9dc5 <__DRAM0_INF_BASE+0xfffffffe811d9dc5>
			hash *= UINT32_C( 0x01000193 );
    e8847ace:	1937071b          	addiw	a4,a4,403
		for( i = 0; ( b = ptr[ i ] ) != '\0'; ++i )
    e8847ad2:	9817c68b          	lbuia	a3,(a5),1,0
    e8847ad6:	e681                	bnez	a3,e8847ade <_CFLStringHash+0x28>
}
    e8847ad8:	8082                	ret
	return( _CFLHashFNV1a( CFLIsConstantObject( inObject ) ? CFLGetConstantStringPtr( inObject ) : object->data, kSizeCString ) );
    e8847ada:	651c                	ld	a5,8(a0)
    e8847adc:	b7dd                	j	e8847ac2 <_CFLStringHash+0xc>
			hash ^= b;
    e8847ade:	8d35                	xor	a0,a0,a3
			hash *= UINT32_C( 0x01000193 );
    e8847ae0:	02a7053b          	mulw	a0,a4,a0
		for( i = 0; ( b = ptr[ i ] ) != '\0'; ++i )
    e8847ae4:	b7fd                	j	e8847ad2 <_CFLStringHash+0x1c>

00000000e8847ae6 <_CFLDataHash>:
	return( _CFLHashFNV1a( object->data, object->usedSize ) );
    e8847ae6:	6910                	ld	a2,16(a0)
    e8847ae8:	651c                	ld	a5,8(a0)
	if( inLen == kSizeCString )
    e8847aea:	577d                	li	a4,-1
    e8847aec:	811ca537          	lui	a0,0x811ca
    e8847af0:	dc550513          	addi	a0,a0,-571 # ffffffff811c9dc5 <__DRAM0_INF_BASE+0xfffffffe811d9dc5>
    e8847af4:	02e61763          	bne	a2,a4,e8847b22 <_CFLDataHash+0x3c>
			hash *= UINT32_C( 0x01000193 );
    e8847af8:	01000737          	lui	a4,0x1000
    e8847afc:	1937071b          	addiw	a4,a4,403
		for( i = 0; ( b = ptr[ i ] ) != '\0'; ++i )
    e8847b00:	9817c68b          	lbuia	a3,(a5),1,0
    e8847b04:	e291                	bnez	a3,e8847b08 <_CFLDataHash+0x22>
    e8847b06:	8082                	ret
			hash ^= b;
    e8847b08:	8d35                	xor	a0,a0,a3
			hash *= UINT32_C( 0x01000193 );
    e8847b0a:	02a7053b          	mulw	a0,a4,a0
		for( i = 0; ( b = ptr[ i ] ) != '\0'; ++i )
    e8847b0e:	bfcd                	j	e8847b00 <_CFLDataHash+0x1a>
	}
	else
	{
		for( i = 0; i < inLen; ++i )
		{
			hash ^= ptr[ i ];
    e8847b10:	80e7c58b          	lrbu	a1,a5,a4,0
		for( i = 0; i < inLen; ++i )
    e8847b14:	0705                	addi	a4,a4,1
			hash ^= ptr[ i ];
    e8847b16:	8d2d                	xor	a0,a0,a1
			hash *= UINT32_C( 0x01000193 );
    e8847b18:	02a6853b          	mulw	a0,a3,a0
		for( i = 0; i < inLen; ++i )
    e8847b1c:	fee61ae3          	bne	a2,a4,e8847b10 <_CFLDataHash+0x2a>
}
    e8847b20:	8082                	ret
			hash *= UINT32_C( 0x01000193 );
    e8847b22:	010006b7          	lui	a3,0x1000
		for( i = 0; i < inLen; ++i )
    e8847b26:	4701                	li	a4,0
			hash *= UINT32_C( 0x01000193 );
    e8847b28:	1936869b          	addiw	a3,a3,403
    e8847b2c:	bfc5                	j	e8847b1c <_CFLDataHash+0x36>

00000000e8847b2e <_CFLNumberHash>:
	if( object->type == kCFLNumberSInt128Type )
    e8847b2e:	00854703          	lbu	a4,8(a0)
    e8847b32:	47bd                	li	a5,15
    e8847b34:	02f71963          	bne	a4,a5,e8847b66 <_CFLNumberHash+0x38>
	hash = UINT32_C( 0x811c9dc5 );
    e8847b38:	811ca7b7          	lui	a5,0x811ca
			hash *= UINT32_C( 0x01000193 );
    e8847b3c:	010006b7          	lui	a3,0x1000
	hash = UINT32_C( 0x811c9dc5 );
    e8847b40:	dc578793          	addi	a5,a5,-571 # ffffffff811c9dc5 <__DRAM0_INF_BASE+0xfffffffe811d9dc5>
		for( i = 0; i < inLen; ++i )
    e8847b44:	4701                	li	a4,0
			hash ^= ptr[ i ];
    e8847b46:	0541                	addi	a0,a0,16
			hash *= UINT32_C( 0x01000193 );
    e8847b48:	1936869b          	addiw	a3,a3,403
		for( i = 0; i < inLen; ++i )
    e8847b4c:	4641                	li	a2,16
			hash ^= ptr[ i ];
    e8847b4e:	80e5458b          	lrbu	a1,a0,a4,0
		for( i = 0; i < inLen; ++i )
    e8847b52:	0705                	addi	a4,a4,1
			hash ^= ptr[ i ];
    e8847b54:	8fad                	xor	a5,a5,a1
			hash *= UINT32_C( 0x01000193 );
    e8847b56:	02f687bb          	mulw	a5,a3,a5
		for( i = 0; i < inLen; ++i )
    e8847b5a:	fec71ae3          	bne	a4,a2,e8847b4e <_CFLNumberHash+0x20>
		hash = _CFLHashFNV1a( &object->value.s128, sizeof( object->value.s128 ) );
    e8847b5e:	7c07b50b          	extu	a0,a5,31,0
}
    e8847b62:	2501                	sext.w	a0,a0
    e8847b64:	8082                	ret
		hash = object->value.u64; // Also works for floating point types because value is a union.
    e8847b66:	6908                	ld	a0,16(a0)
		hash = ( hash << 18 ) - hash - 1;
    e8847b68:	01251793          	slli	a5,a0,0x12
    e8847b6c:	8f89                	sub	a5,a5,a0
    e8847b6e:	fff78513          	addi	a0,a5,-1
		hash =   hash ^ ( hash >> 31 );
    e8847b72:	01f55793          	srli	a5,a0,0x1f
    e8847b76:	8fa9                	xor	a5,a5,a0
		hash = ( hash + ( hash <<  2 ) ) + ( hash << 4 );
    e8847b78:	00479513          	slli	a0,a5,0x4
    e8847b7c:	04f5150b          	addsl	a0,a0,a5,2
    e8847b80:	97aa                	add	a5,a5,a0
		hash =   hash ^ ( hash >> 11 );
    e8847b82:	00b7d513          	srli	a0,a5,0xb
    e8847b86:	8fa9                	xor	a5,a5,a0
		hash =   hash + ( hash <<  6 );
    e8847b88:	00679513          	slli	a0,a5,0x6
    e8847b8c:	97aa                	add	a5,a5,a0
		hash =   hash ^ ( hash >> 22 );
    e8847b8e:	0167d513          	srli	a0,a5,0x16
    e8847b92:	8d3d                	xor	a0,a0,a5
    e8847b94:	b7f9                	j	e8847b62 <_CFLNumberHash+0x34>

00000000e8847b96 <CFLGetTypeID>:
	require_action( CFLValidObject( inObject ), exit, err = kBadReferenceErr );
    e8847b96:	c50d                	beqz	a0,e8847bc0 <CFLGetTypeID+0x2a>
    e8847b98:	00054703          	lbu	a4,0(a0)
    e8847b9c:	05600793          	li	a5,86
    e8847ba0:	02f71063          	bne	a4,a5,e8847bc0 <CFLGetTypeID+0x2a>
    e8847ba4:	00154783          	lbu	a5,1(a0)
    e8847ba8:	cf81                	beqz	a5,e8847bc0 <CFLGetTypeID+0x2a>
    e8847baa:	0008d717          	auipc	a4,0x8d
    e8847bae:	11670713          	addi	a4,a4,278 # e88d4cc0 <gCFLRuntimeClassTableCount>
    e8847bb2:	6318                	ld	a4,0(a4)
    e8847bb4:	00e7f663          	bgeu	a5,a4,e8847bc0 <CFLGetTypeID+0x2a>
	err = kNoErr;
    e8847bb8:	4501                	li	a0,0
	if( outTypeID ) *outTypeID = CFLObjectGetType( inObject );
    e8847bba:	c591                	beqz	a1,e8847bc6 <CFLGetTypeID+0x30>
    e8847bbc:	c19c                	sw	a5,0(a1)
    e8847bbe:	8082                	ret
	require_action( CFLValidObject( inObject ), exit, err = kBadReferenceErr );
    e8847bc0:	7579                	lui	a0,0xffffe
    e8847bc2:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8847bc6:	8082                	ret

00000000e8847bc8 <CFLRetain>:
{
    e8847bc8:	1141                	addi	sp,sp,-16
    e8847bca:	e022                	sd	s0,0(sp)
    e8847bcc:	e406                	sd	ra,8(sp)
    e8847bce:	842a                	mv	s0,a0
	require_action( CFLValidObject( inObject ), exit, err = kBadReferenceErr );
    e8847bd0:	c90d                	beqz	a0,e8847c02 <CFLRetain+0x3a>
    e8847bd2:	00054703          	lbu	a4,0(a0)
    e8847bd6:	05600793          	li	a5,86
    e8847bda:	02f71963          	bne	a4,a5,e8847c0c <CFLRetain+0x44>
    e8847bde:	00154783          	lbu	a5,1(a0)
    e8847be2:	c78d                	beqz	a5,e8847c0c <CFLRetain+0x44>
    e8847be4:	0008d717          	auipc	a4,0x8d
    e8847be8:	0dc70713          	addi	a4,a4,220 # e88d4cc0 <gCFLRuntimeClassTableCount>
    e8847bec:	6318                	ld	a4,0(a4)
    e8847bee:	00e7ff63          	bgeu	a5,a4,e8847c0c <CFLRetain+0x44>
	if( !CFLIsConstantObject( obj ) )
    e8847bf2:	00254783          	lbu	a5,2(a0)
    e8847bf6:	8b85                	andi	a5,a5,1
    e8847bf8:	e789                	bnez	a5,e8847c02 <CFLRetain+0x3a>
		atomic_add_32( &obj->retainCount, 1 );
    e8847bfa:	4585                	li	a1,1
    e8847bfc:	0511                	addi	a0,a0,4
    e8847bfe:	d38fd0ef          	jal	ra,e8845136 <atomic_add_and_fetch_32>
}
    e8847c02:	8522                	mv	a0,s0
    e8847c04:	60a2                	ld	ra,8(sp)
    e8847c06:	6402                	ld	s0,0(sp)
    e8847c08:	0141                	addi	sp,sp,16
    e8847c0a:	8082                	ret
	return( ( err == kNoErr ) ? inObject : NULL );
    e8847c0c:	4401                	li	s0,0
    e8847c0e:	bfd5                	j	e8847c02 <CFLRetain+0x3a>

00000000e8847c10 <_CFLContainerRetain>:
	return( CFLRetain( inObject ) );
    e8847c10:	852e                	mv	a0,a1
    e8847c12:	fb7ff06f          	j	e8847bc8 <CFLRetain>

00000000e8847c16 <CFLRelease>:
	require( CFLValidObject( inObject ), exit );
    e8847c16:	c92d                	beqz	a0,e8847c88 <CFLRelease+0x72>
    e8847c18:	00054703          	lbu	a4,0(a0)
    e8847c1c:	05600793          	li	a5,86
    e8847c20:	06f71463          	bne	a4,a5,e8847c88 <CFLRelease+0x72>
    e8847c24:	00154783          	lbu	a5,1(a0)
    e8847c28:	c3a5                	beqz	a5,e8847c88 <CFLRelease+0x72>
    e8847c2a:	0008d717          	auipc	a4,0x8d
    e8847c2e:	09670713          	addi	a4,a4,150 # e88d4cc0 <gCFLRuntimeClassTableCount>
    e8847c32:	6318                	ld	a4,0(a4)
    e8847c34:	04e7fa63          	bgeu	a5,a4,e8847c88 <CFLRelease+0x72>
	if( !CFLIsConstantObject( obj ) )
    e8847c38:	00254783          	lbu	a5,2(a0)
    e8847c3c:	8b85                	andi	a5,a5,1
    e8847c3e:	e7a9                	bnez	a5,e8847c88 <CFLRelease+0x72>
{
    e8847c40:	1141                	addi	sp,sp,-16
    e8847c42:	e022                	sd	s0,0(sp)
		if( atomic_add_and_fetch_32( &obj->retainCount, -1 ) == 0 )
    e8847c44:	55fd                	li	a1,-1
    e8847c46:	842a                	mv	s0,a0
    e8847c48:	0511                	addi	a0,a0,4
{
    e8847c4a:	e406                	sd	ra,8(sp)
		if( atomic_add_and_fetch_32( &obj->retainCount, -1 ) == 0 )
    e8847c4c:	ceafd0ef          	jal	ra,e8845136 <atomic_add_and_fetch_32>
    e8847c50:	e905                	bnez	a0,e8847c80 <CFLRelease+0x6a>
			if( gCFLRuntimeClassTable[ obj->type ].freeObj ) gCFLRuntimeClassTable[ obj->type ].freeObj( obj );
    e8847c52:	00144703          	lbu	a4,1(s0)
    e8847c56:	0008d797          	auipc	a5,0x8d
    e8847c5a:	06278793          	addi	a5,a5,98 # e88d4cb8 <gCFLRuntimeClassTable>
    e8847c5e:	639c                	ld	a5,0(a5)
    e8847c60:	0716                	slli	a4,a4,0x5
    e8847c62:	97ba                	add	a5,a5,a4
    e8847c64:	679c                	ld	a5,8(a5)
    e8847c66:	c399                	beqz	a5,e8847c6c <CFLRelease+0x56>
    e8847c68:	8522                	mv	a0,s0
    e8847c6a:	9782                	jalr	a5
			obj->signature	= kCFLSignatureFree;
    e8847c6c:	06600793          	li	a5,102
    e8847c70:	00f41023          	sh	a5,0(s0)
			free( obj );
    e8847c74:	8522                	mv	a0,s0
}
    e8847c76:	6402                	ld	s0,0(sp)
    e8847c78:	60a2                	ld	ra,8(sp)
    e8847c7a:	0141                	addi	sp,sp,16
			free( obj );
    e8847c7c:	6843406f          	j	e887c300 <eLIBs_free>
}
    e8847c80:	60a2                	ld	ra,8(sp)
    e8847c82:	6402                	ld	s0,0(sp)
    e8847c84:	0141                	addi	sp,sp,16
    e8847c86:	8082                	ret
    e8847c88:	8082                	ret

00000000e8847c8a <_CFLContainerRelease>:
	CFLRelease( inObject );
    e8847c8a:	852e                	mv	a0,a1
    e8847c8c:	f8bff06f          	j	e8847c16 <CFLRelease>

00000000e8847c90 <_CFLDataFree>:
{
    e8847c90:	1141                	addi	sp,sp,-16
    e8847c92:	e022                	sd	s0,0(sp)
    e8847c94:	e406                	sd	ra,8(sp)
	if( ( object->bytesDeallocator == kCFLAllocatorDefault ) || ( object->bytesDeallocator == kCFLAllocatorMalloc ) )
    e8847c96:	711c                	ld	a5,32(a0)
    e8847c98:	5775                	li	a4,-3
{
    e8847c9a:	842a                	mv	s0,a0
	if( ( object->bytesDeallocator == kCFLAllocatorDefault ) || ( object->bytesDeallocator == kCFLAllocatorMalloc ) )
    e8847c9c:	17fd                	addi	a5,a5,-1
    e8847c9e:	00f77863          	bgeu	a4,a5,e8847cae <_CFLDataFree+0x1e>
		ForgetMem( &object->data );
    e8847ca2:	6508                	ld	a0,8(a0)
    e8847ca4:	c509                	beqz	a0,e8847cae <_CFLDataFree+0x1e>
    e8847ca6:	65a340ef          	jal	ra,e887c300 <eLIBs_free>
    e8847caa:	00043423          	sd	zero,8(s0)
	if( object->parentData )
    e8847cae:	7408                	ld	a0,40(s0)
    e8847cb0:	c509                	beqz	a0,e8847cba <_CFLDataFree+0x2a>
		CFLRelease( object->parentData );
    e8847cb2:	f65ff0ef          	jal	ra,e8847c16 <CFLRelease>
		object->parentData = NULL;
    e8847cb6:	02043423          	sd	zero,40(s0)
}
    e8847cba:	60a2                	ld	ra,8(sp)
    e8847cbc:	6402                	ld	s0,0(sp)
    e8847cbe:	0141                	addi	sp,sp,16
    e8847cc0:	8082                	ret

00000000e8847cc2 <CFLEqual>:
	require_action( CFLValidObject( inLeft ), exit, err = kBadReferenceErr );
    e8847cc2:	c925                	beqz	a0,e8847d32 <CFLEqual+0x70>
    e8847cc4:	00054703          	lbu	a4,0(a0)
    e8847cc8:	05600793          	li	a5,86
    e8847ccc:	06f71363          	bne	a4,a5,e8847d32 <CFLEqual+0x70>
    e8847cd0:	00154783          	lbu	a5,1(a0)
    e8847cd4:	cfb9                	beqz	a5,e8847d32 <CFLEqual+0x70>
    e8847cd6:	0008d697          	auipc	a3,0x8d
    e8847cda:	fea68693          	addi	a3,a3,-22 # e88d4cc0 <gCFLRuntimeClassTableCount>
    e8847cde:	6294                	ld	a3,0(a3)
    e8847ce0:	04d7f963          	bgeu	a5,a3,e8847d32 <CFLEqual+0x70>
	require_action( CFLValidObject( inRight ), exit, err = kBadReferenceErr );
    e8847ce4:	c5b9                	beqz	a1,e8847d32 <CFLEqual+0x70>
    e8847ce6:	0005c603          	lbu	a2,0(a1)
    e8847cea:	04e61463          	bne	a2,a4,e8847d32 <CFLEqual+0x70>
    e8847cee:	0015c703          	lbu	a4,1(a1)
    e8847cf2:	c321                	beqz	a4,e8847d32 <CFLEqual+0x70>
    e8847cf4:	02d77f63          	bgeu	a4,a3,e8847d32 <CFLEqual+0x70>
	if( left == right )
    e8847cf8:	00b51a63          	bne	a0,a1,e8847d0c <CFLEqual+0x4a>
		err = kNoErr;
    e8847cfc:	4501                	li	a0,0
    e8847cfe:	a82d                	j	e8847d38 <CFLEqual+0x76>
    e8847d00:	4501                	li	a0,0
}
    e8847d02:	60a2                	ld	ra,8(sp)
    e8847d04:	00153513          	seqz	a0,a0
    e8847d08:	0141                	addi	sp,sp,16
    e8847d0a:	8082                	ret
	if( type != CFLObjectGetType( right ) )
    e8847d0c:	02e79963          	bne	a5,a4,e8847d3e <CFLEqual+0x7c>
	if( gCFLRuntimeClassTable[ type ].equal )
    e8847d10:	0008d717          	auipc	a4,0x8d
    e8847d14:	fa870713          	addi	a4,a4,-88 # e88d4cb8 <gCFLRuntimeClassTable>
    e8847d18:	6318                	ld	a4,0(a4)
    e8847d1a:	0796                	slli	a5,a5,0x5
    e8847d1c:	97ba                	add	a5,a5,a4
    e8847d1e:	6b9c                	ld	a5,16(a5)
    e8847d20:	cf99                	beqz	a5,e8847d3e <CFLEqual+0x7c>
{
    e8847d22:	1141                	addi	sp,sp,-16
    e8847d24:	e406                	sd	ra,8(sp)
		if( !gCFLRuntimeClassTable[ type ].equal( left, right ) )
    e8847d26:	9782                	jalr	a5
    e8847d28:	fd61                	bnez	a0,e8847d00 <CFLEqual+0x3e>
			err = kMismatchErr;
    e8847d2a:	7579                	lui	a0,0xffffe
    e8847d2c:	5a450513          	addi	a0,a0,1444 # ffffffffffffe5a4 <__DRAM0_INF_BASE+0xffffffff0000e5a4>
			goto exit;
    e8847d30:	bfc9                	j	e8847d02 <CFLEqual+0x40>
	require_action( CFLValidObject( inLeft ), exit, err = kBadReferenceErr );
    e8847d32:	7579                	lui	a0,0xffffe
    e8847d34:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8847d38:	00153513          	seqz	a0,a0
    e8847d3c:	8082                	ret
			err = kMismatchErr;
    e8847d3e:	7579                	lui	a0,0xffffe
    e8847d40:	5a450513          	addi	a0,a0,1444 # ffffffffffffe5a4 <__DRAM0_INF_BASE+0xffffffff0000e5a4>
    e8847d44:	bfd5                	j	e8847d38 <CFLEqual+0x76>

00000000e8847d46 <_CFLContainerEqual>:
	return( CFLEqual( inLeft, inRight ) );
    e8847d46:	f7dff06f          	j	e8847cc2 <CFLEqual>

00000000e8847d4a <CFLHash>:
	require( CFLValidObject( inObject ), exit );
    e8847d4a:	cd1d                	beqz	a0,e8847d88 <CFLHash+0x3e>
    e8847d4c:	00054683          	lbu	a3,0(a0)
    e8847d50:	05600713          	li	a4,86
    e8847d54:	02e69a63          	bne	a3,a4,e8847d88 <CFLHash+0x3e>
    e8847d58:	00154703          	lbu	a4,1(a0)
    e8847d5c:	c715                	beqz	a4,e8847d88 <CFLHash+0x3e>
    e8847d5e:	0008d697          	auipc	a3,0x8d
    e8847d62:	f6268693          	addi	a3,a3,-158 # e88d4cc0 <gCFLRuntimeClassTableCount>
    e8847d66:	6294                	ld	a3,0(a3)
    e8847d68:	02d77063          	bgeu	a4,a3,e8847d88 <CFLHash+0x3e>
	if( gCFLRuntimeClassTable[ CFLObjectGetType( obj ) ].hash )
    e8847d6c:	0008d697          	auipc	a3,0x8d
    e8847d70:	f4c68693          	addi	a3,a3,-180 # e88d4cb8 <gCFLRuntimeClassTable>
    e8847d74:	6294                	ld	a3,0(a3)
    e8847d76:	0716                	slli	a4,a4,0x5
    e8847d78:	9736                	add	a4,a4,a3
    e8847d7a:	01873303          	ld	t1,24(a4)
    e8847d7e:	00030363          	beqz	t1,e8847d84 <CFLHash+0x3a>
		hash = gCFLRuntimeClassTable[ CFLObjectGetType( obj ) ].hash( obj );
    e8847d82:	8302                	jr	t1
		hash = (CFLHashCode)(uintptr_t) obj;
    e8847d84:	2501                	sext.w	a0,a0
    e8847d86:	8082                	ret
	hash = 0;
    e8847d88:	4501                	li	a0,0
}
    e8847d8a:	8082                	ret

00000000e8847d8c <_CFLContainerHash>:
	return( CFLHash( inObject ) );
    e8847d8c:	fbfff06f          	j	e8847d4a <CFLHash>

00000000e8847d90 <CFLArrayGetTypeID>:
}
    e8847d90:	4505                	li	a0,1
    e8847d92:	8082                	ret

00000000e8847d94 <CFLArrayCreate>:
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e8847d94:	ed29                	bnez	a0,e8847dee <CFLArrayCreate+0x5a>
	require_action( outRef, exit, err = kParamErr );
    e8847d96:	ce21                	beqz	a2,e8847dee <CFLArrayCreate+0x5a>
{
    e8847d98:	7179                	addi	sp,sp,-48
	object = (CFLArray *) calloc( 1U, sizeof( CFLArray ) );
    e8847d9a:	04000513          	li	a0,64
{
    e8847d9e:	ec22                	sd	s0,24(sp)
    e8847da0:	f026                	sd	s1,32(sp)
    e8847da2:	f406                	sd	ra,40(sp)
    e8847da4:	84b2                	mv	s1,a2
    e8847da6:	e42e                	sd	a1,8(sp)
	object = (CFLArray *) calloc( 1U, sizeof( CFLArray ) );
    e8847da8:	ce7ff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e8847dac:	842a                	mv	s0,a0
	require_action( object, exit, err = kNoMemoryErr );
    e8847dae:	c521                	beqz	a0,e8847df6 <CFLArrayCreate+0x62>
	object->base.signature		= kCFLSignatureValid;
    e8847db0:	15600793          	li	a5,342
    e8847db4:	00f51023          	sh	a5,0(a0)
	object->callbacks	 		= inCallBacks ? *inCallBacks : kCFLArrayCallBacksNull;
    e8847db8:	65a2                	ld	a1,8(sp)
	object->base.retainCount	= 1;
    e8847dba:	4785                	li	a5,1
    e8847dbc:	c15c                	sw	a5,4(a0)
	object->callbacks	 		= inCallBacks ? *inCallBacks : kCFLArrayCallBacksNull;
    e8847dbe:	cd89                	beqz	a1,e8847dd8 <CFLArrayCreate+0x44>
    e8847dc0:	02800613          	li	a2,40
    e8847dc4:	0521                	addi	a0,a0,8
    e8847dc6:	aa2b80ef          	jal	ra,e8800068 <memcpy>
	*outRef = (CFLArrayRef) object;
    e8847dca:	e080                	sd	s0,0(s1)
	err = kNoErr;
    e8847dcc:	4501                	li	a0,0
}
    e8847dce:	70a2                	ld	ra,40(sp)
    e8847dd0:	6462                	ld	s0,24(sp)
    e8847dd2:	7482                	ld	s1,32(sp)
    e8847dd4:	6145                	addi	sp,sp,48
    e8847dd6:	8082                	ret
	object->callbacks	 		= inCallBacks ? *inCallBacks : kCFLArrayCallBacksNull;
    e8847dd8:	00052423          	sw	zero,8(a0)
    e8847ddc:	00053823          	sd	zero,16(a0)
    e8847de0:	00053c23          	sd	zero,24(a0)
    e8847de4:	02053023          	sd	zero,32(a0)
    e8847de8:	02053423          	sd	zero,40(a0)
    e8847dec:	bff9                	j	e8847dca <CFLArrayCreate+0x36>
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e8847dee:	7579                	lui	a0,0xffffe
    e8847df0:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e8847df4:	8082                	ret
	require_action( object, exit, err = kNoMemoryErr );
    e8847df6:	7579                	lui	a0,0xffffe
    e8847df8:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8847dfc:	bfc9                	j	e8847dce <CFLArrayCreate+0x3a>

00000000e8847dfe <CFLArrayGetCount>:
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847dfe:	c11d                	beqz	a0,e8847e24 <CFLArrayGetCount+0x26>
    e8847e00:	00054703          	lbu	a4,0(a0)
    e8847e04:	05600793          	li	a5,86
    e8847e08:	00f71e63          	bne	a4,a5,e8847e24 <CFLArrayGetCount+0x26>
    e8847e0c:	00154703          	lbu	a4,1(a0)
    e8847e10:	4785                	li	a5,1
    e8847e12:	00f71963          	bne	a4,a5,e8847e24 <CFLArrayGetCount+0x26>
	err = kNoErr;
    e8847e16:	4781                	li	a5,0
	if( outCount ) *outCount = object->count;
    e8847e18:	c581                	beqz	a1,e8847e20 <CFLArrayGetCount+0x22>
    e8847e1a:	591c                	lw	a5,48(a0)
    e8847e1c:	c19c                	sw	a5,0(a1)
	err = kNoErr;
    e8847e1e:	4781                	li	a5,0
}
    e8847e20:	853e                	mv	a0,a5
    e8847e22:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847e24:	77f9                	lui	a5,0xffffe
    e8847e26:	5ac78793          	addi	a5,a5,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8847e2a:	bfdd                	j	e8847e20 <CFLArrayGetCount+0x22>

00000000e8847e2c <CFLArrayGetValueAtIndex>:
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847e2c:	c915                	beqz	a0,e8847e60 <CFLArrayGetValueAtIndex+0x34>
    e8847e2e:	00054703          	lbu	a4,0(a0)
    e8847e32:	05600793          	li	a5,86
    e8847e36:	02f71563          	bne	a4,a5,e8847e60 <CFLArrayGetValueAtIndex+0x34>
    e8847e3a:	00154703          	lbu	a4,1(a0)
    e8847e3e:	4785                	li	a5,1
    e8847e40:	02f71063          	bne	a4,a5,e8847e60 <CFLArrayGetValueAtIndex+0x34>
	require_action_quiet( ( inIndex >= 0 ) && ( inIndex < object->count ), exit, err = kRangeErr );
    e8847e44:	0205c263          	bltz	a1,e8847e68 <CFLArrayGetValueAtIndex+0x3c>
    e8847e48:	591c                	lw	a5,48(a0)
    e8847e4a:	00f5df63          	bge	a1,a5,e8847e68 <CFLArrayGetValueAtIndex+0x3c>
	if( outValue ) *( (void **) outValue ) = object->storage[ inIndex ];
    e8847e4e:	4781                	li	a5,0
    e8847e50:	c611                	beqz	a2,e8847e5c <CFLArrayGetValueAtIndex+0x30>
    e8847e52:	7d1c                	ld	a5,56(a0)
    e8847e54:	66b7c78b          	lrd	a5,a5,a1,3
    e8847e58:	e21c                	sd	a5,0(a2)
    e8847e5a:	4781                	li	a5,0
}
    e8847e5c:	853e                	mv	a0,a5
    e8847e5e:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847e60:	77f9                	lui	a5,0xffffe
    e8847e62:	5ac78793          	addi	a5,a5,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8847e66:	bfdd                	j	e8847e5c <CFLArrayGetValueAtIndex+0x30>
	require_action_quiet( ( inIndex >= 0 ) && ( inIndex < object->count ), exit, err = kRangeErr );
    e8847e68:	77f9                	lui	a5,0xffffe
    e8847e6a:	5ca78793          	addi	a5,a5,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
    e8847e6e:	b7fd                	j	e8847e5c <CFLArrayGetValueAtIndex+0x30>

00000000e8847e70 <CFLArrayInsertValueAtIndex>:
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847e70:	cd55                	beqz	a0,e8847f2c <CFLArrayInsertValueAtIndex+0xbc>
{
    e8847e72:	7139                	addi	sp,sp,-64
    e8847e74:	e422                	sd	s0,8(sp)
    e8847e76:	fc06                	sd	ra,56(sp)
    e8847e78:	e826                	sd	s1,16(sp)
    e8847e7a:	ec4a                	sd	s2,24(sp)
    e8847e7c:	f04e                	sd	s3,32(sp)
    e8847e7e:	f452                	sd	s4,40(sp)
    e8847e80:	f856                	sd	s5,48(sp)
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847e82:	00054703          	lbu	a4,0(a0)
    e8847e86:	05600793          	li	a5,86
    e8847e8a:	842a                	mv	s0,a0
    e8847e8c:	0af71463          	bne	a4,a5,e8847f34 <CFLArrayInsertValueAtIndex+0xc4>
    e8847e90:	00154703          	lbu	a4,1(a0)
    e8847e94:	4785                	li	a5,1
    e8847e96:	08f71f63          	bne	a4,a5,e8847f34 <CFLArrayInsertValueAtIndex+0xc4>
	if( inIndex == kCFLIndexEnd ) inIndex = object->count;
    e8847e9a:	57fd                	li	a5,-1
    e8847e9c:	84ae                	mv	s1,a1
    e8847e9e:	8ab2                	mv	s5,a2
    e8847ea0:	00f59363          	bne	a1,a5,e8847ea6 <CFLArrayInsertValueAtIndex+0x36>
    e8847ea4:	5904                	lw	s1,48(a0)
	require_action( ( inIndex >= 0 ) && ( inIndex <= object->count ), exit, err = kRangeErr );
    e8847ea6:	0804cb63          	bltz	s1,e8847f3c <CFLArrayInsertValueAtIndex+0xcc>
    e8847eaa:	03042903          	lw	s2,48(s0)
    e8847eae:	08994763          	blt	s2,s1,e8847f3c <CFLArrayInsertValueAtIndex+0xcc>
	n = object->count + 1;
    e8847eb2:	00190a1b          	addiw	s4,s2,1
	newStorage = (void **) malloc( ( (size_t) n ) * sizeof( void * ) );
    e8847eb6:	003a1513          	slli	a0,s4,0x3
    e8847eba:	195330ef          	jal	ra,e887b84e <my_malloc>
	n = object->count + 1;
    e8847ebe:	8952                	mv	s2,s4
	newStorage = (void **) malloc( ( (size_t) n ) * sizeof( void * ) );
    e8847ec0:	89aa                	mv	s3,a0
	require_action( newStorage, exit, err = kNoMemoryErr );
    e8847ec2:	c149                	beqz	a0,e8847f44 <CFLArrayInsertValueAtIndex+0xd4>
	oldStorage = object->storage;
    e8847ec4:	7c08                	ld	a0,56(s0)
	for( i = 0; i < inIndex; ++i )
    e8847ec6:	4781                	li	a5,0
    e8847ec8:	0007871b          	sext.w	a4,a5
    e8847ecc:	04974363          	blt	a4,s1,e8847f12 <CFLArrayInsertValueAtIndex+0xa2>
	for( i = inIndex + 1; i < n; ++i )
    e8847ed0:	0014879b          	addiw	a5,s1,1
    e8847ed4:	00379713          	slli	a4,a5,0x3
		newStorage[ i ] = oldStorage[ i - 1 ];
    e8847ed8:	ff850693          	addi	a3,a0,-8
	for( i = inIndex + 1; i < n; ++i )
    e8847edc:	0547c163          	blt	a5,s4,e8847f1e <CFLArrayInsertValueAtIndex+0xae>
	if( oldStorage ) free( oldStorage );
    e8847ee0:	c119                	beqz	a0,e8847ee6 <CFLArrayInsertValueAtIndex+0x76>
    e8847ee2:	41e340ef          	jal	ra,e887c300 <eLIBs_free>
	if( object->callbacks.retain ) object->callbacks.retain( kCFLAllocatorDefault, inValue );
    e8847ee6:	681c                	ld	a5,16(s0)
	object->storage = newStorage;
    e8847ee8:	03343c23          	sd	s3,56(s0)
	if( object->callbacks.retain ) object->callbacks.retain( kCFLAllocatorDefault, inValue );
    e8847eec:	c781                	beqz	a5,e8847ef4 <CFLArrayInsertValueAtIndex+0x84>
    e8847eee:	85d6                	mv	a1,s5
    e8847ef0:	4501                	li	a0,0
    e8847ef2:	9782                	jalr	a5
	object->storage[ inIndex ] = (void *) inValue;
    e8847ef4:	7c1c                	ld	a5,56(s0)
	err = kNoErr;
    e8847ef6:	4501                	li	a0,0
	object->storage[ inIndex ] = (void *) inValue;
    e8847ef8:	6697da8b          	srd	s5,a5,s1,3
	object->count = n;
    e8847efc:	03242823          	sw	s2,48(s0)
}
    e8847f00:	70e2                	ld	ra,56(sp)
    e8847f02:	6422                	ld	s0,8(sp)
    e8847f04:	64c2                	ld	s1,16(sp)
    e8847f06:	6962                	ld	s2,24(sp)
    e8847f08:	7982                	ld	s3,32(sp)
    e8847f0a:	7a22                	ld	s4,40(sp)
    e8847f0c:	7ac2                	ld	s5,48(sp)
    e8847f0e:	6121                	addi	sp,sp,64
    e8847f10:	8082                	ret
		newStorage[ i ] = oldStorage[ i ];
    e8847f12:	66f5470b          	lrd	a4,a0,a5,3
    e8847f16:	66f9d70b          	srd	a4,s3,a5,3
	for( i = 0; i < inIndex; ++i )
    e8847f1a:	0785                	addi	a5,a5,1
    e8847f1c:	b775                	j	e8847ec8 <CFLArrayInsertValueAtIndex+0x58>
		newStorage[ i ] = oldStorage[ i - 1 ];
    e8847f1e:	60e6c60b          	lrd	a2,a3,a4,0
	for( i = inIndex + 1; i < n; ++i )
    e8847f22:	2785                	addiw	a5,a5,1
		newStorage[ i ] = oldStorage[ i - 1 ];
    e8847f24:	60e9d60b          	srd	a2,s3,a4,0
	for( i = inIndex + 1; i < n; ++i )
    e8847f28:	0721                	addi	a4,a4,8
    e8847f2a:	bf4d                	j	e8847edc <CFLArrayInsertValueAtIndex+0x6c>
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847f2c:	7579                	lui	a0,0xffffe
    e8847f2e:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8847f32:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847f34:	7579                	lui	a0,0xffffe
    e8847f36:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8847f3a:	b7d9                	j	e8847f00 <CFLArrayInsertValueAtIndex+0x90>
	require_action( ( inIndex >= 0 ) && ( inIndex <= object->count ), exit, err = kRangeErr );
    e8847f3c:	7579                	lui	a0,0xffffe
    e8847f3e:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
    e8847f42:	bf7d                	j	e8847f00 <CFLArrayInsertValueAtIndex+0x90>
	require_action( newStorage, exit, err = kNoMemoryErr );
    e8847f44:	7579                	lui	a0,0xffffe
    e8847f46:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8847f4a:	bf5d                	j	e8847f00 <CFLArrayInsertValueAtIndex+0x90>

00000000e8847f4c <CFLArrayAppendValue>:
	return( CFLArrayInsertValueAtIndex( inObject, kCFLIndexEnd, inValue ) );
    e8847f4c:	862e                	mv	a2,a1
    e8847f4e:	55fd                	li	a1,-1
    e8847f50:	f21ff06f          	j	e8847e70 <CFLArrayInsertValueAtIndex>

00000000e8847f54 <CFLArrayCreateCopy>:
{
    e8847f54:	7139                	addi	sp,sp,-64
    e8847f56:	fc06                	sd	ra,56(sp)
    e8847f58:	f852                	sd	s4,48(sp)
    e8847f5a:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8847f5e:	fd31590b          	sdd	s2,s3,(sp),2,4
	CFLArrayRef		newArray = NULL;
    e8847f62:	e402                	sd	zero,8(sp)
	require_action( CFLValidObjectType( inArray, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847f64:	c5ad                	beqz	a1,e8847fce <CFLArrayCreateCopy+0x7a>
    e8847f66:	0005c703          	lbu	a4,0(a1)
    e8847f6a:	05600793          	li	a5,86
    e8847f6e:	84ae                	mv	s1,a1
    e8847f70:	04f71f63          	bne	a4,a5,e8847fce <CFLArrayCreateCopy+0x7a>
    e8847f74:	0015c703          	lbu	a4,1(a1)
    e8847f78:	4785                	li	a5,1
    e8847f7a:	04f71a63          	bne	a4,a5,e8847fce <CFLArrayCreateCopy+0x7a>
    e8847f7e:	89b2                	mv	s3,a2
	err = CFLArrayCreate( inAllocator, &oldArray->callbacks, &newArray );
    e8847f80:	05a1                	addi	a1,a1,8
    e8847f82:	0030                	addi	a2,sp,8
    e8847f84:	e11ff0ef          	jal	ra,e8847d94 <CFLArrayCreate>
    e8847f88:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8847f8a:	ed01                	bnez	a0,e8847fa2 <CFLArrayCreateCopy+0x4e>
	n = oldArray->count;
    e8847f8c:	0304aa03          	lw	s4,48(s1)
	for( i = 0; i < n; ++i )
    e8847f90:	4901                	li	s2,0
    e8847f92:	0009079b          	sext.w	a5,s2
    e8847f96:	6522                	ld	a0,8(sp)
    e8847f98:	0347c263          	blt	a5,s4,e8847fbc <CFLArrayCreateCopy+0x68>
	*outArray = newArray;
    e8847f9c:	00a9b023          	sd	a0,0(s3)
	newArray = NULL;
    e8847fa0:	e402                	sd	zero,8(sp)
	if( newArray ) CFLRelease( newArray );
    e8847fa2:	6522                	ld	a0,8(sp)
    e8847fa4:	c119                	beqz	a0,e8847faa <CFLArrayCreateCopy+0x56>
    e8847fa6:	c71ff0ef          	jal	ra,e8847c16 <CFLRelease>
}
    e8847faa:	8522                	mv	a0,s0
    e8847fac:	70e2                	ld	ra,56(sp)
    e8847fae:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8847fb2:	7a42                	ld	s4,48(sp)
    e8847fb4:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8847fb8:	6121                	addi	sp,sp,64
    e8847fba:	8082                	ret
		err = CFLArrayAppendValue( newArray, oldArray->storage[ i ] );
    e8847fbc:	7c9c                	ld	a5,56(s1)
    e8847fbe:	6727c58b          	lrd	a1,a5,s2,3
    e8847fc2:	0905                	addi	s2,s2,1
    e8847fc4:	f89ff0ef          	jal	ra,e8847f4c <CFLArrayAppendValue>
		require_noerr( err, exit );
    e8847fc8:	d569                	beqz	a0,e8847f92 <CFLArrayCreateCopy+0x3e>
		err = CFLArrayAppendValue( newArray, oldArray->storage[ i ] );
    e8847fca:	842a                	mv	s0,a0
    e8847fcc:	bfd9                	j	e8847fa2 <CFLArrayCreateCopy+0x4e>
	require_action( CFLValidObjectType( inArray, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847fce:	7479                	lui	s0,0xffffe
    e8847fd0:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8847fd4:	b7f9                	j	e8847fa2 <CFLArrayCreateCopy+0x4e>

00000000e8847fd6 <CFLArrayRemoveValueAtIndex>:
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8847fd6:	cd5d                	beqz	a0,e8848094 <CFLArrayRemoveValueAtIndex+0xbe>
    e8847fd8:	00054703          	lbu	a4,0(a0)
    e8847fdc:	05600793          	li	a5,86
    e8847fe0:	0af71a63          	bne	a4,a5,e8848094 <CFLArrayRemoveValueAtIndex+0xbe>
    e8847fe4:	00154703          	lbu	a4,1(a0)
    e8847fe8:	4785                	li	a5,1
    e8847fea:	0af71563          	bne	a4,a5,e8848094 <CFLArrayRemoveValueAtIndex+0xbe>
	require_action( ( inIndex >= 0 ) && ( inIndex < object->count ), exit, err = kRangeErr );
    e8847fee:	0a05c763          	bltz	a1,e884809c <CFLArrayRemoveValueAtIndex+0xc6>
{
    e8847ff2:	715d                	addi	sp,sp,-80
    e8847ff4:	e486                	sd	ra,72(sp)
    e8847ff6:	e0a2                	sd	s0,64(sp)
    e8847ff8:	fc26                	sd	s1,56(sp)
    e8847ffa:	f84a                	sd	s2,48(sp)
    e8847ffc:	f44e                	sd	s3,40(sp)
    e8847ffe:	f052                	sd	s4,32(sp)
    e8848000:	ec56                	sd	s5,24(sp)
	require_action( ( inIndex >= 0 ) && ( inIndex < object->count ), exit, err = kRangeErr );
    e8848002:	03052a03          	lw	s4,48(a0)
    e8848006:	0945df63          	bge	a1,s4,e88480a4 <CFLArrayRemoveValueAtIndex+0xce>
    e884800a:	842a                	mv	s0,a0
	oldStorage = object->storage;
    e884800c:	03853983          	ld	s3,56(a0)
	n = object->count - 1;
    e8848010:	fffa051b          	addiw	a0,s4,-1
    e8848014:	84ae                	mv	s1,a1
    e8848016:	8aaa                	mv	s5,a0
	if( n > 0 )
    e8848018:	cd25                	beqz	a0,e8848090 <CFLArrayRemoveValueAtIndex+0xba>
		newStorage = (void **) malloc( ( (size_t) n ) * sizeof( void * ) );
    e884801a:	050e                	slli	a0,a0,0x3
    e884801c:	033330ef          	jal	ra,e887b84e <my_malloc>
    e8848020:	892a                	mv	s2,a0
		require_action( newStorage, exit, err = kNoMemoryErr );
    e8848022:	4781                	li	a5,0
    e8848024:	e911                	bnez	a0,e8848038 <CFLArrayRemoveValueAtIndex+0x62>
    e8848026:	7579                	lui	a0,0xffffe
    e8848028:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884802c:	a091                	j	e8848070 <CFLArrayRemoveValueAtIndex+0x9a>
			newStorage[ i ] = oldStorage[ i ];
    e884802e:	66f9c70b          	lrd	a4,s3,a5,3
    e8848032:	66f9570b          	srd	a4,s2,a5,3
		for( i = 0; i < inIndex; ++i )
    e8848036:	0785                	addi	a5,a5,1
    e8848038:	0007871b          	sext.w	a4,a5
    e884803c:	fe9749e3          	blt	a4,s1,e884802e <CFLArrayRemoveValueAtIndex+0x58>
		for( i = inIndex + 1; i <= n; ++i )
    e8848040:	0014879b          	addiw	a5,s1,1
    e8848044:	00379713          	slli	a4,a5,0x3
			newStorage[ i - 1 ] = oldStorage[ i ];
    e8848048:	ff890693          	addi	a3,s2,-8
		for( i = inIndex + 1; i <= n; ++i )
    e884804c:	02fa1b63          	bne	s4,a5,e8848082 <CFLArrayRemoveValueAtIndex+0xac>
	oldValue = oldStorage[ inIndex ];
    e8848050:	6699c58b          	lrd	a1,s3,s1,3
	free( oldStorage );
    e8848054:	854e                	mv	a0,s3
	oldValue = oldStorage[ inIndex ];
    e8848056:	e42e                	sd	a1,8(sp)
	free( oldStorage );
    e8848058:	2a8340ef          	jal	ra,e887c300 <eLIBs_free>
	object->storage = newStorage;
    e884805c:	03243c23          	sd	s2,56(s0)
	if( object->callbacks.release ) object->callbacks.release( kCFLAllocatorDefault, oldValue );
    e8848060:	6c1c                	ld	a5,24(s0)
	object->count = n;
    e8848062:	03542823          	sw	s5,48(s0)
	err = kNoErr;
    e8848066:	4501                	li	a0,0
	if( object->callbacks.release ) object->callbacks.release( kCFLAllocatorDefault, oldValue );
    e8848068:	c781                	beqz	a5,e8848070 <CFLArrayRemoveValueAtIndex+0x9a>
    e884806a:	65a2                	ld	a1,8(sp)
    e884806c:	9782                	jalr	a5
	err = kNoErr;
    e884806e:	4501                	li	a0,0
}
    e8848070:	60a6                	ld	ra,72(sp)
    e8848072:	6406                	ld	s0,64(sp)
    e8848074:	74e2                	ld	s1,56(sp)
    e8848076:	7942                	ld	s2,48(sp)
    e8848078:	79a2                	ld	s3,40(sp)
    e884807a:	7a02                	ld	s4,32(sp)
    e884807c:	6ae2                	ld	s5,24(sp)
    e884807e:	6161                	addi	sp,sp,80
    e8848080:	8082                	ret
			newStorage[ i - 1 ] = oldStorage[ i ];
    e8848082:	60e9c60b          	lrd	a2,s3,a4,0
		for( i = inIndex + 1; i <= n; ++i )
    e8848086:	2785                	addiw	a5,a5,1
			newStorage[ i - 1 ] = oldStorage[ i ];
    e8848088:	60e6d60b          	srd	a2,a3,a4,0
		for( i = inIndex + 1; i <= n; ++i )
    e884808c:	0721                	addi	a4,a4,8
    e884808e:	bf7d                	j	e884804c <CFLArrayRemoveValueAtIndex+0x76>
		newStorage = NULL;
    e8848090:	4901                	li	s2,0
    e8848092:	bf7d                	j	e8848050 <CFLArrayRemoveValueAtIndex+0x7a>
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e8848094:	7579                	lui	a0,0xffffe
    e8848096:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e884809a:	8082                	ret
	require_action( ( inIndex >= 0 ) && ( inIndex < object->count ), exit, err = kRangeErr );
    e884809c:	7579                	lui	a0,0xffffe
    e884809e:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
}
    e88480a2:	8082                	ret
	require_action( ( inIndex >= 0 ) && ( inIndex < object->count ), exit, err = kRangeErr );
    e88480a4:	7579                	lui	a0,0xffffe
    e88480a6:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
    e88480aa:	b7d9                	j	e8848070 <CFLArrayRemoveValueAtIndex+0x9a>

00000000e88480ac <CFLArrayRemoveAllValues>:
{
    e88480ac:	1101                	addi	sp,sp,-32
    e88480ae:	ec06                	sd	ra,24(sp)
    e88480b0:	e84a                	sd	s2,16(sp)
    e88480b2:	f891540b          	sdd	s0,s1,(sp),0,4
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e88480b6:	cd21                	beqz	a0,e884810e <CFLArrayRemoveAllValues+0x62>
    e88480b8:	00054703          	lbu	a4,0(a0)
    e88480bc:	05600793          	li	a5,86
    e88480c0:	04f71763          	bne	a4,a5,e884810e <CFLArrayRemoveAllValues+0x62>
    e88480c4:	00154703          	lbu	a4,1(a0)
    e88480c8:	4785                	li	a5,1
    e88480ca:	04f71263          	bne	a4,a5,e884810e <CFLArrayRemoveAllValues+0x62>
	n = object->count;
    e88480ce:	03052903          	lw	s2,48(a0)
    e88480d2:	84aa                	mv	s1,a0
	for( i = 0; i < n; ++i )
    e88480d4:	4401                	li	s0,0
    e88480d6:	0004079b          	sext.w	a5,s0
    e88480da:	7c88                	ld	a0,56(s1)
    e88480dc:	0327c163          	blt	a5,s2,e88480fe <CFLArrayRemoveAllValues+0x52>
	err = kNoErr;
    e88480e0:	4401                	li	s0,0
	if( object->storage )
    e88480e2:	c519                	beqz	a0,e88480f0 <CFLArrayRemoveAllValues+0x44>
		free( object->storage );
    e88480e4:	21c340ef          	jal	ra,e887c300 <eLIBs_free>
		object->storage = NULL;
    e88480e8:	0204bc23          	sd	zero,56(s1)
		object->count = 0;
    e88480ec:	0204a823          	sw	zero,48(s1)
}
    e88480f0:	8522                	mv	a0,s0
    e88480f2:	60e2                	ld	ra,24(sp)
    e88480f4:	f891440b          	ldd	s0,s1,(sp),0,4
    e88480f8:	6942                	ld	s2,16(sp)
    e88480fa:	6105                	addi	sp,sp,32
    e88480fc:	8082                	ret
		if( object->callbacks.release ) object->callbacks.release( kCFLAllocatorDefault, object->storage[ i ] );
    e88480fe:	6c9c                	ld	a5,24(s1)
    e8848100:	c789                	beqz	a5,e884810a <CFLArrayRemoveAllValues+0x5e>
    e8848102:	6685458b          	lrd	a1,a0,s0,3
    e8848106:	4501                	li	a0,0
    e8848108:	9782                	jalr	a5
	for( i = 0; i < n; ++i )
    e884810a:	0405                	addi	s0,s0,1
    e884810c:	b7e9                	j	e88480d6 <CFLArrayRemoveAllValues+0x2a>
	require_action( CFLValidObjectType( inObject, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e884810e:	7479                	lui	s0,0xffffe
    e8848110:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8848114:	bff1                	j	e88480f0 <CFLArrayRemoveAllValues+0x44>

00000000e8848116 <_CFLArrayFree>:
	err = CFLArrayRemoveAllValues( object );
    e8848116:	f97ff06f          	j	e88480ac <CFLArrayRemoveAllValues>

00000000e884811a <CFLArrayContainsValue>:
{
    e884811a:	7139                	addi	sp,sp,-64
    e884811c:	fc06                	sd	ra,56(sp)
    e884811e:	ec22                	sd	s0,24(sp)
    e8848120:	f026                	sd	s1,32(sp)
    e8848122:	f44a                	sd	s2,40(sp)
    e8848124:	f84e                	sd	s3,48(sp)
	require( CFLValidObjectType( inObject, kCFLTypeArray ), exit );
    e8848126:	e911                	bnez	a0,e884813a <CFLArrayContainsValue+0x20>
	return( false );
    e8848128:	4901                	li	s2,0
}
    e884812a:	70e2                	ld	ra,56(sp)
    e884812c:	6462                	ld	s0,24(sp)
    e884812e:	854a                	mv	a0,s2
    e8848130:	7482                	ld	s1,32(sp)
    e8848132:	7922                	ld	s2,40(sp)
    e8848134:	79c2                	ld	s3,48(sp)
    e8848136:	6121                	addi	sp,sp,64
    e8848138:	8082                	ret
	require( CFLValidObjectType( inObject, kCFLTypeArray ), exit );
    e884813a:	00054703          	lbu	a4,0(a0)
    e884813e:	05600793          	li	a5,86
    e8848142:	84aa                	mv	s1,a0
    e8848144:	fef712e3          	bne	a4,a5,e8848128 <CFLArrayContainsValue+0xe>
    e8848148:	00154903          	lbu	s2,1(a0)
    e884814c:	4785                	li	a5,1
    e884814e:	fcf91de3          	bne	s2,a5,e8848128 <CFLArrayContainsValue+0xe>
    e8848152:	842e                	mv	s0,a1
	require( ( inStart >= 0 ) && ( inStart <= inEnd ) && ( inEnd <= object->count ), exit );
    e8848154:	fc05cae3          	bltz	a1,e8848128 <CFLArrayContainsValue+0xe>
    e8848158:	fcb648e3          	blt	a2,a1,e8848128 <CFLArrayContainsValue+0xe>
    e884815c:	591c                	lw	a5,48(a0)
    e884815e:	00359993          	slli	s3,a1,0x3
    e8848162:	fcc7c3e3          	blt	a5,a2,e8848128 <CFLArrayContainsValue+0xe>
	for( i = inStart; i < inEnd; ++i )
    e8848166:	fcc401e3          	beq	s0,a2,e8848128 <CFLArrayContainsValue+0xe>
		x = object->storage[ i ];
    e884816a:	7c9c                	ld	a5,56(s1)
    e884816c:	6137c50b          	lrd	a0,a5,s3,0
		if( x == inValue )
    e8848170:	fad50de3          	beq	a0,a3,e884812a <CFLArrayContainsValue+0x10>
		if( object->callbacks.equal && object->callbacks.equal( x, inValue ) )
    e8848174:	749c                	ld	a5,40(s1)
    e8848176:	e781                	bnez	a5,e884817e <CFLArrayContainsValue+0x64>
	for( i = inStart; i < inEnd; ++i )
    e8848178:	2405                	addiw	s0,s0,1
    e884817a:	09a1                	addi	s3,s3,8
    e884817c:	b7ed                	j	e8848166 <CFLArrayContainsValue+0x4c>
		if( object->callbacks.equal && object->callbacks.equal( x, inValue ) )
    e884817e:	85b6                	mv	a1,a3
    e8848180:	e432                	sd	a2,8(sp)
    e8848182:	e036                	sd	a3,0(sp)
    e8848184:	9782                	jalr	a5
    e8848186:	f8c1468b          	ldd	a3,a2,(sp),0,4
    e884818a:	d57d                	beqz	a0,e8848178 <CFLArrayContainsValue+0x5e>
    e884818c:	bf79                	j	e884812a <CFLArrayContainsValue+0x10>

00000000e884818e <CFLArrayApplyFunction>:
	require_action( CFLValidObjectType( inArray, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e884818e:	c13d                	beqz	a0,e88481f4 <CFLArrayApplyFunction+0x66>
    e8848190:	00054703          	lbu	a4,0(a0)
    e8848194:	05600793          	li	a5,86
    e8848198:	04f71e63          	bne	a4,a5,e88481f4 <CFLArrayApplyFunction+0x66>
    e884819c:	00154703          	lbu	a4,1(a0)
    e88481a0:	4785                	li	a5,1
    e88481a2:	04f71963          	bne	a4,a5,e88481f4 <CFLArrayApplyFunction+0x66>
{
    e88481a6:	7139                	addi	sp,sp,-64
    e88481a8:	ec4a                	sd	s2,24(sp)
    e88481aa:	0005891b          	sext.w	s2,a1
	n = inRange.location + inRange.length;
    e88481ae:	fe05a58b          	ext	a1,a1,63,32
{
    e88481b2:	e422                	sd	s0,8(sp)
    e88481b4:	e826                	sd	s1,16(sp)
    e88481b6:	f04e                	sd	s3,32(sp)
    e88481b8:	f452                	sd	s4,40(sp)
    e88481ba:	f856                	sd	s5,48(sp)
    e88481bc:	fc06                	sd	ra,56(sp)
    e88481be:	8ab6                	mv	s5,a3
    e88481c0:	8a32                	mv	s4,a2
    e88481c2:	84aa                	mv	s1,a0
	n = inRange.location + inRange.length;
    e88481c4:	0125843b          	addw	s0,a1,s2
	for( i = inRange.location; i < n; ++i )
    e88481c8:	00391993          	slli	s3,s2,0x3
    e88481cc:	00894c63          	blt	s2,s0,e88481e4 <CFLArrayApplyFunction+0x56>
}
    e88481d0:	70e2                	ld	ra,56(sp)
    e88481d2:	6422                	ld	s0,8(sp)
    e88481d4:	64c2                	ld	s1,16(sp)
    e88481d6:	6962                	ld	s2,24(sp)
    e88481d8:	7982                	ld	s3,32(sp)
    e88481da:	7a22                	ld	s4,40(sp)
    e88481dc:	7ac2                	ld	s5,48(sp)
	err = kNoErr;
    e88481de:	4501                	li	a0,0
}
    e88481e0:	6121                	addi	sp,sp,64
    e88481e2:	8082                	ret
		inApplier( obj->storage[ i ], inContext );
    e88481e4:	7c9c                	ld	a5,56(s1)
    e88481e6:	85d6                	mv	a1,s5
	for( i = inRange.location; i < n; ++i )
    e88481e8:	2905                	addiw	s2,s2,1
		inApplier( obj->storage[ i ], inContext );
    e88481ea:	6137c50b          	lrd	a0,a5,s3,0
    e88481ee:	09a1                	addi	s3,s3,8
    e88481f0:	9a02                	jalr	s4
	for( i = inRange.location; i < n; ++i )
    e88481f2:	bfe9                	j	e88481cc <CFLArrayApplyFunction+0x3e>
	require_action( CFLValidObjectType( inArray, kCFLTypeArray ), exit, err = kBadReferenceErr );
    e88481f4:	7579                	lui	a0,0xffffe
    e88481f6:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e88481fa:	8082                	ret

00000000e88481fc <CFLBooleanGetTypeID>:
}
    e88481fc:	4509                	li	a0,2
    e88481fe:	8082                	ret

00000000e8848200 <CFLDataGetTypeID>:
}
    e8848200:	450d                	li	a0,3
    e8848202:	8082                	ret

00000000e8848204 <CFLDataCreate>:
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e8848204:	e151                	bnez	a0,e8848288 <CFLDataCreate+0x84>
	require_action( outRef, exit, err = kParamErr );
    e8848206:	c2c9                	beqz	a3,e8848288 <CFLDataCreate+0x84>
{
    e8848208:	7179                	addi	sp,sp,-48
	object = (CFLData *) calloc( 1U, sizeof( CFLData ) );
    e884820a:	03000513          	li	a0,48
{
    e884820e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8848212:	f052                	sd	s4,32(sp)
    e8848214:	f891540b          	sdd	s0,s1,(sp),0,4
    e8848218:	f406                	sd	ra,40(sp)
    e884821a:	8a36                	mv	s4,a3
    e884821c:	8932                	mv	s2,a2
    e884821e:	89ae                	mv	s3,a1
	object = (CFLData *) calloc( 1U, sizeof( CFLData ) );
    e8848220:	86fff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e8848224:	84aa                	mv	s1,a0
	require_action( object, exit, err = kNoMemoryErr );
    e8848226:	c925                	beqz	a0,e8848296 <CFLDataCreate+0x92>
	object->base.signature		= kCFLSignatureValid;
    e8848228:	35600793          	li	a5,854
    e884822c:	00f51023          	sh	a5,0(a0)
	object->base.retainCount	= 1;
    e8848230:	4785                	li	a5,1
    e8848232:	c15c                	sw	a5,4(a0)
	n = CFLDataRoundUpSize( inSize );
    e8848234:	0ff00793          	li	a5,255
    e8848238:	10000413          	li	s0,256
    e884823c:	0127fc63          	bgeu	a5,s2,e8848254 <CFLDataCreate+0x50>
    e8848240:	6405                	lui	s0,0x1
    e8848242:	00896963          	bltu	s2,s0,e8848254 <CFLDataCreate+0x50>
    e8848246:	6421                	lui	s0,0x8
    e8848248:	147d                	addi	s0,s0,-1
    e884824a:	1ffff7b7          	lui	a5,0x1ffff
    e884824e:	944a                	add	s0,s0,s2
    e8848250:	078e                	slli	a5,a5,0x3
    e8848252:	8c7d                	and	s0,s0,a5
	object->data = (uint8_t *) calloc( 1U, n );
    e8848254:	8522                	mv	a0,s0
    e8848256:	839ff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e884825a:	e488                	sd	a0,8(s1)
	require_action( object->data, exit, err = kNoMemoryErr );
    e884825c:	c915                	beqz	a0,e8848290 <CFLDataCreate+0x8c>
	object->reservedSize 		= n;
    e884825e:	fa84d90b          	sdd	s2,s0,(s1),1,4
	object->bytesDeallocator	= kCFLAllocatorDefault;
    e8848262:	0204b023          	sd	zero,32(s1)
	if( inData ) memcpy( object->data, inData, inSize );
    e8848266:	00098663          	beqz	s3,e8848272 <CFLDataCreate+0x6e>
    e884826a:	864a                	mv	a2,s2
    e884826c:	85ce                	mv	a1,s3
    e884826e:	132340ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	*outRef = (CFLDataRef) object;
    e8848272:	009a3023          	sd	s1,0(s4)
	err = kNoErr;
    e8848276:	4501                	li	a0,0
}
    e8848278:	70a2                	ld	ra,40(sp)
    e884827a:	f891440b          	ldd	s0,s1,(sp),0,4
    e884827e:	7a02                	ld	s4,32(sp)
    e8848280:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8848284:	6145                	addi	sp,sp,48
    e8848286:	8082                	ret
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e8848288:	7579                	lui	a0,0xffffe
    e884828a:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e884828e:	8082                	ret
	if( object ) CFLRelease( (CFLDataRef) object );
    e8848290:	8526                	mv	a0,s1
    e8848292:	985ff0ef          	jal	ra,e8847c16 <CFLRelease>
    e8848296:	7579                	lui	a0,0xffffe
    e8848298:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	return( err );
    e884829c:	bff1                	j	e8848278 <CFLDataCreate+0x74>

00000000e884829e <CFLDataCreateNoCopy>:
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e884829e:	ed21                	bnez	a0,e88482f6 <CFLDataCreateNoCopy+0x58>
{
    e88482a0:	7179                	addi	sp,sp,-48
    e88482a2:	f052                	sd	s4,32(sp)
    e88482a4:	f406                	sd	ra,40(sp)
    e88482a6:	f891540b          	sdd	s0,s1,(sp),0,4
    e88482aa:	fb31590b          	sdd	s2,s3,(sp),1,4
	require_action( ( inBytesDeallocator == kCFLAllocatorMalloc ) || ( inBytesDeallocator == kCFLAllocatorNull ), 
    e88482ae:	00268793          	addi	a5,a3,2
    e88482b2:	4a05                	li	s4,1
    e88482b4:	04fa6563          	bltu	s4,a5,e88482fe <CFLDataCreateNoCopy+0x60>
	require_action( outRef, exit, err = kParamErr );
    e88482b8:	c339                	beqz	a4,e88482fe <CFLDataCreateNoCopy+0x60>
	object = (CFLData *) calloc( 1U, sizeof( CFLData ) );
    e88482ba:	03000513          	li	a0,48
    e88482be:	843a                	mv	s0,a4
    e88482c0:	84b6                	mv	s1,a3
    e88482c2:	8932                	mv	s2,a2
    e88482c4:	89ae                	mv	s3,a1
    e88482c6:	fc8ff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
	require_action( object, exit, err = kNoMemoryErr );
    e88482ca:	cd15                	beqz	a0,e8848306 <CFLDataCreateNoCopy+0x68>
	object->base.signature		= kCFLSignatureValid;
    e88482cc:	35600793          	li	a5,854
    e88482d0:	00f51023          	sh	a5,0(a0)
	object->base.retainCount	= 1;
    e88482d4:	01452223          	sw	s4,4(a0)
	object->data				= (uint8_t *) inData;
    e88482d8:	01353423          	sd	s3,8(a0)
	object->reservedSize		= inSize;
    e88482dc:	fb25590b          	sdd	s2,s2,(a0),1,4
	object->bytesDeallocator	= inBytesDeallocator;
    e88482e0:	f104                	sd	s1,32(a0)
	*outRef = (CFLDataRef) object;
    e88482e2:	e008                	sd	a0,0(s0)
	err = kNoErr;
    e88482e4:	4501                	li	a0,0
}
    e88482e6:	70a2                	ld	ra,40(sp)
    e88482e8:	f891440b          	ldd	s0,s1,(sp),0,4
    e88482ec:	7a02                	ld	s4,32(sp)
    e88482ee:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88482f2:	6145                	addi	sp,sp,48
    e88482f4:	8082                	ret
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e88482f6:	7579                	lui	a0,0xffffe
    e88482f8:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e88482fc:	8082                	ret
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e88482fe:	7579                	lui	a0,0xffffe
    e8848300:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8848304:	b7cd                	j	e88482e6 <CFLDataCreateNoCopy+0x48>
	require_action( object, exit, err = kNoMemoryErr );
    e8848306:	7579                	lui	a0,0xffffe
    e8848308:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884830c:	bfe9                	j	e88482e6 <CFLDataCreateNoCopy+0x48>

00000000e884830e <CFLDataGetDataPtr>:
	require_action( CFLValidObjectType( inObject, kCFLTypeData ), exit, err = kBadReferenceErr );
    e884830e:	c515                	beqz	a0,e884833a <CFLDataGetDataPtr+0x2c>
    e8848310:	00054703          	lbu	a4,0(a0)
    e8848314:	05600793          	li	a5,86
    e8848318:	02f71163          	bne	a4,a5,e884833a <CFLDataGetDataPtr+0x2c>
    e884831c:	00154703          	lbu	a4,1(a0)
    e8848320:	478d                	li	a5,3
    e8848322:	00f71c63          	bne	a4,a5,e884833a <CFLDataGetDataPtr+0x2c>
	if( outDataPtr )	*( (void **) outDataPtr )	= object->data;
    e8848326:	c199                	beqz	a1,e884832c <CFLDataGetDataPtr+0x1e>
    e8848328:	651c                	ld	a5,8(a0)
    e884832a:	e19c                	sd	a5,0(a1)
	err = kNoErr;
    e884832c:	4781                	li	a5,0
	if( outSize )		*outSize					= object->usedSize;
    e884832e:	c601                	beqz	a2,e8848336 <CFLDataGetDataPtr+0x28>
    e8848330:	691c                	ld	a5,16(a0)
    e8848332:	e21c                	sd	a5,0(a2)
	err = kNoErr;
    e8848334:	4781                	li	a5,0
}
    e8848336:	853e                	mv	a0,a5
    e8848338:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeData ), exit, err = kBadReferenceErr );
    e884833a:	77f9                	lui	a5,0xffffe
    e884833c:	5ac78793          	addi	a5,a5,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8848340:	bfdd                	j	e8848336 <CFLDataGetDataPtr+0x28>

00000000e8848342 <CFLDateGetTypeID>:
}
    e8848342:	4511                	li	a0,4
    e8848344:	8082                	ret

00000000e8848346 <CFLDateGetDate>:
	require_action( CFLValidObjectType( inObject, kCFLTypeDate ), exit, err = kBadReferenceErr );
    e8848346:	c51d                	beqz	a0,e8848374 <CFLDateGetDate+0x2e>
    e8848348:	00054703          	lbu	a4,0(a0)
    e884834c:	05600793          	li	a5,86
    e8848350:	02f71263          	bne	a4,a5,e8848374 <CFLDateGetDate+0x2e>
    e8848354:	00154703          	lbu	a4,1(a0)
    e8848358:	4791                	li	a5,4
    e884835a:	00f71d63          	bne	a4,a5,e8848374 <CFLDateGetDate+0x2e>
	err = kNoErr;
    e884835e:	4781                	li	a5,0
	if( outDate ) *outDate = object->date;
    e8848360:	c981                	beqz	a1,e8848370 <CFLDateGetDate+0x2a>
    e8848362:	6518                	ld	a4,8(a0)
    e8848364:	e198                	sd	a4,0(a1)
    e8848366:	6918                	ld	a4,16(a0)
    e8848368:	e598                	sd	a4,8(a1)
    e884836a:	6d1c                	ld	a5,24(a0)
    e884836c:	e99c                	sd	a5,16(a1)
    e884836e:	4781                	li	a5,0
}
    e8848370:	853e                	mv	a0,a5
    e8848372:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeDate ), exit, err = kBadReferenceErr );
    e8848374:	77f9                	lui	a5,0xffffe
    e8848376:	5ac78793          	addi	a5,a5,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e884837a:	bfdd                	j	e8848370 <CFLDateGetDate+0x2a>

00000000e884837c <CFLDateSetDate>:
	require_action( CFLValidObjectType( inObject, kCFLTypeDate ), exit, err = kBadReferenceErr );
    e884837c:	c50d                	beqz	a0,e88483a6 <CFLDateSetDate+0x2a>
    e884837e:	00054703          	lbu	a4,0(a0)
    e8848382:	05600793          	li	a5,86
    e8848386:	02f71063          	bne	a4,a5,e88483a6 <CFLDateSetDate+0x2a>
    e884838a:	00154703          	lbu	a4,1(a0)
    e884838e:	4791                	li	a5,4
    e8848390:	00f71b63          	bne	a4,a5,e88483a6 <CFLDateSetDate+0x2a>
	require_action( inDate, exit, err = kParamErr );
    e8848394:	cd89                	beqz	a1,e88483ae <CFLDateSetDate+0x32>
	object->date = *inDate;
    e8848396:	6198                	ld	a4,0(a1)
    e8848398:	e518                	sd	a4,8(a0)
    e884839a:	6598                	ld	a4,8(a1)
    e884839c:	e918                	sd	a4,16(a0)
    e884839e:	6998                	ld	a4,16(a1)
    e88483a0:	ed18                	sd	a4,24(a0)
    e88483a2:	4501                	li	a0,0
    e88483a4:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeDate ), exit, err = kBadReferenceErr );
    e88483a6:	7579                	lui	a0,0xffffe
    e88483a8:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e88483ac:	8082                	ret
	require_action( inDate, exit, err = kParamErr );
    e88483ae:	7579                	lui	a0,0xffffe
    e88483b0:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e88483b4:	8082                	ret

00000000e88483b6 <CFLDateCreate>:
{
    e88483b6:	7179                	addi	sp,sp,-48
    e88483b8:	f406                	sd	ra,40(sp)
    e88483ba:	f04a                	sd	s2,32(sp)
    e88483bc:	fa91540b          	sdd	s0,s1,(sp),1,4
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e88483c0:	ed1d                	bnez	a0,e88483fe <CFLDateCreate+0x48>
	require_action( inDate, exit, err = kParamErr );
    e88483c2:	cd95                	beqz	a1,e88483fe <CFLDateCreate+0x48>
	require_action( outRef, exit, err = kParamErr );
    e88483c4:	ce0d                	beqz	a2,e88483fe <CFLDateCreate+0x48>
	object = (CFLDate *) calloc( 1U, sizeof( CFLDate ) );
    e88483c6:	02000513          	li	a0,32
    e88483ca:	8932                	mv	s2,a2
    e88483cc:	e42e                	sd	a1,8(sp)
    e88483ce:	ec0ff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e88483d2:	84aa                	mv	s1,a0
	require_action( object, exit, err = kNoMemoryErr );
    e88483d4:	c90d                	beqz	a0,e8848406 <CFLDateCreate+0x50>
	object->base.signature		= kCFLSignatureValid;
    e88483d6:	45600793          	li	a5,1110
	err = CFLDateSetDate( (CFLDateRef) object, inDate );
    e88483da:	65a2                	ld	a1,8(sp)
	object->base.signature		= kCFLSignatureValid;
    e88483dc:	00f51023          	sh	a5,0(a0)
	object->base.retainCount	= 1;
    e88483e0:	4785                	li	a5,1
    e88483e2:	c15c                	sw	a5,4(a0)
	err = CFLDateSetDate( (CFLDateRef) object, inDate );
    e88483e4:	f99ff0ef          	jal	ra,e884837c <CFLDateSetDate>
    e88483e8:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88483ea:	e115                	bnez	a0,e884840e <CFLDateCreate+0x58>
	*outRef = (CFLDateRef) object;
    e88483ec:	00993023          	sd	s1,0(s2)
}
    e88483f0:	8522                	mv	a0,s0
    e88483f2:	70a2                	ld	ra,40(sp)
    e88483f4:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88483f8:	7902                	ld	s2,32(sp)
    e88483fa:	6145                	addi	sp,sp,48
    e88483fc:	8082                	ret
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e88483fe:	7479                	lui	s0,0xffffe
    e8848400:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8848404:	b7f5                	j	e88483f0 <CFLDateCreate+0x3a>
	require_action( object, exit, err = kNoMemoryErr );
    e8848406:	7479                	lui	s0,0xffffe
    e8848408:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884840c:	b7d5                	j	e88483f0 <CFLDateCreate+0x3a>
	if( object ) CFLRelease( (CFLDateRef) object );
    e884840e:	8526                	mv	a0,s1
    e8848410:	807ff0ef          	jal	ra,e8847c16 <CFLRelease>
	return( err );
    e8848414:	bff1                	j	e88483f0 <CFLDateCreate+0x3a>

00000000e8848416 <CFLDictionaryGetTypeID>:
}
    e8848416:	4515                	li	a0,5
    e8848418:	8082                	ret

00000000e884841a <CFLDictionaryCreate>:
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e884841a:	ed71                	bnez	a0,e88484f6 <CFLDictionaryCreate+0xdc>
{
    e884841c:	7139                	addi	sp,sp,-64
    e884841e:	f44a                	sd	s2,40(sp)
    e8848420:	fc06                	sd	ra,56(sp)
    e8848422:	ec22                	sd	s0,24(sp)
    e8848424:	f026                	sd	s1,32(sp)
    e8848426:	f84e                	sd	s3,48(sp)
    e8848428:	893a                	mv	s2,a4
	require_action( outRef, exit, err = kParamErr );
    e884842a:	cb71                	beqz	a4,e88484fe <CFLDictionaryCreate+0xe4>
    e884842c:	84ae                	mv	s1,a1
    e884842e:	89b6                	mv	s3,a3
	if( inCapacity <= 0 )	inCapacity = 101;	// Default to a reasonable prime number so modular hashes work well.
    e8848430:	85b2                	mv	a1,a2
    e8848432:	02905863          	blez	s1,e8848462 <CFLDictionaryCreate+0x48>

static CFLIndex	_CFLNextPrime( CFLIndex inValue )
{
	CFLIndex		i;
	
	if( inValue < 2 )
    e8848436:	4785                	li	a5,1
    e8848438:	02f48763          	beq	s1,a5,e8848466 <CFLDictionaryCreate+0x4c>
	{
		inValue = 1;
	}
	else if( inValue < 4 )
    e884843c:	478d                	li	a5,3
    e884843e:	0897d263          	bge	a5,s1,e88484c2 <CFLDictionaryCreate+0xa8>
	{
		inValue = 3;
	}
	else
	{
		if( ( inValue % 2 ) == 0 )
    e8848442:	0014f793          	andi	a5,s1,1
    e8848446:	e391                	bnez	a5,e884844a <CFLDictionaryCreate+0x30>
		{
			inValue += 1;
    e8848448:	2485                	addiw	s1,s1,1
		}
		for( ;; )
		{
			i = 3;
    e884844a:	478d                	li	a5,3
			for( ;; )
			{
				if( ( inValue % i ) == 0 ) break;
    e884844c:	02f4e73b          	remw	a4,s1,a5
    e8848450:	c719                	beqz	a4,e884845e <CFLDictionaryCreate+0x44>
				if( ( inValue / i ) < i )  goto exit;
    e8848452:	02f4c73b          	divw	a4,s1,a5
    e8848456:	00f74863          	blt	a4,a5,e8848466 <CFLDictionaryCreate+0x4c>
				i += 2;
    e884845a:	2789                	addiw	a5,a5,2
			for( ;; )
    e884845c:	bfc5                	j	e884844c <CFLDictionaryCreate+0x32>
			}
			inValue += 2;
    e884845e:	2489                	addiw	s1,s1,2
		for( ;; )
    e8848460:	b7ed                	j	e884844a <CFLDictionaryCreate+0x30>
	if( inCapacity <= 0 )	inCapacity = 101;	// Default to a reasonable prime number so modular hashes work well.
    e8848462:	06500493          	li	s1,101
	object = (CFLDictionary *) calloc( 1U, sizeof( CFLDictionary ) );
    e8848466:	07000513          	li	a0,112
    e884846a:	e42e                	sd	a1,8(sp)
    e884846c:	e22ff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e8848470:	842a                	mv	s0,a0
	require_action( object, exit, err = kNoMemoryErr );
    e8848472:	cd49                	beqz	a0,e884850c <CFLDictionaryCreate+0xf2>
	object->base.signature		= kCFLSignatureValid;
    e8848474:	55600793          	li	a5,1366
    e8848478:	00f51023          	sh	a5,0(a0)
	object->keyCallBacks 		= inKeyCallBacks   ? *inKeyCallBacks   : kCFLDictionaryKeyCallBacksNull;
    e884847c:	65a2                	ld	a1,8(sp)
	object->base.retainCount	= 1;
    e884847e:	4785                	li	a5,1
    e8848480:	c15c                	sw	a5,4(a0)
	object->keyCallBacks 		= inKeyCallBacks   ? *inKeyCallBacks   : kCFLDictionaryKeyCallBacksNull;
    e8848482:	c1b1                	beqz	a1,e88484c6 <CFLDictionaryCreate+0xac>
    e8848484:	03000613          	li	a2,48
    e8848488:	0521                	addi	a0,a0,8
    e884848a:	bdfb70ef          	jal	ra,e8800068 <memcpy>
	object->valueCallBacks 		= inValueCallBacks ? *inValueCallBacks : kCFLDictionaryValueCallBacksNull;
    e884848e:	04098963          	beqz	s3,e88484e0 <CFLDictionaryCreate+0xc6>
    e8848492:	02800613          	li	a2,40
    e8848496:	85ce                	mv	a1,s3
    e8848498:	03840513          	addi	a0,s0,56
    e884849c:	bcdb70ef          	jal	ra,e8800068 <memcpy>
	object->buckets = (CFLDictionaryNode **) calloc( 1U, ( (size_t) inCapacity ) * sizeof( CFLDictionaryNode * ) );
    e88484a0:	00349513          	slli	a0,s1,0x3
    e88484a4:	deaff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e88484a8:	f428                	sd	a0,104(s0)
	require_action( object->buckets, exit, err = kNoMemoryErr );
    e88484aa:	cd31                	beqz	a0,e8848506 <CFLDictionaryCreate+0xec>
	object->bucketCount = inCapacity;
    e88484ac:	d064                	sw	s1,100(s0)
	err = kNoErr;
    e88484ae:	4501                	li	a0,0
	*outRef = (CFLDictionaryRef) object;
    e88484b0:	00893023          	sd	s0,0(s2)
}
    e88484b4:	70e2                	ld	ra,56(sp)
    e88484b6:	6462                	ld	s0,24(sp)
    e88484b8:	7482                	ld	s1,32(sp)
    e88484ba:	7922                	ld	s2,40(sp)
    e88484bc:	79c2                	ld	s3,48(sp)
    e88484be:	6121                	addi	sp,sp,64
    e88484c0:	8082                	ret
		inValue = 3;
    e88484c2:	448d                	li	s1,3
    e88484c4:	b74d                	j	e8848466 <CFLDictionaryCreate+0x4c>
	object->keyCallBacks 		= inKeyCallBacks   ? *inKeyCallBacks   : kCFLDictionaryKeyCallBacksNull;
    e88484c6:	00052423          	sw	zero,8(a0)
    e88484ca:	00053823          	sd	zero,16(a0)
    e88484ce:	00053c23          	sd	zero,24(a0)
    e88484d2:	02053023          	sd	zero,32(a0)
    e88484d6:	02053423          	sd	zero,40(a0)
    e88484da:	02053823          	sd	zero,48(a0)
    e88484de:	bf45                	j	e884848e <CFLDictionaryCreate+0x74>
	object->valueCallBacks 		= inValueCallBacks ? *inValueCallBacks : kCFLDictionaryValueCallBacksNull;
    e88484e0:	02042c23          	sw	zero,56(s0)
    e88484e4:	04043023          	sd	zero,64(s0)
    e88484e8:	04043423          	sd	zero,72(s0)
    e88484ec:	04043823          	sd	zero,80(s0)
    e88484f0:	04043c23          	sd	zero,88(s0)
    e88484f4:	b775                	j	e88484a0 <CFLDictionaryCreate+0x86>
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e88484f6:	7579                	lui	a0,0xffffe
    e88484f8:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e88484fc:	8082                	ret
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e88484fe:	7579                	lui	a0,0xffffe
    e8848500:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8848504:	bf45                	j	e88484b4 <CFLDictionaryCreate+0x9a>
	if( object ) CFLRelease( (CFLDictionaryRef) object );
    e8848506:	8522                	mv	a0,s0
    e8848508:	f0eff0ef          	jal	ra,e8847c16 <CFLRelease>
    e884850c:	7579                	lui	a0,0xffffe
    e884850e:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	return( err );
    e8848512:	b74d                	j	e88484b4 <CFLDictionaryCreate+0x9a>

00000000e8848514 <CFLDictionaryGetCount>:
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848514:	c11d                	beqz	a0,e884853a <CFLDictionaryGetCount+0x26>
    e8848516:	00054703          	lbu	a4,0(a0)
    e884851a:	05600793          	li	a5,86
    e884851e:	00f71e63          	bne	a4,a5,e884853a <CFLDictionaryGetCount+0x26>
    e8848522:	00154703          	lbu	a4,1(a0)
    e8848526:	4795                	li	a5,5
    e8848528:	00f71963          	bne	a4,a5,e884853a <CFLDictionaryGetCount+0x26>
	err = kNoErr;
    e884852c:	4781                	li	a5,0
	if( outCount ) *outCount = object->count;
    e884852e:	c581                	beqz	a1,e8848536 <CFLDictionaryGetCount+0x22>
    e8848530:	513c                	lw	a5,96(a0)
    e8848532:	c19c                	sw	a5,0(a1)
	err = kNoErr;
    e8848534:	4781                	li	a5,0
}
    e8848536:	853e                	mv	a0,a5
    e8848538:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e884853a:	77f9                	lui	a5,0xffffe
    e884853c:	5ac78793          	addi	a5,a5,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8848540:	bfdd                	j	e8848536 <CFLDictionaryGetCount+0x22>

00000000e8848542 <CFLDictionaryGetValue>:
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848542:	cd0d                	beqz	a0,e884857c <CFLDictionaryGetValue+0x3a>
    e8848544:	00054683          	lbu	a3,0(a0)
    e8848548:	05600713          	li	a4,86
    e884854c:	02e69863          	bne	a3,a4,e884857c <CFLDictionaryGetValue+0x3a>
    e8848550:	00154703          	lbu	a4,1(a0)
    e8848554:	4795                	li	a5,5
    e8848556:	02f71363          	bne	a4,a5,e884857c <CFLDictionaryGetValue+0x3a>
{
    e884855a:	1101                	addi	sp,sp,-32
    e884855c:	e822                	sd	s0,16(sp)
    e884855e:	8432                	mv	s0,a2
	err = _CFLDictionaryFindKey( object, inKey, &node );
    e8848560:	0030                	addi	a2,sp,8
{
    e8848562:	ec06                	sd	ra,24(sp)
	err = _CFLDictionaryFindKey( object, inKey, &node );
    e8848564:	b68ff0ef          	jal	ra,e88478cc <_CFLDictionaryFindKey>
	if( err == kNoErr )
    e8848568:	e511                	bnez	a0,e8848574 <CFLDictionaryGetValue+0x32>
		if( outValue ) *( (const void **) outValue ) = ( *node )->value;
    e884856a:	c409                	beqz	s0,e8848574 <CFLDictionaryGetValue+0x32>
    e884856c:	67a2                	ld	a5,8(sp)
    e884856e:	639c                	ld	a5,0(a5)
    e8848570:	6b9c                	ld	a5,16(a5)
    e8848572:	e01c                	sd	a5,0(s0)
}
    e8848574:	60e2                	ld	ra,24(sp)
    e8848576:	6442                	ld	s0,16(sp)
    e8848578:	6105                	addi	sp,sp,32
    e884857a:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e884857c:	7579                	lui	a0,0xffffe
    e884857e:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8848582:	8082                	ret

00000000e8848584 <_CFLDictionaryEqual>:
	if( l->count != r->count )
    e8848584:	5138                	lw	a4,96(a0)
    e8848586:	51bc                	lw	a5,96(a1)
    e8848588:	08e79663          	bne	a5,a4,e8848614 <_CFLDictionaryEqual+0x90>
	if( ( l->keyCallBacks.equal 	!= r->keyCallBacks.equal ) || 
    e884858c:	7514                	ld	a3,40(a0)
    e884858e:	7598                	ld	a4,40(a1)
    e8848590:	08e69263          	bne	a3,a4,e8848614 <_CFLDictionaryEqual+0x90>
    e8848594:	6d34                	ld	a3,88(a0)
    e8848596:	6db8                	ld	a4,88(a1)
    e8848598:	06e69e63          	bne	a3,a4,e8848614 <_CFLDictionaryEqual+0x90>
	if( l->count == 0 )
    e884859c:	e399                	bnez	a5,e88485a2 <_CFLDictionaryEqual+0x1e>
		err = kNoErr;
    e884859e:	4501                	li	a0,0
    e88485a0:	a8ad                	j	e884861a <_CFLDictionaryEqual+0x96>
{
    e88485a2:	7139                	addi	sp,sp,-64
    e88485a4:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88485a8:	fd31590b          	sdd	s2,s3,(sp),2,4
    e88485ac:	fc06                	sd	ra,56(sp)
    e88485ae:	f852                	sd	s4,48(sp)
	n = l->bucketCount;
    e88485b0:	06452a03          	lw	s4,100(a0)
    e88485b4:	84ae                	mv	s1,a1
    e88485b6:	842a                	mv	s0,a0
	for( i = 0; i < n; ++i )
    e88485b8:	4981                	li	s3,0
    e88485ba:	0009879b          	sext.w	a5,s3
    e88485be:	0147cd63          	blt	a5,s4,e88485d8 <_CFLDictionaryEqual+0x54>
		err = kNoErr;
    e88485c2:	4501                	li	a0,0
}
    e88485c4:	70e2                	ld	ra,56(sp)
    e88485c6:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88485ca:	7a42                	ld	s4,48(sp)
    e88485cc:	fd31490b          	ldd	s2,s3,(sp),2,4
    e88485d0:	00153513          	seqz	a0,a0
    e88485d4:	6121                	addi	sp,sp,64
    e88485d6:	8082                	ret
		for( node = l->buckets[ i ]; node; node = node->next )
    e88485d8:	743c                	ld	a5,104(s0)
    e88485da:	6737c90b          	lrd	s2,a5,s3,3
    e88485de:	00091463          	bnez	s2,e88485e6 <_CFLDictionaryEqual+0x62>
	for( i = 0; i < n; ++i )
    e88485e2:	0985                	addi	s3,s3,1
    e88485e4:	bfd9                	j	e88485ba <_CFLDictionaryEqual+0x36>
			err = CFLDictionaryGetValue( r, node->key, (void *) &value );
    e88485e6:	00893583          	ld	a1,8(s2)
    e88485ea:	0030                	addi	a2,sp,8
    e88485ec:	8526                	mv	a0,s1
    e88485ee:	f55ff0ef          	jal	ra,e8848542 <CFLDictionaryGetValue>
			require_noerr_quiet( err, exit );
    e88485f2:	f969                	bnez	a0,e88485c4 <_CFLDictionaryEqual+0x40>
			if( node->value == value ) continue;
    e88485f4:	01093503          	ld	a0,16(s2)
    e88485f8:	65a2                	ld	a1,8(sp)
    e88485fa:	00b51563          	bne	a0,a1,e8848604 <_CFLDictionaryEqual+0x80>
		for( node = l->buckets[ i ]; node; node = node->next )
    e88485fe:	00093903          	ld	s2,0(s2)
    e8848602:	bff1                	j	e88485de <_CFLDictionaryEqual+0x5a>
			if( l->valueCallBacks.equal )
    e8848604:	6c3c                	ld	a5,88(s0)
    e8848606:	dfe5                	beqz	a5,e88485fe <_CFLDictionaryEqual+0x7a>
				if( !l->valueCallBacks.equal( node->value, value ) )
    e8848608:	9782                	jalr	a5
    e884860a:	f975                	bnez	a0,e88485fe <_CFLDictionaryEqual+0x7a>
					err = kMismatchErr;
    e884860c:	7579                	lui	a0,0xffffe
    e884860e:	5a450513          	addi	a0,a0,1444 # ffffffffffffe5a4 <__DRAM0_INF_BASE+0xffffffff0000e5a4>
    e8848612:	bf4d                	j	e88485c4 <_CFLDictionaryEqual+0x40>
		err = kMismatchErr;
    e8848614:	7579                	lui	a0,0xffffe
    e8848616:	5a450513          	addi	a0,a0,1444 # ffffffffffffe5a4 <__DRAM0_INF_BASE+0xffffffff0000e5a4>
}
    e884861a:	00153513          	seqz	a0,a0
    e884861e:	8082                	ret

00000000e8848620 <CFLDictionarySetValue>:
{
    e8848620:	7139                	addi	sp,sp,-64
    e8848622:	fc06                	sd	ra,56(sp)
    e8848624:	ec22                	sd	s0,24(sp)
    e8848626:	f026                	sd	s1,32(sp)
    e8848628:	f44a                	sd	s2,40(sp)
    e884862a:	f84e                	sd	s3,48(sp)
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e884862c:	c941                	beqz	a0,e88486bc <CFLDictionarySetValue+0x9c>
    e884862e:	00054703          	lbu	a4,0(a0)
    e8848632:	05600793          	li	a5,86
    e8848636:	84aa                	mv	s1,a0
    e8848638:	08f71263          	bne	a4,a5,e88486bc <CFLDictionarySetValue+0x9c>
    e884863c:	00154703          	lbu	a4,1(a0)
    e8848640:	4795                	li	a5,5
    e8848642:	06f71d63          	bne	a4,a5,e88486bc <CFLDictionarySetValue+0x9c>
    e8848646:	8932                	mv	s2,a2
	err = _CFLDictionaryFindKey( object, inKey, &node );
    e8848648:	0030                	addi	a2,sp,8
    e884864a:	89ae                	mv	s3,a1
    e884864c:	a80ff0ef          	jal	ra,e88478cc <_CFLDictionaryFindKey>
    e8848650:	842a                	mv	s0,a0
	require( ( err == kNoErr ) || ( err == kNotFoundErr ), exit );
    e8848652:	c511                	beqz	a0,e884865e <CFLDictionarySetValue+0x3e>
    e8848654:	77f9                	lui	a5,0xffffe
    e8848656:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e884865a:	04f51963          	bne	a0,a5,e88486ac <CFLDictionarySetValue+0x8c>
	require_action( node, exit, err = kUnknownErr );
    e884865e:	67a2                	ld	a5,8(sp)
    e8848660:	c3b5                	beqz	a5,e88486c4 <CFLDictionarySetValue+0xa4>
	if( !found )
    e8848662:	c01d                	beqz	s0,e8848688 <CFLDictionarySetValue+0x68>
		newNode = (CFLDictionaryNode *) calloc( 1U, sizeof( CFLDictionaryNode ) );
    e8848664:	4561                	li	a0,24
    e8848666:	c28ff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
		require_action( newNode, exit, err = kNoMemoryErr );
    e884866a:	c12d                	beqz	a0,e88486cc <CFLDictionarySetValue+0xac>
		newNode->next 	= NULL;
    e884866c:	00053023          	sd	zero,0(a0)
		*node 			= newNode;
    e8848670:	67a2                	ld	a5,8(sp)
		newNode->key 	= inKey;
    e8848672:	01353423          	sd	s3,8(a0)
		*node 			= newNode;
    e8848676:	e388                	sd	a0,0(a5)
		object->count  += 1;
    e8848678:	50bc                	lw	a5,96(s1)
    e884867a:	2785                	addiw	a5,a5,1
    e884867c:	d0bc                	sw	a5,96(s1)
		if( object->keyCallBacks.retain ) object->keyCallBacks.retain( kCFLAllocatorDefault, inKey );
    e884867e:	689c                	ld	a5,16(s1)
    e8848680:	c781                	beqz	a5,e8848688 <CFLDictionarySetValue+0x68>
    e8848682:	85ce                	mv	a1,s3
    e8848684:	4501                	li	a0,0
    e8848686:	9782                	jalr	a5
	if( object->valueCallBacks.retain ) object->valueCallBacks.retain( kCFLAllocatorDefault, inValue );
    e8848688:	60bc                	ld	a5,64(s1)
    e884868a:	c781                	beqz	a5,e8848692 <CFLDictionarySetValue+0x72>
    e884868c:	85ca                	mv	a1,s2
    e884868e:	4501                	li	a0,0
    e8848690:	9782                	jalr	a5
	if( found )
    e8848692:	e801                	bnez	s0,e88486a2 <CFLDictionarySetValue+0x82>
		if( object->valueCallBacks.release ) object->valueCallBacks.release( kCFLAllocatorDefault, ( *node )->value );
    e8848694:	64bc                	ld	a5,72(s1)
    e8848696:	c791                	beqz	a5,e88486a2 <CFLDictionarySetValue+0x82>
    e8848698:	6722                	ld	a4,8(sp)
    e884869a:	4501                	li	a0,0
    e884869c:	6318                	ld	a4,0(a4)
    e884869e:	6b0c                	ld	a1,16(a4)
    e88486a0:	9782                	jalr	a5
	( *node )->value = inValue;
    e88486a2:	67a2                	ld	a5,8(sp)
	err = kNoErr;
    e88486a4:	4401                	li	s0,0
	( *node )->value = inValue;
    e88486a6:	639c                	ld	a5,0(a5)
    e88486a8:	0127b823          	sd	s2,16(a5)
}
    e88486ac:	8522                	mv	a0,s0
    e88486ae:	70e2                	ld	ra,56(sp)
    e88486b0:	6462                	ld	s0,24(sp)
    e88486b2:	7482                	ld	s1,32(sp)
    e88486b4:	7922                	ld	s2,40(sp)
    e88486b6:	79c2                	ld	s3,48(sp)
    e88486b8:	6121                	addi	sp,sp,64
    e88486ba:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e88486bc:	7479                	lui	s0,0xffffe
    e88486be:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e88486c2:	b7ed                	j	e88486ac <CFLDictionarySetValue+0x8c>
	require_action( node, exit, err = kUnknownErr );
    e88486c4:	7479                	lui	s0,0xffffe
    e88486c6:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e88486ca:	b7cd                	j	e88486ac <CFLDictionarySetValue+0x8c>
		require_action( newNode, exit, err = kNoMemoryErr );
    e88486cc:	7479                	lui	s0,0xffffe
    e88486ce:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88486d2:	bfe9                	j	e88486ac <CFLDictionarySetValue+0x8c>

00000000e88486d4 <CFLDictionaryAddValue>:
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e88486d4:	c559                	beqz	a0,e8848762 <CFLDictionaryAddValue+0x8e>
{
    e88486d6:	7139                	addi	sp,sp,-64
    e88486d8:	ec22                	sd	s0,24(sp)
    e88486da:	fc06                	sd	ra,56(sp)
    e88486dc:	f026                	sd	s1,32(sp)
    e88486de:	f44a                	sd	s2,40(sp)
    e88486e0:	f84e                	sd	s3,48(sp)
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e88486e2:	00054703          	lbu	a4,0(a0)
    e88486e6:	05600793          	li	a5,86
    e88486ea:	842a                	mv	s0,a0
    e88486ec:	06f71f63          	bne	a4,a5,e884876a <CFLDictionaryAddValue+0x96>
    e88486f0:	00154703          	lbu	a4,1(a0)
    e88486f4:	4795                	li	a5,5
    e88486f6:	06f71a63          	bne	a4,a5,e884876a <CFLDictionaryAddValue+0x96>
    e88486fa:	84b2                	mv	s1,a2
	err = _CFLDictionaryFindKey( object, inKey, &node );
    e88486fc:	0030                	addi	a2,sp,8
    e88486fe:	892e                	mv	s2,a1
    e8848700:	9ccff0ef          	jal	ra,e88478cc <_CFLDictionaryFindKey>
	if( !err ) goto exit;
    e8848704:	c921                	beqz	a0,e8848754 <CFLDictionaryAddValue+0x80>
	require( err == kNotFoundErr, exit );
    e8848706:	79f9                	lui	s3,0xffffe
    e8848708:	5b998793          	addi	a5,s3,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e884870c:	04f51463          	bne	a0,a5,e8848754 <CFLDictionaryAddValue+0x80>
	require_action( node, exit, err = kUnknownErr );
    e8848710:	67a2                	ld	a5,8(sp)
    e8848712:	5d498513          	addi	a0,s3,1492
    e8848716:	cf9d                	beqz	a5,e8848754 <CFLDictionaryAddValue+0x80>
	newNode = (CFLDictionaryNode *) calloc( 1U, sizeof( CFLDictionaryNode ) );
    e8848718:	4561                	li	a0,24
    e884871a:	b74ff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e884871e:	87aa                	mv	a5,a0
	require_action( newNode, exit, err = kNoMemoryErr );
    e8848720:	5b898513          	addi	a0,s3,1464
    e8848724:	cb85                	beqz	a5,e8848754 <CFLDictionaryAddValue+0x80>
	newNode->next 	= NULL;
    e8848726:	0007b023          	sd	zero,0(a5)
	*node 			= newNode;
    e884872a:	6722                	ld	a4,8(sp)
	newNode->key 	= inKey;
    e884872c:	0127b423          	sd	s2,8(a5)
	*node 			= newNode;
    e8848730:	e31c                	sd	a5,0(a4)
	object->count  += 1;
    e8848732:	503c                	lw	a5,96(s0)
    e8848734:	2785                	addiw	a5,a5,1
    e8848736:	d03c                	sw	a5,96(s0)
	if( object->keyCallBacks.retain ) object->keyCallBacks.retain( kCFLAllocatorDefault, inKey );
    e8848738:	681c                	ld	a5,16(s0)
    e884873a:	c781                	beqz	a5,e8848742 <CFLDictionaryAddValue+0x6e>
    e884873c:	85ca                	mv	a1,s2
    e884873e:	4501                	li	a0,0
    e8848740:	9782                	jalr	a5
	if( object->valueCallBacks.retain ) object->valueCallBacks.retain( kCFLAllocatorDefault, inValue );
    e8848742:	603c                	ld	a5,64(s0)
    e8848744:	c781                	beqz	a5,e884874c <CFLDictionaryAddValue+0x78>
    e8848746:	85a6                	mv	a1,s1
    e8848748:	4501                	li	a0,0
    e884874a:	9782                	jalr	a5
	( *node )->value = inValue;
    e884874c:	67a2                	ld	a5,8(sp)
	err = kNoErr;
    e884874e:	4501                	li	a0,0
	( *node )->value = inValue;
    e8848750:	639c                	ld	a5,0(a5)
    e8848752:	eb84                	sd	s1,16(a5)
}
    e8848754:	70e2                	ld	ra,56(sp)
    e8848756:	6462                	ld	s0,24(sp)
    e8848758:	7482                	ld	s1,32(sp)
    e884875a:	7922                	ld	s2,40(sp)
    e884875c:	79c2                	ld	s3,48(sp)
    e884875e:	6121                	addi	sp,sp,64
    e8848760:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848762:	7579                	lui	a0,0xffffe
    e8848764:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8848768:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e884876a:	7579                	lui	a0,0xffffe
    e884876c:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8848770:	b7d5                	j	e8848754 <CFLDictionaryAddValue+0x80>

00000000e8848772 <CFLDictionaryCreateCopy>:
{
    e8848772:	715d                	addi	sp,sp,-80
    e8848774:	e486                	sd	ra,72(sp)
    e8848776:	e0a2                	sd	s0,64(sp)
    e8848778:	fc26                	sd	s1,56(sp)
    e884877a:	f84a                	sd	s2,48(sp)
    e884877c:	f44e                	sd	s3,40(sp)
    e884877e:	f052                	sd	s4,32(sp)
    e8848780:	ec56                	sd	s5,24(sp)
	CFLDictionaryRef		newDict = NULL;
    e8848782:	e402                	sd	zero,8(sp)
	require_action( CFLValidObjectType( inDict, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848784:	c1d9                	beqz	a1,e884880a <CFLDictionaryCreateCopy+0x98>
    e8848786:	0005c703          	lbu	a4,0(a1)
    e884878a:	05600793          	li	a5,86
    e884878e:	84ae                	mv	s1,a1
    e8848790:	06f71d63          	bne	a4,a5,e884880a <CFLDictionaryCreateCopy+0x98>
    e8848794:	0015c703          	lbu	a4,1(a1)
    e8848798:	4795                	li	a5,5
    e884879a:	06f71863          	bne	a4,a5,e884880a <CFLDictionaryCreateCopy+0x98>
	err = CFLDictionaryCreate( inAllocator, inDict->bucketCount, &inDict->keyCallBacks, &inDict->valueCallBacks, &newDict );
    e884879e:	03858693          	addi	a3,a1,56
    e88487a2:	8a32                	mv	s4,a2
    e88487a4:	00858613          	addi	a2,a1,8
    e88487a8:	51ec                	lw	a1,100(a1)
    e88487aa:	0038                	addi	a4,sp,8
    e88487ac:	c6fff0ef          	jal	ra,e884841a <CFLDictionaryCreate>
    e88487b0:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88487b2:	ed01                	bnez	a0,e88487ca <CFLDictionaryCreateCopy+0x58>
	n = inDict->bucketCount;
    e88487b4:	0644aa83          	lw	s5,100(s1)
	for( i = 0; i < n; ++i )
    e88487b8:	4981                	li	s3,0
    e88487ba:	0009879b          	sext.w	a5,s3
    e88487be:	0357c463          	blt	a5,s5,e88487e6 <CFLDictionaryCreateCopy+0x74>
	*outDict = newDict;
    e88487c2:	67a2                	ld	a5,8(sp)
	newDict = NULL;
    e88487c4:	e402                	sd	zero,8(sp)
	*outDict = newDict;
    e88487c6:	00fa3023          	sd	a5,0(s4)
	if( newDict ) CFLRelease( newDict );
    e88487ca:	6522                	ld	a0,8(sp)
    e88487cc:	c119                	beqz	a0,e88487d2 <CFLDictionaryCreateCopy+0x60>
    e88487ce:	c48ff0ef          	jal	ra,e8847c16 <CFLRelease>
}
    e88487d2:	8522                	mv	a0,s0
    e88487d4:	60a6                	ld	ra,72(sp)
    e88487d6:	6406                	ld	s0,64(sp)
    e88487d8:	74e2                	ld	s1,56(sp)
    e88487da:	7942                	ld	s2,48(sp)
    e88487dc:	79a2                	ld	s3,40(sp)
    e88487de:	7a02                	ld	s4,32(sp)
    e88487e0:	6ae2                	ld	s5,24(sp)
    e88487e2:	6161                	addi	sp,sp,80
    e88487e4:	8082                	ret
		for( node = inDict->buckets[ i ]; node; node = node->next )
    e88487e6:	74bc                	ld	a5,104(s1)
    e88487e8:	6737c90b          	lrd	s2,a5,s3,3
    e88487ec:	6522                	ld	a0,8(sp)
    e88487ee:	00091463          	bnez	s2,e88487f6 <CFLDictionaryCreateCopy+0x84>
	for( i = 0; i < n; ++i )
    e88487f2:	0985                	addi	s3,s3,1
    e88487f4:	b7d9                	j	e88487ba <CFLDictionaryCreateCopy+0x48>
			err = CFLDictionaryAddValue( newDict, node->key, node->value );
    e88487f6:	01093603          	ld	a2,16(s2)
    e88487fa:	00893583          	ld	a1,8(s2)
    e88487fe:	ed7ff0ef          	jal	ra,e88486d4 <CFLDictionaryAddValue>
			require_noerr( err, exit );
    e8848802:	e901                	bnez	a0,e8848812 <CFLDictionaryCreateCopy+0xa0>
		for( node = inDict->buckets[ i ]; node; node = node->next )
    e8848804:	00093903          	ld	s2,0(s2)
    e8848808:	b7d5                	j	e88487ec <CFLDictionaryCreateCopy+0x7a>
	require_action( CFLValidObjectType( inDict, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e884880a:	7479                	lui	s0,0xffffe
    e884880c:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8848810:	bf6d                	j	e88487ca <CFLDictionaryCreateCopy+0x58>
			err = CFLDictionaryAddValue( newDict, node->key, node->value );
    e8848812:	842a                	mv	s0,a0
    e8848814:	bf5d                	j	e88487ca <CFLDictionaryCreateCopy+0x58>

00000000e8848816 <CFLDictionaryRemoveValue>:
{
    e8848816:	7179                	addi	sp,sp,-48
    e8848818:	f406                	sd	ra,40(sp)
    e884881a:	f04a                	sd	s2,32(sp)
    e884881c:	fa91540b          	sdd	s0,s1,(sp),1,4
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848820:	c935                	beqz	a0,e8848894 <CFLDictionaryRemoveValue+0x7e>
    e8848822:	00054703          	lbu	a4,0(a0)
    e8848826:	05600793          	li	a5,86
    e884882a:	84aa                	mv	s1,a0
    e884882c:	06f71463          	bne	a4,a5,e8848894 <CFLDictionaryRemoveValue+0x7e>
    e8848830:	00154703          	lbu	a4,1(a0)
    e8848834:	4795                	li	a5,5
    e8848836:	04f71f63          	bne	a4,a5,e8848894 <CFLDictionaryRemoveValue+0x7e>
	err = _CFLDictionaryFindKey( object, inKey, &node );
    e884883a:	0030                	addi	a2,sp,8
    e884883c:	890ff0ef          	jal	ra,e88478cc <_CFLDictionaryFindKey>
    e8848840:	842a                	mv	s0,a0
	require( ( err == kNoErr ) || ( err == kNotFoundErr ), exit );
    e8848842:	c511                	beqz	a0,e884884e <CFLDictionaryRemoveValue+0x38>
    e8848844:	77f9                	lui	a5,0xffffe
    e8848846:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e884884a:	02f51e63          	bne	a0,a5,e8848886 <CFLDictionaryRemoveValue+0x70>
	require_action( node, exit, err = kUnknownErr );
    e884884e:	6722                	ld	a4,8(sp)
    e8848850:	c731                	beqz	a4,e884889c <CFLDictionaryRemoveValue+0x86>
	if( err == kNoErr )
    e8848852:	e829                	bnez	s0,e88488a4 <CFLDictionaryRemoveValue+0x8e>
		if( object->keyCallBacks.release )		object->keyCallBacks.release( kCFLAllocatorDefault, ( *node )->key );
    e8848854:	6c9c                	ld	a5,24(s1)
    e8848856:	c789                	beqz	a5,e8848860 <CFLDictionaryRemoveValue+0x4a>
    e8848858:	6318                	ld	a4,0(a4)
    e884885a:	4501                	li	a0,0
    e884885c:	670c                	ld	a1,8(a4)
    e884885e:	9782                	jalr	a5
		if( object->valueCallBacks.release )	object->valueCallBacks.release( kCFLAllocatorDefault, ( *node )->value );
    e8848860:	64bc                	ld	a5,72(s1)
    e8848862:	c791                	beqz	a5,e884886e <CFLDictionaryRemoveValue+0x58>
    e8848864:	6722                	ld	a4,8(sp)
    e8848866:	4501                	li	a0,0
    e8848868:	6318                	ld	a4,0(a4)
    e884886a:	6b0c                	ld	a1,16(a4)
    e884886c:	9782                	jalr	a5
		next = ( *node )->next;
    e884886e:	67a2                	ld	a5,8(sp)
    e8848870:	6388                	ld	a0,0(a5)
    e8848872:	00053903          	ld	s2,0(a0)
		free( *node );
    e8848876:	28b330ef          	jal	ra,e887c300 <eLIBs_free>
		*node = next;
    e884887a:	67a2                	ld	a5,8(sp)
    e884887c:	0127b023          	sd	s2,0(a5)
		object->count -= 1;
    e8848880:	50bc                	lw	a5,96(s1)
    e8848882:	37fd                	addiw	a5,a5,-1
    e8848884:	d0bc                	sw	a5,96(s1)
}
    e8848886:	8522                	mv	a0,s0
    e8848888:	70a2                	ld	ra,40(sp)
    e884888a:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884888e:	7902                	ld	s2,32(sp)
    e8848890:	6145                	addi	sp,sp,48
    e8848892:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848894:	7479                	lui	s0,0xffffe
    e8848896:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e884889a:	b7f5                	j	e8848886 <CFLDictionaryRemoveValue+0x70>
	require_action( node, exit, err = kUnknownErr );
    e884889c:	7479                	lui	s0,0xffffe
    e884889e:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e88488a2:	b7d5                	j	e8848886 <CFLDictionaryRemoveValue+0x70>
	err = kNoErr;
    e88488a4:	4401                	li	s0,0
    e88488a6:	b7c5                	j	e8848886 <CFLDictionaryRemoveValue+0x70>

00000000e88488a8 <CFLDictionaryRemoveAllValues>:
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e88488a8:	c541                	beqz	a0,e8848930 <CFLDictionaryRemoveAllValues+0x88>
    e88488aa:	00054703          	lbu	a4,0(a0)
    e88488ae:	05600793          	li	a5,86
    e88488b2:	06f71f63          	bne	a4,a5,e8848930 <CFLDictionaryRemoveAllValues+0x88>
    e88488b6:	00154703          	lbu	a4,1(a0)
    e88488ba:	4795                	li	a5,5
    e88488bc:	06f71a63          	bne	a4,a5,e8848930 <CFLDictionaryRemoveAllValues+0x88>
{
    e88488c0:	7139                	addi	sp,sp,-64
    e88488c2:	e422                	sd	s0,8(sp)
    e88488c4:	ec4a                	sd	s2,24(sp)
    e88488c6:	fc06                	sd	ra,56(sp)
    e88488c8:	e826                	sd	s1,16(sp)
    e88488ca:	f04e                	sd	s3,32(sp)
    e88488cc:	f452                	sd	s4,40(sp)
    e88488ce:	f856                	sd	s5,48(sp)
	n = object->bucketCount;
    e88488d0:	06452983          	lw	s3,100(a0)
    e88488d4:	842a                	mv	s0,a0
	for( i = 0; i < n; ++i )
    e88488d6:	4901                	li	s2,0
    e88488d8:	0009079b          	sext.w	a5,s2
    e88488dc:	0137ce63          	blt	a5,s3,e88488f8 <CFLDictionaryRemoveAllValues+0x50>
	object->count = 0;
    e88488e0:	06042023          	sw	zero,96(s0)
}
    e88488e4:	70e2                	ld	ra,56(sp)
    e88488e6:	6422                	ld	s0,8(sp)
    e88488e8:	64c2                	ld	s1,16(sp)
    e88488ea:	6962                	ld	s2,24(sp)
    e88488ec:	7982                	ld	s3,32(sp)
    e88488ee:	7a22                	ld	s4,40(sp)
    e88488f0:	7ac2                	ld	s5,48(sp)
	err = kNoErr;
    e88488f2:	4501                	li	a0,0
}
    e88488f4:	6121                	addi	sp,sp,64
    e88488f6:	8082                	ret
		for( node = object->buckets[ i ]; node; node = nextNode )
    e88488f8:	743c                	ld	a5,104(s0)
    e88488fa:	00391a13          	slli	s4,s2,0x3
    e88488fe:	6727c48b          	lrd	s1,a5,s2,3
    e8848902:	e491                	bnez	s1,e884890e <CFLDictionaryRemoveAllValues+0x66>
		object->buckets[ i ] = NULL;
    e8848904:	743c                	ld	a5,104(s0)
    e8848906:	0905                	addi	s2,s2,1
    e8848908:	6147d00b          	srd	zero,a5,s4,0
	for( i = 0; i < n; ++i )
    e884890c:	b7f1                	j	e88488d8 <CFLDictionaryRemoveAllValues+0x30>
			if( object->keyCallBacks.release ) 		object->keyCallBacks.release( kCFLAllocatorDefault, node->key );
    e884890e:	6c1c                	ld	a5,24(s0)
    e8848910:	c781                	beqz	a5,e8848918 <CFLDictionaryRemoveAllValues+0x70>
    e8848912:	648c                	ld	a1,8(s1)
    e8848914:	4501                	li	a0,0
    e8848916:	9782                	jalr	a5
			if( object->valueCallBacks.release )	object->valueCallBacks.release( kCFLAllocatorDefault, node->value );
    e8848918:	643c                	ld	a5,72(s0)
    e884891a:	c781                	beqz	a5,e8848922 <CFLDictionaryRemoveAllValues+0x7a>
    e884891c:	688c                	ld	a1,16(s1)
    e884891e:	4501                	li	a0,0
    e8848920:	9782                	jalr	a5
			nextNode = node->next;
    e8848922:	0004ba83          	ld	s5,0(s1)
			free( node );
    e8848926:	8526                	mv	a0,s1
    e8848928:	1d9330ef          	jal	ra,e887c300 <eLIBs_free>
		for( node = object->buckets[ i ]; node; node = nextNode )
    e884892c:	84d6                	mv	s1,s5
    e884892e:	bfd1                	j	e8848902 <CFLDictionaryRemoveAllValues+0x5a>
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848930:	7579                	lui	a0,0xffffe
    e8848932:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8848936:	8082                	ret

00000000e8848938 <_CFLDictionaryFree>:
	if( object->buckets )
    e8848938:	753c                	ld	a5,104(a0)
    e884893a:	c38d                	beqz	a5,e884895c <_CFLDictionaryFree+0x24>
{
    e884893c:	1141                	addi	sp,sp,-16
    e884893e:	e022                	sd	s0,0(sp)
    e8848940:	e406                	sd	ra,8(sp)
    e8848942:	842a                	mv	s0,a0
		err = CFLDictionaryRemoveAllValues( object );
    e8848944:	f65ff0ef          	jal	ra,e88488a8 <CFLDictionaryRemoveAllValues>
		require_noerr( err, exit );
    e8848948:	e511                	bnez	a0,e8848954 <_CFLDictionaryFree+0x1c>
		free( object->buckets );
    e884894a:	7428                	ld	a0,104(s0)
    e884894c:	1b5330ef          	jal	ra,e887c300 <eLIBs_free>
		object->buckets = NULL;
    e8848950:	06043423          	sd	zero,104(s0)
}
    e8848954:	60a2                	ld	ra,8(sp)
    e8848956:	6402                	ld	s0,0(sp)
    e8848958:	0141                	addi	sp,sp,16
    e884895a:	8082                	ret
    e884895c:	8082                	ret

00000000e884895e <CFLDictionaryContainsKey>:
{
    e884895e:	1141                	addi	sp,sp,-16
	return( (Boolean)( _CFLDictionaryFindKey( inObject, inKey, NULL ) == kNoErr ) );
    e8848960:	4601                	li	a2,0
{
    e8848962:	e406                	sd	ra,8(sp)
	return( (Boolean)( _CFLDictionaryFindKey( inObject, inKey, NULL ) == kNoErr ) );
    e8848964:	f69fe0ef          	jal	ra,e88478cc <_CFLDictionaryFindKey>
}
    e8848968:	00153513          	seqz	a0,a0
    e884896c:	60a2                	ld	ra,8(sp)
    e884896e:	0141                	addi	sp,sp,16
    e8848970:	8082                	ret

00000000e8848972 <CFLDictionaryGetKeysAndValues>:
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848972:	cd21                	beqz	a0,e88489ca <CFLDictionaryGetKeysAndValues+0x58>
    e8848974:	00054703          	lbu	a4,0(a0)
    e8848978:	05600793          	li	a5,86
    e884897c:	04f71763          	bne	a4,a5,e88489ca <CFLDictionaryGetKeysAndValues+0x58>
    e8848980:	00154703          	lbu	a4,1(a0)
    e8848984:	4795                	li	a5,5
    e8848986:	04f71263          	bne	a4,a5,e88489ca <CFLDictionaryGetKeysAndValues+0x58>
	if( object->count > 0 )
    e884898a:	513c                	lw	a5,96(a0)
    e884898c:	00f04463          	bgtz	a5,e8848994 <CFLDictionaryGetKeysAndValues+0x22>
	err = kNoErr;
    e8848990:	4501                	li	a0,0
    e8848992:	8082                	ret
		n = object->bucketCount;
    e8848994:	06452803          	lw	a6,100(a0)
		for( i = 0; i < n; ++i )
    e8848998:	4701                	li	a4,0
		iTotal = 0;
    e884899a:	4681                	li	a3,0
		for( i = 0; i < n; ++i )
    e884899c:	0007079b          	sext.w	a5,a4
    e88489a0:	ff07d8e3          	bge	a5,a6,e8848990 <CFLDictionaryGetKeysAndValues+0x1e>
			for( node = object->buckets[ i ]; node; node = node->next )
    e88489a4:	753c                	ld	a5,104(a0)
    e88489a6:	66e7c78b          	lrd	a5,a5,a4,3
    e88489aa:	e399                	bnez	a5,e88489b0 <CFLDictionaryGetKeysAndValues+0x3e>
		for( i = 0; i < n; ++i )
    e88489ac:	0705                	addi	a4,a4,1
    e88489ae:	b7fd                	j	e884899c <CFLDictionaryGetKeysAndValues+0x2a>
				if( ioKeys )   ioKeys[   iTotal ] = (void *) node->key;
    e88489b0:	c589                	beqz	a1,e88489ba <CFLDictionaryGetKeysAndValues+0x48>
    e88489b2:	0087b883          	ld	a7,8(a5)
    e88489b6:	66d5d88b          	srd	a7,a1,a3,3
				if( ioValues ) ioValues[ iTotal ] = (void *) node->value;
    e88489ba:	c609                	beqz	a2,e88489c4 <CFLDictionaryGetKeysAndValues+0x52>
    e88489bc:	0107b883          	ld	a7,16(a5)
    e88489c0:	66d6588b          	srd	a7,a2,a3,3
				++iTotal;
    e88489c4:	2685                	addiw	a3,a3,1
			for( node = object->buckets[ i ]; node; node = node->next )
    e88489c6:	639c                	ld	a5,0(a5)
    e88489c8:	b7cd                	j	e88489aa <CFLDictionaryGetKeysAndValues+0x38>
	require_action( CFLValidObjectType( inObject, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e88489ca:	7579                	lui	a0,0xffffe
    e88489cc:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e88489d0:	8082                	ret

00000000e88489d2 <CFLDictionaryApplyFunction>:
	require_action( CFLValidObjectType( inDict, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e88489d2:	c525                	beqz	a0,e8848a3a <CFLDictionaryApplyFunction+0x68>
    e88489d4:	00054703          	lbu	a4,0(a0)
    e88489d8:	05600793          	li	a5,86
    e88489dc:	04f71f63          	bne	a4,a5,e8848a3a <CFLDictionaryApplyFunction+0x68>
    e88489e0:	00154703          	lbu	a4,1(a0)
    e88489e4:	4795                	li	a5,5
    e88489e6:	04f71a63          	bne	a4,a5,e8848a3a <CFLDictionaryApplyFunction+0x68>
{
    e88489ea:	7139                	addi	sp,sp,-64
    e88489ec:	e422                	sd	s0,8(sp)
    e88489ee:	ec4a                	sd	s2,24(sp)
    e88489f0:	f04e                	sd	s3,32(sp)
    e88489f2:	f452                	sd	s4,40(sp)
    e88489f4:	fc06                	sd	ra,56(sp)
    e88489f6:	e826                	sd	s1,16(sp)
    e88489f8:	f856                	sd	s5,48(sp)
	n = obj->bucketCount;
    e88489fa:	06452a83          	lw	s5,100(a0)
    e88489fe:	8a32                	mv	s4,a2
    e8848a00:	89ae                	mv	s3,a1
    e8848a02:	842a                	mv	s0,a0
	for( i = 0; i < n; ++i )
    e8848a04:	4901                	li	s2,0
    e8848a06:	0009079b          	sext.w	a5,s2
    e8848a0a:	0157cc63          	blt	a5,s5,e8848a22 <CFLDictionaryApplyFunction+0x50>
}
    e8848a0e:	70e2                	ld	ra,56(sp)
    e8848a10:	6422                	ld	s0,8(sp)
    e8848a12:	64c2                	ld	s1,16(sp)
    e8848a14:	6962                	ld	s2,24(sp)
    e8848a16:	7982                	ld	s3,32(sp)
    e8848a18:	7a22                	ld	s4,40(sp)
    e8848a1a:	7ac2                	ld	s5,48(sp)
	err = kNoErr;
    e8848a1c:	4501                	li	a0,0
}
    e8848a1e:	6121                	addi	sp,sp,64
    e8848a20:	8082                	ret
		for( node = obj->buckets[ i ]; node; node = node->next )
    e8848a22:	743c                	ld	a5,104(s0)
    e8848a24:	6727c48b          	lrd	s1,a5,s2,3
    e8848a28:	e099                	bnez	s1,e8848a2e <CFLDictionaryApplyFunction+0x5c>
	for( i = 0; i < n; ++i )
    e8848a2a:	0905                	addi	s2,s2,1
    e8848a2c:	bfe9                	j	e8848a06 <CFLDictionaryApplyFunction+0x34>
			inApplier( node->key, node->value, inContext );
    e8848a2e:	688c                	ld	a1,16(s1)
    e8848a30:	6488                	ld	a0,8(s1)
    e8848a32:	8652                	mv	a2,s4
    e8848a34:	9982                	jalr	s3
		for( node = obj->buckets[ i ]; node; node = node->next )
    e8848a36:	6084                	ld	s1,0(s1)
    e8848a38:	bfc5                	j	e8848a28 <CFLDictionaryApplyFunction+0x56>
	require_action( CFLValidObjectType( inDict, kCFLTypeDictionary ), exit, err = kBadReferenceErr );
    e8848a3a:	7579                	lui	a0,0xffffe
    e8848a3c:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8848a40:	8082                	ret

00000000e8848a42 <CFLNullGetTypeID>:
}
    e8848a42:	4521                	li	a0,8
    e8848a44:	8082                	ret

00000000e8848a46 <CFLNumberGetTypeID>:
}
    e8848a46:	4519                	li	a0,6
    e8848a48:	8082                	ret

00000000e8848a4a <CFLNumberCreate>:
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e8848a4a:	10051663          	bnez	a0,e8848b56 <CFLNumberCreate+0x10c>
	require_action( outRef, exit, err = kParamErr );
    e8848a4e:	10068463          	beqz	a3,e8848b56 <CFLNumberCreate+0x10c>
{
    e8848a52:	7179                	addi	sp,sp,-48
	object = (CFLNumber *) calloc( 1U, sizeof( CFLNumber ) );
    e8848a54:	02000513          	li	a0,32
{
    e8848a58:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8848a5c:	f04a                	sd	s2,32(sp)
    e8848a5e:	f406                	sd	ra,40(sp)
    e8848a60:	8936                	mv	s2,a3
    e8848a62:	84b2                	mv	s1,a2
    e8848a64:	e42e                	sd	a1,8(sp)
	object = (CFLNumber *) calloc( 1U, sizeof( CFLNumber ) );
    e8848a66:	828ff0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e8848a6a:	842a                	mv	s0,a0
	require_action( object, exit, err = kNoMemoryErr );
    e8848a6c:	c96d                	beqz	a0,e8848b5e <CFLNumberCreate+0x114>
	object->base.signature		= kCFLSignatureValid;
    e8848a6e:	65600793          	li	a5,1622
	object->type				= inType;
    e8848a72:	68a2                	ld	a7,8(sp)
	object->base.signature		= kCFLSignatureValid;
    e8848a74:	00f51023          	sh	a5,0(a0)
	object->base.retainCount	= 1;
    e8848a78:	4785                	li	a5,1
    e8848a7a:	c15c                	sw	a5,4(a0)
	object->type				= inType;
    e8848a7c:	01150423          	sb	a7,8(a0)
	if(      inType == kCFLNumberSInt8Type )	object->value.s64  = *( (int8_t *)		inValue );
    e8848a80:	4785                	li	a5,1
    e8848a82:	00f89963          	bne	a7,a5,e8848a94 <CFLNumberCreate+0x4a>
    e8848a86:	00048783          	lb	a5,0(s1)
	else if( inType == kCFLNumberSInt16Type )	object->value.s64  = *( (int16_t *)		inValue );
    e8848a8a:	e81c                	sd	a5,16(s0)
	*outRef = (CFLNumberRef) object;
    e8848a8c:	00893023          	sd	s0,0(s2)
	err = kNoErr;
    e8848a90:	4501                	li	a0,0
    e8848a92:	a865                	j	e8848b4a <CFLNumberCreate+0x100>
	else if( inType == kCFLNumberSInt16Type )	object->value.s64  = *( (int16_t *)		inValue );
    e8848a94:	4789                	li	a5,2
    e8848a96:	00f89563          	bne	a7,a5,e8848aa0 <CFLNumberCreate+0x56>
    e8848a9a:	00049783          	lh	a5,0(s1)
    e8848a9e:	b7f5                	j	e8848a8a <CFLNumberCreate+0x40>
	else if( inType == kCFLNumberSInt32Type )	object->value.s64  = *( (int32_t *)		inValue );
    e8848aa0:	478d                	li	a5,3
    e8848aa2:	00f89463          	bne	a7,a5,e8848aaa <CFLNumberCreate+0x60>
	else if( inType == kCFLNumberCFIndexType )	object->value.s64  = *( (CFLIndex *)	inValue );
    e8848aa6:	409c                	lw	a5,0(s1)
    e8848aa8:	b7cd                	j	e8848a8a <CFLNumberCreate+0x40>
	else if( inType == kCFLNumberSInt64Type )	object->value.s64  = *( (int64_t *)		inValue );
    e8848aaa:	4791                	li	a5,4
    e8848aac:	00f89463          	bne	a7,a5,e8848ab4 <CFLNumberCreate+0x6a>
	else if( inType == kCFLNumberLongLongType )	object->value.s64  = *( (long long *)	inValue );
    e8848ab0:	609c                	ld	a5,0(s1)
    e8848ab2:	bfe1                	j	e8848a8a <CFLNumberCreate+0x40>
	else if( inType == kCFLNumberSInt128Type )	object->value.s128 = *( (int128_compat *) inValue );
    e8848ab4:	47bd                	li	a5,15
    e8848ab6:	00f89763          	bne	a7,a5,e8848ac4 <CFLNumberCreate+0x7a>
    e8848aba:	609c                	ld	a5,0(s1)
    e8848abc:	e91c                	sd	a5,16(a0)
    e8848abe:	649c                	ld	a5,8(s1)
    e8848ac0:	ed1c                	sd	a5,24(a0)
    e8848ac2:	b7e9                	j	e8848a8c <CFLNumberCreate+0x42>
	else if( inType == kCFLNumberCharType )		object->value.s64  = *( (char *)		inValue );
    e8848ac4:	479d                	li	a5,7
    e8848ac6:	00f89563          	bne	a7,a5,e8848ad0 <CFLNumberCreate+0x86>
    e8848aca:	0004c783          	lbu	a5,0(s1)
    e8848ace:	bf75                	j	e8848a8a <CFLNumberCreate+0x40>
	else if( inType == kCFLNumberShortType )	object->value.s64  = *( (short *)		inValue );
    e8848ad0:	47a1                	li	a5,8
    e8848ad2:	fcf884e3          	beq	a7,a5,e8848a9a <CFLNumberCreate+0x50>
	else if( inType == kCFLNumberIntType )		object->value.s64  = *( (int *)			inValue );
    e8848ad6:	47a5                	li	a5,9
    e8848ad8:	fcf887e3          	beq	a7,a5,e8848aa6 <CFLNumberCreate+0x5c>
	else if( inType == kCFLNumberLongType )		object->value.s64  = *( (long *)		inValue );
    e8848adc:	47a9                	li	a5,10
    e8848ade:	fcf889e3          	beq	a7,a5,e8848ab0 <CFLNumberCreate+0x66>
	else if( inType == kCFLNumberLongLongType )	object->value.s64  = *( (long long *)	inValue );
    e8848ae2:	47ad                	li	a5,11
    e8848ae4:	fcf886e3          	beq	a7,a5,e8848ab0 <CFLNumberCreate+0x66>
	else if( inType == kCFLNumberCFIndexType )	object->value.s64  = *( (CFLIndex *)	inValue );
    e8848ae8:	47b9                	li	a5,14
    e8848aea:	faf88ee3          	beq	a7,a5,e8848aa6 <CFLNumberCreate+0x5c>
	else if( inType == kCFLNumberFloat32Type )	object->value.f64  = *( (Float32 *)		inValue );
    e8848aee:	4795                	li	a5,5
    e8848af0:	00f89863          	bne	a7,a5,e8848b00 <CFLNumberCreate+0xb6>
	else if( inType == kCFLNumberFloatType )	object->value.f64  = *( (float *)		inValue );
    e8848af4:	0004a787          	flw	fa5,0(s1)
    e8848af8:	420787d3          	fcvt.d.s	fa5,fa5
	else if( inType == kCFLNumberDoubleType )	object->value.f64  = *( (double *)		inValue );
    e8848afc:	a81c                	fsd	fa5,16(s0)
    e8848afe:	b779                	j	e8848a8c <CFLNumberCreate+0x42>
	else if( inType == kCFLNumberFloat64Type )	object->value.f64  = *( (Float64 *)		inValue );
    e8848b00:	4799                	li	a5,6
    e8848b02:	00f89463          	bne	a7,a5,e8848b0a <CFLNumberCreate+0xc0>
	else if( inType == kCFLNumberDoubleType )	object->value.f64  = *( (double *)		inValue );
    e8848b06:	209c                	fld	fa5,0(s1)
    e8848b08:	bfd5                	j	e8848afc <CFLNumberCreate+0xb2>
	else if( inType == kCFLNumberFloatType )	object->value.f64  = *( (float *)		inValue );
    e8848b0a:	47b1                	li	a5,12
    e8848b0c:	fef884e3          	beq	a7,a5,e8848af4 <CFLNumberCreate+0xaa>
	else if( inType == kCFLNumberDoubleType )	object->value.f64  = *( (double *)		inValue );
    e8848b10:	47b5                	li	a5,13
    e8848b12:	fef88ae3          	beq	a7,a5,e8848b06 <CFLNumberCreate+0xbc>
	else { dlogassert( "bad number type %d", inType ); err = kParamErr; goto exit; }
    e8848b16:	6705                	lui	a4,0x1
    e8848b18:	00076817          	auipc	a6,0x76
    e8848b1c:	af880813          	addi	a6,a6,-1288 # e88be610 <__PRETTY_FUNCTION__.9500+0x38>
    e8848b20:	00076797          	auipc	a5,0x76
    e8848b24:	c1078793          	addi	a5,a5,-1008 # e88be730 <__PRETTY_FUNCTION__.9340>
    e8848b28:	a0570713          	addi	a4,a4,-1531 # a05 <memcmp-0xe87ff5fb>
    e8848b2c:	00076697          	auipc	a3,0x76
    e8848b30:	afc68693          	addi	a3,a3,-1284 # e88be628 <__PRETTY_FUNCTION__.9500+0x50>
    e8848b34:	4601                	li	a2,0
    e8848b36:	4581                	li	a1,0
    e8848b38:	4501                	li	a0,0
    e8848b3a:	08f050ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	if( object ) CFLRelease( (CFLNumberRef) object );
    e8848b3e:	8522                	mv	a0,s0
    e8848b40:	8d6ff0ef          	jal	ra,e8847c16 <CFLRelease>
	else { dlogassert( "bad number type %d", inType ); err = kParamErr; goto exit; }
    e8848b44:	7579                	lui	a0,0xffffe
    e8848b46:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e8848b4a:	70a2                	ld	ra,40(sp)
    e8848b4c:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8848b50:	7902                	ld	s2,32(sp)
    e8848b52:	6145                	addi	sp,sp,48
    e8848b54:	8082                	ret
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e8848b56:	7579                	lui	a0,0xffffe
    e8848b58:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e8848b5c:	8082                	ret
	require_action( object, exit, err = kNoMemoryErr );
    e8848b5e:	7579                	lui	a0,0xffffe
    e8848b60:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8848b64:	b7dd                	j	e8848b4a <CFLNumberCreate+0x100>

00000000e8848b66 <CFLNumberGetByteSize>:
	require( CFLValidObjectType( inObject, kCFLTypeNumber ), exit );
    e8848b66:	c92d                	beqz	a0,e8848bd8 <CFLNumberGetByteSize+0x72>
    e8848b68:	00054683          	lbu	a3,0(a0)
    e8848b6c:	05600713          	li	a4,86
	return( 0 );
    e8848b70:	4781                	li	a5,0
	require( CFLValidObjectType( inObject, kCFLTypeNumber ), exit );
    e8848b72:	02e69663          	bne	a3,a4,e8848b9e <CFLNumberGetByteSize+0x38>
    e8848b76:	00154683          	lbu	a3,1(a0)
    e8848b7a:	4719                	li	a4,6
    e8848b7c:	02e69163          	bne	a3,a4,e8848b9e <CFLNumberGetByteSize+0x38>
	switch( ( (CFLNumber *) inObject )->type )
    e8848b80:	00854883          	lbu	a7,8(a0)
    e8848b84:	4739                	li	a4,14
    e8848b86:	fff8879b          	addiw	a5,a7,-1
    e8848b8a:	0ff7f793          	andi	a5,a5,255
    e8848b8e:	00f76a63          	bltu	a4,a5,e8848ba2 <CFLNumberGetByteSize+0x3c>
    e8848b92:	00076717          	auipc	a4,0x76
    e8848b96:	b8670713          	addi	a4,a4,-1146 # e88be718 <CSWTCH.162>
    e8848b9a:	00f7478b          	lrb	a5,a4,a5,0
}
    e8848b9e:	853e                	mv	a0,a5
    e8848ba0:	8082                	ret
			dlogassert( "internal bad number type %d", ( (CFLNumber *) inObject )->type );
    e8848ba2:	6705                	lui	a4,0x1
{
    e8848ba4:	1141                	addi	sp,sp,-16
			dlogassert( "internal bad number type %d", ( (CFLNumber *) inObject )->type );
    e8848ba6:	00076797          	auipc	a5,0x76
    e8848baa:	b9a78793          	addi	a5,a5,-1126 # e88be740 <__PRETTY_FUNCTION__.9361>
    e8848bae:	4501                	li	a0,0
    e8848bb0:	00076817          	auipc	a6,0x76
    e8848bb4:	b2880813          	addi	a6,a6,-1240 # e88be6d8 <__PRETTY_FUNCTION__.9500+0x100>
    e8848bb8:	a2e70713          	addi	a4,a4,-1490 # a2e <memcmp-0xe87ff5d2>
    e8848bbc:	00076697          	auipc	a3,0x76
    e8848bc0:	a6c68693          	addi	a3,a3,-1428 # e88be628 <__PRETTY_FUNCTION__.9500+0x50>
    e8848bc4:	4601                	li	a2,0
    e8848bc6:	4581                	li	a1,0
{
    e8848bc8:	e406                	sd	ra,8(sp)
			dlogassert( "internal bad number type %d", ( (CFLNumber *) inObject )->type );
    e8848bca:	7fe050ef          	jal	ra,e884e3c8 <DebugPrintAssert>
}
    e8848bce:	60a2                	ld	ra,8(sp)
	return( 0 );
    e8848bd0:	4781                	li	a5,0
}
    e8848bd2:	853e                	mv	a0,a5
    e8848bd4:	0141                	addi	sp,sp,16
    e8848bd6:	8082                	ret
	return( 0 );
    e8848bd8:	4781                	li	a5,0
    e8848bda:	b7d1                	j	e8848b9e <CFLNumberGetByteSize+0x38>

00000000e8848bdc <CFLNumberGetType>:
	return( kCFLNumberInvalidType );
    e8848bdc:	4781                	li	a5,0
	require( CFLValidObjectType( inObject, kCFLTypeNumber ), exit );
    e8848bde:	cd19                	beqz	a0,e8848bfc <CFLNumberGetType+0x20>
    e8848be0:	00054683          	lbu	a3,0(a0)
    e8848be4:	05600713          	li	a4,86
	return( kCFLNumberInvalidType );
    e8848be8:	4781                	li	a5,0
	require( CFLValidObjectType( inObject, kCFLTypeNumber ), exit );
    e8848bea:	00e69963          	bne	a3,a4,e8848bfc <CFLNumberGetType+0x20>
    e8848bee:	00154683          	lbu	a3,1(a0)
    e8848bf2:	4719                	li	a4,6
    e8848bf4:	00e69463          	bne	a3,a4,e8848bfc <CFLNumberGetType+0x20>
	return( ( (CFLNumber *) inObject )->type );
    e8848bf8:	00854783          	lbu	a5,8(a0)
}
    e8848bfc:	853e                	mv	a0,a5
    e8848bfe:	8082                	ret

00000000e8848c00 <CFLNumberGetValue>:
	require_action( CFLValidObjectType( inObject, kCFLTypeNumber ), exit, err = kBadReferenceErr );
    e8848c00:	34050363          	beqz	a0,e8848f46 <CFLNumberGetValue+0x346>
    e8848c04:	00054703          	lbu	a4,0(a0)
    e8848c08:	05600793          	li	a5,86
    e8848c0c:	32f71d63          	bne	a4,a5,e8848f46 <CFLNumberGetValue+0x346>
    e8848c10:	00154703          	lbu	a4,1(a0)
    e8848c14:	4799                	li	a5,6
    e8848c16:	32f71863          	bne	a4,a5,e8848f46 <CFLNumberGetValue+0x346>
{
    e8848c1a:	1141                	addi	sp,sp,-16
    e8848c1c:	e406                	sd	ra,8(sp)
	switch( object->type )
    e8848c1e:	00854783          	lbu	a5,8(a0)
    e8848c22:	88ae                	mv	a7,a1
    e8848c24:	45bd                	li	a1,15
    e8848c26:	02f5e463          	bltu	a1,a5,e8848c4e <CFLNumberGetValue+0x4e>
    e8848c2a:	4685                	li	a3,1
    e8848c2c:	6715                	lui	a4,0x5
    e8848c2e:	00f697b3          	sll	a5,a3,a5
    e8848c32:	f9e70713          	addi	a4,a4,-98 # 4f9e <memcmp-0xe87fb062>
    e8848c36:	8f7d                	and	a4,a4,a5
    e8848c38:	e339                	bnez	a4,e8848c7e <CFLNumberGetValue+0x7e>
    e8848c3a:	670d                	lui	a4,0x3
    e8848c3c:	06070713          	addi	a4,a4,96 # 3060 <memcmp-0xe87fcfa0>
    e8848c40:	8f7d                	and	a4,a4,a5
    e8848c42:	20071163          	bnez	a4,e8848e44 <CFLNumberGetValue+0x244>
    e8848c46:	03079713          	slli	a4,a5,0x30
    e8848c4a:	0e074f63          	bltz	a4,e8848d48 <CFLNumberGetValue+0x148>
			dlogassert( "internal bad number type %d", inType );
    e8848c4e:	6705                	lui	a4,0x1
    e8848c50:	4501                	li	a0,0
    e8848c52:	00076817          	auipc	a6,0x76
    e8848c56:	a8680813          	addi	a6,a6,-1402 # e88be6d8 <__PRETTY_FUNCTION__.9500+0x100>
    e8848c5a:	00076797          	auipc	a5,0x76
    e8848c5e:	afe78793          	addi	a5,a5,-1282 # e88be758 <__PRETTY_FUNCTION__.9385>
    e8848c62:	ac970713          	addi	a4,a4,-1335 # ac9 <memcmp-0xe87ff537>
    e8848c66:	00076697          	auipc	a3,0x76
    e8848c6a:	9c268693          	addi	a3,a3,-1598 # e88be628 <__PRETTY_FUNCTION__.9500+0x50>
    e8848c6e:	4601                	li	a2,0
    e8848c70:	4581                	li	a1,0
    e8848c72:	756050ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			err = kInternalErr;
    e8848c76:	7579                	lui	a0,0xffffe
    e8848c78:	59650513          	addi	a0,a0,1430 # ffffffffffffe596 <__DRAM0_INF_BASE+0xffffffff0000e596>
			goto exit;
    e8848c7c:	a025                	j	e8848ca4 <CFLNumberGetValue+0xa4>
			if(      inType == kCFLNumberSInt8Type )	*( (int8_t *)		outValue ) = (int8_t)	object->value.s64;
    e8848c7e:	00d89663          	bne	a7,a3,e8848c8a <CFLNumberGetValue+0x8a>
			else if( inType == kCFLNumberCharType )		*( (char *)			outValue ) = (char)		object->value.s64;
    e8848c82:	691c                	ld	a5,16(a0)
			else if( inType == kCFLNumberCharType )		*( (char *)				outValue ) = (char)			object->value.s128.lo;
    e8848c84:	00f60023          	sb	a5,0(a2)
    e8848c88:	a829                	j	e8848ca2 <CFLNumberGetValue+0xa2>
			else if( inType == kCFLNumberSInt16Type )	*( (int16_t *)		outValue ) = (int16_t)	object->value.s64;
    e8848c8a:	4789                	li	a5,2
    e8848c8c:	00f89663          	bne	a7,a5,e8848c98 <CFLNumberGetValue+0x98>
    e8848c90:	691c                	ld	a5,16(a0)
			else if( inType == kCFLNumberSInt16Type )	*( (int16_t *)		outValue ) = (int16_t)	object->value.f64;
    e8848c92:	00f61023          	sh	a5,0(a2)
    e8848c96:	a031                	j	e8848ca2 <CFLNumberGetValue+0xa2>
			else if( inType == kCFLNumberSInt32Type )	*( (int32_t *)		outValue ) = (int32_t)	object->value.s64;
    e8848c98:	478d                	li	a5,3
    e8848c9a:	00f89863          	bne	a7,a5,e8848caa <CFLNumberGetValue+0xaa>
    e8848c9e:	691c                	ld	a5,16(a0)
			else if( inType == kCFLNumberSInt32Type )	*( (int32_t *)			outValue ) = (int32_t)		object->value.s128.lo;
    e8848ca0:	c21c                	sw	a5,0(a2)
	err = kNoErr;
    e8848ca2:	4501                	li	a0,0
}
    e8848ca4:	60a2                	ld	ra,8(sp)
    e8848ca6:	0141                	addi	sp,sp,16
    e8848ca8:	8082                	ret
			else if( inType == kCFLNumberSInt64Type )	*( (int64_t *)		outValue ) = (int64_t)	object->value.s64;
    e8848caa:	4791                	li	a5,4
    e8848cac:	00f89563          	bne	a7,a5,e8848cb6 <CFLNumberGetValue+0xb6>
			else if( inType == kCFLNumberLongLongType )	*( (long long *)	outValue ) =			object->value.s64;
    e8848cb0:	691c                	ld	a5,16(a0)
			else if( inType == kCFLNumberSInt64Type )	*( (int64_t *)			outValue ) = (int64_t)		object->value.s128.lo;
    e8848cb2:	e21c                	sd	a5,0(a2)
    e8848cb4:	b7fd                	j	e8848ca2 <CFLNumberGetValue+0xa2>
			else if( inType == kCFLNumberSInt128Type )
    e8848cb6:	00b89863          	bne	a7,a1,e8848cc6 <CFLNumberGetValue+0xc6>
				p128->hi = ( object->value.s64 < 0 ) ? -1 : 0;
    e8848cba:	691c                	ld	a5,16(a0)
    e8848cbc:	97fd                	srai	a5,a5,0x3f
    e8848cbe:	e21c                	sd	a5,0(a2)
				p128->lo = (uint64_t) object->value.s64;
    e8848cc0:	691c                	ld	a5,16(a0)
			else if( inType == kCFLNumberSInt128Type )	*( (int128_compat *)	outValue ) = object->value.s128;
    e8848cc2:	e61c                	sd	a5,8(a2)
    e8848cc4:	bff9                	j	e8848ca2 <CFLNumberGetValue+0xa2>
			else if( inType == kCFLNumberCharType )		*( (char *)			outValue ) = (char)		object->value.s64;
    e8848cc6:	479d                	li	a5,7
    e8848cc8:	faf88de3          	beq	a7,a5,e8848c82 <CFLNumberGetValue+0x82>
			else if( inType == kCFLNumberShortType )	*( (short *)		outValue ) = (short)	object->value.s64;
    e8848ccc:	47a1                	li	a5,8
    e8848cce:	fcf881e3          	beq	a7,a5,e8848c90 <CFLNumberGetValue+0x90>
			else if( inType == kCFLNumberIntType )		*( (int *)			outValue ) = (int)		object->value.s64;
    e8848cd2:	47a5                	li	a5,9
    e8848cd4:	fcf885e3          	beq	a7,a5,e8848c9e <CFLNumberGetValue+0x9e>
			else if( inType == kCFLNumberLongType )		*( (long *)			outValue ) = (long)		object->value.s64;
    e8848cd8:	47a9                	li	a5,10
    e8848cda:	fcf88be3          	beq	a7,a5,e8848cb0 <CFLNumberGetValue+0xb0>
			else if( inType == kCFLNumberLongLongType )	*( (long long *)	outValue ) =			object->value.s64;
    e8848cde:	47ad                	li	a5,11
    e8848ce0:	fcf888e3          	beq	a7,a5,e8848cb0 <CFLNumberGetValue+0xb0>
			else if( inType == kCFLNumberCFIndexType )	*( (CFLIndex *)		outValue ) = (CFLIndex)	object->value.s64;
    e8848ce4:	47b9                	li	a5,14
    e8848ce6:	faf88ce3          	beq	a7,a5,e8848c9e <CFLNumberGetValue+0x9e>
			else if( inType == kCFLNumberFloat32Type )	*( (Float32 *)		outValue ) = (Float32)	object->value.s64;
    e8848cea:	4795                	li	a5,5
    e8848cec:	00f89863          	bne	a7,a5,e8848cfc <CFLNumberGetValue+0xfc>
			else if( inType == kCFLNumberFloatType )	*( (float *)		outValue ) = (float)	object->value.s64;
    e8848cf0:	691c                	ld	a5,16(a0)
    e8848cf2:	d027f7d3          	fcvt.s.l	fa5,a5
			else if( inType == kCFLNumberFloatType )	*( (float *)		outValue ) = (float)	object->value.f64;
    e8848cf6:	00f62027          	fsw	fa5,0(a2)
    e8848cfa:	b765                	j	e8848ca2 <CFLNumberGetValue+0xa2>
			else if( inType == kCFLNumberFloat64Type )	*( (Float64 *)		outValue ) = (Float64)	object->value.s64;
    e8848cfc:	4799                	li	a5,6
    e8848cfe:	00f89763          	bne	a7,a5,e8848d0c <CFLNumberGetValue+0x10c>
			else if( inType == kCFLNumberDoubleType )	*( (double *)		outValue ) = (double)	object->value.s64;
    e8848d02:	691c                	ld	a5,16(a0)
    e8848d04:	d227f7d3          	fcvt.d.l	fa5,a5
				else if( inType == kCFLNumberDoubleType )	*( (double *)	outValue ) = (double)	f64;
    e8848d08:	a21c                	fsd	fa5,0(a2)
    e8848d0a:	bf61                	j	e8848ca2 <CFLNumberGetValue+0xa2>
			else if( inType == kCFLNumberFloatType )	*( (float *)		outValue ) = (float)	object->value.s64;
    e8848d0c:	47b1                	li	a5,12
    e8848d0e:	fef881e3          	beq	a7,a5,e8848cf0 <CFLNumberGetValue+0xf0>
			else if( inType == kCFLNumberDoubleType )	*( (double *)		outValue ) = (double)	object->value.s64;
    e8848d12:	47b5                	li	a5,13
    e8848d14:	fef887e3          	beq	a7,a5,e8848d02 <CFLNumberGetValue+0x102>
			else { dlogassert( "bad number type %d", inType ); err = kParamErr; goto exit; }
    e8848d18:	6705                	lui	a4,0x1
    e8848d1a:	00076817          	auipc	a6,0x76
    e8848d1e:	8f680813          	addi	a6,a6,-1802 # e88be610 <__PRETTY_FUNCTION__.9500+0x38>
    e8848d22:	00076797          	auipc	a5,0x76
    e8848d26:	a3678793          	addi	a5,a5,-1482 # e88be758 <__PRETTY_FUNCTION__.9385>
    e8848d2a:	a7270713          	addi	a4,a4,-1422 # a72 <memcmp-0xe87ff58e>
				else { dlogassert( "bad number type %d", inType ); err = kParamErr; goto exit; }
    e8848d2e:	4501                	li	a0,0
    e8848d30:	00076697          	auipc	a3,0x76
    e8848d34:	8f868693          	addi	a3,a3,-1800 # e88be628 <__PRETTY_FUNCTION__.9500+0x50>
    e8848d38:	4601                	li	a2,0
    e8848d3a:	4581                	li	a1,0
    e8848d3c:	68c050ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8848d40:	7579                	lui	a0,0xffffe
    e8848d42:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8848d46:	bfb9                	j	e8848ca4 <CFLNumberGetValue+0xa4>
			if(      inType == kCFLNumberSInt8Type )	*( (int8_t *)			outValue ) = (int8_t)		object->value.s128.lo;
    e8848d48:	00d89463          	bne	a7,a3,e8848d50 <CFLNumberGetValue+0x150>
			else if( inType == kCFLNumberCharType )		*( (char *)				outValue ) = (char)			object->value.s128.lo;
    e8848d4c:	6d1c                	ld	a5,24(a0)
    e8848d4e:	bf1d                	j	e8848c84 <CFLNumberGetValue+0x84>
			else if( inType == kCFLNumberSInt16Type )	*( (int16_t *)			outValue ) = (int16_t)		object->value.s128.lo;
    e8848d50:	4789                	li	a5,2
    e8848d52:	00f89463          	bne	a7,a5,e8848d5a <CFLNumberGetValue+0x15a>
    e8848d56:	6d1c                	ld	a5,24(a0)
    e8848d58:	bf2d                	j	e8848c92 <CFLNumberGetValue+0x92>
			else if( inType == kCFLNumberSInt32Type )	*( (int32_t *)			outValue ) = (int32_t)		object->value.s128.lo;
    e8848d5a:	478d                	li	a5,3
    e8848d5c:	00f89463          	bne	a7,a5,e8848d64 <CFLNumberGetValue+0x164>
    e8848d60:	6d1c                	ld	a5,24(a0)
    e8848d62:	bf3d                	j	e8848ca0 <CFLNumberGetValue+0xa0>
			else if( inType == kCFLNumberSInt64Type )	*( (int64_t *)			outValue ) = (int64_t)		object->value.s128.lo;
    e8848d64:	4791                	li	a5,4
    e8848d66:	00f89463          	bne	a7,a5,e8848d6e <CFLNumberGetValue+0x16e>
    e8848d6a:	6d1c                	ld	a5,24(a0)
    e8848d6c:	b799                	j	e8848cb2 <CFLNumberGetValue+0xb2>
			else if( inType == kCFLNumberSInt128Type )	*( (int128_compat *)	outValue ) = object->value.s128;
    e8848d6e:	47bd                	li	a5,15
    e8848d70:	00f89663          	bne	a7,a5,e8848d7c <CFLNumberGetValue+0x17c>
    e8848d74:	691c                	ld	a5,16(a0)
    e8848d76:	e21c                	sd	a5,0(a2)
    e8848d78:	6d1c                	ld	a5,24(a0)
    e8848d7a:	b7a1                	j	e8848cc2 <CFLNumberGetValue+0xc2>
			else if( inType == kCFLNumberCharType )		*( (char *)				outValue ) = (char)			object->value.s128.lo;
    e8848d7c:	479d                	li	a5,7
    e8848d7e:	fcf887e3          	beq	a7,a5,e8848d4c <CFLNumberGetValue+0x14c>
			else if( inType == kCFLNumberShortType )	*( (short *)			outValue ) = (short)		object->value.s128.lo;
    e8848d82:	47a1                	li	a5,8
    e8848d84:	fcf889e3          	beq	a7,a5,e8848d56 <CFLNumberGetValue+0x156>
			else if( inType == kCFLNumberIntType )		*( (int *)				outValue ) = (int)			object->value.s128.lo;
    e8848d88:	47a5                	li	a5,9
    e8848d8a:	fcf88be3          	beq	a7,a5,e8848d60 <CFLNumberGetValue+0x160>
			else if( inType == kCFLNumberLongType )		*( (long *)				outValue ) = (long)			object->value.s128.lo;
    e8848d8e:	47a9                	li	a5,10
    e8848d90:	fcf88de3          	beq	a7,a5,e8848d6a <CFLNumberGetValue+0x16a>
			else if( inType == kCFLNumberLongLongType )	*( (long long *)		outValue ) = (long long)	object->value.s128.lo;
    e8848d94:	47ad                	li	a5,11
    e8848d96:	fcf88ae3          	beq	a7,a5,e8848d6a <CFLNumberGetValue+0x16a>
			else if( inType == kCFLNumberCFIndexType )	*( (CFLIndex *)			outValue ) = (CFLIndex)		object->value.s128.lo;
    e8848d9a:	47b9                	li	a5,14
    e8848d9c:	fcf882e3          	beq	a7,a5,e8848d60 <CFLNumberGetValue+0x160>
			else if( CFLNumberTypeIsFloatType( inType ) )
    e8848da0:	ffb8879b          	addiw	a5,a7,-5
    e8848da4:	0ff7f793          	andi	a5,a5,255
    e8848da8:	4705                	li	a4,1
    e8848daa:	00f77863          	bgeu	a4,a5,e8848dba <CFLNumberGetValue+0x1ba>
    e8848dae:	ff48879b          	addiw	a5,a7,-12
    e8848db2:	0ff7f793          	andi	a5,a5,255
    e8848db6:	06f76b63          	bltu	a4,a5,e8848e2c <CFLNumberGetValue+0x22c>
				if( object->value.s128.hi < 0 )
    e8848dba:	fae5478b          	ldd	a5,a4,(a0),1,4
    e8848dbe:	00076697          	auipc	a3,0x76
    e8848dc2:	93a6b687          	fld	fa3,-1734(a3) # e88be6f8 <__PRETTY_FUNCTION__.9500+0x120>
    e8848dc6:	0207d763          	bgez	a5,e8848df4 <CFLNumberGetValue+0x1f4>
					s128.lo = ~object->value.s128.lo + 1;
    e8848dca:	40e00733          	neg	a4,a4
					s128.hi = ~object->value.s128.hi + ( s128.lo == 0 );
    e8848dce:	fff7c793          	not	a5,a5
    e8848dd2:	00173693          	seqz	a3,a4
    e8848dd6:	97b6                	add	a5,a5,a3
					f64 = -( ( ( (Float64) s128.hi ) * 18446744073709551616.0 ) + ( (Float64) s128.lo ) );
    e8848dd8:	d227f7d3          	fcvt.d.l	fa5,a5
    e8848ddc:	d2377753          	fcvt.d.lu	fa4,a4
    e8848de0:	72d7f7c3          	fmadd.d	fa5,fa5,fa3,fa4
    e8848de4:	22f797d3          	fneg.d	fa5,fa5
				if(      inType == kCFLNumberFloat32Type )	*( (Float32 *)	outValue ) = (Float32)	f64;
    e8848de8:	4795                	li	a5,5
    e8848dea:	00f89c63          	bne	a7,a5,e8848e02 <CFLNumberGetValue+0x202>
			else if( inType == kCFLNumberFloatType )	*( (float *)		outValue ) = (float)	object->value.f64;
    e8848dee:	4017f7d3          	fcvt.s.d	fa5,fa5
    e8848df2:	b711                	j	e8848cf6 <CFLNumberGetValue+0xf6>
					f64 = ( ( (Float64) object->value.s128.hi ) * 18446744073709551616.0 ) + ( (Float64) object->value.s128.lo );
    e8848df4:	d227f7d3          	fcvt.d.l	fa5,a5
    e8848df8:	d2377753          	fcvt.d.lu	fa4,a4
    e8848dfc:	72d7f7c3          	fmadd.d	fa5,fa5,fa3,fa4
    e8848e00:	b7e5                	j	e8848de8 <CFLNumberGetValue+0x1e8>
				else if( inType == kCFLNumberFloat64Type )	*( (Float64 *)	outValue ) = (Float64)	f64;
    e8848e02:	4799                	li	a5,6
    e8848e04:	f0f882e3          	beq	a7,a5,e8848d08 <CFLNumberGetValue+0x108>
				else if( inType == kCFLNumberFloatType )	*( (float *)	outValue ) = (float)	f64;
    e8848e08:	47b1                	li	a5,12
    e8848e0a:	fef882e3          	beq	a7,a5,e8848dee <CFLNumberGetValue+0x1ee>
				else if( inType == kCFLNumberDoubleType )	*( (double *)	outValue ) = (double)	f64;
    e8848e0e:	47b5                	li	a5,13
    e8848e10:	eef88ce3          	beq	a7,a5,e8848d08 <CFLNumberGetValue+0x108>
				else { dlogassert( "bad number type %d", inType ); err = kParamErr; goto exit; }
    e8848e14:	6705                	lui	a4,0x1
    e8848e16:	00075817          	auipc	a6,0x75
    e8848e1a:	7fa80813          	addi	a6,a6,2042 # e88be610 <__PRETTY_FUNCTION__.9500+0x38>
    e8848e1e:	00076797          	auipc	a5,0x76
    e8848e22:	93a78793          	addi	a5,a5,-1734 # e88be758 <__PRETTY_FUNCTION__.9385>
    e8848e26:	a9570713          	addi	a4,a4,-1387 # a95 <memcmp-0xe87ff56b>
    e8848e2a:	b711                	j	e8848d2e <CFLNumberGetValue+0x12e>
			else { dlogassert( "bad number type %d", inType ); err = kParamErr; goto exit; }
    e8848e2c:	6705                	lui	a4,0x1
    e8848e2e:	00075817          	auipc	a6,0x75
    e8848e32:	7e280813          	addi	a6,a6,2018 # e88be610 <__PRETTY_FUNCTION__.9500+0x38>
    e8848e36:	00076797          	auipc	a5,0x76
    e8848e3a:	92278793          	addi	a5,a5,-1758 # e88be758 <__PRETTY_FUNCTION__.9385>
    e8848e3e:	a9870713          	addi	a4,a4,-1384 # a98 <memcmp-0xe87ff568>
    e8848e42:	b5f5                	j	e8848d2e <CFLNumberGetValue+0x12e>
			if(      inType == kCFLNumberSInt8Type )	*( (int8_t *)		outValue ) = (int8_t)	object->value.f64;
    e8848e44:	00d89663          	bne	a7,a3,e8848e50 <CFLNumberGetValue+0x250>
    e8848e48:	291c                	fld	fa5,16(a0)
    e8848e4a:	c20797d3          	fcvt.w.d	a5,fa5,rtz
    e8848e4e:	bd1d                	j	e8848c84 <CFLNumberGetValue+0x84>
			else if( inType == kCFLNumberSInt16Type )	*( (int16_t *)		outValue ) = (int16_t)	object->value.f64;
    e8848e50:	4789                	li	a5,2
    e8848e52:	00f89663          	bne	a7,a5,e8848e5e <CFLNumberGetValue+0x25e>
    e8848e56:	291c                	fld	fa5,16(a0)
    e8848e58:	c20797d3          	fcvt.w.d	a5,fa5,rtz
    e8848e5c:	bd1d                	j	e8848c92 <CFLNumberGetValue+0x92>
			else if( inType == kCFLNumberSInt32Type )	*( (int32_t *)		outValue ) = (int32_t)	object->value.f64;
    e8848e5e:	478d                	li	a5,3
    e8848e60:	00f89663          	bne	a7,a5,e8848e6c <CFLNumberGetValue+0x26c>
    e8848e64:	291c                	fld	fa5,16(a0)
    e8848e66:	c20797d3          	fcvt.w.d	a5,fa5,rtz
    e8848e6a:	bd1d                	j	e8848ca0 <CFLNumberGetValue+0xa0>
			else if( inType == kCFLNumberSInt64Type )	*( (int64_t *)		outValue ) = (int64_t)	object->value.f64;
    e8848e6c:	4791                	li	a5,4
    e8848e6e:	00f89663          	bne	a7,a5,e8848e7a <CFLNumberGetValue+0x27a>
			else if( inType == kCFLNumberLongLongType )	*( (long long *)	outValue ) = (long long) object->value.f64;
    e8848e72:	291c                	fld	fa5,16(a0)
    e8848e74:	c22797d3          	fcvt.l.d	a5,fa5,rtz
    e8848e78:	bd2d                	j	e8848cb2 <CFLNumberGetValue+0xb2>
			else if( inType == kCFLNumberSInt128Type )
    e8848e7a:	47bd                	li	a5,15
    e8848e7c:	06f89363          	bne	a7,a5,e8848ee2 <CFLNumberGetValue+0x2e2>
				if( object->value.f64 < -170141183460469231731687303715884105728.0 ) // -1*10^127
    e8848e80:	291c                	fld	fa5,16(a0)
    e8848e82:	00076797          	auipc	a5,0x76
    e8848e86:	87e7b707          	fld	fa4,-1922(a5) # e88be700 <__PRETTY_FUNCTION__.9500+0x128>
    e8848e8a:	a2e797d3          	flt.d	a5,fa5,fa4
    e8848e8e:	c799                	beqz	a5,e8848e9c <CFLNumberGetValue+0x29c>
					p128->hi = INT64_MIN;
    e8848e90:	57fd                	li	a5,-1
    e8848e92:	17fe                	slli	a5,a5,0x3f
    e8848e94:	e21c                	sd	a5,0(a2)
					p128->lo = 0;
    e8848e96:	00063423          	sd	zero,8(a2)
    e8848e9a:	b521                	j	e8848ca2 <CFLNumberGetValue+0xa2>
				else if( object->value.f64 >= 170141183460469231731687303715884105728.0 ) // 1*10^127
    e8848e9c:	00076797          	auipc	a5,0x76
    e8848ea0:	86c7b707          	fld	fa4,-1940(a5) # e88be708 <__PRETTY_FUNCTION__.9500+0x130>
    e8848ea4:	a2f707d3          	fle.d	a5,fa4,fa5
    e8848ea8:	c791                	beqz	a5,e8848eb4 <CFLNumberGetValue+0x2b4>
					p128->hi = INT64_C( 0x7FFFFFFFFFFFFFFF );
    e8848eaa:	57fd                	li	a5,-1
    e8848eac:	0017d713          	srli	a4,a5,0x1
    e8848eb0:	e218                	sd	a4,0(a2)
					p128->lo = UINT64_C( 0xFFFFFFFFFFFFFFFF );
    e8848eb2:	bd01                	j	e8848cc2 <CFLNumberGetValue+0xc2>
					f64 = floor( object->value.f64 / 18446744073709551616.0 ); // 2^64
    e8848eb4:	00076797          	auipc	a5,0x76
    e8848eb8:	85c7b707          	fld	fa4,-1956(a5) # e88be710 <__PRETTY_FUNCTION__.9500+0x138>
    e8848ebc:	12e7f7d3          	fmul.d	fa5,fa5,fa4
    e8848ec0:	c22797d3          	fcvt.l.d	a5,fa5,rtz
    e8848ec4:	d227f7d3          	fcvt.d.l	fa5,a5
					p128->hi = (int64_t) f64;
    e8848ec8:	c22797d3          	fcvt.l.d	a5,fa5,rtz
    e8848ecc:	e21c                	sd	a5,0(a2)
					p128->lo = (uint64_t)( object->value.f64 - ( f64 * 18446744073709551616.0 ) );
    e8848ece:	2918                	fld	fa4,16(a0)
    e8848ed0:	00076797          	auipc	a5,0x76
    e8848ed4:	8287b687          	fld	fa3,-2008(a5) # e88be6f8 <__PRETTY_FUNCTION__.9500+0x120>
    e8848ed8:	72d7f7cb          	fnmsub.d	fa5,fa5,fa3,fa4
    e8848edc:	c23797d3          	fcvt.lu.d	a5,fa5,rtz
    e8848ee0:	b3cd                	j	e8848cc2 <CFLNumberGetValue+0xc2>
			else if( inType == kCFLNumberCharType )		*( (char *)			outValue ) = (char)		object->value.f64;
    e8848ee2:	479d                	li	a5,7
    e8848ee4:	00f89663          	bne	a7,a5,e8848ef0 <CFLNumberGetValue+0x2f0>
    e8848ee8:	291c                	fld	fa5,16(a0)
    e8848eea:	c21797d3          	fcvt.wu.d	a5,fa5,rtz
    e8848eee:	bb59                	j	e8848c84 <CFLNumberGetValue+0x84>
			else if( inType == kCFLNumberShortType )	*( (short *)		outValue ) = (short)	object->value.f64;
    e8848ef0:	47a1                	li	a5,8
    e8848ef2:	f6f882e3          	beq	a7,a5,e8848e56 <CFLNumberGetValue+0x256>
			else if( inType == kCFLNumberIntType )		*( (int *)			outValue ) = (int)		object->value.f64;
    e8848ef6:	47a5                	li	a5,9
    e8848ef8:	f6f886e3          	beq	a7,a5,e8848e64 <CFLNumberGetValue+0x264>
			else if( inType == kCFLNumberLongType )		*( (long *)			outValue ) = (long)		object->value.f64;
    e8848efc:	47a9                	li	a5,10
    e8848efe:	f6f88ae3          	beq	a7,a5,e8848e72 <CFLNumberGetValue+0x272>
			else if( inType == kCFLNumberLongLongType )	*( (long long *)	outValue ) = (long long) object->value.f64;
    e8848f02:	47ad                	li	a5,11
    e8848f04:	f6f887e3          	beq	a7,a5,e8848e72 <CFLNumberGetValue+0x272>
			else if( inType == kCFLNumberCFIndexType )	*( (CFLIndex *)		outValue ) = (CFLIndex)	object->value.f64;
    e8848f08:	47b9                	li	a5,14
    e8848f0a:	f4f88de3          	beq	a7,a5,e8848e64 <CFLNumberGetValue+0x264>
			else if( inType == kCFLNumberFloat32Type )	*( (Float32 *)		outValue ) = (Float32)	object->value.f64;
    e8848f0e:	4795                	li	a5,5
    e8848f10:	00f89463          	bne	a7,a5,e8848f18 <CFLNumberGetValue+0x318>
			else if( inType == kCFLNumberFloatType )	*( (float *)		outValue ) = (float)	object->value.f64;
    e8848f14:	291c                	fld	fa5,16(a0)
    e8848f16:	bde1                	j	e8848dee <CFLNumberGetValue+0x1ee>
			else if( inType == kCFLNumberFloat64Type )	*( (Float64 *)		outValue ) =			object->value.f64;
    e8848f18:	4799                	li	a5,6
    e8848f1a:	00f89463          	bne	a7,a5,e8848f22 <CFLNumberGetValue+0x322>
    e8848f1e:	291c                	fld	fa5,16(a0)
    e8848f20:	b3e5                	j	e8848d08 <CFLNumberGetValue+0x108>
			else if( inType == kCFLNumberFloatType )	*( (float *)		outValue ) = (float)	object->value.f64;
    e8848f22:	47b1                	li	a5,12
    e8848f24:	fef888e3          	beq	a7,a5,e8848f14 <CFLNumberGetValue+0x314>
			else if( inType == kCFLNumberDoubleType )	*( (double *)		outValue ) = (double)	object->value.f64;
    e8848f28:	47b5                	li	a5,13
    e8848f2a:	fef88ae3          	beq	a7,a5,e8848f1e <CFLNumberGetValue+0x31e>
			else { dlogassert( "bad number type %d", inType ); err = kParamErr; goto exit; }
    e8848f2e:	6705                	lui	a4,0x1
    e8848f30:	00075817          	auipc	a6,0x75
    e8848f34:	6e080813          	addi	a6,a6,1760 # e88be610 <__PRETTY_FUNCTION__.9500+0x38>
    e8848f38:	00076797          	auipc	a5,0x76
    e8848f3c:	82078793          	addi	a5,a5,-2016 # e88be758 <__PRETTY_FUNCTION__.9385>
    e8848f40:	ac470713          	addi	a4,a4,-1340 # ac4 <memcmp-0xe87ff53c>
    e8848f44:	b3ed                	j	e8848d2e <CFLNumberGetValue+0x12e>
	require_action( CFLValidObjectType( inObject, kCFLTypeNumber ), exit, err = kBadReferenceErr );
    e8848f46:	7579                	lui	a0,0xffffe
    e8848f48:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8848f4c:	8082                	ret

00000000e8848f4e <CFLNumberIsFloatType>:
	return( false );
    e8848f4e:	4781                	li	a5,0
	require( CFLValidObjectType( inNumber, kCFLTypeNumber ), exit );
    e8848f50:	cd15                	beqz	a0,e8848f8c <CFLNumberIsFloatType+0x3e>
    e8848f52:	00054683          	lbu	a3,0(a0)
    e8848f56:	05600713          	li	a4,86
	return( false );
    e8848f5a:	4781                	li	a5,0
	require( CFLValidObjectType( inNumber, kCFLTypeNumber ), exit );
    e8848f5c:	02e69863          	bne	a3,a4,e8848f8c <CFLNumberIsFloatType+0x3e>
    e8848f60:	00154683          	lbu	a3,1(a0)
    e8848f64:	4719                	li	a4,6
    e8848f66:	02e69363          	bne	a3,a4,e8848f8c <CFLNumberIsFloatType+0x3e>
	return( CFLNumberTypeIsFloatType( object->type ) );
    e8848f6a:	00854703          	lbu	a4,8(a0)
    e8848f6e:	4785                	li	a5,1
    e8848f70:	ffb7069b          	addiw	a3,a4,-5
    e8848f74:	0ff6f693          	andi	a3,a3,255
    e8848f78:	00d7f863          	bgeu	a5,a3,e8848f88 <CFLNumberIsFloatType+0x3a>
    e8848f7c:	ff47079b          	addiw	a5,a4,-12
    e8848f80:	0ff7f793          	andi	a5,a5,255
    e8848f84:	0027b793          	sltiu	a5,a5,2
    e8848f88:	0ff7f793          	andi	a5,a5,255
}
    e8848f8c:	853e                	mv	a0,a5
    e8848f8e:	8082                	ret

00000000e8848f90 <CFLStringGetTypeID>:
}
    e8848f90:	451d                	li	a0,7
    e8848f92:	8082                	ret

00000000e8848f94 <CFLStringGetLength>:
{
    e8848f94:	1101                	addi	sp,sp,-32
    e8848f96:	ec06                	sd	ra,24(sp)
    e8848f98:	e422                	sd	s0,8(sp)
    e8848f9a:	e826                	sd	s1,16(sp)
	require_action( CFLValidObjectType( inObject, kCFLTypeString ), exit, err = kBadReferenceErr );
    e8848f9c:	c129                	beqz	a0,e8848fde <CFLStringGetLength+0x4a>
    e8848f9e:	00054703          	lbu	a4,0(a0)
    e8848fa2:	05600793          	li	a5,86
    e8848fa6:	02f71c63          	bne	a4,a5,e8848fde <CFLStringGetLength+0x4a>
    e8848faa:	00154703          	lbu	a4,1(a0)
    e8848fae:	479d                	li	a5,7
    e8848fb0:	02f71763          	bne	a4,a5,e8848fde <CFLStringGetLength+0x4a>
	if( CFLIsConstantObject( inObject ) )
    e8848fb4:	00254783          	lbu	a5,2(a0)
	err = kNoErr;
    e8848fb8:	4401                	li	s0,0
	if( CFLIsConstantObject( inObject ) )
    e8848fba:	8b85                	andi	a5,a5,1
    e8848fbc:	cf89                	beqz	a5,e8848fd6 <CFLStringGetLength+0x42>
		if( outLength ) *outLength = (CFLIndex) strlen( CFLGetConstantStringPtr( object ) );
    e8848fbe:	c591                	beqz	a1,e8848fca <CFLStringGetLength+0x36>
    e8848fc0:	0521                	addi	a0,a0,8
    e8848fc2:	84ae                	mv	s1,a1
    e8848fc4:	354330ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8848fc8:	c088                	sw	a0,0(s1)
}
    e8848fca:	8522                	mv	a0,s0
    e8848fcc:	60e2                	ld	ra,24(sp)
    e8848fce:	6422                	ld	s0,8(sp)
    e8848fd0:	64c2                	ld	s1,16(sp)
    e8848fd2:	6105                	addi	sp,sp,32
    e8848fd4:	8082                	ret
		if( outLength ) *outLength = (CFLIndex) object->size;
    e8848fd6:	d9f5                	beqz	a1,e8848fca <CFLStringGetLength+0x36>
    e8848fd8:	691c                	ld	a5,16(a0)
    e8848fda:	c19c                	sw	a5,0(a1)
    e8848fdc:	b7fd                	j	e8848fca <CFLStringGetLength+0x36>
	require_action( CFLValidObjectType( inObject, kCFLTypeString ), exit, err = kBadReferenceErr );
    e8848fde:	7479                	lui	s0,0xffffe
    e8848fe0:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8848fe4:	b7dd                	j	e8848fca <CFLStringGetLength+0x36>

00000000e8848fe6 <CFLStringGetCStringPtr>:
	require_action( CFLValidObjectType( inObject, kCFLTypeString ), exit, err = kBadReferenceErr );
    e8848fe6:	c939                	beqz	a0,e884903c <CFLStringGetCStringPtr+0x56>
    e8848fe8:	00054703          	lbu	a4,0(a0)
    e8848fec:	05600793          	li	a5,86
    e8848ff0:	04f71663          	bne	a4,a5,e884903c <CFLStringGetCStringPtr+0x56>
    e8848ff4:	00154703          	lbu	a4,1(a0)
    e8848ff8:	479d                	li	a5,7
    e8848ffa:	04f71163          	bne	a4,a5,e884903c <CFLStringGetCStringPtr+0x56>
	if( CFLIsConstantObject( inObject ) )
    e8848ffe:	00254783          	lbu	a5,2(a0)
    e8849002:	8b85                	andi	a5,a5,1
    e8849004:	c78d                	beqz	a5,e884902e <CFLStringGetCStringPtr+0x48>
		s = CFLGetConstantStringPtr( object );
    e8849006:	0521                	addi	a0,a0,8
		if( outCString )	*outCString = s;
    e8849008:	c191                	beqz	a1,e884900c <CFLStringGetCStringPtr+0x26>
    e884900a:	e188                	sd	a0,0(a1)
		if( outSize )		*outSize	= strlen( s );
    e884900c:	e219                	bnez	a2,e8849012 <CFLStringGetCStringPtr+0x2c>
	err = kNoErr;
    e884900e:	4501                	li	a0,0
    e8849010:	8082                	ret
{
    e8849012:	1141                	addi	sp,sp,-16
    e8849014:	e022                	sd	s0,0(sp)
    e8849016:	e406                	sd	ra,8(sp)
    e8849018:	8432                	mv	s0,a2
		if( outSize )		*outSize	= strlen( s );
    e884901a:	2fe330ef          	jal	ra,e887c318 <eLIBs_strlen>
    e884901e:	7c05350b          	extu	a0,a0,31,0
    e8849022:	e008                	sd	a0,0(s0)
}
    e8849024:	60a2                	ld	ra,8(sp)
    e8849026:	6402                	ld	s0,0(sp)
		if( outSize )		*outSize	= strlen( s );
    e8849028:	4501                	li	a0,0
}
    e884902a:	0141                	addi	sp,sp,16
    e884902c:	8082                	ret
		if( outCString ) 	*outCString = object->data;
    e884902e:	c199                	beqz	a1,e8849034 <CFLStringGetCStringPtr+0x4e>
    e8849030:	651c                	ld	a5,8(a0)
    e8849032:	e19c                	sd	a5,0(a1)
		if( outSize )		*outSize	= object->size;
    e8849034:	de69                	beqz	a2,e884900e <CFLStringGetCStringPtr+0x28>
    e8849036:	691c                	ld	a5,16(a0)
    e8849038:	e21c                	sd	a5,0(a2)
    e884903a:	bfd1                	j	e884900e <CFLStringGetCStringPtr+0x28>
	require_action( CFLValidObjectType( inObject, kCFLTypeString ), exit, err = kBadReferenceErr );
    e884903c:	7579                	lui	a0,0xffffe
    e884903e:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e8849042:	8082                	ret

00000000e8849044 <CFLStringSetText>:
	require_action( CFLValidObjectType( inObject, kCFLTypeString ), exit, err = kBadReferenceErr );
    e8849044:	c951                	beqz	a0,e88490d8 <CFLStringSetText+0x94>
    e8849046:	00054703          	lbu	a4,0(a0)
    e884904a:	05600793          	li	a5,86
    e884904e:	08f71563          	bne	a4,a5,e88490d8 <CFLStringSetText+0x94>
    e8849052:	00154703          	lbu	a4,1(a0)
    e8849056:	479d                	li	a5,7
    e8849058:	08f71063          	bne	a4,a5,e88490d8 <CFLStringSetText+0x94>
	require_action( !CFLIsConstantObject( inObject ), exit, err = kImmutableErr );
    e884905c:	00254783          	lbu	a5,2(a0)
    e8849060:	8b85                	andi	a5,a5,1
    e8849062:	efbd                	bnez	a5,e88490e0 <CFLStringSetText+0x9c>
{
    e8849064:	7179                	addi	sp,sp,-48
    e8849066:	e826                	sd	s1,16(sp)
    e8849068:	ec4a                	sd	s2,24(sp)
    e884906a:	f406                	sd	ra,40(sp)
    e884906c:	e422                	sd	s0,8(sp)
    e884906e:	f04e                	sd	s3,32(sp)
    e8849070:	892e                	mv	s2,a1
    e8849072:	84aa                	mv	s1,a0
	require_action( ( inSize == 0 ) || inText, exit, err = kParamErr );
    e8849074:	c631                	beqz	a2,e88490c0 <CFLStringSetText+0x7c>
    e8849076:	c9ad                	beqz	a1,e88490e8 <CFLStringSetText+0xa4>
	if( inSize == kSizeCString )	inSize = strlen( (const char *) inText );
    e8849078:	57fd                	li	a5,-1
    e884907a:	04f61363          	bne	a2,a5,e88490c0 <CFLStringSetText+0x7c>
    e884907e:	852e                	mv	a0,a1
    e8849080:	298330ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8849084:	7c05340b          	extu	s0,a0,31,0
	s = (char *) malloc( inSize + 1 );
    e8849088:	00140513          	addi	a0,s0,1
    e884908c:	7c2320ef          	jal	ra,e887b84e <my_malloc>
    e8849090:	89aa                	mv	s3,a0
	require_action( s, exit, err = kNoMemoryErr );
    e8849092:	cd39                	beqz	a0,e88490f0 <CFLStringSetText+0xac>
	if( inSize > 0 ) memcpy( s, inText, inSize );
    e8849094:	c409                	beqz	s0,e884909e <CFLStringSetText+0x5a>
    e8849096:	8622                	mv	a2,s0
    e8849098:	85ca                	mv	a1,s2
    e884909a:	306330ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	s[ inSize ] = '\0';
    e884909e:	0089d00b          	srb	zero,s3,s0,0
	if( object->data ) free( object->data );
    e88490a2:	6488                	ld	a0,8(s1)
    e88490a4:	c119                	beqz	a0,e88490aa <CFLStringSetText+0x66>
    e88490a6:	25a330ef          	jal	ra,e887c300 <eLIBs_free>
	object->data = s;
    e88490aa:	0134b423          	sd	s3,8(s1)
	object->size = inSize;
    e88490ae:	e880                	sd	s0,16(s1)
	err = kNoErr;
    e88490b0:	4501                	li	a0,0
}
    e88490b2:	70a2                	ld	ra,40(sp)
    e88490b4:	6422                	ld	s0,8(sp)
    e88490b6:	64c2                	ld	s1,16(sp)
    e88490b8:	6962                	ld	s2,24(sp)
    e88490ba:	7982                	ld	s3,32(sp)
    e88490bc:	6145                	addi	sp,sp,48
    e88490be:	8082                	ret
{
	const char *		src;
	const char *		end;
	
	src = inString;
	end = src + inMax;
    e88490c0:	964a                	add	a2,a2,s2
    e88490c2:	844a                	mv	s0,s2
	while( ( src < end ) && ( *src != '\0' ) ) ++src;
    e88490c4:	00c46563          	bltu	s0,a2,e88490ce <CFLStringSetText+0x8a>
	return( (size_t)( src - inString ) );
    e88490c8:	41240433          	sub	s0,s0,s2
    e88490cc:	bf75                	j	e8849088 <CFLStringSetText+0x44>
	while( ( src < end ) && ( *src != '\0' ) ) ++src;
    e88490ce:	00044783          	lbu	a5,0(s0)
    e88490d2:	dbfd                	beqz	a5,e88490c8 <CFLStringSetText+0x84>
    e88490d4:	0405                	addi	s0,s0,1
    e88490d6:	b7fd                	j	e88490c4 <CFLStringSetText+0x80>
	require_action( CFLValidObjectType( inObject, kCFLTypeString ), exit, err = kBadReferenceErr );
    e88490d8:	7579                	lui	a0,0xffffe
    e88490da:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e88490de:	8082                	ret
	require_action( !CFLIsConstantObject( inObject ), exit, err = kImmutableErr );
    e88490e0:	7579                	lui	a0,0xffffe
    e88490e2:	5b550513          	addi	a0,a0,1461 # ffffffffffffe5b5 <__DRAM0_INF_BASE+0xffffffff0000e5b5>
}
    e88490e6:	8082                	ret
	require_action( ( inSize == 0 ) || inText, exit, err = kParamErr );
    e88490e8:	7579                	lui	a0,0xffffe
    e88490ea:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e88490ee:	b7d1                	j	e88490b2 <CFLStringSetText+0x6e>
	require_action( s, exit, err = kNoMemoryErr );
    e88490f0:	7579                	lui	a0,0xffffe
    e88490f2:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88490f6:	bf75                	j	e88490b2 <CFLStringSetText+0x6e>

00000000e88490f8 <CFLStringCreateWithText>:
{
    e88490f8:	7179                	addi	sp,sp,-48
    e88490fa:	f406                	sd	ra,40(sp)
    e88490fc:	f04a                	sd	s2,32(sp)
    e88490fe:	fa91540b          	sdd	s0,s1,(sp),1,4
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e8849102:	e129                	bnez	a0,e8849144 <CFLStringCreateWithText+0x4c>
	require_action( ( inTextSize == 0 ) || inText, exit, err = kParamErr );
    e8849104:	c211                	beqz	a2,e8849108 <CFLStringCreateWithText+0x10>
    e8849106:	cd9d                	beqz	a1,e8849144 <CFLStringCreateWithText+0x4c>
	require_action( outRef, exit, err = kParamErr );
    e8849108:	ce95                	beqz	a3,e8849144 <CFLStringCreateWithText+0x4c>
	object = (CFLString *) calloc( 1U, sizeof( CFLString ) );
    e884910a:	4561                	li	a0,24
    e884910c:	8936                	mv	s2,a3
    e884910e:	e432                	sd	a2,8(sp)
    e8849110:	e02e                	sd	a1,0(sp)
    e8849112:	97dfe0ef          	jal	ra,e8847a8e <calloc.constprop.10>
    e8849116:	84aa                	mv	s1,a0
	require_action( object, exit, err = kNoMemoryErr );
    e8849118:	c915                	beqz	a0,e884914c <CFLStringCreateWithText+0x54>
	object->base.signature		= kCFLSignatureValid;
    e884911a:	75600793          	li	a5,1878
	err = CFLStringSetText( (CFLStringRef) object, inText, inTextSize );
    e884911e:	6622                	ld	a2,8(sp)
    e8849120:	6582                	ld	a1,0(sp)
	object->base.signature		= kCFLSignatureValid;
    e8849122:	00f51023          	sh	a5,0(a0)
	object->base.retainCount	= 1;
    e8849126:	4785                	li	a5,1
    e8849128:	c15c                	sw	a5,4(a0)
	err = CFLStringSetText( (CFLStringRef) object, inText, inTextSize );
    e884912a:	f1bff0ef          	jal	ra,e8849044 <CFLStringSetText>
    e884912e:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8849130:	e115                	bnez	a0,e8849154 <CFLStringCreateWithText+0x5c>
	*outRef = (CFLStringRef) object;
    e8849132:	00993023          	sd	s1,0(s2)
}
    e8849136:	8522                	mv	a0,s0
    e8849138:	70a2                	ld	ra,40(sp)
    e884913a:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884913e:	7902                	ld	s2,32(sp)
    e8849140:	6145                	addi	sp,sp,48
    e8849142:	8082                	ret
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e8849144:	7479                	lui	s0,0xffffe
    e8849146:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e884914a:	b7f5                	j	e8849136 <CFLStringCreateWithText+0x3e>
	require_action( object, exit, err = kNoMemoryErr );
    e884914c:	7479                	lui	s0,0xffffe
    e884914e:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8849152:	b7d5                	j	e8849136 <CFLStringCreateWithText+0x3e>
	if( object ) CFLRelease( (CFLStringRef) object );
    e8849154:	8526                	mv	a0,s1
    e8849156:	ac1fe0ef          	jal	ra,e8847c16 <CFLRelease>
	return( err );
    e884915a:	bff1                	j	e8849136 <CFLStringCreateWithText+0x3e>

00000000e884915c <CFLCopy>:
{
    e884915c:	7159                	addi	sp,sp,-112
    e884915e:	f486                	sd	ra,104(sp)
    e8849160:	f0a2                	sd	s0,96(sp)
    e8849162:	eca6                	sd	s1,88(sp)
    e8849164:	e8ca                	sd	s2,80(sp)
    e8849166:	e4ce                	sd	s3,72(sp)
    e8849168:	e0d2                	sd	s4,64(sp)
    e884916a:	fc56                	sd	s5,56(sp)
	require_action( outDst, exit, err = kParamErr );
    e884916c:	22058263          	beqz	a1,e8849390 <CFLCopy+0x234>
    e8849170:	892e                	mv	s2,a1
	err = CFLGetTypeID( inSrc, &typeID );
    e8849172:	858a                	mv	a1,sp
    e8849174:	84aa                	mv	s1,a0
    e8849176:	a21fe0ef          	jal	ra,e8847b96 <CFLGetTypeID>
    e884917a:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e884917c:	e151                	bnez	a0,e8849200 <CFLCopy+0xa4>
	if( typeID == CFLArrayGetTypeID() )				// Array
    e884917e:	4882                	lw	a7,0(sp)
    e8849180:	4785                	li	a5,1
    e8849182:	06f89a63          	bne	a7,a5,e88491f6 <CFLCopy+0x9a>
	err = CFLArrayCreate( kCFLAllocatorDefault, &kCFLArrayCallBacksCFLTypes, &newArray );
    e8849186:	0030                	addi	a2,sp,8
    e8849188:	00075597          	auipc	a1,0x75
    e884918c:	5e858593          	addi	a1,a1,1512 # e88be770 <kCFLArrayCallBacksCFLTypes>
	newArray = NULL;
    e8849190:	e402                	sd	zero,8(sp)
	err = CFLArrayCreate( kCFLAllocatorDefault, &kCFLArrayCallBacksCFLTypes, &newArray );
    e8849192:	c03fe0ef          	jal	ra,e8847d94 <CFLArrayCreate>
    e8849196:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8849198:	e901                	bnez	a0,e88491a8 <CFLCopy+0x4c>
	err = CFLArrayGetCount( inSrc, &n );
    e884919a:	004c                	addi	a1,sp,4
    e884919c:	8526                	mv	a0,s1
    e884919e:	c61fe0ef          	jal	ra,e8847dfe <CFLArrayGetCount>
    e88491a2:	842a                	mv	s0,a0
	for( i = 0; i < n; ++i )
    e88491a4:	4981                	li	s3,0
	require_noerr( err, exit );
    e88491a6:	cd05                	beqz	a0,e88491de <CFLCopy+0x82>
	if( newDict )	CFLRelease( newDict );
    e88491a8:	6522                	ld	a0,8(sp)
    e88491aa:	c939                	beqz	a0,e8849200 <CFLCopy+0xa4>
    e88491ac:	a6bfe0ef          	jal	ra,e8847c16 <CFLRelease>
		require_noerr( err, exit );
    e88491b0:	a881                	j	e8849200 <CFLCopy+0xa4>
		err = CFLArrayGetValueAtIndex( inSrc, i, (void *) &oldValue );
    e88491b2:	0810                	addi	a2,sp,16
    e88491b4:	85ce                	mv	a1,s3
    e88491b6:	8526                	mv	a0,s1
    e88491b8:	c75fe0ef          	jal	ra,e8847e2c <CFLArrayGetValueAtIndex>
		require_noerr( err, exit );
    e88491bc:	e90d                	bnez	a0,e88491ee <CFLCopy+0x92>
		err = CFLCopy( oldValue, &newValue );
    e88491be:	6542                	ld	a0,16(sp)
    e88491c0:	082c                	addi	a1,sp,24
    e88491c2:	f9bff0ef          	jal	ra,e884915c <CFLCopy>
		require_noerr( err, exit );
    e88491c6:	e505                	bnez	a0,e88491ee <CFLCopy+0x92>
		err = CFLArrayAppendValue( newArray, newValue );
    e88491c8:	65e2                	ld	a1,24(sp)
    e88491ca:	6522                	ld	a0,8(sp)
    e88491cc:	d81fe0ef          	jal	ra,e8847f4c <CFLArrayAppendValue>
    e88491d0:	8a2a                	mv	s4,a0
		CFLRelease( newValue );
    e88491d2:	6562                	ld	a0,24(sp)
    e88491d4:	a43fe0ef          	jal	ra,e8847c16 <CFLRelease>
		require_noerr( err, exit );
    e88491d8:	000a1d63          	bnez	s4,e88491f2 <CFLCopy+0x96>
	for( i = 0; i < n; ++i )
    e88491dc:	2985                	addiw	s3,s3,1
    e88491de:	4792                	lw	a5,4(sp)
    e88491e0:	fcf9c9e3          	blt	s3,a5,e88491b2 <CFLCopy+0x56>
	*outDst = newArray;
    e88491e4:	67a2                	ld	a5,8(sp)
	newArray = NULL;
    e88491e6:	e402                	sd	zero,8(sp)
	*outDst = newArray;
    e88491e8:	00f93023          	sd	a5,0(s2)
	newArray = NULL;
    e88491ec:	bf75                	j	e88491a8 <CFLCopy+0x4c>
		err = CFLCopy( oldValue, &newValue );
    e88491ee:	842a                	mv	s0,a0
    e88491f0:	bf65                	j	e88491a8 <CFLCopy+0x4c>
		err = CFLArrayAppendValue( newArray, newValue );
    e88491f2:	8452                	mv	s0,s4
    e88491f4:	bf55                	j	e88491a8 <CFLCopy+0x4c>
	else if( typeID == CFLBooleanGetTypeID() )		// Boolean
    e88491f6:	4789                	li	a5,2
    e88491f8:	00f89e63          	bne	a7,a5,e8849214 <CFLCopy+0xb8>
		*outDst = inSrc;
    e88491fc:	00993023          	sd	s1,0(s2)
}
    e8849200:	8522                	mv	a0,s0
    e8849202:	70a6                	ld	ra,104(sp)
    e8849204:	7406                	ld	s0,96(sp)
    e8849206:	64e6                	ld	s1,88(sp)
    e8849208:	6946                	ld	s2,80(sp)
    e884920a:	69a6                	ld	s3,72(sp)
    e884920c:	6a06                	ld	s4,64(sp)
    e884920e:	7ae2                	ld	s5,56(sp)
    e8849210:	6165                	addi	sp,sp,112
    e8849212:	8082                	ret
	else if( typeID == CFLDataGetTypeID() )			// Data
    e8849214:	478d                	li	a5,3
    e8849216:	02f89063          	bne	a7,a5,e8849236 <CFLCopy+0xda>
	err = CFLDataGetDataPtr( inSrc, &p, &n );
    e884921a:	0830                	addi	a2,sp,24
    e884921c:	080c                	addi	a1,sp,16
    e884921e:	8526                	mv	a0,s1
    e8849220:	8eeff0ef          	jal	ra,e884830e <CFLDataGetDataPtr>
    e8849224:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8849226:	fd69                	bnez	a0,e8849200 <CFLCopy+0xa4>
	err = CFLDataCreate( kCFLAllocatorDefault, p, n, outDst );
    e8849228:	6662                	ld	a2,24(sp)
    e884922a:	65c2                	ld	a1,16(sp)
    e884922c:	86ca                	mv	a3,s2
    e884922e:	fd7fe0ef          	jal	ra,e8848204 <CFLDataCreate>
	err = CFLStringCreateWithText( kCFLAllocatorDefault, p, n, outDst );
    e8849232:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e8849234:	b7f1                	j	e8849200 <CFLCopy+0xa4>
	else if( typeID == CFLDateGetTypeID() )			// Date
    e8849236:	4791                	li	a5,4
    e8849238:	00f89d63          	bne	a7,a5,e8849252 <CFLCopy+0xf6>
	err = CFLDateGetDate( inSrc, &dateComponents );
    e884923c:	082c                	addi	a1,sp,24
    e884923e:	8526                	mv	a0,s1
    e8849240:	906ff0ef          	jal	ra,e8848346 <CFLDateGetDate>
    e8849244:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8849246:	fd4d                	bnez	a0,e8849200 <CFLCopy+0xa4>
	err = CFLDateCreate( kCFLAllocatorDefault, &dateComponents, outDst );
    e8849248:	864a                	mv	a2,s2
    e884924a:	082c                	addi	a1,sp,24
    e884924c:	96aff0ef          	jal	ra,e88483b6 <CFLDateCreate>
    e8849250:	b7cd                	j	e8849232 <CFLCopy+0xd6>
	else if( typeID == CFLDictionaryGetTypeID() )	// Dictionary
    e8849252:	4795                	li	a5,5
    e8849254:	08f89e63          	bne	a7,a5,e88492f0 <CFLCopy+0x194>
	err = CFLDictionaryCreate( kCFLAllocatorDefault, 0, &kCFLDictionaryKeyCallBacksCFLTypes, 
    e8849258:	0038                	addi	a4,sp,8
    e884925a:	00075697          	auipc	a3,0x75
    e884925e:	56e68693          	addi	a3,a3,1390 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8849262:	00075617          	auipc	a2,0x75
    e8849266:	53660613          	addi	a2,a2,1334 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884926a:	4581                	li	a1,0
	newDict		= NULL;
    e884926c:	e402                	sd	zero,8(sp)
	newKey 		= NULL;
    e884926e:	e802                	sd	zero,16(sp)
	newValue	= NULL;
    e8849270:	ec02                	sd	zero,24(sp)
	err = CFLDictionaryCreate( kCFLAllocatorDefault, 0, &kCFLDictionaryKeyCallBacksCFLTypes, 
    e8849272:	9a8ff0ef          	jal	ra,e884841a <CFLDictionaryCreate>
    e8849276:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8849278:	ed01                	bnez	a0,e8849290 <CFLCopy+0x134>
	n = object->bucketCount;
    e884927a:	0644aa83          	lw	s5,100(s1)
    e884927e:	4a01                	li	s4,0
	for( i = 0; i < n; ++i )
    e8849280:	000a079b          	sext.w	a5,s4
    e8849284:	0357c063          	blt	a5,s5,e88492a4 <CFLCopy+0x148>
	*outDst = newDict;
    e8849288:	67a2                	ld	a5,8(sp)
	newDict = NULL;
    e884928a:	e402                	sd	zero,8(sp)
	*outDst = newDict;
    e884928c:	00f93023          	sd	a5,0(s2)
	if( newKey )	CFLRelease( newKey );
    e8849290:	6542                	ld	a0,16(sp)
    e8849292:	c119                	beqz	a0,e8849298 <CFLCopy+0x13c>
    e8849294:	983fe0ef          	jal	ra,e8847c16 <CFLRelease>
	if( newValue )	CFLRelease( newValue );
    e8849298:	6562                	ld	a0,24(sp)
    e884929a:	f00507e3          	beqz	a0,e88491a8 <CFLCopy+0x4c>
    e884929e:	979fe0ef          	jal	ra,e8847c16 <CFLRelease>
    e88492a2:	b719                	j	e88491a8 <CFLCopy+0x4c>
		for( node = object->buckets[ i ]; node; node = node->next )
    e88492a4:	74bc                	ld	a5,104(s1)
    e88492a6:	6747c98b          	lrd	s3,a5,s4,3
    e88492aa:	00099463          	bnez	s3,e88492b2 <CFLCopy+0x156>
	for( i = 0; i < n; ++i )
    e88492ae:	0a05                	addi	s4,s4,1
    e88492b0:	bfc1                	j	e8849280 <CFLCopy+0x124>
			err = CFLCopy( node->key, &newKey );
    e88492b2:	0089b503          	ld	a0,8(s3)
    e88492b6:	080c                	addi	a1,sp,16
    e88492b8:	ea5ff0ef          	jal	ra,e884915c <CFLCopy>
			require_noerr( err, exit );
    e88492bc:	e905                	bnez	a0,e88492ec <CFLCopy+0x190>
			err = CFLCopy( node->value, &newValue );
    e88492be:	0109b503          	ld	a0,16(s3)
    e88492c2:	082c                	addi	a1,sp,24
    e88492c4:	e99ff0ef          	jal	ra,e884915c <CFLCopy>
			require_noerr( err, exit );
    e88492c8:	e115                	bnez	a0,e88492ec <CFLCopy+0x190>
			err = CFLDictionarySetValue( newDict, newKey, newValue );
    e88492ca:	6662                	ld	a2,24(sp)
    e88492cc:	65c2                	ld	a1,16(sp)
    e88492ce:	6522                	ld	a0,8(sp)
    e88492d0:	b50ff0ef          	jal	ra,e8848620 <CFLDictionarySetValue>
			require_noerr( err, exit );
    e88492d4:	ed01                	bnez	a0,e88492ec <CFLCopy+0x190>
			CFLRelease( newKey );
    e88492d6:	6542                	ld	a0,16(sp)
    e88492d8:	93ffe0ef          	jal	ra,e8847c16 <CFLRelease>
			CFLRelease( newValue );
    e88492dc:	6562                	ld	a0,24(sp)
    e88492de:	939fe0ef          	jal	ra,e8847c16 <CFLRelease>
			newKey = NULL;
    e88492e2:	e802                	sd	zero,16(sp)
			newValue = NULL;
    e88492e4:	ec02                	sd	zero,24(sp)
		for( node = object->buckets[ i ]; node; node = node->next )
    e88492e6:	0009b983          	ld	s3,0(s3)
    e88492ea:	b7c1                	j	e88492aa <CFLCopy+0x14e>
			err = CFLDictionarySetValue( newDict, newKey, newValue );
    e88492ec:	842a                	mv	s0,a0
    e88492ee:	b74d                	j	e8849290 <CFLCopy+0x134>
	else if( typeID == CFLNullGetTypeID() )			// Null
    e88492f0:	47a1                	li	a5,8
    e88492f2:	f0f885e3          	beq	a7,a5,e88491fc <CFLCopy+0xa0>
	else if( typeID == CFLNumberGetTypeID() )		// Number
    e88492f6:	4799                	li	a5,6
    e88492f8:	04f89463          	bne	a7,a5,e8849340 <CFLCopy+0x1e4>
	require_action( CFLValidObjectType( inSrc, kCFLTypeNumber ), exit, err = kTypeErr );
    e88492fc:	c4d1                	beqz	s1,e8849388 <CFLCopy+0x22c>
    e88492fe:	0004c703          	lbu	a4,0(s1)
    e8849302:	05600793          	li	a5,86
    e8849306:	08f71163          	bne	a4,a5,e8849388 <CFLCopy+0x22c>
    e884930a:	0014c703          	lbu	a4,1(s1)
    e884930e:	4799                	li	a5,6
    e8849310:	06f71c63          	bne	a4,a5,e8849388 <CFLCopy+0x22c>
	object = (CFLNumber *) calloc( 1U, sizeof( CFLNumber ) );
    e8849314:	02000513          	li	a0,32
    e8849318:	f76fe0ef          	jal	ra,e8847a8e <calloc.constprop.10>
	require_action( object, exit, err = kNoMemoryErr );
    e884931c:	cd35                	beqz	a0,e8849398 <CFLCopy+0x23c>
	object->base.signature		= kCFLSignatureValid;
    e884931e:	65600793          	li	a5,1622
    e8849322:	00f51023          	sh	a5,0(a0)
	object->base.retainCount	= 1;
    e8849326:	4785                	li	a5,1
    e8849328:	c15c                	sw	a5,4(a0)
	object->type				= srcObject->type;
    e884932a:	0084c783          	lbu	a5,8(s1)
    e884932e:	00f50423          	sb	a5,8(a0)
	object->value				= srcObject->value;
    e8849332:	689c                	ld	a5,16(s1)
    e8849334:	e91c                	sd	a5,16(a0)
    e8849336:	6c9c                	ld	a5,24(s1)
    e8849338:	ed1c                	sd	a5,24(a0)
	*outDst = (CFLNumberRef) object;
    e884933a:	00a93023          	sd	a0,0(s2)
	err = kNoErr;
    e884933e:	b5c9                	j	e8849200 <CFLCopy+0xa4>
	else if( typeID == CFLStringGetTypeID() )		// String
    e8849340:	479d                	li	a5,7
    e8849342:	02f89063          	bne	a7,a5,e8849362 <CFLCopy+0x206>
	err = CFLStringGetCStringPtr( inSrc, &p, &n );
    e8849346:	0830                	addi	a2,sp,24
    e8849348:	080c                	addi	a1,sp,16
    e884934a:	8526                	mv	a0,s1
    e884934c:	c9bff0ef          	jal	ra,e8848fe6 <CFLStringGetCStringPtr>
    e8849350:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8849352:	ea0517e3          	bnez	a0,e8849200 <CFLCopy+0xa4>
	err = CFLStringCreateWithText( kCFLAllocatorDefault, p, n, outDst );
    e8849356:	6662                	ld	a2,24(sp)
    e8849358:	65c2                	ld	a1,16(sp)
    e884935a:	86ca                	mv	a3,s2
    e884935c:	d9dff0ef          	jal	ra,e88490f8 <CFLStringCreateWithText>
    e8849360:	bdc9                	j	e8849232 <CFLCopy+0xd6>
		dlogassert( "Unknown typeID %u", typeID );
    e8849362:	00075817          	auipc	a6,0x75
    e8849366:	29680813          	addi	a6,a6,662 # e88be5f8 <__PRETTY_FUNCTION__.9500+0x20>
    e884936a:	00075797          	auipc	a5,0x75
    e884936e:	3be78793          	addi	a5,a5,958 # e88be728 <__PRETTY_FUNCTION__.8754>
    e8849372:	27e00713          	li	a4,638
    e8849376:	00075697          	auipc	a3,0x75
    e884937a:	2b268693          	addi	a3,a3,690 # e88be628 <__PRETTY_FUNCTION__.9500+0x50>
    e884937e:	4601                	li	a2,0
    e8849380:	4581                	li	a1,0
    e8849382:	4501                	li	a0,0
    e8849384:	044050ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	require_action( CFLValidObjectType( inSrc, kCFLTypeNumber ), exit, err = kTypeErr );
    e8849388:	7479                	lui	s0,0xffffe
    e884938a:	59c40413          	addi	s0,s0,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
    e884938e:	bd8d                	j	e8849200 <CFLCopy+0xa4>
	require_action( outDst, exit, err = kParamErr );
    e8849390:	7479                	lui	s0,0xffffe
    e8849392:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8849396:	b5ad                	j	e8849200 <CFLCopy+0xa4>
	require_action( object, exit, err = kNoMemoryErr );
    e8849398:	7479                	lui	s0,0xffffe
    e884939a:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884939e:	b58d                	j	e8849200 <CFLCopy+0xa4>

00000000e88493a0 <CFLRuntimeRegisterClass>:
{
    e88493a0:	711d                	addi	sp,sp,-96
    e88493a2:	e8a2                	sd	s0,80(sp)
    e88493a4:	e0ca                	sd	s2,64(sp)
    e88493a6:	ec5e                	sd	s7,24(sp)
    e88493a8:	ec86                	sd	ra,88(sp)
    e88493aa:	e4a6                	sd	s1,72(sp)
    e88493ac:	fc4e                	sd	s3,56(sp)
    e88493ae:	f852                	sd	s4,48(sp)
    e88493b0:	f456                	sd	s5,40(sp)
    e88493b2:	f05a                	sd	s6,32(sp)
    e88493b4:	892a                	mv	s2,a0
    e88493b6:	8bae                	mv	s7,a1
	atomic_spinlock_lock( &gCFLRuntimeClassSpinLock );
    e88493b8:	0009a417          	auipc	s0,0x9a
    e88493bc:	7d840413          	addi	s0,s0,2008 # e88e3b90 <gCFLRuntimeClassSpinLock>
    e88493c0:	4605                	li	a2,1
    e88493c2:	4581                	li	a1,0
    e88493c4:	8522                	mv	a0,s0
    e88493c6:	dadfb0ef          	jal	ra,e8845172 <atomic_bool_compare_and_swap_32>
    e88493ca:	c145                	beqz	a0,e884946a <CFLRuntimeRegisterClass+0xca>
	n = gCFLRuntimeClassTableCount;
    e88493cc:	0008ca17          	auipc	s4,0x8c
    e88493d0:	8f4a0a13          	addi	s4,s4,-1804 # e88d4cc0 <gCFLRuntimeClassTableCount>
    e88493d4:	000a3983          	ld	s3,0(s4)
	newClassArray = (CFLRuntimeClass *) malloc( ( n + 1 ) * sizeof( *newClassArray ) );
    e88493d8:	00198a93          	addi	s5,s3,1
    e88493dc:	005a9413          	slli	s0,s5,0x5
    e88493e0:	8522                	mv	a0,s0
    e88493e2:	46c320ef          	jal	ra,e887b84e <my_malloc>
    e88493e6:	84aa                	mv	s1,a0
	require_action( newClassArray, exit, err = kNoMemoryErr );
    e88493e8:	c549                	beqz	a0,e8849472 <CFLRuntimeRegisterClass+0xd2>
	memcpy( newClassArray, gCFLRuntimeClassTable, n * sizeof( *gCFLRuntimeClassTable ) );
    e88493ea:	0008cb17          	auipc	s6,0x8c
    e88493ee:	8ceb0b13          	addi	s6,s6,-1842 # e88d4cb8 <gCFLRuntimeClassTable>
    e88493f2:	000b3583          	ld	a1,0(s6)
    e88493f6:	1401                	addi	s0,s0,-32
    e88493f8:	8622                	mv	a2,s0
    e88493fa:	7a7320ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	gCFLRuntimeClassTable			= newClassArray;
    e88493fe:	009b3023          	sd	s1,0(s6)
	newClassArray[ n ] = *inClass;
    e8849402:	00093703          	ld	a4,0(s2)
    e8849406:	008487b3          	add	a5,s1,s0
    e884940a:	6084d70b          	srd	a4,s1,s0,0
    e884940e:	00893703          	ld	a4,8(s2)
    e8849412:	e798                	sd	a4,8(a5)
    e8849414:	01093703          	ld	a4,16(s2)
    e8849418:	eb98                	sd	a4,16(a5)
    e884941a:	01893703          	ld	a4,24(s2)
    e884941e:	ef98                	sd	a4,24(a5)
	oldClassArray					= gCFLRuntimeClassTableStorage;
    e8849420:	0009a797          	auipc	a5,0x9a
    e8849424:	77878793          	addi	a5,a5,1912 # e88e3b98 <gCFLRuntimeClassTableStorage>
    e8849428:	6388                	ld	a0,0(a5)
	gCFLRuntimeClassTableStorage	= newClassArray;
    e884942a:	e384                	sd	s1,0(a5)
	oldClassArray					= gCFLRuntimeClassTableStorage;
    e884942c:	e42a                	sd	a0,8(sp)
	atomic_read_write_barrier();
    e884942e:	d85fb0ef          	jal	ra,e88451b2 <atomic_read_write_barrier>
	gCFLRuntimeClassTableCount		= n + 1;
    e8849432:	015a3023          	sd	s5,0(s4)
	if( oldClassArray ) free( oldClassArray );
    e8849436:	6522                	ld	a0,8(sp)
    e8849438:	c119                	beqz	a0,e884943e <CFLRuntimeRegisterClass+0x9e>
    e884943a:	6c7320ef          	jal	ra,e887c300 <eLIBs_free>
	*outTypeID = (CFLTypeID) n;
    e884943e:	013ba023          	sw	s3,0(s7)
	err = kNoErr;
    e8849442:	4501                	li	a0,0
    e8849444:	e42a                	sd	a0,8(sp)
	atomic_spinlock_unlock( &gCFLRuntimeClassSpinLock );
    e8849446:	d6dfb0ef          	jal	ra,e88451b2 <atomic_read_write_barrier>
}
    e884944a:	6446                	ld	s0,80(sp)
    e884944c:	60e6                	ld	ra,88(sp)
	atomic_spinlock_unlock( &gCFLRuntimeClassSpinLock );
    e884944e:	0009a797          	auipc	a5,0x9a
    e8849452:	7407a123          	sw	zero,1858(a5) # e88e3b90 <gCFLRuntimeClassSpinLock>
}
    e8849456:	6522                	ld	a0,8(sp)
    e8849458:	64a6                	ld	s1,72(sp)
    e884945a:	6906                	ld	s2,64(sp)
    e884945c:	79e2                	ld	s3,56(sp)
    e884945e:	7a42                	ld	s4,48(sp)
    e8849460:	7aa2                	ld	s5,40(sp)
    e8849462:	7b02                	ld	s6,32(sp)
    e8849464:	6be2                	ld	s7,24(sp)
    e8849466:	6125                	addi	sp,sp,96
    e8849468:	8082                	ret
	atomic_spinlock_lock( &gCFLRuntimeClassSpinLock );
    e884946a:	4505                	li	a0,1
    e884946c:	3ab320ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e8849470:	bf81                	j	e88493c0 <CFLRuntimeRegisterClass+0x20>
	require_action( newClassArray, exit, err = kNoMemoryErr );
    e8849472:	7579                	lui	a0,0xffffe
    e8849474:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8849478:	b7f1                	j	e8849444 <CFLRuntimeRegisterClass+0xa4>

00000000e884947a <CFLRuntimeCreateInstance>:
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e884947a:	e531                	bnez	a0,e88494c6 <CFLRuntimeCreateInstance+0x4c>
	require_action( inTypeID < gCFLRuntimeClassTableCount, exit, err = kParamErr );
    e884947c:	0008c717          	auipc	a4,0x8c
    e8849480:	84470713          	addi	a4,a4,-1980 # e88d4cc0 <gCFLRuntimeClassTableCount>
    e8849484:	6318                	ld	a4,0(a4)
    e8849486:	7c05b78b          	extu	a5,a1,31,0
    e884948a:	02e7fe63          	bgeu	a5,a4,e88494c6 <CFLRuntimeCreateInstance+0x4c>
{
    e884948e:	1101                	addi	sp,sp,-32
	obj = (CFLObject *) malloc( sizeof( CFLObject ) + inExtraBytes );
    e8849490:	00860513          	addi	a0,a2,8
{
    e8849494:	e422                	sd	s0,8(sp)
    e8849496:	e826                	sd	s1,16(sp)
    e8849498:	ec06                	sd	ra,24(sp)
    e884949a:	84b6                	mv	s1,a3
    e884949c:	842e                	mv	s0,a1
	obj = (CFLObject *) malloc( sizeof( CFLObject ) + inExtraBytes );
    e884949e:	3b0320ef          	jal	ra,e887b84e <my_malloc>
	require_action( obj, exit, err = kNoMemoryErr );
    e88494a2:	c515                	beqz	a0,e88494ce <CFLRuntimeCreateInstance+0x54>
	obj->signature		= kCFLSignatureValid;
    e88494a4:	05600793          	li	a5,86
    e88494a8:	00f50023          	sb	a5,0(a0)
	obj->retainCount	= 1;
    e88494ac:	4785                	li	a5,1
	obj->type			= (uint8_t) inTypeID;
    e88494ae:	008500a3          	sb	s0,1(a0)
	obj->flags			= 0;
    e88494b2:	00051123          	sh	zero,2(a0)
	obj->retainCount	= 1;
    e88494b6:	c15c                	sw	a5,4(a0)
	*( (CFLObject **) outObj ) = obj;
    e88494b8:	e088                	sd	a0,0(s1)
	err = kNoErr;
    e88494ba:	4501                	li	a0,0
}
    e88494bc:	60e2                	ld	ra,24(sp)
    e88494be:	6422                	ld	s0,8(sp)
    e88494c0:	64c2                	ld	s1,16(sp)
    e88494c2:	6105                	addi	sp,sp,32
    e88494c4:	8082                	ret
	require_action( inAllocator == kCFLAllocatorDefault, exit, err = kParamErr );
    e88494c6:	7579                	lui	a0,0xffffe
    e88494c8:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e88494cc:	8082                	ret
	require_action( obj, exit, err = kNoMemoryErr );
    e88494ce:	7579                	lui	a0,0xffffe
    e88494d0:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88494d4:	b7e5                	j	e88494bc <CFLRuntimeCreateInstance+0x42>

00000000e88494d6 <_CFLrealloc>:
{
    e88494d6:	7179                	addi	sp,sp,-48
    e88494d8:	ec22                	sd	s0,24(sp)
    e88494da:	842a                	mv	s0,a0
	mem = malloc( inNewSize );
    e88494dc:	8532                	mv	a0,a2
{
    e88494de:	f026                	sd	s1,32(sp)
    e88494e0:	f406                	sd	ra,40(sp)
    e88494e2:	e42e                	sd	a1,8(sp)
	mem = malloc( inNewSize );
    e88494e4:	e032                	sd	a2,0(sp)
    e88494e6:	368320ef          	jal	ra,e887b84e <my_malloc>
    e88494ea:	84aa                	mv	s1,a0
	require( mem, exit );
    e88494ec:	cd11                	beqz	a0,e8849508 <_CFLrealloc+0x32>
	if( inMem )
    e88494ee:	cc09                	beqz	s0,e8849508 <_CFLrealloc+0x32>
		memcpy( mem, inMem, min(inOldSize,inNewSize));
    e88494f0:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e88494f4:	00c5b7b3          	sltu	a5,a1,a2
    e88494f8:	42f5960b          	mvnez	a2,a1,a5
    e88494fc:	85a2                	mv	a1,s0
    e88494fe:	6a3320ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		free( inMem );
    e8849502:	8522                	mv	a0,s0
    e8849504:	5fd320ef          	jal	ra,e887c300 <eLIBs_free>
}
    e8849508:	70a2                	ld	ra,40(sp)
    e884950a:	6462                	ld	s0,24(sp)
    e884950c:	8526                	mv	a0,s1
    e884950e:	7482                	ld	s1,32(sp)
    e8849510:	6145                	addi	sp,sp,48
    e8849512:	8082                	ret

00000000e8849514 <CFLDataSetData>:
	require_action( CFLValidObjectType( inObject, kCFLTypeData ), exit, err = kBadReferenceErr );
    e8849514:	c541                	beqz	a0,e884959c <CFLDataSetData+0x88>
    e8849516:	00054703          	lbu	a4,0(a0)
    e884951a:	05600793          	li	a5,86
    e884951e:	06f71f63          	bne	a4,a5,e884959c <CFLDataSetData+0x88>
    e8849522:	00154703          	lbu	a4,1(a0)
    e8849526:	478d                	li	a5,3
    e8849528:	06f71a63          	bne	a4,a5,e884959c <CFLDataSetData+0x88>
	require_action( object->bytesDeallocator == kCFLAllocatorDefault, exit, err = kUnsupportedErr );
    e884952c:	711c                	ld	a5,32(a0)
    e884952e:	ebbd                	bnez	a5,e88495a4 <CFLDataSetData+0x90>
{
    e8849530:	7179                	addi	sp,sp,-48
    e8849532:	f891540b          	sdd	s0,s1,(sp),0,4
    e8849536:	f406                	sd	ra,40(sp)
    e8849538:	f052                	sd	s4,32(sp)
    e884953a:	fb31590b          	sdd	s2,s3,(sp),1,4
	n = CFLDataRoundUpSize( inSize );
    e884953e:	0ff00793          	li	a5,255
    e8849542:	10000493          	li	s1,256
    e8849546:	00c7fc63          	bgeu	a5,a2,e884955e <CFLDataSetData+0x4a>
    e884954a:	6485                	lui	s1,0x1
    e884954c:	00966963          	bltu	a2,s1,e884955e <CFLDataSetData+0x4a>
    e8849550:	64a1                	lui	s1,0x8
    e8849552:	14fd                	addi	s1,s1,-1
    e8849554:	1ffff7b7          	lui	a5,0x1ffff
    e8849558:	94b2                	add	s1,s1,a2
    e884955a:	078e                	slli	a5,a5,0x3
    e884955c:	8cfd                	and	s1,s1,a5
    e884955e:	89ae                	mv	s3,a1
    e8849560:	842a                	mv	s0,a0
	data = (uint8_t *) _CFLrealloc( object->data, object->reservedSize, n );
    e8849562:	6d0c                	ld	a1,24(a0)
    e8849564:	6508                	ld	a0,8(a0)
    e8849566:	8932                	mv	s2,a2
    e8849568:	8626                	mv	a2,s1
    e884956a:	f6dff0ef          	jal	ra,e88494d6 <_CFLrealloc>
    e884956e:	8a2a                	mv	s4,a0
	require_action( data, exit, err = kNoMemoryErr );
    e8849570:	cd15                	beqz	a0,e88495ac <CFLDataSetData+0x98>
	if( inData && ( inSize > 0 ) )
    e8849572:	00098863          	beqz	s3,e8849582 <CFLDataSetData+0x6e>
    e8849576:	00090663          	beqz	s2,e8849582 <CFLDataSetData+0x6e>
		memcpy( data, inData, inSize );
    e884957a:	864a                	mv	a2,s2
    e884957c:	85ce                	mv	a1,s3
    e884957e:	623320ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	object->data			= data;
    e8849582:	01443423          	sd	s4,8(s0)
	object->reservedSize	= n;
    e8849586:	fa94590b          	sdd	s2,s1,(s0),1,4
	err = kNoErr;
    e884958a:	4501                	li	a0,0
}
    e884958c:	70a2                	ld	ra,40(sp)
    e884958e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8849592:	7a02                	ld	s4,32(sp)
    e8849594:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8849598:	6145                	addi	sp,sp,48
    e884959a:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeData ), exit, err = kBadReferenceErr );
    e884959c:	7579                	lui	a0,0xffffe
    e884959e:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e88495a2:	8082                	ret
	require_action( object->bytesDeallocator == kCFLAllocatorDefault, exit, err = kUnsupportedErr );
    e88495a4:	7579                	lui	a0,0xffffe
    e88495a6:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
}
    e88495aa:	8082                	ret
	require_action( data, exit, err = kNoMemoryErr );
    e88495ac:	7579                	lui	a0,0xffffe
    e88495ae:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88495b2:	bfe9                	j	e884958c <CFLDataSetData+0x78>

00000000e88495b4 <CFLDataAppendData>:
	require_action( CFLValidObjectType( inObject, kCFLTypeData ), exit, err = kBadReferenceErr );
    e88495b4:	c145                	beqz	a0,e8849654 <CFLDataAppendData+0xa0>
{
    e88495b6:	7179                	addi	sp,sp,-48
    e88495b8:	e422                	sd	s0,8(sp)
    e88495ba:	f406                	sd	ra,40(sp)
    e88495bc:	e826                	sd	s1,16(sp)
    e88495be:	ec4a                	sd	s2,24(sp)
    e88495c0:	f04e                	sd	s3,32(sp)
	require_action( CFLValidObjectType( inObject, kCFLTypeData ), exit, err = kBadReferenceErr );
    e88495c2:	00054703          	lbu	a4,0(a0)
    e88495c6:	05600793          	li	a5,86
    e88495ca:	842a                	mv	s0,a0
    e88495cc:	08f71863          	bne	a4,a5,e884965c <CFLDataAppendData+0xa8>
    e88495d0:	00154703          	lbu	a4,1(a0)
    e88495d4:	478d                	li	a5,3
    e88495d6:	08f71363          	bne	a4,a5,e884965c <CFLDataAppendData+0xa8>
	require_action( object->bytesDeallocator == kCFLAllocatorDefault, exit, err = kUnsupportedErr );
    e88495da:	711c                	ld	a5,32(a0)
    e88495dc:	e7c1                	bnez	a5,e8849664 <CFLDataAppendData+0xb0>
	if( inSize == kSizeCString ) inSize = strlen( (const char *) inData );
    e88495de:	57fd                	li	a5,-1
    e88495e0:	89ae                	mv	s3,a1
    e88495e2:	8932                	mv	s2,a2
    e88495e4:	00f61763          	bne	a2,a5,e88495f2 <CFLDataAppendData+0x3e>
    e88495e8:	852e                	mv	a0,a1
    e88495ea:	52f320ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88495ee:	7c05390b          	extu	s2,a0,31,0
	n = object->usedSize + inSize;
    e88495f2:	681c                	ld	a5,16(s0)
	if( n >= object->reservedSize )
    e88495f4:	6c0c                	ld	a1,24(s0)
	n = object->usedSize + inSize;
    e88495f6:	97ca                	add	a5,a5,s2
	if( n >= object->reservedSize )
    e88495f8:	02b7e963          	bltu	a5,a1,e884962a <CFLDataAppendData+0x76>
		n = CFLDataRoundUpSize( n );
    e88495fc:	0ff00713          	li	a4,255
    e8849600:	10000493          	li	s1,256
    e8849604:	00f77c63          	bgeu	a4,a5,e884961c <CFLDataAppendData+0x68>
    e8849608:	6485                	lui	s1,0x1
    e884960a:	0097e963          	bltu	a5,s1,e884961c <CFLDataAppendData+0x68>
    e884960e:	64a1                	lui	s1,0x8
    e8849610:	14fd                	addi	s1,s1,-1
    e8849612:	97a6                	add	a5,a5,s1
    e8849614:	1ffff4b7          	lui	s1,0x1ffff
    e8849618:	048e                	slli	s1,s1,0x3
    e884961a:	8cfd                	and	s1,s1,a5
			tmp = (uint8_t *) _CFLrealloc( object->data, object->reservedSize, n );
    e884961c:	6408                	ld	a0,8(s0)
    e884961e:	8626                	mv	a2,s1
    e8849620:	eb7ff0ef          	jal	ra,e88494d6 <_CFLrealloc>
			require_action( tmp, exit, err = kNoMemoryErr );
    e8849624:	c521                	beqz	a0,e884966c <CFLDataAppendData+0xb8>
		object->data 			= tmp;
    e8849626:	e408                	sd	a0,8(s0)
		object->reservedSize 	= n;
    e8849628:	ec04                	sd	s1,24(s0)
	if( inData ) memcpy( object->data + object->usedSize, inData, inSize );
    e884962a:	00098963          	beqz	s3,e884963c <CFLDataAppendData+0x88>
    e884962e:	6408                	ld	a0,8(s0)
    e8849630:	681c                	ld	a5,16(s0)
    e8849632:	864a                	mv	a2,s2
    e8849634:	85ce                	mv	a1,s3
    e8849636:	953e                	add	a0,a0,a5
    e8849638:	569320ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	object->usedSize += inSize;
    e884963c:	681c                	ld	a5,16(s0)
	err = kNoErr;
    e884963e:	4501                	li	a0,0
	object->usedSize += inSize;
    e8849640:	993e                	add	s2,s2,a5
    e8849642:	01243823          	sd	s2,16(s0)
}
    e8849646:	70a2                	ld	ra,40(sp)
    e8849648:	6422                	ld	s0,8(sp)
    e884964a:	64c2                	ld	s1,16(sp)
    e884964c:	6962                	ld	s2,24(sp)
    e884964e:	7982                	ld	s3,32(sp)
    e8849650:	6145                	addi	sp,sp,48
    e8849652:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeData ), exit, err = kBadReferenceErr );
    e8849654:	7579                	lui	a0,0xffffe
    e8849656:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e884965a:	8082                	ret
	require_action( CFLValidObjectType( inObject, kCFLTypeData ), exit, err = kBadReferenceErr );
    e884965c:	7579                	lui	a0,0xffffe
    e884965e:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8849662:	b7d5                	j	e8849646 <CFLDataAppendData+0x92>
	require_action( object->bytesDeallocator == kCFLAllocatorDefault, exit, err = kUnsupportedErr );
    e8849664:	7579                	lui	a0,0xffffe
    e8849666:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e884966a:	bff1                	j	e8849646 <CFLDataAppendData+0x92>
			require_action( tmp, exit, err = kNoMemoryErr );
    e884966c:	7579                	lui	a0,0xffffe
    e884966e:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8849672:	bfd1                	j	e8849646 <CFLDataAppendData+0x92>

00000000e8849674 <_ReadRefOffset>:
		const uint8_t *			inSrc, 
		const uint8_t *			inEnd, 
		const uint8_t **		ioPtr, 
		size_t *				outOffset )
{
	const uint8_t *		ptr = *ioPtr;
    e8849674:	0006b803          	ld	a6,0(a3)
	OSStatus			err;
	uint64_t			refnum;
	const uint8_t *		offsetPtr;
	uint64_t			offset;
	
	require_action_quiet( ctx->objectRefSize < ( (size_t)( inEnd - ptr ) ), exit, err = kUnderrunErr );
    e8849678:	13854883          	lbu	a7,312(a0)
    e884967c:	41060633          	sub	a2,a2,a6
    e8849680:	0cc8f163          	bgeu	a7,a2,e8849742 <_ReadRefOffset+0xce>
	switch( ctx->objectRefSize )
    e8849684:	4789                	li	a5,2
    e8849686:	06f88563          	beq	a7,a5,e88496f0 <_ReadRefOffset+0x7c>
    e884968a:	0117e963          	bltu	a5,a7,e884969c <_ReadRefOffset+0x28>
    e884968e:	4785                	li	a5,1
    e8849690:	02f88163          	beq	a7,a5,e88496b2 <_ReadRefOffset+0x3e>
	{
		case 1: refnum = Read8( ptr ); break;
		case 2: refnum = ReadBig16( ptr ); break;
		case 4: refnum = ReadBig32( ptr ); break;
		case 8: refnum = ReadBig64( ptr ); break;
		default: err = kInternalErr; goto exit;
    e8849694:	7579                	lui	a0,0xffffe
    e8849696:	59650513          	addi	a0,a0,1430 # ffffffffffffe596 <__DRAM0_INF_BASE+0xffffffff0000e596>
    e884969a:	8082                	ret
	switch( ctx->objectRefSize )
    e884969c:	4791                	li	a5,4
    e884969e:	06f88163          	beq	a7,a5,e8849700 <_ReadRefOffset+0x8c>
    e88496a2:	47a1                	li	a5,8
    e88496a4:	fef898e3          	bne	a7,a5,e8849694 <_ReadRefOffset+0x20>
		case 8: refnum = ReadBig64( ptr ); break;
    e88496a8:	00083783          	ld	a5,0(a6)
    e88496ac:	8207978b          	rev	a5,a5
    e88496b0:	a019                	j	e88496b6 <_ReadRefOffset+0x42>
		case 1: refnum = Read8( ptr ); break;
    e88496b2:	00084783          	lbu	a5,0(a6)
	}
	*ioPtr = ptr + ctx->objectRefSize;
    e88496b6:	9846                	add	a6,a6,a7
    e88496b8:	0106b023          	sd	a6,0(a3)
	
	require_action_quiet( refnum < ( (uint64_t) ctx->uniqueCount ), exit, err = kRangeErr );
    e88496bc:	12852683          	lw	a3,296(a0)
    e88496c0:	08d7f563          	bgeu	a5,a3,e884974a <_ReadRefOffset+0xd6>
	offsetPtr = inSrc + ctx->offsetTableOffset + ( refnum * ctx->offsetIntSize );
    e88496c4:	13954603          	lbu	a2,313(a0)
    e88496c8:	14053683          	ld	a3,320(a0)
    e88496cc:	20f6168b          	mula	a3,a2,a5
    e88496d0:	87b6                	mv	a5,a3
    e88496d2:	00d58533          	add	a0,a1,a3
	switch( ctx->offsetIntSize )
    e88496d6:	4689                	li	a3,2
    e88496d8:	04d60663          	beq	a2,a3,e8849724 <_ReadRefOffset+0xb0>
    e88496dc:	02c6e963          	bltu	a3,a2,e884970e <_ReadRefOffset+0x9a>
    e88496e0:	4685                	li	a3,1
    e88496e2:	fad619e3          	bne	a2,a3,e8849694 <_ReadRefOffset+0x20>
	{
		case 1: offset = Read8( offsetPtr ); break;
    e88496e6:	80f5c78b          	lrbu	a5,a1,a5,0
		case 4: offset = ReadBig32( offsetPtr ); break;
		case 8: offset = ReadBig64( offsetPtr ); break;
		default: err = kInternalErr; goto exit;
	}
	require_action_quiet( offset <= SIZE_MAX, exit, err = kSizeErr );
	*outOffset = (size_t) offset;
    e88496ea:	e31c                	sd	a5,0(a4)
	err = kNoErr;
    e88496ec:	4501                	li	a0,0
    e88496ee:	8082                	ret
		case 2: refnum = ReadBig16( ptr ); break;
    e88496f0:	00084783          	lbu	a5,0(a6)
    e88496f4:	00184603          	lbu	a2,1(a6)
    e88496f8:	0087979b          	slliw	a5,a5,0x8
    e88496fc:	8fd1                	or	a5,a5,a2
    e88496fe:	bf65                	j	e88496b6 <_ReadRefOffset+0x42>
		case 4: refnum = ReadBig32( ptr ); break;
    e8849700:	00082783          	lw	a5,0(a6)
    e8849704:	9007978b          	revw	a5,a5
    e8849708:	7c07b78b          	extu	a5,a5,31,0
    e884970c:	b76d                	j	e88496b6 <_ReadRefOffset+0x42>
	switch( ctx->offsetIntSize )
    e884970e:	4691                	li	a3,4
    e8849710:	02d60263          	beq	a2,a3,e8849734 <_ReadRefOffset+0xc0>
    e8849714:	46a1                	li	a3,8
    e8849716:	f6d61fe3          	bne	a2,a3,e8849694 <_ReadRefOffset+0x20>
		case 8: offset = ReadBig64( offsetPtr ); break;
    e884971a:	60f5c78b          	lrd	a5,a1,a5,0
    e884971e:	8207978b          	rev	a5,a5
    e8849722:	b7e1                	j	e88496ea <_ReadRefOffset+0x76>
		case 2: offset = ReadBig16( offsetPtr ); break;
    e8849724:	80f5c78b          	lrbu	a5,a1,a5,0
    e8849728:	00154683          	lbu	a3,1(a0)
    e884972c:	0087979b          	slliw	a5,a5,0x8
    e8849730:	8fd5                	or	a5,a5,a3
    e8849732:	bf65                	j	e88496ea <_ReadRefOffset+0x76>
		case 4: offset = ReadBig32( offsetPtr ); break;
    e8849734:	40f5c78b          	lrw	a5,a1,a5,0
    e8849738:	9007978b          	revw	a5,a5
    e884973c:	7c07b78b          	extu	a5,a5,31,0
    e8849740:	b76d                	j	e88496ea <_ReadRefOffset+0x76>
	require_action_quiet( ctx->objectRefSize < ( (size_t)( inEnd - ptr ) ), exit, err = kUnderrunErr );
    e8849742:	7579                	lui	a0,0xffffe
    e8849744:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
    e8849748:	8082                	ret
	require_action_quiet( refnum < ( (uint64_t) ctx->uniqueCount ), exit, err = kRangeErr );
    e884974a:	7579                	lui	a0,0xffffe
    e884974c:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
	
exit:
	return( err );
}
    e8849750:	8082                	ret

00000000e8849752 <_ReadSizedInteger>:
		const uint8_t **	ioPtr, 
		const uint8_t *		inEnd, 
		size_t				inLen, 
		uint64_t *			outValue )
{
	const uint8_t *		ptr = *ioPtr;
    e8849752:	611c                	ld	a5,0(a0)
	OSStatus			err;
	
	require_action_quiet( ( (size_t)( inEnd - ptr ) ) >= inLen, exit, err = kSizeErr );
    e8849754:	8d9d                	sub	a1,a1,a5
    e8849756:	04c5ed63          	bltu	a1,a2,e88497b0 <_ReadSizedInteger+0x5e>
	switch( inLen )
    e884975a:	4709                	li	a4,2
    e884975c:	02e60c63          	beq	a2,a4,e8849794 <_ReadSizedInteger+0x42>
    e8849760:	00c76963          	bltu	a4,a2,e8849772 <_ReadSizedInteger+0x20>
    e8849764:	4705                	li	a4,1
    e8849766:	02e60063          	beq	a2,a4,e8849786 <_ReadSizedInteger+0x34>
		case 8:
			*outValue = ReadBig64( ptr );
			break;
		
		default:
			err = kCountErr;
    e884976a:	7579                	lui	a0,0xffffe
    e884976c:	59450513          	addi	a0,a0,1428 # ffffffffffffe594 <__DRAM0_INF_BASE+0xffffffff0000e594>
    e8849770:	8082                	ret
	switch( inLen )
    e8849772:	4711                	li	a4,4
    e8849774:	02e60863          	beq	a2,a4,e88497a4 <_ReadSizedInteger+0x52>
    e8849778:	4721                	li	a4,8
    e884977a:	fee618e3          	bne	a2,a4,e884976a <_ReadSizedInteger+0x18>
			*outValue = ReadBig64( ptr );
    e884977e:	6398                	ld	a4,0(a5)
    e8849780:	8207170b          	rev	a4,a4
    e8849784:	a019                	j	e884978a <_ReadSizedInteger+0x38>
			*outValue = Read8( ptr );
    e8849786:	0007c703          	lbu	a4,0(a5) # 1ffff000 <memcmp-0xc8801000>
			*outValue = ReadBig64( ptr );
    e884978a:	e298                	sd	a4,0(a3)
			goto exit;
	}
	*ioPtr = ptr + inLen;
    e884978c:	97b2                	add	a5,a5,a2
    e884978e:	e11c                	sd	a5,0(a0)
	err = kNoErr;
    e8849790:	4501                	li	a0,0
    e8849792:	8082                	ret
			*outValue = ReadBig16( ptr );
    e8849794:	0007c703          	lbu	a4,0(a5)
    e8849798:	0017c583          	lbu	a1,1(a5)
    e884979c:	0087171b          	slliw	a4,a4,0x8
    e88497a0:	8f4d                	or	a4,a4,a1
    e88497a2:	b7e5                	j	e884978a <_ReadSizedInteger+0x38>
			*outValue = ReadBig32( ptr );
    e88497a4:	4398                	lw	a4,0(a5)
    e88497a6:	9007170b          	revw	a4,a4
    e88497aa:	7c07370b          	extu	a4,a4,31,0
    e88497ae:	bff1                	j	e884978a <_ReadSizedInteger+0x38>
	require_action_quiet( ( (size_t)( inEnd - ptr ) ) >= inLen, exit, err = kSizeErr );
    e88497b0:	7579                	lui	a0,0xffffe
    e88497b2:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
	
exit:
	return( err );
}
    e88497b6:	8082                	ret

00000000e88497b8 <_ReadInteger>:
	ptr = *ioPtr;
    e88497b8:	611c                	ld	a5,0(a0)
	require_action_quiet( ptr < inEnd, exit, err = kUnderrunErr );
    e88497ba:	02b7ff63          	bgeu	a5,a1,e88497f8 <_ReadInteger+0x40>
{
    e88497be:	1101                	addi	sp,sp,-32
	marker = *ptr++;
    e88497c0:	00178713          	addi	a4,a5,1
    e88497c4:	e43a                	sd	a4,8(sp)
{
    e88497c6:	ec06                	sd	ra,24(sp)
    e88497c8:	e822                	sd	s0,16(sp)
	marker = *ptr++;
    e88497ca:	0007c783          	lbu	a5,0(a5)
	if( ( marker & 0xF0 ) == kCFLBinaryPlistMarkerInt )
    e88497ce:	4741                	li	a4,16
    e88497d0:	0f07f693          	andi	a3,a5,240
    e88497d4:	02e69663          	bne	a3,a4,e8849800 <_ReadInteger+0x48>
    e88497d8:	86b2                	mv	a3,a2
		err = _ReadSizedInteger( &ptr, inEnd, 1 << ( marker & 0x0F ), outValue );
    e88497da:	8bbd                	andi	a5,a5,15
    e88497dc:	4605                	li	a2,1
    e88497de:	842a                	mv	s0,a0
    e88497e0:	00f6163b          	sllw	a2,a2,a5
    e88497e4:	0028                	addi	a0,sp,8
    e88497e6:	f6dff0ef          	jal	ra,e8849752 <_ReadSizedInteger>
		require_noerr_quiet( err, exit );
    e88497ea:	e119                	bnez	a0,e88497f0 <_ReadInteger+0x38>
	*ioPtr = ptr;
    e88497ec:	67a2                	ld	a5,8(sp)
    e88497ee:	e01c                	sd	a5,0(s0)
}
    e88497f0:	60e2                	ld	ra,24(sp)
    e88497f2:	6442                	ld	s0,16(sp)
    e88497f4:	6105                	addi	sp,sp,32
    e88497f6:	8082                	ret
	require_action_quiet( ptr < inEnd, exit, err = kUnderrunErr );
    e88497f8:	7579                	lui	a0,0xffffe
    e88497fa:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
}
    e88497fe:	8082                	ret
		err = kTypeErr;
    e8849800:	7579                	lui	a0,0xffffe
    e8849802:	59c50513          	addi	a0,a0,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
    e8849806:	b7ed                	j	e88497f0 <_ReadInteger+0x38>

00000000e8849808 <_FlattenPlist>:
{
    e8849808:	7179                	addi	sp,sp,-48
    e884980a:	f406                	sd	ra,40(sp)
    e884980c:	e422                	sd	s0,8(sp)
    e884980e:	e826                	sd	s1,16(sp)
    e8849810:	ec4a                	sd	s2,24(sp)
    e8849812:	f04e                	sd	s3,32(sp)
    e8849814:	842a                	mv	s0,a0
	oldCount = CFDictionaryGetCount( ctx->uniqueDict );
    e8849816:	12053503          	ld	a0,288(a0)
{
    e884981a:	84ae                	mv	s1,a1
	oldCount = CFDictionaryGetCount( ctx->uniqueDict );
    e884981c:	c0ffd0ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e8849820:	89aa                	mv	s3,a0
	CFDictionaryAddValue( ctx->uniqueDict, inObj, (const void *)(uintptr_t) ctx->uniqueCount );
    e8849822:	12842603          	lw	a2,296(s0)
    e8849826:	12043503          	ld	a0,288(s0)
    e884982a:	85a6                	mv	a1,s1
    e884982c:	c2bfd0ef          	jal	ra,e8847456 <CFDictionaryAddValue>
	type = CFGetTypeID( inObj );
    e8849830:	8526                	mv	a0,s1
    e8849832:	901fd0ef          	jal	ra,e8847132 <CFGetTypeID>
    e8849836:	0005091b          	sext.w	s2,a0
	if( ( type == gCFStringType )  || 
    e884983a:	0008b797          	auipc	a5,0x8b
    e884983e:	4be78793          	addi	a5,a5,1214 # e88d4cf8 <gCFStringType>
    e8849842:	439c                	lw	a5,0(a5)
    e8849844:	09278563          	beq	a5,s2,e88498ce <_FlattenPlist+0xc6>
    e8849848:	0008b797          	auipc	a5,0x8b
    e884984c:	4ac78793          	addi	a5,a5,1196 # e88d4cf4 <gCFNumberType>
    e8849850:	439c                	lw	a5,0(a5)
    e8849852:	07278e63          	beq	a5,s2,e88498ce <_FlattenPlist+0xc6>
		( type == gCFNumberType )  ||
    e8849856:	0008b797          	auipc	a5,0x8b
    e884985a:	48e78793          	addi	a5,a5,1166 # e88d4ce4 <gCFBooleanType>
    e884985e:	439c                	lw	a5,0(a5)
    e8849860:	07278763          	beq	a5,s2,e88498ce <_FlattenPlist+0xc6>
		( type == gCFBooleanType ) || 
    e8849864:	0008b797          	auipc	a5,0x8b
    e8849868:	48478793          	addi	a5,a5,1156 # e88d4ce8 <gCFDataType>
    e884986c:	439c                	lw	a5,0(a5)
    e884986e:	07278063          	beq	a5,s2,e88498ce <_FlattenPlist+0xc6>
		( type == gCFDataType )    || 
    e8849872:	0008b797          	auipc	a5,0x8b
    e8849876:	47a78793          	addi	a5,a5,1146 # e88d4cec <gCFDateType>
    e884987a:	439c                	lw	a5,0(a5)
    e884987c:	05278963          	beq	a5,s2,e88498ce <_FlattenPlist+0xc6>
	CFArrayAppendValue( ctx->array, inObj );
    e8849880:	11843503          	ld	a0,280(s0)
    e8849884:	85a6                	mv	a1,s1
    e8849886:	9ebfd0ef          	jal	ra,e8847270 <CFArrayAppendValue>
	++ctx->uniqueCount;
    e884988a:	12842783          	lw	a5,296(s0)
    e884988e:	2785                	addiw	a5,a5,1
    e8849890:	12f42423          	sw	a5,296(s0)
	if( type == gCFDictionaryType )
    e8849894:	0008b797          	auipc	a5,0x8b
    e8849898:	45c78793          	addi	a5,a5,1116 # e88d4cf0 <gCFDictionaryType>
    e884989c:	439c                	lw	a5,0(a5)
    e884989e:	05279563          	bne	a5,s2,e88498e8 <_FlattenPlist+0xe0>
		CFDictionaryApplyFunction( (CFDictionaryRef) inObj, _FlattenDictionaryKey, ctx );
    e88498a2:	8622                	mv	a2,s0
    e88498a4:	8526                	mv	a0,s1
    e88498a6:	00000597          	auipc	a1,0x0
    e88498aa:	08658593          	addi	a1,a1,134 # e884992c <_FlattenDictionaryKey>
    e88498ae:	bb9fd0ef          	jal	ra,e8847466 <CFDictionaryApplyFunction>
}
    e88498b2:	6962                	ld	s2,24(sp)
		CFDictionaryApplyFunction( (CFDictionaryRef) inObj, _FlattenDictionaryValue, ctx );
    e88498b4:	8622                	mv	a2,s0
}
    e88498b6:	6422                	ld	s0,8(sp)
    e88498b8:	70a2                	ld	ra,40(sp)
    e88498ba:	7982                	ld	s3,32(sp)
		CFDictionaryApplyFunction( (CFDictionaryRef) inObj, _FlattenDictionaryValue, ctx );
    e88498bc:	8526                	mv	a0,s1
}
    e88498be:	64c2                	ld	s1,16(sp)
		CFDictionaryApplyFunction( (CFDictionaryRef) inObj, _FlattenDictionaryValue, ctx );
    e88498c0:	00000597          	auipc	a1,0x0
    e88498c4:	06658593          	addi	a1,a1,102 # e8849926 <_FlattenDictionaryValue>
}
    e88498c8:	6145                	addi	sp,sp,48
		CFDictionaryApplyFunction( (CFDictionaryRef) inObj, _FlattenDictionaryValue, ctx );
    e88498ca:	b9dfd06f          	j	e8847466 <CFDictionaryApplyFunction>
		if( CFDictionaryGetCount( ctx->uniqueDict ) == oldCount )
    e88498ce:	12043503          	ld	a0,288(s0)
    e88498d2:	b59fd0ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e88498d6:	fb3515e3          	bne	a0,s3,e8849880 <_FlattenPlist+0x78>
}
    e88498da:	70a2                	ld	ra,40(sp)
    e88498dc:	6422                	ld	s0,8(sp)
    e88498de:	64c2                	ld	s1,16(sp)
    e88498e0:	6962                	ld	s2,24(sp)
    e88498e2:	7982                	ld	s3,32(sp)
    e88498e4:	6145                	addi	sp,sp,48
    e88498e6:	8082                	ret
	else if( type == gCFArrayType )
    e88498e8:	0008b797          	auipc	a5,0x8b
    e88498ec:	3f878793          	addi	a5,a5,1016 # e88d4ce0 <gCFArrayType>
    e88498f0:	439c                	lw	a5,0(a5)
    e88498f2:	ff2794e3          	bne	a5,s2,e88498da <_FlattenPlist+0xd2>
		CFArrayApplyFunction( (CFArrayRef) inObj, CFRangeMake( 0, CFArrayGetCount( (CFArrayRef) inObj ) ), _FlattenArray, ctx );
    e88498f6:	8526                	mv	a0,s1
    e88498f8:	8fbfd0ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e88498fc:	02051593          	slli	a1,a0,0x20
    e8849900:	86a2                	mv	a3,s0
}
    e8849902:	6422                	ld	s0,8(sp)
    e8849904:	70a2                	ld	ra,40(sp)
    e8849906:	6962                	ld	s2,24(sp)
    e8849908:	7982                	ld	s3,32(sp)
		CFArrayApplyFunction( (CFArrayRef) inObj, CFRangeMake( 0, CFArrayGetCount( (CFArrayRef) inObj ) ), _FlattenArray, ctx );
    e884990a:	8526                	mv	a0,s1
}
    e884990c:	64c2                	ld	s1,16(sp)
		CFArrayApplyFunction( (CFArrayRef) inObj, CFRangeMake( 0, CFArrayGetCount( (CFArrayRef) inObj ) ), _FlattenArray, ctx );
    e884990e:	00000617          	auipc	a2,0x0
    e8849912:	00e60613          	addi	a2,a2,14 # e884991c <_FlattenArray>
}
    e8849916:	6145                	addi	sp,sp,48
		CFArrayApplyFunction( (CFArrayRef) inObj, CFRangeMake( 0, CFArrayGetCount( (CFArrayRef) inObj ) ), _FlattenArray, ctx );
    e8849918:	877fe06f          	j	e884818e <CFLArrayApplyFunction>

00000000e884991c <_FlattenArray>:
{
    e884991c:	87ae                	mv	a5,a1
	_FlattenPlist( ctx, inValue );
    e884991e:	85aa                	mv	a1,a0
    e8849920:	853e                	mv	a0,a5
    e8849922:	ee7ff06f          	j	e8849808 <_FlattenPlist>

00000000e8849926 <_FlattenDictionaryValue>:
	_FlattenPlist( ctx, inValue );
    e8849926:	8532                	mv	a0,a2
    e8849928:	ee1ff06f          	j	e8849808 <_FlattenPlist>

00000000e884992c <_FlattenDictionaryKey>:
	_FlattenPlist( ctx, inKey );
    e884992c:	85aa                	mv	a1,a0
    e884992e:	8532                	mv	a0,a2
    e8849930:	ed9ff06f          	j	e8849808 <_FlattenPlist>

00000000e8849934 <_WriteBytes>:
//===========================================================================================================================
//	_WriteBytes
//===========================================================================================================================

static OSStatus	_WriteBytes( CFBinaryPlistContext *ctx, const void *inData, size_t inSize )
{
    e8849934:	7179                	addi	sp,sp,-48
    e8849936:	e422                	sd	s0,8(sp)
    e8849938:	f406                	sd	ra,40(sp)
    e884993a:	e826                	sd	s1,16(sp)
    e884993c:	ec4a                	sd	s2,24(sp)
    e884993e:	f04e                	sd	s3,32(sp)
    e8849940:	842a                	mv	s0,a0
	OSStatus		err;
	
	if( ctx->ptr )
    e8849942:	6108                	ld	a0,0(a0)
    e8849944:	c931                	beqz	a0,e8849998 <_WriteBytes+0x64>
	{
		if( ctx->ptrFull + inSize > ctx->ptrSize ) {
    e8849946:	681c                	ld	a5,16(s0)
    e8849948:	89ae                	mv	s3,a1
    e884994a:	640c                	ld	a1,8(s0)
    e884994c:	97b2                	add	a5,a5,a2
    e884994e:	84b2                	mv	s1,a2
    e8849950:	00f5fd63          	bgeu	a1,a5,e884996a <_WriteBytes+0x36>
			size_t newSize = (ctx->ptrSize + inSize + 0x3FF) & ~0x3FF;
    e8849954:	3ff60913          	addi	s2,a2,1023
    e8849958:	992e                	add	s2,s2,a1
    e884995a:	c0097913          	andi	s2,s2,-1024
            #if( TARGET_NO_REALLOC )
	        void* newPtr = (uint8_t *) _CFLrealloc( ctx->ptr, ctx->ptrSize, newSize );
    e884995e:	864a                	mv	a2,s2
    e8849960:	b77ff0ef          	jal	ra,e88494d6 <_CFLrealloc>
            #else
			void* newPtr = realloc( ctx->ptr, newSize );
            #endif
			require_action( newPtr, exit, err = kNoMemoryErr );
    e8849964:	cd15                	beqz	a0,e88499a0 <_WriteBytes+0x6c>
			ctx->ptr = newPtr;
			ctx->ptrSize = newSize;
    e8849966:	f924550b          	sdd	a0,s2,(s0),0,4
		}
		memcpy( &ctx->ptr[ ctx->ptrFull ], inData, inSize );
    e884996a:	681c                	ld	a5,16(s0)
    e884996c:	6008                	ld	a0,0(s0)
    e884996e:	8626                	mv	a2,s1
    e8849970:	85ce                	mv	a1,s3
    e8849972:	953e                	add	a0,a0,a5
    e8849974:	22d320ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		ctx->ptrFull += inSize;
    e8849978:	681c                	ld	a5,16(s0)
	else
	{
		err = kNotPreparedErr;
		goto exit;
	}
	ctx->bytesWritten += inSize;
    e884997a:	13043603          	ld	a2,304(s0)
	err = kNoErr;
    e884997e:	4501                	li	a0,0
		ctx->ptrFull += inSize;
    e8849980:	97a6                	add	a5,a5,s1
	ctx->bytesWritten += inSize;
    e8849982:	94b2                	add	s1,s1,a2
		ctx->ptrFull += inSize;
    e8849984:	e81c                	sd	a5,16(s0)
	ctx->bytesWritten += inSize;
    e8849986:	12943823          	sd	s1,304(s0)
	
exit:
	return( err );
}
    e884998a:	70a2                	ld	ra,40(sp)
    e884998c:	6422                	ld	s0,8(sp)
    e884998e:	64c2                	ld	s1,16(sp)
    e8849990:	6962                	ld	s2,24(sp)
    e8849992:	7982                	ld	s3,32(sp)
    e8849994:	6145                	addi	sp,sp,48
    e8849996:	8082                	ret
		err = kNotPreparedErr;
    e8849998:	7579                	lui	a0,0xffffe
    e884999a:	5a750513          	addi	a0,a0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e884999e:	b7f5                	j	e884998a <_WriteBytes+0x56>
			require_action( newPtr, exit, err = kNoMemoryErr );
    e88499a0:	7579                	lui	a0,0xffffe
    e88499a2:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88499a6:	b7d5                	j	e884998a <_WriteBytes+0x56>

00000000e88499a8 <_WriteV0ArrayValue>:
{
    e88499a8:	1101                	addi	sp,sp,-32
    e88499aa:	e822                	sd	s0,16(sp)
    e88499ac:	842e                	mv	s0,a1
	refnum = (uint32_t)(uintptr_t) CFDictionaryGetValue( ctx->uniqueDict, inValue );
    e88499ae:	85aa                	mv	a1,a0
    e88499b0:	12043503          	ld	a0,288(s0)
{
    e88499b4:	ec06                	sd	ra,24(sp)
	refnum = (uint32_t)(uintptr_t) CFDictionaryGetValue( ctx->uniqueDict, inValue );
    e88499b6:	a89fd0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	WriteBig32( buf, refnum );
    e88499ba:	9005150b          	revw	a0,a0
	_WriteBytes( ctx, buf + ( 4 - ctx->objectRefSize ), ctx->objectRefSize );
    e88499be:	13844603          	lbu	a2,312(s0)
    e88499c2:	4591                	li	a1,4
    e88499c4:	003c                	addi	a5,sp,8
    e88499c6:	9d91                	subw	a1,a1,a2
	WriteBig32( buf, refnum );
    e88499c8:	c42a                	sw	a0,8(sp)
	_WriteBytes( ctx, buf + ( 4 - ctx->objectRefSize ), ctx->objectRefSize );
    e88499ca:	95be                	add	a1,a1,a5
    e88499cc:	8522                	mv	a0,s0
    e88499ce:	f67ff0ef          	jal	ra,e8849934 <_WriteBytes>
}
    e88499d2:	6442                	ld	s0,16(sp)
    e88499d4:	60e2                	ld	ra,24(sp)
    e88499d6:	6105                	addi	sp,sp,32
    e88499d8:	8082                	ret

00000000e88499da <_WriteV0DictionaryValue>:
{
    e88499da:	1101                	addi	sp,sp,-32
    e88499dc:	ec06                	sd	ra,24(sp)
    e88499de:	e822                	sd	s0,16(sp)
	refnum = (uint32_t)(uintptr_t) CFDictionaryGetValue( ctx->uniqueDict, inValue );
    e88499e0:	12063503          	ld	a0,288(a2)
{
    e88499e4:	8432                	mv	s0,a2
	refnum = (uint32_t)(uintptr_t) CFDictionaryGetValue( ctx->uniqueDict, inValue );
    e88499e6:	a59fd0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	WriteBig32( buf, refnum );
    e88499ea:	9005150b          	revw	a0,a0
	_WriteBytes( ctx, buf + ( 4 - ctx->objectRefSize ), ctx->objectRefSize );
    e88499ee:	13844603          	lbu	a2,312(s0)
    e88499f2:	4591                	li	a1,4
    e88499f4:	003c                	addi	a5,sp,8
    e88499f6:	9d91                	subw	a1,a1,a2
	WriteBig32( buf, refnum );
    e88499f8:	c42a                	sw	a0,8(sp)
	_WriteBytes( ctx, buf + ( 4 - ctx->objectRefSize ), ctx->objectRefSize );
    e88499fa:	95be                	add	a1,a1,a5
    e88499fc:	8522                	mv	a0,s0
    e88499fe:	f37ff0ef          	jal	ra,e8849934 <_WriteBytes>
}
    e8849a02:	6442                	ld	s0,16(sp)
    e8849a04:	60e2                	ld	ra,24(sp)
    e8849a06:	6105                	addi	sp,sp,32
    e8849a08:	8082                	ret

00000000e8849a0a <_WriteV0DictionaryKey>:
{
    e8849a0a:	1101                	addi	sp,sp,-32
    e8849a0c:	ec06                	sd	ra,24(sp)
    e8849a0e:	e822                	sd	s0,16(sp)
	refnum = (uint32_t)(uintptr_t) CFDictionaryGetValue( ctx->uniqueDict, inKey );
    e8849a10:	85aa                	mv	a1,a0
    e8849a12:	12063503          	ld	a0,288(a2)
{
    e8849a16:	8432                	mv	s0,a2
	refnum = (uint32_t)(uintptr_t) CFDictionaryGetValue( ctx->uniqueDict, inKey );
    e8849a18:	a27fd0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	WriteBig32( buf, refnum );
    e8849a1c:	9005150b          	revw	a0,a0
	_WriteBytes( ctx, buf + ( 4 - ctx->objectRefSize ), ctx->objectRefSize );
    e8849a20:	13844603          	lbu	a2,312(s0)
    e8849a24:	4591                	li	a1,4
    e8849a26:	003c                	addi	a5,sp,8
    e8849a28:	9d91                	subw	a1,a1,a2
	WriteBig32( buf, refnum );
    e8849a2a:	c42a                	sw	a0,8(sp)
	_WriteBytes( ctx, buf + ( 4 - ctx->objectRefSize ), ctx->objectRefSize );
    e8849a2c:	95be                	add	a1,a1,a5
    e8849a2e:	8522                	mv	a0,s0
    e8849a30:	f05ff0ef          	jal	ra,e8849934 <_WriteBytes>
}
    e8849a34:	6442                	ld	s0,16(sp)
    e8849a36:	60e2                	ld	ra,24(sp)
    e8849a38:	6105                	addi	sp,sp,32
    e8849a3a:	8082                	ret

00000000e8849a3c <_WriteInteger>:
//===========================================================================================================================
//	_WriteInteger
//===========================================================================================================================

static OSStatus	_WriteInteger( CFBinaryPlistContext *ctx, uint64_t inValue )
{
    e8849a3c:	1101                	addi	sp,sp,-32
    e8849a3e:	ec06                	sd	ra,24(sp)
	OSStatus		err;
	uint8_t			buf[ 9 ];
	size_t			len;
	
	if( inValue <= UINT64_C( 0xFF ) )
    e8849a40:	0ff00713          	li	a4,255
    e8849a44:	02b76063          	bltu	a4,a1,e8849a64 <_WriteInteger+0x28>
    e8849a48:	0ff5f793          	andi	a5,a1,255
	{
		buf[ 0 ] = kCFLBinaryPlistMarkerInt | 0;
    e8849a4c:	4741                	li	a4,16
    e8849a4e:	00e10023          	sb	a4,0(sp)
		buf[ 1 ] = (uint8_t) inValue;
    e8849a52:	00f100a3          	sb	a5,1(sp)
		len = 2;
    e8849a56:	4609                	li	a2,2
		buf[ 0 ] = kCFLBinaryPlistMarkerInt | 3;
		WriteBig64( &buf[ 1 ], inValue );
		len = 9;
	}
	
	err = _WriteBytes( ctx, buf, len );
    e8849a58:	858a                	mv	a1,sp
    e8849a5a:	edbff0ef          	jal	ra,e8849934 <_WriteBytes>
	require_noerr( err, exit );
	
exit:
	return( err );
}
    e8849a5e:	60e2                	ld	ra,24(sp)
    e8849a60:	6105                	addi	sp,sp,32
    e8849a62:	8082                	ret
	else if( inValue <= UINT64_C( 0xFFFF ) )
    e8849a64:	67c1                	lui	a5,0x10
    e8849a66:	00f5fe63          	bgeu	a1,a5,e8849a82 <_WriteInteger+0x46>
		buf[ 0 ] = kCFLBinaryPlistMarkerInt | 1;
    e8849a6a:	47c5                	li	a5,17
    e8849a6c:	00f10023          	sb	a5,0(sp)
		WriteBig16( &buf[ 1 ], inValue );
    e8849a70:	00859793          	slli	a5,a1,0x8
    e8849a74:	3c85b58b          	extu	a1,a1,15,8
    e8849a78:	8ddd                	or	a1,a1,a5
    e8849a7a:	00b110a3          	sh	a1,1(sp)
		len = 3;
    e8849a7e:	460d                	li	a2,3
    e8849a80:	bfe1                	j	e8849a58 <_WriteInteger+0x1c>
	else if( inValue <= UINT64_C( 0xFFFFFFFF ) )
    e8849a82:	57fd                	li	a5,-1
    e8849a84:	9381                	srli	a5,a5,0x20
    e8849a86:	00b7eb63          	bltu	a5,a1,e8849a9c <_WriteInteger+0x60>
		buf[ 0 ] = kCFLBinaryPlistMarkerInt | 2;
    e8849a8a:	47c9                	li	a5,18
    e8849a8c:	9005958b          	revw	a1,a1
    e8849a90:	00f10023          	sb	a5,0(sp)
		WriteBig32( &buf[ 1 ], inValue );
    e8849a94:	00b120a3          	sw	a1,1(sp)
		len = 5;
    e8849a98:	4615                	li	a2,5
    e8849a9a:	bf7d                	j	e8849a58 <_WriteInteger+0x1c>
		buf[ 0 ] = kCFLBinaryPlistMarkerInt | 3;
    e8849a9c:	47cd                	li	a5,19
    e8849a9e:	8205958b          	rev	a1,a1
    e8849aa2:	00f10023          	sb	a5,0(sp)
		WriteBig64( &buf[ 1 ], inValue );
    e8849aa6:	00b130a3          	sd	a1,1(sp)
		len = 9;
    e8849aaa:	4625                	li	a2,9
    e8849aac:	b775                	j	e8849a58 <_WriteInteger+0x1c>

00000000e8849aae <_ReadV0Object>:
{
    e8849aae:	7135                	addi	sp,sp,-160
    e8849ab0:	f8d2                	sd	s4,112(sp)
    e8849ab2:	ed06                	sd	ra,152(sp)
    e8849ab4:	e922                	sd	s0,144(sp)
    e8849ab6:	e526                	sd	s1,136(sp)
    e8849ab8:	e14a                	sd	s2,128(sp)
    e8849aba:	fcce                	sd	s3,120(sp)
    e8849abc:	f4d6                	sd	s5,104(sp)
    e8849abe:	f0da                	sd	s6,96(sp)
    e8849ac0:	ecde                	sd	s7,88(sp)
	require_action_quiet( inOffset < ( (size_t)( inEnd - inSrc ) ), exit, err = kRangeErr );
    e8849ac2:	40b607b3          	sub	a5,a2,a1
{
    e8849ac6:	8a3a                	mv	s4,a4
	require_action_quiet( inOffset < ( (size_t)( inEnd - inSrc ) ), exit, err = kRangeErr );
    e8849ac8:	00f6e863          	bltu	a3,a5,e8849ad8 <_ReadV0Object+0x2a>
    e8849acc:	77f9                	lui	a5,0xffffe
    e8849ace:	5ca7879b          	addiw	a5,a5,1482
    e8849ad2:	c63e                	sw	a5,12(sp)
	CFReleaseNullSafe( value );
    e8849ad4:	4981                	li	s3,0
    e8849ad6:	a839                	j	e8849af4 <_ReadV0Object+0x46>
    e8849ad8:	892a                	mv	s2,a0
	obj = CFDictionaryGetValue( ctx->uniqueDict, (const void *)(uintptr_t) inOffset );
    e8849ada:	12053503          	ld	a0,288(a0)
    e8849ade:	8b2e                	mv	s6,a1
    e8849ae0:	85b6                	mv	a1,a3
    e8849ae2:	84b2                	mv	s1,a2
    e8849ae4:	8ab6                	mv	s5,a3
    e8849ae6:	959fd0ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8849aea:	89aa                	mv	s3,a0
	if( obj )
    e8849aec:	c11d                	beqz	a0,e8849b12 <_ReadV0Object+0x64>
		CFRetain( obj );
    e8849aee:	e58fd0ef          	jal	ra,e8847146 <CFRetain>
		err = kNoErr;
    e8849af2:	c602                	sw	zero,12(sp)
	if( outErr ) *outErr = err;
    e8849af4:	47b2                	lw	a5,12(sp)
}
    e8849af6:	60ea                	ld	ra,152(sp)
    e8849af8:	644a                	ld	s0,144(sp)
	if( outErr ) *outErr = err;
    e8849afa:	00fa2023          	sw	a5,0(s4)
}
    e8849afe:	854e                	mv	a0,s3
    e8849b00:	64aa                	ld	s1,136(sp)
    e8849b02:	690a                	ld	s2,128(sp)
    e8849b04:	79e6                	ld	s3,120(sp)
    e8849b06:	7a46                	ld	s4,112(sp)
    e8849b08:	7aa6                	ld	s5,104(sp)
    e8849b0a:	7b06                	ld	s6,96(sp)
    e8849b0c:	6be6                	ld	s7,88(sp)
    e8849b0e:	610d                	addi	sp,sp,160
    e8849b10:	8082                	ret
	ptr = inSrc + inOffset;
    e8849b12:	015b06b3          	add	a3,s6,s5
	marker = *ptr++;
    e8849b16:	815b478b          	lrbu	a5,s6,s5,0
    e8849b1a:	00168713          	addi	a4,a3,1
    e8849b1e:	e83a                	sd	a4,16(sp)
    e8849b20:	0f07f413          	andi	s0,a5,240
	switch( marker & 0xF0 )
    e8849b24:	04000613          	li	a2,64
    e8849b28:	28c40063          	beq	s0,a2,e8849da8 <_ReadV0Object+0x2fa>
    e8849b2c:	04866863          	bltu	a2,s0,e8849b7c <_ReadV0Object+0xce>
    e8849b30:	4641                	li	a2,16
    e8849b32:	18c40c63          	beq	s0,a2,e8849cca <_ReadV0Object+0x21c>
    e8849b36:	00866863          	bltu	a2,s0,e8849b46 <_ReadV0Object+0x98>
    e8849b3a:	14040b63          	beqz	s0,e8849c90 <_ReadV0Object+0x1e2>
			require_action_quiet( marker == kCFLBinaryPlistMarkerDateFloat, exit, err = kTypeErr );
    e8849b3e:	77f9                	lui	a5,0xffffe
    e8849b40:	59c7879b          	addiw	a5,a5,1436
    e8849b44:	a401                	j	e8849d44 <_ReadV0Object+0x296>
	switch( marker & 0xF0 )
    e8849b46:	02000613          	li	a2,32
    e8849b4a:	22c40063          	beq	s0,a2,e8849d6a <_ReadV0Object+0x2bc>
    e8849b4e:	03000613          	li	a2,48
    e8849b52:	fec416e3          	bne	s0,a2,e8849b3e <_ReadV0Object+0x90>
			require_action_quiet( marker == kCFLBinaryPlistMarkerDateFloat, exit, err = kTypeErr );
    e8849b56:	03300613          	li	a2,51
    e8849b5a:	fec792e3          	bne	a5,a2,e8849b3e <_ReadV0Object+0x90>
			require_action_quiet( ( inEnd - ptr ) >= 8, exit, err = kSizeErr );
    e8849b5e:	8c99                	sub	s1,s1,a4
    e8849b60:	479d                	li	a5,7
    e8849b62:	1897d163          	bge	a5,s1,e8849ce4 <_ReadV0Object+0x236>
			v64.u64 = ReadBig64( ptr );
    e8849b66:	0016b783          	ld	a5,1(a3)
			obj = CFDateCreate( NULL, v64.f64 );
    e8849b6a:	4501                	li	a0,0
    e8849b6c:	8207978b          	rev	a5,a5
    e8849b70:	f2078553          	fmv.d.x	fa0,a5
			v64.u64 = ReadBig64( ptr );
    e8849b74:	f03e                	sd	a5,32(sp)
			obj = CFDateCreate( NULL, v64.f64 );
    e8849b76:	f98fd0ef          	jal	ra,e884730e <CFDateCreate>
    e8849b7a:	aa7d                	j	e8849d38 <_ReadV0Object+0x28a>
	switch( marker & 0xF0 )
    e8849b7c:	07000713          	li	a4,112
    e8849b80:	24e40b63          	beq	s0,a4,e8849dd6 <_ReadV0Object+0x328>
    e8849b84:	02876d63          	bltu	a4,s0,e8849bbe <_ReadV0Object+0x110>
    e8849b88:	05000713          	li	a4,80
    e8849b8c:	24e40563          	beq	s0,a4,e8849dd6 <_ReadV0Object+0x328>
    e8849b90:	06000713          	li	a4,96
    e8849b94:	fae415e3          	bne	s0,a4,e8849b3e <_ReadV0Object+0x90>
			count = marker & 0x0F;
    e8849b98:	8bbd                	andi	a5,a5,15
    e8849b9a:	ec3e                	sd	a5,24(sp)
			if( count == 0xF )
    e8849b9c:	473d                	li	a4,15
    e8849b9e:	26e78e63          	beq	a5,a4,e8849e1a <_ReadV0Object+0x36c>
			count *= 2;
    e8849ba2:	6662                	ld	a2,24(sp)
			require_action_quiet( count <= ( (size_t)( inEnd - ptr ) ), exit, err = kSizeErr );
    e8849ba4:	65c2                	ld	a1,16(sp)
			count *= 2;
    e8849ba6:	0606                	slli	a2,a2,0x1
    e8849ba8:	ec32                	sd	a2,24(sp)
			require_action_quiet( count <= ( (size_t)( inEnd - ptr ) ), exit, err = kSizeErr );
    e8849baa:	8c8d                	sub	s1,s1,a1
    e8849bac:	12c4ec63          	bltu	s1,a2,e8849ce4 <_ReadV0Object+0x236>
			obj = CFStringCreateWithBytes( NULL, ptr, (CFIndex) count, kCFStringEncodingUTF16BE, false );
    e8849bb0:	100006b7          	lui	a3,0x10000
    e8849bb4:	4701                	li	a4,0
    e8849bb6:	10068693          	addi	a3,a3,256 # 10000100 <memcmp-0xd87fff00>
    e8849bba:	2601                	sext.w	a2,a2
    e8849bbc:	a499                	j	e8849e02 <_ReadV0Object+0x354>
	switch( marker & 0xF0 )
    e8849bbe:	0a000713          	li	a4,160
    e8849bc2:	26e40c63          	beq	s0,a4,e8849e3a <_ReadV0Object+0x38c>
    e8849bc6:	0d000713          	li	a4,208
    e8849bca:	f6e41ae3          	bne	s0,a4,e8849b3e <_ReadV0Object+0x90>
			count = marker & 0x0F;
    e8849bce:	8bbd                	andi	a5,a5,15
    e8849bd0:	ec3e                	sd	a5,24(sp)
			if( count == 0xF )
    e8849bd2:	473d                	li	a4,15
    e8849bd4:	2ce78c63          	beq	a5,a4,e8849eac <_ReadV0Object+0x3fe>
			require_action_quiet( count <= ( ( (size_t)( inEnd - ptr ) ) / ctx->objectRefSize ), exit, err = kCountErr );
    e8849bd8:	67c2                	ld	a5,16(sp)
    e8849bda:	13894703          	lbu	a4,312(s2)
    e8849bde:	40f487b3          	sub	a5,s1,a5
    e8849be2:	02e7d7b3          	divu	a5,a5,a4
    e8849be6:	6762                	ld	a4,24(sp)
    e8849be8:	0ee7e763          	bltu	a5,a4,e8849cd6 <_ReadV0Object+0x228>
			dict = CFDictionaryCreateMutable( kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8849bec:	00075697          	auipc	a3,0x75
    e8849bf0:	bdc68693          	addi	a3,a3,-1060 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8849bf4:	00075617          	auipc	a2,0x75
    e8849bf8:	ba460613          	addi	a2,a2,-1116 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8849bfc:	4581                	li	a1,0
    e8849bfe:	4501                	li	a0,0
    e8849c00:	fa6fd0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8849c04:	842a                	mv	s0,a0
			require_action( dict, exit, err = kNoMemoryErr );
    e8849c06:	12050c63          	beqz	a0,e8849d3e <_ReadV0Object+0x290>
			keyPtr   = ptr;
    e8849c0a:	67c2                	ld	a5,16(sp)
			valuePtr = ptr + ( count * ctx->objectRefSize );
    e8849c0c:	13894683          	lbu	a3,312(s2)
    e8849c10:	6762                	ld	a4,24(sp)
			keyPtr   = ptr;
    e8849c12:	f83e                	sd	a5,48(sp)
			valuePtr = ptr + ( count * ctx->objectRefSize );
    e8849c14:	20e6978b          	mula	a5,a3,a4
    e8849c18:	fc3e                	sd	a5,56(sp)
			while( count-- > 0 )
    e8849c1a:	67e2                	ld	a5,24(sp)
    e8849c1c:	fff78713          	addi	a4,a5,-1 # ffffffffffffdfff <__DRAM0_INF_BASE+0xffffffff0000dfff>
    e8849c20:	ec3a                	sd	a4,24(sp)
    e8849c22:	c7d9                	beqz	a5,e8849cb0 <_ReadV0Object+0x202>
				err = _ReadRefOffset( ctx, inSrc, inEnd, &keyPtr, &offset );
    e8849c24:	1038                	addi	a4,sp,40
    e8849c26:	1814                	addi	a3,sp,48
    e8849c28:	8626                	mv	a2,s1
    e8849c2a:	85da                	mv	a1,s6
    e8849c2c:	854a                	mv	a0,s2
    e8849c2e:	a47ff0ef          	jal	ra,e8849674 <_ReadRefOffset>
    e8849c32:	c62a                	sw	a0,12(sp)
				require_noerr_quiet( err, exit );
    e8849c34:	28051f63          	bnez	a0,e8849ed2 <_ReadV0Object+0x424>
				key = _ReadV0Object( ctx, inSrc, inEnd, offset, &err );
    e8849c38:	76a2                	ld	a3,40(sp)
    e8849c3a:	0078                	addi	a4,sp,12
    e8849c3c:	8626                	mv	a2,s1
    e8849c3e:	85da                	mv	a1,s6
    e8849c40:	854a                	mv	a0,s2
    e8849c42:	e6dff0ef          	jal	ra,e8849aae <_ReadV0Object>
    e8849c46:	8baa                	mv	s7,a0
				require_noerr_quiet( err, exit );
    e8849c48:	47b2                	lw	a5,12(sp)
    e8849c4a:	28079d63          	bnez	a5,e8849ee4 <_ReadV0Object+0x436>
				err = _ReadRefOffset( ctx, inSrc, inEnd, &valuePtr, &offset );
    e8849c4e:	1038                	addi	a4,sp,40
    e8849c50:	1834                	addi	a3,sp,56
    e8849c52:	8626                	mv	a2,s1
    e8849c54:	85da                	mv	a1,s6
    e8849c56:	854a                	mv	a0,s2
    e8849c58:	a1dff0ef          	jal	ra,e8849674 <_ReadRefOffset>
    e8849c5c:	c62a                	sw	a0,12(sp)
				require_noerr_quiet( err, exit );
    e8849c5e:	28051363          	bnez	a0,e8849ee4 <_ReadV0Object+0x436>
				value = _ReadV0Object( ctx, inSrc, inEnd, offset, &err );
    e8849c62:	76a2                	ld	a3,40(sp)
    e8849c64:	0078                	addi	a4,sp,12
    e8849c66:	8626                	mv	a2,s1
    e8849c68:	85da                	mv	a1,s6
    e8849c6a:	854a                	mv	a0,s2
    e8849c6c:	e43ff0ef          	jal	ra,e8849aae <_ReadV0Object>
    e8849c70:	8aaa                	mv	s5,a0
				require_noerr_quiet( err, exit );
    e8849c72:	47b2                	lw	a5,12(sp)
    e8849c74:	26079163          	bnez	a5,e8849ed6 <_ReadV0Object+0x428>
				CFDictionarySetValue( dict, key, value );
    e8849c78:	862a                	mv	a2,a0
    e8849c7a:	85de                	mv	a1,s7
    e8849c7c:	8522                	mv	a0,s0
    e8849c7e:	fd4fd0ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFRelease( key );   key   = NULL;
    e8849c82:	855e                	mv	a0,s7
    e8849c84:	cc6fd0ef          	jal	ra,e884714a <CFRelease>
				CFRelease( value ); value = NULL;
    e8849c88:	8556                	mv	a0,s5
    e8849c8a:	cc0fd0ef          	jal	ra,e884714a <CFRelease>
    e8849c8e:	b771                	j	e8849c1a <_ReadV0Object+0x16c>
			switch( marker )
    e8849c90:	4721                	li	a4,8
    e8849c92:	02e78263          	beq	a5,a4,e8849cb6 <_ReadV0Object+0x208>
    e8849c96:	4725                	li	a4,9
    e8849c98:	02e78463          	beq	a5,a4,e8849cc0 <_ReadV0Object+0x212>
    e8849c9c:	ea0791e3          	bnez	a5,e8849b3e <_ReadV0Object+0x90>
				case kCFLBinaryPlistMarkerNull:		obj = CFRetain( kCFNull );			break;
    e8849ca0:	0008b797          	auipc	a5,0x8b
    e8849ca4:	03878793          	addi	a5,a5,56 # e88d4cd8 <kCFLNull>
				case kCFLBinaryPlistMarkerTrue:		obj = CFRetain( kCFBooleanTrue );	break;
    e8849ca8:	6388                	ld	a0,0(a5)
    e8849caa:	c9cfd0ef          	jal	ra,e8847146 <CFRetain>
    e8849cae:	842a                	mv	s0,a0
	err = kNoErr;
    e8849cb0:	c602                	sw	zero,12(sp)
    e8849cb2:	89a2                	mv	s3,s0
    e8849cb4:	b581                	j	e8849af4 <_ReadV0Object+0x46>
				case kCFLBinaryPlistMarkerFalse:	obj = CFRetain( kCFBooleanFalse );	break;
    e8849cb6:	0008b797          	auipc	a5,0x8b
    e8849cba:	01278793          	addi	a5,a5,18 # e88d4cc8 <kCFLBooleanFalse>
    e8849cbe:	b7ed                	j	e8849ca8 <_ReadV0Object+0x1fa>
				case kCFLBinaryPlistMarkerTrue:		obj = CFRetain( kCFBooleanTrue );	break;
    e8849cc0:	0008b797          	auipc	a5,0x8b
    e8849cc4:	01078793          	addi	a5,a5,16 # e88d4cd0 <kCFLBooleanTrue>
    e8849cc8:	b7c5                	j	e8849ca8 <_ReadV0Object+0x1fa>
			u32 = 1 << ( marker & 0x0F );
    e8849cca:	8bbd                	andi	a5,a5,15
    e8849ccc:	4685                	li	a3,1
    e8849cce:	00f697bb          	sllw	a5,a3,a5
			require_action_quiet( u32 <= 16, exit, err = kCountErr );
    e8849cd2:	00f45663          	bge	s0,a5,e8849cde <_ReadV0Object+0x230>
			require_action_quiet( count <= ( ( (size_t)( inEnd - ptr ) ) / ctx->objectRefSize ), exit, err = kCountErr );
    e8849cd6:	77f9                	lui	a5,0xffffe
    e8849cd8:	5947879b          	addiw	a5,a5,1428
    e8849cdc:	a0a5                	j	e8849d44 <_ReadV0Object+0x296>
			require_action_quiet( u32 <= ( (size_t)( inEnd - ptr ) ), exit, err = kSizeErr );
    e8849cde:	8c99                	sub	s1,s1,a4
    e8849ce0:	00f4f663          	bgeu	s1,a5,e8849cec <_ReadV0Object+0x23e>
					err = kSizeErr;
    e8849ce4:	77f9                	lui	a5,0xffffe
    e8849ce6:	5a97879b          	addiw	a5,a5,1449
    e8849cea:	a8a9                	j	e8849d44 <_ReadV0Object+0x296>
			if( u32 > 8 )
    e8849cec:	4721                	li	a4,8
    e8849cee:	04f75d63          	bge	a4,a5,e8849d48 <_ReadV0Object+0x29a>
				for( u128.hi = 0; u32 > 8; --u32 ) u128.hi = ( u128.hi << 8 ) | *ptr++;
    e8849cf2:	e082                	sd	zero,64(sp)
    e8849cf4:	4621                	li	a2,8
    e8849cf6:	6706                	ld	a4,64(sp)
    e8849cf8:	37fd                	addiw	a5,a5,-1
    e8849cfa:	00871693          	slli	a3,a4,0x8
    e8849cfe:	6742                	ld	a4,16(sp)
    e8849d00:	00170593          	addi	a1,a4,1
    e8849d04:	e82e                	sd	a1,16(sp)
    e8849d06:	00074703          	lbu	a4,0(a4)
    e8849d0a:	8f55                	or	a4,a4,a3
    e8849d0c:	e0ba                	sd	a4,64(sp)
    e8849d0e:	fec794e3          	bne	a5,a2,e8849cf6 <_ReadV0Object+0x248>
				for( u128.lo = 0; u32 > 0; --u32 ) u128.lo = ( u128.lo << 8 ) | *ptr++;
    e8849d12:	e482                	sd	zero,72(sp)
    e8849d14:	6726                	ld	a4,72(sp)
    e8849d16:	37fd                	addiw	a5,a5,-1
    e8849d18:	00871693          	slli	a3,a4,0x8
    e8849d1c:	6742                	ld	a4,16(sp)
    e8849d1e:	00170613          	addi	a2,a4,1
    e8849d22:	e832                	sd	a2,16(sp)
    e8849d24:	00074703          	lbu	a4,0(a4)
    e8849d28:	8f55                	or	a4,a4,a3
    e8849d2a:	e4ba                	sd	a4,72(sp)
    e8849d2c:	f7e5                	bnez	a5,e8849d14 <_ReadV0Object+0x266>
				obj = CFNumberCreate( NULL, kCFNumberSInt128Type_compat, &u128 );
    e8849d2e:	0090                	addi	a2,sp,64
    e8849d30:	45bd                	li	a1,15
				obj = CFNumberCreate( NULL, kCFNumberSInt64Type, &v64.u64 );
    e8849d32:	4501                	li	a0,0
    e8849d34:	f3afd0ef          	jal	ra,e884746e <CFNumberCreate>
    e8849d38:	842a                	mv	s0,a0
			require_action( obj, exit, err = kNoMemoryErr );
    e8849d3a:	0e051963          	bnez	a0,e8849e2c <_ReadV0Object+0x37e>
    e8849d3e:	77f9                	lui	a5,0xffffe
    e8849d40:	5b87879b          	addiw	a5,a5,1464
    e8849d44:	c63e                	sw	a5,12(sp)
	CFReleaseNullSafe( value );
    e8849d46:	b37d                	j	e8849af4 <_ReadV0Object+0x46>
				for( v64.u64 = 0; u32 > 0; --u32 ) v64.u64 = ( v64.u64 << 8 ) | *ptr++;
    e8849d48:	f002                	sd	zero,32(sp)
    e8849d4a:	7702                	ld	a4,32(sp)
    e8849d4c:	37fd                	addiw	a5,a5,-1
    e8849d4e:	00871693          	slli	a3,a4,0x8
    e8849d52:	6742                	ld	a4,16(sp)
    e8849d54:	00170613          	addi	a2,a4,1
    e8849d58:	e832                	sd	a2,16(sp)
    e8849d5a:	00074703          	lbu	a4,0(a4)
    e8849d5e:	8f55                	or	a4,a4,a3
    e8849d60:	f03a                	sd	a4,32(sp)
    e8849d62:	f7e5                	bnez	a5,e8849d4a <_ReadV0Object+0x29c>
				obj = CFNumberCreate( NULL, kCFNumberSInt64Type, &v64.u64 );
    e8849d64:	1010                	addi	a2,sp,32
    e8849d66:	4591                	li	a1,4
    e8849d68:	b7e9                	j	e8849d32 <_ReadV0Object+0x284>
			switch( marker & 0x0F )
    e8849d6a:	8bbd                	andi	a5,a5,15
    e8849d6c:	4609                	li	a2,2
    e8849d6e:	02c78163          	beq	a5,a2,e8849d90 <_ReadV0Object+0x2e2>
    e8849d72:	460d                	li	a2,3
    e8849d74:	f6c798e3          	bne	a5,a2,e8849ce4 <_ReadV0Object+0x236>
					require_action_quiet( ( inEnd - ptr ) >= 8, exit, err = kSizeErr );
    e8849d78:	8c99                	sub	s1,s1,a4
    e8849d7a:	479d                	li	a5,7
    e8849d7c:	f697d4e3          	bge	a5,s1,e8849ce4 <_ReadV0Object+0x236>
					v64.u64 = ReadBig64( ptr );
    e8849d80:	0016b783          	ld	a5,1(a3)
					obj = CFNumberCreate( NULL, kCFNumberFloat64Type, &v64.f64 );
    e8849d84:	1010                	addi	a2,sp,32
    e8849d86:	4599                	li	a1,6
    e8849d88:	8207978b          	rev	a5,a5
					v64.u64 = ReadBig64( ptr );
    e8849d8c:	f03e                	sd	a5,32(sp)
					obj = CFNumberCreate( NULL, kCFNumberFloat64Type, &v64.f64 );
    e8849d8e:	b755                	j	e8849d32 <_ReadV0Object+0x284>
					require_action_quiet( ( inEnd - ptr ) >= 4, exit, err = kSizeErr );
    e8849d90:	8c99                	sub	s1,s1,a4
    e8849d92:	478d                	li	a5,3
    e8849d94:	f497d8e3          	bge	a5,s1,e8849ce4 <_ReadV0Object+0x236>
					v64.u32[ 0 ] = ReadBig32( ptr );
    e8849d98:	0016a783          	lw	a5,1(a3)
					obj = CFNumberCreate( NULL, kCFNumberFloat32Type, &v64.f32 );
    e8849d9c:	1010                	addi	a2,sp,32
    e8849d9e:	4595                	li	a1,5
    e8849da0:	9007978b          	revw	a5,a5
					v64.u32[ 0 ] = ReadBig32( ptr );
    e8849da4:	d03e                	sw	a5,32(sp)
					obj = CFNumberCreate( NULL, kCFNumberFloat32Type, &v64.f32 );
    e8849da6:	b779                	j	e8849d34 <_ReadV0Object+0x286>
			count = marker & 0x0F;
    e8849da8:	8bbd                	andi	a5,a5,15
    e8849daa:	ec3e                	sd	a5,24(sp)
			if( count == 0xF )
    e8849dac:	473d                	li	a4,15
    e8849dae:	00e78c63          	beq	a5,a4,e8849dc6 <_ReadV0Object+0x318>
			require_action_quiet( count <= ( (size_t)( inEnd - ptr ) ), exit, err = kSizeErr );
    e8849db2:	fac1458b          	ldd	a1,a2,(sp),1,4
    e8849db6:	8c8d                	sub	s1,s1,a1
    e8849db8:	f2c4e6e3          	bltu	s1,a2,e8849ce4 <_ReadV0Object+0x236>
			obj = CFDataCreate( NULL, ptr, (CFIndex) count );
    e8849dbc:	2601                	sext.w	a2,a2
    e8849dbe:	4501                	li	a0,0
    e8849dc0:	cd6fd0ef          	jal	ra,e8847296 <CFDataCreate>
    e8849dc4:	bf95                	j	e8849d38 <_ReadV0Object+0x28a>
				err = _ReadInteger( &ptr, inEnd, &count );
    e8849dc6:	0830                	addi	a2,sp,24
    e8849dc8:	85a6                	mv	a1,s1
    e8849dca:	0808                	addi	a0,sp,16
    e8849dcc:	9edff0ef          	jal	ra,e88497b8 <_ReadInteger>
    e8849dd0:	c62a                	sw	a0,12(sp)
				require_noerr_quiet( err, exit );
    e8849dd2:	d165                	beqz	a0,e8849db2 <_ReadV0Object+0x304>
    e8849dd4:	b305                	j	e8849af4 <_ReadV0Object+0x46>
			count = marker & 0x0F;
    e8849dd6:	8bbd                	andi	a5,a5,15
    e8849dd8:	ec3e                	sd	a5,24(sp)
			if( count == 0xF )
    e8849dda:	473d                	li	a4,15
    e8849ddc:	02e78763          	beq	a5,a4,e8849e0a <_ReadV0Object+0x35c>
			require_action_quiet( count <= ( (size_t)( inEnd - ptr ) ), exit, err = kSizeErr );
    e8849de0:	fac1458b          	ldd	a1,a2,(sp),1,4
    e8849de4:	8c8d                	sub	s1,s1,a1
    e8849de6:	eec4efe3          	bltu	s1,a2,e8849ce4 <_ReadV0Object+0x236>
			obj = CFStringCreateWithBytes( NULL, ptr, (CFIndex) count, 
    e8849dea:	05000793          	li	a5,80
    e8849dee:	2601                	sext.w	a2,a2
    e8849df0:	60000693          	li	a3,1536
    e8849df4:	00f40663          	beq	s0,a5,e8849e00 <_ReadV0Object+0x352>
    e8849df8:	080006b7          	lui	a3,0x8000
    e8849dfc:	10068693          	addi	a3,a3,256 # 8000100 <memcmp-0xe07fff00>
    e8849e00:	4701                	li	a4,0
			obj = CFStringCreateWithBytes( NULL, ptr, (CFIndex) count, kCFStringEncodingUTF16BE, false );
    e8849e02:	4501                	li	a0,0
    e8849e04:	e94fd0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e8849e08:	bf05                	j	e8849d38 <_ReadV0Object+0x28a>
				err = _ReadInteger( &ptr, inEnd, &count );
    e8849e0a:	0830                	addi	a2,sp,24
    e8849e0c:	85a6                	mv	a1,s1
    e8849e0e:	0808                	addi	a0,sp,16
    e8849e10:	9a9ff0ef          	jal	ra,e88497b8 <_ReadInteger>
    e8849e14:	c62a                	sw	a0,12(sp)
				require_noerr_quiet( err, exit );
    e8849e16:	d569                	beqz	a0,e8849de0 <_ReadV0Object+0x332>
    e8849e18:	b9f1                	j	e8849af4 <_ReadV0Object+0x46>
				err = _ReadInteger( &ptr, inEnd, &count );
    e8849e1a:	0830                	addi	a2,sp,24
    e8849e1c:	85a6                	mv	a1,s1
    e8849e1e:	0808                	addi	a0,sp,16
    e8849e20:	999ff0ef          	jal	ra,e88497b8 <_ReadInteger>
    e8849e24:	c62a                	sw	a0,12(sp)
				require_noerr_quiet( err, exit );
    e8849e26:	d6050ee3          	beqz	a0,e8849ba2 <_ReadV0Object+0xf4>
    e8849e2a:	b1e9                	j	e8849af4 <_ReadV0Object+0x46>
			CFDictionarySetValue( ctx->uniqueDict, (const void *)(uintptr_t) inOffset, obj );
    e8849e2c:	862a                	mv	a2,a0
    e8849e2e:	12093503          	ld	a0,288(s2)
    e8849e32:	85d6                	mv	a1,s5
    e8849e34:	e1efd0ef          	jal	ra,e8847452 <CFDictionarySetValue>
			break;
    e8849e38:	bda5                	j	e8849cb0 <_ReadV0Object+0x202>
			count = marker & 0x0F;
    e8849e3a:	8bbd                	andi	a5,a5,15
    e8849e3c:	ec3e                	sd	a5,24(sp)
			if( count == 0xF )
    e8849e3e:	473d                	li	a4,15
    e8849e40:	04e78e63          	beq	a5,a4,e8849e9c <_ReadV0Object+0x3ee>
			array = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8849e44:	00075617          	auipc	a2,0x75
    e8849e48:	92c60613          	addi	a2,a2,-1748 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e8849e4c:	4581                	li	a1,0
    e8849e4e:	4501                	li	a0,0
    e8849e50:	b76fd0ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e8849e54:	842a                	mv	s0,a0
			require_action( array, exit, err = kNoMemoryErr );
    e8849e56:	ee0504e3          	beqz	a0,e8849d3e <_ReadV0Object+0x290>
			while( count-- > 0 )
    e8849e5a:	67e2                	ld	a5,24(sp)
    e8849e5c:	fff78713          	addi	a4,a5,-1 # ffffffffffffdfff <__DRAM0_INF_BASE+0xffffffff0000dfff>
    e8849e60:	ec3a                	sd	a4,24(sp)
    e8849e62:	e40787e3          	beqz	a5,e8849cb0 <_ReadV0Object+0x202>
				err = _ReadRefOffset( ctx, inSrc, inEnd, &ptr, &offset );
    e8849e66:	1038                	addi	a4,sp,40
    e8849e68:	0814                	addi	a3,sp,16
    e8849e6a:	8626                	mv	a2,s1
    e8849e6c:	85da                	mv	a1,s6
    e8849e6e:	854a                	mv	a0,s2
    e8849e70:	805ff0ef          	jal	ra,e8849674 <_ReadRefOffset>
    e8849e74:	c62a                	sw	a0,12(sp)
				require_noerr_quiet( err, exit );
    e8849e76:	e521                	bnez	a0,e8849ebe <_ReadV0Object+0x410>
				value = _ReadV0Object( ctx, inSrc, inEnd, offset, &err );
    e8849e78:	76a2                	ld	a3,40(sp)
    e8849e7a:	0078                	addi	a4,sp,12
    e8849e7c:	8626                	mv	a2,s1
    e8849e7e:	85da                	mv	a1,s6
    e8849e80:	854a                	mv	a0,s2
    e8849e82:	c2dff0ef          	jal	ra,e8849aae <_ReadV0Object>
    e8849e86:	8aaa                	mv	s5,a0
				require_noerr_quiet( err, exit );
    e8849e88:	47b2                	lw	a5,12(sp)
    e8849e8a:	eb9d                	bnez	a5,e8849ec0 <_ReadV0Object+0x412>
				CFArrayAppendValue( array, value );
    e8849e8c:	85aa                	mv	a1,a0
    e8849e8e:	8522                	mv	a0,s0
    e8849e90:	be0fd0ef          	jal	ra,e8847270 <CFArrayAppendValue>
				CFRelease( value );
    e8849e94:	8556                	mv	a0,s5
    e8849e96:	ab4fd0ef          	jal	ra,e884714a <CFRelease>
				value = NULL;
    e8849e9a:	b7c1                	j	e8849e5a <_ReadV0Object+0x3ac>
				err = _ReadInteger( &ptr, inEnd, &count );
    e8849e9c:	0830                	addi	a2,sp,24
    e8849e9e:	85a6                	mv	a1,s1
    e8849ea0:	0808                	addi	a0,sp,16
    e8849ea2:	917ff0ef          	jal	ra,e88497b8 <_ReadInteger>
    e8849ea6:	c62a                	sw	a0,12(sp)
				require_noerr_quiet( err, exit );
    e8849ea8:	dd51                	beqz	a0,e8849e44 <_ReadV0Object+0x396>
    e8849eaa:	b1a9                	j	e8849af4 <_ReadV0Object+0x46>
				err = _ReadInteger( &ptr, inEnd, &count );
    e8849eac:	0830                	addi	a2,sp,24
    e8849eae:	85a6                	mv	a1,s1
    e8849eb0:	0808                	addi	a0,sp,16
    e8849eb2:	907ff0ef          	jal	ra,e88497b8 <_ReadInteger>
    e8849eb6:	c62a                	sw	a0,12(sp)
				require_noerr_quiet( err, exit );
    e8849eb8:	d20500e3          	beqz	a0,e8849bd8 <_ReadV0Object+0x12a>
    e8849ebc:	b925                	j	e8849af4 <_ReadV0Object+0x46>
    e8849ebe:	4a81                	li	s5,0
	CFReleaseNullSafe( array );
    e8849ec0:	8522                	mv	a0,s0
	CFReleaseNullSafe( key );
    e8849ec2:	a88fd0ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( value );
    e8849ec6:	c00a87e3          	beqz	s5,e8849ad4 <_ReadV0Object+0x26>
    e8849eca:	8556                	mv	a0,s5
    e8849ecc:	a7efd0ef          	jal	ra,e884714a <CFRelease>
    e8849ed0:	b115                	j	e8849af4 <_ReadV0Object+0x46>
    e8849ed2:	4a81                	li	s5,0
    e8849ed4:	4b81                	li	s7,0
	CFReleaseNullSafe( dict );
    e8849ed6:	8522                	mv	a0,s0
    e8849ed8:	a72fd0ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( key );
    e8849edc:	855e                	mv	a0,s7
    e8849ede:	fe0b92e3          	bnez	s7,e8849ec2 <_ReadV0Object+0x414>
    e8849ee2:	b7d5                	j	e8849ec6 <_ReadV0Object+0x418>
    e8849ee4:	4a81                	li	s5,0
    e8849ee6:	bfc5                	j	e8849ed6 <_ReadV0Object+0x428>

00000000e8849ee8 <_ObjectsExactlyEqual>:
{
    e8849ee8:	1101                	addi	sp,sp,-32
    e8849eea:	f891540b          	sdd	s0,s1,(sp),0,4
    e8849eee:	ec06                	sd	ra,24(sp)
    e8849ef0:	84ae                	mv	s1,a1
    e8849ef2:	e84a                	sd	s2,16(sp)
    e8849ef4:	842a                	mv	s0,a0
	CFTypeID const		aType = CFGetTypeID( a );
    e8849ef6:	a3cfd0ef          	jal	ra,e8847132 <CFGetTypeID>
    e8849efa:	0005091b          	sext.w	s2,a0
	CFTypeID const		bType = CFGetTypeID( b );
    e8849efe:	8526                	mv	a0,s1
    e8849f00:	a32fd0ef          	jal	ra,e8847132 <CFGetTypeID>
    e8849f04:	2501                	sext.w	a0,a0
	if( ( aType == bType ) && CFEqual( a, b ) )
    e8849f06:	00a90963          	beq	s2,a0,e8849f18 <_ObjectsExactlyEqual+0x30>
	return( false );
    e8849f0a:	4501                	li	a0,0
}
    e8849f0c:	60e2                	ld	ra,24(sp)
    e8849f0e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8849f12:	6942                	ld	s2,16(sp)
    e8849f14:	6105                	addi	sp,sp,32
    e8849f16:	8082                	ret
	if( ( aType == bType ) && CFEqual( a, b ) )
    e8849f18:	85a6                	mv	a1,s1
    e8849f1a:	8522                	mv	a0,s0
    e8849f1c:	a32fd0ef          	jal	ra,e884714e <CFEqual>
    e8849f20:	d56d                	beqz	a0,e8849f0a <_ObjectsExactlyEqual+0x22>
		if( aType != gCFNumberType )
    e8849f22:	0008b797          	auipc	a5,0x8b
    e8849f26:	dd278793          	addi	a5,a5,-558 # e88d4cf4 <gCFNumberType>
    e8849f2a:	439c                	lw	a5,0(a5)
			return( true );
    e8849f2c:	4505                	li	a0,1
		if( aType != gCFNumberType )
    e8849f2e:	fd279fe3          	bne	a5,s2,e8849f0c <_ObjectsExactlyEqual+0x24>
		if( CFNumberIsFloatType( (CFNumberRef) a ) == CFNumberIsFloatType( (CFNumberRef) b ) )
    e8849f32:	8522                	mv	a0,s0
    e8849f34:	81aff0ef          	jal	ra,e8848f4e <CFLNumberIsFloatType>
    e8849f38:	842a                	mv	s0,a0
    e8849f3a:	8526                	mv	a0,s1
    e8849f3c:	812ff0ef          	jal	ra,e8848f4e <CFLNumberIsFloatType>
    e8849f40:	2501                	sext.w	a0,a0
    e8849f42:	0004079b          	sext.w	a5,s0
    e8849f46:	40a78533          	sub	a0,a5,a0
			return( true );
    e8849f4a:	00153513          	seqz	a0,a0
    e8849f4e:	bf7d                	j	e8849f0c <_ObjectsExactlyEqual+0x24>

00000000e8849f50 <_GlobalEnsureInitialized.part.1>:
static void	_GlobalEnsureInitialized( void )
    e8849f50:	1141                	addi	sp,sp,-16
    e8849f52:	e406                	sd	ra,8(sp)
		gCFArrayType		= CFArrayGetTypeID();
    e8849f54:	a14fd0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8849f58:	0008b797          	auipc	a5,0x8b
    e8849f5c:	d8a7a423          	sw	a0,-632(a5) # e88d4ce0 <gCFArrayType>
		gCFBooleanType		= CFBooleanGetTypeID();
    e8849f60:	b2efd0ef          	jal	ra,e884728e <CFBooleanGetTypeID>
    e8849f64:	0008b797          	auipc	a5,0x8b
    e8849f68:	d8a7a023          	sw	a0,-640(a5) # e88d4ce4 <gCFBooleanType>
		gCFDataType			= CFDataGetTypeID();
    e8849f6c:	b26fd0ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e8849f70:	0008b797          	auipc	a5,0x8b
    e8849f74:	d6a7ac23          	sw	a0,-648(a5) # e88d4ce8 <gCFDataType>
		gCFDateType			= CFDateGetTypeID();
    e8849f78:	b92fd0ef          	jal	ra,e884730a <CFDateGetTypeID>
    e8849f7c:	0008b797          	auipc	a5,0x8b
    e8849f80:	d6a7a823          	sw	a0,-656(a5) # e88d4cec <gCFDateType>
		gCFDictionaryType	= CFDictionaryGetTypeID();
    e8849f84:	c1efd0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8849f88:	0008b797          	auipc	a5,0x8b
    e8849f8c:	d6a7a423          	sw	a0,-664(a5) # e88d4cf0 <gCFDictionaryType>
		gCFNumberType		= CFNumberGetTypeID();
    e8849f90:	cdafd0ef          	jal	ra,e884746a <CFNumberGetTypeID>
    e8849f94:	0008b797          	auipc	a5,0x8b
    e8849f98:	d6a7a023          	sw	a0,-672(a5) # e88d4cf4 <gCFNumberType>
		gCFStringType		= CFStringGetTypeID();
    e8849f9c:	cf8fd0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8849fa0:	0008b797          	auipc	a5,0x8b
    e8849fa4:	d4a7ac23          	sw	a0,-680(a5) # e88d4cf8 <gCFStringType>
}
    e8849fa8:	60a2                	ld	ra,8(sp)
    e8849faa:	0141                	addi	sp,sp,16
    e8849fac:	8082                	ret

00000000e8849fae <CFBinaryPlistV0Create>:
{
    e8849fae:	db010113          	addi	sp,sp,-592
	if( gCFStringType == ( (CFTypeID) -1 ) )
    e8849fb2:	0008b797          	auipc	a5,0x8b
    e8849fb6:	d4678793          	addi	a5,a5,-698 # e88d4cf8 <gCFStringType>
{
    e8849fba:	24813023          	sd	s0,576(sp)
    e8849fbe:	21513c23          	sd	s5,536(sp)
    e8849fc2:	24113423          	sd	ra,584(sp)
    e8849fc6:	22913c23          	sd	s1,568(sp)
    e8849fca:	23213823          	sd	s2,560(sp)
    e8849fce:	23313423          	sd	s3,552(sp)
    e8849fd2:	23413023          	sd	s4,544(sp)
    e8849fd6:	21613823          	sd	s6,528(sp)
    e8849fda:	21713423          	sd	s7,520(sp)
    e8849fde:	21813023          	sd	s8,512(sp)
    e8849fe2:	ffe6                	sd	s9,504(sp)
    e8849fe4:	fbea                	sd	s10,496(sp)
    e8849fe6:	f7ee                	sd	s11,488(sp)
	if( gCFStringType == ( (CFTypeID) -1 ) )
    e8849fe8:	4394                	lw	a3,0(a5)
{
    e8849fea:	e02e                	sd	a1,0(sp)
    e8849fec:	e43e                	sd	a5,8(sp)
	if( gCFStringType == ( (CFTypeID) -1 ) )
    e8849fee:	577d                	li	a4,-1
{
    e8849ff0:	842a                	mv	s0,a0
    e8849ff2:	8ab2                	mv	s5,a2
	if( gCFStringType == ( (CFTypeID) -1 ) )
    e8849ff4:	00e69463          	bne	a3,a4,e8849ffc <CFBinaryPlistV0Create+0x4e>
    e8849ff8:	f59ff0ef          	jal	ra,e8849f50 <_GlobalEnsureInitialized.part.1>
	ctx.ptrSize = 1024;
    e8849ffc:	40000793          	li	a5,1024
	ctx.ptr = malloc( ctx.ptrSize );
    e884a000:	40000513          	li	a0,1024
	CFBinaryPlistContextInit( &ctx );
    e884a004:	ed02                	sd	zero,152(sp)
    e884a006:	fb02                	sd	zero,432(sp)
    e884a008:	ff02                	sd	zero,440(sp)
    e884a00a:	1c012023          	sw	zero,448(sp)
    e884a00e:	e782                	sd	zero,456(sp)
    e884a010:	1c011823          	sh	zero,464(sp)
    e884a014:	ef82                	sd	zero,472(sp)
	ctx.ptrSize = 1024;
    e884a016:	f13e                	sd	a5,160(sp)
	ctx.ptr = malloc( ctx.ptrSize );
    e884a018:	037310ef          	jal	ra,e887b84e <my_malloc>
    e884a01c:	ed2a                	sd	a0,152(sp)
	require_action( ctx.ptr, exit, err = kNoMemoryErr );
    e884a01e:	5a050163          	beqz	a0,e884a5c0 <CFBinaryPlistV0Create+0x612>
	ctx.array = CFArrayCreateMutable( NULL, 0, NULL );
    e884a022:	4601                	li	a2,0
    e884a024:	4581                	li	a1,0
    e884a026:	4501                	li	a0,0
	ctx.ptrFull = 0;
    e884a028:	f502                	sd	zero,168(sp)
	ctx.array = CFArrayCreateMutable( NULL, 0, NULL );
    e884a02a:	99cfd0ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e884a02e:	fb2a                	sd	a0,432(sp)
	require_action( ctx.array, exit, err = kNoMemoryErr );
    e884a030:	58050863          	beqz	a0,e884a5c0 <CFBinaryPlistV0Create+0x612>
	dictCallbacks			= kCFTypeDictionaryKeyCallBacks;
    e884a034:	03000613          	li	a2,48
    e884a038:	00074597          	auipc	a1,0x74
    e884a03c:	76058593          	addi	a1,a1,1888 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884a040:	10a8                	addi	a0,sp,104
    e884a042:	826b60ef          	jal	ra,e8800068 <memcpy>
	dictCallbacks.retain	= NULL;
    e884a046:	f882                	sd	zero,112(sp)
	dictCallbacks.equal		= _ObjectsExactlyEqual;
    e884a048:	00000797          	auipc	a5,0x0
    e884a04c:	ea078793          	addi	a5,a5,-352 # e8849ee8 <_ObjectsExactlyEqual>
	ctx.uniqueDict = CFDictionaryCreateMutable( NULL, 0, &dictCallbacks, NULL );
    e884a050:	4681                	li	a3,0
    e884a052:	10b0                	addi	a2,sp,104
    e884a054:	4581                	li	a1,0
    e884a056:	4501                	li	a0,0
	dictCallbacks.equal		= _ObjectsExactlyEqual;
    e884a058:	e53e                	sd	a5,136(sp)
	dictCallbacks.release	= NULL;
    e884a05a:	fc82                	sd	zero,120(sp)
	ctx.uniqueDict = CFDictionaryCreateMutable( NULL, 0, &dictCallbacks, NULL );
    e884a05c:	b4afd0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884a060:	ff2a                	sd	a0,440(sp)
	require_action( ctx.uniqueDict, exit, err = kNoMemoryErr );
    e884a062:	54050f63          	beqz	a0,e884a5c0 <CFBinaryPlistV0Create+0x612>
	_FlattenPlist( &ctx, inObj );
    e884a066:	85a2                	mv	a1,s0
    e884a068:	0928                	addi	a0,sp,152
    e884a06a:	f9eff0ef          	jal	ra,e8849808 <_FlattenPlist>
	err = _WriteBytes( &ctx, "bplist00", 8 );
    e884a06e:	4401                	li	s0,0
    e884a070:	4621                	li	a2,8
    e884a072:	00075597          	auipc	a1,0x75
    e884a076:	91658593          	addi	a1,a1,-1770 # e88be988 <kCFLRuntimeClassTable+0x198>
    e884a07a:	0928                	addi	a0,sp,152
    e884a07c:	8b9ff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a080:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e884a082:	54051363          	bnez	a0,e884a5c8 <CFBinaryPlistV0Create+0x61a>
	memset(&trailer, 0, sizeof( trailer ) );
    e884a086:	02000613          	li	a2,32
    e884a08a:	00a8                	addi	a0,sp,72
    e884a08c:	4581                	li	a1,0
    e884a08e:	306320ef          	jal	ra,e887c394 <eLIBs_memset>
	trailer.numObjects		= hton64( ctx.uniqueCount );
    e884a092:	1c012503          	lw	a0,448(sp)
    e884a096:	03855713          	srli	a4,a0,0x38
    e884a09a:	03851793          	slli	a5,a0,0x38
    e884a09e:	8fd9                	or	a5,a5,a4
    e884a0a0:	0ff00713          	li	a4,255
    e884a0a4:	03071613          	slli	a2,a4,0x30
    e884a0a8:	02851693          	slli	a3,a0,0x28
    e884a0ac:	8ef1                	and	a3,a3,a2
    e884a0ae:	8fd5                	or	a5,a5,a3
    e884a0b0:	02871613          	slli	a2,a4,0x28
    e884a0b4:	01851693          	slli	a3,a0,0x18
    e884a0b8:	8ef1                	and	a3,a3,a2
    e884a0ba:	8fd5                	or	a5,a5,a3
    e884a0bc:	02071613          	slli	a2,a4,0x20
    e884a0c0:	00851693          	slli	a3,a0,0x8
    e884a0c4:	8ef1                	and	a3,a3,a2
    e884a0c6:	8fd5                	or	a5,a5,a3
    e884a0c8:	0762                	slli	a4,a4,0x18
    e884a0ca:	00855693          	srli	a3,a0,0x8
    e884a0ce:	8f75                	and	a4,a4,a3
    e884a0d0:	8fd9                	or	a5,a5,a4
    e884a0d2:	00ff06b7          	lui	a3,0xff0
    e884a0d6:	01855713          	srli	a4,a0,0x18
    e884a0da:	8f75                	and	a4,a4,a3
    e884a0dc:	8fd9                	or	a5,a5,a4
    e884a0de:	6741                	lui	a4,0x10
    e884a0e0:	02855693          	srli	a3,a0,0x28
    e884a0e4:	f0070713          	addi	a4,a4,-256 # ff00 <memcmp-0xe87f0100>
    e884a0e8:	8ef9                	and	a3,a3,a4
    e884a0ea:	8fd5                	or	a5,a5,a3
    e884a0ec:	e8be                	sd	a5,80(sp)
	trailer.objectRefSize	= MinPowerOf2BytesForValue( (uint64_t) ctx.uniqueCount );
    e884a0ee:	02055693          	srli	a3,a0,0x20
    e884a0f2:	1682                	slli	a3,a3,0x20
    e884a0f4:	47a1                	li	a5,8
    e884a0f6:	ee81                	bnez	a3,e884a10e <CFBinaryPlistV0Create+0x160>
    e884a0f8:	0ffff6b7          	lui	a3,0xffff
    e884a0fc:	0692                	slli	a3,a3,0x4
    e884a0fe:	8ee9                	and	a3,a3,a0
    e884a100:	4791                	li	a5,4
    e884a102:	e691                	bnez	a3,e884a10e <CFBinaryPlistV0Create+0x160>
    e884a104:	00e577b3          	and	a5,a0,a4
    e884a108:	00f037b3          	snez	a5,a5
    e884a10c:	0785                	addi	a5,a5,1
	offsets = (uint64_t *) malloc( ( (size_t) ctx.uniqueCount ) * sizeof( *offsets ) );
    e884a10e:	050e                	slli	a0,a0,0x3
	trailer.objectRefSize	= MinPowerOf2BytesForValue( (uint64_t) ctx.uniqueCount );
    e884a110:	04f107a3          	sb	a5,79(sp)
	ctx.objectRefSize		= trailer.objectRefSize;
    e884a114:	1cf10823          	sb	a5,464(sp)
	offsets = (uint64_t *) malloc( ( (size_t) ctx.uniqueCount ) * sizeof( *offsets ) );
    e884a118:	736310ef          	jal	ra,e887b84e <my_malloc>
    e884a11c:	892a                	mv	s2,a0
	require_action( offsets, exit, err = kNoMemoryErr );
    e884a11e:	4a050163          	beqz	a0,e884a5c0 <CFBinaryPlistV0Create+0x612>
		require_action( range.location == range.length, exit, err = kUnknownErr );
    e884a122:	7b79                	lui	s6,0xffffe
	for( i = 0; i < ctx.uniqueCount; ++i )
    e884a124:	4a01                	li	s4,0
	else if( type == gCFDictionaryType )
    e884a126:	0008bd17          	auipc	s10,0x8b
    e884a12a:	bcad0d13          	addi	s10,s10,-1078 # e88d4cf0 <gCFDictionaryType>
		require_action( range.location == range.length, exit, err = kUnknownErr );
    e884a12e:	5d4b0d93          	addi	s11,s6,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	for( i = 0; i < ctx.uniqueCount; ++i )
    e884a132:	1c012703          	lw	a4,448(sp)
    e884a136:	67be                	ld	a5,456(sp)
    e884a138:	06ea4163          	blt	s4,a4,e884a19a <CFBinaryPlistV0Create+0x1ec>
	trailer.offsetTableOffset	= hton64( ctx.bytesWritten );
    e884a13c:	8207970b          	rev	a4,a5
    e884a140:	f0ba                	sd	a4,96(sp)
	trailer.offsetIntSize		= MinPowerOf2BytesForValue( ctx.bytesWritten );
    e884a142:	0207d693          	srli	a3,a5,0x20
    e884a146:	1682                	slli	a3,a3,0x20
    e884a148:	4721                	li	a4,8
    e884a14a:	ee91                	bnez	a3,e884a166 <CFBinaryPlistV0Create+0x1b8>
    e884a14c:	0ffff6b7          	lui	a3,0xffff
    e884a150:	0692                	slli	a3,a3,0x4
    e884a152:	8efd                	and	a3,a3,a5
    e884a154:	4711                	li	a4,4
    e884a156:	ea81                	bnez	a3,e884a166 <CFBinaryPlistV0Create+0x1b8>
    e884a158:	6741                	lui	a4,0x10
    e884a15a:	f0070713          	addi	a4,a4,-256 # ff00 <memcmp-0xe87f0100>
    e884a15e:	8ff9                	and	a5,a5,a4
    e884a160:	00f03733          	snez	a4,a5
    e884a164:	0705                	addi	a4,a4,1
    e884a166:	04e10723          	sb	a4,78(sp)
		err = _WriteBytes( &ctx, buf + ( sizeof( *offsets ) - trailer.offsetIntSize ), trailer.offsetIntSize );
    e884a16a:	4421                	li	s0,8
	for( i = 0; i < ctx.uniqueCount; ++i )
    e884a16c:	1c012783          	lw	a5,448(sp)
    e884a170:	3ef4c363          	blt	s1,a5,e884a556 <CFBinaryPlistV0Create+0x5a8>
	err = _WriteBytes( &ctx, &trailer, sizeof( trailer ) );
    e884a174:	02000613          	li	a2,32
    e884a178:	00ac                	addi	a1,sp,72
    e884a17a:	0928                	addi	a0,sp,152
    e884a17c:	fb8ff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a180:	8c2a                	mv	s8,a0
	const void*						result = NULL;
    e884a182:	4401                	li	s0,0
	require_noerr( err, exit );
    e884a184:	e511                	bnez	a0,e884a190 <CFBinaryPlistV0Create+0x1e2>
	*outSize = ctx.ptrFull;
    e884a186:	77aa                	ld	a5,168(sp)
    e884a188:	6702                	ld	a4,0(sp)
	result = ctx.ptr;
    e884a18a:	646a                	ld	s0,152(sp)
	ctx.ptr = NULL;
    e884a18c:	ed02                	sd	zero,152(sp)
	*outSize = ctx.ptrFull;
    e884a18e:	e31c                	sd	a5,0(a4)
	FreeNullSafe( offsets );
    e884a190:	854a                	mv	a0,s2
    e884a192:	16e320ef          	jal	ra,e887c300 <eLIBs_free>
    e884a196:	84e2                	mv	s1,s8
    e884a198:	a905                	j	e884a5c8 <CFBinaryPlistV0Create+0x61a>
		offsets[ i ] = ctx.bytesWritten;
    e884a19a:	6749578b          	srd	a5,s2,s4,3
		obj = CFArrayGetValueAtIndex( ctx.array, i );
    e884a19e:	755a                	ld	a0,432(sp)
    e884a1a0:	85d2                	mv	a1,s4
    e884a1a2:	864fd0ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
    e884a1a6:	842a                	mv	s0,a0
	type = CFGetTypeID( inObj );
    e884a1a8:	f8bfc0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884a1ac:	0005089b          	sext.w	a7,a0
	if( type == gCFStringType )
    e884a1b0:	67a2                	ld	a5,8(sp)
    e884a1b2:	439c                	lw	a5,0(a5)
    e884a1b4:	13179063          	bne	a5,a7,e884a2d4 <CFBinaryPlistV0Create+0x326>
	src = (const uint8_t *) CFStringGetCStringPtr( inStr, kCFStringEncodingUTF8 );
    e884a1b8:	08000c37          	lui	s8,0x8000
    e884a1bc:	100c0593          	addi	a1,s8,256 # 8000100 <memcmp-0xe07fff00>
    e884a1c0:	8522                	mv	a0,s0
	uint16_t *			utf16Buf = NULL;
    e884a1c2:	f002                	sd	zero,32(sp)
	src = (const uint8_t *) CFStringGetCStringPtr( inStr, kCFStringEncodingUTF8 );
    e884a1c4:	bf8fd0ef          	jal	ra,e88475bc <CFStringGetCStringPtr>
    e884a1c8:	89aa                	mv	s3,a0
	if( src )
    e884a1ca:	c131                	beqz	a0,e884a20e <CFBinaryPlistV0Create+0x260>
		len = strlen( (const char *) src );
    e884a1cc:	14c320ef          	jal	ra,e887c318 <eLIBs_strlen>
    e884a1d0:	7c05350b          	extu	a0,a0,31,0
    e884a1d4:	8cce                	mv	s9,s3
    e884a1d6:	f82a                	sd	a0,48(sp)
	uint8_t *			utf8Buf = NULL;
    e884a1d8:	4981                	li	s3,0
	for( i = 0; ( i < len ) && !( src[ i ] & 0x80 ); ++i ) {}
    e884a1da:	7442                	ld	s0,48(sp)
    e884a1dc:	4781                	li	a5,0
    e884a1de:	08878963          	beq	a5,s0,e884a270 <CFBinaryPlistV0Create+0x2c2>
    e884a1e2:	00fcc70b          	lrb	a4,s9,a5,0
    e884a1e6:	08075363          	bgez	a4,e884a26c <CFBinaryPlistV0Create+0x2be>
			err = utf8_decodestr_copy( src, len, &utf16Buf, &len, 0, UTF_BIG_ENDIAN );
    e884a1ea:	4785                	li	a5,1
    e884a1ec:	4701                	li	a4,0
    e884a1ee:	1814                	addi	a3,sp,48
    e884a1f0:	1010                	addi	a2,sp,32
    e884a1f2:	85a2                	mv	a1,s0
    e884a1f4:	8566                	mv	a0,s9
    e884a1f6:	4f2180ef          	jal	ra,e88626e8 <utf8_decodestr_copy>
    e884a1fa:	8c2a                	mv	s8,a0
			require_noerr( err, exit );
    e884a1fc:	e94d                	bnez	a0,e884a2ae <CFBinaryPlistV0Create+0x300>
			count  = len / 2;
    e884a1fe:	7442                	ld	s0,48(sp)
			marker = kCFLBinaryPlistMarkerUnicodeString;
    e884a200:	06000793          	li	a5,96
    e884a204:	00f10da3          	sb	a5,27(sp)
			src    = (const uint8_t *) utf16Buf;
    e884a208:	7c82                	ld	s9,32(sp)
			count  = len / 2;
    e884a20a:	8005                	srli	s0,s0,0x1
    e884a20c:	a0b5                	j	e884a278 <CFBinaryPlistV0Create+0x2ca>
		range = CFRangeMake( 0, CFStringGetLength( inStr ) );
    e884a20e:	8522                	mv	a0,s0
    e884a210:	b92fd0ef          	jal	ra,e88475a2 <CFStringGetLength>
    e884a214:	8baa                	mv	s7,a0
		nBytes = CFStringGetMaximumSizeForEncoding( range.length, kCFStringEncodingUTF8 );
    e884a216:	100c0593          	addi	a1,s8,256
    e884a21a:	b9cfd0ef          	jal	ra,e88475b6 <CFStringGetMaximumSizeForEncoding>
    e884a21e:	ce2a                	sw	a0,28(sp)
		if( nBytes < (CFIndex) sizeof( ctx->tempBuf ) )
    e884a220:	0ff00793          	li	a5,255
			utf8 = ctx->tempBuf.u8;
    e884a224:	0b010c93          	addi	s9,sp,176
		if( nBytes < (CFIndex) sizeof( ctx->tempBuf ) )
    e884a228:	00a7da63          	bge	a5,a0,e884a23c <CFBinaryPlistV0Create+0x28e>
			utf8Buf = (uint8_t *) malloc( (size_t)( nBytes + 1 ) );
    e884a22c:	2505                	addiw	a0,a0,1
    e884a22e:	620310ef          	jal	ra,e887b84e <my_malloc>
    e884a232:	8caa                	mv	s9,a0
			require_action( utf8Buf, exit, err = kNoMemoryErr );
    e884a234:	5b8b0c13          	addi	s8,s6,1464
    e884a238:	c141                	beqz	a0,e884a2b8 <CFBinaryPlistV0Create+0x30a>
    e884a23a:	89aa                	mv	s3,a0
		range.location = CFStringGetBytes( inStr, range, kCFStringEncodingUTF8, 0, false, utf8, nBytes, &nBytes );
    e884a23c:	4872                	lw	a6,28(sp)
    e884a23e:	08000637          	lui	a2,0x8000
    e884a242:	020b9593          	slli	a1,s7,0x20
    e884a246:	01c10893          	addi	a7,sp,28
    e884a24a:	87e6                	mv	a5,s9
    e884a24c:	4701                	li	a4,0
    e884a24e:	4681                	li	a3,0
    e884a250:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884a254:	8522                	mv	a0,s0
    e884a256:	bcafd0ef          	jal	ra,e8847620 <CFStringGetBytes>
		require_action( range.location == range.length, exit, err = kUnknownErr );
    e884a25a:	8c6e                	mv	s8,s11
    e884a25c:	04ab9963          	bne	s7,a0,e884a2ae <CFBinaryPlistV0Create+0x300>
		utf8[ nBytes ] = '\0';
    e884a260:	47f2                	lw	a5,28(sp)
    e884a262:	00fcd00b          	srb	zero,s9,a5,0
		len = (size_t) nBytes;
    e884a266:	47f2                	lw	a5,28(sp)
    e884a268:	f83e                	sd	a5,48(sp)
    e884a26a:	bf85                	j	e884a1da <CFBinaryPlistV0Create+0x22c>
	for( i = 0; ( i < len ) && !( src[ i ] & 0x80 ); ++i ) {}
    e884a26c:	0785                	addi	a5,a5,1
    e884a26e:	bf85                	j	e884a1de <CFBinaryPlistV0Create+0x230>
		marker = kCFLBinaryPlistMarkerASCIIString;
    e884a270:	05000793          	li	a5,80
    e884a274:	00f10da3          	sb	a5,27(sp)
	marker |= ( ( count < 15 ) ? count : 0xF );
    e884a278:	473d                	li	a4,15
    e884a27a:	87a2                	mv	a5,s0
    e884a27c:	00877363          	bgeu	a4,s0,e884a282 <CFBinaryPlistV0Create+0x2d4>
    e884a280:	47bd                	li	a5,15
    e884a282:	01b14703          	lbu	a4,27(sp)
	err = _WriteBytes( ctx, &marker, 1 );
    e884a286:	4605                	li	a2,1
    e884a288:	01b10593          	addi	a1,sp,27
	marker |= ( ( count < 15 ) ? count : 0xF );
    e884a28c:	8fd9                	or	a5,a5,a4
	err = _WriteBytes( ctx, &marker, 1 );
    e884a28e:	0928                	addi	a0,sp,152
	marker |= ( ( count < 15 ) ? count : 0xF );
    e884a290:	00f10da3          	sb	a5,27(sp)
	err = _WriteBytes( ctx, &marker, 1 );
    e884a294:	ea0ff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a298:	8c2a                	mv	s8,a0
	require_noerr( err, exit );
    e884a29a:	e911                	bnez	a0,e884a2ae <CFBinaryPlistV0Create+0x300>
	if( count >= 15 )
    e884a29c:	47b9                	li	a5,14
    e884a29e:	0287e463          	bltu	a5,s0,e884a2c6 <CFBinaryPlistV0Create+0x318>
	err = _WriteBytes( ctx, src, len );
    e884a2a2:	7642                	ld	a2,48(sp)
    e884a2a4:	85e6                	mv	a1,s9
    e884a2a6:	0928                	addi	a0,sp,152
    e884a2a8:	e8cff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a2ac:	8c2a                	mv	s8,a0
	FreeNullSafe( utf8Buf );
    e884a2ae:	00098563          	beqz	s3,e884a2b8 <CFBinaryPlistV0Create+0x30a>
    e884a2b2:	854e                	mv	a0,s3
    e884a2b4:	04c320ef          	jal	ra,e887c300 <eLIBs_free>
	if( utf16Buf ) utffree( utf16Buf );
    e884a2b8:	7502                	ld	a0,32(sp)
    e884a2ba:	c119                	beqz	a0,e884a2c0 <CFBinaryPlistV0Create+0x312>
    e884a2bc:	044320ef          	jal	ra,e887c300 <eLIBs_free>
		require_noerr( err, exit );
    e884a2c0:	1a0c0263          	beqz	s8,e884a464 <CFBinaryPlistV0Create+0x4b6>
    e884a2c4:	a289                	j	e884a406 <CFBinaryPlistV0Create+0x458>
		err = _WriteInteger( ctx, count );
    e884a2c6:	85a2                	mv	a1,s0
    e884a2c8:	0928                	addi	a0,sp,152
    e884a2ca:	f72ff0ef          	jal	ra,e8849a3c <_WriteInteger>
    e884a2ce:	8c2a                	mv	s8,a0
		require_noerr( err, exit );
    e884a2d0:	d969                	beqz	a0,e884a2a2 <CFBinaryPlistV0Create+0x2f4>
    e884a2d2:	bff1                	j	e884a2ae <CFBinaryPlistV0Create+0x300>
	else if( type == gCFNumberType )
    e884a2d4:	0008b797          	auipc	a5,0x8b
    e884a2d8:	a2078793          	addi	a5,a5,-1504 # e88d4cf4 <gCFNumberType>
    e884a2dc:	439c                	lw	a5,0(a5)
    e884a2de:	0b179063          	bne	a5,a7,e884a37e <CFBinaryPlistV0Create+0x3d0>
	OSStatus		err;
	Value64			v;
	uint8_t			buf[ 17 ];
	size_t			len;
	
	if( CFNumberIsFloatType( inNum ) )
    e884a2e2:	8522                	mv	a0,s0
    e884a2e4:	c6bfe0ef          	jal	ra,e8848f4e <CFLNumberIsFloatType>
    e884a2e8:	c539                	beqz	a0,e884a336 <CFBinaryPlistV0Create+0x388>
	{
		if( CFNumberGetByteSize( inNum ) <= ( (CFIndex) sizeof( Float32 ) ) )
    e884a2ea:	8522                	mv	a0,s0
    e884a2ec:	87bfe0ef          	jal	ra,e8848b66 <CFLNumberGetByteSize>
    e884a2f0:	4791                	li	a5,4
		{
			CFNumberGetValue( inNum, kCFNumberFloat32Type, &v.f32[ 0 ] );
    e884a2f2:	1010                	addi	a2,sp,32
		if( CFNumberGetByteSize( inNum ) <= ( (CFIndex) sizeof( Float32 ) ) )
    e884a2f4:	02a7c263          	blt	a5,a0,e884a318 <CFBinaryPlistV0Create+0x36a>
			CFNumberGetValue( inNum, kCFNumberFloat32Type, &v.f32[ 0 ] );
    e884a2f8:	4595                	li	a1,5
    e884a2fa:	8522                	mv	a0,s0
    e884a2fc:	986fd0ef          	jal	ra,e8847482 <CFNumberGetValue>
			
			buf[ 0 ] = kCFLBinaryPlistMarkerReal | 2; // 2 for 2^2 = 4 byte Float32.
    e884a300:	02200793          	li	a5,34
    e884a304:	02f10823          	sb	a5,48(sp)
STATIC_INLINE void		WriteBigFloat32( void *p, Float32 x )		{ Value32 v32; v32.f32 = x; WriteBig32( p, v32.u32 ); }
    e884a308:	5782                	lw	a5,32(sp)
			WriteBigFloat32( &buf[ 1 ], v.f32[ 0 ] );
			len = 5;
    e884a30a:	4615                	li	a2,5
    e884a30c:	9007978b          	revw	a5,a5
    e884a310:	02f128a3          	sw	a5,49(sp)
		err = _WriteBytes( ctx, &v.u64, 8 );
    e884a314:	180c                	addi	a1,sp,48
    e884a316:	a8f1                	j	e884a3f2 <CFBinaryPlistV0Create+0x444>
		}
		else
		{
			CFNumberGetValue( inNum, kCFNumberFloat64Type, &v.f64 );
    e884a318:	4599                	li	a1,6
    e884a31a:	8522                	mv	a0,s0
    e884a31c:	966fd0ef          	jal	ra,e8847482 <CFNumberGetValue>
			
			buf[ 0 ] = kCFLBinaryPlistMarkerReal | 3; // 2 for 2^3 = 8 byte Float64.
    e884a320:	02300793          	li	a5,35
    e884a324:	02f10823          	sb	a5,48(sp)
STATIC_INLINE void		WriteBigFloat64( void *p, Float64 x )		{ Value64 v64; v64.f64 = x; WriteBig64( p, v64.u64 ); }
    e884a328:	7782                	ld	a5,32(sp)
			WriteBigFloat64( &buf[ 1 ], v.f64 );
			len = 9;
    e884a32a:	4625                	li	a2,9
    e884a32c:	8207978b          	rev	a5,a5
    e884a330:	02f138a3          	sd	a5,49(sp)
		}
		err = _WriteBytes( ctx, buf, len );
    e884a334:	b7c5                	j	e884a314 <CFBinaryPlistV0Create+0x366>
		require_noerr( err, exit );
	}
	else if( CFNumberGetType( inNum ) == kCFNumberSInt128Type_compat )
    e884a336:	8522                	mv	a0,s0
    e884a338:	8a5fe0ef          	jal	ra,e8848bdc <CFLNumberGetType>
    e884a33c:	47bd                	li	a5,15
	{
		int128_compat		u128;
		
		CFNumberGetValue( inNum, kCFNumberSInt128Type_compat, &u128 );
    e884a33e:	1010                	addi	a2,sp,32
	else if( CFNumberGetType( inNum ) == kCFNumberSInt128Type_compat )
    e884a340:	02f51563          	bne	a0,a5,e884a36a <CFBinaryPlistV0Create+0x3bc>
		CFNumberGetValue( inNum, kCFNumberSInt128Type_compat, &u128 );
    e884a344:	45bd                	li	a1,15
    e884a346:	8522                	mv	a0,s0
    e884a348:	93afd0ef          	jal	ra,e8847482 <CFNumberGetValue>
		
		buf[ 0 ] = kCFLBinaryPlistMarkerInt | 4;
    e884a34c:	47d1                	li	a5,20
    e884a34e:	02f10823          	sb	a5,48(sp)
		WriteBig64( &buf[ 1 ], u128.hi );
    e884a352:	7782                	ld	a5,32(sp)
		WriteBig64( &buf[ 9 ], u128.lo );
		
		err = _WriteBytes( ctx, buf, 17 );
    e884a354:	4645                	li	a2,17
    e884a356:	8207978b          	rev	a5,a5
		WriteBig64( &buf[ 1 ], u128.hi );
    e884a35a:	02f138a3          	sd	a5,49(sp)
		WriteBig64( &buf[ 9 ], u128.lo );
    e884a35e:	77a2                	ld	a5,40(sp)
    e884a360:	8207978b          	rev	a5,a5
    e884a364:	02f13ca3          	sd	a5,57(sp)
		err = _WriteBytes( ctx, buf, 17 );
    e884a368:	b775                	j	e884a314 <CFBinaryPlistV0Create+0x366>
		require_noerr( err, exit );
	}
	else
	{
		CFNumberGetValue( inNum, kCFNumberSInt64Type, &v.u64 );
    e884a36a:	4591                	li	a1,4
    e884a36c:	8522                	mv	a0,s0
    e884a36e:	914fd0ef          	jal	ra,e8847482 <CFNumberGetValue>
		
		err = _WriteInteger( ctx, v.u64 );
    e884a372:	7582                	ld	a1,32(sp)
    e884a374:	0928                	addi	a0,sp,152
    e884a376:	ec6ff0ef          	jal	ra,e8849a3c <_WriteInteger>
    e884a37a:	8c2a                	mv	s8,a0
		require_noerr( err, exit );
    e884a37c:	b791                	j	e884a2c0 <CFBinaryPlistV0Create+0x312>
	else if( type == gCFBooleanType )
    e884a37e:	0008b797          	auipc	a5,0x8b
    e884a382:	96678793          	addi	a5,a5,-1690 # e88d4ce4 <gCFBooleanType>
    e884a386:	439c                	lw	a5,0(a5)
    e884a388:	03179063          	bne	a5,a7,e884a3a8 <CFBinaryPlistV0Create+0x3fa>
		marker = ( inObj == kCFBooleanTrue ) ? kCFLBinaryPlistMarkerTrue : kCFLBinaryPlistMarkerFalse;
    e884a38c:	0008b797          	auipc	a5,0x8b
    e884a390:	94478793          	addi	a5,a5,-1724 # e88d4cd0 <kCFLBooleanTrue>
    e884a394:	6398                	ld	a4,0(a5)
    e884a396:	47a5                	li	a5,9
    e884a398:	00e40363          	beq	s0,a4,e884a39e <CFBinaryPlistV0Create+0x3f0>
    e884a39c:	47a1                	li	a5,8
    e884a39e:	02f10023          	sb	a5,32(sp)
		err = _WriteBytes( ctx, &marker, 1 );
    e884a3a2:	4605                	li	a2,1
    e884a3a4:	100c                	addi	a1,sp,32
    e884a3a6:	a0b1                	j	e884a3f2 <CFBinaryPlistV0Create+0x444>
	else if( type == gCFDataType )
    e884a3a8:	0008b797          	auipc	a5,0x8b
    e884a3ac:	94078793          	addi	a5,a5,-1728 # e88d4ce8 <gCFDataType>
    e884a3b0:	439c                	lw	a5,0(a5)
    e884a3b2:	05179c63          	bne	a5,a7,e884a40a <CFBinaryPlistV0Create+0x45c>
		count = CFDataGetLength( (CFDataRef) inObj );
    e884a3b6:	8522                	mv	a0,s0
    e884a3b8:	f1ffc0ef          	jal	ra,e88472d6 <CFDataGetLength>
    e884a3bc:	89aa                	mv	s3,a0
		marker = (uint8_t)( kCFLBinaryPlistMarkerData | ( ( count < 15 ) ? count : 0xF ) );
    e884a3be:	4739                	li	a4,14
    e884a3c0:	04f00793          	li	a5,79
    e884a3c4:	00a74663          	blt	a4,a0,e884a3d0 <CFBinaryPlistV0Create+0x422>
    e884a3c8:	04056793          	ori	a5,a0,64
    e884a3cc:	0ff7f793          	andi	a5,a5,255
		err = _WriteBytes( ctx, &marker, 1 );
    e884a3d0:	4605                	li	a2,1
    e884a3d2:	100c                	addi	a1,sp,32
    e884a3d4:	0928                	addi	a0,sp,152
		marker = (uint8_t)( kCFLBinaryPlistMarkerData | ( ( count < 15 ) ? count : 0xF ) );
    e884a3d6:	02f10023          	sb	a5,32(sp)
		err = _WriteBytes( ctx, &marker, 1 );
    e884a3da:	d5aff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a3de:	8c2a                	mv	s8,a0
		require_noerr( err, exit );
    e884a3e0:	e11d                	bnez	a0,e884a406 <CFBinaryPlistV0Create+0x458>
		if( count >= 15 )
    e884a3e2:	47b9                	li	a5,14
    e884a3e4:	0137cb63          	blt	a5,s3,e884a3fa <CFBinaryPlistV0Create+0x44c>
		err = _WriteBytes( ctx, CFDataGetBytePtr( (CFDataRef) inObj ), (size_t) count );
    e884a3e8:	8522                	mv	a0,s0
    e884a3ea:	f03fc0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e884a3ee:	85aa                	mv	a1,a0
    e884a3f0:	864e                	mv	a2,s3
		err = _WriteBytes( ctx, &marker, 1 );
    e884a3f2:	0928                	addi	a0,sp,152
    e884a3f4:	d40ff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a3f8:	b749                	j	e884a37a <CFBinaryPlistV0Create+0x3cc>
			err = _WriteInteger( ctx, (uint64_t) count );
    e884a3fa:	85ce                	mv	a1,s3
    e884a3fc:	0928                	addi	a0,sp,152
    e884a3fe:	e3eff0ef          	jal	ra,e8849a3c <_WriteInteger>
    e884a402:	8c2a                	mv	s8,a0
			require_noerr( err, exit );
    e884a404:	d175                	beqz	a0,e884a3e8 <CFBinaryPlistV0Create+0x43a>
	const void*						result = NULL;
    e884a406:	4401                	li	s0,0
    e884a408:	b361                	j	e884a190 <CFBinaryPlistV0Create+0x1e2>
	else if( type == gCFDictionaryType )
    e884a40a:	000d2783          	lw	a5,0(s10)
    e884a40e:	07179463          	bne	a5,a7,e884a476 <CFBinaryPlistV0Create+0x4c8>
		count = CFDictionaryGetCount( (CFDictionaryRef) inObj );
    e884a412:	8522                	mv	a0,s0
    e884a414:	816fd0ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e884a418:	89aa                	mv	s3,a0
		marker = (uint8_t)( kCFLBinaryPlistMarkerDictionary | ( ( count < 15 ) ? count : 0xF ) );
    e884a41a:	4739                	li	a4,14
    e884a41c:	0df00793          	li	a5,223
    e884a420:	00a74663          	blt	a4,a0,e884a42c <CFBinaryPlistV0Create+0x47e>
    e884a424:	fd056793          	ori	a5,a0,-48
    e884a428:	0ff7f793          	andi	a5,a5,255
		err = _WriteBytes( ctx, &marker, 1 );
    e884a42c:	4605                	li	a2,1
    e884a42e:	100c                	addi	a1,sp,32
    e884a430:	0928                	addi	a0,sp,152
		marker = (uint8_t)( kCFLBinaryPlistMarkerDictionary | ( ( count < 15 ) ? count : 0xF ) );
    e884a432:	02f10023          	sb	a5,32(sp)
		err = _WriteBytes( ctx, &marker, 1 );
    e884a436:	cfeff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a43a:	8c2a                	mv	s8,a0
		require_noerr( err, exit );
    e884a43c:	f569                	bnez	a0,e884a406 <CFBinaryPlistV0Create+0x458>
		if( count >= 15 )
    e884a43e:	47b9                	li	a5,14
    e884a440:	0337c463          	blt	a5,s3,e884a468 <CFBinaryPlistV0Create+0x4ba>
		CFDictionaryApplyFunction( (CFDictionaryRef) inObj, _WriteV0DictionaryKey, ctx );
    e884a444:	0930                	addi	a2,sp,152
    e884a446:	fffff597          	auipc	a1,0xfffff
    e884a44a:	5c458593          	addi	a1,a1,1476 # e8849a0a <_WriteV0DictionaryKey>
    e884a44e:	8522                	mv	a0,s0
    e884a450:	816fd0ef          	jal	ra,e8847466 <CFDictionaryApplyFunction>
		CFDictionaryApplyFunction( (CFDictionaryRef) inObj, _WriteV0DictionaryValue, ctx );
    e884a454:	0930                	addi	a2,sp,152
    e884a456:	fffff597          	auipc	a1,0xfffff
    e884a45a:	58458593          	addi	a1,a1,1412 # e88499da <_WriteV0DictionaryValue>
    e884a45e:	8522                	mv	a0,s0
    e884a460:	806fd0ef          	jal	ra,e8847466 <CFDictionaryApplyFunction>
	for( i = 0; i < ctx.uniqueCount; ++i )
    e884a464:	2a05                	addiw	s4,s4,1
    e884a466:	b1f1                	j	e884a132 <CFBinaryPlistV0Create+0x184>
			err = _WriteInteger( ctx, (uint64_t) count );
    e884a468:	85ce                	mv	a1,s3
    e884a46a:	0928                	addi	a0,sp,152
    e884a46c:	dd0ff0ef          	jal	ra,e8849a3c <_WriteInteger>
    e884a470:	8c2a                	mv	s8,a0
			require_noerr( err, exit );
    e884a472:	d969                	beqz	a0,e884a444 <CFBinaryPlistV0Create+0x496>
    e884a474:	bf49                	j	e884a406 <CFBinaryPlistV0Create+0x458>
	else if( type == gCFArrayType )
    e884a476:	0008b797          	auipc	a5,0x8b
    e884a47a:	86a78793          	addi	a5,a5,-1942 # e88d4ce0 <gCFArrayType>
    e884a47e:	439c                	lw	a5,0(a5)
    e884a480:	05179d63          	bne	a5,a7,e884a4da <CFBinaryPlistV0Create+0x52c>
		count = CFArrayGetCount( (CFArrayRef) inObj );
    e884a484:	8522                	mv	a0,s0
    e884a486:	d6dfc0ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e884a48a:	89aa                	mv	s3,a0
		marker = (uint8_t)( kCFLBinaryPlistMarkerArray | ( ( count < 15 ) ? count : 0xF ) );
    e884a48c:	4739                	li	a4,14
    e884a48e:	0af00793          	li	a5,175
    e884a492:	00a74663          	blt	a4,a0,e884a49e <CFBinaryPlistV0Create+0x4f0>
    e884a496:	fa056793          	ori	a5,a0,-96
    e884a49a:	0ff7f793          	andi	a5,a5,255
		err = _WriteBytes( ctx, &marker, 1 );
    e884a49e:	4605                	li	a2,1
    e884a4a0:	100c                	addi	a1,sp,32
    e884a4a2:	0928                	addi	a0,sp,152
		marker = (uint8_t)( kCFLBinaryPlistMarkerArray | ( ( count < 15 ) ? count : 0xF ) );
    e884a4a4:	02f10023          	sb	a5,32(sp)
		err = _WriteBytes( ctx, &marker, 1 );
    e884a4a8:	c8cff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a4ac:	8c2a                	mv	s8,a0
		require_noerr( err, exit );
    e884a4ae:	fd21                	bnez	a0,e884a406 <CFBinaryPlistV0Create+0x458>
		if( count >= 15 )
    e884a4b0:	47b9                	li	a5,14
    e884a4b2:	0137cd63          	blt	a5,s3,e884a4cc <CFBinaryPlistV0Create+0x51e>
{
	CFRange		range;
	
	range.location	= inLocation;
	range.length	= inLength;
	return( range );
    e884a4b6:	02099593          	slli	a1,s3,0x20
		CFArrayApplyFunction( (CFArrayRef) inObj, CFRangeMake( 0, count ), _WriteV0ArrayValue, ctx );
    e884a4ba:	0934                	addi	a3,sp,152
    e884a4bc:	fffff617          	auipc	a2,0xfffff
    e884a4c0:	4ec60613          	addi	a2,a2,1260 # e88499a8 <_WriteV0ArrayValue>
    e884a4c4:	8522                	mv	a0,s0
    e884a4c6:	cc9fd0ef          	jal	ra,e884818e <CFLArrayApplyFunction>
		require_noerr( err, exit );
    e884a4ca:	bf69                	j	e884a464 <CFBinaryPlistV0Create+0x4b6>
			err = _WriteInteger( ctx, (uint64_t) count );
    e884a4cc:	85ce                	mv	a1,s3
    e884a4ce:	0928                	addi	a0,sp,152
    e884a4d0:	d6cff0ef          	jal	ra,e8849a3c <_WriteInteger>
    e884a4d4:	8c2a                	mv	s8,a0
			require_noerr( err, exit );
    e884a4d6:	d165                	beqz	a0,e884a4b6 <CFBinaryPlistV0Create+0x508>
    e884a4d8:	b73d                	j	e884a406 <CFBinaryPlistV0Create+0x458>
	else if( type == gCFDateType )
    e884a4da:	0008b797          	auipc	a5,0x8b
    e884a4de:	81278793          	addi	a5,a5,-2030 # e88d4cec <gCFDateType>
    e884a4e2:	439c                	lw	a5,0(a5)
    e884a4e4:	03179863          	bne	a5,a7,e884a514 <CFBinaryPlistV0Create+0x566>
		marker = kCFLBinaryPlistMarkerDateFloat;
    e884a4e8:	03300793          	li	a5,51
		err = _WriteBytes( ctx, &marker, 1 );
    e884a4ec:	4605                	li	a2,1
    e884a4ee:	100c                	addi	a1,sp,32
    e884a4f0:	0928                	addi	a0,sp,152
		marker = kCFLBinaryPlistMarkerDateFloat;
    e884a4f2:	02f10023          	sb	a5,32(sp)
		err = _WriteBytes( ctx, &marker, 1 );
    e884a4f6:	c3eff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a4fa:	8c2a                	mv	s8,a0
		require_noerr( err, exit );
    e884a4fc:	f00515e3          	bnez	a0,e884a406 <CFBinaryPlistV0Create+0x458>
		v.f64 = CFDateGetAbsoluteTime( (CFDateRef) inObj );
    e884a500:	8522                	mv	a0,s0
    e884a502:	e6ffc0ef          	jal	ra,e8847370 <CFDateGetAbsoluteTime>
    e884a506:	e20507d3          	fmv.x.d	a5,fa0
		err = _WriteBytes( ctx, &v.u64, 8 );
    e884a50a:	4621                	li	a2,8
    e884a50c:	8207978b          	rev	a5,a5
		v.u64 = hton64( v.u64 );
    e884a510:	f83e                	sd	a5,48(sp)
		err = _WriteBytes( ctx, &v.u64, 8 );
    e884a512:	b509                	j	e884a314 <CFBinaryPlistV0Create+0x366>
	else if( inObj == ( (CFTypeRef) kCFNull ) )
    e884a514:	0008a797          	auipc	a5,0x8a
    e884a518:	7c478793          	addi	a5,a5,1988 # e88d4cd8 <kCFLNull>
    e884a51c:	639c                	ld	a5,0(a5)
    e884a51e:	00f41563          	bne	s0,a5,e884a528 <CFBinaryPlistV0Create+0x57a>
		marker = kCFLBinaryPlistMarkerNull;
    e884a522:	02010023          	sb	zero,32(sp)
    e884a526:	bdb5                	j	e884a3a2 <CFBinaryPlistV0Create+0x3f4>
		dlogassert( "Unsupported object type: %lu", type );
    e884a528:	00074817          	auipc	a6,0x74
    e884a52c:	47080813          	addi	a6,a6,1136 # e88be998 <kCFLRuntimeClassTable+0x1a8>
    e884a530:	00074797          	auipc	a5,0x74
    e884a534:	54078793          	addi	a5,a5,1344 # e88bea70 <__PRETTY_FUNCTION__.9367>
    e884a538:	22500713          	li	a4,549
    e884a53c:	00074697          	auipc	a3,0x74
    e884a540:	47c68693          	addi	a3,a3,1148 # e88be9b8 <kCFLRuntimeClassTable+0x1c8>
    e884a544:	4601                	li	a2,0
    e884a546:	4581                	li	a1,0
    e884a548:	4501                	li	a0,0
		err = kUnsupportedDataErr;
    e884a54a:	7c79                	lui	s8,0xffffe
		dlogassert( "Unsupported object type: %lu", type );
    e884a54c:	67d030ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kUnsupportedDataErr;
    e884a550:	5b4c0c13          	addi	s8,s8,1460 # ffffffffffffe5b4 <__DRAM0_INF_BASE+0xffffffff0000e5b4>
    e884a554:	bd4d                	j	e884a406 <CFBinaryPlistV0Create+0x458>
		WriteBig64( buf, offsets[ i ] );
    e884a556:	6699478b          	lrd	a5,s2,s1,3
		err = _WriteBytes( &ctx, buf + ( sizeof( *offsets ) - trailer.offsetIntSize ), trailer.offsetIntSize );
    e884a55a:	04e14603          	lbu	a2,78(sp)
    e884a55e:	0928                	addi	a0,sp,152
		WriteBig64( buf, offsets[ i ] );
    e884a560:	93e1                	srli	a5,a5,0x38
    e884a562:	02f10823          	sb	a5,48(sp)
    e884a566:	6699478b          	lrd	a5,s2,s1,3
		err = _WriteBytes( &ctx, buf + ( sizeof( *offsets ) - trailer.offsetIntSize ), trailer.offsetIntSize );
    e884a56a:	40c405b3          	sub	a1,s0,a2
		WriteBig64( buf, offsets[ i ] );
    e884a56e:	93c1                	srli	a5,a5,0x30
    e884a570:	02f108a3          	sb	a5,49(sp)
    e884a574:	6699478b          	lrd	a5,s2,s1,3
    e884a578:	93a1                	srli	a5,a5,0x28
    e884a57a:	02f10923          	sb	a5,50(sp)
    e884a57e:	6699478b          	lrd	a5,s2,s1,3
    e884a582:	9381                	srli	a5,a5,0x20
    e884a584:	02f109a3          	sb	a5,51(sp)
    e884a588:	6699478b          	lrd	a5,s2,s1,3
    e884a58c:	83e1                	srli	a5,a5,0x18
    e884a58e:	02f10a23          	sb	a5,52(sp)
    e884a592:	6699478b          	lrd	a5,s2,s1,3
    e884a596:	83c1                	srli	a5,a5,0x10
    e884a598:	02f10aa3          	sb	a5,53(sp)
    e884a59c:	6699478b          	lrd	a5,s2,s1,3
    e884a5a0:	83a1                	srli	a5,a5,0x8
    e884a5a2:	02f10b23          	sb	a5,54(sp)
    e884a5a6:	6699478b          	lrd	a5,s2,s1,3
    e884a5aa:	02f10ba3          	sb	a5,55(sp)
		err = _WriteBytes( &ctx, buf + ( sizeof( *offsets ) - trailer.offsetIntSize ), trailer.offsetIntSize );
    e884a5ae:	181c                	addi	a5,sp,48
    e884a5b0:	95be                	add	a1,a1,a5
    e884a5b2:	b82ff0ef          	jal	ra,e8849934 <_WriteBytes>
    e884a5b6:	8c2a                	mv	s8,a0
		require_noerr( err, exit );
    e884a5b8:	e40517e3          	bnez	a0,e884a406 <CFBinaryPlistV0Create+0x458>
	for( i = 0; i < ctx.uniqueCount; ++i )
    e884a5bc:	2485                	addiw	s1,s1,1
    e884a5be:	b67d                	j	e884a16c <CFBinaryPlistV0Create+0x1be>
	require_action( ctx.ptr, exit, err = kNoMemoryErr );
    e884a5c0:	74f9                	lui	s1,0xffffe
    e884a5c2:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884a5c6:	4401                	li	s0,0
	CFBinaryPlistContextFree( &ctx );
    e884a5c8:	656a                	ld	a0,152(sp)
    e884a5ca:	c501                	beqz	a0,e884a5d2 <CFBinaryPlistV0Create+0x624>
    e884a5cc:	535310ef          	jal	ra,e887c300 <eLIBs_free>
    e884a5d0:	ed02                	sd	zero,152(sp)
    e884a5d2:	755a                	ld	a0,432(sp)
    e884a5d4:	c501                	beqz	a0,e884a5dc <CFBinaryPlistV0Create+0x62e>
    e884a5d6:	b75fc0ef          	jal	ra,e884714a <CFRelease>
    e884a5da:	fb02                	sd	zero,432(sp)
    e884a5dc:	757a                	ld	a0,440(sp)
    e884a5de:	c119                	beqz	a0,e884a5e4 <CFBinaryPlistV0Create+0x636>
    e884a5e0:	b6bfc0ef          	jal	ra,e884714a <CFRelease>
	if( outErr ) *outErr = err;
    e884a5e4:	000a8463          	beqz	s5,e884a5ec <CFBinaryPlistV0Create+0x63e>
    e884a5e8:	009aa023          	sw	s1,0(s5)
}
    e884a5ec:	8522                	mv	a0,s0
    e884a5ee:	24813083          	ld	ra,584(sp)
    e884a5f2:	24013403          	ld	s0,576(sp)
    e884a5f6:	23813483          	ld	s1,568(sp)
    e884a5fa:	23013903          	ld	s2,560(sp)
    e884a5fe:	22813983          	ld	s3,552(sp)
    e884a602:	22013a03          	ld	s4,544(sp)
    e884a606:	21813a83          	ld	s5,536(sp)
    e884a60a:	21013b03          	ld	s6,528(sp)
    e884a60e:	20813b83          	ld	s7,520(sp)
    e884a612:	20013c03          	ld	s8,512(sp)
    e884a616:	7cfe                	ld	s9,504(sp)
    e884a618:	7d5e                	ld	s10,496(sp)
    e884a61a:	7dbe                	ld	s11,488(sp)
    e884a61c:	25010113          	addi	sp,sp,592
    e884a620:	8082                	ret

00000000e884a622 <CFBinaryPlistV0CreateData>:
{
    e884a622:	1101                	addi	sp,sp,-32
	const void* ptr = CFBinaryPlistV0Create( inObj, &len, outErr );
    e884a624:	862e                	mv	a2,a1
    e884a626:	002c                	addi	a1,sp,8
{
    e884a628:	ec06                	sd	ra,24(sp)
	const void* ptr = CFBinaryPlistV0Create( inObj, &len, outErr );
    e884a62a:	985ff0ef          	jal	ra,e8849fae <CFBinaryPlistV0Create>
	if( !ptr )
    e884a62e:	c519                	beqz	a0,e884a63c <CFBinaryPlistV0CreateData+0x1a>
	return CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, ptr, len, kCFAllocatorMalloc);
    e884a630:	4622                	lw	a2,8(sp)
    e884a632:	85aa                	mv	a1,a0
    e884a634:	56fd                	li	a3,-1
    e884a636:	4501                	li	a0,0
    e884a638:	c8bfc0ef          	jal	ra,e88472c2 <CFDataCreateWithBytesNoCopy>
}
    e884a63c:	60e2                	ld	ra,24(sp)
    e884a63e:	6105                	addi	sp,sp,32
    e884a640:	8082                	ret

00000000e884a642 <CFBinaryPlistV0CreateWithData>:
{
    e884a642:	7105                	addi	sp,sp,-480
    e884a644:	e7a6                	sd	s1,456(sp)
    e884a646:	ff4e                	sd	s3,440(sp)
    e884a648:	ef86                	sd	ra,472(sp)
    e884a64a:	eba2                	sd	s0,464(sp)
    e884a64c:	e3ca                	sd	s2,448(sp)
	CFBinaryPlistContextInit( &ctx );
    e884a64e:	f482                	sd	zero,104(sp)
    e884a650:	e302                	sd	zero,384(sp)
    e884a652:	e702                	sd	zero,392(sp)
    e884a654:	18012823          	sw	zero,400(sp)
    e884a658:	ef02                	sd	zero,408(sp)
    e884a65a:	1a011023          	sh	zero,416(sp)
    e884a65e:	f702                	sd	zero,424(sp)
	const uint8_t *					end   = src + inLen;
    e884a660:	00b504b3          	add	s1,a0,a1
{
    e884a664:	89b2                	mv	s3,a2
	require_action_quiet( src < end, exit, err = kSizeErr );
    e884a666:	04956263          	bltu	a0,s1,e884a6aa <CFBinaryPlistV0CreateWithData+0x68>
    e884a66a:	77f9                	lui	a5,0xffffe
    e884a66c:	5a97879b          	addiw	a5,a5,1449
	require_action_quiet( trailer.topObject < trailer.numObjects, exit, err = kRangeErr );
    e884a670:	c63e                	sw	a5,12(sp)
	CFPropertyListRef				plist = NULL;
    e884a672:	4401                	li	s0,0
	CFBinaryPlistContextFree( &ctx );
    e884a674:	7526                	ld	a0,104(sp)
    e884a676:	c501                	beqz	a0,e884a67e <CFBinaryPlistV0CreateWithData+0x3c>
    e884a678:	489310ef          	jal	ra,e887c300 <eLIBs_free>
    e884a67c:	f482                	sd	zero,104(sp)
    e884a67e:	651a                	ld	a0,384(sp)
    e884a680:	c501                	beqz	a0,e884a688 <CFBinaryPlistV0CreateWithData+0x46>
    e884a682:	ac9fc0ef          	jal	ra,e884714a <CFRelease>
    e884a686:	e302                	sd	zero,384(sp)
    e884a688:	653a                	ld	a0,392(sp)
    e884a68a:	c119                	beqz	a0,e884a690 <CFBinaryPlistV0CreateWithData+0x4e>
    e884a68c:	abffc0ef          	jal	ra,e884714a <CFRelease>
	if( outErr ) *outErr = err;
    e884a690:	00098563          	beqz	s3,e884a69a <CFBinaryPlistV0CreateWithData+0x58>
    e884a694:	47b2                	lw	a5,12(sp)
    e884a696:	00f9a023          	sw	a5,0(s3)
}
    e884a69a:	8522                	mv	a0,s0
    e884a69c:	60fe                	ld	ra,472(sp)
    e884a69e:	645e                	ld	s0,464(sp)
    e884a6a0:	64be                	ld	s1,456(sp)
    e884a6a2:	691e                	ld	s2,448(sp)
    e884a6a4:	79fa                	ld	s3,440(sp)
    e884a6a6:	613d                	addi	sp,sp,480
    e884a6a8:	8082                	ret
	require_action_quiet( inLen > ( 8 + sizeof( trailer ) ), exit, err = kSizeErr );
    e884a6aa:	02800793          	li	a5,40
    e884a6ae:	842e                	mv	s0,a1
    e884a6b0:	fab7fde3          	bgeu	a5,a1,e884a66a <CFBinaryPlistV0CreateWithData+0x28>
    e884a6b4:	892a                	mv	s2,a0
    e884a6b6:	4781                	li	a5,0
    while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
    e884a6b8:	00074617          	auipc	a2,0x74
    e884a6bc:	2d060613          	addi	a2,a2,720 # e88be988 <kCFLRuntimeClassTable+0x198>
    e884a6c0:	45a1                	li	a1,8
    e884a6c2:	80f9468b          	lrbu	a3,s2,a5,0
    e884a6c6:	80f6470b          	lrbu	a4,a2,a5,0
    e884a6ca:	00e68663          	beq	a3,a4,e884a6d6 <CFBinaryPlistV0CreateWithData+0x94>
	require_action_quiet( memcmp( src, "bplist00", 8 ) == 0, exit, err = kFormatErr );
    e884a6ce:	77f9                	lui	a5,0xffffe
    e884a6d0:	5c37879b          	addiw	a5,a5,1475
    e884a6d4:	bf71                	j	e884a670 <CFBinaryPlistV0CreateWithData+0x2e>
    e884a6d6:	0785                	addi	a5,a5,1
    e884a6d8:	feb795e3          	bne	a5,a1,e884a6c2 <CFBinaryPlistV0CreateWithData+0x80>
	memcpy( &trailer, end - sizeof( trailer ), sizeof( trailer ) );
    e884a6dc:	1481                	addi	s1,s1,-32
    e884a6de:	02000613          	li	a2,32
    e884a6e2:	85a6                	mv	a1,s1
    e884a6e4:	1008                	addi	a0,sp,32
    e884a6e6:	4bb310ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	require_action_quiet( 
    e884a6ea:	02614603          	lbu	a2,38(sp)
    e884a6ee:	4705                	li	a4,1
    e884a6f0:	fff6079b          	addiw	a5,a2,-1
    e884a6f4:	0ff7f793          	andi	a5,a5,255
    e884a6f8:	00f77b63          	bgeu	a4,a5,e884a70e <CFBinaryPlistV0CreateWithData+0xcc>
    e884a6fc:	ffc6079b          	addiw	a5,a2,-4
    e884a700:	0fb7f793          	andi	a5,a5,251
    e884a704:	c789                	beqz	a5,e884a70e <CFBinaryPlistV0CreateWithData+0xcc>
    e884a706:	77f9                	lui	a5,0xffffe
    e884a708:	5aa7879b          	addiw	a5,a5,1450
    e884a70c:	b795                	j	e884a670 <CFBinaryPlistV0CreateWithData+0x2e>
	require_action_quiet( 
    e884a70e:	02714783          	lbu	a5,39(sp)
    e884a712:	4685                	li	a3,1
    e884a714:	fff7871b          	addiw	a4,a5,-1
    e884a718:	0ff77713          	andi	a4,a4,255
    e884a71c:	00e6f663          	bgeu	a3,a4,e884a728 <CFBinaryPlistV0CreateWithData+0xe6>
    e884a720:	37f1                	addiw	a5,a5,-4
    e884a722:	0fb7f793          	andi	a5,a5,251
    e884a726:	f3e5                	bnez	a5,e884a706 <CFBinaryPlistV0CreateWithData+0xc4>
	trailer.numObjects = ntoh64( trailer.numObjects );
    e884a728:	7722                	ld	a4,40(sp)
    e884a72a:	8207170b          	rev	a4,a4
    e884a72e:	f43a                	sd	a4,40(sp)
	require_action_quiet( trailer.numObjects > 0, exit, err = kCountErr );
    e884a730:	e709                	bnez	a4,e884a73a <CFBinaryPlistV0CreateWithData+0xf8>
    e884a732:	77f9                	lui	a5,0xffffe
    e884a734:	5947879b          	addiw	a5,a5,1428
    e884a738:	bf25                	j	e884a670 <CFBinaryPlistV0CreateWithData+0x2e>
	trailer.topObject = ntoh64( trailer.topObject );
    e884a73a:	76c2                	ld	a3,48(sp)
    e884a73c:	8206968b          	rev	a3,a3
    e884a740:	f836                	sd	a3,48(sp)
	require_action_quiet( trailer.topObject < trailer.numObjects, exit, err = kRangeErr );
    e884a742:	00e6e663          	bltu	a3,a4,e884a74e <CFBinaryPlistV0CreateWithData+0x10c>
    e884a746:	77f9                	lui	a5,0xffffe
    e884a748:	5ca7879b          	addiw	a5,a5,1482
    e884a74c:	b715                	j	e884a670 <CFBinaryPlistV0CreateWithData+0x2e>
	trailer.offsetTableOffset = ntoh64( trailer.offsetTableOffset );
    e884a74e:	77e2                	ld	a5,56(sp)
	require_action_quiet( trailer.offsetTableOffset >= 9, exit, err = kMalformedErr );
    e884a750:	45a1                	li	a1,8
    e884a752:	8207978b          	rev	a5,a5
	trailer.offsetTableOffset = ntoh64( trailer.offsetTableOffset );
    e884a756:	fc3e                	sd	a5,56(sp)
	require_action_quiet( trailer.offsetTableOffset >= 9, exit, err = kMalformedErr );
    e884a758:	faf5f7e3          	bgeu	a1,a5,e884a706 <CFBinaryPlistV0CreateWithData+0xc4>
	require_action_quiet( trailer.offsetTableOffset < ( inLen - sizeof( trailer ) ), exit, err = kMalformedErr );
    e884a75c:	1401                	addi	s0,s0,-32
    e884a75e:	fa87f4e3          	bgeu	a5,s0,e884a706 <CFBinaryPlistV0CreateWithData+0xc4>
	require_action_quiet( trailer.numObjects <= 
    e884a762:	00f905b3          	add	a1,s2,a5
    e884a766:	40b485b3          	sub	a1,s1,a1
    e884a76a:	02c5d5b3          	divu	a1,a1,a2
    e884a76e:	fce5e2e3          	bltu	a1,a4,e884a732 <CFBinaryPlistV0CreateWithData+0xf0>
	offset = trailer.offsetTableOffset + ( trailer.topObject * trailer.offsetIntSize );
    e884a772:	20c6978b          	mula	a5,a3,a2
	require_action_quiet( offset < ( (uint64_t)( end - src ) ), exit, err = kRangeErr );
    e884a776:	41248733          	sub	a4,s1,s2
	offset = trailer.offsetTableOffset + ( trailer.topObject * trailer.offsetIntSize );
    e884a77a:	e83e                	sd	a5,16(sp)
	require_action_quiet( offset < ( (uint64_t)( end - src ) ), exit, err = kRangeErr );
    e884a77c:	fce7f5e3          	bgeu	a5,a4,e884a746 <CFBinaryPlistV0CreateWithData+0x104>
	ptr = src + offset;
    e884a780:	97ca                	add	a5,a5,s2
	err = _ReadSizedInteger( &ptr, end, trailer.offsetIntSize, &offset );
    e884a782:	0814                	addi	a3,sp,16
    e884a784:	85a6                	mv	a1,s1
    e884a786:	0828                	addi	a0,sp,24
	ptr = src + offset;
    e884a788:	ec3e                	sd	a5,24(sp)
	err = _ReadSizedInteger( &ptr, end, trailer.offsetIntSize, &offset );
    e884a78a:	fc9fe0ef          	jal	ra,e8849752 <_ReadSizedInteger>
    e884a78e:	c62a                	sw	a0,12(sp)
	CFPropertyListRef				plist = NULL;
    e884a790:	4401                	li	s0,0
	require_noerr_quiet( err, exit );
    e884a792:	ee0511e3          	bnez	a0,e884a674 <CFBinaryPlistV0CreateWithData+0x32>
	if( gCFStringType == ( (CFTypeID) -1 ) )
    e884a796:	0008a797          	auipc	a5,0x8a
    e884a79a:	56278793          	addi	a5,a5,1378 # e88d4cf8 <gCFStringType>
    e884a79e:	4398                	lw	a4,0(a5)
    e884a7a0:	57fd                	li	a5,-1
    e884a7a2:	00f71463          	bne	a4,a5,e884a7aa <CFBinaryPlistV0CreateWithData+0x168>
    e884a7a6:	faaff0ef          	jal	ra,e8849f50 <_GlobalEnsureInitialized.part.1>
	ctx.uniqueCount			= (CFIndex) trailer.numObjects;
    e884a7aa:	77a2                	ld	a5,40(sp)
	dictCallbacks = kCFTypeDictionaryValueCallBacks;
    e884a7ac:	02800613          	li	a2,40
    e884a7b0:	00074597          	auipc	a1,0x74
    e884a7b4:	01858593          	addi	a1,a1,24 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
	ctx.uniqueCount			= (CFIndex) trailer.numObjects;
    e884a7b8:	18f12823          	sw	a5,400(sp)
	ctx.objectRefSize		= trailer.objectRefSize;
    e884a7bc:	02615783          	lhu	a5,38(sp)
	dictCallbacks = kCFTypeDictionaryValueCallBacks;
    e884a7c0:	0088                	addi	a0,sp,64
	ctx.objectRefSize		= trailer.objectRefSize;
    e884a7c2:	0087971b          	slliw	a4,a5,0x8
    e884a7c6:	5c87b78b          	extu	a5,a5,23,8
    e884a7ca:	8fd9                	or	a5,a5,a4
    e884a7cc:	1af11023          	sh	a5,416(sp)
	ctx.offsetTableOffset	= (size_t) trailer.offsetTableOffset;
    e884a7d0:	77e2                	ld	a5,56(sp)
    e884a7d2:	f73e                	sd	a5,424(sp)
	dictCallbacks = kCFTypeDictionaryValueCallBacks;
    e884a7d4:	895b50ef          	jal	ra,e8800068 <memcpy>
	dictCallbacks.equal = _ObjectsExactlyEqual;
    e884a7d8:	fffff797          	auipc	a5,0xfffff
    e884a7dc:	71078793          	addi	a5,a5,1808 # e8849ee8 <_ObjectsExactlyEqual>
	ctx.uniqueDict = CFDictionaryCreateMutable( NULL, 0, NULL, &dictCallbacks );
    e884a7e0:	0094                	addi	a3,sp,64
    e884a7e2:	4601                	li	a2,0
    e884a7e4:	4581                	li	a1,0
    e884a7e6:	4501                	li	a0,0
	dictCallbacks.equal = _ObjectsExactlyEqual;
    e884a7e8:	f0be                	sd	a5,96(sp)
	ctx.uniqueDict = CFDictionaryCreateMutable( NULL, 0, NULL, &dictCallbacks );
    e884a7ea:	bbdfc0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884a7ee:	e72a                	sd	a0,392(sp)
    e884a7f0:	842a                	mv	s0,a0
	require_action( ctx.uniqueDict, exit, err = kNoMemoryErr );
    e884a7f2:	e511                	bnez	a0,e884a7fe <CFBinaryPlistV0CreateWithData+0x1bc>
    e884a7f4:	77f9                	lui	a5,0xffffe
    e884a7f6:	5b87879b          	addiw	a5,a5,1464
    e884a7fa:	c63e                	sw	a5,12(sp)
    e884a7fc:	bda5                	j	e884a674 <CFBinaryPlistV0CreateWithData+0x32>
	plist = _ReadV0Object( &ctx, src, end, (size_t) offset, &err );
    e884a7fe:	66c2                	ld	a3,16(sp)
    e884a800:	0078                	addi	a4,sp,12
    e884a802:	8626                	mv	a2,s1
    e884a804:	85ca                	mv	a1,s2
    e884a806:	10a8                	addi	a0,sp,104
    e884a808:	aa6ff0ef          	jal	ra,e8849aae <_ReadV0Object>
    e884a80c:	842a                	mv	s0,a0
exit:
    e884a80e:	b59d                	j	e884a674 <CFBinaryPlistV0CreateWithData+0x32>

00000000e884a810 <_CopyDictionaryFromFile>:
//===========================================================================================================================
//	_CopyDictionaryFromFile
//===========================================================================================================================

static CFMutableDictionaryRef	_CopyDictionaryFromFile( CFStringRef inAppID )
{
    e884a810:	7379                	lui	t1,0xffffe
    e884a812:	715d                	addi	sp,sp,-80
    e884a814:	0341                	addi	t1,t1,16
    e884a816:	e0a2                	sd	s0,64(sp)
    e884a818:	e486                	sd	ra,72(sp)
    e884a81a:	fc26                	sd	s1,56(sp)
    e884a81c:	f84a                	sd	s2,48(sp)
    e884a81e:	f44e                	sd	s3,40(sp)
    e884a820:	f052                	sd	s4,32(sp)
    e884a822:	ec56                	sd	s5,24(sp)
	FILE *						file = NULL;
	CFMutableDataRef			data = NULL;
	uint8_t *					buf  = NULL;
	size_t						len, n;
	
	if( CFEqual( inAppID, kCFPreferencesCurrentApplication ) )
    e884a824:	00053597          	auipc	a1,0x53
    e884a828:	9a458593          	addi	a1,a1,-1628 # e889d1c8 <icmp6_param_problem+0x15a>
{
    e884a82c:	911a                	add	sp,sp,t1
    e884a82e:	842a                	mv	s0,a0
	if( CFEqual( inAppID, kCFPreferencesCurrentApplication ) )
    e884a830:	91ffc0ef          	jal	ra,e884714e <CFEqual>
    e884a834:	cd05                	beqz	a0,e884a86c <_CopyDictionaryFromFile+0x5c>
	{
		tempAppID = CFStringCreateWithCString( NULL, getprogname(), kCFStringEncodingUTF8 );
    e884a836:	08000637          	lui	a2,0x8000
    e884a83a:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884a83e:	00074597          	auipc	a1,0x74
    e884a842:	24258593          	addi	a1,a1,578 # e88bea80 <__PRETTY_FUNCTION__.9367+0x10>
    e884a846:	4501                	li	a0,0
    e884a848:	cddfc0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884a84c:	842a                	mv	s0,a0
		require_action( tempAppID, exit, err = kUnknownErr );
    e884a84e:	8a2a                	mv	s4,a0
    e884a850:	ed19                	bnez	a0,e884a86e <_CopyDictionaryFromFile+0x5e>
	if( buf ) free( buf );
	CFReleaseNullSafe( data );
	if( file ) fclose( file );
	CFReleaseNullSafe( tempAppID );
	return( dict );
}
    e884a852:	6309                	lui	t1,0x2
    e884a854:	1341                	addi	t1,t1,-16
    e884a856:	911a                	add	sp,sp,t1
    e884a858:	60a6                	ld	ra,72(sp)
    e884a85a:	8522                	mv	a0,s0
    e884a85c:	74e2                	ld	s1,56(sp)
    e884a85e:	6406                	ld	s0,64(sp)
    e884a860:	7942                	ld	s2,48(sp)
    e884a862:	79a2                	ld	s3,40(sp)
    e884a864:	7a02                	ld	s4,32(sp)
    e884a866:	6ae2                	ld	s5,24(sp)
    e884a868:	6161                	addi	sp,sp,80
    e884a86a:	8082                	ret
	CFStringRef					tempAppID = NULL;
    e884a86c:	4a01                	li	s4,0
	*homePath = '\0';
    e884a86e:	6709                	lui	a4,0x2
    e884a870:	77f9                	lui	a5,0xffffe
    e884a872:	970a                	add	a4,a4,sp
	GetHomePath( homePath, sizeof( homePath ) );
    e884a874:	6585                	lui	a1,0x1
    e884a876:	850a                	mv	a0,sp
	*homePath = '\0';
    e884a878:	00f7500b          	srb	zero,a4,a5,0
	GetHomePath( homePath, sizeof( homePath ) );
    e884a87c:	2e00a0ef          	jal	ra,e8854b5c <GetHomePath>
	*path = '\0';
    e884a880:	6709                	lui	a4,0x2
    e884a882:	970a                	add	a4,a4,sp
    e884a884:	77fd                	lui	a5,0xfffff
	SNPrintF( path, sizeof( path ), "%s\\Library\\Preferences\\%@.plist", homePath, inAppID );
    e884a886:	6505                	lui	a0,0x1
	*path = '\0';
    e884a888:	00f7500b          	srb	zero,a4,a5,0
	SNPrintF( path, sizeof( path ), "%s\\Library\\Preferences\\%@.plist", homePath, inAppID );
    e884a88c:	868a                	mv	a3,sp
    e884a88e:	8722                	mv	a4,s0
    e884a890:	00074617          	auipc	a2,0x74
    e884a894:	1f860613          	addi	a2,a2,504 # e88bea88 <__PRETTY_FUNCTION__.9367+0x18>
    e884a898:	6585                	lui	a1,0x1
    e884a89a:	950a                	add	a0,a0,sp
    e884a89c:	4ef110ef          	jal	ra,e885c58a <SNPrintF>
	file = fopen( path, "rb" );
    e884a8a0:	6505                	lui	a0,0x1
    e884a8a2:	00074597          	auipc	a1,0x74
    e884a8a6:	20658593          	addi	a1,a1,518 # e88beaa8 <__PRETTY_FUNCTION__.9367+0x38>
    e884a8aa:	950a                	add	a0,a0,sp
    e884a8ac:	1c5310ef          	jal	ra,e887c270 <eLIBs_fopen>
    e884a8b0:	842a                	mv	s0,a0
	err = map_global_value_errno( file, file );
    e884a8b2:	c145                	beqz	a0,e884a952 <_CopyDictionaryFromFile+0x142>
	data = CFDataCreateMutable( NULL, 0 );
    e884a8b4:	4581                	li	a1,0
    e884a8b6:	4501                	li	a0,0
    e884a8b8:	9f3fc0ef          	jal	ra,e88472aa <CFDataCreateMutable>
    e884a8bc:	84aa                	mv	s1,a0
	require_action( data, exit, err = kNoMemoryErr );
    e884a8be:	c551                	beqz	a0,e884a94a <_CopyDictionaryFromFile+0x13a>
	buf = (uint8_t *) malloc( len );
    e884a8c0:	6521                	lui	a0,0x8
    e884a8c2:	78d300ef          	jal	ra,e887b84e <my_malloc>
    e884a8c6:	892a                	mv	s2,a0
	require( buf, exit );
    e884a8c8:	cd2d                	beqz	a0,e884a942 <_CopyDictionaryFromFile+0x132>
		n = fread( buf, 1, len, file );
    e884a8ca:	6621                	lui	a2,0x8
    e884a8cc:	86a2                	mv	a3,s0
    e884a8ce:	4585                	li	a1,1
    e884a8d0:	854a                	mv	a0,s2
    e884a8d2:	1a7310ef          	jal	ra,e887c278 <eLIBs_fread>
    e884a8d6:	0005061b          	sext.w	a2,a0
		if( n == 0 ) break;
    e884a8da:	c611                	beqz	a2,e884a8e6 <_CopyDictionaryFromFile+0xd6>
		CFDataAppendBytes( data, buf, (CFIndex) n );
    e884a8dc:	85ca                	mv	a1,s2
    e884a8de:	8526                	mv	a0,s1
    e884a8e0:	a27fc0ef          	jal	ra,e8847306 <CFDataAppendBytes>
		n = fread( buf, 1, len, file );
    e884a8e4:	b7dd                	j	e884a8ca <_CopyDictionaryFromFile+0xba>
	dict = (CFMutableDictionaryRef) CFPropertyListCreateWithData( NULL, data, kCFPropertyListMutableContainers, NULL, NULL );
    e884a8e6:	4701                	li	a4,0
    e884a8e8:	4681                	li	a3,0
    e884a8ea:	4605                	li	a2,1
    e884a8ec:	85a6                	mv	a1,s1
    e884a8ee:	4501                	li	a0,0
    e884a8f0:	e1dfc0ef          	jal	ra,e884770c <CFPropertyListCreateWithData>
    e884a8f4:	89aa                	mv	s3,a0
	if( dict && !CFIsType( dict, CFDictionary ) )
    e884a8f6:	c131                	beqz	a0,e884a93a <_CopyDictionaryFromFile+0x12a>
    e884a8f8:	83bfc0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884a8fc:	00050a9b          	sext.w	s5,a0
    e884a900:	aa3fc0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e884a904:	2501                	sext.w	a0,a0
    e884a906:	02aa8a63          	beq	s5,a0,e884a93a <_CopyDictionaryFromFile+0x12a>
		dlogassert( "Prefs must be a dictionary: %@", dict );
    e884a90a:	88ce                	mv	a7,s3
    e884a90c:	00074817          	auipc	a6,0x74
    e884a910:	1a480813          	addi	a6,a6,420 # e88beab0 <__PRETTY_FUNCTION__.9367+0x40>
    e884a914:	00074797          	auipc	a5,0x74
    e884a918:	2bc78793          	addi	a5,a5,700 # e88bebd0 <__PRETTY_FUNCTION__.8730>
    e884a91c:	14a00713          	li	a4,330
    e884a920:	00074697          	auipc	a3,0x74
    e884a924:	1b068693          	addi	a3,a3,432 # e88bead0 <__PRETTY_FUNCTION__.9367+0x60>
    e884a928:	4601                	li	a2,0
    e884a92a:	4581                	li	a1,0
    e884a92c:	4501                	li	a0,0
    e884a92e:	29b030ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		CFRelease( dict );
    e884a932:	854e                	mv	a0,s3
    e884a934:	817fc0ef          	jal	ra,e884714a <CFRelease>
		dict = NULL;
    e884a938:	4981                	li	s3,0
	if( buf ) free( buf );
    e884a93a:	854a                	mv	a0,s2
    e884a93c:	1c5310ef          	jal	ra,e887c300 <eLIBs_free>
    e884a940:	894e                	mv	s2,s3
	CFReleaseNullSafe( data );
    e884a942:	8526                	mv	a0,s1
    e884a944:	807fc0ef          	jal	ra,e884714a <CFRelease>
    e884a948:	84ca                	mv	s1,s2
	if( file ) fclose( file );
    e884a94a:	8522                	mv	a0,s0
    e884a94c:	129310ef          	jal	ra,e887c274 <eLIBs_fclose>
    e884a950:	8426                	mv	s0,s1
	CFReleaseNullSafe( tempAppID );
    e884a952:	f00a00e3          	beqz	s4,e884a852 <_CopyDictionaryFromFile+0x42>
    e884a956:	8552                	mv	a0,s4
    e884a958:	ff2fc0ef          	jal	ra,e884714a <CFRelease>
	return( dict );
    e884a95c:	bddd                	j	e884a852 <_CopyDictionaryFromFile+0x42>

00000000e884a95e <_WritePlistToFile>:
//===========================================================================================================================
//	_WritePlistToFile
//===========================================================================================================================

static OSStatus	_WritePlistToFile( CFStringRef inAppID, CFPropertyListRef inPlist )
{
    e884a95e:	7139                	addi	sp,sp,-64
    e884a960:	7379                	lui	t1,0xffffe
    e884a962:	fa91540b          	sdd	s0,s1,(sp),1,4
    e884a966:	fd31590b          	sdd	s2,s3,(sp),2,4
    e884a96a:	fc06                	sd	ra,56(sp)
    e884a96c:	f852                	sd	s4,48(sp)
    e884a96e:	89ae                	mv	s3,a1
    e884a970:	911a                	add	sp,sp,t1
	int					fd = -1;
	const uint8_t *		ptr;
	const uint8_t *		end;
	ssize_t				n;
	
	if( CFEqual( inAppID, kCFPreferencesCurrentApplication ) )
    e884a972:	00053597          	auipc	a1,0x53
    e884a976:	85658593          	addi	a1,a1,-1962 # e889d1c8 <icmp6_param_problem+0x15a>
{
    e884a97a:	842a                	mv	s0,a0
	if( CFEqual( inAppID, kCFPreferencesCurrentApplication ) )
    e884a97c:	fd2fc0ef          	jal	ra,e884714e <CFEqual>
    e884a980:	c11d                	beqz	a0,e884a9a6 <_WritePlistToFile+0x48>
	{
		tempAppID = CFStringCreateWithCString( NULL, getprogname(), kCFStringEncodingUTF8 );
    e884a982:	08000637          	lui	a2,0x8000
    e884a986:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884a98a:	00074597          	auipc	a1,0x74
    e884a98e:	0f658593          	addi	a1,a1,246 # e88bea80 <__PRETTY_FUNCTION__.9367+0x10>
    e884a992:	4501                	li	a0,0
    e884a994:	b91fc0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884a998:	842a                	mv	s0,a0
		require_action( tempAppID, exit, err = kUnknownErr );
    e884a99a:	892a                	mv	s2,a0
    e884a99c:	e511                	bnez	a0,e884a9a8 <_WritePlistToFile+0x4a>
    e884a99e:	7479                	lui	s0,0xffffe
    e884a9a0:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	
exit:
	if( fd >= 0 ) fclose( fd );
	CFReleaseNullSafe( data );
	CFReleaseNullSafe( tempAppID );
	return( err );
    e884a9a4:	aa85                	j	e884ab14 <_WritePlistToFile+0x1b6>
	CFStringRef			tempAppID = NULL;
    e884a9a6:	4901                	li	s2,0
	*homePath = '\0';
    e884a9a8:	6a09                	lui	s4,0x2
    e884a9aa:	010a0793          	addi	a5,s4,16 # 2010 <memcmp-0xe87fdff0>
    e884a9ae:	978a                	add	a5,a5,sp
	GetHomePath( homePath, sizeof( homePath ) );
    e884a9b0:	6585                	lui	a1,0x1
	*homePath = '\0';
    e884a9b2:	74f9                	lui	s1,0xffffe
	GetHomePath( homePath, sizeof( homePath ) );
    e884a9b4:	0808                	addi	a0,sp,16
	*homePath = '\0';
    e884a9b6:	0097d00b          	srb	zero,a5,s1,0
	GetHomePath( homePath, sizeof( homePath ) );
    e884a9ba:	1a20a0ef          	jal	ra,e8854b5c <GetHomePath>
	*path = '\0';
    e884a9be:	010a0713          	addi	a4,s4,16
	SNPrintF( path, sizeof( path ), "%s\\Library\\Preferences", homePath );
    e884a9c2:	6a05                	lui	s4,0x1
	*path = '\0';
    e884a9c4:	77fd                	lui	a5,0xfffff
    e884a9c6:	970a                	add	a4,a4,sp
	SNPrintF( path, sizeof( path ), "%s\\Library\\Preferences", homePath );
    e884a9c8:	010a0513          	addi	a0,s4,16 # 1010 <memcmp-0xe87feff0>
    e884a9cc:	00074617          	auipc	a2,0x74
    e884a9d0:	1c460613          	addi	a2,a2,452 # e88beb90 <__PRETTY_FUNCTION__.9367+0x120>
    e884a9d4:	6585                	lui	a1,0x1
    e884a9d6:	0814                	addi	a3,sp,16
    e884a9d8:	950a                	add	a0,a0,sp
	*path = '\0';
    e884a9da:	00f7500b          	srb	zero,a4,a5,0
	SNPrintF( path, sizeof( path ), "%s\\Library\\Preferences", homePath );
    e884a9de:	3ad110ef          	jal	ra,e885c58a <SNPrintF>
	err = mkpath( path, S_IRWXU, S_IRWXU );
    e884a9e2:	010a0513          	addi	a0,s4,16
    e884a9e6:	1c000613          	li	a2,448
    e884a9ea:	1c000593          	li	a1,448
    e884a9ee:	950a                	add	a0,a0,sp
    e884a9f0:	1780a0ef          	jal	ra,e8854b68 <mkpath>
	err = map_global_noerr_errno( err );
    e884a9f4:	c139                	beqz	a0,e884aa3a <_WritePlistToFile+0xdc>
    e884a9f6:	0009a797          	auipc	a5,0x9a
    e884a9fa:	c3278793          	addi	a5,a5,-974 # e88e4628 <lwip_errno>
    e884a9fe:	439c                	lw	a5,0(a5)
    e884aa00:	cbcd                	beqz	a5,e884aab2 <_WritePlistToFile+0x154>
	if( err && ( err != EEXIST ) ) dlogassert( "Make parent %s failed: %#m", path, err );
    e884aa02:	4745                	li	a4,17
    e884aa04:	02e78b63          	beq	a5,a4,e884aa3a <_WritePlistToFile+0xdc>
    e884aa08:	e03e                	sd	a5,0(sp)
    e884aa0a:	6789                	lui	a5,0x2
    e884aa0c:	07c1                	addi	a5,a5,16
    e884aa0e:	978a                	add	a5,a5,sp
    e884aa10:	78fd                	lui	a7,0xfffff
    e884aa12:	98be                	add	a7,a7,a5
    e884aa14:	00074817          	auipc	a6,0x74
    e884aa18:	19480813          	addi	a6,a6,404 # e88beba8 <__PRETTY_FUNCTION__.9367+0x138>
    e884aa1c:	00074797          	auipc	a5,0x74
    e884aa20:	1cc78793          	addi	a5,a5,460 # e88bebe8 <__PRETTY_FUNCTION__.8745>
    e884aa24:	17800713          	li	a4,376
    e884aa28:	00074697          	auipc	a3,0x74
    e884aa2c:	0a868693          	addi	a3,a3,168 # e88bead0 <__PRETTY_FUNCTION__.9367+0x60>
    e884aa30:	4601                	li	a2,0
    e884aa32:	4581                	li	a1,0
    e884aa34:	4501                	li	a0,0
    e884aa36:	193030ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	data = CFPropertyListCreateData( NULL, inPlist, kCFPropertyListBinaryFormat_v1_0, 0, NULL );
    e884aa3a:	4701                	li	a4,0
    e884aa3c:	4681                	li	a3,0
    e884aa3e:	0c800613          	li	a2,200
    e884aa42:	85ce                	mv	a1,s3
    e884aa44:	4501                	li	a0,0
    e884aa46:	c75fc0ef          	jal	ra,e88476ba <CFPropertyListCreateData>
    e884aa4a:	84aa                	mv	s1,a0
	require_action( data, exit, err = kUnknownErr );
    e884aa4c:	cd45                	beqz	a0,e884ab04 <_WritePlistToFile+0x1a6>
	*path = '\0';
    e884aa4e:	6689                	lui	a3,0x2
    e884aa50:	01068713          	addi	a4,a3,16 # 2010 <memcmp-0xe87fdff0>
    e884aa54:	77fd                	lui	a5,0xfffff
    e884aa56:	970a                	add	a4,a4,sp
    e884aa58:	00f7500b          	srb	zero,a4,a5,0
	SNPrintF( path, sizeof( path ), "%s\\Library\\Preferences\\%@.plist", homePath, inAppID );
    e884aa5c:	8722                	mv	a4,s0
    e884aa5e:	01068793          	addi	a5,a3,16
    e884aa62:	6405                	lui	s0,0x1
    e884aa64:	978a                	add	a5,a5,sp
    e884aa66:	7a79                	lui	s4,0xffffe
    e884aa68:	01040513          	addi	a0,s0,16 # 1010 <memcmp-0xe87feff0>
    e884aa6c:	014786b3          	add	a3,a5,s4
    e884aa70:	00074617          	auipc	a2,0x74
    e884aa74:	01860613          	addi	a2,a2,24 # e88bea88 <__PRETTY_FUNCTION__.9367+0x18>
    e884aa78:	6585                	lui	a1,0x1
    e884aa7a:	950a                	add	a0,a0,sp
    e884aa7c:	30f110ef          	jal	ra,e885c58a <SNPrintF>
	fd = fopen( path, "wb" );
    e884aa80:	01040513          	addi	a0,s0,16
    e884aa84:	00074597          	auipc	a1,0x74
    e884aa88:	14458593          	addi	a1,a1,324 # e88bebc8 <__PRETTY_FUNCTION__.9367+0x158>
    e884aa8c:	950a                	add	a0,a0,sp
    e884aa8e:	7e2310ef          	jal	ra,e887c270 <eLIBs_fopen>
    e884aa92:	0005099b          	sext.w	s3,a0
	err = map_fd_creation_errno( fd );
    e884aa96:	0209d163          	bgez	s3,e884aab8 <_WritePlistToFile+0x15a>
    e884aa9a:	0009a797          	auipc	a5,0x9a
    e884aa9e:	b8e78793          	addi	a5,a5,-1138 # e88e4628 <lwip_errno>
    e884aaa2:	4380                	lw	s0,0(a5)
    e884aaa4:	e019                	bnez	s0,e884aaaa <_WritePlistToFile+0x14c>
    e884aaa6:	5d4a0413          	addi	s0,s4,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	CFReleaseNullSafe( data );
    e884aaaa:	8526                	mv	a0,s1
    e884aaac:	e9efc0ef          	jal	ra,e884714a <CFRelease>
    e884aab0:	a8a9                	j	e884ab0a <_WritePlistToFile+0x1ac>
	err = map_global_noerr_errno( err );
    e884aab2:	5d448793          	addi	a5,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884aab6:	bf89                	j	e884aa08 <_WritePlistToFile+0xaa>
	ptr = CFDataGetBytePtr( data );
    e884aab8:	8526                	mv	a0,s1
    e884aaba:	833fc0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e884aabe:	842a                	mv	s0,a0
	end = ptr + CFDataGetLength( data );
    e884aac0:	8526                	mv	a0,s1
    e884aac2:	815fc0ef          	jal	ra,e88472d6 <CFDataGetLength>
    e884aac6:	00a40a33          	add	s4,s0,a0
	for( ; ptr != end; ptr += n )
    e884aaca:	01441763          	bne	s0,s4,e884aad8 <_WritePlistToFile+0x17a>
exit:
    e884aace:	4401                	li	s0,0
	if( fd >= 0 ) fclose( fd );
    e884aad0:	854e                	mv	a0,s3
    e884aad2:	7a2310ef          	jal	ra,e887c274 <eLIBs_fclose>
    e884aad6:	bfd1                	j	e884aaaa <_WritePlistToFile+0x14c>
		n = fwrite(ptr,1,( end - ptr ),fd);
    e884aad8:	86ce                	mv	a3,s3
    e884aada:	408a063b          	subw	a2,s4,s0
    e884aade:	4585                	li	a1,1
    e884aae0:	8522                	mv	a0,s0
    e884aae2:	79a310ef          	jal	ra,e887c27c <eLIBs_fwrite>
    e884aae6:	2501                	sext.w	a0,a0
		err = map_global_value_errno( n > 0, n );
    e884aae8:	00a04c63          	bgtz	a0,e884ab00 <_WritePlistToFile+0x1a2>
    e884aaec:	0009a797          	auipc	a5,0x9a
    e884aaf0:	b3c78793          	addi	a5,a5,-1220 # e88e4628 <lwip_errno>
    e884aaf4:	4380                	lw	s0,0(a5)
    e884aaf6:	fc69                	bnez	s0,e884aad0 <_WritePlistToFile+0x172>
    e884aaf8:	7479                	lui	s0,0xffffe
    e884aafa:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884aafe:	bfc9                	j	e884aad0 <_WritePlistToFile+0x172>
	for( ; ptr != end; ptr += n )
    e884ab00:	942a                	add	s0,s0,a0
    e884ab02:	b7e1                	j	e884aaca <_WritePlistToFile+0x16c>
    e884ab04:	7479                	lui	s0,0xffffe
    e884ab06:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	CFReleaseNullSafe( tempAppID );
    e884ab0a:	00090563          	beqz	s2,e884ab14 <_WritePlistToFile+0x1b6>
    e884ab0e:	854a                	mv	a0,s2
    e884ab10:	e3afc0ef          	jal	ra,e884714a <CFRelease>
}
    e884ab14:	6309                	lui	t1,0x2
    e884ab16:	911a                	add	sp,sp,t1
    e884ab18:	70e2                	ld	ra,56(sp)
    e884ab1a:	8522                	mv	a0,s0
    e884ab1c:	7a42                	ld	s4,48(sp)
    e884ab1e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884ab22:	fd31490b          	ldd	s2,s3,(sp),2,4
    e884ab26:	6121                	addi	sp,sp,64
    e884ab28:	8082                	ret

00000000e884ab2a <CFPreferencesCopyAppValue_compat>:
{
    e884ab2a:	7179                	addi	sp,sp,-48
    e884ab2c:	f052                	sd	s4,32(sp)
    e884ab2e:	8a2a                	mv	s4,a0
	pthread_mutex_lock( &gLock );
    e884ab30:	0008a517          	auipc	a0,0x8a
    e884ab34:	1cc50513          	addi	a0,a0,460 # e88d4cfc <gLock>
{
    e884ab38:	f406                	sd	ra,40(sp)
    e884ab3a:	f891540b          	sdd	s0,s1,(sp),0,4
    e884ab3e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e884ab42:	842e                	mv	s0,a1
	pthread_mutex_lock( &gLock );
    e884ab44:	7db300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( CFEqual( inAppID, kCFPreferencesCurrentApplication ) )
    e884ab48:	4981                	li	s3,0
    e884ab4a:	00052597          	auipc	a1,0x52
    e884ab4e:	67e58593          	addi	a1,a1,1662 # e889d1c8 <icmp6_param_problem+0x15a>
    e884ab52:	8522                	mv	a0,s0
    e884ab54:	dfafc0ef          	jal	ra,e884714e <CFEqual>
    e884ab58:	cd15                	beqz	a0,e884ab94 <CFPreferencesCopyAppValue_compat+0x6a>
		tempAppID = CFStringCreateWithCString( NULL, getprogname(), kCFStringEncodingUTF8 );
    e884ab5a:	08000637          	lui	a2,0x8000
    e884ab5e:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884ab62:	00074597          	auipc	a1,0x74
    e884ab66:	f1e58593          	addi	a1,a1,-226 # e88bea80 <__PRETTY_FUNCTION__.9367+0x10>
    e884ab6a:	4501                	li	a0,0
    e884ab6c:	9b9fc0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884ab70:	842a                	mv	s0,a0
		require( tempAppID, exit );
    e884ab72:	89aa                	mv	s3,a0
    e884ab74:	e105                	bnez	a0,e884ab94 <CFPreferencesCopyAppValue_compat+0x6a>
	pthread_mutex_unlock( &gLock );
    e884ab76:	0008a517          	auipc	a0,0x8a
    e884ab7a:	18650513          	addi	a0,a0,390 # e88d4cfc <gLock>
    e884ab7e:	7e5300ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e884ab82:	7a02                	ld	s4,32(sp)
    e884ab84:	8522                	mv	a0,s0
    e884ab86:	70a2                	ld	ra,40(sp)
    e884ab88:	f891440b          	ldd	s0,s1,(sp),0,4
    e884ab8c:	fb31490b          	ldd	s2,s3,(sp),1,4
    e884ab90:	6145                	addi	sp,sp,48
    e884ab92:	8082                	ret
	if( !gPrefs )
    e884ab94:	00099917          	auipc	s2,0x99
    e884ab98:	00c90913          	addi	s2,s2,12 # e88e3ba0 <gPrefs>
    e884ab9c:	00093783          	ld	a5,0(s2)
    e884aba0:	c79d                	beqz	a5,e884abce <CFPreferencesCopyAppValue_compat+0xa4>
	appDict = (CFDictionaryRef) CFDictionaryGetValue( gPrefs, inAppID );
    e884aba2:	00093503          	ld	a0,0(s2)
    e884aba6:	85a2                	mv	a1,s0
    e884aba8:	897fc0ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e884abac:	84aa                	mv	s1,a0
	if( !appDict )
    e884abae:	c531                	beqz	a0,e884abfa <CFPreferencesCopyAppValue_compat+0xd0>
	CFMutableDictionaryRef		appDictCopy	= NULL;
    e884abb0:	4901                	li	s2,0
	value = CFDictionaryGetValue( appDict, inKey );
    e884abb2:	85d2                	mv	a1,s4
    e884abb4:	8526                	mv	a0,s1
    e884abb6:	889fc0ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e884abba:	842a                	mv	s0,a0
	CFRetainNullSafe( value );
    e884abbc:	c119                	beqz	a0,e884abc2 <CFPreferencesCopyAppValue_compat+0x98>
    e884abbe:	d88fc0ef          	jal	ra,e8847146 <CFRetain>
	CFReleaseNullSafe( appDictCopy );
    e884abc2:	02090663          	beqz	s2,e884abee <CFPreferencesCopyAppValue_compat+0xc4>
    e884abc6:	854a                	mv	a0,s2
    e884abc8:	d82fc0ef          	jal	ra,e884714a <CFRelease>
    e884abcc:	a00d                	j	e884abee <CFPreferencesCopyAppValue_compat+0xc4>
		gPrefs = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e884abce:	00074697          	auipc	a3,0x74
    e884abd2:	bfa68693          	addi	a3,a3,-1030 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884abd6:	00074617          	auipc	a2,0x74
    e884abda:	bc260613          	addi	a2,a2,-1086 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884abde:	4581                	li	a1,0
    e884abe0:	4501                	li	a0,0
    e884abe2:	fc4fc0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884abe6:	00a93023          	sd	a0,0(s2)
		require( gPrefs, exit );
    e884abea:	fd45                	bnez	a0,e884aba2 <CFPreferencesCopyAppValue_compat+0x78>
	CFMutableDictionaryRef		appDictCopy	= NULL;
    e884abec:	4401                	li	s0,0
	CFReleaseNullSafe( tempAppID );
    e884abee:	f80984e3          	beqz	s3,e884ab76 <CFPreferencesCopyAppValue_compat+0x4c>
    e884abf2:	854e                	mv	a0,s3
    e884abf4:	d56fc0ef          	jal	ra,e884714a <CFRelease>
    e884abf8:	bfbd                	j	e884ab76 <CFPreferencesCopyAppValue_compat+0x4c>
		appDictCopy = _CopyDictionaryFromFile( inAppID );
    e884abfa:	8522                	mv	a0,s0
    e884abfc:	c15ff0ef          	jal	ra,e884a810 <_CopyDictionaryFromFile>
    e884ac00:	84aa                	mv	s1,a0
		if( !appDictCopy )
    e884ac02:	ed11                	bnez	a0,e884ac1e <CFPreferencesCopyAppValue_compat+0xf4>
			appDictCopy = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e884ac04:	00074697          	auipc	a3,0x74
    e884ac08:	bc468693          	addi	a3,a3,-1084 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884ac0c:	00074617          	auipc	a2,0x74
    e884ac10:	b8c60613          	addi	a2,a2,-1140 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884ac14:	4581                	li	a1,0
    e884ac16:	f90fc0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884ac1a:	84aa                	mv	s1,a0
			require( appDictCopy, exit );
    e884ac1c:	d961                	beqz	a0,e884abec <CFPreferencesCopyAppValue_compat+0xc2>
		CFDictionarySetValue( gPrefs, inAppID, appDictCopy );
    e884ac1e:	00093503          	ld	a0,0(s2)
    e884ac22:	8626                	mv	a2,s1
    e884ac24:	85a2                	mv	a1,s0
    e884ac26:	82dfc0ef          	jal	ra,e8847452 <CFDictionarySetValue>
    e884ac2a:	8926                	mv	s2,s1
    e884ac2c:	b759                	j	e884abb2 <CFPreferencesCopyAppValue_compat+0x88>

00000000e884ac2e <CFPreferencesSetAppValue_compat>:
{
    e884ac2e:	7139                	addi	sp,sp,-64
    e884ac30:	f452                	sd	s4,40(sp)
    e884ac32:	8a2a                	mv	s4,a0
	pthread_mutex_lock( &gLock );
    e884ac34:	0008a517          	auipc	a0,0x8a
    e884ac38:	0c850513          	addi	a0,a0,200 # e88d4cfc <gLock>
{
    e884ac3c:	fc06                	sd	ra,56(sp)
    e884ac3e:	e826                	sd	s1,16(sp)
    e884ac40:	f04e                	sd	s3,32(sp)
    e884ac42:	84b2                	mv	s1,a2
    e884ac44:	f856                	sd	s5,48(sp)
    e884ac46:	e422                	sd	s0,8(sp)
    e884ac48:	8aae                	mv	s5,a1
    e884ac4a:	ec4a                	sd	s2,24(sp)
	pthread_mutex_lock( &gLock );
    e884ac4c:	6d3300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( CFEqual( inAppID, kCFPreferencesCurrentApplication ) )
    e884ac50:	4981                	li	s3,0
    e884ac52:	00052597          	auipc	a1,0x52
    e884ac56:	57658593          	addi	a1,a1,1398 # e889d1c8 <icmp6_param_problem+0x15a>
    e884ac5a:	8526                	mv	a0,s1
    e884ac5c:	cf2fc0ef          	jal	ra,e884714e <CFEqual>
    e884ac60:	cd19                	beqz	a0,e884ac7e <CFPreferencesSetAppValue_compat+0x50>
		tempAppID = CFStringCreateWithCString( NULL, getprogname(), kCFStringEncodingUTF8 );
    e884ac62:	08000637          	lui	a2,0x8000
    e884ac66:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884ac6a:	00074597          	auipc	a1,0x74
    e884ac6e:	e1658593          	addi	a1,a1,-490 # e88bea80 <__PRETTY_FUNCTION__.9367+0x10>
    e884ac72:	4501                	li	a0,0
    e884ac74:	8b1fc0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884ac78:	84aa                	mv	s1,a0
		require( tempAppID, exit );
    e884ac7a:	89aa                	mv	s3,a0
    e884ac7c:	c52d                	beqz	a0,e884ace6 <CFPreferencesSetAppValue_compat+0xb8>
	if( !gPrefs )
    e884ac7e:	00099917          	auipc	s2,0x99
    e884ac82:	f2290913          	addi	s2,s2,-222 # e88e3ba0 <gPrefs>
    e884ac86:	00093783          	ld	a5,0(s2)
    e884ac8a:	cb95                	beqz	a5,e884acbe <CFPreferencesSetAppValue_compat+0x90>
	appDict = (CFMutableDictionaryRef) CFDictionaryGetValue( gPrefs, inAppID );
    e884ac8c:	00093503          	ld	a0,0(s2)
    e884ac90:	85a6                	mv	a1,s1
    e884ac92:	facfc0ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e884ac96:	842a                	mv	s0,a0
	if( !appDict )
    e884ac98:	c52d                	beqz	a0,e884ad02 <CFPreferencesSetAppValue_compat+0xd4>
	CFMutableDictionaryRef		appDictCopy = NULL;
    e884ac9a:	4901                	li	s2,0
	if( inValue )	CFDictionarySetValue( appDict, inKey, inValue );
    e884ac9c:	080a8d63          	beqz	s5,e884ad36 <CFPreferencesSetAppValue_compat+0x108>
    e884aca0:	8656                	mv	a2,s5
    e884aca2:	85d2                	mv	a1,s4
    e884aca4:	8522                	mv	a0,s0
    e884aca6:	facfc0ef          	jal	ra,e8847452 <CFDictionarySetValue>
	_WritePlistToFile( inAppID, appDict );
    e884acaa:	85a2                	mv	a1,s0
    e884acac:	8526                	mv	a0,s1
    e884acae:	cb1ff0ef          	jal	ra,e884a95e <_WritePlistToFile>
	CFReleaseNullSafe( appDictCopy );
    e884acb2:	02090563          	beqz	s2,e884acdc <CFPreferencesSetAppValue_compat+0xae>
    e884acb6:	854a                	mv	a0,s2
    e884acb8:	c92fc0ef          	jal	ra,e884714a <CFRelease>
    e884acbc:	a005                	j	e884acdc <CFPreferencesSetAppValue_compat+0xae>
		gPrefs = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e884acbe:	00074697          	auipc	a3,0x74
    e884acc2:	b0a68693          	addi	a3,a3,-1270 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884acc6:	00074617          	auipc	a2,0x74
    e884acca:	ad260613          	addi	a2,a2,-1326 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884acce:	4581                	li	a1,0
    e884acd0:	4501                	li	a0,0
    e884acd2:	ed4fc0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884acd6:	00a93023          	sd	a0,0(s2)
		require( gPrefs, exit );
    e884acda:	f94d                	bnez	a0,e884ac8c <CFPreferencesSetAppValue_compat+0x5e>
	CFReleaseNullSafe( tempAppID );
    e884acdc:	00098563          	beqz	s3,e884ace6 <CFPreferencesSetAppValue_compat+0xb8>
    e884ace0:	854e                	mv	a0,s3
    e884ace2:	c68fc0ef          	jal	ra,e884714a <CFRelease>
}
    e884ace6:	6422                	ld	s0,8(sp)
    e884ace8:	70e2                	ld	ra,56(sp)
    e884acea:	64c2                	ld	s1,16(sp)
    e884acec:	6962                	ld	s2,24(sp)
    e884acee:	7982                	ld	s3,32(sp)
    e884acf0:	7a22                	ld	s4,40(sp)
    e884acf2:	7ac2                	ld	s5,48(sp)
	pthread_mutex_unlock( &gLock );
    e884acf4:	0008a517          	auipc	a0,0x8a
    e884acf8:	00850513          	addi	a0,a0,8 # e88d4cfc <gLock>
}
    e884acfc:	6121                	addi	sp,sp,64
	pthread_mutex_unlock( &gLock );
    e884acfe:	6653006f          	j	e887bb62 <pthread_mutex_unlock>
		appDictCopy = _CopyDictionaryFromFile( inAppID );
    e884ad02:	8526                	mv	a0,s1
    e884ad04:	b0dff0ef          	jal	ra,e884a810 <_CopyDictionaryFromFile>
    e884ad08:	842a                	mv	s0,a0
		if( !appDictCopy )
    e884ad0a:	ed11                	bnez	a0,e884ad26 <CFPreferencesSetAppValue_compat+0xf8>
			appDictCopy = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e884ad0c:	00074697          	auipc	a3,0x74
    e884ad10:	abc68693          	addi	a3,a3,-1348 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884ad14:	00074617          	auipc	a2,0x74
    e884ad18:	a8460613          	addi	a2,a2,-1404 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884ad1c:	4581                	li	a1,0
    e884ad1e:	e88fc0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884ad22:	842a                	mv	s0,a0
			require( appDictCopy, exit );
    e884ad24:	dd45                	beqz	a0,e884acdc <CFPreferencesSetAppValue_compat+0xae>
		CFDictionarySetValue( gPrefs, inAppID, appDictCopy );
    e884ad26:	00093503          	ld	a0,0(s2)
    e884ad2a:	8622                	mv	a2,s0
    e884ad2c:	85a6                	mv	a1,s1
    e884ad2e:	f24fc0ef          	jal	ra,e8847452 <CFDictionarySetValue>
    e884ad32:	8922                	mv	s2,s0
    e884ad34:	b7a5                	j	e884ac9c <CFPreferencesSetAppValue_compat+0x6e>
	else			CFDictionaryRemoveValue( appDict, inKey );
    e884ad36:	85d2                	mv	a1,s4
    e884ad38:	8522                	mv	a0,s0
    e884ad3a:	f20fc0ef          	jal	ra,e884745a <CFDictionaryRemoveValue>
    e884ad3e:	b7b5                	j	e884acaa <CFPreferencesSetAppValue_compat+0x7c>

00000000e884ad40 <CFPreferencesAppSynchronize_compat>:
	require_action_quiet( gPrefs, exit, good = true );
    e884ad40:	00099797          	auipc	a5,0x99
    e884ad44:	e6078793          	addi	a5,a5,-416 # e88e3ba0 <gPrefs>
    e884ad48:	6398                	ld	a4,0(a5)
    e884ad4a:	e319                	bnez	a4,e884ad50 <CFPreferencesAppSynchronize_compat+0x10>
    e884ad4c:	4505                	li	a0,1
}
    e884ad4e:	8082                	ret
{
    e884ad50:	1101                	addi	sp,sp,-32
	if( CFEqual( inAppID, kCFPreferencesCurrentApplication ) )
    e884ad52:	00052597          	auipc	a1,0x52
    e884ad56:	47658593          	addi	a1,a1,1142 # e889d1c8 <icmp6_param_problem+0x15a>
{
    e884ad5a:	f891540b          	sdd	s0,s1,(sp),0,4
    e884ad5e:	ec06                	sd	ra,24(sp)
    e884ad60:	e84a                	sd	s2,16(sp)
    e884ad62:	84aa                	mv	s1,a0
    e884ad64:	843e                	mv	s0,a5
	if( CFEqual( inAppID, kCFPreferencesCurrentApplication ) )
    e884ad66:	be8fc0ef          	jal	ra,e884714e <CFEqual>
    e884ad6a:	c515                	beqz	a0,e884ad96 <CFPreferencesAppSynchronize_compat+0x56>
		tempAppID = CFStringCreateWithCString( NULL, getprogname(), kCFStringEncodingUTF8 );
    e884ad6c:	08000637          	lui	a2,0x8000
    e884ad70:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884ad74:	00074597          	auipc	a1,0x74
    e884ad78:	d0c58593          	addi	a1,a1,-756 # e88bea80 <__PRETTY_FUNCTION__.9367+0x10>
    e884ad7c:	4501                	li	a0,0
    e884ad7e:	fa6fc0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884ad82:	84aa                	mv	s1,a0
		require( tempAppID, exit );
    e884ad84:	8926                	mv	s2,s1
	Boolean			good		= false;
    e884ad86:	4501                	li	a0,0
		require( tempAppID, exit );
    e884ad88:	e881                	bnez	s1,e884ad98 <CFPreferencesAppSynchronize_compat+0x58>
}
    e884ad8a:	60e2                	ld	ra,24(sp)
    e884ad8c:	f891440b          	ldd	s0,s1,(sp),0,4
    e884ad90:	6942                	ld	s2,16(sp)
    e884ad92:	6105                	addi	sp,sp,32
    e884ad94:	8082                	ret
	CFStringRef		tempAppID	= NULL;
    e884ad96:	4901                	li	s2,0
	CFDictionaryRemoveValue( gPrefs, inAppID );
    e884ad98:	6008                	ld	a0,0(s0)
    e884ad9a:	85a6                	mv	a1,s1
    e884ad9c:	ebefc0ef          	jal	ra,e884745a <CFDictionaryRemoveValue>
	CFReleaseNullSafe( tempAppID );
    e884ada0:	00090563          	beqz	s2,e884adaa <CFPreferencesAppSynchronize_compat+0x6a>
    e884ada4:	854a                	mv	a0,s2
    e884ada6:	ba4fc0ef          	jal	ra,e884714a <CFRelease>
	good = true;
    e884adaa:	4505                	li	a0,1
    e884adac:	bff9                	j	e884ad8a <CFPreferencesAppSynchronize_compat+0x4a>

00000000e884adae <__CFRunLoopTimerRequeue>:
{
	CFRunLoopRef			rl;
	CFRunLoopTimerRef *		next;
	CFRunLoopTimerRef		curr;
	
	rl = inTimer->rl;
    e884adae:	6918                	ld	a4,16(a0)
	if( rl )
    e884adb0:	cf19                	beqz	a4,e884adce <__CFRunLoopTimerRequeue+0x20>
	{
		// Remove and re-insert, sorted by the new expiration time.
		
		for( next = &rl->timerList; ( curr = *next ) != NULL; next = &curr->next )
    e884adb2:	6b1c                	ld	a5,16(a4)
    e884adb4:	01070693          	addi	a3,a4,16 # 2010 <memcmp-0xe87fdff0>
    e884adb8:	8636                	mv	a2,a3
    e884adba:	e391                	bnez	a5,e884adbe <__CFRunLoopTimerRequeue+0x10>
    e884adbc:	8082                	ret
		{
			if( curr == inTimer )
    e884adbe:	678c                	ld	a1,8(a5)
    e884adc0:	00f51863          	bne	a0,a5,e884add0 <__CFRunLoopTimerRequeue+0x22>
			{
				*next = curr->next;
    e884adc4:	e20c                	sd	a1,0(a2)
		for( next = &rl->timerList; ( curr = *next ) != NULL; next = &curr->next )
    e884adc6:	6b1c                	ld	a5,16(a4)
				break;
			}
		}
		if( curr )
		{
			for( next = &rl->timerList; ( curr = *next ) != NULL; next = &curr->next )
    e884adc8:	eb81                	bnez	a5,e884add8 <__CFRunLoopTimerRequeue+0x2a>
				if( inTimer->expireTicks < curr->expireTicks )
				{
					break;
				}
			}
			inTimer->next = *next;
    e884adca:	e51c                	sd	a5,8(a0)
			*next = inTimer;
    e884adcc:	e288                	sd	a0,0(a3)
		}
	}
}
    e884adce:	8082                	ret
		for( next = &rl->timerList; ( curr = *next ) != NULL; next = &curr->next )
    e884add0:	00878613          	addi	a2,a5,8
    e884add4:	87ae                	mv	a5,a1
    e884add6:	b7d5                	j	e884adba <__CFRunLoopTimerRequeue+0xc>
				if( inTimer->expireTicks < curr->expireTicks )
    e884add8:	6d10                	ld	a2,24(a0)
    e884adda:	6f98                	ld	a4,24(a5)
    e884addc:	fee667e3          	bltu	a2,a4,e884adca <__CFRunLoopTimerRequeue+0x1c>
			for( next = &rl->timerList; ( curr = *next ) != NULL; next = &curr->next )
    e884ade0:	00878693          	addi	a3,a5,8
    e884ade4:	679c                	ld	a5,8(a5)
    e884ade6:	b7cd                	j	e884adc8 <__CFRunLoopTimerRequeue+0x1a>

00000000e884ade8 <__CFSocketHandler>:
//===========================================================================================================================
//	__CFSocketHandler
//===========================================================================================================================

DEBUG_STATIC void	__CFSocketHandler( CFSocketRef inSock, CFOptionFlags inCallBackType )
{
    e884ade8:	7139                	addi	sp,sp,-64
    e884adea:	f422                	sd	s0,40(sp)
    e884adec:	842a                	mv	s0,a0
	int32_t			connectErr;
	int				socketErr;
	socklen_t		socketErrSize;
	const void *	callbackData;
	
	CFRunLoopLock();
    e884adee:	00099517          	auipc	a0,0x99
    e884adf2:	dc250513          	addi	a0,a0,-574 # e88e3bb0 <gCFRunLoopLock>
{
    e884adf6:	f826                	sd	s1,48(sp)
    e884adf8:	e02e                	sd	a1,0(sp)
    e884adfa:	fc06                	sd	ra,56(sp)
	CFRunLoopLock();
    e884adfc:	523300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	
	// If we're connecting then simulate a connect event on reads or writes.
	
	callbackData = NULL;
	if( inSock->connecting )
    e884ae00:	01444483          	lbu	s1,20(s0)
    e884ae04:	6582                	ld	a1,0(sp)
    e884ae06:	c8a5                	beqz	s1,e884ae76 <__CFSocketHandler+0x8e>
	{
		socketErr = 0;
		socketErrSize = (socklen_t) sizeof( socketErr );
		connectErr = getsockopt( inSock->nativeSock, SOL_SOCKET, SO_ERROR, (char *) &socketErr, &socketErrSize );
    e884ae08:	4808                	lw	a0,16(s0)
		socketErrSize = (socklen_t) sizeof( socketErr );
    e884ae0a:	4791                	li	a5,4
		connectErr = getsockopt( inSock->nativeSock, SOL_SOCKET, SO_ERROR, (char *) &socketErr, &socketErrSize );
    e884ae0c:	6585                	lui	a1,0x1
    e884ae0e:	00758613          	addi	a2,a1,7 # 1007 <memcmp-0xe87feff9>
    e884ae12:	0878                	addi	a4,sp,28
    e884ae14:	0834                	addi	a3,sp,24
    e884ae16:	15fd                	addi	a1,a1,-1
		socketErr = 0;
    e884ae18:	cc02                	sw	zero,24(sp)
		socketErrSize = (socklen_t) sizeof( socketErr );
    e884ae1a:	ce3e                	sw	a5,28(sp)
		connectErr = getsockopt( inSock->nativeSock, SOL_SOCKET, SO_ERROR, (char *) &socketErr, &socketErrSize );
    e884ae1c:	2a03b0ef          	jal	ra,e88860bc <lwip_getsockopt>
    e884ae20:	ca2a                	sw	a0,20(sp)
		if( connectErr == 0 )	connectErr   = socketErr;
    e884ae22:	c529                	beqz	a0,e884ae6c <__CFSocketHandler+0x84>
		if( connectErr )		callbackData = &connectErr;
    e884ae24:	0854                	addi	a3,sp,20
		
		check( inSock->callbackTypes & kCFSocketConnectCallBack );
		inCallBackType = kCFSocketConnectCallBack;
		inSock->connecting = false;
    e884ae26:	00040a23          	sb	zero,20(s0)
		inCallBackType = kCFSocketConnectCallBack;
    e884ae2a:	4591                	li	a1,4
	{
		if( ( inCallBackType & kCFSocketReadCallBack ) && !( inSock->flags & kCFSocketAutomaticallyReenableReadCallBack ) )
		{
			inSock->callbackTypes &= ~( (CFOptionFlags) kCFSocketReadCallBack );
		}
		if( ( inCallBackType & kCFSocketWriteCallBack ) && !( inSock->flags & kCFSocketAutomaticallyReenableWriteCallBack ) )
    e884ae2c:	0085f793          	andi	a5,a1,8
    e884ae30:	4485                	li	s1,1
    e884ae32:	cb81                	beqz	a5,e884ae42 <__CFSocketHandler+0x5a>
    e884ae34:	4c1c                	lw	a5,24(s0)
    e884ae36:	45a1                	li	a1,8
    e884ae38:	8ba1                	andi	a5,a5,8
    e884ae3a:	e781                	bnez	a5,e884ae42 <__CFSocketHandler+0x5a>
		{
			inSock->callbackTypes &= ~( (CFOptionFlags) kCFSocketWriteCallBack );
    e884ae3c:	4c5c                	lw	a5,28(s0)
    e884ae3e:	9bdd                	andi	a5,a5,-9
    e884ae40:	cc5c                	sw	a5,28(s0)
		}
	}
	CFRunLoopUnlock();
    e884ae42:	00099517          	auipc	a0,0x99
    e884ae46:	d6e50513          	addi	a0,a0,-658 # e88e3bb0 <gCFRunLoopLock>
    e884ae4a:	e42e                	sd	a1,8(sp)
    e884ae4c:	e036                	sd	a3,0(sp)
    e884ae4e:	515300ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	if( call ) inSock->callback( inSock, inCallBackType, NULL, callbackData, inSock->context.info );
    e884ae52:	c881                	beqz	s1,e884ae62 <__CFSocketHandler+0x7a>
    e884ae54:	701c                	ld	a5,32(s0)
    e884ae56:	7818                	ld	a4,48(s0)
    e884ae58:	6682                	ld	a3,0(sp)
    e884ae5a:	65a2                	ld	a1,8(sp)
    e884ae5c:	4601                	li	a2,0
    e884ae5e:	8522                	mv	a0,s0
    e884ae60:	9782                	jalr	a5
}
    e884ae62:	70e2                	ld	ra,56(sp)
    e884ae64:	7422                	ld	s0,40(sp)
    e884ae66:	74c2                	ld	s1,48(sp)
    e884ae68:	6121                	addi	sp,sp,64
    e884ae6a:	8082                	ret
		if( connectErr == 0 )	connectErr   = socketErr;
    e884ae6c:	47e2                	lw	a5,24(sp)
    e884ae6e:	ca3e                	sw	a5,20(sp)
		if( connectErr )		callbackData = &connectErr;
    e884ae70:	fbd5                	bnez	a5,e884ae24 <__CFSocketHandler+0x3c>
	callbackData = NULL;
    e884ae72:	4681                	li	a3,0
    e884ae74:	bf4d                	j	e884ae26 <__CFSocketHandler+0x3e>
		call = ( ( inSock->callbackTypes & inCallBackType ) != 0 );
    e884ae76:	4c5c                	lw	a5,28(s0)
	callbackData = NULL;
    e884ae78:	4681                	li	a3,0
	if( call )
    e884ae7a:	00b7f733          	and	a4,a5,a1
    e884ae7e:	d371                	beqz	a4,e884ae42 <__CFSocketHandler+0x5a>
		if( ( inCallBackType & kCFSocketReadCallBack ) && !( inSock->flags & kCFSocketAutomaticallyReenableReadCallBack ) )
    e884ae80:	0015f713          	andi	a4,a1,1
    e884ae84:	d745                	beqz	a4,e884ae2c <__CFSocketHandler+0x44>
    e884ae86:	4c18                	lw	a4,24(s0)
    e884ae88:	8b05                	andi	a4,a4,1
    e884ae8a:	f34d                	bnez	a4,e884ae2c <__CFSocketHandler+0x44>
			inSock->callbackTypes &= ~( (CFOptionFlags) kCFSocketReadCallBack );
    e884ae8c:	9bf9                	andi	a5,a5,-2
    e884ae8e:	cc5c                	sw	a5,28(s0)
    e884ae90:	bf71                	j	e884ae2c <__CFSocketHandler+0x44>

00000000e884ae92 <CFRunLoopFinalize>:
{
    e884ae92:	1141                	addi	sp,sp,-16
	ForgetCF( &gCFRunLoopCurrent );
    e884ae94:	00099797          	auipc	a5,0x99
    e884ae98:	d1478793          	addi	a5,a5,-748 # e88e3ba8 <gCFRunLoopCurrent>
{
    e884ae9c:	e406                	sd	ra,8(sp)
	ForgetCF( &gCFRunLoopCurrent );
    e884ae9e:	6388                	ld	a0,0(a5)
    e884aea0:	c519                	beqz	a0,e884aeae <CFRunLoopFinalize+0x1c>
    e884aea2:	aa8fc0ef          	jal	ra,e884714a <CFRelease>
    e884aea6:	00099797          	auipc	a5,0x99
    e884aeaa:	d007b123          	sd	zero,-766(a5) # e88e3ba8 <gCFRunLoopCurrent>
	pthread_mutex_forget( &gCFRunLoopLockPtr );
    e884aeae:	00099797          	auipc	a5,0x99
    e884aeb2:	d0a78793          	addi	a5,a5,-758 # e88e3bb8 <gCFRunLoopLockPtr>
    e884aeb6:	6388                	ld	a0,0(a5)
    e884aeb8:	c519                	beqz	a0,e884aec6 <CFRunLoopFinalize+0x34>
    e884aeba:	41b300ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
    e884aebe:	00099797          	auipc	a5,0x99
    e884aec2:	ce07bd23          	sd	zero,-774(a5) # e88e3bb8 <gCFRunLoopLockPtr>
}
    e884aec6:	60a2                	ld	ra,8(sp)
    e884aec8:	4501                	li	a0,0
    e884aeca:	0141                	addi	sp,sp,16
    e884aecc:	8082                	ret

00000000e884aece <CFRunLoopEnsureInitialized>:
{
    e884aece:	711d                	addi	sp,sp,-96
	if( gCFRunLoopCurrent ) { err = kNoErr; goto exit; }
    e884aed0:	00099797          	auipc	a5,0x99
    e884aed4:	cd878793          	addi	a5,a5,-808 # e88e3ba8 <gCFRunLoopCurrent>
{
    e884aed8:	e8a2                	sd	s0,80(sp)
    e884aeda:	ec86                	sd	ra,88(sp)
    e884aedc:	e4a6                	sd	s1,72(sp)
    e884aede:	e0ca                	sd	s2,64(sp)
    e884aee0:	fc4e                	sd	s3,56(sp)
	if( gCFRunLoopCurrent ) { err = kNoErr; goto exit; }
    e884aee2:	6398                	ld	a4,0(a5)
    e884aee4:	4401                	li	s0,0
    e884aee6:	12071d63          	bnez	a4,e884b020 <CFRunLoopEnsureInitialized+0x152>
	err = pthread_mutex_init( &gCFRunLoopLock, NULL );
    e884aeea:	00099497          	auipc	s1,0x99
    e884aeee:	cc648493          	addi	s1,s1,-826 # e88e3bb0 <gCFRunLoopLock>
    e884aef2:	4581                	li	a1,0
    e884aef4:	8526                	mv	a0,s1
    e884aef6:	89be                	mv	s3,a5
    e884aef8:	383300ef          	jal	ra,e887ba7a <pthread_mutex_init>
    e884aefc:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e884aefe:	e50d                	bnez	a0,e884af28 <CFRunLoopEnsureInitialized+0x5a>
	gCFRunLoopTypeID = _CFRuntimeRegisterClass( &kCFRunLoopClass );
    e884af00:	00074517          	auipc	a0,0x74
    e884af04:	df850513          	addi	a0,a0,-520 # e88becf8 <kCFRunLoopClass>
	gCFRunLoopLockPtr = &gCFRunLoopLock;
    e884af08:	00099797          	auipc	a5,0x99
    e884af0c:	ca97b823          	sd	s1,-848(a5) # e88e3bb8 <gCFRunLoopLockPtr>
	gCFRunLoopTypeID = _CFRuntimeRegisterClass( &kCFRunLoopClass );
    e884af10:	83ffc0ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e884af14:	2501                	sext.w	a0,a0
    e884af16:	00099417          	auipc	s0,0x99
    e884af1a:	cb240413          	addi	s0,s0,-846 # e88e3bc8 <gCFRunLoopTypeID>
    e884af1e:	c008                	sw	a0,0(s0)
	require_action( gCFRunLoopTypeID != _kCFRuntimeNotATypeID, exit, err = kUnknownErr );
    e884af20:	e519                	bnez	a0,e884af2e <CFRunLoopEnsureInitialized+0x60>
    e884af22:	7479                	lui	s0,0xffffe
    e884af24:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( err ) CFRunLoopFinalize();
    e884af28:	f6bff0ef          	jal	ra,e884ae92 <CFRunLoopFinalize>
    e884af2c:	a8d5                	j	e884b020 <CFRunLoopEnsureInitialized+0x152>
	gCFRunLoopSourceTypeID = _CFRuntimeRegisterClass( &kCFRunLoopSourceClass );
    e884af2e:	00074517          	auipc	a0,0x74
    e884af32:	e2250513          	addi	a0,a0,-478 # e88bed50 <kCFRunLoopSourceClass>
    e884af36:	819fc0ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e884af3a:	2501                	sext.w	a0,a0
    e884af3c:	00099797          	auipc	a5,0x99
    e884af40:	c8a7a223          	sw	a0,-892(a5) # e88e3bc0 <gCFRunLoopSourceTypeID>
	require_action( gCFRunLoopSourceTypeID != _kCFRuntimeNotATypeID, exit, err = kUnknownErr );
    e884af44:	dd79                	beqz	a0,e884af22 <CFRunLoopEnsureInitialized+0x54>
	gCFRunLoopTimerTypeID = _CFRuntimeRegisterClass( &kCFRunLoopTimerClass );
    e884af46:	00074517          	auipc	a0,0x74
    e884af4a:	e6250513          	addi	a0,a0,-414 # e88beda8 <kCFRunLoopTimerClass>
    e884af4e:	801fc0ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e884af52:	2501                	sext.w	a0,a0
    e884af54:	00099797          	auipc	a5,0x99
    e884af58:	c6a7a823          	sw	a0,-912(a5) # e88e3bc4 <gCFRunLoopTimerTypeID>
	require_action( gCFRunLoopTimerTypeID != _kCFRuntimeNotATypeID, exit, err = kUnknownErr );
    e884af5c:	d179                	beqz	a0,e884af22 <CFRunLoopEnsureInitialized+0x54>
	rl = (CFRunLoopRef) _CFRuntimeCreateInstance( kCFAllocatorDefault, gCFRunLoopTypeID, (CFIndex) size, NULL );
    e884af5e:	400c                	lw	a1,0(s0)
    e884af60:	4681                	li	a3,0
    e884af62:	02000613          	li	a2,32
    e884af66:	4501                	li	a0,0
    e884af68:	80dfc0ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
    e884af6c:	892a                	mv	s2,a0
	require_action( rl, exit, err = kNoMemoryErr );
    e884af6e:	e509                	bnez	a0,e884af78 <CFRunLoopEnsureInitialized+0xaa>
    e884af70:	7479                	lui	s0,0xffffe
    e884af72:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884af76:	bf4d                	j	e884af28 <CFRunLoopEnsureInitialized+0x5a>
	memset( ( (uint8_t *) rl ) + sizeof( CFRuntimeBase ), 0, size );
    e884af78:	02000613          	li	a2,32
    e884af7c:	4581                	li	a1,0
    e884af7e:	0521                	addi	a0,a0,8
    e884af80:	414310ef          	jal	ra,e887c394 <eLIBs_memset>
	rl->commandSock = kInvalidSocketRef;
    e884af84:	57fd                	li	a5,-1
    e884af86:	00f92623          	sw	a5,12(s2)
	sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    e884af8a:	4645                	li	a2,17
    e884af8c:	4589                	li	a1,2
    e884af8e:	4509                	li	a0,2
    e884af90:	4913a0ef          	jal	ra,e8885c20 <lwip_socket>
    e884af94:	84aa                	mv	s1,a0
	err = map_socket_creation_errno( sock );
    e884af96:	00055f63          	bgez	a0,e884afb4 <CFRunLoopEnsureInitialized+0xe6>
    e884af9a:	00099797          	auipc	a5,0x99
    e884af9e:	68e78793          	addi	a5,a5,1678 # e88e4628 <lwip_errno>
    e884afa2:	4380                	lw	s0,0(a5)
    e884afa4:	e401                	bnez	s0,e884afac <CFRunLoopEnsureInitialized+0xde>
    e884afa6:	7479                	lui	s0,0xffffe
    e884afa8:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( rl ) CFRelease( rl );
    e884afac:	854a                	mv	a0,s2
    e884afae:	99cfc0ef          	jal	ra,e884714a <CFRelease>
	if( err ) CFRunLoopFinalize();
    e884afb2:	bf9d                	j	e884af28 <CFRunLoopEnsureInitialized+0x5a>
	memset( &sip.v4, 0, sizeof( sip.v4 ) );
    e884afb4:	4641                	li	a2,16
    e884afb6:	4581                	li	a1,0
    e884afb8:	0808                	addi	a0,sp,16
    e884afba:	3da310ef          	jal	ra,e887c394 <eLIBs_memset>
	sip.v4.sin_port			= 0;
    e884afbe:	00011923          	sh	zero,18(sp)
	sip.v4.sin_family		= AF_INET;
    e884afc2:	4789                	li	a5,2
	sip.v4.sin_addr.s_addr	= htonl( INADDR_LOOPBACK );
    e884afc4:	7f000537          	lui	a0,0x7f000
    e884afc8:	0505                	addi	a0,a0,1
	sip.v4.sin_family		= AF_INET;
    e884afca:	00f108a3          	sb	a5,17(sp)
	sip.v4.sin_addr.s_addr	= htonl( INADDR_LOOPBACK );
    e884afce:	7613b0ef          	jal	ra,e8886f2e <lwip_htonl>
    e884afd2:	ca2a                	sw	a0,20(sp)
	err = bind( sock, &sip.sa, sizeof( sip.v4 ) );
    e884afd4:	4641                	li	a2,16
    e884afd6:	080c                	addi	a1,sp,16
    e884afd8:	8526                	mv	a0,s1
    e884afda:	0e23a0ef          	jal	ra,e88850bc <lwip_bind>
	err = map_socket_noerr_errno( sock, err );
    e884afde:	cd11                	beqz	a0,e884affa <CFRunLoopEnsureInitialized+0x12c>
	err = map_socket_noerr_errno( sock, err );
    e884afe0:	00099797          	auipc	a5,0x99
    e884afe4:	64878793          	addi	a5,a5,1608 # e88e4628 <lwip_errno>
    e884afe8:	4380                	lw	s0,0(a5)
    e884afea:	e401                	bnez	s0,e884aff2 <CFRunLoopEnsureInitialized+0x124>
	err = map_socket_noerr_errno( sock, err );
    e884afec:	7479                	lui	s0,0xffffe
    e884afee:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	ForgetSocket( &sock );
    e884aff2:	8526                	mv	a0,s1
    e884aff4:	1ae3a0ef          	jal	ra,e88851a2 <lwip_close>
    e884aff8:	bf55                	j	e884afac <CFRunLoopEnsureInitialized+0xde>
	len = (socklen_t) sizeof( sip );
    e884affa:	47f1                	li	a5,28
	err = getsockname( sock, &sip.sa, &len );
    e884affc:	0070                	addi	a2,sp,12
    e884affe:	080c                	addi	a1,sp,16
    e884b000:	8526                	mv	a0,s1
	len = (socklen_t) sizeof( sip );
    e884b002:	c63e                	sw	a5,12(sp)
	err = getsockname( sock, &sip.sa, &len );
    e884b004:	0b23b0ef          	jal	ra,e88860b6 <lwip_getsockname>
	err = map_socket_noerr_errno( sock, err );
    e884b008:	fd61                	bnez	a0,e884afe0 <CFRunLoopEnsureInitialized+0x112>
	err = connect( sock, &sip.sa, len );
    e884b00a:	4632                	lw	a2,12(sp)
    e884b00c:	080c                	addi	a1,sp,16
    e884b00e:	8526                	mv	a0,s1
    e884b010:	3143a0ef          	jal	ra,e8885324 <lwip_connect>
    e884b014:	842a                	mv	s0,a0
	err = map_socket_noerr_errno( sock, err );
    e884b016:	f569                	bnez	a0,e884afe0 <CFRunLoopEnsureInitialized+0x112>
	rl->commandSock = sock;
    e884b018:	00992623          	sw	s1,12(s2)
	*outRL = rl;
    e884b01c:	0129b023          	sd	s2,0(s3)
}
    e884b020:	8522                	mv	a0,s0
    e884b022:	60e6                	ld	ra,88(sp)
    e884b024:	6446                	ld	s0,80(sp)
    e884b026:	64a6                	ld	s1,72(sp)
    e884b028:	6906                	ld	s2,64(sp)
    e884b02a:	79e2                	ld	s3,56(sp)
    e884b02c:	6125                	addi	sp,sp,96
    e884b02e:	8082                	ret

00000000e884b030 <CFRunLoopGetMain>:
    e884b030:	1141                	addi	sp,sp,-16
    e884b032:	e406                	sd	ra,8(sp)
    e884b034:	e9bff0ef          	jal	ra,e884aece <CFRunLoopEnsureInitialized>
    e884b038:	60a2                	ld	ra,8(sp)
    e884b03a:	00099797          	auipc	a5,0x99
    e884b03e:	b6e78793          	addi	a5,a5,-1170 # e88e3ba8 <gCFRunLoopCurrent>
    e884b042:	6388                	ld	a0,0(a5)
    e884b044:	0141                	addi	sp,sp,16
    e884b046:	8082                	ret

00000000e884b048 <CFRunLoopWakeUp>:
	n = send( inRL->commandSock, "w", 1, 0 );
    e884b048:	4548                	lw	a0,12(a0)
    e884b04a:	4681                	li	a3,0
    e884b04c:	4605                	li	a2,1
    e884b04e:	00086597          	auipc	a1,0x86
    e884b052:	e8258593          	addi	a1,a1,-382 # e88d0ed0 <memp_pools+0x6e0>
    e884b056:	33d3a06f          	j	e8885b92 <lwip_send>

00000000e884b05a <CFRunLoopAddSource>:
{
    e884b05a:	7179                	addi	sp,sp,-48
    e884b05c:	f026                	sd	s1,32(sp)
    e884b05e:	84aa                	mv	s1,a0
	CFRetain( inSource );
    e884b060:	852e                	mv	a0,a1
{
    e884b062:	f406                	sd	ra,40(sp)
    e884b064:	ec22                	sd	s0,24(sp)
    e884b066:	e432                	sd	a2,8(sp)
    e884b068:	842e                	mv	s0,a1
	CFRetain( inSource );
    e884b06a:	8dcfc0ef          	jal	ra,e8847146 <CFRetain>
	CFRunLoopLock();
    e884b06e:	00099517          	auipc	a0,0x99
    e884b072:	b4250513          	addi	a0,a0,-1214 # e88e3bb0 <gCFRunLoopLock>
    e884b076:	2a9300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		inSource->rl		= inRL;
    e884b07a:	ec04                	sd	s1,24(s0)
		inSource->next		= inRL->sourceList;
    e884b07c:	6c9c                	ld	a5,24(s1)
    e884b07e:	e41c                	sd	a5,8(s0)
		inRL->sourceList	= inSource;
    e884b080:	ec80                	sd	s0,24(s1)
		if( inSource->context.schedule ) inSource->context.schedule( inSource->context.info, inRL, inMode );
    e884b082:	6c3c                	ld	a5,88(s0)
    e884b084:	c789                	beqz	a5,e884b08e <CFRunLoopAddSource+0x34>
    e884b086:	6622                	ld	a2,8(sp)
    e884b088:	7408                	ld	a0,40(s0)
    e884b08a:	85a6                	mv	a1,s1
    e884b08c:	9782                	jalr	a5
}
    e884b08e:	6462                	ld	s0,24(sp)
    e884b090:	70a2                	ld	ra,40(sp)
    e884b092:	7482                	ld	s1,32(sp)
	CFRunLoopUnlock();
    e884b094:	00099517          	auipc	a0,0x99
    e884b098:	b1c50513          	addi	a0,a0,-1252 # e88e3bb0 <gCFRunLoopLock>
}
    e884b09c:	6145                	addi	sp,sp,48
	CFRunLoopUnlock();
    e884b09e:	2c53006f          	j	e887bb62 <pthread_mutex_unlock>

00000000e884b0a2 <CFRunLoopRemoveSource>:
{
    e884b0a2:	7179                	addi	sp,sp,-48
    e884b0a4:	f026                	sd	s1,32(sp)
    e884b0a6:	84aa                	mv	s1,a0
	CFRunLoopLock();
    e884b0a8:	00099517          	auipc	a0,0x99
    e884b0ac:	b0850513          	addi	a0,a0,-1272 # e88e3bb0 <gCFRunLoopLock>
{
    e884b0b0:	e42e                	sd	a1,8(sp)
    e884b0b2:	e032                	sd	a2,0(sp)
    e884b0b4:	f406                	sd	ra,40(sp)
    e884b0b6:	ec22                	sd	s0,24(sp)
	CFRunLoopLock();
    e884b0b8:	267300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( !inRL ) inRL = inSource->rl;
    e884b0bc:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e884b0c0:	e095                	bnez	s1,e884b0e4 <CFRunLoopRemoveSource+0x42>
    e884b0c2:	6d84                	ld	s1,24(a1)
	if( inRL )
    e884b0c4:	e085                	bnez	s1,e884b0e4 <CFRunLoopRemoveSource+0x42>
	curr = NULL;
    e884b0c6:	4401                	li	s0,0
	CFRunLoopUnlock();
    e884b0c8:	00099517          	auipc	a0,0x99
    e884b0cc:	ae850513          	addi	a0,a0,-1304 # e88e3bb0 <gCFRunLoopLock>
    e884b0d0:	293300ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	if( curr ) CFRelease( curr );
    e884b0d4:	c431                	beqz	s0,e884b120 <CFRunLoopRemoveSource+0x7e>
    e884b0d6:	8522                	mv	a0,s0
}
    e884b0d8:	6462                	ld	s0,24(sp)
    e884b0da:	70a2                	ld	ra,40(sp)
    e884b0dc:	7482                	ld	s1,32(sp)
    e884b0de:	6145                	addi	sp,sp,48
	if( curr ) CFRelease( curr );
    e884b0e0:	86afc06f          	j	e884714a <CFRelease>
		for( next = &inRL->signaledSourceList; ( curr = *next ) != NULL; next = &curr->nextSignaled )
    e884b0e4:	709c                	ld	a5,32(s1)
    e884b0e6:	02048713          	addi	a4,s1,32
    e884b0ea:	c789                	beqz	a5,e884b0f4 <CFRunLoopRemoveSource+0x52>
			if( curr == inSource )
    e884b0ec:	6b94                	ld	a3,16(a5)
    e884b0ee:	02f59163          	bne	a1,a5,e884b110 <CFRunLoopRemoveSource+0x6e>
				*next = curr->nextSignaled;
    e884b0f2:	e314                	sd	a3,0(a4)
		for( next = &inRL->sourceList; ( curr = *next ) != NULL; next = &curr->next )
    e884b0f4:	6c80                	ld	s0,24(s1)
    e884b0f6:	01848793          	addi	a5,s1,24
    e884b0fa:	d471                	beqz	s0,e884b0c6 <CFRunLoopRemoveSource+0x24>
			if( curr == inSource )
    e884b0fc:	6418                	ld	a4,8(s0)
    e884b0fe:	00859d63          	bne	a1,s0,e884b118 <CFRunLoopRemoveSource+0x76>
				*next = curr->next;
    e884b102:	e398                	sd	a4,0(a5)
				if( curr->context.cancel ) curr->context.cancel( curr->context.info, inRL, inMode );
    e884b104:	703c                	ld	a5,96(s0)
    e884b106:	d3e9                	beqz	a5,e884b0c8 <CFRunLoopRemoveSource+0x26>
    e884b108:	7408                	ld	a0,40(s0)
    e884b10a:	85a6                	mv	a1,s1
    e884b10c:	9782                	jalr	a5
    e884b10e:	bf6d                	j	e884b0c8 <CFRunLoopRemoveSource+0x26>
		for( next = &inRL->signaledSourceList; ( curr = *next ) != NULL; next = &curr->nextSignaled )
    e884b110:	01078713          	addi	a4,a5,16
    e884b114:	87b6                	mv	a5,a3
    e884b116:	bfd1                	j	e884b0ea <CFRunLoopRemoveSource+0x48>
		for( next = &inRL->sourceList; ( curr = *next ) != NULL; next = &curr->next )
    e884b118:	00840793          	addi	a5,s0,8
    e884b11c:	843a                	mv	s0,a4
    e884b11e:	bff1                	j	e884b0fa <CFRunLoopRemoveSource+0x58>
}
    e884b120:	70a2                	ld	ra,40(sp)
    e884b122:	6462                	ld	s0,24(sp)
    e884b124:	7482                	ld	s1,32(sp)
    e884b126:	6145                	addi	sp,sp,48
    e884b128:	8082                	ret

00000000e884b12a <__CFRunLoopSourceFree>:
	CFRunLoopRemoveSource( NULL, (CFRunLoopSourceRef) inObj, kCFRunLoopCommonModes );
    e884b12a:	0008a797          	auipc	a5,0x8a
    e884b12e:	bd678793          	addi	a5,a5,-1066 # e88d4d00 <kCFRunLoopCommonModes>
    e884b132:	6390                	ld	a2,0(a5)
    e884b134:	85aa                	mv	a1,a0
    e884b136:	4501                	li	a0,0
    e884b138:	f6bff06f          	j	e884b0a2 <CFRunLoopRemoveSource>

00000000e884b13c <CFRunLoopRemoveTimer>:
{
    e884b13c:	1101                	addi	sp,sp,-32
    e884b13e:	e822                	sd	s0,16(sp)
    e884b140:	842a                	mv	s0,a0
	CFRunLoopLock();
    e884b142:	00099517          	auipc	a0,0x99
    e884b146:	a6e50513          	addi	a0,a0,-1426 # e88e3bb0 <gCFRunLoopLock>
{
    e884b14a:	e42e                	sd	a1,8(sp)
    e884b14c:	ec06                	sd	ra,24(sp)
	CFRunLoopLock();
    e884b14e:	1d1300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( !inRL ) inRL = inTimer->rl;
    e884b152:	65a2                	ld	a1,8(sp)
    e884b154:	e019                	bnez	s0,e884b15a <CFRunLoopRemoveTimer+0x1e>
    e884b156:	6980                	ld	s0,16(a1)
	if( inRL )
    e884b158:	c819                	beqz	s0,e884b16e <CFRunLoopRemoveTimer+0x32>
		for( next = &inRL->timerList; ( curr = *next ) != NULL; next = &curr->next )
    e884b15a:	01040793          	addi	a5,s0,16
    e884b15e:	6800                	ld	s0,16(s0)
    e884b160:	c419                	beqz	s0,e884b16e <CFRunLoopRemoveTimer+0x32>
			if( curr == inTimer )
    e884b162:	6418                	ld	a4,8(s0)
    e884b164:	02859263          	bne	a1,s0,e884b188 <CFRunLoopRemoveTimer+0x4c>
				*next = curr->next;
    e884b168:	e398                	sd	a4,0(a5)
				curr->rl = NULL;
    e884b16a:	00043823          	sd	zero,16(s0)
	CFRunLoopUnlock();
    e884b16e:	00099517          	auipc	a0,0x99
    e884b172:	a4250513          	addi	a0,a0,-1470 # e88e3bb0 <gCFRunLoopLock>
    e884b176:	1ed300ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	if( curr ) CFRelease( curr );
    e884b17a:	c819                	beqz	s0,e884b190 <CFRunLoopRemoveTimer+0x54>
    e884b17c:	8522                	mv	a0,s0
}
    e884b17e:	6442                	ld	s0,16(sp)
    e884b180:	60e2                	ld	ra,24(sp)
    e884b182:	6105                	addi	sp,sp,32
	if( curr ) CFRelease( curr );
    e884b184:	fc7fb06f          	j	e884714a <CFRelease>
		for( next = &inRL->timerList; ( curr = *next ) != NULL; next = &curr->next )
    e884b188:	00840793          	addi	a5,s0,8
    e884b18c:	843a                	mv	s0,a4
    e884b18e:	bfc9                	j	e884b160 <CFRunLoopRemoveTimer+0x24>
}
    e884b190:	60e2                	ld	ra,24(sp)
    e884b192:	6442                	ld	s0,16(sp)
    e884b194:	6105                	addi	sp,sp,32
    e884b196:	8082                	ret

00000000e884b198 <__CFRunLoopTimerFree>:
	CFRunLoopRemoveTimer( NULL, (CFRunLoopTimerRef) inObj, kCFRunLoopCommonModes );
    e884b198:	0008a797          	auipc	a5,0x8a
    e884b19c:	b6878793          	addi	a5,a5,-1176 # e88d4d00 <kCFRunLoopCommonModes>
    e884b1a0:	6390                	ld	a2,0(a5)
    e884b1a2:	85aa                	mv	a1,a0
    e884b1a4:	4501                	li	a0,0
    e884b1a6:	f97ff06f          	j	e884b13c <CFRunLoopRemoveTimer>

00000000e884b1aa <CFRunLoopSourceCreate>:
{
    e884b1aa:	1101                	addi	sp,sp,-32
    e884b1ac:	ec06                	sd	ra,24(sp)
    e884b1ae:	e422                	sd	s0,8(sp)
    e884b1b0:	e826                	sd	s1,16(sp)
    e884b1b2:	842a                	mv	s0,a0
    e884b1b4:	84b2                	mv	s1,a2
	CFRunLoopEnsureInitialized();
    e884b1b6:	d19ff0ef          	jal	ra,e884aece <CFRunLoopEnsureInitialized>
	obj = (CFRunLoopSourceRef) _CFRuntimeCreateInstance( inAllocator, CFRunLoopSourceGetTypeID(), (CFIndex) size, NULL );
    e884b1ba:	00099797          	auipc	a5,0x99
    e884b1be:	a0678793          	addi	a5,a5,-1530 # e88e3bc0 <gCFRunLoopSourceTypeID>
    e884b1c2:	438c                	lw	a1,0(a5)
    e884b1c4:	8522                	mv	a0,s0
    e884b1c6:	4681                	li	a3,0
    e884b1c8:	07000613          	li	a2,112
    e884b1cc:	da8fc0ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
    e884b1d0:	842a                	mv	s0,a0
	require( obj, exit );
    e884b1d2:	c10d                	beqz	a0,e884b1f4 <CFRunLoopSourceCreate+0x4a>
	memset( ( (uint8_t *) obj ) + sizeof( CFRuntimeBase ), 0, size );
    e884b1d4:	07000613          	li	a2,112
    e884b1d8:	4581                	li	a1,0
    e884b1da:	0521                	addi	a0,a0,8
    e884b1dc:	1b8310ef          	jal	ra,e887c394 <eLIBs_memset>
	obj->context	= *inContext;
    e884b1e0:	05000613          	li	a2,80
    e884b1e4:	85a6                	mv	a1,s1
    e884b1e6:	02040513          	addi	a0,s0,32
    e884b1ea:	e7fb40ef          	jal	ra,e8800068 <memcpy>
	obj->type		= kCFRunLoopSourceType_Generic;
    e884b1ee:	4785                	li	a5,1
    e884b1f0:	06f40823          	sb	a5,112(s0)
}
    e884b1f4:	8522                	mv	a0,s0
    e884b1f6:	60e2                	ld	ra,24(sp)
    e884b1f8:	6422                	ld	s0,8(sp)
    e884b1fa:	64c2                	ld	s1,16(sp)
    e884b1fc:	6105                	addi	sp,sp,32
    e884b1fe:	8082                	ret

00000000e884b200 <CFRunLoopSourceInvalidate>:
	CFRunLoopRemoveSource( NULL, inSource, kCFRunLoopCommonModes );
    e884b200:	0008a797          	auipc	a5,0x8a
    e884b204:	b0078793          	addi	a5,a5,-1280 # e88d4d00 <kCFRunLoopCommonModes>
    e884b208:	6390                	ld	a2,0(a5)
    e884b20a:	85aa                	mv	a1,a0
    e884b20c:	4501                	li	a0,0
    e884b20e:	e95ff06f          	j	e884b0a2 <CFRunLoopRemoveSource>

00000000e884b212 <CFRunLoopSourceSignal>:
{
    e884b212:	1101                	addi	sp,sp,-32
    e884b214:	e422                	sd	s0,8(sp)
    e884b216:	842a                	mv	s0,a0
	CFRunLoopLock();
    e884b218:	00099517          	auipc	a0,0x99
    e884b21c:	99850513          	addi	a0,a0,-1640 # e88e3bb0 <gCFRunLoopLock>
{
    e884b220:	ec06                	sd	ra,24(sp)
    e884b222:	e826                	sd	s1,16(sp)
	CFRunLoopLock();
    e884b224:	0fb300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( inSource->context.perform )
    e884b228:	743c                	ld	a5,104(s0)
    e884b22a:	c38d                	beqz	a5,e884b24c <CFRunLoopSourceSignal+0x3a>
		rl = inSource->rl;
    e884b22c:	6c04                	ld	s1,24(s0)
		for( next = &rl->signaledSourceList; ( curr = *next ) != NULL; next = &curr->nextSignaled )
    e884b22e:	709c                	ld	a5,32(s1)
    e884b230:	02048713          	addi	a4,s1,32
    e884b234:	e791                	bnez	a5,e884b240 <CFRunLoopSourceSignal+0x2e>
			inSource->nextSignaled = NULL;
    e884b236:	00043823          	sd	zero,16(s0)
			*next = inSource;
    e884b23a:	e300                	sd	s0,0(a4)
			wakeup = true;
    e884b23c:	4405                	li	s0,1
    e884b23e:	a809                	j	e884b250 <CFRunLoopSourceSignal+0x3e>
			if( curr == inSource )
    e884b240:	00f40763          	beq	s0,a5,e884b24e <CFRunLoopSourceSignal+0x3c>
		for( next = &rl->signaledSourceList; ( curr = *next ) != NULL; next = &curr->nextSignaled )
    e884b244:	01078713          	addi	a4,a5,16
    e884b248:	6b9c                	ld	a5,16(a5)
    e884b24a:	b7ed                	j	e884b234 <CFRunLoopSourceSignal+0x22>
	rl = NULL;
    e884b24c:	4481                	li	s1,0
	wakeup = false;
    e884b24e:	4401                	li	s0,0
	CFRunLoopUnlock();
    e884b250:	00099517          	auipc	a0,0x99
    e884b254:	96050513          	addi	a0,a0,-1696 # e88e3bb0 <gCFRunLoopLock>
    e884b258:	10b300ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	if( wakeup ) CFRunLoopWakeUp( rl );
    e884b25c:	c801                	beqz	s0,e884b26c <CFRunLoopSourceSignal+0x5a>
}
    e884b25e:	6422                	ld	s0,8(sp)
    e884b260:	60e2                	ld	ra,24(sp)
	if( wakeup ) CFRunLoopWakeUp( rl );
    e884b262:	8526                	mv	a0,s1
}
    e884b264:	64c2                	ld	s1,16(sp)
    e884b266:	6105                	addi	sp,sp,32
	if( wakeup ) CFRunLoopWakeUp( rl );
    e884b268:	de1ff06f          	j	e884b048 <CFRunLoopWakeUp>
}
    e884b26c:	60e2                	ld	ra,24(sp)
    e884b26e:	6422                	ld	s0,8(sp)
    e884b270:	64c2                	ld	s1,16(sp)
    e884b272:	6105                	addi	sp,sp,32
    e884b274:	8082                	ret

00000000e884b276 <CFAbsoluteTimeGetCurrent>:
{
    e884b276:	1141                	addi	sp,sp,-16
	if( !sInitialized )
    e884b278:	00099797          	auipc	a5,0x99
    e884b27c:	95478793          	addi	a5,a5,-1708 # e88e3bcc <sInitialized.9171>
{
    e884b280:	e022                	sd	s0,0(sp)
    e884b282:	e406                	sd	ra,8(sp)
	if( !sInitialized )
    e884b284:	0007c703          	lbu	a4,0(a5)
    e884b288:	00099417          	auipc	s0,0x99
    e884b28c:	94840413          	addi	s0,s0,-1720 # e88e3bd0 <sUpTicksToSecondsMultiplier.9172>
    e884b290:	eb09                	bnez	a4,e884b2a2 <CFAbsoluteTimeGetCurrent+0x2c>
		sUpTicksToSecondsMultiplier = 1.0 / UpTicksPerSecond();
    e884b292:	00074717          	auipc	a4,0x74
    e884b296:	96e73787          	fld	fa5,-1682(a4) # e88bec00 <__PRETTY_FUNCTION__.8745+0x18>
    e884b29a:	a01c                	fsd	fa5,0(s0)
		sInitialized = true;
    e884b29c:	4705                	li	a4,1
    e884b29e:	00e78023          	sb	a4,0(a5)
	return( ( (double) UpTicks() ) * sUpTicksToSecondsMultiplier );
    e884b2a2:	723150ef          	jal	ra,e88611c4 <UpTicks>
    e884b2a6:	d2357553          	fcvt.d.lu	fa0,a0
    e884b2aa:	201c                	fld	fa5,0(s0)
}
    e884b2ac:	60a2                	ld	ra,8(sp)
    e884b2ae:	6402                	ld	s0,0(sp)
    e884b2b0:	12f57553          	fmul.d	fa0,fa0,fa5
    e884b2b4:	0141                	addi	sp,sp,16
    e884b2b6:	8082                	ret

00000000e884b2b8 <CFRunLoopTimerInvalidate>:
	CFRunLoopRemoveTimer( NULL, inTimer, kCFRunLoopCommonModes );
    e884b2b8:	0008a797          	auipc	a5,0x8a
    e884b2bc:	a4878793          	addi	a5,a5,-1464 # e88d4d00 <kCFRunLoopCommonModes>
    e884b2c0:	6390                	ld	a2,0(a5)
    e884b2c2:	85aa                	mv	a1,a0
    e884b2c4:	4501                	li	a0,0
    e884b2c6:	e77ff06f          	j	e884b13c <CFRunLoopRemoveTimer>

00000000e884b2ca <__CFRunLoopFree>:
{
    e884b2ca:	1101                	addi	sp,sp,-32
    e884b2cc:	e422                	sd	s0,8(sp)
    e884b2ce:	ec06                	sd	ra,24(sp)
    e884b2d0:	e826                	sd	s1,16(sp)
    e884b2d2:	842a                	mv	s0,a0
	while( ( timer = rl->timerList ) != NULL )
    e884b2d4:	6804                	ld	s1,16(s0)
    e884b2d6:	ec99                	bnez	s1,e884b2f4 <__CFRunLoopFree+0x2a>
	while( ( source = rl->sourceList ) != NULL )
    e884b2d8:	6c04                	ld	s1,24(s0)
    e884b2da:	e495                	bnez	s1,e884b306 <__CFRunLoopFree+0x3c>
	ForgetSocket( &rl->commandSock );
    e884b2dc:	4448                	lw	a0,12(s0)
    e884b2de:	00054663          	bltz	a0,e884b2ea <__CFRunLoopFree+0x20>
    e884b2e2:	6c1390ef          	jal	ra,e88851a2 <lwip_close>
    e884b2e6:	57fd                	li	a5,-1
    e884b2e8:	c45c                	sw	a5,12(s0)
}
    e884b2ea:	60e2                	ld	ra,24(sp)
    e884b2ec:	6422                	ld	s0,8(sp)
    e884b2ee:	64c2                	ld	s1,16(sp)
    e884b2f0:	6105                	addi	sp,sp,32
    e884b2f2:	8082                	ret
		rl->timerList = timer->next;
    e884b2f4:	649c                	ld	a5,8(s1)
		CFRunLoopTimerInvalidate( timer );
    e884b2f6:	8526                	mv	a0,s1
		rl->timerList = timer->next;
    e884b2f8:	e81c                	sd	a5,16(s0)
		CFRunLoopTimerInvalidate( timer );
    e884b2fa:	fbfff0ef          	jal	ra,e884b2b8 <CFRunLoopTimerInvalidate>
		CFRelease( timer );
    e884b2fe:	8526                	mv	a0,s1
    e884b300:	e4bfb0ef          	jal	ra,e884714a <CFRelease>
    e884b304:	bfc1                	j	e884b2d4 <__CFRunLoopFree+0xa>
		rl->sourceList = source->next;
    e884b306:	649c                	ld	a5,8(s1)
		CFRunLoopSourceInvalidate( source );
    e884b308:	8526                	mv	a0,s1
		rl->sourceList = source->next;
    e884b30a:	ec1c                	sd	a5,24(s0)
		CFRunLoopSourceInvalidate( source );
    e884b30c:	ef5ff0ef          	jal	ra,e884b200 <CFRunLoopSourceInvalidate>
		CFRelease( source );
    e884b310:	8526                	mv	a0,s1
    e884b312:	e39fb0ef          	jal	ra,e884714a <CFRelease>
    e884b316:	b7c9                	j	e884b2d8 <__CFRunLoopFree+0xe>

00000000e884b318 <__CFRunLoopRunOne>:
{
    e884b318:	7135                	addi	sp,sp,-160
    e884b31a:	e922                	sd	s0,144(sp)
    e884b31c:	fcce                	sd	s3,120(sp)
    e884b31e:	f4d6                	sd	s5,104(sp)
    e884b320:	e42e                	sd	a1,8(sp)
    e884b322:	ed06                	sd	ra,152(sp)
    e884b324:	e526                	sd	s1,136(sp)
    e884b326:	e14a                	sd	s2,128(sp)
    e884b328:	f8d2                	sd	s4,112(sp)
    e884b32a:	f0da                	sd	s6,96(sp)
    e884b32c:	ecde                	sd	s7,88(sp)
    e884b32e:	e8e2                	sd	s8,80(sp)
    e884b330:	e4e6                	sd	s9,72(sp)
    e884b332:	e0ea                	sd	s10,64(sp)
    e884b334:	fc6e                	sd	s11,56(sp)
    e884b336:	89aa                	mv	s3,a0
    e884b338:	8ab2                	mv	s5,a2
	nowTicks = UpTicks();
    e884b33a:	68b150ef          	jal	ra,e88611c4 <UpTicks>
	if( inTimeout )
    e884b33e:	547d                	li	s0,-1
    e884b340:	65a2                	ld	a1,8(sp)
    e884b342:	c195                	beqz	a1,e884b366 <__CFRunLoopRunOne+0x4e>
		timeoutTicks += ( ( ( (uint32_t) inTimeout->tv_usec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884b344:	6580                	ld	s0,8(a1)
    e884b346:	000f47b7          	lui	a5,0xf4
    e884b34a:	2407879b          	addiw	a5,a5,576
    e884b34e:	02f4043b          	mulw	s0,s0,a5
    e884b352:	3e800793          	li	a5,1000
		timeoutTicks +=   ( ( (uint64_t) inTimeout->tv_sec )  * ticksPerSec );
    e884b356:	6198                	ld	a4,0(a1)
		timeoutTicks += ( ( ( (uint32_t) inTimeout->tv_usec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884b358:	7c04340b          	extu	s0,s0,31,0
    e884b35c:	02f45433          	divu	s0,s0,a5
    e884b360:	20e7940b          	mula	s0,a5,a4
    e884b364:	942a                	add	s0,s0,a0
			timeout.tv_usec	= (int32_t)( ( ( deltaTicks % ticksPerSec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884b366:	000f4b37          	lui	s6,0xf4
		FD_SET( inRL->commandSock, &readSet );
    e884b36a:	03100a13          	li	s4,49
			timeout.tv_usec	= (int32_t)( ( ( deltaTicks % ticksPerSec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884b36e:	240b0b13          	addi	s6,s6,576 # f4240 <memcmp-0xe870bdc0>
		FD_ZERO( &readSet );
    e884b372:	461d                	li	a2,7
    e884b374:	4581                	li	a1,0
    e884b376:	0808                	addi	a0,sp,16
    e884b378:	01c310ef          	jal	ra,e887c394 <eLIBs_memset>
		FD_ZERO( &writeSet );
    e884b37c:	01810d13          	addi	s10,sp,24
    e884b380:	461d                	li	a2,7
    e884b382:	4581                	li	a1,0
    e884b384:	856a                	mv	a0,s10
    e884b386:	00e310ef          	jal	ra,e887c394 <eLIBs_memset>
		FD_SET( inRL->commandSock, &readSet );
    e884b38a:	00c9a483          	lw	s1,12(s3)
    e884b38e:	029a6163          	bltu	s4,s1,e884b3b0 <__CFRunLoopRunOne+0x98>
    e884b392:	4034d693          	srai	a3,s1,0x3
    e884b396:	4705                	li	a4,1
    e884b398:	0074f793          	andi	a5,s1,7
    e884b39c:	00f717bb          	sllw	a5,a4,a5
    e884b3a0:	8736                	mv	a4,a3
    e884b3a2:	0814                	addi	a3,sp,16
    e884b3a4:	80e6c68b          	lrbu	a3,a3,a4,0
    e884b3a8:	8fd5                	or	a5,a5,a3
    e884b3aa:	0814                	addi	a3,sp,16
    e884b3ac:	00e6d78b          	srb	a5,a3,a4,0
		for( rls = inRL->sourceList; rls; rls = rls->next )
    e884b3b0:	0189b703          	ld	a4,24(s3)
			if( rls->type == kCFRunLoopSourceType_Socket )
    e884b3b4:	4889                	li	a7,2
					FD_SET( sock->nativeSock, &writeSet );
    e884b3b6:	4805                	li	a6,1
		for( rls = inRL->sourceList; rls; rls = rls->next )
    e884b3b8:	e755                	bnez	a4,e884b464 <__CFRunLoopRunOne+0x14c>
		timer = inRL->timerList;
    e884b3ba:	0109b783          	ld	a5,16(s3)
		nearestTicks = ( timer && ( timer->expireTicks < timeoutTicks ) ) ? timer->expireTicks : timeoutTicks;
    e884b3be:	8ca2                	mv	s9,s0
    e884b3c0:	c799                	beqz	a5,e884b3ce <__CFRunLoopRunOne+0xb6>
    e884b3c2:	0187bc83          	ld	s9,24(a5) # f4018 <memcmp-0xe870bfe8>
    e884b3c6:	019437b3          	sltu	a5,s0,s9
    e884b3ca:	42f41c8b          	mvnez	s9,s0,a5
		err = __CFRunLoopSelect( maxFD + 1, &readSet, &writeSet, nearestTicks );
    e884b3ce:	2485                	addiw	s1,s1,1
		if( inTimeoutTicks == kUpTicksForever )
    e884b3d0:	5bfd                	li	s7,-1
			timeout.tv_sec	= (int32_t)(     deltaTicks / ticksPerSec );
    e884b3d2:	3e800d93          	li	s11,1000
		err = global_value_errno( n );
    e884b3d6:	00099c17          	auipc	s8,0x99
    e884b3da:	252c0c13          	addi	s8,s8,594 # e88e4628 <lwip_errno>
		nowTicks = UpTicks();
    e884b3de:	5e7150ef          	jal	ra,e88611c4 <UpTicks>
			timeoutPtr = NULL;
    e884b3e2:	4701                	li	a4,0
		if( inTimeoutTicks == kUpTicksForever )
    e884b3e4:	017c8763          	beq	s9,s7,e884b3f2 <__CFRunLoopRunOne+0xda>
		else if( nowTicks >= inTimeoutTicks )
    e884b3e8:	11956063          	bltu	a0,s9,e884b4e8 <__CFRunLoopRunOne+0x1d0>
			timeout.tv_sec	= 0;
    e884b3ec:	f002                	sd	zero,32(sp)
			timeout.tv_usec	= 0;
    e884b3ee:	f402                	sd	zero,40(sp)
			timeoutPtr		= &timeout;
    e884b3f0:	1018                	addi	a4,sp,32
		n = select( inMaxFD, inReadSet, inWriteSet, NULL, timeoutPtr );
    e884b3f2:	4681                	li	a3,0
    e884b3f4:	866a                	mv	a2,s10
    e884b3f6:	080c                	addi	a1,sp,16
    e884b3f8:	8526                	mv	a0,s1
    e884b3fa:	1333a0ef          	jal	ra,e8885d2c <lwip_select>
		if( n  > 0 ) { err = kNoErr;	break; }
    e884b3fe:	1aa04963          	bgtz	a0,e884b5b0 <__CFRunLoopRunOne+0x298>
		if( n == 0 ) { err = ETIMEDOUT;	break; }
    e884b402:	12050163          	beqz	a0,e884b524 <__CFRunLoopRunOne+0x20c>
		err = global_value_errno( n );
    e884b406:	000c2903          	lw	s2,0(s8)
    e884b40a:	24090663          	beqz	s2,e884b656 <__CFRunLoopRunOne+0x33e>
	}	while( err == EINTR );
    e884b40e:	4791                	li	a5,4
    e884b410:	fcf907e3          	beq	s2,a5,e884b3de <__CFRunLoopRunOne+0xc6>
		else if( err != ETIMEDOUT )
    e884b414:	07400793          	li	a5,116
    e884b418:	10f90663          	beq	s2,a5,e884b524 <__CFRunLoopRunOne+0x20c>
			dlogassert( "select() error: %#m", err );
    e884b41c:	88ca                	mv	a7,s2
    e884b41e:	00073817          	auipc	a6,0x73
    e884b422:	7ea80813          	addi	a6,a6,2026 # e88bec08 <__PRETTY_FUNCTION__.8745+0x20>
    e884b426:	00074797          	auipc	a5,0x74
    e884b42a:	8ba78793          	addi	a5,a5,-1862 # e88bece0 <__PRETTY_FUNCTION__.9058>
    e884b42e:	23200713          	li	a4,562
    e884b432:	00073697          	auipc	a3,0x73
    e884b436:	7ee68693          	addi	a3,a3,2030 # e88bec20 <__PRETTY_FUNCTION__.8745+0x38>
    e884b43a:	4601                	li	a2,0
    e884b43c:	4581                	li	a1,0
    e884b43e:	4501                	li	a0,0
    e884b440:	789020ef          	jal	ra,e884e3c8 <DebugPrintAssert>
}
    e884b444:	60ea                	ld	ra,152(sp)
    e884b446:	644a                	ld	s0,144(sp)
    e884b448:	854a                	mv	a0,s2
    e884b44a:	64aa                	ld	s1,136(sp)
    e884b44c:	690a                	ld	s2,128(sp)
    e884b44e:	79e6                	ld	s3,120(sp)
    e884b450:	7a46                	ld	s4,112(sp)
    e884b452:	7aa6                	ld	s5,104(sp)
    e884b454:	7b06                	ld	s6,96(sp)
    e884b456:	6be6                	ld	s7,88(sp)
    e884b458:	6c46                	ld	s8,80(sp)
    e884b45a:	6ca6                	ld	s9,72(sp)
    e884b45c:	6d06                	ld	s10,64(sp)
    e884b45e:	7de2                	ld	s11,56(sp)
    e884b460:	610d                	addi	sp,sp,160
    e884b462:	8082                	ret
			if( rls->type == kCFRunLoopSourceType_Socket )
    e884b464:	07074783          	lbu	a5,112(a4)
    e884b468:	07179e63          	bne	a5,a7,e884b4e4 <__CFRunLoopRunOne+0x1cc>
				sock = (CFSocketRef) rls->context.info;
    e884b46c:	7714                	ld	a3,40(a4)
				if(   ( sock->callbackTypes & kCFSocketReadCallBack ) ||
    e884b46e:	4edc                	lw	a5,28(a3)
    e884b470:	0017f613          	andi	a2,a5,1
    e884b474:	e619                	bnez	a2,e884b482 <__CFRunLoopRunOne+0x16a>
					( ( sock->callbackTypes & kCFSocketConnectCallBack ) && sock->connecting ) )
    e884b476:	0047f613          	andi	a2,a5,4
				if(   ( sock->callbackTypes & kCFSocketReadCallBack ) ||
    e884b47a:	ca1d                	beqz	a2,e884b4b0 <__CFRunLoopRunOne+0x198>
					( ( sock->callbackTypes & kCFSocketConnectCallBack ) && sock->connecting ) )
    e884b47c:	0146c603          	lbu	a2,20(a3)
    e884b480:	ca05                	beqz	a2,e884b4b0 <__CFRunLoopRunOne+0x198>
					FD_SET( sock->nativeSock, &readSet );
    e884b482:	4a90                	lw	a2,16(a3)
    e884b484:	02ca6263          	bltu	s4,a2,e884b4a8 <__CFRunLoopRunOne+0x190>
    e884b488:	40365513          	srai	a0,a2,0x3
    e884b48c:	01010313          	addi	t1,sp,16
    e884b490:	80a3430b          	lrbu	t1,t1,a0,0
    e884b494:	00767593          	andi	a1,a2,7
    e884b498:	00b815bb          	sllw	a1,a6,a1
    e884b49c:	0065e5b3          	or	a1,a1,t1
    e884b4a0:	01010313          	addi	t1,sp,16
    e884b4a4:	00a3558b          	srb	a1,t1,a0,0
					if( sock->nativeSock > maxFD ) maxFD = sock->nativeSock;
    e884b4a8:	009625b3          	slt	a1,a2,s1
    e884b4ac:	40b6148b          	mveqz	s1,a2,a1
				if(   ( sock->callbackTypes & kCFSocketWriteCallBack ) ||
    e884b4b0:	0087f613          	andi	a2,a5,8
    e884b4b4:	e611                	bnez	a2,e884b4c0 <__CFRunLoopRunOne+0x1a8>
					( ( sock->callbackTypes & kCFSocketConnectCallBack ) && sock->connecting ) )
    e884b4b6:	8b91                	andi	a5,a5,4
				if(   ( sock->callbackTypes & kCFSocketWriteCallBack ) ||
    e884b4b8:	c795                	beqz	a5,e884b4e4 <__CFRunLoopRunOne+0x1cc>
					( ( sock->callbackTypes & kCFSocketConnectCallBack ) && sock->connecting ) )
    e884b4ba:	0146c783          	lbu	a5,20(a3)
    e884b4be:	c39d                	beqz	a5,e884b4e4 <__CFRunLoopRunOne+0x1cc>
					FD_SET( sock->nativeSock, &writeSet );
    e884b4c0:	4a9c                	lw	a5,16(a3)
    e884b4c2:	00fa6d63          	bltu	s4,a5,e884b4dc <__CFRunLoopRunOne+0x1c4>
    e884b4c6:	4037d613          	srai	a2,a5,0x3
    e884b4ca:	80cd458b          	lrbu	a1,s10,a2,0
    e884b4ce:	0077f693          	andi	a3,a5,7
    e884b4d2:	00d816bb          	sllw	a3,a6,a3
    e884b4d6:	8ecd                	or	a3,a3,a1
    e884b4d8:	00cd568b          	srb	a3,s10,a2,0
					if( sock->nativeSock > maxFD ) maxFD = sock->nativeSock;
    e884b4dc:	0097a6b3          	slt	a3,a5,s1
    e884b4e0:	40d7948b          	mveqz	s1,a5,a3
		for( rls = inRL->sourceList; rls; rls = rls->next )
    e884b4e4:	6718                	ld	a4,8(a4)
    e884b4e6:	bdc9                	j	e884b3b8 <__CFRunLoopRunOne+0xa0>
			deltaTicks		= inTimeoutTicks - nowTicks;
    e884b4e8:	40ac8533          	sub	a0,s9,a0
			timeout.tv_sec	= (int32_t)(     deltaTicks / ticksPerSec );
    e884b4ec:	03b557b3          	divu	a5,a0,s11
			timeout.tv_usec	= (int32_t)( ( ( deltaTicks % ticksPerSec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884b4f0:	03b57533          	remu	a0,a0,s11
			timeout.tv_sec	= (int32_t)(     deltaTicks / ticksPerSec );
    e884b4f4:	2781                	sext.w	a5,a5
    e884b4f6:	f03e                	sd	a5,32(sp)
			timeout.tv_usec	= (int32_t)( ( ( deltaTicks % ticksPerSec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884b4f8:	03650533          	mul	a0,a0,s6
    e884b4fc:	03b55533          	divu	a0,a0,s11
    e884b500:	f42a                	sd	a0,40(sp)
    e884b502:	b5fd                	j	e884b3f0 <__CFRunLoopRunOne+0xd8>
			if( FD_ISSET( inRL->commandSock, &readSet ) )
    e884b504:	0818                	addi	a4,sp,16
    e884b506:	40355793          	srai	a5,a0,0x3
    e884b50a:	80f7478b          	lrbu	a5,a4,a5,0
    e884b50e:	00757713          	andi	a4,a0,7
    e884b512:	40e7d7bb          	sraw	a5,a5,a4
    e884b516:	8b85                	andi	a5,a5,1
    e884b518:	c3c5                	beqz	a5,e884b5b8 <__CFRunLoopRunOne+0x2a0>
	n = recv( inRL->commandSock, &cmd, 1, 0 );
    e884b51a:	4681                	li	a3,0
    e884b51c:	4605                	li	a2,1
    e884b51e:	100c                	addi	a1,sp,32
    e884b520:	05e3a0ef          	jal	ra,e888557e <lwip_recv>
		sourceHandled = false;
    e884b524:	4901                	li	s2,0
    e884b526:	a0d9                	j	e884b5ec <__CFRunLoopRunOne+0x2d4>
						if( FD_ISSET( sock->nativeSock, &writeSet ) )
    e884b528:	80cd468b          	lrbu	a3,s10,a2,0
    e884b52c:	40f6d7bb          	sraw	a5,a3,a5
    e884b530:	8b85                	andi	a5,a5,1
    e884b532:	c399                	beqz	a5,e884b538 <__CFRunLoopRunOne+0x220>
							__CFSocketHandler( sock, kCFSocketWriteCallBack );
    e884b534:	45a1                	li	a1,8
    e884b536:	a845                	j	e884b5e6 <__CFRunLoopRunOne+0x2ce>
				for( rls = inRL->sourceList; rls; rls = rls->next )
    e884b538:	6718                	ld	a4,8(a4)
    e884b53a:	a051                	j	e884b5be <__CFRunLoopRunOne+0x2a6>
			rls = inRL->signaledSourceList;
    e884b53c:	0209b483          	ld	s1,32(s3)
			if( !rls ) break;
    e884b540:	c4f9                	beqz	s1,e884b60e <__CFRunLoopRunOne+0x2f6>
			inRL->signaledSourceList = rls->nextSignaled;
    e884b542:	689c                	ld	a5,16(s1)
			CFRunLoopUnlock();
    e884b544:	855e                	mv	a0,s7
			sourceHandled = true;
    e884b546:	4905                	li	s2,1
			inRL->signaledSourceList = rls->nextSignaled;
    e884b548:	02f9b023          	sd	a5,32(s3)
			CFRunLoopUnlock();
    e884b54c:	616300ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
			rls->context.perform( rls->context.info );
    e884b550:	74bc                	ld	a5,104(s1)
    e884b552:	7488                	ld	a0,40(s1)
    e884b554:	9782                	jalr	a5
			CFRunLoopLock();
    e884b556:	855e                	mv	a0,s7
    e884b558:	5c6300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
			sourceHandled = true;
    e884b55c:	a055                	j	e884b600 <__CFRunLoopRunOne+0x2e8>
				if( nowTicks >= timer->expireTicks )
    e884b55e:	6c9c                	ld	a5,24(s1)
    e884b560:	04fc7463          	bgeu	s8,a5,e884b5a8 <__CFRunLoopRunOne+0x290>
			for( timer = inRL->timerList; timer; timer = timer->next )
    e884b564:	6484                	ld	s1,8(s1)
    e884b566:	a0e9                	j	e884b630 <__CFRunLoopRunOne+0x318>
				timer->expireTicks += timer->intervalTicks;
    e884b568:	97ba                	add	a5,a5,a4
    e884b56a:	ec9c                	sd	a5,24(s1)
				__CFRunLoopTimerRequeue( timer );
    e884b56c:	8526                	mv	a0,s1
    e884b56e:	841ff0ef          	jal	ra,e884adae <__CFRunLoopTimerRequeue>
			CFRunLoopUnlock();
    e884b572:	8566                	mv	a0,s9
    e884b574:	5ee300ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
			if( invalidate )
    e884b578:	000b8863          	beqz	s7,e884b588 <__CFRunLoopRunOne+0x270>
				CFRetain( timer ); // Retain so it's not released until after the callback returns.
    e884b57c:	8526                	mv	a0,s1
    e884b57e:	bc9fb0ef          	jal	ra,e8847146 <CFRetain>
				CFRunLoopTimerInvalidate( timer );
    e884b582:	8526                	mv	a0,s1
    e884b584:	d35ff0ef          	jal	ra,e884b2b8 <CFRunLoopTimerInvalidate>
			timer->callback( timer, timer->context );
    e884b588:	749c                	ld	a5,40(s1)
    e884b58a:	788c                	ld	a1,48(s1)
    e884b58c:	8526                	mv	a0,s1
    e884b58e:	9782                	jalr	a5
			if( invalidate ) CFRelease( timer );
    e884b590:	000b8563          	beqz	s7,e884b59a <__CFRunLoopRunOne+0x282>
    e884b594:	8526                	mv	a0,s1
    e884b596:	bb5fb0ef          	jal	ra,e884714a <CFRelease>
			CFRunLoopLock();
    e884b59a:	8566                	mv	a0,s9
    e884b59c:	582300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
			sourceHandled = true;
    e884b5a0:	4905                	li	s2,1
    e884b5a2:	a8ad                	j	e884b61c <__CFRunLoopRunOne+0x304>
			err = kNoErr;
    e884b5a4:	4901                	li	s2,0
	return( err );
    e884b5a6:	bd79                	j	e884b444 <__CFRunLoopRunOne+0x12c>
			if( timer->intervalTicks > 0 )
    e884b5a8:	7098                	ld	a4,32(s1)
    e884b5aa:	ff5d                	bnez	a4,e884b568 <__CFRunLoopRunOne+0x250>
				invalidate = true;
    e884b5ac:	4b85                	li	s7,1
    e884b5ae:	b7d1                	j	e884b572 <__CFRunLoopRunOne+0x25a>
			if( FD_ISSET( inRL->commandSock, &readSet ) )
    e884b5b0:	00c9a503          	lw	a0,12(s3)
    e884b5b4:	f4aa78e3          	bgeu	s4,a0,e884b504 <__CFRunLoopRunOne+0x1ec>
				for( rls = inRL->sourceList; rls; rls = rls->next )
    e884b5b8:	0189b703          	ld	a4,24(s3)
					if( rls->type == kCFRunLoopSourceType_Socket )
    e884b5bc:	4589                	li	a1,2
				for( rls = inRL->sourceList; rls; rls = rls->next )
    e884b5be:	d33d                	beqz	a4,e884b524 <__CFRunLoopRunOne+0x20c>
					if( rls->type == kCFRunLoopSourceType_Socket )
    e884b5c0:	07074783          	lbu	a5,112(a4)
    e884b5c4:	f6b79ae3          	bne	a5,a1,e884b538 <__CFRunLoopRunOne+0x220>
						sock = (CFSocketRef) rls->context.info;
    e884b5c8:	7708                	ld	a0,40(a4)
						if( FD_ISSET( sock->nativeSock, &readSet ) )
    e884b5ca:	491c                	lw	a5,16(a0)
    e884b5cc:	f6fa66e3          	bltu	s4,a5,e884b538 <__CFRunLoopRunOne+0x220>
    e884b5d0:	4037d613          	srai	a2,a5,0x3
    e884b5d4:	0814                	addi	a3,sp,16
    e884b5d6:	80c6c68b          	lrbu	a3,a3,a2,0
    e884b5da:	8b9d                	andi	a5,a5,7
    e884b5dc:	40f6d6bb          	sraw	a3,a3,a5
    e884b5e0:	8a85                	andi	a3,a3,1
    e884b5e2:	d2b9                	beqz	a3,e884b528 <__CFRunLoopRunOne+0x210>
							__CFSocketHandler( sock, kCFSocketReadCallBack );
    e884b5e4:	4585                	li	a1,1
							__CFSocketHandler( sock, kCFSocketWriteCallBack );
    e884b5e6:	803ff0ef          	jal	ra,e884ade8 <__CFSocketHandler>
							sourceHandled = true;
    e884b5ea:	4905                	li	s2,1
		CFRunLoopLock();
    e884b5ec:	00098517          	auipc	a0,0x98
    e884b5f0:	5c450513          	addi	a0,a0,1476 # e88e3bb0 <gCFRunLoopLock>
    e884b5f4:	52a300ef          	jal	ra,e887bb1e <pthread_mutex_lock>
			CFRunLoopUnlock();
    e884b5f8:	00098b97          	auipc	s7,0x98
    e884b5fc:	5b8b8b93          	addi	s7,s7,1464 # e88e3bb0 <gCFRunLoopLock>
		while( !inRL->stop && ( !sourceHandled || !inReturnAfterSourceHandled ) )
    e884b600:	0089c783          	lbu	a5,8(s3)
    e884b604:	e789                	bnez	a5,e884b60e <__CFRunLoopRunOne+0x2f6>
    e884b606:	f2090be3          	beqz	s2,e884b53c <__CFRunLoopRunOne+0x224>
    e884b60a:	f20a89e3          	beqz	s5,e884b53c <__CFRunLoopRunOne+0x224>
		nowTicks = UpTicks();
    e884b60e:	3b7150ef          	jal	ra,e88611c4 <UpTicks>
    e884b612:	8c2a                	mv	s8,a0
			CFRunLoopUnlock();
    e884b614:	00098c97          	auipc	s9,0x98
    e884b618:	59cc8c93          	addi	s9,s9,1436 # e88e3bb0 <gCFRunLoopLock>
		while( !inRL->stop && ( !sourceHandled || !inReturnAfterSourceHandled ) )
    e884b61c:	0089cb83          	lbu	s7,8(s3)
    e884b620:	000b9963          	bnez	s7,e884b632 <__CFRunLoopRunOne+0x31a>
    e884b624:	00090463          	beqz	s2,e884b62c <__CFRunLoopRunOne+0x314>
    e884b628:	000a9563          	bnez	s5,e884b632 <__CFRunLoopRunOne+0x31a>
			for( timer = inRL->timerList; timer; timer = timer->next )
    e884b62c:	0109b483          	ld	s1,16(s3)
    e884b630:	f49d                	bnez	s1,e884b55e <__CFRunLoopRunOne+0x246>
		CFRunLoopUnlock();
    e884b632:	00098517          	auipc	a0,0x98
    e884b636:	57e50513          	addi	a0,a0,1406 # e88e3bb0 <gCFRunLoopLock>
    e884b63a:	528300ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		if( ( sourceHandled && inReturnAfterSourceHandled ) || inRL->stop )
    e884b63e:	00090463          	beqz	s2,e884b646 <__CFRunLoopRunOne+0x32e>
    e884b642:	f60a91e3          	bnez	s5,e884b5a4 <__CFRunLoopRunOne+0x28c>
    e884b646:	0089c783          	lbu	a5,8(s3)
    e884b64a:	ffa9                	bnez	a5,e884b5a4 <__CFRunLoopRunOne+0x28c>
		if( nowTicks >= timeoutTicks )
    e884b64c:	d28c63e3          	bltu	s8,s0,e884b372 <__CFRunLoopRunOne+0x5a>
			err = ETIMEDOUT;
    e884b650:	07400913          	li	s2,116
    e884b654:	bbc5                	j	e884b444 <__CFRunLoopRunOne+0x12c>
		err = global_value_errno( n );
    e884b656:	7979                	lui	s2,0xffffe
    e884b658:	5d490913          	addi	s2,s2,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884b65c:	b3c1                	j	e884b41c <__CFRunLoopRunOne+0x104>

00000000e884b65e <CFRunLoopRun>:
{
    e884b65e:	1141                	addi	sp,sp,-16
    e884b660:	e406                	sd	ra,8(sp)
    e884b662:	e022                	sd	s0,0(sp)
	err = CFRunLoopEnsureInitialized();
    e884b664:	86bff0ef          	jal	ra,e884aece <CFRunLoopEnsureInitialized>
	require_noerr( err, exit );
    e884b668:	e11d                	bnez	a0,e884b68e <CFRunLoopRun+0x30>
	CFRunLoopEnsureInitialized();
    e884b66a:	865ff0ef          	jal	ra,e884aece <CFRunLoopEnsureInitialized>
	return( gCFRunLoopCurrent );
    e884b66e:	00098797          	auipc	a5,0x98
    e884b672:	53a78793          	addi	a5,a5,1338 # e88e3ba8 <gCFRunLoopCurrent>
    e884b676:	6380                	ld	s0,0(a5)
	rl->stop = false;
    e884b678:	00040423          	sb	zero,8(s0)
		err = __CFRunLoopRunOne( rl, NULL, false );
    e884b67c:	4601                	li	a2,0
    e884b67e:	4581                	li	a1,0
    e884b680:	8522                	mv	a0,s0
    e884b682:	c97ff0ef          	jal	ra,e884b318 <__CFRunLoopRunOne>
		if( err ) break;
    e884b686:	e501                	bnez	a0,e884b68e <CFRunLoopRun+0x30>
	while( !rl->stop )
    e884b688:	00844783          	lbu	a5,8(s0)
    e884b68c:	dbe5                	beqz	a5,e884b67c <CFRunLoopRun+0x1e>
}
    e884b68e:	60a2                	ld	ra,8(sp)
    e884b690:	6402                	ld	s0,0(sp)
    e884b692:	0141                	addi	sp,sp,16
    e884b694:	8082                	ret

00000000e884b696 <_CFObjectCopyProperty>:
	}
	return( inFunc( inObject, inFlags, inProperty, inQualifier, outErr ) );
}

static void	_CFObjectCopyProperty( void *inContext )
{
    e884b696:	1141                	addi	sp,sp,-16
    e884b698:	e022                	sd	s0,0(sp)
    e884b69a:	e406                	sd	ra,8(sp)
    e884b69c:	842a                	mv	s0,a0
	CFObjectCopyPropertyParams * const		params = (CFObjectCopyPropertyParams *) inContext;
	
	params->value = params->func( params->object, params->flags, params->property, params->qualifier, params->errorPtr );
    e884b69e:	651c                	ld	a5,8(a0)
    e884b6a0:	7918                	ld	a4,48(a0)
    e884b6a2:	7114                	ld	a3,32(a0)
    e884b6a4:	6d10                	ld	a2,24(a0)
    e884b6a6:	490c                	lw	a1,16(a0)
    e884b6a8:	6108                	ld	a0,0(a0)
    e884b6aa:	9782                	jalr	a5
    e884b6ac:	f408                	sd	a0,40(s0)
}
    e884b6ae:	60a2                	ld	ra,8(sp)
    e884b6b0:	6402                	ld	s0,0(sp)
    e884b6b2:	0141                	addi	sp,sp,16
    e884b6b4:	8082                	ret

00000000e884b6b6 <_CFPropertyListAssociateObject>:
{
    e884b6b6:	1101                	addi	sp,sp,-32
    e884b6b8:	e84a                	sd	s2,16(sp)
    e884b6ba:	f891540b          	sdd	s0,s1,(sp),0,4
    e884b6be:	ec06                	sd	ra,24(sp)
    e884b6c0:	8436                	mv	s0,a3
    e884b6c2:	893a                	mv	s2,a4
	if( inArray )
    e884b6c4:	c105                	beqz	a0,e884b6e4 <_CFPropertyListAssociateObject+0x2e>
		CFArrayAppendValue( inArray, inObj );
    e884b6c6:	85b6                	mv	a1,a3
    e884b6c8:	ba9fb0ef          	jal	ra,e8847270 <CFArrayAppendValue>
	if( !( *ioTopObject ) ) *ioTopObject = inObj;
    e884b6cc:	00093783          	ld	a5,0(s2)
	err = kNoErr;
    e884b6d0:	4501                	li	a0,0
	if( !( *ioTopObject ) ) *ioTopObject = inObj;
    e884b6d2:	e399                	bnez	a5,e884b6d8 <_CFPropertyListAssociateObject+0x22>
    e884b6d4:	00893023          	sd	s0,0(s2)
}
    e884b6d8:	60e2                	ld	ra,24(sp)
    e884b6da:	f891440b          	ldd	s0,s1,(sp),0,4
    e884b6de:	6942                	ld	s2,16(sp)
    e884b6e0:	6105                	addi	sp,sp,32
    e884b6e2:	8082                	ret
    e884b6e4:	87ae                	mv	a5,a1
	else if( inDict )
    e884b6e6:	cd91                	beqz	a1,e884b702 <_CFPropertyListAssociateObject+0x4c>
		require_action( *ioKey, exit, err = kMalformedErr );
    e884b6e8:	620c                	ld	a1,0(a2)
    e884b6ea:	84b2                	mv	s1,a2
    e884b6ec:	cd99                	beqz	a1,e884b70a <_CFPropertyListAssociateObject+0x54>
		CFDictionarySetValue( inDict, *ioKey, inObj );
    e884b6ee:	853e                	mv	a0,a5
    e884b6f0:	8636                	mv	a2,a3
    e884b6f2:	d61fb0ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( *ioKey );
    e884b6f6:	6088                	ld	a0,0(s1)
    e884b6f8:	a53fb0ef          	jal	ra,e884714a <CFRelease>
		*ioKey = NULL;
    e884b6fc:	0004b023          	sd	zero,0(s1)
    e884b700:	b7f1                	j	e884b6cc <_CFPropertyListAssociateObject+0x16>
		CFRetain( inObj );
    e884b702:	8536                	mv	a0,a3
    e884b704:	a43fb0ef          	jal	ra,e8847146 <CFRetain>
    e884b708:	b7d1                	j	e884b6cc <_CFPropertyListAssociateObject+0x16>
		require_action( *ioKey, exit, err = kMalformedErr );
    e884b70a:	7579                	lui	a0,0xffffe
    e884b70c:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e884b710:	b7e1                	j	e884b6d8 <_CFPropertyListAssociateObject+0x22>

00000000e884b712 <_CFDictionaryMergeDictionaryApplier>:
	CFDictionaryApplyFunction( inSourceDict, _CFDictionaryMergeDictionaryApplier, inDestinationDict );
	return( kNoErr );
}

static void	_CFDictionaryMergeDictionaryApplier( const void *inKey, const void *inValue, void *inContext )
{
    e884b712:	87b2                	mv	a5,a2
	CFDictionarySetValue( (CFMutableDictionaryRef) inContext, inKey, inValue );
    e884b714:	862e                	mv	a2,a1
    e884b716:	85aa                	mv	a1,a0
    e884b718:	853e                	mv	a0,a5
    e884b71a:	d39fb06f          	j	e8847452 <CFDictionarySetValue>

00000000e884b71e <_CFObjectSetProperty>:
{
    e884b71e:	1141                	addi	sp,sp,-16
    e884b720:	e022                	sd	s0,0(sp)
    e884b722:	e406                	sd	ra,8(sp)
    e884b724:	842a                	mv	s0,a0
	params->error = params->func( params->object, params->flags, params->property, params->qualifier, params->value );
    e884b726:	651c                	ld	a5,8(a0)
    e884b728:	7518                	ld	a4,40(a0)
    e884b72a:	7114                	ld	a3,32(a0)
    e884b72c:	6d10                	ld	a2,24(a0)
    e884b72e:	490c                	lw	a1,16(a0)
    e884b730:	6108                	ld	a0,0(a0)
    e884b732:	9782                	jalr	a5
    e884b734:	d808                	sw	a0,48(s0)
	if( params->flags & kCFObjectFlagAsync )
    e884b736:	481c                	lw	a5,16(s0)
    e884b738:	8ba1                	andi	a5,a5,8
    e884b73a:	c78d                	beqz	a5,e884b764 <_CFObjectSetProperty+0x46>
		CFRelease( params->object );
    e884b73c:	6008                	ld	a0,0(s0)
    e884b73e:	a0dfb0ef          	jal	ra,e884714a <CFRelease>
		CFRelease( params->property );
    e884b742:	6c08                	ld	a0,24(s0)
    e884b744:	a07fb0ef          	jal	ra,e884714a <CFRelease>
		CFReleaseNullSafe( params->qualifier );
    e884b748:	7008                	ld	a0,32(s0)
    e884b74a:	c119                	beqz	a0,e884b750 <_CFObjectSetProperty+0x32>
    e884b74c:	9fffb0ef          	jal	ra,e884714a <CFRelease>
		CFReleaseNullSafe( params->value );
    e884b750:	7408                	ld	a0,40(s0)
    e884b752:	c119                	beqz	a0,e884b758 <_CFObjectSetProperty+0x3a>
    e884b754:	9f7fb0ef          	jal	ra,e884714a <CFRelease>
		free( params );
    e884b758:	8522                	mv	a0,s0
}
    e884b75a:	6402                	ld	s0,0(sp)
    e884b75c:	60a2                	ld	ra,8(sp)
    e884b75e:	0141                	addi	sp,sp,16
		free( params );
    e884b760:	3a13006f          	j	e887c300 <eLIBs_free>
}
    e884b764:	60a2                	ld	ra,8(sp)
    e884b766:	6402                	ld	s0,0(sp)
    e884b768:	0141                	addi	sp,sp,16
    e884b76a:	8082                	ret

00000000e884b76c <CFObjectSetProperty.part.2>:
	CFObjectSetProperty( 
    e884b76c:	715d                	addi	sp,sp,-80
    e884b76e:	f052                	sd	s4,32(sp)
    e884b770:	8a2a                	mv	s4,a0
		params = (CFObjectSetPropertyParams *) malloc( sizeof( *params ) );
    e884b772:	03800513          	li	a0,56
	CFObjectSetProperty( 
    e884b776:	fc26                	sd	s1,56(sp)
    e884b778:	f84a                	sd	s2,48(sp)
    e884b77a:	f44e                	sd	s3,40(sp)
    e884b77c:	ec56                	sd	s5,24(sp)
    e884b77e:	e85a                	sd	s6,16(sp)
    e884b780:	e45e                	sd	s7,8(sp)
    e884b782:	e486                	sd	ra,72(sp)
    e884b784:	e0a2                	sd	s0,64(sp)
    e884b786:	8aae                	mv	s5,a1
    e884b788:	8bb2                	mv	s7,a2
    e884b78a:	8b36                	mv	s6,a3
    e884b78c:	89ba                	mv	s3,a4
    e884b78e:	893e                	mv	s2,a5
    e884b790:	84c2                	mv	s1,a6
		params = (CFObjectSetPropertyParams *) malloc( sizeof( *params ) );
    e884b792:	0bc300ef          	jal	ra,e887b84e <my_malloc>
		require_action( params, exit, err = kNoMemoryErr );
    e884b796:	cd31                	beqz	a0,e884b7f2 <CFObjectSetProperty.part.2+0x86>
    e884b798:	842a                	mv	s0,a0
		CFRetain( inObject );
    e884b79a:	8552                	mv	a0,s4
    e884b79c:	9abfb0ef          	jal	ra,e8847146 <CFRetain>
		params->func  = inFunc;
    e884b7a0:	f9745a0b          	sdd	s4,s7,(s0),0,4
		params->flags = inFlags;
    e884b7a4:	01642823          	sw	s6,16(s0)
		CFRetain( inProperty );
    e884b7a8:	854e                	mv	a0,s3
    e884b7aa:	99dfb0ef          	jal	ra,e8847146 <CFRetain>
		params->property = inProperty;
    e884b7ae:	01343c23          	sd	s3,24(s0)
		CFRetainNullSafe( inQualifier );
    e884b7b2:	00090563          	beqz	s2,e884b7bc <CFObjectSetProperty.part.2+0x50>
    e884b7b6:	854a                	mv	a0,s2
    e884b7b8:	98ffb0ef          	jal	ra,e8847146 <CFRetain>
		params->qualifier = inQualifier;
    e884b7bc:	03243023          	sd	s2,32(s0)
		CFRetainNullSafe( inValue );
    e884b7c0:	c481                	beqz	s1,e884b7c8 <CFObjectSetProperty.part.2+0x5c>
    e884b7c2:	8526                	mv	a0,s1
    e884b7c4:	983fb0ef          	jal	ra,e8847146 <CFRetain>
		dispatch_async_f( inQueue, params, _CFObjectSetProperty );
    e884b7c8:	8556                	mv	a0,s5
		params->value = inValue;
    e884b7ca:	f404                	sd	s1,40(s0)
		dispatch_async_f( inQueue, params, _CFObjectSetProperty );
    e884b7cc:	00000617          	auipc	a2,0x0
    e884b7d0:	f5260613          	addi	a2,a2,-174 # e884b71e <_CFObjectSetProperty>
    e884b7d4:	85a2                	mv	a1,s0
    e884b7d6:	44a030ef          	jal	ra,e884ec20 <dispatch_async_f>
		err = kNoErr;
    e884b7da:	4501                	li	a0,0
}
    e884b7dc:	60a6                	ld	ra,72(sp)
    e884b7de:	6406                	ld	s0,64(sp)
    e884b7e0:	74e2                	ld	s1,56(sp)
    e884b7e2:	7942                	ld	s2,48(sp)
    e884b7e4:	79a2                	ld	s3,40(sp)
    e884b7e6:	7a02                	ld	s4,32(sp)
    e884b7e8:	6ae2                	ld	s5,24(sp)
    e884b7ea:	6b42                	ld	s6,16(sp)
    e884b7ec:	6ba2                	ld	s7,8(sp)
    e884b7ee:	6161                	addi	sp,sp,80
    e884b7f0:	8082                	ret
		require_action( params, exit, err = kNoMemoryErr );
    e884b7f2:	7579                	lui	a0,0xffffe
    e884b7f4:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884b7f8:	b7d5                	j	e884b7dc <CFObjectSetProperty.part.2+0x70>

00000000e884b7fa <CFObjectCopyProperty>:
{
    e884b7fa:	715d                	addi	sp,sp,-80
    e884b7fc:	e486                	sd	ra,72(sp)
    e884b7fe:	832e                	mv	t1,a1
    e884b800:	85b6                	mv	a1,a3
	if( !( inFlags & kCFObjectFlagDirect ) )
    e884b802:	8a85                	andi	a3,a3,1
{
    e884b804:	88b2                	mv	a7,a2
    e884b806:	863a                	mv	a2,a4
    e884b808:	8742                	mv	a4,a6
	if( !( inFlags & kCFObjectFlagDirect ) )
    e884b80a:	e685                	bnez	a3,e884b832 <CFObjectCopyProperty+0x38>
		CFObjectCopyPropertyParams		params = { inObject, inFunc, inFlags, inProperty, inQualifier, NULL, outErr };
    e884b80c:	e42a                	sd	a0,8(sp)
    e884b80e:	cc2e                	sw	a1,24(sp)
    e884b810:	fcf1560b          	sdd	a2,a5,(sp),2,4
		dispatch_sync_f( inQueue, &params, _CFObjectCopyProperty );
    e884b814:	851a                	mv	a0,t1
    e884b816:	00000617          	auipc	a2,0x0
    e884b81a:	e8060613          	addi	a2,a2,-384 # e884b696 <_CFObjectCopyProperty>
    e884b81e:	002c                	addi	a1,sp,8
		CFObjectCopyPropertyParams		params = { inObject, inFunc, inFlags, inProperty, inQualifier, NULL, outErr };
    e884b820:	e846                	sd	a7,16(sp)
    e884b822:	f802                	sd	zero,48(sp)
    e884b824:	fc42                	sd	a6,56(sp)
		dispatch_sync_f( inQueue, &params, _CFObjectCopyProperty );
    e884b826:	4f8030ef          	jal	ra,e884ed1e <dispatch_sync_f>
		return( params.value );
    e884b82a:	7542                	ld	a0,48(sp)
}
    e884b82c:	60a6                	ld	ra,72(sp)
    e884b82e:	6161                	addi	sp,sp,80
    e884b830:	8082                	ret
	return( inFunc( inObject, inFlags, inProperty, inQualifier, outErr ) );
    e884b832:	86be                	mv	a3,a5
    e884b834:	9882                	jalr	a7
    e884b836:	bfdd                	j	e884b82c <CFObjectCopyProperty+0x32>

00000000e884b838 <CFObjectSetProperty>:
{
    e884b838:	715d                	addi	sp,sp,-80
    e884b83a:	e486                	sd	ra,72(sp)
	if( inFlags & kCFObjectFlagDirect )
    e884b83c:	0016f393          	andi	t2,a3,1
{
    e884b840:	8f32                	mv	t5,a2
    e884b842:	88b6                	mv	a7,a3
    e884b844:	8eba                	mv	t4,a4
	if( inFlags & kCFObjectFlagDirect )
    e884b846:	00038a63          	beqz	t2,e884b85a <CFObjectSetProperty+0x22>
		err = inFunc( inObject, inFlags, inProperty, inQualifier, inValue );
    e884b84a:	8742                	mv	a4,a6
    e884b84c:	86be                	mv	a3,a5
    e884b84e:	8676                	mv	a2,t4
    e884b850:	85c6                	mv	a1,a7
    e884b852:	9f02                	jalr	t5
}
    e884b854:	60a6                	ld	ra,72(sp)
    e884b856:	6161                	addi	sp,sp,80
    e884b858:	8082                	ret
	else if( inFlags & kCFObjectFlagAsync )
    e884b85a:	0086f393          	andi	t2,a3,8
    e884b85e:	00038563          	beqz	t2,e884b868 <CFObjectSetProperty+0x30>
    e884b862:	f0bff0ef          	jal	ra,e884b76c <CFObjectSetProperty.part.2>
    e884b866:	b7fd                	j	e884b854 <CFObjectSetProperty+0x1c>
		CFObjectSetPropertyParams		localParams = { inObject, inFunc, inFlags, inProperty, inQualifier, inValue, kUnknownErr };
    e884b868:	fcf1570b          	sdd	a4,a5,(sp),2,4
    e884b86c:	77f9                	lui	a5,0xffffe
    e884b86e:	8fae                	mv	t6,a1
    e884b870:	5d47879b          	addiw	a5,a5,1492
    e884b874:	e42a                	sd	a0,8(sp)
    e884b876:	e832                	sd	a2,16(sp)
		dispatch_sync_f( inQueue, &localParams, _CFObjectSetProperty );
    e884b878:	857e                	mv	a0,t6
    e884b87a:	00000617          	auipc	a2,0x0
    e884b87e:	ea460613          	addi	a2,a2,-348 # e884b71e <_CFObjectSetProperty>
    e884b882:	002c                	addi	a1,sp,8
		CFObjectSetPropertyParams		localParams = { inObject, inFunc, inFlags, inProperty, inQualifier, inValue, kUnknownErr };
    e884b884:	cc36                	sw	a3,24(sp)
    e884b886:	f842                	sd	a6,48(sp)
    e884b888:	dc3e                	sw	a5,56(sp)
		dispatch_sync_f( inQueue, &localParams, _CFObjectSetProperty );
    e884b88a:	494030ef          	jal	ra,e884ed1e <dispatch_sync_f>
		err = localParams.error;
    e884b88e:	5562                	lw	a0,56(sp)
    e884b890:	b7d1                	j	e884b854 <CFObjectSetProperty+0x1c>

00000000e884b892 <CFObjectSetValue>:
{
    e884b892:	832e                	mv	t1,a1
    e884b894:	85b2                	mv	a1,a2
	return( inCallback( inObject, inKey, inValue ) );
    e884b896:	8636                	mv	a2,a3
    e884b898:	8302                	jr	t1

00000000e884b89a <CFObjectSetCString>:
{
    e884b89a:	7179                	addi	sp,sp,-48
    e884b89c:	e422                	sd	s0,8(sp)
    e884b89e:	ec4a                	sd	s2,24(sp)
    e884b8a0:	f04e                	sd	s3,32(sp)
    e884b8a2:	f406                	sd	ra,40(sp)
    e884b8a4:	e826                	sd	s1,16(sp)
	if( inLen == kSizeCString )
    e884b8a6:	57fd                	li	a5,-1
{
    e884b8a8:	892e                	mv	s2,a1
    e884b8aa:	842a                	mv	s0,a0
    e884b8ac:	89b2                	mv	s3,a2
    e884b8ae:	85b6                	mv	a1,a3
	if( inLen == kSizeCString )
    e884b8b0:	02f71d63          	bne	a4,a5,e884b8ea <CFObjectSetCString+0x50>
		obj = CFStringCreateWithCString( NULL, (const char *) inStr, kCFStringEncodingUTF8 );
    e884b8b4:	08000637          	lui	a2,0x8000
    e884b8b8:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884b8bc:	4501                	li	a0,0
    e884b8be:	c67fb0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
		obj = CFStringCreateWithBytes( NULL, (const uint8_t *) inStr, (CFIndex) inLen, kCFStringEncodingUTF8, false );
    e884b8c2:	84aa                	mv	s1,a0
	require_action( obj, exit, err = kFormatErr );
    e884b8c4:	cd15                	beqz	a0,e884b900 <CFObjectSetCString+0x66>
	err = CFObjectSetValue( inObject, inCallback, inKey, obj );
    e884b8c6:	86aa                	mv	a3,a0
    e884b8c8:	864e                	mv	a2,s3
    e884b8ca:	8522                	mv	a0,s0
    e884b8cc:	85ca                	mv	a1,s2
    e884b8ce:	fc5ff0ef          	jal	ra,e884b892 <CFObjectSetValue>
    e884b8d2:	842a                	mv	s0,a0
	CFRelease( obj );
    e884b8d4:	8526                	mv	a0,s1
    e884b8d6:	875fb0ef          	jal	ra,e884714a <CFRelease>
}
    e884b8da:	8522                	mv	a0,s0
    e884b8dc:	70a2                	ld	ra,40(sp)
    e884b8de:	6422                	ld	s0,8(sp)
    e884b8e0:	64c2                	ld	s1,16(sp)
    e884b8e2:	6962                	ld	s2,24(sp)
    e884b8e4:	7982                	ld	s3,32(sp)
    e884b8e6:	6145                	addi	sp,sp,48
    e884b8e8:	8082                	ret
    e884b8ea:	863a                	mv	a2,a4
		obj = CFStringCreateWithBytes( NULL, (const uint8_t *) inStr, (CFIndex) inLen, kCFStringEncodingUTF8, false );
    e884b8ec:	080006b7          	lui	a3,0x8000
    e884b8f0:	4701                	li	a4,0
    e884b8f2:	10068693          	addi	a3,a3,256 # 8000100 <memcmp-0xe07fff00>
    e884b8f6:	2601                	sext.w	a2,a2
    e884b8f8:	4501                	li	a0,0
    e884b8fa:	b9ffb0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884b8fe:	b7d1                	j	e884b8c2 <CFObjectSetCString+0x28>
	require_action( obj, exit, err = kFormatErr );
    e884b900:	7479                	lui	s0,0xffffe
    e884b902:	5c340413          	addi	s0,s0,1475 # ffffffffffffe5c3 <__DRAM0_INF_BASE+0xffffffff0000e5c3>
    e884b906:	bfd1                	j	e884b8da <CFObjectSetCString+0x40>

00000000e884b908 <CFObjectSetDouble>:
{
    e884b908:	7139                	addi	sp,sp,-64
    e884b90a:	ec22                	sd	s0,24(sp)
    e884b90c:	f44a                	sd	s2,40(sp)
    e884b90e:	f84e                	sd	s3,48(sp)
    e884b910:	842a                	mv	s0,a0
    e884b912:	892e                	mv	s2,a1
    e884b914:	89b2                	mv	s3,a2
	obj = CFNumberCreate( NULL, kCFNumberDoubleType, &inValue );
    e884b916:	45b5                	li	a1,13
    e884b918:	0030                	addi	a2,sp,8
    e884b91a:	4501                	li	a0,0
{
    e884b91c:	fc06                	sd	ra,56(sp)
    e884b91e:	f026                	sd	s1,32(sp)
    e884b920:	a42a                	fsd	fa0,8(sp)
	obj = CFNumberCreate( NULL, kCFNumberDoubleType, &inValue );
    e884b922:	b4dfb0ef          	jal	ra,e884746e <CFNumberCreate>
	require_action( obj, exit, err = kUnknownErr );
    e884b926:	c505                	beqz	a0,e884b94e <CFObjectSetDouble+0x46>
    e884b928:	84aa                	mv	s1,a0
	err = CFObjectSetValue( inObject, inCallback, inKey, obj );
    e884b92a:	86aa                	mv	a3,a0
    e884b92c:	864e                	mv	a2,s3
    e884b92e:	8522                	mv	a0,s0
    e884b930:	85ca                	mv	a1,s2
    e884b932:	f61ff0ef          	jal	ra,e884b892 <CFObjectSetValue>
    e884b936:	842a                	mv	s0,a0
	CFRelease( obj );
    e884b938:	8526                	mv	a0,s1
    e884b93a:	811fb0ef          	jal	ra,e884714a <CFRelease>
}
    e884b93e:	8522                	mv	a0,s0
    e884b940:	70e2                	ld	ra,56(sp)
    e884b942:	6462                	ld	s0,24(sp)
    e884b944:	7482                	ld	s1,32(sp)
    e884b946:	7922                	ld	s2,40(sp)
    e884b948:	79c2                	ld	s3,48(sp)
    e884b94a:	6121                	addi	sp,sp,64
    e884b94c:	8082                	ret
	require_action( obj, exit, err = kUnknownErr );
    e884b94e:	7479                	lui	s0,0xffffe
    e884b950:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884b954:	b7ed                	j	e884b93e <CFObjectSetDouble+0x36>

00000000e884b956 <CFGetCString>:
{
    e884b956:	7139                	addi	sp,sp,-64
    e884b958:	ec22                	sd	s0,24(sp)
    e884b95a:	fc06                	sd	ra,56(sp)
    e884b95c:	f026                	sd	s1,32(sp)
    e884b95e:	f44a                	sd	s2,40(sp)
    e884b960:	f84e                	sd	s3,48(sp)
	if( inMaxLen <= 0 ) return( "" );
    e884b962:	00076417          	auipc	s0,0x76
    e884b966:	90e40413          	addi	s0,s0,-1778 # e88c1270 <kHTTPServerClass+0x90>
    e884b96a:	c611                	beqz	a2,e884b976 <CFGetCString+0x20>
    e884b96c:	892a                	mv	s2,a0
    e884b96e:	842e                	mv	s0,a1
	if( !inObj ) { *inBuf = '\0'; return( inBuf ); }
    e884b970:	e919                	bnez	a0,e884b986 <CFGetCString+0x30>
    e884b972:	00040023          	sb	zero,0(s0)
}
    e884b976:	8522                	mv	a0,s0
    e884b978:	70e2                	ld	ra,56(sp)
    e884b97a:	6462                	ld	s0,24(sp)
    e884b97c:	7482                	ld	s1,32(sp)
    e884b97e:	7922                	ld	s2,40(sp)
    e884b980:	79c2                	ld	s3,48(sp)
    e884b982:	6121                	addi	sp,sp,64
    e884b984:	8082                	ret
    e884b986:	84b2                	mv	s1,a2
	typeID = CFGetTypeID( inObj );
    e884b988:	faafb0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884b98c:	0005099b          	sext.w	s3,a0
	if( typeID == CFStringGetTypeID() )
    e884b990:	b05fb0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e884b994:	2501                	sext.w	a0,a0
    e884b996:	00a99f63          	bne	s3,a0,e884b9b4 <CFGetCString+0x5e>
		CFStringGetCString( (CFStringRef) inObj, inBuf, (CFIndex) inMaxLen, kCFStringEncodingUTF8 );
    e884b99a:	080006b7          	lui	a3,0x8000
		*inBuf = '\0';
    e884b99e:	00040023          	sb	zero,0(s0)
		CFStringGetCString( (CFStringRef) inObj, inBuf, (CFIndex) inMaxLen, kCFStringEncodingUTF8 );
    e884b9a2:	10068693          	addi	a3,a3,256 # 8000100 <memcmp-0xe07fff00>
    e884b9a6:	0004861b          	sext.w	a2,s1
    e884b9aa:	85a2                	mv	a1,s0
    e884b9ac:	854a                	mv	a0,s2
    e884b9ae:	c31fb0ef          	jal	ra,e88475de <CFStringGetCString>
    e884b9b2:	b7d1                	j	e884b976 <CFGetCString+0x20>
	else if( typeID == CFNumberGetTypeID() )
    e884b9b4:	ab7fb0ef          	jal	ra,e884746a <CFNumberGetTypeID>
    e884b9b8:	2501                	sext.w	a0,a0
    e884b9ba:	04a99663          	bne	s3,a0,e884ba06 <CFGetCString+0xb0>
		if( CFNumberIsFloatType( (CFNumberRef) inObj ) )
    e884b9be:	854a                	mv	a0,s2
    e884b9c0:	d8efd0ef          	jal	ra,e8848f4e <CFLNumberIsFloatType>
    e884b9c4:	c10d                	beqz	a0,e884b9e6 <CFGetCString+0x90>
			CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &d );
    e884b9c6:	0030                	addi	a2,sp,8
    e884b9c8:	45b5                	li	a1,13
    e884b9ca:	854a                	mv	a0,s2
			d = 0;
    e884b9cc:	e402                	sd	zero,8(sp)
			CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &d );
    e884b9ce:	ab5fb0ef          	jal	ra,e8847482 <CFNumberGetValue>
			snprintf( inBuf, inMaxLen, "%f", d );
    e884b9d2:	66a2                	ld	a3,8(sp)
    e884b9d4:	00073617          	auipc	a2,0x73
    e884b9d8:	48460613          	addi	a2,a2,1156 # e88bee58 <kCFRunLoopTimerClass+0xb0>
    e884b9dc:	85a6                	mv	a1,s1
    e884b9de:	8522                	mv	a0,s0
    e884b9e0:	071300ef          	jal	ra,e887c250 <eLIBs_snprintf>
    e884b9e4:	bf49                	j	e884b976 <CFGetCString+0x20>
			CFNumberGetValue( (CFNumberRef) inObj, kCFNumberSInt64Type, &s64 );
    e884b9e6:	0030                	addi	a2,sp,8
    e884b9e8:	4591                	li	a1,4
    e884b9ea:	854a                	mv	a0,s2
			s64 = 0;
    e884b9ec:	e402                	sd	zero,8(sp)
			CFNumberGetValue( (CFNumberRef) inObj, kCFNumberSInt64Type, &s64 );
    e884b9ee:	a95fb0ef          	jal	ra,e8847482 <CFNumberGetValue>
			SNPrintF( inBuf, inMaxLen, "%lld", s64 );
    e884b9f2:	66a2                	ld	a3,8(sp)
    e884b9f4:	00073617          	auipc	a2,0x73
    e884b9f8:	46c60613          	addi	a2,a2,1132 # e88bee60 <kCFRunLoopTimerClass+0xb8>
    e884b9fc:	85a6                	mv	a1,s1
    e884b9fe:	8522                	mv	a0,s0
    e884ba00:	38b100ef          	jal	ra,e885c58a <SNPrintF>
    e884ba04:	bf8d                	j	e884b976 <CFGetCString+0x20>
	else if( inObj == kCFBooleanTrue )  strlcpy( inBuf, "true", inMaxLen );
    e884ba06:	00089797          	auipc	a5,0x89
    e884ba0a:	2ca78793          	addi	a5,a5,714 # e88d4cd0 <kCFLBooleanTrue>
    e884ba0e:	639c                	ld	a5,0(a5)
    e884ba10:	00f91b63          	bne	s2,a5,e884ba26 <CFGetCString+0xd0>
    e884ba14:	8626                	mv	a2,s1
    e884ba16:	0005c597          	auipc	a1,0x5c
    e884ba1a:	b0a58593          	addi	a1,a1,-1270 # e88a7520 <end.8789+0x3e78>
	else if( inObj == kCFBooleanFalse ) strlcpy( inBuf, "false", inMaxLen );
    e884ba1e:	8522                	mv	a0,s0
    e884ba20:	05e140ef          	jal	ra,e885fa7e <strlcpy>
    e884ba24:	bf89                	j	e884b976 <CFGetCString+0x20>
    e884ba26:	00089797          	auipc	a5,0x89
    e884ba2a:	2a278793          	addi	a5,a5,674 # e88d4cc8 <kCFLBooleanFalse>
    e884ba2e:	639c                	ld	a5,0(a5)
    e884ba30:	00f91863          	bne	s2,a5,e884ba40 <CFGetCString+0xea>
    e884ba34:	8626                	mv	a2,s1
    e884ba36:	0005c597          	auipc	a1,0x5c
    e884ba3a:	af258593          	addi	a1,a1,-1294 # e88a7528 <end.8789+0x3e80>
    e884ba3e:	b7c5                	j	e884ba1e <CFGetCString+0xc8>
	else if( typeID == CFDataGetTypeID() )
    e884ba40:	853fb0ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e884ba44:	2501                	sext.w	a0,a0
    e884ba46:	04a99963          	bne	s3,a0,e884ba98 <CFGetCString+0x142>
		src = CFDataGetBytePtr( (CFDataRef) inObj );
    e884ba4a:	854a                	mv	a0,s2
    e884ba4c:	8a1fb0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e884ba50:	89aa                	mv	s3,a0
		end = src + CFDataGetLength( (CFDataRef) inObj );
    e884ba52:	854a                	mv	a0,s2
    e884ba54:	883fb0ef          	jal	ra,e88472d6 <CFDataGetLength>
		lim = dst + ( inMaxLen - 1 );
    e884ba58:	14fd                	addi	s1,s1,-1
		end = src + CFDataGetLength( (CFDataRef) inObj );
    e884ba5a:	954e                	add	a0,a0,s3
		lim = dst + ( inMaxLen - 1 );
    e884ba5c:	94a2                	add	s1,s1,s0
		dst = inBuf;
    e884ba5e:	87a2                	mv	a5,s0
		while( ( src < end ) && ( ( lim - dst ) >= 2 ) )
    e884ba60:	4605                	li	a2,1
			*dst++ = kHexDigitsLowercase[ b >> 4 ];
    e884ba62:	00057697          	auipc	a3,0x57
    e884ba66:	74668693          	addi	a3,a3,1862 # e88a31a8 <mDNSInterface_Unicast+0x428>
		while( ( src < end ) && ( ( lim - dst ) >= 2 ) )
    e884ba6a:	00a9e563          	bltu	s3,a0,e884ba74 <CFGetCString+0x11e>
		*dst = '\0';
    e884ba6e:	00078023          	sb	zero,0(a5)
    e884ba72:	b711                	j	e884b976 <CFGetCString+0x20>
		while( ( src < end ) && ( ( lim - dst ) >= 2 ) )
    e884ba74:	40f48733          	sub	a4,s1,a5
    e884ba78:	fee65be3          	bge	a2,a4,e884ba6e <CFGetCString+0x118>
			b = *src++;
    e884ba7c:	9819c70b          	lbuia	a4,(s3),1,0
			*dst++ = kHexDigitsLowercase[ b >> 4 ];
    e884ba80:	00475593          	srli	a1,a4,0x4
    e884ba84:	80b6c58b          	lrbu	a1,a3,a1,0
			*dst++ = kHexDigitsLowercase[ b & 0xF ];
    e884ba88:	8b3d                	andi	a4,a4,15
    e884ba8a:	80e6c70b          	lrbu	a4,a3,a4,0
			*dst++ = kHexDigitsLowercase[ b >> 4 ];
    e884ba8e:	1827d58b          	sbia	a1,(a5),2,0
			*dst++ = kHexDigitsLowercase[ b & 0xF ];
    e884ba92:	fee78fa3          	sb	a4,-1(a5)
    e884ba96:	bfd1                	j	e884ba6a <CFGetCString+0x114>
	else if( typeID == CFDictionaryGetTypeID() )	snprintf( inBuf, inMaxLen, "{}" );
    e884ba98:	90bfb0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e884ba9c:	2501                	sext.w	a0,a0
    e884ba9e:	00073617          	auipc	a2,0x73
    e884baa2:	3ca60613          	addi	a2,a2,970 # e88bee68 <kCFRunLoopTimerClass+0xc0>
    e884baa6:	00a98b63          	beq	s3,a0,e884babc <CFGetCString+0x166>
	else if( typeID == CFArrayGetTypeID() )			snprintf( inBuf, inMaxLen, "[]" );
    e884baaa:	ebefb0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e884baae:	2501                	sext.w	a0,a0
    e884bab0:	eca991e3          	bne	s3,a0,e884b972 <CFGetCString+0x1c>
    e884bab4:	00073617          	auipc	a2,0x73
    e884bab8:	3bc60613          	addi	a2,a2,956 # e88bee70 <kCFRunLoopTimerClass+0xc8>
    e884babc:	85a6                	mv	a1,s1
    e884babe:	8522                	mv	a0,s0
    e884bac0:	790300ef          	jal	ra,e887c250 <eLIBs_snprintf>
    e884bac4:	bd4d                	j	e884b976 <CFGetCString+0x20>

00000000e884bac6 <CFObjectGetPropertyCStringSync>:
{
    e884bac6:	7179                	addi	sp,sp,-48
    e884bac8:	f026                	sd	s1,32(sp)
    e884baca:	84c2                	mv	s1,a6
	cfValue = CFObjectCopyProperty( inObject, inQueue, inFunc, inFlags, inProperty, inQualifier, outErr );
    e884bacc:	7842                	ld	a6,48(sp)
{
    e884bace:	ec22                	sd	s0,24(sp)
    e884bad0:	f406                	sd	ra,40(sp)
    e884bad2:	e446                	sd	a7,8(sp)
	cfValue = CFObjectCopyProperty( inObject, inQueue, inFunc, inFlags, inProperty, inQualifier, outErr );
    e884bad4:	d27ff0ef          	jal	ra,e884b7fa <CFObjectCopyProperty>
    e884bad8:	842a                	mv	s0,a0
	if( cfValue )
    e884bada:	c919                	beqz	a0,e884baf0 <CFObjectGetPropertyCStringSync+0x2a>
		value = CFGetCString( cfValue, inBuf, inMaxLen );
    e884badc:	68a2                	ld	a7,8(sp)
    e884bade:	85a6                	mv	a1,s1
    e884bae0:	8646                	mv	a2,a7
    e884bae2:	e75ff0ef          	jal	ra,e884b956 <CFGetCString>
    e884bae6:	84aa                	mv	s1,a0
		CFRelease( cfValue );
    e884bae8:	8522                	mv	a0,s0
    e884baea:	e60fb0ef          	jal	ra,e884714a <CFRelease>
		return( value );
    e884baee:	8426                	mv	s0,s1
}
    e884baf0:	8522                	mv	a0,s0
    e884baf2:	70a2                	ld	ra,40(sp)
    e884baf4:	6462                	ld	s0,24(sp)
    e884baf6:	7482                	ld	s1,32(sp)
    e884baf8:	6145                	addi	sp,sp,48
    e884bafa:	8082                	ret

00000000e884bafc <CFGetHardwareAddress>:
{
    e884bafc:	7119                	addi	sp,sp,-128
    e884bafe:	f4a6                	sd	s1,104(sp)
    e884bb00:	f0ca                	sd	s2,96(sp)
    e884bb02:	ecce                	sd	s3,88(sp)
    e884bb04:	fc86                	sd	ra,120(sp)
    e884bb06:	f8a2                	sd	s0,112(sp)
    e884bb08:	e8d2                	sd	s4,80(sp)
	uint64_t			scalar = 0;
    e884bb0a:	e002                	sd	zero,0(sp)
{
    e884bb0c:	84ae                	mv	s1,a1
    e884bb0e:	89b2                	mv	s3,a2
    e884bb10:	8936                	mv	s2,a3
	require_action_quiet( inObj, exit, err = kParamErr );
    e884bb12:	16050763          	beqz	a0,e884bc80 <CFGetHardwareAddress+0x184>
    e884bb16:	842a                	mv	s0,a0
	typeID = CFGetTypeID( inObj );
    e884bb18:	e1afb0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884bb1c:	00050a1b          	sext.w	s4,a0
	if( typeID == CFStringGetTypeID() )
    e884bb20:	975fb0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e884bb24:	2501                	sext.w	a0,a0
    e884bb26:	0b451263          	bne	a0,s4,e884bbca <CFGetHardwareAddress+0xce>
		good = CFStringGetCString( (CFStringRef) inObj, tempStr, (CFIndex) sizeof( tempStr ), kCFStringEncodingASCII );
    e884bb2a:	60000693          	li	a3,1536
    e884bb2e:	04000613          	li	a2,64
    e884bb32:	080c                	addi	a1,sp,16
    e884bb34:	8522                	mv	a0,s0
    e884bb36:	aa9fb0ef          	jal	ra,e88475de <CFStringGetCString>
		require_action_quiet( good, exit, err = kSizeErr );
    e884bb3a:	e919                	bnez	a0,e884bb50 <CFGetHardwareAddress+0x54>
    e884bb3c:	7479                	lui	s0,0xffffe
    e884bb3e:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
	if( err && inBuf )	memset(inBuf, 0, inLen );
    e884bb42:	ccb1                	beqz	s1,e884bb9e <CFGetHardwareAddress+0xa2>
    e884bb44:	864e                	mv	a2,s3
    e884bb46:	4581                	li	a1,0
    e884bb48:	8526                	mv	a0,s1
    e884bb4a:	04b300ef          	jal	ra,e887c394 <eLIBs_memset>
    e884bb4e:	a881                	j	e884bb9e <CFGetHardwareAddress+0xa2>
		if( !inBuf )
    e884bb50:	e489                	bnez	s1,e884bb5a <CFGetHardwareAddress+0x5e>
			require_action( inLen <= sizeof( tempAddr ), exit, err = kSizeErr );
    e884bb52:	47a1                	li	a5,8
    e884bb54:	1337ee63          	bltu	a5,s3,e884bc90 <CFGetHardwareAddress+0x194>
			inBuf = tempAddr;
    e884bb58:	0024                	addi	s1,sp,8
		err = TextToHardwareAddress( tempStr, kSizeCString, inLen, inBuf );
    e884bb5a:	86a6                	mv	a3,s1
    e884bb5c:	864e                	mv	a2,s3
    e884bb5e:	55fd                	li	a1,-1
    e884bb60:	0808                	addi	a0,sp,16
    e884bb62:	43a130ef          	jal	ra,e885ef9c <TextToHardwareAddress>
    e884bb66:	842a                	mv	s0,a0
		require_noerr_quiet( err, exit );
    e884bb68:	fd71                	bnez	a0,e884bb44 <CFGetHardwareAddress+0x48>
		if(      inLen == 6 ) scalar = ReadBig48( inBuf );
    e884bb6a:	4799                	li	a5,6
    e884bb6c:	04f99663          	bne	s3,a5,e884bbb8 <CFGetHardwareAddress+0xbc>
    e884bb70:	0014c703          	lbu	a4,1(s1)
    e884bb74:	0004c783          	lbu	a5,0(s1)
    e884bb78:	1702                	slli	a4,a4,0x20
    e884bb7a:	17a2                	slli	a5,a5,0x28
    e884bb7c:	8fd9                	or	a5,a5,a4
    e884bb7e:	0054c703          	lbu	a4,5(s1)
    e884bb82:	8fd9                	or	a5,a5,a4
    e884bb84:	0024c703          	lbu	a4,2(s1)
    e884bb88:	0762                	slli	a4,a4,0x18
    e884bb8a:	8fd9                	or	a5,a5,a4
    e884bb8c:	0034c703          	lbu	a4,3(s1)
    e884bb90:	0742                	slli	a4,a4,0x10
    e884bb92:	8fd9                	or	a5,a5,a4
    e884bb94:	0044c703          	lbu	a4,4(s1)
    e884bb98:	0722                	slli	a4,a4,0x8
    e884bb9a:	8fd9                	or	a5,a5,a4
		else if( inLen == 8 ) scalar = ReadBig64( inBuf );
    e884bb9c:	e03e                	sd	a5,0(sp)
	if( outErr )		*outErr = err;
    e884bb9e:	00090463          	beqz	s2,e884bba6 <CFGetHardwareAddress+0xaa>
    e884bba2:	00892023          	sw	s0,0(s2)
}
    e884bba6:	70e6                	ld	ra,120(sp)
    e884bba8:	7446                	ld	s0,112(sp)
    e884bbaa:	6502                	ld	a0,0(sp)
    e884bbac:	74a6                	ld	s1,104(sp)
    e884bbae:	7906                	ld	s2,96(sp)
    e884bbb0:	69e6                	ld	s3,88(sp)
    e884bbb2:	6a46                	ld	s4,80(sp)
    e884bbb4:	6109                	addi	sp,sp,128
    e884bbb6:	8082                	ret
		else if( inLen == 8 ) scalar = ReadBig64( inBuf );
    e884bbb8:	47a1                	li	a5,8
    e884bbba:	00f98463          	beq	s3,a5,e884bbc2 <CFGetHardwareAddress+0xc6>
	err = kNoErr;
    e884bbbe:	4401                	li	s0,0
    e884bbc0:	bff9                	j	e884bb9e <CFGetHardwareAddress+0xa2>
		else if( inLen == 8 ) scalar = ReadBig64( inBuf );
    e884bbc2:	609c                	ld	a5,0(s1)
    e884bbc4:	8207978b          	rev	a5,a5
    e884bbc8:	bfd1                	j	e884bb9c <CFGetHardwareAddress+0xa0>
	else if( typeID == CFNumberGetTypeID() )
    e884bbca:	8a1fb0ef          	jal	ra,e884746a <CFNumberGetTypeID>
    e884bbce:	2501                	sext.w	a0,a0
    e884bbd0:	05451063          	bne	a0,s4,e884bc10 <CFGetHardwareAddress+0x114>
		CFNumberGetValue( (CFNumberRef) inObj, kCFNumberSInt64Type, &scalar );
    e884bbd4:	860a                	mv	a2,sp
    e884bbd6:	4591                	li	a1,4
    e884bbd8:	8522                	mv	a0,s0
    e884bbda:	8a9fb0ef          	jal	ra,e8847482 <CFNumberGetValue>
		if( inBuf )
    e884bbde:	d0e5                	beqz	s1,e884bbbe <CFGetHardwareAddress+0xc2>
			if(      inLen == 6 ) WriteBig48( inBuf, scalar );
    e884bbe0:	4702                	lw	a4,0(sp)
    e884bbe2:	6782                	ld	a5,0(sp)
    e884bbe4:	4619                	li	a2,6
    e884bbe6:	9007170b          	revw	a4,a4
    e884bbea:	8207968b          	rev	a3,a5
    e884bbee:	00c99c63          	bne	s3,a2,e884bc06 <CFGetHardwareAddress+0x10a>
    e884bbf2:	0287d693          	srli	a3,a5,0x28
    e884bbf6:	9381                	srli	a5,a5,0x20
    e884bbf8:	00d48023          	sb	a3,0(s1)
    e884bbfc:	00f480a3          	sb	a5,1(s1)
    e884bc00:	00e4a123          	sw	a4,2(s1)
    e884bc04:	bf6d                	j	e884bbbe <CFGetHardwareAddress+0xc2>
			else if( inLen == 8 ) WriteBig64( inBuf, scalar );
    e884bc06:	47a1                	li	a5,8
    e884bc08:	faf99be3          	bne	s3,a5,e884bbbe <CFGetHardwareAddress+0xc2>
    e884bc0c:	e094                	sd	a3,0(s1)
    e884bc0e:	bf45                	j	e884bbbe <CFGetHardwareAddress+0xc2>
	else if( typeID == CFDataGetTypeID() )
    e884bc10:	e82fb0ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e884bc14:	2501                	sext.w	a0,a0
    e884bc16:	07451963          	bne	a0,s4,e884bc88 <CFGetHardwareAddress+0x18c>
		require_action_quiet( CFDataGetLength( (CFDataRef) inObj ) == (CFIndex) inLen, exit, err = kSizeErr );
    e884bc1a:	8522                	mv	a0,s0
    e884bc1c:	ebafb0ef          	jal	ra,e88472d6 <CFDataGetLength>
    e884bc20:	0009879b          	sext.w	a5,s3
    e884bc24:	f0f51ce3          	bne	a0,a5,e884bb3c <CFGetHardwareAddress+0x40>
		ptr = CFDataGetBytePtr( (CFDataRef) inObj );
    e884bc28:	8522                	mv	a0,s0
    e884bc2a:	ec2fb0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e884bc2e:	842a                	mv	s0,a0
		if( inBuf ) memcpy( inBuf, ptr, inLen );
    e884bc30:	c491                	beqz	s1,e884bc3c <CFGetHardwareAddress+0x140>
    e884bc32:	85aa                	mv	a1,a0
    e884bc34:	864e                	mv	a2,s3
    e884bc36:	8526                	mv	a0,s1
    e884bc38:	768300ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		if(      inLen == 6 ) scalar = ReadBig48( ptr );
    e884bc3c:	4799                	li	a5,6
    e884bc3e:	02f99a63          	bne	s3,a5,e884bc72 <CFGetHardwareAddress+0x176>
    e884bc42:	00144703          	lbu	a4,1(s0)
    e884bc46:	00044783          	lbu	a5,0(s0)
    e884bc4a:	1702                	slli	a4,a4,0x20
    e884bc4c:	17a2                	slli	a5,a5,0x28
    e884bc4e:	8fd9                	or	a5,a5,a4
    e884bc50:	00544703          	lbu	a4,5(s0)
    e884bc54:	8fd9                	or	a5,a5,a4
    e884bc56:	00244703          	lbu	a4,2(s0)
    e884bc5a:	0762                	slli	a4,a4,0x18
    e884bc5c:	8fd9                	or	a5,a5,a4
    e884bc5e:	00344703          	lbu	a4,3(s0)
    e884bc62:	0742                	slli	a4,a4,0x10
    e884bc64:	8fd9                	or	a5,a5,a4
    e884bc66:	00444703          	lbu	a4,4(s0)
    e884bc6a:	0722                	slli	a4,a4,0x8
    e884bc6c:	8fd9                	or	a5,a5,a4
		else if( inLen == 8 ) scalar = ReadBig64( ptr );
    e884bc6e:	e03e                	sd	a5,0(sp)
    e884bc70:	b7b9                	j	e884bbbe <CFGetHardwareAddress+0xc2>
    e884bc72:	47a1                	li	a5,8
    e884bc74:	f4f995e3          	bne	s3,a5,e884bbbe <CFGetHardwareAddress+0xc2>
    e884bc78:	601c                	ld	a5,0(s0)
    e884bc7a:	8207978b          	rev	a5,a5
    e884bc7e:	bfc5                	j	e884bc6e <CFGetHardwareAddress+0x172>
	require_action_quiet( inObj, exit, err = kParamErr );
    e884bc80:	7479                	lui	s0,0xffffe
    e884bc82:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e884bc86:	bd75                	j	e884bb42 <CFGetHardwareAddress+0x46>
		err = kTypeErr;
    e884bc88:	7479                	lui	s0,0xffffe
    e884bc8a:	59c40413          	addi	s0,s0,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
    e884bc8e:	bd55                	j	e884bb42 <CFGetHardwareAddress+0x46>
			require_action( inLen <= sizeof( tempAddr ), exit, err = kSizeErr );
    e884bc90:	7479                	lui	s0,0xffffe
    e884bc92:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e884bc96:	b721                	j	e884bb9e <CFGetHardwareAddress+0xa2>

00000000e884bc98 <CFGetInt64>:
{
    e884bc98:	7171                	addi	sp,sp,-176
    e884bc9a:	ed26                	sd	s1,152(sp)
    e884bc9c:	f506                	sd	ra,168(sp)
    e884bc9e:	f122                	sd	s0,160(sp)
    e884bca0:	e94a                	sd	s2,144(sp)
	int64_t			value = 0;
    e884bca2:	e402                	sd	zero,8(sp)
{
    e884bca4:	84ae                	mv	s1,a1
	require_action_quiet( inObj, exit, err = kParamErr );
    e884bca6:	1c050563          	beqz	a0,e884be70 <CFGetInt64+0x1d8>
    e884bcaa:	842a                	mv	s0,a0
	typeID = CFGetTypeID( inObj );
    e884bcac:	c86fb0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884bcb0:	0005091b          	sext.w	s2,a0
	if( typeID == CFNumberGetTypeID() )
    e884bcb4:	fb6fb0ef          	jal	ra,e884746a <CFNumberGetTypeID>
    e884bcb8:	2501                	sext.w	a0,a0
    e884bcba:	07251863          	bne	a0,s2,e884bd2a <CFGetInt64+0x92>
		if( CFNumberIsFloatType( (CFNumberRef) inObj ) )
    e884bcbe:	8522                	mv	a0,s0
    e884bcc0:	a8efd0ef          	jal	ra,e8848f4e <CFLNumberIsFloatType>
    e884bcc4:	cd21                	beqz	a0,e884bd1c <CFGetInt64+0x84>
			CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &tempDouble );
    e884bcc6:	0810                	addi	a2,sp,16
    e884bcc8:	45b5                	li	a1,13
    e884bcca:	8522                	mv	a0,s0
			tempDouble = 0;
    e884bccc:	e802                	sd	zero,16(sp)
			CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &tempDouble );
    e884bcce:	fb4fb0ef          	jal	ra,e8847482 <CFNumberGetValue>
			if(      tempDouble < INT64_MIN ) { value = INT64_MIN; err = kRangeErr; goto exit; }
    e884bcd2:	27c2                	fld	fa5,16(sp)
    e884bcd4:	00073797          	auipc	a5,0x73
    e884bcd8:	1ac7b707          	fld	fa4,428(a5) # e88bee80 <kCFRunLoopTimerClass+0xd8>
    e884bcdc:	a2e797d3          	flt.d	a5,fa5,fa4
    e884bce0:	c385                	beqz	a5,e884bd00 <CFGetInt64+0x68>
    e884bce2:	57fd                	li	a5,-1
    e884bce4:	17fe                	slli	a5,a5,0x3f
			else if( tempDouble > INT64_MAX ) { value = INT64_MAX; err = kRangeErr; goto exit; }
    e884bce6:	e43e                	sd	a5,8(sp)
			if(      tempDouble < INT64_MIN ) { value = INT64_MIN; err = kRangeErr; goto exit; }
    e884bce8:	77f9                	lui	a5,0xffffe
    e884bcea:	5ca78793          	addi	a5,a5,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
	if( outErr ) *outErr = err;
    e884bcee:	c091                	beqz	s1,e884bcf2 <CFGetInt64+0x5a>
    e884bcf0:	c09c                	sw	a5,0(s1)
}
    e884bcf2:	70aa                	ld	ra,168(sp)
    e884bcf4:	740a                	ld	s0,160(sp)
    e884bcf6:	6522                	ld	a0,8(sp)
    e884bcf8:	64ea                	ld	s1,152(sp)
    e884bcfa:	694a                	ld	s2,144(sp)
    e884bcfc:	614d                	addi	sp,sp,176
    e884bcfe:	8082                	ret
			else if( tempDouble > INT64_MAX ) { value = INT64_MAX; err = kRangeErr; goto exit; }
    e884bd00:	00073797          	auipc	a5,0x73
    e884bd04:	1887b707          	fld	fa4,392(a5) # e88bee88 <kCFRunLoopTimerClass+0xe0>
    e884bd08:	a2f717d3          	flt.d	a5,fa4,fa5
    e884bd0c:	c781                	beqz	a5,e884bd14 <CFGetInt64+0x7c>
    e884bd0e:	57fd                	li	a5,-1
    e884bd10:	8385                	srli	a5,a5,0x1
    e884bd12:	bfd1                	j	e884bce6 <CFGetInt64+0x4e>
			else								value = (int64_t) tempDouble;
    e884bd14:	c22797d3          	fcvt.l.d	a5,fa5,rtz
	else if( ( (CFBooleanRef) inObj ) == kCFBooleanTrue )  value = 1;
    e884bd18:	e43e                	sd	a5,8(sp)
    e884bd1a:	a031                	j	e884bd26 <CFGetInt64+0x8e>
			CFNumberGetValue( (CFNumberRef) inObj, kCFNumberSInt64Type, &value );
    e884bd1c:	0030                	addi	a2,sp,8
    e884bd1e:	4591                	li	a1,4
    e884bd20:	8522                	mv	a0,s0
    e884bd22:	f60fb0ef          	jal	ra,e8847482 <CFNumberGetValue>
	err = kNoErr;
    e884bd26:	4781                	li	a5,0
    e884bd28:	b7d9                	j	e884bcee <CFGetInt64+0x56>
	else if( ( (CFBooleanRef) inObj ) == kCFBooleanTrue )  value = 1;
    e884bd2a:	00089797          	auipc	a5,0x89
    e884bd2e:	fa678793          	addi	a5,a5,-90 # e88d4cd0 <kCFLBooleanTrue>
    e884bd32:	639c                	ld	a5,0(a5)
    e884bd34:	00879463          	bne	a5,s0,e884bd3c <CFGetInt64+0xa4>
    e884bd38:	4785                	li	a5,1
    e884bd3a:	bff9                	j	e884bd18 <CFGetInt64+0x80>
	else if( ( (CFBooleanRef) inObj ) == kCFBooleanFalse ) value = 0;
    e884bd3c:	00089797          	auipc	a5,0x89
    e884bd40:	f8c78793          	addi	a5,a5,-116 # e88d4cc8 <kCFLBooleanFalse>
    e884bd44:	639c                	ld	a5,0(a5)
    e884bd46:	00879463          	bne	a5,s0,e884bd4e <CFGetInt64+0xb6>
    e884bd4a:	e402                	sd	zero,8(sp)
    e884bd4c:	bfe9                	j	e884bd26 <CFGetInt64+0x8e>
	else if( typeID == CFStringGetTypeID() )
    e884bd4e:	f46fb0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e884bd52:	2501                	sext.w	a0,a0
    e884bd54:	0d251b63          	bne	a0,s2,e884be2a <CFGetInt64+0x192>
		good = CFStringGetCString( (CFStringRef) inObj, tempStr, (CFIndex) sizeof( tempStr ), kCFStringEncodingASCII );
    e884bd58:	60000693          	li	a3,1536
    e884bd5c:	08000613          	li	a2,128
    e884bd60:	080c                	addi	a1,sp,16
    e884bd62:	8522                	mv	a0,s0
    e884bd64:	87bfb0ef          	jal	ra,e88475de <CFStringGetCString>
		require_action_quiet( good, exit, err = kSizeErr );
    e884bd68:	e509                	bnez	a0,e884bd72 <CFGetInt64+0xda>
		require_action_quiet( ( end - ptr ) <= ( (ptrdiff_t) sizeof( int64_t ) ), exit, err = kSizeErr );
    e884bd6a:	77f9                	lui	a5,0xffffe
    e884bd6c:	5a978793          	addi	a5,a5,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e884bd70:	bfbd                	j	e884bcee <CFGetInt64+0x56>
		if(      IsTrueString( tempStr, kSizeCString ) )					value = 1;
    e884bd72:	0005b617          	auipc	a2,0x5b
    e884bd76:	7ae60613          	addi	a2,a2,1966 # e88a7520 <end.8789+0x3e78>
    e884bd7a:	55fd                	li	a1,-1
    e884bd7c:	0808                	addi	a0,sp,16
    e884bd7e:	3df130ef          	jal	ra,e885f95c <strnicmpx>
    e884bd82:	d95d                	beqz	a0,e884bd38 <CFGetInt64+0xa0>
    e884bd84:	00073617          	auipc	a2,0x73
    e884bd88:	10c60613          	addi	a2,a2,268 # e88bee90 <kCFRunLoopTimerClass+0xe8>
    e884bd8c:	55fd                	li	a1,-1
    e884bd8e:	0808                	addi	a0,sp,16
    e884bd90:	3cd130ef          	jal	ra,e885f95c <strnicmpx>
    e884bd94:	d155                	beqz	a0,e884bd38 <CFGetInt64+0xa0>
    e884bd96:	00074617          	auipc	a2,0x74
    e884bd9a:	6e260613          	addi	a2,a2,1762 # e88c0478 <__PRETTY_FUNCTION__.8975+0x3e8>
    e884bd9e:	55fd                	li	a1,-1
    e884bda0:	0808                	addi	a0,sp,16
    e884bda2:	3bb130ef          	jal	ra,e885f95c <strnicmpx>
    e884bda6:	d949                	beqz	a0,e884bd38 <CFGetInt64+0xa0>
    e884bda8:	0005e617          	auipc	a2,0x5e
    e884bdac:	6a860613          	addi	a2,a2,1704 # e88aa450 <mDNS_DomainTypeNames+0xaa0>
    e884bdb0:	55fd                	li	a1,-1
    e884bdb2:	0808                	addi	a0,sp,16
    e884bdb4:	3a9130ef          	jal	ra,e885f95c <strnicmpx>
    e884bdb8:	d141                	beqz	a0,e884bd38 <CFGetInt64+0xa0>
    e884bdba:	0007d617          	auipc	a2,0x7d
    e884bdbe:	57660613          	addi	a2,a2,1398 # e88c9330 <__PRETTY_FUNCTION__.13159+0x640>
    e884bdc2:	55fd                	li	a1,-1
    e884bdc4:	0808                	addi	a0,sp,16
    e884bdc6:	397130ef          	jal	ra,e885f95c <strnicmpx>
    e884bdca:	d53d                	beqz	a0,e884bd38 <CFGetInt64+0xa0>
		else if( IsFalseString( tempStr, kSizeCString ) )					value = 0;
    e884bdcc:	0005b617          	auipc	a2,0x5b
    e884bdd0:	75c60613          	addi	a2,a2,1884 # e88a7528 <end.8789+0x3e80>
    e884bdd4:	55fd                	li	a1,-1
    e884bdd6:	0808                	addi	a0,sp,16
    e884bdd8:	385130ef          	jal	ra,e885f95c <strnicmpx>
    e884bddc:	d53d                	beqz	a0,e884bd4a <CFGetInt64+0xb2>
    e884bdde:	00073617          	auipc	a2,0x73
    e884bde2:	0ba60613          	addi	a2,a2,186 # e88bee98 <kCFRunLoopTimerClass+0xf0>
    e884bde6:	55fd                	li	a1,-1
    e884bde8:	0808                	addi	a0,sp,16
    e884bdea:	373130ef          	jal	ra,e885f95c <strnicmpx>
    e884bdee:	dd31                	beqz	a0,e884bd4a <CFGetInt64+0xb2>
    e884bdf0:	00074617          	auipc	a2,0x74
    e884bdf4:	4e060613          	addi	a2,a2,1248 # e88c02d0 <__PRETTY_FUNCTION__.8975+0x240>
    e884bdf8:	55fd                	li	a1,-1
    e884bdfa:	0808                	addi	a0,sp,16
    e884bdfc:	361130ef          	jal	ra,e885f95c <strnicmpx>
    e884be00:	d529                	beqz	a0,e884bd4a <CFGetInt64+0xb2>
    e884be02:	00073617          	auipc	a2,0x73
    e884be06:	09e60613          	addi	a2,a2,158 # e88beea0 <kCFRunLoopTimerClass+0xf8>
    e884be0a:	55fd                	li	a1,-1
    e884be0c:	0808                	addi	a0,sp,16
    e884be0e:	34f130ef          	jal	ra,e885f95c <strnicmpx>
    e884be12:	dd05                	beqz	a0,e884bd4a <CFGetInt64+0xb2>
    e884be14:	00083617          	auipc	a2,0x83
    e884be18:	3ac60613          	addi	a2,a2,940 # e88cf1c0 <err_to_errno_table+0xe8>
    e884be1c:	55fd                	li	a1,-1
    e884be1e:	0808                	addi	a0,sp,16
    e884be20:	33d130ef          	jal	ra,e885f95c <strnicmpx>
    e884be24:	f00511e3          	bnez	a0,e884bd26 <CFGetInt64+0x8e>
    e884be28:	b70d                	j	e884bd4a <CFGetInt64+0xb2>
	else if( typeID == CFDataGetTypeID() )
    e884be2a:	c68fb0ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e884be2e:	2501                	sext.w	a0,a0
    e884be30:	03251763          	bne	a0,s2,e884be5e <CFGetInt64+0x1c6>
		ptr = CFDataGetBytePtr( (CFDataRef) inObj );
    e884be34:	8522                	mv	a0,s0
    e884be36:	cb6fb0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e884be3a:	892a                	mv	s2,a0
		end = ptr + CFDataGetLength( (CFDataRef) inObj );
    e884be3c:	8522                	mv	a0,s0
    e884be3e:	c98fb0ef          	jal	ra,e88472d6 <CFDataGetLength>
    e884be42:	00a90733          	add	a4,s2,a0
		require_action_quiet( ( end - ptr ) <= ( (ptrdiff_t) sizeof( int64_t ) ), exit, err = kSizeErr );
    e884be46:	47a1                	li	a5,8
    e884be48:	f2a7c1e3          	blt	a5,a0,e884bd6a <CFGetInt64+0xd2>
		for( ; ptr < end; ++ptr )
    e884be4c:	67a2                	ld	a5,8(sp)
    e884be4e:	ece97ce3          	bgeu	s2,a4,e884bd26 <CFGetInt64+0x8e>
			value = ( value << 8 ) + *ptr;
    e884be52:	9819468b          	lbuia	a3,(s2),1,0
    e884be56:	07a2                	slli	a5,a5,0x8
    e884be58:	97b6                	add	a5,a5,a3
    e884be5a:	e43e                	sd	a5,8(sp)
		for( ; ptr < end; ++ptr )
    e884be5c:	bfc5                	j	e884be4c <CFGetInt64+0x1b4>
	else if( typeID == CFNullGetTypeID() ) {} // Leave value at 0.
    e884be5e:	be5fc0ef          	jal	ra,e8848a42 <CFLNullGetTypeID>
    e884be62:	2501                	sext.w	a0,a0
    e884be64:	ed2501e3          	beq	a0,s2,e884bd26 <CFGetInt64+0x8e>
		err = kTypeErr;
    e884be68:	77f9                	lui	a5,0xffffe
    e884be6a:	59c78793          	addi	a5,a5,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
    e884be6e:	b541                	j	e884bcee <CFGetInt64+0x56>
	require_action_quiet( inObj, exit, err = kParamErr );
    e884be70:	77f9                	lui	a5,0xffffe
    e884be72:	5cf78793          	addi	a5,a5,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e884be76:	bda5                	j	e884bcee <CFGetInt64+0x56>

00000000e884be78 <CFObjectGetPropertyInt64Sync>:
{
    e884be78:	1101                	addi	sp,sp,-32
    e884be7a:	e422                	sd	s0,8(sp)
    e884be7c:	ec06                	sd	ra,24(sp)
    e884be7e:	e826                	sd	s1,16(sp)
    e884be80:	8442                	mv	s0,a6
	cfValue = CFObjectCopyProperty( inObject, inQueue, inFunc, inFlags, inProperty, inQualifier, outErr );
    e884be82:	979ff0ef          	jal	ra,e884b7fa <CFObjectCopyProperty>
	if( cfValue )
    e884be86:	cd19                	beqz	a0,e884bea4 <CFObjectGetPropertyInt64Sync+0x2c>
		value = CFGetInt64( cfValue, outErr );
    e884be88:	85a2                	mv	a1,s0
    e884be8a:	84aa                	mv	s1,a0
    e884be8c:	e0dff0ef          	jal	ra,e884bc98 <CFGetInt64>
    e884be90:	842a                	mv	s0,a0
		CFRelease( cfValue );
    e884be92:	8526                	mv	a0,s1
    e884be94:	ab6fb0ef          	jal	ra,e884714a <CFRelease>
}
    e884be98:	8522                	mv	a0,s0
    e884be9a:	60e2                	ld	ra,24(sp)
    e884be9c:	6422                	ld	s0,8(sp)
    e884be9e:	64c2                	ld	s1,16(sp)
    e884bea0:	6105                	addi	sp,sp,32
    e884bea2:	8082                	ret
	return( 0 );
    e884bea4:	4401                	li	s0,0
    e884bea6:	bfcd                	j	e884be98 <CFObjectGetPropertyInt64Sync+0x20>

00000000e884bea8 <CFGetDouble>:
{
    e884bea8:	7171                	addi	sp,sp,-176
    e884beaa:	ed26                	sd	s1,152(sp)
    e884beac:	f506                	sd	ra,168(sp)
    e884beae:	f122                	sd	s0,160(sp)
    e884beb0:	e94a                	sd	s2,144(sp)
	double			value = 0;
    e884beb2:	e402                	sd	zero,8(sp)
{
    e884beb4:	84ae                	mv	s1,a1
	require_action_quiet( inObj, exit, err = kParamErr );
    e884beb6:	ed19                	bnez	a0,e884bed4 <CFGetDouble+0x2c>
    e884beb8:	77f9                	lui	a5,0xffffe
    e884beba:	5cf7879b          	addiw	a5,a5,1487
		require_action_quiet( good, exit, err = kSizeErr );
    e884bebe:	c23e                	sw	a5,4(sp)
	if( outErr ) *outErr = err;
    e884bec0:	c099                	beqz	s1,e884bec6 <CFGetDouble+0x1e>
    e884bec2:	4792                	lw	a5,4(sp)
    e884bec4:	c09c                	sw	a5,0(s1)
}
    e884bec6:	70aa                	ld	ra,168(sp)
    e884bec8:	740a                	ld	s0,160(sp)
    e884beca:	2522                	fld	fa0,8(sp)
    e884becc:	64ea                	ld	s1,152(sp)
    e884bece:	694a                	ld	s2,144(sp)
    e884bed0:	614d                	addi	sp,sp,176
    e884bed2:	8082                	ret
    e884bed4:	842a                	mv	s0,a0
	typeID = CFGetTypeID( inObj );
    e884bed6:	a5cfb0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884beda:	0005091b          	sext.w	s2,a0
	if( typeID == CFNumberGetTypeID() )
    e884bede:	d8cfb0ef          	jal	ra,e884746a <CFNumberGetTypeID>
    e884bee2:	2501                	sext.w	a0,a0
    e884bee4:	01251963          	bne	a0,s2,e884bef6 <CFGetDouble+0x4e>
		CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &value );
    e884bee8:	0030                	addi	a2,sp,8
    e884beea:	45b5                	li	a1,13
    e884beec:	8522                	mv	a0,s0
    e884beee:	d94fb0ef          	jal	ra,e8847482 <CFNumberGetValue>
		err = kNoErr;
    e884bef2:	c202                	sw	zero,4(sp)
    e884bef4:	b7f1                	j	e884bec0 <CFGetDouble+0x18>
	else if( typeID == CFStringGetTypeID() )
    e884bef6:	d9efb0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e884befa:	2501                	sext.w	a0,a0
    e884befc:	0f251563          	bne	a0,s2,e884bfe6 <CFGetDouble+0x13e>
		good = CFStringGetCString( (CFStringRef) inObj, tempStr, (CFIndex) sizeof( tempStr ), kCFStringEncodingASCII );
    e884bf00:	60000693          	li	a3,1536
    e884bf04:	08000613          	li	a2,128
    e884bf08:	080c                	addi	a1,sp,16
    e884bf0a:	8522                	mv	a0,s0
    e884bf0c:	ed2fb0ef          	jal	ra,e88475de <CFStringGetCString>
		require_action_quiet( good, exit, err = kSizeErr );
    e884bf10:	e509                	bnez	a0,e884bf1a <CFGetDouble+0x72>
    e884bf12:	77f9                	lui	a5,0xffffe
    e884bf14:	5a97879b          	addiw	a5,a5,1449
    e884bf18:	b75d                	j	e884bebe <CFGetDouble+0x16>
		if(      IsTrueString( tempStr, kSizeCString ) )				value = 1;
    e884bf1a:	0005b617          	auipc	a2,0x5b
    e884bf1e:	60660613          	addi	a2,a2,1542 # e88a7520 <end.8789+0x3e78>
    e884bf22:	55fd                	li	a1,-1
    e884bf24:	0808                	addi	a0,sp,16
    e884bf26:	237130ef          	jal	ra,e885f95c <strnicmpx>
    e884bf2a:	e519                	bnez	a0,e884bf38 <CFGetDouble+0x90>
    e884bf2c:	00073797          	auipc	a5,0x73
    e884bf30:	f4c7b787          	fld	fa5,-180(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e884bf34:	a43e                	fsd	fa5,8(sp)
    e884bf36:	bf75                	j	e884bef2 <CFGetDouble+0x4a>
    e884bf38:	00073617          	auipc	a2,0x73
    e884bf3c:	f5860613          	addi	a2,a2,-168 # e88bee90 <kCFRunLoopTimerClass+0xe8>
    e884bf40:	55fd                	li	a1,-1
    e884bf42:	0808                	addi	a0,sp,16
    e884bf44:	219130ef          	jal	ra,e885f95c <strnicmpx>
    e884bf48:	d175                	beqz	a0,e884bf2c <CFGetDouble+0x84>
    e884bf4a:	00074617          	auipc	a2,0x74
    e884bf4e:	52e60613          	addi	a2,a2,1326 # e88c0478 <__PRETTY_FUNCTION__.8975+0x3e8>
    e884bf52:	55fd                	li	a1,-1
    e884bf54:	0808                	addi	a0,sp,16
    e884bf56:	207130ef          	jal	ra,e885f95c <strnicmpx>
    e884bf5a:	d969                	beqz	a0,e884bf2c <CFGetDouble+0x84>
    e884bf5c:	0005e617          	auipc	a2,0x5e
    e884bf60:	4f460613          	addi	a2,a2,1268 # e88aa450 <mDNS_DomainTypeNames+0xaa0>
    e884bf64:	55fd                	li	a1,-1
    e884bf66:	0808                	addi	a0,sp,16
    e884bf68:	1f5130ef          	jal	ra,e885f95c <strnicmpx>
    e884bf6c:	d161                	beqz	a0,e884bf2c <CFGetDouble+0x84>
    e884bf6e:	0007d617          	auipc	a2,0x7d
    e884bf72:	3c260613          	addi	a2,a2,962 # e88c9330 <__PRETTY_FUNCTION__.13159+0x640>
    e884bf76:	55fd                	li	a1,-1
    e884bf78:	0808                	addi	a0,sp,16
    e884bf7a:	1e3130ef          	jal	ra,e885f95c <strnicmpx>
    e884bf7e:	d55d                	beqz	a0,e884bf2c <CFGetDouble+0x84>
		else if( IsFalseString( tempStr, kSizeCString ) )				value = 0;
    e884bf80:	0005b617          	auipc	a2,0x5b
    e884bf84:	5a860613          	addi	a2,a2,1448 # e88a7528 <end.8789+0x3e80>
    e884bf88:	55fd                	li	a1,-1
    e884bf8a:	0808                	addi	a0,sp,16
    e884bf8c:	1d1130ef          	jal	ra,e885f95c <strnicmpx>
    e884bf90:	e119                	bnez	a0,e884bf96 <CFGetDouble+0xee>
    e884bf92:	e402                	sd	zero,8(sp)
    e884bf94:	bfb9                	j	e884bef2 <CFGetDouble+0x4a>
    e884bf96:	00073617          	auipc	a2,0x73
    e884bf9a:	f0260613          	addi	a2,a2,-254 # e88bee98 <kCFRunLoopTimerClass+0xf0>
    e884bf9e:	55fd                	li	a1,-1
    e884bfa0:	0808                	addi	a0,sp,16
    e884bfa2:	1bb130ef          	jal	ra,e885f95c <strnicmpx>
    e884bfa6:	d575                	beqz	a0,e884bf92 <CFGetDouble+0xea>
    e884bfa8:	00074617          	auipc	a2,0x74
    e884bfac:	32860613          	addi	a2,a2,808 # e88c02d0 <__PRETTY_FUNCTION__.8975+0x240>
    e884bfb0:	55fd                	li	a1,-1
    e884bfb2:	0808                	addi	a0,sp,16
    e884bfb4:	1a9130ef          	jal	ra,e885f95c <strnicmpx>
    e884bfb8:	dd69                	beqz	a0,e884bf92 <CFGetDouble+0xea>
    e884bfba:	00073617          	auipc	a2,0x73
    e884bfbe:	ee660613          	addi	a2,a2,-282 # e88beea0 <kCFRunLoopTimerClass+0xf8>
    e884bfc2:	55fd                	li	a1,-1
    e884bfc4:	0808                	addi	a0,sp,16
    e884bfc6:	197130ef          	jal	ra,e885f95c <strnicmpx>
    e884bfca:	d561                	beqz	a0,e884bf92 <CFGetDouble+0xea>
    e884bfcc:	00083617          	auipc	a2,0x83
    e884bfd0:	1f460613          	addi	a2,a2,500 # e88cf1c0 <err_to_errno_table+0xe8>
    e884bfd4:	55fd                	li	a1,-1
    e884bfd6:	0808                	addi	a0,sp,16
    e884bfd8:	185130ef          	jal	ra,e885f95c <strnicmpx>
    e884bfdc:	d95d                	beqz	a0,e884bf92 <CFGetDouble+0xea>
		else { err = kFormatErr; goto exit; }
    e884bfde:	77f9                	lui	a5,0xffffe
    e884bfe0:	5c37879b          	addiw	a5,a5,1475
    e884bfe4:	bde9                	j	e884bebe <CFGetDouble+0x16>
		value = (double) CFGetInt64( inObj, &err );
    e884bfe6:	004c                	addi	a1,sp,4
    e884bfe8:	8522                	mv	a0,s0
    e884bfea:	cafff0ef          	jal	ra,e884bc98 <CFGetInt64>
    e884bfee:	d22577d3          	fcvt.d.l	fa5,a0
    e884bff2:	a43e                	fsd	fa5,8(sp)
    e884bff4:	b5f1                	j	e884bec0 <CFGetDouble+0x18>

00000000e884bff6 <CFArrayEnsureCreatedAndAppend>:
{
    e884bff6:	1101                	addi	sp,sp,-32
    e884bff8:	e422                	sd	s0,8(sp)
    e884bffa:	e826                	sd	s1,16(sp)
    e884bffc:	ec06                	sd	ra,24(sp)
    e884bffe:	842a                	mv	s0,a0
	CFMutableArrayRef		array = *ioArray;
    e884c000:	6108                	ld	a0,0(a0)
{
    e884c002:	84ae                	mv	s1,a1
	if( !array )
    e884c004:	e911                	bnez	a0,e884c018 <CFArrayEnsureCreatedAndAppend+0x22>
		array = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e884c006:	00072617          	auipc	a2,0x72
    e884c00a:	76a60613          	addi	a2,a2,1898 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e884c00e:	4581                	li	a1,0
    e884c010:	9b6fb0ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
		require_action( array, exit, err = kNoMemoryErr );
    e884c014:	c919                	beqz	a0,e884c02a <CFArrayEnsureCreatedAndAppend+0x34>
		*ioArray = array;
    e884c016:	e008                	sd	a0,0(s0)
	CFArrayAppendValue( array, inValue );
    e884c018:	85a6                	mv	a1,s1
    e884c01a:	a56fb0ef          	jal	ra,e8847270 <CFArrayAppendValue>
	err = kNoErr;
    e884c01e:	4501                	li	a0,0
}
    e884c020:	60e2                	ld	ra,24(sp)
    e884c022:	6422                	ld	s0,8(sp)
    e884c024:	64c2                	ld	s1,16(sp)
    e884c026:	6105                	addi	sp,sp,32
    e884c028:	8082                	ret
		require_action( array, exit, err = kNoMemoryErr );
    e884c02a:	7579                	lui	a0,0xffffe
    e884c02c:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884c030:	bfc5                	j	e884c020 <CFArrayEnsureCreatedAndAppend+0x2a>

00000000e884c032 <CFArrayEnsureCreatedAndAppendCString>:
{
    e884c032:	1101                	addi	sp,sp,-32
    e884c034:	e826                	sd	s1,16(sp)
    e884c036:	ec06                	sd	ra,24(sp)
    e884c038:	e422                	sd	s0,8(sp)
	if( inLen == kSizeCString )
    e884c03a:	57fd                	li	a5,-1
{
    e884c03c:	84aa                	mv	s1,a0
	if( inLen == kSizeCString )
    e884c03e:	02f61463          	bne	a2,a5,e884c066 <CFArrayEnsureCreatedAndAppendCString+0x34>
		cfstr = CFStringCreateWithCString( NULL, (const char *) inStr, kCFStringEncodingUTF8 );
    e884c042:	08000637          	lui	a2,0x8000
    e884c046:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884c04a:	4501                	li	a0,0
    e884c04c:	cd8fb0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884c050:	842a                	mv	s0,a0
		require_action( cfstr, exit, err = kUnknownErr );
    e884c052:	e505                	bnez	a0,e884c07a <CFArrayEnsureCreatedAndAppendCString+0x48>
    e884c054:	74f9                	lui	s1,0xffffe
    e884c056:	5d448493          	addi	s1,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
}
    e884c05a:	60e2                	ld	ra,24(sp)
    e884c05c:	6422                	ld	s0,8(sp)
    e884c05e:	8526                	mv	a0,s1
    e884c060:	64c2                	ld	s1,16(sp)
    e884c062:	6105                	addi	sp,sp,32
    e884c064:	8082                	ret
		cfstr = CFStringCreateWithBytes( NULL, (const uint8_t *) inStr, (CFIndex) inLen, kCFStringEncodingUTF8, false );
    e884c066:	080006b7          	lui	a3,0x8000
    e884c06a:	4701                	li	a4,0
    e884c06c:	10068693          	addi	a3,a3,256 # 8000100 <memcmp-0xe07fff00>
    e884c070:	2601                	sext.w	a2,a2
    e884c072:	4501                	li	a0,0
    e884c074:	c24fb0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884c078:	bfe1                	j	e884c050 <CFArrayEnsureCreatedAndAppendCString+0x1e>
	err = CFArrayEnsureCreatedAndAppend( ioArray, cfstr );
    e884c07a:	85aa                	mv	a1,a0
    e884c07c:	8526                	mv	a0,s1
    e884c07e:	f79ff0ef          	jal	ra,e884bff6 <CFArrayEnsureCreatedAndAppend>
    e884c082:	84aa                	mv	s1,a0
	CFRelease( cfstr );
    e884c084:	8522                	mv	a0,s0
    e884c086:	8c4fb0ef          	jal	ra,e884714a <CFRelease>
exit:
    e884c08a:	bfc1                	j	e884c05a <CFArrayEnsureCreatedAndAppendCString+0x28>

00000000e884c08c <CFArrayGetTypedValueAtIndex>:
{
    e884c08c:	1101                	addi	sp,sp,-32
    e884c08e:	f891540b          	sdd	s0,s1,(sp),0,4
    e884c092:	e84a                	sd	s2,16(sp)
    e884c094:	ec06                	sd	ra,24(sp)
    e884c096:	8932                	mv	s2,a2
    e884c098:	84b6                	mv	s1,a3
	value = CFArrayGetValueAtIndex( inArray, inIndex );
    e884c09a:	96cfb0ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
    e884c09e:	842a                	mv	s0,a0
	require_action_quiet( value, exit, err = kNotFoundErr );
    e884c0a0:	c505                	beqz	a0,e884c0c8 <CFArrayGetTypedValueAtIndex+0x3c>
	require_action_quiet( CFGetTypeID( value ) == inType, exit, err = kTypeErr );
    e884c0a2:	890fb0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884c0a6:	2501                	sext.w	a0,a0
	err = kNoErr;
    e884c0a8:	4781                	li	a5,0
	require_action_quiet( CFGetTypeID( value ) == inType, exit, err = kTypeErr );
    e884c0aa:	01250663          	beq	a0,s2,e884c0b6 <CFArrayGetTypedValueAtIndex+0x2a>
    e884c0ae:	77f9                	lui	a5,0xffffe
    e884c0b0:	59c78793          	addi	a5,a5,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
	CFTypeRef		result = NULL;
    e884c0b4:	4401                	li	s0,0
	if( outErr ) *outErr = err;
    e884c0b6:	c091                	beqz	s1,e884c0ba <CFArrayGetTypedValueAtIndex+0x2e>
    e884c0b8:	c09c                	sw	a5,0(s1)
}
    e884c0ba:	8522                	mv	a0,s0
    e884c0bc:	60e2                	ld	ra,24(sp)
    e884c0be:	f891440b          	ldd	s0,s1,(sp),0,4
    e884c0c2:	6942                	ld	s2,16(sp)
    e884c0c4:	6105                	addi	sp,sp,32
    e884c0c6:	8082                	ret
	require_action_quiet( value, exit, err = kNotFoundErr );
    e884c0c8:	77f9                	lui	a5,0xffffe
    e884c0ca:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e884c0ce:	b7e5                	j	e884c0b6 <CFArrayGetTypedValueAtIndex+0x2a>

00000000e884c0d0 <CFDataCreateWithANSIFile>:
{
    e884c0d0:	7179                	addi	sp,sp,-48
    e884c0d2:	ec4a                	sd	s2,24(sp)
    e884c0d4:	f04e                	sd	s3,32(sp)
    e884c0d6:	892e                	mv	s2,a1
    e884c0d8:	89aa                	mv	s3,a0
	data = CFDataCreateMutable( NULL, 0 );
    e884c0da:	4581                	li	a1,0
    e884c0dc:	4501                	li	a0,0
{
    e884c0de:	e826                	sd	s1,16(sp)
    e884c0e0:	f406                	sd	ra,40(sp)
    e884c0e2:	e422                	sd	s0,8(sp)
	data = CFDataCreateMutable( NULL, 0 );
    e884c0e4:	9c6fb0ef          	jal	ra,e88472aa <CFDataCreateMutable>
    e884c0e8:	84aa                	mv	s1,a0
	require_action( data, exit, err = kNoMemoryErr );
    e884c0ea:	cd31                	beqz	a0,e884c146 <CFDataCreateWithANSIFile+0x76>
	tempBuf = (uint8_t *) malloc( tempLen );
    e884c0ec:	00020537          	lui	a0,0x20
    e884c0f0:	75e2f0ef          	jal	ra,e887b84e <my_malloc>
    e884c0f4:	842a                	mv	s0,a0
	require_action( tempBuf, exit, err = kNoMemoryErr );
    e884c0f6:	c515                	beqz	a0,e884c122 <CFDataCreateWithANSIFile+0x52>
		readSize = fread( tempBuf, 1, tempLen, inFile );
    e884c0f8:	00020637          	lui	a2,0x20
    e884c0fc:	86ce                	mv	a3,s3
    e884c0fe:	4585                	li	a1,1
    e884c100:	8522                	mv	a0,s0
    e884c102:	176300ef          	jal	ra,e887c278 <eLIBs_fread>
    e884c106:	0005061b          	sext.w	a2,a0
		if( readSize == 0 ) break;
    e884c10a:	c611                	beqz	a2,e884c116 <CFDataCreateWithANSIFile+0x46>
		CFDataAppendBytes( data, tempBuf, (CFIndex) readSize );
    e884c10c:	85a2                	mv	a1,s0
    e884c10e:	8526                	mv	a0,s1
    e884c110:	9f6fb0ef          	jal	ra,e8847306 <CFDataAppendBytes>
		readSize = fread( tempBuf, 1, tempLen, inFile );
    e884c114:	b7d5                	j	e884c0f8 <CFDataCreateWithANSIFile+0x28>
	if( tempBuf ) free( tempBuf );
    e884c116:	8522                	mv	a0,s0
    e884c118:	1e8300ef          	jal	ra,e887c300 <eLIBs_free>
	err = kNoErr;
    e884c11c:	4781                	li	a5,0
{
    e884c11e:	8426                	mv	s0,s1
    e884c120:	a039                	j	e884c12e <CFDataCreateWithANSIFile+0x5e>
	CFReleaseNullSafe( data );
    e884c122:	8526                	mv	a0,s1
    e884c124:	826fb0ef          	jal	ra,e884714a <CFRelease>
    e884c128:	77f9                	lui	a5,0xffffe
    e884c12a:	5b878793          	addi	a5,a5,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	if( outErr ) *outErr = err;
    e884c12e:	00090463          	beqz	s2,e884c136 <CFDataCreateWithANSIFile+0x66>
    e884c132:	00f92023          	sw	a5,0(s2)
}
    e884c136:	8522                	mv	a0,s0
    e884c138:	70a2                	ld	ra,40(sp)
    e884c13a:	6422                	ld	s0,8(sp)
    e884c13c:	64c2                	ld	s1,16(sp)
    e884c13e:	6962                	ld	s2,24(sp)
    e884c140:	7982                	ld	s3,32(sp)
    e884c142:	6145                	addi	sp,sp,48
    e884c144:	8082                	ret
    e884c146:	77f9                	lui	a5,0xffffe
    e884c148:	5b878793          	addi	a5,a5,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884c14c:	bfc9                	j	e884c11e <CFDataCreateWithANSIFile+0x4e>

00000000e884c14e <CFDataCreateWithFilePath>:
{
    e884c14e:	7179                	addi	sp,sp,-48
    e884c150:	fa91540b          	sdd	s0,s1,(sp),1,4
    e884c154:	84ae                	mv	s1,a1
	file = fopen( inPath, "rb" );
    e884c156:	00073597          	auipc	a1,0x73
    e884c15a:	95258593          	addi	a1,a1,-1710 # e88beaa8 <__PRETTY_FUNCTION__.9367+0x38>
{
    e884c15e:	f406                	sd	ra,40(sp)
    e884c160:	f04a                	sd	s2,32(sp)
	file = fopen( inPath, "rb" );
    e884c162:	10e300ef          	jal	ra,e887c270 <eLIBs_fopen>
    e884c166:	842a                	mv	s0,a0
	err = map_global_value_errno( file, file );
    e884c168:	c505                	beqz	a0,e884c190 <CFDataCreateWithFilePath+0x42>
	result = CFDataCreateWithANSIFile( file, &err );
    e884c16a:	006c                	addi	a1,sp,12
	err = map_global_value_errno( file, file );
    e884c16c:	c602                	sw	zero,12(sp)
	result = CFDataCreateWithANSIFile( file, &err );
    e884c16e:	f63ff0ef          	jal	ra,e884c0d0 <CFDataCreateWithANSIFile>
    e884c172:	892a                	mv	s2,a0
	if( file ) fclose( file );
    e884c174:	8522                	mv	a0,s0
    e884c176:	0fe300ef          	jal	ra,e887c274 <eLIBs_fclose>
	result = CFDataCreateWithANSIFile( file, &err );
    e884c17a:	844a                	mv	s0,s2
	if( outErr ) *outErr = err;
    e884c17c:	c099                	beqz	s1,e884c182 <CFDataCreateWithFilePath+0x34>
    e884c17e:	47b2                	lw	a5,12(sp)
    e884c180:	c09c                	sw	a5,0(s1)
}
    e884c182:	8522                	mv	a0,s0
    e884c184:	70a2                	ld	ra,40(sp)
    e884c186:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884c18a:	7902                	ld	s2,32(sp)
    e884c18c:	6145                	addi	sp,sp,48
    e884c18e:	8082                	ret
	err = map_global_value_errno( file, file );
    e884c190:	00098797          	auipc	a5,0x98
    e884c194:	49878793          	addi	a5,a5,1176 # e88e4628 <lwip_errno>
    e884c198:	439c                	lw	a5,0(a5)
    e884c19a:	e781                	bnez	a5,e884c1a2 <CFDataCreateWithFilePath+0x54>
    e884c19c:	77f9                	lui	a5,0xffffe
    e884c19e:	5d47879b          	addiw	a5,a5,1492
    e884c1a2:	c63e                	sw	a5,12(sp)
	if( file ) fclose( file );
    e884c1a4:	bfe1                	j	e884c17c <CFDataCreateWithFilePath+0x2e>

00000000e884c1a6 <CFDictionaryCopyKeys>:
{
    e884c1a6:	7179                	addi	sp,sp,-48
    e884c1a8:	e826                	sd	s1,16(sp)
    e884c1aa:	ec4a                	sd	s2,24(sp)
    e884c1ac:	f04e                	sd	s3,32(sp)
    e884c1ae:	f406                	sd	ra,40(sp)
    e884c1b0:	e422                	sd	s0,8(sp)
    e884c1b2:	84aa                	mv	s1,a0
    e884c1b4:	89ae                	mv	s3,a1
	n = CFDictionaryGetCount( inDict );
    e884c1b6:	a74fb0ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e884c1ba:	892a                	mv	s2,a0
	if( n > 0 )
    e884c1bc:	04a05c63          	blez	a0,e884c214 <CFDictionaryCopyKeys+0x6e>
		keys = (const void **) malloc( ( (size_t) n ) * sizeof( *keys ) );
    e884c1c0:	050e                	slli	a0,a0,0x3
    e884c1c2:	68c2f0ef          	jal	ra,e887b84e <my_malloc>
    e884c1c6:	842a                	mv	s0,a0
		require_action( keys, exit, err = kNoMemoryErr );
    e884c1c8:	c51d                	beqz	a0,e884c1f6 <CFDictionaryCopyKeys+0x50>
		CFDictionaryGetKeysAndValues( inDict, keys, NULL );
    e884c1ca:	85aa                	mv	a1,a0
    e884c1cc:	4601                	li	a2,0
    e884c1ce:	8526                	mv	a0,s1
    e884c1d0:	a92fb0ef          	jal	ra,e8847462 <CFDictionaryGetKeysAndValues>
    e884c1d4:	84a2                	mv	s1,s0
	result = CFArrayCreate( NULL, keys, n, &kCFTypeArrayCallBacks );
    e884c1d6:	00072697          	auipc	a3,0x72
    e884c1da:	59a68693          	addi	a3,a3,1434 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e884c1de:	864a                	mv	a2,s2
    e884c1e0:	85a6                	mv	a1,s1
    e884c1e2:	4501                	li	a0,0
    e884c1e4:	f89fa0ef          	jal	ra,e884716c <CFArrayCreate>
    e884c1e8:	842a                	mv	s0,a0
	if( keys ) free( (void *) keys );
    e884c1ea:	c481                	beqz	s1,e884c1f2 <CFDictionaryCopyKeys+0x4c>
    e884c1ec:	8526                	mv	a0,s1
    e884c1ee:	112300ef          	jal	ra,e887c300 <eLIBs_free>
	err = kNoErr;
    e884c1f2:	4781                	li	a5,0
	require_action( result, exit, err = kNoMemoryErr );
    e884c1f4:	e401                	bnez	s0,e884c1fc <CFDictionaryCopyKeys+0x56>
		require_action( keys, exit, err = kNoMemoryErr );
    e884c1f6:	77f9                	lui	a5,0xffffe
    e884c1f8:	5b878793          	addi	a5,a5,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	if( outErr ) *outErr = err;
    e884c1fc:	00098463          	beqz	s3,e884c204 <CFDictionaryCopyKeys+0x5e>
    e884c200:	00f9a023          	sw	a5,0(s3)
}
    e884c204:	8522                	mv	a0,s0
    e884c206:	70a2                	ld	ra,40(sp)
    e884c208:	6422                	ld	s0,8(sp)
    e884c20a:	64c2                	ld	s1,16(sp)
    e884c20c:	6962                	ld	s2,24(sp)
    e884c20e:	7982                	ld	s3,32(sp)
    e884c210:	6145                	addi	sp,sp,48
    e884c212:	8082                	ret
	const void **		keys = NULL;
    e884c214:	4481                	li	s1,0
    e884c216:	b7c1                	j	e884c1d6 <CFDictionaryCopyKeys+0x30>

00000000e884c218 <CFDictionaryMergeDictionary>:
{
    e884c218:	87ae                	mv	a5,a1
    e884c21a:	1141                	addi	sp,sp,-16
	CFDictionaryApplyFunction( inSourceDict, _CFDictionaryMergeDictionaryApplier, inDestinationDict );
    e884c21c:	862a                	mv	a2,a0
    e884c21e:	fffff597          	auipc	a1,0xfffff
    e884c222:	4f458593          	addi	a1,a1,1268 # e884b712 <_CFDictionaryMergeDictionaryApplier>
    e884c226:	853e                	mv	a0,a5
{
    e884c228:	e406                	sd	ra,8(sp)
	CFDictionaryApplyFunction( inSourceDict, _CFDictionaryMergeDictionaryApplier, inDestinationDict );
    e884c22a:	a3cfb0ef          	jal	ra,e8847466 <CFDictionaryApplyFunction>
}
    e884c22e:	60a2                	ld	ra,8(sp)
    e884c230:	4501                	li	a0,0
    e884c232:	0141                	addi	sp,sp,16
    e884c234:	8082                	ret

00000000e884c236 <CFDictionaryGetCString>:
//===========================================================================================================================
//	CFDictionaryGetCString
//===========================================================================================================================

char *	CFDictionaryGetCString( CFDictionaryRef inDict, const void *inKey, char *inBuf, size_t inMaxLen, OSStatus *outErr )
{
    e884c236:	7179                	addi	sp,sp,-48
    e884c238:	ec22                	sd	s0,24(sp)
    e884c23a:	f026                	sd	s1,32(sp)
    e884c23c:	f406                	sd	ra,40(sp)
    e884c23e:	8432                	mv	s0,a2
    e884c240:	84ba                	mv	s1,a4
	OSStatus		err;
	CFTypeRef		tempObj;
	char *			ptr;
	
	tempObj = inDict ? CFDictionaryGetValue( inDict, inKey ) : NULL;
    e884c242:	c505                	beqz	a0,e884c26a <CFDictionaryGetCString+0x34>
    e884c244:	e436                	sd	a3,8(sp)
    e884c246:	9f8fb0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	if( tempObj )
    e884c24a:	66a2                	ld	a3,8(sp)
    e884c24c:	cd19                	beqz	a0,e884c26a <CFDictionaryGetCString+0x34>
	{
		ptr = CFGetCString( tempObj, inBuf, inMaxLen );
    e884c24e:	85a2                	mv	a1,s0
    e884c250:	8636                	mv	a2,a3
    e884c252:	f04ff0ef          	jal	ra,e884b956 <CFGetCString>
    e884c256:	842a                	mv	s0,a0
		err = kNoErr;
    e884c258:	4781                	li	a5,0
		{
			ptr = "";
		}
		err = kNotFoundErr;
	}
	if( outErr ) *outErr = err;
    e884c25a:	c091                	beqz	s1,e884c25e <CFDictionaryGetCString+0x28>
    e884c25c:	c09c                	sw	a5,0(s1)
	return( ptr );
}
    e884c25e:	8522                	mv	a0,s0
    e884c260:	70a2                	ld	ra,40(sp)
    e884c262:	6462                	ld	s0,24(sp)
    e884c264:	7482                	ld	s1,32(sp)
    e884c266:	6145                	addi	sp,sp,48
    e884c268:	8082                	ret
		if( inMaxLen > 0 )
    e884c26a:	77f9                	lui	a5,0xffffe
    e884c26c:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e884c270:	c681                	beqz	a3,e884c278 <CFDictionaryGetCString+0x42>
			*inBuf = '\0';
    e884c272:	00040023          	sb	zero,0(s0)
			ptr = inBuf;
    e884c276:	b7d5                	j	e884c25a <CFDictionaryGetCString+0x24>
			ptr = "";
    e884c278:	00075417          	auipc	s0,0x75
    e884c27c:	ff840413          	addi	s0,s0,-8 # e88c1270 <kHTTPServerClass+0x90>
    e884c280:	bfe9                	j	e884c25a <CFDictionaryGetCString+0x24>

00000000e884c282 <CFDictionarySetCString>:
//===========================================================================================================================
//	CFDictionarySetCString
//===========================================================================================================================

OSStatus	CFDictionarySetCString( CFMutableDictionaryRef inDict, const void *inKey, const void *inStr, size_t inLen )
{
    e884c282:	1101                	addi	sp,sp,-32
    e884c284:	e84a                	sd	s2,16(sp)
    e884c286:	f891540b          	sdd	s0,s1,(sp),0,4
    e884c28a:	ec06                	sd	ra,24(sp)
    e884c28c:	892e                	mv	s2,a1
    e884c28e:	85b2                	mv	a1,a2
    e884c290:	84aa                	mv	s1,a0
    e884c292:	8636                	mv	a2,a3
	OSStatus		err;
	CFStringRef		cfstr;
	
	if( !inStr ) inStr = "";
    e884c294:	e589                	bnez	a1,e884c29e <CFDictionarySetCString+0x1c>
    e884c296:	00075597          	auipc	a1,0x75
    e884c29a:	fda58593          	addi	a1,a1,-38 # e88c1270 <kHTTPServerClass+0x90>
	if( inLen == kSizeCString )
    e884c29e:	57fd                	li	a5,-1
    e884c2a0:	02f61463          	bne	a2,a5,e884c2c8 <CFDictionarySetCString+0x46>
	{
		cfstr = CFStringCreateWithCString( NULL, (const char *) inStr, kCFStringEncodingUTF8 );
    e884c2a4:	08000637          	lui	a2,0x8000
    e884c2a8:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884c2ac:	4501                	li	a0,0
    e884c2ae:	a76fb0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884c2b2:	842a                	mv	s0,a0
		require_action( cfstr, exit, err = kUnknownErr );
    e884c2b4:	e505                	bnez	a0,e884c2dc <CFDictionarySetCString+0x5a>
    e884c2b6:	7579                	lui	a0,0xffffe
    e884c2b8:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	CFRelease( cfstr );
	err = kNoErr;
	
exit:
	return( err );
}
    e884c2bc:	60e2                	ld	ra,24(sp)
    e884c2be:	f891440b          	ldd	s0,s1,(sp),0,4
    e884c2c2:	6942                	ld	s2,16(sp)
    e884c2c4:	6105                	addi	sp,sp,32
    e884c2c6:	8082                	ret
		cfstr = CFStringCreateWithBytes( NULL, (const uint8_t *) inStr, (CFIndex) inLen, kCFStringEncodingUTF8, false );
    e884c2c8:	080006b7          	lui	a3,0x8000
    e884c2cc:	4701                	li	a4,0
    e884c2ce:	10068693          	addi	a3,a3,256 # 8000100 <memcmp-0xe07fff00>
    e884c2d2:	2601                	sext.w	a2,a2
    e884c2d4:	4501                	li	a0,0
    e884c2d6:	9c2fb0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884c2da:	bfe1                	j	e884c2b2 <CFDictionarySetCString+0x30>
	CFDictionarySetValue( inDict, inKey, cfstr );
    e884c2dc:	862a                	mv	a2,a0
    e884c2de:	85ca                	mv	a1,s2
    e884c2e0:	8526                	mv	a0,s1
    e884c2e2:	970fb0ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( cfstr );
    e884c2e6:	8522                	mv	a0,s0
    e884c2e8:	e63fa0ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e884c2ec:	4501                	li	a0,0
    e884c2ee:	b7f9                	j	e884c2bc <CFDictionarySetCString+0x3a>

00000000e884c2f0 <CFDictionaryCreateWithINIBytes>:
{
    e884c2f0:	7119                	addi	sp,sp,-128
    e884c2f2:	e4d6                	sd	s5,72(sp)
    e884c2f4:	e0da                	sd	s6,64(sp)
    e884c2f6:	fc5e                	sd	s7,56(sp)
	const char *				src				= (const char *) inPtr;
    e884c2f8:	e42a                	sd	a0,8(sp)
	const char * const			end				= src + inLen;
    e884c2fa:	00b50b33          	add	s6,a0,a1
{
    e884c2fe:	8bb2                	mv	s7,a2
    e884c300:	8ab6                	mv	s5,a3
	rootDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e884c302:	00072617          	auipc	a2,0x72
    e884c306:	49660613          	addi	a2,a2,1174 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884c30a:	00072697          	auipc	a3,0x72
    e884c30e:	4be68693          	addi	a3,a3,1214 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884c312:	4581                	li	a1,0
    e884c314:	4501                	li	a0,0
{
    e884c316:	f0ca                	sd	s2,96(sp)
    e884c318:	e8d2                	sd	s4,80(sp)
    e884c31a:	fc86                	sd	ra,120(sp)
    e884c31c:	f8a2                	sd	s0,112(sp)
    e884c31e:	f4a6                	sd	s1,104(sp)
    e884c320:	ecce                	sd	s3,88(sp)
    e884c322:	8a3a                	mv	s4,a4
	rootDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e884c324:	882fb0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884c328:	892a                	mv	s2,a0
	require_action( rootDict, exit, err = kNoMemoryErr );
    e884c32a:	1e050663          	beqz	a0,e884c516 <CFDictionaryCreateWithINIBytes+0x226>
	CFMutableDictionaryRef		sectionDict		= NULL;
    e884c32e:	4481                	li	s1,0
			if( !sectionDict && !( inFlags & kINIFlag_MergeGlobals ) )
    e884c330:	001bfb93          	andi	s7,s7,1
	while( INIGetNext( src, end, &flags, &namePtr, &nameLen, &valuePtr, &valueLen, &src ) )
    e884c334:	6522                	ld	a0,8(sp)
    e884c336:	00810893          	addi	a7,sp,8
    e884c33a:	02810813          	addi	a6,sp,40
    e884c33e:	101c                	addi	a5,sp,32
    e884c340:	0838                	addi	a4,sp,24
    e884c342:	0814                	addi	a3,sp,16
    e884c344:	0050                	addi	a2,sp,4
    e884c346:	85da                	mv	a1,s6
    e884c348:	005130ef          	jal	ra,e885fb4c <INIGetNext>
    e884c34c:	e10d                	bnez	a0,e884c36e <CFDictionaryCreateWithINIBytes+0x7e>
	err = kNoErr;
    e884c34e:	4401                	li	s0,0
	CFReleaseNullSafe( sectionDict );
    e884c350:	1c048663          	beqz	s1,e884c51c <CFDictionaryCreateWithINIBytes+0x22c>
    e884c354:	89ca                	mv	s3,s2
	err = kNoErr;
    e884c356:	4401                	li	s0,0
	rootDict = NULL;
    e884c358:	4901                	li	s2,0
	CFReleaseNullSafe( sectionDict );
    e884c35a:	8526                	mv	a0,s1
    e884c35c:	deffa0ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( rootDict );
    e884c360:	00090563          	beqz	s2,e884c36a <CFDictionaryCreateWithINIBytes+0x7a>
    e884c364:	854a                	mv	a0,s2
    e884c366:	de5fa0ef          	jal	ra,e884714a <CFRelease>
    e884c36a:	894e                	mv	s2,s3
    e884c36c:	aa45                	j	e884c51c <CFDictionaryCreateWithINIBytes+0x22c>
		if( flags & kINIFlag_Section )
    e884c36e:	4792                	lw	a5,4(sp)
    e884c370:	8b85                	andi	a5,a5,1
    e884c372:	14078363          	beqz	a5,e884c4b8 <CFDictionaryCreateWithINIBytes+0x1c8>
			CFReleaseNullSafe( sectionDict );
    e884c376:	c481                	beqz	s1,e884c37e <CFDictionaryCreateWithINIBytes+0x8e>
    e884c378:	8526                	mv	a0,s1
    e884c37a:	dd1fa0ef          	jal	ra,e884714a <CFRelease>
			sectionDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, 
    e884c37e:	00072697          	auipc	a3,0x72
    e884c382:	44a68693          	addi	a3,a3,1098 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884c386:	00072617          	auipc	a2,0x72
    e884c38a:	41260613          	addi	a2,a2,1042 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884c38e:	4581                	li	a1,0
    e884c390:	4501                	li	a0,0
    e884c392:	814fb0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884c396:	84aa                	mv	s1,a0
			require_action( sectionDict, exit, err = kNoMemoryErr );
    e884c398:	1a050f63          	beqz	a0,e884c556 <CFDictionaryCreateWithINIBytes+0x266>
			if( valuePtr && inSectionNameKey && ( inSectionNameKey != kINISectionDotted ) && 
    e884c39c:	7602                	ld	a2,32(sp)
    e884c39e:	ce09                	beqz	a2,e884c3b8 <CFDictionaryCreateWithINIBytes+0xc8>
    e884c3a0:	000a8c63          	beqz	s5,e884c3b8 <CFDictionaryCreateWithINIBytes+0xc8>
    e884c3a4:	57fd                	li	a5,-1
    e884c3a6:	00fa8963          	beq	s5,a5,e884c3b8 <CFDictionaryCreateWithINIBytes+0xc8>
    e884c3aa:	57f9                	li	a5,-2
    e884c3ac:	00fa8663          	beq	s5,a5,e884c3b8 <CFDictionaryCreateWithINIBytes+0xc8>
				CFDictionarySetCString( sectionDict, inSectionNameKey, valuePtr, valueLen );
    e884c3b0:	76a2                	ld	a3,40(sp)
    e884c3b2:	85d6                	mv	a1,s5
    e884c3b4:	ecfff0ef          	jal	ra,e884c282 <CFDictionarySetCString>
			if( valuePtr && ( inSectionNameKey == kINISectionDotted ) )
    e884c3b8:	7802                	ld	a6,32(sp)
    e884c3ba:	65c2                	ld	a1,16(sp)
    e884c3bc:	4662                	lw	a2,24(sp)
    e884c3be:	02080763          	beqz	a6,e884c3ec <CFDictionaryCreateWithINIBytes+0xfc>
    e884c3c2:	57fd                	li	a5,-1
    e884c3c4:	02fa9463          	bne	s5,a5,e884c3ec <CFDictionaryCreateWithINIBytes+0xfc>
				cfstr = CFStringCreateWithFormat( NULL, NULL, CFSTR( "%.*s.%.*s" ), (int) nameLen, namePtr, 
    e884c3c8:	57a2                	lw	a5,40(sp)
    e884c3ca:	872e                	mv	a4,a1
    e884c3cc:	86b2                	mv	a3,a2
    e884c3ce:	4581                	li	a1,0
    e884c3d0:	00051617          	auipc	a2,0x51
    e884c3d4:	e4860613          	addi	a2,a2,-440 # e889d218 <icmp6_param_problem+0x1aa>
    e884c3d8:	4501                	li	a0,0
    e884c3da:	972fb0ef          	jal	ra,e884754c <CFStringCreateWithFormat>
    e884c3de:	842a                	mv	s0,a0
				require_action( cfstr, exit, err = kUnknownErr );
    e884c3e0:	e951                	bnez	a0,e884c474 <CFDictionaryCreateWithINIBytes+0x184>
    e884c3e2:	7479                	lui	s0,0xffffe
    e884c3e4:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
			require_action( cfstr, exit, err = kUnknownErr );
    e884c3e8:	4981                	li	s3,0
    e884c3ea:	bf85                	j	e884c35a <CFDictionaryCreateWithINIBytes+0x6a>
				cfstr = CFStringCreateWithBytes( NULL, (const uint8_t *) namePtr, (CFIndex) nameLen, 
    e884c3ec:	080006b7          	lui	a3,0x8000
    e884c3f0:	4701                	li	a4,0
    e884c3f2:	10068693          	addi	a3,a3,256 # 8000100 <memcmp-0xe07fff00>
    e884c3f6:	4501                	li	a0,0
    e884c3f8:	8a0fb0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884c3fc:	842a                	mv	s0,a0
				require_action( cfstr, exit, err = kUnknownErr );
    e884c3fe:	d175                	beqz	a0,e884c3e2 <CFDictionaryCreateWithINIBytes+0xf2>
			if( inSectionNameKey == kINISectionNested )
    e884c400:	57f9                	li	a5,-2
    e884c402:	06fa9663          	bne	s5,a5,e884c46e <CFDictionaryCreateWithINIBytes+0x17e>
				sectionsDict = (CFMutableDictionaryRef) CFDictionaryGetValue( rootDict, cfstr );
    e884c406:	85aa                	mv	a1,a0
    e884c408:	854a                	mv	a0,s2
    e884c40a:	834fb0ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e884c40e:	89aa                	mv	s3,a0
				if( !sectionsDict )
    e884c410:	e51d                	bnez	a0,e884c43e <CFDictionaryCreateWithINIBytes+0x14e>
					sectionsDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, 
    e884c412:	00072697          	auipc	a3,0x72
    e884c416:	3b668693          	addi	a3,a3,950 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884c41a:	00072617          	auipc	a2,0x72
    e884c41e:	37e60613          	addi	a2,a2,894 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884c422:	4581                	li	a1,0
    e884c424:	f83fa0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884c428:	89aa                	mv	s3,a0
					require_action( sectionsDict, exit, err = kNoMemoryErr );
    e884c42a:	10050963          	beqz	a0,e884c53c <CFDictionaryCreateWithINIBytes+0x24c>
					CFDictionarySetValue( rootDict, cfstr, sectionsDict );
    e884c42e:	862a                	mv	a2,a0
    e884c430:	85a2                	mv	a1,s0
    e884c432:	854a                	mv	a0,s2
    e884c434:	81efb0ef          	jal	ra,e8847452 <CFDictionarySetValue>
					CFRelease( sectionsDict );
    e884c438:	854e                	mv	a0,s3
    e884c43a:	d11fa0ef          	jal	ra,e884714a <CFRelease>
				CFRelease( cfstr );
    e884c43e:	8522                	mv	a0,s0
    e884c440:	d0bfa0ef          	jal	ra,e884714a <CFRelease>
				cfstr = CFStringCreateWithBytes( NULL, (const uint8_t *) valuePtr, (CFIndex) valueLen, 
    e884c444:	5622                	lw	a2,40(sp)
    e884c446:	7582                	ld	a1,32(sp)
    e884c448:	080006b7          	lui	a3,0x8000
    e884c44c:	4701                	li	a4,0
    e884c44e:	10068693          	addi	a3,a3,256 # 8000100 <memcmp-0xe07fff00>
    e884c452:	4501                	li	a0,0
    e884c454:	844fb0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884c458:	842a                	mv	s0,a0
				require_action( cfstr, exit, err = kUnknownErr );
    e884c45a:	d541                	beqz	a0,e884c3e2 <CFDictionaryCreateWithINIBytes+0xf2>
				CFDictionarySetValue( sectionsDict, cfstr, sectionDict );
    e884c45c:	85aa                	mv	a1,a0
    e884c45e:	8626                	mv	a2,s1
    e884c460:	854e                	mv	a0,s3
				CFDictionarySetValue( rootDict, cfstr, sectionDict );
    e884c462:	ff1fa0ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFRelease( cfstr );
    e884c466:	8522                	mv	a0,s0
			CFRelease( cfstr );
    e884c468:	ce3fa0ef          	jal	ra,e884714a <CFRelease>
			cfstr = NULL;
    e884c46c:	b5e1                	j	e884c334 <CFDictionaryCreateWithINIBytes+0x44>
			else if( inSectionNameKey == kINISectionDotted )
    e884c46e:	57fd                	li	a5,-1
    e884c470:	00fa9663          	bne	s5,a5,e884c47c <CFDictionaryCreateWithINIBytes+0x18c>
				CFDictionarySetValue( rootDict, cfstr, sectionDict );
    e884c474:	8626                	mv	a2,s1
    e884c476:	85a2                	mv	a1,s0
    e884c478:	854a                	mv	a0,s2
    e884c47a:	b7e5                	j	e884c462 <CFDictionaryCreateWithINIBytes+0x172>
				sectionsArray = (CFMutableArrayRef) CFDictionaryGetValue( rootDict, cfstr );
    e884c47c:	85aa                	mv	a1,a0
    e884c47e:	854a                	mv	a0,s2
    e884c480:	fbffa0ef          	jal	ra,e884743e <CFDictionaryGetValue>
				if( sectionsArray )
    e884c484:	c509                	beqz	a0,e884c48e <CFDictionaryCreateWithINIBytes+0x19e>
					CFArrayAppendValue( sectionsArray, sectionDict );
    e884c486:	85a6                	mv	a1,s1
    e884c488:	de9fa0ef          	jal	ra,e8847270 <CFArrayAppendValue>
    e884c48c:	bfe9                	j	e884c466 <CFDictionaryCreateWithINIBytes+0x176>
					sectionsArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e884c48e:	00072617          	auipc	a2,0x72
    e884c492:	2e260613          	addi	a2,a2,738 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e884c496:	4581                	li	a1,0
    e884c498:	d2ffa0ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e884c49c:	89aa                	mv	s3,a0
					require_action( sectionsArray, exit, err = kNoMemoryErr );
    e884c49e:	cd59                	beqz	a0,e884c53c <CFDictionaryCreateWithINIBytes+0x24c>
					CFArrayAppendValue( sectionsArray, sectionDict );
    e884c4a0:	85a6                	mv	a1,s1
    e884c4a2:	dcffa0ef          	jal	ra,e8847270 <CFArrayAppendValue>
					CFDictionarySetValue( rootDict, cfstr, sectionsArray );
    e884c4a6:	854a                	mv	a0,s2
    e884c4a8:	864e                	mv	a2,s3
    e884c4aa:	85a2                	mv	a1,s0
    e884c4ac:	fa7fa0ef          	jal	ra,e8847452 <CFDictionarySetValue>
					CFRelease( sectionsArray );
    e884c4b0:	854e                	mv	a0,s3
    e884c4b2:	c99fa0ef          	jal	ra,e884714a <CFRelease>
    e884c4b6:	bf45                	j	e884c466 <CFDictionaryCreateWithINIBytes+0x176>
			if( !sectionDict && !( inFlags & kINIFlag_MergeGlobals ) )
    e884c4b8:	e88d                	bnez	s1,e884c4ea <CFDictionaryCreateWithINIBytes+0x1fa>
    e884c4ba:	020b9863          	bnez	s7,e884c4ea <CFDictionaryCreateWithINIBytes+0x1fa>
				sectionDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e884c4be:	00072697          	auipc	a3,0x72
    e884c4c2:	30a68693          	addi	a3,a3,778 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884c4c6:	00072617          	auipc	a2,0x72
    e884c4ca:	2d260613          	addi	a2,a2,722 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884c4ce:	4581                	li	a1,0
    e884c4d0:	4501                	li	a0,0
    e884c4d2:	ed5fa0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884c4d6:	84aa                	mv	s1,a0
				require_action( sectionDict, exit, err = kNoMemoryErr );
    e884c4d8:	cd3d                	beqz	a0,e884c556 <CFDictionaryCreateWithINIBytes+0x266>
				CFDictionarySetValue( rootDict, CFSTR( kINISectionType_Global ), sectionDict );
    e884c4da:	862a                	mv	a2,a0
    e884c4dc:	00051597          	auipc	a1,0x51
    e884c4e0:	d5458593          	addi	a1,a1,-684 # e889d230 <icmp6_param_problem+0x1c2>
    e884c4e4:	854a                	mv	a0,s2
    e884c4e6:	f6dfa0ef          	jal	ra,e8847452 <CFDictionarySetValue>
			cfstr = CFStringCreateWithBytes( NULL, (const uint8_t *) namePtr, (CFIndex) nameLen, kCFStringEncodingUTF8, false );
    e884c4ea:	4662                	lw	a2,24(sp)
    e884c4ec:	65c2                	ld	a1,16(sp)
    e884c4ee:	080006b7          	lui	a3,0x8000
    e884c4f2:	4701                	li	a4,0
    e884c4f4:	10068693          	addi	a3,a3,256 # 8000100 <memcmp-0xe07fff00>
    e884c4f8:	4501                	li	a0,0
    e884c4fa:	f9ffa0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884c4fe:	89aa                	mv	s3,a0
			require_action( cfstr, exit, err = kUnknownErr );
    e884c500:	c529                	beqz	a0,e884c54a <CFDictionaryCreateWithINIBytes+0x25a>
			CFDictionarySetCString( sectionDict ? sectionDict : rootDict, cfstr, valuePtr, valueLen );
    e884c502:	76a2                	ld	a3,40(sp)
    e884c504:	7602                	ld	a2,32(sp)
    e884c506:	85aa                	mv	a1,a0
    e884c508:	854a                	mv	a0,s2
    e884c50a:	4294950b          	mvnez	a0,s1,s1
    e884c50e:	d75ff0ef          	jal	ra,e884c282 <CFDictionarySetCString>
			CFRelease( cfstr );
    e884c512:	854e                	mv	a0,s3
    e884c514:	bf91                	j	e884c468 <CFDictionaryCreateWithINIBytes+0x178>
    e884c516:	7479                	lui	s0,0xffffe
    e884c518:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	if( outErr ) *outErr = err;
    e884c51c:	000a0463          	beqz	s4,e884c524 <CFDictionaryCreateWithINIBytes+0x234>
    e884c520:	008a2023          	sw	s0,0(s4)
}
    e884c524:	70e6                	ld	ra,120(sp)
    e884c526:	7446                	ld	s0,112(sp)
    e884c528:	854a                	mv	a0,s2
    e884c52a:	74a6                	ld	s1,104(sp)
    e884c52c:	7906                	ld	s2,96(sp)
    e884c52e:	69e6                	ld	s3,88(sp)
    e884c530:	6a46                	ld	s4,80(sp)
    e884c532:	6aa6                	ld	s5,72(sp)
    e884c534:	6b06                	ld	s6,64(sp)
    e884c536:	7be2                	ld	s7,56(sp)
    e884c538:	6109                	addi	sp,sp,128
    e884c53a:	8082                	ret
	CFReleaseNullSafe( cfstr );
    e884c53c:	8522                	mv	a0,s0
    e884c53e:	7479                	lui	s0,0xffffe
    e884c540:	c0bfa0ef          	jal	ra,e884714a <CFRelease>
    e884c544:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884c548:	b545                	j	e884c3e8 <CFDictionaryCreateWithINIBytes+0xf8>
	CFReleaseNullSafe( sectionDict );
    e884c54a:	7479                	lui	s0,0xffffe
    e884c54c:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884c550:	e0048ae3          	beqz	s1,e884c364 <CFDictionaryCreateWithINIBytes+0x74>
    e884c554:	b519                	j	e884c35a <CFDictionaryCreateWithINIBytes+0x6a>
	rootDict = NULL;
    e884c556:	7479                	lui	s0,0xffffe
    e884c558:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884c55c:	4981                	li	s3,0
    e884c55e:	b519                	j	e884c364 <CFDictionaryCreateWithINIBytes+0x74>

00000000e884c560 <CFDictionarySetData>:
//===========================================================================================================================
//	CFDictionarySetData
//===========================================================================================================================

OSStatus	CFDictionarySetData( CFMutableDictionaryRef inDict, const void *inKey, const void *inData, size_t inLen )
{
    e884c560:	1101                	addi	sp,sp,-32
    e884c562:	e84a                	sd	s2,16(sp)
    e884c564:	f891540b          	sdd	s0,s1,(sp),0,4
    e884c568:	892e                	mv	s2,a1
    e884c56a:	84aa                	mv	s1,a0
    e884c56c:	85b2                	mv	a1,a2
	OSStatus		err;
	CFDataRef		data;
	
	data = CFDataCreate( NULL, (const uint8_t *) inData, (CFIndex) inLen );
    e884c56e:	4501                	li	a0,0
    e884c570:	0006861b          	sext.w	a2,a3
{
    e884c574:	ec06                	sd	ra,24(sp)
	data = CFDataCreate( NULL, (const uint8_t *) inData, (CFIndex) inLen );
    e884c576:	d21fa0ef          	jal	ra,e8847296 <CFDataCreate>
	require_action( data, exit, err = kUnknownErr );
    e884c57a:	c10d                	beqz	a0,e884c59c <CFDictionarySetData+0x3c>
	
	CFDictionarySetValue( inDict, inKey, data );
    e884c57c:	862a                	mv	a2,a0
    e884c57e:	842a                	mv	s0,a0
    e884c580:	85ca                	mv	a1,s2
    e884c582:	8526                	mv	a0,s1
    e884c584:	ecffa0ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( data );
    e884c588:	8522                	mv	a0,s0
    e884c58a:	bc1fa0ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e884c58e:	4501                	li	a0,0
	
exit:
	return( err );
}
    e884c590:	60e2                	ld	ra,24(sp)
    e884c592:	f891440b          	ldd	s0,s1,(sp),0,4
    e884c596:	6942                	ld	s2,16(sp)
    e884c598:	6105                	addi	sp,sp,32
    e884c59a:	8082                	ret
	require_action( data, exit, err = kUnknownErr );
    e884c59c:	7579                	lui	a0,0xffffe
    e884c59e:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884c5a2:	b7fd                	j	e884c590 <CFDictionarySetData+0x30>

00000000e884c5a4 <CFDictionaryGetDouble>:
double	CFDictionaryGetDouble( CFDictionaryRef inDict, const void *inKey, OSStatus *outErr )
{
	double			x;
	CFTypeRef		value;
	
	value = inDict ? CFDictionaryGetValue( inDict, inKey ) : NULL;
    e884c5a4:	c51d                	beqz	a0,e884c5d2 <CFDictionaryGetDouble+0x2e>
{
    e884c5a6:	1101                	addi	sp,sp,-32
    e884c5a8:	e432                	sd	a2,8(sp)
    e884c5aa:	ec06                	sd	ra,24(sp)
	value = inDict ? CFDictionaryGetValue( inDict, inKey ) : NULL;
    e884c5ac:	e93fa0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	if( value )
    e884c5b0:	6622                	ld	a2,8(sp)
    e884c5b2:	c511                	beqz	a0,e884c5be <CFDictionaryGetDouble+0x1a>
	{
		x = 0;
		if( outErr ) *outErr = kNotFoundErr;
	}
	return( x );
}
    e884c5b4:	60e2                	ld	ra,24(sp)
		x = CFGetDouble( value, outErr );
    e884c5b6:	85b2                	mv	a1,a2
}
    e884c5b8:	6105                	addi	sp,sp,32
		x = CFGetDouble( value, outErr );
    e884c5ba:	8efff06f          	j	e884bea8 <CFGetDouble>
		if( outErr ) *outErr = kNotFoundErr;
    e884c5be:	c609                	beqz	a2,e884c5c8 <CFDictionaryGetDouble+0x24>
    e884c5c0:	77f9                	lui	a5,0xffffe
    e884c5c2:	5b97879b          	addiw	a5,a5,1465
    e884c5c6:	c21c                	sw	a5,0(a2)
}
    e884c5c8:	60e2                	ld	ra,24(sp)
    e884c5ca:	f2000553          	fmv.d.x	fa0,zero
    e884c5ce:	6105                	addi	sp,sp,32
    e884c5d0:	8082                	ret
		if( outErr ) *outErr = kNotFoundErr;
    e884c5d2:	c609                	beqz	a2,e884c5dc <CFDictionaryGetDouble+0x38>
    e884c5d4:	77f9                	lui	a5,0xffffe
    e884c5d6:	5b97879b          	addiw	a5,a5,1465
    e884c5da:	c21c                	sw	a5,0(a2)
}
    e884c5dc:	f2000553          	fmv.d.x	fa0,zero
    e884c5e0:	8082                	ret

00000000e884c5e2 <CFDictionarySetDouble>:
//===========================================================================================================================
//	CFDictionarySetDouble
//===========================================================================================================================

OSStatus	CFDictionarySetDouble( CFMutableDictionaryRef inDict, const void *inKey, double x )
{
    e884c5e2:	7179                	addi	sp,sp,-48
    e884c5e4:	f04a                	sd	s2,32(sp)
    e884c5e6:	fa91540b          	sdd	s0,s1,(sp),1,4
    e884c5ea:	892e                	mv	s2,a1
    e884c5ec:	84aa                	mv	s1,a0
	OSStatus		err;
	CFNumberRef		tempNum;
	
	tempNum = CFNumberCreate( NULL, kCFNumberDoubleType, &x );
    e884c5ee:	0030                	addi	a2,sp,8
    e884c5f0:	45b5                	li	a1,13
    e884c5f2:	4501                	li	a0,0
{
    e884c5f4:	f406                	sd	ra,40(sp)
    e884c5f6:	a42a                	fsd	fa0,8(sp)
	tempNum = CFNumberCreate( NULL, kCFNumberDoubleType, &x );
    e884c5f8:	e77fa0ef          	jal	ra,e884746e <CFNumberCreate>
	require_action( tempNum, exit, err = kNoMemoryErr );
    e884c5fc:	c10d                	beqz	a0,e884c61e <CFDictionarySetDouble+0x3c>
	
	CFDictionarySetValue( inDict, inKey, tempNum );
    e884c5fe:	862a                	mv	a2,a0
    e884c600:	842a                	mv	s0,a0
    e884c602:	85ca                	mv	a1,s2
    e884c604:	8526                	mv	a0,s1
    e884c606:	e4dfa0ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( tempNum );
    e884c60a:	8522                	mv	a0,s0
    e884c60c:	b3ffa0ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e884c610:	4501                	li	a0,0
	
exit:
	return( err );
}
    e884c612:	70a2                	ld	ra,40(sp)
    e884c614:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884c618:	7902                	ld	s2,32(sp)
    e884c61a:	6145                	addi	sp,sp,48
    e884c61c:	8082                	ret
	require_action( tempNum, exit, err = kNoMemoryErr );
    e884c61e:	7579                	lui	a0,0xffffe
    e884c620:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884c624:	b7fd                	j	e884c612 <CFDictionarySetDouble+0x30>

00000000e884c626 <CFDictionaryGetHardwareAddress>:
		CFDictionaryRef inDict, 
		const void *	inKey, 
		uint8_t *		inBuf, 
		size_t			inLen, 
		OSStatus *		outErr )
{
    e884c626:	7179                	addi	sp,sp,-48
    e884c628:	ec22                	sd	s0,24(sp)
    e884c62a:	f026                	sd	s1,32(sp)
    e884c62c:	f406                	sd	ra,40(sp)
    e884c62e:	84b2                	mv	s1,a2
    e884c630:	843a                	mv	s0,a4
    e884c632:	8636                	mv	a2,a3
	uint64_t		x;
	CFTypeRef		value;
	
	value = inDict ? CFDictionaryGetValue( inDict, inKey ) : NULL;
    e884c634:	cd11                	beqz	a0,e884c650 <CFDictionaryGetHardwareAddress+0x2a>
    e884c636:	e436                	sd	a3,8(sp)
    e884c638:	e07fa0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	if( value )
    e884c63c:	6622                	ld	a2,8(sp)
    e884c63e:	c909                	beqz	a0,e884c650 <CFDictionaryGetHardwareAddress+0x2a>
	{
		x = CFGetHardwareAddress( value, inBuf, inLen, outErr );
    e884c640:	86a2                	mv	a3,s0
		x = 0;
		if( inBuf )  memset(inBuf, 0, inLen );
		if( outErr ) *outErr = kNotFoundErr;
	}
	return( x );
}
    e884c642:	6462                	ld	s0,24(sp)
    e884c644:	70a2                	ld	ra,40(sp)
		x = CFGetHardwareAddress( value, inBuf, inLen, outErr );
    e884c646:	85a6                	mv	a1,s1
}
    e884c648:	7482                	ld	s1,32(sp)
    e884c64a:	6145                	addi	sp,sp,48
		x = CFGetHardwareAddress( value, inBuf, inLen, outErr );
    e884c64c:	cb0ff06f          	j	e884bafc <CFGetHardwareAddress>
		if( inBuf )  memset(inBuf, 0, inLen );
    e884c650:	c489                	beqz	s1,e884c65a <CFDictionaryGetHardwareAddress+0x34>
    e884c652:	4581                	li	a1,0
    e884c654:	8526                	mv	a0,s1
    e884c656:	53f2f0ef          	jal	ra,e887c394 <eLIBs_memset>
		if( outErr ) *outErr = kNotFoundErr;
    e884c65a:	c409                	beqz	s0,e884c664 <CFDictionaryGetHardwareAddress+0x3e>
    e884c65c:	77f9                	lui	a5,0xffffe
    e884c65e:	5b97879b          	addiw	a5,a5,1465
    e884c662:	c01c                	sw	a5,0(s0)
}
    e884c664:	70a2                	ld	ra,40(sp)
    e884c666:	6462                	ld	s0,24(sp)
    e884c668:	7482                	ld	s1,32(sp)
    e884c66a:	4501                	li	a0,0
    e884c66c:	6145                	addi	sp,sp,48
    e884c66e:	8082                	ret

00000000e884c670 <CFDictionaryGetInt64>:
int64_t	CFDictionaryGetInt64( CFDictionaryRef inDict, const void *inKey, OSStatus *outErr )
{
	int64_t			x;
	CFTypeRef		value;
	
	value = inDict ? CFDictionaryGetValue( inDict, inKey ) : NULL;
    e884c670:	c515                	beqz	a0,e884c69c <CFDictionaryGetInt64+0x2c>
{
    e884c672:	1101                	addi	sp,sp,-32
    e884c674:	e432                	sd	a2,8(sp)
    e884c676:	ec06                	sd	ra,24(sp)
	value = inDict ? CFDictionaryGetValue( inDict, inKey ) : NULL;
    e884c678:	dc7fa0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	if( value )
    e884c67c:	6622                	ld	a2,8(sp)
    e884c67e:	c511                	beqz	a0,e884c68a <CFDictionaryGetInt64+0x1a>
	{
		x = 0;
		if( outErr ) *outErr = kNotFoundErr;
	}
	return( x );
}
    e884c680:	60e2                	ld	ra,24(sp)
		x = CFGetInt64( value, outErr );
    e884c682:	85b2                	mv	a1,a2
}
    e884c684:	6105                	addi	sp,sp,32
		x = CFGetInt64( value, outErr );
    e884c686:	e12ff06f          	j	e884bc98 <CFGetInt64>
		if( outErr ) *outErr = kNotFoundErr;
    e884c68a:	c609                	beqz	a2,e884c694 <CFDictionaryGetInt64+0x24>
    e884c68c:	77f9                	lui	a5,0xffffe
    e884c68e:	5b97879b          	addiw	a5,a5,1465
    e884c692:	c21c                	sw	a5,0(a2)
}
    e884c694:	60e2                	ld	ra,24(sp)
    e884c696:	4501                	li	a0,0
    e884c698:	6105                	addi	sp,sp,32
    e884c69a:	8082                	ret
		if( outErr ) *outErr = kNotFoundErr;
    e884c69c:	c609                	beqz	a2,e884c6a6 <CFDictionaryGetInt64+0x36>
    e884c69e:	77f9                	lui	a5,0xffffe
    e884c6a0:	5b97879b          	addiw	a5,a5,1465
    e884c6a4:	c21c                	sw	a5,0(a2)
}
    e884c6a6:	4501                	li	a0,0
    e884c6a8:	8082                	ret

00000000e884c6aa <CFDictionaryGetTypedValue>:
//===========================================================================================================================
//	CFDictionaryGetTypedValue
//===========================================================================================================================

CFTypeRef	CFDictionaryGetTypedValue( CFDictionaryRef inDict, const void *inKey, CFTypeID inType, OSStatus *outErr )
{
    e884c6aa:	1101                	addi	sp,sp,-32
    e884c6ac:	f891540b          	sdd	s0,s1,(sp),0,4
    e884c6b0:	ec06                	sd	ra,24(sp)
    e884c6b2:	e84a                	sd	s2,16(sp)
    e884c6b4:	84b6                	mv	s1,a3
	CFTypeRef		obj = NULL;
	CFTypeRef		tempObj;
	OSStatus		err;
	
	require_action_quiet( inDict, exit, err = kParamErr );
    e884c6b6:	c90d                	beqz	a0,e884c6e8 <CFDictionaryGetTypedValue+0x3e>
    e884c6b8:	8932                	mv	s2,a2
	
	tempObj = CFDictionaryGetValue( inDict, inKey );
    e884c6ba:	d85fa0ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e884c6be:	842a                	mv	s0,a0
	require_action_quiet( tempObj, exit, err = kNotFoundErr );
    e884c6c0:	c90d                	beqz	a0,e884c6f2 <CFDictionaryGetTypedValue+0x48>
	require_action_quiet( CFGetTypeID( tempObj ) == inType, exit, err = kTypeErr );
    e884c6c2:	a71fa0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884c6c6:	2501                	sext.w	a0,a0
	
	obj = tempObj;
	err = kNoErr;
    e884c6c8:	4781                	li	a5,0
	require_action_quiet( CFGetTypeID( tempObj ) == inType, exit, err = kTypeErr );
    e884c6ca:	01250663          	beq	a0,s2,e884c6d6 <CFDictionaryGetTypedValue+0x2c>
    e884c6ce:	77f9                	lui	a5,0xffffe
    e884c6d0:	59c78793          	addi	a5,a5,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
	CFTypeRef		obj = NULL;
    e884c6d4:	4401                	li	s0,0
	
exit:
	if( outErr ) *outErr = err;
    e884c6d6:	c091                	beqz	s1,e884c6da <CFDictionaryGetTypedValue+0x30>
    e884c6d8:	c09c                	sw	a5,0(s1)
	return( obj );
}
    e884c6da:	8522                	mv	a0,s0
    e884c6dc:	60e2                	ld	ra,24(sp)
    e884c6de:	f891440b          	ldd	s0,s1,(sp),0,4
    e884c6e2:	6942                	ld	s2,16(sp)
    e884c6e4:	6105                	addi	sp,sp,32
    e884c6e6:	8082                	ret
	require_action_quiet( inDict, exit, err = kParamErr );
    e884c6e8:	77f9                	lui	a5,0xffffe
    e884c6ea:	842a                	mv	s0,a0
    e884c6ec:	5cf78793          	addi	a5,a5,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e884c6f0:	b7dd                	j	e884c6d6 <CFDictionaryGetTypedValue+0x2c>
	require_action_quiet( tempObj, exit, err = kNotFoundErr );
    e884c6f2:	77f9                	lui	a5,0xffffe
    e884c6f4:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e884c6f8:	bff9                	j	e884c6d6 <CFDictionaryGetTypedValue+0x2c>

00000000e884c6fa <CFNumberCreateInt64>:
//===========================================================================================================================
//	CFNumberCreateInt64
//===========================================================================================================================

CFNumberRef	CFNumberCreateInt64( int64_t x )
{
    e884c6fa:	7179                	addi	sp,sp,-48
    e884c6fc:	f406                	sd	ra,40(sp)
    e884c6fe:	e42a                	sd	a0,8(sp)
	int16_t			s16;
	int32_t			s32;
	CFNumberType	type;
	void *			ptr;
	
	if(      ( x >= INT8_MIN )  && ( x <= INT8_MAX ) )  { s8  = (int8_t)  x; type = kCFNumberSInt8Type;  ptr = &s8; }
    e884c700:	08050713          	addi	a4,a0,128
    e884c704:	0ff00793          	li	a5,255
    e884c708:	00e7ed63          	bltu	a5,a4,e884c722 <CFNumberCreateInt64+0x28>
    e884c70c:	00a10ca3          	sb	a0,25(sp)
    e884c710:	01910613          	addi	a2,sp,25
    e884c714:	4585                	li	a1,1
	else if( ( x >= INT16_MIN ) && ( x <= INT16_MAX ) ) { s16 = (int16_t) x; type = kCFNumberSInt16Type; ptr = &s16; }
	else if( ( x >= INT32_MIN ) && ( x <= INT32_MAX ) ) { s32 = (int32_t) x; type = kCFNumberSInt32Type; ptr = &s32; }
	else												{					 type = kCFNumberSInt64Type; ptr = &x; }
	
	return( CFNumberCreate( NULL, type, ptr ) );
    e884c716:	4501                	li	a0,0
    e884c718:	d57fa0ef          	jal	ra,e884746e <CFNumberCreate>
}
    e884c71c:	70a2                	ld	ra,40(sp)
    e884c71e:	6145                	addi	sp,sp,48
    e884c720:	8082                	ret
	else if( ( x >= INT16_MIN ) && ( x <= INT16_MAX ) ) { s16 = (int16_t) x; type = kCFNumberSInt16Type; ptr = &s16; }
    e884c722:	67a1                	lui	a5,0x8
    e884c724:	97aa                	add	a5,a5,a0
    e884c726:	6741                	lui	a4,0x10
    e884c728:	00e7f863          	bgeu	a5,a4,e884c738 <CFNumberCreateInt64+0x3e>
    e884c72c:	00a11d23          	sh	a0,26(sp)
    e884c730:	01a10613          	addi	a2,sp,26
    e884c734:	4589                	li	a1,2
    e884c736:	b7c5                	j	e884c716 <CFNumberCreateInt64+0x1c>
	else if( ( x >= INT32_MIN ) && ( x <= INT32_MAX ) ) { s32 = (int32_t) x; type = kCFNumberSInt32Type; ptr = &s32; }
    e884c738:	4785                	li	a5,1
    e884c73a:	07fe                	slli	a5,a5,0x1f
    e884c73c:	577d                	li	a4,-1
    e884c73e:	97aa                	add	a5,a5,a0
    e884c740:	9301                	srli	a4,a4,0x20
    e884c742:	00f76663          	bltu	a4,a5,e884c74e <CFNumberCreateInt64+0x54>
    e884c746:	ce2a                	sw	a0,28(sp)
    e884c748:	0870                	addi	a2,sp,28
    e884c74a:	458d                	li	a1,3
    e884c74c:	b7e9                	j	e884c716 <CFNumberCreateInt64+0x1c>
	else												{					 type = kCFNumberSInt64Type; ptr = &x; }
    e884c74e:	0030                	addi	a2,sp,8
    e884c750:	4591                	li	a1,4
    e884c752:	b7d1                	j	e884c716 <CFNumberCreateInt64+0x1c>

00000000e884c754 <CFPropertyListBuildFormatted>:
{
    e884c754:	7115                	addi	sp,sp,-224
    e884c756:	fd4e                	sd	s3,184(sp)
    e884c758:	ed5e                	sd	s7,152(sp)
    e884c75a:	ed86                	sd	ra,216(sp)
    e884c75c:	e9a2                	sd	s0,208(sp)
    e884c75e:	e5a6                	sd	s1,200(sp)
    e884c760:	e1ca                	sd	s2,192(sp)
    e884c762:	f952                	sd	s4,176(sp)
    e884c764:	f556                	sd	s5,168(sp)
    e884c766:	f15a                	sd	s6,160(sp)
    e884c768:	e962                	sd	s8,144(sp)
    e884c76a:	e566                	sd	s9,136(sp)
    e884c76c:	e16a                	sd	s10,128(sp)
    e884c76e:	fcee                	sd	s11,120(sp)
	CFStringRef					key			= NULL;
    e884c770:	ec02                	sd	zero,24(sp)
	CFTypeRef					topObject	= NULL;
    e884c772:	f002                	sd	zero,32(sp)
{
    e884c774:	8bae                	mv	s7,a1
    e884c776:	89b6                	mv	s3,a3
	require_action( inFormat, exit, err = kParamErr );
    e884c778:	6c068f63          	beqz	a3,e884ce56 <CFPropertyListBuildFormatted+0x702>
    e884c77c:	8aaa                	mv	s5,a0
    e884c77e:	8cb2                	mv	s9,a2
    e884c780:	843a                	mv	s0,a4
	if( inParent )
    e884c782:	c9b9                	beqz	a1,e884c7d8 <CFPropertyListBuildFormatted+0x84>
		typeID = CFGetTypeID( inParent );
    e884c784:	852e                	mv	a0,a1
    e884c786:	9adfa0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884c78a:	0005091b          	sext.w	s2,a0
		if(      typeID == CFArrayGetTypeID() )			array = (CFMutableArrayRef) inParent;
    e884c78e:	9dbfa0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e884c792:	2501                	sext.w	a0,a0
    e884c794:	09250f63          	beq	a0,s2,e884c832 <CFPropertyListBuildFormatted+0xde>
		else if( typeID == CFDictionaryGetTypeID() )	dict  = (CFMutableDictionaryRef) inParent;
    e884c798:	c0bfa0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e884c79c:	2501                	sext.w	a0,a0
    e884c79e:	84de                	mv	s1,s7
	CFMutableArrayRef			array		= NULL; // Only 1 of array or dict will be used to track the container.
    e884c7a0:	4a01                	li	s4,0
		else if( typeID == CFDictionaryGetTypeID() )	dict  = (CFMutableDictionaryRef) inParent;
    e884c7a2:	03250d63          	beq	a0,s2,e884c7dc <CFPropertyListBuildFormatted+0x88>
			dlogassert( "Parent must be an array, dictionary, or null (typeID=%d)", (int) typeID );
    e884c7a6:	88ca                	mv	a7,s2
    e884c7a8:	00072817          	auipc	a6,0x72
    e884c7ac:	70080813          	addi	a6,a6,1792 # e88beea8 <kCFRunLoopTimerClass+0x100>
    e884c7b0:	00073797          	auipc	a5,0x73
    e884c7b4:	83078793          	addi	a5,a5,-2000 # e88befe0 <__PRETTY_FUNCTION__.9614>
    e884c7b8:	10700713          	li	a4,263
    e884c7bc:	00072697          	auipc	a3,0x72
    e884c7c0:	72c68693          	addi	a3,a3,1836 # e88beee8 <kCFRunLoopTimerClass+0x140>
    e884c7c4:	4601                	li	a2,0
    e884c7c6:	4581                	li	a1,0
    e884c7c8:	4501                	li	a0,0
    e884c7ca:	3ff010ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	CFPropertyListStack *		parentStack	= NULL;
    e884c7ce:	4981                	li	s3,0
					require_action( CFGetTypeID( obj ) == CFDictionaryGetTypeID(), exit, err = kTypeErr );
    e884c7d0:	77f9                	lui	a5,0xffffe
    e884c7d2:	59c78d13          	addi	s10,a5,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
    e884c7d6:	ab3d                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
	CFMutableDictionaryRef		dict		= NULL; // Separate variables avoid the need for more costly type ID checks.
    e884c7d8:	4481                	li	s1,0
	CFMutableArrayRef			array		= NULL; // Only 1 of array or dict will be used to track the container.
    e884c7da:	4a01                	li	s4,0
				key = CFStringCreateWithBytes( inAllocator, p, (CFIndex)( fmt - p ), kCFStringEncodingUTF8, false );
    e884c7dc:	08000b37          	lui	s6,0x8000
	for( c = *fmt; c != '\0'; c = *( ++fmt ) )
    e884c7e0:	0009cc03          	lbu	s8,0(s3)
    e884c7e4:	894e                	mv	s2,s3
				key = CFStringCreateWithBytes( inAllocator, p, (CFIndex)( fmt - p ), kCFStringEncodingUTF8, false );
    e884c7e6:	100b0b13          	addi	s6,s6,256 # 8000100 <memcmp-0xe07fff00>
	CFPropertyListStack *		parentStack	= NULL;
    e884c7ea:	4981                	li	s3,0
	for( c = *fmt; c != '\0'; c = *( ++fmt ) )
    e884c7ec:	160c0863          	beqz	s8,e884c95c <CFPropertyListBuildFormatted+0x208>
		switch( c )
    e884c7f0:	05d00793          	li	a5,93
    e884c7f4:	04fc0a63          	beq	s8,a5,e884c848 <CFPropertyListBuildFormatted+0xf4>
    e884c7f8:	0587e063          	bltu	a5,s8,e884c838 <CFPropertyListBuildFormatted+0xe4>
    e884c7fc:	05b00793          	li	a5,91
    e884c800:	04fc0f63          	beq	s8,a5,e884c85e <CFPropertyListBuildFormatted+0x10a>
		if( c != '%' )
    e884c804:	02500713          	li	a4,37
    e884c808:	8dca                	mv	s11,s2
			for( ; ( c != '\0' ) && ( c != '=' ) && ( c != ';' ); c = *( ++fmt ) ) {}
    e884c80a:	03d00793          	li	a5,61
		if( c != '%' )
    e884c80e:	10ec1763          	bne	s8,a4,e884c91c <CFPropertyListBuildFormatted+0x1c8>
    e884c812:	8522                	mv	a0,s0
    e884c814:	85ca                	mv	a1,s2
		suppress = 0;
    e884c816:	4801                	li	a6,0
		longFlag = 0;
    e884c818:	4701                	li	a4,0
		altForm  = 0;
    e884c81a:	4781                	li	a5,0
			if(       c == '#' ) ++altForm;
    e884c81c:	02300613          	li	a2,35
			else if ( c == '?' ) suppress = !va_arg( inArgs, int );
    e884c820:	03f00893          	li	a7,63
			c = *( ++fmt );
    e884c824:	8819468b          	lbuib	a3,(s2),1,0
			if(       c == '#' ) ++altForm;
    e884c828:	14c69d63          	bne	a3,a2,e884c982 <CFPropertyListBuildFormatted+0x22e>
    e884c82c:	2785                	addiw	a5,a5,1
			c = *( ++fmt );
    e884c82e:	85ca                	mv	a1,s2
    e884c830:	bfd5                	j	e884c824 <CFPropertyListBuildFormatted+0xd0>
    e884c832:	8a5e                	mv	s4,s7
	CFMutableDictionaryRef		dict		= NULL; // Separate variables avoid the need for more costly type ID checks.
    e884c834:	4481                	li	s1,0
    e884c836:	b75d                	j	e884c7dc <CFPropertyListBuildFormatted+0x88>
		switch( c )
    e884c838:	07b00793          	li	a5,123
    e884c83c:	06fc0e63          	beq	s8,a5,e884c8b8 <CFPropertyListBuildFormatted+0x164>
    e884c840:	07d00793          	li	a5,125
    e884c844:	fcfc10e3          	bne	s8,a5,e884c804 <CFPropertyListBuildFormatted+0xb0>
	require_action( node, exit, err = kMalformedErr );
    e884c848:	62098563          	beqz	s3,e884ce72 <CFPropertyListBuildFormatted+0x71e>
	*outArray 	= node->array;
    e884c84c:	f949cc0b          	ldd	s8,s4,(s3),0,4
	free( node );
    e884c850:	854e                	mv	a0,s3
	*outDict 	= node->dict;
    e884c852:	0109b483          	ld	s1,16(s3)
	free( node );
    e884c856:	2ab2f0ef          	jal	ra,e887c300 <eLIBs_free>
	*ioStack 	= node->next;
    e884c85a:	89e2                	mv	s3,s8
    e884c85c:	a891                	j	e884c8b0 <CFPropertyListBuildFormatted+0x15c>
				obj = CFArrayCreateMutable( inAllocator, 0, &kCFTypeArrayCallBacks );
    e884c85e:	00072617          	auipc	a2,0x72
    e884c862:	f1260613          	addi	a2,a2,-238 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e884c866:	4581                	li	a1,0
    e884c868:	8556                	mv	a0,s5
    e884c86a:	95dfa0ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e884c86e:	8c2a                	mv	s8,a0
				require_action( obj, exit, err = kNoMemoryErr );
    e884c870:	22050d63          	beqz	a0,e884caaa <CFPropertyListBuildFormatted+0x356>
				err = _CFPropertyListAssociateObject( array, dict, &key, obj, &topObject );
    e884c874:	86aa                	mv	a3,a0
    e884c876:	1018                	addi	a4,sp,32
    e884c878:	0830                	addi	a2,sp,24
    e884c87a:	85a6                	mv	a1,s1
    e884c87c:	8552                	mv	a0,s4
    e884c87e:	e39fe0ef          	jal	ra,e884b6b6 <_CFPropertyListAssociateObject>
    e884c882:	8d2a                	mv	s10,a0
				CFRelease( obj );
    e884c884:	8562                	mv	a0,s8
    e884c886:	8c5fa0ef          	jal	ra,e884714a <CFRelease>
				require_noerr( err, exit );
    e884c88a:	480d1563          	bnez	s10,e884cd14 <CFPropertyListBuildFormatted+0x5c0>
    p = malloc(len);
    e884c88e:	4561                	li	a0,24
    e884c890:	7bf2e0ef          	jal	ra,e887b84e <my_malloc>
    e884c894:	8d2a                	mv	s10,a0
    memset(p,0,len);
    e884c896:	4661                	li	a2,24
    e884c898:	4581                	li	a1,0
    e884c89a:	2fb2f0ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( node, exit, err = kNoMemoryErr );
    e884c89e:	200d0663          	beqz	s10,e884caaa <CFPropertyListBuildFormatted+0x356>
	node->array		= inArray;
    e884c8a2:	f94d598b          	sdd	s3,s4,(s10),0,4
	node->dict		= inDict;
    e884c8a6:	009d3823          	sd	s1,16(s10)
    e884c8aa:	89ea                	mv	s3,s10
    e884c8ac:	8a62                	mv	s4,s8
				dict = NULL;
    e884c8ae:	4481                	li	s1,0
	for( c = *fmt; c != '\0'; c = *( ++fmt ) )
    e884c8b0:	00194c03          	lbu	s8,1(s2)
    e884c8b4:	0905                	addi	s2,s2,1
    e884c8b6:	bf1d                	j	e884c7ec <CFPropertyListBuildFormatted+0x98>
				obj = CFDictionaryCreateMutable( inAllocator, 0, &kCFTypeDictionaryKeyCallBacks, 
    e884c8b8:	00072697          	auipc	a3,0x72
    e884c8bc:	f1068693          	addi	a3,a3,-240 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e884c8c0:	00072617          	auipc	a2,0x72
    e884c8c4:	ed860613          	addi	a2,a2,-296 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e884c8c8:	4581                	li	a1,0
    e884c8ca:	8556                	mv	a0,s5
    e884c8cc:	adbfa0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e884c8d0:	8c2a                	mv	s8,a0
				require_action( obj, exit, err = kNoMemoryErr );
    e884c8d2:	1c050c63          	beqz	a0,e884caaa <CFPropertyListBuildFormatted+0x356>
				err = _CFPropertyListAssociateObject( array, dict, &key, obj, &topObject );
    e884c8d6:	86aa                	mv	a3,a0
    e884c8d8:	1018                	addi	a4,sp,32
    e884c8da:	0830                	addi	a2,sp,24
    e884c8dc:	85a6                	mv	a1,s1
    e884c8de:	8552                	mv	a0,s4
    e884c8e0:	dd7fe0ef          	jal	ra,e884b6b6 <_CFPropertyListAssociateObject>
    e884c8e4:	8d2a                	mv	s10,a0
				CFRelease( obj );
    e884c8e6:	8562                	mv	a0,s8
    e884c8e8:	863fa0ef          	jal	ra,e884714a <CFRelease>
				require_noerr( err, exit );
    e884c8ec:	420d1463          	bnez	s10,e884cd14 <CFPropertyListBuildFormatted+0x5c0>
    p = malloc(len);
    e884c8f0:	4561                	li	a0,24
    e884c8f2:	75d2e0ef          	jal	ra,e887b84e <my_malloc>
    e884c8f6:	8d2a                	mv	s10,a0
    memset(p,0,len);
    e884c8f8:	4661                	li	a2,24
    e884c8fa:	4581                	li	a1,0
    e884c8fc:	2992f0ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( node, exit, err = kNoMemoryErr );
    e884c900:	1a0d0563          	beqz	s10,e884caaa <CFPropertyListBuildFormatted+0x356>
	node->array		= inArray;
    e884c904:	f94d598b          	sdd	s3,s4,(s10),0,4
	node->dict		= inDict;
    e884c908:	009d3823          	sd	s1,16(s10)
    e884c90c:	89ea                	mv	s3,s10
    e884c90e:	84e2                	mv	s1,s8
				array = NULL;
    e884c910:	4a01                	li	s4,0
    e884c912:	bf79                	j	e884c8b0 <CFPropertyListBuildFormatted+0x15c>
			for( ; ( c != '\0' ) && ( c != '=' ) && ( c != ';' ); c = *( ++fmt ) ) {}
    e884c914:	881dcc0b          	lbuib	s8,(s11),1,0
    e884c918:	000c0863          	beqz	s8,e884c928 <CFPropertyListBuildFormatted+0x1d4>
    e884c91c:	54fc0863          	beq	s8,a5,e884ce6c <CFPropertyListBuildFormatted+0x718>
    e884c920:	03b00713          	li	a4,59
    e884c924:	feec18e3          	bne	s8,a4,e884c914 <CFPropertyListBuildFormatted+0x1c0>
				obj = CFStringCreateWithBytes( inAllocator, p, (CFIndex)( fmt - p ), kCFStringEncodingUTF8, false );
    e884c928:	412d863b          	subw	a2,s11,s2
    e884c92c:	85ca                	mv	a1,s2
    e884c92e:	4701                	li	a4,0
    e884c930:	86da                	mv	a3,s6
    e884c932:	8556                	mv	a0,s5
    e884c934:	b65fa0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884c938:	892a                	mv	s2,a0
				require_action( obj, exit, err = kNoMemoryErr );
    e884c93a:	16050863          	beqz	a0,e884caaa <CFPropertyListBuildFormatted+0x356>
				err = _CFPropertyListAssociateObject( array, dict, &key, obj, &topObject );
    e884c93e:	1018                	addi	a4,sp,32
    e884c940:	86ca                	mv	a3,s2
    e884c942:	0830                	addi	a2,sp,24
    e884c944:	85a6                	mv	a1,s1
    e884c946:	8552                	mv	a0,s4
    e884c948:	d6ffe0ef          	jal	ra,e884b6b6 <_CFPropertyListAssociateObject>
    e884c94c:	8d2a                	mv	s10,a0
				CFRelease( obj );
    e884c94e:	854a                	mv	a0,s2
    e884c950:	ffafa0ef          	jal	ra,e884714a <CFRelease>
				require_noerr( err, exit );
    e884c954:	3c0d1063          	bnez	s10,e884cd14 <CFPropertyListBuildFormatted+0x5c0>
				if( c == '\0' ) break;
    e884c958:	020c1363          	bnez	s8,e884c97e <CFPropertyListBuildFormatted+0x22a>
	if( outObj )
    e884c95c:	4c0c9c63          	bnez	s9,e884ce34 <CFPropertyListBuildFormatted+0x6e0>
	err = kNoErr;
    e884c960:	4d01                	li	s10,0
    e884c962:	ae4d                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
				require_action( dict, exit, err = kMalformedErr );
    e884c964:	50048763          	beqz	s1,e884ce72 <CFPropertyListBuildFormatted+0x71e>
				key = CFStringCreateWithBytes( inAllocator, p, (CFIndex)( fmt - p ), kCFStringEncodingUTF8, false );
    e884c968:	4701                	li	a4,0
    e884c96a:	86da                	mv	a3,s6
    e884c96c:	412d863b          	subw	a2,s11,s2
    e884c970:	85ca                	mv	a1,s2
    e884c972:	8556                	mv	a0,s5
    e884c974:	b25fa0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884c978:	ec2a                	sd	a0,24(sp)
				require_action( key, exit, err = kNoMemoryErr );
    e884c97a:	12050863          	beqz	a0,e884caaa <CFPropertyListBuildFormatted+0x356>
    e884c97e:	896e                	mv	s2,s11
    e884c980:	bf05                	j	e884c8b0 <CFPropertyListBuildFormatted+0x15c>
			else if ( c == 'l' ) ++longFlag;
    e884c982:	06c00413          	li	s0,108
    e884c986:	00869463          	bne	a3,s0,e884c98e <CFPropertyListBuildFormatted+0x23a>
    e884c98a:	2705                	addiw	a4,a4,1
    e884c98c:	b54d                	j	e884c82e <CFPropertyListBuildFormatted+0xda>
			else if ( c == '?' ) suppress = !va_arg( inArgs, int );
    e884c98e:	01169763          	bne	a3,a7,e884c99c <CFPropertyListBuildFormatted+0x248>
    e884c992:	5885480b          	lwia	a6,(a0),8,0
    e884c996:	00183813          	seqz	a6,a6
    e884c99a:	bd51                	j	e884c82e <CFPropertyListBuildFormatted+0xda>
		if( c == '.' )
    e884c99c:	02e00893          	li	a7,46
		precision = -1;
    e884c9a0:	567d                	li	a2,-1
		if( c == '.' )
    e884c9a2:	05169163          	bne	a3,a7,e884c9e4 <CFPropertyListBuildFormatted+0x290>
			c = *( ++fmt );
    e884c9a6:	00194683          	lbu	a3,1(s2)
			if( c == '*' )
    e884c9aa:	02a00613          	li	a2,42
    e884c9ae:	02c68363          	beq	a3,a2,e884c9d4 <CFPropertyListBuildFormatted+0x280>
			c = *( ++fmt );
    e884c9b2:	00258913          	addi	s2,a1,2
				precision = 0;
    e884c9b6:	4601                	li	a2,0
				for( ; isdigit( c ); c = *( ++fmt ) ) precision = ( precision * 10 ) + ( c - '0' );
    e884c9b8:	48a5                	li	a7,9
    e884c9ba:	4329                	li	t1,10
    e884c9bc:	fd06859b          	addiw	a1,a3,-48
    e884c9c0:	0ff5f593          	andi	a1,a1,255
    e884c9c4:	08b8f463          	bgeu	a7,a1,e884ca4c <CFPropertyListBuildFormatted+0x2f8>
				require_action( precision >= 0, exit, err = kSizeErr );
    e884c9c8:	00065e63          	bgez	a2,e884c9e4 <CFPropertyListBuildFormatted+0x290>
    e884c9cc:	77f9                	lui	a5,0xffffe
    e884c9ce:	5a978d13          	addi	s10,a5,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e884c9d2:	a689                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
				precision = va_arg( inArgs, int );
    e884c9d4:	5885460b          	lwia	a2,(a0),8,0
				require_action( precision >= 0, exit, err = kSizeErr );
    e884c9d8:	fe064ae3          	bltz	a2,e884c9cc <CFPropertyListBuildFormatted+0x278>
				c = *( ++fmt );
    e884c9dc:	00294683          	lbu	a3,2(s2)
    e884c9e0:	00358913          	addi	s2,a1,3
		if( c == 'k' )
    e884c9e4:	06b00593          	li	a1,107
    e884c9e8:	12b69d63          	bne	a3,a1,e884cb22 <CFPropertyListBuildFormatted+0x3ce>
			require_action( !key, exit, err = kMalformedErr );
    e884c9ec:	67e2                	ld	a5,24(sp)
    e884c9ee:	48079263          	bnez	a5,e884ce72 <CFPropertyListBuildFormatted+0x71e>
			require_action( dict, exit, err = kMalformedErr );
    e884c9f2:	48048063          	beqz	s1,e884ce72 <CFPropertyListBuildFormatted+0x71e>
			require_action( !suppress, exit, err = kUnsupportedErr );
    e884c9f6:	44081463          	bnez	a6,e884ce3e <CFPropertyListBuildFormatted+0x6ea>
			c = *( ++fmt );
    e884c9fa:	00194783          	lbu	a5,1(s2)
			switch( c )
    e884c9fe:	05500713          	li	a4,85
    e884ca02:	10e78063          	beq	a5,a4,e884cb02 <CFPropertyListBuildFormatted+0x3ae>
    e884ca06:	04f76a63          	bltu	a4,a5,e884ca5a <CFPropertyListBuildFormatted+0x306>
    e884ca0a:	04300713          	li	a4,67
    e884ca0e:	0ae78763          	beq	a5,a4,e884cabc <CFPropertyListBuildFormatted+0x368>
    e884ca12:	04f00713          	li	a4,79
    e884ca16:	0ce78163          	beq	a5,a4,e884cad8 <CFPropertyListBuildFormatted+0x384>
					dlogassert( "Unknown key specifier: %s", fmt );
    e884ca1a:	00190893          	addi	a7,s2,1
    e884ca1e:	00072817          	auipc	a6,0x72
    e884ca22:	57a80813          	addi	a6,a6,1402 # e88bef98 <kCFRunLoopTimerClass+0x1f0>
    e884ca26:	00072797          	auipc	a5,0x72
    e884ca2a:	5ba78793          	addi	a5,a5,1466 # e88befe0 <__PRETTY_FUNCTION__.9614>
    e884ca2e:	1c600713          	li	a4,454
				dlogassert( "Unknown format char: %s", fmt );
    e884ca32:	00072697          	auipc	a3,0x72
    e884ca36:	4b668693          	addi	a3,a3,1206 # e88beee8 <kCFRunLoopTimerClass+0x140>
    e884ca3a:	4601                	li	a2,0
    e884ca3c:	4581                	li	a1,0
    e884ca3e:	4501                	li	a0,0
    e884ca40:	189010ef          	jal	ra,e884e3c8 <DebugPrintAssert>
				require_action( precision == -1, exit, err = kFormatErr );
    e884ca44:	77f9                	lui	a5,0xffffe
    e884ca46:	5c378d13          	addi	s10,a5,1475 # ffffffffffffe5c3 <__DRAM0_INF_BASE+0xffffffff0000e5c3>
    e884ca4a:	a4e9                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
				for( ; isdigit( c ); c = *( ++fmt ) ) precision = ( precision * 10 ) + ( c - '0' );
    e884ca4c:	24c3168b          	mulaw	a3,t1,a2
    e884ca50:	fd06861b          	addiw	a2,a3,-48
    e884ca54:	8819468b          	lbuib	a3,(s2),1,0
    e884ca58:	b795                	j	e884c9bc <CFPropertyListBuildFormatted+0x268>
			switch( c )
    e884ca5a:	06f00713          	li	a4,111
    e884ca5e:	06e78d63          	beq	a5,a4,e884cad8 <CFPropertyListBuildFormatted+0x384>
    e884ca62:	07300713          	li	a4,115
    e884ca66:	fae79ae3          	bne	a5,a4,e884ca1a <CFPropertyListBuildFormatted+0x2c6>
					p = va_arg( inArgs, const unsigned char * );
    e884ca6a:	842a                	mv	s0,a0
    e884ca6c:	7884458b          	ldia	a1,(s0),8,0
					require_action( p, exit, err = kParamErr );
    e884ca70:	3e058363          	beqz	a1,e884ce56 <CFPropertyListBuildFormatted+0x702>
					if( precision >= 0 )
    e884ca74:	e432                	sd	a2,8(sp)
    e884ca76:	57fd                	li	a5,-1
    e884ca78:	02f60d63          	beq	a2,a5,e884cab2 <CFPropertyListBuildFormatted+0x35e>
						precision = (int) strnlen( (const char *) p, (size_t) precision );
    e884ca7c:	852e                	mv	a0,a1
    e884ca7e:	e02e                	sd	a1,0(sp)
    e884ca80:	0992f0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e884ca84:	7c05350b          	extu	a0,a0,31,0
    e884ca88:	f8c1458b          	ldd	a1,a2,(sp),0,4
    e884ca8c:	00a66863          	bltu	a2,a0,e884ca9c <CFPropertyListBuildFormatted+0x348>
    e884ca90:	852e                	mv	a0,a1
    e884ca92:	0872f0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e884ca96:	0005061b          	sext.w	a2,a0
    e884ca9a:	6582                	ld	a1,0(sp)
						key = CFStringCreateWithBytes( inAllocator, p, precision, kCFStringEncodingUTF8, false );
    e884ca9c:	4701                	li	a4,0
    e884ca9e:	86da                	mv	a3,s6
					key = CFStringCreateWithBytes( inAllocator, buf, 4, kCFStringEncodingMacRoman, false );
    e884caa0:	8556                	mv	a0,s5
    e884caa2:	9f7fa0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
					key = CFStringCreateWithCString( NULL, UUIDtoCString( p, 0, buf ), kCFStringEncodingUTF8 );
    e884caa6:	ec2a                	sd	a0,24(sp)
					require_action( key, exit, err = kNoMemoryErr );
    e884caa8:	e139                	bnez	a0,e884caee <CFPropertyListBuildFormatted+0x39a>
				require_action( obj, exit, err = kNoMemoryErr );
    e884caaa:	77f9                	lui	a5,0xffffe
    e884caac:	5b878d13          	addi	s10,a5,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884cab0:	a495                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
						key = CFStringCreateWithCString( inAllocator, (const char *) p, kCFStringEncodingUTF8 );
    e884cab2:	865a                	mv	a2,s6
    e884cab4:	8556                	mv	a0,s5
					key = CFStringCreateWithCString( NULL, UUIDtoCString( p, 0, buf ), kCFStringEncodingUTF8 );
    e884cab6:	a6ffa0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884caba:	b7f5                	j	e884caa6 <CFPropertyListBuildFormatted+0x352>
					require_action( precision == -1, exit, err = kFormatErr );
    e884cabc:	57fd                	li	a5,-1
    e884cabe:	f8f613e3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
					u32 = va_arg( inArgs, uint32_t );
    e884cac2:	842a                	mv	s0,a0
    e884cac4:	5884478b          	lwia	a5,(s0),8,0
					key = CFStringCreateWithBytes( inAllocator, buf, 4, kCFStringEncodingMacRoman, false );
    e884cac8:	4701                	li	a4,0
    e884caca:	4681                	li	a3,0
    e884cacc:	9007978b          	revw	a5,a5
					buf[ 0 ] = (unsigned char)( ( u32 >> 24 ) & 0xFF );
    e884cad0:	d83e                	sw	a5,48(sp)
					key = CFStringCreateWithBytes( inAllocator, buf, 4, kCFStringEncodingMacRoman, false );
    e884cad2:	4611                	li	a2,4
    e884cad4:	180c                	addi	a1,sp,48
    e884cad6:	b7e9                	j	e884caa0 <CFPropertyListBuildFormatted+0x34c>
					require_action( precision == -1, exit, err = kFormatErr );
    e884cad8:	57fd                	li	a5,-1
    e884cada:	f6f615e3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
					key = va_arg( inArgs, CFStringRef );
    e884cade:	842a                	mv	s0,a0
    e884cae0:	7884450b          	ldia	a0,(s0),8,0
    e884cae4:	ec2a                	sd	a0,24(sp)
					require_action( key, exit, err = kParamErr );
    e884cae6:	36050863          	beqz	a0,e884ce56 <CFPropertyListBuildFormatted+0x702>
					CFRetain( key );
    e884caea:	e5cfa0ef          	jal	ra,e8847146 <CFRetain>
			require_action( c == '=', exit, err = kFormatErr );
    e884caee:	00294683          	lbu	a3,2(s2)
    e884caf2:	03d00713          	li	a4,61
			c = *( ++fmt );
    e884caf6:	00290793          	addi	a5,s2,2
			require_action( c == '=', exit, err = kFormatErr );
    e884cafa:	f4e695e3          	bne	a3,a4,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
			c = *( ++fmt );
    e884cafe:	893e                	mv	s2,a5
    e884cb00:	bb45                	j	e884c8b0 <CFPropertyListBuildFormatted+0x15c>
					require_action( precision == -1, exit, err = kFormatErr );
    e884cb02:	57fd                	li	a5,-1
    e884cb04:	f4f610e3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
					p = va_arg( inArgs, const unsigned char * );
    e884cb08:	842a                	mv	s0,a0
    e884cb0a:	7884450b          	ldia	a0,(s0),8,0
					require_action( p, exit, err = kParamErr );
    e884cb0e:	34050463          	beqz	a0,e884ce56 <CFPropertyListBuildFormatted+0x702>
					key = CFStringCreateWithCString( NULL, UUIDtoCString( p, 0, buf ), kCFStringEncodingUTF8 );
    e884cb12:	1810                	addi	a2,sp,48
    e884cb14:	4581                	li	a1,0
    e884cb16:	4e7120ef          	jal	ra,e885f7fc <UUIDtoCString>
    e884cb1a:	85aa                	mv	a1,a0
    e884cb1c:	865a                	mv	a2,s6
    e884cb1e:	4501                	li	a0,0
    e884cb20:	bf59                	j	e884cab6 <CFPropertyListBuildFormatted+0x362>
		switch( c )
    e884cb22:	06100593          	li	a1,97
    e884cb26:	26b68563          	beq	a3,a1,e884cd90 <CFPropertyListBuildFormatted+0x63c>
    e884cb2a:	06d5ea63          	bltu	a1,a3,e884cb9e <CFPropertyListBuildFormatted+0x44a>
    e884cb2e:	04400713          	li	a4,68
    e884cb32:	08e68463          	beq	a3,a4,e884cbba <CFPropertyListBuildFormatted+0x466>
    e884cb36:	02d76663          	bltu	a4,a3,e884cb62 <CFPropertyListBuildFormatted+0x40e>
    e884cb3a:	04000793          	li	a5,64
    e884cb3e:	2cf68f63          	beq	a3,a5,e884ce1c <CFPropertyListBuildFormatted+0x6c8>
    e884cb42:	04300793          	li	a5,67
    e884cb46:	12f68463          	beq	a3,a5,e884cc6e <CFPropertyListBuildFormatted+0x51a>
				dlogassert( "Unknown format char: %s", fmt );
    e884cb4a:	88ca                	mv	a7,s2
    e884cb4c:	00072817          	auipc	a6,0x72
    e884cb50:	47c80813          	addi	a6,a6,1148 # e88befc8 <kCFRunLoopTimerClass+0x220>
    e884cb54:	00072797          	auipc	a5,0x72
    e884cb58:	48c78793          	addi	a5,a5,1164 # e88befe0 <__PRETTY_FUNCTION__.9614>
    e884cb5c:	2a800713          	li	a4,680
    e884cb60:	bdc9                	j	e884ca32 <CFPropertyListBuildFormatted+0x2de>
		switch( c )
    e884cb62:	05400713          	li	a4,84
    e884cb66:	26e68a63          	beq	a3,a4,e884cdda <CFPropertyListBuildFormatted+0x686>
    e884cb6a:	05500713          	li	a4,85
    e884cb6e:	28e68863          	beq	a3,a4,e884cdfe <CFPropertyListBuildFormatted+0x6aa>
    e884cb72:	04f00713          	li	a4,79
    e884cb76:	fce69ae3          	bne	a3,a4,e884cb4a <CFPropertyListBuildFormatted+0x3f6>
				require_action( precision == -1, exit, err = kFormatErr );
    e884cb7a:	577d                	li	a4,-1
    e884cb7c:	ece614e3          	bne	a2,a4,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
				obj = va_arg( inArgs, CFTypeRef );
    e884cb80:	842a                	mv	s0,a0
    e884cb82:	7884468b          	ldia	a3,(s0),8,0
				if( !obj || suppress ) { ForgetCF( &key ); break; }
    e884cb86:	ced1                	beqz	a3,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
    e884cb88:	08081d63          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
				if( altForm == 1 )
    e884cb8c:	4705                	li	a4,1
    e884cb8e:	1ce79463          	bne	a5,a4,e884cd56 <CFPropertyListBuildFormatted+0x602>
					obj = CFPropertyListCreateDeepCopy( inAllocator, obj, kCFPropertyListMutableContainersAndLeaves );
    e884cb92:	4609                	li	a2,2
    e884cb94:	85b6                	mv	a1,a3
    e884cb96:	8556                	mv	a0,s5
    e884cb98:	dbafa0ef          	jal	ra,e8847152 <CFPropertyListCreateDeepCopy>
    e884cb9c:	a895                	j	e884cc10 <CFPropertyListBuildFormatted+0x4bc>
		switch( c )
    e884cb9e:	06600593          	li	a1,102
    e884cba2:	0eb68863          	beq	a3,a1,e884cc92 <CFPropertyListBuildFormatted+0x53e>
    e884cba6:	02d5ec63          	bltu	a1,a3,e884cbde <CFPropertyListBuildFormatted+0x48a>
    e884cbaa:	06200713          	li	a4,98
    e884cbae:	12e68c63          	beq	a3,a4,e884cce6 <CFPropertyListBuildFormatted+0x592>
    e884cbb2:	06400713          	li	a4,100
    e884cbb6:	f8e69ae3          	bne	a3,a4,e884cb4a <CFPropertyListBuildFormatted+0x3f6>
				require_action( precision == -1, exit, err = kFormatErr );
    e884cbba:	577d                	li	a4,-1
    e884cbbc:	e8e614e3          	bne	a2,a4,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
				if( altForm == 0 )
    e884cbc0:	610c                	ld	a1,0(a0)
    e884cbc2:	0e079763          	bnez	a5,e884ccb0 <CFPropertyListBuildFormatted+0x55c>
					n = va_arg( inArgs, int );
    e884cbc6:	01050413          	addi	s0,a0,16
					if( suppress ) { ForgetCF( &key ); break; }
    e884cbca:	04081c63          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
					n = va_arg( inArgs, int );
    e884cbce:	4510                	lw	a2,8(a0)
					require_action( p || ( n == 0 ), exit, err = kParamErr );
    e884cbd0:	e199                	bnez	a1,e884cbd6 <CFPropertyListBuildFormatted+0x482>
    e884cbd2:	28061263          	bnez	a2,e884ce56 <CFPropertyListBuildFormatted+0x702>
					obj = CFDataCreate( inAllocator, p, n );
    e884cbd6:	8556                	mv	a0,s5
    e884cbd8:	ebefa0ef          	jal	ra,e8847296 <CFDataCreate>
    e884cbdc:	a815                	j	e884cc10 <CFPropertyListBuildFormatted+0x4bc>
		switch( c )
    e884cbde:	06f00593          	li	a1,111
    e884cbe2:	f8b68ce3          	beq	a3,a1,e884cb7a <CFPropertyListBuildFormatted+0x426>
    e884cbe6:	07300793          	li	a5,115
    e884cbea:	02f68663          	beq	a3,a5,e884cc16 <CFPropertyListBuildFormatted+0x4c2>
    e884cbee:	06900793          	li	a5,105
    e884cbf2:	f4f69ce3          	bne	a3,a5,e884cb4a <CFPropertyListBuildFormatted+0x3f6>
				require_action( precision == -1, exit, err = kFormatErr );
    e884cbf6:	57fd                	li	a5,-1
    e884cbf8:	e4f616e3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
				if( longFlag == 2 )	s64 = va_arg( inArgs, int64_t );
    e884cbfc:	4789                	li	a5,2
    e884cbfe:	00850413          	addi	s0,a0,8
    e884cc02:	08f71663          	bne	a4,a5,e884cc8e <CFPropertyListBuildFormatted+0x53a>
    e884cc06:	6108                	ld	a0,0(a0)
				if( suppress ) { ForgetCF( &key ); break; }
    e884cc08:	00081d63          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
				obj = CFNumberCreateInt64( s64 );
    e884cc0c:	aefff0ef          	jal	ra,e884c6fa <CFNumberCreateInt64>
				obj = CFDateCreateWithComponents( inAllocator, year, month, day, hour, minute, second );
    e884cc10:	8c2a                	mv	s8,a0
				require_action( obj, exit, err = kNoMemoryErr );
    e884cc12:	ed55                	bnez	a0,e884ccce <CFPropertyListBuildFormatted+0x57a>
    e884cc14:	bd59                	j	e884caaa <CFPropertyListBuildFormatted+0x356>
				p = va_arg( inArgs, const unsigned char * );
    e884cc16:	842a                	mv	s0,a0
    e884cc18:	7884458b          	ldia	a1,(s0),8,0
				if( !p || suppress ) { ForgetCF( &key ); break; }
    e884cc1c:	c199                	beqz	a1,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
    e884cc1e:	00080963          	beqz	a6,e884cc30 <CFPropertyListBuildFormatted+0x4dc>
				if( !p || suppress ) { ForgetCF( &key ); break; }
    e884cc22:	6562                	ld	a0,24(sp)
    e884cc24:	c80506e3          	beqz	a0,e884c8b0 <CFPropertyListBuildFormatted+0x15c>
    e884cc28:	d22fa0ef          	jal	ra,e884714a <CFRelease>
    e884cc2c:	ec02                	sd	zero,24(sp)
    e884cc2e:	b149                	j	e884c8b0 <CFPropertyListBuildFormatted+0x15c>
				if( precision >= 0 )
    e884cc30:	e432                	sd	a2,8(sp)
    e884cc32:	57fd                	li	a5,-1
    e884cc34:	02f60863          	beq	a2,a5,e884cc64 <CFPropertyListBuildFormatted+0x510>
					precision = (int) strnlen( (const char *) p, (size_t) precision );
    e884cc38:	852e                	mv	a0,a1
    e884cc3a:	e02e                	sd	a1,0(sp)
    e884cc3c:	6dc2f0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e884cc40:	7c05350b          	extu	a0,a0,31,0
    e884cc44:	f8c1458b          	ldd	a1,a2,(sp),0,4
    e884cc48:	00a66863          	bltu	a2,a0,e884cc58 <CFPropertyListBuildFormatted+0x504>
    e884cc4c:	852e                	mv	a0,a1
    e884cc4e:	6ca2f0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e884cc52:	0005061b          	sext.w	a2,a0
    e884cc56:	6582                	ld	a1,0(sp)
					obj = CFStringCreateWithBytes( inAllocator, p, precision, kCFStringEncodingUTF8, false );
    e884cc58:	4701                	li	a4,0
    e884cc5a:	86da                	mv	a3,s6
				obj = CFStringCreateWithBytes( inAllocator, buf, n, kCFStringEncodingUTF8, false );
    e884cc5c:	8556                	mv	a0,s5
    e884cc5e:	83bfa0ef          	jal	ra,e8847498 <CFStringCreateWithBytes>
    e884cc62:	b77d                	j	e884cc10 <CFPropertyListBuildFormatted+0x4bc>
					obj = CFStringCreateWithCString( inAllocator, (const char *) p, kCFStringEncodingUTF8 );
    e884cc64:	865a                	mv	a2,s6
    e884cc66:	8556                	mv	a0,s5
				obj = CFStringCreateWithCString( NULL, UUIDtoCString( p, 0, buf ), kCFStringEncodingUTF8 );
    e884cc68:	8bdfa0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884cc6c:	b755                	j	e884cc10 <CFPropertyListBuildFormatted+0x4bc>
				require_action( precision == -1, exit, err = kFormatErr );
    e884cc6e:	57fd                	li	a5,-1
    e884cc70:	dcf61ae3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
				u32 = va_arg( inArgs, uint32_t );
    e884cc74:	00850413          	addi	s0,a0,8
				if( suppress ) { ForgetCF( &key ); break; }
    e884cc78:	fa0815e3          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
    e884cc7c:	411c                	lw	a5,0(a0)
				obj = CFStringCreateWithBytes( inAllocator, buf, 4, kCFStringEncodingMacRoman, false );
    e884cc7e:	4701                	li	a4,0
    e884cc80:	4681                	li	a3,0
    e884cc82:	9007978b          	revw	a5,a5
				buf[ 0 ] = (unsigned char)( ( u32 >> 24 ) & 0xFF );
    e884cc86:	d83e                	sw	a5,48(sp)
				obj = CFStringCreateWithBytes( inAllocator, buf, 4, kCFStringEncodingMacRoman, false );
    e884cc88:	4611                	li	a2,4
				obj = CFStringCreateWithBytes( inAllocator, buf, n, kCFStringEncodingUTF8, false );
    e884cc8a:	180c                	addi	a1,sp,48
    e884cc8c:	bfc1                	j	e884cc5c <CFPropertyListBuildFormatted+0x508>
				else				s64 = va_arg( inArgs, int );
    e884cc8e:	4108                	lw	a0,0(a0)
    e884cc90:	bfa5                	j	e884cc08 <CFPropertyListBuildFormatted+0x4b4>
				require_action( precision == -1, exit, err = kFormatErr );
    e884cc92:	57fd                	li	a5,-1
    e884cc94:	daf618e3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
				d = va_arg( inArgs, double );
    e884cc98:	211c                	fld	fa5,0(a0)
    e884cc9a:	00850413          	addi	s0,a0,8
    e884cc9e:	b43e                	fsd	fa5,40(sp)
				if( suppress ) { ForgetCF( &key ); break; }
    e884cca0:	f80811e3          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
				obj = CFNumberCreate( inAllocator, kCFNumberDoubleType, &d );
    e884cca4:	1030                	addi	a2,sp,40
    e884cca6:	45b5                	li	a1,13
    e884cca8:	8556                	mv	a0,s5
    e884ccaa:	fc4fa0ef          	jal	ra,e884746e <CFNumberCreate>
    e884ccae:	b78d                	j	e884cc10 <CFPropertyListBuildFormatted+0x4bc>
					obj = va_arg( inArgs, CFTypeRef );
    e884ccb0:	00850413          	addi	s0,a0,8
					if( !obj || suppress ) { ForgetCF( &key ); break; }
    e884ccb4:	d5bd                	beqz	a1,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
    e884ccb6:	f60816e3          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
					obj = CFPropertyListCreateData( NULL, obj, kCFPropertyListBinaryFormat_v1_0, 0, NULL );
    e884ccba:	4701                	li	a4,0
    e884ccbc:	4681                	li	a3,0
    e884ccbe:	0c800613          	li	a2,200
    e884ccc2:	4501                	li	a0,0
    e884ccc4:	9f7fa0ef          	jal	ra,e88476ba <CFPropertyListCreateData>
    e884ccc8:	8c2a                	mv	s8,a0
					require_action( obj, exit, err = kUnsupportedDataErr );
    e884ccca:	16050e63          	beqz	a0,e884ce46 <CFPropertyListBuildFormatted+0x6f2>
				err = _CFPropertyListAssociateObject( array, dict, &key, obj, &topObject );
    e884ccce:	1018                	addi	a4,sp,32
    e884ccd0:	86e2                	mv	a3,s8
    e884ccd2:	0830                	addi	a2,sp,24
    e884ccd4:	85a6                	mv	a1,s1
    e884ccd6:	8552                	mv	a0,s4
    e884ccd8:	9dffe0ef          	jal	ra,e884b6b6 <_CFPropertyListAssociateObject>
    e884ccdc:	8d2a                	mv	s10,a0
				CFRelease( obj );
    e884ccde:	8562                	mv	a0,s8
    e884cce0:	c6afa0ef          	jal	ra,e884714a <CFRelease>
    e884cce4:	a035                	j	e884cd10 <CFPropertyListBuildFormatted+0x5bc>
				require_action( precision == -1, exit, err = kFormatErr );
    e884cce6:	57fd                	li	a5,-1
    e884cce8:	d4f61ee3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
				n = va_arg( inArgs, int );
    e884ccec:	00850413          	addi	s0,a0,8
				if( suppress ) { ForgetCF( &key ); break; }
    e884ccf0:	f20819e3          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
				err = _CFPropertyListAssociateObject( array, dict, &key, n ? kCFBooleanTrue : kCFBooleanFalse, &topObject );
    e884ccf4:	411c                	lw	a5,0(a0)
    e884ccf6:	cbb9                	beqz	a5,e884cd4c <CFPropertyListBuildFormatted+0x5f8>
    e884ccf8:	00088797          	auipc	a5,0x88
    e884ccfc:	fd878793          	addi	a5,a5,-40 # e88d4cd0 <kCFLBooleanTrue>
    e884cd00:	6394                	ld	a3,0(a5)
    e884cd02:	1018                	addi	a4,sp,32
    e884cd04:	0830                	addi	a2,sp,24
    e884cd06:	85a6                	mv	a1,s1
    e884cd08:	8552                	mv	a0,s4
    e884cd0a:	9adfe0ef          	jal	ra,e884b6b6 <_CFPropertyListAssociateObject>
    e884cd0e:	8d2a                	mv	s10,a0
				require_noerr( err, exit );
    e884cd10:	ba0d00e3          	beqz	s10,e884c8b0 <CFPropertyListBuildFormatted+0x15c>
	CFReleaseNullSafe( key );
    e884cd14:	6562                	ld	a0,24(sp)
    e884cd16:	c119                	beqz	a0,e884cd1c <CFPropertyListBuildFormatted+0x5c8>
    e884cd18:	c32fa0ef          	jal	ra,e884714a <CFRelease>
	if( !inParent && topObject ) CFRelease( topObject );
    e884cd1c:	000b9663          	bnez	s7,e884cd28 <CFPropertyListBuildFormatted+0x5d4>
    e884cd20:	7502                	ld	a0,32(sp)
    e884cd22:	c119                	beqz	a0,e884cd28 <CFPropertyListBuildFormatted+0x5d4>
    e884cd24:	c26fa0ef          	jal	ra,e884714a <CFRelease>
	while( inStack )
    e884cd28:	12099b63          	bnez	s3,e884ce5e <CFPropertyListBuildFormatted+0x70a>
}
    e884cd2c:	60ee                	ld	ra,216(sp)
    e884cd2e:	644e                	ld	s0,208(sp)
    e884cd30:	856a                	mv	a0,s10
    e884cd32:	64ae                	ld	s1,200(sp)
    e884cd34:	690e                	ld	s2,192(sp)
    e884cd36:	79ea                	ld	s3,184(sp)
    e884cd38:	7a4a                	ld	s4,176(sp)
    e884cd3a:	7aaa                	ld	s5,168(sp)
    e884cd3c:	7b0a                	ld	s6,160(sp)
    e884cd3e:	6bea                	ld	s7,152(sp)
    e884cd40:	6c4a                	ld	s8,144(sp)
    e884cd42:	6caa                	ld	s9,136(sp)
    e884cd44:	6d0a                	ld	s10,128(sp)
    e884cd46:	7de6                	ld	s11,120(sp)
    e884cd48:	612d                	addi	sp,sp,224
    e884cd4a:	8082                	ret
				err = _CFPropertyListAssociateObject( array, dict, &key, n ? kCFBooleanTrue : kCFBooleanFalse, &topObject );
    e884cd4c:	00088797          	auipc	a5,0x88
    e884cd50:	f7c78793          	addi	a5,a5,-132 # e88d4cc8 <kCFLBooleanFalse>
    e884cd54:	b775                	j	e884cd00 <CFPropertyListBuildFormatted+0x5ac>
				else if( altForm == 2 )
    e884cd56:	4709                	li	a4,2
    e884cd58:	fae795e3          	bne	a5,a4,e884cd02 <CFPropertyListBuildFormatted+0x5ae>
					require_action( !key, exit, err = kParamErr );
    e884cd5c:	67e2                	ld	a5,24(sp)
    e884cd5e:	0e079c63          	bnez	a5,e884ce56 <CFPropertyListBuildFormatted+0x702>
					require_action( dict, exit, err = kParamErr );
    e884cd62:	0e048a63          	beqz	s1,e884ce56 <CFPropertyListBuildFormatted+0x702>
					require_action( CFGetTypeID( obj ) == CFDictionaryGetTypeID(), exit, err = kTypeErr );
    e884cd66:	8536                	mv	a0,a3
    e884cd68:	e036                	sd	a3,0(sp)
    e884cd6a:	bc8fa0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884cd6e:	00050c1b          	sext.w	s8,a0
    e884cd72:	e30fa0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e884cd76:	2501                	sext.w	a0,a0
    e884cd78:	a4ac1ce3          	bne	s8,a0,e884c7d0 <CFPropertyListBuildFormatted+0x7c>
	CFDictionaryApplyFunction( inSourceDict, _CFDictionaryMergeDictionaryApplier, inDestinationDict );
    e884cd7c:	6682                	ld	a3,0(sp)
    e884cd7e:	8626                	mv	a2,s1
    e884cd80:	fffff597          	auipc	a1,0xfffff
    e884cd84:	99258593          	addi	a1,a1,-1646 # e884b712 <_CFDictionaryMergeDictionaryApplier>
    e884cd88:	8536                	mv	a0,a3
    e884cd8a:	edcfa0ef          	jal	ra,e8847466 <CFDictionaryApplyFunction>
					require_noerr( err, exit );
    e884cd8e:	b60d                	j	e884c8b0 <CFPropertyListBuildFormatted+0x15c>
				p = va_arg( inArgs, const unsigned char * );
    e884cd90:	842a                	mv	s0,a0
    e884cd92:	7884470b          	ldia	a4,(s0),8,0
				if( !p || suppress ) { ForgetCF( &key ); break; }
    e884cd96:	e80706e3          	beqz	a4,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
    e884cd9a:	e80814e3          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
				if( altForm == 2 )
    e884cd9e:	4689                	li	a3,2
    e884cda0:	02d79263          	bne	a5,a3,e884cdc4 <CFPropertyListBuildFormatted+0x670>
					n = SNPrintF( (char *) buf, sizeof( buf ), "%##a", p );
    e884cda4:	86ba                	mv	a3,a4
    e884cda6:	00072617          	auipc	a2,0x72
    e884cdaa:	21260613          	addi	a2,a2,530 # e88befb8 <kCFRunLoopTimerClass+0x210>
    e884cdae:	04000593          	li	a1,64
    e884cdb2:	1808                	addi	a0,sp,48
    e884cdb4:	7d60f0ef          	jal	ra,e885c58a <SNPrintF>
					require_action( n > 0, exit, err = kUnknownErr );
    e884cdb8:	08a05b63          	blez	a0,e884ce4e <CFPropertyListBuildFormatted+0x6fa>
				obj = CFStringCreateWithBytes( inAllocator, buf, n, kCFStringEncodingUTF8, false );
    e884cdbc:	4701                	li	a4,0
    e884cdbe:	86da                	mv	a3,s6
    e884cdc0:	862a                	mv	a2,a0
    e884cdc2:	b5e1                	j	e884cc8a <CFPropertyListBuildFormatted+0x536>
					n = SNPrintF( (char *) buf, sizeof( buf ), "%.*a", precision, p );
    e884cdc4:	86b2                	mv	a3,a2
    e884cdc6:	04000593          	li	a1,64
    e884cdca:	00072617          	auipc	a2,0x72
    e884cdce:	1f660613          	addi	a2,a2,502 # e88befc0 <kCFRunLoopTimerClass+0x218>
    e884cdd2:	1808                	addi	a0,sp,48
    e884cdd4:	7b60f0ef          	jal	ra,e885c58a <SNPrintF>
    e884cdd8:	b7c5                	j	e884cdb8 <CFPropertyListBuildFormatted+0x664>
				require_action( precision == -1, exit, err = kFormatErr );
    e884cdda:	57fd                	li	a5,-1
    e884cddc:	c6f614e3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
				second	= va_arg( inArgs, int );
    e884cde0:	03050413          	addi	s0,a0,48
				if( suppress ) { ForgetCF( &key ); break; }
    e884cde4:	e2081fe3          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
				obj = CFDateCreateWithComponents( inAllocator, year, month, day, hour, minute, second );
    e884cde8:	02852803          	lw	a6,40(a0)
    e884cdec:	511c                	lw	a5,32(a0)
    e884cdee:	4d18                	lw	a4,24(a0)
    e884cdf0:	4914                	lw	a3,16(a0)
    e884cdf2:	4510                	lw	a2,8(a0)
    e884cdf4:	410c                	lw	a1,0(a0)
    e884cdf6:	8556                	mv	a0,s5
    e884cdf8:	d56fa0ef          	jal	ra,e884734e <CFDateCreateWithComponents>
    e884cdfc:	bd11                	j	e884cc10 <CFPropertyListBuildFormatted+0x4bc>
				p = va_arg( inArgs, const unsigned char * );
    e884cdfe:	842a                	mv	s0,a0
    e884ce00:	7884450b          	ldia	a0,(s0),8,0
				if( !p || suppress ) { ForgetCF( &key ); break; }
    e884ce04:	e0050fe3          	beqz	a0,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
    e884ce08:	e0081de3          	bnez	a6,e884cc22 <CFPropertyListBuildFormatted+0x4ce>
				obj = CFStringCreateWithCString( NULL, UUIDtoCString( p, 0, buf ), kCFStringEncodingUTF8 );
    e884ce0c:	1810                	addi	a2,sp,48
    e884ce0e:	4581                	li	a1,0
    e884ce10:	1ed120ef          	jal	ra,e885f7fc <UUIDtoCString>
    e884ce14:	85aa                	mv	a1,a0
    e884ce16:	865a                	mv	a2,s6
    e884ce18:	4501                	li	a0,0
    e884ce1a:	b5b9                	j	e884cc68 <CFPropertyListBuildFormatted+0x514>
				require_action( precision == -1, exit, err = kFormatErr );
    e884ce1c:	57fd                	li	a5,-1
    e884ce1e:	c2f613e3          	bne	a2,a5,e884ca44 <CFPropertyListBuildFormatted+0x2f0>
				objArg = va_arg( inArgs, CFTypeRef * );
    e884ce22:	842a                	mv	s0,a0
    e884ce24:	7884478b          	ldia	a5,(s0),8,0
				require_action( objArg, exit, err = kParamErr );
    e884ce28:	c79d                	beqz	a5,e884ce56 <CFPropertyListBuildFormatted+0x702>
				if( array )		obj = array;
    e884ce2a:	8752                	mv	a4,s4
    e884ce2c:	4144970b          	mveqz	a4,s1,s4
				*objArg = obj;
    e884ce30:	e398                	sd	a4,0(a5)
				break;
    e884ce32:	bcbd                	j	e884c8b0 <CFPropertyListBuildFormatted+0x15c>
		*( (CFTypeRef *) outObj ) = topObject;
    e884ce34:	7782                	ld	a5,32(sp)
		topObject = NULL;
    e884ce36:	f002                	sd	zero,32(sp)
		*( (CFTypeRef *) outObj ) = topObject;
    e884ce38:	00fcb023          	sd	a5,0(s9)
		topObject = NULL;
    e884ce3c:	b615                	j	e884c960 <CFPropertyListBuildFormatted+0x20c>
			require_action( !suppress, exit, err = kUnsupportedErr );
    e884ce3e:	77f9                	lui	a5,0xffffe
    e884ce40:	5b178d13          	addi	s10,a5,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e884ce44:	bdc1                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
					require_action( obj, exit, err = kUnsupportedDataErr );
    e884ce46:	77f9                	lui	a5,0xffffe
    e884ce48:	5b478d13          	addi	s10,a5,1460 # ffffffffffffe5b4 <__DRAM0_INF_BASE+0xffffffff0000e5b4>
    e884ce4c:	b5e1                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
					require_action( n > 0, exit, err = kUnknownErr );
    e884ce4e:	77f9                	lui	a5,0xffffe
    e884ce50:	5d478d13          	addi	s10,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884ce54:	b5c1                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
				require_action( objArg, exit, err = kParamErr );
    e884ce56:	77f9                	lui	a5,0xffffe
    e884ce58:	5cf78d13          	addi	s10,a5,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e884ce5c:	bd65                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>
		nextNode = inStack->next;
    e884ce5e:	0009b403          	ld	s0,0(s3)
		free( inStack );
    e884ce62:	854e                	mv	a0,s3
    e884ce64:	49c2f0ef          	jal	ra,e887c300 <eLIBs_free>
		inStack = nextNode;
    e884ce68:	89a2                	mv	s3,s0
    e884ce6a:	bd7d                	j	e884cd28 <CFPropertyListBuildFormatted+0x5d4>
				require_action( !key, exit, err = kMalformedErr );
    e884ce6c:	67e2                	ld	a5,24(sp)
    e884ce6e:	ae078be3          	beqz	a5,e884c964 <CFPropertyListBuildFormatted+0x210>
    e884ce72:	77f9                	lui	a5,0xffffe
    e884ce74:	5aa78d13          	addi	s10,a5,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e884ce78:	bd71                	j	e884cd14 <CFPropertyListBuildFormatted+0x5c0>

00000000e884ce7a <CFPropertyListCreateFormattedVAList>:
	return( CFPropertyListBuildFormatted( inAllocator, NULL, outObj, inFormat, inArgs ) );
    e884ce7a:	8736                	mv	a4,a3
    e884ce7c:	86b2                	mv	a3,a2
    e884ce7e:	862e                	mv	a2,a1
    e884ce80:	4581                	li	a1,0
    e884ce82:	8d3ff06f          	j	e884c754 <CFPropertyListBuildFormatted>

00000000e884ce86 <CFObjectSetInt64>:
{
    e884ce86:	7179                	addi	sp,sp,-48
    e884ce88:	ec22                	sd	s0,24(sp)
    e884ce8a:	842a                	mv	s0,a0
	obj = CFNumberCreateInt64( inValue );
    e884ce8c:	8536                	mv	a0,a3
{
    e884ce8e:	f406                	sd	ra,40(sp)
    e884ce90:	f026                	sd	s1,32(sp)
    e884ce92:	e42e                	sd	a1,8(sp)
    e884ce94:	e032                	sd	a2,0(sp)
	obj = CFNumberCreateInt64( inValue );
    e884ce96:	865ff0ef          	jal	ra,e884c6fa <CFNumberCreateInt64>
	require_action( obj, exit, err = kUnknownErr );
    e884ce9a:	c115                	beqz	a0,e884cebe <CFObjectSetInt64+0x38>
	err = CFObjectSetValue( inObject, inCallback, inKey, obj );
    e884ce9c:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e884cea0:	84aa                	mv	s1,a0
    e884cea2:	86aa                	mv	a3,a0
    e884cea4:	8522                	mv	a0,s0
    e884cea6:	9edfe0ef          	jal	ra,e884b892 <CFObjectSetValue>
    e884ceaa:	842a                	mv	s0,a0
	CFRelease( obj );
    e884ceac:	8526                	mv	a0,s1
    e884ceae:	a9cfa0ef          	jal	ra,e884714a <CFRelease>
}
    e884ceb2:	8522                	mv	a0,s0
    e884ceb4:	70a2                	ld	ra,40(sp)
    e884ceb6:	6462                	ld	s0,24(sp)
    e884ceb8:	7482                	ld	s1,32(sp)
    e884ceba:	6145                	addi	sp,sp,48
    e884cebc:	8082                	ret
	require_action( obj, exit, err = kUnknownErr );
    e884cebe:	7479                	lui	s0,0xffffe
    e884cec0:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884cec4:	b7fd                	j	e884ceb2 <CFObjectSetInt64+0x2c>

00000000e884cec6 <CFDictionarySetInt64>:
{
    e884cec6:	7179                	addi	sp,sp,-48
    e884cec8:	f026                	sd	s1,32(sp)
    e884ceca:	84aa                	mv	s1,a0
	tempNum = CFNumberCreateInt64( x );
    e884cecc:	8532                	mv	a0,a2
{
    e884cece:	f406                	sd	ra,40(sp)
    e884ced0:	ec22                	sd	s0,24(sp)
    e884ced2:	e42e                	sd	a1,8(sp)
	tempNum = CFNumberCreateInt64( x );
    e884ced4:	827ff0ef          	jal	ra,e884c6fa <CFNumberCreateInt64>
	require_action( tempNum, exit, err = kNoMemoryErr );
    e884ced8:	c105                	beqz	a0,e884cef8 <CFDictionarySetInt64+0x32>
	CFDictionarySetValue( inDict, inKey, tempNum );
    e884ceda:	65a2                	ld	a1,8(sp)
    e884cedc:	862a                	mv	a2,a0
    e884cede:	842a                	mv	s0,a0
    e884cee0:	8526                	mv	a0,s1
    e884cee2:	d70fa0ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( tempNum );
    e884cee6:	8522                	mv	a0,s0
    e884cee8:	a62fa0ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e884ceec:	4501                	li	a0,0
}
    e884ceee:	70a2                	ld	ra,40(sp)
    e884cef0:	6462                	ld	s0,24(sp)
    e884cef2:	7482                	ld	s1,32(sp)
    e884cef4:	6145                	addi	sp,sp,48
    e884cef6:	8082                	ret
	require_action( tempNum, exit, err = kNoMemoryErr );
    e884cef8:	7579                	lui	a0,0xffffe
    e884cefa:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884cefe:	bfc5                	j	e884ceee <CFDictionarySetInt64+0x28>

00000000e884cf00 <CFStringCreateV>:
//===========================================================================================================================
//	CFStringCreateV
//===========================================================================================================================

CFStringRef	CFStringCreateV( OSStatus *outErr, const char *inFormat, va_list inArgs )
{
    e884cf00:	7179                	addi	sp,sp,-48
    e884cf02:	f026                	sd	s1,32(sp)
    e884cf04:	84aa                	mv	s1,a0
	CFStringRef		result	= NULL;
	char *			cbuf	= NULL;
	OSStatus		err;
	int				n;
	
	n = VASPrintF( &cbuf, inFormat, inArgs );
    e884cf06:	0028                	addi	a0,sp,8
{
    e884cf08:	f406                	sd	ra,40(sp)
    e884cf0a:	ec22                	sd	s0,24(sp)
	char *			cbuf	= NULL;
    e884cf0c:	e402                	sd	zero,8(sp)
	n = VASPrintF( &cbuf, inFormat, inArgs );
    e884cf0e:	72a0f0ef          	jal	ra,e885c638 <VASPrintF>
	require_action( n >= 0, exit, err = kUnknownErr );
    e884cf12:	02054b63          	bltz	a0,e884cf48 <CFStringCreateV+0x48>
	
	result = CFStringCreateWithCString( NULL, cbuf, kCFStringEncodingUTF8 );
    e884cf16:	65a2                	ld	a1,8(sp)
    e884cf18:	08000637          	lui	a2,0x8000
    e884cf1c:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e884cf20:	4501                	li	a0,0
    e884cf22:	e02fa0ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e884cf26:	842a                	mv	s0,a0
	free( cbuf );
    e884cf28:	6522                	ld	a0,8(sp)
    e884cf2a:	3d62f0ef          	jal	ra,e887c300 <eLIBs_free>
	require_action( result, exit, err = kNoMemoryErr );
	err = kNoErr;
    e884cf2e:	4781                	li	a5,0
	require_action( result, exit, err = kNoMemoryErr );
    e884cf30:	e401                	bnez	s0,e884cf38 <CFStringCreateV+0x38>
    e884cf32:	77f9                	lui	a5,0xffffe
    e884cf34:	5b878793          	addi	a5,a5,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	
exit:
	if( outErr ) *outErr = err;
    e884cf38:	c091                	beqz	s1,e884cf3c <CFStringCreateV+0x3c>
    e884cf3a:	c09c                	sw	a5,0(s1)
	return( result );
}
    e884cf3c:	8522                	mv	a0,s0
    e884cf3e:	70a2                	ld	ra,40(sp)
    e884cf40:	6462                	ld	s0,24(sp)
    e884cf42:	7482                	ld	s1,32(sp)
    e884cf44:	6145                	addi	sp,sp,48
    e884cf46:	8082                	ret
	require_action( n >= 0, exit, err = kUnknownErr );
    e884cf48:	77f9                	lui	a5,0xffffe
    e884cf4a:	5d478793          	addi	a5,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	CFStringRef		result	= NULL;
    e884cf4e:	4401                	li	s0,0
    e884cf50:	b7e5                	j	e884cf38 <CFStringCreateV+0x38>

00000000e884cf52 <CFStringCreateF>:
{
    e884cf52:	715d                	addi	sp,sp,-80
    e884cf54:	fcd1560b          	sdd	a2,a3,(sp),2,4
	va_start( args, inFormat );
    e884cf58:	1010                	addi	a2,sp,32
{
    e884cf5a:	ec06                	sd	ra,24(sp)
    e884cf5c:	fef1570b          	sdd	a4,a5,(sp),3,4
    e884cf60:	e0c2                	sd	a6,64(sp)
    e884cf62:	e4c6                	sd	a7,72(sp)
	va_start( args, inFormat );
    e884cf64:	e432                	sd	a2,8(sp)
	result = CFStringCreateV( outErr, inFormat, args );
    e884cf66:	f9bff0ef          	jal	ra,e884cf00 <CFStringCreateV>
}
    e884cf6a:	60e2                	ld	ra,24(sp)
    e884cf6c:	6161                	addi	sp,sp,80
    e884cf6e:	8082                	ret

00000000e884cf70 <CFStringCopyUTF8CString>:
//===========================================================================================================================
//	CFStringCopyUTF8CString
//===========================================================================================================================

OSStatus	CFStringCopyUTF8CString( CFStringRef inString, char **outUTF8 )
{
    e884cf70:	7139                	addi	sp,sp,-64
    e884cf72:	fa91540b          	sdd	s0,s1,(sp),1,4
	CFIndex				size;
	uint8_t *			utf8;
	
	utf8 = NULL;
	
	src = CFStringGetCStringPtr( inString, kCFStringEncodingUTF8 );
    e884cf76:	080004b7          	lui	s1,0x8000
{
    e884cf7a:	f852                	sd	s4,48(sp)
    e884cf7c:	8a2e                	mv	s4,a1
	src = CFStringGetCStringPtr( inString, kCFStringEncodingUTF8 );
    e884cf7e:	10048593          	addi	a1,s1,256 # 8000100 <memcmp-0xe07fff00>
{
    e884cf82:	fd31590b          	sdd	s2,s3,(sp),2,4
    e884cf86:	fc06                	sd	ra,56(sp)
    e884cf88:	89aa                	mv	s3,a0
	src = CFStringGetCStringPtr( inString, kCFStringEncodingUTF8 );
    e884cf8a:	e32fa0ef          	jal	ra,e88475bc <CFStringGetCStringPtr>
	if( src )
    e884cf8e:	c105                	beqz	a0,e884cfae <CFStringCopyUTF8CString+0x3e>
	{
		utf8 = (uint8_t *) strdup( src );
    e884cf90:	079120ef          	jal	ra,e885f808 <strdup>
    e884cf94:	842a                	mv	s0,a0
		require_action( utf8, exit, err = kNoMemoryErr );
    e884cf96:	ed21                	bnez	a0,e884cfee <CFStringCopyUTF8CString+0x7e>
{
    e884cf98:	7579                	lui	a0,0xffffe
    e884cf9a:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	err = kNoErr;
	
exit:
	if( utf8 ) free( utf8 );
	return( err );
}
    e884cf9e:	70e2                	ld	ra,56(sp)
    e884cfa0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884cfa4:	7a42                	ld	s4,48(sp)
    e884cfa6:	fd31490b          	ldd	s2,s3,(sp),2,4
    e884cfaa:	6121                	addi	sp,sp,64
    e884cfac:	8082                	ret
		range = CFRangeMake( 0, CFStringGetLength( inString ) );
    e884cfae:	854e                	mv	a0,s3
    e884cfb0:	df2fa0ef          	jal	ra,e88475a2 <CFStringGetLength>
    e884cfb4:	892a                	mv	s2,a0
		size = CFStringGetMaximumSizeForEncoding( range.length, kCFStringEncodingUTF8 );
    e884cfb6:	10048593          	addi	a1,s1,256
    e884cfba:	dfcfa0ef          	jal	ra,e88475b6 <CFStringGetMaximumSizeForEncoding>
    e884cfbe:	c62a                	sw	a0,12(sp)
		utf8 = (uint8_t *) malloc( (size_t)( size + 1 ) );
    e884cfc0:	2505                	addiw	a0,a0,1
    e884cfc2:	08d2e0ef          	jal	ra,e887b84e <my_malloc>
    e884cfc6:	842a                	mv	s0,a0
		require_action( utf8, exit, err = kNoMemoryErr );
    e884cfc8:	d961                	beqz	a0,e884cf98 <CFStringCopyUTF8CString+0x28>
		range.location = CFStringGetBytes( inString, range, kCFStringEncodingUTF8, 0, false, utf8, size, &size );
    e884cfca:	4832                	lw	a6,12(sp)
    e884cfcc:	87aa                	mv	a5,a0
    e884cfce:	00c10893          	addi	a7,sp,12
    e884cfd2:	4701                	li	a4,0
    e884cfd4:	4681                	li	a3,0
    e884cfd6:	10048613          	addi	a2,s1,256
    e884cfda:	02091593          	slli	a1,s2,0x20
    e884cfde:	854e                	mv	a0,s3
    e884cfe0:	e40fa0ef          	jal	ra,e8847620 <CFStringGetBytes>
		require_action( range.location == range.length, exit, err = kUnknownErr );
    e884cfe4:	00a91963          	bne	s2,a0,e884cff6 <CFStringCopyUTF8CString+0x86>
		utf8[ size ] = '\0';
    e884cfe8:	47b2                	lw	a5,12(sp)
    e884cfea:	00f4500b          	srb	zero,s0,a5,0
	*outUTF8 = (char *) utf8; utf8 = NULL;
    e884cfee:	008a3023          	sd	s0,0(s4)
	err = kNoErr;
    e884cff2:	4501                	li	a0,0
    e884cff4:	b76d                	j	e884cf9e <CFStringCopyUTF8CString+0x2e>
	if( utf8 ) free( utf8 );
    e884cff6:	8522                	mv	a0,s0
    e884cff8:	3082f0ef          	jal	ra,e887c300 <eLIBs_free>
		require_action( range.location == range.length, exit, err = kUnknownErr );
    e884cffc:	7579                	lui	a0,0xffffe
    e884cffe:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	return( err );
    e884d002:	bf71                	j	e884cf9e <CFStringCopyUTF8CString+0x2e>

00000000e884d004 <CFCopyCString>:
{
    e884d004:	7119                	addi	sp,sp,-128
    e884d006:	f4a6                	sd	s1,104(sp)
    e884d008:	fc86                	sd	ra,120(sp)
    e884d00a:	f8a2                	sd	s0,112(sp)
    e884d00c:	f0ca                	sd	s2,96(sp)
	char *			result = NULL;
    e884d00e:	ec02                	sd	zero,24(sp)
{
    e884d010:	84ae                	mv	s1,a1
	require_action_quiet( inObj, exit, err = kParamErr );
    e884d012:	c149                	beqz	a0,e884d094 <CFCopyCString+0x90>
    e884d014:	842a                	mv	s0,a0
	typeID = CFGetTypeID( inObj );
    e884d016:	91cfa0ef          	jal	ra,e8847132 <CFGetTypeID>
    e884d01a:	0005091b          	sext.w	s2,a0
	if( typeID == CFStringGetTypeID() )
    e884d01e:	c76fa0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e884d022:	2501                	sext.w	a0,a0
    e884d024:	03251063          	bne	a0,s2,e884d044 <CFCopyCString+0x40>
		err = CFStringCopyUTF8CString( (CFStringRef) inObj, &result );
    e884d028:	082c                	addi	a1,sp,24
    e884d02a:	8522                	mv	a0,s0
    e884d02c:	f45ff0ef          	jal	ra,e884cf70 <CFStringCopyUTF8CString>
    e884d030:	87aa                	mv	a5,a0
	if( outErr ) *outErr = err;
    e884d032:	c091                	beqz	s1,e884d036 <CFCopyCString+0x32>
    e884d034:	c09c                	sw	a5,0(s1)
}
    e884d036:	70e6                	ld	ra,120(sp)
    e884d038:	7446                	ld	s0,112(sp)
    e884d03a:	6562                	ld	a0,24(sp)
    e884d03c:	74a6                	ld	s1,104(sp)
    e884d03e:	7906                	ld	s2,96(sp)
    e884d040:	6109                	addi	sp,sp,128
    e884d042:	8082                	ret
	else if( typeID == CFDataGetTypeID() )
    e884d044:	a4efa0ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e884d048:	2501                	sext.w	a0,a0
    e884d04a:	03251563          	bne	a0,s2,e884d074 <CFCopyCString+0x70>
		len = (size_t)( ( CFDataGetLength( (CFDataRef) inObj ) * 2 ) + 1 );
    e884d04e:	8522                	mv	a0,s0
    e884d050:	a86fa0ef          	jal	ra,e88472d6 <CFDataGetLength>
    e884d054:	0015161b          	slliw	a2,a0,0x1
    e884d058:	2605                	addiw	a2,a2,1
		result = (char *) malloc( len );
    e884d05a:	8532                	mv	a0,a2
    e884d05c:	e432                	sd	a2,8(sp)
    e884d05e:	7f02e0ef          	jal	ra,e887b84e <my_malloc>
    e884d062:	ec2a                	sd	a0,24(sp)
    e884d064:	85aa                	mv	a1,a0
		require_action( result, exit, err = kNoMemoryErr );
    e884d066:	c11d                	beqz	a0,e884d08c <CFCopyCString+0x88>
		CFGetCString( inObj, result, len );
    e884d068:	6622                	ld	a2,8(sp)
    e884d06a:	8522                	mv	a0,s0
    e884d06c:	8ebfe0ef          	jal	ra,e884b956 <CFGetCString>
	err = kNoErr;
    e884d070:	4781                	li	a5,0
    e884d072:	b7c1                	j	e884d032 <CFCopyCString+0x2e>
		CFGetCString( inObj, tempCStr, sizeof( tempCStr ) );
    e884d074:	04000613          	li	a2,64
    e884d078:	100c                	addi	a1,sp,32
    e884d07a:	8522                	mv	a0,s0
    e884d07c:	8dbfe0ef          	jal	ra,e884b956 <CFGetCString>
		result = strdup( tempCStr );
    e884d080:	1008                	addi	a0,sp,32
    e884d082:	786120ef          	jal	ra,e885f808 <strdup>
    e884d086:	ec2a                	sd	a0,24(sp)
	err = kNoErr;
    e884d088:	4781                	li	a5,0
		require_action( result, exit, err = kNoMemoryErr );
    e884d08a:	f545                	bnez	a0,e884d032 <CFCopyCString+0x2e>
    e884d08c:	77f9                	lui	a5,0xffffe
    e884d08e:	5b878793          	addi	a5,a5,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884d092:	b745                	j	e884d032 <CFCopyCString+0x2e>
	require_action_quiet( inObj, exit, err = kParamErr );
    e884d094:	77f9                	lui	a5,0xffffe
    e884d096:	5cf78793          	addi	a5,a5,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e884d09a:	bf61                	j	e884d032 <CFCopyCString+0x2e>

00000000e884d09c <CFDictionaryCopyCString>:
{
    e884d09c:	1101                	addi	sp,sp,-32
    e884d09e:	e822                	sd	s0,16(sp)
    e884d0a0:	ec06                	sd	ra,24(sp)
    e884d0a2:	8432                	mv	s0,a2
	tempObj = inDict ? CFDictionaryGetValue( inDict, inKey ) : NULL;
    e884d0a4:	cd11                	beqz	a0,e884d0c0 <CFDictionaryCopyCString+0x24>
    e884d0a6:	b98fa0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	if( tempObj )
    e884d0aa:	c919                	beqz	a0,e884d0c0 <CFDictionaryCopyCString+0x24>
		ptr = CFCopyCString( tempObj, &err );
    e884d0ac:	006c                	addi	a1,sp,12
    e884d0ae:	f57ff0ef          	jal	ra,e884d004 <CFCopyCString>
	if( outErr ) *outErr = err;
    e884d0b2:	c019                	beqz	s0,e884d0b8 <CFDictionaryCopyCString+0x1c>
    e884d0b4:	47b2                	lw	a5,12(sp)
    e884d0b6:	c01c                	sw	a5,0(s0)
}
    e884d0b8:	60e2                	ld	ra,24(sp)
    e884d0ba:	6442                	ld	s0,16(sp)
    e884d0bc:	6105                	addi	sp,sp,32
    e884d0be:	8082                	ret
		err = kNotFoundErr;
    e884d0c0:	77f9                	lui	a5,0xffffe
    e884d0c2:	5b97879b          	addiw	a5,a5,1465
    e884d0c6:	c63e                	sw	a5,12(sp)
		ptr = NULL;
    e884d0c8:	4501                	li	a0,0
    e884d0ca:	b7e5                	j	e884d0b2 <CFDictionaryCopyCString+0x16>

00000000e884d0cc <CFStringGetOrCopyCStringUTF8>:
//===========================================================================================================================
//	CFStringGetOrCopyCStringUTF8
//===========================================================================================================================

OSStatus	CFStringGetOrCopyCStringUTF8( CFStringRef inString, const char **outUTF8, char **outStorage, size_t *outLen )
{
    e884d0cc:	715d                	addi	sp,sp,-80
    e884d0ce:	f84a                	sd	s2,48(sp)
	const char *		ptr;
	uint8_t *			storage = NULL;
	CFRange				range;
	CFIndex				size;
	
	ptr = CFStringGetCStringPtr( inString, kCFStringEncodingUTF8 );
    e884d0d0:	08000937          	lui	s2,0x8000
{
    e884d0d4:	e85a                	sd	s6,16(sp)
    e884d0d6:	8b2e                	mv	s6,a1
	ptr = CFStringGetCStringPtr( inString, kCFStringEncodingUTF8 );
    e884d0d8:	10090593          	addi	a1,s2,256 # 8000100 <memcmp-0xe07fff00>
{
    e884d0dc:	fc26                	sd	s1,56(sp)
    e884d0de:	f052                	sd	s4,32(sp)
    e884d0e0:	ec56                	sd	s5,24(sp)
    e884d0e2:	e486                	sd	ra,72(sp)
    e884d0e4:	e0a2                	sd	s0,64(sp)
    e884d0e6:	f44e                	sd	s3,40(sp)
    e884d0e8:	8a2a                	mv	s4,a0
    e884d0ea:	8ab2                	mv	s5,a2
    e884d0ec:	84b6                	mv	s1,a3
	ptr = CFStringGetCStringPtr( inString, kCFStringEncodingUTF8 );
    e884d0ee:	ccefa0ef          	jal	ra,e88475bc <CFStringGetCStringPtr>
	if( !ptr )
    e884d0f2:	e531                	bnez	a0,e884d13e <CFStringGetOrCopyCStringUTF8+0x72>
	{
		range = CFRangeMake( 0, CFStringGetLength( inString ) );
    e884d0f4:	8552                	mv	a0,s4
    e884d0f6:	cacfa0ef          	jal	ra,e88475a2 <CFStringGetLength>
    e884d0fa:	89aa                	mv	s3,a0
		size = CFStringGetMaximumSizeForEncoding( range.length, kCFStringEncodingUTF8 );
    e884d0fc:	10090593          	addi	a1,s2,256
    e884d100:	cb6fa0ef          	jal	ra,e88475b6 <CFStringGetMaximumSizeForEncoding>
    e884d104:	c62a                	sw	a0,12(sp)
		
		storage = (uint8_t *) malloc( (size_t)( size + 1 ) );
    e884d106:	2505                	addiw	a0,a0,1
    e884d108:	7462e0ef          	jal	ra,e887b84e <my_malloc>
    e884d10c:	842a                	mv	s0,a0
		require_action( storage, exit, err = kNoMemoryErr );
    e884d10e:	cd39                	beqz	a0,e884d16c <CFStringGetOrCopyCStringUTF8+0xa0>
		
		range.location = CFStringGetBytes( inString, range, kCFStringEncodingUTF8, 0, false, storage, size, &size );
    e884d110:	4832                	lw	a6,12(sp)
    e884d112:	87aa                	mv	a5,a0
    e884d114:	00c10893          	addi	a7,sp,12
    e884d118:	4701                	li	a4,0
    e884d11a:	4681                	li	a3,0
    e884d11c:	10090613          	addi	a2,s2,256
    e884d120:	02099593          	slli	a1,s3,0x20
    e884d124:	8552                	mv	a0,s4
    e884d126:	cfafa0ef          	jal	ra,e8847620 <CFStringGetBytes>
		require_action( range.location == range.length, exit, err = kUnknownErr );
    e884d12a:	04a99563          	bne	s3,a0,e884d174 <CFStringGetOrCopyCStringUTF8+0xa8>
		
		storage[ size ] = '\0';
    e884d12e:	47b2                	lw	a5,12(sp)
    e884d130:	00f4500b          	srb	zero,s0,a5,0
		ptr = (const char *) storage;
		if( outLen ) *outLen = (size_t) size;
    e884d134:	c099                	beqz	s1,e884d13a <CFStringGetOrCopyCStringUTF8+0x6e>
    e884d136:	47b2                	lw	a5,12(sp)
    e884d138:	e09c                	sd	a5,0(s1)
    e884d13a:	84a2                	mv	s1,s0
    e884d13c:	a809                	j	e884d14e <CFStringGetOrCopyCStringUTF8+0x82>
    e884d13e:	842a                	mv	s0,a0
	}
	else if( outLen )
    e884d140:	c499                	beqz	s1,e884d14e <CFStringGetOrCopyCStringUTF8+0x82>
	{
		*outLen = strlen( ptr );
    e884d142:	1d62f0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e884d146:	7c05350b          	extu	a0,a0,31,0
    e884d14a:	e088                	sd	a0,0(s1)
	uint8_t *			storage = NULL;
    e884d14c:	4481                	li	s1,0
	}
	
	*outUTF8	= ptr;
    e884d14e:	008b3023          	sd	s0,0(s6)
	*outStorage = (char *) storage;
	storage		= NULL;
	err			= kNoErr;
    e884d152:	4501                	li	a0,0
	*outStorage = (char *) storage;
    e884d154:	009ab023          	sd	s1,0(s5)
	
exit:
	FreeNullSafe( storage );
	return( err );
}
    e884d158:	60a6                	ld	ra,72(sp)
    e884d15a:	6406                	ld	s0,64(sp)
    e884d15c:	74e2                	ld	s1,56(sp)
    e884d15e:	7942                	ld	s2,48(sp)
    e884d160:	79a2                	ld	s3,40(sp)
    e884d162:	7a02                	ld	s4,32(sp)
    e884d164:	6ae2                	ld	s5,24(sp)
    e884d166:	6b42                	ld	s6,16(sp)
    e884d168:	6161                	addi	sp,sp,80
    e884d16a:	8082                	ret
		require_action( storage, exit, err = kNoMemoryErr );
    e884d16c:	7579                	lui	a0,0xffffe
    e884d16e:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884d172:	b7dd                	j	e884d158 <CFStringGetOrCopyCStringUTF8+0x8c>
	FreeNullSafe( storage );
    e884d174:	8522                	mv	a0,s0
    e884d176:	18a2f0ef          	jal	ra,e887c300 <eLIBs_free>
		require_action( range.location == range.length, exit, err = kUnknownErr );
    e884d17a:	7579                	lui	a0,0xffffe
    e884d17c:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	return( err );
    e884d180:	bfe1                	j	e884d158 <CFStringGetOrCopyCStringUTF8+0x8c>

00000000e884d182 <CFGetData>:
{
    e884d182:	7159                	addi	sp,sp,-112
    e884d184:	eca6                	sd	s1,88(sp)
    e884d186:	e0d2                	sd	s4,64(sp)
    e884d188:	fc56                	sd	s5,56(sp)
    e884d18a:	f486                	sd	ra,104(sp)
    e884d18c:	f0a2                	sd	s0,96(sp)
    e884d18e:	e8ca                	sd	s2,80(sp)
    e884d190:	e4ce                	sd	s3,72(sp)
	size_t				len = 0, len2;
    e884d192:	e802                	sd	zero,16(sp)
{
    e884d194:	84ae                	mv	s1,a1
    e884d196:	8ab6                	mv	s5,a3
    e884d198:	8a3a                	mv	s4,a4
	require_action_quiet( inObj, exit, err = kParamErr );
    e884d19a:	c955                	beqz	a0,e884d24e <CFGetData+0xcc>
    e884d19c:	89b2                	mv	s3,a2
	typeID = CFGetTypeID( inObj );
    e884d19e:	842a                	mv	s0,a0
    e884d1a0:	f93f90ef          	jal	ra,e8847132 <CFGetTypeID>
    e884d1a4:	0005091b          	sext.w	s2,a0
	if( typeID == CFDataGetTypeID() )
    e884d1a8:	8eafa0ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e884d1ac:	2501                	sext.w	a0,a0
    e884d1ae:	05251863          	bne	a0,s2,e884d1fe <CFGetData+0x7c>
		src = CFDataGetBytePtr( (CFDataRef) inObj );
    e884d1b2:	8522                	mv	a0,s0
    e884d1b4:	938fa0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e884d1b8:	e42a                	sd	a0,8(sp)
		len = (size_t) CFDataGetLength( (CFDataRef) inObj );
    e884d1ba:	8522                	mv	a0,s0
    e884d1bc:	91afa0ef          	jal	ra,e88472d6 <CFDataGetLength>
    e884d1c0:	e82a                	sd	a0,16(sp)
		if( inBuf )
    e884d1c2:	65a2                	ld	a1,8(sp)
    e884d1c4:	c8c9                	beqz	s1,e884d256 <CFGetData+0xd4>
			if( len > inMaxLen ) len = inMaxLen;
    e884d1c6:	00a9f363          	bgeu	s3,a0,e884d1cc <CFGetData+0x4a>
    e884d1ca:	e84e                	sd	s3,16(sp)
			if( len > 0 ) memcpy( inBuf, src, len );
    e884d1cc:	6642                	ld	a2,16(sp)
	err = kNoErr;
    e884d1ce:	4401                	li	s0,0
			if( len > 0 ) memcpy( inBuf, src, len );
    e884d1d0:	c601                	beqz	a2,e884d1d8 <CFGetData+0x56>
    e884d1d2:	8526                	mv	a0,s1
    e884d1d4:	1cc2f0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	if( outLen ) *outLen = len;
    e884d1d8:	000a8563          	beqz	s5,e884d1e2 <CFGetData+0x60>
    e884d1dc:	67c2                	ld	a5,16(sp)
    e884d1de:	00fab023          	sd	a5,0(s5)
	if( outErr ) *outErr = err;
    e884d1e2:	000a0463          	beqz	s4,e884d1ea <CFGetData+0x68>
    e884d1e6:	008a2023          	sw	s0,0(s4)
}
    e884d1ea:	70a6                	ld	ra,104(sp)
    e884d1ec:	7406                	ld	s0,96(sp)
    e884d1ee:	8526                	mv	a0,s1
    e884d1f0:	6946                	ld	s2,80(sp)
    e884d1f2:	64e6                	ld	s1,88(sp)
    e884d1f4:	69a6                	ld	s3,72(sp)
    e884d1f6:	6a06                	ld	s4,64(sp)
    e884d1f8:	7ae2                	ld	s5,56(sp)
    e884d1fa:	6165                	addi	sp,sp,112
    e884d1fc:	8082                	ret
	else if( typeID == CFStringGetTypeID() )
    e884d1fe:	a96fa0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e884d202:	2501                	sext.w	a0,a0
    e884d204:	03251963          	bne	a0,s2,e884d236 <CFGetData+0xb4>
		err = CFStringGetOrCopyCStringUTF8( (CFStringRef) inObj, &utf8Ptr, &utf8Buf, &len2 );
    e884d208:	8522                	mv	a0,s0
    e884d20a:	0834                	addi	a3,sp,24
    e884d20c:	1030                	addi	a2,sp,40
    e884d20e:	100c                	addi	a1,sp,32
    e884d210:	ebdff0ef          	jal	ra,e884d0cc <CFStringGetOrCopyCStringUTF8>
    e884d214:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e884d216:	f169                	bnez	a0,e884d1d8 <CFGetData+0x56>
		HexToData( utf8Ptr, len2, 
    e884d218:	65e2                	ld	a1,24(sp)
    e884d21a:	7502                	ld	a0,32(sp)
    e884d21c:	4881                	li	a7,0
    e884d21e:	4801                	li	a6,0
    e884d220:	081c                	addi	a5,sp,16
    e884d222:	874e                	mv	a4,s3
    e884d224:	86a6                	mv	a3,s1
    e884d226:	4659                	li	a2,22
    e884d228:	7d1110ef          	jal	ra,e885f1f8 <HexToData>
		FreeNullSafe( utf8Buf );
    e884d22c:	7522                	ld	a0,40(sp)
    e884d22e:	d54d                	beqz	a0,e884d1d8 <CFGetData+0x56>
    e884d230:	0d02f0ef          	jal	ra,e887c300 <eLIBs_free>
    e884d234:	b755                	j	e884d1d8 <CFGetData+0x56>
	else if( typeID == CFNullGetTypeID() )
    e884d236:	80dfb0ef          	jal	ra,e8848a42 <CFLNullGetTypeID>
    e884d23a:	2501                	sext.w	a0,a0
    e884d23c:	03251063          	bne	a0,s2,e884d25c <CFGetData+0xda>
		len   = 0;
    e884d240:	e802                	sd	zero,16(sp)
	err = kNoErr;
    e884d242:	4401                	li	s0,0
		inBuf = (void *) "";
    e884d244:	00074497          	auipc	s1,0x74
    e884d248:	02c48493          	addi	s1,s1,44 # e88c1270 <kHTTPServerClass+0x90>
    e884d24c:	b771                	j	e884d1d8 <CFGetData+0x56>
	require_action_quiet( inObj, exit, err = kParamErr );
    e884d24e:	7479                	lui	s0,0xffffe
    e884d250:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e884d254:	b751                	j	e884d1d8 <CFGetData+0x56>
			inBuf = (void *) src;
    e884d256:	84ae                	mv	s1,a1
	err = kNoErr;
    e884d258:	4401                	li	s0,0
    e884d25a:	bfbd                	j	e884d1d8 <CFGetData+0x56>
		err = kUnsupportedErr;
    e884d25c:	7479                	lui	s0,0xffffe
    e884d25e:	5b140413          	addi	s0,s0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e884d262:	bf9d                	j	e884d1d8 <CFGetData+0x56>

00000000e884d264 <CFDictionaryGetData>:
{
    e884d264:	7179                	addi	sp,sp,-48
    e884d266:	f022                	sd	s0,32(sp)
    e884d268:	ec36                	sd	a3,24(sp)
    e884d26a:	f406                	sd	ra,40(sp)
    e884d26c:	8432                	mv	s0,a2
    e884d26e:	86ba                	mv	a3,a4
	obj = inDict ? CFDictionaryGetValue( inDict, inKey ) : NULL;
    e884d270:	c105                	beqz	a0,e884d290 <CFDictionaryGetData+0x2c>
    e884d272:	e83e                	sd	a5,16(sp)
    e884d274:	e43a                	sd	a4,8(sp)
    e884d276:	9c8fa0ef          	jal	ra,e884743e <CFDictionaryGetValue>
	if( obj )
    e884d27a:	66a2                	ld	a3,8(sp)
    e884d27c:	67c2                	ld	a5,16(sp)
    e884d27e:	c909                	beqz	a0,e884d290 <CFDictionaryGetData+0x2c>
		ptr = CFGetData( obj, inBuf, inMaxLen, outLen, outErr );
    e884d280:	85a2                	mv	a1,s0
}
    e884d282:	7402                	ld	s0,32(sp)
		ptr = CFGetData( obj, inBuf, inMaxLen, outLen, outErr );
    e884d284:	6662                	ld	a2,24(sp)
}
    e884d286:	70a2                	ld	ra,40(sp)
		ptr = CFGetData( obj, inBuf, inMaxLen, outLen, outErr );
    e884d288:	873e                	mv	a4,a5
}
    e884d28a:	6145                	addi	sp,sp,48
		ptr = CFGetData( obj, inBuf, inMaxLen, outLen, outErr );
    e884d28c:	ef7ff06f          	j	e884d182 <CFGetData>
		if( outLen ) *outLen = 0;
    e884d290:	c299                	beqz	a3,e884d296 <CFDictionaryGetData+0x32>
    e884d292:	0006b023          	sd	zero,0(a3)
		if( outErr ) *outErr = kNotFoundErr;
    e884d296:	c789                	beqz	a5,e884d2a0 <CFDictionaryGetData+0x3c>
    e884d298:	7779                	lui	a4,0xffffe
    e884d29a:	5b97071b          	addiw	a4,a4,1465
    e884d29e:	c398                	sw	a4,0(a5)
}
    e884d2a0:	8522                	mv	a0,s0
    e884d2a2:	70a2                	ld	ra,40(sp)
    e884d2a4:	7402                	ld	s0,32(sp)
    e884d2a6:	6145                	addi	sp,sp,48
    e884d2a8:	8082                	ret

00000000e884d2aa <_chacha20_xor>:
	uint32_t		j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15;
	uint8_t *		ctarget = inDst;
	uint8_t			tmp[ CHACHA_BLOCKBYTES ];
	size_t			i;
	
	j0 = inState->state[ 0 ];
    e884d2aa:	411c                	lw	a5,0(a0)
{
    e884d2ac:	712d                	addi	sp,sp,-288
    e884d2ae:	f9d6                	sd	s5,240(sp)
	j0 = inState->state[ 0 ];
    e884d2b0:	e83e                	sd	a5,16(sp)
	j1 = inState->state[ 1 ];
    e884d2b2:	415c                	lw	a5,4(a0)
{
    e884d2b4:	f1de                	sd	s7,224(sp)
    e884d2b6:	ee22                	sd	s0,280(sp)
	j1 = inState->state[ 1 ];
    e884d2b8:	ec3e                	sd	a5,24(sp)
	j2 = inState->state[ 2 ];
    e884d2ba:	451c                	lw	a5,8(a0)
{
    e884d2bc:	ea26                	sd	s1,272(sp)
    e884d2be:	e64a                	sd	s2,264(sp)
	j2 = inState->state[ 2 ];
    e884d2c0:	f03e                	sd	a5,32(sp)
	j3 = inState->state[ 3 ];
    e884d2c2:	455c                	lw	a5,12(a0)
{
    e884d2c4:	e24e                	sd	s3,256(sp)
    e884d2c6:	fdd2                	sd	s4,248(sp)
	j3 = inState->state[ 3 ];
    e884d2c8:	f43e                	sd	a5,40(sp)
	j4 = inState->state[ 4 ];
    e884d2ca:	491c                	lw	a5,16(a0)
{
    e884d2cc:	f5da                	sd	s6,232(sp)
    e884d2ce:	ede2                	sd	s8,216(sp)
	j4 = inState->state[ 4 ];
    e884d2d0:	f83e                	sd	a5,48(sp)
	j5 = inState->state[ 5 ];
    e884d2d2:	495c                	lw	a5,20(a0)
{
    e884d2d4:	e9e6                	sd	s9,208(sp)
    e884d2d6:	e5ea                	sd	s10,200(sp)
	j5 = inState->state[ 5 ];
    e884d2d8:	fc3e                	sd	a5,56(sp)
	j6 = inState->state[ 6 ];
    e884d2da:	4d1c                	lw	a5,24(a0)
{
    e884d2dc:	e1ee                	sd	s11,192(sp)
	j6 = inState->state[ 6 ];
    e884d2de:	e0be                	sd	a5,64(sp)
	j7 = inState->state[ 7 ];
    e884d2e0:	4d5c                	lw	a5,28(a0)
    e884d2e2:	e4be                	sd	a5,72(sp)
	j8 = inState->state[ 8 ];
    e884d2e4:	511c                	lw	a5,32(a0)
    e884d2e6:	e8be                	sd	a5,80(sp)
	j9 = inState->state[ 9 ];
    e884d2e8:	515c                	lw	a5,36(a0)
    e884d2ea:	ecbe                	sd	a5,88(sp)
	j10 = inState->state[ 10 ];
    e884d2ec:	551c                	lw	a5,40(a0)
	j11 = inState->state[ 11 ];
	j12 = inState->state[ 12 ];
    e884d2ee:	03052a83          	lw	s5,48(a0)
	j13 = inState->state[ 13 ];
    e884d2f2:	03452b83          	lw	s7,52(a0)
	j10 = inState->state[ 10 ];
    e884d2f6:	f0be                	sd	a5,96(sp)
	j11 = inState->state[ 11 ];
    e884d2f8:	555c                	lw	a5,44(a0)
	uint8_t *		ctarget = inDst;
    e884d2fa:	e42e                	sd	a1,8(sp)
	j11 = inState->state[ 11 ];
    e884d2fc:	f4be                	sd	a5,104(sp)
	j14 = inState->state[ 14 ];
    e884d2fe:	5d1c                	lw	a5,56(a0)
    e884d300:	f8be                	sd	a5,112(sp)
	j15 = inState->state[ 15 ];
    e884d302:	5d5c                	lw	a5,60(a0)
    e884d304:	fcbe                	sd	a5,120(sp)
	
	for( ;; )
	{
		if( inLen < CHACHA_BLOCKBYTES )
    e884d306:	03f00793          	li	a5,63
    e884d30a:	00d7ef63          	bltu	a5,a3,e884d328 <_chacha20_xor+0x7e>
		{
			for( i = 0; i < inLen; ++i ) tmp[ i ] = inSrc[ i ];
    e884d30e:	4781                	li	a5,0
    e884d310:	a039                	j	e884d31e <_chacha20_xor+0x74>
    e884d312:	80f6470b          	lrbu	a4,a2,a5,0
    e884d316:	0100                	addi	s0,sp,128
    e884d318:	00f4570b          	srb	a4,s0,a5,0
    e884d31c:	0785                	addi	a5,a5,1
    e884d31e:	fef69ae3          	bne	a3,a5,e884d312 <_chacha20_xor+0x68>
			inSrc	= tmp;
			ctarget	= inDst;
    e884d322:	e42e                	sd	a1,8(sp)
			inSrc	= tmp;
    e884d324:	010c                	addi	a1,sp,128
			inDst	= tmp;
    e884d326:	862e                	mv	a2,a1
		x10 = j10;
		x11 = j11;
		x12 = j12;
		x13 = j13;
		x14 = j14;
		x15 = j15;
    e884d328:	7c66                	ld	s8,120(sp)
		x14 = j14;
    e884d32a:	7346                	ld	t1,112(sp)
		x11 = j11;
    e884d32c:	7f26                	ld	t5,104(sp)
		x10 = j10;
    e884d32e:	7f86                	ld	t6,96(sp)
		 x9 = j9;
    e884d330:	62e6                	ld	t0,88(sp)
		 x8 = j8;
    e884d332:	63c6                	ld	t2,80(sp)
		 x7 = j7;
    e884d334:	67a6                	ld	a5,72(sp)
		 x6 = j6;
    e884d336:	6706                	ld	a4,64(sp)
		 x5 = j5;
    e884d338:	7862                	ld	a6,56(sp)
		 x4 = j4;
    e884d33a:	78c2                	ld	a7,48(sp)
		 x3 = j3;
    e884d33c:	7b22                	ld	s6,40(sp)
		 x2 = j2;
    e884d33e:	7c82                	ld	s9,32(sp)
		 x1 = j1;
    e884d340:	6de2                	ld	s11,24(sp)
		 x0 = j0;
    e884d342:	6d42                	ld	s10,16(sp)
		x13 = j13;
    e884d344:	8e5e                	mv	t3,s7
		x12 = j12;
    e884d346:	8ed6                	mv	t4,s5
		 x0 = j0;
    e884d348:	4429                	li	s0,10
		for( i = 20; i > 0; i -= 2 )
		{
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d34a:	010d89bb          	addw	s3,s11,a6
    e884d34e:	013e4e33          	xor	t3,t3,s3
    e884d352:	2e01                	sext.w	t3,t3
    e884d354:	150e1e0b          	srriw	t3,t3,16
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d358:	011d0a3b          	addw	s4,s10,a7
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d35c:	00ec893b          	addw	s2,s9,a4
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d360:	00fb04bb          	addw	s1,s6,a5
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d364:	005e02bb          	addw	t0,t3,t0
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d368:	014eceb3          	xor	t4,t4,s4
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d36c:	00584833          	xor	a6,a6,t0
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d370:	01234333          	xor	t1,t1,s2
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d374:	009c4c33          	xor	s8,s8,s1
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d378:	2e81                	sext.w	t4,t4
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d37a:	2801                	sext.w	a6,a6
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d37c:	2301                	sext.w	t1,t1
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d37e:	2c01                	sext.w	s8,s8
    e884d380:	150c1c0b          	srriw	s8,s8,16
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d384:	150e9e8b          	srriw	t4,t4,16
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d388:	1548180b          	srriw	a6,a6,20
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d38c:	1503130b          	srriw	t1,t1,16
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d390:	007e83bb          	addw	t2,t4,t2
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d394:	010989bb          	addw	s3,s3,a6
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d398:	01f30fbb          	addw	t6,t1,t6
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d39c:	01ec0f3b          	addw	t5,s8,t5
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d3a0:	0078c8b3          	xor	a7,a7,t2
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d3a4:	013e4e33          	xor	t3,t3,s3
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d3a8:	01f74733          	xor	a4,a4,t6
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d3ac:	01e7c7b3          	xor	a5,a5,t5
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d3b0:	158e1e0b          	srriw	t3,t3,24
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d3b4:	2881                	sext.w	a7,a7
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d3b6:	2701                	sext.w	a4,a4
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d3b8:	2781                	sext.w	a5,a5
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d3ba:	01c282bb          	addw	t0,t0,t3
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d3be:	1548988b          	srriw	a7,a7,20
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d3c2:	1547170b          	srriw	a4,a4,20
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d3c6:	1547978b          	srriw	a5,a5,20
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d3ca:	011a0a3b          	addw	s4,s4,a7
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d3ce:	00e9093b          	addw	s2,s2,a4
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d3d2:	9cbd                	addw	s1,s1,a5
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d3d4:	00584833          	xor	a6,a6,t0
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d3d8:	009c4b33          	xor	s6,s8,s1
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d3dc:	014eceb3          	xor	t4,t4,s4
			CHACHA20_QUARTERROUND( x1, x5,  x9, x13 )
    e884d3e0:	1598180b          	srriw	a6,a6,25
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d3e4:	01234333          	xor	t1,t1,s2
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d3e8:	010a0a3b          	addw	s4,s4,a6
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d3ec:	158e9e8b          	srriw	t4,t4,24
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d3f0:	1583130b          	srriw	t1,t1,24
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d3f4:	158b1b0b          	srriw	s6,s6,24
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d3f8:	01d383bb          	addw	t2,t2,t4
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d3fc:	006f8fbb          	addw	t6,t6,t1
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d400:	016f0f3b          	addw	t5,t5,s6
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d404:	014b4b33          	xor	s6,s6,s4
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d408:	0078c8b3          	xor	a7,a7,t2
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d40c:	01f74733          	xor	a4,a4,t6
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d410:	01e7c7b3          	xor	a5,a5,t5
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d414:	150b1b0b          	srriw	s6,s6,16
    e884d418:	016f8fbb          	addw	t6,t6,s6
			CHACHA20_QUARTERROUND( x0, x4,  x8, x12 )
    e884d41c:	1598988b          	srriw	a7,a7,25
			CHACHA20_QUARTERROUND( x2, x6, x10, x14 )
    e884d420:	1597170b          	srriw	a4,a4,25
			CHACHA20_QUARTERROUND( x3, x7, x11, x15 )
    e884d424:	1597978b          	srriw	a5,a5,25
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d428:	00e989bb          	addw	s3,s3,a4
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d42c:	00f9093b          	addw	s2,s2,a5
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d430:	009884bb          	addw	s1,a7,s1
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d434:	01f84833          	xor	a6,a6,t6
    e884d438:	1548180b          	srriw	a6,a6,20
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d43c:	013eceb3          	xor	t4,t4,s3
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d440:	012e4e33          	xor	t3,t3,s2
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d444:	00934333          	xor	t1,t1,s1
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d448:	010a0a3b          	addw	s4,s4,a6
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d44c:	150e9e8b          	srriw	t4,t4,16
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d450:	150e1e0b          	srriw	t3,t3,16
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d454:	1503130b          	srriw	t1,t1,16
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d458:	01df0f3b          	addw	t5,t5,t4
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d45c:	01c383bb          	addw	t2,t2,t3
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d460:	006282bb          	addw	t0,t0,t1
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d464:	014b4b33          	xor	s6,s6,s4
    e884d468:	158b1b0b          	srriw	s6,s6,24
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d46c:	01e74733          	xor	a4,a4,t5
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d470:	0077c7b3          	xor	a5,a5,t2
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d474:	0058c8b3          	xor	a7,a7,t0
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d478:	1547170b          	srriw	a4,a4,20
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d47c:	1547978b          	srriw	a5,a5,20
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d480:	1548988b          	srriw	a7,a7,20
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d484:	8c5a                	mv	s8,s6
    e884d486:	016f8b3b          	addw	s6,t6,s6
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d48a:	00e989bb          	addw	s3,s3,a4
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d48e:	00f9093b          	addw	s2,s2,a5
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d492:	011484bb          	addw	s1,s1,a7
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d496:	01684833          	xor	a6,a6,s6
    e884d49a:	8fda                	mv	t6,s6
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d49c:	8dce                	mv	s11,s3
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d49e:	8cca                	mv	s9,s2
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d4a0:	013ec9b3          	xor	s3,t4,s3
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d4a4:	012e4933          	xor	s2,t3,s2
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d4a8:	8b26                	mv	s6,s1
    e884d4aa:	009344b3          	xor	s1,t1,s1
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d4ae:	1589998b          	srriw	s3,s3,24
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d4b2:	1589190b          	srriw	s2,s2,24
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d4b6:	1584948b          	srriw	s1,s1,24
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d4ba:	8ece                	mv	t4,s3
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d4bc:	8e4a                	mv	t3,s2
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d4be:	013f09bb          	addw	s3,t5,s3
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d4c2:	0123893b          	addw	s2,t2,s2
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d4c6:	8326                	mv	t1,s1
    e884d4c8:	009284bb          	addw	s1,t0,s1
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d4cc:	01374733          	xor	a4,a4,s3
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d4d0:	0127c7b3          	xor	a5,a5,s2
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d4d4:	0098c8b3          	xor	a7,a7,s1
    e884d4d8:	147d                	addi	s0,s0,-1
			CHACHA20_QUARTERROUND( x0, x5, x10, x15 )
    e884d4da:	8d52                	mv	s10,s4
    e884d4dc:	1598180b          	srriw	a6,a6,25
			CHACHA20_QUARTERROUND( x1, x6, x11, x12 )
    e884d4e0:	8f4e                	mv	t5,s3
    e884d4e2:	1597170b          	srriw	a4,a4,25
			CHACHA20_QUARTERROUND( x2, x7,  x8, x13 )
    e884d4e6:	83ca                	mv	t2,s2
    e884d4e8:	1597978b          	srriw	a5,a5,25
			CHACHA20_QUARTERROUND( x3, x4,  x9, x14 )
    e884d4ec:	82a6                	mv	t0,s1
    e884d4ee:	1598988b          	srriw	a7,a7,25
		for( i = 20; i > 0; i -= 2 )
    e884d4f2:	e4041ce3          	bnez	s0,e884d34a <_chacha20_xor+0xa0>
		}
		 x0 += j0;
    e884d4f6:	64c2                	ld	s1,16(sp)
		 x7 += j7;
		 x8 += j8;
		 x9 += j9;
		x10 += j10;
		x11 += j11;
		x12 += j12;
    e884d4f8:	01da8ebb          	addw	t4,s5,t4
		x13 += j13;
    e884d4fc:	01cb8e3b          	addw	t3,s7,t3
		 x0 += j0;
    e884d500:	01448d3b          	addw	s10,s1,s4
		 x1 += j1;
    e884d504:	64e2                	ld	s1,24(sp)
		x14 += j14;
		x15 += j15;
		
		 x0 ^= ReadLittle32( inSrc +  0 );
    e884d506:	00062a03          	lw	s4,0(a2)
		x12 ^= ReadLittle32( inSrc + 48 );
		x13 ^= ReadLittle32( inSrc + 52 );
		x14 ^= ReadLittle32( inSrc + 56 );
		x15 ^= ReadLittle32( inSrc + 60 );
		
		if( !++j12 ) ++j13; // Stopping at 2^70 bytes per nonce is the caller's responsibility.
    e884d50a:	2a85                	addiw	s5,s5,1
		 x1 += j1;
    e884d50c:	01b48dbb          	addw	s11,s1,s11
		 x2 += j2;
    e884d510:	7482                	ld	s1,32(sp)
		 x0 ^= ReadLittle32( inSrc +  0 );
    e884d512:	01aa4d33          	xor	s10,s4,s10
		 x2 += j2;
    e884d516:	01948cbb          	addw	s9,s1,s9
		 x3 += j3;
    e884d51a:	74a2                	ld	s1,40(sp)
    e884d51c:	01648b3b          	addw	s6,s1,s6
		 x4 += j4;
    e884d520:	74c2                	ld	s1,48(sp)
    e884d522:	011488bb          	addw	a7,s1,a7
		 x5 += j5;
    e884d526:	74e2                	ld	s1,56(sp)
    e884d528:	0104883b          	addw	a6,s1,a6
		 x6 += j6;
    e884d52c:	6486                	ld	s1,64(sp)
    e884d52e:	9f25                	addw	a4,a4,s1
		 x7 += j7;
    e884d530:	64a6                	ld	s1,72(sp)
    e884d532:	9cbd                	addw	s1,s1,a5
		 x8 += j8;
    e884d534:	67c6                	ld	a5,80(sp)
    e884d536:	012783bb          	addw	t2,a5,s2
		 x9 += j9;
    e884d53a:	67e6                	ld	a5,88(sp)
		 x2 ^= ReadLittle32( inSrc +  8 );
    e884d53c:	00862903          	lw	s2,8(a2)
		 x9 += j9;
    e884d540:	005782bb          	addw	t0,a5,t0
		x10 += j10;
    e884d544:	7786                	ld	a5,96(sp)
		 x2 ^= ReadLittle32( inSrc +  8 );
    e884d546:	01994cb3          	xor	s9,s2,s9
		x10 += j10;
    e884d54a:	01f78fbb          	addw	t6,a5,t6
		x11 += j11;
    e884d54e:	77a6                	ld	a5,104(sp)
    e884d550:	01378f3b          	addw	t5,a5,s3
		x14 += j14;
    e884d554:	77c6                	ld	a5,112(sp)
		 x1 ^= ReadLittle32( inSrc +  4 );
    e884d556:	00462983          	lw	s3,4(a2)
		x14 += j14;
    e884d55a:	0067833b          	addw	t1,a5,t1
		x15 += j15;
    e884d55e:	77e6                	ld	a5,120(sp)
		 x1 ^= ReadLittle32( inSrc +  4 );
    e884d560:	01b9cdb3          	xor	s11,s3,s11
		x15 += j15;
    e884d564:	01878c3b          	addw	s8,a5,s8
		 x3 ^= ReadLittle32( inSrc + 12 );
    e884d568:	465c                	lw	a5,12(a2)
    e884d56a:	0167cb33          	xor	s6,a5,s6
		 x4 ^= ReadLittle32( inSrc + 16 );
    e884d56e:	4a1c                	lw	a5,16(a2)
    e884d570:	0117c8b3          	xor	a7,a5,a7
		 x5 ^= ReadLittle32( inSrc + 20 );
    e884d574:	4a5c                	lw	a5,20(a2)
    e884d576:	0107c833          	xor	a6,a5,a6
		 x6 ^= ReadLittle32( inSrc + 24 );
    e884d57a:	4e1c                	lw	a5,24(a2)
    e884d57c:	8f3d                	xor	a4,a4,a5
		 x7 ^= ReadLittle32( inSrc + 28 );
    e884d57e:	4e5c                	lw	a5,28(a2)
    e884d580:	8cbd                	xor	s1,s1,a5
		 x8 ^= ReadLittle32( inSrc + 32 );
    e884d582:	521c                	lw	a5,32(a2)
    e884d584:	0077c3b3          	xor	t2,a5,t2
		 x9 ^= ReadLittle32( inSrc + 36 );
    e884d588:	525c                	lw	a5,36(a2)
    e884d58a:	0057c2b3          	xor	t0,a5,t0
		x10 ^= ReadLittle32( inSrc + 40 );
    e884d58e:	561c                	lw	a5,40(a2)
    e884d590:	01f7cfb3          	xor	t6,a5,t6
		x11 ^= ReadLittle32( inSrc + 44 );
    e884d594:	565c                	lw	a5,44(a2)
    e884d596:	01e7cf33          	xor	t5,a5,t5
		x12 ^= ReadLittle32( inSrc + 48 );
    e884d59a:	5a1c                	lw	a5,48(a2)
    e884d59c:	01d7ceb3          	xor	t4,a5,t4
		x13 ^= ReadLittle32( inSrc + 52 );
    e884d5a0:	5a5c                	lw	a5,52(a2)
    e884d5a2:	01c7ce33          	xor	t3,a5,t3
		x14 ^= ReadLittle32( inSrc + 56 );
    e884d5a6:	5e1c                	lw	a5,56(a2)
    e884d5a8:	0067c333          	xor	t1,a5,t1
		x15 ^= ReadLittle32( inSrc + 60 );
    e884d5ac:	5e5c                	lw	a5,60(a2)
    e884d5ae:	0187cc33          	xor	s8,a5,s8
		if( !++j12 ) ++j13; // Stopping at 2^70 bytes per nonce is the caller's responsibility.
    e884d5b2:	000a9363          	bnez	s5,e884d5b8 <_chacha20_xor+0x30e>
    e884d5b6:	2b85                	addiw	s7,s7,1
		
		WriteLittle32( inDst +  0,  x0 );
		WriteLittle32( inDst +  4,  x1 );
    e884d5b8:	e1b5dd0b          	swd	s10,s11,(a1),0,3
		WriteLittle32( inDst +  8,  x2 );
		WriteLittle32( inDst + 12,  x3 );
    e884d5bc:	e365dc8b          	swd	s9,s6,(a1),1,3
		WriteLittle32( inDst + 16,  x4 );
		WriteLittle32( inDst + 20,  x5 );
    e884d5c0:	e505d88b          	swd	a7,a6,(a1),2,3
		WriteLittle32( inDst + 24,  x6 );
    e884d5c4:	cd98                	sw	a4,24(a1)
		WriteLittle32( inDst + 28,  x7 );
    e884d5c6:	cdc4                	sw	s1,28(a1)
		WriteLittle32( inDst + 32,  x8 );
    e884d5c8:	0275a023          	sw	t2,32(a1)
		WriteLittle32( inDst + 36,  x9 );
    e884d5cc:	0255a223          	sw	t0,36(a1)
		WriteLittle32( inDst + 40, x10 );
    e884d5d0:	03f5a423          	sw	t6,40(a1)
		WriteLittle32( inDst + 44, x11 );
    e884d5d4:	03e5a623          	sw	t5,44(a1)
		WriteLittle32( inDst + 48, x12 );
    e884d5d8:	03d5a823          	sw	t4,48(a1)
		WriteLittle32( inDst + 52, x13 );
    e884d5dc:	03c5aa23          	sw	t3,52(a1)
		WriteLittle32( inDst + 56, x14 );
    e884d5e0:	0265ac23          	sw	t1,56(a1)
		WriteLittle32( inDst + 60, x15 );
    e884d5e4:	0385ae23          	sw	s8,60(a1)
		
		if( inLen <= CHACHA_BLOCKBYTES )
    e884d5e8:	04000793          	li	a5,64
    e884d5ec:	02d7ef63          	bltu	a5,a3,e884d62a <_chacha20_xor+0x380>
		{
			if( inLen < CHACHA_BLOCKBYTES )
    e884d5f0:	02f69a63          	bne	a3,a5,e884d624 <_chacha20_xor+0x37a>
		}
		inLen -= CHACHA_BLOCKBYTES;
		inDst += CHACHA_BLOCKBYTES;
		inSrc += CHACHA_BLOCKBYTES;
	}
}
    e884d5f4:	6472                	ld	s0,280(sp)
			inState->state[ 12 ] = j12;
    e884d5f6:	03552823          	sw	s5,48(a0)
			inState->state[ 13 ] = j13;
    e884d5fa:	03752a23          	sw	s7,52(a0)
}
    e884d5fe:	64d2                	ld	s1,272(sp)
    e884d600:	6932                	ld	s2,264(sp)
    e884d602:	6992                	ld	s3,256(sp)
    e884d604:	7a6e                	ld	s4,248(sp)
    e884d606:	7ace                	ld	s5,240(sp)
    e884d608:	7b2e                	ld	s6,232(sp)
    e884d60a:	7b8e                	ld	s7,224(sp)
    e884d60c:	6c6e                	ld	s8,216(sp)
    e884d60e:	6cce                	ld	s9,208(sp)
    e884d610:	6d2e                	ld	s10,200(sp)
    e884d612:	6d8e                	ld	s11,192(sp)
    e884d614:	6115                	addi	sp,sp,288
    e884d616:	8082                	ret
				for( i = 0; i < inLen; ++i ) ctarget[ i ] = inDst[ i ];
    e884d618:	8085c78b          	lrbu	a5,a1,s0,0
    e884d61c:	6722                	ld	a4,8(sp)
    e884d61e:	0087578b          	srb	a5,a4,s0,0
    e884d622:	0405                	addi	s0,s0,1
    e884d624:	fe869ae3          	bne	a3,s0,e884d618 <_chacha20_xor+0x36e>
    e884d628:	b7f1                	j	e884d5f4 <_chacha20_xor+0x34a>
		inLen -= CHACHA_BLOCKBYTES;
    e884d62a:	fc068693          	addi	a3,a3,-64
		inDst += CHACHA_BLOCKBYTES;
    e884d62e:	04058593          	addi	a1,a1,64
		inSrc += CHACHA_BLOCKBYTES;
    e884d632:	04060613          	addi	a2,a2,64
		if( inLen < CHACHA_BLOCKBYTES )
    e884d636:	b9c1                	j	e884d306 <_chacha20_xor+0x5c>

00000000e884d638 <_poly1305_update>:
	U32TO8_LE(&mac[ 8], f2); f3 += (f2 >> 32);
	U32TO8_LE(&mac[12], f3);
}

static void _poly1305_update(poly1305_state *state, const uint8_t *in, size_t len)
{
    e884d638:	7179                	addi	sp,sp,-48
    e884d63a:	f44a                	sd	s2,40(sp)
    e884d63c:	ec22                	sd	s0,24(sp)
    e884d63e:	f026                	sd	s1,32(sp)
	uint32_t b;
	uint64_t c;
	size_t j;
	uint8_t mp[16];

	if (len < 16)
    e884d640:	47bd                	li	a5,15
    e884d642:	12c7fd63          	bgeu	a5,a2,e884d77c <_poly1305_update+0x144>
		goto poly1305_donna_atmost15bytes;

poly1305_donna_16bytes:
	t0 = U8TO32_LE(in);
    e884d646:	0005a883          	lw	a7,0(a1)
	len -= 16;

	state->h0 += t0 & 0x3ffffff;
	state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff;
	state->h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff;
	state->h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff;
    e884d64a:	f8e5c80b          	ldd	a6,a4,(a1),0,4
	state->h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff;
    e884d64e:	0045b683          	ld	a3,4(a1)
	state->h0 += t0 & 0x3ffffff;
    e884d652:	6408b30b          	extu	t1,a7,25,0
    e884d656:	02452883          	lw	a7,36(a0)
	t3 = U8TO32_LE(in+12);
    e884d65a:	45dc                	lw	a5,12(a1)
	len -= 16;
    e884d65c:	1641                	addi	a2,a2,-16
	state->h0 += t0 & 0x3ffffff;
    e884d65e:	006888bb          	addw	a7,a7,t1
    e884d662:	03152223          	sw	a7,36(a0)
	state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff;
    e884d666:	cda8388b          	extu	a7,a6,51,26
    e884d66a:	02852803          	lw	a6,40(a0)
	state->h4 += (t3 >> 8) | (1 << 24);
    e884d66e:	0087d79b          	srliw	a5,a5,0x8
	in += 16;
    e884d672:	05c1                	addi	a1,a1,16
	state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff;
    e884d674:	0118083b          	addw	a6,a6,a7
    e884d678:	03052423          	sw	a6,40(a0)
	state->h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff;
    e884d67c:	b546b80b          	extu	a6,a3,45,20
    e884d680:	5554                	lw	a3,44(a0)
    e884d682:	010686bb          	addw	a3,a3,a6
    e884d686:	d554                	sw	a3,44(a0)
	state->h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff;
    e884d688:	9ce7368b          	extu	a3,a4,39,14
    e884d68c:	5918                	lw	a4,48(a0)
    e884d68e:	9f35                	addw	a4,a4,a3
    e884d690:	d918                	sw	a4,48(a0)
	state->h4 += (t3 >> 8) | (1 << 24);
    e884d692:	01000737          	lui	a4,0x1000
    e884d696:	8fd9                	or	a5,a5,a4
    e884d698:	5958                	lw	a4,52(a0)
    e884d69a:	9fb9                	addw	a5,a5,a4
    e884d69c:	d95c                	sw	a5,52(a0)

poly1305_donna_mul:
	t[0] = mul32x32_64(state->h0,state->r0) +
	       mul32x32_64(state->h1,state->s4) +
    e884d69e:	02856783          	lwu	a5,40(a0)
    e884d6a2:	02056283          	lwu	t0,32(a0)
	t[0] = mul32x32_64(state->h0,state->r0) +
    e884d6a6:	02456403          	lwu	s0,36(a0)
    e884d6aa:	00056f83          	lwu	t6,0(a0)
	       mul32x32_64(state->h1,state->s4) +
    e884d6ae:	025786b3          	mul	a3,a5,t0
	       mul32x32_64(state->h2,state->s3) +
	       mul32x32_64(state->h3,state->s2) +
    e884d6b2:	03056f03          	lwu	t5,48(a0)
    e884d6b6:	01856803          	lwu	a6,24(a0)
	       mul32x32_64(state->h2,state->s3) +
    e884d6ba:	02c56e83          	lwu	t4,44(a0)
    e884d6be:	01c56903          	lwu	s2,28(a0)
	       mul32x32_64(state->h4,state->s1);
    e884d6c2:	03456e03          	lwu	t3,52(a0)
    e884d6c6:	01456703          	lwu	a4,20(a0)
	t[3] = mul32x32_64(state->h0,state->r3) +
	       mul32x32_64(state->h1,state->r2) +
	       mul32x32_64(state->h2,state->r1) +
	       mul32x32_64(state->h3,state->r0) +
	       mul32x32_64(state->h4,state->s4);
	t[4] = mul32x32_64(state->h0,state->r4) +
    e884d6ca:	01056883          	lwu	a7,16(a0)
	t[1] = mul32x32_64(state->h0,state->r1) +
    e884d6ce:	00456383          	lwu	t2,4(a0)
	       mul32x32_64(state->h2,state->s3) +
    e884d6d2:	21f4168b          	mula	a3,s0,t6
    e884d6d6:	210f168b          	mula	a3,t5,a6
    e884d6da:	212e968b          	mula	a3,t4,s2
	       mul32x32_64(state->h3,state->s2) +
    e884d6de:	21c7168b          	mula	a3,a4,t3
	t[3] = mul32x32_64(state->h0,state->r3) +
    e884d6e2:	f295470b          	lwud	a4,s1,(a0),1,3
	       mul32x32_64(state->h1,state->r3) +
    e884d6e6:	02978333          	mul	t1,a5,s1
	       mul32x32_64(state->h2,state->r2) +
    e884d6ea:	2088930b          	mula	t1,a7,s0
	       mul32x32_64(state->h1,state->r0) +
    e884d6ee:	02ff88b3          	mul	a7,t6,a5
	       mul32x32_64(state->h2,state->s4) +
    e884d6f2:	2074188b          	mula	a7,s0,t2
    e884d6f6:	212f188b          	mula	a7,t5,s2
    e884d6fa:	21d2988b          	mula	a7,t0,t4
	       mul32x32_64(state->h3,state->s3) +
    e884d6fe:	21c8188b          	mula	a7,a6,t3
	       mul32x32_64(state->h3,state->r1) +
	       mul32x32_64(state->h4,state->r0);

	           state->h0 = (uint32_t)t[0] & 0x3ffffff; c =           (t[0] >> 26);
    e884d702:	01a6d813          	srli	a6,a3,0x1a
    e884d706:	6406b68b          	extu	a3,a3,25,0
	t[1] += c; state->h1 = (uint32_t)t[1] & 0x3ffffff; b = (uint32_t)(t[1] >> 26);
    e884d70a:	98c2                	add	a7,a7,a6
    e884d70c:	6408b80b          	extu	a6,a7,25,0
	       mul32x32_64(state->h2,state->r2) +
    e884d710:	207f130b          	mula	t1,t5,t2
	t[1] += c; state->h1 = (uint32_t)t[1] & 0x3ffffff; b = (uint32_t)(t[1] >> 26);
    e884d714:	03052423          	sw	a6,40(a0)
	t[2] += b; state->h2 = (uint32_t)t[2] & 0x3ffffff; b = (uint32_t)(t[2] >> 26);
    e884d718:	e5a8b88b          	extu	a7,a7,57,26
	       mul32x32_64(state->h1,state->r1) +
    e884d71c:	02778833          	mul	a6,a5,t2
	       mul32x32_64(state->h2,state->r2) +
    e884d720:	20ee930b          	mula	t1,t4,a4
	       mul32x32_64(state->h2,state->r0) +
    e884d724:	20e4180b          	mula	a6,s0,a4
	       mul32x32_64(state->h1,state->r2) +
    e884d728:	02e78733          	mul	a4,a5,a4
	       mul32x32_64(state->h2,state->r1) +
    e884d72c:	2094170b          	mula	a4,s0,s1
	       mul32x32_64(state->h2,state->r0) +
    e884d730:	21e2980b          	mula	a6,t0,t5
	       mul32x32_64(state->h2,state->r1) +
    e884d734:	21ef970b          	mula	a4,t6,t5
	       mul32x32_64(state->h2,state->r0) +
    e884d738:	21df980b          	mula	a6,t6,t4
	       mul32x32_64(state->h2,state->r1) +
    e884d73c:	207e970b          	mula	a4,t4,t2
	       mul32x32_64(state->h3,state->s4) +
    e884d740:	21c9180b          	mula	a6,s2,t3
	       mul32x32_64(state->h3,state->r0) +
    e884d744:	21c2970b          	mula	a4,t0,t3
	t[2] += b; state->h2 = (uint32_t)t[2] & 0x3ffffff; b = (uint32_t)(t[2] >> 26);
    e884d748:	9846                	add	a6,a6,a7
    e884d74a:	6408388b          	extu	a7,a6,25,0
	t[3] += b; state->h3 = (uint32_t)t[3] & 0x3ffffff; b = (uint32_t)(t[3] >> 26);
    e884d74e:	e5a8380b          	extu	a6,a6,57,26
	t[2] += b; state->h2 = (uint32_t)t[2] & 0x3ffffff; b = (uint32_t)(t[2] >> 26);
    e884d752:	03152623          	sw	a7,44(a0)
	       mul32x32_64(state->h3,state->r1) +
    e884d756:	21cf930b          	mula	t1,t6,t3
	t[3] += b; state->h3 = (uint32_t)t[3] & 0x3ffffff; b = (uint32_t)(t[3] >> 26);
    e884d75a:	9742                	add	a4,a4,a6
    e884d75c:	6407378b          	extu	a5,a4,25,0
	t[4] += b; state->h4 = (uint32_t)t[4] & 0x3ffffff; b = (uint32_t)(t[4] >> 26);
    e884d760:	e5a7370b          	extu	a4,a4,57,26
	t[3] += b; state->h3 = (uint32_t)t[3] & 0x3ffffff; b = (uint32_t)(t[3] >> 26);
    e884d764:	d91c                	sw	a5,48(a0)
	t[4] += b; state->h4 = (uint32_t)t[4] & 0x3ffffff; b = (uint32_t)(t[4] >> 26);
    e884d766:	006707b3          	add	a5,a4,t1
    e884d76a:	6407b70b          	extu	a4,a5,25,0
    e884d76e:	d958                	sw	a4,52(a0)
    e884d770:	83e9                	srli	a5,a5,0x1a
	state->h0 += b * 5;
    e884d772:	4715                	li	a4,5
    e884d774:	24f7168b          	mulaw	a3,a4,a5
    e884d778:	d154                	sw	a3,36(a0)

	if (len >= 16)
    e884d77a:	b5d9                	j	e884d640 <_poly1305_update+0x8>
		goto poly1305_donna_16bytes;

	/* final bytes */
poly1305_donna_atmost15bytes:
	if (!len)
    e884d77c:	ca25                	beqz	a2,e884d7ec <_poly1305_update+0x1b4>
		return;

	for (j = 0; j < len; j++)
    e884d77e:	4781                	li	a5,0
		mp[j] = in[j];
    e884d780:	80f5c70b          	lrbu	a4,a1,a5,0
    e884d784:	0027d70b          	srb	a4,a5,sp,0
	for (j = 0; j < len; j++)
    e884d788:	00178713          	addi	a4,a5,1 # ffffffffffffe001 <__DRAM0_INF_BASE+0xffffffff0000e001>
    e884d78c:	04e61a63          	bne	a2,a4,e884d7e0 <_poly1305_update+0x1a8>
	mp[j++] = 1;
    e884d790:	4705                	li	a4,1
    e884d792:	00c1570b          	srb	a4,sp,a2,0
    e884d796:	0789                	addi	a5,a5,2
	for (; j < 16; j++)
    e884d798:	473d                	li	a4,15
    e884d79a:	04f77563          	bgeu	a4,a5,e884d7e4 <_poly1305_update+0x1ac>
	t0 = U8TO32_LE(mp+0);
	t1 = U8TO32_LE(mp+4);
	t2 = U8TO32_LE(mp+8);
	t3 = U8TO32_LE(mp+12);

	state->h0 += t0 & 0x3ffffff;
    e884d79e:	4702                	lw	a4,0(sp)
	t3 = U8TO32_LE(mp+12);
    e884d7a0:	47b2                	lw	a5,12(sp)
	len = 0;
    e884d7a2:	4601                	li	a2,0
	state->h0 += t0 & 0x3ffffff;
    e884d7a4:	6407368b          	extu	a3,a4,25,0
    e884d7a8:	5158                	lw	a4,36(a0)
    e884d7aa:	9f35                	addw	a4,a4,a3
    e884d7ac:	d158                	sw	a4,36(a0)
	state->h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff;
    e884d7ae:	6702                	ld	a4,0(sp)
    e884d7b0:	cda7368b          	extu	a3,a4,51,26
    e884d7b4:	5518                	lw	a4,40(a0)
    e884d7b6:	9f35                	addw	a4,a4,a3
    e884d7b8:	d518                	sw	a4,40(a0)
	state->h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff;
    e884d7ba:	00413703          	ld	a4,4(sp)
    e884d7be:	b547368b          	extu	a3,a4,45,20
    e884d7c2:	5558                	lw	a4,44(a0)
    e884d7c4:	9f35                	addw	a4,a4,a3
    e884d7c6:	d558                	sw	a4,44(a0)
	state->h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff;
    e884d7c8:	6722                	ld	a4,8(sp)
    e884d7ca:	9ce7368b          	extu	a3,a4,39,14
    e884d7ce:	5918                	lw	a4,48(a0)
    e884d7d0:	9f35                	addw	a4,a4,a3
    e884d7d2:	d918                	sw	a4,48(a0)
	state->h4 += (t3 >> 8);
    e884d7d4:	0087d71b          	srliw	a4,a5,0x8
    e884d7d8:	595c                	lw	a5,52(a0)
    e884d7da:	9fb9                	addw	a5,a5,a4
    e884d7dc:	d95c                	sw	a5,52(a0)

	goto poly1305_donna_mul;
    e884d7de:	b5c1                	j	e884d69e <_poly1305_update+0x66>
    e884d7e0:	87ba                	mv	a5,a4
    e884d7e2:	bf79                	j	e884d780 <_poly1305_update+0x148>
		mp[j] = 0;
    e884d7e4:	00f1500b          	srb	zero,sp,a5,0
	for (; j < 16; j++)
    e884d7e8:	0785                	addi	a5,a5,1
    e884d7ea:	bf45                	j	e884d79a <_poly1305_update+0x162>
}
    e884d7ec:	6462                	ld	s0,24(sp)
    e884d7ee:	7922                	ld	s2,40(sp)
    e884d7f0:	7482                	ld	s1,32(sp)
    e884d7f2:	6145                	addi	sp,sp,48
    e884d7f4:	8082                	ret

00000000e884d7f6 <chacha20_init_64x64>:
	inState->state[  0 ] = kChaCha20Constants[ 0 ];
    e884d7f6:	00072797          	auipc	a5,0x72
    e884d7fa:	80a78793          	addi	a5,a5,-2038 # e88bf000 <__PRETTY_FUNCTION__.9614+0x20>
    e884d7fe:	639c                	ld	a5,0(a5)
    e884d800:	e11c                	sd	a5,0(a0)
	inState->state[  2 ] = kChaCha20Constants[ 2 ];
    e884d802:	00072797          	auipc	a5,0x72
    e884d806:	80678793          	addi	a5,a5,-2042 # e88bf008 <__PRETTY_FUNCTION__.9614+0x28>
    e884d80a:	639c                	ld	a5,0(a5)
    e884d80c:	e51c                	sd	a5,8(a0)
	inState->state[  4 ] = ReadLittle32( inKey +  0 );
    e884d80e:	419c                	lw	a5,0(a1)
    e884d810:	c91c                	sw	a5,16(a0)
	inState->state[  5 ] = ReadLittle32( inKey +  4 );
    e884d812:	41dc                	lw	a5,4(a1)
    e884d814:	c95c                	sw	a5,20(a0)
	inState->state[  6 ] = ReadLittle32( inKey +  8 );
    e884d816:	459c                	lw	a5,8(a1)
    e884d818:	cd1c                	sw	a5,24(a0)
	inState->state[  7 ] = ReadLittle32( inKey + 12 );
    e884d81a:	45dc                	lw	a5,12(a1)
    e884d81c:	cd5c                	sw	a5,28(a0)
	inState->state[  8 ] = ReadLittle32( inKey + 16 );
    e884d81e:	499c                	lw	a5,16(a1)
    e884d820:	d11c                	sw	a5,32(a0)
	inState->state[  9 ] = ReadLittle32( inKey + 20 );
    e884d822:	49dc                	lw	a5,20(a1)
    e884d824:	d15c                	sw	a5,36(a0)
	inState->state[ 10 ] = ReadLittle32( inKey + 24 );
    e884d826:	4d9c                	lw	a5,24(a1)
    e884d828:	d51c                	sw	a5,40(a0)
	inState->state[ 11 ] = ReadLittle32( inKey + 28 );
    e884d82a:	4ddc                	lw	a5,28(a1)
	inState->state[ 12 ] = (uint32_t)( inCounter & UINT32_C( 0xFFFFFFFF ) );
    e884d82c:	f914                	sd	a3,48(a0)
	inState->state[ 11 ] = ReadLittle32( inKey + 28 );
    e884d82e:	d55c                	sw	a5,44(a0)
	if( inNonce )
    e884d830:	ca01                	beqz	a2,e884d840 <chacha20_init_64x64+0x4a>
		inState->state[ 14 ] = ReadLittle32( inNonce + 0 );
    e884d832:	421c                	lw	a5,0(a2)
    e884d834:	dd1c                	sw	a5,56(a0)
		inState->state[ 15 ] = ReadLittle32( inNonce + 4 );
    e884d836:	425c                	lw	a5,4(a2)
    e884d838:	dd5c                	sw	a5,60(a0)
	inState->leftover = 0;
    e884d83a:	08053023          	sd	zero,128(a0)
}
    e884d83e:	8082                	ret
		inState->state[ 14 ] = 0;
    e884d840:	02053c23          	sd	zero,56(a0)
    e884d844:	bfdd                	j	e884d83a <chacha20_init_64x64+0x44>

00000000e884d846 <chacha20_init_96x32>:
	inState->state[  0 ] = kChaCha20Constants[ 0 ];
    e884d846:	00071797          	auipc	a5,0x71
    e884d84a:	7ba78793          	addi	a5,a5,1978 # e88bf000 <__PRETTY_FUNCTION__.9614+0x20>
    e884d84e:	639c                	ld	a5,0(a5)
    e884d850:	e11c                	sd	a5,0(a0)
	inState->state[  2 ] = kChaCha20Constants[ 2 ];
    e884d852:	00071797          	auipc	a5,0x71
    e884d856:	7b678793          	addi	a5,a5,1974 # e88bf008 <__PRETTY_FUNCTION__.9614+0x28>
    e884d85a:	639c                	ld	a5,0(a5)
    e884d85c:	e51c                	sd	a5,8(a0)
	inState->state[  4 ] = ReadLittle32( inKey +  0 );
    e884d85e:	419c                	lw	a5,0(a1)
    e884d860:	c91c                	sw	a5,16(a0)
	inState->state[  5 ] = ReadLittle32( inKey +  4 );
    e884d862:	41dc                	lw	a5,4(a1)
    e884d864:	c95c                	sw	a5,20(a0)
	inState->state[  6 ] = ReadLittle32( inKey +  8 );
    e884d866:	459c                	lw	a5,8(a1)
    e884d868:	cd1c                	sw	a5,24(a0)
	inState->state[  7 ] = ReadLittle32( inKey + 12 );
    e884d86a:	45dc                	lw	a5,12(a1)
    e884d86c:	cd5c                	sw	a5,28(a0)
	inState->state[  8 ] = ReadLittle32( inKey + 16 );
    e884d86e:	499c                	lw	a5,16(a1)
    e884d870:	d11c                	sw	a5,32(a0)
	inState->state[  9 ] = ReadLittle32( inKey + 20 );
    e884d872:	49dc                	lw	a5,20(a1)
    e884d874:	d15c                	sw	a5,36(a0)
	inState->state[ 10 ] = ReadLittle32( inKey + 24 );
    e884d876:	4d9c                	lw	a5,24(a1)
    e884d878:	d51c                	sw	a5,40(a0)
	inState->state[ 11 ] = ReadLittle32( inKey + 28 );
    e884d87a:	4ddc                	lw	a5,28(a1)
	inState->state[ 12 ] = inCounter;
    e884d87c:	d914                	sw	a3,48(a0)
	inState->state[ 11 ] = ReadLittle32( inKey + 28 );
    e884d87e:	d55c                	sw	a5,44(a0)
	if( inNonce )
    e884d880:	ca11                	beqz	a2,e884d894 <chacha20_init_96x32+0x4e>
		inState->state[ 13 ] = ReadLittle32( inNonce + 0 );
    e884d882:	421c                	lw	a5,0(a2)
    e884d884:	d95c                	sw	a5,52(a0)
		inState->state[ 14 ] = ReadLittle32( inNonce + 4 );
    e884d886:	425c                	lw	a5,4(a2)
    e884d888:	dd1c                	sw	a5,56(a0)
		inState->state[ 15 ] = ReadLittle32( inNonce + 8 );
    e884d88a:	461c                	lw	a5,8(a2)
    e884d88c:	dd5c                	sw	a5,60(a0)
	inState->leftover = 0;
    e884d88e:	08053023          	sd	zero,128(a0)
}
    e884d892:	8082                	ret
		inState->state[ 13 ] = 0;
    e884d894:	02052a23          	sw	zero,52(a0)
		inState->state[ 14 ] = 0;
    e884d898:	02053c23          	sd	zero,56(a0)
    e884d89c:	bfcd                	j	e884d88e <chacha20_init_96x32+0x48>

00000000e884d89e <chacha20_update>:
{
    e884d89e:	7139                	addi	sp,sp,-64
    e884d8a0:	e422                	sd	s0,8(sp)
    e884d8a2:	e826                	sd	s1,16(sp)
    e884d8a4:	ec4a                	sd	s2,24(sp)
    e884d8a6:	f04e                	sd	s3,32(sp)
    e884d8a8:	f452                	sd	s4,40(sp)
    e884d8aa:	fc06                	sd	ra,56(sp)
    e884d8ac:	f856                	sd	s5,48(sp)
	j = inState->leftover;
    e884d8ae:	615c                	ld	a5,128(a0)
{
    e884d8b0:	84aa                	mv	s1,a0
    e884d8b2:	892e                	mv	s2,a1
    e884d8b4:	8432                	mv	s0,a2
    e884d8b6:	8a36                	mv	s4,a3
    e884d8b8:	89b6                	mv	s3,a3
	if( j )
    e884d8ba:	c7a1                	beqz	a5,e884d902 <chacha20_update+0x64>
		n = CHACHA_BLOCKBYTES - j;
    e884d8bc:	04000713          	li	a4,64
    e884d8c0:	40f706b3          	sub	a3,a4,a5
		if( n > inLen ) n = inLen;
    e884d8c4:	00c6b733          	sltu	a4,a3,a2
    e884d8c8:	40e6168b          	mveqz	a3,a2,a4
		for( i = 0; i < n; ++i ) inState->buffer[ j++ ] = src[ i ];
    e884d8cc:	04078613          	addi	a2,a5,64
    e884d8d0:	8736                	mv	a4,a3
    e884d8d2:	962a                	add	a2,a2,a0
    e884d8d4:	4681                	li	a3,0
    e884d8d6:	06d71d63          	bne	a4,a3,e884d950 <chacha20_update+0xb2>
    e884d8da:	97ba                	add	a5,a5,a4
		src += n;
    e884d8dc:	993a                	add	s2,s2,a4
		inLen -= n;
    e884d8de:	8c19                	sub	s0,s0,a4
		if( j == CHACHA_BLOCKBYTES )
    e884d8e0:	04000713          	li	a4,64
	uint8_t *			dst = (uint8_t *) inDst;
    e884d8e4:	89d2                	mv	s3,s4
		if( j == CHACHA_BLOCKBYTES )
    e884d8e6:	00e79d63          	bne	a5,a4,e884d900 <chacha20_update+0x62>
			_chacha20_xor( inState, dst, inState->buffer, CHACHA_BLOCKBYTES );
    e884d8ea:	04000693          	li	a3,64
    e884d8ee:	04048613          	addi	a2,s1,64
    e884d8f2:	85d2                	mv	a1,s4
    e884d8f4:	8526                	mv	a0,s1
    e884d8f6:	9b5ff0ef          	jal	ra,e884d2aa <_chacha20_xor>
			dst += CHACHA_BLOCKBYTES;
    e884d8fa:	040a0993          	addi	s3,s4,64
			j = 0;
    e884d8fe:	4781                	li	a5,0
		inState->leftover = j;
    e884d900:	e0dc                	sd	a5,128(s1)
	if( inLen >= CHACHA_BLOCKBYTES )
    e884d902:	03f00793          	li	a5,63
    e884d906:	0087fe63          	bgeu	a5,s0,e884d922 <chacha20_update+0x84>
		n = inLen & ~( (size_t)( CHACHA_BLOCKBYTES - 1 ) );
    e884d90a:	fc047a93          	andi	s5,s0,-64
		_chacha20_xor( inState, dst, src, n );
    e884d90e:	864a                	mv	a2,s2
    e884d910:	85ce                	mv	a1,s3
    e884d912:	86d6                	mv	a3,s5
    e884d914:	8526                	mv	a0,s1
    e884d916:	995ff0ef          	jal	ra,e884d2aa <_chacha20_xor>
		src += n;
    e884d91a:	9956                	add	s2,s2,s5
		dst += n;
    e884d91c:	99d6                	add	s3,s3,s5
		inLen &= ( CHACHA_BLOCKBYTES - 1 );
    e884d91e:	03f47413          	andi	s0,s0,63
	if( inLen )
    e884d922:	cc01                	beqz	s0,e884d93a <chacha20_update+0x9c>
		for( i = 0; i < inLen; ++i ) inState->buffer[ i ] = src[ i ];
    e884d924:	4781                	li	a5,0
    e884d926:	04048713          	addi	a4,s1,64
    e884d92a:	80f9468b          	lrbu	a3,s2,a5,0
    e884d92e:	00f7568b          	srb	a3,a4,a5,0
    e884d932:	0785                	addi	a5,a5,1
    e884d934:	fef41be3          	bne	s0,a5,e884d92a <chacha20_update+0x8c>
		inState->leftover = inLen;
    e884d938:	e0c0                	sd	s0,128(s1)
}
    e884d93a:	70e2                	ld	ra,56(sp)
    e884d93c:	6422                	ld	s0,8(sp)
    e884d93e:	41498533          	sub	a0,s3,s4
    e884d942:	64c2                	ld	s1,16(sp)
    e884d944:	6962                	ld	s2,24(sp)
    e884d946:	7982                	ld	s3,32(sp)
    e884d948:	7a22                	ld	s4,40(sp)
    e884d94a:	7ac2                	ld	s5,48(sp)
    e884d94c:	6121                	addi	sp,sp,64
    e884d94e:	8082                	ret
		for( i = 0; i < n; ++i ) inState->buffer[ j++ ] = src[ i ];
    e884d950:	80d9458b          	lrbu	a1,s2,a3,0
    e884d954:	00d6558b          	srb	a1,a2,a3,0
    e884d958:	0685                	addi	a3,a3,1
    e884d95a:	bfb5                	j	e884d8d6 <chacha20_update+0x38>

00000000e884d95c <chacha20_final>:
{
    e884d95c:	1101                	addi	sp,sp,-32
    e884d95e:	e422                	sd	s0,8(sp)
    e884d960:	ec06                	sd	ra,24(sp)
    e884d962:	e826                	sd	s1,16(sp)
	n = inState->leftover;
    e884d964:	6144                	ld	s1,128(a0)
{
    e884d966:	842a                	mv	s0,a0
	if( n ) _chacha20_xor( inState, (uint8_t *) inDst, inState->buffer, n );
    e884d968:	c491                	beqz	s1,e884d974 <chacha20_final+0x18>
    e884d96a:	86a6                	mv	a3,s1
    e884d96c:	04050613          	addi	a2,a0,64
    e884d970:	93bff0ef          	jal	ra,e884d2aa <_chacha20_xor>
    e884d974:	08840793          	addi	a5,s0,136
	while( inLen-- ) *ptr++ = 0;
    e884d978:	00f41863          	bne	s0,a5,e884d988 <chacha20_final+0x2c>
}
    e884d97c:	60e2                	ld	ra,24(sp)
    e884d97e:	6422                	ld	s0,8(sp)
    e884d980:	8526                	mv	a0,s1
    e884d982:	64c2                	ld	s1,16(sp)
    e884d984:	6105                	addi	sp,sp,32
    e884d986:	8082                	ret
    e884d988:	1814500b          	sbia	zero,(s0),1,0
    e884d98c:	b7f5                	j	e884d978 <chacha20_final+0x1c>

00000000e884d98e <poly1305_init>:
	t1 = U8TO32_LE(key+4);
    e884d98e:	e0d5c70b          	lwd	a4,a3,(a1),0,3
	t3 = U8TO32_LE(key+12);
    e884d992:	e2c5c78b          	lwd	a5,a2,(a1),1,3
		state->key[i] = key[i + 16];
    e884d996:	05050513          	addi	a0,a0,80
	state->r0 = t0 & 0x3ffffff; t0 >>= 26; t0 |= t1 << 6;
    e884d99a:	6407380b          	extu	a6,a4,25,0
    e884d99e:	fb052823          	sw	a6,-80(a0)
    e884d9a2:	01a7581b          	srliw	a6,a4,0x1a
    e884d9a6:	0066971b          	slliw	a4,a3,0x6
    e884d9aa:	01076733          	or	a4,a4,a6
	state->r1 = t0 & 0x3ffff03; t1 >>= 20; t1 |= t2 << 12;
    e884d9ae:	04000837          	lui	a6,0x4000
    e884d9b2:	f0380813          	addi	a6,a6,-253 # 3ffff03 <memcmp-0xe48000fd>
    e884d9b6:	01077733          	and	a4,a4,a6
    e884d9ba:	0146d81b          	srliw	a6,a3,0x14
    e884d9be:	00c7969b          	slliw	a3,a5,0xc
    e884d9c2:	0106e6b3          	or	a3,a3,a6
	state->r2 = t1 & 0x3ffc0ff; t2 >>= 14; t2 |= t3 << 18;
    e884d9c6:	03ffc837          	lui	a6,0x3ffc
    e884d9ca:	0ff80813          	addi	a6,a6,255 # 3ffc0ff <memcmp-0xe4803f01>
    e884d9ce:	0106f6b3          	and	a3,a3,a6
    e884d9d2:	00e7d81b          	srliw	a6,a5,0xe
    e884d9d6:	0126179b          	slliw	a5,a2,0x12
    e884d9da:	0107e7b3          	or	a5,a5,a6
	state->r3 = t2 & 0x3f03fff; t3 >>= 8;
    e884d9de:	03f04837          	lui	a6,0x3f04
    e884d9e2:	187d                	addi	a6,a6,-1
    e884d9e4:	0107f7b3          	and	a5,a5,a6
	state->r1 = t0 & 0x3ffff03; t1 >>= 20; t1 |= t2 << 12;
    e884d9e8:	2701                	sext.w	a4,a4
	state->r4 = t3 & 0x00fffff;
    e884d9ea:	6c86380b          	extu	a6,a2,27,8
	state->r3 = t2 & 0x3f03fff; t3 >>= 8;
    e884d9ee:	2781                	sext.w	a5,a5
	state->s1 = state->r1 * 5;
    e884d9f0:	4615                	li	a2,5
	state->r1 = t0 & 0x3ffff03; t1 >>= 20; t1 |= t2 << 12;
    e884d9f2:	fae52a23          	sw	a4,-76(a0)
	state->r2 = t1 & 0x3ffc0ff; t2 >>= 14; t2 |= t3 << 18;
    e884d9f6:	fad52c23          	sw	a3,-72(a0)
	state->s1 = state->r1 * 5;
    e884d9fa:	02e6073b          	mulw	a4,a2,a4
	state->r3 = t2 & 0x3f03fff; t3 >>= 8;
    e884d9fe:	faf52e23          	sw	a5,-68(a0)
	state->r4 = t3 & 0x00fffff;
    e884da02:	fd052023          	sw	a6,-64(a0)
	state->h0 = 0;
    e884da06:	fc052a23          	sw	zero,-44(a0)
	state->h1 = 0;
    e884da0a:	fc053c23          	sd	zero,-40(a0)
	state->h3 = 0;
    e884da0e:	fe053023          	sd	zero,-32(a0)
	state->buf_used = 0;
    e884da12:	fe053c23          	sd	zero,-8(a0)
		state->key[i] = key[i + 16];
    e884da16:	05c1                	addi	a1,a1,16
	state->s3 = state->r3 * 5;
    e884da18:	02f607bb          	mulw	a5,a2,a5
	state->s1 = state->r1 * 5;
    e884da1c:	fce52223          	sw	a4,-60(a0)
	for (i = 0; i < 16; ++i)
    e884da20:	4741                	li	a4,16
	state->s2 = state->r2 * 5;
    e884da22:	02d606bb          	mulw	a3,a2,a3
	state->s3 = state->r3 * 5;
    e884da26:	fcf52623          	sw	a5,-52(a0)
	for (i = 0; i < 16; ++i)
    e884da2a:	4781                	li	a5,0
	state->s4 = state->r4 * 5;
    e884da2c:	0306063b          	mulw	a2,a2,a6
	state->s2 = state->r2 * 5;
    e884da30:	fcd52423          	sw	a3,-56(a0)
	state->s4 = state->r4 * 5;
    e884da34:	fcc52823          	sw	a2,-48(a0)
		state->key[i] = key[i + 16];
    e884da38:	80f5c68b          	lrbu	a3,a1,a5,0
    e884da3c:	00f5568b          	srb	a3,a0,a5,0
	for (i = 0; i < 16; ++i)
    e884da40:	0785                	addi	a5,a5,1
    e884da42:	fee79be3          	bne	a5,a4,e884da38 <poly1305_init+0xaa>
}
    e884da46:	8082                	ret

00000000e884da48 <poly1305_update>:
{
    e884da48:	7179                	addi	sp,sp,-48
    e884da4a:	e422                	sd	s0,8(sp)
    e884da4c:	e826                	sd	s1,16(sp)
    e884da4e:	ec4a                	sd	s2,24(sp)
    e884da50:	f406                	sd	ra,40(sp)
    e884da52:	f04e                	sd	s3,32(sp)
	if (state->buf_used) {
    e884da54:	6538                	ld	a4,72(a0)
{
    e884da56:	84aa                	mv	s1,a0
    e884da58:	892e                	mv	s2,a1
    e884da5a:	8432                	mv	s0,a2
	if (state->buf_used) {
    e884da5c:	cf0d                	beqz	a4,e884da96 <poly1305_update+0x4e>
		n = 16 - state->buf_used;
    e884da5e:	47c1                	li	a5,16
    e884da60:	8f99                	sub	a5,a5,a4
		if (n > in_len)
    e884da62:	00c7b6b3          	sltu	a3,a5,a2
    e884da66:	40d6178b          	mveqz	a5,a2,a3
			state->buf[state->buf_used + i] = in[i];
    e884da6a:	03870613          	addi	a2,a4,56 # 1000038 <memcmp-0xe77fffc8>
    e884da6e:	86be                	mv	a3,a5
    e884da70:	962a                	add	a2,a2,a0
		for (i = 0; i < n; i++)
    e884da72:	4781                	li	a5,0
    e884da74:	06d79063          	bne	a5,a3,e884dad4 <poly1305_update+0x8c>
		state->buf_used += n;
    e884da78:	973e                	add	a4,a4,a5
    e884da7a:	e4b8                	sd	a4,72(s1)
		in_len -= n;
    e884da7c:	8c1d                	sub	s0,s0,a5
		in += n;
    e884da7e:	993e                	add	s2,s2,a5
		if (state->buf_used == 16) {
    e884da80:	47c1                	li	a5,16
    e884da82:	00f71a63          	bne	a4,a5,e884da96 <poly1305_update+0x4e>
			_poly1305_update(state, state->buf, 16);
    e884da86:	4641                	li	a2,16
    e884da88:	03848593          	addi	a1,s1,56
    e884da8c:	8526                	mv	a0,s1
    e884da8e:	babff0ef          	jal	ra,e884d638 <_poly1305_update>
			state->buf_used = 0;
    e884da92:	0404b423          	sd	zero,72(s1)
	if (in_len >= 16) {
    e884da96:	47bd                	li	a5,15
    e884da98:	0087fb63          	bgeu	a5,s0,e884daae <poly1305_update+0x66>
		n = in_len & ~((size_t)0xf);
    e884da9c:	ff047993          	andi	s3,s0,-16
		_poly1305_update(state, in, n);
    e884daa0:	85ca                	mv	a1,s2
    e884daa2:	864e                	mv	a2,s3
    e884daa4:	8526                	mv	a0,s1
    e884daa6:	b93ff0ef          	jal	ra,e884d638 <_poly1305_update>
		in += n;
    e884daaa:	994e                	add	s2,s2,s3
		in_len &= 0xf;
    e884daac:	883d                	andi	s0,s0,15
	if (in_len) {
    e884daae:	cc01                	beqz	s0,e884dac6 <poly1305_update+0x7e>
		for (i = 0; i < in_len; i++)
    e884dab0:	4781                	li	a5,0
			state->buf[i] = in[i];
    e884dab2:	03848713          	addi	a4,s1,56
    e884dab6:	80f9468b          	lrbu	a3,s2,a5,0
    e884daba:	00f7568b          	srb	a3,a4,a5,0
		for (i = 0; i < in_len; i++)
    e884dabe:	0785                	addi	a5,a5,1
    e884dac0:	fef41be3          	bne	s0,a5,e884dab6 <poly1305_update+0x6e>
		state->buf_used = in_len;
    e884dac4:	e4a0                	sd	s0,72(s1)
}
    e884dac6:	70a2                	ld	ra,40(sp)
    e884dac8:	6422                	ld	s0,8(sp)
    e884daca:	64c2                	ld	s1,16(sp)
    e884dacc:	6962                	ld	s2,24(sp)
    e884dace:	7982                	ld	s3,32(sp)
    e884dad0:	6145                	addi	sp,sp,48
    e884dad2:	8082                	ret
			state->buf[state->buf_used + i] = in[i];
    e884dad4:	80f9458b          	lrbu	a1,s2,a5,0
    e884dad8:	00f6558b          	srb	a1,a2,a5,0
		for (i = 0; i < n; i++)
    e884dadc:	0785                	addi	a5,a5,1
    e884dade:	bf59                	j	e884da74 <poly1305_update+0x2c>

00000000e884dae0 <poly1305_final>:
{
    e884dae0:	1101                	addi	sp,sp,-32
    e884dae2:	e422                	sd	s0,8(sp)
    e884dae4:	e826                	sd	s1,16(sp)
    e884dae6:	ec06                	sd	ra,24(sp)
	if (state->buf_used)
    e884dae8:	6530                	ld	a2,72(a0)
{
    e884daea:	84aa                	mv	s1,a0
    e884daec:	842e                	mv	s0,a1
	if (state->buf_used)
    e884daee:	c609                	beqz	a2,e884daf8 <poly1305_final+0x18>
		_poly1305_update(state, state->buf, state->buf_used);
    e884daf0:	03850593          	addi	a1,a0,56
    e884daf4:	b45ff0ef          	jal	ra,e884d638 <_poly1305_update>
	                    b = state->h0 >> 26; state->h0 = state->h0 & 0x3ffffff;
    e884daf8:	50d8                	lw	a4,36(s1)
	state->h1 +=     b; b = state->h1 >> 26; state->h1 = state->h1 & 0x3ffffff;
    e884dafa:	5494                	lw	a3,40(s1)
}
    e884dafc:	60e2                	ld	ra,24(sp)
	                    b = state->h0 >> 26; state->h0 = state->h0 & 0x3ffffff;
    e884dafe:	01a7579b          	srliw	a5,a4,0x1a
	state->h1 +=     b; b = state->h1 >> 26; state->h1 = state->h1 & 0x3ffffff;
    e884db02:	9fb5                	addw	a5,a5,a3
	state->h2 +=     b; b = state->h2 >> 26; state->h2 = state->h2 & 0x3ffffff;
    e884db04:	54d4                	lw	a3,44(s1)
	state->h1 +=     b; b = state->h1 >> 26; state->h1 = state->h1 & 0x3ffffff;
    e884db06:	6407be8b          	extu	t4,a5,25,0
    e884db0a:	01a7d79b          	srliw	a5,a5,0x1a
	state->h2 +=     b; b = state->h2 >> 26; state->h2 = state->h2 & 0x3ffffff;
    e884db0e:	9fb5                	addw	a5,a5,a3
	state->h3 +=     b; b = state->h3 >> 26; state->h3 = state->h3 & 0x3ffffff;
    e884db10:	5894                	lw	a3,48(s1)
	state->h2 +=     b; b = state->h2 >> 26; state->h2 = state->h2 & 0x3ffffff;
    e884db12:	6407be0b          	extu	t3,a5,25,0
    e884db16:	01a7d79b          	srliw	a5,a5,0x1a
	state->h3 +=     b; b = state->h3 >> 26; state->h3 = state->h3 & 0x3ffffff;
    e884db1a:	9fb5                	addw	a5,a5,a3
	state->h4 +=     b; b = state->h4 >> 26; state->h4 = state->h4 & 0x3ffffff;
    e884db1c:	58d4                	lw	a3,52(s1)
	state->h3 +=     b; b = state->h3 >> 26; state->h3 = state->h3 & 0x3ffffff;
    e884db1e:	6407b30b          	extu	t1,a5,25,0
    e884db22:	01a7d79b          	srliw	a5,a5,0x1a
	state->h4 +=     b; b = state->h4 >> 26; state->h4 = state->h4 & 0x3ffffff;
    e884db26:	9fb5                	addw	a5,a5,a3
    e884db28:	6407b50b          	extu	a0,a5,25,0
	state->h0 += b * 5;
    e884db2c:	4695                	li	a3,5
	state->h4 +=     b; b = state->h4 >> 26; state->h4 = state->h4 & 0x3ffffff;
    e884db2e:	01a7d79b          	srliw	a5,a5,0x1a
	                    b = state->h0 >> 26; state->h0 = state->h0 & 0x3ffffff;
    e884db32:	6407370b          	extu	a4,a4,25,0
	state->h0 += b * 5;
    e884db36:	24d7970b          	mulaw	a4,a5,a3
	state->h1 +=     b; b = state->h1 >> 26; state->h1 = state->h1 & 0x3ffffff;
    e884db3a:	2e81                	sext.w	t4,t4
	state->h2 +=     b; b = state->h2 >> 26; state->h2 = state->h2 & 0x3ffffff;
    e884db3c:	2e01                	sext.w	t3,t3
	state->h3 +=     b; b = state->h3 >> 26; state->h3 = state->h3 & 0x3ffffff;
    e884db3e:	2301                	sext.w	t1,t1
	state->h4 +=     b; b = state->h4 >> 26; state->h4 = state->h4 & 0x3ffffff;
    e884db40:	2501                	sext.w	a0,a0
	g4 = state->h4 + b - (1 << 26);
    e884db42:	fc0006b7          	lui	a3,0xfc000
    e884db46:	9ea9                	addw	a3,a3,a0
	state->h0 += b * 5;
    e884db48:	87ba                	mv	a5,a4
	g0 = state->h0 + 5; b = g0 >> 26; g0 &= 0x3ffffff;
    e884db4a:	2715                	addiw	a4,a4,5
    e884db4c:	01a7589b          	srliw	a7,a4,0x1a
	g1 = state->h1 + b; b = g1 >> 26; g1 &= 0x3ffffff;
    e884db50:	01d888bb          	addw	a7,a7,t4
    e884db54:	01a8d81b          	srliw	a6,a7,0x1a
	g2 = state->h2 + b; b = g2 >> 26; g2 &= 0x3ffffff;
    e884db58:	01c8083b          	addw	a6,a6,t3
    e884db5c:	01a8559b          	srliw	a1,a6,0x1a
	g3 = state->h3 + b; b = g3 >> 26; g3 &= 0x3ffffff;
    e884db60:	006585bb          	addw	a1,a1,t1
    e884db64:	01a5df1b          	srliw	t5,a1,0x1a
	g4 = state->h4 + b - (1 << 26);
    e884db68:	00df0f3b          	addw	t5,t5,a3
	b = (g4 >> 31) - 1;
    e884db6c:	01ff529b          	srliw	t0,t5,0x1f
    e884db70:	fff28f9b          	addiw	t6,t0,-1
	state->h0 = (state->h0 & nb) | (g0 & b);
    e884db74:	01f77733          	and	a4,a4,t6
    e884db78:	405002bb          	negw	t0,t0
    e884db7c:	6407370b          	extu	a4,a4,25,0
    e884db80:	0057f7b3          	and	a5,a5,t0
	state->h1 = (state->h1 & nb) | (g1 & b);
    e884db84:	01f8f633          	and	a2,a7,t6
	state->h0 = (state->h0 & nb) | (g0 & b);
    e884db88:	8fd9                	or	a5,a5,a4
	state->h1 = (state->h1 & nb) | (g1 & b);
    e884db8a:	6406360b          	extu	a2,a2,25,0
    e884db8e:	005efeb3          	and	t4,t4,t0
    e884db92:	01d66633          	or	a2,a2,t4
	state->h0 = (state->h0 & nb) | (g0 & b);
    e884db96:	0007871b          	sext.w	a4,a5
	f0 = ((state->h0      ) | (state->h1 << 26)) + (uint64_t)U8TO32_LE(&state->key[0]);
    e884db9a:	01a6179b          	slliw	a5,a2,0x1a
	state->h0 = (state->h0 & nb) | (g0 & b);
    e884db9e:	d0d8                	sw	a4,36(s1)
	state->h2 = (state->h2 & nb) | (g2 & b);
    e884dba0:	01f876b3          	and	a3,a6,t6
	f0 = ((state->h0      ) | (state->h1 << 26)) + (uint64_t)U8TO32_LE(&state->key[0]);
    e884dba4:	8f5d                	or	a4,a4,a5
    e884dba6:	0504e783          	lwu	a5,80(s1)
	state->h2 = (state->h2 & nb) | (g2 & b);
    e884dbaa:	6406b68b          	extu	a3,a3,25,0
    e884dbae:	005e7e33          	and	t3,t3,t0
    e884dbb2:	01c6e6b3          	or	a3,a3,t3
	f0 = ((state->h0      ) | (state->h1 << 26)) + (uint64_t)U8TO32_LE(&state->key[0]);
    e884dbb6:	7c07370b          	extu	a4,a4,31,0
	state->h1 = (state->h1 & nb) | (g1 & b);
    e884dbba:	d490                	sw	a2,40(s1)
	f0 = ((state->h0      ) | (state->h1 << 26)) + (uint64_t)U8TO32_LE(&state->key[0]);
    e884dbbc:	973e                	add	a4,a4,a5
	f1 = ((state->h1 >>  6) | (state->h2 << 20)) + (uint64_t)U8TO32_LE(&state->key[4]);
    e884dbbe:	0066579b          	srliw	a5,a2,0x6
    e884dbc2:	0146961b          	slliw	a2,a3,0x14
    e884dbc6:	8fd1                	or	a5,a5,a2
	state->h3 = (state->h3 & nb) | (g3 & b);
    e884dbc8:	01f5f5b3          	and	a1,a1,t6
	f1 = ((state->h1 >>  6) | (state->h2 << 20)) + (uint64_t)U8TO32_LE(&state->key[4]);
    e884dbcc:	0544e603          	lwu	a2,84(s1)
	state->h3 = (state->h3 & nb) | (g3 & b);
    e884dbd0:	6405b58b          	extu	a1,a1,25,0
    e884dbd4:	00537333          	and	t1,t1,t0
    e884dbd8:	0065e5b3          	or	a1,a1,t1
	f1 = ((state->h1 >>  6) | (state->h2 << 20)) + (uint64_t)U8TO32_LE(&state->key[4]);
    e884dbdc:	7c07b78b          	extu	a5,a5,31,0
    e884dbe0:	97b2                	add	a5,a5,a2
	state->h4 = (state->h4 & nb) | (g4 & b);
    e884dbe2:	00557533          	and	a0,a0,t0
	f2 = ((state->h2 >> 12) | (state->h3 << 14)) + (uint64_t)U8TO32_LE(&state->key[8]);
    e884dbe6:	00e5961b          	slliw	a2,a1,0xe
	state->h4 = (state->h4 & nb) | (g4 & b);
    e884dbea:	01ff7f33          	and	t5,t5,t6
	state->h2 = (state->h2 & nb) | (g2 & b);
    e884dbee:	d4d4                	sw	a3,44(s1)
	state->h4 = (state->h4 & nb) | (g4 & b);
    e884dbf0:	01e56533          	or	a0,a0,t5
	f2 = ((state->h2 >> 12) | (state->h3 << 14)) + (uint64_t)U8TO32_LE(&state->key[8]);
    e884dbf4:	00c6d69b          	srliw	a3,a3,0xc
	state->h4 = (state->h4 & nb) | (g4 & b);
    e884dbf8:	2501                	sext.w	a0,a0
	f2 = ((state->h2 >> 12) | (state->h3 << 14)) + (uint64_t)U8TO32_LE(&state->key[8]);
    e884dbfa:	8ed1                	or	a3,a3,a2
    e884dbfc:	0584e603          	lwu	a2,88(s1)
	state->h3 = (state->h3 & nb) | (g3 & b);
    e884dc00:	d88c                	sw	a1,48(s1)
	state->h4 = (state->h4 & nb) | (g4 & b);
    e884dc02:	d8c8                	sw	a0,52(s1)
	f2 = ((state->h2 >> 12) | (state->h3 << 14)) + (uint64_t)U8TO32_LE(&state->key[8]);
    e884dc04:	7c06b68b          	extu	a3,a3,31,0
    e884dc08:	96b2                	add	a3,a3,a2
	f3 = ((state->h3 >> 18) | (state->h4 <<  8)) + (uint64_t)U8TO32_LE(&state->key[12]);
    e884dc0a:	05c4e603          	lwu	a2,92(s1)
	U32TO8_LE(&mac[ 0], f0); f1 += (f0 >> 32);
    e884dc0e:	c018                	sw	a4,0(s0)
    e884dc10:	9301                	srli	a4,a4,0x20
    e884dc12:	97ba                	add	a5,a5,a4
	f3 = ((state->h3 >> 18) | (state->h4 <<  8)) + (uint64_t)U8TO32_LE(&state->key[12]);
    e884dc14:	0125d59b          	srliw	a1,a1,0x12
    e884dc18:	0085151b          	slliw	a0,a0,0x8
	U32TO8_LE(&mac[ 4], f1); f2 += (f1 >> 32);
    e884dc1c:	c05c                	sw	a5,4(s0)
	f3 = ((state->h3 >> 18) | (state->h4 <<  8)) + (uint64_t)U8TO32_LE(&state->key[12]);
    e884dc1e:	8dc9                	or	a1,a1,a0
	U32TO8_LE(&mac[ 4], f1); f2 += (f1 >> 32);
    e884dc20:	9381                	srli	a5,a5,0x20
    e884dc22:	97b6                	add	a5,a5,a3
	f3 = ((state->h3 >> 18) | (state->h4 <<  8)) + (uint64_t)U8TO32_LE(&state->key[12]);
    e884dc24:	7c05b58b          	extu	a1,a1,31,0
	U32TO8_LE(&mac[ 8], f2); f3 += (f2 >> 32);
    e884dc28:	c41c                	sw	a5,8(s0)
	f3 = ((state->h3 >> 18) | (state->h4 <<  8)) + (uint64_t)U8TO32_LE(&state->key[12]);
    e884dc2a:	95b2                	add	a1,a1,a2
	U32TO8_LE(&mac[ 8], f2); f3 += (f2 >> 32);
    e884dc2c:	9381                	srli	a5,a5,0x20
    e884dc2e:	97ae                	add	a5,a5,a1
	U32TO8_LE(&mac[12], f3);
    e884dc30:	c45c                	sw	a5,12(s0)
}
    e884dc32:	6422                	ld	s0,8(sp)
    e884dc34:	64c2                	ld	s1,16(sp)
    e884dc36:	6105                	addi	sp,sp,32
    e884dc38:	8082                	ret

00000000e884dc3a <chacha20_poly1305_init_64x64>:
//===========================================================================================================================
//	chacha20_poly1305_init
//===========================================================================================================================

void	chacha20_poly1305_init_64x64( chacha20_poly1305_state *inState, const uint8_t inKey[ 32 ], const uint8_t inNonce[ 8 ] )
{
    e884dc3a:	715d                	addi	sp,sp,-80
	uint8_t		block[ 64 ];
	
	// Use the first 32 bytes of the keystream as the poly1305 key and discard the remainder of the block.
	// See <https://tools.ietf.org/html/rfc7539> for full documentation on the AEAD construction used here.
	
	chacha20_init_64x64( &inState->chacha20, inKey, inNonce, 0 );
    e884dc3c:	4681                	li	a3,0
{
    e884dc3e:	e486                	sd	ra,72(sp)
    e884dc40:	e0a2                	sd	s0,64(sp)
    e884dc42:	842a                	mv	s0,a0
	chacha20_init_64x64( &inState->chacha20, inKey, inNonce, 0 );
    e884dc44:	bb3ff0ef          	jal	ra,e884d7f6 <chacha20_init_64x64>
	_chacha20_xor( &inState->chacha20, block, kZero64, sizeof( kZero64 ) );
    e884dc48:	858a                	mv	a1,sp
    e884dc4a:	8522                	mv	a0,s0
    e884dc4c:	04000693          	li	a3,64
    e884dc50:	00071617          	auipc	a2,0x71
    e884dc54:	3c060613          	addi	a2,a2,960 # e88bf010 <kZero64>
    e884dc58:	e52ff0ef          	jal	ra,e884d2aa <_chacha20_xor>
	poly1305_init( &inState->poly1305, block );
    e884dc5c:	858a                	mv	a1,sp
    e884dc5e:	08840513          	addi	a0,s0,136
    e884dc62:	d2dff0ef          	jal	ra,e884d98e <poly1305_init>
	inState->aadLen  = 0;
    e884dc66:	0e043423          	sd	zero,232(s0)
	inState->dataLen = 0;
    e884dc6a:	0e043823          	sd	zero,240(s0)
	inState->padded  = false;
    e884dc6e:	0e040c23          	sb	zero,248(s0)
}
    e884dc72:	60a6                	ld	ra,72(sp)
    e884dc74:	6406                	ld	s0,64(sp)
    e884dc76:	6161                	addi	sp,sp,80
    e884dc78:	8082                	ret

00000000e884dc7a <chacha20_poly1305_init_96x32>:

void	chacha20_poly1305_init_96x32( chacha20_poly1305_state *inState, const uint8_t inKey[ 32 ], const uint8_t inNonce[ 12 ] )
{
    e884dc7a:	715d                	addi	sp,sp,-80
	uint8_t		block[ 64 ];
	
	// Use the first 32 bytes of the keystream as the poly1305 key and discard the remainder of the block.
	// See <https://tools.ietf.org/html/rfc7539> for full documentation on the AEAD construction used here.
	
	chacha20_init_96x32( &inState->chacha20, inKey, inNonce, 0 );
    e884dc7c:	4681                	li	a3,0
{
    e884dc7e:	e486                	sd	ra,72(sp)
    e884dc80:	e0a2                	sd	s0,64(sp)
    e884dc82:	842a                	mv	s0,a0
	chacha20_init_96x32( &inState->chacha20, inKey, inNonce, 0 );
    e884dc84:	bc3ff0ef          	jal	ra,e884d846 <chacha20_init_96x32>
	_chacha20_xor( &inState->chacha20, block, kZero64, sizeof( kZero64 ) );
    e884dc88:	858a                	mv	a1,sp
    e884dc8a:	8522                	mv	a0,s0
    e884dc8c:	04000693          	li	a3,64
    e884dc90:	00071617          	auipc	a2,0x71
    e884dc94:	38060613          	addi	a2,a2,896 # e88bf010 <kZero64>
    e884dc98:	e12ff0ef          	jal	ra,e884d2aa <_chacha20_xor>
	poly1305_init( &inState->poly1305, block );
    e884dc9c:	858a                	mv	a1,sp
    e884dc9e:	08840513          	addi	a0,s0,136
    e884dca2:	cedff0ef          	jal	ra,e884d98e <poly1305_init>
	inState->aadLen  = 0;
    e884dca6:	0e043423          	sd	zero,232(s0)
	inState->dataLen = 0;
    e884dcaa:	0e043823          	sd	zero,240(s0)
	inState->padded  = false;
    e884dcae:	0e040c23          	sb	zero,248(s0)
}
    e884dcb2:	60a6                	ld	ra,72(sp)
    e884dcb4:	6406                	ld	s0,64(sp)
    e884dcb6:	6161                	addi	sp,sp,80
    e884dcb8:	8082                	ret

00000000e884dcba <_chacha20_poly1305_encrypt_all>:
		size_t			inAADLen, 
		const void *	inPlaintextPtr, 
		size_t			inPlaintextLen, 
		void *			inCiphertextBuf, 
		uint8_t			outAuthTag[ 16 ] )
{
    e884dcba:	7129                	addi	sp,sp,-320
    e884dcbc:	fa22                	sd	s0,304(sp)
    e884dcbe:	f626                	sd	s1,296(sp)
    e884dcc0:	f24a                	sd	s2,288(sp)
    e884dcc2:	ee4e                	sd	s3,280(sp)
    e884dcc4:	ea52                	sd	s4,272(sp)
    e884dcc6:	fe06                	sd	ra,312(sp)
    e884dcc8:	89be                	mv	s3,a5
	uint8_t * const				ciphertextPtr = (uint8_t *) inCiphertextBuf;
	chacha20_poly1305_state		state;
	size_t						n;
	uint8_t						buf[ 16 ];
	
	if(      inNonceLen == 8 )	chacha20_poly1305_init_64x64( &state, inKey, inNoncePtr );
    e884dcca:	47a1                	li	a5,8
{
    e884dccc:	8a36                	mv	s4,a3
    e884dcce:	84ba                	mv	s1,a4
    e884dcd0:	8442                	mv	s0,a6
    e884dcd2:	8946                	mv	s2,a7
	if(      inNonceLen == 8 )	chacha20_poly1305_init_64x64( &state, inKey, inNoncePtr );
    e884dcd4:	08f61d63          	bne	a2,a5,e884dd6e <_chacha20_poly1305_encrypt_all+0xb4>
    e884dcd8:	862e                	mv	a2,a1
    e884dcda:	85aa                	mv	a1,a0
    e884dcdc:	0808                	addi	a0,sp,16
    e884dcde:	f5dff0ef          	jal	ra,e884dc3a <chacha20_poly1305_init_64x64>
	else if( inNonceLen == 12 )	chacha20_poly1305_init_96x32( &state, inKey, inNoncePtr );
	else { DEBUG_HALT(); }
	
	// Encrypt data.
	
	n = chacha20_update( &state.chacha20, inPlaintextPtr, inPlaintextLen, ciphertextPtr );
    e884dce2:	85ce                	mv	a1,s3
    e884dce4:	86ca                	mv	a3,s2
    e884dce6:	8622                	mv	a2,s0
    e884dce8:	0808                	addi	a0,sp,16
    e884dcea:	bb5ff0ef          	jal	ra,e884d89e <chacha20_update>
	n += chacha20_final( &state.chacha20, &ciphertextPtr[ n ] );
    e884dcee:	00a905b3          	add	a1,s2,a0
    e884dcf2:	0808                	addi	a0,sp,16
    e884dcf4:	c69ff0ef          	jal	ra,e884d95c <chacha20_final>
	check( n == inPlaintextLen );
	
	// Generate auth tag.
	
	if( inAADLen > 0 ) poly1305_update( &state.poly1305, inAADPtr, inAADLen );
    e884dcf8:	00f4f993          	andi	s3,s1,15
    e884dcfc:	c095                	beqz	s1,e884dd20 <_chacha20_poly1305_encrypt_all+0x66>
    e884dcfe:	8626                	mv	a2,s1
    e884dd00:	85d2                	mv	a1,s4
    e884dd02:	0928                	addi	a0,sp,152
    e884dd04:	d45ff0ef          	jal	ra,e884da48 <poly1305_update>
	n = inAADLen & 15;
	if( n > 0 ) poly1305_update( &state.poly1305, kZero64, 16 - n );
    e884dd08:	00098c63          	beqz	s3,e884dd20 <_chacha20_poly1305_encrypt_all+0x66>
    e884dd0c:	4641                	li	a2,16
    e884dd0e:	41360633          	sub	a2,a2,s3
    e884dd12:	00071597          	auipc	a1,0x71
    e884dd16:	2fe58593          	addi	a1,a1,766 # e88bf010 <kZero64>
    e884dd1a:	0928                	addi	a0,sp,152
    e884dd1c:	d2dff0ef          	jal	ra,e884da48 <poly1305_update>
	
	if( inPlaintextLen > 0 ) poly1305_update( &state.poly1305, ciphertextPtr, inPlaintextLen );
    e884dd20:	00f47993          	andi	s3,s0,15
    e884dd24:	c015                	beqz	s0,e884dd48 <_chacha20_poly1305_encrypt_all+0x8e>
    e884dd26:	8622                	mv	a2,s0
    e884dd28:	85ca                	mv	a1,s2
    e884dd2a:	0928                	addi	a0,sp,152
    e884dd2c:	d1dff0ef          	jal	ra,e884da48 <poly1305_update>
	n = inPlaintextLen & 15;
	if( n > 0 ) poly1305_update( &state.poly1305, kZero64, 16 - n );
    e884dd30:	00098c63          	beqz	s3,e884dd48 <_chacha20_poly1305_encrypt_all+0x8e>
    e884dd34:	4641                	li	a2,16
    e884dd36:	41360633          	sub	a2,a2,s3
    e884dd3a:	00071597          	auipc	a1,0x71
    e884dd3e:	2d658593          	addi	a1,a1,726 # e88bf010 <kZero64>
    e884dd42:	0928                	addi	a0,sp,152
    e884dd44:	d05ff0ef          	jal	ra,e884da48 <poly1305_update>
	
	static_analyzer_mem_zeroed( buf, 16 ); // Remove when <radar:15309659> is fixed.
	WriteLittle64( &buf[ 0 ], (uint64_t) inAADLen );
	WriteLittle64( &buf[ 8 ], (uint64_t) inPlaintextLen );
	poly1305_update( &state.poly1305, buf, 16 );
    e884dd48:	858a                	mv	a1,sp
    e884dd4a:	0928                	addi	a0,sp,152
    e884dd4c:	4641                	li	a2,16
	WriteLittle64( &buf[ 8 ], (uint64_t) inPlaintextLen );
    e884dd4e:	f881548b          	sdd	s1,s0,(sp),0,4
	poly1305_update( &state.poly1305, buf, 16 );
    e884dd52:	cf7ff0ef          	jal	ra,e884da48 <poly1305_update>
	poly1305_final( &state.poly1305, outAuthTag );
    e884dd56:	6596                	ld	a1,320(sp)
    e884dd58:	0928                	addi	a0,sp,152
    e884dd5a:	d87ff0ef          	jal	ra,e884dae0 <poly1305_final>
}
    e884dd5e:	7452                	ld	s0,304(sp)
    e884dd60:	70f2                	ld	ra,312(sp)
    e884dd62:	74b2                	ld	s1,296(sp)
    e884dd64:	7912                	ld	s2,288(sp)
    e884dd66:	69f2                	ld	s3,280(sp)
    e884dd68:	6a52                	ld	s4,272(sp)
    e884dd6a:	6131                	addi	sp,sp,320
    e884dd6c:	8082                	ret
	else if( inNonceLen == 12 )	chacha20_poly1305_init_96x32( &state, inKey, inNoncePtr );
    e884dd6e:	47b1                	li	a5,12
    e884dd70:	00f61863          	bne	a2,a5,e884dd80 <_chacha20_poly1305_encrypt_all+0xc6>
    e884dd74:	862e                	mv	a2,a1
    e884dd76:	85aa                	mv	a1,a0
    e884dd78:	0808                	addi	a0,sp,16
    e884dd7a:	f01ff0ef          	jal	ra,e884dc7a <chacha20_poly1305_init_96x32>
    e884dd7e:	b795                	j	e884dce2 <_chacha20_poly1305_encrypt_all+0x28>
	else { DEBUG_HALT(); }
    e884dd80:	9002                	ebreak

00000000e884dd82 <_chacha20_poly1305_decrypt_all>:
		size_t			inAADLen, 
		const void *	inCiphertextPtr, 
		size_t			inCiphertextLen, 
		void *			inPlaintextBuf, 
		const uint8_t	inAuthTag[ 16 ] )
{
    e884dd82:	714d                	addi	sp,sp,-336
    e884dd84:	e2a2                	sd	s0,320(sp)
    e884dd86:	fe26                	sd	s1,312(sp)
    e884dd88:	fa4a                	sd	s2,304(sp)
    e884dd8a:	f64e                	sd	s3,296(sp)
    e884dd8c:	ee56                	sd	s5,280(sp)
    e884dd8e:	e686                	sd	ra,328(sp)
    e884dd90:	f252                	sd	s4,288(sp)
    e884dd92:	89be                	mv	s3,a5
	chacha20_poly1305_state		state;
	uint8_t						buf[ 16 ];
	OSStatus					err;
	size_t						n;
	
	if(      inNonceLen == 8 )	chacha20_poly1305_init_64x64( &state, inKey, inNoncePtr );
    e884dd94:	47a1                	li	a5,8
{
    e884dd96:	8ab6                	mv	s5,a3
    e884dd98:	843a                	mv	s0,a4
    e884dd9a:	84c2                	mv	s1,a6
    e884dd9c:	8946                	mv	s2,a7
	if(      inNonceLen == 8 )	chacha20_poly1305_init_64x64( &state, inKey, inNoncePtr );
    e884dd9e:	0af61d63          	bne	a2,a5,e884de58 <_chacha20_poly1305_decrypt_all+0xd6>
    e884dda2:	862e                	mv	a2,a1
    e884dda4:	85aa                	mv	a1,a0
    e884dda6:	0808                	addi	a0,sp,16
    e884dda8:	e93ff0ef          	jal	ra,e884dc3a <chacha20_poly1305_init_64x64>
	else if( inNonceLen == 12 )	chacha20_poly1305_init_96x32( &state, inKey, inNoncePtr );
	else { DEBUG_HALT(); }
	
	// Verify auth tag.
	
	if( inAADLen > 0 ) poly1305_update( &state.poly1305, inAADPtr, inAADLen );
    e884ddac:	00f47a13          	andi	s4,s0,15
    e884ddb0:	c015                	beqz	s0,e884ddd4 <_chacha20_poly1305_decrypt_all+0x52>
    e884ddb2:	8622                	mv	a2,s0
    e884ddb4:	85d6                	mv	a1,s5
    e884ddb6:	0928                	addi	a0,sp,152
    e884ddb8:	c91ff0ef          	jal	ra,e884da48 <poly1305_update>
	n = inAADLen & 15;
	if( n > 0 ) poly1305_update( &state.poly1305, kZero64, 16 - n );
    e884ddbc:	000a0c63          	beqz	s4,e884ddd4 <_chacha20_poly1305_decrypt_all+0x52>
    e884ddc0:	4641                	li	a2,16
    e884ddc2:	41460633          	sub	a2,a2,s4
    e884ddc6:	00071597          	auipc	a1,0x71
    e884ddca:	24a58593          	addi	a1,a1,586 # e88bf010 <kZero64>
    e884ddce:	0928                	addi	a0,sp,152
    e884ddd0:	c79ff0ef          	jal	ra,e884da48 <poly1305_update>
	
	if( inCiphertextLen > 0 ) poly1305_update( &state.poly1305, inCiphertextPtr, inCiphertextLen );
    e884ddd4:	00f4fa13          	andi	s4,s1,15
    e884ddd8:	c095                	beqz	s1,e884ddfc <_chacha20_poly1305_decrypt_all+0x7a>
    e884ddda:	8626                	mv	a2,s1
    e884dddc:	85ce                	mv	a1,s3
    e884ddde:	0928                	addi	a0,sp,152
    e884dde0:	c69ff0ef          	jal	ra,e884da48 <poly1305_update>
	n = inCiphertextLen & 15;
	if( n > 0 ) poly1305_update( &state.poly1305, kZero64, 16 - n );
    e884dde4:	000a0c63          	beqz	s4,e884ddfc <_chacha20_poly1305_decrypt_all+0x7a>
    e884dde8:	4641                	li	a2,16
    e884ddea:	41460633          	sub	a2,a2,s4
    e884ddee:	00071597          	auipc	a1,0x71
    e884ddf2:	22258593          	addi	a1,a1,546 # e88bf010 <kZero64>
    e884ddf6:	0928                	addi	a0,sp,152
    e884ddf8:	c51ff0ef          	jal	ra,e884da48 <poly1305_update>
	
	static_analyzer_mem_zeroed( buf, 16 ); // Remove when <radar:15309659> is fixed.
	WriteLittle64( &buf[ 0 ], (uint64_t) inAADLen );
	WriteLittle64( &buf[ 8 ], (uint64_t) inCiphertextLen );
	poly1305_update( &state.poly1305, buf, 16 );
    e884ddfc:	4641                	li	a2,16
    e884ddfe:	858a                	mv	a1,sp
    e884de00:	0928                	addi	a0,sp,152
	WriteLittle64( &buf[ 8 ], (uint64_t) inCiphertextLen );
    e884de02:	f891540b          	sdd	s0,s1,(sp),0,4
	poly1305_update( &state.poly1305, buf, 16 );
    e884de06:	c43ff0ef          	jal	ra,e884da48 <poly1305_update>
	int							result = 0;
    e884de0a:	4401                	li	s0,0
	poly1305_final( &state.poly1305, buf );
    e884de0c:	858a                	mv	a1,sp
    e884de0e:	0928                	addi	a0,sp,152
    e884de10:	cd1ff0ef          	jal	ra,e884dae0 <poly1305_final>
	for( i = 0; i < inLen; ++i )
    e884de14:	4781                	li	a5,0
    e884de16:	46c1                	li	a3,16
		result |= ( a[ i ] ^ b[ i ] );
    e884de18:	6656                	ld	a2,336(sp)
    e884de1a:	80f1470b          	lrbu	a4,sp,a5,0
    e884de1e:	80f6460b          	lrbu	a2,a2,a5,0
	for( i = 0; i < inLen; ++i )
    e884de22:	0785                	addi	a5,a5,1
		result |= ( a[ i ] ^ b[ i ] );
    e884de24:	8f31                	xor	a4,a4,a2
    e884de26:	8c59                	or	s0,s0,a4
	for( i = 0; i < inLen; ++i )
    e884de28:	fed798e3          	bne	a5,a3,e884de18 <_chacha20_poly1305_decrypt_all+0x96>
	require_action_quiet( memcmp_constant_time( buf, inAuthTag, 16 ) == 0, exit, err = kAuthenticationErr );
    e884de2c:	e021                	bnez	s0,e884de6c <_chacha20_poly1305_decrypt_all+0xea>
	
	// Decrypt data.
	
	n = chacha20_update( &state.chacha20, inCiphertextPtr, inCiphertextLen, plaintextPtr );
    e884de2e:	85ce                	mv	a1,s3
    e884de30:	86ca                	mv	a3,s2
    e884de32:	8626                	mv	a2,s1
    e884de34:	0808                	addi	a0,sp,16
    e884de36:	a69ff0ef          	jal	ra,e884d89e <chacha20_update>
	n += chacha20_final( &state.chacha20, &plaintextPtr[ n ] );
    e884de3a:	00a905b3          	add	a1,s2,a0
    e884de3e:	0808                	addi	a0,sp,16
    e884de40:	b1dff0ef          	jal	ra,e884d95c <chacha20_final>
	check( n == inCiphertextLen );
	err = kNoErr;
	
exit:
	return( err );
}
    e884de44:	8522                	mv	a0,s0
    e884de46:	60b6                	ld	ra,328(sp)
    e884de48:	6416                	ld	s0,320(sp)
    e884de4a:	74f2                	ld	s1,312(sp)
    e884de4c:	7952                	ld	s2,304(sp)
    e884de4e:	79b2                	ld	s3,296(sp)
    e884de50:	7a12                	ld	s4,288(sp)
    e884de52:	6af2                	ld	s5,280(sp)
    e884de54:	6171                	addi	sp,sp,336
    e884de56:	8082                	ret
	else if( inNonceLen == 12 )	chacha20_poly1305_init_96x32( &state, inKey, inNoncePtr );
    e884de58:	47b1                	li	a5,12
    e884de5a:	00f61863          	bne	a2,a5,e884de6a <_chacha20_poly1305_decrypt_all+0xe8>
    e884de5e:	862e                	mv	a2,a1
    e884de60:	85aa                	mv	a1,a0
    e884de62:	0808                	addi	a0,sp,16
    e884de64:	e17ff0ef          	jal	ra,e884dc7a <chacha20_poly1305_init_96x32>
    e884de68:	b791                	j	e884ddac <_chacha20_poly1305_decrypt_all+0x2a>
	else { DEBUG_HALT(); }
    e884de6a:	9002                	ebreak
	require_action_quiet( memcmp_constant_time( buf, inAuthTag, 16 ) == 0, exit, err = kAuthenticationErr );
    e884de6c:	7479                	lui	s0,0xffffe
    e884de6e:	59e40413          	addi	s0,s0,1438 # ffffffffffffe59e <__DRAM0_INF_BASE+0xffffffff0000e59e>
    e884de72:	bfc9                	j	e884de44 <_chacha20_poly1305_decrypt_all+0xc2>

00000000e884de74 <chacha20_poly1305_add_aad>:
{
    e884de74:	1101                	addi	sp,sp,-32
    e884de76:	e422                	sd	s0,8(sp)
    e884de78:	842a                	mv	s0,a0
	poly1305_update( &inState->poly1305, inSrc, inLen );
    e884de7a:	08850513          	addi	a0,a0,136
{
    e884de7e:	e826                	sd	s1,16(sp)
    e884de80:	ec06                	sd	ra,24(sp)
    e884de82:	84b2                	mv	s1,a2
	poly1305_update( &inState->poly1305, inSrc, inLen );
    e884de84:	bc5ff0ef          	jal	ra,e884da48 <poly1305_update>
	inState->aadLen += inLen;
    e884de88:	7470                	ld	a2,232(s0)
}
    e884de8a:	60e2                	ld	ra,24(sp)
	inState->aadLen += inLen;
    e884de8c:	9626                	add	a2,a2,s1
    e884de8e:	f470                	sd	a2,232(s0)
}
    e884de90:	6422                	ld	s0,8(sp)
    e884de92:	64c2                	ld	s1,16(sp)
    e884de94:	6105                	addi	sp,sp,32
    e884de96:	8082                	ret

00000000e884de98 <chacha20_poly1305_encrypt>:
{
    e884de98:	7179                	addi	sp,sp,-48
    e884de9a:	e422                	sd	s0,8(sp)
    e884de9c:	e826                	sd	s1,16(sp)
    e884de9e:	ec4a                	sd	s2,24(sp)
    e884dea0:	f04e                	sd	s3,32(sp)
    e884dea2:	f406                	sd	ra,40(sp)
	if( !inState->padded )
    e884dea4:	0f854783          	lbu	a5,248(a0)
{
    e884dea8:	842a                	mv	s0,a0
    e884deaa:	84ae                	mv	s1,a1
    e884deac:	89b2                	mv	s3,a2
    e884deae:	8936                	mv	s2,a3
	if( !inState->padded )
    e884deb0:	e38d                	bnez	a5,e884ded2 <chacha20_poly1305_encrypt+0x3a>
		n = inState->aadLen & 15;
    e884deb2:	757c                	ld	a5,232(a0)
    e884deb4:	8bbd                	andi	a5,a5,15
		if( n > 0 ) poly1305_update( &inState->poly1305, kZero64, 16 - n );
    e884deb6:	cb99                	beqz	a5,e884decc <chacha20_poly1305_encrypt+0x34>
    e884deb8:	4641                	li	a2,16
    e884deba:	8e1d                	sub	a2,a2,a5
    e884debc:	00071597          	auipc	a1,0x71
    e884dec0:	15458593          	addi	a1,a1,340 # e88bf010 <kZero64>
    e884dec4:	08850513          	addi	a0,a0,136
    e884dec8:	b81ff0ef          	jal	ra,e884da48 <poly1305_update>
		inState->padded = true;
    e884decc:	4785                	li	a5,1
    e884dece:	0ef40c23          	sb	a5,248(s0)
	n = chacha20_update( &inState->chacha20, inSrc, inLen, inDst );
    e884ded2:	85a6                	mv	a1,s1
    e884ded4:	86ca                	mv	a3,s2
    e884ded6:	864e                	mv	a2,s3
    e884ded8:	8522                	mv	a0,s0
    e884deda:	9c5ff0ef          	jal	ra,e884d89e <chacha20_update>
    e884dede:	84aa                	mv	s1,a0
	if( n )
    e884dee0:	c911                	beqz	a0,e884def4 <chacha20_poly1305_encrypt+0x5c>
		poly1305_update( &inState->poly1305, inDst, n );
    e884dee2:	862a                	mv	a2,a0
    e884dee4:	85ca                	mv	a1,s2
    e884dee6:	08840513          	addi	a0,s0,136
    e884deea:	b5fff0ef          	jal	ra,e884da48 <poly1305_update>
		inState->dataLen += n;
    e884deee:	787c                	ld	a5,240(s0)
    e884def0:	97a6                	add	a5,a5,s1
    e884def2:	f87c                	sd	a5,240(s0)
}
    e884def4:	70a2                	ld	ra,40(sp)
    e884def6:	6422                	ld	s0,8(sp)
    e884def8:	8526                	mv	a0,s1
    e884defa:	6962                	ld	s2,24(sp)
    e884defc:	64c2                	ld	s1,16(sp)
    e884defe:	7982                	ld	s3,32(sp)
    e884df00:	6145                	addi	sp,sp,48
    e884df02:	8082                	ret

00000000e884df04 <chacha20_poly1305_decrypt>:
{
    e884df04:	7139                	addi	sp,sp,-64
    e884df06:	ec22                	sd	s0,24(sp)
    e884df08:	f026                	sd	s1,32(sp)
    e884df0a:	f44a                	sd	s2,40(sp)
    e884df0c:	f84e                	sd	s3,48(sp)
    e884df0e:	fc06                	sd	ra,56(sp)
	if( !inState->padded )
    e884df10:	0f854783          	lbu	a5,248(a0)
{
    e884df14:	842a                	mv	s0,a0
    e884df16:	84ae                	mv	s1,a1
    e884df18:	8932                	mv	s2,a2
    e884df1a:	08850993          	addi	s3,a0,136
	if( !inState->padded )
    e884df1e:	e395                	bnez	a5,e884df42 <chacha20_poly1305_decrypt+0x3e>
		n = inState->aadLen & 15;
    e884df20:	757c                	ld	a5,232(a0)
    e884df22:	8bbd                	andi	a5,a5,15
		if( n > 0 ) poly1305_update( &inState->poly1305, kZero64, 16 - n );
    e884df24:	cf81                	beqz	a5,e884df3c <chacha20_poly1305_decrypt+0x38>
    e884df26:	4641                	li	a2,16
    e884df28:	8e1d                	sub	a2,a2,a5
    e884df2a:	00071597          	auipc	a1,0x71
    e884df2e:	0e658593          	addi	a1,a1,230 # e88bf010 <kZero64>
    e884df32:	854e                	mv	a0,s3
    e884df34:	e436                	sd	a3,8(sp)
    e884df36:	b13ff0ef          	jal	ra,e884da48 <poly1305_update>
    e884df3a:	66a2                	ld	a3,8(sp)
		inState->padded = true;
    e884df3c:	4785                	li	a5,1
    e884df3e:	0ef40c23          	sb	a5,248(s0)
	poly1305_update( &inState->poly1305, inSrc, inLen );
    e884df42:	864a                	mv	a2,s2
    e884df44:	85a6                	mv	a1,s1
    e884df46:	854e                	mv	a0,s3
    e884df48:	e436                	sd	a3,8(sp)
    e884df4a:	affff0ef          	jal	ra,e884da48 <poly1305_update>
	n = chacha20_update( &inState->chacha20, inSrc, inLen, inDst );
    e884df4e:	66a2                	ld	a3,8(sp)
    e884df50:	864a                	mv	a2,s2
    e884df52:	85a6                	mv	a1,s1
    e884df54:	8522                	mv	a0,s0
    e884df56:	949ff0ef          	jal	ra,e884d89e <chacha20_update>
}
    e884df5a:	7482                	ld	s1,32(sp)
	inState->dataLen += n;
    e884df5c:	787c                	ld	a5,240(s0)
}
    e884df5e:	70e2                	ld	ra,56(sp)
    e884df60:	7922                	ld	s2,40(sp)
	inState->dataLen += n;
    e884df62:	97aa                	add	a5,a5,a0
    e884df64:	f87c                	sd	a5,240(s0)
}
    e884df66:	6462                	ld	s0,24(sp)
    e884df68:	79c2                	ld	s3,48(sp)
    e884df6a:	6121                	addi	sp,sp,64
    e884df6c:	8082                	ret

00000000e884df6e <chacha20_poly1305_final>:
{
    e884df6e:	7139                	addi	sp,sp,-64
    e884df70:	fa91540b          	sdd	s0,s1,(sp),1,4
    e884df74:	fd31590b          	sdd	s2,s3,(sp),2,4
    e884df78:	f852                	sd	s4,48(sp)
    e884df7a:	fc06                	sd	ra,56(sp)
	if( !inState->padded )
    e884df7c:	0f854783          	lbu	a5,248(a0)
{
    e884df80:	842a                	mv	s0,a0
    e884df82:	89ae                	mv	s3,a1
    e884df84:	8a32                	mv	s4,a2
    e884df86:	08850493          	addi	s1,a0,136
	if( !inState->padded )
    e884df8a:	ef89                	bnez	a5,e884dfa4 <chacha20_poly1305_final+0x36>
		n = inState->aadLen & 15;
    e884df8c:	757c                	ld	a5,232(a0)
    e884df8e:	8bbd                	andi	a5,a5,15
		if( n > 0 ) poly1305_update( &inState->poly1305, kZero64, 16 - n );
    e884df90:	cb91                	beqz	a5,e884dfa4 <chacha20_poly1305_final+0x36>
    e884df92:	4641                	li	a2,16
    e884df94:	8e1d                	sub	a2,a2,a5
    e884df96:	00071597          	auipc	a1,0x71
    e884df9a:	07a58593          	addi	a1,a1,122 # e88bf010 <kZero64>
    e884df9e:	8526                	mv	a0,s1
    e884dfa0:	aa9ff0ef          	jal	ra,e884da48 <poly1305_update>
	nFinal = chacha20_final( &inState->chacha20, inDst );
    e884dfa4:	85ce                	mv	a1,s3
    e884dfa6:	8522                	mv	a0,s0
    e884dfa8:	9b5ff0ef          	jal	ra,e884d95c <chacha20_final>
    e884dfac:	892a                	mv	s2,a0
	if( nFinal > 0 )
    e884dfae:	c909                	beqz	a0,e884dfc0 <chacha20_poly1305_final+0x52>
		poly1305_update( &inState->poly1305, inDst, nFinal );
    e884dfb0:	862a                	mv	a2,a0
    e884dfb2:	85ce                	mv	a1,s3
    e884dfb4:	8526                	mv	a0,s1
    e884dfb6:	a93ff0ef          	jal	ra,e884da48 <poly1305_update>
		inState->dataLen += nFinal;
    e884dfba:	787c                	ld	a5,240(s0)
    e884dfbc:	97ca                	add	a5,a5,s2
    e884dfbe:	f87c                	sd	a5,240(s0)
	n = inState->dataLen & 15;
    e884dfc0:	787c                	ld	a5,240(s0)
    e884dfc2:	8bbd                	andi	a5,a5,15
	if( n > 0 ) poly1305_update( &inState->poly1305, kZero64, 16 - n );
    e884dfc4:	cb91                	beqz	a5,e884dfd8 <chacha20_poly1305_final+0x6a>
    e884dfc6:	4641                	li	a2,16
    e884dfc8:	8e1d                	sub	a2,a2,a5
    e884dfca:	00071597          	auipc	a1,0x71
    e884dfce:	04658593          	addi	a1,a1,70 # e88bf010 <kZero64>
    e884dfd2:	8526                	mv	a0,s1
    e884dfd4:	a75ff0ef          	jal	ra,e884da48 <poly1305_update>
	WriteLittle64( &buf[ 0 ], (uint64_t) inState->aadLen );
    e884dfd8:	747c                	ld	a5,232(s0)
	poly1305_update( &inState->poly1305, buf, 16 );
    e884dfda:	858a                	mv	a1,sp
    e884dfdc:	8526                	mv	a0,s1
	WriteLittle64( &buf[ 0 ], (uint64_t) inState->aadLen );
    e884dfde:	e03e                	sd	a5,0(sp)
	WriteLittle64( &buf[ 8 ], (uint64_t) inState->dataLen );
    e884dfe0:	787c                	ld	a5,240(s0)
	poly1305_update( &inState->poly1305, buf, 16 );
    e884dfe2:	4641                	li	a2,16
	WriteLittle64( &buf[ 8 ], (uint64_t) inState->dataLen );
    e884dfe4:	e43e                	sd	a5,8(sp)
	poly1305_update( &inState->poly1305, buf, 16 );
    e884dfe6:	a63ff0ef          	jal	ra,e884da48 <poly1305_update>
	poly1305_final( &inState->poly1305, outAuthTag );
    e884dfea:	8526                	mv	a0,s1
    e884dfec:	85d2                	mv	a1,s4
    e884dfee:	af3ff0ef          	jal	ra,e884dae0 <poly1305_final>
}
    e884dff2:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884dff6:	70e2                	ld	ra,56(sp)
    e884dff8:	854a                	mv	a0,s2
    e884dffa:	7a42                	ld	s4,48(sp)
    e884dffc:	fd31490b          	ldd	s2,s3,(sp),2,4
    e884e000:	6121                	addi	sp,sp,64
    e884e002:	8082                	ret

00000000e884e004 <chacha20_poly1305_verify>:
{
    e884e004:	7139                	addi	sp,sp,-64
    e884e006:	fa91540b          	sdd	s0,s1,(sp),1,4
    e884e00a:	fd31590b          	sdd	s2,s3,(sp),2,4
    e884e00e:	f852                	sd	s4,48(sp)
    e884e010:	fc06                	sd	ra,56(sp)
	if( !inState->padded )
    e884e012:	0f854783          	lbu	a5,248(a0)
{
    e884e016:	842a                	mv	s0,a0
    e884e018:	892e                	mv	s2,a1
    e884e01a:	8a32                	mv	s4,a2
    e884e01c:	89b6                	mv	s3,a3
    e884e01e:	08850493          	addi	s1,a0,136
	if( !inState->padded )
    e884e022:	ef89                	bnez	a5,e884e03c <chacha20_poly1305_verify+0x38>
		n = inState->aadLen & 15;
    e884e024:	757c                	ld	a5,232(a0)
    e884e026:	8bbd                	andi	a5,a5,15
		if( n > 0 ) poly1305_update( &inState->poly1305, kZero64, 16 - n );
    e884e028:	cb91                	beqz	a5,e884e03c <chacha20_poly1305_verify+0x38>
    e884e02a:	4641                	li	a2,16
    e884e02c:	8e1d                	sub	a2,a2,a5
    e884e02e:	00071597          	auipc	a1,0x71
    e884e032:	fe258593          	addi	a1,a1,-30 # e88bf010 <kZero64>
    e884e036:	8526                	mv	a0,s1
    e884e038:	a11ff0ef          	jal	ra,e884da48 <poly1305_update>
	nFinal = chacha20_final( &inState->chacha20, inDst );
    e884e03c:	85ca                	mv	a1,s2
    e884e03e:	8522                	mv	a0,s0
    e884e040:	91dff0ef          	jal	ra,e884d95c <chacha20_final>
    e884e044:	892a                	mv	s2,a0
	if( nFinal > 0 ) inState->dataLen += nFinal;
    e884e046:	c501                	beqz	a0,e884e04e <chacha20_poly1305_verify+0x4a>
    e884e048:	787c                	ld	a5,240(s0)
    e884e04a:	97aa                	add	a5,a5,a0
    e884e04c:	f87c                	sd	a5,240(s0)
	n = inState->dataLen & 15;
    e884e04e:	787c                	ld	a5,240(s0)
    e884e050:	8bbd                	andi	a5,a5,15
	if( n > 0 ) poly1305_update( &inState->poly1305, kZero64, 16 - n );
    e884e052:	cb91                	beqz	a5,e884e066 <chacha20_poly1305_verify+0x62>
    e884e054:	4641                	li	a2,16
    e884e056:	8e1d                	sub	a2,a2,a5
    e884e058:	00071597          	auipc	a1,0x71
    e884e05c:	fb858593          	addi	a1,a1,-72 # e88bf010 <kZero64>
    e884e060:	8526                	mv	a0,s1
    e884e062:	9e7ff0ef          	jal	ra,e884da48 <poly1305_update>
	WriteLittle64( &buf[ 0 ], (uint64_t) inState->aadLen );
    e884e066:	747c                	ld	a5,232(s0)
	poly1305_update( &inState->poly1305, buf, 16 );
    e884e068:	4641                	li	a2,16
    e884e06a:	858a                	mv	a1,sp
	WriteLittle64( &buf[ 0 ], (uint64_t) inState->aadLen );
    e884e06c:	e03e                	sd	a5,0(sp)
	WriteLittle64( &buf[ 8 ], (uint64_t) inState->dataLen );
    e884e06e:	787c                	ld	a5,240(s0)
	poly1305_update( &inState->poly1305, buf, 16 );
    e884e070:	8526                	mv	a0,s1
	WriteLittle64( &buf[ 8 ], (uint64_t) inState->dataLen );
    e884e072:	e43e                	sd	a5,8(sp)
	poly1305_update( &inState->poly1305, buf, 16 );
    e884e074:	9d5ff0ef          	jal	ra,e884da48 <poly1305_update>
	poly1305_final( &inState->poly1305, buf );
    e884e078:	858a                	mv	a1,sp
    e884e07a:	8526                	mv	a0,s1
    e884e07c:	a65ff0ef          	jal	ra,e884dae0 <poly1305_final>
	int							result = 0;
    e884e080:	4781                	li	a5,0
	for( i = 0; i < inLen; ++i )
    e884e082:	4701                	li	a4,0
    e884e084:	4641                	li	a2,16
		result |= ( a[ i ] ^ b[ i ] );
    e884e086:	80e1468b          	lrbu	a3,sp,a4,0
    e884e08a:	80ea458b          	lrbu	a1,s4,a4,0
	for( i = 0; i < inLen; ++i )
    e884e08e:	0705                	addi	a4,a4,1
		result |= ( a[ i ] ^ b[ i ] );
    e884e090:	8ead                	xor	a3,a3,a1
    e884e092:	8fd5                	or	a5,a5,a3
	for( i = 0; i < inLen; ++i )
    e884e094:	fec719e3          	bne	a4,a2,e884e086 <chacha20_poly1305_verify+0x82>
	*outErr = ( memcmp_constant_time( buf, inAuthTag, 16 ) == 0 ) ? kNoErr : kAuthenticationErr;
    e884e098:	c781                	beqz	a5,e884e0a0 <chacha20_poly1305_verify+0x9c>
    e884e09a:	77f9                	lui	a5,0xffffe
    e884e09c:	59e78793          	addi	a5,a5,1438 # ffffffffffffe59e <__DRAM0_INF_BASE+0xffffffff0000e59e>
}
    e884e0a0:	70e2                	ld	ra,56(sp)
    e884e0a2:	fa91440b          	ldd	s0,s1,(sp),1,4
	*outErr = ( memcmp_constant_time( buf, inAuthTag, 16 ) == 0 ) ? kNoErr : kAuthenticationErr;
    e884e0a6:	00f9a023          	sw	a5,0(s3)
}
    e884e0aa:	854a                	mv	a0,s2
    e884e0ac:	7a42                	ld	s4,48(sp)
    e884e0ae:	fd31490b          	ldd	s2,s3,(sp),2,4
    e884e0b2:	6121                	addi	sp,sp,64
    e884e0b4:	8082                	ret

00000000e884e0b6 <chacha20_poly1305_encrypt_all_64x64>:
{
    e884e0b6:	1101                	addi	sp,sp,-32
	_chacha20_poly1305_encrypt_all( inKey, inNonce, 8, inAADPtr, inAADLen, inPlaintextPtr, inPlaintextLen, 
    e884e0b8:	e046                	sd	a7,0(sp)
    e884e0ba:	88c2                	mv	a7,a6
    e884e0bc:	883e                	mv	a6,a5
    e884e0be:	87ba                	mv	a5,a4
    e884e0c0:	8736                	mv	a4,a3
    e884e0c2:	86b2                	mv	a3,a2
    e884e0c4:	4621                	li	a2,8
{
    e884e0c6:	ec06                	sd	ra,24(sp)
	_chacha20_poly1305_encrypt_all( inKey, inNonce, 8, inAADPtr, inAADLen, inPlaintextPtr, inPlaintextLen, 
    e884e0c8:	bf3ff0ef          	jal	ra,e884dcba <_chacha20_poly1305_encrypt_all>
}
    e884e0cc:	60e2                	ld	ra,24(sp)
    e884e0ce:	6105                	addi	sp,sp,32
    e884e0d0:	8082                	ret

00000000e884e0d2 <chacha20_poly1305_decrypt_all_64x64>:
{
    e884e0d2:	1101                	addi	sp,sp,-32
	return( _chacha20_poly1305_decrypt_all( inKey, inNonce, 8, inAADPtr, inAADLen, inCiphertextPtr, inCiphertextLen, 
    e884e0d4:	e046                	sd	a7,0(sp)
    e884e0d6:	88c2                	mv	a7,a6
    e884e0d8:	883e                	mv	a6,a5
    e884e0da:	87ba                	mv	a5,a4
    e884e0dc:	8736                	mv	a4,a3
    e884e0de:	86b2                	mv	a3,a2
    e884e0e0:	4621                	li	a2,8
{
    e884e0e2:	ec06                	sd	ra,24(sp)
	return( _chacha20_poly1305_decrypt_all( inKey, inNonce, 8, inAADPtr, inAADLen, inCiphertextPtr, inCiphertextLen, 
    e884e0e4:	c9fff0ef          	jal	ra,e884dd82 <_chacha20_poly1305_decrypt_all>
}
    e884e0e8:	60e2                	ld	ra,24(sp)
    e884e0ea:	6105                	addi	sp,sp,32
    e884e0ec:	8082                	ret

00000000e884e0ee <DataBuffer_Init>:
//===========================================================================================================================

void	DataBuffer_Init( DataBuffer *inDB, void *inStaticBufferPtr, size_t inStaticBufferLen, size_t inMaxGrowLen )
{
	inDB->staticBufferPtr	= (uint8_t *) inStaticBufferPtr;
	inDB->staticBufferLen	= inStaticBufferLen;
    e884e0ee:	f8c5558b          	sdd	a1,a2,(a0),0,4
	inDB->maxGrowLen		= inMaxGrowLen;
	inDB->bufferPtr			= (uint8_t *) inStaticBufferPtr;
    e884e0f2:	fab5568b          	sdd	a3,a1,(a0),1,4
	inDB->bufferLen			= 0;
    e884e0f6:	02053023          	sd	zero,32(a0)
	inDB->bufferMaxLen		= inStaticBufferLen;
    e884e0fa:	f510                	sd	a2,40(a0)
	inDB->malloced			= 0;
    e884e0fc:	02050823          	sb	zero,48(a0)
	inDB->firstErr			= kNoErr;
    e884e100:	02052a23          	sw	zero,52(a0)
}
    e884e104:	8082                	ret

00000000e884e106 <DataBuffer_Free>:
//===========================================================================================================================
//	DataBuffer_Free
//===========================================================================================================================

void	DataBuffer_Free( DataBuffer *inDB )
{
    e884e106:	1141                	addi	sp,sp,-16
    e884e108:	e022                	sd	s0,0(sp)
    e884e10a:	e406                	sd	ra,8(sp)
	if( inDB->malloced && inDB->bufferPtr )
    e884e10c:	03054783          	lbu	a5,48(a0)
{
    e884e110:	842a                	mv	s0,a0
	if( inDB->malloced && inDB->bufferPtr )
    e884e112:	c789                	beqz	a5,e884e11c <DataBuffer_Free+0x16>
    e884e114:	6d08                	ld	a0,24(a0)
    e884e116:	c119                	beqz	a0,e884e11c <DataBuffer_Free+0x16>
	{
		free_compat( inDB->bufferPtr );
    e884e118:	1e82e0ef          	jal	ra,e887c300 <eLIBs_free>
	}
	inDB->bufferPtr		= inDB->staticBufferPtr;
    e884e11c:	601c                	ld	a5,0(s0)
	inDB->bufferLen		= 0;
    e884e11e:	02043023          	sd	zero,32(s0)
	inDB->bufferMaxLen	= inDB->staticBufferLen;
	inDB->malloced		= 0;
    e884e122:	02040823          	sb	zero,48(s0)
	inDB->bufferPtr		= inDB->staticBufferPtr;
    e884e126:	ec1c                	sd	a5,24(s0)
	inDB->bufferMaxLen	= inDB->staticBufferLen;
    e884e128:	641c                	ld	a5,8(s0)
	inDB->firstErr		= kNoErr;
    e884e12a:	02042a23          	sw	zero,52(s0)
}
    e884e12e:	60a2                	ld	ra,8(sp)
	inDB->bufferMaxLen	= inDB->staticBufferLen;
    e884e130:	f41c                	sd	a5,40(s0)
}
    e884e132:	6402                	ld	s0,0(sp)
    e884e134:	0141                	addi	sp,sp,16
    e884e136:	8082                	ret

00000000e884e138 <DataBuffer_Detach>:
//===========================================================================================================================
//	DataBuffer_Detach
//===========================================================================================================================

OSStatus	DataBuffer_Detach( DataBuffer *inDB, uint8_t **outPtr, size_t *outLen )
{
    e884e138:	7179                	addi	sp,sp,-48
    e884e13a:	f891540b          	sdd	s0,s1,(sp),0,4
    e884e13e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e884e142:	f052                	sd	s4,32(sp)
    e884e144:	f406                	sd	ra,40(sp)
	OSStatus		err;
	uint8_t *		ptr;
	size_t			len;
	
	len = inDB->bufferLen;
	if( inDB->malloced )
    e884e146:	03054783          	lbu	a5,48(a0)
{
    e884e14a:	842a                	mv	s0,a0
    e884e14c:	8a2e                	mv	s4,a1
    e884e14e:	89b2                	mv	s3,a2
	len = inDB->bufferLen;
    e884e150:	7104                	ld	s1,32(a0)
	if( inDB->malloced )
    e884e152:	cb95                	beqz	a5,e884e186 <DataBuffer_Detach+0x4e>
	{
		check( inDB->bufferPtr || ( len == 0 ) );
		ptr = inDB->bufferPtr;
    e884e154:	01853903          	ld	s2,24(a0)
		ptr = (uint8_t *) malloc_compat( ( len > 0 ) ? len : 1 ); // malloc( 0 ) is undefined so use at least 1.
		require_action( ptr, exit, err = kNoMemoryErr );
		
		if( len > 0 ) memcpy( ptr, inDB->bufferPtr, len );
	}
	inDB->bufferPtr		= inDB->staticBufferPtr;
    e884e158:	601c                	ld	a5,0(s0)
	inDB->bufferLen		= 0;
    e884e15a:	02043023          	sd	zero,32(s0)
	inDB->bufferMaxLen	= inDB->staticBufferLen;
	inDB->malloced		= 0;
    e884e15e:	02040823          	sb	zero,48(s0)
	inDB->bufferPtr		= inDB->staticBufferPtr;
    e884e162:	ec1c                	sd	a5,24(s0)
	inDB->bufferMaxLen	= inDB->staticBufferLen;
    e884e164:	641c                	ld	a5,8(s0)
	inDB->firstErr		= kNoErr;
    e884e166:	02042a23          	sw	zero,52(s0)
	
	*outPtr = ptr;
	*outLen = len;
	err = kNoErr;
    e884e16a:	4501                	li	a0,0
	inDB->bufferMaxLen	= inDB->staticBufferLen;
    e884e16c:	f41c                	sd	a5,40(s0)
	*outPtr = ptr;
    e884e16e:	012a3023          	sd	s2,0(s4)
	*outLen = len;
    e884e172:	0099b023          	sd	s1,0(s3)
	
exit:
	return( err );
}
    e884e176:	70a2                	ld	ra,40(sp)
    e884e178:	f891440b          	ldd	s0,s1,(sp),0,4
    e884e17c:	7a02                	ld	s4,32(sp)
    e884e17e:	fb31490b          	ldd	s2,s3,(sp),1,4
    e884e182:	6145                	addi	sp,sp,48
    e884e184:	8082                	ret
		ptr = (uint8_t *) malloc_compat( ( len > 0 ) ? len : 1 ); // malloc( 0 ) is undefined so use at least 1.
    e884e186:	8526                	mv	a0,s1
    e884e188:	e091                	bnez	s1,e884e18c <DataBuffer_Detach+0x54>
    e884e18a:	4505                	li	a0,1
    e884e18c:	6c22d0ef          	jal	ra,e887b84e <my_malloc>
    e884e190:	892a                	mv	s2,a0
		require_action( ptr, exit, err = kNoMemoryErr );
    e884e192:	c519                	beqz	a0,e884e1a0 <DataBuffer_Detach+0x68>
		if( len > 0 ) memcpy( ptr, inDB->bufferPtr, len );
    e884e194:	d0f1                	beqz	s1,e884e158 <DataBuffer_Detach+0x20>
    e884e196:	6c0c                	ld	a1,24(s0)
    e884e198:	8626                	mv	a2,s1
    e884e19a:	2062e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e884e19e:	bf6d                	j	e884e158 <DataBuffer_Detach+0x20>
		require_action( ptr, exit, err = kNoMemoryErr );
    e884e1a0:	7579                	lui	a0,0xffffe
    e884e1a2:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884e1a6:	bfc1                	j	e884e176 <DataBuffer_Detach+0x3e>

00000000e884e1a8 <DataBuffer_Resize>:
//===========================================================================================================================
//	DataBuffer_Resize
//===========================================================================================================================

OSStatus	DataBuffer_Resize( DataBuffer *inDB, size_t inNewLen, void *outPtr )
{
    e884e1a8:	7139                	addi	sp,sp,-64
    e884e1aa:	f891540b          	sdd	s0,s1,(sp),0,4
    e884e1ae:	fb31590b          	sdd	s2,s3,(sp),1,4
    e884e1b2:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e884e1b6:	fc06                	sd	ra,56(sp)
    e884e1b8:	f85a                	sd	s6,48(sp)
	OSStatus		err;
	size_t			oldLen;
	size_t			newMaxLen;
	uint8_t *		newPtr;
		
	err = inDB->firstErr;
    e884e1ba:	03452a83          	lw	s5,52(a0)
	require_noerr( err, exit2 );
    e884e1be:	080a9263          	bnez	s5,e884e242 <DataBuffer_Resize+0x9a>
	
	// Grow or shink as needed. If growing larger than the max size of the current buffer, reallocate.
	
	oldLen = inDB->bufferLen;
    e884e1c2:	02053983          	ld	s3,32(a0)
	if( inNewLen > oldLen )
    e884e1c6:	08b9ff63          	bgeu	s3,a1,e884e264 <DataBuffer_Resize+0xbc>
	{
		if( inNewLen > inDB->bufferMaxLen )
    e884e1ca:	751c                	ld	a5,40(a0)
    e884e1cc:	8a32                	mv	s4,a2
    e884e1ce:	892e                	mv	s2,a1
    e884e1d0:	84aa                	mv	s1,a0
    e884e1d2:	06b7f063          	bgeu	a5,a1,e884e232 <DataBuffer_Resize+0x8a>
		{
			require_action( inNewLen <= inDB->maxGrowLen, exit, err = kOverrunErr );
    e884e1d6:	691c                	ld	a5,16(a0)
    e884e1d8:	08b7eb63          	bltu	a5,a1,e884e26e <DataBuffer_Resize+0xc6>
			
			if(      inNewLen <    256 ) newMaxLen = 256;
    e884e1dc:	0ff00793          	li	a5,255
    e884e1e0:	10000413          	li	s0,256
    e884e1e4:	02b7f063          	bgeu	a5,a1,e884e204 <DataBuffer_Resize+0x5c>
			else if( inNewLen <   4096 ) newMaxLen = 4096;
    e884e1e8:	6405                	lui	s0,0x1
    e884e1ea:	0085ed63          	bltu	a1,s0,e884e204 <DataBuffer_Resize+0x5c>
			else if( inNewLen < 131072 ) newMaxLen = AlignUp( inNewLen, 16384U );
    e884e1ee:	00020437          	lui	s0,0x20
    e884e1f2:	0685f363          	bgeu	a1,s0,e884e258 <DataBuffer_Resize+0xb0>
    e884e1f6:	6411                	lui	s0,0x4
    e884e1f8:	147d                	addi	s0,s0,-1
    e884e1fa:	3ffff7b7          	lui	a5,0x3ffff
    e884e1fe:	942e                	add	s0,s0,a1
    e884e200:	078a                	slli	a5,a5,0x2
			else						 newMaxLen = AlignUp( inNewLen, 131072U );
    e884e202:	8c7d                	and	s0,s0,a5
			
			newPtr = (uint8_t *) malloc_compat( newMaxLen );
    e884e204:	8522                	mv	a0,s0
    e884e206:	6482d0ef          	jal	ra,e887b84e <my_malloc>
    e884e20a:	8b2a                	mv	s6,a0
			require_action( newPtr, exit, err = kNoMemoryErr );
    e884e20c:	c53d                	beqz	a0,e884e27a <DataBuffer_Resize+0xd2>
			
			if( inDB->bufferLen > 0 )
    e884e20e:	7090                	ld	a2,32(s1)
    e884e210:	c601                	beqz	a2,e884e218 <DataBuffer_Resize+0x70>
			{
				memcpy( newPtr, inDB->bufferPtr, inDB->bufferLen );
    e884e212:	6c8c                	ld	a1,24(s1)
    e884e214:	18c2e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			}
			if( inDB->malloced && inDB->bufferPtr )
    e884e218:	0304c783          	lbu	a5,48(s1)
    e884e21c:	c789                	beqz	a5,e884e226 <DataBuffer_Resize+0x7e>
    e884e21e:	6c88                	ld	a0,24(s1)
    e884e220:	c119                	beqz	a0,e884e226 <DataBuffer_Resize+0x7e>
			{
				free_compat( inDB->bufferPtr );
    e884e222:	0de2e0ef          	jal	ra,e887c300 <eLIBs_free>
			}
			inDB->bufferMaxLen	= newMaxLen;
			inDB->bufferPtr		= newPtr;
			inDB->malloced		= 1;
    e884e226:	4785                	li	a5,1
			inDB->bufferMaxLen	= newMaxLen;
    e884e228:	f480                	sd	s0,40(s1)
			inDB->bufferPtr		= newPtr;
    e884e22a:	0164bc23          	sd	s6,24(s1)
			inDB->malloced		= 1;
    e884e22e:	02f48823          	sb	a5,48(s1)
		}
		inDB->bufferLen = inNewLen;
    e884e232:	0324b023          	sd	s2,32(s1)
		if( outPtr ) *( (void **) outPtr ) = inDB->bufferPtr + oldLen;
    e884e236:	000a0663          	beqz	s4,e884e242 <DataBuffer_Resize+0x9a>
    e884e23a:	6c9c                	ld	a5,24(s1)
    e884e23c:	99be                	add	s3,s3,a5
    e884e23e:	013a3023          	sd	s3,0(s4)
exit:
	inDB->firstErr = err;
	
exit2:
	return( err );
}
    e884e242:	70e2                	ld	ra,56(sp)
    e884e244:	f891440b          	ldd	s0,s1,(sp),0,4
    e884e248:	8556                	mv	a0,s5
    e884e24a:	7b42                	ld	s6,48(sp)
    e884e24c:	fb31490b          	ldd	s2,s3,(sp),1,4
    e884e250:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e884e254:	6121                	addi	sp,sp,64
    e884e256:	8082                	ret
			else						 newMaxLen = AlignUp( inNewLen, 131072U );
    e884e258:	147d                	addi	s0,s0,-1
    e884e25a:	07fff7b7          	lui	a5,0x7fff
    e884e25e:	942e                	add	s0,s0,a1
    e884e260:	0796                	slli	a5,a5,0x5
    e884e262:	b745                	j	e884e202 <DataBuffer_Resize+0x5a>
		inDB->bufferLen = inNewLen;
    e884e264:	f10c                	sd	a1,32(a0)
		if( outPtr ) *( (void **) outPtr ) = inDB->bufferPtr;
    e884e266:	de71                	beqz	a2,e884e242 <DataBuffer_Resize+0x9a>
    e884e268:	6d1c                	ld	a5,24(a0)
    e884e26a:	e21c                	sd	a5,0(a2)
    e884e26c:	bfd9                	j	e884e242 <DataBuffer_Resize+0x9a>
			require_action( inNewLen <= inDB->maxGrowLen, exit, err = kOverrunErr );
    e884e26e:	7af9                	lui	s5,0xffffe
    e884e270:	5a1a8a93          	addi	s5,s5,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
	inDB->firstErr = err;
    e884e274:	0354aa23          	sw	s5,52(s1)
    e884e278:	b7e9                	j	e884e242 <DataBuffer_Resize+0x9a>
			require_action( newPtr, exit, err = kNoMemoryErr );
    e884e27a:	7af9                	lui	s5,0xffffe
    e884e27c:	5b8a8a93          	addi	s5,s5,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884e280:	bfd5                	j	e884e274 <DataBuffer_Resize+0xcc>

00000000e884e282 <DataBuffer_Append>:
//===========================================================================================================================
//	DataBuffer_Append
//===========================================================================================================================

OSStatus	DataBuffer_Append( DataBuffer *inDB, const void *inData, size_t inLen )
{
    e884e282:	7179                	addi	sp,sp,-48
    e884e284:	fa91540b          	sdd	s0,s1,(sp),1,4
    e884e288:	f04a                	sd	s2,32(sp)
    e884e28a:	f406                	sd	ra,40(sp)
	OSStatus		err;
	uint8_t *		ptr;
	
	if( inLen == kSizeCString ) inLen = strlen( (const char *) inData );
    e884e28c:	57fd                	li	a5,-1
{
    e884e28e:	84aa                	mv	s1,a0
    e884e290:	892e                	mv	s2,a1
    e884e292:	8432                	mv	s0,a2
	if( inLen == kSizeCString ) inLen = strlen( (const char *) inData );
    e884e294:	00f61763          	bne	a2,a5,e884e2a2 <DataBuffer_Append+0x20>
    e884e298:	852e                	mv	a0,a1
    e884e29a:	07e2e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e884e29e:	7c05340b          	extu	s0,a0,31,0
	err = DataBuffer_Grow( inDB, inLen, &ptr );
    e884e2a2:	708c                	ld	a1,32(s1)
    e884e2a4:	8526                	mv	a0,s1
    e884e2a6:	0030                	addi	a2,sp,8
    e884e2a8:	95a2                	add	a1,a1,s0
    e884e2aa:	effff0ef          	jal	ra,e884e1a8 <DataBuffer_Resize>
    e884e2ae:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e884e2b0:	e511                	bnez	a0,e884e2bc <DataBuffer_Append+0x3a>
	
	memcpy( ptr, inData, inLen );
    e884e2b2:	6522                	ld	a0,8(sp)
    e884e2b4:	8622                	mv	a2,s0
    e884e2b6:	85ca                	mv	a1,s2
    e884e2b8:	0e82e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	
exit:
	return( err );
}
    e884e2bc:	8526                	mv	a0,s1
    e884e2be:	70a2                	ld	ra,40(sp)
    e884e2c0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884e2c4:	7902                	ld	s2,32(sp)
    e884e2c6:	6145                	addi	sp,sp,48
    e884e2c8:	8082                	ret

00000000e884e2ca <__DataBuffer_PrintFCallBack>:
exit:
	return( err );
}

static int	__DataBuffer_PrintFCallBack( const char *inStr, size_t inLen, void *inContext )
{
    e884e2ca:	1141                	addi	sp,sp,-16
    e884e2cc:	87b2                	mv	a5,a2
    e884e2ce:	e022                	sd	s0,0(sp)
	int		result;
	
	result = (int) DataBuffer_Append( (DataBuffer *) inContext, inStr, inLen );
    e884e2d0:	862e                	mv	a2,a1
{
    e884e2d2:	842e                	mv	s0,a1
	result = (int) DataBuffer_Append( (DataBuffer *) inContext, inStr, inLen );
    e884e2d4:	85aa                	mv	a1,a0
    e884e2d6:	853e                	mv	a0,a5
{
    e884e2d8:	e406                	sd	ra,8(sp)
	result = (int) DataBuffer_Append( (DataBuffer *) inContext, inStr, inLen );
    e884e2da:	fa9ff0ef          	jal	ra,e884e282 <DataBuffer_Append>
	require_noerr( result, exit );
    e884e2de:	e119                	bnez	a0,e884e2e4 <__DataBuffer_PrintFCallBack+0x1a>
	result = (int) inLen;
    e884e2e0:	0004051b          	sext.w	a0,s0
	
exit:
	return( result );
}
    e884e2e4:	60a2                	ld	ra,8(sp)
    e884e2e6:	6402                	ld	s0,0(sp)
    e884e2e8:	0141                	addi	sp,sp,16
    e884e2ea:	8082                	ret

00000000e884e2ec <DataBuffer_AppendF>:
{
    e884e2ec:	715d                	addi	sp,sp,-80
    e884e2ee:	fcd1560b          	sdd	a2,a3,(sp),2,4
	va_start( args, inFormat );
    e884e2f2:	1014                	addi	a3,sp,32
	n = VCPrintF( __DataBuffer_PrintFCallBack, inDB, inFormat, args );
    e884e2f4:	862e                	mv	a2,a1
    e884e2f6:	85aa                	mv	a1,a0
    e884e2f8:	00000517          	auipc	a0,0x0
    e884e2fc:	fd250513          	addi	a0,a0,-46 # e884e2ca <__DataBuffer_PrintFCallBack>
{
    e884e300:	fef1570b          	sdd	a4,a5,(sp),3,4
    e884e304:	ec06                	sd	ra,24(sp)
    e884e306:	e0c2                	sd	a6,64(sp)
    e884e308:	e4c6                	sd	a7,72(sp)
	va_start( args, inFormat );
    e884e30a:	e436                	sd	a3,8(sp)
	n = VCPrintF( __DataBuffer_PrintFCallBack, inDB, inFormat, args );
    e884e30c:	3f60e0ef          	jal	ra,e885c702 <VCPrintF>
	return( err );
    e884e310:	4781                	li	a5,0
    e884e312:	00a04363          	bgtz	a0,e884e318 <DataBuffer_AppendF+0x2c>
    e884e316:	87aa                	mv	a5,a0
}
    e884e318:	60e2                	ld	ra,24(sp)
    e884e31a:	0007851b          	sext.w	a0,a5
    e884e31e:	6161                	addi	sp,sp,80
    e884e320:	8082                	ret

00000000e884e322 <DataBuffer_AppendANSIFile>:
//	DataBuffer_AppendANSIFile
//===========================================================================================================================

#if( 1 )
OSStatus	DataBuffer_AppendANSIFile( DataBuffer *inBuffer, FILE *inFile )
{
    e884e322:	7179                	addi	sp,sp,-48
    e884e324:	ec4a                	sd	s2,24(sp)
    e884e326:	892a                	mv	s2,a0
	OSStatus		err;
	uint8_t *		buf;
	size_t			n;
	
	buf = (uint8_t *) malloc_compat( kDataBufferFileBufferSize );
    e884e328:	6521                	lui	a0,0x8
{
    e884e32a:	f04e                	sd	s3,32(sp)
    e884e32c:	f406                	sd	ra,40(sp)
    e884e32e:	e422                	sd	s0,8(sp)
    e884e330:	e826                	sd	s1,16(sp)
    e884e332:	89ae                	mv	s3,a1
	buf = (uint8_t *) malloc_compat( kDataBufferFileBufferSize );
    e884e334:	51a2d0ef          	jal	ra,e887b84e <my_malloc>
	require_action( buf, exit, err = kNoMemoryErr );
    e884e338:	c50d                	beqz	a0,e884e362 <DataBuffer_AppendANSIFile+0x40>
    e884e33a:	84aa                	mv	s1,a0
	
	for( ;; )
	{
		n = fread( buf, 1, kDataBufferFileBufferSize, inFile );
    e884e33c:	6621                	lui	a2,0x8
    e884e33e:	86ce                	mv	a3,s3
    e884e340:	4585                	li	a1,1
    e884e342:	8526                	mv	a0,s1
    e884e344:	7352d0ef          	jal	ra,e887c278 <eLIBs_fread>
    e884e348:	7c05360b          	extu	a2,a0,31,0
		if( n == 0 ) break;
    e884e34c:	c615                	beqz	a2,e884e378 <DataBuffer_AppendANSIFile+0x56>
		
		err = DataBuffer_Append( inBuffer, buf, n );
    e884e34e:	85a6                	mv	a1,s1
    e884e350:	854a                	mv	a0,s2
    e884e352:	f31ff0ef          	jal	ra,e884e282 <DataBuffer_Append>
    e884e356:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e884e358:	d175                	beqz	a0,e884e33c <DataBuffer_AppendANSIFile+0x1a>
	}
	err = kNoErr;
	
exit:
	if( buf ) free_compat( buf );
    e884e35a:	8526                	mv	a0,s1
    e884e35c:	7a52d0ef          	jal	ra,e887c300 <eLIBs_free>
	return( err );
    e884e360:	a021                	j	e884e368 <DataBuffer_AppendANSIFile+0x46>
	require_action( buf, exit, err = kNoMemoryErr );
    e884e362:	7479                	lui	s0,0xffffe
    e884e364:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
}
    e884e368:	8522                	mv	a0,s0
    e884e36a:	70a2                	ld	ra,40(sp)
    e884e36c:	6422                	ld	s0,8(sp)
    e884e36e:	64c2                	ld	s1,16(sp)
    e884e370:	6962                	ld	s2,24(sp)
    e884e372:	7982                	ld	s3,32(sp)
    e884e374:	6145                	addi	sp,sp,48
    e884e376:	8082                	ret
	err = kNoErr;
    e884e378:	4401                	li	s0,0
    e884e37a:	b7c5                	j	e884e35a <DataBuffer_AppendANSIFile+0x38>

00000000e884e37c <DataBuffer_AppendFile>:
//	DataBufferAppendFile
//===========================================================================================================================

#if( 1 )
OSStatus	DataBuffer_AppendFile( DataBuffer *inBuffer, const char *inPath )
{
    e884e37c:	1101                	addi	sp,sp,-32
    e884e37e:	e422                	sd	s0,8(sp)
    e884e380:	842a                	mv	s0,a0
    e884e382:	852e                	mv	a0,a1
	OSStatus		err;
	FILE *			f;
	
	f = fopen( inPath, "rb" );
    e884e384:	00070597          	auipc	a1,0x70
    e884e388:	72458593          	addi	a1,a1,1828 # e88beaa8 <__PRETTY_FUNCTION__.9367+0x38>
{
    e884e38c:	ec06                	sd	ra,24(sp)
    e884e38e:	e826                	sd	s1,16(sp)
	f = fopen( inPath, "rb" );
    e884e390:	6e12d0ef          	jal	ra,e887c270 <eLIBs_fopen>
	err = map_global_value_errno( f, f );
    e884e394:	e105                	bnez	a0,e884e3b4 <DataBuffer_AppendFile+0x38>
    e884e396:	00096797          	auipc	a5,0x96
    e884e39a:	29278793          	addi	a5,a5,658 # e88e4628 <lwip_errno>
    e884e39e:	4380                	lw	s0,0(a5)
    e884e3a0:	e401                	bnez	s0,e884e3a8 <DataBuffer_AppendFile+0x2c>
    e884e3a2:	7479                	lui	s0,0xffffe
    e884e3a4:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	fclose( f );
	require_noerr( err, exit );
	
exit:
	return( err );
}
    e884e3a8:	8522                	mv	a0,s0
    e884e3aa:	60e2                	ld	ra,24(sp)
    e884e3ac:	6422                	ld	s0,8(sp)
    e884e3ae:	64c2                	ld	s1,16(sp)
    e884e3b0:	6105                	addi	sp,sp,32
    e884e3b2:	8082                	ret
    e884e3b4:	84aa                	mv	s1,a0
	err = DataBuffer_AppendANSIFile( inBuffer, f );
    e884e3b6:	85aa                	mv	a1,a0
    e884e3b8:	8522                	mv	a0,s0
    e884e3ba:	f69ff0ef          	jal	ra,e884e322 <DataBuffer_AppendANSIFile>
    e884e3be:	842a                	mv	s0,a0
	fclose( f );
    e884e3c0:	8526                	mv	a0,s1
    e884e3c2:	6b32d0ef          	jal	ra,e887c274 <eLIBs_fclose>
exit:
    e884e3c6:	b7cd                	j	e884e3a8 <DataBuffer_AppendFile+0x2c>

00000000e884e3c8 <DebugPrintAssert>:
		const char *		inFilename, 
		long				inLineNumber, 
		const char *		inFunction, 
		const char *		inMessageFormat, 
		... )
{
    e884e3c8:	7119                	addi	sp,sp,-128
    e884e3ca:	e0d2                	sd	s4,64(sp)
    e884e3cc:	8a2a                	mv	s4,a0
	va_list				args;
	const char *		ptr;
	char				c;
	char *				stackTrace = NULL;
	
	if( !log_category_enabled( &log_category_from_name( DebugServicesAssert ), kLogLevelAssert ) )
    e884e3ce:	00087517          	auipc	a0,0x87
    e884e3d2:	93a50513          	addi	a0,a0,-1734 # e88d4d08 <gLogCategory_DebugServicesAssert>
{
    e884e3d6:	e8ca                	sd	s2,80(sp)
    e884e3d8:	fc56                	sd	s5,56(sp)
    e884e3da:	f486                	sd	ra,104(sp)
    e884e3dc:	f0a2                	sd	s0,96(sp)
    e884e3de:	eca6                	sd	s1,88(sp)
    e884e3e0:	e4ce                	sd	s3,72(sp)
    e884e3e2:	f85a                	sd	s6,48(sp)
    e884e3e4:	893e                	mv	s2,a5
    e884e3e6:	fcc6                	sd	a7,120(sp)
	if( !log_category_enabled( &log_category_from_name( DebugServicesAssert ), kLogLevelAssert ) )
    e884e3e8:	411c                	lw	a5,0(a0)
{
    e884e3ea:	8aba                	mv	s5,a4
	if( !log_category_enabled( &log_category_from_name( DebugServicesAssert ), kLogLevelAssert ) )
    e884e3ec:	04600713          	li	a4,70
    e884e3f0:	0af74563          	blt	a4,a5,e884e49a <DebugPrintAssert+0xd2>
    e884e3f4:	577d                	li	a4,-1
    e884e3f6:	8b2e                	mv	s6,a1
    e884e3f8:	89b2                	mv	s3,a2
    e884e3fa:	8436                	mv	s0,a3
    e884e3fc:	84c2                	mv	s1,a6
    e884e3fe:	08e78963          	beq	a5,a4,e884e490 <DebugPrintAssert+0xc8>
		return;
	}
	
	// Strip off any parent folder path in the filename.
	
	if( inFilename )
    e884e402:	8722                	mv	a4,s0
    e884e404:	c809                	beqz	s0,e884e416 <DebugPrintAssert+0x4e>
	{
		for( ptr = inFilename; ( c = *ptr ) != '\0'; ++ptr )
		{
			if( ( c == '/' ) || ( c == '\\' ) )
    e884e406:	02f00693          	li	a3,47
    e884e40a:	05c00613          	li	a2,92
		for( ptr = inFilename; ( c = *ptr ) != '\0'; ++ptr )
    e884e40e:	00074783          	lbu	a5,0(a4)
    e884e412:	efd1                	bnez	a5,e884e4ae <DebugPrintAssert+0xe6>
		}
	}
	
	// Print out the assert.
	
	if( !inFilename ) inFilename = "";
    e884e414:	e409                	bnez	s0,e884e41e <DebugPrintAssert+0x56>
    e884e416:	00073417          	auipc	s0,0x73
    e884e41a:	e5a40413          	addi	s0,s0,-422 # e88c1270 <kHTTPServerClass+0x90>
	if( !inFunction ) inFunction = "";
    e884e41e:	00091663          	bnez	s2,e884e42a <DebugPrintAssert+0x62>
    e884e422:	00073917          	auipc	s2,0x73
    e884e426:	e4e90913          	addi	s2,s2,-434 # e88c1270 <kHTTPServerClass+0x90>
	{
		stackTrace = DebugCopyStackTrace( NULL );
	}
#endif
	
	va_start( args, inMessageFormat );
    e884e42a:	18bc                	addi	a5,sp,120
    e884e42c:	f43e                	sd	a5,40(sp)
	if( inErrorCode != 0 )
    e884e42e:	00087517          	auipc	a0,0x87
    e884e432:	99a50513          	addi	a0,a0,-1638 # e88d4dc8 <gLogCategory_DebugServicesLogging>
	{
		dbs_ulog( kLogLevelAssert, "### [ASSERT] %s:%ld \"%###s\", %#m %V\n%s", 
    e884e436:	411c                	lw	a5,0(a0)
    e884e438:	04600713          	li	a4,70
	if( inErrorCode != 0 )
    e884e43c:	080b0663          	beqz	s6,e884e4c8 <DebugPrintAssert+0x100>
		dbs_ulog( kLogLevelAssert, "### [ASSERT] %s:%ld \"%###s\", %#m %V\n%s", 
    e884e440:	04f74363          	blt	a4,a5,e884e486 <DebugPrintAssert+0xbe>
    e884e444:	577d                	li	a4,-1
    e884e446:	06e78b63          	beq	a5,a4,e884e4bc <DebugPrintAssert+0xf4>
    e884e44a:	00073797          	auipc	a5,0x73
    e884e44e:	e2678793          	addi	a5,a5,-474 # e88c1270 <kHTTPServerClass+0x90>
    e884e452:	4097948b          	mveqz	s1,a5,s1
    e884e456:	e83e                	sd	a5,16(sp)
    e884e458:	103c                	addi	a5,sp,40
    e884e45a:	e43e                	sd	a5,8(sp)
    e884e45c:	e026                	sd	s1,0(sp)
    e884e45e:	88da                	mv	a7,s6
    e884e460:	884a                	mv	a6,s2
    e884e462:	87d6                	mv	a5,s5
    e884e464:	8722                	mv	a4,s0
    e884e466:	00072697          	auipc	a3,0x72
    e884e46a:	b8a68693          	addi	a3,a3,-1142 # e88bfff0 <CSWTCH.11+0xfa0>
    e884e46e:	04600613          	li	a2,70
    e884e472:	00072597          	auipc	a1,0x72
    e884e476:	c0658593          	addi	a1,a1,-1018 # e88c0078 <__PRETTY_FUNCTION__.8968>
    e884e47a:	00087517          	auipc	a0,0x87
    e884e47e:	94e50513          	addi	a0,a0,-1714 # e88d4dc8 <gLogCategory_DebugServicesLogging>
    e884e482:	7f3050ef          	jal	ra,e8854474 <LogPrintF>
	}
	va_end( args );
	
	// If this is a panic assert, try to stop.
	
	if( inFlags & kDebugAssertFlagsPanic )
    e884e486:	001a7a13          	andi	s4,s4,1
    e884e48a:	080a0e63          	beqz	s4,e884e526 <DebugPrintAssert+0x15e>
			#if( TARGET_OS_VXWORKS )
				taskSuspend( taskIdSelf() );
			#elif( TARGET_OS_WINDOWS )
				SuspendThread( GetCurrentThread() );
			#else
				for( ;; ) {}
    e884e48e:	a001                	j	e884e48e <DebugPrintAssert+0xc6>
	if( !log_category_enabled( &log_category_from_name( DebugServicesAssert ), kLogLevelAssert ) )
    e884e490:	04600593          	li	a1,70
    e884e494:	3df050ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884e498:	f52d                	bnez	a0,e884e402 <DebugPrintAssert+0x3a>
		{
			DebugEnterDebugger( false );
		}
	}
	FreeNullSafe( stackTrace );
}
    e884e49a:	70a6                	ld	ra,104(sp)
    e884e49c:	7406                	ld	s0,96(sp)
    e884e49e:	64e6                	ld	s1,88(sp)
    e884e4a0:	6946                	ld	s2,80(sp)
    e884e4a2:	69a6                	ld	s3,72(sp)
    e884e4a4:	6a06                	ld	s4,64(sp)
    e884e4a6:	7ae2                	ld	s5,56(sp)
    e884e4a8:	7b42                	ld	s6,48(sp)
    e884e4aa:	6109                	addi	sp,sp,128
    e884e4ac:	8082                	ret
			if( ( c == '/' ) || ( c == '\\' ) )
    e884e4ae:	0705                	addi	a4,a4,1
    e884e4b0:	00d78463          	beq	a5,a3,e884e4b8 <DebugPrintAssert+0xf0>
    e884e4b4:	f4c79de3          	bne	a5,a2,e884e40e <DebugPrintAssert+0x46>
				inFilename = ptr + 1;
    e884e4b8:	843a                	mv	s0,a4
		for( ptr = inFilename; ( c = *ptr ) != '\0'; ++ptr )
    e884e4ba:	bf91                	j	e884e40e <DebugPrintAssert+0x46>
		dbs_ulog( kLogLevelAssert, "### [ASSERT] %s:%ld \"%###s\", %#m %V\n%s", 
    e884e4bc:	04600593          	li	a1,70
    e884e4c0:	3b3050ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884e4c4:	d169                	beqz	a0,e884e486 <DebugPrintAssert+0xbe>
    e884e4c6:	b751                	j	e884e44a <DebugPrintAssert+0x82>
		dbs_ulog( kLogLevelAssert, "### [ASSERT] %s:%ld \"%###s\", \"%s\" %V\n%s", 
    e884e4c8:	faf74fe3          	blt	a4,a5,e884e486 <DebugPrintAssert+0xbe>
    e884e4cc:	577d                	li	a4,-1
    e884e4ce:	04e78663          	beq	a5,a4,e884e51a <DebugPrintAssert+0x152>
    e884e4d2:	00073797          	auipc	a5,0x73
    e884e4d6:	d9e78793          	addi	a5,a5,-610 # e88c1270 <kHTTPServerClass+0x90>
    e884e4da:	4137998b          	mveqz	s3,a5,s3
    e884e4de:	e489                	bnez	s1,e884e4e8 <DebugPrintAssert+0x120>
    e884e4e0:	00073497          	auipc	s1,0x73
    e884e4e4:	d9048493          	addi	s1,s1,-624 # e88c1270 <kHTTPServerClass+0x90>
    e884e4e8:	e83e                	sd	a5,16(sp)
    e884e4ea:	103c                	addi	a5,sp,40
    e884e4ec:	e43e                	sd	a5,8(sp)
    e884e4ee:	e026                	sd	s1,0(sp)
    e884e4f0:	88ce                	mv	a7,s3
    e884e4f2:	884a                	mv	a6,s2
    e884e4f4:	87d6                	mv	a5,s5
    e884e4f6:	8722                	mv	a4,s0
    e884e4f8:	00072697          	auipc	a3,0x72
    e884e4fc:	b2068693          	addi	a3,a3,-1248 # e88c0018 <CSWTCH.11+0xfc8>
    e884e500:	04600613          	li	a2,70
    e884e504:	00072597          	auipc	a1,0x72
    e884e508:	b7458593          	addi	a1,a1,-1164 # e88c0078 <__PRETTY_FUNCTION__.8968>
    e884e50c:	00087517          	auipc	a0,0x87
    e884e510:	8bc50513          	addi	a0,a0,-1860 # e88d4dc8 <gLogCategory_DebugServicesLogging>
    e884e514:	761050ef          	jal	ra,e8854474 <LogPrintF>
    e884e518:	b7bd                	j	e884e486 <DebugPrintAssert+0xbe>
    e884e51a:	04600593          	li	a1,70
    e884e51e:	355050ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884e522:	d135                	beqz	a0,e884e486 <DebugPrintAssert+0xbe>
    e884e524:	b77d                	j	e884e4d2 <DebugPrintAssert+0x10a>
		if( log_category_enabled( &log_category_from_name( DebugServicesBreak ), kLogLevelAssert ) &&
    e884e526:	00087517          	auipc	a0,0x87
    e884e52a:	84250513          	addi	a0,a0,-1982 # e88d4d68 <gLogCategory_DebugServicesBreak>
    e884e52e:	4118                	lw	a4,0(a0)
    e884e530:	57fd                	li	a5,-1
    e884e532:	f6f714e3          	bne	a4,a5,e884e49a <DebugPrintAssert+0xd2>
    e884e536:	04600593          	li	a1,70
    e884e53a:	339050ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884e53e:	bfb1                	j	e884e49a <DebugPrintAssert+0xd2>

00000000e884e540 <DebugStackTrace>:
//===========================================================================================================================
//	DebugStackTrace
//===========================================================================================================================

OSStatus	DebugStackTrace( LogLevel inLevel )
{
    e884e540:	85aa                	mv	a1,a0
	OSStatus		err;
	
#if( LOGUTILS_ENABLED )
	if( !log_category_enabled( &log_category_from_name( DebugServicesStackTrace ), inLevel ) )
    e884e542:	00087517          	auipc	a0,0x87
    e884e546:	8e650513          	addi	a0,a0,-1818 # e88d4e28 <gLogCategory_DebugServicesStackTrace>
    e884e54a:	411c                	lw	a5,0(a0)
    e884e54c:	0ff5f713          	andi	a4,a1,255
    e884e550:	00f75663          	bge	a4,a5,e884e55c <DebugStackTrace+0x1c>
	{
		err = kRangeErr;
    e884e554:	7579                	lui	a0,0xffffe
    e884e556:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
#endif
	goto exit;
	
exit:
	return( err );
}
    e884e55a:	8082                	ret
{
    e884e55c:	1141                	addi	sp,sp,-16
    e884e55e:	e406                	sd	ra,8(sp)
	if( !log_category_enabled( &log_category_from_name( DebugServicesStackTrace ), inLevel ) )
    e884e560:	577d                	li	a4,-1
    e884e562:	04e78263          	beq	a5,a4,e884e5a6 <DebugStackTrace+0x66>
	dbs_ulog( kLogLevelError, "### stack tracing not supported on this platform\n" );
    e884e566:	00087517          	auipc	a0,0x87
    e884e56a:	86250513          	addi	a0,a0,-1950 # e88d4dc8 <gLogCategory_DebugServicesLogging>
    e884e56e:	411c                	lw	a5,0(a0)
    e884e570:	05a00713          	li	a4,90
    e884e574:	02f74563          	blt	a4,a5,e884e59e <DebugStackTrace+0x5e>
    e884e578:	577d                	li	a4,-1
    e884e57a:	02e78f63          	beq	a5,a4,e884e5b8 <DebugStackTrace+0x78>
    e884e57e:	00072697          	auipc	a3,0x72
    e884e582:	ac268693          	addi	a3,a3,-1342 # e88c0040 <CSWTCH.11+0xff0>
    e884e586:	05a00613          	li	a2,90
    e884e58a:	00072597          	auipc	a1,0x72
    e884e58e:	b0658593          	addi	a1,a1,-1274 # e88c0090 <__PRETTY_FUNCTION__.8975>
    e884e592:	00087517          	auipc	a0,0x87
    e884e596:	83650513          	addi	a0,a0,-1994 # e88d4dc8 <gLogCategory_DebugServicesLogging>
    e884e59a:	6db050ef          	jal	ra,e8854474 <LogPrintF>
	err = kUnsupportedErr;
    e884e59e:	7579                	lui	a0,0xffffe
    e884e5a0:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e884e5a4:	a039                	j	e884e5b2 <DebugStackTrace+0x72>
	if( !log_category_enabled( &log_category_from_name( DebugServicesStackTrace ), inLevel ) )
    e884e5a6:	2cd050ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884e5aa:	fd55                	bnez	a0,e884e566 <DebugStackTrace+0x26>
		err = kRangeErr;
    e884e5ac:	7579                	lui	a0,0xffffe
    e884e5ae:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
}
    e884e5b2:	60a2                	ld	ra,8(sp)
    e884e5b4:	0141                	addi	sp,sp,16
    e884e5b6:	8082                	ret
	dbs_ulog( kLogLevelError, "### stack tracing not supported on this platform\n" );
    e884e5b8:	05a00593          	li	a1,90
    e884e5bc:	2b7050ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884e5c0:	dd79                	beqz	a0,e884e59e <DebugStackTrace+0x5e>
    e884e5c2:	bf75                	j	e884e57e <DebugStackTrace+0x3e>

00000000e884e5c4 <DebugIsDebuggerPresent>:
#elif( TARGET_OS_NETBSD && TARGET_KERNEL && DEBUG )
	return( 1 );
#else
	return( 0 );
#endif
}
    e884e5c4:	4501                	li	a0,0
    e884e5c6:	8082                	ret

00000000e884e5c8 <DebugEnterDebugger>:
#else
	(void) inForce;
	
	// $$$ TO DO: Think of something better to do in the unknown target case.
#endif
}
    e884e5c8:	8082                	ret

00000000e884e5ca <HTTPGetReasonPhrase>:

const char *	HTTPGetReasonPhrase( int inStatusCode )
{
	const char *		reasonPhrase;
	
	switch( inStatusCode )
    e884e5ca:	f9c5071b          	addiw	a4,a0,-100
    e884e5ce:	1f300793          	li	a5,499
    e884e5d2:	00e7e963          	bltu	a5,a4,e884e5e4 <HTTPGetReasonPhrase+0x1a>
    e884e5d6:	00071797          	auipc	a5,0x71
    e884e5da:	a7a78793          	addi	a5,a5,-1414 # e88bf050 <CSWTCH.11>
    e884e5de:	76e7c50b          	lurd	a0,a5,a4,3
    e884e5e2:	8082                	ret
    e884e5e4:	00073517          	auipc	a0,0x73
    e884e5e8:	c8c50513          	addi	a0,a0,-884 # e88c1270 <kHTTPServerClass+0x90>
		default:
			reasonPhrase = "";
			break;
	}
	return( reasonPhrase );
}
    e884e5ec:	8082                	ret

00000000e884e5ee <ReportCriticalError>:
	(void) inReason;
	(void) inExceptionCode;
	(void) inCrashLog;
	
	// TO DO: Figure out what to do on other platforms.
}
    e884e5ee:	8082                	ret

00000000e884e5f0 <__dispatch_empty_callback>:
void	__dispatch_empty_callback( void *inContext )
{
	(void) inContext; // Unused
	
	// Do nothing. This is only used to serialize via dispatch_sync_f().
}
    e884e5f0:	8082                	ret

00000000e884e5f2 <__dispatch_free_object>:
{
    e884e5f2:	1101                	addi	sp,sp,-32
    e884e5f4:	ec06                	sd	ra,24(sp)
    e884e5f6:	e422                	sd	s0,8(sp)
    e884e5f8:	e826                	sd	s1,16(sp)
	dispatch_function_t const		func	= obj->base.doFinalize;
    e884e5fa:	6d00                	ld	s0,24(a0)
	void * const					context	= obj->base.context;
    e884e5fc:	6504                	ld	s1,8(a0)
	free( inObj );
    e884e5fe:	5032d0ef          	jal	ra,e887c300 <eLIBs_free>
	if( func ) func( context );
    e884e602:	c801                	beqz	s0,e884e612 <__dispatch_free_object+0x20>
    e884e604:	8322                	mv	t1,s0
}
    e884e606:	6422                	ld	s0,8(sp)
    e884e608:	60e2                	ld	ra,24(sp)
	if( func ) func( context );
    e884e60a:	8526                	mv	a0,s1
}
    e884e60c:	64c2                	ld	s1,16(sp)
    e884e60e:	6105                	addi	sp,sp,32
	if( func ) func( context );
    e884e610:	8302                	jr	t1
}
    e884e612:	60e2                	ld	ra,24(sp)
    e884e614:	6422                	ld	s0,8(sp)
    e884e616:	64c2                	ld	s1,16(sp)
    e884e618:	6105                	addi	sp,sp,32
    e884e61a:	8082                	ret

00000000e884e61c <__dispatch_sync_callback>:
{
    e884e61c:	1141                	addi	sp,sp,-16
    e884e61e:	e022                	sd	s0,0(sp)
    e884e620:	842a                	mv	s0,a0
	itemData->function( itemData->context );
    e884e622:	f8a4478b          	ldd	a5,a0,(s0),0,4
{
    e884e626:	e406                	sd	ra,8(sp)
	itemData->function( itemData->context );
    e884e628:	9782                	jalr	a5
	pthread_mutex_lock( itemData->mutexPtr );
    e884e62a:	6c08                	ld	a0,24(s0)
    e884e62c:	4f22d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		pthread_cond_signal( itemData->conditionPtr );
    e884e630:	7408                	ld	a0,40(s0)
		itemData->done = true;
    e884e632:	4785                	li	a5,1
    e884e634:	02f40823          	sb	a5,48(s0)
		pthread_cond_signal( itemData->conditionPtr );
    e884e638:	6cc2d0ef          	jal	ra,e887bd04 <pthread_cond_signal>
	pthread_mutex_unlock( itemData->mutexPtr );
    e884e63c:	6c08                	ld	a0,24(s0)
}
    e884e63e:	6402                	ld	s0,0(sp)
    e884e640:	60a2                	ld	ra,8(sp)
    e884e642:	0141                	addi	sp,sp,16
	pthread_mutex_unlock( itemData->mutexPtr );
    e884e644:	51e2d06f          	j	e887bb62 <pthread_mutex_unlock>

00000000e884e648 <__LibDispatchCF_Finalize>:
//===========================================================================================================================
//	__LibDispatchCF_Finalize
//===========================================================================================================================

DEBUG_STATIC void	__LibDispatchCF_Finalize( void )
{	
    e884e648:	1141                	addi	sp,sp,-16
    e884e64a:	e022                	sd	s0,0(sp)
	if( gDispatchCF_Source )
    e884e64c:	00095417          	auipc	s0,0x95
    e884e650:	59c40413          	addi	s0,s0,1436 # e88e3be8 <gDispatchCF_Source>
    e884e654:	6008                	ld	a0,0(s0)
{	
    e884e656:	e406                	sd	ra,8(sp)
	if( gDispatchCF_Source )
    e884e658:	c911                	beqz	a0,e884e66c <__LibDispatchCF_Finalize+0x24>
	{
		CFRunLoopSourceInvalidate( gDispatchCF_Source );
    e884e65a:	ba7fc0ef          	jal	ra,e884b200 <CFRunLoopSourceInvalidate>
		CFRelease( gDispatchCF_Source );
    e884e65e:	6008                	ld	a0,0(s0)
    e884e660:	aebf80ef          	jal	ra,e884714a <CFRelease>
		gDispatchCF_Source = NULL;
    e884e664:	00095797          	auipc	a5,0x95
    e884e668:	5807b223          	sd	zero,1412(a5) # e88e3be8 <gDispatchCF_Source>
	}
	gDispatchCF_MainRL = NULL;
	gDispatchCFInitialized = false;
}
    e884e66c:	60a2                	ld	ra,8(sp)
    e884e66e:	6402                	ld	s0,0(sp)
	gDispatchCF_MainRL = NULL;
    e884e670:	00095797          	auipc	a5,0x95
    e884e674:	5607b823          	sd	zero,1392(a5) # e88e3be0 <gDispatchCF_MainRL>
	gDispatchCFInitialized = false;
    e884e678:	00095797          	auipc	a5,0x95
    e884e67c:	56078023          	sb	zero,1376(a5) # e88e3bd8 <gDispatchCFInitialized>
}
    e884e680:	0141                	addi	sp,sp,16
    e884e682:	8082                	ret

00000000e884e684 <__LibDispatch_PlatformFreeSource>:
	ssize_t						n;
	OSStatus					err;
	
	DEBUG_USE_ONLY( err );
	
	require( DispatchSourceValidOrFreeing( source ), exit );
    e884e684:	c929                	beqz	a0,e884e6d6 <__LibDispatch_PlatformFreeSource+0x52>
    e884e686:	4118                	lw	a4,0(a0)
    e884e688:	647377b7          	lui	a5,0x64737
    e884e68c:	26378793          	addi	a5,a5,611 # 64737263 <memcmp-0x840c8d9d>
    e884e690:	04f71363          	bne	a4,a5,e884e6d6 <__LibDispatch_PlatformFreeSource+0x52>
{
    e884e694:	1101                	addi	sp,sp,-32
    e884e696:	ec06                	sd	ra,24(sp)
    e884e698:	e822                	sd	s0,16(sp)
	
	// Mark it as canceled to prevent scheduling new work then schedule a callback on the kqueue thread to 
	// serialize the delete behind any queued work.
	
	pthread_mutex_lock( source->queue->lockPtr );
    e884e69a:	751c                	ld	a5,40(a0)
    e884e69c:	842a                	mv	s0,a0
    e884e69e:	7788                	ld	a0,40(a5)
    e884e6a0:	47e2d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		source->canceled = true;
		
		pkt.cmd		= kDispatchCommandFreeSource;
		pkt.source	= source;
    e884e6a4:	e422                	sd	s0,8(sp)
		source->canceled = true;
    e884e6a6:	4785                	li	a5,1
    e884e6a8:	02f40823          	sb	a5,48(s0)
		pkt.cmd		= kDispatchCommandFreeSource;
    e884e6ac:	478d                	li	a5,3
    e884e6ae:	00f10023          	sb	a5,0(sp)
		n = send( gDispatchSelect_CommandSock, (char *) &pkt, sizeof( pkt ), 0 );
    e884e6b2:	00086797          	auipc	a5,0x86
    e884e6b6:	7da78793          	addi	a5,a5,2010 # e88d4e8c <gDispatchSelect_CommandSock>
    e884e6ba:	4388                	lw	a0,0(a5)
    e884e6bc:	858a                	mv	a1,sp
    e884e6be:	4681                	li	a3,0
    e884e6c0:	4641                	li	a2,16
    e884e6c2:	4d0370ef          	jal	ra,e8885b92 <lwip_send>
		err = map_socket_value_errno( gDispatchSelect_CommandSock, n == (ssize_t) sizeof( pkt ), n );
		check_noerr( err );
	pthread_mutex_unlock( source->queue->lockPtr );
    e884e6c6:	741c                	ld	a5,40(s0)
    e884e6c8:	7788                	ld	a0,40(a5)
    e884e6ca:	4982d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	
exit:
	return;
}
    e884e6ce:	6442                	ld	s0,16(sp)
    e884e6d0:	60e2                	ld	ra,24(sp)
    e884e6d2:	6105                	addi	sp,sp,32
    e884e6d4:	8082                	ret
    e884e6d6:	8082                	ret

00000000e884e6d8 <__dispatch_wall_milliseconds>:
{
    e884e6d8:	1101                	addi	sp,sp,-32
	gettimeofday( &tv, NULL );
    e884e6da:	850a                	mv	a0,sp
    e884e6dc:	4581                	li	a1,0
{
    e884e6de:	ec06                	sd	ra,24(sp)
	gettimeofday( &tv, NULL );
    e884e6e0:	405120ef          	jal	ra,e88612e4 <gettimeofday>
	return( ( tv.tv_sec * UINT64_C_safe( kMillisecondsPerSecond ) ) + ( tv.tv_usec / kMicrosecondsPerMillisecond ) );
    e884e6e4:	6522                	ld	a0,8(sp)
    e884e6e6:	3e800793          	li	a5,1000
}
    e884e6ea:	6702                	ld	a4,0(sp)
	return( ( tv.tv_sec * UINT64_C_safe( kMillisecondsPerSecond ) ) + ( tv.tv_usec / kMicrosecondsPerMillisecond ) );
    e884e6ec:	02f54533          	div	a0,a0,a5
}
    e884e6f0:	60e2                	ld	ra,24(sp)
    e884e6f2:	6105                	addi	sp,sp,32
    e884e6f4:	20e7950b          	mula	a0,a5,a4
    e884e6f8:	8082                	ret

00000000e884e6fa <__dispatch_semaphore_free>:
{
    e884e6fa:	1141                	addi	sp,sp,-16
    e884e6fc:	e022                	sd	s0,0(sp)
    e884e6fe:	e406                	sd	ra,8(sp)
    e884e700:	842a                	mv	s0,a0
	pthread_mutex_forget( &obj->mutexPtr );
    e884e702:	7508                	ld	a0,40(a0)
    e884e704:	c509                	beqz	a0,e884e70e <__dispatch_semaphore_free+0x14>
    e884e706:	3ce2d0ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
    e884e70a:	02043423          	sd	zero,40(s0)
	pthread_cond_forget( &obj->conditionPtr );
    e884e70e:	7c08                	ld	a0,56(s0)
    e884e710:	c509                	beqz	a0,e884e71a <__dispatch_semaphore_free+0x20>
    e884e712:	5ca2d0ef          	jal	ra,e887bcdc <pthread_cond_destroy>
    e884e716:	02043c23          	sd	zero,56(s0)
	__dispatch_free_object( obj );
    e884e71a:	8522                	mv	a0,s0
}
    e884e71c:	6402                	ld	s0,0(sp)
    e884e71e:	60a2                	ld	ra,8(sp)
    e884e720:	0141                	addi	sp,sp,16
	__dispatch_free_object( obj );
    e884e722:	ed1ff06f          	j	e884e5f2 <__dispatch_free_object>

00000000e884e726 <__LibDispatch_WorkThread>:
{
    e884e726:	711d                	addi	sp,sp,-96
    e884e728:	ec86                	sd	ra,88(sp)
    e884e72a:	e8a2                	sd	s0,80(sp)
    e884e72c:	e0ca                	sd	s2,64(sp)
    e884e72e:	fc4e                	sd	s3,56(sp)
    e884e730:	f852                	sd	s4,48(sp)
    e884e732:	f456                	sd	s5,40(sp)
    e884e734:	e4a6                	sd	s1,72(sp)
    e884e736:	f05a                	sd	s6,32(sp)
	pthread_setname_np_compat( "gcd-work" );
    e884e738:	2c22d0ef          	jal	ra,e887b9fa <pthread_self>
    e884e73c:	2501                	sext.w	a0,a0
    e884e73e:	00072597          	auipc	a1,0x72
    e884e742:	35a58593          	addi	a1,a1,858 # e88c0a98 <__PRETTY_FUNCTION__.8975+0xa08>
    e884e746:	68e2d0ef          	jal	ra,e887bdd4 <pthread_setname_np>
	pthread_mutex_lock( gDispatchThreadPool_MutexPtr );
    e884e74a:	00095417          	auipc	s0,0x95
    e884e74e:	55640413          	addi	s0,s0,1366 # e88e3ca0 <gDispatchThreadPool_MutexPtr>
    e884e752:	6008                	ld	a0,0(s0)
			while( ( gDispatchThreadPool_ItemsHead == NULL ) && !gDispatchThreadPool_Quit )
    e884e754:	00095a97          	auipc	s5,0x95
    e884e758:	534a8a93          	addi	s5,s5,1332 # e88e3c88 <gDispatchThreadPool_ItemsHead>
    e884e75c:	8956                	mv	s2,s5
	pthread_mutex_lock( gDispatchThreadPool_MutexPtr );
    e884e75e:	3c02d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
			while( ( gDispatchThreadPool_ItemsHead == NULL ) && !gDispatchThreadPool_Quit )
    e884e762:	00095a17          	auipc	s4,0x95
    e884e766:	54aa0a13          	addi	s4,s4,1354 # e88e3cac <gDispatchThreadPool_Quit>
				++gDispatchThreadPool_IdleThreads;
    e884e76a:	00095997          	auipc	s3,0x95
    e884e76e:	51a98993          	addi	s3,s3,1306 # e88e3c84 <gDispatchThreadPool_IdleThreads>
			gettimeofday( &now, NULL );
    e884e772:	4581                	li	a1,0
    e884e774:	0808                	addi	a0,sp,16
    e884e776:	36f120ef          	jal	ra,e88612e4 <gettimeofday>
				err = pthread_cond_timedwait( gDispatchThreadPool_ConditionPtr, gDispatchThreadPool_MutexPtr, &timeout );
    e884e77a:	00095497          	auipc	s1,0x95
    e884e77e:	4fe48493          	addi	s1,s1,1278 # e88e3c78 <gDispatchThreadPool_ConditionPtr>
			timeout.tv_sec  = now.tv_sec + 2;
    e884e782:	67c2                	ld	a5,16(sp)
			timeout.tv_nsec = now.tv_usec * 1000;
    e884e784:	3e800713          	li	a4,1000
				if( err == ETIMEDOUT_PTHREAD )
    e884e788:	07400b13          	li	s6,116
			timeout.tv_sec  = now.tv_sec + 2;
    e884e78c:	0789                	addi	a5,a5,2
    e884e78e:	e03e                	sd	a5,0(sp)
			timeout.tv_nsec = now.tv_usec * 1000;
    e884e790:	67e2                	ld	a5,24(sp)
    e884e792:	02e787b3          	mul	a5,a5,a4
    e884e796:	e43e                	sd	a5,8(sp)
			while( ( gDispatchThreadPool_ItemsHead == NULL ) && !gDispatchThreadPool_Quit )
    e884e798:	000ab783          	ld	a5,0(s5)
    e884e79c:	e781                	bnez	a5,e884e7a4 <__LibDispatch_WorkThread+0x7e>
    e884e79e:	000a4783          	lbu	a5,0(s4)
    e884e7a2:	c399                	beqz	a5,e884e7a8 <__LibDispatch_WorkThread+0x82>
			timedOut = false;
    e884e7a4:	4781                	li	a5,0
    e884e7a6:	a01d                	j	e884e7cc <__LibDispatch_WorkThread+0xa6>
				++gDispatchThreadPool_IdleThreads;
    e884e7a8:	0009a783          	lw	a5,0(s3)
				err = pthread_cond_timedwait( gDispatchThreadPool_ConditionPtr, gDispatchThreadPool_MutexPtr, &timeout );
    e884e7ac:	600c                	ld	a1,0(s0)
    e884e7ae:	6088                	ld	a0,0(s1)
				++gDispatchThreadPool_IdleThreads;
    e884e7b0:	2785                	addiw	a5,a5,1
				err = pthread_cond_timedwait( gDispatchThreadPool_ConditionPtr, gDispatchThreadPool_MutexPtr, &timeout );
    e884e7b2:	860a                	mv	a2,sp
				++gDispatchThreadPool_IdleThreads;
    e884e7b4:	00f9a023          	sw	a5,0(s3)
				err = pthread_cond_timedwait( gDispatchThreadPool_ConditionPtr, gDispatchThreadPool_MutexPtr, &timeout );
    e884e7b8:	59a2d0ef          	jal	ra,e887bd52 <pthread_cond_timedwait>
				--gDispatchThreadPool_IdleThreads;
    e884e7bc:	0009a783          	lw	a5,0(s3)
    e884e7c0:	37fd                	addiw	a5,a5,-1
    e884e7c2:	00f9a023          	sw	a5,0(s3)
				if( err == ETIMEDOUT_PTHREAD )
    e884e7c6:	fd6519e3          	bne	a0,s6,e884e798 <__LibDispatch_WorkThread+0x72>
					timedOut = true;
    e884e7ca:	4785                	li	a5,1
		item = gDispatchThreadPool_ItemsHead;
    e884e7cc:	00093483          	ld	s1,0(s2)
		if( item )
    e884e7d0:	cc9d                	beqz	s1,e884e80e <__LibDispatch_WorkThread+0xe8>
			if( ( gDispatchThreadPool_ItemsHead = item->next ) == NULL )
    e884e7d2:	609c                	ld	a5,0(s1)
    e884e7d4:	00f93023          	sd	a5,0(s2)
    e884e7d8:	e789                	bnez	a5,e884e7e2 <__LibDispatch_WorkThread+0xbc>
				gDispatchThreadPool_ItemsNext = &gDispatchThreadPool_ItemsHead;
    e884e7da:	00095797          	auipc	a5,0x95
    e884e7de:	4b27bb23          	sd	s2,1206(a5) # e88e3c90 <gDispatchThreadPool_ItemsNext>
			--gDispatchThreadPool_PendingItems;
    e884e7e2:	00095717          	auipc	a4,0x95
    e884e7e6:	4c670713          	addi	a4,a4,1222 # e88e3ca8 <gDispatchThreadPool_PendingItems>
    e884e7ea:	431c                	lw	a5,0(a4)
			pthread_mutex_unlock( gDispatchThreadPool_MutexPtr );
    e884e7ec:	6008                	ld	a0,0(s0)
			--gDispatchThreadPool_PendingItems;
    e884e7ee:	37fd                	addiw	a5,a5,-1
    e884e7f0:	c31c                	sw	a5,0(a4)
			pthread_mutex_unlock( gDispatchThreadPool_MutexPtr );
    e884e7f2:	3702d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
			item->function( item->context );
    e884e7f6:	649c                	ld	a5,8(s1)
    e884e7f8:	6888                	ld	a0,16(s1)
    e884e7fa:	9782                	jalr	a5
			free( item );
    e884e7fc:	8526                	mv	a0,s1
    e884e7fe:	3032d0ef          	jal	ra,e887c300 <eLIBs_free>
			pthread_mutex_lock( gDispatchThreadPool_MutexPtr );
    e884e802:	6008                	ld	a0,0(s0)
    e884e804:	31a2d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		if( ( item == NULL ) && gDispatchThreadPool_Quit )
    e884e808:	00093783          	ld	a5,0(s2)
    e884e80c:	f3bd                	bnez	a5,e884e772 <__LibDispatch_WorkThread+0x4c>
    e884e80e:	000a4703          	lbu	a4,0(s4)
    e884e812:	8fd9                	or	a5,a5,a4
    e884e814:	dfb9                	beqz	a5,e884e772 <__LibDispatch_WorkThread+0x4c>
			if( --gDispatchThreadPool_CurrentThreads == 0 )
    e884e816:	00095717          	auipc	a4,0x95
    e884e81a:	46a70713          	addi	a4,a4,1130 # e88e3c80 <gDispatchThreadPool_CurrentThreads>
    e884e81e:	431c                	lw	a5,0(a4)
	pthread_mutex_unlock( gDispatchThreadPool_MutexPtr );	
    e884e820:	6008                	ld	a0,0(s0)
			if( --gDispatchThreadPool_CurrentThreads == 0 )
    e884e822:	37fd                	addiw	a5,a5,-1
    e884e824:	c31c                	sw	a5,0(a4)
	pthread_mutex_unlock( gDispatchThreadPool_MutexPtr );	
    e884e826:	33c2d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	pthread_clrspecific(gDispatchKey_CurrentQueue);
    e884e82a:	00095797          	auipc	a5,0x95
    e884e82e:	3e278793          	addi	a5,a5,994 # e88e3c0c <gDispatchKey_CurrentQueue>
    e884e832:	4388                	lw	a0,0(a5)
    e884e834:	4302d0ef          	jal	ra,e887bc64 <pthread_clrspecific>
	pthread_exit(0);
    e884e838:	4501                	li	a0,0
    e884e83a:	1d02d0ef          	jal	ra,e887ba0a <pthread_exit>
}
    e884e83e:	6446                	ld	s0,80(sp)
    e884e840:	60e6                	ld	ra,88(sp)
    e884e842:	64a6                	ld	s1,72(sp)
    e884e844:	6906                	ld	s2,64(sp)
    e884e846:	79e2                	ld	s3,56(sp)
    e884e848:	7a42                	ld	s4,48(sp)
    e884e84a:	7aa2                	ld	s5,40(sp)
    e884e84c:	7b02                	ld	s6,32(sp)
    e884e84e:	4501                	li	a0,0
    e884e850:	6125                	addi	sp,sp,96
    e884e852:	8082                	ret

00000000e884e854 <__dispatch_queue_free>:
{
    e884e854:	1101                	addi	sp,sp,-32
    e884e856:	e422                	sd	s0,8(sp)
    e884e858:	e826                	sd	s1,16(sp)
    e884e85a:	ec06                	sd	ra,24(sp)
    e884e85c:	842a                	mv	s0,a0
	pthread_mutex_lock( queue->lockPtr );
    e884e85e:	7508                	ld	a0,40(a0)
    e884e860:	2be2d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( queue == gDispatchMainQueue )
    e884e864:	00095797          	auipc	a5,0x95
    e884e868:	3b478793          	addi	a5,a5,948 # e88e3c18 <gDispatchMainQueue>
    e884e86c:	6384                	ld	s1,0(a5)
    e884e86e:	02849563          	bne	s1,s0,e884e898 <__dispatch_queue_free+0x44>
			gDispatchMainQueue_WorkPending = true;
    e884e872:	4785                	li	a5,1
    e884e874:	00095717          	auipc	a4,0x95
    e884e878:	3cf70223          	sb	a5,964(a4) # e88e3c38 <gDispatchMainQueue_WorkPending>
			pthread_cond_signal( gDispatchMainQueue_ConditionPtr );
    e884e87c:	00095797          	auipc	a5,0x95
    e884e880:	3b478793          	addi	a5,a5,948 # e88e3c30 <gDispatchMainQueue_ConditionPtr>
    e884e884:	6388                	ld	a0,0(a5)
    e884e886:	47e2d0ef          	jal	ra,e887bd04 <pthread_cond_signal>
}
    e884e88a:	6422                	ld	s0,8(sp)
		pthread_mutex_unlock( queue->lockPtr );
    e884e88c:	7488                	ld	a0,40(s1)
}
    e884e88e:	60e2                	ld	ra,24(sp)
    e884e890:	64c2                	ld	s1,16(sp)
    e884e892:	6105                	addi	sp,sp,32
		pthread_mutex_unlock( queue->lockPtr );
    e884e894:	2ce2d06f          	j	e887bb62 <pthread_mutex_unlock>
		pthread_mutex_unlock( queue->lockPtr );
    e884e898:	7408                	ld	a0,40(s0)
    e884e89a:	2c82d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		pthread_mutex_forget( &queue->lockPtr );
    e884e89e:	7408                	ld	a0,40(s0)
    e884e8a0:	c509                	beqz	a0,e884e8aa <__dispatch_queue_free+0x56>
    e884e8a2:	2322d0ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
    e884e8a6:	02043423          	sd	zero,40(s0)
		queue->base.magic = kDispatchQueue_MagicBad;
    e884e8aa:	445157b7          	lui	a5,0x44515
    e884e8ae:	5457879b          	addiw	a5,a5,1349
    e884e8b2:	c01c                	sw	a5,0(s0)
		__dispatch_free_object( queue );
    e884e8b4:	8522                	mv	a0,s0
}
    e884e8b6:	6422                	ld	s0,8(sp)
    e884e8b8:	60e2                	ld	ra,24(sp)
    e884e8ba:	64c2                	ld	s1,16(sp)
    e884e8bc:	6105                	addi	sp,sp,32
		__dispatch_free_object( queue );
    e884e8be:	d35ff06f          	j	e884e5f2 <__dispatch_free_object>

00000000e884e8c2 <__LibDispatch_SelectHandleTimerEvent>:
{
    e884e8c2:	1141                	addi	sp,sp,-16
    e884e8c4:	e022                	sd	s0,0(sp)
	atomic_fetch_and_and_32( &source->pending, ~( (int32_t) 1 ) );
    e884e8c6:	55f9                	li	a1,-2
{
    e884e8c8:	842a                	mv	s0,a0
	atomic_fetch_and_and_32( &source->pending, ~( (int32_t) 1 ) );
    e884e8ca:	03450513          	addi	a0,a0,52
{
    e884e8ce:	e406                	sd	ra,8(sp)
	atomic_fetch_and_and_32( &source->pending, ~( (int32_t) 1 ) );
    e884e8d0:	95ff60ef          	jal	ra,e884522e <atomic_fetch_and_and_32>
	if( source->canceled || ( source->suspendCount > 0 ) )
    e884e8d4:	03044783          	lbu	a5,48(s0)
    e884e8d8:	eb99                	bnez	a5,e884e8ee <__LibDispatch_SelectHandleTimerEvent+0x2c>
    e884e8da:	501c                	lw	a5,32(s0)
    e884e8dc:	00f04963          	bgtz	a5,e884e8ee <__LibDispatch_SelectHandleTimerEvent+0x2c>
	source->handlerFunction( source->base.context );
    e884e8e0:	03843303          	ld	t1,56(s0)
    e884e8e4:	6408                	ld	a0,8(s0)
}
    e884e8e6:	6402                	ld	s0,0(sp)
    e884e8e8:	60a2                	ld	ra,8(sp)
    e884e8ea:	0141                	addi	sp,sp,16
	source->handlerFunction( source->base.context );
    e884e8ec:	8302                	jr	t1
}
    e884e8ee:	60a2                	ld	ra,8(sp)
    e884e8f0:	6402                	ld	s0,0(sp)
    e884e8f2:	0141                	addi	sp,sp,16
    e884e8f4:	8082                	ret

00000000e884e8f6 <calloc.constprop.6>:
static inline void *calloc(size_t nitems, size_t size)
    e884e8f6:	1101                	addi	sp,sp,-32
    e884e8f8:	ec06                	sd	ra,24(sp)
    e884e8fa:	e822                	sd	s0,16(sp)
    e884e8fc:	e42a                	sd	a0,8(sp)
    p = malloc(len);
    e884e8fe:	7512c0ef          	jal	ra,e887b84e <my_malloc>
    e884e902:	842a                	mv	s0,a0
    memset(p,0,len);
    e884e904:	6622                	ld	a2,8(sp)
    e884e906:	4581                	li	a1,0
    e884e908:	28d2d0ef          	jal	ra,e887c394 <eLIBs_memset>
}
    e884e90c:	8522                	mv	a0,s0
    e884e90e:	60e2                	ld	ra,24(sp)
    e884e910:	6442                	ld	s0,16(sp)
    e884e912:	6105                	addi	sp,sp,32
    e884e914:	8082                	ret

00000000e884e916 <__LibDispatch_ScheduleWork>:
{
    e884e916:	7179                	addi	sp,sp,-48
    e884e918:	fa91540b          	sdd	s0,s1,(sp),1,4
    e884e91c:	84aa                	mv	s1,a0
	item = (dispatch_item_t) calloc( 1, sizeof( *item ) );
    e884e91e:	4561                	li	a0,24
{
    e884e920:	f406                	sd	ra,40(sp)
    e884e922:	f04a                	sd	s2,32(sp)
    e884e924:	e42e                	sd	a1,8(sp)
	item = (dispatch_item_t) calloc( 1, sizeof( *item ) );
    e884e926:	fd1ff0ef          	jal	ra,e884e8f6 <calloc.constprop.6>
	require_action( item, exit2, err = kNoMemoryErr );
    e884e92a:	cd59                	beqz	a0,e884e9c8 <__LibDispatch_ScheduleWork+0xb2>
	item->context  = inContext;
    e884e92c:	65a2                	ld	a1,8(sp)
	pthread_mutex_lock( gDispatchThreadPool_MutexPtr );
    e884e92e:	00095917          	auipc	s2,0x95
    e884e932:	37290913          	addi	s2,s2,882 # e88e3ca0 <gDispatchThreadPool_MutexPtr>
    e884e936:	842a                	mv	s0,a0
	item->function = inFunction;
    e884e938:	e504                	sd	s1,8(a0)
	item->context  = inContext;
    e884e93a:	e90c                	sd	a1,16(a0)
	pthread_mutex_lock( gDispatchThreadPool_MutexPtr );
    e884e93c:	00093503          	ld	a0,0(s2)
    e884e940:	1de2d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	*gDispatchThreadPool_ItemsNext = item;
    e884e944:	00095797          	auipc	a5,0x95
    e884e948:	34c78793          	addi	a5,a5,844 # e88e3c90 <gDispatchThreadPool_ItemsNext>
    e884e94c:	6398                	ld	a4,0(a5)
	 gDispatchThreadPool_ItemsNext = &item->next;
    e884e94e:	e380                	sd	s0,0(a5)
	++gDispatchThreadPool_PendingItems;
    e884e950:	00095797          	auipc	a5,0x95
    e884e954:	35878793          	addi	a5,a5,856 # e88e3ca8 <gDispatchThreadPool_PendingItems>
	*gDispatchThreadPool_ItemsNext = item;
    e884e958:	e300                	sd	s0,0(a4)
	++gDispatchThreadPool_PendingItems;
    e884e95a:	4398                	lw	a4,0(a5)
    e884e95c:	843e                	mv	s0,a5
    e884e95e:	2705                	addiw	a4,a4,1
    e884e960:	c398                	sw	a4,0(a5)
	if( gDispatchThreadPool_IdleThreads > 0 )
    e884e962:	00095717          	auipc	a4,0x95
    e884e966:	32270713          	addi	a4,a4,802 # e88e3c84 <gDispatchThreadPool_IdleThreads>
    e884e96a:	4314                	lw	a3,0(a4)
    e884e96c:	84ba                	mv	s1,a4
    e884e96e:	00d05963          	blez	a3,e884e980 <__LibDispatch_ScheduleWork+0x6a>
		err = pthread_cond_signal( gDispatchThreadPool_ConditionPtr );
    e884e972:	00095797          	auipc	a5,0x95
    e884e976:	30678793          	addi	a5,a5,774 # e88e3c78 <gDispatchThreadPool_ConditionPtr>
    e884e97a:	6388                	ld	a0,0(a5)
    e884e97c:	3882d0ef          	jal	ra,e887bd04 <pthread_cond_signal>
	if( gDispatchThreadPool_IdleThreads < gDispatchThreadPool_PendingItems )
    e884e980:	4098                	lw	a4,0(s1)
    e884e982:	401c                	lw	a5,0(s0)
    e884e984:	02f75763          	bge	a4,a5,e884e9b2 <__LibDispatch_ScheduleWork+0x9c>
		if( gDispatchThreadPool_CurrentThreads < gDispatchThreadPool_MaxThreads )
    e884e988:	00095417          	auipc	s0,0x95
    e884e98c:	2f840413          	addi	s0,s0,760 # e88e3c80 <gDispatchThreadPool_CurrentThreads>
    e884e990:	4018                	lw	a4,0(s0)
    e884e992:	07f00793          	li	a5,127
    e884e996:	00e7ce63          	blt	a5,a4,e884e9b2 <__LibDispatch_ScheduleWork+0x9c>
			tid = esKRNL_TCreate(__LibDispatch_WorkThread, (void*)NULL, 0x4000, KRNL_priolevel5);
    e884e99a:	4695                	li	a3,5
    e884e99c:	6611                	lui	a2,0x4
    e884e99e:	4581                	li	a1,0
    e884e9a0:	00000517          	auipc	a0,0x0
    e884e9a4:	d8650513          	addi	a0,a0,-634 # e884e726 <__LibDispatch_WorkThread>
    e884e9a8:	61c2d0ef          	jal	ra,e887bfc4 <esKRNL_TCreate>
			++gDispatchThreadPool_CurrentThreads;
    e884e9ac:	401c                	lw	a5,0(s0)
    e884e9ae:	2785                	addiw	a5,a5,1
    e884e9b0:	c01c                	sw	a5,0(s0)
	pthread_mutex_unlock( gDispatchThreadPool_MutexPtr );
    e884e9b2:	00093503          	ld	a0,0(s2)
    e884e9b6:	1ac2d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	err = kNoErr;
    e884e9ba:	4501                	li	a0,0
}
    e884e9bc:	70a2                	ld	ra,40(sp)
    e884e9be:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884e9c2:	7902                	ld	s2,32(sp)
    e884e9c4:	6145                	addi	sp,sp,48
    e884e9c6:	8082                	ret
	require_action( item, exit2, err = kNoMemoryErr );
    e884e9c8:	7579                	lui	a0,0xffffe
    e884e9ca:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e884e9ce:	b7fd                	j	e884e9bc <__LibDispatch_ScheduleWork+0xa6>

00000000e884e9d0 <__dispatch_queue_create_internal>:
{
    e884e9d0:	7179                	addi	sp,sp,-48
    e884e9d2:	e42a                	sd	a0,8(sp)
	obj = (dispatch_queue_t) calloc( 1, sizeof( *obj ) );
    e884e9d4:	09000513          	li	a0,144
{
    e884e9d8:	ec22                	sd	s0,24(sp)
    e884e9da:	f406                	sd	ra,40(sp)
    e884e9dc:	f026                	sd	s1,32(sp)
	obj = (dispatch_queue_t) calloc( 1, sizeof( *obj ) );
    e884e9de:	f19ff0ef          	jal	ra,e884e8f6 <calloc.constprop.6>
    e884e9e2:	842a                	mv	s0,a0
	require( obj, exit );
    e884e9e4:	c529                	beqz	a0,e884ea2e <__dispatch_queue_create_internal+0x5e>
	obj->base.magic		= kDispatchQueue_MagicGood;
    e884e9e6:	00072797          	auipc	a5,0x72
    e884e9ea:	14a78793          	addi	a5,a5,330 # e88c0b30 <__PRETTY_FUNCTION__.9551+0x28>
    e884e9ee:	639c                	ld	a5,0(a5)
	if( !inLabel ) inLabel = "";
    e884e9f0:	65a2                	ld	a1,8(sp)
	obj->priority		= DISPATCH_QUEUE_PRIORITY_DEFAULT;
    e884e9f2:	08052423          	sw	zero,136(a0)
	obj->base.magic		= kDispatchQueue_MagicGood;
    e884e9f6:	e11c                	sd	a5,0(a0)
	obj->base.doFree	= __dispatch_queue_free;
    e884e9f8:	00000797          	auipc	a5,0x0
    e884e9fc:	e5c78793          	addi	a5,a5,-420 # e884e854 <__dispatch_queue_free>
    e884ea00:	e91c                	sd	a5,16(a0)
	obj->itemsNext		= &obj->itemsHead;
    e884ea02:	03050793          	addi	a5,a0,48
    e884ea06:	fd1c                	sd	a5,56(a0)
	if( !inLabel ) inLabel = "";
    e884ea08:	e589                	bnez	a1,e884ea12 <__dispatch_queue_create_internal+0x42>
    e884ea0a:	00073597          	auipc	a1,0x73
    e884ea0e:	86658593          	addi	a1,a1,-1946 # e88c1270 <kHTTPServerClass+0x90>
	strlcpy( obj->label, inLabel, sizeof( obj->label ) );
    e884ea12:	04000613          	li	a2,64
    e884ea16:	04840513          	addi	a0,s0,72
    e884ea1a:	064110ef          	jal	ra,e885fa7e <strlcpy>
	err = pthread_mutex_init( &obj->lock, NULL );
    e884ea1e:	02040493          	addi	s1,s0,32
    e884ea22:	4581                	li	a1,0
    e884ea24:	8526                	mv	a0,s1
    e884ea26:	0542d0ef          	jal	ra,e887ba7a <pthread_mutex_init>
	require_noerr( err, exit );
    e884ea2a:	e901                	bnez	a0,e884ea3a <__dispatch_queue_create_internal+0x6a>
	obj->lockPtr = &obj->lock;
    e884ea2c:	f404                	sd	s1,40(s0)
}
    e884ea2e:	8522                	mv	a0,s0
    e884ea30:	70a2                	ld	ra,40(sp)
    e884ea32:	6462                	ld	s0,24(sp)
    e884ea34:	7482                	ld	s1,32(sp)
    e884ea36:	6145                	addi	sp,sp,48
    e884ea38:	8082                	ret
	if( obj ) free( obj );
    e884ea3a:	8522                	mv	a0,s0
    e884ea3c:	0c52d0ef          	jal	ra,e887c300 <eLIBs_free>
    e884ea40:	4401                	li	s0,0
    e884ea42:	b7f5                	j	e884ea2e <__dispatch_queue_create_internal+0x5e>

00000000e884ea44 <dispatch_retain>:
	require( obj, exit );
    e884ea44:	c509                	beqz	a0,e884ea4e <dispatch_retain+0xa>
	atomic_add_32( &obj->base.refCount, 1 );
    e884ea46:	4585                	li	a1,1
    e884ea48:	0511                	addi	a0,a0,4
    e884ea4a:	eecf606f          	j	e8845136 <atomic_add_and_fetch_32>
}
    e884ea4e:	8082                	ret

00000000e884ea50 <dispatch_release>:
	require( obj, exit );
    e884ea50:	c50d                	beqz	a0,e884ea7a <dispatch_release+0x2a>
{
    e884ea52:	1141                	addi	sp,sp,-16
    e884ea54:	e022                	sd	s0,0(sp)
	if( atomic_add_and_fetch_32( &obj->base.refCount, -1 ) == 0 )
    e884ea56:	55fd                	li	a1,-1
    e884ea58:	842a                	mv	s0,a0
    e884ea5a:	0511                	addi	a0,a0,4
{
    e884ea5c:	e406                	sd	ra,8(sp)
	if( atomic_add_and_fetch_32( &obj->base.refCount, -1 ) == 0 )
    e884ea5e:	ed8f60ef          	jal	ra,e8845136 <atomic_add_and_fetch_32>
    e884ea62:	e901                	bnez	a0,e884ea72 <dispatch_release+0x22>
		obj->base.doFree( inObj );
    e884ea64:	01043303          	ld	t1,16(s0)
    e884ea68:	8522                	mv	a0,s0
}
    e884ea6a:	6402                	ld	s0,0(sp)
    e884ea6c:	60a2                	ld	ra,8(sp)
    e884ea6e:	0141                	addi	sp,sp,16
		obj->base.doFree( inObj );
    e884ea70:	8302                	jr	t1
}
    e884ea72:	60a2                	ld	ra,8(sp)
    e884ea74:	6402                	ld	s0,0(sp)
    e884ea76:	0141                	addi	sp,sp,16
    e884ea78:	8082                	ret
    e884ea7a:	8082                	ret

00000000e884ea7c <__dispatch_queue_serial_drain_locked>:
{
    e884ea7c:	7179                	addi	sp,sp,-48
    e884ea7e:	e422                	sd	s0,8(sp)
    e884ea80:	f04e                	sd	s3,32(sp)
    e884ea82:	f406                	sd	ra,40(sp)
    e884ea84:	e826                	sd	s1,16(sp)
    e884ea86:	ec4a                	sd	s2,24(sp)
    e884ea88:	842a                	mv	s0,a0
			inQueue->itemsNext = &inQueue->itemsHead;
    e884ea8a:	03050993          	addi	s3,a0,48
	while( ( item = inQueue->itemsHead ) != NULL )
    e884ea8e:	7804                	ld	s1,48(s0)
    e884ea90:	e881                	bnez	s1,e884eaa0 <__dispatch_queue_serial_drain_locked+0x24>
}
    e884ea92:	70a2                	ld	ra,40(sp)
    e884ea94:	6422                	ld	s0,8(sp)
    e884ea96:	64c2                	ld	s1,16(sp)
    e884ea98:	6962                	ld	s2,24(sp)
    e884ea9a:	7982                	ld	s3,32(sp)
    e884ea9c:	6145                	addi	sp,sp,48
    e884ea9e:	8082                	ret
		if( inQueue->suspendCount > 0 )
    e884eaa0:	407c                	lw	a5,68(s0)
    e884eaa2:	fef048e3          	bgtz	a5,e884ea92 <__dispatch_queue_serial_drain_locked+0x16>
		if( ( inQueue->itemsHead = item->next ) == NULL )
    e884eaa6:	609c                	ld	a5,0(s1)
		releaseQueue = false;
    e884eaa8:	4901                	li	s2,0
		if( ( inQueue->itemsHead = item->next ) == NULL )
    e884eaaa:	f81c                	sd	a5,48(s0)
    e884eaac:	e781                	bnez	a5,e884eab4 <__dispatch_queue_serial_drain_locked+0x38>
			inQueue->itemsNext = &inQueue->itemsHead;
    e884eaae:	03343c23          	sd	s3,56(s0)
			releaseQueue = true;
    e884eab2:	4905                	li	s2,1
		pthread_mutex_unlock( inQueue->lockPtr );
    e884eab4:	7408                	ld	a0,40(s0)
    e884eab6:	0ac2d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
			item->function( item->context );
    e884eaba:	6888                	ld	a0,16(s1)
    e884eabc:	649c                	ld	a5,8(s1)
    e884eabe:	9782                	jalr	a5
			free( item );
    e884eac0:	8526                	mv	a0,s1
    e884eac2:	03f2d0ef          	jal	ra,e887c300 <eLIBs_free>
			if( releaseQueue )
    e884eac6:	00090563          	beqz	s2,e884ead0 <__dispatch_queue_serial_drain_locked+0x54>
				dispatch_release( inQueue );
    e884eaca:	8522                	mv	a0,s0
    e884eacc:	f85ff0ef          	jal	ra,e884ea50 <dispatch_release>
		pthread_mutex_lock( inQueue->lockPtr );
    e884ead0:	7408                	ld	a0,40(s0)
    e884ead2:	04c2d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
    e884ead6:	bf65                	j	e884ea8e <__dispatch_queue_serial_drain_locked+0x12>

00000000e884ead8 <__dispatch_queue_serial_drain>:
	require( DispatchQueueValid( queue ), exit2 );
    e884ead8:	c12d                	beqz	a0,e884eb3a <__dispatch_queue_serial_drain+0x62>
    e884eada:	4118                	lw	a4,0(a0)
    e884eadc:	647177b7          	lui	a5,0x64717
    e884eae0:	56578793          	addi	a5,a5,1381 # 64717565 <memcmp-0x840e8a9b>
    e884eae4:	04f71b63          	bne	a4,a5,e884eb3a <__dispatch_queue_serial_drain+0x62>
    e884eae8:	415c                	lw	a5,4(a0)
    e884eaea:	04f05863          	blez	a5,e884eb3a <__dispatch_queue_serial_drain+0x62>
{
    e884eaee:	1141                	addi	sp,sp,-16
    e884eaf0:	e406                	sd	ra,8(sp)
    e884eaf2:	e022                	sd	s0,0(sp)
    e884eaf4:	842a                	mv	s0,a0
	pthread_mutex_lock( queue->lockPtr );
    e884eaf6:	7508                	ld	a0,40(a0)
    e884eaf8:	0262d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	dispatch_retain( queue ); // Retain so refCount doesn't drop to 0 with lock held.
    e884eafc:	8522                	mv	a0,s0
    e884eafe:	f47ff0ef          	jal	ra,e884ea44 <dispatch_retain>
	if( queue->busy ) goto exit; // Exit if another thread is already draining the queue.
    e884eb02:	04044783          	lbu	a5,64(s0)
    e884eb06:	e38d                	bnez	a5,e884eb28 <__dispatch_queue_serial_drain+0x50>
	queue->busy = true;
    e884eb08:	4785                	li	a5,1
    e884eb0a:	04f40023          	sb	a5,64(s0)
	pthread_setspecific( gDispatchKey_CurrentQueue, queue );
    e884eb0e:	00095797          	auipc	a5,0x95
    e884eb12:	0fe78793          	addi	a5,a5,254 # e88e3c0c <gDispatchKey_CurrentQueue>
    e884eb16:	4388                	lw	a0,0(a5)
    e884eb18:	85a2                	mv	a1,s0
    e884eb1a:	06a2d0ef          	jal	ra,e887bb84 <pthread_setspecific>
	__dispatch_queue_serial_drain_locked( queue );
    e884eb1e:	8522                	mv	a0,s0
    e884eb20:	f5dff0ef          	jal	ra,e884ea7c <__dispatch_queue_serial_drain_locked>
	queue->busy = false;
    e884eb24:	04040023          	sb	zero,64(s0)
	pthread_mutex_unlock( queue->lockPtr );
    e884eb28:	7408                	ld	a0,40(s0)
    e884eb2a:	0382d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	dispatch_release( queue ); // After lock is released so refCount doesn't drop to 0 with lock held.
    e884eb2e:	8522                	mv	a0,s0
}
    e884eb30:	6402                	ld	s0,0(sp)
    e884eb32:	60a2                	ld	ra,8(sp)
    e884eb34:	0141                	addi	sp,sp,16
	dispatch_release( queue ); // After lock is released so refCount doesn't drop to 0 with lock held.
    e884eb36:	f1bff06f          	j	e884ea50 <dispatch_release>
    e884eb3a:	8082                	ret

00000000e884eb3c <__LibDispatchCF_SourcePerform>:
	__dispatch_queue_serial_drain( gDispatchMainQueue );
    e884eb3c:	00095797          	auipc	a5,0x95
    e884eb40:	0dc78793          	addi	a5,a5,220 # e88e3c18 <gDispatchMainQueue>
    e884eb44:	6388                	ld	a0,0(a5)
    e884eb46:	f93ff06f          	j	e884ead8 <__dispatch_queue_serial_drain>

00000000e884eb4a <__dispatch_source_free>:
{
    e884eb4a:	1141                	addi	sp,sp,-16
    e884eb4c:	e022                	sd	s0,0(sp)
    e884eb4e:	e406                	sd	ra,8(sp)
	if( !source->canceled && source->cancelFunction )
    e884eb50:	03054783          	lbu	a5,48(a0)
{
    e884eb54:	842a                	mv	s0,a0
	if( !source->canceled && source->cancelFunction )
    e884eb56:	e789                	bnez	a5,e884eb60 <__dispatch_source_free+0x16>
    e884eb58:	613c                	ld	a5,64(a0)
    e884eb5a:	c399                	beqz	a5,e884eb60 <__dispatch_source_free+0x16>
		source->cancelFunction( source->base.context );
    e884eb5c:	6508                	ld	a0,8(a0)
    e884eb5e:	9782                	jalr	a5
	dispatch_release( source->queue );
    e884eb60:	7408                	ld	a0,40(s0)
    e884eb62:	eefff0ef          	jal	ra,e884ea50 <dispatch_release>
	source->base.magic = kDispatchQueue_MagicBad;
    e884eb66:	445157b7          	lui	a5,0x44515
    e884eb6a:	5457879b          	addiw	a5,a5,1349
    e884eb6e:	c01c                	sw	a5,0(s0)
	__dispatch_free_object( source );
    e884eb70:	8522                	mv	a0,s0
}
    e884eb72:	6402                	ld	s0,0(sp)
    e884eb74:	60a2                	ld	ra,8(sp)
    e884eb76:	0141                	addi	sp,sp,16
	__dispatch_free_object( source );
    e884eb78:	a7bff06f          	j	e884e5f2 <__dispatch_free_object>

00000000e884eb7c <__dispatch_queue_concurrent_drain>:
{
    e884eb7c:	7139                	addi	sp,sp,-64
    e884eb7e:	f85a                	sd	s6,48(sp)
    e884eb80:	f891540b          	sdd	s0,s1,(sp),0,4
    e884eb84:	fb31590b          	sdd	s2,s3,(sp),1,4
    e884eb88:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e884eb8c:	fc06                	sd	ra,56(sp)
	for( i = n; i > 0; )
    e884eb8e:	448d                	li	s1,3
	lastQueue = NULL;
    e884eb90:	4981                	li	s3,0
		queue = gDispatchConcurrentQueues[ i - 1 ];
    e884eb92:	00095a97          	auipc	s5,0x95
    e884eb96:	05ea8a93          	addi	s5,s5,94 # e88e3bf0 <gDispatchConcurrentQueues>
				pthread_setspecific( gDispatchKey_CurrentQueue, queue );
    e884eb9a:	00095b17          	auipc	s6,0x95
    e884eb9e:	072b0b13          	addi	s6,s6,114 # e88e3c0c <gDispatchKey_CurrentQueue>
		queue = gDispatchConcurrentQueues[ i - 1 ];
    e884eba2:	14fd                	addi	s1,s1,-1
    e884eba4:	669ac40b          	lrd	s0,s5,s1,3
		pthread_mutex_lock( queue->lockPtr );
    e884eba8:	7408                	ld	a0,40(s0)
    e884ebaa:	7752c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		if( ( ( item = queue->itemsHead ) != NULL ) && ( ( queue->itemsHead = item->next ) == NULL ) )
    e884ebae:	03043903          	ld	s2,48(s0)
    e884ebb2:	02091f63          	bnez	s2,e884ebf0 <__dispatch_queue_concurrent_drain+0x74>
		releaseQueue = false;
    e884ebb6:	4a01                	li	s4,0
		pthread_mutex_unlock( queue->lockPtr );
    e884ebb8:	7408                	ld	a0,40(s0)
    e884ebba:	7a92c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		if( item )
    e884ebbe:	04090263          	beqz	s2,e884ec02 <__dispatch_queue_concurrent_drain+0x86>
			if( queue != lastQueue )
    e884ebc2:	01340763          	beq	s0,s3,e884ebd0 <__dispatch_queue_concurrent_drain+0x54>
				pthread_setspecific( gDispatchKey_CurrentQueue, queue );
    e884ebc6:	000b2503          	lw	a0,0(s6)
    e884ebca:	85a2                	mv	a1,s0
    e884ebcc:	7b92c0ef          	jal	ra,e887bb84 <pthread_setspecific>
			item->function( item->context );
    e884ebd0:	00893783          	ld	a5,8(s2)
    e884ebd4:	01093503          	ld	a0,16(s2)
		queue = gDispatchConcurrentQueues[ i - 1 ];
    e884ebd8:	89a2                	mv	s3,s0
			i = n; // Reset back to the highest priority queue so we always prefer it.
    e884ebda:	448d                	li	s1,3
			item->function( item->context );
    e884ebdc:	9782                	jalr	a5
			free( item );
    e884ebde:	854a                	mv	a0,s2
    e884ebe0:	7202d0ef          	jal	ra,e887c300 <eLIBs_free>
		if( releaseQueue )
    e884ebe4:	fa0a0fe3          	beqz	s4,e884eba2 <__dispatch_queue_concurrent_drain+0x26>
			dispatch_release( queue );
    e884ebe8:	8522                	mv	a0,s0
    e884ebea:	e67ff0ef          	jal	ra,e884ea50 <dispatch_release>
    e884ebee:	a821                	j	e884ec06 <__dispatch_queue_concurrent_drain+0x8a>
		if( ( ( item = queue->itemsHead ) != NULL ) && ( ( queue->itemsHead = item->next ) == NULL ) )
    e884ebf0:	00093783          	ld	a5,0(s2)
    e884ebf4:	f81c                	sd	a5,48(s0)
    e884ebf6:	f3e1                	bnez	a5,e884ebb6 <__dispatch_queue_concurrent_drain+0x3a>
			queue->itemsNext = &queue->itemsHead;
    e884ebf8:	03040793          	addi	a5,s0,48
    e884ebfc:	fc1c                	sd	a5,56(s0)
			releaseQueue = true;
    e884ebfe:	4a05                	li	s4,1
    e884ec00:	bf65                	j	e884ebb8 <__dispatch_queue_concurrent_drain+0x3c>
		if( releaseQueue )
    e884ec02:	fe0a13e3          	bnez	s4,e884ebe8 <__dispatch_queue_concurrent_drain+0x6c>
	for( i = n; i > 0; )
    e884ec06:	fcd1                	bnez	s1,e884eba2 <__dispatch_queue_concurrent_drain+0x26>
}
    e884ec08:	70e2                	ld	ra,56(sp)
    e884ec0a:	f891440b          	ldd	s0,s1,(sp),0,4
    e884ec0e:	7b42                	ld	s6,48(sp)
    e884ec10:	fb31490b          	ldd	s2,s3,(sp),1,4
    e884ec14:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e884ec18:	6121                	addi	sp,sp,64
    e884ec1a:	8082                	ret

00000000e884ec1c <dispatch_set_context>:
	( (dispatch_union *) inObj )->base.context = inContext;
    e884ec1c:	e50c                	sd	a1,8(a0)
}
    e884ec1e:	8082                	ret

00000000e884ec20 <dispatch_async_f>:
	require_action( DispatchQueueValid( inQueue ), exit, err = EINVAL );
    e884ec20:	0e050e63          	beqz	a0,e884ed1c <dispatch_async_f+0xfc>
    e884ec24:	4118                	lw	a4,0(a0)
    e884ec26:	647177b7          	lui	a5,0x64717
    e884ec2a:	56578793          	addi	a5,a5,1381 # 64717565 <memcmp-0x840e8a9b>
    e884ec2e:	0ef71763          	bne	a4,a5,e884ed1c <dispatch_async_f+0xfc>
    e884ec32:	415c                	lw	a5,4(a0)
    e884ec34:	0ef05463          	blez	a5,e884ed1c <dispatch_async_f+0xfc>
{
    e884ec38:	7179                	addi	sp,sp,-48
    e884ec3a:	e422                	sd	s0,8(sp)
    e884ec3c:	842a                	mv	s0,a0
	item = (dispatch_item_t) calloc( 1, sizeof( *item ) );
    e884ec3e:	4561                	li	a0,24
{
    e884ec40:	e826                	sd	s1,16(sp)
    e884ec42:	ec4a                	sd	s2,24(sp)
    e884ec44:	f04e                	sd	s3,32(sp)
    e884ec46:	f406                	sd	ra,40(sp)
    e884ec48:	89b2                	mv	s3,a2
    e884ec4a:	892e                	mv	s2,a1
	item = (dispatch_item_t) calloc( 1, sizeof( *item ) );
    e884ec4c:	cabff0ef          	jal	ra,e884e8f6 <calloc.constprop.6>
    e884ec50:	84aa                	mv	s1,a0
	require_action( item, exit, err = ENOMEM );
    e884ec52:	cd55                	beqz	a0,e884ed0e <dispatch_async_f+0xee>
	item->context	= inContext;
    e884ec54:	01253823          	sd	s2,16(a0)
	item->function	= inFunction;
    e884ec58:	01353423          	sd	s3,8(a0)
	pthread_mutex_lock( inQueue->lockPtr );
    e884ec5c:	7408                	ld	a0,40(s0)
    e884ec5e:	6c12c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	wasEmpty = (Boolean)( inQueue->itemsHead == NULL );
    e884ec62:	03043903          	ld	s2,48(s0)
	if( wasEmpty ) dispatch_retain( inQueue );
    e884ec66:	00091563          	bnez	s2,e884ec70 <dispatch_async_f+0x50>
    e884ec6a:	8522                	mv	a0,s0
    e884ec6c:	dd9ff0ef          	jal	ra,e884ea44 <dispatch_retain>
	*inQueue->itemsNext = item;
    e884ec70:	7c1c                	ld	a5,56(s0)
    e884ec72:	e384                	sd	s1,0(a5)
	if( inQueue == gDispatchMainQueue )
    e884ec74:	00095797          	auipc	a5,0x95
    e884ec78:	fa478793          	addi	a5,a5,-92 # e88e3c18 <gDispatchMainQueue>
    e884ec7c:	639c                	ld	a5,0(a5)
	 inQueue->itemsNext = &item->next;
    e884ec7e:	fc04                	sd	s1,56(s0)
	if( inQueue == gDispatchMainQueue )
    e884ec80:	04879d63          	bne	a5,s0,e884ecda <dispatch_async_f+0xba>
			gDispatchMainQueue_WorkPending = true;
    e884ec84:	4785                	li	a5,1
    e884ec86:	00095717          	auipc	a4,0x95
    e884ec8a:	faf70923          	sb	a5,-78(a4) # e88e3c38 <gDispatchMainQueue_WorkPending>
			pthread_cond_signal( gDispatchMainQueue_ConditionPtr );
    e884ec8e:	00095797          	auipc	a5,0x95
    e884ec92:	fa278793          	addi	a5,a5,-94 # e88e3c30 <gDispatchMainQueue_ConditionPtr>
    e884ec96:	6388                	ld	a0,0(a5)
    e884ec98:	06c2d0ef          	jal	ra,e887bd04 <pthread_cond_signal>
	CFRunLoopSourceSignal( gDispatchCF_Source );
    e884ec9c:	00095797          	auipc	a5,0x95
    e884eca0:	f4c78793          	addi	a5,a5,-180 # e88e3be8 <gDispatchCF_Source>
    e884eca4:	6388                	ld	a0,0(a5)
    e884eca6:	d6cfc0ef          	jal	ra,e884b212 <CFRunLoopSourceSignal>
	CFRunLoopWakeUp( gDispatchCF_MainRL );
    e884ecaa:	00095797          	auipc	a5,0x95
    e884ecae:	f3678793          	addi	a5,a5,-202 # e88e3be0 <gDispatchCF_MainRL>
    e884ecb2:	6388                	ld	a0,0(a5)
    e884ecb4:	b94fc0ef          	jal	ra,e884b048 <CFRunLoopWakeUp>
		if( gDispatchMainQueueScheduleHookFunc )
    e884ecb8:	00095797          	auipc	a5,0x95
    e884ecbc:	f6878793          	addi	a5,a5,-152 # e88e3c20 <gDispatchMainQueueScheduleHookFunc>
    e884ecc0:	639c                	ld	a5,0(a5)
    e884ecc2:	c399                	beqz	a5,e884ecc8 <dispatch_async_f+0xa8>
			gDispatchMainQueueScheduleHookFunc( NULL );
    e884ecc4:	4501                	li	a0,0
    e884ecc6:	9782                	jalr	a5
	pthread_mutex_unlock( inQueue->lockPtr );
    e884ecc8:	7408                	ld	a0,40(s0)
}
    e884ecca:	6422                	ld	s0,8(sp)
    e884eccc:	70a2                	ld	ra,40(sp)
    e884ecce:	64c2                	ld	s1,16(sp)
    e884ecd0:	6962                	ld	s2,24(sp)
    e884ecd2:	7982                	ld	s3,32(sp)
    e884ecd4:	6145                	addi	sp,sp,48
	pthread_mutex_unlock( inQueue->lockPtr );
    e884ecd6:	68d2c06f          	j	e887bb62 <pthread_mutex_unlock>
	else if( inQueue->concurrent )
    e884ecda:	04244783          	lbu	a5,66(s0)
    e884ecde:	cb89                	beqz	a5,e884ecf0 <dispatch_async_f+0xd0>
		err = __LibDispatch_ScheduleWork( __dispatch_queue_concurrent_drain, inQueue );
    e884ece0:	85a2                	mv	a1,s0
    e884ece2:	00000517          	auipc	a0,0x0
    e884ece6:	e9a50513          	addi	a0,a0,-358 # e884eb7c <__dispatch_queue_concurrent_drain>
		err = __LibDispatch_ScheduleWork( __dispatch_queue_serial_drain, inQueue );
    e884ecea:	c2dff0ef          	jal	ra,e884e916 <__LibDispatch_ScheduleWork>
    e884ecee:	bfe9                	j	e884ecc8 <dispatch_async_f+0xa8>
	else if( wasEmpty && !inQueue->busy && ( inQueue->suspendCount == 0 ) )
    e884ecf0:	fc091ce3          	bnez	s2,e884ecc8 <dispatch_async_f+0xa8>
    e884ecf4:	6038                	ld	a4,64(s0)
    e884ecf6:	57fd                	li	a5,-1
    e884ecf8:	1782                	slli	a5,a5,0x20
    e884ecfa:	0ff78793          	addi	a5,a5,255
    e884ecfe:	8ff9                	and	a5,a5,a4
    e884ed00:	f7e1                	bnez	a5,e884ecc8 <dispatch_async_f+0xa8>
		err = __LibDispatch_ScheduleWork( __dispatch_queue_serial_drain, inQueue );
    e884ed02:	85a2                	mv	a1,s0
    e884ed04:	00000517          	auipc	a0,0x0
    e884ed08:	dd450513          	addi	a0,a0,-556 # e884ead8 <__dispatch_queue_serial_drain>
    e884ed0c:	bff9                	j	e884ecea <dispatch_async_f+0xca>
}
    e884ed0e:	70a2                	ld	ra,40(sp)
    e884ed10:	6422                	ld	s0,8(sp)
    e884ed12:	64c2                	ld	s1,16(sp)
    e884ed14:	6962                	ld	s2,24(sp)
    e884ed16:	7982                	ld	s3,32(sp)
    e884ed18:	6145                	addi	sp,sp,48
    e884ed1a:	8082                	ret
    e884ed1c:	8082                	ret

00000000e884ed1e <dispatch_sync_f>:
{
    e884ed1e:	711d                	addi	sp,sp,-96
    e884ed20:	ec86                	sd	ra,88(sp)
    e884ed22:	e8a2                	sd	s0,80(sp)
    e884ed24:	e4a6                	sd	s1,72(sp)
	itemData.function		= inFunction;
    e884ed26:	e432                	sd	a2,8(sp)
	itemData.context		= inContext;
    e884ed28:	e82e                	sd	a1,16(sp)
	itemData.mutexPtr		= NULL;
    e884ed2a:	f002                	sd	zero,32(sp)
	itemData.conditionPtr	= NULL;
    e884ed2c:	f802                	sd	zero,48(sp)
	itemData.done			= false;
    e884ed2e:	02010c23          	sb	zero,56(sp)
	require( DispatchQueueValid( inQueue ), exit );
    e884ed32:	cd21                	beqz	a0,e884ed8a <dispatch_sync_f+0x6c>
    e884ed34:	4118                	lw	a4,0(a0)
    e884ed36:	647177b7          	lui	a5,0x64717
    e884ed3a:	56578793          	addi	a5,a5,1381 # 64717565 <memcmp-0x840e8a9b>
    e884ed3e:	842a                	mv	s0,a0
    e884ed40:	04f71563          	bne	a4,a5,e884ed8a <dispatch_sync_f+0x6c>
    e884ed44:	415c                	lw	a5,4(a0)
    e884ed46:	04f05263          	blez	a5,e884ed8a <dispatch_sync_f+0x6c>
	err = pthread_mutex_init( &itemData.mutex, NULL );
    e884ed4a:	0824                	addi	s1,sp,24
    e884ed4c:	4581                	li	a1,0
    e884ed4e:	8526                	mv	a0,s1
    e884ed50:	52b2c0ef          	jal	ra,e887ba7a <pthread_mutex_init>
	require_noerr( err, exit );
    e884ed54:	e91d                	bnez	a0,e884ed8a <dispatch_sync_f+0x6c>
	itemData.mutexPtr = &itemData.mutex;
    e884ed56:	f026                	sd	s1,32(sp)
	err = pthread_cond_init( &itemData.condition, NULL );
    e884ed58:	1024                	addi	s1,sp,40
    e884ed5a:	4581                	li	a1,0
    e884ed5c:	8526                	mv	a0,s1
    e884ed5e:	7572c0ef          	jal	ra,e887bcb4 <pthread_cond_init>
	require_noerr( err, exit );
    e884ed62:	e505                	bnez	a0,e884ed8a <dispatch_sync_f+0x6c>
	dispatch_async_f( inQueue, &itemData, __dispatch_sync_callback );
    e884ed64:	8522                	mv	a0,s0
    e884ed66:	00000617          	auipc	a2,0x0
    e884ed6a:	8b660613          	addi	a2,a2,-1866 # e884e61c <__dispatch_sync_callback>
    e884ed6e:	002c                	addi	a1,sp,8
	itemData.conditionPtr = &itemData.condition;
    e884ed70:	f826                	sd	s1,48(sp)
	dispatch_async_f( inQueue, &itemData, __dispatch_sync_callback );
    e884ed72:	eafff0ef          	jal	ra,e884ec20 <dispatch_async_f>
	pthread_mutex_lock( itemData.mutexPtr );
    e884ed76:	7502                	ld	a0,32(sp)
    e884ed78:	5a72c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	while( !itemData.done )
    e884ed7c:	03814783          	lbu	a5,56(sp)
    e884ed80:	7582                	ld	a1,32(sp)
    e884ed82:	c395                	beqz	a5,e884eda6 <dispatch_sync_f+0x88>
	pthread_mutex_unlock( itemData.mutexPtr );
    e884ed84:	852e                	mv	a0,a1
    e884ed86:	5dd2c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	pthread_cond_forget( &itemData.conditionPtr );
    e884ed8a:	7542                	ld	a0,48(sp)
    e884ed8c:	c501                	beqz	a0,e884ed94 <dispatch_sync_f+0x76>
    e884ed8e:	74f2c0ef          	jal	ra,e887bcdc <pthread_cond_destroy>
    e884ed92:	f802                	sd	zero,48(sp)
	pthread_mutex_forget( &itemData.mutexPtr );
    e884ed94:	7502                	ld	a0,32(sp)
    e884ed96:	c119                	beqz	a0,e884ed9c <dispatch_sync_f+0x7e>
    e884ed98:	53d2c0ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
}
    e884ed9c:	60e6                	ld	ra,88(sp)
    e884ed9e:	6446                	ld	s0,80(sp)
    e884eda0:	64a6                	ld	s1,72(sp)
    e884eda2:	6125                	addi	sp,sp,96
    e884eda4:	8082                	ret
		pthread_cond_wait( itemData.conditionPtr, itemData.mutexPtr );
    e884eda6:	7542                	ld	a0,48(sp)
    e884eda8:	7612c0ef          	jal	ra,e887bd08 <pthread_cond_wait>
    e884edac:	bfc1                	j	e884ed7c <dispatch_sync_f+0x5e>

00000000e884edae <dispatch_source_create>:
{
    e884edae:	7179                	addi	sp,sp,-48
    e884edb0:	f406                	sd	ra,40(sp)
    e884edb2:	e422                	sd	s0,8(sp)
    e884edb4:	e826                	sd	s1,16(sp)
    e884edb6:	ec4a                	sd	s2,24(sp)
    e884edb8:	f04e                	sd	s3,32(sp)
	require( DispatchQueueValid( inQueue ), exit );
    e884edba:	e299                	bnez	a3,e884edc0 <dispatch_source_create+0x12>
	if( obj ) __dispatch_source_free( obj );
    e884edbc:	4401                	li	s0,0
	return( source );
    e884edbe:	a8a9                	j	e884ee18 <dispatch_source_create+0x6a>
	require( DispatchQueueValid( inQueue ), exit );
    e884edc0:	4298                	lw	a4,0(a3)
    e884edc2:	647177b7          	lui	a5,0x64717
    e884edc6:	56578793          	addi	a5,a5,1381 # 64717565 <memcmp-0x840e8a9b>
    e884edca:	fef719e3          	bne	a4,a5,e884edbc <dispatch_source_create+0xe>
    e884edce:	42dc                	lw	a5,4(a3)
    e884edd0:	fef056e3          	blez	a5,e884edbc <dispatch_source_create+0xe>
    e884edd4:	84aa                	mv	s1,a0
	obj = (dispatch_source_t) calloc( 1, sizeof( *obj ) );
    e884edd6:	07800513          	li	a0,120
    e884edda:	8936                	mv	s2,a3
    e884eddc:	89ae                	mv	s3,a1
    e884edde:	b19ff0ef          	jal	ra,e884e8f6 <calloc.constprop.6>
    e884ede2:	842a                	mv	s0,a0
	require( obj, exit );
    e884ede4:	dd61                	beqz	a0,e884edbc <dispatch_source_create+0xe>
	obj->base.magic			= kDispatchSource_MagicGood;
    e884ede6:	00072797          	auipc	a5,0x72
    e884edea:	d6a78793          	addi	a5,a5,-662 # e88c0b50 <__PRETTY_FUNCTION__.9551+0x48>
    e884edee:	639c                	ld	a5,0(a5)
	obj->queue				= inQueue;
    e884edf0:	03253423          	sd	s2,40(a0)
	obj->type				= inType;
    e884edf4:	c524                	sw	s1,72(a0)
	obj->base.magic			= kDispatchSource_MagicGood;
    e884edf6:	e11c                	sd	a5,0(a0)
	obj->base.doFree		= __LibDispatch_PlatformFreeSource;
    e884edf8:	00000797          	auipc	a5,0x0
    e884edfc:	88c78793          	addi	a5,a5,-1908 # e884e684 <__LibDispatch_PlatformFreeSource>
    e884ee00:	e91c                	sd	a5,16(a0)
	obj->suspendCount		= 1;
    e884ee02:	4785                	li	a5,1
    e884ee04:	d11c                	sw	a5,32(a0)
	dispatch_retain( inQueue );
    e884ee06:	854a                	mv	a0,s2
    e884ee08:	c3dff0ef          	jal	ra,e884ea44 <dispatch_retain>
	if( ( inType == DISPATCH_SOURCE_TYPE_READ ) || ( inType == DISPATCH_SOURCE_TYPE_WRITE ) )
    e884ee0c:	c481                	beqz	s1,e884ee14 <dispatch_source_create+0x66>
    e884ee0e:	478d                	li	a5,3
    e884ee10:	00f49c63          	bne	s1,a5,e884ee28 <dispatch_source_create+0x7a>
		obj->u.rw.fd = (SocketRef) inHandle;
    e884ee14:	05342c23          	sw	s3,88(s0)
}
    e884ee18:	8522                	mv	a0,s0
    e884ee1a:	70a2                	ld	ra,40(sp)
    e884ee1c:	6422                	ld	s0,8(sp)
    e884ee1e:	64c2                	ld	s1,16(sp)
    e884ee20:	6962                	ld	s2,24(sp)
    e884ee22:	7982                	ld	s3,32(sp)
    e884ee24:	6145                	addi	sp,sp,48
    e884ee26:	8082                	ret
	else if( inType == DISPATCH_SOURCE_TYPE_SIGNAL )
    e884ee28:	4785                	li	a5,1
    e884ee2a:	00f49563          	bne	s1,a5,e884ee34 <dispatch_source_create+0x86>
		obj->u.sig.sig = (unsigned long) inHandle;
    e884ee2e:	05343c23          	sd	s3,88(s0)
    e884ee32:	b7dd                	j	e884ee18 <dispatch_source_create+0x6a>
	else if( inType == DISPATCH_SOURCE_TYPE_TIMER )
    e884ee34:	4789                	li	a5,2
    e884ee36:	fef481e3          	beq	s1,a5,e884ee18 <dispatch_source_create+0x6a>
		dlogassert( "bad type: %d", inType );
    e884ee3a:	88a6                	mv	a7,s1
    e884ee3c:	00072817          	auipc	a6,0x72
    e884ee40:	d1c80813          	addi	a6,a6,-740 # e88c0b58 <__PRETTY_FUNCTION__.9551+0x50>
    e884ee44:	00072797          	auipc	a5,0x72
    e884ee48:	c8c78793          	addi	a5,a5,-884 # e88c0ad0 <__PRETTY_FUNCTION__.9354>
    e884ee4c:	77700713          	li	a4,1911
    e884ee50:	00072697          	auipc	a3,0x72
    e884ee54:	d1868693          	addi	a3,a3,-744 # e88c0b68 <__PRETTY_FUNCTION__.9551+0x60>
    e884ee58:	4601                	li	a2,0
    e884ee5a:	4581                	li	a1,0
    e884ee5c:	4501                	li	a0,0
    e884ee5e:	d6aff0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	if( obj ) __dispatch_source_free( obj );
    e884ee62:	8522                	mv	a0,s0
    e884ee64:	ce7ff0ef          	jal	ra,e884eb4a <__dispatch_source_free>
    e884ee68:	bf91                	j	e884edbc <dispatch_source_create+0xe>

00000000e884ee6a <dispatch_source_set_event_handler_f>:
	inSource->handlerFunction = inHandler;
    e884ee6a:	fd0c                	sd	a1,56(a0)
}
    e884ee6c:	8082                	ret

00000000e884ee6e <dispatch_source_set_cancel_handler_f>:
	inSource->cancelFunction = inHandler;
    e884ee6e:	e12c                	sd	a1,64(a0)
}
    e884ee70:	8082                	ret

00000000e884ee72 <dispatch_once_f_slow>:
{
    e884ee72:	7179                	addi	sp,sp,-48
    e884ee74:	ec4a                	sd	s2,24(sp)
    e884ee76:	f04e                	sd	s3,32(sp)
    e884ee78:	8932                	mv	s2,a2
    e884ee7a:	89ae                	mv	s3,a1
	prev = atomic_val_compare_and_swap_32( inOnce, 0, 1 );
    e884ee7c:	4605                	li	a2,1
    e884ee7e:	4581                	li	a1,0
{
    e884ee80:	e422                	sd	s0,8(sp)
    e884ee82:	e826                	sd	s1,16(sp)
    e884ee84:	f406                	sd	ra,40(sp)
    e884ee86:	842a                	mv	s0,a0
	if( __builtin_expect( prev, 2 ) == 2 )
    e884ee88:	4489                	li	s1,2
	prev = atomic_val_compare_and_swap_32( inOnce, 0, 1 );
    e884ee8a:	b2af60ef          	jal	ra,e88451b4 <atomic_val_compare_and_swap_32>
	if( __builtin_expect( prev, 2 ) == 2 )
    e884ee8e:	00950863          	beq	a0,s1,e884ee9e <dispatch_once_f_slow+0x2c>
	else if( prev == 0 )
    e884ee92:	ed09                	bnez	a0,e884eeac <dispatch_once_f_slow+0x3a>
		inFunction( inContext );
    e884ee94:	854e                	mv	a0,s3
    e884ee96:	9902                	jalr	s2
		atomic_read_write_barrier();
    e884ee98:	b1af60ef          	jal	ra,e88451b2 <atomic_read_write_barrier>
		*inOnce = 2;
    e884ee9c:	c004                	sw	s1,0(s0)
}
    e884ee9e:	70a2                	ld	ra,40(sp)
    e884eea0:	6422                	ld	s0,8(sp)
    e884eea2:	64c2                	ld	s1,16(sp)
    e884eea4:	6962                	ld	s2,24(sp)
    e884eea6:	7982                	ld	s3,32(sp)
    e884eea8:	6145                	addi	sp,sp,48
    e884eeaa:	8082                	ret
			atomic_yield();
    e884eeac:	4505                	li	a0,1
    e884eeae:	1682d0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		}	while( *volatileOnce != 2 );
    e884eeb2:	401c                	lw	a5,0(s0)
    e884eeb4:	fe979ce3          	bne	a5,s1,e884eeac <dispatch_once_f_slow+0x3a>
}
    e884eeb8:	6422                	ld	s0,8(sp)
    e884eeba:	70a2                	ld	ra,40(sp)
    e884eebc:	64c2                	ld	s1,16(sp)
    e884eebe:	6962                	ld	s2,24(sp)
    e884eec0:	7982                	ld	s3,32(sp)
    e884eec2:	6145                	addi	sp,sp,48
		atomic_read_write_barrier();
    e884eec4:	aeef606f          	j	e88451b2 <atomic_read_write_barrier>

00000000e884eec8 <dispatch_semaphore_create>:
{
    e884eec8:	1101                	addi	sp,sp,-32
    e884eeca:	e826                	sd	s1,16(sp)
    e884eecc:	84aa                	mv	s1,a0
	obj = (dispatch_semaphore_t) calloc( 1, sizeof( *obj ) );
    e884eece:	04800513          	li	a0,72
{
    e884eed2:	e422                	sd	s0,8(sp)
    e884eed4:	ec06                	sd	ra,24(sp)
	obj = (dispatch_semaphore_t) calloc( 1, sizeof( *obj ) );
    e884eed6:	a21ff0ef          	jal	ra,e884e8f6 <calloc.constprop.6>
    e884eeda:	842a                	mv	s0,a0
	require( obj, exit );
    e884eedc:	c90d                	beqz	a0,e884ef0e <dispatch_semaphore_create+0x46>
	obj->base.refCount	= 1;
    e884eede:	4785                	li	a5,1
    e884eee0:	c15c                	sw	a5,4(a0)
	obj->value			= inValue;
    e884eee2:	e124                	sd	s1,64(a0)
	obj->base.doFree	= __dispatch_semaphore_free;
    e884eee4:	00000797          	auipc	a5,0x0
    e884eee8:	81678793          	addi	a5,a5,-2026 # e884e6fa <__dispatch_semaphore_free>
	err = pthread_mutex_init( &obj->mutex, NULL );
    e884eeec:	02050493          	addi	s1,a0,32
	obj->base.doFree	= __dispatch_semaphore_free;
    e884eef0:	e91c                	sd	a5,16(a0)
	err = pthread_mutex_init( &obj->mutex, NULL );
    e884eef2:	4581                	li	a1,0
    e884eef4:	8526                	mv	a0,s1
    e884eef6:	3852c0ef          	jal	ra,e887ba7a <pthread_mutex_init>
	require_noerr( err, exit );
    e884eefa:	e105                	bnez	a0,e884ef1a <dispatch_semaphore_create+0x52>
	obj->mutexPtr = &obj->mutex;
    e884eefc:	f404                	sd	s1,40(s0)
	err = pthread_cond_init( &obj->condition, NULL );
    e884eefe:	03040493          	addi	s1,s0,48
    e884ef02:	4581                	li	a1,0
    e884ef04:	8526                	mv	a0,s1
    e884ef06:	5af2c0ef          	jal	ra,e887bcb4 <pthread_cond_init>
	require_noerr( err, exit );
    e884ef0a:	e901                	bnez	a0,e884ef1a <dispatch_semaphore_create+0x52>
	obj->conditionPtr = &obj->condition;
    e884ef0c:	fc04                	sd	s1,56(s0)
}
    e884ef0e:	8522                	mv	a0,s0
    e884ef10:	60e2                	ld	ra,24(sp)
    e884ef12:	6422                	ld	s0,8(sp)
    e884ef14:	64c2                	ld	s1,16(sp)
    e884ef16:	6105                	addi	sp,sp,32
    e884ef18:	8082                	ret
	if( obj ) dispatch_release( obj );
    e884ef1a:	8522                	mv	a0,s0
    e884ef1c:	b35ff0ef          	jal	ra,e884ea50 <dispatch_release>
    e884ef20:	4401                	li	s0,0
    e884ef22:	b7f5                	j	e884ef0e <dispatch_semaphore_create+0x46>

00000000e884ef24 <dispatch_semaphore_signal>:
	if( inSem == NULL )
    e884ef24:	c515                	beqz	a0,e884ef50 <dispatch_semaphore_signal+0x2c>
{
    e884ef26:	1141                	addi	sp,sp,-16
    e884ef28:	e406                	sd	ra,8(sp)
    e884ef2a:	e022                	sd	s0,0(sp)
    e884ef2c:	842a                	mv	s0,a0
	pthread_mutex_lock( inSem->mutexPtr );
    e884ef2e:	7508                	ld	a0,40(a0)
    e884ef30:	3ef2c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		inSem->value += 1;
    e884ef34:	603c                	ld	a5,64(s0)
		err = pthread_cond_signal( inSem->conditionPtr );
    e884ef36:	7c08                	ld	a0,56(s0)
		inSem->value += 1;
    e884ef38:	0785                	addi	a5,a5,1
    e884ef3a:	e03c                	sd	a5,64(s0)
		err = pthread_cond_signal( inSem->conditionPtr );
    e884ef3c:	5c92c0ef          	jal	ra,e887bd04 <pthread_cond_signal>
	pthread_mutex_unlock( inSem->mutexPtr );
    e884ef40:	7408                	ld	a0,40(s0)
    e884ef42:	4212c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e884ef46:	6402                	ld	s0,0(sp)
    e884ef48:	60a2                	ld	ra,8(sp)
	return( 0 );
    e884ef4a:	4501                	li	a0,0
}
    e884ef4c:	0141                	addi	sp,sp,16
    e884ef4e:	8082                	ret
		return -1;
    e884ef50:	557d                	li	a0,-1
}
    e884ef52:	8082                	ret

00000000e884ef54 <dispatch_time>:
	if( inWhen == DISPATCH_TIME_FOREVER )
    e884ef54:	577d                	li	a4,-1
    e884ef56:	00e51463          	bne	a0,a4,e884ef5e <dispatch_time+0xa>
		return( DISPATCH_TIME_FOREVER );
    e884ef5a:	557d                	li	a0,-1
}
    e884ef5c:	8082                	ret
{
    e884ef5e:	1101                	addi	sp,sp,-32
    e884ef60:	e822                	sd	s0,16(sp)
    e884ef62:	ec06                	sd	ra,24(sp)
	inDelta /= kNanosecondsPerMillisecond;
    e884ef64:	000f4437          	lui	s0,0xf4
    e884ef68:	24040413          	addi	s0,s0,576 # f4240 <memcmp-0xe870bdc0>
    e884ef6c:	0285c433          	div	s0,a1,s0
	if( ( (int64_t) inWhen ) < 0 )
    e884ef70:	02055463          	bgez	a0,e884ef98 <dispatch_time+0x44>
		if( inDelta >= 0 )
    e884ef74:	fff0c7b7          	lui	a5,0xfff0c
    e884ef78:	dc178793          	addi	a5,a5,-575 # fffffffffff0bdc1 <__DRAM0_INF_BASE+0xfffffffefff1bdc1>
    e884ef7c:	8d01                	sub	a0,a0,s0
    e884ef7e:	00f5c963          	blt	a1,a5,e884ef90 <dispatch_time+0x3c>
			if( (int64_t)( inWhen -= inDelta ) >= 0 )
    e884ef82:	00054363          	bltz	a0,e884ef88 <dispatch_time+0x34>
		return( DISPATCH_TIME_FOREVER );
    e884ef86:	557d                	li	a0,-1
}
    e884ef88:	60e2                	ld	ra,24(sp)
    e884ef8a:	6442                	ld	s0,16(sp)
    e884ef8c:	6105                	addi	sp,sp,32
    e884ef8e:	8082                	ret
		if( (int64_t)( inWhen -= inDelta ) >= -1 )
    e884ef90:	fee54ce3          	blt	a0,a4,e884ef88 <dispatch_time+0x34>
			return( (dispatch_time_t) -2 ); // underflow (use -2 because -1 == DISPATCH_TIME_FOREVER == forever)
    e884ef94:	5579                	li	a0,-2
    e884ef96:	bfcd                	j	e884ef88 <dispatch_time+0x34>
   	if( inWhen == DISPATCH_TIME_NOW )
    e884ef98:	e919                	bnez	a0,e884efae <dispatch_time+0x5a>
    e884ef9a:	e42e                	sd	a1,8(sp)
	return( ( UpTicks() * kMillisecondsPerSecond ) / UpTicksPerSecond() );
    e884ef9c:	228120ef          	jal	ra,e88611c4 <UpTicks>
    e884efa0:	3e800793          	li	a5,1000
    e884efa4:	02f50533          	mul	a0,a0,a5
    e884efa8:	65a2                	ld	a1,8(sp)
    e884efaa:	02f55533          	divu	a0,a0,a5
	if( inDelta >= 0 )
    e884efae:	fff0c7b7          	lui	a5,0xfff0c
    e884efb2:	dc178793          	addi	a5,a5,-575 # fffffffffff0bdc1 <__DRAM0_INF_BASE+0xfffffffefff1bdc1>
    e884efb6:	9522                	add	a0,a0,s0
    e884efb8:	00f5c563          	blt	a1,a5,e884efc2 <dispatch_time+0x6e>
		if( (int64_t)( inWhen += inDelta ) <= 0 )
    e884efbc:	fca046e3          	bgtz	a0,e884ef88 <dispatch_time+0x34>
    e884efc0:	b7d9                	j	e884ef86 <dispatch_time+0x32>
	if( (int64_t)( inWhen += inDelta ) < 1 )
    e884efc2:	fca043e3          	bgtz	a0,e884ef88 <dispatch_time+0x34>
		return( 1 ); // underflow
    e884efc6:	4505                	li	a0,1
    e884efc8:	b7c1                	j	e884ef88 <dispatch_time+0x34>

00000000e884efca <dispatch_walltime>:
	if( ioWhen )
    e884efca:	ed15                	bnez	a0,e884f006 <dispatch_walltime+0x3c>
{
    e884efcc:	1101                	addi	sp,sp,-32
    e884efce:	e42e                	sd	a1,8(sp)
    e884efd0:	ec06                	sd	ra,24(sp)
		ms = __dispatch_wall_milliseconds();
    e884efd2:	f06ff0ef          	jal	ra,e884e6d8 <__dispatch_wall_milliseconds>
    e884efd6:	65a2                	ld	a1,8(sp)
	inDelta /= kNanosecondsPerMillisecond;
    e884efd8:	000f47b7          	lui	a5,0xf4
    e884efdc:	24078793          	addi	a5,a5,576 # f4240 <memcmp-0xe870bdc0>
    e884efe0:	02f5c7b3          	div	a5,a1,a5
	if( ms <= 1 )
    e884efe4:	4705                	li	a4,1
	ms += inDelta;
    e884efe6:	97aa                	add	a5,a5,a0
	return( -ms );
    e884efe8:	40f00533          	neg	a0,a5
	if( ms <= 1 )
    e884efec:	00f74a63          	blt	a4,a5,e884f000 <dispatch_walltime+0x36>
		return( ( inDelta >= 0 ) ? DISPATCH_TIME_FOREVER : (uint64_t) INT64_C( -2 ) );
    e884eff0:	fff0c7b7          	lui	a5,0xfff0c
    e884eff4:	dc178793          	addi	a5,a5,-575 # fffffffffff0bdc1 <__DRAM0_INF_BASE+0xfffffffefff1bdc1>
    e884eff8:	557d                	li	a0,-1
    e884effa:	00f5d363          	bge	a1,a5,e884f000 <dispatch_walltime+0x36>
    e884effe:	5579                	li	a0,-2
}
    e884f000:	60e2                	ld	ra,24(sp)
    e884f002:	6105                	addi	sp,sp,32
    e884f004:	8082                	ret
		ms = ( ioWhen->tv_sec * INT64_C_safe( kMillisecondsPerSecond ) ) + ( ioWhen->tv_nsec / kNanosecondsPerMillisecond );
    e884f006:	6118                	ld	a4,0(a0)
    e884f008:	6508                	ld	a0,8(a0)
    e884f00a:	000f47b7          	lui	a5,0xf4
    e884f00e:	24078793          	addi	a5,a5,576 # f4240 <memcmp-0xe870bdc0>
    e884f012:	02f54533          	div	a0,a0,a5
    e884f016:	3e800793          	li	a5,1000
    e884f01a:	20e7950b          	mula	a0,a5,a4
	inDelta /= kNanosecondsPerMillisecond;
    e884f01e:	000f47b7          	lui	a5,0xf4
    e884f022:	24078793          	addi	a5,a5,576 # f4240 <memcmp-0xe870bdc0>
	if( ms <= 1 )
    e884f026:	4705                	li	a4,1
	inDelta /= kNanosecondsPerMillisecond;
    e884f028:	02f5c7b3          	div	a5,a1,a5
	ms += inDelta;
    e884f02c:	97aa                	add	a5,a5,a0
	return( -ms );
    e884f02e:	40f00533          	neg	a0,a5
	if( ms <= 1 )
    e884f032:	00f74b63          	blt	a4,a5,e884f048 <dispatch_walltime+0x7e>
		return( ( inDelta >= 0 ) ? DISPATCH_TIME_FOREVER : (uint64_t) INT64_C( -2 ) );
    e884f036:	fff0c7b7          	lui	a5,0xfff0c
    e884f03a:	dc178793          	addi	a5,a5,-575 # fffffffffff0bdc1 <__DRAM0_INF_BASE+0xfffffffefff1bdc1>
    e884f03e:	557d                	li	a0,-1
    e884f040:	00f5d463          	bge	a1,a5,e884f048 <dispatch_walltime+0x7e>
    e884f044:	5579                	li	a0,-2
    e884f046:	8082                	ret
}
    e884f048:	8082                	ret

00000000e884f04a <dispatch_semaphore_wait>:
{
    e884f04a:	7139                	addi	sp,sp,-64
    e884f04c:	fc91540b          	sdd	s0,s1,(sp),2,4
    e884f050:	fc06                	sd	ra,56(sp)
    e884f052:	f84a                	sd	s2,48(sp)
	if( inTimeout == DISPATCH_TIME_FOREVER )
    e884f054:	57fd                	li	a5,-1
{
    e884f056:	84aa                	mv	s1,a0
	if( inTimeout == DISPATCH_TIME_FOREVER )
    e884f058:	02f59a63          	bne	a1,a5,e884f08c <dispatch_semaphore_wait+0x42>
		pthread_mutex_lock( inSem->mutexPtr );
    e884f05c:	7508                	ld	a0,40(a0)
    e884f05e:	2c12c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		while( inSem->value <= 0 )
    e884f062:	60bc                	ld	a5,64(s1)
    e884f064:	748c                	ld	a1,40(s1)
    e884f066:	00f05f63          	blez	a5,e884f084 <dispatch_semaphore_wait+0x3a>
		inSem->value -= 1;
    e884f06a:	17fd                	addi	a5,a5,-1
    e884f06c:	e0bc                	sd	a5,64(s1)
		pthread_mutex_unlock( inSem->mutexPtr );
    e884f06e:	852e                	mv	a0,a1
    e884f070:	2f32c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		err = kNoErr;
    e884f074:	4401                	li	s0,0
}
    e884f076:	8522                	mv	a0,s0
    e884f078:	70e2                	ld	ra,56(sp)
    e884f07a:	fc91440b          	ldd	s0,s1,(sp),2,4
    e884f07e:	7942                	ld	s2,48(sp)
    e884f080:	6121                	addi	sp,sp,64
    e884f082:	8082                	ret
			err = pthread_cond_wait( inSem->conditionPtr, inSem->mutexPtr );
    e884f084:	7c88                	ld	a0,56(s1)
    e884f086:	4832c0ef          	jal	ra,e887bd08 <pthread_cond_wait>
    e884f08a:	bfe1                	j	e884f062 <dispatch_semaphore_wait+0x18>
    e884f08c:	892e                	mv	s2,a1
			if( ( (int64_t) inTimeout ) < 0 ) // Negative if wall clock time.
    e884f08e:	0605df63          	bgez	a1,e884f10c <dispatch_semaphore_wait+0xc2>
				inTimeout	= (dispatch_time_t)( -( (int64_t) inTimeout ) );
    e884f092:	40b00933          	neg	s2,a1
				nowDT		= (dispatch_time_t)( -( (int64_t) dispatch_walltime( NULL, 0 ) ) );
    e884f096:	4501                	li	a0,0
    e884f098:	4581                	li	a1,0
    e884f09a:	f31ff0ef          	jal	ra,e884efca <dispatch_walltime>
    e884f09e:	40a00533          	neg	a0,a0
			inTimeout = ( nowDT < inTimeout ) ? ( inTimeout - nowDT ) : 0;
    e884f0a2:	4401                	li	s0,0
    e884f0a4:	01257463          	bgeu	a0,s2,e884f0ac <dispatch_semaphore_wait+0x62>
    e884f0a8:	40a90433          	sub	s0,s2,a0
			gettimeofday( &nowTV, NULL );
    e884f0ac:	4581                	li	a1,0
    e884f0ae:	850a                	mv	a0,sp
    e884f0b0:	234120ef          	jal	ra,e88612e4 <gettimeofday>
			deadline.tv_sec  =   nowTV.tv_sec			+   ( inTimeout / 1000 );
    e884f0b4:	3e800713          	li	a4,1000
    e884f0b8:	02e457b3          	divu	a5,s0,a4
    e884f0bc:	6682                	ld	a3,0(sp)
			deadline.tv_nsec = ( nowTV.tv_usec * 1000 )	+ ( ( inTimeout % 1000 ) * kNanosecondsPerMillisecond );
    e884f0be:	02e47433          	remu	s0,s0,a4
			deadline.tv_sec  =   nowTV.tv_sec			+   ( inTimeout / 1000 );
    e884f0c2:	97b6                	add	a5,a5,a3
			deadline.tv_nsec = ( nowTV.tv_usec * 1000 )	+ ( ( inTimeout % 1000 ) * kNanosecondsPerMillisecond );
    e884f0c4:	000f46b7          	lui	a3,0xf4
    e884f0c8:	24068693          	addi	a3,a3,576 # f4240 <memcmp-0xe870bdc0>
			deadline.tv_sec  =   nowTV.tv_sec			+   ( inTimeout / 1000 );
    e884f0cc:	e83e                	sd	a5,16(sp)
			deadline.tv_nsec = ( nowTV.tv_usec * 1000 )	+ ( ( inTimeout % 1000 ) * kNanosecondsPerMillisecond );
    e884f0ce:	02d40433          	mul	s0,s0,a3
    e884f0d2:	66a2                	ld	a3,8(sp)
    e884f0d4:	20d7140b          	mula	s0,a4,a3
			if( deadline.tv_nsec >= kNanosecondsPerSecond )
    e884f0d8:	3b9ad737          	lui	a4,0x3b9ad
    e884f0dc:	9ff70713          	addi	a4,a4,-1537 # 3b9ac9ff <memcmp-0xace53601>
			deadline.tv_nsec = ( nowTV.tv_usec * 1000 )	+ ( ( inTimeout % 1000 ) * kNanosecondsPerMillisecond );
    e884f0e0:	ec22                	sd	s0,24(sp)
			if( deadline.tv_nsec >= kNanosecondsPerSecond )
    e884f0e2:	00875a63          	bge	a4,s0,e884f0f6 <dispatch_semaphore_wait+0xac>
				deadline.tv_sec  += 1;
    e884f0e6:	0785                	addi	a5,a5,1
    e884f0e8:	e83e                	sd	a5,16(sp)
				deadline.tv_nsec -= kNanosecondsPerSecond;
    e884f0ea:	c46537b7          	lui	a5,0xc4653
    e884f0ee:	60078793          	addi	a5,a5,1536 # ffffffffc4653600 <__DRAM0_INF_BASE+0xfffffffec4663600>
    e884f0f2:	943e                	add	s0,s0,a5
    e884f0f4:	ec22                	sd	s0,24(sp)
			pthread_mutex_lock( inSem->mutexPtr );
    e884f0f6:	7488                	ld	a0,40(s1)
    e884f0f8:	2272c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
			while( inSem->value <= 0 )
    e884f0fc:	60bc                	ld	a5,64(s1)
    e884f0fe:	748c                	ld	a1,40(s1)
    e884f100:	00f05b63          	blez	a5,e884f116 <dispatch_semaphore_wait+0xcc>
			if( !err ) inSem->value -= 1;
    e884f104:	17fd                	addi	a5,a5,-1
    e884f106:	e0bc                	sd	a5,64(s1)
    e884f108:	4401                	li	s0,0
    e884f10a:	a821                	j	e884f122 <dispatch_semaphore_wait+0xd8>
				nowDT = dispatch_time( DISPATCH_TIME_NOW, 0 );
    e884f10c:	4581                	li	a1,0
    e884f10e:	4501                	li	a0,0
    e884f110:	e45ff0ef          	jal	ra,e884ef54 <dispatch_time>
    e884f114:	b779                	j	e884f0a2 <dispatch_semaphore_wait+0x58>
				err = pthread_cond_timedwait( inSem->conditionPtr, inSem->mutexPtr, &deadline );
    e884f116:	7c88                	ld	a0,56(s1)
    e884f118:	0810                	addi	a2,sp,16
    e884f11a:	4392c0ef          	jal	ra,e887bd52 <pthread_cond_timedwait>
    e884f11e:	842a                	mv	s0,a0
				if( err ) break;
    e884f120:	dd71                	beqz	a0,e884f0fc <dispatch_semaphore_wait+0xb2>
			pthread_mutex_unlock( inSem->mutexPtr );
    e884f122:	7488                	ld	a0,40(s1)
    e884f124:	23f2c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	return( err );
    e884f128:	b7b9                	j	e884f076 <dispatch_semaphore_wait+0x2c>

00000000e884f12a <LibDispatch_Finalize>:
{
    e884f12a:	7139                	addi	sp,sp,-64
    e884f12c:	ec22                	sd	s0,24(sp)
    e884f12e:	fc06                	sd	ra,56(sp)
    e884f130:	f026                	sd	s1,32(sp)
    e884f132:	f44a                	sd	s2,40(sp)
    e884f134:	f84e                	sd	s3,48(sp)
	__LibDispatchCF_Finalize();
    e884f136:	d12ff0ef          	jal	ra,e884e648 <__LibDispatchCF_Finalize>
	if( IsValidSocket( gDispatchSelect_CommandSock ) )
    e884f13a:	00086417          	auipc	s0,0x86
    e884f13e:	d5240413          	addi	s0,s0,-686 # e88d4e8c <gDispatchSelect_CommandSock>
    e884f142:	401c                	lw	a5,0(s0)
    e884f144:	0407c063          	bltz	a5,e884f184 <LibDispatch_Finalize+0x5a>
		gDispatchSelect_QuitSem = dispatch_semaphore_create( 0 );
    e884f148:	4501                	li	a0,0
    e884f14a:	d7fff0ef          	jal	ra,e884eec8 <dispatch_semaphore_create>
    e884f14e:	00095497          	auipc	s1,0x95
    e884f152:	afa48493          	addi	s1,s1,-1286 # e88e3c48 <gDispatchSelect_QuitSem>
    e884f156:	e088                	sd	a0,0(s1)
		n = send( gDispatchSelect_CommandSock, (char *) &pkt, sizeof( pkt ), 0 );
    e884f158:	4008                	lw	a0,0(s0)
		pkt.cmd		= kDispatchCommandQuit;
    e884f15a:	4791                	li	a5,4
		n = send( gDispatchSelect_CommandSock, (char *) &pkt, sizeof( pkt ), 0 );
    e884f15c:	4681                	li	a3,0
    e884f15e:	4641                	li	a2,16
    e884f160:	858a                	mv	a1,sp
		pkt.cmd		= kDispatchCommandQuit;
    e884f162:	00f10023          	sb	a5,0(sp)
		pkt.source	= NULL;
    e884f166:	e402                	sd	zero,8(sp)
		n = send( gDispatchSelect_CommandSock, (char *) &pkt, sizeof( pkt ), 0 );
    e884f168:	22b360ef          	jal	ra,e8885b92 <lwip_send>
		if( gDispatchSelect_QuitSem )
    e884f16c:	6088                	ld	a0,0(s1)
    e884f16e:	c919                	beqz	a0,e884f184 <LibDispatch_Finalize+0x5a>
			dispatch_semaphore_wait( gDispatchSelect_QuitSem, DISPATCH_TIME_FOREVER );
    e884f170:	55fd                	li	a1,-1
    e884f172:	ed9ff0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
			dispatch_release( gDispatchSelect_QuitSem );
    e884f176:	6088                	ld	a0,0(s1)
    e884f178:	8d9ff0ef          	jal	ra,e884ea50 <dispatch_release>
			gDispatchSelect_QuitSem = NULL;
    e884f17c:	00095797          	auipc	a5,0x95
    e884f180:	ac07b623          	sd	zero,-1332(a5) # e88e3c48 <gDispatchSelect_QuitSem>
	dispatch_forget( &gDispatchSelect_CommandQueue );
    e884f184:	00095797          	auipc	a5,0x95
    e884f188:	abc78793          	addi	a5,a5,-1348 # e88e3c40 <gDispatchSelect_CommandQueue>
    e884f18c:	6388                	ld	a0,0(a5)
    e884f18e:	c519                	beqz	a0,e884f19c <LibDispatch_Finalize+0x72>
    e884f190:	8c1ff0ef          	jal	ra,e884ea50 <dispatch_release>
    e884f194:	00095797          	auipc	a5,0x95
    e884f198:	aa07b623          	sd	zero,-1364(a5) # e88e3c40 <gDispatchSelect_CommandQueue>
	ForgetSocket( &gDispatchSelect_CommandSock );
    e884f19c:	4008                	lw	a0,0(s0)
    e884f19e:	00054663          	bltz	a0,e884f1aa <LibDispatch_Finalize+0x80>
    e884f1a2:	000360ef          	jal	ra,e88851a2 <lwip_close>
    e884f1a6:	57fd                	li	a5,-1
    e884f1a8:	c01c                	sw	a5,0(s0)
	dispatch_forget( &gDispatchMainQueue );
    e884f1aa:	00095797          	auipc	a5,0x95
    e884f1ae:	a6e78793          	addi	a5,a5,-1426 # e88e3c18 <gDispatchMainQueue>
    e884f1b2:	6388                	ld	a0,0(a5)
    e884f1b4:	c519                	beqz	a0,e884f1c2 <LibDispatch_Finalize+0x98>
    e884f1b6:	89bff0ef          	jal	ra,e884ea50 <dispatch_release>
    e884f1ba:	00095797          	auipc	a5,0x95
    e884f1be:	a407bf23          	sd	zero,-1442(a5) # e88e3c18 <gDispatchMainQueue>
	pthread_cond_forget( &gDispatchMainQueue_ConditionPtr );
    e884f1c2:	00095797          	auipc	a5,0x95
    e884f1c6:	a6e78793          	addi	a5,a5,-1426 # e88e3c30 <gDispatchMainQueue_ConditionPtr>
    e884f1ca:	6388                	ld	a0,0(a5)
    e884f1cc:	c519                	beqz	a0,e884f1da <LibDispatch_Finalize+0xb0>
    e884f1ce:	30f2c0ef          	jal	ra,e887bcdc <pthread_cond_destroy>
    e884f1d2:	00095797          	auipc	a5,0x95
    e884f1d6:	a407bf23          	sd	zero,-1442(a5) # e88e3c30 <gDispatchMainQueue_ConditionPtr>
{
    e884f1da:	4401                	li	s0,0
		if( gDispatchConcurrentQueues[ i ] )
    e884f1dc:	00095917          	auipc	s2,0x95
    e884f1e0:	a1490913          	addi	s2,s2,-1516 # e88e3bf0 <gDispatchConcurrentQueues>
			dispatch_sync_f( gDispatchConcurrentQueues[ i ], NULL, __dispatch_empty_callback );
    e884f1e4:	fffff997          	auipc	s3,0xfffff
    e884f1e8:	40c98993          	addi	s3,s3,1036 # e884e5f0 <__dispatch_empty_callback>
	for( i = 0; i < countof( gDispatchConcurrentQueues ); ++i )
    e884f1ec:	448d                	li	s1,3
		if( gDispatchConcurrentQueues[ i ] )
    e884f1ee:	6689450b          	lrd	a0,s2,s0,3
    e884f1f2:	c509                	beqz	a0,e884f1fc <LibDispatch_Finalize+0xd2>
			dispatch_sync_f( gDispatchConcurrentQueues[ i ], NULL, __dispatch_empty_callback );
    e884f1f4:	864e                	mv	a2,s3
    e884f1f6:	4581                	li	a1,0
    e884f1f8:	b27ff0ef          	jal	ra,e884ed1e <dispatch_sync_f>
	for( i = 0; i < countof( gDispatchConcurrentQueues ); ++i )
    e884f1fc:	0405                	addi	s0,s0,1
    e884f1fe:	fe9418e3          	bne	s0,s1,e884f1ee <LibDispatch_Finalize+0xc4>
    e884f202:	00095417          	auipc	s0,0x95
    e884f206:	9ee40413          	addi	s0,s0,-1554 # e88e3bf0 <gDispatchConcurrentQueues>
    e884f20a:	00095497          	auipc	s1,0x95
    e884f20e:	9fe48493          	addi	s1,s1,-1538 # e88e3c08 <gDispatchInitialized>
		dispatch_forget( &gDispatchConcurrentQueues[ i ] );
    e884f212:	6008                	ld	a0,0(s0)
    e884f214:	c509                	beqz	a0,e884f21e <LibDispatch_Finalize+0xf4>
    e884f216:	83bff0ef          	jal	ra,e884ea50 <dispatch_release>
    e884f21a:	00043023          	sd	zero,0(s0)
	for( i = 0; i < countof( gDispatchConcurrentQueues ); ++i )
    e884f21e:	0421                	addi	s0,s0,8
    e884f220:	fe8499e3          	bne	s1,s0,e884f212 <LibDispatch_Finalize+0xe8>
	if( gDispatchKey_CurrentQueuePtr )
    e884f224:	00095797          	auipc	a5,0x95
    e884f228:	9ec78793          	addi	a5,a5,-1556 # e88e3c10 <gDispatchKey_CurrentQueuePtr>
    e884f22c:	639c                	ld	a5,0(a5)
    e884f22e:	cf81                	beqz	a5,e884f246 <LibDispatch_Finalize+0x11c>
		err = pthread_key_delete( gDispatchKey_CurrentQueue );
    e884f230:	00095797          	auipc	a5,0x95
    e884f234:	9dc78793          	addi	a5,a5,-1572 # e88e3c0c <gDispatchKey_CurrentQueue>
    e884f238:	4388                	lw	a0,0(a5)
    e884f23a:	0c32c0ef          	jal	ra,e887bafc <pthread_key_delete>
		gDispatchKey_CurrentQueuePtr = NULL;
    e884f23e:	00095797          	auipc	a5,0x95
    e884f242:	9c07b923          	sd	zero,-1582(a5) # e88e3c10 <gDispatchKey_CurrentQueuePtr>
	if( gDispatchThreadPool_MutexPtr )
    e884f246:	00095417          	auipc	s0,0x95
    e884f24a:	a5a40413          	addi	s0,s0,-1446 # e88e3ca0 <gDispatchThreadPool_MutexPtr>
    e884f24e:	6008                	ld	a0,0(s0)
    e884f250:	00095497          	auipc	s1,0x95
    e884f254:	a2848493          	addi	s1,s1,-1496 # e88e3c78 <gDispatchThreadPool_ConditionPtr>
    e884f258:	c11d                	beqz	a0,e884f27e <LibDispatch_Finalize+0x154>
		pthread_mutex_lock( gDispatchThreadPool_MutexPtr );
    e884f25a:	0c52c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
			while( gDispatchThreadPool_CurrentThreads > 0 )
    e884f25e:	00095917          	auipc	s2,0x95
    e884f262:	a2290913          	addi	s2,s2,-1502 # e88e3c80 <gDispatchThreadPool_CurrentThreads>
		gDispatchThreadPool_Quit = true;
    e884f266:	4785                	li	a5,1
    e884f268:	00095717          	auipc	a4,0x95
    e884f26c:	a4f70223          	sb	a5,-1468(a4) # e88e3cac <gDispatchThreadPool_Quit>
			while( gDispatchThreadPool_CurrentThreads > 0 )
    e884f270:	00092783          	lw	a5,0(s2)
    e884f274:	04f04063          	bgtz	a5,e884f2b4 <LibDispatch_Finalize+0x18a>
		pthread_mutex_unlock( gDispatchThreadPool_MutexPtr );
    e884f278:	6008                	ld	a0,0(s0)
    e884f27a:	0e92c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	pthread_cond_forget( &gDispatchThreadPool_ConditionPtr );
    e884f27e:	6088                	ld	a0,0(s1)
    e884f280:	c519                	beqz	a0,e884f28e <LibDispatch_Finalize+0x164>
    e884f282:	25b2c0ef          	jal	ra,e887bcdc <pthread_cond_destroy>
    e884f286:	00095797          	auipc	a5,0x95
    e884f28a:	9e07b923          	sd	zero,-1550(a5) # e88e3c78 <gDispatchThreadPool_ConditionPtr>
	pthread_mutex_forget( &gDispatchThreadPool_MutexPtr );
    e884f28e:	6008                	ld	a0,0(s0)
    e884f290:	c519                	beqz	a0,e884f29e <LibDispatch_Finalize+0x174>
    e884f292:	0432c0ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
    e884f296:	00095797          	auipc	a5,0x95
    e884f29a:	a007b523          	sd	zero,-1526(a5) # e88e3ca0 <gDispatchThreadPool_MutexPtr>
}
    e884f29e:	70e2                	ld	ra,56(sp)
    e884f2a0:	6462                	ld	s0,24(sp)
	gDispatchInitialized = false;
    e884f2a2:	00095797          	auipc	a5,0x95
    e884f2a6:	96078323          	sb	zero,-1690(a5) # e88e3c08 <gDispatchInitialized>
}
    e884f2aa:	7482                	ld	s1,32(sp)
    e884f2ac:	7922                	ld	s2,40(sp)
    e884f2ae:	79c2                	ld	s3,48(sp)
    e884f2b0:	6121                	addi	sp,sp,64
    e884f2b2:	8082                	ret
				err = pthread_cond_signal( gDispatchThreadPool_ConditionPtr );
    e884f2b4:	6088                	ld	a0,0(s1)
    e884f2b6:	24f2c0ef          	jal	ra,e887bd04 <pthread_cond_signal>
				pthread_mutex_unlock( gDispatchThreadPool_MutexPtr );
    e884f2ba:	6008                	ld	a0,0(s0)
    e884f2bc:	0a72c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
				usleep( 50000 ); // Cheesy, but probably not worth a quit condition.
    e884f2c0:	4515                	li	a0,5
    e884f2c2:	5552c0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
				pthread_mutex_lock( gDispatchThreadPool_MutexPtr );
    e884f2c6:	6008                	ld	a0,0(s0)
    e884f2c8:	0572c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
    e884f2cc:	b755                	j	e884f270 <LibDispatch_Finalize+0x146>

00000000e884f2ce <LibDispatch_EnsureInitialized>:
{
    e884f2ce:	7175                	addi	sp,sp,-144
	pthread_mutex_lock( &gDispatchInitializeMutex );
    e884f2d0:	00086517          	auipc	a0,0x86
    e884f2d4:	bb850513          	addi	a0,a0,-1096 # e88d4e88 <gDispatchInitializeMutex>
{
    e884f2d8:	e122                	sd	s0,128(sp)
    e884f2da:	f8ca                	sd	s2,112(sp)
    e884f2dc:	e506                	sd	ra,136(sp)
    e884f2de:	fca6                	sd	s1,120(sp)
    e884f2e0:	f4ce                	sd	s3,104(sp)
    e884f2e2:	f0d2                	sd	s4,96(sp)
	pthread_mutex_lock( &gDispatchInitializeMutex );
    e884f2e4:	03b2c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	require_action_quiet( !gDispatchInitialized, exit, err = kNoErr );
    e884f2e8:	00095917          	auipc	s2,0x95
    e884f2ec:	92090913          	addi	s2,s2,-1760 # e88e3c08 <gDispatchInitialized>
    e884f2f0:	00094783          	lbu	a5,0(s2)
    e884f2f4:	4401                	li	s0,0
    e884f2f6:	14079e63          	bnez	a5,e884f452 <LibDispatch_EnsureInitialized+0x184>
	err = pthread_mutex_init( &gDispatchThreadPool_Mutex, NULL );
    e884f2fa:	00095497          	auipc	s1,0x95
    e884f2fe:	99e48493          	addi	s1,s1,-1634 # e88e3c98 <gDispatchThreadPool_Mutex>
    e884f302:	4581                	li	a1,0
    e884f304:	8526                	mv	a0,s1
	gDispatchThreadPool_Quit = false;
    e884f306:	00095797          	auipc	a5,0x95
    e884f30a:	9a078323          	sb	zero,-1626(a5) # e88e3cac <gDispatchThreadPool_Quit>
	err = pthread_mutex_init( &gDispatchThreadPool_Mutex, NULL );
    e884f30e:	76c2c0ef          	jal	ra,e887ba7a <pthread_mutex_init>
    e884f312:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e884f314:	12051f63          	bnez	a0,e884f452 <LibDispatch_EnsureInitialized+0x184>
	gDispatchThreadPool_MutexPtr = &gDispatchThreadPool_Mutex;
    e884f318:	00095797          	auipc	a5,0x95
    e884f31c:	9897b423          	sd	s1,-1656(a5) # e88e3ca0 <gDispatchThreadPool_MutexPtr>
	err = pthread_cond_init( &gDispatchThreadPool_Condition, NULL );
    e884f320:	00095497          	auipc	s1,0x95
    e884f324:	95048493          	addi	s1,s1,-1712 # e88e3c70 <gDispatchThreadPool_Condition>
    e884f328:	4581                	li	a1,0
    e884f32a:	8526                	mv	a0,s1
    e884f32c:	1892c0ef          	jal	ra,e887bcb4 <pthread_cond_init>
    e884f330:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e884f332:	12051063          	bnez	a0,e884f452 <LibDispatch_EnsureInitialized+0x184>
	gDispatchThreadPool_ConditionPtr = &gDispatchThreadPool_Condition;
    e884f336:	00095797          	auipc	a5,0x95
    e884f33a:	9497b123          	sd	s1,-1726(a5) # e88e3c78 <gDispatchThreadPool_ConditionPtr>
	gDispatchThreadPool_ItemsHead = NULL;
    e884f33e:	00095797          	auipc	a5,0x95
    e884f342:	9407b523          	sd	zero,-1718(a5) # e88e3c88 <gDispatchThreadPool_ItemsHead>
	err = pthread_key_create( &gDispatchKey_CurrentQueue, NULL ); 
    e884f346:	00095497          	auipc	s1,0x95
    e884f34a:	8c648493          	addi	s1,s1,-1850 # e88e3c0c <gDispatchKey_CurrentQueue>
	gDispatchThreadPool_ItemsNext = &gDispatchThreadPool_ItemsHead;
    e884f34e:	00095797          	auipc	a5,0x95
    e884f352:	93a78793          	addi	a5,a5,-1734 # e88e3c88 <gDispatchThreadPool_ItemsHead>
	err = pthread_key_create( &gDispatchKey_CurrentQueue, NULL ); 
    e884f356:	4581                	li	a1,0
    e884f358:	8526                	mv	a0,s1
	gDispatchThreadPool_ItemsNext = &gDispatchThreadPool_ItemsHead;
    e884f35a:	00095717          	auipc	a4,0x95
    e884f35e:	92f73b23          	sd	a5,-1738(a4) # e88e3c90 <gDispatchThreadPool_ItemsNext>
	err = pthread_key_create( &gDispatchKey_CurrentQueue, NULL ); 
    e884f362:	7402c0ef          	jal	ra,e887baa2 <pthread_key_create>
    e884f366:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e884f368:	0e051563          	bnez	a0,e884f452 <LibDispatch_EnsureInitialized+0x184>
	gDispatchConcurrentQueues[ 0 ] = __dispatch_queue_create_internal( "com.apple.low-priority-root-queue" );
    e884f36c:	00071517          	auipc	a0,0x71
    e884f370:	65c50513          	addi	a0,a0,1628 # e88c09c8 <__PRETTY_FUNCTION__.8975+0x938>
	gDispatchKey_CurrentQueuePtr = &gDispatchKey_CurrentQueue;
    e884f374:	00095797          	auipc	a5,0x95
    e884f378:	8897be23          	sd	s1,-1892(a5) # e88e3c10 <gDispatchKey_CurrentQueuePtr>
	gDispatchConcurrentQueues[ 0 ] = __dispatch_queue_create_internal( "com.apple.low-priority-root-queue" );
    e884f37c:	00095997          	auipc	s3,0x95
    e884f380:	87498993          	addi	s3,s3,-1932 # e88e3bf0 <gDispatchConcurrentQueues>
    e884f384:	e4cff0ef          	jal	ra,e884e9d0 <__dispatch_queue_create_internal>
    e884f388:	00a9b023          	sd	a0,0(s3)
	require_action( gDispatchConcurrentQueues[ 0 ], exit, err = ENOMEM );
    e884f38c:	e119                	bnez	a0,e884f392 <LibDispatch_EnsureInitialized+0xc4>
	require_action( gDispatchSelect_CommandQueue, exit, err = ENOMEM );
    e884f38e:	4431                	li	s0,12
    e884f390:	a0c9                	j	e884f452 <LibDispatch_EnsureInitialized+0x184>
	gDispatchConcurrentQueues[ 0 ]->concurrent = true;
    e884f392:	4405                	li	s0,1
    e884f394:	04850123          	sb	s0,66(a0)
	gDispatchConcurrentQueues[ 1 ] = __dispatch_queue_create_internal( "com.apple.root-queue" );
    e884f398:	00071517          	auipc	a0,0x71
    e884f39c:	65850513          	addi	a0,a0,1624 # e88c09f0 <__PRETTY_FUNCTION__.8975+0x960>
    e884f3a0:	e30ff0ef          	jal	ra,e884e9d0 <__dispatch_queue_create_internal>
    e884f3a4:	00a9b423          	sd	a0,8(s3)
	require_action( gDispatchConcurrentQueues[ 1 ], exit, err = ENOMEM );
    e884f3a8:	d17d                	beqz	a0,e884f38e <LibDispatch_EnsureInitialized+0xc0>
	gDispatchConcurrentQueues[ 1 ]->concurrent = true;
    e884f3aa:	04850123          	sb	s0,66(a0)
	gDispatchConcurrentQueues[ 2 ] = __dispatch_queue_create_internal( "com.apple.high-priority-root-queue" );
    e884f3ae:	00071517          	auipc	a0,0x71
    e884f3b2:	65a50513          	addi	a0,a0,1626 # e88c0a08 <__PRETTY_FUNCTION__.8975+0x978>
    e884f3b6:	e1aff0ef          	jal	ra,e884e9d0 <__dispatch_queue_create_internal>
    e884f3ba:	00a9b823          	sd	a0,16(s3)
	require_action( gDispatchConcurrentQueues[ 2 ], exit, err = ENOMEM );
    e884f3be:	d961                	beqz	a0,e884f38e <LibDispatch_EnsureInitialized+0xc0>
	gDispatchConcurrentQueues[ 2 ]->concurrent = true;
    e884f3c0:	04850123          	sb	s0,66(a0)
	gDispatchMainQueue = __dispatch_queue_create_internal( "com.apple.main-queue" );
    e884f3c4:	00071517          	auipc	a0,0x71
    e884f3c8:	66c50513          	addi	a0,a0,1644 # e88c0a30 <__PRETTY_FUNCTION__.8975+0x9a0>
	gDispatchMainQueue_WorkPending = false;
    e884f3cc:	00095797          	auipc	a5,0x95
    e884f3d0:	86078623          	sb	zero,-1940(a5) # e88e3c38 <gDispatchMainQueue_WorkPending>
	gDispatchMainQueue = __dispatch_queue_create_internal( "com.apple.main-queue" );
    e884f3d4:	00095997          	auipc	s3,0x95
    e884f3d8:	84498993          	addi	s3,s3,-1980 # e88e3c18 <gDispatchMainQueue>
    e884f3dc:	df4ff0ef          	jal	ra,e884e9d0 <__dispatch_queue_create_internal>
    e884f3e0:	00a9b023          	sd	a0,0(s3)
	require_action( gDispatchMainQueue, exit, err = ENOMEM );
    e884f3e4:	d54d                	beqz	a0,e884f38e <LibDispatch_EnsureInitialized+0xc0>
	err = pthread_cond_init( &gDispatchMainQueue_Condition, NULL );
    e884f3e6:	00095a17          	auipc	s4,0x95
    e884f3ea:	842a0a13          	addi	s4,s4,-1982 # e88e3c28 <gDispatchMainQueue_Condition>
    e884f3ee:	4581                	li	a1,0
    e884f3f0:	8552                	mv	a0,s4
    e884f3f2:	0c32c0ef          	jal	ra,e887bcb4 <pthread_cond_init>
    e884f3f6:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e884f3f8:	ed29                	bnez	a0,e884f452 <LibDispatch_EnsureInitialized+0x184>
	pthread_setspecific( gDispatchKey_CurrentQueue, gDispatchMainQueue );
    e884f3fa:	0009b583          	ld	a1,0(s3)
    e884f3fe:	4088                	lw	a0,0(s1)
	gDispatchMainQueue_ConditionPtr = &gDispatchMainQueue_Condition;
    e884f400:	00095797          	auipc	a5,0x95
    e884f404:	8347b823          	sd	s4,-2000(a5) # e88e3c30 <gDispatchMainQueue_ConditionPtr>
	pthread_setspecific( gDispatchKey_CurrentQueue, gDispatchMainQueue );
    e884f408:	77c2c0ef          	jal	ra,e887bb84 <pthread_setspecific>
	CFRunLoopSourceContext		sourceContext = { 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
    e884f40c:	05000613          	li	a2,80
    e884f410:	4581                	li	a1,0
    e884f412:	0808                	addi	a0,sp,16
    e884f414:	d25b00ef          	jal	ra,e8800138 <memset>
	require_action_quiet( !gDispatchCFInitialized, exit, err = kNoErr );
    e884f418:	00094797          	auipc	a5,0x94
    e884f41c:	7c078793          	addi	a5,a5,1984 # e88e3bd8 <gDispatchCFInitialized>
    e884f420:	0007c703          	lbu	a4,0(a5)
    e884f424:	843e                	mv	s0,a5
    e884f426:	eb2d                	bnez	a4,e884f498 <LibDispatch_EnsureInitialized+0x1ca>
	sourceContext.perform = __LibDispatchCF_SourcePerform;
    e884f428:	fffff797          	auipc	a5,0xfffff
    e884f42c:	71478793          	addi	a5,a5,1812 # e884eb3c <__LibDispatchCF_SourcePerform>
	gDispatchCF_Source = CFRunLoopSourceCreate( NULL, 0, &sourceContext );
    e884f430:	0810                	addi	a2,sp,16
    e884f432:	4581                	li	a1,0
    e884f434:	4501                	li	a0,0
	sourceContext.perform = __LibDispatchCF_SourcePerform;
    e884f436:	ecbe                	sd	a5,88(sp)
	gDispatchCF_Source = CFRunLoopSourceCreate( NULL, 0, &sourceContext );
    e884f438:	00094497          	auipc	s1,0x94
    e884f43c:	7b048493          	addi	s1,s1,1968 # e88e3be8 <gDispatchCF_Source>
    e884f440:	d6bfb0ef          	jal	ra,e884b1aa <CFRunLoopSourceCreate>
    e884f444:	e088                	sd	a0,0(s1)
	require_action( gDispatchCF_Source, exit, err = kNoMemoryErr );
    e884f446:	e905                	bnez	a0,e884f476 <LibDispatch_EnsureInitialized+0x1a8>
    e884f448:	7479                	lui	s0,0xffffe
	if( err ) __LibDispatchCF_Finalize();
    e884f44a:	9feff0ef          	jal	ra,e884e648 <__LibDispatchCF_Finalize>
	require_action( gDispatchCF_Source, exit, err = kNoMemoryErr );
    e884f44e:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	pthread_mutex_unlock( &gDispatchInitializeMutex );
    e884f452:	00086517          	auipc	a0,0x86
    e884f456:	a3650513          	addi	a0,a0,-1482 # e88d4e88 <gDispatchInitializeMutex>
    e884f45a:	7082c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	if( err ) LibDispatch_Finalize();
    e884f45e:	c019                	beqz	s0,e884f464 <LibDispatch_EnsureInitialized+0x196>
    e884f460:	ccbff0ef          	jal	ra,e884f12a <LibDispatch_Finalize>
}
    e884f464:	8522                	mv	a0,s0
    e884f466:	60aa                	ld	ra,136(sp)
    e884f468:	640a                	ld	s0,128(sp)
    e884f46a:	74e6                	ld	s1,120(sp)
    e884f46c:	7946                	ld	s2,112(sp)
    e884f46e:	79a6                	ld	s3,104(sp)
    e884f470:	7a06                	ld	s4,96(sp)
    e884f472:	6149                	addi	sp,sp,144
    e884f474:	8082                	ret
	gDispatchCF_MainRL = CFRunLoopGetMain();
    e884f476:	bbbfb0ef          	jal	ra,e884b030 <CFRunLoopGetMain>
    e884f47a:	00094797          	auipc	a5,0x94
    e884f47e:	76a7b323          	sd	a0,1894(a5) # e88e3be0 <gDispatchCF_MainRL>
	CFRunLoopAddSource( gDispatchCF_MainRL, gDispatchCF_Source, kCFRunLoopCommonModes );
    e884f482:	608c                	ld	a1,0(s1)
    e884f484:	00086797          	auipc	a5,0x86
    e884f488:	87c78793          	addi	a5,a5,-1924 # e88d4d00 <kCFRunLoopCommonModes>
    e884f48c:	6390                	ld	a2,0(a5)
    e884f48e:	bcdfb0ef          	jal	ra,e884b05a <CFRunLoopAddSource>
	gDispatchCFInitialized = true;
    e884f492:	4785                	li	a5,1
    e884f494:	00f40023          	sb	a5,0(s0)
	gDispatchSelect_CommandQueue = __dispatch_queue_create_internal( "com.apple.select-commands" );
    e884f498:	00071517          	auipc	a0,0x71
    e884f49c:	5b050513          	addi	a0,a0,1456 # e88c0a48 <__PRETTY_FUNCTION__.8975+0x9b8>
    e884f4a0:	d30ff0ef          	jal	ra,e884e9d0 <__dispatch_queue_create_internal>
    e884f4a4:	00094997          	auipc	s3,0x94
    e884f4a8:	79c98993          	addi	s3,s3,1948 # e88e3c40 <gDispatchSelect_CommandQueue>
    e884f4ac:	00a9b023          	sd	a0,0(s3)
	require_action( gDispatchSelect_CommandQueue, exit, err = ENOMEM );
    e884f4b0:	ec050fe3          	beqz	a0,e884f38e <LibDispatch_EnsureInitialized+0xc0>
	sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    e884f4b4:	4645                	li	a2,17
    e884f4b6:	4589                	li	a1,2
    e884f4b8:	4509                	li	a0,2
    e884f4ba:	766360ef          	jal	ra,e8885c20 <lwip_socket>
    e884f4be:	84aa                	mv	s1,a0
	err = map_socket_creation_errno( sock );
    e884f4c0:	00055c63          	bgez	a0,e884f4d8 <LibDispatch_EnsureInitialized+0x20a>
    e884f4c4:	00095797          	auipc	a5,0x95
    e884f4c8:	16478793          	addi	a5,a5,356 # e88e4628 <lwip_errno>
    e884f4cc:	4380                	lw	s0,0(a5)
    e884f4ce:	f051                	bnez	s0,e884f452 <LibDispatch_EnsureInitialized+0x184>
    e884f4d0:	7479                	lui	s0,0xffffe
    e884f4d2:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e884f4d6:	bfb5                	j	e884f452 <LibDispatch_EnsureInitialized+0x184>
	memset( &sip.v4, 0, sizeof( sip.v4 ) );
    e884f4d8:	4641                	li	a2,16
    e884f4da:	4581                	li	a1,0
    e884f4dc:	0808                	addi	a0,sp,16
    e884f4de:	6b72c0ef          	jal	ra,e887c394 <eLIBs_memset>
	sip.v4.sin_port			= 0;
    e884f4e2:	00011923          	sh	zero,18(sp)
	sip.v4.sin_family		= AF_INET;
    e884f4e6:	4789                	li	a5,2
	sip.v4.sin_addr.s_addr	= htonl( INADDR_LOOPBACK );
    e884f4e8:	7f000537          	lui	a0,0x7f000
    e884f4ec:	0505                	addi	a0,a0,1
	sip.v4.sin_family		= AF_INET;
    e884f4ee:	00f108a3          	sb	a5,17(sp)
	sip.v4.sin_addr.s_addr	= htonl( INADDR_LOOPBACK );
    e884f4f2:	23d370ef          	jal	ra,e8886f2e <lwip_htonl>
    e884f4f6:	ca2a                	sw	a0,20(sp)
	err = bind( sock, &sip.sa, sizeof( sip.v4 ) );
    e884f4f8:	4641                	li	a2,16
    e884f4fa:	080c                	addi	a1,sp,16
    e884f4fc:	8526                	mv	a0,s1
    e884f4fe:	3bf350ef          	jal	ra,e88850bc <lwip_bind>
	err = map_socket_noerr_errno( sock, err );
    e884f502:	cd11                	beqz	a0,e884f51e <LibDispatch_EnsureInitialized+0x250>
	err = map_socket_noerr_errno( sock, err );
    e884f504:	00095797          	auipc	a5,0x95
    e884f508:	12478793          	addi	a5,a5,292 # e88e4628 <lwip_errno>
    e884f50c:	4380                	lw	s0,0(a5)
    e884f50e:	e401                	bnez	s0,e884f516 <LibDispatch_EnsureInitialized+0x248>
	err = map_socket_noerr_errno( sock, err );
    e884f510:	7479                	lui	s0,0xffffe
    e884f512:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	ForgetSocket( &sock );
    e884f516:	8526                	mv	a0,s1
    e884f518:	48b350ef          	jal	ra,e88851a2 <lwip_close>
    e884f51c:	bf1d                	j	e884f452 <LibDispatch_EnsureInitialized+0x184>
	len = (socklen_t) sizeof( sip );
    e884f51e:	47f1                	li	a5,28
	err = getsockname( sock, &sip.sa, &len );
    e884f520:	0070                	addi	a2,sp,12
    e884f522:	080c                	addi	a1,sp,16
    e884f524:	8526                	mv	a0,s1
	len = (socklen_t) sizeof( sip );
    e884f526:	c63e                	sw	a5,12(sp)
	err = getsockname( sock, &sip.sa, &len );
    e884f528:	38f360ef          	jal	ra,e88860b6 <lwip_getsockname>
	err = map_socket_noerr_errno( sock, err );
    e884f52c:	fd61                	bnez	a0,e884f504 <LibDispatch_EnsureInitialized+0x236>
	err = connect( sock, &sip.sa, len );
    e884f52e:	4632                	lw	a2,12(sp)
    e884f530:	080c                	addi	a1,sp,16
    e884f532:	8526                	mv	a0,s1
    e884f534:	5f1350ef          	jal	ra,e8885324 <lwip_connect>
    e884f538:	842a                	mv	s0,a0
	err = map_socket_noerr_errno( sock, err );
    e884f53a:	f569                	bnez	a0,e884f504 <LibDispatch_EnsureInitialized+0x236>
	dispatch_async_f( gDispatchSelect_CommandQueue, NULL, __LibDispatch_SelectDrain ); // $$$ TO DO: do this lazily.
    e884f53c:	0009b503          	ld	a0,0(s3)
    e884f540:	00000617          	auipc	a2,0x0
    e884f544:	2ec60613          	addi	a2,a2,748 # e884f82c <__LibDispatch_SelectDrain>
    e884f548:	4581                	li	a1,0
	gDispatchSelect_CommandSock = sock;
    e884f54a:	00086797          	auipc	a5,0x86
    e884f54e:	9497a123          	sw	s1,-1726(a5) # e88d4e8c <gDispatchSelect_CommandSock>
	dispatch_async_f( gDispatchSelect_CommandQueue, NULL, __LibDispatch_SelectDrain ); // $$$ TO DO: do this lazily.
    e884f552:	eceff0ef          	jal	ra,e884ec20 <dispatch_async_f>
	gDispatchInitialized = true;
    e884f556:	4785                	li	a5,1
    e884f558:	00f90023          	sb	a5,0(s2)
    e884f55c:	bddd                	j	e884f452 <LibDispatch_EnsureInitialized+0x184>

00000000e884f55e <dispatch_get_global_queue>:
{
    e884f55e:	1141                	addi	sp,sp,-16
    e884f560:	e022                	sd	s0,0(sp)
    e884f562:	e406                	sd	ra,8(sp)
    e884f564:	842a                	mv	s0,a0
	err = LibDispatch_EnsureInitialized();
    e884f566:	d69ff0ef          	jal	ra,e884f2ce <LibDispatch_EnsureInitialized>
	require_noerr( err, exit );
    e884f56a:	e10d                	bnez	a0,e884f58c <dispatch_get_global_queue+0x2e>
	if(      inPriority == DISPATCH_QUEUE_PRIORITY_DEFAULT ) queue = gDispatchConcurrentQueues[ 1 ];
    e884f56c:	00094797          	auipc	a5,0x94
    e884f570:	68478793          	addi	a5,a5,1668 # e88e3bf0 <gDispatchConcurrentQueues>
    e884f574:	e411                	bnez	s0,e884f580 <dispatch_get_global_queue+0x22>
    e884f576:	6788                	ld	a0,8(a5)
}
    e884f578:	60a2                	ld	ra,8(sp)
    e884f57a:	6402                	ld	s0,0(sp)
    e884f57c:	0141                	addi	sp,sp,16
    e884f57e:	8082                	ret
	else if( inPriority >  DISPATCH_QUEUE_PRIORITY_DEFAULT ) queue = gDispatchConcurrentQueues[ 2 ];
    e884f580:	00805463          	blez	s0,e884f588 <dispatch_get_global_queue+0x2a>
    e884f584:	6b88                	ld	a0,16(a5)
    e884f586:	bfcd                	j	e884f578 <dispatch_get_global_queue+0x1a>
	else													 queue = gDispatchConcurrentQueues[ 0 ];
    e884f588:	6388                	ld	a0,0(a5)
    e884f58a:	b7fd                	j	e884f578 <dispatch_get_global_queue+0x1a>
	queue = NULL;
    e884f58c:	4501                	li	a0,0
	return( queue );
    e884f58e:	b7ed                	j	e884f578 <dispatch_get_global_queue+0x1a>

00000000e884f590 <dispatch_get_current_queue>:
{
    e884f590:	1141                	addi	sp,sp,-16
    e884f592:	e406                	sd	ra,8(sp)
	err = LibDispatch_EnsureInitialized();
    e884f594:	d3bff0ef          	jal	ra,e884f2ce <LibDispatch_EnsureInitialized>
	require_noerr( err, exit );
    e884f598:	e911                	bnez	a0,e884f5ac <dispatch_get_current_queue+0x1c>
	queue = (dispatch_queue_t) pthread_getspecific( gDispatchKey_CurrentQueue );
    e884f59a:	00094797          	auipc	a5,0x94
    e884f59e:	67278793          	addi	a5,a5,1650 # e88e3c0c <gDispatchKey_CurrentQueue>
}
    e884f5a2:	60a2                	ld	ra,8(sp)
	queue = (dispatch_queue_t) pthread_getspecific( gDispatchKey_CurrentQueue );
    e884f5a4:	4388                	lw	a0,0(a5)
}
    e884f5a6:	0141                	addi	sp,sp,16
	queue = (dispatch_queue_t) pthread_getspecific( gDispatchKey_CurrentQueue );
    e884f5a8:	66a2c06f          	j	e887bc12 <pthread_getspecific>
}
    e884f5ac:	60a2                	ld	ra,8(sp)
    e884f5ae:	4501                	li	a0,0
    e884f5b0:	0141                	addi	sp,sp,16
    e884f5b2:	8082                	ret

00000000e884f5b4 <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock>:
//
//	Note: Owning queue must be locked on entry and it will be unlocked on exit.
//===========================================================================================================================

DEBUG_STATIC void	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( dispatch_source_t inSource, uint8_t inCmd )
{
    e884f5b4:	1101                	addi	sp,sp,-32
    e884f5b6:	e822                	sd	s0,16(sp)
    e884f5b8:	ec06                	sd	ra,24(sp)
    e884f5ba:	842a                	mv	s0,a0
	ssize_t						n;
	OSStatus					err;
	
	DEBUG_USE_ONLY( err );
	
	pkt.cmd		= inCmd;
    e884f5bc:	00b10023          	sb	a1,0(sp)
	pkt.source	= inSource;
    e884f5c0:	e42a                	sd	a0,8(sp)
	
	if( dispatch_get_current_queue() == gDispatchSelect_CommandQueue )
    e884f5c2:	fcfff0ef          	jal	ra,e884f590 <dispatch_get_current_queue>
    e884f5c6:	00094797          	auipc	a5,0x94
    e884f5ca:	67a78793          	addi	a5,a5,1658 # e88e3c40 <gDispatchSelect_CommandQueue>
    e884f5ce:	639c                	ld	a5,0(a5)
    e884f5d0:	00a79d63          	bne	a5,a0,e884f5ea <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock+0x36>
	{
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884f5d4:	741c                	ld	a5,40(s0)
    e884f5d6:	7788                	ld	a0,40(a5)
    e884f5d8:	58a2c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		__LibDispatch_SelectHandleCommand( &pkt );
    e884f5dc:	850a                	mv	a0,sp
    e884f5de:	074000ef          	jal	ra,e884f652 <__LibDispatch_SelectHandleCommand>
		err = map_socket_value_errno( gDispatchSelect_CommandSock, n == (ssize_t) sizeof( pkt ), n );
		check_noerr( err );
		
		pthread_mutex_unlock( inSource->queue->lockPtr );
	}
}
    e884f5e2:	60e2                	ld	ra,24(sp)
    e884f5e4:	6442                	ld	s0,16(sp)
    e884f5e6:	6105                	addi	sp,sp,32
    e884f5e8:	8082                	ret
		n = send( gDispatchSelect_CommandSock, (char *) &pkt, sizeof( pkt ), 0 );
    e884f5ea:	00086797          	auipc	a5,0x86
    e884f5ee:	8a278793          	addi	a5,a5,-1886 # e88d4e8c <gDispatchSelect_CommandSock>
    e884f5f2:	4388                	lw	a0,0(a5)
    e884f5f4:	4681                	li	a3,0
    e884f5f6:	4641                	li	a2,16
    e884f5f8:	858a                	mv	a1,sp
    e884f5fa:	598360ef          	jal	ra,e8885b92 <lwip_send>
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884f5fe:	741c                	ld	a5,40(s0)
    e884f600:	7788                	ld	a0,40(a5)
    e884f602:	5602c0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e884f606:	bff1                	j	e884f5e2 <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock+0x2e>

00000000e884f608 <__LibDispatch_SelectHandleReadWriteEvent>:
	if( source->canceled || ( source->suspendCount > 0 ) )
    e884f608:	03054783          	lbu	a5,48(a0) # 7f000030 <memcmp-0x697fffd0>
    e884f60c:	e3b1                	bnez	a5,e884f650 <__LibDispatch_SelectHandleReadWriteEvent+0x48>
    e884f60e:	511c                	lw	a5,32(a0)
    e884f610:	04f04063          	bgtz	a5,e884f650 <__LibDispatch_SelectHandleReadWriteEvent+0x48>
{
    e884f614:	1141                	addi	sp,sp,-16
    e884f616:	e406                	sd	ra,8(sp)
    e884f618:	e022                	sd	s0,0(sp)
    e884f61a:	842a                	mv	s0,a0
	source->handlerFunction( source->base.context );
    e884f61c:	7d1c                	ld	a5,56(a0)
    e884f61e:	6508                	ld	a0,8(a0)
    e884f620:	9782                	jalr	a5
	pthread_mutex_lock( source->queue->lockPtr );
    e884f622:	741c                	ld	a5,40(s0)
    e884f624:	7788                	ld	a0,40(a5)
    e884f626:	4f82c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( !source->canceled && ( source->suspendCount == 0 ) )
    e884f62a:	03044783          	lbu	a5,48(s0)
    e884f62e:	eb91                	bnez	a5,e884f642 <__LibDispatch_SelectHandleReadWriteEvent+0x3a>
    e884f630:	501c                	lw	a5,32(s0)
    e884f632:	eb81                	bnez	a5,e884f642 <__LibDispatch_SelectHandleReadWriteEvent+0x3a>
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884f634:	8522                	mv	a0,s0
}
    e884f636:	6402                	ld	s0,0(sp)
    e884f638:	60a2                	ld	ra,8(sp)
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884f63a:	4585                	li	a1,1
}
    e884f63c:	0141                	addi	sp,sp,16
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884f63e:	f77ff06f          	j	e884f5b4 <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock>
		pthread_mutex_unlock( source->queue->lockPtr );
    e884f642:	741c                	ld	a5,40(s0)
}
    e884f644:	6402                	ld	s0,0(sp)
    e884f646:	60a2                	ld	ra,8(sp)
		pthread_mutex_unlock( source->queue->lockPtr );
    e884f648:	7788                	ld	a0,40(a5)
}
    e884f64a:	0141                	addi	sp,sp,16
		pthread_mutex_unlock( source->queue->lockPtr );
    e884f64c:	5162c06f          	j	e887bb62 <pthread_mutex_unlock>
    e884f650:	8082                	ret

00000000e884f652 <__LibDispatch_SelectHandleCommand>:
{
    e884f652:	7179                	addi	sp,sp,-48
    e884f654:	fa91540b          	sdd	s0,s1,(sp),1,4
    e884f658:	f406                	sd	ra,40(sp)
    e884f65a:	f04a                	sd	s2,32(sp)
    e884f65c:	842a                	mv	s0,a0
	if( inPkt == NULL )
    e884f65e:	ed15                	bnez	a0,e884f69a <__LibDispatch_SelectHandleCommand+0x48>
		n = recv( gDispatchSelect_CommandSock, (char *) &pkt, sizeof( pkt ), 0 );
    e884f660:	00086797          	auipc	a5,0x86
    e884f664:	82c78793          	addi	a5,a5,-2004 # e88d4e8c <gDispatchSelect_CommandSock>
    e884f668:	4388                	lw	a0,0(a5)
    e884f66a:	4681                	li	a3,0
    e884f66c:	4641                	li	a2,16
    e884f66e:	858a                	mv	a1,sp
    e884f670:	70f350ef          	jal	ra,e888557e <lwip_recv>
		inPkt = &pkt;
    e884f674:	840a                	mv	s0,sp
		err = map_socket_value_errno( gDispatchSelect_CommandSock, n >= 0, n );
    e884f676:	02055263          	bgez	a0,e884f69a <__LibDispatch_SelectHandleCommand+0x48>
    e884f67a:	00095797          	auipc	a5,0x95
    e884f67e:	fae78793          	addi	a5,a5,-82 # e88e4628 <lwip_errno>
    e884f682:	4380                	lw	s0,0(a5)
    e884f684:	e401                	bnez	s0,e884f68c <__LibDispatch_SelectHandleCommand+0x3a>
    e884f686:	7479                	lui	s0,0xffffe
    e884f688:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
}
    e884f68c:	8522                	mv	a0,s0
    e884f68e:	70a2                	ld	ra,40(sp)
    e884f690:	fa91440b          	ldd	s0,s1,(sp),1,4
    e884f694:	7902                	ld	s2,32(sp)
    e884f696:	6145                	addi	sp,sp,48
    e884f698:	8082                	ret
	switch( inPkt->cmd )
    e884f69a:	00044883          	lbu	a7,0(s0)
    e884f69e:	4689                	li	a3,2
    e884f6a0:	10d88f63          	beq	a7,a3,e884f7be <__LibDispatch_SelectHandleCommand+0x16c>
    e884f6a4:	0316ed63          	bltu	a3,a7,e884f6de <__LibDispatch_SelectHandleCommand+0x8c>
    e884f6a8:	4785                	li	a5,1
    e884f6aa:	04f88c63          	beq	a7,a5,e884f702 <__LibDispatch_SelectHandleCommand+0xb0>
			dlogassert( "unknown command: %p", inPkt->cmd );
    e884f6ae:	6705                	lui	a4,0x1
    e884f6b0:	00071817          	auipc	a6,0x71
    e884f6b4:	3d080813          	addi	a6,a6,976 # e88c0a80 <__PRETTY_FUNCTION__.8975+0x9f0>
    e884f6b8:	00071797          	auipc	a5,0x71
    e884f6bc:	45078793          	addi	a5,a5,1104 # e88c0b08 <__PRETTY_FUNCTION__.9551>
    e884f6c0:	c7770713          	addi	a4,a4,-905 # c77 <memcmp-0xe87ff389>
    e884f6c4:	00071697          	auipc	a3,0x71
    e884f6c8:	4a468693          	addi	a3,a3,1188 # e88c0b68 <__PRETTY_FUNCTION__.9551+0x60>
    e884f6cc:	4601                	li	a2,0
    e884f6ce:	4581                	li	a1,0
    e884f6d0:	4501                	li	a0,0
			err = kInternalErr;
    e884f6d2:	7479                	lui	s0,0xffffe
			dlogassert( "unknown command: %p", inPkt->cmd );
    e884f6d4:	cf5fe0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			err = kInternalErr;
    e884f6d8:	59640413          	addi	s0,s0,1430 # ffffffffffffe596 <__DRAM0_INF_BASE+0xffffffff0000e596>
			goto exit;
    e884f6dc:	bf45                	j	e884f68c <__LibDispatch_SelectHandleCommand+0x3a>
	switch( inPkt->cmd )
    e884f6de:	478d                	li	a5,3
    e884f6e0:	12f88463          	beq	a7,a5,e884f808 <__LibDispatch_SelectHandleCommand+0x1b6>
    e884f6e4:	4791                	li	a5,4
    e884f6e6:	fcf894e3          	bne	a7,a5,e884f6ae <__LibDispatch_SelectHandleCommand+0x5c>
			if( gDispatchSelect_QuitSem ) dispatch_semaphore_signal( gDispatchSelect_QuitSem );
    e884f6ea:	00094797          	auipc	a5,0x94
    e884f6ee:	55e78793          	addi	a5,a5,1374 # e88e3c48 <gDispatchSelect_QuitSem>
    e884f6f2:	6388                	ld	a0,0(a5)
    e884f6f4:	7479                	lui	s0,0xffffe
    e884f6f6:	5a040413          	addi	s0,s0,1440 # ffffffffffffe5a0 <__DRAM0_INF_BASE+0xffffffff0000e5a0>
    e884f6fa:	d949                	beqz	a0,e884f68c <__LibDispatch_SelectHandleCommand+0x3a>
    e884f6fc:	829ff0ef          	jal	ra,e884ef24 <dispatch_semaphore_signal>
    e884f700:	b771                	j	e884f68c <__LibDispatch_SelectHandleCommand+0x3a>
			if( inPkt->source->type == DISPATCH_SOURCE_TYPE_TIMER )
    e884f702:	6418                	ld	a4,8(s0)
    e884f704:	473c                	lw	a5,72(a4)
    e884f706:	08d79963          	bne	a5,a3,e884f798 <__LibDispatch_SelectHandleCommand+0x146>
				if( ( (int64_t) inPkt->source->u.timer.start ) < 0 ) // Wall clock time.
    e884f70a:	6f24                	ld	s1,88(a4)
    e884f70c:	0404dc63          	bgez	s1,e884f764 <__LibDispatch_SelectHandleCommand+0x112>
					tempStart = -inPkt->source->u.timer.start;
    e884f710:	40900933          	neg	s2,s1
					milliseconds = tempStart - __dispatch_wall_milliseconds();
    e884f714:	fc5fe0ef          	jal	ra,e884e6d8 <__dispatch_wall_milliseconds>
    e884f718:	40a904b3          	sub	s1,s2,a0
					if( milliseconds > tempStart ) milliseconds = 0; // Start is in the past...force to now.
    e884f71c:	00997363          	bgeu	s2,s1,e884f722 <__LibDispatch_SelectHandleCommand+0xd0>
    e884f720:	4481                	li	s1,0
				inPkt->source->u.timer.expireTicks = UpTicks() + MillisecondsToUpTicks( milliseconds );
    e884f722:	2a3110ef          	jal	ra,e88611c4 <UpTicks>
    e884f726:	892a                	mv	s2,a0
    e884f728:	8526                	mv	a0,s1
    e884f72a:	375110ef          	jal	ra,e886129e <MillisecondsToUpTicks>
    e884f72e:	954a                	add	a0,a0,s2
    e884f730:	641c                	ld	a5,8(s0)
    e884f732:	fba8                	sd	a0,112(a5)
				for( next = &gDispatchSelect_TimerList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884f734:	00094797          	auipc	a5,0x94
    e884f738:	52c78793          	addi	a5,a5,1324 # e88e3c60 <gDispatchSelect_TimerList>
    e884f73c:	6398                	ld	a4,0(a5)
    e884f73e:	640c                	ld	a1,8(s0)
    e884f740:	863e                	mv	a2,a5
    e884f742:	c709                	beqz	a4,e884f74c <__LibDispatch_SelectHandleCommand+0xfa>
					if( curr == inPkt->source )
    e884f744:	6b34                	ld	a3,80(a4)
    e884f746:	02b71d63          	bne	a4,a1,e884f780 <__LibDispatch_SelectHandleCommand+0x12e>
						*next = curr->armedNext;
    e884f74a:	e394                	sd	a3,0(a5)
				for( next = &gDispatchSelect_TimerList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884f74c:	621c                	ld	a5,0(a2)
    e884f74e:	6414                	ld	a3,8(s0)
    e884f750:	00094717          	auipc	a4,0x94
    e884f754:	51070713          	addi	a4,a4,1296 # e88e3c60 <gDispatchSelect_TimerList>
    e884f758:	eb85                	bnez	a5,e884f788 <__LibDispatch_SelectHandleCommand+0x136>
				inPkt->source->armedNext = *next;
    e884f75a:	eabc                	sd	a5,80(a3)
				*next = inPkt->source;
    e884f75c:	641c                	ld	a5,8(s0)
    e884f75e:	e31c                	sd	a5,0(a4)
	err = kNoErr;
    e884f760:	4401                	li	s0,0
	return( err );
    e884f762:	b72d                	j	e884f68c <__LibDispatch_SelectHandleCommand+0x3a>
	return( ( UpTicks() * kMillisecondsPerSecond ) / UpTicksPerSecond() );
    e884f764:	261110ef          	jal	ra,e88611c4 <UpTicks>
    e884f768:	3e800793          	li	a5,1000
    e884f76c:	02f50533          	mul	a0,a0,a5
    e884f770:	02f55533          	divu	a0,a0,a5
					if( milliseconds > inPkt->source->u.timer.start ) milliseconds = 0; // Start is in the past...force to now.
    e884f774:	641c                	ld	a5,8(s0)
    e884f776:	6fbc                	ld	a5,88(a5)
					milliseconds = inPkt->source->u.timer.start - __dispatch_milliseconds();
    e884f778:	8c89                	sub	s1,s1,a0
					if( milliseconds > inPkt->source->u.timer.start ) milliseconds = 0; // Start is in the past...force to now.
    e884f77a:	fa97e3e3          	bltu	a5,s1,e884f720 <__LibDispatch_SelectHandleCommand+0xce>
    e884f77e:	b755                	j	e884f722 <__LibDispatch_SelectHandleCommand+0xd0>
				for( next = &gDispatchSelect_TimerList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884f780:	05070793          	addi	a5,a4,80
    e884f784:	8736                	mv	a4,a3
    e884f786:	bf75                	j	e884f742 <__LibDispatch_SelectHandleCommand+0xf0>
					if( inPkt->source->u.timer.expireTicks < curr->u.timer.expireTicks )
    e884f788:	7aac                	ld	a1,112(a3)
    e884f78a:	7bb0                	ld	a2,112(a5)
    e884f78c:	fcc5e7e3          	bltu	a1,a2,e884f75a <__LibDispatch_SelectHandleCommand+0x108>
				for( next = &gDispatchSelect_TimerList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884f790:	05078713          	addi	a4,a5,80
    e884f794:	6bbc                	ld	a5,80(a5)
    e884f796:	b7c9                	j	e884f758 <__LibDispatch_SelectHandleCommand+0x106>
			else if( ( inPkt->source->type == DISPATCH_SOURCE_TYPE_READ ) ||
    e884f798:	c781                	beqz	a5,e884f7a0 <__LibDispatch_SelectHandleCommand+0x14e>
    e884f79a:	468d                	li	a3,3
    e884f79c:	fcd792e3          	bne	a5,a3,e884f760 <__LibDispatch_SelectHandleCommand+0x10e>
    e884f7a0:	00094797          	auipc	a5,0x94
    e884f7a4:	4b878793          	addi	a5,a5,1208 # e88e3c58 <gDispatchSelect_ReadWriteList>
    e884f7a8:	a029                	j	e884f7b2 <__LibDispatch_SelectHandleCommand+0x160>
					if( curr == inPkt->source ) break;
    e884f7aa:	fad70be3          	beq	a4,a3,e884f760 <__LibDispatch_SelectHandleCommand+0x10e>
				for( next = &gDispatchSelect_ReadWriteList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884f7ae:	05068793          	addi	a5,a3,80
    e884f7b2:	6394                	ld	a3,0(a5)
    e884f7b4:	fafd                	bnez	a3,e884f7aa <__LibDispatch_SelectHandleCommand+0x158>
					inPkt->source->armedNext = NULL;
    e884f7b6:	04073823          	sd	zero,80(a4)
					*next = inPkt->source;
    e884f7ba:	6418                	ld	a4,8(s0)
    e884f7bc:	a0a1                	j	e884f804 <__LibDispatch_SelectHandleCommand+0x1b2>
			if( inPkt->source->type == DISPATCH_SOURCE_TYPE_TIMER )
    e884f7be:	6414                	ld	a3,8(s0)
    e884f7c0:	46bc                	lw	a5,72(a3)
    e884f7c2:	03179163          	bne	a5,a7,e884f7e4 <__LibDispatch_SelectHandleCommand+0x192>
				for( next = &gDispatchSelect_TimerList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884f7c6:	00094717          	auipc	a4,0x94
    e884f7ca:	49a70713          	addi	a4,a4,1178 # e88e3c60 <gDispatchSelect_TimerList>
    e884f7ce:	631c                	ld	a5,0(a4)
    e884f7d0:	dbc1                	beqz	a5,e884f760 <__LibDispatch_SelectHandleCommand+0x10e>
					if( curr == inPkt->source )
    e884f7d2:	6bb0                	ld	a2,80(a5)
    e884f7d4:	00f69463          	bne	a3,a5,e884f7dc <__LibDispatch_SelectHandleCommand+0x18a>
						*next = curr->armedNext;
    e884f7d8:	e310                	sd	a2,0(a4)
						break;
    e884f7da:	b759                	j	e884f760 <__LibDispatch_SelectHandleCommand+0x10e>
				for( next = &gDispatchSelect_TimerList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884f7dc:	05078713          	addi	a4,a5,80
    e884f7e0:	87b2                	mv	a5,a2
    e884f7e2:	b7fd                	j	e884f7d0 <__LibDispatch_SelectHandleCommand+0x17e>
			else if( ( inPkt->source->type == DISPATCH_SOURCE_TYPE_READ ) ||
    e884f7e4:	c781                	beqz	a5,e884f7ec <__LibDispatch_SelectHandleCommand+0x19a>
    e884f7e6:	470d                	li	a4,3
    e884f7e8:	f6e79ce3          	bne	a5,a4,e884f760 <__LibDispatch_SelectHandleCommand+0x10e>
    e884f7ec:	00094797          	auipc	a5,0x94
    e884f7f0:	46c78793          	addi	a5,a5,1132 # e88e3c58 <gDispatchSelect_ReadWriteList>
    e884f7f4:	a019                	j	e884f7fa <__LibDispatch_SelectHandleCommand+0x1a8>
				for( next = &gDispatchSelect_ReadWriteList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884f7f6:	05070793          	addi	a5,a4,80
    e884f7fa:	6398                	ld	a4,0(a5)
    e884f7fc:	d335                	beqz	a4,e884f760 <__LibDispatch_SelectHandleCommand+0x10e>
					if( curr == inPkt->source )
    e884f7fe:	fee69ce3          	bne	a3,a4,e884f7f6 <__LibDispatch_SelectHandleCommand+0x1a4>
						*next = curr->armedNext;
    e884f802:	6ab8                	ld	a4,80(a3)
					*next = inPkt->source;
    e884f804:	e398                	sd	a4,0(a5)
    e884f806:	bfa9                	j	e884f760 <__LibDispatch_SelectHandleCommand+0x10e>
			pthread_mutex_lock( inPkt->source->queue->lockPtr );
    e884f808:	641c                	ld	a5,8(s0)
    e884f80a:	779c                	ld	a5,40(a5)
    e884f80c:	7788                	ld	a0,40(a5)
    e884f80e:	3102c0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandDisarmSource );
    e884f812:	6408                	ld	a0,8(s0)
    e884f814:	4589                	li	a1,2
    e884f816:	d9fff0ef          	jal	ra,e884f5b4 <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock>
			dispatch_async_f( inPkt->source->queue, inPkt->source, __dispatch_source_free );
    e884f81a:	640c                	ld	a1,8(s0)
    e884f81c:	fffff617          	auipc	a2,0xfffff
    e884f820:	32e60613          	addi	a2,a2,814 # e884eb4a <__dispatch_source_free>
    e884f824:	7588                	ld	a0,40(a1)
    e884f826:	bfaff0ef          	jal	ra,e884ec20 <dispatch_async_f>
			break;
    e884f82a:	bf1d                	j	e884f760 <__LibDispatch_SelectHandleCommand+0x10e>

00000000e884f82c <__LibDispatch_SelectDrain>:
{
    e884f82c:	711d                	addi	sp,sp,-96
    e884f82e:	ec86                	sd	ra,88(sp)
    e884f830:	e0ca                	sd	s2,64(sp)
    e884f832:	fc4e                	sd	s3,56(sp)
    e884f834:	f852                	sd	s4,48(sp)
    e884f836:	f456                	sd	s5,40(sp)
    e884f838:	e8a2                	sd	s0,80(sp)
    e884f83a:	e4a6                	sd	s1,72(sp)
    e884f83c:	f05a                	sd	s6,32(sp)
    e884f83e:	ec5e                	sd	s7,24(sp)
    e884f840:	e862                	sd	s8,16(sp)
	pthread_setname_np_compat( "gcd-select-drain" );
    e884f842:	1b82c0ef          	jal	ra,e887b9fa <pthread_self>
    e884f846:	2501                	sext.w	a0,a0
    e884f848:	00071597          	auipc	a1,0x71
    e884f84c:	22058593          	addi	a1,a1,544 # e88c0a68 <__PRETTY_FUNCTION__.8975+0x9d8>
				timeout.tv_usec = (int32_t)( ( ( deltaTicks % ticksPerSec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884f850:	000f4ab7          	lui	s5,0xf4
	pthread_setname_np_compat( "gcd-select-drain" );
    e884f854:	5802c0ef          	jal	ra,e887bdd4 <pthread_setname_np>
		curr = gDispatchSelect_TimerList;
    e884f858:	00094a17          	auipc	s4,0x94
    e884f85c:	408a0a13          	addi	s4,s4,1032 # e88e3c60 <gDispatchSelect_TimerList>
				timeout.tv_usec = (int32_t)( ( ( deltaTicks % ticksPerSec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884f860:	240a8a93          	addi	s5,s5,576 # f4240 <memcmp-0xe870bdc0>
		FD_ZERO( &gDispatchSelect_ReadSet );
    e884f864:	00094917          	auipc	s2,0x94
    e884f868:	3ec90913          	addi	s2,s2,1004 # e88e3c50 <gDispatchSelect_ReadSet>
		FD_SET( gDispatchSelect_CommandSock, &gDispatchSelect_ReadSet );
    e884f86c:	03100993          	li	s3,49
		curr = gDispatchSelect_TimerList;
    e884f870:	000a3483          	ld	s1,0(s4)
		if( curr )
    e884f874:	c48d                	beqz	s1,e884f89e <__LibDispatch_SelectDrain+0x72>
			nowTicks = UpTicks();
    e884f876:	14f110ef          	jal	ra,e88611c4 <UpTicks>
			if( nowTicks < curr->u.timer.expireTicks )
    e884f87a:	78bc                	ld	a5,112(s1)
    e884f87c:	0cf57f63          	bgeu	a0,a5,e884f95a <__LibDispatch_SelectDrain+0x12e>
				timeout.tv_sec  = (int32_t)(     deltaTicks / ticksPerSec );
    e884f880:	3e800713          	li	a4,1000
				deltaTicks		= curr->u.timer.expireTicks - nowTicks;
    e884f884:	8f89                	sub	a5,a5,a0
				timeout.tv_sec  = (int32_t)(     deltaTicks / ticksPerSec );
    e884f886:	02e7d6b3          	divu	a3,a5,a4
				timeout.tv_usec = (int32_t)( ( ( deltaTicks % ticksPerSec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884f88a:	02e7f7b3          	remu	a5,a5,a4
				timeout.tv_sec  = (int32_t)(     deltaTicks / ticksPerSec );
    e884f88e:	2681                	sext.w	a3,a3
    e884f890:	e036                	sd	a3,0(sp)
				timeout.tv_usec = (int32_t)( ( ( deltaTicks % ticksPerSec ) * kMicrosecondsPerSecond ) / ticksPerSec );
    e884f892:	035787b3          	mul	a5,a5,s5
    e884f896:	02e7d7b3          	divu	a5,a5,a4
    e884f89a:	e43e                	sd	a5,8(sp)
			timeoutPtr = &timeout;
    e884f89c:	848a                	mv	s1,sp
		FD_ZERO( &gDispatchSelect_ReadSet );
    e884f89e:	461d                	li	a2,7
    e884f8a0:	4581                	li	a1,0
    e884f8a2:	00094517          	auipc	a0,0x94
    e884f8a6:	3ae50513          	addi	a0,a0,942 # e88e3c50 <gDispatchSelect_ReadSet>
    e884f8aa:	2eb2c0ef          	jal	ra,e887c394 <eLIBs_memset>
		maxFD = gDispatchSelect_CommandSock;
    e884f8ae:	00085b17          	auipc	s6,0x85
    e884f8b2:	5deb0b13          	addi	s6,s6,1502 # e88d4e8c <gDispatchSelect_CommandSock>
		FD_ZERO( &gDispatchSelect_WriteSet );
    e884f8b6:	00094517          	auipc	a0,0x94
    e884f8ba:	3b250513          	addi	a0,a0,946 # e88e3c68 <gDispatchSelect_WriteSet>
    e884f8be:	461d                	li	a2,7
    e884f8c0:	4581                	li	a1,0
    e884f8c2:	2d32c0ef          	jal	ra,e887c394 <eLIBs_memset>
		maxFD = gDispatchSelect_CommandSock;
    e884f8c6:	000b2503          	lw	a0,0(s6)
		FD_SET( gDispatchSelect_CommandSock, &gDispatchSelect_ReadSet );
    e884f8ca:	00a9ee63          	bltu	s3,a0,e884f8e6 <__LibDispatch_SelectDrain+0xba>
    e884f8ce:	4705                	li	a4,1
    e884f8d0:	40355693          	srai	a3,a0,0x3
    e884f8d4:	00757793          	andi	a5,a0,7
    e884f8d8:	00f717bb          	sllw	a5,a4,a5
    e884f8dc:	80d9470b          	lrbu	a4,s2,a3,0
    e884f8e0:	8fd9                	or	a5,a5,a4
    e884f8e2:	00d9578b          	srb	a5,s2,a3,0
		for( curr = gDispatchSelect_ReadWriteList; curr; curr = curr->armedNext )
    e884f8e6:	00094797          	auipc	a5,0x94
    e884f8ea:	37278793          	addi	a5,a5,882 # e88e3c58 <gDispatchSelect_ReadWriteList>
    e884f8ee:	6380                	ld	s0,0(a5)
		writeSetPtr = NULL;
    e884f8f0:	4601                	li	a2,0
			else if( curr->type == DISPATCH_SOURCE_TYPE_WRITE )
    e884f8f2:	488d                	li	a7,3
    e884f8f4:	00094697          	auipc	a3,0x94
    e884f8f8:	37468693          	addi	a3,a3,884 # e88e3c68 <gDispatchSelect_WriteSet>
					FD_SET( curr->u.rw.fd, &gDispatchSelect_WriteSet );
    e884f8fc:	4585                	li	a1,1
		for( curr = gDispatchSelect_ReadWriteList; curr; curr = curr->armedNext )
    e884f8fe:	e02d                	bnez	s0,e884f960 <__LibDispatch_SelectDrain+0x134>
		n = select( maxFD + 1, &gDispatchSelect_ReadSet, writeSetPtr, NULL, timeoutPtr );
    e884f900:	8726                	mv	a4,s1
    e884f902:	4681                	li	a3,0
    e884f904:	85ca                	mv	a1,s2
    e884f906:	2505                	addiw	a0,a0,1
    e884f908:	424360ef          	jal	ra,e8885d2c <lwip_select>
		err = select_errno( n );
    e884f90c:	0aa04e63          	bgtz	a0,e884f9c8 <__LibDispatch_SelectDrain+0x19c>
    e884f910:	10050f63          	beqz	a0,e884fa2e <__LibDispatch_SelectDrain+0x202>
    e884f914:	00095797          	auipc	a5,0x95
    e884f918:	d1478793          	addi	a5,a5,-748 # e88e4628 <lwip_errno>
    e884f91c:	0007a883          	lw	a7,0(a5)
    e884f920:	18089363          	bnez	a7,e884faa6 <__LibDispatch_SelectDrain+0x27a>
    e884f924:	78f9                	lui	a7,0xffffe
    e884f926:	5d488893          	addi	a7,a7,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
			dlogassert( "select() error: %#m", err );
    e884f92a:	6705                	lui	a4,0x1
    e884f92c:	0006f817          	auipc	a6,0x6f
    e884f930:	2dc80813          	addi	a6,a6,732 # e88bec08 <__PRETTY_FUNCTION__.8745+0x20>
    e884f934:	00071797          	auipc	a5,0x71
    e884f938:	1b478793          	addi	a5,a5,436 # e88c0ae8 <__PRETTY_FUNCTION__.9507>
    e884f93c:	bca70713          	addi	a4,a4,-1078 # bca <memcmp-0xe87ff436>
    e884f940:	00071697          	auipc	a3,0x71
    e884f944:	22868693          	addi	a3,a3,552 # e88c0b68 <__PRETTY_FUNCTION__.9551+0x60>
    e884f948:	4601                	li	a2,0
    e884f94a:	4581                	li	a1,0
    e884f94c:	4501                	li	a0,0
    e884f94e:	a7bfe0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			Sleep( 1 );
    e884f952:	4505                	li	a0,1
    e884f954:	6c22c0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e884f958:	a8d9                	j	e884fa2e <__LibDispatch_SelectDrain+0x202>
				timeout.tv_sec  = 0;
    e884f95a:	e002                	sd	zero,0(sp)
				timeout.tv_usec = 0;
    e884f95c:	e402                	sd	zero,8(sp)
    e884f95e:	bf3d                	j	e884f89c <__LibDispatch_SelectDrain+0x70>
			if( curr->type == DISPATCH_SOURCE_TYPE_READ )
    e884f960:	443c                	lw	a5,72(s0)
    e884f962:	eb8d                	bnez	a5,e884f994 <__LibDispatch_SelectDrain+0x168>
				if( !curr->canceled )
    e884f964:	03044783          	lbu	a5,48(s0)
    e884f968:	e785                	bnez	a5,e884f990 <__LibDispatch_SelectDrain+0x164>
					FD_SET( curr->u.rw.fd, &gDispatchSelect_ReadSet );
    e884f96a:	4c3c                	lw	a5,88(s0)
    e884f96c:	00f9ee63          	bltu	s3,a5,e884f988 <__LibDispatch_SelectDrain+0x15c>
    e884f970:	4037d813          	srai	a6,a5,0x3
    e884f974:	8109430b          	lrbu	t1,s2,a6,0
    e884f978:	0077f713          	andi	a4,a5,7
    e884f97c:	00e5973b          	sllw	a4,a1,a4
    e884f980:	00676733          	or	a4,a4,t1
    e884f984:	0109570b          	srb	a4,s2,a6,0
					if( curr->u.rw.fd > maxFD ) maxFD = curr->u.rw.fd;
    e884f988:	00a7a733          	slt	a4,a5,a0
    e884f98c:	40e7950b          	mveqz	a0,a5,a4
		for( curr = gDispatchSelect_ReadWriteList; curr; curr = curr->armedNext )
    e884f990:	6820                	ld	s0,80(s0)
    e884f992:	b7b5                	j	e884f8fe <__LibDispatch_SelectDrain+0xd2>
			else if( curr->type == DISPATCH_SOURCE_TYPE_WRITE )
    e884f994:	ff179ee3          	bne	a5,a7,e884f990 <__LibDispatch_SelectDrain+0x164>
				if( !curr->canceled )
    e884f998:	03044783          	lbu	a5,48(s0)
    e884f99c:	fbf5                	bnez	a5,e884f990 <__LibDispatch_SelectDrain+0x164>
					FD_SET( curr->u.rw.fd, &gDispatchSelect_WriteSet );
    e884f99e:	4c3c                	lw	a5,88(s0)
    e884f9a0:	00f9ee63          	bltu	s3,a5,e884f9bc <__LibDispatch_SelectDrain+0x190>
    e884f9a4:	4037d613          	srai	a2,a5,0x3
    e884f9a8:	80c6c80b          	lrbu	a6,a3,a2,0
    e884f9ac:	0077f713          	andi	a4,a5,7
    e884f9b0:	00e5973b          	sllw	a4,a1,a4
    e884f9b4:	01076733          	or	a4,a4,a6
    e884f9b8:	00c6d70b          	srb	a4,a3,a2,0
					if( curr->u.rw.fd > maxFD ) maxFD = curr->u.rw.fd;
    e884f9bc:	00a7a733          	slt	a4,a5,a0
    e884f9c0:	40e7950b          	mveqz	a0,a5,a4
					writeSetPtr = &gDispatchSelect_WriteSet;
    e884f9c4:	8636                	mv	a2,a3
    e884f9c6:	b7e9                	j	e884f990 <__LibDispatch_SelectDrain+0x164>
			if( FD_ISSET( gDispatchSelect_CommandSock, &gDispatchSelect_ReadSet ) )
    e884f9c8:	000b2703          	lw	a4,0(s6)
    e884f9cc:	0ae9ef63          	bltu	s3,a4,e884fa8a <__LibDispatch_SelectDrain+0x25e>
    e884f9d0:	40375793          	srai	a5,a4,0x3
    e884f9d4:	80f9478b          	lrbu	a5,s2,a5,0
    e884f9d8:	8b1d                	andi	a4,a4,7
    e884f9da:	40e7d7bb          	sraw	a5,a5,a4
    e884f9de:	8b85                	andi	a5,a5,1
    e884f9e0:	c7cd                	beqz	a5,e884fa8a <__LibDispatch_SelectDrain+0x25e>
				err = __LibDispatch_SelectHandleCommand( NULL );
    e884f9e2:	4501                	li	a0,0
    e884f9e4:	c6fff0ef          	jal	ra,e884f652 <__LibDispatch_SelectHandleCommand>
				if( err ) break;
    e884f9e8:	c139                	beqz	a0,e884fa2e <__LibDispatch_SelectDrain+0x202>
}
    e884f9ea:	60e6                	ld	ra,88(sp)
    e884f9ec:	6446                	ld	s0,80(sp)
    e884f9ee:	64a6                	ld	s1,72(sp)
    e884f9f0:	6906                	ld	s2,64(sp)
    e884f9f2:	79e2                	ld	s3,56(sp)
    e884f9f4:	7a42                	ld	s4,48(sp)
    e884f9f6:	7aa2                	ld	s5,40(sp)
    e884f9f8:	7b02                	ld	s6,32(sp)
    e884f9fa:	6be2                	ld	s7,24(sp)
    e884f9fc:	6c42                	ld	s8,16(sp)
    e884f9fe:	6125                	addi	sp,sp,96
    e884fa00:	8082                	ret
					if( ( curr->type == DISPATCH_SOURCE_TYPE_READ ) && 
    e884fa02:	45bc                	lw	a5,72(a1)
    e884fa04:	69b4                	ld	a3,80(a1)
    e884fa06:	e7ad                	bnez	a5,e884fa70 <__LibDispatch_SelectDrain+0x244>
						FD_ISSET( curr->u.rw.fd, &gDispatchSelect_ReadSet ) )
    e884fa08:	4db8                	lw	a4,88(a1)
					if( ( curr->type == DISPATCH_SOURCE_TYPE_READ ) && 
    e884fa0a:	06e9ed63          	bltu	s3,a4,e884fa84 <__LibDispatch_SelectDrain+0x258>
						FD_ISSET( curr->u.rw.fd, &gDispatchSelect_ReadSet ) )
    e884fa0e:	40375793          	srai	a5,a4,0x3
    e884fa12:	80f9478b          	lrbu	a5,s2,a5,0
							 FD_ISSET( curr->u.rw.fd, &gDispatchSelect_WriteSet ) )
    e884fa16:	8b1d                	andi	a4,a4,7
					else if( ( curr->type == DISPATCH_SOURCE_TYPE_WRITE ) && 
    e884fa18:	40e7d7bb          	sraw	a5,a5,a4
    e884fa1c:	8b85                	andi	a5,a5,1
    e884fa1e:	c3bd                	beqz	a5,e884fa84 <__LibDispatch_SelectDrain+0x258>
						*next = curr->armedNext;
    e884fa20:	e094                	sd	a3,0(s1)
						dispatch_async_f( curr->queue, curr, __LibDispatch_SelectHandleReadWriteEvent );
    e884fa22:	7588                	ld	a0,40(a1)
    e884fa24:	865a                	mv	a2,s6
    e884fa26:	9faff0ef          	jal	ra,e884ec20 <dispatch_async_f>
				for( next = &gDispatchSelect_ReadWriteList; ( curr = *next ) != NULL; )
    e884fa2a:	608c                	ld	a1,0(s1)
    e884fa2c:	f9f9                	bnez	a1,e884fa02 <__LibDispatch_SelectDrain+0x1d6>
		nowTicks = UpTicks();
    e884fa2e:	796110ef          	jal	ra,e88611c4 <UpTicks>
    e884fa32:	8b2a                	mv	s6,a0
				dispatch_async_f( curr->queue, curr, __LibDispatch_SelectHandleTimerEvent );
    e884fa34:	fffffb97          	auipc	s7,0xfffff
    e884fa38:	e8eb8b93          	addi	s7,s7,-370 # e884e8c2 <__LibDispatch_SelectHandleTimerEvent>
		while( ( curr = gDispatchSelect_TimerList ) != NULL )
    e884fa3c:	000a3483          	ld	s1,0(s4)
    e884fa40:	e8ad                	bnez	s1,e884fab2 <__LibDispatch_SelectDrain+0x286>
		while( ( expiredCurr = expiredList ) != NULL )
    e884fa42:	e20407e3          	beqz	s0,e884f870 <__LibDispatch_SelectDrain+0x44>
			deltaTicks = MillisecondsToUpTicks( expiredCurr->u.timer.intervalMs );
    e884fa46:	7028                	ld	a0,96(s0)
			expiredList = expiredCurr->armedNext;
    e884fa48:	6824                	ld	s1,80(s0)
			deltaTicks = MillisecondsToUpTicks( expiredCurr->u.timer.intervalMs );
    e884fa4a:	055110ef          	jal	ra,e886129e <MillisecondsToUpTicks>
			add_saturate( expiredCurr->u.timer.expireTicks, deltaTicks, UINT64_MAX );
    e884fa4e:	fff54693          	not	a3,a0
    e884fa52:	783c                	ld	a5,112(s0)
    e884fa54:	577d                	li	a4,-1
    e884fa56:	00d7f463          	bgeu	a5,a3,e884fa5e <__LibDispatch_SelectDrain+0x232>
    e884fa5a:	00a78733          	add	a4,a5,a0
			for( next = &gDispatchSelect_TimerList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884fa5e:	000a3783          	ld	a5,0(s4)
    e884fa62:	f838                	sd	a4,112(s0)
    e884fa64:	86d2                	mv	a3,s4
    e884fa66:	e3c9                	bnez	a5,e884fae8 <__LibDispatch_SelectDrain+0x2bc>
			expiredCurr->armedNext = *next;
    e884fa68:	e83c                	sd	a5,80(s0)
			*next = expiredCurr;
    e884fa6a:	e280                	sd	s0,0(a3)
			expiredList = expiredCurr->armedNext;
    e884fa6c:	8426                	mv	s0,s1
    e884fa6e:	bfd1                	j	e884fa42 <__LibDispatch_SelectDrain+0x216>
					else if( ( curr->type == DISPATCH_SOURCE_TYPE_WRITE ) && 
    e884fa70:	01779a63          	bne	a5,s7,e884fa84 <__LibDispatch_SelectDrain+0x258>
							 FD_ISSET( curr->u.rw.fd, &gDispatchSelect_WriteSet ) )
    e884fa74:	4db8                	lw	a4,88(a1)
					else if( ( curr->type == DISPATCH_SOURCE_TYPE_WRITE ) && 
    e884fa76:	00e9e763          	bltu	s3,a4,e884fa84 <__LibDispatch_SelectDrain+0x258>
							 FD_ISSET( curr->u.rw.fd, &gDispatchSelect_WriteSet ) )
    e884fa7a:	40375793          	srai	a5,a4,0x3
    e884fa7e:	80fc478b          	lrbu	a5,s8,a5,0
    e884fa82:	bf51                	j	e884fa16 <__LibDispatch_SelectDrain+0x1ea>
						next = &curr->armedNext;
    e884fa84:	05058493          	addi	s1,a1,80
    e884fa88:	b74d                	j	e884fa2a <__LibDispatch_SelectDrain+0x1fe>
    e884fa8a:	00094497          	auipc	s1,0x94
    e884fa8e:	1ce48493          	addi	s1,s1,462 # e88e3c58 <gDispatchSelect_ReadWriteList>
					else if( ( curr->type == DISPATCH_SOURCE_TYPE_WRITE ) && 
    e884fa92:	4b8d                	li	s7,3
							 FD_ISSET( curr->u.rw.fd, &gDispatchSelect_WriteSet ) )
    e884fa94:	00094c17          	auipc	s8,0x94
    e884fa98:	1d4c0c13          	addi	s8,s8,468 # e88e3c68 <gDispatchSelect_WriteSet>
						dispatch_async_f( curr->queue, curr, __LibDispatch_SelectHandleReadWriteEvent );
    e884fa9c:	00000b17          	auipc	s6,0x0
    e884faa0:	b6cb0b13          	addi	s6,s6,-1172 # e884f608 <__LibDispatch_SelectHandleReadWriteEvent>
    e884faa4:	b759                	j	e884fa2a <__LibDispatch_SelectDrain+0x1fe>
		else if( err != kTimeoutErr )
    e884faa6:	77f9                	lui	a5,0xffffe
    e884faa8:	5be78793          	addi	a5,a5,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e884faac:	e6f89fe3          	bne	a7,a5,e884f92a <__LibDispatch_SelectDrain+0xfe>
    e884fab0:	bfbd                	j	e884fa2e <__LibDispatch_SelectDrain+0x202>
			if( nowTicks < curr->u.timer.expireTicks ) break;
    e884fab2:	78bc                	ld	a5,112(s1)
    e884fab4:	f8fb67e3          	bltu	s6,a5,e884fa42 <__LibDispatch_SelectDrain+0x216>
			gDispatchSelect_TimerList = curr->armedNext;
    e884fab8:	68bc                	ld	a5,80(s1)
			if( ( atomic_fetch_and_or_32( &curr->pending, 1 ) & 1 ) == 0 )
    e884faba:	4585                	li	a1,1
			curr->armedNext = expiredList;
    e884fabc:	e8a0                	sd	s0,80(s1)
			if( ( atomic_fetch_and_or_32( &curr->pending, 1 ) & 1 ) == 0 )
    e884fabe:	03448513          	addi	a0,s1,52
			gDispatchSelect_TimerList = curr->armedNext;
    e884fac2:	00fa3023          	sd	a5,0(s4)
			if( ( atomic_fetch_and_or_32( &curr->pending, 1 ) & 1 ) == 0 )
    e884fac6:	f2cf50ef          	jal	ra,e88451f2 <atomic_fetch_and_or_32>
    e884faca:	8905                	andi	a0,a0,1
    e884facc:	e911                	bnez	a0,e884fae0 <__LibDispatch_SelectDrain+0x2b4>
				dispatch_async_f( curr->queue, curr, __LibDispatch_SelectHandleTimerEvent );
    e884face:	7488                	ld	a0,40(s1)
				curr->u.timer.count = 0;
    e884fad0:	0604b423          	sd	zero,104(s1)
				dispatch_async_f( curr->queue, curr, __LibDispatch_SelectHandleTimerEvent );
    e884fad4:	865e                	mv	a2,s7
    e884fad6:	85a6                	mv	a1,s1
    e884fad8:	948ff0ef          	jal	ra,e884ec20 <dispatch_async_f>
		err = select_errno( n );
    e884fadc:	8426                	mv	s0,s1
    e884fade:	bfb9                	j	e884fa3c <__LibDispatch_SelectDrain+0x210>
				++curr->u.timer.count;
    e884fae0:	74bc                	ld	a5,104(s1)
    e884fae2:	0785                	addi	a5,a5,1
    e884fae4:	f4bc                	sd	a5,104(s1)
    e884fae6:	bfdd                	j	e884fadc <__LibDispatch_SelectDrain+0x2b0>
				if( expiredCurr->u.timer.expireTicks < curr->u.timer.expireTicks )
    e884fae8:	7bb0                	ld	a2,112(a5)
    e884faea:	f6c76fe3          	bltu	a4,a2,e884fa68 <__LibDispatch_SelectDrain+0x23c>
			for( next = &gDispatchSelect_TimerList; ( curr = *next ) != NULL; next = &curr->armedNext )
    e884faee:	05078693          	addi	a3,a5,80
    e884faf2:	6bbc                	ld	a5,80(a5)
    e884faf4:	bf8d                	j	e884fa66 <__LibDispatch_SelectDrain+0x23a>

00000000e884faf6 <dispatch_resume>:
	require( inObj, exit );
    e884faf6:	c961                	beqz	a0,e884fbc6 <dispatch_resume+0xd0>
{
    e884faf8:	1101                	addi	sp,sp,-32
    e884fafa:	e822                	sd	s0,16(sp)
    e884fafc:	ec06                	sd	ra,24(sp)
	magic = *( (const uint32_t *) inObj );
    e884fafe:	00052883          	lw	a7,0(a0)
	if(      magic == kDispatchQueue_MagicGood )	__dispatch_queue_resume( (dispatch_queue_t) inObj );
    e884fb02:	647177b7          	lui	a5,0x64717
    e884fb06:	56578793          	addi	a5,a5,1381 # 64717565 <memcmp-0x840e8a9b>
    e884fb0a:	842a                	mv	s0,a0
    e884fb0c:	04f89663          	bne	a7,a5,e884fb58 <dispatch_resume+0x62>
	require( DispatchQueueValid( inQueue ), exit );
    e884fb10:	415c                	lw	a5,4(a0)
    e884fb12:	0af05663          	blez	a5,e884fbbe <dispatch_resume+0xc8>
	require( inQueue != gDispatchMainQueue, exit );
    e884fb16:	00094797          	auipc	a5,0x94
    e884fb1a:	10278793          	addi	a5,a5,258 # e88e3c18 <gDispatchMainQueue>
    e884fb1e:	639c                	ld	a5,0(a5)
    e884fb20:	08f50f63          	beq	a0,a5,e884fbbe <dispatch_resume+0xc8>
	require( !inQueue->concurrent, exit );
    e884fb24:	04254783          	lbu	a5,66(a0)
    e884fb28:	ebd9                	bnez	a5,e884fbbe <dispatch_resume+0xc8>
	pthread_mutex_lock( inQueue->lockPtr );
    e884fb2a:	7508                	ld	a0,40(a0)
    e884fb2c:	7f32b0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( ( --inQueue->suspendCount == 0 ) && inQueue->itemsHead )
    e884fb30:	407c                	lw	a5,68(s0)
    e884fb32:	fff7871b          	addiw	a4,a5,-1
    e884fb36:	c078                	sw	a4,68(s0)
    e884fb38:	eb11                	bnez	a4,e884fb4c <dispatch_resume+0x56>
    e884fb3a:	781c                	ld	a5,48(s0)
    e884fb3c:	cb81                	beqz	a5,e884fb4c <dispatch_resume+0x56>
		err = __LibDispatch_ScheduleWork( __dispatch_queue_serial_drain, inQueue );
    e884fb3e:	85a2                	mv	a1,s0
    e884fb40:	fffff517          	auipc	a0,0xfffff
    e884fb44:	f9850513          	addi	a0,a0,-104 # e884ead8 <__dispatch_queue_serial_drain>
    e884fb48:	dcffe0ef          	jal	ra,e884e916 <__LibDispatch_ScheduleWork>
	pthread_mutex_unlock( inQueue->lockPtr );
    e884fb4c:	7408                	ld	a0,40(s0)
}
    e884fb4e:	6442                	ld	s0,16(sp)
    e884fb50:	60e2                	ld	ra,24(sp)
    e884fb52:	6105                	addi	sp,sp,32
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fb54:	00e2c06f          	j	e887bb62 <pthread_mutex_unlock>
	else if( magic == kDispatchSource_MagicGood )	__dispatch_source_resume( (dispatch_source_t) inObj );
    e884fb58:	647377b7          	lui	a5,0x64737
    e884fb5c:	26378793          	addi	a5,a5,611 # 64737263 <memcmp-0x840c8d9d>
    e884fb60:	02f89b63          	bne	a7,a5,e884fb96 <dispatch_resume+0xa0>
	require( DispatchSourceValid( inSource ), exit );
    e884fb64:	415c                	lw	a5,4(a0)
    e884fb66:	04f05c63          	blez	a5,e884fbbe <dispatch_resume+0xc8>
	pthread_mutex_lock( inSource->queue->lockPtr );
    e884fb6a:	751c                	ld	a5,40(a0)
    e884fb6c:	7788                	ld	a0,40(a5)
    e884fb6e:	7b12b0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( ( --inSource->suspendCount == 0 ) && !inSource->canceled )
    e884fb72:	501c                	lw	a5,32(s0)
    e884fb74:	fff7871b          	addiw	a4,a5,-1
    e884fb78:	d018                	sw	a4,32(s0)
    e884fb7a:	eb19                	bnez	a4,e884fb90 <dispatch_resume+0x9a>
    e884fb7c:	03044783          	lbu	a5,48(s0)
    e884fb80:	eb81                	bnez	a5,e884fb90 <dispatch_resume+0x9a>
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884fb82:	8522                	mv	a0,s0
}
    e884fb84:	6442                	ld	s0,16(sp)
    e884fb86:	60e2                	ld	ra,24(sp)
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884fb88:	4585                	li	a1,1
}
    e884fb8a:	6105                	addi	sp,sp,32
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884fb8c:	a29ff06f          	j	e884f5b4 <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock>
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fb90:	741c                	ld	a5,40(s0)
    e884fb92:	7788                	ld	a0,40(a5)
    e884fb94:	bf6d                	j	e884fb4e <dispatch_resume+0x58>
	else { dlogassert( "bad object '%C' %p", magic, inObj ); goto exit; }
    e884fb96:	e02a                	sd	a0,0(sp)
    e884fb98:	00071817          	auipc	a6,0x71
    e884fb9c:	fa080813          	addi	a6,a6,-96 # e88c0b38 <__PRETTY_FUNCTION__.9551+0x30>
    e884fba0:	00071797          	auipc	a5,0x71
    e884fba4:	f2078793          	addi	a5,a5,-224 # e88c0ac0 <__PRETTY_FUNCTION__.9181>
    e884fba8:	48800713          	li	a4,1160
    e884fbac:	00071697          	auipc	a3,0x71
    e884fbb0:	fbc68693          	addi	a3,a3,-68 # e88c0b68 <__PRETTY_FUNCTION__.9551+0x60>
    e884fbb4:	4601                	li	a2,0
    e884fbb6:	4581                	li	a1,0
    e884fbb8:	4501                	li	a0,0
    e884fbba:	80ffe0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
}
    e884fbbe:	60e2                	ld	ra,24(sp)
    e884fbc0:	6442                	ld	s0,16(sp)
    e884fbc2:	6105                	addi	sp,sp,32
    e884fbc4:	8082                	ret
    e884fbc6:	8082                	ret

00000000e884fbc8 <dispatch_source_set_timer>:
	require( DispatchSourceValid( inSource ), exit );
    e884fbc8:	cd35                	beqz	a0,e884fc44 <dispatch_source_set_timer+0x7c>
    e884fbca:	4118                	lw	a4,0(a0)
    e884fbcc:	647377b7          	lui	a5,0x64737
    e884fbd0:	26378793          	addi	a5,a5,611 # 64737263 <memcmp-0x840c8d9d>
    e884fbd4:	06f71863          	bne	a4,a5,e884fc44 <dispatch_source_set_timer+0x7c>
    e884fbd8:	415c                	lw	a5,4(a0)
    e884fbda:	06f05563          	blez	a5,e884fc44 <dispatch_source_set_timer+0x7c>
{
    e884fbde:	1101                	addi	sp,sp,-32
    e884fbe0:	f891540b          	sdd	s0,s1,(sp),0,4
    e884fbe4:	e84a                	sd	s2,16(sp)
    e884fbe6:	ec06                	sd	ra,24(sp)
	pthread_mutex_lock( inSource->queue->lockPtr );
    e884fbe8:	751c                	ld	a5,40(a0)
    e884fbea:	842a                	mv	s0,a0
    e884fbec:	84b2                	mv	s1,a2
    e884fbee:	7788                	ld	a0,40(a5)
    e884fbf0:	892e                	mv	s2,a1
    e884fbf2:	72d2b0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	inSource->u.timer.start			= inStart;
    e884fbf6:	05243c23          	sd	s2,88(s0)
	if( inSource->u.timer.intervalMs == 0 ) inSource->u.timer.intervalMs = 1; // Round up to at least 1 millisecond.
    e884fbfa:	000f4637          	lui	a2,0xf4
    e884fbfe:	23f60793          	addi	a5,a2,575 # f423f <memcmp-0xe870bdc1>
    e884fc02:	0297f563          	bgeu	a5,s1,e884fc2c <dispatch_source_set_timer+0x64>
	inSource->u.timer.intervalMs	= inInterval / kNanosecondsPerMillisecond;
    e884fc06:	24060613          	addi	a2,a2,576
    e884fc0a:	02c4d4b3          	divu	s1,s1,a2
    e884fc0e:	f024                	sd	s1,96(s0)
	if( ( inSource->suspendCount == 0 ) && !inSource->canceled )
    e884fc10:	501c                	lw	a5,32(s0)
    e884fc12:	e385                	bnez	a5,e884fc32 <dispatch_source_set_timer+0x6a>
    e884fc14:	03044783          	lbu	a5,48(s0)
    e884fc18:	ef89                	bnez	a5,e884fc32 <dispatch_source_set_timer+0x6a>
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884fc1a:	8522                	mv	a0,s0
}
    e884fc1c:	f891440b          	ldd	s0,s1,(sp),0,4
    e884fc20:	60e2                	ld	ra,24(sp)
    e884fc22:	6942                	ld	s2,16(sp)
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884fc24:	4585                	li	a1,1
}
    e884fc26:	6105                	addi	sp,sp,32
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandArmSource );
    e884fc28:	98dff06f          	j	e884f5b4 <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock>
	if( inSource->u.timer.intervalMs == 0 ) inSource->u.timer.intervalMs = 1; // Round up to at least 1 millisecond.
    e884fc2c:	4785                	li	a5,1
    e884fc2e:	f03c                	sd	a5,96(s0)
    e884fc30:	b7c5                	j	e884fc10 <dispatch_source_set_timer+0x48>
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fc32:	741c                	ld	a5,40(s0)
}
    e884fc34:	f891440b          	ldd	s0,s1,(sp),0,4
    e884fc38:	60e2                	ld	ra,24(sp)
    e884fc3a:	6942                	ld	s2,16(sp)
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fc3c:	7788                	ld	a0,40(a5)
}
    e884fc3e:	6105                	addi	sp,sp,32
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fc40:	7232b06f          	j	e887bb62 <pthread_mutex_unlock>
    e884fc44:	8082                	ret

00000000e884fc46 <dispatch_source_cancel>:
	require( DispatchSourceValid( inSource ), exit );
    e884fc46:	c12d                	beqz	a0,e884fca8 <dispatch_source_cancel+0x62>
    e884fc48:	4118                	lw	a4,0(a0)
    e884fc4a:	647377b7          	lui	a5,0x64737
    e884fc4e:	26378793          	addi	a5,a5,611 # 64737263 <memcmp-0x840c8d9d>
    e884fc52:	04f71b63          	bne	a4,a5,e884fca8 <dispatch_source_cancel+0x62>
    e884fc56:	415c                	lw	a5,4(a0)
    e884fc58:	04f05863          	blez	a5,e884fca8 <dispatch_source_cancel+0x62>
{
    e884fc5c:	1141                	addi	sp,sp,-16
    e884fc5e:	e022                	sd	s0,0(sp)
    e884fc60:	e406                	sd	ra,8(sp)
	pthread_mutex_lock( inSource->queue->lockPtr );
    e884fc62:	751c                	ld	a5,40(a0)
    e884fc64:	842a                	mv	s0,a0
    e884fc66:	7788                	ld	a0,40(a5)
    e884fc68:	6b72b0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( inSource->canceled )
    e884fc6c:	03044783          	lbu	a5,48(s0)
    e884fc70:	cb81                	beqz	a5,e884fc80 <dispatch_source_cancel+0x3a>
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fc72:	741c                	ld	a5,40(s0)
}
    e884fc74:	6402                	ld	s0,0(sp)
    e884fc76:	60a2                	ld	ra,8(sp)
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fc78:	7788                	ld	a0,40(a5)
}
    e884fc7a:	0141                	addi	sp,sp,16
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fc7c:	6e72b06f          	j	e887bb62 <pthread_mutex_unlock>
	inSource->canceled = true;
    e884fc80:	4785                	li	a5,1
    e884fc82:	02f40823          	sb	a5,48(s0)
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandDisarmSource );
    e884fc86:	4589                	li	a1,2
    e884fc88:	8522                	mv	a0,s0
    e884fc8a:	92bff0ef          	jal	ra,e884f5b4 <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock>
	if( inSource->cancelFunction )
    e884fc8e:	6030                	ld	a2,64(s0)
    e884fc90:	ca01                	beqz	a2,e884fca0 <dispatch_source_cancel+0x5a>
		dispatch_async_f( inSource->queue, inSource->base.context, inSource->cancelFunction );
    e884fc92:	640c                	ld	a1,8(s0)
    e884fc94:	7408                	ld	a0,40(s0)
}
    e884fc96:	6402                	ld	s0,0(sp)
    e884fc98:	60a2                	ld	ra,8(sp)
    e884fc9a:	0141                	addi	sp,sp,16
		dispatch_async_f( inSource->queue, inSource->base.context, inSource->cancelFunction );
    e884fc9c:	f85fe06f          	j	e884ec20 <dispatch_async_f>
}
    e884fca0:	60a2                	ld	ra,8(sp)
    e884fca2:	6402                	ld	s0,0(sp)
    e884fca4:	0141                	addi	sp,sp,16
    e884fca6:	8082                	ret
    e884fca8:	8082                	ret

00000000e884fcaa <dispatch_suspend>:
	require( inObj, exit );
    e884fcaa:	c955                	beqz	a0,e884fd5e <dispatch_suspend+0xb4>
{
    e884fcac:	1101                	addi	sp,sp,-32
    e884fcae:	e822                	sd	s0,16(sp)
    e884fcb0:	ec06                	sd	ra,24(sp)
	magic = *( (const uint32_t *) inObj );
    e884fcb2:	00052883          	lw	a7,0(a0)
	if(      magic == kDispatchQueue_MagicGood )	__dispatch_queue_suspend( (dispatch_queue_t) inObj );
    e884fcb6:	647177b7          	lui	a5,0x64717
    e884fcba:	56578793          	addi	a5,a5,1381 # 64717565 <memcmp-0x840e8a9b>
    e884fcbe:	842a                	mv	s0,a0
    e884fcc0:	02f89b63          	bne	a7,a5,e884fcf6 <dispatch_suspend+0x4c>
	require( DispatchQueueValid( inQueue ), exit );
    e884fcc4:	415c                	lw	a5,4(a0)
    e884fcc6:	08f05863          	blez	a5,e884fd56 <dispatch_suspend+0xac>
	require( inQueue != gDispatchMainQueue, exit );
    e884fcca:	00094797          	auipc	a5,0x94
    e884fcce:	f4e78793          	addi	a5,a5,-178 # e88e3c18 <gDispatchMainQueue>
    e884fcd2:	639c                	ld	a5,0(a5)
    e884fcd4:	08f50163          	beq	a0,a5,e884fd56 <dispatch_suspend+0xac>
	require( !inQueue->concurrent, exit );
    e884fcd8:	04254783          	lbu	a5,66(a0)
    e884fcdc:	efad                	bnez	a5,e884fd56 <dispatch_suspend+0xac>
	pthread_mutex_lock( inQueue->lockPtr );
    e884fcde:	7508                	ld	a0,40(a0)
    e884fce0:	63f2b0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		++inQueue->suspendCount;
    e884fce4:	407c                	lw	a5,68(s0)
	pthread_mutex_unlock( inQueue->lockPtr );
    e884fce6:	7408                	ld	a0,40(s0)
		++inQueue->suspendCount;
    e884fce8:	2785                	addiw	a5,a5,1
    e884fcea:	c07c                	sw	a5,68(s0)
}
    e884fcec:	6442                	ld	s0,16(sp)
    e884fcee:	60e2                	ld	ra,24(sp)
    e884fcf0:	6105                	addi	sp,sp,32
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fcf2:	6712b06f          	j	e887bb62 <pthread_mutex_unlock>
	else if( magic == kDispatchSource_MagicGood )	__dispatch_source_suspend( (dispatch_source_t) inObj );
    e884fcf6:	647377b7          	lui	a5,0x64737
    e884fcfa:	26378793          	addi	a5,a5,611 # 64737263 <memcmp-0x840c8d9d>
    e884fcfe:	02f89863          	bne	a7,a5,e884fd2e <dispatch_suspend+0x84>
	require( DispatchSourceValid( inSource ), exit );
    e884fd02:	415c                	lw	a5,4(a0)
    e884fd04:	04f05963          	blez	a5,e884fd56 <dispatch_suspend+0xac>
	pthread_mutex_lock( inSource->queue->lockPtr );
    e884fd08:	751c                	ld	a5,40(a0)
    e884fd0a:	7788                	ld	a0,40(a5)
    e884fd0c:	6132b0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( inSource->suspendCount++ == 0 )
    e884fd10:	501c                	lw	a5,32(s0)
    e884fd12:	0017871b          	addiw	a4,a5,1
    e884fd16:	d018                	sw	a4,32(s0)
    e884fd18:	eb81                	bnez	a5,e884fd28 <dispatch_suspend+0x7e>
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandDisarmSource );
    e884fd1a:	8522                	mv	a0,s0
}
    e884fd1c:	6442                	ld	s0,16(sp)
    e884fd1e:	60e2                	ld	ra,24(sp)
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandDisarmSource );
    e884fd20:	4589                	li	a1,2
}
    e884fd22:	6105                	addi	sp,sp,32
	__LibDispatch_PlatformArmOrDisarmSourceAndUnlock( inSource, kDispatchCommandDisarmSource );
    e884fd24:	891ff06f          	j	e884f5b4 <__LibDispatch_PlatformArmOrDisarmSourceAndUnlock>
		pthread_mutex_unlock( inSource->queue->lockPtr );
    e884fd28:	741c                	ld	a5,40(s0)
    e884fd2a:	7788                	ld	a0,40(a5)
    e884fd2c:	b7c1                	j	e884fcec <dispatch_suspend+0x42>
	else { dlogassert( "bad object '%C' %p", magic, inObj ); goto exit; }
    e884fd2e:	e02a                	sd	a0,0(sp)
    e884fd30:	00071817          	auipc	a6,0x71
    e884fd34:	e0880813          	addi	a6,a6,-504 # e88c0b38 <__PRETTY_FUNCTION__.9551+0x30>
    e884fd38:	00071797          	auipc	a5,0x71
    e884fd3c:	d7078793          	addi	a5,a5,-656 # e88c0aa8 <__PRETTY_FUNCTION__.9175>
    e884fd40:	47600713          	li	a4,1142
    e884fd44:	00071697          	auipc	a3,0x71
    e884fd48:	e2468693          	addi	a3,a3,-476 # e88c0b68 <__PRETTY_FUNCTION__.9551+0x60>
    e884fd4c:	4601                	li	a2,0
    e884fd4e:	4581                	li	a1,0
    e884fd50:	4501                	li	a0,0
    e884fd52:	e76fe0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
}
    e884fd56:	60e2                	ld	ra,24(sp)
    e884fd58:	6442                	ld	s0,16(sp)
    e884fd5a:	6105                	addi	sp,sp,32
    e884fd5c:	8082                	ret
    e884fd5e:	8082                	ret

00000000e884fd60 <dispatch_get_main_queue>:
{
    e884fd60:	1141                	addi	sp,sp,-16
    e884fd62:	e406                	sd	ra,8(sp)
	err = LibDispatch_EnsureInitialized();
    e884fd64:	d6aff0ef          	jal	ra,e884f2ce <LibDispatch_EnsureInitialized>
	require_noerr( err, exit );
    e884fd68:	4781                	li	a5,0
    e884fd6a:	e511                	bnez	a0,e884fd76 <dispatch_get_main_queue+0x16>
	queue = gDispatchMainQueue;
    e884fd6c:	00094797          	auipc	a5,0x94
    e884fd70:	eac78793          	addi	a5,a5,-340 # e88e3c18 <gDispatchMainQueue>
    e884fd74:	639c                	ld	a5,0(a5)
}
    e884fd76:	60a2                	ld	ra,8(sp)
    e884fd78:	853e                	mv	a0,a5
    e884fd7a:	0141                	addi	sp,sp,16
    e884fd7c:	8082                	ret

00000000e884fd7e <dispatch_queue_create>:
{
    e884fd7e:	1141                	addi	sp,sp,-16
    e884fd80:	e022                	sd	s0,0(sp)
    e884fd82:	e406                	sd	ra,8(sp)
    e884fd84:	842a                	mv	s0,a0
	err = LibDispatch_EnsureInitialized();
    e884fd86:	d48ff0ef          	jal	ra,e884f2ce <LibDispatch_EnsureInitialized>
	require_noerr( err, exit );
    e884fd8a:	e519                	bnez	a0,e884fd98 <dispatch_queue_create+0x1a>
	queue = __dispatch_queue_create_internal( inLabel );
    e884fd8c:	8522                	mv	a0,s0
}
    e884fd8e:	6402                	ld	s0,0(sp)
    e884fd90:	60a2                	ld	ra,8(sp)
    e884fd92:	0141                	addi	sp,sp,16
	queue = __dispatch_queue_create_internal( inLabel );
    e884fd94:	c3dfe06f          	j	e884e9d0 <__dispatch_queue_create_internal>
}
    e884fd98:	60a2                	ld	ra,8(sp)
    e884fd9a:	6402                	ld	s0,0(sp)
    e884fd9c:	4501                	li	a0,0
    e884fd9e:	0141                	addi	sp,sp,16
    e884fda0:	8082                	ret

00000000e884fda2 <_HTTPClientGetTypeID>:
	dispatch_once_f( &gHTTPClientInitOnce, NULL, _HTTPClientGetTypeID );
	return( gHTTPClientTypeID );
}

static void _HTTPClientGetTypeID( void *inContext )
{
    e884fda2:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gHTTPClientTypeID = _CFRuntimeRegisterClass( &kHTTPClientClass );
    e884fda4:	00071517          	auipc	a0,0x71
    e884fda8:	07450513          	addi	a0,a0,116 # e88c0e18 <kHTTPClientClass>
{
    e884fdac:	e406                	sd	ra,8(sp)
	gHTTPClientTypeID = _CFRuntimeRegisterClass( &kHTTPClientClass );
    e884fdae:	9a1f70ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e884fdb2:	00094797          	auipc	a5,0x94
    e884fdb6:	f0a7a123          	sw	a0,-254(a5) # e88e3cb4 <gHTTPClientTypeID>
	check( gHTTPClientTypeID != _kCFRuntimeNotATypeID );
}
    e884fdba:	60a2                	ld	ra,8(sp)
    e884fdbc:	0141                	addi	sp,sp,16
    e884fdbe:	8082                	ret

00000000e884fdc0 <_HTTPClientFinalize>:
//===========================================================================================================================
//	_HTTPClientFinalize
//===========================================================================================================================

static void	_HTTPClientFinalize( CFTypeRef inCF )
{
    e884fdc0:	1141                	addi	sp,sp,-16
    e884fdc2:	e022                	sd	s0,0(sp)
    e884fdc4:	e406                	sd	ra,8(sp)
    e884fdc6:	842a                	mv	s0,a0
	HTTPClientRef const		me = (HTTPClientRef) inCF;
	
	dispatch_forget( &me->queue );
    e884fdc8:	6508                	ld	a0,8(a0)
    e884fdca:	c509                	beqz	a0,e884fdd4 <_HTTPClientFinalize+0x14>
    e884fdcc:	c85fe0ef          	jal	ra,e884ea50 <dispatch_release>
    e884fdd0:	00043423          	sd	zero,8(s0)
	ForgetMem( &me->destination );
    e884fdd4:	7408                	ld	a0,40(s0)
    e884fdd6:	c509                	beqz	a0,e884fde0 <_HTTPClientFinalize+0x20>
    e884fdd8:	5282c0ef          	jal	ra,e887c300 <eLIBs_free>
    e884fddc:	02043423          	sd	zero,40(s0)
	if( me->transportDelegate.finalize_f ) me->transportDelegate.finalize_f( me->transportDelegate.context );
    e884fde0:	4c843783          	ld	a5,1224(s0)
    e884fde4:	c781                	beqz	a5,e884fdec <_HTTPClientFinalize+0x2c>
    e884fde6:	4b843503          	ld	a0,1208(s0)
    e884fdea:	9782                	jalr	a5
	check( me->sockRefCount == 0 );
	ForgetSocket( &me->sock );
    e884fdec:	5028                	lw	a0,96(s0)
    e884fdee:	00054663          	bltz	a0,e884fdfa <_HTTPClientFinalize+0x3a>
    e884fdf2:	3b0350ef          	jal	ra,e88851a2 <lwip_close>
    e884fdf6:	57fd                	li	a5,-1
    e884fdf8:	d03c                	sw	a5,96(s0)
}
    e884fdfa:	60a2                	ld	ra,8(sp)
    e884fdfc:	6402                	ld	s0,0(sp)
    e884fdfe:	0141                	addi	sp,sp,16
    e884fe00:	8082                	ret

00000000e884fe02 <_HTTPClientCompleteMessage>:
//	_HTTPClientCompleteMessage
//===========================================================================================================================

static void	_HTTPClientCompleteMessage( HTTPClientRef me, HTTPMessageRef inMsg, OSStatus inStatus )
{
	if( ( me->messageList = inMsg->next ) == NULL )
    e884fe02:	659c                	ld	a5,8(a1)
    e884fe04:	50f53423          	sd	a5,1288(a0)
    e884fe08:	e789                	bnez	a5,e884fe12 <_HTTPClientCompleteMessage+0x10>
		  me->messageNext = &me->messageList;
    e884fe0a:	50850793          	addi	a5,a0,1288
    e884fe0e:	50f53823          	sd	a5,1296(a0)
	inMsg->status = inStatus;
    e884fe12:	6785                	lui	a5,0x1
    e884fe14:	97ae                	add	a5,a5,a1
    e884fe16:	98c7ac23          	sw	a2,-1640(a5) # 998 <memcmp-0xe87ff668>
	if( inMsg->completion ) inMsg->completion( inMsg );
    e884fe1a:	9d07b783          	ld	a5,-1584(a5)
	CFRelease( inMsg );
    e884fe1e:	852e                	mv	a0,a1
	if( inMsg->completion ) inMsg->completion( inMsg );
    e884fe20:	cb89                	beqz	a5,e884fe32 <_HTTPClientCompleteMessage+0x30>
{
    e884fe22:	1101                	addi	sp,sp,-32
    e884fe24:	ec06                	sd	ra,24(sp)
	if( inMsg->completion ) inMsg->completion( inMsg );
    e884fe26:	e42e                	sd	a1,8(sp)
    e884fe28:	9782                	jalr	a5
    e884fe2a:	65a2                	ld	a1,8(sp)
}
    e884fe2c:	60e2                	ld	ra,24(sp)
	CFRelease( inMsg );
    e884fe2e:	852e                	mv	a0,a1
}
    e884fe30:	6105                	addi	sp,sp,32
	CFRelease( inMsg );
    e884fe32:	b18f706f          	j	e884714a <CFRelease>

00000000e884fe36 <_HTTPClientTimerCanceledHandler>:
	CFRelease( me );
    e884fe36:	b14f706f          	j	e884714a <CFRelease>

00000000e884fe3a <_HTTPClientCancelHandler>:
{
    e884fe3a:	1141                	addi	sp,sp,-16
    e884fe3c:	e022                	sd	s0,0(sp)
    e884fe3e:	e406                	sd	ra,8(sp)
	if( --me->sockRefCount == 0 )
    e884fe40:	517c                	lw	a5,100(a0)
{
    e884fe42:	842a                	mv	s0,a0
	if( --me->sockRefCount == 0 )
    e884fe44:	fff7871b          	addiw	a4,a5,-1
    e884fe48:	d178                	sw	a4,100(a0)
    e884fe4a:	e70d                	bnez	a4,e884fe74 <_HTTPClientCancelHandler+0x3a>
		if( me->detachHandler_f )
    e884fe4c:	4e853783          	ld	a5,1256(a0)
    e884fe50:	cb99                	beqz	a5,e884fe66 <_HTTPClientCancelHandler+0x2c>
			me->detachHandler_f( me->sock, me->context1, me->context2, me->context3 );
    e884fe52:	50053683          	ld	a3,1280(a0)
    e884fe56:	4f853603          	ld	a2,1272(a0)
    e884fe5a:	4f053583          	ld	a1,1264(a0)
    e884fe5e:	5128                	lw	a0,96(a0)
    e884fe60:	9782                	jalr	a5
			me->sock = kInvalidSocketRef;
    e884fe62:	57fd                	li	a5,-1
    e884fe64:	d03c                	sw	a5,96(s0)
		ForgetSocket( &me->sock );
    e884fe66:	5028                	lw	a0,96(s0)
    e884fe68:	00054663          	bltz	a0,e884fe74 <_HTTPClientCancelHandler+0x3a>
    e884fe6c:	336350ef          	jal	ra,e88851a2 <lwip_close>
    e884fe70:	57fd                	li	a5,-1
    e884fe72:	d03c                	sw	a5,96(s0)
	CFRelease( me );
    e884fe74:	8522                	mv	a0,s0
}
    e884fe76:	6402                	ld	s0,0(sp)
    e884fe78:	60a2                	ld	ra,8(sp)
    e884fe7a:	0141                	addi	sp,sp,16
	CFRelease( me );
    e884fe7c:	acef706f          	j	e884714a <CFRelease>

00000000e884fe80 <_HTTPClientErrorHandler>:
{
    e884fe80:	1101                	addi	sp,sp,-32
    e884fe82:	e422                	sd	s0,8(sp)
    e884fe84:	e826                	sd	s1,16(sp)
    e884fe86:	ec06                	sd	ra,24(sp)
    e884fe88:	842a                	mv	s0,a0
    e884fe8a:	84ae                	mv	s1,a1
	if( inError && ( inError != kCanceledErr ) && ( inError != kEndingErr ) )
    e884fe8c:	c1b1                	beqz	a1,e884fed0 <_HTTPClientErrorHandler+0x50>
    e884fe8e:	77f9                	lui	a5,0xffffe
    e884fe90:	5bd78713          	addi	a4,a5,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
    e884fe94:	02e58e63          	beq	a1,a4,e884fed0 <_HTTPClientErrorHandler+0x50>
    e884fe98:	5a078793          	addi	a5,a5,1440
    e884fe9c:	02f58a63          	beq	a1,a5,e884fed0 <_HTTPClientErrorHandler+0x50>
		ulog( me->ucat, kLogLevelInfo, "### HTTP client to %s error: %#m\n", me->destination, inError );
    e884fea0:	7d08                	ld	a0,56(a0)
    e884fea2:	02800713          	li	a4,40
    e884fea6:	411c                	lw	a5,0(a0)
    e884fea8:	02f74463          	blt	a4,a5,e884fed0 <_HTTPClientErrorHandler+0x50>
    e884feac:	577d                	li	a4,-1
    e884feae:	0ce78263          	beq	a5,a4,e884ff72 <_HTTPClientErrorHandler+0xf2>
    e884feb2:	7418                	ld	a4,40(s0)
    e884feb4:	7c08                	ld	a0,56(s0)
    e884feb6:	87a6                	mv	a5,s1
    e884feb8:	00071697          	auipc	a3,0x71
    e884febc:	da868693          	addi	a3,a3,-600 # e88c0c60 <__PRETTY_FUNCTION__.9551+0x158>
    e884fec0:	02800613          	li	a2,40
    e884fec4:	00071597          	auipc	a1,0x71
    e884fec8:	f1c58593          	addi	a1,a1,-228 # e88c0de0 <__PRETTY_FUNCTION__.10456>
    e884fecc:	5a8040ef          	jal	ra,e8854474 <LogPrintF>
	me->state = kHTTPClientStateError;
    e884fed0:	47a5                	li	a5,9
	if( me->connector )
    e884fed2:	6c28                	ld	a0,88(s0)
	me->state = kHTTPClientStateError;
    e884fed4:	04f40a23          	sb	a5,84(s0)
	if( me->connector )
    e884fed8:	c509                	beqz	a0,e884fee2 <_HTTPClientErrorHandler+0x62>
		AsyncConnection_Release( me->connector );
    e884feda:	a4cf50ef          	jal	ra,e8845126 <AsyncConnection_Release>
		me->connector = NULL;
    e884fede:	04043c23          	sd	zero,88(s0)
	dispatch_source_forget_ex( &me->readSource,  &me->readSuspended );
    e884fee2:	7428                	ld	a0,104(s0)
    e884fee4:	c11d                	beqz	a0,e884ff0a <_HTTPClientErrorHandler+0x8a>
    e884fee6:	d61ff0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e884feea:	07040793          	addi	a5,s0,112
    e884feee:	cb89                	beqz	a5,e884ff00 <_HTTPClientErrorHandler+0x80>
    e884fef0:	07044783          	lbu	a5,112(s0)
    e884fef4:	c791                	beqz	a5,e884ff00 <_HTTPClientErrorHandler+0x80>
    e884fef6:	7428                	ld	a0,104(s0)
    e884fef8:	bffff0ef          	jal	ra,e884faf6 <dispatch_resume>
    e884fefc:	06040823          	sb	zero,112(s0)
    e884ff00:	7428                	ld	a0,104(s0)
    e884ff02:	b4ffe0ef          	jal	ra,e884ea50 <dispatch_release>
    e884ff06:	06043423          	sd	zero,104(s0)
	dispatch_source_forget_ex( &me->writeSource, &me->writeSuspended );
    e884ff0a:	7c28                	ld	a0,120(s0)
    e884ff0c:	c11d                	beqz	a0,e884ff32 <_HTTPClientErrorHandler+0xb2>
    e884ff0e:	d39ff0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e884ff12:	08040793          	addi	a5,s0,128
    e884ff16:	cb89                	beqz	a5,e884ff28 <_HTTPClientErrorHandler+0xa8>
    e884ff18:	08044783          	lbu	a5,128(s0)
    e884ff1c:	c791                	beqz	a5,e884ff28 <_HTTPClientErrorHandler+0xa8>
    e884ff1e:	7c28                	ld	a0,120(s0)
    e884ff20:	bd7ff0ef          	jal	ra,e884faf6 <dispatch_resume>
    e884ff24:	08040023          	sb	zero,128(s0)
    e884ff28:	7c28                	ld	a0,120(s0)
    e884ff2a:	b27fe0ef          	jal	ra,e884ea50 <dispatch_release>
    e884ff2e:	06043c23          	sd	zero,120(s0)
	dispatch_source_forget( &me->timerSource );
    e884ff32:	6448                	ld	a0,136(s0)
    e884ff34:	c901                	beqz	a0,e884ff44 <_HTTPClientErrorHandler+0xc4>
    e884ff36:	d11ff0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e884ff3a:	6448                	ld	a0,136(s0)
    e884ff3c:	b15fe0ef          	jal	ra,e884ea50 <dispatch_release>
    e884ff40:	08043423          	sd	zero,136(s0)
	ForgetCF( &me->eventMsg );
    e884ff44:	49843503          	ld	a0,1176(s0)
    e884ff48:	c509                	beqz	a0,e884ff52 <_HTTPClientErrorHandler+0xd2>
    e884ff4a:	a00f70ef          	jal	ra,e884714a <CFRelease>
    e884ff4e:	48043c23          	sd	zero,1176(s0)
	while( ( msg = me->messageList ) != NULL )
    e884ff52:	50843583          	ld	a1,1288(s0)
    e884ff56:	e585                	bnez	a1,e884ff7e <_HTTPClientErrorHandler+0xfe>
	invalidated_f = me->delegate.invalidated_f;
    e884ff58:	01843303          	ld	t1,24(s0)
	me->delegate.invalidated_f = NULL;
    e884ff5c:	00043c23          	sd	zero,24(s0)
	if( invalidated_f ) invalidated_f( inError, me->delegate.context );
    e884ff60:	02030463          	beqz	t1,e884ff88 <_HTTPClientErrorHandler+0x108>
    e884ff64:	680c                	ld	a1,16(s0)
}
    e884ff66:	6422                	ld	s0,8(sp)
    e884ff68:	60e2                	ld	ra,24(sp)
	if( invalidated_f ) invalidated_f( inError, me->delegate.context );
    e884ff6a:	8526                	mv	a0,s1
}
    e884ff6c:	64c2                	ld	s1,16(sp)
    e884ff6e:	6105                	addi	sp,sp,32
	if( invalidated_f ) invalidated_f( inError, me->delegate.context );
    e884ff70:	8302                	jr	t1
		ulog( me->ucat, kLogLevelInfo, "### HTTP client to %s error: %#m\n", me->destination, inError );
    e884ff72:	02800593          	li	a1,40
    e884ff76:	0fc040ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e884ff7a:	d939                	beqz	a0,e884fed0 <_HTTPClientErrorHandler+0x50>
    e884ff7c:	bf1d                	j	e884feb2 <_HTTPClientErrorHandler+0x32>
		_HTTPClientCompleteMessage( me, msg, inError );
    e884ff7e:	8626                	mv	a2,s1
    e884ff80:	8522                	mv	a0,s0
    e884ff82:	e81ff0ef          	jal	ra,e884fe02 <_HTTPClientCompleteMessage>
    e884ff86:	b7f1                	j	e884ff52 <_HTTPClientErrorHandler+0xd2>
}
    e884ff88:	60e2                	ld	ra,24(sp)
    e884ff8a:	6422                	ld	s0,8(sp)
    e884ff8c:	64c2                	ld	s1,16(sp)
    e884ff8e:	6105                	addi	sp,sp,32
    e884ff90:	8082                	ret

00000000e884ff92 <_HTTPClientInvalidate>:
	_HTTPClientErrorHandler( me, kCanceledErr );
    e884ff92:	75f9                	lui	a1,0xffffe
{
    e884ff94:	1141                	addi	sp,sp,-16
	_HTTPClientErrorHandler( me, kCanceledErr );
    e884ff96:	5bd58593          	addi	a1,a1,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
{
    e884ff9a:	e022                	sd	s0,0(sp)
    e884ff9c:	e406                	sd	ra,8(sp)
    e884ff9e:	842a                	mv	s0,a0
	_HTTPClientErrorHandler( me, kCanceledErr );
    e884ffa0:	ee1ff0ef          	jal	ra,e884fe80 <_HTTPClientErrorHandler>
	CFRelease( me );
    e884ffa4:	8522                	mv	a0,s0
}
    e884ffa6:	6402                	ld	s0,0(sp)
    e884ffa8:	60a2                	ld	ra,8(sp)
    e884ffaa:	0141                	addi	sp,sp,16
	CFRelease( me );
    e884ffac:	99ef706f          	j	e884714a <CFRelease>

00000000e884ffb0 <_HTTPClientTimerFiredHandler>:
{
    e884ffb0:	1141                	addi	sp,sp,-16
    e884ffb2:	e022                	sd	s0,0(sp)
    e884ffb4:	e406                	sd	ra,8(sp)
    e884ffb6:	842a                	mv	s0,a0
	ulog( me->ucat, kLogLevelNotice, "### Timeout on HTTP connection to %s\n", me->destination );
    e884ffb8:	7d08                	ld	a0,56(a0)
    e884ffba:	03200713          	li	a4,50
    e884ffbe:	411c                	lw	a5,0(a0)
    e884ffc0:	02f74363          	blt	a4,a5,e884ffe6 <_HTTPClientTimerFiredHandler+0x36>
    e884ffc4:	577d                	li	a4,-1
    e884ffc6:	02e78963          	beq	a5,a4,e884fff8 <_HTTPClientTimerFiredHandler+0x48>
    e884ffca:	7418                	ld	a4,40(s0)
    e884ffcc:	7c08                	ld	a0,56(s0)
    e884ffce:	00071697          	auipc	a3,0x71
    e884ffd2:	daa68693          	addi	a3,a3,-598 # e88c0d78 <__PRETTY_FUNCTION__.9551+0x270>
    e884ffd6:	03200613          	li	a2,50
    e884ffda:	00071597          	auipc	a1,0x71
    e884ffde:	e1e58593          	addi	a1,a1,-482 # e88c0df8 <__PRETTY_FUNCTION__.10464>
    e884ffe2:	492040ef          	jal	ra,e8854474 <LogPrintF>
	_HTTPClientErrorHandler( me, kTimeoutErr );
    e884ffe6:	8522                	mv	a0,s0
}
    e884ffe8:	6402                	ld	s0,0(sp)
    e884ffea:	60a2                	ld	ra,8(sp)
	_HTTPClientErrorHandler( me, kTimeoutErr );
    e884ffec:	75f9                	lui	a1,0xffffe
    e884ffee:	5be58593          	addi	a1,a1,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
}
    e884fff2:	0141                	addi	sp,sp,16
	_HTTPClientErrorHandler( me, kTimeoutErr );
    e884fff4:	e8dff06f          	j	e884fe80 <_HTTPClientErrorHandler>
	ulog( me->ucat, kLogLevelNotice, "### Timeout on HTTP connection to %s\n", me->destination );
    e884fff8:	03200593          	li	a1,50
    e884fffc:	076040ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8850000:	d17d                	beqz	a0,e884ffe6 <_HTTPClientTimerFiredHandler+0x36>
    e8850002:	b7e1                	j	e884ffca <_HTTPClientTimerFiredHandler+0x1a>

00000000e8850004 <_HTTPClientHandleIOError>:
//===========================================================================================================================
//	_HTTPClientHandleIOError
//===========================================================================================================================

static OSStatus	_HTTPClientHandleIOError( HTTPClientRef me, OSStatus inError, Boolean inRead )
{
    e8850004:	1141                	addi	sp,sp,-16
    e8850006:	e022                	sd	s0,0(sp)
	switch( inError )
    e8850008:	77f9                	lui	a5,0xffffe
{
    e885000a:	e406                	sd	ra,8(sp)
	switch( inError )
    e885000c:	58a78713          	addi	a4,a5,1418 # ffffffffffffe58a <__DRAM0_INF_BASE+0xffffffff0000e58a>
{
    e8850010:	842a                	mv	s0,a0
	switch( inError )
    e8850012:	02e58563          	beq	a1,a4,e885003c <_HTTPClientHandleIOError+0x38>
    e8850016:	00b74b63          	blt	a4,a1,e885002c <_HTTPClientHandleIOError+0x28>
    e885001a:	58978793          	addi	a5,a5,1417
    e885001e:	04f58263          	beq	a1,a5,e8850062 <_HTTPClientHandleIOError+0x5e>
		
		default:
			break;
	}
	return( inError );
}
    e8850022:	60a2                	ld	ra,8(sp)
    e8850024:	6402                	ld	s0,0(sp)
    e8850026:	852e                	mv	a0,a1
    e8850028:	0141                	addi	sp,sp,16
    e885002a:	8082                	ret
	switch( inError )
    e885002c:	59278793          	addi	a5,a5,1426
    e8850030:	02f58163          	beq	a1,a5,e8850052 <_HTTPClientHandleIOError+0x4e>
    e8850034:	47ad                	li	a5,11
    e8850036:	fef596e3          	bne	a1,a5,e8850022 <_HTTPClientHandleIOError+0x1e>
			if( inRead )	dispatch_resume_if_suspended( me->readSource, &me->readSuspended );
    e885003a:	c605                	beqz	a2,e8850062 <_HTTPClientHandleIOError+0x5e>
			dispatch_resume_if_suspended( me->readSource, &me->readSuspended );
    e885003c:	07044783          	lbu	a5,112(s0)
    e8850040:	e399                	bnez	a5,e8850046 <_HTTPClientHandleIOError+0x42>
			inError = EWOULDBLOCK;
    e8850042:	45ad                	li	a1,11
    e8850044:	bff9                	j	e8850022 <_HTTPClientHandleIOError+0x1e>
			dispatch_resume_if_suspended( me->readSource, &me->readSuspended );
    e8850046:	7428                	ld	a0,104(s0)
    e8850048:	06040823          	sb	zero,112(s0)
			dispatch_resume_if_suspended( me->writeSource, &me->writeSuspended );
    e885004c:	aabff0ef          	jal	ra,e884faf6 <dispatch_resume>
    e8850050:	bfcd                	j	e8850042 <_HTTPClientHandleIOError+0x3e>
			dispatch_resume_if_suspended( me->readSource, &me->readSuspended );
    e8850052:	07054783          	lbu	a5,112(a0)
    e8850056:	c791                	beqz	a5,e8850062 <_HTTPClientHandleIOError+0x5e>
    e8850058:	06050823          	sb	zero,112(a0)
    e885005c:	7528                	ld	a0,104(a0)
    e885005e:	a99ff0ef          	jal	ra,e884faf6 <dispatch_resume>
			dispatch_resume_if_suspended( me->writeSource, &me->writeSuspended );
    e8850062:	08044783          	lbu	a5,128(s0)
    e8850066:	dff1                	beqz	a5,e8850042 <_HTTPClientHandleIOError+0x3e>
    e8850068:	08040023          	sb	zero,128(s0)
    e885006c:	7c28                	ld	a0,120(s0)
    e885006e:	bff9                	j	e885004c <_HTTPClientHandleIOError+0x48>

00000000e8850070 <_HTTPClientConnectHandler>:
{
    e8850070:	1101                	addi	sp,sp,-32
    e8850072:	f891540b          	sdd	s0,s1,(sp),0,4
    e8850076:	e84a                	sd	s2,16(sp)
    e8850078:	ec06                	sd	ra,24(sp)
    e885007a:	892a                	mv	s2,a0
    e885007c:	84ae                	mv	s1,a1
    e885007e:	8432                	mv	s0,a2
	require_noerr_action_quiet( inError, exit, err = inError );
    e8850080:	ed89                	bnez	a1,e885009a <_HTTPClientConnectHandler+0x2a>
	require_action_quiet( me->messageList, exit, err = kAlreadyCanceledErr );
    e8850082:	50863783          	ld	a5,1288(a2)
    e8850086:	14078063          	beqz	a5,e88501c6 <_HTTPClientConnectHandler+0x156>
	if( me->transportDelegate.initialize_f )
    e885008a:	4c063783          	ld	a5,1216(a2)
    e885008e:	cbb1                	beqz	a5,e88500e2 <_HTTPClientConnectHandler+0x72>
		err = me->transportDelegate.initialize_f( inSock, me->transportDelegate.context );
    e8850090:	4b863583          	ld	a1,1208(a2)
    e8850094:	9782                	jalr	a5
    e8850096:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e8850098:	c931                	beqz	a0,e88500ec <_HTTPClientConnectHandler+0x7c>
		ulog( me->ucat, kLogLevelInfo, "### HTTP connect to %s failed: %#m\n", me->destination, err );
    e885009a:	7c08                	ld	a0,56(s0)
    e885009c:	02800713          	li	a4,40
    e88500a0:	411c                	lw	a5,0(a0)
    e88500a2:	02f74463          	blt	a4,a5,e88500ca <_HTTPClientConnectHandler+0x5a>
    e88500a6:	577d                	li	a4,-1
    e88500a8:	12e78363          	beq	a5,a4,e88501ce <_HTTPClientConnectHandler+0x15e>
    e88500ac:	7418                	ld	a4,40(s0)
    e88500ae:	7c08                	ld	a0,56(s0)
    e88500b0:	87a6                	mv	a5,s1
    e88500b2:	00071697          	auipc	a3,0x71
    e88500b6:	b8668693          	addi	a3,a3,-1146 # e88c0c38 <__PRETTY_FUNCTION__.9551+0x130>
    e88500ba:	02800613          	li	a2,40
    e88500be:	00071597          	auipc	a1,0x71
    e88500c2:	d0258593          	addi	a1,a1,-766 # e88c0dc0 <__PRETTY_FUNCTION__.10433>
    e88500c6:	3ae040ef          	jal	ra,e8854474 <LogPrintF>
		if( me->sockRefCount == 0 ) ForgetSocket( &inSock );
    e88500ca:	507c                	lw	a5,100(s0)
    e88500cc:	e791                	bnez	a5,e88500d8 <_HTTPClientConnectHandler+0x68>
    e88500ce:	00094563          	bltz	s2,e88500d8 <_HTTPClientConnectHandler+0x68>
    e88500d2:	854a                	mv	a0,s2
    e88500d4:	0ce350ef          	jal	ra,e88851a2 <lwip_close>
		_HTTPClientErrorHandler( me, err );
    e88500d8:	85a6                	mv	a1,s1
    e88500da:	8522                	mv	a0,s0
    e88500dc:	da5ff0ef          	jal	ra,e884fe80 <_HTTPClientErrorHandler>
    e88500e0:	a0e1                	j	e88501a8 <_HTTPClientConnectHandler+0x138>
	else if( !me->hasTransportDelegate ) me->transportDelegate.context = (void *)(intptr_t) inSock;
    e88500e2:	4e064783          	lbu	a5,1248(a2)
    e88500e6:	e399                	bnez	a5,e88500ec <_HTTPClientConnectHandler+0x7c>
    e88500e8:	4aa43c23          	sd	a0,1208(s0)
	if( ( me->keepAliveIdleSecs > 0 ) && ( me->keepAliveMaxUnansweredProbes > 0 ) )
    e88500ec:	442c                	lw	a1,72(s0)
    e88500ee:	00b05863          	blez	a1,e88500fe <_HTTPClientConnectHandler+0x8e>
    e88500f2:	4470                	lw	a2,76(s0)
    e88500f4:	00c05563          	blez	a2,e88500fe <_HTTPClientConnectHandler+0x8e>
		SocketSetKeepAlive( inSock, me->keepAliveIdleSecs, me->keepAliveMaxUnansweredProbes );
    e88500f8:	854a                	mv	a0,s2
    e88500fa:	6ad050ef          	jal	ra,e8855fa6 <SocketSetKeepAlive>
	me->readSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_READ, (uintptr_t) inSock, 0, me->queue );
    e88500fe:	6414                	ld	a3,8(s0)
    e8850100:	4601                	li	a2,0
    e8850102:	85ca                	mv	a1,s2
    e8850104:	4501                	li	a0,0
    e8850106:	ca9fe0ef          	jal	ra,e884edae <dispatch_source_create>
    e885010a:	f428                	sd	a0,104(s0)
	require_action( me->readSource, exit, err = kUnknownErr );
    e885010c:	e509                	bnez	a0,e8850116 <_HTTPClientConnectHandler+0xa6>
    e885010e:	74f9                	lui	s1,0xffffe
    e8850110:	5d448493          	addi	s1,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8850114:	b759                	j	e885009a <_HTTPClientConnectHandler+0x2a>
	++me->sockRefCount;
    e8850116:	507c                	lw	a5,100(s0)
	CFRetain( me );
    e8850118:	8522                	mv	a0,s0
	++me->sockRefCount;
    e885011a:	2785                	addiw	a5,a5,1
    e885011c:	d07c                	sw	a5,100(s0)
	CFRetain( me );
    e885011e:	828f70ef          	jal	ra,e8847146 <CFRetain>
	dispatch_set_context( me->readSource, me );
    e8850122:	7428                	ld	a0,104(s0)
    e8850124:	85a2                	mv	a1,s0
    e8850126:	af7fe0ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( me->readSource, _HTTPClientReadHandler );
    e885012a:	7428                	ld	a0,104(s0)
    e885012c:	00000597          	auipc	a1,0x0
    e8850130:	78c58593          	addi	a1,a1,1932 # e88508b8 <_HTTPClientReadHandler>
    e8850134:	d37fe0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( me->readSource, _HTTPClientCancelHandler );
    e8850138:	7428                	ld	a0,104(s0)
    e885013a:	00000597          	auipc	a1,0x0
    e885013e:	d0058593          	addi	a1,a1,-768 # e884fe3a <_HTTPClientCancelHandler>
    e8850142:	d2dfe0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	dispatch_resume( me->readSource );
    e8850146:	7428                	ld	a0,104(s0)
    e8850148:	9afff0ef          	jal	ra,e884faf6 <dispatch_resume>
	me->writeSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_WRITE, (uintptr_t) inSock, 0, me->queue );
    e885014c:	6414                	ld	a3,8(s0)
    e885014e:	4601                	li	a2,0
    e8850150:	85ca                	mv	a1,s2
    e8850152:	450d                	li	a0,3
    e8850154:	c5bfe0ef          	jal	ra,e884edae <dispatch_source_create>
    e8850158:	fc28                	sd	a0,120(s0)
	require_action( me->writeSource, exit, err = kUnknownErr );
    e885015a:	d955                	beqz	a0,e885010e <_HTTPClientConnectHandler+0x9e>
	++me->sockRefCount;
    e885015c:	507c                	lw	a5,100(s0)
	CFRetain( me );
    e885015e:	8522                	mv	a0,s0
	++me->sockRefCount;
    e8850160:	2785                	addiw	a5,a5,1
    e8850162:	d07c                	sw	a5,100(s0)
	CFRetain( me );
    e8850164:	fe3f60ef          	jal	ra,e8847146 <CFRetain>
	dispatch_set_context( me->writeSource, me );
    e8850168:	7c28                	ld	a0,120(s0)
    e885016a:	85a2                	mv	a1,s0
    e885016c:	ab1fe0ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( me->writeSource, _HTTPClientWriteHandler );
    e8850170:	7c28                	ld	a0,120(s0)
    e8850172:	00000597          	auipc	a1,0x0
    e8850176:	6e858593          	addi	a1,a1,1768 # e885085a <_HTTPClientWriteHandler>
    e885017a:	cf1fe0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( me->writeSource, _HTTPClientCancelHandler );
    e885017e:	7c28                	ld	a0,120(s0)
    e8850180:	00000597          	auipc	a1,0x0
    e8850184:	cba58593          	addi	a1,a1,-838 # e884fe3a <_HTTPClientCancelHandler>
    e8850188:	ce7fe0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	me->writeSuspended = true; // Don't resume until we get EWOULDBLOCK.
    e885018c:	4785                	li	a5,1
    e885018e:	08f40023          	sb	a5,128(s0)
	if( me->flags & kHTTPClientFlag_Events )
    e8850192:	585c                	lw	a5,52(s0)
    e8850194:	8bc1                	andi	a5,a5,16
    e8850196:	e38d                	bnez	a5,e88501b8 <_HTTPClientConnectHandler+0x148>
	me->state = kHTTPClientStatePreparingRequest;
    e8850198:	4789                	li	a5,2
	me->sock = inSock;
    e885019a:	07242023          	sw	s2,96(s0)
	me->state = kHTTPClientStatePreparingRequest;
    e885019e:	04f40a23          	sb	a5,84(s0)
	_HTTPClientRunStateMachine( me );
    e88501a2:	8522                	mv	a0,s0
    e88501a4:	038000ef          	jal	ra,e88501dc <_HTTPClientRunStateMachine>
	CFRelease( me );
    e88501a8:	8522                	mv	a0,s0
}
    e88501aa:	f891440b          	ldd	s0,s1,(sp),0,4
    e88501ae:	60e2                	ld	ra,24(sp)
    e88501b0:	6942                	ld	s2,16(sp)
    e88501b2:	6105                	addi	sp,sp,32
	CFRelease( me );
    e88501b4:	f97f606f          	j	e884714a <CFRelease>
		err = HTTPMessageCreate( &me->eventMsg );
    e88501b8:	49840513          	addi	a0,s0,1176
    e88501bc:	39f000ef          	jal	ra,e8850d5a <HTTPMessageCreate>
    e88501c0:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e88501c2:	d979                	beqz	a0,e8850198 <_HTTPClientConnectHandler+0x128>
    e88501c4:	bdd9                	j	e885009a <_HTTPClientConnectHandler+0x2a>
	require_action_quiet( me->messageList, exit, err = kAlreadyCanceledErr );
    e88501c6:	74f9                	lui	s1,0xffffe
    e88501c8:	5bc48493          	addi	s1,s1,1468 # ffffffffffffe5bc <__DRAM0_INF_BASE+0xffffffff0000e5bc>
    e88501cc:	b5f9                	j	e885009a <_HTTPClientConnectHandler+0x2a>
		ulog( me->ucat, kLogLevelInfo, "### HTTP connect to %s failed: %#m\n", me->destination, err );
    e88501ce:	02800593          	li	a1,40
    e88501d2:	6a1030ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88501d6:	ee050ae3          	beqz	a0,e88500ca <_HTTPClientConnectHandler+0x5a>
    e88501da:	bdc9                	j	e88500ac <_HTTPClientConnectHandler+0x3c>

00000000e88501dc <_HTTPClientRunStateMachine>:
{
    e88501dc:	7171                	addi	sp,sp,-176
    e88501de:	e54e                	sd	s3,136(sp)
    e88501e0:	e152                	sd	s4,128(sp)
    e88501e2:	fcd6                	sd	s5,120(sp)
				dispatch_source_set_timer( me->timerSource, dispatch_time_seconds( me->timeoutSecs ), 
    e88501e4:	3b9ad9b7          	lui	s3,0x3b9ad
    e88501e8:	1dcd6a37          	lui	s4,0x1dcd6
			if( err != kConnectionErr ) ulog( me->ucat, kLogLevelNotice, "### Error on wait for close: %#m\n", err );
    e88501ec:	7af9                	lui	s5,0xffffe
{
    e88501ee:	f122                	sd	s0,160(sp)
    e88501f0:	e94a                	sd	s2,144(sp)
    e88501f2:	f8da                	sd	s6,112(sp)
    e88501f4:	f506                	sd	ra,168(sp)
    e88501f6:	ed26                	sd	s1,152(sp)
    e88501f8:	f4de                	sd	s7,104(sp)
    e88501fa:	842a                	mv	s0,a0
			msg->header.extraDataPtr = me->extraDataBuf;
    e88501fc:	09050913          	addi	s2,a0,144
				dispatch_source_set_timer( me->timerSource, dispatch_time_seconds( me->timeoutSecs ), 
    e8850200:	a0098993          	addi	s3,s3,-1536 # 3b9aca00 <memcmp-0xace53600>
    e8850204:	500a0a13          	addi	s4,s4,1280 # 1dcd6500 <memcmp-0xcab29b00>
			if( err != kConnectionErr ) ulog( me->ucat, kLogLevelNotice, "### Error on wait for close: %#m\n", err );
    e8850208:	59fa8b13          	addi	s6,s5,1439 # ffffffffffffe59f <__DRAM0_INF_BASE+0xffffffff0000e59f>
		if( me->state == kHTTPClientStateIdle )
    e885020c:	05444783          	lbu	a5,84(s0)
    e8850210:	12079c63          	bnez	a5,e8850348 <_HTTPClientRunStateMachine+0x16c>
			msg = me->messageList;
    e8850214:	50843703          	ld	a4,1288(s0)
			if( !msg )
    e8850218:	eb21                	bnez	a4,e8850268 <_HTTPClientRunStateMachine+0x8c>
				require_action_quiet( !me->detachHandler_f, exit, err = kCanceledErr );
    e885021a:	4e843783          	ld	a5,1256(s0)
    e885021e:	cb81                	beqz	a5,e885022e <_HTTPClientRunStateMachine+0x52>
    e8850220:	75f9                	lui	a1,0xffffe
    e8850222:	5bd58593          	addi	a1,a1,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
	if( err ) _HTTPClientErrorHandler( me, err );
    e8850226:	8522                	mv	a0,s0
    e8850228:	c59ff0ef          	jal	ra,e884fe80 <_HTTPClientErrorHandler>
}
    e885022c:	a01d                	j	e8850252 <_HTTPClientRunStateMachine+0x76>
				if( me->flags & kHTTPClientFlag_Events )
    e885022e:	585c                	lw	a5,52(s0)
    e8850230:	8bc1                	andi	a5,a5,16
    e8850232:	c385                	beqz	a5,e8850252 <_HTTPClientRunStateMachine+0x76>
					if( me->extraDataLen > 0 )
    e8850234:	49043783          	ld	a5,1168(s0)
    e8850238:	c789                	beqz	a5,e8850242 <_HTTPClientRunStateMachine+0x66>
						me->state = kHTTPClientStatePreparingForEvent;
    e885023a:	479d                	li	a5,7
			me->state = kHTTPClientStateReadingEvent;
    e885023c:	04f40a23          	sb	a5,84(s0)
    e8850240:	b7f1                	j	e885020c <_HTTPClientRunStateMachine+0x30>
					dispatch_resume_if_suspended( me->readSource, &me->readSuspended );
    e8850242:	07044783          	lbu	a5,112(s0)
    e8850246:	c791                	beqz	a5,e8850252 <_HTTPClientRunStateMachine+0x76>
    e8850248:	7428                	ld	a0,104(s0)
    e885024a:	06040823          	sb	zero,112(s0)
    e885024e:	8a9ff0ef          	jal	ra,e884faf6 <dispatch_resume>
}
    e8850252:	70aa                	ld	ra,168(sp)
    e8850254:	740a                	ld	s0,160(sp)
    e8850256:	64ea                	ld	s1,152(sp)
    e8850258:	694a                	ld	s2,144(sp)
    e885025a:	69aa                	ld	s3,136(sp)
    e885025c:	6a0a                	ld	s4,128(sp)
    e885025e:	7ae6                	ld	s5,120(sp)
    e8850260:	7b46                	ld	s6,112(sp)
    e8850262:	7ba6                	ld	s7,104(sp)
    e8850264:	614d                	addi	sp,sp,176
    e8850266:	8082                	ret
			if( IsValidSocket( me->sock ) )
    e8850268:	503c                	lw	a5,96(s0)
    e885026a:	0007cf63          	bltz	a5,e8850288 <_HTTPClientRunStateMachine+0xac>
				if( me->readSource )
    e885026e:	743c                	ld	a5,104(s0)
    e8850270:	c399                	beqz	a5,e8850276 <_HTTPClientRunStateMachine+0x9a>
					me->state = kHTTPClientStatePreparingRequest;
    e8850272:	4789                	li	a5,2
    e8850274:	b7e1                	j	e885023c <_HTTPClientRunStateMachine+0x60>
				CFRetain( me );
    e8850276:	8522                	mv	a0,s0
    e8850278:	ecff60ef          	jal	ra,e8847146 <CFRetain>
				_HTTPClientConnectHandler( me->sock, kNoErr, me );
    e885027c:	5028                	lw	a0,96(s0)
    e885027e:	8622                	mv	a2,s0
    e8850280:	4581                	li	a1,0
    e8850282:	defff0ef          	jal	ra,e8850070 <_HTTPClientConnectHandler>
				break;
    e8850286:	b7f1                	j	e8850252 <_HTTPClientRunStateMachine+0x76>
			if( me->flags & kHTTPClientFlag_P2P )					flags |= kAsyncConnectionFlag_P2P;
    e8850288:	585c                	lw	a5,52(s0)
			if( me->flags & kHTTPClientFlag_SuppressUnusable )		flags |= kAsyncConnectionFlag_SuppressUnusable;
    e885028a:	0027f693          	andi	a3,a5,2
    e885028e:	0017f493          	andi	s1,a5,1
    e8850292:	c681                	beqz	a3,e885029a <_HTTPClientRunStateMachine+0xbe>
    e8850294:	0024e493          	ori	s1,s1,2
    e8850298:	2481                	sext.w	s1,s1
			if( me->flags & kHTTPClientFlag_Reachability )			flags |= kAsyncConnectionFlag_Reachability;
    e885029a:	0047f693          	andi	a3,a5,4
    e885029e:	c299                	beqz	a3,e88502a4 <_HTTPClientRunStateMachine+0xc8>
    e88502a0:	0044e493          	ori	s1,s1,4
			if( me->flags & kHTTPClientFlag_BoundInterface )		flags |= kAsyncConnectionFlag_BoundInterface;
    e88502a4:	0087f693          	andi	a3,a5,8
    e88502a8:	c299                	beqz	a3,e88502ae <_HTTPClientRunStateMachine+0xd2>
    e88502aa:	0084e493          	ori	s1,s1,8
			if( me->flags & kHTTPClientFlag_NonCellular )			flags |= kAsyncConnectionFlag_NonCellular;
    e88502ae:	0207f693          	andi	a3,a5,32
    e88502b2:	c299                	beqz	a3,e88502b8 <_HTTPClientRunStateMachine+0xdc>
    e88502b4:	0104e493          	ori	s1,s1,16
			if( me->flags & kHTTPClientFlag_NonExpensive )			flags |= kAsyncConnectionFlag_NonExpensive;
    e88502b8:	0407f693          	andi	a3,a5,64
    e88502bc:	c299                	beqz	a3,e88502c2 <_HTTPClientRunStateMachine+0xe6>
    e88502be:	0204e493          	ori	s1,s1,32
			if( me->flags & kHTTPClientFlag_NonLinkLocal )			flags |= kAsyncConnectionFlag_NonLinkLocal;
    e88502c2:	1007f793          	andi	a5,a5,256
    e88502c6:	c399                	beqz	a5,e88502cc <_HTTPClientRunStateMachine+0xf0>
    e88502c8:	0804e493          	ori	s1,s1,128
			nanos = msg->timeoutNanos;
    e88502cc:	6785                	lui	a5,0x1
    e88502ce:	973e                	add	a4,a4,a5
    e88502d0:	98873903          	ld	s2,-1656(a4)
			if( ( nanos == kHTTPNoTimeout ) && ( msg->connectTimeoutSecs > 0 ) )
    e88502d4:	57fd                	li	a5,-1
    e88502d6:	02f91063          	bne	s2,a5,e88502f6 <_HTTPClientRunStateMachine+0x11a>
    e88502da:	99072783          	lw	a5,-1648(a4)
    e88502de:	00f05963          	blez	a5,e88502f0 <_HTTPClientRunStateMachine+0x114>
				nanos = ( (uint64_t) me->timeoutSecs ) * kNanosecondsPerSecond;
    e88502e2:	3b9ad937          	lui	s2,0x3b9ad
    e88502e6:	a0090913          	addi	s2,s2,-1536 # 3b9aca00 <memcmp-0xace53600>
    e88502ea:	03278933          	mul	s2,a5,s2
    e88502ee:	a021                	j	e88502f6 <_HTTPClientRunStateMachine+0x11a>
			if( ( nanos == kHTTPNoTimeout ) && ( me->timeoutSecs > 0 ) )
    e88502f0:	483c                	lw	a5,80(s0)
    e88502f2:	fef048e3          	bgtz	a5,e88502e2 <_HTTPClientRunStateMachine+0x106>
			AsyncConnectionParamsInit( &params );
    e88502f6:	05800613          	li	a2,88
    e88502fa:	4581                	li	a1,0
    e88502fc:	0028                	addi	a0,sp,8
    e88502fe:	0962c0ef          	jal	ra,e887c394 <eLIBs_memset>
			params.timeoutNanos			= nanos;
    e8850302:	ec4a                	sd	s2,24(sp)
			params.destination			= me->destination;
    e8850304:	741c                	ld	a5,40(s0)
			err = AsyncConnection_ConnectEx( &me->connector, &params );
    e8850306:	002c                	addi	a1,sp,8
    e8850308:	05840513          	addi	a0,s0,88
			params.destination			= me->destination;
    e885030c:	e43e                	sd	a5,8(sp)
			params.defaultPort			= me->defaultPort;
    e885030e:	581c                	lw	a5,48(s0)
			params.progressFunc			= NULL;
    e8850310:	f402                	sd	zero,40(sp)
			params.progressArg			= NULL;
    e8850312:	f802                	sd	zero,48(sp)
			params.flags				= flags;
    e8850314:	e491578b          	swd	a5,s1,(sp),2,3
			params.socketSendBufferSize	= kSocketBufferSize_DontSet;
    e8850318:	57fd                	li	a5,-1
    e885031a:	f03e                	sd	a5,32(sp)
			params.handlerFunc			= _HTTPClientConnectHandler;
    e885031c:	00000797          	auipc	a5,0x0
    e8850320:	d5478793          	addi	a5,a5,-684 # e8850070 <_HTTPClientConnectHandler>
    e8850324:	fc3e                	sd	a5,56(sp)
			params.handlerQueue			= me->queue;
    e8850326:	641c                	ld	a5,8(s0)
			params.handlerArg			= me;
    e8850328:	e0a2                	sd	s0,64(sp)
			params.handlerQueue			= me->queue;
    e885032a:	e4be                	sd	a5,72(sp)
			params.logCategory			= me->connectionUcat;
    e885032c:	603c                	ld	a5,64(s0)
    e885032e:	e8be                	sd	a5,80(sp)
			err = AsyncConnection_ConnectEx( &me->connector, &params );
    e8850330:	d45f40ef          	jal	ra,e8845074 <AsyncConnection_ConnectEx>
    e8850334:	85aa                	mv	a1,a0
			require_noerr( err, exit );
    e8850336:	ee0518e3          	bnez	a0,e8850226 <_HTTPClientRunStateMachine+0x4a>
			CFRetain( me );
    e885033a:	8522                	mv	a0,s0
    e885033c:	e0bf60ef          	jal	ra,e8847146 <CFRetain>
			me->state = kHTTPClientStateConnecting;
    e8850340:	4785                	li	a5,1
    e8850342:	04f40a23          	sb	a5,84(s0)
			break;
    e8850346:	b731                	j	e8850252 <_HTTPClientRunStateMachine+0x76>
		else if( me->state == kHTTPClientStateConnecting )
    e8850348:	4705                	li	a4,1
    e885034a:	f0e784e3          	beq	a5,a4,e8850252 <_HTTPClientRunStateMachine+0x76>
		else if( me->state == kHTTPClientStatePreparingRequest )
    e885034e:	4709                	li	a4,2
    e8850350:	0ae79c63          	bne	a5,a4,e8850408 <_HTTPClientRunStateMachine+0x22c>
			dispatch_source_forget( &me->timerSource );
    e8850354:	6448                	ld	a0,136(s0)
    e8850356:	c901                	beqz	a0,e8850366 <_HTTPClientRunStateMachine+0x18a>
    e8850358:	8efff0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e885035c:	6448                	ld	a0,136(s0)
    e885035e:	ef2fe0ef          	jal	ra,e884ea50 <dispatch_release>
    e8850362:	08043423          	sd	zero,136(s0)
			msg = me->messageList;
    e8850366:	50843583          	ld	a1,1288(s0)
			require_action( msg, exit, err = kInternalErr );
    e885036a:	e589                	bnez	a1,e8850374 <_HTTPClientRunStateMachine+0x198>
			err = kInternalErr;
    e885036c:	75f9                	lui	a1,0xffffe
    e885036e:	59658593          	addi	a1,a1,1430 # ffffffffffffe596 <__DRAM0_INF_BASE+0xffffffff0000e596>
    e8850372:	bd55                	j	e8850226 <_HTTPClientRunStateMachine+0x4a>
			if( msg->ion == 0 )
    e8850374:	6785                	lui	a5,0x1
    e8850376:	97ae                	add	a5,a5,a1
    e8850378:	9807a703          	lw	a4,-1664(a5) # 980 <memcmp-0xe87ff680>
    e885037c:	ef01                	bnez	a4,e8850394 <_HTTPClientRunStateMachine+0x1b8>
				msg->header.statusCode = kHTTPStatus_OK;
    e885037e:	0c800793          	li	a5,200
    e8850382:	4ef5a023          	sw	a5,1248(a1)
				_HTTPClientCompleteMessage( me, msg, kNoErr );
    e8850386:	4601                	li	a2,0
    e8850388:	8522                	mv	a0,s0
    e885038a:	a79ff0ef          	jal	ra,e884fe02 <_HTTPClientCompleteMessage>
			me->state = kHTTPClientStateIdle;
    e885038e:	04040a23          	sb	zero,84(s0)
    e8850392:	bdad                	j	e885020c <_HTTPClientRunStateMachine+0x30>
			timeoutSecs = msg->dataTimeoutSecs;
    e8850394:	9947a483          	lw	s1,-1644(a5)
			if( timeoutSecs <= 0 ) timeoutSecs = me->timeoutSecs;
    e8850398:	00904563          	bgtz	s1,e88503a2 <_HTTPClientRunStateMachine+0x1c6>
    e885039c:	4824                	lw	s1,80(s0)
			if( timeoutSecs > 0 )
    e885039e:	06905363          	blez	s1,e8850404 <_HTTPClientRunStateMachine+0x228>
				me->timerSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, me->queue );
    e88503a2:	6414                	ld	a3,8(s0)
    e88503a4:	4601                	li	a2,0
    e88503a6:	4581                	li	a1,0
    e88503a8:	4509                	li	a0,2
    e88503aa:	a05fe0ef          	jal	ra,e884edae <dispatch_source_create>
    e88503ae:	e448                	sd	a0,136(s0)
				require_action( me->timerSource, exit, err = kUnknownErr );
    e88503b0:	e509                	bnez	a0,e88503ba <_HTTPClientRunStateMachine+0x1de>
    e88503b2:	75f9                	lui	a1,0xffffe
    e88503b4:	5d458593          	addi	a1,a1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e88503b8:	b5bd                	j	e8850226 <_HTTPClientRunStateMachine+0x4a>
				CFRetain( me );
    e88503ba:	8522                	mv	a0,s0
    e88503bc:	d8bf60ef          	jal	ra,e8847146 <CFRetain>
				dispatch_set_context( me->timerSource, me );
    e88503c0:	6448                	ld	a0,136(s0)
    e88503c2:	85a2                	mv	a1,s0
    e88503c4:	859fe0ef          	jal	ra,e884ec1c <dispatch_set_context>
				dispatch_source_set_event_handler_f( me->timerSource, _HTTPClientTimerFiredHandler );
    e88503c8:	6448                	ld	a0,136(s0)
    e88503ca:	00000597          	auipc	a1,0x0
    e88503ce:	be658593          	addi	a1,a1,-1050 # e884ffb0 <_HTTPClientTimerFiredHandler>
    e88503d2:	a99fe0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
				dispatch_source_set_cancel_handler_f( me->timerSource, _HTTPClientTimerCanceledHandler );
    e88503d6:	6448                	ld	a0,136(s0)
    e88503d8:	00000597          	auipc	a1,0x0
    e88503dc:	a5e58593          	addi	a1,a1,-1442 # e884fe36 <_HTTPClientTimerCanceledHandler>
    e88503e0:	a8ffe0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
				dispatch_source_set_timer( me->timerSource, dispatch_time_seconds( timeoutSecs ), 
    e88503e4:	08843b83          	ld	s7,136(s0)
    e88503e8:	033485b3          	mul	a1,s1,s3
    e88503ec:	4501                	li	a0,0
    e88503ee:	b67fe0ef          	jal	ra,e884ef54 <dispatch_time>
    e88503f2:	85aa                	mv	a1,a0
    e88503f4:	86d2                	mv	a3,s4
    e88503f6:	855e                	mv	a0,s7
    e88503f8:	567d                	li	a2,-1
    e88503fa:	fceff0ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
				dispatch_resume( me->timerSource );
    e88503fe:	6448                	ld	a0,136(s0)
    e8850400:	ef6ff0ef          	jal	ra,e884faf6 <dispatch_resume>
			me->state = kHTTPClientStateWritingRequest;
    e8850404:	478d                	li	a5,3
    e8850406:	bd1d                	j	e885023c <_HTTPClientRunStateMachine+0x60>
		else if( me->state == kHTTPClientStateWritingRequest )
    e8850408:	470d                	li	a4,3
    e885040a:	06e79863          	bne	a5,a4,e885047a <_HTTPClientRunStateMachine+0x29e>
			msg = me->messageList;
    e885040e:	50843483          	ld	s1,1288(s0)
			require_action( msg, exit, err = kInternalErr );
    e8850412:	dca9                	beqz	s1,e885036c <_HTTPClientRunStateMachine+0x190>
			err = HTTPMessageWriteMessage( msg, me->transportDelegate.writev_f, me->transportDelegate.context );
    e8850414:	4b843603          	ld	a2,1208(s0)
    e8850418:	4d843583          	ld	a1,1240(s0)
    e885041c:	8526                	mv	a0,s1
    e885041e:	19b000ef          	jal	ra,e8850db8 <HTTPMessageWriteMessage>
			err = _HTTPClientHandleIOError( me, err, false );
    e8850422:	85aa                	mv	a1,a0
    e8850424:	4601                	li	a2,0
    e8850426:	8522                	mv	a0,s0
    e8850428:	bddff0ef          	jal	ra,e8850004 <_HTTPClientHandleIOError>
    e885042c:	85aa                	mv	a1,a0
			if( err == EWOULDBLOCK ) break;
    e885042e:	47ad                	li	a5,11
    e8850430:	e2f501e3          	beq	a0,a5,e8850252 <_HTTPClientRunStateMachine+0x76>
			require_noerr_quiet( err, exit );
    e8850434:	de0519e3          	bnez	a0,e8850226 <_HTTPClientRunStateMachine+0x4a>
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e8850438:	7c0c                	ld	a1,56(s0)
    e885043a:	5204b783          	ld	a5,1312(s1)
    e885043e:	5184b703          	ld	a4,1304(s1)
    e8850442:	4104b683          	ld	a3,1040(s1)
    e8850446:	01048b93          	addi	s7,s1,16
    e885044a:	865e                	mv	a2,s7
    e885044c:	852e                	mv	a0,a1
    e885044e:	3b4020ef          	jal	ra,e8852802 <LogHTTP>
			if( me->debugDelegate.sendMessage_f )
    e8850452:	4a843783          	ld	a5,1192(s0)
    e8850456:	cb99                	beqz	a5,e885046c <_HTTPClientRunStateMachine+0x290>
				me->debugDelegate.sendMessage_f( msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen, 
    e8850458:	4a043703          	ld	a4,1184(s0)
    e885045c:	5204b683          	ld	a3,1312(s1)
    e8850460:	5184b603          	ld	a2,1304(s1)
    e8850464:	4104b583          	ld	a1,1040(s1)
    e8850468:	855e                	mv	a0,s7
    e885046a:	9782                	jalr	a5
			me->state = kHTTPClientStateReadingResponse;
    e885046c:	4791                	li	a5,4
    e885046e:	04f40a23          	sb	a5,84(s0)
				HTTPMessageReset( msg );
    e8850472:	8526                	mv	a0,s1
    e8850474:	05b000ef          	jal	ra,e8850cce <HTTPMessageReset>
				continue;
    e8850478:	bb51                	j	e885020c <_HTTPClientRunStateMachine+0x30>
		else if( me->state == kHTTPClientStateReadingResponse )
    e885047a:	4711                	li	a4,4
    e885047c:	0ae79b63          	bne	a5,a4,e8850532 <_HTTPClientRunStateMachine+0x356>
			msg = me->messageList;
    e8850480:	50843483          	ld	s1,1288(s0)
			require_action( msg, exit, err = kInternalErr );
    e8850484:	ee0484e3          	beqz	s1,e885036c <_HTTPClientRunStateMachine+0x190>
			msg->header.extraDataPtr = me->extraDataBuf;
    e8850488:	4124bc23          	sd	s2,1048(s1)
			msg->header.extraDataLen = me->extraDataLen;
    e885048c:	49043783          	ld	a5,1168(s0)
			err = HTTPMessageReadMessage( msg, me->transportDelegate.read_f, me->transportDelegate.context );
    e8850490:	8526                	mv	a0,s1
			msg->header.extraDataLen = me->extraDataLen;
    e8850492:	42f4b023          	sd	a5,1056(s1)
			err = HTTPMessageReadMessage( msg, me->transportDelegate.read_f, me->transportDelegate.context );
    e8850496:	4b843603          	ld	a2,1208(s0)
    e885049a:	4d043583          	ld	a1,1232(s0)
    e885049e:	203000ef          	jal	ra,e8850ea0 <HTTPMessageReadMessage>
			err = _HTTPClientHandleIOError( me, err, true );
    e88504a2:	85aa                	mv	a1,a0
    e88504a4:	4605                	li	a2,1
    e88504a6:	8522                	mv	a0,s0
    e88504a8:	b5dff0ef          	jal	ra,e8850004 <_HTTPClientHandleIOError>
    e88504ac:	85aa                	mv	a1,a0
			if( err == EWOULDBLOCK ) break;
    e88504ae:	47ad                	li	a5,11
    e88504b0:	daf501e3          	beq	a0,a5,e8850252 <_HTTPClientRunStateMachine+0x76>
			require_noerr_quiet( err, exit );
    e88504b4:	d60519e3          	bnez	a0,e8850226 <_HTTPClientRunStateMachine+0x4a>
			memmove( me->extraDataBuf, msg->header.extraDataPtr, msg->header.extraDataLen );
    e88504b8:	4204b603          	ld	a2,1056(s1)
    e88504bc:	4184b583          	ld	a1,1048(s1)
    e88504c0:	854a                	mv	a0,s2
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e88504c2:	01048b93          	addi	s7,s1,16
			memmove( me->extraDataBuf, msg->header.extraDataPtr, msg->header.extraDataLen );
    e88504c6:	6e72b0ef          	jal	ra,e887c3ac <eLIBs_memmove>
			me->extraDataLen = msg->header.extraDataLen;
    e88504ca:	4204b783          	ld	a5,1056(s1)
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e88504ce:	865e                	mv	a2,s7
			me->extraDataLen = msg->header.extraDataLen;
    e88504d0:	48f43823          	sd	a5,1168(s0)
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e88504d4:	5204b783          	ld	a5,1312(s1)
			msg->header.extraDataLen = 0;
    e88504d8:	4204b023          	sd	zero,1056(s1)
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e88504dc:	7c0c                	ld	a1,56(s0)
    e88504de:	5184b703          	ld	a4,1304(s1)
    e88504e2:	4104b683          	ld	a3,1040(s1)
    e88504e6:	852e                	mv	a0,a1
    e88504e8:	31a020ef          	jal	ra,e8852802 <LogHTTP>
			if( me->debugDelegate.receiveMessage_f )
    e88504ec:	4b043783          	ld	a5,1200(s0)
    e88504f0:	cb99                	beqz	a5,e8850506 <_HTTPClientRunStateMachine+0x32a>
				me->debugDelegate.receiveMessage_f( msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen, 
    e88504f2:	4a043703          	ld	a4,1184(s0)
    e88504f6:	5204b683          	ld	a3,1312(s1)
    e88504fa:	5184b603          	ld	a2,1304(s1)
    e88504fe:	4104b583          	ld	a1,1040(s1)
    e8850502:	855e                	mv	a0,s7
    e8850504:	9782                	jalr	a5
			if( ( me->flags & kHTTPClientFlag_Events ) &&
    e8850506:	585c                	lw	a5,52(s0)
    e8850508:	8bc1                	andi	a5,a5,16
    e885050a:	c395                	beqz	a5,e885052e <_HTTPClientRunStateMachine+0x352>
				     ( strncmpx( msg->header.protocolPtr, msg->header.protocolLen, "EVENT/1.0" ) == 0 ) )
    e885050c:	4d84b583          	ld	a1,1240(s1)
    e8850510:	4d04b503          	ld	a0,1232(s1)
    e8850514:	00070617          	auipc	a2,0x70
    e8850518:	77460613          	addi	a2,a2,1908 # e88c0c88 <__PRETTY_FUNCTION__.9551+0x180>
    e885051c:	40e0f0ef          	jal	ra,e885f92a <strncmpx>
			if( ( me->flags & kHTTPClientFlag_Events ) &&
    e8850520:	e519                	bnez	a0,e885052e <_HTTPClientRunStateMachine+0x352>
				if( me->delegate.handleEvent_f ) me->delegate.handleEvent_f( msg, me->delegate.context );
    e8850522:	701c                	ld	a5,32(s0)
    e8850524:	d7b9                	beqz	a5,e8850472 <_HTTPClientRunStateMachine+0x296>
    e8850526:	680c                	ld	a1,16(s0)
    e8850528:	8526                	mv	a0,s1
    e885052a:	9782                	jalr	a5
    e885052c:	b799                	j	e8850472 <_HTTPClientRunStateMachine+0x296>
			me->state = kHTTPClientStateFinishingMesssage;
    e885052e:	4799                	li	a5,6
    e8850530:	b331                	j	e885023c <_HTTPClientRunStateMachine+0x60>
		else if( me->state == kHTTPClientStateFinishingMesssage )
    e8850532:	4719                	li	a4,6
    e8850534:	02e79e63          	bne	a5,a4,e8850570 <_HTTPClientRunStateMachine+0x394>
			msg = me->messageList;
    e8850538:	50843583          	ld	a1,1288(s0)
			require_action( msg, exit, err = kInternalErr );
    e885053c:	e20588e3          	beqz	a1,e885036c <_HTTPClientRunStateMachine+0x190>
			if( msg->closeAfterRequest )
    e8850540:	5115c783          	lbu	a5,1297(a1)
    e8850544:	c799                	beqz	a5,e8850552 <_HTTPClientRunStateMachine+0x376>
				shutdown( me->sock, SHUT_WR_COMPAT );
    e8850546:	5028                	lw	a0,96(s0)
    e8850548:	4585                	li	a1,1
    e885054a:	2d5350ef          	jal	ra,e888601e <lwip_shutdown>
				me->state = kHTTPClientStateWaitingForClose;
    e885054e:	4795                	li	a5,5
    e8850550:	b1f5                	j	e885023c <_HTTPClientRunStateMachine+0x60>
				_HTTPClientCompleteMessage( me, msg, kNoErr );
    e8850552:	4601                	li	a2,0
    e8850554:	8522                	mv	a0,s0
    e8850556:	8adff0ef          	jal	ra,e884fe02 <_HTTPClientCompleteMessage>
				dispatch_source_forget( &me->timerSource );
    e885055a:	6448                	ld	a0,136(s0)
    e885055c:	e20509e3          	beqz	a0,e885038e <_HTTPClientRunStateMachine+0x1b2>
    e8850560:	ee6ff0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8850564:	6448                	ld	a0,136(s0)
    e8850566:	ceafe0ef          	jal	ra,e884ea50 <dispatch_release>
    e885056a:	08043423          	sd	zero,136(s0)
				me->state = kHTTPClientStateIdle;
    e885056e:	b505                	j	e885038e <_HTTPClientRunStateMachine+0x1b2>
		else if( me->state == kHTTPClientStateWaitingForClose )
    e8850570:	4715                	li	a4,5
    e8850572:	0ce79063          	bne	a5,a4,e8850632 <_HTTPClientRunStateMachine+0x456>
			err = me->transportDelegate.read_f( buf, sizeof( buf ), &len, me->transportDelegate.context );
    e8850576:	4d043783          	ld	a5,1232(s0)
    e885057a:	4b843683          	ld	a3,1208(s0)
    e885057e:	860a                	mv	a2,sp
    e8850580:	45c1                	li	a1,16
			len = 0;
    e8850582:	e002                	sd	zero,0(sp)
			err = me->transportDelegate.read_f( buf, sizeof( buf ), &len, me->transportDelegate.context );
    e8850584:	0028                	addi	a0,sp,8
    e8850586:	9782                	jalr	a5
			err = _HTTPClientHandleIOError( me, err, true );
    e8850588:	85aa                	mv	a1,a0
    e885058a:	4605                	li	a2,1
    e885058c:	8522                	mv	a0,s0
    e885058e:	a77ff0ef          	jal	ra,e8850004 <_HTTPClientHandleIOError>
    e8850592:	84aa                	mv	s1,a0
			if( err == EWOULDBLOCK ) break;
    e8850594:	47ad                	li	a5,11
    e8850596:	caf50ee3          	beq	a0,a5,e8850252 <_HTTPClientRunStateMachine+0x76>
			if( len > 0 ) ulog( me->ucat, kLogLevelNotice, "### Read %zu bytes after connection close\n", len );
    e885059a:	6782                	ld	a5,0(sp)
    e885059c:	cb85                	beqz	a5,e88505cc <_HTTPClientRunStateMachine+0x3f0>
    e885059e:	7c08                	ld	a0,56(s0)
    e88505a0:	03200713          	li	a4,50
    e88505a4:	411c                	lw	a5,0(a0)
    e88505a6:	02f74363          	blt	a4,a5,e88505cc <_HTTPClientRunStateMachine+0x3f0>
    e88505aa:	577d                	li	a4,-1
    e88505ac:	06e78763          	beq	a5,a4,e885061a <_HTTPClientRunStateMachine+0x43e>
    e88505b0:	6702                	ld	a4,0(sp)
    e88505b2:	7c08                	ld	a0,56(s0)
    e88505b4:	00070697          	auipc	a3,0x70
    e88505b8:	6e468693          	addi	a3,a3,1764 # e88c0c98 <__PRETTY_FUNCTION__.9551+0x190>
    e88505bc:	03200613          	li	a2,50
    e88505c0:	00070597          	auipc	a1,0x70
    e88505c4:	7e058593          	addi	a1,a1,2016 # e88c0da0 <__PRETTY_FUNCTION__.10421>
    e88505c8:	6ad030ef          	jal	ra,e8854474 <LogPrintF>
			if( err != kConnectionErr ) ulog( me->ucat, kLogLevelNotice, "### Error on wait for close: %#m\n", err );
    e88505cc:	03648963          	beq	s1,s6,e88505fe <_HTTPClientRunStateMachine+0x422>
    e88505d0:	7c08                	ld	a0,56(s0)
    e88505d2:	03200713          	li	a4,50
    e88505d6:	411c                	lw	a5,0(a0)
    e88505d8:	02f74363          	blt	a4,a5,e88505fe <_HTTPClientRunStateMachine+0x422>
    e88505dc:	577d                	li	a4,-1
    e88505de:	04e78463          	beq	a5,a4,e8850626 <_HTTPClientRunStateMachine+0x44a>
    e88505e2:	7c08                	ld	a0,56(s0)
    e88505e4:	8726                	mv	a4,s1
    e88505e6:	00070697          	auipc	a3,0x70
    e88505ea:	6e268693          	addi	a3,a3,1762 # e88c0cc8 <__PRETTY_FUNCTION__.9551+0x1c0>
    e88505ee:	03200613          	li	a2,50
    e88505f2:	00070597          	auipc	a1,0x70
    e88505f6:	7ae58593          	addi	a1,a1,1966 # e88c0da0 <__PRETTY_FUNCTION__.10421>
    e88505fa:	67b030ef          	jal	ra,e8854474 <LogPrintF>
			msg = me->messageList;
    e88505fe:	50843583          	ld	a1,1288(s0)
			require_action( msg, exit, err = kInternalErr );
    e8850602:	d60585e3          	beqz	a1,e885036c <_HTTPClientRunStateMachine+0x190>
			_HTTPClientCompleteMessage( me, msg, kNoErr );
    e8850606:	8522                	mv	a0,s0
    e8850608:	4601                	li	a2,0
    e885060a:	ff8ff0ef          	jal	ra,e884fe02 <_HTTPClientCompleteMessage>
			_HTTPClientErrorHandler( me, kEndingErr );
    e885060e:	5a0a8593          	addi	a1,s5,1440
    e8850612:	8522                	mv	a0,s0
    e8850614:	86dff0ef          	jal	ra,e884fe80 <_HTTPClientErrorHandler>
    e8850618:	bb9d                	j	e885038e <_HTTPClientRunStateMachine+0x1b2>
			if( len > 0 ) ulog( me->ucat, kLogLevelNotice, "### Read %zu bytes after connection close\n", len );
    e885061a:	03200593          	li	a1,50
    e885061e:	255030ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8850622:	d54d                	beqz	a0,e88505cc <_HTTPClientRunStateMachine+0x3f0>
    e8850624:	b771                	j	e88505b0 <_HTTPClientRunStateMachine+0x3d4>
			if( err != kConnectionErr ) ulog( me->ucat, kLogLevelNotice, "### Error on wait for close: %#m\n", err );
    e8850626:	03200593          	li	a1,50
    e885062a:	249030ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885062e:	d961                	beqz	a0,e88505fe <_HTTPClientRunStateMachine+0x422>
    e8850630:	bf4d                	j	e88505e2 <_HTTPClientRunStateMachine+0x406>
		else if( me->state == kHTTPClientStatePreparingForEvent )
    e8850632:	471d                	li	a4,7
    e8850634:	06e79e63          	bne	a5,a4,e88506b0 <_HTTPClientRunStateMachine+0x4d4>
			dispatch_source_forget( &me->timerSource );
    e8850638:	6448                	ld	a0,136(s0)
    e885063a:	c901                	beqz	a0,e885064a <_HTTPClientRunStateMachine+0x46e>
    e885063c:	e0aff0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8850640:	6448                	ld	a0,136(s0)
    e8850642:	c0efe0ef          	jal	ra,e884ea50 <dispatch_release>
    e8850646:	08043423          	sd	zero,136(s0)
			if( me->timeoutSecs > 0 )
    e885064a:	483c                	lw	a5,80(s0)
    e885064c:	06f05063          	blez	a5,e88506ac <_HTTPClientRunStateMachine+0x4d0>
				me->timerSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, me->queue );
    e8850650:	6414                	ld	a3,8(s0)
    e8850652:	4601                	li	a2,0
    e8850654:	4581                	li	a1,0
    e8850656:	4509                	li	a0,2
    e8850658:	f56fe0ef          	jal	ra,e884edae <dispatch_source_create>
    e885065c:	e448                	sd	a0,136(s0)
				require_action( me->timerSource, exit, err = kUnknownErr );
    e885065e:	d4050ae3          	beqz	a0,e88503b2 <_HTTPClientRunStateMachine+0x1d6>
				CFRetain( me );
    e8850662:	8522                	mv	a0,s0
    e8850664:	ae3f60ef          	jal	ra,e8847146 <CFRetain>
				dispatch_set_context( me->timerSource, me );
    e8850668:	6448                	ld	a0,136(s0)
    e885066a:	85a2                	mv	a1,s0
    e885066c:	db0fe0ef          	jal	ra,e884ec1c <dispatch_set_context>
				dispatch_source_set_event_handler_f( me->timerSource, _HTTPClientTimerFiredHandler );
    e8850670:	6448                	ld	a0,136(s0)
    e8850672:	00000597          	auipc	a1,0x0
    e8850676:	93e58593          	addi	a1,a1,-1730 # e884ffb0 <_HTTPClientTimerFiredHandler>
    e885067a:	ff0fe0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
				dispatch_source_set_cancel_handler_f( me->timerSource, _HTTPClientTimerCanceledHandler );
    e885067e:	6448                	ld	a0,136(s0)
    e8850680:	fffff597          	auipc	a1,0xfffff
    e8850684:	7b658593          	addi	a1,a1,1974 # e884fe36 <_HTTPClientTimerCanceledHandler>
    e8850688:	fe6fe0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
				dispatch_source_set_timer( me->timerSource, dispatch_time_seconds( me->timeoutSecs ), 
    e885068c:	6444                	ld	s1,136(s0)
    e885068e:	482c                	lw	a1,80(s0)
    e8850690:	4501                	li	a0,0
    e8850692:	033585b3          	mul	a1,a1,s3
    e8850696:	8bffe0ef          	jal	ra,e884ef54 <dispatch_time>
    e885069a:	85aa                	mv	a1,a0
    e885069c:	86d2                	mv	a3,s4
    e885069e:	8526                	mv	a0,s1
    e88506a0:	567d                	li	a2,-1
    e88506a2:	d26ff0ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
				dispatch_resume( me->timerSource );
    e88506a6:	6448                	ld	a0,136(s0)
    e88506a8:	c4eff0ef          	jal	ra,e884faf6 <dispatch_resume>
			me->state = kHTTPClientStateReadingEvent;
    e88506ac:	47a1                	li	a5,8
    e88506ae:	b679                	j	e885023c <_HTTPClientRunStateMachine+0x60>
		else if( me->state == kHTTPClientStateReadingEvent )
    e88506b0:	4721                	li	a4,8
    e88506b2:	0ee79863          	bne	a5,a4,e88507a2 <_HTTPClientRunStateMachine+0x5c6>
			msg = me->eventMsg;
    e88506b6:	49843483          	ld	s1,1176(s0)
			msg->header.extraDataPtr = me->extraDataBuf;
    e88506ba:	4124bc23          	sd	s2,1048(s1)
			msg->header.extraDataLen = me->extraDataLen;
    e88506be:	49043783          	ld	a5,1168(s0)
			err = HTTPMessageReadMessage( msg, me->transportDelegate.read_f, me->transportDelegate.context );
    e88506c2:	8526                	mv	a0,s1
			msg->header.extraDataLen = me->extraDataLen;
    e88506c4:	42f4b023          	sd	a5,1056(s1)
			err = HTTPMessageReadMessage( msg, me->transportDelegate.read_f, me->transportDelegate.context );
    e88506c8:	4b843603          	ld	a2,1208(s0)
    e88506cc:	4d043583          	ld	a1,1232(s0)
    e88506d0:	7d0000ef          	jal	ra,e8850ea0 <HTTPMessageReadMessage>
			err = _HTTPClientHandleIOError( me, err, true );
    e88506d4:	85aa                	mv	a1,a0
    e88506d6:	4605                	li	a2,1
    e88506d8:	8522                	mv	a0,s0
    e88506da:	92bff0ef          	jal	ra,e8850004 <_HTTPClientHandleIOError>
    e88506de:	85aa                	mv	a1,a0
			if( err == EWOULDBLOCK )
    e88506e0:	47ad                	li	a5,11
    e88506e2:	04f51e63          	bne	a0,a5,e885073e <_HTTPClientRunStateMachine+0x562>
				if( msg->header.len == 0 )
    e88506e6:	4104b783          	ld	a5,1040(s1)
    e88506ea:	b60794e3          	bnez	a5,e8850252 <_HTTPClientRunStateMachine+0x76>
					ulog( me->ucat, kLogLevelInfo, "### Ignoring spurious readability notification\n" );
    e88506ee:	7c08                	ld	a0,56(s0)
    e88506f0:	02800713          	li	a4,40
    e88506f4:	411c                	lw	a5,0(a0)
    e88506f6:	02f74263          	blt	a4,a5,e885071a <_HTTPClientRunStateMachine+0x53e>
    e88506fa:	577d                	li	a4,-1
    e88506fc:	02e78b63          	beq	a5,a4,e8850732 <_HTTPClientRunStateMachine+0x556>
    e8850700:	7c08                	ld	a0,56(s0)
    e8850702:	00070697          	auipc	a3,0x70
    e8850706:	5ee68693          	addi	a3,a3,1518 # e88c0cf0 <__PRETTY_FUNCTION__.9551+0x1e8>
    e885070a:	02800613          	li	a2,40
    e885070e:	00070597          	auipc	a1,0x70
    e8850712:	69258593          	addi	a1,a1,1682 # e88c0da0 <__PRETTY_FUNCTION__.10421>
    e8850716:	55f030ef          	jal	ra,e8854474 <LogPrintF>
					dispatch_source_forget( &me->timerSource );
    e885071a:	6448                	ld	a0,136(s0)
    e885071c:	c901                	beqz	a0,e885072c <_HTTPClientRunStateMachine+0x550>
    e885071e:	d28ff0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8850722:	6448                	ld	a0,136(s0)
    e8850724:	b2cfe0ef          	jal	ra,e884ea50 <dispatch_release>
    e8850728:	08043423          	sd	zero,136(s0)
					me->state = kHTTPClientStateIdle;
    e885072c:	04040a23          	sb	zero,84(s0)
    e8850730:	b60d                	j	e8850252 <_HTTPClientRunStateMachine+0x76>
					ulog( me->ucat, kLogLevelInfo, "### Ignoring spurious readability notification\n" );
    e8850732:	02800593          	li	a1,40
    e8850736:	13d030ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885073a:	d165                	beqz	a0,e885071a <_HTTPClientRunStateMachine+0x53e>
    e885073c:	b7d1                	j	e8850700 <_HTTPClientRunStateMachine+0x524>
			require_noerr_quiet( err, exit );
    e885073e:	ae0514e3          	bnez	a0,e8850226 <_HTTPClientRunStateMachine+0x4a>
			memmove( me->extraDataBuf, msg->header.extraDataPtr, msg->header.extraDataLen );
    e8850742:	4204b603          	ld	a2,1056(s1)
    e8850746:	4184b583          	ld	a1,1048(s1)
    e885074a:	854a                	mv	a0,s2
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e885074c:	01048b93          	addi	s7,s1,16
			memmove( me->extraDataBuf, msg->header.extraDataPtr, msg->header.extraDataLen );
    e8850750:	45d2b0ef          	jal	ra,e887c3ac <eLIBs_memmove>
			me->extraDataLen = msg->header.extraDataLen;
    e8850754:	4204b783          	ld	a5,1056(s1)
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e8850758:	865e                	mv	a2,s7
			me->extraDataLen = msg->header.extraDataLen;
    e885075a:	48f43823          	sd	a5,1168(s0)
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e885075e:	5204b783          	ld	a5,1312(s1)
			msg->header.extraDataLen = 0;
    e8850762:	4204b023          	sd	zero,1056(s1)
			LogHTTP( me->ucat, me->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e8850766:	7c0c                	ld	a1,56(s0)
    e8850768:	5184b703          	ld	a4,1304(s1)
    e885076c:	4104b683          	ld	a3,1040(s1)
    e8850770:	852e                	mv	a0,a1
    e8850772:	090020ef          	jal	ra,e8852802 <LogHTTP>
			if( me->debugDelegate.receiveMessage_f )
    e8850776:	4b043783          	ld	a5,1200(s0)
    e885077a:	cb99                	beqz	a5,e8850790 <_HTTPClientRunStateMachine+0x5b4>
				me->debugDelegate.receiveMessage_f( msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen, 
    e885077c:	4a043703          	ld	a4,1184(s0)
    e8850780:	5204b683          	ld	a3,1312(s1)
    e8850784:	5184b603          	ld	a2,1304(s1)
    e8850788:	4104b583          	ld	a1,1040(s1)
    e885078c:	855e                	mv	a0,s7
    e885078e:	9782                	jalr	a5
			if( me->delegate.handleEvent_f )
    e8850790:	701c                	ld	a5,32(s0)
    e8850792:	c781                	beqz	a5,e885079a <_HTTPClientRunStateMachine+0x5be>
				me->delegate.handleEvent_f( msg, me->delegate.context );
    e8850794:	680c                	ld	a1,16(s0)
    e8850796:	8526                	mv	a0,s1
    e8850798:	9782                	jalr	a5
			HTTPMessageReset( msg );
    e885079a:	8526                	mv	a0,s1
    e885079c:	532000ef          	jal	ra,e8850cce <HTTPMessageReset>
			dispatch_source_forget( &me->timerSource );
    e88507a0:	bb6d                	j	e885055a <_HTTPClientRunStateMachine+0x37e>
		else if( me->state == kHTTPClientStateError )
    e88507a2:	7c08                	ld	a0,56(s0)
    e88507a4:	46a5                	li	a3,9
    e88507a6:	4118                	lw	a4,0(a0)
    e88507a8:	04d79263          	bne	a5,a3,e88507ec <_HTTPClientRunStateMachine+0x610>
			ulog( me->ucat, kLogLevelWarning, "### Running HTTP client in error state for %s\n", me->destination );
    e88507ac:	03c00793          	li	a5,60
    e88507b0:	00e7d663          	bge	a5,a4,e88507bc <_HTTPClientRunStateMachine+0x5e0>
			err = kStateErr;
    e88507b4:	75f9                	lui	a1,0xffffe
    e88507b6:	5cb58593          	addi	a1,a1,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
    e88507ba:	b4b5                	j	e8850226 <_HTTPClientRunStateMachine+0x4a>
			ulog( me->ucat, kLogLevelWarning, "### Running HTTP client in error state for %s\n", me->destination );
    e88507bc:	57fd                	li	a5,-1
    e88507be:	02f70163          	beq	a4,a5,e88507e0 <_HTTPClientRunStateMachine+0x604>
    e88507c2:	7418                	ld	a4,40(s0)
    e88507c4:	7c08                	ld	a0,56(s0)
    e88507c6:	00070697          	auipc	a3,0x70
    e88507ca:	55a68693          	addi	a3,a3,1370 # e88c0d20 <__PRETTY_FUNCTION__.9551+0x218>
    e88507ce:	03c00613          	li	a2,60
    e88507d2:	00070597          	auipc	a1,0x70
    e88507d6:	5ce58593          	addi	a1,a1,1486 # e88c0da0 <__PRETTY_FUNCTION__.10421>
    e88507da:	49b030ef          	jal	ra,e8854474 <LogPrintF>
    e88507de:	bfd9                	j	e88507b4 <_HTTPClientRunStateMachine+0x5d8>
    e88507e0:	03c00593          	li	a1,60
    e88507e4:	08f030ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88507e8:	d571                	beqz	a0,e88507b4 <_HTTPClientRunStateMachine+0x5d8>
    e88507ea:	bfe1                	j	e88507c2 <_HTTPClientRunStateMachine+0x5e6>
			ulog( me->ucat, kLogLevelWarning, "### Bad HTTP client state %u for %s\n", me->state, me->destination );
    e88507ec:	03c00793          	li	a5,60
    e88507f0:	b6e7cee3          	blt	a5,a4,e885036c <_HTTPClientRunStateMachine+0x190>
    e88507f4:	57fd                	li	a5,-1
    e88507f6:	02f70363          	beq	a4,a5,e885081c <_HTTPClientRunStateMachine+0x640>
    e88507fa:	741c                	ld	a5,40(s0)
    e88507fc:	05444703          	lbu	a4,84(s0)
    e8850800:	7c08                	ld	a0,56(s0)
    e8850802:	00070697          	auipc	a3,0x70
    e8850806:	54e68693          	addi	a3,a3,1358 # e88c0d50 <__PRETTY_FUNCTION__.9551+0x248>
    e885080a:	03c00613          	li	a2,60
    e885080e:	00070597          	auipc	a1,0x70
    e8850812:	59258593          	addi	a1,a1,1426 # e88c0da0 <__PRETTY_FUNCTION__.10421>
    e8850816:	45f030ef          	jal	ra,e8854474 <LogPrintF>
    e885081a:	be89                	j	e885036c <_HTTPClientRunStateMachine+0x190>
    e885081c:	03c00593          	li	a1,60
    e8850820:	053030ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8850824:	b40504e3          	beqz	a0,e885036c <_HTTPClientRunStateMachine+0x190>
    e8850828:	bfc9                	j	e88507fa <_HTTPClientRunStateMachine+0x61e>

00000000e885082a <_HTTPClientSendMessage>:
	HTTPClientRef const			me  = (HTTPClientRef) msg->httpContext1;
    e885082a:	6785                	lui	a5,0x1
{
    e885082c:	1141                	addi	sp,sp,-16
	HTTPClientRef const			me  = (HTTPClientRef) msg->httpContext1;
    e885082e:	97aa                	add	a5,a5,a0
{
    e8850830:	e406                	sd	ra,8(sp)
    e8850832:	e022                	sd	s0,0(sp)
	HTTPClientRef const			me  = (HTTPClientRef) msg->httpContext1;
    e8850834:	9a07b403          	ld	s0,-1632(a5) # 9a0 <memcmp-0xe87ff660>
	msg->next = NULL;
    e8850838:	00053423          	sd	zero,8(a0)
	*me->messageNext = msg;
    e885083c:	51043783          	ld	a5,1296(s0)
    e8850840:	e388                	sd	a0,0(a5)
	 me->messageNext = &msg->next;
    e8850842:	0521                	addi	a0,a0,8
    e8850844:	50a43823          	sd	a0,1296(s0)
	_HTTPClientRunStateMachine( me );
    e8850848:	8522                	mv	a0,s0
    e885084a:	993ff0ef          	jal	ra,e88501dc <_HTTPClientRunStateMachine>
	CFRelease( me );
    e885084e:	8522                	mv	a0,s0
}
    e8850850:	6402                	ld	s0,0(sp)
    e8850852:	60a2                	ld	ra,8(sp)
    e8850854:	0141                	addi	sp,sp,16
	CFRelease( me );
    e8850856:	8f5f606f          	j	e884714a <CFRelease>

00000000e885085a <_HTTPClientWriteHandler>:
{
    e885085a:	1101                	addi	sp,sp,-32
    e885085c:	e422                	sd	s0,8(sp)
    e885085e:	ec06                	sd	ra,24(sp)
    e8850860:	842a                	mv	s0,a0
    e8850862:	e826                	sd	s1,16(sp)
	dispatch_suspend( me->writeSource ); // Disable writability notification until we get another EWOULDBLOCK.
    e8850864:	7d28                	ld	a0,120(a0)
    e8850866:	c44ff0ef          	jal	ra,e884fcaa <dispatch_suspend>
	me->writeSuspended = true;
    e885086a:	4785                	li	a5,1
    e885086c:	08f40023          	sb	a5,128(s0)
	msg = me->messageList;
    e8850870:	50843783          	ld	a5,1288(s0)
	if( msg && ( msg->dataTimeoutSecs > 0 ) && me->timerSource )
    e8850874:	cb9d                	beqz	a5,e88508aa <_HTTPClientWriteHandler+0x50>
    e8850876:	6705                	lui	a4,0x1
    e8850878:	97ba                	add	a5,a5,a4
    e885087a:	9947a583          	lw	a1,-1644(a5)
    e885087e:	02b05663          	blez	a1,e88508aa <_HTTPClientWriteHandler+0x50>
    e8850882:	6444                	ld	s1,136(s0)
    e8850884:	c09d                	beqz	s1,e88508aa <_HTTPClientWriteHandler+0x50>
		dispatch_source_set_timer( me->timerSource, dispatch_time_seconds( msg->dataTimeoutSecs ), 
    e8850886:	3b9ad7b7          	lui	a5,0x3b9ad
    e885088a:	a0078793          	addi	a5,a5,-1536 # 3b9aca00 <memcmp-0xace53600>
    e885088e:	02f585b3          	mul	a1,a1,a5
    e8850892:	4501                	li	a0,0
    e8850894:	ec0fe0ef          	jal	ra,e884ef54 <dispatch_time>
    e8850898:	85aa                	mv	a1,a0
    e885089a:	1dcd66b7          	lui	a3,0x1dcd6
    e885089e:	50068693          	addi	a3,a3,1280 # 1dcd6500 <memcmp-0xcab29b00>
    e88508a2:	567d                	li	a2,-1
    e88508a4:	8526                	mv	a0,s1
    e88508a6:	b22ff0ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
	_HTTPClientRunStateMachine( me );
    e88508aa:	8522                	mv	a0,s0
}
    e88508ac:	6422                	ld	s0,8(sp)
    e88508ae:	60e2                	ld	ra,24(sp)
    e88508b0:	64c2                	ld	s1,16(sp)
    e88508b2:	6105                	addi	sp,sp,32
	_HTTPClientRunStateMachine( me );
    e88508b4:	929ff06f          	j	e88501dc <_HTTPClientRunStateMachine>

00000000e88508b8 <_HTTPClientReadHandler>:
{
    e88508b8:	1101                	addi	sp,sp,-32
    e88508ba:	f891540b          	sdd	s0,s1,(sp),0,4
    e88508be:	ec06                	sd	ra,24(sp)
    e88508c0:	842a                	mv	s0,a0
    e88508c2:	e84a                	sd	s2,16(sp)
	dispatch_suspend( me->readSource ); // Disable readability notification until we get another EWOULDBLOCK.
    e88508c4:	7528                	ld	a0,104(a0)
    e88508c6:	be4ff0ef          	jal	ra,e884fcaa <dispatch_suspend>
	msg = me->messageList;
    e88508ca:	50843483          	ld	s1,1288(s0)
	me->readSuspended = true;
    e88508ce:	4785                	li	a5,1
    e88508d0:	06f40823          	sb	a5,112(s0)
	if( msg && ( msg->dataTimeoutSecs > 0 ) && me->timerSource )
    e88508d4:	cc8d                	beqz	s1,e885090e <_HTTPClientReadHandler+0x56>
    e88508d6:	6785                	lui	a5,0x1
    e88508d8:	97a6                	add	a5,a5,s1
    e88508da:	9947a583          	lw	a1,-1644(a5) # 994 <memcmp-0xe87ff66c>
    e88508de:	02b05863          	blez	a1,e885090e <_HTTPClientReadHandler+0x56>
    e88508e2:	08843903          	ld	s2,136(s0)
    e88508e6:	02090463          	beqz	s2,e885090e <_HTTPClientReadHandler+0x56>
		dispatch_source_set_timer( me->timerSource, dispatch_time_seconds( msg->dataTimeoutSecs ), 
    e88508ea:	3b9ad7b7          	lui	a5,0x3b9ad
    e88508ee:	a0078793          	addi	a5,a5,-1536 # 3b9aca00 <memcmp-0xace53600>
    e88508f2:	02f585b3          	mul	a1,a1,a5
    e88508f6:	4501                	li	a0,0
    e88508f8:	e5cfe0ef          	jal	ra,e884ef54 <dispatch_time>
    e88508fc:	85aa                	mv	a1,a0
    e88508fe:	1dcd66b7          	lui	a3,0x1dcd6
    e8850902:	50068693          	addi	a3,a3,1280 # 1dcd6500 <memcmp-0xcab29b00>
    e8850906:	567d                	li	a2,-1
    e8850908:	854a                	mv	a0,s2
    e885090a:	abeff0ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
	if( ( me->flags & kHTTPClientFlag_Events ) && ( me->state == kHTTPClientStateIdle ) && !msg )
    e885090e:	585c                	lw	a5,52(s0)
    e8850910:	8bc1                	andi	a5,a5,16
    e8850912:	cb81                	beqz	a5,e8850922 <_HTTPClientReadHandler+0x6a>
    e8850914:	05444783          	lbu	a5,84(s0)
    e8850918:	e789                	bnez	a5,e8850922 <_HTTPClientReadHandler+0x6a>
    e885091a:	e481                	bnez	s1,e8850922 <_HTTPClientReadHandler+0x6a>
		me->state = kHTTPClientStatePreparingForEvent;
    e885091c:	479d                	li	a5,7
    e885091e:	04f40a23          	sb	a5,84(s0)
	_HTTPClientRunStateMachine( me );
    e8850922:	8522                	mv	a0,s0
}
    e8850924:	f891440b          	ldd	s0,s1,(sp),0,4
    e8850928:	60e2                	ld	ra,24(sp)
    e885092a:	6942                	ld	s2,16(sp)
    e885092c:	6105                	addi	sp,sp,32
	_HTTPClientRunStateMachine( me );
    e885092e:	8afff06f          	j	e88501dc <_HTTPClientRunStateMachine>

00000000e8850932 <_HTTPClientSendMessageSyncCompletion>:
	dispatch_semaphore_signal( (dispatch_semaphore_t) inMsg->httpContext2 );
    e8850932:	6785                	lui	a5,0x1
    e8850934:	953e                	add	a0,a0,a5
    e8850936:	9a853503          	ld	a0,-1624(a0)
    e885093a:	deafe06f          	j	e884ef24 <dispatch_semaphore_signal>

00000000e885093e <HTTPClientGetTypeID>:
	dispatch_once_f( &gHTTPClientInitOnce, NULL, _HTTPClientGetTypeID );
    e885093e:	00093517          	auipc	a0,0x93
    e8850942:	37250513          	addi	a0,a0,882 # e88e3cb0 <gHTTPClientInitOnce>
    e8850946:	4118                	lw	a4,0(a0)
    e8850948:	4789                	li	a5,2
    e885094a:	02f70363          	beq	a4,a5,e8850970 <HTTPClientGetTypeID+0x32>
{
    e885094e:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gHTTPClientInitOnce, NULL, _HTTPClientGetTypeID );
    e8850950:	fffff617          	auipc	a2,0xfffff
    e8850954:	45260613          	addi	a2,a2,1106 # e884fda2 <_HTTPClientGetTypeID>
    e8850958:	4581                	li	a1,0
{
    e885095a:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gHTTPClientInitOnce, NULL, _HTTPClientGetTypeID );
    e885095c:	d16fe0ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e8850960:	60a2                	ld	ra,8(sp)
    e8850962:	00093797          	auipc	a5,0x93
    e8850966:	35278793          	addi	a5,a5,850 # e88e3cb4 <gHTTPClientTypeID>
    e885096a:	4388                	lw	a0,0(a5)
    e885096c:	0141                	addi	sp,sp,16
    e885096e:	8082                	ret
    e8850970:	00093797          	auipc	a5,0x93
    e8850974:	34478793          	addi	a5,a5,836 # e88e3cb4 <gHTTPClientTypeID>
    e8850978:	4388                	lw	a0,0(a5)
    e885097a:	8082                	ret

00000000e885097c <HTTPClientCreate>:
{
    e885097c:	1101                	addi	sp,sp,-32
    e885097e:	e826                	sd	s1,16(sp)
    e8850980:	ec06                	sd	ra,24(sp)
    e8850982:	e422                	sd	s0,8(sp)
    e8850984:	84aa                	mv	s1,a0
	me = (HTTPClientRef) _CFRuntimeCreateInstance( NULL, HTTPClientGetTypeID(), (CFIndex) extraLen, NULL );
    e8850986:	fb9ff0ef          	jal	ra,e885093e <HTTPClientGetTypeID>
    e885098a:	0005059b          	sext.w	a1,a0
    e885098e:	4681                	li	a3,0
    e8850990:	51000613          	li	a2,1296
    e8850994:	4501                	li	a0,0
    e8850996:	ddff60ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( me, exit, err = kNoMemoryErr );
    e885099a:	c939                	beqz	a0,e88509f0 <HTTPClientCreate+0x74>
    e885099c:	842a                	mv	s0,a0
	memset( ( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );
    e885099e:	51000613          	li	a2,1296
    e88509a2:	4581                	li	a1,0
    e88509a4:	0521                	addi	a0,a0,8
    e88509a6:	1ef2b0ef          	jal	ra,e887c394 <eLIBs_memset>
	me->sock = kInvalidSocketRef;
    e88509aa:	57fd                	li	a5,-1
    e88509ac:	d03c                	sw	a5,96(s0)
	me->queue = dispatch_get_main_queue();
    e88509ae:	bb2ff0ef          	jal	ra,e884fd60 <dispatch_get_main_queue>
    e88509b2:	e408                	sd	a0,8(s0)
	arc_safe_dispatch_retain( me->queue );
    e88509b4:	890fe0ef          	jal	ra,e884ea44 <dispatch_retain>
	me->ucat						= &log_category_from_name( HTTPClientCore );
    e88509b8:	00084797          	auipc	a5,0x84
    e88509bc:	4d878793          	addi	a5,a5,1240 # e88d4e90 <gLogCategory_HTTPClientCore>
    e88509c0:	fc1c                	sd	a5,56(s0)
	me->transportDelegate.read_f	= SocketTransportRead;
    e88509c2:	00005797          	auipc	a5,0x5
    e88509c6:	3f878793          	addi	a5,a5,1016 # e8855dba <SocketTransportRead>
    e88509ca:	4cf43823          	sd	a5,1232(s0)
	me->transportDelegate.writev_f	= SocketTransportWriteV;
    e88509ce:	00005797          	auipc	a5,0x5
    e88509d2:	45278793          	addi	a5,a5,1106 # e8855e20 <SocketTransportWriteV>
    e88509d6:	4cf43c23          	sd	a5,1240(s0)
	me->messageNext = &me->messageList;
    e88509da:	50840793          	addi	a5,s0,1288
    e88509de:	50f43823          	sd	a5,1296(s0)
	err = kNoErr;
    e88509e2:	4501                	li	a0,0
	*outClient = me;
    e88509e4:	e080                	sd	s0,0(s1)
}
    e88509e6:	60e2                	ld	ra,24(sp)
    e88509e8:	6422                	ld	s0,8(sp)
    e88509ea:	64c2                	ld	s1,16(sp)
    e88509ec:	6105                	addi	sp,sp,32
    e88509ee:	8082                	ret
	require_action( me, exit, err = kNoMemoryErr );
    e88509f0:	7579                	lui	a0,0xffffe
    e88509f2:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88509f6:	bfc5                	j	e88509e6 <HTTPClientCreate+0x6a>

00000000e88509f8 <HTTPClientCreateWithSocket>:
{
    e88509f8:	7179                	addi	sp,sp,-48
    e88509fa:	f022                	sd	s0,32(sp)
    e88509fc:	842a                	mv	s0,a0
	err = HTTPClientCreate( &client );
    e88509fe:	0828                	addi	a0,sp,24
{
    e8850a00:	f406                	sd	ra,40(sp)
    e8850a02:	e42e                	sd	a1,8(sp)
	err = HTTPClientCreate( &client );
    e8850a04:	f79ff0ef          	jal	ra,e885097c <HTTPClientCreate>
	require_noerr( err, exit );
    e8850a08:	e509                	bnez	a0,e8850a12 <HTTPClientCreateWithSocket+0x1a>
	client->sock = inSock;
    e8850a0a:	67e2                	ld	a5,24(sp)
    e8850a0c:	65a2                	ld	a1,8(sp)
    e8850a0e:	d3ac                	sw	a1,96(a5)
	*outClient = client;
    e8850a10:	e01c                	sd	a5,0(s0)
}
    e8850a12:	70a2                	ld	ra,40(sp)
    e8850a14:	7402                	ld	s0,32(sp)
    e8850a16:	6145                	addi	sp,sp,48
    e8850a18:	8082                	ret

00000000e8850a1a <HTTPClientInvalidate>:
{
    e8850a1a:	1101                	addi	sp,sp,-32
    e8850a1c:	ec06                	sd	ra,24(sp)
    e8850a1e:	e42a                	sd	a0,8(sp)
	CFRetain( me );
    e8850a20:	f26f60ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( me->queue, me, _HTTPClientInvalidate );
    e8850a24:	65a2                	ld	a1,8(sp)
}
    e8850a26:	60e2                	ld	ra,24(sp)
	dispatch_async_f( me->queue, me, _HTTPClientInvalidate );
    e8850a28:	fffff617          	auipc	a2,0xfffff
    e8850a2c:	56a60613          	addi	a2,a2,1386 # e884ff92 <_HTTPClientInvalidate>
    e8850a30:	6588                	ld	a0,8(a1)
}
    e8850a32:	6105                	addi	sp,sp,32
	dispatch_async_f( me->queue, me, _HTTPClientInvalidate );
    e8850a34:	9ecfe06f          	j	e884ec20 <dispatch_async_f>

00000000e8850a38 <HTTPClientGetPeerAddress>:
{
    e8850a38:	7179                	addi	sp,sp,-48
    e8850a3a:	f406                	sd	ra,40(sp)
	err = getpeername( inClient->sock, (struct sockaddr *) inSockAddr, &len );
    e8850a3c:	5128                	lw	a0,96(a0)
	len = (socklen_t) inMaxLen;
    e8850a3e:	ce32                	sw	a2,28(sp)
	err = getpeername( inClient->sock, (struct sockaddr *) inSockAddr, &len );
    e8850a40:	0870                	addi	a2,sp,28
{
    e8850a42:	e436                	sd	a3,8(sp)
	err = getpeername( inClient->sock, (struct sockaddr *) inSockAddr, &len );
    e8850a44:	66c350ef          	jal	ra,e88860b0 <lwip_getpeername>
	err = map_socket_noerr_errno( inClient->sock, err );
    e8850a48:	66a2                	ld	a3,8(sp)
    e8850a4a:	cd09                	beqz	a0,e8850a64 <HTTPClientGetPeerAddress+0x2c>
    e8850a4c:	00094797          	auipc	a5,0x94
    e8850a50:	bdc78793          	addi	a5,a5,-1060 # e88e4628 <lwip_errno>
    e8850a54:	4388                	lw	a0,0(a5)
    e8850a56:	e501                	bnez	a0,e8850a5e <HTTPClientGetPeerAddress+0x26>
    e8850a58:	7579                	lui	a0,0xffffe
    e8850a5a:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
}
    e8850a5e:	70a2                	ld	ra,40(sp)
    e8850a60:	6145                	addi	sp,sp,48
    e8850a62:	8082                	ret
	if( outLen ) *outLen = len;
    e8850a64:	deed                	beqz	a3,e8850a5e <HTTPClientGetPeerAddress+0x26>
    e8850a66:	01c16783          	lwu	a5,28(sp)
    e8850a6a:	e29c                	sd	a5,0(a3)
    e8850a6c:	bfcd                	j	e8850a5e <HTTPClientGetPeerAddress+0x26>

00000000e8850a6e <HTTPClientSetDestination>:
{
    e8850a6e:	1101                	addi	sp,sp,-32
    e8850a70:	f891540b          	sdd	s0,s1,(sp),0,4
    e8850a74:	842a                	mv	s0,a0
	tempStr = strdup( inDestination );
    e8850a76:	852e                	mv	a0,a1
{
    e8850a78:	e84a                	sd	s2,16(sp)
    e8850a7a:	ec06                	sd	ra,24(sp)
    e8850a7c:	8932                	mv	s2,a2
	tempStr = strdup( inDestination );
    e8850a7e:	58b0e0ef          	jal	ra,e885f808 <strdup>
	require_action( tempStr, exit, err = kNoMemoryErr );
    e8850a82:	c105                	beqz	a0,e8850aa2 <HTTPClientSetDestination+0x34>
    e8850a84:	84aa                	mv	s1,a0
	if( me->destination ) free( me->destination );
    e8850a86:	7408                	ld	a0,40(s0)
    e8850a88:	c119                	beqz	a0,e8850a8e <HTTPClientSetDestination+0x20>
    e8850a8a:	0772b0ef          	jal	ra,e887c300 <eLIBs_free>
	me->destination = tempStr;
    e8850a8e:	f404                	sd	s1,40(s0)
	me->defaultPort = inDefaultPort;
    e8850a90:	03242823          	sw	s2,48(s0)
	err = kNoErr;
    e8850a94:	4501                	li	a0,0
}
    e8850a96:	60e2                	ld	ra,24(sp)
    e8850a98:	f891440b          	ldd	s0,s1,(sp),0,4
    e8850a9c:	6942                	ld	s2,16(sp)
    e8850a9e:	6105                	addi	sp,sp,32
    e8850aa0:	8082                	ret
	require_action( tempStr, exit, err = kNoMemoryErr );
    e8850aa2:	7579                	lui	a0,0xffffe
    e8850aa4:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8850aa8:	b7fd                	j	e8850a96 <HTTPClientSetDestination+0x28>

00000000e8850aaa <HTTPClientSetDispatchQueue>:
{
    e8850aaa:	1101                	addi	sp,sp,-32
    e8850aac:	e422                	sd	s0,8(sp)
    e8850aae:	e826                	sd	s1,16(sp)
    e8850ab0:	ec06                	sd	ra,24(sp)
    e8850ab2:	84aa                	mv	s1,a0
    e8850ab4:	842e                	mv	s0,a1
	ReplaceDispatchQueue( &me->queue, inQueue );
    e8850ab6:	e581                	bnez	a1,e8850abe <HTTPClientSetDispatchQueue+0x14>
    e8850ab8:	aa8ff0ef          	jal	ra,e884fd60 <dispatch_get_main_queue>
    e8850abc:	842a                	mv	s0,a0
    e8850abe:	8522                	mv	a0,s0
    e8850ac0:	f85fd0ef          	jal	ra,e884ea44 <dispatch_retain>
    e8850ac4:	6488                	ld	a0,8(s1)
    e8850ac6:	c119                	beqz	a0,e8850acc <HTTPClientSetDispatchQueue+0x22>
    e8850ac8:	f89fd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8850acc:	e480                	sd	s0,8(s1)
}
    e8850ace:	60e2                	ld	ra,24(sp)
    e8850ad0:	6422                	ld	s0,8(sp)
    e8850ad2:	64c2                	ld	s1,16(sp)
    e8850ad4:	6105                	addi	sp,sp,32
    e8850ad6:	8082                	ret

00000000e8850ad8 <HTTPClientSetFlags>:
	me->flags = ( me->flags & ~inMask ) | ( inFlags & inMask );
    e8850ad8:	595c                	lw	a5,52(a0)
    e8850ada:	8dbd                	xor	a1,a1,a5
    e8850adc:	8e6d                	and	a2,a2,a1
    e8850ade:	8fb1                	xor	a5,a5,a2
    e8850ae0:	d95c                	sw	a5,52(a0)
}
    e8850ae2:	8082                	ret

00000000e8850ae4 <HTTPClientSetConnectionLogging>:
	me->connectionUcat = inLogCategory;
    e8850ae4:	e12c                	sd	a1,64(a0)
}
    e8850ae6:	8082                	ret

00000000e8850ae8 <HTTPClientSetLogging>:
	me->ucat = inLogCategory;
    e8850ae8:	fd0c                	sd	a1,56(a0)
}
    e8850aea:	8082                	ret

00000000e8850aec <HTTPClientSetTimeout>:
	me->timeoutSecs = inSecs;
    e8850aec:	c92c                	sw	a1,80(a0)
}
    e8850aee:	8082                	ret

00000000e8850af0 <HTTPClientSetTransportDelegate>:
{
    e8850af0:	1101                	addi	sp,sp,-32
    e8850af2:	e822                	sd	s0,16(sp)
    e8850af4:	ec06                	sd	ra,24(sp)
	if( me->transportDelegate.finalize_f ) me->transportDelegate.finalize_f( me->transportDelegate.context );
    e8850af6:	4c853783          	ld	a5,1224(a0)
{
    e8850afa:	842a                	mv	s0,a0
	if( me->transportDelegate.finalize_f ) me->transportDelegate.finalize_f( me->transportDelegate.context );
    e8850afc:	c791                	beqz	a5,e8850b08 <HTTPClientSetTransportDelegate+0x18>
    e8850afe:	4b853503          	ld	a0,1208(a0)
    e8850b02:	e42e                	sd	a1,8(sp)
    e8850b04:	9782                	jalr	a5
    e8850b06:	65a2                	ld	a1,8(sp)
	me->transportDelegate = *inDelegate;
    e8850b08:	02800613          	li	a2,40
    e8850b0c:	4b840513          	addi	a0,s0,1208
    e8850b10:	d58af0ef          	jal	ra,e8800068 <memcpy>
	me->hasTransportDelegate = true;
    e8850b14:	4785                	li	a5,1
	if( IsValidSocket( me->sock ) && me->transportDelegate.initialize_f )
    e8850b16:	5028                	lw	a0,96(s0)
	me->hasTransportDelegate = true;
    e8850b18:	4ef40023          	sb	a5,1248(s0)
	if( IsValidSocket( me->sock ) && me->transportDelegate.initialize_f )
    e8850b1c:	00054c63          	bltz	a0,e8850b34 <HTTPClientSetTransportDelegate+0x44>
    e8850b20:	4c043303          	ld	t1,1216(s0)
    e8850b24:	00030863          	beqz	t1,e8850b34 <HTTPClientSetTransportDelegate+0x44>
		me->transportDelegate.initialize_f( me->sock, me->transportDelegate.context );
    e8850b28:	4b843583          	ld	a1,1208(s0)
}
    e8850b2c:	6442                	ld	s0,16(sp)
    e8850b2e:	60e2                	ld	ra,24(sp)
    e8850b30:	6105                	addi	sp,sp,32
		me->transportDelegate.initialize_f( me->sock, me->transportDelegate.context );
    e8850b32:	8302                	jr	t1
}
    e8850b34:	60e2                	ld	ra,24(sp)
    e8850b36:	6442                	ld	s0,16(sp)
    e8850b38:	6105                	addi	sp,sp,32
    e8850b3a:	8082                	ret

00000000e8850b3c <HTTPClientSendMessage>:
{
    e8850b3c:	1101                	addi	sp,sp,-32
    e8850b3e:	f891540b          	sdd	s0,s1,(sp),0,4
    e8850b42:	ec06                	sd	ra,24(sp)
    e8850b44:	e84a                	sd	s2,16(sp)
	if( inMsg->header.len > 0 )
    e8850b46:	4105b783          	ld	a5,1040(a1)
{
    e8850b4a:	84aa                	mv	s1,a0
    e8850b4c:	842e                	mv	s0,a1
	if( inMsg->header.len > 0 )
    e8850b4e:	cfc9                	beqz	a5,e8850be8 <HTTPClientSendMessage+0xac>
		if( inMsg->closeAfterRequest )
    e8850b50:	5115c783          	lbu	a5,1297(a1)
    e8850b54:	01058913          	addi	s2,a1,16
    e8850b58:	cf81                	beqz	a5,e8850b70 <HTTPClientSendMessage+0x34>
			HTTPHeader_AddFieldF( &inMsg->header, kHTTPHeader_Connection, "close" );
    e8850b5a:	00070617          	auipc	a2,0x70
    e8850b5e:	0c660613          	addi	a2,a2,198 # e88c0c20 <__PRETTY_FUNCTION__.9551+0x118>
    e8850b62:	00070597          	auipc	a1,0x70
    e8850b66:	0c658593          	addi	a1,a1,198 # e88c0c28 <__PRETTY_FUNCTION__.9551+0x120>
    e8850b6a:	854a                	mv	a0,s2
    e8850b6c:	3ae010ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
		err = HTTPHeader_Commit( &inMsg->header );
    e8850b70:	854a                	mv	a0,s2
    e8850b72:	2e2010ef          	jal	ra,e8851e54 <HTTPHeader_Commit>
		require_noerr( err, exit );
    e8850b76:	e13d                	bnez	a0,e8850bdc <HTTPClientSendMessage+0xa0>
		inMsg->iov[ 0 ].iov_base = inMsg->header.buf;
    e8850b78:	6785                	lui	a5,0x1
    e8850b7a:	97a2                	add	a5,a5,s0
    e8850b7c:	9527bc23          	sd	s2,-1704(a5) # 958 <memcmp-0xe87ff6a8>
		inMsg->iov[ 0 ].iov_len  = inMsg->header.len;
    e8850b80:	41043703          	ld	a4,1040(s0)
    e8850b84:	96e7b023          	sd	a4,-1696(a5)
		inMsg->ion = 1;
    e8850b88:	4705                	li	a4,1
    e8850b8a:	98e7a023          	sw	a4,-1664(a5)
		if( inMsg->bodyLen > 0 )
    e8850b8e:	52043703          	ld	a4,1312(s0)
    e8850b92:	cb11                	beqz	a4,e8850ba6 <HTTPClientSendMessage+0x6a>
			inMsg->iov[ 1 ].iov_base = (char *) inMsg->bodyPtr;
    e8850b94:	51843683          	ld	a3,1304(s0)
			inMsg->iov[ 1 ].iov_len  = inMsg->bodyLen;
    e8850b98:	96e7b823          	sd	a4,-1680(a5)
			inMsg->ion = 2;
    e8850b9c:	4709                	li	a4,2
			inMsg->iov[ 1 ].iov_base = (char *) inMsg->bodyPtr;
    e8850b9e:	96d7b423          	sd	a3,-1688(a5)
			inMsg->ion = 2;
    e8850ba2:	98e7a023          	sw	a4,-1664(a5)
		inMsg->iop = inMsg->iov;
    e8850ba6:	6785                	lui	a5,0x1
    e8850ba8:	00f40733          	add	a4,s0,a5
    e8850bac:	95878793          	addi	a5,a5,-1704 # 958 <memcmp-0xe87ff6a8>
    e8850bb0:	97a2                	add	a5,a5,s0
    e8850bb2:	96f73c23          	sd	a5,-1672(a4) # 978 <memcmp-0xe87ff688>
	CFRetain( inMsg );
    e8850bb6:	8522                	mv	a0,s0
    e8850bb8:	d8ef60ef          	jal	ra,e8847146 <CFRetain>
	CFRetain( me );
    e8850bbc:	8526                	mv	a0,s1
    e8850bbe:	d88f60ef          	jal	ra,e8847146 <CFRetain>
	inMsg->httpContext1 = me;
    e8850bc2:	6785                	lui	a5,0x1
    e8850bc4:	97a2                	add	a5,a5,s0
    e8850bc6:	9a97b023          	sd	s1,-1632(a5) # 9a0 <memcmp-0xe87ff660>
	dispatch_async_f( me->queue, inMsg, _HTTPClientSendMessage );
    e8850bca:	6488                	ld	a0,8(s1)
    e8850bcc:	00000617          	auipc	a2,0x0
    e8850bd0:	c5e60613          	addi	a2,a2,-930 # e885082a <_HTTPClientSendMessage>
    e8850bd4:	85a2                	mv	a1,s0
    e8850bd6:	84afe0ef          	jal	ra,e884ec20 <dispatch_async_f>
	err = kNoErr;
    e8850bda:	4501                	li	a0,0
}
    e8850bdc:	60e2                	ld	ra,24(sp)
    e8850bde:	f891440b          	ldd	s0,s1,(sp),0,4
    e8850be2:	6942                	ld	s2,16(sp)
    e8850be4:	6105                	addi	sp,sp,32
    e8850be6:	8082                	ret
		inMsg->ion = 0;
    e8850be8:	6785                	lui	a5,0x1
    e8850bea:	97ae                	add	a5,a5,a1
    e8850bec:	9807a023          	sw	zero,-1664(a5) # 980 <memcmp-0xe87ff680>
    e8850bf0:	b7d9                	j	e8850bb6 <HTTPClientSendMessage+0x7a>

00000000e8850bf2 <HTTPClientSendMessageSync>:
{
    e8850bf2:	7179                	addi	sp,sp,-48
    e8850bf4:	e422                	sd	s0,8(sp)
    e8850bf6:	842a                	mv	s0,a0
	sem = dispatch_semaphore_create( 0 );
    e8850bf8:	4501                	li	a0,0
{
    e8850bfa:	f04e                	sd	s3,32(sp)
    e8850bfc:	f406                	sd	ra,40(sp)
    e8850bfe:	e826                	sd	s1,16(sp)
    e8850c00:	ec4a                	sd	s2,24(sp)
    e8850c02:	89ae                	mv	s3,a1
	sem = dispatch_semaphore_create( 0 );
    e8850c04:	ac4fe0ef          	jal	ra,e884eec8 <dispatch_semaphore_create>
	require_action( sem, exit, err = kNoMemoryErr );
    e8850c08:	c931                	beqz	a0,e8850c5c <HTTPClientSendMessageSync+0x6a>
	inMsg->httpContext2 = sem;
    e8850c0a:	6485                	lui	s1,0x1
    e8850c0c:	94ce                	add	s1,s1,s3
	inMsg->completion   = _HTTPClientSendMessageSyncCompletion;
    e8850c0e:	00000797          	auipc	a5,0x0
    e8850c12:	d2478793          	addi	a5,a5,-732 # e8850932 <_HTTPClientSendMessageSyncCompletion>
	inMsg->httpContext2 = sem;
    e8850c16:	9aa4b423          	sd	a0,-1624(s1) # 9a8 <memcmp-0xe87ff658>
    e8850c1a:	892a                	mv	s2,a0
	inMsg->completion   = _HTTPClientSendMessageSyncCompletion;
    e8850c1c:	9cf4b823          	sd	a5,-1584(s1)
	err = HTTPClientSendMessage( me, inMsg );
    e8850c20:	8522                	mv	a0,s0
    e8850c22:	85ce                	mv	a1,s3
    e8850c24:	f19ff0ef          	jal	ra,e8850b3c <HTTPClientSendMessage>
    e8850c28:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8850c2a:	e50d                	bnez	a0,e8850c54 <HTTPClientSendMessageSync+0x62>
	dispatch_semaphore_wait( sem, DISPATCH_TIME_FOREVER );
    e8850c2c:	55fd                	li	a1,-1
    e8850c2e:	854a                	mv	a0,s2
    e8850c30:	c1afe0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
	err = inMsg->status;
    e8850c34:	9984a403          	lw	s0,-1640(s1)
	if( !err && !IsHTTPStatusCode_Success( inMsg->header.statusCode ) )
    e8850c38:	ec11                	bnez	s0,e8850c54 <HTTPClientSendMessageSync+0x62>
    e8850c3a:	4e09a783          	lw	a5,1248(s3)
    e8850c3e:	06300713          	li	a4,99
    e8850c42:	f387869b          	addiw	a3,a5,-200
    e8850c46:	00d77763          	bgeu	a4,a3,e8850c54 <HTTPClientSendMessageSync+0x62>
		err = HTTPStatusToOSStatus( inMsg->header.statusCode );
    e8850c4a:	00031437          	lui	s0,0x31
    e8850c4e:	d404041b          	addiw	s0,s0,-704
    e8850c52:	9c3d                	addw	s0,s0,a5
	if( sem ) arc_safe_dispatch_release( sem );
    e8850c54:	854a                	mv	a0,s2
    e8850c56:	dfbfd0ef          	jal	ra,e884ea50 <dispatch_release>
	return( err );
    e8850c5a:	a021                	j	e8850c62 <HTTPClientSendMessageSync+0x70>
	require_action( sem, exit, err = kNoMemoryErr );
    e8850c5c:	7479                	lui	s0,0xffffe
    e8850c5e:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
}
    e8850c62:	8522                	mv	a0,s0
    e8850c64:	70a2                	ld	ra,40(sp)
    e8850c66:	6422                	ld	s0,8(sp)
    e8850c68:	64c2                	ld	s1,16(sp)
    e8850c6a:	6962                	ld	s2,24(sp)
    e8850c6c:	7982                	ld	s3,32(sp)
    e8850c6e:	6145                	addi	sp,sp,48
    e8850c70:	8082                	ret

00000000e8850c72 <_HTTPMessageGetTypeID>:
	dispatch_once_f( &gHTTPMessageInitOnce, NULL, _HTTPMessageGetTypeID );
	return( gHTTPMessageTypeID );
}

static void _HTTPMessageGetTypeID( void *inContext )
{
    e8850c72:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gHTTPMessageTypeID = _CFRuntimeRegisterClass( &kHTTPMessageClass );
    e8850c74:	00070517          	auipc	a0,0x70
    e8850c78:	23c50513          	addi	a0,a0,572 # e88c0eb0 <kHTTPMessageClass>
{
    e8850c7c:	e406                	sd	ra,8(sp)
	gHTTPMessageTypeID = _CFRuntimeRegisterClass( &kHTTPMessageClass );
    e8850c7e:	ad1f60ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8850c82:	00093797          	auipc	a5,0x93
    e8850c86:	02a7ad23          	sw	a0,58(a5) # e88e3cbc <gHTTPMessageTypeID>
	check( gHTTPMessageTypeID != _kCFRuntimeNotATypeID );
}
    e8850c8a:	60a2                	ld	ra,8(sp)
    e8850c8c:	0141                	addi	sp,sp,16
    e8850c8e:	8082                	ret

00000000e8850c90 <HTTPMessageGetTypeID>:
	dispatch_once_f( &gHTTPMessageInitOnce, NULL, _HTTPMessageGetTypeID );
    e8850c90:	00093517          	auipc	a0,0x93
    e8850c94:	02850513          	addi	a0,a0,40 # e88e3cb8 <gHTTPMessageInitOnce>
    e8850c98:	4118                	lw	a4,0(a0)
    e8850c9a:	4789                	li	a5,2
    e8850c9c:	02f70363          	beq	a4,a5,e8850cc2 <HTTPMessageGetTypeID+0x32>
{
    e8850ca0:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gHTTPMessageInitOnce, NULL, _HTTPMessageGetTypeID );
    e8850ca2:	00000617          	auipc	a2,0x0
    e8850ca6:	fd060613          	addi	a2,a2,-48 # e8850c72 <_HTTPMessageGetTypeID>
    e8850caa:	4581                	li	a1,0
{
    e8850cac:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gHTTPMessageInitOnce, NULL, _HTTPMessageGetTypeID );
    e8850cae:	9c4fe0ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e8850cb2:	60a2                	ld	ra,8(sp)
    e8850cb4:	00093797          	auipc	a5,0x93
    e8850cb8:	00878793          	addi	a5,a5,8 # e88e3cbc <gHTTPMessageTypeID>
    e8850cbc:	4388                	lw	a0,0(a5)
    e8850cbe:	0141                	addi	sp,sp,16
    e8850cc0:	8082                	ret
    e8850cc2:	00093797          	auipc	a5,0x93
    e8850cc6:	ffa78793          	addi	a5,a5,-6 # e88e3cbc <gHTTPMessageTypeID>
    e8850cca:	4388                	lw	a0,0(a5)
    e8850ccc:	8082                	ret

00000000e8850cce <HTTPMessageReset>:
//===========================================================================================================================
//	HTTPMessageReset
//===========================================================================================================================

void	HTTPMessageReset( HTTPMessageRef inMsg )
{
    e8850cce:	1101                	addi	sp,sp,-32
    e8850cd0:	e422                	sd	s0,8(sp)
    e8850cd2:	e826                	sd	s1,16(sp)
    e8850cd4:	ec06                	sd	ra,24(sp)
	inMsg->header.len	= 0;
	inMsg->headerRead	= false;
	inMsg->bodyPtr		= inMsg->smallBodyBuf;
	inMsg->bodyLen		= 0;
	inMsg->bodyOffset	= 0;
	ForgetMem( &inMsg->bigBodyBuf );
    e8850cd6:	6485                	lui	s1,0x1
	inMsg->bodyPtr		= inMsg->smallBodyBuf;
    e8850cd8:	53850793          	addi	a5,a0,1336
	ForgetMem( &inMsg->bigBodyBuf );
    e8850cdc:	94aa                	add	s1,s1,a0
{
    e8850cde:	842a                	mv	s0,a0
	inMsg->header.len	= 0;
    e8850ce0:	40053823          	sd	zero,1040(a0)
	inMsg->headerRead	= false;
    e8850ce4:	50050823          	sb	zero,1296(a0)
	inMsg->bodyPtr		= inMsg->smallBodyBuf;
    e8850ce8:	50f53c23          	sd	a5,1304(a0)
	inMsg->bodyLen		= 0;
    e8850cec:	52053023          	sd	zero,1312(a0)
	inMsg->bodyOffset	= 0;
    e8850cf0:	52053823          	sd	zero,1328(a0)
	ForgetMem( &inMsg->bigBodyBuf );
    e8850cf4:	9384b503          	ld	a0,-1736(s1) # 938 <memcmp-0xe87ff6c8>
    e8850cf8:	c509                	beqz	a0,e8850d02 <HTTPMessageReset+0x34>
    e8850cfa:	6062b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8850cfe:	9204bc23          	sd	zero,-1736(s1)
	inMsg->timeoutNanos	= kHTTPNoTimeout;
    e8850d02:	6785                	lui	a5,0x1
    e8850d04:	943e                	add	s0,s0,a5
    e8850d06:	57fd                	li	a5,-1
    e8850d08:	98f43423          	sd	a5,-1656(s0)
}
    e8850d0c:	60e2                	ld	ra,24(sp)
    e8850d0e:	6422                	ld	s0,8(sp)
    e8850d10:	64c2                	ld	s1,16(sp)
    e8850d12:	6105                	addi	sp,sp,32
    e8850d14:	8082                	ret

00000000e8850d16 <_HTTPMessageFinalize>:
{
    e8850d16:	1101                	addi	sp,sp,-32
    e8850d18:	e422                	sd	s0,8(sp)
    e8850d1a:	e826                	sd	s1,16(sp)
    e8850d1c:	842a                	mv	s0,a0
    e8850d1e:	ec06                	sd	ra,24(sp)
	ForgetMem( &me->requestHeader );
    e8850d20:	6485                	lui	s1,0x1
	HTTPMessageReset( me );
    e8850d22:	fadff0ef          	jal	ra,e8850cce <HTTPMessageReset>
	ForgetMem( &me->requestHeader );
    e8850d26:	94a2                	add	s1,s1,s0
    e8850d28:	9404b503          	ld	a0,-1728(s1) # 940 <memcmp-0xe87ff6c0>
    e8850d2c:	c509                	beqz	a0,e8850d36 <_HTTPMessageFinalize+0x20>
    e8850d2e:	5d22b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8850d32:	9404b023          	sd	zero,-1728(s1)
	ForgetPtrLen( &me->requestBodyPtr, &me->requestBodyLen );
    e8850d36:	6485                	lui	s1,0x1
    e8850d38:	94a2                	add	s1,s1,s0
    e8850d3a:	9484b503          	ld	a0,-1720(s1) # 948 <memcmp-0xe87ff6b8>
    e8850d3e:	c509                	beqz	a0,e8850d48 <_HTTPMessageFinalize+0x32>
    e8850d40:	5c02b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8850d44:	9404b423          	sd	zero,-1720(s1)
    e8850d48:	6785                	lui	a5,0x1
    e8850d4a:	943e                	add	s0,s0,a5
    e8850d4c:	94043823          	sd	zero,-1712(s0)
}
    e8850d50:	60e2                	ld	ra,24(sp)
    e8850d52:	6422                	ld	s0,8(sp)
    e8850d54:	64c2                	ld	s1,16(sp)
    e8850d56:	6105                	addi	sp,sp,32
    e8850d58:	8082                	ret

00000000e8850d5a <HTTPMessageCreate>:
{
    e8850d5a:	1101                	addi	sp,sp,-32
    e8850d5c:	e84a                	sd	s2,16(sp)
    e8850d5e:	f891540b          	sdd	s0,s1,(sp),0,4
    e8850d62:	ec06                	sd	ra,24(sp)
    e8850d64:	892a                	mv	s2,a0
	me = (HTTPMessageRef) _CFRuntimeCreateInstance( NULL, HTTPMessageGetTypeID(), (CFIndex) extraLen, NULL );
    e8850d66:	f2bff0ef          	jal	ra,e8850c90 <HTTPMessageGetTypeID>
    e8850d6a:	6485                	lui	s1,0x1
    e8850d6c:	0005059b          	sext.w	a1,a0
    e8850d70:	4681                	li	a3,0
    e8850d72:	9d048613          	addi	a2,s1,-1584 # 9d0 <memcmp-0xe87ff630>
    e8850d76:	4501                	li	a0,0
    e8850d78:	9fdf60ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( me, exit, err = kNoMemoryErr );
    e8850d7c:	c915                	beqz	a0,e8850db0 <HTTPMessageCreate+0x56>
    e8850d7e:	842a                	mv	s0,a0
	memset(( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );
    e8850d80:	9d048613          	addi	a2,s1,-1584
    e8850d84:	4581                	li	a1,0
    e8850d86:	0521                	addi	a0,a0,8
    e8850d88:	60c2b0ef          	jal	ra,e887c394 <eLIBs_memset>
	me->maxBodyLen = kHTTPDefaultMaxBodyLen;
    e8850d8c:	00f427b7          	lui	a5,0xf42
    e8850d90:	40078793          	addi	a5,a5,1024 # f42400 <memcmp-0xe78bdc00>
	HTTPMessageReset( me );
    e8850d94:	8522                	mv	a0,s0
	me->maxBodyLen = kHTTPDefaultMaxBodyLen;
    e8850d96:	52f43423          	sd	a5,1320(s0)
	HTTPMessageReset( me );
    e8850d9a:	f35ff0ef          	jal	ra,e8850cce <HTTPMessageReset>
	*outMessage = me;
    e8850d9e:	00893023          	sd	s0,0(s2)
	err = kNoErr;
    e8850da2:	4501                	li	a0,0
}
    e8850da4:	60e2                	ld	ra,24(sp)
    e8850da6:	f891440b          	ldd	s0,s1,(sp),0,4
    e8850daa:	6942                	ld	s2,16(sp)
    e8850dac:	6105                	addi	sp,sp,32
    e8850dae:	8082                	ret
	require_action( me, exit, err = kNoMemoryErr );
    e8850db0:	7579                	lui	a0,0xffffe
    e8850db2:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8850db6:	b7fd                	j	e8850da4 <HTTPMessageCreate+0x4a>

00000000e8850db8 <HTTPMessageWriteMessage>:

OSStatus	HTTPMessageWriteMessage( HTTPMessageRef inMsg, NetTransportWriteV_f inWriteV_f, void *inWriteV_ctx )
{
	OSStatus		err;
	
	err = inWriteV_f( &inMsg->iop, &inMsg->ion, inWriteV_ctx );
    e8850db8:	6785                	lui	a5,0x1
{
    e8850dba:	832e                	mv	t1,a1
	err = inWriteV_f( &inMsg->iop, &inMsg->ion, inWriteV_ctx );
    e8850dbc:	98078593          	addi	a1,a5,-1664 # 980 <memcmp-0xe87ff680>
    e8850dc0:	97878793          	addi	a5,a5,-1672
    e8850dc4:	95aa                	add	a1,a1,a0
    e8850dc6:	953e                	add	a0,a0,a5
    e8850dc8:	8302                	jr	t1

00000000e8850dca <HTTPMessageSetBodyPtr>:
//===========================================================================================================================
//	HTTPMessageSetBodyPtr
//===========================================================================================================================

OSStatus	HTTPMessageSetBodyPtr( HTTPMessageRef inMsg, const char *inContentType, const void *inData, size_t inLen )
{
    e8850dca:	7139                	addi	sp,sp,-64
    e8850dcc:	fc06                	sd	ra,56(sp)
    e8850dce:	ec22                	sd	s0,24(sp)
    e8850dd0:	f026                	sd	s1,32(sp)
    e8850dd2:	f44a                	sd	s2,40(sp)
    e8850dd4:	f84e                	sd	s3,48(sp)
	OSStatus		err;
	
	err = inMsg->header.firstErr;
    e8850dd6:	50c52983          	lw	s3,1292(a0)
	require_noerr( err, exit );
    e8850dda:	04099b63          	bnez	s3,e8850e30 <HTTPMessageSetBodyPtr+0x66>
	
	ForgetMem( &inMsg->bigBodyBuf );
    e8850dde:	6785                	lui	a5,0x1
    e8850de0:	97aa                	add	a5,a5,a0
    e8850de2:	842a                	mv	s0,a0
    e8850de4:	9387b503          	ld	a0,-1736(a5) # 938 <memcmp-0xe87ff6c8>
    e8850de8:	8932                	mv	s2,a2
    e8850dea:	84ae                	mv	s1,a1
    e8850dec:	c509                	beqz	a0,e8850df6 <HTTPMessageSetBodyPtr+0x2c>
    e8850dee:	e436                	sd	a3,8(sp)
    e8850df0:	5102b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8850df4:	66a2                	ld	a3,8(sp)
	inMsg->bigBodyBuf = (uint8_t*)inData;
    e8850df6:	6785                	lui	a5,0x1
    e8850df8:	97a2                	add	a5,a5,s0
    e8850dfa:	9327bc23          	sd	s2,-1736(a5) # 938 <memcmp-0xe87ff6c8>
	inMsg->bodyPtr = inMsg->bigBodyBuf;
	inMsg->bodyLen = inLen;
	
	HTTPHeader_AddFieldF( &inMsg->header, kHTTPHeader_ContentLength, "%zu", inLen );
    e8850dfe:	0441                	addi	s0,s0,16
	inMsg->bodyPtr = inMsg->bigBodyBuf;
    e8850e00:	51243423          	sd	s2,1288(s0)
	inMsg->bodyLen = inLen;
    e8850e04:	50d43823          	sd	a3,1296(s0)
	HTTPHeader_AddFieldF( &inMsg->header, kHTTPHeader_ContentLength, "%zu", inLen );
    e8850e08:	0007a617          	auipc	a2,0x7a
    e8850e0c:	28860613          	addi	a2,a2,648 # e88cb090 <kAirPlayReceiverServerClass+0x1698>
    e8850e10:	00070597          	auipc	a1,0x70
    e8850e14:	08058593          	addi	a1,a1,128 # e88c0e90 <kHTTPClientClass+0x78>
    e8850e18:	8522                	mv	a0,s0
    e8850e1a:	100010ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
	if( inContentType ) HTTPHeader_AddField( &inMsg->header, kHTTPHeader_ContentType, inContentType );
    e8850e1e:	c889                	beqz	s1,e8850e30 <HTTPMessageSetBodyPtr+0x66>
    e8850e20:	8626                	mv	a2,s1
    e8850e22:	00070597          	auipc	a1,0x70
    e8850e26:	07e58593          	addi	a1,a1,126 # e88c0ea0 <kHTTPClientClass+0x88>
    e8850e2a:	8522                	mv	a0,s0
    e8850e2c:	074010ef          	jal	ra,e8851ea0 <HTTPHeader_AddField>
	
exit:
	return( err );
}
    e8850e30:	70e2                	ld	ra,56(sp)
    e8850e32:	6462                	ld	s0,24(sp)
    e8850e34:	854e                	mv	a0,s3
    e8850e36:	7482                	ld	s1,32(sp)
    e8850e38:	7922                	ld	s2,40(sp)
    e8850e3a:	79c2                	ld	s3,48(sp)
    e8850e3c:	6121                	addi	sp,sp,64
    e8850e3e:	8082                	ret

00000000e8850e40 <HTTPMessageSetBodyLength>:
//===========================================================================================================================
//	HTTPMessageSetBodyLength
//===========================================================================================================================

OSStatus	HTTPMessageSetBodyLength( HTTPMessageRef inMsg, size_t inLen )
{
    e8850e40:	1101                	addi	sp,sp,-32
    e8850e42:	f891540b          	sdd	s0,s1,(sp),0,4
	OSStatus		err;
	
	ForgetMem( &inMsg->bigBodyBuf );
    e8850e46:	6485                	lui	s1,0x1
    e8850e48:	94aa                	add	s1,s1,a0
{
    e8850e4a:	e84a                	sd	s2,16(sp)
    e8850e4c:	ec06                	sd	ra,24(sp)
    e8850e4e:	842a                	mv	s0,a0
	ForgetMem( &inMsg->bigBodyBuf );
    e8850e50:	9384b503          	ld	a0,-1736(s1) # 938 <memcmp-0xe87ff6c8>
{
    e8850e54:	892e                	mv	s2,a1
	ForgetMem( &inMsg->bigBodyBuf );
    e8850e56:	c509                	beqz	a0,e8850e60 <HTTPMessageSetBodyLength+0x20>
    e8850e58:	4a82b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8850e5c:	9204bc23          	sd	zero,-1736(s1)
	if( inLen <= sizeof( inMsg->smallBodyBuf ) )
    e8850e60:	40000793          	li	a5,1024
    e8850e64:	0127ef63          	bltu	a5,s2,e8850e82 <HTTPMessageSetBodyLength+0x42>
	{
		inMsg->bodyPtr = inMsg->smallBodyBuf;
    e8850e68:	53840793          	addi	a5,s0,1336
    e8850e6c:	50f43c23          	sd	a5,1304(s0)
	{
		inMsg->bigBodyBuf = (uint8_t *) malloc( inLen );
		require_action( inMsg->bigBodyBuf, exit, err = kNoMemoryErr );
		inMsg->bodyPtr = inMsg->bigBodyBuf;
	}
	inMsg->bodyLen = inLen;
    e8850e70:	53243023          	sd	s2,1312(s0)
	err = kNoErr;
    e8850e74:	4501                	li	a0,0
	
exit:
	return( err );
}
    e8850e76:	60e2                	ld	ra,24(sp)
    e8850e78:	f891440b          	ldd	s0,s1,(sp),0,4
    e8850e7c:	6942                	ld	s2,16(sp)
    e8850e7e:	6105                	addi	sp,sp,32
    e8850e80:	8082                	ret
		inMsg->bigBodyBuf = (uint8_t *) malloc( inLen );
    e8850e82:	854a                	mv	a0,s2
    e8850e84:	1cb2a0ef          	jal	ra,e887b84e <my_malloc>
    e8850e88:	6785                	lui	a5,0x1
    e8850e8a:	97a2                	add	a5,a5,s0
    e8850e8c:	92a7bc23          	sd	a0,-1736(a5) # 938 <memcmp-0xe87ff6c8>
		require_action( inMsg->bigBodyBuf, exit, err = kNoMemoryErr );
    e8850e90:	c501                	beqz	a0,e8850e98 <HTTPMessageSetBodyLength+0x58>
		inMsg->bodyPtr = inMsg->bigBodyBuf;
    e8850e92:	50a43c23          	sd	a0,1304(s0)
    e8850e96:	bfe9                	j	e8850e70 <HTTPMessageSetBodyLength+0x30>
		require_action( inMsg->bigBodyBuf, exit, err = kNoMemoryErr );
    e8850e98:	7579                	lui	a0,0xffffe
    e8850e9a:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8850e9e:	bfe1                	j	e8850e76 <HTTPMessageSetBodyLength+0x36>

00000000e8850ea0 <HTTPMessageReadMessage>:
{
    e8850ea0:	7179                	addi	sp,sp,-48
    e8850ea2:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8850ea6:	f04a                	sd	s2,32(sp)
    e8850ea8:	f406                	sd	ra,40(sp)
	if( !inMsg->headerRead )
    e8850eaa:	51054783          	lbu	a5,1296(a0)
{
    e8850eae:	842a                	mv	s0,a0
    e8850eb0:	84ae                	mv	s1,a1
    e8850eb2:	8932                	mv	s2,a2
	if( !inMsg->headerRead )
    e8850eb4:	cfbd                	beqz	a5,e8850f32 <HTTPMessageReadMessage+0x92>
	len = hdr->extraDataLen;
    e8850eb6:	42043783          	ld	a5,1056(s0)
	if( len > 0 )
    e8850eba:	cf95                	beqz	a5,e8850ef6 <HTTPMessageReadMessage+0x56>
		len = Min( len, inMsg->bodyLen );
    e8850ebc:	52043603          	ld	a2,1312(s0)
		memmove( inMsg->bodyPtr, hdr->extraDataPtr, len );
    e8850ec0:	41843583          	ld	a1,1048(s0)
    e8850ec4:	51843503          	ld	a0,1304(s0)
		len = Min( len, inMsg->bodyLen );
    e8850ec8:	00c7b733          	sltu	a4,a5,a2
    e8850ecc:	42e7960b          	mvnez	a2,a5,a4
    e8850ed0:	e432                	sd	a2,8(sp)
		memmove( inMsg->bodyPtr, hdr->extraDataPtr, len );
    e8850ed2:	4da2b0ef          	jal	ra,e887c3ac <eLIBs_memmove>
		hdr->extraDataPtr += len;
    e8850ed6:	6722                	ld	a4,8(sp)
    e8850ed8:	41843783          	ld	a5,1048(s0)
    e8850edc:	97ba                	add	a5,a5,a4
    e8850ede:	40f43c23          	sd	a5,1048(s0)
		hdr->extraDataLen -= len;
    e8850ee2:	42043783          	ld	a5,1056(s0)
    e8850ee6:	8f99                	sub	a5,a5,a4
    e8850ee8:	42f43023          	sd	a5,1056(s0)
		inMsg->bodyOffset += len;
    e8850eec:	53043783          	ld	a5,1328(s0)
    e8850ef0:	97ba                	add	a5,a5,a4
    e8850ef2:	52f43823          	sd	a5,1328(s0)
	len = inMsg->bodyOffset;
    e8850ef6:	53043783          	ld	a5,1328(s0)
	if( len < inMsg->bodyLen )
    e8850efa:	52043583          	ld	a1,1312(s0)
	len = inMsg->bodyOffset;
    e8850efe:	e43e                	sd	a5,8(sp)
	if( len < inMsg->bodyLen )
    e8850f00:	02b7f063          	bgeu	a5,a1,e8850f20 <HTTPMessageReadMessage+0x80>
		err = inRead_f( inMsg->bodyPtr + len, inMsg->bodyLen - len, &len, inRead_ctx );
    e8850f04:	51843503          	ld	a0,1304(s0)
    e8850f08:	86ca                	mv	a3,s2
    e8850f0a:	0030                	addi	a2,sp,8
    e8850f0c:	8d9d                	sub	a1,a1,a5
    e8850f0e:	953e                	add	a0,a0,a5
    e8850f10:	9482                	jalr	s1
		require_noerr_quiet( err, exit );
    e8850f12:	e129                	bnez	a0,e8850f54 <HTTPMessageReadMessage+0xb4>
		inMsg->bodyOffset += len;
    e8850f14:	53043783          	ld	a5,1328(s0)
    e8850f18:	6722                	ld	a4,8(sp)
    e8850f1a:	97ba                	add	a5,a5,a4
    e8850f1c:	52f43823          	sd	a5,1328(s0)
	err = ( inMsg->bodyOffset == inMsg->bodyLen ) ? kNoErr : EWOULDBLOCK;
    e8850f20:	53043703          	ld	a4,1328(s0)
    e8850f24:	52043783          	ld	a5,1312(s0)
    e8850f28:	4501                	li	a0,0
    e8850f2a:	02f70563          	beq	a4,a5,e8850f54 <HTTPMessageReadMessage+0xb4>
    e8850f2e:	452d                	li	a0,11
    e8850f30:	a015                	j	e8850f54 <HTTPMessageReadMessage+0xb4>
		err = HTTPReadHeader( hdr, inRead_f, inRead_ctx );
    e8850f32:	0541                	addi	a0,a0,16
    e8850f34:	7da010ef          	jal	ra,e885270e <HTTPReadHeader>
		require_noerr_quiet( err, exit );
    e8850f38:	ed11                	bnez	a0,e8850f54 <HTTPMessageReadMessage+0xb4>
		inMsg->headerRead = true;
    e8850f3a:	4785                	li	a5,1
    e8850f3c:	50f40823          	sb	a5,1296(s0)
		require_action( hdr->contentLength <= inMsg->maxBodyLen, exit, err = kSizeErr );
    e8850f40:	50043583          	ld	a1,1280(s0)
    e8850f44:	52843783          	ld	a5,1320(s0)
    e8850f48:	00b7ec63          	bltu	a5,a1,e8850f60 <HTTPMessageReadMessage+0xc0>
		err = HTTPMessageSetBodyLength( inMsg, (size_t) hdr->contentLength );
    e8850f4c:	8522                	mv	a0,s0
    e8850f4e:	ef3ff0ef          	jal	ra,e8850e40 <HTTPMessageSetBodyLength>
		require_noerr( err, exit );
    e8850f52:	d135                	beqz	a0,e8850eb6 <HTTPMessageReadMessage+0x16>
}
    e8850f54:	70a2                	ld	ra,40(sp)
    e8850f56:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8850f5a:	7902                	ld	s2,32(sp)
    e8850f5c:	6145                	addi	sp,sp,48
    e8850f5e:	8082                	ret
		require_action( hdr->contentLength <= inMsg->maxBodyLen, exit, err = kSizeErr );
    e8850f60:	7579                	lui	a0,0xffffe
    e8850f62:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e8850f66:	b7fd                	j	e8850f54 <HTTPMessageReadMessage+0xb4>

00000000e8850f68 <HTTPMessageGetOrCopyFormVariable>:
		HTTPMessageRef	inMsg, 
		const char *	inName, 
		const char **	outValuePtr, 
		size_t *		outValueLen, 
		char **			outValueStorage )
{
    e8850f68:	7179                	addi	sp,sp,-48
    e8850f6a:	f891540b          	sdd	s0,s1,(sp),0,4
    e8850f6e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8850f72:	842a                	mv	s0,a0
    e8850f74:	f052                	sd	s4,32(sp)
    e8850f76:	f406                	sd	ra,40(sp)
    e8850f78:	84ae                	mv	s1,a1
	OSStatus			err;
	const char *		ptr;
	const char *		end;
	
	ptr = inMsg->header.url.queryPtr;
    e8850f7a:	4a053503          	ld	a0,1184(a0)
	end = ptr + inMsg->header.url.queryLen;
    e8850f7e:	4a843583          	ld	a1,1192(s0)
{
    e8850f82:	8932                	mv	s2,a2
    e8850f84:	89b6                	mv	s3,a3
    e8850f86:	8a3a                	mv	s4,a4
	err = URLGetOrCopyVariable( ptr, end, inName, outValuePtr, outValueLen, outValueStorage, NULL );
    e8850f88:	87ba                	mv	a5,a4
    e8850f8a:	4801                	li	a6,0
    e8850f8c:	8736                	mv	a4,a3
    e8850f8e:	95aa                	add	a1,a1,a0
    e8850f90:	86b2                	mv	a3,a2
    e8850f92:	8626                	mv	a2,s1
    e8850f94:	247100ef          	jal	ra,e88619da <URLGetOrCopyVariable>
	if( err )
    e8850f98:	c505                	beqz	a0,e8850fc0 <HTTPMessageGetOrCopyFormVariable+0x58>
	{
		ptr = (const char *) inMsg->bodyPtr;
    e8850f9a:	51843503          	ld	a0,1304(s0)
		end = ptr + inMsg->bodyLen;
    e8850f9e:	52043583          	ld	a1,1312(s0)
		err = URLGetOrCopyVariable( ptr, end, inName, outValuePtr, outValueLen, outValueStorage, NULL );
    e8850fa2:	8626                	mv	a2,s1
	}
	return( err );
}
    e8850fa4:	f891440b          	ldd	s0,s1,(sp),0,4
    e8850fa8:	70a2                	ld	ra,40(sp)
		err = URLGetOrCopyVariable( ptr, end, inName, outValuePtr, outValueLen, outValueStorage, NULL );
    e8850faa:	87d2                	mv	a5,s4
    e8850fac:	874e                	mv	a4,s3
}
    e8850fae:	7a02                	ld	s4,32(sp)
		err = URLGetOrCopyVariable( ptr, end, inName, outValuePtr, outValueLen, outValueStorage, NULL );
    e8850fb0:	86ca                	mv	a3,s2
}
    e8850fb2:	fb31490b          	ldd	s2,s3,(sp),1,4
		err = URLGetOrCopyVariable( ptr, end, inName, outValuePtr, outValueLen, outValueStorage, NULL );
    e8850fb6:	4801                	li	a6,0
    e8850fb8:	95aa                	add	a1,a1,a0
}
    e8850fba:	6145                	addi	sp,sp,48
		err = URLGetOrCopyVariable( ptr, end, inName, outValuePtr, outValueLen, outValueStorage, NULL );
    e8850fbc:	21f1006f          	j	e88619da <URLGetOrCopyVariable>
}
    e8850fc0:	70a2                	ld	ra,40(sp)
    e8850fc2:	f891440b          	ldd	s0,s1,(sp),0,4
    e8850fc6:	7a02                	ld	s4,32(sp)
    e8850fc8:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8850fcc:	6145                	addi	sp,sp,48
    e8850fce:	8082                	ret

00000000e8850fd0 <_HTTPServerGetTypeID>:
	dispatch_once_f( &gHTTPServerInitOnce, NULL, _HTTPServerGetTypeID );
	return( gHTTPServerTypeID );
}

static void _HTTPServerGetTypeID( void *inContext )
{
    e8850fd0:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gHTTPServerTypeID = _CFRuntimeRegisterClass( &kHTTPServerClass );
    e8850fd2:	00070517          	auipc	a0,0x70
    e8850fd6:	20e50513          	addi	a0,a0,526 # e88c11e0 <kHTTPServerClass>
{
    e8850fda:	e406                	sd	ra,8(sp)
	gHTTPServerTypeID = _CFRuntimeRegisterClass( &kHTTPServerClass );
    e8850fdc:	f72f60ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8850fe0:	00093797          	auipc	a5,0x93
    e8850fe4:	cea7a623          	sw	a0,-788(a5) # e88e3ccc <gHTTPServerTypeID>
	check( gHTTPServerTypeID != _kCFRuntimeNotATypeID );
}
    e8850fe8:	60a2                	ld	ra,8(sp)
    e8850fea:	0141                	addi	sp,sp,16
    e8850fec:	8082                	ret

00000000e8850fee <_HTTPConnectionGetTypeID>:
	dispatch_once_f( &gHTTPConnectionInitOnce, NULL, _HTTPConnectionGetTypeID );
	return( gHTTPConnectionTypeID );
}

static void _HTTPConnectionGetTypeID( void *inContext )
{
    e8850fee:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gHTTPConnectionTypeID = _CFRuntimeRegisterClass( &kHTTPConnectionClass );
    e8850ff0:	00070517          	auipc	a0,0x70
    e8850ff4:	19850513          	addi	a0,a0,408 # e88c1188 <kHTTPConnectionClass>
{
    e8850ff8:	e406                	sd	ra,8(sp)
	gHTTPConnectionTypeID = _CFRuntimeRegisterClass( &kHTTPConnectionClass );
    e8850ffa:	f54f60ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8850ffe:	00093797          	auipc	a5,0x93
    e8851002:	cca7a323          	sw	a0,-826(a5) # e88e3cc4 <gHTTPConnectionTypeID>
	check( gHTTPConnectionTypeID != _kCFRuntimeNotATypeID );
}
    e8851006:	60a2                	ld	ra,8(sp)
    e8851008:	0141                	addi	sp,sp,16
    e885100a:	8082                	ret

00000000e885100c <_HTTPServerFinalize>:
{
    e885100c:	1141                	addi	sp,sp,-16
    e885100e:	e022                	sd	s0,0(sp)
    e8851010:	e406                	sd	ra,8(sp)
	if( me->delegate.finalizeServer_f ) me->delegate.finalizeServer_f( me, me->delegate.context );
    e8851012:	7d3c                	ld	a5,120(a0)
{
    e8851014:	842a                	mv	s0,a0
	if( me->delegate.finalizeServer_f ) me->delegate.finalizeServer_f( me, me->delegate.context );
    e8851016:	c399                	beqz	a5,e885101c <_HTTPServerFinalize+0x10>
    e8851018:	752c                	ld	a1,104(a0)
    e885101a:	9782                	jalr	a5
	dispatch_forget( &me->queue );
    e885101c:	6408                	ld	a0,8(s0)
    e885101e:	c509                	beqz	a0,e8851028 <_HTTPServerFinalize+0x1c>
    e8851020:	a31fd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8851024:	00043423          	sd	zero,8(s0)
	ForgetMem( &me->password );
    e8851028:	6028                	ld	a0,64(s0)
    e885102a:	c509                	beqz	a0,e8851034 <_HTTPServerFinalize+0x28>
    e885102c:	2d42b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8851030:	04043023          	sd	zero,64(s0)
	ForgetMem( &me->realm );
    e8851034:	6428                	ld	a0,72(s0)
    e8851036:	c509                	beqz	a0,e8851040 <_HTTPServerFinalize+0x34>
    e8851038:	2c82b0ef          	jal	ra,e887c300 <eLIBs_free>
    e885103c:	04043423          	sd	zero,72(s0)
}
    e8851040:	60a2                	ld	ra,8(sp)
    e8851042:	6402                	ld	s0,0(sp)
    e8851044:	0141                	addi	sp,sp,16
    e8851046:	8082                	ret

00000000e8851048 <_HTTPConnectionCancelHandler>:

static void	_HTTPConnectionCancelHandler( void *inContext )
{
	HTTPConnectionRef const		cnx = (HTTPConnectionRef) inContext;
	
	CFRelease( cnx );
    e8851048:	902f606f          	j	e884714a <CFRelease>

00000000e885104c <_HTTPConnectionHandleIOError>:
//===========================================================================================================================
//	_HTTPConnectionHandleIOError
//===========================================================================================================================

static OSStatus	_HTTPConnectionHandleIOError( HTTPConnectionRef inCnx, OSStatus inError, Boolean inRead )
{
    e885104c:	1141                	addi	sp,sp,-16
    e885104e:	e022                	sd	s0,0(sp)
	switch( inError )
    e8851050:	77f9                	lui	a5,0xffffe
{
    e8851052:	e406                	sd	ra,8(sp)
	switch( inError )
    e8851054:	58a78713          	addi	a4,a5,1418 # ffffffffffffe58a <__DRAM0_INF_BASE+0xffffffff0000e58a>
{
    e8851058:	842a                	mv	s0,a0
	switch( inError )
    e885105a:	02e58563          	beq	a1,a4,e8851084 <_HTTPConnectionHandleIOError+0x38>
    e885105e:	00b74b63          	blt	a4,a1,e8851074 <_HTTPConnectionHandleIOError+0x28>
    e8851062:	58978793          	addi	a5,a5,1417
    e8851066:	04f58263          	beq	a1,a5,e88510aa <_HTTPConnectionHandleIOError+0x5e>
		
		default:
			break;
	}
	return( inError );
}
    e885106a:	60a2                	ld	ra,8(sp)
    e885106c:	6402                	ld	s0,0(sp)
    e885106e:	852e                	mv	a0,a1
    e8851070:	0141                	addi	sp,sp,16
    e8851072:	8082                	ret
	switch( inError )
    e8851074:	59278793          	addi	a5,a5,1426
    e8851078:	02f58163          	beq	a1,a5,e885109a <_HTTPConnectionHandleIOError+0x4e>
    e885107c:	47ad                	li	a5,11
    e885107e:	fef596e3          	bne	a1,a5,e885106a <_HTTPConnectionHandleIOError+0x1e>
			if( inRead )	dispatch_resume_if_suspended( inCnx->readSource, &inCnx->readSuspended );
    e8851082:	c605                	beqz	a2,e88510aa <_HTTPConnectionHandleIOError+0x5e>
			dispatch_resume_if_suspended( inCnx->readSource, &inCnx->readSuspended );
    e8851084:	09044783          	lbu	a5,144(s0)
    e8851088:	e399                	bnez	a5,e885108e <_HTTPConnectionHandleIOError+0x42>
			inError = EWOULDBLOCK;
    e885108a:	45ad                	li	a1,11
    e885108c:	bff9                	j	e885106a <_HTTPConnectionHandleIOError+0x1e>
			dispatch_resume_if_suspended( inCnx->readSource, &inCnx->readSuspended );
    e885108e:	6448                	ld	a0,136(s0)
    e8851090:	08040823          	sb	zero,144(s0)
			dispatch_resume_if_suspended( inCnx->writeSource, &inCnx->writeSuspended );
    e8851094:	a63fe0ef          	jal	ra,e884faf6 <dispatch_resume>
    e8851098:	bfcd                	j	e885108a <_HTTPConnectionHandleIOError+0x3e>
			dispatch_resume_if_suspended( inCnx->readSource, &inCnx->readSuspended );
    e885109a:	09054783          	lbu	a5,144(a0)
    e885109e:	c791                	beqz	a5,e88510aa <_HTTPConnectionHandleIOError+0x5e>
    e88510a0:	08050823          	sb	zero,144(a0)
    e88510a4:	6548                	ld	a0,136(a0)
    e88510a6:	a51fe0ef          	jal	ra,e884faf6 <dispatch_resume>
			dispatch_resume_if_suspended( inCnx->writeSource, &inCnx->writeSuspended );
    e88510aa:	0a044783          	lbu	a5,160(s0)
    e88510ae:	dff1                	beqz	a5,e885108a <_HTTPConnectionHandleIOError+0x3e>
    e88510b0:	0a040023          	sb	zero,160(s0)
    e88510b4:	6c48                	ld	a0,152(s0)
    e88510b6:	bff9                	j	e8851094 <_HTTPConnectionHandleIOError+0x48>

00000000e88510b8 <_HTTPServerListenerCanceled>:
{
    e88510b8:	1141                	addi	sp,sp,-16
    e88510ba:	e022                	sd	s0,0(sp)
    e88510bc:	e406                	sd	ra,8(sp)
    e88510be:	842a                	mv	s0,a0
	ForgetSocket( &listener->sock );
    e88510c0:	4508                	lw	a0,8(a0)
    e88510c2:	00054663          	bltz	a0,e88510ce <_HTTPServerListenerCanceled+0x16>
    e88510c6:	0dc340ef          	jal	ra,e88851a2 <lwip_close>
    e88510ca:	57fd                	li	a5,-1
    e88510cc:	c41c                	sw	a5,8(s0)
	CFRelease( listener->server );
    e88510ce:	6808                	ld	a0,16(s0)
    e88510d0:	87af60ef          	jal	ra,e884714a <CFRelease>
	free( listener );
    e88510d4:	8522                	mv	a0,s0
}
    e88510d6:	6402                	ld	s0,0(sp)
    e88510d8:	60a2                	ld	ra,8(sp)
    e88510da:	0141                	addi	sp,sp,16
	free( listener );
    e88510dc:	2242b06f          	j	e887c300 <eLIBs_free>

00000000e88510e0 <_HTTPConnectionFinalize>:
{
    e88510e0:	1141                	addi	sp,sp,-16
    e88510e2:	e022                	sd	s0,0(sp)
    e88510e4:	e406                	sd	ra,8(sp)
	if( cnx->delegate.finalize_f ) cnx->delegate.finalize_f( cnx, cnx->delegate.context );
    e88510e6:	7d1c                	ld	a5,56(a0)
{
    e88510e8:	842a                	mv	s0,a0
	if( cnx->delegate.finalize_f ) cnx->delegate.finalize_f( cnx, cnx->delegate.context );
    e88510ea:	c399                	beqz	a5,e88510f0 <_HTTPConnectionFinalize+0x10>
    e88510ec:	710c                	ld	a1,32(a0)
    e88510ee:	9782                	jalr	a5
	ForgetCF( &cnx->server );
    e88510f0:	6808                	ld	a0,16(s0)
    e88510f2:	c509                	beqz	a0,e88510fc <_HTTPConnectionFinalize+0x1c>
    e88510f4:	856f60ef          	jal	ra,e884714a <CFRelease>
    e88510f8:	00043823          	sd	zero,16(s0)
	dispatch_forget( &cnx->queue );
    e88510fc:	7428                	ld	a0,104(s0)
    e88510fe:	c509                	beqz	a0,e8851108 <_HTTPConnectionFinalize+0x28>
    e8851100:	951fd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8851104:	06043423          	sd	zero,104(s0)
	ForgetCF( &cnx->requestMsg );
    e8851108:	7068                	ld	a0,224(s0)
    e885110a:	c509                	beqz	a0,e8851114 <_HTTPConnectionFinalize+0x34>
    e885110c:	83ef60ef          	jal	ra,e884714a <CFRelease>
    e8851110:	0e043023          	sd	zero,224(s0)
	ForgetCF( &cnx->responseMsg );
    e8851114:	7468                	ld	a0,232(s0)
    e8851116:	c509                	beqz	a0,e8851120 <_HTTPConnectionFinalize+0x40>
    e8851118:	832f60ef          	jal	ra,e884714a <CFRelease>
    e885111c:	0e043423          	sd	zero,232(s0)
	while( ( msg = cnx->eventList ) != NULL )
    e8851120:	7868                	ld	a0,240(s0)
    e8851122:	ed1d                	bnez	a0,e8851160 <_HTTPConnectionFinalize+0x80>
	if( cnx->transportDelegate.finalize_f ) cnx->transportDelegate.finalize_f( cnx->transportDelegate.context );
    e8851124:	11043783          	ld	a5,272(s0)
    e8851128:	c781                	beqz	a5,e8851130 <_HTTPConnectionFinalize+0x50>
    e885112a:	10043503          	ld	a0,256(s0)
    e885112e:	9782                	jalr	a5
	if( cnx->detachHandler_f )
    e8851130:	13043783          	ld	a5,304(s0)
    e8851134:	cb99                	beqz	a5,e885114a <_HTTPConnectionFinalize+0x6a>
		cnx->detachHandler_f( cnx->sock, cnx->context1, cnx->context2, cnx->context3 );
    e8851136:	14843683          	ld	a3,328(s0)
    e885113a:	14043603          	ld	a2,320(s0)
    e885113e:	13843583          	ld	a1,312(s0)
    e8851142:	5c28                	lw	a0,120(s0)
    e8851144:	9782                	jalr	a5
		cnx->sock = kInvalidSocketRef;
    e8851146:	57fd                	li	a5,-1
    e8851148:	dc3c                	sw	a5,120(s0)
	ForgetSocket( &cnx->sock );
    e885114a:	5c28                	lw	a0,120(s0)
    e885114c:	00054663          	bltz	a0,e8851158 <_HTTPConnectionFinalize+0x78>
    e8851150:	052340ef          	jal	ra,e88851a2 <lwip_close>
    e8851154:	57fd                	li	a5,-1
    e8851156:	dc3c                	sw	a5,120(s0)
}
    e8851158:	60a2                	ld	ra,8(sp)
    e885115a:	6402                	ld	s0,0(sp)
    e885115c:	0141                	addi	sp,sp,16
    e885115e:	8082                	ret
		cnx->eventList = msg->next;
    e8851160:	651c                	ld	a5,8(a0)
    e8851162:	f87c                	sd	a5,240(s0)
		CFRelease( msg );
    e8851164:	fe7f50ef          	jal	ra,e884714a <CFRelease>
    e8851168:	bf65                	j	e8851120 <_HTTPConnectionFinalize+0x40>

00000000e885116a <HTTPServerGetTypeID>:
	dispatch_once_f( &gHTTPServerInitOnce, NULL, _HTTPServerGetTypeID );
    e885116a:	00093517          	auipc	a0,0x93
    e885116e:	b5e50513          	addi	a0,a0,-1186 # e88e3cc8 <gHTTPServerInitOnce>
    e8851172:	4118                	lw	a4,0(a0)
    e8851174:	4789                	li	a5,2
    e8851176:	02f70363          	beq	a4,a5,e885119c <HTTPServerGetTypeID+0x32>
{
    e885117a:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gHTTPServerInitOnce, NULL, _HTTPServerGetTypeID );
    e885117c:	00000617          	auipc	a2,0x0
    e8851180:	e5460613          	addi	a2,a2,-428 # e8850fd0 <_HTTPServerGetTypeID>
    e8851184:	4581                	li	a1,0
{
    e8851186:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gHTTPServerInitOnce, NULL, _HTTPServerGetTypeID );
    e8851188:	cebfd0ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e885118c:	60a2                	ld	ra,8(sp)
    e885118e:	00093797          	auipc	a5,0x93
    e8851192:	b3e78793          	addi	a5,a5,-1218 # e88e3ccc <gHTTPServerTypeID>
    e8851196:	4388                	lw	a0,0(a5)
    e8851198:	0141                	addi	sp,sp,16
    e885119a:	8082                	ret
    e885119c:	00093797          	auipc	a5,0x93
    e88511a0:	b3078793          	addi	a5,a5,-1232 # e88e3ccc <gHTTPServerTypeID>
    e88511a4:	4388                	lw	a0,0(a5)
    e88511a6:	8082                	ret

00000000e88511a8 <HTTPServerSetDispatchQueue>:
{
    e88511a8:	1101                	addi	sp,sp,-32
    e88511aa:	e422                	sd	s0,8(sp)
    e88511ac:	e826                	sd	s1,16(sp)
    e88511ae:	ec06                	sd	ra,24(sp)
    e88511b0:	84aa                	mv	s1,a0
    e88511b2:	842e                	mv	s0,a1
	ReplaceDispatchQueue( &me->queue, inQueue );
    e88511b4:	e581                	bnez	a1,e88511bc <HTTPServerSetDispatchQueue+0x14>
    e88511b6:	babfe0ef          	jal	ra,e884fd60 <dispatch_get_main_queue>
    e88511ba:	842a                	mv	s0,a0
    e88511bc:	8522                	mv	a0,s0
    e88511be:	887fd0ef          	jal	ra,e884ea44 <dispatch_retain>
    e88511c2:	6488                	ld	a0,8(s1)
    e88511c4:	c119                	beqz	a0,e88511ca <HTTPServerSetDispatchQueue+0x22>
    e88511c6:	88bfd0ef          	jal	ra,e884ea50 <dispatch_release>
    e88511ca:	e480                	sd	s0,8(s1)
}
    e88511cc:	60e2                	ld	ra,24(sp)
    e88511ce:	6422                	ld	s0,8(sp)
    e88511d0:	64c2                	ld	s1,16(sp)
    e88511d2:	6105                	addi	sp,sp,32
    e88511d4:	8082                	ret

00000000e88511d6 <HTTPServerCreate>:
{
    e88511d6:	1101                	addi	sp,sp,-32
    e88511d8:	e84a                	sd	s2,16(sp)
    e88511da:	f891540b          	sdd	s0,s1,(sp),0,4
    e88511de:	ec06                	sd	ra,24(sp)
    e88511e0:	84ae                	mv	s1,a1
    e88511e2:	892a                	mv	s2,a0
	me = (HTTPServerRef) _CFRuntimeCreateInstance( NULL, HTTPServerGetTypeID(), (CFIndex) extraLen, NULL );
    e88511e4:	f87ff0ef          	jal	ra,e885116a <HTTPServerGetTypeID>
    e88511e8:	0005059b          	sext.w	a1,a0
    e88511ec:	4681                	li	a3,0
    e88511ee:	0d800613          	li	a2,216
    e88511f2:	4501                	li	a0,0
    e88511f4:	d80f60ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( me, exit, err = kNoMemoryErr );
    e88511f8:	cd29                	beqz	a0,e8851252 <HTTPServerCreate+0x7c>
    e88511fa:	842a                	mv	s0,a0
	memset(( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );
    e88511fc:	0d800613          	li	a2,216
    e8851200:	4581                	li	a1,0
    e8851202:	0521                	addi	a0,a0,8
    e8851204:	1902b0ef          	jal	ra,e887c394 <eLIBs_memset>
	HTTPServerSetDispatchQueue( me, NULL ); // Default to the main queue.
    e8851208:	4581                	li	a1,0
    e885120a:	8522                	mv	a0,s0
    e885120c:	f9dff0ef          	jal	ra,e88511a8 <HTTPServerSetDispatchQueue>
	me->ucat		= &log_category_from_name( HTTPServerCore );
    e8851210:	00084797          	auipc	a5,0x84
    e8851214:	ce078793          	addi	a5,a5,-800 # e88d4ef0 <gLogCategory_HTTPServerCore>
    e8851218:	e81c                	sd	a5,16(s0)
	me->delegate	= *inDelegate;
    e885121a:	07000613          	li	a2,112
    e885121e:	85a6                	mv	a1,s1
    e8851220:	06840513          	addi	a0,s0,104
    e8851224:	e45ae0ef          	jal	ra,e8800068 <memcpy>
	if( me->delegate.initializeServer_f )
    e8851228:	783c                	ld	a5,112(s0)
    e885122a:	eb99                	bnez	a5,e8851240 <HTTPServerCreate+0x6a>
	*outServer = me;
    e885122c:	00893023          	sd	s0,0(s2)
	err = kNoErr;
    e8851230:	4481                	li	s1,0
}
    e8851232:	8526                	mv	a0,s1
    e8851234:	60e2                	ld	ra,24(sp)
    e8851236:	f891440b          	ldd	s0,s1,(sp),0,4
    e885123a:	6942                	ld	s2,16(sp)
    e885123c:	6105                	addi	sp,sp,32
    e885123e:	8082                	ret
		err = me->delegate.initializeServer_f( me, me->delegate.context );
    e8851240:	742c                	ld	a1,104(s0)
    e8851242:	8522                	mv	a0,s0
    e8851244:	9782                	jalr	a5
    e8851246:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e8851248:	d175                	beqz	a0,e885122c <HTTPServerCreate+0x56>
	CFReleaseNullSafe( me );
    e885124a:	8522                	mv	a0,s0
    e885124c:	efff50ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e8851250:	b7cd                	j	e8851232 <HTTPServerCreate+0x5c>
	require_action( me, exit, err = kNoMemoryErr );
    e8851252:	74f9                	lui	s1,0xffffe
    e8851254:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8851258:	bfe9                	j	e8851232 <HTTPServerCreate+0x5c>

00000000e885125a <HTTPConnectionGetTypeID>:
	dispatch_once_f( &gHTTPConnectionInitOnce, NULL, _HTTPConnectionGetTypeID );
    e885125a:	00093517          	auipc	a0,0x93
    e885125e:	a6650513          	addi	a0,a0,-1434 # e88e3cc0 <gHTTPConnectionInitOnce>
    e8851262:	4118                	lw	a4,0(a0)
    e8851264:	4789                	li	a5,2
    e8851266:	02f70363          	beq	a4,a5,e885128c <HTTPConnectionGetTypeID+0x32>
{
    e885126a:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gHTTPConnectionInitOnce, NULL, _HTTPConnectionGetTypeID );
    e885126c:	00000617          	auipc	a2,0x0
    e8851270:	d8260613          	addi	a2,a2,-638 # e8850fee <_HTTPConnectionGetTypeID>
    e8851274:	4581                	li	a1,0
{
    e8851276:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gHTTPConnectionInitOnce, NULL, _HTTPConnectionGetTypeID );
    e8851278:	bfbfd0ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e885127c:	60a2                	ld	ra,8(sp)
    e885127e:	00093797          	auipc	a5,0x93
    e8851282:	a4678793          	addi	a5,a5,-1466 # e88e3cc4 <gHTTPConnectionTypeID>
    e8851286:	4388                	lw	a0,0(a5)
    e8851288:	0141                	addi	sp,sp,16
    e885128a:	8082                	ret
    e885128c:	00093797          	auipc	a5,0x93
    e8851290:	a3878793          	addi	a5,a5,-1480 # e88e3cc4 <gHTTPConnectionTypeID>
    e8851294:	4388                	lw	a0,0(a5)
    e8851296:	8082                	ret

00000000e8851298 <HTTPConnectionSetDelegate>:
{
    e8851298:	1141                	addi	sp,sp,-16
    e885129a:	e022                	sd	s0,0(sp)
	inCnx->delegate = *inDelegate;
    e885129c:	04800613          	li	a2,72
{
    e88512a0:	842a                	mv	s0,a0
	inCnx->delegate = *inDelegate;
    e88512a2:	0561                	addi	a0,a0,24
{
    e88512a4:	e406                	sd	ra,8(sp)
	inCnx->delegate = *inDelegate;
    e88512a6:	dc3ae0ef          	jal	ra,e8800068 <memcpy>
	if( !inCnx->delegate.httpProtocol ) inCnx->delegate.httpProtocol = "HTTP/1.1";
    e88512aa:	741c                	ld	a5,40(s0)
    e88512ac:	e791                	bnez	a5,e88512b8 <HTTPConnectionSetDelegate+0x20>
    e88512ae:	00070797          	auipc	a5,0x70
    e88512b2:	c6a78793          	addi	a5,a5,-918 # e88c0f18 <kHTTPMessageClass+0x68>
    e88512b6:	f41c                	sd	a5,40(s0)
}
    e88512b8:	60a2                	ld	ra,8(sp)
    e88512ba:	6402                	ld	s0,0(sp)
    e88512bc:	0141                	addi	sp,sp,16
    e88512be:	8082                	ret

00000000e88512c0 <HTTPConnectionCreate>:
{
    e88512c0:	7139                	addi	sp,sp,-64
    e88512c2:	e826                	sd	s1,16(sp)
    e88512c4:	f04e                	sd	s3,32(sp)
    e88512c6:	f452                	sd	s4,40(sp)
    e88512c8:	f856                	sd	s5,48(sp)
    e88512ca:	fc06                	sd	ra,56(sp)
    e88512cc:	e422                	sd	s0,8(sp)
    e88512ce:	ec4a                	sd	s2,24(sp)
	extraLen = ( sizeof( *cnx ) + inDelegate->extraLen ) - sizeof( cnx->base );
    e88512d0:	0005b903          	ld	s2,0(a1)
{
    e88512d4:	89ae                	mv	s3,a1
    e88512d6:	8ab2                	mv	s5,a2
    e88512d8:	84b6                	mv	s1,a3
    e88512da:	8a2a                	mv	s4,a0
	cnx = (HTTPConnectionRef) _CFRuntimeCreateInstance( NULL, HTTPConnectionGetTypeID(), (CFIndex) extraLen, NULL );
    e88512dc:	f7fff0ef          	jal	ra,e885125a <HTTPConnectionGetTypeID>
	extraLen = ( sizeof( *cnx ) + inDelegate->extraLen ) - sizeof( cnx->base );
    e88512e0:	14890913          	addi	s2,s2,328
	cnx = (HTTPConnectionRef) _CFRuntimeCreateInstance( NULL, HTTPConnectionGetTypeID(), (CFIndex) extraLen, NULL );
    e88512e4:	0005059b          	sext.w	a1,a0
    e88512e8:	4681                	li	a3,0
    e88512ea:	0009061b          	sext.w	a2,s2
    e88512ee:	4501                	li	a0,0
    e88512f0:	c84f60ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( cnx, exit, err = kNoMemoryErr );
    e88512f4:	c95d                	beqz	a0,e88513aa <HTTPConnectionCreate+0xea>
    e88512f6:	842a                	mv	s0,a0
	memset(( (uint8_t *) cnx ) + sizeof( cnx->base ), 0, extraLen );
    e88512f8:	864a                	mv	a2,s2
    e88512fa:	4581                	li	a1,0
    e88512fc:	0521                	addi	a0,a0,8
    e88512fe:	0962b0ef          	jal	ra,e887c394 <eLIBs_memset>
	HTTPConnectionSetDelegate( cnx, inDelegate );
    e8851302:	85ce                	mv	a1,s3
    e8851304:	8522                	mv	a0,s0
    e8851306:	f93ff0ef          	jal	ra,e8851298 <HTTPConnectionSetDelegate>
	cnx->ucat = inServer ? inServer->ucat : &log_category_from_name( HTTPServerCore );
    e885130a:	00084797          	auipc	a5,0x84
    e885130e:	be678793          	addi	a5,a5,-1050 # e88d4ef0 <gLogCategory_HTTPServerCore>
    e8851312:	c091                	beqz	s1,e8851316 <HTTPConnectionCreate+0x56>
    e8851314:	689c                	ld	a5,16(s1)
    e8851316:	f83c                	sd	a5,112(s0)
	cnx->sock = kInvalidSocketRef;
    e8851318:	57fd                	li	a5,-1
    e885131a:	dc3c                	sw	a5,120(s0)
	cnx->transportDelegate.read_f	= SocketTransportRead;
    e885131c:	00005797          	auipc	a5,0x5
    e8851320:	a9e78793          	addi	a5,a5,-1378 # e8855dba <SocketTransportRead>
    e8851324:	10f43c23          	sd	a5,280(s0)
	cnx->transportDelegate.writev_f	= SocketTransportWriteV;
    e8851328:	00005797          	auipc	a5,0x5
    e885132c:	af878793          	addi	a5,a5,-1288 # e8855e20 <SocketTransportWriteV>
    e8851330:	12f43023          	sd	a5,288(s0)
	if( inServer )
    e8851334:	c489                	beqz	s1,e885133e <HTTPConnectionCreate+0x7e>
		CFRetain( inServer );
    e8851336:	8526                	mv	a0,s1
    e8851338:	e0ff50ef          	jal	ra,e8847146 <CFRetain>
		cnx->server = inServer;
    e885133c:	e804                	sd	s1,16(s0)
	err = HTTPMessageCreate( &cnx->requestMsg );
    e885133e:	0e040513          	addi	a0,s0,224
    e8851342:	a19ff0ef          	jal	ra,e8850d5a <HTTPMessageCreate>
    e8851346:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e8851348:	e129                	bnez	a0,e885138a <HTTPConnectionCreate+0xca>
	err = HTTPMessageCreate( &cnx->responseMsg );
    e885134a:	0e840513          	addi	a0,s0,232
    e885134e:	a0dff0ef          	jal	ra,e8850d5a <HTTPMessageCreate>
    e8851352:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e8851354:	e91d                	bnez	a0,e885138a <HTTPConnectionCreate+0xca>
	cnx->eventNext = &cnx->eventList;
    e8851356:	0f040793          	addi	a5,s0,240
    e885135a:	fc7c                	sd	a5,248(s0)
	cnx->sock = inSock;
    e885135c:	07542c23          	sw	s5,120(s0)
	if( inServer && inServer->delegate.connectionCreated_f )
    e8851360:	cc81                	beqz	s1,e8851378 <HTTPConnectionCreate+0xb8>
    e8851362:	6cdc                	ld	a5,152(s1)
    e8851364:	cb91                	beqz	a5,e8851378 <HTTPConnectionCreate+0xb8>
		extraPtr = ( cnx->delegate.extraLen > 0 ) ? ( ( (uint8_t *) cnx ) + sizeof( struct HTTPConnectionPrivate ) ) : NULL;
    e8851366:	6c18                	ld	a4,24(s0)
    e8851368:	4601                	li	a2,0
    e885136a:	c319                	beqz	a4,e8851370 <HTTPConnectionCreate+0xb0>
    e885136c:	15040613          	addi	a2,s0,336
		inServer->delegate.connectionCreated_f( inServer, cnx, extraPtr, inServer->delegate.context );
    e8851370:	74b4                	ld	a3,104(s1)
    e8851372:	85a2                	mv	a1,s0
    e8851374:	8526                	mv	a0,s1
    e8851376:	9782                	jalr	a5
	if( cnx->delegate.initialize_f )
    e8851378:	781c                	ld	a5,48(s0)
    e885137a:	cf81                	beqz	a5,e8851392 <HTTPConnectionCreate+0xd2>
		err = cnx->delegate.initialize_f( cnx, cnx->delegate.context );
    e885137c:	700c                	ld	a1,32(s0)
    e885137e:	8522                	mv	a0,s0
    e8851380:	9782                	jalr	a5
		if( err ) cnx->sock = kInvalidSocketRef;
    e8851382:	c901                	beqz	a0,e8851392 <HTTPConnectionCreate+0xd2>
    e8851384:	57fd                	li	a5,-1
    e8851386:	dc3c                	sw	a5,120(s0)
    e8851388:	892a                	mv	s2,a0
	CFReleaseNullSafe( cnx );
    e885138a:	8522                	mv	a0,s0
    e885138c:	dbff50ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e8851390:	a019                	j	e8851396 <HTTPConnectionCreate+0xd6>
	*outCnx = cnx;
    e8851392:	008a3023          	sd	s0,0(s4)
}
    e8851396:	70e2                	ld	ra,56(sp)
    e8851398:	6422                	ld	s0,8(sp)
    e885139a:	854a                	mv	a0,s2
    e885139c:	64c2                	ld	s1,16(sp)
    e885139e:	6962                	ld	s2,24(sp)
    e88513a0:	7982                	ld	s3,32(sp)
    e88513a2:	7a22                	ld	s4,40(sp)
    e88513a4:	7ac2                	ld	s5,48(sp)
    e88513a6:	6121                	addi	sp,sp,64
    e88513a8:	8082                	ret
	require_action( cnx, exit, err = kNoMemoryErr );
    e88513aa:	7979                	lui	s2,0xffffe
    e88513ac:	5b890913          	addi	s2,s2,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88513b0:	b7dd                	j	e8851396 <HTTPConnectionCreate+0xd6>

00000000e88513b2 <HTTPConnectionSetDispatchQueue>:
{
    e88513b2:	1101                	addi	sp,sp,-32
    e88513b4:	e422                	sd	s0,8(sp)
    e88513b6:	e826                	sd	s1,16(sp)
    e88513b8:	ec06                	sd	ra,24(sp)
    e88513ba:	84aa                	mv	s1,a0
    e88513bc:	842e                	mv	s0,a1
	ReplaceDispatchQueue( &inCnx->queue, inQueue );
    e88513be:	e581                	bnez	a1,e88513c6 <HTTPConnectionSetDispatchQueue+0x14>
    e88513c0:	9a1fe0ef          	jal	ra,e884fd60 <dispatch_get_main_queue>
    e88513c4:	842a                	mv	s0,a0
    e88513c6:	8522                	mv	a0,s0
    e88513c8:	e7cfd0ef          	jal	ra,e884ea44 <dispatch_retain>
    e88513cc:	74a8                	ld	a0,104(s1)
    e88513ce:	c119                	beqz	a0,e88513d4 <HTTPConnectionSetDispatchQueue+0x22>
    e88513d0:	e80fd0ef          	jal	ra,e884ea50 <dispatch_release>
    e88513d4:	f4a0                	sd	s0,104(s1)
}
    e88513d6:	60e2                	ld	ra,24(sp)
    e88513d8:	6422                	ld	s0,8(sp)
    e88513da:	64c2                	ld	s1,16(sp)
    e88513dc:	6105                	addi	sp,sp,32
    e88513de:	8082                	ret

00000000e88513e0 <HTTPConnectionStop>:
{
    e88513e0:	1101                	addi	sp,sp,-32
    e88513e2:	e422                	sd	s0,8(sp)
    e88513e4:	e826                	sd	s1,16(sp)
    e88513e6:	ec06                	sd	ra,24(sp)
	started = inCnx->readSource && inCnx->writeSource;
    e88513e8:	655c                	ld	a5,136(a0)
{
    e88513ea:	842a                	mv	s0,a0
    e88513ec:	4481                	li	s1,0
	started = inCnx->readSource && inCnx->writeSource;
    e88513ee:	c781                	beqz	a5,e88513f6 <HTTPConnectionStop+0x16>
    e88513f0:	6d44                	ld	s1,152(a0)
    e88513f2:	009034b3          	snez	s1,s1
	if( IsValidSocket( inCnx->sock ) && !inCnx->detachHandler_f ) shutdown( inCnx->sock, SHUT_WR_COMPAT );
    e88513f6:	5c28                	lw	a0,120(s0)
    e88513f8:	00054863          	bltz	a0,e8851408 <HTTPConnectionStop+0x28>
    e88513fc:	13043783          	ld	a5,304(s0)
    e8851400:	e781                	bnez	a5,e8851408 <HTTPConnectionStop+0x28>
    e8851402:	4585                	li	a1,1
    e8851404:	41b340ef          	jal	ra,e888601e <lwip_shutdown>
	dispatch_source_forget_ex( &inCnx->readSource,  &inCnx->readSuspended );
    e8851408:	6448                	ld	a0,136(s0)
    e885140a:	c11d                	beqz	a0,e8851430 <HTTPConnectionStop+0x50>
    e885140c:	83bfe0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8851410:	09040793          	addi	a5,s0,144
    e8851414:	cb89                	beqz	a5,e8851426 <HTTPConnectionStop+0x46>
    e8851416:	09044783          	lbu	a5,144(s0)
    e885141a:	c791                	beqz	a5,e8851426 <HTTPConnectionStop+0x46>
    e885141c:	6448                	ld	a0,136(s0)
    e885141e:	ed8fe0ef          	jal	ra,e884faf6 <dispatch_resume>
    e8851422:	08040823          	sb	zero,144(s0)
    e8851426:	6448                	ld	a0,136(s0)
    e8851428:	e28fd0ef          	jal	ra,e884ea50 <dispatch_release>
    e885142c:	08043423          	sd	zero,136(s0)
	dispatch_source_forget_ex( &inCnx->writeSource, &inCnx->writeSuspended );
    e8851430:	6c48                	ld	a0,152(s0)
    e8851432:	c11d                	beqz	a0,e8851458 <HTTPConnectionStop+0x78>
    e8851434:	813fe0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8851438:	0a040793          	addi	a5,s0,160
    e885143c:	cb89                	beqz	a5,e885144e <HTTPConnectionStop+0x6e>
    e885143e:	0a044783          	lbu	a5,160(s0)
    e8851442:	c791                	beqz	a5,e885144e <HTTPConnectionStop+0x6e>
    e8851444:	6c48                	ld	a0,152(s0)
    e8851446:	eb0fe0ef          	jal	ra,e884faf6 <dispatch_resume>
    e885144a:	0a040023          	sb	zero,160(s0)
    e885144e:	6c48                	ld	a0,152(s0)
    e8851450:	e00fd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8851454:	08043c23          	sd	zero,152(s0)
	if( started && inCnx->delegate.close_f ) inCnx->delegate.close_f( inCnx, inCnx->delegate.context );
    e8851458:	cc81                	beqz	s1,e8851470 <HTTPConnectionStop+0x90>
    e885145a:	04043303          	ld	t1,64(s0)
    e885145e:	00030963          	beqz	t1,e8851470 <HTTPConnectionStop+0x90>
    e8851462:	700c                	ld	a1,32(s0)
    e8851464:	8522                	mv	a0,s0
}
    e8851466:	6422                	ld	s0,8(sp)
    e8851468:	60e2                	ld	ra,24(sp)
    e885146a:	64c2                	ld	s1,16(sp)
    e885146c:	6105                	addi	sp,sp,32
	if( started && inCnx->delegate.close_f ) inCnx->delegate.close_f( inCnx, inCnx->delegate.context );
    e885146e:	8302                	jr	t1
}
    e8851470:	60e2                	ld	ra,24(sp)
    e8851472:	6422                	ld	s0,8(sp)
    e8851474:	64c2                	ld	s1,16(sp)
    e8851476:	6105                	addi	sp,sp,32
    e8851478:	8082                	ret

00000000e885147a <_HTTPServerCloseConnection>:
{
    e885147a:	1101                	addi	sp,sp,-32
    e885147c:	e422                	sd	s0,8(sp)
    e885147e:	ec06                	sd	ra,24(sp)
    e8851480:	e826                	sd	s1,16(sp)
	HTTPServerRef const		server = inCnx->server;
    e8851482:	6904                	ld	s1,16(a0)
{
    e8851484:	842a                	mv	s0,a0
	for( next = &server->connections; ( curr = *next ) != NULL; next = &curr->next )
    e8851486:	789c                	ld	a5,48(s1)
    e8851488:	03048713          	addi	a4,s1,48
    e885148c:	c789                	beqz	a5,e8851496 <_HTTPServerCloseConnection+0x1c>
		if( curr == inCnx )
    e885148e:	6794                	ld	a3,8(a5)
    e8851490:	04f41b63          	bne	s0,a5,e88514e6 <_HTTPServerCloseConnection+0x6c>
			*next = curr->next;
    e8851494:	e314                	sd	a3,0(a4)
	HTTPConnectionStop( inCnx );
    e8851496:	8522                	mv	a0,s0
    e8851498:	f49ff0ef          	jal	ra,e88513e0 <HTTPConnectionStop>
	if( ( inCnx->selfAddr.sa.sa_family != AF_UNSPEC ) && !inCnx->detachHandler_f )
    e885149c:	0a544783          	lbu	a5,165(s0)
    e88514a0:	cf85                	beqz	a5,e88514d8 <_HTTPServerCloseConnection+0x5e>
    e88514a2:	13043783          	ld	a5,304(s0)
    e88514a6:	eb8d                	bnez	a5,e88514d8 <_HTTPServerCloseConnection+0x5e>
		http_server_ulog( server, kLogLevelTrace, "Closing  connection from %##a to %##a\n", 
    e88514a8:	6888                	ld	a0,16(s1)
    e88514aa:	4779                	li	a4,30
    e88514ac:	411c                	lw	a5,0(a0)
    e88514ae:	02f74563          	blt	a4,a5,e88514d8 <_HTTPServerCloseConnection+0x5e>
    e88514b2:	577d                	li	a4,-1
    e88514b4:	02e78d63          	beq	a5,a4,e88514ee <_HTTPServerCloseConnection+0x74>
    e88514b8:	6888                	ld	a0,16(s1)
    e88514ba:	0a440793          	addi	a5,s0,164
    e88514be:	0c040713          	addi	a4,s0,192
    e88514c2:	00070697          	auipc	a3,0x70
    e88514c6:	ae668693          	addi	a3,a3,-1306 # e88c0fa8 <kHTTPMessageClass+0xf8>
    e88514ca:	4679                	li	a2,30
    e88514cc:	00070597          	auipc	a1,0x70
    e88514d0:	c7c58593          	addi	a1,a1,-900 # e88c1148 <__PRETTY_FUNCTION__.10089>
    e88514d4:	7a1020ef          	jal	ra,e8854474 <LogPrintF>
	CFRelease( inCnx );
    e88514d8:	8522                	mv	a0,s0
}
    e88514da:	6422                	ld	s0,8(sp)
    e88514dc:	60e2                	ld	ra,24(sp)
    e88514de:	64c2                	ld	s1,16(sp)
    e88514e0:	6105                	addi	sp,sp,32
	CFRelease( inCnx );
    e88514e2:	c69f506f          	j	e884714a <CFRelease>
	for( next = &server->connections; ( curr = *next ) != NULL; next = &curr->next )
    e88514e6:	00878713          	addi	a4,a5,8
    e88514ea:	87b6                	mv	a5,a3
    e88514ec:	b745                	j	e885148c <_HTTPServerCloseConnection+0x12>
		http_server_ulog( server, kLogLevelTrace, "Closing  connection from %##a to %##a\n", 
    e88514ee:	45f9                	li	a1,30
    e88514f0:	383020ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88514f4:	d175                	beqz	a0,e88514d8 <_HTTPServerCloseConnection+0x5e>
    e88514f6:	b7c9                	j	e88514b8 <_HTTPServerCloseConnection+0x3e>

00000000e88514f8 <_HTTPServerStop>:
{
    e88514f8:	1141                	addi	sp,sp,-16
    e88514fa:	e022                	sd	s0,0(sp)
    e88514fc:	e406                	sd	ra,8(sp)
	if( me->listenerV4 )
    e88514fe:	6d1c                	ld	a5,24(a0)
{
    e8851500:	842a                	mv	s0,a0
	if( me->listenerV4 )
    e8851502:	cf91                	beqz	a5,e885151e <_HTTPServerStop+0x26>
		dispatch_source_forget( &me->listenerV4->source );
    e8851504:	6388                	ld	a0,0(a5)
    e8851506:	c911                	beqz	a0,e885151a <_HTTPServerStop+0x22>
    e8851508:	f3efe0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e885150c:	6c1c                	ld	a5,24(s0)
    e885150e:	6388                	ld	a0,0(a5)
    e8851510:	d40fd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8851514:	6c1c                	ld	a5,24(s0)
    e8851516:	0007b023          	sd	zero,0(a5)
		me->listenerV4 = NULL;
    e885151a:	00043c23          	sd	zero,24(s0)
	if( me->listenerV6 )
    e885151e:	701c                	ld	a5,32(s0)
    e8851520:	cf91                	beqz	a5,e885153c <_HTTPServerStop+0x44>
		dispatch_source_forget( &me->listenerV6->source );
    e8851522:	6388                	ld	a0,0(a5)
    e8851524:	c911                	beqz	a0,e8851538 <_HTTPServerStop+0x40>
    e8851526:	f20fe0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e885152a:	701c                	ld	a5,32(s0)
    e885152c:	6388                	ld	a0,0(a5)
    e885152e:	d22fd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8851532:	701c                	ld	a5,32(s0)
    e8851534:	0007b023          	sd	zero,0(a5)
		me->listenerV6 = NULL;
    e8851538:	02043023          	sd	zero,32(s0)
	while( me->connections )
    e885153c:	7808                	ld	a0,48(s0)
    e885153e:	e915                	bnez	a0,e8851572 <_HTTPServerStop+0x7a>
	if( me->started )
    e8851540:	03844783          	lbu	a5,56(s0)
    e8851544:	cb9d                	beqz	a5,e885157a <_HTTPServerStop+0x82>
		if( me->delegate.control_f )
    e8851546:	08043803          	ld	a6,128(s0)
    e885154a:	00080c63          	beqz	a6,e8851562 <_HTTPServerStop+0x6a>
			me->delegate.control_f( me, 0, kHTTPServerCommand_StopServer, NULL, NULL, me->delegate.context );
    e885154e:	743c                	ld	a5,104(s0)
    e8851550:	4701                	li	a4,0
    e8851552:	4681                	li	a3,0
    e8851554:	0004c617          	auipc	a2,0x4c
    e8851558:	d2460613          	addi	a2,a2,-732 # e889d278 <icmp6_param_problem+0x20a>
    e885155c:	4581                	li	a1,0
    e885155e:	8522                	mv	a0,s0
    e8851560:	9802                	jalr	a6
		me->started = false;
    e8851562:	02040c23          	sb	zero,56(s0)
		CFRelease( me );
    e8851566:	8522                	mv	a0,s0
}
    e8851568:	6402                	ld	s0,0(sp)
    e885156a:	60a2                	ld	ra,8(sp)
    e885156c:	0141                	addi	sp,sp,16
		CFRelease( me );
    e885156e:	bddf506f          	j	e884714a <CFRelease>
		_HTTPServerCloseConnection( me->connections, me->connections->delegate.context );
    e8851572:	710c                	ld	a1,32(a0)
    e8851574:	f07ff0ef          	jal	ra,e885147a <_HTTPServerCloseConnection>
    e8851578:	b7d1                	j	e885153c <_HTTPServerStop+0x44>
}
    e885157a:	60a2                	ld	ra,8(sp)
    e885157c:	6402                	ld	s0,0(sp)
    e885157e:	0141                	addi	sp,sp,16
    e8851580:	8082                	ret

00000000e8851582 <_HTTPServerControl>:
{
    e8851582:	711d                	addi	sp,sp,-96
    e8851584:	e8a2                	sd	s0,80(sp)
    e8851586:	e4a6                	sd	s1,72(sp)
    e8851588:	842a                	mv	s0,a0
    e885158a:	84ae                	mv	s1,a1
	else if( CFEqual( inCommand, kHTTPServerCommand_StartServer ) )
    e885158c:	8532                	mv	a0,a2
    e885158e:	0004c597          	auipc	a1,0x4c
    e8851592:	d0258593          	addi	a1,a1,-766 # e889d290 <icmp6_param_problem+0x222>
{
    e8851596:	ec36                	sd	a3,24(sp)
    e8851598:	e83a                	sd	a4,16(sp)
	else if( CFEqual( inCommand, kHTTPServerCommand_StartServer ) )
    e885159a:	e432                	sd	a2,8(sp)
{
    e885159c:	ec86                	sd	ra,88(sp)
    e885159e:	e0ca                	sd	s2,64(sp)
    e88515a0:	fc4e                	sd	s3,56(sp)
	else if( CFEqual( inCommand, kHTTPServerCommand_StartServer ) )
    e88515a2:	badf50ef          	jal	ra,e884714e <CFEqual>
    e88515a6:	6622                	ld	a2,8(sp)
    e88515a8:	fad1470b          	ldd	a4,a3,(sp),1,4
    e88515ac:	0c050e63          	beqz	a0,e8851688 <_HTTPServerControl+0x106>
	SocketRef					sockV4 = kInvalidSocketRef;
    e88515b0:	57fd                	li	a5,-1
	err = TCPServerSocketPairOpen( me->listenPort, &me->listeningPort, kSocketBufferSize_DontSet, &sockV4, &sockV6 );
    e88515b2:	0dc42603          	lw	a2,220(s0)
	SocketRef					sockV4 = kInvalidSocketRef;
    e88515b6:	d43e                	sw	a5,40(sp)
	SocketRef					sockV6 = kInvalidSocketRef;
    e88515b8:	d63e                	sw	a5,44(sp)
	err = TCPServerSocketPairOpen( me->listenPort, &me->listeningPort, kSocketBufferSize_DontSet, &sockV4, &sockV6 );
    e88515ba:	4599                	li	a1,6
    e88515bc:	02c10813          	addi	a6,sp,44
    e88515c0:	103c                	addi	a5,sp,40
    e88515c2:	577d                	li	a4,-1
    e88515c4:	02840693          	addi	a3,s0,40
    e88515c8:	4505                	li	a0,1
    e88515ca:	3b6050ef          	jal	ra,e8856980 <ServerSocketPairOpen>
    e88515ce:	84aa                	mv	s1,a0
	printf("_HTTPServerStart sockV4=%d sockV6=%d\n", sockV4,sockV6);
    e88515d0:	5632                	lw	a2,44(sp)
    e88515d2:	55a2                	lw	a1,40(sp)
    e88515d4:	00070517          	auipc	a0,0x70
    e88515d8:	9fc50513          	addi	a0,a0,-1540 # e88c0fd0 <kHTTPMessageClass+0x120>
    e88515dc:	4eb2a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	require_noerr( err, exit );
    e88515e0:	e49d                	bnez	s1,e885160e <_HTTPServerControl+0x8c>
	if( IsValidSocket( sockV4 ) )
    e88515e2:	5522                	lw	a0,40(sp)
    e88515e4:	14054963          	bltz	a0,e8851736 <_HTTPServerControl+0x1b4>
		if( me->allowP2P ) SocketSetP2P( sockV4, true );
    e88515e8:	0d842783          	lw	a5,216(s0)
    e88515ec:	c781                	beqz	a5,e88515f4 <_HTTPServerControl+0x72>
    e88515ee:	4585                	li	a1,1
    e88515f0:	4fb040ef          	jal	ra,e88562ea <SocketSetP2P>
    p = malloc(len);
    e88515f4:	4561                	li	a0,24
    e88515f6:	2582a0ef          	jal	ra,e887b84e <my_malloc>
    e88515fa:	892a                	mv	s2,a0
    memset(p,0,len);
    e88515fc:	4661                	li	a2,24
    e88515fe:	4581                	li	a1,0
    e8851600:	5952a0ef          	jal	ra,e887c394 <eLIBs_memset>
		require_action( listener, exit, err = kNoMemoryErr );
    e8851604:	02091f63          	bnez	s2,e8851642 <_HTTPServerControl+0xc0>
    e8851608:	74f9                	lui	s1,0xffffe
    e885160a:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	ForgetSocket( &sockV4 );
    e885160e:	5522                	lw	a0,40(sp)
    e8851610:	00054663          	bltz	a0,e885161c <_HTTPServerControl+0x9a>
    e8851614:	38f330ef          	jal	ra,e88851a2 <lwip_close>
    e8851618:	57fd                	li	a5,-1
    e885161a:	d43e                	sw	a5,40(sp)
	ForgetSocket( &sockV6 );
    e885161c:	5532                	lw	a0,44(sp)
    e885161e:	00054663          	bltz	a0,e885162a <_HTTPServerControl+0xa8>
    e8851622:	381330ef          	jal	ra,e88851a2 <lwip_close>
    e8851626:	57fd                	li	a5,-1
    e8851628:	d63e                	sw	a5,44(sp)
	if( err ) _HTTPServerStop( me );
    e885162a:	c481                	beqz	s1,e8851632 <_HTTPServerControl+0xb0>
    e885162c:	8522                	mv	a0,s0
    e885162e:	ecbff0ef          	jal	ra,e88514f8 <_HTTPServerStop>
}
    e8851632:	60e6                	ld	ra,88(sp)
    e8851634:	6446                	ld	s0,80(sp)
    e8851636:	8526                	mv	a0,s1
    e8851638:	6906                	ld	s2,64(sp)
    e885163a:	64a6                	ld	s1,72(sp)
    e885163c:	79e2                	ld	s3,56(sp)
    e885163e:	6125                	addi	sp,sp,96
    e8851640:	8082                	ret
		source = dispatch_source_create( DISPATCH_SOURCE_TYPE_READ, (uintptr_t) sockV4, 0, me->queue );
    e8851642:	6414                	ld	a3,8(s0)
    e8851644:	55a2                	lw	a1,40(sp)
    e8851646:	4601                	li	a2,0
    e8851648:	4501                	li	a0,0
    e885164a:	f64fd0ef          	jal	ra,e884edae <dispatch_source_create>
    e885164e:	89aa                	mv	s3,a0
		if( !source ) free( listener );
    e8851650:	e145                	bnez	a0,e88516f0 <_HTTPServerControl+0x16e>
		if( !source ) free( listener );
    e8851652:	854a                	mv	a0,s2
		require_action( source, exit, err = kUnknownErr );
    e8851654:	74f9                	lui	s1,0xffffe
		if( !source ) free( listener );
    e8851656:	4ab2a0ef          	jal	ra,e887c300 <eLIBs_free>
		require_action( source, exit, err = kUnknownErr );
    e885165a:	5d448493          	addi	s1,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e885165e:	bf45                	j	e885160e <_HTTPServerControl+0x8c>
		err = me->delegate.control_f( me, 0, kHTTPServerCommand_StartServer, NULL, NULL, me->delegate.context );
    e8851660:	743c                	ld	a5,104(s0)
    e8851662:	4701                	li	a4,0
    e8851664:	4681                	li	a3,0
    e8851666:	0004c617          	auipc	a2,0x4c
    e885166a:	c2a60613          	addi	a2,a2,-982 # e889d290 <icmp6_param_problem+0x222>
    e885166e:	4581                	li	a1,0
    e8851670:	8522                	mv	a0,s0
    e8851672:	9802                	jalr	a6
		require_noerr( err, exit );
    e8851674:	14050463          	beqz	a0,e88517bc <_HTTPServerControl+0x23a>
    e8851678:	84aa                	mv	s1,a0
    e885167a:	bf51                	j	e885160e <_HTTPServerControl+0x8c>
	http_server_ulog( me, kLogLevelInfo, "Listening on port %d\n", me->listeningPort );
    e885167c:	02800593          	li	a1,40
    e8851680:	1f3020ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8851684:	d549                	beqz	a0,e885160e <_HTTPServerControl+0x8c>
    e8851686:	aa91                	j	e88517da <_HTTPServerControl+0x258>
	else if( CFEqual( inCommand, kHTTPServerCommand_StopServer ) )
    e8851688:	8532                	mv	a0,a2
    e885168a:	0004c597          	auipc	a1,0x4c
    e885168e:	bee58593          	addi	a1,a1,-1042 # e889d278 <icmp6_param_problem+0x20a>
    e8851692:	ec3a                	sd	a4,24(sp)
    e8851694:	e836                	sd	a3,16(sp)
    e8851696:	e432                	sd	a2,8(sp)
    e8851698:	ab7f50ef          	jal	ra,e884714e <CFEqual>
    e885169c:	6622                	ld	a2,8(sp)
    e885169e:	fae1468b          	ldd	a3,a4,(sp),1,4
    e88516a2:	c511                	beqz	a0,e88516ae <_HTTPServerControl+0x12c>
		_HTTPServerStop( me );
    e88516a4:	8522                	mv	a0,s0
    e88516a6:	e53ff0ef          	jal	ra,e88514f8 <_HTTPServerStop>
	err = kNoErr;
    e88516aa:	4481                	li	s1,0
    e88516ac:	b759                	j	e8851632 <_HTTPServerControl+0xb0>
	else if( me->delegate.control_f )
    e88516ae:	08043803          	ld	a6,128(s0)
    e88516b2:	00080863          	beqz	a6,e88516c2 <_HTTPServerControl+0x140>
		return( me->delegate.control_f( me, inFlags, inCommand, inQualifier, inParams, me->delegate.context ) );
    e88516b6:	743c                	ld	a5,104(s0)
    e88516b8:	85a6                	mv	a1,s1
    e88516ba:	8522                	mv	a0,s0
    e88516bc:	9802                	jalr	a6
    e88516be:	84aa                	mv	s1,a0
    e88516c0:	bf8d                	j	e8851632 <_HTTPServerControl+0xb0>
		dlogassert( "Unsupported command %@", inCommand );
    e88516c2:	88b2                	mv	a7,a2
    e88516c4:	00070817          	auipc	a6,0x70
    e88516c8:	94c80813          	addi	a6,a6,-1716 # e88c1010 <kHTTPMessageClass+0x160>
    e88516cc:	00070797          	auipc	a5,0x70
    e88516d0:	a2c78793          	addi	a5,a5,-1492 # e88c10f8 <__PRETTY_FUNCTION__.10018>
    e88516d4:	10a00713          	li	a4,266
    e88516d8:	00070697          	auipc	a3,0x70
    e88516dc:	97068693          	addi	a3,a3,-1680 # e88c1048 <kHTTPMessageClass+0x198>
    e88516e0:	4601                	li	a2,0
    e88516e2:	4581                	li	a1,0
		err = kNotHandledErr;
    e88516e4:	74f9                	lui	s1,0xffffe
		dlogassert( "Unsupported command %@", inCommand );
    e88516e6:	ce3fc0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kNotHandledErr;
    e88516ea:	5c648493          	addi	s1,s1,1478 # ffffffffffffe5c6 <__DRAM0_INF_BASE+0xffffffff0000e5c6>
		goto exit;
    e88516ee:	b791                	j	e8851632 <_HTTPServerControl+0xb0>
		CFRetain( me );
    e88516f0:	8522                	mv	a0,s0
    e88516f2:	a55f50ef          	jal	ra,e8847146 <CFRetain>
		listener->source	= source;
    e88516f6:	01393023          	sd	s3,0(s2)
		listener->sock		= sockV4;
    e88516fa:	57a2                	lw	a5,40(sp)
		listener->server	= me;
    e88516fc:	00893823          	sd	s0,16(s2)
		dispatch_set_context( source, listener );
    e8851700:	85ca                	mv	a1,s2
		listener->sock		= sockV4;
    e8851702:	00f92423          	sw	a5,8(s2)
		dispatch_set_context( source, listener );
    e8851706:	854e                	mv	a0,s3
		me->listenerV4		= listener;
    e8851708:	01243c23          	sd	s2,24(s0)
		dispatch_set_context( source, listener );
    e885170c:	d10fd0ef          	jal	ra,e884ec1c <dispatch_set_context>
		dispatch_source_set_event_handler_f( source, _HTTPServerAcceptConnection );
    e8851710:	00000597          	auipc	a1,0x0
    e8851714:	23c58593          	addi	a1,a1,572 # e885194c <_HTTPServerAcceptConnection>
    e8851718:	854e                	mv	a0,s3
    e885171a:	f50fd0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
		dispatch_source_set_cancel_handler_f( source, _HTTPServerListenerCanceled );
    e885171e:	00000597          	auipc	a1,0x0
    e8851722:	99a58593          	addi	a1,a1,-1638 # e88510b8 <_HTTPServerListenerCanceled>
    e8851726:	854e                	mv	a0,s3
    e8851728:	f46fd0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
		dispatch_resume( source );
    e885172c:	854e                	mv	a0,s3
    e885172e:	bc8fe0ef          	jal	ra,e884faf6 <dispatch_resume>
		sockV4 = kInvalidSocketRef;
    e8851732:	57fd                	li	a5,-1
    e8851734:	d43e                	sw	a5,40(sp)
	if( IsValidSocket( sockV6 ) )
    e8851736:	5532                	lw	a0,44(sp)
    e8851738:	06054e63          	bltz	a0,e88517b4 <_HTTPServerControl+0x232>
		if( me->allowP2P ) SocketSetP2P( sockV6, true );
    e885173c:	0d842783          	lw	a5,216(s0)
    e8851740:	c781                	beqz	a5,e8851748 <_HTTPServerControl+0x1c6>
    e8851742:	4585                	li	a1,1
    e8851744:	3a7040ef          	jal	ra,e88562ea <SocketSetP2P>
    p = malloc(len);
    e8851748:	4561                	li	a0,24
    e885174a:	1042a0ef          	jal	ra,e887b84e <my_malloc>
    e885174e:	892a                	mv	s2,a0
    memset(p,0,len);
    e8851750:	4661                	li	a2,24
    e8851752:	4581                	li	a1,0
    e8851754:	4412a0ef          	jal	ra,e887c394 <eLIBs_memset>
		require_action( listener, exit, err = kNoMemoryErr );
    e8851758:	ea0908e3          	beqz	s2,e8851608 <_HTTPServerControl+0x86>
		source = dispatch_source_create( DISPATCH_SOURCE_TYPE_READ, (uintptr_t) sockV6, 0, me->queue );
    e885175c:	6414                	ld	a3,8(s0)
    e885175e:	55b2                	lw	a1,44(sp)
    e8851760:	4601                	li	a2,0
    e8851762:	4501                	li	a0,0
    e8851764:	e4afd0ef          	jal	ra,e884edae <dispatch_source_create>
    e8851768:	89aa                	mv	s3,a0
		if( !source ) free( listener );
    e885176a:	ee0504e3          	beqz	a0,e8851652 <_HTTPServerControl+0xd0>
		CFRetain( me );
    e885176e:	8522                	mv	a0,s0
    e8851770:	9d7f50ef          	jal	ra,e8847146 <CFRetain>
		listener->source	= source;
    e8851774:	01393023          	sd	s3,0(s2)
		listener->sock		= sockV6;
    e8851778:	57b2                	lw	a5,44(sp)
		listener->server	= me;
    e885177a:	00893823          	sd	s0,16(s2)
		dispatch_set_context( source, listener );
    e885177e:	85ca                	mv	a1,s2
		listener->sock		= sockV6;
    e8851780:	00f92423          	sw	a5,8(s2)
		dispatch_set_context( source, listener );
    e8851784:	854e                	mv	a0,s3
		me->listenerV6		= listener;
    e8851786:	03243023          	sd	s2,32(s0)
		dispatch_set_context( source, listener );
    e885178a:	c92fd0ef          	jal	ra,e884ec1c <dispatch_set_context>
		dispatch_source_set_event_handler_f( source, _HTTPServerAcceptConnection );
    e885178e:	00000597          	auipc	a1,0x0
    e8851792:	1be58593          	addi	a1,a1,446 # e885194c <_HTTPServerAcceptConnection>
    e8851796:	854e                	mv	a0,s3
    e8851798:	ed2fd0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
		dispatch_source_set_cancel_handler_f( source, _HTTPServerListenerCanceled );
    e885179c:	00000597          	auipc	a1,0x0
    e88517a0:	91c58593          	addi	a1,a1,-1764 # e88510b8 <_HTTPServerListenerCanceled>
    e88517a4:	854e                	mv	a0,s3
    e88517a6:	ec8fd0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
		dispatch_resume( source );
    e88517aa:	854e                	mv	a0,s3
    e88517ac:	b4afe0ef          	jal	ra,e884faf6 <dispatch_resume>
		sockV6 = kInvalidSocketRef;
    e88517b0:	57fd                	li	a5,-1
    e88517b2:	d63e                	sw	a5,44(sp)
	if( me->delegate.control_f )
    e88517b4:	08043803          	ld	a6,128(s0)
    e88517b8:	ea0814e3          	bnez	a6,e8851660 <_HTTPServerControl+0xde>
	CFRetain( me );
    e88517bc:	8522                	mv	a0,s0
    e88517be:	989f50ef          	jal	ra,e8847146 <CFRetain>
	http_server_ulog( me, kLogLevelInfo, "Listening on port %d\n", me->listeningPort );
    e88517c2:	6808                	ld	a0,16(s0)
	me->started = true;
    e88517c4:	4785                	li	a5,1
    e88517c6:	02f40c23          	sb	a5,56(s0)
	http_server_ulog( me, kLogLevelInfo, "Listening on port %d\n", me->listeningPort );
    e88517ca:	411c                	lw	a5,0(a0)
    e88517cc:	02800713          	li	a4,40
    e88517d0:	e2f74fe3          	blt	a4,a5,e885160e <_HTTPServerControl+0x8c>
    e88517d4:	577d                	li	a4,-1
    e88517d6:	eae783e3          	beq	a5,a4,e885167c <_HTTPServerControl+0xfa>
    e88517da:	5418                	lw	a4,40(s0)
    e88517dc:	6808                	ld	a0,16(s0)
    e88517de:	00070697          	auipc	a3,0x70
    e88517e2:	81a68693          	addi	a3,a3,-2022 # e88c0ff8 <kHTTPMessageClass+0x148>
    e88517e6:	02800613          	li	a2,40
    e88517ea:	00070597          	auipc	a1,0x70
    e88517ee:	92658593          	addi	a1,a1,-1754 # e88c1110 <__PRETTY_FUNCTION__.10055>
    e88517f2:	483020ef          	jal	ra,e8854474 <LogPrintF>
    e88517f6:	bd21                	j	e885160e <_HTTPServerControl+0x8c>

00000000e88517f8 <HTTPConnectionStart>:
{
    e88517f8:	7139                	addi	sp,sp,-64
    e88517fa:	f422                	sd	s0,40(sp)
    e88517fc:	fc06                	sd	ra,56(sp)
    e88517fe:	f826                	sd	s1,48(sp)
	if( !inCnx->queue ) HTTPConnectionSetDispatchQueue( inCnx, dispatch_get_main_queue() );
    e8851800:	753c                	ld	a5,104(a0)
{
    e8851802:	842a                	mv	s0,a0
	if( !inCnx->queue ) HTTPConnectionSetDispatchQueue( inCnx, dispatch_get_main_queue() );
    e8851804:	e799                	bnez	a5,e8851812 <HTTPConnectionStart+0x1a>
    e8851806:	d5afe0ef          	jal	ra,e884fd60 <dispatch_get_main_queue>
    e885180a:	85aa                	mv	a1,a0
    e885180c:	8522                	mv	a0,s0
    e885180e:	ba5ff0ef          	jal	ra,e88513b2 <HTTPConnectionSetDispatchQueue>
	err = SocketMakeNonBlocking( inCnx->sock );
    e8851812:	5c28                	lw	a0,120(s0)
    e8851814:	4585                	li	a1,1
	len = (socklen_t) sizeof( inCnx->selfAddr );
    e8851816:	44f1                	li	s1,28
	err = SocketMakeNonBlocking( inCnx->sock );
    e8851818:	031040ef          	jal	ra,e8856048 <SocketSetNonBlocking>
	len = (socklen_t) sizeof( inCnx->selfAddr );
    e885181c:	cc26                	sw	s1,24(sp)
	err = getsockname( inCnx->sock, &inCnx->selfAddr.sa, &len );
    e885181e:	5c28                	lw	a0,120(s0)
    e8851820:	0830                	addi	a2,sp,24
    e8851822:	0a440593          	addi	a1,s0,164
    e8851826:	091340ef          	jal	ra,e88860b6 <lwip_getsockname>
	len = (socklen_t) sizeof( inCnx->peerAddr );
    e885182a:	cc26                	sw	s1,24(sp)
	err = getpeername( inCnx->sock, &inCnx->peerAddr.sa, &len );
    e885182c:	5c28                	lw	a0,120(s0)
    e885182e:	0830                	addi	a2,sp,24
    e8851830:	0c040593          	addi	a1,s0,192
    e8851834:	07d340ef          	jal	ra,e88860b0 <lwip_getpeername>
	SocketGetInterfaceInfo( inCnx->sock, NULL, inCnx->ifName, NULL, NULL, NULL, NULL, NULL, NULL, &inCnx->transportType );
    e8851838:	e002                	sd	zero,0(sp)
    e885183a:	08440793          	addi	a5,s0,132
    e885183e:	5c28                	lw	a0,120(s0)
    e8851840:	e43e                	sd	a5,8(sp)
    e8851842:	4701                	li	a4,0
    e8851844:	4781                	li	a5,0
    e8851846:	4881                	li	a7,0
    e8851848:	4801                	li	a6,0
    e885184a:	4681                	li	a3,0
    e885184c:	07c40613          	addi	a2,s0,124
    e8851850:	4581                	li	a1,0
    e8851852:	430050ef          	jal	ra,e8856c82 <SocketGetInterfaceInfo>
	if( !NetTransportTypeIsP2P( inCnx->transportType ) ) SocketSetP2P( inCnx->sock, false ); // Clear if P2P was inherited.
    e8851856:	08442703          	lw	a4,132(s0)
    e885185a:	04000793          	li	a5,64
    e885185e:	00f70663          	beq	a4,a5,e885186a <HTTPConnectionStart+0x72>
    e8851862:	5c28                	lw	a0,120(s0)
    e8851864:	4581                	li	a1,0
    e8851866:	285040ef          	jal	ra,e88562ea <SocketSetP2P>
	err = setsockopt( inCnx->sock, IPPROTO_TCP, TCP_NODELAY, (char *) &option, (socklen_t) sizeof( option ) );
    e885186a:	5c28                	lw	a0,120(s0)
	option = 1;
    e885186c:	4785                	li	a5,1
	err = setsockopt( inCnx->sock, IPPROTO_TCP, TCP_NODELAY, (char *) &option, (socklen_t) sizeof( option ) );
    e885186e:	4711                	li	a4,4
    e8851870:	0874                	addi	a3,sp,28
    e8851872:	4605                	li	a2,1
    e8851874:	4599                	li	a1,6
	option = 1;
    e8851876:	ce3e                	sw	a5,28(sp)
	err = setsockopt( inCnx->sock, IPPROTO_TCP, TCP_NODELAY, (char *) &option, (socklen_t) sizeof( option ) );
    e8851878:	3e1340ef          	jal	ra,e8886458 <lwip_setsockopt>
    e885187c:	84aa                	mv	s1,a0
	err = map_socket_noerr_errno( inCnx->sock, err );
    e885187e:	c911                	beqz	a0,e8851892 <HTTPConnectionStart+0x9a>
    e8851880:	00093797          	auipc	a5,0x93
    e8851884:	da878793          	addi	a5,a5,-600 # e88e4628 <lwip_errno>
    e8851888:	4384                	lw	s1,0(a5)
    e885188a:	e481                	bnez	s1,e8851892 <HTTPConnectionStart+0x9a>
    e885188c:	74f9                	lui	s1,0xffffe
    e885188e:	5d448493          	addi	s1,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( inCnx->transportDelegate.initialize_f )
    e8851892:	10843783          	ld	a5,264(s0)
    e8851896:	5c28                	lw	a0,120(s0)
    e8851898:	cb91                	beqz	a5,e88518ac <HTTPConnectionStart+0xb4>
		err = inCnx->transportDelegate.initialize_f( inCnx->sock, inCnx->transportDelegate.context );
    e885189a:	10043583          	ld	a1,256(s0)
    e885189e:	9782                	jalr	a5
    e88518a0:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e88518a2:	c911                	beqz	a0,e88518b6 <HTTPConnectionStart+0xbe>
	if( err ) HTTPConnectionStop( inCnx );
    e88518a4:	8522                	mv	a0,s0
    e88518a6:	b3bff0ef          	jal	ra,e88513e0 <HTTPConnectionStop>
    e88518aa:	a859                	j	e8851940 <HTTPConnectionStart+0x148>
	else if( !inCnx->hasTransportDelegate ) inCnx->transportDelegate.context = (void *)(intptr_t) inCnx->sock;
    e88518ac:	12844783          	lbu	a5,296(s0)
    e88518b0:	e399                	bnez	a5,e88518b6 <HTTPConnectionStart+0xbe>
    e88518b2:	10a43023          	sd	a0,256(s0)
	inCnx->readSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_READ, (uintptr_t) inCnx->sock, 0, inCnx->queue );
    e88518b6:	7434                	ld	a3,104(s0)
    e88518b8:	5c2c                	lw	a1,120(s0)
    e88518ba:	4601                	li	a2,0
    e88518bc:	4501                	li	a0,0
    e88518be:	cf0fd0ef          	jal	ra,e884edae <dispatch_source_create>
    e88518c2:	e448                	sd	a0,136(s0)
	require_action( inCnx->readSource, exit, err = kUnknownErr );
    e88518c4:	e509                	bnez	a0,e88518ce <HTTPConnectionStart+0xd6>
    e88518c6:	74f9                	lui	s1,0xffffe
    e88518c8:	5d448493          	addi	s1,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e88518cc:	bfe1                	j	e88518a4 <HTTPConnectionStart+0xac>
	CFRetain( inCnx );
    e88518ce:	8522                	mv	a0,s0
    e88518d0:	877f50ef          	jal	ra,e8847146 <CFRetain>
	dispatch_set_context( inCnx->readSource, inCnx );
    e88518d4:	6448                	ld	a0,136(s0)
    e88518d6:	85a2                	mv	a1,s0
    e88518d8:	b44fd0ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( inCnx->readSource, _HTTPConnectionReadHandler );
    e88518dc:	6448                	ld	a0,136(s0)
    e88518de:	00000597          	auipc	a1,0x0
    e88518e2:	38858593          	addi	a1,a1,904 # e8851c66 <_HTTPConnectionReadHandler>
    e88518e6:	d84fd0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( inCnx->readSource, _HTTPConnectionCancelHandler );
    e88518ea:	6448                	ld	a0,136(s0)
    e88518ec:	fffff597          	auipc	a1,0xfffff
    e88518f0:	75c58593          	addi	a1,a1,1884 # e8851048 <_HTTPConnectionCancelHandler>
    e88518f4:	d7afd0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	dispatch_resume( inCnx->readSource );
    e88518f8:	6448                	ld	a0,136(s0)
    e88518fa:	9fcfe0ef          	jal	ra,e884faf6 <dispatch_resume>
	inCnx->writeSource = dispatch_source_create( DISPATCH_SOURCE_TYPE_WRITE, (uintptr_t) inCnx->sock, 0, inCnx->queue );
    e88518fe:	7434                	ld	a3,104(s0)
    e8851900:	5c2c                	lw	a1,120(s0)
    e8851902:	4601                	li	a2,0
    e8851904:	450d                	li	a0,3
    e8851906:	ca8fd0ef          	jal	ra,e884edae <dispatch_source_create>
    e885190a:	ec48                	sd	a0,152(s0)
	require_action( inCnx->writeSource, exit, err = kUnknownErr );
    e885190c:	dd4d                	beqz	a0,e88518c6 <HTTPConnectionStart+0xce>
	CFRetain( inCnx );
    e885190e:	8522                	mv	a0,s0
    e8851910:	837f50ef          	jal	ra,e8847146 <CFRetain>
	dispatch_set_context( inCnx->writeSource, inCnx );
    e8851914:	6c48                	ld	a0,152(s0)
    e8851916:	85a2                	mv	a1,s0
    e8851918:	b04fd0ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( inCnx->writeSource, _HTTPConnectionWriteHandler );
    e885191c:	6c48                	ld	a0,152(s0)
    e885191e:	00000597          	auipc	a1,0x0
    e8851922:	32858593          	addi	a1,a1,808 # e8851c46 <_HTTPConnectionWriteHandler>
    e8851926:	d44fd0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( inCnx->writeSource, _HTTPConnectionCancelHandler );
    e885192a:	6c48                	ld	a0,152(s0)
    e885192c:	fffff597          	auipc	a1,0xfffff
    e8851930:	71c58593          	addi	a1,a1,1820 # e8851048 <_HTTPConnectionCancelHandler>
    e8851934:	d3afd0ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	inCnx->writeSuspended = true; // Don't resume until we get EWOULDBLOCK.
    e8851938:	4785                	li	a5,1
    e885193a:	0af40023          	sb	a5,160(s0)
	if( err ) HTTPConnectionStop( inCnx );
    e885193e:	f0bd                	bnez	s1,e88518a4 <HTTPConnectionStart+0xac>
}
    e8851940:	70e2                	ld	ra,56(sp)
    e8851942:	7422                	ld	s0,40(sp)
    e8851944:	8526                	mv	a0,s1
    e8851946:	74c2                	ld	s1,48(sp)
    e8851948:	6121                	addi	sp,sp,64
    e885194a:	8082                	ret

00000000e885194c <_HTTPServerAcceptConnection>:
{
    e885194c:	7159                	addi	sp,sp,-112
    e885194e:	eca6                	sd	s1,88(sp)
    e8851950:	f486                	sd	ra,104(sp)
    e8851952:	f0a2                	sd	s0,96(sp)
    e8851954:	e8ca                	sd	s2,80(sp)
    e8851956:	84aa                	mv	s1,a0
	HTTPServerRef const				server		= listener->server;
    e8851958:	6900                	ld	s0,16(a0)
	printf("_HTTPServerAcceptConnection\n");
    e885195a:	0006f517          	auipc	a0,0x6f
    e885195e:	5de50513          	addi	a0,a0,1502 # e88c0f38 <kHTTPMessageClass+0x88>
	HTTPConnectionRef				cnx			= NULL;
    e8851962:	e002                	sd	zero,0(sp)
	printf("_HTTPServerAcceptConnection\n");
    e8851964:	1632a0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	newSock = accept( listener->sock, NULL, NULL );
    e8851968:	4488                	lw	a0,8(s1)
    e885196a:	4601                	li	a2,0
    e885196c:	4581                	li	a1,0
    e885196e:	548330ef          	jal	ra,e8884eb6 <lwip_accept>
	err = map_socket_creation_errno( newSock );
    e8851972:	04055e63          	bgez	a0,e88519ce <_HTTPServerAcceptConnection+0x82>
    e8851976:	00093797          	auipc	a5,0x93
    e885197a:	cb278793          	addi	a5,a5,-846 # e88e4628 <lwip_errno>
    e885197e:	4384                	lw	s1,0(a5)
    e8851980:	e481                	bnez	s1,e8851988 <_HTTPServerAcceptConnection+0x3c>
    e8851982:	74f9                	lui	s1,0xffffe
    e8851984:	5d448493          	addi	s1,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( cnx ) _HTTPServerCloseConnection( cnx, cnx->delegate.context );
    e8851988:	6502                	ld	a0,0(sp)
    e885198a:	c501                	beqz	a0,e8851992 <_HTTPServerAcceptConnection+0x46>
    e885198c:	710c                	ld	a1,32(a0)
    e885198e:	aedff0ef          	jal	ra,e885147a <_HTTPServerCloseConnection>
	if( err ) http_server_ulog( server, kLogLevelWarning, "### Accept connection failed: %#m\n", err );
    e8851992:	c885                	beqz	s1,e88519c2 <_HTTPServerAcceptConnection+0x76>
    e8851994:	6808                	ld	a0,16(s0)
    e8851996:	03c00713          	li	a4,60
    e885199a:	411c                	lw	a5,0(a0)
    e885199c:	02f74363          	blt	a4,a5,e88519c2 <_HTTPServerAcceptConnection+0x76>
    e88519a0:	577d                	li	a4,-1
    e88519a2:	0ce78a63          	beq	a5,a4,e8851a76 <_HTTPServerAcceptConnection+0x12a>
    e88519a6:	6808                	ld	a0,16(s0)
    e88519a8:	8726                	mv	a4,s1
    e88519aa:	0006f697          	auipc	a3,0x6f
    e88519ae:	5d668693          	addi	a3,a3,1494 # e88c0f80 <kHTTPMessageClass+0xd0>
    e88519b2:	03c00613          	li	a2,60
    e88519b6:	0006f597          	auipc	a1,0x6f
    e88519ba:	77258593          	addi	a1,a1,1906 # e88c1128 <__PRETTY_FUNCTION__.10077>
    e88519be:	2b7020ef          	jal	ra,e8854474 <LogPrintF>
}
    e88519c2:	70a6                	ld	ra,104(sp)
    e88519c4:	7406                	ld	s0,96(sp)
    e88519c6:	64e6                	ld	s1,88(sp)
    e88519c8:	6946                	ld	s2,80(sp)
    e88519ca:	6165                	addi	sp,sp,112
    e88519cc:	8082                	ret
    e88519ce:	892a                	mv	s2,a0
	HTTPConnectionDelegateInit( &delegate );
    e88519d0:	04800613          	li	a2,72
    e88519d4:	4581                	li	a1,0
    e88519d6:	0028                	addi	a0,sp,8
    e88519d8:	1bd2a0ef          	jal	ra,e887c394 <eLIBs_memset>
	delegate.context			= server->delegate.context;
    e88519dc:	743c                	ld	a5,104(s0)
	err = HTTPConnectionCreate( &cnx, &delegate, newSock, server );
    e88519de:	86a2                	mv	a3,s0
    e88519e0:	864a                	mv	a2,s2
	delegate.context			= server->delegate.context;
    e88519e2:	e83e                	sd	a5,16(sp)
	delegate.extraLen			= server->delegate.connectionExtraLen;
    e88519e4:	705c                	ld	a5,160(s0)
	err = HTTPConnectionCreate( &cnx, &delegate, newSock, server );
    e88519e6:	002c                	addi	a1,sp,8
    e88519e8:	850a                	mv	a0,sp
	delegate.extraLen			= server->delegate.connectionExtraLen;
    e88519ea:	e43e                	sd	a5,8(sp)
	delegate.httpProtocol		= server->delegate.httpProtocol;
    e88519ec:	745c                	ld	a5,168(s0)
    e88519ee:	ec3e                	sd	a5,24(sp)
	delegate.initialize_f		= server->delegate.initializeConnection_f;
    e88519f0:	785c                	ld	a5,176(s0)
    e88519f2:	f03e                	sd	a5,32(sp)
	delegate.finalize_f			= server->delegate.finalizeConnection_f;
    e88519f4:	7c5c                	ld	a5,184(s0)
    e88519f6:	f43e                	sd	a5,40(sp)
	delegate.requiresAuth_f		= server->delegate.requiresAuth_f;
    e88519f8:	607c                	ld	a5,192(s0)
    e88519fa:	fc3e                	sd	a5,56(sp)
	delegate.handleMessage_f	= server->delegate.handleMessage_f;
    e88519fc:	647c                	ld	a5,200(s0)
    e88519fe:	e0be                	sd	a5,64(sp)
	delegate.initResponse_f		= server->delegate.initResponse_f;
    e8851a00:	687c                	ld	a5,208(s0)
    e8851a02:	e4be                	sd	a5,72(sp)
	err = HTTPConnectionCreate( &cnx, &delegate, newSock, server );
    e8851a04:	8bdff0ef          	jal	ra,e88512c0 <HTTPConnectionCreate>
    e8851a08:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e8851a0a:	e135                	bnez	a0,e8851a6e <_HTTPServerAcceptConnection+0x122>
	cnx->close_f = _HTTPServerCloseConnection;
    e8851a0c:	6502                	ld	a0,0(sp)
    e8851a0e:	00000797          	auipc	a5,0x0
    e8851a12:	a6c78793          	addi	a5,a5,-1428 # e885147a <_HTTPServerCloseConnection>
    e8851a16:	f13c                	sd	a5,96(a0)
	HTTPConnectionSetDispatchQueue( cnx, server->queue );
    e8851a18:	640c                	ld	a1,8(s0)
    e8851a1a:	999ff0ef          	jal	ra,e88513b2 <HTTPConnectionSetDispatchQueue>
	cnx->next = server->connections;
    e8851a1e:	6502                	ld	a0,0(sp)
    e8851a20:	781c                	ld	a5,48(s0)
    e8851a22:	e51c                	sd	a5,8(a0)
	server->connections = cnx;
    e8851a24:	f808                	sd	a0,48(s0)
	err = HTTPConnectionStart( cnx );
    e8851a26:	dd3ff0ef          	jal	ra,e88517f8 <HTTPConnectionStart>
    e8851a2a:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e8851a2c:	fd31                	bnez	a0,e8851988 <_HTTPServerAcceptConnection+0x3c>
	http_server_ulog( server, kLogLevelTrace, "Accepted connection from %##a to %##a\n", &cnx->peerAddr, &cnx->selfAddr );
    e8851a2e:	6808                	ld	a0,16(s0)
    e8851a30:	4779                	li	a4,30
    e8851a32:	411c                	lw	a5,0(a0)
    e8851a34:	02f74663          	blt	a4,a5,e8851a60 <_HTTPServerAcceptConnection+0x114>
    e8851a38:	577d                	li	a4,-1
    e8851a3a:	02e78563          	beq	a5,a4,e8851a64 <_HTTPServerAcceptConnection+0x118>
    e8851a3e:	6702                	ld	a4,0(sp)
    e8851a40:	6808                	ld	a0,16(s0)
    e8851a42:	0006f697          	auipc	a3,0x6f
    e8851a46:	51668693          	addi	a3,a3,1302 # e88c0f58 <kHTTPMessageClass+0xa8>
    e8851a4a:	0a470793          	addi	a5,a4,164
    e8851a4e:	4679                	li	a2,30
    e8851a50:	0c070713          	addi	a4,a4,192
    e8851a54:	0006f597          	auipc	a1,0x6f
    e8851a58:	6d458593          	addi	a1,a1,1748 # e88c1128 <__PRETTY_FUNCTION__.10077>
    e8851a5c:	219020ef          	jal	ra,e8854474 <LogPrintF>
	cnx = NULL;
    e8851a60:	e002                	sd	zero,0(sp)
	ForgetSocket( &newSock );
    e8851a62:	b71d                	j	e8851988 <_HTTPServerAcceptConnection+0x3c>
	http_server_ulog( server, kLogLevelTrace, "Accepted connection from %##a to %##a\n", &cnx->peerAddr, &cnx->selfAddr );
    e8851a64:	45f9                	li	a1,30
    e8851a66:	60c020ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8851a6a:	d97d                	beqz	a0,e8851a60 <_HTTPServerAcceptConnection+0x114>
    e8851a6c:	bfc9                	j	e8851a3e <_HTTPServerAcceptConnection+0xf2>
	ForgetSocket( &newSock );
    e8851a6e:	854a                	mv	a0,s2
    e8851a70:	732330ef          	jal	ra,e88851a2 <lwip_close>
    e8851a74:	bf11                	j	e8851988 <_HTTPServerAcceptConnection+0x3c>
	if( err ) http_server_ulog( server, kLogLevelWarning, "### Accept connection failed: %#m\n", err );
    e8851a76:	03c00593          	li	a1,60
    e8851a7a:	5f8020ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8851a7e:	d131                	beqz	a0,e88519c2 <_HTTPServerAcceptConnection+0x76>
    e8851a80:	b71d                	j	e88519a6 <_HTTPServerAcceptConnection+0x5a>

00000000e8851a82 <_HTTPConnectionRunStateMachine>:
{
    e8851a82:	711d                	addi	sp,sp,-96
    e8851a84:	e8a2                	sd	s0,80(sp)
    e8851a86:	e0ca                	sd	s2,64(sp)
    e8851a88:	fc4e                	sd	s3,56(sp)
    e8851a8a:	f852                	sd	s4,48(sp)
    e8851a8c:	f456                	sd	s5,40(sp)
    e8851a8e:	f05a                	sd	s6,32(sp)
    e8851a90:	ec5e                	sd	s7,24(sp)
    e8851a92:	e862                	sd	s8,16(sp)
    e8851a94:	e466                	sd	s9,8(sp)
    e8851a96:	ec86                	sd	ra,88(sp)
    e8851a98:	e4a6                	sd	s1,72(sp)
    e8851a9a:	842a                	mv	s0,a0
		else if( inCnx->state == kHTTPConnectionStateProcessingRequest )
    e8851a9c:	4a85                	li	s5,1
		else if( inCnx->state == kHTTPConnectionStateWritingResponse )
    e8851a9e:	4b09                	li	s6,2
		else if( inCnx->state == kHTTPConnectionStatePreparingEvent )
    e8851aa0:	4b8d                	li	s7,3
		else if( inCnx->state == kHTTPConnectionStateWritingEvent )
    e8851aa2:	4c11                	li	s8,4
			if( err == EWOULDBLOCK ) break;
    e8851aa4:	492d                	li	s2,11
			if( msg->completion ) msg->completion( msg );
    e8851aa6:	6985                	lui	s3,0x1
			inCnx->state = kHTTPConnectionStatePreparingEvent;
    e8851aa8:	4a0d                	li	s4,3
				  inCnx->eventNext = &inCnx->eventList;
    e8851aaa:	0f050c93          	addi	s9,a0,240
		if( inCnx->state == kHTTPConnectionStateReadingRequest )
    e8851aae:	0dc44883          	lbu	a7,220(s0)
    e8851ab2:	06089963          	bnez	a7,e8851b24 <_HTTPConnectionRunStateMachine+0xa2>
			msg = inCnx->requestMsg;
    e8851ab6:	7064                	ld	s1,224(s0)
			err = HTTPMessageReadMessage( msg, inCnx->transportDelegate.read_f, inCnx->transportDelegate.context );
    e8851ab8:	10043603          	ld	a2,256(s0)
    e8851abc:	11843583          	ld	a1,280(s0)
    e8851ac0:	8526                	mv	a0,s1
    e8851ac2:	bdeff0ef          	jal	ra,e8850ea0 <HTTPMessageReadMessage>
			err = _HTTPConnectionHandleIOError( inCnx, err, true );
    e8851ac6:	85aa                	mv	a1,a0
    e8851ac8:	4605                	li	a2,1
    e8851aca:	8522                	mv	a0,s0
    e8851acc:	d80ff0ef          	jal	ra,e885104c <_HTTPConnectionHandleIOError>
			if( err == EWOULDBLOCK ) break;
    e8851ad0:	03250d63          	beq	a0,s2,e8851b0a <_HTTPConnectionRunStateMachine+0x88>
			require_noerr_quiet( err, exit );
    e8851ad4:	14051363          	bnez	a0,e8851c1a <_HTTPConnectionRunStateMachine+0x198>
			LogHTTP( inCnx->ucat, inCnx->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e8851ad8:	782c                	ld	a1,112(s0)
    e8851ada:	5204b783          	ld	a5,1312(s1)
    e8851ade:	5184b703          	ld	a4,1304(s1)
    e8851ae2:	4104b683          	ld	a3,1040(s1)
    e8851ae6:	852e                	mv	a0,a1
    e8851ae8:	01048613          	addi	a2,s1,16
    e8851aec:	517000ef          	jal	ra,e8852802 <LogHTTP>
			err = inCnx->delegate.handleMessage_f( inCnx, msg, inCnx->delegate.context );
    e8851af0:	683c                	ld	a5,80(s0)
    e8851af2:	7010                	ld	a2,32(s0)
    e8851af4:	85a6                	mv	a1,s1
    e8851af6:	8522                	mv	a0,s0
    e8851af8:	9782                	jalr	a5
			require_noerr_quiet( err, exit );
    e8851afa:	12051063          	bnez	a0,e8851c1a <_HTTPConnectionRunStateMachine+0x198>
			if( inCnx->state == kHTTPConnectionStateReadingRequest )
    e8851afe:	0dc44783          	lbu	a5,220(s0)
    e8851b02:	f7d5                	bnez	a5,e8851aae <_HTTPConnectionRunStateMachine+0x2c>
				inCnx->state = kHTTPConnectionStateProcessingRequest;
    e8851b04:	4785                	li	a5,1
    e8851b06:	0cf40e23          	sb	a5,220(s0)
}
    e8851b0a:	60e6                	ld	ra,88(sp)
    e8851b0c:	6446                	ld	s0,80(sp)
    e8851b0e:	64a6                	ld	s1,72(sp)
    e8851b10:	6906                	ld	s2,64(sp)
    e8851b12:	79e2                	ld	s3,56(sp)
    e8851b14:	7a42                	ld	s4,48(sp)
    e8851b16:	7aa2                	ld	s5,40(sp)
    e8851b18:	7b02                	ld	s6,32(sp)
    e8851b1a:	6be2                	ld	s7,24(sp)
    e8851b1c:	6c42                	ld	s8,16(sp)
    e8851b1e:	6ca2                	ld	s9,8(sp)
    e8851b20:	6125                	addi	sp,sp,96
    e8851b22:	8082                	ret
		else if( inCnx->state == kHTTPConnectionStateProcessingRequest )
    e8851b24:	ff5883e3          	beq	a7,s5,e8851b0a <_HTTPConnectionRunStateMachine+0x88>
		else if( inCnx->state == kHTTPConnectionStateWritingResponse )
    e8851b28:	05689b63          	bne	a7,s6,e8851b7e <_HTTPConnectionRunStateMachine+0xfc>
			err = HTTPMessageWriteMessage( msg, inCnx->transportDelegate.writev_f, inCnx->transportDelegate.context );
    e8851b2c:	10043603          	ld	a2,256(s0)
    e8851b30:	12043583          	ld	a1,288(s0)
    e8851b34:	7468                	ld	a0,232(s0)
    e8851b36:	a82ff0ef          	jal	ra,e8850db8 <HTTPMessageWriteMessage>
			err = _HTTPConnectionHandleIOError( inCnx, err, false );
    e8851b3a:	85aa                	mv	a1,a0
    e8851b3c:	4601                	li	a2,0
    e8851b3e:	8522                	mv	a0,s0
    e8851b40:	d0cff0ef          	jal	ra,e885104c <_HTTPConnectionHandleIOError>
			if( err == EWOULDBLOCK ) break;
    e8851b44:	fd2503e3          	beq	a0,s2,e8851b0a <_HTTPConnectionRunStateMachine+0x88>
			require_noerr_quiet( err, exit );
    e8851b48:	e969                	bnez	a0,e8851c1a <_HTTPConnectionRunStateMachine+0x198>
			if( inCnx->responseMsg->completion )
    e8851b4a:	7468                	ld	a0,232(s0)
    e8851b4c:	013507b3          	add	a5,a0,s3
    e8851b50:	9d07b783          	ld	a5,-1584(a5)
    e8851b54:	c791                	beqz	a5,e8851b60 <_HTTPConnectionRunStateMachine+0xde>
				inCnx->responseMsg->completion( inCnx->responseMsg );
    e8851b56:	9782                	jalr	a5
				inCnx->responseMsg->completion = NULL;
    e8851b58:	747c                	ld	a5,232(s0)
    e8851b5a:	97ce                	add	a5,a5,s3
    e8851b5c:	9c07b823          	sd	zero,-1584(a5)
			require_action_quiet( inCnx->requestMsg->header.persistent && !inCnx->detachHandler_f, exit, err = kEndingErr );
    e8851b60:	7068                	ld	a0,224(s0)
    e8851b62:	50854783          	lbu	a5,1288(a0)
    e8851b66:	cbd5                	beqz	a5,e8851c1a <_HTTPConnectionRunStateMachine+0x198>
    e8851b68:	13043783          	ld	a5,304(s0)
    e8851b6c:	e7dd                	bnez	a5,e8851c1a <_HTTPConnectionRunStateMachine+0x198>
			HTTPMessageReset( inCnx->requestMsg );
    e8851b6e:	960ff0ef          	jal	ra,e8850cce <HTTPMessageReset>
			HTTPMessageReset( inCnx->responseMsg );
    e8851b72:	7468                	ld	a0,232(s0)
    e8851b74:	95aff0ef          	jal	ra,e8850cce <HTTPMessageReset>
			inCnx->state = kHTTPConnectionStatePreparingEvent;
    e8851b78:	0d440e23          	sb	s4,220(s0)
    e8851b7c:	bf0d                	j	e8851aae <_HTTPConnectionRunStateMachine+0x2c>
		else if( inCnx->state == kHTTPConnectionStatePreparingEvent )
    e8851b7e:	03789663          	bne	a7,s7,e8851baa <_HTTPConnectionRunStateMachine+0x128>
			msg = inCnx->eventList;
    e8851b82:	7870                	ld	a2,240(s0)
			if( !msg )
    e8851b84:	e601                	bnez	a2,e8851b8c <_HTTPConnectionRunStateMachine+0x10a>
				inCnx->state = kHTTPConnectionStateReadingRequest;
    e8851b86:	0c040e23          	sb	zero,220(s0)
				continue;
    e8851b8a:	b715                	j	e8851aae <_HTTPConnectionRunStateMachine+0x2c>
			LogHTTP( inCnx->ucat, inCnx->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e8851b8c:	782c                	ld	a1,112(s0)
    e8851b8e:	52063783          	ld	a5,1312(a2)
    e8851b92:	51863703          	ld	a4,1304(a2)
    e8851b96:	41063683          	ld	a3,1040(a2)
    e8851b9a:	852e                	mv	a0,a1
    e8851b9c:	0641                	addi	a2,a2,16
    e8851b9e:	465000ef          	jal	ra,e8852802 <LogHTTP>
			inCnx->state = kHTTPConnectionStateWritingEvent;
    e8851ba2:	4791                	li	a5,4
    e8851ba4:	0cf40e23          	sb	a5,220(s0)
    e8851ba8:	b719                	j	e8851aae <_HTTPConnectionRunStateMachine+0x2c>
		else if( inCnx->state == kHTTPConnectionStateWritingEvent )
    e8851baa:	05889563          	bne	a7,s8,e8851bf4 <_HTTPConnectionRunStateMachine+0x172>
			msg = inCnx->eventList;
    e8851bae:	7864                	ld	s1,240(s0)
			err = HTTPMessageWriteMessage( msg, inCnx->transportDelegate.writev_f, inCnx->transportDelegate.context );
    e8851bb0:	10043603          	ld	a2,256(s0)
    e8851bb4:	12043583          	ld	a1,288(s0)
    e8851bb8:	8526                	mv	a0,s1
    e8851bba:	9feff0ef          	jal	ra,e8850db8 <HTTPMessageWriteMessage>
			err = _HTTPConnectionHandleIOError( inCnx, err, false );
    e8851bbe:	85aa                	mv	a1,a0
    e8851bc0:	4601                	li	a2,0
    e8851bc2:	8522                	mv	a0,s0
    e8851bc4:	c88ff0ef          	jal	ra,e885104c <_HTTPConnectionHandleIOError>
			if( err == EWOULDBLOCK ) break;
    e8851bc8:	f52501e3          	beq	a0,s2,e8851b0a <_HTTPConnectionRunStateMachine+0x88>
			require_noerr_quiet( err, exit );
    e8851bcc:	e539                	bnez	a0,e8851c1a <_HTTPConnectionRunStateMachine+0x198>
			if( ( inCnx->eventList = msg->next ) == NULL )
    e8851bce:	649c                	ld	a5,8(s1)
    e8851bd0:	f87c                	sd	a5,240(s0)
    e8851bd2:	e399                	bnez	a5,e8851bd8 <_HTTPConnectionRunStateMachine+0x156>
				  inCnx->eventNext = &inCnx->eventList;
    e8851bd4:	0f943c23          	sd	s9,248(s0)
			if( msg->completion ) msg->completion( msg );
    e8851bd8:	013487b3          	add	a5,s1,s3
    e8851bdc:	9d07b783          	ld	a5,-1584(a5)
    e8851be0:	c399                	beqz	a5,e8851be6 <_HTTPConnectionRunStateMachine+0x164>
    e8851be2:	8526                	mv	a0,s1
    e8851be4:	9782                	jalr	a5
			HTTPMessageReset( msg );
    e8851be6:	8526                	mv	a0,s1
    e8851be8:	8e6ff0ef          	jal	ra,e8850cce <HTTPMessageReset>
			CFRelease( msg );
    e8851bec:	8526                	mv	a0,s1
    e8851bee:	d5cf50ef          	jal	ra,e884714a <CFRelease>
    e8851bf2:	b759                	j	e8851b78 <_HTTPConnectionRunStateMachine+0xf6>
			dlogassert( "Bad state %d", inCnx->state );
    e8851bf4:	0006f817          	auipc	a6,0x6f
    e8851bf8:	33480813          	addi	a6,a6,820 # e88c0f28 <kHTTPMessageClass+0x78>
    e8851bfc:	0006f797          	auipc	a5,0x6f
    e8851c00:	56c78793          	addi	a5,a5,1388 # e88c1168 <__PRETTY_FUNCTION__.10179>
    e8851c04:	3d900713          	li	a4,985
    e8851c08:	0006f697          	auipc	a3,0x6f
    e8851c0c:	44068693          	addi	a3,a3,1088 # e88c1048 <kHTTPMessageClass+0x198>
    e8851c10:	4601                	li	a2,0
    e8851c12:	4581                	li	a1,0
    e8851c14:	4501                	li	a0,0
    e8851c16:	fb2fc0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		HTTPConnectionStop( inCnx );
    e8851c1a:	8522                	mv	a0,s0
    e8851c1c:	fc4ff0ef          	jal	ra,e88513e0 <HTTPConnectionStop>
		if( inCnx->close_f ) inCnx->close_f( inCnx, inCnx->delegate.context );
    e8851c20:	06043303          	ld	t1,96(s0)
    e8851c24:	ee0303e3          	beqz	t1,e8851b0a <_HTTPConnectionRunStateMachine+0x88>
    e8851c28:	700c                	ld	a1,32(s0)
    e8851c2a:	8522                	mv	a0,s0
}
    e8851c2c:	6446                	ld	s0,80(sp)
    e8851c2e:	60e6                	ld	ra,88(sp)
    e8851c30:	64a6                	ld	s1,72(sp)
    e8851c32:	6906                	ld	s2,64(sp)
    e8851c34:	79e2                	ld	s3,56(sp)
    e8851c36:	7a42                	ld	s4,48(sp)
    e8851c38:	7aa2                	ld	s5,40(sp)
    e8851c3a:	7b02                	ld	s6,32(sp)
    e8851c3c:	6be2                	ld	s7,24(sp)
    e8851c3e:	6c42                	ld	s8,16(sp)
    e8851c40:	6ca2                	ld	s9,8(sp)
    e8851c42:	6125                	addi	sp,sp,96
		if( inCnx->close_f ) inCnx->close_f( inCnx, inCnx->delegate.context );
    e8851c44:	8302                	jr	t1

00000000e8851c46 <_HTTPConnectionWriteHandler>:
{
    e8851c46:	1141                	addi	sp,sp,-16
    e8851c48:	e022                	sd	s0,0(sp)
    e8851c4a:	e406                	sd	ra,8(sp)
    e8851c4c:	842a                	mv	s0,a0
	dispatch_suspend( cnx->writeSource ); // Disable writability notification until we get another EWOULDBLOCK.
    e8851c4e:	6d48                	ld	a0,152(a0)
    e8851c50:	85afe0ef          	jal	ra,e884fcaa <dispatch_suspend>
	cnx->writeSuspended = true;
    e8851c54:	4785                	li	a5,1
    e8851c56:	0af40023          	sb	a5,160(s0)
	_HTTPConnectionRunStateMachine( cnx );
    e8851c5a:	8522                	mv	a0,s0
}
    e8851c5c:	6402                	ld	s0,0(sp)
    e8851c5e:	60a2                	ld	ra,8(sp)
    e8851c60:	0141                	addi	sp,sp,16
	_HTTPConnectionRunStateMachine( cnx );
    e8851c62:	e21ff06f          	j	e8851a82 <_HTTPConnectionRunStateMachine>

00000000e8851c66 <_HTTPConnectionReadHandler>:
{
    e8851c66:	1141                	addi	sp,sp,-16
    e8851c68:	e022                	sd	s0,0(sp)
    e8851c6a:	e406                	sd	ra,8(sp)
    e8851c6c:	842a                	mv	s0,a0
	dispatch_suspend( cnx->readSource ); // Disable readability notification until we get another EWOULDBLOCK.
    e8851c6e:	6548                	ld	a0,136(a0)
    e8851c70:	83afe0ef          	jal	ra,e884fcaa <dispatch_suspend>
	cnx->readSuspended = true;
    e8851c74:	4785                	li	a5,1
    e8851c76:	08f40823          	sb	a5,144(s0)
	_HTTPConnectionRunStateMachine( cnx );
    e8851c7a:	8522                	mv	a0,s0
}
    e8851c7c:	6402                	ld	s0,0(sp)
    e8851c7e:	60a2                	ld	ra,8(sp)
    e8851c80:	0141                	addi	sp,sp,16
	_HTTPConnectionRunStateMachine( cnx );
    e8851c82:	e01ff06f          	j	e8851a82 <_HTTPConnectionRunStateMachine>

00000000e8851c86 <HTTPConnectionSetTransportDelegate>:
{
    e8851c86:	1101                	addi	sp,sp,-32
    e8851c88:	e822                	sd	s0,16(sp)
    e8851c8a:	ec06                	sd	ra,24(sp)
	if( inCnx->transportDelegate.finalize_f ) inCnx->transportDelegate.finalize_f( inCnx->transportDelegate.context );
    e8851c8c:	11053783          	ld	a5,272(a0)
{
    e8851c90:	842a                	mv	s0,a0
	if( inCnx->transportDelegate.finalize_f ) inCnx->transportDelegate.finalize_f( inCnx->transportDelegate.context );
    e8851c92:	c791                	beqz	a5,e8851c9e <HTTPConnectionSetTransportDelegate+0x18>
    e8851c94:	10053503          	ld	a0,256(a0)
    e8851c98:	e42e                	sd	a1,8(sp)
    e8851c9a:	9782                	jalr	a5
    e8851c9c:	65a2                	ld	a1,8(sp)
	inCnx->transportDelegate = *inDelegate;
    e8851c9e:	02800613          	li	a2,40
    e8851ca2:	10040513          	addi	a0,s0,256
    e8851ca6:	bc2ae0ef          	jal	ra,e8800068 <memcpy>
	inCnx->hasTransportDelegate = true;
    e8851caa:	4785                	li	a5,1
	if( IsValidSocket( inCnx->sock ) && inCnx->transportDelegate.initialize_f )
    e8851cac:	5c28                	lw	a0,120(s0)
	inCnx->hasTransportDelegate = true;
    e8851cae:	12f40423          	sb	a5,296(s0)
	if( IsValidSocket( inCnx->sock ) && inCnx->transportDelegate.initialize_f )
    e8851cb2:	00054c63          	bltz	a0,e8851cca <HTTPConnectionSetTransportDelegate+0x44>
    e8851cb6:	10843303          	ld	t1,264(s0)
    e8851cba:	00030863          	beqz	t1,e8851cca <HTTPConnectionSetTransportDelegate+0x44>
		inCnx->transportDelegate.initialize_f( inCnx->sock, inCnx->transportDelegate.context );
    e8851cbe:	10043583          	ld	a1,256(s0)
}
    e8851cc2:	6442                	ld	s0,16(sp)
    e8851cc4:	60e2                	ld	ra,24(sp)
    e8851cc6:	6105                	addi	sp,sp,32
		inCnx->transportDelegate.initialize_f( inCnx->sock, inCnx->transportDelegate.context );
    e8851cc8:	8302                	jr	t1
}
    e8851cca:	60e2                	ld	ra,24(sp)
    e8851ccc:	6442                	ld	s0,16(sp)
    e8851cce:	6105                	addi	sp,sp,32
    e8851cd0:	8082                	ret

00000000e8851cd2 <HTTPConnectionSendResponse>:
//
//	Must be called from the connection queue.
//===========================================================================================================================

OSStatus	HTTPConnectionSendResponse( HTTPConnectionRef inCnx )
{
    e8851cd2:	7179                	addi	sp,sp,-48
    e8851cd4:	e826                	sd	s1,16(sp)
    e8851cd6:	ec4a                	sd	s2,24(sp)
    e8851cd8:	f04e                	sd	s3,32(sp)
    e8851cda:	f406                	sd	ra,40(sp)
    e8851cdc:	e422                	sd	s0,8(sp)
	HTTPMessageRef const		msg = inCnx->responseMsg;
    e8851cde:	7560                	ld	s0,232(a0)
{
    e8851ce0:	84aa                	mv	s1,a0
	OSStatus					err;
	Boolean						run;
	
	check( DebugIsCurrentDispatchQueue( inCnx->queue ) );
	
	err = HTTPHeader_Commit( &msg->header );
    e8851ce2:	01040913          	addi	s2,s0,16
    e8851ce6:	854a                	mv	a0,s2
    e8851ce8:	16c000ef          	jal	ra,e8851e54 <HTTPHeader_Commit>
    e8851cec:	89aa                	mv	s3,a0
	require_noerr( err, exit );
    e8851cee:	e535                	bnez	a0,e8851d5a <HTTPConnectionSendResponse+0x88>
	LogHTTP( inCnx->ucat, inCnx->ucat, msg->header.buf, msg->header.len, msg->bodyPtr, msg->bodyLen );
    e8851cf0:	78ac                	ld	a1,112(s1)
    e8851cf2:	52043783          	ld	a5,1312(s0)
    e8851cf6:	51843703          	ld	a4,1304(s0)
    e8851cfa:	41043683          	ld	a3,1040(s0)
    e8851cfe:	864a                	mv	a2,s2
    e8851d00:	852e                	mv	a0,a1
    e8851d02:	301000ef          	jal	ra,e8852802 <LogHTTP>
	
	msg->iov[ 0 ].iov_base = msg->header.buf;
    e8851d06:	6785                	lui	a5,0x1
    e8851d08:	97a2                	add	a5,a5,s0
    e8851d0a:	9527bc23          	sd	s2,-1704(a5) # 958 <memcmp-0xe87ff6a8>
	msg->iov[ 0 ].iov_len  = msg->header.len;
    e8851d0e:	41043703          	ld	a4,1040(s0)
    e8851d12:	96e7b023          	sd	a4,-1696(a5)
	msg->ion = 1;
    e8851d16:	4705                	li	a4,1
    e8851d18:	98e7a023          	sw	a4,-1664(a5)
	if( msg->bodyLen > 0 )
    e8851d1c:	52043703          	ld	a4,1312(s0)
    e8851d20:	cb11                	beqz	a4,e8851d34 <HTTPConnectionSendResponse+0x62>
	{
		msg->iov[ 1 ].iov_base = msg->bodyPtr;
    e8851d22:	51843683          	ld	a3,1304(s0)
		msg->iov[ 1 ].iov_len  = msg->bodyLen;
    e8851d26:	96e7b823          	sd	a4,-1680(a5)
		msg->ion = 2;
    e8851d2a:	4709                	li	a4,2
		msg->iov[ 1 ].iov_base = msg->bodyPtr;
    e8851d2c:	96d7b423          	sd	a3,-1688(a5)
		msg->ion = 2;
    e8851d30:	98e7a023          	sw	a4,-1664(a5)
	}
	msg->iop = msg->iov;
    e8851d34:	6785                	lui	a5,0x1
    e8851d36:	00f40733          	add	a4,s0,a5
    e8851d3a:	95878793          	addi	a5,a5,-1704 # 958 <memcmp-0xe87ff6a8>
    e8851d3e:	943e                	add	s0,s0,a5
    e8851d40:	96873c23          	sd	s0,-1672(a4)
	
	run = ( inCnx->state == kHTTPConnectionStateProcessingRequest );
	inCnx->state = kHTTPConnectionStateWritingResponse;
    e8851d44:	4789                	li	a5,2
	run = ( inCnx->state == kHTTPConnectionStateProcessingRequest );
    e8851d46:	0dc4c703          	lbu	a4,220(s1)
	inCnx->state = kHTTPConnectionStateWritingResponse;
    e8851d4a:	0cf48e23          	sb	a5,220(s1)
	if( run ) _HTTPConnectionRunStateMachine( inCnx );
    e8851d4e:	4785                	li	a5,1
    e8851d50:	00f71563          	bne	a4,a5,e8851d5a <HTTPConnectionSendResponse+0x88>
    e8851d54:	8526                	mv	a0,s1
    e8851d56:	d2dff0ef          	jal	ra,e8851a82 <_HTTPConnectionRunStateMachine>
	
exit:
	return( err );
}
    e8851d5a:	70a2                	ld	ra,40(sp)
    e8851d5c:	6422                	ld	s0,8(sp)
    e8851d5e:	854e                	mv	a0,s3
    e8851d60:	64c2                	ld	s1,16(sp)
    e8851d62:	6962                	ld	s2,24(sp)
    e8851d64:	7982                	ld	s3,32(sp)
    e8851d66:	6145                	addi	sp,sp,48
    e8851d68:	8082                	ret

00000000e8851d6a <isspace>:
#define islower(c)              in_range((c), 'a', 'z')
#define toupper(c)              (islower(c) ? (c) - 'a' + 'A' : c)
#define isblank(c)              (c == ' ')
#define isprint(c)              ((c) >= 0x20 && (c) <= 0x7E)
#define isascii(c)              (c < 128)
static inline int isspace( int c )    { return( ( c == ' ' ) || ( ( c >= 0x09 ) && ( c <= 0x0D ) ) ); }
    e8851d6a:	02000793          	li	a5,32
    e8851d6e:	00f50663          	beq	a0,a5,e8851d7a <isspace+0x10>
    e8851d72:	355d                	addiw	a0,a0,-9
    e8851d74:	00553513          	sltiu	a0,a0,5
    e8851d78:	8082                	ret
    e8851d7a:	4505                	li	a0,1
    e8851d7c:	8082                	ret

00000000e8851d7e <HTTPHeader_InitRequest>:
//===========================================================================================================================
//	HTTPHeader_InitRequest
//===========================================================================================================================

OSStatus	HTTPHeader_InitRequest( HTTPHeader *inHeader, const char *inMethod, const char *inURL, const char *inProtocol )
{
    e8851d7e:	7179                	addi	sp,sp,-48
    e8851d80:	f022                	sd	s0,32(sp)
    e8851d82:	f406                	sd	ra,40(sp)
    e8851d84:	842a                	mv	s0,a0
	OSStatus		err;
	int				methodLen, urlOffset, urlEnd, n;
	
	n = snprintf( inHeader->buf, sizeof( inHeader->buf ), "%s%n %n%s%n %s\r\n",
    e8851d86:	e689                	bnez	a3,e8851d90 <HTTPHeader_InitRequest+0x12>
    e8851d88:	0006f697          	auipc	a3,0x6f
    e8851d8c:	19068693          	addi	a3,a3,400 # e88c0f18 <kHTTPMessageClass+0x68>
    e8851d90:	e036                	sd	a3,0(sp)
    e8851d92:	8832                	mv	a6,a2
    e8851d94:	083c                	addi	a5,sp,24
    e8851d96:	0858                	addi	a4,sp,20
    e8851d98:	86ae                	mv	a3,a1
    e8851d9a:	01c10893          	addi	a7,sp,28
    e8851d9e:	0006f617          	auipc	a2,0x6f
    e8851da2:	4e260613          	addi	a2,a2,1250 # e88c1280 <kHTTPServerClass+0xa0>
    e8851da6:	40000593          	li	a1,1024
    e8851daa:	8522                	mv	a0,s0
    e8851dac:	4a42a0ef          	jal	ra,e887c250 <eLIBs_snprintf>
		inMethod, &methodLen, &urlOffset, inURL, &urlEnd, inProtocol ? inProtocol : "HTTP/1.1" );
	require_action( ( n > 0 ) && ( n < ( (int) sizeof( inHeader->buf ) ) ), exit, err = kOverrunErr );
    e8851db0:	fff5071b          	addiw	a4,a0,-1
    e8851db4:	3fe00793          	li	a5,1022
    e8851db8:	02e7e963          	bltu	a5,a4,e8851dea <HTTPHeader_InitRequest+0x6c>
	
	inHeader->methodPtr = inHeader->buf;
	inHeader->methodLen = (size_t) methodLen;
    e8851dbc:	47d2                	lw	a5,20(sp)
	
	inHeader->urlPtr	= inHeader->buf + urlOffset;
    e8851dbe:	4762                	lw	a4,24(sp)
	inHeader->urlLen 	= (size_t)( urlEnd - urlOffset );
	
	inHeader->len = (size_t) n;
    e8851dc0:	40a43023          	sd	a0,1024(s0)
	inHeader->methodLen = (size_t) methodLen;
    e8851dc4:	42f43023          	sd	a5,1056(s0)
	inHeader->urlPtr	= inHeader->buf + urlOffset;
    e8851dc8:	00e407b3          	add	a5,s0,a4
    e8851dcc:	42f43823          	sd	a5,1072(s0)
	inHeader->urlLen 	= (size_t)( urlEnd - urlOffset );
    e8851dd0:	47f2                	lw	a5,28(sp)
	inHeader->methodPtr = inHeader->buf;
    e8851dd2:	40843c23          	sd	s0,1048(s0)
	err = kNoErr;
    e8851dd6:	4501                	li	a0,0
	inHeader->urlLen 	= (size_t)( urlEnd - urlOffset );
    e8851dd8:	9f99                	subw	a5,a5,a4
    e8851dda:	42f43c23          	sd	a5,1080(s0)
	
exit:
	inHeader->firstErr = err;
    e8851dde:	4ea42e23          	sw	a0,1276(s0)
	return( err );
}
    e8851de2:	70a2                	ld	ra,40(sp)
    e8851de4:	7402                	ld	s0,32(sp)
    e8851de6:	6145                	addi	sp,sp,48
    e8851de8:	8082                	ret
	require_action( ( n > 0 ) && ( n < ( (int) sizeof( inHeader->buf ) ) ), exit, err = kOverrunErr );
    e8851dea:	7579                	lui	a0,0xffffe
    e8851dec:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e8851df0:	b7fd                	j	e8851dde <HTTPHeader_InitRequest+0x60>

00000000e8851df2 <HTTPHeader_InitResponse>:
	HTTPHeader_InitResponse(
		HTTPHeader *	inHeader,
		const char *	inProtocol,
		int				inStatusCode,
		const char *	inReasonPhrase )
{
    e8851df2:	1101                	addi	sp,sp,-32
    e8851df4:	e822                	sd	s0,16(sp)
    e8851df6:	ec06                	sd	ra,24(sp)
    e8851df8:	842a                	mv	s0,a0
    e8851dfa:	8732                	mv	a4,a2
    e8851dfc:	87b6                	mv	a5,a3
	OSStatus		err;
	int				n;
	
	if( !inProtocol )		inProtocol		= "HTTP/1.1";
    e8851dfe:	e589                	bnez	a1,e8851e08 <HTTPHeader_InitResponse+0x16>
    e8851e00:	0006f597          	auipc	a1,0x6f
    e8851e04:	11858593          	addi	a1,a1,280 # e88c0f18 <kHTTPMessageClass+0x68>
	if( !inReasonPhrase )	inReasonPhrase	= HTTPGetReasonPhrase( inStatusCode );
    e8851e08:	eb89                	bnez	a5,e8851e1a <HTTPHeader_InitResponse+0x28>
    e8851e0a:	853a                	mv	a0,a4
    e8851e0c:	e42e                	sd	a1,8(sp)
    e8851e0e:	e03a                	sd	a4,0(sp)
    e8851e10:	fbafc0ef          	jal	ra,e884e5ca <HTTPGetReasonPhrase>
    e8851e14:	87aa                	mv	a5,a0
    e8851e16:	65a2                	ld	a1,8(sp)
    e8851e18:	6702                	ld	a4,0(sp)
	
	n = snprintf( inHeader->buf, sizeof( inHeader->buf ), "%s %u %s\r\n", inProtocol, inStatusCode, inReasonPhrase );
    e8851e1a:	86ae                	mv	a3,a1
    e8851e1c:	0006f617          	auipc	a2,0x6f
    e8851e20:	47c60613          	addi	a2,a2,1148 # e88c1298 <kHTTPServerClass+0xb8>
    e8851e24:	40000593          	li	a1,1024
    e8851e28:	8522                	mv	a0,s0
    e8851e2a:	4262a0ef          	jal	ra,e887c250 <eLIBs_snprintf>
	require_action( ( n > 0 ) && ( n < ( (int) sizeof( inHeader->buf ) ) ), exit, err = kOverrunErr );
    e8851e2e:	fff5071b          	addiw	a4,a0,-1
    e8851e32:	3fe00793          	li	a5,1022
    e8851e36:	00e7eb63          	bltu	a5,a4,e8851e4c <HTTPHeader_InitResponse+0x5a>
	
	inHeader->len = (size_t) n;
    e8851e3a:	40a43023          	sd	a0,1024(s0)
	err = kNoErr;
    e8851e3e:	4501                	li	a0,0
	
exit:
	inHeader->firstErr = err;
    e8851e40:	4ea42e23          	sw	a0,1276(s0)
	return( err );
}
    e8851e44:	60e2                	ld	ra,24(sp)
    e8851e46:	6442                	ld	s0,16(sp)
    e8851e48:	6105                	addi	sp,sp,32
    e8851e4a:	8082                	ret
	require_action( ( n > 0 ) && ( n < ( (int) sizeof( inHeader->buf ) ) ), exit, err = kOverrunErr );
    e8851e4c:	7579                	lui	a0,0xffffe
    e8851e4e:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e8851e52:	b7fd                	j	e8851e40 <HTTPHeader_InitResponse+0x4e>

00000000e8851e54 <HTTPHeader_Commit>:
{
	OSStatus		err;
	char *			buf;
	size_t			len;
	
	err = inHeader->firstErr;
    e8851e54:	4fc52783          	lw	a5,1276(a0)
	require_noerr_string( err, exit, "earlier error occurred" );
    e8851e58:	eb95                	bnez	a5,e8851e8c <HTTPHeader_Commit+0x38>
	
	buf = inHeader->buf;
	len = inHeader->len;
    e8851e5a:	40053703          	ld	a4,1024(a0)
	require_action_string( len > 0, exit, err = kNotPreparedErr, "header not initialized" );
    e8851e5e:	cb0d                	beqz	a4,e8851e90 <HTTPHeader_Commit+0x3c>
	
	// Append the final empty line to indicate the end of the header.
	
	require_action( ( len + 2 ) < sizeof( inHeader->buf ), exit, err = kOverrunErr );
    e8851e60:	00270693          	addi	a3,a4,2
    e8851e64:	3ff00613          	li	a2,1023
    e8851e68:	02d66863          	bltu	a2,a3,e8851e98 <HTTPHeader_Commit+0x44>
	buf[ len++ ] = '\r';
    e8851e6c:	4635                	li	a2,13
    e8851e6e:	00e5560b          	srb	a2,a0,a4,0
	buf[ len++ ] = '\n';
    e8851e72:	972a                	add	a4,a4,a0
    e8851e74:	4629                	li	a2,10
    e8851e76:	00c700a3          	sb	a2,1(a4)
	buf[ len ]   = '\0';
	inHeader->len = len;
	
	inHeader->firstErr = kAlreadyInUseErr; // Mark in-use to prevent further changes to it.
    e8851e7a:	7779                	lui	a4,0xffffe
	buf[ len ]   = '\0';
    e8851e7c:	00d5500b          	srb	zero,a0,a3,0
	inHeader->firstErr = kAlreadyInUseErr; // Mark in-use to prevent further changes to it.
    e8851e80:	5bf7071b          	addiw	a4,a4,1471
	inHeader->len = len;
    e8851e84:	40d53023          	sd	a3,1024(a0)
	inHeader->firstErr = kAlreadyInUseErr; // Mark in-use to prevent further changes to it.
    e8851e88:	4ee52e23          	sw	a4,1276(a0)
	
exit:
	return( err );
}
    e8851e8c:	853e                	mv	a0,a5
    e8851e8e:	8082                	ret
	require_action_string( len > 0, exit, err = kNotPreparedErr, "header not initialized" );
    e8851e90:	77f9                	lui	a5,0xffffe
    e8851e92:	5a778793          	addi	a5,a5,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e8851e96:	bfdd                	j	e8851e8c <HTTPHeader_Commit+0x38>
	require_action( ( len + 2 ) < sizeof( inHeader->buf ), exit, err = kOverrunErr );
    e8851e98:	77f9                	lui	a5,0xffffe
    e8851e9a:	5a178793          	addi	a5,a5,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e8851e9e:	b7fd                	j	e8851e8c <HTTPHeader_Commit+0x38>

00000000e8851ea0 <HTTPHeader_AddField>:
//===========================================================================================================================
//	HTTPHeader_AddField
//===========================================================================================================================

OSStatus	HTTPHeader_AddField( HTTPHeader *inHeader, const char *inName, const char *inValue )
{
    e8851ea0:	1101                	addi	sp,sp,-32
    e8851ea2:	f891540b          	sdd	s0,s1,(sp),0,4
    e8851ea6:	ec06                	sd	ra,24(sp)
    e8851ea8:	e84a                	sd	s2,16(sp)
	char *				buf;
	size_t				len;
	size_t				maxLen;
	int					n;
	
	err = inHeader->firstErr;
    e8851eaa:	4fc52403          	lw	s0,1276(a0)
{
    e8851eae:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e8851eb0:	e839                	bnez	s0,e8851f06 <HTTPHeader_AddField+0x66>
	
	buf = inHeader->buf;
	len = inHeader->len;
    e8851eb2:	40053503          	ld	a0,1024(a0)
    e8851eb6:	8732                	mv	a4,a2
	maxLen = sizeof( inHeader->buf );
	require_action_string( len > 2, exit, err = kNotPreparedErr, "header not initialized" );
    e8851eb8:	3fc00793          	li	a5,1020
    e8851ebc:	ffd50613          	addi	a2,a0,-3
    e8851ec0:	04c7e063          	bltu	a5,a2,e8851f00 <HTTPHeader_AddField+0x60>
	require_action_string( len < maxLen, exit, err = kNotPreparedErr, "bad header length" );
	
	maxLen = maxLen - len;
    e8851ec4:	40000913          	li	s2,1024
    e8851ec8:	40a90933          	sub	s2,s2,a0
    e8851ecc:	86ae                	mv	a3,a1
	n = snprintf( &buf[ len ], maxLen, "%s: %s\r\n", inName, inValue );
    e8851ece:	0006f617          	auipc	a2,0x6f
    e8851ed2:	39a60613          	addi	a2,a2,922 # e88c1268 <kHTTPServerClass+0x88>
    e8851ed6:	85ca                	mv	a1,s2
    e8851ed8:	9526                	add	a0,a0,s1
    e8851eda:	3762a0ef          	jal	ra,e887c250 <eLIBs_snprintf>
	require_action( ( n > 0 ) && ( n < ( (int) maxLen ) ), exit, err = kOverrunErr );
    e8851ede:	02a05a63          	blez	a0,e8851f12 <HTTPHeader_AddField+0x72>
    e8851ee2:	2901                	sext.w	s2,s2
    e8851ee4:	03255763          	bge	a0,s2,e8851f12 <HTTPHeader_AddField+0x72>
	
	inHeader->len += ( (size_t) n );
    e8851ee8:	4004b783          	ld	a5,1024(s1)
    e8851eec:	97aa                	add	a5,a5,a0
    e8851eee:	40f4b023          	sd	a5,1024(s1)
	err = kNoErr;
	
exit:
	if( err && !inHeader->firstErr ) inHeader->firstErr = err;
	return( err );
}
    e8851ef2:	8522                	mv	a0,s0
    e8851ef4:	60e2                	ld	ra,24(sp)
    e8851ef6:	f891440b          	ldd	s0,s1,(sp),0,4
    e8851efa:	6942                	ld	s2,16(sp)
    e8851efc:	6105                	addi	sp,sp,32
    e8851efe:	8082                	ret
	require_action_string( len > 2, exit, err = kNotPreparedErr, "header not initialized" );
    e8851f00:	7479                	lui	s0,0xffffe
    e8851f02:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
	if( err && !inHeader->firstErr ) inHeader->firstErr = err;
    e8851f06:	4fc4a783          	lw	a5,1276(s1)
    e8851f0a:	f7e5                	bnez	a5,e8851ef2 <HTTPHeader_AddField+0x52>
    e8851f0c:	4e84ae23          	sw	s0,1276(s1)
    e8851f10:	b7cd                	j	e8851ef2 <HTTPHeader_AddField+0x52>
	require_action( ( n > 0 ) && ( n < ( (int) maxLen ) ), exit, err = kOverrunErr );
    e8851f12:	7479                	lui	s0,0xffffe
    e8851f14:	5a140413          	addi	s0,s0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e8851f18:	b7fd                	j	e8851f06 <HTTPHeader_AddField+0x66>

00000000e8851f1a <HTTPHeader_AddFieldF>:
//===========================================================================================================================
//	HTTPHeader_AddFieldF
//===========================================================================================================================

OSStatus	HTTPHeader_AddFieldF( HTTPHeader *inHeader, const char *inName, const char *inFormat, ... )
{
    e8851f1a:	7119                	addi	sp,sp,-128
    e8851f1c:	f84a                	sd	s2,48(sp)
    e8851f1e:	e486                	sd	ra,72(sp)
    e8851f20:	e0a2                	sd	s0,64(sp)
    e8851f22:	fc26                	sd	s1,56(sp)
    e8851f24:	f44e                	sd	s3,40(sp)
    e8851f26:	f052                	sd	s4,32(sp)
    e8851f28:	ec56                	sd	s5,24(sp)
    e8851f2a:	ecb6                	sd	a3,88(sp)
    e8851f2c:	f0ba                	sd	a4,96(sp)
    e8851f2e:	f4be                	sd	a5,104(sp)
    e8851f30:	f8c2                	sd	a6,112(sp)
    e8851f32:	fcc6                	sd	a7,120(sp)
	size_t				len;
	size_t				maxLen;
	va_list				args;
	int					n;
	
	err = inHeader->firstErr;
    e8851f34:	4fc52403          	lw	s0,1276(a0)
{
    e8851f38:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e8851f3a:	e459                	bnez	s0,e8851fc8 <HTTPHeader_AddFieldF+0xae>
	
	buf = inHeader->buf;
	len = inHeader->len;
    e8851f3c:	40053a03          	ld	s4,1024(a0)
	maxLen = sizeof( inHeader->buf );
	require_action_string( len > 2, exit, err = kNotPreparedErr, "header not initialized" );
    e8851f40:	3fc00793          	li	a5,1020
    e8851f44:	ffda0713          	addi	a4,s4,-3
    e8851f48:	06e7ed63          	bltu	a5,a4,e8851fc2 <HTTPHeader_AddFieldF+0xa8>
	require_action_string( len < maxLen, exit, err = kNotPreparedErr, "bad header length" );

	maxLen = maxLen - len;
    e8851f4c:	40000993          	li	s3,1024
    e8851f50:	414989b3          	sub	s3,s3,s4
	n = snprintf( &buf[ len ], maxLen, "%s: ", inName );
    e8851f54:	86ae                	mv	a3,a1
    e8851f56:	8ab2                	mv	s5,a2
    e8851f58:	85ce                	mv	a1,s3
    e8851f5a:	0006f617          	auipc	a2,0x6f
    e8851f5e:	31e60613          	addi	a2,a2,798 # e88c1278 <kHTTPServerClass+0x98>
    e8851f62:	9552                	add	a0,a0,s4
    e8851f64:	2ec2a0ef          	jal	ra,e887c250 <eLIBs_snprintf>
    e8851f68:	84aa                	mv	s1,a0
	va_start( args, inFormat );
	n += vsnprintf( &buf[ len + n ], maxLen - n, inFormat, args );
    e8851f6a:	9552                	add	a0,a0,s4
	va_start( args, inFormat );
    e8851f6c:	08b4                	addi	a3,sp,88
	n += vsnprintf( &buf[ len + n ], maxLen - n, inFormat, args );
    e8851f6e:	409985b3          	sub	a1,s3,s1
    e8851f72:	8656                	mv	a2,s5
    e8851f74:	954a                	add	a0,a0,s2
	va_start( args, inFormat );
    e8851f76:	e436                	sd	a3,8(sp)
	n += vsnprintf( &buf[ len + n ], maxLen - n, inFormat, args );
    e8851f78:	2b02a0ef          	jal	ra,e887c228 <eLIBs_vsnprintf>
    e8851f7c:	009505bb          	addw	a1,a0,s1
	va_end( args );
	n += snprintf( &buf[ len + n ], maxLen - n, "\r\n" );
    e8851f80:	01458533          	add	a0,a1,s4
	n += vsnprintf( &buf[ len + n ], maxLen - n, inFormat, args );
    e8851f84:	84ae                	mv	s1,a1
	n += snprintf( &buf[ len + n ], maxLen - n, "\r\n" );
    e8851f86:	0004e617          	auipc	a2,0x4e
    e8851f8a:	d3a60613          	addi	a2,a2,-710 # e889fcc0 <TWO52+0xc8>
    e8851f8e:	40b985b3          	sub	a1,s3,a1
    e8851f92:	954a                	add	a0,a0,s2
    e8851f94:	2bc2a0ef          	jal	ra,e887c250 <eLIBs_snprintf>
    e8851f98:	9d25                	addw	a0,a0,s1
	require_action( ( n > 0 ) && ( n < ( (int) maxLen ) ), exit, err = kOverrunErr );
    e8851f9a:	02a05d63          	blez	a0,e8851fd4 <HTTPHeader_AddFieldF+0xba>
    e8851f9e:	2981                	sext.w	s3,s3
    e8851fa0:	03355a63          	bge	a0,s3,e8851fd4 <HTTPHeader_AddFieldF+0xba>
	
	inHeader->len += ( (size_t) n );
    e8851fa4:	40093483          	ld	s1,1024(s2)
    e8851fa8:	9526                	add	a0,a0,s1
    e8851faa:	40a93023          	sd	a0,1024(s2)
	err = kNoErr;
	
exit:
	if( err && !inHeader->firstErr ) inHeader->firstErr = err;
	return( err );
}
    e8851fae:	8522                	mv	a0,s0
    e8851fb0:	60a6                	ld	ra,72(sp)
    e8851fb2:	6406                	ld	s0,64(sp)
    e8851fb4:	74e2                	ld	s1,56(sp)
    e8851fb6:	7942                	ld	s2,48(sp)
    e8851fb8:	79a2                	ld	s3,40(sp)
    e8851fba:	7a02                	ld	s4,32(sp)
    e8851fbc:	6ae2                	ld	s5,24(sp)
    e8851fbe:	6109                	addi	sp,sp,128
    e8851fc0:	8082                	ret
	require_action_string( len > 2, exit, err = kNotPreparedErr, "header not initialized" );
    e8851fc2:	7479                	lui	s0,0xffffe
    e8851fc4:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
	if( err && !inHeader->firstErr ) inHeader->firstErr = err;
    e8851fc8:	4fc92783          	lw	a5,1276(s2)
    e8851fcc:	f3ed                	bnez	a5,e8851fae <HTTPHeader_AddFieldF+0x94>
    e8851fce:	4e892e23          	sw	s0,1276(s2)
    e8851fd2:	bff1                	j	e8851fae <HTTPHeader_AddFieldF+0x94>
	require_action( ( n > 0 ) && ( n < ( (int) maxLen ) ), exit, err = kOverrunErr );
    e8851fd4:	7479                	lui	s0,0xffffe
    e8851fd6:	5a140413          	addi	s0,s0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e8851fda:	b7fd                	j	e8851fc8 <HTTPHeader_AddFieldF+0xae>

00000000e8851fdc <HTTPGetHeaderField>:
		const char **	outNamePtr, 
		size_t *		outNameLen, 
		const char **	outValuePtr, 
		size_t *		outValueLen, 
		const char **	outNext )
{
    e8851fdc:	7159                	addi	sp,sp,-112
    e8851fde:	e8ca                	sd	s2,80(sp)
    e8851fe0:	fc56                	sd	s5,56(sp)
    e8851fe2:	f85a                	sd	s6,48(sp)
    e8851fe4:	f45e                	sd	s7,40(sp)
    e8851fe6:	f062                	sd	s8,32(sp)
    e8851fe8:	ec66                	sd	s9,24(sp)
    e8851fea:	e86a                	sd	s10,16(sp)
    e8851fec:	f486                	sd	ra,104(sp)
    e8851fee:	f0a2                	sd	s0,96(sp)
    e8851ff0:	eca6                	sd	s1,88(sp)
    e8851ff2:	e4ce                	sd	s3,72(sp)
    e8851ff4:	e0d2                	sd	s4,64(sp)
    e8851ff6:	e46e                	sd	s11,8(sp)
    e8851ff8:	8cbe                	mv	s9,a5
	const char *		src;
	const char *		end;
	size_t				matchLen;
	char				c;
	
	if( inHeaderLen == kSizeCString ) inHeaderLen = strlen( inHeaderPtr );
    e8851ffa:	57fd                	li	a5,-1
{
    e8851ffc:	892a                	mv	s2,a0
    e8851ffe:	8d32                	mv	s10,a2
    e8852000:	8ab6                	mv	s5,a3
    e8852002:	8b3a                	mv	s6,a4
    e8852004:	8c42                	mv	s8,a6
    e8852006:	8bc6                	mv	s7,a7
	if( inHeaderLen == kSizeCString ) inHeaderLen = strlen( inHeaderPtr );
    e8852008:	00f59663          	bne	a1,a5,e8852014 <HTTPGetHeaderField+0x38>
    e885200c:	30c2a0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8852010:	7c05358b          	extu	a1,a0,31,0
	src = inHeaderPtr;
	end = src + inHeaderLen;
    e8852014:	00b909b3          	add	s3,s2,a1
	matchLen = inName ? strlen( inName ) : 0;
    e8852018:	4a01                	li	s4,0
    e885201a:	000d0763          	beqz	s10,e8852028 <HTTPGetHeaderField+0x4c>
    e885201e:	856a                	mv	a0,s10
    e8852020:	2f82a0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8852024:	7c053a0b          	extu	s4,a0,31,0
		const char *		valueEnd;
		
		// Parse a line and check if it begins with the header field we're looking for.
		
		linePtr = src;
		while( ( src < end ) && ( ( c = *src ) != '\r' ) && ( c != '\n' ) ) ++src;
    e8852028:	4db5                	li	s11,13
    e885202a:	4729                	li	a4,10
			nameEnd = linePtr;
			while( ( nameEnd < lineEnd ) && ( *nameEnd != ':' ) ) ++nameEnd;
			if( nameEnd >= lineEnd ) continue;
			matchLen = (size_t)( nameEnd - linePtr );
		}
		else if( ( lineLen <= matchLen ) || ( linePtr[ matchLen ] != ':' ) || 
    e885202c:	03a00693          	li	a3,58
		while( ( src < end ) && ( ( c = *src ) != '\r' ) && ( c != '\n' ) ) ++src;
    e8852030:	844a                	mv	s0,s2
    e8852032:	13347263          	bgeu	s0,s3,e8852156 <HTTPGetHeaderField+0x17a>
    e8852036:	00044783          	lbu	a5,0(s0)
    e885203a:	01b78463          	beq	a5,s11,e8852042 <HTTPGetHeaderField+0x66>
    e885203e:	02e79463          	bne	a5,a4,e8852066 <HTTPGetHeaderField+0x8a>
		lineLen = (size_t)( src - linePtr );
    e8852042:	41240633          	sub	a2,s0,s2
		if( ( src < end ) && ( *src == '\r' ) ) ++src;
    e8852046:	84a2                	mv	s1,s0
    e8852048:	01b79663          	bne	a5,s11,e8852054 <HTTPGetHeaderField+0x78>
    e885204c:	00140493          	addi	s1,s0,1
		if( ( src < end ) && ( *src == '\n' ) ) ++src;
    e8852050:	0134f763          	bgeu	s1,s3,e885205e <HTTPGetHeaderField+0x82>
    e8852054:	0004c783          	lbu	a5,0(s1)
    e8852058:	00e79363          	bne	a5,a4,e885205e <HTTPGetHeaderField+0x82>
    e885205c:	0485                	addi	s1,s1,1
		if( !inName ) // Null name means to find the next header for iteration.
    e885205e:	040d1363          	bnez	s10,e88520a4 <HTTPGetHeaderField+0xc8>
    e8852062:	87ca                	mv	a5,s2
    e8852064:	a021                	j	e885206c <HTTPGetHeaderField+0x90>
		while( ( src < end ) && ( ( c = *src ) != '\r' ) && ( c != '\n' ) ) ++src;
    e8852066:	0405                	addi	s0,s0,1
    e8852068:	b7e9                	j	e8852032 <HTTPGetHeaderField+0x56>
			while( ( nameEnd < lineEnd ) && ( *nameEnd != ':' ) ) ++nameEnd;
    e885206a:	0785                	addi	a5,a5,1
    e885206c:	0487fb63          	bgeu	a5,s0,e88520c2 <HTTPGetHeaderField+0xe6>
    e8852070:	0007c603          	lbu	a2,0(a5)
    e8852074:	fed61be3          	bne	a2,a3,e885206a <HTTPGetHeaderField+0x8e>
			matchLen = (size_t)( nameEnd - linePtr );
    e8852078:	41278a33          	sub	s4,a5,s2
			continue;
		}
		
		// Found the header field. Separate name and value and skip leading whitespace in the value.
		
		valuePtr = linePtr + matchLen + 1;
    e885207c:	001a0793          	addi	a5,s4,1
    e8852080:	97ca                	add	a5,a5,s2
		valueEnd = lineEnd;
		while( ( valuePtr < valueEnd ) && ( ( ( c = *valuePtr ) == ' ' ) || ( c == '\t' ) ) ) ++valuePtr;
    e8852082:	02000613          	li	a2,32
    e8852086:	46a5                	li	a3,9
    e8852088:	0087f863          	bgeu	a5,s0,e8852098 <HTTPGetHeaderField+0xbc>
    e885208c:	0007c703          	lbu	a4,0(a5)
    e8852090:	02c70b63          	beq	a4,a2,e88520c6 <HTTPGetHeaderField+0xea>
    e8852094:	02d70963          	beq	a4,a3,e88520c6 <HTTPGetHeaderField+0xea>
		
		// If the next line is a continuation line then keep parsing until we get to the true end.
		
		while( ( src < end ) && ( ( ( c = *src ) == ' ' ) || ( c == '\t' ) ) )
    e8852098:	02000593          	li	a1,32
    e885209c:	4625                	li	a2,9
		{
			++src;
			while( ( src < end ) && ( ( c = *src ) != '\r' ) && ( c != '\n' ) ) ++src;
    e885209e:	4535                	li	a0,13
    e88520a0:	46a9                	li	a3,10
    e88520a2:	a081                	j	e88520e2 <HTTPGetHeaderField+0x106>
		else if( ( lineLen <= matchLen ) || ( linePtr[ matchLen ] != ':' ) || 
    e88520a4:	00ca7f63          	bgeu	s4,a2,e88520c2 <HTTPGetHeaderField+0xe6>
    e88520a8:	8149478b          	lrbu	a5,s2,s4,0
    e88520ac:	00d79b63          	bne	a5,a3,e88520c2 <HTTPGetHeaderField+0xe6>
				 ( strnicmp( linePtr, inName, matchLen ) != 0 ) )
    e88520b0:	8652                	mv	a2,s4
    e88520b2:	85ea                	mv	a1,s10
    e88520b4:	854a                	mv	a0,s2
    e88520b6:	2aa2a0ef          	jal	ra,e887c360 <eLIBs_strnicmp>
		else if( ( lineLen <= matchLen ) || ( linePtr[ matchLen ] != ':' ) || 
    e88520ba:	4729                	li	a4,10
    e88520bc:	03a00693          	li	a3,58
    e88520c0:	dd55                	beqz	a0,e885207c <HTTPGetHeaderField+0xa0>
	matchLen = inName ? strlen( inName ) : 0;
    e88520c2:	8926                	mv	s2,s1
    e88520c4:	b7b5                	j	e8852030 <HTTPGetHeaderField+0x54>
		while( ( valuePtr < valueEnd ) && ( ( ( c = *valuePtr ) == ' ' ) || ( c == '\t' ) ) ) ++valuePtr;
    e88520c6:	0785                	addi	a5,a5,1
    e88520c8:	b7c1                	j	e8852088 <HTTPGetHeaderField+0xac>
			++src;
    e88520ca:	00148413          	addi	s0,s1,1
			while( ( src < end ) && ( ( c = *src ) != '\r' ) && ( c != '\n' ) ) ++src;
    e88520ce:	09340263          	beq	s0,s3,e8852152 <HTTPGetHeaderField+0x176>
    e88520d2:	00044703          	lbu	a4,0(s0)
    e88520d6:	06a71563          	bne	a4,a0,e8852140 <HTTPGetHeaderField+0x164>
			valueEnd = src;
			if( ( src < end ) && ( *src == '\r' ) ) ++src;
    e88520da:	00140493          	addi	s1,s0,1
			if( ( src < end ) && ( *src == '\n' ) ) ++src;
    e88520de:	0734e463          	bltu	s1,s3,e8852146 <HTTPGetHeaderField+0x16a>
		while( ( src < end ) && ( ( ( c = *src ) == ' ' ) || ( c == '\t' ) ) )
    e88520e2:	0134f863          	bgeu	s1,s3,e88520f2 <HTTPGetHeaderField+0x116>
    e88520e6:	0004c703          	lbu	a4,0(s1)
    e88520ea:	feb700e3          	beq	a4,a1,e88520ca <HTTPGetHeaderField+0xee>
    e88520ee:	fcc70ee3          	beq	a4,a2,e88520ca <HTTPGetHeaderField+0xee>
		}
		
		if( outNamePtr )	*outNamePtr		= linePtr;
    e88520f2:	000a8463          	beqz	s5,e88520fa <HTTPGetHeaderField+0x11e>
    e88520f6:	012ab023          	sd	s2,0(s5)
		if( outNameLen )	*outNameLen		= matchLen;
    e88520fa:	000b0463          	beqz	s6,e8852102 <HTTPGetHeaderField+0x126>
    e88520fe:	014b3023          	sd	s4,0(s6)
		if( outValuePtr )	*outValuePtr	= valuePtr;
    e8852102:	000c8463          	beqz	s9,e885210a <HTTPGetHeaderField+0x12e>
    e8852106:	00fcb023          	sd	a5,0(s9)
		if( outValueLen )	*outValueLen	= (size_t)( valueEnd - valuePtr );
    e885210a:	000c0563          	beqz	s8,e8852114 <HTTPGetHeaderField+0x138>
    e885210e:	8c1d                	sub	s0,s0,a5
    e8852110:	008c3023          	sd	s0,0(s8)
		if( outNext )		*outNext		= src;
		return( kNoErr );
    e8852114:	4501                	li	a0,0
		if( outNext )		*outNext		= src;
    e8852116:	000b8463          	beqz	s7,e885211e <HTTPGetHeaderField+0x142>
    e885211a:	009bb023          	sd	s1,0(s7)
	}
	return( kNotFoundErr );
}
    e885211e:	70a6                	ld	ra,104(sp)
    e8852120:	7406                	ld	s0,96(sp)
    e8852122:	64e6                	ld	s1,88(sp)
    e8852124:	6946                	ld	s2,80(sp)
    e8852126:	69a6                	ld	s3,72(sp)
    e8852128:	6a06                	ld	s4,64(sp)
    e885212a:	7ae2                	ld	s5,56(sp)
    e885212c:	7b42                	ld	s6,48(sp)
    e885212e:	7ba2                	ld	s7,40(sp)
    e8852130:	7c02                	ld	s8,32(sp)
    e8852132:	6ce2                	ld	s9,24(sp)
    e8852134:	6d42                	ld	s10,16(sp)
    e8852136:	6da2                	ld	s11,8(sp)
    e8852138:	6165                	addi	sp,sp,112
    e885213a:	8082                	ret
			while( ( src < end ) && ( ( c = *src ) != '\r' ) && ( c != '\n' ) ) ++src;
    e885213c:	0405                	addi	s0,s0,1
    e885213e:	bf41                	j	e88520ce <HTTPGetHeaderField+0xf2>
    e8852140:	fed71ee3          	bne	a4,a3,e885213c <HTTPGetHeaderField+0x160>
    e8852144:	84a2                	mv	s1,s0
			if( ( src < end ) && ( *src == '\n' ) ) ++src;
    e8852146:	0004c703          	lbu	a4,0(s1)
    e885214a:	f8d71ce3          	bne	a4,a3,e88520e2 <HTTPGetHeaderField+0x106>
    e885214e:	0485                	addi	s1,s1,1
    e8852150:	bf49                	j	e88520e2 <HTTPGetHeaderField+0x106>
    e8852152:	84a2                	mv	s1,s0
    e8852154:	b779                	j	e88520e2 <HTTPGetHeaderField+0x106>
	return( kNotFoundErr );
    e8852156:	7579                	lui	a0,0xffffe
    e8852158:	5b950513          	addi	a0,a0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e885215c:	b7c9                	j	e885211e <HTTPGetHeaderField+0x142>

00000000e885215e <HTTPParseToken>:
		const void *	inSrc, 
		const void *	inEnd, 
		const char **	outTokenPtr, 
		const char **	outTokenEnd, 
		const char **	outSrc )
{
    e885215e:	715d                	addi	sp,sp,-80
    e8852160:	e0a2                	sd	s0,64(sp)
    e8852162:	fc26                	sd	s1,56(sp)
    e8852164:	f84a                	sd	s2,48(sp)
    e8852166:	f44e                	sd	s3,40(sp)
    e8852168:	f052                	sd	s4,32(sp)
    e885216a:	e486                	sd	ra,72(sp)
    e885216c:	84aa                	mv	s1,a0
    e885216e:	892e                	mv	s2,a1
	const unsigned char *		src;
	const unsigned char *		end;
	unsigned char				c;
	
	src = (const unsigned char *) inSrc;
    e8852170:	842a                	mv	s0,a0
	end = (const unsigned char *) inEnd;
	for( ; src < end; ++src )
	{
		c = *src;
		if( IsHTTPTokenDelimiterChar( c ) )
    e8852172:	05e00993          	li	s3,94
    e8852176:	0006fa17          	auipc	s4,0x6f
    e885217a:	18aa0a13          	addi	s4,s4,394 # e88c1300 <kHTTPServerClass+0x120>
	for( ; src < end; ++src )
    e885217e:	01247a63          	bgeu	s0,s2,e8852192 <HTTPParseToken+0x34>
		c = *src;
    e8852182:	00044583          	lbu	a1,0(s0)
		if( IsHTTPTokenDelimiterChar( c ) )
    e8852186:	fe05879b          	addiw	a5,a1,-32
    e885218a:	0ff7f793          	andi	a5,a5,255
    e885218e:	02f9f063          	bgeu	s3,a5,e88521ae <HTTPParseToken+0x50>
		{
			break;
		}
	}
	
	if( outTokenPtr ) *outTokenPtr = (const char *) inSrc;
    e8852192:	ea15                	bnez	a2,e88521c6 <HTTPParseToken+0x68>
	if( outTokenEnd ) *outTokenEnd = (const char *) src;
    e8852194:	c291                	beqz	a3,e8852198 <HTTPParseToken+0x3a>
    e8852196:	e280                	sd	s0,0(a3)
	if( outSrc )	  *outSrc	   = (const char *) src;
    e8852198:	c311                	beqz	a4,e885219c <HTTPParseToken+0x3e>
    e885219a:	e300                	sd	s0,0(a4)
	return( kNoErr );
}
    e885219c:	60a6                	ld	ra,72(sp)
    e885219e:	6406                	ld	s0,64(sp)
    e88521a0:	74e2                	ld	s1,56(sp)
    e88521a2:	7942                	ld	s2,48(sp)
    e88521a4:	79a2                	ld	s3,40(sp)
    e88521a6:	7a02                	ld	s4,32(sp)
    e88521a8:	4501                	li	a0,0
    e88521aa:	6161                	addi	sp,sp,80
    e88521ac:	8082                	ret
		if( IsHTTPTokenDelimiterChar( c ) )
    e88521ae:	8552                	mv	a0,s4
    e88521b0:	ec3a                	sd	a4,24(sp)
    e88521b2:	e836                	sd	a3,16(sp)
    e88521b4:	e432                	sd	a2,8(sp)
    e88521b6:	1b62a0ef          	jal	ra,e887c36c <eLIBs_strchr>
    e88521ba:	6622                	ld	a2,8(sp)
    e88521bc:	fae1468b          	ldd	a3,a4,(sp),1,4
    e88521c0:	f969                	bnez	a0,e8852192 <HTTPParseToken+0x34>
	for( ; src < end; ++src )
    e88521c2:	0405                	addi	s0,s0,1
    e88521c4:	bf6d                	j	e885217e <HTTPParseToken+0x20>
	if( outTokenPtr ) *outTokenPtr = (const char *) inSrc;
    e88521c6:	e204                	sd	s1,0(a2)
    e88521c8:	b7f1                	j	e8852194 <HTTPParseToken+0x36>

00000000e88521ca <HTTPParseParameter>:
{
    e88521ca:	7175                	addi	sp,sp,-144
    e88521cc:	e506                	sd	ra,136(sp)
    e88521ce:	e122                	sd	s0,128(sp)
    e88521d0:	fca6                	sd	s1,120(sp)
    e88521d2:	f8ca                	sd	s2,112(sp)
    e88521d4:	f4ce                	sd	s3,104(sp)
    e88521d6:	f0d2                	sd	s4,96(sp)
    e88521d8:	ecd6                	sd	s5,88(sp)
    e88521da:	e8da                	sd	s6,80(sp)
    e88521dc:	e4de                	sd	s7,72(sp)
    e88521de:	e0e2                	sd	s8,64(sp)
    e88521e0:	fc66                	sd	s9,56(sp)
	src = (const char *) inSrc;
    e88521e2:	e42a                	sd	a0,8(sp)
	require_action_quiet( src < end, exit, err = kEndingErr );
    e88521e4:	04b56763          	bltu	a0,a1,e8852232 <HTTPParseParameter+0x68>
    e88521e8:	7979                	lui	s2,0xffffe
    e88521ea:	5a090913          	addi	s2,s2,1440 # ffffffffffffe5a0 <__DRAM0_INF_BASE+0xffffffff0000e5a0>
    e88521ee:	a025                	j	e8852216 <HTTPParseParameter+0x4c>
	while( ( src < end ) && isspace_safe( *src ) ) ++src; // Skip whitespace before name.
    e88521f0:	0485                	addi	s1,s1,1
    e88521f2:	e426                	sd	s1,8(sp)
    e88521f4:	64a2                	ld	s1,8(sp)
    e88521f6:	0084f763          	bgeu	s1,s0,e8852204 <HTTPParseParameter+0x3a>
    e88521fa:	0004c503          	lbu	a0,0(s1)
    e88521fe:	b6dff0ef          	jal	ra,e8851d6a <isspace>
    e8852202:	f57d                	bnez	a0,e88521f0 <HTTPParseParameter+0x26>
	err = HTTPParseToken( src, end, &namePtr, &nameEnd, &src );
    e8852204:	0038                	addi	a4,sp,8
    e8852206:	0834                	addi	a3,sp,24
    e8852208:	0810                	addi	a2,sp,16
    e885220a:	85a2                	mv	a1,s0
    e885220c:	8526                	mv	a0,s1
    e885220e:	f51ff0ef          	jal	ra,e885215e <HTTPParseToken>
    e8852212:	892a                	mv	s2,a0
	require_noerr_quiet( err, exit );
    e8852214:	c90d                	beqz	a0,e8852246 <HTTPParseParameter+0x7c>
}
    e8852216:	60aa                	ld	ra,136(sp)
    e8852218:	640a                	ld	s0,128(sp)
    e885221a:	854a                	mv	a0,s2
    e885221c:	74e6                	ld	s1,120(sp)
    e885221e:	7946                	ld	s2,112(sp)
    e8852220:	79a6                	ld	s3,104(sp)
    e8852222:	7a06                	ld	s4,96(sp)
    e8852224:	6ae6                	ld	s5,88(sp)
    e8852226:	6b46                	ld	s6,80(sp)
    e8852228:	6ba6                	ld	s7,72(sp)
    e885222a:	6c06                	ld	s8,64(sp)
    e885222c:	7ce2                	ld	s9,56(sp)
    e885222e:	6149                	addi	sp,sp,144
    e8852230:	8082                	ret
    e8852232:	842e                	mv	s0,a1
    e8852234:	8c32                	mv	s8,a2
    e8852236:	8bb6                	mv	s7,a3
    e8852238:	8b3a                	mv	s6,a4
    e885223a:	8abe                	mv	s5,a5
    e885223c:	8a42                	mv	s4,a6
    e885223e:	89c6                	mv	s3,a7
    e8852240:	bf55                	j	e88521f4 <HTTPParseParameter+0x2a>
	while( ( src < end ) && isspace_safe( *src ) ) ++src; // Skip whitespace after name.
    e8852242:	0485                	addi	s1,s1,1
    e8852244:	e426                	sd	s1,8(sp)
    e8852246:	64a2                	ld	s1,8(sp)
    e8852248:	0084f763          	bgeu	s1,s0,e8852256 <HTTPParseParameter+0x8c>
    e885224c:	0004c503          	lbu	a0,0(s1)
    e8852250:	b1bff0ef          	jal	ra,e8851d6a <isspace>
    e8852254:	f57d                	bnez	a0,e8852242 <HTTPParseParameter+0x78>
	valuePtr = NULL;
    e8852256:	f002                	sd	zero,32(sp)
	valueEnd = NULL;
    e8852258:	f402                	sd	zero,40(sp)
	if( ( src < end ) && ( *src == '=' ) )
    e885225a:	0284ef63          	bltu	s1,s0,e8852298 <HTTPParseParameter+0xce>
	if( ( src < end ) && IsHTTPSeparatorChar( *src ) )
    e885225e:	67a2                	ld	a5,8(sp)
    e8852260:	0a87fd63          	bgeu	a5,s0,e885231a <HTTPParseParameter+0x150>
    e8852264:	0007c583          	lbu	a1,0(a5)
    e8852268:	0006f517          	auipc	a0,0x6f
    e885226c:	09850513          	addi	a0,a0,152 # e88c1300 <kHTTPServerClass+0x120>
    e8852270:	0fc2a0ef          	jal	ra,e887c36c <eLIBs_strchr>
    e8852274:	c15d                	beqz	a0,e885231a <HTTPParseParameter+0x150>
		delimiter = *src++;
    e8852276:	67a2                	ld	a5,8(sp)
    e8852278:	00178713          	addi	a4,a5,1
    e885227c:	e43a                	sd	a4,8(sp)
    e885227e:	0007cc83          	lbu	s9,0(a5)
		while( ( src < end ) && isspace_safe( *src ) ) ++src;
    e8852282:	64a2                	ld	s1,8(sp)
    e8852284:	0884fc63          	bgeu	s1,s0,e885231c <HTTPParseParameter+0x152>
    e8852288:	0004c503          	lbu	a0,0(s1)
    e885228c:	adfff0ef          	jal	ra,e8851d6a <isspace>
    e8852290:	c551                	beqz	a0,e885231c <HTTPParseParameter+0x152>
    e8852292:	0485                	addi	s1,s1,1
    e8852294:	e426                	sd	s1,8(sp)
    e8852296:	b7f5                	j	e8852282 <HTTPParseParameter+0xb8>
	if( ( src < end ) && ( *src == '=' ) )
    e8852298:	0004c703          	lbu	a4,0(s1)
    e885229c:	03d00793          	li	a5,61
    e88522a0:	faf71fe3          	bne	a4,a5,e885225e <HTTPParseParameter+0x94>
		while( ( src < end ) && isspace_safe( *src ) ) ++src; // Skip whitespace before value.
    e88522a4:	0485                	addi	s1,s1,1
    e88522a6:	e426                	sd	s1,8(sp)
    e88522a8:	64a2                	ld	s1,8(sp)
    e88522aa:	0484fe63          	bgeu	s1,s0,e8852306 <HTTPParseParameter+0x13c>
    e88522ae:	0004cc83          	lbu	s9,0(s1)
    e88522b2:	8566                	mv	a0,s9
    e88522b4:	ab7ff0ef          	jal	ra,e8851d6a <isspace>
    e88522b8:	f575                	bnez	a0,e88522a4 <HTTPParseParameter+0xda>
		if( ( src < end ) && ( *src == '\"' ) ) // Quoted String
    e88522ba:	02200793          	li	a5,34
    e88522be:	04fc9463          	bne	s9,a5,e8852306 <HTTPParseParameter+0x13c>
			valuePtr = ++src;
    e88522c2:	0485                	addi	s1,s1,1
    e88522c4:	e426                	sd	s1,8(sp)
    e88522c6:	f026                	sd	s1,32(sp)
			while( ( src < end ) && ( ( *src != '"' ) || ( src[ -1 ] == '\\' ) ) ) ++src;
    e88522c8:	02200593          	li	a1,34
    e88522cc:	05c00693          	li	a3,92
    e88522d0:	67a2                	ld	a5,8(sp)
    e88522d2:	0887f763          	bgeu	a5,s0,e8852360 <HTTPParseParameter+0x196>
    e88522d6:	873e                	mv	a4,a5
    e88522d8:	9817460b          	lbuia	a2,(a4),1,0
    e88522dc:	02b61363          	bne	a2,a1,e8852302 <HTTPParseParameter+0x138>
    e88522e0:	fff7c603          	lbu	a2,-1(a5)
    e88522e4:	00d60f63          	beq	a2,a3,e8852302 <HTTPParseParameter+0x138>
			valueEnd = src++;
    e88522e8:	e43a                	sd	a4,8(sp)
    e88522ea:	f43e                	sd	a5,40(sp)
		while( ( src < end ) && isspace_safe( *src ) ) ++src; // Skip whitespace after value.
    e88522ec:	64a2                	ld	s1,8(sp)
    e88522ee:	f684f8e3          	bgeu	s1,s0,e885225e <HTTPParseParameter+0x94>
    e88522f2:	0004c503          	lbu	a0,0(s1)
    e88522f6:	a75ff0ef          	jal	ra,e8851d6a <isspace>
    e88522fa:	d135                	beqz	a0,e885225e <HTTPParseParameter+0x94>
    e88522fc:	0485                	addi	s1,s1,1
    e88522fe:	e426                	sd	s1,8(sp)
    e8852300:	b7f5                	j	e88522ec <HTTPParseParameter+0x122>
			while( ( src < end ) && ( ( *src != '"' ) || ( src[ -1 ] == '\\' ) ) ) ++src;
    e8852302:	e43a                	sd	a4,8(sp)
    e8852304:	b7f1                	j	e88522d0 <HTTPParseParameter+0x106>
			err = HTTPParseToken( src, end, &valuePtr, &valueEnd, &src );
    e8852306:	0038                	addi	a4,sp,8
    e8852308:	1034                	addi	a3,sp,40
    e885230a:	1010                	addi	a2,sp,32
    e885230c:	85a2                	mv	a1,s0
    e885230e:	8526                	mv	a0,s1
    e8852310:	e4fff0ef          	jal	ra,e885215e <HTTPParseToken>
			require_noerr_quiet( err, exit );
    e8852314:	dd61                	beqz	a0,e88522ec <HTTPParseParameter+0x122>
    e8852316:	892a                	mv	s2,a0
    e8852318:	bdfd                	j	e8852216 <HTTPParseParameter+0x4c>
	delimiter = '\0';
    e885231a:	4c81                	li	s9,0
	if( outNamePtr )	*outNamePtr		= namePtr;
    e885231c:	000c0563          	beqz	s8,e8852326 <HTTPParseParameter+0x15c>
    e8852320:	67c2                	ld	a5,16(sp)
    e8852322:	00fc3023          	sd	a5,0(s8)
	if( outNameLen )	*outNameLen		= (size_t)( nameEnd - namePtr );
    e8852326:	000b8763          	beqz	s7,e8852334 <HTTPParseParameter+0x16a>
    e885232a:	67e2                	ld	a5,24(sp)
    e885232c:	6742                	ld	a4,16(sp)
    e885232e:	8f99                	sub	a5,a5,a4
    e8852330:	00fbb023          	sd	a5,0(s7)
	if( outValuePtr )	*outValuePtr	= valuePtr;
    e8852334:	000b0563          	beqz	s6,e885233e <HTTPParseParameter+0x174>
    e8852338:	7782                	ld	a5,32(sp)
    e885233a:	00fb3023          	sd	a5,0(s6)
	if( outValueLen )	*outValueLen	= (size_t)( valueEnd - valuePtr );
    e885233e:	000a8763          	beqz	s5,e885234c <HTTPParseParameter+0x182>
    e8852342:	77a2                	ld	a5,40(sp)
    e8852344:	7702                	ld	a4,32(sp)
    e8852346:	8f99                	sub	a5,a5,a4
    e8852348:	00fab023          	sd	a5,0(s5)
	if( outDelimiter )	*outDelimiter	= delimiter;
    e885234c:	000a0463          	beqz	s4,e8852354 <HTTPParseParameter+0x18a>
    e8852350:	019a0023          	sb	s9,0(s4)
	if( outSrc )		*outSrc			= src;
    e8852354:	ec0981e3          	beqz	s3,e8852216 <HTTPParseParameter+0x4c>
    e8852358:	67a2                	ld	a5,8(sp)
    e885235a:	00f9b023          	sd	a5,0(s3) # 1000 <memcmp-0xe87ff000>
    e885235e:	bd65                	j	e8852216 <HTTPParseParameter+0x4c>
			require_action_quiet( src < end, exit, err = kMalformedErr );
    e8852360:	7979                	lui	s2,0xffffe
    e8852362:	5aa90913          	addi	s2,s2,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e8852366:	bd45                	j	e8852216 <HTTPParseParameter+0x4c>

00000000e8852368 <HTTPParseRTPInfo>:
{
    e8852368:	7135                	addi	sp,sp,-160
    e885236a:	f0da                	sd	s6,96(sp)
    e885236c:	ecde                	sd	s7,88(sp)
    e885236e:	8b36                	mv	s6,a3
    e8852370:	8bb2                	mv	s7,a2
	err = HTTPGetHeaderField( inHeaderPtr, inHeaderLen, "RTP-Info", NULL, NULL, &src, &len, NULL );
    e8852372:	4881                	li	a7,0
    e8852374:	01810813          	addi	a6,sp,24
    e8852378:	081c                	addi	a5,sp,16
    e885237a:	4701                	li	a4,0
    e885237c:	4681                	li	a3,0
    e885237e:	0006f617          	auipc	a2,0x6f
    e8852382:	f6260613          	addi	a2,a2,-158 # e88c12e0 <kHTTPServerClass+0x100>
{
    e8852386:	e922                	sd	s0,144(sp)
    e8852388:	ed06                	sd	ra,152(sp)
    e885238a:	e526                	sd	s1,136(sp)
    e885238c:	e14a                	sd	s2,128(sp)
    e885238e:	fcce                	sd	s3,120(sp)
    e8852390:	f8d2                	sd	s4,112(sp)
    e8852392:	f4d6                	sd	s5,104(sp)
    e8852394:	e8e2                	sd	s8,80(sp)
    e8852396:	e4e6                	sd	s9,72(sp)
    e8852398:	e0ea                	sd	s10,64(sp)
	err = HTTPGetHeaderField( inHeaderPtr, inHeaderLen, "RTP-Info", NULL, NULL, &src, &len, NULL );
    e885239a:	c43ff0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
    e885239e:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e88523a0:	e935                	bnez	a0,e8852414 <HTTPParseRTPInfo+0xac>
	end = src + len;
    e88523a2:	faf14a8b          	ldd	s5,a5,(sp),1,4
	ts		= 0;
    e88523a6:	4481                	li	s1,0
	seq		= 0;
    e88523a8:	4981                	li	s3,0
	end = src + len;
    e88523aa:	9abe                	add	s5,s5,a5
	gotTS	= false;
    e88523ac:	4901                	li	s2,0
	gotSeq	= false;
    e88523ae:	4a01                	li	s4,0
		if( strnicmpx( namePtr, nameLen, "seq" ) == 0 )
    e88523b0:	0006fc97          	auipc	s9,0x6f
    e88523b4:	f40c8c93          	addi	s9,s9,-192 # e88c12f0 <kHTTPServerClass+0x110>
		else if( strnicmpx( namePtr, nameLen, "rtptime" ) == 0 )
    e88523b8:	0006fd17          	auipc	s10,0x6f
    e88523bc:	f40d0d13          	addi	s10,s10,-192 # e88c12f8 <kHTTPServerClass+0x118>
			n = SNScanF( valuePtr, valueLen, "%u", &x );
    e88523c0:	00053c17          	auipc	s8,0x53
    e88523c4:	b90c0c13          	addi	s8,s8,-1136 # e88a4f50 <end.8789+0x18a8>
	while( HTTPParseParameter( src, end, &namePtr, &nameLen, &valuePtr, &valueLen, NULL, &src ) == kNoErr )
    e88523c8:	6542                	ld	a0,16(sp)
    e88523ca:	01010893          	addi	a7,sp,16
    e88523ce:	4801                	li	a6,0
    e88523d0:	183c                	addi	a5,sp,56
    e88523d2:	1818                	addi	a4,sp,48
    e88523d4:	1034                	addi	a3,sp,40
    e88523d6:	1010                	addi	a2,sp,32
    e88523d8:	85d6                	mv	a1,s5
    e88523da:	df1ff0ef          	jal	ra,e88521ca <HTTPParseParameter>
    e88523de:	c909                	beqz	a0,e88523f0 <HTTPParseRTPInfo+0x88>
	if( outSeq )
    e88523e0:	080b8163          	beqz	s7,e8852462 <HTTPParseRTPInfo+0xfa>
		require_action( gotSeq, exit, err = kNotFoundErr );
    e88523e4:	060a1d63          	bnez	s4,e885245e <HTTPParseRTPInfo+0xf6>
    e88523e8:	7479                	lui	s0,0xffffe
    e88523ea:	5b940413          	addi	s0,s0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e88523ee:	a01d                	j	e8852414 <HTTPParseRTPInfo+0xac>
		if( strnicmpx( namePtr, nameLen, "seq" ) == 0 )
    e88523f0:	75a2                	ld	a1,40(sp)
    e88523f2:	7502                	ld	a0,32(sp)
    e88523f4:	8666                	mv	a2,s9
    e88523f6:	5660d0ef          	jal	ra,e885f95c <strnicmpx>
    e88523fa:	e121                	bnez	a0,e885243a <HTTPParseRTPInfo+0xd2>
			n = SNScanF( valuePtr, valueLen, "%u", &x );
    e88523fc:	75e2                	ld	a1,56(sp)
    e88523fe:	7542                	ld	a0,48(sp)
    e8852400:	0074                	addi	a3,sp,12
    e8852402:	8662                	mv	a2,s8
    e8852404:	03f0e0ef          	jal	ra,e8860c42 <SNScanF>
			require_action( n == 1, exit, err = kMalformedErr );
    e8852408:	4785                	li	a5,1
    e885240a:	02f50463          	beq	a0,a5,e8852432 <HTTPParseRTPInfo+0xca>
    e885240e:	7479                	lui	s0,0xffffe
    e8852410:	5aa40413          	addi	s0,s0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
}
    e8852414:	8522                	mv	a0,s0
    e8852416:	60ea                	ld	ra,152(sp)
    e8852418:	644a                	ld	s0,144(sp)
    e885241a:	64aa                	ld	s1,136(sp)
    e885241c:	690a                	ld	s2,128(sp)
    e885241e:	79e6                	ld	s3,120(sp)
    e8852420:	7a46                	ld	s4,112(sp)
    e8852422:	7aa6                	ld	s5,104(sp)
    e8852424:	7b06                	ld	s6,96(sp)
    e8852426:	6be6                	ld	s7,88(sp)
    e8852428:	6c46                	ld	s8,80(sp)
    e885242a:	6ca6                	ld	s9,72(sp)
    e885242c:	6d06                	ld	s10,64(sp)
    e885242e:	610d                	addi	sp,sp,160
    e8852430:	8082                	ret
			seq = (uint16_t) x;
    e8852432:	00c15983          	lhu	s3,12(sp)
			gotSeq = true;
    e8852436:	4a05                	li	s4,1
    e8852438:	bf41                	j	e88523c8 <HTTPParseRTPInfo+0x60>
		else if( strnicmpx( namePtr, nameLen, "rtptime" ) == 0 )
    e885243a:	75a2                	ld	a1,40(sp)
    e885243c:	7502                	ld	a0,32(sp)
    e885243e:	866a                	mv	a2,s10
    e8852440:	51c0d0ef          	jal	ra,e885f95c <strnicmpx>
    e8852444:	f151                	bnez	a0,e88523c8 <HTTPParseRTPInfo+0x60>
			n = SNScanF( valuePtr, valueLen, "%u", &x );
    e8852446:	75e2                	ld	a1,56(sp)
    e8852448:	7542                	ld	a0,48(sp)
    e885244a:	0074                	addi	a3,sp,12
    e885244c:	8662                	mv	a2,s8
    e885244e:	7f40e0ef          	jal	ra,e8860c42 <SNScanF>
			require_action( n == 1, exit, err = kMalformedErr );
    e8852452:	4785                	li	a5,1
    e8852454:	faf51de3          	bne	a0,a5,e885240e <HTTPParseRTPInfo+0xa6>
			ts = x;
    e8852458:	44b2                	lw	s1,12(sp)
			gotTS = true;
    e885245a:	4905                	li	s2,1
    e885245c:	b7b5                	j	e88523c8 <HTTPParseRTPInfo+0x60>
		*outSeq = seq;
    e885245e:	013b9023          	sh	s3,0(s7)
	if( outTS )
    e8852462:	fa0b09e3          	beqz	s6,e8852414 <HTTPParseRTPInfo+0xac>
		require_action( gotTS, exit, err = kNotFoundErr );
    e8852466:	f80901e3          	beqz	s2,e88523e8 <HTTPParseRTPInfo+0x80>
		*outTS = ts;
    e885246a:	009b2023          	sw	s1,0(s6)
    e885246e:	b75d                	j	e8852414 <HTTPParseRTPInfo+0xac>

00000000e8852470 <HTTPScanFHeaderValue>:
//===========================================================================================================================
//	HTTPScanFHeaderValue
//===========================================================================================================================

int	HTTPScanFHeaderValue( const char *inHeaderPtr, size_t inHeaderLen, const char *inName, const char *inFormat, ... )
{
    e8852470:	715d                	addi	sp,sp,-80
    e8852472:	f022                	sd	s0,32(sp)
    e8852474:	fef1570b          	sdd	a4,a5,(sp),3,4
    e8852478:	8436                	mv	s0,a3
    e885247a:	e0c2                	sd	a6,64(sp)
    e885247c:	e4c6                	sd	a7,72(sp)
	int					n;
	const char *		valuePtr;
	size_t				valueLen;
	va_list				args;
	
	n = (int) HTTPGetHeaderField( inHeaderPtr, inHeaderLen, inName, NULL, NULL, &valuePtr, &valueLen, NULL );
    e885247e:	01010813          	addi	a6,sp,16
    e8852482:	4881                	li	a7,0
    e8852484:	003c                	addi	a5,sp,8
    e8852486:	4701                	li	a4,0
    e8852488:	4681                	li	a3,0
{
    e885248a:	f406                	sd	ra,40(sp)
	n = (int) HTTPGetHeaderField( inHeaderPtr, inHeaderLen, inName, NULL, NULL, &valuePtr, &valueLen, NULL );
    e885248c:	b51ff0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
	require_noerr_quiet( n, exit );
    e8852490:	e901                	bnez	a0,e88524a0 <HTTPScanFHeaderValue+0x30>
	
	va_start( args, inFormat );
	n = VSNScanF( valuePtr, valueLen, inFormat, args );
    e8852492:	65c2                	ld	a1,16(sp)
    e8852494:	6522                	ld	a0,8(sp)
	va_start( args, inFormat );
    e8852496:	1814                	addi	a3,sp,48
	n = VSNScanF( valuePtr, valueLen, inFormat, args );
    e8852498:	8622                	mv	a2,s0
	va_start( args, inFormat );
    e885249a:	ec36                	sd	a3,24(sp)
	n = VSNScanF( valuePtr, valueLen, inFormat, args );
    e885249c:	6370d0ef          	jal	ra,e88602d2 <VSNScanF>
	va_end( args );
	
exit:
	return( n );	
}
    e88524a0:	70a2                	ld	ra,40(sp)
    e88524a2:	7402                	ld	s0,32(sp)
    e88524a4:	6161                	addi	sp,sp,80
    e88524a6:	8082                	ret

00000000e88524a8 <HTTPHeader_Parse>:
	require_action( ioHeader->len < sizeof( ioHeader->buf ), exit, err = kParamErr );
    e88524a8:	40053703          	ld	a4,1024(a0)
    e88524ac:	3ff00793          	li	a5,1023
    e88524b0:	12e7ec63          	bltu	a5,a4,e88525e8 <HTTPHeader_Parse+0x140>
{
    e88524b4:	7139                	addi	sp,sp,-64
    e88524b6:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88524ba:	f852                	sd	s4,48(sp)
    e88524bc:	fd31590b          	sdd	s2,s3,(sp),2,4
    e88524c0:	fc06                	sd	ra,56(sp)
	ioHeader->methodPtr			= "";
    e88524c2:	0006f497          	auipc	s1,0x6f
    e88524c6:	dae48493          	addi	s1,s1,-594 # e88c1270 <kHTTPServerClass+0x90>
	memset( &ioHeader->url, 0, sizeof( ioHeader->url ) );
    e88524ca:	44050a13          	addi	s4,a0,1088
    e88524ce:	842a                	mv	s0,a0
	ioHeader->methodPtr			= "";
    e88524d0:	40953c23          	sd	s1,1048(a0)
	ioHeader->methodLen			= 0;
    e88524d4:	42053023          	sd	zero,1056(a0)
	ioHeader->method			= kHTTPMethod_Unset;
    e88524d8:	42050423          	sb	zero,1064(a0)
	ioHeader->urlPtr			= "";
    e88524dc:	42953823          	sd	s1,1072(a0)
	ioHeader->urlLen			= 0;
    e88524e0:	42053c23          	sd	zero,1080(a0)
	memset( &ioHeader->url, 0, sizeof( ioHeader->url ) );
    e88524e4:	4581                	li	a1,0
    e88524e6:	08000613          	li	a2,128
    e88524ea:	8552                	mv	a0,s4
    e88524ec:	6a9290ef          	jal	ra,e887c394 <eLIBs_memset>
	end = src + ioHeader->len;
    e88524f0:	40043903          	ld	s2,1024(s0)
	ioHeader->statusCode		= -1;
    e88524f4:	57fd                	li	a5,-1
	ioHeader->protocolPtr		= "";
    e88524f6:	4c943023          	sd	s1,1216(s0)
	ioHeader->protocolLen		= 0;
    e88524fa:	4c043423          	sd	zero,1224(s0)
	ioHeader->statusCode		= -1;
    e88524fe:	4cf42823          	sw	a5,1232(s0)
	ioHeader->reasonPhrasePtr	= "";
    e8852502:	4c943c23          	sd	s1,1240(s0)
	ioHeader->reasonPhraseLen	= 0;
    e8852506:	4e043023          	sd	zero,1248(s0)
	ioHeader->channelID			= 0;
    e885250a:	4e040423          	sb	zero,1256(s0)
	ioHeader->contentLength		= 0;
    e885250e:	4e043823          	sd	zero,1264(s0)
	ioHeader->persistent		= false;
    e8852512:	4e040c23          	sb	zero,1272(s0)
	end = src + ioHeader->len;
    e8852516:	9922                	add	s2,s2,s0
	ptr = src;
    e8852518:	85a2                	mv	a1,s0
	for( c = 0; ( ptr < end ) && ( ( c = *ptr ) != ' ' ) && ( c != '/' ); ++ptr ) {}
    e885251a:	02000693          	li	a3,32
    e885251e:	02f00713          	li	a4,47
    e8852522:	0125ed63          	bltu	a1,s2,e885253c <HTTPHeader_Parse+0x94>
	require_action( ptr < end, exit, err = kMalformedErr );
    e8852526:	7579                	lui	a0,0xffffe
    e8852528:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
}
    e885252c:	70e2                	ld	ra,56(sp)
    e885252e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8852532:	7a42                	ld	s4,48(sp)
    e8852534:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8852538:	6121                	addi	sp,sp,64
    e885253a:	8082                	ret
	for( c = 0; ( ptr < end ) && ( ( c = *ptr ) != ' ' ) && ( c != '/' ); ++ptr ) {}
    e885253c:	84ae                	mv	s1,a1
    e885253e:	9814c78b          	lbuia	a5,(s1),1,0
    e8852542:	0ad78763          	beq	a5,a3,e88525f0 <HTTPHeader_Parse+0x148>
    e8852546:	85a6                	mv	a1,s1
    e8852548:	fce79de3          	bne	a5,a4,e8852522 <HTTPHeader_Parse+0x7a>
		ioHeader->protocolPtr = src;
    e885254c:	4c843023          	sd	s0,1216(s0)
		for( ++ptr; ( ptr < end ) && ( *ptr != ' ' ); ++ptr ) {}
    e8852550:	02000793          	li	a5,32
    e8852554:	a031                	j	e8852560 <HTTPHeader_Parse+0xb8>
		while( ( ptr < end ) && ( *ptr != ' ' ) ) ++ptr;
    e8852556:	0785                	addi	a5,a5,1
    e8852558:	a201                	j	e8852658 <HTTPHeader_Parse+0x1b0>
		while( ( ptr < end ) && ( ( c = *ptr ) != '\r' ) && ( c != '\n' ) ) ++ptr;
    e885255a:	0785                	addi	a5,a5,1
    e885255c:	aa0d                	j	e885268e <HTTPHeader_Parse+0x1e6>
		for( ++ptr; ( ptr < end ) && ( *ptr != ' ' ); ++ptr ) {}
    e885255e:	0485                	addi	s1,s1,1
    e8852560:	0124f663          	bgeu	s1,s2,e885256c <HTTPHeader_Parse+0xc4>
    e8852564:	0004c703          	lbu	a4,0(s1)
    e8852568:	fef71be3          	bne	a4,a5,e885255e <HTTPHeader_Parse+0xb6>
		ioHeader->protocolLen = (size_t)( ptr - ioHeader->protocolPtr );
    e885256c:	408487b3          	sub	a5,s1,s0
    e8852570:	4cf43423          	sd	a5,1224(s0)
		require_action( ptr < end, exit, err = kMalformedErr );
    e8852574:	fb24f9e3          	bgeu	s1,s2,e8852526 <HTTPHeader_Parse+0x7e>
		++ptr;
    e8852578:	0485                	addi	s1,s1,1
		x = 0;
    e885257a:	4781                	li	a5,0
		for( c = 0; ( ptr < end ) && ( ( c = *ptr ) >= '0' ) && ( c <= '9' ); ++ptr ) x = ( x * 10 ) + ( c - '0' ); 
    e885257c:	4701                	li	a4,0
    e885257e:	4625                	li	a2,9
    e8852580:	45a9                	li	a1,10
    e8852582:	01248a63          	beq	s1,s2,e8852596 <HTTPHeader_Parse+0xee>
    e8852586:	0004c703          	lbu	a4,0(s1)
    e885258a:	fd07069b          	addiw	a3,a4,-48
    e885258e:	0ff6f693          	andi	a3,a3,255
    e8852592:	02d67b63          	bgeu	a2,a3,e88525c8 <HTTPHeader_Parse+0x120>
		ioHeader->statusCode = x;
    e8852596:	4cf42823          	sw	a5,1232(s0)
		if( c == ' ' ) ++ptr;
    e885259a:	02000793          	li	a5,32
    e885259e:	00f71363          	bne	a4,a5,e88525a4 <HTTPHeader_Parse+0xfc>
    e88525a2:	0485                	addi	s1,s1,1
		ioHeader->reasonPhrasePtr = ptr;
    e88525a4:	4c943c23          	sd	s1,1240(s0)
		while( ( ptr < end ) && ( ( c = *ptr ) != '\r' ) && ( c != '\n' ) ) ++ptr;
    e88525a8:	87a6                	mv	a5,s1
    e88525aa:	4635                	li	a2,13
    e88525ac:	46a9                	li	a3,10
    e88525ae:	0127f863          	bgeu	a5,s2,e88525be <HTTPHeader_Parse+0x116>
    e88525b2:	0007c703          	lbu	a4,0(a5)
    e88525b6:	00c70463          	beq	a4,a2,e88525be <HTTPHeader_Parse+0x116>
    e88525ba:	00d71e63          	bne	a4,a3,e88525d6 <HTTPHeader_Parse+0x12e>
		ioHeader->reasonPhraseLen = (size_t)( ptr - ioHeader->reasonPhrasePtr );
    e88525be:	409784b3          	sub	s1,a5,s1
    e88525c2:	4e943023          	sd	s1,1248(s0)
    e88525c6:	a0c5                	j	e88526a6 <HTTPHeader_Parse+0x1fe>
		for( c = 0; ( ptr < end ) && ( ( c = *ptr ) >= '0' ) && ( c <= '9' ); ++ptr ) x = ( x * 10 ) + ( c - '0' ); 
    e88525c8:	86ba                	mv	a3,a4
    e88525ca:	24f5968b          	mulaw	a3,a1,a5
    e88525ce:	0485                	addi	s1,s1,1
    e88525d0:	fd06879b          	addiw	a5,a3,-48
    e88525d4:	b77d                	j	e8852582 <HTTPHeader_Parse+0xda>
		while( ( ptr < end ) && ( ( c = *ptr ) != '\r' ) && ( c != '\n' ) ) ++ptr;
    e88525d6:	0785                	addi	a5,a5,1
    e88525d8:	bfd9                	j	e88525ae <HTTPHeader_Parse+0x106>
	else		ioHeader->persistent = (Boolean)( strnicmpx( value, len, "close" ) != 0 );
    e88525da:	0006e617          	auipc	a2,0x6e
    e88525de:	64660613          	addi	a2,a2,1606 # e88c0c20 <__PRETTY_FUNCTION__.9551+0x118>
    e88525e2:	f8a1458b          	ldd	a1,a0,(sp),0,4
    e88525e6:	a8ed                	j	e88526e0 <HTTPHeader_Parse+0x238>
	require_action( ioHeader->len < sizeof( ioHeader->buf ), exit, err = kParamErr );
    e88525e8:	7579                	lui	a0,0xffffe
    e88525ea:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e88525ee:	8082                	ret
		ioHeader->methodLen = len = (size_t)( ptr - src );
    e88525f0:	8d81                	sub	a1,a1,s0
		ioHeader->methodPtr = src;
    e88525f2:	40843c23          	sd	s0,1048(s0)
		ioHeader->methodLen = len = (size_t)( ptr - src );
    e88525f6:	42b43023          	sd	a1,1056(s0)
		if(      strnicmpx( src, len, "GET" )		== 0 ) ioHeader->method = kHTTPMethod_GET;
    e88525fa:	0006f617          	auipc	a2,0x6f
    e88525fe:	cde60613          	addi	a2,a2,-802 # e88c12d8 <kHTTPServerClass+0xf8>
    e8852602:	8522                	mv	a0,s0
		ioHeader->methodLen = len = (size_t)( ptr - src );
    e8852604:	e02e                	sd	a1,0(sp)
		if(      strnicmpx( src, len, "GET" )		== 0 ) ioHeader->method = kHTTPMethod_GET;
    e8852606:	3560d0ef          	jal	ra,e885f95c <strnicmpx>
    e885260a:	4785                	li	a5,1
    e885260c:	cd1d                	beqz	a0,e885264a <HTTPHeader_Parse+0x1a2>
		else if( strnicmpx( src, len, "POST" )		== 0 ) ioHeader->method = kHTTPMethod_POST;
    e885260e:	6582                	ld	a1,0(sp)
    e8852610:	0006f617          	auipc	a2,0x6f
    e8852614:	c9860613          	addi	a2,a2,-872 # e88c12a8 <kHTTPServerClass+0xc8>
    e8852618:	8522                	mv	a0,s0
    e885261a:	3420d0ef          	jal	ra,e885f95c <strnicmpx>
    e885261e:	4789                	li	a5,2
    e8852620:	c50d                	beqz	a0,e885264a <HTTPHeader_Parse+0x1a2>
		else if( strnicmpx( src, len, "PUT" )		== 0 ) ioHeader->method = kHTTPMethod_PUT;
    e8852622:	6582                	ld	a1,0(sp)
    e8852624:	0006f617          	auipc	a2,0x6f
    e8852628:	c8c60613          	addi	a2,a2,-884 # e88c12b0 <kHTTPServerClass+0xd0>
    e885262c:	8522                	mv	a0,s0
    e885262e:	32e0d0ef          	jal	ra,e885f95c <strnicmpx>
    e8852632:	478d                	li	a5,3
    e8852634:	c919                	beqz	a0,e885264a <HTTPHeader_Parse+0x1a2>
		else if( strnicmpx( src, len, "DELETE" )	== 0 ) ioHeader->method = kHTTPMethod_DELETE;
    e8852636:	6582                	ld	a1,0(sp)
    e8852638:	0006f617          	auipc	a2,0x6f
    e885263c:	c8060613          	addi	a2,a2,-896 # e88c12b8 <kHTTPServerClass+0xd8>
    e8852640:	8522                	mv	a0,s0
    e8852642:	31a0d0ef          	jal	ra,e885f95c <strnicmpx>
    e8852646:	e501                	bnez	a0,e885264e <HTTPHeader_Parse+0x1a6>
    e8852648:	4791                	li	a5,4
    e885264a:	42f40423          	sb	a5,1064(s0)
		ioHeader->urlPtr = ptr;
    e885264e:	42943823          	sd	s1,1072(s0)
		while( ( ptr < end ) && ( *ptr != ' ' ) ) ++ptr;
    e8852652:	87a6                	mv	a5,s1
    e8852654:	02000713          	li	a4,32
    e8852658:	0127f663          	bgeu	a5,s2,e8852664 <HTTPHeader_Parse+0x1bc>
    e885265c:	0007c683          	lbu	a3,0(a5)
    e8852660:	eee69be3          	bne	a3,a4,e8852556 <HTTPHeader_Parse+0xae>
		ioHeader->urlLen = (size_t)( ptr - ioHeader->urlPtr );
    e8852664:	409785b3          	sub	a1,a5,s1
    e8852668:	42b43c23          	sd	a1,1080(s0)
		require_action( ptr < end, exit, err = kMalformedErr );
    e885266c:	eb27fde3          	bgeu	a5,s2,e8852526 <HTTPHeader_Parse+0x7e>
		err = URLParseComponents( ioHeader->urlPtr, ioHeader->urlPtr + ioHeader->urlLen, &ioHeader->url, NULL );
    e8852670:	4681                	li	a3,0
    e8852672:	8652                	mv	a2,s4
    e8852674:	95a6                	add	a1,a1,s1
    e8852676:	8526                	mv	a0,s1
		++ptr;
    e8852678:	00178993          	addi	s3,a5,1
		err = URLParseComponents( ioHeader->urlPtr, ioHeader->urlPtr + ioHeader->urlLen, &ioHeader->url, NULL );
    e885267c:	0260f0ef          	jal	ra,e88616a2 <URLParseComponents>
		require_noerr( err, exit );
    e8852680:	ea0516e3          	bnez	a0,e885252c <HTTPHeader_Parse+0x84>
		ioHeader->protocolPtr = ptr;
    e8852684:	4d343023          	sd	s3,1216(s0)
		++ptr;
    e8852688:	87ce                	mv	a5,s3
		while( ( ptr < end ) && ( ( c = *ptr ) != '\r' ) && ( c != '\n' ) ) ++ptr;
    e885268a:	4635                	li	a2,13
    e885268c:	46a9                	li	a3,10
    e885268e:	01278863          	beq	a5,s2,e885269e <HTTPHeader_Parse+0x1f6>
    e8852692:	0007c703          	lbu	a4,0(a5)
    e8852696:	00c70463          	beq	a4,a2,e885269e <HTTPHeader_Parse+0x1f6>
    e885269a:	ecd710e3          	bne	a4,a3,e885255a <HTTPHeader_Parse+0xb2>
		ioHeader->protocolLen = (size_t)( ptr - ioHeader->protocolPtr );
    e885269e:	413789b3          	sub	s3,a5,s3
    e88526a2:	4d343423          	sd	s3,1224(s0)
		require_action( ptr < end, exit, err = kMalformedErr );
    e88526a6:	e927f0e3          	bgeu	a5,s2,e8852526 <HTTPHeader_Parse+0x7e>
		++ptr;
    e88526aa:	0785                	addi	a5,a5,1
	require_action( ptr < end, exit, err = kMalformedErr );
    e88526ac:	e727fde3          	bgeu	a5,s2,e8852526 <HTTPHeader_Parse+0x7e>
	err = HTTPGetHeaderField( ioHeader->buf, ioHeader->len, kHTTPHeader_Connection, NULL, NULL, &value, &len, NULL );
    e88526b0:	40043583          	ld	a1,1024(s0)
    e88526b4:	4881                	li	a7,0
    e88526b6:	880a                	mv	a6,sp
    e88526b8:	003c                	addi	a5,sp,8
    e88526ba:	4701                	li	a4,0
    e88526bc:	4681                	li	a3,0
    e88526be:	0006e617          	auipc	a2,0x6e
    e88526c2:	56a60613          	addi	a2,a2,1386 # e88c0c28 <__PRETTY_FUNCTION__.9551+0x120>
    e88526c6:	8522                	mv	a0,s0
    e88526c8:	915ff0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
	if( err )	ioHeader->persistent = (Boolean)( strnicmpx( ioHeader->protocolPtr, ioHeader->protocolLen, "HTTP/1.0" ) != 0 );
    e88526cc:	f00507e3          	beqz	a0,e88525da <HTTPHeader_Parse+0x132>
    e88526d0:	4c843583          	ld	a1,1224(s0)
    e88526d4:	4c043503          	ld	a0,1216(s0)
    e88526d8:	0006f617          	auipc	a2,0x6f
    e88526dc:	be860613          	addi	a2,a2,-1048 # e88c12c0 <kHTTPServerClass+0xe0>
	else		ioHeader->persistent = (Boolean)( strnicmpx( value, len, "close" ) != 0 );
    e88526e0:	27c0d0ef          	jal	ra,e885f95c <strnicmpx>
    e88526e4:	00a03533          	snez	a0,a0
	HTTPScanFHeaderValue( ioHeader->buf, ioHeader->len, "Content-Length", "%llu", &ioHeader->contentLength );
    e88526e8:	40043583          	ld	a1,1024(s0)
	else		ioHeader->persistent = (Boolean)( strnicmpx( value, len, "close" ) != 0 );
    e88526ec:	4ea40c23          	sb	a0,1272(s0)
	HTTPScanFHeaderValue( ioHeader->buf, ioHeader->len, "Content-Length", "%llu", &ioHeader->contentLength );
    e88526f0:	4f040713          	addi	a4,s0,1264
    e88526f4:	0006f697          	auipc	a3,0x6f
    e88526f8:	bdc68693          	addi	a3,a3,-1060 # e88c12d0 <kHTTPServerClass+0xf0>
    e88526fc:	0006e617          	auipc	a2,0x6e
    e8852700:	79460613          	addi	a2,a2,1940 # e88c0e90 <kHTTPClientClass+0x78>
    e8852704:	8522                	mv	a0,s0
    e8852706:	d6bff0ef          	jal	ra,e8852470 <HTTPScanFHeaderValue>
	err = kNoErr;
    e885270a:	4501                	li	a0,0
    e885270c:	b505                	j	e885252c <HTTPHeader_Parse+0x84>

00000000e885270e <HTTPReadHeader>:
//===========================================================================================================================
//	HTTPReadHeader
//===========================================================================================================================

OSStatus	HTTPReadHeader( HTTPHeader *inHeader, NetTransportRead_f inRead_f, void *inRead_ctx )
{
    e885270e:	711d                	addi	sp,sp,-96
    e8852710:	e8a2                	sd	s0,80(sp)
    e8852712:	e4a6                	sd	s1,72(sp)
    e8852714:	fc4e                	sd	s3,56(sp)
    e8852716:	f852                	sd	s4,48(sp)
    e8852718:	f456                	sd	s5,40(sp)
    e885271a:	f05a                	sd	s6,32(sp)
    e885271c:	ec5e                	sd	s7,24(sp)
    e885271e:	ec86                	sd	ra,88(sp)
    e8852720:	e0ca                	sd	s2,64(sp)
	char *			end;
	size_t			len;
	
	buf = inHeader->buf;
	src = buf;
	dst = buf + inHeader->len;
    e8852722:	40053903          	ld	s2,1024(a0)
{
    e8852726:	84aa                	mv	s1,a0
    e8852728:	8a2e                	mv	s4,a1
    e885272a:	8ab2                	mv	s5,a2
	dst = buf + inHeader->len;
    e885272c:	992a                	add	s2,s2,a0
	lim = buf + sizeof( inHeader->buf );
    e885272e:	40050b13          	addi	s6,a0,1024
	src = buf;
    e8852732:	8baa                	mv	s7,a0
		// use LFLF or weird combos like CRLFLF so this handles CRLFCRLF, LFLF, and CRLFLF (but not CRCR).
		
		end = dst;
		for( ;; )
		{
			while( ( src < end ) && ( *src != '\n' ) ) ++src;
    e8852734:	4429                	li	s0,10
			if( src >= end ) break;
			
			len = (size_t)( end - src );
			if( ( len >= 3 ) && ( src[ 1 ] == '\r' ) && ( src[ 2 ] == '\n' ) ) // CRLFCRLF or LFCRLF.
    e8852736:	4989                	li	s3,2
		len = inHeader->extraDataLen;
    e8852738:	4104b603          	ld	a2,1040(s1)
    e885273c:	412b05b3          	sub	a1,s6,s2
    e8852740:	e432                	sd	a2,8(sp)
		if( len > 0 )
    e8852742:	ca25                	beqz	a2,e88527b2 <HTTPReadHeader+0xa4>
			require_action( len <= (size_t)( lim - dst ), exit, err = kParamErr );
    e8852744:	0ac5e763          	bltu	a1,a2,e88527f2 <HTTPReadHeader+0xe4>
			memmove( dst, inHeader->extraDataPtr, len );
    e8852748:	4084b583          	ld	a1,1032(s1)
    e885274c:	854a                	mv	a0,s2
    e885274e:	45f290ef          	jal	ra,e887c3ac <eLIBs_memmove>
			inHeader->extraDataLen = 0;
    e8852752:	4004b823          	sd	zero,1040(s1)
		inHeader->len += len;
    e8852756:	4004b783          	ld	a5,1024(s1)
		dst += len;
    e885275a:	6722                	ld	a4,8(sp)
			if( ( len >= 3 ) && ( src[ 1 ] == '\r' ) && ( src[ 2 ] == '\n' ) ) // CRLFCRLF or LFCRLF.
    e885275c:	46b5                	li	a3,13
		dst += len;
    e885275e:	993a                	add	s2,s2,a4
		inHeader->len += len;
    e8852760:	973e                	add	a4,a4,a5
    e8852762:	40e4b023          	sd	a4,1024(s1)
		end = dst;
    e8852766:	87de                	mv	a5,s7
    e8852768:	8bbe                	mv	s7,a5
			while( ( src < end ) && ( *src != '\n' ) ) ++src;
    e885276a:	fd27f7e3          	bgeu	a5,s2,e8852738 <HTTPReadHeader+0x2a>
    e885276e:	0007c703          	lbu	a4,0(a5)
    e8852772:	06871e63          	bne	a4,s0,e88527ee <HTTPReadHeader+0xe0>
			len = (size_t)( end - src );
    e8852776:	40f90733          	sub	a4,s2,a5
			if( ( len >= 3 ) && ( src[ 1 ] == '\r' ) && ( src[ 2 ] == '\n' ) ) // CRLFCRLF or LFCRLF.
    e885277a:	04e9fe63          	bgeu	s3,a4,e88527d6 <HTTPReadHeader+0xc8>
    e885277e:	0017c603          	lbu	a2,1(a5)
    e8852782:	04d61c63          	bne	a2,a3,e88527da <HTTPReadHeader+0xcc>
    e8852786:	0027c603          	lbu	a2,2(a5)
    e885278a:	06861263          	bne	a2,s0,e88527ee <HTTPReadHeader+0xe0>
    e885278e:	e43a                	sd	a4,8(sp)
			{
				end = src + 3;
    e8852790:	00378413          	addi	s0,a5,3
			++src;
		}
	}
	
foundHeader:
	inHeader->len = (size_t)( end - buf );
    e8852794:	409407b3          	sub	a5,s0,s1
    e8852798:	40f4b023          	sd	a5,1024(s1)
	err = HTTPHeader_Parse( inHeader );
    e885279c:	8526                	mv	a0,s1
    e885279e:	d0bff0ef          	jal	ra,e88524a8 <HTTPHeader_Parse>
	require_noerr( err, exit );
    e88527a2:	ed19                	bnez	a0,e88527c0 <HTTPReadHeader+0xb2>
	inHeader->extraDataPtr = end;
	inHeader->extraDataLen = (size_t)( dst - end );
    e88527a4:	408907b3          	sub	a5,s2,s0
	inHeader->extraDataPtr = end;
    e88527a8:	4084b423          	sd	s0,1032(s1)
	inHeader->extraDataLen = (size_t)( dst - end );
    e88527ac:	40f4b823          	sd	a5,1040(s1)
    e88527b0:	a801                	j	e88527c0 <HTTPReadHeader+0xb2>
			len = (size_t)( lim - dst );
    e88527b2:	e42e                	sd	a1,8(sp)
			require_action( len > 0, exit, err = kNoSpaceErr );
    e88527b4:	c1b9                	beqz	a1,e88527fa <HTTPReadHeader+0xec>
			err = inRead_f( dst, len, &len, inRead_ctx );
    e88527b6:	86d6                	mv	a3,s5
    e88527b8:	0030                	addi	a2,sp,8
    e88527ba:	854a                	mv	a0,s2
    e88527bc:	9a02                	jalr	s4
			require_noerr_quiet( err, exit );
    e88527be:	dd41                	beqz	a0,e8852756 <HTTPReadHeader+0x48>
	
exit:
	return( err );
}
    e88527c0:	60e6                	ld	ra,88(sp)
    e88527c2:	6446                	ld	s0,80(sp)
    e88527c4:	64a6                	ld	s1,72(sp)
    e88527c6:	6906                	ld	s2,64(sp)
    e88527c8:	79e2                	ld	s3,56(sp)
    e88527ca:	7a42                	ld	s4,48(sp)
    e88527cc:	7aa2                	ld	s5,40(sp)
    e88527ce:	7b02                	ld	s6,32(sp)
    e88527d0:	6be2                	ld	s7,24(sp)
    e88527d2:	6125                	addi	sp,sp,96
    e88527d4:	8082                	ret
			else if( ( len >= 2 ) && ( src[ 1 ] == '\n' ) ) // LFLF or CRLFLF.
    e88527d6:	f73711e3          	bne	a4,s3,e8852738 <HTTPReadHeader+0x2a>
    e88527da:	0017c603          	lbu	a2,1(a5)
    e88527de:	00861663          	bne	a2,s0,e88527ea <HTTPReadHeader+0xdc>
    e88527e2:	e43a                	sd	a4,8(sp)
				end = src + 2;
    e88527e4:	00278413          	addi	s0,a5,2
				goto foundHeader;
    e88527e8:	b775                	j	e8852794 <HTTPReadHeader+0x86>
			else if( len < 3 )
    e88527ea:	f4e9f7e3          	bgeu	s3,a4,e8852738 <HTTPReadHeader+0x2a>
    e88527ee:	0785                	addi	a5,a5,1
    e88527f0:	bfa5                	j	e8852768 <HTTPReadHeader+0x5a>
			require_action( len <= (size_t)( lim - dst ), exit, err = kParamErr );
    e88527f2:	7579                	lui	a0,0xffffe
    e88527f4:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e88527f8:	b7e1                	j	e88527c0 <HTTPReadHeader+0xb2>
			require_action( len > 0, exit, err = kNoSpaceErr );
    e88527fa:	7579                	lui	a0,0xffffe
    e88527fc:	59550513          	addi	a0,a0,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
    e8852800:	b7c1                	j	e88527c0 <HTTPReadHeader+0xb2>

00000000e8852802 <LogHTTP>:
	LogHTTP( 
		LogCategory *		inRequestCategory, 
		LogCategory *		inResponseCategory, 
		const void *		inHeaderPtr, size_t inHeaderLen, 
		const void *		inBodyPtr,   size_t inBodyLen )
{
    e8852802:	7139                	addi	sp,sp,-64
    e8852804:	e422                	sd	s0,8(sp)
    e8852806:	e826                	sd	s1,16(sp)
    e8852808:	ec4a                	sd	s2,24(sp)
    e885280a:	f04e                	sd	s3,32(sp)
    e885280c:	fc06                	sd	ra,56(sp)
    e885280e:	f452                	sd	s4,40(sp)
    e8852810:	f856                	sd	s5,48(sp)
    e8852812:	842e                	mv	s0,a1
    e8852814:	8932                	mv	s2,a2
    e8852816:	89b6                	mv	s3,a3
	const char *		ptr;
	unsigned char		c;
	int					isRequest;
	LogCategory *		category;
	
	if( !inRequestCategory )   inRequestCategory  = &log_category_from_name( HTTPRequests );
    e8852818:	00082497          	auipc	s1,0x82
    e885281c:	73848493          	addi	s1,s1,1848 # e88d4f50 <gLogCategory_HTTPRequests>
    e8852820:	c111                	beqz	a0,e8852824 <LogHTTP+0x22>
    e8852822:	84aa                	mv	s1,a0
	if( !inResponseCategory )  inResponseCategory = &log_category_from_name( HTTPResponses );
    e8852824:	e409                	bnez	s0,e885282e <LogHTTP+0x2c>
    e8852826:	00082417          	auipc	s0,0x82
    e885282a:	78a40413          	addi	s0,s0,1930 # e88d4fb0 <gLogCategory_HTTPResponses>
	if( !log_category_enabled( inRequestCategory,  kLogLevelInfo ) && 
    e885282e:	409c                	lw	a5,0(s1)
    e8852830:	02800713          	li	a4,40
    e8852834:	02f75963          	bge	a4,a5,e8852866 <LogHTTP+0x64>
		!log_category_enabled( inResponseCategory, kLogLevelInfo ) )
    e8852838:	401c                	lw	a5,0(s0)
	if( !log_category_enabled( inRequestCategory,  kLogLevelInfo ) && 
    e885283a:	02800713          	li	a4,40
    e885283e:	00f74b63          	blt	a4,a5,e8852854 <LogHTTP+0x52>
		!log_category_enabled( inResponseCategory, kLogLevelInfo ) )
    e8852842:	577d                	li	a4,-1
    e8852844:	02e79463          	bne	a5,a4,e885286c <LogHTTP+0x6a>
    e8852848:	02800593          	li	a1,40
    e885284c:	8522                	mv	a0,s0
    e885284e:	025010ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8852852:	ed09                	bnez	a0,e885286c <LogHTTP+0x6a>
		{
			if( isRequest )	ulog( inRequestCategory,  kLogLevelMax, "HTTP Request:  %.*s\n",   (int)( eol - src ), src );
			else			ulog( inResponseCategory, kLogLevelMax, "HTTP Response: %.*s\n\n", (int)( eol - src ), src );
		}
	}
}
    e8852854:	70e2                	ld	ra,56(sp)
    e8852856:	6422                	ld	s0,8(sp)
    e8852858:	64c2                	ld	s1,16(sp)
    e885285a:	6962                	ld	s2,24(sp)
    e885285c:	7982                	ld	s3,32(sp)
    e885285e:	7a22                	ld	s4,40(sp)
    e8852860:	7ac2                	ld	s5,48(sp)
    e8852862:	6121                	addi	sp,sp,64
    e8852864:	8082                	ret
	if( !log_category_enabled( inRequestCategory,  kLogLevelInfo ) && 
    e8852866:	577d                	li	a4,-1
    e8852868:	08e78963          	beq	a5,a4,e88528fa <LogHTTP+0xf8>
	end = src + inHeaderLen;
    e885286c:	013906b3          	add	a3,s2,s3
	c = '\0';
    e8852870:	4781                	li	a5,0
	for( eol = src; ( eol < end ) && ( ( c = *eol ) != '\r' ) && ( c != '\n' ); ++eol ) {} // Find end of line.
    e8852872:	89ca                	mv	s3,s2
    e8852874:	4635                	li	a2,13
    e8852876:	4729                	li	a4,10
    e8852878:	00d9f663          	bgeu	s3,a3,e8852884 <LogHTTP+0x82>
    e885287c:	0009c783          	lbu	a5,0(s3)
    e8852880:	08c79463          	bne	a5,a2,e8852908 <LogHTTP+0x106>
	c = '\0';
    e8852884:	874a                	mv	a4,s2
	for( ptr = src; ( ptr < end ) && ( ( c = *ptr ) != ' ' )  && ( c != '/'  ); ++ptr ) {} // Detect request or response.
    e8852886:	02000593          	li	a1,32
    e885288a:	02f00613          	li	a2,47
    e885288e:	08d77363          	bgeu	a4,a3,e8852914 <LogHTTP+0x112>
    e8852892:	00074783          	lbu	a5,0(a4) # ffffffffffffe000 <__DRAM0_INF_BASE+0xffffffff0000e000>
    e8852896:	08b78363          	beq	a5,a1,e885291c <LogHTTP+0x11a>
    e885289a:	06c79b63          	bne	a5,a2,e8852910 <LogHTTP+0x10e>
	else			{ isRequest = 0; category = inResponseCategory; }
    e885289e:	8a22                	mv	s4,s0
    e88528a0:	4a81                	li	s5,0
	if( log_category_enabled( category, kLogLevelVerbose ) ) // Multi-line
    e88528a2:	000a2783          	lw	a5,0(s4)
    e88528a6:	4751                	li	a4,20
    e88528a8:	08f74263          	blt	a4,a5,e885292c <LogHTTP+0x12a>
    e88528ac:	577d                	li	a4,-1
    e88528ae:	06e78a63          	beq	a5,a4,e8852922 <LogHTTP+0x120>
		if( inHeaderPtr )
    e88528b2:	fa0901e3          	beqz	s2,e8852854 <LogHTTP+0x52>
			if( isRequest )	ulog( inRequestCategory,  kLogLevelMax, "HTTP Request:  %.*s\n",   (int)( eol - src ), src );
    e88528b6:	0a0a8463          	beqz	s5,e885295e <LogHTTP+0x15c>
    e88528ba:	409c                	lw	a5,0(s1)
    e88528bc:	0fe00713          	li	a4,254
    e88528c0:	f8f74ae3          	blt	a4,a5,e8852854 <LogHTTP+0x52>
    e88528c4:	577d                	li	a4,-1
    e88528c6:	08e78463          	beq	a5,a4,e885294e <LogHTTP+0x14c>
    e88528ca:	87ca                	mv	a5,s2
    e88528cc:	4129873b          	subw	a4,s3,s2
    e88528d0:	0006f697          	auipc	a3,0x6f
    e88528d4:	a4868693          	addi	a3,a3,-1464 # e88c1318 <kHTTPServerClass+0x138>
    e88528d8:	0fe00613          	li	a2,254
    e88528dc:	0006f597          	auipc	a1,0x6f
    e88528e0:	a6c58593          	addi	a1,a1,-1428 # e88c1348 <__PRETTY_FUNCTION__.9824>
    e88528e4:	8526                	mv	a0,s1
}
    e88528e6:	6422                	ld	s0,8(sp)
    e88528e8:	70e2                	ld	ra,56(sp)
    e88528ea:	64c2                	ld	s1,16(sp)
    e88528ec:	6962                	ld	s2,24(sp)
    e88528ee:	7982                	ld	s3,32(sp)
    e88528f0:	7a22                	ld	s4,40(sp)
    e88528f2:	7ac2                	ld	s5,48(sp)
    e88528f4:	6121                	addi	sp,sp,64
			else			ulog( inResponseCategory, kLogLevelMax, "HTTP Response: %.*s\n\n", (int)( eol - src ), src );
    e88528f6:	37f0106f          	j	e8854474 <LogPrintF>
	if( !log_category_enabled( inRequestCategory,  kLogLevelInfo ) && 
    e88528fa:	02800593          	li	a1,40
    e88528fe:	8526                	mv	a0,s1
    e8852900:	772010ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8852904:	d915                	beqz	a0,e8852838 <LogHTTP+0x36>
    e8852906:	b79d                	j	e885286c <LogHTTP+0x6a>
	for( eol = src; ( eol < end ) && ( ( c = *eol ) != '\r' ) && ( c != '\n' ); ++eol ) {} // Find end of line.
    e8852908:	f6e78ee3          	beq	a5,a4,e8852884 <LogHTTP+0x82>
    e885290c:	0985                	addi	s3,s3,1
    e885290e:	b7ad                	j	e8852878 <LogHTTP+0x76>
	for( ptr = src; ( ptr < end ) && ( ( c = *ptr ) != ' ' )  && ( c != '/'  ); ++ptr ) {} // Detect request or response.
    e8852910:	0705                	addi	a4,a4,1
    e8852912:	bfb5                	j	e885288e <LogHTTP+0x8c>
	if( c == ' ' )	{ isRequest = 1; category = inRequestCategory; }
    e8852914:	02000713          	li	a4,32
    e8852918:	f8e793e3          	bne	a5,a4,e885289e <LogHTTP+0x9c>
    e885291c:	8a26                	mv	s4,s1
    e885291e:	4a85                	li	s5,1
    e8852920:	b749                	j	e88528a2 <LogHTTP+0xa0>
	if( log_category_enabled( category, kLogLevelVerbose ) ) // Multi-line
    e8852922:	45d1                	li	a1,20
    e8852924:	8552                	mv	a0,s4
    e8852926:	74c010ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885292a:	f541                	bnez	a0,e88528b2 <LogHTTP+0xb0>
	else if( log_category_enabled( category, kLogLevelInfo ) ) // Single line
    e885292c:	000a2783          	lw	a5,0(s4)
    e8852930:	02800713          	li	a4,40
    e8852934:	f2f740e3          	blt	a4,a5,e8852854 <LogHTTP+0x52>
    e8852938:	577d                	li	a4,-1
    e885293a:	f6e79ce3          	bne	a5,a4,e88528b2 <LogHTTP+0xb0>
    e885293e:	02800593          	li	a1,40
    e8852942:	8552                	mv	a0,s4
    e8852944:	72e010ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8852948:	f00506e3          	beqz	a0,e8852854 <LogHTTP+0x52>
    e885294c:	b79d                	j	e88528b2 <LogHTTP+0xb0>
			if( isRequest )	ulog( inRequestCategory,  kLogLevelMax, "HTTP Request:  %.*s\n",   (int)( eol - src ), src );
    e885294e:	0fe00593          	li	a1,254
    e8852952:	8526                	mv	a0,s1
    e8852954:	71e010ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8852958:	ee050ee3          	beqz	a0,e8852854 <LogHTTP+0x52>
    e885295c:	b7bd                	j	e88528ca <LogHTTP+0xc8>
			else			ulog( inResponseCategory, kLogLevelMax, "HTTP Response: %.*s\n\n", (int)( eol - src ), src );
    e885295e:	401c                	lw	a5,0(s0)
    e8852960:	0fe00713          	li	a4,254
    e8852964:	eef748e3          	blt	a4,a5,e8852854 <LogHTTP+0x52>
    e8852968:	577d                	li	a4,-1
    e885296a:	02e78163          	beq	a5,a4,e885298c <LogHTTP+0x18a>
    e885296e:	87ca                	mv	a5,s2
    e8852970:	4129873b          	subw	a4,s3,s2
    e8852974:	0006f697          	auipc	a3,0x6f
    e8852978:	9bc68693          	addi	a3,a3,-1604 # e88c1330 <kHTTPServerClass+0x150>
    e885297c:	0fe00613          	li	a2,254
    e8852980:	0006f597          	auipc	a1,0x6f
    e8852984:	9c858593          	addi	a1,a1,-1592 # e88c1348 <__PRETTY_FUNCTION__.9824>
    e8852988:	8522                	mv	a0,s0
    e885298a:	bfb1                	j	e88528e6 <LogHTTP+0xe4>
    e885298c:	0fe00593          	li	a1,254
    e8852990:	8522                	mv	a0,s0
    e8852992:	6e0010ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8852996:	ea050fe3          	beqz	a0,e8852854 <LogHTTP+0x52>
    e885299a:	bfd1                	j	e885296e <LogHTTP+0x16c>

00000000e885299c <_ReadKeychain>:
//
//	gKeychainLock must be held.
//===========================================================================================================================

static OSStatus	_ReadKeychain( void )
{
    e885299c:	7139                	addi	sp,sp,-64
    e885299e:	737d                	lui	t1,0xfffff
    e88529a0:	fc06                	sd	ra,56(sp)
    e88529a2:	f852                	sd	s4,48(sp)
    e88529a4:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88529a8:	fd31590b          	sdd	s2,s3,(sp),2,4
    e88529ac:	911a                	add	sp,sp,t1
	FILE *					file = NULL;
	CFMutableDataRef		data = NULL;
	CFMutableArrayRef		items = NULL;
	uint8_t *				ptr;
	
	NormalizePath( kKeychainParentPath, kSizeCString, path, sizeof( path ), 0 );
    e88529ae:	0814                	addi	a3,sp,16
    e88529b0:	6705                	lui	a4,0x1
    e88529b2:	9736                	add	a4,a4,a3
    e88529b4:	77fd                	lui	a5,0xfffff
    e88529b6:	97ba                	add	a5,a5,a4
    e88529b8:	863e                	mv	a2,a5
    e88529ba:	4701                	li	a4,0
    e88529bc:	6685                	lui	a3,0x1
    e88529be:	55fd                	li	a1,-1
    e88529c0:	0006f517          	auipc	a0,0x6f
    e88529c4:	9b050513          	addi	a0,a0,-1616 # e88c1370 <__PRETTY_FUNCTION__.9824+0x28>
    e88529c8:	e43e                	sd	a5,8(sp)
    e88529ca:	1a2020ef          	jal	ra,e8854b6c <NormalizePath>
	mkpath( path, S_IRWXU, S_IRWXU );
    e88529ce:	6522                	ld	a0,8(sp)
    e88529d0:	1c000613          	li	a2,448
    e88529d4:	1c000593          	li	a1,448
    e88529d8:	190020ef          	jal	ra,e8854b68 <mkpath>
	len = strlen( path );
    e88529dc:	6522                	ld	a0,8(sp)
    e88529de:	13b290ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88529e2:	2501                	sext.w	a0,a0
    e88529e4:	7c05378b          	extu	a5,a0,31,0
	if( ( len > 0 ) && ( path[ len - 1 ] != '\\' ) ) path[ len++ ] = '\\';
    e88529e8:	cf89                	beqz	a5,e8852a02 <_ReadKeychain+0x66>
    e88529ea:	6722                	ld	a4,8(sp)
    e88529ec:	973e                	add	a4,a4,a5
    e88529ee:	fff74683          	lbu	a3,-1(a4) # fff <memcmp-0xe87ff001>
    e88529f2:	05c00713          	li	a4,92
    e88529f6:	00e68663          	beq	a3,a4,e8852a02 <_ReadKeychain+0x66>
    e88529fa:	66a2                	ld	a3,8(sp)
    e88529fc:	0785                	addi	a5,a5,1
    e88529fe:	10a6d70b          	surb	a4,a3,a0,0
	snprintf( &path[ len ], sizeof( path ) - len, "%s", kKeychainFilename );
    e8852a02:	0818                	addi	a4,sp,16
    e8852a04:	6585                	lui	a1,0x1
    e8852a06:	8d9d                	sub	a1,a1,a5
    e8852a08:	0006f697          	auipc	a3,0x6f
    e8852a0c:	97868693          	addi	a3,a3,-1672 # e88c1380 <__PRETTY_FUNCTION__.9824+0x38>
    e8852a10:	00058617          	auipc	a2,0x58
    e8852a14:	99060613          	addi	a2,a2,-1648 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e8852a18:	00f70533          	add	a0,a4,a5
    e8852a1c:	035290ef          	jal	ra,e887c250 <eLIBs_snprintf>
	file = fopen( path, "rb" );
    e8852a20:	0006c597          	auipc	a1,0x6c
    e8852a24:	08858593          	addi	a1,a1,136 # e88beaa8 <__PRETTY_FUNCTION__.9367+0x38>
    e8852a28:	0808                	addi	a0,sp,16
    e8852a2a:	047290ef          	jal	ra,e887c270 <eLIBs_fopen>
    e8852a2e:	89aa                	mv	s3,a0
	err = map_global_value_errno( file, file );
    e8852a30:	e919                	bnez	a0,e8852a46 <_ReadKeychain+0xaa>
    e8852a32:	00092797          	auipc	a5,0x92
    e8852a36:	bf678793          	addi	a5,a5,-1034 # e88e4628 <lwip_errno>
    e8852a3a:	4380                	lw	s0,0(a5)
    e8852a3c:	ec51                	bnez	s0,e8852ad8 <_ReadKeychain+0x13c>
    e8852a3e:	7479                	lui	s0,0xffffe
    e8852a40:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	
exit:
	CFReleaseNullSafe( items );
	CFReleaseNullSafe( data );
	if( file ) fclose( file );
	return( err );
    e8852a44:	a851                	j	e8852ad8 <_ReadKeychain+0x13c>
	data = CFDataCreateMutable( NULL, 0 );
    e8852a46:	4581                	li	a1,0
    e8852a48:	4501                	li	a0,0
    e8852a4a:	861f40ef          	jal	ra,e88472aa <CFDataCreateMutable>
    e8852a4e:	84aa                	mv	s1,a0
	require_action( data, exit, err = kNoMemoryErr );
    e8852a50:	c955                	beqz	a0,e8852b04 <_ReadKeychain+0x168>
	used = 0;
    e8852a52:	4401                	li	s0,0
	reserved = 0;
    e8852a54:	4901                	li	s2,0
			reserved += 16384;
    e8852a56:	6a11                	lui	s4,0x4
		if( used == reserved )
    e8852a58:	00891863          	bne	s2,s0,e8852a68 <_ReadKeychain+0xcc>
			reserved += 16384;
    e8852a5c:	9952                	add	s2,s2,s4
			CFDataSetLength( data, reserved );
    e8852a5e:	864a                	mv	a2,s2
    e8852a60:	4581                	li	a1,0
    e8852a62:	8526                	mv	a0,s1
    e8852a64:	ab1f60ef          	jal	ra,e8849514 <CFLDataSetData>
		ptr = CFDataGetMutableBytePtr( data );
    e8852a68:	8526                	mv	a0,s1
    e8852a6a:	899f40ef          	jal	ra,e8847302 <CFDataGetMutableBytePtr>
		n = fread( ptr + used, 1, reserved - used, file );
    e8852a6e:	9522                	add	a0,a0,s0
    e8852a70:	86ce                	mv	a3,s3
    e8852a72:	4089063b          	subw	a2,s2,s0
    e8852a76:	4585                	li	a1,1
    e8852a78:	001290ef          	jal	ra,e887c278 <eLIBs_fread>
    e8852a7c:	7c05350b          	extu	a0,a0,31,0
		if( n == 0 ) break;
    e8852a80:	c119                	beqz	a0,e8852a86 <_ReadKeychain+0xea>
		used += n;
    e8852a82:	942a                	add	s0,s0,a0
		if( used == reserved )
    e8852a84:	bfd1                	j	e8852a58 <_ReadKeychain+0xbc>
	CFDataSetLength( data, used );
    e8852a86:	8622                	mv	a2,s0
    e8852a88:	4581                	li	a1,0
    e8852a8a:	8526                	mv	a0,s1
    e8852a8c:	a89f60ef          	jal	ra,e8849514 <CFLDataSetData>
	items = (CFMutableArrayRef) CFPropertyListCreateWithData( NULL, data, kCFPropertyListMutableContainers, NULL, NULL );
    e8852a90:	4701                	li	a4,0
    e8852a92:	4681                	li	a3,0
    e8852a94:	4605                	li	a2,1
    e8852a96:	85a6                	mv	a1,s1
    e8852a98:	4501                	li	a0,0
    e8852a9a:	c73f40ef          	jal	ra,e884770c <CFPropertyListCreateWithData>
    e8852a9e:	892a                	mv	s2,a0
	require_action( items, exit, err = kUnknownErr );
    e8852aa0:	c539                	beqz	a0,e8852aee <_ReadKeychain+0x152>
	require_action( CFIsType( items, CFArray ), exit, err = kTypeErr );
    e8852aa2:	e90f40ef          	jal	ra,e8847132 <CFGetTypeID>
    e8852aa6:	0005041b          	sext.w	s0,a0
    e8852aaa:	ebef40ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8852aae:	2501                	sext.w	a0,a0
    e8852ab0:	04a41363          	bne	s0,a0,e8852af6 <_ReadKeychain+0x15a>
	ForgetCF( &gKeychainItems );
    e8852ab4:	00091797          	auipc	a5,0x91
    e8852ab8:	21c78793          	addi	a5,a5,540 # e88e3cd0 <gKeychainItems>
    e8852abc:	6388                	ld	a0,0(a5)
    e8852abe:	843e                	mv	s0,a5
    e8852ac0:	c119                	beqz	a0,e8852ac6 <_ReadKeychain+0x12a>
    e8852ac2:	e88f40ef          	jal	ra,e884714a <CFRelease>
	gKeychainItems = items;
    e8852ac6:	01243023          	sd	s2,0(s0)
    e8852aca:	4401                	li	s0,0
	CFReleaseNullSafe( data );
    e8852acc:	8526                	mv	a0,s1
    e8852ace:	e7cf40ef          	jal	ra,e884714a <CFRelease>
	if( file ) fclose( file );
    e8852ad2:	854e                	mv	a0,s3
    e8852ad4:	7a0290ef          	jal	ra,e887c274 <eLIBs_fclose>
}
    e8852ad8:	6305                	lui	t1,0x1
    e8852ada:	911a                	add	sp,sp,t1
    e8852adc:	70e2                	ld	ra,56(sp)
    e8852ade:	8522                	mv	a0,s0
    e8852ae0:	7a42                	ld	s4,48(sp)
    e8852ae2:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8852ae6:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8852aea:	6121                	addi	sp,sp,64
    e8852aec:	8082                	ret
	require_action( items, exit, err = kUnknownErr );
    e8852aee:	7479                	lui	s0,0xffffe
    e8852af0:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8852af4:	bfe1                	j	e8852acc <_ReadKeychain+0x130>
	CFReleaseNullSafe( items );
    e8852af6:	854a                	mv	a0,s2
	require_action( CFIsType( items, CFArray ), exit, err = kTypeErr );
    e8852af8:	7479                	lui	s0,0xffffe
	CFReleaseNullSafe( items );
    e8852afa:	e50f40ef          	jal	ra,e884714a <CFRelease>
	require_action( CFIsType( items, CFArray ), exit, err = kTypeErr );
    e8852afe:	59c40413          	addi	s0,s0,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
    e8852b02:	b7e9                	j	e8852acc <_ReadKeychain+0x130>
	require_action( data, exit, err = kNoMemoryErr );
    e8852b04:	7479                	lui	s0,0xffffe
    e8852b06:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8852b0a:	b7e1                	j	e8852ad2 <_ReadKeychain+0x136>

00000000e8852b0c <_WriteKeychain>:
//
//	gKeychainLock must be held.
//===========================================================================================================================

static OSStatus	_WriteKeychain( void )
{
    e8852b0c:	7139                	addi	sp,sp,-64
	CFDataRef		data = NULL;
	char			path[ PATH_MAX ];
	size_t			len, n;
	FILE *			file = NULL;
	
	require_action( gKeychainItems, exit, err = kNotPreparedErr );
    e8852b0e:	00091797          	auipc	a5,0x91
    e8852b12:	1c278793          	addi	a5,a5,450 # e88e3cd0 <gKeychainItems>
{
    e8852b16:	fc06                	sd	ra,56(sp)
    e8852b18:	ec22                	sd	s0,24(sp)
    e8852b1a:	f026                	sd	s1,32(sp)
    e8852b1c:	f44a                	sd	s2,40(sp)
    e8852b1e:	f84e                	sd	s3,48(sp)
	require_action( gKeychainItems, exit, err = kNotPreparedErr );
    e8852b20:	638c                	ld	a1,0(a5)
{
    e8852b22:	737d                	lui	t1,0xfffff
    e8852b24:	911a                	add	sp,sp,t1
	require_action( gKeychainItems, exit, err = kNotPreparedErr );
    e8852b26:	10058363          	beqz	a1,e8852c2c <_WriteKeychain+0x120>
	data = CFPropertyListCreateData( NULL, gKeychainItems, kCFPropertyListBinaryFormat_v1_0, 0, NULL );
    e8852b2a:	4701                	li	a4,0
    e8852b2c:	4681                	li	a3,0
    e8852b2e:	0c800613          	li	a2,200
    e8852b32:	4501                	li	a0,0
    e8852b34:	b87f40ef          	jal	ra,e88476ba <CFPropertyListCreateData>
    e8852b38:	84aa                	mv	s1,a0
	require_action( data, exit, err = kUnknownErr );
    e8852b3a:	0e050d63          	beqz	a0,e8852c34 <_WriteKeychain+0x128>
	
	NormalizePath( kKeychainParentPath, kSizeCString, path, sizeof( path ), 0 );
    e8852b3e:	0814                	addi	a3,sp,16
    e8852b40:	6705                	lui	a4,0x1
    e8852b42:	9736                	add	a4,a4,a3
    e8852b44:	77fd                	lui	a5,0xfffff
    e8852b46:	97ba                	add	a5,a5,a4
    e8852b48:	863e                	mv	a2,a5
    e8852b4a:	4701                	li	a4,0
    e8852b4c:	6685                	lui	a3,0x1
    e8852b4e:	55fd                	li	a1,-1
    e8852b50:	0006f517          	auipc	a0,0x6f
    e8852b54:	82050513          	addi	a0,a0,-2016 # e88c1370 <__PRETTY_FUNCTION__.9824+0x28>
    e8852b58:	e43e                	sd	a5,8(sp)
    e8852b5a:	012020ef          	jal	ra,e8854b6c <NormalizePath>
	mkpath( path, S_IRWXU, S_IRWXU );
    e8852b5e:	6522                	ld	a0,8(sp)
    e8852b60:	1c000613          	li	a2,448
    e8852b64:	1c000593          	li	a1,448
    e8852b68:	000020ef          	jal	ra,e8854b68 <mkpath>
	len = strlen( path );
    e8852b6c:	6522                	ld	a0,8(sp)
    e8852b6e:	7aa290ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8852b72:	2501                	sext.w	a0,a0
    e8852b74:	7c05378b          	extu	a5,a0,31,0
	if( ( len > 0 ) && ( path[ len - 1 ] != '\\' ) ) path[ len++ ] = '\\';
    e8852b78:	cf89                	beqz	a5,e8852b92 <_WriteKeychain+0x86>
    e8852b7a:	6722                	ld	a4,8(sp)
    e8852b7c:	973e                	add	a4,a4,a5
    e8852b7e:	fff74683          	lbu	a3,-1(a4) # fff <memcmp-0xe87ff001>
    e8852b82:	05c00713          	li	a4,92
    e8852b86:	00e68663          	beq	a3,a4,e8852b92 <_WriteKeychain+0x86>
    e8852b8a:	66a2                	ld	a3,8(sp)
    e8852b8c:	0785                	addi	a5,a5,1
    e8852b8e:	10a6d70b          	surb	a4,a3,a0,0
	snprintf( &path[ len ], sizeof( path ) - len, "%s", kKeychainFilename );
    e8852b92:	0818                	addi	a4,sp,16
    e8852b94:	6585                	lui	a1,0x1
    e8852b96:	8d9d                	sub	a1,a1,a5
    e8852b98:	0006e697          	auipc	a3,0x6e
    e8852b9c:	7e868693          	addi	a3,a3,2024 # e88c1380 <__PRETTY_FUNCTION__.9824+0x38>
    e8852ba0:	00058617          	auipc	a2,0x58
    e8852ba4:	80060613          	addi	a2,a2,-2048 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e8852ba8:	00f70533          	add	a0,a4,a5
    e8852bac:	6a4290ef          	jal	ra,e887c250 <eLIBs_snprintf>
	
	file = fopen( path, "wb" );
    e8852bb0:	0006c597          	auipc	a1,0x6c
    e8852bb4:	01858593          	addi	a1,a1,24 # e88bebc8 <__PRETTY_FUNCTION__.9367+0x158>
    e8852bb8:	0808                	addi	a0,sp,16
    e8852bba:	6b6290ef          	jal	ra,e887c270 <eLIBs_fopen>
    e8852bbe:	892a                	mv	s2,a0
	err = map_global_value_errno( file, file );
    e8852bc0:	e51d                	bnez	a0,e8852bee <_WriteKeychain+0xe2>
    e8852bc2:	00092797          	auipc	a5,0x92
    e8852bc6:	a6678793          	addi	a5,a5,-1434 # e88e4628 <lwip_errno>
    e8852bca:	4380                	lw	s0,0(a5)
    e8852bcc:	e401                	bnez	s0,e8852bd4 <_WriteKeychain+0xc8>
    e8852bce:	7479                	lui	s0,0xffffe
    e8852bd0:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	err = map_global_value_errno( n == len, file );
	require_noerr( err, exit );
	
exit:
	if( file ) fclose( file );
	CFReleaseNullSafe( data );
    e8852bd4:	8526                	mv	a0,s1
    e8852bd6:	d74f40ef          	jal	ra,e884714a <CFRelease>
	return( err );
}
    e8852bda:	6305                	lui	t1,0x1
    e8852bdc:	911a                	add	sp,sp,t1
    e8852bde:	70e2                	ld	ra,56(sp)
    e8852be0:	8522                	mv	a0,s0
    e8852be2:	7482                	ld	s1,32(sp)
    e8852be4:	6462                	ld	s0,24(sp)
    e8852be6:	7922                	ld	s2,40(sp)
    e8852be8:	79c2                	ld	s3,48(sp)
    e8852bea:	6121                	addi	sp,sp,64
    e8852bec:	8082                	ret
	len = (size_t) CFDataGetLength( data );
    e8852bee:	8526                	mv	a0,s1
    e8852bf0:	ee6f40ef          	jal	ra,e88472d6 <CFDataGetLength>
    e8852bf4:	89aa                	mv	s3,a0
	n = fwrite( CFDataGetBytePtr( data ), 1, len, file );
    e8852bf6:	8526                	mv	a0,s1
    e8852bf8:	ef4f40ef          	jal	ra,e88472ec <CFDataGetBytePtr>
	err = map_global_value_errno( n == len, file );
    e8852bfc:	4401                	li	s0,0
	n = fwrite( CFDataGetBytePtr( data ), 1, len, file );
    e8852bfe:	86ca                	mv	a3,s2
    e8852c00:	0009861b          	sext.w	a2,s3
    e8852c04:	4585                	li	a1,1
    e8852c06:	676290ef          	jal	ra,e887c27c <eLIBs_fwrite>
    e8852c0a:	7c05350b          	extu	a0,a0,31,0
	err = map_global_value_errno( n == len, file );
    e8852c0e:	00a98b63          	beq	s3,a0,e8852c24 <_WriteKeychain+0x118>
    e8852c12:	00092797          	auipc	a5,0x92
    e8852c16:	a1678793          	addi	a5,a5,-1514 # e88e4628 <lwip_errno>
    e8852c1a:	4380                	lw	s0,0(a5)
    e8852c1c:	e401                	bnez	s0,e8852c24 <_WriteKeychain+0x118>
    e8852c1e:	7479                	lui	s0,0xffffe
    e8852c20:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( file ) fclose( file );
    e8852c24:	854a                	mv	a0,s2
    e8852c26:	64e290ef          	jal	ra,e887c274 <eLIBs_fclose>
    e8852c2a:	b76d                	j	e8852bd4 <_WriteKeychain+0xc8>
	require_action( gKeychainItems, exit, err = kNotPreparedErr );
    e8852c2c:	7479                	lui	s0,0xffffe
    e8852c2e:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e8852c32:	b765                	j	e8852bda <_WriteKeychain+0xce>
	require_action( data, exit, err = kUnknownErr );
    e8852c34:	7479                	lui	s0,0xffffe
    e8852c36:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8852c3a:	b745                	j	e8852bda <_WriteKeychain+0xce>

00000000e8852c3c <_SecItemCopyMatchingApplier>:
	if( !ctx->found )								return;
    e8852c3c:	00864783          	lbu	a5,8(a2)
    e8852c40:	c3d5                	beqz	a5,e8852ce4 <_SecItemCopyMatchingApplier+0xa8>
{
    e8852c42:	1101                	addi	sp,sp,-32
    e8852c44:	e84a                	sd	s2,16(sp)
    e8852c46:	892e                	mv	s2,a1
	if( CFEqual( inKey, kSecAttrSynchronizable ) )	return;
    e8852c48:	0004a597          	auipc	a1,0x4a
    e8852c4c:	66058593          	addi	a1,a1,1632 # e889d2a8 <icmp6_param_problem+0x23a>
{
    e8852c50:	f891540b          	sdd	s0,s1,(sp),0,4
    e8852c54:	ec06                	sd	ra,24(sp)
    e8852c56:	842a                	mv	s0,a0
    e8852c58:	84b2                	mv	s1,a2
	if( CFEqual( inKey, kSecAttrSynchronizable ) )	return;
    e8852c5a:	cf4f40ef          	jal	ra,e884714e <CFEqual>
    e8852c5e:	e925                	bnez	a0,e8852cce <_SecItemCopyMatchingApplier+0x92>
	if( CFEqual( inKey, kSecMatchLimit ) )			return;
    e8852c60:	0004a597          	auipc	a1,0x4a
    e8852c64:	66858593          	addi	a1,a1,1640 # e889d2c8 <icmp6_param_problem+0x25a>
    e8852c68:	8522                	mv	a0,s0
    e8852c6a:	ce4f40ef          	jal	ra,e884714e <CFEqual>
    e8852c6e:	e125                	bnez	a0,e8852cce <_SecItemCopyMatchingApplier+0x92>
	if( CFEqual( inKey, kSecMatchLimitAll ) )		return;
    e8852c70:	0004a597          	auipc	a1,0x4a
    e8852c74:	67058593          	addi	a1,a1,1648 # e889d2e0 <icmp6_param_problem+0x272>
    e8852c78:	8522                	mv	a0,s0
    e8852c7a:	cd4f40ef          	jal	ra,e884714e <CFEqual>
    e8852c7e:	e921                	bnez	a0,e8852cce <_SecItemCopyMatchingApplier+0x92>
	if( CFEqual( inKey, kSecReturnAttributes ) )	return;
    e8852c80:	0004a597          	auipc	a1,0x4a
    e8852c84:	68058593          	addi	a1,a1,1664 # e889d300 <icmp6_param_problem+0x292>
    e8852c88:	8522                	mv	a0,s0
    e8852c8a:	cc4f40ef          	jal	ra,e884714e <CFEqual>
    e8852c8e:	e121                	bnez	a0,e8852cce <_SecItemCopyMatchingApplier+0x92>
	if( CFEqual( inKey, kSecReturnData ) )			return;
    e8852c90:	0004a597          	auipc	a1,0x4a
    e8852c94:	69058593          	addi	a1,a1,1680 # e889d320 <icmp6_param_problem+0x2b2>
    e8852c98:	8522                	mv	a0,s0
    e8852c9a:	cb4f40ef          	jal	ra,e884714e <CFEqual>
    e8852c9e:	e905                	bnez	a0,e8852cce <_SecItemCopyMatchingApplier+0x92>
	if( CFEqual( inKey, kSecReturnPersistentRef ) )	return;
    e8852ca0:	0004a597          	auipc	a1,0x4a
    e8852ca4:	69858593          	addi	a1,a1,1688 # e889d338 <icmp6_param_problem+0x2ca>
    e8852ca8:	8522                	mv	a0,s0
    e8852caa:	ca4f40ef          	jal	ra,e884714e <CFEqual>
    e8852cae:	e105                	bnez	a0,e8852cce <_SecItemCopyMatchingApplier+0x92>
	if( CFEqual( inKey, kSecReturnRef ) )			return;
    e8852cb0:	0004a597          	auipc	a1,0x4a
    e8852cb4:	6a858593          	addi	a1,a1,1704 # e889d358 <icmp6_param_problem+0x2ea>
    e8852cb8:	8522                	mv	a0,s0
    e8852cba:	c94f40ef          	jal	ra,e884714e <CFEqual>
    e8852cbe:	e901                	bnez	a0,e8852cce <_SecItemCopyMatchingApplier+0x92>
	value = CFDictionaryGetValue( ctx->dict, inKey );
    e8852cc0:	6088                	ld	a0,0(s1)
    e8852cc2:	85a2                	mv	a1,s0
    e8852cc4:	f7af40ef          	jal	ra,e884743e <CFDictionaryGetValue>
	if( !value || !CFEqual( value, inValue ) )
    e8852cc8:	e909                	bnez	a0,e8852cda <_SecItemCopyMatchingApplier+0x9e>
		ctx->found = false;
    e8852cca:	00048423          	sb	zero,8(s1)
}
    e8852cce:	60e2                	ld	ra,24(sp)
    e8852cd0:	f891440b          	ldd	s0,s1,(sp),0,4
    e8852cd4:	6942                	ld	s2,16(sp)
    e8852cd6:	6105                	addi	sp,sp,32
    e8852cd8:	8082                	ret
	if( !value || !CFEqual( value, inValue ) )
    e8852cda:	85ca                	mv	a1,s2
    e8852cdc:	c72f40ef          	jal	ra,e884714e <CFEqual>
    e8852ce0:	d56d                	beqz	a0,e8852cca <_SecItemCopyMatchingApplier+0x8e>
    e8852ce2:	b7f5                	j	e8852cce <_SecItemCopyMatchingApplier+0x92>
    e8852ce4:	8082                	ret

00000000e8852ce6 <SecItemAdd_compat>:
{
    e8852ce6:	7159                	addi	sp,sp,-112
    e8852ce8:	eca6                	sd	s1,88(sp)
    e8852cea:	84aa                	mv	s1,a0
	pthread_mutex_lock( &gKeychainLock );
    e8852cec:	00082517          	auipc	a0,0x82
    e8852cf0:	32450513          	addi	a0,a0,804 # e88d5010 <gKeychainLock>
{
    e8852cf4:	f0a2                	sd	s0,96(sp)
    e8852cf6:	e4ce                	sd	s3,72(sp)
    e8852cf8:	f486                	sd	ra,104(sp)
    e8852cfa:	e8ca                	sd	s2,80(sp)
    e8852cfc:	e0d2                	sd	s4,64(sp)
    e8852cfe:	fc56                	sd	s5,56(sp)
    e8852d00:	f85a                	sd	s6,48(sp)
    e8852d02:	f45e                	sd	s7,40(sp)
    e8852d04:	f062                	sd	s8,32(sp)
    e8852d06:	ec66                	sd	s9,24(sp)
    e8852d08:	e86a                	sd	s10,16(sp)
    e8852d0a:	e46e                	sd	s11,8(sp)
    e8852d0c:	89ae                	mv	s3,a1
	pthread_mutex_lock( &gKeychainLock );
    e8852d0e:	611280ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( !gKeychainItems )
    e8852d12:	00091417          	auipc	s0,0x91
    e8852d16:	fbe40413          	addi	s0,s0,-66 # e88e3cd0 <gKeychainItems>
    e8852d1a:	601c                	ld	a5,0(s0)
    e8852d1c:	e399                	bnez	a5,e8852d22 <SecItemAdd_compat+0x3c>
		_ReadKeychain();
    e8852d1e:	c7fff0ef          	jal	ra,e885299c <_ReadKeychain>
	account = CFDictionaryGetValue( inAttrs, kSecAttrAccount );
    e8852d22:	0004a597          	auipc	a1,0x4a
    e8852d26:	64e58593          	addi	a1,a1,1614 # e889d370 <icmp6_param_problem+0x302>
    e8852d2a:	8526                	mv	a0,s1
    e8852d2c:	f12f40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8852d30:	8a2a                	mv	s4,a0
	require_action_quiet( account, exit, err = kParamErr );
    e8852d32:	e915                	bnez	a0,e8852d66 <SecItemAdd_compat+0x80>
    e8852d34:	7479                	lui	s0,0xffffe
    e8852d36:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
	pthread_mutex_unlock( &gKeychainLock );
    e8852d3a:	00082517          	auipc	a0,0x82
    e8852d3e:	2d650513          	addi	a0,a0,726 # e88d5010 <gKeychainLock>
    e8852d42:	621280ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e8852d46:	64e6                	ld	s1,88(sp)
    e8852d48:	8522                	mv	a0,s0
    e8852d4a:	70a6                	ld	ra,104(sp)
    e8852d4c:	7406                	ld	s0,96(sp)
    e8852d4e:	6946                	ld	s2,80(sp)
    e8852d50:	69a6                	ld	s3,72(sp)
    e8852d52:	6a06                	ld	s4,64(sp)
    e8852d54:	7ae2                	ld	s5,56(sp)
    e8852d56:	7b42                	ld	s6,48(sp)
    e8852d58:	7ba2                	ld	s7,40(sp)
    e8852d5a:	7c02                	ld	s8,32(sp)
    e8852d5c:	6ce2                	ld	s9,24(sp)
    e8852d5e:	6d42                	ld	s10,16(sp)
    e8852d60:	6da2                	ld	s11,8(sp)
    e8852d62:	6165                	addi	sp,sp,112
    e8852d64:	8082                	ret
	service = CFDictionaryGetValue( inAttrs, kSecAttrService );
    e8852d66:	0004a597          	auipc	a1,0x4a
    e8852d6a:	62258593          	addi	a1,a1,1570 # e889d388 <icmp6_param_problem+0x31a>
    e8852d6e:	8526                	mv	a0,s1
    e8852d70:	ecef40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8852d74:	8aaa                	mv	s5,a0
	require_action_quiet( service, exit, err = kParamErr );
    e8852d76:	dd5d                	beqz	a0,e8852d34 <SecItemAdd_compat+0x4e>
	type = CFDictionaryGetValue( inAttrs, kSecAttrType );
    e8852d78:	0004a597          	auipc	a1,0x4a
    e8852d7c:	62858593          	addi	a1,a1,1576 # e889d3a0 <icmp6_param_problem+0x332>
    e8852d80:	8526                	mv	a0,s1
    e8852d82:	ebcf40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8852d86:	8b2a                	mv	s6,a0
	n = gKeychainItems ? CFArrayGetCount( gKeychainItems ) : 0;
    e8852d88:	6008                	ld	a0,0(s0)
    e8852d8a:	ed19                	bnez	a0,e8852da8 <SecItemAdd_compat+0xc2>
		gKeychainItems = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8852d8c:	0006c617          	auipc	a2,0x6c
    e8852d90:	9e460613          	addi	a2,a2,-1564 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e8852d94:	4581                	li	a1,0
    e8852d96:	4501                	li	a0,0
    e8852d98:	c2ef40ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e8852d9c:	e008                	sd	a0,0(s0)
		require_action( gKeychainItems, exit, err = kNoMemoryErr );
    e8852d9e:	e90d                	bnez	a0,e8852dd0 <SecItemAdd_compat+0xea>
    e8852da0:	7479                	lui	s0,0xffffe
    e8852da2:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8852da6:	bf51                	j	e8852d3a <SecItemAdd_compat+0x54>
	n = gKeychainItems ? CFArrayGetCount( gKeychainItems ) : 0;
    e8852da8:	c4af40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8852dac:	8baa                	mv	s7,a0
	for( i = 0; i < n; ++i )
    e8852dae:	4901                	li	s2,0
		account2 = CFDictionaryGetValue( item, kSecAttrAccount );
    e8852db0:	0004ac17          	auipc	s8,0x4a
    e8852db4:	5c0c0c13          	addi	s8,s8,1472 # e889d370 <icmp6_param_problem+0x302>
		service2 = CFDictionaryGetValue( item, kSecAttrService );
    e8852db8:	0004ac97          	auipc	s9,0x4a
    e8852dbc:	5d0c8c93          	addi	s9,s9,1488 # e889d388 <icmp6_param_problem+0x31a>
			type2 = CFDictionaryGetValue( item, kSecAttrType );
    e8852dc0:	0004ad17          	auipc	s10,0x4a
    e8852dc4:	5e0d0d13          	addi	s10,s10,1504 # e889d3a0 <icmp6_param_problem+0x332>
	for( i = 0; i < n; ++i )
    e8852dc8:	6008                	ld	a0,0(s0)
    e8852dca:	03794363          	blt	s2,s7,e8852df0 <SecItemAdd_compat+0x10a>
	if( !gKeychainItems )
    e8852dce:	dd5d                	beqz	a0,e8852d8c <SecItemAdd_compat+0xa6>
	CFArrayAppendValue( gKeychainItems, inAttrs );
    e8852dd0:	6008                	ld	a0,0(s0)
    e8852dd2:	85a6                	mv	a1,s1
    e8852dd4:	c9cf40ef          	jal	ra,e8847270 <CFArrayAppendValue>
	err = _WriteKeychain();
    e8852dd8:	d35ff0ef          	jal	ra,e8852b0c <_WriteKeychain>
    e8852ddc:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8852dde:	fd31                	bnez	a0,e8852d3a <SecItemAdd_compat+0x54>
	if( outResult )
    e8852de0:	f4098de3          	beqz	s3,e8852d3a <SecItemAdd_compat+0x54>
		CFRetain( inAttrs );
    e8852de4:	8526                	mv	a0,s1
    e8852de6:	b60f40ef          	jal	ra,e8847146 <CFRetain>
		*outResult = inAttrs;
    e8852dea:	0099b023          	sd	s1,0(s3)
    e8852dee:	b7b1                	j	e8852d3a <SecItemAdd_compat+0x54>
		item = (CFDictionaryRef) CFArrayGetValueAtIndex( gKeychainItems, i );
    e8852df0:	85ca                	mv	a1,s2
    e8852df2:	c14f40ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
    e8852df6:	8daa                	mv	s11,a0
		account2 = CFDictionaryGetValue( item, kSecAttrAccount );
    e8852df8:	85e2                	mv	a1,s8
    e8852dfa:	e44f40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8852dfe:	85aa                	mv	a1,a0
		if( !account2 ) continue;
    e8852e00:	e119                	bnez	a0,e8852e06 <SecItemAdd_compat+0x120>
	for( i = 0; i < n; ++i )
    e8852e02:	2905                	addiw	s2,s2,1
    e8852e04:	b7d1                	j	e8852dc8 <SecItemAdd_compat+0xe2>
		if( !CFEqual( account, account2 ) ) continue;
    e8852e06:	8552                	mv	a0,s4
    e8852e08:	b46f40ef          	jal	ra,e884714e <CFEqual>
    e8852e0c:	d97d                	beqz	a0,e8852e02 <SecItemAdd_compat+0x11c>
		service2 = CFDictionaryGetValue( item, kSecAttrService );
    e8852e0e:	85e6                	mv	a1,s9
    e8852e10:	856e                	mv	a0,s11
    e8852e12:	e2cf40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8852e16:	85aa                	mv	a1,a0
		if( !service2 ) continue;
    e8852e18:	d56d                	beqz	a0,e8852e02 <SecItemAdd_compat+0x11c>
		if( !CFEqual( service, service2 ) ) continue;
    e8852e1a:	8556                	mv	a0,s5
    e8852e1c:	b32f40ef          	jal	ra,e884714e <CFEqual>
    e8852e20:	d16d                	beqz	a0,e8852e02 <SecItemAdd_compat+0x11c>
		if( type )
    e8852e22:	000b1663          	bnez	s6,e8852e2e <SecItemAdd_compat+0x148>
		err = errSecDuplicateItem;
    e8852e26:	7469                	lui	s0,0xffffa
    e8852e28:	d2d40413          	addi	s0,s0,-723 # ffffffffffff9d2d <__DRAM0_INF_BASE+0xffffffff00009d2d>
    e8852e2c:	b739                	j	e8852d3a <SecItemAdd_compat+0x54>
			type2 = CFDictionaryGetValue( item, kSecAttrType );
    e8852e2e:	85ea                	mv	a1,s10
    e8852e30:	856e                	mv	a0,s11
    e8852e32:	e0cf40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8852e36:	85aa                	mv	a1,a0
			if( !type2 ) continue;
    e8852e38:	d569                	beqz	a0,e8852e02 <SecItemAdd_compat+0x11c>
			if( !CFEqual( type, type2 ) ) continue;
    e8852e3a:	855a                	mv	a0,s6
    e8852e3c:	b12f40ef          	jal	ra,e884714e <CFEqual>
    e8852e40:	d169                	beqz	a0,e8852e02 <SecItemAdd_compat+0x11c>
    e8852e42:	b7d5                	j	e8852e26 <SecItemAdd_compat+0x140>

00000000e8852e44 <SecItemCopyMatching_compat>:
{
    e8852e44:	7159                	addi	sp,sp,-112
    e8852e46:	e8ca                	sd	s2,80(sp)
    e8852e48:	892a                	mv	s2,a0
	pthread_mutex_lock( &gKeychainLock );
    e8852e4a:	00082517          	auipc	a0,0x82
    e8852e4e:	1c650513          	addi	a0,a0,454 # e88d5010 <gKeychainLock>
{
    e8852e52:	eca6                	sd	s1,88(sp)
    e8852e54:	e0d2                	sd	s4,64(sp)
    e8852e56:	f486                	sd	ra,104(sp)
    e8852e58:	f0a2                	sd	s0,96(sp)
    e8852e5a:	e4ce                	sd	s3,72(sp)
    e8852e5c:	fc56                	sd	s5,56(sp)
    e8852e5e:	f85a                	sd	s6,48(sp)
    e8852e60:	f45e                	sd	s7,40(sp)
    e8852e62:	f062                	sd	s8,32(sp)
    e8852e64:	8a2e                	mv	s4,a1
	CFMutableArrayRef						results = NULL;
    e8852e66:	e402                	sd	zero,8(sp)
	pthread_mutex_lock( &gKeychainLock );
    e8852e68:	4b7280ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( !gKeychainItems )
    e8852e6c:	00091497          	auipc	s1,0x91
    e8852e70:	e6448493          	addi	s1,s1,-412 # e88e3cd0 <gKeychainItems>
    e8852e74:	609c                	ld	a5,0(s1)
    e8852e76:	e399                	bnez	a5,e8852e7c <SecItemCopyMatching_compat+0x38>
		_ReadKeychain();
    e8852e78:	b25ff0ef          	jal	ra,e885299c <_ReadKeychain>
	cfstr = CFDictionaryGetCFString( inQuery, kSecMatchLimit, &err );
    e8852e7c:	e18f40ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8852e80:	0005061b          	sext.w	a2,a0
    e8852e84:	0054                	addi	a3,sp,4
    e8852e86:	0004a597          	auipc	a1,0x4a
    e8852e8a:	44258593          	addi	a1,a1,1090 # e889d2c8 <icmp6_param_problem+0x25a>
    e8852e8e:	854a                	mv	a0,s2
    e8852e90:	81bf90ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
	matchAll = ( cfstr && CFEqual( cfstr, kSecMatchLimitAll ) );
    e8852e94:	e505                	bnez	a0,e8852ebc <SecItemCopyMatching_compat+0x78>
	if( !matchAll && CFDictionaryGetBoolean( inQuery, kSecMatchLimitAll, NULL ) )
    e8852e96:	4601                	li	a2,0
    e8852e98:	0004a597          	auipc	a1,0x4a
    e8852e9c:	44858593          	addi	a1,a1,1096 # e889d2e0 <icmp6_param_problem+0x272>
    e8852ea0:	854a                	mv	a0,s2
    e8852ea2:	fcef90ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
		matchAll = true;
    e8852ea6:	00a03ab3          	snez	s5,a0
	n = gKeychainItems ? CFArrayGetCount( gKeychainItems ) : 0;
    e8852eaa:	6088                	ld	a0,0(s1)
    e8852eac:	e10d                	bnez	a0,e8852ece <SecItemCopyMatching_compat+0x8a>
	require_action_quiet( results, exit, err = errSecItemNotFound );
    e8852eae:	67a2                	ld	a5,8(sp)
    e8852eb0:	14079063          	bnez	a5,e8852ff0 <SecItemCopyMatching_compat+0x1ac>
    e8852eb4:	77e9                	lui	a5,0xffffa
    e8852eb6:	d2c7879b          	addiw	a5,a5,-724
    e8852eba:	a0d9                	j	e8852f80 <SecItemCopyMatching_compat+0x13c>
	matchAll = ( cfstr && CFEqual( cfstr, kSecMatchLimitAll ) );
    e8852ebc:	0004a597          	auipc	a1,0x4a
    e8852ec0:	42458593          	addi	a1,a1,1060 # e889d2e0 <icmp6_param_problem+0x272>
    e8852ec4:	a8af40ef          	jal	ra,e884714e <CFEqual>
	if( !matchAll && CFDictionaryGetBoolean( inQuery, kSecMatchLimitAll, NULL ) )
    e8852ec8:	d579                	beqz	a0,e8852e96 <SecItemCopyMatching_compat+0x52>
    e8852eca:	4a85                	li	s5,1
    e8852ecc:	bff9                	j	e8852eaa <SecItemCopyMatching_compat+0x66>
	n = gKeychainItems ? CFArrayGetCount( gKeychainItems ) : 0;
    e8852ece:	b24f40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8852ed2:	8b2a                	mv	s6,a0
	for( i = 0; i < n; ++i )
    e8852ed4:	4981                	li	s3,0
		ctx.found = true;
    e8852ed6:	4b85                	li	s7,1
		CFDictionaryApplyFunction( inQuery, _SecItemCopyMatchingApplier, &ctx );
    e8852ed8:	00000c17          	auipc	s8,0x0
    e8852edc:	d64c0c13          	addi	s8,s8,-668 # e8852c3c <_SecItemCopyMatchingApplier>
	for( i = 0; i < n; ++i )
    e8852ee0:	fd69d7e3          	bge	s3,s6,e8852eae <SecItemCopyMatching_compat+0x6a>
		item = (CFDictionaryRef) CFArrayGetValueAtIndex( gKeychainItems, i );
    e8852ee4:	6088                	ld	a0,0(s1)
    e8852ee6:	85ce                	mv	a1,s3
    e8852ee8:	b1ef40ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
		ctx.dict  = item;
    e8852eec:	e82a                	sd	a0,16(sp)
		item = (CFDictionaryRef) CFArrayGetValueAtIndex( gKeychainItems, i );
    e8852eee:	842a                	mv	s0,a0
		CFDictionaryApplyFunction( inQuery, _SecItemCopyMatchingApplier, &ctx );
    e8852ef0:	0810                	addi	a2,sp,16
    e8852ef2:	85e2                	mv	a1,s8
    e8852ef4:	854a                	mv	a0,s2
		ctx.found = true;
    e8852ef6:	01710c23          	sb	s7,24(sp)
		CFDictionaryApplyFunction( inQuery, _SecItemCopyMatchingApplier, &ctx );
    e8852efa:	d6cf40ef          	jal	ra,e8847466 <CFDictionaryApplyFunction>
		if( !ctx.found ) continue;
    e8852efe:	01814783          	lbu	a5,24(sp)
    e8852f02:	e399                	bnez	a5,e8852f08 <SecItemCopyMatching_compat+0xc4>
	for( i = 0; i < n; ++i )
    e8852f04:	2985                	addiw	s3,s3,1
    e8852f06:	bfe9                	j	e8852ee0 <SecItemCopyMatching_compat+0x9c>
		if( !matchAll )
    e8852f08:	0a0a9763          	bnez	s5,e8852fb6 <SecItemCopyMatching_compat+0x172>
			returnAttrs			= CFDictionaryGetBoolean( inQuery, kSecReturnAttributes, NULL );
    e8852f0c:	4601                	li	a2,0
    e8852f0e:	0004a597          	auipc	a1,0x4a
    e8852f12:	3f258593          	addi	a1,a1,1010 # e889d300 <icmp6_param_problem+0x292>
    e8852f16:	854a                	mv	a0,s2
    e8852f18:	f58f90ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8852f1c:	84aa                	mv	s1,a0
			returnData			= CFDictionaryGetBoolean( inQuery, kSecReturnData, NULL );
    e8852f1e:	4601                	li	a2,0
    e8852f20:	0004a597          	auipc	a1,0x4a
    e8852f24:	40058593          	addi	a1,a1,1024 # e889d320 <icmp6_param_problem+0x2b2>
    e8852f28:	854a                	mv	a0,s2
    e8852f2a:	f46f90ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8852f2e:	8aaa                	mv	s5,a0
			returnPersistentRef	= CFDictionaryGetBoolean( inQuery, kSecReturnPersistentRef, NULL );
    e8852f30:	4601                	li	a2,0
    e8852f32:	0004a597          	auipc	a1,0x4a
    e8852f36:	40658593          	addi	a1,a1,1030 # e889d338 <icmp6_param_problem+0x2ca>
    e8852f3a:	854a                	mv	a0,s2
    e8852f3c:	f34f90ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8852f40:	89aa                	mv	s3,a0
			returnRef			= CFDictionaryGetBoolean( inQuery, kSecReturnRef, NULL );
    e8852f42:	4601                	li	a2,0
    e8852f44:	0004a597          	auipc	a1,0x4a
    e8852f48:	41458593          	addi	a1,a1,1044 # e889d358 <icmp6_param_problem+0x2ea>
    e8852f4c:	854a                	mv	a0,s2
    e8852f4e:	f22f90ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
			if( returnData && !returnAttrs && !returnPersistentRef && !returnRef )
    e8852f52:	020a8963          	beqz	s5,e8852f84 <SecItemCopyMatching_compat+0x140>
    e8852f56:	0134e4b3          	or	s1,s1,s3
    e8852f5a:	8cc9                	or	s1,s1,a0
    e8852f5c:	ec85                	bnez	s1,e8852f94 <SecItemCopyMatching_compat+0x150>
				obj = CFDictionaryGetCFData( item, kSecValueData, NULL );
    e8852f5e:	b34f40ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e8852f62:	0005061b          	sext.w	a2,a0
    e8852f66:	4681                	li	a3,0
    e8852f68:	0004a597          	auipc	a1,0x4a
    e8852f6c:	45058593          	addi	a1,a1,1104 # e889d3b8 <icmp6_param_problem+0x34a>
    e8852f70:	8522                	mv	a0,s0
    e8852f72:	f38f90ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8852f76:	842a                	mv	s0,a0
				require_action_quiet( obj, exit, err = kNotFoundErr );
    e8852f78:	ed11                	bnez	a0,e8852f94 <SecItemCopyMatching_compat+0x150>
    e8852f7a:	77f9                	lui	a5,0xffffe
    e8852f7c:	5b97879b          	addiw	a5,a5,1465
	require_action_quiet( results, exit, err = errSecItemNotFound );
    e8852f80:	c23e                	sw	a5,4(sp)
    e8852f82:	a081                	j	e8852fc2 <SecItemCopyMatching_compat+0x17e>
			else if( returnPersistentRef && !returnAttrs && !returnData && !returnRef )
    e8852f84:	00098f63          	beqz	s3,e8852fa2 <SecItemCopyMatching_compat+0x15e>
    e8852f88:	8cc9                	or	s1,s1,a0
				obj = CFDictionaryGetValue( item, kSecReturnPersistentRef );
    e8852f8a:	0004a597          	auipc	a1,0x4a
    e8852f8e:	3ae58593          	addi	a1,a1,942 # e889d338 <icmp6_param_problem+0x2ca>
			else if( returnPersistentRef && !returnAttrs && !returnData && !returnRef )
    e8852f92:	cc91                	beqz	s1,e8852fae <SecItemCopyMatching_compat+0x16a>
			CFRetain( obj );
    e8852f94:	8522                	mv	a0,s0
    e8852f96:	9b0f40ef          	jal	ra,e8847146 <CFRetain>
			*outResult = obj;
    e8852f9a:	008a3023          	sd	s0,0(s4) # 4000 <memcmp-0xe87fc000>
	err = kNoErr;
    e8852f9e:	c202                	sw	zero,4(sp)
    e8852fa0:	a00d                	j	e8852fc2 <SecItemCopyMatching_compat+0x17e>
			else if( returnRef && !returnAttrs && !returnData && !returnPersistentRef )
    e8852fa2:	d96d                	beqz	a0,e8852f94 <SecItemCopyMatching_compat+0x150>
    e8852fa4:	f8e5                	bnez	s1,e8852f94 <SecItemCopyMatching_compat+0x150>
				obj = CFDictionaryGetValue( item, kSecReturnRef );
    e8852fa6:	0004a597          	auipc	a1,0x4a
    e8852faa:	3b258593          	addi	a1,a1,946 # e889d358 <icmp6_param_problem+0x2ea>
    e8852fae:	8522                	mv	a0,s0
    e8852fb0:	c8ef40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8852fb4:	b7c9                	j	e8852f76 <SecItemCopyMatching_compat+0x132>
		err = CFArrayEnsureCreatedAndAppend( &results, item );
    e8852fb6:	85a2                	mv	a1,s0
    e8852fb8:	0028                	addi	a0,sp,8
    e8852fba:	83cf90ef          	jal	ra,e884bff6 <CFArrayEnsureCreatedAndAppend>
    e8852fbe:	c22a                	sw	a0,4(sp)
		require_noerr( err, exit );
    e8852fc0:	d131                	beqz	a0,e8852f04 <SecItemCopyMatching_compat+0xc0>
	CFReleaseNullSafe( results );
    e8852fc2:	6522                	ld	a0,8(sp)
    e8852fc4:	c119                	beqz	a0,e8852fca <SecItemCopyMatching_compat+0x186>
    e8852fc6:	984f40ef          	jal	ra,e884714a <CFRelease>
	pthread_mutex_unlock( &gKeychainLock );
    e8852fca:	00082517          	auipc	a0,0x82
    e8852fce:	04650513          	addi	a0,a0,70 # e88d5010 <gKeychainLock>
    e8852fd2:	391280ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e8852fd6:	7406                	ld	s0,96(sp)
    e8852fd8:	70a6                	ld	ra,104(sp)
    e8852fda:	4512                	lw	a0,4(sp)
    e8852fdc:	64e6                	ld	s1,88(sp)
    e8852fde:	6946                	ld	s2,80(sp)
    e8852fe0:	69a6                	ld	s3,72(sp)
    e8852fe2:	6a06                	ld	s4,64(sp)
    e8852fe4:	7ae2                	ld	s5,56(sp)
    e8852fe6:	7b42                	ld	s6,48(sp)
    e8852fe8:	7ba2                	ld	s7,40(sp)
    e8852fea:	7c02                	ld	s8,32(sp)
    e8852fec:	6165                	addi	sp,sp,112
    e8852fee:	8082                	ret
	*outResult = results;
    e8852ff0:	00fa3023          	sd	a5,0(s4)
	results = NULL;
    e8852ff4:	e402                	sd	zero,8(sp)
    e8852ff6:	b765                	j	e8852f9e <SecItemCopyMatching_compat+0x15a>

00000000e8852ff8 <SecItemDelete_compat>:
{
    e8852ff8:	7119                	addi	sp,sp,-128
    e8852ffa:	f8a2                	sd	s0,112(sp)
    e8852ffc:	842a                	mv	s0,a0
	pthread_mutex_lock( &gKeychainLock );
    e8852ffe:	00082517          	auipc	a0,0x82
    e8853002:	01250513          	addi	a0,a0,18 # e88d5010 <gKeychainLock>
{
    e8853006:	f4a6                	sd	s1,104(sp)
    e8853008:	fc86                	sd	ra,120(sp)
    e885300a:	f0ca                	sd	s2,96(sp)
    e885300c:	ecce                	sd	s3,88(sp)
    e885300e:	e8d2                	sd	s4,80(sp)
    e8853010:	e4d6                	sd	s5,72(sp)
    e8853012:	e0da                	sd	s6,64(sp)
    e8853014:	fc5e                	sd	s7,56(sp)
    e8853016:	f862                	sd	s8,48(sp)
    e8853018:	f466                	sd	s9,40(sp)
    e885301a:	f06a                	sd	s10,32(sp)
    e885301c:	ec6e                	sd	s11,24(sp)
	pthread_mutex_lock( &gKeychainLock );
    e885301e:	301280ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( !gKeychainItems )
    e8853022:	00091497          	auipc	s1,0x91
    e8853026:	cae48493          	addi	s1,s1,-850 # e88e3cd0 <gKeychainItems>
    e885302a:	609c                	ld	a5,0(s1)
    e885302c:	e399                	bnez	a5,e8853032 <SecItemDelete_compat+0x3a>
		_ReadKeychain();
    e885302e:	96fff0ef          	jal	ra,e885299c <_ReadKeychain>
	account	= CFDictionaryGetValue( inQuery, kSecAttrAccount );
    e8853032:	0004a597          	auipc	a1,0x4a
    e8853036:	33e58593          	addi	a1,a1,830 # e889d370 <icmp6_param_problem+0x302>
    e885303a:	8522                	mv	a0,s0
    e885303c:	c02f40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8853040:	8aaa                	mv	s5,a0
	service	= CFDictionaryGetValue( inQuery, kSecAttrService );
    e8853042:	0004a597          	auipc	a1,0x4a
    e8853046:	34658593          	addi	a1,a1,838 # e889d388 <icmp6_param_problem+0x31a>
    e885304a:	8522                	mv	a0,s0
    e885304c:	bf2f40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8853050:	8b2a                	mv	s6,a0
	type	= CFDictionaryGetValue( inQuery, kSecAttrType );
    e8853052:	0004a597          	auipc	a1,0x4a
    e8853056:	34e58593          	addi	a1,a1,846 # e889d3a0 <icmp6_param_problem+0x332>
    e885305a:	8522                	mv	a0,s0
    e885305c:	be2f40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8853060:	8baa                	mv	s7,a0
	cfstr = CFDictionaryGetCFString( inQuery, kSecMatchLimit, &err );
    e8853062:	c32f40ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8853066:	0005061b          	sext.w	a2,a0
    e885306a:	0074                	addi	a3,sp,12
    e885306c:	0004a597          	auipc	a1,0x4a
    e8853070:	25c58593          	addi	a1,a1,604 # e889d2c8 <icmp6_param_problem+0x25a>
    e8853074:	8522                	mv	a0,s0
    e8853076:	e34f90ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
	matchAll = ( cfstr && CFEqual( cfstr, kSecMatchLimitAll ) );
    e885307a:	e121                	bnez	a0,e88530ba <SecItemDelete_compat+0xc2>
	if( !matchAll && CFDictionaryGetBoolean( inQuery, kSecMatchLimitAll, NULL ) )
    e885307c:	4601                	li	a2,0
    e885307e:	0004a597          	auipc	a1,0x4a
    e8853082:	26258593          	addi	a1,a1,610 # e889d2e0 <icmp6_param_problem+0x272>
    e8853086:	8522                	mv	a0,s0
    e8853088:	de8f90ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
		matchAll = true;
    e885308c:	00a039b3          	snez	s3,a0
	n = gKeychainItems ? CFArrayGetCount( gKeychainItems ) : 0;
    e8853090:	6088                	ld	a0,0(s1)
    e8853092:	4901                	li	s2,0
    e8853094:	c501                	beqz	a0,e885309c <SecItemDelete_compat+0xa4>
    e8853096:	95cf40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e885309a:	892a                	mv	s2,a0
    e885309c:	4a01                	li	s4,0
    e885309e:	4401                	li	s0,0
			account2 = CFDictionaryGetValue( item, kSecAttrAccount );
    e88530a0:	0004ac17          	auipc	s8,0x4a
    e88530a4:	2d0c0c13          	addi	s8,s8,720 # e889d370 <icmp6_param_problem+0x302>
			service2 = CFDictionaryGetValue( item, kSecAttrService );
    e88530a8:	0004ac97          	auipc	s9,0x4a
    e88530ac:	2e0c8c93          	addi	s9,s9,736 # e889d388 <icmp6_param_problem+0x31a>
			type2 = CFDictionaryGetValue( item, kSecAttrType );
    e88530b0:	0004ad17          	auipc	s10,0x4a
    e88530b4:	2f0d0d13          	addi	s10,s10,752 # e889d3a0 <icmp6_param_problem+0x332>
    e88530b8:	a889                	j	e885310a <SecItemDelete_compat+0x112>
	matchAll = ( cfstr && CFEqual( cfstr, kSecMatchLimitAll ) );
    e88530ba:	0004a597          	auipc	a1,0x4a
    e88530be:	22658593          	addi	a1,a1,550 # e889d2e0 <icmp6_param_problem+0x272>
    e88530c2:	88cf40ef          	jal	ra,e884714e <CFEqual>
	if( !matchAll && CFDictionaryGetBoolean( inQuery, kSecMatchLimitAll, NULL ) )
    e88530c6:	d95d                	beqz	a0,e885307c <SecItemDelete_compat+0x84>
    e88530c8:	4985                	li	s3,1
    e88530ca:	b7d9                	j	e8853090 <SecItemDelete_compat+0x98>
		item = (CFDictionaryRef) CFArrayGetValueAtIndex( gKeychainItems, i );
    e88530cc:	6088                	ld	a0,0(s1)
    e88530ce:	85a2                	mv	a1,s0
    e88530d0:	936f40ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
    e88530d4:	8daa                	mv	s11,a0
		if( account )
    e88530d6:	020a9063          	bnez	s5,e88530f6 <SecItemDelete_compat+0xfe>
		if( service )
    e88530da:	060b1663          	bnez	s6,e8853146 <SecItemDelete_compat+0x14e>
		if( type )
    e88530de:	060b9f63          	bnez	s7,e885315c <SecItemDelete_compat+0x164>
		CFArrayRemoveValueAtIndex( gKeychainItems, i );
    e88530e2:	6088                	ld	a0,0(s1)
    e88530e4:	85a2                	mv	a1,s0
		--n;
    e88530e6:	397d                	addiw	s2,s2,-1
		CFArrayRemoveValueAtIndex( gKeychainItems, i );
    e88530e8:	98cf40ef          	jal	ra,e8847274 <CFArrayRemoveValueAtIndex>
		--i;
    e88530ec:	347d                	addiw	s0,s0,-1
		if( !matchAll ) break;
    e88530ee:	08098263          	beqz	s3,e8853172 <SecItemDelete_compat+0x17a>
		found = true;
    e88530f2:	8a4e                	mv	s4,s3
    e88530f4:	a811                	j	e8853108 <SecItemDelete_compat+0x110>
			account2 = CFDictionaryGetValue( item, kSecAttrAccount );
    e88530f6:	85e2                	mv	a1,s8
    e88530f8:	b46f40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e88530fc:	85aa                	mv	a1,a0
			if( !account2 ) continue;
    e88530fe:	c509                	beqz	a0,e8853108 <SecItemDelete_compat+0x110>
			if( !CFEqual( account, account2 ) ) continue;
    e8853100:	8556                	mv	a0,s5
    e8853102:	84cf40ef          	jal	ra,e884714e <CFEqual>
    e8853106:	f971                	bnez	a0,e88530da <SecItemDelete_compat+0xe2>
	for( i = 0; i < n; ++i )
    e8853108:	2405                	addiw	s0,s0,1
    e885310a:	fd2441e3          	blt	s0,s2,e88530cc <SecItemDelete_compat+0xd4>
	require_action_quiet( found, exit, err = errSecItemNotFound );
    e885310e:	060a1263          	bnez	s4,e8853172 <SecItemDelete_compat+0x17a>
    e8853112:	77e9                	lui	a5,0xffffa
    e8853114:	d2c7879b          	addiw	a5,a5,-724
    e8853118:	c63e                	sw	a5,12(sp)
	pthread_mutex_unlock( &gKeychainLock );
    e885311a:	00082517          	auipc	a0,0x82
    e885311e:	ef650513          	addi	a0,a0,-266 # e88d5010 <gKeychainLock>
    e8853122:	241280ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e8853126:	7446                	ld	s0,112(sp)
    e8853128:	70e6                	ld	ra,120(sp)
    e885312a:	4532                	lw	a0,12(sp)
    e885312c:	74a6                	ld	s1,104(sp)
    e885312e:	7906                	ld	s2,96(sp)
    e8853130:	69e6                	ld	s3,88(sp)
    e8853132:	6a46                	ld	s4,80(sp)
    e8853134:	6aa6                	ld	s5,72(sp)
    e8853136:	6b06                	ld	s6,64(sp)
    e8853138:	7be2                	ld	s7,56(sp)
    e885313a:	7c42                	ld	s8,48(sp)
    e885313c:	7ca2                	ld	s9,40(sp)
    e885313e:	7d02                	ld	s10,32(sp)
    e8853140:	6de2                	ld	s11,24(sp)
    e8853142:	6109                	addi	sp,sp,128
    e8853144:	8082                	ret
			service2 = CFDictionaryGetValue( item, kSecAttrService );
    e8853146:	85e6                	mv	a1,s9
    e8853148:	856e                	mv	a0,s11
    e885314a:	af4f40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e885314e:	85aa                	mv	a1,a0
			if( !service2 ) continue;
    e8853150:	dd45                	beqz	a0,e8853108 <SecItemDelete_compat+0x110>
			if( !CFEqual( service, service2 ) ) continue;
    e8853152:	855a                	mv	a0,s6
    e8853154:	ffbf30ef          	jal	ra,e884714e <CFEqual>
    e8853158:	f159                	bnez	a0,e88530de <SecItemDelete_compat+0xe6>
    e885315a:	b77d                	j	e8853108 <SecItemDelete_compat+0x110>
			type2 = CFDictionaryGetValue( item, kSecAttrType );
    e885315c:	85ea                	mv	a1,s10
    e885315e:	856e                	mv	a0,s11
    e8853160:	adef40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8853164:	85aa                	mv	a1,a0
			if( !type2 ) continue;
    e8853166:	d14d                	beqz	a0,e8853108 <SecItemDelete_compat+0x110>
			if( !CFEqual( type, type2 ) ) continue;
    e8853168:	855e                	mv	a0,s7
    e885316a:	fe5f30ef          	jal	ra,e884714e <CFEqual>
    e885316e:	f935                	bnez	a0,e88530e2 <SecItemDelete_compat+0xea>
    e8853170:	bf61                	j	e8853108 <SecItemDelete_compat+0x110>
	err = _WriteKeychain();
    e8853172:	99bff0ef          	jal	ra,e8852b0c <_WriteKeychain>
    e8853176:	c62a                	sw	a0,12(sp)
exit:
    e8853178:	b74d                	j	e885311a <SecItemDelete_compat+0x122>

00000000e885317a <KeychainAddFormattedVAList>:
//===========================================================================================================================
//	KeychainAddFormattedVAList
//===========================================================================================================================

OSStatus	KeychainAddFormattedVAList( CFTypeRef *outResult, const char *inAttributesFormat, va_list inArgs )
{
    e885317a:	7179                	addi	sp,sp,-48
    e885317c:	f026                	sd	s1,32(sp)
	OSStatus					err;
	CFMutableDictionaryRef		attributesDict;
	
	err = CFPropertyListCreateFormattedVAList( NULL, &attributesDict, inAttributesFormat, inArgs );
    e885317e:	86b2                	mv	a3,a2
{
    e8853180:	84aa                	mv	s1,a0
	err = CFPropertyListCreateFormattedVAList( NULL, &attributesDict, inAttributesFormat, inArgs );
    e8853182:	862e                	mv	a2,a1
    e8853184:	4501                	li	a0,0
    e8853186:	002c                	addi	a1,sp,8
{
    e8853188:	ec22                	sd	s0,24(sp)
    e885318a:	f406                	sd	ra,40(sp)
	err = CFPropertyListCreateFormattedVAList( NULL, &attributesDict, inAttributesFormat, inArgs );
    e885318c:	ceff90ef          	jal	ra,e884ce7a <CFPropertyListCreateFormattedVAList>
	require_noerr( err, exit );
    e8853190:	842a                	mv	s0,a0
    e8853192:	e909                	bnez	a0,e88531a4 <KeychainAddFormattedVAList+0x2a>
	
	err = SecItemAdd( attributesDict, outResult );
    e8853194:	6522                	ld	a0,8(sp)
    e8853196:	85a6                	mv	a1,s1
    e8853198:	b4fff0ef          	jal	ra,e8852ce6 <SecItemAdd_compat>
    e885319c:	842a                	mv	s0,a0
	CFRelease( attributesDict );
    e885319e:	6522                	ld	a0,8(sp)
    e88531a0:	fabf30ef          	jal	ra,e884714a <CFRelease>
	
exit:
	return( err );
}
    e88531a4:	8522                	mv	a0,s0
    e88531a6:	70a2                	ld	ra,40(sp)
    e88531a8:	6462                	ld	s0,24(sp)
    e88531aa:	7482                	ld	s1,32(sp)
    e88531ac:	6145                	addi	sp,sp,48
    e88531ae:	8082                	ret

00000000e88531b0 <KeychainAddFormatted>:
{
    e88531b0:	715d                	addi	sp,sp,-80
    e88531b2:	fcd1560b          	sdd	a2,a3,(sp),2,4
	va_start( args, inAttributesFormat );
    e88531b6:	1010                	addi	a2,sp,32
{
    e88531b8:	ec06                	sd	ra,24(sp)
    e88531ba:	fef1570b          	sdd	a4,a5,(sp),3,4
    e88531be:	e0c2                	sd	a6,64(sp)
    e88531c0:	e4c6                	sd	a7,72(sp)
	va_start( args, inAttributesFormat );
    e88531c2:	e432                	sd	a2,8(sp)
	err = KeychainAddFormattedVAList( outResult, inAttributesFormat, args );
    e88531c4:	fb7ff0ef          	jal	ra,e885317a <KeychainAddFormattedVAList>
}
    e88531c8:	60e2                	ld	ra,24(sp)
    e88531ca:	6161                	addi	sp,sp,80
    e88531cc:	8082                	ret

00000000e88531ce <KeychainCopyMatchingFormattedVAList>:
//===========================================================================================================================
//	KeychainCopyMatchingFormattedVAList
//===========================================================================================================================

CFTypeRef	KeychainCopyMatchingFormattedVAList( OSStatus *outErr, const char *inFormat, va_list inArgs )
{
    e88531ce:	7179                	addi	sp,sp,-48
    e88531d0:	f026                	sd	s1,32(sp)
	OSStatus					err;
	CFMutableDictionaryRef		query;
	
	result = NULL;
	
	err = CFPropertyListCreateFormattedVAList( NULL, &query, inFormat, inArgs );
    e88531d2:	86b2                	mv	a3,a2
{
    e88531d4:	84aa                	mv	s1,a0
	err = CFPropertyListCreateFormattedVAList( NULL, &query, inFormat, inArgs );
    e88531d6:	862e                	mv	a2,a1
    e88531d8:	4501                	li	a0,0
    e88531da:	002c                	addi	a1,sp,8
{
    e88531dc:	ec22                	sd	s0,24(sp)
    e88531de:	f406                	sd	ra,40(sp)
	result = NULL;
    e88531e0:	e002                	sd	zero,0(sp)
	err = CFPropertyListCreateFormattedVAList( NULL, &query, inFormat, inArgs );
    e88531e2:	c99f90ef          	jal	ra,e884ce7a <CFPropertyListCreateFormattedVAList>
	require_noerr( err, exit );
    e88531e6:	842a                	mv	s0,a0
    e88531e8:	e909                	bnez	a0,e88531fa <KeychainCopyMatchingFormattedVAList+0x2c>
	
	err = SecItemCopyMatching( query, &result );
    e88531ea:	6522                	ld	a0,8(sp)
    e88531ec:	858a                	mv	a1,sp
    e88531ee:	c57ff0ef          	jal	ra,e8852e44 <SecItemCopyMatching_compat>
    e88531f2:	842a                	mv	s0,a0
	CFRelease( query );
    e88531f4:	6522                	ld	a0,8(sp)
    e88531f6:	f55f30ef          	jal	ra,e884714a <CFRelease>
	
exit:
	if( outErr ) *outErr = err;
    e88531fa:	c091                	beqz	s1,e88531fe <KeychainCopyMatchingFormattedVAList+0x30>
    e88531fc:	c080                	sw	s0,0(s1)
	return( result );
}
    e88531fe:	70a2                	ld	ra,40(sp)
    e8853200:	6462                	ld	s0,24(sp)
    e8853202:	6502                	ld	a0,0(sp)
    e8853204:	7482                	ld	s1,32(sp)
    e8853206:	6145                	addi	sp,sp,48
    e8853208:	8082                	ret

00000000e885320a <KeychainCopyMatchingFormatted>:
{
    e885320a:	715d                	addi	sp,sp,-80
    e885320c:	fcd1560b          	sdd	a2,a3,(sp),2,4
	va_start( args, inFormat );
    e8853210:	1010                	addi	a2,sp,32
{
    e8853212:	ec06                	sd	ra,24(sp)
    e8853214:	fef1570b          	sdd	a4,a5,(sp),3,4
    e8853218:	e0c2                	sd	a6,64(sp)
    e885321a:	e4c6                	sd	a7,72(sp)
	va_start( args, inFormat );
    e885321c:	e432                	sd	a2,8(sp)
	result = KeychainCopyMatchingFormattedVAList( outErr, inFormat, args );
    e885321e:	fb1ff0ef          	jal	ra,e88531ce <KeychainCopyMatchingFormattedVAList>
}
    e8853222:	60e2                	ld	ra,24(sp)
    e8853224:	6161                	addi	sp,sp,80
    e8853226:	8082                	ret

00000000e8853228 <KeychainDeleteFormattedVAList>:
//===========================================================================================================================
//	KeychainDeleteFormattedVAList
//===========================================================================================================================

OSStatus	KeychainDeleteFormattedVAList( const char *inFormat, va_list inArgs )
{
    e8853228:	1101                	addi	sp,sp,-32
	OSStatus					err;
	CFMutableDictionaryRef		query;
	
	err = CFPropertyListCreateFormattedVAList( NULL, &query, inFormat, inArgs );
    e885322a:	86ae                	mv	a3,a1
    e885322c:	862a                	mv	a2,a0
    e885322e:	002c                	addi	a1,sp,8
    e8853230:	4501                	li	a0,0
{
    e8853232:	e822                	sd	s0,16(sp)
    e8853234:	ec06                	sd	ra,24(sp)
	err = CFPropertyListCreateFormattedVAList( NULL, &query, inFormat, inArgs );
    e8853236:	c45f90ef          	jal	ra,e884ce7a <CFPropertyListCreateFormattedVAList>
	require_noerr( err, exit );
    e885323a:	842a                	mv	s0,a0
    e885323c:	e901                	bnez	a0,e885324c <KeychainDeleteFormattedVAList+0x24>
	
	err = SecItemDelete( query );
    e885323e:	6522                	ld	a0,8(sp)
    e8853240:	db9ff0ef          	jal	ra,e8852ff8 <SecItemDelete_compat>
    e8853244:	842a                	mv	s0,a0
	CFRelease( query );
    e8853246:	6522                	ld	a0,8(sp)
    e8853248:	f03f30ef          	jal	ra,e884714a <CFRelease>
	
exit:
	return( err );
}
    e885324c:	8522                	mv	a0,s0
    e885324e:	60e2                	ld	ra,24(sp)
    e8853250:	6442                	ld	s0,16(sp)
    e8853252:	6105                	addi	sp,sp,32
    e8853254:	8082                	ret

00000000e8853256 <KeychainDeleteFormatted>:
{
    e8853256:	711d                	addi	sp,sp,-96
    e8853258:	f42e                	sd	a1,40(sp)
	va_start( args, inFormat );
    e885325a:	102c                	addi	a1,sp,40
{
    e885325c:	ec06                	sd	ra,24(sp)
    e885325e:	fed1560b          	sdd	a2,a3,(sp),3,4
    e8853262:	e0ba                	sd	a4,64(sp)
    e8853264:	e4be                	sd	a5,72(sp)
    e8853266:	e8c2                	sd	a6,80(sp)
    e8853268:	ecc6                	sd	a7,88(sp)
	va_start( args, inFormat );
    e885326a:	e42e                	sd	a1,8(sp)
	err = KeychainDeleteFormattedVAList( inFormat, args );
    e885326c:	fbdff0ef          	jal	ra,e8853228 <KeychainDeleteFormattedVAList>
}
    e8853270:	60e2                	ld	ra,24(sp)
    e8853272:	6125                	addi	sp,sp,96
    e8853274:	8082                	ret

00000000e8853276 <_LogPrintFWrite>:
	}
	return( (int) inLen );
}

static void	_LogPrintFWrite( LogPrintFContext *inContext, const char *inStr, size_t inLen )
{
    e8853276:	1101                	addi	sp,sp,-32
    e8853278:	f891540b          	sdd	s0,s1,(sp),0,4
    e885327c:	e84a                	sd	s2,16(sp)
    e885327e:	ec06                	sd	ra,24(sp)
	if( inContext->category->output1 )
    e8853280:	611c                	ld	a5,0(a0)
{
    e8853282:	84ae                	mv	s1,a1
    e8853284:	842a                	mv	s0,a0
	if( inContext->category->output1 )
    e8853286:	7f8c                	ld	a1,56(a5)
{
    e8853288:	8932                	mv	s2,a2
	if( inContext->category->output1 )
    e885328a:	c991                	beqz	a1,e885329e <_LogPrintFWrite+0x28>
	{
		#if( LOGUTILS_OSLOG_ENABLED )
		if( !( inContext->level & kLogLevelFlagSensitive ) || ( inContext->category->output1->type == kLogOutputType_OSLog ) )
		#else
		if( !( inContext->level & kLogLevelFlagSensitive ) )
    e885328c:	451c                	lw	a5,8(a0)
    e885328e:	02879713          	slli	a4,a5,0x28
    e8853292:	00074663          	bltz	a4,e885329e <_LogPrintFWrite+0x28>
		#endif
		{
			inContext->category->output1->writer( inContext, inContext->category->output1, inStr, inLen );
    e8853296:	6d9c                	ld	a5,24(a1)
    e8853298:	86b2                	mv	a3,a2
    e885329a:	8626                	mv	a2,s1
    e885329c:	9782                	jalr	a5
		}
	}
	if( inContext->category->output2 )
    e885329e:	601c                	ld	a5,0(s0)
    e88532a0:	63ac                	ld	a1,64(a5)
    e88532a2:	c18d                	beqz	a1,e88532c4 <_LogPrintFWrite+0x4e>
	{
		#if( LOGUTILS_OSLOG_ENABLED )
		if( !( inContext->level & kLogLevelFlagSensitive ) || ( inContext->category->output2->type == kLogOutputType_OSLog ) )
		#else
		if( !( inContext->level & kLogLevelFlagSensitive ) )
    e88532a4:	441c                	lw	a5,8(s0)
    e88532a6:	02879713          	slli	a4,a5,0x28
    e88532aa:	00074d63          	bltz	a4,e88532c4 <_LogPrintFWrite+0x4e>
		#endif
		{
			inContext->category->output2->writer( inContext, inContext->category->output2, inStr, inLen );
    e88532ae:	8626                	mv	a2,s1
    e88532b0:	8522                	mv	a0,s0
				fclose ( f );
			}
		#endif
	}
#endif
}
    e88532b2:	f891440b          	ldd	s0,s1,(sp),0,4
    e88532b6:	60e2                	ld	ra,24(sp)
			inContext->category->output2->writer( inContext, inContext->category->output2, inStr, inLen );
    e88532b8:	0185b303          	ld	t1,24(a1)
    e88532bc:	86ca                	mv	a3,s2
}
    e88532be:	6942                	ld	s2,16(sp)
    e88532c0:	6105                	addi	sp,sp,32
			inContext->category->output2->writer( inContext, inContext->category->output2, inStr, inLen );
    e88532c2:	8302                	jr	t1
}
    e88532c4:	60e2                	ld	ra,24(sp)
    e88532c6:	f891440b          	ldd	s0,s1,(sp),0,4
    e88532ca:	6942                	ld	s2,16(sp)
    e88532cc:	6105                	addi	sp,sp,32
    e88532ce:	8082                	ret

00000000e88532d0 <_LogOutputCallBack_Writer>:
//===========================================================================================================================
//	_LogOutputCallBack_Writer
//===========================================================================================================================

static void	_LogOutputCallBack_Writer( LogPrintFContext *inContext, LogOutput *inOutput, const char *inStr, size_t inLen )
{
    e88532d0:	87ae                	mv	a5,a1
	if( inOutput->config.callback.func ) inOutput->config.callback.func( inContext, inStr, inLen, inOutput->config.callback.arg );
    e88532d2:	0287b303          	ld	t1,40(a5) # ffffffffffffa028 <__DRAM0_INF_BASE+0xffffffff0000a028>
{
    e88532d6:	85b2                	mv	a1,a2
    e88532d8:	8636                	mv	a2,a3
	if( inOutput->config.callback.func ) inOutput->config.callback.func( inContext, inStr, inLen, inOutput->config.callback.arg );
    e88532da:	00030463          	beqz	t1,e88532e2 <_LogOutputCallBack_Writer+0x12>
    e88532de:	7b94                	ld	a3,48(a5)
    e88532e0:	8302                	jr	t1
}
    e88532e2:	8082                	ret

00000000e88532e4 <_LogOutputDelete>:
{
    e88532e4:	1141                	addi	sp,sp,-16
    e88532e6:	e022                	sd	s0,0(sp)
    e88532e8:	e406                	sd	ra,8(sp)
    e88532ea:	842a                	mv	s0,a0
	ForgetMem( &inOutput->configStr );
    e88532ec:	6908                	ld	a0,16(a0)
    e88532ee:	c509                	beqz	a0,e88532f8 <_LogOutputDelete+0x14>
    e88532f0:	010290ef          	jal	ra,e887c300 <eLIBs_free>
    e88532f4:	00043823          	sd	zero,16(s0)
	free( inOutput );
    e88532f8:	8522                	mv	a0,s0
}
    e88532fa:	6402                	ld	s0,0(sp)
    e88532fc:	60a2                	ld	ra,8(sp)
    e88532fe:	0141                	addi	sp,sp,16
	free( inOutput );
    e8853300:	0002906f          	j	e887c300 <eLIBs_free>

00000000e8853304 <_LogOutputDeleteUnused>:
{
    e8853304:	1141                	addi	sp,sp,-16
    e8853306:	e022                	sd	s0,0(sp)
    e8853308:	e406                	sd	ra,8(sp)
	next = &gLogOutputList;
    e885330a:	00091417          	auipc	s0,0x91
    e885330e:	9f640413          	addi	s0,s0,-1546 # e88e3d00 <gLogOutputList>
	while( ( curr = *next ) != NULL )
    e8853312:	6008                	ld	a0,0(s0)
    e8853314:	e509                	bnez	a0,e885331e <_LogOutputDeleteUnused+0x1a>
}
    e8853316:	60a2                	ld	ra,8(sp)
    e8853318:	6402                	ld	s0,0(sp)
    e885331a:	0141                	addi	sp,sp,16
    e885331c:	8082                	ret
		if( curr->refCount == 0 )
    e885331e:	451c                	lw	a5,8(a0)
    e8853320:	e791                	bnez	a5,e885332c <_LogOutputDeleteUnused+0x28>
    e8853322:	611c                	ld	a5,0(a0)
			*next = curr->next;
    e8853324:	e01c                	sd	a5,0(s0)
			_LogOutputDelete( curr );
    e8853326:	fbfff0ef          	jal	ra,e88532e4 <_LogOutputDelete>
			continue;
    e885332a:	b7e5                	j	e8853312 <_LogOutputDeleteUnused+0xe>
		next = &curr->next;
    e885332c:	842a                	mv	s0,a0
    e885332e:	b7d5                	j	e8853312 <_LogOutputDeleteUnused+0xe>

00000000e8853330 <_LogUtils_FreeAction>:
{
    e8853330:	1141                	addi	sp,sp,-16
    e8853332:	e022                	sd	s0,0(sp)
    e8853334:	e406                	sd	ra,8(sp)
    e8853336:	842a                	mv	s0,a0
	ForgetMem( &inAction->name );
    e8853338:	6508                	ld	a0,8(a0)
    e885333a:	c509                	beqz	a0,e8853344 <_LogUtils_FreeAction+0x14>
    e885333c:	7c5280ef          	jal	ra,e887c300 <eLIBs_free>
    e8853340:	00043423          	sd	zero,8(s0)
	ForgetMem( &inAction->variable );
    e8853344:	6808                	ld	a0,16(s0)
    e8853346:	c509                	beqz	a0,e8853350 <_LogUtils_FreeAction+0x20>
    e8853348:	7b9280ef          	jal	ra,e887c300 <eLIBs_free>
    e885334c:	00043823          	sd	zero,16(s0)
	ForgetMem( &inAction->value );
    e8853350:	6c08                	ld	a0,24(s0)
    e8853352:	c509                	beqz	a0,e885335c <_LogUtils_FreeAction+0x2c>
    e8853354:	7ad280ef          	jal	ra,e887c300 <eLIBs_free>
    e8853358:	00043c23          	sd	zero,24(s0)
	free( inAction );
    e885335c:	8522                	mv	a0,s0
}
    e885335e:	6402                	ld	s0,0(sp)
    e8853360:	60a2                	ld	ra,8(sp)
    e8853362:	0141                	addi	sp,sp,16
	free( inAction );
    e8853364:	79d2806f          	j	e887c300 <eLIBs_free>

00000000e8853368 <_LogPrintFCallBack>:
{
    e8853368:	1101                	addi	sp,sp,-32
    e885336a:	f891540b          	sdd	s0,s1,(sp),0,4
    e885336e:	e84a                	sd	s2,16(sp)
    e8853370:	ec06                	sd	ra,24(sp)
    e8853372:	8432                	mv	s0,a2
    e8853374:	892a                	mv	s2,a0
    e8853376:	84ae                	mv	s1,a1
    e8853378:	11063603          	ld	a2,272(a2)
	if( ( ( inLen == 0 ) && context->flushOnEnd ) || ( ( context->len + inLen ) > sizeof( context->buf ) ) )
    e885337c:	e581                	bnez	a1,e8853384 <_LogPrintFCallBack+0x1c>
    e885337e:	11844783          	lbu	a5,280(s0)
    e8853382:	e799                	bnez	a5,e8853390 <_LogPrintFCallBack+0x28>
    e8853384:	00c487b3          	add	a5,s1,a2
    e8853388:	10000713          	li	a4,256
    e885338c:	00f77a63          	bgeu	a4,a5,e88533a0 <_LogPrintFCallBack+0x38>
		if( context->len > 0 )
    e8853390:	ca01                	beqz	a2,e88533a0 <_LogPrintFCallBack+0x38>
			_LogPrintFWrite( context, context->buf, context->len );
    e8853392:	00c40593          	addi	a1,s0,12
    e8853396:	8522                	mv	a0,s0
    e8853398:	edfff0ef          	jal	ra,e8853276 <_LogPrintFWrite>
			context->len = 0;
    e885339c:	10043823          	sd	zero,272(s0)
	if( inLen > sizeof( context->buf ) )
    e88533a0:	10000793          	li	a5,256
    e88533a4:	0097ff63          	bgeu	a5,s1,e88533c2 <_LogPrintFCallBack+0x5a>
		_LogPrintFWrite( context, inStr, inLen );
    e88533a8:	8626                	mv	a2,s1
    e88533aa:	85ca                	mv	a1,s2
    e88533ac:	8522                	mv	a0,s0
    e88533ae:	ec9ff0ef          	jal	ra,e8853276 <_LogPrintFWrite>
}
    e88533b2:	0004851b          	sext.w	a0,s1
    e88533b6:	60e2                	ld	ra,24(sp)
    e88533b8:	f891440b          	ldd	s0,s1,(sp),0,4
    e88533bc:	6942                	ld	s2,16(sp)
    e88533be:	6105                	addi	sp,sp,32
    e88533c0:	8082                	ret
	else if( inLen > 0 )
    e88533c2:	d8e5                	beqz	s1,e88533b2 <_LogPrintFCallBack+0x4a>
		memcpy( &context->buf[ context->len ], inStr, inLen );
    e88533c4:	11043503          	ld	a0,272(s0)
    e88533c8:	8626                	mv	a2,s1
    e88533ca:	85ca                	mv	a1,s2
    e88533cc:	0531                	addi	a0,a0,12
    e88533ce:	9522                	add	a0,a0,s0
    e88533d0:	7d1280ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		context->len += inLen;
    e88533d4:	11043783          	ld	a5,272(s0)
    e88533d8:	97a6                	add	a5,a5,s1
    e88533da:	10f43823          	sd	a5,272(s0)
    e88533de:	bfd1                	j	e88533b2 <_LogPrintFCallBack+0x4a>

00000000e88533e0 <_LogOutputWindowsDebugger_Writer>:

//===========================================================================================================================
//	_LogOutputWindowsDebugger_Writer
//===========================================================================================================================
static void	_LogOutputWindowsDebugger_Writer( LogPrintFContext *inContext, LogOutput *inOutput, const char *inStr, size_t inLen )
{
    e88533e0:	7131                	addi	sp,sp,-192
	//printf("%s",inStr);
	
	#define MAX_PRINT_LEN	120
	
	int i,msglen,len;
	msglen = strlen(inStr);
    e88533e2:	8532                	mv	a0,a2
{
    e88533e4:	f922                	sd	s0,176(sp)
    e88533e6:	f526                	sd	s1,168(sp)
    e88533e8:	e952                	sd	s4,144(sp)
    e88533ea:	e556                	sd	s5,136(sp)
    e88533ec:	fd06                	sd	ra,184(sp)
    e88533ee:	f14a                	sd	s2,160(sp)
    e88533f0:	ed4e                	sd	s3,152(sp)
    e88533f2:	84b2                	mv	s1,a2
	msglen = strlen(inStr);
    e88533f4:	725280ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88533f8:	0005041b          	sext.w	s0,a0
	
	for(i=0;msglen>0;i++)
    e88533fc:	07800a13          	li	s4,120
		}
		memcpy(log,inStr,len);
		msglen -= len;
		inStr += len;
		
		printf("%s", log);
    e8853400:	00057a97          	auipc	s5,0x57
    e8853404:	fa0a8a93          	addi	s5,s5,-96 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
	for(i=0;msglen>0;i++)
    e8853408:	02804163          	bgtz	s0,e885342a <_LogOutputWindowsDebugger_Writer+0x4a>
	}
	printf("\n");
    e885340c:	0004d517          	auipc	a0,0x4d
    e8853410:	87450513          	addi	a0,a0,-1932 # e889fc80 <TWO52+0x88>
    e8853414:	6b3280ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e8853418:	744a                	ld	s0,176(sp)
    e885341a:	70ea                	ld	ra,184(sp)
    e885341c:	74aa                	ld	s1,168(sp)
    e885341e:	790a                	ld	s2,160(sp)
    e8853420:	69ea                	ld	s3,152(sp)
    e8853422:	6a4a                	ld	s4,144(sp)
    e8853424:	6aaa                	ld	s5,136(sp)
    e8853426:	6129                	addi	sp,sp,192
    e8853428:	8082                	ret
		memclr(log,sizeof(log));
    e885342a:	07900593          	li	a1,121
    e885342e:	850a                	mv	a0,sp
    e8853430:	755280ef          	jal	ra,e887c384 <eLIBs_memclr>
		if(msglen > MAX_PRINT_LEN)
    e8853434:	8922                	mv	s2,s0
    e8853436:	008a5463          	bge	s4,s0,e885343e <_LogOutputWindowsDebugger_Writer+0x5e>
    e885343a:	07800913          	li	s2,120
    e885343e:	0009099b          	sext.w	s3,s2
		memcpy(log,inStr,len);
    e8853442:	85a6                	mv	a1,s1
    e8853444:	864e                	mv	a2,s3
    e8853446:	850a                	mv	a0,sp
    e8853448:	759280ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		msglen -= len;
    e885344c:	4124043b          	subw	s0,s0,s2
		printf("%s", log);
    e8853450:	858a                	mv	a1,sp
    e8853452:	8556                	mv	a0,s5
		inStr += len;
    e8853454:	94ce                	add	s1,s1,s3
		printf("%s", log);
    e8853456:	671280ef          	jal	ra,e887c2c6 <eLIBs_printf>
	for(i=0;msglen>0;i++)
    e885345a:	b77d                	j	e8853408 <_LogOutputWindowsDebugger_Writer+0x28>

00000000e885345c <_LULevelToString.constprop.4>:
static char *	_LULevelToString( LogLevel inLevel, char *inBuf, size_t inLen )
    e885345c:	1141                	addi	sp,sp,-16
    e885345e:	0006e697          	auipc	a3,0x6e
    e8853462:	02a68693          	addi	a3,a3,42 # e88c1488 <kLogLevelToStringTable>
	smallestDiff = INT_MAX;
    e8853466:	80000737          	lui	a4,0x80000
static char *	_LULevelToString( LogLevel inLevel, char *inBuf, size_t inLen )
    e885346a:	e022                	sd	s0,0(sp)
    e885346c:	e406                	sd	ra,8(sp)
    e885346e:	842e                	mv	s0,a1
	inLevel &= kLogLevelMask;
    e8853470:	0ff57513          	andi	a0,a0,255
	closestIndex = 0;
    e8853474:	4781                	li	a5,0
	smallestDiff = INT_MAX;
    e8853476:	fff74713          	not	a4,a4
	for( i = 0; kLogLevelToStringTable[ i ].name; ++i )
    e885347a:	4581                	li	a1,0
    e885347c:	8836                	mv	a6,a3
    e885347e:	6690                	ld	a2,8(a3)
    e8853480:	e221                	bnez	a2,e88534c0 <_LULevelToString.constprop.4+0x64>
	name = kLogLevelToStringTable[ closestIndex ].name;
    e8853482:	0792                	slli	a5,a5,0x4
    e8853484:	00f80733          	add	a4,a6,a5
	diff = inLevel - kLogLevelToStringTable[ closestIndex ].level;
    e8853488:	40f8478b          	lrw	a5,a6,a5,0
	name = kLogLevelToStringTable[ closestIndex ].name;
    e885348c:	6714                	ld	a3,8(a4)
	if(      diff > 0 ) SNPrintF( inBuf, inLen, "%s+%u", name, diff );
    e885348e:	0006e617          	auipc	a2,0x6e
    e8853492:	f3260613          	addi	a2,a2,-206 # e88c13c0 <__PRETTY_FUNCTION__.9824+0x78>
	diff = inLevel - kLogLevelToStringTable[ closestIndex ].level;
    e8853496:	40f5073b          	subw	a4,a0,a5
	if(      diff > 0 ) SNPrintF( inBuf, inLen, "%s+%u", name, diff );
    e885349a:	00e04963          	bgtz	a4,e88534ac <_LULevelToString.constprop.4+0x50>
	else if( diff < 0 )	SNPrintF( inBuf, inLen, "%s-%u", name, -diff );
    e885349e:	c321                	beqz	a4,e88534de <_LULevelToString.constprop.4+0x82>
    e88534a0:	40a7873b          	subw	a4,a5,a0
    e88534a4:	0006e617          	auipc	a2,0x6e
    e88534a8:	f2460613          	addi	a2,a2,-220 # e88c13c8 <__PRETTY_FUNCTION__.9824+0x80>
    e88534ac:	04000593          	li	a1,64
    e88534b0:	8522                	mv	a0,s0
    e88534b2:	0d8090ef          	jal	ra,e885c58a <SNPrintF>
}
    e88534b6:	8522                	mv	a0,s0
    e88534b8:	60a2                	ld	ra,8(sp)
    e88534ba:	6402                	ld	s0,0(sp)
    e88534bc:	0141                	addi	sp,sp,16
    e88534be:	8082                	ret
		diff = inLevel - kLogLevelToStringTable[ i ].level;
    e88534c0:	0006a883          	lw	a7,0(a3)
    e88534c4:	4115063b          	subw	a2,a0,a7
		if( diff < 0 ) diff = -diff;
    e88534c8:	00065463          	bgez	a2,e88534d0 <_LULevelToString.constprop.4+0x74>
    e88534cc:	40a8863b          	subw	a2,a7,a0
		if( diff < smallestDiff )
    e88534d0:	00e65463          	bge	a2,a4,e88534d8 <_LULevelToString.constprop.4+0x7c>
			closestIndex = i;
    e88534d4:	87ae                	mv	a5,a1
		if( diff < smallestDiff )
    e88534d6:	8732                	mv	a4,a2
	for( i = 0; kLogLevelToStringTable[ i ].name; ++i )
    e88534d8:	2585                	addiw	a1,a1,1
    e88534da:	06c1                	addi	a3,a3,16
    e88534dc:	b74d                	j	e885347e <_LULevelToString.constprop.4+0x22>
	else				SNPrintF( inBuf, inLen, "%s",    name );
    e88534de:	00057617          	auipc	a2,0x57
    e88534e2:	ec260613          	addi	a2,a2,-318 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e88534e6:	04000593          	li	a1,64
    e88534ea:	8522                	mv	a0,s0
    e88534ec:	09e090ef          	jal	ra,e885c58a <SNPrintF>
    e88534f0:	b7d9                	j	e88534b6 <_LULevelToString.constprop.4+0x5a>

00000000e88534f2 <_LogOutputCreate>:
{
    e88534f2:	7171                	addi	sp,sp,-176
    e88534f4:	e152                	sd	s4,128(sp)
	for( output = gLogOutputList; output; output = output->next )
    e88534f6:	00091a17          	auipc	s4,0x91
    e88534fa:	80aa0a13          	addi	s4,s4,-2038 # e88e3d00 <gLogOutputList>
{
    e88534fe:	ed26                	sd	s1,152(sp)
	for( output = gLogOutputList; output; output = output->next )
    e8853500:	000a3483          	ld	s1,0(s4)
{
    e8853504:	e94a                	sd	s2,144(sp)
    e8853506:	fcd6                	sd	s5,120(sp)
    e8853508:	f506                	sd	ra,168(sp)
    e885350a:	f122                	sd	s0,160(sp)
    e885350c:	e54e                	sd	s3,136(sp)
    e885350e:	f8da                	sd	s6,112(sp)
    e8853510:	f4de                	sd	s7,104(sp)
    e8853512:	f0e2                	sd	s8,96(sp)
    e8853514:	ece6                	sd	s9,88(sp)
    e8853516:	e8ea                	sd	s10,80(sp)
    e8853518:	e4ee                	sd	s11,72(sp)
    e885351a:	892a                	mv	s2,a0
    e885351c:	8aae                	mv	s5,a1
	for( output = gLogOutputList; output; output = output->next )
    e885351e:	e0c5                	bnez	s1,e88535be <_LogOutputCreate+0xcc>
    p = malloc(len);
    e8853520:	03800513          	li	a0,56
    e8853524:	32a280ef          	jal	ra,e887b84e <my_malloc>
    e8853528:	84aa                	mv	s1,a0
    memset(p,0,len);
    e885352a:	03800613          	li	a2,56
    e885352e:	4581                	li	a1,0
    e8853530:	665280ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action_quiet( output, exit, err = kNoMemoryErr );
    e8853534:	18048b63          	beqz	s1,e88536ca <_LogOutputCreate+0x1d8>
	output->refCount = 0; // Only referenced when associated with a category.
    e8853538:	0004a423          	sw	zero,8(s1)
	output->configStr = strdup( inConfigStr );
    e885353c:	854a                	mv	a0,s2
    e885353e:	2ca0c0ef          	jal	ra,e885f808 <strdup>
    e8853542:	e888                	sd	a0,16(s1)
	require_action_quiet( output->configStr, exit, err = kNoMemoryErr );
    e8853544:	18050763          	beqz	a0,e88536d2 <_LogOutputCreate+0x1e0>
    e8853548:	844a                	mv	s0,s2
	while( ( ( c = *inConfigStr ) != '\0' ) && ( c != ';' ) ) ++inConfigStr;
    e885354a:	03b00713          	li	a4,59
    e885354e:	00044783          	lbu	a5,0(s0)
    e8853552:	c399                	beqz	a5,e8853558 <_LogOutputCreate+0x66>
    e8853554:	0ae79063          	bne	a5,a4,e88535f4 <_LogOutputCreate+0x102>
	typeLen = (size_t)( inConfigStr - typeSrc );
    e8853558:	412409b3          	sub	s3,s0,s2
	require_action_quiet( typeLen > 0, exit, err = kTypeErr );
    e885355c:	16098f63          	beqz	s3,e88536da <_LogOutputCreate+0x1e8>
	if( c != '\0' ) ++inConfigStr;
    e8853560:	c391                	beqz	a5,e8853564 <_LogOutputCreate+0x72>
    e8853562:	0405                	addi	s0,s0,1
	else if( strnicmpx( typeSrc, typeLen, "callback" ) == 0 )
    e8853564:	0006e617          	auipc	a2,0x6e
    e8853568:	ef460613          	addi	a2,a2,-268 # e88c1458 <__PRETTY_FUNCTION__.9824+0x110>
    e885356c:	85ce                	mv	a1,s3
    e885356e:	854a                	mv	a0,s2
    e8853570:	3ec0c0ef          	jal	ra,e885f95c <strnicmpx>
    e8853574:	10051d63          	bnez	a0,e885368e <_LogOutputCreate+0x19c>
	inOutput->config.callback.func = NULL;
    e8853578:	0204b423          	sd	zero,40(s1)
	inOutput->config.callback.arg  = NULL;
    e885357c:	0204b823          	sd	zero,48(s1)
		while( ( ( c = *inParams ) != '\0' ) && ( c != ';' ) ) ++inParams;
    e8853580:	03b00c13          	li	s8,59
		if( strnicmpx( namePtr, nameLen, "func" ) == 0 )
    e8853584:	0006ec97          	auipc	s9,0x6e
    e8853588:	ee4c8c93          	addi	s9,s9,-284 # e88c1468 <__PRETTY_FUNCTION__.9824+0x120>
		else if( strnicmpx( namePtr, nameLen, "arg" ) == 0 )
    e885358c:	0006ed17          	auipc	s10,0x6e
    e8853590:	ee4d0d13          	addi	s10,s10,-284 # e88c1470 <__PRETTY_FUNCTION__.9824+0x128>
			require_action_quiet( valueLen < sizeof( tempStr ), exit, err = kSizeErr );
    e8853594:	03f00b13          	li	s6,63
	while( *inParams != '\0' )
    e8853598:	00044783          	lbu	a5,0(s0)
    e885359c:	efad                	bnez	a5,e8853616 <_LogOutputCreate+0x124>
	inOutput->writer = _LogOutputCallBack_Writer;
    e885359e:	00000797          	auipc	a5,0x0
    e88535a2:	d3278793          	addi	a5,a5,-718 # e88532d0 <_LogOutputCallBack_Writer>
    e88535a6:	ec9c                	sd	a5,24(s1)
	inOutput->type   = kLogOutputType_CallBack;
    e88535a8:	47ad                	li	a5,11
			output->type	= kLogOutputType_WindowsDebugger;
    e88535aa:	d09c                	sw	a5,32(s1)
	output->next	= gLogOutputList;
    e88535ac:	000a3783          	ld	a5,0(s4)
	err				= kNoErr;
    e88535b0:	4401                	li	s0,0
	output->next	= gLogOutputList;
    e88535b2:	e09c                	sd	a5,0(s1)
	gLogOutputList	= output;
    e88535b4:	009a3023          	sd	s1,0(s4)
	*outOutput		= output;
    e88535b8:	009ab023          	sd	s1,0(s5)
	if( output ) _LogOutputDelete( output );
    e88535bc:	a811                	j	e88535d0 <_LogOutputCreate+0xde>
		if( strnicmpx( output->configStr, SIZE_MAX, inConfigStr ) == 0 )
    e88535be:	6888                	ld	a0,16(s1)
    e88535c0:	864a                	mv	a2,s2
    e88535c2:	55fd                	li	a1,-1
    e88535c4:	3980c0ef          	jal	ra,e885f95c <strnicmpx>
    e88535c8:	842a                	mv	s0,a0
    e88535ca:	e11d                	bnez	a0,e88535f0 <_LogOutputCreate+0xfe>
			*outOutput = output;
    e88535cc:	009ab023          	sd	s1,0(s5)
}
    e88535d0:	8522                	mv	a0,s0
    e88535d2:	70aa                	ld	ra,168(sp)
    e88535d4:	740a                	ld	s0,160(sp)
    e88535d6:	64ea                	ld	s1,152(sp)
    e88535d8:	694a                	ld	s2,144(sp)
    e88535da:	69aa                	ld	s3,136(sp)
    e88535dc:	6a0a                	ld	s4,128(sp)
    e88535de:	7ae6                	ld	s5,120(sp)
    e88535e0:	7b46                	ld	s6,112(sp)
    e88535e2:	7ba6                	ld	s7,104(sp)
    e88535e4:	7c06                	ld	s8,96(sp)
    e88535e6:	6ce6                	ld	s9,88(sp)
    e88535e8:	6d46                	ld	s10,80(sp)
    e88535ea:	6da6                	ld	s11,72(sp)
    e88535ec:	614d                	addi	sp,sp,176
    e88535ee:	8082                	ret
	for( output = gLogOutputList; output; output = output->next )
    e88535f0:	6084                	ld	s1,0(s1)
    e88535f2:	b735                	j	e885351e <_LogOutputCreate+0x2c>
	while( ( ( c = *inConfigStr ) != '\0' ) && ( c != ';' ) ) ++inConfigStr;
    e88535f4:	0405                	addi	s0,s0,1
    e88535f6:	bfa1                	j	e885354e <_LogOutputCreate+0x5c>
		while( ( ( c = *inParams ) != '\0' ) && ( c != '=' ) ) ++inParams;
    e88535f8:	85de                	mv	a1,s7
    e88535fa:	0005c703          	lbu	a4,0(a1)
    e88535fe:	0e070263          	beqz	a4,e88536e2 <_LogOutputCreate+0x1f0>
    e8853602:	03d00793          	li	a5,61
    e8853606:	00158b93          	addi	s7,a1,1
    e885360a:	fef717e3          	bne	a4,a5,e88535f8 <_LogOutputCreate+0x106>
		nameLen = (size_t)( inParams - namePtr );
    e885360e:	408589b3          	sub	s3,a1,s0
    e8853612:	895e                	mv	s2,s7
    e8853614:	a021                	j	e885361c <_LogOutputCreate+0x12a>
	while( *inParams != '\0' )
    e8853616:	85a2                	mv	a1,s0
    e8853618:	b7cd                	j	e88535fa <_LogOutputCreate+0x108>
		while( ( ( c = *inParams ) != '\0' ) && ( c != ';' ) ) ++inParams;
    e885361a:	0905                	addi	s2,s2,1
    e885361c:	00094703          	lbu	a4,0(s2)
    e8853620:	c319                	beqz	a4,e8853626 <_LogOutputCreate+0x134>
    e8853622:	ff871ce3          	bne	a4,s8,e885361a <_LogOutputCreate+0x128>
		valueLen = (size_t)( inParams - valuePtr );
    e8853626:	41790db3          	sub	s11,s2,s7
		if( c != '\0' ) ++inParams;
    e885362a:	c311                	beqz	a4,e885362e <_LogOutputCreate+0x13c>
    e885362c:	0905                	addi	s2,s2,1
		if( strnicmpx( namePtr, nameLen, "func" ) == 0 )
    e885362e:	8666                	mv	a2,s9
    e8853630:	85ce                	mv	a1,s3
    e8853632:	8522                	mv	a0,s0
    e8853634:	3280c0ef          	jal	ra,e885f95c <strnicmpx>
    e8853638:	e51d                	bnez	a0,e8853666 <_LogOutputCreate+0x174>
			require_action_quiet( valueLen < sizeof( tempStr ), exit, err = kSizeErr );
    e885363a:	01bb7963          	bgeu	s6,s11,e885364c <_LogOutputCreate+0x15a>
    e885363e:	7479                	lui	s0,0xffffe
    e8853640:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
	if( output ) _LogOutputDelete( output );
    e8853644:	8526                	mv	a0,s1
    e8853646:	c9fff0ef          	jal	ra,e88532e4 <_LogOutputDelete>
	return( err );
    e885364a:	b759                	j	e88535d0 <_LogOutputCreate+0xde>
			memcpy( tempStr, valuePtr, valueLen );
    e885364c:	866e                	mv	a2,s11
    e885364e:	85de                	mv	a1,s7
    e8853650:	850a                	mv	a0,sp
    e8853652:	54f280ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			tempStr[ valueLen ] = '\0';
    e8853656:	01b1500b          	srb	zero,sp,s11,0
			tempPtr = atoi(tempStr); n = 1;
    e885365a:	850a                	mv	a0,sp
    e885365c:	48b280ef          	jal	ra,e887c2e6 <eLIBs_atoi>
    e8853660:	f488                	sd	a0,40(s1)
		nameLen = (size_t)( inParams - namePtr );
    e8853662:	844a                	mv	s0,s2
    e8853664:	bf15                	j	e8853598 <_LogOutputCreate+0xa6>
		else if( strnicmpx( namePtr, nameLen, "arg" ) == 0 )
    e8853666:	866a                	mv	a2,s10
    e8853668:	85ce                	mv	a1,s3
    e885366a:	8522                	mv	a0,s0
    e885366c:	2f00c0ef          	jal	ra,e885f95c <strnicmpx>
    e8853670:	ed2d                	bnez	a0,e88536ea <_LogOutputCreate+0x1f8>
			require_action_quiet( valueLen < sizeof( tempStr ), exit, err = kSizeErr );
    e8853672:	fdbb66e3          	bltu	s6,s11,e885363e <_LogOutputCreate+0x14c>
			memcpy( tempStr, valuePtr, valueLen );
    e8853676:	866e                	mv	a2,s11
    e8853678:	85de                	mv	a1,s7
    e885367a:	850a                	mv	a0,sp
    e885367c:	525280ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			tempStr[ valueLen ] = '\0';
    e8853680:	01b1500b          	srb	zero,sp,s11,0
			inOutput->config.callback.arg = atoi(tempStr);n = 1;
    e8853684:	850a                	mv	a0,sp
    e8853686:	461280ef          	jal	ra,e887c2e6 <eLIBs_atoi>
    e885368a:	f888                	sd	a0,48(s1)
			require_action_quiet( n == 1, exit, err = kMalformedErr );
    e885368c:	bfd9                	j	e8853662 <_LogOutputCreate+0x170>
	else if( strnicmpx( typeSrc, typeLen, "console" ) == 0 )
    e885368e:	0006e617          	auipc	a2,0x6e
    e8853692:	dea60613          	addi	a2,a2,-534 # e88c1478 <__PRETTY_FUNCTION__.9824+0x130>
    e8853696:	85ce                	mv	a1,s3
    e8853698:	854a                	mv	a0,s2
    e885369a:	2c20c0ef          	jal	ra,e885f95c <strnicmpx>
    e885369e:	e901                	bnez	a0,e88536ae <_LogOutputCreate+0x1bc>
			output->writer	= _LogOutputWindowsDebugger_Writer;
    e88536a0:	00000797          	auipc	a5,0x0
    e88536a4:	d4078793          	addi	a5,a5,-704 # e88533e0 <_LogOutputWindowsDebugger_Writer>
    e88536a8:	ec9c                	sd	a5,24(s1)
			output->type	= kLogOutputType_WindowsDebugger;
    e88536aa:	47a1                	li	a5,8
    e88536ac:	bdfd                	j	e88535aa <_LogOutputCreate+0xb8>
	else if( strnicmpx( typeSrc, typeLen, "syslog" ) == 0 )
    e88536ae:	0006e617          	auipc	a2,0x6e
    e88536b2:	dd260613          	addi	a2,a2,-558 # e88c1480 <__PRETTY_FUNCTION__.9824+0x138>
    e88536b6:	85ce                	mv	a1,s3
    e88536b8:	854a                	mv	a0,s2
    e88536ba:	2a20c0ef          	jal	ra,e885f95c <strnicmpx>
    e88536be:	ee0507e3          	beqz	a0,e88535ac <_LogOutputCreate+0xba>
		err = kParamErr;
    e88536c2:	7479                	lui	s0,0xffffe
    e88536c4:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e88536c8:	bfb5                	j	e8853644 <_LogOutputCreate+0x152>
	require_action_quiet( output, exit, err = kNoMemoryErr );
    e88536ca:	7479                	lui	s0,0xffffe
    e88536cc:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88536d0:	b701                	j	e88535d0 <_LogOutputCreate+0xde>
	require_action_quiet( output->configStr, exit, err = kNoMemoryErr );
    e88536d2:	7479                	lui	s0,0xffffe
    e88536d4:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88536d8:	b7b5                	j	e8853644 <_LogOutputCreate+0x152>
	require_action_quiet( typeLen > 0, exit, err = kTypeErr );
    e88536da:	7479                	lui	s0,0xffffe
    e88536dc:	59c40413          	addi	s0,s0,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
    e88536e0:	b795                	j	e8853644 <_LogOutputCreate+0x152>
		require_action_quiet( c != '\0', exit, err = kMalformedErr );
    e88536e2:	7479                	lui	s0,0xffffe
    e88536e4:	5aa40413          	addi	s0,s0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e88536e8:	bfb1                	j	e8853644 <_LogOutputCreate+0x152>
			err = kUnsupportedErr;
    e88536ea:	7479                	lui	s0,0xffffe
    e88536ec:	5b140413          	addi	s0,s0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
		require_noerr_quiet( err, exit );
    e88536f0:	bf91                	j	e8853644 <_LogOutputCreate+0x152>

00000000e88536f2 <LUStringToLevel>:
{
    e88536f2:	7139                	addi	sp,sp,-64
    e88536f4:	f891540b          	sdd	s0,s1,(sp),0,4
    e88536f8:	fc06                	sd	ra,56(sp)
    e88536fa:	f85a                	sd	s6,48(sp)
    e88536fc:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8853700:	fd515a0b          	sdd	s4,s5,(sp),2,4
	for( ptr = inStr; isalpha_safe( c = *ptr ); ++ptr ) {}
    e8853704:	842a                	mv	s0,a0
    e8853706:	06000693          	li	a3,96
    e885370a:	4765                	li	a4,25
    e885370c:	07a00613          	li	a2,122
    e8853710:	00044483          	lbu	s1,0(s0)
    e8853714:	0296f863          	bgeu	a3,s1,e8853744 <LUStringToLevel+0x52>
    e8853718:	02967c63          	bgeu	a2,s1,e8853750 <LUStringToLevel+0x5e>
	if( ptr != inStr )
    e885371c:	02a41c63          	bne	s0,a0,e8853754 <LUStringToLevel+0x62>
		level = 0;
    e8853720:	4781                	li	a5,0
		for( ; isdigit_safe( c = *ptr ); ++ptr ) level = ( level * 10 ) + ( c - '0' );
    e8853722:	02f00693          	li	a3,47
    e8853726:	03900713          	li	a4,57
    e885372a:	4629                	li	a2,10
    e885372c:	00044503          	lbu	a0,0(s0)
    e8853730:	0aa6f863          	bgeu	a3,a0,e88537e0 <LUStringToLevel+0xee>
    e8853734:	04a76863          	bltu	a4,a0,e8853784 <LUStringToLevel+0x92>
    e8853738:	24f6150b          	mulaw	a0,a2,a5
    e885373c:	0405                	addi	s0,s0,1
    e885373e:	fd05079b          	addiw	a5,a0,-48
    e8853742:	b7ed                	j	e885372c <LUStringToLevel+0x3a>
	for( ptr = inStr; isalpha_safe( c = *ptr ); ++ptr ) {}
    e8853744:	fbf4879b          	addiw	a5,s1,-65
    e8853748:	0ff7f793          	andi	a5,a5,255
    e885374c:	fcf768e3          	bltu	a4,a5,e885371c <LUStringToLevel+0x2a>
    e8853750:	0405                	addi	s0,s0,1
    e8853752:	bf7d                	j	e8853710 <LUStringToLevel+0x1e>
    e8853754:	0006ea17          	auipc	s4,0x6e
    e8853758:	d34a0a13          	addi	s4,s4,-716 # e88c1488 <kLogLevelToStringTable>
    e885375c:	892a                	mv	s2,a0
		len = (size_t)( ptr - inStr );
    e885375e:	40a40ab3          	sub	s5,s0,a0
		for( i = 0; kLogLevelToStringTable[ i ].name; ++i )
    e8853762:	4981                	li	s3,0
    e8853764:	8b52                	mv	s6,s4
    e8853766:	008a3583          	ld	a1,8(s4)
    e885376a:	cd89                	beqz	a1,e8853784 <LUStringToLevel+0x92>
			if( strncmp( inStr, kLogLevelToStringTable[ i ].name, len ) == 0 )
    e885376c:	8656                	mv	a2,s5
    e885376e:	854a                	mv	a0,s2
    e8853770:	3e5280ef          	jal	ra,e887c354 <eLIBs_strncmp>
    e8853774:	0a41                	addi	s4,s4,16
    e8853776:	e909                	bnez	a0,e8853788 <LUStringToLevel+0x96>
				level = kLogLevelToStringTable[ i ].level;
    e8853778:	0992                	slli	s3,s3,0x4
    e885377a:	413b478b          	lrw	a5,s6,s3,0
		require_quiet( level != kLogLevelUninitialized, exit );
    e885377e:	577d                	li	a4,-1
    e8853780:	00e79663          	bne	a5,a4,e885378c <LUStringToLevel+0x9a>
		require_action_quiet( c == '\0', exit, level = kLogLevelUninitialized );
    e8853784:	57fd                	li	a5,-1
    e8853786:	a825                	j	e88537be <LUStringToLevel+0xcc>
		for( i = 0; kLogLevelToStringTable[ i ].name; ++i )
    e8853788:	2985                	addiw	s3,s3,1
    e885378a:	bff1                	j	e8853766 <LUStringToLevel+0x74>
		if( c == '\0' ) goto exit;
    e885378c:	c88d                	beqz	s1,e88537be <LUStringToLevel+0xcc>
		for( ++ptr; isdigit_safe( c = *ptr ); ++ptr ) x = ( x * 10 ) + ( c - '0' );
    e885378e:	0405                	addi	s0,s0,1
    e8853790:	02f00613          	li	a2,47
    e8853794:	03900693          	li	a3,57
    e8853798:	45a9                	li	a1,10
    e885379a:	00044703          	lbu	a4,0(s0)
    e885379e:	00e67a63          	bgeu	a2,a4,e88537b2 <LUStringToLevel+0xc0>
    e88537a2:	fee6e1e3          	bltu	a3,a4,e8853784 <LUStringToLevel+0x92>
    e88537a6:	24a5970b          	mulaw	a4,a1,a0
    e88537aa:	0405                	addi	s0,s0,1
    e88537ac:	fd07051b          	addiw	a0,a4,-48
    e88537b0:	b7ed                	j	e885379a <LUStringToLevel+0xa8>
		require_action_quiet( c == '\0', exit, level = kLogLevelUninitialized );
    e88537b2:	fb69                	bnez	a4,e8853784 <LUStringToLevel+0x92>
		if(      adjust == '+' ) level += x;
    e88537b4:	02b00713          	li	a4,43
    e88537b8:	00e49e63          	bne	s1,a4,e88537d4 <LUStringToLevel+0xe2>
    e88537bc:	9fa9                	addw	a5,a5,a0
}
    e88537be:	70e2                	ld	ra,56(sp)
    e88537c0:	f891440b          	ldd	s0,s1,(sp),0,4
    e88537c4:	7b42                	ld	s6,48(sp)
    e88537c6:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88537ca:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88537ce:	853e                	mv	a0,a5
    e88537d0:	6121                	addi	sp,sp,64
    e88537d2:	8082                	ret
		else if( adjust == '-' ) level -= x;
    e88537d4:	02d00713          	li	a4,45
    e88537d8:	fae496e3          	bne	s1,a4,e8853784 <LUStringToLevel+0x92>
    e88537dc:	9f89                	subw	a5,a5,a0
    e88537de:	b7c5                	j	e88537be <LUStringToLevel+0xcc>
		require_action_quiet( c == '\0', exit, level = kLogLevelUninitialized );
    e88537e0:	dd79                	beqz	a0,e88537be <LUStringToLevel+0xcc>
    e88537e2:	b74d                	j	e8853784 <LUStringToLevel+0x92>

00000000e88537e4 <_LogCategory_ApplyActions>:
{
    e88537e4:	7119                	addi	sp,sp,-128
    e88537e6:	e4d6                	sd	s5,72(sp)
	for( action = gLogActionList; action; action = action->next )
    e88537e8:	00090a97          	auipc	s5,0x90
    e88537ec:	4f0a8a93          	addi	s5,s5,1264 # e88e3cd8 <gLogActionList>
{
    e88537f0:	ecce                	sd	s3,88(sp)
    e88537f2:	e8d2                	sd	s4,80(sp)
    e88537f4:	e0da                	sd	s6,64(sp)
    e88537f6:	fc86                	sd	ra,120(sp)
    e88537f8:	f8a2                	sd	s0,112(sp)
    e88537fa:	f4a6                	sd	s1,104(sp)
    e88537fc:	f0ca                	sd	s2,96(sp)
    e88537fe:	fc5e                	sd	s7,56(sp)
    e8853800:	f862                	sd	s8,48(sp)
    e8853802:	f466                	sd	s9,40(sp)
    e8853804:	f06a                	sd	s10,32(sp)
    e8853806:	ec6e                	sd	s11,24(sp)
	for( action = gLogActionList; action; action = action->next )
    e8853808:	000ab403          	ld	s0,0(s5)
{
    e885380c:	89aa                	mv	s3,a0
		if( strnicmpx( action->variable, SIZE_MAX, "level" ) != 0 )
    e885380e:	0006ea17          	auipc	s4,0x6e
    e8853812:	bc2a0a13          	addi	s4,s4,-1086 # e88c13d0 <__PRETTY_FUNCTION__.9824+0x88>
		for( category = gLogCategoryList; category; category = category->next )
    e8853816:	00090b17          	auipc	s6,0x90
    e885381a:	4e2b0b13          	addi	s6,s6,1250 # e88e3cf8 <gLogCategoryList>
	for( action = gLogActionList; action; action = action->next )
    e885381e:	e42d                	bnez	s0,e8853888 <_LogCategory_ApplyActions+0xa4>
	for( action = gLogActionList; action; action = action->next )
    e8853820:	000abb03          	ld	s6,0(s5)
			else if( strnicmpx( valueTok, valueLen, "category" )	== 0 ) flags |= kLogFlags_PrintCategory;
    e8853824:	0006ec17          	auipc	s8,0x6e
    e8853828:	bdcc0c13          	addi	s8,s8,-1060 # e88c1400 <__PRETTY_FUNCTION__.9824+0xb8>
			else if( strnicmpx( valueTok, valueLen, "level" )		== 0 ) flags |= kLogFlags_PrintLevel;
    e885382c:	0006ec97          	auipc	s9,0x6e
    e8853830:	ba4c8c93          	addi	s9,s9,-1116 # e88c13d0 <__PRETTY_FUNCTION__.9824+0x88>
		for( category = gLogCategoryList; category; category = category->next )
    e8853834:	00090d17          	auipc	s10,0x90
    e8853838:	4c4d0d13          	addi	s10,s10,1220 # e88e3cf8 <gLogCategoryList>
	for( action = gLogActionList; action; action = action->next )
    e885383c:	080b1563          	bnez	s6,e88538c6 <_LogCategory_ApplyActions+0xe2>
	for( action = gLogActionList; action; action = action->next )
    e8853840:	000abc83          	ld	s9,0(s5)
		if( strnicmpx( action->variable, SIZE_MAX, "rate" ) != 0 )
    e8853844:	0006ea17          	auipc	s4,0x6e
    e8853848:	be4a0a13          	addi	s4,s4,-1052 # e88c1428 <__PRETTY_FUNCTION__.9824+0xe0>
		for( ; ( valueSrc < valueEnd ) && isdigit_safe( *valueSrc ); ++valueSrc )
    e885384c:	4925                	li	s2,9
			maxCount = ( maxCount * 10 ) + ( *valueSrc - '0' );
    e885384e:	4b29                	li	s6,10
		for( category = gLogCategoryList; category; category = category->next )
    e8853850:	00090b97          	auipc	s7,0x90
    e8853854:	4a8b8b93          	addi	s7,s7,1192 # e88e3cf8 <gLogCategoryList>
			intervalTicks = ( intervalTicks * 10 ) + ( *valueSrc - '0' );
    e8853858:	4c29                	li	s8,10
	for( action = gLogActionList; action; action = action->next )
    e885385a:	1c0c9863          	bnez	s9,e8853a2a <_LogCategory_ApplyActions+0x246>
	for( action = gLogActionList; action; action = action->next )
    e885385e:	000ab483          	ld	s1,0(s5)
		if(      strnicmpx( action->variable, SIZE_MAX, "output" )  == 0 ) outputID = 1;
    e8853862:	0006ea17          	auipc	s4,0x6e
    e8853866:	bcea0a13          	addi	s4,s4,-1074 # e88c1430 <__PRETTY_FUNCTION__.9824+0xe8>
		for( category = gLogCategoryList; category; category = category->next )
    e885386a:	00090a97          	auipc	s5,0x90
    e885386e:	48ea8a93          	addi	s5,s5,1166 # e88e3cf8 <gLogCategoryList>
	if(      inOutputID == 1 ) outputAddr = &inCategory->output1;
    e8853872:	4b05                	li	s6,1
		else if( strnicmpx( action->variable, SIZE_MAX, "output2" ) == 0 ) outputID = 2;
    e8853874:	0006eb97          	auipc	s7,0x6e
    e8853878:	bc4b8b93          	addi	s7,s7,-1084 # e88c1438 <__PRETTY_FUNCTION__.9824+0xf0>
	for( action = gLogActionList; action; action = action->next )
    e885387c:	24049363          	bnez	s1,e8853ac2 <_LogCategory_ApplyActions+0x2de>
	_LogOutputDeleteUnused();
    e8853880:	a85ff0ef          	jal	ra,e8853304 <_LogOutputDeleteUnused>
	err = kNoErr;
    e8853884:	4501                	li	a0,0
	return( err );
    e8853886:	a449                	j	e8853b08 <_LogCategory_ApplyActions+0x324>
		if( strnicmpx( action->variable, SIZE_MAX, "level" ) != 0 )
    e8853888:	6808                	ld	a0,16(s0)
    e885388a:	8652                	mv	a2,s4
    e885388c:	55fd                	li	a1,-1
    e885388e:	0ce0c0ef          	jal	ra,e885f95c <strnicmpx>
    e8853892:	c119                	beqz	a0,e8853898 <_LogCategory_ApplyActions+0xb4>
	for( action = gLogActionList; action; action = action->next )
    e8853894:	6000                	ld	s0,0(s0)
    e8853896:	b761                	j	e885381e <_LogCategory_ApplyActions+0x3a>
		level = LUStringToLevel( action->value );
    e8853898:	6c08                	ld	a0,24(s0)
    e885389a:	e59ff0ef          	jal	ra,e88536f2 <LUStringToLevel>
    e885389e:	892a                	mv	s2,a0
		if( level == kLogLevelUninitialized ) continue;
    e88538a0:	57fd                	li	a5,-1
    e88538a2:	fef509e3          	beq	a0,a5,e8853894 <_LogCategory_ApplyActions+0xb0>
		for( category = gLogCategoryList; category; category = category->next )
    e88538a6:	000b3483          	ld	s1,0(s6)
    e88538aa:	d4ed                	beqz	s1,e8853894 <_LogCategory_ApplyActions+0xb0>
			if( inCategory && ( inCategory != category ) ) 		continue;
    e88538ac:	00098463          	beqz	s3,e88538b4 <_LogCategory_ApplyActions+0xd0>
    e88538b0:	01349963          	bne	s1,s3,e88538c2 <_LogCategory_ApplyActions+0xde>
			if( !RegexMatch( action->name, category->name ) )	continue;
    e88538b4:	6c8c                	ld	a1,24(s1)
    e88538b6:	6408                	ld	a0,8(s0)
    e88538b8:	5a00c0ef          	jal	ra,e885fe58 <RegexMatch>
    e88538bc:	c119                	beqz	a0,e88538c2 <_LogCategory_ApplyActions+0xde>
			category->level = level;
    e88538be:	0124a023          	sw	s2,0(s1)
		for( category = gLogCategoryList; category; category = category->next )
    e88538c2:	7884                	ld	s1,48(s1)
    e88538c4:	b7dd                	j	e88538aa <_LogCategory_ApplyActions+0xc6>
		if( strnicmpx( action->variable, SIZE_MAX, "flags" ) != 0 )
    e88538c6:	010b3503          	ld	a0,16(s6)
    e88538ca:	0006e617          	auipc	a2,0x6e
    e88538ce:	b0e60613          	addi	a2,a2,-1266 # e88c13d8 <__PRETTY_FUNCTION__.9824+0x90>
    e88538d2:	55fd                	li	a1,-1
    e88538d4:	0880c0ef          	jal	ra,e885f95c <strnicmpx>
    e88538d8:	c501                	beqz	a0,e88538e0 <_LogCategory_ApplyActions+0xfc>
	for( action = gLogActionList; action; action = action->next )
    e88538da:	000b3b03          	ld	s6,0(s6)
    e88538de:	bfb9                	j	e885383c <_LogCategory_ApplyActions+0x58>
		valueSrc = action->value;
    e88538e0:	018b3483          	ld	s1,24(s6)
		flags = 0;
    e88538e4:	4401                	li	s0,0
			for( valueTok = valueSrc; ( valueSrc < valueEnd ) && ( *valueSrc != ';' ); ++valueSrc ) {}
    e88538e6:	03b00d93          	li	s11,59
		valueEnd = valueSrc + strlen( valueSrc );
    e88538ea:	8526                	mv	a0,s1
    e88538ec:	22d280ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88538f0:	7c05350b          	extu	a0,a0,31,0
    e88538f4:	00a48bb3          	add	s7,s1,a0
		while( valueSrc < valueEnd )
    e88538f8:	0774e563          	bltu	s1,s7,e8853962 <_LogCategory_ApplyActions+0x17e>
		for( category = gLogCategoryList; category; category = category->next )
    e88538fc:	000d3903          	ld	s2,0(s10)
			if( flags & kLogFlags_PrintPrefix )
    e8853900:	02047493          	andi	s1,s0,32
    e8853904:	2481                	sext.w	s1,s1
		for( category = gLogCategoryList; category; category = category->next )
    e8853906:	fc090ae3          	beqz	s2,e88538da <_LogCategory_ApplyActions+0xf6>
			if( inCategory && ( inCategory != category ) ) 		continue;
    e885390a:	00098463          	beqz	s3,e8853912 <_LogCategory_ApplyActions+0x12e>
    e885390e:	05391263          	bne	s2,s3,e8853952 <_LogCategory_ApplyActions+0x16e>
			if( !RegexMatch( action->name, category->name ) )	continue;
    e8853912:	01893583          	ld	a1,24(s2)
    e8853916:	008b3503          	ld	a0,8(s6)
    e885391a:	53e0c0ef          	jal	ra,e885fe58 <RegexMatch>
    e885391e:	c915                	beqz	a0,e8853952 <_LogCategory_ApplyActions+0x16e>
			if( flags & kLogFlags_PrintPrefix )
    e8853920:	c49d                	beqz	s1,e885394e <_LogCategory_ApplyActions+0x16a>
				valueEnd = strchr( category->name, '_' );
    e8853922:	01893503          	ld	a0,24(s2)
    e8853926:	05f00593          	li	a1,95
    e885392a:	243280ef          	jal	ra,e887c36c <eLIBs_strchr>
				if( !valueEnd ) valueEnd = category->name + strlen( category->name );
    e885392e:	e909                	bnez	a0,e8853940 <_LogCategory_ApplyActions+0x15c>
    e8853930:	01893a03          	ld	s4,24(s2)
    e8853934:	8552                	mv	a0,s4
    e8853936:	1e3280ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885393a:	7c05350b          	extu	a0,a0,31,0
    e885393e:	9552                	add	a0,a0,s4
				category->prefixPtr = category->name;
    e8853940:	01893783          	ld	a5,24(s2)
				category->prefixLen = (int)( valueEnd - category->prefixPtr );
    e8853944:	8d1d                	sub	a0,a0,a5
				category->prefixPtr = category->name;
    e8853946:	02f93023          	sd	a5,32(s2)
				category->prefixLen = (int)( valueEnd - category->prefixPtr );
    e885394a:	02a92423          	sw	a0,40(s2)
			category->flags = flags;
    e885394e:	00892823          	sw	s0,16(s2)
		for( category = gLogCategoryList; category; category = category->next )
    e8853952:	03093903          	ld	s2,48(s2)
    e8853956:	bf45                	j	e8853906 <_LogCategory_ApplyActions+0x122>
			for( valueTok = valueSrc; ( valueSrc < valueEnd ) && ( *valueSrc != ';' ); ++valueSrc ) {}
    e8853958:	0905                	addi	s2,s2,1
    e885395a:	012b9563          	bne	s7,s2,e8853964 <_LogCategory_ApplyActions+0x180>
    e885395e:	895e                	mv	s2,s7
    e8853960:	a031                	j	e885396c <_LogCategory_ApplyActions+0x188>
    e8853962:	8926                	mv	s2,s1
    e8853964:	00094783          	lbu	a5,0(s2)
    e8853968:	ffb798e3          	bne	a5,s11,e8853958 <_LogCategory_ApplyActions+0x174>
			valueLen = (size_t)( valueSrc - valueTok );
    e885396c:	40990a33          	sub	s4,s2,s1
			if( valueSrc < valueEnd ) ++valueSrc;
    e8853970:	01797363          	bgeu	s2,s7,e8853976 <_LogCategory_ApplyActions+0x192>
    e8853974:	0905                	addi	s2,s2,1
			if(      strnicmpx( valueTok, valueLen, "none" )		== 0 ) flags  = kLogFlags_None;
    e8853976:	0006e617          	auipc	a2,0x6e
    e885397a:	a6a60613          	addi	a2,a2,-1430 # e88c13e0 <__PRETTY_FUNCTION__.9824+0x98>
    e885397e:	85d2                	mv	a1,s4
    e8853980:	8526                	mv	a0,s1
    e8853982:	7db0b0ef          	jal	ra,e885f95c <strnicmpx>
    e8853986:	c145                	beqz	a0,e8853a26 <_LogCategory_ApplyActions+0x242>
			else if( strnicmpx( valueTok, valueLen, "time" )		== 0 ) flags |= kLogFlags_PrintTime;
    e8853988:	0006e617          	auipc	a2,0x6e
    e885398c:	a6060613          	addi	a2,a2,-1440 # e88c13e8 <__PRETTY_FUNCTION__.9824+0xa0>
    e8853990:	85d2                	mv	a1,s4
    e8853992:	8526                	mv	a0,s1
    e8853994:	7c90b0ef          	jal	ra,e885f95c <strnicmpx>
    e8853998:	e509                	bnez	a0,e88539a2 <_LogCategory_ApplyActions+0x1be>
    e885399a:	00146413          	ori	s0,s0,1
			if(      strnicmpx( valueTok, valueLen, "none" )		== 0 ) flags  = kLogFlags_None;
    e885399e:	84ca                	mv	s1,s2
    e88539a0:	bfa1                	j	e88538f8 <_LogCategory_ApplyActions+0x114>
			else if( strnicmpx( valueTok, valueLen, "pid" )			== 0 ) flags |= kLogFlags_PrintPID;
    e88539a2:	0006e617          	auipc	a2,0x6e
    e88539a6:	a4e60613          	addi	a2,a2,-1458 # e88c13f0 <__PRETTY_FUNCTION__.9824+0xa8>
    e88539aa:	85d2                	mv	a1,s4
    e88539ac:	8526                	mv	a0,s1
    e88539ae:	7af0b0ef          	jal	ra,e885f95c <strnicmpx>
    e88539b2:	e501                	bnez	a0,e88539ba <_LogCategory_ApplyActions+0x1d6>
    e88539b4:	00246413          	ori	s0,s0,2
    e88539b8:	b7dd                	j	e885399e <_LogCategory_ApplyActions+0x1ba>
			else if( strnicmpx( valueTok, valueLen, "program" )		== 0 ) flags |= kLogFlags_PrintProgram;
    e88539ba:	0006e617          	auipc	a2,0x6e
    e88539be:	a3e60613          	addi	a2,a2,-1474 # e88c13f8 <__PRETTY_FUNCTION__.9824+0xb0>
    e88539c2:	85d2                	mv	a1,s4
    e88539c4:	8526                	mv	a0,s1
    e88539c6:	7970b0ef          	jal	ra,e885f95c <strnicmpx>
    e88539ca:	e501                	bnez	a0,e88539d2 <_LogCategory_ApplyActions+0x1ee>
    e88539cc:	00446413          	ori	s0,s0,4
    e88539d0:	b7f9                	j	e885399e <_LogCategory_ApplyActions+0x1ba>
			else if( strnicmpx( valueTok, valueLen, "category" )	== 0 ) flags |= kLogFlags_PrintCategory;
    e88539d2:	8662                	mv	a2,s8
    e88539d4:	85d2                	mv	a1,s4
    e88539d6:	8526                	mv	a0,s1
    e88539d8:	7850b0ef          	jal	ra,e885f95c <strnicmpx>
    e88539dc:	e501                	bnez	a0,e88539e4 <_LogCategory_ApplyActions+0x200>
    e88539de:	00846413          	ori	s0,s0,8
    e88539e2:	bf75                	j	e885399e <_LogCategory_ApplyActions+0x1ba>
			else if( strnicmpx( valueTok, valueLen, "level" )		== 0 ) flags |= kLogFlags_PrintLevel;
    e88539e4:	8666                	mv	a2,s9
    e88539e6:	85d2                	mv	a1,s4
    e88539e8:	8526                	mv	a0,s1
    e88539ea:	7730b0ef          	jal	ra,e885f95c <strnicmpx>
    e88539ee:	e501                	bnez	a0,e88539f6 <_LogCategory_ApplyActions+0x212>
    e88539f0:	01046413          	ori	s0,s0,16
    e88539f4:	b76d                	j	e885399e <_LogCategory_ApplyActions+0x1ba>
			else if( strnicmpx( valueTok, valueLen, "prefix" )		== 0 ) flags |= kLogFlags_PrintPrefix;
    e88539f6:	0006e617          	auipc	a2,0x6e
    e88539fa:	a1a60613          	addi	a2,a2,-1510 # e88c1410 <__PRETTY_FUNCTION__.9824+0xc8>
    e88539fe:	85d2                	mv	a1,s4
    e8853a00:	8526                	mv	a0,s1
    e8853a02:	75b0b0ef          	jal	ra,e885f95c <strnicmpx>
    e8853a06:	e501                	bnez	a0,e8853a0e <_LogCategory_ApplyActions+0x22a>
    e8853a08:	02046413          	ori	s0,s0,32
    e8853a0c:	bf49                	j	e885399e <_LogCategory_ApplyActions+0x1ba>
			else if( strnicmpx( valueTok, valueLen, "function" )	== 0 ) flags |= kLogFlags_PrintFunction;
    e8853a0e:	0006e617          	auipc	a2,0x6e
    e8853a12:	a0a60613          	addi	a2,a2,-1526 # e88c1418 <__PRETTY_FUNCTION__.9824+0xd0>
    e8853a16:	85d2                	mv	a1,s4
    e8853a18:	8526                	mv	a0,s1
    e8853a1a:	7430b0ef          	jal	ra,e885f95c <strnicmpx>
    e8853a1e:	f141                	bnez	a0,e885399e <_LogCategory_ApplyActions+0x1ba>
    e8853a20:	04046413          	ori	s0,s0,64
    e8853a24:	bfad                	j	e885399e <_LogCategory_ApplyActions+0x1ba>
			if(      strnicmpx( valueTok, valueLen, "none" )		== 0 ) flags  = kLogFlags_None;
    e8853a26:	4401                	li	s0,0
    e8853a28:	bf9d                	j	e885399e <_LogCategory_ApplyActions+0x1ba>
		if( strnicmpx( action->variable, SIZE_MAX, "rate" ) != 0 )
    e8853a2a:	010cb503          	ld	a0,16(s9)
    e8853a2e:	8652                	mv	a2,s4
    e8853a30:	55fd                	li	a1,-1
    e8853a32:	72b0b0ef          	jal	ra,e885f95c <strnicmpx>
    e8853a36:	c501                	beqz	a0,e8853a3e <_LogCategory_ApplyActions+0x25a>
	for( action = gLogActionList; action; action = action->next )
    e8853a38:	000cbc83          	ld	s9,0(s9)
    e8853a3c:	bd39                	j	e885385a <_LogCategory_ApplyActions+0x76>
		valueSrc = action->value;
    e8853a3e:	018cb403          	ld	s0,24(s9)
		maxCount = 0;
    e8853a42:	4d01                	li	s10,0
		valueEnd = valueSrc + strlen( valueSrc );
    e8853a44:	8522                	mv	a0,s0
    e8853a46:	0d3280ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8853a4a:	7c05350b          	extu	a0,a0,31,0
    e8853a4e:	9522                	add	a0,a0,s0
		for( ; ( valueSrc < valueEnd ) && isdigit_safe( *valueSrc ); ++valueSrc )
    e8853a50:	06a47763          	bgeu	s0,a0,e8853abe <_LogCategory_ApplyActions+0x2da>
    e8853a54:	9814478b          	lbuia	a5,(s0),1,0
    e8853a58:	fd07871b          	addiw	a4,a5,-48
    e8853a5c:	0ff77713          	andi	a4,a4,255
    e8853a60:	04e97563          	bgeu	s2,a4,e8853aaa <_LogCategory_ApplyActions+0x2c6>
    e8853a64:	4781                	li	a5,0
		for( ; ( valueSrc < valueEnd ) && isdigit_safe( *valueSrc ); ++valueSrc )
    e8853a66:	00a47a63          	bgeu	s0,a0,e8853a7a <_LogCategory_ApplyActions+0x296>
    e8853a6a:	00044703          	lbu	a4,0(s0)
    e8853a6e:	fd07071b          	addiw	a4,a4,-48
    e8853a72:	0ff77693          	andi	a3,a4,255
    e8853a76:	02d97f63          	bgeu	s2,a3,e8853ab4 <_LogCategory_ApplyActions+0x2d0>
		intervalTicks = ( UpTicksPerSecond() * intervalTicks ) / 1000;
    e8853a7a:	3e800413          	li	s0,1000
    e8853a7e:	028787b3          	mul	a5,a5,s0
		for( category = gLogCategoryList; category; category = category->next )
    e8853a82:	000bb483          	ld	s1,0(s7)
		intervalTicks = ( UpTicksPerSecond() * intervalTicks ) / 1000;
    e8853a86:	0287d433          	divu	s0,a5,s0
		for( category = gLogCategoryList; category; category = category->next )
    e8853a8a:	d4dd                	beqz	s1,e8853a38 <_LogCategory_ApplyActions+0x254>
			if( inCategory && ( inCategory != category ) ) 		continue;
    e8853a8c:	00098463          	beqz	s3,e8853a94 <_LogCategory_ApplyActions+0x2b0>
    e8853a90:	01349b63          	bne	s1,s3,e8853aa6 <_LogCategory_ApplyActions+0x2c2>
			if( !RegexMatch( action->name, category->name ) )	continue;
    e8853a94:	6c8c                	ld	a1,24(s1)
    e8853a96:	008cb503          	ld	a0,8(s9)
    e8853a9a:	3be0c0ef          	jal	ra,e885fe58 <RegexMatch>
    e8853a9e:	c501                	beqz	a0,e8853aa6 <_LogCategory_ApplyActions+0x2c2>
			category->rateInterval = intervalTicks;
    e8853aa0:	e4a0                	sd	s0,72(s1)
			category->rateMaxCount = maxCount;
    e8853aa2:	05a4ac23          	sw	s10,88(s1)
		for( category = gLogCategoryList; category; category = category->next )
    e8853aa6:	7884                	ld	s1,48(s1)
    e8853aa8:	b7cd                	j	e8853a8a <_LogCategory_ApplyActions+0x2a6>
			maxCount = ( maxCount * 10 ) + ( *valueSrc - '0' );
    e8853aaa:	25ab178b          	mulaw	a5,s6,s10
    e8853aae:	fd078d1b          	addiw	s10,a5,-48
		for( ; ( valueSrc < valueEnd ) && isdigit_safe( *valueSrc ); ++valueSrc )
    e8853ab2:	bf79                	j	e8853a50 <_LogCategory_ApplyActions+0x26c>
			intervalTicks = ( intervalTicks * 10 ) + ( *valueSrc - '0' );
    e8853ab4:	2187970b          	mula	a4,a5,s8
		for( ; ( valueSrc < valueEnd ) && isdigit_safe( *valueSrc ); ++valueSrc )
    e8853ab8:	0405                	addi	s0,s0,1
			intervalTicks = ( intervalTicks * 10 ) + ( *valueSrc - '0' );
    e8853aba:	87ba                	mv	a5,a4
		for( ; ( valueSrc < valueEnd ) && isdigit_safe( *valueSrc ); ++valueSrc )
    e8853abc:	b76d                	j	e8853a66 <_LogCategory_ApplyActions+0x282>
    e8853abe:	4781                	li	a5,0
    e8853ac0:	bf6d                	j	e8853a7a <_LogCategory_ApplyActions+0x296>
		if(      strnicmpx( action->variable, SIZE_MAX, "output" )  == 0 ) outputID = 1;
    e8853ac2:	6888                	ld	a0,16(s1)
    e8853ac4:	8652                	mv	a2,s4
    e8853ac6:	55fd                	li	a1,-1
    e8853ac8:	6950b0ef          	jal	ra,e885f95c <strnicmpx>
    e8853acc:	c909                	beqz	a0,e8853ade <_LogCategory_ApplyActions+0x2fa>
		else if( strnicmpx( action->variable, SIZE_MAX, "output2" ) == 0 ) outputID = 2;
    e8853ace:	6888                	ld	a0,16(s1)
    e8853ad0:	865e                	mv	a2,s7
    e8853ad2:	55fd                	li	a1,-1
    e8853ad4:	6890b0ef          	jal	ra,e885f95c <strnicmpx>
    e8853ad8:	c539                	beqz	a0,e8853b26 <_LogCategory_ApplyActions+0x342>
	for( action = gLogActionList; action; action = action->next )
    e8853ada:	6084                	ld	s1,0(s1)
    e8853adc:	b345                	j	e885387c <_LogCategory_ApplyActions+0x98>
		if(      strnicmpx( action->variable, SIZE_MAX, "output" )  == 0 ) outputID = 1;
    e8853ade:	4905                	li	s2,1
		for( category = gLogCategoryList; category; category = category->next )
    e8853ae0:	000ab403          	ld	s0,0(s5)
    e8853ae4:	d87d                	beqz	s0,e8853ada <_LogCategory_ApplyActions+0x2f6>
			if( inCategory && ( inCategory != category ) ) 		continue;
    e8853ae6:	00098463          	beqz	s3,e8853aee <_LogCategory_ApplyActions+0x30a>
    e8853aea:	07341263          	bne	s0,s3,e8853b4e <_LogCategory_ApplyActions+0x36a>
			if( !RegexMatch( action->name, category->name ) )	continue;
    e8853aee:	6c0c                	ld	a1,24(s0)
    e8853af0:	6488                	ld	a0,8(s1)
    e8853af2:	3660c0ef          	jal	ra,e885fe58 <RegexMatch>
    e8853af6:	cd21                	beqz	a0,e8853b4e <_LogCategory_ApplyActions+0x36a>
			err = _LogCategory_ApplyAction_Output( category, outputID, action );
    e8853af8:	6c88                	ld	a0,24(s1)
	if( *inAction->value != '\0' )
    e8853afa:	00054783          	lbu	a5,0(a0)
    e8853afe:	c795                	beqz	a5,e8853b2a <_LogCategory_ApplyActions+0x346>
		err = _LogOutputCreate( inAction->value, &newOutput );
    e8853b00:	002c                	addi	a1,sp,8
    e8853b02:	9f1ff0ef          	jal	ra,e88534f2 <_LogOutputCreate>
		require_noerr_quiet( err, exit );
    e8853b06:	c11d                	beqz	a0,e8853b2c <_LogCategory_ApplyActions+0x348>
}
    e8853b08:	70e6                	ld	ra,120(sp)
    e8853b0a:	7446                	ld	s0,112(sp)
    e8853b0c:	74a6                	ld	s1,104(sp)
    e8853b0e:	7906                	ld	s2,96(sp)
    e8853b10:	69e6                	ld	s3,88(sp)
    e8853b12:	6a46                	ld	s4,80(sp)
    e8853b14:	6aa6                	ld	s5,72(sp)
    e8853b16:	6b06                	ld	s6,64(sp)
    e8853b18:	7be2                	ld	s7,56(sp)
    e8853b1a:	7c42                	ld	s8,48(sp)
    e8853b1c:	7ca2                	ld	s9,40(sp)
    e8853b1e:	7d02                	ld	s10,32(sp)
    e8853b20:	6de2                	ld	s11,24(sp)
    e8853b22:	6109                	addi	sp,sp,128
    e8853b24:	8082                	ret
		else if( strnicmpx( action->variable, SIZE_MAX, "output2" ) == 0 ) outputID = 2;
    e8853b26:	4909                	li	s2,2
    e8853b28:	bf65                	j	e8853ae0 <_LogCategory_ApplyActions+0x2fc>
		newOutput = NULL;
    e8853b2a:	e402                	sd	zero,8(sp)
	if(      inOutputID == 1 ) outputAddr = &inCategory->output1;
    e8853b2c:	03691363          	bne	s2,s6,e8853b52 <_LogCategory_ApplyActions+0x36e>
    e8853b30:	7c18                	ld	a4,56(s0)
    e8853b32:	03840613          	addi	a2,s0,56
	if( oldOutput != newOutput )
    e8853b36:	67a2                	ld	a5,8(sp)
    e8853b38:	00f70b63          	beq	a4,a5,e8853b4e <_LogCategory_ApplyActions+0x36a>
		if( oldOutput ) --oldOutput->refCount;
    e8853b3c:	c701                	beqz	a4,e8853b44 <_LogCategory_ApplyActions+0x360>
    e8853b3e:	4714                	lw	a3,8(a4)
    e8853b40:	36fd                	addiw	a3,a3,-1
    e8853b42:	c714                	sw	a3,8(a4)
		if( newOutput ) ++newOutput->refCount;
    e8853b44:	c781                	beqz	a5,e8853b4c <_LogCategory_ApplyActions+0x368>
    e8853b46:	4798                	lw	a4,8(a5)
    e8853b48:	2705                	addiw	a4,a4,1
    e8853b4a:	c798                	sw	a4,8(a5)
		*outputAddr = newOutput;
    e8853b4c:	e21c                	sd	a5,0(a2)
		for( category = gLogCategoryList; category; category = category->next )
    e8853b4e:	7800                	ld	s0,48(s0)
    e8853b50:	bf51                	j	e8853ae4 <_LogCategory_ApplyActions+0x300>
	else if( inOutputID == 2 ) outputAddr = &inCategory->output2;
    e8853b52:	04040613          	addi	a2,s0,64
    e8853b56:	6038                	ld	a4,64(s0)
    e8853b58:	bff9                	j	e8853b36 <_LogCategory_ApplyActions+0x352>

00000000e8853b5a <_LogControlLocked>:
{
    e8853b5a:	7135                	addi	sp,sp,-160
    e8853b5c:	ed06                	sd	ra,152(sp)
    e8853b5e:	e922                	sd	s0,144(sp)
    e8853b60:	e526                	sd	s1,136(sp)
    e8853b62:	e14a                	sd	s2,128(sp)
    e8853b64:	fcce                	sd	s3,120(sp)
    e8853b66:	f8d2                	sd	s4,112(sp)
    e8853b68:	f4d6                	sd	s5,104(sp)
    e8853b6a:	f0da                	sd	s6,96(sp)
    e8853b6c:	ecde                	sd	s7,88(sp)
    e8853b6e:	e8e2                	sd	s8,80(sp)
    e8853b70:	e4e6                	sd	s9,72(sp)
    e8853b72:	e0ea                	sd	s10,64(sp)
    e8853b74:	fc6e                	sd	s11,56(sp)
	if( inCmd )
    e8853b76:	c979                	beqz	a0,e8853c4c <_LogControlLocked+0xf2>
		isDefault = ( *inCmd == '?' );
    e8853b78:	00054703          	lbu	a4,0(a0)
		if( isDefault ) ++inCmd;
    e8853b7c:	03f00793          	li	a5,63
    e8853b80:	842a                	mv	s0,a0
    e8853b82:	8c2e                	mv	s8,a1
    e8853b84:	00f71463          	bne	a4,a5,e8853b8c <_LogControlLocked+0x32>
    e8853b88:	00150413          	addi	s0,a0,1
		persist = ( *inCmd == '+' );
    e8853b8c:	00044783          	lbu	a5,0(s0)
    e8853b90:	02b00693          	li	a3,43
    e8853b94:	fd578a13          	addi	s4,a5,-43
    e8853b98:	001a3a13          	seqz	s4,s4
		if( persist ) ++inCmd;
    e8853b9c:	00d79363          	bne	a5,a3,e8853ba2 <_LogControlLocked+0x48>
    e8853ba0:	0405                	addi	s0,s0,1
		if( inFlags & kLogControlFlags_FromPrefs )
    e8853ba2:	002c7693          	andi	a3,s8,2
    e8853ba6:	2681                	sext.w	a3,a3
    e8853ba8:	e436                	sd	a3,8(sp)
    e8853baa:	eab9                	bnez	a3,e8853c00 <_LogControlLocked+0xa6>
		if( isDefault && persist )
    e8853bac:	03f00693          	li	a3,63
    e8853bb0:	04d71963          	bne	a4,a3,e8853c02 <_LogControlLocked+0xa8>
    e8853bb4:	02b00713          	li	a4,43
    e8853bb8:	08e79763          	bne	a5,a4,e8853c46 <_LogControlLocked+0xec>
				appID = gLogCFPrefsAppID ? gLogCFPrefsAppID : kCFPreferencesCurrentApplication;
    e8853bbc:	00090797          	auipc	a5,0x90
    e8853bc0:	13478793          	addi	a5,a5,308 # e88e3cf0 <gLogCFPrefsAppID>
    e8853bc4:	6390                	ld	a2,0(a5)
    e8853bc6:	e609                	bnez	a2,e8853bd0 <_LogControlLocked+0x76>
    e8853bc8:	0004a617          	auipc	a2,0x4a
    e8853bcc:	80860613          	addi	a2,a2,-2040 # e889d3d0 <icmp6_param_problem+0x362>
				CFPreferencesSetAppValue( CFSTR( kLogUtilsKey_LogConfig ), NULL, appID );
    e8853bd0:	4581                	li	a1,0
    e8853bd2:	0004a517          	auipc	a0,0x4a
    e8853bd6:	82e50513          	addi	a0,a0,-2002 # e889d400 <icmp6_param_problem+0x392>
    e8853bda:	854f70ef          	jal	ra,e884ac2e <CFPreferencesSetAppValue_compat>
		err = kNoErr;
    e8853bde:	4401                	li	s0,0
}
    e8853be0:	8522                	mv	a0,s0
    e8853be2:	60ea                	ld	ra,152(sp)
    e8853be4:	644a                	ld	s0,144(sp)
    e8853be6:	64aa                	ld	s1,136(sp)
    e8853be8:	690a                	ld	s2,128(sp)
    e8853bea:	79e6                	ld	s3,120(sp)
    e8853bec:	7a46                	ld	s4,112(sp)
    e8853bee:	7aa6                	ld	s5,104(sp)
    e8853bf0:	7b06                	ld	s6,96(sp)
    e8853bf2:	6be6                	ld	s7,88(sp)
    e8853bf4:	6c46                	ld	s8,80(sp)
    e8853bf6:	6ca6                	ld	s9,72(sp)
    e8853bf8:	6d06                	ld	s10,64(sp)
    e8853bfa:	7de2                	ld	s11,56(sp)
    e8853bfc:	610d                	addi	sp,sp,160
    e8853bfe:	8082                	ret
			persist   = false;
    e8853c00:	4a01                	li	s4,0
		isDefault = ( *inCmd == '?' );
    e8853c02:	4b01                	li	s6,0
	if( !inCmd || ( *inCmd == '\0' ) )
    e8853c04:	e439                	bnez	s0,e8853c52 <_LogControlLocked+0xf8>
		while( ( action = gLogActionList ) != NULL )
    e8853c06:	00090417          	auipc	s0,0x90
    e8853c0a:	0d240413          	addi	s0,s0,210 # e88e3cd8 <gLogActionList>
    e8853c0e:	6008                	ld	a0,0(s0)
    e8853c10:	e151                	bnez	a0,e8853c94 <_LogControlLocked+0x13a>
			if( !isDefault && persist )
    e8853c12:	fc0b16e3          	bnez	s6,e8853bde <_LogControlLocked+0x84>
    e8853c16:	fc0a04e3          	beqz	s4,e8853bde <_LogControlLocked+0x84>
				appID = gLogCFPrefsAppID ? gLogCFPrefsAppID : kCFPreferencesCurrentApplication;
    e8853c1a:	00090797          	auipc	a5,0x90
    e8853c1e:	0d678793          	addi	a5,a5,214 # e88e3cf0 <gLogCFPrefsAppID>
    e8853c22:	6380                	ld	s0,0(a5)
    e8853c24:	e409                	bnez	s0,e8853c2e <_LogControlLocked+0xd4>
    e8853c26:	00049417          	auipc	s0,0x49
    e8853c2a:	7aa40413          	addi	s0,s0,1962 # e889d3d0 <icmp6_param_problem+0x362>
				CFPreferencesSetAppValue( CFSTR( kLogUtilsKey_LogConfig ), NULL, appID );
    e8853c2e:	8622                	mv	a2,s0
    e8853c30:	4581                	li	a1,0
    e8853c32:	00049517          	auipc	a0,0x49
    e8853c36:	7ce50513          	addi	a0,a0,1998 # e889d400 <icmp6_param_problem+0x392>
    e8853c3a:	ff5f60ef          	jal	ra,e884ac2e <CFPreferencesSetAppValue_compat>
				CFPreferencesAppSynchronize( appID );
    e8853c3e:	8522                	mv	a0,s0
    e8853c40:	900f70ef          	jal	ra,e884ad40 <CFPreferencesAppSynchronize_compat>
    e8853c44:	bf69                	j	e8853bde <_LogControlLocked+0x84>
    e8853c46:	4a01                	li	s4,0
		isDefault = ( *inCmd == '?' );
    e8853c48:	4b05                	li	s6,1
    e8853c4a:	bf6d                	j	e8853c04 <_LogControlLocked+0xaa>
	int					persist   = false;
    e8853c4c:	4a01                	li	s4,0
	int					isDefault = false;
    e8853c4e:	4b01                	li	s6,0
    e8853c50:	bf5d                	j	e8853c06 <_LogControlLocked+0xac>
	if( !inCmd || ( *inCmd == '\0' ) )
    e8853c52:	00044783          	lbu	a5,0(s0)
    e8853c56:	dbc5                	beqz	a5,e8853c06 <_LogControlLocked+0xac>
		if( !( inFlags & kLogControlFlags_Internal ) && 
    e8853c58:	001c7793          	andi	a5,s8,1
    e8853c5c:	8ba2                	mv	s7,s0
    e8853c5e:	ec3e                	sd	a5,24(sp)
		while( ( ( c = *inCmd ) != '\0' ) && ( c != ':' ) ) ++inCmd;
    e8853c60:	00044783          	lbu	a5,0(s0)
    e8853c64:	26078163          	beqz	a5,e8853ec6 <_LogControlLocked+0x36c>
    e8853c68:	00140993          	addi	s3,s0,1
    e8853c6c:	03a00713          	li	a4,58
    e8853c70:	84ce                	mv	s1,s3
		++inCmd;
    e8853c72:	894e                	mv	s2,s3
		while( ( ( c = *inCmd ) != '\0' ) && ( c != ':' ) ) ++inCmd;
    e8853c74:	02e79663          	bne	a5,a4,e8853ca0 <_LogControlLocked+0x146>
		while( ( ( c = *inCmd ) != '\0' ) && ( c != '=' ) ) ++inCmd;
    e8853c78:	00094783          	lbu	a5,0(s2)
    e8853c7c:	24078563          	beqz	a5,e8853ec6 <_LogControlLocked+0x36c>
    e8853c80:	03d00713          	li	a4,61
    e8853c84:	00190a93          	addi	s5,s2,1
    e8853c88:	00e79e63          	bne	a5,a4,e8853ca4 <_LogControlLocked+0x14a>
		variableLen = (size_t)( inCmd - variablePtr );
    e8853c8c:	41390933          	sub	s2,s2,s3
		while( ( ( c = *inCmd ) != '\0' ) && ( c != ',' ) ) ++inCmd;
    e8853c90:	84d6                	mv	s1,s5
    e8853c92:	a821                	j	e8853caa <_LogControlLocked+0x150>
			gLogActionList = action->next;
    e8853c94:	611c                	ld	a5,0(a0)
    e8853c96:	e01c                	sd	a5,0(s0)
			_LogUtils_FreeAction( action );
    e8853c98:	e98ff0ef          	jal	ra,e8853330 <_LogUtils_FreeAction>
    e8853c9c:	bf8d                	j	e8853c0e <_LogControlLocked+0xb4>
    e8853c9e:	8ba6                	mv	s7,s1
    e8853ca0:	8426                	mv	s0,s1
    e8853ca2:	bf7d                	j	e8853c60 <_LogControlLocked+0x106>
    e8853ca4:	8956                	mv	s2,s5
    e8853ca6:	bfc9                	j	e8853c78 <_LogControlLocked+0x11e>
		while( ( ( c = *inCmd ) != '\0' ) && ( c != ',' ) ) ++inCmd;
    e8853ca8:	0485                	addi	s1,s1,1
    e8853caa:	0004c783          	lbu	a5,0(s1)
    e8853cae:	c789                	beqz	a5,e8853cb8 <_LogControlLocked+0x15e>
    e8853cb0:	02c00713          	li	a4,44
    e8853cb4:	fee79ae3          	bne	a5,a4,e8853ca8 <_LogControlLocked+0x14e>
		valueLen = (size_t)( inCmd - valuePtr );
    e8853cb8:	41548733          	sub	a4,s1,s5
    e8853cbc:	e83a                	sd	a4,16(sp)
		if( c == ',' ) ++inCmd;
    e8853cbe:	02c00713          	li	a4,44
    e8853cc2:	00e79363          	bne	a5,a4,e8853cc8 <_LogControlLocked+0x16e>
    e8853cc6:	0485                	addi	s1,s1,1
		if( !( inFlags & kLogControlFlags_Internal ) && 
    e8853cc8:	67e2                	ld	a5,24(sp)
    e8853cca:	cb8d                	beqz	a5,e8853cfc <_LogControlLocked+0x1a2>
		nameLen = (size_t)( inCmd - namePtr );
    e8853ccc:	41740433          	sub	s0,s0,s7
    e8853cd0:	00090c97          	auipc	s9,0x90
    e8853cd4:	008c8c93          	addi	s9,s9,8 # e88e3cd8 <gLogActionList>
		for( actionNext = &gLogActionList; ( action = *actionNext ) != NULL; actionNext = &action->next )
    e8853cd8:	000cbd83          	ld	s11,0(s9)
    e8853cdc:	060d9f63          	bnez	s11,e8853d5a <_LogControlLocked+0x200>
    p = malloc(len);
    e8853ce0:	02000513          	li	a0,32
    e8853ce4:	36b270ef          	jal	ra,e887b84e <my_malloc>
    e8853ce8:	8daa                	mv	s11,a0
    memset(p,0,len);
    e8853cea:	02000613          	li	a2,32
    e8853cee:	4581                	li	a1,0
    e8853cf0:	6a4280ef          	jal	ra,e887c394 <eLIBs_memset>
			require_action_quiet( actionNew, exit, err = kNoMemoryErr );
    e8853cf4:	1c0d8d63          	beqz	s11,e8853ece <_LogControlLocked+0x374>
    e8853cf8:	8d6e                	mv	s10,s11
    e8853cfa:	a049                	j	e8853d7c <_LogControlLocked+0x222>
			( ( strnicmpx( variablePtr, variableLen, "output" )  == 0 ) || 
    e8853cfc:	0006d617          	auipc	a2,0x6d
    e8853d00:	73460613          	addi	a2,a2,1844 # e88c1430 <__PRETTY_FUNCTION__.9824+0xe8>
    e8853d04:	85ca                	mv	a1,s2
    e8853d06:	854e                	mv	a0,s3
    e8853d08:	4550b0ef          	jal	ra,e885f95c <strnicmpx>
		if( !( inFlags & kLogControlFlags_Internal ) && 
    e8853d0c:	ed0d                	bnez	a0,e8853d46 <_LogControlLocked+0x1ec>
			( strnicmp_prefix( valuePtr, valueLen, "callback" ) == 0 ) )
    e8853d0e:	65c2                	ld	a1,16(sp)
    e8853d10:	0006d617          	auipc	a2,0x6d
    e8853d14:	74860613          	addi	a2,a2,1864 # e88c1458 <__PRETTY_FUNCTION__.9824+0x110>
    e8853d18:	8556                	mv	a0,s5
    e8853d1a:	3b30b0ef          	jal	ra,e885f8cc <strnicmp_prefix>
			  ( strnicmpx( variablePtr, variableLen, "output2" ) == 0 ) ) &&
    e8853d1e:	f55d                	bnez	a0,e8853ccc <_LogControlLocked+0x172>
	while( *inCmd != '\0' )
    e8853d20:	0004c783          	lbu	a5,0(s1)
    e8853d24:	ffad                	bnez	a5,e8853c9e <_LogControlLocked+0x144>
	err = _LogCategory_ApplyActions( NULL );
    e8853d26:	4501                	li	a0,0
    e8853d28:	abdff0ef          	jal	ra,e88537e4 <_LogCategory_ApplyActions>
    e8853d2c:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e8853d2e:	ea0519e3          	bnez	a0,e8853be0 <_LogControlLocked+0x86>
	if( !( inFlags & kLogControlFlags_FromPrefs ) )
    e8853d32:	67a2                	ld	a5,8(sp)
    e8853d34:	ea0795e3          	bnez	a5,e8853bde <_LogControlLocked+0x84>
		if( isDefault )		_LogUtils_ReadCFPreferences( inFlags | kLogControlFlags_Defaults );
    e8853d38:	080b0563          	beqz	s6,e8853dc2 <_LogControlLocked+0x268>
    e8853d3c:	004c6513          	ori	a0,s8,4
    e8853d40:	222000ef          	jal	ra,e8853f62 <_LogUtils_ReadCFPreferences>
    e8853d44:	bd71                	j	e8853be0 <_LogControlLocked+0x86>
			  ( strnicmpx( variablePtr, variableLen, "output2" ) == 0 ) ) &&
    e8853d46:	0006d617          	auipc	a2,0x6d
    e8853d4a:	6f260613          	addi	a2,a2,1778 # e88c1438 <__PRETTY_FUNCTION__.9824+0xf0>
    e8853d4e:	85ca                	mv	a1,s2
    e8853d50:	854e                	mv	a0,s3
    e8853d52:	40b0b0ef          	jal	ra,e885f95c <strnicmpx>
			( ( strnicmpx( variablePtr, variableLen, "output" )  == 0 ) || 
    e8853d56:	dd45                	beqz	a0,e8853d0e <_LogControlLocked+0x1b4>
    e8853d58:	bf95                	j	e8853ccc <_LogControlLocked+0x172>
			if( ( strnicmpx( namePtr,		nameLen,		action->name )		== 0 ) && 
    e8853d5a:	008db603          	ld	a2,8(s11)
    e8853d5e:	85a2                	mv	a1,s0
    e8853d60:	855e                	mv	a0,s7
    e8853d62:	3fb0b0ef          	jal	ra,e885f95c <strnicmpx>
    e8853d66:	c119                	beqz	a0,e8853d6c <_LogControlLocked+0x212>
		for( actionNext = &gLogActionList; ( action = *actionNext ) != NULL; actionNext = &action->next )
    e8853d68:	8cee                	mv	s9,s11
    e8853d6a:	b7bd                	j	e8853cd8 <_LogControlLocked+0x17e>
				( strnicmpx( variablePtr,	variableLen,	action->variable )	== 0 ) )
    e8853d6c:	010db603          	ld	a2,16(s11)
    e8853d70:	85ca                	mv	a1,s2
    e8853d72:	854e                	mv	a0,s3
    e8853d74:	3e90b0ef          	jal	ra,e885f95c <strnicmpx>
			if( ( strnicmpx( namePtr,		nameLen,		action->name )		== 0 ) && 
    e8853d78:	f965                	bnez	a0,e8853d68 <_LogControlLocked+0x20e>
    e8853d7a:	4d01                	li	s10,0
		err = ReplaceString( &action->name, NULL, namePtr, nameLen );
    e8853d7c:	86a2                	mv	a3,s0
    e8853d7e:	865e                	mv	a2,s7
    e8853d80:	4581                	li	a1,0
    e8853d82:	008d8513          	addi	a0,s11,8
    e8853d86:	1160c0ef          	jal	ra,e885fe9c <ReplaceString>
    e8853d8a:	842a                	mv	s0,a0
		require_noerr_quiet( err, exit );
    e8853d8c:	12051763          	bnez	a0,e8853eba <_LogControlLocked+0x360>
		err = ReplaceString( &action->variable, NULL, variablePtr, variableLen );
    e8853d90:	86ca                	mv	a3,s2
    e8853d92:	864e                	mv	a2,s3
    e8853d94:	4581                	li	a1,0
    e8853d96:	010d8513          	addi	a0,s11,16
    e8853d9a:	1020c0ef          	jal	ra,e885fe9c <ReplaceString>
    e8853d9e:	842a                	mv	s0,a0
		require_noerr_quiet( err, exit );
    e8853da0:	10051d63          	bnez	a0,e8853eba <_LogControlLocked+0x360>
		err = ReplaceString( &action->value, NULL, valuePtr, valueLen );
    e8853da4:	66c2                	ld	a3,16(sp)
    e8853da6:	8656                	mv	a2,s5
    e8853da8:	4581                	li	a1,0
    e8853daa:	018d8513          	addi	a0,s11,24
    e8853dae:	0ee0c0ef          	jal	ra,e885fe9c <ReplaceString>
    e8853db2:	842a                	mv	s0,a0
		require_noerr_quiet( err, exit );
    e8853db4:	10051363          	bnez	a0,e8853eba <_LogControlLocked+0x360>
		if( actionNew )
    e8853db8:	f60d04e3          	beqz	s10,e8853d20 <_LogControlLocked+0x1c6>
			*actionNext = actionNew;
    e8853dbc:	01acb023          	sd	s10,0(s9)
			actionNew = NULL;
    e8853dc0:	b785                	j	e8853d20 <_LogControlLocked+0x1c6>
		else if( persist )	_LogUtils_WriteCFPreferences();
    e8853dc2:	e00a0ee3          	beqz	s4,e8853bde <_LogControlLocked+0x84>
	for( action = gLogActionList; action; action = action->next )
    e8853dc6:	00090797          	auipc	a5,0x90
    e8853dca:	f1278793          	addi	a5,a5,-238 # e88e3cd8 <gLogActionList>
    e8853dce:	6380                	ld	s0,0(a5)
	char *			configStr = NULL;
    e8853dd0:	f402                	sd	zero,40(sp)
	for( action = gLogActionList; action; action = action->next )
    e8853dd2:	84be                	mv	s1,a5
		if( ( ( stricmp( action->variable, "output" )  == 0 ) || 
    e8853dd4:	0006d917          	auipc	s2,0x6d
    e8853dd8:	65c90913          	addi	s2,s2,1628 # e88c1430 <__PRETTY_FUNCTION__.9824+0xe8>
		AppendPrintF( &configStr, "%s%s:%s=%s", ( action == gLogActionList ) ? "" : ",", 
    e8853ddc:	0006d997          	auipc	s3,0x6d
    e8853de0:	66c98993          	addi	s3,s3,1644 # e88c1448 <__PRETTY_FUNCTION__.9824+0x100>
    e8853de4:	0006da17          	auipc	s4,0x6d
    e8853de8:	48ca0a13          	addi	s4,s4,1164 # e88c1270 <kHTTPServerClass+0x90>
    e8853dec:	0006da97          	auipc	s5,0x6d
    e8853df0:	654a8a93          	addi	s5,s5,1620 # e88c1440 <__PRETTY_FUNCTION__.9824+0xf8>
			  ( stricmp( action->variable, "output2" ) == 0 ) ) && 
    e8853df4:	0006db17          	auipc	s6,0x6d
    e8853df8:	644b0b13          	addi	s6,s6,1604 # e88c1438 <__PRETTY_FUNCTION__.9824+0xf0>
			( stricmp_prefix( action->value, "callback" ) == 0 ) )
    e8853dfc:	0006db97          	auipc	s7,0x6d
    e8853e00:	65cb8b93          	addi	s7,s7,1628 # e88c1458 <__PRETTY_FUNCTION__.9824+0x110>
	for( action = gLogActionList; action; action = action->next )
    e8853e04:	e82d                	bnez	s0,e8853e76 <_LogControlLocked+0x31c>
	require_action_quiet( configStr, exit, err = kNoErr );
    e8853e06:	75a2                	ld	a1,40(sp)
    e8853e08:	c1ad                	beqz	a1,e8853e6a <_LogControlLocked+0x310>
	configCFStr = CFStringCreateWithCString( NULL, configStr, kCFStringEncodingUTF8 );
    e8853e0a:	08000637          	lui	a2,0x8000
    e8853e0e:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e8853e12:	4501                	li	a0,0
    e8853e14:	f10f30ef          	jal	ra,e8847524 <CFStringCreateWithCString>
    e8853e18:	842a                	mv	s0,a0
	require_action_quiet( configCFStr, exit, err = kNoMemoryErr );
    e8853e1a:	c921                	beqz	a0,e8853e6a <_LogControlLocked+0x310>
	appID = gLogCFPrefsAppID ? gLogCFPrefsAppID : kCFPreferencesCurrentApplication;
    e8853e1c:	00090797          	auipc	a5,0x90
    e8853e20:	ed478793          	addi	a5,a5,-300 # e88e3cf0 <gLogCFPrefsAppID>
    e8853e24:	6384                	ld	s1,0(a5)
    e8853e26:	e489                	bnez	s1,e8853e30 <_LogControlLocked+0x2d6>
    e8853e28:	00049497          	auipc	s1,0x49
    e8853e2c:	5a848493          	addi	s1,s1,1448 # e889d3d0 <icmp6_param_problem+0x362>
	CFPreferencesSetAppValue( CFSTR( kLogUtilsKey_LogConfig ), configCFStr, appID );
    e8853e30:	8626                	mv	a2,s1
    e8853e32:	85a2                	mv	a1,s0
    e8853e34:	00049517          	auipc	a0,0x49
    e8853e38:	5cc50513          	addi	a0,a0,1484 # e889d400 <icmp6_param_problem+0x392>
    e8853e3c:	df3f60ef          	jal	ra,e884ac2e <CFPreferencesSetAppValue_compat>
	ReplaceCF( &gLogCFLastControlPref, configCFStr );
    e8853e40:	00090917          	auipc	s2,0x90
    e8853e44:	ea890913          	addi	s2,s2,-344 # e88e3ce8 <gLogCFLastControlPref>
	CFPreferencesAppSynchronize( appID );
    e8853e48:	8526                	mv	a0,s1
    e8853e4a:	ef7f60ef          	jal	ra,e884ad40 <CFPreferencesAppSynchronize_compat>
	ReplaceCF( &gLogCFLastControlPref, configCFStr );
    e8853e4e:	00093483          	ld	s1,0(s2)
    e8853e52:	8522                	mv	a0,s0
    e8853e54:	af2f30ef          	jal	ra,e8847146 <CFRetain>
    e8853e58:	00893023          	sd	s0,0(s2)
    e8853e5c:	c481                	beqz	s1,e8853e64 <_LogControlLocked+0x30a>
    e8853e5e:	8526                	mv	a0,s1
    e8853e60:	aeaf30ef          	jal	ra,e884714a <CFRelease>
	CFRelease( configCFStr );
    e8853e64:	8522                	mv	a0,s0
    e8853e66:	ae4f30ef          	jal	ra,e884714a <CFRelease>
	FreeNullSafe( configStr );
    e8853e6a:	7522                	ld	a0,40(sp)
    e8853e6c:	d60509e3          	beqz	a0,e8853bde <_LogControlLocked+0x84>
    e8853e70:	490280ef          	jal	ra,e887c300 <eLIBs_free>
	return( err );
    e8853e74:	b3ad                	j	e8853bde <_LogControlLocked+0x84>
		if( ( ( stricmp( action->variable, "output" )  == 0 ) || 
    e8853e76:	6808                	ld	a0,16(s0)
    e8853e78:	85ca                	mv	a1,s2
    e8853e7a:	4ce280ef          	jal	ra,e887c348 <eLIBs_stricmp>
    e8853e7e:	e901                	bnez	a0,e8853e8e <_LogControlLocked+0x334>
			( stricmp_prefix( action->value, "callback" ) == 0 ) )
    e8853e80:	6c08                	ld	a0,24(s0)
    e8853e82:	85de                	mv	a1,s7
    e8853e84:	2010b0ef          	jal	ra,e885f884 <stricmp_prefix>
			  ( stricmp( action->variable, "output2" ) == 0 ) ) && 
    e8853e88:	e901                	bnez	a0,e8853e98 <_LogControlLocked+0x33e>
	for( action = gLogActionList; action; action = action->next )
    e8853e8a:	6000                	ld	s0,0(s0)
    e8853e8c:	bfa5                	j	e8853e04 <_LogControlLocked+0x2aa>
			  ( stricmp( action->variable, "output2" ) == 0 ) ) && 
    e8853e8e:	6808                	ld	a0,16(s0)
    e8853e90:	85da                	mv	a1,s6
    e8853e92:	4b6280ef          	jal	ra,e887c348 <eLIBs_stricmp>
		if( ( ( stricmp( action->variable, "output" )  == 0 ) || 
    e8853e96:	d56d                	beqz	a0,e8853e80 <_LogControlLocked+0x326>
		AppendPrintF( &configStr, "%s%s:%s=%s", ( action == gLogActionList ) ? "" : ",", 
    e8853e98:	6090                	ld	a2,0(s1)
    e8853e9a:	87d6                	mv	a5,s5
    e8853e9c:	6818                	ld	a4,16(s0)
    e8853e9e:	40c40633          	sub	a2,s0,a2
    e8853ea2:	00163613          	seqz	a2,a2
    e8853ea6:	42ca178b          	mvnez	a5,s4,a2
    e8853eaa:	863e                	mv	a2,a5
    e8853eac:	6414                	ld	a3,8(s0)
    e8853eae:	6c1c                	ld	a5,24(s0)
    e8853eb0:	85ce                	mv	a1,s3
    e8853eb2:	1028                	addi	a0,sp,40
    e8853eb4:	7f8080ef          	jal	ra,e885c6ac <AppendPrintF>
    e8853eb8:	bfc9                	j	e8853e8a <_LogControlLocked+0x330>
	if( actionNew ) _LogUtils_FreeAction( actionNew );
    e8853eba:	d20d03e3          	beqz	s10,e8853be0 <_LogControlLocked+0x86>
    e8853ebe:	856a                	mv	a0,s10
    e8853ec0:	c70ff0ef          	jal	ra,e8853330 <_LogUtils_FreeAction>
    e8853ec4:	bb31                	j	e8853be0 <_LogControlLocked+0x86>
		require_action_quiet( c != '\0', exit, err = kMalformedErr );
    e8853ec6:	7479                	lui	s0,0xffffe
    e8853ec8:	5aa40413          	addi	s0,s0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e8853ecc:	bb11                	j	e8853be0 <_LogControlLocked+0x86>
			require_action_quiet( actionNew, exit, err = kNoMemoryErr );
    e8853ece:	7479                	lui	s0,0xffffe
    e8853ed0:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	return( err );
    e8853ed4:	b331                	j	e8853be0 <_LogControlLocked+0x86>

00000000e8853ed6 <_LogControlLockedCF>:
{
    e8853ed6:	7139                	addi	sp,sp,-64
    e8853ed8:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8853edc:	fc06                	sd	ra,56(sp)
    e8853ede:	f852                	sd	s4,48(sp)
    e8853ee0:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8853ee4:	89ae                	mv	s3,a1
    e8853ee6:	8a2a                	mv	s4,a0
	range = CFRangeMake( 0, CFStringGetLength( inStr ) );
    e8853ee8:	ebaf30ef          	jal	ra,e88475a2 <CFStringGetLength>
	len = CFStringGetMaximumSizeForEncoding( range.length, kCFStringEncodingUTF8 );
    e8853eec:	08000937          	lui	s2,0x8000
    e8853ef0:	10090593          	addi	a1,s2,256 # 8000100 <memcmp-0xe07fff00>
	range = CFRangeMake( 0, CFStringGetLength( inStr ) );
    e8853ef4:	842a                	mv	s0,a0
	len = CFStringGetMaximumSizeForEncoding( range.length, kCFStringEncodingUTF8 );
    e8853ef6:	ec0f30ef          	jal	ra,e88475b6 <CFStringGetMaximumSizeForEncoding>
    e8853efa:	c62a                	sw	a0,12(sp)
	configStr = (char *) malloc( (size_t)( len + 1 ) );
    e8853efc:	2505                	addiw	a0,a0,1
    e8853efe:	151270ef          	jal	ra,e887b84e <my_malloc>
	require_action_quiet( configStr, exit, err = kNoMemoryErr );
    e8853f02:	c121                	beqz	a0,e8853f42 <_LogControlLockedCF+0x6c>
	range.location = CFStringGetBytes( inStr, range, kCFStringEncodingUTF8, 0, false, (uint8_t *) configStr, len, &len );
    e8853f04:	4832                	lw	a6,12(sp)
    e8853f06:	84aa                	mv	s1,a0
    e8853f08:	87aa                	mv	a5,a0
    e8853f0a:	00c10893          	addi	a7,sp,12
    e8853f0e:	4701                	li	a4,0
    e8853f10:	4681                	li	a3,0
    e8853f12:	10090613          	addi	a2,s2,256
    e8853f16:	02041593          	slli	a1,s0,0x20
    e8853f1a:	8552                	mv	a0,s4
    e8853f1c:	f04f30ef          	jal	ra,e8847620 <CFStringGetBytes>
	require_action_quiet( range.location == range.length, exit, err = kUnknownErr );
    e8853f20:	02a41d63          	bne	s0,a0,e8853f5a <_LogControlLockedCF+0x84>
	require_action_quiet( len > 0, exit, err = kNoErr );
    e8853f24:	47b2                	lw	a5,12(sp)
    e8853f26:	4401                	li	s0,0
    e8853f28:	00f05963          	blez	a5,e8853f3a <_LogControlLockedCF+0x64>
	configStr[ len ] = '\0';
    e8853f2c:	00f4d00b          	srb	zero,s1,a5,0
	err = _LogControlLocked( configStr, inFlags );
    e8853f30:	85ce                	mv	a1,s3
    e8853f32:	8526                	mv	a0,s1
    e8853f34:	c27ff0ef          	jal	ra,e8853b5a <_LogControlLocked>
    e8853f38:	842a                	mv	s0,a0
	FreeNullSafe( configStr );
    e8853f3a:	8526                	mv	a0,s1
    e8853f3c:	3c4280ef          	jal	ra,e887c300 <eLIBs_free>
	return( err );
    e8853f40:	a021                	j	e8853f48 <_LogControlLockedCF+0x72>
	require_action_quiet( configStr, exit, err = kNoMemoryErr );
    e8853f42:	7479                	lui	s0,0xffffe
    e8853f44:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
}
    e8853f48:	8522                	mv	a0,s0
    e8853f4a:	70e2                	ld	ra,56(sp)
    e8853f4c:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8853f50:	7a42                	ld	s4,48(sp)
    e8853f52:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8853f56:	6121                	addi	sp,sp,64
    e8853f58:	8082                	ret
	require_action_quiet( range.location == range.length, exit, err = kUnknownErr );
    e8853f5a:	7479                	lui	s0,0xffffe
    e8853f5c:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8853f60:	bfe9                	j	e8853f3a <_LogControlLockedCF+0x64>

00000000e8853f62 <_LogUtils_ReadCFPreferences>:
{
    e8853f62:	7179                	addi	sp,sp,-48
    e8853f64:	fa91540b          	sdd	s0,s1,(sp),1,4
	appID = gLogCFPrefsAppID ? gLogCFPrefsAppID : kCFPreferencesCurrentApplication;
    e8853f68:	00090797          	auipc	a5,0x90
    e8853f6c:	d8878793          	addi	a5,a5,-632 # e88e3cf0 <gLogCFPrefsAppID>
{
    e8853f70:	f04a                	sd	s2,32(sp)
    e8853f72:	f406                	sd	ra,40(sp)
	appID = gLogCFPrefsAppID ? gLogCFPrefsAppID : kCFPreferencesCurrentApplication;
    e8853f74:	638c                	ld	a1,0(a5)
{
    e8853f76:	892a                	mv	s2,a0
	appID = gLogCFPrefsAppID ? gLogCFPrefsAppID : kCFPreferencesCurrentApplication;
    e8853f78:	e589                	bnez	a1,e8853f82 <_LogUtils_ReadCFPreferences+0x20>
    e8853f7a:	00049597          	auipc	a1,0x49
    e8853f7e:	45658593          	addi	a1,a1,1110 # e889d3d0 <icmp6_param_problem+0x362>
	CFPreferencesAppSynchronize( appID );
    e8853f82:	852e                	mv	a0,a1
    e8853f84:	e42e                	sd	a1,8(sp)
    e8853f86:	dbbf60ef          	jal	ra,e884ad40 <CFPreferencesAppSynchronize_compat>
	cfStr = (CFStringRef) CFPreferencesCopyAppValue( CFSTR( kLogUtilsKey_LogConfig ), appID );
    e8853f8a:	65a2                	ld	a1,8(sp)
    e8853f8c:	00049517          	auipc	a0,0x49
    e8853f90:	47450513          	addi	a0,a0,1140 # e889d400 <icmp6_param_problem+0x392>
    e8853f94:	b97f60ef          	jal	ra,e884ab2a <CFPreferencesCopyAppValue_compat>
    e8853f98:	842a                	mv	s0,a0
	if( cfStr )
    e8853f9a:	c13d                	beqz	a0,e8854000 <_LogUtils_ReadCFPreferences+0x9e>
		if( ( CFGetTypeID( cfStr ) == CFStringGetTypeID() ) && 
    e8853f9c:	996f30ef          	jal	ra,e8847132 <CFGetTypeID>
    e8853fa0:	0005049b          	sext.w	s1,a0
    e8853fa4:	cf0f30ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8853fa8:	2501                	sext.w	a0,a0
    e8853faa:	02a49663          	bne	s1,a0,e8853fd6 <_LogUtils_ReadCFPreferences+0x74>
			( ( inFlags & kLogControlFlags_Defaults ) || !CFEqualNullSafe( cfStr, gLogCFLastControlPref ) ) )
    e8853fae:	00497793          	andi	a5,s2,4
    e8853fb2:	00090497          	auipc	s1,0x90
    e8853fb6:	d3648493          	addi	s1,s1,-714 # e88e3ce8 <gLogCFLastControlPref>
		if( ( CFGetTypeID( cfStr ) == CFStringGetTypeID() ) && 
    e8853fba:	c795                	beqz	a5,e8853fe6 <_LogUtils_ReadCFPreferences+0x84>
			_LogControlLockedCF( cfStr, inFlags | kLogControlFlags_FromPrefs );
    e8853fbc:	00296593          	ori	a1,s2,2
    e8853fc0:	8522                	mv	a0,s0
    e8853fc2:	f15ff0ef          	jal	ra,e8853ed6 <_LogControlLockedCF>
			ReplaceCF( &gLogCFLastControlPref, cfStr );
    e8853fc6:	0004b903          	ld	s2,0(s1)
    e8853fca:	8522                	mv	a0,s0
    e8853fcc:	97af30ef          	jal	ra,e8847146 <CFRetain>
    e8853fd0:	e080                	sd	s0,0(s1)
    e8853fd2:	02091363          	bnez	s2,e8853ff8 <_LogUtils_ReadCFPreferences+0x96>
		CFRelease( cfStr );
    e8853fd6:	8522                	mv	a0,s0
}
    e8853fd8:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8853fdc:	70a2                	ld	ra,40(sp)
    e8853fde:	7902                	ld	s2,32(sp)
    e8853fe0:	6145                	addi	sp,sp,48
		CFRelease( cfStr );
    e8853fe2:	968f306f          	j	e884714a <CFRelease>
			( ( inFlags & kLogControlFlags_Defaults ) || !CFEqualNullSafe( cfStr, gLogCFLastControlPref ) ) )
    e8853fe6:	608c                	ld	a1,0(s1)
    e8853fe8:	fe8587e3          	beq	a1,s0,e8853fd6 <_LogUtils_ReadCFPreferences+0x74>
    e8853fec:	d9e1                	beqz	a1,e8853fbc <_LogUtils_ReadCFPreferences+0x5a>
    e8853fee:	8522                	mv	a0,s0
    e8853ff0:	95ef30ef          	jal	ra,e884714e <CFEqual>
    e8853ff4:	d561                	beqz	a0,e8853fbc <_LogUtils_ReadCFPreferences+0x5a>
    e8853ff6:	b7c5                	j	e8853fd6 <_LogUtils_ReadCFPreferences+0x74>
			ReplaceCF( &gLogCFLastControlPref, cfStr );
    e8853ff8:	854a                	mv	a0,s2
    e8853ffa:	950f30ef          	jal	ra,e884714a <CFRelease>
    e8853ffe:	bfe1                	j	e8853fd6 <_LogUtils_ReadCFPreferences+0x74>
}
    e8854000:	70a2                	ld	ra,40(sp)
    e8854002:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8854006:	7902                	ld	s2,32(sp)
    e8854008:	6145                	addi	sp,sp,48
    e885400a:	8082                	ret

00000000e885400c <LogUtils_EnsureInitialized>:
{
    e885400c:	1101                	addi	sp,sp,-32
    e885400e:	e422                	sd	s0,8(sp)
    e8854010:	e826                	sd	s1,16(sp)
	if( gLogCFInitialized || gLogUtilsInitializing ) return( kNoErr ); // Avoid recursion.
    e8854012:	00090417          	auipc	s0,0x90
    e8854016:	cce40413          	addi	s0,s0,-818 # e88e3ce0 <gLogCFInitialized>
    e885401a:	00090497          	auipc	s1,0x90
    e885401e:	cee48493          	addi	s1,s1,-786 # e88e3d08 <gLogUtilsInitializing>
    e8854022:	00044783          	lbu	a5,0(s0)
    e8854026:	0004c703          	lbu	a4,0(s1)
{
    e885402a:	ec06                	sd	ra,24(sp)
	if( gLogCFInitialized || gLogUtilsInitializing ) return( kNoErr ); // Avoid recursion.
    e885402c:	8fd9                	or	a5,a5,a4
    e885402e:	ef85                	bnez	a5,e8854066 <LogUtils_EnsureInitialized+0x5a>
	MinimalMutexLock( gLogUtilsLock );
    e8854030:	00081517          	auipc	a0,0x81
    e8854034:	fe450513          	addi	a0,a0,-28 # e88d5014 <gLogUtilsLock>
    e8854038:	2e7270ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	gLogUtilsInitializing = true;
    e885403c:	4785                	li	a5,1
	if( !gLogCFInitialized )
    e885403e:	00044703          	lbu	a4,0(s0)
	gLogUtilsInitializing = true;
    e8854042:	00f48023          	sb	a5,0(s1)
	if( !gLogCFInitialized )
    e8854046:	e711                	bnez	a4,e8854052 <LogUtils_EnsureInitialized+0x46>
			_LogUtils_ReadCFPreferences( kLogControlFlags_None );
    e8854048:	4501                	li	a0,0
		gLogCFInitialized = true; // Mark initialized first to handle recursive invocation.
    e885404a:	00f40023          	sb	a5,0(s0)
			_LogUtils_ReadCFPreferences( kLogControlFlags_None );
    e885404e:	f15ff0ef          	jal	ra,e8853f62 <_LogUtils_ReadCFPreferences>
	MinimalMutexUnlock( gLogUtilsLock );
    e8854052:	00081517          	auipc	a0,0x81
    e8854056:	fc250513          	addi	a0,a0,-62 # e88d5014 <gLogUtilsLock>
	gLogUtilsInitializing = false;
    e885405a:	00090797          	auipc	a5,0x90
    e885405e:	ca078723          	sb	zero,-850(a5) # e88e3d08 <gLogUtilsInitializing>
	MinimalMutexUnlock( gLogUtilsLock );
    e8854062:	301270ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e8854066:	60e2                	ld	ra,24(sp)
    e8854068:	6422                	ld	s0,8(sp)
    e885406a:	64c2                	ld	s1,16(sp)
    e885406c:	4501                	li	a0,0
    e885406e:	6105                	addi	sp,sp,32
    e8854070:	8082                	ret

00000000e8854072 <_LogCategory_Initialize>:
	if( gLogUtilsInitializing ) return( false );
    e8854072:	00090797          	auipc	a5,0x90
    e8854076:	c967c783          	lbu	a5,-874(a5) # e88e3d08 <gLogUtilsInitializing>
    e885407a:	efcd                	bnez	a5,e8854134 <_LogCategory_Initialize+0xc2>
{
    e885407c:	7179                	addi	sp,sp,-48
    e885407e:	f406                	sd	ra,40(sp)
    e8854080:	e422                	sd	s0,8(sp)
    e8854082:	e826                	sd	s1,16(sp)
    e8854084:	842a                	mv	s0,a0
	LogUtils_EnsureInitialized();
    e8854086:	84ae                	mv	s1,a1
{
    e8854088:	ec4a                	sd	s2,24(sp)
    e885408a:	f04e                	sd	s3,32(sp)
	LogUtils_EnsureInitialized();
    e885408c:	f81ff0ef          	jal	ra,e885400c <LogUtils_EnsureInitialized>
	MinimalMutexLock( gLogUtilsLock );
    e8854090:	00081517          	auipc	a0,0x81
    e8854094:	f8450513          	addi	a0,a0,-124 # e88d5014 <gLogUtilsLock>
    e8854098:	287270ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( inCategory->level == kLogLevelUninitialized )
    e885409c:	4018                	lw	a4,0(s0)
    e885409e:	57fd                	li	a5,-1
    e88540a0:	04f71d63          	bne	a4,a5,e88540fa <_LogCategory_Initialize+0x88>
		inCategory->level = inCategory->initLevel;
    e88540a4:	405c                	lw	a5,4(s0)
		for( next = &gLogCategoryList; ( curr = *next ) != NULL; next = &curr->next )
    e88540a6:	00090917          	auipc	s2,0x90
    e88540aa:	c5290913          	addi	s2,s2,-942 # e88e3cf8 <gLogCategoryList>
		inCategory->level = inCategory->initLevel;
    e88540ae:	c01c                	sw	a5,0(s0)
		for( next = &gLogCategoryList; ( curr = *next ) != NULL; next = &curr->next )
    e88540b0:	00093983          	ld	s3,0(s2)
    e88540b4:	00098a63          	beqz	s3,e88540c8 <_LogCategory_Initialize+0x56>
			if( strnicmpx( curr->name, SIZE_MAX, inCategory->name ) > 0 )
    e88540b8:	6c10                	ld	a2,24(s0)
    e88540ba:	0189b503          	ld	a0,24(s3)
    e88540be:	55fd                	li	a1,-1
    e88540c0:	09d0b0ef          	jal	ra,e885f95c <strnicmpx>
    e88540c4:	06a05163          	blez	a0,e8854126 <_LogCategory_Initialize+0xb4>
		inCategory->next = *next;
    e88540c8:	00093783          	ld	a5,0(s2)
    e88540cc:	f81c                	sd	a5,48(s0)
		*next = inCategory;
    e88540ce:	00893023          	sd	s0,0(s2)
		if( inCategory->initConfig )
    e88540d2:	6408                	ld	a0,8(s0)
    e88540d4:	ed21                	bnez	a0,e885412c <_LogCategory_Initialize+0xba>
		_LogCategory_ApplyActions( inCategory );
    e88540d6:	8522                	mv	a0,s0
    e88540d8:	f0cff0ef          	jal	ra,e88537e4 <_LogCategory_ApplyActions>
		if( !inCategory->output1 )
    e88540dc:	7c1c                	ld	a5,56(s0)
    e88540de:	ef91                	bnez	a5,e88540fa <_LogCategory_Initialize+0x88>
			_LogOutputCreate( "console", &inCategory->output1 );
    e88540e0:	03840593          	addi	a1,s0,56
    e88540e4:	0006d517          	auipc	a0,0x6d
    e88540e8:	39450513          	addi	a0,a0,916 # e88c1478 <__PRETTY_FUNCTION__.9824+0x130>
    e88540ec:	c06ff0ef          	jal	ra,e88534f2 <_LogOutputCreate>
			if( inCategory->output1 ) ++inCategory->output1->refCount;
    e88540f0:	7c1c                	ld	a5,56(s0)
    e88540f2:	c781                	beqz	a5,e88540fa <_LogCategory_Initialize+0x88>
    e88540f4:	4798                	lw	a4,8(a5)
    e88540f6:	2705                	addiw	a4,a4,1
    e88540f8:	c798                	sw	a4,8(a5)
	MinimalMutexUnlock( gLogUtilsLock );
    e88540fa:	00081517          	auipc	a0,0x81
    e88540fe:	f1a50513          	addi	a0,a0,-230 # e88d5014 <gLogUtilsLock>
	level = inCategory->level;
    e8854102:	4000                	lw	s0,0(s0)
	MinimalMutexUnlock( gLogUtilsLock );
    e8854104:	25f270ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e8854108:	6962                	ld	s2,24(sp)
	return( (Boolean)( ( inLevel & kLogLevelMask ) >= level ) );
    e885410a:	0ff4f513          	andi	a0,s1,255
    e885410e:	00852533          	slt	a0,a0,s0
}
    e8854112:	70a2                	ld	ra,40(sp)
    e8854114:	6422                	ld	s0,8(sp)
	return( (Boolean)( ( inLevel & kLogLevelMask ) >= level ) );
    e8854116:	00154513          	xori	a0,a0,1
}
    e885411a:	64c2                	ld	s1,16(sp)
    e885411c:	7982                	ld	s3,32(sp)
	return( (Boolean)( ( inLevel & kLogLevelMask ) >= level ) );
    e885411e:	0ff57513          	andi	a0,a0,255
}
    e8854122:	6145                	addi	sp,sp,48
    e8854124:	8082                	ret
		for( next = &gLogCategoryList; ( curr = *next ) != NULL; next = &curr->next )
    e8854126:	03098913          	addi	s2,s3,48
    e885412a:	b759                	j	e88540b0 <_LogCategory_Initialize+0x3e>
			_LogControlLocked( inCategory->initConfig, kLogControlFlags_None );
    e885412c:	4581                	li	a1,0
    e885412e:	a2dff0ef          	jal	ra,e8853b5a <_LogControlLocked>
    e8854132:	b755                	j	e88540d6 <_LogCategory_Initialize+0x64>
	if( gLogUtilsInitializing ) return( false );
    e8854134:	4501                	li	a0,0
}
    e8854136:	8082                	ret

00000000e8854138 <LogPrintV>:
{
    e8854138:	7145                	addi	sp,sp,-464
    e885413a:	ff26                	sd	s1,440(sp)
    e885413c:	f352                	sd	s4,416(sp)
    e885413e:	ef56                	sd	s5,408(sp)
    e8854140:	eb5a                	sd	s6,400(sp)
    e8854142:	e75e                	sd	s7,392(sp)
    e8854144:	e362                	sd	s8,384(sp)
	if( inLevel & kLogLevelFlagCrashReport )
    e8854146:	00200ab7          	lui	s5,0x200
{
    e885414a:	e786                	sd	ra,456(sp)
    e885414c:	e3a2                	sd	s0,448(sp)
    e885414e:	fb4a                	sd	s2,432(sp)
    e8854150:	f74e                	sd	s3,424(sp)
	char *					reason = NULL;
    e8854152:	ec02                	sd	zero,24(sp)
	if( inLevel & kLogLevelFlagCrashReport )
    e8854154:	01567ab3          	and	s5,a2,s5
{
    e8854158:	84aa                	mv	s1,a0
    e885415a:	8c2e                	mv	s8,a1
    e885415c:	8a32                	mv	s4,a2
    e885415e:	8b36                	mv	s6,a3
    e8854160:	8bba                	mv	s7,a4
	if( inLevel & kLogLevelFlagCrashReport )
    e8854162:	000a8763          	beqz	s5,e8854170 <LogPrintV+0x38>
		VASPrintF( &reason, inFormat, args );
    e8854166:	863a                	mv	a2,a4
    e8854168:	85b6                	mv	a1,a3
    e885416a:	0828                	addi	a0,sp,24
    e885416c:	4cc080ef          	jal	ra,e885c638 <VASPrintF>
	LogUtils_EnsureInitialized();
    e8854170:	e9dff0ef          	jal	ra,e885400c <LogUtils_EnsureInitialized>
	if( !( inLevel & kLogLevelFlagContinuation ) )
    e8854174:	00080437          	lui	s0,0x80
	MinimalMutexLock( gLogUtilsLock );
    e8854178:	00081517          	auipc	a0,0x81
    e885417c:	e9c50513          	addi	a0,a0,-356 # e88d5014 <gLogUtilsLock>
    e8854180:	19f270ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	context.category	= inCategory;
    e8854184:	f0a6                	sd	s1,96(sp)
	context.level		= inLevel;
    e8854186:	d4d2                	sw	s4,104(sp)
	context.buf[ 0 ]	= '\0';
    e8854188:	06010623          	sb	zero,108(sp)
	context.len			= 0;
    e885418c:	fa82                	sd	zero,368(sp)
	context.flushOnEnd	= false;
    e885418e:	16010c23          	sb	zero,376(sp)
	if( !( inLevel & kLogLevelFlagContinuation ) )
    e8854192:	008a7433          	and	s0,s4,s0
    e8854196:	2c041b63          	bnez	s0,e885446c <LogPrintV+0x334>
		if( inLevel & kLogLevelFlagFunction ) flags |= kLogFlags_PrintFunction;
    e885419a:	02ba1793          	slli	a5,s4,0x2b
		flags = inCategory->flags;
    e885419e:	0104a903          	lw	s2,16(s1)
		if( inLevel & kLogLevelFlagFunction ) flags |= kLogFlags_PrintFunction;
    e88541a2:	0007d463          	bgez	a5,e88541aa <LogPrintV+0x72>
    e88541a6:	04096913          	ori	s2,s2,64
		if( ( inCategory->rateMaxCount > 0 ) && !( inLevel & kLogLevelFlagDontRateLimit ) )
    e88541aa:	4cbc                	lw	a5,88(s1)
    e88541ac:	c3bd                	beqz	a5,e8854212 <LogPrintV+0xda>
    e88541ae:	029a1793          	slli	a5,s4,0x29
    e88541b2:	0607c063          	bltz	a5,e8854212 <LogPrintV+0xda>
			if( inCategory->rateEnd == 0 )
    e88541b6:	68bc                	ld	a5,80(s1)
    e88541b8:	e791                	bnez	a5,e88541c4 <LogPrintV+0x8c>
				inCategory->rateEnd = UpTicks() + inCategory->rateInterval;
    e88541ba:	00a0d0ef          	jal	ra,e88611c4 <UpTicks>
    e88541be:	64bc                	ld	a5,72(s1)
    e88541c0:	953e                	add	a0,a0,a5
    e88541c2:	e8a8                	sd	a0,80(s1)
			if( UpTicks() >= inCategory->rateEnd )
    e88541c4:	0000d0ef          	jal	ra,e88611c4 <UpTicks>
    e88541c8:	68bc                	ld	a5,80(s1)
    e88541ca:	00f56663          	bltu	a0,a5,e88541d6 <LogPrintV+0x9e>
				inCategory->rateEnd		= 0;
    e88541ce:	0404b823          	sd	zero,80(s1)
				inCategory->rateCounter = 0;
    e88541d2:	0404ae23          	sw	zero,92(s1)
			if( inCategory->rateCounter >= inCategory->rateMaxCount )
    e88541d6:	4cfc                	lw	a5,92(s1)
    e88541d8:	4cb8                	lw	a4,88(s1)
    e88541da:	02e7ea63          	bltu	a5,a4,e885420e <LogPrintV+0xd6>
				MinimalMutexUnlock( gLogUtilsLock );
    e88541de:	00081517          	auipc	a0,0x81
    e88541e2:	e3650513          	addi	a0,a0,-458 # e88d5014 <gLogUtilsLock>
    e88541e6:	17d270ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	total = 0;
    e88541ea:	4401                	li	s0,0
	if( reason ) free( reason );
    e88541ec:	6562                	ld	a0,24(sp)
    e88541ee:	c119                	beqz	a0,e88541f4 <LogPrintV+0xbc>
    e88541f0:	110280ef          	jal	ra,e887c300 <eLIBs_free>
}
    e88541f4:	8522                	mv	a0,s0
    e88541f6:	60be                	ld	ra,456(sp)
    e88541f8:	641e                	ld	s0,448(sp)
    e88541fa:	74fa                	ld	s1,440(sp)
    e88541fc:	795a                	ld	s2,432(sp)
    e88541fe:	79ba                	ld	s3,424(sp)
    e8854200:	7a1a                	ld	s4,416(sp)
    e8854202:	6afa                	ld	s5,408(sp)
    e8854204:	6b5a                	ld	s6,400(sp)
    e8854206:	6bba                	ld	s7,392(sp)
    e8854208:	6c1a                	ld	s8,384(sp)
    e885420a:	6179                	addi	sp,sp,464
    e885420c:	8082                	ret
			++inCategory->rateCounter;
    e885420e:	2785                	addiw	a5,a5,1
    e8854210:	ccfc                	sw	a5,92(s1)
		if( flags & kLogFlags_PrintTime )
    e8854212:	00197793          	andi	a5,s2,1
    e8854216:	c38d                	beqz	a5,e8854238 <LogPrintV+0x100>
			n = CPrintF( _LogPrintFCallBack, &context, "%N " );
    e8854218:	0006d617          	auipc	a2,0x6d
    e885421c:	18060613          	addi	a2,a2,384 # e88c1398 <__PRETTY_FUNCTION__.9824+0x50>
    e8854220:	108c                	addi	a1,sp,96
    e8854222:	fffff517          	auipc	a0,0xfffff
    e8854226:	14650513          	addi	a0,a0,326 # e8853368 <_LogPrintFCallBack>
    e885422a:	524080ef          	jal	ra,e885c74e <CPrintF>
			if( n > 0 ) total += n;
    e885422e:	0005041b          	sext.w	s0,a0
    e8854232:	00055363          	bgez	a0,e8854238 <LogPrintV+0x100>
    e8854236:	4401                	li	s0,0
		if( flags & ( kLogFlags_PrintProgram | kLogFlags_PrintPID | kLogFlags_PrintCategory | 
    e8854238:	07e97793          	andi	a5,s2,126
    e885423c:	14078f63          	beqz	a5,e885439a <LogPrintV+0x262>
			n = CPrintF( _LogPrintFCallBack, &context, "[" );
    e8854240:	0006d617          	auipc	a2,0x6d
    e8854244:	16060613          	addi	a2,a2,352 # e88c13a0 <__PRETTY_FUNCTION__.9824+0x58>
    e8854248:	108c                	addi	a1,sp,96
    e885424a:	fffff517          	auipc	a0,0xfffff
    e885424e:	11e50513          	addi	a0,a0,286 # e8853368 <_LogPrintFCallBack>
    e8854252:	4fc080ef          	jal	ra,e885c74e <CPrintF>
			if( n > 0 ) total += n;
    e8854256:	89a2                	mv	s3,s0
    e8854258:	00a05463          	blez	a0,e8854260 <LogPrintV+0x128>
    e885425c:	00a409bb          	addw	s3,s0,a0
			if( flags & kLogFlags_PrintProgram )
    e8854260:	00497793          	andi	a5,s2,4
    e8854264:	844e                	mv	s0,s3
    e8854266:	c785                	beqz	a5,e885428e <LogPrintV+0x156>
				n = CPrintF( _LogPrintFCallBack, &context, "%s", __PROGRAM__ );
    e8854268:	0006d697          	auipc	a3,0x6d
    e885426c:	00868693          	addi	a3,a3,8 # e88c1270 <kHTTPServerClass+0x90>
    e8854270:	00056617          	auipc	a2,0x56
    e8854274:	13060613          	addi	a2,a2,304 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e8854278:	108c                	addi	a1,sp,96
    e885427a:	fffff517          	auipc	a0,0xfffff
    e885427e:	0ee50513          	addi	a0,a0,238 # e8853368 <_LogPrintFCallBack>
    e8854282:	4cc080ef          	jal	ra,e885c74e <CPrintF>
				if( n > 0 ) total += n;
    e8854286:	00a05463          	blez	a0,e885428e <LogPrintV+0x156>
    e885428a:	00a9843b          	addw	s0,s3,a0
			if( flags & kLogFlags_PrintPID )
    e885428e:	00297793          	andi	a5,s2,2
    e8854292:	cb95                	beqz	a5,e88542c6 <LogPrintV+0x18e>
				n = CPrintF( _LogPrintFCallBack, &context, "%s%llu", ( last == total ) ? "" : ":", (uint64_t) getpid() );
    e8854294:	0006d697          	auipc	a3,0x6d
    e8854298:	fdc68693          	addi	a3,a3,-36 # e88c1270 <kHTTPServerClass+0x90>
    e885429c:	00898663          	beq	s3,s0,e88542a8 <LogPrintV+0x170>
    e88542a0:	00069697          	auipc	a3,0x69
    e88542a4:	79868693          	addi	a3,a3,1944 # e88bda38 <kSRPHashDescriptor_SHA512+0x28>
    e88542a8:	4715                	li	a4,5
    e88542aa:	0006d617          	auipc	a2,0x6d
    e88542ae:	0fe60613          	addi	a2,a2,254 # e88c13a8 <__PRETTY_FUNCTION__.9824+0x60>
    e88542b2:	108c                	addi	a1,sp,96
    e88542b4:	fffff517          	auipc	a0,0xfffff
    e88542b8:	0b450513          	addi	a0,a0,180 # e8853368 <_LogPrintFCallBack>
    e88542bc:	492080ef          	jal	ra,e885c74e <CPrintF>
				if( n > 0 ) total += n;
    e88542c0:	00a05363          	blez	a0,e88542c6 <LogPrintV+0x18e>
    e88542c4:	9c29                	addw	s0,s0,a0
			if( flags & kLogFlags_PrintCategory )
    e88542c6:	00897793          	andi	a5,s2,8
    e88542ca:	16078563          	beqz	a5,e8854434 <LogPrintV+0x2fc>
				n = CPrintF( _LogPrintFCallBack, &context, "%s%s", ( last == total ) ? "" : ",", inCategory->name );
    e88542ce:	0006d697          	auipc	a3,0x6d
    e88542d2:	fa268693          	addi	a3,a3,-94 # e88c1270 <kHTTPServerClass+0x90>
    e88542d6:	00898663          	beq	s3,s0,e88542e2 <LogPrintV+0x1aa>
    e88542da:	0006d697          	auipc	a3,0x6d
    e88542de:	16668693          	addi	a3,a3,358 # e88c1440 <__PRETTY_FUNCTION__.9824+0xf8>
    e88542e2:	6c98                	ld	a4,24(s1)
    e88542e4:	0006a617          	auipc	a2,0x6a
    e88542e8:	d0c60613          	addi	a2,a2,-756 # e88bdff0 <__PRETTY_FUNCTION__.10585+0x228>
    e88542ec:	108c                	addi	a1,sp,96
    e88542ee:	fffff517          	auipc	a0,0xfffff
    e88542f2:	07a50513          	addi	a0,a0,122 # e8853368 <_LogPrintFCallBack>
    e88542f6:	458080ef          	jal	ra,e885c74e <CPrintF>
				if( n > 0 ) total += n;
    e88542fa:	00a05363          	blez	a0,e8854300 <LogPrintV+0x1c8>
    e88542fe:	9c29                	addw	s0,s0,a0
			if( flags & kLogFlags_PrintFunction )
    e8854300:	04097793          	andi	a5,s2,64
    e8854304:	cb95                	beqz	a5,e8854338 <LogPrintV+0x200>
				n = CPrintF( _LogPrintFCallBack, &context, "%s%s", ( last == total ) ? "" : ",", inFunction );
    e8854306:	0006d697          	auipc	a3,0x6d
    e885430a:	f6a68693          	addi	a3,a3,-150 # e88c1270 <kHTTPServerClass+0x90>
    e885430e:	00898663          	beq	s3,s0,e885431a <LogPrintV+0x1e2>
    e8854312:	0006d697          	auipc	a3,0x6d
    e8854316:	12e68693          	addi	a3,a3,302 # e88c1440 <__PRETTY_FUNCTION__.9824+0xf8>
    e885431a:	8762                	mv	a4,s8
    e885431c:	0006a617          	auipc	a2,0x6a
    e8854320:	cd460613          	addi	a2,a2,-812 # e88bdff0 <__PRETTY_FUNCTION__.10585+0x228>
    e8854324:	108c                	addi	a1,sp,96
    e8854326:	fffff517          	auipc	a0,0xfffff
    e885432a:	04250513          	addi	a0,a0,66 # e8853368 <_LogPrintFCallBack>
    e885432e:	420080ef          	jal	ra,e885c74e <CPrintF>
				if( n > 0 ) total += n;
    e8854332:	00a05363          	blez	a0,e8854338 <LogPrintV+0x200>
    e8854336:	9c29                	addw	s0,s0,a0
			if( flags & kLogFlags_PrintLevel )
    e8854338:	01097913          	andi	s2,s2,16
    e885433c:	04090163          	beqz	s2,e885437e <LogPrintV+0x246>
				n = CPrintF( _LogPrintFCallBack, &context, "%s%s", ( last == total ) ? "" : "@", 
    e8854340:	0006d697          	auipc	a3,0x6d
    e8854344:	f3068693          	addi	a3,a3,-208 # e88c1270 <kHTTPServerClass+0x90>
    e8854348:	00898663          	beq	s3,s0,e8854354 <LogPrintV+0x21c>
    e885434c:	0006e697          	auipc	a3,0x6e
    e8854350:	afc68693          	addi	a3,a3,-1284 # e88c1e48 <__PRETTY_FUNCTION__.9902+0x1b0>
    e8854354:	100c                	addi	a1,sp,32
    e8854356:	8552                	mv	a0,s4
    e8854358:	e436                	sd	a3,8(sp)
    e885435a:	902ff0ef          	jal	ra,e885345c <_LULevelToString.constprop.4>
    e885435e:	872a                	mv	a4,a0
    e8854360:	66a2                	ld	a3,8(sp)
    e8854362:	0006a617          	auipc	a2,0x6a
    e8854366:	c8e60613          	addi	a2,a2,-882 # e88bdff0 <__PRETTY_FUNCTION__.10585+0x228>
    e885436a:	108c                	addi	a1,sp,96
    e885436c:	fffff517          	auipc	a0,0xfffff
    e8854370:	ffc50513          	addi	a0,a0,-4 # e8853368 <_LogPrintFCallBack>
    e8854374:	3da080ef          	jal	ra,e885c74e <CPrintF>
				if( n > 0 ) total += n;
    e8854378:	00a05363          	blez	a0,e885437e <LogPrintV+0x246>
    e885437c:	9c29                	addw	s0,s0,a0
			n = CPrintF( _LogPrintFCallBack, &context, "] " );
    e885437e:	0006d617          	auipc	a2,0x6d
    e8854382:	03a60613          	addi	a2,a2,58 # e88c13b8 <__PRETTY_FUNCTION__.9824+0x70>
    e8854386:	108c                	addi	a1,sp,96
    e8854388:	fffff517          	auipc	a0,0xfffff
    e885438c:	fe050513          	addi	a0,a0,-32 # e8853368 <_LogPrintFCallBack>
    e8854390:	3be080ef          	jal	ra,e885c74e <CPrintF>
			if( n > 0 ) total += n;
    e8854394:	00a05363          	blez	a0,e885439a <LogPrintV+0x262>
    e8854398:	9c29                	addw	s0,s0,a0
	n = VCPrintF( _LogPrintFCallBack, &context, inFormat, inArgs );
    e885439a:	86de                	mv	a3,s7
    e885439c:	865a                	mv	a2,s6
    e885439e:	108c                	addi	a1,sp,96
    e88543a0:	fffff517          	auipc	a0,0xfffff
    e88543a4:	fc850513          	addi	a0,a0,-56 # e8853368 <_LogPrintFCallBack>
    e88543a8:	35a080ef          	jal	ra,e885c702 <VCPrintF>
	if( n > 0 ) total += n;
    e88543ac:	00a05363          	blez	a0,e88543b2 <LogPrintV+0x27a>
    e88543b0:	9c29                	addw	s0,s0,a0
	context.flushOnEnd = true;
    e88543b2:	4785                	li	a5,1
	n = _LogPrintFCallBack( "", 0, &context );
    e88543b4:	1090                	addi	a2,sp,96
    e88543b6:	4581                	li	a1,0
    e88543b8:	0006d517          	auipc	a0,0x6d
    e88543bc:	eb850513          	addi	a0,a0,-328 # e88c1270 <kHTTPServerClass+0x90>
	context.flushOnEnd = true;
    e88543c0:	16f10c23          	sb	a5,376(sp)
	n = _LogPrintFCallBack( "", 0, &context );
    e88543c4:	fa5fe0ef          	jal	ra,e8853368 <_LogPrintFCallBack>
	if( n > 0 ) total += n;
    e88543c8:	00a05363          	blez	a0,e88543ce <LogPrintV+0x296>
    e88543cc:	9c29                	addw	s0,s0,a0
	MinimalMutexUnlock( gLogUtilsLock );
    e88543ce:	00081517          	auipc	a0,0x81
    e88543d2:	c4650513          	addi	a0,a0,-954 # e88d5014 <gLogUtilsLock>
    e88543d6:	78c270ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	if( inLevel & kLogLevelFlagStackTrace )
    e88543da:	02fa1793          	slli	a5,s4,0x2f
    e88543de:	0007d663          	bgez	a5,e88543ea <LogPrintV+0x2b2>
		DebugStackTrace( kLogLevelMax );
    e88543e2:	0fe00513          	li	a0,254
    e88543e6:	95afa0ef          	jal	ra,e884e540 <DebugStackTrace>
	if( ( inLevel & kLogLevelFlagDebugBreak ) && DebugIsDebuggerPresent() )
    e88543ea:	02ea1793          	slli	a5,s4,0x2e
    e88543ee:	0007d863          	bgez	a5,e88543fe <LogPrintV+0x2c6>
    e88543f2:	9d2fa0ef          	jal	ra,e884e5c4 <DebugIsDebuggerPresent>
    e88543f6:	c501                	beqz	a0,e88543fe <LogPrintV+0x2c6>
		DebugEnterDebugger( true );
    e88543f8:	4505                	li	a0,1
    e88543fa:	9cefa0ef          	jal	ra,e884e5c8 <DebugEnterDebugger>
	if( inLevel & kLogLevelFlagCrashReport )
    e88543fe:	de0a87e3          	beqz	s5,e88541ec <LogPrintV+0xb4>
    e8854402:	64e2                	ld	s1,24(sp)
		if( reason )
    e8854404:	de0484e3          	beqz	s1,e88541ec <LogPrintV+0xb4>
			for( end = reason + strlen( reason ); ( end > reason ) && ( end[ -1 ] == '\n' ); --end ) {}
    e8854408:	8526                	mv	a0,s1
    e885440a:	70f270ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885440e:	7c05350b          	extu	a0,a0,31,0
    e8854412:	66e2                	ld	a3,24(sp)
    e8854414:	9526                	add	a0,a0,s1
    e8854416:	47a9                	li	a5,10
    e8854418:	00a6f663          	bgeu	a3,a0,e8854424 <LogPrintV+0x2ec>
    e885441c:	fff54703          	lbu	a4,-1(a0)
    e8854420:	04f70863          	beq	a4,a5,e8854470 <LogPrintV+0x338>
			*end = '\0';
    e8854424:	00050023          	sb	zero,0(a0)
			ReportCriticalError( reason, 0, true );
    e8854428:	6562                	ld	a0,24(sp)
    e885442a:	4605                	li	a2,1
    e885442c:	4581                	li	a1,0
    e885442e:	9c0fa0ef          	jal	ra,e884e5ee <ReportCriticalError>
    e8854432:	bb6d                	j	e88541ec <LogPrintV+0xb4>
			else if( flags & kLogFlags_PrintPrefix )
    e8854434:	02097793          	andi	a5,s2,32
    e8854438:	ec0784e3          	beqz	a5,e8854300 <LogPrintV+0x1c8>
				n = CPrintF( _LogPrintFCallBack, &context, "%s%.*s", ( last == total ) ? "" : ",", 
    e885443c:	0006d697          	auipc	a3,0x6d
    e8854440:	e3468693          	addi	a3,a3,-460 # e88c1270 <kHTTPServerClass+0x90>
    e8854444:	00898663          	beq	s3,s0,e8854450 <LogPrintV+0x318>
    e8854448:	0006d697          	auipc	a3,0x6d
    e885444c:	ff868693          	addi	a3,a3,-8 # e88c1440 <__PRETTY_FUNCTION__.9824+0xf8>
    e8854450:	709c                	ld	a5,32(s1)
    e8854452:	5498                	lw	a4,40(s1)
    e8854454:	0006d617          	auipc	a2,0x6d
    e8854458:	f5c60613          	addi	a2,a2,-164 # e88c13b0 <__PRETTY_FUNCTION__.9824+0x68>
    e885445c:	108c                	addi	a1,sp,96
    e885445e:	fffff517          	auipc	a0,0xfffff
    e8854462:	f0a50513          	addi	a0,a0,-246 # e8853368 <_LogPrintFCallBack>
    e8854466:	2e8080ef          	jal	ra,e885c74e <CPrintF>
    e885446a:	bd41                	j	e88542fa <LogPrintV+0x1c2>
	total = 0;
    e885446c:	4401                	li	s0,0
    e885446e:	b735                	j	e885439a <LogPrintV+0x262>
			for( end = reason + strlen( reason ); ( end > reason ) && ( end[ -1 ] == '\n' ); --end ) {}
    e8854470:	157d                	addi	a0,a0,-1
    e8854472:	b75d                	j	e8854418 <LogPrintV+0x2e0>

00000000e8854474 <LogPrintF>:
{
    e8854474:	7139                	addi	sp,sp,-64
    e8854476:	fcf1570b          	sdd	a4,a5,(sp),2,4
	va_start( args, inFormat );
    e885447a:	1018                	addi	a4,sp,32
{
    e885447c:	ec06                	sd	ra,24(sp)
    e885447e:	ff11580b          	sdd	a6,a7,(sp),3,4
	va_start( args, inFormat );
    e8854482:	e43a                	sd	a4,8(sp)
	n = LogPrintV( inCategory, inFunction, inLevel, inFormat, args );
    e8854484:	cb5ff0ef          	jal	ra,e8854138 <LogPrintV>
}
    e8854488:	60e2                	ld	ra,24(sp)
    e885448a:	6121                	addi	sp,sp,64
    e885448c:	8082                	ret

00000000e885448e <_MFiSAP_Exchange_ServerM1>:
		MFiSAPRef		inRef, 
		const uint8_t *	inInputPtr,
		size_t			inInputLen, 
		uint8_t **		outOutputPtr,
		size_t *		outOutputLen )
{
    e885448e:	7145                	addi	sp,sp,-464
    e8854490:	e3a2                	sd	s0,448(sp)
    e8854492:	ff26                	sd	s1,440(sp)
    e8854494:	fb4a                	sd	s2,432(sp)
    e8854496:	f74e                	sd	s3,424(sp)
    e8854498:	f352                	sd	s4,416(sp)
    e885449a:	ef56                	sd	s5,408(sp)
    e885449c:	89ba                	mv	s3,a4
    e885449e:	e786                	sd	ra,456(sp)
    e88544a0:	eb5a                	sd	s6,400(sp)
    e88544a2:	892a                	mv	s2,a0
    e88544a4:	84ae                	mv	s1,a1
    e88544a6:	8432                	mv	s0,a2
    e88544a8:	8a36                	mv	s4,a3
	uint8_t				ourPK[ kMFiSAP_ECDHKeyLen ];
	SHA_CTX				sha1Ctx;
	SHA256_CTX			sha256Ctx;
	uint8_t				digest[ SHA256_DIGEST_LENGTH ];
	size_t				digestLen;
	uint8_t *			signaturePtr = NULL;
    e88544aa:	e402                	sd	zero,8(sp)
	size_t				signatureLen;
	uint8_t *			certificatePtr = NULL;
    e88544ac:	ec02                	sd	zero,24(sp)
	uint8_t *			dst;
	size_t				len;
	
	// Throttle requests to no more than 1 per second and linearly back off to 4 seconds max.
	
	if( ( UpTicks() - gMFiSAP_LastTicks ) < UpTicksPerSecond() )
    e88544ae:	5170c0ef          	jal	ra,e88611c4 <UpTicks>
    e88544b2:	00090717          	auipc	a4,0x90
    e88544b6:	85e70713          	addi	a4,a4,-1954 # e88e3d10 <gMFiSAP_LastTicks>
    e88544ba:	631c                	ld	a5,0(a4)
    e88544bc:	8aba                	mv	s5,a4
    e88544be:	8d1d                	sub	a0,a0,a5
    e88544c0:	3e700793          	li	a5,999
    e88544c4:	06a7e263          	bltu	a5,a0,e8854528 <_MFiSAP_Exchange_ServerM1+0x9a>
	{
		if( gMFiSAP_ThrottleCounter < 4 ) ++gMFiSAP_ThrottleCounter;
    e88544c8:	00090797          	auipc	a5,0x90
    e88544cc:	85078793          	addi	a5,a5,-1968 # e88e3d18 <gMFiSAP_ThrottleCounter>
    e88544d0:	4398                	lw	a4,0(a5)
    e88544d2:	468d                	li	a3,3
    e88544d4:	00e6e463          	bltu	a3,a4,e88544dc <_MFiSAP_Exchange_ServerM1+0x4e>
    e88544d8:	2705                	addiw	a4,a4,1
    e88544da:	c398                	sw	a4,0(a5)
		SleepForUpTicks( gMFiSAP_ThrottleCounter * UpTicksPerSecond() );
    e88544dc:	0007e503          	lwu	a0,0(a5)
    e88544e0:	3e800793          	li	a5,1000
    e88544e4:	02f50533          	mul	a0,a0,a5
    e88544e8:	4ef0c0ef          	jal	ra,e88611d6 <SleepForUpTicks>
	}
	else
	{
		gMFiSAP_ThrottleCounter = 0;
	}
	gMFiSAP_LastTicks = UpTicks();
    e88544ec:	4d90c0ef          	jal	ra,e88611c4 <UpTicks>
    e88544f0:	00aab023          	sd	a0,0(s5) # 200000 <memcmp-0xe8600000>
	
	// Validate inputs. Input data must be: <1:version> <32:client's ECDH public key>.
	
	inputEnd = inInputPtr + inInputLen;
    e88544f4:	008487b3          	add	a5,s1,s0
	require_action( inputEnd > inInputPtr, exit, err = kSizeErr ); // Detect bad length causing ptr wrap.
    e88544f8:	02f4ed63          	bltu	s1,a5,e8854532 <_MFiSAP_Exchange_ServerM1+0xa4>
    e88544fc:	7479                	lui	s0,0xffffe
    e88544fe:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
	check( dst == ( buf + len ) );
	*outOutputPtr = buf;
	*outOutputLen = (size_t)( dst - buf );
	
exit:
	FreeNullSafe( certificatePtr );
    e8854502:	6562                	ld	a0,24(sp)
    e8854504:	c119                	beqz	a0,e885450a <_MFiSAP_Exchange_ServerM1+0x7c>
    e8854506:	5fb270ef          	jal	ra,e887c300 <eLIBs_free>
	FreeNullSafe( signaturePtr );
    e885450a:	6522                	ld	a0,8(sp)
    e885450c:	c119                	beqz	a0,e8854512 <_MFiSAP_Exchange_ServerM1+0x84>
    e885450e:	5f3270ef          	jal	ra,e887c300 <eLIBs_free>
	return( err );
}
    e8854512:	8522                	mv	a0,s0
    e8854514:	60be                	ld	ra,456(sp)
    e8854516:	641e                	ld	s0,448(sp)
    e8854518:	74fa                	ld	s1,440(sp)
    e885451a:	795a                	ld	s2,432(sp)
    e885451c:	79ba                	ld	s3,424(sp)
    e885451e:	7a1a                	ld	s4,416(sp)
    e8854520:	6afa                	ld	s5,408(sp)
    e8854522:	6b5a                	ld	s6,400(sp)
    e8854524:	6179                	addi	sp,sp,464
    e8854526:	8082                	ret
		gMFiSAP_ThrottleCounter = 0;
    e8854528:	0008f797          	auipc	a5,0x8f
    e885452c:	7e07a823          	sw	zero,2032(a5) # e88e3d18 <gMFiSAP_ThrottleCounter>
    e8854530:	bf75                	j	e88544ec <_MFiSAP_Exchange_ServerM1+0x5e>
	require_action( ( inputEnd - inInputPtr ) >= kMFiSAP_VersionLen, exit, err = kSizeErr );
    e8854532:	fc8055e3          	blez	s0,e88544fc <_MFiSAP_Exchange_ServerM1+0x6e>
	inRef->version = *inInputPtr++;
    e8854536:	0004c703          	lbu	a4,0(s1)
	require_action( inRef->version == kMFiSAPVersion1, exit, err = kVersionErr );
    e885453a:	4685                	li	a3,1
	inRef->version = *inInputPtr++;
    e885453c:	00e900a3          	sb	a4,1(s2)
	require_action( inRef->version == kMFiSAPVersion1, exit, err = kVersionErr );
    e8854540:	1cd71f63          	bne	a4,a3,e885471e <_MFiSAP_Exchange_ServerM1+0x290>
	require_action( ( inputEnd - inInputPtr ) >= kMFiSAP_ECDHKeyLen, exit, err = kSizeErr );
    e8854544:	147d                	addi	s0,s0,-1
    e8854546:	477d                	li	a4,31
    e8854548:	fa875ae3          	bge	a4,s0,e88544fc <_MFiSAP_Exchange_ServerM1+0x6e>
	inInputPtr += kMFiSAP_ECDHKeyLen;
    e885454c:	02148713          	addi	a4,s1,33
	require_action( inInputPtr == inputEnd, exit, err = kSizeErr );
    e8854550:	fae796e3          	bne	a5,a4,e88544fc <_MFiSAP_Exchange_ServerM1+0x6e>
	err = RandomBytes( ourSK, sizeof( ourSK ) );
    e8854554:	02000593          	li	a1,32
    e8854558:	08a8                	addi	a0,sp,88
    e885455a:	34b080ef          	jal	ra,e885d0a4 <RandomBytes>
    e885455e:	842a                	mv	s0,a0
    memclr( ourSK, sizeof( ourSK ) );
    e8854560:	02000593          	li	a1,32
    e8854564:	08a8                	addi	a0,sp,88
    e8854566:	61f270ef          	jal	ra,e887c384 <eLIBs_memclr>
	require_noerr( err, exit );
    e885456a:	fc41                	bnez	s0,e8854502 <_MFiSAP_Exchange_ServerM1+0x74>
	curve25519( ourPK, ourSK, NULL );
    e885456c:	4601                	li	a2,0
    e885456e:	08ac                	addi	a1,sp,88
    e8854570:	18a8                	addi	a0,sp,120
    e8854572:	43d230ef          	jal	ra,e88781ae <curve25519_donna>
	curve25519( inRef->sharedSecret, ourSK, peerPK );
    e8854576:	00290413          	addi	s0,s2,2
	inRef->version = *inInputPtr++;
    e885457a:	0485                	addi	s1,s1,1
	curve25519( inRef->sharedSecret, ourSK, peerPK );
    e885457c:	8626                	mv	a2,s1
    e885457e:	08ac                	addi	a1,sp,88
    e8854580:	8522                	mv	a0,s0
    e8854582:	42d230ef          	jal	ra,e88781ae <curve25519_donna>
	SHA1_Init( &sha1Ctx );
    e8854586:	1928                	addi	a0,sp,184
    e8854588:	53c090ef          	jal	ra,e885dac4 <SHA1_Init_compat>
	SHA1_Update( &sha1Ctx, kMFiSAP_AES_KEY_SaltPtr, kMFiSAP_AES_KEY_SaltLen );
    e885458c:	461d                	li	a2,7
    e885458e:	0006d597          	auipc	a1,0x6d
    e8854592:	17a58593          	addi	a1,a1,378 # e88c1708 <kLogLevelToStringTable+0x280>
    e8854596:	1928                	addi	a0,sp,184
    e8854598:	55a090ef          	jal	ra,e885daf2 <SHA1_Update_compat>
	SHA1_Update( &sha1Ctx, inRef->sharedSecret, sizeof( inRef->sharedSecret ) );
    e885459c:	02000613          	li	a2,32
    e88545a0:	85a2                	mv	a1,s0
    e88545a2:	1928                	addi	a0,sp,184
    e88545a4:	54e090ef          	jal	ra,e885daf2 <SHA1_Update_compat>
	SHA1_Final( aesKey, &sha1Ctx );
    e88545a8:	192c                	addi	a1,sp,184
    e88545aa:	1028                	addi	a0,sp,40
    e88545ac:	5e0090ef          	jal	ra,e885db8c <SHA1_Final_compat>
	SHA1_Init( &sha1Ctx );
    e88545b0:	1928                	addi	a0,sp,184
    e88545b2:	512090ef          	jal	ra,e885dac4 <SHA1_Init_compat>
	SHA1_Update( &sha1Ctx, kMFiSAP_AES_IV_SaltPtr, kMFiSAP_AES_IV_SaltLen );
    e88545b6:	4619                	li	a2,6
    e88545b8:	0006d597          	auipc	a1,0x6d
    e88545bc:	15858593          	addi	a1,a1,344 # e88c1710 <kLogLevelToStringTable+0x288>
    e88545c0:	1928                	addi	a0,sp,184
    e88545c2:	530090ef          	jal	ra,e885daf2 <SHA1_Update_compat>
	SHA1_Update( &sha1Ctx, inRef->sharedSecret, sizeof( inRef->sharedSecret ) );
    e88545c6:	02000613          	li	a2,32
    e88545ca:	85a2                	mv	a1,s0
    e88545cc:	1928                	addi	a0,sp,184
    e88545ce:	524090ef          	jal	ra,e885daf2 <SHA1_Update_compat>
	SHA1_Final( aesIV, &sha1Ctx );
    e88545d2:	192c                	addi	a1,sp,184
    e88545d4:	0088                	addi	a0,sp,64
    e88545d6:	5b6090ef          	jal	ra,e885db8c <SHA1_Final_compat>
	err = MFiPlatform_CopyCertificate( &certificatePtr, &certificateLen );
    e88545da:	100c                	addi	a1,sp,32
    e88545dc:	0828                	addi	a0,sp,24
    e88545de:	42e000ef          	jal	ra,e8854a0c <MFiPlatform_CopyCertificate>
    e88545e2:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88545e4:	f0051fe3          	bnez	a0,e8854502 <_MFiSAP_Exchange_ServerM1+0x74>
	if( certificateLen <= 640 )
    e88545e8:	7702                	ld	a4,32(sp)
    e88545ea:	28000793          	li	a5,640
    e88545ee:	0920                	addi	s0,sp,152
    e88545f0:	08e7ef63          	bltu	a5,a4,e885468e <_MFiSAP_Exchange_ServerM1+0x200>
		SHA256_Init( &sha256Ctx );
    e88545f4:	1208                	addi	a0,sp,288
    e88545f6:	45d080ef          	jal	ra,e885d252 <sha256_init>
		digestLen = sizeof( digest );
    e88545fa:	02000a93          	li	s5,32
		SHA256_Update( &sha256Ctx, ourPK, sizeof( ourPK ) );
    e88545fe:	02000613          	li	a2,32
    e8854602:	18ac                	addi	a1,sp,120
    e8854604:	1208                	addi	a0,sp,288
    e8854606:	487080ef          	jal	ra,e885d28c <sha256_update>
		SHA256_Update( &sha256Ctx, peerPK, kMFiSAP_ECDHKeyLen );
    e885460a:	02000613          	li	a2,32
    e885460e:	85a6                	mv	a1,s1
    e8854610:	1208                	addi	a0,sp,288
    e8854612:	47b080ef          	jal	ra,e885d28c <sha256_update>
		SHA256_Final( digest, &sha256Ctx );
    e8854616:	120c                	addi	a1,sp,288
    e8854618:	8522                	mv	a0,s0
    e885461a:	4cf080ef          	jal	ra,e885d2e8 <sha256_final>
        printf("digest:");
    e885461e:	0006d517          	auipc	a0,0x6d
    e8854622:	0fa50513          	addi	a0,a0,250 # e88c1718 <kLogLevelToStringTable+0x290>
    e8854626:	4a1270ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e885462a:	4481                	li	s1,0
            printf("%X ",digest[i]);
    e885462c:	0006db17          	auipc	s6,0x6d
    e8854630:	0f4b0b13          	addi	s6,s6,244 # e88c1720 <kLogLevelToStringTable+0x298>
    e8854634:	8094458b          	lrbu	a1,s0,s1,0
    e8854638:	855a                	mv	a0,s6
    e885463a:	0485                	addi	s1,s1,1
    e885463c:	48b270ef          	jal	ra,e887c2c6 <eLIBs_printf>
        for(i=0;i<digestLen;i++)
    e8854640:	fe9a9ae3          	bne	s5,s1,e8854634 <_MFiSAP_Exchange_ServerM1+0x1a6>
        printf("\n");
    e8854644:	0004b517          	auipc	a0,0x4b
    e8854648:	63c50513          	addi	a0,a0,1596 # e889fc80 <TWO52+0x88>
    e885464c:	47b270ef          	jal	ra,e887c2c6 <eLIBs_printf>
	err = MFiPlatform_CreateSignature( digest, digestLen, &signaturePtr, &signatureLen );
    e8854650:	8522                	mv	a0,s0
    e8854652:	0814                	addi	a3,sp,16
    e8854654:	0030                	addi	a2,sp,8
    e8854656:	85d6                	mv	a1,s5
    e8854658:	21e000ef          	jal	ra,e8854876 <MFiPlatform_CreateSignature>
    e885465c:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e885465e:	ea0512e3          	bnez	a0,e8854502 <_MFiSAP_Exchange_ServerM1+0x74>
	err = AES_CTR_Init( &inRef->aesCtx, aesKey, aesIV );
    e8854662:	03890493          	addi	s1,s2,56
    e8854666:	0090                	addi	a2,sp,64
    e8854668:	102c                	addi	a1,sp,40
    e885466a:	8526                	mv	a0,s1
    e885466c:	fdcef0ef          	jal	ra,e8843e48 <AES_CTR_Init>
    e8854670:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8854672:	e80518e3          	bnez	a0,e8854502 <_MFiSAP_Exchange_ServerM1+0x74>
	err = AES_CTR_Update( &inRef->aesCtx, signaturePtr, signatureLen, signaturePtr );
    e8854676:	66a2                	ld	a3,8(sp)
    e8854678:	6642                	ld	a2,16(sp)
    e885467a:	8526                	mv	a0,s1
    e885467c:	85b6                	mv	a1,a3
    e885467e:	805ef0ef          	jal	ra,e8843e82 <AES_CTR_Update>
    e8854682:	842a                	mv	s0,a0
	if( err ) AES_CTR_Final( &inRef->aesCtx );
    e8854684:	c14d                	beqz	a0,e8854726 <_MFiSAP_Exchange_ServerM1+0x298>
    e8854686:	8526                	mv	a0,s1
    e8854688:	935ef0ef          	jal	ra,e8843fbc <AES_CTR_Final>
	require_noerr( err, exit );
    e885468c:	bd9d                	j	e8854502 <_MFiSAP_Exchange_ServerM1+0x74>
		SHA1_Init( &sha1Ctx );
    e885468e:	1928                	addi	a0,sp,184
    e8854690:	434090ef          	jal	ra,e885dac4 <SHA1_Init_compat>
		digestLen = SHA_DIGEST_LENGTH;
    e8854694:	4ad1                	li	s5,20
		SHA1_Update( &sha1Ctx, ourPK, sizeof( ourPK ) );
    e8854696:	02000613          	li	a2,32
    e885469a:	18ac                	addi	a1,sp,120
    e885469c:	1928                	addi	a0,sp,184
    e885469e:	454090ef          	jal	ra,e885daf2 <SHA1_Update_compat>
		SHA1_Update( &sha1Ctx, peerPK, kMFiSAP_ECDHKeyLen );
    e88546a2:	02000613          	li	a2,32
    e88546a6:	85a6                	mv	a1,s1
    e88546a8:	1928                	addi	a0,sp,184
    e88546aa:	448090ef          	jal	ra,e885daf2 <SHA1_Update_compat>
		SHA1_Final( digest, &sha1Ctx );
    e88546ae:	192c                	addi	a1,sp,184
    e88546b0:	8522                	mv	a0,s0
    e88546b2:	4da090ef          	jal	ra,e885db8c <SHA1_Final_compat>
		digestLen = SHA_DIGEST_LENGTH;
    e88546b6:	b7a5                	j	e885461e <_MFiSAP_Exchange_ServerM1+0x190>
	memcpy( dst, ourPK, sizeof( ourPK ) );			dst += sizeof( ourPK );
    e88546b8:	02000613          	li	a2,32
    e88546bc:	18ac                	addi	a1,sp,120
    e88546be:	4e3270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	WriteBig32( dst, certificateLen );				dst += 4;
    e88546c2:	02490493          	addi	s1,s2,36
    e88546c6:	5782                	lw	a5,32(sp)
	memcpy( dst, certificatePtr, certificateLen );	dst += certificateLen;
    e88546c8:	7602                	ld	a2,32(sp)
    e88546ca:	65e2                	ld	a1,24(sp)
    e88546cc:	9007978b          	revw	a5,a5
	WriteBig32( dst, certificateLen );				dst += 4;
    e88546d0:	02f92023          	sw	a5,32(s2)
	memcpy( dst, certificatePtr, certificateLen );	dst += certificateLen;
    e88546d4:	8526                	mv	a0,s1
    e88546d6:	4cb270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	WriteBig32( dst, signatureLen );				dst += 4;
    e88546da:	67c2                	ld	a5,16(sp)
	memcpy( dst, certificatePtr, certificateLen );	dst += certificateLen;
    e88546dc:	7702                	ld	a4,32(sp)
	WriteBig32( dst, signatureLen );				dst += 4;
    e88546de:	83e1                	srli	a5,a5,0x18
    e88546e0:	00e4d78b          	srb	a5,s1,a4,0
    e88546e4:	67c2                	ld	a5,16(sp)
	memcpy( dst, certificatePtr, certificateLen );	dst += certificateLen;
    e88546e6:	00e48533          	add	a0,s1,a4
	WriteBig32( dst, signatureLen );				dst += 4;
    e88546ea:	00450493          	addi	s1,a0,4
    e88546ee:	83c1                	srli	a5,a5,0x10
    e88546f0:	00f500a3          	sb	a5,1(a0)
    e88546f4:	67c2                	ld	a5,16(sp)
    e88546f6:	83a1                	srli	a5,a5,0x8
    e88546f8:	00f50123          	sb	a5,2(a0)
    e88546fc:	67c2                	ld	a5,16(sp)
    e88546fe:	00f501a3          	sb	a5,3(a0)
	memcpy( dst, signaturePtr, signatureLen );		dst += signatureLen;
    e8854702:	6642                	ld	a2,16(sp)
    e8854704:	65a2                	ld	a1,8(sp)
    e8854706:	8526                	mv	a0,s1
    e8854708:	499270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	*outOutputPtr = buf;
    e885470c:	012a3023          	sd	s2,0(s4)
	memcpy( dst, signaturePtr, signatureLen );		dst += signatureLen;
    e8854710:	6542                	ld	a0,16(sp)
    e8854712:	9526                	add	a0,a0,s1
	*outOutputLen = (size_t)( dst - buf );
    e8854714:	41250533          	sub	a0,a0,s2
    e8854718:	00a9b023          	sd	a0,0(s3)
    e885471c:	b3dd                	j	e8854502 <_MFiSAP_Exchange_ServerM1+0x74>
	require_action( inRef->version == kMFiSAPVersion1, exit, err = kVersionErr );
    e885471e:	7479                	lui	s0,0xffffe
    e8854720:	5c540413          	addi	s0,s0,1477 # ffffffffffffe5c5 <__DRAM0_INF_BASE+0xffffffff0000e5c5>
    e8854724:	bbf9                	j	e8854502 <_MFiSAP_Exchange_ServerM1+0x74>
	inRef->aesValid = true;
    e8854726:	4785                	li	a5,1
    e8854728:	14f90c23          	sb	a5,344(s2)
	len = kMFiSAP_ECDHKeyLen + 4 + certificateLen + 4 + signatureLen;
    e885472c:	7502                	ld	a0,32(sp)
    e885472e:	67c2                	ld	a5,16(sp)
    e8854730:	953e                	add	a0,a0,a5
	buf = (uint8_t *) malloc( len );
    e8854732:	02850513          	addi	a0,a0,40
    e8854736:	118270ef          	jal	ra,e887b84e <my_malloc>
    e885473a:	892a                	mv	s2,a0
	require_action( buf, exit, err = kNoMemoryErr );
    e885473c:	fd35                	bnez	a0,e88546b8 <_MFiSAP_Exchange_ServerM1+0x22a>
    e885473e:	7479                	lui	s0,0xffffe
    e8854740:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8854744:	bb7d                	j	e8854502 <_MFiSAP_Exchange_ServerM1+0x74>

00000000e8854746 <MFiSAP_Create>:
	require_action( inVersion == kMFiSAPVersion1, exit, err = kVersionErr );
    e8854746:	4785                	li	a5,1
    e8854748:	02f59d63          	bne	a1,a5,e8854782 <MFiSAP_Create+0x3c>
{
    e885474c:	1101                	addi	sp,sp,-32
    e885474e:	e422                	sd	s0,8(sp)
    e8854750:	842a                	mv	s0,a0
    p = malloc(len);
    e8854752:	16000513          	li	a0,352
    e8854756:	e826                	sd	s1,16(sp)
    e8854758:	ec06                	sd	ra,24(sp)
    e885475a:	0f4270ef          	jal	ra,e887b84e <my_malloc>
    e885475e:	84aa                	mv	s1,a0
    memset(p,0,len);
    e8854760:	16000613          	li	a2,352
    e8854764:	4581                	li	a1,0
    e8854766:	42f270ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( obj, exit, err = kNoMemoryErr );
    e885476a:	c085                	beqz	s1,e885478a <MFiSAP_Create+0x44>
	obj->state   = kMFiSAPState_Init;
    e885476c:	10100793          	li	a5,257
    e8854770:	00f49023          	sh	a5,0(s1)
	err = kNoErr;
    e8854774:	4501                	li	a0,0
	*outRef = obj;
    e8854776:	e004                	sd	s1,0(s0)
}
    e8854778:	60e2                	ld	ra,24(sp)
    e885477a:	6422                	ld	s0,8(sp)
    e885477c:	64c2                	ld	s1,16(sp)
    e885477e:	6105                	addi	sp,sp,32
    e8854780:	8082                	ret
	require_action( inVersion == kMFiSAPVersion1, exit, err = kVersionErr );
    e8854782:	7579                	lui	a0,0xffffe
    e8854784:	5c550513          	addi	a0,a0,1477 # ffffffffffffe5c5 <__DRAM0_INF_BASE+0xffffffff0000e5c5>
}
    e8854788:	8082                	ret
	require_action( obj, exit, err = kNoMemoryErr );
    e885478a:	7579                	lui	a0,0xffffe
    e885478c:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8854790:	b7e5                	j	e8854778 <MFiSAP_Create+0x32>

00000000e8854792 <MFiSAP_Delete>:
{
    e8854792:	1141                	addi	sp,sp,-16
    e8854794:	e022                	sd	s0,0(sp)
    e8854796:	e406                	sd	ra,8(sp)
	AES_CTR_Forget( &inRef->aesCtx, &inRef->aesValid );
    e8854798:	15854783          	lbu	a5,344(a0)
{
    e885479c:	842a                	mv	s0,a0
	AES_CTR_Forget( &inRef->aesCtx, &inRef->aesValid );
    e885479e:	c799                	beqz	a5,e88547ac <MFiSAP_Delete+0x1a>
    e88547a0:	03850513          	addi	a0,a0,56
    e88547a4:	819ef0ef          	jal	ra,e8843fbc <AES_CTR_Final>
    e88547a8:	14040c23          	sb	zero,344(s0)
	ForgetPtrLen( &inRef->certPtr, &inRef->certLen );
    e88547ac:	7408                	ld	a0,40(s0)
    e88547ae:	c509                	beqz	a0,e88547b8 <MFiSAP_Delete+0x26>
    e88547b0:	351270ef          	jal	ra,e887c300 <eLIBs_free>
    e88547b4:	02043423          	sd	zero,40(s0)
    e88547b8:	02043823          	sd	zero,48(s0)
	while( inLen-- ) *ptr++ = 0;
    e88547bc:	16040713          	addi	a4,s0,352
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e88547c0:	87a2                	mv	a5,s0
	while( inLen-- ) *ptr++ = 0;
    e88547c2:	00e79863          	bne	a5,a4,e88547d2 <MFiSAP_Delete+0x40>
	free( inRef );
    e88547c6:	8522                	mv	a0,s0
}
    e88547c8:	6402                	ld	s0,0(sp)
    e88547ca:	60a2                	ld	ra,8(sp)
    e88547cc:	0141                	addi	sp,sp,16
	free( inRef );
    e88547ce:	3332706f          	j	e887c300 <eLIBs_free>
    e88547d2:	1817d00b          	sbia	zero,(a5),1,0
    e88547d6:	b7f5                	j	e88547c2 <MFiSAP_Delete+0x30>

00000000e88547d8 <MFiSAP_Exchange>:
{
    e88547d8:	1101                	addi	sp,sp,-32
    e88547da:	e822                	sd	s0,16(sp)
    e88547dc:	ec06                	sd	ra,24(sp)
	if( inRef->state == kMFiSAPState_Init ) inRef->state = inInputPtr ? kMFiSAPState_ServerM1 : kMFiSAPState_ClientM1;
    e88547de:	00054803          	lbu	a6,0(a0)
{
    e88547e2:	842a                	mv	s0,a0
	if( inRef->state == kMFiSAPState_Init ) inRef->state = inInputPtr ? kMFiSAPState_ServerM1 : kMFiSAPState_ClientM1;
    e88547e4:	4505                	li	a0,1
    e88547e6:	00a81763          	bne	a6,a0,e88547f4 <MFiSAP_Exchange+0x1c>
    e88547ea:	4515                	li	a0,5
    e88547ec:	e191                	bnez	a1,e88547f0 <MFiSAP_Exchange+0x18>
    e88547ee:	4509                	li	a0,2
    e88547f0:	00a40023          	sb	a0,0(s0)
	switch( inRef->state )
    e88547f4:	00044883          	lbu	a7,0(s0)
    e88547f8:	e43e                	sd	a5,8(sp)
    e88547fa:	4515                	li	a0,5
    e88547fc:	02a89363          	bne	a7,a0,e8854822 <MFiSAP_Exchange+0x4a>
			err = _MFiSAP_Exchange_ServerM1( inRef, inInputPtr, inInputLen, outOutputPtr, outOutputLen );
    e8854800:	8522                	mv	a0,s0
    e8854802:	c8dff0ef          	jal	ra,e885448e <_MFiSAP_Exchange_ServerM1>
			require_noerr( err, exit );
    e8854806:	e521                	bnez	a0,e885484e <MFiSAP_Exchange+0x76>
	++inRef->state;
    e8854808:	00044703          	lbu	a4,0(s0)
	*outDone = done;
    e885480c:	67a2                	ld	a5,8(sp)
	++inRef->state;
    e885480e:	2705                	addiw	a4,a4,1
    e8854810:	00e40023          	sb	a4,0(s0)
	*outDone = done;
    e8854814:	4705                	li	a4,1
    e8854816:	00e78023          	sb	a4,0(a5)
}
    e885481a:	60e2                	ld	ra,24(sp)
    e885481c:	6442                	ld	s0,16(sp)
    e885481e:	6105                	addi	sp,sp,32
    e8854820:	8082                	ret
			dlogassert( "bad state %d\n", inRef->state );
    e8854822:	4501                	li	a0,0
    e8854824:	0006d817          	auipc	a6,0x6d
    e8854828:	e2480813          	addi	a6,a6,-476 # e88c1648 <kLogLevelToStringTable+0x1c0>
    e885482c:	0006d797          	auipc	a5,0x6d
    e8854830:	efc78793          	addi	a5,a5,-260 # e88c1728 <__PRETTY_FUNCTION__.9099>
    e8854834:	0e100713          	li	a4,225
    e8854838:	0006d697          	auipc	a3,0x6d
    e885483c:	e2068693          	addi	a3,a3,-480 # e88c1658 <kLogLevelToStringTable+0x1d0>
    e8854840:	4601                	li	a2,0
    e8854842:	4581                	li	a1,0
    e8854844:	b85f90ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			err	= kStateErr;
    e8854848:	7579                	lui	a0,0xffffe
    e885484a:	5cb50513          	addi	a0,a0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
	if( err ) inRef->state = kMFiSAPState_Invalid; // Invalidate on errors to prevent retries.
    e885484e:	00040023          	sb	zero,0(s0)
    e8854852:	b7e1                	j	e885481a <MFiSAP_Exchange+0x42>

00000000e8854854 <MFiSAP_Encrypt>:

OSStatus	MFiSAP_Encrypt( MFiSAPRef inRef, const void *inPlaintext, size_t inLen, void *inCiphertextBuf )
{
	OSStatus		err;
	
	require_action( ( inRef->state == kMFiSAPState_ClientDone ) || 
    e8854854:	00054783          	lbu	a5,0(a0)
    e8854858:	4711                	li	a4,4
    e885485a:	0fd7f793          	andi	a5,a5,253
    e885485e:	00e79663          	bne	a5,a4,e885486a <MFiSAP_Encrypt+0x16>
					( inRef->state == kMFiSAPState_ServerDone ), 
					exit, err = kStateErr );
	
	err = AES_CTR_Update( &inRef->aesCtx, inPlaintext, inLen, inCiphertextBuf );
    e8854862:	03850513          	addi	a0,a0,56
    e8854866:	e1cef06f          	j	e8843e82 <AES_CTR_Update>
	require_noerr( err, exit );
	
exit:
	return( err );
}
    e885486a:	7579                	lui	a0,0xffffe
    e885486c:	5cb50513          	addi	a0,a0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
    e8854870:	8082                	ret

00000000e8854872 <MFiSAP_Decrypt>:
    e8854872:	fe3ff06f          	j	e8854854 <MFiSAP_Encrypt>

00000000e8854876 <MFiPlatform_CreateSignature>:
	MFiPlatform_CreateSignature( 
		const void *	inDigestPtr, 
		size_t			inDigestLen, 
		uint8_t **		outSignaturePtr,
		size_t *		outSignatureLen )
{
    e8854876:	711d                	addi	sp,sp,-96
    e8854878:	ec86                	sd	ra,88(sp)
    e885487a:	e4a6                	sd	s1,72(sp)
    e885487c:	e0ca                	sd	s2,64(sp)
    e885487e:	84ae                	mv	s1,a1
    e8854880:	fc4e                	sd	s3,56(sp)
    e8854882:	f852                	sd	s4,48(sp)
    e8854884:	89b6                	mv	s3,a3
    e8854886:	8a32                	mv	s4,a2
    e8854888:	e8a2                	sd	s0,80(sp)
    e885488a:	892a                	mv	s2,a0
	uint8_t *		signaturePtr;
	int i;
	
	mfilog( kLogLevelVerbose, "MFi auth create signature\n" );

	lib_iic_open();
    e885488c:	09e1f0ef          	jal	ra,e887392a <lib_iic_open>
	locked = true;
	
	// Write the data to sign.
	// Note: writes to the size register auto-increment to the data register that follows it.
	
    lib_iic_read(0x04,buf,4);
    e8854890:	4611                	li	a2,4
    e8854892:	080c                	addi	a1,sp,16
    e8854894:	4511                	li	a0,4
    e8854896:	0e41f0ef          	jal	ra,e887397a <lib_iic_read>

    printf("mfi read id %d,inDigestLen %d\r\n",buf[2],inDigestLen);
    e885489a:	01214583          	lbu	a1,18(sp)
    e885489e:	8626                	mv	a2,s1
    e88548a0:	0006d517          	auipc	a0,0x6d
    e88548a4:	ec850513          	addi	a0,a0,-312 # e88c1768 <__PRETTY_FUNCTION__.9099+0x40>
    e88548a8:	21f270ef          	jal	ra,e887c2c6 <eLIBs_printf>

    if(buf[2] == 2)
    e88548ac:	01214703          	lbu	a4,18(sp)
    e88548b0:	4789                	li	a5,2
    e88548b2:	02f70863          	beq	a4,a5,e88548e2 <MFiPlatform_CreateSignature+0x6c>

    	err = lib_iic_write(kMFiAuthReg_ChallengeSize, buf, 2);
        require_noerr( err, exit );
    }
	
	err = lib_iic_write( kMFiAuthReg_ChallengeData, inDigestPtr, inDigestLen );
    e88548b6:	0004861b          	sext.w	a2,s1
    e88548ba:	85ca                	mv	a1,s2
    e88548bc:	02100513          	li	a0,33
    e88548c0:	1781f0ef          	jal	ra,e8873a38 <lib_iic_write>
    e88548c4:	0005041b          	sext.w	s0,a0
	require_noerr( err, exit );
    e88548c8:	cc21                	beqz	s0,e8854920 <MFiPlatform_CreateSignature+0xaa>
	mfilog( kLogLevelVerbose, "MFi auth created signature: len %d\n",(int) signatureLen );
	*outSignaturePtr = signaturePtr;
	*outSignatureLen = signatureLen;
	
exit:
	lib_iic_close();
    e88548ca:	08e1f0ef          	jal	ra,e8873958 <lib_iic_close>
	if( err )		mfilog( kLogLevelWarning, "### MFi auth create signature failed: %#m\n", err );
    e88548ce:	e015                	bnez	s0,e88548f2 <MFiPlatform_CreateSignature+0x7c>
	return( err );
}
    e88548d0:	8522                	mv	a0,s0
    e88548d2:	60e6                	ld	ra,88(sp)
    e88548d4:	6446                	ld	s0,80(sp)
    e88548d6:	64a6                	ld	s1,72(sp)
    e88548d8:	6906                	ld	s2,64(sp)
    e88548da:	79e2                	ld	s3,56(sp)
    e88548dc:	7a42                	ld	s4,48(sp)
    e88548de:	6125                	addi	sp,sp,96
    e88548e0:	8082                	ret
    	require_action( inDigestLen == 20, exit, err = kSizeErr );
    e88548e2:	47d1                	li	a5,20
    e88548e4:	00f48f63          	beq	s1,a5,e8854902 <MFiPlatform_CreateSignature+0x8c>
    e88548e8:	7479                	lui	s0,0xffffe
	lib_iic_close();
    e88548ea:	06e1f0ef          	jal	ra,e8873958 <lib_iic_close>
    	require_action( inDigestLen == 20, exit, err = kSizeErr );
    e88548ee:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
	if( err )		mfilog( kLogLevelWarning, "### MFi auth create signature failed: %#m\n", err );
    e88548f2:	85a2                	mv	a1,s0
    e88548f4:	0006d517          	auipc	a0,0x6d
    e88548f8:	ef450513          	addi	a0,a0,-268 # e88c17e8 <__PRETTY_FUNCTION__.9099+0xc0>
    e88548fc:	1cb270ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8854900:	bfc1                	j	e88548d0 <MFiPlatform_CreateSignature+0x5a>
    	buf[ 0 ] = (uint8_t)( ( inDigestLen >> 8 ) & 0xFF );
    e8854902:	6785                	lui	a5,0x1
    e8854904:	4007879b          	addiw	a5,a5,1024
    	err = lib_iic_write(kMFiAuthReg_ChallengeSize, buf, 2);
    e8854908:	4609                	li	a2,2
    e885490a:	080c                	addi	a1,sp,16
    e885490c:	02000513          	li	a0,32
    	buf[ 0 ] = (uint8_t)( ( inDigestLen >> 8 ) & 0xFF );
    e8854910:	00f11823          	sh	a5,16(sp)
    	err = lib_iic_write(kMFiAuthReg_ChallengeSize, buf, 2);
    e8854914:	1241f0ef          	jal	ra,e8873a38 <lib_iic_write>
    e8854918:	0005041b          	sext.w	s0,a0
        require_noerr( err, exit );
    e885491c:	dc49                	beqz	s0,e88548b6 <MFiPlatform_CreateSignature+0x40>
    e885491e:	b775                	j	e88548ca <MFiPlatform_CreateSignature+0x54>
	buf[ 0 ] = kMFiAuthControl_GenerateSignature;
    e8854920:	4785                	li	a5,1
	err = lib_iic_write( kMFiAuthReg_AuthControlStatus, buf, 1 );
    e8854922:	4605                	li	a2,1
    e8854924:	080c                	addi	a1,sp,16
    e8854926:	4541                	li	a0,16
	buf[ 0 ] = kMFiAuthControl_GenerateSignature;
    e8854928:	00f10823          	sb	a5,16(sp)
	err = lib_iic_write( kMFiAuthReg_AuthControlStatus, buf, 1 );
    e885492c:	10c1f0ef          	jal	ra,e8873a38 <lib_iic_write>
    e8854930:	0005041b          	sext.w	s0,a0
	require_noerr( err, exit );
    e8854934:	f859                	bnez	s0,e88548ca <MFiPlatform_CreateSignature+0x54>
	Sleep(200);
    e8854936:	4551                	li	a0,20
    e8854938:	6de270ef          	jal	ra,e887c016 <esKRNL_TimeDly>
	for(i=0;i<10;i++)
    e885493c:	4481                	li	s1,0
		err = lib_iic_read( kMFiAuthReg_AuthControlStatus, buf, 1 );
    e885493e:	4605                	li	a2,1
    e8854940:	080c                	addi	a1,sp,16
    e8854942:	4541                	li	a0,16
    e8854944:	0361f0ef          	jal	ra,e887397a <lib_iic_read>
    e8854948:	0005041b          	sext.w	s0,a0
		if(buf[ 0 ] & kMFiAuthFlagError)
    e885494c:	01014783          	lbu	a5,16(sp)
    e8854950:	fc77b70b          	extu	a4,a5,63,7
    e8854954:	cb01                	beqz	a4,e8854964 <MFiPlatform_CreateSignature+0xee>
			printf("read kMFiAuthReg_AuthControlStatus fail\r\n");
    e8854956:	0006d517          	auipc	a0,0x6d
    e885495a:	e3250513          	addi	a0,a0,-462 # e88c1788 <__PRETTY_FUNCTION__.9099+0x60>
    e885495e:	169270ef          	jal	ra,e887c2c6 <eLIBs_printf>
			goto exit;
    e8854962:	b7a5                	j	e88548ca <MFiPlatform_CreateSignature+0x54>
		if((buf[ 0 ] & 0x70) == 0x10)
    e8854964:	0707f793          	andi	a5,a5,112
    e8854968:	4741                	li	a4,16
    e885496a:	02e79463          	bne	a5,a4,e8854992 <MFiPlatform_CreateSignature+0x11c>
			printf("read kMFiAuthReg_AuthControlStatus success %d\r\n",i);
    e885496e:	85a6                	mv	a1,s1
    e8854970:	0006d517          	auipc	a0,0x6d
    e8854974:	e4850513          	addi	a0,a0,-440 # e88c17b8 <__PRETTY_FUNCTION__.9099+0x90>
    e8854978:	14f270ef          	jal	ra,e887c2c6 <eLIBs_printf>
	require_noerr( err, exit );
    e885497c:	f439                	bnez	s0,e88548ca <MFiPlatform_CreateSignature+0x54>
	require_action( !( buf[ 0 ] & kMFiAuthFlagError ), exit, err = kUnknownErr );
    e885497e:	01010783          	lb	a5,16(sp)
    e8854982:	0207d063          	bgez	a5,e88549a2 <MFiPlatform_CreateSignature+0x12c>
    e8854986:	7479                	lui	s0,0xffffe
	lib_iic_close();
    e8854988:	7d11e0ef          	jal	ra,e8873958 <lib_iic_close>
	require_action( !( buf[ 0 ] & kMFiAuthFlagError ), exit, err = kUnknownErr );
    e885498c:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8854990:	b78d                	j	e88548f2 <MFiPlatform_CreateSignature+0x7c>
		Sleep(100);
    e8854992:	4529                	li	a0,10
    e8854994:	682270ef          	jal	ra,e887c016 <esKRNL_TimeDly>
	for(i=0;i<10;i++)
    e8854998:	2485                	addiw	s1,s1,1
    e885499a:	47a9                	li	a5,10
    e885499c:	faf491e3          	bne	s1,a5,e885493e <MFiPlatform_CreateSignature+0xc8>
    e88549a0:	bff1                	j	e885497c <MFiPlatform_CreateSignature+0x106>
	err = lib_iic_read( kMFiAuthReg_SignatureSize, buf, 2 );
    e88549a2:	4609                	li	a2,2
    e88549a4:	080c                	addi	a1,sp,16
    e88549a6:	4545                	li	a0,17
    e88549a8:	7d31e0ef          	jal	ra,e887397a <lib_iic_read>
    e88549ac:	0005041b          	sext.w	s0,a0
	require_noerr( err, exit );
    e88549b0:	f0041de3          	bnez	s0,e88548ca <MFiPlatform_CreateSignature+0x54>
	signatureLen = ( buf[ 0 ] << 8 ) | buf[ 1 ];
    e88549b4:	01015783          	lhu	a5,16(sp)
    e88549b8:	0087949b          	slliw	s1,a5,0x8
    e88549bc:	5c87b78b          	extu	a5,a5,23,8
    e88549c0:	8cdd                	or	s1,s1,a5
    e88549c2:	3c04b48b          	extu	s1,s1,15,0
    e88549c6:	0004861b          	sext.w	a2,s1
    e88549ca:	e432                	sd	a2,8(sp)
	require_action( signatureLen > 0, exit, err = kSizeErr );
    e88549cc:	f0048ee3          	beqz	s1,e88548e8 <MFiPlatform_CreateSignature+0x72>
	signaturePtr = (uint8_t *) malloc( signatureLen );
    e88549d0:	8526                	mv	a0,s1
    e88549d2:	67d260ef          	jal	ra,e887b84e <my_malloc>
    e88549d6:	892a                	mv	s2,a0
	require_action( signaturePtr, exit, err = kNoMemoryErr );
    e88549d8:	6622                	ld	a2,8(sp)
    e88549da:	e519                	bnez	a0,e88549e8 <MFiPlatform_CreateSignature+0x172>
    e88549dc:	7479                	lui	s0,0xffffe
	lib_iic_close();
    e88549de:	77b1e0ef          	jal	ra,e8873958 <lib_iic_close>
	require_action( signaturePtr, exit, err = kNoMemoryErr );
    e88549e2:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88549e6:	b731                	j	e88548f2 <MFiPlatform_CreateSignature+0x7c>
	err = lib_iic_read( kMFiAuthReg_SignatureData, signaturePtr, signatureLen );
    e88549e8:	85aa                	mv	a1,a0
    e88549ea:	4549                	li	a0,18
    e88549ec:	78f1e0ef          	jal	ra,e887397a <lib_iic_read>
    e88549f0:	0005041b          	sext.w	s0,a0
	if( err ) free( signaturePtr );
    e88549f4:	c409                	beqz	s0,e88549fe <MFiPlatform_CreateSignature+0x188>
    e88549f6:	854a                	mv	a0,s2
    e88549f8:	109270ef          	jal	ra,e887c300 <eLIBs_free>
	require_noerr( err, exit );
    e88549fc:	b5f9                	j	e88548ca <MFiPlatform_CreateSignature+0x54>
	*outSignaturePtr = signaturePtr;
    e88549fe:	012a3023          	sd	s2,0(s4)
	*outSignatureLen = signatureLen;
    e8854a02:	0099b023          	sd	s1,0(s3)
	lib_iic_close();
    e8854a06:	7531e0ef          	jal	ra,e8873958 <lib_iic_close>
	return( err );
    e8854a0a:	b5d9                	j	e88548d0 <MFiPlatform_CreateSignature+0x5a>

00000000e8854a0c <MFiPlatform_CopyCertificate>:
//===========================================================================================================================
//	MFiPlatform_CopyCertificate
//===========================================================================================================================

OSStatus	MFiPlatform_CopyCertificate( uint8_t **outCertificatePtr, size_t *outCertificateLen )
{
    e8854a0c:	715d                	addi	sp,sp,-80
    e8854a0e:	e0a2                	sd	s0,64(sp)
    e8854a10:	f44e                	sd	s3,40(sp)
    e8854a12:	f052                	sd	s4,32(sp)
    e8854a14:	e486                	sd	ra,72(sp)
    e8854a16:	fc26                	sd	s1,56(sp)
    e8854a18:	f84a                	sd	s2,48(sp)
    e8854a1a:	8a2a                	mv	s4,a0
    e8854a1c:	89ae                	mv	s3,a1
	int				fd = -1;
	Boolean			locked = false;
	uint8_t			buf[ 2 ];
	
	mfilog( kLogLevelVerbose, "MFi auth copy certificate\n" );
	lib_iic_open();
    e8854a1e:	70d1e0ef          	jal	ra,e887392a <lib_iic_open>
	
	// If the certificate has already been cached then return that as an optimization since it doesn't change.
	
	if( gMFiCertificateLen > 0 )
    e8854a22:	0008f417          	auipc	s0,0x8f
    e8854a26:	2fe40413          	addi	s0,s0,766 # e88e3d20 <gMFiCertificateLen>
    e8854a2a:	6008                	ld	a0,0(s0)
    e8854a2c:	c939                	beqz	a0,e8854a82 <MFiPlatform_CopyCertificate+0x76>
	{
		mfilog( kLogLevelVerbose, "MFi auth copy certificate already done: %d bytes\n", gMFiCertificateLen );
		certificatePtr = (uint8_t *) malloc( gMFiCertificateLen );
    e8854a2e:	621260ef          	jal	ra,e887b84e <my_malloc>
    e8854a32:	84aa                	mv	s1,a0
		require_action( certificatePtr, exit, err = kNoMemoryErr );
    e8854a34:	ed11                	bnez	a0,e8854a50 <MFiPlatform_CopyCertificate+0x44>
    e8854a36:	7479                	lui	s0,0xffffe
	mfilog( kLogLevelVerbose, "MFi auth copy certificate done: %d bytes\n", certificateLen );
	*outCertificatePtr = certificatePtr;
	*outCertificateLen = certificateLen;
	
exit:
	lib_iic_close();
    e8854a38:	7211e0ef          	jal	ra,e8873958 <lib_iic_close>
		require_action( certificatePtr, exit, err = kNoMemoryErr );
    e8854a3c:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	if( err )		mfilog( kLogLevelWarning, "### MFi auth copy certificate failed: %#m\n", err );
    e8854a40:	85a2                	mv	a1,s0
    e8854a42:	0006d517          	auipc	a0,0x6d
    e8854a46:	cf650513          	addi	a0,a0,-778 # e88c1738 <__PRETTY_FUNCTION__.9099+0x10>
    e8854a4a:	07d270ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8854a4e:	a00d                	j	e8854a70 <MFiPlatform_CopyCertificate+0x64>
		memcpy( certificatePtr, gMFiCertificatePtr, gMFiCertificateLen );
    e8854a50:	0008f797          	auipc	a5,0x8f
    e8854a54:	2d878793          	addi	a5,a5,728 # e88e3d28 <gMFiCertificatePtr>
    e8854a58:	6010                	ld	a2,0(s0)
    e8854a5a:	638c                	ld	a1,0(a5)
    e8854a5c:	145270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		*outCertificatePtr = certificatePtr;
    e8854a60:	009a3023          	sd	s1,0(s4)
		*outCertificateLen = gMFiCertificateLen;
    e8854a64:	601c                	ld	a5,0(s0)
		err = kNoErr;
    e8854a66:	4401                	li	s0,0
		*outCertificateLen = gMFiCertificateLen;
    e8854a68:	00f9b023          	sd	a5,0(s3)
	lib_iic_close();
    e8854a6c:	6ed1e0ef          	jal	ra,e8873958 <lib_iic_close>
	return( err );
}
    e8854a70:	8522                	mv	a0,s0
    e8854a72:	60a6                	ld	ra,72(sp)
    e8854a74:	6406                	ld	s0,64(sp)
    e8854a76:	74e2                	ld	s1,56(sp)
    e8854a78:	7942                	ld	s2,48(sp)
    e8854a7a:	79a2                	ld	s3,40(sp)
    e8854a7c:	7a02                	ld	s4,32(sp)
    e8854a7e:	6161                	addi	sp,sp,80
    e8854a80:	8082                	ret
	err = lib_iic_read( kMFiAuthReg_DeviceCertificateSize, buf, 2 );
    e8854a82:	4609                	li	a2,2
    e8854a84:	082c                	addi	a1,sp,24
    e8854a86:	03000513          	li	a0,48
    e8854a8a:	6f11e0ef          	jal	ra,e887397a <lib_iic_read>
    e8854a8e:	0005041b          	sext.w	s0,a0
	require_noerr( err, exit );
    e8854a92:	e429                	bnez	s0,e8854adc <MFiPlatform_CopyCertificate+0xd0>
	certificateLen = ( buf[ 0 ] << 8 ) | buf[ 1 ];
    e8854a94:	01815783          	lhu	a5,24(sp)
    e8854a98:	0087949b          	slliw	s1,a5,0x8
    e8854a9c:	5c87b78b          	extu	a5,a5,23,8
    e8854aa0:	8cdd                	or	s1,s1,a5
    e8854aa2:	3c04b48b          	extu	s1,s1,15,0
    e8854aa6:	0004861b          	sext.w	a2,s1
	require_action( certificateLen > 0, exit, err = kSizeErr );
    e8854aaa:	e499                	bnez	s1,e8854ab8 <MFiPlatform_CopyCertificate+0xac>
    e8854aac:	7479                	lui	s0,0xffffe
	lib_iic_close();
    e8854aae:	6ab1e0ef          	jal	ra,e8873958 <lib_iic_close>
	require_action( certificateLen > 0, exit, err = kSizeErr );
    e8854ab2:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e8854ab6:	b769                	j	e8854a40 <MFiPlatform_CopyCertificate+0x34>
	certificatePtr = (uint8_t *) malloc( certificateLen );
    e8854ab8:	8526                	mv	a0,s1
    e8854aba:	e432                	sd	a2,8(sp)
    e8854abc:	593260ef          	jal	ra,e887b84e <my_malloc>
    e8854ac0:	892a                	mv	s2,a0
	require_action( certificatePtr, exit, err = kNoMemoryErr );
    e8854ac2:	d935                	beqz	a0,e8854a36 <MFiPlatform_CopyCertificate+0x2a>
	err = lib_iic_read( kMFiAuthReg_DeviceCertificateData1, certificatePtr, certificateLen );
    e8854ac4:	6622                	ld	a2,8(sp)
    e8854ac6:	85aa                	mv	a1,a0
    e8854ac8:	03100513          	li	a0,49
    e8854acc:	6af1e0ef          	jal	ra,e887397a <lib_iic_read>
    e8854ad0:	0005041b          	sext.w	s0,a0
	if( err ) free( certificatePtr );
    e8854ad4:	c419                	beqz	s0,e8854ae2 <MFiPlatform_CopyCertificate+0xd6>
    e8854ad6:	854a                	mv	a0,s2
    e8854ad8:	029270ef          	jal	ra,e887c300 <eLIBs_free>
	lib_iic_close();
    e8854adc:	67d1e0ef          	jal	ra,e8873958 <lib_iic_close>
	if( err )		mfilog( kLogLevelWarning, "### MFi auth copy certificate failed: %#m\n", err );
    e8854ae0:	b785                	j	e8854a40 <MFiPlatform_CopyCertificate+0x34>
	*outCertificatePtr = certificatePtr;
    e8854ae2:	012a3023          	sd	s2,0(s4)
	*outCertificateLen = certificateLen;
    e8854ae6:	0099b023          	sd	s1,0(s3)
	lib_iic_close();
    e8854aea:	66f1e0ef          	jal	ra,e8873958 <lib_iic_close>
	return( err );
    e8854aee:	b749                	j	e8854a70 <MFiPlatform_CopyCertificate+0x64>

00000000e8854af0 <MFiPlatform_Initialize>:
{
    e8854af0:	1141                	addi	sp,sp,-16
	MFiPlatform_CopyCertificate( &gMFiCertificatePtr, &gMFiCertificateLen );
    e8854af2:	0008f597          	auipc	a1,0x8f
    e8854af6:	22e58593          	addi	a1,a1,558 # e88e3d20 <gMFiCertificateLen>
    e8854afa:	0008f517          	auipc	a0,0x8f
    e8854afe:	22e50513          	addi	a0,a0,558 # e88e3d28 <gMFiCertificatePtr>
{
    e8854b02:	e406                	sd	ra,8(sp)
	MFiPlatform_CopyCertificate( &gMFiCertificatePtr, &gMFiCertificateLen );
    e8854b04:	f09ff0ef          	jal	ra,e8854a0c <MFiPlatform_CopyCertificate>
}
    e8854b08:	60a2                	ld	ra,8(sp)
    e8854b0a:	4501                	li	a0,0
    e8854b0c:	0141                	addi	sp,sp,16
    e8854b0e:	8082                	ret

00000000e8854b10 <iceil2>:

uint32_t	iceil2( uint32_t x )
{
	check( x <= UINT32_C( 0x80000000 ) );
	
	x = x - 1;
    e8854b10:	fff5079b          	addiw	a5,a0,-1
	x |= ( x >> 1 );
    e8854b14:	0017d51b          	srliw	a0,a5,0x1
    e8854b18:	8d5d                	or	a0,a0,a5
	x |= ( x >> 2 );
    e8854b1a:	0025579b          	srliw	a5,a0,0x2
    e8854b1e:	8d5d                	or	a0,a0,a5
    e8854b20:	2501                	sext.w	a0,a0
	x |= ( x >> 4 );
    e8854b22:	0045579b          	srliw	a5,a0,0x4
    e8854b26:	8d5d                	or	a0,a0,a5
    e8854b28:	2501                	sext.w	a0,a0
	x |= ( x >> 8 );
    e8854b2a:	0085579b          	srliw	a5,a0,0x8
    e8854b2e:	8d5d                	or	a0,a0,a5
    e8854b30:	2501                	sext.w	a0,a0
	x |= ( x >> 16 );
    e8854b32:	0105579b          	srliw	a5,a0,0x10
    e8854b36:	8d5d                	or	a0,a0,a5
	return( x + 1 );
}
    e8854b38:	2505                	addiw	a0,a0,1
    e8854b3a:	8082                	ret

00000000e8854b3c <Swap16Mem>:
//===========================================================================================================================

void	Swap16Mem( const void *inSrc, size_t inLen, void *inDst )
{
	const uint16_t *			src = (const uint16_t *) inSrc;
	const uint16_t * const		end = src + ( inLen / 2 );
    e8854b3c:	99f9                	andi	a1,a1,-2
    e8854b3e:	95aa                	add	a1,a1,a0
	check( ( inLen % 2 ) == 0 );
	check( IsPtrAligned( src, 2 ) );
	check( IsPtrAligned( dst, 2 ) );
	check( ( src == dst ) || !PtrsOverlap( src, inLen, dst, inLen ) );
	
	while( src != end )
    e8854b40:	00b51363          	bne	a0,a1,e8854b46 <Swap16Mem+0xa>
	{
		*dst++ = ReadSwap16( src );
		++src;
	}
}
    e8854b44:	8082                	ret
		*dst++ = ReadSwap16( src );
    e8854b46:	00054783          	lbu	a5,0(a0)
    e8854b4a:	00154703          	lbu	a4,1(a0)
		++src;
    e8854b4e:	0509                	addi	a0,a0,2
		*dst++ = ReadSwap16( src );
    e8854b50:	0087979b          	slliw	a5,a5,0x8
    e8854b54:	8fd9                	or	a5,a5,a4
    e8854b56:	3826578b          	shia	a5,(a2),2,0
		++src;
    e8854b5a:	b7dd                	j	e8854b40 <Swap16Mem+0x4>

00000000e8854b5c <GetHomePath>:
//===========================================================================================================================

#if( TARGET_OS_POSIX )
char *	GetHomePath( char *inBuffer, size_t inMaxLen )
{
    eLIBs_strcpy(inBuffer,"e:\\CarPlay");
    e8854b5c:	0006d597          	auipc	a1,0x6d
    e8854b60:	81458593          	addi	a1,a1,-2028 # e88c1370 <__PRETTY_FUNCTION__.9824+0x28>
    e8854b64:	7c02706f          	j	e887c324 <eLIBs_strcpy>

00000000e8854b68 <mkpath>:
//	Copied from the mkdir tool and tweaked to work with const paths and without console output.
//===========================================================================================================================

int	mkpath( const char *path, mode_t mode, mode_t dir_mode )
{
	return mkdir(path,mode);
    e8854b68:	7182706f          	j	e887c280 <eLIBs_mkdir>

00000000e8854b6c <NormalizePath>:
	return( ( inMaxLen > 0 ) ? inDst : "" );
}
#else
char *	NormalizePath( const char *inSrc, size_t inLen, char *inDst, size_t inMaxLen, uint32_t inFlags )
{
	return strcpy(inDst,inSrc);
    e8854b6c:	85aa                	mv	a1,a0
    e8854b6e:	8532                	mv	a0,a2
    e8854b70:	7b42706f          	j	e887c324 <eLIBs_strcpy>

00000000e8854b74 <H264ConvertAVCCtoAnnexBHeader>:
		uint8_t *			inHeaderBuf,
		size_t				inHeaderMaxLen,
		size_t *			outHeaderLen,
		size_t *			outNALSize,
		const uint8_t **	outNext )
{
    e8854b74:	7119                	addi	sp,sp,-128
    e8854b76:	e4d6                	sd	s5,72(sp)
    e8854b78:	f466                	sd	s9,40(sp)
    e8854b7a:	fc86                	sd	ra,120(sp)
    e8854b7c:	f8a2                	sd	s0,112(sp)
    e8854b7e:	f4a6                	sd	s1,104(sp)
    e8854b80:	f0ca                	sd	s2,96(sp)
    e8854b82:	ecce                	sd	s3,88(sp)
    e8854b84:	e8d2                	sd	s4,80(sp)
    e8854b86:	e0da                	sd	s6,64(sp)
    e8854b88:	fc5e                	sd	s7,56(sp)
    e8854b8a:	f862                	sd	s8,48(sp)
    e8854b8c:	f06a                	sd	s10,32(sp)
    e8854b8e:	ec6e                	sd	s11,24(sp)
	const uint8_t *				src = inAVCCPtr;
	const uint8_t * const		end = src + inAVCCLen;
	uint8_t * const				buf = inHeaderBuf;
	uint8_t *					dst = buf;
	const uint8_t * const		lim = dst + inHeaderMaxLen;
    e8854b90:	00d60ab3          	add	s5,a2,a3
	// Annex-B format is documented in the H.264 spec in Annex-B.
	// Each NAL unit is prefixed with 0x00 0x00 0x00 0x01 and the nal_size from the AVCC is removed.
	
	// Write the SPS NAL units.
	
	require_action( ( end - src ) >= 6, exit, err = kSizeErr );
    e8854b94:	4695                	li	a3,5
	const uint8_t * const		end = src + inAVCCLen;
    e8854b96:	00b50cb3          	add	s9,a0,a1
	require_action( ( end - src ) >= 6, exit, err = kSizeErr );
    e8854b9a:	12b6db63          	bge	a3,a1,e8854cd0 <H264ConvertAVCCtoAnnexBHeader+0x15c>
	nalSize	= ( src[ 4 ] & 0x03 ) + 1;
	n		=   src[ 5 ] & 0x1F;
    e8854b9e:	00554b03          	lbu	s6,5(a0)
	nalSize	= ( src[ 4 ] & 0x03 ) + 1;
    e8854ba2:	00454483          	lbu	s1,4(a0)
    e8854ba6:	8a3a                	mv	s4,a4
    e8854ba8:	8942                	mv	s2,a6
    e8854baa:	89be                	mv	s3,a5
    e8854bac:	8d32                	mv	s10,a2
	n		=   src[ 5 ] & 0x1F;
    e8854bae:	01fb7b13          	andi	s6,s6,31
	src		=  &src[ 6 ];
    e8854bb2:	00650593          	addi	a1,a0,6
	uint8_t *					dst = buf;
    e8854bb6:	8db2                	mv	s11,a2
	for( i = 0; i < n; ++i )
    e8854bb8:	4b81                	li	s7,0
	{
		require_action( ( end - src ) >= 2, exit, err = kUnderrunErr );
    e8854bba:	4705                	li	a4,1
		
		require_action( ( end - src ) >= len, exit, err = kUnderrunErr );
		if( inHeaderBuf )
		{
			require_action( ( lim - dst ) >= ( 4 + len ), exit, err = kOverrunErr );
			dst[ 0 ] = 0x00;
    e8854bbc:	010006b7          	lui	a3,0x1000
	for( i = 0; i < n; ++i )
    e8854bc0:	40bc87b3          	sub	a5,s9,a1
    e8854bc4:	036bce63          	blt	s7,s6,e8854c00 <H264ConvertAVCCtoAnnexBHeader+0x8c>
		dst += ( 4 + len );
	}
	
	// Write PPS NAL units.
	
	if( ( end - src ) >= 1 )
    e8854bc8:	00f05a63          	blez	a5,e8854bdc <H264ConvertAVCCtoAnnexBHeader+0x68>
	{
		n = *src++;
    e8854bcc:	9815c78b          	lbuia	a5,(a1),1,0
		for( i = 0; i < n; ++i )
    e8854bd0:	4b01                	li	s6,0
		{
			require_action( ( end - src ) >= 2, exit, err = kUnderrunErr );
    e8854bd2:	4705                	li	a4,1
			
			require_action( ( end - src ) >= len, exit, err = kUnderrunErr );
			if( inHeaderBuf )
			{
				require_action( ( lim - dst ) >= ( 4 + len ), exit, err = kOverrunErr );
				dst[ 0 ] = 0x00;
    e8854bd4:	010006b7          	lui	a3,0x1000
		for( i = 0; i < n; ++i )
    e8854bd8:	0afb4263          	blt	s6,a5,e8854c7c <H264ConvertAVCCtoAnnexBHeader+0x108>
			src += len;
			dst += ( 4 + len );
		}
	}
	
	if( outHeaderLen )	*outHeaderLen	= (size_t)( dst - buf );
    e8854bdc:	000a0663          	beqz	s4,e8854be8 <H264ConvertAVCCtoAnnexBHeader+0x74>
    e8854be0:	41ad8633          	sub	a2,s11,s10
    e8854be4:	00ca3023          	sd	a2,0(s4)
	if( outNALSize )	*outNALSize		= nalSize;
    e8854be8:	00098663          	beqz	s3,e8854bf4 <H264ConvertAVCCtoAnnexBHeader+0x80>
	nalSize	= ( src[ 4 ] & 0x03 ) + 1;
    e8854bec:	888d                	andi	s1,s1,3
    e8854bee:	0485                	addi	s1,s1,1
    e8854bf0:	0099b023          	sd	s1,0(s3)
	if( outNext )		*outNext		= src;
	err = kNoErr;
    e8854bf4:	4501                	li	a0,0
	if( outNext )		*outNext		= src;
    e8854bf6:	00090a63          	beqz	s2,e8854c0a <H264ConvertAVCCtoAnnexBHeader+0x96>
    e8854bfa:	00b93023          	sd	a1,0(s2)
    e8854bfe:	a031                	j	e8854c0a <H264ConvertAVCCtoAnnexBHeader+0x96>
		require_action( ( end - src ) >= 2, exit, err = kUnderrunErr );
    e8854c00:	02f74463          	blt	a4,a5,e8854c28 <H264ConvertAVCCtoAnnexBHeader+0xb4>
    e8854c04:	7579                	lui	a0,0xffffe
    e8854c06:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
	
exit:
	return( err );
}
    e8854c0a:	70e6                	ld	ra,120(sp)
    e8854c0c:	7446                	ld	s0,112(sp)
    e8854c0e:	74a6                	ld	s1,104(sp)
    e8854c10:	7906                	ld	s2,96(sp)
    e8854c12:	69e6                	ld	s3,88(sp)
    e8854c14:	6a46                	ld	s4,80(sp)
    e8854c16:	6aa6                	ld	s5,72(sp)
    e8854c18:	6b06                	ld	s6,64(sp)
    e8854c1a:	7be2                	ld	s7,56(sp)
    e8854c1c:	7c42                	ld	s8,48(sp)
    e8854c1e:	7ca2                	ld	s9,40(sp)
    e8854c20:	7d02                	ld	s10,32(sp)
    e8854c22:	6de2                	ld	s11,24(sp)
    e8854c24:	6109                	addi	sp,sp,128
    e8854c26:	8082                	ret
		len = (uint16_t)( ( src[ 0 ] << 8 ) | src[ 1 ] );
    e8854c28:	0005c403          	lbu	s0,0(a1)
    e8854c2c:	0015c783          	lbu	a5,1(a1)
		src += 2;
    e8854c30:	00258c13          	addi	s8,a1,2
		len = (uint16_t)( ( src[ 0 ] << 8 ) | src[ 1 ] );
    e8854c34:	0084141b          	slliw	s0,s0,0x8
    e8854c38:	8c5d                	or	s0,s0,a5
		require_action( ( end - src ) >= len, exit, err = kUnderrunErr );
    e8854c3a:	418c87b3          	sub	a5,s9,s8
    e8854c3e:	fc87c3e3          	blt	a5,s0,e8854c04 <H264ConvertAVCCtoAnnexBHeader+0x90>
		if( inHeaderBuf )
    e8854c42:	00440793          	addi	a5,s0,4
    e8854c46:	020d0663          	beqz	s10,e8854c72 <H264ConvertAVCCtoAnnexBHeader+0xfe>
			require_action( ( lim - dst ) >= ( 4 + len ), exit, err = kOverrunErr );
    e8854c4a:	41ba8633          	sub	a2,s5,s11
    e8854c4e:	00f65663          	bge	a2,a5,e8854c5a <H264ConvertAVCCtoAnnexBHeader+0xe6>
    e8854c52:	7579                	lui	a0,0xffffe
    e8854c54:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e8854c58:	bf4d                	j	e8854c0a <H264ConvertAVCCtoAnnexBHeader+0x96>
			dst[ 0 ] = 0x00;
    e8854c5a:	856e                	mv	a0,s11
    e8854c5c:	5845568b          	swia	a3,(a0),4,0
			memcpy( dst + 4, src, len );
    e8854c60:	8622                	mv	a2,s0
    e8854c62:	85e2                	mv	a1,s8
    e8854c64:	e43e                	sd	a5,8(sp)
			dst[ 0 ] = 0x00;
    e8854c66:	e036                	sd	a3,0(sp)
			memcpy( dst + 4, src, len );
    e8854c68:	738270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e8854c6c:	67a2                	ld	a5,8(sp)
    e8854c6e:	6682                	ld	a3,0(sp)
    e8854c70:	4705                	li	a4,1
		src += len;
    e8854c72:	008c05b3          	add	a1,s8,s0
		dst += ( 4 + len );
    e8854c76:	9dbe                	add	s11,s11,a5
	for( i = 0; i < n; ++i )
    e8854c78:	2b85                	addiw	s7,s7,1
    e8854c7a:	b799                	j	e8854bc0 <H264ConvertAVCCtoAnnexBHeader+0x4c>
			require_action( ( end - src ) >= 2, exit, err = kUnderrunErr );
    e8854c7c:	40bc8633          	sub	a2,s9,a1
    e8854c80:	f8c752e3          	bge	a4,a2,e8854c04 <H264ConvertAVCCtoAnnexBHeader+0x90>
			len = (uint16_t)( ( src[ 0 ] << 8 ) | src[ 1 ] );
    e8854c84:	0005c403          	lbu	s0,0(a1)
    e8854c88:	0015c603          	lbu	a2,1(a1)
			src += 2;
    e8854c8c:	00258b93          	addi	s7,a1,2
			len = (uint16_t)( ( src[ 0 ] << 8 ) | src[ 1 ] );
    e8854c90:	0084141b          	slliw	s0,s0,0x8
    e8854c94:	8c51                	or	s0,s0,a2
			require_action( ( end - src ) >= len, exit, err = kUnderrunErr );
    e8854c96:	417c8633          	sub	a2,s9,s7
    e8854c9a:	f68645e3          	blt	a2,s0,e8854c04 <H264ConvertAVCCtoAnnexBHeader+0x90>
			if( inHeaderBuf )
    e8854c9e:	00440c13          	addi	s8,s0,4
    e8854ca2:	020d0263          	beqz	s10,e8854cc6 <H264ConvertAVCCtoAnnexBHeader+0x152>
    e8854ca6:	e43e                	sd	a5,8(sp)
				require_action( ( lim - dst ) >= ( 4 + len ), exit, err = kOverrunErr );
    e8854ca8:	41ba8633          	sub	a2,s5,s11
    e8854cac:	fb8643e3          	blt	a2,s8,e8854c52 <H264ConvertAVCCtoAnnexBHeader+0xde>
				dst[ 0 ] = 0x00;
    e8854cb0:	856e                	mv	a0,s11
    e8854cb2:	5845568b          	swia	a3,(a0),4,0
				memcpy( dst + 4, src, len );
    e8854cb6:	8622                	mv	a2,s0
    e8854cb8:	85de                	mv	a1,s7
				dst[ 0 ] = 0x00;
    e8854cba:	e036                	sd	a3,0(sp)
				memcpy( dst + 4, src, len );
    e8854cbc:	6e4270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e8854cc0:	67a2                	ld	a5,8(sp)
    e8854cc2:	6682                	ld	a3,0(sp)
    e8854cc4:	4705                	li	a4,1
			src += len;
    e8854cc6:	008b85b3          	add	a1,s7,s0
			dst += ( 4 + len );
    e8854cca:	9de2                	add	s11,s11,s8
		for( i = 0; i < n; ++i )
    e8854ccc:	2b05                	addiw	s6,s6,1
    e8854cce:	b729                	j	e8854bd8 <H264ConvertAVCCtoAnnexBHeader+0x64>
	require_action( ( end - src ) >= 6, exit, err = kSizeErr );
    e8854cd0:	7579                	lui	a0,0xffffe
    e8854cd2:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e8854cd6:	bf15                	j	e8854c0a <H264ConvertAVCCtoAnnexBHeader+0x96>

00000000e8854cd8 <H264GetNextNALUnit>:
		const uint8_t **	outSrc )
{
	OSStatus		err;
	size_t			len;
	
	require_action_quiet( inSrc != inEnd, exit, err = kEndingErr );
    e8854cd8:	04b50b63          	beq	a0,a1,e8854d2e <H264GetNextNALUnit+0x56>
	require_action_quiet( ( (size_t)( inEnd - inSrc ) ) >= inNALSize, exit, err = kUnderrunErr );
    e8854cdc:	40a58833          	sub	a6,a1,a0
    e8854ce0:	04c86f63          	bltu	a6,a2,e8854d3e <H264GetNextNALUnit+0x66>
	switch( inNALSize )
    e8854ce4:	4809                	li	a6,2
    e8854ce6:	03060363          	beq	a2,a6,e8854d0c <H264GetNextNALUnit+0x34>
    e8854cea:	4811                	li	a6,4
    e8854cec:	03060a63          	beq	a2,a6,e8854d20 <H264GetNextNALUnit+0x48>
    e8854cf0:	4805                	li	a6,1
    e8854cf2:	05061263          	bne	a2,a6,e8854d36 <H264GetNextNALUnit+0x5e>
	{
		case 1:
			len = *inSrc++;
    e8854cf6:	9815460b          	lbuia	a2,(a0),1,0
		
		default:
			err = kParamErr;
			goto exit;
	}
	require_action_quiet( ( (size_t)( inEnd - inSrc ) ) >= len, exit, err = kUnderrunErr );
    e8854cfa:	8d89                	sub	a1,a1,a0
    e8854cfc:	04c5e163          	bltu	a1,a2,e8854d3e <H264GetNextNALUnit+0x66>
	
	*outDataPtr = inSrc;
    e8854d00:	e288                	sd	a0,0(a3)
	*outDataLen = len;
	*outSrc		= inSrc + len;
    e8854d02:	9532                	add	a0,a0,a2
	*outDataLen = len;
    e8854d04:	e310                	sd	a2,0(a4)
	*outSrc		= inSrc + len;
    e8854d06:	e388                	sd	a0,0(a5)
	err = kNoErr;
    e8854d08:	4501                	li	a0,0
    e8854d0a:	8082                	ret
			len = ReadBig16( inSrc );
    e8854d0c:	00054603          	lbu	a2,0(a0)
    e8854d10:	00154803          	lbu	a6,1(a0)
			inSrc += 2;
    e8854d14:	0509                	addi	a0,a0,2
			len = ReadBig16( inSrc );
    e8854d16:	0086161b          	slliw	a2,a2,0x8
    e8854d1a:	01066633          	or	a2,a2,a6
			break;
    e8854d1e:	bff1                	j	e8854cfa <H264GetNextNALUnit+0x22>
			len = ReadBig32( inSrc );
    e8854d20:	5845460b          	lwia	a2,(a0),4,0
    e8854d24:	9006160b          	revw	a2,a2
    e8854d28:	7c06360b          	extu	a2,a2,31,0
			break;
    e8854d2c:	b7f9                	j	e8854cfa <H264GetNextNALUnit+0x22>
	require_action_quiet( inSrc != inEnd, exit, err = kEndingErr );
    e8854d2e:	7579                	lui	a0,0xffffe
    e8854d30:	5a050513          	addi	a0,a0,1440 # ffffffffffffe5a0 <__DRAM0_INF_BASE+0xffffffff0000e5a0>
    e8854d34:	8082                	ret
			err = kParamErr;
    e8854d36:	7579                	lui	a0,0xffffe
    e8854d38:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8854d3c:	8082                	ret
	require_action_quiet( ( (size_t)( inEnd - inSrc ) ) >= inNALSize, exit, err = kUnderrunErr );
    e8854d3e:	7579                	lui	a0,0xffffe
    e8854d40:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
	
exit:
	return( err );
}
    e8854d44:	8082                	ret

00000000e8854d46 <MirroredRingBufferInit>:
//===========================================================================================================================
//	MirroredRingBufferInit
//===========================================================================================================================

OSStatus	MirroredRingBufferInit( MirroredRingBuffer *inRing, size_t inMinSize, Boolean inPowerOf2 )
{
    e8854d46:	1101                	addi	sp,sp,-32
    e8854d48:	e822                	sd	s0,16(sp)
    e8854d4a:	ec06                	sd	ra,24(sp)
    e8854d4c:	842a                	mv	s0,a0
	
	// Allocate a buffer 2x the size so we can remap the 2nd chunk to the 1st chunk.
	// If we're requiring a power-of-2 sized buffer then make sure the length is increased to the nearest power of 2.
	
	len = inMinSize;
	if( inPowerOf2 ) len = iceil2( (uint32_t) len );
    e8854d4e:	c619                	beqz	a2,e8854d5c <MirroredRingBufferInit+0x16>
    e8854d50:	0005851b          	sext.w	a0,a1
    e8854d54:	dbdff0ef          	jal	ra,e8854b10 <iceil2>
    e8854d58:	7c05358b          	extu	a1,a0,31,0

	base = malloc(len*2);
    e8854d5c:	00159513          	slli	a0,a1,0x1
    e8854d60:	e42e                	sd	a1,8(sp)
    e8854d62:	2ed260ef          	jal	ra,e887b84e <my_malloc>
	err = map_global_value_errno( base, base );
    e8854d66:	65a2                	ld	a1,8(sp)
    e8854d68:	ed11                	bnez	a0,e8854d84 <MirroredRingBufferInit+0x3e>
    e8854d6a:	00090797          	auipc	a5,0x90
    e8854d6e:	8be78793          	addi	a5,a5,-1858 # e88e4628 <lwip_errno>
    e8854d72:	4388                	lw	a0,0(a5)
    e8854d74:	e501                	bnez	a0,e8854d7c <MirroredRingBufferInit+0x36>
    e8854d76:	7579                	lui	a0,0xffffe
    e8854d78:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	inRing->readOffset	= 0;
	inRing->writeOffset	= 0;
	
exit:
	return( err );
}
    e8854d7c:	60e2                	ld	ra,24(sp)
    e8854d7e:	6442                	ld	s0,16(sp)
    e8854d80:	6105                	addi	sp,sp,32
    e8854d82:	8082                	ret
	inRing->buffer		= base;
    e8854d84:	e008                	sd	a0,0(s0)
	inRing->end			= base + len;
    e8854d86:	952e                	add	a0,a0,a1
	inRing->size		= (uint32_t) len;
    e8854d88:	2581                	sext.w	a1,a1
    e8854d8a:	c80c                	sw	a1,16(s0)
	inRing->mask		= (uint32_t)( len - 1 );
    e8854d8c:	35fd                	addiw	a1,a1,-1
	inRing->end			= base + len;
    e8854d8e:	e408                	sd	a0,8(s0)
	inRing->mask		= (uint32_t)( len - 1 );
    e8854d90:	c84c                	sw	a1,20(s0)
	inRing->readOffset	= 0;
    e8854d92:	00043c23          	sd	zero,24(s0)
    e8854d96:	4501                	li	a0,0
    e8854d98:	b7d5                	j	e8854d7c <MirroredRingBufferInit+0x36>

00000000e8854d9a <MirroredRingBufferFree>:
}
#endif

#if( TARGET_OS_POSIX && !TARGET_MACH )
void	MirroredRingBufferFree( MirroredRingBuffer *inRing )
{
    e8854d9a:	1141                	addi	sp,sp,-16
    e8854d9c:	e022                	sd	s0,0(sp)
    e8854d9e:	e406                	sd	ra,8(sp)
    e8854da0:	842a                	mv	s0,a0
	OSStatus		err;
	
	if( inRing->buffer )
    e8854da2:	6108                	ld	a0,0(a0)
    e8854da4:	c509                	beqz	a0,e8854dae <MirroredRingBufferFree+0x14>
	{
		if( inRing->buffer ) free(inRing->buffer);
    e8854da6:	55a270ef          	jal	ra,e887c300 <eLIBs_free>
		inRing->buffer = NULL;
    e8854daa:	00043023          	sd	zero,0(s0)
	}
	memset( inRing, 0, sizeof( *inRing ) );
    e8854dae:	8522                	mv	a0,s0
}
    e8854db0:	6402                	ld	s0,0(sp)
    e8854db2:	60a2                	ld	ra,8(sp)
	memset( inRing, 0, sizeof( *inRing ) );
    e8854db4:	02000613          	li	a2,32
    e8854db8:	4581                	li	a1,0
}
    e8854dba:	0141                	addi	sp,sp,16
	memset( inRing, 0, sizeof( *inRing ) );
    e8854dbc:	5d82706f          	j	e887c394 <eLIBs_memset>

00000000e8854dc0 <_NetTransportInitialize>:

static OSStatus	_NetTransportInitialize( SocketRef inSock, void *inContext )
{
	NTContext * const		ctx = (NTContext *) inContext;
	
	ctx->sock = inSock;
    e8854dc0:	c188                	sw	a0,0(a1)
	return( kNoErr );
}
    e8854dc2:	4501                	li	a0,0
    e8854dc4:	8082                	ret

00000000e8854dc6 <_NetTransportWriteV>:
//===========================================================================================================================
//	_NetTransportWriteV
//===========================================================================================================================

static OSStatus	_NetTransportWriteV( iovec_t **ioArray, int *ioCount, void *inContext )
{
    e8854dc6:	7155                	addi	sp,sp,-208
    e8854dc8:	ed56                	sd	s5,152(sp)
	
	for( ;; )
	{
		// If there's any encrypted data buffered, use that first.
		
		len = (size_t)( ctx->writeBufferedEnd - ctx->writeBufferedPtr );
    e8854dca:	6a91                	lui	s5,0x4
{
    e8854dcc:	f94a                	sd	s2,176(sp)
    e8854dce:	f54e                	sd	s3,168(sp)
    e8854dd0:	f152                	sd	s4,160(sp)
    e8854dd2:	e95a                	sd	s6,144(sp)
    e8854dd4:	e162                	sd	s8,128(sp)
    e8854dd6:	f4ee                	sd	s11,104(sp)
    e8854dd8:	e586                	sd	ra,200(sp)
    e8854dda:	e1a2                	sd	s0,192(sp)
    e8854ddc:	fd26                	sd	s1,184(sp)
    e8854dde:	e55e                	sd	s7,136(sp)
    e8854de0:	fce6                	sd	s9,120(sp)
    e8854de2:	f8ea                	sd	s10,112(sp)
			break;
		}
		
		// Encrypt and authenticate the message.
		
		chacha20_poly1305_init_64x64( &ctx->writeCtx, ctx->writeKey, ctx->writeNonce );
    e8854de4:	6c0a8d93          	addi	s11,s5,1728 # 46c0 <memcmp-0xe87fb940>
	iovec_t * const				ioe = iop + *ioCount;
    e8854de8:	4184                	lw	s1,0(a1)
		chacha20_poly1305_init_64x64( &ctx->writeCtx, ctx->writeKey, ctx->writeNonce );
    e8854dea:	01b607b3          	add	a5,a2,s11
	iovec_t *					iop = *ioArray;
    e8854dee:	00053c83          	ld	s9,0(a0)
	const uint8_t * const		lim = ctx->writeBuffer + 2 + kMaxMessageWriteSize;
    e8854df2:	6a11                	lui	s4,0x4
		chacha20_poly1305_init_64x64( &ctx->writeCtx, ctx->writeKey, ctx->writeNonce );
    e8854df4:	6a0a8c13          	addi	s8,s5,1696
	const uint8_t * const		lim = ctx->writeBuffer + 2 + kMaxMessageWriteSize;
    e8854df8:	57aa0a13          	addi	s4,s4,1402 # 457a <memcmp-0xe87fba86>
	iovec_t * const				ioe = iop + *ioCount;
    e8854dfc:	0492                	slli	s1,s1,0x4
		chacha20_poly1305_init_64x64( &ctx->writeCtx, ctx->writeKey, ctx->writeNonce );
    e8854dfe:	5a0a8b13          	addi	s6,s5,1440
    e8854e02:	ec3e                	sd	a5,24(sp)
    e8854e04:	018607b3          	add	a5,a2,s8
{
    e8854e08:	e42a                	sd	a0,8(sp)
    e8854e0a:	e82e                	sd	a1,16(sp)
    e8854e0c:	8932                	mv	s2,a2
	const uint8_t * const		lim = ctx->writeBuffer + 2 + kMaxMessageWriteSize;
    e8854e0e:	9a32                	add	s4,s4,a2
	iovec_t * const				ioe = iop + *ioCount;
    e8854e10:	94e6                	add	s1,s1,s9
		len = (size_t)( ctx->writeBufferedEnd - ctx->writeBufferedPtr );
    e8854e12:	015609b3          	add	s3,a2,s5
		chacha20_poly1305_init_64x64( &ctx->writeCtx, ctx->writeKey, ctx->writeNonce );
    e8854e16:	9b32                	add	s6,s6,a2
    e8854e18:	f03e                	sd	a5,32(sp)
		len = (size_t)( ctx->writeBufferedEnd - ctx->writeBufferedPtr );
    e8854e1a:	5909b703          	ld	a4,1424(s3)
    e8854e1e:	5989b403          	ld	s0,1432(s3)
    e8854e22:	8c19                	sub	s0,s0,a4
		if( len > 0 )
    e8854e24:	cc29                	beqz	s0,e8854e7e <_NetTransportWriteV+0xb8>
			SETIOV( iov, ctx->writeBufferedPtr, len );
    e8854e26:	e0ba                	sd	a4,64(sp)
			iot = iov;
    e8854e28:	0098                	addi	a4,sp,64
			err = SocketWriteData( ctx->sock, &iot, &ion );
    e8854e2a:	00092503          	lw	a0,0(s2)
			iot = iov;
    e8854e2e:	fc3a                	sd	a4,56(sp)
			ion = 1;
    e8854e30:	4705                	li	a4,1
			err = SocketWriteData( ctx->sock, &iot, &ion );
    e8854e32:	1850                	addi	a2,sp,52
    e8854e34:	182c                	addi	a1,sp,56
			SETIOV( iov, ctx->writeBufferedPtr, len );
    e8854e36:	e4a2                	sd	s0,72(sp)
			ion = 1;
    e8854e38:	da3a                	sw	a4,52(sp)
			err = SocketWriteData( ctx->sock, &iot, &ion );
    e8854e3a:	6d1000ef          	jal	ra,e8855d0a <SocketWriteData>
			ctx->writeBufferedPtr += ( len - iov[ 0 ].iov_len );
    e8854e3e:	6726                	ld	a4,72(sp)
    e8854e40:	40e40733          	sub	a4,s0,a4
    e8854e44:	5909b403          	ld	s0,1424(s3)
    e8854e48:	943a                	add	s0,s0,a4
    e8854e4a:	5889b823          	sd	s0,1424(s3)
			require_noerr_quiet( err, exit );
    e8854e4e:	d571                	beqz	a0,e8854e1a <_NetTransportWriteV+0x54>
		ctx->writeBufferedPtr = ctx->writeBuffer;
		ctx->writeBufferedEnd = dst;
	}
	
exit:
	*ioArray = iop;
    e8854e50:	67a2                	ld	a5,8(sp)
	*ioCount = (int)( ioe - iop );
    e8854e52:	419484b3          	sub	s1,s1,s9
    e8854e56:	8491                	srai	s1,s1,0x4
	*ioArray = iop;
    e8854e58:	0197b023          	sd	s9,0(a5)
	*ioCount = (int)( ioe - iop );
    e8854e5c:	67c2                	ld	a5,16(sp)
    e8854e5e:	c384                	sw	s1,0(a5)
	return( err );
}
    e8854e60:	60ae                	ld	ra,200(sp)
    e8854e62:	640e                	ld	s0,192(sp)
    e8854e64:	74ea                	ld	s1,184(sp)
    e8854e66:	794a                	ld	s2,176(sp)
    e8854e68:	79aa                	ld	s3,168(sp)
    e8854e6a:	7a0a                	ld	s4,160(sp)
    e8854e6c:	6aea                	ld	s5,152(sp)
    e8854e6e:	6b4a                	ld	s6,144(sp)
    e8854e70:	6baa                	ld	s7,136(sp)
    e8854e72:	6c0a                	ld	s8,128(sp)
    e8854e74:	7ce6                	ld	s9,120(sp)
    e8854e76:	7d46                	ld	s10,112(sp)
    e8854e78:	7da6                	ld	s11,104(sp)
    e8854e7a:	6169                	addi	sp,sp,208
    e8854e7c:	8082                	ret
		ptr = ctx->writeBuffer + 2;
    e8854e7e:	17aa8813          	addi	a6,s5,378
    e8854e82:	01090d33          	add	s10,s2,a6
		for( iot = iop; iot < ioe; ++iot )
    e8854e86:	fc66                	sd	s9,56(sp)
    e8854e88:	8766                	mv	a4,s9
		ptr = ctx->writeBuffer + 2;
    e8854e8a:	866a                	mv	a2,s10
		for( iot = iop; iot < ioe; ++iot )
    e8854e8c:	4681                	li	a3,0
    e8854e8e:	88ba                	mv	a7,a4
    e8854e90:	00976563          	bltu	a4,s1,e8854e9a <_NetTransportWriteV+0xd4>
    e8854e94:	ce89                	beqz	a3,e8854eae <_NetTransportWriteV+0xe8>
    e8854e96:	fc3a                	sd	a4,56(sp)
    e8854e98:	a819                	j	e8854eae <_NetTransportWriteV+0xe8>
			len = (size_t)( lim - ptr );
    e8854e9a:	0741                	addi	a4,a4,16
			if( len < iot->iov_len )
    e8854e9c:	ff873583          	ld	a1,-8(a4)
			len = (size_t)( lim - ptr );
    e8854ea0:	40ca0533          	sub	a0,s4,a2
			if( len < iot->iov_len )
    e8854ea4:	0ab57d63          	bgeu	a0,a1,e8854f5e <_NetTransportWriteV+0x198>
    e8854ea8:	c291                	beqz	a3,e8854eac <_NetTransportWriteV+0xe6>
    e8854eaa:	fc46                	sd	a7,56(sp)
				totalLen += len;
    e8854eac:	942a                	add	s0,s0,a0
		if( totalLen == 0 )
    e8854eae:	c469                	beqz	s0,e8854f78 <_NetTransportWriteV+0x1b2>
		chacha20_poly1305_init_64x64( &ctx->writeCtx, ctx->writeKey, ctx->writeNonce );
    e8854eb0:	6662                	ld	a2,24(sp)
    e8854eb2:	7582                	ld	a1,32(sp)
    e8854eb4:	855a                	mv	a0,s6
		dst = ctx->writeBuffer;
    e8854eb6:	178a8b93          	addi	s7,s5,376
		chacha20_poly1305_init_64x64( &ctx->writeCtx, ctx->writeKey, ctx->writeNonce );
    e8854eba:	d81f80ef          	jal	ra,e884dc3a <chacha20_poly1305_init_64x64>
		dst = ctx->writeBuffer;
    e8854ebe:	9bca                	add	s7,s7,s2
		WriteLittle16( dst, (uint16_t) totalLen );
    e8854ec0:	16899c23          	sh	s0,376(s3)
		chacha20_poly1305_add_aad( &ctx->writeCtx, dst, 2 );
    e8854ec4:	4609                	li	a2,2
    e8854ec6:	85de                	mv	a1,s7
    e8854ec8:	855a                	mv	a0,s6
    e8854eca:	fabf80ef          	jal	ra,e884de74 <chacha20_poly1305_add_aad>
		dst += 2;
    e8854ece:	8c6a                	mv	s8,s10
		for( ; iop < ioe; ++iop )
    e8854ed0:	029cfd63          	bgeu	s9,s1,e8854f0a <_NetTransportWriteV+0x144>
			if( len < iop->iov_len )
    e8854ed4:	008cb603          	ld	a2,8(s9)
			len = (size_t)( lim - ptr );
    e8854ed8:	41aa08b3          	sub	a7,s4,s10
			if( len < iop->iov_len )
    e8854edc:	000cb583          	ld	a1,0(s9)
				n = chacha20_poly1305_encrypt( &ctx->writeCtx, iop->iov_base, len, dst );
    e8854ee0:	86e2                	mv	a3,s8
			if( len < iop->iov_len )
    e8854ee2:	08c8f263          	bgeu	a7,a2,e8854f66 <_NetTransportWriteV+0x1a0>
				n = chacha20_poly1305_encrypt( &ctx->writeCtx, iop->iov_base, len, dst );
    e8854ee6:	8646                	mv	a2,a7
    e8854ee8:	855a                	mv	a0,s6
    e8854eea:	f446                	sd	a7,40(sp)
    e8854eec:	fadf80ef          	jal	ra,e884de98 <chacha20_poly1305_encrypt>
				dst				+= n;
    e8854ef0:	9c2a                	add	s8,s8,a0
				iop->iov_base	 = ( (uint8_t *) iop->iov_base ) + len;
    e8854ef2:	000cb683          	ld	a3,0(s9)
    e8854ef6:	78a2                	ld	a7,40(sp)
    e8854ef8:	96c6                	add	a3,a3,a7
    e8854efa:	00dcb023          	sd	a3,0(s9)
				iop->iov_len	-= len;
    e8854efe:	008cb683          	ld	a3,8(s9)
    e8854f02:	411688b3          	sub	a7,a3,a7
    e8854f06:	011cb423          	sd	a7,8(s9)
		n = chacha20_poly1305_final( &ctx->writeCtx, dst, authTag );
    e8854f0a:	0890                	addi	a2,sp,80
    e8854f0c:	85e2                	mv	a1,s8
    e8854f0e:	855a                	mv	a0,s6
    e8854f10:	85ef90ef          	jal	ra,e884df6e <chacha20_poly1305_final>
		require_action( dst == ( ctx->writeBuffer + 2 + totalLen ), exit, err = kInternalErr );
    e8854f14:	0409                	addi	s0,s0,2
		dst += n;
    e8854f16:	00ac0733          	add	a4,s8,a0
		require_action( dst == ( ctx->writeBuffer + 2 + totalLen ), exit, err = kInternalErr );
    e8854f1a:	945e                	add	s0,s0,s7
    e8854f1c:	06871063          	bne	a4,s0,e8854f7c <_NetTransportWriteV+0x1b6>
		require_action( dst <= lim, exit, err = kInternalErr );
    e8854f20:	04ea6e63          	bltu	s4,a4,e8854f7c <_NetTransportWriteV+0x1b6>
		memcpy( dst, authTag, sizeof( authTag ) );
    e8854f24:	4641                	li	a2,16
    e8854f26:	088c                	addi	a1,sp,80
    e8854f28:	853a                	mv	a0,a4
    e8854f2a:	f43a                	sd	a4,40(sp)
    e8854f2c:	474270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		dst += sizeof( authTag );
    e8854f30:	7722                	ld	a4,40(sp)
    e8854f32:	6c8a8593          	addi	a1,s5,1736
    e8854f36:	01b90633          	add	a2,s2,s11
    e8854f3a:	0741                	addi	a4,a4,16
	for( i = 0; i < inLen; ++i )
    e8854f3c:	95ca                	add	a1,a1,s2
		if( ++( inInteger[ i ] ) != 0 )
    e8854f3e:	00064683          	lbu	a3,0(a2)
    e8854f42:	2685                	addiw	a3,a3,1
    e8854f44:	0ff6f693          	andi	a3,a3,255
    e8854f48:	00d60023          	sb	a3,0(a2)
    e8854f4c:	e681                	bnez	a3,e8854f54 <_NetTransportWriteV+0x18e>
	for( i = 0; i < inLen; ++i )
    e8854f4e:	0605                	addi	a2,a2,1
    e8854f50:	fec597e3          	bne	a1,a2,e8854f3e <_NetTransportWriteV+0x178>
		ctx->writeBufferedPtr = ctx->writeBuffer;
    e8854f54:	5979b823          	sd	s7,1424(s3)
		ctx->writeBufferedEnd = dst;
    e8854f58:	58e9bc23          	sd	a4,1432(s3)
    e8854f5c:	bd7d                	j	e8854e1a <_NetTransportWriteV+0x54>
			totalLen += iot->iov_len;
    e8854f5e:	942e                	add	s0,s0,a1
			ptr += iot->iov_len;
    e8854f60:	962e                	add	a2,a2,a1
		for( iot = iop; iot < ioe; ++iot )
    e8854f62:	4685                	li	a3,1
    e8854f64:	b72d                	j	e8854e8e <_NetTransportWriteV+0xc8>
			n = chacha20_poly1305_encrypt( &ctx->writeCtx, iop->iov_base, iop->iov_len, dst );
    e8854f66:	855a                	mv	a0,s6
    e8854f68:	f31f80ef          	jal	ra,e884de98 <chacha20_poly1305_encrypt>
			dst	+= n;
    e8854f6c:	9c2a                	add	s8,s8,a0
			ptr	+= iop->iov_len;
    e8854f6e:	008cb683          	ld	a3,8(s9)
		for( ; iop < ioe; ++iop )
    e8854f72:	0cc1                	addi	s9,s9,16
			ptr	+= iop->iov_len;
    e8854f74:	9d36                	add	s10,s10,a3
		for( ; iop < ioe; ++iop )
    e8854f76:	bfa9                	j	e8854ed0 <_NetTransportWriteV+0x10a>
			err = kNoErr;
    e8854f78:	4501                	li	a0,0
    e8854f7a:	bdd9                	j	e8854e50 <_NetTransportWriteV+0x8a>
		require_action( dst <= lim, exit, err = kInternalErr );
    e8854f7c:	7579                	lui	a0,0xffffe
    e8854f7e:	59650513          	addi	a0,a0,1430 # ffffffffffffe596 <__DRAM0_INF_BASE+0xffffffff0000e596>
    e8854f82:	b5f9                	j	e8854e50 <_NetTransportWriteV+0x8a>

00000000e8854f84 <_NetTransportRead>:
{
    e8854f84:	7119                	addi	sp,sp,-128
    e8854f86:	f0ca                	sd	s2,96(sp)
		len = (size_t)( ctx->readBufferedEnd - ctx->readBufferedPtr );
    e8854f88:	6911                	lui	s2,0x4
{
    e8854f8a:	e4d6                	sd	s5,72(sp)
    e8854f8c:	fc5e                	sd	s7,56(sp)
    e8854f8e:	f862                	sd	s8,48(sp)
			err = SocketReadData( ctx->sock, ctx->readAuthTag, sizeof( ctx->readAuthTag ), &ctx->readOffset );
    e8854f90:	02a90b93          	addi	s7,s2,42 # 402a <memcmp-0xe87fbfd6>
			chacha20_poly1305_init_64x64( &ctx->readCtx, ctx->readKey, ctx->readNonce );
    e8854f94:	05090a93          	addi	s5,s2,80
    e8854f98:	17090c13          	addi	s8,s2,368
{
    e8854f9c:	f8a2                	sd	s0,112(sp)
    e8854f9e:	f4a6                	sd	s1,104(sp)
    e8854fa0:	ecce                	sd	s3,88(sp)
    e8854fa2:	e0da                	sd	s6,64(sp)
    e8854fa4:	f466                	sd	s9,40(sp)
    e8854fa6:	f06a                	sd	s10,32(sp)
    e8854fa8:	fc86                	sd	ra,120(sp)
    e8854faa:	e8d2                	sd	s4,80(sp)
    e8854fac:	ec6e                	sd	s11,24(sp)
    e8854fae:	8d2a                	mv	s10,a0
    e8854fb0:	8b2e                	mv	s6,a1
    e8854fb2:	8cb2                	mv	s9,a2
    e8854fb4:	8436                	mv	s0,a3
	uint8_t *				dst = (uint8_t *) inBuffer;
    e8854fb6:	84aa                	mv	s1,a0
		len = (size_t)( ctx->readBufferedEnd - ctx->readBufferedPtr );
    e8854fb8:	012689b3          	add	s3,a3,s2
			err = SocketReadData( ctx->sock, ctx->readAuthTag, sizeof( ctx->readAuthTag ), &ctx->readOffset );
    e8854fbc:	9bb6                	add	s7,s7,a3
			chacha20_poly1305_init_64x64( &ctx->readCtx, ctx->readKey, ctx->readNonce );
    e8854fbe:	9ab6                	add	s5,s5,a3
    e8854fc0:	9c36                	add	s8,s8,a3
		len = (size_t)( ctx->readBufferedEnd - ctx->readBufferedPtr );
    e8854fc2:	0409b583          	ld	a1,64(s3)
    e8854fc6:	0489ba03          	ld	s4,72(s3)
    e8854fca:	40ba07b3          	sub	a5,s4,a1
		if( len > 0 )
    e8854fce:	c395                	beqz	a5,e8854ff2 <_NetTransportRead+0x6e>
			if( len > inMaxLen ) len = inMaxLen;
    e8854fd0:	0167ba33          	sltu	s4,a5,s6
    e8854fd4:	414b178b          	mveqz	a5,s6,s4
			memcpy( dst, ctx->readBufferedPtr, len );
    e8854fd8:	863e                	mv	a2,a5
    e8854fda:	8526                	mv	a0,s1
    e8854fdc:	8a3e                	mv	s4,a5
    e8854fde:	3c2270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			dst += len;
    e8854fe2:	94d2                	add	s1,s1,s4
			ctx->readBufferedPtr += len;
    e8854fe4:	0409b783          	ld	a5,64(s3)
			inMaxLen -= len;
    e8854fe8:	414b0b33          	sub	s6,s6,s4
			ctx->readBufferedPtr += len;
    e8854fec:	97d2                	add	a5,a5,s4
    e8854fee:	04f9b023          	sd	a5,64(s3)
		if( inMaxLen == 0 ) break;
    e8854ff2:	220b0963          	beqz	s6,e8855224 <_NetTransportRead+0x2a0>
		if( ctx->readState == kNTState_ReadingHeader )
    e8854ff6:	01044783          	lbu	a5,16(s0)
    e8854ffa:	4705                	li	a4,1
    e8854ffc:	16e79e63          	bne	a5,a4,e8855178 <_NetTransportRead+0x1f4>
			err = SocketReadData( ctx->sock, ctx->readHeader, sizeof( ctx->readHeader ), &ctx->readOffset );
    e8855000:	86a2                	mv	a3,s0
    e8855002:	5c86c50b          	lwia	a0,(a3),8,2
    e8855006:	02840a13          	addi	s4,s0,40
    e885500a:	4609                	li	a2,2
    e885500c:	85d2                	mv	a1,s4
    e885500e:	435000ef          	jal	ra,e8855c42 <SocketReadData>
    e8855012:	c62a                	sw	a0,12(sp)
			require_noerr_quiet( err, exit );
    e8855014:	ed39                	bnez	a0,e8855072 <_NetTransportRead+0xee>
			ctx->readSize = ReadLittle16( ctx->readHeader );
    e8855016:	02944703          	lbu	a4,41(s0)
    e885501a:	02844783          	lbu	a5,40(s0)
    e885501e:	0087171b          	slliw	a4,a4,0x8
    e8855022:	8f5d                	or	a4,a4,a5
    e8855024:	ec18                	sd	a4,24(s0)
			require_action( ctx->readSize <= kMaxMessageReadSize, exit, err = kSizeErr; 
    e8855026:	08e97d63          	bgeu	s2,a4,e88550c0 <_NetTransportRead+0x13c>
    e885502a:	77f9                	lui	a5,0xffffe
    e885502c:	5a97879b          	addiw	a5,a5,1449
    e8855030:	00080517          	auipc	a0,0x80
    e8855034:	fe850513          	addi	a0,a0,-24 # e88d5018 <gLogCategory_NetTransportChaCha20Poly1305>
    e8855038:	c63e                	sw	a5,12(sp)
    e885503a:	411c                	lw	a5,0(a0)
    e885503c:	03c00713          	li	a4,60
    e8855040:	02f74963          	blt	a4,a5,e8855072 <_NetTransportRead+0xee>
    e8855044:	577d                	li	a4,-1
    e8855046:	06e78763          	beq	a5,a4,e88550b4 <_NetTransportRead+0x130>
    e885504a:	6c18                	ld	a4,24(s0)
    e885504c:	4889                	li	a7,2
    e885504e:	4809                	li	a6,2
    e8855050:	87d2                	mv	a5,s4
    e8855052:	0006c697          	auipc	a3,0x6c
    e8855056:	7c668693          	addi	a3,a3,1990 # e88c1818 <__PRETTY_FUNCTION__.9099+0xf0>
    e885505a:	03c00613          	li	a2,60
    e885505e:	0006d597          	auipc	a1,0x6d
    e8855062:	82258593          	addi	a1,a1,-2014 # e88c1880 <__PRETTY_FUNCTION__.10057>
    e8855066:	00080517          	auipc	a0,0x80
    e885506a:	fb250513          	addi	a0,a0,-78 # e88d5018 <gLogCategory_NetTransportChaCha20Poly1305>
    e885506e:	c06ff0ef          	jal	ra,e8854474 <LogPrintF>
	if( ( ( err == EWOULDBLOCK ) || ( err == kConnectionErr ) ) && ( len > 0 ) ) err = kNoErr;
    e8855072:	4732                	lw	a4,12(sp)
    e8855074:	47ad                	li	a5,11
	len = (size_t)( dst - ( (uint8_t *) inBuffer ) );
    e8855076:	41a484b3          	sub	s1,s1,s10
	if( ( ( err == EWOULDBLOCK ) || ( err == kConnectionErr ) ) && ( len > 0 ) ) err = kNoErr;
    e885507a:	00f70763          	beq	a4,a5,e8855088 <_NetTransportRead+0x104>
    e885507e:	77f9                	lui	a5,0xffffe
    e8855080:	59f78793          	addi	a5,a5,1439 # ffffffffffffe59f <__DRAM0_INF_BASE+0xffffffff0000e59f>
    e8855084:	00f71463          	bne	a4,a5,e885508c <_NetTransportRead+0x108>
    e8855088:	c091                	beqz	s1,e885508c <_NetTransportRead+0x108>
    e885508a:	c602                	sw	zero,12(sp)
	if( outLen ) *outLen = len;
    e885508c:	000c8463          	beqz	s9,e8855094 <_NetTransportRead+0x110>
    e8855090:	009cb023          	sd	s1,0(s9)
}
    e8855094:	70e6                	ld	ra,120(sp)
    e8855096:	7446                	ld	s0,112(sp)
    e8855098:	4532                	lw	a0,12(sp)
    e885509a:	74a6                	ld	s1,104(sp)
    e885509c:	7906                	ld	s2,96(sp)
    e885509e:	69e6                	ld	s3,88(sp)
    e88550a0:	6a46                	ld	s4,80(sp)
    e88550a2:	6aa6                	ld	s5,72(sp)
    e88550a4:	6b06                	ld	s6,64(sp)
    e88550a6:	7be2                	ld	s7,56(sp)
    e88550a8:	7c42                	ld	s8,48(sp)
    e88550aa:	7ca2                	ld	s9,40(sp)
    e88550ac:	7d02                	ld	s10,32(sp)
    e88550ae:	6de2                	ld	s11,24(sp)
    e88550b0:	6109                	addi	sp,sp,128
    e88550b2:	8082                	ret
			require_action( ctx->readSize <= kMaxMessageReadSize, exit, err = kSizeErr; 
    e88550b4:	03c00593          	li	a1,60
    e88550b8:	fbbfe0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88550bc:	d95d                	beqz	a0,e8855072 <_NetTransportRead+0xee>
    e88550be:	b771                	j	e885504a <_NetTransportRead+0xc6>
			ctx->readState	= kNTState_ReadingBody;
    e88550c0:	4789                	li	a5,2
			ctx->readOffset	= 0;
    e88550c2:	02043023          	sd	zero,32(s0)
			ctx->readState	= kNTState_ReadingBody;
    e88550c6:	00f40823          	sb	a5,16(s0)
			err = SocketReadData( ctx->sock, ctx->readBody, ctx->readSize, &ctx->readOffset );
    e88550ca:	6c10                	ld	a2,24(s0)
    e88550cc:	4008                	lw	a0,0(s0)
    e88550ce:	02040693          	addi	a3,s0,32
    e88550d2:	02a40593          	addi	a1,s0,42
    e88550d6:	36d000ef          	jal	ra,e8855c42 <SocketReadData>
    e88550da:	c62a                	sw	a0,12(sp)
			require_noerr_quiet( err, exit );
    e88550dc:	f959                	bnez	a0,e8855072 <_NetTransportRead+0xee>
			ctx->readState	= kNTState_ReadingAuthTag;
    e88550de:	478d                	li	a5,3
			ctx->readOffset	= 0;
    e88550e0:	02043023          	sd	zero,32(s0)
			ctx->readState	= kNTState_ReadingAuthTag;
    e88550e4:	00f40823          	sb	a5,16(s0)
			err = SocketReadData( ctx->sock, ctx->readAuthTag, sizeof( ctx->readAuthTag ), &ctx->readOffset );
    e88550e8:	86a2                	mv	a3,s0
    e88550ea:	5c86c50b          	lwia	a0,(a3),8,2
    e88550ee:	4641                	li	a2,16
    e88550f0:	85de                	mv	a1,s7
    e88550f2:	351000ef          	jal	ra,e8855c42 <SocketReadData>
    e88550f6:	c62a                	sw	a0,12(sp)
			require_noerr_quiet( err, exit );
    e88550f8:	fd2d                	bnez	a0,e8855072 <_NetTransportRead+0xee>
			chacha20_poly1305_init_64x64( &ctx->readCtx, ctx->readKey, ctx->readNonce );
    e88550fa:	15090593          	addi	a1,s2,336
    e88550fe:	8662                	mv	a2,s8
    e8855100:	95a2                	add	a1,a1,s0
    e8855102:	8556                	mv	a0,s5
    e8855104:	b37f80ef          	jal	ra,e884dc3a <chacha20_poly1305_init_64x64>
			len = chacha20_poly1305_decrypt( &ctx->readCtx, ctx->readBody, ctx->readSize, ctx->readBody );
    e8855108:	02a40a13          	addi	s4,s0,42
			chacha20_poly1305_add_aad( &ctx->readCtx, ctx->readHeader, sizeof( ctx->readHeader ) );
    e885510c:	4609                	li	a2,2
    e885510e:	02840593          	addi	a1,s0,40
    e8855112:	8556                	mv	a0,s5
    e8855114:	d61f80ef          	jal	ra,e884de74 <chacha20_poly1305_add_aad>
			len = chacha20_poly1305_decrypt( &ctx->readCtx, ctx->readBody, ctx->readSize, ctx->readBody );
    e8855118:	6c10                	ld	a2,24(s0)
    e885511a:	86d2                	mv	a3,s4
    e885511c:	85d2                	mv	a1,s4
    e885511e:	8556                	mv	a0,s5
    e8855120:	de5f80ef          	jal	ra,e884df04 <chacha20_poly1305_decrypt>
			len += chacha20_poly1305_verify( &ctx->readCtx, &ctx->readBody[ len ], ctx->readAuthTag, &err );
    e8855124:	02a50593          	addi	a1,a0,42
			len = chacha20_poly1305_decrypt( &ctx->readCtx, ctx->readBody, ctx->readSize, ctx->readBody );
    e8855128:	8daa                	mv	s11,a0
			len += chacha20_poly1305_verify( &ctx->readCtx, &ctx->readBody[ len ], ctx->readAuthTag, &err );
    e885512a:	0074                	addi	a3,sp,12
    e885512c:	865e                	mv	a2,s7
    e885512e:	95a2                	add	a1,a1,s0
    e8855130:	8556                	mv	a0,s5
    e8855132:	ed3f80ef          	jal	ra,e884e004 <chacha20_poly1305_verify>
    e8855136:	9daa                	add	s11,s11,a0
			require_noerr_action( err, exit, 
    e8855138:	47b2                	lw	a5,12(sp)
    e885513a:	cfa9                	beqz	a5,e8855194 <_NetTransportRead+0x210>
    e885513c:	00080517          	auipc	a0,0x80
    e8855140:	edc50513          	addi	a0,a0,-292 # e88d5018 <gLogCategory_NetTransportChaCha20Poly1305>
    e8855144:	411c                	lw	a5,0(a0)
    e8855146:	03c00713          	li	a4,60
    e885514a:	f2f744e3          	blt	a4,a5,e8855072 <_NetTransportRead+0xee>
    e885514e:	577d                	li	a4,-1
    e8855150:	02e78b63          	beq	a5,a4,e8855186 <_NetTransportRead+0x202>
    e8855154:	4732                	lw	a4,12(sp)
    e8855156:	0006c697          	auipc	a3,0x6c
    e885515a:	6e268693          	addi	a3,a3,1762 # e88c1838 <__PRETTY_FUNCTION__.9099+0x110>
    e885515e:	03c00613          	li	a2,60
    e8855162:	0006c597          	auipc	a1,0x6c
    e8855166:	71e58593          	addi	a1,a1,1822 # e88c1880 <__PRETTY_FUNCTION__.10057>
    e885516a:	00080517          	auipc	a0,0x80
    e885516e:	eae50513          	addi	a0,a0,-338 # e88d5018 <gLogCategory_NetTransportChaCha20Poly1305>
    e8855172:	b02ff0ef          	jal	ra,e8854474 <LogPrintF>
    e8855176:	bdf5                	j	e8855072 <_NetTransportRead+0xee>
		if( ctx->readState == kNTState_ReadingBody )
    e8855178:	4709                	li	a4,2
    e885517a:	f4e788e3          	beq	a5,a4,e88550ca <_NetTransportRead+0x146>
		if( ctx->readState == kNTState_ReadingAuthTag )
    e885517e:	470d                	li	a4,3
    e8855180:	e4e791e3          	bne	a5,a4,e8854fc2 <_NetTransportRead+0x3e>
    e8855184:	b795                	j	e88550e8 <_NetTransportRead+0x164>
			require_noerr_action( err, exit, 
    e8855186:	03c00593          	li	a1,60
    e885518a:	ee9fe0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885518e:	ee0502e3          	beqz	a0,e8855072 <_NetTransportRead+0xee>
    e8855192:	b7c9                	j	e8855154 <_NetTransportRead+0x1d0>
			require_action( len == ctx->readSize, exit, err = kInternalErr; 
    e8855194:	6c1c                	ld	a5,24(s0)
    e8855196:	05b78c63          	beq	a5,s11,e88551ee <_NetTransportRead+0x26a>
    e885519a:	77f9                	lui	a5,0xffffe
    e885519c:	5967879b          	addiw	a5,a5,1430
    e88551a0:	00080517          	auipc	a0,0x80
    e88551a4:	e7850513          	addi	a0,a0,-392 # e88d5018 <gLogCategory_NetTransportChaCha20Poly1305>
    e88551a8:	c63e                	sw	a5,12(sp)
    e88551aa:	411c                	lw	a5,0(a0)
    e88551ac:	03c00713          	li	a4,60
    e88551b0:	ecf741e3          	blt	a4,a5,e8855072 <_NetTransportRead+0xee>
    e88551b4:	577d                	li	a4,-1
    e88551b6:	02e78563          	beq	a5,a4,e88551e0 <_NetTransportRead+0x25c>
    e88551ba:	6c1c                	ld	a5,24(s0)
    e88551bc:	876e                	mv	a4,s11
    e88551be:	0006c697          	auipc	a3,0x6c
    e88551c2:	69a68693          	addi	a3,a3,1690 # e88c1858 <__PRETTY_FUNCTION__.9099+0x130>
    e88551c6:	03c00613          	li	a2,60
    e88551ca:	0006c597          	auipc	a1,0x6c
    e88551ce:	6b658593          	addi	a1,a1,1718 # e88c1880 <__PRETTY_FUNCTION__.10057>
    e88551d2:	00080517          	auipc	a0,0x80
    e88551d6:	e4650513          	addi	a0,a0,-442 # e88d5018 <gLogCategory_NetTransportChaCha20Poly1305>
    e88551da:	a9aff0ef          	jal	ra,e8854474 <LogPrintF>
    e88551de:	bd51                	j	e8855072 <_NetTransportRead+0xee>
    e88551e0:	03c00593          	li	a1,60
    e88551e4:	e8ffe0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88551e8:	e80505e3          	beqz	a0,e8855072 <_NetTransportRead+0xee>
    e88551ec:	b7f9                	j	e88551ba <_NetTransportRead+0x236>
    e88551ee:	17890693          	addi	a3,s2,376
    e88551f2:	8762                	mv	a4,s8
    e88551f4:	96a2                	add	a3,a3,s0
		if( ++( inInteger[ i ] ) != 0 )
    e88551f6:	00074783          	lbu	a5,0(a4)
    e88551fa:	2785                	addiw	a5,a5,1
    e88551fc:	0ff7f793          	andi	a5,a5,255
    e8855200:	00f70023          	sb	a5,0(a4)
    e8855204:	e781                	bnez	a5,e885520c <_NetTransportRead+0x288>
	for( i = 0; i < inLen; ++i )
    e8855206:	0705                	addi	a4,a4,1
    e8855208:	fee697e3          	bne	a3,a4,e88551f6 <_NetTransportRead+0x272>
			ctx->readBufferedPtr	= ctx->readBody;
    e885520c:	0549b023          	sd	s4,64(s3)
			ctx->readBufferedEnd	= ctx->readBody + ctx->readSize;
    e8855210:	6c1c                	ld	a5,24(s0)
    e8855212:	9a3e                	add	s4,s4,a5
    e8855214:	0549b423          	sd	s4,72(s3)
			ctx->readState			= kNTState_ReadingHeader;
    e8855218:	4785                	li	a5,1
			ctx->readOffset			= 0;
    e885521a:	02043023          	sd	zero,32(s0)
			ctx->readState			= kNTState_ReadingHeader;
    e885521e:	00f40823          	sb	a5,16(s0)
    e8855222:	b345                	j	e8854fc2 <_NetTransportRead+0x3e>
	err = kNoErr;
    e8855224:	c602                	sw	zero,12(sp)
    e8855226:	b5b1                	j	e8855072 <_NetTransportRead+0xee>

00000000e8855228 <_NetTransportFinalize>:
	if( ctx )
    e8855228:	cd09                	beqz	a0,e8855242 <_NetTransportFinalize+0x1a>
    e885522a:	6711                	lui	a4,0x4
    e885522c:	6c870713          	addi	a4,a4,1736 # 46c8 <memcmp-0xe87fb938>
    e8855230:	972a                	add	a4,a4,a0
    e8855232:	87aa                	mv	a5,a0
	while( inLen-- ) *ptr++ = 0;
    e8855234:	00f71463          	bne	a4,a5,e885523c <_NetTransportFinalize+0x14>
		free( ctx );
    e8855238:	0c82706f          	j	e887c300 <eLIBs_free>
    e885523c:	1817d00b          	sbia	zero,(a5),1,0
    e8855240:	bfd5                	j	e8855234 <_NetTransportFinalize+0xc>
}
    e8855242:	8082                	ret

00000000e8855244 <NetTransportChaCha20Poly1305Configure>:
{
    e8855244:	715d                	addi	sp,sp,-80
    e8855246:	ec56                	sd	s5,24(sp)
    p = malloc(len);
    e8855248:	6a91                	lui	s5,0x4
    e885524a:	fc26                	sd	s1,56(sp)
    e885524c:	84aa                	mv	s1,a0
    e885524e:	6c8a8513          	addi	a0,s5,1736 # 46c8 <memcmp-0xe87fb938>
    e8855252:	e0a2                	sd	s0,64(sp)
    e8855254:	f84a                	sd	s2,48(sp)
    e8855256:	f44e                	sd	s3,40(sp)
    e8855258:	f052                	sd	s4,32(sp)
    e885525a:	e85a                	sd	s6,16(sp)
    e885525c:	e45e                	sd	s7,8(sp)
    e885525e:	e486                	sd	ra,72(sp)
    e8855260:	892e                	mv	s2,a1
    e8855262:	8bb2                	mv	s7,a2
    e8855264:	8a36                	mv	s4,a3
    e8855266:	8b3a                	mv	s6,a4
    e8855268:	89be                	mv	s3,a5
    e885526a:	5e4260ef          	jal	ra,e887b84e <my_malloc>
    e885526e:	842a                	mv	s0,a0
    memset(p,0,len);
    e8855270:	6c8a8613          	addi	a2,s5,1736
    e8855274:	4581                	li	a1,0
    e8855276:	11e270ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( ctx, exit, err = kNoMemoryErr );
    e885527a:	c84d                	beqz	s0,e885532c <NetTransportChaCha20Poly1305Configure+0xe8>
	ctx->sock		= kInvalidSocketRef;
    e885527c:	57fd                	li	a5,-1
    e885527e:	c01c                	sw	a5,0(s0)
	ctx->ucat		= inCategory ? inCategory : nt_ucat();
    e8855280:	00091663          	bnez	s2,e885528c <NetTransportChaCha20Poly1305Configure+0x48>
    e8855284:	00080917          	auipc	s2,0x80
    e8855288:	d9490913          	addi	s2,s2,-620 # e88d5018 <gLogCategory_NetTransportChaCha20Poly1305>
    e885528c:	01243423          	sd	s2,8(s0)
	memcpy( ctx->readKey, inReadKey, 32 );
    e8855290:	6911                	lui	s2,0x4
	ctx->readState	= kNTState_ReadingHeader;
    e8855292:	4785                	li	a5,1
	memcpy( ctx->readKey, inReadKey, 32 );
    e8855294:	15090513          	addi	a0,s2,336 # 4150 <memcmp-0xe87fbeb0>
	ctx->readState	= kNTState_ReadingHeader;
    e8855298:	00f40823          	sb	a5,16(s0)
	memcpy( ctx->readKey, inReadKey, 32 );
    e885529c:	02000613          	li	a2,32
    e88552a0:	85de                	mv	a1,s7
    e88552a2:	9522                	add	a0,a0,s0
    e88552a4:	0fc270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	if( inReadNonce ) memcpy( ctx->readNonce, inReadNonce, 8 );
    e88552a8:	000a0963          	beqz	s4,e88552ba <NetTransportChaCha20Poly1305Configure+0x76>
    e88552ac:	17090513          	addi	a0,s2,368
    e88552b0:	4621                	li	a2,8
    e88552b2:	85d2                	mv	a1,s4
    e88552b4:	9522                	add	a0,a0,s0
    e88552b6:	0ea270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	memcpy( ctx->writeKey, inWriteKey, 32 );
    e88552ba:	6911                	lui	s2,0x4
    e88552bc:	6a090513          	addi	a0,s2,1696 # 46a0 <memcmp-0xe87fb960>
    e88552c0:	02000613          	li	a2,32
    e88552c4:	85da                	mv	a1,s6
    e88552c6:	9522                	add	a0,a0,s0
    e88552c8:	0d8270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	if( inWriteNonce ) memcpy( ctx->writeNonce, inWriteNonce, 8 );
    e88552cc:	00098963          	beqz	s3,e88552de <NetTransportChaCha20Poly1305Configure+0x9a>
    e88552d0:	6c090513          	addi	a0,s2,1728
    e88552d4:	4621                	li	a2,8
    e88552d6:	85ce                	mv	a1,s3
    e88552d8:	9522                	add	a0,a0,s0
    e88552da:	0c6270ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	NetTransportDelegateInit( ioDelegate );
    e88552de:	8526                	mv	a0,s1
    e88552e0:	02800613          	li	a2,40
    e88552e4:	4581                	li	a1,0
    e88552e6:	0ae270ef          	jal	ra,e887c394 <eLIBs_memset>
	ioDelegate->context			= ctx;
    e88552ea:	e080                	sd	s0,0(s1)
	ioDelegate->initialize_f	= _NetTransportInitialize;
    e88552ec:	00000797          	auipc	a5,0x0
    e88552f0:	ad478793          	addi	a5,a5,-1324 # e8854dc0 <_NetTransportInitialize>
    e88552f4:	e49c                	sd	a5,8(s1)
	ioDelegate->finalize_f		= _NetTransportFinalize;
    e88552f6:	00000797          	auipc	a5,0x0
    e88552fa:	f3278793          	addi	a5,a5,-206 # e8855228 <_NetTransportFinalize>
    e88552fe:	e89c                	sd	a5,16(s1)
	ioDelegate->read_f			= _NetTransportRead;
    e8855300:	00000797          	auipc	a5,0x0
    e8855304:	c8478793          	addi	a5,a5,-892 # e8854f84 <_NetTransportRead>
    e8855308:	ec9c                	sd	a5,24(s1)
	ioDelegate->writev_f		= _NetTransportWriteV;
    e885530a:	00000797          	auipc	a5,0x0
    e885530e:	abc78793          	addi	a5,a5,-1348 # e8854dc6 <_NetTransportWriteV>
    e8855312:	f09c                	sd	a5,32(s1)
	err = kNoErr;
    e8855314:	4501                	li	a0,0
}
    e8855316:	60a6                	ld	ra,72(sp)
    e8855318:	6406                	ld	s0,64(sp)
    e885531a:	74e2                	ld	s1,56(sp)
    e885531c:	7942                	ld	s2,48(sp)
    e885531e:	79a2                	ld	s3,40(sp)
    e8855320:	7a02                	ld	s4,32(sp)
    e8855322:	6ae2                	ld	s5,24(sp)
    e8855324:	6b42                	ld	s6,16(sp)
    e8855326:	6ba2                	ld	s7,8(sp)
    e8855328:	6161                	addi	sp,sp,80
    e885532a:	8082                	ret
	require_action( ctx, exit, err = kNoMemoryErr );
    e885532c:	7579                	lui	a0,0xffffe
    e885532e:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8855332:	b7d5                	j	e8855316 <NetTransportChaCha20Poly1305Configure+0xd2>

00000000e8855334 <DrainUDPSocket>:
//===========================================================================================================================
//	DrainUDPSocket
//===========================================================================================================================

OSStatus	DrainUDPSocket( SocketRef inSock, int inTimeoutMs, int *outDrainedPackets )
{
    e8855334:	7155                	addi	sp,sp,-208
    e8855336:	e586                	sd	ra,200(sp)
    e8855338:	e1a2                	sd	s0,192(sp)
    e885533a:	fd26                	sd	s1,184(sp)
    e885533c:	842e                	mv	s0,a1
    e885533e:	f94a                	sd	s2,176(sp)
    e8855340:	f54e                	sd	s3,168(sp)
    e8855342:	892a                	mv	s2,a0
    e8855344:	f152                	sd	s4,160(sp)
    e8855346:	ed56                	sd	s5,152(sp)
    e8855348:	e95a                	sd	s6,144(sp)
    e885534a:	8ab2                	mv	s5,a2
    e885534c:	e55e                	sd	s7,136(sp)
    e885534e:	e162                	sd	s8,128(sp)
    e8855350:	fce6                	sd	s9,120(sp)
    e8855352:	f8ea                	sd	s10,112(sp)
    e8855354:	f4ee                	sd	s11,104(sp)
	char				buf[ 32 ];
	int					drained;
	sockaddr_ip			sip;
	socklen_t			len;
	
	deadlineTicks = UpTicks() + MillisecondsToUpTicks( (uint64_t) inTimeoutMs );
    e8855356:	66f0b0ef          	jal	ra,e88611c4 <UpTicks>
    e885535a:	8a2a                	mv	s4,a0
    e885535c:	8522                	mv	a0,s0
    e885535e:	7410b0ef          	jal	ra,e886129e <MillisecondsToUpTicks>
    e8855362:	9a2a                	add	s4,s4,a0
	timeoutSecs   =   inTimeoutMs / kMillisecondsPerSecond;
    e8855364:	3e800593          	li	a1,1000
    e8855368:	02b44bbb          	divw	s7,s0,a1
	timeoutUSecs  = ( inTimeoutMs % kMillisecondsPerSecond ) * kMicrosecondsPerMillisecond;
	
	drained = 0;
	FD_ZERO( &readSet );
    e885536c:	461d                	li	a2,7
    e885536e:	0028                	addi	a0,sp,8
	do
	{
		FD_SET( inSock, &readSet );
    e8855370:	4485                	li	s1,1
    e8855372:	40395b13          	srai	s6,s2,0x3
	drained = 0;
    e8855376:	4981                	li	s3,0
		FD_SET( inSock, &readSet );
    e8855378:	00090c1b          	sext.w	s8,s2
    e885537c:	03100c93          	li	s9,49
		timeout.tv_sec  = timeoutSecs;
		timeout.tv_usec = timeoutUSecs;
		n = select( (int)( inSock + 1 ), &readSet, NULL, NULL, &timeout );
    e8855380:	00190d1b          	addiw	s10,s2,1
		if( n == 0 ) break;
		err = map_global_value_errno( n == 1, n );
    e8855384:	4d85                	li	s11,1
	timeoutUSecs  = ( inTimeoutMs % kMillisecondsPerSecond ) * kMicrosecondsPerMillisecond;
    e8855386:	02b4643b          	remw	s0,s0,a1
    e885538a:	02b4043b          	mulw	s0,s0,a1
	FD_ZERO( &readSet );
    e885538e:	4581                	li	a1,0
    e8855390:	004270ef          	jal	ra,e887c394 <eLIBs_memset>
		FD_SET( inSock, &readSet );
    e8855394:	00797793          	andi	a5,s2,7
    e8855398:	00f494bb          	sllw	s1,s1,a5
    e885539c:	1c04a48b          	ext	s1,s1,7,0
    e88553a0:	018ce963          	bltu	s9,s8,e88553b2 <DrainUDPSocket+0x7e>
    e88553a4:	003c                	addi	a5,sp,8
    e88553a6:	8167c78b          	lrbu	a5,a5,s6,0
    e88553aa:	0038                	addi	a4,sp,8
    e88553ac:	8fc5                	or	a5,a5,s1
    e88553ae:	0167578b          	srb	a5,a4,s6,0
		n = select( (int)( inSock + 1 ), &readSet, NULL, NULL, &timeout );
    e88553b2:	0818                	addi	a4,sp,16
    e88553b4:	4681                	li	a3,0
    e88553b6:	4601                	li	a2,0
    e88553b8:	002c                	addi	a1,sp,8
    e88553ba:	856a                	mv	a0,s10
		timeout.tv_usec = timeoutUSecs;
    e88553bc:	fa815b8b          	sdd	s7,s0,(sp),1,4
		n = select( (int)( inSock + 1 ), &readSet, NULL, NULL, &timeout );
    e88553c0:	16d300ef          	jal	ra,e8885d2c <lwip_select>
		if( n == 0 ) break;
    e88553c4:	cd01                	beqz	a0,e88553dc <DrainUDPSocket+0xa8>
		err = map_global_value_errno( n == 1, n );
    e88553c6:	03b50e63          	beq	a0,s11,e8855402 <DrainUDPSocket+0xce>
		require_noerr( err, exit );
		
		len = (socklen_t) sizeof( sip );
		n = recvfrom( inSock, buf, (int) sizeof( buf ), 0, &sip.sa, &len );
		err = map_socket_value_errno( inSock, n >= 0, n );
    e88553ca:	0008f797          	auipc	a5,0x8f
    e88553ce:	25e78793          	addi	a5,a5,606 # e88e4628 <lwip_errno>
    e88553d2:	4388                	lw	a0,0(a5)
    e88553d4:	e501                	bnez	a0,e88553dc <DrainUDPSocket+0xa8>
    e88553d6:	7579                	lui	a0,0xffffe
    e88553d8:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	}	while( UpTicks() < deadlineTicks );
	
	err = kNoErr;
	
exit:
	if( outDrainedPackets ) *outDrainedPackets = drained;
    e88553dc:	000a8463          	beqz	s5,e88553e4 <DrainUDPSocket+0xb0>
    e88553e0:	013aa023          	sw	s3,0(s5)
	return( err );
}
    e88553e4:	60ae                	ld	ra,200(sp)
    e88553e6:	640e                	ld	s0,192(sp)
    e88553e8:	74ea                	ld	s1,184(sp)
    e88553ea:	794a                	ld	s2,176(sp)
    e88553ec:	79aa                	ld	s3,168(sp)
    e88553ee:	7a0a                	ld	s4,160(sp)
    e88553f0:	6aea                	ld	s5,152(sp)
    e88553f2:	6b4a                	ld	s6,144(sp)
    e88553f4:	6baa                	ld	s7,136(sp)
    e88553f6:	6c0a                	ld	s8,128(sp)
    e88553f8:	7ce6                	ld	s9,120(sp)
    e88553fa:	7d46                	ld	s10,112(sp)
    e88553fc:	7da6                	ld	s11,104(sp)
    e88553fe:	6169                	addi	sp,sp,208
    e8855400:	8082                	ret
		len = (socklen_t) sizeof( sip );
    e8855402:	47f1                	li	a5,28
    e8855404:	c23e                	sw	a5,4(sp)
		n = recvfrom( inSock, buf, (int) sizeof( buf ), 0, &sip.sa, &len );
    e8855406:	1018                	addi	a4,sp,32
    e8855408:	005c                	addi	a5,sp,4
    e885540a:	4681                	li	a3,0
    e885540c:	02000613          	li	a2,32
    e8855410:	008c                	addi	a1,sp,64
    e8855412:	854a                	mv	a0,s2
    e8855414:	084300ef          	jal	ra,e8885498 <lwip_recvfrom>
		err = map_socket_value_errno( inSock, n >= 0, n );
    e8855418:	fa0549e3          	bltz	a0,e88553ca <DrainUDPSocket+0x96>
		++drained;
    e885541c:	2985                	addiw	s3,s3,1
	}	while( UpTicks() < deadlineTicks );
    e885541e:	5a70b0ef          	jal	ra,e88611c4 <UpTicks>
    e8855422:	f7456fe3          	bltu	a0,s4,e88553a0 <DrainUDPSocket+0x6c>
	err = kNoErr;
    e8855426:	4501                	li	a0,0
    e8855428:	bf55                	j	e88553dc <DrainUDPSocket+0xa8>

00000000e885542a <GetPrimaryMACAddress>:
//===========================================================================================================================
//	GetPrimaryMACAddress
//===========================================================================================================================

uint64_t	GetPrimaryMACAddress( uint8_t outMAC[ 6 ], OSStatus *outErr )
{
    e885542a:	7179                	addi	sp,sp,-48
    e885542c:	ec22                	sd	s0,24(sp)
    e885542e:	f026                	sd	s1,32(sp)
    e8855430:	f406                	sd	ra,40(sp)
    e8855432:	84ae                	mv	s1,a1
	OSStatus		err;
	uint8_t			mac[ 6 ];
	uint64_t		u64;
	
	if( !outMAC ) outMAC = mac;
    e8855434:	0020                	addi	s0,sp,8
    e8855436:	c111                	beqz	a0,e885543a <GetPrimaryMACAddress+0x10>
    e8855438:	842a                	mv	s0,a0
	memset( outMAC, 0, 6 );
    e885543a:	8522                	mv	a0,s0
    e885543c:	4619                	li	a2,6
    e885543e:	4581                	li	a1,0
    e8855440:	755260ef          	jal	ra,e887c394 <eLIBs_memset>
	struct netif *netif = netif_get_by_index(INTERFACE_INDEX);
    e8855444:	4509                	li	a0,2
    e8855446:	3ea390ef          	jal	ra,e888e830 <netif_get_by_index>
	if(netif != NULL)
    e885544a:	c519                	beqz	a0,e8855458 <GetPrimaryMACAddress+0x2e>
		memcpy( outMAC, netif->hwaddr, 6 );
    e885544c:	10450593          	addi	a1,a0,260
    e8855450:	4619                	li	a2,6
    e8855452:	8522                	mv	a0,s0
    e8855454:	74d260ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
#if( HasBuiltInGetPrimaryMACAddress )
	err = _GetPrimaryMACAddress( outMAC );
#else
	err = GetPrimaryMACAddressPlatform( outMAC );
#endif
	u64 = ReadBig48( outMAC );
    e8855458:	00144783          	lbu	a5,1(s0)
    e885545c:	00044503          	lbu	a0,0(s0)
    e8855460:	1782                	slli	a5,a5,0x20
    e8855462:	1522                	slli	a0,a0,0x28
    e8855464:	8d5d                	or	a0,a0,a5
    e8855466:	00544783          	lbu	a5,5(s0)
    e885546a:	8d5d                	or	a0,a0,a5
    e885546c:	00244783          	lbu	a5,2(s0)
    e8855470:	07e2                	slli	a5,a5,0x18
    e8855472:	8d5d                	or	a0,a0,a5
    e8855474:	00344783          	lbu	a5,3(s0)
    e8855478:	07c2                	slli	a5,a5,0x10
    e885547a:	8d5d                	or	a0,a0,a5
    e885547c:	00444783          	lbu	a5,4(s0)
    e8855480:	07a2                	slli	a5,a5,0x8
    e8855482:	8d5d                	or	a0,a0,a5
	if( outErr ) *outErr = err;
    e8855484:	c099                	beqz	s1,e885548a <GetPrimaryMACAddress+0x60>
    e8855486:	0004a023          	sw	zero,0(s1)
	return( u64 );
}
    e885548a:	70a2                	ld	ra,40(sp)
    e885548c:	6462                	ld	s0,24(sp)
    e885548e:	7482                	ld	s1,32(sp)
    e8855490:	6145                	addi	sp,sp,48
    e8855492:	8082                	ret

00000000e8855494 <OpenSelfConnectedLoopbackSocket>:
//===========================================================================================================================
//	OpenSelfConnectedLoopbackSocket
//===========================================================================================================================

OSStatus	OpenSelfConnectedLoopbackSocket( SocketRef *outSock )
{
    e8855494:	715d                	addi	sp,sp,-80
    e8855496:	f84a                	sd	s2,48(sp)
	OSStatus		err;
	SocketRef		sock;
	sockaddr_ip		sip;
	socklen_t		len;
	
	sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    e8855498:	4645                	li	a2,17
{
    e885549a:	892a                	mv	s2,a0
	sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    e885549c:	4589                	li	a1,2
    e885549e:	4509                	li	a0,2
{
    e88554a0:	e486                	sd	ra,72(sp)
    e88554a2:	e0a2                	sd	s0,64(sp)
    e88554a4:	fc26                	sd	s1,56(sp)
	sock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    e88554a6:	77a300ef          	jal	ra,e8885c20 <lwip_socket>
	err = map_socket_creation_errno( sock );
    e88554aa:	02055263          	bgez	a0,e88554ce <OpenSelfConnectedLoopbackSocket+0x3a>
    e88554ae:	0008f797          	auipc	a5,0x8f
    e88554b2:	17a78793          	addi	a5,a5,378 # e88e4628 <lwip_errno>
    e88554b6:	4380                	lw	s0,0(a5)
    e88554b8:	e401                	bnez	s0,e88554c0 <OpenSelfConnectedLoopbackSocket+0x2c>
    e88554ba:	7479                	lui	s0,0xffffe
    e88554bc:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	sock = kInvalidSocketRef;
	
exit:
	ForgetSocket( &sock );
	return( err );
}
    e88554c0:	8522                	mv	a0,s0
    e88554c2:	60a6                	ld	ra,72(sp)
    e88554c4:	6406                	ld	s0,64(sp)
    e88554c6:	74e2                	ld	s1,56(sp)
    e88554c8:	7942                	ld	s2,48(sp)
    e88554ca:	6161                	addi	sp,sp,80
    e88554cc:	8082                	ret
	memset( &sip.v4, 0, sizeof( sip.v4 ) );
    e88554ce:	4641                	li	a2,16
    e88554d0:	4581                	li	a1,0
    e88554d2:	84aa                	mv	s1,a0
    e88554d4:	0808                	addi	a0,sp,16
    e88554d6:	6bf260ef          	jal	ra,e887c394 <eLIBs_memset>
	sip.v4.sin_port			= 0;
    e88554da:	00011923          	sh	zero,18(sp)
	sip.v4.sin_family		= AF_INET;
    e88554de:	4789                	li	a5,2
	sip.v4.sin_addr.s_addr	= htonl( INADDR_LOOPBACK );
    e88554e0:	7f000537          	lui	a0,0x7f000
    e88554e4:	0505                	addi	a0,a0,1
	sip.v4.sin_family		= AF_INET;
    e88554e6:	00f108a3          	sb	a5,17(sp)
	sip.v4.sin_addr.s_addr	= htonl( INADDR_LOOPBACK );
    e88554ea:	245310ef          	jal	ra,e8886f2e <lwip_htonl>
    e88554ee:	ca2a                	sw	a0,20(sp)
	err = bind( sock, &sip.sa, sizeof( sip.v4 ) );
    e88554f0:	4641                	li	a2,16
    e88554f2:	080c                	addi	a1,sp,16
    e88554f4:	8526                	mv	a0,s1
    e88554f6:	3c72f0ef          	jal	ra,e88850bc <lwip_bind>
	err = map_socket_noerr_errno( sock, err );
    e88554fa:	cd11                	beqz	a0,e8855516 <OpenSelfConnectedLoopbackSocket+0x82>
	err = map_socket_noerr_errno( sock, err );
    e88554fc:	0008f797          	auipc	a5,0x8f
    e8855500:	12c78793          	addi	a5,a5,300 # e88e4628 <lwip_errno>
    e8855504:	4380                	lw	s0,0(a5)
    e8855506:	e401                	bnez	s0,e885550e <OpenSelfConnectedLoopbackSocket+0x7a>
	err = map_socket_noerr_errno( sock, err );
    e8855508:	7479                	lui	s0,0xffffe
    e885550a:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	ForgetSocket( &sock );
    e885550e:	8526                	mv	a0,s1
    e8855510:	4932f0ef          	jal	ra,e88851a2 <lwip_close>
    e8855514:	b775                	j	e88554c0 <OpenSelfConnectedLoopbackSocket+0x2c>
	len = (socklen_t) sizeof( sip );
    e8855516:	47f1                	li	a5,28
	err = getsockname( sock, &sip.sa, &len );
    e8855518:	0070                	addi	a2,sp,12
    e885551a:	080c                	addi	a1,sp,16
    e885551c:	8526                	mv	a0,s1
	len = (socklen_t) sizeof( sip );
    e885551e:	c63e                	sw	a5,12(sp)
	err = getsockname( sock, &sip.sa, &len );
    e8855520:	397300ef          	jal	ra,e88860b6 <lwip_getsockname>
	err = map_socket_noerr_errno( sock, err );
    e8855524:	fd61                	bnez	a0,e88554fc <OpenSelfConnectedLoopbackSocket+0x68>
	err = connect( sock, &sip.sa, len );
    e8855526:	4632                	lw	a2,12(sp)
    e8855528:	080c                	addi	a1,sp,16
    e885552a:	8526                	mv	a0,s1
    e885552c:	5f92f0ef          	jal	ra,e8885324 <lwip_connect>
    e8855530:	842a                	mv	s0,a0
	err = map_socket_noerr_errno( sock, err );
    e8855532:	f569                	bnez	a0,e88554fc <OpenSelfConnectedLoopbackSocket+0x68>
	*outSock = sock;
    e8855534:	00992023          	sw	s1,0(s2)
	ForgetSocket( &sock );
    e8855538:	b761                	j	e88554c0 <OpenSelfConnectedLoopbackSocket+0x2c>

00000000e885553a <SendSelfConnectedLoopbackMessage>:
//===========================================================================================================================
//	SendSelfConnectedLoopbackMessage
//===========================================================================================================================

OSStatus	SendSelfConnectedLoopbackMessage( SocketRef inSock, const void *inMsg, size_t inLen )
{
    e885553a:	711d                	addi	sp,sp,-96
	OSStatus		err;
	sockaddr_ip		sip;
	socklen_t		len;
	ssize_t			n;
	
	len = (socklen_t) sizeof( sip );
    e885553c:	47f1                	li	a5,28
{
    e885553e:	e8a2                	sd	s0,80(sp)
    e8855540:	f852                	sd	s4,48(sp)
    e8855542:	8432                	mv	s0,a2
    e8855544:	8a2e                	mv	s4,a1
	err = getsockname( inSock, &sip.sa, &len );
    e8855546:	0070                	addi	a2,sp,12
    e8855548:	080c                	addi	a1,sp,16
{
    e885554a:	fc4e                	sd	s3,56(sp)
    e885554c:	ec86                	sd	ra,88(sp)
    e885554e:	e4a6                	sd	s1,72(sp)
    e8855550:	e0ca                	sd	s2,64(sp)
    e8855552:	89aa                	mv	s3,a0
	len = (socklen_t) sizeof( sip );
    e8855554:	c63e                	sw	a5,12(sp)
	err = getsockname( inSock, &sip.sa, &len );
    e8855556:	361300ef          	jal	ra,e88860b6 <lwip_getsockname>
	err = map_socket_noerr_errno( inSock, err );
    e885555a:	c919                	beqz	a0,e8855570 <SendSelfConnectedLoopbackMessage+0x36>
    e885555c:	0008f797          	auipc	a5,0x8f
    e8855560:	0cc78793          	addi	a5,a5,204 # e88e4628 <lwip_errno>
    e8855564:	4388                	lw	a0,0(a5)
	n = sendto( inSock, (char *) inMsg, inLen, 0, &sip.sa, (socklen_t) sizeof( sip.v4 ) );
	err = map_socket_value_errno( inSock, n == ( (ssize_t) inLen ), n );
	if( err == EISCONN )
	{
		n = send( inSock, (char *) inMsg, inLen, 0 );
		err = map_socket_value_errno( inSock, n == ( (ssize_t) inLen ), n );
    e8855566:	e115                	bnez	a0,e885558a <SendSelfConnectedLoopbackMessage+0x50>
    e8855568:	7579                	lui	a0,0xffffe
    e885556a:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e885556e:	a831                	j	e885558a <SendSelfConnectedLoopbackMessage+0x50>
	n = sendto( inSock, (char *) inMsg, inLen, 0, &sip.sa, (socklen_t) sizeof( sip.v4 ) );
    e8855570:	47c1                	li	a5,16
    e8855572:	0818                	addi	a4,sp,16
    e8855574:	4681                	li	a3,0
    e8855576:	8622                	mv	a2,s0
    e8855578:	85d2                	mv	a1,s4
    e885557a:	854e                	mv	a0,s3
    e885557c:	462300ef          	jal	ra,e88859de <lwip_sendto>
	err = map_socket_value_errno( inSock, n == ( (ssize_t) inLen ), n );
    e8855580:	0004091b          	sext.w	s2,s0
    e8855584:	00a91b63          	bne	s2,a0,e885559a <SendSelfConnectedLoopbackMessage+0x60>
    e8855588:	4501                	li	a0,0
	}
	require_noerr( err, exit );
	
exit:
	return( err );
}
    e885558a:	60e6                	ld	ra,88(sp)
    e885558c:	6446                	ld	s0,80(sp)
    e885558e:	64a6                	ld	s1,72(sp)
    e8855590:	6906                	ld	s2,64(sp)
    e8855592:	79e2                	ld	s3,56(sp)
    e8855594:	7a42                	ld	s4,48(sp)
    e8855596:	6125                	addi	sp,sp,96
    e8855598:	8082                	ret
	err = map_socket_value_errno( inSock, n == ( (ssize_t) inLen ), n );
    e885559a:	0008f497          	auipc	s1,0x8f
    e885559e:	08e48493          	addi	s1,s1,142 # e88e4628 <lwip_errno>
    e88555a2:	4088                	lw	a0,0(s1)
    e88555a4:	d171                	beqz	a0,e8855568 <SendSelfConnectedLoopbackMessage+0x2e>
	if( err == EISCONN )
    e88555a6:	07f00793          	li	a5,127
    e88555aa:	fef510e3          	bne	a0,a5,e885558a <SendSelfConnectedLoopbackMessage+0x50>
		n = send( inSock, (char *) inMsg, inLen, 0 );
    e88555ae:	4681                	li	a3,0
    e88555b0:	8622                	mv	a2,s0
    e88555b2:	85d2                	mv	a1,s4
    e88555b4:	854e                	mv	a0,s3
    e88555b6:	5dc300ef          	jal	ra,e8885b92 <lwip_send>
		err = map_socket_value_errno( inSock, n == ( (ssize_t) inLen ), n );
    e88555ba:	fca907e3          	beq	s2,a0,e8855588 <SendSelfConnectedLoopbackMessage+0x4e>
    e88555be:	4088                	lw	a0,0(s1)
    e88555c0:	b75d                	j	e8855566 <SendSelfConnectedLoopbackMessage+0x2c>

00000000e88555c2 <UpdateIOVec>:
{
	iovec_t *		ptr;
	iovec_t *		end;
	
	ptr = *ioArray;
	end = ptr + *ioCount;
    e88555c2:	4198                	lw	a4,0(a1)
	ptr = *ioArray;
    e88555c4:	611c                	ld	a5,0(a0)
	end = ptr + *ioCount;
    e88555c6:	0712                	slli	a4,a4,0x4
    e88555c8:	973e                	add	a4,a4,a5
	while( ptr < end )
    e88555ca:	00e7e463          	bltu	a5,a4,e88555d2 <UpdateIOVec+0x10>
			*ioArray = ptr;
			*ioCount = (int)( end - ptr );
			return( EWOULDBLOCK );
		}
	}
	return( kNoErr );
    e88555ce:	4501                	li	a0,0
}
    e88555d0:	8082                	ret
		len = ptr->iov_len;
    e88555d2:	6794                	ld	a3,8(a5)
		if( inAmount >= len )
    e88555d4:	0007b803          	ld	a6,0(a5)
    e88555d8:	00d66a63          	bltu	a2,a3,e88555ec <UpdateIOVec+0x2a>
			ptr->iov_base = ( (char *)( ptr->iov_base ) ) + len;
    e88555dc:	9836                	add	a6,a6,a3
    e88555de:	0107b023          	sd	a6,0(a5)
			ptr->iov_len  = 0;
    e88555e2:	0007b423          	sd	zero,8(a5)
			inAmount -= len;
    e88555e6:	8e15                	sub	a2,a2,a3
			++ptr;
    e88555e8:	07c1                	addi	a5,a5,16
			inAmount -= len;
    e88555ea:	b7c5                	j	e88555ca <UpdateIOVec+0x8>
			ptr->iov_len  = (unsigned int)( len - inAmount );
    e88555ec:	9e91                	subw	a3,a3,a2
			ptr->iov_base = ( (char *)( ptr->iov_base ) ) + inAmount;
    e88555ee:	9832                	add	a6,a6,a2
			ptr->iov_len  = (unsigned int)( len - inAmount );
    e88555f0:	7c06b68b          	extu	a3,a3,31,0
			ptr->iov_base = ( (char *)( ptr->iov_base ) ) + inAmount;
    e88555f4:	0107b023          	sd	a6,0(a5)
			ptr->iov_len  = (unsigned int)( len - inAmount );
    e88555f8:	e794                	sd	a3,8(a5)
			*ioArray = ptr;
    e88555fa:	e11c                	sd	a5,0(a0)
			*ioCount = (int)( end - ptr );
    e88555fc:	40f707b3          	sub	a5,a4,a5
    e8855600:	8791                	srai	a5,a5,0x4
    e8855602:	c19c                	sw	a5,0(a1)
			return( EWOULDBLOCK );
    e8855604:	452d                	li	a0,11
    e8855606:	8082                	ret

00000000e8855608 <NetSocket_Delete>:

OSStatus	NetSocket_Delete( NetSocketRef inSock )
{
	OSStatus		err;
	
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e8855608:	c125                	beqz	a0,e8855668 <NetSocket_Delete+0x60>
{
    e885560a:	1141                	addi	sp,sp,-16
    e885560c:	e022                	sd	s0,0(sp)
    e885560e:	e406                	sd	ra,8(sp)
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e8855610:	4118                	lw	a4,0(a0)
    e8855612:	6e7377b7          	lui	a5,0x6e737
    e8855616:	f6378793          	addi	a5,a5,-157 # 6e736f63 <memcmp-0x7a0c909d>
    e885561a:	842a                	mv	s0,a0
    e885561c:	04f71a63          	bne	a4,a5,e8855670 <NetSocket_Delete+0x68>
	
	if( inSock->freeFunc ) inSock->freeFunc( inSock );	
    e8855620:	751c                	ld	a5,40(a0)
    e8855622:	c391                	beqz	a5,e8855626 <NetSocket_Delete+0x1e>
    e8855624:	9782                	jalr	a5
	
	ForgetSocket( &inSock->nativeSock );
    e8855626:	4048                	lw	a0,4(s0)
    e8855628:	00054663          	bltz	a0,e8855634 <NetSocket_Delete+0x2c>
    e885562c:	3772f0ef          	jal	ra,e88851a2 <lwip_close>
    e8855630:	57fd                	li	a5,-1
    e8855632:	c05c                	sw	a5,4(s0)
	ForgetFD( &inSock->recvCancel );
#elif( TARGET_OS_WINDOWS )
	ForgetWinHandle( &inSock->sockEvent );
	ForgetWinHandle( &inSock->cancelEvent );
#else
	ForgetSocket( &inSock->cancelSock );
    e8855634:	4448                	lw	a0,12(s0)
    e8855636:	00054663          	bltz	a0,e8855642 <NetSocket_Delete+0x3a>
    e885563a:	3692f0ef          	jal	ra,e88851a2 <lwip_close>
    e885563e:	57fd                	li	a5,-1
    e8855640:	c45c                	sw	a5,12(s0)
#endif
	ForgetMem( &inSock->readBuffer );
    e8855642:	6028                	ld	a0,64(s0)
    e8855644:	c509                	beqz	a0,e885564e <NetSocket_Delete+0x46>
    e8855646:	4bb260ef          	jal	ra,e887c300 <eLIBs_free>
    e885564a:	04043023          	sd	zero,64(s0)
	inSock->magic = kNetSocketMagicBad;
    e885564e:	4e5357b7          	lui	a5,0x4e535
    e8855652:	f437879b          	addiw	a5,a5,-189
	free( inSock );
    e8855656:	8522                	mv	a0,s0
	inSock->magic = kNetSocketMagicBad;
    e8855658:	c01c                	sw	a5,0(s0)
	free( inSock );
    e885565a:	4a7260ef          	jal	ra,e887c300 <eLIBs_free>
	err = kNoErr;
    e885565e:	4501                	li	a0,0
	
exit:
	return( err );
}
    e8855660:	60a2                	ld	ra,8(sp)
    e8855662:	6402                	ld	s0,0(sp)
    e8855664:	0141                	addi	sp,sp,16
    e8855666:	8082                	ret
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e8855668:	7579                	lui	a0,0xffffe
    e885566a:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
}
    e885566e:	8082                	ret
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e8855670:	7579                	lui	a0,0xffffe
    e8855672:	5ac50513          	addi	a0,a0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8855676:	b7ed                	j	e8855660 <NetSocket_Delete+0x58>

00000000e8855678 <NetSocket_GetNative>:

SocketRef	NetSocket_GetNative( NetSocketRef inSock )
{
	SocketRef		nativeSock;
	
	nativeSock = kInvalidSocketRef;
    e8855678:	57fd                	li	a5,-1
	require( inSock && ( inSock->magic == kNetSocketMagic ), exit );
    e885567a:	c911                	beqz	a0,e885568e <NetSocket_GetNative+0x16>
    e885567c:	4114                	lw	a3,0(a0)
    e885567e:	6e737737          	lui	a4,0x6e737
    e8855682:	f6370713          	addi	a4,a4,-157 # 6e736f63 <memcmp-0x7a0c909d>
	nativeSock = kInvalidSocketRef;
    e8855686:	57fd                	li	a5,-1
	require( inSock && ( inSock->magic == kNetSocketMagic ), exit );
    e8855688:	00e69363          	bne	a3,a4,e885568e <NetSocket_GetNative+0x16>
	check_string( IsValidSocket( inSock->nativeSock ), "illegal when socket is not set up" );
	check_string( !inSock->canceled, "illegal when canceled" );
	
	nativeSock = inSock->nativeSock;
    e885568c:	415c                	lw	a5,4(a0)
	
exit:
	return( nativeSock );
}
    e885568e:	853e                	mv	a0,a5
    e8855690:	8082                	ret

00000000e8855692 <NetSocket_Wait>:
	NetSocket_Wait( 
		NetSocketRef		inSock, 
		SocketRef			inNativeSock, 
		NetSocketWaitType	inWaitType, 
		int32_t				inTimeoutSecs )
{
    e8855692:	7159                	addi	sp,sp,-112
    e8855694:	f486                	sd	ra,104(sp)
    e8855696:	f0a2                	sd	s0,96(sp)
    e8855698:	eca6                	sd	s1,88(sp)
    e885569a:	e8ca                	sd	s2,80(sp)
    e885569c:	e4ce                	sd	s3,72(sp)
    e885569e:	e0d2                	sd	s4,64(sp)
    e88556a0:	fc56                	sd	s5,56(sp)
    e88556a2:	f85a                	sd	s6,48(sp)
	struct timeval		timeout;
	struct timeval *	timeoutPtr;
	int					maxFD;
	int					n;
	
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e88556a4:	1c050b63          	beqz	a0,e885587a <NetSocket_Wait+0x1e8>
    e88556a8:	4118                	lw	a4,0(a0)
    e88556aa:	6e7377b7          	lui	a5,0x6e737
    e88556ae:	f6378793          	addi	a5,a5,-157 # 6e736f63 <memcmp-0x7a0c909d>
    e88556b2:	1cf71463          	bne	a4,a5,e885587a <NetSocket_Wait+0x1e8>
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e88556b6:	00854783          	lbu	a5,8(a0)
    e88556ba:	1a079863          	bnez	a5,e885586a <NetSocket_Wait+0x1d8>
	require_action( IsValidSocket( inNativeSock ), exit, err = kNotPreparedErr );
    e88556be:	1c05c263          	bltz	a1,e8855882 <NetSocket_Wait+0x1f0>
    e88556c2:	e432                	sd	a2,8(sp)
    e88556c4:	892a                	mv	s2,a0
	
	FD_ZERO( &readSet );
    e88556c6:	842e                	mv	s0,a1
    e88556c8:	461d                	li	a2,7
    e88556ca:	4581                	li	a1,0
    e88556cc:	0808                	addi	a0,sp,16
    e88556ce:	89b6                	mv	s3,a3
    e88556d0:	4c5260ef          	jal	ra,e887c394 <eLIBs_memset>
#if( 0 )
	FD_SET( inSock->recvCancel, &readSet );
#else
	FD_SET( inSock->cancelSock, &readSet );
    e88556d4:	00c92783          	lw	a5,12(s2)
    e88556d8:	03100713          	li	a4,49
    e88556dc:	68a2                	ld	a7,8(sp)
    e88556de:	02f76063          	bltu	a4,a5,e88556fe <NetSocket_Wait+0x6c>
    e88556e2:	0077f713          	andi	a4,a5,7
    e88556e6:	4037d693          	srai	a3,a5,0x3
    e88556ea:	4785                	li	a5,1
    e88556ec:	00e797bb          	sllw	a5,a5,a4
    e88556f0:	0818                	addi	a4,sp,16
    e88556f2:	80d7470b          	lrbu	a4,a4,a3,0
    e88556f6:	8fd9                	or	a5,a5,a4
    e88556f8:	0818                	addi	a4,sp,16
    e88556fa:	00d7578b          	srb	a5,a4,a3,0
#endif
	
	// Set up the read/write sets for select.
	
	if( inWaitType == kNetSocketWaitType_Read )
    e88556fe:	08089e63          	bnez	a7,e885579a <NetSocket_Wait+0x108>
	{
		FD_SET( inNativeSock, &readSet );
    e8855702:	03100793          	li	a5,49
		writeSetPtr = NULL;
    e8855706:	4481                	li	s1,0
		FD_SET( inNativeSock, &readSet );
    e8855708:	0287c163          	blt	a5,s0,e885572a <NetSocket_Wait+0x98>
    e885570c:	40345693          	srai	a3,s0,0x3
    e8855710:	4705                	li	a4,1
    e8855712:	00747793          	andi	a5,s0,7
    e8855716:	00f717bb          	sllw	a5,a4,a5
    e885571a:	8736                	mv	a4,a3
    e885571c:	0814                	addi	a3,sp,16
    e885571e:	80e6c68b          	lrbu	a3,a3,a4,0
    e8855722:	8fd5                	or	a5,a5,a3
    e8855724:	0814                	addi	a3,sp,16
    e8855726:	00e6d78b          	srb	a5,a3,a4,0
	
	// Set up the timeout.
	
	if( inTimeoutSecs < 0 )
	{
		timeoutPtr = NULL;
    e885572a:	4a01                	li	s4,0
	if( inTimeoutSecs < 0 )
    e885572c:	0009c663          	bltz	s3,e8855738 <NetSocket_Wait+0xa6>
	}
	else
	{
		timeout.tv_sec  = inTimeoutSecs;
    e8855730:	f04e                	sd	s3,32(sp)
		timeout.tv_usec = 0;
    e8855732:	f402                	sd	zero,40(sp)
		timeoutPtr = &timeout;
    e8855734:	02010a13          	addi	s4,sp,32
	maxFD = -1;
	if( inNativeSock		> maxFD ) maxFD = inNativeSock;
#if( 0 )
	if( inSock->recvCancel	> maxFD ) maxFD = inSock->recvCancel;
#else
	if( inSock->cancelSock	> maxFD ) maxFD = inSock->cancelSock;
    e8855738:	00c92503          	lw	a0,12(s2)
#endif
	do
	{
		n = select( maxFD + 1, &readSet, writeSetPtr, NULL, timeoutPtr );
		err = map_global_value_errno( n >= 0, n );
    e885573c:	0008fb17          	auipc	s6,0x8f
    e8855740:	eecb0b13          	addi	s6,s6,-276 # e88e4628 <lwip_errno>
		
	}	while( err == EINTR );
    e8855744:	4a91                	li	s5,4
    e8855746:	008527b3          	slt	a5,a0,s0
    e885574a:	42f4150b          	mvnez	a0,s0,a5
		n = select( maxFD + 1, &readSet, writeSetPtr, NULL, timeoutPtr );
    e885574e:	0015099b          	addiw	s3,a0,1
    e8855752:	8752                	mv	a4,s4
    e8855754:	4681                	li	a3,0
    e8855756:	8626                	mv	a2,s1
    e8855758:	080c                	addi	a1,sp,16
    e885575a:	854e                	mv	a0,s3
    e885575c:	5d0300ef          	jal	ra,e8885d2c <lwip_select>
		err = map_global_value_errno( n >= 0, n );
    e8855760:	0e055363          	bgez	a0,e8855846 <NetSocket_Wait+0x1b4>
    e8855764:	000b2403          	lw	s0,0(s6)
    e8855768:	12040163          	beqz	s0,e885588a <NetSocket_Wait+0x1f8>
	}	while( err == EINTR );
    e885576c:	ff5403e3          	beq	s0,s5,e8855752 <NetSocket_Wait+0xc0>
	if(      n  > 0 ) err = FD_ISSET( inSock->recvCancel, &readSet ) ? kCanceledErr : kNoErr;
#else
	if(      n  > 0 ) err = FD_ISSET( inSock->cancelSock, &readSet ) ? kCanceledErr : kNoErr;
#endif
	else if( n == 0 ) err = kTimeoutErr;
	else { dlogassert( "select() error: %#m", err ); goto exit; }
    e8855770:	88a2                	mv	a7,s0
    e8855772:	00069817          	auipc	a6,0x69
    e8855776:	49680813          	addi	a6,a6,1174 # e88bec08 <__PRETTY_FUNCTION__.8745+0x20>
    e885577a:	0006c797          	auipc	a5,0x6c
    e885577e:	41e78793          	addi	a5,a5,1054 # e88c1b98 <__PRETTY_FUNCTION__.10121>
    e8855782:	79700713          	li	a4,1943
    e8855786:	0006c697          	auipc	a3,0x6c
    e885578a:	31268693          	addi	a3,a3,786 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e885578e:	4601                	li	a2,0
    e8855790:	4581                	li	a1,0
    e8855792:	4501                	li	a0,0
    e8855794:	c35f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	
exit:
	return( err );
    e8855798:	a861                	j	e8855830 <NetSocket_Wait+0x19e>
	else if( inWaitType == kNetSocketWaitType_Write )
    e885579a:	4785                	li	a5,1
    e885579c:	02f89d63          	bne	a7,a5,e88557d6 <NetSocket_Wait+0x144>
		FD_ZERO( &writeSet );
    e88557a0:	461d                	li	a2,7
    e88557a2:	4581                	li	a1,0
    e88557a4:	0828                	addi	a0,sp,24
    e88557a6:	3ef260ef          	jal	ra,e887c394 <eLIBs_memset>
		writeSetPtr = &writeSet;
    e88557aa:	0824                	addi	s1,sp,24
		FD_SET( inNativeSock, &writeSet );
    e88557ac:	03100793          	li	a5,49
    e88557b0:	f687cde3          	blt	a5,s0,e885572a <NetSocket_Wait+0x98>
		FD_SET( inNativeSock, &writeSet );
    e88557b4:	40345693          	srai	a3,s0,0x3
    e88557b8:	4705                	li	a4,1
    e88557ba:	00747793          	andi	a5,s0,7
    e88557be:	00f717bb          	sllw	a5,a4,a5
    e88557c2:	8736                	mv	a4,a3
    e88557c4:	0834                	addi	a3,sp,24
    e88557c6:	80e6c68b          	lrbu	a3,a3,a4,0
    e88557ca:	8fd5                	or	a5,a5,a3
    e88557cc:	0834                	addi	a3,sp,24
    e88557ce:	00e6d78b          	srb	a5,a3,a4,0
		writeSetPtr = &writeSet;
    e88557d2:	84b6                	mv	s1,a3
    e88557d4:	bf99                	j	e885572a <NetSocket_Wait+0x98>
	else if( inWaitType == kNetSocketWaitType_Connect )
    e88557d6:	4789                	li	a5,2
    e88557d8:	02f89663          	bne	a7,a5,e8855804 <NetSocket_Wait+0x172>
		FD_SET( inNativeSock, &readSet );
    e88557dc:	03100793          	li	a5,49
    e88557e0:	fc87c0e3          	blt	a5,s0,e88557a0 <NetSocket_Wait+0x10e>
    e88557e4:	40345693          	srai	a3,s0,0x3
    e88557e8:	4705                	li	a4,1
    e88557ea:	00747793          	andi	a5,s0,7
    e88557ee:	00f717bb          	sllw	a5,a4,a5
    e88557f2:	8736                	mv	a4,a3
    e88557f4:	0814                	addi	a3,sp,16
    e88557f6:	80e6c68b          	lrbu	a3,a3,a4,0
    e88557fa:	8fd5                	or	a5,a5,a3
    e88557fc:	0814                	addi	a3,sp,16
    e88557fe:	00e6d78b          	srb	a5,a3,a4,0
		FD_ZERO( &writeSet );
    e8855802:	bf79                	j	e88557a0 <NetSocket_Wait+0x10e>
		dlogassert( "bad wait type: %d", inWaitType );
    e8855804:	0006c817          	auipc	a6,0x6c
    e8855808:	0d480813          	addi	a6,a6,212 # e88c18d8 <__PRETTY_FUNCTION__.10057+0x58>
    e885580c:	0006c797          	auipc	a5,0x6c
    e8855810:	38c78793          	addi	a5,a5,908 # e88c1b98 <__PRETTY_FUNCTION__.10121>
    e8855814:	76f00713          	li	a4,1903
    e8855818:	0006c697          	auipc	a3,0x6c
    e885581c:	28068693          	addi	a3,a3,640 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8855820:	4601                	li	a2,0
    e8855822:	4581                	li	a1,0
    e8855824:	4501                	li	a0,0
		err = kParamErr;
    e8855826:	7479                	lui	s0,0xffffe
		dlogassert( "bad wait type: %d", inWaitType );
    e8855828:	ba1f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kParamErr;
    e885582c:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e8855830:	8522                	mv	a0,s0
    e8855832:	70a6                	ld	ra,104(sp)
    e8855834:	7406                	ld	s0,96(sp)
    e8855836:	64e6                	ld	s1,88(sp)
    e8855838:	6946                	ld	s2,80(sp)
    e885583a:	69a6                	ld	s3,72(sp)
    e885583c:	6a06                	ld	s4,64(sp)
    e885583e:	7ae2                	ld	s5,56(sp)
    e8855840:	7b42                	ld	s6,48(sp)
    e8855842:	6165                	addi	sp,sp,112
    e8855844:	8082                	ret
	if(      n  > 0 ) err = FD_ISSET( inSock->cancelSock, &readSet ) ? kCanceledErr : kNoErr;
    e8855846:	c515                	beqz	a0,e8855872 <NetSocket_Wait+0x1e0>
    e8855848:	00c92783          	lw	a5,12(s2)
    e885584c:	03100713          	li	a4,49
    e8855850:	4401                	li	s0,0
    e8855852:	fcf76fe3          	bltu	a4,a5,e8855830 <NetSocket_Wait+0x19e>
    e8855856:	4037d713          	srai	a4,a5,0x3
    e885585a:	0814                	addi	a3,sp,16
    e885585c:	80e6c40b          	lrbu	s0,a3,a4,0
    e8855860:	8b9d                	andi	a5,a5,7
    e8855862:	40f4543b          	sraw	s0,s0,a5
    e8855866:	8805                	andi	s0,s0,1
    e8855868:	d461                	beqz	s0,e8855830 <NetSocket_Wait+0x19e>
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e885586a:	7479                	lui	s0,0xffffe
    e885586c:	5bd40413          	addi	s0,s0,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
    e8855870:	b7c1                	j	e8855830 <NetSocket_Wait+0x19e>
	else if( n == 0 ) err = kTimeoutErr;
    e8855872:	7479                	lui	s0,0xffffe
    e8855874:	5be40413          	addi	s0,s0,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e8855878:	bf65                	j	e8855830 <NetSocket_Wait+0x19e>
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e885587a:	7479                	lui	s0,0xffffe
    e885587c:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8855880:	bf45                	j	e8855830 <NetSocket_Wait+0x19e>
	require_action( IsValidSocket( inNativeSock ), exit, err = kNotPreparedErr );
    e8855882:	7479                	lui	s0,0xffffe
    e8855884:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e8855888:	b765                	j	e8855830 <NetSocket_Wait+0x19e>
		err = map_global_value_errno( n >= 0, n );
    e885588a:	7479                	lui	s0,0xffffe
    e885588c:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8855890:	b5c5                	j	e8855770 <NetSocket_Wait+0xde>

00000000e8855892 <NetSocket_ReadInternal>:
{
    e8855892:	7159                	addi	sp,sp,-112
    e8855894:	e0d2                	sd	s4,64(sp)
    e8855896:	f486                	sd	ra,104(sp)
    e8855898:	f0a2                	sd	s0,96(sp)
    e885589a:	eca6                	sd	s1,88(sp)
    e885589c:	e8ca                	sd	s2,80(sp)
    e885589e:	e4ce                	sd	s3,72(sp)
    e88558a0:	fc56                	sd	s5,56(sp)
    e88558a2:	f85a                	sd	s6,48(sp)
    e88558a4:	f45e                	sd	s7,40(sp)
    e88558a6:	f062                	sd	s8,32(sp)
    e88558a8:	ec66                	sd	s9,24(sp)
    e88558aa:	e86a                	sd	s10,16(sp)
    e88558ac:	e46e                	sd	s11,8(sp)
    e88558ae:	8a3a                	mv	s4,a4
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e88558b0:	12050263          	beqz	a0,e88559d4 <NetSocket_ReadInternal+0x142>
    e88558b4:	4118                	lw	a4,0(a0)
    e88558b6:	8bbe                	mv	s7,a5
    e88558b8:	6e7377b7          	lui	a5,0x6e737
    e88558bc:	f6378793          	addi	a5,a5,-157 # 6e736f63 <memcmp-0x7a0c909d>
    e88558c0:	892a                	mv	s2,a0
    e88558c2:	10f71963          	bne	a4,a5,e88559d4 <NetSocket_ReadInternal+0x142>
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e88558c6:	00854783          	lbu	a5,8(a0)
    e88558ca:	10079a63          	bnez	a5,e88559de <NetSocket_ReadInternal+0x14c>
	require_action( IsValidSocket( inSock->nativeSock ), exit, err = kNotPreparedErr );
    e88558ce:	415c                	lw	a5,4(a0)
    e88558d0:	1007cc63          	bltz	a5,e88559e8 <NetSocket_ReadInternal+0x156>
    e88558d4:	8b2e                	mv	s6,a1
	n = (ssize_t)( inSock->leftoverEnd - inSock->leftoverPtr );
    e88558d6:	fef5458b          	ldd	a1,a5,(a0),3,4
    e88558da:	8ab6                	mv	s5,a3
    e88558dc:	8c42                	mv	s8,a6
    e88558de:	9f8d                	subw	a5,a5,a1
	remaining = (ssize_t) inMaxSize;
    e88558e0:	0006099b          	sext.w	s3,a2
	readSize = 0;
    e88558e4:	4481                	li	s1,0
	if( n > 0 )
    e88558e6:	02f05363          	blez	a5,e885590c <NetSocket_ReadInternal+0x7a>
		if( n > remaining ) n = remaining;
    e88558ea:	0137a433          	slt	s0,a5,s3
    e88558ee:	4089978b          	mveqz	a5,s3,s0
    e88558f2:	84be                	mv	s1,a5
		memcpy( bufferPtr, inSock->leftoverPtr, n );
    e88558f4:	8626                	mv	a2,s1
    e88558f6:	8536                	mv	a0,a3
    e88558f8:	2a9260ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		bufferPtr			+= n;
    e88558fc:	9aa6                	add	s5,s5,s1
		inSock->leftoverPtr	+= n;
    e88558fe:	03093783          	ld	a5,48(s2)
		remaining			-= n;
    e8855902:	409989bb          	subw	s3,s3,s1
		inSock->leftoverPtr	+= n;
    e8855906:	97a6                	add	a5,a5,s1
    e8855908:	02f93823          	sd	a5,48(s2)
			err = socket_value_errno( inSock->nativeSock, n );
    e885590c:	0008fc97          	auipc	s9,0x8f
    e8855910:	d1cc8c93          	addi	s9,s9,-740 # e88e4628 <lwip_errno>
			if( err == EWOULDBLOCK )
    e8855914:	4d2d                	li	s10,11
			else if( err == EINTR )
    e8855916:	4d91                	li	s11,4
    e8855918:	a839                	j	e8855936 <NetSocket_ReadInternal+0xa4>
		n = recv( inSock->nativeSock, bufferPtr, (size_t) remaining, inFlags );
    e885591a:	00492503          	lw	a0,4(s2)
    e885591e:	86de                	mv	a3,s7
    e8855920:	864e                	mv	a2,s3
    e8855922:	85d6                	mv	a1,s5
    e8855924:	45b2f0ef          	jal	ra,e888557e <lwip_recv>
    e8855928:	842a                	mv	s0,a0
		if( n > 0 )
    e885592a:	00a05a63          	blez	a0,e885593e <NetSocket_ReadInternal+0xac>
			bufferPtr += n;
    e885592e:	9aaa                	add	s5,s5,a0
			remaining -= n;
    e8855930:	40a989bb          	subw	s3,s3,a0
			readSize  += ( (size_t) n );
    e8855934:	94aa                	add	s1,s1,a0
	while( remaining > 0 )
    e8855936:	ff3042e3          	bgtz	s3,e885591a <NetSocket_ReadInternal+0x88>
					err = kNoErr;
    e885593a:	4401                	li	s0,0
    e885593c:	a021                	j	e8855944 <NetSocket_ReadInternal+0xb2>
		else if( n == 0 )
    e885593e:	e51d                	bnez	a0,e885596c <NetSocket_ReadInternal+0xda>
			err = ( readSize < inMinSize ) ? kConnectionErr : kNoErr;
    e8855940:	0b64e963          	bltu	s1,s6,e88559f2 <NetSocket_ReadInternal+0x160>
	if( outSize ) *outSize = readSize;
    e8855944:	000a0463          	beqz	s4,e885594c <NetSocket_ReadInternal+0xba>
    e8855948:	009a3023          	sd	s1,0(s4)
}
    e885594c:	8522                	mv	a0,s0
    e885594e:	70a6                	ld	ra,104(sp)
    e8855950:	7406                	ld	s0,96(sp)
    e8855952:	64e6                	ld	s1,88(sp)
    e8855954:	6946                	ld	s2,80(sp)
    e8855956:	69a6                	ld	s3,72(sp)
    e8855958:	6a06                	ld	s4,64(sp)
    e885595a:	7ae2                	ld	s5,56(sp)
    e885595c:	7b42                	ld	s6,48(sp)
    e885595e:	7ba2                	ld	s7,40(sp)
    e8855960:	7c02                	ld	s8,32(sp)
    e8855962:	6ce2                	ld	s9,24(sp)
    e8855964:	6d42                	ld	s10,16(sp)
    e8855966:	6da2                	ld	s11,8(sp)
    e8855968:	6165                	addi	sp,sp,112
    e885596a:	8082                	ret
			err = socket_value_errno( inSock->nativeSock, n );
    e885596c:	000ca403          	lw	s0,0(s9)
    e8855970:	cc31                	beqz	s0,e88559cc <NetSocket_ReadInternal+0x13a>
			if( err == EWOULDBLOCK )
    e8855972:	01a41e63          	bne	s0,s10,e885598e <NetSocket_ReadInternal+0xfc>
				if( readSize >= inMinSize )
    e8855976:	fd64f2e3          	bgeu	s1,s6,e885593a <NetSocket_ReadInternal+0xa8>
				err = NetSocket_Wait( inSock, inSock->nativeSock, kNetSocketWaitType_Read, inTimeoutSecs );
    e885597a:	00492583          	lw	a1,4(s2)
    e885597e:	86e2                	mv	a3,s8
    e8855980:	4601                	li	a2,0
    e8855982:	854a                	mv	a0,s2
    e8855984:	d0fff0ef          	jal	ra,e8855692 <NetSocket_Wait>
    e8855988:	842a                	mv	s0,a0
				if( err ) goto exit;
    e885598a:	d555                	beqz	a0,e8855936 <NetSocket_ReadInternal+0xa4>
    e885598c:	bf65                	j	e8855944 <NetSocket_ReadInternal+0xb2>
			else if( err == EINTR )
    e885598e:	fbb404e3          	beq	s0,s11,e8855936 <NetSocket_ReadInternal+0xa4>
				if( ( err != ECONNRESET ) && ( err != ETIMEDOUT ) )
    e8855992:	06800793          	li	a5,104
    e8855996:	faf407e3          	beq	s0,a5,e8855944 <NetSocket_ReadInternal+0xb2>
    e885599a:	07400793          	li	a5,116
    e885599e:	faf403e3          	beq	s0,a5,e8855944 <NetSocket_ReadInternal+0xb2>
					dlogassert( "recv() error: %#m", err );
    e88559a2:	88a2                	mv	a7,s0
    e88559a4:	0006c817          	auipc	a6,0x6c
    e88559a8:	f1c80813          	addi	a6,a6,-228 # e88c18c0 <__PRETTY_FUNCTION__.10057+0x40>
    e88559ac:	0006c797          	auipc	a5,0x6c
    e88559b0:	19c78793          	addi	a5,a5,412 # e88c1b48 <__PRETTY_FUNCTION__.10059>
    e88559b4:	66900713          	li	a4,1641
    e88559b8:	0006c697          	auipc	a3,0x6c
    e88559bc:	0e068693          	addi	a3,a3,224 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e88559c0:	4601                	li	a2,0
    e88559c2:	4581                	li	a1,0
    e88559c4:	4501                	li	a0,0
    e88559c6:	a03f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e88559ca:	bfad                	j	e8855944 <NetSocket_ReadInternal+0xb2>
			err = socket_value_errno( inSock->nativeSock, n );
    e88559cc:	7479                	lui	s0,0xffffe
    e88559ce:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e88559d2:	bfc1                	j	e88559a2 <NetSocket_ReadInternal+0x110>
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e88559d4:	7479                	lui	s0,0xffffe
	readSize = 0;
    e88559d6:	4481                	li	s1,0
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e88559d8:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e88559dc:	b7a5                	j	e8855944 <NetSocket_ReadInternal+0xb2>
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e88559de:	7479                	lui	s0,0xffffe
	readSize = 0;
    e88559e0:	4481                	li	s1,0
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e88559e2:	5bd40413          	addi	s0,s0,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
    e88559e6:	bfb9                	j	e8855944 <NetSocket_ReadInternal+0xb2>
	require_action( IsValidSocket( inSock->nativeSock ), exit, err = kNotPreparedErr );
    e88559e8:	7479                	lui	s0,0xffffe
	readSize = 0;
    e88559ea:	4481                	li	s1,0
	require_action( IsValidSocket( inSock->nativeSock ), exit, err = kNotPreparedErr );
    e88559ec:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e88559f0:	bf91                	j	e8855944 <NetSocket_ReadInternal+0xb2>
			err = ( readSize < inMinSize ) ? kConnectionErr : kNoErr;
    e88559f2:	7479                	lui	s0,0xffffe
    e88559f4:	59f40413          	addi	s0,s0,1439 # ffffffffffffe59f <__DRAM0_INF_BASE+0xffffffff0000e59f>
    e88559f8:	b7b1                	j	e8855944 <NetSocket_ReadInternal+0xb2>

00000000e88559fa <NetSocket_WriteInternal>:
{
    e88559fa:	715d                	addi	sp,sp,-80
    e88559fc:	e486                	sd	ra,72(sp)
    e88559fe:	e0a2                	sd	s0,64(sp)
    e8855a00:	fc26                	sd	s1,56(sp)
    e8855a02:	f84a                	sd	s2,48(sp)
    e8855a04:	f44e                	sd	s3,40(sp)
    e8855a06:	f052                	sd	s4,32(sp)
    e8855a08:	ec56                	sd	s5,24(sp)
    e8855a0a:	e85a                	sd	s6,16(sp)
    e8855a0c:	e45e                	sd	s7,8(sp)
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e8855a0e:	c179                	beqz	a0,e8855ad4 <NetSocket_WriteInternal+0xda>
    e8855a10:	4118                	lw	a4,0(a0)
    e8855a12:	6e7377b7          	lui	a5,0x6e737
    e8855a16:	f6378793          	addi	a5,a5,-157 # 6e736f63 <memcmp-0x7a0c909d>
    e8855a1a:	84aa                	mv	s1,a0
    e8855a1c:	0af71c63          	bne	a4,a5,e8855ad4 <NetSocket_WriteInternal+0xda>
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e8855a20:	00854783          	lbu	a5,8(a0)
    e8855a24:	efc5                	bnez	a5,e8855adc <NetSocket_WriteInternal+0xe2>
	require_action( IsValidSocket( inSock->nativeSock ), exit, err = kNotPreparedErr );
    e8855a26:	415c                	lw	a5,4(a0)
    e8855a28:	0a07ce63          	bltz	a5,e8855ae4 <NetSocket_WriteInternal+0xea>
    e8855a2c:	89ae                	mv	s3,a1
    e8855a2e:	8932                	mv	s2,a2
    e8855a30:	8a36                	mv	s4,a3
			err = socket_value_errno( inSock->nativeSock, n );
    e8855a32:	0008fa97          	auipc	s5,0x8f
    e8855a36:	bf6a8a93          	addi	s5,s5,-1034 # e88e4628 <lwip_errno>
			if( err == EWOULDBLOCK )
    e8855a3a:	4b2d                	li	s6,11
			else if( err == EINTR ) continue;
    e8855a3c:	4b91                	li	s7,4
	while( remaining > 0 )
    e8855a3e:	00091463          	bnez	s2,e8855a46 <NetSocket_WriteInternal+0x4c>
	err = kNoErr;
    e8855a42:	4401                	li	s0,0
    e8855a44:	a80d                	j	e8855a76 <NetSocket_WriteInternal+0x7c>
			n = write( inSock->nativeSock, bufferPtr, remaining );
    e8855a46:	40c8                	lw	a0,4(s1)
    e8855a48:	864a                	mv	a2,s2
    e8855a4a:	85ce                	mv	a1,s3
    e8855a4c:	2bc300ef          	jal	ra,e8885d08 <lwip_write>
		if( n > 0 )
    e8855a50:	00a05663          	blez	a0,e8855a5c <NetSocket_WriteInternal+0x62>
			bufferPtr += n;
    e8855a54:	99aa                	add	s3,s3,a0
			remaining -= ( (size_t) n );
    e8855a56:	40a90933          	sub	s2,s2,a0
    e8855a5a:	b7d5                	j	e8855a3e <NetSocket_WriteInternal+0x44>
			err = socket_value_errno( inSock->nativeSock, n );
    e8855a5c:	000aa403          	lw	s0,0(s5)
    e8855a60:	c435                	beqz	s0,e8855acc <NetSocket_WriteInternal+0xd2>
			if( err == EWOULDBLOCK )
    e8855a62:	03641663          	bne	s0,s6,e8855a8e <NetSocket_WriteInternal+0x94>
				err = NetSocket_Wait( inSock, inSock->nativeSock, kNetSocketWaitType_Write, inTimeoutSecs );
    e8855a66:	40cc                	lw	a1,4(s1)
    e8855a68:	86d2                	mv	a3,s4
    e8855a6a:	4605                	li	a2,1
    e8855a6c:	8526                	mv	a0,s1
    e8855a6e:	c25ff0ef          	jal	ra,e8855692 <NetSocket_Wait>
    e8855a72:	842a                	mv	s0,a0
				if( err ) goto exit;
    e8855a74:	d569                	beqz	a0,e8855a3e <NetSocket_WriteInternal+0x44>
}
    e8855a76:	8522                	mv	a0,s0
    e8855a78:	60a6                	ld	ra,72(sp)
    e8855a7a:	6406                	ld	s0,64(sp)
    e8855a7c:	74e2                	ld	s1,56(sp)
    e8855a7e:	7942                	ld	s2,48(sp)
    e8855a80:	79a2                	ld	s3,40(sp)
    e8855a82:	7a02                	ld	s4,32(sp)
    e8855a84:	6ae2                	ld	s5,24(sp)
    e8855a86:	6b42                	ld	s6,16(sp)
    e8855a88:	6ba2                	ld	s7,8(sp)
    e8855a8a:	6161                	addi	sp,sp,80
    e8855a8c:	8082                	ret
			else if( err == EINTR ) continue;
    e8855a8e:	fb7408e3          	beq	s0,s7,e8855a3e <NetSocket_WriteInternal+0x44>
			else if( err == EPIPE ) goto exit;
    e8855a92:	02000793          	li	a5,32
    e8855a96:	fef400e3          	beq	s0,a5,e8855a76 <NetSocket_WriteInternal+0x7c>
			else if( err == ECONNRESET ) goto exit;
    e8855a9a:	06800793          	li	a5,104
    e8855a9e:	fcf40ce3          	beq	s0,a5,e8855a76 <NetSocket_WriteInternal+0x7c>
			else { dlogassert( "send/write() error: %#m", err ); goto exit; }
    e8855aa2:	88a2                	mv	a7,s0
    e8855aa4:	0006c817          	auipc	a6,0x6c
    e8855aa8:	e4c80813          	addi	a6,a6,-436 # e88c18f0 <__PRETTY_FUNCTION__.10057+0x70>
    e8855aac:	0006c797          	auipc	a5,0x6c
    e8855ab0:	0b478793          	addi	a5,a5,180 # e88c1b60 <__PRETTY_FUNCTION__.10074>
    e8855ab4:	6a100713          	li	a4,1697
    e8855ab8:	0006c697          	auipc	a3,0x6c
    e8855abc:	fe068693          	addi	a3,a3,-32 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8855ac0:	4601                	li	a2,0
    e8855ac2:	4581                	li	a1,0
    e8855ac4:	4501                	li	a0,0
    e8855ac6:	903f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8855aca:	b775                	j	e8855a76 <NetSocket_WriteInternal+0x7c>
			err = socket_value_errno( inSock->nativeSock, n );
    e8855acc:	7479                	lui	s0,0xffffe
    e8855ace:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8855ad2:	bfc1                	j	e8855aa2 <NetSocket_WriteInternal+0xa8>
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e8855ad4:	7479                	lui	s0,0xffffe
    e8855ad6:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8855ada:	bf71                	j	e8855a76 <NetSocket_WriteInternal+0x7c>
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e8855adc:	7479                	lui	s0,0xffffe
    e8855ade:	5bd40413          	addi	s0,s0,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
    e8855ae2:	bf51                	j	e8855a76 <NetSocket_WriteInternal+0x7c>
	require_action( IsValidSocket( inSock->nativeSock ), exit, err = kNotPreparedErr );
    e8855ae4:	7479                	lui	s0,0xffffe
    e8855ae6:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e8855aea:	b771                	j	e8855a76 <NetSocket_WriteInternal+0x7c>

00000000e8855aec <NetSocket_WriteVInternal>:
{
    e8855aec:	711d                	addi	sp,sp,-96
    e8855aee:	ec86                	sd	ra,88(sp)
    e8855af0:	e8a2                	sd	s0,80(sp)
    e8855af2:	e4a6                	sd	s1,72(sp)
    e8855af4:	e0ca                	sd	s2,64(sp)
    e8855af6:	fc4e                	sd	s3,56(sp)
    e8855af8:	f852                	sd	s4,48(sp)
    e8855afa:	f456                	sd	s5,40(sp)
    e8855afc:	f05a                	sd	s6,32(sp)
    e8855afe:	ec5e                	sd	s7,24(sp)
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e8855b00:	12050563          	beqz	a0,e8855c2a <NetSocket_WriteVInternal+0x13e>
    e8855b04:	4118                	lw	a4,0(a0)
    e8855b06:	6e7377b7          	lui	a5,0x6e737
    e8855b0a:	f6378793          	addi	a5,a5,-157 # 6e736f63 <memcmp-0x7a0c909d>
    e8855b0e:	892a                	mv	s2,a0
    e8855b10:	10f71d63          	bne	a4,a5,e8855c2a <NetSocket_WriteVInternal+0x13e>
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e8855b14:	00854783          	lbu	a5,8(a0)
    e8855b18:	10079d63          	bnez	a5,e8855c32 <NetSocket_WriteVInternal+0x146>
	require_action( IsValidSocket( inSock->nativeSock ), exit, err = kNotPreparedErr );
    e8855b1c:	415c                	lw	a5,4(a0)
    e8855b1e:	1007ce63          	bltz	a5,e8855c3a <NetSocket_WriteVInternal+0x14e>
    e8855b22:	89b2                	mv	s3,a2
	if( inCount == 0 ) { err = kNoErr; goto exit; }
    e8855b24:	ca29                	beqz	a2,e8855b76 <NetSocket_WriteVInternal+0x8a>
    e8855b26:	84ae                	mv	s1,a1
    e8855b28:	8ab6                	mv	s5,a3
			err = socket_value_errno( inSock->nativeSock, n );
    e8855b2a:	0008fb17          	auipc	s6,0x8f
    e8855b2e:	afeb0b13          	addi	s6,s6,-1282 # e88e4628 <lwip_errno>
			if( err == EWOULDBLOCK )
    e8855b32:	4bad                	li	s7,11
			else if( err == EINTR ) continue;
    e8855b34:	4a11                	li	s4,4
		n = writev( inSock->nativeSock, inArray, inCount );
    e8855b36:	00492503          	lw	a0,4(s2)
    e8855b3a:	864e                	mv	a2,s3
    e8855b3c:	85a6                	mv	a1,s1
    e8855b3e:	1d0300ef          	jal	ra,e8885d0e <lwip_writev>
    e8855b42:	88aa                	mv	a7,a0
		if( n > 0 )
    e8855b44:	04a05663          	blez	a0,e8855b90 <NetSocket_WriteVInternal+0xa4>
			while( ( inCount > 0 ) && ( n >= (ssize_t)( inArray->iov_len ) ) )
    e8855b48:	03305563          	blez	s3,e8855b72 <NetSocket_WriteVInternal+0x86>
    e8855b4c:	649c                	ld	a5,8(s1)
    e8855b4e:	0007871b          	sext.w	a4,a5
    e8855b52:	00e8db63          	bge	a7,a4,e8855b68 <NetSocket_WriteVInternal+0x7c>
			inArray->iov_base  = ( (char *)( inArray->iov_base ) ) + n;
    e8855b56:	609c                	ld	a5,0(s1)
    e8855b58:	97c6                	add	a5,a5,a7
    e8855b5a:	e09c                	sd	a5,0(s1)
			inArray->iov_len  -= ( (size_t) n );
    e8855b5c:	649c                	ld	a5,8(s1)
    e8855b5e:	411788b3          	sub	a7,a5,a7
    e8855b62:	0114b423          	sd	a7,8(s1)
    e8855b66:	bfc1                	j	e8855b36 <NetSocket_WriteVInternal+0x4a>
				n -= inArray->iov_len;
    e8855b68:	40f888bb          	subw	a7,a7,a5
				++inArray;
    e8855b6c:	04c1                	addi	s1,s1,16
				--inCount;
    e8855b6e:	39fd                	addiw	s3,s3,-1
    e8855b70:	bfe1                	j	e8855b48 <NetSocket_WriteVInternal+0x5c>
			if( inCount == 0 ) break;
    e8855b72:	fe0992e3          	bnez	s3,e8855b56 <NetSocket_WriteVInternal+0x6a>
	if( inCount == 0 ) { err = kNoErr; goto exit; }
    e8855b76:	4401                	li	s0,0
}
    e8855b78:	8522                	mv	a0,s0
    e8855b7a:	60e6                	ld	ra,88(sp)
    e8855b7c:	6446                	ld	s0,80(sp)
    e8855b7e:	64a6                	ld	s1,72(sp)
    e8855b80:	6906                	ld	s2,64(sp)
    e8855b82:	79e2                	ld	s3,56(sp)
    e8855b84:	7a42                	ld	s4,48(sp)
    e8855b86:	7aa2                	ld	s5,40(sp)
    e8855b88:	7b02                	ld	s6,32(sp)
    e8855b8a:	6be2                	ld	s7,24(sp)
    e8855b8c:	6125                	addi	sp,sp,96
    e8855b8e:	8082                	ret
		else if( n == 0 )
    e8855b90:	e51d                	bnez	a0,e8855bbe <NetSocket_WriteVInternal+0xd2>
			dlogassert( "Bad writev() param" );
    e8855b92:	0006c817          	auipc	a6,0x6c
    e8855b96:	d7680813          	addi	a6,a6,-650 # e88c1908 <__PRETTY_FUNCTION__.10057+0x88>
    e8855b9a:	0006c797          	auipc	a5,0x6c
    e8855b9e:	fde78793          	addi	a5,a5,-34 # e88c1b78 <__PRETTY_FUNCTION__.10090>
    e8855ba2:	6cb00713          	li	a4,1739
    e8855ba6:	0006c697          	auipc	a3,0x6c
    e8855baa:	ef268693          	addi	a3,a3,-270 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8855bae:	4601                	li	a2,0
    e8855bb0:	4581                	li	a1,0
			err = kParamErr;
    e8855bb2:	7479                	lui	s0,0xffffe
			dlogassert( "Bad writev() param" );
    e8855bb4:	815f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			err = kParamErr;
    e8855bb8:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8855bbc:	bf75                	j	e8855b78 <NetSocket_WriteVInternal+0x8c>
			err = socket_value_errno( inSock->nativeSock, n );
    e8855bbe:	000b2403          	lw	s0,0(s6)
    e8855bc2:	c025                	beqz	s0,e8855c22 <NetSocket_WriteVInternal+0x136>
			if( err == EWOULDBLOCK )
    e8855bc4:	01741c63          	bne	s0,s7,e8855bdc <NetSocket_WriteVInternal+0xf0>
				err = NetSocket_Wait( inSock, inSock->nativeSock, kNetSocketWaitType_Write, inTimeoutSecs );
    e8855bc8:	00492583          	lw	a1,4(s2)
    e8855bcc:	86d6                	mv	a3,s5
    e8855bce:	4605                	li	a2,1
    e8855bd0:	854a                	mv	a0,s2
    e8855bd2:	ac1ff0ef          	jal	ra,e8855692 <NetSocket_Wait>
    e8855bd6:	842a                	mv	s0,a0
				if( err ) goto exit;
    e8855bd8:	dd39                	beqz	a0,e8855b36 <NetSocket_WriteVInternal+0x4a>
    e8855bda:	bf79                	j	e8855b78 <NetSocket_WriteVInternal+0x8c>
			else if( err == EINTR ) continue;
    e8855bdc:	f5440de3          	beq	s0,s4,e8855b36 <NetSocket_WriteVInternal+0x4a>
			else if( err == EPIPE ) goto exit;
    e8855be0:	02000793          	li	a5,32
    e8855be4:	f8f40ae3          	beq	s0,a5,e8855b78 <NetSocket_WriteVInternal+0x8c>
			else if( err == ECONNRESET ) goto exit;
    e8855be8:	06800793          	li	a5,104
    e8855bec:	f8f406e3          	beq	s0,a5,e8855b78 <NetSocket_WriteVInternal+0x8c>
			else if( err == EHOSTDOWN )  goto exit;
    e8855bf0:	07500793          	li	a5,117
    e8855bf4:	f8f402e3          	beq	s0,a5,e8855b78 <NetSocket_WriteVInternal+0x8c>
			else { dlogassert( "writev() error: %zd, %#m", n, err ); goto exit; }
    e8855bf8:	e022                	sd	s0,0(sp)
    e8855bfa:	0006c817          	auipc	a6,0x6c
    e8855bfe:	d2680813          	addi	a6,a6,-730 # e88c1920 <__PRETTY_FUNCTION__.10057+0xa0>
    e8855c02:	0006c797          	auipc	a5,0x6c
    e8855c06:	f7678793          	addi	a5,a5,-138 # e88c1b78 <__PRETTY_FUNCTION__.10090>
    e8855c0a:	6dd00713          	li	a4,1757
    e8855c0e:	0006c697          	auipc	a3,0x6c
    e8855c12:	e8a68693          	addi	a3,a3,-374 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8855c16:	4601                	li	a2,0
    e8855c18:	4581                	li	a1,0
    e8855c1a:	4501                	li	a0,0
    e8855c1c:	facf80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8855c20:	bfa1                	j	e8855b78 <NetSocket_WriteVInternal+0x8c>
			err = socket_value_errno( inSock->nativeSock, n );
    e8855c22:	7479                	lui	s0,0xffffe
    e8855c24:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8855c28:	bfc1                	j	e8855bf8 <NetSocket_WriteVInternal+0x10c>
	require_action( inSock && ( inSock->magic == kNetSocketMagic ), exit, err = kBadReferenceErr );
    e8855c2a:	7479                	lui	s0,0xffffe
    e8855c2c:	5ac40413          	addi	s0,s0,1452 # ffffffffffffe5ac <__DRAM0_INF_BASE+0xffffffff0000e5ac>
    e8855c30:	b7a1                	j	e8855b78 <NetSocket_WriteVInternal+0x8c>
	require_action_quiet( !inSock->canceled, exit, err = kCanceledErr );
    e8855c32:	7479                	lui	s0,0xffffe
    e8855c34:	5bd40413          	addi	s0,s0,1469 # ffffffffffffe5bd <__DRAM0_INF_BASE+0xffffffff0000e5bd>
    e8855c38:	b781                	j	e8855b78 <NetSocket_WriteVInternal+0x8c>
	require_action( IsValidSocket( inSock->nativeSock ), exit, err = kNotPreparedErr );
    e8855c3a:	7479                	lui	s0,0xffffe
    e8855c3c:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e8855c40:	bf25                	j	e8855b78 <NetSocket_WriteVInternal+0x8c>

00000000e8855c42 <SocketReadData>:
//===========================================================================================================================
//	SocketReadData
//===========================================================================================================================

OSStatus	SocketReadData( SocketRef inSock, void *inBuffer, size_t inSize, size_t *ioOffset )
{
    e8855c42:	715d                	addi	sp,sp,-80
    e8855c44:	e486                	sd	ra,72(sp)
    e8855c46:	e0a2                	sd	s0,64(sp)
    e8855c48:	fc26                	sd	s1,56(sp)
    e8855c4a:	f84a                	sd	s2,48(sp)
    e8855c4c:	f44e                	sd	s3,40(sp)
    e8855c4e:	f052                	sd	s4,32(sp)
    e8855c50:	ec56                	sd	s5,24(sp)
    e8855c52:	e85a                	sd	s6,16(sp)
    e8855c54:	e45e                	sd	s7,8(sp)
    e8855c56:	e062                	sd	s8,0(sp)
	size_t			offset;
	size_t			remaining;
	uint8_t *		dst;
	ssize_t			n;
	
	offset = *ioOffset;
    e8855c58:	0006b903          	ld	s2,0(a3)
	require_action_quiet( offset != inSize, exit, err = kNoErr );
    e8855c5c:	02c91063          	bne	s2,a2,e8855c7c <SocketReadData+0x3a>
    e8855c60:	4401                	li	s0,0
		dlogassert( "recv failed: %#m", err );
	}
	
exit:
	return( err );
}
    e8855c62:	8522                	mv	a0,s0
    e8855c64:	60a6                	ld	ra,72(sp)
    e8855c66:	6406                	ld	s0,64(sp)
    e8855c68:	74e2                	ld	s1,56(sp)
    e8855c6a:	7942                	ld	s2,48(sp)
    e8855c6c:	79a2                	ld	s3,40(sp)
    e8855c6e:	7a02                	ld	s4,32(sp)
    e8855c70:	6ae2                	ld	s5,24(sp)
    e8855c72:	6b42                	ld	s6,16(sp)
    e8855c74:	6ba2                	ld	s7,8(sp)
    e8855c76:	6c02                	ld	s8,0(sp)
    e8855c78:	6161                	addi	sp,sp,80
    e8855c7a:	8082                	ret
	require_action( offset < inSize, exit, err = kNoSpaceErr );
    e8855c7c:	06c97f63          	bgeu	s2,a2,e8855cfa <SocketReadData+0xb8>
    e8855c80:	8a36                	mv	s4,a3
    e8855c82:	84b2                	mv	s1,a2
    e8855c84:	8aaa                	mv	s5,a0
	remaining = inSize - offset;
    e8855c86:	41260bb3          	sub	s7,a2,s2
	dst = ( (uint8_t *) inBuffer ) + offset;
    e8855c8a:	012589b3          	add	s3,a1,s2
		err = map_socket_value_errno( inSock, n >= 0, n );
    e8855c8e:	0008fc17          	auipc	s8,0x8f
    e8855c92:	99ac0c13          	addi	s8,s8,-1638 # e88e4628 <lwip_errno>
	}	while( err == EINTR );
    e8855c96:	4b11                	li	s6,4
		n = read_compat( inSock, (char *) dst, remaining );
    e8855c98:	865e                	mv	a2,s7
    e8855c9a:	85ce                	mv	a1,s3
    e8855c9c:	8556                	mv	a0,s5
    e8855c9e:	0d72f0ef          	jal	ra,e8885574 <lwip_read>
		err = map_socket_value_errno( inSock, n >= 0, n );
    e8855ca2:	00055b63          	bgez	a0,e8855cb8 <SocketReadData+0x76>
    e8855ca6:	000c2403          	lw	s0,0(s8)
    e8855caa:	cc19                	beqz	s0,e8855cc8 <SocketReadData+0x86>
	}	while( err == EINTR );
    e8855cac:	ff6406e3          	beq	s0,s6,e8855c98 <SocketReadData+0x56>
	else if( err != EWOULDBLOCK )
    e8855cb0:	47ad                	li	a5,11
    e8855cb2:	00f40963          	beq	s0,a5,e8855cc4 <SocketReadData+0x82>
    e8855cb6:	a821                	j	e8855cce <SocketReadData+0x8c>
	if( n > 0 )
    e8855cb8:	c529                	beqz	a0,e8855d02 <SocketReadData+0xc0>
		offset += ( (size_t) n );
    e8855cba:	954a                	add	a0,a0,s2
		*ioOffset = offset;
    e8855cbc:	00aa3023          	sd	a0,0(s4)
		err = ( offset == inSize ) ? kNoErr : EWOULDBLOCK;
    e8855cc0:	faa480e3          	beq	s1,a0,e8855c60 <SocketReadData+0x1e>
    e8855cc4:	442d                	li	s0,11
    e8855cc6:	bf71                	j	e8855c62 <SocketReadData+0x20>
		err = map_socket_value_errno( inSock, n >= 0, n );
    e8855cc8:	7479                	lui	s0,0xffffe
    e8855cca:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
		dlogassert( "recv failed: %#m", err );
    e8855cce:	6705                	lui	a4,0x1
    e8855cd0:	88a2                	mv	a7,s0
    e8855cd2:	0006c817          	auipc	a6,0x6c
    e8855cd6:	cde80813          	addi	a6,a6,-802 # e88c19b0 <__PRETTY_FUNCTION__.10057+0x130>
    e8855cda:	0006c797          	auipc	a5,0x6c
    e8855cde:	ece78793          	addi	a5,a5,-306 # e88c1ba8 <__PRETTY_FUNCTION__.10244>
    e8855ce2:	99570713          	addi	a4,a4,-1643 # 995 <memcmp-0xe87ff66b>
    e8855ce6:	0006c697          	auipc	a3,0x6c
    e8855cea:	db268693          	addi	a3,a3,-590 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8855cee:	4601                	li	a2,0
    e8855cf0:	4581                	li	a1,0
    e8855cf2:	4501                	li	a0,0
    e8855cf4:	ed4f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8855cf8:	b7ad                	j	e8855c62 <SocketReadData+0x20>
	require_action( offset < inSize, exit, err = kNoSpaceErr );
    e8855cfa:	7479                	lui	s0,0xffffe
    e8855cfc:	59540413          	addi	s0,s0,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
    e8855d00:	b78d                	j	e8855c62 <SocketReadData+0x20>
		err = kConnectionErr;
    e8855d02:	7479                	lui	s0,0xffffe
    e8855d04:	59f40413          	addi	s0,s0,1439 # ffffffffffffe59f <__DRAM0_INF_BASE+0xffffffff0000e59f>
	return( err );
    e8855d08:	bfa9                	j	e8855c62 <SocketReadData+0x20>

00000000e8855d0a <SocketWriteData>:
//===========================================================================================================================
//	SocketWriteData
//===========================================================================================================================

OSStatus	SocketWriteData( SocketRef inSock, iovec_t **ioArray, int *ioCount )
{
    e8855d0a:	7139                	addi	sp,sp,-64
    e8855d0c:	fc06                	sd	ra,56(sp)
    e8855d0e:	e422                	sd	s0,8(sp)
    e8855d10:	e826                	sd	s1,16(sp)
    e8855d12:	ec4a                	sd	s2,24(sp)
    e8855d14:	f04e                	sd	s3,32(sp)
    e8855d16:	f452                	sd	s4,40(sp)
    e8855d18:	f856                	sd	s5,48(sp)
#if( TARGET_OS_POSIX || TARGET_OS_WINDOWS )
	OSStatus		err;
	ssize_t			n;
	
	if( *ioCount == 0 ) return( kNoErr );
    e8855d1a:	4200                	lw	s0,0(a2)
    e8855d1c:	c03d                	beqz	s0,e8855d82 <SocketWriteData+0x78>
    e8855d1e:	84b2                	mv	s1,a2
    e8855d20:	892e                	mv	s2,a1
    e8855d22:	89aa                	mv	s3,a0
	do
	{
		n = writev( inSock, *ioArray, *ioCount );
		err = map_socket_value_errno( inSock, n >= 0, n );
    e8855d24:	0008fa97          	auipc	s5,0x8f
    e8855d28:	904a8a93          	addi	s5,s5,-1788 # e88e4628 <lwip_errno>
		
	}	while( err == EINTR );
    e8855d2c:	4a11                	li	s4,4
		n = writev( inSock, *ioArray, *ioCount );
    e8855d2e:	4090                	lw	a2,0(s1)
    e8855d30:	00093583          	ld	a1,0(s2)
    e8855d34:	854e                	mv	a0,s3
    e8855d36:	7d92f0ef          	jal	ra,e8885d0e <lwip_writev>
    e8855d3a:	842a                	mv	s0,a0
		err = map_socket_value_errno( inSock, n >= 0, n );
    e8855d3c:	06055163          	bgez	a0,e8855d9e <SocketWriteData+0x94>
    e8855d40:	000aa403          	lw	s0,0(s5)
    e8855d44:	c829                	beqz	s0,e8855d96 <SocketWriteData+0x8c>
	}	while( err == EINTR );
    e8855d46:	ff4404e3          	beq	s0,s4,e8855d2e <SocketWriteData+0x24>
	
	if( n > 0 )
	{
		err = UpdateIOVec( ioArray, ioCount, (size_t) n );
	}
	else if( ( err != EWOULDBLOCK ) && ( err != EPIPE ) )
    e8855d4a:	47ad                	li	a5,11
    e8855d4c:	02f40b63          	beq	s0,a5,e8855d82 <SocketWriteData+0x78>
    e8855d50:	02000793          	li	a5,32
    e8855d54:	02f40763          	beq	s0,a5,e8855d82 <SocketWriteData+0x78>
	{
		dlogassert( "writev failed: %#m\n", err );
    e8855d58:	6705                	lui	a4,0x1
    e8855d5a:	88a2                	mv	a7,s0
    e8855d5c:	0006c817          	auipc	a6,0x6c
    e8855d60:	d0c80813          	addi	a6,a6,-756 # e88c1a68 <__PRETTY_FUNCTION__.10057+0x1e8>
    e8855d64:	0006c797          	auipc	a5,0x6c
    e8855d68:	e5478793          	addi	a5,a5,-428 # e88c1bb8 <__PRETTY_FUNCTION__.10254>
    e8855d6c:	9b470713          	addi	a4,a4,-1612 # 9b4 <memcmp-0xe87ff64c>
    e8855d70:	0006c697          	auipc	a3,0x6c
    e8855d74:	d2868693          	addi	a3,a3,-728 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8855d78:	4601                	li	a2,0
    e8855d7a:	4581                	li	a1,0
    e8855d7c:	4501                	li	a0,0
    e8855d7e:	e4af80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = UpdateIOVec( ioArray, ioCount, (size_t) n );
		if( err == kNoErr ) break;
	}
	return( err );
#endif
}
    e8855d82:	8522                	mv	a0,s0
    e8855d84:	70e2                	ld	ra,56(sp)
    e8855d86:	6422                	ld	s0,8(sp)
    e8855d88:	64c2                	ld	s1,16(sp)
    e8855d8a:	6962                	ld	s2,24(sp)
    e8855d8c:	7982                	ld	s3,32(sp)
    e8855d8e:	7a22                	ld	s4,40(sp)
    e8855d90:	7ac2                	ld	s5,48(sp)
    e8855d92:	6121                	addi	sp,sp,64
    e8855d94:	8082                	ret
		err = map_socket_value_errno( inSock, n >= 0, n );
    e8855d96:	7479                	lui	s0,0xffffe
    e8855d98:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8855d9c:	bf75                	j	e8855d58 <SocketWriteData+0x4e>
	if( n > 0 )
    e8855d9e:	dd4d                	beqz	a0,e8855d58 <SocketWriteData+0x4e>
		err = UpdateIOVec( ioArray, ioCount, (size_t) n );
    e8855da0:	8622                	mv	a2,s0
}
    e8855da2:	6422                	ld	s0,8(sp)
    e8855da4:	70e2                	ld	ra,56(sp)
    e8855da6:	7982                	ld	s3,32(sp)
    e8855da8:	7a22                	ld	s4,40(sp)
    e8855daa:	7ac2                	ld	s5,48(sp)
		err = UpdateIOVec( ioArray, ioCount, (size_t) n );
    e8855dac:	85a6                	mv	a1,s1
    e8855dae:	854a                	mv	a0,s2
}
    e8855db0:	64c2                	ld	s1,16(sp)
    e8855db2:	6962                	ld	s2,24(sp)
    e8855db4:	6121                	addi	sp,sp,64
		err = UpdateIOVec( ioArray, ioCount, (size_t) n );
    e8855db6:	80dff06f          	j	e88555c2 <UpdateIOVec>

00000000e8855dba <SocketTransportRead>:
//===========================================================================================================================
//	SocketTransportRead
//===========================================================================================================================

OSStatus	SocketTransportRead( void *inBuffer, size_t inMaxLen, size_t *outLen, void *inContext )
{
    e8855dba:	7139                	addi	sp,sp,-64
    e8855dbc:	e422                	sd	s0,8(sp)
    e8855dbe:	e826                	sd	s1,16(sp)
    e8855dc0:	ec4a                	sd	s2,24(sp)
    e8855dc2:	f04e                	sd	s3,32(sp)
    e8855dc4:	f452                	sd	s4,40(sp)
    e8855dc6:	f856                	sd	s5,48(sp)
    e8855dc8:	fc06                	sd	ra,56(sp)
    e8855dca:	89aa                	mv	s3,a0
    e8855dcc:	8a2e                	mv	s4,a1
    e8855dce:	8432                	mv	s0,a2
	SocketRef const		sock = (SocketRef)(intptr_t) inContext;
    e8855dd0:	0006891b          	sext.w	s2,a3
	ssize_t				n;
	
	do
	{
		n = read_compat( sock, (char *) inBuffer, inMaxLen );
		err = map_socket_value_errno( sock, n >= 0, n );
    e8855dd4:	0008fa97          	auipc	s5,0x8f
    e8855dd8:	854a8a93          	addi	s5,s5,-1964 # e88e4628 <lwip_errno>
		
	}	while( err == EINTR );
    e8855ddc:	4491                	li	s1,4
		n = read_compat( sock, (char *) inBuffer, inMaxLen );
    e8855dde:	8652                	mv	a2,s4
    e8855de0:	85ce                	mv	a1,s3
    e8855de2:	854a                	mv	a0,s2
    e8855de4:	7902f0ef          	jal	ra,e8885574 <lwip_read>
		err = map_socket_value_errno( sock, n >= 0, n );
    e8855de8:	02055063          	bgez	a0,e8855e08 <SocketTransportRead+0x4e>
    e8855dec:	000aa503          	lw	a0,0(s5)
    e8855df0:	c505                	beqz	a0,e8855e18 <SocketTransportRead+0x5e>
	}	while( err == EINTR );
    e8855df2:	fe9506e3          	beq	a0,s1,e8855dde <SocketTransportRead+0x24>
	if(      n  > 0 ) *outLen = (size_t) n;
	else if( n == 0 ) err = kConnectionErr;
	return( err );
}
    e8855df6:	70e2                	ld	ra,56(sp)
    e8855df8:	6422                	ld	s0,8(sp)
    e8855dfa:	64c2                	ld	s1,16(sp)
    e8855dfc:	6962                	ld	s2,24(sp)
    e8855dfe:	7982                	ld	s3,32(sp)
    e8855e00:	7a22                	ld	s4,40(sp)
    e8855e02:	7ac2                	ld	s5,48(sp)
    e8855e04:	6121                	addi	sp,sp,64
    e8855e06:	8082                	ret
	if(      n  > 0 ) *outLen = (size_t) n;
    e8855e08:	c501                	beqz	a0,e8855e10 <SocketTransportRead+0x56>
    e8855e0a:	e008                	sd	a0,0(s0)
		err = map_socket_value_errno( sock, n >= 0, n );
    e8855e0c:	4501                	li	a0,0
    e8855e0e:	b7e5                	j	e8855df6 <SocketTransportRead+0x3c>
	else if( n == 0 ) err = kConnectionErr;
    e8855e10:	7579                	lui	a0,0xffffe
    e8855e12:	59f50513          	addi	a0,a0,1439 # ffffffffffffe59f <__DRAM0_INF_BASE+0xffffffff0000e59f>
    e8855e16:	b7c5                	j	e8855df6 <SocketTransportRead+0x3c>
		err = map_socket_value_errno( sock, n >= 0, n );
    e8855e18:	7579                	lui	a0,0xffffe
    e8855e1a:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	return( err );
    e8855e1e:	bfe1                	j	e8855df6 <SocketTransportRead+0x3c>

00000000e8855e20 <SocketTransportWriteV>:
//	SocketTransportWriteV
//===========================================================================================================================

OSStatus	SocketTransportWriteV( iovec_t **ioArray, int *ioCount, void *inContext )
{
	return( SocketWriteData( (SocketRef)(intptr_t) inContext, ioArray, ioCount ) );
    e8855e20:	0006079b          	sext.w	a5,a2
    e8855e24:	862e                	mv	a2,a1
    e8855e26:	85aa                	mv	a1,a0
    e8855e28:	853e                	mv	a0,a5
    e8855e2a:	ee1ff06f          	j	e8855d0a <SocketWriteData>

00000000e8855e2e <SocketSetBoundInterface>:
	{
		(void) inSock;
		(void) inFamily;
		(void) inIfIndex;
		
		dlogassert( "Set bound interface unsupported for family %d", inFamily );
    e8855e2e:	6705                	lui	a4,0x1
{
    e8855e30:	1141                	addi	sp,sp,-16
		dlogassert( "Set bound interface unsupported for family %d", inFamily );
    e8855e32:	88ae                	mv	a7,a1
    e8855e34:	4501                	li	a0,0
    e8855e36:	0006c817          	auipc	a6,0x6c
    e8855e3a:	b9280813          	addi	a6,a6,-1134 # e88c19c8 <__PRETTY_FUNCTION__.10057+0x148>
    e8855e3e:	0006c797          	auipc	a5,0x6c
    e8855e42:	d8a78793          	addi	a5,a5,-630 # e88c1bc8 <__PRETTY_FUNCTION__.10277>
    e8855e46:	a0970713          	addi	a4,a4,-1527 # a09 <memcmp-0xe87ff5f7>
    e8855e4a:	0006c697          	auipc	a3,0x6c
    e8855e4e:	c4e68693          	addi	a3,a3,-946 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8855e52:	4601                	li	a2,0
    e8855e54:	4581                	li	a1,0
{
    e8855e56:	e406                	sd	ra,8(sp)
		dlogassert( "Set bound interface unsupported for family %d", inFamily );
    e8855e58:	d70f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	err = map_socket_noerr_errno( inSock, err );
	check_noerr( err );
	
exit:
	return( err );
}
    e8855e5c:	60a2                	ld	ra,8(sp)
    e8855e5e:	7579                	lui	a0,0xffffe
    e8855e60:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e8855e64:	0141                	addi	sp,sp,16
    e8855e66:	8082                	ret

00000000e8855e68 <SocketSetBufferSize>:
//===========================================================================================================================
//	SocketSetBufferSize
//===========================================================================================================================

OSStatus	SocketSetBufferSize( SocketRef inSock, int inWhich, int inSize )
{
    e8855e68:	7159                	addi	sp,sp,-112
    e8855e6a:	f486                	sd	ra,104(sp)
    e8855e6c:	f0a2                	sd	s0,96(sp)
    e8855e6e:	eca6                	sd	s1,88(sp)
    e8855e70:	e8ca                	sd	s2,80(sp)
    e8855e72:	e4ce                	sd	s3,72(sp)
    e8855e74:	e0d2                	sd	s4,64(sp)
    e8855e76:	fc56                	sd	s5,56(sp)
    e8855e78:	f85a                	sd	s6,48(sp)
    e8855e7a:	ce32                	sw	a2,28(sp)
	OSStatus		err;
	int				value;
	
	require_action( IsValidSocket( inSock ), exit, err = kParamErr );
    e8855e7c:	0e054063          	bltz	a0,e8855f5c <SocketSetBufferSize+0xf4>
	require_action( ( inWhich == SO_RCVBUF ) || ( inWhich == SO_SNDBUF ), exit, err = kParamErr );
    e8855e80:	77fd                	lui	a5,0xfffff
    e8855e82:	37fd                	addiw	a5,a5,-1
    e8855e84:	9fad                	addw	a5,a5,a1
    e8855e86:	4685                	li	a3,1
    e8855e88:	0cf6ea63          	bltu	a3,a5,e8855f5c <SocketSetBufferSize+0xf4>
	// Size  >  0, is an absolute size to set the socket buffer to.
	// Size ==  0, means maximize the socket buffer size (big as the kernel will allow).
	// Size == -1, means don't set the socket buffer size (useful for callers with a size input).
	// Size  < -1, means maximize the socket buffer size, up to the negated size.
	
	if( inSize > 0 )
    e8855e8c:	0006079b          	sext.w	a5,a2
    e8855e90:	84ae                	mv	s1,a1
    e8855e92:	04f05063          	blez	a5,e8855ed2 <SocketSetBufferSize+0x6a>
	{
		err = setsockopt( inSock, SOL_SOCKET, inWhich, (char *) &inSize, (socklen_t) sizeof( inSize ) );
    e8855e96:	862e                	mv	a2,a1
    e8855e98:	6585                	lui	a1,0x1
    e8855e9a:	4711                	li	a4,4
    e8855e9c:	0874                	addi	a3,sp,28
    e8855e9e:	15fd                	addi	a1,a1,-1
    e8855ea0:	5b8300ef          	jal	ra,e8886458 <lwip_setsockopt>
		err = map_socket_noerr_errno( inSock, err );
    e8855ea4:	ed09                	bnez	a0,e8855ebe <SocketSetBufferSize+0x56>
    e8855ea6:	4401                	li	s0,0
		}
	}
	
exit:
	return( err );
}
    e8855ea8:	8522                	mv	a0,s0
    e8855eaa:	70a6                	ld	ra,104(sp)
    e8855eac:	7406                	ld	s0,96(sp)
    e8855eae:	64e6                	ld	s1,88(sp)
    e8855eb0:	6946                	ld	s2,80(sp)
    e8855eb2:	69a6                	ld	s3,72(sp)
    e8855eb4:	6a06                	ld	s4,64(sp)
    e8855eb6:	7ae2                	ld	s5,56(sp)
    e8855eb8:	7b42                	ld	s6,48(sp)
    e8855eba:	6165                	addi	sp,sp,112
    e8855ebc:	8082                	ret
		err = map_socket_noerr_errno( inSock, err );
    e8855ebe:	0008e797          	auipc	a5,0x8e
    e8855ec2:	76a78793          	addi	a5,a5,1898 # e88e4628 <lwip_errno>
    e8855ec6:	4380                	lw	s0,0(a5)
    e8855ec8:	f065                	bnez	s0,e8855ea8 <SocketSetBufferSize+0x40>
    e8855eca:	7479                	lui	s0,0xffffe
    e8855ecc:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8855ed0:	bfe1                	j	e8855ea8 <SocketSetBufferSize+0x40>
	else if( inSize == -1 )
    e8855ed2:	577d                	li	a4,-1
    e8855ed4:	fce789e3          	beq	a5,a4,e8855ea6 <SocketSetBufferSize+0x3e>
	if( ( inSize > 0 ) && ( value > inSize ) )
    e8855ed8:	00037737          	lui	a4,0x37
	inSize = -inSize;
    e8855edc:	40f006bb          	negw	a3,a5
	if( ( inSize > 0 ) && ( value > inSize ) )
    e8855ee0:	ffe70613          	addi	a2,a4,-2 # 36ffe <memcmp-0xe87c9002>
    e8855ee4:	fff7c793          	not	a5,a5
	value = ( ( ( value * 85 ) / 100 ) + 4095 ) & ~4095;
    e8855ee8:	00f637b3          	sltu	a5,a2,a5
    e8855eec:	40f6970b          	mveqz	a4,a3,a5
		err = setsockopt( inSock, SOL_SOCKET, inWhich, (char *) &value, (socklen_t) sizeof( value ) );
    e8855ef0:	6a05                	lui	s4,0x1
		err = map_socket_noerr_errno( inSock, err );
    e8855ef2:	79f9                	lui	s3,0xffffe
    e8855ef4:	892a                	mv	s2,a0
	inSize = -inSize;
    e8855ef6:	ce36                	sw	a3,28(sp)
	value = ( ( ( value * 85 ) / 100 ) + 4095 ) & ~4095;
    e8855ef8:	d63a                	sw	a4,44(sp)
		err = setsockopt( inSock, SOL_SOCKET, inWhich, (char *) &value, (socklen_t) sizeof( value ) );
    e8855efa:	1a7d                	addi	s4,s4,-1
		err = map_socket_noerr_errno( inSock, err );
    e8855efc:	0008eb17          	auipc	s6,0x8e
    e8855f00:	72cb0b13          	addi	s6,s6,1836 # e88e4628 <lwip_errno>
    e8855f04:	5d498993          	addi	s3,s3,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
		if( value >= ( 32 * 1024 ) )
    e8855f08:	6aa1                	lui	s5,0x8
		err = setsockopt( inSock, SOL_SOCKET, inWhich, (char *) &value, (socklen_t) sizeof( value ) );
    e8855f0a:	4711                	li	a4,4
    e8855f0c:	1074                	addi	a3,sp,44
    e8855f0e:	8626                	mv	a2,s1
    e8855f10:	85d2                	mv	a1,s4
    e8855f12:	854a                	mv	a0,s2
    e8855f14:	544300ef          	jal	ra,e8886458 <lwip_setsockopt>
		err = map_socket_noerr_errno( inSock, err );
    e8855f18:	d559                	beqz	a0,e8855ea6 <SocketSetBufferSize+0x3e>
		lastValue = value;
    e8855f1a:	58b2                	lw	a7,44(sp)
		err = map_socket_noerr_errno( inSock, err );
    e8855f1c:	000b2403          	lw	s0,0(s6)
		value -= 1024;
    e8855f20:	c008879b          	addiw	a5,a7,-1024
    e8855f24:	d63e                	sw	a5,44(sp)
		err = map_socket_noerr_errno( inSock, err );
    e8855f26:	4089940b          	mveqz	s0,s3,s0
		if( value >= ( 32 * 1024 ) )
    e8855f2a:	ff57d0e3          	bge	a5,s5,e8855f0a <SocketSetBufferSize+0xa2>
			dlogassert( "### couldn't set SO_SNDBUF to %d...giving up at %d (%#m)\n", lastValue, value, err );
    e8855f2e:	6705                	lui	a4,0x1
    e8855f30:	e03e                	sd	a5,0(sp)
    e8855f32:	e422                	sd	s0,8(sp)
    e8855f34:	0006c817          	auipc	a6,0x6c
    e8855f38:	ac480813          	addi	a6,a6,-1340 # e88c19f8 <__PRETTY_FUNCTION__.10057+0x178>
    e8855f3c:	0006c797          	auipc	a5,0x6c
    e8855f40:	ca478793          	addi	a5,a5,-860 # e88c1be0 <__PRETTY_FUNCTION__.10300>
    e8855f44:	aa470713          	addi	a4,a4,-1372 # aa4 <memcmp-0xe87ff55c>
    e8855f48:	0006c697          	auipc	a3,0x6c
    e8855f4c:	b5068693          	addi	a3,a3,-1200 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8855f50:	4601                	li	a2,0
    e8855f52:	4581                	li	a1,0
    e8855f54:	4501                	li	a0,0
    e8855f56:	c72f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			break;
    e8855f5a:	b7b9                	j	e8855ea8 <SocketSetBufferSize+0x40>
	require_action( IsValidSocket( inSock ), exit, err = kParamErr );
    e8855f5c:	7479                	lui	s0,0xffffe
    e8855f5e:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8855f62:	b799                	j	e8855ea8 <SocketSetBufferSize+0x40>

00000000e8855f64 <SocketGetFamily>:
//===========================================================================================================================
//	SocketGetFamily
//===========================================================================================================================

int	SocketGetFamily( SocketRef inSock, OSStatus *outErr )
{
    e8855f64:	7139                	addi	sp,sp,-64
	OSStatus		err;
	sockaddr_ip		sip;
	socklen_t		len;
	
	len = (socklen_t) sizeof( sip );
    e8855f66:	47f1                	li	a5,28
{
    e8855f68:	f822                	sd	s0,48(sp)
	err = getsockname( inSock, &sip.sa, &len );
    e8855f6a:	0070                	addi	a2,sp,12
{
    e8855f6c:	842e                	mv	s0,a1
	err = getsockname( inSock, &sip.sa, &len );
    e8855f6e:	080c                	addi	a1,sp,16
{
    e8855f70:	fc06                	sd	ra,56(sp)
	len = (socklen_t) sizeof( sip );
    e8855f72:	c63e                	sw	a5,12(sp)
	err = getsockname( inSock, &sip.sa, &len );
    e8855f74:	142300ef          	jal	ra,e88860b6 <lwip_getsockname>
	err = map_socket_noerr_errno( inSock, err );
    e8855f78:	c10d                	beqz	a0,e8855f9a <SocketGetFamily+0x36>
    e8855f7a:	0008e797          	auipc	a5,0x8e
    e8855f7e:	6ae78793          	addi	a5,a5,1710 # e88e4628 <lwip_errno>
    e8855f82:	439c                	lw	a5,0(a5)
    e8855f84:	e781                	bnez	a5,e8855f8c <SocketGetFamily+0x28>
    e8855f86:	77f9                	lui	a5,0xffffe
    e8855f88:	5d478793          	addi	a5,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	require_noerr( err, exit );
	
exit:
	if( outErr ) *outErr = err;
    e8855f8c:	c011                	beqz	s0,e8855f90 <SocketGetFamily+0x2c>
    e8855f8e:	c01c                	sw	a5,0(s0)
	return( err ? AF_UNSPEC : sip.sa.sa_family );
    e8855f90:	4501                	li	a0,0
}
    e8855f92:	70e2                	ld	ra,56(sp)
    e8855f94:	7442                	ld	s0,48(sp)
    e8855f96:	6121                	addi	sp,sp,64
    e8855f98:	8082                	ret
	if( outErr ) *outErr = err;
    e8855f9a:	c019                	beqz	s0,e8855fa0 <SocketGetFamily+0x3c>
    e8855f9c:	00042023          	sw	zero,0(s0)
	return( err ? AF_UNSPEC : sip.sa.sa_family );
    e8855fa0:	01114503          	lbu	a0,17(sp)
    e8855fa4:	b7fd                	j	e8855f92 <SocketGetFamily+0x2e>

00000000e8855fa6 <SocketSetKeepAlive>:
//===========================================================================================================================
//	SocketSetKeepAlive
//===========================================================================================================================

OSStatus	SocketSetKeepAlive( SocketRef inSock, int inIdleSecs, int inMaxUnansweredProbes )
{
    e8855fa6:	7179                	addi	sp,sp,-48
    e8855fa8:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8855fac:	f04a                	sd	s2,32(sp)
    e8855fae:	f406                	sd	ra,40(sp)
    e8855fb0:	84aa                	mv	s1,a0
    e8855fb2:	842e                	mv	s0,a1
    e8855fb4:	8932                	mv	s2,a2
	OSStatus		err;
	int				option;
	
	option = ( ( inIdleSecs > 0 ) && ( inMaxUnansweredProbes > 0 ) ) ? 1 : 0;
    e8855fb6:	00c027b3          	sgtz	a5,a2
    e8855fba:	00b04363          	bgtz	a1,e8855fc0 <SocketSetKeepAlive+0x1a>
    e8855fbe:	4781                	li	a5,0
	err = setsockopt( inSock, SOL_SOCKET, SO_KEEPALIVE, (char *) &option, (socklen_t) sizeof( option ) );
    e8855fc0:	6585                	lui	a1,0x1
    e8855fc2:	4711                	li	a4,4
    e8855fc4:	0074                	addi	a3,sp,12
    e8855fc6:	4621                	li	a2,8
    e8855fc8:	15fd                	addi	a1,a1,-1
    e8855fca:	8526                	mv	a0,s1
	option = ( ( inIdleSecs > 0 ) && ( inMaxUnansweredProbes > 0 ) ) ? 1 : 0;
    e8855fcc:	c63e                	sw	a5,12(sp)
	err = setsockopt( inSock, SOL_SOCKET, SO_KEEPALIVE, (char *) &option, (socklen_t) sizeof( option ) );
    e8855fce:	48a300ef          	jal	ra,e8886458 <lwip_setsockopt>
	err = map_socket_noerr_errno( inSock, err );
    e8855fd2:	c105                	beqz	a0,e8855ff2 <SocketSetKeepAlive+0x4c>
    e8855fd4:	0008e797          	auipc	a5,0x8e
    e8855fd8:	65478793          	addi	a5,a5,1620 # e88e4628 <lwip_errno>
    e8855fdc:	4388                	lw	a0,0(a5)
    e8855fde:	e501                	bnez	a0,e8855fe6 <SocketSetKeepAlive+0x40>
    e8855fe0:	7579                	lui	a0,0xffffe
    e8855fe2:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	
	err = kNoErr;
	
exit:
	return( err );
}
    e8855fe6:	70a2                	ld	ra,40(sp)
    e8855fe8:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8855fec:	7902                	ld	s2,32(sp)
    e8855fee:	6145                	addi	sp,sp,48
    e8855ff0:	8082                	ret
	if( !option ) goto exit;
    e8855ff2:	4532                	lw	a0,12(sp)
    e8855ff4:	d96d                	beqz	a0,e8855fe6 <SocketSetKeepAlive+0x40>
	if( option <= 0 ) option = 1;
    e8855ff6:	04805063          	blez	s0,e8856036 <SocketSetKeepAlive+0x90>
	option = inIdleSecs;
    e8855ffa:	c622                	sw	s0,12(sp)
	err = setsockopt( inSock, IPPROTO_TCP, TCP_KEEPALIVE, (char *) &option, (socklen_t) sizeof( option ) );
    e8855ffc:	4711                	li	a4,4
    e8855ffe:	0074                	addi	a3,sp,12
    e8856000:	4609                	li	a2,2
    e8856002:	4599                	li	a1,6
    e8856004:	8526                	mv	a0,s1
    e8856006:	452300ef          	jal	ra,e8886458 <lwip_setsockopt>
	if( option <= 0 ) option = 1;
    e885600a:	02805963          	blez	s0,e885603c <SocketSetKeepAlive+0x96>
	option = inIdleSecs;
    e885600e:	c622                	sw	s0,12(sp)
	err = setsockopt( inSock, IPPROTO_TCP, TCP_KEEPINTVL, &option, (socklen_t) sizeof( option ) );
    e8856010:	4711                	li	a4,4
    e8856012:	0074                	addi	a3,sp,12
    e8856014:	4611                	li	a2,4
    e8856016:	4599                	li	a1,6
    e8856018:	8526                	mv	a0,s1
    e885601a:	43e300ef          	jal	ra,e8886458 <lwip_setsockopt>
	if( option <= 0 ) option = 1;
    e885601e:	03205263          	blez	s2,e8856042 <SocketSetKeepAlive+0x9c>
	option = inMaxUnansweredProbes;
    e8856022:	c64a                	sw	s2,12(sp)
	err = setsockopt( inSock, IPPROTO_TCP, TCP_KEEPCNT, &option, (socklen_t) sizeof( option ) );
    e8856024:	4711                	li	a4,4
    e8856026:	0074                	addi	a3,sp,12
    e8856028:	4615                	li	a2,5
    e885602a:	4599                	li	a1,6
    e885602c:	8526                	mv	a0,s1
    e885602e:	42a300ef          	jal	ra,e8886458 <lwip_setsockopt>
	err = kNoErr;
    e8856032:	4501                	li	a0,0
    e8856034:	bf4d                	j	e8855fe6 <SocketSetKeepAlive+0x40>
	if( option <= 0 ) option = 1;
    e8856036:	4785                	li	a5,1
    e8856038:	c63e                	sw	a5,12(sp)
    e885603a:	b7c9                	j	e8855ffc <SocketSetKeepAlive+0x56>
	if( option <= 0 ) option = 1;
    e885603c:	4785                	li	a5,1
    e885603e:	c63e                	sw	a5,12(sp)
    e8856040:	bfc1                	j	e8856010 <SocketSetKeepAlive+0x6a>
	if( option <= 0 ) option = 1;
    e8856042:	4785                	li	a5,1
    e8856044:	c63e                	sw	a5,12(sp)
    e8856046:	bff9                	j	e8856024 <SocketSetKeepAlive+0x7e>

00000000e8856048 <SocketSetNonBlocking>:
//===========================================================================================================================
//	SocketSetNonBlocking
//===========================================================================================================================

OSStatus	SocketSetNonBlocking( SocketRef inSock, int inNonBlocking )
{
    e8856048:	1101                	addi	sp,sp,-32
    e885604a:	e826                	sd	s1,16(sp)
	return( err );
#else
	OSStatus		err;
	int				flags;
	
	flags = fcntl( inSock, F_GETFL, 0 );
    e885604c:	4601                	li	a2,0
{
    e885604e:	84ae                	mv	s1,a1
	flags = fcntl( inSock, F_GETFL, 0 );
    e8856050:	458d                	li	a1,3
{
    e8856052:	e422                	sd	s0,8(sp)
    e8856054:	ec06                	sd	ra,24(sp)
    e8856056:	842a                	mv	s0,a0
	flags = fcntl( inSock, F_GETFL, 0 );
    e8856058:	2c9300ef          	jal	ra,e8886b20 <lwip_fcntl>
	if( inNonBlocking )	flags |= O_NONBLOCK;
    e885605c:	00156613          	ori	a2,a0,1
    e8856060:	e099                	bnez	s1,e8856066 <SocketSetNonBlocking+0x1e>
	else				flags &= ~O_NONBLOCK;
    e8856062:	ffe57613          	andi	a2,a0,-2
    e8856066:	2601                	sext.w	a2,a2
	err = fcntl( inSock, F_SETFL, flags );
    e8856068:	4591                	li	a1,4
    e885606a:	8522                	mv	a0,s0
    e885606c:	2b5300ef          	jal	ra,e8886b20 <lwip_fcntl>
	err = map_socket_value_errno( inSock, err != -1, err );
    e8856070:	577d                	li	a4,-1
    e8856072:	4781                	li	a5,0
    e8856074:	00e51b63          	bne	a0,a4,e885608a <SocketSetNonBlocking+0x42>
    e8856078:	0008e797          	auipc	a5,0x8e
    e885607c:	5b078793          	addi	a5,a5,1456 # e88e4628 <lwip_errno>
    e8856080:	439c                	lw	a5,0(a5)
    e8856082:	e781                	bnez	a5,e885608a <SocketSetNonBlocking+0x42>
    e8856084:	77f9                	lui	a5,0xffffe
    e8856086:	5d478793          	addi	a5,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	check_noerr( err );
	return( err );
#endif
}
    e885608a:	60e2                	ld	ra,24(sp)
    e885608c:	6422                	ld	s0,8(sp)
    e885608e:	64c2                	ld	s1,16(sp)
    e8856090:	853e                	mv	a0,a5
    e8856092:	6105                	addi	sp,sp,32
    e8856094:	8082                	ret

00000000e8856096 <NetSocket_Create>:
{
    e8856096:	715d                	addi	sp,sp,-80
    e8856098:	f84a                	sd	s2,48(sp)
    e885609a:	892a                	mv	s2,a0
    p = malloc(len);
    e885609c:	06800513          	li	a0,104
    e88560a0:	fc26                	sd	s1,56(sp)
    e88560a2:	e486                	sd	ra,72(sp)
    e88560a4:	e0a2                	sd	s0,64(sp)
    e88560a6:	7a8250ef          	jal	ra,e887b84e <my_malloc>
    e88560aa:	84aa                	mv	s1,a0
    memset(p,0,len);
    e88560ac:	06800613          	li	a2,104
    e88560b0:	4581                	li	a1,0
    e88560b2:	2e2260ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( obj, exit, err = kNoMemoryErr );
    e88560b6:	ccd5                	beqz	s1,e8856172 <NetSocket_Create+0xdc>
	obj->magic		= kNetSocketMagic;
    e88560b8:	0006c797          	auipc	a5,0x6c
    e88560bc:	80078793          	addi	a5,a5,-2048 # e88c18b8 <__PRETTY_FUNCTION__.10057+0x38>
    e88560c0:	639c                	ld	a5,0(a5)
	obj->cancelSock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    e88560c2:	4645                	li	a2,17
    e88560c4:	4589                	li	a1,2
	obj->magic		= kNetSocketMagic;
    e88560c6:	e09c                	sd	a5,0(s1)
	obj->cancelSock = kInvalidSocketRef;
    e88560c8:	57fd                	li	a5,-1
    e88560ca:	c4dc                	sw	a5,12(s1)
	obj->cancelSock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
    e88560cc:	4509                	li	a0,2
    e88560ce:	3532f0ef          	jal	ra,e8885c20 <lwip_socket>
    e88560d2:	c4c8                	sw	a0,12(s1)
	err = map_socket_creation_errno( obj->cancelSock );
    e88560d4:	00055f63          	bgez	a0,e88560f2 <NetSocket_Create+0x5c>
	err = map_socket_noerr_errno( obj->cancelSock, err );
    e88560d8:	0008e797          	auipc	a5,0x8e
    e88560dc:	55078793          	addi	a5,a5,1360 # e88e4628 <lwip_errno>
    e88560e0:	4380                	lw	s0,0(a5)
    e88560e2:	e401                	bnez	s0,e88560ea <NetSocket_Create+0x54>
	err = map_socket_creation_errno( obj->cancelSock );
    e88560e4:	7479                	lui	s0,0xffffe
    e88560e6:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( obj ) NetSocket_Delete( obj );
    e88560ea:	8526                	mv	a0,s1
    e88560ec:	d1cff0ef          	jal	ra,e8855608 <NetSocket_Delete>
    e88560f0:	a895                	j	e8856164 <NetSocket_Create+0xce>
	SocketMakeNonBlocking( obj->cancelSock );
    e88560f2:	4585                	li	a1,1
    e88560f4:	f55ff0ef          	jal	ra,e8856048 <SocketSetNonBlocking>
	memset( &sip.v4, 0, sizeof( sip.v4 ) );
    e88560f8:	4641                	li	a2,16
    e88560fa:	4581                	li	a1,0
    e88560fc:	0808                	addi	a0,sp,16
    e88560fe:	296260ef          	jal	ra,e887c394 <eLIBs_memset>
	sip.v4.sin_port			= 0;
    e8856102:	00011923          	sh	zero,18(sp)
	sip.v4.sin_family		= AF_INET;
    e8856106:	4789                	li	a5,2
	sip.v4.sin_addr.s_addr	= htonl( INADDR_LOOPBACK );
    e8856108:	7f000537          	lui	a0,0x7f000
    e885610c:	0505                	addi	a0,a0,1
	sip.v4.sin_family		= AF_INET;
    e885610e:	00f108a3          	sb	a5,17(sp)
	sip.v4.sin_addr.s_addr	= htonl( INADDR_LOOPBACK );
    e8856112:	61d300ef          	jal	ra,e8886f2e <lwip_htonl>
    e8856116:	ca2a                	sw	a0,20(sp)
	err = bind( obj->cancelSock, &sip.sa, sizeof( sip.v4 ) );
    e8856118:	44c8                	lw	a0,12(s1)
    e885611a:	4641                	li	a2,16
    e885611c:	080c                	addi	a1,sp,16
    e885611e:	79f2e0ef          	jal	ra,e88850bc <lwip_bind>
	err = map_socket_noerr_errno( obj->cancelSock, err );
    e8856122:	f95d                	bnez	a0,e88560d8 <NetSocket_Create+0x42>
	err = getsockname( obj->cancelSock, &sip.sa, &len );
    e8856124:	44c8                	lw	a0,12(s1)
	len = (socklen_t) sizeof( sip );
    e8856126:	47f1                	li	a5,28
	err = getsockname( obj->cancelSock, &sip.sa, &len );
    e8856128:	0070                	addi	a2,sp,12
    e885612a:	080c                	addi	a1,sp,16
	len = (socklen_t) sizeof( sip );
    e885612c:	c63e                	sw	a5,12(sp)
	err = getsockname( obj->cancelSock, &sip.sa, &len );
    e885612e:	7892f0ef          	jal	ra,e88860b6 <lwip_getsockname>
	err = map_socket_noerr_errno( obj->cancelSock, err );
    e8856132:	f15d                	bnez	a0,e88560d8 <NetSocket_Create+0x42>
	err = connect( obj->cancelSock, &sip.sa, len );
    e8856134:	4632                	lw	a2,12(sp)
    e8856136:	44c8                	lw	a0,12(s1)
    e8856138:	080c                	addi	a1,sp,16
    e885613a:	1ea2f0ef          	jal	ra,e8885324 <lwip_connect>
    e885613e:	842a                	mv	s0,a0
	err = map_socket_noerr_errno( obj->cancelSock, err );
    e8856140:	fd41                	bnez	a0,e88560d8 <NetSocket_Create+0x42>
	obj->readFunc		= NetSocket_ReadInternal;
    e8856142:	fffff797          	auipc	a5,0xfffff
    e8856146:	75078793          	addi	a5,a5,1872 # e8855892 <NetSocket_ReadInternal>
    e885614a:	e89c                	sd	a5,16(s1)
	obj->writeFunc		= NetSocket_WriteInternal;
    e885614c:	00000797          	auipc	a5,0x0
    e8856150:	8ae78793          	addi	a5,a5,-1874 # e88559fa <NetSocket_WriteInternal>
    e8856154:	ec9c                	sd	a5,24(s1)
	obj->writeVFunc		= NetSocket_WriteVInternal;
    e8856156:	00000797          	auipc	a5,0x0
    e885615a:	99678793          	addi	a5,a5,-1642 # e8855aec <NetSocket_WriteVInternal>
    e885615e:	f09c                	sd	a5,32(s1)
	*outSock = obj;
    e8856160:	00993023          	sd	s1,0(s2)
}
    e8856164:	8522                	mv	a0,s0
    e8856166:	60a6                	ld	ra,72(sp)
    e8856168:	6406                	ld	s0,64(sp)
    e885616a:	74e2                	ld	s1,56(sp)
    e885616c:	7942                	ld	s2,48(sp)
    e885616e:	6161                	addi	sp,sp,80
    e8856170:	8082                	ret
	require_action( obj, exit, err = kNoMemoryErr );
    e8856172:	7479                	lui	s0,0xffffe
    e8856174:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8856178:	b7f5                	j	e8856164 <NetSocket_Create+0xce>

00000000e885617a <NetSocket_CreateWithNative>:
	require_action( IsValidSocket( inSock ), exit, err = kParamErr );
    e885617a:	0205c563          	bltz	a1,e88561a4 <NetSocket_CreateWithNative+0x2a>
{
    e885617e:	7179                	addi	sp,sp,-48
    e8856180:	f026                	sd	s1,32(sp)
    e8856182:	84aa                	mv	s1,a0
	err = NetSocket_Create( &sock );
    e8856184:	0028                	addi	a0,sp,8
{
    e8856186:	ec22                	sd	s0,24(sp)
    e8856188:	f406                	sd	ra,40(sp)
    e885618a:	842e                	mv	s0,a1
	err = NetSocket_Create( &sock );
    e885618c:	f0bff0ef          	jal	ra,e8856096 <NetSocket_Create>
	require_noerr( err, exit );
    e8856190:	e509                	bnez	a0,e885619a <NetSocket_CreateWithNative+0x20>
	sock->nativeSock = inSock;
    e8856192:	67a2                	ld	a5,8(sp)
    e8856194:	c3c0                	sw	s0,4(a5)
	*outSock = sock;
    e8856196:	67a2                	ld	a5,8(sp)
    e8856198:	e09c                	sd	a5,0(s1)
}
    e885619a:	70a2                	ld	ra,40(sp)
    e885619c:	6462                	ld	s0,24(sp)
    e885619e:	7482                	ld	s1,32(sp)
    e88561a0:	6145                	addi	sp,sp,48
    e88561a2:	8082                	ret
	require_action( IsValidSocket( inSock ), exit, err = kParamErr );
    e88561a4:	7579                	lui	a0,0xffffe
    e88561a6:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e88561aa:	8082                	ret

00000000e88561ac <SocketAccept>:
{
    e88561ac:	7135                	addi	sp,sp,-160
    e88561ae:	e922                	sd	s0,144(sp)
    e88561b0:	842e                	mv	s0,a1
	SocketMakeNonBlocking( inSock );
    e88561b2:	4585                	li	a1,1
{
    e88561b4:	e526                	sd	s1,136(sp)
    e88561b6:	e14a                	sd	s2,128(sp)
    e88561b8:	fcce                	sd	s3,120(sp)
    e88561ba:	ed06                	sd	ra,152(sp)
    e88561bc:	f8d2                	sd	s4,112(sp)
    e88561be:	f4d6                	sd	s5,104(sp)
    e88561c0:	f0da                	sd	s6,96(sp)
    e88561c2:	ecde                	sd	s7,88(sp)
    e88561c4:	e8e2                	sd	s8,80(sp)
    e88561c6:	e4e6                	sd	s9,72(sp)
    e88561c8:	e0ea                	sd	s10,64(sp)
    e88561ca:	fc6e                	sd	s11,56(sp)
    e88561cc:	892a                	mv	s2,a0
    e88561ce:	e432                	sd	a2,8(sp)
    e88561d0:	89b6                	mv	s3,a3
    e88561d2:	54fd                	li	s1,-1
	SocketMakeNonBlocking( inSock );
    e88561d4:	e75ff0ef          	jal	ra,e8856048 <SocketSetNonBlocking>
	deadlineTicks = ( inSeconds >= 0 ) ? ( UpTicks() + SecondsToUpTicks( (uint64_t) inSeconds ) ) : kUpTicksForever;
    e88561d8:	00044963          	bltz	s0,e88561ea <SocketAccept+0x3e>
    e88561dc:	7e90a0ef          	jal	ra,e88611c4 <UpTicks>
    e88561e0:	84aa                	mv	s1,a0
    e88561e2:	8522                	mv	a0,s0
    e88561e4:	0a00b0ef          	jal	ra,e8861284 <SecondsToUpTicks>
    e88561e8:	94aa                	add	s1,s1,a0
	FD_ZERO( &readSet );
    e88561ea:	461d                	li	a2,7
    e88561ec:	4581                	li	a1,0
    e88561ee:	0828                	addi	a0,sp,24
	len = 0;
    e88561f0:	c802                	sw	zero,16(sp)
	FD_ZERO( &readSet );
    e88561f2:	1a2260ef          	jal	ra,e887c394 <eLIBs_memset>
		FD_SET( inSock, &readSet );
    e88561f6:	40395a13          	srai	s4,s2,0x3
    e88561fa:	00797713          	andi	a4,s2,7
    e88561fe:	4785                	li	a5,1
    e8856200:	00e797bb          	sllw	a5,a5,a4
    e8856204:	1c07a78b          	ext	a5,a5,7,0
    e8856208:	e03e                	sd	a5,0(sp)
    e885620a:	4a81                	li	s5,0
    e885620c:	00098463          	beqz	s3,e8856214 <SocketAccept+0x68>
    e8856210:	01010a93          	addi	s5,sp,16
    e8856214:	00090c1b          	sext.w	s8,s2
    e8856218:	03100c93          	li	s9,49
		n = select( (int)( inSock + 1 ), &readSet, NULL, NULL, timeoutPtr );
    e885621c:	00190d1b          	addiw	s10,s2,1
		if( outAddr ) len = (socklen_t) sizeof( *outAddr );
    e8856220:	4df1                	li	s11,28
    e8856222:	4b01                	li	s6,0
    e8856224:	00044463          	bltz	s0,e885622c <SocketAccept+0x80>
    e8856228:	02010b13          	addi	s6,sp,32
		FD_SET( inSock, &readSet );
    e885622c:	018cea63          	bltu	s9,s8,e8856240 <SocketAccept+0x94>
    e8856230:	083c                	addi	a5,sp,24
    e8856232:	8147c78b          	lrbu	a5,a5,s4,0
    e8856236:	6702                	ld	a4,0(sp)
    e8856238:	8fd9                	or	a5,a5,a4
    e885623a:	0838                	addi	a4,sp,24
    e885623c:	0147578b          	srb	a5,a4,s4,0
		if( inSeconds >= 0 )
    e8856240:	00044463          	bltz	s0,e8856248 <SocketAccept+0x9c>
			timeout.tv_sec  = inSeconds;
    e8856244:	f022                	sd	s0,32(sp)
			timeout.tv_usec = 0;
    e8856246:	f402                	sd	zero,40(sp)
		n = select( (int)( inSock + 1 ), &readSet, NULL, NULL, timeoutPtr );
    e8856248:	875a                	mv	a4,s6
    e885624a:	4681                	li	a3,0
    e885624c:	4601                	li	a2,0
    e885624e:	082c                	addi	a1,sp,24
    e8856250:	856a                	mv	a0,s10
    e8856252:	2db2f0ef          	jal	ra,e8885d2c <lwip_select>
		err = select_errno( n );
    e8856256:	02a04b63          	bgtz	a0,e885628c <SocketAccept+0xe0>
    e885625a:	c541                	beqz	a0,e88562e2 <SocketAccept+0x136>
    e885625c:	0008e797          	auipc	a5,0x8e
    e8856260:	3cc78793          	addi	a5,a5,972 # e88e4628 <lwip_errno>
    e8856264:	4388                	lw	a0,0(a5)
    e8856266:	e501                	bnez	a0,e885626e <SocketAccept+0xc2>
    e8856268:	7579                	lui	a0,0xffffe
    e885626a:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
}
    e885626e:	60ea                	ld	ra,152(sp)
    e8856270:	644a                	ld	s0,144(sp)
    e8856272:	64aa                	ld	s1,136(sp)
    e8856274:	690a                	ld	s2,128(sp)
    e8856276:	79e6                	ld	s3,120(sp)
    e8856278:	7a46                	ld	s4,112(sp)
    e885627a:	7aa6                	ld	s5,104(sp)
    e885627c:	7b06                	ld	s6,96(sp)
    e885627e:	6be6                	ld	s7,88(sp)
    e8856280:	6c46                	ld	s8,80(sp)
    e8856282:	6ca6                	ld	s9,72(sp)
    e8856284:	6d06                	ld	s10,64(sp)
    e8856286:	7de2                	ld	s11,56(sp)
    e8856288:	610d                	addi	sp,sp,160
    e885628a:	8082                	ret
		if( outAddr ) len = (socklen_t) sizeof( *outAddr );
    e885628c:	00098363          	beqz	s3,e8856292 <SocketAccept+0xe6>
    e8856290:	c86e                	sw	s11,16(sp)
		newSock = accept( inSock, outAddr ? &outAddr->sa : NULL, outAddr ? &len : NULL );
    e8856292:	8656                	mv	a2,s5
    e8856294:	85ce                	mv	a1,s3
    e8856296:	854a                	mv	a0,s2
    e8856298:	41f2e0ef          	jal	ra,e8884eb6 <lwip_accept>
    e885629c:	8baa                	mv	s7,a0
		err = map_socket_value_errno( inSock, IsValidSocket( newSock ), newSock );
    e885629e:	02055163          	bgez	a0,e88562c0 <SocketAccept+0x114>
		if( inSeconds >= 0 )
    e88562a2:	f80445e3          	bltz	s0,e885622c <SocketAccept+0x80>
			nowTicks = UpTicks();
    e88562a6:	71f0a0ef          	jal	ra,e88611c4 <UpTicks>
			else							inSeconds = 0;
    e88562aa:	4401                	li	s0,0
			if( deadlineTicks > nowTicks )	inSeconds = (int)( ( deadlineTicks - nowTicks ) / UpTicksPerSecond() );
    e88562ac:	f6957be3          	bgeu	a0,s1,e8856222 <SocketAccept+0x76>
    e88562b0:	40a48433          	sub	s0,s1,a0
    e88562b4:	3e800793          	li	a5,1000
    e88562b8:	02f45433          	divu	s0,s0,a5
    e88562bc:	2401                	sext.w	s0,s0
    e88562be:	b795                	j	e8856222 <SocketAccept+0x76>
			SocketMakeNonBlocking( newSock );
    e88562c0:	4585                	li	a1,1
    e88562c2:	d87ff0ef          	jal	ra,e8856048 <SocketSetNonBlocking>
			option = 1;
    e88562c6:	4705                	li	a4,1
    e88562c8:	ca3a                	sw	a4,20(sp)
			setsockopt( newSock, IPPROTO_TCP, TCP_NODELAY, (char *) &option, (socklen_t) sizeof( option ) );
    e88562ca:	0854                	addi	a3,sp,20
    e88562cc:	4711                	li	a4,4
    e88562ce:	4605                	li	a2,1
    e88562d0:	4599                	li	a1,6
    e88562d2:	855e                	mv	a0,s7
    e88562d4:	184300ef          	jal	ra,e8886458 <lwip_setsockopt>
	*outSock = newSock;
    e88562d8:	67a2                	ld	a5,8(sp)
    e88562da:	4501                	li	a0,0
    e88562dc:	0177a023          	sw	s7,0(a5)
    e88562e0:	b779                	j	e885626e <SocketAccept+0xc2>
		err = select_errno( n );
    e88562e2:	7579                	lui	a0,0xffffe
    e88562e4:	5be50513          	addi	a0,a0,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e88562e8:	b759                	j	e885626e <SocketAccept+0xc2>

00000000e88562ea <SocketSetP2P>:
	(void) inSock;
	(void) inAllow;
	
	return( kUnsupportedErr );
#endif
}
    e88562ea:	7579                	lui	a0,0xffffe
    e88562ec:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e88562f0:	8082                	ret

00000000e88562f2 <SocketGetPacketReceiveInterface>:
//	SocketGetPacketReceiveInterface
//===========================================================================================================================

#if( TARGET_OS_POSIX )
uint32_t	SocketGetPacketReceiveInterface( struct msghdr *inPacket, char *inNameBuf )
{
    e88562f2:	1141                	addi	sp,sp,-16
    e88562f4:	e406                	sd	ra,8(sp)
    e88562f6:	e022                	sd	s0,0(sp)
	struct cmsghdr *		cmPtr;
	
	for( cmPtr = CMSG_FIRSTHDR( inPacket ); cmPtr; cmPtr = CMSG_NXTHDR( inPacket, cmPtr ) )
    e88562f8:	551c                	lw	a5,40(a0)
    e88562fa:	472d                	li	a4,11
    e88562fc:	00f77863          	bgeu	a4,a5,e885630c <SocketGetPacketReceiveInterface+0x1a>
    e8856300:	7100                	ld	s0,32(a0)
    e8856302:	7c07b78b          	extu	a5,a5,31,0
			return( sdl->sdl_index );
		}
		#endif
		
		#if( defined( IP_PKTINFO ) && !defined( IP_RECVIF ) )
		if( ( cmPtr->cmsg_level == IPPROTO_IP ) && ( cmPtr->cmsg_type == IP_PKTINFO ) )
    e8856306:	4621                	li	a2,8
	for( cmPtr = CMSG_FIRSTHDR( inPacket ); cmPtr; cmPtr = CMSG_NXTHDR( inPacket, cmPtr ) )
    e8856308:	97a2                	add	a5,a5,s0
    e885630a:	e41d                	bnez	s0,e8856338 <SocketGetPacketReceiveInterface+0x46>
			}
			return( info->ipi6_ifindex );
		}
		#endif
	}
	dlogassert( "Receive interface not found. Did you enable it with setsockopt?" );
    e885630c:	6705                	lui	a4,0x1
    e885630e:	4501                	li	a0,0
    e8856310:	0006b817          	auipc	a6,0x6b
    e8856314:	66080813          	addi	a6,a6,1632 # e88c1970 <__PRETTY_FUNCTION__.10057+0xf0>
    e8856318:	0006c797          	auipc	a5,0x6c
    e885631c:	8e078793          	addi	a5,a5,-1824 # e88c1bf8 <__PRETTY_FUNCTION__.10372>
    e8856320:	c5f70713          	addi	a4,a4,-929 # c5f <memcmp-0xe87ff3a1>
    e8856324:	0006b697          	auipc	a3,0x6b
    e8856328:	77468693          	addi	a3,a3,1908 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e885632c:	4601                	li	a2,0
    e885632e:	4581                	li	a1,0
    e8856330:	898f80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	return( 0 );
    e8856334:	4501                	li	a0,0
    e8856336:	a829                	j	e8856350 <SocketGetPacketReceiveInterface+0x5e>
		if( ( cmPtr->cmsg_level == IPPROTO_IP ) && ( cmPtr->cmsg_type == IP_PKTINFO ) )
    e8856338:	4058                	lw	a4,4(s0)
    e885633a:	ef19                	bnez	a4,e8856358 <SocketGetPacketReceiveInterface+0x66>
    e885633c:	4418                	lw	a4,8(s0)
    e885633e:	00c71d63          	bne	a4,a2,e8856358 <SocketGetPacketReceiveInterface+0x66>
			if( inNameBuf )
    e8856342:	c591                	beqz	a1,e885634e <SocketGetPacketReceiveInterface+0x5c>
				*inNameBuf = '\0';
    e8856344:	00058023          	sb	zero,0(a1) # 1000 <memcmp-0xe87ff000>
				if_indextoname( info->ipi_ifindex, inNameBuf );
    e8856348:	4808                	lw	a0,16(s0)
    e885634a:	3192d0ef          	jal	ra,e8883e62 <lwip_if_indextoname>
			return( info->ipi_ifindex );
    e885634e:	4808                	lw	a0,16(s0)
}
    e8856350:	60a2                	ld	ra,8(sp)
    e8856352:	6402                	ld	s0,0(sp)
    e8856354:	0141                	addi	sp,sp,16
    e8856356:	8082                	ret
	for( cmPtr = CMSG_FIRSTHDR( inPacket ); cmPtr; cmPtr = CMSG_NXTHDR( inPacket, cmPtr ) )
    e8856358:	00046703          	lwu	a4,0(s0)
    e885635c:	071d                	addi	a4,a4,7
    e885635e:	9b61                	andi	a4,a4,-8
    e8856360:	01070693          	addi	a3,a4,16
    e8856364:	96a2                	add	a3,a3,s0
    e8856366:	fad7e3e3          	bltu	a5,a3,e885630c <SocketGetPacketReceiveInterface+0x1a>
    e885636a:	943a                	add	s0,s0,a4
    e885636c:	bf79                	j	e885630a <SocketGetPacketReceiveInterface+0x18>

00000000e885636e <SocketRecvFrom>:
{
    e885636e:	7165                	addi	sp,sp,-400
	msg.msg_namelen		= (socklen_t) inFromMaxLen;
    e8856370:	d43e                	sw	a5,40(sp)
	msg.msg_iov			= &iov;
    e8856372:	081c                	addi	a5,sp,16
    e8856374:	f83e                	sd	a5,48(sp)
	msg.msg_iovlen		= 1;
    e8856376:	4785                	li	a5,1
    e8856378:	dc3e                	sw	a5,56(sp)
	msg.msg_control		= controlData;
    e885637a:	089c                	addi	a5,sp,80
{
    e885637c:	fea6                	sd	s1,376(sp)
    e885637e:	f6ce                	sd	s3,360(sp)
    e8856380:	64fa                	ld	s1,408(sp)
    e8856382:	69da                	ld	s3,400(sp)
	msg.msg_control		= controlData;
    e8856384:	e0be                	sd	a5,64(sp)
	msg.msg_controllen	= (socklen_t) sizeof( controlData );
    e8856386:	10000793          	li	a5,256
{
    e885638a:	faca                	sd	s2,368(sp)
    e885638c:	f2d2                	sd	s4,352(sp)
    e885638e:	eed6                	sd	s5,344(sp)
    e8856390:	eada                	sd	s6,336(sp)
    e8856392:	e706                	sd	ra,392(sp)
    e8856394:	e322                	sd	s0,384(sp)
    e8856396:	8a2a                	mv	s4,a0
    e8856398:	8946                	mv	s2,a7
	iov.iov_len			= inMaxLen;
    e885639a:	fac1558b          	sdd	a1,a2,(sp),1,4
	msg.msg_name		= outFrom;
    e885639e:	f03a                	sd	a4,32(sp)
	msg.msg_controllen	= (socklen_t) sizeof( controlData );
    e88563a0:	e4be                	sd	a5,72(sp)
		err = map_socket_value_errno( inSock, n >= 0, n );
    e88563a2:	0008ea97          	auipc	s5,0x8e
    e88563a6:	286a8a93          	addi	s5,s5,646 # e88e4628 <lwip_errno>
		if( err == EINTR ) continue;
    e88563aa:	4b11                	li	s6,4
		n = recvmsg( inSock, &msg, 0 );
    e88563ac:	4601                	li	a2,0
    e88563ae:	100c                	addi	a1,sp,32
    e88563b0:	8552                	mv	a0,s4
    e88563b2:	e442                	sd	a6,8(sp)
    e88563b4:	e036                	sd	a3,0(sp)
    e88563b6:	1d02f0ef          	jal	ra,e8885586 <lwip_recvmsg>
		err = map_socket_value_errno( inSock, n >= 0, n );
    e88563ba:	f901468b          	ldd	a3,a6,(sp),0,4
    e88563be:	02055963          	bgez	a0,e88563f0 <SocketRecvFrom+0x82>
    e88563c2:	000aa403          	lw	s0,0(s5)
    e88563c6:	cc29                	beqz	s0,e8856420 <SocketRecvFrom+0xb2>
		if( err == EINTR ) continue;
    e88563c8:	ff6402e3          	beq	s0,s6,e88563ac <SocketRecvFrom+0x3e>
}
    e88563cc:	8522                	mv	a0,s0
    e88563ce:	60ba                	ld	ra,392(sp)
    e88563d0:	641a                	ld	s0,384(sp)
    e88563d2:	74f6                	ld	s1,376(sp)
    e88563d4:	7956                	ld	s2,368(sp)
    e88563d6:	79b6                	ld	s3,360(sp)
    e88563d8:	7a16                	ld	s4,352(sp)
    e88563da:	6af6                	ld	s5,344(sp)
    e88563dc:	6b56                	ld	s6,336(sp)
    e88563de:	6159                	addi	sp,sp,400
    e88563e0:	8082                	ret
		err = map_socket_value_errno( inSock, n >= 0, n );
    e88563e2:	4401                	li	s0,0
	else if( outIfName )	SocketGetPacketReceiveInterface( &msg, outIfName );
    e88563e4:	d4e5                	beqz	s1,e88563cc <SocketRecvFrom+0x5e>
    e88563e6:	85a6                	mv	a1,s1
    e88563e8:	1008                	addi	a0,sp,32
    e88563ea:	f09ff0ef          	jal	ra,e88562f2 <SocketGetPacketReceiveInterface>
    e88563ee:	bff9                	j	e88563cc <SocketRecvFrom+0x5e>
	if( outLen )			*outLen     = (size_t) n;
    e88563f0:	c291                	beqz	a3,e88563f4 <SocketRecvFrom+0x86>
    e88563f2:	e288                	sd	a0,0(a3)
	if( outFromLen )		*outFromLen = msg.msg_namelen;
    e88563f4:	00080663          	beqz	a6,e8856400 <SocketRecvFrom+0x92>
    e88563f8:	02816783          	lwu	a5,40(sp)
    e88563fc:	00f83023          	sd	a5,0(a6)
	if( outTicks )			*outTicks	= SocketGetPacketUpTicks( &msg );
    e8856400:	00090663          	beqz	s2,e885640c <SocketRecvFrom+0x9e>
	dlogassert( "SO_TIMESTAMP not found. Did you enable it with setsockopt?" );
	return( UpTicks() );
#else
	(void) inPacket;
	
	return( UpTicks() ); // No kernel support for packet timestamps so the current time is the best we can do.
    e8856404:	5c10a0ef          	jal	ra,e88611c4 <UpTicks>
	if( outTicks )			*outTicks	= SocketGetPacketUpTicks( &msg );
    e8856408:	00a93023          	sd	a0,0(s2)
	if( outIfIndex )		*outIfIndex	= SocketGetPacketReceiveInterface( &msg, outIfName );
    e885640c:	fc098be3          	beqz	s3,e88563e2 <SocketRecvFrom+0x74>
    e8856410:	85a6                	mv	a1,s1
    e8856412:	1008                	addi	a0,sp,32
    e8856414:	edfff0ef          	jal	ra,e88562f2 <SocketGetPacketReceiveInterface>
    e8856418:	00a9a023          	sw	a0,0(s3)
		err = map_socket_value_errno( inSock, n >= 0, n );
    e885641c:	4401                	li	s0,0
    e885641e:	b77d                	j	e88563cc <SocketRecvFrom+0x5e>
    e8856420:	7479                	lui	s0,0xffffe
    e8856422:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	return( err );
    e8856426:	b75d                	j	e88563cc <SocketRecvFrom+0x5e>

00000000e8856428 <SocketSetPacketTimestamps>:
}
    e8856428:	4501                	li	a0,0
    e885642a:	8082                	ret

00000000e885642c <SocketSetQoS>:
		#error "Mac build, but no SO_TRAFFIC_CLASS? Probably include order issue with System/sys/socket.h"
	#endif
#endif

OSStatus	SocketSetQoS( SocketRef inSock, int inQoS )
{
    e885642c:	1101                	addi	sp,sp,-32
    e885642e:	e822                	sd	s0,16(sp)
    e8856430:	ec06                	sd	ra,24(sp)
    e8856432:	842a                	mv	s0,a0
	int				family;
	int				diffServ;
	
	// Set IP_TOS/IPV6_TCLASS. This sets what goes into the TOS/TCLASS value in the IP header.
	
	if(      inQoS == kSocketQoS_Default )				diffServ = 0x00; // WMM=best effort, DSCP=0b000000 (CS0).
    e8856434:	e195                	bnez	a1,e8856458 <SocketSetQoS+0x2c>
    e8856436:	c602                	sw	zero,12(sp)
	else if( inQoS == kSocketQoS_AirPlayScreenAudio )	diffServ = 0xC0; // WMM=voice,       DSCP=0b110000 (CS6).
	else if( inQoS == kSocketQoS_AirPlayScreenVideo )	diffServ = 0x80; // WMM=video,       DSCP=0b100000 (CS4).
	else if( inQoS == kSocketQoS_NTP )					diffServ = 0xC0; // WMM=voice,       DSCP=0b110000 (CS6).
	else { dlogassert( "Bad QoS value: %d", inQoS ); err = kParamErr; goto exit; }
	
	family = SocketGetFamily( inSock, NULL );
    e8856438:	4581                	li	a1,0
    e885643a:	8522                	mv	a0,s0
    e885643c:	b29ff0ef          	jal	ra,e8855f64 <SocketGetFamily>
	if( family == AF_INET )
    e8856440:	4789                	li	a5,2
    e8856442:	08f51763          	bne	a0,a5,e88564d0 <SocketSetQoS+0xa4>
	{
		#if( defined( IP_TOS ) )
			err = setsockopt( inSock, IPPROTO_IP, IP_TOS, (char *) &diffServ, (socklen_t) sizeof( diffServ ) );
    e8856446:	8522                	mv	a0,s0
    e8856448:	4711                	li	a4,4
    e885644a:	0074                	addi	a3,sp,12
    e885644c:	4605                	li	a2,1
    e885644e:	4581                	li	a1,0
    e8856450:	008300ef          	jal	ra,e8886458 <lwip_setsockopt>
	err = setsockopt( inSock, SOL_SOCKET, SO_TRAFFIC_CLASS, &trafficClass, (socklen_t) sizeof( trafficClass ) );
	err = map_socket_noerr_errno( inSock, err );
	if( err ) dlog( kLogLevelNotice, "### Set SO_TRAFFIC_CLASS=%d failed: %#m\n", trafficClass, err );
}
#endif
	err = kNoErr;
    e8856454:	4401                	li	s0,0
    e8856456:	a885                	j	e88564c6 <SocketSetQoS+0x9a>
	else if( inQoS == kSocketQoS_Background )			diffServ = 0x20; // WMM=background,  DSCP=0b001000 (CS1).
    e8856458:	4785                	li	a5,1
    e885645a:	00f59663          	bne	a1,a5,e8856466 <SocketSetQoS+0x3a>
    e885645e:	02000793          	li	a5,32
	else if( inQoS == kSocketQoS_Voice )				diffServ = 0xC0; // WMM=voice,       DSCP=0b110000 (CS6).
    e8856462:	c63e                	sw	a5,12(sp)
    e8856464:	bfd1                	j	e8856438 <SocketSetQoS+0xc>
	else if( inQoS == kSocketQoS_Video )				diffServ = 0x80; // WMM=video,       DSCP=0b100000 (CS4).
    e8856466:	4789                	li	a5,2
    e8856468:	00f59563          	bne	a1,a5,e8856472 <SocketSetQoS+0x46>
    e885646c:	08000793          	li	a5,128
    e8856470:	bfcd                	j	e8856462 <SocketSetQoS+0x36>
	else if( inQoS == kSocketQoS_Voice )				diffServ = 0xC0; // WMM=voice,       DSCP=0b110000 (CS6).
    e8856472:	478d                	li	a5,3
    e8856474:	00f59563          	bne	a1,a5,e885647e <SocketSetQoS+0x52>
    e8856478:	0c000793          	li	a5,192
    e885647c:	b7dd                	j	e8856462 <SocketSetQoS+0x36>
	else if( inQoS == kSocketQoS_AirPlayAudio )			diffServ = 0x80; // WMM=video,       DSCP=0b100000 (CS4).
    e885647e:	47a9                	li	a5,10
    e8856480:	fef586e3          	beq	a1,a5,e885646c <SocketSetQoS+0x40>
	else if( inQoS == kSocketQoS_AirPlayScreenAudio )	diffServ = 0xC0; // WMM=voice,       DSCP=0b110000 (CS6).
    e8856484:	47ad                	li	a5,11
    e8856486:	fef589e3          	beq	a1,a5,e8856478 <SocketSetQoS+0x4c>
	else if( inQoS == kSocketQoS_AirPlayScreenVideo )	diffServ = 0x80; // WMM=video,       DSCP=0b100000 (CS4).
    e885648a:	47b1                	li	a5,12
    e885648c:	fef580e3          	beq	a1,a5,e885646c <SocketSetQoS+0x40>
	else if( inQoS == kSocketQoS_NTP )					diffServ = 0xC0; // WMM=voice,       DSCP=0b110000 (CS6).
    e8856490:	47d1                	li	a5,20
    e8856492:	fef583e3          	beq	a1,a5,e8856478 <SocketSetQoS+0x4c>
	else { dlogassert( "Bad QoS value: %d", inQoS ); err = kParamErr; goto exit; }
    e8856496:	6705                	lui	a4,0x1
    e8856498:	88ae                	mv	a7,a1
    e885649a:	0006b817          	auipc	a6,0x6b
    e885649e:	59e80813          	addi	a6,a6,1438 # e88c1a38 <__PRETTY_FUNCTION__.10057+0x1b8>
    e88564a2:	0006b797          	auipc	a5,0x6b
    e88564a6:	77678793          	addi	a5,a5,1910 # e88c1c18 <__PRETTY_FUNCTION__.10396>
    e88564aa:	d0b70713          	addi	a4,a4,-757 # d0b <memcmp-0xe87ff2f5>
    e88564ae:	0006b697          	auipc	a3,0x6b
    e88564b2:	5ea68693          	addi	a3,a3,1514 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e88564b6:	4601                	li	a2,0
    e88564b8:	4581                	li	a1,0
    e88564ba:	4501                	li	a0,0
    e88564bc:	7479                	lui	s0,0xffffe
    e88564be:	f0bf70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e88564c2:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
	
exit:
	return( err );
}
    e88564c6:	8522                	mv	a0,s0
    e88564c8:	60e2                	ld	ra,24(sp)
    e88564ca:	6442                	ld	s0,16(sp)
    e88564cc:	6105                	addi	sp,sp,32
    e88564ce:	8082                	ret
	else if( family == AF_INET6 )
    e88564d0:	47a9                	li	a5,10
	err = kNoErr;
    e88564d2:	4401                	li	s0,0
	else if( family == AF_INET6 )
    e88564d4:	fef509e3          	beq	a0,a5,e88564c6 <SocketSetQoS+0x9a>
		dlogassert( "bad socket family %d", family );
    e88564d8:	6705                	lui	a4,0x1
    e88564da:	88aa                	mv	a7,a0
    e88564dc:	0006b817          	auipc	a6,0x6b
    e88564e0:	57480813          	addi	a6,a6,1396 # e88c1a50 <__PRETTY_FUNCTION__.10057+0x1d0>
    e88564e4:	0006b797          	auipc	a5,0x6b
    e88564e8:	73478793          	addi	a5,a5,1844 # e88c1c18 <__PRETTY_FUNCTION__.10396>
    e88564ec:	d2670713          	addi	a4,a4,-730 # d26 <memcmp-0xe87ff2da>
    e88564f0:	0006b697          	auipc	a3,0x6b
    e88564f4:	5a868693          	addi	a3,a3,1448 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e88564f8:	4601                	li	a2,0
    e88564fa:	4581                	li	a1,0
    e88564fc:	4501                	li	a0,0
    e88564fe:	ecbf70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8856502:	b7d1                	j	e88564c6 <SocketSetQoS+0x9a>

00000000e8856504 <StringToSockAddr>:
//===========================================================================================================================
//	StringToSockAddr
//===========================================================================================================================

OSStatus	StringToSockAddr( const char *inStr, void *outSA, size_t inSASize, size_t *outSASize )
{
    e8856504:	715d                	addi	sp,sp,-80
    e8856506:	fc26                	sd	s1,56(sp)
    e8856508:	f84a                	sd	s2,48(sp)
    e885650a:	f44e                	sd	s3,40(sp)
    e885650c:	84ae                	mv	s1,a1
    e885650e:	89b2                	mv	s3,a2
    e8856510:	8936                	mv	s2,a3
	int				port;
	
	// Try to parse as IPv4 first (most common) and if that fails, try IPv6.
	
	port = 0;
	err = StringToIPv4Address( inStr, kStringToIPAddressFlagsNone, &ipv4, &port, NULL, NULL, NULL );
    e8856512:	4801                	li	a6,0
    e8856514:	4781                	li	a5,0
    e8856516:	4701                	li	a4,0
    e8856518:	0034                	addi	a3,sp,8
    e885651a:	0050                	addi	a2,sp,4
    e885651c:	4581                	li	a1,0
{
    e885651e:	f052                	sd	s4,32(sp)
    e8856520:	e486                	sd	ra,72(sp)
    e8856522:	e0a2                	sd	s0,64(sp)
    e8856524:	8a2a                	mv	s4,a0
	port = 0;
    e8856526:	c402                	sw	zero,8(sp)
	err = StringToIPv4Address( inStr, kStringToIPAddressFlagsNone, &ipv4, &port, NULL, NULL, NULL );
    e8856528:	4aa080ef          	jal	ra,e885e9d2 <StringToIPv4Address>
	if( err == kNoErr )
    e885652c:	e139                	bnez	a0,e8856572 <StringToSockAddr+0x6e>
	{
		struct sockaddr_in *		sa4;
		
		require_action_quiet( inSASize >= sizeof( *sa4 ), exit, err = kSizeErr );
    e885652e:	47bd                	li	a5,15
    e8856530:	0937fc63          	bgeu	a5,s3,e88565c8 <StringToSockAddr+0xc4>
		
		sa4 = (struct sockaddr_in *) outSA;
		memset( sa4, 0, sizeof( *sa4 ) );
    e8856534:	4641                	li	a2,16
    e8856536:	4581                	li	a1,0
    e8856538:	842a                	mv	s0,a0
    e885653a:	8526                	mv	a0,s1
    e885653c:	659250ef          	jal	ra,e887c394 <eLIBs_memset>
		SIN_LEN_SET( sa4 );
		sa4->sin_family 		= AF_INET;
		sa4->sin_port			= htons( (uint16_t) port );
    e8856540:	00815503          	lhu	a0,8(sp)
		sa4->sin_family 		= AF_INET;
    e8856544:	4789                	li	a5,2
    e8856546:	00f480a3          	sb	a5,1(s1)
		sa4->sin_port			= htons( (uint16_t) port );
    e885654a:	1d5300ef          	jal	ra,e8886f1e <lwip_htons>
    e885654e:	00a49123          	sh	a0,2(s1)
		sa4->sin_addr.s_addr	= htonl( ipv4 );
    e8856552:	4512                	lw	a0,4(sp)
    e8856554:	1db300ef          	jal	ra,e8886f2e <lwip_htonl>
    e8856558:	c0c8                	sw	a0,4(s1)
		
		if( outSASize ) *outSASize = sizeof( *sa4 );
    e885655a:	47c1                	li	a5,16
    e885655c:	06091363          	bnez	s2,e88565c2 <StringToSockAddr+0xbe>
	}
#endif
	
exit:
	return( err );
}
    e8856560:	8522                	mv	a0,s0
    e8856562:	60a6                	ld	ra,72(sp)
    e8856564:	6406                	ld	s0,64(sp)
    e8856566:	74e2                	ld	s1,56(sp)
    e8856568:	7942                	ld	s2,48(sp)
    e885656a:	79a2                	ld	s3,40(sp)
    e885656c:	7a02                	ld	s4,32(sp)
    e885656e:	6161                	addi	sp,sp,80
    e8856570:	8082                	ret
		require_action_quiet( inSASize >= sizeof( *sa6 ), exit, err = kSizeErr );
    e8856572:	47ed                	li	a5,27
    e8856574:	0537fa63          	bgeu	a5,s3,e88565c8 <StringToSockAddr+0xc4>
		err = StringToIPv6Address( inStr, kStringToIPAddressFlagsNone, ipv6, &scope, &port, NULL, NULL );
    e8856578:	4801                	li	a6,0
    e885657a:	4781                	li	a5,0
    e885657c:	0038                	addi	a4,sp,8
    e885657e:	0074                	addi	a3,sp,12
    e8856580:	0810                	addi	a2,sp,16
    e8856582:	4581                	li	a1,0
    e8856584:	8552                	mv	a0,s4
		scope = 0;
    e8856586:	c602                	sw	zero,12(sp)
		err = StringToIPv6Address( inStr, kStringToIPAddressFlagsNone, ipv6, &scope, &port, NULL, NULL );
    e8856588:	0c4080ef          	jal	ra,e885e64c <StringToIPv6Address>
    e885658c:	842a                	mv	s0,a0
		require_noerr_quiet( err, exit );
    e885658e:	f969                	bnez	a0,e8856560 <StringToSockAddr+0x5c>
		memset( sa6, 0, sizeof( *sa6 ) );
    e8856590:	4671                	li	a2,28
    e8856592:	4581                	li	a1,0
    e8856594:	8526                	mv	a0,s1
    e8856596:	5ff250ef          	jal	ra,e887c394 <eLIBs_memset>
		sa6->sin6_port		= htons( (uint16_t) port );
    e885659a:	00815503          	lhu	a0,8(sp)
		sa6->sin6_family 	= AF_INET6;
    e885659e:	47a9                	li	a5,10
    e88565a0:	00f480a3          	sb	a5,1(s1)
		sa6->sin6_port		= htons( (uint16_t) port );
    e88565a4:	17b300ef          	jal	ra,e8886f1e <lwip_htons>
    e88565a8:	00a49123          	sh	a0,2(s1)
		memcpy( sa6->sin6_addr.s6_addr, ipv6, 16 );
    e88565ac:	4641                	li	a2,16
    e88565ae:	080c                	addi	a1,sp,16
    e88565b0:	00848513          	addi	a0,s1,8
    e88565b4:	5ed250ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		sa6->sin6_scope_id	= scope;
    e88565b8:	47b2                	lw	a5,12(sp)
    e88565ba:	cc9c                	sw	a5,24(s1)
		if( outSASize ) *outSASize = sizeof( *sa6 );
    e88565bc:	fa0902e3          	beqz	s2,e8856560 <StringToSockAddr+0x5c>
    e88565c0:	47f1                	li	a5,28
    e88565c2:	00f93023          	sd	a5,0(s2)
    e88565c6:	bf69                	j	e8856560 <StringToSockAddr+0x5c>
		require_action_quiet( inSASize >= sizeof( *sa4 ), exit, err = kSizeErr );
    e88565c8:	7479                	lui	s0,0xffffe
    e88565ca:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e88565ce:	bf49                	j	e8856560 <StringToSockAddr+0x5c>

00000000e88565d0 <SockAddrGetSize>:

socklen_t	SockAddrGetSize( const void *inSA )
{
	int		family;
	
	family = ( (const struct sockaddr *) inSA )->sa_family;
    e88565d0:	00154883          	lbu	a7,1(a0)
	if(      family == AF_INET )  return( (socklen_t) sizeof( struct sockaddr_in ) );
    e88565d4:	4789                	li	a5,2
    e88565d6:	04f88063          	beq	a7,a5,e8856616 <SockAddrGetSize+0x46>
#if( defined( AF_INET6 ) )
	else if( family == AF_INET6 ) return( (socklen_t) sizeof( struct sockaddr_in6 ) );
    e88565da:	47a9                	li	a5,10
    e88565dc:	4571                	li	a0,28
    e88565de:	02f88e63          	beq	a7,a5,e885661a <SockAddrGetSize+0x4a>
#endif
	dlogassert( "unknown family: %d", family );
    e88565e2:	6705                	lui	a4,0x1
{
    e88565e4:	1141                	addi	sp,sp,-16
	dlogassert( "unknown family: %d", family );
    e88565e6:	4501                	li	a0,0
    e88565e8:	0006b817          	auipc	a6,0x6b
    e88565ec:	35880813          	addi	a6,a6,856 # e88c1940 <__PRETTY_FUNCTION__.10057+0xc0>
    e88565f0:	0006b797          	auipc	a5,0x6b
    e88565f4:	63878793          	addi	a5,a5,1592 # e88c1c28 <__PRETTY_FUNCTION__.10482>
    e88565f8:	eef70713          	addi	a4,a4,-273 # eef <memcmp-0xe87ff111>
    e88565fc:	0006b697          	auipc	a3,0x6b
    e8856600:	49c68693          	addi	a3,a3,1180 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8856604:	4601                	li	a2,0
    e8856606:	4581                	li	a1,0
{
    e8856608:	e406                	sd	ra,8(sp)
	dlogassert( "unknown family: %d", family );
    e885660a:	dbff70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	return( 0 );	
}
    e885660e:	60a2                	ld	ra,8(sp)
	return( 0 );	
    e8856610:	4501                	li	a0,0
}
    e8856612:	0141                	addi	sp,sp,16
    e8856614:	8082                	ret
	if(      family == AF_INET )  return( (socklen_t) sizeof( struct sockaddr_in ) );
    e8856616:	4541                	li	a0,16
    e8856618:	8082                	ret
}
    e885661a:	8082                	ret

00000000e885661c <SocketConnect>:
{
    e885661c:	711d                	addi	sp,sp,-96
    e885661e:	e0ca                	sd	s2,64(sp)
    e8856620:	892e                	mv	s2,a1
	err = SocketMakeNonBlocking( inSock );
    e8856622:	4585                	li	a1,1
{
    e8856624:	e8a2                	sd	s0,80(sp)
    e8856626:	e4a6                	sd	s1,72(sp)
    e8856628:	fc4e                	sd	s3,56(sp)
    e885662a:	ec86                	sd	ra,88(sp)
    e885662c:	f852                	sd	s4,48(sp)
    e885662e:	84aa                	mv	s1,a0
    e8856630:	89b2                	mv	s3,a2
	err = SocketMakeNonBlocking( inSock );
    e8856632:	a17ff0ef          	jal	ra,e8856048 <SocketSetNonBlocking>
    e8856636:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8856638:	e941                	bnez	a0,e88566c8 <SocketConnect+0xac>
	err = connect( inSock, (struct sockaddr *) inSockAddr, SockAddrGetSize( inSockAddr ) );
    e885663a:	854a                	mv	a0,s2
    e885663c:	f95ff0ef          	jal	ra,e88565d0 <SockAddrGetSize>
    e8856640:	0005061b          	sext.w	a2,a0
    e8856644:	85ca                	mv	a1,s2
    e8856646:	8526                	mv	a0,s1
    e8856648:	4dd2e0ef          	jal	ra,e8885324 <lwip_connect>
    e885664c:	842a                	mv	s0,a0
	if( err == 0 ) goto exit;
    e885664e:	cd2d                	beqz	a0,e88566c8 <SocketConnect+0xac>
	FD_ZERO( &readSet );
    e8856650:	01010913          	addi	s2,sp,16
    e8856654:	461d                	li	a2,7
    e8856656:	4581                	li	a1,0
    e8856658:	854a                	mv	a0,s2
    e885665a:	53b250ef          	jal	ra,e887c394 <eLIBs_memset>
	FD_ZERO( &writeSet );
    e885665e:	0820                	addi	s0,sp,24
    e8856660:	461d                	li	a2,7
    e8856662:	4581                	li	a1,0
    e8856664:	8522                	mv	a0,s0
    e8856666:	52f250ef          	jal	ra,e887c394 <eLIBs_memset>
	FD_SET( inSock, &readSet );
    e885666a:	00048a1b          	sext.w	s4,s1
    e885666e:	03100793          	li	a5,49
    e8856672:	0347e563          	bltu	a5,s4,e885669c <SocketConnect+0x80>
    e8856676:	0074f693          	andi	a3,s1,7
    e885667a:	4034d713          	srai	a4,s1,0x3
    e885667e:	4785                	li	a5,1
    e8856680:	00d797bb          	sllw	a5,a5,a3
    e8856684:	80e9468b          	lrbu	a3,s2,a4,0
    e8856688:	1c07a78b          	ext	a5,a5,7,0
    e885668c:	8edd                	or	a3,a3,a5
    e885668e:	00e9568b          	srb	a3,s2,a4,0
	FD_SET( inSock, &writeSet );
    e8856692:	80e4468b          	lrbu	a3,s0,a4,0
    e8856696:	8fd5                	or	a5,a5,a3
    e8856698:	00e4578b          	srb	a5,s0,a4,0
	n = select( (int)( inSock + 1 ), &readSet, &writeSet, NULL, &timeout );
    e885669c:	1018                	addi	a4,sp,32
    e885669e:	4681                	li	a3,0
    e88566a0:	8622                	mv	a2,s0
    e88566a2:	85ca                	mv	a1,s2
    e88566a4:	0014851b          	addiw	a0,s1,1
	timeout.tv_sec 	= inSeconds;
    e88566a8:	f04e                	sd	s3,32(sp)
	timeout.tv_usec = 0;	
    e88566aa:	f402                	sd	zero,40(sp)
	n = select( (int)( inSock + 1 ), &readSet, &writeSet, NULL, &timeout );
    e88566ac:	6802f0ef          	jal	ra,e8885d2c <lwip_select>
	err = select_errno( n );
    e88566b0:	02a04563          	bgtz	a0,e88566da <SocketConnect+0xbe>
    e88566b4:	c141                	beqz	a0,e8856734 <SocketConnect+0x118>
    e88566b6:	0008e797          	auipc	a5,0x8e
    e88566ba:	f7278793          	addi	a5,a5,-142 # e88e4628 <lwip_errno>
    e88566be:	4380                	lw	s0,0(a5)
    e88566c0:	e401                	bnez	s0,e88566c8 <SocketConnect+0xac>
    e88566c2:	7479                	lui	s0,0xffffe
    e88566c4:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
}
    e88566c8:	8522                	mv	a0,s0
    e88566ca:	60e6                	ld	ra,88(sp)
    e88566cc:	6446                	ld	s0,80(sp)
    e88566ce:	64a6                	ld	s1,72(sp)
    e88566d0:	6906                	ld	s2,64(sp)
    e88566d2:	79e2                	ld	s3,56(sp)
    e88566d4:	7a42                	ld	s4,48(sp)
    e88566d6:	6125                	addi	sp,sp,96
    e88566d8:	8082                	ret
	require_action( FD_ISSET( inSock, &readSet ) || FD_ISSET( inSock, &writeSet ), exit, err = kUnknownErr );
    e88566da:	03100793          	li	a5,49
    e88566de:	ff47e2e3          	bltu	a5,s4,e88566c2 <SocketConnect+0xa6>
    e88566e2:	4034d793          	srai	a5,s1,0x3
    e88566e6:	80f9470b          	lrbu	a4,s2,a5,0
    e88566ea:	0074f693          	andi	a3,s1,7
    e88566ee:	40d7573b          	sraw	a4,a4,a3
    e88566f2:	8b05                	andi	a4,a4,1
    e88566f4:	e719                	bnez	a4,e8856702 <SocketConnect+0xe6>
    e88566f6:	80f4478b          	lrbu	a5,s0,a5,0
    e88566fa:	40d7d7bb          	sraw	a5,a5,a3
    e88566fe:	8b85                	andi	a5,a5,1
    e8856700:	d3e9                	beqz	a5,e88566c2 <SocketConnect+0xa6>
	err = getsockopt( inSock, SOL_SOCKET, SO_ERROR, (char *) &tempInt, &tempLen );
    e8856702:	6585                	lui	a1,0x1
	tempLen = (socklen_t) sizeof( tempInt );
    e8856704:	4791                	li	a5,4
	err = getsockopt( inSock, SOL_SOCKET, SO_ERROR, (char *) &tempInt, &tempLen );
    e8856706:	00758613          	addi	a2,a1,7 # 1007 <memcmp-0xe87feff9>
    e885670a:	0078                	addi	a4,sp,12
    e885670c:	0034                	addi	a3,sp,8
    e885670e:	15fd                	addi	a1,a1,-1
    e8856710:	8526                	mv	a0,s1
	tempInt = 0;
    e8856712:	c402                	sw	zero,8(sp)
	tempLen = (socklen_t) sizeof( tempInt );
    e8856714:	c63e                	sw	a5,12(sp)
	err = getsockopt( inSock, SOL_SOCKET, SO_ERROR, (char *) &tempInt, &tempLen );
    e8856716:	1a72f0ef          	jal	ra,e88860bc <lwip_getsockopt>
	err = map_socket_noerr_errno( inSock, err );
    e885671a:	fd51                	bnez	a0,e88566b6 <SocketConnect+0x9a>
	if( err == 0 ) err = tempInt;
    e885671c:	4422                	lw	s0,8(sp)
	require_noerr_quiet( err, exit );
    e885671e:	f44d                	bnez	s0,e88566c8 <SocketConnect+0xac>
	tempInt = 1;
    e8856720:	4785                	li	a5,1
	setsockopt( inSock, IPPROTO_TCP, TCP_NODELAY, (char *) &tempInt, (socklen_t) sizeof( tempInt ) );
    e8856722:	4711                	li	a4,4
    e8856724:	0034                	addi	a3,sp,8
    e8856726:	4605                	li	a2,1
    e8856728:	4599                	li	a1,6
    e885672a:	8526                	mv	a0,s1
	tempInt = 1;
    e885672c:	c43e                	sw	a5,8(sp)
	setsockopt( inSock, IPPROTO_TCP, TCP_NODELAY, (char *) &tempInt, (socklen_t) sizeof( tempInt ) );
    e885672e:	52b2f0ef          	jal	ra,e8886458 <lwip_setsockopt>
    e8856732:	bf59                	j	e88566c8 <SocketConnect+0xac>
	err = select_errno( n );
    e8856734:	7479                	lui	s0,0xffffe
    e8856736:	5be40413          	addi	s0,s0,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
	return( err );
    e885673a:	b779                	j	e88566c8 <SocketConnect+0xac>

00000000e885673c <SockAddrGetPort>:
//===========================================================================================================================
//	SockAddrGetPort
//===========================================================================================================================

int	SockAddrGetPort( const void *inSA )
{
    e885673c:	1141                	addi	sp,sp,-16
    e885673e:	e406                	sd	ra,8(sp)
	int							port;
	const struct sockaddr *		sa;
	
	sa = (const struct sockaddr *) inSA;
	if(      sa->sa_family == AF_INET  ) port = ntohs( ( (const struct sockaddr_in  *) sa )->sin_port );
    e8856740:	00154883          	lbu	a7,1(a0)
    e8856744:	4789                	li	a5,2
    e8856746:	00f89a63          	bne	a7,a5,e885675a <SockAddrGetPort+0x1e>
#if( defined( AF_INET6 ) )
	else if( sa->sa_family == AF_INET6 ) port = ntohs( ( (const struct sockaddr_in6 *) sa )->sin6_port );
    e885674a:	00255503          	lhu	a0,2(a0)
    e885674e:	7d0300ef          	jal	ra,e8886f1e <lwip_htons>
    e8856752:	2501                	sext.w	a0,a0
#endif
	else { dlogassert( "unknown family: %d", sa->sa_family ); port = -1; }
	return( port );
}
    e8856754:	60a2                	ld	ra,8(sp)
    e8856756:	0141                	addi	sp,sp,16
    e8856758:	8082                	ret
	else if( sa->sa_family == AF_INET6 ) port = ntohs( ( (const struct sockaddr_in6 *) sa )->sin6_port );
    e885675a:	47a9                	li	a5,10
    e885675c:	fef887e3          	beq	a7,a5,e885674a <SockAddrGetPort+0xe>
	else { dlogassert( "unknown family: %d", sa->sa_family ); port = -1; }
    e8856760:	6705                	lui	a4,0x1
    e8856762:	4501                	li	a0,0
    e8856764:	0006b817          	auipc	a6,0x6b
    e8856768:	1dc80813          	addi	a6,a6,476 # e88c1940 <__PRETTY_FUNCTION__.10057+0xc0>
    e885676c:	0006b797          	auipc	a5,0x6b
    e8856770:	4cc78793          	addi	a5,a5,1228 # e88c1c38 <__PRETTY_FUNCTION__.10488>
    e8856774:	f0170713          	addi	a4,a4,-255 # f01 <memcmp-0xe87ff0ff>
    e8856778:	0006b697          	auipc	a3,0x6b
    e885677c:	32068693          	addi	a3,a3,800 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8856780:	4601                	li	a2,0
    e8856782:	4581                	li	a1,0
    e8856784:	c45f70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8856788:	557d                	li	a0,-1
    e885678a:	b7e9                	j	e8856754 <SockAddrGetPort+0x18>

00000000e885678c <ServerSocketOpen>:
{
    e885678c:	7119                	addi	sp,sp,-128
    e885678e:	f0ca                	sd	s2,96(sp)
    e8856790:	ecce                	sd	s3,88(sp)
    e8856792:	e8d2                	sd	s4,80(sp)
    e8856794:	e4d6                	sd	s5,72(sp)
    e8856796:	e0da                	sd	s6,64(sp)
    e8856798:	fc5e                	sd	s7,56(sp)
    e885679a:	fc86                	sd	ra,120(sp)
    e885679c:	f8a2                	sd	s0,112(sp)
    e885679e:	f4a6                	sd	s1,104(sp)
    e88567a0:	f862                	sd	s8,48(sp)
    e88567a2:	89aa                	mv	s3,a0
    e88567a4:	8bae                	mv	s7,a1
    e88567a6:	8a36                	mv	s4,a3
    e88567a8:	8aba                	mv	s5,a4
    e88567aa:	893e                	mv	s2,a5
    e88567ac:	8b42                	mv	s6,a6
	sock = socket( inFamily, inType, inProtocol );
    e88567ae:	4722f0ef          	jal	ra,e8885c20 <lwip_socket>
	err = map_socket_creation_errno( sock );
    e88567b2:	02055a63          	bgez	a0,e88567e6 <ServerSocketOpen+0x5a>
    e88567b6:	0008e797          	auipc	a5,0x8e
    e88567ba:	e7278793          	addi	a5,a5,-398 # e88e4628 <lwip_errno>
    e88567be:	0007a903          	lw	s2,0(a5)
    e88567c2:	00091563          	bnez	s2,e88567cc <ServerSocketOpen+0x40>
    e88567c6:	7979                	lui	s2,0xffffe
    e88567c8:	5d490913          	addi	s2,s2,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
}
    e88567cc:	70e6                	ld	ra,120(sp)
    e88567ce:	7446                	ld	s0,112(sp)
    e88567d0:	854a                	mv	a0,s2
    e88567d2:	74a6                	ld	s1,104(sp)
    e88567d4:	7906                	ld	s2,96(sp)
    e88567d6:	69e6                	ld	s3,88(sp)
    e88567d8:	6a46                	ld	s4,80(sp)
    e88567da:	6aa6                	ld	s5,72(sp)
    e88567dc:	6b06                	ld	s6,64(sp)
    e88567de:	7be2                	ld	s7,56(sp)
    e88567e0:	7c42                	ld	s8,48(sp)
    e88567e2:	6109                	addi	sp,sp,128
    e88567e4:	8082                	ret
	err = SocketMakeNonBlocking( sock );
    e88567e6:	4585                	li	a1,1
    e88567e8:	84aa                	mv	s1,a0
    e88567ea:	85fff0ef          	jal	ra,e8856048 <SocketSetNonBlocking>
    e88567ee:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88567f0:	ed0d                	bnez	a0,e885682a <ServerSocketOpen+0x9e>
	err = SocketSetBufferSize( sock, SO_RCVBUF, inRcvBufSize );
    e88567f2:	6405                	lui	s0,0x1
    e88567f4:	864a                	mv	a2,s2
    e88567f6:	00240593          	addi	a1,s0,2 # 1002 <memcmp-0xe87feffe>
    e88567fa:	8526                	mv	a0,s1
    e88567fc:	e6cff0ef          	jal	ra,e8855e68 <SocketSetBufferSize>
	option = 1;
    e8856800:	4c05                	li	s8,1
	err = setsockopt( sock, SOL_SOCKET, name, (char *) &option, (socklen_t) sizeof( option ) );
    e8856802:	4711                	li	a4,4
    e8856804:	0034                	addi	a3,sp,8
    e8856806:	4611                	li	a2,4
    e8856808:	fff40593          	addi	a1,s0,-1
    e885680c:	8526                	mv	a0,s1
	option = 1;
    e885680e:	c462                	sw	s8,8(sp)
	err = setsockopt( sock, SOL_SOCKET, name, (char *) &option, (socklen_t) sizeof( option ) );
    e8856810:	4492f0ef          	jal	ra,e8886458 <lwip_setsockopt>
    e8856814:	892a                	mv	s2,a0
	err = map_socket_noerr_errno( sock, err );
    e8856816:	cd19                	beqz	a0,e8856834 <ServerSocketOpen+0xa8>
    e8856818:	0008e797          	auipc	a5,0x8e
    e885681c:	e1078793          	addi	a5,a5,-496 # e88e4628 <lwip_errno>
    e8856820:	4380                	lw	s0,0(a5)
    e8856822:	e401                	bnez	s0,e885682a <ServerSocketOpen+0x9e>
    e8856824:	7479                	lui	s0,0xffffe
    e8856826:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	ForgetSocket( &sock );
    e885682a:	8526                	mv	a0,s1
    e885682c:	1772e0ef          	jal	ra,e88851a2 <lwip_close>
    e8856830:	8922                	mv	s2,s0
    e8856832:	bf69                	j	e88567cc <ServerSocketOpen+0x40>
	port = ( inPort < 0 ) ? -inPort : inPort; // Negated port number means "try this port, but allow dynamic".
    e8856834:	41fa579b          	sraiw	a5,s4,0x1f
    e8856838:	00fa4433          	xor	s0,s4,a5
    e885683c:	9c1d                	subw	s0,s0,a5
	if( inFamily == AF_INET )
    e885683e:	4789                	li	a5,2
    e8856840:	06f99063          	bne	s3,a5,e88568a0 <ServerSocketOpen+0x114>
		memset( &sip.v4, 0, sizeof( sip.v4 ) );
    e8856844:	4641                	li	a2,16
    e8856846:	4581                	li	a1,0
    e8856848:	0808                	addi	a0,sp,16
    e885684a:	34b250ef          	jal	ra,e887c394 <eLIBs_memset>
		sip.v4.sin_family		= AF_INET;
    e885684e:	013108a3          	sb	s3,17(sp)
		sip.v4.sin_port			= htons( (uint16_t) port );
    e8856852:	3c04350b          	extu	a0,s0,15,0
    e8856856:	6c8300ef          	jal	ra,e8886f1e <lwip_htons>
    e885685a:	00a11923          	sh	a0,18(sp)
		sip.v4.sin_addr.s_addr	= htonl( INADDR_ANY );
    e885685e:	4501                	li	a0,0
    e8856860:	6ce300ef          	jal	ra,e8886f2e <lwip_htonl>
    e8856864:	ca2a                	sw	a0,20(sp)
		err = bind( sock, &sip.sa, (socklen_t) sizeof( sip.v4 ) );
    e8856866:	4641                	li	a2,16
    e8856868:	080c                	addi	a1,sp,16
    e885686a:	8526                	mv	a0,s1
    e885686c:	0512e0ef          	jal	ra,e88850bc <lwip_bind>
		err = map_socket_noerr_errno( sock, err );
    e8856870:	c579                	beqz	a0,e885693e <ServerSocketOpen+0x1b2>
    e8856872:	0008e797          	auipc	a5,0x8e
    e8856876:	db678793          	addi	a5,a5,-586 # e88e4628 <lwip_errno>
    e885687a:	4380                	lw	s0,0(a5)
    e885687c:	89be                	mv	s3,a5
    e885687e:	e401                	bnez	s0,e8856886 <ServerSocketOpen+0xfa>
    e8856880:	7479                	lui	s0,0xffffe
    e8856882:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
		if( err && ( inPort < 0 ) )
    e8856886:	fa0a52e3          	bgez	s4,e885682a <ServerSocketOpen+0x9e>
			sip.v4.sin_port = 0;
    e885688a:	00011923          	sh	zero,18(sp)
			err = bind( sock, &sip.sa, (socklen_t) sizeof( sip.v4 ) );
    e885688e:	4641                	li	a2,16
			err = bind( sock, &sip.sa, (socklen_t) sizeof( sip.v6 ) );
    e8856890:	080c                	addi	a1,sp,16
    e8856892:	8526                	mv	a0,s1
    e8856894:	0292e0ef          	jal	ra,e88850bc <lwip_bind>
			err = map_socket_noerr_errno( sock, err );
    e8856898:	c15d                	beqz	a0,e885693e <ServerSocketOpen+0x1b2>
    e885689a:	0009a403          	lw	s0,0(s3)
    e885689e:	b751                	j	e8856822 <ServerSocketOpen+0x96>
	else if( inFamily == AF_INET6 )
    e88568a0:	47a9                	li	a5,10
    e88568a2:	06f99763          	bne	s3,a5,e8856910 <ServerSocketOpen+0x184>
		err = setsockopt( sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &option, (socklen_t) sizeof( option ) );
    e88568a6:	4711                	li	a4,4
    e88568a8:	0034                	addi	a3,sp,8
    e88568aa:	466d                	li	a2,27
    e88568ac:	02900593          	li	a1,41
    e88568b0:	8526                	mv	a0,s1
		option = 1;
    e88568b2:	c462                	sw	s8,8(sp)
		err = setsockopt( sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &option, (socklen_t) sizeof( option ) );
    e88568b4:	3a52f0ef          	jal	ra,e8886458 <lwip_setsockopt>
		err = map_socket_noerr_errno( sock, err );
    e88568b8:	f125                	bnez	a0,e8856818 <ServerSocketOpen+0x8c>
		memset( &sip.v6, 0, sizeof( sip.v6 ) );
    e88568ba:	4671                	li	a2,28
    e88568bc:	4581                	li	a1,0
    e88568be:	0808                	addi	a0,sp,16
    e88568c0:	2d5250ef          	jal	ra,e887c394 <eLIBs_memset>
		sip.v6.sin6_family	= AF_INET6;
    e88568c4:	013108a3          	sb	s3,17(sp)
		sip.v6.sin6_port	= htons( (uint16_t) port );
    e88568c8:	3c04350b          	extu	a0,s0,15,0
    e88568cc:	652300ef          	jal	ra,e8886f1e <lwip_htons>
    e88568d0:	00a11923          	sh	a0,18(sp)
		sip.v6.sin6_addr	= in6addr_any;	
    e88568d4:	0007a797          	auipc	a5,0x7a
    e88568d8:	94c78793          	addi	a5,a5,-1716 # e88d0220 <in6addr_any>
    e88568dc:	6398                	ld	a4,0(a5)
    e88568de:	679c                	ld	a5,8(a5)
		err = bind( sock, &sip.sa, (socklen_t) sizeof( sip.v6 ) );
    e88568e0:	4671                	li	a2,28
    e88568e2:	080c                	addi	a1,sp,16
    e88568e4:	8526                	mv	a0,s1
		sip.v6.sin6_addr	= in6addr_any;	
    e88568e6:	ec3a                	sd	a4,24(sp)
    e88568e8:	f03e                	sd	a5,32(sp)
		err = bind( sock, &sip.sa, (socklen_t) sizeof( sip.v6 ) );
    e88568ea:	7d22e0ef          	jal	ra,e88850bc <lwip_bind>
		err = map_socket_noerr_errno( sock, err );
    e88568ee:	c921                	beqz	a0,e885693e <ServerSocketOpen+0x1b2>
    e88568f0:	0008e797          	auipc	a5,0x8e
    e88568f4:	d3878793          	addi	a5,a5,-712 # e88e4628 <lwip_errno>
    e88568f8:	4380                	lw	s0,0(a5)
    e88568fa:	89be                	mv	s3,a5
    e88568fc:	e401                	bnez	s0,e8856904 <ServerSocketOpen+0x178>
    e88568fe:	7479                	lui	s0,0xffffe
    e8856900:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
		if( err && ( inPort < 0 ) )
    e8856904:	f20a53e3          	bgez	s4,e885682a <ServerSocketOpen+0x9e>
			sip.v6.sin6_port = 0;
    e8856908:	00011923          	sh	zero,18(sp)
			err = bind( sock, &sip.sa, (socklen_t) sizeof( sip.v6 ) );
    e885690c:	4671                	li	a2,28
    e885690e:	b749                	j	e8856890 <ServerSocketOpen+0x104>
		dlogassert( "Unsupported family: %d", inFamily );
    e8856910:	88ce                	mv	a7,s3
    e8856912:	0006b817          	auipc	a6,0x6b
    e8856916:	16e80813          	addi	a6,a6,366 # e88c1a80 <__PRETTY_FUNCTION__.10057+0x200>
    e885691a:	0006b797          	auipc	a5,0x6b
    e885691e:	37e78793          	addi	a5,a5,894 # e88c1c98 <__PRETTY_FUNCTION__.9902>
    e8856922:	28100713          	li	a4,641
    e8856926:	0006b697          	auipc	a3,0x6b
    e885692a:	17268693          	addi	a3,a3,370 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e885692e:	4601                	li	a2,0
    e8856930:	4581                	li	a1,0
		err = kUnsupportedErr;
    e8856932:	7479                	lui	s0,0xffffe
		dlogassert( "Unsupported family: %d", inFamily );
    e8856934:	a95f70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kUnsupportedErr;
    e8856938:	5b140413          	addi	s0,s0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
		goto exit;
    e885693c:	b5fd                	j	e885682a <ServerSocketOpen+0x9e>
	if( inType == SOCK_STREAM )
    e885693e:	4785                	li	a5,1
    e8856940:	00fb9d63          	bne	s7,a5,e885695a <ServerSocketOpen+0x1ce>
		err = listen( sock, SOMAXCONN );
    e8856944:	4595                	li	a1,5
    e8856946:	8526                	mv	a0,s1
    e8856948:	2d52e0ef          	jal	ra,e888541c <lwip_listen>
		err = map_socket_noerr_errno( sock, err );
    e885694c:	c519                	beqz	a0,e885695a <ServerSocketOpen+0x1ce>
			err = listen( sock, 5 );
    e885694e:	4595                	li	a1,5
    e8856950:	8526                	mv	a0,s1
    e8856952:	2cb2e0ef          	jal	ra,e888541c <lwip_listen>
			err = map_socket_noerr_errno( sock, err );
    e8856956:	ec0511e3          	bnez	a0,e8856818 <ServerSocketOpen+0x8c>
	if( outPort )
    e885695a:	020a8063          	beqz	s5,e885697a <ServerSocketOpen+0x1ee>
		len = (socklen_t) sizeof( sip );
    e885695e:	47f1                	li	a5,28
		err = getsockname( sock, &sip.sa, &len );
    e8856960:	0070                	addi	a2,sp,12
    e8856962:	080c                	addi	a1,sp,16
    e8856964:	8526                	mv	a0,s1
		len = (socklen_t) sizeof( sip );
    e8856966:	c63e                	sw	a5,12(sp)
		err = getsockname( sock, &sip.sa, &len );
    e8856968:	74e2f0ef          	jal	ra,e88860b6 <lwip_getsockname>
		err = map_socket_noerr_errno( sock, err );
    e885696c:	ea0516e3          	bnez	a0,e8856818 <ServerSocketOpen+0x8c>
		*outPort = SockAddrGetPort( &sip );
    e8856970:	0808                	addi	a0,sp,16
    e8856972:	dcbff0ef          	jal	ra,e885673c <SockAddrGetPort>
    e8856976:	00aaa023          	sw	a0,0(s5)
	*outSock = sock;
    e885697a:	009b2023          	sw	s1,0(s6)
	ForgetSocket( &sock );
    e885697e:	b5b9                	j	e88567cc <ServerSocketOpen+0x40>

00000000e8856980 <ServerSocketPairOpen>:
{
    e8856980:	711d                	addi	sp,sp,-96
    e8856982:	f05a                	sd	s6,32(sp)
    e8856984:	8b3e                	mv	s6,a5
	sockV4 = kInvalidSocketRef;
    e8856986:	57fd                	li	a5,-1
{
    e8856988:	e4a6                	sd	s1,72(sp)
    e885698a:	e0ca                	sd	s2,64(sp)
    e885698c:	fc4e                	sd	s3,56(sp)
    e885698e:	f852                	sd	s4,48(sp)
    e8856990:	f456                	sd	s5,40(sp)
    e8856992:	892a                	mv	s2,a0
    e8856994:	89ae                	mv	s3,a1
    e8856996:	8a3a                	mv	s4,a4
    e8856998:	c632                	sw	a2,12(sp)
	sockV4 = kInvalidSocketRef;
    e885699a:	cc3e                	sw	a5,24(sp)
	sockV6 = kInvalidSocketRef;
    e885699c:	ce3e                	sw	a5,28(sp)
{
    e885699e:	84b6                	mv	s1,a3
	err  = ServerSocketOpen( AF_INET,  inType, inProtocol, inPort, &inPort, inRcvBufSize, &sockV4 );
    e88569a0:	87ba                	mv	a5,a4
    e88569a2:	86b2                	mv	a3,a2
    e88569a4:	0078                	addi	a4,sp,12
    e88569a6:	862e                	mv	a2,a1
{
    e88569a8:	8ac2                	mv	s5,a6
	err  = ServerSocketOpen( AF_INET,  inType, inProtocol, inPort, &inPort, inRcvBufSize, &sockV4 );
    e88569aa:	85aa                	mv	a1,a0
    e88569ac:	01810813          	addi	a6,sp,24
    e88569b0:	4509                	li	a0,2
{
    e88569b2:	e8a2                	sd	s0,80(sp)
    e88569b4:	ec86                	sd	ra,88(sp)
	err  = ServerSocketOpen( AF_INET,  inType, inProtocol, inPort, &inPort, inRcvBufSize, &sockV4 );
    e88569b6:	dd7ff0ef          	jal	ra,e885678c <ServerSocketOpen>
    e88569ba:	842a                	mv	s0,a0
	err2 = ServerSocketOpen( AF_INET6, inType, inProtocol, inPort, &inPort, inRcvBufSize, &sockV6 );
    e88569bc:	46b2                	lw	a3,12(sp)
    e88569be:	01c10813          	addi	a6,sp,28
    e88569c2:	87d2                	mv	a5,s4
    e88569c4:	0078                	addi	a4,sp,12
    e88569c6:	864e                	mv	a2,s3
    e88569c8:	85ca                	mv	a1,s2
    e88569ca:	4529                	li	a0,10
    e88569cc:	dc1ff0ef          	jal	ra,e885678c <ServerSocketOpen>
	require( !err || !err2, exit );
    e88569d0:	c011                	beqz	s0,e88569d4 <ServerSocketPairOpen+0x54>
    e88569d2:	ed11                	bnez	a0,e88569ee <ServerSocketPairOpen+0x6e>
	if( outPort ) *outPort = inPort;
    e88569d4:	c099                	beqz	s1,e88569da <ServerSocketPairOpen+0x5a>
    e88569d6:	47b2                	lw	a5,12(sp)
    e88569d8:	c09c                	sw	a5,0(s1)
	*outSockV4 = sockV4;
    e88569da:	47e2                	lw	a5,24(sp)
	err = kNoErr;
    e88569dc:	4401                	li	s0,0
	*outSockV4 = sockV4;
    e88569de:	00fb2023          	sw	a5,0(s6)
	*outSockV6 = sockV6;
    e88569e2:	47f2                	lw	a5,28(sp)
    e88569e4:	00faa023          	sw	a5,0(s5)
	sockV4 = kInvalidSocketRef;
    e88569e8:	57fd                	li	a5,-1
    e88569ea:	cc3e                	sw	a5,24(sp)
	sockV6 = kInvalidSocketRef;
    e88569ec:	ce3e                	sw	a5,28(sp)
	ForgetSocket( &sockV4 );
    e88569ee:	4562                	lw	a0,24(sp)
    e88569f0:	00054663          	bltz	a0,e88569fc <ServerSocketPairOpen+0x7c>
    e88569f4:	7ae2e0ef          	jal	ra,e88851a2 <lwip_close>
    e88569f8:	57fd                	li	a5,-1
    e88569fa:	cc3e                	sw	a5,24(sp)
	ForgetSocket( &sockV6 );
    e88569fc:	4572                	lw	a0,28(sp)
    e88569fe:	00054463          	bltz	a0,e8856a06 <ServerSocketPairOpen+0x86>
    e8856a02:	7a02e0ef          	jal	ra,e88851a2 <lwip_close>
}
    e8856a06:	8522                	mv	a0,s0
    e8856a08:	60e6                	ld	ra,88(sp)
    e8856a0a:	6446                	ld	s0,80(sp)
    e8856a0c:	64a6                	ld	s1,72(sp)
    e8856a0e:	6906                	ld	s2,64(sp)
    e8856a10:	79e2                	ld	s3,56(sp)
    e8856a12:	7a42                	ld	s4,48(sp)
    e8856a14:	7aa2                	ld	s5,40(sp)
    e8856a16:	7b02                	ld	s6,32(sp)
    e8856a18:	6125                	addi	sp,sp,96
    e8856a1a:	8082                	ret

00000000e8856a1c <SockAddrSetPort>:
//===========================================================================================================================
//	SockAddrSetPort
//===========================================================================================================================

void	SockAddrSetPort( void *inSA, int inPort )
{
    e8856a1c:	1141                	addi	sp,sp,-16
    e8856a1e:	e022                	sd	s0,0(sp)
    e8856a20:	e406                	sd	ra,8(sp)
	const struct sockaddr *		sa;
	
	check( inPort >= 0 );
	
	sa = (const struct sockaddr *) inSA;
	if(      sa->sa_family == AF_INET  ) ( (struct sockaddr_in  *) sa )->sin_port  = htons( (unsigned short) inPort );
    e8856a22:	00154883          	lbu	a7,1(a0)
    e8856a26:	4789                	li	a5,2
{
    e8856a28:	842a                	mv	s0,a0
	if(      sa->sa_family == AF_INET  ) ( (struct sockaddr_in  *) sa )->sin_port  = htons( (unsigned short) inPort );
    e8856a2a:	00f89c63          	bne	a7,a5,e8856a42 <SockAddrSetPort+0x26>
#if( defined( AF_INET6 ) )
	else if( sa->sa_family == AF_INET6 ) ( (struct sockaddr_in6 *) sa )->sin6_port = htons( (unsigned short) inPort );
    e8856a2e:	3c05b50b          	extu	a0,a1,15,0
    e8856a32:	4ec300ef          	jal	ra,e8886f1e <lwip_htons>
    e8856a36:	00a41123          	sh	a0,2(s0)
#endif
	else dlogassert( "unknown family: %d", sa->sa_family );
}
    e8856a3a:	60a2                	ld	ra,8(sp)
    e8856a3c:	6402                	ld	s0,0(sp)
    e8856a3e:	0141                	addi	sp,sp,16
    e8856a40:	8082                	ret
	else if( sa->sa_family == AF_INET6 ) ( (struct sockaddr_in6 *) sa )->sin6_port = htons( (unsigned short) inPort );
    e8856a42:	47a9                	li	a5,10
    e8856a44:	fef885e3          	beq	a7,a5,e8856a2e <SockAddrSetPort+0x12>
}
    e8856a48:	6402                	ld	s0,0(sp)
    e8856a4a:	60a2                	ld	ra,8(sp)
	else dlogassert( "unknown family: %d", sa->sa_family );
    e8856a4c:	6705                	lui	a4,0x1
    e8856a4e:	0006b817          	auipc	a6,0x6b
    e8856a52:	ef280813          	addi	a6,a6,-270 # e88c1940 <__PRETTY_FUNCTION__.10057+0xc0>
    e8856a56:	0006b797          	auipc	a5,0x6b
    e8856a5a:	1f278793          	addi	a5,a5,498 # e88c1c48 <__PRETTY_FUNCTION__.10494>
    e8856a5e:	f1470713          	addi	a4,a4,-236 # f14 <memcmp-0xe87ff0ec>
    e8856a62:	0006b697          	auipc	a3,0x6b
    e8856a66:	03668693          	addi	a3,a3,54 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8856a6a:	4601                	li	a2,0
    e8856a6c:	4581                	li	a1,0
    e8856a6e:	4501                	li	a0,0
}
    e8856a70:	0141                	addi	sp,sp,16
	else dlogassert( "unknown family: %d", sa->sa_family );
    e8856a72:	957f706f          	j	e884e3c8 <DebugPrintAssert>

00000000e8856a76 <SockAddrCopy>:
//===========================================================================================================================
//	SockAddrCopy
//===========================================================================================================================

void	SockAddrCopy( const void *inSrc, void *inDst )
{
    e8856a76:	87aa                	mv	a5,a0
	const struct sockaddr *		src;
	
	src  = (const struct sockaddr *) inSrc;
	if(      src->sa_family == AF_INET )  memmove( inDst, src, sizeof( struct sockaddr_in ) );
    e8856a78:	0017c883          	lbu	a7,1(a5)
    e8856a7c:	4709                	li	a4,2
{
    e8856a7e:	852e                	mv	a0,a1
	if(      src->sa_family == AF_INET )  memmove( inDst, src, sizeof( struct sockaddr_in ) );
    e8856a80:	4641                	li	a2,16
    e8856a82:	00e88663          	beq	a7,a4,e8856a8e <SockAddrCopy+0x18>
#if( defined( AF_INET6 ) )
	else if( src->sa_family == AF_INET6 ) memmove( inDst, src, sizeof( struct sockaddr_in6 ) );
    e8856a86:	4729                	li	a4,10
    e8856a88:	00e89663          	bne	a7,a4,e8856a94 <SockAddrCopy+0x1e>
    e8856a8c:	4671                	li	a2,28
    e8856a8e:	85be                	mv	a1,a5
    e8856a90:	11d2506f          	j	e887c3ac <eLIBs_memmove>
#endif
	else dlogassert( "unknown family: %d", src->sa_family );
    e8856a94:	6705                	lui	a4,0x1
    e8856a96:	0006b817          	auipc	a6,0x6b
    e8856a9a:	eaa80813          	addi	a6,a6,-342 # e88c1940 <__PRETTY_FUNCTION__.10057+0xc0>
    e8856a9e:	0006b797          	auipc	a5,0x6b
    e8856aa2:	1ba78793          	addi	a5,a5,442 # e88c1c58 <__PRETTY_FUNCTION__.10523>
    e8856aa6:	f7670713          	addi	a4,a4,-138 # f76 <memcmp-0xe87ff08a>
    e8856aaa:	0006b697          	auipc	a3,0x6b
    e8856aae:	fee68693          	addi	a3,a3,-18 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8856ab2:	4601                	li	a2,0
    e8856ab4:	4581                	li	a1,0
    e8856ab6:	4501                	li	a0,0
    e8856ab8:	911f706f          	j	e884e3c8 <DebugPrintAssert>

00000000e8856abc <SockAddrSimplify>:
//	Converts a sockaddr to its simplest form; e.g. if it's IPv6 address wrapping an IPv4 address, convert to IPv4.
//	Note: "inSrc" may point to the same memory as "outDst", such as SockAddrSimplify( &addr, &addr ).
//===========================================================================================================================

OSStatus	SockAddrSimplify( const void *inSrc, void *outDst )
{
    e8856abc:	7139                	addi	sp,sp,-64
    e8856abe:	fc91540b          	sdd	s0,s1,(sp),2,4
    e8856ac2:	fc06                	sd	ra,56(sp)
    e8856ac4:	f84a                	sd	s2,48(sp)
	OSStatus		err;
	int				family;
	
	family = ( (const struct sockaddr *) inSrc )->sa_family;
    e8856ac6:	00154883          	lbu	a7,1(a0)
	if( family == AF_INET )
    e8856aca:	4789                	li	a5,2
{
    e8856acc:	842a                	mv	s0,a0
    e8856ace:	84ae                	mv	s1,a1
	if( family == AF_INET )
    e8856ad0:	00f89d63          	bne	a7,a5,e8856aea <SockAddrSimplify+0x2e>
	{
		dlogassert( "unknown family: %d", family );
		err = kUnsupportedErr;
		goto exit;
	}
	err = kNoErr;
    e8856ad4:	4901                	li	s2,0
			memmove( outDst, inSrc, sizeof( struct sockaddr_in ) );
    e8856ad6:	4641                	li	a2,16
		if( inSrc != outDst )
    e8856ad8:	0ab51b63          	bne	a0,a1,e8856b8e <SockAddrSimplify+0xd2>
	
exit:
	return( err );
}
    e8856adc:	70e2                	ld	ra,56(sp)
    e8856ade:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8856ae2:	854a                	mv	a0,s2
    e8856ae4:	7942                	ld	s2,48(sp)
    e8856ae6:	6121                	addi	sp,sp,64
    e8856ae8:	8082                	ret
	else if( family == AF_INET6 )
    e8856aea:	47a9                	li	a5,10
    e8856aec:	0af89663          	bne	a7,a5,e8856b98 <SockAddrSimplify+0xdc>
		if( IN6_IS_ADDR_V4MAPPED( &sa6->sin6_addr ) || IN6_IS_ADDR_V4COMPAT( &sa6->sin6_addr ) )
    e8856af0:	451c                	lw	a5,8(a0)
    e8856af2:	e7b9                	bnez	a5,e8856b40 <SockAddrSimplify+0x84>
    e8856af4:	455c                	lw	a5,12(a0)
    e8856af6:	e7a9                	bnez	a5,e8856b40 <SockAddrSimplify+0x84>
    e8856af8:	4918                	lw	a4,16(a0)
    e8856afa:	67c1                	lui	a5,0x10
    e8856afc:	17fd                	addi	a5,a5,-1
    e8856afe:	00f70763          	beq	a4,a5,e8856b0c <SockAddrSimplify+0x50>
    e8856b02:	ef1d                	bnez	a4,e8856b40 <SockAddrSimplify+0x84>
    e8856b04:	4958                	lw	a4,20(a0)
    e8856b06:	4785                	li	a5,1
    e8856b08:	02e7fc63          	bgeu	a5,a4,e8856b40 <SockAddrSimplify+0x84>
			memcpy( a4, &sa6->sin6_addr.s6_addr[ 12 ], 4 ); // IPv4 address is in the low 32 bits of the IPv6 address.
    e8856b0c:	01440593          	addi	a1,s0,20
    e8856b10:	4611                	li	a2,4
    e8856b12:	850a                	mv	a0,sp
    e8856b14:	08d250ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			port = sa6->sin6_port;
    e8856b18:	00245403          	lhu	s0,2(s0)
			memset( sa4, 0, sizeof( *sa4 ) );
    e8856b1c:	4641                	li	a2,16
    e8856b1e:	4581                	li	a1,0
    e8856b20:	8526                	mv	a0,s1
    e8856b22:	073250ef          	jal	ra,e887c394 <eLIBs_memset>
			sa4->sin_port	= port;
    e8856b26:	00849123          	sh	s0,2(s1)
			sa4->sin_family	= AF_INET;
    e8856b2a:	4789                	li	a5,2
    e8856b2c:	00f480a3          	sb	a5,1(s1)
			memcpy( &sa4->sin_addr.s_addr, a4, 4 );
    e8856b30:	4611                	li	a2,4
    e8856b32:	858a                	mv	a1,sp
    e8856b34:	00448513          	addi	a0,s1,4
			memcpy( outDst, &sa6Copy, sizeof( sa6Copy ) );
    e8856b38:	069250ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e8856b3c:	4901                	li	s2,0
    e8856b3e:	bf79                	j	e8856adc <SockAddrSimplify+0x20>
		else if( IN6_IS_ADDR_LINKLOCAL( &sa6->sin6_addr ) )
    e8856b40:	00844703          	lbu	a4,8(s0)
    e8856b44:	0fe00793          	li	a5,254
    e8856b48:	02f71f63          	bne	a4,a5,e8856b86 <SockAddrSimplify+0xca>
    e8856b4c:	00944783          	lbu	a5,9(s0)
    e8856b50:	08000713          	li	a4,128
    e8856b54:	0c07f793          	andi	a5,a5,192
    e8856b58:	02e79763          	bne	a5,a4,e8856b86 <SockAddrSimplify+0xca>
			sa6Copy = *sa6;
    e8856b5c:	4671                	li	a2,28
    e8856b5e:	85a2                	mv	a1,s0
    e8856b60:	850a                	mv	a0,sp
    e8856b62:	d06a90ef          	jal	ra,e8800068 <memcpy>
			if( sa6Copy.sin6_scope_id == 0 )
    e8856b66:	47e2                	lw	a5,24(sp)
    e8856b68:	eb89                	bnez	a5,e8856b7a <SockAddrSimplify+0xbe>
				sa6Copy.sin6_scope_id = ReadBig16( &sa6Copy.sin6_addr.s6_addr[ 2 ] );
    e8856b6a:	00a14783          	lbu	a5,10(sp)
    e8856b6e:	00b14703          	lbu	a4,11(sp)
    e8856b72:	0087979b          	slliw	a5,a5,0x8
    e8856b76:	8fd9                	or	a5,a5,a4
    e8856b78:	cc3e                	sw	a5,24(sp)
			sa6Copy.sin6_addr.s6_addr[ 2 ] = 0;
    e8856b7a:	00011523          	sh	zero,10(sp)
			memcpy( outDst, &sa6Copy, sizeof( sa6Copy ) );
    e8856b7e:	4671                	li	a2,28
    e8856b80:	858a                	mv	a1,sp
    e8856b82:	8526                	mv	a0,s1
    e8856b84:	bf55                	j	e8856b38 <SockAddrSimplify+0x7c>
	err = kNoErr;
    e8856b86:	4901                	li	s2,0
			if( inSrc != outDst )
    e8856b88:	f4940ae3          	beq	s0,s1,e8856adc <SockAddrSimplify+0x20>
				memmove( outDst, inSrc, sizeof( struct sockaddr_in6 ) );
    e8856b8c:	4671                	li	a2,28
    e8856b8e:	85a2                	mv	a1,s0
    e8856b90:	8526                	mv	a0,s1
    e8856b92:	01b250ef          	jal	ra,e887c3ac <eLIBs_memmove>
    e8856b96:	b799                	j	e8856adc <SockAddrSimplify+0x20>
		dlogassert( "unknown family: %d", family );
    e8856b98:	6705                	lui	a4,0x1
    e8856b9a:	0006b817          	auipc	a6,0x6b
    e8856b9e:	da680813          	addi	a6,a6,-602 # e88c1940 <__PRETTY_FUNCTION__.10057+0xc0>
    e8856ba2:	0006b797          	auipc	a5,0x6b
    e8856ba6:	0c678793          	addi	a5,a5,198 # e88c1c68 <__PRETTY_FUNCTION__.10535>
    e8856baa:	1705                	addi	a4,a4,-31
    e8856bac:	0006b697          	auipc	a3,0x6b
    e8856bb0:	eec68693          	addi	a3,a3,-276 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8856bb4:	4601                	li	a2,0
    e8856bb6:	4581                	li	a1,0
    e8856bb8:	4501                	li	a0,0
		err = kUnsupportedErr;
    e8856bba:	7979                	lui	s2,0xffffe
		dlogassert( "unknown family: %d", family );
    e8856bbc:	80df70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kUnsupportedErr;
    e8856bc0:	5b190913          	addi	s2,s2,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
		goto exit;
    e8856bc4:	bf21                	j	e8856adc <SockAddrSimplify+0x20>

00000000e8856bc6 <SockAddrToDeviceID>:
//===========================================================================================================================
//	SockAddrToDeviceID
//===========================================================================================================================

uint64_t	SockAddrToDeviceID( const void *inSockAddr )
{
    e8856bc6:	7179                	addi	sp,sp,-48
	uint64_t		deviceID;
	sockaddr_ip		sip;
	
	SockAddrSimplify( inSockAddr, &sip );
    e8856bc8:	858a                	mv	a1,sp
{
    e8856bca:	f406                	sd	ra,40(sp)
	SockAddrSimplify( inSockAddr, &sip );
    e8856bcc:	ef1ff0ef          	jal	ra,e8856abc <SockAddrSimplify>
	if( sip.sa.sa_family == AF_INET )
    e8856bd0:	00114883          	lbu	a7,1(sp)
    e8856bd4:	4789                	li	a5,2
    e8856bd6:	00f89d63          	bne	a7,a5,e8856bf0 <SockAddrToDeviceID+0x2a>
	{
		deviceID = UINT64_C( 0x0400000000000000 ); // 4 = IPv4 address type.
		deviceID |= ntohl( sip.v4.sin_addr.s_addr );
    e8856bda:	4512                	lw	a0,4(sp)
    e8856bdc:	352300ef          	jal	ra,e8886f2e <lwip_htonl>
    e8856be0:	7c05350b          	extu	a0,a0,31,0
    e8856be4:	4785                	li	a5,1
    e8856be6:	17ea                	slli	a5,a5,0x3a
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 10 ] ) ) << 40;
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 11 ] ) ) << 32;
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 12 ] ) ) << 24;
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 13 ] ) ) << 16;
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 14 ] ) ) <<  8;
		deviceID |=               sip.v6.sin6_addr.s6_addr[ 15 ];
    e8856be8:	8d5d                	or	a0,a0,a5
	{
		dlogassert( "Bad sockaddr family: %d", sip.sa.sa_family );
		deviceID = 0;
	}
	return( deviceID );
}
    e8856bea:	70a2                	ld	ra,40(sp)
    e8856bec:	6145                	addi	sp,sp,48
    e8856bee:	8082                	ret
	else if( sip.sa.sa_family == AF_INET6 )
    e8856bf0:	47a9                	li	a5,10
    e8856bf2:	02f89f63          	bne	a7,a5,e8856c30 <SockAddrToDeviceID+0x6a>
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 14 ] ) ) <<  8;
    e8856bf6:	01614783          	lbu	a5,22(sp)
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[  9 ] ) ) << 48;
    e8856bfa:	01114503          	lbu	a0,17(sp)
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 14 ] ) ) <<  8;
    e8856bfe:	07a2                	slli	a5,a5,0x8
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[  9 ] ) ) << 48;
    e8856c00:	1542                	slli	a0,a0,0x30
		deviceID |=               sip.v6.sin6_addr.s6_addr[ 15 ];
    e8856c02:	8d5d                	or	a0,a0,a5
    e8856c04:	01714783          	lbu	a5,23(sp)
    e8856c08:	8d5d                	or	a0,a0,a5
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 10 ] ) ) << 40;
    e8856c0a:	01214783          	lbu	a5,18(sp)
    e8856c0e:	17a2                	slli	a5,a5,0x28
		deviceID |=               sip.v6.sin6_addr.s6_addr[ 15 ];
    e8856c10:	8d5d                	or	a0,a0,a5
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 11 ] ) ) << 32;
    e8856c12:	01314783          	lbu	a5,19(sp)
    e8856c16:	1782                	slli	a5,a5,0x20
		deviceID |=               sip.v6.sin6_addr.s6_addr[ 15 ];
    e8856c18:	8d5d                	or	a0,a0,a5
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 12 ] ) ) << 24;
    e8856c1a:	01414783          	lbu	a5,20(sp)
    e8856c1e:	07e2                	slli	a5,a5,0x18
		deviceID |=               sip.v6.sin6_addr.s6_addr[ 15 ];
    e8856c20:	8d5d                	or	a0,a0,a5
		deviceID |= ( (uint64_t)( sip.v6.sin6_addr.s6_addr[ 13 ] ) ) << 16;
    e8856c22:	01514783          	lbu	a5,21(sp)
    e8856c26:	07c2                	slli	a5,a5,0x10
		deviceID |=               sip.v6.sin6_addr.s6_addr[ 15 ];
    e8856c28:	8d5d                	or	a0,a0,a5
    e8856c2a:	478d                	li	a5,3
    e8856c2c:	17e6                	slli	a5,a5,0x39
    e8856c2e:	bf6d                	j	e8856be8 <SockAddrToDeviceID+0x22>
		dlogassert( "Bad sockaddr family: %d", sip.sa.sa_family );
    e8856c30:	6705                	lui	a4,0x1
    e8856c32:	4501                	li	a0,0
    e8856c34:	0006b817          	auipc	a6,0x6b
    e8856c38:	d2480813          	addi	a6,a6,-732 # e88c1958 <__PRETTY_FUNCTION__.10057+0xd8>
    e8856c3c:	0006b797          	auipc	a5,0x6b
    e8856c40:	04478793          	addi	a5,a5,68 # e88c1c80 <__PRETTY_FUNCTION__.10542>
    e8856c44:	0725                	addi	a4,a4,9
    e8856c46:	0006b697          	auipc	a3,0x6b
    e8856c4a:	e5268693          	addi	a3,a3,-430 # e88c1a98 <__PRETTY_FUNCTION__.10057+0x218>
    e8856c4e:	4601                	li	a2,0
    e8856c50:	4581                	li	a1,0
    e8856c52:	f76f70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		deviceID = 0;
    e8856c56:	4501                	li	a0,0
	return( deviceID );
    e8856c58:	bf49                	j	e8856bea <SockAddrToDeviceID+0x24>

00000000e8856c5a <GetInterfaceMACAddress>:
}
#endif

#if( TARGET_OS_LINUX )
OSStatus	GetInterfaceMACAddress( const char *inInterfaceName, uint8_t *outMACAddress )
{
    e8856c5a:	1141                	addi	sp,sp,-16
    e8856c5c:	e406                	sd	ra,8(sp)
    e8856c5e:	e022                	sd	s0,0(sp)
    e8856c60:	842e                	mv	s0,a1
	
	memcpy( outMACAddress, &ifr.ifr_hwaddr.sa_data, 6 );
exit:
	ForgetSocket( &sock );
	#else
	int index = netif_name_to_index(inInterfaceName);
    e8856c62:	487370ef          	jal	ra,e888e8e8 <netif_name_to_index>
	struct netif *netif = netif_get_by_index(index);
    e8856c66:	3cb370ef          	jal	ra,e888e830 <netif_get_by_index>
	if(netif != NULL)
    e8856c6a:	c519                	beqz	a0,e8856c78 <GetInterfaceMACAddress+0x1e>
	{
		err = 0;
		memcpy( outMACAddress, netif->hwaddr, 6 );
    e8856c6c:	10450593          	addi	a1,a0,260
    e8856c70:	4619                	li	a2,6
    e8856c72:	8522                	mv	a0,s0
    e8856c74:	72c250ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	}
	#endif
	return( err );
}
    e8856c78:	60a2                	ld	ra,8(sp)
    e8856c7a:	6402                	ld	s0,0(sp)
    e8856c7c:	4501                	li	a0,0
    e8856c7e:	0141                	addi	sp,sp,16
    e8856c80:	8082                	ret

00000000e8856c82 <SocketGetInterfaceInfo>:
{
    e8856c82:	7175                	addi	sp,sp,-144
    e8856c84:	e122                	sd	s0,128(sp)
    e8856c86:	fca6                	sd	s1,120(sp)
    e8856c88:	f8ca                	sd	s2,112(sp)
    e8856c8a:	f4ce                	sd	s3,104(sp)
    e8856c8c:	f0d2                	sd	s4,96(sp)
    e8856c8e:	ecd6                	sd	s5,88(sp)
    e8856c90:	e8da                	sd	s6,80(sp)
    e8856c92:	e4de                	sd	s7,72(sp)
    e8856c94:	e0e2                	sd	s8,64(sp)
    e8856c96:	fc66                	sd	s9,56(sp)
    e8856c98:	e506                	sd	ra,136(sp)
    e8856c9a:	842e                	mv	s0,a1
    e8856c9c:	8cb2                	mv	s9,a2
    e8856c9e:	8c36                	mv	s8,a3
    e8856ca0:	84ba                	mv	s1,a4
    e8856ca2:	8bbe                	mv	s7,a5
    e8856ca4:	8ac2                	mv	s5,a6
    e8856ca6:	8b46                	mv	s6,a7
    e8856ca8:	694a                	ld	s2,144(sp)
    e8856caa:	6a6a                	ld	s4,152(sp)
    e8856cac:	59fd                	li	s3,-1
	if( !IsValidSocket( inSock ) )
    e8856cae:	04055163          	bgez	a0,e8856cf0 <SocketGetInterfaceInfo+0x6e>
		tempSock = socket( AF_INET, SOCK_DGRAM, 0 );
    e8856cb2:	4601                	li	a2,0
    e8856cb4:	4589                	li	a1,2
    e8856cb6:	4509                	li	a0,2
    e8856cb8:	7692e0ef          	jal	ra,e8885c20 <lwip_socket>
		err = map_socket_creation_errno( tempSock );
    e8856cbc:	89aa                	mv	s3,a0
    e8856cbe:	02055963          	bgez	a0,e8856cf0 <SocketGetInterfaceInfo+0x6e>
    e8856cc2:	0008e797          	auipc	a5,0x8e
    e8856cc6:	96678793          	addi	a5,a5,-1690 # e88e4628 <lwip_errno>
    e8856cca:	4380                	lw	s0,0(a5)
    e8856ccc:	e401                	bnez	s0,e8856cd4 <SocketGetInterfaceInfo+0x52>
    e8856cce:	7479                	lui	s0,0xffffe
    e8856cd0:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
}
    e8856cd4:	8522                	mv	a0,s0
    e8856cd6:	60aa                	ld	ra,136(sp)
    e8856cd8:	640a                	ld	s0,128(sp)
    e8856cda:	74e6                	ld	s1,120(sp)
    e8856cdc:	7946                	ld	s2,112(sp)
    e8856cde:	79a6                	ld	s3,104(sp)
    e8856ce0:	7a06                	ld	s4,96(sp)
    e8856ce2:	6ae6                	ld	s5,88(sp)
    e8856ce4:	6b46                	ld	s6,80(sp)
    e8856ce6:	6ba6                	ld	s7,72(sp)
    e8856ce8:	6c06                	ld	s8,64(sp)
    e8856cea:	7ce2                	ld	s9,56(sp)
    e8856cec:	6149                	addi	sp,sp,144
    e8856cee:	8082                	ret
	if( !inIfName )
    e8856cf0:	e831                	bnez	s0,e8856d44 <SocketGetInterfaceInfo+0xc2>
		len = (socklen_t) sizeof( sip );
    e8856cf2:	47f1                	li	a5,28
		err = getsockname( inSock, &sip.sa, &len );
    e8856cf4:	0050                	addi	a2,sp,4
    e8856cf6:	080c                	addi	a1,sp,16
		len = (socklen_t) sizeof( sip );
    e8856cf8:	c23e                	sw	a5,4(sp)
		err = getsockname( inSock, &sip.sa, &len );
    e8856cfa:	3bc2f0ef          	jal	ra,e88860b6 <lwip_getsockname>
		err = map_socket_noerr_errno( inSock, err );
    e8856cfe:	c10d                	beqz	a0,e8856d20 <SocketGetInterfaceInfo+0x9e>
    e8856d00:	0008e797          	auipc	a5,0x8e
    e8856d04:	92878793          	addi	a5,a5,-1752 # e88e4628 <lwip_errno>
    e8856d08:	4380                	lw	s0,0(a5)
    e8856d0a:	e401                	bnez	s0,e8856d12 <SocketGetInterfaceInfo+0x90>
    e8856d0c:	7479                	lui	s0,0xffffe
    e8856d0e:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	ForgetSocket( &tempSock );
    e8856d12:	57fd                	li	a5,-1
    e8856d14:	fcf980e3          	beq	s3,a5,e8856cd4 <SocketGetInterfaceInfo+0x52>
    e8856d18:	854e                	mv	a0,s3
    e8856d1a:	4882e0ef          	jal	ra,e88851a2 <lwip_close>
	return( err );
    e8856d1e:	bf5d                	j	e8856cd4 <SocketGetInterfaceInfo+0x52>
		err = SockAddrSimplify( &sip, &sip );
    e8856d20:	080c                	addi	a1,sp,16
    e8856d22:	852e                	mv	a0,a1
    e8856d24:	d99ff0ef          	jal	ra,e8856abc <SockAddrSimplify>
    e8856d28:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e8856d2a:	f565                	bnez	a0,e8856d12 <SocketGetInterfaceInfo+0x90>
		if_indextoname(INTERFACE_INDEX,ifname);
    e8856d2c:	002c                	addi	a1,sp,8
    e8856d2e:	4509                	li	a0,2
    e8856d30:	1322d0ef          	jal	ra,e8883e62 <lwip_if_indextoname>
		if( outIfName )  strlcpy( outIfName, inIfName, IF_NAMESIZE + 1 );
    e8856d34:	000c8763          	beqz	s9,e8856d42 <SocketGetInterfaceInfo+0xc0>
    e8856d38:	461d                	li	a2,7
    e8856d3a:	002c                	addi	a1,sp,8
    e8856d3c:	8566                	mv	a0,s9
    e8856d3e:	541080ef          	jal	ra,e885fa7e <strlcpy>
		inIfName = ifname;
    e8856d42:	0020                	addi	s0,sp,8
	else if( outMACAddress )
    e8856d44:	c891                	beqz	s1,e8856d58 <SocketGetInterfaceInfo+0xd6>
		memset( outMACAddress, 0, 6 );
    e8856d46:	4581                	li	a1,0
    e8856d48:	8526                	mv	a0,s1
    e8856d4a:	4619                	li	a2,6
    e8856d4c:	648250ef          	jal	ra,e887c394 <eLIBs_memset>
		GetInterfaceMACAddress( inIfName, outMACAddress );
    e8856d50:	85a6                	mv	a1,s1
    e8856d52:	8522                	mv	a0,s0
    e8856d54:	f07ff0ef          	jal	ra,e8856c5a <GetInterfaceMACAddress>
	if( outIfIndex )
    e8856d58:	000c0763          	beqz	s8,e8856d66 <SocketGetInterfaceInfo+0xe4>
		*outIfIndex = if_nametoindex( inIfName );
    e8856d5c:	8522                	mv	a0,s0
    e8856d5e:	13c2d0ef          	jal	ra,e8883e9a <lwip_if_nametoindex>
    e8856d62:	00ac2023          	sw	a0,0(s8)
	if( outMedia || outOtherFlags || outTransportType )
    e8856d66:	000b8463          	beqz	s7,e8856d6e <SocketGetInterfaceInfo+0xec>
			if( outMedia ) *outMedia = 0;
    e8856d6a:	000ba023          	sw	zero,0(s7)
	if( outFlags )
    e8856d6e:	000a8a63          	beqz	s5,e8856d82 <SocketGetInterfaceInfo+0x100>
		netif = netif_get_by_index(INTERFACE_INDEX);
    e8856d72:	4509                	li	a0,2
    e8856d74:	2bd370ef          	jal	ra,e888e830 <netif_get_by_index>
		if( netif )
    e8856d78:	cd01                	beqz	a0,e8856d90 <SocketGetInterfaceInfo+0x10e>
			*outFlags = netif->flags;
    e8856d7a:	10b54783          	lbu	a5,267(a0)
    e8856d7e:	00faa023          	sw	a5,0(s5)
	if( outExtendedFlags || outTransportType )
    e8856d82:	000b1a63          	bnez	s6,e8856d96 <SocketGetInterfaceInfo+0x114>
    e8856d86:	020a1263          	bnez	s4,e8856daa <SocketGetInterfaceInfo+0x128>
	if( outOtherFlags ) *outOtherFlags = otherFlags;
    e8856d8a:	00091a63          	bnez	s2,e8856d9e <SocketGetInterfaceInfo+0x11c>
    e8856d8e:	a821                	j	e8856da6 <SocketGetInterfaceInfo+0x124>
				*outFlags = 0;
    e8856d90:	000aa023          	sw	zero,0(s5)
    e8856d94:	b7fd                	j	e8856d82 <SocketGetInterfaceInfo+0x100>
		if( outExtendedFlags ) *outExtendedFlags = eflags;
    e8856d96:	000b3023          	sd	zero,0(s6)
	if( outOtherFlags ) *outOtherFlags = otherFlags;
    e8856d9a:	00090463          	beqz	s2,e8856da2 <SocketGetInterfaceInfo+0x120>
    e8856d9e:	00093023          	sd	zero,0(s2)
	if( outTransportType )
    e8856da2:	000a1663          	bnez	s4,e8856dae <SocketGetInterfaceInfo+0x12c>
	err = kNoErr;
    e8856da6:	4401                	li	s0,0
    e8856da8:	b7ad                	j	e8856d12 <SocketGetInterfaceInfo+0x90>
	if( outOtherFlags ) *outOtherFlags = otherFlags;
    e8856daa:	fe091ae3          	bnez	s2,e8856d9e <SocketGetInterfaceInfo+0x11c>
		else											*outTransportType = kNetTransportType_Ethernet;
    e8856dae:	4785                	li	a5,1
    e8856db0:	00fa2023          	sw	a5,0(s4) # 1000 <memcmp-0xe87ff000>
    e8856db4:	bfcd                	j	e8856da6 <SocketGetInterfaceInfo+0x124>

00000000e8856db6 <_NetworkChangeListenerStop>:
	CFRetain( me );
	dispatch_async_f( me->queue, me, _NetworkChangeListenerStop );
}

static void	_NetworkChangeListenerStop( void *inArg )
{
    e8856db6:	1141                	addi	sp,sp,-16
    e8856db8:	e022                	sd	s0,0(sp)
    e8856dba:	e406                	sd	ra,8(sp)
    e8856dbc:	842a                	mv	s0,a0
	CFRelease( me );
}

static void	_NetworkChangeListenerStop2( NetworkChangeListenerRef me )
{
	dispatch_source_forget( &me->coalesceTimer );
    e8856dbe:	7108                	ld	a0,32(a0)
    e8856dc0:	c901                	beqz	a0,e8856dd0 <_NetworkChangeListenerStop+0x1a>
    e8856dc2:	e85f80ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8856dc6:	7008                	ld	a0,32(s0)
    e8856dc8:	c89f70ef          	jal	ra,e884ea50 <dispatch_release>
    e8856dcc:	02043023          	sd	zero,32(s0)
	dispatch_source_forget( &me->routingSource );
    e8856dd0:	6c08                	ld	a0,24(s0)
    e8856dd2:	c901                	beqz	a0,e8856de2 <_NetworkChangeListenerStop+0x2c>
    e8856dd4:	e73f80ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8856dd8:	6c08                	ld	a0,24(s0)
    e8856dda:	c77f70ef          	jal	ra,e884ea50 <dispatch_release>
    e8856dde:	00043c23          	sd	zero,24(s0)
	if( me->handlerFunc ) me->handlerFunc( kNetworkEvent_Stopped, me->handlerArg );
    e8856de2:	741c                	ld	a5,40(s0)
    e8856de4:	c781                	beqz	a5,e8856dec <_NetworkChangeListenerStop+0x36>
    e8856de6:	780c                	ld	a1,48(s0)
    e8856de8:	4505                	li	a0,1
    e8856dea:	9782                	jalr	a5
	CFRelease( me );
    e8856dec:	8522                	mv	a0,s0
}
    e8856dee:	6402                	ld	s0,0(sp)
    e8856df0:	60a2                	ld	ra,8(sp)
    e8856df2:	0141                	addi	sp,sp,16
	CFRelease( me );
    e8856df4:	b56f006f          	j	e884714a <CFRelease>

00000000e8856df8 <NetworkChangeListenerSetHandler>:
	me->handlerFunc = inHandler;
    e8856df8:	f50c                	sd	a1,40(a0)
	me->handlerArg  = inArg;
    e8856dfa:	f910                	sd	a2,48(a0)
}
    e8856dfc:	8082                	ret

00000000e8856dfe <NetworkChangeListenerStop>:
{
    e8856dfe:	1101                	addi	sp,sp,-32
    e8856e00:	ec06                	sd	ra,24(sp)
    e8856e02:	e42a                	sd	a0,8(sp)
	CFRetain( me );
    e8856e04:	b42f00ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( me->queue, me, _NetworkChangeListenerStop );
    e8856e08:	65a2                	ld	a1,8(sp)
}
    e8856e0a:	60e2                	ld	ra,24(sp)
	dispatch_async_f( me->queue, me, _NetworkChangeListenerStop );
    e8856e0c:	00000617          	auipc	a2,0x0
    e8856e10:	faa60613          	addi	a2,a2,-86 # e8856db6 <_NetworkChangeListenerStop>
    e8856e14:	6588                	ld	a0,8(a1)
}
    e8856e16:	6105                	addi	sp,sp,32
	dispatch_async_f( me->queue, me, _NetworkChangeListenerStop );
    e8856e18:	e09f706f          	j	e884ec20 <dispatch_async_f>

00000000e8856e1c <_PairingSessionGetTypeID>:
	dispatch_once_f( &gPairingSessionInitOnce, NULL, _PairingSessionGetTypeID );
	return( gPairingSessionTypeID );
}

static void _PairingSessionGetTypeID( void *inContext )
{
    e8856e1c:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gPairingSessionTypeID = _CFRuntimeRegisterClass( &kPairingSessionClass );
    e8856e1e:	0006c517          	auipc	a0,0x6c
    e8856e22:	ed250513          	addi	a0,a0,-302 # e88c2cf0 <kPairingSessionClass>
{
    e8856e26:	e406                	sd	ra,8(sp)
	gPairingSessionTypeID = _CFRuntimeRegisterClass( &kPairingSessionClass );
    e8856e28:	927f00ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8856e2c:	0008d797          	auipc	a5,0x8d
    e8856e30:	f0a7a623          	sw	a0,-244(a5) # e88e3d38 <gPairingSessionTypeID>
	check( gPairingSessionTypeID != _kCFRuntimeNotATypeID );
}
    e8856e34:	60a2                	ld	ra,8(sp)
    e8856e36:	0141                	addi	sp,sp,16
    e8856e38:	8082                	ret

00000000e8856e3a <_PairingSessionReset>:
//===========================================================================================================================
//	_PairingSessionReset
//===========================================================================================================================

static void	_PairingSessionReset( PairingSessionRef me )
{
    e8856e3a:	1141                	addi	sp,sp,-16
    e8856e3c:	e022                	sd	s0,0(sp)
    e8856e3e:	e406                	sd	ra,8(sp)
    e8856e40:	842a                	mv	s0,a0
	me->state = kPairingStateInvalid;
    e8856e42:	06050023          	sb	zero,96(a0)
	ForgetPtrLen( &me->inputFragmentBuf, &me->inputFragmentLen );
    e8856e46:	7528                	ld	a0,104(a0)
    e8856e48:	c509                	beqz	a0,e8856e52 <_PairingSessionReset+0x18>
    e8856e4a:	4b6250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856e4e:	06043423          	sd	zero,104(s0)
	ForgetPtrLen( &me->outputFragmentBuf, &me->outputFragmentLen );
    e8856e52:	7c28                	ld	a0,120(s0)
	ForgetPtrLen( &me->inputFragmentBuf, &me->inputFragmentLen );
    e8856e54:	06043823          	sd	zero,112(s0)
	ForgetPtrLen( &me->outputFragmentBuf, &me->outputFragmentLen );
    e8856e58:	c509                	beqz	a0,e8856e62 <_PairingSessionReset+0x28>
    e8856e5a:	4a6250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856e5e:	06043c23          	sd	zero,120(s0)
	me->outputFragmentOffset = 0;
	me->outputDone = false;
	ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e8856e62:	6c48                	ld	a0,152(s0)
	ForgetPtrLen( &me->outputFragmentBuf, &me->outputFragmentLen );
    e8856e64:	08043023          	sd	zero,128(s0)
	me->outputFragmentOffset = 0;
    e8856e68:	08043423          	sd	zero,136(s0)
	me->outputDone = false;
    e8856e6c:	08040823          	sb	zero,144(s0)
	ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e8856e70:	c509                	beqz	a0,e8856e7a <_PairingSessionReset+0x40>
    e8856e72:	48e250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856e76:	08043c23          	sd	zero,152(s0)
    e8856e7a:	0a043023          	sd	zero,160(s0)
	MemZeroSecure( me->key, sizeof( me->key ) );
    e8856e7e:	0da40793          	addi	a5,s0,218
    e8856e82:	0fa40713          	addi	a4,s0,250
    e8856e86:	06e79963          	bne	a5,a4,e8856ef8 <_PairingSessionReset+0xbe>
	SRPForget( &me->srpCtx );
    e8856e8a:	1e043503          	ld	a0,480(s0)
    e8856e8e:	c509                	beqz	a0,e8856e98 <_PairingSessionReset+0x5e>
    e8856e90:	254070ef          	jal	ra,e885e0e4 <SRPDelete_libsrp>
    e8856e94:	1e043023          	sd	zero,480(s0)
	ForgetPtrLen( &me->srpPKPtr, &me->srpPKLen );
    e8856e98:	1e843503          	ld	a0,488(s0)
    e8856e9c:	c509                	beqz	a0,e8856ea6 <_PairingSessionReset+0x6c>
    e8856e9e:	462250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856ea2:	1e043423          	sd	zero,488(s0)
	ForgetPtrLen( &me->srpSaltPtr, &me->srpSaltLen );
    e8856ea6:	1f843503          	ld	a0,504(s0)
	ForgetPtrLen( &me->srpPKPtr, &me->srpPKLen );
    e8856eaa:	1e043823          	sd	zero,496(s0)
	ForgetPtrLen( &me->srpSaltPtr, &me->srpSaltLen );
    e8856eae:	c509                	beqz	a0,e8856eb8 <_PairingSessionReset+0x7e>
    e8856eb0:	450250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856eb4:	1e043c23          	sd	zero,504(s0)
	ForgetPtrLenSecure( &me->srpSharedSecretPtr, &me->srpSharedSecretLen );
    e8856eb8:	20843783          	ld	a5,520(s0)
	ForgetPtrLen( &me->srpSaltPtr, &me->srpSaltLen );
    e8856ebc:	20043023          	sd	zero,512(s0)
	ForgetPtrLenSecure( &me->srpSharedSecretPtr, &me->srpSharedSecretLen );
    e8856ec0:	ef9d                	bnez	a5,e8856efe <_PairingSessionReset+0xc4>
    e8856ec2:	20843503          	ld	a0,520(s0)
    e8856ec6:	e521                	bnez	a0,e8856f0e <_PairingSessionReset+0xd4>
    e8856ec8:	20043823          	sd	zero,528(s0)
	MemZeroSecure( me->ourCurveSK, sizeof( me->ourCurveSK ) );
    e8856ecc:	11a40793          	addi	a5,s0,282
    e8856ed0:	13a40713          	addi	a4,s0,314
    e8856ed4:	04e79263          	bne	a5,a4,e8856f18 <_PairingSessionReset+0xde>
	MemZeroSecure( me->ourEdSK, sizeof( me->ourEdSK ) );
    e8856ed8:	15a40793          	addi	a5,s0,346
    e8856edc:	17a40713          	addi	a4,s0,378
    e8856ee0:	02e79f63          	bne	a5,a4,e8856f1e <_PairingSessionReset+0xe4>
	MemZeroSecure( me->sharedSecret, sizeof( me->sharedSecret ) );
    e8856ee4:	1ba40793          	addi	a5,s0,442
    e8856ee8:	1da40413          	addi	s0,s0,474
    e8856eec:	02879c63          	bne	a5,s0,e8856f24 <_PairingSessionReset+0xea>
}
    e8856ef0:	60a2                	ld	ra,8(sp)
    e8856ef2:	6402                	ld	s0,0(sp)
    e8856ef4:	0141                	addi	sp,sp,16
    e8856ef6:	8082                	ret
    e8856ef8:	1817d00b          	sbia	zero,(a5),1,0
    e8856efc:	b769                	j	e8856e86 <_PairingSessionReset+0x4c>
    e8856efe:	21043703          	ld	a4,528(s0)
    e8856f02:	973e                	add	a4,a4,a5
    e8856f04:	fae78fe3          	beq	a5,a4,e8856ec2 <_PairingSessionReset+0x88>
    e8856f08:	1817d00b          	sbia	zero,(a5),1,0
    e8856f0c:	bfe5                	j	e8856f04 <_PairingSessionReset+0xca>
	ForgetPtrLenSecure( &me->srpSharedSecretPtr, &me->srpSharedSecretLen );
    e8856f0e:	3f2250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856f12:	20043423          	sd	zero,520(s0)
    e8856f16:	bf4d                	j	e8856ec8 <_PairingSessionReset+0x8e>
    e8856f18:	1817d00b          	sbia	zero,(a5),1,0
    e8856f1c:	bf65                	j	e8856ed4 <_PairingSessionReset+0x9a>
    e8856f1e:	1817d00b          	sbia	zero,(a5),1,0
    e8856f22:	bf7d                	j	e8856ee0 <_PairingSessionReset+0xa6>
    e8856f24:	1817d00b          	sbia	zero,(a5),1,0
    e8856f28:	b7d1                	j	e8856eec <_PairingSessionReset+0xb2>

00000000e8856f2a <_PairingSessionFinalize>:
{
    e8856f2a:	1141                	addi	sp,sp,-16
    e8856f2c:	e022                	sd	s0,0(sp)
    e8856f2e:	e406                	sd	ra,8(sp)
	if( me->showingSetupCode )
    e8856f30:	0d954783          	lbu	a5,217(a0)
{
    e8856f34:	842a                	mv	s0,a0
	if( me->showingSetupCode )
    e8856f36:	c799                	beqz	a5,e8856f44 <_PairingSessionFinalize+0x1a>
		if( me->delegate.hideSetupCode_f ) me->delegate.hideSetupCode_f( me->delegate.context );
    e8856f38:	711c                	ld	a5,32(a0)
    e8856f3a:	c399                	beqz	a5,e8856f40 <_PairingSessionFinalize+0x16>
    e8856f3c:	6908                	ld	a0,16(a0)
    e8856f3e:	9782                	jalr	a5
		me->showingSetupCode = false;
    e8856f40:	0c040ca3          	sb	zero,217(s0)
	_PairingSessionReset( me );
    e8856f44:	8522                	mv	a0,s0
    e8856f46:	ef5ff0ef          	jal	ra,e8856e3a <_PairingSessionReset>
	ForgetPtrLen( &me->identifierPtr, &me->identifierLen );
    e8856f4a:	7448                	ld	a0,168(s0)
    e8856f4c:	c509                	beqz	a0,e8856f56 <_PairingSessionFinalize+0x2c>
    e8856f4e:	3b2250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856f52:	0a043423          	sd	zero,168(s0)
	ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8856f56:	7c48                	ld	a0,184(s0)
	ForgetPtrLen( &me->identifierPtr, &me->identifierLen );
    e8856f58:	0a043823          	sd	zero,176(s0)
	ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8856f5c:	c509                	beqz	a0,e8856f66 <_PairingSessionFinalize+0x3c>
    e8856f5e:	3a2250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856f62:	0a043c23          	sd	zero,184(s0)
	ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e8856f66:	6468                	ld	a0,200(s0)
	ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8856f68:	0c043023          	sd	zero,192(s0)
	ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e8856f6c:	c509                	beqz	a0,e8856f76 <_PairingSessionFinalize+0x4c>
    e8856f6e:	392250ef          	jal	ra,e887c300 <eLIBs_free>
    e8856f72:	0c043423          	sd	zero,200(s0)
	ForgetCF( &me->keychainAccessGroup );
    e8856f76:	22043503          	ld	a0,544(s0)
	ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e8856f7a:	0c043823          	sd	zero,208(s0)
	ForgetCF( &me->keychainAccessGroup );
    e8856f7e:	c509                	beqz	a0,e8856f88 <_PairingSessionFinalize+0x5e>
    e8856f80:	9caf00ef          	jal	ra,e884714a <CFRelease>
    e8856f84:	22043023          	sd	zero,544(s0)
	ForgetCF( &me->keychainIdentityLabel );
    e8856f88:	22843503          	ld	a0,552(s0)
    e8856f8c:	c509                	beqz	a0,e8856f96 <_PairingSessionFinalize+0x6c>
    e8856f8e:	9bcf00ef          	jal	ra,e884714a <CFRelease>
    e8856f92:	22043423          	sd	zero,552(s0)
	ForgetCF( &me->keychainIdentityDesc );
    e8856f96:	23843503          	ld	a0,568(s0)
    e8856f9a:	c509                	beqz	a0,e8856fa4 <_PairingSessionFinalize+0x7a>
    e8856f9c:	9aef00ef          	jal	ra,e884714a <CFRelease>
    e8856fa0:	22043c23          	sd	zero,568(s0)
	ForgetCF( &me->keychainPeerLabel );
    e8856fa4:	24043503          	ld	a0,576(s0)
    e8856fa8:	c509                	beqz	a0,e8856fb2 <_PairingSessionFinalize+0x88>
    e8856faa:	9a0f00ef          	jal	ra,e884714a <CFRelease>
    e8856fae:	24043023          	sd	zero,576(s0)
	ForgetCF( &me->keychainPeerDesc );
    e8856fb2:	25043503          	ld	a0,592(s0)
    e8856fb6:	c509                	beqz	a0,e8856fc0 <_PairingSessionFinalize+0x96>
    e8856fb8:	992f00ef          	jal	ra,e884714a <CFRelease>
    e8856fbc:	24043823          	sd	zero,592(s0)
	MemZeroSecure( ( (uint8_t *) me ) + sizeof( me->base ), sizeof( *me ) - sizeof( me->base ) );
    e8856fc0:	00840793          	addi	a5,s0,8
    e8856fc4:	26040413          	addi	s0,s0,608
    e8856fc8:	00879663          	bne	a5,s0,e8856fd4 <_PairingSessionFinalize+0xaa>
}
    e8856fcc:	60a2                	ld	ra,8(sp)
    e8856fce:	6402                	ld	s0,0(sp)
    e8856fd0:	0141                	addi	sp,sp,16
    e8856fd2:	8082                	ret
    e8856fd4:	1817d00b          	sbia	zero,(a5),1,0
    e8856fd8:	bfc5                	j	e8856fc8 <_PairingSessionFinalize+0x9e>

00000000e8856fda <_ProgressOutput>:
		uint8_t *			inOutputPtr, 
		size_t				inOutputLen, 
		uint8_t **			outOutputPtr, 
		size_t *			outOutputLen, 
		Boolean *			ioDone )
{
    e8856fda:	7165                	addi	sp,sp,-400
    e8856fdc:	fea6                	sd	s1,376(sp)
    e8856fde:	84ae                	mv	s1,a1
	OSStatus		err;
	TLV8Buffer		tlv;
	
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8856fe0:	6591                	lui	a1,0x4
{
    e8856fe2:	e322                	sd	s0,384(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8856fe4:	e8058593          	addi	a1,a1,-384 # 3e80 <memcmp-0xe87fc180>
{
    e8856fe8:	842a                	mv	s0,a0
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8856fea:	0808                	addi	a0,sp,16
{
    e8856fec:	faca                	sd	s2,368(sp)
    e8856fee:	f6ce                	sd	s3,360(sp)
    e8856ff0:	f2d2                	sd	s4,352(sp)
    e8856ff2:	e432                	sd	a2,8(sp)
    e8856ff4:	893e                	mv	s2,a5
    e8856ff6:	e706                	sd	ra,392(sp)
    e8856ff8:	89b6                	mv	s3,a3
    e8856ffa:	8a3a                	mv	s4,a4
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8856ffc:	7ad090ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	
	// If the doesn't need to be fragmented then return it unmodified.
	
	if( inOutputLen <= me->mtuTotal )
    e8857000:	6c3c                	ld	a5,88(s0)
    e8857002:	6622                	ld	a2,8(sp)
    e8857004:	02c7e363          	bltu	a5,a2,e885702a <_ProgressOutput+0x50>
	{
		*outOutputPtr = inOutputPtr;
    e8857008:	0099b023          	sd	s1,0(s3)
		*outOutputLen = inOutputLen;
		err = kNoErr;
    e885700c:	4401                	li	s0,0
		*outOutputLen = inOutputLen;
    e885700e:	00ca3023          	sd	a2,0(s4)
	require_noerr( err, exit );
	check( *outOutputLen <= me->mtuTotal );
	*ioDone = false;
	
exit:
	TLV8BufferFree( &tlv );
    e8857012:	0808                	addi	a0,sp,16
    e8857014:	7a7090ef          	jal	ra,e8860fba <TLV8BufferFree>
	return( err );
}
    e8857018:	74f6                	ld	s1,376(sp)
    e885701a:	8522                	mv	a0,s0
    e885701c:	60ba                	ld	ra,392(sp)
    e885701e:	641a                	ld	s0,384(sp)
    e8857020:	7956                	ld	s2,368(sp)
    e8857022:	79b6                	ld	s3,360(sp)
    e8857024:	7a16                	ld	s4,352(sp)
    e8857026:	6159                	addi	sp,sp,400
    e8857028:	8082                	ret
	require_action( !me->outputFragmentBuf && ( me->outputFragmentLen == 0 ), exit, err = kExecutionStateErr );
    e885702a:	7c3c                	ld	a5,120(s0)
    e885702c:	ef85                	bnez	a5,e8857064 <_ProgressOutput+0x8a>
    e885702e:	605c                	ld	a5,128(s0)
    e8857030:	eb95                	bnez	a5,e8857064 <_ProgressOutput+0x8a>
	me->outputFragmentOffset	= me->mtuPayload;
    e8857032:	6834                	ld	a3,80(s0)
	me->outputFragmentLen		= inOutputLen;
    e8857034:	e050                	sd	a2,128(s0)
	me->outputFragmentBuf		= inOutputPtr;
    e8857036:	fc24                	sd	s1,120(s0)
	me->outputFragmentOffset	= me->mtuPayload;
    e8857038:	e454                	sd	a3,136(s0)
	me->outputDone				= *ioDone;
    e885703a:	00094783          	lbu	a5,0(s2)
	err = TLV8BufferAppend( &tlv, kTLVType_FragmentData, inOutputPtr, me->mtuPayload );
    e885703e:	8626                	mv	a2,s1
    e8857040:	45b1                	li	a1,12
	me->outputDone				= *ioDone;
    e8857042:	08f40823          	sb	a5,144(s0)
	err = TLV8BufferAppend( &tlv, kTLVType_FragmentData, inOutputPtr, me->mtuPayload );
    e8857046:	0808                	addi	a0,sp,16
    e8857048:	793090ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885704c:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e885704e:	f171                	bnez	a0,e8857012 <_ProgressOutput+0x38>
	err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8857050:	8652                	mv	a2,s4
    e8857052:	85ce                	mv	a1,s3
    e8857054:	0808                	addi	a0,sp,16
    e8857056:	0c20a0ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885705a:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e885705c:	f95d                	bnez	a0,e8857012 <_ProgressOutput+0x38>
	*ioDone = false;
    e885705e:	00090023          	sb	zero,0(s2)
    e8857062:	bf45                	j	e8857012 <_ProgressOutput+0x38>
	require_action( !me->outputFragmentBuf && ( me->outputFragmentLen == 0 ), exit, err = kExecutionStateErr );
    e8857064:	7479                	lui	s0,0xffffe
    e8857066:	5d140413          	addi	s0,s0,1489 # ffffffffffffe5d1 <__DRAM0_INF_BASE+0xffffffff0000e5d1>
    e885706a:	b765                	j	e8857012 <_ProgressOutput+0x38>

00000000e885706c <_PairingSessionDeleteIdentity>:
//===========================================================================================================================
//	_PairingSessionDeleteIdentity
//===========================================================================================================================

static OSStatus	_PairingSessionDeleteIdentity( PairingSessionRef me )
{
    e885706c:	1101                	addi	sp,sp,-32
	return( KeychainDeleteFormatted( 
    e885706e:	00046797          	auipc	a5,0x46
    e8857072:	43278793          	addi	a5,a5,1074 # e889d4a0 <icmp6_param_problem+0x432>
{
    e8857076:	ec06                	sd	ra,24(sp)
	return( KeychainDeleteFormatted( 
    e8857078:	e03e                	sd	a5,0(sp)
    e885707a:	22853803          	ld	a6,552(a0)
    e885707e:	23052703          	lw	a4,560(a0)
    e8857082:	00046897          	auipc	a7,0x46
    e8857086:	39688893          	addi	a7,a7,918 # e889d418 <icmp6_param_problem+0x3aa>
    e885708a:	00046797          	auipc	a5,0x46
    e885708e:	3a678793          	addi	a5,a5,934 # e889d430 <icmp6_param_problem+0x3c2>
    e8857092:	00046697          	auipc	a3,0x46
    e8857096:	3b668693          	addi	a3,a3,950 # e889d448 <icmp6_param_problem+0x3da>
    e885709a:	00046617          	auipc	a2,0x46
    e885709e:	3c660613          	addi	a2,a2,966 # e889d460 <icmp6_param_problem+0x3f2>
    e88570a2:	00046597          	auipc	a1,0x46
    e88570a6:	3e658593          	addi	a1,a1,998 # e889d488 <icmp6_param_problem+0x41a>
    e88570aa:	0006b517          	auipc	a0,0x6b
    e88570ae:	fd650513          	addi	a0,a0,-42 # e88c2080 <__PRETTY_FUNCTION__.9902+0x3e8>
    e88570b2:	9a4fc0ef          	jal	ra,e8853256 <KeychainDeleteFormatted>
		"}", 
		kSecClass,			kSecClassGenericPassword, 
		kSecAttrType,		me->keychainIdentityType, 
		kSecAttrService,	me->keychainIdentityLabel, 
		kSecMatchLimit,		kSecMatchLimitAll ) );
}
    e88570b6:	60e2                	ld	ra,24(sp)
    e88570b8:	6105                	addi	sp,sp,32
    e88570ba:	8082                	ret

00000000e88570bc <_PairingSessionCopyIdentityKeychain>:
//
//	Assumes global pairing lock is held.
//===========================================================================================================================

static OSStatus	_PairingSessionCopyIdentityKeychain( PairingSessionRef me, char **outIdentifier, uint8_t *outPK, uint8_t *outSK )
{
    e88570bc:	7111                	addi	sp,sp,-256
	char *				identifier;
	char				pkAndSKHex[ 132 ];
	const char *		src;
	const char *		end;
	
	identity = (CFDictionaryRef) KeychainCopyMatchingFormatted( &err, 
    e88570be:	0007e717          	auipc	a4,0x7e
    e88570c2:	c1270713          	addi	a4,a4,-1006 # e88d4cd0 <kCFLBooleanTrue>
{
    e88570c6:	f5a6                	sd	s1,232(sp)
    e88570c8:	f1ca                	sd	s2,224(sp)
    e88570ca:	e9d2                	sd	s4,208(sp)
    e88570cc:	fd86                	sd	ra,248(sp)
    e88570ce:	f9a2                	sd	s0,240(sp)
    e88570d0:	edce                	sd	s3,216(sp)
	identity = (CFDictionaryRef) KeychainCopyMatchingFormatted( &err, 
    e88570d2:	6318                	ld	a4,0(a4)
{
    e88570d4:	8936                	mv	s2,a3
    e88570d6:	84ae                	mv	s1,a1
    e88570d8:	8a32                	mv	s4,a2
	identity = (CFDictionaryRef) KeychainCopyMatchingFormatted( &err, 
    e88570da:	22053783          	ld	a5,544(a0)
    e88570de:	23052883          	lw	a7,560(a0)
    e88570e2:	86ba                	mv	a3,a4
    e88570e4:	e219                	bnez	a2,e88570ea <_PairingSessionCopyIdentityKeychain+0x2e>
    e88570e6:	4120168b          	mveqz	a3,zero,s2
    e88570ea:	ec3a                	sd	a4,24(sp)
    e88570ec:	00046717          	auipc	a4,0x46
    e88570f0:	40c70713          	addi	a4,a4,1036 # e889d4f8 <icmp6_param_problem+0x48a>
    e88570f4:	e83a                	sd	a4,16(sp)
    e88570f6:	00046717          	auipc	a4,0x46
    e88570fa:	42270713          	addi	a4,a4,1058 # e889d518 <icmp6_param_problem+0x4aa>
    e88570fe:	f436                	sd	a3,40(sp)
    e8857100:	e43a                	sd	a4,8(sp)
    e8857102:	00046697          	auipc	a3,0x46
    e8857106:	3de68693          	addi	a3,a3,990 # e889d4e0 <icmp6_param_problem+0x472>
    e885710a:	00046717          	auipc	a4,0x46
    e885710e:	43670713          	addi	a4,a4,1078 # e889d540 <icmp6_param_problem+0x4d2>
    e8857112:	f036                	sd	a3,32(sp)
    e8857114:	e03a                	sd	a4,0(sp)
    e8857116:	00046817          	auipc	a6,0x46
    e885711a:	33280813          	addi	a6,a6,818 # e889d448 <icmp6_param_problem+0x3da>
    e885711e:	00046717          	auipc	a4,0x46
    e8857122:	3a270713          	addi	a4,a4,930 # e889d4c0 <icmp6_param_problem+0x452>
    e8857126:	00046697          	auipc	a3,0x46
    e885712a:	33a68693          	addi	a3,a3,826 # e889d460 <icmp6_param_problem+0x3f2>
    e885712e:	00046617          	auipc	a2,0x46
    e8857132:	35a60613          	addi	a2,a2,858 # e889d488 <icmp6_param_problem+0x41a>
    e8857136:	0006b597          	auipc	a1,0x6b
    e885713a:	ca258593          	addi	a1,a1,-862 # e88c1dd8 <__PRETTY_FUNCTION__.9902+0x140>
    e885713e:	1848                	addi	a0,sp,52
    e8857140:	8cafc0ef          	jal	ra,e885320a <KeychainCopyMatchingFormatted>
    e8857144:	89aa                	mv	s3,a0
		#endif
		kSecAttrType,			me->keychainIdentityType, 
		kSecAttrSynchronizable,	kSecAttrSynchronizableAny, 
		kSecReturnAttributes,	kCFBooleanTrue, 
		kSecReturnData,			( outPK || outSK ) ? kCFBooleanTrue : NULL );
	require_noerr_quiet( err, exit );
    e8857146:	57d2                	lw	a5,52(sp)
    e8857148:	00a0                	addi	s0,sp,72
    e885714a:	e7b5                	bnez	a5,e88571b6 <_PairingSessionCopyIdentityKeychain+0xfa>
	
	if( outIdentifier )
    e885714c:	c899                	beqz	s1,e8857162 <_PairingSessionCopyIdentityKeychain+0xa6>
	{
		identifier = CFDictionaryCopyCString( identity, kSecAttrAccount, &err );
    e885714e:	1850                	addi	a2,sp,52
    e8857150:	00046597          	auipc	a1,0x46
    e8857154:	41058593          	addi	a1,a1,1040 # e889d560 <icmp6_param_problem+0x4f2>
    e8857158:	f45f50ef          	jal	ra,e884d09c <CFDictionaryCopyCString>
		require_noerr( err, exit );
    e885715c:	57d2                	lw	a5,52(sp)
    e885715e:	efa1                	bnez	a5,e88571b6 <_PairingSessionCopyIdentityKeychain+0xfa>
		*outIdentifier = identifier;
    e8857160:	e088                	sd	a0,0(s1)
	}
	
	// Parse the hex public and secret key in the format: <hex pk> "+" <hex sk>.
	
	if( outPK || outSK )
    e8857162:	000a1463          	bnez	s4,e885716a <_PairingSessionCopyIdentityKeychain+0xae>
    e8857166:	04090863          	beqz	s2,e88571b6 <_PairingSessionCopyIdentityKeychain+0xfa>
	{
		len = 0;
		CFDictionaryGetData( identity, kSecValueData, pkAndSKHex, sizeof( pkAndSKHex ), &len, &err );
    e885716a:	185c                	addi	a5,sp,52
    e885716c:	1838                	addi	a4,sp,56
    e885716e:	08400693          	li	a3,132
    e8857172:	8622                	mv	a2,s0
    e8857174:	00046597          	auipc	a1,0x46
    e8857178:	40458593          	addi	a1,a1,1028 # e889d578 <icmp6_param_problem+0x50a>
    e885717c:	854e                	mv	a0,s3
		len = 0;
    e885717e:	fc02                	sd	zero,56(sp)
		CFDictionaryGetData( identity, kSecValueData, pkAndSKHex, sizeof( pkAndSKHex ), &len, &err );
    e8857180:	8e4f60ef          	jal	ra,e884d264 <CFDictionaryGetData>
		src = pkAndSKHex;
		end = src + len;
    e8857184:	74e2                	ld	s1,56(sp)
		err = HexToData( src, len, kHexToData_DefaultFlags, outPK, 32, &len, NULL, &src );
    e8857186:	04010893          	addi	a7,sp,64
    e885718a:	4801                	li	a6,0
    e885718c:	183c                	addi	a5,sp,56
    e885718e:	02000713          	li	a4,32
    e8857192:	86d2                	mv	a3,s4
    e8857194:	4659                	li	a2,22
    e8857196:	85a6                	mv	a1,s1
    e8857198:	8522                	mv	a0,s0
		src = pkAndSKHex;
    e885719a:	e0a2                	sd	s0,64(sp)
		err = HexToData( src, len, kHexToData_DefaultFlags, outPK, 32, &len, NULL, &src );
    e885719c:	05c080ef          	jal	ra,e885f1f8 <HexToData>
    e88571a0:	da2a                	sw	a0,52(sp)
		require_noerr( err, exit );
    e88571a2:	e911                	bnez	a0,e88571b6 <_PairingSessionCopyIdentityKeychain+0xfa>
		require_action( len == 32, exit, err = kSizeErr );
    e88571a4:	7a62                	ld	s4,56(sp)
    e88571a6:	02000793          	li	a5,32
    e88571aa:	02fa0963          	beq	s4,a5,e88571dc <_PairingSessionCopyIdentityKeychain+0x120>
    e88571ae:	77f9                	lui	a5,0xffffe
    e88571b0:	5a97879b          	addiw	a5,a5,1449
		
		if( outSK )
		{
			require_action( ( src < end ) && ( *src == '+' ), exit, err = kMalformedErr );
    e88571b4:	da3e                	sw	a5,52(sp)
			require_action( len == 32, exit, err = kSizeErr );
		}
	}
	
exit:
	CFReleaseNullSafe( identity );
    e88571b6:	00098563          	beqz	s3,e88571c0 <_PairingSessionCopyIdentityKeychain+0x104>
    e88571ba:	854e                	mv	a0,s3
    e88571bc:	f8fef0ef          	jal	ra,e884714a <CFRelease>
    e88571c0:	01fc                	addi	a5,sp,204
    e88571c2:	1814500b          	sbia	zero,(s0),1,0
    e88571c6:	fef41ee3          	bne	s0,a5,e88571c2 <_PairingSessionCopyIdentityKeychain+0x106>
	MemZeroSecure( pkAndSKHex, sizeof( pkAndSKHex ) );
	return( err );
}
    e88571ca:	70ee                	ld	ra,248(sp)
    e88571cc:	744e                	ld	s0,240(sp)
    e88571ce:	5552                	lw	a0,52(sp)
    e88571d0:	74ae                	ld	s1,232(sp)
    e88571d2:	790e                	ld	s2,224(sp)
    e88571d4:	69ee                	ld	s3,216(sp)
    e88571d6:	6a4e                	ld	s4,208(sp)
    e88571d8:	6111                	addi	sp,sp,256
    e88571da:	8082                	ret
		if( outSK )
    e88571dc:	fc090de3          	beqz	s2,e88571b6 <_PairingSessionCopyIdentityKeychain+0xfa>
			require_action( ( src < end ) && ( *src == '+' ), exit, err = kMalformedErr );
    e88571e0:	6506                	ld	a0,64(sp)
		end = src + len;
    e88571e2:	009405b3          	add	a1,s0,s1
			require_action( ( src < end ) && ( *src == '+' ), exit, err = kMalformedErr );
    e88571e6:	00b57863          	bgeu	a0,a1,e88571f6 <_PairingSessionCopyIdentityKeychain+0x13a>
    e88571ea:	00054703          	lbu	a4,0(a0)
    e88571ee:	02b00793          	li	a5,43
    e88571f2:	00f70663          	beq	a4,a5,e88571fe <_PairingSessionCopyIdentityKeychain+0x142>
    e88571f6:	77f9                	lui	a5,0xffffe
    e88571f8:	5aa7879b          	addiw	a5,a5,1450
    e88571fc:	bf65                	j	e88571b4 <_PairingSessionCopyIdentityKeychain+0xf8>
			++src;
    e88571fe:	0505                	addi	a0,a0,1
			err = HexToData( src, (size_t)( end - src ), kHexToData_DefaultFlags, outSK, 32, &len, NULL, NULL );
    e8857200:	4881                	li	a7,0
    e8857202:	4801                	li	a6,0
    e8857204:	183c                	addi	a5,sp,56
    e8857206:	02000713          	li	a4,32
    e885720a:	86ca                	mv	a3,s2
    e885720c:	4659                	li	a2,22
    e885720e:	8d89                	sub	a1,a1,a0
			++src;
    e8857210:	e0aa                	sd	a0,64(sp)
			err = HexToData( src, (size_t)( end - src ), kHexToData_DefaultFlags, outSK, 32, &len, NULL, NULL );
    e8857212:	7e7070ef          	jal	ra,e885f1f8 <HexToData>
    e8857216:	da2a                	sw	a0,52(sp)
			require_noerr( err, exit );
    e8857218:	fd59                	bnez	a0,e88571b6 <_PairingSessionCopyIdentityKeychain+0xfa>
			require_action( len == 32, exit, err = kSizeErr );
    e885721a:	77e2                	ld	a5,56(sp)
    e885721c:	f9478de3          	beq	a5,s4,e88571b6 <_PairingSessionCopyIdentityKeychain+0xfa>
    e8857220:	b779                	j	e88571ae <_PairingSessionCopyIdentityKeychain+0xf2>

00000000e8857222 <_PairingSessionCreateIdentityKeychain>:

#define thirtyTwoByteHexFormat "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x"
#define thirtyTwoBytes(buffer) buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5], buffer[6], buffer[7], buffer[8], buffer[9], buffer[10], buffer[11], buffer[12], buffer[13], buffer[14], buffer[15], buffer[16], buffer[17], buffer[18], buffer[19], buffer[20], buffer[21], buffer[22], buffer[23], buffer[24], buffer[25], buffer[26], buffer[27], buffer[28], buffer[29], buffer[30], buffer[31]

static OSStatus	_PairingSessionCreateIdentityKeychain( PairingSessionRef me, char **outIdentifier, uint8_t *outPK, uint8_t *outSK )
{
    e8857222:	c8010113          	addi	sp,sp,-896
    e8857226:	36913423          	sd	s1,872(sp)
    e885722a:	84aa                	mv	s1,a0
    e885722c:	37213023          	sd	s2,864(sp)
    e8857230:	35413823          	sd	s4,848(sp)
    e8857234:	35513423          	sd	s5,840(sp)
    e8857238:	33713c23          	sd	s7,824(sp)
    e885723c:	33813823          	sd	s8,816(sp)
    e8857240:	33913423          	sd	s9,808(sp)
    e8857244:	36113c23          	sd	ra,888(sp)
    e8857248:	36813823          	sd	s0,880(sp)
    e885724c:	35313c23          	sd	s3,856(sp)
    e8857250:	35613023          	sd	s6,832(sp)
    e8857254:	33a13023          	sd	s10,800(sp)
    e8857258:	31b13c23          	sd	s11,792(sp)
    e885725c:	8cae                	mv	s9,a1
    e885725e:	8c32                	mv	s8,a2
    e8857260:	8bb6                	mv	s7,a3
	char *				label;
	char *				identifier;
	
	// Delete any existing identity first to self-repair and avoid dups.
	
	_PairingSessionDeleteIdentity( me );
    e8857262:	e0bff0ef          	jal	ra,e885706c <_PairingSessionDeleteIdentity>
	
	// Create a new identity and store it in the Keychain.
	
	identifierPtr = me->identifierPtr;
    e8857266:	0a84b903          	ld	s2,168(s1)
	identifierLen = me->identifierLen;
    e885726a:	0b04ba83          	ld	s5,176(s1)
	if( !identifierPtr || ( identifierLen == 0 ) )
    e885726e:	24810a13          	addi	s4,sp,584
    e8857272:	00090463          	beqz	s2,e885727a <_PairingSessionCreateIdentityKeychain+0x58>
    e8857276:	020a9063          	bnez	s5,e8857296 <_PairingSessionCreateIdentityKeychain+0x74>
	{
		UUIDGet( uuid );
    e885727a:	1ba8                	addi	a0,sp,504
    e885727c:	02d0a0ef          	jal	ra,e8861aa8 <UUIDGet>
		UUIDtoCString( uuid, false, identifierBuf );
		identifierPtr = identifierBuf;
    e8857280:	8952                	mv	s2,s4
		UUIDtoCString( uuid, false, identifierBuf );
    e8857282:	8652                	mv	a2,s4
    e8857284:	4581                	li	a1,0
    e8857286:	1ba8                	addi	a0,sp,504
    e8857288:	574080ef          	jal	ra,e885f7fc <UUIDtoCString>
		identifierLen = strlen( identifierBuf );
    e885728c:	8552                	mv	a0,s4
    e885728e:	08a250ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8857292:	7c053a8b          	extu	s5,a0,31,0
	}
	Ed25519_make_key_pair( pk, sk );
    e8857296:	142c                	addi	a1,sp,552
    e8857298:	0428                	addi	a0,sp,520
    e885729a:	bbde60ef          	jal	ra,e883de56 <ed25519_make_key_pair_ref>
	snprintf( pkAndSKHex, sizeof( pkAndSKHex ), thirtyTwoByteHexFormat"+"thirtyTwoByteHexFormat, thirtyTwoBytes(pk), thirtyTwoBytes(sk) );
    e885729e:	0520                	addi	s0,sp,648
    e88572a0:	24714783          	lbu	a5,583(sp)
    e88572a4:	0006b617          	auipc	a2,0x6b
    e88572a8:	c6460613          	addi	a2,a2,-924 # e88c1f08 <__PRETTY_FUNCTION__.9902+0x270>
    e88572ac:	08400593          	li	a1,132
    e88572b0:	ebbe                	sd	a5,464(sp)
    e88572b2:	24614783          	lbu	a5,582(sp)
    e88572b6:	8522                	mv	a0,s0
	
	label = NULL;
	asprintf( &label, "%s: %.*s", CFStringGetCStringPtr(me->keychainIdentityLabel, kCFStringEncodingUTF8), (int) identifierLen, identifierPtr );
    e88572b8:	000a8b1b          	sext.w	s6,s5
	snprintf( pkAndSKHex, sizeof( pkAndSKHex ), thirtyTwoByteHexFormat"+"thirtyTwoByteHexFormat, thirtyTwoBytes(pk), thirtyTwoBytes(sk) );
    e88572bc:	e7be                	sd	a5,456(sp)
    e88572be:	24514783          	lbu	a5,581(sp)
    e88572c2:	e3be                	sd	a5,448(sp)
    e88572c4:	24414783          	lbu	a5,580(sp)
    e88572c8:	ff3e                	sd	a5,440(sp)
    e88572ca:	24314783          	lbu	a5,579(sp)
    e88572ce:	fb3e                	sd	a5,432(sp)
    e88572d0:	24214783          	lbu	a5,578(sp)
    e88572d4:	f73e                	sd	a5,424(sp)
    e88572d6:	24114783          	lbu	a5,577(sp)
    e88572da:	f33e                	sd	a5,416(sp)
    e88572dc:	24014783          	lbu	a5,576(sp)
    e88572e0:	ef3e                	sd	a5,408(sp)
    e88572e2:	23f14783          	lbu	a5,575(sp)
    e88572e6:	eb3e                	sd	a5,400(sp)
    e88572e8:	23e14783          	lbu	a5,574(sp)
    e88572ec:	e73e                	sd	a5,392(sp)
    e88572ee:	23d14783          	lbu	a5,573(sp)
    e88572f2:	e33e                	sd	a5,384(sp)
    e88572f4:	23c14783          	lbu	a5,572(sp)
    e88572f8:	febe                	sd	a5,376(sp)
    e88572fa:	23b14783          	lbu	a5,571(sp)
    e88572fe:	fabe                	sd	a5,368(sp)
    e8857300:	23a14783          	lbu	a5,570(sp)
    e8857304:	f6be                	sd	a5,360(sp)
    e8857306:	23914783          	lbu	a5,569(sp)
    e885730a:	f2be                	sd	a5,352(sp)
    e885730c:	23814783          	lbu	a5,568(sp)
    e8857310:	eebe                	sd	a5,344(sp)
    e8857312:	23714783          	lbu	a5,567(sp)
    e8857316:	eabe                	sd	a5,336(sp)
    e8857318:	23614783          	lbu	a5,566(sp)
    e885731c:	e6be                	sd	a5,328(sp)
    e885731e:	23514783          	lbu	a5,565(sp)
    e8857322:	e2be                	sd	a5,320(sp)
    e8857324:	23414783          	lbu	a5,564(sp)
    e8857328:	fe3e                	sd	a5,312(sp)
    e885732a:	23314783          	lbu	a5,563(sp)
    e885732e:	fa3e                	sd	a5,304(sp)
    e8857330:	23214783          	lbu	a5,562(sp)
    e8857334:	f63e                	sd	a5,296(sp)
    e8857336:	23114783          	lbu	a5,561(sp)
    e885733a:	f23e                	sd	a5,288(sp)
    e885733c:	23014783          	lbu	a5,560(sp)
    e8857340:	ee3e                	sd	a5,280(sp)
    e8857342:	22f14783          	lbu	a5,559(sp)
    e8857346:	ea3e                	sd	a5,272(sp)
    e8857348:	22e14783          	lbu	a5,558(sp)
    e885734c:	e63e                	sd	a5,264(sp)
    e885734e:	22d14783          	lbu	a5,557(sp)
    e8857352:	e23e                	sd	a5,256(sp)
    e8857354:	22c14783          	lbu	a5,556(sp)
    e8857358:	fdbe                	sd	a5,248(sp)
    e885735a:	22b14783          	lbu	a5,555(sp)
    e885735e:	f9be                	sd	a5,240(sp)
    e8857360:	22a14783          	lbu	a5,554(sp)
    e8857364:	f5be                	sd	a5,232(sp)
    e8857366:	22914783          	lbu	a5,553(sp)
    e885736a:	f1be                	sd	a5,224(sp)
    e885736c:	22814783          	lbu	a5,552(sp)
    e8857370:	edbe                	sd	a5,216(sp)
    e8857372:	22714783          	lbu	a5,551(sp)
    e8857376:	e9be                	sd	a5,208(sp)
    e8857378:	22614783          	lbu	a5,550(sp)
    e885737c:	e5be                	sd	a5,200(sp)
    e885737e:	22514783          	lbu	a5,549(sp)
    e8857382:	e1be                	sd	a5,192(sp)
    e8857384:	22414783          	lbu	a5,548(sp)
    e8857388:	fd3e                	sd	a5,184(sp)
    e885738a:	22314783          	lbu	a5,547(sp)
    e885738e:	f93e                	sd	a5,176(sp)
    e8857390:	22214783          	lbu	a5,546(sp)
    e8857394:	f53e                	sd	a5,168(sp)
    e8857396:	22114783          	lbu	a5,545(sp)
    e885739a:	f13e                	sd	a5,160(sp)
    e885739c:	22014783          	lbu	a5,544(sp)
    e88573a0:	ed3e                	sd	a5,152(sp)
    e88573a2:	21f14783          	lbu	a5,543(sp)
    e88573a6:	e93e                	sd	a5,144(sp)
    e88573a8:	21e14783          	lbu	a5,542(sp)
    e88573ac:	e53e                	sd	a5,136(sp)
    e88573ae:	21d14783          	lbu	a5,541(sp)
    e88573b2:	e13e                	sd	a5,128(sp)
    e88573b4:	21c14783          	lbu	a5,540(sp)
    e88573b8:	fcbe                	sd	a5,120(sp)
    e88573ba:	21b14783          	lbu	a5,539(sp)
    e88573be:	f8be                	sd	a5,112(sp)
    e88573c0:	21a14783          	lbu	a5,538(sp)
    e88573c4:	f4be                	sd	a5,104(sp)
    e88573c6:	21914783          	lbu	a5,537(sp)
    e88573ca:	f0be                	sd	a5,96(sp)
    e88573cc:	21814783          	lbu	a5,536(sp)
    e88573d0:	ecbe                	sd	a5,88(sp)
    e88573d2:	21714783          	lbu	a5,535(sp)
    e88573d6:	20c14883          	lbu	a7,524(sp)
    e88573da:	20b14803          	lbu	a6,523(sp)
    e88573de:	e8be                	sd	a5,80(sp)
    e88573e0:	21614783          	lbu	a5,534(sp)
    e88573e4:	20914703          	lbu	a4,521(sp)
    e88573e8:	20814683          	lbu	a3,520(sp)
    e88573ec:	e4be                	sd	a5,72(sp)
    e88573ee:	21514783          	lbu	a5,533(sp)
    e88573f2:	e0be                	sd	a5,64(sp)
    e88573f4:	21414783          	lbu	a5,532(sp)
    e88573f8:	fc3e                	sd	a5,56(sp)
    e88573fa:	21314783          	lbu	a5,531(sp)
    e88573fe:	f83e                	sd	a5,48(sp)
    e8857400:	21214783          	lbu	a5,530(sp)
    e8857404:	f43e                	sd	a5,40(sp)
    e8857406:	21114783          	lbu	a5,529(sp)
    e885740a:	f03e                	sd	a5,32(sp)
    e885740c:	21014783          	lbu	a5,528(sp)
    e8857410:	ec3e                	sd	a5,24(sp)
    e8857412:	20f14783          	lbu	a5,527(sp)
    e8857416:	e83e                	sd	a5,16(sp)
    e8857418:	20e14783          	lbu	a5,526(sp)
    e885741c:	e43e                	sd	a5,8(sp)
    e885741e:	20d14783          	lbu	a5,525(sp)
    e8857422:	e03e                	sd	a5,0(sp)
    e8857424:	20a14783          	lbu	a5,522(sp)
    e8857428:	629240ef          	jal	ra,e887c250 <eLIBs_snprintf>
	label = NULL;
    e885742c:	fb82                	sd	zero,496(sp)
	asprintf( &label, "%s: %.*s", CFStringGetCStringPtr(me->keychainIdentityLabel, kCFStringEncodingUTF8), (int) identifierLen, identifierPtr );
    e885742e:	2284b503          	ld	a0,552(s1)
    e8857432:	080005b7          	lui	a1,0x8000
    e8857436:	10058593          	addi	a1,a1,256 # 8000100 <memcmp-0xe07fff00>
    e885743a:	982f00ef          	jal	ra,e88475bc <CFStringGetCStringPtr>
    e885743e:	862a                	mv	a2,a0
    e8857440:	874a                	mv	a4,s2
    e8857442:	86da                	mv	a3,s6
    e8857444:	0006b597          	auipc	a1,0x6b
    e8857448:	bcc58593          	addi	a1,a1,-1076 # e88c2010 <__PRETTY_FUNCTION__.9902+0x378>
    e885744c:	1b88                	addi	a0,sp,496
    e885744e:	7361c0ef          	jal	ra,e8873b84 <asprintf>
	require_action( label, exit, err = kNoMemoryErr );
    e8857452:	79de                	ld	s3,496(sp)
    e8857454:	04099d63          	bnez	s3,e88574ae <_PairingSessionCreateIdentityKeychain+0x28c>
    e8857458:	79f9                	lui	s3,0xffffe
    e885745a:	5b898993          	addi	s3,s3,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e885745e:	143c                	addi	a5,sp,552
	while( inLen-- ) *ptr++ = 0;
    e8857460:	1817d00b          	sbia	zero,(a5),1,0
    e8857464:	ff479ee3          	bne	a5,s4,e8857460 <_PairingSessionCreateIdentityKeychain+0x23e>
    e8857468:	067c                	addi	a5,sp,780
    e885746a:	1814500b          	sbia	zero,(s0),1,0
    e885746e:	fef41ee3          	bne	s0,a5,e885746a <_PairingSessionCreateIdentityKeychain+0x248>
	
exit:
	MemZeroSecure( sk, sizeof( sk ) );
	MemZeroSecure( pkAndSKHex, sizeof( pkAndSKHex ) );
	return( err );
}
    e8857472:	37813083          	ld	ra,888(sp)
    e8857476:	37013403          	ld	s0,880(sp)
    e885747a:	854e                	mv	a0,s3
    e885747c:	36813483          	ld	s1,872(sp)
    e8857480:	36013903          	ld	s2,864(sp)
    e8857484:	35813983          	ld	s3,856(sp)
    e8857488:	35013a03          	ld	s4,848(sp)
    e885748c:	34813a83          	ld	s5,840(sp)
    e8857490:	34013b03          	ld	s6,832(sp)
    e8857494:	33813b83          	ld	s7,824(sp)
    e8857498:	33013c03          	ld	s8,816(sp)
    e885749c:	32813c83          	ld	s9,808(sp)
    e88574a0:	32013d03          	ld	s10,800(sp)
    e88574a4:	31813d83          	ld	s11,792(sp)
    e88574a8:	38010113          	addi	sp,sp,896
    e88574ac:	8082                	ret
	err = KeychainAddFormatted( NULL, 
    e88574ae:	2204b783          	ld	a5,544(s1)
    e88574b2:	2284b603          	ld	a2,552(s1)
		kSecValueData,			pkAndSKHex, (int) strlen( pkAndSKHex ), 
    e88574b6:	8522                	mv	a0,s0
	err = KeychainAddFormatted( NULL, 
    e88574b8:	f7be                	sd	a5,488(sp)
    e88574ba:	f3b2                	sd	a2,480(sp)
    e88574bc:	2304ad03          	lw	s10,560(s1)
    e88574c0:	2384bd83          	ld	s11,568(s1)
		kSecValueData,			pkAndSKHex, (int) strlen( pkAndSKHex ), 
    e88574c4:	655240ef          	jal	ra,e887c318 <eLIBs_strlen>
	err = KeychainAddFormatted( NULL, 
    e88574c8:	2501                	sext.w	a0,a0
		kSecAttrSynchronizable,	( me->keychainFlags & kPairingKeychainFlag_iCloudIdentity ) ? kCFBooleanTrue : NULL );
    e88574ca:	2584a703          	lw	a4,600(s1)
	err = KeychainAddFormatted( NULL, 
    e88574ce:	4681                	li	a3,0
    e88574d0:	761e                	ld	a2,480(sp)
    e88574d2:	8b05                	andi	a4,a4,1
    e88574d4:	77be                	ld	a5,488(sp)
    e88574d6:	c711                	beqz	a4,e88574e2 <_PairingSessionCreateIdentityKeychain+0x2c0>
    e88574d8:	0007d717          	auipc	a4,0x7d
    e88574dc:	7f870713          	addi	a4,a4,2040 # e88d4cd0 <kCFLBooleanTrue>
    e88574e0:	6314                	ld	a3,0(a4)
    e88574e2:	00046717          	auipc	a4,0x46
    e88574e6:	05e70713          	addi	a4,a4,94 # e889d540 <icmp6_param_problem+0x4d2>
    e88574ea:	f8ba                	sd	a4,112(sp)
    e88574ec:	00046717          	auipc	a4,0x46
    e88574f0:	08c70713          	addi	a4,a4,140 # e889d578 <icmp6_param_problem+0x50a>
    e88574f4:	ecba                	sd	a4,88(sp)
    e88574f6:	00046717          	auipc	a4,0x46
    e88574fa:	f3a70713          	addi	a4,a4,-198 # e889d430 <icmp6_param_problem+0x3c2>
    e88574fe:	e4ba                	sd	a4,72(sp)
    e8857500:	00046717          	auipc	a4,0x46
    e8857504:	06070713          	addi	a4,a4,96 # e889d560 <icmp6_param_problem+0x4f2>
    e8857508:	f83a                	sd	a4,48(sp)
    e885750a:	00046717          	auipc	a4,0x46
    e885750e:	0ce70713          	addi	a4,a4,206 # e889d5d8 <icmp6_param_problem+0x56a>
    e8857512:	f03a                	sd	a4,32(sp)
    e8857514:	00046717          	auipc	a4,0x46
    e8857518:	0e470713          	addi	a4,a4,228 # e889d5f8 <icmp6_param_problem+0x58a>
    e885751c:	e83a                	sd	a4,16(sp)
    e885751e:	00046717          	auipc	a4,0x46
    e8857522:	f2a70713          	addi	a4,a4,-214 # e889d448 <icmp6_param_problem+0x3da>
    e8857526:	fcb6                	sd	a3,120(sp)
    e8857528:	f4aa                	sd	a0,104(sp)
    e885752a:	e8b2                	sd	a2,80(sp)
    e885752c:	ec4e                	sd	s3,24(sp)
    e885752e:	e03a                	sd	a4,0(sp)
    e8857530:	f0a2                	sd	s0,96(sp)
    e8857532:	e0ca                	sd	s2,64(sp)
    e8857534:	fc5a                	sd	s6,56(sp)
    e8857536:	f46e                	sd	s11,40(sp)
    e8857538:	e46a                	sd	s10,8(sp)
    e885753a:	00046897          	auipc	a7,0x46
    e885753e:	05688893          	addi	a7,a7,86 # e889d590 <icmp6_param_problem+0x522>
    e8857542:	00046817          	auipc	a6,0x46
    e8857546:	07680813          	addi	a6,a6,118 # e889d5b8 <icmp6_param_problem+0x54a>
    e885754a:	00046717          	auipc	a4,0x46
    e885754e:	f7670713          	addi	a4,a4,-138 # e889d4c0 <icmp6_param_problem+0x452>
    e8857552:	00046697          	auipc	a3,0x46
    e8857556:	f0e68693          	addi	a3,a3,-242 # e889d460 <icmp6_param_problem+0x3f2>
    e885755a:	00046617          	auipc	a2,0x46
    e885755e:	f2e60613          	addi	a2,a2,-210 # e889d488 <icmp6_param_problem+0x41a>
    e8857562:	0006b597          	auipc	a1,0x6b
    e8857566:	abe58593          	addi	a1,a1,-1346 # e88c2020 <__PRETTY_FUNCTION__.9902+0x388>
    e885756a:	4501                	li	a0,0
    e885756c:	c45fb0ef          	jal	ra,e88531b0 <KeychainAddFormatted>
    e8857570:	89aa                	mv	s3,a0
	free( label );
    e8857572:	755e                	ld	a0,496(sp)
    e8857574:	58d240ef          	jal	ra,e887c300 <eLIBs_free>
	require_noerr_quiet( err, exit );
    e8857578:	ee0993e3          	bnez	s3,e885745e <_PairingSessionCreateIdentityKeychain+0x23c>
	if( outIdentifier )
    e885757c:	000c8a63          	beqz	s9,e8857590 <_PairingSessionCreateIdentityKeychain+0x36e>
		identifier = strndup( identifierPtr, identifierLen );
    e8857580:	85d6                	mv	a1,s5
    e8857582:	854a                	mv	a0,s2
    e8857584:	2b6080ef          	jal	ra,e885f83a <strndup>
		require_action( identifier, exit, err = kNoMemoryErr );
    e8857588:	ec0508e3          	beqz	a0,e8857458 <_PairingSessionCreateIdentityKeychain+0x236>
		*outIdentifier = identifier;
    e885758c:	00acb023          	sd	a0,0(s9)
	if( outPK ) memcpy( outPK, pk, 32 );
    e8857590:	000c0863          	beqz	s8,e88575a0 <_PairingSessionCreateIdentityKeychain+0x37e>
    e8857594:	02000613          	li	a2,32
    e8857598:	042c                	addi	a1,sp,520
    e885759a:	8562                	mv	a0,s8
    e885759c:	605240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	if( outSK ) memcpy( outSK, sk, 32 );
    e88575a0:	000b8863          	beqz	s7,e88575b0 <_PairingSessionCreateIdentityKeychain+0x38e>
    e88575a4:	02000613          	li	a2,32
    e88575a8:	142c                	addi	a1,sp,552
    e88575aa:	855e                	mv	a0,s7
    e88575ac:	5f5240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	pair_ulog( me, kLogLevelNotice, "Created %@: %.*s\n", me->keychainIdentityLabel, (int) identifierLen, identifierPtr );
    e88575b0:	6488                	ld	a0,8(s1)
    e88575b2:	03200713          	li	a4,50
    e88575b6:	411c                	lw	a5,0(a0)
    e88575b8:	eaf743e3          	blt	a4,a5,e885745e <_PairingSessionCreateIdentityKeychain+0x23c>
    e88575bc:	577d                	li	a4,-1
    e88575be:	02e78463          	beq	a5,a4,e88575e6 <_PairingSessionCreateIdentityKeychain+0x3c4>
    e88575c2:	2284b703          	ld	a4,552(s1)
    e88575c6:	6488                	ld	a0,8(s1)
    e88575c8:	884a                	mv	a6,s2
    e88575ca:	87da                	mv	a5,s6
    e88575cc:	0006b697          	auipc	a3,0x6b
    e88575d0:	a9c68693          	addi	a3,a3,-1380 # e88c2068 <__PRETTY_FUNCTION__.9902+0x3d0>
    e88575d4:	03200613          	li	a2,50
    e88575d8:	0006b597          	auipc	a1,0x6b
    e88575dc:	6d058593          	addi	a1,a1,1744 # e88c2ca8 <__PRETTY_FUNCTION__.10738>
    e88575e0:	e95fc0ef          	jal	ra,e8854474 <LogPrintF>
    e88575e4:	bdad                	j	e885745e <_PairingSessionCreateIdentityKeychain+0x23c>
    e88575e6:	03200593          	li	a1,50
    e88575ea:	a89fc0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88575ee:	e60508e3          	beqz	a0,e885745e <_PairingSessionCreateIdentityKeychain+0x23c>
    e88575f2:	bfc1                	j	e88575c2 <_PairingSessionCreateIdentityKeychain+0x3a0>

00000000e88575f4 <_PairingSessionDeletePeer.isra.0>:
#if( KEYCHAIN_LITE_ENABLED )
//===========================================================================================================================
//	_PairingSessionDeletePeer
//===========================================================================================================================

static OSStatus	_PairingSessionDeletePeer( PairingSessionRef me, const void *inIdentifierPtr, size_t inIdentifierLen )
    e88575f4:	7179                	addi	sp,sp,-48
    e88575f6:	f406                	sd	ra,40(sp)
    e88575f8:	872a                	mv	a4,a0
{
	return( KeychainDeleteFormatted( 
    e88575fa:	00c03833          	snez	a6,a2
    e88575fe:	e191                	bnez	a1,e8857602 <_PairingSessionDeletePeer.isra.0+0xe>
    e8857600:	4801                	li	a6,0
    e8857602:	00046797          	auipc	a5,0x46
    e8857606:	e9e78793          	addi	a5,a5,-354 # e889d4a0 <icmp6_param_problem+0x432>
    e885760a:	e83e                	sd	a5,16(sp)
    e885760c:	00046797          	auipc	a5,0x46
    e8857610:	e0c78793          	addi	a5,a5,-500 # e889d418 <icmp6_param_problem+0x3aa>
    e8857614:	e43e                	sd	a5,8(sp)
    e8857616:	e02e                	sd	a1,0(sp)
    e8857618:	0006089b          	sext.w	a7,a2
    e885761c:	00046797          	auipc	a5,0x46
    e8857620:	f4478793          	addi	a5,a5,-188 # e889d560 <icmp6_param_problem+0x4f2>
    e8857624:	00046697          	auipc	a3,0x46
    e8857628:	e2468693          	addi	a3,a3,-476 # e889d448 <icmp6_param_problem+0x3da>
    e885762c:	00046617          	auipc	a2,0x46
    e8857630:	e3460613          	addi	a2,a2,-460 # e889d460 <icmp6_param_problem+0x3f2>
    e8857634:	00046597          	auipc	a1,0x46
    e8857638:	e5458593          	addi	a1,a1,-428 # e889d488 <icmp6_param_problem+0x41a>
    e885763c:	0006b517          	auipc	a0,0x6b
    e8857640:	a6450513          	addi	a0,a0,-1436 # e88c20a0 <__PRETTY_FUNCTION__.9902+0x408>
    e8857644:	c13fb0ef          	jal	ra,e8853256 <KeychainDeleteFormatted>
		"}", 
		kSecClass,			kSecClassGenericPassword, 
		kSecAttrType,		me->keychainPeerType, 
		kSecAttrAccount,	( inIdentifierPtr && ( inIdentifierLen > 0 ) ), (int) inIdentifierLen, inIdentifierPtr, 
		kSecMatchLimit,		kSecMatchLimitAll ) );
}
    e8857648:	70a2                	ld	ra,40(sp)
    e885764a:	6145                	addi	sp,sp,48
    e885764c:	8082                	ret

00000000e885764e <_ProgressInput.constprop.3>:
	_ProgressInput( 
    e885764e:	7141                	addi	sp,sp,-496
    e8857650:	f786                	sd	ra,488(sp)
    e8857652:	f3a2                	sd	s0,480(sp)
    e8857654:	efa6                	sd	s1,472(sp)
    e8857656:	e7ce                	sd	s3,456(sp)
    e8857658:	ff56                	sd	s5,440(sp)
    e885765a:	fb5a                	sd	s6,432(sp)
    e885765c:	f75e                	sd	s7,424(sp)
    e885765e:	f362                	sd	s8,416(sp)
    e8857660:	ef66                	sd	s9,408(sp)
    e8857662:	eb6a                	sd	s10,400(sp)
    e8857664:	ebca                	sd	s2,464(sp)
    e8857666:	e3d2                	sd	s4,448(sp)
    e8857668:	e76e                	sd	s11,392(sp)
    e885766a:	8d2e                	mv	s10,a1
	const uint8_t * const		inputPtr		= *ioInputPtr;
    e885766c:	0005ba03          	ld	s4,0(a1)
	const uint8_t * const		inputEnd		= inputPtr + *ioInputLen;
    e8857670:	00063903          	ld	s2,0(a2)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8857674:	6591                	lui	a1,0x4
    e8857676:	e8058593          	addi	a1,a1,-384 # 3e80 <memcmp-0xe87fc180>
	_ProgressInput( 
    e885767a:	84aa                	mv	s1,a0
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e885767c:	1808                	addi	a0,sp,48
	_ProgressInput( 
    e885767e:	8cb2                	mv	s9,a2
    e8857680:	8c36                	mv	s8,a3
    e8857682:	8bba                	mv	s7,a4
    e8857684:	8b3e                	mv	s6,a5
    e8857686:	8ac2                	mv	s5,a6
	uint8_t *					outputPtr		= NULL;
    e8857688:	e402                	sd	zero,8(sp)
	size_t						outputLen		= 0;
    e885768a:	e802                	sd	zero,16(sp)
	uint8_t *					storage			= NULL;
    e885768c:	ec02                	sd	zero,24(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e885768e:	11b090ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	const uint8_t * const		inputEnd		= inputPtr + *ioInputLen;
    e8857692:	9952                	add	s2,s2,s4
	err = TLV8GetOrCopyCoalesced( inputPtr, inputEnd, kTLVType_FragmentData, &ptr, &len, &storage, NULL );
    e8857694:	083c                	addi	a5,sp,24
    e8857696:	4801                	li	a6,0
    e8857698:	1038                	addi	a4,sp,40
    e885769a:	1014                	addi	a3,sp,32
    e885769c:	4631                	li	a2,12
    e885769e:	85ca                	mv	a1,s2
    e88576a0:	8552                	mv	a0,s4
    e88576a2:	7a4090ef          	jal	ra,e8860e46 <TLV8GetOrCopyCoalesced>
	Boolean						last = false;
    e88576a6:	4981                	li	s3,0
	if( err == kNotFoundErr )
    e88576a8:	77f9                	lui	a5,0xffffe
    e88576aa:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e88576ae:	842a                	mv	s0,a0
    e88576b0:	02f51063          	bne	a0,a5,e88576d0 <_ProgressInput.constprop.3+0x82>
    e88576b4:	8daa                	mv	s11,a0
		err = TLV8GetOrCopyCoalesced( inputPtr, inputEnd, kTLVType_FragmentLast, &ptr, &len, &storage, NULL );
    e88576b6:	4801                	li	a6,0
    e88576b8:	083c                	addi	a5,sp,24
    e88576ba:	1038                	addi	a4,sp,40
    e88576bc:	1014                	addi	a3,sp,32
    e88576be:	4635                	li	a2,13
    e88576c0:	85ca                	mv	a1,s2
    e88576c2:	8552                	mv	a0,s4
    e88576c4:	782090ef          	jal	ra,e8860e46 <TLV8GetOrCopyCoalesced>
    e88576c8:	842a                	mv	s0,a0
	require_action_quiet( err != kNotFoundErr, exit, err = kNoErr );
    e88576ca:	13b50a63          	beq	a0,s11,e88577fe <_ProgressInput.constprop.3+0x1b0>
		last = true;
    e88576ce:	4985                	li	s3,1
	require_noerr_quiet( err, exit );
    e88576d0:	e83d                	bnez	s0,e8857746 <_ProgressInput.constprop.3+0xf8>
	if( len == 0 )
    e88576d2:	7a22                	ld	s4,40(sp)
    e88576d4:	060a1b63          	bnez	s4,e885774a <_ProgressInput.constprop.3+0xfc>
		len = me->outputFragmentLen - me->outputFragmentOffset;
    e88576d8:	0804b903          	ld	s2,128(s1)
    e88576dc:	64dc                	ld	a5,136(s1)
		len = Min( len, me->mtuPayload );
    e88576de:	68b8                	ld	a4,80(s1)
		len = me->outputFragmentLen - me->outputFragmentOffset;
    e88576e0:	40f90633          	sub	a2,s2,a5
		len = Min( len, me->mtuPayload );
    e88576e4:	00c736b3          	sltu	a3,a4,a2
    e88576e8:	40d6170b          	mveqz	a4,a2,a3
    e88576ec:	f43a                	sd	a4,40(sp)
    e88576ee:	86ba                	mv	a3,a4
		require_action( len > 0, exit, err = kInternalErr );
    e88576f0:	10070963          	beqz	a4,e8857802 <_ProgressInput.constprop.3+0x1b4>
		last = ( ( me->outputFragmentOffset + len ) == me->outputFragmentLen );
    e88576f4:	00e789b3          	add	s3,a5,a4
		err = TLV8BufferAppend( &tlv, last ? kTLVType_FragmentLast : kTLVType_FragmentData, 
    e88576f8:	45b5                	li	a1,13
    e88576fa:	01390363          	beq	s2,s3,e8857700 <_ProgressInput.constprop.3+0xb2>
    e88576fe:	45b1                	li	a1,12
			&me->outputFragmentBuf[ me->outputFragmentOffset ], len );
    e8857700:	7cb0                	ld	a2,120(s1)
		err = TLV8BufferAppend( &tlv, last ? kTLVType_FragmentLast : kTLVType_FragmentData, 
    e8857702:	1808                	addi	a0,sp,48
    e8857704:	963e                	add	a2,a2,a5
    e8857706:	0d5090ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885770a:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e885770c:	ed0d                	bnez	a0,e8857746 <_ProgressInput.constprop.3+0xf8>
		err = TLV8BufferDetach( &tlv, &outputPtr, &outputLen );
    e885770e:	0810                	addi	a2,sp,16
    e8857710:	002c                	addi	a1,sp,8
    e8857712:	1808                	addi	a0,sp,48
    e8857714:	205090ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e8857718:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e885771a:	e515                	bnez	a0,e8857746 <_ProgressInput.constprop.3+0xf8>
		if( last )
    e885771c:	03391163          	bne	s2,s3,e885773e <_ProgressInput.constprop.3+0xf0>
			free( me->outputFragmentBuf );
    e8857720:	7ca8                	ld	a0,120(s1)
			done = me->outputDone;
    e8857722:	0904c983          	lbu	s3,144(s1)
			free( me->outputFragmentBuf );
    e8857726:	3db240ef          	jal	ra,e887c300 <eLIBs_free>
			me->outputFragmentBuf		= NULL;
    e885772a:	0604bc23          	sd	zero,120(s1)
			me->outputFragmentLen		= 0;
    e885772e:	0804b023          	sd	zero,128(s1)
			me->outputFragmentOffset	= 0;
    e8857732:	0804b423          	sd	zero,136(s1)
			me->outputDone				= false;
    e8857736:	08048823          	sb	zero,144(s1)
	uint8_t *					inputStorage	= NULL;
    e885773a:	4901                	li	s2,0
    e885773c:	a041                	j	e88577bc <_ProgressInput.constprop.3+0x16e>
			me->outputFragmentOffset += len;
    e885773e:	64dc                	ld	a5,136(s1)
    e8857740:	7722                	ld	a4,40(sp)
    e8857742:	97ba                	add	a5,a5,a4
    e8857744:	e4dc                	sd	a5,136(s1)
	Boolean						done			= false;
    e8857746:	4981                	li	s3,0
    e8857748:	bfcd                	j	e885773a <_ProgressInput.constprop.3+0xec>
	newLen = me->inputFragmentLen + len;
    e885774a:	78ac                	ld	a1,112(s1)
    e885774c:	9a2e                	add	s4,s4,a1
	require_action_quiet( newLen > me->inputFragmentLen, exit, err = kOverrunErr ); // Detect wrapping.
    e885774e:	0b45fe63          	bgeu	a1,s4,e885780a <_ProgressInput.constprop.3+0x1bc>
	require_action_quiet( newLen <= kMaxTLVSize, exit, err = kSizeErr );
    e8857752:	6791                	lui	a5,0x4
    e8857754:	e8078793          	addi	a5,a5,-384 # 3e80 <memcmp-0xe87fc180>
    e8857758:	0b47ed63          	bltu	a5,s4,e8857812 <_ProgressInput.constprop.3+0x1c4>
    tmp = (uint8_t *) _CFLrealloc( me->inputFragmentBuf, me->inputFragmentLen, newLen );
    e885775c:	74a8                	ld	a0,104(s1)
    e885775e:	8652                	mv	a2,s4
    e8857760:	d77f10ef          	jal	ra,e88494d6 <_CFLrealloc>
    e8857764:	892a                	mv	s2,a0
	require_action( tmp, exit, err = kNoMemoryErr );
    e8857766:	c955                	beqz	a0,e885781a <_ProgressInput.constprop.3+0x1cc>
	memcpy( &tmp[ me->inputFragmentLen ], ptr, len );
    e8857768:	78a8                	ld	a0,112(s1)
    e885776a:	7622                	ld	a2,40(sp)
    e885776c:	7582                	ld	a1,32(sp)
    e885776e:	954a                	add	a0,a0,s2
    e8857770:	431240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	ForgetMem( &storage );
    e8857774:	6562                	ld	a0,24(sp)
    e8857776:	c501                	beqz	a0,e885777e <_ProgressInput.constprop.3+0x130>
    e8857778:	389240ef          	jal	ra,e887c300 <eLIBs_free>
    e885777c:	ec02                	sd	zero,24(sp)
	if( last )
    e885777e:	00098c63          	beqz	s3,e8857796 <_ProgressInput.constprop.3+0x148>
		*ioInputPtr				= tmp;
    e8857782:	012d3023          	sd	s2,0(s10)
		*ioInputLen				= newLen;
    e8857786:	014cb023          	sd	s4,0(s9)
		me->inputFragmentBuf	= NULL;
    e885778a:	0604b423          	sd	zero,104(s1)
		me->inputFragmentLen	= 0;
    e885778e:	0604b823          	sd	zero,112(s1)
	Boolean						done			= false;
    e8857792:	4981                	li	s3,0
    e8857794:	a025                	j	e88577bc <_ProgressInput.constprop.3+0x16e>
		me->inputFragmentBuf = tmp;
    e8857796:	0724b423          	sd	s2,104(s1)
		me->inputFragmentLen = newLen;
    e885779a:	0744b823          	sd	s4,112(s1)
		err = TLV8BufferAppend( &tlv, kTLVType_FragmentData, NULL, 0 );
    e885779e:	4681                	li	a3,0
    e88577a0:	4601                	li	a2,0
    e88577a2:	45b1                	li	a1,12
    e88577a4:	1808                	addi	a0,sp,48
    e88577a6:	035090ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e88577aa:	842a                	mv	s0,a0
	uint8_t *					inputStorage	= NULL;
    e88577ac:	4901                	li	s2,0
		require_noerr( err, exit );
    e88577ae:	e519                	bnez	a0,e88577bc <_ProgressInput.constprop.3+0x16e>
		err = TLV8BufferDetach( &tlv, &outputPtr, &outputLen );
    e88577b0:	0810                	addi	a2,sp,16
    e88577b2:	002c                	addi	a1,sp,8
    e88577b4:	1808                	addi	a0,sp,48
    e88577b6:	163090ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e88577ba:	842a                	mv	s0,a0
	TLV8BufferFree( &tlv );
    e88577bc:	1808                	addi	a0,sp,48
    e88577be:	7fc090ef          	jal	ra,e8860fba <TLV8BufferFree>
	ForgetMem( &storage );
    e88577c2:	6562                	ld	a0,24(sp)
    e88577c4:	c119                	beqz	a0,e88577ca <_ProgressInput.constprop.3+0x17c>
    e88577c6:	33b240ef          	jal	ra,e887c300 <eLIBs_free>
	*outOutputPtr		= outputPtr;
    e88577ca:	67a2                	ld	a5,8(sp)
	*outInputStorage	= inputStorage;
    e88577cc:	012c3023          	sd	s2,0(s8)
}
    e88577d0:	8522                	mv	a0,s0
	*outOutputPtr		= outputPtr;
    e88577d2:	00fbb023          	sd	a5,0(s7)
	*outOutputLen		= outputLen;
    e88577d6:	67c2                	ld	a5,16(sp)
}
    e88577d8:	70be                	ld	ra,488(sp)
    e88577da:	741e                	ld	s0,480(sp)
	*outOutputLen		= outputLen;
    e88577dc:	00fb3023          	sd	a5,0(s6)
}
    e88577e0:	64fe                	ld	s1,472(sp)
	*outDone			= done;
    e88577e2:	013a8023          	sb	s3,0(s5)
}
    e88577e6:	695e                	ld	s2,464(sp)
    e88577e8:	69be                	ld	s3,456(sp)
    e88577ea:	6a1e                	ld	s4,448(sp)
    e88577ec:	7afa                	ld	s5,440(sp)
    e88577ee:	7b5a                	ld	s6,432(sp)
    e88577f0:	7bba                	ld	s7,424(sp)
    e88577f2:	7c1a                	ld	s8,416(sp)
    e88577f4:	6cfa                	ld	s9,408(sp)
    e88577f6:	6d5a                	ld	s10,400(sp)
    e88577f8:	6dba                	ld	s11,392(sp)
    e88577fa:	617d                	addi	sp,sp,496
    e88577fc:	8082                	ret
	require_action_quiet( err != kNotFoundErr, exit, err = kNoErr );
    e88577fe:	4401                	li	s0,0
    e8857800:	bf2d                	j	e885773a <_ProgressInput.constprop.3+0xec>
		require_action( len > 0, exit, err = kInternalErr );
    e8857802:	7479                	lui	s0,0xffffe
    e8857804:	59640413          	addi	s0,s0,1430 # ffffffffffffe596 <__DRAM0_INF_BASE+0xffffffff0000e596>
    e8857808:	bf3d                	j	e8857746 <_ProgressInput.constprop.3+0xf8>
	require_action_quiet( newLen > me->inputFragmentLen, exit, err = kOverrunErr ); // Detect wrapping.
    e885780a:	7479                	lui	s0,0xffffe
    e885780c:	5a140413          	addi	s0,s0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e8857810:	bf1d                	j	e8857746 <_ProgressInput.constprop.3+0xf8>
	require_action_quiet( newLen <= kMaxTLVSize, exit, err = kSizeErr );
    e8857812:	7479                	lui	s0,0xffffe
    e8857814:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e8857818:	b73d                	j	e8857746 <_ProgressInput.constprop.3+0xf8>
	require_action( tmp, exit, err = kNoMemoryErr );
    e885781a:	7479                	lui	s0,0xffffe
    e885781c:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8857820:	bf8d                	j	e8857792 <_ProgressInput.constprop.3+0x144>

00000000e8857822 <PairingSessionGetTypeID>:
	dispatch_once_f( &gPairingSessionInitOnce, NULL, _PairingSessionGetTypeID );
    e8857822:	0008c517          	auipc	a0,0x8c
    e8857826:	51250513          	addi	a0,a0,1298 # e88e3d34 <gPairingSessionInitOnce>
    e885782a:	4118                	lw	a4,0(a0)
    e885782c:	4789                	li	a5,2
    e885782e:	02f70363          	beq	a4,a5,e8857854 <PairingSessionGetTypeID+0x32>
{
    e8857832:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gPairingSessionInitOnce, NULL, _PairingSessionGetTypeID );
    e8857834:	fffff617          	auipc	a2,0xfffff
    e8857838:	5e860613          	addi	a2,a2,1512 # e8856e1c <_PairingSessionGetTypeID>
    e885783c:	4581                	li	a1,0
{
    e885783e:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gPairingSessionInitOnce, NULL, _PairingSessionGetTypeID );
    e8857840:	e32f70ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e8857844:	60a2                	ld	ra,8(sp)
    e8857846:	0008c797          	auipc	a5,0x8c
    e885784a:	4f278793          	addi	a5,a5,1266 # e88e3d38 <gPairingSessionTypeID>
    e885784e:	4388                	lw	a0,0(a5)
    e8857850:	0141                	addi	sp,sp,16
    e8857852:	8082                	ret
    e8857854:	0008c797          	auipc	a5,0x8c
    e8857858:	4e478793          	addi	a5,a5,1252 # e88e3d38 <gPairingSessionTypeID>
    e885785c:	4388                	lw	a0,0(a5)
    e885785e:	8082                	ret

00000000e8857860 <PairingSessionSetIdentifier>:
	return( ReplaceString( &me->identifierPtr, &me->identifierLen, inPtr, inLen ) );
    e8857860:	86b2                	mv	a3,a2
    e8857862:	862e                	mv	a2,a1
    e8857864:	0b050593          	addi	a1,a0,176
    e8857868:	0a850513          	addi	a0,a0,168
    e885786c:	6300806f          	j	e885fe9c <ReplaceString>

00000000e8857870 <PairingSessionSetKeychainInfo>:
{
    e8857870:	711d                	addi	sp,sp,-96
    e8857872:	e8a2                	sd	s0,80(sp)
    e8857874:	e4a6                	sd	s1,72(sp)
    e8857876:	e0ca                	sd	s2,64(sp)
    e8857878:	fc4e                	sd	s3,56(sp)
    e885787a:	f852                	sd	s4,48(sp)
    e885787c:	f456                	sd	s5,40(sp)
    e885787e:	f05a                	sd	s6,32(sp)
    e8857880:	ec86                	sd	ra,88(sp)
    e8857882:	ec5e                	sd	s7,24(sp)
    e8857884:	842a                	mv	s0,a0
    e8857886:	8b32                	mv	s6,a2
    e8857888:	8a36                	mv	s4,a3
    e885788a:	89ba                	mv	s3,a4
    e885788c:	8abe                	mv	s5,a5
    e885788e:	8942                	mv	s2,a6
    e8857890:	84c6                	mv	s1,a7
	if( inAccessGroup )		ReplaceCF( &me->keychainAccessGroup, inAccessGroup );
    e8857892:	cd99                	beqz	a1,e88578b0 <PairingSessionSetKeychainInfo+0x40>
    e8857894:	22053b83          	ld	s7,544(a0)
    e8857898:	852e                	mv	a0,a1
    e885789a:	e42e                	sd	a1,8(sp)
    e885789c:	8abef0ef          	jal	ra,e8847146 <CFRetain>
    e88578a0:	65a2                	ld	a1,8(sp)
    e88578a2:	22b43023          	sd	a1,544(s0)
    e88578a6:	000b8563          	beqz	s7,e88578b0 <PairingSessionSetKeychainInfo+0x40>
    e88578aa:	855e                	mv	a0,s7
    e88578ac:	89fef0ef          	jal	ra,e884714a <CFRelease>
	if( inIdentityType )	me->keychainIdentityType = inIdentityType;
    e88578b0:	000b0463          	beqz	s6,e88578b8 <PairingSessionSetKeychainInfo+0x48>
    e88578b4:	23642823          	sw	s6,560(s0)
	if( inIdentityLabel )	ReplaceCF( &me->keychainIdentityLabel, inIdentityLabel );
    e88578b8:	000a0e63          	beqz	s4,e88578d4 <PairingSessionSetKeychainInfo+0x64>
    e88578bc:	22843b03          	ld	s6,552(s0)
    e88578c0:	8552                	mv	a0,s4
    e88578c2:	885ef0ef          	jal	ra,e8847146 <CFRetain>
    e88578c6:	23443423          	sd	s4,552(s0)
    e88578ca:	000b0563          	beqz	s6,e88578d4 <PairingSessionSetKeychainInfo+0x64>
    e88578ce:	855a                	mv	a0,s6
    e88578d0:	87bef0ef          	jal	ra,e884714a <CFRelease>
	if( inIdentityDesc )	ReplaceCF( &me->keychainIdentityDesc, inIdentityDesc );
    e88578d4:	00098e63          	beqz	s3,e88578f0 <PairingSessionSetKeychainInfo+0x80>
    e88578d8:	23843a03          	ld	s4,568(s0)
    e88578dc:	854e                	mv	a0,s3
    e88578de:	869ef0ef          	jal	ra,e8847146 <CFRetain>
    e88578e2:	23343c23          	sd	s3,568(s0)
    e88578e6:	000a0563          	beqz	s4,e88578f0 <PairingSessionSetKeychainInfo+0x80>
    e88578ea:	8552                	mv	a0,s4
    e88578ec:	85fef0ef          	jal	ra,e884714a <CFRelease>
	if( inPeerType )		me->keychainPeerType = inPeerType;
    e88578f0:	000a8463          	beqz	s5,e88578f8 <PairingSessionSetKeychainInfo+0x88>
    e88578f4:	25542423          	sw	s5,584(s0)
	if( inPeerLabel )		ReplaceCF( &me->keychainPeerLabel, inPeerLabel );
    e88578f8:	00090e63          	beqz	s2,e8857914 <PairingSessionSetKeychainInfo+0xa4>
    e88578fc:	24043983          	ld	s3,576(s0)
    e8857900:	854a                	mv	a0,s2
    e8857902:	845ef0ef          	jal	ra,e8847146 <CFRetain>
    e8857906:	25243023          	sd	s2,576(s0)
    e885790a:	00098563          	beqz	s3,e8857914 <PairingSessionSetKeychainInfo+0xa4>
    e885790e:	854e                	mv	a0,s3
    e8857910:	83bef0ef          	jal	ra,e884714a <CFRelease>
	if( inPeerDesc )		ReplaceCF( &me->keychainPeerDesc, inPeerDesc );
    e8857914:	cc89                	beqz	s1,e885792e <PairingSessionSetKeychainInfo+0xbe>
    e8857916:	25043903          	ld	s2,592(s0)
    e885791a:	8526                	mv	a0,s1
    e885791c:	82bef0ef          	jal	ra,e8847146 <CFRetain>
    e8857920:	24943823          	sd	s1,592(s0)
    e8857924:	00090563          	beqz	s2,e885792e <PairingSessionSetKeychainInfo+0xbe>
    e8857928:	854a                	mv	a0,s2
    e885792a:	821ef0ef          	jal	ra,e884714a <CFRelease>
	me->keychainFlags = inFlags;
    e885792e:	5786                	lw	a5,96(sp)
}
    e8857930:	60e6                	ld	ra,88(sp)
    e8857932:	64a6                	ld	s1,72(sp)
	me->keychainFlags = inFlags;
    e8857934:	24f42c23          	sw	a5,600(s0)
}
    e8857938:	6446                	ld	s0,80(sp)
    e885793a:	6906                	ld	s2,64(sp)
    e885793c:	79e2                	ld	s3,56(sp)
    e885793e:	7a42                	ld	s4,48(sp)
    e8857940:	7aa2                	ld	s5,40(sp)
    e8857942:	7b02                	ld	s6,32(sp)
    e8857944:	6be2                	ld	s7,24(sp)
    e8857946:	6125                	addi	sp,sp,96
    e8857948:	8082                	ret

00000000e885794a <PairingSessionCreate>:
{
    e885794a:	7139                	addi	sp,sp,-64
    e885794c:	f026                	sd	s1,32(sp)
    e885794e:	f44a                	sd	s2,40(sp)
    e8857950:	f84e                	sd	s3,48(sp)
    e8857952:	fc06                	sd	ra,56(sp)
    e8857954:	ec22                	sd	s0,24(sp)
    e8857956:	84ae                	mv	s1,a1
    e8857958:	89b2                	mv	s3,a2
    e885795a:	892a                	mv	s2,a0
	me = (PairingSessionRef) _CFRuntimeCreateInstance( NULL, PairingSessionGetTypeID(), (CFIndex) extraLen, NULL );
    e885795c:	ec7ff0ef          	jal	ra,e8857822 <PairingSessionGetTypeID>
    e8857960:	0005059b          	sext.w	a1,a0
    e8857964:	4681                	li	a3,0
    e8857966:	25800613          	li	a2,600
    e885796a:	4501                	li	a0,0
    e885796c:	e09ef0ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( me, exit, err = kNoMemoryErr );
    e8857970:	c149                	beqz	a0,e88579f2 <PairingSessionCreate+0xa8>
    e8857972:	842a                	mv	s0,a0
	memset( ( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );
    e8857974:	25800613          	li	a2,600
    e8857978:	0521                	addi	a0,a0,8
    e885797a:	4581                	li	a1,0
    e885797c:	219240ef          	jal	ra,e887c394 <eLIBs_memset>
	me->type		= inType;
    e8857980:	05342423          	sw	s3,72(s0)
	me->ucat		= pair_ucat();
    e8857984:	0007d797          	auipc	a5,0x7d
    e8857988:	6f478793          	addi	a5,a5,1780 # e88d5078 <gLogCategory_Pairing>
    e885798c:	e41c                	sd	a5,8(s0)
	me->mtuPayload	= SIZE_MAX - 2;
    e885798e:	57f5                	li	a5,-3
    e8857990:	e83c                	sd	a5,80(s0)
	me->mtuTotal	= SIZE_MAX;
    e8857992:	57fd                	li	a5,-1
    e8857994:	ec3c                	sd	a5,88(s0)
	if( inDelegate )	me->delegate = *inDelegate;
    e8857996:	01040513          	addi	a0,s0,16
    e885799a:	03800613          	li	a2,56
    e885799e:	c4b1                	beqz	s1,e88579ea <PairingSessionCreate+0xa0>
    e88579a0:	85a6                	mv	a1,s1
    e88579a2:	ec6a80ef          	jal	ra,e8800068 <memcpy>
	PairingSessionSetKeychainInfo( me, CFSTR( "com.apple.pairing" ), 
    e88579a6:	00046897          	auipc	a7,0x46
    e88579aa:	cba88893          	addi	a7,a7,-838 # e889d660 <icmp6_param_problem+0x5f2>
    e88579ae:	70725637          	lui	a2,0x70725
    e88579b2:	00046717          	auipc	a4,0x46
    e88579b6:	cc670713          	addi	a4,a4,-826 # e889d678 <icmp6_param_problem+0x60a>
    e88579ba:	06560793          	addi	a5,a2,101 # 70725065 <memcmp-0x780daf9b>
    e88579be:	8522                	mv	a0,s0
    e88579c0:	e002                	sd	zero,0(sp)
    e88579c2:	8846                	mv	a6,a7
    e88579c4:	86ba                	mv	a3,a4
    e88579c6:	96460613          	addi	a2,a2,-1692
    e88579ca:	00046597          	auipc	a1,0x46
    e88579ce:	cce58593          	addi	a1,a1,-818 # e889d698 <icmp6_param_problem+0x62a>
    e88579d2:	e9fff0ef          	jal	ra,e8857870 <PairingSessionSetKeychainInfo>
	*outSession = me;
    e88579d6:	00893023          	sd	s0,0(s2)
	err = kNoErr;
    e88579da:	4501                	li	a0,0
}
    e88579dc:	70e2                	ld	ra,56(sp)
    e88579de:	6462                	ld	s0,24(sp)
    e88579e0:	7482                	ld	s1,32(sp)
    e88579e2:	7922                	ld	s2,40(sp)
    e88579e4:	79c2                	ld	s3,48(sp)
    e88579e6:	6121                	addi	sp,sp,64
    e88579e8:	8082                	ret
	else				PairingDelegateInit( &me->delegate );
    e88579ea:	4581                	li	a1,0
    e88579ec:	1a9240ef          	jal	ra,e887c394 <eLIBs_memset>
    e88579f0:	bf5d                	j	e88579a6 <PairingSessionCreate+0x5c>
	require_action( me, exit, err = kNoMemoryErr );
    e88579f2:	7579                	lui	a0,0xffffe
    e88579f4:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88579f8:	b7d5                	j	e88579dc <PairingSessionCreate+0x92>

00000000e88579fa <PairingSessionSetLogging>:
	me->ucat = inLogCategory;
    e88579fa:	e50c                	sd	a1,8(a0)
}
    e88579fc:	8082                	ret

00000000e88579fe <PairingSessionSetSetupCode>:
	return( ReplaceString( &me->setupCodePtr, &me->setupCodeLen, inPtr, inLen ) );
    e88579fe:	86b2                	mv	a3,a2
    e8857a00:	862e                	mv	a2,a1
    e8857a02:	0d050593          	addi	a1,a0,208
    e8857a06:	0c850513          	addi	a0,a0,200
    e8857a0a:	4920806f          	j	e885fe9c <ReplaceString>

00000000e8857a0e <PairingSessionDeriveKey>:
	require_action( 
    e8857a0e:	04852883          	lw	a7,72(a0)
    e8857a12:	4305                	li	t1,1
    e8857a14:	38f5                	addiw	a7,a7,-3
    e8857a16:	03136963          	bltu	t1,a7,e8857a48 <PairingSessionDeriveKey+0x3a>
    e8857a1a:	06054303          	lbu	t1,96(a0)
    e8857a1e:	4895                	li	a7,5
    e8857a20:	03131463          	bne	t1,a7,e8857a48 <PairingSessionDeriveKey+0x3a>
{
    e8857a24:	1141                	addi	sp,sp,-16
    e8857a26:	88c2                	mv	a7,a6
	HKDF_SHA512( me->sharedSecret, sizeof( me->sharedSecret ), inSaltPtr, inSaltLen, inInfoPtr, inInfoLen, inKeyLen, outKey );
    e8857a28:	1ba50513          	addi	a0,a0,442
    e8857a2c:	883e                	mv	a6,a5
    e8857a2e:	87ba                	mv	a5,a4
    e8857a30:	8736                	mv	a4,a3
    e8857a32:	86b2                	mv	a3,a2
    e8857a34:	862e                	mv	a2,a1
    e8857a36:	02000593          	li	a1,32
{
    e8857a3a:	e406                	sd	ra,8(sp)
	HKDF_SHA512( me->sharedSecret, sizeof( me->sharedSecret ), inSaltPtr, inSaltLen, inInfoPtr, inInfoLen, inKeyLen, outKey );
    e8857a3c:	586060ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
}
    e8857a40:	60a2                	ld	ra,8(sp)
	err = kNoErr;
    e8857a42:	4501                	li	a0,0
}
    e8857a44:	0141                	addi	sp,sp,16
    e8857a46:	8082                	ret
	require_action( 
    e8857a48:	7579                	lui	a0,0xffffe
    e8857a4a:	5cb50513          	addi	a0,a0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
}
    e8857a4e:	8082                	ret

00000000e8857a50 <PairingSessionCopyIdentity>:
{
    e8857a50:	7159                	addi	sp,sp,-112
    e8857a52:	f0a2                	sd	s0,96(sp)
    e8857a54:	842a                	mv	s0,a0
	if( me->delegate.copyIdentity_f )
    e8857a56:	03043303          	ld	t1,48(s0)
{
    e8857a5a:	f486                	sd	ra,104(sp)
    e8857a5c:	eca6                	sd	s1,88(sp)
    e8857a5e:	e8ca                	sd	s2,80(sp)
    e8857a60:	e4ce                	sd	s3,72(sp)
    e8857a62:	e0d2                	sd	s4,64(sp)
    e8857a64:	fc56                	sd	s5,56(sp)
    e8857a66:	f85a                	sd	s6,48(sp)
    e8857a68:	f45e                	sd	s7,40(sp)
    e8857a6a:	f062                	sd	s8,32(sp)
    e8857a6c:	ec66                	sd	s9,24(sp)
    e8857a6e:	e86a                	sd	s10,16(sp)
    e8857a70:	e46e                	sd	s11,8(sp)
    e8857a72:	852e                	mv	a0,a1
    e8857a74:	85b2                	mv	a1,a2
    e8857a76:	8636                	mv	a2,a3
    e8857a78:	86ba                	mv	a3,a4
	if( me->delegate.copyIdentity_f )
    e8857a7a:	02030263          	beqz	t1,e8857a9e <PairingSessionCopyIdentity+0x4e>
		err = me->delegate.copyIdentity_f( inAllowCreate, outIdentifier, outPK, outSK, me->delegate.context );
    e8857a7e:	6818                	ld	a4,16(s0)
}
    e8857a80:	7406                	ld	s0,96(sp)
    e8857a82:	70a6                	ld	ra,104(sp)
    e8857a84:	64e6                	ld	s1,88(sp)
    e8857a86:	6946                	ld	s2,80(sp)
    e8857a88:	69a6                	ld	s3,72(sp)
    e8857a8a:	6a06                	ld	s4,64(sp)
    e8857a8c:	7ae2                	ld	s5,56(sp)
    e8857a8e:	7b42                	ld	s6,48(sp)
    e8857a90:	7ba2                	ld	s7,40(sp)
    e8857a92:	7c02                	ld	s8,32(sp)
    e8857a94:	6ce2                	ld	s9,24(sp)
    e8857a96:	6d42                	ld	s10,16(sp)
    e8857a98:	6da2                	ld	s11,8(sp)
    e8857a9a:	6165                	addi	sp,sp,112
		err = me->delegate.copyIdentity_f( inAllowCreate, outIdentifier, outPK, outSK, me->delegate.context );
    e8857a9c:	8302                	jr	t1
    e8857a9e:	8b2a                	mv	s6,a0
		if( err == errSecAuthFailed ) break;
    e8857aa0:	7be9                	lui	s7,0xffffa
	pthread_mutex_lock( &gPairingGlobalLock );
    e8857aa2:	0007d517          	auipc	a0,0x7d
    e8857aa6:	63650513          	addi	a0,a0,1590 # e88d50d8 <gPairingGlobalLock>
    e8857aaa:	8a3a                	mv	s4,a4
    e8857aac:	89b2                	mv	s3,a2
    e8857aae:	892e                	mv	s2,a1
	for( tries = 1; tries <= maxTries; ++tries )
    e8857ab0:	4a85                	li	s5,1
	pthread_mutex_lock( &gPairingGlobalLock );
    e8857ab2:	06c240ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		if( err == errSecAuthFailed ) break;
    e8857ab6:	d33b8b93          	addi	s7,s7,-717 # ffffffffffff9d33 <__DRAM0_INF_BASE+0xffffffff00009d33>
		pair_ulog( me, kLogLevelInfo, "### Create %@ failed (try %d of %d): %#m\n", 
    e8857aba:	02800c13          	li	s8,40
    e8857abe:	5cfd                	li	s9,-1
    e8857ac0:	0006ad17          	auipc	s10,0x6a
    e8857ac4:	208d0d13          	addi	s10,s10,520 # e88c1cc8 <__PRETTY_FUNCTION__.9902+0x30>
    e8857ac8:	0006bd97          	auipc	s11,0x6b
    e8857acc:	1b0d8d93          	addi	s11,s11,432 # e88c2c78 <__PRETTY_FUNCTION__.10701>
		err = _PairingSessionCopyIdentityKeychain( me, outIdentifier, outPK, outSK );
    e8857ad0:	86d2                	mv	a3,s4
    e8857ad2:	864e                	mv	a2,s3
    e8857ad4:	85ca                	mv	a1,s2
    e8857ad6:	8522                	mv	a0,s0
    e8857ad8:	de4ff0ef          	jal	ra,e88570bc <_PairingSessionCopyIdentityKeychain>
    e8857adc:	84aa                	mv	s1,a0
		if( !err ) goto exit;
    e8857ade:	ed05                	bnez	a0,e8857b16 <PairingSessionCopyIdentity+0xc6>
		err = _PairingSessionCopyIdentityKeychain( me, outIdentifier, outPK, outSK );
    e8857ae0:	4481                	li	s1,0
	pthread_mutex_unlock( &gPairingGlobalLock );
    e8857ae2:	0007d517          	auipc	a0,0x7d
    e8857ae6:	5f650513          	addi	a0,a0,1526 # e88d50d8 <gPairingGlobalLock>
    e8857aea:	078240ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e8857aee:	7406                	ld	s0,96(sp)
    e8857af0:	70a6                	ld	ra,104(sp)
    e8857af2:	8526                	mv	a0,s1
    e8857af4:	6946                	ld	s2,80(sp)
    e8857af6:	64e6                	ld	s1,88(sp)
    e8857af8:	69a6                	ld	s3,72(sp)
    e8857afa:	6a06                	ld	s4,64(sp)
    e8857afc:	7ae2                	ld	s5,56(sp)
    e8857afe:	7b42                	ld	s6,48(sp)
    e8857b00:	7ba2                	ld	s7,40(sp)
    e8857b02:	7c02                	ld	s8,32(sp)
    e8857b04:	6ce2                	ld	s9,24(sp)
    e8857b06:	6d42                	ld	s10,16(sp)
    e8857b08:	6da2                	ld	s11,8(sp)
    e8857b0a:	6165                	addi	sp,sp,112
    e8857b0c:	8082                	ret
		if( tries != 1 ) usleep( 20000 );
    e8857b0e:	4509                	li	a0,2
    e8857b10:	506240ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e8857b14:	bf75                	j	e8857ad0 <PairingSessionCopyIdentity+0x80>
		if( err == errSecAuthFailed ) break;
    e8857b16:	05750263          	beq	a0,s7,e8857b5a <PairingSessionCopyIdentity+0x10a>
		require_quiet( inAllowCreate, exit );
    e8857b1a:	fc0b04e3          	beqz	s6,e8857ae2 <PairingSessionCopyIdentity+0x92>
		err = _PairingSessionCreateIdentityKeychain( me, outIdentifier, outPK, outSK );
    e8857b1e:	86d2                	mv	a3,s4
    e8857b20:	864e                	mv	a2,s3
    e8857b22:	85ca                	mv	a1,s2
    e8857b24:	8522                	mv	a0,s0
    e8857b26:	efcff0ef          	jal	ra,e8857222 <_PairingSessionCreateIdentityKeychain>
    e8857b2a:	84aa                	mv	s1,a0
		if( !err ) goto exit;
    e8857b2c:	d955                	beqz	a0,e8857ae0 <PairingSessionCopyIdentity+0x90>
		pair_ulog( me, kLogLevelInfo, "### Create %@ failed (try %d of %d): %#m\n", 
    e8857b2e:	6408                	ld	a0,8(s0)
    e8857b30:	411c                	lw	a5,0(a0)
    e8857b32:	02fc4063          	blt	s8,a5,e8857b52 <PairingSessionCopyIdentity+0x102>
    e8857b36:	05978d63          	beq	a5,s9,e8857b90 <PairingSessionCopyIdentity+0x140>
    e8857b3a:	22843703          	ld	a4,552(s0)
    e8857b3e:	6408                	ld	a0,8(s0)
    e8857b40:	88a6                	mv	a7,s1
    e8857b42:	4829                	li	a6,10
    e8857b44:	87d6                	mv	a5,s5
    e8857b46:	86ea                	mv	a3,s10
    e8857b48:	02800613          	li	a2,40
    e8857b4c:	85ee                	mv	a1,s11
    e8857b4e:	927fc0ef          	jal	ra,e8854474 <LogPrintF>
	for( tries = 1; tries <= maxTries; ++tries )
    e8857b52:	2a85                	addiw	s5,s5,1
    e8857b54:	47ad                	li	a5,11
    e8857b56:	fafa9ce3          	bne	s5,a5,e8857b0e <PairingSessionCopyIdentity+0xbe>
	pair_ulog( me, kLogLevelWarning, "### Failed to create %@ after %d tries: %#m\n", 
    e8857b5a:	6408                	ld	a0,8(s0)
    e8857b5c:	03c00713          	li	a4,60
    e8857b60:	411c                	lw	a5,0(a0)
    e8857b62:	f8f740e3          	blt	a4,a5,e8857ae2 <PairingSessionCopyIdentity+0x92>
    e8857b66:	577d                	li	a4,-1
    e8857b68:	02e78a63          	beq	a5,a4,e8857b9c <PairingSessionCopyIdentity+0x14c>
    e8857b6c:	22843703          	ld	a4,552(s0)
    e8857b70:	6408                	ld	a0,8(s0)
    e8857b72:	8826                	mv	a6,s1
    e8857b74:	47a9                	li	a5,10
    e8857b76:	0006a697          	auipc	a3,0x6a
    e8857b7a:	18268693          	addi	a3,a3,386 # e88c1cf8 <__PRETTY_FUNCTION__.9902+0x60>
    e8857b7e:	03c00613          	li	a2,60
    e8857b82:	0006b597          	auipc	a1,0x6b
    e8857b86:	0f658593          	addi	a1,a1,246 # e88c2c78 <__PRETTY_FUNCTION__.10701>
    e8857b8a:	8ebfc0ef          	jal	ra,e8854474 <LogPrintF>
    e8857b8e:	bf91                	j	e8857ae2 <PairingSessionCopyIdentity+0x92>
		pair_ulog( me, kLogLevelInfo, "### Create %@ failed (try %d of %d): %#m\n", 
    e8857b90:	02800593          	li	a1,40
    e8857b94:	cdefc0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8857b98:	dd4d                	beqz	a0,e8857b52 <PairingSessionCopyIdentity+0x102>
    e8857b9a:	b745                	j	e8857b3a <PairingSessionCopyIdentity+0xea>
	pair_ulog( me, kLogLevelWarning, "### Failed to create %@ after %d tries: %#m\n", 
    e8857b9c:	03c00593          	li	a1,60
    e8857ba0:	cd2fc0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8857ba4:	dd1d                	beqz	a0,e8857ae2 <PairingSessionCopyIdentity+0x92>
    e8857ba6:	b7d9                	j	e8857b6c <PairingSessionCopyIdentity+0x11c>

00000000e8857ba8 <PairingSessionFindPeer>:
//===========================================================================================================================
//	PairingSessionFindPeer
//===========================================================================================================================

OSStatus	PairingSessionFindPeer( PairingSessionRef me, const void *inIdentifierPtr, size_t inIdentifierLen, uint8_t *outPK )
{
    e8857ba8:	7119                	addi	sp,sp,-128
    e8857baa:	f8a2                	sd	s0,112(sp)
    e8857bac:	f4a6                	sd	s1,104(sp)
    e8857bae:	f0ca                	sd	s2,96(sp)
    e8857bb0:	fc86                	sd	ra,120(sp)
	OSStatus		err;
	
	if( me->delegate.findPeer_f )
    e8857bb2:	7d1c                	ld	a5,56(a0)
{
    e8857bb4:	84ae                	mv	s1,a1
    e8857bb6:	842a                	mv	s0,a0
    e8857bb8:	85b2                	mv	a1,a2
    e8857bba:	8936                	mv	s2,a3
	if( me->delegate.findPeer_f )
    e8857bbc:	c385                	beqz	a5,e8857bdc <PairingSessionFindPeer+0x34>
	{
		err = me->delegate.findPeer_f( inIdentifierPtr, inIdentifierLen, outPK, me->delegate.context );
    e8857bbe:	6914                	ld	a3,16(a0)
    e8857bc0:	864a                	mv	a2,s2
    e8857bc2:	8526                	mv	a0,s1
    e8857bc4:	9782                	jalr	a5
		require_noerr_action_quiet( err, exit, err = kNotFoundErr );
    e8857bc6:	10050063          	beqz	a0,e8857cc6 <PairingSessionFindPeer+0x11e>
    e8857bca:	7579                	lui	a0,0xffffe
    e8857bcc:	5b950513          	addi	a0,a0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
		#endif
	}
	
exit:
	return( err );
}
    e8857bd0:	70e6                	ld	ra,120(sp)
    e8857bd2:	7446                	ld	s0,112(sp)
    e8857bd4:	74a6                	ld	s1,104(sp)
    e8857bd6:	7906                	ld	s2,96(sp)
    e8857bd8:	6109                	addi	sp,sp,128
    e8857bda:	8082                	ret
{
	OSStatus		err;
	CFDataRef		data;
	size_t			len;
	
	pthread_mutex_lock( &gPairingGlobalLock );
    e8857bdc:	0007d517          	auipc	a0,0x7d
    e8857be0:	4fc50513          	addi	a0,a0,1276 # e88d50d8 <gPairingGlobalLock>
    e8857be4:	e4b2                	sd	a2,72(sp)
    e8857be6:	739230ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	
	if( inIdentifierLen == kSizeCString ) inIdentifierLen = strlen( (const char *) inIdentifierPtr );
    e8857bea:	65a6                	ld	a1,72(sp)
    e8857bec:	57fd                	li	a5,-1
    e8857bee:	00f59763          	bne	a1,a5,e8857bfc <PairingSessionFindPeer+0x54>
    e8857bf2:	8526                	mv	a0,s1
    e8857bf4:	724240ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8857bf8:	7c05358b          	extu	a1,a0,31,0
	data = (CFDataRef) KeychainCopyMatchingFormatted( &err, 
    e8857bfc:	0007d797          	auipc	a5,0x7d
    e8857c00:	0d478793          	addi	a5,a5,212 # e88d4cd0 <kCFLBooleanTrue>
    e8857c04:	639c                	ld	a5,0(a5)
    e8857c06:	2581                	sext.w	a1,a1
    e8857c08:	ec2e                	sd	a1,24(sp)
    e8857c0a:	f83e                	sd	a5,48(sp)
    e8857c0c:	00046797          	auipc	a5,0x46
    e8857c10:	8d478793          	addi	a5,a5,-1836 # e889d4e0 <icmp6_param_problem+0x472>
    e8857c14:	f43e                	sd	a5,40(sp)
    e8857c16:	00046797          	auipc	a5,0x46
    e8857c1a:	94a78793          	addi	a5,a5,-1718 # e889d560 <icmp6_param_problem+0x4f2>
    e8857c1e:	e83e                	sd	a5,16(sp)
    e8857c20:	00046797          	auipc	a5,0x46
    e8857c24:	8f878793          	addi	a5,a5,-1800 # e889d518 <icmp6_param_problem+0x4aa>
    e8857c28:	e43e                	sd	a5,8(sp)
    e8857c2a:	00046797          	auipc	a5,0x46
    e8857c2e:	91678793          	addi	a5,a5,-1770 # e889d540 <icmp6_param_problem+0x4d2>
    e8857c32:	f026                	sd	s1,32(sp)
    e8857c34:	e03e                	sd	a5,0(sp)
    e8857c36:	22043783          	ld	a5,544(s0)
    e8857c3a:	24842883          	lw	a7,584(s0)
    e8857c3e:	00046817          	auipc	a6,0x46
    e8857c42:	80a80813          	addi	a6,a6,-2038 # e889d448 <icmp6_param_problem+0x3da>
    e8857c46:	00046717          	auipc	a4,0x46
    e8857c4a:	87a70713          	addi	a4,a4,-1926 # e889d4c0 <icmp6_param_problem+0x452>
    e8857c4e:	00046697          	auipc	a3,0x46
    e8857c52:	81268693          	addi	a3,a3,-2030 # e889d460 <icmp6_param_problem+0x3f2>
    e8857c56:	00046617          	auipc	a2,0x46
    e8857c5a:	83260613          	addi	a2,a2,-1998 # e889d488 <icmp6_param_problem+0x41a>
    e8857c5e:	0006a597          	auipc	a1,0x6a
    e8857c62:	0e258593          	addi	a1,a1,226 # e88c1d40 <__PRETTY_FUNCTION__.9902+0xa8>
    e8857c66:	08c8                	addi	a0,sp,84
    e8857c68:	da2fb0ef          	jal	ra,e885320a <KeychainCopyMatchingFormatted>
    e8857c6c:	842a                	mv	s0,a0
		#endif
		kSecAttrType,			me->keychainPeerType, 
		kSecAttrSynchronizable,	kSecAttrSynchronizableAny, 
		kSecAttrAccount,		(int) inIdentifierLen, inIdentifierPtr, 
		kSecReturnData,			kCFBooleanTrue );
	require_noerr_quiet( err, exit );
    e8857c6e:	47d6                	lw	a5,84(sp)
    e8857c70:	ef95                	bnez	a5,e8857cac <PairingSessionFindPeer+0x104>
	
	len = 0;
    e8857c72:	ec82                	sd	zero,88(sp)
	err = HexToData( CFDataGetBytePtr( data ), (size_t) CFDataGetLength( data ), kHexToData_DefaultFlags, 
    e8857c74:	e78ef0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e8857c78:	84aa                	mv	s1,a0
    e8857c7a:	8522                	mv	a0,s0
    e8857c7c:	e5aef0ef          	jal	ra,e88472d6 <CFDataGetLength>
    e8857c80:	85aa                	mv	a1,a0
    e8857c82:	4881                	li	a7,0
    e8857c84:	4801                	li	a6,0
    e8857c86:	08bc                	addi	a5,sp,88
    e8857c88:	02000713          	li	a4,32
    e8857c8c:	86ca                	mv	a3,s2
    e8857c8e:	4659                	li	a2,22
    e8857c90:	8526                	mv	a0,s1
    e8857c92:	566070ef          	jal	ra,e885f1f8 <HexToData>
    e8857c96:	caaa                	sw	a0,84(sp)
		outPK, 32, &len, NULL, NULL );
	require_noerr( err, exit );
    e8857c98:	e911                	bnez	a0,e8857cac <PairingSessionFindPeer+0x104>
	require_action( len == 32, exit, err = kSizeErr );
    e8857c9a:	6766                	ld	a4,88(sp)
    e8857c9c:	02000793          	li	a5,32
    e8857ca0:	00f70663          	beq	a4,a5,e8857cac <PairingSessionFindPeer+0x104>
    e8857ca4:	77f9                	lui	a5,0xffffe
    e8857ca6:	5a97879b          	addiw	a5,a5,1449
    e8857caa:	cabe                	sw	a5,84(sp)
	
exit:
	CFReleaseNullSafe( data );
    e8857cac:	c401                	beqz	s0,e8857cb4 <PairingSessionFindPeer+0x10c>
    e8857cae:	8522                	mv	a0,s0
    e8857cb0:	c9aef0ef          	jal	ra,e884714a <CFRelease>
	pthread_mutex_unlock( &gPairingGlobalLock );
    e8857cb4:	0007d517          	auipc	a0,0x7d
    e8857cb8:	42450513          	addi	a0,a0,1060 # e88d50d8 <gPairingGlobalLock>
    e8857cbc:	6a7230ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	return( err );
    e8857cc0:	47d6                	lw	a5,84(sp)
			require_noerr_action_quiet( err, exit, err = kNotFoundErr );
    e8857cc2:	f00794e3          	bnez	a5,e8857bca <PairingSessionFindPeer+0x22>
		require_noerr_action_quiet( err, exit, err = kNotFoundErr );
    e8857cc6:	4501                	li	a0,0
    e8857cc8:	b721                	j	e8857bd0 <PairingSessionFindPeer+0x28>

00000000e8857cca <_VerifyPairingClientExchange>:
{
    e8857cca:	c7010113          	addi	sp,sp,-912
    e8857cce:	35613823          	sd	s6,848(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8857cd2:	6b11                	lui	s6,0x4
{
    e8857cd4:	38813023          	sd	s0,896(sp)
    e8857cd8:	36913c23          	sd	s1,888(sp)
    e8857cdc:	37213823          	sd	s2,880(sp)
	const uint8_t * const		inputEnd = inputPtr + inInputLen;
    e8857ce0:	00c584b3          	add	s1,a1,a2
{
    e8857ce4:	842a                	mv	s0,a0
    e8857ce6:	892e                	mv	s2,a1
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8857ce8:	0108                	addi	a0,sp,128
    e8857cea:	e80b0593          	addi	a1,s6,-384 # 3e80 <memcmp-0xe87fc180>
{
    e8857cee:	e83e                	sd	a5,16(sp)
    e8857cf0:	38113423          	sd	ra,904(sp)
    e8857cf4:	37313423          	sd	s3,872(sp)
    e8857cf8:	37413023          	sd	s4,864(sp)
    e8857cfc:	35513c23          	sd	s5,856(sp)
    e8857d00:	89b2                	mv	s3,a2
    e8857d02:	8ab6                	mv	s5,a3
    e8857d04:	8a3a                	mv	s4,a4
    e8857d06:	35713423          	sd	s7,840(sp)
    e8857d0a:	35813023          	sd	s8,832(sp)
    e8857d0e:	33913c23          	sd	s9,824(sp)
    e8857d12:	33a13823          	sd	s10,816(sp)
    e8857d16:	33b13423          	sd	s11,808(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8857d1a:	28e090ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	TLV8BufferInit( &etlv, kMaxTLVSize );
    e8857d1e:	e80b0593          	addi	a1,s6,-384
    e8857d22:	0b88                	addi	a0,sp,464
    e8857d24:	284090ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	if( me->state == kPairingStateInvalid ) me->state = kPairVerifyStateM1;
    e8857d28:	06044783          	lbu	a5,96(s0)
    e8857d2c:	e781                	bnez	a5,e8857d34 <_VerifyPairingClientExchange+0x6a>
    e8857d2e:	4785                	li	a5,1
    e8857d30:	06f40023          	sb	a5,96(s0)
	if( inInputLen > 0 )
    e8857d34:	04098363          	beqz	s3,e8857d7a <_VerifyPairingClientExchange+0xb0>
		err = TLV8Get( inputPtr, inputEnd, kTLVType_State, &ptr, &len, NULL );
    e8857d38:	4781                	li	a5,0
    e8857d3a:	1818                	addi	a4,sp,48
    e8857d3c:	1034                	addi	a3,sp,40
    e8857d3e:	4619                	li	a2,6
    e8857d40:	85a6                	mv	a1,s1
    e8857d42:	854a                	mv	a0,s2
    e8857d44:	771080ef          	jal	ra,e8860cb4 <TLV8Get>
    e8857d48:	d22a                	sw	a0,36(sp)
		require_noerr( err, exit );
    e8857d4a:	c501                	beqz	a0,e8857d52 <_VerifyPairingClientExchange+0x88>
	uint8_t *					eptr	= NULL;
    e8857d4c:	4481                	li	s1,0
    e8857d4e:	4d81                	li	s11,0
    e8857d50:	a655                	j	e88580f4 <_VerifyPairingClientExchange+0x42a>
		require_action( len == 1, exit, err = kSizeErr );
    e8857d52:	7742                	ld	a4,48(sp)
    e8857d54:	4785                	li	a5,1
    e8857d56:	00f70763          	beq	a4,a5,e8857d64 <_VerifyPairingClientExchange+0x9a>
    e8857d5a:	77f9                	lui	a5,0xffffe
    e8857d5c:	5a97879b          	addiw	a5,a5,1449
    e8857d60:	d23e                	sw	a5,36(sp)
    e8857d62:	b7ed                	j	e8857d4c <_VerifyPairingClientExchange+0x82>
		require_action( *ptr == me->state, exit, err = kStateErr );
    e8857d64:	77a2                	ld	a5,40(sp)
    e8857d66:	0007c703          	lbu	a4,0(a5) # ffffffffffffe000 <__DRAM0_INF_BASE+0xffffffff0000e000>
    e8857d6a:	06044783          	lbu	a5,96(s0)
    e8857d6e:	00f70663          	beq	a4,a5,e8857d7a <_VerifyPairingClientExchange+0xb0>
    e8857d72:	77f9                	lui	a5,0xffffe
    e8857d74:	5cb7879b          	addiw	a5,a5,1483
    e8857d78:	b7e5                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
	switch( me->state )
    e8857d7a:	06044783          	lbu	a5,96(s0)
    e8857d7e:	4709                	li	a4,2
    e8857d80:	1ae78363          	beq	a5,a4,e8857f26 <_VerifyPairingClientExchange+0x25c>
    e8857d84:	4711                	li	a4,4
    e8857d86:	50e78a63          	beq	a5,a4,e885829a <_VerifyPairingClientExchange+0x5d0>
    e8857d8a:	4705                	li	a4,1
    e8857d8c:	62e79d63          	bne	a5,a4,e88583c6 <_VerifyPairingClientExchange+0x6fc>
			require_action( inInputLen == 0, exit, err = kParamErr );
    e8857d90:	00098663          	beqz	s3,e8857d9c <_VerifyPairingClientExchange+0xd2>
    e8857d94:	77f9                	lui	a5,0xffffe
    e8857d96:	5cf7879b          	addiw	a5,a5,1487
    e8857d9a:	b7d9                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
			err = RandomBytes( me->ourCurveSK, sizeof( me->ourCurveSK ) );
    e8857d9c:	11a40493          	addi	s1,s0,282
    e8857da0:	02000593          	li	a1,32
    e8857da4:	8526                	mv	a0,s1
    e8857da6:	2fe050ef          	jal	ra,e885d0a4 <RandomBytes>
    e8857daa:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8857dac:	f145                	bnez	a0,e8857d4c <_VerifyPairingClientExchange+0x82>
			HKDF_SHA512( me->ourCurveSK, sizeof( me->ourCurveSK ), 
    e8857dae:	88a6                	mv	a7,s1
    e8857db0:	02000813          	li	a6,32
    e8857db4:	47d5                	li	a5,21
    e8857db6:	0006b717          	auipc	a4,0x6b
    e8857dba:	a2270713          	addi	a4,a4,-1502 # e88c27d8 <__PRETTY_FUNCTION__.9902+0xb40>
    e8857dbe:	46d5                	li	a3,21
    e8857dc0:	0006b617          	auipc	a2,0x6b
    e8857dc4:	a3060613          	addi	a2,a2,-1488 # e88c27f0 <__PRETTY_FUNCTION__.9902+0xb58>
    e8857dc8:	02000593          	li	a1,32
    e8857dcc:	8526                	mv	a0,s1
    e8857dce:	1f4060ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			curve25519( me->ourCurvePK, me->ourCurveSK, NULL );
    e8857dd2:	0fa40b13          	addi	s6,s0,250
    e8857dd6:	4601                	li	a2,0
    e8857dd8:	85a6                	mv	a1,s1
    e8857dda:	855a                	mv	a0,s6
    e8857ddc:	3d2200ef          	jal	ra,e88781ae <curve25519_donna>
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e8857de0:	4685                	li	a3,1
    e8857de2:	06040613          	addi	a2,s0,96
    e8857de6:	4599                	li	a1,6
    e8857de8:	0108                	addi	a0,sp,128
    e8857dea:	1f0090ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e8857dee:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8857df0:	fd31                	bnez	a0,e8857d4c <_VerifyPairingClientExchange+0x82>
			err = TLV8BufferAppend( &tlv, kTLVType_PublicKey, me->ourCurvePK, sizeof( me->ourCurvePK ) );
    e8857df2:	02000693          	li	a3,32
    e8857df6:	865a                	mv	a2,s6
    e8857df8:	458d                	li	a1,3
    e8857dfa:	0108                	addi	a0,sp,128
    e8857dfc:	1de090ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e8857e00:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8857e02:	f529                	bnez	a0,e8857d4c <_VerifyPairingClientExchange+0x82>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8857e04:	8652                	mv	a2,s4
    e8857e06:	85d6                	mv	a1,s5
    e8857e08:	0108                	addi	a0,sp,128
    e8857e0a:	30e090ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e8857e0e:	d22a                	sw	a0,36(sp)
    e8857e10:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e8857e12:	fd0d                	bnez	a0,e8857d4c <_VerifyPairingClientExchange+0x82>
			pair_ulog( me, kLogLevelTrace, "Pair-verify client M1 -- start request\n%?{end}%1{tlv8}\n", 
    e8857e14:	6408                	ld	a0,8(s0)
    e8857e16:	46f9                	li	a3,30
    e8857e18:	411c                	lw	a5,0(a0)
    e8857e1a:	06f6c063          	blt	a3,a5,e8857e7a <_VerifyPairingClientExchange+0x1b0>
    e8857e1e:	56fd                	li	a3,-1
    e8857e20:	04d78763          	beq	a5,a3,e8857e6e <_VerifyPairingClientExchange+0x1a4>
    e8857e24:	6404                	ld	s1,8(s0)
    e8857e26:	46d1                	li	a3,20
    e8857e28:	409c                	lw	a5,0(s1)
    e8857e2a:	0ef6cc63          	blt	a3,a5,e8857f22 <_VerifyPairingClientExchange+0x258>
    e8857e2e:	56fd                	li	a3,-1
    e8857e30:	00d79a63          	bne	a5,a3,e8857e44 <_VerifyPairingClientExchange+0x17a>
    e8857e34:	45d1                	li	a1,20
    e8857e36:	8526                	mv	a0,s1
    e8857e38:	a3afc0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8857e3c:	0005071b          	sext.w	a4,a0
    e8857e40:	00173713          	seqz	a4,a4
    e8857e44:	000a2883          	lw	a7,0(s4)
    e8857e48:	000ab803          	ld	a6,0(s5)
    e8857e4c:	00046797          	auipc	a5,0x46
    e8857e50:	86c78793          	addi	a5,a5,-1940 # e889d6b8 <icmp6_param_problem+0x64a>
    e8857e54:	0006b697          	auipc	a3,0x6b
    e8857e58:	9b468693          	addi	a3,a3,-1612 # e88c2808 <__PRETTY_FUNCTION__.9902+0xb70>
    e8857e5c:	4679                	li	a2,30
    e8857e5e:	0006b597          	auipc	a1,0x6b
    e8857e62:	dda58593          	addi	a1,a1,-550 # e88c2c38 <__PRETTY_FUNCTION__.10595>
    e8857e66:	8526                	mv	a0,s1
    e8857e68:	e0cfc0ef          	jal	ra,e8854474 <LogPrintF>
    e8857e6c:	a039                	j	e8857e7a <_VerifyPairingClientExchange+0x1b0>
    e8857e6e:	45f9                	li	a1,30
    e8857e70:	ec3a                	sd	a4,24(sp)
    e8857e72:	a00fc0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8857e76:	6762                	ld	a4,24(sp)
    e8857e78:	f555                	bnez	a0,e8857e24 <_VerifyPairingClientExchange+0x15a>
			me->state = kPairVerifyStateM2;
    e8857e7a:	4789                	li	a5,2
    e8857e7c:	06f40023          	sb	a5,96(s0)
	uint8_t *					eptr	= NULL;
    e8857e80:	4481                	li	s1,0
	Boolean						done     = false;
    e8857e82:	4781                	li	a5,0
	err = kNoErr;
    e8857e84:	d202                	sw	zero,36(sp)
    e8857e86:	4d81                	li	s11,0
	*outDone = done;
    e8857e88:	6742                	ld	a4,16(sp)
	TLV8BufferFree( &tlv );
    e8857e8a:	0108                	addi	a0,sp,128
	*outDone = done;
    e8857e8c:	00f70023          	sb	a5,0(a4)
	TLV8BufferFree( &tlv );
    e8857e90:	12a090ef          	jal	ra,e8860fba <TLV8BufferFree>
	TLV8BufferFree( &etlv );
    e8857e94:	0b88                	addi	a0,sp,464
    e8857e96:	124090ef          	jal	ra,e8860fba <TLV8BufferFree>
	ForgetMem( &storage );
    e8857e9a:	000d8563          	beqz	s11,e8857ea4 <_VerifyPairingClientExchange+0x1da>
    e8857e9e:	856e                	mv	a0,s11
    e8857ea0:	460240ef          	jal	ra,e887c300 <eLIBs_free>
	ForgetMem( &eptr );
    e8857ea4:	c481                	beqz	s1,e8857eac <_VerifyPairingClientExchange+0x1e2>
    e8857ea6:	8526                	mv	a0,s1
    e8857ea8:	458240ef          	jal	ra,e887c300 <eLIBs_free>
	if( err )
    e8857eac:	5792                	lw	a5,36(sp)
    e8857eae:	56078263          	beqz	a5,e8858412 <_VerifyPairingClientExchange+0x748>
		pair_ulog( me, kLogLevelWarning, "### Pair-verify client state %d failed: %#m\n%?{end}%1{tlv8}\n", 
    e8857eb2:	6408                	ld	a0,8(s0)
    e8857eb4:	03c00713          	li	a4,60
    e8857eb8:	411c                	lw	a5,0(a0)
    e8857eba:	54f74c63          	blt	a4,a5,e8858412 <_VerifyPairingClientExchange+0x748>
    e8857ebe:	577d                	li	a4,-1
    e8857ec0:	54e78363          	beq	a5,a4,e8858406 <_VerifyPairingClientExchange+0x73c>
    e8857ec4:	6404                	ld	s1,8(s0)
    e8857ec6:	02800613          	li	a2,40
    e8857eca:	06044703          	lbu	a4,96(s0)
    e8857ece:	4094                	lw	a3,0(s1)
    e8857ed0:	5792                	lw	a5,36(sp)
    e8857ed2:	4805                	li	a6,1
    e8857ed4:	02d64263          	blt	a2,a3,e8857ef8 <_VerifyPairingClientExchange+0x22e>
    e8857ed8:	567d                	li	a2,-1
    e8857eda:	4801                	li	a6,0
    e8857edc:	00c69e63          	bne	a3,a2,e8857ef8 <_VerifyPairingClientExchange+0x22e>
    e8857ee0:	02800593          	li	a1,40
    e8857ee4:	8526                	mv	a0,s1
    e8857ee6:	ec3e                	sd	a5,24(sp)
    e8857ee8:	e83a                	sd	a4,16(sp)
    e8857eea:	988fc0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8857eee:	2501                	sext.w	a0,a0
    e8857ef0:	67e2                	ld	a5,24(sp)
    e8857ef2:	6742                	ld	a4,16(sp)
    e8857ef4:	00153813          	seqz	a6,a0
    e8857ef8:	2981                	sext.w	s3,s3
    e8857efa:	e44e                	sd	s3,8(sp)
    e8857efc:	e04a                	sd	s2,0(sp)
    e8857efe:	00045897          	auipc	a7,0x45
    e8857f02:	7ba88893          	addi	a7,a7,1978 # e889d6b8 <icmp6_param_problem+0x64a>
    e8857f06:	0006b697          	auipc	a3,0x6b
    e8857f0a:	aa268693          	addi	a3,a3,-1374 # e88c29a8 <__PRETTY_FUNCTION__.9902+0xd10>
    e8857f0e:	03c00613          	li	a2,60
    e8857f12:	0006b597          	auipc	a1,0x6b
    e8857f16:	d2658593          	addi	a1,a1,-730 # e88c2c38 <__PRETTY_FUNCTION__.10595>
    e8857f1a:	8526                	mv	a0,s1
    e8857f1c:	d58fc0ef          	jal	ra,e8854474 <LogPrintF>
    e8857f20:	a9cd                	j	e8858412 <_VerifyPairingClientExchange+0x748>
			pair_ulog( me, kLogLevelTrace, "Pair-verify client M1 -- start request\n%?{end}%1{tlv8}\n", 
    e8857f22:	4705                	li	a4,1
    e8857f24:	b705                	j	e8857e44 <_VerifyPairingClientExchange+0x17a>
			pair_ulog( me, kLogLevelTrace, "Pair-verify client M2 -- start response\n%?{end}%1{tlv8}\n", 
    e8857f26:	6408                	ld	a0,8(s0)
    e8857f28:	4779                	li	a4,30
    e8857f2a:	411c                	lw	a5,0(a0)
    e8857f2c:	06f74163          	blt	a4,a5,e8857f8e <_VerifyPairingClientExchange+0x2c4>
    e8857f30:	577d                	li	a4,-1
    e8857f32:	04e78a63          	beq	a5,a4,e8857f86 <_VerifyPairingClientExchange+0x2bc>
    e8857f36:	00843b03          	ld	s6,8(s0)
    e8857f3a:	46d1                	li	a3,20
    e8857f3c:	4705                	li	a4,1
    e8857f3e:	000b2783          	lw	a5,0(s6)
    e8857f42:	00f6ce63          	blt	a3,a5,e8857f5e <_VerifyPairingClientExchange+0x294>
    e8857f46:	56fd                	li	a3,-1
    e8857f48:	4701                	li	a4,0
    e8857f4a:	00d79a63          	bne	a5,a3,e8857f5e <_VerifyPairingClientExchange+0x294>
    e8857f4e:	45d1                	li	a1,20
    e8857f50:	855a                	mv	a0,s6
    e8857f52:	920fc0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8857f56:	0005071b          	sext.w	a4,a0
    e8857f5a:	00173713          	seqz	a4,a4
    e8857f5e:	0009889b          	sext.w	a7,s3
    e8857f62:	884a                	mv	a6,s2
    e8857f64:	00045797          	auipc	a5,0x45
    e8857f68:	75478793          	addi	a5,a5,1876 # e889d6b8 <icmp6_param_problem+0x64a>
    e8857f6c:	0006b697          	auipc	a3,0x6b
    e8857f70:	8d468693          	addi	a3,a3,-1836 # e88c2840 <__PRETTY_FUNCTION__.9902+0xba8>
    e8857f74:	4679                	li	a2,30
    e8857f76:	0006b597          	auipc	a1,0x6b
    e8857f7a:	cc258593          	addi	a1,a1,-830 # e88c2c38 <__PRETTY_FUNCTION__.10595>
    e8857f7e:	855a                	mv	a0,s6
    e8857f80:	cf4fc0ef          	jal	ra,e8854474 <LogPrintF>
    e8857f84:	a029                	j	e8857f8e <_VerifyPairingClientExchange+0x2c4>
    e8857f86:	45f9                	li	a1,30
    e8857f88:	8eafc0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8857f8c:	f54d                	bnez	a0,e8857f36 <_VerifyPairingClientExchange+0x26c>
			err = TLV8GetBytes( inputPtr, inputEnd, kTLVType_PublicKey, 32, 32, me->peerCurvePK, NULL, NULL );
    e8857f8e:	17a40b13          	addi	s6,s0,378
    e8857f92:	4881                	li	a7,0
    e8857f94:	4801                	li	a6,0
    e8857f96:	87da                	mv	a5,s6
    e8857f98:	02000713          	li	a4,32
    e8857f9c:	02000693          	li	a3,32
    e8857fa0:	460d                	li	a2,3
    e8857fa2:	85a6                	mv	a1,s1
    e8857fa4:	854a                	mv	a0,s2
    e8857fa6:	5d9080ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e8857faa:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8857fac:	da0510e3          	bnez	a0,e8857d4c <_VerifyPairingClientExchange+0x82>
			curve25519( me->sharedSecret, me->ourCurveSK, me->peerCurvePK );
    e8857fb0:	1ba40c13          	addi	s8,s0,442
    e8857fb4:	865a                	mv	a2,s6
    e8857fb6:	11a40593          	addi	a1,s0,282
    e8857fba:	8562                	mv	a0,s8
    e8857fbc:	1f2200ef          	jal	ra,e88781ae <curve25519_donna>
			HKDF_SHA512( me->sharedSecret, sizeof( me->sharedSecret ), 
    e8857fc0:	0da40b93          	addi	s7,s0,218
    e8857fc4:	88de                	mv	a7,s7
    e8857fc6:	02000813          	li	a6,32
    e8857fca:	47e1                	li	a5,24
    e8857fcc:	0006b717          	auipc	a4,0x6b
    e8857fd0:	8b470713          	addi	a4,a4,-1868 # e88c2880 <__PRETTY_FUNCTION__.9902+0xbe8>
    e8857fd4:	46e1                	li	a3,24
    e8857fd6:	0006b617          	auipc	a2,0x6b
    e8857fda:	8ca60613          	addi	a2,a2,-1846 # e88c28a0 <__PRETTY_FUNCTION__.9902+0xc08>
    e8857fde:	02000593          	li	a1,32
    e8857fe2:	8562                	mv	a0,s8
    e8857fe4:	7df050ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			eptr = TLV8CopyCoalesced( inputPtr, inputEnd, kTLVType_EncryptedData, &elen, NULL, &err );
    e8857fe8:	105c                	addi	a5,sp,36
    e8857fea:	85a6                	mv	a1,s1
    e8857fec:	4701                	li	a4,0
    e8857fee:	1834                	addi	a3,sp,56
    e8857ff0:	4615                	li	a2,5
    e8857ff2:	854a                	mv	a0,s2
    e8857ff4:	73d080ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e8857ff8:	84aa                	mv	s1,a0
			require_noerr( err, exit );
    e8857ffa:	5792                	lw	a5,36(sp)
    e8857ffc:	d40799e3          	bnez	a5,e8857d4e <_VerifyPairingClientExchange+0x84>
			require_action( elen > 16, exit, err = kSizeErr );
    e8858000:	77e2                	ld	a5,56(sp)
    e8858002:	4741                	li	a4,16
    e8858004:	00f76763          	bltu	a4,a5,e8858012 <_VerifyPairingClientExchange+0x348>
			require_action( me->peerIdentifierLen > 0, exit, err = kSizeErr );
    e8858008:	77f9                	lui	a5,0xffffe
    e885800a:	5a97879b          	addiw	a5,a5,1449
			require_action( me->activeIdentifierLen > 0, exit, err = kIDErr );
    e885800e:	d23e                	sw	a5,36(sp)
    e8858010:	bb3d                	j	e8857d4e <_VerifyPairingClientExchange+0x84>
			elen -= 16;
    e8858012:	17c1                	addi	a5,a5,-16
			eend = eptr + elen;
    e8858014:	00f50cb3          	add	s9,a0,a5
			err = chacha20_poly1305_decrypt_all_64x64( me->key, (const uint8_t *) "PV-Msg02", NULL, 0, eptr, elen, eptr, eend );
    e8858018:	882a                	mv	a6,a0
    e885801a:	872a                	mv	a4,a0
    e885801c:	88e6                	mv	a7,s9
    e885801e:	4681                	li	a3,0
    e8858020:	4601                	li	a2,0
    e8858022:	0006b597          	auipc	a1,0x6b
    e8858026:	89e58593          	addi	a1,a1,-1890 # e88c28c0 <__PRETTY_FUNCTION__.9902+0xc28>
    e885802a:	855e                	mv	a0,s7
			elen -= 16;
    e885802c:	fc3e                	sd	a5,56(sp)
			err = chacha20_poly1305_decrypt_all_64x64( me->key, (const uint8_t *) "PV-Msg02", NULL, 0, eptr, elen, eptr, eend );
    e885802e:	8a4f60ef          	jal	ra,e884e0d2 <chacha20_poly1305_decrypt_all_64x64>
    e8858032:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8858034:	d0051de3          	bnez	a0,e8857d4e <_VerifyPairingClientExchange+0x84>
			ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8858038:	7c48                	ld	a0,184(s0)
    e885803a:	c509                	beqz	a0,e8858044 <_VerifyPairingClientExchange+0x37a>
    e885803c:	2c4240ef          	jal	ra,e887c300 <eLIBs_free>
    e8858040:	0a043c23          	sd	zero,184(s0)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e8858044:	105c                	addi	a5,sp,36
    e8858046:	85e6                	mv	a1,s9
			ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8858048:	0c043023          	sd	zero,192(s0)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e885804c:	4701                	li	a4,0
    e885804e:	0c040693          	addi	a3,s0,192
    e8858052:	4605                	li	a2,1
    e8858054:	8526                	mv	a0,s1
    e8858056:	6db080ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e885805a:	fc48                	sd	a0,184(s0)
			require_noerr( err, exit );
    e885805c:	5792                	lw	a5,36(sp)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e885805e:	85aa                	mv	a1,a0
			require_noerr( err, exit );
    e8858060:	ce0797e3          	bnez	a5,e8857d4e <_VerifyPairingClientExchange+0x84>
			require_action( me->peerIdentifierLen > 0, exit, err = kSizeErr );
    e8858064:	6070                	ld	a2,192(s0)
    e8858066:	d24d                	beqz	a2,e8858008 <_VerifyPairingClientExchange+0x33e>
			err = PairingSessionFindPeer( me, me->peerIdentifierPtr, me->peerIdentifierLen, me->peerEdPK );
    e8858068:	19a40c13          	addi	s8,s0,410
    e885806c:	86e2                	mv	a3,s8
    e885806e:	8522                	mv	a0,s0
    e8858070:	b39ff0ef          	jal	ra,e8857ba8 <PairingSessionFindPeer>
    e8858074:	d22a                	sw	a0,36(sp)
			require_noerr_quiet( err, exit );
    e8858076:	cc051ce3          	bnez	a0,e8857d4e <_VerifyPairingClientExchange+0x84>
			err = TLV8GetBytes( eptr, eend, kTLVType_Signature, 64, 64, sig, NULL, NULL );
    e885807a:	4881                	li	a7,0
    e885807c:	4801                	li	a6,0
    e885807e:	009c                	addi	a5,sp,64
    e8858080:	04000713          	li	a4,64
    e8858084:	04000693          	li	a3,64
    e8858088:	4629                	li	a2,10
    e885808a:	85e6                	mv	a1,s9
    e885808c:	8526                	mv	a0,s1
    e885808e:	4f1080ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e8858092:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8858094:	ca051de3          	bnez	a0,e8857d4e <_VerifyPairingClientExchange+0x84>
			len = 32 + me->peerIdentifierLen + 32;
    e8858098:	6068                	ld	a0,192(s0)
    e885809a:	04050513          	addi	a0,a0,64
    e885809e:	f82a                	sd	a0,48(sp)
			storage = (uint8_t *) malloc( len );
    e88580a0:	7ae230ef          	jal	ra,e887b84e <my_malloc>
    e88580a4:	8daa                	mv	s11,a0
			require_action( storage, exit, err = kNoMemoryErr );
    e88580a6:	e509                	bnez	a0,e88580b0 <_VerifyPairingClientExchange+0x3e6>
			require_action( storage, exit, err = kNoMemoryErr );
    e88580a8:	77f9                	lui	a5,0xffffe
    e88580aa:	5b87879b          	addiw	a5,a5,1464
    e88580ae:	a091                	j	e88580f2 <_VerifyPairingClientExchange+0x428>
			memcpy( &storage[  0 ], me->peerCurvePK, 32 );
    e88580b0:	02000613          	li	a2,32
    e88580b4:	85da                	mv	a1,s6
    e88580b6:	2ea240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->peerIdentifierLen ], me->ourCurvePK, 32 );
    e88580ba:	0fa40d13          	addi	s10,s0,250
			memcpy( &storage[ 32 ], me->peerIdentifierPtr, me->peerIdentifierLen );
    e88580be:	6070                	ld	a2,192(s0)
    e88580c0:	7c4c                	ld	a1,184(s0)
    e88580c2:	020d8513          	addi	a0,s11,32
    e88580c6:	2da240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->peerIdentifierLen ], me->ourCurvePK, 32 );
    e88580ca:	6068                	ld	a0,192(s0)
    e88580cc:	02000613          	li	a2,32
    e88580d0:	85ea                	mv	a1,s10
    e88580d2:	02050513          	addi	a0,a0,32
    e88580d6:	956e                	add	a0,a0,s11
    e88580d8:	2c8240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			err = Ed25519_verify( storage, len, sig, me->peerEdPK );
    e88580dc:	75c2                	ld	a1,48(sp)
    e88580de:	86e2                	mv	a3,s8
    e88580e0:	0090                	addi	a2,sp,64
    e88580e2:	856e                	mv	a0,s11
    e88580e4:	acbe60ef          	jal	ra,e883ebae <ed25519_verify_ref>
    e88580e8:	d22a                	sw	a0,36(sp)
			require_noerr_action_quiet( err, exit, err = kAuthenticationErr );
    e88580ea:	c519                	beqz	a0,e88580f8 <_VerifyPairingClientExchange+0x42e>
    e88580ec:	77f9                	lui	a5,0xffffe
    e88580ee:	59e7879b          	addiw	a5,a5,1438
			require_action( storage, exit, err = kNoMemoryErr );
    e88580f2:	d23e                	sw	a5,36(sp)
	Boolean						done     = false;
    e88580f4:	4781                	li	a5,0
    e88580f6:	bb49                	j	e8857e88 <_VerifyPairingClientExchange+0x1be>
			ForgetMem( &storage );
    e88580f8:	856e                	mv	a0,s11
    e88580fa:	206240ef          	jal	ra,e887c300 <eLIBs_free>
			me->state = kPairVerifyStateM3;
    e88580fe:	478d                	li	a5,3
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e8858100:	6c48                	ld	a0,152(s0)
			me->state = kPairVerifyStateM3;
    e8858102:	06f40023          	sb	a5,96(s0)
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e8858106:	c509                	beqz	a0,e8858110 <_VerifyPairingClientExchange+0x446>
    e8858108:	1f8240ef          	jal	ra,e887c300 <eLIBs_free>
    e885810c:	08043c23          	sd	zero,152(s0)
			err = PairingSessionCopyIdentity( me, false, &me->activeIdentifierPtr, me->ourEdPK, me->ourEdSK );
    e8858110:	13a40c13          	addi	s8,s0,314
    e8858114:	15a40c93          	addi	s9,s0,346
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e8858118:	0a043023          	sd	zero,160(s0)
			err = PairingSessionCopyIdentity( me, false, &me->activeIdentifierPtr, me->ourEdPK, me->ourEdSK );
    e885811c:	8766                	mv	a4,s9
    e885811e:	86e2                	mv	a3,s8
    e8858120:	09840613          	addi	a2,s0,152
    e8858124:	4581                	li	a1,0
    e8858126:	8522                	mv	a0,s0
    e8858128:	929ff0ef          	jal	ra,e8857a50 <PairingSessionCopyIdentity>
    e885812c:	d22a                	sw	a0,36(sp)
			require_noerr_quiet( err, exit );
    e885812e:	c20510e3          	bnez	a0,e8857d4e <_VerifyPairingClientExchange+0x84>
			me->activeIdentifierLen = strlen( me->activeIdentifierPtr );
    e8858132:	6c48                	ld	a0,152(s0)
    e8858134:	1e4240ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8858138:	7c05350b          	extu	a0,a0,31,0
    e885813c:	f048                	sd	a0,160(s0)
			require_action( me->activeIdentifierLen > 0, exit, err = kIDErr );
    e885813e:	e509                	bnez	a0,e8858148 <_VerifyPairingClientExchange+0x47e>
    e8858140:	77f9                	lui	a5,0xffffe
    e8858142:	5cc7879b          	addiw	a5,a5,1484
    e8858146:	b5e1                	j	e885800e <_VerifyPairingClientExchange+0x344>
			len = 32 + me->activeIdentifierLen + 32;
    e8858148:	04050513          	addi	a0,a0,64
    e885814c:	f82a                	sd	a0,48(sp)
			storage = (uint8_t *) malloc( len );
    e885814e:	700230ef          	jal	ra,e887b84e <my_malloc>
    e8858152:	8daa                	mv	s11,a0
			require_action( storage, exit, err = kNoMemoryErr );
    e8858154:	d931                	beqz	a0,e88580a8 <_VerifyPairingClientExchange+0x3de>
			memcpy( &storage[  0 ], me->ourCurvePK, 32 );
    e8858156:	02000613          	li	a2,32
    e885815a:	85ea                	mv	a1,s10
    e885815c:	244240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 ], me->activeIdentifierPtr, me->activeIdentifierLen );
    e8858160:	7050                	ld	a2,160(s0)
    e8858162:	6c4c                	ld	a1,152(s0)
    e8858164:	020d8513          	addi	a0,s11,32
    e8858168:	238240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->activeIdentifierLen ], me->peerCurvePK, 32 );
    e885816c:	7048                	ld	a0,160(s0)
    e885816e:	02000613          	li	a2,32
    e8858172:	85da                	mv	a1,s6
    e8858174:	02050513          	addi	a0,a0,32
    e8858178:	956e                	add	a0,a0,s11
    e885817a:	226240ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			Ed25519_sign( sig, storage, len, me->ourEdPK, me->ourEdSK );
    e885817e:	7642                	ld	a2,48(sp)
    e8858180:	8766                	mv	a4,s9
    e8858182:	86e2                	mv	a3,s8
    e8858184:	85ee                	mv	a1,s11
    e8858186:	0088                	addi	a0,sp,64
    e8858188:	d25e50ef          	jal	ra,e883deac <ed25519_sign_ref>
			ForgetMem( &storage );
    e885818c:	856e                	mv	a0,s11
    e885818e:	172240ef          	jal	ra,e887c300 <eLIBs_free>
			err = TLV8BufferAppend( &etlv, kTLVType_Identifier, me->activeIdentifierPtr, me->activeIdentifierLen );
    e8858192:	7054                	ld	a3,160(s0)
    e8858194:	6c50                	ld	a2,152(s0)
    e8858196:	4585                	li	a1,1
    e8858198:	0b88                	addi	a0,sp,464
    e885819a:	641080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885819e:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e88581a0:	ba0517e3          	bnez	a0,e8857d4e <_VerifyPairingClientExchange+0x84>
			err = TLV8BufferAppend( &etlv, kTLVType_Signature, sig, 64 );
    e88581a4:	04000693          	li	a3,64
    e88581a8:	0090                	addi	a2,sp,64
    e88581aa:	45a9                	li	a1,10
    e88581ac:	0b88                	addi	a0,sp,464
    e88581ae:	62d080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e88581b2:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e88581b4:	b8051de3          	bnez	a0,e8857d4e <_VerifyPairingClientExchange+0x84>
			storage = (uint8_t *) malloc( etlv.len + 16 );
    e88581b8:	657e                	ld	a0,472(sp)
    e88581ba:	0541                	addi	a0,a0,16
    e88581bc:	692230ef          	jal	ra,e887b84e <my_malloc>
    e88581c0:	8daa                	mv	s11,a0
			require_action( storage, exit, err = kNoMemoryErr );
    e88581c2:	ee0503e3          	beqz	a0,e88580a8 <_VerifyPairingClientExchange+0x3de>
			chacha20_poly1305_encrypt_all_64x64( me->key, (const uint8_t *) "PV-Msg03", NULL, 0, 
    e88581c6:	67fe                	ld	a5,472(sp)
    e88581c8:	675e                	ld	a4,464(sp)
    e88581ca:	882a                	mv	a6,a0
    e88581cc:	00f508b3          	add	a7,a0,a5
    e88581d0:	4681                	li	a3,0
    e88581d2:	4601                	li	a2,0
    e88581d4:	0006a597          	auipc	a1,0x6a
    e88581d8:	6fc58593          	addi	a1,a1,1788 # e88c28d0 <__PRETTY_FUNCTION__.9902+0xc38>
    e88581dc:	855e                	mv	a0,s7
    e88581de:	ed9f50ef          	jal	ra,e884e0b6 <chacha20_poly1305_encrypt_all_64x64>
			err = TLV8BufferAppend( &tlv, kTLVType_EncryptedData, storage, etlv.len + 16 );
    e88581e2:	66fe                	ld	a3,472(sp)
    e88581e4:	866e                	mv	a2,s11
    e88581e6:	4595                	li	a1,5
    e88581e8:	06c1                	addi	a3,a3,16
    e88581ea:	0108                	addi	a0,sp,128
    e88581ec:	5ef080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e88581f0:	d22a                	sw	a0,36(sp)
	Boolean						done     = false;
    e88581f2:	4781                	li	a5,0
			require_noerr( err, exit );
    e88581f4:	c8051ae3          	bnez	a0,e8857e88 <_VerifyPairingClientExchange+0x1be>
			ForgetMem( &storage );
    e88581f8:	856e                	mv	a0,s11
    e88581fa:	106240ef          	jal	ra,e887c300 <eLIBs_free>
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e88581fe:	4685                	li	a3,1
    e8858200:	06040613          	addi	a2,s0,96
    e8858204:	4599                	li	a1,6
    e8858206:	0108                	addi	a0,sp,128
    e8858208:	5d3080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885820c:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885820e:	b40510e3          	bnez	a0,e8857d4e <_VerifyPairingClientExchange+0x84>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8858212:	8652                	mv	a2,s4
    e8858214:	85d6                	mv	a1,s5
    e8858216:	0108                	addi	a0,sp,128
    e8858218:	701080ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885821c:	d22a                	sw	a0,36(sp)
    e885821e:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e8858220:	b20517e3          	bnez	a0,e8857d4e <_VerifyPairingClientExchange+0x84>
			pair_ulog( me, kLogLevelTrace, "Pair-verify client M3 -- finish request\n%?{end}%1{tlv8}\n", 
    e8858224:	6408                	ld	a0,8(s0)
    e8858226:	46f9                	li	a3,30
    e8858228:	411c                	lw	a5,0(a0)
    e885822a:	06f6c263          	blt	a3,a5,e885828e <_VerifyPairingClientExchange+0x5c4>
    e885822e:	56fd                	li	a3,-1
    e8858230:	04d78963          	beq	a5,a3,e8858282 <_VerifyPairingClientExchange+0x5b8>
    e8858234:	00843b03          	ld	s6,8(s0)
    e8858238:	46d1                	li	a3,20
    e885823a:	000b2783          	lw	a5,0(s6)
    e885823e:	04f6cc63          	blt	a3,a5,e8858296 <_VerifyPairingClientExchange+0x5cc>
    e8858242:	56fd                	li	a3,-1
    e8858244:	00d79a63          	bne	a5,a3,e8858258 <_VerifyPairingClientExchange+0x58e>
    e8858248:	45d1                	li	a1,20
    e885824a:	855a                	mv	a0,s6
    e885824c:	e27fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858250:	0005071b          	sext.w	a4,a0
    e8858254:	00173713          	seqz	a4,a4
    e8858258:	000a2883          	lw	a7,0(s4)
    e885825c:	000ab803          	ld	a6,0(s5)
    e8858260:	00045797          	auipc	a5,0x45
    e8858264:	45878793          	addi	a5,a5,1112 # e889d6b8 <icmp6_param_problem+0x64a>
    e8858268:	0006a697          	auipc	a3,0x6a
    e885826c:	67868693          	addi	a3,a3,1656 # e88c28e0 <__PRETTY_FUNCTION__.9902+0xc48>
    e8858270:	4679                	li	a2,30
    e8858272:	0006b597          	auipc	a1,0x6b
    e8858276:	9c658593          	addi	a1,a1,-1594 # e88c2c38 <__PRETTY_FUNCTION__.10595>
    e885827a:	855a                	mv	a0,s6
    e885827c:	9f8fc0ef          	jal	ra,e8854474 <LogPrintF>
    e8858280:	a039                	j	e885828e <_VerifyPairingClientExchange+0x5c4>
    e8858282:	45f9                	li	a1,30
    e8858284:	ec3a                	sd	a4,24(sp)
    e8858286:	dedfb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885828a:	6762                	ld	a4,24(sp)
    e885828c:	f545                	bnez	a0,e8858234 <_VerifyPairingClientExchange+0x56a>
			me->state = kPairVerifyStateM4;
    e885828e:	4791                	li	a5,4
    e8858290:	06f40023          	sb	a5,96(s0)
    e8858294:	b6fd                	j	e8857e82 <_VerifyPairingClientExchange+0x1b8>
			pair_ulog( me, kLogLevelTrace, "Pair-verify client M3 -- finish request\n%?{end}%1{tlv8}\n", 
    e8858296:	4705                	li	a4,1
    e8858298:	b7c1                	j	e8858258 <_VerifyPairingClientExchange+0x58e>
			pair_ulog( me, kLogLevelTrace, "Pair-verify client M4 -- finish response\n%?{end}%1{tlv8}\n", 
    e885829a:	6408                	ld	a0,8(s0)
    e885829c:	4779                	li	a4,30
    e885829e:	411c                	lw	a5,0(a0)
    e88582a0:	06f74163          	blt	a4,a5,e8858302 <_VerifyPairingClientExchange+0x638>
    e88582a4:	577d                	li	a4,-1
    e88582a6:	04e78a63          	beq	a5,a4,e88582fa <_VerifyPairingClientExchange+0x630>
    e88582aa:	00843b03          	ld	s6,8(s0)
    e88582ae:	46d1                	li	a3,20
    e88582b0:	4705                	li	a4,1
    e88582b2:	000b2783          	lw	a5,0(s6)
    e88582b6:	00f6ce63          	blt	a3,a5,e88582d2 <_VerifyPairingClientExchange+0x608>
    e88582ba:	56fd                	li	a3,-1
    e88582bc:	4701                	li	a4,0
    e88582be:	00d79a63          	bne	a5,a3,e88582d2 <_VerifyPairingClientExchange+0x608>
    e88582c2:	45d1                	li	a1,20
    e88582c4:	855a                	mv	a0,s6
    e88582c6:	dadfb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88582ca:	0005071b          	sext.w	a4,a0
    e88582ce:	00173713          	seqz	a4,a4
    e88582d2:	0009889b          	sext.w	a7,s3
    e88582d6:	884a                	mv	a6,s2
    e88582d8:	00045797          	auipc	a5,0x45
    e88582dc:	3e078793          	addi	a5,a5,992 # e889d6b8 <icmp6_param_problem+0x64a>
    e88582e0:	0006a697          	auipc	a3,0x6a
    e88582e4:	64068693          	addi	a3,a3,1600 # e88c2920 <__PRETTY_FUNCTION__.9902+0xc88>
    e88582e8:	4679                	li	a2,30
    e88582ea:	0006b597          	auipc	a1,0x6b
    e88582ee:	94e58593          	addi	a1,a1,-1714 # e88c2c38 <__PRETTY_FUNCTION__.10595>
    e88582f2:	855a                	mv	a0,s6
    e88582f4:	980fc0ef          	jal	ra,e8854474 <LogPrintF>
    e88582f8:	a029                	j	e8858302 <_VerifyPairingClientExchange+0x638>
    e88582fa:	45f9                	li	a1,30
    e88582fc:	d77fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858300:	f54d                	bnez	a0,e88582aa <_VerifyPairingClientExchange+0x5e0>
			err = TLV8Get( inputPtr, inputEnd, kTLVType_Error, &ptr, &len, NULL );
    e8858302:	4781                	li	a5,0
    e8858304:	1818                	addi	a4,sp,48
    e8858306:	1034                	addi	a3,sp,40
    e8858308:	461d                	li	a2,7
    e885830a:	85a6                	mv	a1,s1
    e885830c:	854a                	mv	a0,s2
    e885830e:	1a7080ef          	jal	ra,e8860cb4 <TLV8Get>
    e8858312:	d22a                	sw	a0,36(sp)
			if( !err )
    e8858314:	e535                	bnez	a0,e8858380 <_VerifyPairingClientExchange+0x6b6>
				require_action( len == 1, exit, err = kSizeErr );
    e8858316:	7742                	ld	a4,48(sp)
    e8858318:	4785                	li	a5,1
    e885831a:	a4f710e3          	bne	a4,a5,e8857d5a <_VerifyPairingClientExchange+0x90>
				err = PairingStatusToOSStatus( *ptr );
    e885831e:	77a2                	ld	a5,40(sp)
    e8858320:	0007c783          	lbu	a5,0(a5)
    e8858324:	c795                	beqz	a5,e8858350 <_VerifyPairingClientExchange+0x686>
    e8858326:	04e78963          	beq	a5,a4,e8858378 <_VerifyPairingClientExchange+0x6ae>
    e885832a:	4709                	li	a4,2
    e885832c:	02e78663          	beq	a5,a4,e8858358 <_VerifyPairingClientExchange+0x68e>
    e8858330:	470d                	li	a4,3
    e8858332:	02e78763          	beq	a5,a4,e8858360 <_VerifyPairingClientExchange+0x696>
    e8858336:	4711                	li	a4,4
    e8858338:	02e78863          	beq	a5,a4,e8858368 <_VerifyPairingClientExchange+0x69e>
    e885833c:	4715                	li	a4,5
    e885833e:	02e78963          	beq	a5,a4,e8858370 <_VerifyPairingClientExchange+0x6a6>
    e8858342:	4719                	li	a4,6
    e8858344:	02e79a63          	bne	a5,a4,e8858378 <_VerifyPairingClientExchange+0x6ae>
    e8858348:	77f9                	lui	a5,0xffffe
    e885834a:	59478793          	addi	a5,a5,1428 # ffffffffffffe594 <__DRAM0_INF_BASE+0xffffffff0000e594>
    e885834e:	bc09                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
    e8858350:	77f9                	lui	a5,0xffffe
    e8858352:	5af78793          	addi	a5,a5,1455 # ffffffffffffe5af <__DRAM0_INF_BASE+0xffffffff0000e5af>
    e8858356:	b429                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
    e8858358:	77f9                	lui	a5,0xffffe
    e885835a:	59e78793          	addi	a5,a5,1438 # ffffffffffffe59e <__DRAM0_INF_BASE+0xffffffff0000e59e>
    e885835e:	b409                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
    e8858360:	77f9                	lui	a5,0xffffe
    e8858362:	59878793          	addi	a5,a5,1432 # ffffffffffffe598 <__DRAM0_INF_BASE+0xffffffff0000e598>
    e8858366:	baed                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
    e8858368:	77f9                	lui	a5,0xffffe
    e885836a:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e885836e:	bacd                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
    e8858370:	77f9                	lui	a5,0xffffe
    e8858372:	59578793          	addi	a5,a5,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
    e8858376:	b2ed                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
    e8858378:	77f9                	lui	a5,0xffffe
    e885837a:	5d478793          	addi	a5,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e885837e:	b2cd                	j	e8857d60 <_VerifyPairingClientExchange+0x96>
			*outOutputPtr = NULL;
    e8858380:	000ab023          	sd	zero,0(s5)
			me->state = kPairVerifyStateDone;
    e8858384:	4795                	li	a5,5
			*outOutputLen = 0;
    e8858386:	000a3023          	sd	zero,0(s4)
			pair_ulog( me, kLogLevelTrace, "Pair-verify client done\n" );
    e885838a:	6408                	ld	a0,8(s0)
			me->state = kPairVerifyStateDone;
    e885838c:	06f40023          	sb	a5,96(s0)
			pair_ulog( me, kLogLevelTrace, "Pair-verify client done\n" );
    e8858390:	4779                	li	a4,30
    e8858392:	411c                	lw	a5,0(a0)
    e8858394:	02f74163          	blt	a4,a5,e88583b6 <_VerifyPairingClientExchange+0x6ec>
    e8858398:	577d                	li	a4,-1
    e885839a:	02e78163          	beq	a5,a4,e88583bc <_VerifyPairingClientExchange+0x6f2>
    e885839e:	6408                	ld	a0,8(s0)
    e88583a0:	0006a697          	auipc	a3,0x6a
    e88583a4:	5c068693          	addi	a3,a3,1472 # e88c2960 <__PRETTY_FUNCTION__.9902+0xcc8>
    e88583a8:	4679                	li	a2,30
    e88583aa:	0006b597          	auipc	a1,0x6b
    e88583ae:	88e58593          	addi	a1,a1,-1906 # e88c2c38 <__PRETTY_FUNCTION__.10595>
    e88583b2:	8c2fc0ef          	jal	ra,e8854474 <LogPrintF>
	uint8_t *					eptr	= NULL;
    e88583b6:	4481                	li	s1,0
			done = true;
    e88583b8:	4785                	li	a5,1
    e88583ba:	b4e9                	j	e8857e84 <_VerifyPairingClientExchange+0x1ba>
			pair_ulog( me, kLogLevelTrace, "Pair-verify client done\n" );
    e88583bc:	45f9                	li	a1,30
    e88583be:	cb5fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88583c2:	d975                	beqz	a0,e88583b6 <_VerifyPairingClientExchange+0x6ec>
    e88583c4:	bfe9                	j	e885839e <_VerifyPairingClientExchange+0x6d4>
			pair_ulog( me, kLogLevelWarning, "### Pair-verify client bad state: %d\n", me->state );
    e88583c6:	6408                	ld	a0,8(s0)
    e88583c8:	03c00713          	li	a4,60
    e88583cc:	411c                	lw	a5,0(a0)
    e88583ce:	9af742e3          	blt	a4,a5,e8857d72 <_VerifyPairingClientExchange+0xa8>
    e88583d2:	577d                	li	a4,-1
    e88583d4:	02e78263          	beq	a5,a4,e88583f8 <_VerifyPairingClientExchange+0x72e>
    e88583d8:	06044703          	lbu	a4,96(s0)
    e88583dc:	6408                	ld	a0,8(s0)
    e88583de:	0006a697          	auipc	a3,0x6a
    e88583e2:	5a268693          	addi	a3,a3,1442 # e88c2980 <__PRETTY_FUNCTION__.9902+0xce8>
    e88583e6:	03c00613          	li	a2,60
    e88583ea:	0006b597          	auipc	a1,0x6b
    e88583ee:	84e58593          	addi	a1,a1,-1970 # e88c2c38 <__PRETTY_FUNCTION__.10595>
    e88583f2:	882fc0ef          	jal	ra,e8854474 <LogPrintF>
    e88583f6:	bab5                	j	e8857d72 <_VerifyPairingClientExchange+0xa8>
    e88583f8:	03c00593          	li	a1,60
    e88583fc:	c77fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858400:	960509e3          	beqz	a0,e8857d72 <_VerifyPairingClientExchange+0xa8>
    e8858404:	bfd1                	j	e88583d8 <_VerifyPairingClientExchange+0x70e>
		pair_ulog( me, kLogLevelWarning, "### Pair-verify client state %d failed: %#m\n%?{end}%1{tlv8}\n", 
    e8858406:	03c00593          	li	a1,60
    e885840a:	c69fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885840e:	aa051be3          	bnez	a0,e8857ec4 <_VerifyPairingClientExchange+0x1fa>
}
    e8858412:	38813083          	ld	ra,904(sp)
    e8858416:	38013403          	ld	s0,896(sp)
    e885841a:	5512                	lw	a0,36(sp)
    e885841c:	37813483          	ld	s1,888(sp)
    e8858420:	37013903          	ld	s2,880(sp)
    e8858424:	36813983          	ld	s3,872(sp)
    e8858428:	36013a03          	ld	s4,864(sp)
    e885842c:	35813a83          	ld	s5,856(sp)
    e8858430:	35013b03          	ld	s6,848(sp)
    e8858434:	34813b83          	ld	s7,840(sp)
    e8858438:	34013c03          	ld	s8,832(sp)
    e885843c:	33813c83          	ld	s9,824(sp)
    e8858440:	33013d03          	ld	s10,816(sp)
    e8858444:	32813d83          	ld	s11,808(sp)
    e8858448:	39010113          	addi	sp,sp,912
    e885844c:	8082                	ret

00000000e885844e <_VerifyPairingServerExchange>:
{
    e885844e:	c7010113          	addi	sp,sp,-912
    e8858452:	36913c23          	sd	s1,888(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8858456:	6491                	lui	s1,0x4
{
    e8858458:	38813023          	sd	s0,896(sp)
    e885845c:	37313423          	sd	s3,872(sp)
    e8858460:	37413023          	sd	s4,864(sp)
	const uint8_t * const		inputEnd = inputPtr + inInputLen;
    e8858464:	00c589b3          	add	s3,a1,a2
{
    e8858468:	8a2e                	mv	s4,a1
    e885846a:	842a                	mv	s0,a0
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e885846c:	e8048593          	addi	a1,s1,-384 # 3e80 <memcmp-0xe87fc180>
    e8858470:	0108                	addi	a0,sp,128
{
    e8858472:	38113423          	sd	ra,904(sp)
    e8858476:	35513c23          	sd	s5,856(sp)
    e885847a:	35613823          	sd	s6,848(sp)
    e885847e:	8ab6                	mv	s5,a3
    e8858480:	8b3a                	mv	s6,a4
    e8858482:	35713423          	sd	s7,840(sp)
    e8858486:	35813023          	sd	s8,832(sp)
    e885848a:	8bb2                	mv	s7,a2
    e885848c:	8c3e                	mv	s8,a5
    e885848e:	37213823          	sd	s2,880(sp)
    e8858492:	33913c23          	sd	s9,824(sp)
    e8858496:	33a13823          	sd	s10,816(sp)
    e885849a:	33b13423          	sd	s11,808(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e885849e:	30b080ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	TLV8BufferInit( &etlv, kMaxTLVSize );
    e88584a2:	e8048593          	addi	a1,s1,-384
    e88584a6:	0b88                	addi	a0,sp,464
    e88584a8:	301080ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	err = TLV8Get( inputPtr, inputEnd, kTLVType_State, &ptr, &len, NULL );
    e88584ac:	4781                	li	a5,0
    e88584ae:	1818                	addi	a4,sp,48
    e88584b0:	1034                	addi	a3,sp,40
    e88584b2:	4619                	li	a2,6
    e88584b4:	85ce                	mv	a1,s3
    e88584b6:	8552                	mv	a0,s4
    e88584b8:	7fc080ef          	jal	ra,e8860cb4 <TLV8Get>
    e88584bc:	d22a                	sw	a0,36(sp)
	require_noerr( err, exit );
    e88584be:	c501                	beqz	a0,e88584c6 <_VerifyPairingServerExchange+0x78>
	uint8_t *					eptr	= NULL;
    e88584c0:	4981                	li	s3,0
    e88584c2:	4481                	li	s1,0
    e88584c4:	ab21                	j	e88589dc <_VerifyPairingServerExchange+0x58e>
	require_action( len == 1, exit, err = kSizeErr );
    e88584c6:	77c2                	ld	a5,48(sp)
    e88584c8:	4705                	li	a4,1
    e88584ca:	00e78763          	beq	a5,a4,e88584d8 <_VerifyPairingServerExchange+0x8a>
    e88584ce:	77f9                	lui	a5,0xffffe
    e88584d0:	5a97879b          	addiw	a5,a5,1449
    e88584d4:	d23e                	sw	a5,36(sp)
    e88584d6:	b7ed                	j	e88584c0 <_VerifyPairingServerExchange+0x72>
	if( *ptr == kPairVerifyStateM1 ) _PairingSessionReset( me );
    e88584d8:	7722                	ld	a4,40(sp)
    e88584da:	84aa                	mv	s1,a0
    e88584dc:	00074703          	lbu	a4,0(a4)
    e88584e0:	00f71563          	bne	a4,a5,e88584ea <_VerifyPairingServerExchange+0x9c>
    e88584e4:	8522                	mv	a0,s0
    e88584e6:	955fe0ef          	jal	ra,e8856e3a <_PairingSessionReset>
	if( me->state == kPairingStateInvalid ) me->state = kPairVerifyStateM1;
    e88584ea:	06044783          	lbu	a5,96(s0)
    e88584ee:	e781                	bnez	a5,e88584f6 <_VerifyPairingServerExchange+0xa8>
    e88584f0:	4785                	li	a5,1
    e88584f2:	06f40023          	sb	a5,96(s0)
	require_action( *ptr == me->state, exit, err = kStateErr );
    e88584f6:	7722                	ld	a4,40(sp)
    e88584f8:	06044783          	lbu	a5,96(s0)
    e88584fc:	00074703          	lbu	a4,0(a4)
    e8858500:	00f70663          	beq	a4,a5,e885850c <_VerifyPairingServerExchange+0xbe>
    e8858504:	77f9                	lui	a5,0xffffe
    e8858506:	5cb7879b          	addiw	a5,a5,1483
    e885850a:	b7e9                	j	e88584d4 <_VerifyPairingServerExchange+0x86>
	switch( me->state )
    e885850c:	6408                	ld	a0,8(s0)
    e885850e:	4685                	li	a3,1
    e8858510:	411c                	lw	a5,0(a0)
    e8858512:	02d70c63          	beq	a4,a3,e885854a <_VerifyPairingServerExchange+0xfc>
    e8858516:	468d                	li	a3,3
    e8858518:	2ed70563          	beq	a4,a3,e8858802 <_VerifyPairingServerExchange+0x3b4>
			pair_ulog( me, kLogLevelWarning, "### Pair-verify server bad state: %d\n", me->state );
    e885851c:	03c00713          	li	a4,60
    e8858520:	fef742e3          	blt	a4,a5,e8858504 <_VerifyPairingServerExchange+0xb6>
    e8858524:	577d                	li	a4,-1
    e8858526:	6ce78b63          	beq	a5,a4,e8858bfc <_VerifyPairingServerExchange+0x7ae>
    e885852a:	06044703          	lbu	a4,96(s0)
    e885852e:	6408                	ld	a0,8(s0)
    e8858530:	0006a697          	auipc	a3,0x6a
    e8858534:	65868693          	addi	a3,a3,1624 # e88c2b88 <__PRETTY_FUNCTION__.9902+0xef0>
    e8858538:	03c00613          	li	a2,60
    e885853c:	0006a597          	auipc	a1,0x6a
    e8858540:	71c58593          	addi	a1,a1,1820 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e8858544:	f31fb0ef          	jal	ra,e8854474 <LogPrintF>
    e8858548:	bf75                	j	e8858504 <_VerifyPairingServerExchange+0xb6>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server M1 -- start request\n%?{end}%1{tlv8}\n", 
    e885854a:	4779                	li	a4,30
    e885854c:	04f74f63          	blt	a4,a5,e88585aa <_VerifyPairingServerExchange+0x15c>
    e8858550:	577d                	li	a4,-1
    e8858552:	04e78863          	beq	a5,a4,e88585a2 <_VerifyPairingServerExchange+0x154>
    e8858556:	00843903          	ld	s2,8(s0)
    e885855a:	4751                	li	a4,20
    e885855c:	00092783          	lw	a5,0(s2)
    e8858560:	10f74263          	blt	a4,a5,e8858664 <_VerifyPairingServerExchange+0x216>
    e8858564:	577d                	li	a4,-1
    e8858566:	00e79963          	bne	a5,a4,e8858578 <_VerifyPairingServerExchange+0x12a>
    e885856a:	45d1                	li	a1,20
    e885856c:	854a                	mv	a0,s2
    e885856e:	b05fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858572:	2501                	sext.w	a0,a0
    e8858574:	00153493          	seqz	s1,a0
    e8858578:	000b889b          	sext.w	a7,s7
    e885857c:	8852                	mv	a6,s4
    e885857e:	00045797          	auipc	a5,0x45
    e8858582:	13a78793          	addi	a5,a5,314 # e889d6b8 <icmp6_param_problem+0x64a>
    e8858586:	8726                	mv	a4,s1
    e8858588:	0006a697          	auipc	a3,0x6a
    e885858c:	46068693          	addi	a3,a3,1120 # e88c29e8 <__PRETTY_FUNCTION__.9902+0xd50>
    e8858590:	4679                	li	a2,30
    e8858592:	0006a597          	auipc	a1,0x6a
    e8858596:	6c658593          	addi	a1,a1,1734 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e885859a:	854a                	mv	a0,s2
    e885859c:	ed9fb0ef          	jal	ra,e8854474 <LogPrintF>
    e88585a0:	a029                	j	e88585aa <_VerifyPairingServerExchange+0x15c>
    e88585a2:	45f9                	li	a1,30
    e88585a4:	acffb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88585a8:	f55d                	bnez	a0,e8858556 <_VerifyPairingServerExchange+0x108>
			err = RandomBytes( me->ourCurveSK, sizeof( me->ourCurveSK ) );
    e88585aa:	11a40c93          	addi	s9,s0,282
    e88585ae:	02000593          	li	a1,32
    e88585b2:	8566                	mv	a0,s9
    e88585b4:	2f1040ef          	jal	ra,e885d0a4 <RandomBytes>
    e88585b8:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e88585ba:	f00513e3          	bnez	a0,e88584c0 <_VerifyPairingServerExchange+0x72>
			HKDF_SHA512( me->ourCurveSK, sizeof( me->ourCurveSK ), 
    e88585be:	88e6                	mv	a7,s9
    e88585c0:	02000813          	li	a6,32
    e88585c4:	47d5                	li	a5,21
    e88585c6:	0006a717          	auipc	a4,0x6a
    e88585ca:	21270713          	addi	a4,a4,530 # e88c27d8 <__PRETTY_FUNCTION__.9902+0xb40>
    e88585ce:	46d5                	li	a3,21
    e88585d0:	0006a617          	auipc	a2,0x6a
    e88585d4:	22060613          	addi	a2,a2,544 # e88c27f0 <__PRETTY_FUNCTION__.9902+0xb58>
    e88585d8:	02000593          	li	a1,32
    e88585dc:	8566                	mv	a0,s9
    e88585de:	1e5050ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			curve25519( me->ourCurvePK, me->ourCurveSK, NULL );
    e88585e2:	0fa40913          	addi	s2,s0,250
    e88585e6:	4601                	li	a2,0
    e88585e8:	85e6                	mv	a1,s9
    e88585ea:	854a                	mv	a0,s2
    e88585ec:	3c31f0ef          	jal	ra,e88781ae <curve25519_donna>
			err = TLV8GetBytes( inputPtr, inputEnd, kTLVType_PublicKey, 32, 32, me->peerCurvePK, NULL, NULL );
    e88585f0:	17a40493          	addi	s1,s0,378
    e88585f4:	4881                	li	a7,0
    e88585f6:	4801                	li	a6,0
    e88585f8:	87a6                	mv	a5,s1
    e88585fa:	02000713          	li	a4,32
    e88585fe:	02000693          	li	a3,32
    e8858602:	460d                	li	a2,3
    e8858604:	85ce                	mv	a1,s3
    e8858606:	8552                	mv	a0,s4
    e8858608:	776080ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e885860c:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885860e:	ea0519e3          	bnez	a0,e88584c0 <_VerifyPairingServerExchange+0x72>
			curve25519( me->sharedSecret, me->ourCurveSK, me->peerCurvePK );
    e8858612:	1ba40993          	addi	s3,s0,442
    e8858616:	854e                	mv	a0,s3
    e8858618:	8626                	mv	a2,s1
    e885861a:	85e6                	mv	a1,s9
    e885861c:	3931f0ef          	jal	ra,e88781ae <curve25519_donna>
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e8858620:	6c48                	ld	a0,152(s0)
    e8858622:	c509                	beqz	a0,e885862c <_VerifyPairingServerExchange+0x1de>
    e8858624:	4dd230ef          	jal	ra,e887c300 <eLIBs_free>
    e8858628:	08043c23          	sd	zero,152(s0)
			err = PairingSessionCopyIdentity( me, false, &me->activeIdentifierPtr, me->ourEdPK, me->ourEdSK );
    e885862c:	13a40c93          	addi	s9,s0,314
    e8858630:	15a40d13          	addi	s10,s0,346
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e8858634:	0a043023          	sd	zero,160(s0)
			err = PairingSessionCopyIdentity( me, false, &me->activeIdentifierPtr, me->ourEdPK, me->ourEdSK );
    e8858638:	876a                	mv	a4,s10
    e885863a:	86e6                	mv	a3,s9
    e885863c:	09840613          	addi	a2,s0,152
    e8858640:	4581                	li	a1,0
    e8858642:	8522                	mv	a0,s0
    e8858644:	c0cff0ef          	jal	ra,e8857a50 <PairingSessionCopyIdentity>
    e8858648:	d22a                	sw	a0,36(sp)
			require_noerr_quiet( err, exit );
    e885864a:	e6051be3          	bnez	a0,e88584c0 <_VerifyPairingServerExchange+0x72>
			me->activeIdentifierLen = strlen( me->activeIdentifierPtr );
    e885864e:	6c48                	ld	a0,152(s0)
    e8858650:	4c9230ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8858654:	7c05350b          	extu	a0,a0,31,0
    e8858658:	f048                	sd	a0,160(s0)
			require_action( me->activeIdentifierLen > 0, exit, err = kIDErr );
    e885865a:	e519                	bnez	a0,e8858668 <_VerifyPairingServerExchange+0x21a>
    e885865c:	77f9                	lui	a5,0xffffe
    e885865e:	5cc7879b          	addiw	a5,a5,1484
    e8858662:	bd8d                	j	e88584d4 <_VerifyPairingServerExchange+0x86>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server M1 -- start request\n%?{end}%1{tlv8}\n", 
    e8858664:	4485                	li	s1,1
    e8858666:	bf09                	j	e8858578 <_VerifyPairingServerExchange+0x12a>
			len = 32 + me->activeIdentifierLen + 32;
    e8858668:	04050513          	addi	a0,a0,64
    e885866c:	f82a                	sd	a0,48(sp)
			storage = (uint8_t *) malloc( len );
    e885866e:	1e0230ef          	jal	ra,e887b84e <my_malloc>
    e8858672:	8daa                	mv	s11,a0
			require_action( storage, exit, err = kNoMemoryErr );
    e8858674:	e509                	bnez	a0,e885867e <_VerifyPairingServerExchange+0x230>
    e8858676:	77f9                	lui	a5,0xffffe
    e8858678:	5b87879b          	addiw	a5,a5,1464
    e885867c:	bda1                	j	e88584d4 <_VerifyPairingServerExchange+0x86>
			memcpy( &storage[  0 ], me->ourCurvePK, 32 );
    e885867e:	02000613          	li	a2,32
    e8858682:	85ca                	mv	a1,s2
    e8858684:	51d230ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 ], me->activeIdentifierPtr, me->activeIdentifierLen );
    e8858688:	7050                	ld	a2,160(s0)
    e885868a:	6c4c                	ld	a1,152(s0)
    e885868c:	020d8513          	addi	a0,s11,32
    e8858690:	511230ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->activeIdentifierLen ], me->peerCurvePK, 32 );
    e8858694:	7048                	ld	a0,160(s0)
    e8858696:	02000613          	li	a2,32
    e885869a:	85a6                	mv	a1,s1
    e885869c:	02050513          	addi	a0,a0,32
    e88586a0:	956e                	add	a0,a0,s11
    e88586a2:	4ff230ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			Ed25519_sign( sig, storage, len, me->ourEdPK, me->ourEdSK );
    e88586a6:	7642                	ld	a2,48(sp)
    e88586a8:	876a                	mv	a4,s10
    e88586aa:	86e6                	mv	a3,s9
    e88586ac:	85ee                	mv	a1,s11
    e88586ae:	0088                	addi	a0,sp,64
    e88586b0:	ffce50ef          	jal	ra,e883deac <ed25519_sign_ref>
			ForgetMem( &storage );
    e88586b4:	856e                	mv	a0,s11
    e88586b6:	44b230ef          	jal	ra,e887c300 <eLIBs_free>
			err = TLV8BufferAppend( &etlv, kTLVType_Identifier, me->activeIdentifierPtr, me->activeIdentifierLen );
    e88586ba:	7054                	ld	a3,160(s0)
    e88586bc:	6c50                	ld	a2,152(s0)
    e88586be:	4585                	li	a1,1
    e88586c0:	0b88                	addi	a0,sp,464
    e88586c2:	119080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e88586c6:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e88586c8:	de051ce3          	bnez	a0,e88584c0 <_VerifyPairingServerExchange+0x72>
			err = TLV8BufferAppend( &etlv, kTLVType_Signature, sig, 64 );
    e88586cc:	04000693          	li	a3,64
    e88586d0:	0090                	addi	a2,sp,64
    e88586d2:	45a9                	li	a1,10
    e88586d4:	0b88                	addi	a0,sp,464
    e88586d6:	105080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e88586da:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e88586dc:	de0512e3          	bnez	a0,e88584c0 <_VerifyPairingServerExchange+0x72>
			storage = (uint8_t *) malloc( etlv.len + 16 );
    e88586e0:	657e                	ld	a0,472(sp)
    e88586e2:	0541                	addi	a0,a0,16
    e88586e4:	16a230ef          	jal	ra,e887b84e <my_malloc>
    e88586e8:	84aa                	mv	s1,a0
			require_action( storage, exit, err = kNoMemoryErr );
    e88586ea:	d551                	beqz	a0,e8858676 <_VerifyPairingServerExchange+0x228>
			HKDF_SHA512( me->sharedSecret, sizeof( me->sharedSecret ), 
    e88586ec:	0da40c93          	addi	s9,s0,218
    e88586f0:	88e6                	mv	a7,s9
    e88586f2:	02000813          	li	a6,32
    e88586f6:	47e1                	li	a5,24
    e88586f8:	0006a717          	auipc	a4,0x6a
    e88586fc:	18870713          	addi	a4,a4,392 # e88c2880 <__PRETTY_FUNCTION__.9902+0xbe8>
    e8858700:	46e1                	li	a3,24
    e8858702:	0006a617          	auipc	a2,0x6a
    e8858706:	19e60613          	addi	a2,a2,414 # e88c28a0 <__PRETTY_FUNCTION__.9902+0xc08>
    e885870a:	02000593          	li	a1,32
    e885870e:	854e                	mv	a0,s3
    e8858710:	0b3050ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			chacha20_poly1305_encrypt_all_64x64( me->key, (const uint8_t *) "PV-Msg02", NULL, 0, 
    e8858714:	67fe                	ld	a5,472(sp)
    e8858716:	675e                	ld	a4,464(sp)
    e8858718:	8826                	mv	a6,s1
    e885871a:	00f488b3          	add	a7,s1,a5
    e885871e:	4681                	li	a3,0
    e8858720:	4601                	li	a2,0
    e8858722:	0006a597          	auipc	a1,0x6a
    e8858726:	19e58593          	addi	a1,a1,414 # e88c28c0 <__PRETTY_FUNCTION__.9902+0xc28>
    e885872a:	8566                	mv	a0,s9
    e885872c:	98bf50ef          	jal	ra,e884e0b6 <chacha20_poly1305_encrypt_all_64x64>
			err = TLV8BufferAppend( &tlv, kTLVType_EncryptedData, storage, etlv.len + 16 );
    e8858730:	66fe                	ld	a3,472(sp)
    e8858732:	8626                	mv	a2,s1
    e8858734:	4595                	li	a1,5
    e8858736:	06c1                	addi	a3,a3,16
    e8858738:	0108                	addi	a0,sp,128
    e885873a:	0a1080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885873e:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8858740:	4c051663          	bnez	a0,e8858c0c <_VerifyPairingServerExchange+0x7be>
			ForgetMem( &storage );
    e8858744:	8526                	mv	a0,s1
    e8858746:	3bb230ef          	jal	ra,e887c300 <eLIBs_free>
			me->state = kPairVerifyStateM2;
    e885874a:	8622                	mv	a2,s0
    e885874c:	4789                	li	a5,2
    e885874e:	0ec6578b          	sbib	a5,(a2),12,3
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e8858752:	4685                	li	a3,1
    e8858754:	4599                	li	a1,6
    e8858756:	0108                	addi	a0,sp,128
    e8858758:	083080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885875c:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885875e:	d60511e3          	bnez	a0,e88584c0 <_VerifyPairingServerExchange+0x72>
			err = TLV8BufferAppend( &tlv, kTLVType_PublicKey, me->ourCurvePK, 32 );
    e8858762:	02000693          	li	a3,32
    e8858766:	864a                	mv	a2,s2
    e8858768:	458d                	li	a1,3
    e885876a:	0108                	addi	a0,sp,128
    e885876c:	06f080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e8858770:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8858772:	d40517e3          	bnez	a0,e88584c0 <_VerifyPairingServerExchange+0x72>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8858776:	865a                	mv	a2,s6
    e8858778:	85d6                	mv	a1,s5
    e885877a:	0108                	addi	a0,sp,128
    e885877c:	19d080ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e8858780:	d22a                	sw	a0,36(sp)
    e8858782:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e8858784:	d2051ee3          	bnez	a0,e88584c0 <_VerifyPairingServerExchange+0x72>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server M2 -- start response\n%?{end}%1{tlv8}\n", 
    e8858788:	6408                	ld	a0,8(s0)
    e885878a:	46f9                	li	a3,30
    e885878c:	411c                	lw	a5,0(a0)
    e885878e:	06f6c063          	blt	a3,a5,e88587ee <_VerifyPairingServerExchange+0x3a0>
    e8858792:	56fd                	li	a3,-1
    e8858794:	04d78763          	beq	a5,a3,e88587e2 <_VerifyPairingServerExchange+0x394>
    e8858798:	6404                	ld	s1,8(s0)
    e885879a:	46d1                	li	a3,20
    e885879c:	409c                	lw	a5,0(s1)
    e885879e:	06f6c063          	blt	a3,a5,e88587fe <_VerifyPairingServerExchange+0x3b0>
    e88587a2:	56fd                	li	a3,-1
    e88587a4:	00d79a63          	bne	a5,a3,e88587b8 <_VerifyPairingServerExchange+0x36a>
    e88587a8:	45d1                	li	a1,20
    e88587aa:	8526                	mv	a0,s1
    e88587ac:	8c7fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88587b0:	0005071b          	sext.w	a4,a0
    e88587b4:	00173713          	seqz	a4,a4
    e88587b8:	000b3883          	ld	a7,0(s6)
    e88587bc:	000ab803          	ld	a6,0(s5)
    e88587c0:	00045797          	auipc	a5,0x45
    e88587c4:	ef878793          	addi	a5,a5,-264 # e889d6b8 <icmp6_param_problem+0x64a>
    e88587c8:	0006a697          	auipc	a3,0x6a
    e88587cc:	25868693          	addi	a3,a3,600 # e88c2a20 <__PRETTY_FUNCTION__.9902+0xd88>
    e88587d0:	4679                	li	a2,30
    e88587d2:	0006a597          	auipc	a1,0x6a
    e88587d6:	48658593          	addi	a1,a1,1158 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e88587da:	8526                	mv	a0,s1
    e88587dc:	c99fb0ef          	jal	ra,e8854474 <LogPrintF>
    e88587e0:	a039                	j	e88587ee <_VerifyPairingServerExchange+0x3a0>
    e88587e2:	45f9                	li	a1,30
    e88587e4:	e83a                	sd	a4,16(sp)
    e88587e6:	88dfb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88587ea:	6742                	ld	a4,16(sp)
    e88587ec:	f555                	bnez	a0,e8858798 <_VerifyPairingServerExchange+0x34a>
			me->state = kPairVerifyStateM3;
    e88587ee:	478d                	li	a5,3
    e88587f0:	06f40023          	sb	a5,96(s0)
	uint8_t *					eptr	= NULL;
    e88587f4:	4981                	li	s3,0
	Boolean						done     = false;
    e88587f6:	4901                	li	s2,0
	err = kNoErr;
    e88587f8:	d202                	sw	zero,36(sp)
    e88587fa:	4481                	li	s1,0
    e88587fc:	a449                	j	e8858a7e <_VerifyPairingServerExchange+0x630>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server M2 -- start response\n%?{end}%1{tlv8}\n", 
    e88587fe:	4705                	li	a4,1
    e8858800:	bf65                	j	e88587b8 <_VerifyPairingServerExchange+0x36a>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server M3 -- finish request\n%?{end}%1{tlv8}\n", 
    e8858802:	4779                	li	a4,30
    e8858804:	04f74f63          	blt	a4,a5,e8858862 <_VerifyPairingServerExchange+0x414>
    e8858808:	577d                	li	a4,-1
    e885880a:	04e78863          	beq	a5,a4,e885885a <_VerifyPairingServerExchange+0x40c>
    e885880e:	00843903          	ld	s2,8(s0)
    e8858812:	4751                	li	a4,20
    e8858814:	00092783          	lw	a5,0(s2)
    e8858818:	06f74a63          	blt	a4,a5,e885888c <_VerifyPairingServerExchange+0x43e>
    e885881c:	577d                	li	a4,-1
    e885881e:	00e79963          	bne	a5,a4,e8858830 <_VerifyPairingServerExchange+0x3e2>
    e8858822:	45d1                	li	a1,20
    e8858824:	854a                	mv	a0,s2
    e8858826:	84dfb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885882a:	2501                	sext.w	a0,a0
    e885882c:	00153493          	seqz	s1,a0
    e8858830:	000b889b          	sext.w	a7,s7
    e8858834:	8852                	mv	a6,s4
    e8858836:	00045797          	auipc	a5,0x45
    e885883a:	e8278793          	addi	a5,a5,-382 # e889d6b8 <icmp6_param_problem+0x64a>
    e885883e:	8726                	mv	a4,s1
    e8858840:	0006a697          	auipc	a3,0x6a
    e8858844:	22068693          	addi	a3,a3,544 # e88c2a60 <__PRETTY_FUNCTION__.9902+0xdc8>
    e8858848:	4679                	li	a2,30
    e885884a:	0006a597          	auipc	a1,0x6a
    e885884e:	40e58593          	addi	a1,a1,1038 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e8858852:	854a                	mv	a0,s2
    e8858854:	c21fb0ef          	jal	ra,e8854474 <LogPrintF>
    e8858858:	a029                	j	e8858862 <_VerifyPairingServerExchange+0x414>
    e885885a:	45f9                	li	a1,30
    e885885c:	817fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858860:	f55d                	bnez	a0,e885880e <_VerifyPairingServerExchange+0x3c0>
			eptr = TLV8CopyCoalesced( inputPtr, inputEnd, kTLVType_EncryptedData, &elen, NULL, &err );
    e8858862:	105c                	addi	a5,sp,36
    e8858864:	85ce                	mv	a1,s3
    e8858866:	4701                	li	a4,0
    e8858868:	1834                	addi	a3,sp,56
    e885886a:	4615                	li	a2,5
    e885886c:	8552                	mv	a0,s4
    e885886e:	6c2080ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e8858872:	89aa                	mv	s3,a0
			require_noerr( err, exit );
    e8858874:	5792                	lw	a5,36(sp)
    e8858876:	c40796e3          	bnez	a5,e88584c2 <_VerifyPairingServerExchange+0x74>
			require_action( elen > 16, exit, err = kSizeErr );
    e885887a:	77e2                	ld	a5,56(sp)
    e885887c:	4741                	li	a4,16
    e885887e:	00f76963          	bltu	a4,a5,e8858890 <_VerifyPairingServerExchange+0x442>
			require_action( me->peerIdentifierLen > 0, exit, err = kSizeErr );
    e8858882:	77f9                	lui	a5,0xffffe
    e8858884:	5a97879b          	addiw	a5,a5,1449
    e8858888:	d23e                	sw	a5,36(sp)
    e885888a:	b925                	j	e88584c2 <_VerifyPairingServerExchange+0x74>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server M3 -- finish request\n%?{end}%1{tlv8}\n", 
    e885888c:	4485                	li	s1,1
    e885888e:	b74d                	j	e8858830 <_VerifyPairingServerExchange+0x3e2>
			elen -= 16;
    e8858890:	17c1                	addi	a5,a5,-16
			eend = eptr + elen;
    e8858892:	00f504b3          	add	s1,a0,a5
			err = chacha20_poly1305_decrypt_all_64x64( me->key, (const uint8_t *) "PV-Msg03", NULL, 0, eptr, elen, eptr, eend );
    e8858896:	882a                	mv	a6,a0
    e8858898:	872a                	mv	a4,a0
    e885889a:	88a6                	mv	a7,s1
    e885889c:	4681                	li	a3,0
    e885889e:	4601                	li	a2,0
    e88588a0:	0006a597          	auipc	a1,0x6a
    e88588a4:	03058593          	addi	a1,a1,48 # e88c28d0 <__PRETTY_FUNCTION__.9902+0xc38>
    e88588a8:	0da40513          	addi	a0,s0,218
			elen -= 16;
    e88588ac:	fc3e                	sd	a5,56(sp)
			err = chacha20_poly1305_decrypt_all_64x64( me->key, (const uint8_t *) "PV-Msg03", NULL, 0, eptr, elen, eptr, eend );
    e88588ae:	825f50ef          	jal	ra,e884e0d2 <chacha20_poly1305_decrypt_all_64x64>
    e88588b2:	d22a                	sw	a0,36(sp)
			if( err )
    e88588b4:	c92d                	beqz	a0,e8858926 <_VerifyPairingServerExchange+0x4d8>
				pair_ulog( me, kLogLevelWarning, "### Pair-verify server bad auth tag\n" );
    e88588b6:	6408                	ld	a0,8(s0)
    e88588b8:	03c00713          	li	a4,60
    e88588bc:	411c                	lw	a5,0(a0)
    e88588be:	02f74263          	blt	a4,a5,e88588e2 <_VerifyPairingServerExchange+0x494>
    e88588c2:	577d                	li	a4,-1
    e88588c4:	04e78b63          	beq	a5,a4,e885891a <_VerifyPairingServerExchange+0x4cc>
    e88588c8:	6408                	ld	a0,8(s0)
    e88588ca:	0006a697          	auipc	a3,0x6a
    e88588ce:	1d668693          	addi	a3,a3,470 # e88c2aa0 <__PRETTY_FUNCTION__.9902+0xe08>
    e88588d2:	03c00613          	li	a2,60
    e88588d6:	0006a597          	auipc	a1,0x6a
    e88588da:	38258593          	addi	a1,a1,898 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e88588de:	b97fb0ef          	jal	ra,e8854474 <LogPrintF>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, kTLVError_Authentication );
    e88588e2:	4609                	li	a2,2
    e88588e4:	459d                	li	a1,7
    e88588e6:	0108                	addi	a0,sp,128
    e88588e8:	7ec080ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e88588ec:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e88588ee:	bc051ae3          	bnez	a0,e88584c2 <_VerifyPairingServerExchange+0x74>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_State, kPairVerifyStateM4 );
    e88588f2:	4611                	li	a2,4
    e88588f4:	4599                	li	a1,6
    e88588f6:	0108                	addi	a0,sp,128
    e88588f8:	7dc080ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e88588fc:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e88588fe:	bc0512e3          	bnez	a0,e88584c2 <_VerifyPairingServerExchange+0x74>
				err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8858902:	865a                	mv	a2,s6
    e8858904:	85d6                	mv	a1,s5
    e8858906:	0108                	addi	a0,sp,128
    e8858908:	011080ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885890c:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885890e:	ba051ae3          	bnez	a0,e88584c2 <_VerifyPairingServerExchange+0x74>
				_PairingSessionReset( me );
    e8858912:	8522                	mv	a0,s0
    e8858914:	d26fe0ef          	jal	ra,e8856e3a <_PairingSessionReset>
				goto exit;
    e8858918:	b66d                	j	e88584c2 <_VerifyPairingServerExchange+0x74>
				pair_ulog( me, kLogLevelWarning, "### Pair-verify server bad auth tag\n" );
    e885891a:	03c00593          	li	a1,60
    e885891e:	f54fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858922:	d161                	beqz	a0,e88588e2 <_VerifyPairingServerExchange+0x494>
    e8858924:	b755                	j	e88588c8 <_VerifyPairingServerExchange+0x47a>
			ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8858926:	7c48                	ld	a0,184(s0)
    e8858928:	c509                	beqz	a0,e8858932 <_VerifyPairingServerExchange+0x4e4>
    e885892a:	1d7230ef          	jal	ra,e887c300 <eLIBs_free>
    e885892e:	0a043c23          	sd	zero,184(s0)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e8858932:	105c                	addi	a5,sp,36
    e8858934:	85a6                	mv	a1,s1
			ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8858936:	0c043023          	sd	zero,192(s0)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e885893a:	4701                	li	a4,0
    e885893c:	0c040693          	addi	a3,s0,192
    e8858940:	4605                	li	a2,1
    e8858942:	854e                	mv	a0,s3
    e8858944:	5ec080ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e8858948:	fc48                	sd	a0,184(s0)
			require_noerr( err, exit );
    e885894a:	5792                	lw	a5,36(sp)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e885894c:	85aa                	mv	a1,a0
			require_noerr( err, exit );
    e885894e:	b6079ae3          	bnez	a5,e88584c2 <_VerifyPairingServerExchange+0x74>
			require_action( me->peerIdentifierLen > 0, exit, err = kSizeErr );
    e8858952:	6070                	ld	a2,192(s0)
    e8858954:	d61d                	beqz	a2,e8858882 <_VerifyPairingServerExchange+0x434>
			err = PairingSessionFindPeer( me, me->peerIdentifierPtr, me->peerIdentifierLen, me->peerEdPK );
    e8858956:	19a40913          	addi	s2,s0,410
    e885895a:	86ca                	mv	a3,s2
    e885895c:	8522                	mv	a0,s0
    e885895e:	a4aff0ef          	jal	ra,e8857ba8 <PairingSessionFindPeer>
    e8858962:	d22a                	sw	a0,36(sp)
			if( err )
    e8858964:	c129                	beqz	a0,e88589a6 <_VerifyPairingServerExchange+0x558>
				pair_ulog( me, kLogLevelWarning, "### Pair-verify server unknown peer: %.*s\n", 
    e8858966:	6408                	ld	a0,8(s0)
    e8858968:	03c00713          	li	a4,60
    e885896c:	411c                	lw	a5,0(a0)
    e885896e:	f6f74ae3          	blt	a4,a5,e88588e2 <_VerifyPairingServerExchange+0x494>
    e8858972:	577d                	li	a4,-1
    e8858974:	02e78363          	beq	a5,a4,e885899a <_VerifyPairingServerExchange+0x54c>
    e8858978:	7c5c                	ld	a5,184(s0)
    e885897a:	0c042703          	lw	a4,192(s0)
    e885897e:	6408                	ld	a0,8(s0)
    e8858980:	0006a697          	auipc	a3,0x6a
    e8858984:	14868693          	addi	a3,a3,328 # e88c2ac8 <__PRETTY_FUNCTION__.9902+0xe30>
    e8858988:	03c00613          	li	a2,60
    e885898c:	0006a597          	auipc	a1,0x6a
    e8858990:	2cc58593          	addi	a1,a1,716 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e8858994:	ae1fb0ef          	jal	ra,e8854474 <LogPrintF>
    e8858998:	b7a9                	j	e88588e2 <_VerifyPairingServerExchange+0x494>
    e885899a:	03c00593          	li	a1,60
    e885899e:	ed4fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88589a2:	d121                	beqz	a0,e88588e2 <_VerifyPairingServerExchange+0x494>
    e88589a4:	bfd1                	j	e8858978 <_VerifyPairingServerExchange+0x52a>
			err = TLV8GetBytes( eptr, eend, kTLVType_Signature, 64, 64, sig, NULL, NULL );
    e88589a6:	4881                	li	a7,0
    e88589a8:	4801                	li	a6,0
    e88589aa:	009c                	addi	a5,sp,64
    e88589ac:	04000713          	li	a4,64
    e88589b0:	04000693          	li	a3,64
    e88589b4:	4629                	li	a2,10
    e88589b6:	85a6                	mv	a1,s1
    e88589b8:	854e                	mv	a0,s3
    e88589ba:	3c4080ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e88589be:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e88589c0:	b00511e3          	bnez	a0,e88584c2 <_VerifyPairingServerExchange+0x74>
			len = 32 + me->peerIdentifierLen + 32;
    e88589c4:	6068                	ld	a0,192(s0)
    e88589c6:	04050513          	addi	a0,a0,64
    e88589ca:	f82a                	sd	a0,48(sp)
			storage = (uint8_t *) malloc( len );
    e88589cc:	683220ef          	jal	ra,e887b84e <my_malloc>
    e88589d0:	84aa                	mv	s1,a0
			require_action( storage, exit, err = kNoMemoryErr );
    e88589d2:	e519                	bnez	a0,e88589e0 <_VerifyPairingServerExchange+0x592>
    e88589d4:	77f9                	lui	a5,0xffffe
    e88589d6:	5b87879b          	addiw	a5,a5,1464
    e88589da:	d23e                	sw	a5,36(sp)
	Boolean						done     = false;
    e88589dc:	4901                	li	s2,0
    e88589de:	a045                	j	e8858a7e <_VerifyPairingServerExchange+0x630>
			memcpy( &storage[  0 ], me->peerCurvePK, 32 );
    e88589e0:	02000613          	li	a2,32
    e88589e4:	17a40593          	addi	a1,s0,378
    e88589e8:	1b9230ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 ], me->peerIdentifierPtr, me->peerIdentifierLen );
    e88589ec:	6070                	ld	a2,192(s0)
    e88589ee:	7c4c                	ld	a1,184(s0)
    e88589f0:	02048513          	addi	a0,s1,32
    e88589f4:	1ad230ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->peerIdentifierLen ], me->ourCurvePK, 32 );
    e88589f8:	6068                	ld	a0,192(s0)
    e88589fa:	02000613          	li	a2,32
    e88589fe:	0fa40593          	addi	a1,s0,250
    e8858a02:	02050513          	addi	a0,a0,32
    e8858a06:	9526                	add	a0,a0,s1
    e8858a08:	199230ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			err = Ed25519_verify( storage, len, sig, me->peerEdPK );
    e8858a0c:	75c2                	ld	a1,48(sp)
    e8858a0e:	86ca                	mv	a3,s2
    e8858a10:	0090                	addi	a2,sp,64
    e8858a12:	8526                	mv	a0,s1
    e8858a14:	99ae60ef          	jal	ra,e883ebae <ed25519_verify_ref>
    e8858a18:	d22a                	sw	a0,36(sp)
			if( err )
    e8858a1a:	10050463          	beqz	a0,e8858b22 <_VerifyPairingServerExchange+0x6d4>
				pair_ulog( me, kLogLevelWarning, "### Pair-verify server bad signature: %#m\n", err );
    e8858a1e:	6408                	ld	a0,8(s0)
    e8858a20:	03c00713          	li	a4,60
    e8858a24:	411c                	lw	a5,0(a0)
    e8858a26:	02f74363          	blt	a4,a5,e8858a4c <_VerifyPairingServerExchange+0x5fe>
    e8858a2a:	577d                	li	a4,-1
    e8858a2c:	0ee78563          	beq	a5,a4,e8858b16 <_VerifyPairingServerExchange+0x6c8>
    e8858a30:	5712                	lw	a4,36(sp)
    e8858a32:	6408                	ld	a0,8(s0)
    e8858a34:	0006a697          	auipc	a3,0x6a
    e8858a38:	0c468693          	addi	a3,a3,196 # e88c2af8 <__PRETTY_FUNCTION__.9902+0xe60>
    e8858a3c:	03c00613          	li	a2,60
    e8858a40:	0006a597          	auipc	a1,0x6a
    e8858a44:	21858593          	addi	a1,a1,536 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e8858a48:	a2dfb0ef          	jal	ra,e8854474 <LogPrintF>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, kTLVError_Authentication );
    e8858a4c:	4609                	li	a2,2
    e8858a4e:	459d                	li	a1,7
    e8858a50:	0108                	addi	a0,sp,128
    e8858a52:	682080ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e8858a56:	d22a                	sw	a0,36(sp)
	Boolean						done     = false;
    e8858a58:	4901                	li	s2,0
				require_noerr( err, exit );
    e8858a5a:	e115                	bnez	a0,e8858a7e <_VerifyPairingServerExchange+0x630>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_State, kPairVerifyStateM4 );
    e8858a5c:	4611                	li	a2,4
    e8858a5e:	4599                	li	a1,6
    e8858a60:	0108                	addi	a0,sp,128
    e8858a62:	672080ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e8858a66:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e8858a68:	e919                	bnez	a0,e8858a7e <_VerifyPairingServerExchange+0x630>
				err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8858a6a:	865a                	mv	a2,s6
    e8858a6c:	85d6                	mv	a1,s5
    e8858a6e:	0108                	addi	a0,sp,128
    e8858a70:	6a8080ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e8858a74:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e8858a76:	e501                	bnez	a0,e8858a7e <_VerifyPairingServerExchange+0x630>
				_PairingSessionReset( me );
    e8858a78:	8522                	mv	a0,s0
    e8858a7a:	bc0fe0ef          	jal	ra,e8856e3a <_PairingSessionReset>
	TLV8BufferFree( &tlv );
    e8858a7e:	0108                	addi	a0,sp,128
	*outDone = done;
    e8858a80:	012c0023          	sb	s2,0(s8)
	TLV8BufferFree( &tlv );
    e8858a84:	536080ef          	jal	ra,e8860fba <TLV8BufferFree>
	TLV8BufferFree( &etlv );
    e8858a88:	0b88                	addi	a0,sp,464
    e8858a8a:	530080ef          	jal	ra,e8860fba <TLV8BufferFree>
	ForgetMem( &storage );
    e8858a8e:	c481                	beqz	s1,e8858a96 <_VerifyPairingServerExchange+0x648>
    e8858a90:	8526                	mv	a0,s1
    e8858a92:	06f230ef          	jal	ra,e887c300 <eLIBs_free>
	ForgetMem( &eptr );
    e8858a96:	00098563          	beqz	s3,e8858aa0 <_VerifyPairingServerExchange+0x652>
    e8858a9a:	854e                	mv	a0,s3
    e8858a9c:	065230ef          	jal	ra,e887c300 <eLIBs_free>
	if( err )
    e8858aa0:	5792                	lw	a5,36(sp)
    e8858aa2:	16078d63          	beqz	a5,e8858c1c <_VerifyPairingServerExchange+0x7ce>
		pair_ulog( me, kLogLevelWarning, "### Pair-verify server state %d failed: %#m\n%?{end}%1{tlv8}\n", 
    e8858aa6:	6408                	ld	a0,8(s0)
    e8858aa8:	03c00713          	li	a4,60
    e8858aac:	411c                	lw	a5,0(a0)
    e8858aae:	16f74763          	blt	a4,a5,e8858c1c <_VerifyPairingServerExchange+0x7ce>
    e8858ab2:	577d                	li	a4,-1
    e8858ab4:	14e78e63          	beq	a5,a4,e8858c10 <_VerifyPairingServerExchange+0x7c2>
    e8858ab8:	6404                	ld	s1,8(s0)
    e8858aba:	02800613          	li	a2,40
    e8858abe:	06044703          	lbu	a4,96(s0)
    e8858ac2:	4094                	lw	a3,0(s1)
    e8858ac4:	5792                	lw	a5,36(sp)
    e8858ac6:	4805                	li	a6,1
    e8858ac8:	02d64263          	blt	a2,a3,e8858aec <_VerifyPairingServerExchange+0x69e>
    e8858acc:	567d                	li	a2,-1
    e8858ace:	4801                	li	a6,0
    e8858ad0:	00c69e63          	bne	a3,a2,e8858aec <_VerifyPairingServerExchange+0x69e>
    e8858ad4:	02800593          	li	a1,40
    e8858ad8:	8526                	mv	a0,s1
    e8858ada:	ec3e                	sd	a5,24(sp)
    e8858adc:	e83a                	sd	a4,16(sp)
    e8858ade:	d94fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858ae2:	2501                	sext.w	a0,a0
    e8858ae4:	67e2                	ld	a5,24(sp)
    e8858ae6:	6742                	ld	a4,16(sp)
    e8858ae8:	00153813          	seqz	a6,a0
    e8858aec:	2b81                	sext.w	s7,s7
    e8858aee:	e45e                	sd	s7,8(sp)
    e8858af0:	e052                	sd	s4,0(sp)
    e8858af2:	00045897          	auipc	a7,0x45
    e8858af6:	bc688893          	addi	a7,a7,-1082 # e889d6b8 <icmp6_param_problem+0x64a>
    e8858afa:	0006a697          	auipc	a3,0x6a
    e8858afe:	0b668693          	addi	a3,a3,182 # e88c2bb0 <__PRETTY_FUNCTION__.9902+0xf18>
    e8858b02:	03c00613          	li	a2,60
    e8858b06:	0006a597          	auipc	a1,0x6a
    e8858b0a:	15258593          	addi	a1,a1,338 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e8858b0e:	8526                	mv	a0,s1
    e8858b10:	965fb0ef          	jal	ra,e8854474 <LogPrintF>
    e8858b14:	a221                	j	e8858c1c <_VerifyPairingServerExchange+0x7ce>
				pair_ulog( me, kLogLevelWarning, "### Pair-verify server bad signature: %#m\n", err );
    e8858b16:	03c00593          	li	a1,60
    e8858b1a:	d58fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858b1e:	d51d                	beqz	a0,e8858a4c <_VerifyPairingServerExchange+0x5fe>
    e8858b20:	bf01                	j	e8858a30 <_VerifyPairingServerExchange+0x5e2>
			ForgetMem( &storage );
    e8858b22:	8526                	mv	a0,s1
    e8858b24:	7dc230ef          	jal	ra,e887c300 <eLIBs_free>
			me->state = kPairVerifyStateM4;
    e8858b28:	8622                	mv	a2,s0
    e8858b2a:	4791                	li	a5,4
    e8858b2c:	0ec6578b          	sbib	a5,(a2),12,3
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e8858b30:	4685                	li	a3,1
    e8858b32:	4599                	li	a1,6
    e8858b34:	0108                	addi	a0,sp,128
    e8858b36:	4a4080ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e8858b3a:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8858b3c:	980513e3          	bnez	a0,e88584c2 <_VerifyPairingServerExchange+0x74>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8858b40:	865a                	mv	a2,s6
    e8858b42:	85d6                	mv	a1,s5
    e8858b44:	0108                	addi	a0,sp,128
    e8858b46:	5d2080ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e8858b4a:	d22a                	sw	a0,36(sp)
    e8858b4c:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e8858b4e:	96051ae3          	bnez	a0,e88584c2 <_VerifyPairingServerExchange+0x74>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server M4 -- finish response\n%?{end}%1{tlv8}\n", 
    e8858b52:	6408                	ld	a0,8(s0)
    e8858b54:	46f9                	li	a3,30
    e8858b56:	411c                	lw	a5,0(a0)
    e8858b58:	06f6c063          	blt	a3,a5,e8858bb8 <_VerifyPairingServerExchange+0x76a>
    e8858b5c:	56fd                	li	a3,-1
    e8858b5e:	04d78763          	beq	a5,a3,e8858bac <_VerifyPairingServerExchange+0x75e>
    e8858b62:	6404                	ld	s1,8(s0)
    e8858b64:	46d1                	li	a3,20
    e8858b66:	409c                	lw	a5,0(s1)
    e8858b68:	08f6c263          	blt	a3,a5,e8858bec <_VerifyPairingServerExchange+0x79e>
    e8858b6c:	56fd                	li	a3,-1
    e8858b6e:	00d79a63          	bne	a5,a3,e8858b82 <_VerifyPairingServerExchange+0x734>
    e8858b72:	45d1                	li	a1,20
    e8858b74:	8526                	mv	a0,s1
    e8858b76:	cfcfb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858b7a:	0005071b          	sext.w	a4,a0
    e8858b7e:	00173713          	seqz	a4,a4
    e8858b82:	000b3883          	ld	a7,0(s6)
    e8858b86:	000ab803          	ld	a6,0(s5)
    e8858b8a:	00045797          	auipc	a5,0x45
    e8858b8e:	b2e78793          	addi	a5,a5,-1234 # e889d6b8 <icmp6_param_problem+0x64a>
    e8858b92:	0006a697          	auipc	a3,0x6a
    e8858b96:	f9668693          	addi	a3,a3,-106 # e88c2b28 <__PRETTY_FUNCTION__.9902+0xe90>
    e8858b9a:	4679                	li	a2,30
    e8858b9c:	0006a597          	auipc	a1,0x6a
    e8858ba0:	0bc58593          	addi	a1,a1,188 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e8858ba4:	8526                	mv	a0,s1
    e8858ba6:	8cffb0ef          	jal	ra,e8854474 <LogPrintF>
    e8858baa:	a039                	j	e8858bb8 <_VerifyPairingServerExchange+0x76a>
    e8858bac:	45f9                	li	a1,30
    e8858bae:	e83a                	sd	a4,16(sp)
    e8858bb0:	cc2fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858bb4:	6742                	ld	a4,16(sp)
    e8858bb6:	f555                	bnez	a0,e8858b62 <_VerifyPairingServerExchange+0x714>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server done\n" );
    e8858bb8:	6408                	ld	a0,8(s0)
			me->state = kPairVerifyStateDone;
    e8858bba:	4795                	li	a5,5
    e8858bbc:	06f40023          	sb	a5,96(s0)
			pair_ulog( me, kLogLevelTrace, "Pair-verify server done\n" );
    e8858bc0:	411c                	lw	a5,0(a0)
    e8858bc2:	4779                	li	a4,30
			done = true;
    e8858bc4:	4905                	li	s2,1
			pair_ulog( me, kLogLevelTrace, "Pair-verify server done\n" );
    e8858bc6:	c2f749e3          	blt	a4,a5,e88587f8 <_VerifyPairingServerExchange+0x3aa>
    e8858bca:	577d                	li	a4,-1
    e8858bcc:	02e78263          	beq	a5,a4,e8858bf0 <_VerifyPairingServerExchange+0x7a2>
    e8858bd0:	6408                	ld	a0,8(s0)
    e8858bd2:	0006a697          	auipc	a3,0x6a
    e8858bd6:	f9668693          	addi	a3,a3,-106 # e88c2b68 <__PRETTY_FUNCTION__.9902+0xed0>
    e8858bda:	4679                	li	a2,30
    e8858bdc:	0006a597          	auipc	a1,0x6a
    e8858be0:	07c58593          	addi	a1,a1,124 # e88c2c58 <__PRETTY_FUNCTION__.10634>
    e8858be4:	891fb0ef          	jal	ra,e8854474 <LogPrintF>
			done = true;
    e8858be8:	4905                	li	s2,1
    e8858bea:	b139                	j	e88587f8 <_VerifyPairingServerExchange+0x3aa>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server M4 -- finish response\n%?{end}%1{tlv8}\n", 
    e8858bec:	4705                	li	a4,1
    e8858bee:	bf51                	j	e8858b82 <_VerifyPairingServerExchange+0x734>
			pair_ulog( me, kLogLevelTrace, "Pair-verify server done\n" );
    e8858bf0:	45f9                	li	a1,30
    e8858bf2:	c80fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858bf6:	c00501e3          	beqz	a0,e88587f8 <_VerifyPairingServerExchange+0x3aa>
    e8858bfa:	bfd9                	j	e8858bd0 <_VerifyPairingServerExchange+0x782>
			pair_ulog( me, kLogLevelWarning, "### Pair-verify server bad state: %d\n", me->state );
    e8858bfc:	03c00593          	li	a1,60
    e8858c00:	c72fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858c04:	900500e3          	beqz	a0,e8858504 <_VerifyPairingServerExchange+0xb6>
    e8858c08:	923ff06f          	j	e885852a <_VerifyPairingServerExchange+0xdc>
	uint8_t *					eptr	= NULL;
    e8858c0c:	4981                	li	s3,0
    e8858c0e:	b3f9                	j	e88589dc <_VerifyPairingServerExchange+0x58e>
		pair_ulog( me, kLogLevelWarning, "### Pair-verify server state %d failed: %#m\n%?{end}%1{tlv8}\n", 
    e8858c10:	03c00593          	li	a1,60
    e8858c14:	c5efb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858c18:	ea0510e3          	bnez	a0,e8858ab8 <_VerifyPairingServerExchange+0x66a>
}
    e8858c1c:	38813083          	ld	ra,904(sp)
    e8858c20:	38013403          	ld	s0,896(sp)
    e8858c24:	5512                	lw	a0,36(sp)
    e8858c26:	37813483          	ld	s1,888(sp)
    e8858c2a:	37013903          	ld	s2,880(sp)
    e8858c2e:	36813983          	ld	s3,872(sp)
    e8858c32:	36013a03          	ld	s4,864(sp)
    e8858c36:	35813a83          	ld	s5,856(sp)
    e8858c3a:	35013b03          	ld	s6,848(sp)
    e8858c3e:	34813b83          	ld	s7,840(sp)
    e8858c42:	34013c03          	ld	s8,832(sp)
    e8858c46:	33813c83          	ld	s9,824(sp)
    e8858c4a:	33013d03          	ld	s10,816(sp)
    e8858c4e:	32813d83          	ld	s11,808(sp)
    e8858c52:	39010113          	addi	sp,sp,912
    e8858c56:	8082                	ret

00000000e8858c58 <PairingSessionSavePeer>:
	PairingSessionSavePeer( 
		PairingSessionRef	me, 
		const char *		inIdentifierPtr,
		size_t				inIdentifierLen, 
		const uint8_t *		inPK )
{
    e8858c58:	712d                	addi	sp,sp,-288
    e8858c5a:	e626                	sd	s1,264(sp)
    e8858c5c:	fdce                	sd	s3,248(sp)
    e8858c5e:	f9d2                	sd	s4,240(sp)
    e8858c60:	f1da                	sd	s6,224(sp)
    e8858c62:	ee06                	sd	ra,280(sp)
    e8858c64:	ea22                	sd	s0,272(sp)
    e8858c66:	e24a                	sd	s2,256(sp)
    e8858c68:	f5d6                	sd	s5,232(sp)
	OSStatus		err;
	
	if( inIdentifierLen == kSizeCString ) inIdentifierLen = strlen( (const char *) inIdentifierPtr );
    e8858c6a:	57fd                	li	a5,-1
{
    e8858c6c:	84aa                	mv	s1,a0
    e8858c6e:	89ae                	mv	s3,a1
    e8858c70:	8b36                	mv	s6,a3
    e8858c72:	8a32                	mv	s4,a2
	if( inIdentifierLen == kSizeCString ) inIdentifierLen = strlen( (const char *) inIdentifierPtr );
    e8858c74:	00f61763          	bne	a2,a5,e8858c82 <PairingSessionSavePeer+0x2a>
    e8858c78:	852e                	mv	a0,a1
    e8858c7a:	69e230ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8858c7e:	7c053a0b          	extu	s4,a0,31,0
	
	if( me->delegate.savePeer_f )
    e8858c82:	60bc                	ld	a5,64(s1)
    e8858c84:	c395                	beqz	a5,e8858ca8 <PairingSessionSavePeer+0x50>
	{
		err = me->delegate.savePeer_f( inIdentifierPtr, inIdentifierLen, inPK, me->delegate.context );
    e8858c86:	6894                	ld	a3,16(s1)
    e8858c88:	865a                	mv	a2,s6
    e8858c8a:	85d2                	mv	a1,s4
    e8858c8c:	854e                	mv	a0,s3
    e8858c8e:	9782                	jalr	a5
    e8858c90:	842a                	mv	s0,a0
		#endif
	}
	
exit:
	return( err );
}
    e8858c92:	8522                	mv	a0,s0
    e8858c94:	60f2                	ld	ra,280(sp)
    e8858c96:	6452                	ld	s0,272(sp)
    e8858c98:	64b2                	ld	s1,264(sp)
    e8858c9a:	6912                	ld	s2,256(sp)
    e8858c9c:	79ee                	ld	s3,248(sp)
    e8858c9e:	7a4e                	ld	s4,240(sp)
    e8858ca0:	7aae                	ld	s5,232(sp)
    e8858ca2:	7b0e                	ld	s6,224(sp)
    e8858ca4:	6115                	addi	sp,sp,288
    e8858ca6:	8082                	ret
	CFMutableDictionaryRef		infoDict;
	CFDataRef					infoData = NULL;
	char						hex[ ( 32 * 2 ) + 1 ];
	char *						label;
	
	pthread_mutex_lock( &gPairingGlobalLock );
    e8858ca8:	0007c517          	auipc	a0,0x7c
    e8858cac:	43050513          	addi	a0,a0,1072 # e88d50d8 <gPairingGlobalLock>
    e8858cb0:	66f220ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	
	infoDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8858cb4:	00066697          	auipc	a3,0x66
    e8858cb8:	b1468693          	addi	a3,a3,-1260 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8858cbc:	00066617          	auipc	a2,0x66
    e8858cc0:	adc60613          	addi	a2,a2,-1316 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8858cc4:	4581                	li	a1,0
    e8858cc6:	4501                	li	a0,0
    e8858cc8:	edeee0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8858ccc:	842a                	mv	s0,a0
	require_action( infoDict, exit, err = kNoMemoryErr );
    e8858cce:	1a050c63          	beqz	a0,e8858e86 <PairingSessionSavePeer+0x22e>
	if( CFDictionaryGetCount( infoDict ) > 0 )
    e8858cd2:	f58ee0ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e8858cd6:	02a05463          	blez	a0,e8858cfe <PairingSessionSavePeer+0xa6>
	{
		infoData = CFPropertyListCreateData( NULL, infoDict, kCFPropertyListBinaryFormat_v1_0, 0, NULL );
    e8858cda:	4701                	li	a4,0
    e8858cdc:	4681                	li	a3,0
    e8858cde:	0c800613          	li	a2,200
    e8858ce2:	85a2                	mv	a1,s0
    e8858ce4:	4501                	li	a0,0
    e8858ce6:	9d5ee0ef          	jal	ra,e88476ba <CFPropertyListCreateData>
    e8858cea:	892a                	mv	s2,a0
		CFRelease( infoDict );
    e8858cec:	8522                	mv	a0,s0
    e8858cee:	c5cee0ef          	jal	ra,e884714a <CFRelease>
		require_action( infoData, exit, err = kUnknownErr );
    e8858cf2:	00091a63          	bnez	s2,e8858d06 <PairingSessionSavePeer+0xae>
    e8858cf6:	7479                	lui	s0,0xffffe
    e8858cf8:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8858cfc:	aa2d                	j	e8858e36 <PairingSessionSavePeer+0x1de>
	}
	else
	{
		CFRelease( infoDict );
    e8858cfe:	8522                	mv	a0,s0
    e8858d00:	c4aee0ef          	jal	ra,e884714a <CFRelease>
	CFDataRef					infoData = NULL;
    e8858d04:	4901                	li	s2,0
	}
	
	// Delete any existing peer first to self-repair and avoid dups.
	
	_PairingSessionDeletePeer( me, inIdentifierPtr, inIdentifierLen );
    e8858d06:	2484a503          	lw	a0,584(s1)
    e8858d0a:	8652                	mv	a2,s4
    e8858d0c:	85ce                	mv	a1,s3
    e8858d0e:	8e7fe0ef          	jal	ra,e88575f4 <_PairingSessionDeletePeer.isra.0>
	
	// Create the new Keychain entry.
	
	label = NULL;
    e8858d12:	e902                	sd	zero,144(sp)
	asprintf( &label, "%s: %.*s", CFStringGetCStringPtr(me->keychainPeerLabel, kCFStringEncodingUTF8), (int) inIdentifierLen, inIdentifierPtr );
    e8858d14:	2404b503          	ld	a0,576(s1)
    e8858d18:	080005b7          	lui	a1,0x8000
    e8858d1c:	10058593          	addi	a1,a1,256 # 8000100 <memcmp-0xe07fff00>
    e8858d20:	89dee0ef          	jal	ra,e88475bc <CFStringGetCStringPtr>
    e8858d24:	000a041b          	sext.w	s0,s4
    e8858d28:	862a                	mv	a2,a0
    e8858d2a:	874e                	mv	a4,s3
    e8858d2c:	86a2                	mv	a3,s0
    e8858d2e:	00069597          	auipc	a1,0x69
    e8858d32:	2e258593          	addi	a1,a1,738 # e88c2010 <__PRETTY_FUNCTION__.9902+0x378>
    e8858d36:	0908                	addi	a0,sp,144
    e8858d38:	64d1a0ef          	jal	ra,e8873b84 <asprintf>
	require_action( label, exit, err = kNoMemoryErr );
    e8858d3c:	67ca                	ld	a5,144(sp)
    e8858d3e:	14078563          	beqz	a5,e8858e88 <PairingSessionSavePeer+0x230>
	
	DataToHexCString( inPK, 32, hex );
    e8858d42:	09810a93          	addi	s5,sp,152
    e8858d46:	0004a697          	auipc	a3,0x4a
    e8858d4a:	46268693          	addi	a3,a3,1122 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e8858d4e:	8656                	mv	a2,s5
    e8858d50:	02000593          	li	a1,32
    e8858d54:	855a                	mv	a0,s6
    e8858d56:	6d0060ef          	jal	ra,e885f426 <DataToHexCStringEx>
		"}", 
		kSecClass,				kSecClassGenericPassword, 
		#if( !TARGET_IPHONE_SIMULATOR )
		kSecAttrAccessGroup,	me->keychainAccessGroup, 
		#endif
		kSecAttrAccessible,		( me->keychainFlags & kPairingKeychainFlag_HighSecurity ) ? 
    e8858d5a:	2584a703          	lw	a4,600(s1)
	err = KeychainAddFormatted( NULL, 
    e8858d5e:	2204b783          	ld	a5,544(s1)
    e8858d62:	00045897          	auipc	a7,0x45
    e8858d66:	9e688893          	addi	a7,a7,-1562 # e889d748 <icmp6_param_problem+0x6da>
		kSecAttrAccessible,		( me->keychainFlags & kPairingKeychainFlag_HighSecurity ) ? 
    e8858d6a:	00877693          	andi	a3,a4,8
	err = KeychainAddFormatted( NULL, 
    e8858d6e:	e689                	bnez	a3,e8858d78 <PairingSessionSavePeer+0x120>
    e8858d70:	00045897          	auipc	a7,0x45
    e8858d74:	82088893          	addi	a7,a7,-2016 # e889d590 <icmp6_param_problem+0x522>
		kSecAttrDescription,	me->keychainPeerDesc, 
		kSecAttrAccount,		(int) inIdentifierLen, inIdentifierPtr, 
		kSecAttrService,		me->keychainPeerLabel, 
		kSecAttrGeneric,		infoData, 
		kSecValueData,			hex, 32 * 2, 
		kSecAttrSynchronizable,	( me->keychainFlags & kPairingKeychainFlag_iCloudPeers ) ? kCFBooleanTrue : NULL );
    e8858d78:	8b09                	andi	a4,a4,2
	err = KeychainAddFormatted( NULL, 
    e8858d7a:	2484a603          	lw	a2,584(s1)
    e8858d7e:	65ca                	ld	a1,144(sp)
    e8858d80:	2504b503          	ld	a0,592(s1)
    e8858d84:	2404b803          	ld	a6,576(s1)
    e8858d88:	4681                	li	a3,0
    e8858d8a:	c711                	beqz	a4,e8858d96 <PairingSessionSavePeer+0x13e>
    e8858d8c:	0007c717          	auipc	a4,0x7c
    e8858d90:	f4470713          	addi	a4,a4,-188 # e88d4cd0 <kCFLBooleanTrue>
    e8858d94:	6314                	ld	a3,0(a4)
    e8858d96:	00044717          	auipc	a4,0x44
    e8858d9a:	7aa70713          	addi	a4,a4,1962 # e889d540 <icmp6_param_problem+0x4d2>
    e8858d9e:	e13a                	sd	a4,128(sp)
    e8858da0:	04000713          	li	a4,64
    e8858da4:	fcba                	sd	a4,120(sp)
    e8858da6:	00044717          	auipc	a4,0x44
    e8858daa:	7d270713          	addi	a4,a4,2002 # e889d578 <icmp6_param_problem+0x50a>
    e8858dae:	f4ba                	sd	a4,104(sp)
    e8858db0:	00045717          	auipc	a4,0x45
    e8858db4:	88870713          	addi	a4,a4,-1912 # e889d638 <icmp6_param_problem+0x5ca>
    e8858db8:	ecba                	sd	a4,88(sp)
    e8858dba:	00044717          	auipc	a4,0x44
    e8858dbe:	67670713          	addi	a4,a4,1654 # e889d430 <icmp6_param_problem+0x3c2>
    e8858dc2:	e4ba                	sd	a4,72(sp)
    e8858dc4:	00044717          	auipc	a4,0x44
    e8858dc8:	79c70713          	addi	a4,a4,1948 # e889d560 <icmp6_param_problem+0x4f2>
    e8858dcc:	f83a                	sd	a4,48(sp)
    e8858dce:	00045717          	auipc	a4,0x45
    e8858dd2:	80a70713          	addi	a4,a4,-2038 # e889d5d8 <icmp6_param_problem+0x56a>
    e8858dd6:	f03a                	sd	a4,32(sp)
    e8858dd8:	00045717          	auipc	a4,0x45
    e8858ddc:	82070713          	addi	a4,a4,-2016 # e889d5f8 <icmp6_param_problem+0x58a>
    e8858de0:	e83a                	sd	a4,16(sp)
    e8858de2:	00044717          	auipc	a4,0x44
    e8858de6:	66670713          	addi	a4,a4,1638 # e889d448 <icmp6_param_problem+0x3da>
    e8858dea:	e536                	sd	a3,136(sp)
    e8858dec:	e8c2                	sd	a6,80(sp)
    e8858dee:	fc22                	sd	s0,56(sp)
    e8858df0:	f42a                	sd	a0,40(sp)
    e8858df2:	ec2e                	sd	a1,24(sp)
    e8858df4:	e432                	sd	a2,8(sp)
    e8858df6:	e03a                	sd	a4,0(sp)
    e8858df8:	f0ca                	sd	s2,96(sp)
    e8858dfa:	e0ce                	sd	s3,64(sp)
    e8858dfc:	00044817          	auipc	a6,0x44
    e8858e00:	7bc80813          	addi	a6,a6,1980 # e889d5b8 <icmp6_param_problem+0x54a>
    e8858e04:	00044717          	auipc	a4,0x44
    e8858e08:	6bc70713          	addi	a4,a4,1724 # e889d4c0 <icmp6_param_problem+0x452>
    e8858e0c:	00044697          	auipc	a3,0x44
    e8858e10:	65468693          	addi	a3,a3,1620 # e889d460 <icmp6_param_problem+0x3f2>
    e8858e14:	00044617          	auipc	a2,0x44
    e8858e18:	67460613          	addi	a2,a2,1652 # e889d488 <icmp6_param_problem+0x41a>
    e8858e1c:	00069597          	auipc	a1,0x69
    e8858e20:	f5458593          	addi	a1,a1,-172 # e88c1d70 <__PRETTY_FUNCTION__.9902+0xd8>
    e8858e24:	4501                	li	a0,0
    e8858e26:	f8d6                	sd	s5,112(sp)
    e8858e28:	b88fa0ef          	jal	ra,e88531b0 <KeychainAddFormatted>
    e8858e2c:	842a                	mv	s0,a0
	free( label );
    e8858e2e:	654a                	ld	a0,144(sp)
    e8858e30:	4d0230ef          	jal	ra,e887c300 <eLIBs_free>
	require_quiet( err != errSecAuthFailed, exit );
	require_noerr( err, exit );
	
exit:
	if( err ) pair_ulog( me, kLogLevelWarning, "### Save %@ %.*s failed: %#m\n", 
    e8858e34:	cc0d                	beqz	s0,e8858e6e <PairingSessionSavePeer+0x216>
    e8858e36:	6488                	ld	a0,8(s1)
    e8858e38:	03c00713          	li	a4,60
    e8858e3c:	411c                	lw	a5,0(a0)
    e8858e3e:	02f74863          	blt	a4,a5,e8858e6e <PairingSessionSavePeer+0x216>
    e8858e42:	577d                	li	a4,-1
    e8858e44:	04e78663          	beq	a5,a4,e8858e90 <PairingSessionSavePeer+0x238>
    e8858e48:	2404b703          	ld	a4,576(s1)
    e8858e4c:	6488                	ld	a0,8(s1)
    e8858e4e:	88a2                	mv	a7,s0
    e8858e50:	884e                	mv	a6,s3
    e8858e52:	000a079b          	sext.w	a5,s4
    e8858e56:	00069697          	auipc	a3,0x69
    e8858e5a:	f6268693          	addi	a3,a3,-158 # e88c1db8 <__PRETTY_FUNCTION__.9902+0x120>
    e8858e5e:	03c00613          	li	a2,60
    e8858e62:	0006a597          	auipc	a1,0x6a
    e8858e66:	e6e58593          	addi	a1,a1,-402 # e88c2cd0 <__PRETTY_FUNCTION__.10835>
    e8858e6a:	e0afb0ef          	jal	ra,e8854474 <LogPrintF>
		me->keychainPeerLabel, (int) inIdentifierLen, inIdentifierPtr, err );
	CFReleaseNullSafe( infoData );
    e8858e6e:	00090563          	beqz	s2,e8858e78 <PairingSessionSavePeer+0x220>
    e8858e72:	854a                	mv	a0,s2
    e8858e74:	ad6ee0ef          	jal	ra,e884714a <CFRelease>
	pthread_mutex_unlock( &gPairingGlobalLock );
    e8858e78:	0007c517          	auipc	a0,0x7c
    e8858e7c:	26050513          	addi	a0,a0,608 # e88d50d8 <gPairingGlobalLock>
    e8858e80:	4e3220ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
exit:
    e8858e84:	b539                	j	e8858c92 <PairingSessionSavePeer+0x3a>
	CFDataRef					infoData = NULL;
    e8858e86:	4901                	li	s2,0
	require_action( label, exit, err = kNoMemoryErr );
    e8858e88:	7479                	lui	s0,0xffffe
    e8858e8a:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8858e8e:	b765                	j	e8858e36 <PairingSessionSavePeer+0x1de>
	if( err ) pair_ulog( me, kLogLevelWarning, "### Save %@ %.*s failed: %#m\n", 
    e8858e90:	03c00593          	li	a1,60
    e8858e94:	9defb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858e98:	d979                	beqz	a0,e8858e6e <PairingSessionSavePeer+0x216>
    e8858e9a:	b77d                	j	e8858e48 <PairingSessionSavePeer+0x1f0>

00000000e8858e9c <_SetupClientExchange>:
{
    e8858e9c:	c3010113          	addi	sp,sp,-976
    e8858ea0:	39713423          	sd	s7,904(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8858ea4:	6b91                	lui	s7,0x4
{
    e8858ea6:	3c813023          	sd	s0,960(sp)
    e8858eaa:	3a913c23          	sd	s1,952(sp)
    e8858eae:	3b213823          	sd	s2,944(sp)
	const uint8_t * const		inputEnd	= inputPtr + inInputLen;
    e8858eb2:	00c584b3          	add	s1,a1,a2
{
    e8858eb6:	842a                	mv	s0,a0
    e8858eb8:	892e                	mv	s2,a1
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8858eba:	1188                	addi	a0,sp,224
    e8858ebc:	e80b8593          	addi	a1,s7,-384 # 3e80 <memcmp-0xe87fc180>
{
    e8858ec0:	3c113423          	sd	ra,968(sp)
    e8858ec4:	3b313423          	sd	s3,936(sp)
    e8858ec8:	3b413023          	sd	s4,928(sp)
    e8858ecc:	39513c23          	sd	s5,920(sp)
    e8858ed0:	8a3e                	mv	s4,a5
    e8858ed2:	39613823          	sd	s6,912(sp)
    e8858ed6:	89b2                	mv	s3,a2
    e8858ed8:	8ab6                	mv	s5,a3
    e8858eda:	8b3a                	mv	s6,a4
    e8858edc:	39813023          	sd	s8,896(sp)
	uint8_t *					storage		= NULL;
    e8858ee0:	f882                	sd	zero,112(sp)
	uint8_t *					clientPKPtr	= NULL;
    e8858ee2:	e102                	sd	zero,128(sp)
	size_t						clientPKLen	= 0;
    e8858ee4:	e502                	sd	zero,136(sp)
	uint8_t *					responsePtr	= NULL;
    e8858ee6:	e902                	sd	zero,144(sp)
	size_t						responseLen	= 0;
    e8858ee8:	ed02                	sd	zero,152(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8858eea:	0be080ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	TLV8BufferInit( &etlv, kMaxTLVSize );
    e8858eee:	e80b8593          	addi	a1,s7,-384
    e8858ef2:	1c08                	addi	a0,sp,560
    e8858ef4:	0b4080ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	if( me->state == kPairingStateInvalid ) me->state = kPairSetupStateM1;
    e8858ef8:	06044783          	lbu	a5,96(s0)
    e8858efc:	e781                	bnez	a5,e8858f04 <_SetupClientExchange+0x68>
    e8858efe:	4785                	li	a5,1
    e8858f00:	06f40023          	sb	a5,96(s0)
	if( inInputLen > 0 )
    e8858f04:	10098063          	beqz	s3,e8859004 <_SetupClientExchange+0x168>
		err = TLV8Get( inputPtr, inputEnd, kTLVType_State, &ptr, &len, NULL );
    e8858f08:	4781                	li	a5,0
    e8858f0a:	10b8                	addi	a4,sp,104
    e8858f0c:	1094                	addi	a3,sp,96
    e8858f0e:	4619                	li	a2,6
    e8858f10:	85a6                	mv	a1,s1
    e8858f12:	854a                	mv	a0,s2
    e8858f14:	5a1070ef          	jal	ra,e8860cb4 <TLV8Get>
    e8858f18:	ceaa                	sw	a0,92(sp)
		require_noerr( err, exit );
    e8858f1a:	c169                	beqz	a0,e8858fdc <_SetupClientExchange+0x140>
	uint8_t *					eptr		= NULL;
    e8858f1c:	4481                	li	s1,0
	Boolean						done		= false;
    e8858f1e:	4781                	li	a5,0
	*outDone = done;
    e8858f20:	00fa0023          	sb	a5,0(s4)
	TLV8BufferFree( &tlv );
    e8858f24:	1188                	addi	a0,sp,224
    e8858f26:	094080ef          	jal	ra,e8860fba <TLV8BufferFree>
	TLV8BufferFree( &etlv );
    e8858f2a:	1c08                	addi	a0,sp,560
    e8858f2c:	08e080ef          	jal	ra,e8860fba <TLV8BufferFree>
	ForgetMem( &storage );
    e8858f30:	7546                	ld	a0,112(sp)
    e8858f32:	c501                	beqz	a0,e8858f3a <_SetupClientExchange+0x9e>
    e8858f34:	3cc230ef          	jal	ra,e887c300 <eLIBs_free>
    e8858f38:	f882                	sd	zero,112(sp)
	ForgetMem( &eptr );
    e8858f3a:	c481                	beqz	s1,e8858f42 <_SetupClientExchange+0xa6>
    e8858f3c:	8526                	mv	a0,s1
    e8858f3e:	3c2230ef          	jal	ra,e887c300 <eLIBs_free>
	ForgetPtrLen( &clientPKPtr, &clientPKLen );
    e8858f42:	650a                	ld	a0,128(sp)
    e8858f44:	c501                	beqz	a0,e8858f4c <_SetupClientExchange+0xb0>
    e8858f46:	3ba230ef          	jal	ra,e887c300 <eLIBs_free>
    e8858f4a:	e102                	sd	zero,128(sp)
	ForgetPtrLen( &responsePtr, &responseLen );
    e8858f4c:	654a                	ld	a0,144(sp)
	ForgetPtrLen( &clientPKPtr, &clientPKLen );
    e8858f4e:	e502                	sd	zero,136(sp)
	ForgetPtrLen( &responsePtr, &responseLen );
    e8858f50:	c501                	beqz	a0,e8858f58 <_SetupClientExchange+0xbc>
    e8858f52:	3ae230ef          	jal	ra,e887c300 <eLIBs_free>
    e8858f56:	e902                	sd	zero,144(sp)
	if( err && ( err != kAsyncNoErr ) )
    e8858f58:	4776                	lw	a4,92(sp)
	ForgetPtrLen( &responsePtr, &responseLen );
    e8858f5a:	ed02                	sd	zero,152(sp)
	if( err && ( err != kAsyncNoErr ) )
    e8858f5c:	4a0702e3          	beqz	a4,e8859c00 <_SetupClientExchange+0xd64>
    e8858f60:	77f9                	lui	a5,0xffffe
    e8858f62:	58d78793          	addi	a5,a5,1421 # ffffffffffffe58d <__DRAM0_INF_BASE+0xffffffff0000e58d>
    e8858f66:	48f70de3          	beq	a4,a5,e8859c00 <_SetupClientExchange+0xd64>
		pair_ulog( me, kLogLevelWarning, "### Pair-setup client state %d failed: %#m\n%?{end}%1{tlv8}\n", 
    e8858f6a:	6408                	ld	a0,8(s0)
    e8858f6c:	03c00713          	li	a4,60
    e8858f70:	411c                	lw	a5,0(a0)
    e8858f72:	48f747e3          	blt	a4,a5,e8859c00 <_SetupClientExchange+0xd64>
    e8858f76:	577d                	li	a4,-1
    e8858f78:	46e78ee3          	beq	a5,a4,e8859bf4 <_SetupClientExchange+0xd58>
    e8858f7c:	6404                	ld	s1,8(s0)
    e8858f7e:	02800613          	li	a2,40
    e8858f82:	06044703          	lbu	a4,96(s0)
    e8858f86:	4094                	lw	a3,0(s1)
    e8858f88:	47f6                	lw	a5,92(sp)
    e8858f8a:	4805                	li	a6,1
    e8858f8c:	02d64263          	blt	a2,a3,e8858fb0 <_SetupClientExchange+0x114>
    e8858f90:	567d                	li	a2,-1
    e8858f92:	4801                	li	a6,0
    e8858f94:	00c69e63          	bne	a3,a2,e8858fb0 <_SetupClientExchange+0x114>
    e8858f98:	02800593          	li	a1,40
    e8858f9c:	8526                	mv	a0,s1
    e8858f9e:	e4be                	sd	a5,72(sp)
    e8858fa0:	e0ba                	sd	a4,64(sp)
    e8858fa2:	8d0fb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8858fa6:	2501                	sext.w	a0,a0
    e8858fa8:	67a6                	ld	a5,72(sp)
    e8858faa:	6706                	ld	a4,64(sp)
    e8858fac:	00153813          	seqz	a6,a0
    e8858fb0:	2981                	sext.w	s3,s3
    e8858fb2:	e44e                	sd	s3,8(sp)
    e8858fb4:	e04a                	sd	s2,0(sp)
    e8858fb6:	00044897          	auipc	a7,0x44
    e8858fba:	70288893          	addi	a7,a7,1794 # e889d6b8 <icmp6_param_problem+0x64a>
    e8858fbe:	00069697          	auipc	a3,0x69
    e8858fc2:	47268693          	addi	a3,a3,1138 # e88c2430 <__PRETTY_FUNCTION__.9902+0x798>
    e8858fc6:	03c00613          	li	a2,60
    e8858fca:	0006a597          	auipc	a1,0x6a
    e8858fce:	c3e58593          	addi	a1,a1,-962 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e8858fd2:	8526                	mv	a0,s1
    e8858fd4:	ca0fb0ef          	jal	ra,e8854474 <LogPrintF>
    e8858fd8:	4290006f          	j	e8859c00 <_SetupClientExchange+0xd64>
		require_action( len == 1, exit, err = kSizeErr );
    e8858fdc:	7726                	ld	a4,104(sp)
    e8858fde:	4785                	li	a5,1
    e8858fe0:	00f70763          	beq	a4,a5,e8858fee <_SetupClientExchange+0x152>
    e8858fe4:	77f9                	lui	a5,0xffffe
    e8858fe6:	5a97879b          	addiw	a5,a5,1449
    e8858fea:	cebe                	sw	a5,92(sp)
    e8858fec:	bf05                	j	e8858f1c <_SetupClientExchange+0x80>
		require_action( *ptr == me->state, exit, err = kStateErr );
    e8858fee:	7786                	ld	a5,96(sp)
    e8858ff0:	0007c703          	lbu	a4,0(a5) # ffffffffffffe000 <__DRAM0_INF_BASE+0xffffffff0000e000>
    e8858ff4:	06044783          	lbu	a5,96(s0)
    e8858ff8:	00f70663          	beq	a4,a5,e8859004 <_SetupClientExchange+0x168>
			err = kStateErr;
    e8858ffc:	77f9                	lui	a5,0xffffe
    e8858ffe:	5cb7879b          	addiw	a5,a5,1483
    e8859002:	b7e5                	j	e8858fea <_SetupClientExchange+0x14e>
	switch( me->state )
    e8859004:	06044783          	lbu	a5,96(s0)
    e8859008:	4715                	li	a4,5
    e885900a:	37fd                	addiw	a5,a5,-1
    e885900c:	0ff7f793          	andi	a5,a5,255
    e8859010:	3af761e3          	bltu	a4,a5,e8859bb2 <_SetupClientExchange+0xd16>
    e8859014:	00069717          	auipc	a4,0x69
    e8859018:	c9870713          	addi	a4,a4,-872 # e88c1cac <__PRETTY_FUNCTION__.9902+0x14>
    e885901c:	44f7478b          	lrw	a5,a4,a5,2
    e8859020:	97ba                	add	a5,a5,a4
    e8859022:	8782                	jr	a5
			require_action( inInputLen == 0, exit, err = kParamErr );
    e8859024:	00098663          	beqz	s3,e8859030 <_SetupClientExchange+0x194>
    e8859028:	77f9                	lui	a5,0xffffe
    e885902a:	5cf7879b          	addiw	a5,a5,1487
    e885902e:	bf75                	j	e8858fea <_SetupClientExchange+0x14e>
			else if( me->flags & kPairingFlag_MFi )	{ dlogassert( "No MFi support" ); err = kUnsupportedErr; goto exit; }
    e8859030:	447c                	lw	a5,76(s0)
    e8859032:	8b85                	andi	a5,a5,1
    e8859034:	cb85                	beqz	a5,e8859064 <_SetupClientExchange+0x1c8>
    e8859036:	0006a797          	auipc	a5,0x6a
    e885903a:	bd278793          	addi	a5,a5,-1070 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e885903e:	00069817          	auipc	a6,0x69
    e8859042:	08280813          	addi	a6,a6,130 # e88c20c0 <__PRETTY_FUNCTION__.9902+0x428>
    e8859046:	3ea00713          	li	a4,1002
    e885904a:	00069697          	auipc	a3,0x69
    e885904e:	e0668693          	addi	a3,a3,-506 # e88c1e50 <__PRETTY_FUNCTION__.9902+0x1b8>
    e8859052:	4601                	li	a2,0
    e8859054:	4581                	li	a1,0
    e8859056:	4501                	li	a0,0
    e8859058:	b70f50ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e885905c:	77f9                	lui	a5,0xffffe
    e885905e:	5b17879b          	addiw	a5,a5,1457
    e8859062:	b761                	j	e8858fea <_SetupClientExchange+0x14e>
			err = TLV8BufferAppendUInt64( &tlv, kTLVType_Method, u64 );
    e8859064:	4601                	li	a2,0
    e8859066:	4581                	li	a1,0
    e8859068:	1188                	addi	a0,sp,224
    e885906a:	06a080ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e885906e:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e8859070:	c509                	beqz	a0,e885907a <_SetupClientExchange+0x1de>
	uint8_t *					eptr		= NULL;
    e8859072:	4481                	li	s1,0
	Boolean						done		= false;
    e8859074:	4781                	li	a5,0
			require_action( me->srpCtx,				exit, err = kExecutionStateErr );
    e8859076:	4981                	li	s3,0
    e8859078:	b565                	j	e8858f20 <_SetupClientExchange+0x84>
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e885907a:	4685                	li	a3,1
    e885907c:	06040613          	addi	a2,s0,96
    e8859080:	4599                	li	a1,6
    e8859082:	1188                	addi	a0,sp,224
    e8859084:	757070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e8859088:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e885908a:	f565                	bnez	a0,e8859072 <_SetupClientExchange+0x1d6>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e885908c:	865a                	mv	a2,s6
    e885908e:	85d6                	mv	a1,s5
    e8859090:	1188                	addi	a0,sp,224
    e8859092:	086080ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e8859096:	ceaa                	sw	a0,92(sp)
    e8859098:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e885909a:	fd61                	bnez	a0,e8859072 <_SetupClientExchange+0x1d6>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M1 -- start request\n%?{end}%1{tlv8}\n", 
    e885909c:	6408                	ld	a0,8(s0)
			me->state = kPairSetupStateM2;
    e885909e:	4789                	li	a5,2
    e88590a0:	06f40023          	sb	a5,96(s0)
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M1 -- start request\n%?{end}%1{tlv8}\n", 
    e88590a4:	411c                	lw	a5,0(a0)
    e88590a6:	46f9                	li	a3,30
    e88590a8:	06f6c163          	blt	a3,a5,e885910a <_SetupClientExchange+0x26e>
    e88590ac:	56fd                	li	a3,-1
    e88590ae:	04d78863          	beq	a5,a3,e88590fe <_SetupClientExchange+0x262>
    e88590b2:	6404                	ld	s1,8(s0)
    e88590b4:	46d1                	li	a3,20
    e88590b6:	409c                	lw	a5,0(s1)
    e88590b8:	04f6cd63          	blt	a3,a5,e8859112 <_SetupClientExchange+0x276>
    e88590bc:	56fd                	li	a3,-1
    e88590be:	00d79a63          	bne	a5,a3,e88590d2 <_SetupClientExchange+0x236>
    e88590c2:	45d1                	li	a1,20
    e88590c4:	8526                	mv	a0,s1
    e88590c6:	fadfa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88590ca:	0005071b          	sext.w	a4,a0
    e88590ce:	00173713          	seqz	a4,a4
    e88590d2:	000b2883          	lw	a7,0(s6)
    e88590d6:	000ab803          	ld	a6,0(s5)
    e88590da:	00044797          	auipc	a5,0x44
    e88590de:	5de78793          	addi	a5,a5,1502 # e889d6b8 <icmp6_param_problem+0x64a>
    e88590e2:	00069697          	auipc	a3,0x69
    e88590e6:	fee68693          	addi	a3,a3,-18 # e88c20d0 <__PRETTY_FUNCTION__.9902+0x438>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M5 -- exchange request\n%?{end}%1{tlv8}\n", 
    e88590ea:	4679                	li	a2,30
    e88590ec:	0006a597          	auipc	a1,0x6a
    e88590f0:	b1c58593          	addi	a1,a1,-1252 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e88590f4:	8526                	mv	a0,s1
    e88590f6:	b7efb0ef          	jal	ra,e8854474 <LogPrintF>
    e88590fa:	7680006f          	j	e8859862 <_SetupClientExchange+0x9c6>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M1 -- start request\n%?{end}%1{tlv8}\n", 
    e88590fe:	45f9                	li	a1,30
    e8859100:	e0ba                	sd	a4,64(sp)
    e8859102:	f71fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859106:	6706                	ld	a4,64(sp)
    e8859108:	f54d                	bnez	a0,e88590b2 <_SetupClientExchange+0x216>
	Boolean						done		= false;
    e885910a:	4781                	li	a5,0
    e885910c:	4981                	li	s3,0
    e885910e:	7560006f          	j	e8859864 <_SetupClientExchange+0x9c8>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M1 -- start request\n%?{end}%1{tlv8}\n", 
    e8859112:	4705                	li	a4,1
    e8859114:	bf7d                	j	e88590d2 <_SetupClientExchange+0x236>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M2 -- start response\n%?{end}%1{tlv8}\n", 
    e8859116:	6408                	ld	a0,8(s0)
    e8859118:	4779                	li	a4,30
    e885911a:	411c                	lw	a5,0(a0)
    e885911c:	06f74163          	blt	a4,a5,e885917e <_SetupClientExchange+0x2e2>
    e8859120:	577d                	li	a4,-1
    e8859122:	04e78a63          	beq	a5,a4,e8859176 <_SetupClientExchange+0x2da>
    e8859126:	00843b83          	ld	s7,8(s0)
    e885912a:	46d1                	li	a3,20
    e885912c:	4705                	li	a4,1
    e885912e:	000ba783          	lw	a5,0(s7)
    e8859132:	00f6ce63          	blt	a3,a5,e885914e <_SetupClientExchange+0x2b2>
    e8859136:	56fd                	li	a3,-1
    e8859138:	4701                	li	a4,0
    e885913a:	00d79a63          	bne	a5,a3,e885914e <_SetupClientExchange+0x2b2>
    e885913e:	45d1                	li	a1,20
    e8859140:	855e                	mv	a0,s7
    e8859142:	f31fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859146:	0005071b          	sext.w	a4,a0
    e885914a:	00173713          	seqz	a4,a4
    e885914e:	0009889b          	sext.w	a7,s3
    e8859152:	884a                	mv	a6,s2
    e8859154:	00044797          	auipc	a5,0x44
    e8859158:	56478793          	addi	a5,a5,1380 # e889d6b8 <icmp6_param_problem+0x64a>
    e885915c:	00069697          	auipc	a3,0x69
    e8859160:	fac68693          	addi	a3,a3,-84 # e88c2108 <__PRETTY_FUNCTION__.9902+0x470>
    e8859164:	4679                	li	a2,30
    e8859166:	0006a597          	auipc	a1,0x6a
    e885916a:	aa258593          	addi	a1,a1,-1374 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e885916e:	855e                	mv	a0,s7
    e8859170:	b04fb0ef          	jal	ra,e8854474 <LogPrintF>
    e8859174:	a029                	j	e885917e <_SetupClientExchange+0x2e2>
    e8859176:	45f9                	li	a1,30
    e8859178:	efbfa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885917c:	f54d                	bnez	a0,e8859126 <_SetupClientExchange+0x28a>
			err = TLV8Get( inputPtr, inputEnd, kTLVType_Error, &ptr, &len, NULL );
    e885917e:	4781                	li	a5,0
    e8859180:	10b8                	addi	a4,sp,104
    e8859182:	1094                	addi	a3,sp,96
    e8859184:	461d                	li	a2,7
    e8859186:	85a6                	mv	a1,s1
    e8859188:	854a                	mv	a0,s2
    e885918a:	32b070ef          	jal	ra,e8860cb4 <TLV8Get>
    e885918e:	ceaa                	sw	a0,92(sp)
			if( !err )
    e8859190:	10051063          	bnez	a0,e8859290 <_SetupClientExchange+0x3f4>
				require_action( len == 1, exit, err = kSizeErr );
    e8859194:	7726                	ld	a4,104(sp)
    e8859196:	4785                	li	a5,1
    e8859198:	e4f716e3          	bne	a4,a5,e8858fe4 <_SetupClientExchange+0x148>
				if( *ptr == kTLVError_Backoff )
    e885919c:	7786                	ld	a5,96(sp)
    e885919e:	468d                	li	a3,3
    e88591a0:	0007c783          	lbu	a5,0(a5)
    e88591a4:	04d79d63          	bne	a5,a3,e88591fe <_SetupClientExchange+0x362>
					u64 = TLV8GetUInt64( inputPtr, inputEnd, kTLVType_RetryDelay, &err, NULL );
    e88591a8:	85a6                	mv	a1,s1
    e88591aa:	4701                	li	a4,0
    e88591ac:	08f4                	addi	a3,sp,92
    e88591ae:	4621                	li	a2,8
    e88591b0:	854a                	mv	a0,s2
    e88591b2:	35f070ef          	jal	ra,e8860d10 <TLV8GetUInt64>
    e88591b6:	84aa                	mv	s1,a0
					require_noerr( err, exit );
    e88591b8:	47f6                	lw	a5,92(sp)
    e88591ba:	d60791e3          	bnez	a5,e8858f1c <_SetupClientExchange+0x80>
					require_action( u64 <= INT32_MAX, exit, err = kRangeErr );
    e88591be:	800007b7          	lui	a5,0x80000
    e88591c2:	fff7c793          	not	a5,a5
    e88591c6:	00a7f663          	bgeu	a5,a0,e88591d2 <_SetupClientExchange+0x336>
    e88591ca:	77f9                	lui	a5,0xffffe
    e88591cc:	5ca7879b          	addiw	a5,a5,1482
    e88591d0:	bd29                	j	e8858fea <_SetupClientExchange+0x14e>
					_PairingSessionReset( me );
    e88591d2:	8522                	mv	a0,s0
    e88591d4:	c67fd0ef          	jal	ra,e8856e3a <_PairingSessionReset>
					require_action( me->delegate.promptForSetupCode_f, exit, err = kNotPreparedErr );
    e88591d8:	741c                	ld	a5,40(s0)
    e88591da:	e789                	bnez	a5,e88591e4 <_SetupClientExchange+0x348>
					require_action( me->delegate.promptForSetupCode_f, exit, err = kNotPreparedErr );
    e88591dc:	77f9                	lui	a5,0xffffe
    e88591de:	5a77879b          	addiw	a5,a5,1447
    e88591e2:	b521                	j	e8858fea <_SetupClientExchange+0x14e>
					err = me->delegate.promptForSetupCode_f( kPairingFlag_Throttle, (int32_t) u64, me->delegate.context );
    e88591e4:	6810                	ld	a2,16(s0)
    e88591e6:	0004859b          	sext.w	a1,s1
    e88591ea:	00020537          	lui	a0,0x20
    e88591ee:	9782                	jalr	a5
    e88591f0:	ceaa                	sw	a0,92(sp)
					require_noerr_quiet( err, exit );
    e88591f2:	d20515e3          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
					err = kAsyncNoErr;
    e88591f6:	77f9                	lui	a5,0xffffe
    e88591f8:	58d7879b          	addiw	a5,a5,1421
    e88591fc:	b3fd                	j	e8858fea <_SetupClientExchange+0x14e>
				err = PairingStatusToOSStatus( *ptr );
    e88591fe:	cfb1                	beqz	a5,e885925a <_SetupClientExchange+0x3be>
    e8859200:	06e78d63          	beq	a5,a4,e885927a <_SetupClientExchange+0x3de>
    e8859204:	4709                	li	a4,2
    e8859206:	04e78e63          	beq	a5,a4,e8859262 <_SetupClientExchange+0x3c6>
    e885920a:	4711                	li	a4,4
    e885920c:	04e78f63          	beq	a5,a4,e885926a <_SetupClientExchange+0x3ce>
    e8859210:	4715                	li	a4,5
    e8859212:	06e78063          	beq	a5,a4,e8859272 <_SetupClientExchange+0x3d6>
    e8859216:	4719                	li	a4,6
    e8859218:	06e79163          	bne	a5,a4,e885927a <_SetupClientExchange+0x3de>
    e885921c:	77f9                	lui	a5,0xffffe
    e885921e:	59478793          	addi	a5,a5,1428 # ffffffffffffe594 <__DRAM0_INF_BASE+0xffffffff0000e594>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M2 bad status: 0x%X, %#m\n", *ptr, err );
    e8859222:	6408                	ld	a0,8(s0)
				err = PairingStatusToOSStatus( *ptr );
    e8859224:	cebe                	sw	a5,92(sp)
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M2 bad status: 0x%X, %#m\n", *ptr, err );
    e8859226:	03c00713          	li	a4,60
    e885922a:	411c                	lw	a5,0(a0)
    e885922c:	cef748e3          	blt	a4,a5,e8858f1c <_SetupClientExchange+0x80>
    e8859230:	577d                	li	a4,-1
    e8859232:	04e78863          	beq	a5,a4,e8859282 <_SetupClientExchange+0x3e6>
    e8859236:	7706                	ld	a4,96(sp)
    e8859238:	47f6                	lw	a5,92(sp)
    e885923a:	00069697          	auipc	a3,0x69
    e885923e:	f0668693          	addi	a3,a3,-250 # e88c2140 <__PRETTY_FUNCTION__.9902+0x4a8>
    e8859242:	00074703          	lbu	a4,0(a4)
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M4 bad status: 0x%X, %#m\n", *ptr, err );
    e8859246:	6408                	ld	a0,8(s0)
    e8859248:	03c00613          	li	a2,60
    e885924c:	0006a597          	auipc	a1,0x6a
    e8859250:	9bc58593          	addi	a1,a1,-1604 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e8859254:	a20fb0ef          	jal	ra,e8854474 <LogPrintF>
    e8859258:	b1d1                	j	e8858f1c <_SetupClientExchange+0x80>
				err = PairingStatusToOSStatus( *ptr );
    e885925a:	77f9                	lui	a5,0xffffe
    e885925c:	5af78793          	addi	a5,a5,1455 # ffffffffffffe5af <__DRAM0_INF_BASE+0xffffffff0000e5af>
    e8859260:	b7c9                	j	e8859222 <_SetupClientExchange+0x386>
    e8859262:	77f9                	lui	a5,0xffffe
    e8859264:	59e78793          	addi	a5,a5,1438 # ffffffffffffe59e <__DRAM0_INF_BASE+0xffffffff0000e59e>
    e8859268:	bf6d                	j	e8859222 <_SetupClientExchange+0x386>
    e885926a:	77f9                	lui	a5,0xffffe
    e885926c:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e8859270:	bf4d                	j	e8859222 <_SetupClientExchange+0x386>
    e8859272:	77f9                	lui	a5,0xffffe
    e8859274:	59578793          	addi	a5,a5,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
    e8859278:	b76d                	j	e8859222 <_SetupClientExchange+0x386>
    e885927a:	77f9                	lui	a5,0xffffe
    e885927c:	5d478793          	addi	a5,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8859280:	b74d                	j	e8859222 <_SetupClientExchange+0x386>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M2 bad status: 0x%X, %#m\n", *ptr, err );
    e8859282:	03c00593          	li	a1,60
    e8859286:	dedfa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885928a:	c80509e3          	beqz	a0,e8858f1c <_SetupClientExchange+0x80>
    e885928e:	b765                	j	e8859236 <_SetupClientExchange+0x39a>
			SRPForget( &me->srpCtx );
    e8859290:	1e043503          	ld	a0,480(s0)
    e8859294:	c509                	beqz	a0,e885929e <_SetupClientExchange+0x402>
    e8859296:	64f040ef          	jal	ra,e885e0e4 <SRPDelete_libsrp>
    e885929a:	1e043023          	sd	zero,480(s0)
			err = SRPCreate( &me->srpCtx );
    e885929e:	1e040513          	addi	a0,s0,480
    e88592a2:	611040ef          	jal	ra,e885e0b2 <SRPCreate_libsrp>
    e88592a6:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e88592a8:	c6051ae3          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			ForgetPtrLen( &me->srpSaltPtr, &me->srpSaltLen );
    e88592ac:	1f843503          	ld	a0,504(s0)
    e88592b0:	c509                	beqz	a0,e88592ba <_SetupClientExchange+0x41e>
    e88592b2:	04e230ef          	jal	ra,e887c300 <eLIBs_free>
    e88592b6:	1e043c23          	sd	zero,504(s0)
			me->srpSaltPtr = TLV8CopyCoalesced( inputPtr, inputEnd, kTLVType_Salt, &me->srpSaltLen, NULL, &err );
    e88592ba:	08fc                	addi	a5,sp,92
			ForgetPtrLen( &me->srpSaltPtr, &me->srpSaltLen );
    e88592bc:	20043023          	sd	zero,512(s0)
			me->srpSaltPtr = TLV8CopyCoalesced( inputPtr, inputEnd, kTLVType_Salt, &me->srpSaltLen, NULL, &err );
    e88592c0:	4701                	li	a4,0
    e88592c2:	20040693          	addi	a3,s0,512
    e88592c6:	4609                	li	a2,2
    e88592c8:	85a6                	mv	a1,s1
    e88592ca:	854a                	mv	a0,s2
    e88592cc:	465070ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e88592d0:	1ea43c23          	sd	a0,504(s0)
			require_noerr( err, exit );
    e88592d4:	47f6                	lw	a5,92(sp)
    e88592d6:	c40793e3          	bnez	a5,e8858f1c <_SetupClientExchange+0x80>
			require_action( me->srpSaltLen >= 16, exit, err = kSizeErr );
    e88592da:	20043703          	ld	a4,512(s0)
    e88592de:	47bd                	li	a5,15
    e88592e0:	d0e7f2e3          	bgeu	a5,a4,e8858fe4 <_SetupClientExchange+0x148>
			ForgetPtrLen( &me->srpPKPtr, &me->srpPKLen );
    e88592e4:	1e843503          	ld	a0,488(s0)
    e88592e8:	c509                	beqz	a0,e88592f2 <_SetupClientExchange+0x456>
    e88592ea:	016230ef          	jal	ra,e887c300 <eLIBs_free>
    e88592ee:	1e043423          	sd	zero,488(s0)
			me->srpPKPtr = TLV8CopyCoalesced( inputPtr, inputEnd, kTLVType_PublicKey, &me->srpPKLen, NULL, &err );
    e88592f2:	08fc                	addi	a5,sp,92
			ForgetPtrLen( &me->srpPKPtr, &me->srpPKLen );
    e88592f4:	1e043823          	sd	zero,496(s0)
			me->srpPKPtr = TLV8CopyCoalesced( inputPtr, inputEnd, kTLVType_PublicKey, &me->srpPKLen, NULL, &err );
    e88592f8:	4701                	li	a4,0
    e88592fa:	1f040693          	addi	a3,s0,496
    e88592fe:	460d                	li	a2,3
    e8859300:	85a6                	mv	a1,s1
    e8859302:	854a                	mv	a0,s2
    e8859304:	42d070ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e8859308:	1ea43423          	sd	a0,488(s0)
			require_noerr( err, exit );
    e885930c:	47f6                	lw	a5,92(sp)
    e885930e:	c00797e3          	bnez	a5,e8858f1c <_SetupClientExchange+0x80>
			require_action( me->srpPKLen > 0, exit, err = kSizeErr );
    e8859312:	1f043783          	ld	a5,496(s0)
    e8859316:	cc0787e3          	beqz	a5,e8858fe4 <_SetupClientExchange+0x148>
			me->state = kPairSetupStateM3;
    e885931a:	478d                	li	a5,3
    e885931c:	06f40023          	sb	a5,96(s0)
			if( !me->setupCodePtr || ( me->setupCodeLen == 0 ) )
    e8859320:	647c                	ld	a5,200(s0)
    e8859322:	c399                	beqz	a5,e8859328 <_SetupClientExchange+0x48c>
    e8859324:	687c                	ld	a5,208(s0)
    e8859326:	e795                	bnez	a5,e8859352 <_SetupClientExchange+0x4b6>
				if( me->setupCodeFailed ) flags |= kPairingFlag_Incorrect;
    e8859328:	0d844783          	lbu	a5,216(s0)
				flags = me->flags;
    e885932c:	4468                	lw	a0,76(s0)
				if( me->setupCodeFailed ) flags |= kPairingFlag_Incorrect;
    e885932e:	c399                	beqz	a5,e8859334 <_SetupClientExchange+0x498>
    e8859330:	67c1                	lui	a5,0x10
    e8859332:	8d5d                	or	a0,a0,a5
				require_action( me->delegate.promptForSetupCode_f, exit, err = kNotPreparedErr );
    e8859334:	741c                	ld	a5,40(s0)
    e8859336:	ea0783e3          	beqz	a5,e88591dc <_SetupClientExchange+0x340>
				err = me->delegate.promptForSetupCode_f( flags, -1, me->delegate.context );
    e885933a:	6810                	ld	a2,16(s0)
    e885933c:	55fd                	li	a1,-1
    e885933e:	9782                	jalr	a5
    e8859340:	ceaa                	sw	a0,92(sp)
				require_noerr_quiet( err, exit );
    e8859342:	bc051de3          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
				require_action_quiet( me->setupCodePtr && ( me->setupCodeLen > 0 ), exit, err = kAsyncNoErr );
    e8859346:	647c                	ld	a5,200(s0)
    e8859348:	ea0787e3          	beqz	a5,e88591f6 <_SetupClientExchange+0x35a>
    e885934c:	687c                	ld	a5,208(s0)
    e885934e:	ea0784e3          	beqz	a5,e88591f6 <_SetupClientExchange+0x35a>
			require_action( me->srpCtx,				exit, err = kExecutionStateErr );
    e8859352:	1e043783          	ld	a5,480(s0)
    e8859356:	ef91                	bnez	a5,e8859372 <_SetupClientExchange+0x4d6>
    e8859358:	77f9                	lui	a5,0xffffe
    e885935a:	5d17879b          	addiw	a5,a5,1489
    e885935e:	cebe                	sw	a5,92(sp)
    e8859360:	bb09                	j	e8859072 <_SetupClientExchange+0x1d6>
			require_action( inInputLen == 0, 		exit, err = kParamErr );
    e8859362:	cc0993e3          	bnez	s3,e8859028 <_SetupClientExchange+0x18c>
			require_action( me->setupCodePtr,		exit, err = kNotPreparedErr );
    e8859366:	647c                	ld	a5,200(s0)
    e8859368:	e6078ae3          	beqz	a5,e88591dc <_SetupClientExchange+0x340>
			require_action( me->setupCodeLen > 0,	exit, err = kNotPreparedErr );
    e885936c:	687c                	ld	a5,208(s0)
    e885936e:	f3f5                	bnez	a5,e8859352 <_SetupClientExchange+0x4b6>
    e8859370:	b5b5                	j	e88591dc <_SetupClientExchange+0x340>
			require_action( me->srpPKPtr,			exit, err = kExecutionStateErr );
    e8859372:	1e843783          	ld	a5,488(s0)
    e8859376:	d3ed                	beqz	a5,e8859358 <_SetupClientExchange+0x4bc>
			require_action( me->srpPKLen > 0,		exit, err = kExecutionStateErr );
    e8859378:	1f043783          	ld	a5,496(s0)
    e885937c:	dff1                	beqz	a5,e8859358 <_SetupClientExchange+0x4bc>
			require_action( me->srpSaltPtr,			exit, err = kExecutionStateErr );
    e885937e:	1f843783          	ld	a5,504(s0)
    e8859382:	dbf9                	beqz	a5,e8859358 <_SetupClientExchange+0x4bc>
			require_action( me->srpSaltLen > 0,		exit, err = kExecutionStateErr );
    e8859384:	20043783          	ld	a5,512(s0)
    e8859388:	dbe1                	beqz	a5,e8859358 <_SetupClientExchange+0x4bc>
			ForgetPtrLen( &me->srpSharedSecretPtr, &me->srpSharedSecretLen );
    e885938a:	20843503          	ld	a0,520(s0)
    e885938e:	c509                	beqz	a0,e8859398 <_SetupClientExchange+0x4fc>
    e8859390:	771220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859394:	20043423          	sd	zero,520(s0)
			err = SRPClientStart( me->srpCtx, kSRPParameters_3072_SHA512, kPairSetupSRPUsernamePtr, kPairSetupSRPUsernameLen, 
    e8859398:	093c                	addi	a5,sp,152
    e885939a:	fc3e                	sd	a5,56(sp)
    e885939c:	091c                	addi	a5,sp,144
    e885939e:	f83e                	sd	a5,48(sp)
    e88593a0:	21040793          	addi	a5,s0,528
    e88593a4:	f43e                	sd	a5,40(sp)
    e88593a6:	20840793          	addi	a5,s0,520
    e88593aa:	f03e                	sd	a5,32(sp)
    e88593ac:	013c                	addi	a5,sp,136
    e88593ae:	ec3e                	sd	a5,24(sp)
    e88593b0:	011c                	addi	a5,sp,128
    e88593b2:	e83e                	sd	a5,16(sp)
    e88593b4:	1f043783          	ld	a5,496(s0)
    e88593b8:	0006a597          	auipc	a1,0x6a
    e88593bc:	4d858593          	addi	a1,a1,1240 # e88c3890 <kSRPParameters_3072_SHA512>
    e88593c0:	20043883          	ld	a7,512(s0)
    e88593c4:	e43e                	sd	a5,8(sp)
    e88593c6:	1e843783          	ld	a5,488(s0)
    e88593ca:	1f843803          	ld	a6,504(s0)
    e88593ce:	6478                	ld	a4,200(s0)
    e88593d0:	e03e                	sd	a5,0(sp)
    e88593d2:	618c                	ld	a1,0(a1)
    e88593d4:	687c                	ld	a5,208(s0)
    e88593d6:	1e043503          	ld	a0,480(s0)
			ForgetPtrLen( &me->srpSharedSecretPtr, &me->srpSharedSecretLen );
    e88593da:	20043823          	sd	zero,528(s0)
			err = SRPClientStart( me->srpCtx, kSRPParameters_3072_SHA512, kPairSetupSRPUsernamePtr, kPairSetupSRPUsernameLen, 
    e88593de:	46a9                	li	a3,10
    e88593e0:	00069617          	auipc	a2,0x69
    e88593e4:	d9060613          	addi	a2,a2,-624 # e88c2170 <__PRETTY_FUNCTION__.9902+0x4d8>
    e88593e8:	51d040ef          	jal	ra,e885e104 <SRPClientStart_libsrp>
    e88593ec:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e88593ee:	c80512e3          	bnez	a0,e8859072 <_SetupClientExchange+0x1d6>
			ForgetPtrLen( &me->srpPKPtr, &me->srpPKLen );
    e88593f2:	1e843503          	ld	a0,488(s0)
    e88593f6:	c509                	beqz	a0,e8859400 <_SetupClientExchange+0x564>
    e88593f8:	709220ef          	jal	ra,e887c300 <eLIBs_free>
    e88593fc:	1e043423          	sd	zero,488(s0)
			ForgetPtrLen( &me->srpSaltPtr, &me->srpSaltLen );
    e8859400:	1f843503          	ld	a0,504(s0)
			ForgetPtrLen( &me->srpPKPtr, &me->srpPKLen );
    e8859404:	1e043823          	sd	zero,496(s0)
			ForgetPtrLen( &me->srpSaltPtr, &me->srpSaltLen );
    e8859408:	c509                	beqz	a0,e8859412 <_SetupClientExchange+0x576>
    e885940a:	6f7220ef          	jal	ra,e887c300 <eLIBs_free>
    e885940e:	1e043c23          	sd	zero,504(s0)
    e8859412:	20043023          	sd	zero,512(s0)
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e8859416:	4685                	li	a3,1
    e8859418:	06040613          	addi	a2,s0,96
    e885941c:	4599                	li	a1,6
    e885941e:	1188                	addi	a0,sp,224
    e8859420:	3bb070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e8859424:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e8859426:	c40516e3          	bnez	a0,e8859072 <_SetupClientExchange+0x1d6>
			err = TLV8BufferAppend( &tlv, kTLVType_PublicKey, clientPKPtr, clientPKLen );
    e885942a:	66aa                	ld	a3,136(sp)
    e885942c:	660a                	ld	a2,128(sp)
    e885942e:	458d                	li	a1,3
    e8859430:	1188                	addi	a0,sp,224
    e8859432:	3a9070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e8859436:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e8859438:	c2051de3          	bnez	a0,e8859072 <_SetupClientExchange+0x1d6>
			err = TLV8BufferAppend( &tlv, kTLVType_Proof, responsePtr, responseLen );
    e885943c:	66ea                	ld	a3,152(sp)
    e885943e:	664a                	ld	a2,144(sp)
    e8859440:	4591                	li	a1,4
    e8859442:	1188                	addi	a0,sp,224
    e8859444:	397070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e8859448:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e885944a:	c20514e3          	bnez	a0,e8859072 <_SetupClientExchange+0x1d6>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e885944e:	865a                	mv	a2,s6
    e8859450:	85d6                	mv	a1,s5
    e8859452:	1188                	addi	a0,sp,224
    e8859454:	4c5070ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e8859458:	ceaa                	sw	a0,92(sp)
    e885945a:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e885945c:	c0051be3          	bnez	a0,e8859072 <_SetupClientExchange+0x1d6>
			pair_ulog( me, kLogLevelTrace, "Pair-setup  client M3 -- verify request\n%?{end}%1{tlv8}\n", 
    e8859460:	6408                	ld	a0,8(s0)
			me->state = kPairSetupStateM4;
    e8859462:	4791                	li	a5,4
    e8859464:	06f40023          	sb	a5,96(s0)
			pair_ulog( me, kLogLevelTrace, "Pair-setup  client M3 -- verify request\n%?{end}%1{tlv8}\n", 
    e8859468:	411c                	lw	a5,0(a0)
    e885946a:	46f9                	li	a3,30
    e885946c:	c8f6cfe3          	blt	a3,a5,e885910a <_SetupClientExchange+0x26e>
    e8859470:	56fd                	li	a3,-1
    e8859472:	04d78763          	beq	a5,a3,e88594c0 <_SetupClientExchange+0x624>
    e8859476:	6404                	ld	s1,8(s0)
    e8859478:	46d1                	li	a3,20
    e885947a:	409c                	lw	a5,0(s1)
    e885947c:	04f6ca63          	blt	a3,a5,e88594d0 <_SetupClientExchange+0x634>
    e8859480:	56fd                	li	a3,-1
    e8859482:	00d79a63          	bne	a5,a3,e8859496 <_SetupClientExchange+0x5fa>
    e8859486:	45d1                	li	a1,20
    e8859488:	8526                	mv	a0,s1
    e885948a:	be9fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885948e:	0005071b          	sext.w	a4,a0
    e8859492:	00173713          	seqz	a4,a4
    e8859496:	000b2883          	lw	a7,0(s6)
    e885949a:	000ab803          	ld	a6,0(s5)
    e885949e:	00044797          	auipc	a5,0x44
    e88594a2:	21a78793          	addi	a5,a5,538 # e889d6b8 <icmp6_param_problem+0x64a>
    e88594a6:	00069697          	auipc	a3,0x69
    e88594aa:	cda68693          	addi	a3,a3,-806 # e88c2180 <__PRETTY_FUNCTION__.9902+0x4e8>
    e88594ae:	4679                	li	a2,30
    e88594b0:	00069597          	auipc	a1,0x69
    e88594b4:	75858593          	addi	a1,a1,1880 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e88594b8:	8526                	mv	a0,s1
    e88594ba:	fbbfa0ef          	jal	ra,e8854474 <LogPrintF>
    e88594be:	b1b1                	j	e885910a <_SetupClientExchange+0x26e>
    e88594c0:	45f9                	li	a1,30
    e88594c2:	e0ba                	sd	a4,64(sp)
    e88594c4:	baffa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88594c8:	6706                	ld	a4,64(sp)
    e88594ca:	c40500e3          	beqz	a0,e885910a <_SetupClientExchange+0x26e>
    e88594ce:	b765                	j	e8859476 <_SetupClientExchange+0x5da>
    e88594d0:	4705                	li	a4,1
    e88594d2:	b7d1                	j	e8859496 <_SetupClientExchange+0x5fa>
			require_action( me->srpCtx,					exit, err = kExecutionStateErr );
    e88594d4:	1e043783          	ld	a5,480(s0)
    e88594d8:	e789                	bnez	a5,e88594e2 <_SetupClientExchange+0x646>
    e88594da:	77f9                	lui	a5,0xffffe
    e88594dc:	5d17879b          	addiw	a5,a5,1489
    e88594e0:	b629                	j	e8858fea <_SetupClientExchange+0x14e>
			require_action( me->srpSharedSecretPtr,		exit, err = kExecutionStateErr );
    e88594e2:	20843783          	ld	a5,520(s0)
    e88594e6:	dbf5                	beqz	a5,e88594da <_SetupClientExchange+0x63e>
			require_action( me->srpSharedSecretLen > 0,	exit, err = kExecutionStateErr );
    e88594e8:	21043783          	ld	a5,528(s0)
    e88594ec:	d7fd                	beqz	a5,e88594da <_SetupClientExchange+0x63e>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M4 -- verify response\n%?{end}%1{tlv8}\n", 
    e88594ee:	6408                	ld	a0,8(s0)
    e88594f0:	4779                	li	a4,30
    e88594f2:	411c                	lw	a5,0(a0)
    e88594f4:	06f74163          	blt	a4,a5,e8859556 <_SetupClientExchange+0x6ba>
    e88594f8:	577d                	li	a4,-1
    e88594fa:	04e78a63          	beq	a5,a4,e885954e <_SetupClientExchange+0x6b2>
    e88594fe:	00843b83          	ld	s7,8(s0)
    e8859502:	46d1                	li	a3,20
    e8859504:	4705                	li	a4,1
    e8859506:	000ba783          	lw	a5,0(s7)
    e885950a:	00f6ce63          	blt	a3,a5,e8859526 <_SetupClientExchange+0x68a>
    e885950e:	56fd                	li	a3,-1
    e8859510:	4701                	li	a4,0
    e8859512:	00d79a63          	bne	a5,a3,e8859526 <_SetupClientExchange+0x68a>
    e8859516:	45d1                	li	a1,20
    e8859518:	855e                	mv	a0,s7
    e885951a:	b59fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885951e:	0005071b          	sext.w	a4,a0
    e8859522:	00173713          	seqz	a4,a4
    e8859526:	0009889b          	sext.w	a7,s3
    e885952a:	884a                	mv	a6,s2
    e885952c:	00044797          	auipc	a5,0x44
    e8859530:	18c78793          	addi	a5,a5,396 # e889d6b8 <icmp6_param_problem+0x64a>
    e8859534:	00069697          	auipc	a3,0x69
    e8859538:	c8c68693          	addi	a3,a3,-884 # e88c21c0 <__PRETTY_FUNCTION__.9902+0x528>
    e885953c:	4679                	li	a2,30
    e885953e:	00069597          	auipc	a1,0x69
    e8859542:	6ca58593          	addi	a1,a1,1738 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e8859546:	855e                	mv	a0,s7
    e8859548:	f2dfa0ef          	jal	ra,e8854474 <LogPrintF>
    e885954c:	a029                	j	e8859556 <_SetupClientExchange+0x6ba>
    e885954e:	45f9                	li	a1,30
    e8859550:	b23fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859554:	f54d                	bnez	a0,e88594fe <_SetupClientExchange+0x662>
			err = TLV8Get( inputPtr, inputEnd, kTLVType_Error, &ptr, &len, NULL );
    e8859556:	4781                	li	a5,0
    e8859558:	10b8                	addi	a4,sp,104
    e885955a:	1094                	addi	a3,sp,96
    e885955c:	461d                	li	a2,7
    e885955e:	85a6                	mv	a1,s1
    e8859560:	854a                	mv	a0,s2
    e8859562:	752070ef          	jal	ra,e8860cb4 <TLV8Get>
    e8859566:	ceaa                	sw	a0,92(sp)
			if( !err )
    e8859568:	10051263          	bnez	a0,e885966c <_SetupClientExchange+0x7d0>
				require_action( len == 1, exit, err = kSizeErr );
    e885956c:	7726                	ld	a4,104(sp)
    e885956e:	4785                	li	a5,1
    e8859570:	a6f71ae3          	bne	a4,a5,e8858fe4 <_SetupClientExchange+0x148>
				if( *ptr == kTLVError_Authentication )
    e8859574:	7786                	ld	a5,96(sp)
    e8859576:	4689                	li	a3,2
    e8859578:	6408                	ld	a0,8(s0)
    e885957a:	0007c783          	lbu	a5,0(a5)
    e885957e:	06d79863          	bne	a5,a3,e88595ee <_SetupClientExchange+0x752>
					pair_ulog( me, kLogLevelNotice, "### Pair-setup client bad setup code\n" );
    e8859582:	411c                	lw	a5,0(a0)
    e8859584:	03200713          	li	a4,50
    e8859588:	02f74263          	blt	a4,a5,e88595ac <_SetupClientExchange+0x710>
    e885958c:	577d                	li	a4,-1
    e885958e:	04e78a63          	beq	a5,a4,e88595e2 <_SetupClientExchange+0x746>
    e8859592:	6408                	ld	a0,8(s0)
    e8859594:	00069697          	auipc	a3,0x69
    e8859598:	c6c68693          	addi	a3,a3,-916 # e88c2200 <__PRETTY_FUNCTION__.9902+0x568>
    e885959c:	03200613          	li	a2,50
    e88595a0:	00069597          	auipc	a1,0x69
    e88595a4:	66858593          	addi	a1,a1,1640 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e88595a8:	ecdfa0ef          	jal	ra,e8854474 <LogPrintF>
					_PairingSessionReset( me );
    e88595ac:	8522                	mv	a0,s0
    e88595ae:	88dfd0ef          	jal	ra,e8856e3a <_PairingSessionReset>
					ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e88595b2:	6468                	ld	a0,200(s0)
    e88595b4:	c509                	beqz	a0,e88595be <_SetupClientExchange+0x722>
    e88595b6:	54b220ef          	jal	ra,e887c300 <eLIBs_free>
    e88595ba:	0c043423          	sd	zero,200(s0)
					me->setupCodeFailed = true;
    e88595be:	4785                	li	a5,1
    e88595c0:	0cf40c23          	sb	a5,216(s0)
					require_action( me->delegate.promptForSetupCode_f, exit, err = kNotPreparedErr );
    e88595c4:	741c                	ld	a5,40(s0)
					ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e88595c6:	0c043823          	sd	zero,208(s0)
					require_action( me->delegate.promptForSetupCode_f, exit, err = kNotPreparedErr );
    e88595ca:	c00789e3          	beqz	a5,e88591dc <_SetupClientExchange+0x340>
					err = me->delegate.promptForSetupCode_f( me->flags | kPairingFlag_Incorrect, -1, me->delegate.context );
    e88595ce:	4468                	lw	a0,76(s0)
    e88595d0:	6810                	ld	a2,16(s0)
    e88595d2:	6741                	lui	a4,0x10
    e88595d4:	55fd                	li	a1,-1
    e88595d6:	8d59                	or	a0,a0,a4
    e88595d8:	9782                	jalr	a5
					require_noerr_quiet( err, exit );
    e88595da:	c0050ee3          	beqz	a0,e88591f6 <_SetupClientExchange+0x35a>
					err = me->delegate.promptForSetupCode_f( me->flags | kPairingFlag_Incorrect, -1, me->delegate.context );
    e88595de:	ceaa                	sw	a0,92(sp)
    e88595e0:	ba35                	j	e8858f1c <_SetupClientExchange+0x80>
					pair_ulog( me, kLogLevelNotice, "### Pair-setup client bad setup code\n" );
    e88595e2:	03200593          	li	a1,50
    e88595e6:	a8dfa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88595ea:	d169                	beqz	a0,e88595ac <_SetupClientExchange+0x710>
    e88595ec:	b75d                	j	e8859592 <_SetupClientExchange+0x6f6>
				err = PairingStatusToOSStatus( *ptr );
    e88595ee:	c7a1                	beqz	a5,e8859636 <_SetupClientExchange+0x79a>
    e88595f0:	06e78363          	beq	a5,a4,e8859656 <_SetupClientExchange+0x7ba>
    e88595f4:	470d                	li	a4,3
    e88595f6:	04e78463          	beq	a5,a4,e885963e <_SetupClientExchange+0x7a2>
    e88595fa:	4711                	li	a4,4
    e88595fc:	04e78563          	beq	a5,a4,e8859646 <_SetupClientExchange+0x7aa>
    e8859600:	4715                	li	a4,5
    e8859602:	04e78663          	beq	a5,a4,e885964e <_SetupClientExchange+0x7b2>
    e8859606:	4719                	li	a4,6
    e8859608:	04e79763          	bne	a5,a4,e8859656 <_SetupClientExchange+0x7ba>
    e885960c:	77f9                	lui	a5,0xffffe
    e885960e:	59478793          	addi	a5,a5,1428 # ffffffffffffe594 <__DRAM0_INF_BASE+0xffffffff0000e594>
    e8859612:	cebe                	sw	a5,92(sp)
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M4 bad status: 0x%X, %#m\n", *ptr, err );
    e8859614:	411c                	lw	a5,0(a0)
    e8859616:	03c00713          	li	a4,60
    e885961a:	90f741e3          	blt	a4,a5,e8858f1c <_SetupClientExchange+0x80>
    e885961e:	577d                	li	a4,-1
    e8859620:	02e78f63          	beq	a5,a4,e885965e <_SetupClientExchange+0x7c2>
    e8859624:	7706                	ld	a4,96(sp)
    e8859626:	47f6                	lw	a5,92(sp)
    e8859628:	00069697          	auipc	a3,0x69
    e885962c:	c0068693          	addi	a3,a3,-1024 # e88c2228 <__PRETTY_FUNCTION__.9902+0x590>
    e8859630:	00074703          	lbu	a4,0(a4) # 10000 <memcmp-0xe87f0000>
    e8859634:	b909                	j	e8859246 <_SetupClientExchange+0x3aa>
				err = PairingStatusToOSStatus( *ptr );
    e8859636:	77f9                	lui	a5,0xffffe
    e8859638:	5af78793          	addi	a5,a5,1455 # ffffffffffffe5af <__DRAM0_INF_BASE+0xffffffff0000e5af>
    e885963c:	bfd9                	j	e8859612 <_SetupClientExchange+0x776>
    e885963e:	77f9                	lui	a5,0xffffe
    e8859640:	59878793          	addi	a5,a5,1432 # ffffffffffffe598 <__DRAM0_INF_BASE+0xffffffff0000e598>
    e8859644:	b7f9                	j	e8859612 <_SetupClientExchange+0x776>
    e8859646:	77f9                	lui	a5,0xffffe
    e8859648:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e885964c:	b7d9                	j	e8859612 <_SetupClientExchange+0x776>
    e885964e:	77f9                	lui	a5,0xffffe
    e8859650:	59578793          	addi	a5,a5,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
    e8859654:	bf7d                	j	e8859612 <_SetupClientExchange+0x776>
    e8859656:	77f9                	lui	a5,0xffffe
    e8859658:	5d478793          	addi	a5,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e885965c:	bf5d                	j	e8859612 <_SetupClientExchange+0x776>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M4 bad status: 0x%X, %#m\n", *ptr, err );
    e885965e:	03c00593          	li	a1,60
    e8859662:	a11fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859666:	8a050be3          	beqz	a0,e8858f1c <_SetupClientExchange+0x80>
    e885966a:	bf6d                	j	e8859624 <_SetupClientExchange+0x788>
			err = TLV8GetOrCopyCoalesced( inputPtr, inputEnd, kTLVType_Proof, &ptr, &len, &storage, NULL );
    e885966c:	4801                	li	a6,0
    e885966e:	189c                	addi	a5,sp,112
    e8859670:	10b8                	addi	a4,sp,104
    e8859672:	1094                	addi	a3,sp,96
    e8859674:	4611                	li	a2,4
    e8859676:	85a6                	mv	a1,s1
    e8859678:	854a                	mv	a0,s2
    e885967a:	7cc070ef          	jal	ra,e8860e46 <TLV8GetOrCopyCoalesced>
    e885967e:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e8859680:	88051ee3          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			err = SRPClientVerify( me->srpCtx, ptr, len );
    e8859684:	7626                	ld	a2,104(sp)
    e8859686:	7586                	ld	a1,96(sp)
    e8859688:	1e043503          	ld	a0,480(s0)
    e885968c:	3bd040ef          	jal	ra,e885e248 <SRPClientVerify_libsrp>
    e8859690:	ceaa                	sw	a0,92(sp)
			ForgetMem( &storage );
    e8859692:	7546                	ld	a0,112(sp)
    e8859694:	c501                	beqz	a0,e885969c <_SetupClientExchange+0x800>
    e8859696:	46b220ef          	jal	ra,e887c300 <eLIBs_free>
    e885969a:	f882                	sd	zero,112(sp)
			require_noerr_action_quiet( err, exit, err = kAuthenticationErr );
    e885969c:	47f6                	lw	a5,92(sp)
    e885969e:	c789                	beqz	a5,e88596a8 <_SetupClientExchange+0x80c>
    e88596a0:	77f9                	lui	a5,0xffffe
    e88596a2:	59e7879b          	addiw	a5,a5,1438
    e88596a6:	b291                	j	e8858fea <_SetupClientExchange+0x14e>
			SRPForget( &me->srpCtx );
    e88596a8:	1e043503          	ld	a0,480(s0)
    e88596ac:	c509                	beqz	a0,e88596b6 <_SetupClientExchange+0x81a>
    e88596ae:	237040ef          	jal	ra,e885e0e4 <SRPDelete_libsrp>
    e88596b2:	1e043023          	sd	zero,480(s0)
			HKDF_SHA512( me->srpSharedSecretPtr, me->srpSharedSecretLen, 
    e88596b6:	20843503          	ld	a0,520(s0)
    e88596ba:	21043583          	ld	a1,528(s0)
    e88596be:	0da40b93          	addi	s7,s0,218
    e88596c2:	47dd                	li	a5,23
    e88596c4:	88de                	mv	a7,s7
    e88596c6:	02000813          	li	a6,32
    e88596ca:	00069717          	auipc	a4,0x69
    e88596ce:	b8e70713          	addi	a4,a4,-1138 # e88c2258 <__PRETTY_FUNCTION__.9902+0x5c0>
    e88596d2:	46dd                	li	a3,23
    e88596d4:	00069617          	auipc	a2,0x69
    e88596d8:	b9c60613          	addi	a2,a2,-1124 # e88c2270 <__PRETTY_FUNCTION__.9902+0x5d8>
    e88596dc:	0e7040ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			me->state = kPairSetupStateM5;
    e88596e0:	4795                	li	a5,5
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e88596e2:	6c48                	ld	a0,152(s0)
			me->state = kPairSetupStateM5;
    e88596e4:	06f40023          	sb	a5,96(s0)
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e88596e8:	c509                	beqz	a0,e88596f2 <_SetupClientExchange+0x856>
    e88596ea:	417220ef          	jal	ra,e887c300 <eLIBs_free>
    e88596ee:	08043c23          	sd	zero,152(s0)
			err = PairingSessionCopyIdentity( me, true, &me->activeIdentifierPtr, me->ourEdPK, me->ourEdSK );
    e88596f2:	13a40493          	addi	s1,s0,314
    e88596f6:	15a40c13          	addi	s8,s0,346
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e88596fa:	0a043023          	sd	zero,160(s0)
			err = PairingSessionCopyIdentity( me, true, &me->activeIdentifierPtr, me->ourEdPK, me->ourEdSK );
    e88596fe:	8762                	mv	a4,s8
    e8859700:	86a6                	mv	a3,s1
    e8859702:	09840613          	addi	a2,s0,152
    e8859706:	4585                	li	a1,1
    e8859708:	8522                	mv	a0,s0
    e885970a:	b46fe0ef          	jal	ra,e8857a50 <PairingSessionCopyIdentity>
    e885970e:	ceaa                	sw	a0,92(sp)
			require_noerr_quiet( err, exit );
    e8859710:	800516e3          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			me->activeIdentifierLen = strlen( me->activeIdentifierPtr );
    e8859714:	6c48                	ld	a0,152(s0)
    e8859716:	403220ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885971a:	7c05350b          	extu	a0,a0,31,0
    e885971e:	f048                	sd	a0,160(s0)
			require_action( me->activeIdentifierLen > 0, exit, err = kIDErr );
    e8859720:	e511                	bnez	a0,e885972c <_SetupClientExchange+0x890>
    e8859722:	77f9                	lui	a5,0xffffe
    e8859724:	5cc7879b          	addiw	a5,a5,1484
    e8859728:	8c3ff06f          	j	e8858fea <_SetupClientExchange+0x14e>
			len = 32 + me->activeIdentifierLen + 32;
    e885972c:	04050513          	addi	a0,a0,64 # 20040 <memcmp-0xe87dffc0>
    e8859730:	f4aa                	sd	a0,104(sp)
			storage = (uint8_t *) malloc( len );
    e8859732:	11c220ef          	jal	ra,e887b84e <my_malloc>
    e8859736:	f8aa                	sd	a0,112(sp)
			require_action( storage, exit, err = kNoMemoryErr );
    e8859738:	e511                	bnez	a0,e8859744 <_SetupClientExchange+0x8a8>
    e885973a:	77f9                	lui	a5,0xffffe
    e885973c:	5b87879b          	addiw	a5,a5,1464
    e8859740:	8abff06f          	j	e8858fea <_SetupClientExchange+0x14e>
			HKDF_SHA512( me->srpSharedSecretPtr, me->srpSharedSecretLen, 
    e8859744:	88aa                	mv	a7,a0
    e8859746:	21043583          	ld	a1,528(s0)
    e885974a:	20843503          	ld	a0,520(s0)
    e885974e:	02000813          	li	a6,32
    e8859752:	00069717          	auipc	a4,0x69
    e8859756:	b3670713          	addi	a4,a4,-1226 # e88c2288 <__PRETTY_FUNCTION__.9902+0x5f0>
    e885975a:	46fd                	li	a3,31
    e885975c:	47fd                	li	a5,31
    e885975e:	00069617          	auipc	a2,0x69
    e8859762:	b4a60613          	addi	a2,a2,-1206 # e88c22a8 <__PRETTY_FUNCTION__.9902+0x610>
    e8859766:	05d040ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			memcpy( &storage[ 32 ], me->activeIdentifierPtr, me->activeIdentifierLen );
    e885976a:	7546                	ld	a0,112(sp)
    e885976c:	7050                	ld	a2,160(s0)
    e885976e:	6c4c                	ld	a1,152(s0)
    e8859770:	02050513          	addi	a0,a0,32
    e8859774:	42d220ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->activeIdentifierLen ], me->ourEdPK, 32 );
    e8859778:	705c                	ld	a5,160(s0)
    e885977a:	7546                	ld	a0,112(sp)
    e885977c:	02000613          	li	a2,32
    e8859780:	02078793          	addi	a5,a5,32 # ffffffffffffe020 <__DRAM0_INF_BASE+0xffffffff0000e020>
    e8859784:	85a6                	mv	a1,s1
    e8859786:	953e                	add	a0,a0,a5
    e8859788:	419220ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			Ed25519_sign( sig, storage, len, me->ourEdPK, me->ourEdSK );
    e885978c:	7626                	ld	a2,104(sp)
    e885978e:	75c6                	ld	a1,112(sp)
    e8859790:	1108                	addi	a0,sp,160
    e8859792:	8762                	mv	a4,s8
    e8859794:	86a6                	mv	a3,s1
    e8859796:	f16e40ef          	jal	ra,e883deac <ed25519_sign_ref>
			ForgetMem( &storage );
    e885979a:	7546                	ld	a0,112(sp)
    e885979c:	c501                	beqz	a0,e88597a4 <_SetupClientExchange+0x908>
    e885979e:	363220ef          	jal	ra,e887c300 <eLIBs_free>
    e88597a2:	f882                	sd	zero,112(sp)
			err = TLV8BufferAppend( &etlv, kTLVType_Identifier, me->activeIdentifierPtr, me->activeIdentifierLen );
    e88597a4:	7054                	ld	a3,160(s0)
    e88597a6:	6c50                	ld	a2,152(s0)
    e88597a8:	4585                	li	a1,1
    e88597aa:	1c08                	addi	a0,sp,560
    e88597ac:	02f070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e88597b0:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e88597b2:	f6051563          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			err = TLV8BufferAppend( &etlv, kTLVType_PublicKey, me->ourEdPK, 32 );
    e88597b6:	02000693          	li	a3,32
    e88597ba:	8626                	mv	a2,s1
    e88597bc:	458d                	li	a1,3
    e88597be:	1c08                	addi	a0,sp,560
    e88597c0:	01b070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e88597c4:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e88597c6:	f4051b63          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			err = TLV8BufferAppend( &etlv, kTLVType_Signature, sig, 64 );
    e88597ca:	04000693          	li	a3,64
    e88597ce:	1110                	addi	a2,sp,160
    e88597d0:	45a9                	li	a1,10
    e88597d2:	1c08                	addi	a0,sp,560
    e88597d4:	007070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e88597d8:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e88597da:	f4051163          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			storage = (uint8_t *) malloc( etlv.len + 16 );
    e88597de:	23813503          	ld	a0,568(sp)
    e88597e2:	0541                	addi	a0,a0,16
    e88597e4:	06a220ef          	jal	ra,e887b84e <my_malloc>
    e88597e8:	f8aa                	sd	a0,112(sp)
			require_action( storage, exit, err = kNoMemoryErr );
    e88597ea:	d921                	beqz	a0,e885973a <_SetupClientExchange+0x89e>
			chacha20_poly1305_encrypt_all_64x64( me->key, (const uint8_t *) "PS-Msg05", NULL, 0, 
    e88597ec:	23813783          	ld	a5,568(sp)
    e88597f0:	23013703          	ld	a4,560(sp)
    e88597f4:	882a                	mv	a6,a0
    e88597f6:	00f508b3          	add	a7,a0,a5
    e88597fa:	4681                	li	a3,0
    e88597fc:	4601                	li	a2,0
    e88597fe:	00069597          	auipc	a1,0x69
    e8859802:	aca58593          	addi	a1,a1,-1334 # e88c22c8 <__PRETTY_FUNCTION__.9902+0x630>
    e8859806:	855e                	mv	a0,s7
    e8859808:	8aff40ef          	jal	ra,e884e0b6 <chacha20_poly1305_encrypt_all_64x64>
			err = TLV8BufferAppend( &tlv, kTLVType_EncryptedData, storage, etlv.len + 16 );
    e885980c:	23813683          	ld	a3,568(sp)
    e8859810:	7646                	ld	a2,112(sp)
    e8859812:	4595                	li	a1,5
    e8859814:	06c1                	addi	a3,a3,16
    e8859816:	1188                	addi	a0,sp,224
    e8859818:	7c2070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885981c:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e885981e:	ee051f63          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			ForgetMem( &storage );
    e8859822:	7546                	ld	a0,112(sp)
    e8859824:	c501                	beqz	a0,e885982c <_SetupClientExchange+0x990>
    e8859826:	2db220ef          	jal	ra,e887c300 <eLIBs_free>
    e885982a:	f882                	sd	zero,112(sp)
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e885982c:	4685                	li	a3,1
    e885982e:	06040613          	addi	a2,s0,96
    e8859832:	4599                	li	a1,6
    e8859834:	1188                	addi	a0,sp,224
    e8859836:	7a4070ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885983a:	ceaa                	sw	a0,92(sp)
			require_noerr( err, exit );
    e885983c:	ee051063          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8859840:	865a                	mv	a2,s6
    e8859842:	85d6                	mv	a1,s5
    e8859844:	1188                	addi	a0,sp,224
    e8859846:	0d3070ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885984a:	ceaa                	sw	a0,92(sp)
    e885984c:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e885984e:	ec051763          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M5 -- exchange request\n%?{end}%1{tlv8}\n", 
    e8859852:	6408                	ld	a0,8(s0)
			me->state = kPairSetupStateM6;
    e8859854:	4799                	li	a5,6
    e8859856:	06f40023          	sb	a5,96(s0)
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M5 -- exchange request\n%?{end}%1{tlv8}\n", 
    e885985a:	411c                	lw	a5,0(a0)
    e885985c:	46f9                	li	a3,30
    e885985e:	00f6d763          	bge	a3,a5,e885986c <_SetupClientExchange+0x9d0>
	Boolean						done		= false;
    e8859862:	4781                	li	a5,0
	err = kNoErr;
    e8859864:	ce82                	sw	zero,92(sp)
    e8859866:	4481                	li	s1,0
    e8859868:	eb8ff06f          	j	e8858f20 <_SetupClientExchange+0x84>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M5 -- exchange request\n%?{end}%1{tlv8}\n", 
    e885986c:	56fd                	li	a3,-1
    e885986e:	04d78063          	beq	a5,a3,e88598ae <_SetupClientExchange+0xa12>
    e8859872:	6404                	ld	s1,8(s0)
    e8859874:	46d1                	li	a3,20
    e8859876:	409c                	lw	a5,0(s1)
    e8859878:	04f6c263          	blt	a3,a5,e88598bc <_SetupClientExchange+0xa20>
    e885987c:	56fd                	li	a3,-1
    e885987e:	00d79a63          	bne	a5,a3,e8859892 <_SetupClientExchange+0x9f6>
    e8859882:	45d1                	li	a1,20
    e8859884:	8526                	mv	a0,s1
    e8859886:	fecfa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885988a:	0005071b          	sext.w	a4,a0
    e885988e:	00173713          	seqz	a4,a4
    e8859892:	000b2883          	lw	a7,0(s6)
    e8859896:	000ab803          	ld	a6,0(s5)
    e885989a:	00044797          	auipc	a5,0x44
    e885989e:	e1e78793          	addi	a5,a5,-482 # e889d6b8 <icmp6_param_problem+0x64a>
    e88598a2:	00069697          	auipc	a3,0x69
    e88598a6:	a3668693          	addi	a3,a3,-1482 # e88c22d8 <__PRETTY_FUNCTION__.9902+0x640>
    e88598aa:	841ff06f          	j	e88590ea <_SetupClientExchange+0x24e>
    e88598ae:	45f9                	li	a1,30
    e88598b0:	e0ba                	sd	a4,64(sp)
    e88598b2:	fc0fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88598b6:	6706                	ld	a4,64(sp)
    e88598b8:	d54d                	beqz	a0,e8859862 <_SetupClientExchange+0x9c6>
    e88598ba:	bf65                	j	e8859872 <_SetupClientExchange+0x9d6>
    e88598bc:	4705                	li	a4,1
    e88598be:	bfd1                	j	e8859892 <_SetupClientExchange+0x9f6>
			require_action( me->srpSharedSecretPtr,		exit, err = kExecutionStateErr );
    e88598c0:	20843783          	ld	a5,520(s0)
    e88598c4:	c0078be3          	beqz	a5,e88594da <_SetupClientExchange+0x63e>
			require_action( me->srpSharedSecretLen > 0,	exit, err = kExecutionStateErr );
    e88598c8:	21043783          	ld	a5,528(s0)
    e88598cc:	c00787e3          	beqz	a5,e88594da <_SetupClientExchange+0x63e>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client M6 -- exchange response\n%?{end}%1{tlv8}\n", 
    e88598d0:	6408                	ld	a0,8(s0)
    e88598d2:	4779                	li	a4,30
    e88598d4:	411c                	lw	a5,0(a0)
    e88598d6:	06f74163          	blt	a4,a5,e8859938 <_SetupClientExchange+0xa9c>
    e88598da:	577d                	li	a4,-1
    e88598dc:	04e78a63          	beq	a5,a4,e8859930 <_SetupClientExchange+0xa94>
    e88598e0:	00843b83          	ld	s7,8(s0)
    e88598e4:	46d1                	li	a3,20
    e88598e6:	4705                	li	a4,1
    e88598e8:	000ba783          	lw	a5,0(s7)
    e88598ec:	00f6ce63          	blt	a3,a5,e8859908 <_SetupClientExchange+0xa6c>
    e88598f0:	56fd                	li	a3,-1
    e88598f2:	4701                	li	a4,0
    e88598f4:	00d79a63          	bne	a5,a3,e8859908 <_SetupClientExchange+0xa6c>
    e88598f8:	45d1                	li	a1,20
    e88598fa:	855e                	mv	a0,s7
    e88598fc:	f76fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859900:	0005071b          	sext.w	a4,a0
    e8859904:	00173713          	seqz	a4,a4
    e8859908:	0009889b          	sext.w	a7,s3
    e885990c:	884a                	mv	a6,s2
    e885990e:	00044797          	auipc	a5,0x44
    e8859912:	daa78793          	addi	a5,a5,-598 # e889d6b8 <icmp6_param_problem+0x64a>
    e8859916:	00069697          	auipc	a3,0x69
    e885991a:	a0268693          	addi	a3,a3,-1534 # e88c2318 <__PRETTY_FUNCTION__.9902+0x680>
    e885991e:	4679                	li	a2,30
    e8859920:	00069597          	auipc	a1,0x69
    e8859924:	2e858593          	addi	a1,a1,744 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e8859928:	855e                	mv	a0,s7
    e885992a:	b4bfa0ef          	jal	ra,e8854474 <LogPrintF>
    e885992e:	a029                	j	e8859938 <_SetupClientExchange+0xa9c>
    e8859930:	45f9                	li	a1,30
    e8859932:	f40fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859936:	f54d                	bnez	a0,e88598e0 <_SetupClientExchange+0xa44>
			err = TLV8Get( inputPtr, inputEnd, kTLVType_Error, &ptr, &len, NULL );
    e8859938:	4781                	li	a5,0
    e885993a:	10b8                	addi	a4,sp,104
    e885993c:	1094                	addi	a3,sp,96
    e885993e:	461d                	li	a2,7
    e8859940:	85a6                	mv	a1,s1
    e8859942:	854a                	mv	a0,s2
    e8859944:	370070ef          	jal	ra,e8860cb4 <TLV8Get>
    e8859948:	ceaa                	sw	a0,92(sp)
			if( !err )
    e885994a:	e145                	bnez	a0,e88599ea <_SetupClientExchange+0xb4e>
				require_action( len == 1, exit, err = kSizeErr );
    e885994c:	7726                	ld	a4,104(sp)
    e885994e:	4785                	li	a5,1
    e8859950:	e8f71a63          	bne	a4,a5,e8858fe4 <_SetupClientExchange+0x148>
				err = PairingStatusToOSStatus( *ptr );
    e8859954:	7786                	ld	a5,96(sp)
    e8859956:	0007c783          	lbu	a5,0(a5)
    e885995a:	cba9                	beqz	a5,e88599ac <_SetupClientExchange+0xb10>
    e885995c:	06e78c63          	beq	a5,a4,e88599d4 <_SetupClientExchange+0xb38>
    e8859960:	4709                	li	a4,2
    e8859962:	04e78963          	beq	a5,a4,e88599b4 <_SetupClientExchange+0xb18>
    e8859966:	470d                	li	a4,3
    e8859968:	04e78a63          	beq	a5,a4,e88599bc <_SetupClientExchange+0xb20>
    e885996c:	4711                	li	a4,4
    e885996e:	04e78b63          	beq	a5,a4,e88599c4 <_SetupClientExchange+0xb28>
    e8859972:	4715                	li	a4,5
    e8859974:	04e78c63          	beq	a5,a4,e88599cc <_SetupClientExchange+0xb30>
    e8859978:	4719                	li	a4,6
    e885997a:	04e79d63          	bne	a5,a4,e88599d4 <_SetupClientExchange+0xb38>
    e885997e:	77f9                	lui	a5,0xffffe
    e8859980:	59478793          	addi	a5,a5,1428 # ffffffffffffe594 <__DRAM0_INF_BASE+0xffffffff0000e594>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M6 bad status: 0x%X, %#m\n", *ptr, err );
    e8859984:	6408                	ld	a0,8(s0)
				err = PairingStatusToOSStatus( *ptr );
    e8859986:	cebe                	sw	a5,92(sp)
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M6 bad status: 0x%X, %#m\n", *ptr, err );
    e8859988:	03c00713          	li	a4,60
    e885998c:	411c                	lw	a5,0(a0)
    e885998e:	d8f74763          	blt	a4,a5,e8858f1c <_SetupClientExchange+0x80>
    e8859992:	577d                	li	a4,-1
    e8859994:	04e78463          	beq	a5,a4,e88599dc <_SetupClientExchange+0xb40>
    e8859998:	7706                	ld	a4,96(sp)
    e885999a:	47f6                	lw	a5,92(sp)
    e885999c:	00069697          	auipc	a3,0x69
    e88599a0:	9bc68693          	addi	a3,a3,-1604 # e88c2358 <__PRETTY_FUNCTION__.9902+0x6c0>
    e88599a4:	00074703          	lbu	a4,0(a4)
    e88599a8:	89fff06f          	j	e8859246 <_SetupClientExchange+0x3aa>
				err = PairingStatusToOSStatus( *ptr );
    e88599ac:	77f9                	lui	a5,0xffffe
    e88599ae:	5af78793          	addi	a5,a5,1455 # ffffffffffffe5af <__DRAM0_INF_BASE+0xffffffff0000e5af>
    e88599b2:	bfc9                	j	e8859984 <_SetupClientExchange+0xae8>
    e88599b4:	77f9                	lui	a5,0xffffe
    e88599b6:	59e78793          	addi	a5,a5,1438 # ffffffffffffe59e <__DRAM0_INF_BASE+0xffffffff0000e59e>
    e88599ba:	b7e9                	j	e8859984 <_SetupClientExchange+0xae8>
    e88599bc:	77f9                	lui	a5,0xffffe
    e88599be:	59878793          	addi	a5,a5,1432 # ffffffffffffe598 <__DRAM0_INF_BASE+0xffffffff0000e598>
    e88599c2:	b7c9                	j	e8859984 <_SetupClientExchange+0xae8>
    e88599c4:	77f9                	lui	a5,0xffffe
    e88599c6:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e88599ca:	bf6d                	j	e8859984 <_SetupClientExchange+0xae8>
    e88599cc:	77f9                	lui	a5,0xffffe
    e88599ce:	59578793          	addi	a5,a5,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
    e88599d2:	bf4d                	j	e8859984 <_SetupClientExchange+0xae8>
    e88599d4:	77f9                	lui	a5,0xffffe
    e88599d6:	5d478793          	addi	a5,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e88599da:	b76d                	j	e8859984 <_SetupClientExchange+0xae8>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup client M6 bad status: 0x%X, %#m\n", *ptr, err );
    e88599dc:	03c00593          	li	a1,60
    e88599e0:	e92fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88599e4:	d2050c63          	beqz	a0,e8858f1c <_SetupClientExchange+0x80>
    e88599e8:	bf45                	j	e8859998 <_SetupClientExchange+0xafc>
			eptr = TLV8CopyCoalesced( inputPtr, inputEnd, kTLVType_EncryptedData, &elen, NULL, &err );
    e88599ea:	08fc                	addi	a5,sp,92
    e88599ec:	4701                	li	a4,0
    e88599ee:	85a6                	mv	a1,s1
    e88599f0:	18b4                	addi	a3,sp,120
    e88599f2:	4615                	li	a2,5
    e88599f4:	854a                	mv	a0,s2
    e88599f6:	53a070ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e88599fa:	84aa                	mv	s1,a0
			require_noerr( err, exit );
    e88599fc:	4776                	lw	a4,92(sp)
	Boolean						done		= false;
    e88599fe:	4781                	li	a5,0
			require_noerr( err, exit );
    e8859a00:	d2071063          	bnez	a4,e8858f20 <_SetupClientExchange+0x84>
			require_action( elen > 16, exit, err = kSizeErr );
    e8859a04:	77e6                	ld	a5,120(sp)
    e8859a06:	4741                	li	a4,16
    e8859a08:	00f76863          	bltu	a4,a5,e8859a18 <_SetupClientExchange+0xb7c>
			require_action( me->peerIdentifierLen > 0, exit, err = kSizeErr );
    e8859a0c:	77f9                	lui	a5,0xffffe
    e8859a0e:	5a97879b          	addiw	a5,a5,1449
			require_noerr_action_quiet( err, exit, err = kAuthenticationErr );
    e8859a12:	cebe                	sw	a5,92(sp)
    e8859a14:	d0aff06f          	j	e8858f1e <_SetupClientExchange+0x82>
			elen -= 16;
    e8859a18:	17c1                	addi	a5,a5,-16
			eend = eptr + elen;
    e8859a1a:	00f50c33          	add	s8,a0,a5
			err = chacha20_poly1305_decrypt_all_64x64( me->key, (const uint8_t *) "PS-Msg06", NULL, 0, eptr, elen, eptr, eend );
    e8859a1e:	882a                	mv	a6,a0
    e8859a20:	872a                	mv	a4,a0
    e8859a22:	88e2                	mv	a7,s8
    e8859a24:	4681                	li	a3,0
    e8859a26:	4601                	li	a2,0
    e8859a28:	00069597          	auipc	a1,0x69
    e8859a2c:	96058593          	addi	a1,a1,-1696 # e88c2388 <__PRETTY_FUNCTION__.9902+0x6f0>
    e8859a30:	0da40513          	addi	a0,s0,218
			elen -= 16;
    e8859a34:	fcbe                	sd	a5,120(sp)
			err = chacha20_poly1305_decrypt_all_64x64( me->key, (const uint8_t *) "PS-Msg06", NULL, 0, eptr, elen, eptr, eend );
    e8859a36:	e9cf40ef          	jal	ra,e884e0d2 <chacha20_poly1305_decrypt_all_64x64>
    e8859a3a:	ceaa                	sw	a0,92(sp)
	Boolean						done		= false;
    e8859a3c:	4781                	li	a5,0
			require_noerr( err, exit );
    e8859a3e:	ce051163          	bnez	a0,e8858f20 <_SetupClientExchange+0x84>
			ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8859a42:	7c48                	ld	a0,184(s0)
    e8859a44:	c509                	beqz	a0,e8859a4e <_SetupClientExchange+0xbb2>
    e8859a46:	0bb220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859a4a:	0a043c23          	sd	zero,184(s0)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e8859a4e:	08fc                	addi	a5,sp,92
    e8859a50:	4701                	li	a4,0
			ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e8859a52:	0c043023          	sd	zero,192(s0)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e8859a56:	0c040693          	addi	a3,s0,192
    e8859a5a:	4605                	li	a2,1
    e8859a5c:	85e2                	mv	a1,s8
    e8859a5e:	8526                	mv	a0,s1
    e8859a60:	4d0070ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e8859a64:	fc48                	sd	a0,184(s0)
			require_noerr( err, exit );
    e8859a66:	4776                	lw	a4,92(sp)
	Boolean						done		= false;
    e8859a68:	4781                	li	a5,0
			require_noerr( err, exit );
    e8859a6a:	ca071b63          	bnez	a4,e8858f20 <_SetupClientExchange+0x84>
			require_action( me->peerIdentifierLen > 0, exit, err = kSizeErr );
    e8859a6e:	607c                	ld	a5,192(s0)
    e8859a70:	dfd1                	beqz	a5,e8859a0c <_SetupClientExchange+0xb70>
			err = TLV8GetBytes( eptr, eend, kTLVType_PublicKey, 32, 32, me->peerEdPK, NULL, NULL );
    e8859a72:	19a40b93          	addi	s7,s0,410
    e8859a76:	87de                	mv	a5,s7
    e8859a78:	4881                	li	a7,0
    e8859a7a:	4801                	li	a6,0
    e8859a7c:	02000713          	li	a4,32
    e8859a80:	02000693          	li	a3,32
    e8859a84:	460d                	li	a2,3
    e8859a86:	85e2                	mv	a1,s8
    e8859a88:	8526                	mv	a0,s1
    e8859a8a:	2f4070ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e8859a8e:	ceaa                	sw	a0,92(sp)
	Boolean						done		= false;
    e8859a90:	4781                	li	a5,0
			require_noerr( err, exit );
    e8859a92:	c8051763          	bnez	a0,e8858f20 <_SetupClientExchange+0x84>
			err = TLV8GetBytes( eptr, eend, kTLVType_Signature, 64, 64, sig, NULL, NULL );
    e8859a96:	111c                	addi	a5,sp,160
    e8859a98:	4881                	li	a7,0
    e8859a9a:	4801                	li	a6,0
    e8859a9c:	04000713          	li	a4,64
    e8859aa0:	04000693          	li	a3,64
    e8859aa4:	4629                	li	a2,10
    e8859aa6:	85e2                	mv	a1,s8
    e8859aa8:	8526                	mv	a0,s1
    e8859aaa:	2d4070ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e8859aae:	ceaa                	sw	a0,92(sp)
	Boolean						done		= false;
    e8859ab0:	4781                	li	a5,0
			require_noerr( err, exit );
    e8859ab2:	c6051763          	bnez	a0,e8858f20 <_SetupClientExchange+0x84>
			len = 32 + me->peerIdentifierLen + 32;
    e8859ab6:	6068                	ld	a0,192(s0)
    e8859ab8:	04050513          	addi	a0,a0,64
    e8859abc:	f4aa                	sd	a0,104(sp)
			storage = (uint8_t *) malloc( len );
    e8859abe:	591210ef          	jal	ra,e887b84e <my_malloc>
    e8859ac2:	f8aa                	sd	a0,112(sp)
			require_action( storage, exit, err = kNoMemoryErr );
    e8859ac4:	e509                	bnez	a0,e8859ace <_SetupClientExchange+0xc32>
    e8859ac6:	77f9                	lui	a5,0xffffe
    e8859ac8:	5b87879b          	addiw	a5,a5,1464
    e8859acc:	b799                	j	e8859a12 <_SetupClientExchange+0xb76>
			HKDF_SHA512( me->srpSharedSecretPtr, me->srpSharedSecretLen, 
    e8859ace:	88aa                	mv	a7,a0
    e8859ad0:	21043583          	ld	a1,528(s0)
    e8859ad4:	20843503          	ld	a0,520(s0)
    e8859ad8:	02000813          	li	a6,32
    e8859adc:	00069717          	auipc	a4,0x69
    e8859ae0:	8bc70713          	addi	a4,a4,-1860 # e88c2398 <__PRETTY_FUNCTION__.9902+0x700>
    e8859ae4:	46f9                	li	a3,30
    e8859ae6:	47f9                	li	a5,30
    e8859ae8:	00069617          	auipc	a2,0x69
    e8859aec:	8d060613          	addi	a2,a2,-1840 # e88c23b8 <__PRETTY_FUNCTION__.9902+0x720>
    e8859af0:	4d2040ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			memcpy( &storage[ 32 ], me->peerIdentifierPtr, me->peerIdentifierLen );
    e8859af4:	7546                	ld	a0,112(sp)
    e8859af6:	6070                	ld	a2,192(s0)
    e8859af8:	7c4c                	ld	a1,184(s0)
    e8859afa:	02050513          	addi	a0,a0,32
    e8859afe:	0a3220ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->peerIdentifierLen ], me->peerEdPK, 32 );
    e8859b02:	607c                	ld	a5,192(s0)
    e8859b04:	7546                	ld	a0,112(sp)
    e8859b06:	02000613          	li	a2,32
    e8859b0a:	02078793          	addi	a5,a5,32 # ffffffffffffe020 <__DRAM0_INF_BASE+0xffffffff0000e020>
    e8859b0e:	85de                	mv	a1,s7
    e8859b10:	953e                	add	a0,a0,a5
    e8859b12:	08f220ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			err = Ed25519_verify( storage, len, sig, me->peerEdPK );
    e8859b16:	75a6                	ld	a1,104(sp)
    e8859b18:	7546                	ld	a0,112(sp)
    e8859b1a:	86de                	mv	a3,s7
    e8859b1c:	1110                	addi	a2,sp,160
    e8859b1e:	890e50ef          	jal	ra,e883ebae <ed25519_verify_ref>
    e8859b22:	ceaa                	sw	a0,92(sp)
			require_noerr_action_quiet( err, exit, err = kAuthenticationErr );
    e8859b24:	c509                	beqz	a0,e8859b2e <_SetupClientExchange+0xc92>
    e8859b26:	77f9                	lui	a5,0xffffe
    e8859b28:	59e7879b          	addiw	a5,a5,1438
    e8859b2c:	b5dd                	j	e8859a12 <_SetupClientExchange+0xb76>
			ForgetMem( &storage );
    e8859b2e:	7546                	ld	a0,112(sp)
    e8859b30:	c501                	beqz	a0,e8859b38 <_SetupClientExchange+0xc9c>
    e8859b32:	7ce220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859b36:	f882                	sd	zero,112(sp)
			ForgetMem( &eptr );
    e8859b38:	c481                	beqz	s1,e8859b40 <_SetupClientExchange+0xca4>
    e8859b3a:	8526                	mv	a0,s1
    e8859b3c:	7c4220ef          	jal	ra,e887c300 <eLIBs_free>
			err = PairingSessionSavePeer( me, me->peerIdentifierPtr, me->peerIdentifierLen, me->peerEdPK );
    e8859b40:	6070                	ld	a2,192(s0)
    e8859b42:	7c4c                	ld	a1,184(s0)
    e8859b44:	86de                	mv	a3,s7
    e8859b46:	8522                	mv	a0,s0
    e8859b48:	910ff0ef          	jal	ra,e8858c58 <PairingSessionSavePeer>
    e8859b4c:	ceaa                	sw	a0,92(sp)
			require_noerr_quiet( err, exit );
    e8859b4e:	bc051763          	bnez	a0,e8858f1c <_SetupClientExchange+0x80>
			_PairingSessionReset( me );
    e8859b52:	8522                	mv	a0,s0
    e8859b54:	ae6fd0ef          	jal	ra,e8856e3a <_PairingSessionReset>
			ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e8859b58:	6468                	ld	a0,200(s0)
    e8859b5a:	c509                	beqz	a0,e8859b64 <_SetupClientExchange+0xcc8>
    e8859b5c:	7a4220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859b60:	0c043423          	sd	zero,200(s0)
			me->state = kPairSetupStateDone;
    e8859b64:	479d                	li	a5,7
			ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e8859b66:	0c043823          	sd	zero,208(s0)
			me->setupCodeFailed = false;
    e8859b6a:	0c040c23          	sb	zero,216(s0)
			me->state = kPairSetupStateDone;
    e8859b6e:	06f40023          	sb	a5,96(s0)
			pair_ulog( me, kLogLevelTrace, "Pair-setup client done -- server authenticated\n" );
    e8859b72:	4779                	li	a4,30
			*outOutputPtr = NULL;
    e8859b74:	000ab023          	sd	zero,0(s5)
			*outOutputLen = 0;
    e8859b78:	000b3023          	sd	zero,0(s6)
			pair_ulog( me, kLogLevelTrace, "Pair-setup client done -- server authenticated\n" );
    e8859b7c:	6408                	ld	a0,8(s0)
    e8859b7e:	411c                	lw	a5,0(a0)
    e8859b80:	00f75463          	bge	a4,a5,e8859b88 <_SetupClientExchange+0xcec>
			done = true;
    e8859b84:	4785                	li	a5,1
    e8859b86:	b9f9                	j	e8859864 <_SetupClientExchange+0x9c8>
			pair_ulog( me, kLogLevelTrace, "Pair-setup client done -- server authenticated\n" );
    e8859b88:	577d                	li	a4,-1
    e8859b8a:	00e78f63          	beq	a5,a4,e8859ba8 <_SetupClientExchange+0xd0c>
    e8859b8e:	6408                	ld	a0,8(s0)
    e8859b90:	00069697          	auipc	a3,0x69
    e8859b94:	84868693          	addi	a3,a3,-1976 # e88c23d8 <__PRETTY_FUNCTION__.9902+0x740>
    e8859b98:	4679                	li	a2,30
    e8859b9a:	00069597          	auipc	a1,0x69
    e8859b9e:	06e58593          	addi	a1,a1,110 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e8859ba2:	8d3fa0ef          	jal	ra,e8854474 <LogPrintF>
    e8859ba6:	bff9                	j	e8859b84 <_SetupClientExchange+0xce8>
    e8859ba8:	45f9                	li	a1,30
    e8859baa:	cc8fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859bae:	d979                	beqz	a0,e8859b84 <_SetupClientExchange+0xce8>
    e8859bb0:	bff9                	j	e8859b8e <_SetupClientExchange+0xcf2>
			pair_ulog( me, kLogLevelWarning, "### Pair-setup client bad state: %d\n", me->state );
    e8859bb2:	6408                	ld	a0,8(s0)
    e8859bb4:	03c00713          	li	a4,60
    e8859bb8:	411c                	lw	a5,0(a0)
    e8859bba:	c4f74163          	blt	a4,a5,e8858ffc <_SetupClientExchange+0x160>
    e8859bbe:	577d                	li	a4,-1
    e8859bc0:	02e78363          	beq	a5,a4,e8859be6 <_SetupClientExchange+0xd4a>
    e8859bc4:	06044703          	lbu	a4,96(s0)
    e8859bc8:	6408                	ld	a0,8(s0)
    e8859bca:	00069697          	auipc	a3,0x69
    e8859bce:	83e68693          	addi	a3,a3,-1986 # e88c2408 <__PRETTY_FUNCTION__.9902+0x770>
    e8859bd2:	03c00613          	li	a2,60
    e8859bd6:	00069597          	auipc	a1,0x69
    e8859bda:	03258593          	addi	a1,a1,50 # e88c2c08 <__PRETTY_FUNCTION__.10444>
    e8859bde:	897fa0ef          	jal	ra,e8854474 <LogPrintF>
    e8859be2:	c1aff06f          	j	e8858ffc <_SetupClientExchange+0x160>
    e8859be6:	03c00593          	li	a1,60
    e8859bea:	c88fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859bee:	c0050763          	beqz	a0,e8858ffc <_SetupClientExchange+0x160>
    e8859bf2:	bfc9                	j	e8859bc4 <_SetupClientExchange+0xd28>
		pair_ulog( me, kLogLevelWarning, "### Pair-setup client state %d failed: %#m\n%?{end}%1{tlv8}\n", 
    e8859bf4:	03c00593          	li	a1,60
    e8859bf8:	c7afa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859bfc:	b8051063          	bnez	a0,e8858f7c <_SetupClientExchange+0xe0>
}
    e8859c00:	3c813083          	ld	ra,968(sp)
    e8859c04:	3c013403          	ld	s0,960(sp)
	return( err );
    e8859c08:	4576                	lw	a0,92(sp)
}
    e8859c0a:	3b813483          	ld	s1,952(sp)
    e8859c0e:	3b013903          	ld	s2,944(sp)
    e8859c12:	3a813983          	ld	s3,936(sp)
    e8859c16:	3a013a03          	ld	s4,928(sp)
    e8859c1a:	39813a83          	ld	s5,920(sp)
    e8859c1e:	39013b03          	ld	s6,912(sp)
    e8859c22:	38813b83          	ld	s7,904(sp)
    e8859c26:	38013c03          	ld	s8,896(sp)
    e8859c2a:	3d010113          	addi	sp,sp,976
    e8859c2e:	8082                	ret

00000000e8859c30 <_SetupServerExchange>:
{
    e8859c30:	b9010113          	addi	sp,sp,-1136
    e8859c34:	44913c23          	sd	s1,1112(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8859c38:	6491                	lui	s1,0x4
{
    e8859c3a:	46813023          	sd	s0,1120(sp)
    e8859c3e:	45213823          	sd	s2,1104(sp)
    e8859c42:	43513c23          	sd	s5,1080(sp)
	const uint8_t * const		inputEnd		= inputPtr + inInputLen;
    e8859c46:	00c58933          	add	s2,a1,a2
{
    e8859c4a:	8aae                	mv	s5,a1
    e8859c4c:	842a                	mv	s0,a0
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8859c4e:	e8048593          	addi	a1,s1,-384 # 3e80 <memcmp-0xe87fc180>
    e8859c52:	1288                	addi	a0,sp,352
{
    e8859c54:	46113423          	sd	ra,1128(sp)
    e8859c58:	45313423          	sd	s3,1096(sp)
    e8859c5c:	45413023          	sd	s4,1088(sp)
    e8859c60:	89b6                	mv	s3,a3
    e8859c62:	8a3a                	mv	s4,a4
    e8859c64:	43613823          	sd	s6,1072(sp)
    e8859c68:	43713423          	sd	s7,1064(sp)
    e8859c6c:	8b32                	mv	s6,a2
    e8859c6e:	8bbe                	mv	s7,a5
    e8859c70:	43813023          	sd	s8,1056(sp)
    e8859c74:	41913c23          	sd	s9,1048(sp)
    e8859c78:	41a13823          	sd	s10,1040(sp)
    e8859c7c:	41b13423          	sd	s11,1032(sp)
	uint8_t *					storage			= NULL;
    e8859c80:	fc02                	sd	zero,56(sp)
	uint8_t *					serverPKPtr		= NULL;
    e8859c82:	e482                	sd	zero,72(sp)
	size_t						serverPKLen		= 0;
    e8859c84:	e882                	sd	zero,80(sp)
	uint8_t *					clientPKStorage	= NULL;
    e8859c86:	f482                	sd	zero,104(sp)
	uint8_t *					proofStorage	= NULL;
    e8859c88:	e102                	sd	zero,128(sp)
	uint8_t *					responsePtr		= NULL;
    e8859c8a:	e502                	sd	zero,136(sp)
	size_t						responseLen		= 0;
    e8859c8c:	e902                	sd	zero,144(sp)
	TLV8BufferInit( &tlv, kMaxTLVSize );
    e8859c8e:	31a070ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	TLV8BufferInit( &etlv, kMaxTLVSize );
    e8859c92:	e8048593          	addi	a1,s1,-384
    e8859c96:	1d08                	addi	a0,sp,688
    e8859c98:	310070ef          	jal	ra,e8860fa8 <TLV8BufferInit>
	err = TLV8Get( inputPtr, inputEnd, kTLVType_State, &ptr, &len, NULL );
    e8859c9c:	4781                	li	a5,0
    e8859c9e:	1818                	addi	a4,sp,48
    e8859ca0:	1034                	addi	a3,sp,40
    e8859ca2:	4619                	li	a2,6
    e8859ca4:	85ca                	mv	a1,s2
    e8859ca6:	8556                	mv	a0,s5
    e8859ca8:	00c070ef          	jal	ra,e8860cb4 <TLV8Get>
    e8859cac:	d22a                	sw	a0,36(sp)
	require_noerr( err, exit );
    e8859cae:	0c050d63          	beqz	a0,e8859d88 <_SetupServerExchange+0x158>
	uint8_t *					eptr			= NULL;
    e8859cb2:	4901                	li	s2,0
	Boolean						done     		= false;
    e8859cb4:	4481                	li	s1,0
	TLV8BufferFree( &tlv );
    e8859cb6:	1288                	addi	a0,sp,352
	*outDone = done;
    e8859cb8:	009b8023          	sb	s1,0(s7)
	TLV8BufferFree( &tlv );
    e8859cbc:	2fe070ef          	jal	ra,e8860fba <TLV8BufferFree>
	TLV8BufferFree( &etlv );
    e8859cc0:	1d08                	addi	a0,sp,688
    e8859cc2:	2f8070ef          	jal	ra,e8860fba <TLV8BufferFree>
	ForgetMem( &eptr );
    e8859cc6:	00090563          	beqz	s2,e8859cd0 <_SetupServerExchange+0xa0>
    e8859cca:	854a                	mv	a0,s2
    e8859ccc:	634220ef          	jal	ra,e887c300 <eLIBs_free>
	ForgetMem( &storage );
    e8859cd0:	7562                	ld	a0,56(sp)
    e8859cd2:	c501                	beqz	a0,e8859cda <_SetupServerExchange+0xaa>
    e8859cd4:	62c220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859cd8:	fc02                	sd	zero,56(sp)
	ForgetPtrLen( &serverPKPtr, &serverPKLen );
    e8859cda:	6526                	ld	a0,72(sp)
    e8859cdc:	c501                	beqz	a0,e8859ce4 <_SetupServerExchange+0xb4>
    e8859cde:	622220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859ce2:	e482                	sd	zero,72(sp)
	ForgetMem( &clientPKStorage );
    e8859ce4:	7526                	ld	a0,104(sp)
	ForgetPtrLen( &serverPKPtr, &serverPKLen );
    e8859ce6:	e882                	sd	zero,80(sp)
	ForgetMem( &clientPKStorage );
    e8859ce8:	c501                	beqz	a0,e8859cf0 <_SetupServerExchange+0xc0>
    e8859cea:	616220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859cee:	f482                	sd	zero,104(sp)
	ForgetMem( &proofStorage );
    e8859cf0:	650a                	ld	a0,128(sp)
    e8859cf2:	c501                	beqz	a0,e8859cfa <_SetupServerExchange+0xca>
    e8859cf4:	60c220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859cf8:	e102                	sd	zero,128(sp)
	ForgetPtrLen( &responsePtr, &responseLen );
    e8859cfa:	652a                	ld	a0,136(sp)
    e8859cfc:	c501                	beqz	a0,e8859d04 <_SetupServerExchange+0xd4>
    e8859cfe:	602220ef          	jal	ra,e887c300 <eLIBs_free>
    e8859d02:	e502                	sd	zero,136(sp)
	if( err && ( err != kAsyncNoErr ) )
    e8859d04:	5712                	lw	a4,36(sp)
	ForgetPtrLen( &responsePtr, &responseLen );
    e8859d06:	e902                	sd	zero,144(sp)
	if( err && ( err != kAsyncNoErr ) )
    e8859d08:	560701e3          	beqz	a4,e885aa6a <_SetupServerExchange+0xe3a>
    e8859d0c:	77f9                	lui	a5,0xffffe
    e8859d0e:	58d78793          	addi	a5,a5,1421 # ffffffffffffe58d <__DRAM0_INF_BASE+0xffffffff0000e58d>
    e8859d12:	54f70ce3          	beq	a4,a5,e885aa6a <_SetupServerExchange+0xe3a>
		pair_ulog( me, kLogLevelWarning, "### Pair-setup server state %d failed: %#m\n%?{end}%1{tlv8}\n", 
    e8859d16:	6408                	ld	a0,8(s0)
    e8859d18:	03c00713          	li	a4,60
    e8859d1c:	411c                	lw	a5,0(a0)
    e8859d1e:	54f746e3          	blt	a4,a5,e885aa6a <_SetupServerExchange+0xe3a>
    e8859d22:	577d                	li	a4,-1
    e8859d24:	52e78de3          	beq	a5,a4,e885aa5e <_SetupServerExchange+0xe2e>
    e8859d28:	6404                	ld	s1,8(s0)
    e8859d2a:	02800613          	li	a2,40
    e8859d2e:	06044703          	lbu	a4,96(s0)
    e8859d32:	4094                	lw	a3,0(s1)
    e8859d34:	5792                	lw	a5,36(sp)
    e8859d36:	4805                	li	a6,1
    e8859d38:	02d64263          	blt	a2,a3,e8859d5c <_SetupServerExchange+0x12c>
    e8859d3c:	567d                	li	a2,-1
    e8859d3e:	4801                	li	a6,0
    e8859d40:	00c69e63          	bne	a3,a2,e8859d5c <_SetupServerExchange+0x12c>
    e8859d44:	02800593          	li	a1,40
    e8859d48:	8526                	mv	a0,s1
    e8859d4a:	ec3e                	sd	a5,24(sp)
    e8859d4c:	e83a                	sd	a4,16(sp)
    e8859d4e:	b24fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859d52:	2501                	sext.w	a0,a0
    e8859d54:	67e2                	ld	a5,24(sp)
    e8859d56:	6742                	ld	a4,16(sp)
    e8859d58:	00153813          	seqz	a6,a0
    e8859d5c:	2b01                	sext.w	s6,s6
    e8859d5e:	e45a                	sd	s6,8(sp)
    e8859d60:	e056                	sd	s5,0(sp)
    e8859d62:	00044897          	auipc	a7,0x44
    e8859d66:	95688893          	addi	a7,a7,-1706 # e889d6b8 <icmp6_param_problem+0x64a>
    e8859d6a:	00069697          	auipc	a3,0x69
    e8859d6e:	a2e68693          	addi	a3,a3,-1490 # e88c2798 <__PRETTY_FUNCTION__.9902+0xb00>
    e8859d72:	03c00613          	li	a2,60
    e8859d76:	00069597          	auipc	a1,0x69
    e8859d7a:	eaa58593          	addi	a1,a1,-342 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e8859d7e:	8526                	mv	a0,s1
    e8859d80:	ef4fa0ef          	jal	ra,e8854474 <LogPrintF>
    e8859d84:	4e70006f          	j	e885aa6a <_SetupServerExchange+0xe3a>
	require_action( len == 1, exit, err = kSizeErr );
    e8859d88:	7c42                	ld	s8,48(sp)
    e8859d8a:	4785                	li	a5,1
    e8859d8c:	00fc0763          	beq	s8,a5,e8859d9a <_SetupServerExchange+0x16a>
    e8859d90:	77f9                	lui	a5,0xffffe
    e8859d92:	5a97879b          	addiw	a5,a5,1449
    e8859d96:	d23e                	sw	a5,36(sp)
    e8859d98:	bf29                	j	e8859cb2 <_SetupServerExchange+0x82>
	if( *ptr == kPairSetupStateM1 ) _PairingSessionReset( me );
    e8859d9a:	77a2                	ld	a5,40(sp)
    e8859d9c:	84aa                	mv	s1,a0
    e8859d9e:	0007c783          	lbu	a5,0(a5) # ffffffffffffe000 <__DRAM0_INF_BASE+0xffffffff0000e000>
    e8859da2:	01879563          	bne	a5,s8,e8859dac <_SetupServerExchange+0x17c>
    e8859da6:	8522                	mv	a0,s0
    e8859da8:	892fd0ef          	jal	ra,e8856e3a <_PairingSessionReset>
	if( me->state == kPairingStateInvalid ) me->state = kPairSetupStateM1;
    e8859dac:	06044783          	lbu	a5,96(s0)
    e8859db0:	e781                	bnez	a5,e8859db8 <_SetupServerExchange+0x188>
    e8859db2:	4785                	li	a5,1
    e8859db4:	06f40023          	sb	a5,96(s0)
	require_action( *ptr == me->state, exit, err = kStateErr );
    e8859db8:	77a2                	ld	a5,40(sp)
    e8859dba:	06044703          	lbu	a4,96(s0)
    e8859dbe:	0007c783          	lbu	a5,0(a5)
    e8859dc2:	00e78663          	beq	a5,a4,e8859dce <_SetupServerExchange+0x19e>
			err = kStateErr;
    e8859dc6:	77f9                	lui	a5,0xffffe
    e8859dc8:	5cb7879b          	addiw	a5,a5,1483
    e8859dcc:	b7e9                	j	e8859d96 <_SetupServerExchange+0x166>
	switch( me->state )
    e8859dce:	470d                	li	a4,3
    e8859dd0:	3ae78f63          	beq	a5,a4,e885a18e <_SetupServerExchange+0x55e>
    e8859dd4:	4715                	li	a4,5
    e8859dd6:	70e78163          	beq	a5,a4,e885a4d8 <_SetupServerExchange+0x8a8>
    e8859dda:	4705                	li	a4,1
    e8859ddc:	6408                	ld	a0,8(s0)
    e8859dde:	44e790e3          	bne	a5,a4,e885aa1e <_SetupServerExchange+0xdee>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M1 -- start request\n%?{end}%1{tlv8}\n", 
    e8859de2:	411c                	lw	a5,0(a0)
    e8859de4:	4779                	li	a4,30
    e8859de6:	04f74f63          	blt	a4,a5,e8859e44 <_SetupServerExchange+0x214>
    e8859dea:	577d                	li	a4,-1
    e8859dec:	04e78863          	beq	a5,a4,e8859e3c <_SetupServerExchange+0x20c>
    e8859df0:	00843c03          	ld	s8,8(s0)
    e8859df4:	4751                	li	a4,20
    e8859df6:	000c2783          	lw	a5,0(s8)
    e8859dfa:	0af74463          	blt	a4,a5,e8859ea2 <_SetupServerExchange+0x272>
    e8859dfe:	577d                	li	a4,-1
    e8859e00:	00e79963          	bne	a5,a4,e8859e12 <_SetupServerExchange+0x1e2>
    e8859e04:	45d1                	li	a1,20
    e8859e06:	8562                	mv	a0,s8
    e8859e08:	a6afa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859e0c:	2501                	sext.w	a0,a0
    e8859e0e:	00153493          	seqz	s1,a0
    e8859e12:	000b089b          	sext.w	a7,s6
    e8859e16:	8856                	mv	a6,s5
    e8859e18:	00044797          	auipc	a5,0x44
    e8859e1c:	8a078793          	addi	a5,a5,-1888 # e889d6b8 <icmp6_param_problem+0x64a>
    e8859e20:	8726                	mv	a4,s1
    e8859e22:	00068697          	auipc	a3,0x68
    e8859e26:	64e68693          	addi	a3,a3,1614 # e88c2470 <__PRETTY_FUNCTION__.9902+0x7d8>
    e8859e2a:	4679                	li	a2,30
    e8859e2c:	00069597          	auipc	a1,0x69
    e8859e30:	df458593          	addi	a1,a1,-524 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e8859e34:	8562                	mv	a0,s8
    e8859e36:	e3efa0ef          	jal	ra,e8854474 <LogPrintF>
    e8859e3a:	a029                	j	e8859e44 <_SetupServerExchange+0x214>
    e8859e3c:	45f9                	li	a1,30
    e8859e3e:	a34fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859e42:	f55d                	bnez	a0,e8859df0 <_SetupServerExchange+0x1c0>
			err = TLV8GetBytes( inputPtr, inputEnd, kTLVType_Method, 1, 1, &u8, NULL, NULL );
    e8859e44:	4881                	li	a7,0
    e8859e46:	4801                	li	a6,0
    e8859e48:	02310793          	addi	a5,sp,35
    e8859e4c:	4705                	li	a4,1
    e8859e4e:	4685                	li	a3,1
    e8859e50:	4601                	li	a2,0
    e8859e52:	85ca                	mv	a1,s2
    e8859e54:	8556                	mv	a0,s5
    e8859e56:	729060ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e8859e5a:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e8859e5c:	e4051be3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			if(      u8 == kTLVMethod_PairSetup ) {}
    e8859e60:	02314783          	lbu	a5,35(sp)
    e8859e64:	4705                	li	a4,1
    e8859e66:	04f77663          	bgeu	a4,a5,e8859eb2 <_SetupServerExchange+0x282>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server unsupported method: %u\n", u8 );
    e8859e6a:	6408                	ld	a0,8(s0)
    e8859e6c:	03c00713          	li	a4,60
    e8859e70:	411c                	lw	a5,0(a0)
    e8859e72:	02f74463          	blt	a4,a5,e8859e9a <_SetupServerExchange+0x26a>
    e8859e76:	577d                	li	a4,-1
    e8859e78:	02e78763          	beq	a5,a4,e8859ea6 <_SetupServerExchange+0x276>
    e8859e7c:	02314703          	lbu	a4,35(sp)
    e8859e80:	6408                	ld	a0,8(s0)
    e8859e82:	00068697          	auipc	a3,0x68
    e8859e86:	62668693          	addi	a3,a3,1574 # e88c24a8 <__PRETTY_FUNCTION__.9902+0x810>
    e8859e8a:	03c00613          	li	a2,60
    e8859e8e:	00069597          	auipc	a1,0x69
    e8859e92:	d9258593          	addi	a1,a1,-622 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e8859e96:	ddefa0ef          	jal	ra,e8854474 <LogPrintF>
				err = kUnsupportedErr;
    e8859e9a:	77f9                	lui	a5,0xffffe
    e8859e9c:	5b17879b          	addiw	a5,a5,1457
    e8859ea0:	bddd                	j	e8859d96 <_SetupServerExchange+0x166>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M1 -- start request\n%?{end}%1{tlv8}\n", 
    e8859ea2:	4485                	li	s1,1
    e8859ea4:	b7bd                	j	e8859e12 <_SetupServerExchange+0x1e2>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server unsupported method: %u\n", u8 );
    e8859ea6:	03c00593          	li	a1,60
    e8859eaa:	9c8fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859eae:	d575                	beqz	a0,e8859e9a <_SetupServerExchange+0x26a>
    e8859eb0:	b7f1                	j	e8859e7c <_SetupServerExchange+0x24c>
			me->requestMethod = u8;
    e8859eb2:	20f40c23          	sb	a5,536(s0)
	pthread_mutex_lock( &gPairingGlobalLock );
    e8859eb6:	0007b517          	auipc	a0,0x7b
    e8859eba:	22250513          	addi	a0,a0,546 # e88d50d8 <gPairingGlobalLock>
    e8859ebe:	461210ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if( gPairingMaxTries > 0 )
    e8859ec2:	0008a797          	auipc	a5,0x8a
    e8859ec6:	e6e78793          	addi	a5,a5,-402 # e88e3d30 <gPairingMaxTries>
    e8859eca:	4394                	lw	a3,0(a5)
    e8859ecc:	ce91                	beqz	a3,e8859ee8 <_SetupServerExchange+0x2b8>
		require_action_quiet( gPairingTries < gPairingMaxTries, exit, result = kCountErr );
    e8859ece:	0008a717          	auipc	a4,0x8a
    e8859ed2:	e7a70713          	addi	a4,a4,-390 # e88e3d48 <gPairingTries>
    e8859ed6:	431c                	lw	a5,0(a4)
    e8859ed8:	0ed7f763          	bgeu	a5,a3,e8859fc6 <_SetupServerExchange+0x396>
		++gPairingTries;
    e8859edc:	2785                	addiw	a5,a5,1
    e8859ede:	c31c                	sw	a5,0(a4)
		result = kSkipErr;
    e8859ee0:	74f9                	lui	s1,0xffffe
    e8859ee2:	59b48493          	addi	s1,s1,1435 # ffffffffffffe59b <__DRAM0_INF_BASE+0xffffffff0000e59b>
    e8859ee6:	a081                	j	e8859f26 <_SetupServerExchange+0x2f6>
	nowTicks = UpTicks();
    e8859ee8:	2dc070ef          	jal	ra,e88611c4 <UpTicks>
	if( gPairingThrottleStartTicks == 0 ) gPairingThrottleStartTicks = nowTicks;
    e8859eec:	0008a697          	auipc	a3,0x8a
    e8859ef0:	e5468693          	addi	a3,a3,-428 # e88e3d40 <gPairingThrottleStartTicks>
    e8859ef4:	629c                	ld	a5,0(a3)
    e8859ef6:	e391                	bnez	a5,e8859efa <_SetupServerExchange+0x2ca>
    e8859ef8:	e288                	sd	a0,0(a3)
	nextTicks = gPairingThrottleStartTicks + ( gPairingThrottleCounter * ticksPerSec );
    e8859efa:	0008a617          	auipc	a2,0x8a
    e8859efe:	e4260613          	addi	a2,a2,-446 # e88e3d3c <gPairingThrottleCounter>
    e8859f02:	4218                	lw	a4,0(a2)
    e8859f04:	629c                	ld	a5,0(a3)
    e8859f06:	3e800593          	li	a1,1000
    e8859f0a:	7c07380b          	extu	a6,a4,31,0
    e8859f0e:	20b8178b          	mula	a5,a6,a1
	if( nextTicks > nowTicks )
    e8859f12:	08f57863          	bgeu	a0,a5,e8859fa2 <_SetupServerExchange+0x372>
		deltaTicks = nextTicks - nowTicks;
    e8859f16:	8f89                	sub	a5,a5,a0
		secs = deltaTicks / ticksPerSec;
    e8859f18:	02b7d4b3          	divu	s1,a5,a1
		if( deltaTicks % ticksPerSec ) ++secs;
    e8859f1c:	02b7f7b3          	remu	a5,a5,a1
    e8859f20:	c391                	beqz	a5,e8859f24 <_SetupServerExchange+0x2f4>
    e8859f22:	0485                	addi	s1,s1,1
		result = (int32_t) secs;
    e8859f24:	2481                	sext.w	s1,s1
	pthread_mutex_unlock( &gPairingGlobalLock );
    e8859f26:	0007b517          	auipc	a0,0x7b
    e8859f2a:	1b250513          	addi	a0,a0,434 # e88d50d8 <gPairingGlobalLock>
    e8859f2e:	435210ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
			if( s32 >= 0 )
    e8859f32:	0a04c463          	bltz	s1,e8859fda <_SetupServerExchange+0x3aa>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server throttling for %d second(s)\n", s32 );
    e8859f36:	6408                	ld	a0,8(s0)
    e8859f38:	03c00713          	li	a4,60
    e8859f3c:	411c                	lw	a5,0(a0)
    e8859f3e:	02f74363          	blt	a4,a5,e8859f64 <_SetupServerExchange+0x334>
    e8859f42:	577d                	li	a4,-1
    e8859f44:	08e78563          	beq	a5,a4,e8859fce <_SetupServerExchange+0x39e>
    e8859f48:	6408                	ld	a0,8(s0)
    e8859f4a:	8726                	mv	a4,s1
    e8859f4c:	00068697          	auipc	a3,0x68
    e8859f50:	58c68693          	addi	a3,a3,1420 # e88c24d8 <__PRETTY_FUNCTION__.9902+0x840>
    e8859f54:	03c00613          	li	a2,60
    e8859f58:	00069597          	auipc	a1,0x69
    e8859f5c:	cc858593          	addi	a1,a1,-824 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e8859f60:	d14fa0ef          	jal	ra,e8854474 <LogPrintF>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, kTLVError_Backoff );
    e8859f64:	460d                	li	a2,3
    e8859f66:	459d                	li	a1,7
    e8859f68:	1288                	addi	a0,sp,352
    e8859f6a:	16a070ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e8859f6e:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e8859f70:	d40511e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_RetryDelay, (uint32_t) s32 );
    e8859f74:	8626                	mv	a2,s1
    e8859f76:	45a1                	li	a1,8
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, kTLVError_MaxTries );
    e8859f78:	1288                	addi	a0,sp,352
    e8859f7a:	15a070ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e8859f7e:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e8859f80:	d20519e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_State, kPairSetupStateM2 );
    e8859f84:	4609                	li	a2,2
    e8859f86:	4599                	li	a1,6
    e8859f88:	1288                	addi	a0,sp,352
    e8859f8a:	14a070ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e8859f8e:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e8859f90:	d20511e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
				err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e8859f94:	8652                	mv	a2,s4
    e8859f96:	85ce                	mv	a1,s3
    e8859f98:	1288                	addi	a0,sp,352
    e8859f9a:	17e070ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e8859f9e:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e8859fa0:	bb09                	j	e8859cb2 <_SetupServerExchange+0x82>
		gPairingThrottleCounter = gPairingThrottleCounter ? ( gPairingThrottleCounter * 2 ) : 1;
    e8859fa2:	e701                	bnez	a4,e8859faa <_SetupServerExchange+0x37a>
    e8859fa4:	4785                	li	a5,1
    e8859fa6:	c21c                	sw	a5,0(a2)
    e8859fa8:	bf25                	j	e8859ee0 <_SetupServerExchange+0x2b0>
		if( gPairingThrottleCounter > 10800 ) gPairingThrottleCounter = 10800; // 3 hour cap.
    e8859faa:	678d                	lui	a5,0x3
    e8859fac:	74f9                	lui	s1,0xffffe
		gPairingThrottleCounter = gPairingThrottleCounter ? ( gPairingThrottleCounter * 2 ) : 1;
    e8859fae:	0017169b          	slliw	a3,a4,0x1
		if( gPairingThrottleCounter > 10800 ) gPairingThrottleCounter = 10800; // 3 hour cap.
    e8859fb2:	a3078793          	addi	a5,a5,-1488 # 2a30 <memcmp-0xe87fd5d0>
    e8859fb6:	59b48493          	addi	s1,s1,1435 # ffffffffffffe59b <__DRAM0_INF_BASE+0xffffffff0000e59b>
    e8859fba:	00d7e463          	bltu	a5,a3,e8859fc2 <_SetupServerExchange+0x392>
		gPairingThrottleCounter = gPairingThrottleCounter ? ( gPairingThrottleCounter * 2 ) : 1;
    e8859fbe:	c214                	sw	a3,0(a2)
    e8859fc0:	b79d                	j	e8859f26 <_SetupServerExchange+0x2f6>
		if( gPairingThrottleCounter > 10800 ) gPairingThrottleCounter = 10800; // 3 hour cap.
    e8859fc2:	c21c                	sw	a5,0(a2)
    e8859fc4:	b78d                	j	e8859f26 <_SetupServerExchange+0x2f6>
		require_action_quiet( gPairingTries < gPairingMaxTries, exit, result = kCountErr );
    e8859fc6:	74f9                	lui	s1,0xffffe
    e8859fc8:	59448493          	addi	s1,s1,1428 # ffffffffffffe594 <__DRAM0_INF_BASE+0xffffffff0000e594>
    e8859fcc:	bfa9                	j	e8859f26 <_SetupServerExchange+0x2f6>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server throttling for %d second(s)\n", s32 );
    e8859fce:	03c00593          	li	a1,60
    e8859fd2:	8a0fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8859fd6:	d559                	beqz	a0,e8859f64 <_SetupServerExchange+0x334>
    e8859fd8:	bf85                	j	e8859f48 <_SetupServerExchange+0x318>
			else if( s32 == kCountErr )
    e8859fda:	77f9                	lui	a5,0xffffe
    e8859fdc:	59478793          	addi	a5,a5,1428 # ffffffffffffe594 <__DRAM0_INF_BASE+0xffffffff0000e594>
    e8859fe0:	04f49163          	bne	s1,a5,e885a022 <_SetupServerExchange+0x3f2>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server disabled after too many attempts\n" );
    e8859fe4:	6408                	ld	a0,8(s0)
    e8859fe6:	03c00713          	li	a4,60
    e8859fea:	411c                	lw	a5,0(a0)
    e8859fec:	02f74263          	blt	a4,a5,e885a010 <_SetupServerExchange+0x3e0>
    e8859ff0:	577d                	li	a4,-1
    e8859ff2:	02e78263          	beq	a5,a4,e885a016 <_SetupServerExchange+0x3e6>
    e8859ff6:	6408                	ld	a0,8(s0)
    e8859ff8:	00068697          	auipc	a3,0x68
    e8859ffc:	51868693          	addi	a3,a3,1304 # e88c2510 <__PRETTY_FUNCTION__.9902+0x878>
    e885a000:	03c00613          	li	a2,60
    e885a004:	00069597          	auipc	a1,0x69
    e885a008:	c1c58593          	addi	a1,a1,-996 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885a00c:	c68fa0ef          	jal	ra,e8854474 <LogPrintF>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, kTLVError_MaxTries );
    e885a010:	4619                	li	a2,6
    e885a012:	459d                	li	a1,7
    e885a014:	b795                	j	e8859f78 <_SetupServerExchange+0x348>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server disabled after too many attempts\n" );
    e885a016:	03c00593          	li	a1,60
    e885a01a:	858fa0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a01e:	d96d                	beqz	a0,e885a010 <_SetupServerExchange+0x3e0>
    e885a020:	bfd9                	j	e8859ff6 <_SetupServerExchange+0x3c6>
			me->state = kPairSetupStateM2;
    e885a022:	4789                	li	a5,2
    e885a024:	06f40023          	sb	a5,96(s0)
			if( !me->setupCodePtr || ( me->setupCodeLen == 0 ) )
    e885a028:	647c                	ld	a5,200(s0)
    e885a02a:	0e078f63          	beqz	a5,e885a128 <_SetupServerExchange+0x4f8>
    e885a02e:	687c                	ld	a5,208(s0)
    e885a030:	0e078c63          	beqz	a5,e885a128 <_SetupServerExchange+0x4f8>
			SRPForget( &me->srpCtx );
    e885a034:	1e043503          	ld	a0,480(s0)
    e885a038:	12051a63          	bnez	a0,e885a16c <_SetupServerExchange+0x53c>
			err = SRPCreate( &me->srpCtx );
    e885a03c:	1e040513          	addi	a0,s0,480
    e885a040:	072040ef          	jal	ra,e885e0b2 <SRPCreate_libsrp>
    e885a044:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a046:	c60516e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			err = SRPServerStart( me->srpCtx, kSRPParameters_3072_SHA512, kPairSetupSRPUsernamePtr, kPairSetupSRPUsernameLen, 
    e885a04a:	089c                	addi	a5,sp,80
    e885a04c:	e43e                	sd	a5,8(sp)
    e885a04e:	00bc                	addi	a5,sp,72
    e885a050:	0006a597          	auipc	a1,0x6a
    e885a054:	84058593          	addi	a1,a1,-1984 # e88c3890 <kSRPParameters_3072_SHA512>
    e885a058:	e03e                	sd	a5,0(sp)
    e885a05a:	6478                	ld	a4,200(s0)
    e885a05c:	687c                	ld	a5,208(s0)
    e885a05e:	618c                	ld	a1,0(a1)
    e885a060:	1e043503          	ld	a0,480(s0)
    e885a064:	09810893          	addi	a7,sp,152
    e885a068:	4841                	li	a6,16
    e885a06a:	46a9                	li	a3,10
    e885a06c:	00068617          	auipc	a2,0x68
    e885a070:	10460613          	addi	a2,a2,260 # e88c2170 <__PRETTY_FUNCTION__.9902+0x4d8>
    e885a074:	212040ef          	jal	ra,e885e286 <SRPServerStart_libsrp>
    e885a078:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a07a:	c2051ce3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e885a07e:	4685                	li	a3,1
    e885a080:	06040613          	addi	a2,s0,96
    e885a084:	4599                	li	a1,6
    e885a086:	1288                	addi	a0,sp,352
    e885a088:	753060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a08c:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a08e:	c20512e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			err = TLV8BufferAppend( &tlv, kTLVType_Salt, salt, sizeof( salt ) );
    e885a092:	46c1                	li	a3,16
    e885a094:	0930                	addi	a2,sp,152
    e885a096:	4589                	li	a1,2
    e885a098:	1288                	addi	a0,sp,352
    e885a09a:	741060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a09e:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a0a0:	c00519e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			err = TLV8BufferAppend( &tlv, kTLVType_PublicKey, serverPKPtr, serverPKLen );
    e885a0a4:	66c6                	ld	a3,80(sp)
    e885a0a6:	6626                	ld	a2,72(sp)
    e885a0a8:	458d                	li	a1,3
    e885a0aa:	1288                	addi	a0,sp,352
    e885a0ac:	72f060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a0b0:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a0b2:	c00510e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e885a0b6:	8652                	mv	a2,s4
    e885a0b8:	85ce                	mv	a1,s3
    e885a0ba:	1288                	addi	a0,sp,352
    e885a0bc:	05c070ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885a0c0:	d22a                	sw	a0,36(sp)
    e885a0c2:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e885a0c4:	be0517e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M2 -- start response\n%?{end}%1{tlv8}\n", 
    e885a0c8:	6408                	ld	a0,8(s0)
			me->state = kPairSetupStateM3;
    e885a0ca:	478d                	li	a5,3
    e885a0cc:	06f40023          	sb	a5,96(s0)
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M2 -- start response\n%?{end}%1{tlv8}\n", 
    e885a0d0:	411c                	lw	a5,0(a0)
    e885a0d2:	46f9                	li	a3,30
    e885a0d4:	0af6c763          	blt	a3,a5,e885a182 <_SetupServerExchange+0x552>
    e885a0d8:	56fd                	li	a3,-1
    e885a0da:	08d78e63          	beq	a5,a3,e885a176 <_SetupServerExchange+0x546>
    e885a0de:	6404                	ld	s1,8(s0)
    e885a0e0:	46d1                	li	a3,20
    e885a0e2:	409c                	lw	a5,0(s1)
    e885a0e4:	0af6c363          	blt	a3,a5,e885a18a <_SetupServerExchange+0x55a>
    e885a0e8:	56fd                	li	a3,-1
    e885a0ea:	00d79a63          	bne	a5,a3,e885a0fe <_SetupServerExchange+0x4ce>
    e885a0ee:	45d1                	li	a1,20
    e885a0f0:	8526                	mv	a0,s1
    e885a0f2:	f81f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a0f6:	0005071b          	sext.w	a4,a0
    e885a0fa:	00173713          	seqz	a4,a4
    e885a0fe:	000a3883          	ld	a7,0(s4)
    e885a102:	0009b803          	ld	a6,0(s3)
    e885a106:	00043797          	auipc	a5,0x43
    e885a10a:	5b278793          	addi	a5,a5,1458 # e889d6b8 <icmp6_param_problem+0x64a>
    e885a10e:	00068697          	auipc	a3,0x68
    e885a112:	43a68693          	addi	a3,a3,1082 # e88c2548 <__PRETTY_FUNCTION__.9902+0x8b0>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M4 -- verify response\n%?{end}%1{tlv8}\n", 
    e885a116:	4679                	li	a2,30
    e885a118:	00069597          	auipc	a1,0x69
    e885a11c:	b0858593          	addi	a1,a1,-1272 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885a120:	8526                	mv	a0,s1
    e885a122:	b52fa0ef          	jal	ra,e8854474 <LogPrintF>
    e885a126:	a8b1                	j	e885a182 <_SetupServerExchange+0x552>
				require_action( me->delegate.showSetupCode_f, exit, err = kNotPreparedErr );
    e885a128:	6c1c                	ld	a5,24(s0)
    e885a12a:	e789                	bnez	a5,e885a134 <_SetupServerExchange+0x504>
    e885a12c:	77f9                	lui	a5,0xffffe
    e885a12e:	5a77879b          	addiw	a5,a5,1447
    e885a132:	b195                	j	e8859d96 <_SetupServerExchange+0x166>
				err = me->delegate.showSetupCode_f( kPairingFlags_None, tempStr, sizeof( tempStr ), me->delegate.context );
    e885a134:	6814                	ld	a3,16(s0)
    e885a136:	04000613          	li	a2,64
    e885a13a:	118c                	addi	a1,sp,224
    e885a13c:	4501                	li	a0,0
    e885a13e:	9782                	jalr	a5
    e885a140:	d22a                	sw	a0,36(sp)
				require_noerr_quiet( err, exit );
    e885a142:	b60518e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
				me->showingSetupCode = true;
    e885a146:	4785                	li	a5,1
    e885a148:	0cf40ca3          	sb	a5,217(s0)
				require_action( strlen( tempStr ) >= 4, exit, err = kSizeErr );
    e885a14c:	1188                	addi	a0,sp,224
    e885a14e:	1ca220ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885a152:	2501                	sext.w	a0,a0
    e885a154:	478d                	li	a5,3
    e885a156:	c2a7fde3          	bgeu	a5,a0,e8859d90 <_SetupServerExchange+0x160>
				err = PairingSessionSetSetupCode( me, tempStr, kSizeCString );
    e885a15a:	567d                	li	a2,-1
    e885a15c:	118c                	addi	a1,sp,224
    e885a15e:	8522                	mv	a0,s0
    e885a160:	89ffd0ef          	jal	ra,e88579fe <PairingSessionSetSetupCode>
    e885a164:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885a166:	ec0507e3          	beqz	a0,e885a034 <_SetupServerExchange+0x404>
    e885a16a:	b6a1                	j	e8859cb2 <_SetupServerExchange+0x82>
			SRPForget( &me->srpCtx );
    e885a16c:	779030ef          	jal	ra,e885e0e4 <SRPDelete_libsrp>
    e885a170:	1e043023          	sd	zero,480(s0)
    e885a174:	b5e1                	j	e885a03c <_SetupServerExchange+0x40c>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M2 -- start response\n%?{end}%1{tlv8}\n", 
    e885a176:	45f9                	li	a1,30
    e885a178:	e83a                	sd	a4,16(sp)
    e885a17a:	ef9f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a17e:	6742                	ld	a4,16(sp)
    e885a180:	fd39                	bnez	a0,e885a0de <_SetupServerExchange+0x4ae>
	uint8_t *					eptr			= NULL;
    e885a182:	4901                	li	s2,0
	Boolean						done     		= false;
    e885a184:	4481                	li	s1,0
    e885a186:	0850006f          	j	e885aa0a <_SetupServerExchange+0xdda>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M2 -- start response\n%?{end}%1{tlv8}\n", 
    e885a18a:	4705                	li	a4,1
    e885a18c:	bf8d                	j	e885a0fe <_SetupServerExchange+0x4ce>
			require_action( me->srpCtx, exit, err = kExecutionStateErr );
    e885a18e:	1e043783          	ld	a5,480(s0)
    e885a192:	e789                	bnez	a5,e885a19c <_SetupServerExchange+0x56c>
    e885a194:	77f9                	lui	a5,0xffffe
    e885a196:	5d17879b          	addiw	a5,a5,1489
    e885a19a:	bef5                	j	e8859d96 <_SetupServerExchange+0x166>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M3 -- verify request\n%?{end}%1{tlv8}\n", 
    e885a19c:	6408                	ld	a0,8(s0)
    e885a19e:	4779                	li	a4,30
    e885a1a0:	411c                	lw	a5,0(a0)
    e885a1a2:	04f74f63          	blt	a4,a5,e885a200 <_SetupServerExchange+0x5d0>
    e885a1a6:	577d                	li	a4,-1
    e885a1a8:	04e78863          	beq	a5,a4,e885a1f8 <_SetupServerExchange+0x5c8>
    e885a1ac:	00843c03          	ld	s8,8(s0)
    e885a1b0:	4751                	li	a4,20
    e885a1b2:	000c2783          	lw	a5,0(s8)
    e885a1b6:	10f74963          	blt	a4,a5,e885a2c8 <_SetupServerExchange+0x698>
    e885a1ba:	577d                	li	a4,-1
    e885a1bc:	00e79963          	bne	a5,a4,e885a1ce <_SetupServerExchange+0x59e>
    e885a1c0:	45d1                	li	a1,20
    e885a1c2:	8562                	mv	a0,s8
    e885a1c4:	eaff90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a1c8:	2501                	sext.w	a0,a0
    e885a1ca:	00153493          	seqz	s1,a0
    e885a1ce:	000b089b          	sext.w	a7,s6
    e885a1d2:	8856                	mv	a6,s5
    e885a1d4:	00043797          	auipc	a5,0x43
    e885a1d8:	4e478793          	addi	a5,a5,1252 # e889d6b8 <icmp6_param_problem+0x64a>
    e885a1dc:	8726                	mv	a4,s1
    e885a1de:	00068697          	auipc	a3,0x68
    e885a1e2:	3a268693          	addi	a3,a3,930 # e88c2580 <__PRETTY_FUNCTION__.9902+0x8e8>
    e885a1e6:	4679                	li	a2,30
    e885a1e8:	00069597          	auipc	a1,0x69
    e885a1ec:	a3858593          	addi	a1,a1,-1480 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885a1f0:	8562                	mv	a0,s8
    e885a1f2:	a82fa0ef          	jal	ra,e8854474 <LogPrintF>
    e885a1f6:	a029                	j	e885a200 <_SetupServerExchange+0x5d0>
    e885a1f8:	45f9                	li	a1,30
    e885a1fa:	e79f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a1fe:	f55d                	bnez	a0,e885a1ac <_SetupServerExchange+0x57c>
			err = TLV8GetOrCopyCoalesced( inputPtr, inputEnd, kTLVType_PublicKey, &clientPKPtr, &clientPKLen, 
    e885a200:	4801                	li	a6,0
    e885a202:	10bc                	addi	a5,sp,104
    e885a204:	1098                	addi	a4,sp,96
    e885a206:	08b4                	addi	a3,sp,88
    e885a208:	460d                	li	a2,3
    e885a20a:	85ca                	mv	a1,s2
    e885a20c:	8556                	mv	a0,s5
    e885a20e:	439060ef          	jal	ra,e8860e46 <TLV8GetOrCopyCoalesced>
    e885a212:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a214:	a8051fe3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			err = TLV8GetOrCopyCoalesced( inputPtr, inputEnd, kTLVType_Proof, &proofPtr, &proofLen, &proofStorage, NULL );
    e885a218:	4801                	li	a6,0
    e885a21a:	011c                	addi	a5,sp,128
    e885a21c:	18b8                	addi	a4,sp,120
    e885a21e:	1894                	addi	a3,sp,112
    e885a220:	4611                	li	a2,4
    e885a222:	85ca                	mv	a1,s2
    e885a224:	8556                	mv	a0,s5
    e885a226:	421060ef          	jal	ra,e8860e46 <TLV8GetOrCopyCoalesced>
    e885a22a:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a22c:	a80513e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			ForgetPtrLenSecure( &me->srpSharedSecretPtr, &me->srpSharedSecretLen );
    e885a230:	20843783          	ld	a5,520(s0)
    e885a234:	efc1                	bnez	a5,e885a2cc <_SetupServerExchange+0x69c>
    e885a236:	20843503          	ld	a0,520(s0)
    e885a23a:	e14d                	bnez	a0,e885a2dc <_SetupServerExchange+0x6ac>
			err = SRPServerVerify( me->srpCtx, clientPKPtr, clientPKLen, proofPtr, proofLen, 
    e885a23c:	091c                	addi	a5,sp,144
    e885a23e:	7766                	ld	a4,120(sp)
    e885a240:	76c6                	ld	a3,112(sp)
    e885a242:	7606                	ld	a2,96(sp)
    e885a244:	65e6                	ld	a1,88(sp)
    e885a246:	1e043503          	ld	a0,480(s0)
    e885a24a:	e03e                	sd	a5,0(sp)
			ForgetPtrLenSecure( &me->srpSharedSecretPtr, &me->srpSharedSecretLen );
    e885a24c:	20043823          	sd	zero,528(s0)
			err = SRPServerVerify( me->srpCtx, clientPKPtr, clientPKLen, proofPtr, proofLen, 
    e885a250:	08810893          	addi	a7,sp,136
    e885a254:	21040813          	addi	a6,s0,528
    e885a258:	20840793          	addi	a5,s0,520
    e885a25c:	12a040ef          	jal	ra,e885e386 <SRPServerVerify_libsrp>
    e885a260:	d22a                	sw	a0,36(sp)
			if( err )
    e885a262:	c941                	beqz	a0,e885a2f2 <_SetupServerExchange+0x6c2>
				pair_ulog( me, kLogLevelNotice, "### Pair-setup server bad setup code\n" );
    e885a264:	6408                	ld	a0,8(s0)
    e885a266:	03200713          	li	a4,50
    e885a26a:	411c                	lw	a5,0(a0)
    e885a26c:	02f74263          	blt	a4,a5,e885a290 <_SetupServerExchange+0x660>
    e885a270:	577d                	li	a4,-1
    e885a272:	06e78a63          	beq	a5,a4,e885a2e6 <_SetupServerExchange+0x6b6>
    e885a276:	6408                	ld	a0,8(s0)
    e885a278:	00068697          	auipc	a3,0x68
    e885a27c:	34068693          	addi	a3,a3,832 # e88c25b8 <__PRETTY_FUNCTION__.9902+0x920>
    e885a280:	03200613          	li	a2,50
    e885a284:	00069597          	auipc	a1,0x69
    e885a288:	99c58593          	addi	a1,a1,-1636 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885a28c:	9e8fa0ef          	jal	ra,e8854474 <LogPrintF>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, kTLVError_Authentication );
    e885a290:	4609                	li	a2,2
    e885a292:	459d                	li	a1,7
    e885a294:	1288                	addi	a0,sp,352
    e885a296:	63f060ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e885a29a:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885a29c:	a0051be3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_State, kPairSetupStateM4 );
    e885a2a0:	4611                	li	a2,4
    e885a2a2:	4599                	li	a1,6
    e885a2a4:	1288                	addi	a0,sp,352
    e885a2a6:	62f060ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e885a2aa:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885a2ac:	a00513e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
				err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e885a2b0:	8652                	mv	a2,s4
    e885a2b2:	85ce                	mv	a1,s3
    e885a2b4:	1288                	addi	a0,sp,352
    e885a2b6:	663060ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885a2ba:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885a2bc:	9e051be3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
				_PairingSessionReset( me );
    e885a2c0:	8522                	mv	a0,s0
    e885a2c2:	b79fc0ef          	jal	ra,e8856e3a <_PairingSessionReset>
				goto exit;
    e885a2c6:	b2f5                	j	e8859cb2 <_SetupServerExchange+0x82>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M3 -- verify request\n%?{end}%1{tlv8}\n", 
    e885a2c8:	4485                	li	s1,1
    e885a2ca:	b711                	j	e885a1ce <_SetupServerExchange+0x59e>
    e885a2cc:	21043703          	ld	a4,528(s0)
    e885a2d0:	973e                	add	a4,a4,a5
    e885a2d2:	f6f702e3          	beq	a4,a5,e885a236 <_SetupServerExchange+0x606>
    e885a2d6:	1817d00b          	sbia	zero,(a5),1,0
    e885a2da:	bfe5                	j	e885a2d2 <_SetupServerExchange+0x6a2>
			ForgetPtrLenSecure( &me->srpSharedSecretPtr, &me->srpSharedSecretLen );
    e885a2dc:	024220ef          	jal	ra,e887c300 <eLIBs_free>
    e885a2e0:	20043423          	sd	zero,520(s0)
    e885a2e4:	bfa1                	j	e885a23c <_SetupServerExchange+0x60c>
				pair_ulog( me, kLogLevelNotice, "### Pair-setup server bad setup code\n" );
    e885a2e6:	03200593          	li	a1,50
    e885a2ea:	d89f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a2ee:	d14d                	beqz	a0,e885a290 <_SetupServerExchange+0x660>
    e885a2f0:	b759                	j	e885a276 <_SetupServerExchange+0x646>
			if( me->delegate.hideSetupCode_f ) me->delegate.hideSetupCode_f( me->delegate.context );
    e885a2f2:	701c                	ld	a5,32(s0)
    e885a2f4:	c399                	beqz	a5,e885a2fa <_SetupServerExchange+0x6ca>
    e885a2f6:	6808                	ld	a0,16(s0)
    e885a2f8:	9782                	jalr	a5
			ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e885a2fa:	6468                	ld	a0,200(s0)
			me->showingSetupCode = false;
    e885a2fc:	0c040ca3          	sb	zero,217(s0)
			ForgetPtrLen( &me->setupCodePtr, &me->setupCodeLen );
    e885a300:	c509                	beqz	a0,e885a30a <_SetupServerExchange+0x6da>
    e885a302:	7ff210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a306:	0c043423          	sd	zero,200(s0)
    e885a30a:	0c043823          	sd	zero,208(s0)
			me->state = kPairSetupStateM4;
    e885a30e:	8622                	mv	a2,s0
    e885a310:	4791                	li	a5,4
    e885a312:	0ec6578b          	sbib	a5,(a2),12,3
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e885a316:	4685                	li	a3,1
    e885a318:	4599                	li	a1,6
    e885a31a:	1288                	addi	a0,sp,352
    e885a31c:	4bf060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a320:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a322:	980518e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			err = TLV8BufferAppend( &tlv, kTLVType_Proof, responsePtr, responseLen );
    e885a326:	66ca                	ld	a3,144(sp)
    e885a328:	662a                	ld	a2,136(sp)
    e885a32a:	4591                	li	a1,4
    e885a32c:	1288                	addi	a0,sp,352
    e885a32e:	4ad060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a332:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a334:	96051fe3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			SRPForget( &me->srpCtx );
    e885a338:	1e043503          	ld	a0,480(s0)
    e885a33c:	c509                	beqz	a0,e885a346 <_SetupServerExchange+0x716>
    e885a33e:	5a7030ef          	jal	ra,e885e0e4 <SRPDelete_libsrp>
    e885a342:	1e043023          	sd	zero,480(s0)
			HKDF_SHA512( me->srpSharedSecretPtr, me->srpSharedSecretLen, 
    e885a346:	21043583          	ld	a1,528(s0)
    e885a34a:	20843503          	ld	a0,520(s0)
    e885a34e:	0da40493          	addi	s1,s0,218
    e885a352:	47dd                	li	a5,23
    e885a354:	00068717          	auipc	a4,0x68
    e885a358:	f0470713          	addi	a4,a4,-252 # e88c2258 <__PRETTY_FUNCTION__.9902+0x5c0>
    e885a35c:	88a6                	mv	a7,s1
    e885a35e:	02000813          	li	a6,32
    e885a362:	46dd                	li	a3,23
    e885a364:	00068617          	auipc	a2,0x68
    e885a368:	f0c60613          	addi	a2,a2,-244 # e88c2270 <__PRETTY_FUNCTION__.9902+0x5d8>
    e885a36c:	457030ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
				if( me->requestMethod == kTLVMethod_MFiPairSetup )
    e885a370:	21844703          	lbu	a4,536(s0)
    e885a374:	4785                	li	a5,1
    e885a376:	0ef71663          	bne	a4,a5,e885a462 <_SetupServerExchange+0x832>
					HKDF_SHA512( me->srpSharedSecretPtr, me->srpSharedSecretLen, 
    e885a37a:	21043583          	ld	a1,528(s0)
    e885a37e:	20843503          	ld	a0,520(s0)
    e885a382:	0c010893          	addi	a7,sp,192
    e885a386:	02000813          	li	a6,32
    e885a38a:	47cd                	li	a5,19
    e885a38c:	00068717          	auipc	a4,0x68
    e885a390:	25470713          	addi	a4,a4,596 # e88c25e0 <__PRETTY_FUNCTION__.9902+0x948>
    e885a394:	46cd                	li	a3,19
    e885a396:	00068617          	auipc	a2,0x68
    e885a39a:	26260613          	addi	a2,a2,610 # e88c25f8 <__PRETTY_FUNCTION__.9902+0x960>
    e885a39e:	425030ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
					SHA1( msg, 32, digest );
    e885a3a2:	1130                	addi	a2,sp,168
    e885a3a4:	02000593          	li	a1,32
    e885a3a8:	0188                	addi	a0,sp,192
    e885a3aa:	0ad030ef          	jal	ra,e885dc56 <SHA1_compat>
					err = MFiPlatform_CreateSignature( digest, sizeof( digest ), &storage, &len );
    e885a3ae:	1814                	addi	a3,sp,48
    e885a3b0:	1830                	addi	a2,sp,56
    e885a3b2:	45d1                	li	a1,20
    e885a3b4:	1128                	addi	a0,sp,168
    e885a3b6:	cc0fa0ef          	jal	ra,e8854876 <MFiPlatform_CreateSignature>
    e885a3ba:	d22a                	sw	a0,36(sp)
					require_noerr( err, exit );
    e885a3bc:	8e051be3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
					err = TLV8BufferAppend( &etlv, kTLVType_Signature, storage, len );
    e885a3c0:	fec1468b          	ldd	a3,a2,(sp),3,4
    e885a3c4:	45a9                	li	a1,10
    e885a3c6:	1d08                	addi	a0,sp,688
    e885a3c8:	413060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a3cc:	d22a                	sw	a0,36(sp)
					require_noerr( err, exit );
    e885a3ce:	8e0512e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
					ForgetMem( &storage );
    e885a3d2:	7562                	ld	a0,56(sp)
    e885a3d4:	c501                	beqz	a0,e885a3dc <_SetupServerExchange+0x7ac>
    e885a3d6:	72b210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a3da:	fc02                	sd	zero,56(sp)
					err = MFiPlatform_CopyCertificate( &storage, &len );
    e885a3dc:	180c                	addi	a1,sp,48
    e885a3de:	1828                	addi	a0,sp,56
    e885a3e0:	e2cfa0ef          	jal	ra,e8854a0c <MFiPlatform_CopyCertificate>
    e885a3e4:	d22a                	sw	a0,36(sp)
					require_noerr( err, exit );
    e885a3e6:	8c0516e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
					err = TLV8BufferAppend( &etlv, kTLVType_Certificate, storage, len );
    e885a3ea:	fec1468b          	ldd	a3,a2,(sp),3,4
    e885a3ee:	45a5                	li	a1,9
    e885a3f0:	1d08                	addi	a0,sp,688
    e885a3f2:	3e9060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a3f6:	d22a                	sw	a0,36(sp)
					require_noerr( err, exit );
    e885a3f8:	8a051de3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
					ForgetMem( &storage );
    e885a3fc:	7562                	ld	a0,56(sp)
    e885a3fe:	c501                	beqz	a0,e885a406 <_SetupServerExchange+0x7d6>
    e885a400:	701210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a404:	fc02                	sd	zero,56(sp)
					storage = (uint8_t *) malloc( etlv.len + 16 );
    e885a406:	2b813503          	ld	a0,696(sp)
    e885a40a:	0541                	addi	a0,a0,16
    e885a40c:	442210ef          	jal	ra,e887b84e <my_malloc>
    e885a410:	fc2a                	sd	a0,56(sp)
    e885a412:	892a                	mv	s2,a0
					require_action( storage, exit, err = kNoMemoryErr );
    e885a414:	e519                	bnez	a0,e885a422 <_SetupServerExchange+0x7f2>
			require_action( storage, exit, err = kNoMemoryErr );
    e885a416:	77f9                	lui	a5,0xffffe
    e885a418:	5b87879b          	addiw	a5,a5,1464
    e885a41c:	d23e                	sw	a5,36(sp)
    e885a41e:	897ff06f          	j	e8859cb4 <_SetupServerExchange+0x84>
					chacha20_poly1305_encrypt_all_64x64( me->key, (const uint8_t *) "PS-Msg04", NULL, 0, 
    e885a422:	2b813783          	ld	a5,696(sp)
    e885a426:	2b013703          	ld	a4,688(sp)
    e885a42a:	882a                	mv	a6,a0
    e885a42c:	00f508b3          	add	a7,a0,a5
    e885a430:	4681                	li	a3,0
    e885a432:	4601                	li	a2,0
    e885a434:	00068597          	auipc	a1,0x68
    e885a438:	1dc58593          	addi	a1,a1,476 # e88c2610 <__PRETTY_FUNCTION__.9902+0x978>
    e885a43c:	8526                	mv	a0,s1
    e885a43e:	c79f30ef          	jal	ra,e884e0b6 <chacha20_poly1305_encrypt_all_64x64>
					err = TLV8BufferAppend( &tlv, kTLVType_EncryptedData, storage, etlv.len + 16 );
    e885a442:	2b813683          	ld	a3,696(sp)
    e885a446:	7662                	ld	a2,56(sp)
    e885a448:	4595                	li	a1,5
    e885a44a:	06c1                	addi	a3,a3,16
    e885a44c:	1288                	addi	a0,sp,352
    e885a44e:	38d060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a452:	d22a                	sw	a0,36(sp)
					require_noerr( err, exit );
    e885a454:	84051fe3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
					ForgetMem( &storage );
    e885a458:	7562                	ld	a0,56(sp)
    e885a45a:	c501                	beqz	a0,e885a462 <_SetupServerExchange+0x832>
    e885a45c:	6a5210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a460:	fc02                	sd	zero,56(sp)
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e885a462:	8652                	mv	a2,s4
    e885a464:	85ce                	mv	a1,s3
    e885a466:	1288                	addi	a0,sp,352
    e885a468:	4b1060ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885a46c:	d22a                	sw	a0,36(sp)
    e885a46e:	872a                	mv	a4,a0
			require_noerr( err, exit );
    e885a470:	840511e3          	bnez	a0,e8859cb2 <_SetupServerExchange+0x82>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M4 -- verify response\n%?{end}%1{tlv8}\n", 
    e885a474:	6408                	ld	a0,8(s0)
			me->state = kPairSetupStateM5;
    e885a476:	4795                	li	a5,5
    e885a478:	06f40023          	sb	a5,96(s0)
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M4 -- verify response\n%?{end}%1{tlv8}\n", 
    e885a47c:	411c                	lw	a5,0(a0)
    e885a47e:	46f9                	li	a3,30
    e885a480:	d0f6c1e3          	blt	a3,a5,e885a182 <_SetupServerExchange+0x552>
    e885a484:	56fd                	li	a3,-1
    e885a486:	02d78f63          	beq	a5,a3,e885a4c4 <_SetupServerExchange+0x894>
    e885a48a:	6404                	ld	s1,8(s0)
    e885a48c:	46d1                	li	a3,20
    e885a48e:	409c                	lw	a5,0(s1)
    e885a490:	04f6c263          	blt	a3,a5,e885a4d4 <_SetupServerExchange+0x8a4>
    e885a494:	56fd                	li	a3,-1
    e885a496:	00d79a63          	bne	a5,a3,e885a4aa <_SetupServerExchange+0x87a>
    e885a49a:	45d1                	li	a1,20
    e885a49c:	8526                	mv	a0,s1
    e885a49e:	bd5f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a4a2:	0005071b          	sext.w	a4,a0
    e885a4a6:	00173713          	seqz	a4,a4
    e885a4aa:	000a3883          	ld	a7,0(s4)
    e885a4ae:	0009b803          	ld	a6,0(s3)
    e885a4b2:	00043797          	auipc	a5,0x43
    e885a4b6:	20678793          	addi	a5,a5,518 # e889d6b8 <icmp6_param_problem+0x64a>
    e885a4ba:	00068697          	auipc	a3,0x68
    e885a4be:	16668693          	addi	a3,a3,358 # e88c2620 <__PRETTY_FUNCTION__.9902+0x988>
    e885a4c2:	b991                	j	e885a116 <_SetupServerExchange+0x4e6>
    e885a4c4:	45f9                	li	a1,30
    e885a4c6:	e83a                	sd	a4,16(sp)
    e885a4c8:	babf90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a4cc:	6742                	ld	a4,16(sp)
    e885a4ce:	ca050ae3          	beqz	a0,e885a182 <_SetupServerExchange+0x552>
    e885a4d2:	bf65                	j	e885a48a <_SetupServerExchange+0x85a>
    e885a4d4:	4705                	li	a4,1
    e885a4d6:	bfd1                	j	e885a4aa <_SetupServerExchange+0x87a>
			require_action( me->srpSharedSecretPtr,		exit, err = kExecutionStateErr );
    e885a4d8:	20843783          	ld	a5,520(s0)
    e885a4dc:	ca078ce3          	beqz	a5,e885a194 <_SetupServerExchange+0x564>
			require_action( me->srpSharedSecretLen > 0,	exit, err = kExecutionStateErr );
    e885a4e0:	21043783          	ld	a5,528(s0)
    e885a4e4:	ca0788e3          	beqz	a5,e885a194 <_SetupServerExchange+0x564>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M5 -- exchange request\n%?{end}%1{tlv8}\n", 
    e885a4e8:	6408                	ld	a0,8(s0)
    e885a4ea:	4779                	li	a4,30
    e885a4ec:	411c                	lw	a5,0(a0)
    e885a4ee:	04f74f63          	blt	a4,a5,e885a54c <_SetupServerExchange+0x91c>
    e885a4f2:	577d                	li	a4,-1
    e885a4f4:	04e78863          	beq	a5,a4,e885a544 <_SetupServerExchange+0x914>
    e885a4f8:	00843c83          	ld	s9,8(s0)
    e885a4fc:	4751                	li	a4,20
    e885a4fe:	000ca783          	lw	a5,0(s9)
    e885a502:	06f74c63          	blt	a4,a5,e885a57a <_SetupServerExchange+0x94a>
    e885a506:	577d                	li	a4,-1
    e885a508:	00e79963          	bne	a5,a4,e885a51a <_SetupServerExchange+0x8ea>
    e885a50c:	45d1                	li	a1,20
    e885a50e:	8566                	mv	a0,s9
    e885a510:	b63f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a514:	2501                	sext.w	a0,a0
    e885a516:	00153493          	seqz	s1,a0
    e885a51a:	000b089b          	sext.w	a7,s6
    e885a51e:	8856                	mv	a6,s5
    e885a520:	00043797          	auipc	a5,0x43
    e885a524:	19878793          	addi	a5,a5,408 # e889d6b8 <icmp6_param_problem+0x64a>
    e885a528:	8726                	mv	a4,s1
    e885a52a:	00068697          	auipc	a3,0x68
    e885a52e:	13668693          	addi	a3,a3,310 # e88c2660 <__PRETTY_FUNCTION__.9902+0x9c8>
    e885a532:	4679                	li	a2,30
    e885a534:	00068597          	auipc	a1,0x68
    e885a538:	6ec58593          	addi	a1,a1,1772 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885a53c:	8566                	mv	a0,s9
    e885a53e:	f37f90ef          	jal	ra,e8854474 <LogPrintF>
    e885a542:	a029                	j	e885a54c <_SetupServerExchange+0x91c>
    e885a544:	45f9                	li	a1,30
    e885a546:	b2df90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a54a:	f55d                	bnez	a0,e885a4f8 <_SetupServerExchange+0x8c8>
			eptr = TLV8CopyCoalesced( inputPtr, inputEnd, kTLVType_EncryptedData, &elen, NULL, &err );
    e885a54c:	105c                	addi	a5,sp,36
    e885a54e:	85ca                	mv	a1,s2
    e885a550:	4701                	li	a4,0
    e885a552:	0094                	addi	a3,sp,64
    e885a554:	4615                	li	a2,5
    e885a556:	8556                	mv	a0,s5
    e885a558:	1d9060ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e885a55c:	892a                	mv	s2,a0
			require_noerr( err, exit );
    e885a55e:	5792                	lw	a5,36(sp)
	Boolean						done     		= false;
    e885a560:	4481                	li	s1,0
			require_noerr( err, exit );
    e885a562:	f4079a63          	bnez	a5,e8859cb6 <_SetupServerExchange+0x86>
			require_action( elen > 16, exit, err = kSizeErr );
    e885a566:	6786                	ld	a5,64(sp)
    e885a568:	4741                	li	a4,16
    e885a56a:	00f76a63          	bltu	a4,a5,e885a57e <_SetupServerExchange+0x94e>
			require_action( me->peerIdentifierLen > 0, exit, err = kSizeErr );
    e885a56e:	77f9                	lui	a5,0xffffe
    e885a570:	5a97879b          	addiw	a5,a5,1449
			require_action( storage, exit, err = kNoMemoryErr );
    e885a574:	d23e                	sw	a5,36(sp)
    e885a576:	f40ff06f          	j	e8859cb6 <_SetupServerExchange+0x86>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M5 -- exchange request\n%?{end}%1{tlv8}\n", 
    e885a57a:	4485                	li	s1,1
    e885a57c:	bf79                	j	e885a51a <_SetupServerExchange+0x8ea>
			elen -= 16;
    e885a57e:	17c1                	addi	a5,a5,-16
			eend = eptr + elen;
    e885a580:	00f50d33          	add	s10,a0,a5
			err = chacha20_poly1305_decrypt_all_64x64( me->key, (const uint8_t *) "PS-Msg05", NULL, 0, eptr, elen, eptr, eend );
    e885a584:	0da40c93          	addi	s9,s0,218
    e885a588:	882a                	mv	a6,a0
    e885a58a:	872a                	mv	a4,a0
    e885a58c:	88ea                	mv	a7,s10
    e885a58e:	4681                	li	a3,0
    e885a590:	4601                	li	a2,0
    e885a592:	00068597          	auipc	a1,0x68
    e885a596:	d3658593          	addi	a1,a1,-714 # e88c22c8 <__PRETTY_FUNCTION__.9902+0x630>
    e885a59a:	8566                	mv	a0,s9
			elen -= 16;
    e885a59c:	e0be                	sd	a5,64(sp)
			err = chacha20_poly1305_decrypt_all_64x64( me->key, (const uint8_t *) "PS-Msg05", NULL, 0, eptr, elen, eptr, eend );
    e885a59e:	b35f30ef          	jal	ra,e884e0d2 <chacha20_poly1305_decrypt_all_64x64>
    e885a5a2:	d22a                	sw	a0,36(sp)
	Boolean						done     		= false;
    e885a5a4:	4481                	li	s1,0
			require_noerr( err, exit );
    e885a5a6:	f0051863          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e885a5aa:	7c48                	ld	a0,184(s0)
    e885a5ac:	c509                	beqz	a0,e885a5b6 <_SetupServerExchange+0x986>
    e885a5ae:	553210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a5b2:	0a043c23          	sd	zero,184(s0)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e885a5b6:	105c                	addi	a5,sp,36
			ForgetPtrLen( &me->peerIdentifierPtr, &me->peerIdentifierLen );
    e885a5b8:	0c043023          	sd	zero,192(s0)
			me->peerIdentifierPtr = (char*)TLV8CopyCoalesced( eptr, eend, kTLVType_Identifier, &me->peerIdentifierLen, NULL, &err );
    e885a5bc:	4701                	li	a4,0
    e885a5be:	0c040693          	addi	a3,s0,192
    e885a5c2:	4605                	li	a2,1
    e885a5c4:	85ea                	mv	a1,s10
    e885a5c6:	854a                	mv	a0,s2
    e885a5c8:	169060ef          	jal	ra,e8860f30 <TLV8CopyCoalesced>
    e885a5cc:	fc48                	sd	a0,184(s0)
			require_noerr( err, exit );
    e885a5ce:	5792                	lw	a5,36(sp)
	Boolean						done     		= false;
    e885a5d0:	4481                	li	s1,0
			require_noerr( err, exit );
    e885a5d2:	ee079263          	bnez	a5,e8859cb6 <_SetupServerExchange+0x86>
			require_action( me->peerIdentifierLen > 0, exit, err = kSizeErr );
    e885a5d6:	607c                	ld	a5,192(s0)
    e885a5d8:	dbd9                	beqz	a5,e885a56e <_SetupServerExchange+0x93e>
			err = TLV8GetBytes( eptr, eend, kTLVType_PublicKey, 32, 32, me->peerEdPK, NULL, NULL );
    e885a5da:	19a40d93          	addi	s11,s0,410
    e885a5de:	4881                	li	a7,0
    e885a5e0:	4801                	li	a6,0
    e885a5e2:	87ee                	mv	a5,s11
    e885a5e4:	02000713          	li	a4,32
    e885a5e8:	02000693          	li	a3,32
    e885a5ec:	460d                	li	a2,3
    e885a5ee:	85ea                	mv	a1,s10
    e885a5f0:	854a                	mv	a0,s2
    e885a5f2:	78c060ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e885a5f6:	d22a                	sw	a0,36(sp)
	Boolean						done     		= false;
    e885a5f8:	4481                	li	s1,0
			require_noerr( err, exit );
    e885a5fa:	ea051e63          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			err = TLV8GetBytes( eptr, eend, kTLVType_Signature, 64, 64, sig, NULL, NULL );
    e885a5fe:	4881                	li	a7,0
    e885a600:	4801                	li	a6,0
    e885a602:	121c                	addi	a5,sp,288
    e885a604:	04000713          	li	a4,64
    e885a608:	04000693          	li	a3,64
    e885a60c:	4629                	li	a2,10
    e885a60e:	85ea                	mv	a1,s10
    e885a610:	854a                	mv	a0,s2
    e885a612:	76c060ef          	jal	ra,e8860d7e <TLV8GetBytes>
    e885a616:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a618:	e8051f63          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			len = 32 + me->peerIdentifierLen + 32;
    e885a61c:	6068                	ld	a0,192(s0)
    e885a61e:	04050513          	addi	a0,a0,64
    e885a622:	f82a                	sd	a0,48(sp)
			storage = (uint8_t *) malloc( len );
    e885a624:	22a210ef          	jal	ra,e887b84e <my_malloc>
    e885a628:	fc2a                	sd	a0,56(sp)
			require_action( storage, exit, err = kNoMemoryErr );
    e885a62a:	e509                	bnez	a0,e885a634 <_SetupServerExchange+0xa04>
			require_action( storage, exit, err = kNoMemoryErr );
    e885a62c:	77f9                	lui	a5,0xffffe
    e885a62e:	5b87879b          	addiw	a5,a5,1464
    e885a632:	b789                	j	e885a574 <_SetupServerExchange+0x944>
			HKDF_SHA512( me->srpSharedSecretPtr, me->srpSharedSecretLen, 
    e885a634:	88aa                	mv	a7,a0
    e885a636:	21043583          	ld	a1,528(s0)
    e885a63a:	20843503          	ld	a0,520(s0)
    e885a63e:	02000813          	li	a6,32
    e885a642:	00068717          	auipc	a4,0x68
    e885a646:	c4670713          	addi	a4,a4,-954 # e88c2288 <__PRETTY_FUNCTION__.9902+0x5f0>
    e885a64a:	46fd                	li	a3,31
    e885a64c:	47fd                	li	a5,31
    e885a64e:	00068617          	auipc	a2,0x68
    e885a652:	c5a60613          	addi	a2,a2,-934 # e88c22a8 <__PRETTY_FUNCTION__.9902+0x610>
    e885a656:	16d030ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			memcpy( &storage[ 32 ], me->peerIdentifierPtr, me->peerIdentifierLen );
    e885a65a:	7562                	ld	a0,56(sp)
    e885a65c:	6070                	ld	a2,192(s0)
    e885a65e:	7c4c                	ld	a1,184(s0)
    e885a660:	02050513          	addi	a0,a0,32
    e885a664:	53d210ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->peerIdentifierLen ], me->peerEdPK, 32 );
    e885a668:	607c                	ld	a5,192(s0)
    e885a66a:	7562                	ld	a0,56(sp)
    e885a66c:	02000613          	li	a2,32
    e885a670:	02078793          	addi	a5,a5,32 # ffffffffffffe020 <__DRAM0_INF_BASE+0xffffffff0000e020>
    e885a674:	85ee                	mv	a1,s11
    e885a676:	953e                	add	a0,a0,a5
    e885a678:	529210ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			err = Ed25519_verify( storage, len, sig, me->peerEdPK );
    e885a67c:	fea1458b          	ldd	a1,a0,(sp),3,4
    e885a680:	86ee                	mv	a3,s11
    e885a682:	1210                	addi	a2,sp,288
    e885a684:	d2ae40ef          	jal	ra,e883ebae <ed25519_verify_ref>
    e885a688:	d22a                	sw	a0,36(sp)
			if( err )
    e885a68a:	cd25                	beqz	a0,e885a702 <_SetupServerExchange+0xad2>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server bad signature: %#m\n", err );
    e885a68c:	6408                	ld	a0,8(s0)
    e885a68e:	03c00713          	li	a4,60
    e885a692:	411c                	lw	a5,0(a0)
    e885a694:	02f74363          	blt	a4,a5,e885a6ba <_SetupServerExchange+0xa8a>
    e885a698:	577d                	li	a4,-1
    e885a69a:	04e78e63          	beq	a5,a4,e885a6f6 <_SetupServerExchange+0xac6>
    e885a69e:	5712                	lw	a4,36(sp)
    e885a6a0:	6408                	ld	a0,8(s0)
    e885a6a2:	00068697          	auipc	a3,0x68
    e885a6a6:	ffe68693          	addi	a3,a3,-2 # e88c26a0 <__PRETTY_FUNCTION__.9902+0xa08>
    e885a6aa:	03c00613          	li	a2,60
    e885a6ae:	00068597          	auipc	a1,0x68
    e885a6b2:	57258593          	addi	a1,a1,1394 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885a6b6:	dbff90ef          	jal	ra,e8854474 <LogPrintF>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, kTLVError_Authentication );
    e885a6ba:	4609                	li	a2,2
    e885a6bc:	459d                	li	a1,7
    e885a6be:	1288                	addi	a0,sp,352
    e885a6c0:	215060ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e885a6c4:	d22a                	sw	a0,36(sp)
	Boolean						done     		= false;
    e885a6c6:	4481                	li	s1,0
				require_noerr( err, exit );
    e885a6c8:	de051763          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_State, kPairSetupStateM6 );
    e885a6cc:	4619                	li	a2,6
    e885a6ce:	4599                	li	a1,6
    e885a6d0:	1288                	addi	a0,sp,352
    e885a6d2:	203060ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e885a6d6:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885a6d8:	dc051f63          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
				err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e885a6dc:	8652                	mv	a2,s4
    e885a6de:	85ce                	mv	a1,s3
    e885a6e0:	1288                	addi	a0,sp,352
    e885a6e2:	237060ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885a6e6:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885a6e8:	dc051763          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
				_PairingSessionReset( me );
    e885a6ec:	8522                	mv	a0,s0
    e885a6ee:	f4cfc0ef          	jal	ra,e8856e3a <_PairingSessionReset>
				goto exit;
    e885a6f2:	dc4ff06f          	j	e8859cb6 <_SetupServerExchange+0x86>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server bad signature: %#m\n", err );
    e885a6f6:	03c00593          	li	a1,60
    e885a6fa:	979f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a6fe:	dd55                	beqz	a0,e885a6ba <_SetupServerExchange+0xa8a>
    e885a700:	bf79                	j	e885a69e <_SetupServerExchange+0xa6e>
			ForgetMem( &storage );
    e885a702:	7562                	ld	a0,56(sp)
    e885a704:	c501                	beqz	a0,e885a70c <_SetupServerExchange+0xadc>
    e885a706:	3fb210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a70a:	fc02                	sd	zero,56(sp)
			err = PairingSessionSavePeer( me, me->peerIdentifierPtr, me->peerIdentifierLen, me->peerEdPK );
    e885a70c:	6070                	ld	a2,192(s0)
    e885a70e:	7c4c                	ld	a1,184(s0)
    e885a710:	86ee                	mv	a3,s11
    e885a712:	8522                	mv	a0,s0
    e885a714:	d44fe0ef          	jal	ra,e8858c58 <PairingSessionSavePeer>
    e885a718:	d22a                	sw	a0,36(sp)
			if( err )
    e885a71a:	c955                	beqz	a0,e885a7ce <_SetupServerExchange+0xb9e>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server save peer failed: %#m\n", err );
    e885a71c:	6408                	ld	a0,8(s0)
    e885a71e:	03c00713          	li	a4,60
    e885a722:	411c                	lw	a5,0(a0)
    e885a724:	02f74363          	blt	a4,a5,e885a74a <_SetupServerExchange+0xb1a>
    e885a728:	577d                	li	a4,-1
    e885a72a:	08e78463          	beq	a5,a4,e885a7b2 <_SetupServerExchange+0xb82>
    e885a72e:	5712                	lw	a4,36(sp)
    e885a730:	6408                	ld	a0,8(s0)
    e885a732:	00068697          	auipc	a3,0x68
    e885a736:	f9e68693          	addi	a3,a3,-98 # e88c26d0 <__PRETTY_FUNCTION__.9902+0xa38>
    e885a73a:	03c00613          	li	a2,60
    e885a73e:	00068597          	auipc	a1,0x68
    e885a742:	4e258593          	addi	a1,a1,1250 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885a746:	d2ff90ef          	jal	ra,e8854474 <LogPrintF>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, OSStatusToPairingStatus( err ) );
    e885a74a:	5712                	lw	a4,36(sp)
    e885a74c:	77f9                	lui	a5,0xffffe
    e885a74e:	5d478693          	addi	a3,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e885a752:	02d70763          	beq	a4,a3,e885a780 <_SetupServerExchange+0xb50>
    e885a756:	59e78693          	addi	a3,a5,1438
    e885a75a:	06d70263          	beq	a4,a3,e885a7be <_SetupServerExchange+0xb8e>
    e885a75e:	59878693          	addi	a3,a5,1432
    e885a762:	06d70063          	beq	a4,a3,e885a7c2 <_SetupServerExchange+0xb92>
    e885a766:	5b978693          	addi	a3,a5,1465
    e885a76a:	04d70e63          	beq	a4,a3,e885a7c6 <_SetupServerExchange+0xb96>
    e885a76e:	59578693          	addi	a3,a5,1429
    e885a772:	04d70c63          	beq	a4,a3,e885a7ca <_SetupServerExchange+0xb9a>
    e885a776:	59478793          	addi	a5,a5,1428
    e885a77a:	00f71363          	bne	a4,a5,e885a780 <_SetupServerExchange+0xb50>
    e885a77e:	4c19                	li	s8,6
    e885a780:	8662                	mv	a2,s8
    e885a782:	459d                	li	a1,7
    e885a784:	1288                	addi	a0,sp,352
    e885a786:	14f060ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e885a78a:	d22a                	sw	a0,36(sp)
	Boolean						done     		= false;
    e885a78c:	4481                	li	s1,0
				require_noerr( err, exit );
    e885a78e:	d2051463          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_State, kPairSetupStateM6 );
    e885a792:	4619                	li	a2,6
    e885a794:	4599                	li	a1,6
    e885a796:	1288                	addi	a0,sp,352
    e885a798:	13d060ef          	jal	ra,e88610d4 <TLV8BufferAppendUInt64>
    e885a79c:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885a79e:	d0051c63          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
				err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e885a7a2:	8652                	mv	a2,s4
    e885a7a4:	85ce                	mv	a1,s3
    e885a7a6:	1288                	addi	a0,sp,352
    e885a7a8:	171060ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885a7ac:	d22a                	sw	a0,36(sp)
				require_noerr( err, exit );
    e885a7ae:	d08ff06f          	j	e8859cb6 <_SetupServerExchange+0x86>
				pair_ulog( me, kLogLevelWarning, "### Pair-setup server save peer failed: %#m\n", err );
    e885a7b2:	03c00593          	li	a1,60
    e885a7b6:	8bdf90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a7ba:	d941                	beqz	a0,e885a74a <_SetupServerExchange+0xb1a>
    e885a7bc:	bf8d                	j	e885a72e <_SetupServerExchange+0xafe>
				err = TLV8BufferAppendUInt64( &tlv, kTLVType_Error, OSStatusToPairingStatus( err ) );
    e885a7be:	4c09                	li	s8,2
    e885a7c0:	b7c1                	j	e885a780 <_SetupServerExchange+0xb50>
    e885a7c2:	4c0d                	li	s8,3
    e885a7c4:	bf75                	j	e885a780 <_SetupServerExchange+0xb50>
    e885a7c6:	4c11                	li	s8,4
    e885a7c8:	bf65                	j	e885a780 <_SetupServerExchange+0xb50>
    e885a7ca:	4c15                	li	s8,5
    e885a7cc:	bf55                	j	e885a780 <_SetupServerExchange+0xb50>
			me->state = kPairSetupStateM6;
    e885a7ce:	4799                	li	a5,6
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e885a7d0:	6c48                	ld	a0,152(s0)
			me->state = kPairSetupStateM6;
    e885a7d2:	06f40023          	sb	a5,96(s0)
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e885a7d6:	c509                	beqz	a0,e885a7e0 <_SetupServerExchange+0xbb0>
    e885a7d8:	329210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a7dc:	08043c23          	sd	zero,152(s0)
			err = PairingSessionCopyIdentity( me, true, &me->activeIdentifierPtr, me->ourEdPK, me->ourEdSK );
    e885a7e0:	13a40c13          	addi	s8,s0,314
    e885a7e4:	15a40d13          	addi	s10,s0,346
			ForgetPtrLen( &me->activeIdentifierPtr, &me->activeIdentifierLen );
    e885a7e8:	0a043023          	sd	zero,160(s0)
			err = PairingSessionCopyIdentity( me, true, &me->activeIdentifierPtr, me->ourEdPK, me->ourEdSK );
    e885a7ec:	876a                	mv	a4,s10
    e885a7ee:	86e2                	mv	a3,s8
    e885a7f0:	09840613          	addi	a2,s0,152
    e885a7f4:	4585                	li	a1,1
    e885a7f6:	8522                	mv	a0,s0
    e885a7f8:	a58fd0ef          	jal	ra,e8857a50 <PairingSessionCopyIdentity>
    e885a7fc:	d22a                	sw	a0,36(sp)
	Boolean						done     		= false;
    e885a7fe:	4481                	li	s1,0
			require_noerr_quiet( err, exit );
    e885a800:	ca051b63          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			me->activeIdentifierLen = strlen( me->activeIdentifierPtr );
    e885a804:	6c48                	ld	a0,152(s0)
    e885a806:	313210ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885a80a:	7c05350b          	extu	a0,a0,31,0
    e885a80e:	f048                	sd	a0,160(s0)
			require_action( me->activeIdentifierLen > 0, exit, err = kIDErr );
    e885a810:	e509                	bnez	a0,e885a81a <_SetupServerExchange+0xbea>
    e885a812:	77f9                	lui	a5,0xffffe
    e885a814:	5cc7879b          	addiw	a5,a5,1484
    e885a818:	bbb1                	j	e885a574 <_SetupServerExchange+0x944>
			len = 32 + me->activeIdentifierLen + 32;
    e885a81a:	04050513          	addi	a0,a0,64
    e885a81e:	f82a                	sd	a0,48(sp)
			storage = (uint8_t *) malloc( len );
    e885a820:	02e210ef          	jal	ra,e887b84e <my_malloc>
    e885a824:	fc2a                	sd	a0,56(sp)
			require_action( storage, exit, err = kNoMemoryErr );
    e885a826:	be0508e3          	beqz	a0,e885a416 <_SetupServerExchange+0x7e6>
			HKDF_SHA512( me->srpSharedSecretPtr, me->srpSharedSecretLen, 
    e885a82a:	88aa                	mv	a7,a0
    e885a82c:	21043583          	ld	a1,528(s0)
    e885a830:	20843503          	ld	a0,520(s0)
    e885a834:	02000813          	li	a6,32
    e885a838:	00068717          	auipc	a4,0x68
    e885a83c:	b6070713          	addi	a4,a4,-1184 # e88c2398 <__PRETTY_FUNCTION__.9902+0x700>
    e885a840:	46f9                	li	a3,30
    e885a842:	47f9                	li	a5,30
    e885a844:	00068617          	auipc	a2,0x68
    e885a848:	b7460613          	addi	a2,a2,-1164 # e88c23b8 <__PRETTY_FUNCTION__.9902+0x720>
    e885a84c:	776030ef          	jal	ra,e885dfc2 <HKDF_SHA512_compat>
			memcpy( &storage[ 32 ], me->activeIdentifierPtr, me->activeIdentifierLen );
    e885a850:	7562                	ld	a0,56(sp)
    e885a852:	7050                	ld	a2,160(s0)
    e885a854:	6c4c                	ld	a1,152(s0)
    e885a856:	02050513          	addi	a0,a0,32
    e885a85a:	347210ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( &storage[ 32 + me->activeIdentifierLen ], me->ourEdPK, 32 );
    e885a85e:	705c                	ld	a5,160(s0)
    e885a860:	7562                	ld	a0,56(sp)
    e885a862:	02000613          	li	a2,32
    e885a866:	02078793          	addi	a5,a5,32 # ffffffffffffe020 <__DRAM0_INF_BASE+0xffffffff0000e020>
    e885a86a:	85e2                	mv	a1,s8
    e885a86c:	953e                	add	a0,a0,a5
    e885a86e:	333210ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			Ed25519_sign( sig, storage, len, me->ourEdPK, me->ourEdSK );
    e885a872:	feb1460b          	ldd	a2,a1,(sp),3,4
    e885a876:	1208                	addi	a0,sp,288
    e885a878:	876a                	mv	a4,s10
    e885a87a:	86e2                	mv	a3,s8
    e885a87c:	e30e30ef          	jal	ra,e883deac <ed25519_sign_ref>
			ForgetMem( &storage );
    e885a880:	7562                	ld	a0,56(sp)
    e885a882:	c501                	beqz	a0,e885a88a <_SetupServerExchange+0xc5a>
    e885a884:	27d210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a888:	fc02                	sd	zero,56(sp)
			err = TLV8BufferAppend( &etlv, kTLVType_Identifier, me->activeIdentifierPtr, me->activeIdentifierLen );
    e885a88a:	7054                	ld	a3,160(s0)
    e885a88c:	6c50                	ld	a2,152(s0)
    e885a88e:	4585                	li	a1,1
    e885a890:	1d08                	addi	a0,sp,688
    e885a892:	748060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a896:	d22a                	sw	a0,36(sp)
	Boolean						done     		= false;
    e885a898:	4481                	li	s1,0
			require_noerr( err, exit );
    e885a89a:	c0051e63          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			err = TLV8BufferAppend( &etlv, kTLVType_PublicKey, me->ourEdPK, 32 );
    e885a89e:	02000693          	li	a3,32
    e885a8a2:	8662                	mv	a2,s8
    e885a8a4:	458d                	li	a1,3
    e885a8a6:	1d08                	addi	a0,sp,688
    e885a8a8:	732060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a8ac:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a8ae:	c0051463          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			err = TLV8BufferAppend( &etlv, kTLVType_Signature, sig, 64 );
    e885a8b2:	04000693          	li	a3,64
    e885a8b6:	1210                	addi	a2,sp,288
    e885a8b8:	45a9                	li	a1,10
    e885a8ba:	1d08                	addi	a0,sp,688
    e885a8bc:	71e060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a8c0:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a8c2:	be051a63          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			storage = (uint8_t *) malloc( etlv.len + 16 );
    e885a8c6:	2b813503          	ld	a0,696(sp)
    e885a8ca:	0541                	addi	a0,a0,16
    e885a8cc:	783200ef          	jal	ra,e887b84e <my_malloc>
    e885a8d0:	fc2a                	sd	a0,56(sp)
			require_action( storage, exit, err = kNoMemoryErr );
    e885a8d2:	d4050de3          	beqz	a0,e885a62c <_SetupServerExchange+0x9fc>
			chacha20_poly1305_encrypt_all_64x64( me->key, (const uint8_t *) "PS-Msg06", NULL, 0, 
    e885a8d6:	2b813783          	ld	a5,696(sp)
    e885a8da:	2b013703          	ld	a4,688(sp)
    e885a8de:	882a                	mv	a6,a0
    e885a8e0:	00f508b3          	add	a7,a0,a5
    e885a8e4:	4681                	li	a3,0
    e885a8e6:	4601                	li	a2,0
    e885a8e8:	00068597          	auipc	a1,0x68
    e885a8ec:	aa058593          	addi	a1,a1,-1376 # e88c2388 <__PRETTY_FUNCTION__.9902+0x6f0>
    e885a8f0:	8566                	mv	a0,s9
    e885a8f2:	fc4f30ef          	jal	ra,e884e0b6 <chacha20_poly1305_encrypt_all_64x64>
	Boolean						done     		= false;
    e885a8f6:	4481                	li	s1,0
			err = TLV8BufferAppend( &tlv, kTLVType_EncryptedData, storage, etlv.len + 16 );
    e885a8f8:	2b813683          	ld	a3,696(sp)
    e885a8fc:	7662                	ld	a2,56(sp)
    e885a8fe:	4595                	li	a1,5
    e885a900:	06c1                	addi	a3,a3,16
    e885a902:	1288                	addi	a0,sp,352
    e885a904:	6d6060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a908:	d22a                	sw	a0,36(sp)
			require_noerr( err, exit );
    e885a90a:	ba051663          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			ForgetMem( &storage );
    e885a90e:	7562                	ld	a0,56(sp)
    e885a910:	c501                	beqz	a0,e885a918 <_SetupServerExchange+0xce8>
    e885a912:	1ef210ef          	jal	ra,e887c300 <eLIBs_free>
    e885a916:	fc02                	sd	zero,56(sp)
			err = TLV8BufferAppend( &tlv, kTLVType_State, &me->state, sizeof( me->state ) );
    e885a918:	4685                	li	a3,1
    e885a91a:	06040613          	addi	a2,s0,96
    e885a91e:	4599                	li	a1,6
    e885a920:	1288                	addi	a0,sp,352
    e885a922:	6b8060ef          	jal	ra,e8860fda <TLV8BufferAppend>
    e885a926:	d22a                	sw	a0,36(sp)
	Boolean						done     		= false;
    e885a928:	4481                	li	s1,0
			require_noerr( err, exit );
    e885a92a:	b8051663          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			err = TLV8BufferDetach( &tlv, outOutputPtr, outOutputLen );
    e885a92e:	8652                	mv	a2,s4
    e885a930:	85ce                	mv	a1,s3
    e885a932:	1288                	addi	a0,sp,352
    e885a934:	7e4060ef          	jal	ra,e8861118 <TLV8BufferDetach>
    e885a938:	d22a                	sw	a0,36(sp)
    e885a93a:	8c2a                	mv	s8,a0
			require_noerr( err, exit );
    e885a93c:	b6051d63          	bnez	a0,e8859cb6 <_SetupServerExchange+0x86>
			me->state = kPairSetupStateDone;
    e885a940:	479d                	li	a5,7
    e885a942:	06f40023          	sb	a5,96(s0)
			_PairingSessionReset( me );
    e885a946:	8522                	mv	a0,s0
    e885a948:	cf2fc0ef          	jal	ra,e8856e3a <_PairingSessionReset>
	pthread_mutex_lock( &gPairingGlobalLock );
    e885a94c:	0007a517          	auipc	a0,0x7a
    e885a950:	78c50513          	addi	a0,a0,1932 # e88d50d8 <gPairingGlobalLock>
    e885a954:	1ca210ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		gPairingThrottleStartTicks	= 0;
    e885a958:	00089797          	auipc	a5,0x89
    e885a95c:	3e07b423          	sd	zero,1000(a5) # e88e3d40 <gPairingThrottleStartTicks>
	pthread_mutex_unlock( &gPairingGlobalLock );
    e885a960:	0007a517          	auipc	a0,0x7a
    e885a964:	77850513          	addi	a0,a0,1912 # e88d50d8 <gPairingGlobalLock>
		gPairingThrottleCounter		= 0;
    e885a968:	00089797          	auipc	a5,0x89
    e885a96c:	3c07aa23          	sw	zero,980(a5) # e88e3d3c <gPairingThrottleCounter>
		gPairingTries				= 0;
    e885a970:	00089797          	auipc	a5,0x89
    e885a974:	3c07ac23          	sw	zero,984(a5) # e88e3d48 <gPairingTries>
	pthread_mutex_unlock( &gPairingGlobalLock );
    e885a978:	1ea210ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M6 -- exchange response\n%?{end}%1{tlv8}\n", 
    e885a97c:	6408                	ld	a0,8(s0)
    e885a97e:	4779                	li	a4,30
    e885a980:	411c                	lw	a5,0(a0)
    e885a982:	04f74e63          	blt	a4,a5,e885a9de <_SetupServerExchange+0xdae>
    e885a986:	577d                	li	a4,-1
    e885a988:	04e78763          	beq	a5,a4,e885a9d6 <_SetupServerExchange+0xda6>
    e885a98c:	6404                	ld	s1,8(s0)
    e885a98e:	4751                	li	a4,20
    e885a990:	409c                	lw	a5,0(s1)
    e885a992:	06f74f63          	blt	a4,a5,e885aa10 <_SetupServerExchange+0xde0>
    e885a996:	577d                	li	a4,-1
    e885a998:	00e79963          	bne	a5,a4,e885a9aa <_SetupServerExchange+0xd7a>
    e885a99c:	45d1                	li	a1,20
    e885a99e:	8526                	mv	a0,s1
    e885a9a0:	ed2f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a9a4:	2501                	sext.w	a0,a0
    e885a9a6:	00153c13          	seqz	s8,a0
    e885a9aa:	000a3883          	ld	a7,0(s4)
    e885a9ae:	0009b803          	ld	a6,0(s3)
    e885a9b2:	00043797          	auipc	a5,0x43
    e885a9b6:	d0678793          	addi	a5,a5,-762 # e889d6b8 <icmp6_param_problem+0x64a>
    e885a9ba:	8762                	mv	a4,s8
    e885a9bc:	00068697          	auipc	a3,0x68
    e885a9c0:	d4468693          	addi	a3,a3,-700 # e88c2700 <__PRETTY_FUNCTION__.9902+0xa68>
    e885a9c4:	4679                	li	a2,30
    e885a9c6:	00068597          	auipc	a1,0x68
    e885a9ca:	25a58593          	addi	a1,a1,602 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885a9ce:	8526                	mv	a0,s1
    e885a9d0:	aa5f90ef          	jal	ra,e8854474 <LogPrintF>
    e885a9d4:	a029                	j	e885a9de <_SetupServerExchange+0xdae>
    e885a9d6:	45f9                	li	a1,30
    e885a9d8:	e9af90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885a9dc:	f945                	bnez	a0,e885a98c <_SetupServerExchange+0xd5c>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server done -- client authenticated\n" );
    e885a9de:	6408                	ld	a0,8(s0)
    e885a9e0:	4779                	li	a4,30
			done = true;
    e885a9e2:	4485                	li	s1,1
			pair_ulog( me, kLogLevelTrace, "Pair-setup server done -- client authenticated\n" );
    e885a9e4:	411c                	lw	a5,0(a0)
    e885a9e6:	02f74263          	blt	a4,a5,e885aa0a <_SetupServerExchange+0xdda>
    e885a9ea:	577d                	li	a4,-1
    e885a9ec:	02e78463          	beq	a5,a4,e885aa14 <_SetupServerExchange+0xde4>
    e885a9f0:	6408                	ld	a0,8(s0)
    e885a9f2:	00068697          	auipc	a3,0x68
    e885a9f6:	d4e68693          	addi	a3,a3,-690 # e88c2740 <__PRETTY_FUNCTION__.9902+0xaa8>
    e885a9fa:	4679                	li	a2,30
    e885a9fc:	00068597          	auipc	a1,0x68
    e885aa00:	22458593          	addi	a1,a1,548 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885aa04:	a71f90ef          	jal	ra,e8854474 <LogPrintF>
			done = true;
    e885aa08:	4485                	li	s1,1
	err = kNoErr;
    e885aa0a:	d202                	sw	zero,36(sp)
    e885aa0c:	aaaff06f          	j	e8859cb6 <_SetupServerExchange+0x86>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server M6 -- exchange response\n%?{end}%1{tlv8}\n", 
    e885aa10:	4c05                	li	s8,1
    e885aa12:	bf61                	j	e885a9aa <_SetupServerExchange+0xd7a>
			pair_ulog( me, kLogLevelTrace, "Pair-setup server done -- client authenticated\n" );
    e885aa14:	45f9                	li	a1,30
    e885aa16:	e5cf90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885aa1a:	d965                	beqz	a0,e885aa0a <_SetupServerExchange+0xdda>
    e885aa1c:	bfd1                	j	e885a9f0 <_SetupServerExchange+0xdc0>
			pair_ulog( me, kLogLevelWarning, "### Pair-setup server bad state: %d\n", me->state );
    e885aa1e:	411c                	lw	a5,0(a0)
    e885aa20:	03c00713          	li	a4,60
    e885aa24:	baf74163          	blt	a4,a5,e8859dc6 <_SetupServerExchange+0x196>
    e885aa28:	577d                	li	a4,-1
    e885aa2a:	02e78363          	beq	a5,a4,e885aa50 <_SetupServerExchange+0xe20>
    e885aa2e:	06044703          	lbu	a4,96(s0)
    e885aa32:	6408                	ld	a0,8(s0)
    e885aa34:	00068697          	auipc	a3,0x68
    e885aa38:	d3c68693          	addi	a3,a3,-708 # e88c2770 <__PRETTY_FUNCTION__.9902+0xad8>
    e885aa3c:	03c00613          	li	a2,60
    e885aa40:	00068597          	auipc	a1,0x68
    e885aa44:	1e058593          	addi	a1,a1,480 # e88c2c20 <__PRETTY_FUNCTION__.10515>
    e885aa48:	a2df90ef          	jal	ra,e8854474 <LogPrintF>
    e885aa4c:	b7aff06f          	j	e8859dc6 <_SetupServerExchange+0x196>
    e885aa50:	03c00593          	li	a1,60
    e885aa54:	e1ef90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885aa58:	b6050763          	beqz	a0,e8859dc6 <_SetupServerExchange+0x196>
    e885aa5c:	bfc9                	j	e885aa2e <_SetupServerExchange+0xdfe>
		pair_ulog( me, kLogLevelWarning, "### Pair-setup server state %d failed: %#m\n%?{end}%1{tlv8}\n", 
    e885aa5e:	03c00593          	li	a1,60
    e885aa62:	e10f90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885aa66:	ac051163          	bnez	a0,e8859d28 <_SetupServerExchange+0xf8>
}
    e885aa6a:	46813083          	ld	ra,1128(sp)
    e885aa6e:	46013403          	ld	s0,1120(sp)
    e885aa72:	5512                	lw	a0,36(sp)
    e885aa74:	45813483          	ld	s1,1112(sp)
    e885aa78:	45013903          	ld	s2,1104(sp)
    e885aa7c:	44813983          	ld	s3,1096(sp)
    e885aa80:	44013a03          	ld	s4,1088(sp)
    e885aa84:	43813a83          	ld	s5,1080(sp)
    e885aa88:	43013b03          	ld	s6,1072(sp)
    e885aa8c:	42813b83          	ld	s7,1064(sp)
    e885aa90:	42013c03          	ld	s8,1056(sp)
    e885aa94:	41813c83          	ld	s9,1048(sp)
    e885aa98:	41013d03          	ld	s10,1040(sp)
    e885aa9c:	40813d83          	ld	s11,1032(sp)
    e885aaa0:	47010113          	addi	sp,sp,1136
    e885aaa4:	8082                	ret

00000000e885aaa6 <PairingSessionExchange>:
{
    e885aaa6:	711d                	addi	sp,sp,-96
    e885aaa8:	e0ca                	sd	s2,64(sp)
    e885aaaa:	fc4e                	sd	s3,56(sp)
    e885aaac:	f852                	sd	s4,48(sp)
    e885aaae:	e432                	sd	a2,8(sp)
	const uint8_t *		inputPtr		= (const uint8_t *) inInputPtr;
    e885aab0:	e82e                	sd	a1,16(sp)
	err = _ProgressInput( me, &inputPtr, &inInputLen, &inputStorage, &outputPtr, &outputLen, outDone );
    e885aab2:	883e                	mv	a6,a5
{
    e885aab4:	89b6                	mv	s3,a3
    e885aab6:	8a3a                	mv	s4,a4
    e885aab8:	893e                	mv	s2,a5
	err = _ProgressInput( me, &inputPtr, &inInputLen, &inputStorage, &outputPtr, &outputLen, outDone );
    e885aaba:	1018                	addi	a4,sp,32
    e885aabc:	103c                	addi	a5,sp,40
    e885aabe:	0834                	addi	a3,sp,24
    e885aac0:	0030                	addi	a2,sp,8
    e885aac2:	080c                	addi	a1,sp,16
{
    e885aac4:	e8a2                	sd	s0,80(sp)
    e885aac6:	e4a6                	sd	s1,72(sp)
    e885aac8:	ec86                	sd	ra,88(sp)
    e885aaca:	84aa                	mv	s1,a0
	uint8_t *			inputStorage	= NULL;
    e885aacc:	ec02                	sd	zero,24(sp)
	uint8_t *			outputPtr		= NULL;
    e885aace:	f002                	sd	zero,32(sp)
	size_t				outputLen		= 0;
    e885aad0:	f402                	sd	zero,40(sp)
	err = _ProgressInput( me, &inputPtr, &inInputLen, &inputStorage, &outputPtr, &outputLen, outDone );
    e885aad2:	b7dfc0ef          	jal	ra,e885764e <_ProgressInput.constprop.3>
    e885aad6:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e885aad8:	ed05                	bnez	a0,e885ab10 <PairingSessionExchange+0x6a>
	if( outputPtr )
    e885aada:	7782                	ld	a5,32(sp)
    e885aadc:	cb81                	beqz	a5,e885aaec <PairingSessionExchange+0x46>
		*outOutputPtr = outputPtr;
    e885aade:	00f9b023          	sd	a5,0(s3)
		*outOutputLen = outputLen;
    e885aae2:	77a2                	ld	a5,40(sp)
    e885aae4:	00fa3023          	sd	a5,0(s4)
	outputPtr = NULL;
    e885aae8:	f002                	sd	zero,32(sp)
    e885aaea:	a01d                	j	e885ab10 <PairingSessionExchange+0x6a>
	switch( me->type )
    e885aaec:	44bc                	lw	a5,72(s1)
    e885aaee:	4709                	li	a4,2
    e885aaf0:	08e78e63          	beq	a5,a4,e885ab8c <PairingSessionExchange+0xe6>
    e885aaf4:	04f76863          	bltu	a4,a5,e885ab44 <PairingSessionExchange+0x9e>
    e885aaf8:	4705                	li	a4,1
    e885aafa:	06e78463          	beq	a5,a4,e885ab62 <PairingSessionExchange+0xbc>
			pair_ulog( me, kLogLevelWarning, "### Bad pair type: %d\n", me->type );
    e885aafe:	6488                	ld	a0,8(s1)
    e885ab00:	03c00713          	li	a4,60
    e885ab04:	411c                	lw	a5,0(a0)
    e885ab06:	0af75563          	bge	a4,a5,e885abb0 <PairingSessionExchange+0x10a>
			err = kStateErr;
    e885ab0a:	7479                	lui	s0,0xffffe
    e885ab0c:	5cb40413          	addi	s0,s0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
	FreeNullSafe( inputStorage );
    e885ab10:	6562                	ld	a0,24(sp)
    e885ab12:	c119                	beqz	a0,e885ab18 <PairingSessionExchange+0x72>
    e885ab14:	7ec210ef          	jal	ra,e887c300 <eLIBs_free>
	FreeNullSafe( outputPtr );
    e885ab18:	7502                	ld	a0,32(sp)
    e885ab1a:	c119                	beqz	a0,e885ab20 <PairingSessionExchange+0x7a>
    e885ab1c:	7e4210ef          	jal	ra,e887c300 <eLIBs_free>
	if( err && ( err != kAsyncNoErr ) ) _PairingSessionReset( me );
    e885ab20:	c809                	beqz	s0,e885ab32 <PairingSessionExchange+0x8c>
    e885ab22:	77f9                	lui	a5,0xffffe
    e885ab24:	58d78793          	addi	a5,a5,1421 # ffffffffffffe58d <__DRAM0_INF_BASE+0xffffffff0000e58d>
    e885ab28:	00f40563          	beq	s0,a5,e885ab32 <PairingSessionExchange+0x8c>
    e885ab2c:	8526                	mv	a0,s1
    e885ab2e:	b0cfc0ef          	jal	ra,e8856e3a <_PairingSessionReset>
}
    e885ab32:	8522                	mv	a0,s0
    e885ab34:	60e6                	ld	ra,88(sp)
    e885ab36:	6446                	ld	s0,80(sp)
    e885ab38:	64a6                	ld	s1,72(sp)
    e885ab3a:	6906                	ld	s2,64(sp)
    e885ab3c:	79e2                	ld	s3,56(sp)
    e885ab3e:	7a42                	ld	s4,48(sp)
    e885ab40:	6125                	addi	sp,sp,96
    e885ab42:	8082                	ret
	switch( me->type )
    e885ab44:	470d                	li	a4,3
    e885ab46:	04e78c63          	beq	a5,a4,e885ab9e <PairingSessionExchange+0xf8>
    e885ab4a:	4711                	li	a4,4
    e885ab4c:	fae799e3          	bne	a5,a4,e885aafe <PairingSessionExchange+0x58>
			err = _VerifyPairingServerExchange( me, inputPtr, inInputLen, &outputPtr, &outputLen, outDone );
    e885ab50:	6622                	ld	a2,8(sp)
    e885ab52:	65c2                	ld	a1,16(sp)
    e885ab54:	87ca                	mv	a5,s2
    e885ab56:	1038                	addi	a4,sp,40
    e885ab58:	1014                	addi	a3,sp,32
    e885ab5a:	8526                	mv	a0,s1
    e885ab5c:	8f3fd0ef          	jal	ra,e885844e <_VerifyPairingServerExchange>
    e885ab60:	a809                	j	e885ab72 <PairingSessionExchange+0xcc>
			err = _SetupClientExchange( me, inputPtr, inInputLen, &outputPtr, &outputLen, outDone );
    e885ab62:	6622                	ld	a2,8(sp)
    e885ab64:	65c2                	ld	a1,16(sp)
    e885ab66:	87ca                	mv	a5,s2
    e885ab68:	1038                	addi	a4,sp,40
    e885ab6a:	1014                	addi	a3,sp,32
    e885ab6c:	8526                	mv	a0,s1
    e885ab6e:	b2efe0ef          	jal	ra,e8858e9c <_SetupClientExchange>
			err = _VerifyPairingServerExchange( me, inputPtr, inInputLen, &outputPtr, &outputLen, outDone );
    e885ab72:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e885ab74:	fd51                	bnez	a0,e885ab10 <PairingSessionExchange+0x6a>
	err = _ProgressOutput( me, outputPtr, outputLen, outOutputPtr, outOutputLen, outDone );
    e885ab76:	7622                	ld	a2,40(sp)
    e885ab78:	7582                	ld	a1,32(sp)
    e885ab7a:	87ca                	mv	a5,s2
    e885ab7c:	8752                	mv	a4,s4
    e885ab7e:	86ce                	mv	a3,s3
    e885ab80:	8526                	mv	a0,s1
    e885ab82:	c58fc0ef          	jal	ra,e8856fda <_ProgressOutput>
    e885ab86:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e885ab88:	d125                	beqz	a0,e885aae8 <PairingSessionExchange+0x42>
    e885ab8a:	b759                	j	e885ab10 <PairingSessionExchange+0x6a>
			err = _SetupServerExchange( me, inputPtr, inInputLen, &outputPtr, &outputLen, outDone );
    e885ab8c:	6622                	ld	a2,8(sp)
    e885ab8e:	65c2                	ld	a1,16(sp)
    e885ab90:	87ca                	mv	a5,s2
    e885ab92:	1038                	addi	a4,sp,40
    e885ab94:	1014                	addi	a3,sp,32
    e885ab96:	8526                	mv	a0,s1
    e885ab98:	898ff0ef          	jal	ra,e8859c30 <_SetupServerExchange>
    e885ab9c:	bfd9                	j	e885ab72 <PairingSessionExchange+0xcc>
			err = _VerifyPairingClientExchange( me, inputPtr, inInputLen, &outputPtr, &outputLen, outDone );
    e885ab9e:	6622                	ld	a2,8(sp)
    e885aba0:	65c2                	ld	a1,16(sp)
    e885aba2:	87ca                	mv	a5,s2
    e885aba4:	1038                	addi	a4,sp,40
    e885aba6:	1014                	addi	a3,sp,32
    e885aba8:	8526                	mv	a0,s1
    e885abaa:	920fd0ef          	jal	ra,e8857cca <_VerifyPairingClientExchange>
    e885abae:	b7d1                	j	e885ab72 <PairingSessionExchange+0xcc>
			pair_ulog( me, kLogLevelWarning, "### Bad pair type: %d\n", me->type );
    e885abb0:	577d                	li	a4,-1
    e885abb2:	02e78163          	beq	a5,a4,e885abd4 <PairingSessionExchange+0x12e>
    e885abb6:	44b8                	lw	a4,72(s1)
    e885abb8:	6488                	ld	a0,8(s1)
    e885abba:	00067697          	auipc	a3,0x67
    e885abbe:	16e68693          	addi	a3,a3,366 # e88c1d28 <__PRETTY_FUNCTION__.9902+0x90>
    e885abc2:	03c00613          	li	a2,60
    e885abc6:	00068597          	auipc	a1,0x68
    e885abca:	02a58593          	addi	a1,a1,42 # e88c2bf0 <__PRETTY_FUNCTION__.10372>
    e885abce:	8a7f90ef          	jal	ra,e8854474 <LogPrintF>
    e885abd2:	bf25                	j	e885ab0a <PairingSessionExchange+0x64>
    e885abd4:	03c00593          	li	a1,60
    e885abd8:	c9af90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e885abdc:	d51d                	beqz	a0,e885ab0a <PairingSessionExchange+0x64>
    e885abde:	bfe1                	j	e885abb6 <PairingSessionExchange+0x110>

00000000e885abe0 <PrintFWriteHexByteStream>:
//===========================================================================================================================
//	PrintFWriteHexByteStream
//===========================================================================================================================

static int	PrintFWriteHexByteStream( PrintFContext *inContext, Boolean inUppercase, const uint8_t *inData, size_t inSize )
{
    e885abe0:	7119                	addi	sp,sp,-128
    e885abe2:	f8a2                	sd	s0,112(sp)
    e885abe4:	ecce                	sd	s3,88(sp)
    e885abe6:	e4d6                	sd	s5,72(sp)
    e885abe8:	fc86                	sd	ra,120(sp)
    e885abea:	f4a6                	sd	s1,104(sp)
    e885abec:	f0ca                	sd	s2,96(sp)
    e885abee:	e8d2                	sd	s4,80(sp)
    e885abf0:	89aa                	mv	s3,a0
    e885abf2:	8432                	mv	s0,a2
	const char * const		digits = inUppercase ? kHexDigitsUppercase : kHexDigitsLowercase;
    e885abf4:	00048a97          	auipc	s5,0x48
    e885abf8:	5b4a8a93          	addi	s5,s5,1460 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e885abfc:	c589                	beqz	a1,e885ac06 <PrintFWriteHexByteStream+0x26>
    e885abfe:	00045a97          	auipc	s5,0x45
    e885ac02:	262a8a93          	addi	s5,s5,610 # e889fe60 <TWO52+0x268>
	char *					lim;
	size_t					len;
	
	src = inData;
	end = src + inSize;
	dst = buf;
    e885ac06:	858a                	mv	a1,sp
	end = src + inSize;
    e885ac08:	00d40a33          	add	s4,s0,a3
	int						total = 0;
    e885ac0c:	4901                	li	s2,0
    e885ac0e:	84ae                	mv	s1,a1
	lim = dst + sizeof( buf );
	
	while( src < end )
    e885ac10:	03446a63          	bltu	s0,s4,e885ac44 <PrintFWriteHexByteStream+0x64>
		err = inContext->callback( buf, len, inContext );
		require_action_quiet( err >= 0, exit, total = err );
		total += (int) len;
	}
	
exit:
    e885ac14:	854a                	mv	a0,s2
	if( dst != buf )
    e885ac16:	00958e63          	beq	a1,s1,e885ac32 <PrintFWriteHexByteStream+0x52>
		err = inContext->callback( buf, len, inContext );
    e885ac1a:	0009b783          	ld	a5,0(s3)
		len = (size_t)( dst - buf );
    e885ac1e:	40958433          	sub	s0,a1,s1
		err = inContext->callback( buf, len, inContext );
    e885ac22:	864e                	mv	a2,s3
    e885ac24:	85a2                	mv	a1,s0
    e885ac26:	8526                	mv	a0,s1
    e885ac28:	9782                	jalr	a5
		require_action_quiet( err >= 0, exit, total = err );
    e885ac2a:	00054463          	bltz	a0,e885ac32 <PrintFWriteHexByteStream+0x52>
		total += (int) len;
    e885ac2e:	0124053b          	addw	a0,s0,s2
	return( total );
}
    e885ac32:	70e6                	ld	ra,120(sp)
    e885ac34:	7446                	ld	s0,112(sp)
    e885ac36:	74a6                	ld	s1,104(sp)
    e885ac38:	7906                	ld	s2,96(sp)
    e885ac3a:	69e6                	ld	s3,88(sp)
    e885ac3c:	6a46                	ld	s4,80(sp)
    e885ac3e:	6aa6                	ld	s5,72(sp)
    e885ac40:	6109                	addi	sp,sp,128
    e885ac42:	8082                	ret
		if( dst == lim )
    e885ac44:	009c                	addi	a5,sp,64
    e885ac46:	00f59e63          	bne	a1,a5,e885ac62 <PrintFWriteHexByteStream+0x82>
			err = inContext->callback( buf, len, inContext );
    e885ac4a:	0009b783          	ld	a5,0(s3)
    e885ac4e:	864e                	mv	a2,s3
    e885ac50:	04000593          	li	a1,64
    e885ac54:	8526                	mv	a0,s1
    e885ac56:	9782                	jalr	a5
			require_action_quiet( err >= 0, exit, total = err );
    e885ac58:	fc054de3          	bltz	a0,e885ac32 <PrintFWriteHexByteStream+0x52>
			total += (int) len;
    e885ac5c:	0409091b          	addiw	s2,s2,64
			dst = buf;
    e885ac60:	85a6                	mv	a1,s1
		b = *src++;
    e885ac62:	9814478b          	lbuia	a5,(s0),1,0
		*dst++ = digits[ ( b >> 4 ) & 0x0F ];
    e885ac66:	0047d713          	srli	a4,a5,0x4
    e885ac6a:	80eac68b          	lrbu	a3,s5,a4,0
		*dst++ = digits[   b        & 0x0F ];
    e885ac6e:	8bbd                	andi	a5,a5,15
		*dst++ = digits[ ( b >> 4 ) & 0x0F ];
    e885ac70:	872e                	mv	a4,a1
		*dst++ = digits[   b        & 0x0F ];
    e885ac72:	80fac78b          	lrbu	a5,s5,a5,0
		*dst++ = digits[ ( b >> 4 ) & 0x0F ];
    e885ac76:	1827568b          	sbia	a3,(a4),2,0
		*dst++ = digits[   b        & 0x0F ];
    e885ac7a:	00f580a3          	sb	a5,1(a1)
    e885ac7e:	85ba                	mv	a1,a4
    e885ac80:	bf41                	j	e885ac10 <PrintFWriteHexByteStream+0x30>

00000000e885ac82 <PrintFWriteText>:
//===========================================================================================================================
//	PrintFWriteText
//===========================================================================================================================

static int	PrintFWriteText( PrintFContext *inContext, PrintFFormat *inFormat, const char *inText, size_t inSize )
{
    e885ac82:	715d                	addi	sp,sp,-80
    e885ac84:	e0a2                	sd	s0,64(sp)
    e885ac86:	fc26                	sd	s1,56(sp)
    e885ac88:	f44e                	sd	s3,40(sp)
    e885ac8a:	f052                	sd	s4,32(sp)
    e885ac8c:	ec56                	sd	s5,24(sp)
    e885ac8e:	e85a                	sd	s6,16(sp)
    e885ac90:	e486                	sd	ra,72(sp)
    e885ac92:	f84a                	sd	s2,48(sp)
    e885ac94:	e45e                	sd	s7,8(sp)
	int		total = 0;
	int		err;
	int		n;
	
	n = (int) inSize;
	if( inFormat->prefix != '\0' ) n += 1;
    e885ac96:	0195c783          	lbu	a5,25(a1)
	n = (int) inSize;
    e885ac9a:	00068a1b          	sext.w	s4,a3
{
    e885ac9e:	84aa                	mv	s1,a0
    e885aca0:	842e                	mv	s0,a1
    e885aca2:	8ab2                	mv	s5,a2
    e885aca4:	8b36                	mv	s6,a3
    e885aca6:	89d2                	mv	s3,s4
	if( inFormat->prefix != '\0' ) n += 1;
    e885aca8:	c399                	beqz	a5,e885acae <PrintFWriteText+0x2c>
    e885acaa:	001a099b          	addiw	s3,s4,1
	if( inFormat->suffix != '\0' ) n += 1;
    e885acae:	01a44783          	lbu	a5,26(s0)
    e885acb2:	c391                	beqz	a5,e885acb6 <PrintFWriteText+0x34>
    e885acb4:	2985                	addiw	s3,s3,1
	
	// Pad on the left.
	
	if( !inFormat->leftJustify && ( n < (int) inFormat->fieldWidth ) )
    e885acb6:	00044783          	lbu	a5,0(s0)
    e885acba:	8b85                	andi	a5,a5,1
    e885acbc:	e3cd                	bnez	a5,e885ad5e <PrintFWriteText+0xdc>
    e885acbe:	441c                	lw	a5,8(s0)
	int		total = 0;
    e885acc0:	4901                	li	s2,0
	if( !inFormat->leftJustify && ( n < (int) inFormat->fieldWidth ) )
    e885acc2:	02f9d363          	bge	s3,a5,e885ace8 <PrintFWriteText+0x66>
	{
		do
		{
			err = inContext->callback( " ", 1, inContext );
    e885acc6:	0004eb97          	auipc	s7,0x4e
    e885acca:	432b8b93          	addi	s7,s7,1074 # e88a90f8 <hexValues.12413+0x1148>
    e885acce:	609c                	ld	a5,0(s1)
    e885acd0:	8626                	mv	a2,s1
    e885acd2:	4585                	li	a1,1
    e885acd4:	855e                	mv	a0,s7
    e885acd6:	9782                	jalr	a5
			if( err < 0 ) goto error;
    e885acd8:	06054863          	bltz	a0,e885ad48 <PrintFWriteText+0xc6>
			total += 1;
			
		}	while( n < (int) --inFormat->fieldWidth );
    e885acdc:	441c                	lw	a5,8(s0)
			total += 1;
    e885acde:	2905                	addiw	s2,s2,1
		}	while( n < (int) --inFormat->fieldWidth );
    e885ace0:	37fd                	addiw	a5,a5,-1
    e885ace2:	c41c                	sw	a5,8(s0)
    e885ace4:	fef9c5e3          	blt	s3,a5,e885acce <PrintFWriteText+0x4c>
	}
	
	// Write the prefix (if any).
	
	if( inFormat->prefix != '\0' )
    e885ace8:	01944783          	lbu	a5,25(s0)
    e885acec:	cb91                	beqz	a5,e885ad00 <PrintFWriteText+0x7e>
	{
		err = inContext->callback( &inFormat->prefix, 1, inContext );
    e885acee:	609c                	ld	a5,0(s1)
    e885acf0:	8626                	mv	a2,s1
    e885acf2:	4585                	li	a1,1
    e885acf4:	01940513          	addi	a0,s0,25
    e885acf8:	9782                	jalr	a5
		if( err < 0 ) goto error;
    e885acfa:	04054763          	bltz	a0,e885ad48 <PrintFWriteText+0xc6>
		total += 1;
    e885acfe:	2905                	addiw	s2,s2,1
	}
	
	// Write the actual text.
	
	err = inContext->callback( inText, inSize, inContext );
    e885ad00:	609c                	ld	a5,0(s1)
    e885ad02:	8626                	mv	a2,s1
    e885ad04:	85da                	mv	a1,s6
    e885ad06:	8556                	mv	a0,s5
    e885ad08:	9782                	jalr	a5
	if( err < 0 ) goto error;
    e885ad0a:	02054f63          	bltz	a0,e885ad48 <PrintFWriteText+0xc6>
	total += (int) inSize;
	
	// Write the suffix (if any).
	
	if( inFormat->suffix != '\0' )
    e885ad0e:	01a44703          	lbu	a4,26(s0)
	total += (int) inSize;
    e885ad12:	014907bb          	addw	a5,s2,s4
    e885ad16:	893e                	mv	s2,a5
	if( inFormat->suffix != '\0' )
    e885ad18:	cb19                	beqz	a4,e885ad2e <PrintFWriteText+0xac>
	{
		err = inContext->callback( &inFormat->suffix, 1, inContext );
    e885ad1a:	609c                	ld	a5,0(s1)
    e885ad1c:	8626                	mv	a2,s1
    e885ad1e:	4585                	li	a1,1
    e885ad20:	01a40513          	addi	a0,s0,26
    e885ad24:	9782                	jalr	a5
		if( err < 0 ) goto error;
    e885ad26:	02054163          	bltz	a0,e885ad48 <PrintFWriteText+0xc6>
		total += 1;
    e885ad2a:	0019079b          	addiw	a5,s2,1
	int		total = 0;
    e885ad2e:	893e                	mv	s2,a5
    e885ad30:	40f989bb          	subw	s3,s3,a5
	
	// Pad on the right.
	
	for( ; n < (int) inFormat->fieldWidth; ++n )
	{
		err = inContext->callback( " ", 1, inContext );
    e885ad34:	0004ea17          	auipc	s4,0x4e
    e885ad38:	3c4a0a13          	addi	s4,s4,964 # e88a90f8 <hexValues.12413+0x1148>
	for( ; n < (int) inFormat->fieldWidth; ++n )
    e885ad3c:	4418                	lw	a4,8(s0)
    e885ad3e:	012987bb          	addw	a5,s3,s2
    e885ad42:	02e7c063          	blt	a5,a4,e885ad62 <PrintFWriteText+0xe0>
    e885ad46:	854a                	mv	a0,s2
	
	return( total );

error:
	return( err );
}
    e885ad48:	60a6                	ld	ra,72(sp)
    e885ad4a:	6406                	ld	s0,64(sp)
    e885ad4c:	74e2                	ld	s1,56(sp)
    e885ad4e:	7942                	ld	s2,48(sp)
    e885ad50:	79a2                	ld	s3,40(sp)
    e885ad52:	7a02                	ld	s4,32(sp)
    e885ad54:	6ae2                	ld	s5,24(sp)
    e885ad56:	6b42                	ld	s6,16(sp)
    e885ad58:	6ba2                	ld	s7,8(sp)
    e885ad5a:	6161                	addi	sp,sp,80
    e885ad5c:	8082                	ret
	int		total = 0;
    e885ad5e:	4901                	li	s2,0
    e885ad60:	b761                	j	e885ace8 <PrintFWriteText+0x66>
		err = inContext->callback( " ", 1, inContext );
    e885ad62:	609c                	ld	a5,0(s1)
    e885ad64:	8626                	mv	a2,s1
    e885ad66:	4585                	li	a1,1
    e885ad68:	8552                	mv	a0,s4
    e885ad6a:	9782                	jalr	a5
		if( err < 0 ) goto error;
    e885ad6c:	fc054ee3          	bltz	a0,e885ad48 <PrintFWriteText+0xc6>
		total += 1;
    e885ad70:	2905                	addiw	s2,s2,1
	for( ; n < (int) inFormat->fieldWidth; ++n )
    e885ad72:	b7e9                	j	e885ad3c <PrintFWriteText+0xba>

00000000e885ad74 <PrintFCallBackUserCallBack>:
//	PrintFCallBackUserCallBack
//===========================================================================================================================

static int	PrintFCallBackUserCallBack( const char *inStr, size_t inSize, PrintFContext *inContext )
{
	return( inContext->userCallBack( inStr, inSize, inContext->userContext ) );
    e885ad74:	02063303          	ld	t1,32(a2)
    e885ad78:	7610                	ld	a2,40(a2)
    e885ad7a:	8302                	jr	t1

00000000e885ad7c <PrintFCallBackFixedString>:
{
    e885ad7c:	1101                	addi	sp,sp,-32
    e885ad7e:	e826                	sd	s1,16(sp)
    e885ad80:	ec06                	sd	ra,24(sp)
    e885ad82:	e422                	sd	s0,8(sp)
	n = inContext->reservedSize - inContext->usedSize;
    e885ad84:	fa86470b          	ldd	a4,s0,(a2),1,4
{
    e885ad88:	84b2                	mv	s1,a2
		while( ( n > 0 ) && ( ( inStr[ n ] & 0xC0 ) == 0x80 ) ) --n;
    e885ad8a:	08000693          	li	a3,128
	n = inContext->reservedSize - inContext->usedSize;
    e885ad8e:	8c19                	sub	s0,s0,a4
	if( inSize > n )
    e885ad90:	00b46763          	bltu	s0,a1,e885ad9e <PrintFCallBackFixedString+0x22>
	if( inSize > 0 ) memcpy( inContext->str + inContext->usedSize, inStr, inSize );
    e885ad94:	4401                	li	s0,0
    e885ad96:	c195                	beqz	a1,e885adba <PrintFCallBackFixedString+0x3e>
    e885ad98:	842e                	mv	s0,a1
    e885ad9a:	a809                	j	e885adac <PrintFCallBackFixedString+0x30>
		while( ( n > 0 ) && ( ( inStr[ n ] & 0xC0 ) == 0x80 ) ) --n;
    e885ad9c:	147d                	addi	s0,s0,-1
    e885ad9e:	cc11                	beqz	s0,e885adba <PrintFCallBackFixedString+0x3e>
    e885ada0:	8085478b          	lrbu	a5,a0,s0,0
    e885ada4:	0c07f793          	andi	a5,a5,192
    e885ada8:	fed78ae3          	beq	a5,a3,e885ad9c <PrintFCallBackFixedString+0x20>
	if( inSize > 0 ) memcpy( inContext->str + inContext->usedSize, inStr, inSize );
    e885adac:	649c                	ld	a5,8(s1)
    e885adae:	85aa                	mv	a1,a0
    e885adb0:	8622                	mv	a2,s0
    e885adb2:	00e78533          	add	a0,a5,a4
    e885adb6:	5ea210ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	inContext->usedSize += inSize;
    e885adba:	689c                	ld	a5,16(s1)
}
    e885adbc:	0004051b          	sext.w	a0,s0
    e885adc0:	60e2                	ld	ra,24(sp)
	inContext->usedSize += inSize;
    e885adc2:	97a2                	add	a5,a5,s0
}
    e885adc4:	6422                	ld	s0,8(sp)
	inContext->usedSize += inSize;
    e885adc6:	e89c                	sd	a5,16(s1)
}
    e885adc8:	64c2                	ld	s1,16(sp)
    e885adca:	6105                	addi	sp,sp,32
    e885adcc:	8082                	ret

00000000e885adce <PrintFCallBackAllocatedString>:
{
    e885adce:	7179                	addi	sp,sp,-48
    e885add0:	f891540b          	sdd	s0,s1,(sp),0,4
    e885add4:	fb31590b          	sdd	s2,s3,(sp),1,4
    e885add8:	f052                	sd	s4,32(sp)
    e885adda:	f406                	sd	ra,40(sp)
	n = inContext->usedSize + inSize;
    e885addc:	6a1c                	ld	a5,16(a2)
	if( n > inContext->reservedSize )
    e885adde:	6e18                	ld	a4,24(a2)
{
    e885ade0:	8a2a                	mv	s4,a0
	n = inContext->usedSize + inSize;
    e885ade2:	97ae                	add	a5,a5,a1
{
    e885ade4:	84ae                	mv	s1,a1
    e885ade6:	8432                	mv	s0,a2
	if( n > inContext->reservedSize )
    e885ade8:	04f77063          	bgeu	a4,a5,e885ae28 <PrintFCallBackAllocatedString+0x5a>
		if( n < 256 ) n = 256;
    e885adec:	0ff00713          	li	a4,255
    e885adf0:	10000913          	li	s2,256
    e885adf4:	00f77a63          	bgeu	a4,a5,e885ae08 <PrintFCallBackAllocatedString+0x3a>
		else		  n = ( n + 1023 ) & ~1023U;
    e885adf8:	4905                	li	s2,1
    e885adfa:	1902                	slli	s2,s2,0x20
    e885adfc:	3ff78793          	addi	a5,a5,1023
    e885ae00:	c0090913          	addi	s2,s2,-1024
    e885ae04:	0127f933          	and	s2,a5,s2
			tmp = (char *) malloc( n );
    e885ae08:	854a                	mv	a0,s2
    e885ae0a:	245200ef          	jal	ra,e887b84e <my_malloc>
    e885ae0e:	89aa                	mv	s3,a0
			require_action( tmp, exit, result = kNoMemoryErr );
    e885ae10:	c121                	beqz	a0,e885ae50 <PrintFCallBackAllocatedString+0x82>
			memcpy( tmp, inContext->str, inContext->usedSize );
    e885ae12:	6810                	ld	a2,16(s0)
    e885ae14:	640c                	ld	a1,8(s0)
    e885ae16:	58a210ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			free( inContext->str );
    e885ae1a:	6408                	ld	a0,8(s0)
    e885ae1c:	4e4210ef          	jal	ra,e887c300 <eLIBs_free>
			inContext->str = tmp;
    e885ae20:	01343423          	sd	s3,8(s0)
			inContext->reservedSize = n;
    e885ae24:	01243c23          	sd	s2,24(s0)
	memcpy( inContext->str + inContext->usedSize, inStr, inSize );
    e885ae28:	681c                	ld	a5,16(s0)
    e885ae2a:	6408                	ld	a0,8(s0)
    e885ae2c:	8626                	mv	a2,s1
    e885ae2e:	85d2                	mv	a1,s4
    e885ae30:	953e                	add	a0,a0,a5
    e885ae32:	56e210ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	inContext->usedSize += inSize;
    e885ae36:	681c                	ld	a5,16(s0)
	result = (int) inSize;
    e885ae38:	0004851b          	sext.w	a0,s1
	inContext->usedSize += inSize;
    e885ae3c:	97a6                	add	a5,a5,s1
    e885ae3e:	e81c                	sd	a5,16(s0)
}
    e885ae40:	70a2                	ld	ra,40(sp)
    e885ae42:	f891440b          	ldd	s0,s1,(sp),0,4
    e885ae46:	7a02                	ld	s4,32(sp)
    e885ae48:	fb31490b          	ldd	s2,s3,(sp),1,4
    e885ae4c:	6145                	addi	sp,sp,48
    e885ae4e:	8082                	ret
			require_action( tmp, exit, result = kNoMemoryErr );
    e885ae50:	7579                	lui	a0,0xffffe
    e885ae52:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e885ae56:	b7ed                	j	e885ae40 <PrintFCallBackAllocatedString+0x72>

00000000e885ae58 <PrintFCoreVAList>:
{
    e885ae58:	d9010113          	addi	sp,sp,-624
    e885ae5c:	26813023          	sd	s0,608(sp)
    e885ae60:	24913c23          	sd	s1,600(sp)
    e885ae64:	25213823          	sd	s2,592(sp)
    e885ae68:	25413023          	sd	s4,576(sp)
    e885ae6c:	23513c23          	sd	s5,568(sp)
    e885ae70:	23613823          	sd	s6,560(sp)
    e885ae74:	26113423          	sd	ra,616(sp)
    e885ae78:	25313423          	sd	s3,584(sp)
    e885ae7c:	23713423          	sd	s7,552(sp)
    e885ae80:	23813023          	sd	s8,544(sp)
    e885ae84:	21913c23          	sd	s9,536(sp)
    e885ae88:	21a13823          	sd	s10,528(sp)
    e885ae8c:	21b13423          	sd	s11,520(sp)
	for( c = *fmt; ; c = *++fmt )
    e885ae90:	0005c983          	lbu	s3,0(a1)
				if( F.hSize || F.lSize ) { err = -1; goto error; };
    e885ae94:	01000b37          	lui	s6,0x1000
{
    e885ae98:	84aa                	mv	s1,a0
    e885ae9a:	8432                	mv	s0,a2
    e885ae9c:	852e                	mv	a0,a1
	int					total = 0;
    e885ae9e:	4901                	li	s2,0
				if( F.hSize || F.lSize ) { err = -1; goto error; };
    e885aea0:	f00b0b13          	addi	s6,s6,-256 # ffff00 <memcmp-0xe7800100>
		err = PrintFWriteText( inContext, &F, s, (size_t) i );
    e885aea4:	09010a93          	addi	s5,sp,144
    e885aea8:	1fc10a13          	addi	s4,sp,508
		while( ( c != '\0' ) && ( c != '%' ) ) c = *++fmt;
    e885aeac:	8baa                	mv	s7,a0
    e885aeae:	02500793          	li	a5,37
    e885aeb2:	00099463          	bnez	s3,e885aeba <PrintFCoreVAList+0x62>
    e885aeb6:	68a0106f          	j	e885c540 <PrintFCoreVAList+0x16e8>
    e885aeba:	06f99163          	bne	s3,a5,e885af1c <PrintFCoreVAList+0xc4>
		if( fmt != src )
    e885aebe:	03750063          	beq	a0,s7,e885aede <PrintFCoreVAList+0x86>
			err = inContext->callback( src, (size_t) i, inContext );
    e885aec2:	609c                	ld	a5,0(s1)
			i = (int)( fmt - src );
    e885aec4:	40ab8cbb          	subw	s9,s7,a0
			err = inContext->callback( src, (size_t) i, inContext );
    e885aec8:	8626                	mv	a2,s1
    e885aeca:	85e6                	mv	a1,s9
    e885aecc:	9782                	jalr	a5
    e885aece:	8d2a                	mv	s10,a0
			if( err < 0 ) goto error;
    e885aed0:	1c054263          	bltz	a0,e885b094 <PrintFCoreVAList+0x23c>
			total += i;
    e885aed4:	01990d3b          	addw	s10,s2,s9
		if( c == '\0' ) break;
    e885aed8:	1a098e63          	beqz	s3,e885b094 <PrintFCoreVAList+0x23c>
			total += i;
    e885aedc:	896a                	mv	s2,s10
		F = kPrintFFormatDefault;
    e885aede:	e902                	sd	zero,144(sp)
    e885aee0:	ed02                	sd	zero,152(sp)
    e885aee2:	f102                	sd	zero,160(sp)
    e885aee4:	f502                	sd	zero,168(sp)
			if(      c == '-' )  F.leftJustify	= 1;
    e885aee6:	02d00593          	li	a1,45
			else if( c == '+' )  F.forceSign	= 1;
    e885aeea:	02b00513          	li	a0,43
			else if( c == ' ' )  F.sign			= ' ';
    e885aeee:	02000613          	li	a2,32
			else if( c == '#' )  F.altForm 	   += 1;
    e885aef2:	02300813          	li	a6,35
			else if( c == '0' )  F.zeroPad		= 1;
    e885aef6:	03000893          	li	a7,48
			else if( c == '\'' ) F.group	   += 1;
    e885aefa:	02700313          	li	t1,39
			else if( c == '?' )  F.suppress		= !va_arg( vaArgs.args, int );
    e885aefe:	03f00e13          	li	t3,63
			c = *++fmt;
    e885af02:	001bc683          	lbu	a3,1(s7)
    e885af06:	001b8793          	addi	a5,s7,1
			if(      c == '-' )  F.leftJustify	= 1;
    e885af0a:	00b69c63          	bne	a3,a1,e885af22 <PrintFCoreVAList+0xca>
    e885af0e:	09014703          	lbu	a4,144(sp)
    e885af12:	00176713          	ori	a4,a4,1
			else if( c == '0' )  F.zeroPad		= 1;
    e885af16:	08e10823          	sb	a4,144(sp)
    e885af1a:	a839                	j	e885af38 <PrintFCoreVAList+0xe0>
		while( ( c != '\0' ) && ( c != '%' ) ) c = *++fmt;
    e885af1c:	881bc98b          	lbuib	s3,(s7),1,0
    e885af20:	bf49                	j	e885aeb2 <PrintFCoreVAList+0x5a>
			else if( c == '+' )  F.forceSign	= 1;
    e885af22:	00a69763          	bne	a3,a0,e885af30 <PrintFCoreVAList+0xd8>
    e885af26:	09014703          	lbu	a4,144(sp)
    e885af2a:	00276713          	ori	a4,a4,2
    e885af2e:	b7e5                	j	e885af16 <PrintFCoreVAList+0xbe>
			else if( c == ' ' )  F.sign			= ' ';
    e885af30:	00c69663          	bne	a3,a2,e885af3c <PrintFCoreVAList+0xe4>
    e885af34:	08c10a23          	sb	a2,148(sp)
			c = *++fmt;
    e885af38:	8bbe                	mv	s7,a5
    e885af3a:	b7e1                	j	e885af02 <PrintFCoreVAList+0xaa>
			else if( c == '#' )  F.altForm 	   += 1;
    e885af3c:	01069863          	bne	a3,a6,e885af4c <PrintFCoreVAList+0xf4>
    e885af40:	09314703          	lbu	a4,147(sp)
    e885af44:	2705                	addiw	a4,a4,1
    e885af46:	08e109a3          	sb	a4,147(sp)
    e885af4a:	b7fd                	j	e885af38 <PrintFCoreVAList+0xe0>
			else if( c == '0' )  F.zeroPad		= 1;
    e885af4c:	01169763          	bne	a3,a7,e885af5a <PrintFCoreVAList+0x102>
    e885af50:	09014703          	lbu	a4,144(sp)
    e885af54:	00476713          	ori	a4,a4,4
    e885af58:	bf7d                	j	e885af16 <PrintFCoreVAList+0xbe>
			else if( c == '\'' ) F.group	   += 1;
    e885af5a:	00669863          	bne	a3,t1,e885af6a <PrintFCoreVAList+0x112>
    e885af5e:	0a814703          	lbu	a4,168(sp)
    e885af62:	2705                	addiw	a4,a4,1
    e885af64:	0ae10423          	sb	a4,168(sp)
    e885af68:	bfc1                	j	e885af38 <PrintFCoreVAList+0xe0>
			else if( c == '?' )  F.suppress		= !va_arg( vaArgs.args, int );
    e885af6a:	01c69c63          	bne	a3,t3,e885af82 <PrintFCoreVAList+0x12a>
    e885af6e:	4014                	lw	a3,0(s0)
    e885af70:	09014703          	lbu	a4,144(sp)
    e885af74:	0421                	addi	s0,s0,8
    e885af76:	0016b693          	seqz	a3,a3
    e885af7a:	9b3d                	andi	a4,a4,-17
    e885af7c:	0692                	slli	a3,a3,0x4
    e885af7e:	8f55                	or	a4,a4,a3
    e885af80:	bf59                	j	e885af16 <PrintFCoreVAList+0xbe>
		if( c == '*' )
    e885af82:	02a00713          	li	a4,42
    e885af86:	00e68d63          	beq	a3,a4,e885afa0 <PrintFCoreVAList+0x148>
    e885af8a:	476a                	lw	a4,152(sp)
    e885af8c:	4601                	li	a2,0
			for( ; ( c >= '0' ) && ( c <= '9' ); c = *++fmt )
    e885af8e:	45a5                	li	a1,9
				F.fieldWidth = ( 10 * F.fieldWidth ) + ( c - '0' );
    e885af90:	4829                	li	a6,10
			for( ; ( c >= '0' ) && ( c <= '9' ); c = *++fmt )
    e885af92:	fd06851b          	addiw	a0,a3,-48
    e885af96:	04a5fd63          	bgeu	a1,a0,e885aff0 <PrintFCoreVAList+0x198>
    e885af9a:	c60d                	beqz	a2,e885afc4 <PrintFCoreVAList+0x16c>
    e885af9c:	cd3a                	sw	a4,152(sp)
    e885af9e:	a01d                	j	e885afc4 <PrintFCoreVAList+0x16c>
			i = va_arg( vaArgs.args, int );
    e885afa0:	4018                	lw	a4,0(s0)
    e885afa2:	0421                	addi	s0,s0,8
			if( i < 0 )
    e885afa4:	00075b63          	bgez	a4,e885afba <PrintFCoreVAList+0x162>
				F.leftJustify = 1;
    e885afa8:	09014683          	lbu	a3,144(sp)
				i = -i;
    e885afac:	40e0073b          	negw	a4,a4
    e885afb0:	2701                	sext.w	a4,a4
				F.leftJustify = 1;
    e885afb2:	0016e693          	ori	a3,a3,1
    e885afb6:	08d10823          	sb	a3,144(sp)
			c = *++fmt;
    e885afba:	0017c683          	lbu	a3,1(a5)
			F.fieldWidth = (unsigned int) i;
    e885afbe:	cd3a                	sw	a4,152(sp)
			c = *++fmt;
    e885afc0:	002b8793          	addi	a5,s7,2
		if( c == '.' )
    e885afc4:	02e00713          	li	a4,46
    e885afc8:	04e69a63          	bne	a3,a4,e885b01c <PrintFCoreVAList+0x1c4>
			c = *++fmt;
    e885afcc:	0017c683          	lbu	a3,1(a5)
			if( c == '*' )
    e885afd0:	02a00713          	li	a4,42
    e885afd4:	02e68763          	beq	a3,a4,e885b002 <PrintFCoreVAList+0x1aa>
    e885afd8:	770a                	ld	a4,160(sp)
			c = *++fmt;
    e885afda:	0785                	addi	a5,a5,1
    e885afdc:	4601                	li	a2,0
				for( ; ( c >= '0' ) && ( c <= '9' ); c = *++fmt )
    e885afde:	4525                	li	a0,9
					F.precision = ( 10 * F.precision ) + ( c - '0' );
    e885afe0:	4829                	li	a6,10
				for( ; ( c >= '0' ) && ( c <= '9' ); c = *++fmt )
    e885afe2:	fd06859b          	addiw	a1,a3,-48
    e885afe6:	06b57863          	bgeu	a0,a1,e885b056 <PrintFCoreVAList+0x1fe>
    e885afea:	c21d                	beqz	a2,e885b010 <PrintFCoreVAList+0x1b8>
    e885afec:	f13a                	sd	a4,160(sp)
    e885afee:	a00d                	j	e885b010 <PrintFCoreVAList+0x1b8>
				F.fieldWidth = ( 10 * F.fieldWidth ) + ( c - '0' );
    e885aff0:	24e8168b          	mulaw	a3,a6,a4
    e885aff4:	4605                	li	a2,1
    e885aff6:	8736                	mv	a4,a3
    e885aff8:	fd07071b          	addiw	a4,a4,-48
			for( ; ( c >= '0' ) && ( c <= '9' ); c = *++fmt )
    e885affc:	8817c68b          	lbuib	a3,(a5),1,0
    e885b000:	bf49                	j	e885af92 <PrintFCoreVAList+0x13a>
				F.precision = va_arg( vaArgs.args, unsigned int );
    e885b002:	00046703          	lwu	a4,0(s0)
				c = *++fmt;
    e885b006:	0027c683          	lbu	a3,2(a5)
				F.precision = va_arg( vaArgs.args, unsigned int );
    e885b00a:	0421                	addi	s0,s0,8
    e885b00c:	f13a                	sd	a4,160(sp)
				c = *++fmt;
    e885b00e:	0789                	addi	a5,a5,2
			F.havePrecision = 1;
    e885b010:	09014703          	lbu	a4,144(sp)
    e885b014:	00876713          	ori	a4,a4,8
    e885b018:	08e10823          	sb	a4,144(sp)
		if( F.leftJustify ) F.zeroPad = 0;
    e885b01c:	09014703          	lbu	a4,144(sp)
    e885b020:	00177613          	andi	a2,a4,1
    e885b024:	c601                	beqz	a2,e885b02c <PrintFCoreVAList+0x1d4>
    e885b026:	9b6d                	andi	a4,a4,-5
    e885b028:	08e10823          	sb	a4,144(sp)
    e885b02c:	09214703          	lbu	a4,146(sp)
    e885b030:	09114603          	lbu	a2,145(sp)
    e885b034:	4581                	li	a1,0
    e885b036:	4501                	li	a0,0
			if(      c == 'h' ) { ++F.hSize; c = *++fmt; }
    e885b038:	06800813          	li	a6,104
			else if( c == 'l' ) { ++F.lSize; c = *++fmt; }
    e885b03c:	06c00893          	li	a7,108
    e885b040:	89be                	mv	s3,a5
			if(      c == 'h' ) { ++F.hSize; c = *++fmt; }
    e885b042:	03069163          	bne	a3,a6,e885b064 <PrintFCoreVAList+0x20c>
    e885b046:	0017c683          	lbu	a3,1(a5)
    e885b04a:	2605                	addiw	a2,a2,1
    e885b04c:	0ff67613          	andi	a2,a2,255
    e885b050:	4505                	li	a0,1
    e885b052:	0785                	addi	a5,a5,1
    e885b054:	b7f5                	j	e885b040 <PrintFCoreVAList+0x1e8>
					F.precision = ( 10 * F.precision ) + ( c - '0' );
    e885b056:	2107158b          	mula	a1,a4,a6
				for( ; ( c >= '0' ) && ( c <= '9' ); c = *++fmt )
    e885b05a:	8817c68b          	lbuib	a3,(a5),1,0
    e885b05e:	4605                	li	a2,1
					F.precision = ( 10 * F.precision ) + ( c - '0' );
    e885b060:	872e                	mv	a4,a1
				for( ; ( c >= '0' ) && ( c <= '9' ); c = *++fmt )
    e885b062:	b741                	j	e885afe2 <PrintFCoreVAList+0x18a>
			else if( c == 'l' ) { ++F.lSize; c = *++fmt; }
    e885b064:	01169963          	bne	a3,a7,e885b076 <PrintFCoreVAList+0x21e>
    e885b068:	2705                	addiw	a4,a4,1
    e885b06a:	0ff77713          	andi	a4,a4,255
    e885b06e:	0017c683          	lbu	a3,1(a5)
    e885b072:	4585                	li	a1,1
    e885b074:	bff9                	j	e885b052 <PrintFCoreVAList+0x1fa>
    e885b076:	c119                	beqz	a0,e885b07c <PrintFCoreVAList+0x224>
    e885b078:	08c108a3          	sb	a2,145(sp)
    e885b07c:	c199                	beqz	a1,e885b082 <PrintFCoreVAList+0x22a>
    e885b07e:	08e10923          	sb	a4,146(sp)
			else if( c == 'j' )
    e885b082:	06a00713          	li	a4,106
    e885b086:	04e69563          	bne	a3,a4,e885b0d0 <PrintFCoreVAList+0x278>
				if( F.hSize || F.lSize ) { err = -1; goto error; }
    e885b08a:	674a                	ld	a4,144(sp)
    e885b08c:	01677733          	and	a4,a4,s6
    e885b090:	c74d                	beqz	a4,e885b13a <PrintFCoreVAList+0x2e2>
    e885b092:	5d7d                	li	s10,-1
}
    e885b094:	26813083          	ld	ra,616(sp)
    e885b098:	26013403          	ld	s0,608(sp)
    e885b09c:	856a                	mv	a0,s10
    e885b09e:	25813483          	ld	s1,600(sp)
    e885b0a2:	25013903          	ld	s2,592(sp)
    e885b0a6:	24813983          	ld	s3,584(sp)
    e885b0aa:	24013a03          	ld	s4,576(sp)
    e885b0ae:	23813a83          	ld	s5,568(sp)
    e885b0b2:	23013b03          	ld	s6,560(sp)
    e885b0b6:	22813b83          	ld	s7,552(sp)
    e885b0ba:	22013c03          	ld	s8,544(sp)
    e885b0be:	21813c83          	ld	s9,536(sp)
    e885b0c2:	21013d03          	ld	s10,528(sp)
    e885b0c6:	20813d83          	ld	s11,520(sp)
    e885b0ca:	27010113          	addi	sp,sp,624
    e885b0ce:	8082                	ret
			else if( c == 'z' )
    e885b0d0:	07a00713          	li	a4,122
    e885b0d4:	fae68be3          	beq	a3,a4,e885b08a <PrintFCoreVAList+0x232>
			else if( c == 't' )
    e885b0d8:	07400713          	li	a4,116
    e885b0dc:	fae687e3          	beq	a3,a4,e885b08a <PrintFCoreVAList+0x232>
		if( F.hSize > 2 )		 { err = -1; goto error; };
    e885b0e0:	09114503          	lbu	a0,145(sp)
    e885b0e4:	4789                	li	a5,2
    e885b0e6:	faa7e6e3          	bltu	a5,a0,e885b092 <PrintFCoreVAList+0x23a>
		if( F.lSize > 2 )		 { err = -1; goto error; };
    e885b0ea:	09214583          	lbu	a1,146(sp)
    e885b0ee:	fab7e2e3          	bltu	a5,a1,e885b092 <PrintFCoreVAList+0x23a>
		if( F.hSize && F.lSize ) { err = -1; goto error; };
    e885b0f2:	c111                	beqz	a0,e885b0f6 <PrintFCoreVAList+0x29e>
    e885b0f4:	fdd9                	bnez	a1,e885b092 <PrintFCoreVAList+0x23a>
		switch( c )
    e885b0f6:	06300793          	li	a5,99
    e885b0fa:	6ef688e3          	beq	a3,a5,e885bfea <PrintFCoreVAList+0x1192>
    e885b0fe:	12d7c663          	blt	a5,a3,e885b22a <PrintFCoreVAList+0x3d2>
    e885b102:	05300793          	li	a5,83
    e885b106:	0af689e3          	beq	a3,a5,e885b9b8 <PrintFCoreVAList+0xb60>
    e885b10a:	08d7cf63          	blt	a5,a3,e885b1a8 <PrintFCoreVAList+0x350>
    e885b10e:	04300793          	li	a5,67
    e885b112:	72f68be3          	beq	a3,a5,e885c048 <PrintFCoreVAList+0x11f0>
    e885b116:	02d7ca63          	blt	a5,a3,e885b14a <PrintFCoreVAList+0x2f2>
    e885b11a:	02500793          	li	a5,37
    e885b11e:	00f69463          	bne	a3,a5,e885b126 <PrintFCoreVAList+0x2ce>
    e885b122:	2f80106f          	j	e885c41a <PrintFCoreVAList+0x15c2>
    e885b126:	04000793          	li	a5,64
    e885b12a:	1cf689e3          	beq	a3,a5,e885bafc <PrintFCoreVAList+0xca4>
				i = SNPrintF( buf, sizeof( buf ), "<<UNKNOWN FORMAT CONVERSION CODE %%%c>>", c );
    e885b12e:	00048617          	auipc	a2,0x48
    e885b132:	1b260613          	addi	a2,a2,434 # e88a32e0 <mDNSInterface_Unicast+0x560>
    e885b136:	13c0106f          	j	e885c272 <PrintFCoreVAList+0x141a>
				if(      sizeof( ptrdiff_t ) == sizeof( long ) )	F.lSize = 1;
    e885b13a:	4705                	li	a4,1
    e885b13c:	08e10923          	sb	a4,146(sp)
				c = *++fmt;
    e885b140:	0017c683          	lbu	a3,1(a5)
    e885b144:	00178993          	addi	s3,a5,1
				break;
    e885b148:	bf61                	j	e885b0e0 <PrintFCoreVAList+0x288>
		switch( c )
    e885b14a:	04800793          	li	a5,72
    e885b14e:	46f68fe3          	beq	a3,a5,e885bdcc <PrintFCoreVAList+0xf74>
    e885b152:	04e00793          	li	a5,78
    e885b156:	fcf69ce3          	bne	a3,a5,e885b12e <PrintFCoreVAList+0x2d6>
				if( F.suppress ) continue;
    e885b15a:	09014783          	lbu	a5,144(sp)
    e885b15e:	8bc1                	andi	a5,a5,16
    e885b160:	4a0791e3          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
                    GetLocalTime(&st);
    e885b164:	1908                	addi	a0,sp,176
    e885b166:	486200ef          	jal	ra,e887b5ec <GetLocalTime>
					if( F.altForm )
    e885b16a:	0bc15603          	lhu	a2,188(sp)
    e885b16e:	09314583          	lbu	a1,147(sp)
    e885b172:	0ba15883          	lhu	a7,186(sp)
                        i = snprintf (buf, sizeof(buf), "%Y-%m-%d_%H-%M-%S",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond );
    e885b176:	e032                	sd	a2,0(sp)
    e885b178:	0b815803          	lhu	a6,184(sp)
    e885b17c:	0b615783          	lhu	a5,182(sp)
    e885b180:	0b215703          	lhu	a4,178(sp)
    e885b184:	0b015683          	lhu	a3,176(sp)
    e885b188:	00068617          	auipc	a2,0x68
    e885b18c:	eb060613          	addi	a2,a2,-336 # e88c3038 <kPairingSessionClass+0x348>
					if( F.altForm )
    e885b190:	e589                	bnez	a1,e885b19a <PrintFCoreVAList+0x342>
                        i = snprintf (buf, sizeof(buf), "%Y-%m-%d %H:%M:%S",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond );
    e885b192:	00068617          	auipc	a2,0x68
    e885b196:	ebe60613          	addi	a2,a2,-322 # e88c3050 <kPairingSessionClass+0x360>
    e885b19a:	12c00593          	li	a1,300
    e885b19e:	0988                	addi	a0,sp,208
    e885b1a0:	0b0210ef          	jal	ra,e887c250 <eLIBs_snprintf>
    e885b1a4:	04a0106f          	j	e885c1ee <PrintFCoreVAList+0x1396>
		switch( c )
    e885b1a8:	05800793          	li	a5,88
    e885b1ac:	3ef68e63          	beq	a3,a5,e885b5a8 <PrintFCoreVAList+0x750>
    e885b1b0:	04d7c163          	blt	a5,a3,e885b1f2 <PrintFCoreVAList+0x39a>
    e885b1b4:	05500793          	li	a5,85
    e885b1b8:	00f69463          	bne	a3,a5,e885b1c0 <PrintFCoreVAList+0x368>
    e885b1bc:	1800106f          	j	e885c33c <PrintFCoreVAList+0x14e4>
    e885b1c0:	05600793          	li	a5,86
    e885b1c4:	f6f695e3          	bne	a3,a5,e885b12e <PrintFCoreVAList+0x2d6>
				if( F.suppress ) continue;
    e885b1c8:	09014783          	lbu	a5,144(sp)
				nestedFormat = va_arg( vaArgs.args, const char * );
    e885b1cc:	8722                	mv	a4,s0
    e885b1ce:	7a84458b          	ldia	a1,(s0),8,1
				if( F.suppress ) continue;
    e885b1d2:	8bc1                	andi	a5,a5,16
    e885b1d4:	420797e3          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
				if( !nestedFormat || !nestedArgs ) { s = "<<NULL>>"; i = 8; break; }
    e885b1d8:	e199                	bnez	a1,e885b1de <PrintFCoreVAList+0x386>
    e885b1da:	3100106f          	j	e885c4ea <PrintFCoreVAList+0x1692>
				nestedArgs   = va_arg( vaArgs.args, va_list * );
    e885b1de:	671c                	ld	a5,8(a4)
				if( !nestedFormat || !nestedArgs ) { s = "<<NULL>>"; i = 8; break; }
    e885b1e0:	e399                	bnez	a5,e885b1e6 <PrintFCoreVAList+0x38e>
    e885b1e2:	3080106f          	j	e885c4ea <PrintFCoreVAList+0x1692>
				err = PrintFCoreVAList( inContext, nestedFormat, *nestedArgs );
    e885b1e6:	6390                	ld	a2,0(a5)
    e885b1e8:	8526                	mv	a0,s1
    e885b1ea:	c6fff0ef          	jal	ra,e885ae58 <PrintFCoreVAList>
    e885b1ee:	40b0006f          	j	e885bdf8 <PrintFCoreVAList+0xfa0>
		switch( c )
    e885b1f2:	06100793          	li	a5,97
    e885b1f6:	72f689e3          	beq	a3,a5,e885c128 <PrintFCoreVAList+0x12d0>
    e885b1fa:	06200613          	li	a2,98
			case 'b': base =  2; goto notSigned;
    e885b1fe:	4789                	li	a5,2
		digits = kHexDigitsUppercase;
    e885b200:	00045717          	auipc	a4,0x45
    e885b204:	c6070713          	addi	a4,a4,-928 # e889fe60 <TWO52+0x268>
		switch( c )
    e885b208:	f2c693e3          	bne	a3,a2,e885b12e <PrintFCoreVAList+0x2d6>
				if(      F.lSize == 1 )	x = va_arg( vaArgs.args, unsigned long );
    e885b20c:	4805                	li	a6,1
    e885b20e:	8622                	mv	a2,s0
    e885b210:	0421                	addi	s0,s0,8
    e885b212:	3b059b63          	bne	a1,a6,e885b5c8 <PrintFCoreVAList+0x770>
				else if( F.lSize == 2 )	x = va_arg( vaArgs.args, uint64_t );
    e885b216:	00063c83          	ld	s9,0(a2)
				if(      F.hSize == 1 )	x = (unsigned short)( x & 0xFFFF );
    e885b21a:	4605                	li	a2,1
    e885b21c:	3ac51c63          	bne	a0,a2,e885b5d4 <PrintFCoreVAList+0x77c>
    e885b220:	3c0cbc8b          	extu	s9,s9,15,0
				F.sign = 0;
    e885b224:	08010a23          	sb	zero,148(sp)
				goto number;
    e885b228:	acfd                	j	e885b526 <PrintFCoreVAList+0x6ce>
		switch( c )
    e885b22a:	06f00793          	li	a5,111
    e885b22e:	38f68363          	beq	a3,a5,e885b5b4 <PrintFCoreVAList+0x75c>
    e885b232:	0ed7c963          	blt	a5,a3,e885b324 <PrintFCoreVAList+0x4cc>
    e885b236:	06900793          	li	a5,105
    e885b23a:	28f68763          	beq	a3,a5,e885b4c8 <PrintFCoreVAList+0x670>
    e885b23e:	0cd7c063          	blt	a5,a3,e885b2fe <PrintFCoreVAList+0x4a6>
    e885b242:	06400793          	li	a5,100
    e885b246:	28f68163          	beq	a3,a5,e885b4c8 <PrintFCoreVAList+0x670>
    e885b24a:	06600793          	li	a5,102
    e885b24e:	eef690e3          	bne	a3,a5,e885b12e <PrintFCoreVAList+0x2d6>
				if( F.forceSign ) fpFormat[ i++ ]	= '+';
    e885b252:	09014703          	lbu	a4,144(sp)
				fpFormat[ i++ ]						= '%';
    e885b256:	02500793          	li	a5,37
    e885b25a:	0af10823          	sb	a5,176(sp)
				if( F.forceSign ) fpFormat[ i++ ]	= '+';
    e885b25e:	00277693          	andi	a3,a4,2
				fpFormat[ i++ ]						= '%';
    e885b262:	4785                	li	a5,1
				if( F.forceSign ) fpFormat[ i++ ]	= '+';
    e885b264:	c691                	beqz	a3,e885b270 <PrintFCoreVAList+0x418>
    e885b266:	02b00793          	li	a5,43
    e885b26a:	0af108a3          	sb	a5,177(sp)
    e885b26e:	4789                	li	a5,2
				if( F.altForm )   fpFormat[ i++ ]	= '#';
    e885b270:	09314683          	lbu	a3,147(sp)
    e885b274:	1910                	addi	a2,sp,176
    e885b276:	c691                	beqz	a3,e885b282 <PrintFCoreVAList+0x42a>
    e885b278:	02300693          	li	a3,35
    e885b27c:	00f6568b          	srb	a3,a2,a5,0
    e885b280:	2785                	addiw	a5,a5,1
				if( F.zeroPad )   fpFormat[ i++ ]	= '0';
    e885b282:	00477693          	andi	a3,a4,4
    e885b286:	c691                	beqz	a3,e885b292 <PrintFCoreVAList+0x43a>
    e885b288:	03000693          	li	a3,48
    e885b28c:	00f6568b          	srb	a3,a2,a5,0
    e885b290:	2785                	addiw	a5,a5,1
				fpFormat[ i++ ]						= '*';
    e885b292:	02a00513          	li	a0,42
    e885b296:	00f6550b          	srb	a0,a2,a5,0
				if( F.havePrecision )
    e885b29a:	00877593          	andi	a1,a4,8
				fpFormat[ i++ ]						= '*';
    e885b29e:	0017869b          	addiw	a3,a5,1
				if( F.havePrecision )
    e885b2a2:	c991                	beqz	a1,e885b2b6 <PrintFCoreVAList+0x45e>
					fpFormat[ i++ ]					= '.';
    e885b2a4:	02e00813          	li	a6,46
    e885b2a8:	00d6580b          	srb	a6,a2,a3,0
					fpFormat[ i++ ]					= '*';
    e885b2ac:	0037869b          	addiw	a3,a5,3
    e885b2b0:	2789                	addiw	a5,a5,2
    e885b2b2:	00f6550b          	srb	a0,a2,a5,0
				fpFormat[ i++ ]						= 'f';
    e885b2b6:	06600793          	li	a5,102
    e885b2ba:	00d6578b          	srb	a5,a2,a3,0
				fpFormat[ i ]						= '\0';
    e885b2be:	2685                	addiw	a3,a3,1
    e885b2c0:	00d6500b          	srb	zero,a2,a3,0
				if( F.leftJustify ) i = -i;
    e885b2c4:	00177793          	andi	a5,a4,1
				i = (int) F.fieldWidth;
    e885b2c8:	46ea                	lw	a3,152(sp)
				if( F.leftJustify ) i = -i;
    e885b2ca:	c781                	beqz	a5,e885b2d2 <PrintFCoreVAList+0x47a>
    e885b2cc:	40d006bb          	negw	a3,a3
    e885b2d0:	2681                	sext.w	a3,a3
				if( F.suppress ) continue;
    e885b2d2:	8b41                	andi	a4,a4,16
				dx = va_arg( vaArgs.args, double );
    e885b2d4:	87a2                	mv	a5,s0
    e885b2d6:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885b2d8:	320715e3          	bnez	a4,e885be02 <PrintFCoreVAList+0xfaa>
				dx = va_arg( vaArgs.args, double );
    e885b2dc:	239c                	fld	fa5,0(a5)
				if( F.havePrecision ) i = snprintf( buf, sizeof( buf ), fpFormat, i, (int) F.precision, dx );
    e885b2de:	52058963          	beqz	a1,e885b810 <PrintFCoreVAList+0x9b8>
    e885b2e2:	e20787d3          	fmv.x.d	a5,fa5
    e885b2e6:	570a                	lw	a4,160(sp)
    e885b2e8:	12c00593          	li	a1,300
    e885b2ec:	0988                	addi	a0,sp,208
    e885b2ee:	763200ef          	jal	ra,e887c250 <eLIBs_snprintf>
				else				  i = snprintf( buf, sizeof( buf ), fpFormat, i, dx );
    e885b2f2:	8d2a                	mv	s10,a0
				if( i < 0 ) { err = i; goto error; }
    e885b2f4:	da0540e3          	bltz	a0,e885b094 <PrintFCoreVAList+0x23c>
				s = buf;
    e885b2f8:	0d010b93          	addi	s7,sp,208
				break;
    e885b2fc:	a441                	j	e885b57c <PrintFCoreVAList+0x724>
		switch( c )
    e885b2fe:	06d00793          	li	a5,109
    e885b302:	20f681e3          	beq	a3,a5,e885bd04 <PrintFCoreVAList+0xeac>
    e885b306:	06e00793          	li	a5,110
    e885b30a:	e2f692e3          	bne	a3,a5,e885b12e <PrintFCoreVAList+0x2d6>
				if(      F.hSize == 1 ) *( (short   *) p ) = (short) total;
    e885b30e:	4705                	li	a4,1
				p = va_arg( vaArgs.args, char * );
    e885b310:	601c                	ld	a5,0(s0)
    e885b312:	0421                	addi	s0,s0,8
				if(      F.hSize == 1 ) *( (short   *) p ) = (short) total;
    e885b314:	00e50463          	beq	a0,a4,e885b31c <PrintFCoreVAList+0x4c4>
    e885b318:	0de0106f          	j	e885c3f6 <PrintFCoreVAList+0x159e>
    e885b31c:	01279023          	sh	s2,0(a5)
    e885b320:	2e30006f          	j	e885be02 <PrintFCoreVAList+0xfaa>
		switch( c )
    e885b324:	07500793          	li	a5,117
    e885b328:	28f68863          	beq	a3,a5,e885b5b8 <PrintFCoreVAList+0x760>
    e885b32c:	10d7cc63          	blt	a5,a3,e885b444 <PrintFCoreVAList+0x5ec>
    e885b330:	07000793          	li	a5,112
    e885b334:	1cf68463          	beq	a3,a5,e885b4fc <PrintFCoreVAList+0x6a4>
    e885b338:	07300793          	li	a5,115
    e885b33c:	def699e3          	bne	a3,a5,e885b12e <PrintFCoreVAList+0x2d6>
				if( F.suppress ) continue;
    e885b340:	09014783          	lbu	a5,144(sp)
				src = va_arg( vaArgs.args, const char * );
    e885b344:	8722                	mv	a4,s0
    e885b346:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885b348:	0107f693          	andi	a3,a5,16
    e885b34c:	2a069be3          	bnez	a3,e885be02 <PrintFCoreVAList+0xfaa>
				src = va_arg( vaArgs.args, const char * );
    e885b350:	00073b83          	ld	s7,0(a4)
				if( !src && ( !F.havePrecision || ( F.precision != 0 ) ) ) { s = "<<NULL>>"; i = 8; break; }
    e885b354:	000b9b63          	bnez	s7,e885b36a <PrintFCoreVAList+0x512>
    e885b358:	0087f713          	andi	a4,a5,8
    e885b35c:	e319                	bnez	a4,e885b362 <PrintFCoreVAList+0x50a>
    e885b35e:	18c0106f          	j	e885c4ea <PrintFCoreVAList+0x1692>
    e885b362:	770a                	ld	a4,160(sp)
    e885b364:	c319                	beqz	a4,e885b36a <PrintFCoreVAList+0x512>
    e885b366:	1840106f          	j	e885c4ea <PrintFCoreVAList+0x1692>
				if( F.group && F.havePrecision )
    e885b36a:	0a814703          	lbu	a4,168(sp)
    e885b36e:	cb11                	beqz	a4,e885b382 <PrintFCoreVAList+0x52a>
    e885b370:	0087f713          	andi	a4,a5,8
    e885b374:	c719                	beqz	a4,e885b382 <PrintFCoreVAList+0x52a>
					if( F.precision >= 2 ) F.precision -= 2;
    e885b376:	770a                	ld	a4,160(sp)
    e885b378:	4685                	li	a3,1
    e885b37a:	4ae6f363          	bgeu	a3,a4,e885b820 <PrintFCoreVAList+0x9c8>
    e885b37e:	1779                	addi	a4,a4,-2
    e885b380:	f13a                	sd	a4,160(sp)
	if( F->altForm == 0 )		// %s: C-string
    e885b382:	09314683          	lbu	a3,147(sp)
    e885b386:	4a069863          	bnez	a3,e885b836 <PrintFCoreVAList+0x9de>
		if( F->havePrecision )
    e885b38a:	8ba1                	andi	a5,a5,8
    e885b38c:	4a078363          	beqz	a5,e885b832 <PrintFCoreVAList+0x9da>
			while( ( i < (int) F->precision ) && ( s[ i ] != '\0' ) ) ++i;
    e885b390:	560a                	lw	a2,160(sp)
    e885b392:	4781                	li	a5,0
    e885b394:	fffb8693          	addi	a3,s7,-1
    e885b398:	00078d1b          	sext.w	s10,a5
    e885b39c:	00cd5663          	bge	s10,a2,e885b3a8 <PrintFCoreVAList+0x550>
    e885b3a0:	0785                	addi	a5,a5,1
    e885b3a2:	80f6c70b          	lrbu	a4,a3,a5,0
    e885b3a6:	fb6d                	bnez	a4,e885b398 <PrintFCoreVAList+0x540>
    e885b3a8:	01ab8733          	add	a4,s7,s10
    e885b3ac:	4601                	li	a2,0
    e885b3ae:	4681                	li	a3,0
			while( ( i > 0 ) && ( ( c = s[ i - 1 ] ) & 0x80 ) ) { ++j; --i; if( ( c & 0xC0 ) != 0x80 ) break; }
    e885b3b0:	08000593          	li	a1,128
    e885b3b4:	000d0f63          	beqz	s10,e885b3d2 <PrintFCoreVAList+0x57a>
    e885b3b8:	fff74783          	lbu	a5,-1(a4)
    e885b3bc:	fc77b50b          	extu	a0,a5,63,7
    e885b3c0:	86be                	mv	a3,a5
    e885b3c2:	c901                	beqz	a0,e885b3d2 <PrintFCoreVAList+0x57a>
    e885b3c4:	0c07f793          	andi	a5,a5,192
    e885b3c8:	2605                	addiw	a2,a2,1
    e885b3ca:	3d7d                	addiw	s10,s10,-1
    e885b3cc:	177d                	addi	a4,a4,-1
    e885b3ce:	feb783e3          	beq	a5,a1,e885b3b4 <PrintFCoreVAList+0x55c>
			if( ( j > 1 ) && ( j <= 6 ) )
    e885b3d2:	ffe6079b          	addiw	a5,a2,-2
    e885b3d6:	4711                	li	a4,4
    e885b3d8:	02f76763          	bltu	a4,a5,e885b406 <PrintFCoreVAList+0x5ae>
				test = ( 0xFF << ( 8 - j ) ) & 0xFF;
    e885b3dc:	47a1                	li	a5,8
    e885b3de:	40c7873b          	subw	a4,a5,a2
    e885b3e2:	0ff00793          	li	a5,255
    e885b3e6:	00e797bb          	sllw	a5,a5,a4
				mask = test | ( 1 << ( ( 8 - j ) - 1 ) );
    e885b3ea:	471d                	li	a4,7
    e885b3ec:	40c705bb          	subw	a1,a4,a2
    e885b3f0:	4705                	li	a4,1
				test = ( 0xFF << ( 8 - j ) ) & 0xFF;
    e885b3f2:	0ff7f793          	andi	a5,a5,255
				mask = test | ( 1 << ( ( 8 - j ) - 1 ) );
    e885b3f6:	00b7173b          	sllw	a4,a4,a1
    e885b3fa:	8f5d                	or	a4,a4,a5
				if( ( c & mask ) == test ) i += j;
    e885b3fc:	8f75                	and	a4,a4,a3
    e885b3fe:	00e79463          	bne	a5,a4,e885b406 <PrintFCoreVAList+0x5ae>
    e885b402:	01a60d3b          	addw	s10,a2,s10
	if( F->havePrecision && ( i > (int) F->precision ) )
    e885b406:	09014783          	lbu	a5,144(sp)
    e885b40a:	8ba1                	andi	a5,a5,8
    e885b40c:	c38d                	beqz	a5,e885b42e <PrintFCoreVAList+0x5d6>
    e885b40e:	578a                	lw	a5,160(sp)
    e885b410:	01a7df63          	bge	a5,s10,e885b42e <PrintFCoreVAList+0x5d6>
    e885b414:	00fb8733          	add	a4,s7,a5
    e885b418:	8d3e                	mv	s10,a5
		for( i = (int) F->precision; ( i > 0 ) && ( ( s[ i ] & 0xC0 ) == 0x80 ); --i ) {}
    e885b41a:	08000693          	li	a3,128
    e885b41e:	01a05863          	blez	s10,e885b42e <PrintFCoreVAList+0x5d6>
    e885b422:	99f7478b          	lbuia	a5,(a4),-1,0
    e885b426:	0c07f793          	andi	a5,a5,192
    e885b42a:	56d78e63          	beq	a5,a3,e885b9a6 <PrintFCoreVAList+0xb4e>
				if(      F.group == 1 ) { F.prefix = '\''; F.suffix = '\''; }
    e885b42e:	0a814783          	lbu	a5,168(sp)
    e885b432:	4705                	li	a4,1
    e885b434:	56e79b63          	bne	a5,a4,e885b9aa <PrintFCoreVAList+0xb52>
    e885b438:	6789                	lui	a5,0x2
    e885b43a:	7277879b          	addiw	a5,a5,1831
				else if( F.group == 2 ) { F.prefix = '"';  F.suffix = '"'; }
    e885b43e:	0af114a3          	sh	a5,169(sp)
    e885b442:	aa2d                	j	e885b57c <PrintFCoreVAList+0x724>
		switch( c )
    e885b444:	07800793          	li	a5,120
    e885b448:	16f68a63          	beq	a3,a5,e885b5bc <PrintFCoreVAList+0x764>
    e885b44c:	07b00793          	li	a5,123
    e885b450:	ccf69fe3          	bne	a3,a5,e885b12e <PrintFCoreVAList+0x2d6>
				extensionPtr = ++fmt;
    e885b454:	0985                	addi	s3,s3,1
    e885b456:	874e                	mv	a4,s3
				while( ( c != '\0' ) && ( c != '}' ) ) c = *++fmt;
    e885b458:	07d00693          	li	a3,125
    e885b45c:	8819c78b          	lbuib	a5,(s3),1,0
    e885b460:	c399                	beqz	a5,e885b466 <PrintFCoreVAList+0x60e>
    e885b462:	fed79de3          	bne	a5,a3,e885b45c <PrintFCoreVAList+0x604>
				extensionLen = (size_t)( fmt - extensionPtr );
    e885b466:	40e98bb3          	sub	s7,s3,a4
				if( strnicmpx( extensionPtr, extensionLen, "text" ) == 0 )
    e885b46a:	853a                	mv	a0,a4
    e885b46c:	00068617          	auipc	a2,0x68
    e885b470:	c4460613          	addi	a2,a2,-956 # e88c30b0 <kPairingSessionClass+0x3c0>
    e885b474:	85de                	mv	a1,s7
    e885b476:	f4ba                	sd	a4,104(sp)
    e885b478:	4e4040ef          	jal	ra,e885f95c <strnicmpx>
    e885b47c:	8c2a                	mv	s8,a0
    e885b47e:	7726                	ld	a4,104(sp)
    e885b480:	c119                	beqz	a0,e885b486 <PrintFCoreVAList+0x62e>
    e885b482:	0500106f          	j	e885c4d2 <PrintFCoreVAList+0x167a>
					if( F.suppress ) continue;
    e885b486:	09014783          	lbu	a5,144(sp)
					s    = va_arg( vaArgs.args, const char * );
    e885b48a:	8722                	mv	a4,s0
    e885b48c:	7a84430b          	ldia	t1,(s0),8,1
					if( F.suppress ) continue;
    e885b490:	8bc1                	andi	a5,a5,16
    e885b492:	160798e3          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
					size = va_arg( vaArgs.args, size_t );
    e885b496:	6708                	ld	a0,8(a4)
					if( size == kSizeCString ) size = strlen( s );
    e885b498:	57fd                	li	a5,-1
    e885b49a:	00f51963          	bne	a0,a5,e885b4ac <PrintFCoreVAList+0x654>
    e885b49e:	851a                	mv	a0,t1
    e885b4a0:	f49a                	sd	t1,104(sp)
    e885b4a2:	677200ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885b4a6:	7c05350b          	extu	a0,a0,31,0
    e885b4aa:	7326                	ld	t1,104(sp)
	for( line = inStr, end = line + inLen; line < end; line = next )
    e885b4ac:	00a30bb3          	add	s7,t1,a0
    e885b4b0:	01737463          	bgeu	t1,s7,e885b4b8 <PrintFCoreVAList+0x660>
    e885b4b4:	7830006f          	j	e885c436 <PrintFCoreVAList+0x15de>
					if( err < 0 ) goto error;
    e885b4b8:	000c5463          	bgez	s8,e885b4c0 <PrintFCoreVAList+0x668>
    e885b4bc:	03c0106f          	j	e885c4f8 <PrintFCoreVAList+0x16a0>
					total += err;
    e885b4c0:	0189093b          	addw	s2,s2,s8
					continue;
    e885b4c4:	13f0006f          	j	e885be02 <PrintFCoreVAList+0xfaa>
				if(      F.lSize == 1 )	x = (uint64_t) va_arg( vaArgs.args, long );
    e885b4c8:	4705                	li	a4,1
    e885b4ca:	87a2                	mv	a5,s0
    e885b4cc:	0421                	addi	s0,s0,8
    e885b4ce:	0ae59a63          	bne	a1,a4,e885b582 <PrintFCoreVAList+0x72a>
				else if( F.lSize == 2 )	x = (uint64_t) va_arg( vaArgs.args, int64_t );
    e885b4d2:	0007bc83          	ld	s9,0(a5) # 2000 <memcmp-0xe87fe000>
				if(      F.hSize == 1 )	x = (uint64_t)(short)( x & 0xFFFF );
    e885b4d6:	4785                	li	a5,1
    e885b4d8:	0af51b63          	bne	a0,a5,e885b58e <PrintFCoreVAList+0x736>
    e885b4dc:	3c0cac8b          	ext	s9,s9,15,0
				if( (int64_t) x < 0 ) { x = (uint64_t)( -(int64_t) x ); F.sign = '-'; }
    e885b4e0:	0a0cdd63          	bgez	s9,e885b59a <PrintFCoreVAList+0x742>
    e885b4e4:	41900cb3          	neg	s9,s9
    e885b4e8:	02d00793          	li	a5,45
				else if( F.forceSign ) F.sign = '+';
    e885b4ec:	08f10a23          	sb	a5,148(sp)
			case 'i': base = 10; goto canBeSigned;
    e885b4f0:	47a9                	li	a5,10
		digits = kHexDigitsUppercase;
    e885b4f2:	00045717          	auipc	a4,0x45
    e885b4f6:	96e70713          	addi	a4,a4,-1682 # e889fe60 <TWO52+0x268>
    e885b4fa:	a035                	j	e885b526 <PrintFCoreVAList+0x6ce>
				F.precision		= sizeof( void * ) * 2;
    e885b4fc:	47c1                	li	a5,16
				x = (uintptr_t) va_arg( vaArgs.args, void * );
    e885b4fe:	00043c83          	ld	s9,0(s0)
				F.precision		= sizeof( void * ) * 2;
    e885b502:	f13e                	sd	a5,160(sp)
				F.havePrecision = 1;
    e885b504:	09014783          	lbu	a5,144(sp)
				x = (uintptr_t) va_arg( vaArgs.args, void * );
    e885b508:	0421                	addi	s0,s0,8
		digits = kHexDigitsUppercase;
    e885b50a:	00045717          	auipc	a4,0x45
    e885b50e:	95670713          	addi	a4,a4,-1706 # e889fe60 <TWO52+0x268>
				F.havePrecision = 1;
    e885b512:	0087e793          	ori	a5,a5,8
    e885b516:	08f10823          	sb	a5,144(sp)
				F.altForm		= 1;
    e885b51a:	4785                	li	a5,1
    e885b51c:	08f119a3          	sh	a5,147(sp)
				c				= 'x';
    e885b520:	07800693          	li	a3,120
				base			= 16;
    e885b524:	47c1                	li	a5,16
				if( F.suppress ) continue;
    e885b526:	09014603          	lbu	a2,144(sp)
    e885b52a:	01067593          	andi	a1,a2,16
    e885b52e:	0c059ae3          	bnez	a1,e885be02 <PrintFCoreVAList+0xfaa>
				if( ( base == 2 ) && ( F.altForm > 1 ) )
    e885b532:	4809                	li	a6,2
    e885b534:	09314583          	lbu	a1,147(sp)
    e885b538:	00867893          	andi	a7,a2,8
    e885b53c:	19079e63          	bne	a5,a6,e885b6d8 <PrintFCoreVAList+0x880>
    e885b540:	4805                	li	a6,1
    e885b542:	18b87b63          	bgeu	a6,a1,e885b6d8 <PrintFCoreVAList+0x880>
	dst = outStr;
    e885b546:	0d010b93          	addi	s7,sp,208
    e885b54a:	f95e                	sd	s7,176(sp)
	if( !inFormat->havePrecision )
    e885b54c:	00089663          	bnez	a7,e885b558 <PrintFCoreVAList+0x700>
		if(      inFormat->hSize == 1 )	inFormat->precision = 8 * sizeof( short );
    e885b550:	09051863          	bne	a0,a6,e885b5e0 <PrintFCoreVAList+0x788>
    e885b554:	47c1                	li	a5,16
		else							inFormat->precision = 8 * sizeof( int );
    e885b556:	f13e                	sd	a5,160(sp)
	if( inFormat->precision > ( sizeof( kBit0 ) * 8 ) )
    e885b558:	778a                	ld	a5,160(sp)
    e885b55a:	04000713          	li	a4,64
    e885b55e:	0af77263          	bgeu	a4,a5,e885b602 <PrintFCoreVAList+0x7aa>
		SNPrintF_Add( &dst, lim, "ERROR: << precision must be 0-%d >>", ( sizeof( kBit0 ) * 8 ) );
    e885b562:	04000693          	li	a3,64
    e885b566:	00068617          	auipc	a2,0x68
    e885b56a:	85260613          	addi	a2,a2,-1966 # e88c2db8 <kPairingSessionClass+0xc8>
    e885b56e:	85d2                	mv	a1,s4
    e885b570:	1908                	addi	a0,sp,176
    e885b572:	034010ef          	jal	ra,e885c5a6 <SNPrintF_Add>
	return( (int)( dst - outStr ) );
    e885b576:	784a                	ld	a6,176(sp)
    e885b578:	41780d3b          	subw	s10,a6,s7
		err = PrintFWriteText( inContext, &F, s, (size_t) i );
    e885b57c:	86ea                	mv	a3,s10
    e885b57e:	865e                	mv	a2,s7
    e885b580:	abcd                	j	e885bb72 <PrintFCoreVAList+0xd1a>
				else if( F.lSize == 2 )	x = (uint64_t) va_arg( vaArgs.args, int64_t );
    e885b582:	4709                	li	a4,2
    e885b584:	f4e587e3          	beq	a1,a4,e885b4d2 <PrintFCoreVAList+0x67a>
				else					x = (uint64_t) va_arg( vaArgs.args, int );
    e885b588:	0007ac83          	lw	s9,0(a5)
    e885b58c:	b7a9                	j	e885b4d6 <PrintFCoreVAList+0x67e>
				else if( F.hSize == 2 )	x = (uint64_t)(signed char)( x & 0xFF );
    e885b58e:	4789                	li	a5,2
    e885b590:	f4f518e3          	bne	a0,a5,e885b4e0 <PrintFCoreVAList+0x688>
    e885b594:	1c0cac8b          	ext	s9,s9,7,0
    e885b598:	b7a1                	j	e885b4e0 <PrintFCoreVAList+0x688>
				else if( F.forceSign ) F.sign = '+';
    e885b59a:	09014783          	lbu	a5,144(sp)
    e885b59e:	8b89                	andi	a5,a5,2
    e885b5a0:	dba1                	beqz	a5,e885b4f0 <PrintFCoreVAList+0x698>
    e885b5a2:	02b00793          	li	a5,43
    e885b5a6:	b799                	j	e885b4ec <PrintFCoreVAList+0x694>
			case 'X': base = 16; goto notSigned;
    e885b5a8:	47c1                	li	a5,16
		digits = kHexDigitsUppercase;
    e885b5aa:	00045717          	auipc	a4,0x45
    e885b5ae:	8b670713          	addi	a4,a4,-1866 # e889fe60 <TWO52+0x268>
    e885b5b2:	b9a9                	j	e885b20c <PrintFCoreVAList+0x3b4>
			case 'o': base =  8; goto notSigned;
    e885b5b4:	47a1                	li	a5,8
    e885b5b6:	bfd5                	j	e885b5aa <PrintFCoreVAList+0x752>
			case 'u': base = 10; goto notSigned;
    e885b5b8:	47a9                	li	a5,10
    e885b5ba:	bfc5                	j	e885b5aa <PrintFCoreVAList+0x752>
			case 'X': base = 16; goto notSigned;
    e885b5bc:	47c1                	li	a5,16
			case 'x': digits = kHexDigitsLowercase;
    e885b5be:	00048717          	auipc	a4,0x48
    e885b5c2:	bea70713          	addi	a4,a4,-1046 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e885b5c6:	b199                	j	e885b20c <PrintFCoreVAList+0x3b4>
				else if( F.lSize == 2 )	x = va_arg( vaArgs.args, uint64_t );
    e885b5c8:	4809                	li	a6,2
    e885b5ca:	c50586e3          	beq	a1,a6,e885b216 <PrintFCoreVAList+0x3be>
				else					x = va_arg( vaArgs.args, unsigned int );
    e885b5ce:	00066c83          	lwu	s9,0(a2)
    e885b5d2:	b1a1                	j	e885b21a <PrintFCoreVAList+0x3c2>
				else if( F.hSize == 2 )	x = (unsigned char)( x & 0xFF );
    e885b5d4:	4609                	li	a2,2
    e885b5d6:	c4c517e3          	bne	a0,a2,e885b224 <PrintFCoreVAList+0x3cc>
    e885b5da:	0ffcfc93          	andi	s9,s9,255
    e885b5de:	b199                	j	e885b224 <PrintFCoreVAList+0x3cc>
		else if( inFormat->hSize == 2 )	inFormat->precision = 8 * sizeof( char );
    e885b5e0:	00f51463          	bne	a0,a5,e885b5e8 <PrintFCoreVAList+0x790>
    e885b5e4:	47a1                	li	a5,8
    e885b5e6:	bf85                	j	e885b556 <PrintFCoreVAList+0x6fe>
		else if( inFormat->lSize == 1 )	inFormat->precision = 8 * sizeof( long );
    e885b5e8:	09214783          	lbu	a5,146(sp)
    e885b5ec:	37fd                	addiw	a5,a5,-1
    e885b5ee:	0ff7f793          	andi	a5,a5,255
    e885b5f2:	00f86563          	bltu	a6,a5,e885b5fc <PrintFCoreVAList+0x7a4>
    e885b5f6:	04000793          	li	a5,64
    e885b5fa:	bfb1                	j	e885b556 <PrintFCoreVAList+0x6fe>
		else							inFormat->precision = 8 * sizeof( int );
    e885b5fc:	02000793          	li	a5,32
    e885b600:	bf99                	j	e885b556 <PrintFCoreVAList+0x6fe>
		if( inFormat->precision < 1 ) inFormat->precision = 1;
    e885b602:	e399                	bnez	a5,e885b608 <PrintFCoreVAList+0x7b0>
    e885b604:	4785                	li	a5,1
    e885b606:	f13e                	sd	a5,160(sp)
		maxBit = (int)( inFormat->precision - 1 );
    e885b608:	778a                	ld	a5,160(sp)
		if( inFormat->altForm == 2 )
    e885b60a:	4709                	li	a4,2
		maxBit = (int)( inFormat->precision - 1 );
    e885b60c:	fff78c1b          	addiw	s8,a5,-1
    e885b610:	8de2                	mv	s11,s8
		if( inFormat->altForm == 2 )
    e885b612:	04e59f63          	bne	a1,a4,e885b670 <PrintFCoreVAList+0x818>
				if( x & ( kBit0 << bit ) )
    e885b616:	4c05                	li	s8,1
					SNPrintF_Add( &dst, lim, "%s%d", ( dst != outStr ) ? " " : "", bit );
    e885b618:	0004ed17          	auipc	s10,0x4e
    e885b61c:	ae0d0d13          	addi	s10,s10,-1312 # e88a90f8 <hexValues.12413+0x1148>
    e885b620:	00067317          	auipc	t1,0x67
    e885b624:	7c030313          	addi	t1,t1,1984 # e88c2de0 <kPairingSessionClass+0xf0>
    e885b628:	00066e17          	auipc	t3,0x66
    e885b62c:	c48e0e13          	addi	t3,t3,-952 # e88c1270 <kHTTPServerClass+0x90>
			for( bit = maxBit; bit >= 0; --bit )
    e885b630:	f40dc3e3          	bltz	s11,e885b576 <PrintFCoreVAList+0x71e>
				if( x & ( kBit0 << bit ) )
    e885b634:	01bc17b3          	sll	a5,s8,s11
    e885b638:	0197f7b3          	and	a5,a5,s9
    e885b63c:	cb85                	beqz	a5,e885b66c <PrintFCoreVAList+0x814>
					SNPrintF_Add( &dst, lim, "%s%d", ( dst != outStr ) ? " " : "", bit );
    e885b63e:	76ca                	ld	a3,176(sp)
    e885b640:	87f2                	mv	a5,t3
    e885b642:	861a                	mv	a2,t1
    e885b644:	417686b3          	sub	a3,a3,s7
    e885b648:	00d036b3          	snez	a3,a3
    e885b64c:	42dd178b          	mvnez	a5,s10,a3
    e885b650:	86be                	mv	a3,a5
    e885b652:	876e                	mv	a4,s11
    e885b654:	85d2                	mv	a1,s4
    e885b656:	1908                	addi	a0,sp,176
    e885b658:	74f000ef          	jal	ra,e885c5a6 <SNPrintF_Add>
    e885b65c:	00066e17          	auipc	t3,0x66
    e885b660:	c14e0e13          	addi	t3,t3,-1004 # e88c1270 <kHTTPServerClass+0x90>
    e885b664:	00067317          	auipc	t1,0x67
    e885b668:	77c30313          	addi	t1,t1,1916 # e88c2de0 <kPairingSessionClass+0xf0>
			for( bit = maxBit; bit >= 0; --bit )
    e885b66c:	3dfd                	addiw	s11,s11,-1
    e885b66e:	b7c9                	j	e885b630 <PrintFCoreVAList+0x7d8>
			for( bit = 0; bit <= maxBit; ++bit )
    e885b670:	4d81                	li	s11,0
				if( x & ( kBit0 << ( maxBit - bit ) ) )
    e885b672:	4d05                	li	s10,1
					SNPrintF_Add( &dst, lim, "%s%d", ( dst != outStr ) ? " " : "", bit );
    e885b674:	0004e817          	auipc	a6,0x4e
    e885b678:	a8480813          	addi	a6,a6,-1404 # e88a90f8 <hexValues.12413+0x1148>
    e885b67c:	00067317          	auipc	t1,0x67
    e885b680:	76430313          	addi	t1,t1,1892 # e88c2de0 <kPairingSessionClass+0xf0>
    e885b684:	00066e17          	auipc	t3,0x66
    e885b688:	bece0e13          	addi	t3,t3,-1044 # e88c1270 <kHTTPServerClass+0x90>
			for( bit = 0; bit <= maxBit; ++bit )
    e885b68c:	efbc45e3          	blt	s8,s11,e885b576 <PrintFCoreVAList+0x71e>
				if( x & ( kBit0 << ( maxBit - bit ) ) )
    e885b690:	41bc073b          	subw	a4,s8,s11
    e885b694:	00ed1733          	sll	a4,s10,a4
    e885b698:	01977733          	and	a4,a4,s9
    e885b69c:	cf05                	beqz	a4,e885b6d4 <PrintFCoreVAList+0x87c>
					SNPrintF_Add( &dst, lim, "%s%d", ( dst != outStr ) ? " " : "", bit );
    e885b69e:	76ca                	ld	a3,176(sp)
    e885b6a0:	87f2                	mv	a5,t3
    e885b6a2:	861a                	mv	a2,t1
    e885b6a4:	417686b3          	sub	a3,a3,s7
    e885b6a8:	00d036b3          	snez	a3,a3
    e885b6ac:	42d8178b          	mvnez	a5,a6,a3
    e885b6b0:	86be                	mv	a3,a5
    e885b6b2:	876e                	mv	a4,s11
    e885b6b4:	85d2                	mv	a1,s4
    e885b6b6:	1908                	addi	a0,sp,176
    e885b6b8:	6ef000ef          	jal	ra,e885c5a6 <SNPrintF_Add>
    e885b6bc:	00066e17          	auipc	t3,0x66
    e885b6c0:	bb4e0e13          	addi	t3,t3,-1100 # e88c1270 <kHTTPServerClass+0x90>
    e885b6c4:	0004e817          	auipc	a6,0x4e
    e885b6c8:	a3480813          	addi	a6,a6,-1484 # e88a90f8 <hexValues.12413+0x1148>
    e885b6cc:	00067317          	auipc	t1,0x67
    e885b6d0:	71430313          	addi	t1,t1,1812 # e88c2de0 <kPairingSessionClass+0xf0>
			for( bit = 0; bit <= maxBit; ++bit )
    e885b6d4:	2d85                	addiw	s11,s11,1
    e885b6d6:	bf5d                	j	e885b68c <PrintFCoreVAList+0x834>
					if( !F.havePrecision )
    e885b6d8:	04089163          	bnez	a7,e885b71a <PrintFCoreVAList+0x8c2>
						if( F.zeroPad )
    e885b6dc:	8a11                	andi	a2,a2,4
    e885b6de:	ca0d                	beqz	a2,e885b710 <PrintFCoreVAList+0x8b8>
							extra = 0;
    e885b6e0:	4601                	li	a2,0
							if( F.altForm )
    e885b6e2:	c991                	beqz	a1,e885b6f6 <PrintFCoreVAList+0x89e>
								if(      base ==  8 ) extra += 1; // Make room for the leading "0".
    e885b6e4:	4521                	li	a0,8
    e885b6e6:	4605                	li	a2,1
    e885b6e8:	00a78763          	beq	a5,a0,e885b6f6 <PrintFCoreVAList+0x89e>
								else if( base != 10 ) extra += 2; // Make room for the leading "0x", "0b", etc.
    e885b6ec:	4529                	li	a0,10
    e885b6ee:	4609                	li	a2,2
    e885b6f0:	00a79363          	bne	a5,a0,e885b6f6 <PrintFCoreVAList+0x89e>
							extra = 0;
    e885b6f4:	4601                	li	a2,0
							if( F.sign ) extra += 1; // Make room for the leading "+" or "-".
    e885b6f6:	09414503          	lbu	a0,148(sp)
    e885b6fa:	c111                	beqz	a0,e885b6fe <PrintFCoreVAList+0x8a6>
    e885b6fc:	2605                	addiw	a2,a2,1
							F.precision = ( F.fieldWidth > extra ) ? ( F.fieldWidth - extra ) : 0;
    e885b6fe:	456a                	lw	a0,152(sp)
    e885b700:	4801                	li	a6,0
    e885b702:	00a67663          	bgeu	a2,a0,e885b70e <PrintFCoreVAList+0x8b6>
    e885b706:	40c5063b          	subw	a2,a0,a2
    e885b70a:	7c06380b          	extu	a6,a2,31,0
    e885b70e:	f142                	sd	a6,160(sp)
						if( F.precision < 1 ) F.precision = 1;
    e885b710:	760a                	ld	a2,160(sp)
    e885b712:	e601                	bnez	a2,e885b71a <PrintFCoreVAList+0x8c2>
    e885b714:	4605                	li	a2,1
					if( F.precision > ( sizeof( buf ) - 1 ) ) F.precision = sizeof( buf ) - 1;
    e885b716:	f132                	sd	a2,160(sp)
    e885b718:	a031                	j	e885b724 <PrintFCoreVAList+0x8cc>
    e885b71a:	750a                	ld	a0,160(sp)
    e885b71c:	12b00613          	li	a2,299
    e885b720:	fea66be3          	bltu	a2,a0,e885b716 <PrintFCoreVAList+0x8be>
					if( F.group )
    e885b724:	0a814603          	lbu	a2,168(sp)
    e885b728:	ea05                	bnez	a2,e885b758 <PrintFCoreVAList+0x900>
					i = 0;
    e885b72a:	4d01                	li	s10,0
					p = buf + sizeof( buf );
    e885b72c:	8bd2                	mv	s7,s4
							Divide64x32( x, base, remain );
    e885b72e:	7c07b60b          	extu	a2,a5,31,0
						while( x )
    e885b732:	080c8263          	beqz	s9,e885b7b6 <PrintFCoreVAList+0x95e>
							Divide64x32( x, base, remain );
    e885b736:	557d                	li	a0,-1
    e885b738:	9101                	srli	a0,a0,0x20
    e885b73a:	0b956663          	bltu	a0,s9,e885b7e6 <PrintFCoreVAList+0x98e>
    e885b73e:	2c81                	sext.w	s9,s9
    e885b740:	02fcf53b          	remuw	a0,s9,a5
    e885b744:	02fcdcbb          	divuw	s9,s9,a5
    e885b748:	7c0cbc8b          	extu	s9,s9,31,0
							*--p = digits[ remain ]; ++i;
    e885b74c:	90a7450b          	lurbu	a0,a4,a0,0
    e885b750:	2d05                	addiw	s10,s10,1
    e885b752:	09fbd50b          	sbib	a0,(s7),-1,0
    e885b756:	bff1                	j	e885b732 <PrintFCoreVAList+0x8da>
						n = 0;
    e885b758:	4301                	li	t1,0
					i = 0;
    e885b75a:	4881                	li	a7,0
					p = buf + sizeof( buf );
    e885b75c:	8652                	mv	a2,s4
							Divide64x32( x, base, remain );
    e885b75e:	7c07be0b          	extu	t3,a5,31,0
							if( ( n % 3 ) == 0 ) { *--p = ','; ++i; }
    e885b762:	4f0d                	li	t5,3
    e885b764:	02c00e93          	li	t4,44
    e885b768:	a00d                	j	e885b78a <PrintFCoreVAList+0x932>
							Divide64x32( x, base, remain );
    e885b76a:	03ccf533          	remu	a0,s9,t3
    e885b76e:	03ccdcb3          	divu	s9,s9,t3
    e885b772:	a03d                	j	e885b7a0 <PrintFCoreVAList+0x948>
							if( ( n % 3 ) == 0 ) { *--p = ','; ++i; }
    e885b774:	03e3653b          	remw	a0,t1,t5
    e885b778:	e519                	bnez	a0,e885b786 <PrintFCoreVAList+0x92e>
    e885b77a:	ffe60b93          	addi	s7,a2,-2
    e885b77e:	ffd60f23          	sb	t4,-2(a2)
    e885b782:	00288d1b          	addiw	s10,a7,2
							F.precision = ( F.fieldWidth > extra ) ? ( F.fieldWidth - extra ) : 0;
    e885b786:	88ea                	mv	a7,s10
    e885b788:	865e                	mv	a2,s7
							Divide64x32( x, base, remain );
    e885b78a:	557d                	li	a0,-1
    e885b78c:	9101                	srli	a0,a0,0x20
    e885b78e:	fd956ee3          	bltu	a0,s9,e885b76a <PrintFCoreVAList+0x912>
    e885b792:	2c81                	sext.w	s9,s9
    e885b794:	02fcf53b          	remuw	a0,s9,a5
    e885b798:	02fcdcbb          	divuw	s9,s9,a5
    e885b79c:	7c0cbc8b          	extu	s9,s9,31,0
							*--p = digits[ remain ]; ++i; ++n;
    e885b7a0:	90a7450b          	lurbu	a0,a4,a0,0
    e885b7a4:	fff60b93          	addi	s7,a2,-1
    e885b7a8:	00188d1b          	addiw	s10,a7,1
    e885b7ac:	fea60fa3          	sb	a0,-1(a2)
    e885b7b0:	2305                	addiw	t1,t1,1
							if( !x ) break;
    e885b7b2:	fc0c91e3          	bnez	s9,e885b774 <PrintFCoreVAList+0x91c>
					for( ; i < (int) F.precision; ++i )	*--p = '0';
    e885b7b6:	570a                	lw	a4,160(sp)
    e885b7b8:	03000613          	li	a2,48
    e885b7bc:	02ed4a63          	blt	s10,a4,e885b7f0 <PrintFCoreVAList+0x998>
					if( F.altForm )
    e885b7c0:	c991                	beqz	a1,e885b7d4 <PrintFCoreVAList+0x97c>
						if(      base ==  8 ) {                  *--p = '0'; i += 1; }
    e885b7c2:	4721                	li	a4,8
    e885b7c4:	02e79a63          	bne	a5,a4,e885b7f8 <PrintFCoreVAList+0x9a0>
    e885b7c8:	03000793          	li	a5,48
    e885b7cc:	fefb8fa3          	sb	a5,-1(s7)
    e885b7d0:	2d05                	addiw	s10,s10,1
    e885b7d2:	1bfd                	addi	s7,s7,-1
					if( F.sign ) { *--p = F.sign; ++i; }
    e885b7d4:	09414783          	lbu	a5,148(sp)
    e885b7d8:	da0782e3          	beqz	a5,e885b57c <PrintFCoreVAList+0x724>
    e885b7dc:	fefb8fa3          	sb	a5,-1(s7)
    e885b7e0:	2d05                	addiw	s10,s10,1
    e885b7e2:	1bfd                	addi	s7,s7,-1
    e885b7e4:	bb61                	j	e885b57c <PrintFCoreVAList+0x724>
							Divide64x32( x, base, remain );
    e885b7e6:	02ccf533          	remu	a0,s9,a2
    e885b7ea:	02ccdcb3          	divu	s9,s9,a2
    e885b7ee:	bfb9                	j	e885b74c <PrintFCoreVAList+0x8f4>
					for( ; i < (int) F.precision; ++i )	*--p = '0';
    e885b7f0:	09fbd60b          	sbib	a2,(s7),-1,0
    e885b7f4:	2d05                	addiw	s10,s10,1
    e885b7f6:	b7d9                	j	e885b7bc <PrintFCoreVAList+0x964>
						else if( base != 10 ) { *--p = (char) c; *--p = '0'; i += 2; }
    e885b7f8:	4729                	li	a4,10
    e885b7fa:	fce78de3          	beq	a5,a4,e885b7d4 <PrintFCoreVAList+0x97c>
    e885b7fe:	03000793          	li	a5,48
    e885b802:	fedb8fa3          	sb	a3,-1(s7)
    e885b806:	fefb8f23          	sb	a5,-2(s7)
    e885b80a:	2d09                	addiw	s10,s10,2
    e885b80c:	1bf9                	addi	s7,s7,-2
    e885b80e:	b7d9                	j	e885b7d4 <PrintFCoreVAList+0x97c>
				else				  i = snprintf( buf, sizeof( buf ), fpFormat, i, dx );
    e885b810:	e2078753          	fmv.x.d	a4,fa5
    e885b814:	12c00593          	li	a1,300
    e885b818:	0988                	addi	a0,sp,208
    e885b81a:	237200ef          	jal	ra,e887c250 <eLIBs_snprintf>
    e885b81e:	bcd1                	j	e885b2f2 <PrintFCoreVAList+0x49a>
					else				 { F.precision  = 0; F.group = '\0'; }
    e885b820:	f102                	sd	zero,160(sp)
    e885b822:	0a010423          	sb	zero,168(sp)
    e885b826:	beb1                	j	e885b382 <PrintFCoreVAList+0x52a>
			while( s[ i ] != '\0' ) ++i;
    e885b828:	2d05                	addiw	s10,s10,1
    e885b82a:	81abc78b          	lrbu	a5,s7,s10,0
    e885b82e:	ffed                	bnez	a5,e885b828 <PrintFCoreVAList+0x9d0>
    e885b830:	bed9                	j	e885b406 <PrintFCoreVAList+0x5ae>
		i = 0;
    e885b832:	4d01                	li	s10,0
    e885b834:	bfdd                	j	e885b82a <PrintFCoreVAList+0x9d2>
	else if( F->altForm == 1 )	// %#s: Pascal-string
    e885b836:	4785                	li	a5,1
    e885b838:	00f69563          	bne	a3,a5,e885b842 <PrintFCoreVAList+0x9ea>
		i = *s++;
    e885b83c:	981bcd0b          	lbuia	s10,(s7),1,0
    e885b840:	b6d9                	j	e885b406 <PrintFCoreVAList+0x5ae>
	else if( F->altForm == 2 )	// %##s: DNS label-sequence name
    e885b842:	4789                	li	a5,2
    e885b844:	08f69163          	bne	a3,a5,e885b8c6 <PrintFCoreVAList+0xa6e>
		dst = inBuf;
    e885b848:	0d010c93          	addi	s9,sp,208
    e885b84c:	f966                	sd	s9,176(sp)
		if( *a == 0 ) *dst++ = '.';	// Special case for root DNS name.
    e885b84e:	000bc783          	lbu	a5,0(s7)
    e885b852:	eb81                	bnez	a5,e885b862 <PrintFCoreVAList+0xa0a>
    e885b854:	0d110793          	addi	a5,sp,209
    e885b858:	f93e                	sd	a5,176(sp)
    e885b85a:	02e00793          	li	a5,46
    e885b85e:	0cf10823          	sb	a5,208(sp)
			if( *a > 63 )
    e885b862:	03f00d93          	li	s11,63
			if( ( dst + *a ) >= &inBuf[ 254 ] )
    e885b866:	1ce10c13          	addi	s8,sp,462
			SNPrintF_Add( &dst, lim, "%#s.", a );
    e885b86a:	00067d17          	auipc	s10,0x67
    e885b86e:	5b6d0d13          	addi	s10,s10,1462 # e88c2e20 <kPairingSessionClass+0x130>
		while( *a )
    e885b872:	000bc683          	lbu	a3,0(s7)
    e885b876:	ca99                	beqz	a3,e885b88c <PrintFCoreVAList+0xa34>
			if( *a > 63 )
    e885b878:	00ddff63          	bgeu	s11,a3,e885b896 <PrintFCoreVAList+0xa3e>
				SNPrintF_Add( &dst, lim, "<<INVALID DNS LABEL LENGTH %u>>", *a );
    e885b87c:	00067617          	auipc	a2,0x67
    e885b880:	56c60613          	addi	a2,a2,1388 # e88c2de8 <kPairingSessionClass+0xf8>
    e885b884:	85d2                	mv	a1,s4
    e885b886:	1908                	addi	a0,sp,176
    e885b888:	51f000ef          	jal	ra,e885c5a6 <SNPrintF_Add>
		i = (int)( dst - inBuf );
    e885b88c:	784a                	ld	a6,176(sp)
		s = inBuf;
    e885b88e:	8be6                	mv	s7,s9
		i = (int)( dst - inBuf );
    e885b890:	41980d3b          	subw	s10,a6,s9
		s = inBuf;
    e885b894:	be8d                	j	e885b406 <PrintFCoreVAList+0x5ae>
			if( ( dst + *a ) >= &inBuf[ 254 ] )
    e885b896:	77ca                	ld	a5,176(sp)
    e885b898:	96be                	add	a3,a3,a5
    e885b89a:	0186eb63          	bltu	a3,s8,e885b8b0 <PrintFCoreVAList+0xa58>
				SNPrintF_Add( &dst, lim, "<<DNS NAME TOO LONG>>" );
    e885b89e:	00067617          	auipc	a2,0x67
    e885b8a2:	56a60613          	addi	a2,a2,1386 # e88c2e08 <kPairingSessionClass+0x118>
    e885b8a6:	85d2                	mv	a1,s4
    e885b8a8:	1908                	addi	a0,sp,176
    e885b8aa:	4fd000ef          	jal	ra,e885c5a6 <SNPrintF_Add>
				break;
    e885b8ae:	bff9                	j	e885b88c <PrintFCoreVAList+0xa34>
			SNPrintF_Add( &dst, lim, "%#s.", a );
    e885b8b0:	86de                	mv	a3,s7
    e885b8b2:	866a                	mv	a2,s10
    e885b8b4:	85d2                	mv	a1,s4
    e885b8b6:	1908                	addi	a0,sp,176
    e885b8b8:	4ef000ef          	jal	ra,e885c5a6 <SNPrintF_Add>
			a += ( 1 + *a );
    e885b8bc:	000bc783          	lbu	a5,0(s7)
    e885b8c0:	0785                	addi	a5,a5,1
    e885b8c2:	9bbe                	add	s7,s7,a5
    e885b8c4:	b77d                	j	e885b872 <PrintFCoreVAList+0xa1a>
	else if( F->altForm == 3 )	// %###s: Cleansed function name (i.e. isolate just the [<class>::]<function> part).
    e885b8c6:	478d                	li	a5,3
    e885b8c8:	0cf69263          	bne	a3,a5,e885b98c <PrintFCoreVAList+0xb34>
		if( ( *functionStart == '+' ) || ( *functionStart == '-' ) ) // Objective-C class or instance method.
    e885b8cc:	000bc783          	lbu	a5,0(s7)
    e885b8d0:	fd57879b          	addiw	a5,a5,-43
    e885b8d4:	0fd7f793          	andi	a5,a5,253
    e885b8d8:	ef9d                	bnez	a5,e885b916 <PrintFCoreVAList+0xabe>
			s = functionStart + strlen( functionStart );
    e885b8da:	855e                	mv	a0,s7
    e885b8dc:	23d200ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885b8e0:	7c05380b          	extu	a6,a0,31,0
    e885b8e4:	985e                	add	a6,a6,s7
		i = (int)( s - functionStart );
    e885b8e6:	41780d3b          	subw	s10,a6,s7
		s = functionStart;
    e885b8ea:	be31                	j	e885b406 <PrintFCoreVAList+0x5ae>
				if( c == ' ' ) functionStart = s + 1;
    e885b8ec:	8f91                	sub	a5,a5,a2
    e885b8ee:	0805                	addi	a6,a6,1
    e885b8f0:	00f037b3          	snez	a5,a5
    e885b8f4:	40f8170b          	mveqz	a4,a6,a5
			for( s = inStr; ( ( c = *s ) != '\0' ) && ( c != ':' ); ++s )
    e885b8f8:	00084783          	lbu	a5,0(a6)
    e885b8fc:	c799                	beqz	a5,e885b90a <PrintFCoreVAList+0xab2>
    e885b8fe:	fed797e3          	bne	a5,a3,e885b8ec <PrintFCoreVAList+0xa94>
			if( c == ':' ) ++s;
    e885b902:	00184783          	lbu	a5,1(a6)
    e885b906:	00d78f63          	beq	a5,a3,e885b924 <PrintFCoreVAList+0xacc>
			for( s = inStr; ( ( c = *s ) != '\0' ) && ( c != ':' ); ++s )
    e885b90a:	885e                	mv	a6,s7
				for( s = inStr; ( ( c = *s ) != '\0' ) && ( c != '(' ); ++s )
    e885b90c:	02800713          	li	a4,40
					if( c == ' ' ) functionStart = s + 1;
    e885b910:	02000693          	li	a3,32
    e885b914:	a01d                	j	e885b93a <PrintFCoreVAList+0xae2>
				src = va_arg( vaArgs.args, const char * );
    e885b916:	875e                	mv	a4,s7
    e885b918:	885e                	mv	a6,s7
			for( s = inStr; ( ( c = *s ) != '\0' ) && ( c != ':' ); ++s )
    e885b91a:	03a00693          	li	a3,58
				if( c == ' ' ) functionStart = s + 1;
    e885b91e:	02000613          	li	a2,32
    e885b922:	bfd9                	j	e885b8f8 <PrintFCoreVAList+0xaa0>
			if( c == ':' ) ++s;
    e885b924:	0809                	addi	a6,a6,2
    e885b926:	8bba                	mv	s7,a4
			for( ; ( ( c = *s ) != '\0' ) && ( c != ' ' ) && ( c != '(' ); ++s ) {}
    e885b928:	02800713          	li	a4,40
    e885b92c:	a831                	j	e885b948 <PrintFCoreVAList+0xaf0>
					if( c == ' ' ) functionStart = s + 1;
    e885b92e:	8f95                	sub	a5,a5,a3
    e885b930:	0805                	addi	a6,a6,1
    e885b932:	00f037b3          	snez	a5,a5
    e885b936:	40f81b8b          	mveqz	s7,a6,a5
				for( s = inStr; ( ( c = *s ) != '\0' ) && ( c != '(' ); ++s )
    e885b93a:	00084783          	lbu	a5,0(a6)
    e885b93e:	d7ed                	beqz	a5,e885b928 <PrintFCoreVAList+0xad0>
    e885b940:	fee797e3          	bne	a5,a4,e885b92e <PrintFCoreVAList+0xad6>
    e885b944:	b7d5                	j	e885b928 <PrintFCoreVAList+0xad0>
			for( ; ( ( c = *s ) != '\0' ) && ( c != ' ' ) && ( c != '(' ); ++s ) {}
    e885b946:	0805                	addi	a6,a6,1
    e885b948:	00084783          	lbu	a5,0(a6)
    e885b94c:	0df7f693          	andi	a3,a5,223
    e885b950:	ce91                	beqz	a3,e885b96c <PrintFCoreVAList+0xb14>
    e885b952:	fee79ae3          	bne	a5,a4,e885b946 <PrintFCoreVAList+0xaee>
			if( (      s[ 0 ] == '(' ) && ( s[ 1 ] == ')' ) && ( s[ 2 ] == '('   ) ) s += 2;
    e885b956:	00184683          	lbu	a3,1(a6)
    e885b95a:	02900793          	li	a5,41
    e885b95e:	00f69763          	bne	a3,a5,e885b96c <PrintFCoreVAList+0xb14>
    e885b962:	00284783          	lbu	a5,2(a6)
    e885b966:	00e79d63          	bne	a5,a4,e885b980 <PrintFCoreVAList+0xb28>
    e885b96a:	0809                	addi	a6,a6,2
			if( ( functionStart < s ) && ( *functionStart == '*' ) ) ++functionStart;
    e885b96c:	f70bfde3          	bgeu	s7,a6,e885b8e6 <PrintFCoreVAList+0xa8e>
    e885b970:	000bc703          	lbu	a4,0(s7)
    e885b974:	02a00793          	li	a5,42
    e885b978:	f6f717e3          	bne	a4,a5,e885b8e6 <PrintFCoreVAList+0xa8e>
    e885b97c:	0b85                	addi	s7,s7,1
    e885b97e:	b7a5                	j	e885b8e6 <PrintFCoreVAList+0xa8e>
			else if( ( s[ 0 ] == '(' ) && ( s[ 1 ] == ')' ) && ( s[ 2 ] == '\''  ) ) s += 3;
    e885b980:	02700713          	li	a4,39
    e885b984:	fee794e3          	bne	a5,a4,e885b96c <PrintFCoreVAList+0xb14>
    e885b988:	080d                	addi	a6,a6,3
    e885b98a:	b7cd                	j	e885b96c <PrintFCoreVAList+0xb14>
		i = SNPrintF( inBuf, kPrintFBufSize, "<< ERROR: %%s with too many #'s (%d) >>", F->altForm );
    e885b98c:	00067617          	auipc	a2,0x67
    e885b990:	49c60613          	addi	a2,a2,1180 # e88c2e28 <kPairingSessionClass+0x138>
    e885b994:	12c00593          	li	a1,300
    e885b998:	0988                	addi	a0,sp,208
    e885b99a:	3f1000ef          	jal	ra,e885c58a <SNPrintF>
    e885b99e:	8d2a                	mv	s10,a0
		s = inBuf;
    e885b9a0:	0d010b93          	addi	s7,sp,208
    e885b9a4:	b48d                	j	e885b406 <PrintFCoreVAList+0x5ae>
		for( i = (int) F->precision; ( i > 0 ) && ( ( s[ i ] & 0xC0 ) == 0x80 ); --i ) {}
    e885b9a6:	3d7d                	addiw	s10,s10,-1
    e885b9a8:	bc9d                	j	e885b41e <PrintFCoreVAList+0x5c6>
				else if( F.group == 2 ) { F.prefix = '"';  F.suffix = '"'; }
    e885b9aa:	4709                	li	a4,2
				else if( F.group == 2 ) { F.prefix = '"';  F.suffix = '"'; }
    e885b9ac:	bce798e3          	bne	a5,a4,e885b57c <PrintFCoreVAList+0x724>
    e885b9b0:	6789                	lui	a5,0x2
    e885b9b2:	2227879b          	addiw	a5,a5,546
    e885b9b6:	b461                	j	e885b43e <PrintFCoreVAList+0x5e6>
				if( F.suppress ) continue;
    e885b9b8:	09014583          	lbu	a1,144(sp)
				a = va_arg( vaArgs.args, uint8_t * );
    e885b9bc:	87a2                	mv	a5,s0
    e885b9be:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885b9c0:	0105f713          	andi	a4,a1,16
    e885b9c4:	42071f63          	bnez	a4,e885be02 <PrintFCoreVAList+0xfaa>
				a = va_arg( vaArgs.args, uint8_t * );
    e885b9c8:	6390                	ld	a2,0(a5)
				if( !a && ( !F.havePrecision || ( F.precision != 0 ) ) ) { s = "<<NULL>>"; i = 8; break; }
    e885b9ca:	89a1                	andi	a1,a1,8
    e885b9cc:	e611                	bnez	a2,e885b9d8 <PrintFCoreVAList+0xb80>
    e885b9ce:	30058ee3          	beqz	a1,e885c4ea <PrintFCoreVAList+0x1692>
    e885b9d2:	778a                	ld	a5,160(sp)
    e885b9d4:	30079be3          	bnez	a5,e885c4ea <PrintFCoreVAList+0x1692>
				if( F.group && F.havePrecision )
    e885b9d8:	0a814783          	lbu	a5,168(sp)
    e885b9dc:	cbad                	beqz	a5,e885ba4e <PrintFCoreVAList+0xbf6>
    e885b9de:	c9ad                	beqz	a1,e885ba50 <PrintFCoreVAList+0xbf8>
					if( F.precision >= 2 ) F.precision -= 2;
    e885b9e0:	778a                	ld	a5,160(sp)
    e885b9e2:	4705                	li	a4,1
    e885b9e4:	06f77163          	bgeu	a4,a5,e885ba46 <PrintFCoreVAList+0xbee>
    e885b9e8:	17f9                	addi	a5,a5,-2
    e885b9ea:	f13e                	sd	a5,160(sp)
	if( !F->havePrecision || ( F->precision > 0 ) )
    e885b9ec:	778a                	ld	a5,160(sp)
    e885b9ee:	e3ad                	bnez	a5,e885ba50 <PrintFCoreVAList+0xbf8>
	switch( F->altForm )
    e885b9f0:	09314703          	lbu	a4,147(sp)
    e885b9f4:	86ba                	mv	a3,a4
    e885b9f6:	cb59                	beqz	a4,e885ba8c <PrintFCoreVAList+0xc34>
    e885b9f8:	4789                	li	a5,2
    e885b9fa:	0ee7e263          	bltu	a5,a4,e885bade <PrintFCoreVAList+0xc86>
			endianIndex = 1 - ( F->altForm - 1 );
    e885b9fe:	4789                	li	a5,2
			for( i = 0; ( !F->havePrecision || ( i < (int) F->precision ) ) && u[ i ] && ( ( q - p ) > 0 ); ++i )
    e885ba00:	588a                	lw	a7,160(sp)
			endianIndex = 1 - ( F->altForm - 1 );
    e885ba02:	40e786bb          	subw	a3,a5,a4
	p = inBuf;
    e885ba06:	0988                	addi	a0,sp,208
			for( i = 0; ( !F->havePrecision || ( i < (int) F->precision ) ) && u[ i ] && ( ( q - p ) > 0 ); ++i )
    e885ba08:	4701                	li	a4,0
				*p++ = PrintFMakePrintable( a[ endianIndex ] );
    e885ba0a:	96b2                	add	a3,a3,a2
    e885ba0c:	05e00313          	li	t1,94
    e885ba10:	00070d1b          	sext.w	s10,a4
			for( i = 0; ( !F->havePrecision || ( i < (int) F->precision ) ) && u[ i ] && ( ( q - p ) > 0 ); ++i )
    e885ba14:	c199                	beqz	a1,e885ba1a <PrintFCoreVAList+0xbc2>
    e885ba16:	091d5a63          	bge	s10,a7,e885baaa <PrintFCoreVAList+0xc52>
    e885ba1a:	a3a6478b          	lrhu	a5,a2,s10,1
    e885ba1e:	c7d1                	beqz	a5,e885baaa <PrintFCoreVAList+0xc52>
    e885ba20:	40aa07b3          	sub	a5,s4,a0
    e885ba24:	08f05363          	blez	a5,e885baaa <PrintFCoreVAList+0xc52>
				*p++ = PrintFMakePrintable( a[ endianIndex ] );
    e885ba28:	82e6c78b          	lrbu	a5,a3,a4,1
    e885ba2c:	fe07881b          	addiw	a6,a5,-32
    e885ba30:	0ff87813          	andi	a6,a6,255
    e885ba34:	01037563          	bgeu	t1,a6,e885ba3e <PrintFCoreVAList+0xbe6>
    e885ba38:	e3c5                	bnez	a5,e885bad8 <PrintFCoreVAList+0xc80>
    e885ba3a:	02e00793          	li	a5,46
    e885ba3e:	1815578b          	sbia	a5,(a0),1,0
			for( i = 0; ( !F->havePrecision || ( i < (int) F->precision ) ) && u[ i ] && ( ( q - p ) > 0 ); ++i )
    e885ba42:	0705                	addi	a4,a4,1
    e885ba44:	b7f1                	j	e885ba10 <PrintFCoreVAList+0xbb8>
					else				 { F.precision  = 0; F.group = '\0'; }
    e885ba46:	f102                	sd	zero,160(sp)
    e885ba48:	0a010423          	sb	zero,168(sp)
    e885ba4c:	b745                	j	e885b9ec <PrintFCoreVAList+0xb94>
	if( !F->havePrecision || ( F->precision > 0 ) )
    e885ba4e:	fdd9                	bnez	a1,e885b9ec <PrintFCoreVAList+0xb94>
		if(      ( a[ 0 ] == 0xFE ) && ( a[ 1 ] == 0xFF ) ) { F->altForm = 1; a += 2; --F->precision; } // Big Endian
    e885ba50:	00064703          	lbu	a4,0(a2)
    e885ba54:	0fe00793          	li	a5,254
    e885ba58:	02f71063          	bne	a4,a5,e885ba78 <PrintFCoreVAList+0xc20>
    e885ba5c:	00164703          	lbu	a4,1(a2)
    e885ba60:	0ff00793          	li	a5,255
    e885ba64:	f8f716e3          	bne	a4,a5,e885b9f0 <PrintFCoreVAList+0xb98>
    e885ba68:	4785                	li	a5,1
		else if( ( a[ 0 ] == 0xFF ) && ( a[ 1 ] == 0xFE ) ) { F->altForm = 2; a += 2; --F->precision; } // Little Endian
    e885ba6a:	08f109a3          	sb	a5,147(sp)
    e885ba6e:	778a                	ld	a5,160(sp)
    e885ba70:	0609                	addi	a2,a2,2
    e885ba72:	17fd                	addi	a5,a5,-1
    e885ba74:	f13e                	sd	a5,160(sp)
    e885ba76:	bfad                	j	e885b9f0 <PrintFCoreVAList+0xb98>
    e885ba78:	0ff00693          	li	a3,255
    e885ba7c:	f6d71ae3          	bne	a4,a3,e885b9f0 <PrintFCoreVAList+0xb98>
    e885ba80:	00164703          	lbu	a4,1(a2)
    e885ba84:	f6f716e3          	bne	a4,a5,e885b9f0 <PrintFCoreVAList+0xb98>
    e885ba88:	4789                	li	a5,2
    e885ba8a:	b7c5                	j	e885ba6a <PrintFCoreVAList+0xc12>
			for( i = 0; ( !F->havePrecision || ( i < (int) F->precision ) ) && u[ i ] && ( ( q - p ) > 0 ); ++i )
    e885ba8c:	550a                	lw	a0,160(sp)
	p = inBuf;
    e885ba8e:	0998                	addi	a4,sp,208
			for( i = 0; ( !F->havePrecision || ( i < (int) F->precision ) ) && u[ i ] && ( ( q - p ) > 0 ); ++i )
    e885ba90:	4d01                	li	s10,0
				*p++ = PrintFMakePrintable( u[ i ] );
    e885ba92:	05e00893          	li	a7,94
			for( i = 0; ( !F->havePrecision || ( i < (int) F->precision ) ) && u[ i ] && ( ( q - p ) > 0 ); ++i )
    e885ba96:	c199                	beqz	a1,e885ba9c <PrintFCoreVAList+0xc44>
    e885ba98:	00ad5963          	bge	s10,a0,e885baaa <PrintFCoreVAList+0xc52>
    e885ba9c:	a3a6478b          	lrhu	a5,a2,s10,1
    e885baa0:	c789                	beqz	a5,e885baaa <PrintFCoreVAList+0xc52>
    e885baa2:	40ea06b3          	sub	a3,s4,a4
    e885baa6:	00d04d63          	bgtz	a3,e885bac0 <PrintFCoreVAList+0xc68>
				if(      F.group == 1 ) { F.prefix = '\''; F.suffix = '\''; }
    e885baaa:	0a814783          	lbu	a5,168(sp)
    e885baae:	4705                	li	a4,1
    e885bab0:	04e79263          	bne	a5,a4,e885baf4 <PrintFCoreVAList+0xc9c>
    e885bab4:	6789                	lui	a5,0x2
    e885bab6:	7277879b          	addiw	a5,a5,1831
    e885baba:	0af114a3          	sh	a5,169(sp)
    e885babe:	b82d                	j	e885b2f8 <PrintFCoreVAList+0x4a0>
				*p++ = PrintFMakePrintable( u[ i ] );
    e885bac0:	fe07869b          	addiw	a3,a5,-32
    e885bac4:	3c06b68b          	extu	a3,a3,15,0
    e885bac8:	00d8f463          	bgeu	a7,a3,e885bad0 <PrintFCoreVAList+0xc78>
    e885bacc:	05e00793          	li	a5,94
    e885bad0:	1817578b          	sbia	a5,(a4),1,0
			for( i = 0; ( !F->havePrecision || ( i < (int) F->precision ) ) && u[ i ] && ( ( q - p ) > 0 ); ++i )
    e885bad4:	2d05                	addiw	s10,s10,1
    e885bad6:	b7c1                	j	e885ba96 <PrintFCoreVAList+0xc3e>
				*p++ = PrintFMakePrintable( a[ endianIndex ] );
    e885bad8:	05e00793          	li	a5,94
    e885badc:	b78d                	j	e885ba3e <PrintFCoreVAList+0xbe6>
			i = SNPrintF( inBuf, kPrintFBufSize, "<< ERROR: %%S with too many #'s (%d) >>", F->altForm );
    e885bade:	00067617          	auipc	a2,0x67
    e885bae2:	37260613          	addi	a2,a2,882 # e88c2e50 <kPairingSessionClass+0x160>
    e885bae6:	12c00593          	li	a1,300
    e885baea:	0988                	addi	a0,sp,208
    e885baec:	29f000ef          	jal	ra,e885c58a <SNPrintF>
    e885baf0:	8d2a                	mv	s10,a0
			break;
    e885baf2:	bf65                	j	e885baaa <PrintFCoreVAList+0xc52>
				else if( F.group == 2 ) { F.prefix = '"';  F.suffix = '"'; }
    e885baf4:	4709                	li	a4,2
				s = buf;
    e885baf6:	0d010b93          	addi	s7,sp,208
    e885bafa:	bd4d                	j	e885b9ac <PrintFCoreVAList+0xb54>
				if( F.suppress ) continue;
    e885bafc:	09014783          	lbu	a5,144(sp)
				a = va_arg( vaArgs.args, uint8_t * );
    e885bb00:	8722                	mv	a4,s0
    e885bb02:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885bb04:	0107f693          	andi	a3,a5,16
    e885bb08:	2e069d63          	bnez	a3,e885be02 <PrintFCoreVAList+0xfaa>
				a = va_arg( vaArgs.args, uint8_t * );
    e885bb0c:	00073b83          	ld	s7,0(a4)
					if( !cfObj ) cfObj = CFSTR( "<<NULL>>" );
    e885bb10:	000b9663          	bnez	s7,e885bb1c <PrintFCoreVAList+0xcc4>
    e885bb14:	00042b97          	auipc	s7,0x42
    e885bb18:	c5cb8b93          	addi	s7,s7,-932 # e889d770 <icmp6_param_problem+0x702>
					if( F.group && F.havePrecision )
    e885bb1c:	0a814703          	lbu	a4,168(sp)
    e885bb20:	cb09                	beqz	a4,e885bb32 <PrintFCoreVAList+0xcda>
    e885bb22:	8ba1                	andi	a5,a5,8
    e885bb24:	c799                	beqz	a5,e885bb32 <PrintFCoreVAList+0xcda>
						if( F.precision >= 2 ) F.precision -= 2;
    e885bb26:	778a                	ld	a5,160(sp)
    e885bb28:	4705                	li	a4,1
    e885bb2a:	04f77a63          	bgeu	a4,a5,e885bb7e <PrintFCoreVAList+0xd26>
    e885bb2e:	17f9                	addi	a5,a5,-2
    e885bb30:	f13e                	sd	a5,160(sp)
					if(      F.group == 1 ) { F.prefix = '\''; F.suffix = '\''; }
    e885bb32:	0a814783          	lbu	a5,168(sp)
    e885bb36:	4705                	li	a4,1
    e885bb38:	04e79763          	bne	a5,a4,e885bb86 <PrintFCoreVAList+0xd2e>
    e885bb3c:	6789                	lui	a5,0x2
    e885bb3e:	7277879b          	addiw	a5,a5,1831
					else if( F.group == 2 ) { F.prefix = '"';  F.suffix = '"'; }
    e885bb42:	0af114a3          	sh	a5,169(sp)
	typeID = CFGetTypeID( inObj );
    e885bb46:	855e                	mv	a0,s7
    e885bb48:	deaeb0ef          	jal	ra,e8847132 <CFGetTypeID>
    e885bb4c:	00050c9b          	sext.w	s9,a0
	if( typeID == CFBooleanGetTypeID() )
    e885bb50:	f3eeb0ef          	jal	ra,e884728e <CFBooleanGetTypeID>
    e885bb54:	2501                	sext.w	a0,a0
    e885bb56:	04ac9563          	bne	s9,a0,e885bba0 <PrintFCoreVAList+0xd48>
		if(      ( (CFBooleanRef) inObj ) == kCFBooleanTrue )	{ s = "true";   n = 4; }
    e885bb5a:	00079797          	auipc	a5,0x79
    e885bb5e:	17678793          	addi	a5,a5,374 # e88d4cd0 <kCFLBooleanTrue>
    e885bb62:	639c                	ld	a5,0(a5)
    e885bb64:	02fb8863          	beq	s7,a5,e885bb94 <PrintFCoreVAList+0xd3c>
		else													{ s = "false";  n = 5; }
    e885bb68:	4695                	li	a3,5
    e885bb6a:	0004c617          	auipc	a2,0x4c
    e885bb6e:	9be60613          	addi	a2,a2,-1602 # e88a7528 <end.8789+0x3e80>
		total = PrintFWriteText( inContext, inFormat, inBuffer, (size_t) n );
    e885bb72:	85d6                	mv	a1,s5
    e885bb74:	8526                	mv	a0,s1
    e885bb76:	90cff0ef          	jal	ra,e885ac82 <PrintFWriteText>
					else						err = PrintFCore( inContext, "<< BAD %%H PRECISION >>" );
    e885bb7a:	8d2a                	mv	s10,a0
    e885bb7c:	a0f5                	j	e885bc68 <PrintFCoreVAList+0xe10>
						else				 { F.precision  = 0; F.group = '\0'; }
    e885bb7e:	f102                	sd	zero,160(sp)
    e885bb80:	0a010423          	sb	zero,168(sp)
    e885bb84:	b77d                	j	e885bb32 <PrintFCoreVAList+0xcda>
					else if( F.group == 2 ) { F.prefix = '"';  F.suffix = '"'; }
    e885bb86:	4709                	li	a4,2
    e885bb88:	fae79fe3          	bne	a5,a4,e885bb46 <PrintFCoreVAList+0xcee>
    e885bb8c:	6789                	lui	a5,0x2
    e885bb8e:	2227879b          	addiw	a5,a5,546
    e885bb92:	bf45                	j	e885bb42 <PrintFCoreVAList+0xcea>
		if(      ( (CFBooleanRef) inObj ) == kCFBooleanTrue )	{ s = "true";   n = 4; }
    e885bb94:	4691                	li	a3,4
    e885bb96:	0004c617          	auipc	a2,0x4c
    e885bb9a:	98a60613          	addi	a2,a2,-1654 # e88a7520 <end.8789+0x3e78>
		total = PrintFWriteText( inContext, inFormat, s, (size_t) n );
    e885bb9e:	bfd1                	j	e885bb72 <PrintFCoreVAList+0xd1a>
	else if( typeID == CFNumberGetTypeID() )
    e885bba0:	8cbeb0ef          	jal	ra,e884746a <CFNumberGetTypeID>
    e885bba4:	2501                	sext.w	a0,a0
    e885bba6:	04ac9a63          	bne	s9,a0,e885bbfa <PrintFCoreVAList+0xda2>
			if( CFNumberIsFloatType( (CFNumberRef) inObj ) )
    e885bbaa:	855e                	mv	a0,s7
    e885bbac:	ba2ed0ef          	jal	ra,e8848f4e <CFLNumberIsFloatType>
    e885bbb0:	c505                	beqz	a0,e885bbd8 <PrintFCoreVAList+0xd80>
				CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &dval );
    e885bbb2:	1910                	addi	a2,sp,176
    e885bbb4:	45b5                	li	a1,13
    e885bbb6:	855e                	mv	a0,s7
				double		dval = 0;
    e885bbb8:	f902                	sd	zero,176(sp)
				CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &dval );
    e885bbba:	8c9eb0ef          	jal	ra,e8847482 <CFNumberGetValue>
				n = SNPrintF( inBuffer, kPrintFBufSize, "%f", dval );
    e885bbbe:	76ca                	ld	a3,176(sp)
    e885bbc0:	00063617          	auipc	a2,0x63
    e885bbc4:	29860613          	addi	a2,a2,664 # e88bee58 <kCFRunLoopTimerClass+0xb0>
    e885bbc8:	12c00593          	li	a1,300
    e885bbcc:	0988                	addi	a0,sp,208
    e885bbce:	1bd000ef          	jal	ra,e885c58a <SNPrintF>
		total = PrintFWriteText( inContext, inFormat, inBuffer, (size_t) n );
    e885bbd2:	86aa                	mv	a3,a0
    e885bbd4:	0990                	addi	a2,sp,208
    e885bbd6:	bf71                	j	e885bb72 <PrintFCoreVAList+0xd1a>
				CFNumberGetValue( (CFNumberRef) inObj, kCFNumberSInt64Type, &s64 );
    e885bbd8:	1910                	addi	a2,sp,176
    e885bbda:	4591                	li	a1,4
    e885bbdc:	855e                	mv	a0,s7
				int64_t		s64 = 0;
    e885bbde:	f902                	sd	zero,176(sp)
				CFNumberGetValue( (CFNumberRef) inObj, kCFNumberSInt64Type, &s64 );
    e885bbe0:	8a3eb0ef          	jal	ra,e8847482 <CFNumberGetValue>
				n = SNPrintF( inBuffer, kPrintFBufSize, "%lld", s64 );
    e885bbe4:	76ca                	ld	a3,176(sp)
    e885bbe6:	00063617          	auipc	a2,0x63
    e885bbea:	27a60613          	addi	a2,a2,634 # e88bee60 <kCFRunLoopTimerClass+0xb8>
    e885bbee:	12c00593          	li	a1,300
    e885bbf2:	0988                	addi	a0,sp,208
    e885bbf4:	197000ef          	jal	ra,e885c58a <SNPrintF>
    e885bbf8:	bfe9                	j	e885bbd2 <PrintFCoreVAList+0xd7a>
	else if( typeID == CFStringGetTypeID() )
    e885bbfa:	89beb0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e885bbfe:	2501                	sext.w	a0,a0
    e885bc00:	0aac9263          	bne	s9,a0,e885bca4 <PrintFCoreVAList+0xe4c>
		cfLen = CFStringGetLength( cfStr );
    e885bc04:	855e                	mv	a0,s7
    e885bc06:	99deb0ef          	jal	ra,e88475a2 <CFStringGetLength>
		size = (size_t) CFStringGetMaximumSizeForEncoding( cfLen, kCFStringEncodingUTF8 );
    e885bc0a:	08000db7          	lui	s11,0x8000
    e885bc0e:	100d8593          	addi	a1,s11,256 # 8000100 <memcmp-0xe07fff00>
		cfLen = CFStringGetLength( cfStr );
    e885bc12:	8caa                	mv	s9,a0
		size = (size_t) CFStringGetMaximumSizeForEncoding( cfLen, kCFStringEncodingUTF8 );
    e885bc14:	9a3eb0ef          	jal	ra,e88475b6 <CFStringGetMaximumSizeForEncoding>
		if( size > 0 )
    e885bc18:	f4aa                	sd	a0,104(sp)
    e885bc1a:	cd3d                	beqz	a0,e885bc98 <PrintFCoreVAList+0xe40>
			cStr = (char *) malloc( size );
    e885bc1c:	4331f0ef          	jal	ra,e887b84e <my_malloc>
    e885bc20:	8c2a                	mv	s8,a0
			require_action_quiet( cStr, exit, total = kNoMemoryErr );
    e885bc22:	7826                	ld	a6,104(sp)
    e885bc24:	e511                	bnez	a0,e885bc30 <PrintFCoreVAList+0xdd8>
    e885bc26:	7879                	lui	a6,0xffffe
    e885bc28:	5b880d13          	addi	s10,a6,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e885bc2c:	c68ff06f          	j	e885b094 <PrintFCoreVAList+0x23c>
			CFStringGetBytes( cfStr, range, kCFStringEncodingUTF8, '^', false, (UInt8 *) cStr, (CFIndex) size, &i );
    e885bc30:	87aa                	mv	a5,a0
    e885bc32:	020c9593          	slli	a1,s9,0x20
    e885bc36:	0b010893          	addi	a7,sp,176
    e885bc3a:	4701                	li	a4,0
    e885bc3c:	05e00693          	li	a3,94
    e885bc40:	100d8613          	addi	a2,s11,256
    e885bc44:	855e                	mv	a0,s7
			i = 0;
    e885bc46:	d902                	sw	zero,176(sp)
			CFStringGetBytes( cfStr, range, kCFStringEncodingUTF8, '^', false, (UInt8 *) cStr, (CFIndex) size, &i );
    e885bc48:	9d9eb0ef          	jal	ra,e8847620 <CFStringGetBytes>
			if( inFormat->havePrecision && ( i > (CFIndex) inFormat->precision ) )
    e885bc4c:	09014783          	lbu	a5,144(sp)
    e885bc50:	8ba1                	andi	a5,a5,8
    e885bc52:	e385                	bnez	a5,e885bc72 <PrintFCoreVAList+0xe1a>
			total = PrintFWriteText( inContext, inFormat, cStr, (size_t) i );
    e885bc54:	56ca                	lw	a3,176(sp)
    e885bc56:	8662                	mv	a2,s8
    e885bc58:	85d6                	mv	a1,s5
    e885bc5a:	8526                	mv	a0,s1
    e885bc5c:	826ff0ef          	jal	ra,e885ac82 <PrintFWriteText>
    e885bc60:	8d2a                	mv	s10,a0
			free( cStr );
    e885bc62:	8562                	mv	a0,s8
    e885bc64:	69c200ef          	jal	ra,e887c300 <eLIBs_free>
					if( err < 0 ) goto error;
    e885bc68:	c20d4663          	bltz	s10,e885b094 <PrintFCoreVAList+0x23c>
		total += err;
    e885bc6c:	01a9093b          	addw	s2,s2,s10
    e885bc70:	aa49                	j	e885be02 <PrintFCoreVAList+0xfaa>
			if( inFormat->havePrecision && ( i > (CFIndex) inFormat->precision ) )
    e885bc72:	578a                	lw	a5,160(sp)
    e885bc74:	574a                	lw	a4,176(sp)
    e885bc76:	fce7dfe3          	bge	a5,a4,e885bc54 <PrintFCoreVAList+0xdfc>
				for( i = (int) inFormat->precision; ( i > 0 ) && ( ( cStr[ i ] & 0xC0 ) == 0x80 ); --i ) {}
    e885bc7a:	d93e                	sw	a5,176(sp)
    e885bc7c:	08000693          	li	a3,128
    e885bc80:	57ca                	lw	a5,176(sp)
    e885bc82:	fcf059e3          	blez	a5,e885bc54 <PrintFCoreVAList+0xdfc>
    e885bc86:	80fc470b          	lrbu	a4,s8,a5,0
    e885bc8a:	0c077713          	andi	a4,a4,192
    e885bc8e:	fcd713e3          	bne	a4,a3,e885bc54 <PrintFCoreVAList+0xdfc>
    e885bc92:	37fd                	addiw	a5,a5,-1
    e885bc94:	d93e                	sw	a5,176(sp)
    e885bc96:	b7ed                	j	e885bc80 <PrintFCoreVAList+0xe28>
			total = PrintFWriteText( inContext, inFormat, "", 0 );
    e885bc98:	4681                	li	a3,0
    e885bc9a:	00065617          	auipc	a2,0x65
    e885bc9e:	5d660613          	addi	a2,a2,1494 # e88c1270 <kHTTPServerClass+0x90>
    e885bca2:	bdc1                	j	e885bb72 <PrintFCoreVAList+0xd1a>
	else if( typeID == CFNullGetTypeID() )
    e885bca4:	d9fec0ef          	jal	ra,e8848a42 <CFLNullGetTypeID>
    e885bca8:	2501                	sext.w	a0,a0
    e885bcaa:	00ac9863          	bne	s9,a0,e885bcba <PrintFCoreVAList+0xe62>
		total = PrintFWriteText( inContext, inFormat, "Null", 4 );
    e885bcae:	4691                	li	a3,4
    e885bcb0:	00067617          	auipc	a2,0x67
    e885bcb4:	1c860613          	addi	a2,a2,456 # e88c2e78 <kPairingSessionClass+0x188>
    e885bcb8:	bd6d                	j	e885bb72 <PrintFCoreVAList+0xd1a>
		cfContext.indent	= (int) inFormat->fieldWidth;
    e885bcba:	47ea                	lw	a5,152(sp)
		total = PrintFWriteCFObjectLevel( &cfContext, inObj, false );
    e885bcbc:	4601                	li	a2,0
    e885bcbe:	85de                	mv	a1,s7
    e885bcc0:	1908                	addi	a0,sp,176
		cfContext.context	= inContext;
    e885bcc2:	f926                	sd	s1,176(sp)
		cfContext.format	= inFormat;
    e885bcc4:	fd56                	sd	s5,184(sp)
		cfContext.indent	= (int) inFormat->fieldWidth;
    e885bcc6:	c1be                	sw	a5,192(sp)
		cfContext.error		= kNoErr;
    e885bcc8:	c582                	sw	zero,200(sp)
		total = PrintFWriteCFObjectLevel( &cfContext, inObj, false );
    e885bcca:	58f000ef          	jal	ra,e885ca58 <PrintFWriteCFObjectLevel>
    e885bcce:	8d2a                	mv	s10,a0
		require_quiet( total >= 0, exit );
    e885bcd0:	f8054ce3          	bltz	a0,e885bc68 <PrintFCoreVAList+0xe10>
		if( ( typeID == CFArrayGetTypeID() ) || ( typeID == CFDictionaryGetTypeID() ) )
    e885bcd4:	c94eb0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e885bcd8:	2501                	sext.w	a0,a0
    e885bcda:	00ac9f63          	bne	s9,a0,e885bcf8 <PrintFCoreVAList+0xea0>
			n = inContext->callback( "\n", 1, inContext );
    e885bcde:	609c                	ld	a5,0(s1)
    e885bce0:	8626                	mv	a2,s1
    e885bce2:	4585                	li	a1,1
    e885bce4:	00044517          	auipc	a0,0x44
    e885bce8:	f9c50513          	addi	a0,a0,-100 # e889fc80 <TWO52+0x88>
    e885bcec:	9782                	jalr	a5
			require_action_quiet( n > 0, exit, total = n );
    e885bcee:	e8a056e3          	blez	a0,e885bb7a <PrintFCoreVAList+0xd22>
			total += n;
    e885bcf2:	00ad0d3b          	addw	s10,s10,a0
    e885bcf6:	bf8d                	j	e885bc68 <PrintFCoreVAList+0xe10>
		if( ( typeID == CFArrayGetTypeID() ) || ( typeID == CFDictionaryGetTypeID() ) )
    e885bcf8:	eaaeb0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e885bcfc:	2501                	sext.w	a0,a0
    e885bcfe:	f6ac95e3          	bne	s9,a0,e885bc68 <PrintFCoreVAList+0xe10>
    e885bd02:	bff1                	j	e885bcde <PrintFCoreVAList+0xe86>
				if( F.suppress ) continue;
    e885bd04:	09014783          	lbu	a5,144(sp)
				errCode = va_arg( vaArgs.args, OSStatus );
    e885bd08:	8722                	mv	a4,s0
    e885bd0a:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885bd0c:	8bc1                	andi	a5,a5,16
    e885bd0e:	0e079a63          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
				errCode = va_arg( vaArgs.args, OSStatus );
    e885bd12:	4314                	lw	a3,0(a4)
				if( F.altForm )
    e885bd14:	09314603          	lbu	a2,147(sp)
    e885bd18:	0d010b93          	addi	s7,sp,208
    e885bd1c:	87b6                	mv	a5,a3
    e885bd1e:	ce41                	beqz	a2,e885bdb6 <PrintFCoreVAList+0xf5e>
					if( PrintFIsPrintable( ( errCode >> 24 ) & 0xFF ) && 
    e885bd20:	0186d71b          	srliw	a4,a3,0x18
    e885bd24:	3701                	addiw	a4,a4,-32
    e885bd26:	05e00593          	li	a1,94
    e885bd2a:	06e5e763          	bltu	a1,a4,e885bd98 <PrintFCoreVAList+0xf40>
						PrintFIsPrintable( ( errCode >> 16 ) & 0xFF ) &&
    e885bd2e:	4106d713          	srai	a4,a3,0x10
					if( PrintFIsPrintable( ( errCode >> 24 ) & 0xFF ) && 
    e885bd32:	0e077593          	andi	a1,a4,224
    e885bd36:	c1ad                	beqz	a1,e885bd98 <PrintFCoreVAList+0xf40>
						PrintFIsPrintable( ( errCode >> 16 ) & 0xFF ) &&
    e885bd38:	0ff77713          	andi	a4,a4,255
    e885bd3c:	07e00593          	li	a1,126
    e885bd40:	04e5cc63          	blt	a1,a4,e885bd98 <PrintFCoreVAList+0xf40>
						PrintFIsPrintable( ( errCode >>  8 ) & 0xFF ) &&
    e885bd44:	4086d713          	srai	a4,a3,0x8
						PrintFIsPrintable( ( errCode >> 16 ) & 0xFF ) &&
    e885bd48:	0e077513          	andi	a0,a4,224
    e885bd4c:	c531                	beqz	a0,e885bd98 <PrintFCoreVAList+0xf40>
						PrintFIsPrintable( ( errCode >>  8 ) & 0xFF ) &&
    e885bd4e:	0ff77713          	andi	a4,a4,255
    e885bd52:	04e5c363          	blt	a1,a4,e885bd98 <PrintFCoreVAList+0xf40>
    e885bd56:	0e06f713          	andi	a4,a3,224
    e885bd5a:	cf1d                	beqz	a4,e885bd98 <PrintFCoreVAList+0xf40>
						PrintFIsPrintable(   errCode         & 0xFF ) )
    e885bd5c:	0ff6f713          	andi	a4,a3,255
    e885bd60:	02e5cc63          	blt	a1,a4,e885bd98 <PrintFCoreVAList+0xf40>
						if( F.altForm == 2 )
    e885bd64:	4709                	li	a4,2
    e885bd66:	02e61363          	bne	a2,a4,e885bd8c <PrintFCoreVAList+0xf34>
							i = SNPrintF( buf, sizeof( buf ), "%-11d    0x%08X    '%C'    ", 
    e885bd6a:	8736                	mv	a4,a3
    e885bd6c:	00067617          	auipc	a2,0x67
    e885bd70:	11460613          	addi	a2,a2,276 # e88c2e80 <kPairingSessionClass+0x190>
							i = SNPrintF( buf, sizeof( buf ), "%-11d    0x%08X    '^^^^'    ", 
    e885bd74:	12c00593          	li	a1,300
    e885bd78:	855e                	mv	a0,s7
    e885bd7a:	011000ef          	jal	ra,e885c58a <SNPrintF>
				for( i = 0; s[ i ]; ++i ) {}
    e885bd7e:	4d01                	li	s10,0
    e885bd80:	81abc78b          	lrbu	a5,s7,s10,0
    e885bd84:	fe078c63          	beqz	a5,e885b57c <PrintFCoreVAList+0x724>
    e885bd88:	2d05                	addiw	s10,s10,1
    e885bd8a:	bfdd                	j	e885bd80 <PrintFCoreVAList+0xf28>
							i = SNPrintF( buf, sizeof( buf ), "%d/0x%X/'%C' ", 
    e885bd8c:	8736                	mv	a4,a3
    e885bd8e:	00067617          	auipc	a2,0x67
    e885bd92:	11260613          	addi	a2,a2,274 # e88c2ea0 <kPairingSessionClass+0x1b0>
    e885bd96:	bff9                	j	e885bd74 <PrintFCoreVAList+0xf1c>
						if( F.altForm == 2 )
    e885bd98:	4709                	li	a4,2
    e885bd9a:	00e61863          	bne	a2,a4,e885bdaa <PrintFCoreVAList+0xf52>
							i = SNPrintF( buf, sizeof( buf ), "%-11d    0x%08X    '^^^^'    ", 
    e885bd9e:	873e                	mv	a4,a5
    e885bda0:	00067617          	auipc	a2,0x67
    e885bda4:	11060613          	addi	a2,a2,272 # e88c2eb0 <kPairingSessionClass+0x1c0>
    e885bda8:	b7f1                	j	e885bd74 <PrintFCoreVAList+0xf1c>
							i = SNPrintF( buf, sizeof( buf ), "%d/0x%X ", 
    e885bdaa:	873e                	mv	a4,a5
    e885bdac:	00067617          	auipc	a2,0x67
    e885bdb0:	12460613          	addi	a2,a2,292 # e88c2ed0 <kPairingSessionClass+0x1e0>
    e885bdb4:	b7c1                	j	e885bd74 <PrintFCoreVAList+0xf1c>
						i = SNPrintF( buf, sizeof( buf ), "%d/0x%X ", (int) errCode, (unsigned int) errCode );
    e885bdb6:	8736                	mv	a4,a3
    e885bdb8:	00067617          	auipc	a2,0x67
    e885bdbc:	11860613          	addi	a2,a2,280 # e88c2ed0 <kPairingSessionClass+0x1e0>
    e885bdc0:	12c00593          	li	a1,300
    e885bdc4:	855e                	mv	a0,s7
    e885bdc6:	7c4000ef          	jal	ra,e885c58a <SNPrintF>
    e885bdca:	bf55                	j	e885bd7e <PrintFCoreVAList+0xf26>
				if( F.suppress ) continue;
    e885bdcc:	09014783          	lbu	a5,144(sp)
				a		= va_arg( vaArgs.args, uint8_t * );
    e885bdd0:	86a2                	mv	a3,s0
    e885bdd2:	00043c83          	ld	s9,0(s0)
				if( F.suppress ) continue;
    e885bdd6:	8bc1                	andi	a5,a5,16
				size	= (size_t) va_arg( vaArgs.args, int );
    e885bdd8:	4410                	lw	a2,8(s0)
				sizeMax	= (size_t) va_arg( vaArgs.args, int );
    e885bdda:	0461                	addi	s0,s0,24
				if( F.suppress ) continue;
    e885bddc:	e39d                	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
				size	= (size_t) va_arg( vaArgs.args, int );
    e885bdde:	8732                	mv	a4,a2
				sizeMax	= (size_t) va_arg( vaArgs.args, int );
    e885bde0:	4a9c                	lw	a5,16(a3)
				if( a || ( size == 0 ) )
    e885bde2:	020c9663          	bnez	s9,e885be0e <PrintFCoreVAList+0xfb6>
    e885bde6:	ce15                	beqz	a2,e885be22 <PrintFCoreVAList+0xfca>
					err = PrintFCore( inContext, "<<NULL %zu/%zu>>", size, sizeMax );
    e885bde8:	86be                	mv	a3,a5
    e885bdea:	00067597          	auipc	a1,0x67
    e885bdee:	12e58593          	addi	a1,a1,302 # e88c2f18 <kPairingSessionClass+0x228>
    e885bdf2:	8526                	mv	a0,s1
    e885bdf4:	177000ef          	jal	ra,e885c76a <PrintFCore>
				err = PrintFCoreVAList( inContext, nestedFormat, *nestedArgs );
    e885bdf8:	8d2a                	mv	s10,a0
				if( err < 0 ) goto error;
    e885bdfa:	a8054d63          	bltz	a0,e885b094 <PrintFCoreVAList+0x23c>
				total += err;
    e885bdfe:	00a9093b          	addw	s2,s2,a0
	for( c = *fmt; ; c = *++fmt )
    e885be02:	00198513          	addi	a0,s3,1
    e885be06:	0019c983          	lbu	s3,1(s3)
		src = fmt;
    e885be0a:	8a2ff06f          	j	e885aeac <PrintFCoreVAList+0x54>
					if( size == kSizeCString ) size = strlen( (const char *) a );
    e885be0e:	56fd                	li	a3,-1
    e885be10:	00d61963          	bne	a2,a3,e885be22 <PrintFCoreVAList+0xfca>
    e885be14:	8566                	mv	a0,s9
    e885be16:	f4be                	sd	a5,104(sp)
    e885be18:	500200ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885be1c:	7c05370b          	extu	a4,a0,31,0
    e885be20:	77a6                	ld	a5,104(sp)
					if(      F.precision == 0 ) err = PrintFWriteHexOneLine( inContext, &F, a, Min( size, sizeMax ) );
    e885be22:	7c0a                	ld	s8,160(sp)
    e885be24:	120c1b63          	bnez	s8,e885bf5a <PrintFCoreVAList+0x1102>
    e885be28:	00e7bbb3          	sltu	s7,a5,a4
    e885be2c:	4177178b          	mveqz	a5,a4,s7
    e885be30:	8bbe                	mv	s7,a5
	int			total = 0;
    e885be32:	4d01                	li	s10,0
	require_quiet( inSize > 0, exit );
    e885be34:	e2078ce3          	beqz	a5,e885bc6c <PrintFCoreVAList+0xe14>
	if( inFormat->altForm != 2 )
    e885be38:	09314703          	lbu	a4,147(sp)
    e885be3c:	4789                	li	a5,2
		for( i = 0; i < inSize; ++i )
    e885be3e:	4d81                	li	s11,0
	if( inFormat->altForm != 2 )
    e885be40:	0ef71b63          	bne	a4,a5,e885bf36 <PrintFCoreVAList+0x10de>
			err = inContext->callback(  "|", 1, inContext );
    e885be44:	609c                	ld	a5,0(s1)
    e885be46:	8626                	mv	a2,s1
    e885be48:	4585                	li	a1,1
    e885be4a:	00067517          	auipc	a0,0x67
    e885be4e:	09e50513          	addi	a0,a0,158 # e88c2ee8 <kPairingSessionClass+0x1f8>
    e885be52:	9782                	jalr	a5
    e885be54:	8d2a                	mv	s10,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885be56:	e00549e3          	bltz	a0,e885bc68 <PrintFCoreVAList+0xe10>
			total += 1;
    e885be5a:	2d85                	addiw	s11,s11,1
    e885be5c:	a049                	j	e885bede <PrintFCoreVAList+0x1086>
			if( i != 0 ) hex[ j++ ] = ' ';
    e885be5e:	0bf10823          	sb	t6,176(sp)
    e885be62:	4785                	li	a5,1
			total += (int) j;
    e885be64:	86ea                	mv	a3,s10
			b = inData[ i ];
    e885be66:	81bcc70b          	lrbu	a4,s9,s11,0
			hex[ j++ ] = kHexDigitsLowercase[   b        & 0x0F ];
    e885be6a:	00278313          	addi	t1,a5,2 # 2002 <memcmp-0xe87fdffe>
			err = inContext->callback( hex, j, inContext );
    e885be6e:	859a                	mv	a1,t1
			hex[ j++ ] = kHexDigitsLowercase[ ( b >> 4 ) & 0x0F ];
    e885be70:	00475613          	srli	a2,a4,0x4
    e885be74:	80cec60b          	lrbu	a2,t4,a2,0
			hex[ j++ ] = kHexDigitsLowercase[   b        & 0x0F ];
    e885be78:	8b3d                	andi	a4,a4,15
    e885be7a:	80eec70b          	lrbu	a4,t4,a4,0
			hex[ j++ ] = kHexDigitsLowercase[ ( b >> 4 ) & 0x0F ];
    e885be7e:	00fe560b          	srb	a2,t3,a5,0
			err = inContext->callback( hex, j, inContext );
    e885be82:	8572                	mv	a0,t3
			hex[ j++ ] = kHexDigitsLowercase[   b        & 0x0F ];
    e885be84:	00ff570b          	srb	a4,t5,a5,0
			err = inContext->callback( hex, j, inContext );
    e885be88:	609c                	ld	a5,0(s1)
    e885be8a:	8626                	mv	a2,s1
    e885be8c:	fcfe                	sd	t6,120(sp)
    e885be8e:	f8b6                	sd	a3,112(sp)
    e885be90:	f49a                	sd	t1,104(sp)
    e885be92:	9782                	jalr	a5
    e885be94:	8d2a                	mv	s10,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885be96:	dc0549e3          	bltz	a0,e885bc68 <PrintFCoreVAList+0xe10>
			total += (int) j;
    e885be9a:	7326                	ld	t1,104(sp)
    e885be9c:	76c6                	ld	a3,112(sp)
		for( i = 0; i < inSize; ++i )
    e885be9e:	0d85                	addi	s11,s11,1
    e885bea0:	0b010e13          	addi	t3,sp,176
			total += (int) j;
    e885bea4:	00d30d3b          	addw	s10,t1,a3
		for( i = 0; i < inSize; ++i )
    e885bea8:	0b110f13          	addi	t5,sp,177
    e885beac:	00047e97          	auipc	t4,0x47
    e885beb0:	2fce8e93          	addi	t4,t4,764 # e88a31a8 <mDNSInterface_Unicast+0x428>
    e885beb4:	7fe6                	ld	t6,120(sp)
    e885beb6:	fbbb94e3          	bne	s7,s11,e885be5e <PrintFCoreVAList+0x1006>
	if( inFormat->altForm > 0 )
    e885beba:	09314783          	lbu	a5,147(sp)
    e885bebe:	da0785e3          	beqz	a5,e885bc68 <PrintFCoreVAList+0xe10>
		if( total > 0 )
    e885bec2:	609c                	ld	a5,0(s1)
    e885bec4:	09a05663          	blez	s10,e885bf50 <PrintFCoreVAList+0x10f8>
			err = inContext->callback( " |", 2, inContext );
    e885bec8:	8626                	mv	a2,s1
    e885beca:	4589                	li	a1,2
    e885becc:	00067517          	auipc	a0,0x67
    e885bed0:	01450513          	addi	a0,a0,20 # e88c2ee0 <kPairingSessionClass+0x1f0>
    e885bed4:	9782                	jalr	a5
			require_action_quiet( err >= 0, exit, total = err );
    e885bed6:	ca0542e3          	bltz	a0,e885bb7a <PrintFCoreVAList+0xd22>
			total += 2;
    e885beda:	002d0d9b          	addiw	s11,s10,2
			if( ( c < 0x20 ) || ( c >= 0x7F ) ) c = '^';
    e885bede:	05e00693          	li	a3,94
			c = (char) inData[ i ];
    e885bee2:	818cc60b          	lrbu	a2,s9,s8,0
    e885bee6:	01bc07bb          	addw	a5,s8,s11
    e885beea:	f4be                	sd	a5,104(sp)
			if( ( c < 0x20 ) || ( c >= 0x7F ) ) c = '^';
    e885beec:	fe06071b          	addiw	a4,a2,-32
    e885bef0:	0ff77713          	andi	a4,a4,255
    e885bef4:	06e6e063          	bltu	a3,a4,e885bf54 <PrintFCoreVAList+0x10fc>
			c = (char) inData[ i ];
    e885bef8:	08c107a3          	sb	a2,143(sp)
			err = inContext->callback( &c, 1, inContext );
    e885befc:	6098                	ld	a4,0(s1)
    e885befe:	8626                	mv	a2,s1
    e885bf00:	4585                	li	a1,1
    e885bf02:	08f10513          	addi	a0,sp,143
    e885bf06:	9702                	jalr	a4
    e885bf08:	8d2a                	mv	s10,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885bf0a:	d4054fe3          	bltz	a0,e885bc68 <PrintFCoreVAList+0xe10>
		for( i = 0; i < inSize; ++i )
    e885bf0e:	0c05                	addi	s8,s8,1
    e885bf10:	05e00693          	li	a3,94
    e885bf14:	fd8b97e3          	bne	s7,s8,e885bee2 <PrintFCoreVAList+0x108a>
		err = inContext->callback( "|", 1, inContext );
    e885bf18:	609c                	ld	a5,0(s1)
    e885bf1a:	8626                	mv	a2,s1
    e885bf1c:	4585                	li	a1,1
    e885bf1e:	00067517          	auipc	a0,0x67
    e885bf22:	fca50513          	addi	a0,a0,-54 # e88c2ee8 <kPairingSessionClass+0x1f8>
    e885bf26:	9782                	jalr	a5
    e885bf28:	8d2a                	mv	s10,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885bf2a:	d2054fe3          	bltz	a0,e885bc68 <PrintFCoreVAList+0xe10>
		total += 1;
    e885bf2e:	77a6                	ld	a5,104(sp)
    e885bf30:	00278d1b          	addiw	s10,a5,2
    e885bf34:	bb15                	j	e885bc68 <PrintFCoreVAList+0xe10>
			j = 0;
    e885bf36:	4781                	li	a5,0
	int			total = 0;
    e885bf38:	4681                	li	a3,0
			hex[ j++ ] = kHexDigitsLowercase[ ( b >> 4 ) & 0x0F ];
    e885bf3a:	0b010e13          	addi	t3,sp,176
    e885bf3e:	00047e97          	auipc	t4,0x47
    e885bf42:	26ae8e93          	addi	t4,t4,618 # e88a31a8 <mDNSInterface_Unicast+0x428>
			hex[ j++ ] = kHexDigitsLowercase[   b        & 0x0F ];
    e885bf46:	0b110f13          	addi	t5,sp,177
			if( i != 0 ) hex[ j++ ] = ' ';
    e885bf4a:	02000f93          	li	t6,32
    e885bf4e:	bf21                	j	e885be66 <PrintFCoreVAList+0x100e>
		if( total > 0 )
    e885bf50:	8dea                	mv	s11,s10
    e885bf52:	bdcd                	j	e885be44 <PrintFCoreVAList+0xfec>
			if( ( c < 0x20 ) || ( c >= 0x7F ) ) c = '^';
    e885bf54:	08d107a3          	sb	a3,143(sp)
    e885bf58:	b755                	j	e885befc <PrintFCoreVAList+0x10a4>
					else if( F.precision == 1 ) err = PrintFWriteHex( inContext, &F, (int) F.fieldWidth, a, size, sizeMax );
    e885bf5a:	4685                	li	a3,1
    e885bf5c:	00dc1563          	bne	s8,a3,e885bf66 <PrintFCoreVAList+0x110e>
							err = PrintFWriteHex( inContext, &F, (int) F.fieldWidth, a, size, sizeMax );
    e885bf60:	86e6                	mv	a3,s9
    e885bf62:	466a                	lw	a2,152(sp)
    e885bf64:	a831                	j	e885bf80 <PrintFCoreVAList+0x1128>
					else if( F.precision == 2 )
    e885bf66:	4689                	li	a3,2
    e885bf68:	04dc1063          	bne	s8,a3,e885bfa8 <PrintFCoreVAList+0x1150>
						if(       size <= 0 )	err = PrintFCore( inContext, "(0 bytes)\n" );
    e885bf6c:	00067597          	auipc	a1,0x67
    e885bf70:	f8458593          	addi	a1,a1,-124 # e88c2ef0 <kPairingSessionClass+0x200>
    e885bf74:	c73d                	beqz	a4,e885bfe2 <PrintFCoreVAList+0x118a>
						else if ( size <= 16 )	err = PrintFWriteHex( inContext, &F, 0, a, size, sizeMax );
    e885bf76:	46c1                	li	a3,16
    e885bf78:	00e6e963          	bltu	a3,a4,e885bf8a <PrintFCoreVAList+0x1132>
    e885bf7c:	86e6                	mv	a3,s9
    e885bf7e:	4601                	li	a2,0
							err = PrintFWriteHex( inContext, &F, (int) F.fieldWidth, a, size, sizeMax );
    e885bf80:	112c                	addi	a1,sp,168
    e885bf82:	8526                	mv	a0,s1
    e885bf84:	005000ef          	jal	ra,e885c788 <PrintFWriteHex.isra.2>
    e885bf88:	becd                	j	e885bb7a <PrintFCoreVAList+0xd22>
							err = PrintFCore( inContext, "\n" );
    e885bf8a:	00044597          	auipc	a1,0x44
    e885bf8e:	cf658593          	addi	a1,a1,-778 # e889fc80 <TWO52+0x88>
    e885bf92:	8526                	mv	a0,s1
    e885bf94:	f8be                	sd	a5,112(sp)
    e885bf96:	f4ba                	sd	a4,104(sp)
    e885bf98:	7d2000ef          	jal	ra,e885c76a <PrintFCore>
    e885bf9c:	8d2a                	mv	s10,a0
							if( err < 0 ) goto error;
    e885bf9e:	8e054b63          	bltz	a0,e885b094 <PrintFCoreVAList+0x23c>
							err = PrintFWriteHex( inContext, &F, (int) F.fieldWidth, a, size, sizeMax );
    e885bfa2:	77c6                	ld	a5,112(sp)
    e885bfa4:	7726                	ld	a4,104(sp)
    e885bfa6:	bf6d                	j	e885bf60 <PrintFCoreVAList+0x1108>
					else if( F.precision == 3 ) err = PrintFWriteHexByteStream( inContext, false, a, Min( size, sizeMax ) );
    e885bfa8:	468d                	li	a3,3
    e885bfaa:	00dc1d63          	bne	s8,a3,e885bfc4 <PrintFCoreVAList+0x116c>
    e885bfae:	00e7b6b3          	sltu	a3,a5,a4
    e885bfb2:	40d7178b          	mveqz	a5,a4,a3
    e885bfb6:	86be                	mv	a3,a5
    e885bfb8:	8666                	mv	a2,s9
    e885bfba:	4581                	li	a1,0
					else if( F.precision == 4 ) err = PrintFWriteHexByteStream( inContext, true, a, Min( size, sizeMax ) );
    e885bfbc:	8526                	mv	a0,s1
    e885bfbe:	c23fe0ef          	jal	ra,e885abe0 <PrintFWriteHexByteStream>
    e885bfc2:	be65                	j	e885bb7a <PrintFCoreVAList+0xd22>
    e885bfc4:	4691                	li	a3,4
					else						err = PrintFCore( inContext, "<< BAD %%H PRECISION >>" );
    e885bfc6:	00067597          	auipc	a1,0x67
    e885bfca:	f3a58593          	addi	a1,a1,-198 # e88c2f00 <kPairingSessionClass+0x210>
					else if( F.precision == 4 ) err = PrintFWriteHexByteStream( inContext, true, a, Min( size, sizeMax ) );
    e885bfce:	00dc1a63          	bne	s8,a3,e885bfe2 <PrintFCoreVAList+0x118a>
    e885bfd2:	00e7b6b3          	sltu	a3,a5,a4
    e885bfd6:	40d7178b          	mveqz	a5,a4,a3
    e885bfda:	86be                	mv	a3,a5
    e885bfdc:	8666                	mv	a2,s9
    e885bfde:	4585                	li	a1,1
    e885bfe0:	bff1                	j	e885bfbc <PrintFCoreVAList+0x1164>
					else						err = PrintFCore( inContext, "<< BAD %%H PRECISION >>" );
    e885bfe2:	8526                	mv	a0,s1
    e885bfe4:	786000ef          	jal	ra,e885c76a <PrintFCore>
    e885bfe8:	be49                	j	e885bb7a <PrintFCoreVAList+0xd22>
				if( F.suppress ) continue;
    e885bfea:	09014783          	lbu	a5,144(sp)
				c = va_arg( vaArgs.args, int );
    e885bfee:	8722                	mv	a4,s0
    e885bff0:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885bff2:	8bc1                	andi	a5,a5,16
    e885bff4:	e00797e3          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
				c = va_arg( vaArgs.args, int );
    e885bff8:	431c                	lw	a5,0(a4)
				if( F.group )
    e885bffa:	0a814703          	lbu	a4,168(sp)
    e885bffe:	cf15                	beqz	a4,e885c03a <PrintFCoreVAList+0x11e2>
					buf[ 0 ] = '\'';
    e885c000:	02700713          	li	a4,39
    e885c004:	0ce10823          	sb	a4,208(sp)
					buf[ 1 ] = PrintFMakePrintable( c );
    e885c008:	05e00693          	li	a3,94
    e885c00c:	fe07871b          	addiw	a4,a5,-32
    e885c010:	00e6ef63          	bltu	a3,a4,e885c02e <PrintFCoreVAList+0x11d6>
    e885c014:	0ff7f713          	andi	a4,a5,255
					buf[ 2 ] = '\'';
    e885c018:	02700793          	li	a5,39
					buf[ 1 ] = PrintFMakePrintable( c );
    e885c01c:	0ce108a3          	sb	a4,209(sp)
					buf[ 2 ] = '\'';
    e885c020:	0cf10923          	sb	a5,210(sp)
				s = buf;
    e885c024:	0d010b93          	addi	s7,sp,208
					i = 3;
    e885c028:	4d0d                	li	s10,3
    e885c02a:	d52ff06f          	j	e885b57c <PrintFCoreVAList+0x724>
					buf[ 1 ] = PrintFMakePrintable( c );
    e885c02e:	05e00713          	li	a4,94
    e885c032:	f3fd                	bnez	a5,e885c018 <PrintFCoreVAList+0x11c0>
    e885c034:	02e00713          	li	a4,46
    e885c038:	b7c5                	j	e885c018 <PrintFCoreVAList+0x11c0>
					buf[ 0 ] = (char) c;
    e885c03a:	0cf10823          	sb	a5,208(sp)
				s = buf;
    e885c03e:	0d010b93          	addi	s7,sp,208
				i = 1;
    e885c042:	4d05                	li	s10,1
				break;
    e885c044:	d38ff06f          	j	e885b57c <PrintFCoreVAList+0x724>
				if( F.suppress ) continue;
    e885c048:	09014783          	lbu	a5,144(sp)
				x = va_arg( vaArgs.args, uint32_t );
    e885c04c:	8722                	mv	a4,s0
    e885c04e:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885c050:	8bc1                	andi	a5,a5,16
    e885c052:	da0798e3          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
				if( F.group ) buf[ i++ ] = '\'';
    e885c056:	0a814883          	lbu	a7,168(sp)
				x = va_arg( vaArgs.args, uint32_t );
    e885c05a:	4314                	lw	a3,0(a4)
				i = 0;
    e885c05c:	4601                	li	a2,0
				if( F.group ) buf[ i++ ] = '\'';
    e885c05e:	00088763          	beqz	a7,e885c06c <PrintFCoreVAList+0x1214>
    e885c062:	02700793          	li	a5,39
    e885c066:	0cf10823          	sb	a5,208(sp)
    e885c06a:	4605                	li	a2,1
				x = va_arg( vaArgs.args, uint32_t );
    e885c06c:	7c06b78b          	extu	a5,a3,31,0
				buf[ i ] = (char)( ( x >> 24 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c070:	0187d713          	srli	a4,a5,0x18
    e885c074:	fe07059b          	addiw	a1,a4,-32
    e885c078:	0ff5f593          	andi	a1,a1,255
    e885c07c:	05e00513          	li	a0,94
    e885c080:	00b57563          	bgeu	a0,a1,e885c08a <PrintFCoreVAList+0x1232>
    e885c084:	e751                	bnez	a4,e885c110 <PrintFCoreVAList+0x12b8>
    e885c086:	02e00713          	li	a4,46
    e885c08a:	098c                	addi	a1,sp,208
    e885c08c:	00c5d70b          	srb	a4,a1,a2,0
				buf[ i ] = (char)( ( x >> 16 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c090:	5d07b70b          	extu	a4,a5,23,16
    e885c094:	fe07081b          	addiw	a6,a4,-32
    e885c098:	0ff87813          	andi	a6,a6,255
    e885c09c:	05e00313          	li	t1,94
				buf[ i ] = (char)( ( x >> 24 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0a0:	0016051b          	addiw	a0,a2,1
				buf[ i ] = (char)( ( x >> 16 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0a4:	01037563          	bgeu	t1,a6,e885c0ae <PrintFCoreVAList+0x1256>
    e885c0a8:	e73d                	bnez	a4,e885c116 <PrintFCoreVAList+0x12be>
    e885c0aa:	02e00713          	li	a4,46
				buf[ i ] = (char)( ( x >>  8 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0ae:	3c87b78b          	extu	a5,a5,15,8
				buf[ i ] = (char)( ( x >> 16 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0b2:	00a5d70b          	srb	a4,a1,a0,0
				buf[ i ] = (char)( ( x >>  8 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0b6:	fe07851b          	addiw	a0,a5,-32
    e885c0ba:	0ff57513          	andi	a0,a0,255
    e885c0be:	05e00813          	li	a6,94
				buf[ i ] = (char)( ( x >> 16 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0c2:	0026071b          	addiw	a4,a2,2
				buf[ i ] = (char)( ( x >>  8 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0c6:	00a87563          	bgeu	a6,a0,e885c0d0 <PrintFCoreVAList+0x1278>
    e885c0ca:	eba9                	bnez	a5,e885c11c <PrintFCoreVAList+0x12c4>
    e885c0cc:	02e00793          	li	a5,46
    e885c0d0:	00e5d78b          	srb	a5,a1,a4,0
				buf[ i ] = (char)(   x         & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0d4:	0ff6f793          	andi	a5,a3,255
    e885c0d8:	fe07869b          	addiw	a3,a5,-32
    e885c0dc:	0ff6f693          	andi	a3,a3,255
    e885c0e0:	05e00513          	li	a0,94
				buf[ i ] = (char)( ( x >>  8 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0e4:	0036071b          	addiw	a4,a2,3
				buf[ i ] = (char)(   x         & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c0e8:	00d57563          	bgeu	a0,a3,e885c0f2 <PrintFCoreVAList+0x129a>
    e885c0ec:	eb9d                	bnez	a5,e885c122 <PrintFCoreVAList+0x12ca>
    e885c0ee:	02e00793          	li	a5,46
    e885c0f2:	00e5d78b          	srb	a5,a1,a4,0
    e885c0f6:	00460d1b          	addiw	s10,a2,4
				s = buf;
    e885c0fa:	8bae                	mv	s7,a1
				if( F.group ) buf[ i++ ] = '\'';
    e885c0fc:	c8088063          	beqz	a7,e885b57c <PrintFCoreVAList+0x724>
    e885c100:	02700793          	li	a5,39
    e885c104:	01a5d78b          	srb	a5,a1,s10,0
    e885c108:	00560d1b          	addiw	s10,a2,5
    e885c10c:	c70ff06f          	j	e885b57c <PrintFCoreVAList+0x724>
				buf[ i ] = (char)( ( x >> 24 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c110:	05e00713          	li	a4,94
    e885c114:	bf9d                	j	e885c08a <PrintFCoreVAList+0x1232>
				buf[ i ] = (char)( ( x >> 16 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c116:	05e00713          	li	a4,94
    e885c11a:	bf51                	j	e885c0ae <PrintFCoreVAList+0x1256>
				buf[ i ] = (char)( ( x >>  8 ) & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c11c:	05e00793          	li	a5,94
    e885c120:	bf45                	j	e885c0d0 <PrintFCoreVAList+0x1278>
				buf[ i ] = (char)(   x         & 0xFF ); buf[ i ] = PrintFMakePrintable( buf[ i ] ); ++i;
    e885c122:	05e00793          	li	a5,94
    e885c126:	b7f1                	j	e885c0f2 <PrintFCoreVAList+0x129a>
				if( F.suppress ) continue;
    e885c128:	09014783          	lbu	a5,144(sp)
				a = va_arg( vaArgs.args, const uint8_t * );
    e885c12c:	8722                	mv	a4,s0
    e885c12e:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885c130:	8bc1                	andi	a5,a5,16
    e885c132:	cc0798e3          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
				a = va_arg( vaArgs.args, const uint8_t * );
    e885c136:	6308                	ld	a0,0(a4)
				if( !a ) { s = "<<NULL>>"; i = 8; break; }
    e885c138:	3a050963          	beqz	a0,e885c4ea <PrintFCoreVAList+0x1692>
	if( ( F->altForm == 1 ) && ( F->precision == 4 ) ) // %#.4a - IPv4 address in host byte order
    e885c13c:	09314783          	lbu	a5,147(sp)
    e885c140:	4705                	li	a4,1
    e885c142:	0ae79963          	bne	a5,a4,e885c1f4 <PrintFCoreVAList+0x139c>
    e885c146:	770a                	ld	a4,160(sp)
    e885c148:	4691                	li	a3,4
    e885c14a:	02d71463          	bne	a4,a3,e885c172 <PrintFCoreVAList+0x131a>
			n = SNPrintF( outStr, kPrintFBufSize, "%u.%u.%u.%u", a[ 3 ], a[ 2 ], a[ 1 ], a[ 0 ] );
    e885c14e:	00054803          	lbu	a6,0(a0)
    e885c152:	00154783          	lbu	a5,1(a0)
    e885c156:	00254703          	lbu	a4,2(a0)
    e885c15a:	00354683          	lbu	a3,3(a0)
				n = SNPrintF( outStr, kPrintFBufSize, "%u.%u.%u.%u", a[ 0 ] >> 4, a[ 0 ] & 0xF, a[ 1 ] >> 4, a[ 1 ] & 0xF );
    e885c15e:	00067617          	auipc	a2,0x67
    e885c162:	dd260613          	addi	a2,a2,-558 # e88c2f30 <kPairingSessionClass+0x240>
    e885c166:	12c00593          	li	a1,300
    e885c16a:	0988                	addi	a0,sp,208
    e885c16c:	41e000ef          	jal	ra,e885c58a <SNPrintF>
    e885c170:	a8bd                	j	e885c1ee <PrintFCoreVAList+0x1396>
	else if( ( F->altForm == 1 ) && ( F->precision == 6 ) ) // %#.6a - MAC address from host order uint64_t *.
    e885c172:	4799                	li	a5,6
    e885c174:	02f71963          	bne	a4,a5,e885c1a6 <PrintFCoreVAList+0x134e>
			n = SNPrintF( outStr, kPrintFBufSize, "%02X:%02X:%02X:%02X:%02X:%02X", 
    e885c178:	00154883          	lbu	a7,1(a0)
    e885c17c:	00254803          	lbu	a6,2(a0)
    e885c180:	00354783          	lbu	a5,3(a0)
    e885c184:	00454703          	lbu	a4,4(a0)
    e885c188:	00554683          	lbu	a3,5(a0)
    e885c18c:	00054603          	lbu	a2,0(a0)
				n = SNPrintF( outStr, kPrintFBufSize, "%02X:%02X:%02X:%02X:%02X:%02X", 
    e885c190:	e032                	sd	a2,0(sp)
    e885c192:	12c00593          	li	a1,300
    e885c196:	00047617          	auipc	a2,0x47
    e885c19a:	04a60613          	addi	a2,a2,74 # e88a31e0 <mDNSInterface_Unicast+0x460>
    e885c19e:	0988                	addi	a0,sp,208
    e885c1a0:	3ea000ef          	jal	ra,e885c58a <SNPrintF>
    e885c1a4:	a0a9                	j	e885c1ee <PrintFCoreVAList+0x1396>
		if( ip->type == 4 )
    e885c1a6:	4118                	lw	a4,0(a0)
    e885c1a8:	00d71b63          	bne	a4,a3,e885c1be <PrintFCoreVAList+0x1366>
			n = SNPrintF( outStr, kPrintFBufSize, "%u.%u.%u.%u", a[ 0 ], a[ 1 ], a[ 2 ], a[ 3 ] );
    e885c1ac:	00754803          	lbu	a6,7(a0)
    e885c1b0:	00654783          	lbu	a5,6(a0)
    e885c1b4:	00554703          	lbu	a4,5(a0)
    e885c1b8:	00454683          	lbu	a3,4(a0)
    e885c1bc:	b74d                	j	e885c15e <PrintFCoreVAList+0x1306>
		else if( ip->type == 6 )
    e885c1be:	00f71b63          	bne	a4,a5,e885c1d4 <PrintFCoreVAList+0x137c>
			IPv6AddressToCString( ip->ip.v6, 0, 0, -1, outStr, 0 );
    e885c1c2:	4781                	li	a5,0
    e885c1c4:	0998                	addi	a4,sp,208
    e885c1c6:	56fd                	li	a3,-1
    e885c1c8:	4601                	li	a2,0
    e885c1ca:	4581                	li	a1,0
    e885c1cc:	0511                	addi	a0,a0,4
				IPv6AddressToCString( sa6->sin6_addr.s6_addr, sa6->sin6_scope_id, (int) ntoh16( sa6->sin6_port ), -1, outStr, 0 );
    e885c1ce:	153020ef          	jal	ra,e885eb20 <IPv6AddressToCString>
				n = (int) strlen( outStr );
    e885c1d2:	a881                	j	e885c222 <PrintFCoreVAList+0x13ca>
			n = SNPrintF( outStr, kPrintFBufSize, "%s", "<< ERROR: %#a used with unsupported type: %d >>", ip->type );
    e885c1d4:	00067697          	auipc	a3,0x67
    e885c1d8:	d6c68693          	addi	a3,a3,-660 # e88c2f40 <kPairingSessionClass+0x250>
    e885c1dc:	0004e617          	auipc	a2,0x4e
    e885c1e0:	1c460613          	addi	a2,a2,452 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e885c1e4:	12c00593          	li	a1,300
    e885c1e8:	0988                	addi	a0,sp,208
    e885c1ea:	3a0000ef          	jal	ra,e885c58a <SNPrintF>
				i = SNPrintF( buf, sizeof( buf ), "<<UNKNOWN PRINTF EXTENSION '%.*s'>>", (int) extensionLen, extensionPtr );
    e885c1ee:	8d2a                	mv	s10,a0
    e885c1f0:	908ff06f          	j	e885b2f8 <PrintFCoreVAList+0x4a0>
	else if( F->altForm == 2 ) // %##a: sockaddr
    e885c1f4:	4709                	li	a4,2
    e885c1f6:	08e79463          	bne	a5,a4,e885c27e <PrintFCoreVAList+0x1426>
			family = ( (const struct sockaddr *) inAddr )->sa_family;
    e885c1fa:	00154683          	lbu	a3,1(a0)
			if( family == AF_INET )
    e885c1fe:	02f69963          	bne	a3,a5,e885c230 <PrintFCoreVAList+0x13d8>
				IPv4AddressToCString( ntoh32( sa4->sin_addr.s_addr ), (int) ntoh16( sa4->sin_port ), outStr );
    e885c202:	00255783          	lhu	a5,2(a0)
    e885c206:	4158                	lw	a4,4(a0)
    e885c208:	0990                	addi	a2,sp,208
    e885c20a:	00879593          	slli	a1,a5,0x8
    e885c20e:	5c87b78b          	extu	a5,a5,23,8
    e885c212:	9007170b          	revw	a4,a4
    e885c216:	8ddd                	or	a1,a1,a5
    e885c218:	3c05b58b          	extu	a1,a1,15,0
    e885c21c:	853a                	mv	a0,a4
    e885c21e:	4e1020ef          	jal	ra,e885eefe <IPv4AddressToCString>
				n = (int) strlen( outStr );
    e885c222:	0988                	addi	a0,sp,208
    e885c224:	0f4200ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885c228:	00050d1b          	sext.w	s10,a0
    e885c22c:	8ccff06f          	j	e885b2f8 <PrintFCoreVAList+0x4a0>
			else if( family == AF_INET6 )
    e885c230:	47a9                	li	a5,10
    e885c232:	02f69163          	bne	a3,a5,e885c254 <PrintFCoreVAList+0x13fc>
				IPv6AddressToCString( sa6->sin6_addr.s6_addr, sa6->sin6_scope_id, (int) ntoh16( sa6->sin6_port ), -1, outStr, 0 );
    e885c236:	00255783          	lhu	a5,2(a0)
    e885c23a:	4d0c                	lw	a1,24(a0)
    e885c23c:	0998                	addi	a4,sp,208
    e885c23e:	00879613          	slli	a2,a5,0x8
    e885c242:	5c87b78b          	extu	a5,a5,23,8
    e885c246:	8e5d                	or	a2,a2,a5
    e885c248:	56fd                	li	a3,-1
    e885c24a:	4781                	li	a5,0
    e885c24c:	3c06360b          	extu	a2,a2,15,0
    e885c250:	0521                	addi	a0,a0,8
    e885c252:	bfb5                	j	e885c1ce <PrintFCoreVAList+0x1376>
			else if( family == AF_UNSPEC )
    e885c254:	ea99                	bnez	a3,e885c26a <PrintFCoreVAList+0x1412>
				n = SNPrintF( outStr, kPrintFBufSize, "<< AF_UNSPEC >>" );
    e885c256:	00067617          	auipc	a2,0x67
    e885c25a:	d1a60613          	addi	a2,a2,-742 # e88c2f70 <kPairingSessionClass+0x280>
    e885c25e:	12c00593          	li	a1,300
    e885c262:	0988                	addi	a0,sp,208
    e885c264:	326000ef          	jal	ra,e885c58a <SNPrintF>
    e885c268:	b759                	j	e885c1ee <PrintFCoreVAList+0x1396>
				n = SNPrintF( outStr, kPrintFBufSize, "<< ERROR: %%##a used with unknown family: %d >>", family );
    e885c26a:	00067617          	auipc	a2,0x67
    e885c26e:	d1660613          	addi	a2,a2,-746 # e88c2f80 <kPairingSessionClass+0x290>
				i = SNPrintF( buf, sizeof( buf ), "<<UNKNOWN FORMAT CONVERSION CODE %%%c>>", c );
    e885c272:	12c00593          	li	a1,300
    e885c276:	0988                	addi	a0,sp,208
    e885c278:	312000ef          	jal	ra,e885c58a <SNPrintF>
    e885c27c:	bf8d                	j	e885c1ee <PrintFCoreVAList+0x1396>
		switch( F->precision )
    e885c27e:	778a                	ld	a5,160(sp)
    e885c280:	4739                	li	a4,14
    e885c282:	17f9                	addi	a5,a5,-2
    e885c284:	08f76e63          	bltu	a4,a5,e885c320 <PrintFCoreVAList+0x14c8>
    e885c288:	00067717          	auipc	a4,0x67
    e885c28c:	ad870713          	addi	a4,a4,-1320 # e88c2d60 <kPairingSessionClass+0x70>
    e885c290:	44f7478b          	lrw	a5,a4,a5,2
    e885c294:	97ba                	add	a5,a5,a4
    e885c296:	8782                	jr	a5
				n = SNPrintF( outStr, kPrintFBufSize, "%u.%u.%u.%u", a[ 0 ] >> 4, a[ 0 ] & 0xF, a[ 1 ] >> 4, a[ 1 ] & 0xF );
    e885c298:	00054683          	lbu	a3,0(a0)
    e885c29c:	00154783          	lbu	a5,1(a0)
    e885c2a0:	00f6f713          	andi	a4,a3,15
    e885c2a4:	00f7f813          	andi	a6,a5,15
    e885c2a8:	8291                	srli	a3,a3,0x4
    e885c2aa:	8391                	srli	a5,a5,0x4
    e885c2ac:	bd4d                	j	e885c15e <PrintFCoreVAList+0x1306>
				n = SNPrintF( outStr, kPrintFBufSize, "%u.%u.%u.%u", a[ 0 ], a[ 1 ], a[ 2 ], a[ 3 ] );
    e885c2ae:	00354803          	lbu	a6,3(a0)
    e885c2b2:	00254783          	lbu	a5,2(a0)
    e885c2b6:	00154703          	lbu	a4,1(a0)
    e885c2ba:	00054683          	lbu	a3,0(a0)
    e885c2be:	b545                	j	e885c15e <PrintFCoreVAList+0x1306>
				n = SNPrintF( outStr, kPrintFBufSize, "%02X:%02X:%02X:%02X:%02X:%02X", 
    e885c2c0:	00454883          	lbu	a7,4(a0)
    e885c2c4:	00354803          	lbu	a6,3(a0)
    e885c2c8:	00254783          	lbu	a5,2(a0)
    e885c2cc:	00154703          	lbu	a4,1(a0)
    e885c2d0:	00054683          	lbu	a3,0(a0)
    e885c2d4:	00554603          	lbu	a2,5(a0)
    e885c2d8:	bd65                	j	e885c190 <PrintFCoreVAList+0x1338>
				n = SNPrintF( outStr, kPrintFBufSize, "%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X", 
    e885c2da:	00754603          	lbu	a2,7(a0)
    e885c2de:	00454883          	lbu	a7,4(a0)
    e885c2e2:	00354803          	lbu	a6,3(a0)
    e885c2e6:	00254783          	lbu	a5,2(a0)
    e885c2ea:	00154703          	lbu	a4,1(a0)
    e885c2ee:	00054683          	lbu	a3,0(a0)
    e885c2f2:	e832                	sd	a2,16(sp)
    e885c2f4:	00654603          	lbu	a2,6(a0)
    e885c2f8:	12c00593          	li	a1,300
    e885c2fc:	e432                	sd	a2,8(sp)
    e885c2fe:	00554603          	lbu	a2,5(a0)
    e885c302:	0988                	addi	a0,sp,208
    e885c304:	e032                	sd	a2,0(sp)
    e885c306:	00067617          	auipc	a2,0x67
    e885c30a:	caa60613          	addi	a2,a2,-854 # e88c2fb0 <kPairingSessionClass+0x2c0>
    e885c30e:	27c000ef          	jal	ra,e885c58a <SNPrintF>
    e885c312:	bdf1                	j	e885c1ee <PrintFCoreVAList+0x1396>
				IPv6AddressToCString( a, 0, 0, -1, outStr, 0 );
    e885c314:	4781                	li	a5,0
    e885c316:	0998                	addi	a4,sp,208
    e885c318:	56fd                	li	a3,-1
    e885c31a:	4601                	li	a2,0
    e885c31c:	4581                	li	a1,0
    e885c31e:	bd45                	j	e885c1ce <PrintFCoreVAList+0x1376>
				n = SNPrintF( outStr, kPrintFBufSize, "%s", 
    e885c320:	00067697          	auipc	a3,0x67
    e885c324:	cb868693          	addi	a3,a3,-840 # e88c2fd8 <kPairingSessionClass+0x2e8>
    e885c328:	0004e617          	auipc	a2,0x4e
    e885c32c:	07860613          	addi	a2,a2,120 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e885c330:	12c00593          	li	a1,300
    e885c334:	0988                	addi	a0,sp,208
    e885c336:	254000ef          	jal	ra,e885c58a <SNPrintF>
    e885c33a:	bd55                	j	e885c1ee <PrintFCoreVAList+0x1396>
				if( F.suppress ) continue;
    e885c33c:	09014783          	lbu	a5,144(sp)
				a = va_arg( vaArgs.args, const uint8_t * );
    e885c340:	8722                	mv	a4,s0
    e885c342:	0421                	addi	s0,s0,8
				if( F.suppress ) continue;
    e885c344:	8bc1                	andi	a5,a5,16
    e885c346:	aa079ee3          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
				a = va_arg( vaArgs.args, const uint8_t * );
    e885c34a:	631c                	ld	a5,0(a4)
				if( !a ) { s = "<<NULL>>"; i = 8; break; }
    e885c34c:	18078f63          	beqz	a5,e885c4ea <PrintFCoreVAList+0x1692>
				if( F.altForm == 0 )
    e885c350:	09314883          	lbu	a7,147(sp)
    e885c354:	0087c503          	lbu	a0,8(a5)
    e885c358:	0097c803          	lbu	a6,9(a5)
    e885c35c:	00a7c303          	lbu	t1,10(a5)
    e885c360:	00b7ce03          	lbu	t3,11(a5)
    e885c364:	00c7ce83          	lbu	t4,12(a5)
    e885c368:	00d7cf03          	lbu	t5,13(a5)
    e885c36c:	00e7cf83          	lbu	t6,14(a5)
    e885c370:	00f7c283          	lbu	t0,15(a5)
    e885c374:	0007c683          	lbu	a3,0(a5)
    e885c378:	0017c703          	lbu	a4,1(a5)
    e885c37c:	0027c603          	lbu	a2,2(a5)
    e885c380:	0037c583          	lbu	a1,3(a5)
    e885c384:	04089363          	bnez	a7,e885c3ca <PrintFCoreVAList+0x1572>
					i = SNPrintF( buf, sizeof( buf ), "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", 
    e885c388:	0057c883          	lbu	a7,5(a5)
    e885c38c:	f042                	sd	a6,32(sp)
    e885c38e:	e896                	sd	t0,80(sp)
    e885c390:	e4fe                	sd	t6,72(sp)
    e885c392:	e0fa                	sd	t5,64(sp)
    e885c394:	fc76                	sd	t4,56(sp)
    e885c396:	f872                	sd	t3,48(sp)
    e885c398:	f41a                	sd	t1,40(sp)
    e885c39a:	ec2a                	sd	a0,24(sp)
    e885c39c:	0067c503          	lbu	a0,6(a5)
    e885c3a0:	8836                	mv	a6,a3
    e885c3a2:	86ae                	mv	a3,a1
    e885c3a4:	e82a                	sd	a0,16(sp)
    e885c3a6:	0077c503          	lbu	a0,7(a5)
    e885c3aa:	e42a                	sd	a0,8(sp)
    e885c3ac:	0047c783          	lbu	a5,4(a5)
    e885c3b0:	e03e                	sd	a5,0(sp)
    e885c3b2:	87ba                	mv	a5,a4
    e885c3b4:	8732                	mv	a4,a2
					i = SNPrintF( buf, sizeof( buf ), "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", 
    e885c3b6:	00067617          	auipc	a2,0x67
    e885c3ba:	cb260613          	addi	a2,a2,-846 # e88c3068 <kPairingSessionClass+0x378>
    e885c3be:	12c00593          	li	a1,300
    e885c3c2:	0988                	addi	a0,sp,208
    e885c3c4:	1c6000ef          	jal	ra,e885c58a <SNPrintF>
    e885c3c8:	b51d                	j	e885c1ee <PrintFCoreVAList+0x1396>
    e885c3ca:	0047c883          	lbu	a7,4(a5)
    e885c3ce:	f042                	sd	a6,32(sp)
    e885c3d0:	e896                	sd	t0,80(sp)
    e885c3d2:	e4fe                	sd	t6,72(sp)
    e885c3d4:	e0fa                	sd	t5,64(sp)
    e885c3d6:	fc76                	sd	t4,56(sp)
    e885c3d8:	f872                	sd	t3,48(sp)
    e885c3da:	f41a                	sd	t1,40(sp)
    e885c3dc:	ec2a                	sd	a0,24(sp)
    e885c3de:	0077c503          	lbu	a0,7(a5)
    e885c3e2:	882e                	mv	a6,a1
    e885c3e4:	e82a                	sd	a0,16(sp)
    e885c3e6:	0067c503          	lbu	a0,6(a5)
    e885c3ea:	e42a                	sd	a0,8(sp)
    e885c3ec:	0057c783          	lbu	a5,5(a5)
    e885c3f0:	e03e                	sd	a5,0(sp)
    e885c3f2:	87b2                	mv	a5,a2
    e885c3f4:	b7c9                	j	e885c3b6 <PrintFCoreVAList+0x155e>
				else if( F.hSize == 2 ) *( (char    *) p ) = (char)  total;
    e885c3f6:	4709                	li	a4,2
    e885c3f8:	00e51563          	bne	a0,a4,e885c402 <PrintFCoreVAList+0x15aa>
    e885c3fc:	01278023          	sb	s2,0(a5)
    e885c400:	b409                	j	e885be02 <PrintFCoreVAList+0xfaa>
				else if( F.lSize == 1 )	*( (long    *) p ) = (long)  total;
    e885c402:	4705                	li	a4,1
    e885c404:	00e59563          	bne	a1,a4,e885c40e <PrintFCoreVAList+0x15b6>
				else if( F.lSize == 2 )	*( (int64_t *) p ) = (long)  total;
    e885c408:	0127b023          	sd	s2,0(a5)
    e885c40c:	badd                	j	e885be02 <PrintFCoreVAList+0xfaa>
    e885c40e:	4709                	li	a4,2
    e885c410:	fee58ce3          	beq	a1,a4,e885c408 <PrintFCoreVAList+0x15b0>
				else					*( (int     *) p ) = total;
    e885c414:	0127a023          	sw	s2,0(a5)
    e885c418:	b2ed                	j	e885be02 <PrintFCoreVAList+0xfaa>
				if( F.suppress ) continue;
    e885c41a:	09014783          	lbu	a5,144(sp)
    e885c41e:	8bc1                	andi	a5,a5,16
    e885c420:	9e0791e3          	bnez	a5,e885be02 <PrintFCoreVAList+0xfaa>
				buf[ 0 ] = '%';
    e885c424:	0cd10823          	sb	a3,208(sp)
    e885c428:	b919                	j	e885c03e <PrintFCoreVAList+0x11e6>
		for( eol = line; ( eol < end ) && ( *eol != '\r' ) && ( *eol != '\n' ); ++eol ) {}
    e885c42a:	0c85                	addi	s9,s9,1
    e885c42c:	019b9663          	bne	s7,s9,e885c438 <PrintFCoreVAList+0x15e0>
    e885c430:	8dde                	mv	s11,s7
    e885c432:	8cde                	mv	s9,s7
    e885c434:	a035                	j	e885c460 <PrintFCoreVAList+0x1608>
	for( line = inStr, end = line + inLen; line < end; line = next )
    e885c436:	8c9a                	mv	s9,t1
		for( eol = line; ( eol < end ) && ( *eol != '\r' ) && ( *eol != '\n' ); ++eol ) {}
    e885c438:	000cc683          	lbu	a3,0(s9)
    e885c43c:	47b5                	li	a5,13
    e885c43e:	0ef68b63          	beq	a3,a5,e885c534 <PrintFCoreVAList+0x16dc>
    e885c442:	47a9                	li	a5,10
    e885c444:	fef693e3          	bne	a3,a5,e885c42a <PrintFCoreVAList+0x15d2>
		if( eol < end )
    e885c448:	0b7cef63          	bltu	s9,s7,e885c506 <PrintFCoreVAList+0x16ae>
    e885c44c:	a0f5                	j	e885c538 <PrintFCoreVAList+0x16e0>
			if( ( eol[ 0 ] == '\r' ) && ( ( ( eol + 1 ) < end ) && ( eol[ 1 ] == '\n' ) ) )
    e885c44e:	001cc683          	lbu	a3,1(s9)
    e885c452:	47a9                	li	a5,10
    e885c454:	0af69963          	bne	a3,a5,e885c506 <PrintFCoreVAList+0x16ae>
				next = eol + 2;
    e885c458:	002c8d93          	addi	s11,s9,2
		if( ( line < eol ) && ( *line != '\r' ) && ( *line != '\n' ) )
    e885c45c:	0b937b63          	bgeu	t1,s9,e885c512 <PrintFCoreVAList+0x16ba>
    e885c460:	00034603          	lbu	a2,0(t1)
    e885c464:	47b5                	li	a5,13
    e885c466:	02f60063          	beq	a2,a5,e885c486 <PrintFCoreVAList+0x162e>
    e885c46a:	47a9                	li	a5,10
    e885c46c:	00f60d63          	beq	a2,a5,e885c486 <PrintFCoreVAList+0x162e>
			n = inFormat->fieldWidth;
    e885c470:	4eea                	lw	t4,152(sp)
			for( i = 0; i < n; ++i )
    e885c472:	4881                	li	a7,0
    e885c474:	0028961b          	slliw	a2,a7,0x2
    e885c478:	0186063b          	addw	a2,a2,s8
    e885c47c:	0004b803          	ld	a6,0(s1)
    e885c480:	031e9563          	bne	t4,a7,e885c4aa <PrintFCoreVAList+0x1652>
    e885c484:	8c32                	mv	s8,a2
			err = inContext->callback( line, len, inContext );
    e885c486:	0004b803          	ld	a6,0(s1)
			len = (size_t)( eol - line );
    e885c48a:	406c88b3          	sub	a7,s9,t1
			err = inContext->callback( line, len, inContext );
    e885c48e:	85c6                	mv	a1,a7
    e885c490:	8626                	mv	a2,s1
    e885c492:	851a                	mv	a0,t1
    e885c494:	f4c6                	sd	a7,104(sp)
    e885c496:	9802                	jalr	a6
    e885c498:	8d2a                	mv	s10,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885c49a:	78a6                	ld	a7,104(sp)
    e885c49c:	00055463          	bgez	a0,e885c4a4 <PrintFCoreVAList+0x164c>
    e885c4a0:	bf5fe06f          	j	e885b094 <PrintFCoreVAList+0x23c>
			total += (int) len;
    e885c4a4:	01888c3b          	addw	s8,a7,s8
    e885c4a8:	a09d                	j	e885c50e <PrintFCoreVAList+0x16b6>
				err = inContext->callback( "    ", 4, inContext );
    e885c4aa:	8626                	mv	a2,s1
    e885c4ac:	4591                	li	a1,4
    e885c4ae:	00067517          	auipc	a0,0x67
    e885c4b2:	c0a50513          	addi	a0,a0,-1014 # e88c30b8 <kPairingSessionClass+0x3c8>
    e885c4b6:	fcc6                	sd	a7,120(sp)
    e885c4b8:	f8f6                	sd	t4,112(sp)
    e885c4ba:	f49a                	sd	t1,104(sp)
    e885c4bc:	9802                	jalr	a6
    e885c4be:	8d2a                	mv	s10,a0
				require_action_quiet( err >= 0, exit, total = err );
    e885c4c0:	00055463          	bgez	a0,e885c4c8 <PrintFCoreVAList+0x1670>
    e885c4c4:	bd1fe06f          	j	e885b094 <PrintFCoreVAList+0x23c>
			for( i = 0; i < n; ++i )
    e885c4c8:	78e6                	ld	a7,120(sp)
    e885c4ca:	7ec6                	ld	t4,112(sp)
    e885c4cc:	7326                	ld	t1,104(sp)
    e885c4ce:	2885                	addiw	a7,a7,1
    e885c4d0:	b755                	j	e885c474 <PrintFCoreVAList+0x161c>
				i = SNPrintF( buf, sizeof( buf ), "<<UNKNOWN PRINTF EXTENSION '%.*s'>>", (int) extensionLen, extensionPtr );
    e885c4d2:	000b869b          	sext.w	a3,s7
    e885c4d6:	00067617          	auipc	a2,0x67
    e885c4da:	bea60613          	addi	a2,a2,-1046 # e88c30c0 <kPairingSessionClass+0x3d0>
    e885c4de:	12c00593          	li	a1,300
    e885c4e2:	0988                	addi	a0,sp,208
    e885c4e4:	0a6000ef          	jal	ra,e885c58a <SNPrintF>
    e885c4e8:	b319                	j	e885c1ee <PrintFCoreVAList+0x1396>
				if( !nestedFormat || !nestedArgs ) { s = "<<NULL>>"; i = 8; break; }
    e885c4ea:	00067b97          	auipc	s7,0x67
    e885c4ee:	8beb8b93          	addi	s7,s7,-1858 # e88c2da8 <kPairingSessionClass+0xb8>
    e885c4f2:	4d21                	li	s10,8
    e885c4f4:	888ff06f          	j	e885b57c <PrintFCoreVAList+0x724>
    e885c4f8:	8d62                	mv	s10,s8
    e885c4fa:	b9bfe06f          	j	e885b094 <PrintFCoreVAList+0x23c>
			if( ( eol[ 0 ] == '\r' ) && ( ( ( eol + 1 ) < end ) && ( eol[ 1 ] == '\n' ) ) )
    e885c4fe:	001c8693          	addi	a3,s9,1
    e885c502:	f576e6e3          	bltu	a3,s7,e885c44e <PrintFCoreVAList+0x15f6>
				next = eol + 1;
    e885c506:	001c8d93          	addi	s11,s9,1
		if( ( line < eol ) && ( *line != '\r' ) && ( *line != '\n' ) )
    e885c50a:	f5936be3          	bltu	t1,s9,e885c460 <PrintFCoreVAList+0x1608>
		if( eol < end )
    e885c50e:	037cf063          	bgeu	s9,s7,e885c52e <PrintFCoreVAList+0x16d6>
			err = inContext->callback( "\n", 1, inContext );
    e885c512:	609c                	ld	a5,0(s1)
    e885c514:	8626                	mv	a2,s1
    e885c516:	4585                	li	a1,1
    e885c518:	00043517          	auipc	a0,0x43
    e885c51c:	76850513          	addi	a0,a0,1896 # e889fc80 <TWO52+0x88>
    e885c520:	9782                	jalr	a5
    e885c522:	8d2a                	mv	s10,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885c524:	00055463          	bgez	a0,e885c52c <PrintFCoreVAList+0x16d4>
    e885c528:	b6dfe06f          	j	e885b094 <PrintFCoreVAList+0x23c>
			total += 1;
    e885c52c:	2c05                	addiw	s8,s8,1
		if( ( line < eol ) && ( *line != '\r' ) && ( *line != '\n' ) )
    e885c52e:	836e                	mv	t1,s11
    e885c530:	f81fe06f          	j	e885b4b0 <PrintFCoreVAList+0x658>
		if( eol < end )
    e885c534:	fd7ce5e3          	bltu	s9,s7,e885c4fe <PrintFCoreVAList+0x16a6>
		if( ( line < eol ) && ( *line != '\r' ) && ( *line != '\n' ) )
    e885c538:	8de6                	mv	s11,s9
    e885c53a:	ff937ae3          	bgeu	t1,s9,e885c52e <PrintFCoreVAList+0x16d6>
    e885c53e:	b70d                	j	e885c460 <PrintFCoreVAList+0x1608>
		if( fmt != src )
    e885c540:	01750463          	beq	a0,s7,e885c548 <PrintFCoreVAList+0x16f0>
    e885c544:	97ffe06f          	j	e885aec2 <PrintFCoreVAList+0x6a>
    e885c548:	8d4a                	mv	s10,s2
    e885c54a:	b4bfe06f          	j	e885b094 <PrintFCoreVAList+0x23c>

00000000e885c54e <VSNPrintF>:
{
    e885c54e:	7139                	addi	sp,sp,-64
	context.callback		= PrintFCallBackFixedString;
    e885c550:	fffff797          	auipc	a5,0xfffff
    e885c554:	82c78793          	addi	a5,a5,-2004 # e885ad7c <PrintFCallBackFixedString>
{
    e885c558:	f822                	sd	s0,48(sp)
	context.str		 		= (char *) inBuf;
    e885c55a:	f8a1578b          	sdd	a5,a0,(sp),0,4
{
    e885c55e:	fc06                	sd	ra,56(sp)
	context.usedSize		= 0;
    e885c560:	e802                	sd	zero,16(sp)
{
    e885c562:	842e                	mv	s0,a1
	context.reservedSize	= ( inMaxLen > 0 ) ? inMaxLen - 1 : 0;
    e885c564:	fff40793          	addi	a5,s0,-1
{
    e885c568:	85b2                	mv	a1,a2
	context.reservedSize	= ( inMaxLen > 0 ) ? inMaxLen - 1 : 0;
    e885c56a:	e011                	bnez	s0,e885c56e <VSNPrintF+0x20>
    e885c56c:	4781                	li	a5,0
	n = PrintFCoreVAList( &context, inFormat, inArgs );
    e885c56e:	8636                	mv	a2,a3
    e885c570:	850a                	mv	a0,sp
	context.reservedSize	= ( inMaxLen > 0 ) ? inMaxLen - 1 : 0;
    e885c572:	ec3e                	sd	a5,24(sp)
	n = PrintFCoreVAList( &context, inFormat, inArgs );
    e885c574:	8e5fe0ef          	jal	ra,e885ae58 <PrintFCoreVAList>
	if( inMaxLen > 0 ) context.str[ context.usedSize ] = '\0';
    e885c578:	c409                	beqz	s0,e885c582 <VSNPrintF+0x34>
    e885c57a:	6722                	ld	a4,8(sp)
    e885c57c:	67c2                	ld	a5,16(sp)
    e885c57e:	00f7500b          	srb	zero,a4,a5,0
}
    e885c582:	70e2                	ld	ra,56(sp)
    e885c584:	7442                	ld	s0,48(sp)
    e885c586:	6121                	addi	sp,sp,64
    e885c588:	8082                	ret

00000000e885c58a <SNPrintF>:
{
    e885c58a:	715d                	addi	sp,sp,-80
    e885c58c:	f436                	sd	a3,40(sp)
	va_start( args, inFormat );
    e885c58e:	1034                	addi	a3,sp,40
{
    e885c590:	ec06                	sd	ra,24(sp)
    e885c592:	fef1570b          	sdd	a4,a5,(sp),3,4
    e885c596:	e0c2                	sd	a6,64(sp)
    e885c598:	e4c6                	sd	a7,72(sp)
	va_start( args, inFormat );
    e885c59a:	e436                	sd	a3,8(sp)
	n = VSNPrintF( inBuf, inMaxLen, inFormat, args );
    e885c59c:	fb3ff0ef          	jal	ra,e885c54e <VSNPrintF>
}
    e885c5a0:	60e2                	ld	ra,24(sp)
    e885c5a2:	6161                	addi	sp,sp,80
    e885c5a4:	8082                	ret

00000000e885c5a6 <SNPrintF_Add>:
{
    e885c5a6:	7175                	addi	sp,sp,-144
    e885c5a8:	fc4e                	sd	s3,56(sp)
    e885c5aa:	ec86                	sd	ra,88(sp)
    e885c5ac:	e8a2                	sd	s0,80(sp)
    e885c5ae:	e4a6                	sd	s1,72(sp)
    e885c5b0:	e0ca                	sd	s2,64(sp)
    e885c5b2:	f4b6                	sd	a3,104(sp)
    e885c5b4:	f8ba                	sd	a4,112(sp)
    e885c5b6:	fcbe                	sd	a5,120(sp)
    e885c5b8:	e142                	sd	a6,128(sp)
    e885c5ba:	e546                	sd	a7,136(sp)
	char * const		ptr = *ioPtr;
    e885c5bc:	6104                	ld	s1,0(a0)
	len = (size_t)( inEnd - ptr );
    e885c5be:	409589b3          	sub	s3,a1,s1
	require_action( len > 0, exit, n = kNoSpaceErr );
    e885c5c2:	06098763          	beqz	s3,e885c630 <SNPrintF_Add+0x8a>
    e885c5c6:	892e                	mv	s2,a1
    e885c5c8:	842a                	mv	s0,a0
	va_start( args, inFormat );
    e885c5ca:	10b4                	addi	a3,sp,104
	n = VSNPrintF( ptr, len, inFormat, args );
    e885c5cc:	85ce                	mv	a1,s3
    e885c5ce:	8526                	mv	a0,s1
    e885c5d0:	ec32                	sd	a2,24(sp)
	va_start( args, inFormat );
    e885c5d2:	f436                	sd	a3,40(sp)
	n = VSNPrintF( ptr, len, inFormat, args );
    e885c5d4:	f7bff0ef          	jal	ra,e885c54e <VSNPrintF>
	require( n >= 0, exit );
    e885c5d8:	04054163          	bltz	a0,e885c61a <SNPrintF_Add+0x74>
	if( n >= ( (int) len ) )
    e885c5dc:	0009879b          	sext.w	a5,s3
    e885c5e0:	68e2                	ld	a7,24(sp)
    e885c5e2:	04f54363          	blt	a0,a5,e885c628 <SNPrintF_Add+0x82>
			dlogassert( "Add '%s' format failed due to lack of space (%d vs %zu)", inFormat, n, len );
    e885c5e6:	e02a                	sd	a0,0(sp)
    e885c5e8:	e44e                	sd	s3,8(sp)
    e885c5ea:	4501                	li	a0,0
    e885c5ec:	00067817          	auipc	a6,0x67
    e885c5f0:	c1c80813          	addi	a6,a6,-996 # e88c3208 <kPairingSessionClass+0x518>
    e885c5f4:	00067797          	auipc	a5,0x67
    e885c5f8:	d0478793          	addi	a5,a5,-764 # e88c32f8 <__PRETTY_FUNCTION__.9629>
    e885c5fc:	0e200713          	li	a4,226
    e885c600:	00067697          	auipc	a3,0x67
    e885c604:	c4068693          	addi	a3,a3,-960 # e88c3240 <kPairingSessionClass+0x550>
    e885c608:	4601                	li	a2,0
    e885c60a:	4581                	li	a1,0
    e885c60c:	dbdf10ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		*ioPtr = inEnd;
    e885c610:	01243023          	sd	s2,0(s0)
		n = kOverrunErr;
    e885c614:	7579                	lui	a0,0xffffe
    e885c616:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
}
    e885c61a:	60e6                	ld	ra,88(sp)
    e885c61c:	6446                	ld	s0,80(sp)
    e885c61e:	64a6                	ld	s1,72(sp)
    e885c620:	6906                	ld	s2,64(sp)
    e885c622:	79e2                	ld	s3,56(sp)
    e885c624:	6149                	addi	sp,sp,144
    e885c626:	8082                	ret
	*ioPtr = ptr + n;
    e885c628:	9526                	add	a0,a0,s1
    e885c62a:	e008                	sd	a0,0(s0)
	n = kNoErr;
    e885c62c:	4501                	li	a0,0
    e885c62e:	b7f5                	j	e885c61a <SNPrintF_Add+0x74>
	require_action( len > 0, exit, n = kNoSpaceErr );
    e885c630:	7579                	lui	a0,0xffffe
    e885c632:	59550513          	addi	a0,a0,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
    e885c636:	b7d5                	j	e885c61a <SNPrintF_Add+0x74>

00000000e885c638 <VASPrintF>:
{
    e885c638:	715d                	addi	sp,sp,-80
	context.callback		= PrintFCallBackAllocatedString;
    e885c63a:	ffffe797          	auipc	a5,0xffffe
    e885c63e:	79478793          	addi	a5,a5,1940 # e885adce <PrintFCallBackAllocatedString>
{
    e885c642:	fc26                	sd	s1,56(sp)
    e885c644:	84aa                	mv	s1,a0
	n = PrintFCoreVAList( &context, inFormat, inArgs );
    e885c646:	850a                	mv	a0,sp
{
    e885c648:	e0a2                	sd	s0,64(sp)
    e885c64a:	e486                	sd	ra,72(sp)
	context.callback		= PrintFCallBackAllocatedString;
    e885c64c:	e03e                	sd	a5,0(sp)
	context.str		 		= NULL;
    e885c64e:	e402                	sd	zero,8(sp)
	context.usedSize		= 0;
    e885c650:	e802                	sd	zero,16(sp)
	context.reservedSize	= 0;
    e885c652:	ec02                	sd	zero,24(sp)
	n = PrintFCoreVAList( &context, inFormat, inArgs );
    e885c654:	805fe0ef          	jal	ra,e885ae58 <PrintFCoreVAList>
    e885c658:	842a                	mv	s0,a0
	if( n >= 0 )
    e885c65a:	00054d63          	bltz	a0,e885c674 <VASPrintF+0x3c>
		tmp = context.callback( "", 1, &context );
    e885c65e:	6782                	ld	a5,0(sp)
    e885c660:	860a                	mv	a2,sp
    e885c662:	4585                	li	a1,1
    e885c664:	00065517          	auipc	a0,0x65
    e885c668:	c0c50513          	addi	a0,a0,-1012 # e88c1270 <kHTTPServerClass+0x90>
    e885c66c:	9782                	jalr	a5
		if( tmp < 0 ) n = tmp;
    e885c66e:	00055d63          	bgez	a0,e885c688 <VASPrintF+0x50>
    e885c672:	842a                	mv	s0,a0
	else if( context.str ) free( context.str );
    e885c674:	6522                	ld	a0,8(sp)
    e885c676:	c119                	beqz	a0,e885c67c <VASPrintF+0x44>
    e885c678:	4891f0ef          	jal	ra,e887c300 <eLIBs_free>
}
    e885c67c:	8522                	mv	a0,s0
    e885c67e:	60a6                	ld	ra,72(sp)
    e885c680:	6406                	ld	s0,64(sp)
    e885c682:	74e2                	ld	s1,56(sp)
    e885c684:	6161                	addi	sp,sp,80
    e885c686:	8082                	ret
	if( n >= 0 ) *outStr = context.str;
    e885c688:	67a2                	ld	a5,8(sp)
    e885c68a:	e09c                	sd	a5,0(s1)
	return( n );
    e885c68c:	bfc5                	j	e885c67c <VASPrintF+0x44>

00000000e885c68e <ASPrintF>:
{
    e885c68e:	715d                	addi	sp,sp,-80
    e885c690:	fcd1560b          	sdd	a2,a3,(sp),2,4
	va_start( args, inFormat );
    e885c694:	1010                	addi	a2,sp,32
{
    e885c696:	ec06                	sd	ra,24(sp)
    e885c698:	fef1570b          	sdd	a4,a5,(sp),3,4
    e885c69c:	e0c2                	sd	a6,64(sp)
    e885c69e:	e4c6                	sd	a7,72(sp)
	va_start( args, inFormat );
    e885c6a0:	e432                	sd	a2,8(sp)
	n = VASPrintF( outStr, inFormat, args );
    e885c6a2:	f97ff0ef          	jal	ra,e885c638 <VASPrintF>
}
    e885c6a6:	60e2                	ld	ra,24(sp)
    e885c6a8:	6161                	addi	sp,sp,80
    e885c6aa:	8082                	ret

00000000e885c6ac <AppendPrintF>:
{
    e885c6ac:	711d                	addi	sp,sp,-96
    e885c6ae:	fed1560b          	sdd	a2,a3,(sp),3,4
    e885c6b2:	ec22                	sd	s0,24(sp)
    e885c6b4:	e4be                	sd	a5,72(sp)
    e885c6b6:	f406                	sd	ra,40(sp)
    e885c6b8:	f026                	sd	s1,32(sp)
    e885c6ba:	e0ba                	sd	a4,64(sp)
    e885c6bc:	e8c2                	sd	a6,80(sp)
    e885c6be:	ecc6                	sd	a7,88(sp)
	va_start( args, inFormat );
    e885c6c0:	181c                	addi	a5,sp,48
	n = ASPrintF( &tempStr, "%s%V", *ioStr ? *ioStr : "", inFormat, &args );
    e885c6c2:	6110                	ld	a2,0(a0)
	va_start( args, inFormat );
    e885c6c4:	e03e                	sd	a5,0(sp)
{
    e885c6c6:	842a                	mv	s0,a0
	n = ASPrintF( &tempStr, "%s%V", *ioStr ? *ioStr : "", inFormat, &args );
    e885c6c8:	e609                	bnez	a2,e885c6d2 <AppendPrintF+0x26>
    e885c6ca:	00065617          	auipc	a2,0x65
    e885c6ce:	ba660613          	addi	a2,a2,-1114 # e88c1270 <kHTTPServerClass+0x90>
    e885c6d2:	86ae                	mv	a3,a1
    e885c6d4:	870a                	mv	a4,sp
    e885c6d6:	00066597          	auipc	a1,0x66
    e885c6da:	6ca58593          	addi	a1,a1,1738 # e88c2da0 <kPairingSessionClass+0xb0>
    e885c6de:	0028                	addi	a0,sp,8
    e885c6e0:	fafff0ef          	jal	ra,e885c68e <ASPrintF>
    e885c6e4:	84aa                	mv	s1,a0
	require_quiet( n >= 0, exit );
    e885c6e6:	00054863          	bltz	a0,e885c6f6 <AppendPrintF+0x4a>
	if( *ioStr ) free( *ioStr );
    e885c6ea:	6008                	ld	a0,0(s0)
    e885c6ec:	c119                	beqz	a0,e885c6f2 <AppendPrintF+0x46>
    e885c6ee:	4131f0ef          	jal	ra,e887c300 <eLIBs_free>
	*ioStr = tempStr;
    e885c6f2:	67a2                	ld	a5,8(sp)
    e885c6f4:	e01c                	sd	a5,0(s0)
}
    e885c6f6:	70a2                	ld	ra,40(sp)
    e885c6f8:	6462                	ld	s0,24(sp)
    e885c6fa:	8526                	mv	a0,s1
    e885c6fc:	7482                	ld	s1,32(sp)
    e885c6fe:	6125                	addi	sp,sp,96
    e885c700:	8082                	ret

00000000e885c702 <VCPrintF>:
{
    e885c702:	7139                	addi	sp,sp,-64
    e885c704:	87b2                	mv	a5,a2
	context.callback		= PrintFCallBackUserCallBack;
    e885c706:	ffffe717          	auipc	a4,0xffffe
    e885c70a:	66e70713          	addi	a4,a4,1646 # e885ad74 <PrintFCallBackUserCallBack>
	context.userContext		= inContext;
    e885c70e:	fcb1550b          	sdd	a0,a1,(sp),2,4
	n = PrintFCoreVAList( &context, inFormat, inArgs );
    e885c712:	8636                	mv	a2,a3
    e885c714:	85be                	mv	a1,a5
    e885c716:	850a                	mv	a0,sp
{
    e885c718:	f822                	sd	s0,48(sp)
    e885c71a:	fc06                	sd	ra,56(sp)
	context.callback		= PrintFCallBackUserCallBack;
    e885c71c:	e03a                	sd	a4,0(sp)
	context.str		 		= NULL;
    e885c71e:	e402                	sd	zero,8(sp)
	context.usedSize		= 0;
    e885c720:	e802                	sd	zero,16(sp)
	context.reservedSize	= 0;
    e885c722:	ec02                	sd	zero,24(sp)
	n = PrintFCoreVAList( &context, inFormat, inArgs );
    e885c724:	f34fe0ef          	jal	ra,e885ae58 <PrintFCoreVAList>
    e885c728:	842a                	mv	s0,a0
	if( n >= 0 )
    e885c72a:	00054d63          	bltz	a0,e885c744 <VCPrintF+0x42>
		tmp = context.callback( "", 0, &context );
    e885c72e:	6782                	ld	a5,0(sp)
    e885c730:	860a                	mv	a2,sp
    e885c732:	4581                	li	a1,0
    e885c734:	00065517          	auipc	a0,0x65
    e885c738:	b3c50513          	addi	a0,a0,-1220 # e88c1270 <kHTTPServerClass+0x90>
    e885c73c:	9782                	jalr	a5
		if( tmp < 0 ) n = tmp;
    e885c73e:	00055363          	bgez	a0,e885c744 <VCPrintF+0x42>
    e885c742:	842a                	mv	s0,a0
}
    e885c744:	8522                	mv	a0,s0
    e885c746:	70e2                	ld	ra,56(sp)
    e885c748:	7442                	ld	s0,48(sp)
    e885c74a:	6121                	addi	sp,sp,64
    e885c74c:	8082                	ret

00000000e885c74e <CPrintF>:
{
    e885c74e:	715d                	addi	sp,sp,-80
    e885c750:	f436                	sd	a3,40(sp)
	va_start( args, inFormat );
    e885c752:	1034                	addi	a3,sp,40
{
    e885c754:	ec06                	sd	ra,24(sp)
    e885c756:	fef1570b          	sdd	a4,a5,(sp),3,4
    e885c75a:	e0c2                	sd	a6,64(sp)
    e885c75c:	e4c6                	sd	a7,72(sp)
	va_start( args, inFormat );
    e885c75e:	e436                	sd	a3,8(sp)
	n = VCPrintF( inCallBack, inContext, inFormat, args );
    e885c760:	fa3ff0ef          	jal	ra,e885c702 <VCPrintF>
}
    e885c764:	60e2                	ld	ra,24(sp)
    e885c766:	6161                	addi	sp,sp,80
    e885c768:	8082                	ret

00000000e885c76a <PrintFCore>:
{
    e885c76a:	715d                	addi	sp,sp,-80
    e885c76c:	fcd1560b          	sdd	a2,a3,(sp),2,4
	va_start( args, inFormat );
    e885c770:	1010                	addi	a2,sp,32
{
    e885c772:	ec06                	sd	ra,24(sp)
    e885c774:	fef1570b          	sdd	a4,a5,(sp),3,4
    e885c778:	e0c2                	sd	a6,64(sp)
    e885c77a:	e4c6                	sd	a7,72(sp)
	va_start( args, inFormat );
    e885c77c:	e432                	sd	a2,8(sp)
	n = PrintFCoreVAList( inContext, inFormat, args );
    e885c77e:	edafe0ef          	jal	ra,e885ae58 <PrintFCoreVAList>
}
    e885c782:	60e2                	ld	ra,24(sp)
    e885c784:	6161                	addi	sp,sp,80
    e885c786:	8082                	ret

00000000e885c788 <PrintFWriteHex.isra.2>:
	PrintFWriteHex( 
    e885c788:	714d                	addi	sp,sp,-336
    e885c78a:	fa4a                	sd	s2,304(sp)
	size		= ( inSize > inMaxSize ) ? inMaxSize : inSize;
    e885c78c:	00e7b933          	sltu	s2,a5,a4
	PrintFWriteHex( 
    e885c790:	fde6                	sd	s9,248(sp)
    e885c792:	8cbe                	mv	s9,a5
	size		= ( inSize > inMaxSize ) ? inMaxSize : inSize;
    e885c794:	4127178b          	mveqz	a5,a4,s2
    e885c798:	893e                	mv	s2,a5
	prevHexPtr	= hex2;
    e885c79a:	109c                	addi	a5,sp,96
	PrintFWriteHex( 
    e885c79c:	f252                	sd	s4,288(sp)
    e885c79e:	8a3a                	mv	s4,a4
				*s++ = ' ';
    e885c7a0:	6709                	lui	a4,0x2
	prevHexPtr	= hex2;
    e885c7a2:	e03e                	sd	a5,0(sp)
				*s++ = ' ';
    e885c7a4:	0207079b          	addiw	a5,a4,32
	PrintFWriteHex( 
    e885c7a8:	e2a2                	sd	s0,320(sp)
    e885c7aa:	fe26                	sd	s1,312(sp)
    e885c7ac:	f64e                	sd	s3,296(sp)
    e885c7ae:	ea5a                	sd	s6,272(sp)
    e885c7b0:	e65e                	sd	s7,264(sp)
    e885c7b2:	e262                	sd	s8,256(sp)
    e885c7b4:	f9ea                	sd	s10,240(sp)
    e885c7b6:	f5ee                	sd	s11,232(sp)
    e885c7b8:	e686                	sd	ra,328(sp)
    e885c7ba:	ee56                	sd	s5,280(sp)
    e885c7bc:	842a                	mv	s0,a0
    e885c7be:	e82e                	sd	a1,16(sp)
    e885c7c0:	e436                	sd	a3,8(sp)
				err = print_indent( inContext, inIndent );
    e885c7c2:	00261b9b          	slliw	s7,a2,0x2
    e885c7c6:	8b36                	mv	s6,a3
	dupSize		= 0;
    e885c7c8:	4481                	li	s1,0
	dupCount	= 0;
    e885c7ca:	4c01                	li	s8,0
	currHexPtr	= hex1;
    e885c7cc:	02010993          	addi	s3,sp,32
	int					total = 0;
    e885c7d0:	4d01                	li	s10,0
				*s++ = ' ';
    e885c7d2:	00f11f23          	sh	a5,30(sp)
				*s++ = (uint8_t) kHexDigitsLowercase[ ptr[ i ] >> 4   ];
    e885c7d6:	00047d97          	auipc	s11,0x47
    e885c7da:	9d2d8d93          	addi	s11,s11,-1582 # e88a31a8 <mDNSInterface_Unicast+0x428>
		chunkSize = Min( size, 16 );
    e885c7de:	47c1                	li	a5,16
    e885c7e0:	8aca                	mv	s5,s2
    e885c7e2:	0127f363          	bgeu	a5,s2,e885c7e8 <PrintFWriteHex.isra.2+0x60>
    e885c7e6:	4ac1                	li	s5,16
		s = currHexPtr;
    e885c7e8:	874e                	mv	a4,s3
		for( i = 0; i < 16; ++i )
    e885c7ea:	4681                	li	a3,0
			if( ( i > 0 ) && ( ( i % 4 ) == 0 ) ) *s++ = ' ';
    e885c7ec:	02000513          	li	a0,32
			if( i < chunkSize )
    e885c7f0:	00270593          	addi	a1,a4,2 # 2002 <memcmp-0xe87fdffe>
    e885c7f4:	0d56f363          	bgeu	a3,s5,e885c8ba <PrintFWriteHex.isra.2+0x132>
				*s++ = (uint8_t) kHexDigitsLowercase[ ptr[ i ] >> 4   ];
    e885c7f8:	80db460b          	lrbu	a2,s6,a3,0
    e885c7fc:	00465813          	srli	a6,a2,0x4
				*s++ = (uint8_t) kHexDigitsLowercase[ ptr[ i ] &  0xF ];
    e885c800:	8a3d                	andi	a2,a2,15
				*s++ = (uint8_t) kHexDigitsLowercase[ ptr[ i ] >> 4   ];
    e885c802:	810dc80b          	lrbu	a6,s11,a6,0
				*s++ = (uint8_t) kHexDigitsLowercase[ ptr[ i ] &  0xF ];
    e885c806:	80cdc60b          	lrbu	a2,s11,a2,0
				*s++ = (uint8_t) kHexDigitsLowercase[ ptr[ i ] >> 4   ];
    e885c80a:	01070023          	sb	a6,0(a4)
				*s++ = (uint8_t) kHexDigitsLowercase[ ptr[ i ] &  0xF ];
    e885c80e:	00c700a3          	sb	a2,1(a4)
		for( i = 0; i < 16; ++i )
    e885c812:	0685                	addi	a3,a3,1
    e885c814:	47c1                	li	a5,16
    e885c816:	08f69963          	bne	a3,a5,e885c8a8 <PrintFWriteHex.isra.2+0x120>
		*s++ = '\0';
    e885c81a:	00070123          	sb	zero,2(a4)
				if( !PrintFIsPrintable( c ) )
    e885c81e:	05e00593          	li	a1,94
		for( i = 0; i < 16; ++i )
    e885c822:	4701                	li	a4,0
				c = ' ';
    e885c824:	02000693          	li	a3,32
			if( i < chunkSize )
    e885c828:	01577c63          	bgeu	a4,s5,e885c840 <PrintFWriteHex.isra.2+0xb8>
				c = ptr[ i ];
    e885c82c:	80eb468b          	lrbu	a3,s6,a4,0
				if( !PrintFIsPrintable( c ) )
    e885c830:	fe06861b          	addiw	a2,a3,-32
    e885c834:	0ff67613          	andi	a2,a2,255
    e885c838:	00c5f463          	bgeu	a1,a2,e885c840 <PrintFWriteHex.isra.2+0xb8>
					c = '^';
    e885c83c:	05e00693          	li	a3,94
			*s++ = c;
    e885c840:	111c                	addi	a5,sp,160
    e885c842:	00e7d68b          	srb	a3,a5,a4,0
		for( i = 0; i < 16; ++i )
    e885c846:	0705                	addi	a4,a4,1
    e885c848:	47c1                	li	a5,16
    e885c84a:	fcf71de3          	bne	a4,a5,e885c824 <PrintFWriteHex.isra.2+0x9c>
		*s++ = '\0';
    e885c84e:	0a010823          	sb	zero,176(sp)
		if( inSize <= 16 )
    e885c852:	0747e963          	bltu	a5,s4,e885c8c4 <PrintFWriteHex.isra.2+0x13c>
			err = print_indent( inContext, inIndent );
    e885c856:	00065697          	auipc	a3,0x65
    e885c85a:	a1a68693          	addi	a3,a3,-1510 # e88c1270 <kHTTPServerClass+0x90>
    e885c85e:	865e                	mv	a2,s7
    e885c860:	00067597          	auipc	a1,0x67
    e885c864:	91058593          	addi	a1,a1,-1776 # e88c3170 <kPairingSessionClass+0x480>
    e885c868:	8522                	mv	a0,s0
    e885c86a:	f01ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c86e:	872a                	mv	a4,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885c870:	1c054463          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
			total += err;
    e885c874:	01a50d3b          	addw	s10,a0,s10
			err = PrintFCore( inContext, "%s |%s| (%zu bytes)\n", currHexPtr, ascii, inSize );
    e885c878:	8752                	mv	a4,s4
    e885c87a:	1114                	addi	a3,sp,160
    e885c87c:	864e                	mv	a2,s3
    e885c87e:	00067597          	auipc	a1,0x67
    e885c882:	8fa58593          	addi	a1,a1,-1798 # e88c3178 <kPairingSessionClass+0x488>
    e885c886:	8522                	mv	a0,s0
    e885c888:	ee3ff0ef          	jal	ra,e885c76a <PrintFCore>
			err = PrintFCore( inContext, "+%04X: %s |%s| (%zu bytes)\n", (int)( ptr - start ), currHexPtr, ascii, inSize );
    e885c88c:	872a                	mv	a4,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885c88e:	1a054563          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
			total += err;
    e885c892:	00ad0d3b          	addw	s10,s10,a0
		size -= chunkSize;
    e885c896:	41590933          	sub	s2,s2,s5
		ptr  += chunkSize;
    e885c89a:	9b56                	add	s6,s6,s5
		if( size <= 0 ) break;
    e885c89c:	10090a63          	beqz	s2,e885c9b0 <PrintFWriteHex.isra.2+0x228>
		prevHexPtr = currHexPtr;
    e885c8a0:	874e                	mv	a4,s3
		currHexPtr = tempHexPtr;
    e885c8a2:	6982                	ld	s3,0(sp)
		prevHexPtr = currHexPtr;
    e885c8a4:	e03a                	sd	a4,0(sp)
    e885c8a6:	bf25                	j	e885c7de <PrintFWriteHex.isra.2+0x56>
			if( ( i > 0 ) && ( ( i % 4 ) == 0 ) ) *s++ = ' ';
    e885c8a8:	0036f613          	andi	a2,a3,3
    e885c8ac:	e609                	bnez	a2,e885c8b6 <PrintFWriteHex.isra.2+0x12e>
    e885c8ae:	00370593          	addi	a1,a4,3
    e885c8b2:	00a70123          	sb	a0,2(a4)
		prevHexPtr = currHexPtr;
    e885c8b6:	872e                	mv	a4,a1
    e885c8b8:	bf25                	j	e885c7f0 <PrintFWriteHex.isra.2+0x68>
				*s++ = ' ';
    e885c8ba:	01e15783          	lhu	a5,30(sp)
    e885c8be:	00f71023          	sh	a5,0(a4)
    e885c8c2:	bf81                	j	e885c812 <PrintFWriteHex.isra.2+0x8a>
		else if( ptr == start )
    e885c8c4:	67a2                	ld	a5,8(sp)
    e885c8c6:	02fb1f63          	bne	s6,a5,e885c904 <PrintFWriteHex.isra.2+0x17c>
			err = print_indent( inContext, inIndent );
    e885c8ca:	00065697          	auipc	a3,0x65
    e885c8ce:	9a668693          	addi	a3,a3,-1626 # e88c1270 <kHTTPServerClass+0x90>
    e885c8d2:	865e                	mv	a2,s7
    e885c8d4:	00067597          	auipc	a1,0x67
    e885c8d8:	89c58593          	addi	a1,a1,-1892 # e88c3170 <kPairingSessionClass+0x480>
    e885c8dc:	8522                	mv	a0,s0
    e885c8de:	e8dff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c8e2:	872a                	mv	a4,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885c8e4:	14054a63          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
			total += err;
    e885c8e8:	00ad0d3b          	addw	s10,s10,a0
			err = PrintFCore( inContext, "+%04X: %s |%s| (%zu bytes)\n", (int)( ptr - start ), currHexPtr, ascii, inSize );
    e885c8ec:	87d2                	mv	a5,s4
    e885c8ee:	1118                	addi	a4,sp,160
    e885c8f0:	86ce                	mv	a3,s3
    e885c8f2:	4601                	li	a2,0
    e885c8f4:	00067597          	auipc	a1,0x67
    e885c8f8:	89c58593          	addi	a1,a1,-1892 # e88c3190 <kPairingSessionClass+0x4a0>
    e885c8fc:	8522                	mv	a0,s0
    e885c8fe:	e6dff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c902:	b769                	j	e885c88c <PrintFWriteHex.isra.2+0x104>
		else if( ( inFormat->group > 0 ) && ( memcmp( currHexPtr, prevHexPtr, 32 ) == 0 ) )
    e885c904:	67c2                	ld	a5,16(sp)
    e885c906:	0007c703          	lbu	a4,0(a5)
    e885c90a:	e359                	bnez	a4,e885c990 <PrintFWriteHex.isra.2+0x208>
			if( dupCount > 0 )
    e885c90c:	05805463          	blez	s8,e885c954 <PrintFWriteHex.isra.2+0x1cc>
				err = print_indent( inContext, inIndent );
    e885c910:	00065697          	auipc	a3,0x65
    e885c914:	96068693          	addi	a3,a3,-1696 # e88c1270 <kHTTPServerClass+0x90>
    e885c918:	865e                	mv	a2,s7
    e885c91a:	00067597          	auipc	a1,0x67
    e885c91e:	85658593          	addi	a1,a1,-1962 # e88c3170 <kPairingSessionClass+0x480>
    e885c922:	8522                	mv	a0,s0
    e885c924:	e47ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c928:	872a                	mv	a4,a0
				require_action_quiet( err >= 0, exit, total = err );
    e885c92a:	10054763          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
				total += err;
    e885c92e:	00ad0d3b          	addw	s10,s10,a0
				err = PrintFCore( inContext, "* (%zu more identical bytes, %zu total)\n", dupSize, dupSize + 16 );
    e885c932:	01048693          	addi	a3,s1,16
    e885c936:	8626                	mv	a2,s1
    e885c938:	00067597          	auipc	a1,0x67
    e885c93c:	87858593          	addi	a1,a1,-1928 # e88c31b0 <kPairingSessionClass+0x4c0>
    e885c940:	8522                	mv	a0,s0
    e885c942:	e29ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c946:	872a                	mv	a4,a0
				require_action_quiet( err >= 0, exit, total = err );
    e885c948:	0e054863          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
				total += err;
    e885c94c:	00ad0d3b          	addw	s10,s10,a0
				dupSize  = 0;
    e885c950:	4481                	li	s1,0
				dupCount = 0;
    e885c952:	4c01                	li	s8,0
			err = print_indent( inContext, inIndent );
    e885c954:	00065697          	auipc	a3,0x65
    e885c958:	91c68693          	addi	a3,a3,-1764 # e88c1270 <kHTTPServerClass+0x90>
    e885c95c:	865e                	mv	a2,s7
    e885c95e:	00067597          	auipc	a1,0x67
    e885c962:	81258593          	addi	a1,a1,-2030 # e88c3170 <kPairingSessionClass+0x480>
    e885c966:	8522                	mv	a0,s0
    e885c968:	e03ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c96c:	872a                	mv	a4,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885c96e:	0c054563          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
			err = PrintFCore( inContext, "+%04X: %s |%s|\n", (int)( ptr - start ), currHexPtr, ascii );
    e885c972:	67a2                	ld	a5,8(sp)
			total += err;
    e885c974:	01a50d3b          	addw	s10,a0,s10
			err = PrintFCore( inContext, "+%04X: %s |%s|\n", (int)( ptr - start ), currHexPtr, ascii );
    e885c978:	1118                	addi	a4,sp,160
    e885c97a:	86ce                	mv	a3,s3
    e885c97c:	40fb063b          	subw	a2,s6,a5
    e885c980:	00067597          	auipc	a1,0x67
    e885c984:	86058593          	addi	a1,a1,-1952 # e88c31e0 <kPairingSessionClass+0x4f0>
    e885c988:	8522                	mv	a0,s0
    e885c98a:	de1ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c98e:	bdfd                	j	e885c88c <PrintFWriteHex.isra.2+0x104>
		else if( ( inFormat->group > 0 ) && ( memcmp( currHexPtr, prevHexPtr, 32 ) == 0 ) )
    e885c990:	4701                	li	a4,0
    while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
    e885c992:	02000593          	li	a1,32
    e885c996:	6782                	ld	a5,0(sp)
    e885c998:	80e9c60b          	lrbu	a2,s3,a4,0
    e885c99c:	80e7c68b          	lrbu	a3,a5,a4,0
    e885c9a0:	f6d616e3          	bne	a2,a3,e885c90c <PrintFWriteHex.isra.2+0x184>
    e885c9a4:	0705                	addi	a4,a4,1
    e885c9a6:	feb718e3          	bne	a4,a1,e885c996 <PrintFWriteHex.isra.2+0x20e>
			dupCount += 1;
    e885c9aa:	2c05                	addiw	s8,s8,1
			dupSize  += chunkSize;
    e885c9ac:	94d6                	add	s1,s1,s5
    e885c9ae:	b5e5                	j	e885c896 <PrintFWriteHex.isra.2+0x10e>
	if( dupCount > 0 )
    e885c9b0:	05805263          	blez	s8,e885c9f4 <PrintFWriteHex.isra.2+0x26c>
		err = print_indent( inContext, inIndent );
    e885c9b4:	00065697          	auipc	a3,0x65
    e885c9b8:	8bc68693          	addi	a3,a3,-1860 # e88c1270 <kHTTPServerClass+0x90>
    e885c9bc:	865e                	mv	a2,s7
    e885c9be:	00066597          	auipc	a1,0x66
    e885c9c2:	7b258593          	addi	a1,a1,1970 # e88c3170 <kPairingSessionClass+0x480>
    e885c9c6:	8522                	mv	a0,s0
    e885c9c8:	da3ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c9cc:	872a                	mv	a4,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885c9ce:	06054563          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
		total += err;
    e885c9d2:	01a50d3b          	addw	s10,a0,s10
		err = PrintFCore( inContext, "* (%zu more identical bytes, %zu total)\n", dupSize, dupSize + 16 );
    e885c9d6:	01048693          	addi	a3,s1,16
    e885c9da:	8626                	mv	a2,s1
    e885c9dc:	00066597          	auipc	a1,0x66
    e885c9e0:	7d458593          	addi	a1,a1,2004 # e88c31b0 <kPairingSessionClass+0x4c0>
    e885c9e4:	8522                	mv	a0,s0
    e885c9e6:	d85ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885c9ea:	872a                	mv	a4,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885c9ec:	04054663          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
		total += err;
    e885c9f0:	00ad0d3b          	addw	s10,s10,a0
	if( inSize > inMaxSize )
    e885c9f4:	876a                	mv	a4,s10
    e885c9f6:	054cf163          	bgeu	s9,s4,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
		err = print_indent( inContext, inIndent );
    e885c9fa:	00065697          	auipc	a3,0x65
    e885c9fe:	87668693          	addi	a3,a3,-1930 # e88c1270 <kHTTPServerClass+0x90>
    e885ca02:	865e                	mv	a2,s7
    e885ca04:	00066597          	auipc	a1,0x66
    e885ca08:	76c58593          	addi	a1,a1,1900 # e88c3170 <kPairingSessionClass+0x480>
    e885ca0c:	8522                	mv	a0,s0
    e885ca0e:	d5dff0ef          	jal	ra,e885c76a <PrintFCore>
    e885ca12:	872a                	mv	a4,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885ca14:	02054263          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
		total += err;
    e885ca18:	01a50d3b          	addw	s10,a0,s10
		err = PrintFCore( inContext, "... %zu more bytes ...\n", inSize - inMaxSize );
    e885ca1c:	419a0633          	sub	a2,s4,s9
    e885ca20:	00066597          	auipc	a1,0x66
    e885ca24:	7d058593          	addi	a1,a1,2000 # e88c31f0 <kPairingSessionClass+0x500>
    e885ca28:	8522                	mv	a0,s0
    e885ca2a:	d41ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885ca2e:	872a                	mv	a4,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885ca30:	00054463          	bltz	a0,e885ca38 <PrintFWriteHex.isra.2+0x2b0>
		total += err;
    e885ca34:	00ad073b          	addw	a4,s10,a0
}
    e885ca38:	60b6                	ld	ra,328(sp)
    e885ca3a:	6416                	ld	s0,320(sp)
    e885ca3c:	74f2                	ld	s1,312(sp)
    e885ca3e:	7952                	ld	s2,304(sp)
    e885ca40:	79b2                	ld	s3,296(sp)
    e885ca42:	7a12                	ld	s4,288(sp)
    e885ca44:	6af2                	ld	s5,280(sp)
    e885ca46:	6b52                	ld	s6,272(sp)
    e885ca48:	6bb2                	ld	s7,264(sp)
    e885ca4a:	6c12                	ld	s8,256(sp)
    e885ca4c:	7cee                	ld	s9,248(sp)
    e885ca4e:	7d4e                	ld	s10,240(sp)
    e885ca50:	7dae                	ld	s11,232(sp)
    e885ca52:	853a                	mv	a0,a4
    e885ca54:	6171                	addi	sp,sp,336
    e885ca56:	8082                	ret

00000000e885ca58 <PrintFWriteCFObjectLevel>:
{
    e885ca58:	7135                	addi	sp,sp,-160
    e885ca5a:	e526                	sd	s1,136(sp)
    e885ca5c:	84aa                	mv	s1,a0
	typeID = CFGetTypeID( inObj );
    e885ca5e:	852e                	mv	a0,a1
{
    e885ca60:	ed06                	sd	ra,152(sp)
    e885ca62:	e922                	sd	s0,144(sp)
    e885ca64:	e14a                	sd	s2,128(sp)
    e885ca66:	fcce                	sd	s3,120(sp)
    e885ca68:	892e                	mv	s2,a1
    e885ca6a:	8432                	mv	s0,a2
    e885ca6c:	f8d2                	sd	s4,112(sp)
    e885ca6e:	f4d6                	sd	s5,104(sp)
    e885ca70:	f0da                	sd	s6,96(sp)
    e885ca72:	ecde                	sd	s7,88(sp)
    e885ca74:	e8e2                	sd	s8,80(sp)
    e885ca76:	e4e6                	sd	s9,72(sp)
	typeID = CFGetTypeID( inObj );
    e885ca78:	ebaea0ef          	jal	ra,e8847132 <CFGetTypeID>
    e885ca7c:	0005099b          	sext.w	s3,a0
	if( typeID == CFArrayGetTypeID() )
    e885ca80:	ee8ea0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e885ca84:	2501                	sext.w	a0,a0
    e885ca86:	11351163          	bne	a0,s3,e885cb88 <PrintFWriteCFObjectLevel+0x130>
		err = print_indent( inContext->context, inContext->indent );
    e885ca8a:	4890                	lw	a2,16(s1)
    e885ca8c:	6088                	ld	a0,0(s1)
    e885ca8e:	00064697          	auipc	a3,0x64
    e885ca92:	7e268693          	addi	a3,a3,2018 # e88c1270 <kHTTPServerClass+0x90>
    e885ca96:	0026161b          	slliw	a2,a2,0x2
    e885ca9a:	00066597          	auipc	a1,0x66
    e885ca9e:	6d658593          	addi	a1,a1,1750 # e88c3170 <kPairingSessionClass+0x480>
    e885caa2:	cc9ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885caa6:	89aa                	mv	s3,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885caa8:	842a                	mv	s0,a0
    e885caaa:	1a054163          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		n = CFArrayGetCount( (CFArrayRef) inObj );
    e885caae:	854a                	mv	a0,s2
    e885cab0:	f42ea0ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e885cab4:	8b2a                	mv	s6,a0
		if( n > 0 )
    e885cab6:	6090                	ld	a2,0(s1)
			err = inContext->context->callback( "[\n", 2, inContext->context );
    e885cab8:	4589                	li	a1,2
    e885caba:	621c                	ld	a5,0(a2)
		if( n > 0 )
    e885cabc:	0aa05b63          	blez	a0,e885cb72 <PrintFWriteCFObjectLevel+0x11a>
			err = inContext->context->callback( "[\n", 2, inContext->context );
    e885cac0:	00066517          	auipc	a0,0x66
    e885cac4:	64050513          	addi	a0,a0,1600 # e88c3100 <kPairingSessionClass+0x410>
    e885cac8:	9782                	jalr	a5
    e885caca:	842a                	mv	s0,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885cacc:	18054063          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			total += 2;
    e885cad0:	2989                	addiw	s3,s3,2
			for( i = 0; i < n; )
    e885cad2:	4a01                	li	s4,0
				if( i < n ) buf[ size++ ] = ',';
    e885cad4:	02c00c13          	li	s8,44
				buf[ size++ ] = '\n';
    e885cad8:	03810b93          	addi	s7,sp,56
    e885cadc:	4ca9                	li	s9,10
				obj = CFArrayGetValueAtIndex( (CFArrayRef) inObj, i );
    e885cade:	85d2                	mv	a1,s4
    e885cae0:	854a                	mv	a0,s2
    e885cae2:	f24ea0ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
				err = PrintFWriteCFObjectLevel( inContext, obj, true );
    e885cae6:	85aa                	mv	a1,a0
				++inContext->indent;
    e885cae8:	489c                	lw	a5,16(s1)
				err = PrintFWriteCFObjectLevel( inContext, obj, true );
    e885caea:	4605                	li	a2,1
    e885caec:	8526                	mv	a0,s1
				++inContext->indent;
    e885caee:	2785                	addiw	a5,a5,1
    e885caf0:	c89c                	sw	a5,16(s1)
				err = PrintFWriteCFObjectLevel( inContext, obj, true );
    e885caf2:	f67ff0ef          	jal	ra,e885ca58 <PrintFWriteCFObjectLevel>
    e885caf6:	842a                	mv	s0,a0
				--inContext->indent;
    e885caf8:	489c                	lw	a5,16(s1)
    e885cafa:	37fd                	addiw	a5,a5,-1
    e885cafc:	c89c                	sw	a5,16(s1)
				require_action_quiet( err >= 0, exit, total = err );
    e885cafe:	14054763          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
				++i;
    e885cb02:	2a05                	addiw	s4,s4,1
    e885cb04:	00150a9b          	addiw	s5,a0,1
				size = 0;
    e885cb08:	4581                	li	a1,0
				if( i < n ) buf[ size++ ] = ',';
    e885cb0a:	016a5563          	bge	s4,s6,e885cb14 <PrintFWriteCFObjectLevel+0xbc>
    e885cb0e:	03810c23          	sb	s8,56(sp)
    e885cb12:	4585                	li	a1,1
				err = inContext->context->callback( buf, size, inContext->context );
    e885cb14:	6090                	ld	a2,0(s1)
				buf[ size++ ] = '\n';
    e885cb16:	00bbdc8b          	srb	s9,s7,a1,0
				err = inContext->context->callback( buf, size, inContext->context );
    e885cb1a:	855e                	mv	a0,s7
    e885cb1c:	621c                	ld	a5,0(a2)
    e885cb1e:	0585                	addi	a1,a1,1
    e885cb20:	9782                	jalr	a5
    e885cb22:	842a                	mv	s0,a0
				require_action_quiet( err >= 0, exit, total = err );
    e885cb24:	12054463          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
				total += 1;
    e885cb28:	013a89bb          	addw	s3,s5,s3
			for( i = 0; i < n; )
    e885cb2c:	fb4b19e3          	bne	s6,s4,e885cade <PrintFWriteCFObjectLevel+0x86>
			err = print_indent( inContext->context, inContext->indent );
    e885cb30:	4890                	lw	a2,16(s1)
    e885cb32:	6088                	ld	a0,0(s1)
    e885cb34:	00064697          	auipc	a3,0x64
    e885cb38:	73c68693          	addi	a3,a3,1852 # e88c1270 <kHTTPServerClass+0x90>
    e885cb3c:	0026161b          	slliw	a2,a2,0x2
    e885cb40:	00066597          	auipc	a1,0x66
    e885cb44:	63058593          	addi	a1,a1,1584 # e88c3170 <kPairingSessionClass+0x480>
    e885cb48:	c23ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885cb4c:	842a                	mv	s0,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885cb4e:	0e054f63          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			err = inContext->context->callback( "]", 1, inContext->context );
    e885cb52:	6090                	ld	a2,0(s1)
    e885cb54:	00a989bb          	addw	s3,s3,a0
    e885cb58:	4585                	li	a1,1
    e885cb5a:	621c                	ld	a5,0(a2)
    e885cb5c:	00066517          	auipc	a0,0x66
    e885cb60:	5ac50513          	addi	a0,a0,1452 # e88c3108 <kPairingSessionClass+0x418>
		err = inContext->context->callback( "\"", 1, inContext->context );
    e885cb64:	9782                	jalr	a5
    e885cb66:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885cb68:	0e054263          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		total += 1;
    e885cb6c:	0019841b          	addiw	s0,s3,1
    e885cb70:	a8f1                	j	e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			err = inContext->context->callback( "[]", 2, inContext->context );
    e885cb72:	00062517          	auipc	a0,0x62
    e885cb76:	2fe50513          	addi	a0,a0,766 # e88bee70 <kCFRunLoopTimerClass+0xc8>
			err = inContext->context->callback( "{}", 2, inContext->context );
    e885cb7a:	9782                	jalr	a5
    e885cb7c:	842a                	mv	s0,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885cb7e:	0c054763          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			total += 2;
    e885cb82:	0029841b          	addiw	s0,s3,2
    e885cb86:	a0d9                	j	e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
	else if( typeID == CFBooleanGetTypeID() )
    e885cb88:	f06ea0ef          	jal	ra,e884728e <CFBooleanGetTypeID>
    e885cb8c:	2501                	sext.w	a0,a0
    e885cb8e:	05351e63          	bne	a0,s3,e885cbea <PrintFWriteCFObjectLevel+0x192>
		err = print_indent( inContext->context, inContext->indent );
    e885cb92:	4890                	lw	a2,16(s1)
    e885cb94:	6088                	ld	a0,0(s1)
    e885cb96:	00064697          	auipc	a3,0x64
    e885cb9a:	6da68693          	addi	a3,a3,1754 # e88c1270 <kHTTPServerClass+0x90>
    e885cb9e:	0026161b          	slliw	a2,a2,0x2
    e885cba2:	00066597          	auipc	a1,0x66
    e885cba6:	5ce58593          	addi	a1,a1,1486 # e88c3170 <kPairingSessionClass+0x480>
    e885cbaa:	bc1ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885cbae:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885cbb0:	08054e63          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		if( ( (CFBooleanRef) inObj ) == kCFBooleanTrue )	{ boolStr = "true";  size = 4; }
    e885cbb4:	00078797          	auipc	a5,0x78
    e885cbb8:	11c78793          	addi	a5,a5,284 # e88d4cd0 <kCFLBooleanTrue>
    e885cbbc:	639c                	ld	a5,0(a5)
    e885cbbe:	03278063          	beq	a5,s2,e885cbde <PrintFWriteCFObjectLevel+0x186>
		else												{ boolStr = "false"; size = 5; }
    e885cbc2:	0004b517          	auipc	a0,0x4b
    e885cbc6:	96650513          	addi	a0,a0,-1690 # e88a7528 <end.8789+0x3e80>
    e885cbca:	4915                	li	s2,5
		err = inContext->context->callback( boolStr, size, inContext->context );
    e885cbcc:	6090                	ld	a2,0(s1)
    e885cbce:	85ca                	mv	a1,s2
    e885cbd0:	621c                	ld	a5,0(a2)
			err = inContext->context->callback( "}", 1, inContext->context );
    e885cbd2:	9782                	jalr	a5
			require_action_quiet( err >= 0, exit, total = err );
    e885cbd4:	36054763          	bltz	a0,e885cf42 <PrintFWriteCFObjectLevel+0x4ea>
			total += 1;
    e885cbd8:	0089043b          	addw	s0,s2,s0
    e885cbdc:	a885                	j	e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		if( ( (CFBooleanRef) inObj ) == kCFBooleanTrue )	{ boolStr = "true";  size = 4; }
    e885cbde:	0004b517          	auipc	a0,0x4b
    e885cbe2:	94250513          	addi	a0,a0,-1726 # e88a7520 <end.8789+0x3e78>
    e885cbe6:	4911                	li	s2,4
    e885cbe8:	b7d5                	j	e885cbcc <PrintFWriteCFObjectLevel+0x174>
	else if( typeID == CFDataGetTypeID() )
    e885cbea:	ea8ea0ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e885cbee:	2501                	sext.w	a0,a0
    e885cbf0:	09351c63          	bne	a0,s3,e885cc88 <PrintFWriteCFObjectLevel+0x230>
		size = (size_t) CFDataGetLength( (CFDataRef) inObj );
    e885cbf4:	854a                	mv	a0,s2
		oldIndent = inContext->indent;
    e885cbf6:	0104aa03          	lw	s4,16(s1)
		size = (size_t) CFDataGetLength( (CFDataRef) inObj );
    e885cbfa:	edcea0ef          	jal	ra,e88472d6 <CFDataGetLength>
    e885cbfe:	89aa                	mv	s3,a0
		if( ( size <= 16 ) && !inPrintingArray )
    e885cc00:	47c1                	li	a5,16
    e885cc02:	06a7e363          	bltu	a5,a0,e885cc68 <PrintFWriteCFObjectLevel+0x210>
    e885cc06:	e02d                	bnez	s0,e885cc68 <PrintFWriteCFObjectLevel+0x210>
			inContext->indent = 0;
    e885cc08:	0004a823          	sw	zero,16(s1)
	int				total = 0;
    e885cc0c:	4a81                	li	s5,0
		err = PrintFWriteHex( inContext->context, inContext->format, inContext->indent, 
    e885cc0e:	4890                	lw	a2,16(s1)
			CFDataGetBytePtr( (CFDataRef) inObj ), size, 
    e885cc10:	854a                	mv	a0,s2
		err = PrintFWriteHex( inContext->context, inContext->format, inContext->indent, 
    e885cc12:	f964c40b          	ldd	s0,s6,(s1),0,4
    e885cc16:	ec32                	sd	a2,24(sp)
			CFDataGetBytePtr( (CFDataRef) inObj ), size, 
    e885cc18:	ed4ea0ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e885cc1c:	86aa                	mv	a3,a0
			inContext->format->havePrecision ? inContext->format->precision : size );
    e885cc1e:	0084b803          	ld	a6,8(s1)
		size = (size_t) CFDataGetLength( (CFDataRef) inObj );
    e885cc22:	87ce                	mv	a5,s3
		err = PrintFWriteHex( inContext->context, inContext->format, inContext->indent, 
    e885cc24:	6662                	ld	a2,24(sp)
			inContext->format->havePrecision ? inContext->format->precision : size );
    e885cc26:	00084703          	lbu	a4,0(a6)
		err = PrintFWriteHex( inContext->context, inContext->format, inContext->indent, 
    e885cc2a:	8b21                	andi	a4,a4,8
    e885cc2c:	c319                	beqz	a4,e885cc32 <PrintFWriteCFObjectLevel+0x1da>
    e885cc2e:	01083783          	ld	a5,16(a6)
    e885cc32:	8522                	mv	a0,s0
    e885cc34:	874e                	mv	a4,s3
    e885cc36:	018b0593          	addi	a1,s6,24
    e885cc3a:	b4fff0ef          	jal	ra,e885c788 <PrintFWriteHex.isra.2>
    e885cc3e:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885cc40:	00054663          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		total += err;
    e885cc44:	00aa843b          	addw	s0,s5,a0
		inContext->indent = oldIndent;
    e885cc48:	0144a823          	sw	s4,16(s1)
}
    e885cc4c:	8522                	mv	a0,s0
    e885cc4e:	60ea                	ld	ra,152(sp)
    e885cc50:	644a                	ld	s0,144(sp)
    e885cc52:	64aa                	ld	s1,136(sp)
    e885cc54:	690a                	ld	s2,128(sp)
    e885cc56:	79e6                	ld	s3,120(sp)
    e885cc58:	7a46                	ld	s4,112(sp)
    e885cc5a:	7aa6                	ld	s5,104(sp)
    e885cc5c:	7b06                	ld	s6,96(sp)
    e885cc5e:	6be6                	ld	s7,88(sp)
    e885cc60:	6c46                	ld	s8,80(sp)
    e885cc62:	6ca6                	ld	s9,72(sp)
    e885cc64:	610d                	addi	sp,sp,160
    e885cc66:	8082                	ret
			err = inContext->context->callback( "\n", 1, inContext->context );
    e885cc68:	6090                	ld	a2,0(s1)
    e885cc6a:	4585                	li	a1,1
    e885cc6c:	00043517          	auipc	a0,0x43
    e885cc70:	01450513          	addi	a0,a0,20 # e889fc80 <TWO52+0x88>
    e885cc74:	621c                	ld	a5,0(a2)
    e885cc76:	9782                	jalr	a5
    e885cc78:	842a                	mv	s0,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885cc7a:	fc0549e3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			inContext->indent = oldIndent + 1;
    e885cc7e:	001a079b          	addiw	a5,s4,1
    e885cc82:	c89c                	sw	a5,16(s1)
			total += 1;
    e885cc84:	4a85                	li	s5,1
    e885cc86:	b761                	j	e885cc0e <PrintFWriteCFObjectLevel+0x1b6>
	else if( typeID == CFDateGetTypeID() )
    e885cc88:	e82ea0ef          	jal	ra,e884730a <CFDateGetTypeID>
    e885cc8c:	2501                	sext.w	a0,a0
    e885cc8e:	07351263          	bne	a0,s3,e885ccf2 <PrintFWriteCFObjectLevel+0x29a>
		err = print_indent( inContext->context, inContext->indent );
    e885cc92:	4890                	lw	a2,16(s1)
    e885cc94:	6088                	ld	a0,0(s1)
    e885cc96:	00064697          	auipc	a3,0x64
    e885cc9a:	5da68693          	addi	a3,a3,1498 # e88c1270 <kHTTPServerClass+0x90>
    e885cc9e:	0026161b          	slliw	a2,a2,0x2
    e885cca2:	00066597          	auipc	a1,0x66
    e885cca6:	4ce58593          	addi	a1,a1,1230 # e88c3170 <kPairingSessionClass+0x480>
    e885ccaa:	ac1ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885ccae:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885ccb0:	f8054ee3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		CFDateGetComponents( (CFDateRef) inObj, &year, &month, &day, &hour, &minute, &second, &micros );
    e885ccb4:	03810893          	addi	a7,sp,56
    e885ccb8:	03410813          	addi	a6,sp,52
    e885ccbc:	181c                	addi	a5,sp,48
    e885ccbe:	1078                	addi	a4,sp,44
    e885ccc0:	1034                	addi	a3,sp,40
    e885ccc2:	1050                	addi	a2,sp,36
    e885ccc4:	100c                	addi	a1,sp,32
    e885ccc6:	854a                	mv	a0,s2
    e885ccc8:	ac1ea0ef          	jal	ra,e8847788 <CFDateGetComponents>
		err = PrintFCore( inContext->context, "%04d-%02d-%02d %02d:%02d:%02d.%06d", 
    e885cccc:	57e2                	lw	a5,56(sp)
    e885ccce:	58d2                	lw	a7,52(sp)
    e885ccd0:	5842                	lw	a6,48(sp)
    e885ccd2:	e03e                	sd	a5,0(sp)
    e885ccd4:	5722                	lw	a4,40(sp)
    e885ccd6:	57b2                	lw	a5,44(sp)
    e885ccd8:	5692                	lw	a3,36(sp)
    e885ccda:	5602                	lw	a2,32(sp)
    e885ccdc:	6088                	ld	a0,0(s1)
    e885ccde:	00066597          	auipc	a1,0x66
    e885cce2:	43258593          	addi	a1,a1,1074 # e88c3110 <kPairingSessionClass+0x420>
    e885cce6:	a85ff0ef          	jal	ra,e885c76a <PrintFCore>
		require_action_quiet( err >= 0, exit, total = err );
    e885ccea:	24054c63          	bltz	a0,e885cf42 <PrintFWriteCFObjectLevel+0x4ea>
		total += err;
    e885ccee:	9c29                	addw	s0,s0,a0
    e885ccf0:	bfb1                	j	e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
	else if( typeID == CFDictionaryGetTypeID() )
    e885ccf2:	eb0ea0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e885ccf6:	2501                	sext.w	a0,a0
    e885ccf8:	0b351863          	bne	a0,s3,e885cda8 <PrintFWriteCFObjectLevel+0x350>
		err = print_indent( inContext->context, inContext->indent );
    e885ccfc:	4890                	lw	a2,16(s1)
    e885ccfe:	6088                	ld	a0,0(s1)
    e885cd00:	00064697          	auipc	a3,0x64
    e885cd04:	57068693          	addi	a3,a3,1392 # e88c1270 <kHTTPServerClass+0x90>
    e885cd08:	0026161b          	slliw	a2,a2,0x2
    e885cd0c:	00066597          	auipc	a1,0x66
    e885cd10:	46458593          	addi	a1,a1,1124 # e88c3170 <kPairingSessionClass+0x480>
    e885cd14:	a57ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885cd18:	89aa                	mv	s3,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885cd1a:	842a                	mv	s0,a0
    e885cd1c:	f20548e3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		if( CFDictionaryGetCount( (CFDictionaryRef) inObj ) > 0 )
    e885cd20:	854a                	mv	a0,s2
    e885cd22:	f08ea0ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e885cd26:	6090                	ld	a2,0(s1)
			err = inContext->context->callback( "{\n", 2, inContext->context );
    e885cd28:	4589                	li	a1,2
    e885cd2a:	621c                	ld	a5,0(a2)
		if( CFDictionaryGetCount( (CFDictionaryRef) inObj ) > 0 )
    e885cd2c:	06a05963          	blez	a0,e885cd9e <PrintFWriteCFObjectLevel+0x346>
			err = inContext->context->callback( "{\n", 2, inContext->context );
    e885cd30:	00066517          	auipc	a0,0x66
    e885cd34:	40850513          	addi	a0,a0,1032 # e88c3138 <kPairingSessionClass+0x448>
    e885cd38:	9782                	jalr	a5
    e885cd3a:	842a                	mv	s0,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885cd3c:	f00548e3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			++inContext->indent;
    e885cd40:	489c                	lw	a5,16(s1)
			total += 2;
    e885cd42:	2989                	addiw	s3,s3,2
			inContext->total = total;
    e885cd44:	0134aa23          	sw	s3,20(s1)
			++inContext->indent;
    e885cd48:	2785                	addiw	a5,a5,1
    e885cd4a:	c89c                	sw	a5,16(s1)
			CFDictionaryApplyFunction( (CFDictionaryRef) inObj, PrintFWriteCFObjectApplier, inContext );
    e885cd4c:	8626                	mv	a2,s1
    e885cd4e:	00000597          	auipc	a1,0x0
    e885cd52:	1f858593          	addi	a1,a1,504 # e885cf46 <PrintFWriteCFObjectApplier>
    e885cd56:	854a                	mv	a0,s2
    e885cd58:	f0eea0ef          	jal	ra,e8847466 <CFDictionaryApplyFunction>
			require_action_quiet( inContext->error >= 0, exit, total = inContext->error );
    e885cd5c:	4c80                	lw	s0,24(s1)
    e885cd5e:	ee0447e3          	bltz	s0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			--inContext->indent;
    e885cd62:	4890                	lw	a2,16(s1)
			err = print_indent( inContext->context, inContext->indent );
    e885cd64:	6088                	ld	a0,0(s1)
    e885cd66:	00064697          	auipc	a3,0x64
    e885cd6a:	50a68693          	addi	a3,a3,1290 # e88c1270 <kHTTPServerClass+0x90>
			--inContext->indent;
    e885cd6e:	367d                	addiw	a2,a2,-1
    e885cd70:	c890                	sw	a2,16(s1)
			err = print_indent( inContext->context, inContext->indent );
    e885cd72:	00066597          	auipc	a1,0x66
    e885cd76:	3fe58593          	addi	a1,a1,1022 # e88c3170 <kPairingSessionClass+0x480>
    e885cd7a:	0026161b          	slliw	a2,a2,0x2
			total = inContext->total;
    e885cd7e:	0144a903          	lw	s2,20(s1)
			err = print_indent( inContext->context, inContext->indent );
    e885cd82:	9e9ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885cd86:	842a                	mv	s0,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885cd88:	ec0542e3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			err = inContext->context->callback( "}", 1, inContext->context );
    e885cd8c:	6090                	ld	a2,0(s1)
    e885cd8e:	2905                	addiw	s2,s2,1
    e885cd90:	4585                	li	a1,1
    e885cd92:	621c                	ld	a5,0(a2)
    e885cd94:	00066517          	auipc	a0,0x66
    e885cd98:	3ac50513          	addi	a0,a0,940 # e88c3140 <kPairingSessionClass+0x450>
    e885cd9c:	bd1d                	j	e885cbd2 <PrintFWriteCFObjectLevel+0x17a>
			err = inContext->context->callback( "{}", 2, inContext->context );
    e885cd9e:	00062517          	auipc	a0,0x62
    e885cda2:	0ca50513          	addi	a0,a0,202 # e88bee68 <kCFRunLoopTimerClass+0xc0>
    e885cda6:	bbd1                	j	e885cb7a <PrintFWriteCFObjectLevel+0x122>
	else if( typeID == CFNumberGetTypeID() )
    e885cda8:	ec2ea0ef          	jal	ra,e884746a <CFNumberGetTypeID>
    e885cdac:	2501                	sext.w	a0,a0
    e885cdae:	07351b63          	bne	a0,s3,e885ce24 <PrintFWriteCFObjectLevel+0x3cc>
		err = print_indent( inContext->context, inContext->indent );
    e885cdb2:	4890                	lw	a2,16(s1)
    e885cdb4:	6088                	ld	a0,0(s1)
    e885cdb6:	00064697          	auipc	a3,0x64
    e885cdba:	4ba68693          	addi	a3,a3,1210 # e88c1270 <kHTTPServerClass+0x90>
    e885cdbe:	0026161b          	slliw	a2,a2,0x2
    e885cdc2:	00066597          	auipc	a1,0x66
    e885cdc6:	3ae58593          	addi	a1,a1,942 # e88c3170 <kPairingSessionClass+0x480>
    e885cdca:	9a1ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885cdce:	89aa                	mv	s3,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885cdd0:	842a                	mv	s0,a0
    e885cdd2:	e6054de3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			if( CFNumberIsFloatType( (CFNumberRef) inObj ) )
    e885cdd6:	854a                	mv	a0,s2
    e885cdd8:	976ec0ef          	jal	ra,e8848f4e <CFLNumberIsFloatType>
    e885cddc:	c50d                	beqz	a0,e885ce06 <PrintFWriteCFObjectLevel+0x3ae>
				CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &dval );
    e885cdde:	1830                	addi	a2,sp,56
    e885cde0:	45b5                	li	a1,13
    e885cde2:	854a                	mv	a0,s2
				double		dval = 0;
    e885cde4:	fc02                	sd	zero,56(sp)
				CFNumberGetValue( (CFNumberRef) inObj, kCFNumberDoubleType, &dval );
    e885cde6:	e9cea0ef          	jal	ra,e8847482 <CFNumberGetValue>
				err = PrintFCore( inContext->context, "%f", dval );
    e885cdea:	7662                	ld	a2,56(sp)
    e885cdec:	6088                	ld	a0,0(s1)
    e885cdee:	00062597          	auipc	a1,0x62
    e885cdf2:	06a58593          	addi	a1,a1,106 # e88bee58 <kCFRunLoopTimerClass+0xb0>
    e885cdf6:	975ff0ef          	jal	ra,e885c76a <PrintFCore>
				err = PrintFCore( inContext->context, "%lld", s64 );
    e885cdfa:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885cdfc:	e40548e3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		total += err;
    e885ce00:	0135043b          	addw	s0,a0,s3
    e885ce04:	b5a1                	j	e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
				CFNumberGetValue( (CFNumberRef) inObj, kCFNumberSInt64Type, &s64 );
    e885ce06:	1830                	addi	a2,sp,56
    e885ce08:	4591                	li	a1,4
    e885ce0a:	854a                	mv	a0,s2
				int64_t		s64 = 0;
    e885ce0c:	fc02                	sd	zero,56(sp)
				CFNumberGetValue( (CFNumberRef) inObj, kCFNumberSInt64Type, &s64 );
    e885ce0e:	e74ea0ef          	jal	ra,e8847482 <CFNumberGetValue>
				err = PrintFCore( inContext->context, "%lld", s64 );
    e885ce12:	7662                	ld	a2,56(sp)
    e885ce14:	6088                	ld	a0,0(s1)
    e885ce16:	00062597          	auipc	a1,0x62
    e885ce1a:	04a58593          	addi	a1,a1,74 # e88bee60 <kCFRunLoopTimerClass+0xb8>
    e885ce1e:	94dff0ef          	jal	ra,e885c76a <PrintFCore>
    e885ce22:	bfe1                	j	e885cdfa <PrintFWriteCFObjectLevel+0x3a2>
	else if( typeID == CFStringGetTypeID() )
    e885ce24:	e70ea0ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e885ce28:	2501                	sext.w	a0,a0
    e885ce2a:	0b351b63          	bne	a0,s3,e885cee0 <PrintFWriteCFObjectLevel+0x488>
		err = print_indent( inContext->context, inContext->indent );
    e885ce2e:	4890                	lw	a2,16(s1)
    e885ce30:	6088                	ld	a0,0(s1)
    e885ce32:	00064697          	auipc	a3,0x64
    e885ce36:	43e68693          	addi	a3,a3,1086 # e88c1270 <kHTTPServerClass+0x90>
    e885ce3a:	0026161b          	slliw	a2,a2,0x2
    e885ce3e:	00066597          	auipc	a1,0x66
    e885ce42:	33258593          	addi	a1,a1,818 # e88c3170 <kPairingSessionClass+0x480>
    e885ce46:	925ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885ce4a:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885ce4c:	e00540e3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		err = inContext->context->callback( "\"", 1, inContext->context );
    e885ce50:	6090                	ld	a2,0(s1)
    e885ce52:	4585                	li	a1,1
    e885ce54:	00066517          	auipc	a0,0x66
    e885ce58:	2f450513          	addi	a0,a0,756 # e88c3148 <kPairingSessionClass+0x458>
    e885ce5c:	621c                	ld	a5,0(a2)
    e885ce5e:	9782                	jalr	a5
		require_action_quiet( err >= 0, exit, total = err );
    e885ce60:	0e054163          	bltz	a0,e885cf42 <PrintFWriteCFObjectLevel+0x4ea>
		n = CFStringGetLength( cfStr );
    e885ce64:	854a                	mv	a0,s2
    e885ce66:	f3cea0ef          	jal	ra,e88475a2 <CFStringGetLength>
		total += 1;
    e885ce6a:	0014099b          	addiw	s3,s0,1
		size = (size_t) CFStringGetMaximumSizeForEncoding( n, kCFStringEncodingUTF8 );
    e885ce6e:	080005b7          	lui	a1,0x8000
    e885ce72:	10058593          	addi	a1,a1,256 # 8000100 <memcmp-0xe07fff00>
		total += 1;
    e885ce76:	8a4e                	mv	s4,s3
		n = CFStringGetLength( cfStr );
    e885ce78:	842a                	mv	s0,a0
		size = (size_t) CFStringGetMaximumSizeForEncoding( n, kCFStringEncodingUTF8 );
    e885ce7a:	f3cea0ef          	jal	ra,e88475b6 <CFStringGetMaximumSizeForEncoding>
		if( size > 0 )
    e885ce7e:	c529                	beqz	a0,e885cec8 <PrintFWriteCFObjectLevel+0x470>
			cStr = (char *) malloc( size );
    e885ce80:	ec2a                	sd	a0,24(sp)
    e885ce82:	1cd1e0ef          	jal	ra,e887b84e <my_malloc>
    e885ce86:	89aa                	mv	s3,a0
			require_action_quiet( cStr, exit, total = kNoMemoryErr );
    e885ce88:	c921                	beqz	a0,e885ced8 <PrintFWriteCFObjectLevel+0x480>
			CFStringGetBytes( cfStr, range, kCFStringEncodingUTF8, '^', false, (UInt8 *) cStr, (CFIndex) size, &converted );
    e885ce8a:	6862                	ld	a6,24(sp)
    e885ce8c:	08000637          	lui	a2,0x8000
    e885ce90:	87aa                	mv	a5,a0
    e885ce92:	02041593          	slli	a1,s0,0x20
    e885ce96:	03810893          	addi	a7,sp,56
    e885ce9a:	4701                	li	a4,0
    e885ce9c:	05e00693          	li	a3,94
    e885cea0:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e885cea4:	854a                	mv	a0,s2
			converted = 0;
    e885cea6:	dc02                	sw	zero,56(sp)
			CFStringGetBytes( cfStr, range, kCFStringEncodingUTF8, '^', false, (UInt8 *) cStr, (CFIndex) size, &converted );
    e885cea8:	f78ea0ef          	jal	ra,e8847620 <CFStringGetBytes>
			err = inContext->context->callback( cStr, (size_t) converted, inContext->context );
    e885ceac:	6090                	ld	a2,0(s1)
    e885ceae:	55e2                	lw	a1,56(sp)
    e885ceb0:	854e                	mv	a0,s3
    e885ceb2:	621c                	ld	a5,0(a2)
    e885ceb4:	9782                	jalr	a5
    e885ceb6:	842a                	mv	s0,a0
			free( cStr );
    e885ceb8:	854e                	mv	a0,s3
    e885ceba:	4461f0ef          	jal	ra,e887c300 <eLIBs_free>
			require_action_quiet( err >= 0, exit, total = err );
    e885cebe:	d80447e3          	bltz	s0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
			total += (int) converted;
    e885cec2:	59e2                	lw	s3,56(sp)
    e885cec4:	014989bb          	addw	s3,s3,s4
		err = inContext->context->callback( "\"", 1, inContext->context );
    e885cec8:	6090                	ld	a2,0(s1)
    e885ceca:	4585                	li	a1,1
    e885cecc:	00066517          	auipc	a0,0x66
    e885ced0:	27c50513          	addi	a0,a0,636 # e88c3148 <kPairingSessionClass+0x458>
    e885ced4:	621c                	ld	a5,0(a2)
    e885ced6:	b179                	j	e885cb64 <PrintFWriteCFObjectLevel+0x10c>
			require_action_quiet( cStr, exit, total = kNoMemoryErr );
    e885ced8:	7479                	lui	s0,0xffffe
    e885ceda:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e885cede:	b3bd                	j	e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
	else if( typeID == CFNullGetTypeID() )
    e885cee0:	b63eb0ef          	jal	ra,e8848a42 <CFLNullGetTypeID>
    e885cee4:	0005079b          	sext.w	a5,a0
    e885cee8:	4890                	lw	a2,16(s1)
    e885ceea:	6088                	ld	a0,0(s1)
		err = print_indent( inContext->context, inContext->indent );
    e885ceec:	00064697          	auipc	a3,0x64
    e885cef0:	38468693          	addi	a3,a3,900 # e88c1270 <kHTTPServerClass+0x90>
    e885cef4:	0026161b          	slliw	a2,a2,0x2
    e885cef8:	00066597          	auipc	a1,0x66
    e885cefc:	27858593          	addi	a1,a1,632 # e88c3170 <kPairingSessionClass+0x480>
	else if( typeID == CFNullGetTypeID() )
    e885cf00:	03379363          	bne	a5,s3,e885cf26 <PrintFWriteCFObjectLevel+0x4ce>
		err = print_indent( inContext->context, inContext->indent );
    e885cf04:	867ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885cf08:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885cf0a:	d40541e3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		err = inContext->context->callback( "Null", 4, inContext->context );
    e885cf0e:	6090                	ld	a2,0(s1)
    e885cf10:	4591                	li	a1,4
    e885cf12:	00066517          	auipc	a0,0x66
    e885cf16:	f6650513          	addi	a0,a0,-154 # e88c2e78 <kPairingSessionClass+0x188>
    e885cf1a:	621c                	ld	a5,0(a2)
    e885cf1c:	9782                	jalr	a5
		require_action_quiet( err >= 0, exit, total = err );
    e885cf1e:	02054263          	bltz	a0,e885cf42 <PrintFWriteCFObjectLevel+0x4ea>
		total += 4;
    e885cf22:	2411                	addiw	s0,s0,4
    e885cf24:	b325                	j	e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		err = print_indent( inContext->context, inContext->indent );
    e885cf26:	845ff0ef          	jal	ra,e885c76a <PrintFCore>
    e885cf2a:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885cf2c:	d20540e3          	bltz	a0,e885cc4c <PrintFWriteCFObjectLevel+0x1f4>
		err = PrintFCore( inContext->context, "<<UNKNOWN CF OBJECT TYPE: %d>>", (int) typeID );
    e885cf30:	6088                	ld	a0,0(s1)
    e885cf32:	864e                	mv	a2,s3
    e885cf34:	00066597          	auipc	a1,0x66
    e885cf38:	21c58593          	addi	a1,a1,540 # e88c3150 <kPairingSessionClass+0x460>
    e885cf3c:	82fff0ef          	jal	ra,e885c76a <PrintFCore>
    e885cf40:	b36d                	j	e885ccea <PrintFWriteCFObjectLevel+0x292>
    e885cf42:	842a                	mv	s0,a0
    e885cf44:	b321                	j	e885cc4c <PrintFWriteCFObjectLevel+0x1f4>

00000000e885cf46 <PrintFWriteCFObjectApplier>:
	if( context->error ) return;
    e885cf46:	4e1c                	lw	a5,24(a2)
    e885cf48:	14079d63          	bnez	a5,e885d0a2 <PrintFWriteCFObjectApplier+0x15c>
{
    e885cf4c:	7179                	addi	sp,sp,-48
    e885cf4e:	f891540b          	sdd	s0,s1,(sp),0,4
    e885cf52:	84b2                	mv	s1,a2
    e885cf54:	fb31590b          	sdd	s2,s3,(sp),1,4
	err = PrintFWriteCFObjectLevel( context, (CFTypeRef) inKey, false );
    e885cf58:	4601                	li	a2,0
    e885cf5a:	89ae                	mv	s3,a1
    e885cf5c:	85aa                	mv	a1,a0
    e885cf5e:	8526                	mv	a0,s1
{
    e885cf60:	f406                	sd	ra,40(sp)
    e885cf62:	f052                	sd	s4,32(sp)
	err = PrintFWriteCFObjectLevel( context, (CFTypeRef) inKey, false );
    e885cf64:	af5ff0ef          	jal	ra,e885ca58 <PrintFWriteCFObjectLevel>
    e885cf68:	892a                	mv	s2,a0
	require_action_quiet( err >= 0, exit, total = err );
    e885cf6a:	12054a63          	bltz	a0,e885d09e <PrintFWriteCFObjectApplier+0x158>
	err = context->context->callback( " : ", 3, context->context );
    e885cf6e:	6090                	ld	a2,0(s1)
    e885cf70:	458d                	li	a1,3
    e885cf72:	00066517          	auipc	a0,0x66
    e885cf76:	17650513          	addi	a0,a0,374 # e88c30e8 <kPairingSessionClass+0x3f8>
    e885cf7a:	621c                	ld	a5,0(a2)
    e885cf7c:	9782                	jalr	a5
    e885cf7e:	842a                	mv	s0,a0
	require_action_quiet( err >= 0, exit, total = err );
    e885cf80:	02054d63          	bltz	a0,e885cfba <PrintFWriteCFObjectApplier+0x74>
	typeID = CFGetTypeID( value );
    e885cf84:	854e                	mv	a0,s3
    e885cf86:	9acea0ef          	jal	ra,e8847132 <CFGetTypeID>
    e885cf8a:	0005041b          	sext.w	s0,a0
	if( typeID == CFArrayGetTypeID() )
    e885cf8e:	9daea0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e885cf92:	2501                	sext.w	a0,a0
    e885cf94:	04a41d63          	bne	s0,a0,e885cfee <PrintFWriteCFObjectApplier+0xa8>
		if( CFArrayGetCount( (CFArrayRef) inValue ) > 0 )
    e885cf98:	854e                	mv	a0,s3
    e885cf9a:	a58ea0ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e885cf9e:	6090                	ld	a2,0(s1)
			err = context->context->callback( "\n", 1, context->context );
    e885cfa0:	621c                	ld	a5,0(a2)
		if( CFArrayGetCount( (CFArrayRef) inValue ) > 0 )
    e885cfa2:	02a05a63          	blez	a0,e885cfd6 <PrintFWriteCFObjectApplier+0x90>
			err = context->context->callback( "\n", 1, context->context );
    e885cfa6:	4585                	li	a1,1
    e885cfa8:	00043517          	auipc	a0,0x43
    e885cfac:	cd850513          	addi	a0,a0,-808 # e889fc80 <TWO52+0x88>
    e885cfb0:	9782                	jalr	a5
    e885cfb2:	842a                	mv	s0,a0
			err = PrintFWriteCFObjectLevel( context, value, true );
    e885cfb4:	4605                	li	a2,1
			require_action_quiet( err >= 0, exit, total = err );
    e885cfb6:	06055263          	bgez	a0,e885d01a <PrintFWriteCFObjectApplier+0xd4>
	context->total += total;
    e885cfba:	48dc                	lw	a5,20(s1)
    e885cfbc:	9c3d                	addw	s0,s0,a5
    e885cfbe:	c8c0                	sw	s0,20(s1)
	if( err < 0 ) context->error = err;
    e885cfc0:	00055363          	bgez	a0,e885cfc6 <PrintFWriteCFObjectApplier+0x80>
    e885cfc4:	cc88                	sw	a0,24(s1)
}
    e885cfc6:	70a2                	ld	ra,40(sp)
    e885cfc8:	f891440b          	ldd	s0,s1,(sp),0,4
    e885cfcc:	7a02                	ld	s4,32(sp)
    e885cfce:	fb31490b          	ldd	s2,s3,(sp),1,4
    e885cfd2:	6145                	addi	sp,sp,48
    e885cfd4:	8082                	ret
			err = context->context->callback( "[]\n", 3, context->context );
    e885cfd6:	458d                	li	a1,3
    e885cfd8:	00066517          	auipc	a0,0x66
    e885cfdc:	11850513          	addi	a0,a0,280 # e88c30f0 <kPairingSessionClass+0x400>
			err = context->context->callback( "{}\n", 3, context->context );
    e885cfe0:	9782                	jalr	a5
			require_action_quiet( err >= 0, exit, total = err );
    e885cfe2:	842a                	mv	s0,a0
    e885cfe4:	fc054be3          	bltz	a0,e885cfba <PrintFWriteCFObjectApplier+0x74>
			total += 3;
    e885cfe8:	0069041b          	addiw	s0,s2,6
    e885cfec:	b7f9                	j	e885cfba <PrintFWriteCFObjectApplier+0x74>
	else if( typeID == CFDictionaryGetTypeID() )
    e885cfee:	bb4ea0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e885cff2:	2501                	sext.w	a0,a0
    e885cff4:	04a41e63          	bne	s0,a0,e885d050 <PrintFWriteCFObjectApplier+0x10a>
		if( CFDictionaryGetCount( (CFDictionaryRef) inValue ) > 0 )
    e885cff8:	854e                	mv	a0,s3
    e885cffa:	c30ea0ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e885cffe:	6090                	ld	a2,0(s1)
			err = context->context->callback( "\n", 1, context->context );
    e885d000:	621c                	ld	a5,0(a2)
		if( CFDictionaryGetCount( (CFDictionaryRef) inValue ) > 0 )
    e885d002:	04a05163          	blez	a0,e885d044 <PrintFWriteCFObjectApplier+0xfe>
			err = context->context->callback( "\n", 1, context->context );
    e885d006:	4585                	li	a1,1
    e885d008:	00043517          	auipc	a0,0x43
    e885d00c:	c7850513          	addi	a0,a0,-904 # e889fc80 <TWO52+0x88>
    e885d010:	9782                	jalr	a5
    e885d012:	842a                	mv	s0,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885d014:	fa0543e3          	bltz	a0,e885cfba <PrintFWriteCFObjectApplier+0x74>
			err = PrintFWriteCFObjectLevel( context, value, false );
    e885d018:	4601                	li	a2,0
    e885d01a:	85ce                	mv	a1,s3
    e885d01c:	8526                	mv	a0,s1
    e885d01e:	a3bff0ef          	jal	ra,e885ca58 <PrintFWriteCFObjectLevel>
    e885d022:	842a                	mv	s0,a0
			require_action_quiet( err >= 0, exit, total = err );
    e885d024:	2915                	addiw	s2,s2,5
    e885d026:	f8054ae3          	bltz	a0,e885cfba <PrintFWriteCFObjectApplier+0x74>
		err = context->context->callback( "\n", 1, context->context );
    e885d02a:	6090                	ld	a2,0(s1)
    e885d02c:	4585                	li	a1,1
    e885d02e:	00043517          	auipc	a0,0x43
    e885d032:	c5250513          	addi	a0,a0,-942 # e889fc80 <TWO52+0x88>
    e885d036:	621c                	ld	a5,0(a2)
    e885d038:	9782                	jalr	a5
		require_action_quiet( err >= 0, exit, total = err );
    e885d03a:	06054263          	bltz	a0,e885d09e <PrintFWriteCFObjectApplier+0x158>
		total += 1;
    e885d03e:	0089043b          	addw	s0,s2,s0
    e885d042:	bfa5                	j	e885cfba <PrintFWriteCFObjectApplier+0x74>
			err = context->context->callback( "{}\n", 3, context->context );
    e885d044:	458d                	li	a1,3
    e885d046:	00066517          	auipc	a0,0x66
    e885d04a:	0b250513          	addi	a0,a0,178 # e88c30f8 <kPairingSessionClass+0x408>
    e885d04e:	bf49                	j	e885cfe0 <PrintFWriteCFObjectApplier+0x9a>
	else if( ( typeID == CFDataGetTypeID() ) && ( context->format->altForm != 2 ) )
    e885d050:	a42ea0ef          	jal	ra,e8847292 <CFDataGetTypeID>
    e885d054:	2501                	sext.w	a0,a0
    e885d056:	02a41463          	bne	s0,a0,e885d07e <PrintFWriteCFObjectApplier+0x138>
    e885d05a:	649c                	ld	a5,8(s1)
    e885d05c:	0037c703          	lbu	a4,3(a5)
    e885d060:	4789                	li	a5,2
    e885d062:	00f70e63          	beq	a4,a5,e885d07e <PrintFWriteCFObjectApplier+0x138>
		err = PrintFWriteCFObjectLevel( context, value, false );
    e885d066:	4601                	li	a2,0
    e885d068:	85ce                	mv	a1,s3
    e885d06a:	8526                	mv	a0,s1
    e885d06c:	9edff0ef          	jal	ra,e885ca58 <PrintFWriteCFObjectLevel>
		require_action_quiet( err >= 0, exit, total = err );
    e885d070:	842a                	mv	s0,a0
    e885d072:	f40544e3          	bltz	a0,e885cfba <PrintFWriteCFObjectApplier+0x74>
	total += 3;
    e885d076:	0039041b          	addiw	s0,s2,3
		total += err;
    e885d07a:	9c29                	addw	s0,s0,a0
    e885d07c:	bf3d                	j	e885cfba <PrintFWriteCFObjectApplier+0x74>
		oldIndent = context->indent;
    e885d07e:	0104aa03          	lw	s4,16(s1)
		err = PrintFWriteCFObjectLevel( context, value, false );
    e885d082:	4601                	li	a2,0
		context->indent = 0;
    e885d084:	0004a823          	sw	zero,16(s1)
		err = PrintFWriteCFObjectLevel( context, value, false );
    e885d088:	85ce                	mv	a1,s3
    e885d08a:	8526                	mv	a0,s1
    e885d08c:	9cdff0ef          	jal	ra,e885ca58 <PrintFWriteCFObjectLevel>
    e885d090:	842a                	mv	s0,a0
		require_action_quiet( err >= 0, exit, total = err );
    e885d092:	f20544e3          	bltz	a0,e885cfba <PrintFWriteCFObjectApplier+0x74>
		total += err;
    e885d096:	2911                	addiw	s2,s2,4
		context->indent = oldIndent;
    e885d098:	0144a823          	sw	s4,16(s1)
    e885d09c:	b779                	j	e885d02a <PrintFWriteCFObjectApplier+0xe4>
		require_action_quiet( err >= 0, exit, total = err );
    e885d09e:	842a                	mv	s0,a0
    e885d0a0:	bf29                	j	e885cfba <PrintFWriteCFObjectApplier+0x74>
    e885d0a2:	8082                	ret

00000000e885d0a4 <RandomBytes>:
//===========================================================================================================================
//	RandomBytes
//===========================================================================================================================

OSStatus	RandomBytes( void *inBuffer, size_t inByteCount )
{
    e885d0a4:	1101                	addi	sp,sp,-32
    e885d0a6:	e422                	sd	s0,8(sp)
    e885d0a8:	e826                	sd	s1,16(sp)
    e885d0aa:	ec06                	sd	ra,24(sp)
    e885d0ac:	842a                	mv	s0,a0
    e885d0ae:	00b504b3          	add	s1,a0,a1
	OSStatus		err;
	char *pBuff = (char *)inBuffer;
	size_t i;
	for(i=0;i<inByteCount;i++)
    e885d0b2:	00941863          	bne	s0,s1,e885d0c2 <RandomBytes+0x1e>
	{
		pBuff[i] = random(255);
	}
	err = 0;
	return( err );
}
    e885d0b6:	60e2                	ld	ra,24(sp)
    e885d0b8:	6422                	ld	s0,8(sp)
    e885d0ba:	64c2                	ld	s1,16(sp)
    e885d0bc:	4501                	li	a0,0
    e885d0be:	6105                	addi	sp,sp,32
    e885d0c0:	8082                	ret
		pBuff[i] = random(255);
    e885d0c2:	0ff00513          	li	a0,255
    e885d0c6:	22c1f0ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e885d0ca:	1814550b          	sbia	a0,(s0),1,0
	for(i=0;i<inByteCount;i++)
    e885d0ce:	b7d5                	j	e885d0b2 <RandomBytes+0xe>

00000000e885d0d0 <sha256_transform>:
	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
};

/*********************** FUNCTION DEFINITIONS ***********************/
void sha256_transform(SHA256_CTX *ctx, const uint8_t data[])
{
    e885d0d0:	7129                	addi	sp,sp,-320
    e885d0d2:	fe22                	sd	s0,312(sp)
    e885d0d4:	fa26                	sd	s1,304(sp)
    e885d0d6:	f64a                	sd	s2,296(sp)
    e885d0d8:	f24e                	sd	s3,288(sp)
    e885d0da:	ee52                	sd	s4,280(sp)
    e885d0dc:	ea56                	sd	s5,272(sp)
    e885d0de:	e65a                	sd	s6,264(sp)
    e885d0e0:	e25e                	sd	s7,256(sp)
    e885d0e2:	4701                	li	a4,0
	uint32_t a, b, c, d, e, f, g, h, i, j, t1, t2, m[64];

	// initialization 
	for (i = 0, j = 0; i < 16; ++i, j += 4)
    e885d0e4:	04000613          	li	a2,64
		m[i] = (data[j] << 24) | (data[j + 1] << 16) | (data[j + 2] << 8) | (data[j + 3]);
    e885d0e8:	0015c683          	lbu	a3,1(a1)
    e885d0ec:	0005c783          	lbu	a5,0(a1)
    e885d0f0:	0591                	addi	a1,a1,4
    e885d0f2:	0106969b          	slliw	a3,a3,0x10
    e885d0f6:	0187979b          	slliw	a5,a5,0x18
    e885d0fa:	8fd5                	or	a5,a5,a3
    e885d0fc:	fff5c683          	lbu	a3,-1(a1)
    e885d100:	8fd5                	or	a5,a5,a3
    e885d102:	ffe5c683          	lbu	a3,-2(a1)
    e885d106:	0086969b          	slliw	a3,a3,0x8
    e885d10a:	8fd5                	or	a5,a5,a3
    e885d10c:	4027578b          	srw	a5,a4,sp,0
	for (i = 0, j = 0; i < 16; ++i, j += 4)
    e885d110:	0711                	addi	a4,a4,4
    e885d112:	fcc71be3          	bne	a4,a2,e885d0e8 <sha256_transform+0x18>
    e885d116:	878a                	mv	a5,sp
    e885d118:	0c010813          	addi	a6,sp,192
	for ( ; i < 64; ++i)
		m[i] = SIG1(m[i - 2]) + m[i - 7] + SIG0(m[i - 15]) + m[i - 16];
    e885d11c:	5f8c                	lw	a1,56(a5)
    e885d11e:	43d0                	lw	a2,4(a5)
    e885d120:	0791                	addi	a5,a5,4
    e885d122:	1535968b          	srriw	a3,a1,19
    e885d126:	1515970b          	srriw	a4,a1,17
    e885d12a:	8f35                	xor	a4,a4,a3
    e885d12c:	00a5d69b          	srliw	a3,a1,0xa
    e885d130:	8eb9                	xor	a3,a3,a4
    e885d132:	ffc7a583          	lw	a1,-4(a5)
    e885d136:	5398                	lw	a4,32(a5)
    e885d138:	9f2d                	addw	a4,a4,a1
    e885d13a:	9f35                	addw	a4,a4,a3
    e885d13c:	1526158b          	srriw	a1,a2,18
    e885d140:	1476168b          	srriw	a3,a2,7
    e885d144:	8ead                	xor	a3,a3,a1
    e885d146:	0036561b          	srliw	a2,a2,0x3
    e885d14a:	8eb1                	xor	a3,a3,a2
    e885d14c:	9f35                	addw	a4,a4,a3
    e885d14e:	dfd8                	sw	a4,60(a5)
	for ( ; i < 64; ++i)
    e885d150:	fcf816e3          	bne	a6,a5,e885d11c <sha256_transform+0x4c>

	a = ctx->state[0];
    e885d154:	05052903          	lw	s2,80(a0)
	b = ctx->state[1];
    e885d158:	4964                	lw	s1,84(a0)
	c = ctx->state[2];
    e885d15a:	4d20                	lw	s0,88(a0)
	d = ctx->state[3];
    e885d15c:	05c52383          	lw	t2,92(a0)
	e = ctx->state[4];
    e885d160:	06052283          	lw	t0,96(a0)
	f = ctx->state[5];
    e885d164:	06452f83          	lw	t6,100(a0)
	g = ctx->state[6];
    e885d168:	06852e83          	lw	t4,104(a0)
	h = ctx->state[7];
    e885d16c:	06c52303          	lw	t1,108(a0)
	f = ctx->state[5];
    e885d170:	8f7e                	mv	t5,t6
	g = ctx->state[6];
    e885d172:	8e76                	mv	t3,t4
	h = ctx->state[7];
    e885d174:	8b1a                	mv	s6,t1
	e = ctx->state[4];
    e885d176:	8696                	mv	a3,t0
	d = ctx->state[3];
    e885d178:	899e                	mv	s3,t2
	c = ctx->state[2];
    e885d17a:	85a2                	mv	a1,s0
	b = ctx->state[1];
    e885d17c:	8826                	mv	a6,s1
	a = ctx->state[0];
    e885d17e:	864a                	mv	a2,s2
	h = ctx->state[7];
    e885d180:	4881                	li	a7,0

	for (i = 0; i < 64; ++i) {
		t1 = h + EP1(e) + CH(e,f,g) + k[i] + m[i];
    e885d182:	00066a97          	auipc	s5,0x66
    e885d186:	186a8a93          	addi	s5,s5,390 # e88c3308 <k>
	for (i = 0; i < 64; ++i) {
    e885d18a:	10000a13          	li	s4,256
		t1 = h + EP1(e) + CH(e,f,g) + k[i] + m[i];
    e885d18e:	14b6978b          	srriw	a5,a3,11
    e885d192:	1466970b          	srriw	a4,a3,6
    e885d196:	8f3d                	xor	a4,a4,a5
    e885d198:	1596978b          	srriw	a5,a3,25
    e885d19c:	8fb9                	xor	a5,a5,a4
    e885d19e:	41114b8b          	lrw	s7,sp,a7,0
    e885d1a2:	4158c70b          	lrw	a4,a7,s5,0
    e885d1a6:	0891                	addi	a7,a7,4
    e885d1a8:	0177073b          	addw	a4,a4,s7
    e885d1ac:	9f3d                	addw	a4,a4,a5
    e885d1ae:	fff6c793          	not	a5,a3
    e885d1b2:	01e6fbb3          	and	s7,a3,t5
    e885d1b6:	01c7f7b3          	and	a5,a5,t3
    e885d1ba:	0177c7b3          	xor	a5,a5,s7
    e885d1be:	9f3d                	addw	a4,a4,a5
    e885d1c0:	0167073b          	addw	a4,a4,s6
		t2 = EP0(a) + MAJ(a,b,c);
    e885d1c4:	14d61b0b          	srriw	s6,a2,13
    e885d1c8:	1426178b          	srriw	a5,a2,2
    e885d1cc:	0167c7b3          	xor	a5,a5,s6
    e885d1d0:	15661b0b          	srriw	s6,a2,22
    e885d1d4:	0167c7b3          	xor	a5,a5,s6
    e885d1d8:	00b84b33          	xor	s6,a6,a1
    e885d1dc:	00b87bb3          	and	s7,a6,a1
    e885d1e0:	00cb7b33          	and	s6,s6,a2
    e885d1e4:	017b4b33          	xor	s6,s6,s7
    e885d1e8:	016787bb          	addw	a5,a5,s6
		h = g;
		g = f;
		f = e;
		e = d + t1;
    e885d1ec:	01370bbb          	addw	s7,a4,s3
		d = c;
		c = b;
		b = a;
		a = t1 + t2;
    e885d1f0:	9fb9                	addw	a5,a5,a4
    e885d1f2:	89ae                	mv	s3,a1
    e885d1f4:	8b72                	mv	s6,t3
	for (i = 0; i < 64; ++i) {
    e885d1f6:	05489763          	bne	a7,s4,e885d244 <sha256_transform+0x174>
	}

	ctx->state[0] += a;
    e885d1fa:	00f907bb          	addw	a5,s2,a5
	ctx->state[1] += b;
    e885d1fe:	9e25                	addw	a2,a2,s1
	ctx->state[2] += c;
    e885d200:	0104083b          	addw	a6,s0,a6
	ctx->state[3] += d;
	ctx->state[4] += e;
    e885d204:	017282bb          	addw	t0,t0,s7
	ctx->state[5] += f;
	ctx->state[6] += g;
	ctx->state[7] += h;
}
    e885d208:	7472                	ld	s0,312(sp)
	ctx->state[3] += d;
    e885d20a:	00b385bb          	addw	a1,t2,a1
	ctx->state[5] += f;
    e885d20e:	00df86bb          	addw	a3,t6,a3
	ctx->state[6] += g;
    e885d212:	01ee8ebb          	addw	t4,t4,t5
	ctx->state[7] += h;
    e885d216:	01c3033b          	addw	t1,t1,t3
	ctx->state[0] += a;
    e885d21a:	c93c                	sw	a5,80(a0)
	ctx->state[1] += b;
    e885d21c:	c970                	sw	a2,84(a0)
	ctx->state[2] += c;
    e885d21e:	05052c23          	sw	a6,88(a0)
	ctx->state[3] += d;
    e885d222:	cd6c                	sw	a1,92(a0)
	ctx->state[4] += e;
    e885d224:	06552023          	sw	t0,96(a0)
	ctx->state[5] += f;
    e885d228:	d174                	sw	a3,100(a0)
	ctx->state[6] += g;
    e885d22a:	07d52423          	sw	t4,104(a0)
	ctx->state[7] += h;
    e885d22e:	06652623          	sw	t1,108(a0)
}
    e885d232:	74d2                	ld	s1,304(sp)
    e885d234:	7932                	ld	s2,296(sp)
    e885d236:	7992                	ld	s3,288(sp)
    e885d238:	6a72                	ld	s4,280(sp)
    e885d23a:	6ad2                	ld	s5,272(sp)
    e885d23c:	6b32                	ld	s6,264(sp)
    e885d23e:	6b92                	ld	s7,256(sp)
    e885d240:	6131                	addi	sp,sp,320
    e885d242:	8082                	ret
    e885d244:	8e7a                	mv	t3,t5
    e885d246:	85c2                	mv	a1,a6
    e885d248:	8f36                	mv	t5,a3
    e885d24a:	8832                	mv	a6,a2
		e = d + t1;
    e885d24c:	86de                	mv	a3,s7
		a = t1 + t2;
    e885d24e:	863e                	mv	a2,a5
    e885d250:	bf3d                	j	e885d18e <sha256_transform+0xbe>

00000000e885d252 <sha256_init>:

void sha256_init(SHA256_CTX *ctx)
{
	ctx->datalen = 0;
	ctx->bitlen = 0;
	ctx->state[0] = 0x6a09e667;
    e885d252:	00066797          	auipc	a5,0x66
    e885d256:	1b678793          	addi	a5,a5,438 # e88c3408 <k+0x100>
    e885d25a:	639c                	ld	a5,0(a5)
	ctx->datalen = 0;
    e885d25c:	04052023          	sw	zero,64(a0)
	ctx->bitlen = 0;
    e885d260:	04053423          	sd	zero,72(a0)
	ctx->state[0] = 0x6a09e667;
    e885d264:	e93c                	sd	a5,80(a0)
	ctx->state[1] = 0xbb67ae85;
	ctx->state[2] = 0x3c6ef372;
    e885d266:	00066797          	auipc	a5,0x66
    e885d26a:	1aa78793          	addi	a5,a5,426 # e88c3410 <k+0x108>
    e885d26e:	639c                	ld	a5,0(a5)
    e885d270:	ed3c                	sd	a5,88(a0)
	ctx->state[3] = 0xa54ff53a;
	ctx->state[4] = 0x510e527f;
    e885d272:	00066797          	auipc	a5,0x66
    e885d276:	1a678793          	addi	a5,a5,422 # e88c3418 <k+0x110>
    e885d27a:	639c                	ld	a5,0(a5)
    e885d27c:	f13c                	sd	a5,96(a0)
	ctx->state[5] = 0x9b05688c;
	ctx->state[6] = 0x1f83d9ab;
    e885d27e:	00066797          	auipc	a5,0x66
    e885d282:	1a278793          	addi	a5,a5,418 # e88c3420 <k+0x118>
    e885d286:	639c                	ld	a5,0(a5)
    e885d288:	f53c                	sd	a5,104(a0)
	ctx->state[7] = 0x5be0cd19;
}
    e885d28a:	8082                	ret

00000000e885d28c <sha256_update>:

void sha256_update(SHA256_CTX *ctx, const uint8_t data[], size_t len)
{
    e885d28c:	7139                	addi	sp,sp,-64
    e885d28e:	ec22                	sd	s0,24(sp)
    e885d290:	f026                	sd	s1,32(sp)
    e885d292:	f44a                	sd	s2,40(sp)
    e885d294:	f84e                	sd	s3,48(sp)
    e885d296:	fc06                	sd	ra,56(sp)
    e885d298:	842a                	mv	s0,a0
    e885d29a:	892e                	mv	s2,a1
	uint32_t i;

	for (i = 0; i < len; ++i) {
    e885d29c:	4481                	li	s1,0
		ctx->data[ctx->datalen] = data[i];
		ctx->datalen++;
		if (ctx->datalen == 64) {
    e885d29e:	04000993          	li	s3,64
	for (i = 0; i < len; ++i) {
    e885d2a2:	7c04b78b          	extu	a5,s1,31,0
    e885d2a6:	00c7e963          	bltu	a5,a2,e885d2b8 <sha256_update+0x2c>
			sha256_transform(ctx, ctx->data);
			ctx->bitlen += 512;
			ctx->datalen = 0;
		}
	}
}
    e885d2aa:	70e2                	ld	ra,56(sp)
    e885d2ac:	6462                	ld	s0,24(sp)
    e885d2ae:	7482                	ld	s1,32(sp)
    e885d2b0:	7922                	ld	s2,40(sp)
    e885d2b2:	79c2                	ld	s3,48(sp)
    e885d2b4:	6121                	addi	sp,sp,64
    e885d2b6:	8082                	ret
		ctx->data[ctx->datalen] = data[i];
    e885d2b8:	403c                	lw	a5,64(s0)
    e885d2ba:	9099470b          	lurbu	a4,s2,s1,0
    e885d2be:	10f4570b          	surb	a4,s0,a5,0
		ctx->datalen++;
    e885d2c2:	0017871b          	addiw	a4,a5,1
    e885d2c6:	c038                	sw	a4,64(s0)
		if (ctx->datalen == 64) {
    e885d2c8:	01371e63          	bne	a4,s3,e885d2e4 <sha256_update+0x58>
			sha256_transform(ctx, ctx->data);
    e885d2cc:	85a2                	mv	a1,s0
    e885d2ce:	8522                	mv	a0,s0
    e885d2d0:	e432                	sd	a2,8(sp)
    e885d2d2:	dffff0ef          	jal	ra,e885d0d0 <sha256_transform>
			ctx->datalen = 0;
    e885d2d6:	04042023          	sw	zero,64(s0)
			ctx->bitlen += 512;
    e885d2da:	643c                	ld	a5,72(s0)
			ctx->datalen = 0;
    e885d2dc:	6622                	ld	a2,8(sp)
			ctx->bitlen += 512;
    e885d2de:	20078793          	addi	a5,a5,512
    e885d2e2:	e43c                	sd	a5,72(s0)
	for (i = 0; i < len; ++i) {
    e885d2e4:	2485                	addiw	s1,s1,1
    e885d2e6:	bf75                	j	e885d2a2 <sha256_update+0x16>

00000000e885d2e8 <sha256_final>:

void sha256_final(uint8_t hash[],SHA256_CTX *ctx)
{
    e885d2e8:	1101                	addi	sp,sp,-32
    e885d2ea:	e422                	sd	s0,8(sp)
    e885d2ec:	e826                	sd	s1,16(sp)
    e885d2ee:	ec06                	sd	ra,24(sp)
	uint32_t i;

	i = ctx->datalen;
    e885d2f0:	41b4                	lw	a3,64(a1)

	// Pad whatever data is left in the buffer.
	if (ctx->datalen < 56) {
    e885d2f2:	03700613          	li	a2,55
{
    e885d2f6:	84aa                	mv	s1,a0
    e885d2f8:	0016871b          	addiw	a4,a3,1
    e885d2fc:	842e                	mv	s0,a1
    e885d2fe:	7c07378b          	extu	a5,a4,31,0
	if (ctx->datalen < 56) {
    e885d302:	0ad66263          	bltu	a2,a3,e885d3a6 <sha256_final+0xbe>
		ctx->data[i++] = 0x80;  // pad 10000000 = 0x80
    e885d306:	f8000613          	li	a2,-128
    e885d30a:	10d5d60b          	surb	a2,a1,a3,0
		while (i < 56)
    e885d30e:	97ae                	add	a5,a5,a1
    e885d310:	03800693          	li	a3,56
    e885d314:	08d71563          	bne	a4,a3,e885d39e <sha256_final+0xb6>
		sha256_transform(ctx, ctx->data);
		memset(ctx->data, 0, 56);
	}

	// Append to the padding the total message's length in bits and transform.
	ctx->bitlen += ctx->datalen * 8;
    e885d318:	403c                	lw	a5,64(s0)
    e885d31a:	6438                	ld	a4,72(s0)
	ctx->data[60] = ctx->bitlen >> 24;
	ctx->data[59] = ctx->bitlen >> 32;
	ctx->data[58] = ctx->bitlen >> 40;
	ctx->data[57] = ctx->bitlen >> 48;
	ctx->data[56] = ctx->bitlen >> 56;
	sha256_transform(ctx, ctx->data);
    e885d31c:	8522                	mv	a0,s0
	ctx->bitlen += ctx->datalen * 8;
    e885d31e:	0037979b          	slliw	a5,a5,0x3
    e885d322:	7c07b78b          	extu	a5,a5,31,0
    e885d326:	97ba                	add	a5,a5,a4
    e885d328:	e43c                	sd	a5,72(s0)
	ctx->data[56] = ctx->bitlen >> 56;
    e885d32a:	8207978b          	rev	a5,a5
    e885d32e:	fc1c                	sd	a5,56(s0)
	sha256_transform(ctx, ctx->data);
    e885d330:	85a2                	mv	a1,s0
    e885d332:	d9fff0ef          	jal	ra,e885d0d0 <sha256_transform>

	// copying the final state to the output hash(use big endian).
	for (i = 0; i < 4; ++i) {
    e885d336:	8526                	mv	a0,s1
	sha256_transform(ctx, ctx->data);
    e885d338:	47e1                	li	a5,24
	for (i = 0; i < 4; ++i) {
    e885d33a:	56e1                	li	a3,-8
		hash[i]      = (ctx->state[0] >> (24 - i * 8)) & 0x000000ff;
    e885d33c:	4838                	lw	a4,80(s0)
    e885d33e:	0505                	addi	a0,a0,1
    e885d340:	00f7573b          	srlw	a4,a4,a5
    e885d344:	fee50fa3          	sb	a4,-1(a0)
		hash[i + 4]  = (ctx->state[1] >> (24 - i * 8)) & 0x000000ff;
    e885d348:	4878                	lw	a4,84(s0)
    e885d34a:	00f7573b          	srlw	a4,a4,a5
    e885d34e:	00e501a3          	sb	a4,3(a0)
		hash[i + 8]  = (ctx->state[2] >> (24 - i * 8)) & 0x000000ff;
    e885d352:	4c38                	lw	a4,88(s0)
    e885d354:	00f7573b          	srlw	a4,a4,a5
    e885d358:	00e503a3          	sb	a4,7(a0)
		hash[i + 12] = (ctx->state[3] >> (24 - i * 8)) & 0x000000ff;
    e885d35c:	4c78                	lw	a4,92(s0)
    e885d35e:	00f7573b          	srlw	a4,a4,a5
    e885d362:	00e505a3          	sb	a4,11(a0)
		hash[i + 16] = (ctx->state[4] >> (24 - i * 8)) & 0x000000ff;
    e885d366:	5038                	lw	a4,96(s0)
    e885d368:	00f7573b          	srlw	a4,a4,a5
    e885d36c:	00e507a3          	sb	a4,15(a0)
		hash[i + 20] = (ctx->state[5] >> (24 - i * 8)) & 0x000000ff;
    e885d370:	5078                	lw	a4,100(s0)
    e885d372:	00f7573b          	srlw	a4,a4,a5
    e885d376:	00e509a3          	sb	a4,19(a0)
		hash[i + 24] = (ctx->state[6] >> (24 - i * 8)) & 0x000000ff;
    e885d37a:	5438                	lw	a4,104(s0)
    e885d37c:	00f7573b          	srlw	a4,a4,a5
    e885d380:	00e50ba3          	sb	a4,23(a0)
		hash[i + 28] = (ctx->state[7] >> (24 - i * 8)) & 0x000000ff;
    e885d384:	5478                	lw	a4,108(s0)
    e885d386:	00f7573b          	srlw	a4,a4,a5
    e885d38a:	00e50da3          	sb	a4,27(a0)
	for (i = 0; i < 4; ++i) {
    e885d38e:	37e1                	addiw	a5,a5,-8
    e885d390:	fad796e3          	bne	a5,a3,e885d33c <sha256_final+0x54>
	}

}
    e885d394:	60e2                	ld	ra,24(sp)
    e885d396:	6422                	ld	s0,8(sp)
    e885d398:	64c2                	ld	s1,16(sp)
    e885d39a:	6105                	addi	sp,sp,32
    e885d39c:	8082                	ret
			ctx->data[i++] = 0x00;
    e885d39e:	2705                	addiw	a4,a4,1
    e885d3a0:	1817d00b          	sbia	zero,(a5),1,0
    e885d3a4:	bf85                	j	e885d314 <sha256_final+0x2c>
		ctx->data[i++] = 0x80;
    e885d3a6:	f8000613          	li	a2,-128
    e885d3aa:	10d5d60b          	surb	a2,a1,a3,0
		while (i < 64)
    e885d3ae:	97ae                	add	a5,a5,a1
    e885d3b0:	03f00693          	li	a3,63
    e885d3b4:	00e6fd63          	bgeu	a3,a4,e885d3ce <sha256_final+0xe6>
		sha256_transform(ctx, ctx->data);
    e885d3b8:	85a2                	mv	a1,s0
    e885d3ba:	8522                	mv	a0,s0
    e885d3bc:	d15ff0ef          	jal	ra,e885d0d0 <sha256_transform>
		memset(ctx->data, 0, 56);
    e885d3c0:	03800613          	li	a2,56
    e885d3c4:	4581                	li	a1,0
    e885d3c6:	8522                	mv	a0,s0
    e885d3c8:	7cd1e0ef          	jal	ra,e887c394 <eLIBs_memset>
    e885d3cc:	b7b1                	j	e885d318 <sha256_final+0x30>
			ctx->data[i++] = 0x00;
    e885d3ce:	2705                	addiw	a4,a4,1
    e885d3d0:	1817d00b          	sbia	zero,(a5),1,0
    e885d3d4:	b7c5                	j	e885d3b4 <sha256_final+0xcc>

00000000e885d3d6 <_SHA1_Compress>:
#define SHA1_FF1( a, b, c, d, e, i )	e = ( ROTL32( a, 5 ) + SHA1_F1( b, c, d ) + e + W[ i ] + UINT32_C( 0x6ed9eba1 ) ); b = ROTL32( b, 30);
#define SHA1_FF2( a, b, c, d, e, i )	e = ( ROTL32( a, 5 ) + SHA1_F2( b, c, d ) + e + W[ i ] + UINT32_C( 0x8f1bbcdc ) ); b = ROTL32( b, 30);
#define SHA1_FF3( a, b, c, d, e, i )	e = ( ROTL32( a, 5 ) + SHA1_F3( b, c, d ) + e + W[ i ] + UINT32_C( 0xca62c1d6 ) ); b = ROTL32( b, 30);

static void	_SHA1_Compress( SHA_CTX_compat *ctx, const uint8_t *inPtr )
{
    e885d3d6:	710d                	addi	sp,sp,-352
    e885d3d8:	eea2                	sd	s0,344(sp)
    e885d3da:	eaa6                	sd	s1,336(sp)
    e885d3dc:	e6ca                	sd	s2,328(sp)
    e885d3de:	e2ce                	sd	s3,320(sp)
    e885d3e0:	4781                	li	a5,0
	uint32_t		a, b, c, d, e, W[ 80 ], i, tmp;
	
	// Copy the state into 512-bits into W[0..15].
	for( i = 0; i < 16; ++i )
    e885d3e2:	04000693          	li	a3,64
	{
		W[ i ] = ReadBig32( inPtr );
    e885d3e6:	40f5c70b          	lrw	a4,a1,a5,0
    e885d3ea:	9007170b          	revw	a4,a4
    e885d3ee:	4027d70b          	srw	a4,a5,sp,0
	for( i = 0; i < 16; ++i )
    e885d3f2:	0791                	addi	a5,a5,4
    e885d3f4:	fed799e3          	bne	a5,a3,e885d3e6 <_SHA1_Compress+0x10>
		inPtr += 4;
	}
	
	// Copy state
	a = ctx->state[ 0 ];
	b = ctx->state[ 1 ];
    e885d3f8:	e3e54f8b          	lwd	t6,t5,(a0),1,3
	c = ctx->state[ 2 ];
	d = ctx->state[ 3 ];
    e885d3fc:	e5c54e8b          	lwd	t4,t3,(a0),2,3
	e = ctx->state[ 4 ];
    e885d400:	01852303          	lw	t1,24(a0)
	
	// Expand it
	for( i = 16; i < 80; ++i )
    e885d404:	888a                	mv	a7,sp
    e885d406:	0214                	addi	a3,sp,256
	e = ctx->state[ 4 ];
    e885d408:	870a                	mv	a4,sp
	{
		tmp = W[ i-3 ] ^ W[ i-8 ] ^ W[ i-14 ] ^ W[ i-16 ];
    e885d40a:	5310                	lw	a2,32(a4)
    e885d40c:	5b5c                	lw	a5,52(a4)
    e885d40e:	0711                	addi	a4,a4,4
    e885d410:	8fb1                	xor	a5,a5,a2
    e885d412:	4350                	lw	a2,4(a4)
    e885d414:	8fb1                	xor	a5,a5,a2
    e885d416:	ffc72603          	lw	a2,-4(a4)
    e885d41a:	8fb1                	xor	a5,a5,a2
		W[ i ] = ROTL32( tmp, 1 ); 
    e885d41c:	15f7978b          	srriw	a5,a5,31
    e885d420:	df5c                	sw	a5,60(a4)
	for( i = 16; i < 80; ++i )
    e885d422:	fee694e3          	bne	a3,a4,e885d40a <_SHA1_Compress+0x34>
	
	// Compress
	// Round 1
	for( i = 0; i < 20; )
	{
		SHA1_FF0( a, b, c, d, e, i++ );
    e885d426:	5a8284b7          	lui	s1,0x5a828
    e885d42a:	05010293          	addi	t0,sp,80
	for( i = 16; i < 80; ++i )
    e885d42e:	858a                	mv	a1,sp
	e = ctx->state[ 4 ];
    e885d430:	839a                	mv	t2,t1
	d = ctx->state[ 3 ];
    e885d432:	8472                	mv	s0,t3
	c = ctx->state[ 2 ];
    e885d434:	8776                	mv	a4,t4
	b = ctx->state[ 1 ];
    e885d436:	887a                	mv	a6,t5
	a = ctx->state[ 0 ];
    e885d438:	87fe                	mv	a5,t6
		SHA1_FF0( a, b, c, d, e, i++ );
    e885d43a:	9994849b          	addiw	s1,s1,-1639
    e885d43e:	4190                	lw	a2,0(a1)
    e885d440:	15b7968b          	srriw	a3,a5,27
    e885d444:	9ea5                	addw	a3,a3,s1
    e885d446:	9eb1                	addw	a3,a3,a2
    e885d448:	00874633          	xor	a2,a4,s0
    e885d44c:	01067633          	and	a2,a2,a6
    e885d450:	8e21                	xor	a2,a2,s0
    e885d452:	1428180b          	srriw	a6,a6,2
    e885d456:	9eb1                	addw	a3,a3,a2
    e885d458:	007686bb          	addw	a3,a3,t2
		SHA1_FF0( e, a, b, c, d, i++ );
    e885d45c:	01074633          	xor	a2,a4,a6
    e885d460:	0045a383          	lw	t2,4(a1)
    e885d464:	8e7d                	and	a2,a2,a5
    e885d466:	8e39                	xor	a2,a2,a4
    e885d468:	9c25                	addw	s0,s0,s1
    e885d46a:	0074043b          	addw	s0,s0,t2
    e885d46e:	9c31                	addw	s0,s0,a2
    e885d470:	15b6960b          	srriw	a2,a3,27
    e885d474:	1427978b          	srriw	a5,a5,2
    e885d478:	9c31                	addw	s0,s0,a2
		SHA1_FF0( d, e, a, b, c, i++ );
    e885d47a:	0085a383          	lw	t2,8(a1)
    e885d47e:	00f84633          	xor	a2,a6,a5
    e885d482:	8e75                	and	a2,a2,a3
    e885d484:	01064633          	xor	a2,a2,a6
    e885d488:	9f25                	addw	a4,a4,s1
    e885d48a:	0077073b          	addw	a4,a4,t2
    e885d48e:	9f31                	addw	a4,a4,a2
    e885d490:	15b4160b          	srriw	a2,s0,27
    e885d494:	1426968b          	srriw	a3,a3,2
    e885d498:	9f31                	addw	a4,a4,a2
    e885d49a:	00c5a903          	lw	s2,12(a1)
		SHA1_FF0( c, d, e, a, b, i++ );
    e885d49e:	00d7c633          	xor	a2,a5,a3
    e885d4a2:	8e61                	and	a2,a2,s0
    e885d4a4:	8e3d                	xor	a2,a2,a5
    e885d4a6:	0098083b          	addw	a6,a6,s1
    e885d4aa:	0128083b          	addw	a6,a6,s2
    e885d4ae:	00c8083b          	addw	a6,a6,a2
    e885d4b2:	1424160b          	srriw	a2,s0,2
    e885d4b6:	8432                	mv	s0,a2
		SHA1_FF0( b, c, d, e, a, i++ );
    e885d4b8:	8e35                	xor	a2,a2,a3
    e885d4ba:	8e79                	and	a2,a2,a4
    e885d4bc:	8e35                	xor	a2,a2,a3
		SHA1_FF0( d, e, a, b, c, i++ );
    e885d4be:	83b6                	mv	t2,a3
		SHA1_FF0( c, d, e, a, b, i++ );
    e885d4c0:	4994                	lw	a3,16(a1)
    e885d4c2:	9fa5                	addw	a5,a5,s1
    e885d4c4:	15b7190b          	srriw	s2,a4,27
    e885d4c8:	9fb5                	addw	a5,a5,a3
    e885d4ca:	0109083b          	addw	a6,s2,a6
		SHA1_FF0( b, c, d, e, a, i++ );
    e885d4ce:	9e3d                	addw	a2,a2,a5
    e885d4d0:	05d1                	addi	a1,a1,20
    e885d4d2:	15b8178b          	srriw	a5,a6,27
    e885d4d6:	9fb1                	addw	a5,a5,a2
    e885d4d8:	1427170b          	srriw	a4,a4,2
	for( i = 0; i < 20; )
    e885d4dc:	f6b291e3          	bne	t0,a1,e885d43e <_SHA1_Compress+0x68>
	}
	
	// Round 2
	for( ; i < 40; )
	{ 
		SHA1_FF1( a, b, c, d, e, i++ );
    e885d4e0:	6ed9f5b7          	lui	a1,0x6ed9f
    e885d4e4:	860a                	mv	a2,sp
    e885d4e6:	ba15859b          	addiw	a1,a1,-1119
    e885d4ea:	00e846b3          	xor	a3,a6,a4
    e885d4ee:	0086c4b3          	xor	s1,a3,s0
    e885d4f2:	15b7968b          	srriw	a3,a5,27
    e885d4f6:	9ead                	addw	a3,a3,a1
    e885d4f8:	9ea5                	addw	a3,a3,s1
    e885d4fa:	4a24                	lw	s1,80(a2)
    e885d4fc:	1428180b          	srriw	a6,a6,2
    e885d500:	9c2d                	addw	s0,s0,a1
    e885d502:	9ea5                	addw	a3,a3,s1
    e885d504:	007686bb          	addw	a3,a3,t2
		SHA1_FF1( e, a, b, c, d, i++ );
    e885d508:	00f743b3          	xor	t2,a4,a5
    e885d50c:	0103c3b3          	xor	t2,t2,a6
    e885d510:	0074043b          	addw	s0,s0,t2
    e885d514:	05462383          	lw	t2,84(a2)
    e885d518:	1427978b          	srriw	a5,a5,2
    e885d51c:	4e64                	lw	s1,92(a2)
    e885d51e:	0074043b          	addw	s0,s0,t2
    e885d522:	15b6938b          	srriw	t2,a3,27
    e885d526:	0083843b          	addw	s0,t2,s0
		SHA1_FF1( d, e, a, b, c, i++ );
    e885d52a:	05862383          	lw	t2,88(a2)
    e885d52e:	9f2d                	addw	a4,a4,a1
    e885d530:	06062983          	lw	s3,96(a2)
    e885d534:	0077073b          	addw	a4,a4,t2
    e885d538:	00f843b3          	xor	t2,a6,a5
    e885d53c:	00d3c3b3          	xor	t2,t2,a3
    e885d540:	00b8083b          	addw	a6,a6,a1
    e885d544:	1426968b          	srriw	a3,a3,2
    e885d548:	0098083b          	addw	a6,a6,s1
		SHA1_FF1( c, d, e, a, b, i++ );
    e885d54c:	00d7c4b3          	xor	s1,a5,a3
    e885d550:	8ca1                	xor	s1,s1,s0
    e885d552:	0077073b          	addw	a4,a4,t2
		SHA1_FF1( d, e, a, b, c, i++ );
    e885d556:	15b4138b          	srriw	t2,s0,27
    e885d55a:	00e3873b          	addw	a4,t2,a4
		SHA1_FF1( c, d, e, a, b, i++ );
    e885d55e:	1424190b          	srriw	s2,s0,2
    e885d562:	0098083b          	addw	a6,a6,s1
		SHA1_FF1( d, e, a, b, c, i++ );
    e885d566:	83b6                	mv	t2,a3
		SHA1_FF1( c, d, e, a, b, i++ );
    e885d568:	15b7148b          	srriw	s1,a4,27
    e885d56c:	9fad                	addw	a5,a5,a1
		SHA1_FF1( b, c, d, e, a, i++ );
    e885d56e:	0126c6b3          	xor	a3,a3,s2
    e885d572:	8eb9                	xor	a3,a3,a4
		SHA1_FF1( c, d, e, a, b, i++ );
    e885d574:	0104883b          	addw	a6,s1,a6
    e885d578:	013787bb          	addw	a5,a5,s3
    e885d57c:	9fb5                	addw	a5,a5,a3
		SHA1_FF1( b, c, d, e, a, i++ );
    e885d57e:	15b8148b          	srriw	s1,a6,27
    e885d582:	0651                	addi	a2,a2,20
		SHA1_FF1( c, d, e, a, b, i++ );
    e885d584:	844a                	mv	s0,s2
		SHA1_FF1( b, c, d, e, a, i++ );
    e885d586:	9fa5                	addw	a5,a5,s1
    e885d588:	1427170b          	srriw	a4,a4,2
	for( ; i < 40; )
    e885d58c:	f4c29fe3          	bne	t0,a2,e885d4ea <_SHA1_Compress+0x114>
	}
	
	// Round 3
	for( ; i < 60; )
	{ 
		SHA1_FF2( a, b, c, d, e, i++ );
    e885d590:	8f1bc4b7          	lui	s1,0x8f1bc
    e885d594:	860a                	mv	a2,sp
    e885d596:	cdc4849b          	addiw	s1,s1,-804
    e885d59a:	00e866b3          	or	a3,a6,a4
    e885d59e:	8ee1                	and	a3,a3,s0
    e885d5a0:	00e875b3          	and	a1,a6,a4
    e885d5a4:	0a062903          	lw	s2,160(a2)
    e885d5a8:	8dd5                	or	a1,a1,a3
    e885d5aa:	15b7968b          	srriw	a3,a5,27
    e885d5ae:	9ea5                	addw	a3,a3,s1
    e885d5b0:	012686bb          	addw	a3,a3,s2
    e885d5b4:	1428180b          	srriw	a6,a6,2
    e885d5b8:	9ead                	addw	a3,a3,a1
    e885d5ba:	007686bb          	addw	a3,a3,t2
		SHA1_FF2( e, a, b, c, d, i++ );
    e885d5be:	0107f5b3          	and	a1,a5,a6
    e885d5c2:	0107e3b3          	or	t2,a5,a6
    e885d5c6:	007773b3          	and	t2,a4,t2
    e885d5ca:	00b3e3b3          	or	t2,t2,a1
    e885d5ce:	0a462583          	lw	a1,164(a2)
    e885d5d2:	9c25                	addw	s0,s0,s1
    e885d5d4:	9f25                	addw	a4,a4,s1
    e885d5d6:	9da1                	addw	a1,a1,s0
    e885d5d8:	0075843b          	addw	s0,a1,t2
    e885d5dc:	0a862383          	lw	t2,168(a2)
    e885d5e0:	15b6958b          	srriw	a1,a3,27
    e885d5e4:	9da1                	addw	a1,a1,s0
    e885d5e6:	0077073b          	addw	a4,a4,t2
    e885d5ea:	1427978b          	srriw	a5,a5,2
		SHA1_FF2( d, e, a, b, c, i++ );
    e885d5ee:	15b5938b          	srriw	t2,a1,27
    e885d5f2:	00f6f433          	and	s0,a3,a5
    e885d5f6:	007703bb          	addw	t2,a4,t2
    e885d5fa:	00f6e733          	or	a4,a3,a5
    e885d5fe:	01077733          	and	a4,a4,a6
    e885d602:	1426968b          	srriw	a3,a3,2
		SHA1_FF2( c, d, e, a, b, i++ );
    e885d606:	00d5f933          	and	s2,a1,a3
		SHA1_FF2( d, e, a, b, c, i++ );
    e885d60a:	8f41                	or	a4,a4,s0
		SHA1_FF2( c, d, e, a, b, i++ );
    e885d60c:	00d5e433          	or	s0,a1,a3
    e885d610:	8c7d                	and	s0,s0,a5
    e885d612:	01246433          	or	s0,s0,s2
    e885d616:	0ac62903          	lw	s2,172(a2)
    e885d61a:	0098083b          	addw	a6,a6,s1
		SHA1_FF2( d, e, a, b, c, i++ );
    e885d61e:	0077073b          	addw	a4,a4,t2
    e885d622:	0128083b          	addw	a6,a6,s2
    e885d626:	0088083b          	addw	a6,a6,s0
		SHA1_FF2( c, d, e, a, b, i++ );
    e885d62a:	15b7190b          	srriw	s2,a4,27
    e885d62e:	0b062983          	lw	s3,176(a2)
    e885d632:	0109083b          	addw	a6,s2,a6
		SHA1_FF2( b, c, d, e, a, i++ );
    e885d636:	15b8190b          	srriw	s2,a6,27
    e885d63a:	9fa5                	addw	a5,a5,s1
		SHA1_FF2( c, d, e, a, b, i++ );
    e885d63c:	1425958b          	srriw	a1,a1,2
    e885d640:	013787bb          	addw	a5,a5,s3
    e885d644:	012787bb          	addw	a5,a5,s2
		SHA1_FF2( b, c, d, e, a, i++ );
    e885d648:	00b76933          	or	s2,a4,a1
		SHA1_FF2( d, e, a, b, c, i++ );
    e885d64c:	83b6                	mv	t2,a3
		SHA1_FF2( c, d, e, a, b, i++ );
    e885d64e:	842e                	mv	s0,a1
		SHA1_FF2( b, c, d, e, a, i++ );
    e885d650:	00d976b3          	and	a3,s2,a3
    e885d654:	8df9                	and	a1,a1,a4
    e885d656:	8dd5                	or	a1,a1,a3
    e885d658:	0651                	addi	a2,a2,20
    e885d65a:	9fad                	addw	a5,a5,a1
    e885d65c:	1427170b          	srriw	a4,a4,2
	for( ; i < 60; )
    e885d660:	f2c29de3          	bne	t0,a2,e885d59a <_SHA1_Compress+0x1c4>
	}
	
	// Round 4
	for( ; i < 80; )
	{ 
		SHA1_FF3( a, b, c, d, e, i++ );
    e885d664:	ca62c637          	lui	a2,0xca62c
    e885d668:	1d66061b          	addiw	a2,a2,470
    e885d66c:	00e846b3          	xor	a3,a6,a4
    e885d670:	0086c5b3          	xor	a1,a3,s0
    e885d674:	15b7968b          	srriw	a3,a5,27
    e885d678:	9eb1                	addw	a3,a3,a2
    e885d67a:	9ead                	addw	a3,a3,a1
    e885d67c:	0f08a583          	lw	a1,240(a7)
    e885d680:	1428180b          	srriw	a6,a6,2
    e885d684:	9c31                	addw	s0,s0,a2
    e885d686:	9ead                	addw	a3,a3,a1
		SHA1_FF3( e, a, b, c, d, i++ );
    e885d688:	00f745b3          	xor	a1,a4,a5
    e885d68c:	0105c5b3          	xor	a1,a1,a6
    e885d690:	9c2d                	addw	s0,s0,a1
    e885d692:	0f48a583          	lw	a1,244(a7)
		SHA1_FF3( a, b, c, d, e, i++ );
    e885d696:	007686bb          	addw	a3,a3,t2
		SHA1_FF3( e, a, b, c, d, i++ );
    e885d69a:	1427978b          	srriw	a5,a5,2
    e885d69e:	9c2d                	addw	s0,s0,a1
    e885d6a0:	15b6958b          	srriw	a1,a3,27
    e885d6a4:	9c2d                	addw	s0,s0,a1
		SHA1_FF3( d, e, a, b, c, i++ );
    e885d6a6:	0f88a583          	lw	a1,248(a7)
    e885d6aa:	9f31                	addw	a4,a4,a2
    e885d6ac:	1008a903          	lw	s2,256(a7)
    e885d6b0:	9f2d                	addw	a4,a4,a1
    e885d6b2:	00f845b3          	xor	a1,a6,a5
    e885d6b6:	8db5                	xor	a1,a1,a3
    e885d6b8:	9f2d                	addw	a4,a4,a1
    e885d6ba:	15b4158b          	srriw	a1,s0,27
    e885d6be:	9f2d                	addw	a4,a4,a1
    e885d6c0:	0fc8a583          	lw	a1,252(a7)
    e885d6c4:	1426968b          	srriw	a3,a3,2
    e885d6c8:	00c8083b          	addw	a6,a6,a2
    e885d6cc:	00b8083b          	addw	a6,a6,a1
		SHA1_FF3( c, d, e, a, b, i++ );
    e885d6d0:	00d7c5b3          	xor	a1,a5,a3
    e885d6d4:	8da1                	xor	a1,a1,s0
    e885d6d6:	1424148b          	srriw	s1,s0,2
    e885d6da:	00b8083b          	addw	a6,a6,a1
		SHA1_FF3( d, e, a, b, c, i++ );
    e885d6de:	83b6                	mv	t2,a3
		SHA1_FF3( c, d, e, a, b, i++ );
    e885d6e0:	15b7158b          	srriw	a1,a4,27
    e885d6e4:	9fb1                	addw	a5,a5,a2
		SHA1_FF3( b, c, d, e, a, i++ );
    e885d6e6:	8ea5                	xor	a3,a3,s1
    e885d6e8:	8eb9                	xor	a3,a3,a4
		SHA1_FF3( c, d, e, a, b, i++ );
    e885d6ea:	0105883b          	addw	a6,a1,a6
    e885d6ee:	012787bb          	addw	a5,a5,s2
    e885d6f2:	9fb5                	addw	a5,a5,a3
		SHA1_FF3( b, c, d, e, a, i++ );
    e885d6f4:	15b8158b          	srriw	a1,a6,27
    e885d6f8:	08d1                	addi	a7,a7,20
		SHA1_FF3( c, d, e, a, b, i++ );
    e885d6fa:	8426                	mv	s0,s1
		SHA1_FF3( b, c, d, e, a, i++ );
    e885d6fc:	9fad                	addw	a5,a5,a1
    e885d6fe:	1427170b          	srriw	a4,a4,2
	for( ; i < 80; )
    e885d702:	f71295e3          	bne	t0,a7,e885d66c <_SHA1_Compress+0x296>
	
	// Store
	ctx->state[ 0 ] = ctx->state[ 0 ] + a;
	ctx->state[ 1 ] = ctx->state[ 1 ] + b;
	ctx->state[ 2 ] = ctx->state[ 2 ] + c;
	ctx->state[ 3 ] = ctx->state[ 3 ] + d;
    e885d706:	009e0e3b          	addw	t3,t3,s1
	ctx->state[ 4 ] = ctx->state[ 4 ] + e;
}
    e885d70a:	6476                	ld	s0,344(sp)
	ctx->state[ 0 ] = ctx->state[ 0 ] + a;
    e885d70c:	00ff87bb          	addw	a5,t6,a5
	ctx->state[ 1 ] = ctx->state[ 1 ] + b;
    e885d710:	010f083b          	addw	a6,t5,a6
	ctx->state[ 2 ] = ctx->state[ 2 ] + c;
    e885d714:	00ee873b          	addw	a4,t4,a4
	ctx->state[ 4 ] = ctx->state[ 4 ] + e;
    e885d718:	007306bb          	addw	a3,t1,t2
	ctx->state[ 0 ] = ctx->state[ 0 ] + a;
    e885d71c:	c51c                	sw	a5,8(a0)
	ctx->state[ 1 ] = ctx->state[ 1 ] + b;
    e885d71e:	01052623          	sw	a6,12(a0)
	ctx->state[ 2 ] = ctx->state[ 2 ] + c;
    e885d722:	c918                	sw	a4,16(a0)
	ctx->state[ 3 ] = ctx->state[ 3 ] + d;
    e885d724:	01c52a23          	sw	t3,20(a0)
	ctx->state[ 4 ] = ctx->state[ 4 ] + e;
    e885d728:	cd14                	sw	a3,24(a0)
}
    e885d72a:	64d6                	ld	s1,336(sp)
    e885d72c:	6936                	ld	s2,328(sp)
    e885d72e:	6996                	ld	s3,320(sp)
    e885d730:	6135                	addi	sp,sp,352
    e885d732:	8082                	ret

00000000e885d734 <_SHA512_Compress>:
	 t1 = SHA512_Sigma0( a ) + SHA512_Maj( a, b, c); \
	 d += t0; \
	 h  = t0 + t1;

static void	_SHA512_Compress( SHA512_CTX_compat *ctx, const uint8_t *inPtr )
{
    e885d734:	d4010113          	addi	sp,sp,-704
    e885d738:	4781                	li	a5,0
	int				i;
	
	// Copy state into S
	for( i = 0; i < 8; ++i )
	{
		S[ i ] = ctx->state[ i ];
    e885d73a:	00850613          	addi	a2,a0,8
	for( i = 0; i < 8; ++i )
    e885d73e:	04000713          	li	a4,64
		S[ i ] = ctx->state[ i ];
    e885d742:	60f6468b          	lrd	a3,a2,a5,0
    e885d746:	6027d68b          	srd	a3,a5,sp,0
	for( i = 0; i < 8; ++i )
    e885d74a:	07a1                	addi	a5,a5,8
    e885d74c:	fee79be3          	bne	a5,a4,e885d742 <_SHA512_Compress+0xe>
    e885d750:	4781                	li	a5,0
	}
	
	// Copy the state into 1024-bits into W[0..15]
	for( i = 0; i < 16; ++i )
	{
		W[ i ] = ReadBig64( inPtr );
    e885d752:	04010e93          	addi	t4,sp,64
	for( i = 0; i < 16; ++i )
    e885d756:	08000693          	li	a3,128
		W[ i ] = ReadBig64( inPtr );
    e885d75a:	60f5c70b          	lrd	a4,a1,a5,0
    e885d75e:	8207170b          	rev	a4,a4
    e885d762:	61d7d70b          	srd	a4,a5,t4,0
	for( i = 0; i < 16; ++i )
    e885d766:	07a1                	addi	a5,a5,8
    e885d768:	fed799e3          	bne	a5,a3,e885d75a <_SHA512_Compress+0x26>
    e885d76c:	048c                	addi	a1,sp,576
    e885d76e:	8776                	mv	a4,t4
	}
	
	// Fill W[16..79]
	for( i = 16; i < 80; ++i )
	{
		W[ i ] = SHA512_Gamma1( W[ i-2 ] ) + W[ i-7 ] + SHA512_Gamma0( W[ i-15 ] )  + W[ i-16 ];
    e885d770:	7b34                	ld	a3,112(a4)
    e885d772:	6710                	ld	a2,8(a4)
    e885d774:	0721                	addi	a4,a4,8
    e885d776:	13d6980b          	srri	a6,a3,61
    e885d77a:	1136978b          	srri	a5,a3,19
    e885d77e:	8299                	srli	a3,a3,0x6
    e885d780:	0107c7b3          	xor	a5,a5,a6
    e885d784:	8fb5                	xor	a5,a5,a3
    e885d786:	ff873803          	ld	a6,-8(a4)
    e885d78a:	6334                	ld	a3,64(a4)
    e885d78c:	96c2                	add	a3,a3,a6
    e885d78e:	97b6                	add	a5,a5,a3
    e885d790:	1086180b          	srri	a6,a2,8
    e885d794:	1016168b          	srri	a3,a2,1
    e885d798:	0106c6b3          	xor	a3,a3,a6
    e885d79c:	821d                	srli	a2,a2,0x7
    e885d79e:	8eb1                	xor	a3,a3,a2
    e885d7a0:	97b6                	add	a5,a5,a3
    e885d7a2:	ff3c                	sd	a5,120(a4)
	for( i = 16; i < 80; ++i )
    e885d7a4:	fce596e3          	bne	a1,a4,e885d770 <_SHA512_Compress+0x3c>
    e885d7a8:	78e2                	ld	a7,56(sp)
    e885d7aa:	7e02                	ld	t3,32(sp)
    e885d7ac:	7842                	ld	a6,48(sp)
    e885d7ae:	75a2                	ld	a1,40(sp)
    e885d7b0:	f8d1460b          	ldd	a2,a3,(sp),0,4
    e885d7b4:	faf1470b          	ldd	a4,a5,(sp),1,4
    e885d7b8:	00066f17          	auipc	t5,0x66
    e885d7bc:	c70f0f13          	addi	t5,t5,-912 # e88c3428 <K>
    e885d7c0:	00066f97          	auipc	t6,0x66
    e885d7c4:	ee8f8f93          	addi	t6,t6,-280 # e88c36a8 <K+0x280>
	}		
	
	// Compress
	for( i = 0; i < 80; i += 8 )
	{
		 SHA512_RND( S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], S[ 4 ], S[ 5 ], S[ 6 ], S[ 7 ], i+0 );
    e885d7c8:	112e128b          	srri	t0,t3,18
    e885d7cc:	10ee130b          	srri	t1,t3,14
    e885d7d0:	00534333          	xor	t1,t1,t0
    e885d7d4:	129e128b          	srri	t0,t3,41
    e885d7d8:	000eb383          	ld	t2,0(t4)
    e885d7dc:	00534333          	xor	t1,t1,t0
    e885d7e0:	000f3283          	ld	t0,0(t5)
    e885d7e4:	040f0f13          	addi	t5,t5,64
    e885d7e8:	040e8e93          	addi	t4,t4,64
    e885d7ec:	929e                	add	t0,t0,t2
    e885d7ee:	9316                	add	t1,t1,t0
    e885d7f0:	00b842b3          	xor	t0,a6,a1
    e885d7f4:	01c2f2b3          	and	t0,t0,t3
    e885d7f8:	0102c2b3          	xor	t0,t0,a6
    e885d7fc:	9316                	add	t1,t1,t0
    e885d7fe:	9346                	add	t1,t1,a7
    e885d800:	006782b3          	add	t0,a5,t1
    e885d804:	1226178b          	srri	a5,a2,34
    e885d808:	11c6188b          	srri	a7,a2,28
    e885d80c:	00f8c8b3          	xor	a7,a7,a5
    e885d810:	1276178b          	srri	a5,a2,39
    e885d814:	00f8c8b3          	xor	a7,a7,a5
    e885d818:	00d667b3          	or	a5,a2,a3
    e885d81c:	00d673b3          	and	t2,a2,a3
    e885d820:	8ff9                	and	a5,a5,a4
    e885d822:	0077e7b3          	or	a5,a5,t2
    e885d826:	98be                	add	a7,a7,a5
    e885d828:	989a                	add	a7,a7,t1
		 SHA512_RND( S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], S[ 4 ], S[ 5 ], S[ 6 ], i+1 );
    e885d82a:	fc8f3783          	ld	a5,-56(t5)
    e885d82e:	fc8eb303          	ld	t1,-56(t4)
    e885d832:	011673b3          	and	t2,a2,a7
    e885d836:	979a                	add	a5,a5,t1
    e885d838:	983e                	add	a6,a6,a5
    e885d83a:	00be47b3          	xor	a5,t3,a1
    e885d83e:	0057f7b3          	and	a5,a5,t0
    e885d842:	8fad                	xor	a5,a5,a1
    e885d844:	1122930b          	srri	t1,t0,18
    e885d848:	983e                	add	a6,a6,a5
    e885d84a:	10e2978b          	srri	a5,t0,14
    e885d84e:	0067c7b3          	xor	a5,a5,t1
    e885d852:	1292930b          	srri	t1,t0,41
    e885d856:	0067c7b3          	xor	a5,a5,t1
    e885d85a:	97c2                	add	a5,a5,a6
    e885d85c:	00f70333          	add	t1,a4,a5
    e885d860:	1228970b          	srri	a4,a7,34
    e885d864:	11c8980b          	srri	a6,a7,28
    e885d868:	00e84833          	xor	a6,a6,a4
    e885d86c:	1278970b          	srri	a4,a7,39
    e885d870:	00e84833          	xor	a6,a6,a4
    e885d874:	01166733          	or	a4,a2,a7
    e885d878:	8f75                	and	a4,a4,a3
    e885d87a:	00776733          	or	a4,a4,t2
    e885d87e:	983a                	add	a6,a6,a4
    e885d880:	983e                	add	a6,a6,a5
		 SHA512_RND( S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], S[ 4 ], S[ 5 ], i+2 );
    e885d882:	fd0f3703          	ld	a4,-48(t5)
    e885d886:	fd0eb783          	ld	a5,-48(t4)
    e885d88a:	0108f3b3          	and	t2,a7,a6
    e885d88e:	973e                	add	a4,a4,a5
    e885d890:	95ba                	add	a1,a1,a4
    e885d892:	005e4733          	xor	a4,t3,t0
    e885d896:	00677733          	and	a4,a4,t1
    e885d89a:	01c74733          	xor	a4,a4,t3
    e885d89e:	1123178b          	srri	a5,t1,18
    e885d8a2:	95ba                	add	a1,a1,a4
    e885d8a4:	10e3170b          	srri	a4,t1,14
    e885d8a8:	8f3d                	xor	a4,a4,a5
    e885d8aa:	1293178b          	srri	a5,t1,41
    e885d8ae:	8f3d                	xor	a4,a4,a5
    e885d8b0:	1228178b          	srri	a5,a6,34
    e885d8b4:	972e                	add	a4,a4,a1
    e885d8b6:	11c8158b          	srri	a1,a6,28
    e885d8ba:	8dbd                	xor	a1,a1,a5
    e885d8bc:	1278178b          	srri	a5,a6,39
    e885d8c0:	8dbd                	xor	a1,a1,a5
    e885d8c2:	0108e7b3          	or	a5,a7,a6
    e885d8c6:	8ff1                	and	a5,a5,a2
    e885d8c8:	0077e7b3          	or	a5,a5,t2
    e885d8cc:	95be                	add	a1,a1,a5
		 SHA512_RND( S[ 5 ], S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], S[ 4 ], i+3 );
    e885d8ce:	fd8f3383          	ld	t2,-40(t5)
    e885d8d2:	fd8eb783          	ld	a5,-40(t4)
		 SHA512_RND( S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], S[ 4 ], S[ 5 ], i+2 );
    e885d8d6:	96ba                	add	a3,a3,a4
    e885d8d8:	95ba                	add	a1,a1,a4
		 SHA512_RND( S[ 5 ], S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], S[ 4 ], i+3 );
    e885d8da:	93be                	add	t2,t2,a5
    e885d8dc:	9e1e                	add	t3,t3,t2
    e885d8de:	0062c3b3          	xor	t2,t0,t1
    e885d8e2:	00d3f3b3          	and	t2,t2,a3
    e885d8e6:	0053c3b3          	xor	t2,t2,t0
    e885d8ea:	1126978b          	srri	a5,a3,18
    e885d8ee:	9e1e                	add	t3,t3,t2
    e885d8f0:	10e6938b          	srri	t2,a3,14
    e885d8f4:	00f3c3b3          	xor	t2,t2,a5
    e885d8f8:	1296978b          	srri	a5,a3,41
    e885d8fc:	00f3c3b3          	xor	t2,t2,a5
    e885d900:	1225978b          	srri	a5,a1,34
    e885d904:	93f2                	add	t2,t2,t3
    e885d906:	11c59e0b          	srri	t3,a1,28
    e885d90a:	00fe4e33          	xor	t3,t3,a5
    e885d90e:	1275978b          	srri	a5,a1,39
    e885d912:	00fe4e33          	xor	t3,t3,a5
    e885d916:	00b867b3          	or	a5,a6,a1
    e885d91a:	00b87733          	and	a4,a6,a1
    e885d91e:	0117f7b3          	and	a5,a5,a7
    e885d922:	8fd9                	or	a5,a5,a4
    e885d924:	9e3e                	add	t3,t3,a5
		 SHA512_RND( S[ 4 ], S[ 5 ], S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], i+4 );
    e885d926:	fe0eb703          	ld	a4,-32(t4)
    e885d92a:	fe0f3783          	ld	a5,-32(t5)
		 SHA512_RND( S[ 5 ], S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], S[ 4 ], i+3 );
    e885d92e:	961e                	add	a2,a2,t2
    e885d930:	9e1e                	add	t3,t3,t2
		 SHA512_RND( S[ 4 ], S[ 5 ], S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], S[ 3 ], i+4 );
    e885d932:	97ba                	add	a5,a5,a4
    e885d934:	9796                	add	a5,a5,t0
    e885d936:	00d342b3          	xor	t0,t1,a3
    e885d93a:	00c2f2b3          	and	t0,t0,a2
    e885d93e:	0062c2b3          	xor	t0,t0,t1
    e885d942:	1126170b          	srri	a4,a2,18
    e885d946:	9796                	add	a5,a5,t0
    e885d948:	10e6128b          	srri	t0,a2,14
    e885d94c:	00e2c2b3          	xor	t0,t0,a4
    e885d950:	1296170b          	srri	a4,a2,41
    e885d954:	00e2c2b3          	xor	t0,t0,a4
    e885d958:	122e170b          	srri	a4,t3,34
    e885d95c:	92be                	add	t0,t0,a5
    e885d95e:	11ce178b          	srri	a5,t3,28
    e885d962:	8fb9                	xor	a5,a5,a4
    e885d964:	127e170b          	srri	a4,t3,39
    e885d968:	8fb9                	xor	a5,a5,a4
    e885d96a:	01c5e733          	or	a4,a1,t3
    e885d96e:	01c5f3b3          	and	t2,a1,t3
    e885d972:	01077733          	and	a4,a4,a6
    e885d976:	00776733          	or	a4,a4,t2
    e885d97a:	97ba                	add	a5,a5,a4
    e885d97c:	9796                	add	a5,a5,t0
    e885d97e:	9896                	add	a7,a7,t0
		 SHA512_RND( S[ 3 ], S[ 4 ], S[ 5 ], S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], S[ 2 ], i+5 );
    e885d980:	fe8f3703          	ld	a4,-24(t5)
    e885d984:	fe8eb283          	ld	t0,-24(t4)
    e885d988:	00fe73b3          	and	t2,t3,a5
    e885d98c:	9716                	add	a4,a4,t0
    e885d98e:	971a                	add	a4,a4,t1
    e885d990:	00c6c333          	xor	t1,a3,a2
    e885d994:	01137333          	and	t1,t1,a7
    e885d998:	00d34333          	xor	t1,t1,a3
    e885d99c:	1128928b          	srri	t0,a7,18
    e885d9a0:	971a                	add	a4,a4,t1
    e885d9a2:	10e8930b          	srri	t1,a7,14
    e885d9a6:	00534333          	xor	t1,t1,t0
    e885d9aa:	1298928b          	srri	t0,a7,41
    e885d9ae:	00534333          	xor	t1,t1,t0
    e885d9b2:	1227928b          	srri	t0,a5,34
    e885d9b6:	933a                	add	t1,t1,a4
    e885d9b8:	11c7970b          	srri	a4,a5,28
    e885d9bc:	00574733          	xor	a4,a4,t0
    e885d9c0:	1277928b          	srri	t0,a5,39
    e885d9c4:	00574733          	xor	a4,a4,t0
    e885d9c8:	00fe62b3          	or	t0,t3,a5
    e885d9cc:	00b2f2b3          	and	t0,t0,a1
    e885d9d0:	0072e2b3          	or	t0,t0,t2
    e885d9d4:	9716                	add	a4,a4,t0
    e885d9d6:	971a                	add	a4,a4,t1
    e885d9d8:	981a                	add	a6,a6,t1
		 SHA512_RND( S[ 2 ], S[ 3 ], S[ 4 ], S[ 5 ], S[ 6 ], S[ 7 ], S[ 0 ], S[ 1 ], i+6 );
    e885d9da:	ff0eb283          	ld	t0,-16(t4)
    e885d9de:	ff0f3303          	ld	t1,-16(t5)
    e885d9e2:	00e7f3b3          	and	t2,a5,a4
    e885d9e6:	9316                	add	t1,t1,t0
    e885d9e8:	969a                	add	a3,a3,t1
    e885d9ea:	01164333          	xor	t1,a2,a7
    e885d9ee:	01037333          	and	t1,t1,a6
    e885d9f2:	00c34333          	xor	t1,t1,a2
    e885d9f6:	1128128b          	srri	t0,a6,18
    e885d9fa:	969a                	add	a3,a3,t1
    e885d9fc:	10e8130b          	srri	t1,a6,14
    e885da00:	00534333          	xor	t1,t1,t0
    e885da04:	1298128b          	srri	t0,a6,41
    e885da08:	00534333          	xor	t1,t1,t0
    e885da0c:	1227128b          	srri	t0,a4,34
    e885da10:	9336                	add	t1,t1,a3
    e885da12:	11c7168b          	srri	a3,a4,28
    e885da16:	0056c6b3          	xor	a3,a3,t0
    e885da1a:	1277128b          	srri	t0,a4,39
    e885da1e:	0056c6b3          	xor	a3,a3,t0
    e885da22:	00e7e2b3          	or	t0,a5,a4
    e885da26:	01c2f2b3          	and	t0,t0,t3
    e885da2a:	0072e2b3          	or	t0,t0,t2
    e885da2e:	9696                	add	a3,a3,t0
    e885da30:	969a                	add	a3,a3,t1
    e885da32:	959a                	add	a1,a1,t1
		 SHA512_RND( S[ 1 ], S[ 2 ], S[ 3 ], S[ 4 ], S[ 5 ], S[ 6 ], S[ 7 ], S[ 0 ], i+7 );
    e885da34:	ff8eb283          	ld	t0,-8(t4)
    e885da38:	ff8f3303          	ld	t1,-8(t5)
    e885da3c:	00d773b3          	and	t2,a4,a3
    e885da40:	9316                	add	t1,t1,t0
    e885da42:	961a                	add	a2,a2,t1
    e885da44:	0108c333          	xor	t1,a7,a6
    e885da48:	00b37333          	and	t1,t1,a1
    e885da4c:	01134333          	xor	t1,t1,a7
    e885da50:	1125928b          	srri	t0,a1,18
    e885da54:	961a                	add	a2,a2,t1
    e885da56:	10e5930b          	srri	t1,a1,14
    e885da5a:	00534333          	xor	t1,t1,t0
    e885da5e:	1295928b          	srri	t0,a1,41
    e885da62:	00534333          	xor	t1,t1,t0
    e885da66:	1226928b          	srri	t0,a3,34
    e885da6a:	9332                	add	t1,t1,a2
    e885da6c:	11c6960b          	srri	a2,a3,28
    e885da70:	00564633          	xor	a2,a2,t0
    e885da74:	1276928b          	srri	t0,a3,39
    e885da78:	00564633          	xor	a2,a2,t0
    e885da7c:	00d762b3          	or	t0,a4,a3
    e885da80:	00f2f2b3          	and	t0,t0,a5
    e885da84:	0072e2b3          	or	t0,t0,t2
    e885da88:	9616                	add	a2,a2,t0
    e885da8a:	9e1a                	add	t3,t3,t1
    e885da8c:	961a                	add	a2,a2,t1
	for( i = 0; i < 80; i += 8 )
    e885da8e:	d3ff1de3          	bne	t5,t6,e885d7c8 <_SHA512_Compress+0x94>
    e885da92:	f8d1560b          	sdd	a2,a3,(sp),0,4
    e885da96:	faf1570b          	sdd	a4,a5,(sp),1,4
    e885da9a:	fc46                	sd	a7,56(sp)
    e885da9c:	f072                	sd	t3,32(sp)
    e885da9e:	f842                	sd	a6,48(sp)
    e885daa0:	f42e                	sd	a1,40(sp)
    e885daa2:	4785                	li	a5,1
	}
	
	// Feedback
	for( i = 0; i < 8; ++i )
    e885daa4:	46a5                	li	a3,9
	{
		ctx->state[ i ] += S[ i ];
    e885daa6:	06f1160b          	addsl	a2,sp,a5,3
    e885daaa:	66f5470b          	lrd	a4,a0,a5,3
    e885daae:	ff863603          	ld	a2,-8(a2) # ffffffffca62bff8 <__DRAM0_INF_BASE+0xfffffffeca63bff8>
    e885dab2:	9732                	add	a4,a4,a2
    e885dab4:	66f5570b          	srd	a4,a0,a5,3
	for( i = 0; i < 8; ++i )
    e885dab8:	0785                	addi	a5,a5,1
    e885daba:	fed796e3          	bne	a5,a3,e885daa6 <_SHA512_Compress+0x372>
	}
}
    e885dabe:	2c010113          	addi	sp,sp,704
    e885dac2:	8082                	ret

00000000e885dac4 <SHA1_Init_compat>:
	ctx->state[ 0 ] = UINT32_C( 0x67452301 );
    e885dac4:	00046797          	auipc	a5,0x46
    e885dac8:	bd478793          	addi	a5,a5,-1068 # e88a3698 <zerov6Addr+0xb0>
    e885dacc:	639c                	ld	a5,0(a5)
	ctx->length = 0;
    e885dace:	00053023          	sd	zero,0(a0)
	ctx->curlen = 0;
    e885dad2:	02053023          	sd	zero,32(a0)
	ctx->state[ 0 ] = UINT32_C( 0x67452301 );
    e885dad6:	e51c                	sd	a5,8(a0)
	ctx->state[ 2 ] = UINT32_C( 0x98badcfe );
    e885dad8:	00046797          	auipc	a5,0x46
    e885dadc:	bc878793          	addi	a5,a5,-1080 # e88a36a0 <zerov6Addr+0xb8>
    e885dae0:	639c                	ld	a5,0(a5)
    e885dae2:	e91c                	sd	a5,16(a0)
	ctx->state[ 4 ] = UINT32_C( 0xc3d2e1f0 );
    e885dae4:	c3d2e7b7          	lui	a5,0xc3d2e
    e885dae8:	1f07879b          	addiw	a5,a5,496
    e885daec:	cd1c                	sw	a5,24(a0)
}
    e885daee:	4501                	li	a0,0
    e885daf0:	8082                	ret

00000000e885daf2 <SHA1_Update_compat>:
{
    e885daf2:	7139                	addi	sp,sp,-64
    e885daf4:	f891540b          	sdd	s0,s1,(sp),0,4
    e885daf8:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e885dafc:	f85a                	sd	s6,48(sp)
    e885dafe:	fb31590b          	sdd	s2,s3,(sp),1,4
    e885db02:	fc06                	sd	ra,56(sp)
    e885db04:	842a                	mv	s0,a0
    e885db06:	89ae                	mv	s3,a1
    e885db08:	84b2                	mv	s1,a2
			n = Min( inLen, SHA1_BLOCK_SIZE - ctx->curlen );
    e885db0a:	04000a13          	li	s4,64
			memcpy( ctx->buf + ctx->curlen, src, n );
    e885db0e:	02850a93          	addi	s5,a0,40
		if( ( ctx->curlen == 0 ) && ( inLen >= SHA1_BLOCK_SIZE ) )
    e885db12:	03f00b13          	li	s6,63
	while( inLen > 0 )
    e885db16:	ec81                	bnez	s1,e885db2e <SHA1_Update_compat+0x3c>
}
    e885db18:	70e2                	ld	ra,56(sp)
    e885db1a:	f891440b          	ldd	s0,s1,(sp),0,4
    e885db1e:	7b42                	ld	s6,48(sp)
    e885db20:	fb31490b          	ldd	s2,s3,(sp),1,4
    e885db24:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e885db28:	4501                	li	a0,0
    e885db2a:	6121                	addi	sp,sp,64
    e885db2c:	8082                	ret
		if( ( ctx->curlen == 0 ) && ( inLen >= SHA1_BLOCK_SIZE ) )
    e885db2e:	7008                	ld	a0,32(s0)
    e885db30:	e105                	bnez	a0,e885db50 <SHA1_Update_compat+0x5e>
    e885db32:	009b7f63          	bgeu	s6,s1,e885db50 <SHA1_Update_compat+0x5e>
			_SHA1_Compress( ctx, src );
    e885db36:	85ce                	mv	a1,s3
    e885db38:	8522                	mv	a0,s0
    e885db3a:	89dff0ef          	jal	ra,e885d3d6 <_SHA1_Compress>
			src			+= SHA1_BLOCK_SIZE;
    e885db3e:	04098993          	addi	s3,s3,64
			ctx->length += ( SHA1_BLOCK_SIZE * 8 );
    e885db42:	601c                	ld	a5,0(s0)
			inLen		-= SHA1_BLOCK_SIZE;
    e885db44:	fc048493          	addi	s1,s1,-64 # ffffffff8f1bbfc0 <__DRAM0_INF_BASE+0xfffffffe8f1cbfc0>
			ctx->length += ( SHA1_BLOCK_SIZE * 8 );
    e885db48:	20078793          	addi	a5,a5,512 # ffffffffc3d2e200 <__DRAM0_INF_BASE+0xfffffffec3d3e200>
    e885db4c:	e01c                	sd	a5,0(s0)
			inLen		-= SHA1_BLOCK_SIZE;
    e885db4e:	b7e1                	j	e885db16 <SHA1_Update_compat+0x24>
			n = Min( inLen, SHA1_BLOCK_SIZE - ctx->curlen );
    e885db50:	40aa0933          	sub	s2,s4,a0
    e885db54:	0124b7b3          	sltu	a5,s1,s2
    e885db58:	42f4990b          	mvnez	s2,s1,a5
			memcpy( ctx->buf + ctx->curlen, src, n );
    e885db5c:	85ce                	mv	a1,s3
    e885db5e:	864a                	mv	a2,s2
    e885db60:	9556                	add	a0,a0,s5
    e885db62:	03f1e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			src			+= n;
    e885db66:	99ca                	add	s3,s3,s2
			ctx->curlen += n;
    e885db68:	701c                	ld	a5,32(s0)
			inLen		-= n;
    e885db6a:	412484b3          	sub	s1,s1,s2
			ctx->curlen += n;
    e885db6e:	97ca                	add	a5,a5,s2
    e885db70:	f01c                	sd	a5,32(s0)
			if( ctx->curlen == SHA1_BLOCK_SIZE )
    e885db72:	fb4792e3          	bne	a5,s4,e885db16 <SHA1_Update_compat+0x24>
				_SHA1_Compress( ctx, ctx->buf );
    e885db76:	85d6                	mv	a1,s5
    e885db78:	8522                	mv	a0,s0
    e885db7a:	85dff0ef          	jal	ra,e885d3d6 <_SHA1_Compress>
				ctx->curlen = 0;
    e885db7e:	02043023          	sd	zero,32(s0)
				ctx->length += ( SHA1_BLOCK_SIZE * 8 );
    e885db82:	601c                	ld	a5,0(s0)
    e885db84:	20078793          	addi	a5,a5,512
    e885db88:	e01c                	sd	a5,0(s0)
				ctx->curlen = 0;
    e885db8a:	b771                	j	e885db16 <SHA1_Update_compat+0x24>

00000000e885db8c <SHA1_Final_compat>:
{
    e885db8c:	1101                	addi	sp,sp,-32
    e885db8e:	e422                	sd	s0,8(sp)
    e885db90:	e826                	sd	s1,16(sp)
    e885db92:	ec06                	sd	ra,24(sp)
	ctx->length += ctx->curlen * 8;
    e885db94:	719c                	ld	a5,32(a1)
    e885db96:	6198                	ld	a4,0(a1)
	ctx->buf[ ctx->curlen++ ] = 0x80;
    e885db98:	f8000693          	li	a3,-128
{
    e885db9c:	84aa                	mv	s1,a0
	ctx->length += ctx->curlen * 8;
    e885db9e:	06f7170b          	addsl	a4,a4,a5,3
    e885dba2:	e198                	sd	a4,0(a1)
	ctx->buf[ ctx->curlen++ ] = 0x80;
    e885dba4:	00178713          	addi	a4,a5,1
    e885dba8:	f198                	sd	a4,32(a1)
    e885dbaa:	97ae                	add	a5,a5,a1
    e885dbac:	02d78423          	sb	a3,40(a5)
	if( ctx->curlen > 56 )
    e885dbb0:	03800793          	li	a5,56
{
    e885dbb4:	842e                	mv	s0,a1
	if( ctx->curlen > 56 )
    e885dbb6:	00e7fe63          	bgeu	a5,a4,e885dbd2 <SHA1_Final_compat+0x46>
		while( ctx->curlen < 64 ) ctx->buf[ ctx->curlen++ ] = 0;
    e885dbba:	03f00713          	li	a4,63
    e885dbbe:	701c                	ld	a5,32(s0)
    e885dbc0:	06f77a63          	bgeu	a4,a5,e885dc34 <SHA1_Final_compat+0xa8>
		_SHA1_Compress( ctx, ctx->buf );
    e885dbc4:	02840593          	addi	a1,s0,40
    e885dbc8:	8522                	mv	a0,s0
    e885dbca:	80dff0ef          	jal	ra,e885d3d6 <_SHA1_Compress>
		ctx->curlen = 0;
    e885dbce:	02043023          	sd	zero,32(s0)
	while( ctx->curlen < 56 ) ctx->buf[ ctx->curlen++ ] = 0;
    e885dbd2:	03700713          	li	a4,55
    e885dbd6:	701c                	ld	a5,32(s0)
    e885dbd8:	06f77563          	bgeu	a4,a5,e885dc42 <SHA1_Final_compat+0xb6>
	WriteBig64( ctx->buf + 56, ctx->length );
    e885dbdc:	601c                	ld	a5,0(s0)
	_SHA1_Compress( ctx, ctx->buf );
    e885dbde:	8522                	mv	a0,s0
    e885dbe0:	02840593          	addi	a1,s0,40
    e885dbe4:	8207978b          	rev	a5,a5
	WriteBig64( ctx->buf + 56, ctx->length );
    e885dbe8:	f03c                	sd	a5,96(s0)
	_SHA1_Compress( ctx, ctx->buf );
    e885dbea:	fecff0ef          	jal	ra,e885d3d6 <_SHA1_Compress>
	for( i = 0; i < 5; ++i )
    e885dbee:	00840793          	addi	a5,s0,8
    e885dbf2:	8526                	mv	a0,s1
    e885dbf4:	01c40693          	addi	a3,s0,28
		WriteBig32( outDigest + ( 4 * i ), ctx->state[ i ] );
    e885dbf8:	0037c703          	lbu	a4,3(a5)
    e885dbfc:	0511                	addi	a0,a0,4
    e885dbfe:	fee50e23          	sb	a4,-4(a0)
    e885dc02:	0027d703          	lhu	a4,2(a5)
    e885dc06:	fee50ea3          	sb	a4,-3(a0)
    e885dc0a:	4398                	lw	a4,0(a5)
    e885dc0c:	0087571b          	srliw	a4,a4,0x8
    e885dc10:	fee50f23          	sb	a4,-2(a0)
    e885dc14:	5847c70b          	lwia	a4,(a5),4,0
    e885dc18:	fee50fa3          	sb	a4,-1(a0)
	for( i = 0; i < 5; ++i )
    e885dc1c:	fcd79ee3          	bne	a5,a3,e885dbf8 <SHA1_Final_compat+0x6c>
    e885dc20:	06840793          	addi	a5,s0,104
    e885dc24:	02f41663          	bne	s0,a5,e885dc50 <SHA1_Final_compat+0xc4>
}
    e885dc28:	60e2                	ld	ra,24(sp)
    e885dc2a:	6422                	ld	s0,8(sp)
    e885dc2c:	64c2                	ld	s1,16(sp)
    e885dc2e:	4501                	li	a0,0
    e885dc30:	6105                	addi	sp,sp,32
    e885dc32:	8082                	ret
		while( ctx->curlen < 64 ) ctx->buf[ ctx->curlen++ ] = 0;
    e885dc34:	00178693          	addi	a3,a5,1
    e885dc38:	f014                	sd	a3,32(s0)
    e885dc3a:	97a2                	add	a5,a5,s0
    e885dc3c:	02078423          	sb	zero,40(a5)
    e885dc40:	bfbd                	j	e885dbbe <SHA1_Final_compat+0x32>
	while( ctx->curlen < 56 ) ctx->buf[ ctx->curlen++ ] = 0;
    e885dc42:	00178693          	addi	a3,a5,1
    e885dc46:	f014                	sd	a3,32(s0)
    e885dc48:	97a2                	add	a5,a5,s0
    e885dc4a:	02078423          	sb	zero,40(a5)
    e885dc4e:	b761                	j	e885dbd6 <SHA1_Final_compat+0x4a>
    e885dc50:	1814500b          	sbia	zero,(s0),1,0
    e885dc54:	bfc1                	j	e885dc24 <SHA1_Final_compat+0x98>

00000000e885dc56 <SHA1_compat>:
{
    e885dc56:	7135                	addi	sp,sp,-160
    e885dc58:	e526                	sd	s1,136(sp)
    e885dc5a:	84aa                	mv	s1,a0
	SHA1_Init_compat( &ctx );
    e885dc5c:	0828                	addi	a0,sp,24
{
    e885dc5e:	ed06                	sd	ra,152(sp)
    e885dc60:	e922                	sd	s0,144(sp)
    e885dc62:	e42e                	sd	a1,8(sp)
    e885dc64:	8432                	mv	s0,a2
	SHA1_Init_compat( &ctx );
    e885dc66:	e5fff0ef          	jal	ra,e885dac4 <SHA1_Init_compat>
	SHA1_Update_compat( &ctx, inData, inLen );
    e885dc6a:	65a2                	ld	a1,8(sp)
    e885dc6c:	0828                	addi	a0,sp,24
    e885dc6e:	862e                	mv	a2,a1
    e885dc70:	85a6                	mv	a1,s1
    e885dc72:	e81ff0ef          	jal	ra,e885daf2 <SHA1_Update_compat>
	SHA1_Final_compat( outDigest, &ctx );
    e885dc76:	082c                	addi	a1,sp,24
    e885dc78:	8522                	mv	a0,s0
    e885dc7a:	f13ff0ef          	jal	ra,e885db8c <SHA1_Final_compat>
}
    e885dc7e:	64aa                	ld	s1,136(sp)
    e885dc80:	8522                	mv	a0,s0
    e885dc82:	60ea                	ld	ra,152(sp)
    e885dc84:	644a                	ld	s0,144(sp)
    e885dc86:	610d                	addi	sp,sp,160
    e885dc88:	8082                	ret

00000000e885dc8a <SHA512_Init_compat>:
	ctx->state[ 0 ] = UINT64_C( 0x6a09e667f3bcc908 );
    e885dc8a:	00066797          	auipc	a5,0x66
    e885dc8e:	a1e78793          	addi	a5,a5,-1506 # e88c36a8 <K+0x280>
    e885dc92:	639c                	ld	a5,0(a5)
	ctx->length = 0;
    e885dc94:	00053023          	sd	zero,0(a0)
	ctx->curlen = 0;
    e885dc98:	04053423          	sd	zero,72(a0)
	ctx->state[ 0 ] = UINT64_C( 0x6a09e667f3bcc908 );
    e885dc9c:	e51c                	sd	a5,8(a0)
	ctx->state[ 1 ] = UINT64_C( 0xbb67ae8584caa73b );
    e885dc9e:	00066797          	auipc	a5,0x66
    e885dca2:	a1278793          	addi	a5,a5,-1518 # e88c36b0 <K+0x288>
    e885dca6:	639c                	ld	a5,0(a5)
    e885dca8:	e91c                	sd	a5,16(a0)
	ctx->state[ 2 ] = UINT64_C( 0x3c6ef372fe94f82b );
    e885dcaa:	00066797          	auipc	a5,0x66
    e885dcae:	a0e78793          	addi	a5,a5,-1522 # e88c36b8 <K+0x290>
    e885dcb2:	639c                	ld	a5,0(a5)
    e885dcb4:	ed1c                	sd	a5,24(a0)
	ctx->state[ 3 ] = UINT64_C( 0xa54ff53a5f1d36f1 );
    e885dcb6:	00066797          	auipc	a5,0x66
    e885dcba:	a0a78793          	addi	a5,a5,-1526 # e88c36c0 <K+0x298>
    e885dcbe:	639c                	ld	a5,0(a5)
    e885dcc0:	f11c                	sd	a5,32(a0)
	ctx->state[ 4 ] = UINT64_C( 0x510e527fade682d1 );
    e885dcc2:	00066797          	auipc	a5,0x66
    e885dcc6:	a0678793          	addi	a5,a5,-1530 # e88c36c8 <K+0x2a0>
    e885dcca:	639c                	ld	a5,0(a5)
    e885dccc:	f51c                	sd	a5,40(a0)
	ctx->state[ 5 ] = UINT64_C( 0x9b05688c2b3e6c1f );
    e885dcce:	00066797          	auipc	a5,0x66
    e885dcd2:	a0278793          	addi	a5,a5,-1534 # e88c36d0 <K+0x2a8>
    e885dcd6:	639c                	ld	a5,0(a5)
    e885dcd8:	f91c                	sd	a5,48(a0)
	ctx->state[ 6 ] = UINT64_C( 0x1f83d9abfb41bd6b );
    e885dcda:	00066797          	auipc	a5,0x66
    e885dcde:	9fe78793          	addi	a5,a5,-1538 # e88c36d8 <K+0x2b0>
    e885dce2:	639c                	ld	a5,0(a5)
    e885dce4:	fd1c                	sd	a5,56(a0)
	ctx->state[ 7 ] = UINT64_C( 0x5be0cd19137e2179 );
    e885dce6:	00066797          	auipc	a5,0x66
    e885dcea:	9fa78793          	addi	a5,a5,-1542 # e88c36e0 <K+0x2b8>
    e885dcee:	639c                	ld	a5,0(a5)
    e885dcf0:	e13c                	sd	a5,64(a0)
}
    e885dcf2:	4501                	li	a0,0
    e885dcf4:	8082                	ret

00000000e885dcf6 <SHA512_Update_compat>:
{
    e885dcf6:	7139                	addi	sp,sp,-64
    e885dcf8:	f891540b          	sdd	s0,s1,(sp),0,4
    e885dcfc:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e885dd00:	f85a                	sd	s6,48(sp)
    e885dd02:	fb31590b          	sdd	s2,s3,(sp),1,4
    e885dd06:	fc06                	sd	ra,56(sp)
    e885dd08:	842a                	mv	s0,a0
    e885dd0a:	89ae                	mv	s3,a1
    e885dd0c:	84b2                	mv	s1,a2
			n = Min( inLen, SHA512_BLOCK_SIZE - ctx->curlen );
    e885dd0e:	08000a13          	li	s4,128
			memcpy( ctx->buf + ctx->curlen, src, n );
    e885dd12:	05050a93          	addi	s5,a0,80
		if( ( ctx->curlen == 0 ) && ( inLen >= SHA512_BLOCK_SIZE ) )
    e885dd16:	07f00b13          	li	s6,127
	while( inLen > 0 )
    e885dd1a:	ec81                	bnez	s1,e885dd32 <SHA512_Update_compat+0x3c>
}
    e885dd1c:	70e2                	ld	ra,56(sp)
    e885dd1e:	f891440b          	ldd	s0,s1,(sp),0,4
    e885dd22:	7b42                	ld	s6,48(sp)
    e885dd24:	fb31490b          	ldd	s2,s3,(sp),1,4
    e885dd28:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e885dd2c:	4501                	li	a0,0
    e885dd2e:	6121                	addi	sp,sp,64
    e885dd30:	8082                	ret
		if( ( ctx->curlen == 0 ) && ( inLen >= SHA512_BLOCK_SIZE ) )
    e885dd32:	6428                	ld	a0,72(s0)
    e885dd34:	e105                	bnez	a0,e885dd54 <SHA512_Update_compat+0x5e>
    e885dd36:	009b7f63          	bgeu	s6,s1,e885dd54 <SHA512_Update_compat+0x5e>
			_SHA512_Compress( ctx, src );
    e885dd3a:	85ce                	mv	a1,s3
    e885dd3c:	8522                	mv	a0,s0
    e885dd3e:	9f7ff0ef          	jal	ra,e885d734 <_SHA512_Compress>
			src			+= SHA512_BLOCK_SIZE;
    e885dd42:	08098993          	addi	s3,s3,128
			ctx->length += ( SHA512_BLOCK_SIZE * 8 );
    e885dd46:	601c                	ld	a5,0(s0)
			inLen		-= SHA512_BLOCK_SIZE;
    e885dd48:	f8048493          	addi	s1,s1,-128
			ctx->length += ( SHA512_BLOCK_SIZE * 8 );
    e885dd4c:	40078793          	addi	a5,a5,1024
    e885dd50:	e01c                	sd	a5,0(s0)
			inLen		-= SHA512_BLOCK_SIZE;
    e885dd52:	b7e1                	j	e885dd1a <SHA512_Update_compat+0x24>
			n = Min( inLen, SHA512_BLOCK_SIZE - ctx->curlen );
    e885dd54:	40aa0933          	sub	s2,s4,a0
    e885dd58:	0124b7b3          	sltu	a5,s1,s2
    e885dd5c:	42f4990b          	mvnez	s2,s1,a5
			memcpy( ctx->buf + ctx->curlen, src, n );
    e885dd60:	85ce                	mv	a1,s3
    e885dd62:	864a                	mv	a2,s2
    e885dd64:	9556                	add	a0,a0,s5
    e885dd66:	63a1e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			src			+= n;
    e885dd6a:	99ca                	add	s3,s3,s2
			ctx->curlen += n;
    e885dd6c:	643c                	ld	a5,72(s0)
			inLen		-= n;
    e885dd6e:	412484b3          	sub	s1,s1,s2
			ctx->curlen += n;
    e885dd72:	97ca                	add	a5,a5,s2
    e885dd74:	e43c                	sd	a5,72(s0)
			if( ctx->curlen == SHA512_BLOCK_SIZE )
    e885dd76:	fb4792e3          	bne	a5,s4,e885dd1a <SHA512_Update_compat+0x24>
				_SHA512_Compress( ctx, ctx->buf );
    e885dd7a:	85d6                	mv	a1,s5
    e885dd7c:	8522                	mv	a0,s0
    e885dd7e:	9b7ff0ef          	jal	ra,e885d734 <_SHA512_Compress>
				ctx->curlen = 0;
    e885dd82:	04043423          	sd	zero,72(s0)
				ctx->length += ( SHA512_BLOCK_SIZE * 8 );
    e885dd86:	601c                	ld	a5,0(s0)
    e885dd88:	40078793          	addi	a5,a5,1024
    e885dd8c:	e01c                	sd	a5,0(s0)
				ctx->curlen = 0;
    e885dd8e:	b771                	j	e885dd1a <SHA512_Update_compat+0x24>

00000000e885dd90 <SHA512_Final_compat>:
{
    e885dd90:	1101                	addi	sp,sp,-32
    e885dd92:	e422                	sd	s0,8(sp)
    e885dd94:	e826                	sd	s1,16(sp)
    e885dd96:	ec06                	sd	ra,24(sp)
	ctx->length += ( ctx->curlen * UINT64_C( 8 ) );
    e885dd98:	65bc                	ld	a5,72(a1)
    e885dd9a:	6198                	ld	a4,0(a1)
	ctx->buf[ ctx->curlen++ ] = 0x80;
    e885dd9c:	f8000693          	li	a3,-128
{
    e885dda0:	84aa                	mv	s1,a0
	ctx->length += ( ctx->curlen * UINT64_C( 8 ) );
    e885dda2:	06f7170b          	addsl	a4,a4,a5,3
    e885dda6:	e198                	sd	a4,0(a1)
	ctx->buf[ ctx->curlen++ ] = 0x80;
    e885dda8:	00178713          	addi	a4,a5,1
    e885ddac:	e5b8                	sd	a4,72(a1)
    e885ddae:	97ae                	add	a5,a5,a1
    e885ddb0:	04d78823          	sb	a3,80(a5)
	if( ctx->curlen > 112 )
    e885ddb4:	07000793          	li	a5,112
{
    e885ddb8:	842e                	mv	s0,a1
	if( ctx->curlen > 112 )
    e885ddba:	00e7fe63          	bgeu	a5,a4,e885ddd6 <SHA512_Final_compat+0x46>
		while( ctx->curlen < 128 ) ctx->buf[ ctx->curlen++ ] = 0;
    e885ddbe:	07f00713          	li	a4,127
    e885ddc2:	643c                	ld	a5,72(s0)
    e885ddc4:	08f77f63          	bgeu	a4,a5,e885de62 <SHA512_Final_compat+0xd2>
		_SHA512_Compress( ctx, ctx->buf );
    e885ddc8:	05040593          	addi	a1,s0,80
    e885ddcc:	8522                	mv	a0,s0
    e885ddce:	967ff0ef          	jal	ra,e885d734 <_SHA512_Compress>
		ctx->curlen = 0;
    e885ddd2:	04043423          	sd	zero,72(s0)
	while( ctx->curlen < 120 ) ctx->buf[ ctx->curlen++ ] = 0;
    e885ddd6:	07700713          	li	a4,119
    e885ddda:	643c                	ld	a5,72(s0)
    e885dddc:	08f77a63          	bgeu	a4,a5,e885de70 <SHA512_Final_compat+0xe0>
	WriteBig64( ctx->buf + 120, ctx->length );
    e885dde0:	601c                	ld	a5,0(s0)
	_SHA512_Compress( ctx, ctx->buf );
    e885dde2:	8522                	mv	a0,s0
    e885dde4:	05040593          	addi	a1,s0,80
    e885dde8:	8207978b          	rev	a5,a5
	WriteBig64( ctx->buf + 120, ctx->length );
    e885ddec:	e47c                	sd	a5,200(s0)
	_SHA512_Compress( ctx, ctx->buf );
    e885ddee:	947ff0ef          	jal	ra,e885d734 <_SHA512_Compress>
	for( i = 0; i < 8; ++i )
    e885ddf2:	8526                	mv	a0,s1
	_SHA512_Compress( ctx, ctx->buf );
    e885ddf4:	4785                	li	a5,1
	for( i = 0; i < 8; ++i )
    e885ddf6:	46a5                	li	a3,9
		WriteBig64( outDigest + ( 8 * i ), ctx->state[ i ] );
    e885ddf8:	66f4470b          	lrd	a4,s0,a5,3
    e885ddfc:	0521                	addi	a0,a0,8
    e885ddfe:	9361                	srli	a4,a4,0x38
    e885de00:	fee50c23          	sb	a4,-8(a0)
    e885de04:	66f4470b          	lrd	a4,s0,a5,3
    e885de08:	9341                	srli	a4,a4,0x30
    e885de0a:	fee50ca3          	sb	a4,-7(a0)
    e885de0e:	66f4470b          	lrd	a4,s0,a5,3
    e885de12:	9321                	srli	a4,a4,0x28
    e885de14:	fee50d23          	sb	a4,-6(a0)
    e885de18:	66f4470b          	lrd	a4,s0,a5,3
    e885de1c:	9301                	srli	a4,a4,0x20
    e885de1e:	fee50da3          	sb	a4,-5(a0)
    e885de22:	66f4470b          	lrd	a4,s0,a5,3
    e885de26:	8361                	srli	a4,a4,0x18
    e885de28:	fee50e23          	sb	a4,-4(a0)
    e885de2c:	66f4470b          	lrd	a4,s0,a5,3
    e885de30:	8341                	srli	a4,a4,0x10
    e885de32:	fee50ea3          	sb	a4,-3(a0)
    e885de36:	66f4470b          	lrd	a4,s0,a5,3
    e885de3a:	8321                	srli	a4,a4,0x8
    e885de3c:	fee50f23          	sb	a4,-2(a0)
    e885de40:	66f4470b          	lrd	a4,s0,a5,3
    e885de44:	0785                	addi	a5,a5,1
    e885de46:	fee50fa3          	sb	a4,-1(a0)
	for( i = 0; i < 8; ++i )
    e885de4a:	fad797e3          	bne	a5,a3,e885ddf8 <SHA512_Final_compat+0x68>
    e885de4e:	0d040793          	addi	a5,s0,208
    e885de52:	02f41663          	bne	s0,a5,e885de7e <SHA512_Final_compat+0xee>
}
    e885de56:	60e2                	ld	ra,24(sp)
    e885de58:	6422                	ld	s0,8(sp)
    e885de5a:	64c2                	ld	s1,16(sp)
    e885de5c:	4501                	li	a0,0
    e885de5e:	6105                	addi	sp,sp,32
    e885de60:	8082                	ret
		while( ctx->curlen < 128 ) ctx->buf[ ctx->curlen++ ] = 0;
    e885de62:	00178693          	addi	a3,a5,1
    e885de66:	e434                	sd	a3,72(s0)
    e885de68:	97a2                	add	a5,a5,s0
    e885de6a:	04078823          	sb	zero,80(a5)
    e885de6e:	bf91                	j	e885ddc2 <SHA512_Final_compat+0x32>
	while( ctx->curlen < 120 ) ctx->buf[ ctx->curlen++ ] = 0;
    e885de70:	00178693          	addi	a3,a5,1
    e885de74:	e434                	sd	a3,72(s0)
    e885de76:	97a2                	add	a5,a5,s0
    e885de78:	04078823          	sb	zero,80(a5)
    e885de7c:	bfb9                	j	e885ddda <SHA512_Final_compat+0x4a>
    e885de7e:	1814500b          	sbia	zero,(s0),1,0
    e885de82:	bfc1                	j	e885de52 <SHA512_Final_compat+0xc2>

00000000e885de84 <SHA512_compat>:
{
    e885de84:	7111                	addi	sp,sp,-256
    e885de86:	f5a6                	sd	s1,232(sp)
    e885de88:	84aa                	mv	s1,a0
	SHA512_Init_compat( &ctx );
    e885de8a:	0808                	addi	a0,sp,16
{
    e885de8c:	fd86                	sd	ra,248(sp)
    e885de8e:	f9a2                	sd	s0,240(sp)
    e885de90:	e42e                	sd	a1,8(sp)
    e885de92:	8432                	mv	s0,a2
	SHA512_Init_compat( &ctx );
    e885de94:	df7ff0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
	SHA512_Update_compat( &ctx, inData, inLen );
    e885de98:	65a2                	ld	a1,8(sp)
    e885de9a:	0808                	addi	a0,sp,16
    e885de9c:	862e                	mv	a2,a1
    e885de9e:	85a6                	mv	a1,s1
    e885dea0:	e57ff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
	SHA512_Final_compat( outDigest, &ctx );
    e885dea4:	080c                	addi	a1,sp,16
    e885dea6:	8522                	mv	a0,s0
    e885dea8:	ee9ff0ef          	jal	ra,e885dd90 <SHA512_Final_compat>
}
    e885deac:	74ae                	ld	s1,232(sp)
    e885deae:	8522                	mv	a0,s0
    e885deb0:	70ee                	ld	ra,248(sp)
    e885deb2:	744e                	ld	s0,240(sp)
    e885deb4:	6111                	addi	sp,sp,256
    e885deb6:	8082                	ret

00000000e885deb8 <HMAC_SHA512_Init>:
//===========================================================================================================================
//	HMAC_SHA512_Init
//===========================================================================================================================

void	HMAC_SHA512_Init( HMAC_SHA512_CTX *ctx, const void *inKeyPtr, size_t inKeyLen )
{
    e885deb8:	7115                	addi	sp,sp,-224
    e885deba:	e9a2                	sd	s0,208(sp)
    e885debc:	ed86                	sd	ra,216(sp)
	uint8_t				ipad[ SHA512_BLOCK_SIZE ];
	uint8_t				tempKey[ SHA512_DIGEST_LENGTH ];
	size_t				i;
	uint8_t				b;
	
	if( inKeyLen > SHA512_BLOCK_SIZE )
    e885debe:	08000793          	li	a5,128
{
    e885dec2:	842a                	mv	s0,a0
	if( inKeyLen > SHA512_BLOCK_SIZE )
    e885dec4:	02c7f263          	bgeu	a5,a2,e885dee8 <HMAC_SHA512_Init+0x30>
    e885dec8:	e432                	sd	a2,8(sp)
    e885deca:	e02e                	sd	a1,0(sp)
	{
		SHA512_Init( &ctx->shaCtx );
    e885decc:	dbfff0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
		SHA512_Update( &ctx->shaCtx, inKeyPtr, inKeyLen );
    e885ded0:	6622                	ld	a2,8(sp)
    e885ded2:	6582                	ld	a1,0(sp)
    e885ded4:	8522                	mv	a0,s0
    e885ded6:	e21ff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
		SHA512_Final( tempKey, &ctx->shaCtx );
    e885deda:	85a2                	mv	a1,s0
    e885dedc:	0808                	addi	a0,sp,16
    e885dede:	eb3ff0ef          	jal	ra,e885dd90 <SHA512_Final_compat>
		keyPtr   = tempKey;
    e885dee2:	080c                	addi	a1,sp,16
		inKeyLen = sizeof( tempKey );
    e885dee4:	04000613          	li	a2,64
	}
	for( i = 0; i < inKeyLen; ++i )
    e885dee8:	4781                	li	a5,0
	{
		b = keyPtr[ i ];
		ipad[ i ]		= b ^ 0x36;
		ctx->opad[ i ]	= b ^ 0x5C;
    e885deea:	0d040693          	addi	a3,s0,208
	for( i = 0; i < inKeyLen; ++i )
    e885deee:	02f61963          	bne	a2,a5,e885df20 <HMAC_SHA512_Init+0x68>
	}
	for( ; i < SHA512_BLOCK_SIZE; ++i )
    e885def2:	08000793          	li	a5,128
	{
		ipad[ i ]		= 0x36;
    e885def6:	03600713          	li	a4,54
		ctx->opad[ i ]	= 0x5C;
    e885defa:	0d040693          	addi	a3,s0,208
    e885defe:	05c00593          	li	a1,92
	for( ; i < SHA512_BLOCK_SIZE; ++i )
    e885df02:	02f61d63          	bne	a2,a5,e885df3c <HMAC_SHA512_Init+0x84>
	}
	SHA512_Init( &ctx->shaCtx );
    e885df06:	8522                	mv	a0,s0
    e885df08:	d83ff0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
	SHA512_Update( &ctx->shaCtx, ipad, sizeof( ipad ) );
    e885df0c:	088c                	addi	a1,sp,80
    e885df0e:	8522                	mv	a0,s0
    e885df10:	08000613          	li	a2,128
    e885df14:	de3ff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
}
    e885df18:	644e                	ld	s0,208(sp)
    e885df1a:	60ee                	ld	ra,216(sp)
    e885df1c:	612d                	addi	sp,sp,224
    e885df1e:	8082                	ret
		b = keyPtr[ i ];
    e885df20:	80f5c70b          	lrbu	a4,a1,a5,0
		ipad[ i ]		= b ^ 0x36;
    e885df24:	05010813          	addi	a6,sp,80
    e885df28:	03674513          	xori	a0,a4,54
		ctx->opad[ i ]	= b ^ 0x5C;
    e885df2c:	05c74713          	xori	a4,a4,92
		ipad[ i ]		= b ^ 0x36;
    e885df30:	00f8550b          	srb	a0,a6,a5,0
		ctx->opad[ i ]	= b ^ 0x5C;
    e885df34:	00f6d70b          	srb	a4,a3,a5,0
	for( i = 0; i < inKeyLen; ++i )
    e885df38:	0785                	addi	a5,a5,1
    e885df3a:	bf55                	j	e885deee <HMAC_SHA512_Init+0x36>
		ipad[ i ]		= 0x36;
    e885df3c:	0888                	addi	a0,sp,80
    e885df3e:	00c5570b          	srb	a4,a0,a2,0
		ctx->opad[ i ]	= 0x5C;
    e885df42:	00c6d58b          	srb	a1,a3,a2,0
	for( ; i < SHA512_BLOCK_SIZE; ++i )
    e885df46:	0605                	addi	a2,a2,1
    e885df48:	bf6d                	j	e885df02 <HMAC_SHA512_Init+0x4a>

00000000e885df4a <HMAC_SHA512_Final>:
//===========================================================================================================================
//	HMAC_SHA512_Final
//===========================================================================================================================

void	HMAC_SHA512_Final( HMAC_SHA512_CTX *ctx, uint8_t *outDigest )
{
    e885df4a:	1101                	addi	sp,sp,-32
    e885df4c:	e826                	sd	s1,16(sp)
    e885df4e:	84ae                	mv	s1,a1
    e885df50:	e422                	sd	s0,8(sp)
	SHA512_Final( outDigest, &ctx->shaCtx );
    e885df52:	85aa                	mv	a1,a0
{
    e885df54:	842a                	mv	s0,a0
	SHA512_Final( outDigest, &ctx->shaCtx );
    e885df56:	8526                	mv	a0,s1
{
    e885df58:	ec06                	sd	ra,24(sp)
	SHA512_Final( outDigest, &ctx->shaCtx );
    e885df5a:	e37ff0ef          	jal	ra,e885dd90 <SHA512_Final_compat>
	SHA512_Init( &ctx->shaCtx );
    e885df5e:	8522                	mv	a0,s0
    e885df60:	d2bff0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
	SHA512_Update( &ctx->shaCtx, ctx->opad, sizeof( ctx->opad ) );
    e885df64:	0d040593          	addi	a1,s0,208
    e885df68:	08000613          	li	a2,128
    e885df6c:	8522                	mv	a0,s0
    e885df6e:	d89ff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
	SHA512_Update( &ctx->shaCtx, outDigest, SHA512_DIGEST_LENGTH );
    e885df72:	85a6                	mv	a1,s1
    e885df74:	8522                	mv	a0,s0
    e885df76:	04000613          	li	a2,64
    e885df7a:	d7dff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
	SHA512_Final( outDigest, &ctx->shaCtx );
    e885df7e:	85a2                	mv	a1,s0
}
    e885df80:	6422                	ld	s0,8(sp)
    e885df82:	60e2                	ld	ra,24(sp)
	SHA512_Final( outDigest, &ctx->shaCtx );
    e885df84:	8526                	mv	a0,s1
}
    e885df86:	64c2                	ld	s1,16(sp)
    e885df88:	6105                	addi	sp,sp,32
	SHA512_Final( outDigest, &ctx->shaCtx );
    e885df8a:	e07ff06f          	j	e885dd90 <SHA512_Final_compat>

00000000e885df8e <HMAC_SHA512>:
//===========================================================================================================================
//	HMAC_SHA512
//===========================================================================================================================

void	HMAC_SHA512( const void *inKeyPtr, size_t inKeyLen, const void *inMsgPtr, size_t inMsgLen, uint8_t *outDigest )
{
    e885df8e:	7149                	addi	sp,sp,-368
    e885df90:	f2a2                	sd	s0,352(sp)
    e885df92:	8432                	mv	s0,a2
	HMAC_SHA512_CTX		ctx;
	
	HMAC_SHA512_Init( &ctx, inKeyPtr, inKeyLen );
    e885df94:	862e                	mv	a2,a1
    e885df96:	85aa                	mv	a1,a0
    e885df98:	0808                	addi	a0,sp,16
{
    e885df9a:	f686                	sd	ra,360(sp)
    e885df9c:	e03a                	sd	a4,0(sp)
    e885df9e:	e436                	sd	a3,8(sp)
	HMAC_SHA512_Init( &ctx, inKeyPtr, inKeyLen );
    e885dfa0:	f19ff0ef          	jal	ra,e885deb8 <HMAC_SHA512_Init>
	SHA512_Update( &ctx->shaCtx, inPtr, inLen );
    e885dfa4:	66a2                	ld	a3,8(sp)
    e885dfa6:	85a2                	mv	a1,s0
    e885dfa8:	0808                	addi	a0,sp,16
    e885dfaa:	8636                	mv	a2,a3
    e885dfac:	d4bff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
	HMAC_SHA512_Update( &ctx, inMsgPtr, inMsgLen );
	HMAC_SHA512_Final( &ctx, outDigest );
    e885dfb0:	6702                	ld	a4,0(sp)
    e885dfb2:	0808                	addi	a0,sp,16
    e885dfb4:	85ba                	mv	a1,a4
    e885dfb6:	f95ff0ef          	jal	ra,e885df4a <HMAC_SHA512_Final>
}
    e885dfba:	7416                	ld	s0,352(sp)
    e885dfbc:	70b6                	ld	ra,360(sp)
    e885dfbe:	6175                	addi	sp,sp,368
    e885dfc0:	8082                	ret

00000000e885dfc2 <HKDF_SHA512_compat>:
	HKDF_SHA512_compat( 
		const void *	inInputKeyPtr,	size_t inInputKeyLen, 
		const void *	inSaltPtr,		size_t inSaltLen, 
		const void *	inInfoPtr,		size_t inInfoLen, 
		size_t			inOutputLen, 	uint8_t *outKey )
{
    e885dfc2:	d9010113          	addi	sp,sp,-624
    e885dfc6:	26813023          	sd	s0,608(sp)
    e885dfca:	24913c23          	sd	s1,600(sp)
    e885dfce:	25313423          	sd	s3,584(sp)
    e885dfd2:	23513c23          	sd	s5,568(sp)
    e885dfd6:	23613823          	sd	s6,560(sp)
    e885dfda:	23713423          	sd	s7,552(sp)
    e885dfde:	26113423          	sd	ra,616(sp)
    e885dfe2:	25213823          	sd	s2,592(sp)
    e885dfe6:	25413023          	sd	s4,576(sp)
    e885dfea:	842a                	mv	s0,a0
    e885dfec:	84ae                	mv	s1,a1
    e885dfee:	8aba                	mv	s5,a4
    e885dff0:	85b6                	mv	a1,a3
    e885dff2:	8b3e                	mv	s6,a5
    e885dff4:	89c2                	mv	s3,a6
    e885dff6:	8bc6                	mv	s7,a7
    e885dff8:	8532                	mv	a0,a2
	uint8_t				T[ SHA512_DIGEST_LENGTH ];
	uint8_t				b;
	
	// Extract phase.
	
	if( inSaltLen == 0 )
    e885dffa:	ea89                	bnez	a3,e885e00c <HKDF_SHA512_compat+0x4a>
	{
		memset( nullSalt, 0, sizeof( nullSalt ) );
    e885dffc:	0808                	addi	a0,sp,16
    e885dffe:	04000613          	li	a2,64
    e885e002:	3921e0ef          	jal	ra,e887c394 <eLIBs_memset>
		inSaltPtr = nullSalt;
		inSaltLen = sizeof( nullSalt );
    e885e006:	04000593          	li	a1,64
		inSaltPtr = nullSalt;
    e885e00a:	0808                	addi	a0,sp,16
	}
	HMAC_SHA512( inSaltPtr, inSaltLen, inInputKeyPtr, inInputKeyLen, key );
    e885e00c:	86a6                	mv	a3,s1
    e885e00e:	8622                	mv	a2,s0
    e885e010:	0898                	addi	a4,sp,80
    e885e012:	f7dff0ef          	jal	ra,e885df8e <HMAC_SHA512>
	
	// Expand phase.
	
	n = ( inOutputLen / SHA512_DIGEST_LENGTH ) + ( ( inOutputLen % SHA512_DIGEST_LENGTH ) ? 1 : 0 );
    e885e016:	03f9f413          	andi	s0,s3,63
    e885e01a:	00803433          	snez	s0,s0
    e885e01e:	0069d793          	srli	a5,s3,0x6
    e885e022:	943e                	add	s0,s0,a5
	check( n <= 255 );
	Tlen = 0;
    e885e024:	4a01                	li	s4,0
	offset = 0;
    e885e026:	4901                	li	s2,0
	for( i = 1; i <= n; ++i )
    e885e028:	4485                	li	s1,1
    e885e02a:	02947763          	bgeu	s0,s1,e885e058 <HKDF_SHA512_compat+0x96>
		HMAC_SHA512_Final( &hmacCtx, T );
		memcpy( &outKey[ offset ], T, ( i != n ) ? sizeof( T ) : ( inOutputLen - offset ) );
		offset += sizeof( T );
		Tlen = sizeof( T );
	}
}
    e885e02e:	26813083          	ld	ra,616(sp)
    e885e032:	26013403          	ld	s0,608(sp)
    e885e036:	25813483          	ld	s1,600(sp)
    e885e03a:	25013903          	ld	s2,592(sp)
    e885e03e:	24813983          	ld	s3,584(sp)
    e885e042:	24013a03          	ld	s4,576(sp)
    e885e046:	23813a83          	ld	s5,568(sp)
    e885e04a:	23013b03          	ld	s6,560(sp)
    e885e04e:	22813b83          	ld	s7,552(sp)
    e885e052:	27010113          	addi	sp,sp,624
    e885e056:	8082                	ret
		HMAC_SHA512_Init( &hmacCtx, key, SHA512_DIGEST_LENGTH );
    e885e058:	04000613          	li	a2,64
    e885e05c:	088c                	addi	a1,sp,80
    e885e05e:	0988                	addi	a0,sp,208
    e885e060:	e59ff0ef          	jal	ra,e885deb8 <HMAC_SHA512_Init>
	SHA512_Update( &ctx->shaCtx, inPtr, inLen );
    e885e064:	8652                	mv	a2,s4
    e885e066:	090c                	addi	a1,sp,144
    e885e068:	0988                	addi	a0,sp,208
    e885e06a:	c8dff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
    e885e06e:	865a                	mv	a2,s6
    e885e070:	85d6                	mv	a1,s5
    e885e072:	0988                	addi	a0,sp,208
    e885e074:	c83ff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
		b = (uint8_t) i;
    e885e078:	009107a3          	sb	s1,15(sp)
	SHA512_Update( &ctx->shaCtx, inPtr, inLen );
    e885e07c:	4605                	li	a2,1
    e885e07e:	00f10593          	addi	a1,sp,15
    e885e082:	0988                	addi	a0,sp,208
    e885e084:	c73ff0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
		HMAC_SHA512_Final( &hmacCtx, T );
    e885e088:	0988                	addi	a0,sp,208
    e885e08a:	090c                	addi	a1,sp,144
    e885e08c:	ebfff0ef          	jal	ra,e885df4a <HMAC_SHA512_Final>
		memcpy( &outKey[ offset ], T, ( i != n ) ? sizeof( T ) : ( inOutputLen - offset ) );
    e885e090:	012b8533          	add	a0,s7,s2
    e885e094:	04000613          	li	a2,64
    e885e098:	00849463          	bne	s1,s0,e885e0a0 <HKDF_SHA512_compat+0xde>
    e885e09c:	41298633          	sub	a2,s3,s2
    e885e0a0:	090c                	addi	a1,sp,144
    e885e0a2:	2fe1e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		offset += sizeof( T );
    e885e0a6:	04090913          	addi	s2,s2,64
	for( i = 1; i <= n; ++i )
    e885e0aa:	0485                	addi	s1,s1,1
		Tlen = sizeof( T );
    e885e0ac:	04000a13          	li	s4,64
    e885e0b0:	bfad                	j	e885e02a <HKDF_SHA512_compat+0x68>

00000000e885e0b2 <SRPCreate_libsrp>:
//===========================================================================================================================
//	SRPCreate_libsrp
//===========================================================================================================================

OSStatus	SRPCreate_libsrp( SRPRef_libsrp *outRef )
{
    e885e0b2:	1101                	addi	sp,sp,-32
    e885e0b4:	e826                	sd	s1,16(sp)
    e885e0b6:	84aa                	mv	s1,a0
    p = malloc(len);
    e885e0b8:	4521                	li	a0,8
    e885e0ba:	e422                	sd	s0,8(sp)
    e885e0bc:	ec06                	sd	ra,24(sp)
    e885e0be:	7901d0ef          	jal	ra,e887b84e <my_malloc>
    e885e0c2:	842a                	mv	s0,a0
    memset(p,0,len);
    e885e0c4:	4621                	li	a2,8
    e885e0c6:	4581                	li	a1,0
    e885e0c8:	2cc1e0ef          	jal	ra,e887c394 <eLIBs_memset>
	OSStatus			err;
	SRPRef_libsrp		obj;
	
	obj = (SRPRef_libsrp) calloc( 1, sizeof( *obj ) );
	require_action( obj, exit, err = kNoMemoryErr );
    e885e0cc:	c801                	beqz	s0,e885e0dc <SRPCreate_libsrp+0x2a>
	
	*outRef = obj;
    e885e0ce:	e080                	sd	s0,0(s1)
	err = kNoErr;
    e885e0d0:	4501                	li	a0,0
	
exit:
	return( err );
}
    e885e0d2:	60e2                	ld	ra,24(sp)
    e885e0d4:	6422                	ld	s0,8(sp)
    e885e0d6:	64c2                	ld	s1,16(sp)
    e885e0d8:	6105                	addi	sp,sp,32
    e885e0da:	8082                	ret
	require_action( obj, exit, err = kNoMemoryErr );
    e885e0dc:	7579                	lui	a0,0xffffe
    e885e0de:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e885e0e2:	bfc5                	j	e885e0d2 <SRPCreate_libsrp+0x20>

00000000e885e0e4 <SRPDelete_libsrp>:
//===========================================================================================================================
//	SRPDelete_libsrp
//===========================================================================================================================

void	SRPDelete_libsrp( SRPRef_libsrp inRef )
{
    e885e0e4:	1141                	addi	sp,sp,-16
    e885e0e6:	e022                	sd	s0,0(sp)
    e885e0e8:	e406                	sd	ra,8(sp)
    e885e0ea:	842a                	mv	s0,a0
	SRP_forget( &inRef->srpCtx );
    e885e0ec:	6108                	ld	a0,0(a0)
    e885e0ee:	c509                	beqz	a0,e885e0f8 <SRPDelete_libsrp+0x14>
    e885e0f0:	b91e40ef          	jal	ra,e8842c80 <SRP_free>
    e885e0f4:	00043023          	sd	zero,0(s0)
	free( inRef );
    e885e0f8:	8522                	mv	a0,s0
}
    e885e0fa:	6402                	ld	s0,0(sp)
    e885e0fc:	60a2                	ld	ra,8(sp)
    e885e0fe:	0141                	addi	sp,sp,16
	free( inRef );
    e885e100:	2001e06f          	j	e887c300 <eLIBs_free>

00000000e885e104 <SRPClientStart_libsrp>:
		size_t *			outClientPKLen, 
		uint8_t **			outSharedSecretPtr, 
		size_t *			outSharedSecretLen, 
		uint8_t **			outResponsePtr, 
		size_t *			outResponseLen )
{
    e885e104:	7159                	addi	sp,sp,-112
    e885e106:	f0a2                	sd	s0,96(sp)
    e885e108:	eca6                	sd	s1,88(sp)
    e885e10a:	e8ca                	sd	s2,80(sp)
    e885e10c:	e4ce                	sd	s3,72(sp)
    e885e10e:	e0d2                	sd	s4,64(sp)
    e885e110:	fc56                	sd	s5,56(sp)
    e885e112:	f85a                	sd	s6,48(sp)
    e885e114:	f45e                	sd	s7,40(sp)
    e885e116:	f486                	sd	ra,104(sp)
    e885e118:	842a                	mv	s0,a0
	OSStatus		err;
	cstr *			clientPKData		= NULL;
	cstr *			sharedSecretData	= NULL;
	cstr *			responseData		= NULL;
	
	SRP_forget( &inClient->srpCtx );
    e885e11a:	6108                	ld	a0,0(a0)
	cstr *			clientPKData		= NULL;
    e885e11c:	e402                	sd	zero,8(sp)
	cstr *			sharedSecretData	= NULL;
    e885e11e:	e802                	sd	zero,16(sp)
	cstr *			responseData		= NULL;
    e885e120:	ec02                	sd	zero,24(sp)
{
    e885e122:	84ae                	mv	s1,a1
    e885e124:	8ab2                	mv	s5,a2
    e885e126:	89b6                	mv	s3,a3
    e885e128:	8a3a                	mv	s4,a4
    e885e12a:	893e                	mv	s2,a5
    e885e12c:	8b42                	mv	s6,a6
    e885e12e:	8bc6                	mv	s7,a7
	SRP_forget( &inClient->srpCtx );
    e885e130:	c509                	beqz	a0,e885e13a <SRPClientStart_libsrp+0x36>
    e885e132:	b4fe40ef          	jal	ra,e8842c80 <SRP_free>
    e885e136:	00043023          	sd	zero,0(s0)
	inClient->srpCtx = SRP_new( SRP6a_client_method(), &kSRPHashDescriptor_SHA512 );
    e885e13a:	be2e50ef          	jal	ra,e884351c <SRP6a_client_method>
    e885e13e:	00060597          	auipc	a1,0x60
    e885e142:	8d258593          	addi	a1,a1,-1838 # e88bda10 <kSRPHashDescriptor_SHA512>
    e885e146:	ab1e40ef          	jal	ra,e8842bf6 <SRP_new>
    e885e14a:	e008                	sd	a0,0(s0)
	require_action( inClient->srpCtx, exit, err = kNoMemoryErr );
    e885e14c:	0e050a63          	beqz	a0,e885e240 <SRPClientStart_libsrp+0x13c>
	
	if( inUsernameLen == kSizeCString ) inUsernameLen = strlen( (const char *) inUsernamePtr );
    e885e150:	57fd                	li	a5,-1
    e885e152:	00f99763          	bne	s3,a5,e885e160 <SRPClientStart_libsrp+0x5c>
    e885e156:	8556                	mv	a0,s5
    e885e158:	1c01e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885e15c:	7c05398b          	extu	s3,a0,31,0
	err = SRP_set_user_raw( inClient->srpCtx, (const unsigned char *) inUsernamePtr, (int) inUsernameLen );
    e885e160:	6008                	ld	a0,0(s0)
    e885e162:	0009861b          	sext.w	a2,s3
    e885e166:	85d6                	mv	a1,s5
    e885e168:	ba1e40ef          	jal	ra,e8842d08 <SRP_set_user_raw>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e16c:	cd15                	beqz	a0,e885e1a8 <SRPClientStart_libsrp+0xa4>
    e885e16e:	7479                	lui	s0,0xffffe
    e885e170:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	cstr_detach( clientPKData, outClientPKPtr, outClientPKLen );
	cstr_detach( sharedSecretData, outSharedSecretPtr, outSharedSecretLen );
	cstr_detach( responseData, outResponsePtr, outResponseLen );
	
exit:
	SRP_cstr_forget( &clientPKData );
    e885e174:	6522                	ld	a0,8(sp)
    e885e176:	c501                	beqz	a0,e885e17e <SRPClientStart_libsrp+0x7a>
    e885e178:	985e40ef          	jal	ra,e8842afc <cstr_free>
    e885e17c:	e402                	sd	zero,8(sp)
	SRP_cstr_clear_forget( &sharedSecretData );
    e885e17e:	6542                	ld	a0,16(sp)
    e885e180:	c501                	beqz	a0,e885e188 <SRPClientStart_libsrp+0x84>
    e885e182:	92fe40ef          	jal	ra,e8842ab0 <cstr_clear_free>
    e885e186:	e802                	sd	zero,16(sp)
	SRP_cstr_forget( &responseData );
    e885e188:	6562                	ld	a0,24(sp)
    e885e18a:	c119                	beqz	a0,e885e190 <SRPClientStart_libsrp+0x8c>
    e885e18c:	971e40ef          	jal	ra,e8842afc <cstr_free>
	return( err );
}
    e885e190:	8522                	mv	a0,s0
    e885e192:	70a6                	ld	ra,104(sp)
    e885e194:	7406                	ld	s0,96(sp)
    e885e196:	64e6                	ld	s1,88(sp)
    e885e198:	6946                	ld	s2,80(sp)
    e885e19a:	69a6                	ld	s3,72(sp)
    e885e19c:	6a06                	ld	s4,64(sp)
    e885e19e:	7ae2                	ld	s5,56(sp)
    e885e1a0:	7b42                	ld	s6,48(sp)
    e885e1a2:	7ba2                	ld	s7,40(sp)
    e885e1a4:	6165                	addi	sp,sp,112
    e885e1a6:	8082                	ret
	err = SRP_set_params( inClient->srpCtx, inParams->modulusPtr, (int) inParams->modulusLen, 
    e885e1a8:	4498                	lw	a4,8(s1)
    e885e1aa:	6094                	ld	a3,0(s1)
    e885e1ac:	4c90                	lw	a2,24(s1)
    e885e1ae:	688c                	ld	a1,16(s1)
    e885e1b0:	6008                	ld	a0,0(s0)
    e885e1b2:	000b881b          	sext.w	a6,s7
    e885e1b6:	87da                	mv	a5,s6
    e885e1b8:	b7be40ef          	jal	ra,e8842d32 <SRP_set_params>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e1bc:	f94d                	bnez	a0,e885e16e <SRPClientStart_libsrp+0x6a>
	if( inPasswordLen == kSizeCString ) inPasswordLen = strlen( (const char *) inPasswordPtr );
    e885e1be:	57fd                	li	a5,-1
    e885e1c0:	00f91763          	bne	s2,a5,e885e1ce <SRPClientStart_libsrp+0xca>
    e885e1c4:	8552                	mv	a0,s4
    e885e1c6:	1521e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885e1ca:	7c05390b          	extu	s2,a0,31,0
	err = SRP_set_auth_password_raw( inClient->srpCtx, (const unsigned char *) inPasswordPtr, (int) inPasswordLen );
    e885e1ce:	6008                	ld	a0,0(s0)
    e885e1d0:	0009061b          	sext.w	a2,s2
    e885e1d4:	85d2                	mv	a1,s4
    e885e1d6:	c2be40ef          	jal	ra,e8842e00 <SRP_set_auth_password_raw>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e1da:	f951                	bnez	a0,e885e16e <SRPClientStart_libsrp+0x6a>
	err = SRP_gen_pub( inClient->srpCtx, &clientPKData );
    e885e1dc:	6008                	ld	a0,0(s0)
    e885e1de:	002c                	addi	a1,sp,8
    e885e1e0:	c29e40ef          	jal	ra,e8842e08 <SRP_gen_pub>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e1e4:	f549                	bnez	a0,e885e16e <SRPClientStart_libsrp+0x6a>
	require_action( clientPKData->length > 0, exit, err = kSizeErr );
    e885e1e6:	67a2                	ld	a5,8(sp)
    e885e1e8:	479c                	lw	a5,8(a5)
    e885e1ea:	00f04663          	bgtz	a5,e885e1f6 <SRPClientStart_libsrp+0xf2>
    e885e1ee:	7479                	lui	s0,0xffffe
    e885e1f0:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e885e1f4:	b741                	j	e885e174 <SRPClientStart_libsrp+0x70>
	err = SRP_compute_key( inClient->srpCtx, &sharedSecretData, inServerPKPtr, (int) inServerPKLen );
    e885e1f6:	56e6                	lw	a3,120(sp)
    e885e1f8:	7646                	ld	a2,112(sp)
    e885e1fa:	6008                	ld	a0,0(s0)
    e885e1fc:	080c                	addi	a1,sp,16
    e885e1fe:	c13e40ef          	jal	ra,e8842e10 <SRP_compute_key>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e202:	f535                	bnez	a0,e885e16e <SRPClientStart_libsrp+0x6a>
	require_action( sharedSecretData->length > 0, exit, err = kSizeErr );
    e885e204:	67c2                	ld	a5,16(sp)
    e885e206:	479c                	lw	a5,8(a5)
    e885e208:	fef053e3          	blez	a5,e885e1ee <SRPClientStart_libsrp+0xea>
	err = SRP_respond( inClient->srpCtx, &responseData );
    e885e20c:	6008                	ld	a0,0(s0)
    e885e20e:	082c                	addi	a1,sp,24
    e885e210:	c11e40ef          	jal	ra,e8842e20 <SRP_respond>
    e885e214:	842a                	mv	s0,a0
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e216:	fd21                	bnez	a0,e885e16e <SRPClientStart_libsrp+0x6a>
	require_action( responseData->length > 0, exit, err = kSizeErr );
    e885e218:	67e2                	ld	a5,24(sp)
    e885e21a:	6522                	ld	a0,8(sp)
    e885e21c:	479c                	lw	a5,8(a5)
    e885e21e:	fcf058e3          	blez	a5,e885e1ee <SRPClientStart_libsrp+0xea>
	cstr_detach( clientPKData, outClientPKPtr, outClientPKLen );
    e885e222:	662a                	ld	a2,136(sp)
    e885e224:	658a                	ld	a1,128(sp)
    e885e226:	8c9e40ef          	jal	ra,e8842aee <cstr_detach>
	cstr_detach( sharedSecretData, outSharedSecretPtr, outSharedSecretLen );
    e885e22a:	666a                	ld	a2,152(sp)
    e885e22c:	65ca                	ld	a1,144(sp)
    e885e22e:	6542                	ld	a0,16(sp)
    e885e230:	8bfe40ef          	jal	ra,e8842aee <cstr_detach>
	cstr_detach( responseData, outResponsePtr, outResponseLen );
    e885e234:	762a                	ld	a2,168(sp)
    e885e236:	758a                	ld	a1,160(sp)
    e885e238:	6562                	ld	a0,24(sp)
    e885e23a:	8b5e40ef          	jal	ra,e8842aee <cstr_detach>
    e885e23e:	bf1d                	j	e885e174 <SRPClientStart_libsrp+0x70>
	require_action( inClient->srpCtx, exit, err = kNoMemoryErr );
    e885e240:	7479                	lui	s0,0xffffe
    e885e242:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e885e246:	b73d                	j	e885e174 <SRPClientStart_libsrp+0x70>

00000000e885e248 <SRPClientVerify_libsrp>:
//===========================================================================================================================
//	SRPClientVerify_libsrp
//===========================================================================================================================

OSStatus	SRPClientVerify_libsrp( SRPRef_libsrp inClient, const void *inResponsePtr, size_t inResponseLen )
{
    e885e248:	1101                	addi	sp,sp,-32
    e885e24a:	e826                	sd	s1,16(sp)
    e885e24c:	ec06                	sd	ra,24(sp)
    e885e24e:	e422                	sd	s0,8(sp)
    e885e250:	84aa                	mv	s1,a0
	OSStatus		err;
	
	require_action( inClient->srpCtx, exit, err = kNotPreparedErr );
    e885e252:	6108                	ld	a0,0(a0)
    e885e254:	c911                	beqz	a0,e885e268 <SRPClientVerify_libsrp+0x20>
	
	err = SRP_verify( inClient->srpCtx, inResponsePtr, (int) inResponseLen );
    e885e256:	2601                	sext.w	a2,a2
    e885e258:	bc1e40ef          	jal	ra,e8842e18 <SRP_verify>
    e885e25c:	842a                	mv	s0,a0
	require_noerr_action_quiet( err, exit, err = kAuthenticationErr );
    e885e25e:	c901                	beqz	a0,e885e26e <SRPClientVerify_libsrp+0x26>
    e885e260:	7479                	lui	s0,0xffffe
    e885e262:	59e40413          	addi	s0,s0,1438 # ffffffffffffe59e <__DRAM0_INF_BASE+0xffffffff0000e59e>
    e885e266:	a021                	j	e885e26e <SRPClientVerify_libsrp+0x26>
	require_action( inClient->srpCtx, exit, err = kNotPreparedErr );
    e885e268:	7479                	lui	s0,0xffffe
    e885e26a:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
	
exit:
	SRP_forget( &inClient->srpCtx );
    e885e26e:	6088                	ld	a0,0(s1)
    e885e270:	c509                	beqz	a0,e885e27a <SRPClientVerify_libsrp+0x32>
    e885e272:	a0fe40ef          	jal	ra,e8842c80 <SRP_free>
    e885e276:	0004b023          	sd	zero,0(s1)
	return( err );
}
    e885e27a:	8522                	mv	a0,s0
    e885e27c:	60e2                	ld	ra,24(sp)
    e885e27e:	6422                	ld	s0,8(sp)
    e885e280:	64c2                	ld	s1,16(sp)
    e885e282:	6105                	addi	sp,sp,32
    e885e284:	8082                	ret

00000000e885e286 <SRPServerStart_libsrp>:
		size_t				inPasswordLen, 
		size_t				inSaltLen, 
		uint8_t *			outSalt, 
		uint8_t **			outServerPKPtr, 
		size_t *			outServerPKLen )
{
    e885e286:	711d                	addi	sp,sp,-96
    e885e288:	e8a2                	sd	s0,80(sp)
    e885e28a:	e4a6                	sd	s1,72(sp)
    e885e28c:	e0ca                	sd	s2,64(sp)
    e885e28e:	fc4e                	sd	s3,56(sp)
    e885e290:	f852                	sd	s4,48(sp)
    e885e292:	f456                	sd	s5,40(sp)
    e885e294:	f05a                	sd	s6,32(sp)
    e885e296:	ec5e                	sd	s7,24(sp)
    e885e298:	ec86                	sd	ra,88(sp)
    e885e29a:	84aa                	mv	s1,a0
	OSStatus		err;
	cstr *			serverPKData = NULL;
	
	SRP_forget( &inServer->srpCtx );
    e885e29c:	6108                	ld	a0,0(a0)
	cstr *			serverPKData = NULL;
    e885e29e:	e402                	sd	zero,8(sp)
{
    e885e2a0:	892e                	mv	s2,a1
    e885e2a2:	8bb2                	mv	s7,a2
    e885e2a4:	8436                	mv	s0,a3
    e885e2a6:	8aba                	mv	s5,a4
    e885e2a8:	89be                	mv	s3,a5
    e885e2aa:	8a42                	mv	s4,a6
    e885e2ac:	8b46                	mv	s6,a7
	SRP_forget( &inServer->srpCtx );
    e885e2ae:	c509                	beqz	a0,e885e2b8 <SRPServerStart_libsrp+0x32>
    e885e2b0:	9d1e40ef          	jal	ra,e8842c80 <SRP_free>
    e885e2b4:	0004b023          	sd	zero,0(s1)
	inServer->srpCtx = SRP_new( SRP6a_server_method(), &kSRPHashDescriptor_SHA512 );
    e885e2b8:	97fe50ef          	jal	ra,e8843c36 <SRP6a_server_method>
    e885e2bc:	0005f597          	auipc	a1,0x5f
    e885e2c0:	75458593          	addi	a1,a1,1876 # e88bda10 <kSRPHashDescriptor_SHA512>
    e885e2c4:	933e40ef          	jal	ra,e8842bf6 <SRP_new>
    e885e2c8:	e088                	sd	a0,0(s1)
	require_action( inServer->srpCtx, exit, err = kNoMemoryErr );
    e885e2ca:	c555                	beqz	a0,e885e376 <SRPServerStart_libsrp+0xf0>
	
	if( inUsernameLen == kSizeCString ) inUsernameLen = strlen( (const char *) inUsernamePtr );
    e885e2cc:	57fd                	li	a5,-1
    e885e2ce:	00f41763          	bne	s0,a5,e885e2dc <SRPServerStart_libsrp+0x56>
    e885e2d2:	855e                	mv	a0,s7
    e885e2d4:	0441e0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885e2d8:	7c05340b          	extu	s0,a0,31,0
	err = SRP_set_user_raw( inServer->srpCtx, inUsernamePtr, (int) inUsernameLen );
    e885e2dc:	6088                	ld	a0,0(s1)
    e885e2de:	0004061b          	sext.w	a2,s0
    e885e2e2:	85de                	mv	a1,s7
    e885e2e4:	a25e40ef          	jal	ra,e8842d08 <SRP_set_user_raw>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e2e8:	c505                	beqz	a0,e885e310 <SRPServerStart_libsrp+0x8a>
    e885e2ea:	7479                	lui	s0,0xffffe
    e885e2ec:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	require_noerr_action( err, exit, err = kUnknownErr );
	
	cstr_detach( serverPKData, outServerPKPtr, outServerPKLen );
	
exit:
	SRP_cstr_forget( &serverPKData );
    e885e2f0:	6522                	ld	a0,8(sp)
    e885e2f2:	c119                	beqz	a0,e885e2f8 <SRPServerStart_libsrp+0x72>
    e885e2f4:	809e40ef          	jal	ra,e8842afc <cstr_free>
	return( err );
}
    e885e2f8:	8522                	mv	a0,s0
    e885e2fa:	60e6                	ld	ra,88(sp)
    e885e2fc:	6446                	ld	s0,80(sp)
    e885e2fe:	64a6                	ld	s1,72(sp)
    e885e300:	6906                	ld	s2,64(sp)
    e885e302:	79e2                	ld	s3,56(sp)
    e885e304:	7a42                	ld	s4,48(sp)
    e885e306:	7aa2                	ld	s5,40(sp)
    e885e308:	7b02                	ld	s6,32(sp)
    e885e30a:	6be2                	ld	s7,24(sp)
    e885e30c:	6125                	addi	sp,sp,96
    e885e30e:	8082                	ret
	require_action( inSaltLen >= 16, exit, err = kParamErr );
    e885e310:	47bd                	li	a5,15
    e885e312:	0747f663          	bgeu	a5,s4,e885e37e <SRPServerStart_libsrp+0xf8>
	err = RandomBytes( outSalt, inSaltLen );
    e885e316:	85d2                	mv	a1,s4
    e885e318:	855a                	mv	a0,s6
    e885e31a:	d8bfe0ef          	jal	ra,e885d0a4 <RandomBytes>
    e885e31e:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e885e320:	f961                	bnez	a0,e885e2f0 <SRPServerStart_libsrp+0x6a>
	err = SRP_set_params( inServer->srpCtx, inParams->modulusPtr, (int) inParams->modulusLen, 
    e885e322:	00892703          	lw	a4,8(s2)
    e885e326:	00093683          	ld	a3,0(s2)
    e885e32a:	01892603          	lw	a2,24(s2)
    e885e32e:	01093583          	ld	a1,16(s2)
    e885e332:	6088                	ld	a0,0(s1)
    e885e334:	000a081b          	sext.w	a6,s4
    e885e338:	87da                	mv	a5,s6
    e885e33a:	9f9e40ef          	jal	ra,e8842d32 <SRP_set_params>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e33e:	f555                	bnez	a0,e885e2ea <SRPServerStart_libsrp+0x64>
	if( inPasswordLen == kSizeCString ) inPasswordLen = strlen( (const char *) inPasswordPtr );
    e885e340:	57fd                	li	a5,-1
    e885e342:	00f99763          	bne	s3,a5,e885e350 <SRPServerStart_libsrp+0xca>
    e885e346:	8556                	mv	a0,s5
    e885e348:	7d11d0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885e34c:	7c05398b          	extu	s3,a0,31,0
	err = SRP_set_auth_password_raw( inServer->srpCtx, (const unsigned char *) inPasswordPtr, (int) inPasswordLen );
    e885e350:	6088                	ld	a0,0(s1)
    e885e352:	0009861b          	sext.w	a2,s3
    e885e356:	85d6                	mv	a1,s5
    e885e358:	aa9e40ef          	jal	ra,e8842e00 <SRP_set_auth_password_raw>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e35c:	f559                	bnez	a0,e885e2ea <SRPServerStart_libsrp+0x64>
	err = SRP_gen_pub( inServer->srpCtx, &serverPKData );
    e885e35e:	6088                	ld	a0,0(s1)
    e885e360:	002c                	addi	a1,sp,8
    e885e362:	aa7e40ef          	jal	ra,e8842e08 <SRP_gen_pub>
    e885e366:	842a                	mv	s0,a0
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e368:	f149                	bnez	a0,e885e2ea <SRPServerStart_libsrp+0x64>
	cstr_detach( serverPKData, outServerPKPtr, outServerPKLen );
    e885e36a:	7626                	ld	a2,104(sp)
    e885e36c:	7586                	ld	a1,96(sp)
    e885e36e:	6522                	ld	a0,8(sp)
    e885e370:	f7ee40ef          	jal	ra,e8842aee <cstr_detach>
    e885e374:	bfb5                	j	e885e2f0 <SRPServerStart_libsrp+0x6a>
	require_action( inServer->srpCtx, exit, err = kNoMemoryErr );
    e885e376:	7479                	lui	s0,0xffffe
    e885e378:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e885e37c:	bf95                	j	e885e2f0 <SRPServerStart_libsrp+0x6a>
	require_action( inSaltLen >= 16, exit, err = kParamErr );
    e885e37e:	7479                	lui	s0,0xffffe
    e885e380:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e885e384:	b7b5                	j	e885e2f0 <SRPServerStart_libsrp+0x6a>

00000000e885e386 <SRPServerVerify_libsrp>:
		size_t			inResponseLen, 
		uint8_t **		outSharedSecretPtr, 
		size_t *		outSharedSecretLen, 
		uint8_t **		outResponsePtr, 
		size_t *		outResponseLen )
{
    e885e386:	715d                	addi	sp,sp,-80
    e885e388:	fc26                	sd	s1,56(sp)
    e885e38a:	e486                	sd	ra,72(sp)
    e885e38c:	e0a2                	sd	s0,64(sp)
    e885e38e:	f84a                	sd	s2,48(sp)
    e885e390:	f44e                	sd	s3,40(sp)
    e885e392:	f052                	sd	s4,32(sp)
    e885e394:	84aa                	mv	s1,a0
	OSStatus		err;
	cstr *			sharedSecretData	= NULL;
	cstr *			responseData		= NULL;
	
	require_action( inServer->srpCtx, exit, err = kNotPreparedErr );
    e885e396:	6108                	ld	a0,0(a0)
{
    e885e398:	e43a                	sd	a4,8(sp)
	cstr *			sharedSecretData	= NULL;
    e885e39a:	e802                	sd	zero,16(sp)
	cstr *			responseData		= NULL;
    e885e39c:	ec02                	sd	zero,24(sp)
	require_action( inServer->srpCtx, exit, err = kNotPreparedErr );
    e885e39e:	cd49                	beqz	a0,e885e438 <SRPServerVerify_libsrp+0xb2>
    e885e3a0:	8436                	mv	s0,a3
	
	err = SRP_compute_key( inServer->srpCtx, &sharedSecretData, (const uint8_t *) inClientPKPtr, (int) inClientPKLen );
    e885e3a2:	0006069b          	sext.w	a3,a2
    e885e3a6:	862e                	mv	a2,a1
    e885e3a8:	080c                	addi	a1,sp,16
    e885e3aa:	89be                	mv	s3,a5
    e885e3ac:	8a42                	mv	s4,a6
    e885e3ae:	8946                	mv	s2,a7
    e885e3b0:	a61e40ef          	jal	ra,e8842e10 <SRP_compute_key>
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e3b4:	6722                	ld	a4,8(sp)
    e885e3b6:	cd0d                	beqz	a0,e885e3f0 <SRPServerVerify_libsrp+0x6a>
    e885e3b8:	7479                	lui	s0,0xffffe
    e885e3ba:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	
	cstr_detach( sharedSecretData, outSharedSecretPtr, outSharedSecretLen );
	cstr_detach( responseData, outResponsePtr, outResponseLen );
	
exit:
	SRP_cstr_clear_forget( &sharedSecretData );
    e885e3be:	6542                	ld	a0,16(sp)
    e885e3c0:	c501                	beqz	a0,e885e3c8 <SRPServerVerify_libsrp+0x42>
    e885e3c2:	eeee40ef          	jal	ra,e8842ab0 <cstr_clear_free>
    e885e3c6:	e802                	sd	zero,16(sp)
	SRP_cstr_forget( &responseData );
    e885e3c8:	6562                	ld	a0,24(sp)
    e885e3ca:	c501                	beqz	a0,e885e3d2 <SRPServerVerify_libsrp+0x4c>
    e885e3cc:	f30e40ef          	jal	ra,e8842afc <cstr_free>
    e885e3d0:	ec02                	sd	zero,24(sp)
	SRP_forget( &inServer->srpCtx );
    e885e3d2:	6088                	ld	a0,0(s1)
    e885e3d4:	c509                	beqz	a0,e885e3de <SRPServerVerify_libsrp+0x58>
    e885e3d6:	8abe40ef          	jal	ra,e8842c80 <SRP_free>
    e885e3da:	0004b023          	sd	zero,0(s1)
	return( err );
}
    e885e3de:	8522                	mv	a0,s0
    e885e3e0:	60a6                	ld	ra,72(sp)
    e885e3e2:	6406                	ld	s0,64(sp)
    e885e3e4:	74e2                	ld	s1,56(sp)
    e885e3e6:	7942                	ld	s2,48(sp)
    e885e3e8:	79a2                	ld	s3,40(sp)
    e885e3ea:	7a02                	ld	s4,32(sp)
    e885e3ec:	6161                	addi	sp,sp,80
    e885e3ee:	8082                	ret
	require_action( sharedSecretData->length > 0, exit, err = kSizeErr );
    e885e3f0:	67c2                	ld	a5,16(sp)
    e885e3f2:	479c                	lw	a5,8(a5)
    e885e3f4:	00f04663          	bgtz	a5,e885e400 <SRPServerVerify_libsrp+0x7a>
    e885e3f8:	7479                	lui	s0,0xffffe
    e885e3fa:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e885e3fe:	b7c1                	j	e885e3be <SRPServerVerify_libsrp+0x38>
	err = SRP_verify( inServer->srpCtx, inResponsePtr, (int) inResponseLen );
    e885e400:	6088                	ld	a0,0(s1)
    e885e402:	0007061b          	sext.w	a2,a4
    e885e406:	85a2                	mv	a1,s0
    e885e408:	a11e40ef          	jal	ra,e8842e18 <SRP_verify>
	require_noerr_action_quiet( err, exit, err = kAuthenticationErr );
    e885e40c:	e915                	bnez	a0,e885e440 <SRPServerVerify_libsrp+0xba>
	err = SRP_respond( inServer->srpCtx, &responseData );
    e885e40e:	6088                	ld	a0,0(s1)
    e885e410:	082c                	addi	a1,sp,24
    e885e412:	a0fe40ef          	jal	ra,e8842e20 <SRP_respond>
    e885e416:	842a                	mv	s0,a0
	require_noerr_action( err, exit, err = kUnknownErr );
    e885e418:	f145                	bnez	a0,e885e3b8 <SRPServerVerify_libsrp+0x32>
	require_action( responseData->length > 0, exit, err = kSizeErr );
    e885e41a:	faf1450b          	ldd	a0,a5,(sp),1,4
    e885e41e:	479c                	lw	a5,8(a5)
    e885e420:	fcf05ce3          	blez	a5,e885e3f8 <SRPServerVerify_libsrp+0x72>
	cstr_detach( sharedSecretData, outSharedSecretPtr, outSharedSecretLen );
    e885e424:	8652                	mv	a2,s4
    e885e426:	85ce                	mv	a1,s3
    e885e428:	ec6e40ef          	jal	ra,e8842aee <cstr_detach>
	cstr_detach( responseData, outResponsePtr, outResponseLen );
    e885e42c:	6646                	ld	a2,80(sp)
    e885e42e:	6562                	ld	a0,24(sp)
    e885e430:	85ca                	mv	a1,s2
    e885e432:	ebce40ef          	jal	ra,e8842aee <cstr_detach>
    e885e436:	b761                	j	e885e3be <SRPServerVerify_libsrp+0x38>
	require_action( inServer->srpCtx, exit, err = kNotPreparedErr );
    e885e438:	7479                	lui	s0,0xffffe
    e885e43a:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e885e43e:	b741                	j	e885e3be <SRPServerVerify_libsrp+0x38>
	require_noerr_action_quiet( err, exit, err = kAuthenticationErr );
    e885e440:	7479                	lui	s0,0xffffe
    e885e442:	59e40413          	addi	s0,s0,1438 # ffffffffffffe59e <__DRAM0_INF_BASE+0xffffffff0000e59e>
    e885e446:	bfa5                	j	e885e3be <SRPServerVerify_libsrp+0x38>

00000000e885e448 <isspace>:
static inline int isspace( int c )    { return( ( c == ' ' ) || ( ( c >= 0x09 ) && ( c <= 0x0D ) ) ); }
    e885e448:	02000793          	li	a5,32
    e885e44c:	00f50663          	beq	a0,a5,e885e458 <isspace+0x10>
    e885e450:	355d                	addiw	a0,a0,-9
    e885e452:	00553513          	sltiu	a0,a0,5
    e885e456:	8082                	ret
    e885e458:	4505                	li	a0,1
    e885e45a:	8082                	ret

00000000e885e45c <ParseIPv4Address>:
	
	check( inBuffer );
	check( outStr );
	
	dst		 = inBuffer;
	*dst	 = 0;
    e885e45c:	00058023          	sb	zero,0(a1)
	sawDigit = 0;
    e885e460:	4801                	li	a6,0
	segments = 0;
    e885e462:	4681                	li	a3,0
	for( ; ( c = *inStr ) != '\0'; ++inStr )
	{
		if( isdigit_safe( c ) )
    e885e464:	48a5                	li	a7,9
				++segments;
				require_action_quiet( segments <= 4, exit, err = kOverrunErr );
				sawDigit = 1;
			}
		}
		else if( ( c == '.' ) && sawDigit )
    e885e466:	02e00313          	li	t1,46
		{
			require_action_quiet( segments < 4, exit, err = kMalformedErr );
    e885e46a:	4e0d                	li	t3,3
			v = ( *dst * 10 ) + ( c - '0' );
    e885e46c:	4ea9                	li	t4,10
			require_action_quiet( v <= 255, exit, err = kRangeErr );
    e885e46e:	0ff00f13          	li	t5,255
				require_action_quiet( segments <= 4, exit, err = kOverrunErr );
    e885e472:	4f91                	li	t6,4
	for( ; ( c = *inStr ) != '\0'; ++inStr )
    e885e474:	00054703          	lbu	a4,0(a0)
    e885e478:	87ba                	mv	a5,a4
    e885e47a:	cb1d                	beqz	a4,e885e4b0 <ParseIPv4Address+0x54>
		if( isdigit_safe( c ) )
    e885e47c:	fd07071b          	addiw	a4,a4,-48
    e885e480:	0ff77713          	andi	a4,a4,255
    e885e484:	02e8e463          	bltu	a7,a4,e885e4ac <ParseIPv4Address+0x50>
			v = ( *dst * 10 ) + ( c - '0' );
    e885e488:	0005c703          	lbu	a4,0(a1)
    e885e48c:	fd07879b          	addiw	a5,a5,-48
    e885e490:	25d7178b          	mulaw	a5,a4,t4
			require_action_quiet( v <= 255, exit, err = kRangeErr );
    e885e494:	04ff4163          	blt	t5,a5,e885e4d6 <ParseIPv4Address+0x7a>
			*dst = (uint8_t) v;
    e885e498:	00f58023          	sb	a5,0(a1)
			if( !sawDigit )
    e885e49c:	00081663          	bnez	a6,e885e4a8 <ParseIPv4Address+0x4c>
				++segments;
    e885e4a0:	2685                	addiw	a3,a3,1
				require_action_quiet( segments <= 4, exit, err = kOverrunErr );
    e885e4a2:	02dfce63          	blt	t6,a3,e885e4de <ParseIPv4Address+0x82>
				sawDigit = 1;
    e885e4a6:	4805                	li	a6,1
	for( ; ( c = *inStr ) != '\0'; ++inStr )
    e885e4a8:	0505                	addi	a0,a0,1
    e885e4aa:	b7e9                	j	e885e474 <ParseIPv4Address+0x18>
		else if( ( c == '.' ) && sawDigit )
    e885e4ac:	00678963          	beq	a5,t1,e885e4be <ParseIPv4Address+0x62>
		else
		{
			break;
		}
	}
	require_action_quiet( segments == 4, exit, err = kUnderrunErr );
    e885e4b0:	4791                	li	a5,4
    e885e4b2:	00f68f63          	beq	a3,a5,e885e4d0 <ParseIPv4Address+0x74>
    e885e4b6:	7579                	lui	a0,0xffffe
    e885e4b8:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
    e885e4bc:	8082                	ret
		else if( ( c == '.' ) && sawDigit )
    e885e4be:	fe0809e3          	beqz	a6,e885e4b0 <ParseIPv4Address+0x54>
			require_action_quiet( segments < 4, exit, err = kMalformedErr );
    e885e4c2:	02de4263          	blt	t3,a3,e885e4e6 <ParseIPv4Address+0x8a>
			*++dst = 0;
    e885e4c6:	000580a3          	sb	zero,1(a1)
			sawDigit = 0;
    e885e4ca:	4801                	li	a6,0
			*++dst = 0;
    e885e4cc:	0585                	addi	a1,a1,1
    e885e4ce:	bfe9                	j	e885e4a8 <ParseIPv4Address+0x4c>
	
	*outStr = inStr;
    e885e4d0:	e208                	sd	a0,0(a2)
	err = kNoErr;
    e885e4d2:	4501                	li	a0,0
    e885e4d4:	8082                	ret
			require_action_quiet( v <= 255, exit, err = kRangeErr );
    e885e4d6:	7579                	lui	a0,0xffffe
    e885e4d8:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
    e885e4dc:	8082                	ret
				require_action_quiet( segments <= 4, exit, err = kOverrunErr );
    e885e4de:	7579                	lui	a0,0xffffe
    e885e4e0:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e885e4e4:	8082                	ret
			require_action_quiet( segments < 4, exit, err = kMalformedErr );
    e885e4e6:	7579                	lui	a0,0xffffe
    e885e4e8:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
	
exit:
	return( err );
}
    e885e4ec:	8082                	ret

00000000e885e4ee <RegexMatchHere>:
	return 0;
}

// matchhere: search for regexp at beginning of text
static int RegexMatchHere(const char *regexp, const char *text)
{
    e885e4ee:	7139                	addi	sp,sp,-64
    e885e4f0:	e422                	sd	s0,8(sp)
    e885e4f2:	fc06                	sd	ra,56(sp)
    e885e4f4:	842e                	mv	s0,a1
    e885e4f6:	e826                	sd	s1,16(sp)
    e885e4f8:	ec4a                	sd	s2,24(sp)
    e885e4fa:	f04e                	sd	s3,32(sp)
    e885e4fc:	f452                	sd	s4,40(sp)
    e885e4fe:	f856                	sd	s5,48(sp)
   if (regexp[0] == '\0')
	   return 1;
   if (regexp[1] == '*')
    e885e500:	02a00813          	li	a6,42
	   return RegexMatchStar(regexp[0], regexp+2, text);
   if (regexp[0] == '$' && regexp[1] == '\0')
    e885e504:	02400893          	li	a7,36
	   return *text == '\0';
   if (*text!='\0' && (regexp[0]=='.' || RegexMatchChar(regexp[0], *text)))
    e885e508:	02e00313          	li	t1,46
	return tolower_safe(a) == tolower_safe(b);
    e885e50c:	45e5                	li	a1,25
   if (regexp[0] == '\0')
    e885e50e:	00054783          	lbu	a5,0(a0)
    e885e512:	cbd5                	beqz	a5,e885e5c6 <RegexMatchHere+0xd8>
   if (regexp[1] == '*')
    e885e514:	00154703          	lbu	a4,1(a0)
    e885e518:	07071363          	bne	a4,a6,e885e57e <RegexMatchHere+0x90>
	   return RegexMatchStar(regexp[0], regexp+2, text);
    e885e51c:	89be                	mv	s3,a5
	return tolower_safe(a) == tolower_safe(b);
    e885e51e:	fbf7879b          	addiw	a5,a5,-65
    e885e522:	0ff7f793          	andi	a5,a5,255
    e885e526:	46e5                	li	a3,25
    e885e528:	0209871b          	addiw	a4,s3,32
    e885e52c:	00f6b7b3          	sltu	a5,a3,a5
    e885e530:	42f9970b          	mvnez	a4,s3,a5
	   return RegexMatchStar(regexp[0], regexp+2, text);
    e885e534:	00250493          	addi	s1,a0,2
    e885e538:	893a                	mv	s2,a4
	return tolower_safe(a) == tolower_safe(b);
    e885e53a:	4ae5                	li	s5,25
static int RegexMatchStar(int c, const char *regexp, const char *text)
{
   do {   // a * matches zero or more instances
	   if (RegexMatchHere(regexp, text))
		   return 1;
   } while (*text != '\0' && (RegexMatchChar(*text++, c) || c == '.'));
    e885e53c:	02e00a13          	li	s4,46
	   if (RegexMatchHere(regexp, text))
    e885e540:	85a2                	mv	a1,s0
    e885e542:	8526                	mv	a0,s1
    e885e544:	fabff0ef          	jal	ra,e885e4ee <RegexMatchHere>
    e885e548:	ed3d                	bnez	a0,e885e5c6 <RegexMatchHere+0xd8>
   } while (*text != '\0' && (RegexMatchChar(*text++, c) || c == '.'));
    e885e54a:	00044783          	lbu	a5,0(s0)
    e885e54e:	cf99                	beqz	a5,e885e56c <RegexMatchHere+0x7e>
    e885e550:	873e                	mv	a4,a5
	return tolower_safe(a) == tolower_safe(b);
    e885e552:	fbf7879b          	addiw	a5,a5,-65
    e885e556:	0ff7f793          	andi	a5,a5,255
   } while (*text != '\0' && (RegexMatchChar(*text++, c) || c == '.'));
    e885e55a:	0405                	addi	s0,s0,1
	return tolower_safe(a) == tolower_safe(b);
    e885e55c:	00fae463          	bltu	s5,a5,e885e564 <RegexMatchHere+0x76>
    e885e560:	02070713          	addi	a4,a4,32
   } while (*text != '\0' && (RegexMatchChar(*text++, c) || c == '.'));
    e885e564:	fd270ee3          	beq	a4,s2,e885e540 <RegexMatchHere+0x52>
    e885e568:	fd498ce3          	beq	s3,s4,e885e540 <RegexMatchHere+0x52>
}
    e885e56c:	70e2                	ld	ra,56(sp)
    e885e56e:	6422                	ld	s0,8(sp)
    e885e570:	64c2                	ld	s1,16(sp)
    e885e572:	6962                	ld	s2,24(sp)
    e885e574:	7982                	ld	s3,32(sp)
    e885e576:	7a22                	ld	s4,40(sp)
    e885e578:	7ac2                	ld	s5,48(sp)
    e885e57a:	6121                	addi	sp,sp,64
    e885e57c:	8082                	ret
   if (regexp[0] == '$' && regexp[1] == '\0')
    e885e57e:	01179863          	bne	a5,a7,e885e58e <RegexMatchHere+0xa0>
    e885e582:	e711                	bnez	a4,e885e58e <RegexMatchHere+0xa0>
	   return *text == '\0';
    e885e584:	00044503          	lbu	a0,0(s0)
    e885e588:	00153513          	seqz	a0,a0
    e885e58c:	b7c5                	j	e885e56c <RegexMatchHere+0x7e>
   if (*text!='\0' && (regexp[0]=='.' || RegexMatchChar(regexp[0], *text)))
    e885e58e:	00044703          	lbu	a4,0(s0)
    e885e592:	cf05                	beqz	a4,e885e5ca <RegexMatchHere+0xdc>
    e885e594:	02678663          	beq	a5,t1,e885e5c0 <RegexMatchHere+0xd2>
    e885e598:	863e                	mv	a2,a5
	return tolower_safe(a) == tolower_safe(b);
    e885e59a:	fbf7879b          	addiw	a5,a5,-65
    e885e59e:	0ff7f793          	andi	a5,a5,255
   if (*text!='\0' && (regexp[0]=='.' || RegexMatchChar(regexp[0], *text)))
    e885e5a2:	86ba                	mv	a3,a4
	return tolower_safe(a) == tolower_safe(b);
    e885e5a4:	00f5e463          	bltu	a1,a5,e885e5ac <RegexMatchHere+0xbe>
    e885e5a8:	02060613          	addi	a2,a2,32
    e885e5ac:	fbf7071b          	addiw	a4,a4,-65
    e885e5b0:	0ff77713          	andi	a4,a4,255
    e885e5b4:	00e5e463          	bltu	a1,a4,e885e5bc <RegexMatchHere+0xce>
    e885e5b8:	0206869b          	addiw	a3,a3,32
   if (*text!='\0' && (regexp[0]=='.' || RegexMatchChar(regexp[0], *text)))
    e885e5bc:	00d61763          	bne	a2,a3,e885e5ca <RegexMatchHere+0xdc>
	   return RegexMatchHere(regexp+1, text+1);
    e885e5c0:	0505                	addi	a0,a0,1
    e885e5c2:	0405                	addi	s0,s0,1
    e885e5c4:	b7a9                	j	e885e50e <RegexMatchHere+0x20>
	   return 1;
    e885e5c6:	4505                	li	a0,1
    e885e5c8:	b755                	j	e885e56c <RegexMatchHere+0x7e>
   return 0;
    e885e5ca:	4501                	li	a0,0
    e885e5cc:	b745                	j	e885e56c <RegexMatchHere+0x7e>

00000000e885e5ce <DomainEndsInDot>:

static int DomainEndsInDot(const char *dom)
{
    while (dom[0] && dom[1])
    {
        if (dom[0] == '\\') // advance past escaped byte sequence
    e885e5ce:	05c00613          	li	a2,92
        {
            if (isdigit_safe(dom[1]) && isdigit_safe(dom[2]) && isdigit_safe(dom[3]))
    e885e5d2:	46a5                	li	a3,9
    while (dom[0] && dom[1])
    e885e5d4:	00054703          	lbu	a4,0(a0)
    e885e5d8:	c701                	beqz	a4,e885e5e0 <DomainEndsInDot+0x12>
    e885e5da:	00154783          	lbu	a5,1(a0)
    e885e5de:	e791                	bnez	a5,e885e5ea <DomainEndsInDot+0x1c>
                dom += 4;           // If "\ddd"    then skip four
            else dom += 2;          // else if "\x" then skip two
        }
        else dom++;                 // else goto next character
    }
    return (dom[0] == '.');
    e885e5e0:	fd270513          	addi	a0,a4,-46
}
    e885e5e4:	00153513          	seqz	a0,a0
    e885e5e8:	8082                	ret
        if (dom[0] == '\\') // advance past escaped byte sequence
    e885e5ea:	02c71c63          	bne	a4,a2,e885e622 <DomainEndsInDot+0x54>
            if (isdigit_safe(dom[1]) && isdigit_safe(dom[2]) && isdigit_safe(dom[3]))
    e885e5ee:	fd07879b          	addiw	a5,a5,-48
    e885e5f2:	0ff7f793          	andi	a5,a5,255
    e885e5f6:	02f6e463          	bltu	a3,a5,e885e61e <DomainEndsInDot+0x50>
    e885e5fa:	00254783          	lbu	a5,2(a0)
    e885e5fe:	fd07879b          	addiw	a5,a5,-48
    e885e602:	0ff7f793          	andi	a5,a5,255
    e885e606:	00f6ec63          	bltu	a3,a5,e885e61e <DomainEndsInDot+0x50>
    e885e60a:	00354783          	lbu	a5,3(a0)
    e885e60e:	fd07879b          	addiw	a5,a5,-48
    e885e612:	0ff7f793          	andi	a5,a5,255
    e885e616:	00f6e463          	bltu	a3,a5,e885e61e <DomainEndsInDot+0x50>
                dom += 4;           // If "\ddd"    then skip four
    e885e61a:	0511                	addi	a0,a0,4
    e885e61c:	bf65                	j	e885e5d4 <DomainEndsInDot+0x6>
            else dom += 2;          // else if "\x" then skip two
    e885e61e:	0509                	addi	a0,a0,2
    e885e620:	bf55                	j	e885e5d4 <DomainEndsInDot+0x6>
        else dom++;                 // else goto next character
    e885e622:	0505                	addi	a0,a0,1
    e885e624:	bf45                	j	e885e5d4 <DomainEndsInDot+0x6>

00000000e885e626 <isxdigit>:
static inline int isxdigit( int c )   { return( ( ( c >= '0' ) && ( c <= '9' ) ) || 
                                                ( ( c >= 'a' ) && ( c <= 'f' ) ) ||
    e885e626:	fd05071b          	addiw	a4,a0,-48
    e885e62a:	47a5                	li	a5,9
    e885e62c:	00e7fe63          	bgeu	a5,a4,e885e648 <isxdigit+0x22>
static inline int isxdigit( int c )   { return( ( ( c >= '0' ) && ( c <= '9' ) ) || 
    e885e630:	f9f5071b          	addiw	a4,a0,-97
    e885e634:	4695                	li	a3,5
                                                ( ( c >= 'a' ) && ( c <= 'f' ) ) ||
    e885e636:	4785                	li	a5,1
static inline int isxdigit( int c )   { return( ( ( c >= '0' ) && ( c <= '9' ) ) || 
    e885e638:	00e6f663          	bgeu	a3,a4,e885e644 <isxdigit+0x1e>
                                                ( ( c >= 'a' ) && ( c <= 'f' ) ) ||
    e885e63c:	fbf5051b          	addiw	a0,a0,-65
    e885e640:	00653793          	sltiu	a5,a0,6
                                                ( ( c >= 'A' ) && ( c <= 'F' ) ) ); }
    e885e644:	853e                	mv	a0,a5
    e885e646:	8082                	ret
                                                ( ( c >= 'a' ) && ( c <= 'f' ) ) ||
    e885e648:	4785                	li	a5,1
    e885e64a:	bfed                	j	e885e644 <isxdigit+0x1e>

00000000e885e64c <StringToIPv6Address>:
	require_action( inStr, exit, err = kParamErr );
    e885e64c:	36050763          	beqz	a0,e885e9ba <StringToIPv6Address+0x36e>
{
    e885e650:	7115                	addi	sp,sp,-224
    e885e652:	e1ca                	sd	s2,192(sp)
    e885e654:	fd4e                	sd	s3,184(sp)
    e885e656:	f952                	sd	s4,176(sp)
    e885e658:	f556                	sd	s5,168(sp)
    e885e65a:	f15a                	sd	s6,160(sp)
    e885e65c:	ed5e                	sd	s7,152(sp)
    e885e65e:	ed86                	sd	ra,216(sp)
    e885e660:	e9a2                	sd	s0,208(sp)
    e885e662:	e5a6                	sd	s1,200(sp)
    e885e664:	e962                	sd	s8,144(sp)
    e885e666:	e566                	sd	s9,136(sp)
    e885e668:	e16a                	sd	s10,128(sp)
    e885e66a:	fcee                	sd	s11,120(sp)
    e885e66c:	8a3a                	mv	s4,a4
	if( *inStr == '[' ) ++inStr; // Skip a leading bracket for []-wrapped addresses (e.g. "[::1]:80").
    e885e66e:	00054703          	lbu	a4,0(a0)
    e885e672:	8abe                	mv	s5,a5
    e885e674:	05b00793          	li	a5,91
    e885e678:	8bae                	mv	s7,a1
    e885e67a:	8932                	mv	s2,a2
    e885e67c:	89b6                	mv	s3,a3
    e885e67e:	8b42                	mv	s6,a6
    e885e680:	00f71363          	bne	a4,a5,e885e686 <StringToIPv6Address+0x3a>
    e885e684:	0505                	addi	a0,a0,1
	err = ParseIPv6Address( inStr, !( inFlags & kStringToIPAddressFlagsNoIPv4Mapped ), ipv6, &inStr );
    e885e686:	f82a                	sd	a0,48(sp)
{
    e885e688:	4781                	li	a5,0
	for( i = 0; i < 16; ++i ) inBuffer[ i ] = 0;
    e885e68a:	4741                	li	a4,16
    e885e68c:	1014                	addi	a3,sp,32
    e885e68e:	00f6d00b          	srb	zero,a3,a5,0
    e885e692:	0785                	addi	a5,a5,1
    e885e694:	fee79ce3          	bne	a5,a4,e885e68c <StringToIPv6Address+0x40>
	if( *inStr == ':' )
    e885e698:	00054783          	lbu	a5,0(a0)
    e885e69c:	03a00713          	li	a4,58
    e885e6a0:	00e79d63          	bne	a5,a4,e885e6ba <StringToIPv6Address+0x6e>
		++inStr;
    e885e6a4:	00150713          	addi	a4,a0,1
    e885e6a8:	f83a                	sd	a4,48(sp)
		require_action_quiet( *inStr == ':', exit, err = kMalformedErr );
    e885e6aa:	00154703          	lbu	a4,1(a0)
    e885e6ae:	00f70663          	beq	a4,a5,e885e6ba <StringToIPv6Address+0x6e>
				require_action_quiet( !colonPtr, exit, err = kMalformedErr );
    e885e6b2:	7579                	lui	a0,0xffffe
    e885e6b4:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e885e6b8:	a4e9                	j	e885e982 <StringToIPv6Address+0x336>
	while( ( ( c = *inStr++ ) != '\0' ) && ( c != '%' ) && ( c != '/' ) && ( c != ']' ) )
    e885e6ba:	40100793          	li	a5,1025
	ptr		 = inStr;
    e885e6be:	7542                	ld	a0,48(sp)
	while( ( ( c = *inStr++ ) != '\0' ) && ( c != '%' ) && ( c != '/' ) && ( c != ']' ) )
    e885e6c0:	1796                	slli	a5,a5,0x25
	v		 = 0;
    e885e6c2:	4881                	li	a7,0
	sawDigit = 0;
    e885e6c4:	4701                	li	a4,0
	colonPtr = NULL;
    e885e6c6:	4401                	li	s0,0
	dst		 = inBuffer;
    e885e6c8:	100c                	addi	a1,sp,32
	while( ( ( c = *inStr++ ) != '\0' ) && ( c != '%' ) && ( c != '/' ) && ( c != ']' ) )
    e885e6ca:	02f00f13          	li	t5,47
    e885e6ce:	0785                	addi	a5,a5,1
    e885e6d0:	05d00e93          	li	t4,93
		if(   ( c >= 'a' ) && ( c <= 'f' ) ) c -= ( 'a' - 'A' );
    e885e6d4:	4e15                	li	t3,5
		if( ( ( c >= '0' ) && ( c <= '9' ) ) || ( ( c >= 'A' ) && ( c <= 'F' ) ) )
    e885e6d6:	4fa5                	li	t6,9
			v = ( v << 4 ) | kASCIItoHexTable[ c ];
    e885e6d8:	00065297          	auipc	t0,0x65
    e885e6dc:	2b828293          	addi	t0,t0,696 # e88c3990 <kASCIItoHexTable.8938>
			require_action_quiet( v <= 0xFFFF, exit, err = kRangeErr );
    e885e6e0:	63c1                	lui	t2,0x10
		if( c == ':' )
    e885e6e2:	03a00493          	li	s1,58
			require_action_quiet( ( dst + 2 ) <= lim, exit, err = kOverrunErr );
    e885e6e6:	03010c13          	addi	s8,sp,48
	while( ( ( c = *inStr++ ) != '\0' ) && ( c != '%' ) && ( c != '/' ) && ( c != ']' ) )
    e885e6ea:	7842                	ld	a6,48(sp)
    e885e6ec:	00180693          	addi	a3,a6,1
    e885e6f0:	f836                	sd	a3,48(sp)
    e885e6f2:	00084303          	lbu	t1,0(a6)
    e885e6f6:	861a                	mv	a2,t1
    e885e6f8:	006f6863          	bltu	t5,t1,e885e708 <StringToIPv6Address+0xbc>
    e885e6fc:	0067d333          	srl	t1,a5,t1
    e885e700:	0003330b          	extu	t1,t1,0,0
    e885e704:	00031463          	bnez	t1,e885e70c <StringToIPv6Address+0xc0>
    e885e708:	01d61c63          	bne	a2,t4,e885e720 <StringToIPv6Address+0xd4>
	if( sawDigit )
    e885e70c:	c34d                	beqz	a4,e885e7ae <StringToIPv6Address+0x162>
		require_action_quiet( ( dst + 2 ) <= lim, exit, err = kOverrunErr );
    e885e70e:	181c                	addi	a5,sp,48
    e885e710:	00258713          	addi	a4,a1,2
    e885e714:	12e7f763          	bgeu	a5,a4,e885e842 <StringToIPv6Address+0x1f6>
			require_action_quiet( ( dst + 2 ) <= lim, exit, err = kOverrunErr );
    e885e718:	7579                	lui	a0,0xffffe
    e885e71a:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
	return( err );
    e885e71e:	a495                	j	e885e982 <StringToIPv6Address+0x336>
		if(   ( c >= 'a' ) && ( c <= 'f' ) ) c -= ( 'a' - 'A' );
    e885e720:	f9f6031b          	addiw	t1,a2,-97
    e885e724:	006e6363          	bltu	t3,t1,e885e72a <StringToIPv6Address+0xde>
    e885e728:	3601                	addiw	a2,a2,-32
		if( ( ( c >= '0' ) && ( c <= '9' ) ) || ( ( c >= 'A' ) && ( c <= 'F' ) ) )
    e885e72a:	fd06031b          	addiw	t1,a2,-48
    e885e72e:	006ff663          	bgeu	t6,t1,e885e73a <StringToIPv6Address+0xee>
    e885e732:	fbf60c9b          	addiw	s9,a2,-65
    e885e736:	019e6e63          	bltu	t3,s9,e885e752 <StringToIPv6Address+0x106>
			v = ( v << 4 ) | kASCIItoHexTable[ c ];
    e885e73a:	8062c70b          	lrbu	a4,t0,t1,0
    e885e73e:	0048989b          	slliw	a7,a7,0x4
    e885e742:	011768b3          	or	a7,a4,a7
			require_action_quiet( v <= 0xFFFF, exit, err = kRangeErr );
    e885e746:	2878f263          	bgeu	a7,t2,e885e9ca <StringToIPv6Address+0x37e>
    e885e74a:	86aa                	mv	a3,a0
			sawDigit = 1;
    e885e74c:	4705                	li	a4,1
				require_action_quiet( !colonPtr, exit, err = kMalformedErr );
    e885e74e:	8536                	mv	a0,a3
    e885e750:	bf69                	j	e885e6ea <StringToIPv6Address+0x9e>
		if( c == ':' )
    e885e752:	02961a63          	bne	a2,s1,e885e786 <StringToIPv6Address+0x13a>
			if( !sawDigit )
    e885e756:	e701                	bnez	a4,e885e75e <StringToIPv6Address+0x112>
				require_action_quiet( !colonPtr, exit, err = kMalformedErr );
    e885e758:	fc29                	bnez	s0,e885e6b2 <StringToIPv6Address+0x66>
    e885e75a:	842e                	mv	s0,a1
    e885e75c:	bfcd                	j	e885e74e <StringToIPv6Address+0x102>
			require_action_quiet( *inStr != '\0', exit, err = kUnderrunErr );
    e885e75e:	00184703          	lbu	a4,1(a6)
    e885e762:	10070b63          	beqz	a4,e885e878 <StringToIPv6Address+0x22c>
			require_action_quiet( ( dst + 2 ) <= lim, exit, err = kOverrunErr );
    e885e766:	00258613          	addi	a2,a1,2
    e885e76a:	facc67e3          	bltu	s8,a2,e885e718 <StringToIPv6Address+0xcc>
			*dst++ = (uint8_t)( ( v >> 8 ) & 0xFF );
    e885e76e:	00889713          	slli	a4,a7,0x8
    e885e772:	3c88b88b          	extu	a7,a7,15,8
    e885e776:	011768b3          	or	a7,a4,a7
    e885e77a:	01159023          	sh	a7,0(a1)
			sawDigit = 0;
    e885e77e:	4701                	li	a4,0
			*dst++ = (uint8_t)(   v        & 0xFF );
    e885e780:	85b2                	mv	a1,a2
			v = 0;
    e885e782:	4881                	li	a7,0
    e885e784:	b7e9                	j	e885e74e <StringToIPv6Address+0x102>
	err = ParseIPv6Address( inStr, !( inFlags & kStringToIPAddressFlagsNoIPv4Mapped ), ipv6, &inStr );
    e885e786:	008bf793          	andi	a5,s7,8
		if( inAllowV4Mapped && ( c == '.' ) && ( ( dst + 4 ) <= lim ) )
    e885e78a:	f3c9                	bnez	a5,e885e70c <StringToIPv6Address+0xc0>
    e885e78c:	02e00793          	li	a5,46
    e885e790:	f6f61ee3          	bne	a2,a5,e885e70c <StringToIPv6Address+0xc0>
    e885e794:	00458493          	addi	s1,a1,4
    e885e798:	1810                	addi	a2,sp,48
    e885e79a:	f69669e3          	bltu	a2,s1,e885e70c <StringToIPv6Address+0xc0>
			err = ParseIPv4Address( ptr, dst, &inStr );
    e885e79e:	cbfff0ef          	jal	ra,e885e45c <ParseIPv4Address>
			require_noerr_quiet( err, exit );
    e885e7a2:	1e051063          	bnez	a0,e885e982 <StringToIPv6Address+0x336>
			++inStr; // Increment because the code below expects the end to be at "inStr - 1".
    e885e7a6:	77c2                	ld	a5,48(sp)
    e885e7a8:	85a6                	mv	a1,s1
    e885e7aa:	0785                	addi	a5,a5,1
    e885e7ac:	f83e                	sd	a5,48(sp)
	if( colonPtr )
    e885e7ae:	1804                	addi	s1,sp,48
    e885e7b0:	c071                	beqz	s0,e885e874 <StringToIPv6Address+0x228>
		require_action_quiet( dst < lim, exit, err = kOverrunErr );
    e885e7b2:	f695f3e3          	bgeu	a1,s1,e885e718 <StringToIPv6Address+0xcc>
		n = (int)( dst - colonPtr );
    e885e7b6:	8d81                	sub	a1,a1,s0
    e885e7b8:	0005861b          	sext.w	a2,a1
		for( i = 1; i <= n; ++i )
    e885e7bc:	4705                	li	a4,1
    e885e7be:	08e65c63          	bge	a2,a4,e885e856 <StringToIPv6Address+0x20a>
	*outStr = inStr - 1;
    e885e7c2:	77c2                	ld	a5,48(sp)
	while( ( ( c = *inStr ) != '\0' ) && ( c != ':' ) && ( c != '/' ) && ( c != ']' ) && ( dst < lim ) )
    e885e7c4:	00801c37          	lui	s8,0x801
			require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPrefix ), exit, err = kUnexpectedErr );
    e885e7c8:	002bf693          	andi	a3,s7,2
	c = *inStr;
    e885e7cc:	fff7c603          	lbu	a2,-1(a5)
	while( ( ( c = *inStr ) != '\0' ) && ( c != ':' ) && ( c != '/' ) && ( c != ']' ) && ( dst < lim ) )
    e885e7d0:	1c0e                	slli	s8,s8,0x23
	*outStr = inStr - 1;
    e885e7d2:	fff78413          	addi	s0,a5,-1
	scope		= 0;
    e885e7d6:	4501                	li	a0,0
	hasBracket	= 0;
    e885e7d8:	4581                	li	a1,0
	prefix		= 0;
    e885e7da:	4d01                	li	s10,0
	hasPrefix	= 0;
    e885e7dc:	4881                	li	a7,0
	port		= 0;
    e885e7de:	4c81                	li	s9,0
	hasPort		= 0;
    e885e7e0:	4d81                	li	s11,0
	hasScope	= 0;
    e885e7e2:	4701                	li	a4,0
			require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPrefix ), exit, err = kUnexpectedErr );
    e885e7e4:	2681                	sext.w	a3,a3
			require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPort ), exit, err = kUnexpectedErr );
    e885e7e6:	001bf813          	andi	a6,s7,1
	while( ( ( c = *inStr ) != '\0' ) && ( c != ':' ) && ( c != '/' ) && ( c != ']' ) && ( dst < lim ) )
    e885e7ea:	0c05                	addi	s8,s8,1
		if( c == '%' )		// Scope (e.g. "%en0" or "%5")
    e885e7ec:	02500793          	li	a5,37
    e885e7f0:	0cf61f63          	bne	a2,a5,e885e8ce <StringToIPv6Address+0x282>
			require_action_quiet( !hasScope, exit, err = kMalformedErr );
    e885e7f4:	ea071fe3          	bnez	a4,e885e6b2 <StringToIPv6Address+0x66>
			require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoScope ), exit, err = kUnexpectedErr );
    e885e7f8:	004bf793          	andi	a5,s7,4
    e885e7fc:	1c079363          	bnez	a5,e885e9c2 <StringToIPv6Address+0x376>
	while( ( ( c = *inStr ) != '\0' ) && ( c != ':' ) && ( c != '/' ) && ( c != ']' ) && ( dst < lim ) )
    e885e800:	04040513          	addi	a0,s0,64
	dst = scopeStr;
    e885e804:	8726                	mv	a4,s1
			++inStr;
    e885e806:	0405                	addi	s0,s0,1
	while( ( ( c = *inStr ) != '\0' ) && ( c != ':' ) && ( c != '/' ) && ( c != ']' ) && ( dst < lim ) )
    e885e808:	03a00313          	li	t1,58
    e885e80c:	05d00e13          	li	t3,93
    e885e810:	00044783          	lbu	a5,0(s0)
    e885e814:	06f37663          	bgeu	t1,a5,e885e880 <StringToIPv6Address+0x234>
    e885e818:	07c79963          	bne	a5,t3,e885e88a <StringToIPv6Address+0x23e>
	*dst = '\0';
    e885e81c:	00070023          	sb	zero,0(a4)
	scope = if_nametoindex( scopeStr );
    e885e820:	8526                	mv	a0,s1
    e885e822:	ec42                	sd	a6,24(sp)
    e885e824:	e836                	sd	a3,16(sp)
    e885e826:	e446                	sd	a7,8(sp)
    e885e828:	e02e                	sd	a1,0(sp)
    e885e82a:	670250ef          	jal	ra,e8883e9a <lwip_if_nametoindex>
    e885e82e:	2501                	sext.w	a0,a0
	if( scope == 0 )
    e885e830:	f911458b          	ldd	a1,a7,(sp),0,4
    e885e834:	fb01468b          	ldd	a3,a6,(sp),1,4
    e885e838:	c93d                	beqz	a0,e885e8ae <StringToIPv6Address+0x262>
			c = *inStr;
    e885e83a:	00044603          	lbu	a2,0(s0)
			hasScope = 1;
    e885e83e:	4705                	li	a4,1
    e885e840:	b775                	j	e885e7ec <StringToIPv6Address+0x1a0>
		*dst++ = (uint8_t)( ( v >> 8 ) & 0xFF );
    e885e842:	00889793          	slli	a5,a7,0x8
    e885e846:	3c88b88b          	extu	a7,a7,15,8
    e885e84a:	0117e8b3          	or	a7,a5,a7
    e885e84e:	01159023          	sh	a7,0(a1)
		*dst++ = (uint8_t)(   v        & 0xFF );
    e885e852:	85ba                	mv	a1,a4
    e885e854:	bfa9                	j	e885e7ae <StringToIPv6Address+0x162>
			lim[ -i ] = colonPtr[ n - i ];
    e885e856:	0007079b          	sext.w	a5,a4
    e885e85a:	40f586bb          	subw	a3,a1,a5
    e885e85e:	80d4450b          	lrbu	a0,s0,a3,0
    e885e862:	40f007bb          	negw	a5,a5
    e885e866:	2781                	sext.w	a5,a5
    e885e868:	00f4d50b          	srb	a0,s1,a5,0
		for( i = 1; i <= n; ++i )
    e885e86c:	2705                	addiw	a4,a4,1
			colonPtr[ n - i ] = 0;
    e885e86e:	00d4500b          	srb	zero,s0,a3,0
		for( i = 1; i <= n; ++i )
    e885e872:	b7b1                	j	e885e7be <StringToIPv6Address+0x172>
	require_action_quiet( dst == lim, exit, err = kUnderrunErr );
    e885e874:	f49587e3          	beq	a1,s1,e885e7c2 <StringToIPv6Address+0x176>
			require_action_quiet( *inStr != '\0', exit, err = kUnderrunErr );
    e885e878:	7579                	lui	a0,0xffffe
    e885e87a:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
    e885e87e:	a211                	j	e885e982 <StringToIPv6Address+0x336>
	while( ( ( c = *inStr ) != '\0' ) && ( c != ':' ) && ( c != '/' ) && ( c != ']' ) && ( dst < lim ) )
    e885e880:	00fc5633          	srl	a2,s8,a5
    e885e884:	0006360b          	extu	a2,a2,0,0
    e885e888:	fa51                	bnez	a2,e885e81c <StringToIPv6Address+0x1d0>
    e885e88a:	f88509e3          	beq	a0,s0,e885e81c <StringToIPv6Address+0x1d0>
		*dst++ = *inStr++;
    e885e88e:	0405                	addi	s0,s0,1
    e885e890:	1817578b          	sbia	a5,(a4),1,0
    e885e894:	bfb5                	j	e885e810 <StringToIPv6Address+0x1c4>
			scope = ( scope * 10 ) + ( c - '0' );
    e885e896:	24ae970b          	mulaw	a4,t4,a0
		for( ptr = scopeStr; ( ( c = *ptr ) >= '0' ) && ( c <= '9' ); ++ptr )
    e885e89a:	0785                	addi	a5,a5,1
			scope = ( scope * 10 ) + ( c - '0' );
    e885e89c:	fd07051b          	addiw	a0,a4,-48
		for( ptr = scopeStr; ( ( c = *ptr ) >= '0' ) && ( c <= '9' ); ++ptr )
    e885e8a0:	0007c703          	lbu	a4,0(a5)
    e885e8a4:	00ee5c63          	bge	t3,a4,e885e8bc <StringToIPv6Address+0x270>
    e885e8a8:	fee357e3          	bge	t1,a4,e885e896 <StringToIPv6Address+0x24a>
    e885e8ac:	b519                	j	e885e6b2 <StringToIPv6Address+0x66>
    e885e8ae:	87a6                	mv	a5,s1
    e885e8b0:	02f00e13          	li	t3,47
    e885e8b4:	03900313          	li	t1,57
			scope = ( scope * 10 ) + ( c - '0' );
    e885e8b8:	4ea9                	li	t4,10
    e885e8ba:	b7dd                	j	e885e8a0 <StringToIPv6Address+0x254>
		require_action_quiet( c == '\0', exit, err = kMalformedErr );
    e885e8bc:	de071be3          	bnez	a4,e885e6b2 <StringToIPv6Address+0x66>
		require_action_quiet( ( ptr != scopeStr ) && ( ( (int)( ptr - scopeStr ) ) <= 10 ), exit, err = kMalformedErr );
    e885e8c0:	de9789e3          	beq	a5,s1,e885e6b2 <StringToIPv6Address+0x66>
    e885e8c4:	9f85                	subw	a5,a5,s1
    e885e8c6:	4729                	li	a4,10
    e885e8c8:	f6f759e3          	bge	a4,a5,e885e83a <StringToIPv6Address+0x1ee>
    e885e8cc:	b3dd                	j	e885e6b2 <StringToIPv6Address+0x66>
		else if( c == ':' )	// Port (e.g. ":80")
    e885e8ce:	03a00793          	li	a5,58
    e885e8d2:	02f61a63          	bne	a2,a5,e885e906 <StringToIPv6Address+0x2ba>
			require_action_quiet( !hasPort, exit, err = kMalformedErr );
    e885e8d6:	dc0d9ee3          	bnez	s11,e885e6b2 <StringToIPv6Address+0x66>
			require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPort ), exit, err = kUnexpectedErr );
    e885e8da:	0e081463          	bnez	a6,e885e9c2 <StringToIPv6Address+0x376>
			while( ( ( c = *( ++inStr ) ) != '\0' ) && ( ( c >= '0' ) && ( c <= '9' ) ) ) port = ( port * 10 ) + ( c - '0' );
    e885e8de:	4325                	li	t1,9
    e885e8e0:	4ea9                	li	t4,10
    e885e8e2:	8814460b          	lbuib	a2,(s0),1,0
    e885e8e6:	c611                	beqz	a2,e885e8f2 <StringToIPv6Address+0x2a6>
    e885e8e8:	fd060e1b          	addiw	t3,a2,-48
    e885e8ec:	87f2                	mv	a5,t3
    e885e8ee:	01c37763          	bgeu	t1,t3,e885e8fc <StringToIPv6Address+0x2b0>
			require_action_quiet( port <= 65535, exit, err = kRangeErr );
    e885e8f2:	67c1                	lui	a5,0x10
    e885e8f4:	0cfcdb63          	bge	s9,a5,e885e9ca <StringToIPv6Address+0x37e>
			hasPort = 1;
    e885e8f8:	4d85                	li	s11,1
    e885e8fa:	bdcd                	j	e885e7ec <StringToIPv6Address+0x1a0>
			while( ( ( c = *( ++inStr ) ) != '\0' ) && ( ( c >= '0' ) && ( c <= '9' ) ) ) port = ( port * 10 ) + ( c - '0' );
    e885e8fc:	863e                	mv	a2,a5
    e885e8fe:	259e960b          	mulaw	a2,t4,s9
    e885e902:	8cb2                	mv	s9,a2
    e885e904:	bff9                	j	e885e8e2 <StringToIPv6Address+0x296>
		else if( c == '/' )	// Prefix Length (e.g. "/64")
    e885e906:	02f00793          	li	a5,47
    e885e90a:	02f61a63          	bne	a2,a5,e885e93e <StringToIPv6Address+0x2f2>
			require_action_quiet( !hasPrefix, exit, err = kMalformedErr );
    e885e90e:	da0892e3          	bnez	a7,e885e6b2 <StringToIPv6Address+0x66>
			require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPrefix ), exit, err = kUnexpectedErr );
    e885e912:	eac5                	bnez	a3,e885e9c2 <StringToIPv6Address+0x376>
			while( ( ( c = *( ++inStr ) ) != '\0' ) && ( ( c >= '0' ) && ( c <= '9' ) ) ) prefix = ( prefix * 10 ) + ( c - '0' );
    e885e914:	48a5                	li	a7,9
    e885e916:	4e29                	li	t3,10
    e885e918:	8814460b          	lbuib	a2,(s0),1,0
    e885e91c:	c611                	beqz	a2,e885e928 <StringToIPv6Address+0x2dc>
    e885e91e:	fd06031b          	addiw	t1,a2,-48
    e885e922:	879a                	mv	a5,t1
    e885e924:	0068f863          	bgeu	a7,t1,e885e934 <StringToIPv6Address+0x2e8>
			require_action_quiet( ( prefix >= 0 ) && ( prefix <= 128 ), exit, err = kRangeErr );
    e885e928:	08000793          	li	a5,128
    e885e92c:	09a7ef63          	bltu	a5,s10,e885e9ca <StringToIPv6Address+0x37e>
			hasPrefix = 1;
    e885e930:	4885                	li	a7,1
    e885e932:	bd6d                	j	e885e7ec <StringToIPv6Address+0x1a0>
			while( ( ( c = *( ++inStr ) ) != '\0' ) && ( ( c >= '0' ) && ( c <= '9' ) ) ) prefix = ( prefix * 10 ) + ( c - '0' );
    e885e934:	863e                	mv	a2,a5
    e885e936:	25ae160b          	mulaw	a2,t3,s10
    e885e93a:	8d32                	mv	s10,a2
    e885e93c:	bff1                	j	e885e918 <StringToIPv6Address+0x2cc>
		else if( c == ']' )
    e885e93e:	05d00793          	li	a5,93
    e885e942:	00f61963          	bne	a2,a5,e885e954 <StringToIPv6Address+0x308>
			require_action_quiet( !hasBracket, exit, err = kMalformedErr );
    e885e946:	d60596e3          	bnez	a1,e885e6b2 <StringToIPv6Address+0x66>
			c = *( ++inStr );
    e885e94a:	00144603          	lbu	a2,1(s0)
			hasBracket = 1;
    e885e94e:	4585                	li	a1,1
			c = *( ++inStr );
    e885e950:	0405                	addi	s0,s0,1
    e885e952:	bd69                	j	e885e7ec <StringToIPv6Address+0x1a0>
	if( outIPv6 )				 for( i = 0; i < 16; ++i ) outIPv6[ i ] = ipv6[ i ];
    e885e954:	4781                	li	a5,0
    e885e956:	46c1                	li	a3,16
    e885e958:	04091463          	bnez	s2,e885e9a0 <StringToIPv6Address+0x354>
	if( outScope  && hasScope )  *outScope	= scope;
    e885e95c:	04099b63          	bnez	s3,e885e9b2 <StringToIPv6Address+0x366>
	if( outPort   && hasPort )   *outPort	= port;
    e885e960:	000a0663          	beqz	s4,e885e96c <StringToIPv6Address+0x320>
    e885e964:	000d8463          	beqz	s11,e885e96c <StringToIPv6Address+0x320>
    e885e968:	019a2023          	sw	s9,0(s4)
	if( outPrefix && hasPrefix ) *outPrefix	= prefix;
    e885e96c:	000a8663          	beqz	s5,e885e978 <StringToIPv6Address+0x32c>
    e885e970:	00088463          	beqz	a7,e885e978 <StringToIPv6Address+0x32c>
    e885e974:	01aaa023          	sw	s10,0(s5)
	err = kNoErr;
    e885e978:	4501                	li	a0,0
	if( outStr )				 *outStr	= inStr;
    e885e97a:	000b0463          	beqz	s6,e885e982 <StringToIPv6Address+0x336>
    e885e97e:	008b3023          	sd	s0,0(s6)
}
    e885e982:	60ee                	ld	ra,216(sp)
    e885e984:	644e                	ld	s0,208(sp)
    e885e986:	64ae                	ld	s1,200(sp)
    e885e988:	690e                	ld	s2,192(sp)
    e885e98a:	79ea                	ld	s3,184(sp)
    e885e98c:	7a4a                	ld	s4,176(sp)
    e885e98e:	7aaa                	ld	s5,168(sp)
    e885e990:	7b0a                	ld	s6,160(sp)
    e885e992:	6bea                	ld	s7,152(sp)
    e885e994:	6c4a                	ld	s8,144(sp)
    e885e996:	6caa                	ld	s9,136(sp)
    e885e998:	6d0a                	ld	s10,128(sp)
    e885e99a:	7de6                	ld	s11,120(sp)
    e885e99c:	612d                	addi	sp,sp,224
    e885e99e:	8082                	ret
	if( outIPv6 )				 for( i = 0; i < 16; ++i ) outIPv6[ i ] = ipv6[ i ];
    e885e9a0:	1010                	addi	a2,sp,32
    e885e9a2:	80f6460b          	lrbu	a2,a2,a5,0
    e885e9a6:	00f9560b          	srb	a2,s2,a5,0
    e885e9aa:	0785                	addi	a5,a5,1
    e885e9ac:	fed79ae3          	bne	a5,a3,e885e9a0 <StringToIPv6Address+0x354>
    e885e9b0:	b775                	j	e885e95c <StringToIPv6Address+0x310>
	if( outScope  && hasScope )  *outScope	= scope;
    e885e9b2:	d75d                	beqz	a4,e885e960 <StringToIPv6Address+0x314>
    e885e9b4:	00a9a023          	sw	a0,0(s3)
    e885e9b8:	b765                	j	e885e960 <StringToIPv6Address+0x314>
	require_action( inStr, exit, err = kParamErr );
    e885e9ba:	7579                	lui	a0,0xffffe
    e885e9bc:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e885e9c0:	8082                	ret
			require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoScope ), exit, err = kUnexpectedErr );
    e885e9c2:	7579                	lui	a0,0xffffe
    e885e9c4:	5b050513          	addi	a0,a0,1456 # ffffffffffffe5b0 <__DRAM0_INF_BASE+0xffffffff0000e5b0>
    e885e9c8:	bf6d                	j	e885e982 <StringToIPv6Address+0x336>
			require_action_quiet( v <= 0xFFFF, exit, err = kRangeErr );
    e885e9ca:	7579                	lui	a0,0xffffe
    e885e9cc:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
    e885e9d0:	bf4d                	j	e885e982 <StringToIPv6Address+0x336>

00000000e885e9d2 <StringToIPv4Address>:
{
    e885e9d2:	711d                	addi	sp,sp,-96
    e885e9d4:	ec86                	sd	ra,88(sp)
    e885e9d6:	e8a2                	sd	s0,80(sp)
    e885e9d8:	e4a6                	sd	s1,72(sp)
    e885e9da:	e0ca                	sd	s2,64(sp)
    e885e9dc:	fc4e                	sd	s3,56(sp)
    e885e9de:	f852                	sd	s4,48(sp)
    e885e9e0:	f456                	sd	s5,40(sp)
    e885e9e2:	e42a                	sd	a0,8(sp)
	require_action( inStr, exit, err = kParamErr );
    e885e9e4:	12050463          	beqz	a0,e885eb0c <StringToIPv4Address+0x13a>
    e885e9e8:	8932                	mv	s2,a2
    e885e9ea:	842e                	mv	s0,a1
	err = ParseIPv4Address( inStr, buf, &inStr );
    e885e9ec:	0030                	addi	a2,sp,8
    e885e9ee:	082c                	addi	a1,sp,24
    e885e9f0:	8ac2                	mv	s5,a6
    e885e9f2:	84be                	mv	s1,a5
    e885e9f4:	8a3a                	mv	s4,a4
    e885e9f6:	89b6                	mv	s3,a3
    e885e9f8:	a65ff0ef          	jal	ra,e885e45c <ParseIPv4Address>
	require_noerr_quiet( err, exit );
    e885e9fc:	e931                	bnez	a0,e885ea50 <StringToIPv4Address+0x7e>
	c = *inStr;
    e885e9fe:	67a2                	ld	a5,8(sp)
    e885ea00:	4862                	lw	a6,24(sp)
    e885ea02:	0007c303          	lbu	t1,0(a5) # 10000 <memcmp-0xe87f0000>
	if( c == ':' )
    e885ea06:	03a00793          	li	a5,58
    e885ea0a:	9008180b          	revw	a6,a6
    e885ea0e:	04f31f63          	bne	t1,a5,e885ea6c <StringToIPv4Address+0x9a>
		require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPort ), exit, err = kUnexpectedErr );
    e885ea12:	00147893          	andi	a7,s0,1
	port    = 0;
    e885ea16:	4601                	li	a2,0
		require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPort ), exit, err = kUnexpectedErr );
    e885ea18:	02089963          	bnez	a7,e885ea4a <StringToIPv4Address+0x78>
		while( ( ( c = *( ++inStr ) ) != '\0' ) && ( ( c >= '0' ) && ( c <= '9' ) ) ) port = ( port * 10 ) + ( c - '0' );
    e885ea1c:	4725                	li	a4,9
    e885ea1e:	45a9                	li	a1,10
    e885ea20:	67a2                	ld	a5,8(sp)
    e885ea22:	00178693          	addi	a3,a5,1
    e885ea26:	e436                	sd	a3,8(sp)
    e885ea28:	0017c303          	lbu	t1,1(a5)
    e885ea2c:	0e030463          	beqz	t1,e885eb14 <StringToIPv4Address+0x142>
    e885ea30:	fd03069b          	addiw	a3,t1,-48
    e885ea34:	87b6                	mv	a5,a3
    e885ea36:	02d77663          	bgeu	a4,a3,e885ea62 <StringToIPv4Address+0x90>
		require_action_quiet( port <= 65535, exit, err = kRangeErr );
    e885ea3a:	67c1                	lui	a5,0x10
		hasPort = 1;
    e885ea3c:	4705                	li	a4,1
		require_action_quiet( port <= 65535, exit, err = kRangeErr );
    e885ea3e:	02f64963          	blt	a2,a5,e885ea70 <StringToIPv4Address+0x9e>
    e885ea42:	7579                	lui	a0,0xffffe
    e885ea44:	5ca50513          	addi	a0,a0,1482 # ffffffffffffe5ca <__DRAM0_INF_BASE+0xffffffff0000e5ca>
    e885ea48:	a021                	j	e885ea50 <StringToIPv4Address+0x7e>
		require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPort ), exit, err = kUnexpectedErr );
    e885ea4a:	7579                	lui	a0,0xffffe
    e885ea4c:	5b050513          	addi	a0,a0,1456 # ffffffffffffe5b0 <__DRAM0_INF_BASE+0xffffffff0000e5b0>
}
    e885ea50:	60e6                	ld	ra,88(sp)
    e885ea52:	6446                	ld	s0,80(sp)
    e885ea54:	64a6                	ld	s1,72(sp)
    e885ea56:	6906                	ld	s2,64(sp)
    e885ea58:	79e2                	ld	s3,56(sp)
    e885ea5a:	7a42                	ld	s4,48(sp)
    e885ea5c:	7aa2                	ld	s5,40(sp)
    e885ea5e:	6125                	addi	sp,sp,96
    e885ea60:	8082                	ret
		while( ( ( c = *( ++inStr ) ) != '\0' ) && ( ( c >= '0' ) && ( c <= '9' ) ) ) port = ( port * 10 ) + ( c - '0' );
    e885ea62:	86be                	mv	a3,a5
    e885ea64:	24c5968b          	mulaw	a3,a1,a2
    e885ea68:	8636                	mv	a2,a3
    e885ea6a:	bf5d                	j	e885ea20 <StringToIPv4Address+0x4e>
	port    = 0;
    e885ea6c:	4601                	li	a2,0
	hasPort = 0;
    e885ea6e:	4701                	li	a4,0
	if( c == '/' )
    e885ea70:	02f00793          	li	a5,47
    e885ea74:	08f31463          	bne	t1,a5,e885eafc <StringToIPv4Address+0x12a>
		require_action_quiet( !( inFlags & kStringToIPAddressFlagsNoPrefix ), exit, err = kUnexpectedErr );
    e885ea78:	00247893          	andi	a7,s0,2
    e885ea7c:	2881                	sext.w	a7,a7
    e885ea7e:	fc0896e3          	bnez	a7,e885ea4a <StringToIPv4Address+0x78>
	prefix     = 0;
    e885ea82:	4781                	li	a5,0
		while( ( ( c = *( ++inStr ) ) != '\0' ) && ( ( c >= '0' ) && ( c <= '9' ) ) ) prefix = ( prefix * 10 ) + ( c - '0' );
    e885ea84:	4325                	li	t1,9
    e885ea86:	4e29                	li	t3,10
    e885ea88:	66a2                	ld	a3,8(sp)
    e885ea8a:	00168593          	addi	a1,a3,1
    e885ea8e:	e42e                	sd	a1,8(sp)
    e885ea90:	0016c683          	lbu	a3,1(a3)
    e885ea94:	c691                	beqz	a3,e885eaa0 <StringToIPv4Address+0xce>
    e885ea96:	fd06869b          	addiw	a3,a3,-48
    e885ea9a:	85b6                	mv	a1,a3
    e885ea9c:	04d37b63          	bgeu	t1,a3,e885eaf2 <StringToIPv4Address+0x120>
		require_action_quiet( ( prefix >= 0 ) && ( prefix <= 32 ), exit, err = kRangeErr );
    e885eaa0:	02000693          	li	a3,32
    e885eaa4:	f8f6efe3          	bltu	a3,a5,e885ea42 <StringToIPv4Address+0x70>
		subnetMask = ( prefix > 0 ) ? ( UINT32_C( 0xFFFFFFFF ) << ( 32 - prefix ) ) : 0;
    e885eaa8:	cb81                	beqz	a5,e885eab8 <StringToIPv4Address+0xe6>
    e885eaaa:	02000893          	li	a7,32
    e885eaae:	40f887bb          	subw	a5,a7,a5
    e885eab2:	58fd                	li	a7,-1
    e885eab4:	00f898bb          	sllw	a7,a7,a5
		router	   = ( ip & subnetMask ) | 1;
    e885eab8:	0108f5b3          	and	a1,a7,a6
    e885eabc:	0015e593          	ori	a1,a1,1
    e885eac0:	2581                	sext.w	a1,a1
		hasPrefix = 1;
    e885eac2:	4305                	li	t1,1
	if( outIP )					 *outIP		= ip;
    e885eac4:	00090463          	beqz	s2,e885eacc <StringToIPv4Address+0xfa>
    e885eac8:	01092023          	sw	a6,0(s2)
	if( outPort   && hasPort )	 *outPort	= port;
    e885eacc:	00098563          	beqz	s3,e885ead6 <StringToIPv4Address+0x104>
    e885ead0:	c319                	beqz	a4,e885ead6 <StringToIPv4Address+0x104>
    e885ead2:	00c9a023          	sw	a2,0(s3)
	if( outSubnet && hasPrefix ) *outSubnet	= subnetMask;
    e885ead6:	020a0763          	beqz	s4,e885eb04 <StringToIPv4Address+0x132>
    e885eada:	00030663          	beqz	t1,e885eae6 <StringToIPv4Address+0x114>
    e885eade:	011a2023          	sw	a7,0(s4)
	if( outRouter && hasPrefix ) *outRouter	= router;
    e885eae2:	c091                	beqz	s1,e885eae6 <StringToIPv4Address+0x114>
    e885eae4:	c08c                	sw	a1,0(s1)
	if( outStr )				 *outStr	= inStr;
    e885eae6:	f60a85e3          	beqz	s5,e885ea50 <StringToIPv4Address+0x7e>
    e885eaea:	67a2                	ld	a5,8(sp)
    e885eaec:	00fab023          	sd	a5,0(s5)
    e885eaf0:	b785                	j	e885ea50 <StringToIPv4Address+0x7e>
		while( ( ( c = *( ++inStr ) ) != '\0' ) && ( ( c >= '0' ) && ( c <= '9' ) ) ) prefix = ( prefix * 10 ) + ( c - '0' );
    e885eaf2:	86ae                	mv	a3,a1
    e885eaf4:	24fe168b          	mulaw	a3,t3,a5
    e885eaf8:	87b6                	mv	a5,a3
    e885eafa:	b779                	j	e885ea88 <StringToIPv4Address+0xb6>
	hasPrefix  = 0;
    e885eafc:	4301                	li	t1,0
	router     = 0;
    e885eafe:	4581                	li	a1,0
	subnetMask = 0;
    e885eb00:	4881                	li	a7,0
    e885eb02:	b7c9                	j	e885eac4 <StringToIPv4Address+0xf2>
	if( outRouter && hasPrefix ) *outRouter	= router;
    e885eb04:	d0ed                	beqz	s1,e885eae6 <StringToIPv4Address+0x114>
    e885eb06:	fc031fe3          	bnez	t1,e885eae4 <StringToIPv4Address+0x112>
    e885eb0a:	bff1                	j	e885eae6 <StringToIPv4Address+0x114>
	require_action( inStr, exit, err = kParamErr );
    e885eb0c:	7579                	lui	a0,0xffffe
    e885eb0e:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
	return( err );
    e885eb12:	bf3d                	j	e885ea50 <StringToIPv4Address+0x7e>
		require_action_quiet( port <= 65535, exit, err = kRangeErr );
    e885eb14:	67c1                	lui	a5,0x10
    e885eb16:	f2f656e3          	bge	a2,a5,e885ea42 <StringToIPv4Address+0x70>
	router     = 0;
    e885eb1a:	4581                	li	a1,0
		hasPort = 1;
    e885eb1c:	4705                	li	a4,1
    e885eb1e:	b75d                	j	e885eac4 <StringToIPv4Address+0xf2>

00000000e885eb20 <IPv6AddressToCString>:
{
    e885eb20:	7151                	addi	sp,sp,-240
    e885eb22:	eda6                	sd	s1,216(sp)
    e885eb24:	f586                	sd	ra,232(sp)
    e885eb26:	f1a2                	sd	s0,224(sp)
    e885eb28:	84ae                	mv	s1,a1
	if( ( inPort > 0 ) || ( inPort == kIPv6AddressToCStringForceIPv6Brackets )  )
    e885eb2a:	00c04663          	bgtz	a2,e885eb36 <IPv6AddressToCString+0x16>
    e885eb2e:	5879                	li	a6,-2
	char *		dst = inBuffer;
    e885eb30:	85ba                	mv	a1,a4
	if( ( inPort > 0 ) || ( inPort == kIPv6AddressToCStringForceIPv6Brackets )  )
    e885eb32:	01061763          	bne	a2,a6,e885eb40 <IPv6AddressToCString+0x20>
		*dst++ = '[';
    e885eb36:	85ba                	mv	a1,a4
    e885eb38:	05b00813          	li	a6,91
    e885eb3c:	1815d80b          	sbia	a6,(a1),1,0
	v4Mapped = IsIPv4MappedIPv6Address( inAddr );
    e885eb40:	00054803          	lbu	a6,0(a0)
    e885eb44:	1c081e63          	bnez	a6,e885ed20 <IPv6AddressToCString+0x200>
    e885eb48:	00154803          	lbu	a6,1(a0)
    e885eb4c:	1a081463          	bnez	a6,e885ecf4 <IPv6AddressToCString+0x1d4>
    e885eb50:	00254803          	lbu	a6,2(a0)
    e885eb54:	0ff87893          	andi	a7,a6,255
    e885eb58:	04089863          	bnez	a7,e885eba8 <IPv6AddressToCString+0x88>
    e885eb5c:	00354883          	lbu	a7,3(a0)
    e885eb60:	04089463          	bnez	a7,e885eba8 <IPv6AddressToCString+0x88>
    e885eb64:	00454883          	lbu	a7,4(a0)
    e885eb68:	04089063          	bnez	a7,e885eba8 <IPv6AddressToCString+0x88>
    e885eb6c:	00554883          	lbu	a7,5(a0)
    e885eb70:	02089c63          	bnez	a7,e885eba8 <IPv6AddressToCString+0x88>
    e885eb74:	00654883          	lbu	a7,6(a0)
    e885eb78:	02089863          	bnez	a7,e885eba8 <IPv6AddressToCString+0x88>
    e885eb7c:	00754883          	lbu	a7,7(a0)
    e885eb80:	02089463          	bnez	a7,e885eba8 <IPv6AddressToCString+0x88>
    e885eb84:	00854883          	lbu	a7,8(a0)
    e885eb88:	02089063          	bnez	a7,e885eba8 <IPv6AddressToCString+0x88>
    e885eb8c:	00954883          	lbu	a7,9(a0)
    e885eb90:	00089c63          	bnez	a7,e885eba8 <IPv6AddressToCString+0x88>
    e885eb94:	00a54883          	lbu	a7,10(a0)
    e885eb98:	0ff00313          	li	t1,255
    e885eb9c:	00689663          	bne	a7,t1,e885eba8 <IPv6AddressToCString+0x88>
    e885eba0:	00b54303          	lbu	t1,11(a0)
    e885eba4:	15130663          	beq	t1,a7,e885ecf0 <IPv6AddressToCString+0x1d0>
	v4Compat = IsIPv4CompatibleIPv6Address( inAddr );
    e885eba8:	0ff87813          	andi	a6,a6,255
	v4Mapped = IsIPv4MappedIPv6Address( inAddr );
    e885ebac:	4881                	li	a7,0
	v4Compat = IsIPv4CompatibleIPv6Address( inAddr );
    e885ebae:	14081463          	bnez	a6,e885ecf6 <IPv6AddressToCString+0x1d6>
    e885ebb2:	00354303          	lbu	t1,3(a0)
    e885ebb6:	4801                	li	a6,0
    e885ebb8:	06031f63          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebbc:	00454303          	lbu	t1,4(a0)
    e885ebc0:	06031b63          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebc4:	00554303          	lbu	t1,5(a0)
    e885ebc8:	06031763          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebcc:	00654303          	lbu	t1,6(a0)
    e885ebd0:	06031363          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebd4:	00754303          	lbu	t1,7(a0)
    e885ebd8:	04031f63          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebdc:	00854303          	lbu	t1,8(a0)
    e885ebe0:	04031b63          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebe4:	00954303          	lbu	t1,9(a0)
    e885ebe8:	04031763          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebec:	00a54303          	lbu	t1,10(a0)
    e885ebf0:	04031363          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebf4:	00b54303          	lbu	t1,11(a0)
    e885ebf8:	02031f63          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ebfc:	00c54303          	lbu	t1,12(a0)
    e885ec00:	4805                	li	a6,1
    e885ec02:	02031a63          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ec06:	00d54303          	lbu	t1,13(a0)
    e885ec0a:	02031663          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ec0e:	00e54303          	lbu	t1,14(a0)
    e885ec12:	0ff37813          	andi	a6,t1,255
    e885ec16:	00081663          	bnez	a6,e885ec22 <IPv6AddressToCString+0x102>
    e885ec1a:	00f54e03          	lbu	t3,15(a0)
    e885ec1e:	000e0c63          	beqz	t3,e885ec36 <IPv6AddressToCString+0x116>
    e885ec22:	0ff37313          	andi	t1,t1,255
    e885ec26:	4805                	li	a6,1
    e885ec28:	00031763          	bnez	t1,e885ec36 <IPv6AddressToCString+0x116>
    e885ec2c:	00f54803          	lbu	a6,15(a0)
    e885ec30:	187d                	addi	a6,a6,-1
    e885ec32:	01003833          	snez	a6,a6
	if( v4Mapped || v4Compat )
    e885ec36:	01186833          	or	a6,a6,a7
    e885ec3a:	0e080363          	beqz	a6,e885ed20 <IPv6AddressToCString+0x200>
		*dst++ = ':';
    e885ec3e:	6811                	lui	a6,0x4
    e885ec40:	a3a8081b          	addiw	a6,a6,-1478
    e885ec44:	01059023          	sh	a6,0(a1)
		if( v4Mapped )
    e885ec48:	0a089963          	bnez	a7,e885ecfa <IPv6AddressToCString+0x1da>
		*dst++ = ':';
    e885ec4c:	0589                	addi	a1,a1,2
			*dst++ = ':';
    e885ec4e:	48b1                	li	a7,12
			append_decimal_string( x, dst );
    e885ec50:	4ea9                	li	t4,10
    e885ec52:	4fa5                	li	t6,9
			if( i != 15 ) *dst++ = '.';
    e885ec54:	42bd                	li	t0,15
    e885ec56:	02e00393          	li	t2,46
		for( i = 12; i < 16; ++i )
    e885ec5a:	4f41                	li	t5,16
			x = inAddr[ i ];
    e885ec5c:	8115430b          	lrbu	t1,a0,a7,0
			append_decimal_string( x, dst );
    e885ec60:	09010813          	addi	a6,sp,144
    e885ec64:	8442                	mv	s0,a6
    e885ec66:	03d36e3b          	remw	t3,t1,t4
    e885ec6a:	030e0e1b          	addiw	t3,t3,48
    e885ec6e:	18185e0b          	sbia	t3,(a6),1,0
    e885ec72:	03d34e3b          	divw	t3,t1,t4
    e885ec76:	086fce63          	blt	t6,t1,e885ed12 <IPv6AddressToCString+0x1f2>
    e885ec7a:	09046e63          	bltu	s0,a6,e885ed16 <IPv6AddressToCString+0x1f6>
			if( i != 15 ) *dst++ = '.';
    e885ec7e:	00588463          	beq	a7,t0,e885ec86 <IPv6AddressToCString+0x166>
    e885ec82:	1815d38b          	sbia	t2,(a1),1,0
		for( i = 12; i < 16; ++i )
    e885ec86:	0885                	addi	a7,a7,1
    e885ec88:	fde89ae3          	bne	a7,t5,e885ec5c <IPv6AddressToCString+0x13c>
	if( inScope > 0 )	// Scope
    e885ec8c:	1c048563          	beqz	s1,e885ee56 <IPv6AddressToCString+0x336>
		*dst++ = '%';
    e885ec90:	02500513          	li	a0,37
    e885ec94:	00a58023          	sb	a0,0(a1)
		if( inFlags & kIPv6AddressToCStringEscapeScopeID )
    e885ec98:	8b85                	andi	a5,a5,1
		*dst++ = '%';
    e885ec9a:	00158413          	addi	s0,a1,1
		if( inFlags & kIPv6AddressToCStringEscapeScopeID )
    e885ec9e:	cb81                	beqz	a5,e885ecae <IPv6AddressToCString+0x18e>
			*dst++ = '2';
    e885eca0:	678d                	lui	a5,0x3
    e885eca2:	5327879b          	addiw	a5,a5,1330
			*dst++ = '5';
    e885eca6:	00358413          	addi	s0,a1,3
			*dst++ = '2';
    e885ecaa:	00f590a3          	sh	a5,1(a1)
			p = if_indextoname( (unsigned int) inScope, buf );
    e885ecae:	090c                	addi	a1,sp,144
    e885ecb0:	8526                	mv	a0,s1
    e885ecb2:	ec3a                	sd	a4,24(sp)
    e885ecb4:	e836                	sd	a3,16(sp)
    e885ecb6:	e432                	sd	a2,8(sp)
    e885ecb8:	1aa250ef          	jal	ra,e8883e62 <lwip_if_indextoname>
			if( p && ( *p != '\0' ) )	while( ( c = *p++ ) != '\0' ) *dst++ = c;
    e885ecbc:	6622                	ld	a2,8(sp)
    e885ecbe:	fae1468b          	ldd	a3,a4,(sp),1,4
    e885ecc2:	c509                	beqz	a0,e885eccc <IPv6AddressToCString+0x1ac>
    e885ecc4:	00054783          	lbu	a5,0(a0)
    e885ecc8:	1e079c63          	bnez	a5,e885eec0 <IPv6AddressToCString+0x3a0>
    e885eccc:	00bc                	addi	a5,sp,72
			else						append_decimal_string( inScope, dst );
    e885ecce:	4529                	li	a0,10
    e885ecd0:	4825                	li	a6,9
    e885ecd2:	02a4f5bb          	remuw	a1,s1,a0
    e885ecd6:	0305859b          	addiw	a1,a1,48
    e885ecda:	1817d58b          	sbia	a1,(a5),1,0
    e885ecde:	02a4d5bb          	divuw	a1,s1,a0
    e885ece2:	1e986163          	bltu	a6,s1,e885eec4 <IPv6AddressToCString+0x3a4>
    e885ece6:	00ac                	addi	a1,sp,72
    e885ece8:	1ef5e063          	bltu	a1,a5,e885eec8 <IPv6AddressToCString+0x3a8>
    e885ecec:	85a2                	mv	a1,s0
    e885ecee:	a2a5                	j	e885ee56 <IPv6AddressToCString+0x336>
	v4Mapped = IsIPv4MappedIPv6Address( inAddr );
    e885ecf0:	4885                	li	a7,1
    e885ecf2:	b5c1                	j	e885ebb2 <IPv6AddressToCString+0x92>
    e885ecf4:	4881                	li	a7,0
	v4Compat = IsIPv4CompatibleIPv6Address( inAddr );
    e885ecf6:	4801                	li	a6,0
    e885ecf8:	bf3d                	j	e885ec36 <IPv6AddressToCString+0x116>
			*dst++ = 'f';
    e885ecfa:	66666837          	lui	a6,0x66666
    e885ecfe:	6668081b          	addiw	a6,a6,1638
    e885ed02:	0105a123          	sw	a6,2(a1)
			*dst++ = ':';
    e885ed06:	03a00813          	li	a6,58
    e885ed0a:	01058323          	sb	a6,6(a1)
    e885ed0e:	059d                	addi	a1,a1,7
    e885ed10:	bf3d                	j	e885ec4e <IPv6AddressToCString+0x12e>
			append_decimal_string( x, dst );
    e885ed12:	8372                	mv	t1,t3
    e885ed14:	bf89                	j	e885ec66 <IPv6AddressToCString+0x146>
    e885ed16:	89f8430b          	lbuib	t1,(a6),-1,0
    e885ed1a:	1815d30b          	sbia	t1,(a1),1,0
    e885ed1e:	bfb1                	j	e885ec7a <IPv6AddressToCString+0x15a>
    e885ed20:	00150f93          	addi	t6,a0,1
    e885ed24:	06810893          	addi	a7,sp,104
    e885ed28:	837e                	mv	t1,t6
    e885ed2a:	01150393          	addi	t2,a0,17
    e885ed2e:	00044e97          	auipc	t4,0x44
    e885ed32:	47ae8e93          	addi	t4,t4,1146 # e88a31a8 <mDNSInterface_Unicast+0x428>
		u8 = inAddr[ i++ ];
    e885ed36:	fff34e03          	lbu	t3,-1(t1)
		u4 = (uint8_t)( u8 >> 4 );
    e885ed3a:	004e5813          	srli	a6,t3,0x4
		if( u4 != 0 )
    e885ed3e:	0c080663          	beqz	a6,e885ee0a <IPv6AddressToCString+0x2ea>
			seg[ j++ ] = kHexDigitsLowercase[ u4 ];
    e885ed42:	810ec80b          	lrbu	a6,t4,a6,0
			skip = 0;
    e885ed46:	4f01                	li	t5,0
			seg[ j++ ] = kHexDigitsLowercase[ u4 ];
    e885ed48:	01088023          	sb	a6,0(a7)
    e885ed4c:	4805                	li	a6,1
		u4 = (uint8_t)( u8 & 0x0F );
    e885ed4e:	00fe7e13          	andi	t3,t3,15
		if( ( skip == 0 ) || ( ( skip == 1 ) && ( u4 != 0 ) ) )
    e885ed52:	000f0463          	beqz	t5,e885ed5a <IPv6AddressToCString+0x23a>
    e885ed56:	000e0863          	beqz	t3,e885ed66 <IPv6AddressToCString+0x246>
			seg[ j++ ] = kHexDigitsLowercase[ u4 ];
    e885ed5a:	81cece0b          	lrbu	t3,t4,t3,0
			skip = 0;
    e885ed5e:	4f01                	li	t5,0
			seg[ j++ ] = kHexDigitsLowercase[ u4 ];
    e885ed60:	0108de0b          	srb	t3,a7,a6,0
    e885ed64:	2805                	addiw	a6,a6,1
		u8 = inAddr[ i++ ];
    e885ed66:	00034e03          	lbu	t3,0(t1)
		u4 = (uint8_t)( u8 >> 4 );
    e885ed6a:	004e5293          	srli	t0,t3,0x4
		if( ( skip == 0 ) || ( ( skip == 1 ) && ( u4 != 0 ) ) )
    e885ed6e:	000f0463          	beqz	t5,e885ed76 <IPv6AddressToCString+0x256>
    e885ed72:	00028763          	beqz	t0,e885ed80 <IPv6AddressToCString+0x260>
			seg[ j++ ] = kHexDigitsLowercase[ u4 ];
    e885ed76:	805ecf0b          	lrbu	t5,t4,t0,0
    e885ed7a:	0108df0b          	srb	t5,a7,a6,0
    e885ed7e:	2805                	addiw	a6,a6,1
		seg[ j++ ] = kHexDigitsLowercase[ u4 ];
    e885ed80:	00fe7e13          	andi	t3,t3,15
    e885ed84:	81cece0b          	lrbu	t3,t4,t3,0
    e885ed88:	0309                	addi	t1,t1,2
    e885ed8a:	0108de0b          	srb	t3,a7,a6,0
		seg[ j ] = '\0';
    e885ed8e:	2805                	addiw	a6,a6,1
    e885ed90:	0108d00b          	srb	zero,a7,a6,0
	for( i = 0; i < 16; )
    e885ed94:	0895                	addi	a7,a7,5
    e885ed96:	fa6390e3          	bne	t2,t1,e885ed36 <IPv6AddressToCString+0x216>
    e885ed9a:	481d                	li	a6,7
	j = 0;
    e885ed9c:	4881                	li	a7,0
		runs[ i ] = j;
    e885ed9e:	02810313          	addi	t1,sp,40
	for( i = 7; i >= 0; --i )
    e885eda2:	5e7d                	li	t3,-1
		if( ( inAddr[ x ] == 0 ) && ( inAddr[ x + 1  ] == 0 ) ) ++j;
    e885eda4:	83054e8b          	lrbu	t4,a0,a6,1
    e885eda8:	060e9463          	bnez	t4,e885ee10 <IPv6AddressToCString+0x2f0>
    e885edac:	830fce8b          	lrbu	t4,t6,a6,1
    e885edb0:	060e9063          	bnez	t4,e885ee10 <IPv6AddressToCString+0x2f0>
    e885edb4:	2885                	addiw	a7,a7,1
		runs[ i ] = j;
    e885edb6:	4503588b          	srw	a7,t1,a6,2
	for( i = 7; i >= 0; --i )
    e885edba:	187d                	addi	a6,a6,-1
    e885edbc:	ffc814e3          	bne	a6,t3,e885eda4 <IPv6AddressToCString+0x284>
    e885edc0:	4501                	li	a0,0
	k = -1;
    e885edc2:	58fd                	li	a7,-1
	j = 0;
    e885edc4:	4801                	li	a6,0
	for( i = 0; i < 8; ++i )
    e885edc6:	4ea1                	li	t4,8
		x = runs[ i ];
    e885edc8:	44a34e0b          	lrw	t3,t1,a0,2
    e885edcc:	00050f1b          	sext.w	t5,a0
		if( x > j )
    e885edd0:	01c85463          	bge	a6,t3,e885edd8 <IPv6AddressToCString+0x2b8>
    e885edd4:	88fa                	mv	a7,t5
    e885edd6:	8872                	mv	a6,t3
	for( i = 0; i < 8; ++i )
    e885edd8:	0505                	addi	a0,a0,1
    e885edda:	ffd517e3          	bne	a0,t4,e885edc8 <IPv6AddressToCString+0x2a8>
	for( i = 0; i < 8; ++i )
    e885edde:	4501                	li	a0,0
    e885ede0:	4295                	li	t0,5
		if( i != 7 ) *dst++ = ':';
    e885ede2:	4f1d                	li	t5,7
    e885ede4:	03a00e13          	li	t3,58
		if( i == k )
    e885ede8:	02a89663          	bne	a7,a0,e885ee14 <IPv6AddressToCString+0x2f4>
			if( i == 0 ) *dst++ = ':';
    e885edec:	00089463          	bnez	a7,e885edf4 <IPv6AddressToCString+0x2d4>
    e885edf0:	1815de0b          	sbia	t3,(a1),1,0
			i += ( runs[ i ] - 1 );
    e885edf4:	44a3480b          	lrw	a6,t1,a0,2
    e885edf8:	357d                	addiw	a0,a0,-1
			*dst++ = ':';
    e885edfa:	1815de0b          	sbia	t3,(a1),1,0
			i += ( runs[ i ] - 1 );
    e885edfe:	0105053b          	addw	a0,a0,a6
	for( i = 0; i < 8; ++i )
    e885ee02:	2505                	addiw	a0,a0,1
    e885ee04:	feaf52e3          	bge	t5,a0,e885ede8 <IPv6AddressToCString+0x2c8>
trailer:
    e885ee08:	b551                	j	e885ec8c <IPv6AddressToCString+0x16c>
		skip = 1;
    e885ee0a:	4f05                	li	t5,1
		j    = 0;
    e885ee0c:	4801                	li	a6,0
    e885ee0e:	b781                	j	e885ed4e <IPv6AddressToCString+0x22e>
		else													j = 0;
    e885ee10:	4881                	li	a7,0
    e885ee12:	b755                	j	e885edb6 <IPv6AddressToCString+0x296>
		for( j = 0; ( c = seg[ j ] ) != '\0'; ++j ) *dst++ = c;
    e885ee14:	0d010393          	addi	t2,sp,208
    e885ee18:	2055138b          	mula	t2,a0,t0
    e885ee1c:	4801                	li	a6,0
    e885ee1e:	00080e9b          	sext.w	t4,a6
    e885ee22:	9e9e                	add	t4,t4,t2
    e885ee24:	f98ece83          	lbu	t4,-104(t4)
    e885ee28:	01058fb3          	add	t6,a1,a6
    e885ee2c:	000e9863          	bnez	t4,e885ee3c <IPv6AddressToCString+0x31c>
		if( i != 7 ) *dst++ = ':';
    e885ee30:	85fe                	mv	a1,t6
    e885ee32:	fde508e3          	beq	a0,t5,e885ee02 <IPv6AddressToCString+0x2e2>
    e885ee36:	1815de0b          	sbia	t3,(a1),1,0
    e885ee3a:	b7e1                	j	e885ee02 <IPv6AddressToCString+0x2e2>
		for( j = 0; ( c = seg[ j ] ) != '\0'; ++j ) *dst++ = c;
    e885ee3c:	0105de8b          	srb	t4,a1,a6,0
    e885ee40:	0805                	addi	a6,a6,1
    e885ee42:	bff1                	j	e885ee1e <IPv6AddressToCString+0x2fe>
			if( p && ( *p != '\0' ) )	while( ( c = *p++ ) != '\0' ) *dst++ = c;
    e885ee44:	00f4580b          	srb	a6,s0,a5,0
    e885ee48:	0785                	addi	a5,a5,1
    e885ee4a:	80f5480b          	lrbu	a6,a0,a5,0
    e885ee4e:	00f405b3          	add	a1,s0,a5
    e885ee52:	fe0819e3          	bnez	a6,e885ee44 <IPv6AddressToCString+0x324>
	if( inPort > 0 )	// Port
    e885ee56:	08c05563          	blez	a2,e885eee0 <IPv6AddressToCString+0x3c0>
		*dst++ = ']';
    e885ee5a:	6791                	lui	a5,0x4
    e885ee5c:	a5d7879b          	addiw	a5,a5,-1443
    e885ee60:	3825d78b          	shia	a5,(a1),2,0
		append_decimal_string( inPort, dst );
    e885ee64:	091c                	addi	a5,sp,144
    e885ee66:	88be                	mv	a7,a5
    e885ee68:	4829                	li	a6,10
    e885ee6a:	4325                	li	t1,9
    e885ee6c:	0306653b          	remw	a0,a2,a6
    e885ee70:	0305051b          	addiw	a0,a0,48
    e885ee74:	1817d50b          	sbia	a0,(a5),1,0
    e885ee78:	0306453b          	divw	a0,a2,a6
    e885ee7c:	04c34b63          	blt	t1,a2,e885eed2 <IPv6AddressToCString+0x3b2>
    e885ee80:	04f8eb63          	bltu	a7,a5,e885eed6 <IPv6AddressToCString+0x3b6>
	if( inPrefix >= 0 )	// Prefix
    e885ee84:	0206c663          	bltz	a3,e885eeb0 <IPv6AddressToCString+0x390>
		*dst++ = '/';
    e885ee88:	02f00793          	li	a5,47
    e885ee8c:	1815d78b          	sbia	a5,(a1),1,0
		append_decimal_string( inPrefix, dst );
    e885ee90:	091c                	addi	a5,sp,144
    e885ee92:	883e                	mv	a6,a5
    e885ee94:	4529                	li	a0,10
    e885ee96:	48a5                	li	a7,9
    e885ee98:	02a6e63b          	remw	a2,a3,a0
    e885ee9c:	0306061b          	addiw	a2,a2,48
    e885eea0:	1817d60b          	sbia	a2,(a5),1,0
    e885eea4:	02a6c63b          	divw	a2,a3,a0
    e885eea8:	04d8c463          	blt	a7,a3,e885eef0 <IPv6AddressToCString+0x3d0>
    e885eeac:	04f86463          	bltu	a6,a5,e885eef4 <IPv6AddressToCString+0x3d4>
	*dst = '\0';
    e885eeb0:	00058023          	sb	zero,0(a1)
}
    e885eeb4:	70ae                	ld	ra,232(sp)
    e885eeb6:	740e                	ld	s0,224(sp)
    e885eeb8:	64ee                	ld	s1,216(sp)
    e885eeba:	853a                	mv	a0,a4
    e885eebc:	616d                	addi	sp,sp,240
    e885eebe:	8082                	ret
    e885eec0:	4781                	li	a5,0
    e885eec2:	b761                	j	e885ee4a <IPv6AddressToCString+0x32a>
			else						append_decimal_string( inScope, dst );
    e885eec4:	84ae                	mv	s1,a1
    e885eec6:	b531                	j	e885ecd2 <IPv6AddressToCString+0x1b2>
    e885eec8:	89f7c50b          	lbuib	a0,(a5),-1,0
    e885eecc:	1814550b          	sbia	a0,(s0),1,0
    e885eed0:	bd21                	j	e885ece8 <IPv6AddressToCString+0x1c8>
		append_decimal_string( inPort, dst );
    e885eed2:	862a                	mv	a2,a0
    e885eed4:	bf61                	j	e885ee6c <IPv6AddressToCString+0x34c>
    e885eed6:	89f7c60b          	lbuib	a2,(a5),-1,0
    e885eeda:	1815d60b          	sbia	a2,(a1),1,0
    e885eede:	b74d                	j	e885ee80 <IPv6AddressToCString+0x360>
	else if( inPort == kIPv6AddressToCStringForceIPv6Brackets )
    e885eee0:	57f9                	li	a5,-2
    e885eee2:	faf611e3          	bne	a2,a5,e885ee84 <IPv6AddressToCString+0x364>
		*dst++ = ']';
    e885eee6:	05d00793          	li	a5,93
    e885eeea:	1815d78b          	sbia	a5,(a1),1,0
    e885eeee:	bf59                	j	e885ee84 <IPv6AddressToCString+0x364>
		append_decimal_string( inPrefix, dst );
    e885eef0:	86b2                	mv	a3,a2
    e885eef2:	b75d                	j	e885ee98 <IPv6AddressToCString+0x378>
    e885eef4:	89f7c68b          	lbuib	a3,(a5),-1,0
    e885eef8:	1815d68b          	sbia	a3,(a1),1,0
    e885eefc:	bf45                	j	e885eeac <IPv6AddressToCString+0x38c>

00000000e885eefe <IPv4AddressToCString>:
{
    e885eefe:	1101                	addi	sp,sp,-32
	dst = inBuffer;
    e885ef00:	87b2                	mv	a5,a2
	for( i = 1; i <= 4; ++i )
    e885ef02:	4805                	li	a6,1
		x = ( inIP >> ( 32 - ( 8 * i ) ) ) & 0xFF;
    e885ef04:	5f61                	li	t5,-8
		append_decimal_string( x, dst );
    e885ef06:	4e29                	li	t3,10
    e885ef08:	4fa5                	li	t6,9
		if( i < 4 ) *dst++ = '.';
    e885ef0a:	4291                	li	t0,4
    e885ef0c:	02e00393          	li	t2,46
	for( i = 1; i <= 4; ++i )
    e885ef10:	4e95                	li	t4,5
		x = ( inIP >> ( 32 - ( 8 * i ) ) ) & 0xFF;
    e885ef12:	030f073b          	mulw	a4,t5,a6
		append_decimal_string( x, dst );
    e885ef16:	868a                	mv	a3,sp
    e885ef18:	88b6                	mv	a7,a3
		x = ( inIP >> ( 32 - ( 8 * i ) ) ) & 0xFF;
    e885ef1a:	0207071b          	addiw	a4,a4,32
    e885ef1e:	00e5573b          	srlw	a4,a0,a4
    e885ef22:	0ff77713          	andi	a4,a4,255
		append_decimal_string( x, dst );
    e885ef26:	03c7633b          	remw	t1,a4,t3
    e885ef2a:	0303031b          	addiw	t1,t1,48
    e885ef2e:	1816d30b          	sbia	t1,(a3),1,0
    e885ef32:	03c7433b          	divw	t1,a4,t3
    e885ef36:	04efc563          	blt	t6,a4,e885ef80 <IPv4AddressToCString+0x82>
    e885ef3a:	04d8e563          	bltu	a7,a3,e885ef84 <IPv4AddressToCString+0x86>
		if( i < 4 ) *dst++ = '.';
    e885ef3e:	00580463          	beq	a6,t0,e885ef46 <IPv4AddressToCString+0x48>
    e885ef42:	1817d38b          	sbia	t2,(a5),1,0
	for( i = 1; i <= 4; ++i )
    e885ef46:	2805                	addiw	a6,a6,1
    e885ef48:	fdd815e3          	bne	a6,t4,e885ef12 <IPv4AddressToCString+0x14>
	if( inPort > 0 )
    e885ef4c:	02b05563          	blez	a1,e885ef76 <IPv4AddressToCString+0x78>
		*dst++ = ':';
    e885ef50:	03a00713          	li	a4,58
    e885ef54:	1817d70b          	sbia	a4,(a5),1,0
		append_decimal_string( inPort, dst );
    e885ef58:	4529                	li	a0,10
    e885ef5a:	8746                	mv	a4,a7
    e885ef5c:	4825                	li	a6,9
    e885ef5e:	02a5e6bb          	remw	a3,a1,a0
    e885ef62:	0306869b          	addiw	a3,a3,48
    e885ef66:	1817568b          	sbia	a3,(a4),1,0
    e885ef6a:	02a5c6bb          	divw	a3,a1,a0
    e885ef6e:	02b84063          	blt	a6,a1,e885ef8e <IPv4AddressToCString+0x90>
    e885ef72:	02e8e063          	bltu	a7,a4,e885ef92 <IPv4AddressToCString+0x94>
	*dst = '\0';
    e885ef76:	00078023          	sb	zero,0(a5) # 4000 <memcmp-0xe87fc000>
}
    e885ef7a:	8532                	mv	a0,a2
    e885ef7c:	6105                	addi	sp,sp,32
    e885ef7e:	8082                	ret
		append_decimal_string( x, dst );
    e885ef80:	871a                	mv	a4,t1
    e885ef82:	b755                	j	e885ef26 <IPv4AddressToCString+0x28>
    e885ef84:	89f6c70b          	lbuib	a4,(a3),-1,0
    e885ef88:	1817d70b          	sbia	a4,(a5),1,0
    e885ef8c:	b77d                	j	e885ef3a <IPv4AddressToCString+0x3c>
		append_decimal_string( inPort, dst );
    e885ef8e:	85b6                	mv	a1,a3
    e885ef90:	b7f9                	j	e885ef5e <IPv4AddressToCString+0x60>
    e885ef92:	89f7468b          	lbuib	a3,(a4),-1,0
    e885ef96:	1817d68b          	sbia	a3,(a5),1,0
    e885ef9a:	bfe1                	j	e885ef72 <IPv4AddressToCString+0x74>

00000000e885ef9c <TextToHardwareAddress>:
{
    e885ef9c:	7159                	addi	sp,sp,-112
    e885ef9e:	e4ce                	sd	s3,72(sp)
    e885efa0:	f45e                	sd	s7,40(sp)
    e885efa2:	f062                	sd	s8,32(sp)
    e885efa4:	f486                	sd	ra,104(sp)
    e885efa6:	f0a2                	sd	s0,96(sp)
    e885efa8:	eca6                	sd	s1,88(sp)
    e885efaa:	e8ca                	sd	s2,80(sp)
    e885efac:	e0d2                	sd	s4,64(sp)
    e885efae:	fc56                	sd	s5,56(sp)
    e885efb0:	f85a                	sd	s6,48(sp)
    e885efb2:	ec66                	sd	s9,24(sp)
    e885efb4:	e86a                	sd	s10,16(sp)
    e885efb6:	e46e                	sd	s11,8(sp)
	if( inTextSize == kSizeCString ) inTextSize = strlen( (const char *) inText );
    e885efb8:	57fd                	li	a5,-1
{
    e885efba:	8baa                	mv	s7,a0
    e885efbc:	8c32                	mv	s8,a2
    e885efbe:	89b6                	mv	s3,a3
	if( inTextSize == kSizeCString ) inTextSize = strlen( (const char *) inText );
    e885efc0:	00f59663          	bne	a1,a5,e885efcc <TextToHardwareAddress+0x30>
    e885efc4:	3541d0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885efc8:	7c05358b          	extu	a1,a0,31,0
			else if( ( i != 0 ) || ( ( c != ':' ) && ( c != '-' ) && ( c != ' ' ) ) ) break;
    e885efcc:	04002ab7          	lui	s5,0x4002
    e885efd0:	0a85                	addi	s5,s5,1
	end = src + inTextSize;
    e885efd2:	00bb8b33          	add	s6,s7,a1
			if(      isdigit_safe(  c ) ) { x = ( x * 16 )      +               ( c   - '0' ); ++i; }
    e885efd6:	4ca5                	li	s9,9
		while( ( i < 2 ) && ( src < end ) )
    e885efd8:	4d05                	li	s10,1
			else if( ( i != 0 ) || ( ( c != ':' ) && ( c != '-' ) && ( c != ' ' ) ) ) break;
    e885efda:	03a00d93          	li	s11,58
    e885efde:	1a82                	slli	s5,s5,0x20
	while( inAddrSize-- > 0 )
    e885efe0:	080c1a63          	bnez	s8,e885f074 <TextToHardwareAddress+0xd8>
	err = kNoErr;
    e885efe4:	4501                	li	a0,0
}
    e885efe6:	70a6                	ld	ra,104(sp)
    e885efe8:	7406                	ld	s0,96(sp)
    e885efea:	64e6                	ld	s1,88(sp)
    e885efec:	6946                	ld	s2,80(sp)
    e885efee:	69a6                	ld	s3,72(sp)
    e885eff0:	6a06                	ld	s4,64(sp)
    e885eff2:	7ae2                	ld	s5,56(sp)
    e885eff4:	7b42                	ld	s6,48(sp)
    e885eff6:	7ba2                	ld	s7,40(sp)
    e885eff8:	7c02                	ld	s8,32(sp)
    e885effa:	6ce2                	ld	s9,24(sp)
    e885effc:	6d42                	ld	s10,16(sp)
    e885effe:	6da2                	ld	s11,8(sp)
    e885f000:	6165                	addi	sp,sp,112
    e885f002:	8082                	ret
			c = *src++;
    e885f004:	981bc90b          	lbuia	s2,(s7),1,0
			if(      isdigit_safe(  c ) ) { x = ( x * 16 )      +               ( c   - '0' ); ++i; }
    e885f008:	fd09079b          	addiw	a5,s2,-48
    e885f00c:	0ff7f793          	andi	a5,a5,255
    e885f010:	84ca                	mv	s1,s2
    e885f012:	02fce063          	bltu	s9,a5,e885f032 <TextToHardwareAddress+0x96>
    e885f016:	0044141b          	slliw	s0,s0,0x4
    e885f01a:	fd04041b          	addiw	s0,s0,-48
			else if( isxdigit_safe( c ) ) { x = ( x * 16 ) + 10 + ( tolower_safe( c ) - 'a' ); ++i; }
    e885f01e:	2a05                	addiw	s4,s4,1
    e885f020:	9c25                	addw	s0,s0,s1
		while( ( i < 2 ) && ( src < end ) )
    e885f022:	05aa0b63          	beq	s4,s10,e885f078 <TextToHardwareAddress+0xdc>
		if( dst ) *dst++ = (uint8_t) x;
    e885f026:	00098463          	beqz	s3,e885f02e <TextToHardwareAddress+0x92>
    e885f02a:	1819d40b          	sbia	s0,(s3),1,0
    e885f02e:	1c7d                	addi	s8,s8,-1
    e885f030:	bf45                	j	e885efe0 <TextToHardwareAddress+0x44>
			else if( isxdigit_safe( c ) ) { x = ( x * 16 ) + 10 + ( tolower_safe( c ) - 'a' ); ++i; }
    e885f032:	854a                	mv	a0,s2
    e885f034:	df2ff0ef          	jal	ra,e885e626 <isxdigit>
    e885f038:	4765                	li	a4,25
    e885f03a:	c105                	beqz	a0,e885f05a <TextToHardwareAddress+0xbe>
    e885f03c:	fbf9091b          	addiw	s2,s2,-65
    e885f040:	0ff97913          	andi	s2,s2,255
    e885f044:	0044141b          	slliw	s0,s0,0x4
    e885f048:	01276663          	bltu	a4,s2,e885f054 <TextToHardwareAddress+0xb8>
    e885f04c:	fbf4849b          	addiw	s1,s1,-65
    e885f050:	2429                	addiw	s0,s0,10
    e885f052:	b7f1                	j	e885f01e <TextToHardwareAddress+0x82>
    e885f054:	f9f4849b          	addiw	s1,s1,-97
    e885f058:	bfe5                	j	e885f050 <TextToHardwareAddress+0xb4>
			else if( ( i != 0 ) || ( ( c != ':' ) && ( c != '-' ) && ( c != ' ' ) ) ) break;
    e885f05a:	fc0a16e3          	bnez	s4,e885f026 <TextToHardwareAddress+0x8a>
    e885f05e:	012de763          	bltu	s11,s2,e885f06c <TextToHardwareAddress+0xd0>
    e885f062:	012ad4b3          	srl	s1,s5,s2
    e885f066:	0004b48b          	extu	s1,s1,0,0
    e885f06a:	e499                	bnez	s1,e885f078 <TextToHardwareAddress+0xdc>
			err = kMalformedErr;
    e885f06c:	7579                	lui	a0,0xffffe
    e885f06e:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e885f072:	bf95                	j	e885efe6 <TextToHardwareAddress+0x4a>
		x = 0;
    e885f074:	4401                	li	s0,0
		i = 0;
    e885f076:	4a01                	li	s4,0
		while( ( i < 2 ) && ( src < end ) )
    e885f078:	f96be6e3          	bltu	s7,s6,e885f004 <TextToHardwareAddress+0x68>
		if( i == 0 )
    e885f07c:	fa0a15e3          	bnez	s4,e885f026 <TextToHardwareAddress+0x8a>
    e885f080:	b7f5                	j	e885f06c <TextToHardwareAddress+0xd0>

00000000e885f082 <HardwareAddressToCString>:
	end = src + inSize;
    e885f082:	95aa                	add	a1,a1,a0
	while( src < end )
    e885f084:	87b2                	mv	a5,a2
		if( dst != outStr ) *dst++ = ':';
    e885f086:	03a00893          	li	a7,58
		*dst++ = kHexDigitsUppercase[ b >> 4 ];
    e885f08a:	00041817          	auipc	a6,0x41
    e885f08e:	dd680813          	addi	a6,a6,-554 # e889fe60 <TWO52+0x268>
	while( src < end )
    e885f092:	00b56663          	bltu	a0,a1,e885f09e <HardwareAddressToCString+0x1c>
	*dst = '\0';
    e885f096:	00078023          	sb	zero,0(a5)
}
    e885f09a:	8532                	mv	a0,a2
    e885f09c:	8082                	ret
		if( dst != outStr ) *dst++ = ':';
    e885f09e:	8732                	mv	a4,a2
    e885f0a0:	00c78563          	beq	a5,a2,e885f0aa <HardwareAddressToCString+0x28>
    e885f0a4:	873e                	mv	a4,a5
    e885f0a6:	1817588b          	sbia	a7,(a4),1,0
		b = *src++;
    e885f0aa:	9815468b          	lbuia	a3,(a0),1,0
		*dst++ = kHexDigitsUppercase[ b >> 4 ];
    e885f0ae:	0046d793          	srli	a5,a3,0x4
    e885f0b2:	80f8430b          	lrbu	t1,a6,a5,0
		*dst++ = kHexDigitsUppercase[ b & 0xF ];
    e885f0b6:	8abd                	andi	a3,a3,15
		*dst++ = kHexDigitsUppercase[ b >> 4 ];
    e885f0b8:	87ba                	mv	a5,a4
		*dst++ = kHexDigitsUppercase[ b & 0xF ];
    e885f0ba:	80d8468b          	lrbu	a3,a6,a3,0
		*dst++ = kHexDigitsUppercase[ b >> 4 ];
    e885f0be:	1827d30b          	sbia	t1,(a5),2,0
		*dst++ = kHexDigitsUppercase[ b & 0xF ];
    e885f0c2:	00d700a3          	sb	a3,1(a4)
    e885f0c6:	b7f1                	j	e885f092 <HardwareAddressToCString+0x10>

00000000e885f0c8 <TextToSourceVersion>:
{
    e885f0c8:	1101                	addi	sp,sp,-32
    e885f0ca:	e422                	sd	s0,8(sp)
    e885f0cc:	ec06                	sd	ra,24(sp)
    e885f0ce:	e826                	sd	s1,16(sp)
	if( inSize == kSizeCString ) inSize = strlen( (const char *) inText );
    e885f0d0:	57fd                	li	a5,-1
{
    e885f0d2:	842a                	mv	s0,a0
	if( inSize == kSizeCString ) inSize = strlen( (const char *) inText );
    e885f0d4:	00f59663          	bne	a1,a5,e885f0e0 <TextToSourceVersion+0x18>
    e885f0d8:	2401d0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f0dc:	7c05358b          	extu	a1,a0,31,0
	end = src + inSize;
    e885f0e0:	00b404b3          	add	s1,s0,a1
	while( ( src < end ) && isspace( *src ) ) ++src;
    e885f0e4:	0e947063          	bgeu	s0,s1,e885f1c4 <TextToSourceVersion+0xfc>
    e885f0e8:	00044503          	lbu	a0,0(s0)
    e885f0ec:	b5cff0ef          	jal	ra,e885e448 <isspace>
    e885f0f0:	e51d                	bnez	a0,e885f11e <TextToSourceVersion+0x56>
    e885f0f2:	000346b7          	lui	a3,0x34
    e885f0f6:	4781                	li	a5,0
	for( x = 0; ( src < end ) && isdigit( c = *src ) && ( x <= 214747 ); ++src ) x = ( x * 10 ) + ( c - '0' );
    e885f0f8:	02f00613          	li	a2,47
    e885f0fc:	6db68693          	addi	a3,a3,1755 # 346db <memcmp-0xe87cb925>
    e885f100:	03900593          	li	a1,57
    e885f104:	4529                	li	a0,10
    e885f106:	00044703          	lbu	a4,0(s0)
    e885f10a:	02e66863          	bltu	a2,a4,e885f13a <TextToSourceVersion+0x72>
	version = 0;
    e885f10e:	4501                	li	a0,0
	if( x > 214747 ) goto exit;
    e885f110:	02f6fb63          	bgeu	a3,a5,e885f146 <TextToSourceVersion+0x7e>
}
    e885f114:	60e2                	ld	ra,24(sp)
    e885f116:	6422                	ld	s0,8(sp)
    e885f118:	64c2                	ld	s1,16(sp)
    e885f11a:	6105                	addi	sp,sp,32
    e885f11c:	8082                	ret
	while( ( src < end ) && isspace( *src ) ) ++src;
    e885f11e:	0405                	addi	s0,s0,1
    e885f120:	b7d1                	j	e885f0e4 <TextToSourceVersion+0x1c>
	for( x = 0; ( src < end ) && isdigit( c = *src ) && ( x <= 214747 ); ++src ) x = ( x * 10 ) + ( c - '0' );
    e885f122:	883a                	mv	a6,a4
    e885f124:	24f5180b          	mulaw	a6,a0,a5
    e885f128:	0405                	addi	s0,s0,1
    e885f12a:	fd08079b          	addiw	a5,a6,-48
    e885f12e:	fc946ce3          	bltu	s0,s1,e885f106 <TextToSourceVersion+0x3e>
	version = 0;
    e885f132:	4501                	li	a0,0
	if( x > 214747 ) goto exit;
    e885f134:	fef6e0e3          	bltu	a3,a5,e885f114 <TextToSourceVersion+0x4c>
    e885f138:	a821                	j	e885f150 <TextToSourceVersion+0x88>
	for( x = 0; ( src < end ) && isdigit( c = *src ) && ( x <= 214747 ); ++src ) x = ( x * 10 ) + ( c - '0' );
    e885f13a:	fee5ece3          	bltu	a1,a4,e885f132 <TextToSourceVersion+0x6a>
    e885f13e:	fef6f2e3          	bgeu	a3,a5,e885f122 <TextToSourceVersion+0x5a>
	version = 0;
    e885f142:	4501                	li	a0,0
    e885f144:	bfc1                	j	e885f114 <TextToSourceVersion+0x4c>
	if( c == '.' ) ++src;
    e885f146:	02e00693          	li	a3,46
    e885f14a:	00d71363          	bne	a4,a3,e885f150 <TextToSourceVersion+0x88>
    e885f14e:	0405                	addi	s0,s0,1
    e885f150:	4681                	li	a3,0
	for( y = 0; ( src < end ) && isdigit( c = *src ) && ( y <= 99 ); ++src ) y = ( y * 10 ) + ( c - '0' );
    e885f152:	02f00593          	li	a1,47
    e885f156:	03900813          	li	a6,57
    e885f15a:	06300613          	li	a2,99
    e885f15e:	48a9                	li	a7,10
    e885f160:	02947163          	bgeu	s0,s1,e885f182 <TextToSourceVersion+0xba>
    e885f164:	00044703          	lbu	a4,0(s0)
    e885f168:	00e5fd63          	bgeu	a1,a4,e885f182 <TextToSourceVersion+0xba>
    e885f16c:	08e86063          	bltu	a6,a4,e885f1ec <TextToSourceVersion+0x124>
    e885f170:	fcd669e3          	bltu	a2,a3,e885f142 <TextToSourceVersion+0x7a>
    e885f174:	853a                	mv	a0,a4
    e885f176:	24d8950b          	mulaw	a0,a7,a3
    e885f17a:	0405                	addi	s0,s0,1
    e885f17c:	fd05069b          	addiw	a3,a0,-48
    e885f180:	b7c5                	j	e885f160 <TextToSourceVersion+0x98>
	if( y > 99 ) goto exit;
    e885f182:	06300613          	li	a2,99
	version = 0;
    e885f186:	4501                	li	a0,0
	if( y > 99 ) goto exit;
    e885f188:	f8d666e3          	bltu	a2,a3,e885f114 <TextToSourceVersion+0x4c>
	if( c == '.' ) ++src;
    e885f18c:	02e00613          	li	a2,46
    e885f190:	00c71363          	bne	a4,a2,e885f196 <TextToSourceVersion+0xce>
    e885f194:	0405                	addi	s0,s0,1
    e885f196:	4701                	li	a4,0
	for( z = 0; ( src < end ) && isdigit( c = *src ) && ( z <= 99 ); ++src ) z = ( z * 10 ) + ( c - '0' );
    e885f198:	4825                	li	a6,9
    e885f19a:	06300513          	li	a0,99
    e885f19e:	48a9                	li	a7,10
    e885f1a0:	02947663          	bgeu	s0,s1,e885f1cc <TextToSourceVersion+0x104>
    e885f1a4:	00044603          	lbu	a2,0(s0)
    e885f1a8:	fd06059b          	addiw	a1,a2,-48
    e885f1ac:	0ff5f593          	andi	a1,a1,255
    e885f1b0:	00b86e63          	bltu	a6,a1,e885f1cc <TextToSourceVersion+0x104>
    e885f1b4:	f8e567e3          	bltu	a0,a4,e885f142 <TextToSourceVersion+0x7a>
    e885f1b8:	24e8960b          	mulaw	a2,a7,a4
    e885f1bc:	0405                	addi	s0,s0,1
    e885f1be:	fd06071b          	addiw	a4,a2,-48
    e885f1c2:	bff9                	j	e885f1a0 <TextToSourceVersion+0xd8>
    e885f1c4:	4781                	li	a5,0
    e885f1c6:	4681                	li	a3,0
    e885f1c8:	4701                	li	a4,0
    e885f1ca:	b7c9                	j	e885f18c <TextToSourceVersion+0xc4>
	if( z > 99 ) goto exit;
    e885f1cc:	06300613          	li	a2,99
	version = 0;
    e885f1d0:	4501                	li	a0,0
	if( z > 99 ) goto exit;
    e885f1d2:	f4e661e3          	bltu	a2,a4,e885f114 <TextToSourceVersion+0x4c>
	version = ( x * 10000 ) + ( y * 100 ) + z;
    e885f1d6:	06400513          	li	a0,100
    e885f1da:	02d5053b          	mulw	a0,a0,a3
    e885f1de:	6689                	lui	a3,0x2
    e885f1e0:	7106869b          	addiw	a3,a3,1808
    e885f1e4:	24f6950b          	mulaw	a0,a3,a5
    e885f1e8:	9d39                	addw	a0,a0,a4
    e885f1ea:	b72d                	j	e885f114 <TextToSourceVersion+0x4c>
	if( y > 99 ) goto exit;
    e885f1ec:	06300713          	li	a4,99
	version = 0;
    e885f1f0:	4501                	li	a0,0
	if( y > 99 ) goto exit;
    e885f1f2:	fad772e3          	bgeu	a4,a3,e885f196 <TextToSourceVersion+0xce>
    e885f1f6:	bf39                	j	e885f114 <TextToSourceVersion+0x4c>

00000000e885f1f8 <HexToData>:
{
    e885f1f8:	7175                	addi	sp,sp,-144
    e885f1fa:	f0d2                	sd	s4,96(sp)
    e885f1fc:	8a3e                	mv	s4,a5
	Boolean const		ignoreDelims	= ( inFlags & kHexToData_IgnoreDelimiters ) ? true : false;
    e885f1fe:	0826378b          	extu	a5,a2,2,2
    e885f202:	e03e                	sd	a5,0(sp)
	Boolean const		ignorePrefixes	= ( inFlags & kHexToData_IgnorePrefixes )   ? true : false;
    e885f204:	1046378b          	extu	a5,a2,4,4
{
    e885f208:	fca6                	sd	s1,120(sp)
    e885f20a:	f8ca                	sd	s2,112(sp)
    e885f20c:	f4ce                	sd	s3,104(sp)
    e885f20e:	e8da                	sd	s6,80(sp)
    e885f210:	e4de                	sd	s7,72(sp)
    e885f212:	e0e2                	sd	s8,64(sp)
    e885f214:	f46e                	sd	s11,40(sp)
	Boolean const		ignorePrefixes	= ( inFlags & kHexToData_IgnorePrefixes )   ? true : false;
    e885f216:	e43e                	sd	a5,8(sp)
{
    e885f218:	e506                	sd	ra,136(sp)
    e885f21a:	e122                	sd	s0,128(sp)
    e885f21c:	ecd6                	sd	s5,88(sp)
    e885f21e:	fc66                	sd	s9,56(sp)
    e885f220:	f86a                	sd	s10,48(sp)
	if( inLen == kSizeCString ) inLen = strlen( src );
    e885f222:	57fd                	li	a5,-1
{
    e885f224:	8c2a                	mv	s8,a0
    e885f226:	8db2                	mv	s11,a2
    e885f228:	8b36                	mv	s6,a3
    e885f22a:	84ba                	mv	s1,a4
    e885f22c:	89c2                	mv	s3,a6
    e885f22e:	8946                	mv	s2,a7
	Boolean const		ignoreSpaces	= ( inFlags & kHexToData_IgnoreWhitespace ) ? true : false;
    e885f230:	04163b8b          	extu	s7,a2,1,1
	if( inLen == kSizeCString ) inLen = strlen( src );
    e885f234:	00f59663          	bne	a1,a5,e885f240 <HexToData+0x48>
    e885f238:	0e01d0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f23c:	7c05358b          	extu	a1,a0,31,0
	end = src + inLen;
    e885f240:	00bc0d33          	add	s10,s8,a1
	while( ( src < end ) && isspace_safe( *src ) )
    e885f244:	01ac7763          	bgeu	s8,s10,e885f252 <HexToData+0x5a>
    e885f248:	000c4503          	lbu	a0,0(s8) # 801000 <memcmp-0xe7fff000>
    e885f24c:	9fcff0ef          	jal	ra,e885e448 <isspace>
    e885f250:	ed2d                	bnez	a0,e885f2ca <HexToData+0xd2>
	if( ( ( end - src ) >= 2 ) && ( src[ 0 ] == '0' ) && ( ( src[ 1 ] == 'x' ) || ( src[ 1 ] == 'X' ) ) )
    e885f252:	418d07b3          	sub	a5,s10,s8
    e885f256:	4705                	li	a4,1
    e885f258:	02f75163          	bge	a4,a5,e885f27a <HexToData+0x82>
    e885f25c:	000c4703          	lbu	a4,0(s8)
    e885f260:	03000793          	li	a5,48
    e885f264:	00f71b63          	bne	a4,a5,e885f27a <HexToData+0x82>
    e885f268:	001c4783          	lbu	a5,1(s8)
    e885f26c:	05800713          	li	a4,88
    e885f270:	0df7f793          	andi	a5,a5,223
    e885f274:	00e79363          	bne	a5,a4,e885f27a <HexToData+0x82>
		src += 2;
    e885f278:	0c09                	addi	s8,s8,2
			state = 1;
    e885f27a:	4701                	li	a4,0
    e885f27c:	4f01                	li	t5,0
    e885f27e:	4a81                	li	s5,0
    e885f280:	4c81                	li	s9,0
    e885f282:	4585                	li	a1,1
		if(      ( c >= '0' ) && ( c <= '9' ) ) nibble = c - '0';
    e885f284:	4825                	li	a6,9
		else if( ( c >= 'A' ) && ( c <= 'F' ) ) nibble = 10 + ( c - 'A' );
    e885f286:	4615                	li	a2,5
		else if( ignoreDelims && ( ( c == ':' ) || ( c == '-' ) || ( c == '_' ) || ( c == ',' ) ) ) continue;
    e885f288:	03300893          	li	a7,51
    e885f28c:	00064317          	auipc	t1,0x64
    e885f290:	61430313          	addi	t1,t1,1556 # e88c38a0 <kSRPParameters_3072_SHA512+0x10>
		if( ignorePrefixes && ( state == 0 ) && ( ( end - src ) >= 2 ) && 
    e885f294:	03000e13          	li	t3,48
			( src[ 0 ] == '0' ) && ( ( src[ 1 ] == 'x' ) || ( src[ 1 ] == 'X' ) ) )
    e885f298:	05800e93          	li	t4,88
	for( ; src < end; ++src )
    e885f29c:	0dac7363          	bgeu	s8,s10,e885f362 <HexToData+0x16a>
		if( ignorePrefixes && ( state == 0 ) && ( ( end - src ) >= 2 ) && 
    e885f2a0:	67a2                	ld	a5,8(sp)
    e885f2a2:	000c4403          	lbu	s0,0(s8)
    e885f2a6:	c785                	beqz	a5,e885f2ce <HexToData+0xd6>
    e885f2a8:	020f1363          	bnez	t5,e885f2ce <HexToData+0xd6>
    e885f2ac:	418d0533          	sub	a0,s10,s8
    e885f2b0:	00a5df63          	bge	a1,a0,e885f2ce <HexToData+0xd6>
    e885f2b4:	01c41d63          	bne	s0,t3,e885f2ce <HexToData+0xd6>
			( src[ 0 ] == '0' ) && ( ( src[ 1 ] == 'x' ) || ( src[ 1 ] == 'X' ) ) )
    e885f2b8:	001c4503          	lbu	a0,1(s8)
    e885f2bc:	0df57513          	andi	a0,a0,223
    e885f2c0:	01d51d63          	bne	a0,t4,e885f2da <HexToData+0xe2>
			src += 1;
    e885f2c4:	0c05                	addi	s8,s8,1
	for( ; src < end; ++src )
    e885f2c6:	0c05                	addi	s8,s8,1
    e885f2c8:	bfd1                	j	e885f29c <HexToData+0xa4>
		++src;
    e885f2ca:	0c05                	addi	s8,s8,1
    e885f2cc:	bfa5                	j	e885f244 <HexToData+0x4c>
		if(      ( c >= '0' ) && ( c <= '9' ) ) nibble = c - '0';
    e885f2ce:	fd04051b          	addiw	a0,s0,-48
    e885f2d2:	0ff57513          	andi	a0,a0,255
    e885f2d6:	00a86e63          	bltu	a6,a0,e885f2f2 <HexToData+0xfa>
    e885f2da:	fd04041b          	addiw	s0,s0,-48
		else if( ( c >= 'a' ) && ( c <= 'f' ) ) nibble = 10 + ( c - 'a' );
    e885f2de:	0ff47413          	andi	s0,s0,255
		if( state == 0 )
    e885f2e2:	0c0f1b63          	bnez	t5,e885f3b8 <HexToData+0x1c0>
			byte = (uint8_t)( nibble << 4 );
    e885f2e6:	0044141b          	slliw	s0,s0,0x4
    e885f2ea:	0ff47713          	andi	a4,s0,255
			state = 1;
    e885f2ee:	4f05                	li	t5,1
    e885f2f0:	bfd9                	j	e885f2c6 <HexToData+0xce>
		else if( ( c >= 'A' ) && ( c <= 'F' ) ) nibble = 10 + ( c - 'A' );
    e885f2f2:	fbf4051b          	addiw	a0,s0,-65
    e885f2f6:	0ff57513          	andi	a0,a0,255
    e885f2fa:	00a66563          	bltu	a2,a0,e885f304 <HexToData+0x10c>
    e885f2fe:	fc94041b          	addiw	s0,s0,-55
    e885f302:	bff1                	j	e885f2de <HexToData+0xe6>
		else if( ( c >= 'a' ) && ( c <= 'f' ) ) nibble = 10 + ( c - 'a' );
    e885f304:	f9f4051b          	addiw	a0,s0,-97
    e885f308:	0ff57513          	andi	a0,a0,255
    e885f30c:	00a66563          	bltu	a2,a0,e885f316 <HexToData+0x11e>
    e885f310:	fa94041b          	addiw	s0,s0,-87
    e885f314:	b7e9                	j	e885f2de <HexToData+0xe6>
		else if( ignoreSpaces && isspace_safe( c ) ) continue;
    e885f316:	020b8763          	beqz	s7,e885f344 <HexToData+0x14c>
    e885f31a:	8522                	mv	a0,s0
    e885f31c:	ec3a                	sd	a4,24(sp)
    e885f31e:	e87a                	sd	t5,16(sp)
    e885f320:	928ff0ef          	jal	ra,e885e448 <isspace>
    e885f324:	fae14f0b          	ldd	t5,a4,(sp),1,4
    e885f328:	4585                	li	a1,1
    e885f32a:	4825                	li	a6,9
    e885f32c:	4615                	li	a2,5
    e885f32e:	03300893          	li	a7,51
    e885f332:	00064317          	auipc	t1,0x64
    e885f336:	56e30313          	addi	t1,t1,1390 # e88c38a0 <kSRPParameters_3072_SHA512+0x10>
    e885f33a:	03000e13          	li	t3,48
    e885f33e:	05800e93          	li	t4,88
    e885f342:	f151                	bnez	a0,e885f2c6 <HexToData+0xce>
		else if( ignoreDelims && ( ( c == ':' ) || ( c == '-' ) || ( c == '_' ) || ( c == ',' ) ) ) continue;
    e885f344:	6782                	ld	a5,0(sp)
    e885f346:	cf91                	beqz	a5,e885f362 <HexToData+0x16a>
    e885f348:	fd44041b          	addiw	s0,s0,-44
    e885f34c:	0ff47413          	andi	s0,s0,255
    e885f350:	0088e963          	bltu	a7,s0,e885f362 <HexToData+0x16a>
    e885f354:	00033503          	ld	a0,0(t1)
    e885f358:	00855433          	srl	s0,a0,s0
    e885f35c:	0004340b          	extu	s0,s0,0,0
    e885f360:	f03d                	bnez	s0,e885f2c6 <HexToData+0xce>
	if( ( state != 0 ) && !( inFlags & kHexToData_WholeBytes ) )
    e885f362:	000f0d63          	beqz	t5,e885f37c <HexToData+0x184>
    e885f366:	008df613          	andi	a2,s11,8
    e885f36a:	ea09                	bnez	a2,e885f37c <HexToData+0x184>
		if( buf && ( writtenBytes < inMaxBytes ) )
    e885f36c:	000b0763          	beqz	s6,e885f37a <HexToData+0x182>
    e885f370:	009cf563          	bgeu	s9,s1,e885f37a <HexToData+0x182>
			buf[ writtenBytes++ ] = byte;
    e885f374:	019b570b          	srb	a4,s6,s9,0
    e885f378:	0c85                	addi	s9,s9,1
		++totalBytes;
    e885f37a:	0a85                	addi	s5,s5,1
	if( inBuf && ( inFlags & kHexToData_ZeroPad ) )
    e885f37c:	040b1963          	bnez	s6,e885f3ce <HexToData+0x1d6>
	if( outWrittenBytes )	*outWrittenBytes	= writtenBytes;
    e885f380:	060a1363          	bnez	s4,e885f3e6 <HexToData+0x1ee>
	if( outTotalBytes )		*outTotalBytes		= totalBytes;
    e885f384:	00098463          	beqz	s3,e885f38c <HexToData+0x194>
    e885f388:	0159b023          	sd	s5,0(s3)
	if( outNext )			*outNext			= src;
    e885f38c:	00090463          	beqz	s2,e885f394 <HexToData+0x19c>
    e885f390:	01893023          	sd	s8,0(s2)
	while( ( src < end ) && isspace_safe( *src ) ) ++src;
    e885f394:	05ac7e63          	bgeu	s8,s10,e885f3f0 <HexToData+0x1f8>
    e885f398:	000c4503          	lbu	a0,0(s8)
    e885f39c:	8acff0ef          	jal	ra,e885e448 <isspace>
    e885f3a0:	e531                	bnez	a0,e885f3ec <HexToData+0x1f4>
	if( isxdigit_safe( *src ) )
    e885f3a2:	000c4503          	lbu	a0,0(s8)
    e885f3a6:	a80ff0ef          	jal	ra,e885e626 <isxdigit>
    e885f3aa:	c52d                	beqz	a0,e885f414 <HexToData+0x21c>
			return( kFormatErr );
    e885f3ac:	7579                	lui	a0,0xffffe
		if( writtenBytes < inMaxBytes )
    e885f3ae:	069ce963          	bltu	s9,s1,e885f420 <HexToData+0x228>
			return( kOverrunErr );
    e885f3b2:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e885f3b6:	a081                	j	e885f3f6 <HexToData+0x1fe>
			byte |= nibble;
    e885f3b8:	8f41                	or	a4,a4,s0
			if( buf && ( writtenBytes < inMaxBytes ) )
    e885f3ba:	000b0763          	beqz	s6,e885f3c8 <HexToData+0x1d0>
    e885f3be:	009cf563          	bgeu	s9,s1,e885f3c8 <HexToData+0x1d0>
				buf[ writtenBytes++ ] = byte;
    e885f3c2:	019b570b          	srb	a4,s6,s9,0
    e885f3c6:	0c85                	addi	s9,s9,1
			++totalBytes;
    e885f3c8:	0a85                	addi	s5,s5,1
			state = 0;
    e885f3ca:	4f01                	li	t5,0
    e885f3cc:	bded                	j	e885f2c6 <HexToData+0xce>
	if( inBuf && ( inFlags & kHexToData_ZeroPad ) )
    e885f3ce:	001dfd93          	andi	s11,s11,1
    e885f3d2:	fa0d87e3          	beqz	s11,e885f380 <HexToData+0x188>
		for( n = writtenBytes; n < inMaxBytes; ++n )
    e885f3d6:	8766                	mv	a4,s9
    e885f3d8:	a021                	j	e885f3e0 <HexToData+0x1e8>
			buf[ n ] = 0;
    e885f3da:	00eb500b          	srb	zero,s6,a4,0
		for( n = writtenBytes; n < inMaxBytes; ++n )
    e885f3de:	0705                	addi	a4,a4,1
    e885f3e0:	fe976de3          	bltu	a4,s1,e885f3da <HexToData+0x1e2>
    e885f3e4:	bf71                	j	e885f380 <HexToData+0x188>
	if( outWrittenBytes )	*outWrittenBytes	= writtenBytes;
    e885f3e6:	019a3023          	sd	s9,0(s4)
    e885f3ea:	bf69                	j	e885f384 <HexToData+0x18c>
	while( ( src < end ) && isspace_safe( *src ) ) ++src;
    e885f3ec:	0c05                	addi	s8,s8,1
    e885f3ee:	b75d                	j	e885f394 <HexToData+0x19c>
	return( kNoErr );
    e885f3f0:	4501                	li	a0,0
	if( src == end )
    e885f3f2:	fbac18e3          	bne	s8,s10,e885f3a2 <HexToData+0x1aa>
}
    e885f3f6:	60aa                	ld	ra,136(sp)
    e885f3f8:	640a                	ld	s0,128(sp)
    e885f3fa:	74e6                	ld	s1,120(sp)
    e885f3fc:	7946                	ld	s2,112(sp)
    e885f3fe:	79a6                	ld	s3,104(sp)
    e885f400:	7a06                	ld	s4,96(sp)
    e885f402:	6ae6                	ld	s5,88(sp)
    e885f404:	6b46                	ld	s6,80(sp)
    e885f406:	6ba6                	ld	s7,72(sp)
    e885f408:	6c06                	ld	s8,64(sp)
    e885f40a:	7ce2                	ld	s9,56(sp)
    e885f40c:	7d42                	ld	s10,48(sp)
    e885f40e:	7da2                	ld	s11,40(sp)
    e885f410:	6149                	addi	sp,sp,144
    e885f412:	8082                	ret
	if( totalBytes == 0 )
    e885f414:	fe0a91e3          	bnez	s5,e885f3f6 <HexToData+0x1fe>
		return( kMalformedErr );
    e885f418:	7579                	lui	a0,0xffffe
    e885f41a:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e885f41e:	bfe1                	j	e885f3f6 <HexToData+0x1fe>
			return( kFormatErr );
    e885f420:	5c350513          	addi	a0,a0,1475
    e885f424:	bfc9                	j	e885f3f6 <HexToData+0x1fe>

00000000e885f426 <DataToHexCStringEx>:
{
    e885f426:	872a                	mv	a4,a0
	end = src + inSize;
    e885f428:	95aa                	add	a1,a1,a0
	dst = outStr;
    e885f42a:	87b2                	mv	a5,a2
	while( src < end )
    e885f42c:	00b76663          	bltu	a4,a1,e885f438 <DataToHexCStringEx+0x12>
	*dst = '\0';
    e885f430:	00078023          	sb	zero,0(a5)
}
    e885f434:	8532                	mv	a0,a2
    e885f436:	8082                	ret
		b = *src++;
    e885f438:	9817480b          	lbuia	a6,(a4),1,0
		*dst++ = inHexDigits[ b >> 4 ];
    e885f43c:	00485513          	srli	a0,a6,0x4
    e885f440:	80a6c50b          	lrbu	a0,a3,a0,0
		*dst++ = inHexDigits[ b & 0xF ];
    e885f444:	00f87813          	andi	a6,a6,15
		*dst++ = inHexDigits[ b >> 4 ];
    e885f448:	1827d50b          	sbia	a0,(a5),2,0
		*dst++ = inHexDigits[ b & 0xF ];
    e885f44c:	8106c50b          	lrbu	a0,a3,a6,0
    e885f450:	fea78fa3          	sb	a0,-1(a5)
    e885f454:	bfe1                	j	e885f42c <DataToHexCStringEx+0x6>

00000000e885f456 <TextToInt32>:
{
    e885f456:	7139                	addi	sp,sp,-64
    e885f458:	e422                	sd	s0,8(sp)
    e885f45a:	e826                	sd	s1,16(sp)
    e885f45c:	fc06                	sd	ra,56(sp)
    e885f45e:	ec4a                	sd	s2,24(sp)
    e885f460:	f04e                	sd	s3,32(sp)
    e885f462:	f452                	sd	s4,40(sp)
    e885f464:	f856                	sd	s5,48(sp)
	if( inSize == kSizeCString ) inSize = strlen( (const char *) inText );
    e885f466:	57fd                	li	a5,-1
{
    e885f468:	84aa                	mv	s1,a0
    e885f46a:	8432                	mv	s0,a2
	if( inSize == kSizeCString ) inSize = strlen( (const char *) inText );
    e885f46c:	00f59663          	bne	a1,a5,e885f478 <TextToInt32+0x22>
    e885f470:	6a91c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f474:	7c05358b          	extu	a1,a0,31,0
	end = src + inSize;
    e885f478:	00b48933          	add	s2,s1,a1
	while( ( src < end ) && isspace( *src ) ) ++src;
    e885f47c:	0124f763          	bgeu	s1,s2,e885f48a <TextToInt32+0x34>
    e885f480:	0004c503          	lbu	a0,0(s1)
    e885f484:	fc5fe0ef          	jal	ra,e885e448 <isspace>
    e885f488:	ed29                	bnez	a0,e885f4e2 <TextToInt32+0x8c>
	if( ( end - src ) >= 2 )
    e885f48a:	409907b3          	sub	a5,s2,s1
    e885f48e:	4705                	li	a4,1
    e885f490:	08f75763          	bge	a4,a5,e885f51e <TextToInt32+0xc8>
		if( ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) )			// Hex
    e885f494:	0004c703          	lbu	a4,0(s1)
    e885f498:	03000793          	li	a5,48
    e885f49c:	08f71163          	bne	a4,a5,e885f51e <TextToInt32+0xc8>
    e885f4a0:	0014c783          	lbu	a5,1(s1)
    e885f4a4:	46e5                	li	a3,25
    e885f4a6:	fbf7871b          	addiw	a4,a5,-65
    e885f4aa:	0ff77713          	andi	a4,a4,255
    e885f4ae:	02e6ec63          	bltu	a3,a4,e885f4e6 <TextToInt32+0x90>
    e885f4b2:	05800713          	li	a4,88
    e885f4b6:	02e79f63          	bne	a5,a4,e885f4f4 <TextToInt32+0x9e>
			src   += 2;
    e885f4ba:	0489                	addi	s1,s1,2
{
    e885f4bc:	4401                	li	s0,0
				if(      isdigit(  c ) ) v = ( v * 16 ) + ( c - '0' );						// 0-9 digit
    e885f4be:	4a25                	li	s4,9
				else if( isxdigit( c ) ) v = ( v * 16 ) + ( 10 + ( tolower( c ) - 'a' ) );	// A-F digit
    e885f4c0:	4ae5                	li	s5,25
			while( src < end )
    e885f4c2:	0724f863          	bgeu	s1,s2,e885f532 <TextToInt32+0xdc>
				c = *src++;				
    e885f4c6:	9814c50b          	lbuia	a0,(s1),1,0
				if(      isdigit(  c ) ) v = ( v * 16 ) + ( c - '0' );						// 0-9 digit
    e885f4ca:	fd05079b          	addiw	a5,a0,-48
				c = *src++;				
    e885f4ce:	89aa                	mv	s3,a0
				if(      isdigit(  c ) ) v = ( v * 16 ) + ( c - '0' );						// 0-9 digit
    e885f4d0:	08fa6263          	bltu	s4,a5,e885f554 <TextToInt32+0xfe>
    e885f4d4:	0044141b          	slliw	s0,s0,0x4
    e885f4d8:	fd04041b          	addiw	s0,s0,-48
				else if( isxdigit( c ) ) v = ( v * 16 ) + ( 10 + ( tolower( c ) - 'a' ) );	// A-F digit
    e885f4dc:	0134043b          	addw	s0,s0,s3
    e885f4e0:	b7cd                	j	e885f4c2 <TextToInt32+0x6c>
	while( ( src < end ) && isspace( *src ) ) ++src;
    e885f4e2:	0485                	addi	s1,s1,1
    e885f4e4:	bf61                	j	e885f47c <TextToInt32+0x26>
		if( ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) )			// Hex
    e885f4e6:	07800713          	li	a4,120
    e885f4ea:	fce788e3          	beq	a5,a4,e885f4ba <TextToInt32+0x64>
		else if( ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'b' ) )	// Binary
    e885f4ee:	06200713          	li	a4,98
    e885f4f2:	a019                	j	e885f4f8 <TextToInt32+0xa2>
    e885f4f4:	04200713          	li	a4,66
    e885f4f8:	0ce79163          	bne	a5,a4,e885f5ba <TextToInt32+0x164>
			src   += 2;
    e885f4fc:	0489                	addi	s1,s1,2
{
    e885f4fe:	4401                	li	s0,0
				if( ( c != '0' ) && ( c != '1' ) ) break;
    e885f500:	4705                	li	a4,1
			while( src < end )
    e885f502:	0324f863          	bgeu	s1,s2,e885f532 <TextToInt32+0xdc>
				c = *src++;
    e885f506:	9814c78b          	lbuia	a5,(s1),1,0
				if( ( c != '0' ) && ( c != '1' ) ) break;
    e885f50a:	fd07869b          	addiw	a3,a5,-48
    e885f50e:	02d76263          	bltu	a4,a3,e885f532 <TextToInt32+0xdc>
				v = ( v * 2 ) + ( c - '0' );
    e885f512:	0014141b          	slliw	s0,s0,0x1
    e885f516:	fd04041b          	addiw	s0,s0,-48
    e885f51a:	9c3d                	addw	s0,s0,a5
    e885f51c:	b7dd                	j	e885f502 <TextToInt32+0xac>
		else if( ( inBase == 0 )     && ( src[ 0 ] == '0' ) && 
    e885f51e:	c831                	beqz	s0,e885f572 <TextToInt32+0x11c>
	switch( inBase )
    e885f520:	47a1                	li	a5,8
    e885f522:	0af40563          	beq	s0,a5,e885f5cc <TextToInt32+0x176>
    e885f526:	0287c063          	blt	a5,s0,e885f546 <TextToInt32+0xf0>
    e885f52a:	4789                	li	a5,2
    e885f52c:	fcf409e3          	beq	s0,a5,e885f4fe <TextToInt32+0xa8>
	v = 0;
    e885f530:	4401                	li	s0,0
}
    e885f532:	8522                	mv	a0,s0
    e885f534:	70e2                	ld	ra,56(sp)
    e885f536:	6422                	ld	s0,8(sp)
    e885f538:	64c2                	ld	s1,16(sp)
    e885f53a:	6962                	ld	s2,24(sp)
    e885f53c:	7982                	ld	s3,32(sp)
    e885f53e:	7a22                	ld	s4,40(sp)
    e885f540:	7ac2                	ld	s5,48(sp)
    e885f542:	6121                	addi	sp,sp,64
    e885f544:	8082                	ret
	switch( inBase )
    e885f546:	47a9                	li	a5,10
    e885f548:	02f40563          	beq	s0,a5,e885f572 <TextToInt32+0x11c>
    e885f54c:	47c1                	li	a5,16
    e885f54e:	fef411e3          	bne	s0,a5,e885f530 <TextToInt32+0xda>
    e885f552:	b7ad                	j	e885f4bc <TextToInt32+0x66>
				else if( isxdigit( c ) ) v = ( v * 16 ) + ( 10 + ( tolower( c ) - 'a' ) );	// A-F digit
    e885f554:	8d2ff0ef          	jal	ra,e885e626 <isxdigit>
    e885f558:	dd69                	beqz	a0,e885f532 <TextToInt32+0xdc>
    e885f55a:	fbf9879b          	addiw	a5,s3,-65
    e885f55e:	0044141b          	slliw	s0,s0,0x4
    e885f562:	00fae563          	bltu	s5,a5,e885f56c <TextToInt32+0x116>
    e885f566:	fc99899b          	addiw	s3,s3,-55
    e885f56a:	bf8d                	j	e885f4dc <TextToInt32+0x86>
    e885f56c:	fa99899b          	addiw	s3,s3,-87
    e885f570:	b7b5                	j	e885f4dc <TextToInt32+0x86>
			c = *src;
    e885f572:	0004c703          	lbu	a4,0(s1)
			if( negative || ( c == '+' ) ) ++src;
    e885f576:	fd57079b          	addiw	a5,a4,-43
    e885f57a:	0fd7f793          	andi	a5,a5,253
    e885f57e:	e391                	bnez	a5,e885f582 <TextToInt32+0x12c>
    e885f580:	0485                	addi	s1,s1,1
{
    e885f582:	4401                	li	s0,0
				if( c == ',' ) continue;	// Skip commas so 1,000 is treated as 1000.
    e885f584:	02c00693          	li	a3,44
				if( !isdigit( c ) ) break;
    e885f588:	4625                	li	a2,9
				v = ( v * 10 ) + ( c - '0' );
    e885f58a:	45a9                	li	a1,10
			while( src < end )
    e885f58c:	0124ea63          	bltu	s1,s2,e885f5a0 <TextToInt32+0x14a>
			if( negative ) v = -v;
    e885f590:	02d00793          	li	a5,45
    e885f594:	f8f71fe3          	bne	a4,a5,e885f532 <TextToInt32+0xdc>
    e885f598:	4080043b          	negw	s0,s0
    e885f59c:	2401                	sext.w	s0,s0
    e885f59e:	bf51                	j	e885f532 <TextToInt32+0xdc>
				c = *src++;
    e885f5a0:	9814c78b          	lbuia	a5,(s1),1,0
				if( c == ',' ) continue;	// Skip commas so 1,000 is treated as 1000.
    e885f5a4:	fef684e3          	beq	a3,a5,e885f58c <TextToInt32+0x136>
				if( !isdigit( c ) ) break;
    e885f5a8:	fd07851b          	addiw	a0,a5,-48
    e885f5ac:	fea662e3          	bltu	a2,a0,e885f590 <TextToInt32+0x13a>
				v = ( v * 10 ) + ( c - '0' );
    e885f5b0:	2485978b          	mulaw	a5,a1,s0
    e885f5b4:	fd07841b          	addiw	s0,a5,-48
    e885f5b8:	bfd1                	j	e885f58c <TextToInt32+0x136>
		else if( ( inBase == 0 )     && ( src[ 0 ] == '0' ) && 
    e885f5ba:	f03d                	bnez	s0,e885f520 <TextToInt32+0xca>
    e885f5bc:	fd07879b          	addiw	a5,a5,-48
    e885f5c0:	0ff7f793          	andi	a5,a5,255
    e885f5c4:	471d                	li	a4,7
    e885f5c6:	faf766e3          	bltu	a4,a5,e885f572 <TextToInt32+0x11c>
			src   += 1;
    e885f5ca:	0485                	addi	s1,s1,1
{
    e885f5cc:	4401                	li	s0,0
				if( ( c < '0' ) || ( c > '7' ) ) break;
    e885f5ce:	471d                	li	a4,7
			while( src < end )
    e885f5d0:	f724f1e3          	bgeu	s1,s2,e885f532 <TextToInt32+0xdc>
				c = *src++;
    e885f5d4:	9814c78b          	lbuia	a5,(s1),1,0
				if( ( c < '0' ) || ( c > '7' ) ) break;
    e885f5d8:	fd07869b          	addiw	a3,a5,-48
    e885f5dc:	f4d76be3          	bltu	a4,a3,e885f532 <TextToInt32+0xdc>
				v = ( v * 8 ) + ( c - '0' );
    e885f5e0:	0034141b          	slliw	s0,s0,0x3
    e885f5e4:	fd04041b          	addiw	s0,s0,-48
    e885f5e8:	9c3d                	addw	s0,s0,a5
    e885f5ea:	b7dd                	j	e885f5d0 <TextToInt32+0x17a>

00000000e885f5ec <UUIDtoCStringFlags>:
{
    e885f5ec:	7131                	addi	sp,sp,-192
    e885f5ee:	f922                	sd	s0,176(sp)
    e885f5f0:	f14a                	sd	s2,160(sp)
    e885f5f2:	ed4e                	sd	s3,152(sp)
    e885f5f4:	e952                	sd	s4,144(sp)
    e885f5f6:	e556                	sd	s5,136(sp)
    e885f5f8:	e15a                	sd	s6,128(sp)
    e885f5fa:	fd06                	sd	ra,184(sp)
    e885f5fc:	f526                	sd	s1,168(sp)
    e885f5fe:	fcde                	sd	s7,120(sp)
    e885f600:	8b3e                	mv	s6,a5
	if( ( inSize == 1 ) && baseUUID )
    e885f602:	4785                	li	a5,1
{
    e885f604:	842a                	mv	s0,a0
    e885f606:	8932                	mv	s2,a2
    e885f608:	8aba                	mv	s5,a4
	Boolean const				littleEndian	= ( inFlags & kUUIDFlag_LittleEndian ) ? true : false;
    e885f60a:	0016fa13          	andi	s4,a3,1
	Boolean const				shortForm		= ( inFlags & kUUIDFlag_ShortForm )    ? true : false;
    e885f60e:	0416b98b          	extu	s3,a3,1,1
	if( ( inSize == 1 ) && baseUUID )
    e885f612:	08f59063          	bne	a1,a5,e885f692 <UUIDtoCStringFlags+0xa6>
    e885f616:	1c060463          	beqz	a2,e885f7de <UUIDtoCStringFlags+0x1f2>
		memcpy( tempUUID, baseUUID, 16 );
    e885f61a:	06010b93          	addi	s7,sp,96
    e885f61e:	4641                	li	a2,16
    e885f620:	85ca                	mv	a1,s2
    e885f622:	855e                	mv	a0,s7
    e885f624:	57d1c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		tempUUID[ littleEndian ? 0 : 3 ] = a[ 0 ];
    e885f628:	4781                	li	a5,0
    e885f62a:	000a1363          	bnez	s4,e885f630 <UUIDtoCStringFlags+0x44>
    e885f62e:	478d                	li	a5,3
    e885f630:	00044703          	lbu	a4,0(s0)
    e885f634:	00fbd70b          	srb	a4,s7,a5,0
	if( shortForm && baseUUID && ( memcmp( &a[ 4 ], &baseUUID[ 4 ], 12 ) == 0 ) )
    e885f638:	1a098063          	beqz	s3,e885f7d8 <UUIDtoCStringFlags+0x1ec>
		a = ( (const uint8_t *) "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" );
    e885f63c:	4481                	li	s1,0
    e885f63e:	1080                	addi	s0,sp,96
    e885f640:	4791                	li	a5,4
    while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
    e885f642:	4641                	li	a2,16
    e885f644:	80f4468b          	lrbu	a3,s0,a5,0
    e885f648:	80f9470b          	lrbu	a4,s2,a5,0
    e885f64c:	10e69f63          	bne	a3,a4,e885f76a <UUIDtoCStringFlags+0x17e>
    e885f650:	0785                	addi	a5,a5,1
    e885f652:	fec799e3          	bne	a5,a2,e885f644 <UUIDtoCStringFlags+0x58>
		snprintf( buf, 37, "%x", (unsigned int)( littleEndian ? ReadLittle32( a ) : ReadBig32( a ) ) );
    e885f656:	4014                	lw	a3,0(s0)
    e885f658:	000a1463          	bnez	s4,e885f660 <UUIDtoCStringFlags+0x74>
    e885f65c:	9006968b          	revw	a3,a3
    e885f660:	00047617          	auipc	a2,0x47
    e885f664:	b7060613          	addi	a2,a2,-1168 # e88a61d0 <end.8789+0x2b28>
    e885f668:	02500593          	li	a1,37
    e885f66c:	8556                	mv	a0,s5
    e885f66e:	3e31c0ef          	jal	ra,e887c250 <eLIBs_snprintf>
	if( outErr ) *outErr = err;
    e885f672:	000b0463          	beqz	s6,e885f67a <UUIDtoCStringFlags+0x8e>
    e885f676:	009b2023          	sw	s1,0(s6)
}
    e885f67a:	70ea                	ld	ra,184(sp)
    e885f67c:	744a                	ld	s0,176(sp)
    e885f67e:	8556                	mv	a0,s5
    e885f680:	74aa                	ld	s1,168(sp)
    e885f682:	790a                	ld	s2,160(sp)
    e885f684:	69ea                	ld	s3,152(sp)
    e885f686:	6a4a                	ld	s4,144(sp)
    e885f688:	6aaa                	ld	s5,136(sp)
    e885f68a:	6b0a                	ld	s6,128(sp)
    e885f68c:	7be6                	ld	s7,120(sp)
    e885f68e:	6129                	addi	sp,sp,192
    e885f690:	8082                	ret
	else if( ( inSize == 2 ) && baseUUID )
    e885f692:	4789                	li	a5,2
    e885f694:	08f59a63          	bne	a1,a5,e885f728 <UUIDtoCStringFlags+0x13c>
    e885f698:	14060363          	beqz	a2,e885f7de <UUIDtoCStringFlags+0x1f2>
		memcpy( tempUUID, baseUUID, 16 );
    e885f69c:	4641                	li	a2,16
    e885f69e:	85ca                	mv	a1,s2
    e885f6a0:	1088                	addi	a0,sp,96
    e885f6a2:	4ff1c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		if( littleEndian )
    e885f6a6:	00045783          	lhu	a5,0(s0)
    e885f6aa:	000a0e63          	beqz	s4,e885f6c6 <UUIDtoCStringFlags+0xda>
			tempUUID[ 0 ] = a[ 1 ];
    e885f6ae:	0087971b          	slliw	a4,a5,0x8
    e885f6b2:	5c87b78b          	extu	a5,a5,23,8
    e885f6b6:	8fd9                	or	a5,a5,a4
    e885f6b8:	06f11023          	sh	a5,96(sp)
	if( shortForm && baseUUID && ( memcmp( &a[ 4 ], &baseUUID[ 4 ], 12 ) == 0 ) )
    e885f6bc:	f80990e3          	bnez	s3,e885f63c <UUIDtoCStringFlags+0x50>
    e885f6c0:	4481                	li	s1,0
    e885f6c2:	1080                	addi	s0,sp,96
    e885f6c4:	a06d                	j	e885f76e <UUIDtoCStringFlags+0x182>
			tempUUID[ 2 ] = a[ 0 ];
    e885f6c6:	06f11123          	sh	a5,98(sp)
	if( shortForm && baseUUID && ( memcmp( &a[ 4 ], &baseUUID[ 4 ], 12 ) == 0 ) )
    e885f6ca:	f60999e3          	bnez	s3,e885f63c <UUIDtoCStringFlags+0x50>
    e885f6ce:	4481                	li	s1,0
    e885f6d0:	1080                	addi	s0,sp,96
			snprintf( buf, 37, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", 
    e885f6d2:	00f44603          	lbu	a2,15(s0)
    e885f6d6:	00444883          	lbu	a7,4(s0)
    e885f6da:	00344803          	lbu	a6,3(s0)
    e885f6de:	00244783          	lbu	a5,2(s0)
    e885f6e2:	00144703          	lbu	a4,1(s0)
    e885f6e6:	00044683          	lbu	a3,0(s0)
    e885f6ea:	e8b2                	sd	a2,80(sp)
    e885f6ec:	00e44603          	lbu	a2,14(s0)
    e885f6f0:	e4b2                	sd	a2,72(sp)
    e885f6f2:	00d44603          	lbu	a2,13(s0)
    e885f6f6:	e0b2                	sd	a2,64(sp)
    e885f6f8:	00c44603          	lbu	a2,12(s0)
    e885f6fc:	fc32                	sd	a2,56(sp)
    e885f6fe:	00b44603          	lbu	a2,11(s0)
    e885f702:	f832                	sd	a2,48(sp)
    e885f704:	00a44603          	lbu	a2,10(s0)
    e885f708:	f432                	sd	a2,40(sp)
    e885f70a:	00944603          	lbu	a2,9(s0)
    e885f70e:	f032                	sd	a2,32(sp)
    e885f710:	00844603          	lbu	a2,8(s0)
    e885f714:	ec32                	sd	a2,24(sp)
    e885f716:	00744603          	lbu	a2,7(s0)
    e885f71a:	e832                	sd	a2,16(sp)
    e885f71c:	00644603          	lbu	a2,6(s0)
    e885f720:	e432                	sd	a2,8(sp)
    e885f722:	00544603          	lbu	a2,5(s0)
    e885f726:	a871                	j	e885f7c2 <UUIDtoCStringFlags+0x1d6>
	else if( ( inSize == 4 ) && baseUUID )
    e885f728:	4791                	li	a5,4
    e885f72a:	02f59163          	bne	a1,a5,e885f74c <UUIDtoCStringFlags+0x160>
    e885f72e:	ca45                	beqz	a2,e885f7de <UUIDtoCStringFlags+0x1f2>
		memcpy( tempUUID, baseUUID, 16 );
    e885f730:	4641                	li	a2,16
    e885f732:	85ca                	mv	a1,s2
    e885f734:	1088                	addi	a0,sp,96
    e885f736:	46b1c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		if( littleEndian )
    e885f73a:	401c                	lw	a5,0(s0)
    e885f73c:	000a0663          	beqz	s4,e885f748 <UUIDtoCStringFlags+0x15c>
			tempUUID[ 0 ] = a[ 3 ];
    e885f740:	9007978b          	revw	a5,a5
    e885f744:	d0be                	sw	a5,96(sp)
    e885f746:	bf9d                	j	e885f6bc <UUIDtoCStringFlags+0xd0>
			tempUUID[ 0 ] = a[ 0 ];
    e885f748:	d0be                	sw	a5,96(sp)
    e885f74a:	b741                	j	e885f6ca <UUIDtoCStringFlags+0xde>
	else if( inSize != 16 )
    e885f74c:	47c1                	li	a5,16
	OSStatus					err				= kNoErr;
    e885f74e:	4481                	li	s1,0
	else if( inSize != 16 )
    e885f750:	00f58963          	beq	a1,a5,e885f762 <UUIDtoCStringFlags+0x176>
		err = kSizeErr;
    e885f754:	74f9                	lui	s1,0xffffe
    e885f756:	5a948493          	addi	s1,s1,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
		a = ( (const uint8_t *) "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" );
    e885f75a:	0003e417          	auipc	s0,0x3e
    e885f75e:	02e40413          	addi	s0,s0,46 # e889d788 <icmp6_param_problem+0x71a>
	if( shortForm && baseUUID && ( memcmp( &a[ 4 ], &baseUUID[ 4 ], 12 ) == 0 ) )
    e885f762:	00098463          	beqz	s3,e885f76a <UUIDtoCStringFlags+0x17e>
    e885f766:	ec091de3          	bnez	s2,e885f640 <UUIDtoCStringFlags+0x54>
		if( littleEndian )
    e885f76a:	f60a04e3          	beqz	s4,e885f6d2 <UUIDtoCStringFlags+0xe6>
			snprintf( buf, 37, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", 
    e885f76e:	00f44603          	lbu	a2,15(s0)
    e885f772:	00544883          	lbu	a7,5(s0)
    e885f776:	00044803          	lbu	a6,0(s0)
    e885f77a:	00144783          	lbu	a5,1(s0)
    e885f77e:	00244703          	lbu	a4,2(s0)
    e885f782:	00344683          	lbu	a3,3(s0)
    e885f786:	e8b2                	sd	a2,80(sp)
    e885f788:	00e44603          	lbu	a2,14(s0)
    e885f78c:	e4b2                	sd	a2,72(sp)
    e885f78e:	00d44603          	lbu	a2,13(s0)
    e885f792:	e0b2                	sd	a2,64(sp)
    e885f794:	00c44603          	lbu	a2,12(s0)
    e885f798:	fc32                	sd	a2,56(sp)
    e885f79a:	00b44603          	lbu	a2,11(s0)
    e885f79e:	f832                	sd	a2,48(sp)
    e885f7a0:	00a44603          	lbu	a2,10(s0)
    e885f7a4:	f432                	sd	a2,40(sp)
    e885f7a6:	00944603          	lbu	a2,9(s0)
    e885f7aa:	f032                	sd	a2,32(sp)
    e885f7ac:	00844603          	lbu	a2,8(s0)
    e885f7b0:	ec32                	sd	a2,24(sp)
    e885f7b2:	00644603          	lbu	a2,6(s0)
    e885f7b6:	e832                	sd	a2,16(sp)
    e885f7b8:	00744603          	lbu	a2,7(s0)
    e885f7bc:	e432                	sd	a2,8(sp)
    e885f7be:	00444603          	lbu	a2,4(s0)
			snprintf( buf, 37, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", 
    e885f7c2:	e032                	sd	a2,0(sp)
    e885f7c4:	02500593          	li	a1,37
    e885f7c8:	00064617          	auipc	a2,0x64
    e885f7cc:	8a060613          	addi	a2,a2,-1888 # e88c3068 <kPairingSessionClass+0x378>
    e885f7d0:	8556                	mv	a0,s5
    e885f7d2:	27f1c0ef          	jal	ra,e887c250 <eLIBs_snprintf>
    e885f7d6:	bd71                	j	e885f672 <UUIDtoCStringFlags+0x86>
	if( shortForm && baseUUID && ( memcmp( &a[ 4 ], &baseUUID[ 4 ], 12 ) == 0 ) )
    e885f7d8:	4481                	li	s1,0
    e885f7da:	845e                	mv	s0,s7
    e885f7dc:	b779                	j	e885f76a <UUIDtoCStringFlags+0x17e>
		err = kSizeErr;
    e885f7de:	74f9                	lui	s1,0xffffe
    e885f7e0:	5a948493          	addi	s1,s1,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
		a = ( (const uint8_t *) "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" );
    e885f7e4:	0003e417          	auipc	s0,0x3e
    e885f7e8:	fa440413          	addi	s0,s0,-92 # e889d788 <icmp6_param_problem+0x71a>
    e885f7ec:	bfbd                	j	e885f76a <UUIDtoCStringFlags+0x17e>

00000000e885f7ee <UUIDtoCStringEx>:
{
    e885f7ee:	8836                	mv	a6,a3
	return( UUIDtoCStringFlags( inUUID, inSize, inBaseUUID, inLittleEndian ? kUUIDFlag_LittleEndian : kUUIDFlags_None, 
    e885f7f0:	4781                	li	a5,0
    e885f7f2:	00c036b3          	snez	a3,a2
    e885f7f6:	8642                	mv	a2,a6
    e885f7f8:	df5ff06f          	j	e885f5ec <UUIDtoCStringFlags>

00000000e885f7fc <UUIDtoCString>:
	return( UUIDtoCStringEx( inUUID, 16, inLittleEndian, NULL, inBuffer ) );
    e885f7fc:	8732                	mv	a4,a2
    e885f7fe:	4681                	li	a3,0
    e885f800:	862e                	mv	a2,a1
    e885f802:	45c1                	li	a1,16
    e885f804:	febff06f          	j	e885f7ee <UUIDtoCStringEx>

00000000e885f808 <strdup>:
{
    e885f808:	1101                	addi	sp,sp,-32
    e885f80a:	ec06                	sd	ra,24(sp)
    e885f80c:	e822                	sd	s0,16(sp)
    e885f80e:	e42a                	sd	a0,8(sp)
	size = strlen( inString ) + 1;
    e885f810:	3091c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f814:	0015061b          	addiw	a2,a0,1
    e885f818:	7c06360b          	extu	a2,a2,31,0
	s = (char *) malloc( size );
    e885f81c:	8532                	mv	a0,a2
    e885f81e:	e032                	sd	a2,0(sp)
    e885f820:	02e1c0ef          	jal	ra,e887b84e <my_malloc>
    e885f824:	842a                	mv	s0,a0
	require( s, exit );
    e885f826:	c509                	beqz	a0,e885f830 <strdup+0x28>
	memcpy( s, inString, size );
    e885f828:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e885f82c:	3751c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
}
    e885f830:	8522                	mv	a0,s0
    e885f832:	60e2                	ld	ra,24(sp)
    e885f834:	6442                	ld	s0,16(sp)
    e885f836:	6105                	addi	sp,sp,32
    e885f838:	8082                	ret

00000000e885f83a <strndup>:
{
    e885f83a:	1101                	addi	sp,sp,-32
    e885f83c:	e84a                	sd	s2,16(sp)
    e885f83e:	f891540b          	sdd	s0,s1,(sp),0,4
    e885f842:	ec06                	sd	ra,24(sp)
    e885f844:	892a                	mv	s2,a0
    e885f846:	842e                	mv	s0,a1
	size = strnlen( inStr, inN );
    e885f848:	2d11c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f84c:	7c05350b          	extu	a0,a0,31,0
    e885f850:	00a46763          	bltu	s0,a0,e885f85e <strndup+0x24>
    e885f854:	854a                	mv	a0,s2
    e885f856:	2c31c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f85a:	7c05340b          	extu	s0,a0,31,0
	s = (char *) malloc( size + 1 );
    e885f85e:	00140513          	addi	a0,s0,1
    e885f862:	7ed1b0ef          	jal	ra,e887b84e <my_malloc>
    e885f866:	84aa                	mv	s1,a0
	require( s, exit );
    e885f868:	c519                	beqz	a0,e885f876 <strndup+0x3c>
	memcpy( s, inStr, size );
    e885f86a:	8622                	mv	a2,s0
    e885f86c:	85ca                	mv	a1,s2
    e885f86e:	3331c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	s[ size ] = '\0';
    e885f872:	0084d00b          	srb	zero,s1,s0,0
}
    e885f876:	8526                	mv	a0,s1
    e885f878:	60e2                	ld	ra,24(sp)
    e885f87a:	f891440b          	ldd	s0,s1,(sp),0,4
    e885f87e:	6942                	ld	s2,16(sp)
    e885f880:	6105                	addi	sp,sp,32
    e885f882:	8082                	ret

00000000e885f884 <stricmp_prefix>:
{
    e885f884:	4601                	li	a2,0
		c1 = tolower( *( (const unsigned char *) inStr ) );
    e885f886:	4865                	li	a6,25
    e885f888:	80c5478b          	lrbu	a5,a0,a2,0
    e885f88c:	86be                	mv	a3,a5
    e885f88e:	fbf7879b          	addiw	a5,a5,-65
    e885f892:	0ff7f793          	andi	a5,a5,255
    e885f896:	00f86463          	bltu	a6,a5,e885f89e <stricmp_prefix+0x1a>
    e885f89a:	02068693          	addi	a3,a3,32 # 2020 <memcmp-0xe87fdfe0>
		c2 = tolower( *( (const unsigned char *) inPrefix ) );
    e885f89e:	80c5c70b          	lrbu	a4,a1,a2,0
    e885f8a2:	87ba                	mv	a5,a4
    e885f8a4:	fbf7071b          	addiw	a4,a4,-65
    e885f8a8:	0ff77713          	andi	a4,a4,255
    e885f8ac:	00e86b63          	bltu	a6,a4,e885f8c2 <stricmp_prefix+0x3e>
    e885f8b0:	02078793          	addi	a5,a5,32
		if( c1 < c2 )    return( -1 );
    e885f8b4:	00f6ca63          	blt	a3,a5,e885f8c8 <stricmp_prefix+0x44>
		if( c1 > c2 )    return(  1 );
    e885f8b8:	0605                	addi	a2,a2,1
    e885f8ba:	fcd7d7e3          	bge	a5,a3,e885f888 <stricmp_prefix+0x4>
    e885f8be:	4785                	li	a5,1
    e885f8c0:	a011                	j	e885f8c4 <stricmp_prefix+0x40>
		if( c2 == '\0' ) break;
    e885f8c2:	fbed                	bnez	a5,e885f8b4 <stricmp_prefix+0x30>
}
    e885f8c4:	853e                	mv	a0,a5
    e885f8c6:	8082                	ret
		if( c1 < c2 )    return( -1 );
    e885f8c8:	57fd                	li	a5,-1
    e885f8ca:	bfed                	j	e885f8c4 <stricmp_prefix+0x40>

00000000e885f8cc <strnicmp_prefix>:
	while( inN-- > 0 )
    e885f8cc:	4701                	li	a4,0
		c1 = tolower( *s1 );
    e885f8ce:	48e5                	li	a7,25
    e885f8d0:	00e607b3          	add	a5,a2,a4
	while( inN-- > 0 )
    e885f8d4:	00e59963          	bne	a1,a4,e885f8e6 <strnicmp_prefix+0x1a>
	if( *s2 != 0 ) return( -1 );
    e885f8d8:	0007c783          	lbu	a5,0(a5)
    e885f8dc:	00f037b3          	snez	a5,a5
    e885f8e0:	40f007b3          	neg	a5,a5
    e885f8e4:	a83d                	j	e885f922 <strnicmp_prefix+0x56>
		c1 = tolower( *s1 );
    e885f8e6:	80e5478b          	lrbu	a5,a0,a4,0
    e885f8ea:	883e                	mv	a6,a5
    e885f8ec:	fbf7879b          	addiw	a5,a5,-65
    e885f8f0:	0ff7f793          	andi	a5,a5,255
    e885f8f4:	00f8e463          	bltu	a7,a5,e885f8fc <strnicmp_prefix+0x30>
    e885f8f8:	02080813          	addi	a6,a6,32
		c2 = tolower( *s2 );
    e885f8fc:	80e6468b          	lrbu	a3,a2,a4,0
    e885f900:	87b6                	mv	a5,a3
    e885f902:	fbf6869b          	addiw	a3,a3,-65
    e885f906:	0ff6f693          	andi	a3,a3,255
    e885f90a:	00d8eb63          	bltu	a7,a3,e885f920 <strnicmp_prefix+0x54>
    e885f90e:	02078793          	addi	a5,a5,32
		if( c1 < c2 ) return( -1 );
    e885f912:	00f84a63          	blt	a6,a5,e885f926 <strnicmp_prefix+0x5a>
		if( c1 > c2 ) return(  1 );
    e885f916:	0705                	addi	a4,a4,1
    e885f918:	fb07dce3          	bge	a5,a6,e885f8d0 <strnicmp_prefix+0x4>
    e885f91c:	4785                	li	a5,1
    e885f91e:	a011                	j	e885f922 <strnicmp_prefix+0x56>
		if( c2 == 0 ) return(  0 );
    e885f920:	fbed                	bnez	a5,e885f912 <strnicmp_prefix+0x46>
}
    e885f922:	853e                	mv	a0,a5
    e885f924:	8082                	ret
		if( c1 < c2 ) return( -1 );
    e885f926:	57fd                	li	a5,-1
    e885f928:	bfed                	j	e885f922 <strnicmp_prefix+0x56>

00000000e885f92a <strncmpx>:
{
    e885f92a:	882a                	mv	a6,a0
	while( inN-- > 0 )
    e885f92c:	4701                	li	a4,0
    e885f92e:	80e6478b          	lrbu	a5,a2,a4,0
    e885f932:	00e59763          	bne	a1,a4,e885f940 <strncmpx+0x16>
	if( *s2 != 0 ) return( -1 );
    e885f936:	00f03533          	snez	a0,a5
    e885f93a:	40a00533          	neg	a0,a0
    e885f93e:	8082                	ret
		c1 = *s1++;
    e885f940:	80e8468b          	lrbu	a3,a6,a4,0
		c2 = *s2++;
    e885f944:	853e                	mv	a0,a5
		if( c1 < c2 ) return( -1 );
    e885f946:	00f6c763          	blt	a3,a5,e885f954 <strncmpx+0x2a>
		if( c1 > c2 ) return(  1 );
    e885f94a:	00d7c763          	blt	a5,a3,e885f958 <strncmpx+0x2e>
		if( c2 == 0 ) return(  0 );
    e885f94e:	0705                	addi	a4,a4,1
    e885f950:	fff9                	bnez	a5,e885f92e <strncmpx+0x4>
}
    e885f952:	8082                	ret
		if( c1 < c2 ) return( -1 );
    e885f954:	557d                	li	a0,-1
    e885f956:	8082                	ret
		if( c1 > c2 ) return(  1 );
    e885f958:	4505                	li	a0,1
    e885f95a:	bfe5                	j	e885f952 <strncmpx+0x28>

00000000e885f95c <strnicmpx>:
	while( inN-- > 0 )
    e885f95c:	4701                	li	a4,0
		c1 = tolower( *s1 );
    e885f95e:	48e5                	li	a7,25
    e885f960:	00e607b3          	add	a5,a2,a4
	while( inN-- > 0 )
    e885f964:	00e59963          	bne	a1,a4,e885f976 <strnicmpx+0x1a>
	if( *s2 != 0 ) return( -1 );
    e885f968:	0007c783          	lbu	a5,0(a5)
    e885f96c:	00f037b3          	snez	a5,a5
    e885f970:	40f007b3          	neg	a5,a5
    e885f974:	a82d                	j	e885f9ae <strnicmpx+0x52>
		c1 = tolower( *s1 );
    e885f976:	80e5478b          	lrbu	a5,a0,a4,0
    e885f97a:	883e                	mv	a6,a5
    e885f97c:	fbf7879b          	addiw	a5,a5,-65
    e885f980:	0ff7f793          	andi	a5,a5,255
    e885f984:	00f8e463          	bltu	a7,a5,e885f98c <strnicmpx+0x30>
    e885f988:	02080813          	addi	a6,a6,32
		c2 = tolower( *s2 );
    e885f98c:	80e6468b          	lrbu	a3,a2,a4,0
    e885f990:	87b6                	mv	a5,a3
    e885f992:	fbf6869b          	addiw	a3,a3,-65
    e885f996:	0ff6f693          	andi	a3,a3,255
    e885f99a:	00d8e463          	bltu	a7,a3,e885f9a2 <strnicmpx+0x46>
    e885f99e:	02078793          	addi	a5,a5,32
		if( c1 < c2 ) return( -1 );
    e885f9a2:	00f84863          	blt	a6,a5,e885f9b2 <strnicmpx+0x56>
		if( c1 > c2 ) return(  1 );
    e885f9a6:	0107c863          	blt	a5,a6,e885f9b6 <strnicmpx+0x5a>
		if( c2 == 0 ) return(  0 );
    e885f9aa:	0705                	addi	a4,a4,1
    e885f9ac:	fbd5                	bnez	a5,e885f960 <strnicmpx+0x4>
}
    e885f9ae:	853e                	mv	a0,a5
    e885f9b0:	8082                	ret
		if( c1 < c2 ) return( -1 );
    e885f9b2:	57fd                	li	a5,-1
    e885f9b4:	bfed                	j	e885f9ae <strnicmpx+0x52>
		if( c1 > c2 ) return(  1 );
    e885f9b6:	4785                	li	a5,1
    e885f9b8:	bfdd                	j	e885f9ae <strnicmpx+0x52>

00000000e885f9ba <strnicmp_suffix>:
{
    e885f9ba:	1101                	addi	sp,sp,-32
    e885f9bc:	f891540b          	sdd	s0,s1,(sp),0,4
    e885f9c0:	e84a                	sd	s2,16(sp)
    e885f9c2:	ec06                	sd	ra,24(sp)
    e885f9c4:	84aa                	mv	s1,a0
    e885f9c6:	842e                	mv	s0,a1
    e885f9c8:	8932                	mv	s2,a2
	stringLen = strnlen( stringPtr, inMaxLen );
    e885f9ca:	14f1c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f9ce:	7c05350b          	extu	a0,a0,31,0
    e885f9d2:	00a46763          	bltu	s0,a0,e885f9e0 <strnicmp_suffix+0x26>
    e885f9d6:	8526                	mv	a0,s1
    e885f9d8:	1411c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f9dc:	7c05340b          	extu	s0,a0,31,0
	suffixLen = strlen( inSuffix );
    e885f9e0:	854a                	mv	a0,s2
    e885f9e2:	1371c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885f9e6:	7c05358b          	extu	a1,a0,31,0
	if( suffixLen <= stringLen )
    e885f9ea:	00b46d63          	bltu	s0,a1,e885fa04 <strnicmp_suffix+0x4a>
		return( strnicmpx( stringPtr + ( stringLen - suffixLen ), suffixLen, inSuffix ) );
    e885f9ee:	8c0d                	sub	s0,s0,a1
    e885f9f0:	00848533          	add	a0,s1,s0
}
    e885f9f4:	f891440b          	ldd	s0,s1,(sp),0,4
    e885f9f8:	60e2                	ld	ra,24(sp)
		return( strnicmpx( stringPtr + ( stringLen - suffixLen ), suffixLen, inSuffix ) );
    e885f9fa:	864a                	mv	a2,s2
}
    e885f9fc:	6942                	ld	s2,16(sp)
    e885f9fe:	6105                	addi	sp,sp,32
		return( strnicmpx( stringPtr + ( stringLen - suffixLen ), suffixLen, inSuffix ) );
    e885fa00:	f5dff06f          	j	e885f95c <strnicmpx>
}
    e885fa04:	60e2                	ld	ra,24(sp)
    e885fa06:	f891440b          	ldd	s0,s1,(sp),0,4
    e885fa0a:	6942                	ld	s2,16(sp)
    e885fa0c:	557d                	li	a0,-1
    e885fa0e:	6105                	addi	sp,sp,32
    e885fa10:	8082                	ret

00000000e885fa12 <strnstr>:
{
    e885fa12:	7139                	addi	sp,sp,-64
    e885fa14:	e422                	sd	s0,8(sp)
    e885fa16:	fc06                	sd	ra,56(sp)
    e885fa18:	e826                	sd	s1,16(sp)
    e885fa1a:	ec4a                	sd	s2,24(sp)
    e885fa1c:	f04e                	sd	s3,32(sp)
    e885fa1e:	f452                	sd	s4,40(sp)
    e885fa20:	f856                	sd	s5,48(sp)
	if ((c = *find++) != '\0') {
    e885fa22:	0005ca83          	lbu	s5,0(a1)
    e885fa26:	842a                	mv	s0,a0
    e885fa28:	020a8d63          	beqz	s5,e885fa62 <strnstr+0x50>
    e885fa2c:	00158493          	addi	s1,a1,1
		len = strlen(find);
    e885fa30:	8526                	mv	a0,s1
    e885fa32:	8932                	mv	s2,a2
    e885fa34:	0e51c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885fa38:	7c053a0b          	extu	s4,a0,31,0
    e885fa3c:	9922                	add	s2,s2,s0
				if (slen-- < 1 || (sc = *s++) == '\0')
    e885fa3e:	03240e63          	beq	s0,s2,e885fa7a <strnstr+0x68>
    e885fa42:	89a2                	mv	s3,s0
    e885fa44:	9819c78b          	lbuia	a5,(s3),1,0
    e885fa48:	cb8d                	beqz	a5,e885fa7a <strnstr+0x68>
			} while (sc != c);
    e885fa4a:	02fa9663          	bne	s5,a5,e885fa76 <strnstr+0x64>
			if (len > slen)
    e885fa4e:	413907b3          	sub	a5,s2,s3
    e885fa52:	0347e463          	bltu	a5,s4,e885fa7a <strnstr+0x68>
		} while (strncmp(s, find, len) != 0);
    e885fa56:	8652                	mv	a2,s4
    e885fa58:	85a6                	mv	a1,s1
    e885fa5a:	854e                	mv	a0,s3
    e885fa5c:	0f91c0ef          	jal	ra,e887c354 <eLIBs_strncmp>
    e885fa60:	e919                	bnez	a0,e885fa76 <strnstr+0x64>
}
    e885fa62:	8522                	mv	a0,s0
    e885fa64:	70e2                	ld	ra,56(sp)
    e885fa66:	6422                	ld	s0,8(sp)
    e885fa68:	64c2                	ld	s1,16(sp)
    e885fa6a:	6962                	ld	s2,24(sp)
    e885fa6c:	7982                	ld	s3,32(sp)
    e885fa6e:	7a22                	ld	s4,40(sp)
    e885fa70:	7ac2                	ld	s5,48(sp)
    e885fa72:	6121                	addi	sp,sp,64
    e885fa74:	8082                	ret
{
    e885fa76:	844e                	mv	s0,s3
    e885fa78:	b7d9                	j	e885fa3e <strnstr+0x2c>
					return (NULL);
    e885fa7a:	4401                	li	s0,0
    e885fa7c:	b7dd                	j	e885fa62 <strnstr+0x50>

00000000e885fa7e <strlcpy>:
	if (n != 0 && --n != 0) {
    e885fa7e:	c21d                	beqz	a2,e885faa4 <strlcpy+0x26>
    e885fa80:	4785                	li	a5,1
    e885fa82:	02f60963          	beq	a2,a5,e885fab4 <strlcpy+0x36>
    e885fa86:	00158713          	addi	a4,a1,1
		} while (--n != 0);
    e885fa8a:	962e                	add	a2,a2,a1
			if ((*d++ = *s++) == 0)
    e885fa8c:	fff74683          	lbu	a3,-1(a4)
    e885fa90:	87ba                	mv	a5,a4
    e885fa92:	1815568b          	sbia	a3,(a0),1,0
    e885fa96:	ca99                	beqz	a3,e885faac <strlcpy+0x2e>
		} while (--n != 0);
    e885fa98:	0705                	addi	a4,a4,1
    e885fa9a:	fee619e3          	bne	a2,a4,e885fa8c <strlcpy+0xe>
			*d = '\0';		/* NUL-terminate dst */
    e885fa9e:	00050023          	sb	zero,0(a0)
    e885faa2:	a011                	j	e885faa6 <strlcpy+0x28>
	const char *s = src;
    e885faa4:	87ae                	mv	a5,a1
		while (*s++)
    e885faa6:	9817c70b          	lbuia	a4,(a5),1,0
    e885faaa:	ff75                	bnez	a4,e885faa6 <strlcpy+0x28>
	return(s - src - 1);	/* count does not include NUL */
    e885faac:	40b78533          	sub	a0,a5,a1
    e885fab0:	157d                	addi	a0,a0,-1
}
    e885fab2:	8082                	ret
	const char *s = src;
    e885fab4:	87ae                	mv	a5,a1
    e885fab6:	b7e5                	j	e885fa9e <strlcpy+0x20>

00000000e885fab8 <strpbrk>:
    for( sc1 = cs; *sc1 != '\0'; ++sc1)
    e885fab8:	00054703          	lbu	a4,0(a0)
    e885fabc:	eb19                	bnez	a4,e885fad2 <strpbrk+0x1a>
    return NULL;
    e885fabe:	4501                	li	a0,0
}
    e885fac0:	8082                	ret
            if (*sc1 == *sc2)
    e885fac2:	fee68fe3          	beq	a3,a4,e885fac0 <strpbrk+0x8>
        for( sc2 = ct; *sc2 != '\0'; ++sc2)
    e885fac6:	0785                	addi	a5,a5,1
    e885fac8:	0007c683          	lbu	a3,0(a5)
    e885facc:	fafd                	bnez	a3,e885fac2 <strpbrk+0xa>
    for( sc1 = cs; *sc1 != '\0'; ++sc1)
    e885face:	0505                	addi	a0,a0,1
    e885fad0:	b7e5                	j	e885fab8 <strpbrk>
        for( sc2 = ct; *sc2 != '\0'; ++sc2)
    e885fad2:	87ae                	mv	a5,a1
    e885fad4:	bfd5                	j	e885fac8 <strpbrk+0x10>

00000000e885fad6 <strsep_compat>:
{
    e885fad6:	1101                	addi	sp,sp,-32
    e885fad8:	ec06                	sd	ra,24(sp)
    e885fada:	e422                	sd	s0,8(sp)
    e885fadc:	e826                	sd	s1,16(sp)
	char * const		ptr = *ioStr;
    e885fade:	6104                	ld	s1,0(a0)
	if( !ptr ) return( NULL );
    e885fae0:	c889                	beqz	s1,e885faf2 <strsep_compat+0x1c>
    e885fae2:	842a                	mv	s0,a0
	end = strpbrk( ptr, inDelimiters );
    e885fae4:	8526                	mv	a0,s1
    e885fae6:	fd3ff0ef          	jal	ra,e885fab8 <strpbrk>
	if( end ) *end++ = '\0';
    e885faea:	c119                	beqz	a0,e885faf0 <strsep_compat+0x1a>
    e885faec:	1815500b          	sbia	zero,(a0),1,0
	*ioStr = end;
    e885faf0:	e008                	sd	a0,0(s0)
}
    e885faf2:	60e2                	ld	ra,24(sp)
    e885faf4:	6422                	ld	s0,8(sp)
    e885faf6:	8526                	mv	a0,s1
    e885faf8:	64c2                	ld	s1,16(sp)
    e885fafa:	6105                	addi	sp,sp,32
    e885fafc:	8082                	ret

00000000e885fafe <strcasestr>:
    if(NULL == src || NULL == find)
    e885fafe:	c531                	beqz	a0,e885fb4a <strcasestr+0x4c>
        while(*s2 && *s1 && !(tolower(*s1) - tolower(*s2)))
    e885fb00:	4865                	li	a6,25
    if(NULL == src || NULL == find)
    e885fb02:	e199                	bnez	a1,e885fb08 <strcasestr+0xa>
        return NULL;
    e885fb04:	4501                	li	a0,0
    e885fb06:	8082                	ret
    while(*cp){
    e885fb08:	00054783          	lbu	a5,0(a0)
    e885fb0c:	dfe5                	beqz	a5,e885fb04 <strcasestr+0x6>
    e885fb0e:	4681                	li	a3,0
        while(*s2 && *s1 && !(tolower(*s1) - tolower(*s2)))
    e885fb10:	80d5c78b          	lrbu	a5,a1,a3,0
    e885fb14:	cb9d                	beqz	a5,e885fb4a <strcasestr+0x4c>
    e885fb16:	80d5470b          	lrbu	a4,a0,a3,0
    e885fb1a:	c715                	beqz	a4,e885fb46 <strcasestr+0x48>
    e885fb1c:	863a                	mv	a2,a4
    e885fb1e:	fbf7071b          	addiw	a4,a4,-65
    e885fb22:	0ff77713          	andi	a4,a4,255
    e885fb26:	00e86463          	bltu	a6,a4,e885fb2e <strcasestr+0x30>
    e885fb2a:	02060613          	addi	a2,a2,32
    e885fb2e:	873e                	mv	a4,a5
    e885fb30:	fbf7879b          	addiw	a5,a5,-65
    e885fb34:	0ff7f793          	andi	a5,a5,255
    e885fb38:	00f86463          	bltu	a6,a5,e885fb40 <strcasestr+0x42>
    e885fb3c:	02070713          	addi	a4,a4,32
    e885fb40:	0685                	addi	a3,a3,1
    e885fb42:	fce607e3          	beq	a2,a4,e885fb10 <strcasestr+0x12>
        cp++;
    e885fb46:	0505                	addi	a0,a0,1
    e885fb48:	b7c1                	j	e885fb08 <strcasestr+0xa>
}
    e885fb4a:	8082                	ret

00000000e885fb4c <INIGetNext>:
{
    e885fb4c:	7135                	addi	sp,sp,-160
    e885fb4e:	e526                	sd	s1,136(sp)
    e885fb50:	e14a                	sd	s2,128(sp)
    e885fb52:	f8d2                	sd	s4,112(sp)
    e885fb54:	e8e2                	sd	s8,80(sp)
    e885fb56:	e4e6                	sd	s9,72(sp)
    e885fb58:	e0ea                	sd	s10,64(sp)
    e885fb5a:	fc6e                	sd	s11,56(sp)
    e885fb5c:	ed06                	sd	ra,152(sp)
    e885fb5e:	e922                	sd	s0,144(sp)
    e885fb60:	fcce                	sd	s3,120(sp)
    e885fb62:	f4d6                	sd	s5,104(sp)
    e885fb64:	f0da                	sd	s6,96(sp)
    e885fb66:	ecde                	sd	s7,88(sp)
    e885fb68:	8a2a                	mv	s4,a0
    e885fb6a:	84ae                	mv	s1,a1
    e885fb6c:	f8d1560b          	sdd	a2,a3,(sp),0,4
    e885fb70:	faf1570b          	sdd	a4,a5,(sp),1,4
    e885fb74:	f042                	sd	a6,32(sp)
    e885fb76:	8c46                	mv	s8,a7
		while( ( ptr < end ) && ( ( c = *ptr ) != '=' ) && !isspace_safe( c ) ) ++ptr;
    e885fb78:	03d00c93          	li	s9,61
			if( *ptr == ']' )
    e885fb7c:	05d00913          	li	s2,93
			if( *ptr != '"' ) continue; // Malformed: no start quote for section value.
    e885fb80:	02200d13          	li	s10,34
		while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '\r' ) && ( c != '\n' ) ) ++inSrc;
    e885fb84:	4da9                	li	s11,10
		while( ( inSrc < inEnd ) && isspace_safe( *inSrc ) ) ++inSrc;
    e885fb86:	009a7d63          	bgeu	s4,s1,e885fba0 <INIGetNext+0x54>
    e885fb8a:	000a4503          	lbu	a0,0(s4)
    e885fb8e:	89d2                	mv	s3,s4
    e885fb90:	8b9fe0ef          	jal	ra,e885e448 <isspace>
    e885fb94:	10050363          	beqz	a0,e885fc9a <INIGetNext+0x14e>
    e885fb98:	001a0413          	addi	s0,s4,1
{
    e885fb9c:	8a22                	mv	s4,s0
    e885fb9e:	b7e5                	j	e885fb86 <INIGetNext+0x3a>
		if( inSrc == inEnd ) goto exit;
    e885fba0:	1c9a0763          	beq	s4,s1,e885fd6e <INIGetNext+0x222>
    e885fba4:	89d2                	mv	s3,s4
    e885fba6:	8452                	mv	s0,s4
		if( ( *ptr == '#' ) || ( *ptr == ';' ) ) continue; // Skip comment lines.
    e885fba8:	000a4783          	lbu	a5,0(s4)
    e885fbac:	02300713          	li	a4,35
    e885fbb0:	fee786e3          	beq	a5,a4,e885fb9c <INIGetNext+0x50>
    e885fbb4:	03b00713          	li	a4,59
    e885fbb8:	fee782e3          	beq	a5,a4,e885fb9c <INIGetNext+0x50>
		if( *ptr == '[' )
    e885fbbc:	05b00713          	li	a4,91
    e885fbc0:	8b52                	mv	s6,s4
    e885fbc2:	10e79e63          	bne	a5,a4,e885fcde <INIGetNext+0x192>
			while( ( ptr < end ) && isspace_safe( *ptr ) ) ++ptr;
    e885fbc6:	0a05                	addi	s4,s4,1
    e885fbc8:	0f3a7963          	bgeu	s4,s3,e885fcba <INIGetNext+0x16e>
    e885fbcc:	000a4503          	lbu	a0,0(s4)
    e885fbd0:	879fe0ef          	jal	ra,e885e448 <isspace>
    e885fbd4:	f96d                	bnez	a0,e885fbc6 <INIGetNext+0x7a>
    e885fbd6:	8b52                	mv	s6,s4
			while( ( ptr < end ) && ( ( c = *ptr ) != ']' ) && !isspace_safe( c ) ) ++ptr;
    e885fbd8:	000b4503          	lbu	a0,0(s6)
    e885fbdc:	01250a63          	beq	a0,s2,e885fbf0 <INIGetNext+0xa4>
    e885fbe0:	869fe0ef          	jal	ra,e885e448 <isspace>
    e885fbe4:	e511                	bnez	a0,e885fbf0 <INIGetNext+0xa4>
    e885fbe6:	0b05                	addi	s6,s6,1
    e885fbe8:	ff3b68e3          	bltu	s6,s3,e885fbd8 <INIGetNext+0x8c>
			if( ptr == end ) continue; // Premature end of line.
    e885fbec:	fb6988e3          	beq	s3,s6,e885fb9c <INIGetNext+0x50>
    e885fbf0:	8bda                	mv	s7,s6
			while( ( ptr < end ) && isspace_safe( *ptr ) ) ++ptr;
    e885fbf2:	0d3bf863          	bgeu	s7,s3,e885fcc2 <INIGetNext+0x176>
    e885fbf6:	000bc503          	lbu	a0,0(s7)
    e885fbfa:	84ffe0ef          	jal	ra,e885e448 <isspace>
    e885fbfe:	e161                	bnez	a0,e885fcbe <INIGetNext+0x172>
			if( *ptr == ']' )
    e885fc00:	000bc703          	lbu	a4,0(s7)
    e885fc04:	17270063          	beq	a4,s2,e885fd64 <INIGetNext+0x218>
			if( *ptr != '"' ) continue; // Malformed: no start quote for section value.
    e885fc08:	f9a71ae3          	bne	a4,s10,e885fb9c <INIGetNext+0x50>
			valuePtr = ++ptr; 
    e885fc0c:	0b85                	addi	s7,s7,1
    e885fc0e:	8ade                	mv	s5,s7
			while( ( ptr < end ) && ( *ptr != '"' ) ) ++ptr;
    e885fc10:	0b3afe63          	bgeu	s5,s3,e885fccc <INIGetNext+0x180>
    e885fc14:	85d6                	mv	a1,s5
    e885fc16:	9815c50b          	lbuia	a0,(a1),1,0
    e885fc1a:	0ba51763          	bne	a0,s10,e885fcc8 <INIGetNext+0x17c>
			valueEnd = ptr++;
    e885fc1e:	001a8593          	addi	a1,s5,1 # 4002001 <memcmp-0xe47fdfff>
			while( ( ptr < end ) && isspace_safe( *ptr ) ) ++ptr;
    e885fc22:	0b35fa63          	bgeu	a1,s3,e885fcd6 <INIGetNext+0x18a>
    e885fc26:	0005c503          	lbu	a0,0(a1)
    e885fc2a:	f42e                	sd	a1,40(sp)
    e885fc2c:	81dfe0ef          	jal	ra,e885e448 <isspace>
    e885fc30:	75a2                	ld	a1,40(sp)
    e885fc32:	e145                	bnez	a0,e885fcd2 <INIGetNext+0x186>
			if( ( ptr == end ) || ( *ptr != ']' ) ) continue; // Malformed: no closing bracket for section header.
    e885fc34:	0005c683          	lbu	a3,0(a1)
    e885fc38:	f72692e3          	bne	a3,s2,e885fb9c <INIGetNext+0x50>
				flags = kINIFlag_Section;
    e885fc3c:	4685                	li	a3,1
	if( outFlags )		*outFlags		= flags;
    e885fc3e:	6782                	ld	a5,0(sp)
    e885fc40:	c391                	beqz	a5,e885fc44 <INIGetNext+0xf8>
    e885fc42:	c394                	sw	a3,0(a5)
	if( outNamePtr )	*outNamePtr		= namePtr;
    e885fc44:	67a2                	ld	a5,8(sp)
    e885fc46:	c399                	beqz	a5,e885fc4c <INIGetNext+0x100>
    e885fc48:	0147b023          	sd	s4,0(a5)
	if( outNameLen )	*outNameLen		= (size_t)( nameEnd - namePtr );
    e885fc4c:	67c2                	ld	a5,16(sp)
    e885fc4e:	c789                	beqz	a5,e885fc58 <INIGetNext+0x10c>
    e885fc50:	414b0333          	sub	t1,s6,s4
    e885fc54:	0067b023          	sd	t1,0(a5)
	if( outValuePtr )	*outValuePtr	= valuePtr;
    e885fc58:	67e2                	ld	a5,24(sp)
    e885fc5a:	c399                	beqz	a5,e885fc60 <INIGetNext+0x114>
    e885fc5c:	0177b023          	sd	s7,0(a5)
	if( outValueLen )	*outValueLen	= (size_t)( valueEnd - valuePtr );
    e885fc60:	7782                	ld	a5,32(sp)
	more = true;
    e885fc62:	4505                	li	a0,1
	if( outValueLen )	*outValueLen	= (size_t)( valueEnd - valuePtr );
    e885fc64:	c789                	beqz	a5,e885fc6e <INIGetNext+0x122>
    e885fc66:	7702                	ld	a4,32(sp)
    e885fc68:	417a87b3          	sub	a5,s5,s7
    e885fc6c:	e31c                	sd	a5,0(a4)
	if( outSrc ) *outSrc = inSrc;
    e885fc6e:	000c0463          	beqz	s8,e885fc76 <INIGetNext+0x12a>
    e885fc72:	008c3023          	sd	s0,0(s8)
}
    e885fc76:	60ea                	ld	ra,152(sp)
    e885fc78:	644a                	ld	s0,144(sp)
    e885fc7a:	64aa                	ld	s1,136(sp)
    e885fc7c:	690a                	ld	s2,128(sp)
    e885fc7e:	79e6                	ld	s3,120(sp)
    e885fc80:	7a46                	ld	s4,112(sp)
    e885fc82:	7aa6                	ld	s5,104(sp)
    e885fc84:	7b06                	ld	s6,96(sp)
    e885fc86:	6be6                	ld	s7,88(sp)
    e885fc88:	6c46                	ld	s8,80(sp)
    e885fc8a:	6ca6                	ld	s9,72(sp)
    e885fc8c:	6d06                	ld	s10,64(sp)
    e885fc8e:	7de2                	ld	s11,56(sp)
    e885fc90:	610d                	addi	sp,sp,160
    e885fc92:	8082                	ret
		while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '\r' ) && ( c != '\n' ) ) ++inSrc;
    e885fc94:	0985                	addi	s3,s3,1
    e885fc96:	0299f063          	bgeu	s3,s1,e885fcb6 <INIGetNext+0x16a>
    e885fc9a:	0009c783          	lbu	a5,0(s3)
    e885fc9e:	4735                	li	a4,13
    e885fca0:	0ce78a63          	beq	a5,a4,e885fd74 <INIGetNext+0x228>
    e885fca4:	ffb798e3          	bne	a5,s11,e885fc94 <INIGetNext+0x148>
    e885fca8:	844e                	mv	s0,s3
		if( ( inSrc < inEnd ) && ( *inSrc == '\n' ) ) ++inSrc;
    e885fcaa:	00044783          	lbu	a5,0(s0)
    e885fcae:	efb79de3          	bne	a5,s11,e885fba8 <INIGetNext+0x5c>
    e885fcb2:	0405                	addi	s0,s0,1
    e885fcb4:	bdd5                	j	e885fba8 <INIGetNext+0x5c>
		while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '\r' ) && ( c != '\n' ) ) ++inSrc;
    e885fcb6:	844e                	mv	s0,s3
    e885fcb8:	bdc5                	j	e885fba8 <INIGetNext+0x5c>
    e885fcba:	8b52                	mv	s6,s4
    e885fcbc:	bf05                	j	e885fbec <INIGetNext+0xa0>
			while( ( ptr < end ) && isspace_safe( *ptr ) ) ++ptr;
    e885fcbe:	0b85                	addi	s7,s7,1
    e885fcc0:	bf0d                	j	e885fbf2 <INIGetNext+0xa6>
			if( ptr == end ) continue; // Premature end of line.
    e885fcc2:	f33b9fe3          	bne	s7,s3,e885fc00 <INIGetNext+0xb4>
    e885fcc6:	bdd9                	j	e885fb9c <INIGetNext+0x50>
			while( ( ptr < end ) && ( *ptr != '"' ) ) ++ptr;
    e885fcc8:	8aae                	mv	s5,a1
    e885fcca:	b799                	j	e885fc10 <INIGetNext+0xc4>
			if( ptr == end ) continue;  // Malformed: no end quote for section value.
    e885fccc:	ed3a88e3          	beq	s5,s3,e885fb9c <INIGetNext+0x50>
    e885fcd0:	b7b9                	j	e885fc1e <INIGetNext+0xd2>
			while( ( ptr < end ) && isspace_safe( *ptr ) ) ++ptr;
    e885fcd2:	0585                	addi	a1,a1,1
    e885fcd4:	b7b9                	j	e885fc22 <INIGetNext+0xd6>
			if( ( ptr == end ) || ( *ptr != ']' ) ) continue; // Malformed: no closing bracket for section header.
    e885fcd6:	f5359fe3          	bne	a1,s3,e885fc34 <INIGetNext+0xe8>
    e885fcda:	b5c9                	j	e885fb9c <INIGetNext+0x50>
		while( ( ptr < end ) && ( ( c = *ptr ) != '=' ) && !isspace_safe( c ) ) ++ptr;
    e885fcdc:	0b05                	addi	s6,s6,1
    e885fcde:	073b7663          	bgeu	s6,s3,e885fd4a <INIGetNext+0x1fe>
    e885fce2:	000b4a83          	lbu	s5,0(s6)
    e885fce6:	8556                	mv	a0,s5
    e885fce8:	f60fe0ef          	jal	ra,e885e448 <isspace>
    e885fcec:	019a8363          	beq	s5,s9,e885fcf2 <INIGetNext+0x1a6>
    e885fcf0:	d575                	beqz	a0,e885fcdc <INIGetNext+0x190>
    e885fcf2:	8bda                	mv	s7,s6
		while( ( ptr < end ) && isspace_safe( *ptr ) ) ++ptr;
    e885fcf4:	000bc503          	lbu	a0,0(s7)
    e885fcf8:	f50fe0ef          	jal	ra,e885e448 <isspace>
    e885fcfc:	ed1d                	bnez	a0,e885fd3a <INIGetNext+0x1ee>
		if( *ptr != '=' ) continue; // Malformed: non-equal sign after property name.
    e885fcfe:	000bc703          	lbu	a4,0(s7)
    e885fd02:	e9971de3          	bne	a4,s9,e885fb9c <INIGetNext+0x50>
		while( ( ptr < end ) && isspace_safe( *ptr ) ) ++ptr;
    e885fd06:	0b85                	addi	s7,s7,1
    e885fd08:	073bf163          	bgeu	s7,s3,e885fd6a <INIGetNext+0x21e>
    e885fd0c:	000bc483          	lbu	s1,0(s7)
    e885fd10:	8526                	mv	a0,s1
    e885fd12:	f36fe0ef          	jal	ra,e885e448 <isspace>
    e885fd16:	f965                	bnez	a0,e885fd06 <INIGetNext+0x1ba>
		if( ( ptr < end ) && ( *ptr == '"' ) )
    e885fd18:	02200713          	li	a4,34
    e885fd1c:	8ace                	mv	s5,s3
    e885fd1e:	02e49d63          	bne	s1,a4,e885fd58 <INIGetNext+0x20c>
			valuePtr = ++ptr;
    e885fd22:	0b85                	addi	s7,s7,1
    e885fd24:	8ade                	mv	s5,s7
			while( ( ptr < end ) && ( *ptr != '"' ) ) ++ptr;
    e885fd26:	02200593          	li	a1,34
    e885fd2a:	013af663          	bgeu	s5,s3,e885fd36 <INIGetNext+0x1ea>
    e885fd2e:	000ac503          	lbu	a0,0(s5)
    e885fd32:	00b51e63          	bne	a0,a1,e885fd4e <INIGetNext+0x202>
		flags = kINIFlag_Property;
    e885fd36:	4689                	li	a3,2
    e885fd38:	b719                	j	e885fc3e <INIGetNext+0xf2>
		while( ( ptr < end ) && isspace_safe( *ptr ) ) ++ptr;
    e885fd3a:	0b85                	addi	s7,s7,1
    e885fd3c:	fb3bece3          	bltu	s7,s3,e885fcf4 <INIGetNext+0x1a8>
		if( ptr == end )
    e885fd40:	fb799fe3          	bne	s3,s7,e885fcfe <INIGetNext+0x1b2>
			valueEnd = NULL;
    e885fd44:	4a81                	li	s5,0
			valuePtr = NULL;
    e885fd46:	4b81                	li	s7,0
    e885fd48:	b7fd                	j	e885fd36 <INIGetNext+0x1ea>
    e885fd4a:	8bda                	mv	s7,s6
    e885fd4c:	bfd5                	j	e885fd40 <INIGetNext+0x1f4>
			while( ( ptr < end ) && ( *ptr != '"' ) ) ++ptr;
    e885fd4e:	0a85                	addi	s5,s5,1
    e885fd50:	bfe9                	j	e885fd2a <INIGetNext+0x1de>
			while( ( valuePtr < valueEnd ) && isspace_safe( valueEnd[ -1 ] ) ) --valueEnd;
    e885fd52:	1afd                	addi	s5,s5,-1
    e885fd54:	ff5bf1e3          	bgeu	s7,s5,e885fd36 <INIGetNext+0x1ea>
    e885fd58:	fffac503          	lbu	a0,-1(s5)
    e885fd5c:	eecfe0ef          	jal	ra,e885e448 <isspace>
    e885fd60:	f96d                	bnez	a0,e885fd52 <INIGetNext+0x206>
    e885fd62:	bfd1                	j	e885fd36 <INIGetNext+0x1ea>
				valueEnd = NULL;
    e885fd64:	4a81                	li	s5,0
				valuePtr = NULL;
    e885fd66:	4b81                	li	s7,0
    e885fd68:	bdd1                	j	e885fc3c <INIGetNext+0xf0>
    e885fd6a:	8ace                	mv	s5,s3
    e885fd6c:	b7e9                	j	e885fd36 <INIGetNext+0x1ea>
    e885fd6e:	8452                	mv	s0,s4
	Boolean				more = false;
    e885fd70:	4501                	li	a0,0
    e885fd72:	bdf5                	j	e885fc6e <INIGetNext+0x122>
		if( ( inSrc < inEnd ) && ( *inSrc == '\r' ) ) ++inSrc;
    e885fd74:	00198413          	addi	s0,s3,1
		if( ( inSrc < inEnd ) && ( *inSrc == '\n' ) ) ++inSrc;
    e885fd78:	f29469e3          	bltu	s0,s1,e885fcaa <INIGetNext+0x15e>
    e885fd7c:	b535                	j	e885fba8 <INIGetNext+0x5c>

00000000e885fd7e <ParseEscapedString>:
	lim = dst + ( ( inMaxLen > 0 ) ? ( inMaxLen - 1 ) : 0 ); // Leave room for null terminator.
    e885fd7e:	4301                	li	t1,0
    e885fd80:	c319                	beqz	a4,e885fd86 <ParseEscapedString+0x8>
    e885fd82:	fff70313          	addi	t1,a4,-1
    e885fd86:	00668f33          	add	t5,a3,t1
	len = 0;
    e885fd8a:	4f81                	li	t6,0
	while( ( inSrc < inEnd ) && ( ( c = *inSrc++ ) != inDelimiter ) )
    e885fd8c:	8336                	mv	t1,a3
		if( c == '\\' )
    e885fd8e:	05c00293          	li	t0,92
	while( ( inSrc < inEnd ) && ( ( c = *inSrc++ ) != inDelimiter ) )
    e885fd92:	8e2a                	mv	t3,a0
    e885fd94:	00b57663          	bgeu	a0,a1,e885fda0 <ParseEscapedString+0x22>
    e885fd98:	981e4e8b          	lbuia	t4,(t3),1,0
    e885fd9c:	02ce9563          	bne	t4,a2,e885fdc6 <ParseEscapedString+0x48>
	err = kNoErr;
    e885fda0:	4501                	li	a0,0
	if( inBuf && ( inMaxLen > 0 ) ) *dst = '\0';
    e885fda2:	c681                	beqz	a3,e885fdaa <ParseEscapedString+0x2c>
    e885fda4:	c319                	beqz	a4,e885fdaa <ParseEscapedString+0x2c>
    e885fda6:	00030023          	sb	zero,0(t1)
	if( outCopiedLen )	*outCopiedLen	= (size_t)( dst - inBuf );
    e885fdaa:	c789                	beqz	a5,e885fdb4 <ParseEscapedString+0x36>
    e885fdac:	40d30333          	sub	t1,t1,a3
    e885fdb0:	0067b023          	sd	t1,0(a5)
	if( outTotalLen )	*outTotalLen	= len;
    e885fdb4:	00080463          	beqz	a6,e885fdbc <ParseEscapedString+0x3e>
    e885fdb8:	01f83023          	sd	t6,0(a6)
	if( outSrc )		*outSrc			= inSrc;
    e885fdbc:	00088463          	beqz	a7,e885fdc4 <ParseEscapedString+0x46>
    e885fdc0:	01c8b023          	sd	t3,0(a7)
}
    e885fdc4:	8082                	ret
		if( c == '\\' )
    e885fdc6:	005e9863          	bne	t4,t0,e885fdd6 <ParseEscapedString+0x58>
			require_action_quiet( inSrc < inEnd, exit, err = kUnderrunErr );
    e885fdca:	00be7f63          	bgeu	t3,a1,e885fde8 <ParseEscapedString+0x6a>
			c = *inSrc++;
    e885fdce:	00154e83          	lbu	t4,1(a0)
    e885fdd2:	00250e13          	addi	t3,a0,2
		if( dst < lim )
    e885fdd6:	01e37663          	bgeu	t1,t5,e885fde2 <ParseEscapedString+0x64>
			if( inBuf ) *dst = c;
    e885fdda:	c299                	beqz	a3,e885fde0 <ParseEscapedString+0x62>
    e885fddc:	01d30023          	sb	t4,0(t1)
			++dst;
    e885fde0:	0305                	addi	t1,t1,1
		++len;
    e885fde2:	0f85                	addi	t6,t6,1
    e885fde4:	8572                	mv	a0,t3
    e885fde6:	b775                	j	e885fd92 <ParseEscapedString+0x14>
			require_action_quiet( inSrc < inEnd, exit, err = kUnderrunErr );
    e885fde8:	7579                	lui	a0,0xffffe
    e885fdea:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
    e885fdee:	bf75                	j	e885fdaa <ParseEscapedString+0x2c>

00000000e885fdf0 <ParseCommaSeparatedNameValuePair>:
{
    e885fdf0:	7139                	addi	sp,sp,-64
    e885fdf2:	f84e                	sd	s3,48(sp)
    e885fdf4:	fc06                	sd	ra,56(sp)
    e885fdf6:	ec22                	sd	s0,24(sp)
    e885fdf8:	f026                	sd	s1,32(sp)
    e885fdfa:	f44a                	sd	s2,40(sp)
    e885fdfc:	e42a                	sd	a0,8(sp)
    e885fdfe:	69c6                	ld	s3,80(sp)
	require_action_quiet( inSrc < inEnd, exit, err = kNotFoundErr );
    e885fe00:	04b57863          	bgeu	a0,a1,e885fe50 <ParseCommaSeparatedNameValuePair+0x60>
    e885fe04:	8946                	mv	s2,a7
    e885fe06:	84c2                	mv	s1,a6
	err = ParseEscapedString( inSrc, inEnd, '=', inNameBuf, inNameMaxLen, outNameCopiedLen, outNameTotalLen, &inSrc );
    e885fe08:	00810893          	addi	a7,sp,8
    e885fe0c:	883e                	mv	a6,a5
    e885fe0e:	87ba                	mv	a5,a4
    e885fe10:	8736                	mv	a4,a3
    e885fe12:	86b2                	mv	a3,a2
    e885fe14:	03d00613          	li	a2,61
    e885fe18:	842e                	mv	s0,a1
    e885fe1a:	f65ff0ef          	jal	ra,e885fd7e <ParseEscapedString>
	require_noerr_quiet( err, exit );
    e885fe1e:	ed09                	bnez	a0,e885fe38 <ParseCommaSeparatedNameValuePair+0x48>
	err = ParseEscapedString( inSrc, inEnd, ',', inValueBuf, inValueMaxLen, outValueCopiedLen, outValueTotalLen, &inSrc );
    e885fe20:	6826                	ld	a6,72(sp)
    e885fe22:	6786                	ld	a5,64(sp)
    e885fe24:	6522                	ld	a0,8(sp)
    e885fe26:	00810893          	addi	a7,sp,8
    e885fe2a:	874a                	mv	a4,s2
    e885fe2c:	86a6                	mv	a3,s1
    e885fe2e:	02c00613          	li	a2,44
    e885fe32:	85a2                	mv	a1,s0
    e885fe34:	f4bff0ef          	jal	ra,e885fd7e <ParseEscapedString>
	if( outSrc ) *outSrc = inSrc;
    e885fe38:	00098563          	beqz	s3,e885fe42 <ParseCommaSeparatedNameValuePair+0x52>
    e885fe3c:	67a2                	ld	a5,8(sp)
    e885fe3e:	00f9b023          	sd	a5,0(s3)
}
    e885fe42:	70e2                	ld	ra,56(sp)
    e885fe44:	6462                	ld	s0,24(sp)
    e885fe46:	7482                	ld	s1,32(sp)
    e885fe48:	7922                	ld	s2,40(sp)
    e885fe4a:	79c2                	ld	s3,48(sp)
    e885fe4c:	6121                	addi	sp,sp,64
    e885fe4e:	8082                	ret
	require_action_quiet( inSrc < inEnd, exit, err = kNotFoundErr );
    e885fe50:	7579                	lui	a0,0xffffe
    e885fe52:	5b950513          	addi	a0,a0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e885fe56:	b7cd                	j	e885fe38 <ParseCommaSeparatedNameValuePair+0x48>

00000000e885fe58 <RegexMatch>:
{
    e885fe58:	1101                	addi	sp,sp,-32
    e885fe5a:	e422                	sd	s0,8(sp)
    e885fe5c:	e826                	sd	s1,16(sp)
    e885fe5e:	ec06                	sd	ra,24(sp)
	if (regexp[0] == '^')
    e885fe60:	00054703          	lbu	a4,0(a0)
    e885fe64:	05e00793          	li	a5,94
{
    e885fe68:	84aa                	mv	s1,a0
    e885fe6a:	842e                	mv	s0,a1
	if (regexp[0] == '^')
    e885fe6c:	00f71963          	bne	a4,a5,e885fe7e <RegexMatch+0x26>
}
    e885fe70:	6422                	ld	s0,8(sp)
    e885fe72:	60e2                	ld	ra,24(sp)
    e885fe74:	64c2                	ld	s1,16(sp)
		return RegexMatchHere(regexp+1, text);
    e885fe76:	0505                	addi	a0,a0,1
}
    e885fe78:	6105                	addi	sp,sp,32
		return RegexMatchHere(regexp+1, text);
    e885fe7a:	e74fe06f          	j	e885e4ee <RegexMatchHere>
		if (RegexMatchHere(regexp, text))
    e885fe7e:	85a2                	mv	a1,s0
    e885fe80:	8526                	mv	a0,s1
    e885fe82:	e6cfe0ef          	jal	ra,e885e4ee <RegexMatchHere>
    e885fe86:	e909                	bnez	a0,e885fe98 <RegexMatch+0x40>
	} while (*text++ != '\0');
    e885fe88:	9814478b          	lbuia	a5,(s0),1,0
    e885fe8c:	fbed                	bnez	a5,e885fe7e <RegexMatch+0x26>
}
    e885fe8e:	60e2                	ld	ra,24(sp)
    e885fe90:	6422                	ld	s0,8(sp)
    e885fe92:	64c2                	ld	s1,16(sp)
    e885fe94:	6105                	addi	sp,sp,32
    e885fe96:	8082                	ret
			return 1;
    e885fe98:	4505                	li	a0,1
    e885fe9a:	bfd5                	j	e885fe8e <RegexMatch+0x36>

00000000e885fe9c <ReplaceString>:
{
    e885fe9c:	7179                	addi	sp,sp,-48
    e885fe9e:	f891540b          	sdd	s0,s1,(sp),0,4
    e885fea2:	f052                	sd	s4,32(sp)
    e885fea4:	fb31590b          	sdd	s2,s3,(sp),1,4
    e885fea8:	f406                	sd	ra,40(sp)
    e885feaa:	8a2a                	mv	s4,a0
    e885feac:	89ae                	mv	s3,a1
    e885feae:	84b2                	mv	s1,a2
    e885feb0:	8436                	mv	s0,a3
	if( inStr )
    e885feb2:	c615                	beqz	a2,e885fede <ReplaceString+0x42>
		if( inLen == kSizeCString ) inLen = strlen( (const char *) inStr );
    e885feb4:	57fd                	li	a5,-1
    e885feb6:	00f69763          	bne	a3,a5,e885fec4 <ReplaceString+0x28>
    e885feba:	8532                	mv	a0,a2
    e885febc:	45c1c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885fec0:	7c05340b          	extu	s0,a0,31,0
		str = (char *) malloc( inLen + 1 );
    e885fec4:	00140513          	addi	a0,s0,1
    e885fec8:	1871b0ef          	jal	ra,e887b84e <my_malloc>
    e885fecc:	892a                	mv	s2,a0
		require_action( str, exit, err = kNoMemoryErr );
    e885fece:	cd05                	beqz	a0,e885ff06 <ReplaceString+0x6a>
		memcpy( str, inStr, inLen );
    e885fed0:	85a6                	mv	a1,s1
    e885fed2:	8622                	mv	a2,s0
    e885fed4:	4cc1c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		str[ inLen ] = '\0';
    e885fed8:	84ca                	mv	s1,s2
    e885feda:	0089500b          	srb	zero,s2,s0,0
	FreeNullSafe( *ioStr );
    e885fede:	000a3503          	ld	a0,0(s4)
    e885fee2:	c119                	beqz	a0,e885fee8 <ReplaceString+0x4c>
    e885fee4:	41c1c0ef          	jal	ra,e887c300 <eLIBs_free>
	*ioStr = str;
    e885fee8:	009a3023          	sd	s1,0(s4)
	err = kNoErr;
    e885feec:	4501                	li	a0,0
	if( ioLen ) *ioLen = inLen;
    e885feee:	00098463          	beqz	s3,e885fef6 <ReplaceString+0x5a>
    e885fef2:	0089b023          	sd	s0,0(s3)
}
    e885fef6:	70a2                	ld	ra,40(sp)
    e885fef8:	f891440b          	ldd	s0,s1,(sp),0,4
    e885fefc:	7a02                	ld	s4,32(sp)
    e885fefe:	fb31490b          	ldd	s2,s3,(sp),1,4
    e885ff02:	6145                	addi	sp,sp,48
    e885ff04:	8082                	ret
		require_action( str, exit, err = kNoMemoryErr );
    e885ff06:	7579                	lui	a0,0xffffe
    e885ff08:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e885ff0c:	b7ed                	j	e885fef6 <ReplaceString+0x5a>

00000000e885ff0e <TruncatedUTF8Length>:
{
    e885ff0e:	7179                	addi	sp,sp,-48
    e885ff10:	ec22                	sd	s0,24(sp)
    e885ff12:	f406                	sd	ra,40(sp)
    e885ff14:	f026                	sd	s1,32(sp)
	if( inLen == kSizeCString ) inLen = strlen( (const char *) inStr );
    e885ff16:	57fd                	li	a5,-1
{
    e885ff18:	842a                	mv	s0,a0
	if( inLen == kSizeCString ) inLen = strlen( (const char *) inStr );
    e885ff1a:	00f59863          	bne	a1,a5,e885ff2a <TruncatedUTF8Length+0x1c>
    e885ff1e:	e432                	sd	a2,8(sp)
    e885ff20:	3f81c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e885ff24:	7c05358b          	extu	a1,a0,31,0
    e885ff28:	6622                	ld	a2,8(sp)
	if( inLen > inMax ) inLen = inMax;
    e885ff2a:	00b63533          	sltu	a0,a2,a1
    e885ff2e:	40a5960b          	mveqz	a2,a1,a0
    e885ff32:	8532                	mv	a0,a2
			if( ( b1 & 0xC0 ) == 0xC0 ) break; // Stop at the first byte of a UTF-8 character.
    e885ff34:	0c000313          	li	t1,192
		if( n  > 6 ) continue;	//  > 6 is an invalid UTF-8 byte sequence.
    e885ff38:	4e19                	li	t3,6
		test = ( 0xFF << ( 8 - n ) ) & 0xFF;
    e885ff3a:	4ea1                	li	t4,8
    e885ff3c:	0ff00f13          	li	t5,255
		mask = test | ( 1 << ( ( 8 - n ) - 1 ) );
    e885ff40:	4f9d                	li	t6,7
    e885ff42:	4285                	li	t0,1
		if( ( b1 == 0xED ) && ( ( b2 & 0xF0 ) == 0xA0 ) ) continue;
    e885ff44:	0ed00393          	li	t2,237
    e885ff48:	0a000893          	li	a7,160
		b2 = 0;
    e885ff4c:	4581                	li	a1,0
		b1 = 0;
    e885ff4e:	4681                	li	a3,0
    e885ff50:	0005049b          	sext.w	s1,a0
    e885ff54:	40a4873b          	subw	a4,s1,a0
		while( ( inLen > 0 ) && ( ( b0 = src[ inLen - 1 ] ) & 0x80 ) )
    e885ff58:	c909                	beqz	a0,e885ff6a <TruncatedUTF8Length+0x5c>
    e885ff5a:	fff50613          	addi	a2,a0,-1
    e885ff5e:	80c4478b          	lrbu	a5,s0,a2,0
    e885ff62:	fc77b80b          	extu	a6,a5,63,7
    e885ff66:	04081063          	bnez	a6,e885ffa6 <TruncatedUTF8Length+0x98>
		if( n == 0 ) break;		// == 0 is a single-byte UTF-8 character (or string is empty).
    e885ff6a:	cb0d                	beqz	a4,e885ff9c <TruncatedUTF8Length+0x8e>
		if( n  > 6 ) continue;	//  > 6 is an invalid UTF-8 byte sequence.
    e885ff6c:	feee40e3          	blt	t3,a4,e885ff4c <TruncatedUTF8Length+0x3e>
		test = ( 0xFF << ( 8 - n ) ) & 0xFF;
    e885ff70:	40ee863b          	subw	a2,t4,a4
    e885ff74:	00cf163b          	sllw	a2,t5,a2
		mask = test | ( 1 << ( ( 8 - n ) - 1 ) );
    e885ff78:	40ef87bb          	subw	a5,t6,a4
		test = ( 0xFF << ( 8 - n ) ) & 0xFF;
    e885ff7c:	0ff67613          	andi	a2,a2,255
		mask = test | ( 1 << ( ( 8 - n ) - 1 ) );
    e885ff80:	00f297bb          	sllw	a5,t0,a5
    e885ff84:	8fd1                	or	a5,a5,a2
		if( ( b1 & mask ) != test ) continue; // Mismatch means truncated or invalid character.
    e885ff86:	8ff5                	and	a5,a5,a3
    e885ff88:	2781                	sext.w	a5,a5
    e885ff8a:	fcc791e3          	bne	a5,a2,e885ff4c <TruncatedUTF8Length+0x3e>
		if( ( b1 == 0xED ) && ( ( b2 & 0xF0 ) == 0xA0 ) ) continue;
    e885ff8e:	00769663          	bne	a3,t2,e885ff9a <TruncatedUTF8Length+0x8c>
    e885ff92:	0f05f593          	andi	a1,a1,240
    e885ff96:	fb158be3          	beq	a1,a7,e885ff4c <TruncatedUTF8Length+0x3e>
		inLen += ( (size_t) n );
    e885ff9a:	953a                	add	a0,a0,a4
}
    e885ff9c:	70a2                	ld	ra,40(sp)
    e885ff9e:	6462                	ld	s0,24(sp)
    e885ffa0:	7482                	ld	s1,32(sp)
    e885ffa2:	6145                	addi	sp,sp,48
    e885ffa4:	8082                	ret
			++n;
    e885ffa6:	0c07f813          	andi	a6,a5,192
    e885ffaa:	40c4873b          	subw	a4,s1,a2
		while( ( inLen > 0 ) && ( ( b0 = src[ inLen - 1 ] ) & 0x80 ) )
    e885ffae:	8532                	mv	a0,a2
    e885ffb0:	85b6                	mv	a1,a3
			if( ( b1 & 0xC0 ) == 0xC0 ) break; // Stop at the first byte of a UTF-8 character.
    e885ffb2:	00680463          	beq	a6,t1,e885ffba <TruncatedUTF8Length+0xac>
    e885ffb6:	86be                	mv	a3,a5
    e885ffb8:	bf71                	j	e885ff54 <TruncatedUTF8Length+0x46>
		while( ( inLen > 0 ) && ( ( b0 = src[ inLen - 1 ] ) & 0x80 ) )
    e885ffba:	86be                	mv	a3,a5
    e885ffbc:	b77d                	j	e885ff6a <TruncatedUTF8Length+0x5c>

00000000e885ffbe <TruncateUTF8>:
	if( inMaxLen == 0 ) return( 0 );
    e885ffbe:	ce9d                	beqz	a3,e885fffc <TruncateUTF8+0x3e>
{
    e885ffc0:	7179                	addi	sp,sp,-48
    e885ffc2:	ec22                	sd	s0,24(sp)
    e885ffc4:	f026                	sd	s1,32(sp)
    e885ffc6:	f406                	sd	ra,40(sp)
    e885ffc8:	84aa                	mv	s1,a0
    e885ffca:	8432                	mv	s0,a2
	len = TruncatedUTF8Length( inSrcPtr, inSrcLen, inNullTerminate ? ( inMaxLen - 1 ) : inMaxLen );
    e885ffcc:	c311                	beqz	a4,e885ffd0 <TruncateUTF8+0x12>
    e885ffce:	16fd                	addi	a3,a3,-1
    e885ffd0:	8636                	mv	a2,a3
    e885ffd2:	8526                	mv	a0,s1
    e885ffd4:	e43a                	sd	a4,8(sp)
    e885ffd6:	f39ff0ef          	jal	ra,e885ff0e <TruncatedUTF8Length>
	memmove( inDstPtr, inSrcPtr, len );
    e885ffda:	862a                	mv	a2,a0
    e885ffdc:	e02a                	sd	a0,0(sp)
    e885ffde:	85a6                	mv	a1,s1
    e885ffe0:	8522                	mv	a0,s0
    e885ffe2:	3ca1c0ef          	jal	ra,e887c3ac <eLIBs_memmove>
	if( inNullTerminate ) ( (char *) inDstPtr )[ len ] = '\0';
    e885ffe6:	f8e1468b          	ldd	a3,a4,(sp),0,4
    e885ffea:	c319                	beqz	a4,e885fff0 <TruncateUTF8+0x32>
    e885ffec:	00d4500b          	srb	zero,s0,a3,0
}
    e885fff0:	70a2                	ld	ra,40(sp)
    e885fff2:	6462                	ld	s0,24(sp)
    e885fff4:	7482                	ld	s1,32(sp)
    e885fff6:	8536                	mv	a0,a3
    e885fff8:	6145                	addi	sp,sp,48
    e885fffa:	8082                	ret
    e885fffc:	8536                	mv	a0,a3
    e885fffe:	8082                	ret

00000000e8860000 <DNSServiceConstructFullNameEx>:
    const size_t len = !regtype ? 0 : (strlen(regtype) - (DomainEndsInDot(regtype) ? 1 : 0));
    e8860000:	e609                	bnez	a2,e886000a <DNSServiceConstructFullNameEx+0xa>
    if (len < 6 || !domain || !domain[0]) return kParamErr;
    e8860002:	7579                	lui	a0,0xffffe
    e8860004:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e8860008:	8082                	ret
{
    e886000a:	7139                	addi	sp,sp,-64
    e886000c:	e422                	sd	s0,8(sp)
    e886000e:	842a                	mv	s0,a0
    const size_t len = !regtype ? 0 : (strlen(regtype) - (DomainEndsInDot(regtype) ? 1 : 0));
    e8860010:	8532                	mv	a0,a2
{
    e8860012:	fc06                	sd	ra,56(sp)
    e8860014:	e826                	sd	s1,16(sp)
    e8860016:	ec4a                	sd	s2,24(sp)
    e8860018:	f04e                	sd	s3,32(sp)
    e886001a:	8932                	mv	s2,a2
    e886001c:	f452                	sd	s4,40(sp)
    e886001e:	f856                	sd	s5,48(sp)
    e8860020:	89ae                	mv	s3,a1
    e8860022:	8a36                	mv	s4,a3
    const size_t len = !regtype ? 0 : (strlen(regtype) - (DomainEndsInDot(regtype) ? 1 : 0));
    e8860024:	2f41c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8860028:	0005049b          	sext.w	s1,a0
    e886002c:	854a                	mv	a0,s2
    e886002e:	da0fe0ef          	jal	ra,e885e5ce <DomainEndsInDot>
    e8860032:	00a03533          	snez	a0,a0
    e8860036:	40a4873b          	subw	a4,s1,a0
    if (len < 6 || !domain || !domain[0]) return kParamErr;
    e886003a:	4795                	li	a5,5
    const size_t len = !regtype ? 0 : (strlen(regtype) - (DomainEndsInDot(regtype) ? 1 : 0));
    e886003c:	7c07350b          	extu	a0,a4,31,0
    char *const lim  = fullName + 1005;
    e8860040:	3ed40a93          	addi	s5,s0,1005
    if (len < 6 || !domain || !domain[0]) return kParamErr;
    e8860044:	04e7f063          	bgeu	a5,a4,e8860084 <DNSServiceConstructFullNameEx+0x84>
    e8860048:	020a0e63          	beqz	s4,e8860084 <DNSServiceConstructFullNameEx+0x84>
    e886004c:	000a4783          	lbu	a5,0(s4)
    e8860050:	cb95                	beqz	a5,e8860084 <DNSServiceConstructFullNameEx+0x84>
    if (strnicmp((regtype + len - 4), "_tcp", 4) && strnicmp((regtype + len - 4), "_udp", 4)) return kParamErr;
    e8860052:	1571                	addi	a0,a0,-4
    e8860054:	00a904b3          	add	s1,s2,a0
    e8860058:	4611                	li	a2,4
    e886005a:	0004d597          	auipc	a1,0x4d
    e886005e:	83658593          	addi	a1,a1,-1994 # e88ac890 <kOn.10632+0x948>
    e8860062:	8526                	mv	a0,s1
    e8860064:	2fc1c0ef          	jal	ra,e887c360 <eLIBs_strnicmp>
    e8860068:	e509                	bnez	a0,e8860072 <DNSServiceConstructFullNameEx+0x72>
    if (service && *service)
    e886006a:	02099163          	bnez	s3,e886008c <DNSServiceConstructFullNameEx+0x8c>
        *fn++ = '.';
    e886006e:	87ca                	mv	a5,s2
    e8860070:	a84d                	j	e8860122 <DNSServiceConstructFullNameEx+0x122>
    if (strnicmp((regtype + len - 4), "_tcp", 4) && strnicmp((regtype + len - 4), "_udp", 4)) return kParamErr;
    e8860072:	4611                	li	a2,4
    e8860074:	00044597          	auipc	a1,0x44
    e8860078:	96458593          	addi	a1,a1,-1692 # e88a39d8 <end.8789+0x330>
    e886007c:	8526                	mv	a0,s1
    e886007e:	2e21c0ef          	jal	ra,e887c360 <eLIBs_strnicmp>
    e8860082:	d565                	beqz	a0,e886006a <DNSServiceConstructFullNameEx+0x6a>
    return kParamErr;
    e8860084:	7579                	lui	a0,0xffffe
    e8860086:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e886008a:	a8cd                	j	e886017c <DNSServiceConstructFullNameEx+0x17c>
    if (service && *service)
    e886008c:	0009c783          	lbu	a5,0(s3)
    e8860090:	dff9                	beqz	a5,e886006e <DNSServiceConstructFullNameEx+0x6e>
                *fn++ = '\\';
    e8860092:	668d                	lui	a3,0x3
            if ((c <= ' ') || (c == '%') || (c == ':')) // Escape non-printable characters
    e8860094:	03a00513          	li	a0,58
                *fn++ = '\\';
    e8860098:	05c00813          	li	a6,92
            if ((c <= ' ') || (c == '%') || (c == ':')) // Escape non-printable characters
    e886009c:	00063897          	auipc	a7,0x63
    e88600a0:	7fc88893          	addi	a7,a7,2044 # e88c3898 <kSRPParameters_3072_SHA512+0x8>
            else if (c == '.' || (c == '\\'))   // Escape dot and backslash literals
    e88600a4:	02e00313          	li	t1,46
                *fn++ = '\\';
    e88600a8:	05c6869b          	addiw	a3,a3,92
                *fn++ = '0' + (c /  10) % 10;
    e88600ac:	45a9                	li	a1,10
            else if (c == '.' || (c == '\\'))   // Escape dot and backslash literals
    e88600ae:	05c00e13          	li	t3,92
        while (*s)
    e88600b2:	0009c783          	lbu	a5,0(s3)
    e88600b6:	e791                	bnez	a5,e88600c2 <DNSServiceConstructFullNameEx+0xc2>
        *fn++ = '.';
    e88600b8:	02e00793          	li	a5,46
    e88600bc:	1814578b          	sbia	a5,(s0),1,0
    e88600c0:	b77d                	j	e886006e <DNSServiceConstructFullNameEx+0x6e>
            unsigned char c = (unsigned char)(*s++);    // Needs to be unsigned, or values like 0xFF will be interpreted as < 32
    e88600c2:	0985                	addi	s3,s3,1
            if ((c <= ' ') || (c == '%') || (c == ':')) // Escape non-printable characters
    e88600c4:	00f57b63          	bgeu	a0,a5,e88600da <DNSServiceConstructFullNameEx+0xda>
            else if (c == '.' || (c == '\\'))   // Escape dot and backslash literals
    e88600c8:	0dc79563          	bne	a5,t3,e8860192 <DNSServiceConstructFullNameEx+0x192>
                if (fn+2 >= lim) goto fail;
    e88600cc:	00240713          	addi	a4,s0,2
    e88600d0:	0d577563          	bgeu	a4,s5,e886019a <DNSServiceConstructFullNameEx+0x19a>
                *fn++ = '\\';
    e88600d4:	1814580b          	sbia	a6,(s0),1,0
    e88600d8:	a815                	j	e886010c <DNSServiceConstructFullNameEx+0x10c>
            if ((c <= ' ') || (c == '%') || (c == ':')) // Escape non-printable characters
    e88600da:	0008b703          	ld	a4,0(a7)
    e88600de:	00f75733          	srl	a4,a4,a5
    e88600e2:	0007370b          	extu	a4,a4,0,0
    e88600e6:	c745                	beqz	a4,e886018e <DNSServiceConstructFullNameEx+0x18e>
                if (fn+4 >= lim) goto fail;
    e88600e8:	00440713          	addi	a4,s0,4
    e88600ec:	0b577763          	bgeu	a4,s5,e886019a <DNSServiceConstructFullNameEx+0x19a>
                *fn++ = '0' + (c /  10) % 10;
    e88600f0:	02b7d63b          	divuw	a2,a5,a1
                *fn++ = '\\';
    e88600f4:	8722                	mv	a4,s0
    e88600f6:	3837568b          	shia	a3,(a4),3,0
                c     = '0' + (c      ) % 10;
    e88600fa:	02b7f7bb          	remuw	a5,a5,a1
                *fn++ = '0' + (c /  10) % 10;
    e88600fe:	0306061b          	addiw	a2,a2,48
    e8860102:	00c40123          	sb	a2,2(s0)
    e8860106:	843a                	mv	s0,a4
                c     = '0' + (c      ) % 10;
    e8860108:	03078793          	addi	a5,a5,48
            *fn++ = (char)c;
    e886010c:	1814578b          	sbia	a5,(s0),1,0
    e8860110:	b74d                	j	e88600b2 <DNSServiceConstructFullNameEx+0xb2>
    while (*r) if (fn+1 >= lim) goto fail;else *fn++ = *r++;
    e8860112:	00140713          	addi	a4,s0,1
    e8860116:	09577263          	bgeu	a4,s5,e886019a <DNSServiceConstructFullNameEx+0x19a>
    e886011a:	00d40023          	sb	a3,0(s0)
    e886011e:	0785                	addi	a5,a5,1
    e8860120:	843a                	mv	s0,a4
    e8860122:	0007c683          	lbu	a3,0(a5)
    e8860126:	f6f5                	bnez	a3,e8860112 <DNSServiceConstructFullNameEx+0x112>
    if (!DomainEndsInDot(regtype)) { if (fn+1 >= lim) goto fail;else *fn++ = '.';}
    e8860128:	854a                	mv	a0,s2
    e886012a:	ca4fe0ef          	jal	ra,e885e5ce <DomainEndsInDot>
    e886012e:	e911                	bnez	a0,e8860142 <DNSServiceConstructFullNameEx+0x142>
    e8860130:	00140793          	addi	a5,s0,1
    e8860134:	0757f363          	bgeu	a5,s5,e886019a <DNSServiceConstructFullNameEx+0x19a>
    e8860138:	02e00713          	li	a4,46
    e886013c:	00e40023          	sb	a4,0(s0)
    e8860140:	843e                	mv	s0,a5
    e8860142:	87d2                	mv	a5,s4
    e8860144:	a809                	j	e8860156 <DNSServiceConstructFullNameEx+0x156>
    while (*d) if (fn+1 >= lim) goto fail;else *fn++ = *d++;
    e8860146:	00140713          	addi	a4,s0,1
    e886014a:	05577863          	bgeu	a4,s5,e886019a <DNSServiceConstructFullNameEx+0x19a>
    e886014e:	00d40023          	sb	a3,0(s0)
    e8860152:	0785                	addi	a5,a5,1
    e8860154:	843a                	mv	s0,a4
    e8860156:	0007c683          	lbu	a3,0(a5)
    e886015a:	f6f5                	bnez	a3,e8860146 <DNSServiceConstructFullNameEx+0x146>
    if (!DomainEndsInDot(domain)) { if (fn+1 >= lim) goto fail;else *fn++ = '.';}
    e886015c:	8552                	mv	a0,s4
    e886015e:	c70fe0ef          	jal	ra,e885e5ce <DomainEndsInDot>
    e8860162:	e911                	bnez	a0,e8860176 <DNSServiceConstructFullNameEx+0x176>
    e8860164:	00140793          	addi	a5,s0,1
    e8860168:	0357f963          	bgeu	a5,s5,e886019a <DNSServiceConstructFullNameEx+0x19a>
    e886016c:	02e00713          	li	a4,46
    e8860170:	00e40023          	sb	a4,0(s0)
    e8860174:	843e                	mv	s0,a5
    *fn = '\0';
    e8860176:	00040023          	sb	zero,0(s0)
    return kNoErr;
    e886017a:	4501                	li	a0,0
}
    e886017c:	70e2                	ld	ra,56(sp)
    e886017e:	6422                	ld	s0,8(sp)
    e8860180:	64c2                	ld	s1,16(sp)
    e8860182:	6962                	ld	s2,24(sp)
    e8860184:	7982                	ld	s3,32(sp)
    e8860186:	7a22                	ld	s4,40(sp)
    e8860188:	7ac2                	ld	s5,48(sp)
    e886018a:	6121                	addi	sp,sp,64
    e886018c:	8082                	ret
            else if (c == '.' || (c == '\\'))   // Escape dot and backslash literals
    e886018e:	f2678fe3          	beq	a5,t1,e88600cc <DNSServiceConstructFullNameEx+0xcc>
            if (fn+1 >= lim) goto fail;
    e8860192:	00140713          	addi	a4,s0,1
    e8860196:	f7576be3          	bltu	a4,s5,e886010c <DNSServiceConstructFullNameEx+0x10c>
    *fn = '\0';
    e886019a:	00040023          	sb	zero,0(s0)
    e886019e:	b5dd                	j	e8860084 <DNSServiceConstructFullNameEx+0x84>

00000000e88601a0 <MakeDomainNameFromDNSNameString>:
// If successful, MakeDomainNameFromDNSNameString returns a pointer to the next unused byte
// in the domainname buffer (i.e. the next byte after the terminating zero).
// If unable to construct a legal domain name (i.e. label more than 63 bytes, or total more than 256 bytes)
// MakeDomainNameFromDNSNameString returns NULL.
uint8_t *	MakeDomainNameFromDNSNameString(uint8_t *const name, const char *cstr)
{
    e88601a0:	1101                	addi	sp,sp,-32
    e88601a2:	ec06                	sd	ra,24(sp)
    e88601a4:	e84a                	sd	s2,16(sp)
    e88601a6:	f891540b          	sdd	s0,s1,(sp),0,4
	uint8_t       *      ptr = name + DomainNameLength(name) - 1;	// Find end of current name
    e88601aa:	0ff50613          	addi	a2,a0,255
	name[0] = 0;									// Make an empty domain name
    e88601ae:	00050023          	sb	zero,0(a0)
	const uint8_t *src = name;
    e88601b2:	87aa                	mv	a5,a0
	while (src < limit && *src <= MAX_DOMAIN_LABEL)
    e88601b4:	03f00693          	li	a3,63
    e88601b8:	00c7f663          	bgeu	a5,a2,e88601c4 <MakeDomainNameFromDNSNameString+0x24>
    e88601bc:	0007c703          	lbu	a4,0(a5)
    e88601c0:	00e6f563          	bgeu	a3,a4,e88601ca <MakeDomainNameFromDNSNameString+0x2a>
	return(MAX_DOMAIN_NAME+1);
    e88601c4:	10000793          	li	a5,256
    e88601c8:	a031                	j	e88601d4 <MakeDomainNameFromDNSNameString+0x34>
		if (*src == 0) return((uint16_t)(src - name + 1));
    e88601ca:	eb21                	bnez	a4,e886021a <MakeDomainNameFromDNSNameString+0x7a>
    e88601cc:	8f89                	sub	a5,a5,a0
    e88601ce:	2785                	addiw	a5,a5,1
    e88601d0:	3c07b78b          	extu	a5,a5,15,0
	uint8_t       *      ptr = name + DomainNameLength(name) - 1;	// Find end of current name
    e88601d4:	17fd                	addi	a5,a5,-1
    e88601d6:	97aa                	add	a5,a5,a0
	const uint8_t *const lim = name + MAX_DOMAIN_NAME - 1;			// Limit of how much we can add (not counting final zero)
    e88601d8:	0fe50813          	addi	a6,a0,254
	const char    *cstr      = cstring;
    e88601dc:	872e                	mv	a4,a1
		if (*cstr == '.') { dlogassert("AppendDNSNameString: Illegal empty label in name \"%s\"", cstring); return(NULL); }
    e88601de:	02e00e93          	li	t4,46
			if (c == '\\')											// If escape character, check next character
    e88601e2:	05c00f93          	li	t6,92
				if (isdigit_safe(cstr[-1]) && isdigit_safe(cstr[0]) && isdigit_safe(cstr[1]))
    e88601e6:	4e25                	li	t3,9
					int val = v0 * 100 + v1 * 10 + v2;
    e88601e8:	06400293          	li	t0,100
    e88601ec:	43a9                	li	t2,10
					if (val <= 255) { c = (uint8_t)val; cstr += 2; }// If valid three-digit decimal value, use it
    e88601ee:	0ff00413          	li	s0,255
		if (ptr - lengthbyte - 1 > MAX_DOMAIN_LABEL)				// If illegal label, abort
    e88601f2:	03f00493          	li	s1,63
	while (*cstr && ptr < lim)										// While more characters, and space to put them...
    e88601f6:	00074683          	lbu	a3,0(a4)
    e88601fa:	00178513          	addi	a0,a5,1
    e88601fe:	c299                	beqz	a3,e8860204 <MakeDomainNameFromDNSNameString+0x64>
    e8860200:	0307e063          	bltu	a5,a6,e8860220 <MakeDomainNameFromDNSNameString+0x80>
	*ptr++ = 0;														// Put the null root label on the end
    e8860204:	00078023          	sb	zero,0(a5)
	if (*cstr) return(NULL);										// Failure: We didn't successfully consume all input
    e8860208:	00074783          	lbu	a5,0(a4)
    e886020c:	e3a9                	bnez	a5,e886024e <MakeDomainNameFromDNSNameString+0xae>
	return(AppendDNSNameString(name, cstr));		// And then add this string to it
}
    e886020e:	60e2                	ld	ra,24(sp)
    e8860210:	f891440b          	ldd	s0,s1,(sp),0,4
    e8860214:	6942                	ld	s2,16(sp)
    e8860216:	6105                	addi	sp,sp,32
    e8860218:	8082                	ret
		src += 1 + *src;
    e886021a:	0705                	addi	a4,a4,1
    e886021c:	97ba                	add	a5,a5,a4
    e886021e:	bf69                	j	e88601b8 <MakeDomainNameFromDNSNameString+0x18>
		if (*cstr == '.') { dlogassert("AppendDNSNameString: Illegal empty label in name \"%s\"", cstring); return(NULL); }
    e8860220:	09d69263          	bne	a3,t4,e88602a4 <MakeDomainNameFromDNSNameString+0x104>
    e8860224:	6705                	lui	a4,0x1
    e8860226:	88ae                	mv	a7,a1
    e8860228:	00042817          	auipc	a6,0x42
    e886022c:	9b080813          	addi	a6,a6,-1616 # e88a1bd8 <AllHosts_v6_Eth+0x68>
    e8860230:	00063797          	auipc	a5,0x63
    e8860234:	74878793          	addi	a5,a5,1864 # e88c3978 <__PRETTY_FUNCTION__.9954>
    e8860238:	ce970713          	addi	a4,a4,-791 # ce9 <memcmp-0xe87ff317>
    e886023c:	00063697          	auipc	a3,0x63
    e8860240:	66c68693          	addi	a3,a3,1644 # e88c38a8 <kSRPParameters_3072_SHA512+0x18>
    e8860244:	4601                	li	a2,0
    e8860246:	4581                	li	a1,0
    e8860248:	4501                	li	a0,0
    e886024a:	97eee0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	if (*cstr) return(NULL);										// Failure: We didn't successfully consume all input
    e886024e:	4501                	li	a0,0
	return(AppendDNSNameString(name, cstr));		// And then add this string to it
    e8860250:	bf7d                	j	e886020e <MakeDomainNameFromDNSNameString+0x6e>
			if (c == '\\')											// If escape character, check next character
    e8860252:	05f61663          	bne	a2,t6,e886029e <MakeDomainNameFromDNSNameString+0xfe>
				c = (uint8_t)*cstr++;								// Assume we'll just take the next character
    e8860256:	00174603          	lbu	a2,1(a4)
    e886025a:	00270313          	addi	t1,a4,2
				if (isdigit_safe(cstr[-1]) && isdigit_safe(cstr[0]) && isdigit_safe(cstr[1]))
    e886025e:	fd060f1b          	addiw	t5,a2,-48
    e8860262:	0fff7693          	andi	a3,t5,255
    e8860266:	02de6c63          	bltu	t3,a3,e886029e <MakeDomainNameFromDNSNameString+0xfe>
    e886026a:	00274883          	lbu	a7,2(a4)
    e886026e:	fd08889b          	addiw	a7,a7,-48
    e8860272:	0ff8f693          	andi	a3,a7,255
    e8860276:	02de6463          	bltu	t3,a3,e886029e <MakeDomainNameFromDNSNameString+0xfe>
    e886027a:	00374683          	lbu	a3,3(a4)
    e886027e:	fd06869b          	addiw	a3,a3,-48
    e8860282:	0ff6f913          	andi	s2,a3,255
    e8860286:	012e6c63          	bltu	t3,s2,e886029e <MakeDomainNameFromDNSNameString+0xfe>
					int val = v0 * 100 + v1 * 10 + v2;
    e886028a:	245f168b          	mulaw	a3,t5,t0
    e886028e:	2478968b          	mulaw	a3,a7,t2
					if (val <= 255) { c = (uint8_t)val; cstr += 2; }// If valid three-digit decimal value, use it
    e8860292:	00d44663          	blt	s0,a3,e886029e <MakeDomainNameFromDNSNameString+0xfe>
    e8860296:	0ff6f613          	andi	a2,a3,255
    e886029a:	00470313          	addi	t1,a4,4
			*ptr++ = c;												// Write the character
    e886029e:	1815560b          	sbia	a2,(a0),1,0
    e88602a2:	871a                	mv	a4,t1
		while (*cstr && *cstr != '.' && ptr < lim)					// While we have characters in the label...
    e88602a4:	00074603          	lbu	a2,0(a4)
    e88602a8:	c21d                	beqz	a2,e88602ce <MakeDomainNameFromDNSNameString+0x12e>
    e88602aa:	00170313          	addi	t1,a4,1
    e88602ae:	01d60463          	beq	a2,t4,e88602b6 <MakeDomainNameFromDNSNameString+0x116>
    e88602b2:	fb0560e3          	bltu	a0,a6,e8860252 <MakeDomainNameFromDNSNameString+0xb2>
		if (ptr - lengthbyte - 1 > MAX_DOMAIN_LABEL)				// If illegal label, abort
    e88602b6:	40f50733          	sub	a4,a0,a5
    e88602ba:	fff70693          	addi	a3,a4,-1
    e88602be:	f8d4c8e3          	blt	s1,a3,e886024e <MakeDomainNameFromDNSNameString+0xae>
		*lengthbyte = (uint8_t)(ptr - lengthbyte - 1);				// Fill in the length byte
    e88602c2:	377d                	addiw	a4,a4,-1
    e88602c4:	00e78023          	sb	a4,0(a5)
    e88602c8:	87aa                	mv	a5,a0
    e88602ca:	871a                	mv	a4,t1
    e88602cc:	b72d                	j	e88601f6 <MakeDomainNameFromDNSNameString+0x56>
		while (*cstr && *cstr != '.' && ptr < lim)					// While we have characters in the label...
    e88602ce:	833a                	mv	t1,a4
    e88602d0:	b7dd                	j	e88602b6 <MakeDomainNameFromDNSNameString+0x116>

00000000e88602d2 <VSNScanF>:
//===========================================================================================================================
//	VSNScanF - va_list version of SNScanF.
//===========================================================================================================================

int	VSNScanF( const void *inStr, size_t inLen, const char *inFormat, va_list inArgs )
{
    e88602d2:	7151                	addi	sp,sp,-240
    e88602d4:	e1d2                	sd	s4,192(sp)
    e88602d6:	f162                	sd	s8,160(sp)
    e88602d8:	e56e                	sd	s11,136(sp)
    e88602da:	f586                	sd	ra,232(sp)
    e88602dc:	f1a2                	sd	s0,224(sp)
    e88602de:	eda6                	sd	s1,216(sp)
    e88602e0:	e9ca                	sd	s2,208(sp)
    e88602e2:	e5ce                	sd	s3,200(sp)
    e88602e4:	fd56                	sd	s5,184(sp)
    e88602e6:	f95a                	sd	s6,176(sp)
    e88602e8:	f55e                	sd	s7,168(sp)
    e88602ea:	ed66                	sd	s9,152(sp)
    e88602ec:	e96a                	sd	s10,144(sp)
    e88602ee:	bca2                	fsd	fs0,120(sp)
    e88602f0:	b8a6                	fsd	fs1,112(sp)
    e88602f2:	b4ca                	fsd	fs2,104(sp)
    e88602f4:	b0ce                	fsd	fs3,96(sp)
	int								matched = 0;
	const unsigned char *			src = (const unsigned char *) inStr;
	const unsigned char * const		end = src + ( ( inLen == kSizeCString ) ? strlen( (const char *) inStr ) : inLen );
    e88602f6:	57fd                	li	a5,-1
{
    e88602f8:	8c2a                	mv	s8,a0
    e88602fa:	8a32                	mv	s4,a2
    e88602fc:	8db6                	mv	s11,a3
	const unsigned char * const		end = src + ( ( inLen == kSizeCString ) ? strlen( (const char *) inStr ) : inLen );
    e88602fe:	00f59663          	bne	a1,a5,e886030a <VSNScanF+0x38>
    e8860302:	0161c0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8860306:	7c05358b          	extu	a1,a0,31,0
				continue;
			
			case 'n':	// %n: Return the number of characters read so far.
			
				if( sizeModifier != 0 )		goto exit;
				if( fieldWidth != INT_MAX )	goto exit;
    e886030a:	80000bb7          	lui	s7,0x80000
	const unsigned char * const		end = src + ( ( inLen == kSizeCString ) ? strlen( (const char *) inStr ) : inLen );
    e886030e:	00bc09b3          	add	s3,s8,a1
	const unsigned char *			src = (const unsigned char *) inStr;
    e8860312:	8462                	mv	s0,s8
	int								matched = 0;
    e8860314:	4a81                	li	s5,0
    e8860316:	00063797          	auipc	a5,0x63
    e886031a:	64a7b407          	fld	fs0,1610(a5) # e88c3960 <kSRPParameters_3072_SHA512+0xd0>
		s=s*10.0+*str-'0';
    e886031e:	00063797          	auipc	a5,0x63
    e8860322:	6527b487          	fld	fs1,1618(a5) # e88c3970 <kSRPParameters_3072_SHA512+0xe0>
    return s*(falg?-1.0:1.0);
    e8860326:	00063797          	auipc	a5,0x63
    e886032a:	6427b907          	fld	fs2,1602(a5) # e88c3968 <kSRPParameters_3072_SHA512+0xd8>
    e886032e:	0005f797          	auipc	a5,0x5f
    e8860332:	b4a7b987          	fld	fs3,-1206(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
				if( fieldWidth != INT_MAX )	goto exit;
    e8860336:	fffbcb93          	not	s7,s7
		if( isspace( *fmt ) )
    e886033a:	000a4503          	lbu	a0,0(s4)
    e886033e:	90afe0ef          	jal	ra,e885e448 <isspace>
    e8860342:	cd11                	beqz	a0,e886035e <VSNScanF+0x8c>
			while( isspace( *fmt ) )				  ++fmt;
    e8860344:	0a05                	addi	s4,s4,1
    e8860346:	000a4503          	lbu	a0,0(s4)
    e886034a:	8fefe0ef          	jal	ra,e885e448 <isspace>
    e886034e:	f97d                	bnez	a0,e8860344 <VSNScanF+0x72>
			while( ( src < end ) && isspace( *src ) ) ++src;
    e8860350:	01347763          	bgeu	s0,s3,e886035e <VSNScanF+0x8c>
    e8860354:	00044503          	lbu	a0,0(s0)
    e8860358:	8f0fe0ef          	jal	ra,e885e448 <isspace>
    e886035c:	e115                	bnez	a0,e8860380 <VSNScanF+0xae>
		if( *fmt == '\0' ) break;
    e886035e:	000a4783          	lbu	a5,0(s4)
    e8860362:	c3ed                	beqz	a5,e8860444 <VSNScanF+0x172>
		if( *fmt != '%' )
    e8860364:	02500713          	li	a4,37
    e8860368:	00e78e63          	beq	a5,a4,e8860384 <VSNScanF+0xb2>
			if( src >= end )		break;
    e886036c:	0d347c63          	bgeu	s0,s3,e8860444 <VSNScanF+0x172>
			if( *fmt++ != *src++ )	break;
    e8860370:	00044703          	lbu	a4,0(s0)
    e8860374:	0cf71863          	bne	a4,a5,e8860444 <VSNScanF+0x172>
    e8860378:	0a05                	addi	s4,s4,1
				if( *src++ != '%' )			goto exit;
    e886037a:	00140493          	addi	s1,s0,1
    e886037e:	a5d1                	j	e8860a42 <VSNScanF+0x770>
			while( ( src < end ) && isspace( *src ) ) ++src;
    e8860380:	0405                	addi	s0,s0,1
    e8860382:	b7f9                	j	e8860350 <VSNScanF+0x7e>
		++fmt;
    e8860384:	001a0793          	addi	a5,s4,1
		storePtr = 0;
    e8860388:	4601                	li	a2,0
		alt		 = 0;
    e886038a:	4d01                	li	s10,0
		suppress = 0;
    e886038c:	4b01                	li	s6,0
			if(      c == '*' ) suppress = 1;
    e886038e:	02a00693          	li	a3,42
			else if( c == '#' ) alt		+= 1;
    e8860392:	02300593          	li	a1,35
			else if( c == '&' ) storePtr = 1;
    e8860396:	02600513          	li	a0,38
			c = *fmt;
    e886039a:	0007c703          	lbu	a4,0(a5)
			if(      c == '*' ) suppress = 1;
    e886039e:	00d70b63          	beq	a4,a3,e88603b4 <VSNScanF+0xe2>
			else if( c == '#' ) alt		+= 1;
    e88603a2:	00b71563          	bne	a4,a1,e88603ac <VSNScanF+0xda>
    e88603a6:	2d05                	addiw	s10,s10,1
			++fmt;
    e88603a8:	0785                	addi	a5,a5,1
			c = *fmt;
    e88603aa:	bfc5                	j	e886039a <VSNScanF+0xc8>
			else if( c == '&' ) storePtr = 1;
    e88603ac:	00a71663          	bne	a4,a0,e88603b8 <VSNScanF+0xe6>
    e88603b0:	4605                	li	a2,1
    e88603b2:	bfdd                	j	e88603a8 <VSNScanF+0xd6>
			if(      c == '*' ) suppress = 1;
    e88603b4:	4b05                	li	s6,1
    e88603b6:	bfcd                	j	e88603a8 <VSNScanF+0xd6>
		if( isdigit( *fmt ) )
    e88603b8:	fd07069b          	addiw	a3,a4,-48
    e88603bc:	0ff6f693          	andi	a3,a3,255
    e88603c0:	45a5                	li	a1,9
    e88603c2:	0ad5e563          	bltu	a1,a3,e886046c <VSNScanF+0x19a>
			fieldWidth = 0;
    e88603c6:	4901                	li	s2,0
				fieldWidth = ( fieldWidth * 10 ) + ( *fmt++ - '0' );
    e88603c8:	45a9                	li	a1,10
			}	while( isdigit( *fmt ) );
    e88603ca:	46a5                	li	a3,9
				fieldWidth = ( fieldWidth * 10 ) + ( *fmt++ - '0' );
    e88603cc:	0325893b          	mulw	s2,a1,s2
    e88603d0:	9817c48b          	lbuia	s1,(a5),1,0
			}	while( isdigit( *fmt ) );
    e88603d4:	0007c703          	lbu	a4,0(a5)
    e88603d8:	fd07071b          	addiw	a4,a4,-48
    e88603dc:	0ff77713          	andi	a4,a4,255
    e88603e0:	fd09091b          	addiw	s2,s2,-48
				fieldWidth = ( fieldWidth * 10 ) + ( *fmt++ - '0' );
    e88603e4:	0124893b          	addw	s2,s1,s2
			}	while( isdigit( *fmt ) );
    e88603e8:	fee6f2e3          	bgeu	a3,a4,e88603cc <VSNScanF+0xfa>
			if( fieldWidth < 0 ) goto exit;
    e88603ec:	04094c63          	bltz	s2,e8860444 <VSNScanF+0x172>
		c = *fmt;
    e88603f0:	0007cc83          	lbu	s9,0(a5)
		switch( c )
    e88603f4:	06c00713          	li	a4,108
    e88603f8:	0aec8663          	beq	s9,a4,e88604a4 <VSNScanF+0x1d2>
    e88603fc:	09976163          	bltu	a4,s9,e886047e <VSNScanF+0x1ac>
    e8860400:	06800713          	li	a4,104
    e8860404:	08ec8463          	beq	s9,a4,e886048c <VSNScanF+0x1ba>
    e8860408:	06a00713          	li	a4,106
    e886040c:	0aec8863          	beq	s9,a4,e88604bc <VSNScanF+0x1ea>
				sizeModifier = 0;
    e8860410:	4c81                	li	s9,0
		if( *fmt == '\0' ) break;
    e8860412:	0007c703          	lbu	a4,0(a5)
    e8860416:	c71d                	beqz	a4,e8860444 <VSNScanF+0x172>
		switch( *fmt++ )
    e8860418:	06600693          	li	a3,102
    e886041c:	00178a13          	addi	s4,a5,1
    e8860420:	1ed70f63          	beq	a4,a3,e886061e <VSNScanF+0x34c>
    e8860424:	0ae6ec63          	bltu	a3,a4,e88604dc <VSNScanF+0x20a>
    e8860428:	05b00693          	li	a3,91
    e886042c:	52d70463          	beq	a4,a3,e8860954 <VSNScanF+0x682>
    e8860430:	08e6e863          	bltu	a3,a4,e88604c0 <VSNScanF+0x1ee>
    e8860434:	02500793          	li	a5,37
    e8860438:	5cf70a63          	beq	a4,a5,e8860a0c <VSNScanF+0x73a>
    e886043c:	05800793          	li	a5,88
    e8860440:	60f70f63          	beq	a4,a5,e8860a5e <VSNScanF+0x78c>
		++matched;
	}
	
exit:
	return( matched );
}
    e8860444:	70ae                	ld	ra,232(sp)
    e8860446:	740e                	ld	s0,224(sp)
    e8860448:	8556                	mv	a0,s5
    e886044a:	64ee                	ld	s1,216(sp)
    e886044c:	694e                	ld	s2,208(sp)
    e886044e:	69ae                	ld	s3,200(sp)
    e8860450:	6a0e                	ld	s4,192(sp)
    e8860452:	7aea                	ld	s5,184(sp)
    e8860454:	7b4a                	ld	s6,176(sp)
    e8860456:	7baa                	ld	s7,168(sp)
    e8860458:	7c0a                	ld	s8,160(sp)
    e886045a:	6cea                	ld	s9,152(sp)
    e886045c:	6d4a                	ld	s10,144(sp)
    e886045e:	6daa                	ld	s11,136(sp)
    e8860460:	3466                	fld	fs0,120(sp)
    e8860462:	34c6                	fld	fs1,112(sp)
    e8860464:	3926                	fld	fs2,104(sp)
    e8860466:	3986                	fld	fs3,96(sp)
    e8860468:	616d                	addi	sp,sp,240
    e886046a:	8082                	ret
		else if( *fmt == '.' )
    e886046c:	02e00693          	li	a3,46
			fieldWidth = INT_MAX;
    e8860470:	895e                	mv	s2,s7
		else if( *fmt == '.' )
    e8860472:	f6d71fe3          	bne	a4,a3,e88603f0 <VSNScanF+0x11e>
			++fmt;
    e8860476:	0785                	addi	a5,a5,1
			fieldWidth = va_arg( inArgs, int );
    e8860478:	588dc90b          	lwia	s2,(s11),8,0
    e886047c:	bf85                	j	e88603ec <VSNScanF+0x11a>
		switch( c )
    e886047e:	07400713          	li	a4,116
    e8860482:	02ec8d63          	beq	s9,a4,e88604bc <VSNScanF+0x1ea>
    e8860486:	07a00713          	li	a4,122
    e886048a:	b749                	j	e886040c <VSNScanF+0x13a>
				if( *( ++fmt ) == 'h' ) { sizeModifier = 'H'; ++fmt; }	// hh for char *  / unsigned char *
    e886048c:	0017c703          	lbu	a4,1(a5)
    e8860490:	01970663          	beq	a4,s9,e886049c <VSNScanF+0x1ca>
    e8860494:	0785                	addi	a5,a5,1
				else					  sizeModifier = 'h';			// h  for short * / unsigned short *
    e8860496:	06800c93          	li	s9,104
    e886049a:	bfa5                	j	e8860412 <VSNScanF+0x140>
				if( *( ++fmt ) == 'h' ) { sizeModifier = 'H'; ++fmt; }	// hh for char *  / unsigned char *
    e886049c:	0789                	addi	a5,a5,2
    e886049e:	04800c93          	li	s9,72
    e88604a2:	bf85                	j	e8860412 <VSNScanF+0x140>
				if( *( ++fmt ) == 'l' ) { sizeModifier = 'L'; ++fmt; }	// ll for long long * / unsigned long long *
    e88604a4:	0017c703          	lbu	a4,1(a5)
    e88604a8:	01970663          	beq	a4,s9,e88604b4 <VSNScanF+0x1e2>
    e88604ac:	0785                	addi	a5,a5,1
				else					  sizeModifier = 'l';			// l  for long *      / unsigned long *
    e88604ae:	06c00c93          	li	s9,108
    e88604b2:	b785                	j	e8860412 <VSNScanF+0x140>
				if( *( ++fmt ) == 'l' ) { sizeModifier = 'L'; ++fmt; }	// ll for long long * / unsigned long long *
    e88604b4:	0789                	addi	a5,a5,2
    e88604b6:	04c00c93          	li	s9,76
    e88604ba:	bfa1                	j	e8860412 <VSNScanF+0x140>
				++fmt;
    e88604bc:	0785                	addi	a5,a5,1
				break;
    e88604be:	bf91                	j	e8860412 <VSNScanF+0x140>
		switch( *fmt++ )
    e88604c0:	06300793          	li	a5,99
    e88604c4:	38f70563          	beq	a4,a5,e886084e <VSNScanF+0x57c>
    e88604c8:	06400793          	li	a5,100
    e88604cc:	58f70763          	beq	a4,a5,e8860a5a <VSNScanF+0x788>
    e88604d0:	06200793          	li	a5,98
    e88604d4:	f6f718e3          	bne	a4,a5,e8860444 <VSNScanF+0x172>
				base = 2;
    e88604d8:	4d09                	li	s10,2
    e88604da:	a895                	j	e886054e <VSNScanF+0x27c>
		switch( *fmt++ )
    e88604dc:	07000793          	li	a5,112
    e88604e0:	06f70263          	beq	a4,a5,e8860544 <VSNScanF+0x272>
    e88604e4:	00e7ee63          	bltu	a5,a4,e8860500 <VSNScanF+0x22e>
    e88604e8:	06e00793          	li	a5,110
    e88604ec:	52f70d63          	beq	a4,a5,e8860a26 <VSNScanF+0x754>
    e88604f0:	56e7e363          	bltu	a5,a4,e8860a56 <VSNScanF+0x784>
    e88604f4:	06900793          	li	a5,105
    e88604f8:	f4f716e3          	bne	a4,a5,e8860444 <VSNScanF+0x172>
				base = 0;
    e88604fc:	4d01                	li	s10,0
    e88604fe:	a881                	j	e886054e <VSNScanF+0x27c>
		switch( *fmt++ )
    e8860500:	07500793          	li	a5,117
    e8860504:	54f70b63          	beq	a4,a5,e8860a5a <VSNScanF+0x788>
    e8860508:	07800793          	li	a5,120
    e886050c:	54f70963          	beq	a4,a5,e8860a5e <VSNScanF+0x78c>
    e8860510:	07300793          	li	a5,115
    e8860514:	f2f718e3          	bne	a4,a5,e8860444 <VSNScanF+0x172>
				if( sizeModifier != 0 ) goto exit;
    e8860518:	f20c96e3          	bnez	s9,e8860444 <VSNScanF+0x172>
				while( ( src < end ) && isspace( *src ) ) ++src;
    e886051c:	71347763          	bgeu	s0,s3,e8860c2a <VSNScanF+0x958>
    e8860520:	00044483          	lbu	s1,0(s0)
    e8860524:	e032                	sd	a2,0(sp)
    e8860526:	8526                	mv	a0,s1
    e8860528:	f21fd0ef          	jal	ra,e885e448 <isspace>
    e886052c:	6602                	ld	a2,0(sp)
    e886052e:	38051b63          	bnez	a0,e88608c4 <VSNScanF+0x5f2>
				if( !alt && ( ( src >= end ) || ( *src == '\0' ) ) ) goto exit;
    e8860532:	000d1363          	bnez	s10,e8860538 <VSNScanF+0x266>
    e8860536:	d499                	beqz	s1,e8860444 <VSNScanF+0x172>
				if( suppress )
    e8860538:	6e0b0d63          	beqz	s6,e8860c32 <VSNScanF+0x960>
    e886053c:	84a2                	mv	s1,s0
    e886053e:	0124093b          	addw	s2,s0,s2
    e8860542:	a671                	j	e88608ce <VSNScanF+0x5fc>
				base = 16;
    e8860544:	4d41                	li	s10,16
				if( sizeModifier == 0 ) sizeModifier = 'p';
    e8860546:	000c9463          	bnez	s9,e886054e <VSNScanF+0x27c>
    e886054a:	07000c93          	li	s9,112
		while( ( src < end ) && isspace( *src ) ) ++src;
    e886054e:	01347863          	bgeu	s0,s3,e886055e <VSNScanF+0x28c>
    e8860552:	00044503          	lbu	a0,0(s0)
    e8860556:	ef3fd0ef          	jal	ra,e885e448 <isspace>
    e886055a:	4e051c63          	bnez	a0,e8860a52 <VSNScanF+0x780>
		negative = 0;
    e886055e:	e002                	sd	zero,0(sp)
		if( ( ( end - src ) > 1 ) && ( fieldWidth > 0 ) )
    e8860560:	408987b3          	sub	a5,s3,s0
    e8860564:	4685                	li	a3,1
    e8860566:	00f6de63          	bge	a3,a5,e8860582 <VSNScanF+0x2b0>
    e886056a:	00090c63          	beqz	s2,e8860582 <VSNScanF+0x2b0>
			if( src[ 0 ] == '-' )
    e886056e:	00044783          	lbu	a5,0(s0)
    e8860572:	02d00693          	li	a3,45
    e8860576:	4ed79663          	bne	a5,a3,e8860a62 <VSNScanF+0x790>
				negative = 1;
    e886057a:	4785                	li	a5,1
				++src;
    e886057c:	0405                	addi	s0,s0,1
				--fieldWidth;
    e886057e:	397d                	addiw	s2,s2,-1
				negative = 1;
    e8860580:	e03e                	sd	a5,0(sp)
		if( base == 0 )
    e8860582:	540d1e63          	bnez	s10,e8860ade <VSNScanF+0x80c>
			if( ( ( end - src ) > 2 ) && ( fieldWidth >= 2 ) && 
    e8860586:	40898733          	sub	a4,s3,s0
    e886058a:	4789                	li	a5,2
    e886058c:	52e7d163          	bge	a5,a4,e8860aae <VSNScanF+0x7dc>
    e8860590:	4785                	li	a5,1
    e8860592:	5327d063          	bge	a5,s2,e8860ab2 <VSNScanF+0x7e0>
    e8860596:	00044703          	lbu	a4,0(s0)
    e886059a:	03000793          	li	a5,48
    e886059e:	5cf71a63          	bne	a4,a5,e8860b72 <VSNScanF+0x8a0>
				( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) && isxdigit( src[ 2 ] ) )
    e88605a2:	00144483          	lbu	s1,1(s0)
			if( ( ( end - src ) > 2 ) && ( fieldWidth >= 2 ) && 
    e88605a6:	4765                	li	a4,25
				( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) && isxdigit( src[ 2 ] ) )
    e88605a8:	fbf4879b          	addiw	a5,s1,-65
			if( ( ( end - src ) > 2 ) && ( fieldWidth >= 2 ) && 
    e88605ac:	0ff7f793          	andi	a5,a5,255
    e88605b0:	4cf76063          	bltu	a4,a5,e8860a70 <VSNScanF+0x79e>
				( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) && isxdigit( src[ 2 ] ) )
    e88605b4:	05800793          	li	a5,88
    e88605b8:	4af49f63          	bne	s1,a5,e8860a76 <VSNScanF+0x7a4>
    e88605bc:	00244503          	lbu	a0,2(s0)
    e88605c0:	866fe0ef          	jal	ra,e885e626 <isxdigit>
    e88605c4:	4a050963          	beqz	a0,e8860a76 <VSNScanF+0x7a4>
				src			+=  2;
    e88605c8:	00240493          	addi	s1,s0,2
				fieldWidth	-=  2;
    e88605cc:	3979                	addiw	s2,s2,-2
				base		 = 16;
    e88605ce:	4d41                	li	s10,16
		x = 0;
    e88605d0:	4781                	li	a5,0
    e88605d2:	009905bb          	addw	a1,s2,s1
			if(      isdigit(  c ) ) v = c - '0';
    e88605d6:	4825                	li	a6,9
		while( ( src < end ) && ( fieldWidth-- > 0 ) )
    e88605d8:	0134f663          	bgeu	s1,s3,e88605e4 <VSNScanF+0x312>
    e88605dc:	409586bb          	subw	a3,a1,s1
    e88605e0:	58d04c63          	bgtz	a3,e8860b78 <VSNScanF+0x8a6>
		if( src == old ) goto exit;
    e88605e4:	e69400e3          	beq	s0,s1,e8860444 <VSNScanF+0x172>
		if( suppress )	 continue;
    e88605e8:	440b1d63          	bnez	s6,e8860a42 <VSNScanF+0x770>
		if( negative )	 x = -x;
    e88605ec:	6702                	ld	a4,0(sp)
    e88605ee:	c319                	beqz	a4,e88605f4 <VSNScanF+0x322>
    e88605f0:	40f007b3          	neg	a5,a5
		p = va_arg( inArgs, void * );
    e88605f4:	788dc70b          	ldia	a4,(s11),8,0
		if( !p ) goto exit;
    e88605f8:	e40706e3          	beqz	a4,e8860444 <VSNScanF+0x172>
		switch( sizeModifier )
    e88605fc:	06a00693          	li	a3,106
    e8860600:	5edc8c63          	beq	s9,a3,e8860bf8 <VSNScanF+0x926>
    e8860604:	5f96c063          	blt	a3,s9,e8860be4 <VSNScanF+0x912>
    e8860608:	04800693          	li	a3,72
    e886060c:	5edc8f63          	beq	s9,a3,e8860c0a <VSNScanF+0x938>
    e8860610:	5b96cf63          	blt	a3,s9,e8860bce <VSNScanF+0x8fc>
    e8860614:	e20c98e3          	bnez	s9,e8860444 <VSNScanF+0x172>
			case   0: *( (int       *) p ) = (int)					x; break;
    e8860618:	c31c                	sw	a5,0(a4)
    e886061a:	a225                	j	e8860742 <VSNScanF+0x470>
				while( ( src < end ) && isspace( *src ) ) ++src;
    e886061c:	0405                	addi	s0,s0,1
    e886061e:	01347763          	bgeu	s0,s3,e886062c <VSNScanF+0x35a>
    e8860622:	00044503          	lbu	a0,0(s0)
    e8860626:	e23fd0ef          	jal	ra,e885e448 <isspace>
    e886062a:	f96d                	bnez	a0,e886061c <VSNScanF+0x34a>
				end2 = ( ( end - src ) <= ( (ptrdiff_t) fieldWidth ) ) ? end : ( src + fieldWidth );
    e886062c:	408987b3          	sub	a5,s3,s0
	const unsigned char * const		end = src + ( ( inLen == kSizeCString ) ? strlen( (const char *) inStr ) : inLen );
    e8860630:	874e                	mv	a4,s3
				end2 = ( ( end - src ) <= ( (ptrdiff_t) fieldWidth ) ) ? end : ( src + fieldWidth );
    e8860632:	00f95463          	bge	s2,a5,e886063a <VSNScanF+0x368>
    e8860636:	01240733          	add	a4,s0,s2
				if(    ( src < end2 ) && ( *src == '-' ) )							++src;
    e886063a:	84a2                	mv	s1,s0
    e886063c:	0ae47063          	bgeu	s0,a4,e88606dc <VSNScanF+0x40a>
    e8860640:	00044683          	lbu	a3,0(s0)
    e8860644:	02d00793          	li	a5,45
    e8860648:	00f69463          	bne	a3,a5,e8860650 <VSNScanF+0x37e>
    e886064c:	00140493          	addi	s1,s0,1
				while( ( src < end2 ) && isdigit_safe( *src ) )						++src;
    e8860650:	4625                	li	a2,9
    e8860652:	a011                	j	e8860656 <VSNScanF+0x384>
    e8860654:	0485                	addi	s1,s1,1
    e8860656:	08e4f363          	bgeu	s1,a4,e88606dc <VSNScanF+0x40a>
    e886065a:	0004c683          	lbu	a3,0(s1)
    e886065e:	fd06879b          	addiw	a5,a3,-48
    e8860662:	0ff7f793          	andi	a5,a5,255
    e8860666:	fef677e3          	bgeu	a2,a5,e8860654 <VSNScanF+0x382>
				if(    ( src < end2 ) && ( *src == '.' ) )							++src;
    e886066a:	02e00793          	li	a5,46
    e886066e:	00f69363          	bne	a3,a5,e8860674 <VSNScanF+0x3a2>
    e8860672:	0485                	addi	s1,s1,1
				while( ( src < end2 ) && isdigit_safe( *src ) )						++src;
    e8860674:	4625                	li	a2,9
    e8860676:	a011                	j	e886067a <VSNScanF+0x3a8>
    e8860678:	0485                	addi	s1,s1,1
    e886067a:	06e4f163          	bgeu	s1,a4,e88606dc <VSNScanF+0x40a>
    e886067e:	0004c783          	lbu	a5,0(s1)
    e8860682:	fd07869b          	addiw	a3,a5,-48
    e8860686:	0ff6f693          	andi	a3,a3,255
    e886068a:	fed677e3          	bgeu	a2,a3,e8860678 <VSNScanF+0x3a6>
				if(    ( src < end2 ) && ( tolower_safe( *src ) == 'e' ) )			++src;
    e886068e:	fbf7869b          	addiw	a3,a5,-65
    e8860692:	0ff6f693          	andi	a3,a3,255
    e8860696:	4665                	li	a2,25
    e8860698:	00d67563          	bgeu	a2,a3,e88606a2 <VSNScanF+0x3d0>
    e886069c:	f9b78793          	addi	a5,a5,-101
    e88606a0:	a019                	j	e88606a6 <VSNScanF+0x3d4>
    e88606a2:	fbb78793          	addi	a5,a5,-69
    e88606a6:	0017b793          	seqz	a5,a5
    e88606aa:	c781                	beqz	a5,e88606b2 <VSNScanF+0x3e0>
    e88606ac:	0485                	addi	s1,s1,1
				if(    ( src < end2 ) && ( ( *src == '+' ) || ( *src == '-' ) ) )	++src;
    e88606ae:	02e4f763          	bgeu	s1,a4,e88606dc <VSNScanF+0x40a>
    e88606b2:	0004c783          	lbu	a5,0(s1)
    e88606b6:	fd57879b          	addiw	a5,a5,-43
    e88606ba:	0fd7f793          	andi	a5,a5,253
    e88606be:	e391                	bnez	a5,e88606c2 <VSNScanF+0x3f0>
    e88606c0:	0485                	addi	s1,s1,1
				while( ( src < end2 ) && isdigit_safe( *src ) )						++src;
    e88606c2:	46a5                	li	a3,9
    e88606c4:	a011                	j	e88606c8 <VSNScanF+0x3f6>
    e88606c6:	0485                	addi	s1,s1,1
    e88606c8:	00e4fa63          	bgeu	s1,a4,e88606dc <VSNScanF+0x40a>
    e88606cc:	0004c783          	lbu	a5,0(s1)
    e88606d0:	fd07879b          	addiw	a5,a5,-48
    e88606d4:	0ff7f793          	andi	a5,a5,255
    e88606d8:	fef6f7e3          	bgeu	a3,a5,e88606c6 <VSNScanF+0x3f4>
				len = (size_t)( src - old );
    e88606dc:	40848933          	sub	s2,s1,s0
				require_quiet( len < sizeof( buf ), exit );
    e88606e0:	03f00793          	li	a5,63
    e88606e4:	d727e0e3          	bltu	a5,s2,e8860444 <VSNScanF+0x172>
				memcpy( buf, old, len );
    e88606e8:	864a                	mv	a2,s2
    e88606ea:	85a2                	mv	a1,s0
    e88606ec:	1008                	addi	a0,sp,32
    e88606ee:	4b31b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
				buf[ len ] = '\0';
    e88606f2:	101c                	addi	a5,sp,32
    e88606f4:	0127d00b          	srb	zero,a5,s2,0
	while(*str==' ')
    e88606f8:	02000693          	li	a3,32
    e88606fc:	0007c703          	lbu	a4,0(a5)
    e8860700:	04d70363          	beq	a4,a3,e8860746 <VSNScanF+0x474>
	if(*str=='-')//¼
    e8860704:	02d00613          	li	a2,45
	unsigned char falg=0;
    e8860708:	4681                	li	a3,0
	if(*str=='-')//¼
    e886070a:	00c71463          	bne	a4,a2,e8860712 <VSNScanF+0x440>
		str++;
    e886070e:	0785                	addi	a5,a5,1
		falg=1;
    e8860710:	4685                	li	a3,1
	if(!(*str>='0'&&*str<='9'))//һʼ˳0.0
    e8860712:	0007c703          	lbu	a4,0(a5)
    e8860716:	4625                	li	a2,9
		return s;
    e8860718:	f20007d3          	fmv.d.x	fa5,zero
	if(!(*str>='0'&&*str<='9'))//һʼ˳0.0
    e886071c:	fd07071b          	addiw	a4,a4,-48
    e8860720:	0ff77713          	andi	a4,a4,255
	while(*str>='0'&&*str<='9'&&*str!='.')//Сǰ
    e8860724:	45a5                	li	a1,9
	if(!(*str>='0'&&*str<='9'))//һʼ˳0.0
    e8860726:	02e67963          	bgeu	a2,a4,e8860758 <VSNScanF+0x486>
				if( suppress ) continue;
    e886072a:	300b1c63          	bnez	s6,e8860a42 <VSNScanF+0x770>
				p = va_arg( inArgs, void * );
    e886072e:	000db783          	ld	a5,0(s11)
				if( !p ) goto exit;
    e8860732:	d00789e3          	beqz	a5,e8860444 <VSNScanF+0x172>
				if(      sizeModifier == 'l' )	*( (double *) p ) = d;
    e8860736:	06c00713          	li	a4,108
    e886073a:	10ec9363          	bne	s9,a4,e8860840 <VSNScanF+0x56e>
    e886073e:	a39c                	fsd	fa5,0(a5)
				p = va_arg( inArgs, void * );
    e8860740:	0da1                	addi	s11,s11,8
		++matched;
    e8860742:	2a85                	addiw	s5,s5,1
    e8860744:	acfd                	j	e8860a42 <VSNScanF+0x770>
		str++;
    e8860746:	0785                	addi	a5,a5,1
    e8860748:	bf55                	j	e88606fc <VSNScanF+0x42a>
		s=s*10.0+*str-'0';
    e886074a:	d2070753          	fcvt.d.w	fa4,a4
		str++;
    e886074e:	0785                	addi	a5,a5,1
		s=s*10.0+*str-'0';
    e8860750:	7287f7c3          	fmadd.d	fa5,fa5,fs0,fa4
    e8860754:	0a97f7d3          	fsub.d	fa5,fa5,fs1
	while(*str>='0'&&*str<='9'&&*str!='.')//Сǰ
    e8860758:	0007c703          	lbu	a4,0(a5)
    e886075c:	fd07061b          	addiw	a2,a4,-48
    e8860760:	0ff67613          	andi	a2,a2,255
    e8860764:	fec5f3e3          	bgeu	a1,a2,e886074a <VSNScanF+0x478>
	if(*str=='.')//ԺΪС
    e8860768:	02e00613          	li	a2,46
    e886076c:	00c71363          	bne	a4,a2,e8860772 <VSNScanF+0x4a0>
		str++;
    e8860770:	0785                	addi	a5,a5,1
	double s=0.0;
    e8860772:	228406d3          	fmv.d	fa3,fs0
	while(*str>='0'&&*str<='9')//С
    e8860776:	45a5                	li	a1,9
    e8860778:	a811                	j	e886078c <VSNScanF+0x4ba>
		s=s+(*str-'0')/d;
    e886077a:	d2070753          	fcvt.d.w	fa4,a4
		str++;
    e886077e:	0785                	addi	a5,a5,1
		s=s+(*str-'0')/d;
    e8860780:	1ad77753          	fdiv.d	fa4,fa4,fa3
		d*=10.0;
    e8860784:	1286f6d3          	fmul.d	fa3,fa3,fs0
		s=s+(*str-'0')/d;
    e8860788:	02e7f7d3          	fadd.d	fa5,fa5,fa4
	while(*str>='0'&&*str<='9')//С
    e886078c:	0007c603          	lbu	a2,0(a5)
    e8860790:	fd06071b          	addiw	a4,a2,-48
    e8860794:	0ff77513          	andi	a0,a4,255
    e8860798:	fea5f1e3          	bgeu	a1,a0,e886077a <VSNScanF+0x4a8>
	if(*str=='e'||*str=='E')//ǿѧ
    e886079c:	0df67613          	andi	a2,a2,223
    e88607a0:	04500713          	li	a4,69
    e88607a4:	02e61d63          	bne	a2,a4,e88607de <VSNScanF+0x50c>
		if(*str=='+')
    e88607a8:	0017c603          	lbu	a2,1(a5)
    e88607ac:	02b00713          	li	a4,43
    e88607b0:	02e60f63          	beq	a2,a4,e88607ee <VSNScanF+0x51c>
		str++;
    e88607b4:	0785                	addi	a5,a5,1
	int jishu=0;
    e88607b6:	4701                	li	a4,0
		if(*str=='-')
    e88607b8:	0007c583          	lbu	a1,0(a5)
    e88607bc:	02d00613          	li	a2,45
    e88607c0:	00c59f63          	bne	a1,a2,e88607de <VSNScanF+0x50c>
			str++;
    e88607c4:	0785                	addi	a5,a5,1
			while(*str>='0'&&*str<='9')
    e88607c6:	4525                	li	a0,9
				jishu=jishu*10+*str-'0';
    e88607c8:	4829                	li	a6,10
			while(*str>='0'&&*str<='9')
    e88607ca:	0007c603          	lbu	a2,0(a5)
    e88607ce:	fd06059b          	addiw	a1,a2,-48
    e88607d2:	0ff5f593          	andi	a1,a1,255
    e88607d6:	04b57b63          	bgeu	a0,a1,e886082c <VSNScanF+0x55a>
			while(jishu>0)
    e88607da:	04e04f63          	bgtz	a4,e8860838 <VSNScanF+0x566>
    return s*(falg?-1.0:1.0);
    e88607de:	23290753          	fmv.d	fa4,fs2
    e88607e2:	e299                	bnez	a3,e88607e8 <VSNScanF+0x516>
    e88607e4:	23398753          	fmv.d	fa4,fs3
    e88607e8:	12e7f7d3          	fmul.d	fa5,fa5,fa4
    e88607ec:	bf3d                	j	e886072a <VSNScanF+0x458>
			str++;
    e88607ee:	0789                	addi	a5,a5,2
	int jishu=0;
    e88607f0:	4701                	li	a4,0
			while(*str>='0'&&*str<='9')
    e88607f2:	4525                	li	a0,9
				jishu=jishu*10+*str-'0';
    e88607f4:	4829                	li	a6,10
			while(*str>='0'&&*str<='9')
    e88607f6:	0007c603          	lbu	a2,0(a5)
    e88607fa:	fd06059b          	addiw	a1,a2,-48
    e88607fe:	0ff5f593          	andi	a1,a1,255
    e8860802:	00b57b63          	bgeu	a0,a1,e8860818 <VSNScanF+0x546>
    e8860806:	863a                	mv	a2,a4
			while(jishu>0)
    e8860808:	00c04e63          	bgtz	a2,e8860824 <VSNScanF+0x552>
    e886080c:	863a                	mv	a2,a4
    e886080e:	00075363          	bgez	a4,e8860814 <VSNScanF+0x542>
    e8860812:	4601                	li	a2,0
    e8860814:	9f11                	subw	a4,a4,a2
    e8860816:	b74d                	j	e88607b8 <VSNScanF+0x4e6>
				jishu=jishu*10+*str-'0';
    e8860818:	24e8160b          	mulaw	a2,a6,a4
				str++;
    e886081c:	0785                	addi	a5,a5,1
				jishu=jishu*10+*str-'0';
    e886081e:	fd06071b          	addiw	a4,a2,-48
				str++;
    e8860822:	bfd1                	j	e88607f6 <VSNScanF+0x524>
				s*=10;
    e8860824:	1287f7d3          	fmul.d	fa5,fa5,fs0
				jishu--;
    e8860828:	367d                	addiw	a2,a2,-1
    e886082a:	bff9                	j	e8860808 <VSNScanF+0x536>
				jishu=jishu*10+*str-'0';
    e886082c:	24e8160b          	mulaw	a2,a6,a4
				str++;
    e8860830:	0785                	addi	a5,a5,1
				jishu=jishu*10+*str-'0';
    e8860832:	fd06071b          	addiw	a4,a2,-48
				str++;
    e8860836:	bf51                	j	e88607ca <VSNScanF+0x4f8>
				s/=10;
    e8860838:	1a87f7d3          	fdiv.d	fa5,fa5,fs0
				jishu--;
    e886083c:	377d                	addiw	a4,a4,-1
    e886083e:	bf71                	j	e88607da <VSNScanF+0x508>
				else if( sizeModifier == 0 )	*( (float *)  p ) = (float) d;
    e8860840:	c00c92e3          	bnez	s9,e8860444 <VSNScanF+0x172>
    e8860844:	4017f7d3          	fcvt.s.d	fa5,fa5
    e8860848:	00f7a027          	fsw	fa5,0(a5)
    e886084c:	bdd5                	j	e8860740 <VSNScanF+0x46e>
				if( sizeModifier != 0 ) goto exit;
    e886084e:	be0c9be3          	bnez	s9,e8860444 <VSNScanF+0x172>
				if( storePtr )
    e8860852:	408987b3          	sub	a5,s3,s0
    e8860856:	c61d                	beqz	a2,e8860884 <VSNScanF+0x5b2>
					if( len > (size_t) fieldWidth )
    e8860858:	0127b4b3          	sltu	s1,a5,s2
    e886085c:	4297990b          	mvnez	s2,a5,s1
					if( suppress ) { src += len; continue; }
    e8860860:	012404b3          	add	s1,s0,s2
    e8860864:	1c0b1f63          	bnez	s6,e8860a42 <VSNScanF+0x770>
					ptrArg = va_arg( inArgs, const unsigned char ** );
    e8860868:	000db783          	ld	a5,0(s11)
					if( ptrArg ) *ptrArg = src;
    e886086c:	c391                	beqz	a5,e8860870 <VSNScanF+0x59e>
    e886086e:	e380                	sd	s0,0(a5)
					sizeArg = va_arg( inArgs, size_t * );
    e8860870:	008db703          	ld	a4,8(s11)
    e8860874:	010d8793          	addi	a5,s11,16
					if( sizeArg ) *sizeArg = len;
    e8860878:	c319                	beqz	a4,e886087e <VSNScanF+0x5ac>
    e886087a:	01273023          	sd	s2,0(a4)
				++matched;
    e886087e:	2a85                	addiw	s5,s5,1
				continue;
    e8860880:	8dbe                	mv	s11,a5
    e8860882:	a2c1                	j	e8860a42 <VSNScanF+0x770>
					if( fieldWidth == INT_MAX )			fieldWidth = 1;
    e8860884:	01791363          	bne	s2,s7,e886088a <VSNScanF+0x5b8>
    e8860888:	4905                	li	s2,1
					if( ( end - src ) < fieldWidth )	goto exit;
    e886088a:	bb27cde3          	blt	a5,s2,e8860444 <VSNScanF+0x172>
					if( suppress )						{ src += fieldWidth; continue; }
    e886088e:	012404b3          	add	s1,s0,s2
    e8860892:	1a0b1863          	bnez	s6,e8860a42 <VSNScanF+0x770>
					s = va_arg( inArgs, unsigned char * );
    e8860896:	000db703          	ld	a4,0(s11)
					if( !s ) goto exit;
    e886089a:	ba0705e3          	beqz	a4,e8860444 <VSNScanF+0x172>
    e886089e:	4781                	li	a5,0
    e88608a0:	2901                	sext.w	s2,s2
					while( fieldWidth-- > 0 ) *s++ = *src++;
    e88608a2:	40f906bb          	subw	a3,s2,a5
    e88608a6:	00d04963          	bgtz	a3,e88608b8 <VSNScanF+0x5e6>
    e88608aa:	7c09390b          	extu	s2,s2,31,0
    e88608ae:	012404b3          	add	s1,s0,s2
					s = va_arg( inArgs, unsigned char * );
    e88608b2:	008d8793          	addi	a5,s11,8
    e88608b6:	b7e1                	j	e886087e <VSNScanF+0x5ac>
					while( fieldWidth-- > 0 ) *s++ = *src++;
    e88608b8:	80f4468b          	lrbu	a3,s0,a5,0
    e88608bc:	00f7568b          	srb	a3,a4,a5,0
    e88608c0:	0785                	addi	a5,a5,1
    e88608c2:	b7c5                	j	e88608a2 <VSNScanF+0x5d0>
				while( ( src < end ) && isspace( *src ) ) ++src;
    e88608c4:	0405                	addi	s0,s0,1
    e88608c6:	b999                	j	e886051c <VSNScanF+0x24a>
					while( ( src < end ) && ( *src != '\0' ) && !isspace( *src ) && ( fieldWidth-- > 0 ) ) ++src;
    e88608c8:	0485                	addi	s1,s1,1
    e88608ca:	1734fc63          	bgeu	s1,s3,e8860a42 <VSNScanF+0x770>
    e88608ce:	0004c503          	lbu	a0,0(s1)
    e88608d2:	16050863          	beqz	a0,e8860a42 <VSNScanF+0x770>
    e88608d6:	b73fd0ef          	jal	ra,e885e448 <isspace>
    e88608da:	16051463          	bnez	a0,e8860a42 <VSNScanF+0x770>
    e88608de:	409907bb          	subw	a5,s2,s1
    e88608e2:	fef043e3          	bgtz	a5,e88608c8 <VSNScanF+0x5f6>
    e88608e6:	aab1                	j	e8860a42 <VSNScanF+0x770>
					while( ( src < end ) && ( *src != '\0' ) && !isspace( *src ) && ( fieldWidth-- > 0 ) ) ++src;
    e88608e8:	0485                	addi	s1,s1,1
    e88608ea:	0134fc63          	bgeu	s1,s3,e8860902 <VSNScanF+0x630>
    e88608ee:	0004c503          	lbu	a0,0(s1)
    e88608f2:	c901                	beqz	a0,e8860902 <VSNScanF+0x630>
    e88608f4:	b55fd0ef          	jal	ra,e885e448 <isspace>
    e88608f8:	e509                	bnez	a0,e8860902 <VSNScanF+0x630>
    e88608fa:	409907bb          	subw	a5,s2,s1
    e88608fe:	fef045e3          	bgtz	a5,e88608e8 <VSNScanF+0x616>
					if( ptrArg ) *ptrArg = old;
    e8860902:	000b0463          	beqz	s6,e886090a <VSNScanF+0x638>
    e8860906:	008b3023          	sd	s0,0(s6)
						sizeArg = va_arg( inArgs, size_t * );
    e886090a:	008db783          	ld	a5,8(s11)
    e886090e:	010d8713          	addi	a4,s11,16
						if( sizeArg ) *sizeArg = (size_t)( src - old );
    e8860912:	c781                	beqz	a5,e886091a <VSNScanF+0x648>
    e8860914:	40848433          	sub	s0,s1,s0
    e8860918:	e380                	sd	s0,0(a5)
					++matched;
    e886091a:	2a85                	addiw	s5,s5,1
    e886091c:	8dba                	mv	s11,a4
    e886091e:	a215                	j	e8860a42 <VSNScanF+0x770>
					if( !s ) goto exit;
    e8860920:	b20b02e3          	beqz	s6,e8860444 <VSNScanF+0x172>
    e8860924:	84a2                	mv	s1,s0
    e8860926:	0124093b          	addw	s2,s0,s2
					while( ( src < end ) && ( *src != '\0' ) && !isspace( *src ) && ( fieldWidth-- > 0 ) ) *s++ = *src++;
    e886092a:	0134fd63          	bgeu	s1,s3,e8860944 <VSNScanF+0x672>
    e886092e:	0004c403          	lbu	s0,0(s1)
    e8860932:	c809                	beqz	s0,e8860944 <VSNScanF+0x672>
    e8860934:	8522                	mv	a0,s0
    e8860936:	b13fd0ef          	jal	ra,e885e448 <isspace>
    e886093a:	e509                	bnez	a0,e8860944 <VSNScanF+0x672>
    e886093c:	409907bb          	subw	a5,s2,s1
    e8860940:	00f04663          	bgtz	a5,e886094c <VSNScanF+0x67a>
					s = va_arg( inArgs, unsigned char * );
    e8860944:	0da1                	addi	s11,s11,8
					*s = '\0';
    e8860946:	000b0023          	sb	zero,0(s6)
					++matched;
    e886094a:	bbe5                	j	e8860742 <VSNScanF+0x470>
					while( ( src < end ) && ( *src != '\0' ) && !isspace( *src ) && ( fieldWidth-- > 0 ) ) *s++ = *src++;
    e886094c:	0485                	addi	s1,s1,1
    e886094e:	181b540b          	sbia	s0,(s6),1,0
    e8860952:	bfe1                	j	e886092a <VSNScanF+0x658>
				if( sizeModifier != 0 ) goto exit;
    e8860954:	ae0c98e3          	bnez	s9,e8860444 <VSNScanF+0x172>
				notSet = ( *fmt == '^' );	// A scanlist starting with ^ matches all characters not in the scanlist.
    e8860958:	0017c683          	lbu	a3,1(a5)
				if( notSet ) ++fmt;
    e886095c:	05e00593          	li	a1,94
		switch( *fmt++ )
    e8860960:	8752                	mv	a4,s4
				if( notSet ) ++fmt;
    e8860962:	00b69463          	bne	a3,a1,e886096a <VSNScanF+0x698>
    e8860966:	00278713          	addi	a4,a5,2
				if( *fmt == ']' ) ++fmt;	// A scanlist (after a potential ^) starting with ] includes ] in the set.
    e886096a:	00074503          	lbu	a0,0(a4)
    e886096e:	05d00593          	li	a1,93
    e8860972:	87ba                	mv	a5,a4
    e8860974:	00b51463          	bne	a0,a1,e886097c <VSNScanF+0x6aa>
    e8860978:	00170793          	addi	a5,a4,1
				while( ( *fmt != '\0' ) && ( *fmt != ']' ) ) ++fmt;
    e886097c:	05d00513          	li	a0,93
    e8860980:	0007c583          	lbu	a1,0(a5)
    e8860984:	ac0580e3          	beqz	a1,e8860444 <VSNScanF+0x172>
    e8860988:	00178a13          	addi	s4,a5,1
    e886098c:	00a59a63          	bne	a1,a0,e88609a0 <VSNScanF+0x6ce>
				if( notSet )
    e8860990:	05e00593          	li	a1,94
    e8860994:	84a2                	mv	s1,s0
    e8860996:	0124093b          	addw	s2,s0,s2
    e886099a:	04b69063          	bne	a3,a1,e88609da <VSNScanF+0x708>
    e886099e:	ac95                	j	e8860c12 <VSNScanF+0x940>
    e88609a0:	87d2                	mv	a5,s4
    e88609a2:	bff9                	j	e8860980 <VSNScanF+0x6ae>
						for( set = setStart; ( set < setEnd ) && ( *set != c ); ++set ) {}
    e88609a4:	0685                	addi	a3,a3,1
    e88609a6:	26f6f563          	bgeu	a3,a5,e8860c10 <VSNScanF+0x93e>
    e88609aa:	0006c503          	lbu	a0,0(a3)
    e88609ae:	feb51be3          	bne	a0,a1,e88609a4 <VSNScanF+0x6d2>
				if( ( old == src ) && !alt ) goto exit;
    e88609b2:	00941463          	bne	s0,s1,e88609ba <VSNScanF+0x6e8>
    e88609b6:	a80d07e3          	beqz	s10,e8860444 <VSNScanF+0x172>
				if( !suppress )
    e88609ba:	080b1463          	bnez	s6,e8860a42 <VSNScanF+0x770>
					if( storePtr )
    e88609be:	000db783          	ld	a5,0(s11)
    e88609c2:	c61d                	beqz	a2,e88609f0 <VSNScanF+0x71e>
						if( ptrArg ) *ptrArg = old;
    e88609c4:	d3b9                	beqz	a5,e886090a <VSNScanF+0x638>
    e88609c6:	e380                	sd	s0,0(a5)
    e88609c8:	b789                	j	e886090a <VSNScanF+0x638>
						for( set = setStart; ( set < setEnd ) && ( *set != c ); ++set ) {}
    e88609ca:	0685                	addi	a3,a3,1
    e88609cc:	fef6f3e3          	bgeu	a3,a5,e88609b2 <VSNScanF+0x6e0>
    e88609d0:	0006c503          	lbu	a0,0(a3)
    e88609d4:	feb51be3          	bne	a0,a1,e88609ca <VSNScanF+0x6f8>
						++src;
    e88609d8:	0485                	addi	s1,s1,1
					while( ( src < end ) && ( *src != '\0' ) && ( fieldWidth-- > 0 ) )
    e88609da:	fd34fce3          	bgeu	s1,s3,e88609b2 <VSNScanF+0x6e0>
    e88609de:	0004c583          	lbu	a1,0(s1)
    e88609e2:	d9e1                	beqz	a1,e88609b2 <VSNScanF+0x6e0>
    e88609e4:	409906bb          	subw	a3,s2,s1
    e88609e8:	fcd055e3          	blez	a3,e88609b2 <VSNScanF+0x6e0>
						for( set = setStart; ( set < setEnd ) && ( *set != c ); ++set ) {}
    e88609ec:	86ba                	mv	a3,a4
    e88609ee:	bff9                	j	e88609cc <VSNScanF+0x6fa>
						if( !s ) goto exit;
    e88609f0:	a4078ae3          	beqz	a5,e8860444 <VSNScanF+0x172>
						while( old < src ) *s++ = *old++;
    e88609f4:	00946763          	bltu	s0,s1,e8860a02 <VSNScanF+0x730>
						s = va_arg( inArgs, unsigned char * );
    e88609f8:	008d8713          	addi	a4,s11,8
						*s = '\0';
    e88609fc:	00078023          	sb	zero,0(a5)
    e8860a00:	bf29                	j	e886091a <VSNScanF+0x648>
						while( old < src ) *s++ = *old++;
    e8860a02:	9814470b          	lbuia	a4,(s0),1,0
    e8860a06:	1817d70b          	sbia	a4,(a5),1,0
    e8860a0a:	b7ed                	j	e88609f4 <VSNScanF+0x722>
				if( sizeModifier != 0 )		goto exit;
    e8860a0c:	019b6b33          	or	s6,s6,s9
    e8860a10:	a20b1ae3          	bnez	s6,e8860444 <VSNScanF+0x172>
				if( fieldWidth != INT_MAX ) goto exit;
    e8860a14:	a37918e3          	bne	s2,s7,e8860444 <VSNScanF+0x172>
				if( src >= end )			goto exit;
    e8860a18:	a33476e3          	bgeu	s0,s3,e8860444 <VSNScanF+0x172>
				if( *src++ != '%' )			goto exit;
    e8860a1c:	00044783          	lbu	a5,0(s0)
    e8860a20:	a2e792e3          	bne	a5,a4,e8860444 <VSNScanF+0x172>
    e8860a24:	ba99                	j	e886037a <VSNScanF+0xa8>
				if( sizeModifier != 0 )		goto exit;
    e8860a26:	019b6b33          	or	s6,s6,s9
    e8860a2a:	a00b1de3          	bnez	s6,e8860444 <VSNScanF+0x172>
				if( fieldWidth != INT_MAX )	goto exit;
    e8860a2e:	a1791be3          	bne	s2,s7,e8860444 <VSNScanF+0x172>
				if( alt )
    e8860a32:	788dc78b          	ldia	a5,(s11),8,0
    e8860a36:	000d0863          	beqz	s10,e8860a46 <VSNScanF+0x774>
					if( !ptrArg ) goto exit;
    e8860a3a:	a00785e3          	beqz	a5,e8860444 <VSNScanF+0x172>
					*ptrArg = src;
    e8860a3e:	e380                	sd	s0,0(a5)
				if( suppress )
    e8860a40:	84a2                	mv	s1,s0
    e8860a42:	8426                	mv	s0,s1
    e8860a44:	b8dd                	j	e886033a <VSNScanF+0x68>
					if( !i ) goto exit;
    e8860a46:	9e078fe3          	beqz	a5,e8860444 <VSNScanF+0x172>
					*i = (int)( src - ( (const unsigned char *) inStr ) );
    e8860a4a:	41840733          	sub	a4,s0,s8
    e8860a4e:	c398                	sw	a4,0(a5)
    e8860a50:	bfc5                	j	e8860a40 <VSNScanF+0x76e>
		while( ( src < end ) && isspace( *src ) ) ++src;
    e8860a52:	0405                	addi	s0,s0,1
    e8860a54:	bced                	j	e886054e <VSNScanF+0x27c>
				base = 8;
    e8860a56:	4d21                	li	s10,8
    e8860a58:	bcdd                	j	e886054e <VSNScanF+0x27c>
				base = 10;
    e8860a5a:	4d29                	li	s10,10
    e8860a5c:	bccd                	j	e886054e <VSNScanF+0x27c>
				base = 16;
    e8860a5e:	4d41                	li	s10,16
    e8860a60:	b4fd                	j	e886054e <VSNScanF+0x27c>
			else if( src[ 0 ] == '+' )
    e8860a62:	02b00693          	li	a3,43
    e8860a66:	b0d79ee3          	bne	a5,a3,e8860582 <VSNScanF+0x2b0>
				++src;
    e8860a6a:	0405                	addi	s0,s0,1
				--fieldWidth;
    e8860a6c:	397d                	addiw	s2,s2,-1
    e8860a6e:	be11                	j	e8860582 <VSNScanF+0x2b0>
				( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) && isxdigit( src[ 2 ] ) )
    e8860a70:	07800793          	li	a5,120
    e8860a74:	b691                	j	e88605b8 <VSNScanF+0x2e6>
					 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'b' ) && 
    e8860a76:	fbf4879b          	addiw	a5,s1,-65
			else if( ( ( end - src ) > 2 ) && ( fieldWidth >= 2 ) && 
    e8860a7a:	0ff7f793          	andi	a5,a5,255
    e8860a7e:	4765                	li	a4,25
    e8860a80:	02f76463          	bltu	a4,a5,e8860aa8 <VSNScanF+0x7d6>
					 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'b' ) && 
    e8860a84:	04200793          	li	a5,66
    e8860a88:	02f49d63          	bne	s1,a5,e8860ac2 <VSNScanF+0x7f0>
					 ( ( src[ 2 ] == '0' ) || ( src[ 2 ] == '1' ) ) )
    e8860a8c:	00244783          	lbu	a5,2(s0)
					 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'b' ) && 
    e8860a90:	4705                	li	a4,1
					 ( ( src[ 2 ] == '0' ) || ( src[ 2 ] == '1' ) ) )
    e8860a92:	fd07879b          	addiw	a5,a5,-48
					 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'b' ) && 
    e8860a96:	0ff7f793          	andi	a5,a5,255
    e8860a9a:	02f76463          	bltu	a4,a5,e8860ac2 <VSNScanF+0x7f0>
				src			+= 2;
    e8860a9e:	00240493          	addi	s1,s0,2
				fieldWidth	-= 2;
    e8860aa2:	3979                	addiw	s2,s2,-2
				base		 = 2;
    e8860aa4:	4d09                	li	s10,2
				fieldWidth	-= 2;
    e8860aa6:	b62d                	j	e88605d0 <VSNScanF+0x2fe>
					 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'b' ) && 
    e8860aa8:	06200793          	li	a5,98
    e8860aac:	bff1                	j	e8860a88 <VSNScanF+0x7b6>
			else if( ( ( end - src ) > 1 ) && ( fieldWidth >= 1 ) && 
    e8860aae:	0cf71263          	bne	a4,a5,e8860b72 <VSNScanF+0x8a0>
    e8860ab2:	0c090063          	beqz	s2,e8860b72 <VSNScanF+0x8a0>
    e8860ab6:	00044703          	lbu	a4,0(s0)
    e8860aba:	03000793          	li	a5,48
    e8860abe:	0af71a63          	bne	a4,a5,e8860b72 <VSNScanF+0x8a0>
					 ( src[ 0 ] == '0' ) && ( src[ 1 ] >= '0' ) && ( src[ 1 ] <= '7' ) )
    e8860ac2:	00144783          	lbu	a5,1(s0)
    e8860ac6:	471d                	li	a4,7
    e8860ac8:	fd07879b          	addiw	a5,a5,-48
    e8860acc:	0ff7f793          	andi	a5,a5,255
    e8860ad0:	0af76163          	bltu	a4,a5,e8860b72 <VSNScanF+0x8a0>
				src			+= 1;
    e8860ad4:	00140493          	addi	s1,s0,1
				fieldWidth	-= 1;
    e8860ad8:	397d                	addiw	s2,s2,-1
				base		 = 8;
    e8860ada:	4d21                	li	s10,8
				fieldWidth	-= 1;
    e8860adc:	bcd5                	j	e88605d0 <VSNScanF+0x2fe>
		else if( ( base == 16 ) && ( ( end - src ) >= 2 ) && ( fieldWidth >= 2 ) && 
    e8860ade:	47c1                	li	a5,16
    e8860ae0:	04fd1463          	bne	s10,a5,e8860b28 <VSNScanF+0x856>
    e8860ae4:	408987b3          	sub	a5,s3,s0
    e8860ae8:	4685                	li	a3,1
    e8860aea:	84a2                	mv	s1,s0
    e8860aec:	aef6d2e3          	bge	a3,a5,e88605d0 <VSNScanF+0x2fe>
    e8860af0:	af26d0e3          	bge	a3,s2,e88605d0 <VSNScanF+0x2fe>
    e8860af4:	00044683          	lbu	a3,0(s0)
    e8860af8:	03000793          	li	a5,48
    e8860afc:	acf69ae3          	bne	a3,a5,e88605d0 <VSNScanF+0x2fe>
				 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) )
    e8860b00:	00144783          	lbu	a5,1(s0)
		else if( ( base == 16 ) && ( ( end - src ) >= 2 ) && ( fieldWidth >= 2 ) && 
    e8860b04:	4665                	li	a2,25
				 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) )
    e8860b06:	fbf7869b          	addiw	a3,a5,-65
		else if( ( base == 16 ) && ( ( end - src ) >= 2 ) && ( fieldWidth >= 2 ) && 
    e8860b0a:	0ff6f693          	andi	a3,a3,255
    e8860b0e:	00d66a63          	bltu	a2,a3,e8860b22 <VSNScanF+0x850>
				 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) )
    e8860b12:	05800693          	li	a3,88
    e8860b16:	aad79de3          	bne	a5,a3,e88605d0 <VSNScanF+0x2fe>
			src			+= 2;
    e8860b1a:	00240493          	addi	s1,s0,2
			fieldWidth	-= 2;
    e8860b1e:	3979                	addiw	s2,s2,-2
    e8860b20:	bc45                	j	e88605d0 <VSNScanF+0x2fe>
				 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'x' ) )
    e8860b22:	07800693          	li	a3,120
    e8860b26:	bfc5                	j	e8860b16 <VSNScanF+0x844>
		else if( ( base == 2 ) && ( ( end - src ) >= 2 ) && ( fieldWidth >= 2 ) && 
    e8860b28:	4789                	li	a5,2
    e8860b2a:	84a2                	mv	s1,s0
    e8860b2c:	aafd12e3          	bne	s10,a5,e88605d0 <VSNScanF+0x2fe>
    e8860b30:	408987b3          	sub	a5,s3,s0
    e8860b34:	4685                	li	a3,1
    e8860b36:	a8f6dde3          	bge	a3,a5,e88605d0 <VSNScanF+0x2fe>
    e8860b3a:	a926dbe3          	bge	a3,s2,e88605d0 <VSNScanF+0x2fe>
    e8860b3e:	00044683          	lbu	a3,0(s0)
    e8860b42:	03000793          	li	a5,48
    e8860b46:	a8f695e3          	bne	a3,a5,e88605d0 <VSNScanF+0x2fe>
				 ( src[ 0 ] == '0' ) && ( tolower( src[ 1 ] ) == 'b' ) )
    e8860b4a:	00144783          	lbu	a5,1(s0)
    e8860b4e:	4665                	li	a2,25
    e8860b50:	fbf7869b          	addiw	a3,a5,-65
    e8860b54:	0ff6f693          	andi	a3,a3,255
    e8860b58:	00d66a63          	bltu	a2,a3,e8860b6c <VSNScanF+0x89a>
    e8860b5c:	fbe78793          	addi	a5,a5,-66
    e8860b60:	0017b793          	seqz	a5,a5
    e8860b64:	84a2                	mv	s1,s0
    e8860b66:	a60785e3          	beqz	a5,e88605d0 <VSNScanF+0x2fe>
    e8860b6a:	bf45                	j	e8860b1a <VSNScanF+0x848>
    e8860b6c:	f9e78793          	addi	a5,a5,-98
    e8860b70:	bfc5                	j	e8860b60 <VSNScanF+0x88e>
    e8860b72:	84a2                	mv	s1,s0
				base = 10;
    e8860b74:	4d29                	li	s10,10
    e8860b76:	bca9                	j	e88605d0 <VSNScanF+0x2fe>
			c = *src;
    e8860b78:	0004c683          	lbu	a3,0(s1)
			if(      isdigit(  c ) ) v = c - '0';
    e8860b7c:	fd06861b          	addiw	a2,a3,-48
    e8860b80:	0ff67613          	andi	a2,a2,255
    e8860b84:	8936                	mv	s2,a3
    e8860b86:	00c86b63          	bltu	a6,a2,e8860b9c <VSNScanF+0x8ca>
    e8860b8a:	fd06891b          	addiw	s2,a3,-48
			if( v >= base ) break;
    e8860b8e:	a5a95be3          	bge	s2,s10,e88605e4 <VSNScanF+0x312>
			x = ( x * base ) + v;
    e8860b92:	20fd190b          	mula	s2,s10,a5
			++src;
    e8860b96:	0485                	addi	s1,s1,1
			x = ( x * base ) + v;
    e8860b98:	87ca                	mv	a5,s2
			++src;
    e8860b9a:	bc3d                	j	e88605d8 <VSNScanF+0x306>
			else if( isxdigit( c ) ) v = 10 + ( tolower( c ) - 'a' );
    e8860b9c:	8536                	mv	a0,a3
    e8860b9e:	e43e                	sd	a5,8(sp)
    e8860ba0:	ec2e                	sd	a1,24(sp)
    e8860ba2:	e836                	sd	a3,16(sp)
    e8860ba4:	a83fd0ef          	jal	ra,e885e626 <isxdigit>
    e8860ba8:	67a2                	ld	a5,8(sp)
    e8860baa:	a2050de3          	beqz	a0,e88605e4 <VSNScanF+0x312>
    e8860bae:	66c2                	ld	a3,16(sp)
    e8860bb0:	48e5                	li	a7,25
    e8860bb2:	65e2                	ld	a1,24(sp)
    e8860bb4:	fbf6869b          	addiw	a3,a3,-65
    e8860bb8:	0ff6f693          	andi	a3,a3,255
    e8860bbc:	4825                	li	a6,9
    e8860bbe:	00d8e563          	bltu	a7,a3,e8860bc8 <VSNScanF+0x8f6>
    e8860bc2:	fc99091b          	addiw	s2,s2,-55
    e8860bc6:	b7e1                	j	e8860b8e <VSNScanF+0x8bc>
    e8860bc8:	fa99091b          	addiw	s2,s2,-87
    e8860bcc:	b7c9                	j	e8860b8e <VSNScanF+0x8bc>
		switch( sizeModifier )
    e8860bce:	04c00693          	li	a3,76
    e8860bd2:	02dc8363          	beq	s9,a3,e8860bf8 <VSNScanF+0x926>
    e8860bd6:	06800693          	li	a3,104
    e8860bda:	86dc95e3          	bne	s9,a3,e8860444 <VSNScanF+0x172>
			case 'h': *( (short     *) p ) = (short)				x; break;
    e8860bde:	00f71023          	sh	a5,0(a4)
    e8860be2:	b685                	j	e8860742 <VSNScanF+0x470>
		switch( sizeModifier )
    e8860be4:	07000693          	li	a3,112
    e8860be8:	00dc8863          	beq	s9,a3,e8860bf8 <VSNScanF+0x926>
    e8860bec:	0196c863          	blt	a3,s9,e8860bfc <VSNScanF+0x92a>
    e8860bf0:	06c00693          	li	a3,108
    e8860bf4:	84dc98e3          	bne	s9,a3,e8860444 <VSNScanF+0x172>
			case 'p': *( (void     **) p ) = (void *)( (uintptr_t)	x ); break;
    e8860bf8:	e31c                	sd	a5,0(a4)
    e8860bfa:	b6a1                	j	e8860742 <VSNScanF+0x470>
		switch( sizeModifier )
    e8860bfc:	07400693          	li	a3,116
    e8860c00:	fedc8ce3          	beq	s9,a3,e8860bf8 <VSNScanF+0x926>
    e8860c04:	07a00693          	li	a3,122
    e8860c08:	b7f5                	j	e8860bf4 <VSNScanF+0x922>
			case 'H': *( (char      *) p ) = (char)					x; break;
    e8860c0a:	00f70023          	sb	a5,0(a4)
    e8860c0e:	be15                	j	e8860742 <VSNScanF+0x470>
						++src;
    e8860c10:	0485                	addi	s1,s1,1
					while( ( src < end ) && ( *src != '\0' ) && ( fieldWidth-- > 0 ) )
    e8860c12:	db34f0e3          	bgeu	s1,s3,e88609b2 <VSNScanF+0x6e0>
    e8860c16:	0004c583          	lbu	a1,0(s1)
    e8860c1a:	d8058ce3          	beqz	a1,e88609b2 <VSNScanF+0x6e0>
    e8860c1e:	409906bb          	subw	a3,s2,s1
    e8860c22:	d8d058e3          	blez	a3,e88609b2 <VSNScanF+0x6e0>
						for( set = setStart; ( set < setEnd ) && ( *set != c ); ++set ) {}
    e8860c26:	86ba                	mv	a3,a4
    e8860c28:	bbbd                	j	e88609a6 <VSNScanF+0x6d4>
				if( !alt && ( ( src >= end ) || ( *src == '\0' ) ) ) goto exit;
    e8860c2a:	800d0de3          	beqz	s10,e8860444 <VSNScanF+0x172>
				if( suppress )
    e8860c2e:	e00b19e3          	bnez	s6,e8860a40 <VSNScanF+0x76e>
				else if( storePtr )
    e8860c32:	000dbb03          	ld	s6,0(s11)
    e8860c36:	ce0605e3          	beqz	a2,e8860920 <VSNScanF+0x64e>
    e8860c3a:	84a2                	mv	s1,s0
    e8860c3c:	0124093b          	addw	s2,s0,s2
    e8860c40:	b16d                	j	e88608ea <VSNScanF+0x618>

00000000e8860c42 <SNScanF>:
{
    e8860c42:	715d                	addi	sp,sp,-80
    e8860c44:	f436                	sd	a3,40(sp)
	va_start( args, inFormat );
    e8860c46:	1034                	addi	a3,sp,40
{
    e8860c48:	ec06                	sd	ra,24(sp)
    e8860c4a:	fef1570b          	sdd	a4,a5,(sp),3,4
    e8860c4e:	e0c2                	sd	a6,64(sp)
    e8860c50:	e4c6                	sd	a7,72(sp)
	va_start( args, inFormat );
    e8860c52:	e436                	sd	a3,8(sp)
	n = VSNScanF( inString, inSize, inFormat, args );
    e8860c54:	e7eff0ef          	jal	ra,e88602d2 <VSNScanF>
}
    e8860c58:	60e2                	ld	ra,24(sp)
    e8860c5a:	6161                	addi	sp,sp,80
    e8860c5c:	8082                	ret

00000000e8860c5e <TLV8GetNext>:
	size_t				len;
	const uint8_t *		next;
	
	// TLV8's have the following format: <1:type> <1:length> <length:data>
	
	require_action_quiet( inSrc != inEnd, exit, err = kNotFoundErr );
    e8860c5e:	04b50363          	beq	a0,a1,e8860ca4 <TLV8GetNext+0x46>
	require_action_quiet( inSrc < inEnd, exit, err = kParamErr );
    e8860c62:	02b57d63          	bgeu	a0,a1,e8860c9c <TLV8GetNext+0x3e>
	len = (size_t)( inEnd - inSrc );
	require_action_quiet( len >= 2, exit, err = kNotFoundErr );
    e8860c66:	fff58813          	addi	a6,a1,-1
    e8860c6a:	02a80d63          	beq	a6,a0,e8860ca4 <TLV8GetNext+0x46>
	
	ptr  = inSrc + 2;
	len  = inSrc[ 1 ];
    e8860c6e:	00154303          	lbu	t1,1(a0)
	ptr  = inSrc + 2;
    e8860c72:	00250893          	addi	a7,a0,2
	next = ptr + len;
    e8860c76:	00688833          	add	a6,a7,t1
	require_action_quiet( ( next >= ptr ) && ( next <= inEnd ), exit, err = kUnderrunErr );
    e8860c7a:	03186963          	bltu	a6,a7,e8860cac <TLV8GetNext+0x4e>
    e8860c7e:	0305e763          	bltu	a1,a6,e8860cac <TLV8GetNext+0x4e>
	
	*outType = inSrc[ 0 ];
    e8860c82:	00054583          	lbu	a1,0(a0)
	*outPtr  = ptr;
	*outLen  = len;
	if( outNext ) *outNext = next;
	err = kNoErr;
    e8860c86:	4501                	li	a0,0
	*outType = inSrc[ 0 ];
    e8860c88:	00b60023          	sb	a1,0(a2)
	*outPtr  = ptr;
    e8860c8c:	0116b023          	sd	a7,0(a3)
	*outLen  = len;
    e8860c90:	00673023          	sd	t1,0(a4)
	if( outNext ) *outNext = next;
    e8860c94:	cf99                	beqz	a5,e8860cb2 <TLV8GetNext+0x54>
    e8860c96:	0107b023          	sd	a6,0(a5)
    e8860c9a:	8082                	ret
	require_action_quiet( inSrc < inEnd, exit, err = kParamErr );
    e8860c9c:	7579                	lui	a0,0xffffe
    e8860c9e:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8860ca2:	8082                	ret
	require_action_quiet( inSrc != inEnd, exit, err = kNotFoundErr );
    e8860ca4:	7579                	lui	a0,0xffffe
    e8860ca6:	5b950513          	addi	a0,a0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e8860caa:	8082                	ret
	require_action_quiet( ( next >= ptr ) && ( next <= inEnd ), exit, err = kUnderrunErr );
    e8860cac:	7579                	lui	a0,0xffffe
    e8860cae:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
	
exit:
	return( err );
}
    e8860cb2:	8082                	ret

00000000e8860cb4 <TLV8Get>:
{
    e8860cb4:	711d                	addi	sp,sp,-96
    e8860cb6:	e8a2                	sd	s0,80(sp)
    e8860cb8:	e4a6                	sd	s1,72(sp)
    e8860cba:	e0ca                	sd	s2,64(sp)
    e8860cbc:	fc4e                	sd	s3,56(sp)
    e8860cbe:	f852                	sd	s4,48(sp)
    e8860cc0:	ec86                	sd	ra,88(sp)
    e8860cc2:	e42a                	sd	a0,8(sp)
    e8860cc4:	89ae                	mv	s3,a1
    e8860cc6:	8a32                	mv	s4,a2
    e8860cc8:	8436                	mv	s0,a3
    e8860cca:	84ba                	mv	s1,a4
    e8860ccc:	893e                	mv	s2,a5
	while( ( err = TLV8GetNext( inSrc, inEnd, &type, &ptr, &len, &inSrc ) ) == kNoErr )
    e8860cce:	6522                	ld	a0,8(sp)
    e8860cd0:	003c                	addi	a5,sp,8
    e8860cd2:	1038                	addi	a4,sp,40
    e8860cd4:	1014                	addi	a3,sp,32
    e8860cd6:	01f10613          	addi	a2,sp,31
    e8860cda:	85ce                	mv	a1,s3
    e8860cdc:	f83ff0ef          	jal	ra,e8860c5e <TLV8GetNext>
    e8860ce0:	e105                	bnez	a0,e8860d00 <TLV8Get+0x4c>
		if( type == inType )
    e8860ce2:	01f14783          	lbu	a5,31(sp)
    e8860ce6:	ff4794e3          	bne	a5,s4,e8860cce <TLV8Get+0x1a>
			if( outPtr )  *outPtr  = ptr;
    e8860cea:	c019                	beqz	s0,e8860cf0 <TLV8Get+0x3c>
    e8860cec:	7782                	ld	a5,32(sp)
    e8860cee:	e01c                	sd	a5,0(s0)
			if( outLen )  *outLen  = len;
    e8860cf0:	c099                	beqz	s1,e8860cf6 <TLV8Get+0x42>
    e8860cf2:	77a2                	ld	a5,40(sp)
    e8860cf4:	e09c                	sd	a5,0(s1)
			if( outNext ) *outNext = inSrc;
    e8860cf6:	00090563          	beqz	s2,e8860d00 <TLV8Get+0x4c>
    e8860cfa:	67a2                	ld	a5,8(sp)
    e8860cfc:	00f93023          	sd	a5,0(s2)
}
    e8860d00:	60e6                	ld	ra,88(sp)
    e8860d02:	6446                	ld	s0,80(sp)
    e8860d04:	64a6                	ld	s1,72(sp)
    e8860d06:	6906                	ld	s2,64(sp)
    e8860d08:	79e2                	ld	s3,56(sp)
    e8860d0a:	7a42                	ld	s4,48(sp)
    e8860d0c:	6125                	addi	sp,sp,96
    e8860d0e:	8082                	ret

00000000e8860d10 <TLV8GetUInt64>:
{
    e8860d10:	1101                	addi	sp,sp,-32
	err = TLV8Get( inSrc, inEnd, inType, &ptr, &len, outNext );
    e8860d12:	87ba                	mv	a5,a4
{
    e8860d14:	e822                	sd	s0,16(sp)
	err = TLV8Get( inSrc, inEnd, inType, &ptr, &len, outNext );
    e8860d16:	0038                	addi	a4,sp,8
{
    e8860d18:	8436                	mv	s0,a3
	err = TLV8Get( inSrc, inEnd, inType, &ptr, &len, outNext );
    e8860d1a:	868a                	mv	a3,sp
{
    e8860d1c:	ec06                	sd	ra,24(sp)
	err = TLV8Get( inSrc, inEnd, inType, &ptr, &len, outNext );
    e8860d1e:	f97ff0ef          	jal	ra,e8860cb4 <TLV8Get>
	uint64_t			x = 0;
    e8860d22:	4781                	li	a5,0
	require_noerr_quiet( err, exit );
    e8860d24:	e901                	bnez	a0,e8860d34 <TLV8GetUInt64+0x24>
	if(      len == 1 ) x = *ptr;
    e8860d26:	67a2                	ld	a5,8(sp)
    e8860d28:	4705                	li	a4,1
    e8860d2a:	00e79c63          	bne	a5,a4,e8860d42 <TLV8GetUInt64+0x32>
    e8860d2e:	6782                	ld	a5,0(sp)
    e8860d30:	0007c783          	lbu	a5,0(a5)
	if( outErr ) *outErr = err;
    e8860d34:	c011                	beqz	s0,e8860d38 <TLV8GetUInt64+0x28>
    e8860d36:	c008                	sw	a0,0(s0)
}
    e8860d38:	60e2                	ld	ra,24(sp)
    e8860d3a:	6442                	ld	s0,16(sp)
    e8860d3c:	853e                	mv	a0,a5
    e8860d3e:	6105                	addi	sp,sp,32
    e8860d40:	8082                	ret
	else if( len == 2 ) x = ReadLittle16( ptr );
    e8860d42:	4709                	li	a4,2
    e8860d44:	00e79b63          	bne	a5,a4,e8860d5a <TLV8GetUInt64+0x4a>
    e8860d48:	6702                	ld	a4,0(sp)
    e8860d4a:	00174783          	lbu	a5,1(a4)
    e8860d4e:	00074703          	lbu	a4,0(a4)
    e8860d52:	0087979b          	slliw	a5,a5,0x8
    e8860d56:	8fd9                	or	a5,a5,a4
    e8860d58:	bff1                	j	e8860d34 <TLV8GetUInt64+0x24>
	else if( len == 4 ) x = ReadLittle32( ptr );
    e8860d5a:	4711                	li	a4,4
    e8860d5c:	00e79663          	bne	a5,a4,e8860d68 <TLV8GetUInt64+0x58>
    e8860d60:	6782                	ld	a5,0(sp)
    e8860d62:	0007e783          	lwu	a5,0(a5)
    e8860d66:	b7f9                	j	e8860d34 <TLV8GetUInt64+0x24>
	else if( len == 8 ) x = ReadLittle64( ptr );
    e8860d68:	4721                	li	a4,8
    e8860d6a:	00e79563          	bne	a5,a4,e8860d74 <TLV8GetUInt64+0x64>
    e8860d6e:	6782                	ld	a5,0(sp)
    e8860d70:	639c                	ld	a5,0(a5)
    e8860d72:	b7c9                	j	e8860d34 <TLV8GetUInt64+0x24>
	else { err = kSizeErr; goto exit; }
    e8860d74:	7579                	lui	a0,0xffffe
    e8860d76:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
	uint64_t			x = 0;
    e8860d7a:	4781                	li	a5,0
    e8860d7c:	bf65                	j	e8860d34 <TLV8GetUInt64+0x24>

00000000e8860d7e <TLV8GetBytes>:
{
    e8860d7e:	7119                	addi	sp,sp,-128
    e8860d80:	f8a2                	sd	s0,112(sp)
    e8860d82:	f0ca                	sd	s2,96(sp)
    e8860d84:	e4d6                	sd	s5,72(sp)
    e8860d86:	e0da                	sd	s6,64(sp)
    e8860d88:	8ab6                	mv	s5,a3
	const uint8_t * const		lim = buf + inMaxLen;
    e8860d8a:	00e78b33          	add	s6,a5,a4
{
    e8860d8e:	843a                	mv	s0,a4
    e8860d90:	893e                	mv	s2,a5
	err = TLV8Get( inSrc, inEnd, inType, &ptr, &len, &inSrc );
    e8860d92:	1038                	addi	a4,sp,40
    e8860d94:	003c                	addi	a5,sp,8
    e8860d96:	1014                	addi	a3,sp,32
{
    e8860d98:	f4a6                	sd	s1,104(sp)
    e8860d9a:	ecce                	sd	s3,88(sp)
    e8860d9c:	e8d2                	sd	s4,80(sp)
    e8860d9e:	fc5e                	sd	s7,56(sp)
    e8860da0:	f862                	sd	s8,48(sp)
    e8860da2:	fc86                	sd	ra,120(sp)
    e8860da4:	e42a                	sd	a0,8(sp)
    e8860da6:	8bae                	mv	s7,a1
    e8860da8:	8c32                	mv	s8,a2
    e8860daa:	8a42                	mv	s4,a6
    e8860dac:	89c6                	mv	s3,a7
	err = TLV8Get( inSrc, inEnd, inType, &ptr, &len, &inSrc );
    e8860dae:	f07ff0ef          	jal	ra,e8860cb4 <TLV8Get>
    e8860db2:	84aa                	mv	s1,a0
	require_noerr_quiet( err, exit );
    e8860db4:	e519                	bnez	a0,e8860dc2 <TLV8GetBytes+0x44>
	require_action_quiet( len <= ( (size_t)( lim - dst ) ), exit, err = kOverrunErr );
    e8860db6:	7622                	ld	a2,40(sp)
    e8860db8:	02c47263          	bgeu	s0,a2,e8860ddc <TLV8GetBytes+0x5e>
    e8860dbc:	74f9                	lui	s1,0xffffe
    e8860dbe:	5a148493          	addi	s1,s1,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
}
    e8860dc2:	70e6                	ld	ra,120(sp)
    e8860dc4:	7446                	ld	s0,112(sp)
    e8860dc6:	8526                	mv	a0,s1
    e8860dc8:	7906                	ld	s2,96(sp)
    e8860dca:	74a6                	ld	s1,104(sp)
    e8860dcc:	69e6                	ld	s3,88(sp)
    e8860dce:	6a46                	ld	s4,80(sp)
    e8860dd0:	6aa6                	ld	s5,72(sp)
    e8860dd2:	6b06                	ld	s6,64(sp)
    e8860dd4:	7be2                	ld	s7,56(sp)
    e8860dd6:	7c42                	ld	s8,48(sp)
    e8860dd8:	6109                	addi	sp,sp,128
    e8860dda:	8082                	ret
	memcpy( dst, ptr, len );
    e8860ddc:	7582                	ld	a1,32(sp)
    e8860dde:	854a                	mv	a0,s2
    e8860de0:	5c01b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	dst += len;
    e8860de4:	7422                	ld	s0,40(sp)
    e8860de6:	944a                	add	s0,s0,s2
		err = TLV8GetNext( inSrc, inEnd, &type, &ptr, &len, &src2 );
    e8860de8:	6522                	ld	a0,8(sp)
    e8860dea:	083c                	addi	a5,sp,24
    e8860dec:	1038                	addi	a4,sp,40
    e8860dee:	1014                	addi	a3,sp,32
    e8860df0:	01710613          	addi	a2,sp,23
    e8860df4:	85de                	mv	a1,s7
    e8860df6:	e69ff0ef          	jal	ra,e8860c5e <TLV8GetNext>
		if( err ) break;
    e8860dfa:	e505                	bnez	a0,e8860e22 <TLV8GetBytes+0xa4>
		if( type != inType ) break;
    e8860dfc:	01714783          	lbu	a5,23(sp)
    e8860e00:	03879163          	bne	a5,s8,e8860e22 <TLV8GetBytes+0xa4>
		inSrc = src2;
    e8860e04:	67e2                	ld	a5,24(sp)
		if( len == 0 ) continue;
    e8860e06:	7622                	ld	a2,40(sp)
		inSrc = src2;
    e8860e08:	e43e                	sd	a5,8(sp)
		if( len == 0 ) continue;
    e8860e0a:	de79                	beqz	a2,e8860de8 <TLV8GetBytes+0x6a>
		require_action_quiet( len <= ( (size_t)( lim - dst ) ), exit, err = kOverrunErr );
    e8860e0c:	408b07b3          	sub	a5,s6,s0
    e8860e10:	fac7e6e3          	bltu	a5,a2,e8860dbc <TLV8GetBytes+0x3e>
		memcpy( dst, ptr, len );
    e8860e14:	7582                	ld	a1,32(sp)
    e8860e16:	8522                	mv	a0,s0
    e8860e18:	5881b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		dst += len;
    e8860e1c:	77a2                	ld	a5,40(sp)
    e8860e1e:	943e                	add	s0,s0,a5
    e8860e20:	b7e1                	j	e8860de8 <TLV8GetBytes+0x6a>
	len = (size_t)( dst - buf );
    e8860e22:	41240433          	sub	s0,s0,s2
	require_action_quiet( len >= inMinLen, exit, err = kUnderrunErr );
    e8860e26:	01546c63          	bltu	s0,s5,e8860e3e <TLV8GetBytes+0xc0>
	if( outLen )	*outLen  = len;
    e8860e2a:	000a0463          	beqz	s4,e8860e32 <TLV8GetBytes+0xb4>
    e8860e2e:	008a3023          	sd	s0,0(s4)
	if( outNext )	*outNext = inSrc;
    e8860e32:	f80988e3          	beqz	s3,e8860dc2 <TLV8GetBytes+0x44>
    e8860e36:	67a2                	ld	a5,8(sp)
    e8860e38:	00f9b023          	sd	a5,0(s3)
    e8860e3c:	b759                	j	e8860dc2 <TLV8GetBytes+0x44>
	require_action_quiet( len >= inMinLen, exit, err = kUnderrunErr );
    e8860e3e:	74f9                	lui	s1,0xffffe
    e8860e40:	5a248493          	addi	s1,s1,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
    e8860e44:	bfbd                	j	e8860dc2 <TLV8GetBytes+0x44>

00000000e8860e46 <TLV8GetOrCopyCoalesced>:
		uint8_t				inType, 
		const uint8_t **	outPtr, 
		size_t *			outLen, 
		uint8_t **			outStorage, 
		const uint8_t **	outNext )
{
    e8860e46:	7135                	addi	sp,sp,-160
    e8860e48:	ecde                	sd	s7,88(sp)
    e8860e4a:	e8e2                	sd	s8,80(sp)
    e8860e4c:	e4e6                	sd	s9,72(sp)
    e8860e4e:	8c3a                	mv	s8,a4
    e8860e50:	8cb6                	mv	s9,a3
    e8860e52:	8bbe                	mv	s7,a5
	uint8_t				type;
	const uint8_t *		src2;
	uint8_t *			tempPtr;
	size_t				tempLen;
	
	err = TLV8Get( inSrc, inEnd, inType, &ptr, &len, &inSrc );
    e8860e54:	1018                	addi	a4,sp,32
    e8860e56:	003c                	addi	a5,sp,8
    e8860e58:	0834                	addi	a3,sp,24
{
    e8860e5a:	e922                	sd	s0,144(sp)
    e8860e5c:	f0da                	sd	s6,96(sp)
    e8860e5e:	e0ea                	sd	s10,64(sp)
    e8860e60:	fc6e                	sd	s11,56(sp)
    e8860e62:	ed06                	sd	ra,152(sp)
    e8860e64:	e526                	sd	s1,136(sp)
    e8860e66:	e14a                	sd	s2,128(sp)
    e8860e68:	fcce                	sd	s3,120(sp)
    e8860e6a:	f8d2                	sd	s4,112(sp)
    e8860e6c:	f4d6                	sd	s5,104(sp)
    e8860e6e:	e42a                	sd	a0,8(sp)
    e8860e70:	8d2e                	mv	s10,a1
    e8860e72:	8db2                	mv	s11,a2
    e8860e74:	8b42                	mv	s6,a6
	err = TLV8Get( inSrc, inEnd, inType, &ptr, &len, &inSrc );
    e8860e76:	e3fff0ef          	jal	ra,e8860cb4 <TLV8Get>
    e8860e7a:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e8860e7c:	e139                	bnez	a0,e8860ec2 <TLV8GetOrCopyCoalesced+0x7c>
	resultPtr = ptr;
    e8860e7e:	6ae2                	ld	s5,24(sp)
	resultLen = len;
    e8860e80:	7902                	ld	s2,32(sp)
	uint8_t *			storage = NULL;
    e8860e82:	4481                	li	s1,0
	
	for( ;; )
	{
		err = TLV8GetNext( inSrc, inEnd, &type, &ptr, &len, &src2 );
    e8860e84:	6522                	ld	a0,8(sp)
    e8860e86:	103c                	addi	a5,sp,40
    e8860e88:	1018                	addi	a4,sp,32
    e8860e8a:	0834                	addi	a3,sp,24
    e8860e8c:	01710613          	addi	a2,sp,23
    e8860e90:	85ea                	mv	a1,s10
    e8860e92:	dcdff0ef          	jal	ra,e8860c5e <TLV8GetNext>
		if( err ) break;
    e8860e96:	ed2d                	bnez	a0,e8860f10 <TLV8GetOrCopyCoalesced+0xca>
		if( type != inType ) break;
    e8860e98:	01714783          	lbu	a5,23(sp)
    e8860e9c:	07b79a63          	bne	a5,s11,e8860f10 <TLV8GetOrCopyCoalesced+0xca>
		inSrc = src2;
    e8860ea0:	77a2                	ld	a5,40(sp)
		if( len == 0 ) continue;
    e8860ea2:	7a02                	ld	s4,32(sp)
		inSrc = src2;
    e8860ea4:	e43e                	sd	a5,8(sp)
		if( len == 0 ) continue;
    e8860ea6:	020a0e63          	beqz	s4,e8860ee2 <TLV8GetOrCopyCoalesced+0x9c>
		
		if( resultLen > 0 )
    e8860eaa:	06090163          	beqz	s2,e8860f0c <TLV8GetOrCopyCoalesced+0xc6>
		{
			tempLen = resultLen + len;
    e8860eae:	9a4a                	add	s4,s4,s2
			tempPtr = (uint8_t *) malloc( tempLen );
    e8860eb0:	8552                	mv	a0,s4
    e8860eb2:	19d1a0ef          	jal	ra,e887b84e <my_malloc>
    e8860eb6:	89aa                	mv	s3,a0
			require_action( tempPtr, exit, err = kNoMemoryErr );
    e8860eb8:	e915                	bnez	a0,e8860eec <TLV8GetOrCopyCoalesced+0xa6>
	if( outNext ) *outNext = inSrc;
	storage		= NULL;
	err			= kNoErr;
	
exit:
	FreeNullSafe( storage );
    e8860eba:	7479                	lui	s0,0xffffe
    e8860ebc:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8860ec0:	e4a5                	bnez	s1,e8860f28 <TLV8GetOrCopyCoalesced+0xe2>
	return( err );
}
    e8860ec2:	8522                	mv	a0,s0
    e8860ec4:	60ea                	ld	ra,152(sp)
    e8860ec6:	644a                	ld	s0,144(sp)
    e8860ec8:	64aa                	ld	s1,136(sp)
    e8860eca:	690a                	ld	s2,128(sp)
    e8860ecc:	79e6                	ld	s3,120(sp)
    e8860ece:	7a46                	ld	s4,112(sp)
    e8860ed0:	7aa6                	ld	s5,104(sp)
    e8860ed2:	7b06                	ld	s6,96(sp)
    e8860ed4:	6be6                	ld	s7,88(sp)
    e8860ed6:	6c46                	ld	s8,80(sp)
    e8860ed8:	6ca6                	ld	s9,72(sp)
    e8860eda:	6d06                	ld	s10,64(sp)
    e8860edc:	7de2                	ld	s11,56(sp)
    e8860ede:	610d                	addi	sp,sp,160
    e8860ee0:	8082                	ret
    e8860ee2:	8a4a                	mv	s4,s2
    e8860ee4:	89a6                	mv	s3,s1
    e8860ee6:	8952                	mv	s2,s4
    e8860ee8:	84ce                	mv	s1,s3
    e8860eea:	bf69                	j	e8860e84 <TLV8GetOrCopyCoalesced+0x3e>
			memcpy( tempPtr, resultPtr, resultLen );
    e8860eec:	85d6                	mv	a1,s5
    e8860eee:	864a                	mv	a2,s2
    e8860ef0:	4b01b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			memcpy( tempPtr + resultLen, ptr, len );
    e8860ef4:	8ace                	mv	s5,s3
    e8860ef6:	7602                	ld	a2,32(sp)
    e8860ef8:	65e2                	ld	a1,24(sp)
    e8860efa:	01298533          	add	a0,s3,s2
    e8860efe:	4a21b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			if( storage ) free( storage );
    e8860f02:	d0f5                	beqz	s1,e8860ee6 <TLV8GetOrCopyCoalesced+0xa0>
    e8860f04:	8526                	mv	a0,s1
    e8860f06:	3fa1b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8860f0a:	bff1                	j	e8860ee6 <TLV8GetOrCopyCoalesced+0xa0>
			resultPtr = ptr;
    e8860f0c:	6ae2                	ld	s5,24(sp)
			resultLen = len;
    e8860f0e:	bfd9                	j	e8860ee4 <TLV8GetOrCopyCoalesced+0x9e>
	*outPtr		= resultPtr;
    e8860f10:	015cb023          	sd	s5,0(s9)
	*outLen		= resultLen;
    e8860f14:	012c3023          	sd	s2,0(s8)
	*outStorage	= storage;
    e8860f18:	009bb023          	sd	s1,0(s7) # ffffffff80000000 <__DRAM0_INF_BASE+0xfffffffe80010000>
	if( outNext ) *outNext = inSrc;
    e8860f1c:	fa0b03e3          	beqz	s6,e8860ec2 <TLV8GetOrCopyCoalesced+0x7c>
    e8860f20:	67a2                	ld	a5,8(sp)
    e8860f22:	00fb3023          	sd	a5,0(s6)
    e8860f26:	bf71                	j	e8860ec2 <TLV8GetOrCopyCoalesced+0x7c>
	FreeNullSafe( storage );
    e8860f28:	8526                	mv	a0,s1
    e8860f2a:	3d61b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8860f2e:	bf51                	j	e8860ec2 <TLV8GetOrCopyCoalesced+0x7c>

00000000e8860f30 <TLV8CopyCoalesced>:
{
    e8860f30:	711d                	addi	sp,sp,-96
    e8860f32:	e0ca                	sd	s2,64(sp)
    e8860f34:	fc4e                	sd	s3,56(sp)
    e8860f36:	f456                	sd	s5,40(sp)
    e8860f38:	89ba                	mv	s3,a4
    e8860f3a:	8ab6                	mv	s5,a3
    e8860f3c:	893e                	mv	s2,a5
	err = TLV8GetOrCopyCoalesced( inSrc, inEnd, inType, &ptr, &len, &storage, &next );
    e8860f3e:	01810813          	addi	a6,sp,24
    e8860f42:	081c                	addi	a5,sp,16
    e8860f44:	0038                	addi	a4,sp,8
    e8860f46:	868a                	mv	a3,sp
{
    e8860f48:	e8a2                	sd	s0,80(sp)
    e8860f4a:	e4a6                	sd	s1,72(sp)
    e8860f4c:	f852                	sd	s4,48(sp)
    e8860f4e:	ec86                	sd	ra,88(sp)
    e8860f50:	8a2a                	mv	s4,a0
	err = TLV8GetOrCopyCoalesced( inSrc, inEnd, inType, &ptr, &len, &storage, &next );
    e8860f52:	ef5ff0ef          	jal	ra,e8860e46 <TLV8GetOrCopyCoalesced>
    e8860f56:	84aa                	mv	s1,a0
	uint8_t *			result = NULL;
    e8860f58:	4401                	li	s0,0
	require_noerr_quiet( err, exit );
    e8860f5a:	e50d                	bnez	a0,e8860f84 <TLV8CopyCoalesced+0x54>
	if( storage )
    e8860f5c:	6442                	ld	s0,16(sp)
    e8860f5e:	ec01                	bnez	s0,e8860f76 <TLV8CopyCoalesced+0x46>
    e8860f60:	6522                	ld	a0,8(sp)
		result = (uint8_t *) malloc( len ? len : 1 ); // Use 1 if length is 0 since malloc( 0 ) is undefined.
    e8860f62:	e111                	bnez	a0,e8860f66 <TLV8CopyCoalesced+0x36>
    e8860f64:	4505                	li	a0,1
    e8860f66:	0e91a0ef          	jal	ra,e887b84e <my_malloc>
    e8860f6a:	842a                	mv	s0,a0
		require_action( result, exit, err = kNoMemoryErr );
    e8860f6c:	c915                	beqz	a0,e8860fa0 <TLV8CopyCoalesced+0x70>
		memcpy( result, ptr, len );
    e8860f6e:	6622                	ld	a2,8(sp)
    e8860f70:	6582                	ld	a1,0(sp)
    e8860f72:	42e1b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	*outLen = len;
    e8860f76:	67a2                	ld	a5,8(sp)
    e8860f78:	00fab023          	sd	a5,0(s5)
	if( outNext ) *outNext = inSrc;
    e8860f7c:	00098463          	beqz	s3,e8860f84 <TLV8CopyCoalesced+0x54>
    e8860f80:	0149b023          	sd	s4,0(s3)
	if( outErr ) *outErr = err;
    e8860f84:	00090463          	beqz	s2,e8860f8c <TLV8CopyCoalesced+0x5c>
    e8860f88:	00992023          	sw	s1,0(s2)
}
    e8860f8c:	8522                	mv	a0,s0
    e8860f8e:	60e6                	ld	ra,88(sp)
    e8860f90:	6446                	ld	s0,80(sp)
    e8860f92:	64a6                	ld	s1,72(sp)
    e8860f94:	6906                	ld	s2,64(sp)
    e8860f96:	79e2                	ld	s3,56(sp)
    e8860f98:	7a42                	ld	s4,48(sp)
    e8860f9a:	7aa2                	ld	s5,40(sp)
    e8860f9c:	6125                	addi	sp,sp,96
    e8860f9e:	8082                	ret
		require_action( result, exit, err = kNoMemoryErr );
    e8860fa0:	74f9                	lui	s1,0xffffe
    e8860fa2:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8860fa6:	bff9                	j	e8860f84 <TLV8CopyCoalesced+0x54>

00000000e8860fa8 <TLV8BufferInit>:
//	TLV8BufferInit
//===========================================================================================================================

void	TLV8BufferInit( TLV8Buffer *inBuffer, size_t inMaxLen )
{
	inBuffer->ptr			= inBuffer->inlineBuffer;
    e8860fa8:	02050793          	addi	a5,a0,32
    e8860fac:	e11c                	sd	a5,0(a0)
	inBuffer->len			= 0;
    e8860fae:	00053423          	sd	zero,8(a0)
	inBuffer->maxLen		= inMaxLen;
    e8860fb2:	e90c                	sd	a1,16(a0)
	inBuffer->mallocedPtr	= NULL;
    e8860fb4:	00053c23          	sd	zero,24(a0)
}
    e8860fb8:	8082                	ret

00000000e8860fba <TLV8BufferFree>:
//	TLV8BufferFree
//===========================================================================================================================

void	TLV8BufferFree( TLV8Buffer *inBuffer )
{
	ForgetMem( &inBuffer->mallocedPtr );
    e8860fba:	6d1c                	ld	a5,24(a0)
    e8860fbc:	cf91                	beqz	a5,e8860fd8 <TLV8BufferFree+0x1e>
{
    e8860fbe:	1141                	addi	sp,sp,-16
    e8860fc0:	e022                	sd	s0,0(sp)
    e8860fc2:	842a                	mv	s0,a0
	ForgetMem( &inBuffer->mallocedPtr );
    e8860fc4:	853e                	mv	a0,a5
{
    e8860fc6:	e406                	sd	ra,8(sp)
	ForgetMem( &inBuffer->mallocedPtr );
    e8860fc8:	3381b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8860fcc:	00043c23          	sd	zero,24(s0)
}
    e8860fd0:	60a2                	ld	ra,8(sp)
    e8860fd2:	6402                	ld	s0,0(sp)
    e8860fd4:	0141                	addi	sp,sp,16
    e8860fd6:	8082                	ret
    e8860fd8:	8082                	ret

00000000e8860fda <TLV8BufferAppend>:
//===========================================================================================================================
//	TLV8BufferAppend
//===========================================================================================================================

OSStatus	TLV8BufferAppend( TLV8Buffer *inBuffer, uint8_t inType, const void *inPtr, size_t inLen )
{
    e8860fda:	7139                	addi	sp,sp,-64
    e8860fdc:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8860fe0:	f891540b          	sdd	s0,s1,(sp),0,4
    e8860fe4:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8860fe8:	fc06                	sd	ra,56(sp)
    e8860fea:	f85a                	sd	s6,48(sp)
	DEBUG_USE_ONLY( lim );
	
	// Calculate the total size of the buffer after the new data is added.
	// This includes the space needed for extra headers if the data needs to be split across multiple items.
	
	if( inLen == kSizeCString ) inLen = strlen( (const char *) inPtr );
    e8860fec:	57fd                	li	a5,-1
{
    e8860fee:	84aa                	mv	s1,a0
    e8860ff0:	89ae                	mv	s3,a1
    e8860ff2:	8932                	mv	s2,a2
    e8860ff4:	8a36                	mv	s4,a3
	if( inLen == kSizeCString ) inLen = strlen( (const char *) inPtr );
    e8860ff6:	00f69763          	bne	a3,a5,e8861004 <TLV8BufferAppend+0x2a>
    e8860ffa:	8532                	mv	a0,a2
    e8860ffc:	31c1b0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8861000:	7c053a0b          	extu	s4,a0,31,0
	len = ( inLen <= 255 ) ? ( 2 + inLen ) : ( ( 2 * ( ( inLen / 255 ) + ( ( inLen % 255 ) ? 1 : 0 ) ) ) + inLen );
    e8861004:	0ff00793          	li	a5,255
    e8861008:	002a0513          	addi	a0,s4,2
    e886100c:	0147fb63          	bgeu	a5,s4,e8861022 <TLV8BufferAppend+0x48>
    e8861010:	02fa7533          	remu	a0,s4,a5
    e8861014:	02fa57b3          	divu	a5,s4,a5
    e8861018:	00a03533          	snez	a0,a0
    e886101c:	953e                	add	a0,a0,a5
    e886101e:	02aa150b          	addsl	a0,s4,a0,1
	newLen = inBuffer->len + len;
    e8861022:	6480                	ld	s0,8(s1)
	require_action( newLen <= inBuffer->maxLen, exit, err = kSizeErr );
    e8861024:	689c                	ld	a5,16(s1)
	newLen = inBuffer->len + len;
    e8861026:	9522                	add	a0,a0,s0
	require_action( newLen <= inBuffer->maxLen, exit, err = kSizeErr );
    e8861028:	08a7ea63          	bltu	a5,a0,e88610bc <TLV8BufferAppend+0xe2>
	require_action( newLen >= inBuffer->len, exit, err = kOverrunErr );
    e886102c:	08856c63          	bltu	a0,s0,e88610c4 <TLV8BufferAppend+0xea>
	
	if( newLen <= sizeof( inBuffer->inlineBuffer ) )
    e8861030:	12c00793          	li	a5,300
    e8861034:	04a7ed63          	bltu	a5,a0,e886108e <TLV8BufferAppend+0xb4>
	{
		dst = &inBuffer->inlineBuffer[ inBuffer->len ];
    e8861038:	02040413          	addi	s0,s0,32
    e886103c:	9426                	add	s0,s0,s1
	}
	
	// Append the new data. This will split it into 255 byte items as needed.
	
	src = (const uint8_t *) inPtr;
	end = src + inLen;
    e886103e:	9a4a                	add	s4,s4,s2
    e8861040:	0ff00b13          	li	s6,255
	do
	{
		len = (size_t)( end - src );
    e8861044:	412a0ab3          	sub	s5,s4,s2
		if( len > 255 ) len = 255;
    e8861048:	015b7463          	bgeu	s6,s5,e8861050 <TLV8BufferAppend+0x76>
    e886104c:	0ff00a93          	li	s5,255
		dst[ 0 ] = inType;
    e8861050:	01340023          	sb	s3,0(s0)
		dst[ 1 ] = (uint8_t ) len;
    e8861054:	015400a3          	sb	s5,1(s0)
		if( len > 0 ) memcpy( &dst[ 2 ], src, len );
    e8861058:	01490863          	beq	s2,s4,e8861068 <TLV8BufferAppend+0x8e>
    e886105c:	8656                	mv	a2,s5
    e886105e:	85ca                	mv	a1,s2
    e8861060:	00240513          	addi	a0,s0,2
    e8861064:	33c1b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		src += len;
    e8861068:	9956                	add	s2,s2,s5
		dst += ( 2 + len );
    e886106a:	0a89                	addi	s5,s5,2
    e886106c:	9456                	add	s0,s0,s5
		
	}	while( src != end );
    e886106e:	fd2a1be3          	bne	s4,s2,e8861044 <TLV8BufferAppend+0x6a>
	inBuffer->len = (size_t)( dst - inBuffer->ptr );
    e8861072:	609c                	ld	a5,0(s1)
	check( dst == lim );
	err = kNoErr;
    e8861074:	4501                	li	a0,0
	inBuffer->len = (size_t)( dst - inBuffer->ptr );
    e8861076:	8c1d                	sub	s0,s0,a5
    e8861078:	e480                	sd	s0,8(s1)
	
exit:
	return( err );
}
    e886107a:	70e2                	ld	ra,56(sp)
    e886107c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8861080:	7b42                	ld	s6,48(sp)
    e8861082:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8861086:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e886108a:	6121                	addi	sp,sp,64
    e886108c:	8082                	ret
		dst = (uint8_t *) malloc( newLen );
    e886108e:	7c01a0ef          	jal	ra,e887b84e <my_malloc>
    e8861092:	842a                	mv	s0,a0
		require_action( dst, exit, err = kNoMemoryErr );
    e8861094:	cd05                	beqz	a0,e88610cc <TLV8BufferAppend+0xf2>
		if( inBuffer->mallocedPtr )
    e8861096:	6c8c                	ld	a1,24(s1)
    e8861098:	6490                	ld	a2,8(s1)
    e886109a:	c999                	beqz	a1,e88610b0 <TLV8BufferAppend+0xd6>
			memcpy( dst, inBuffer->mallocedPtr, inBuffer->len );
    e886109c:	3041b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			free( inBuffer->mallocedPtr );
    e88610a0:	6c88                	ld	a0,24(s1)
    e88610a2:	25e1b0ef          	jal	ra,e887c300 <eLIBs_free>
		dst += inBuffer->len;
    e88610a6:	649c                	ld	a5,8(s1)
		inBuffer->ptr = dst;
    e88610a8:	e080                	sd	s0,0(s1)
		inBuffer->mallocedPtr = dst;
    e88610aa:	ec80                	sd	s0,24(s1)
		dst += inBuffer->len;
    e88610ac:	943e                	add	s0,s0,a5
    e88610ae:	bf41                	j	e886103e <TLV8BufferAppend+0x64>
		else if( inBuffer->len > 0 )
    e88610b0:	da7d                	beqz	a2,e88610a6 <TLV8BufferAppend+0xcc>
			memcpy( dst, inBuffer->inlineBuffer, inBuffer->len );
    e88610b2:	02048593          	addi	a1,s1,32
    e88610b6:	2ea1b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e88610ba:	b7f5                	j	e88610a6 <TLV8BufferAppend+0xcc>
	require_action( newLen <= inBuffer->maxLen, exit, err = kSizeErr );
    e88610bc:	7579                	lui	a0,0xffffe
    e88610be:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e88610c2:	bf65                	j	e886107a <TLV8BufferAppend+0xa0>
	require_action( newLen >= inBuffer->len, exit, err = kOverrunErr );
    e88610c4:	7579                	lui	a0,0xffffe
    e88610c6:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e88610ca:	bf45                	j	e886107a <TLV8BufferAppend+0xa0>
		require_action( dst, exit, err = kNoMemoryErr );
    e88610cc:	7579                	lui	a0,0xffffe
    e88610ce:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88610d2:	b765                	j	e886107a <TLV8BufferAppend+0xa0>

00000000e88610d4 <TLV8BufferAppendUInt64>:
//===========================================================================================================================
//	TLV8BufferAppendUInt64
//===========================================================================================================================

OSStatus	TLV8BufferAppendUInt64( TLV8Buffer *inBuffer, uint8_t inType, uint64_t x )
{
    e88610d4:	1101                	addi	sp,sp,-32
    e88610d6:	ec06                	sd	ra,24(sp)
	uint8_t			buf[ 8 ];
	size_t			len;
	
	if(      x <= UINT8_MAX )	{ *buf = (uint8_t) x; len = 1; }
    e88610d8:	0ff00713          	li	a4,255
    e88610dc:	00c76d63          	bltu	a4,a2,e88610f6 <TLV8BufferAppendUInt64+0x22>
    e88610e0:	0ff67793          	andi	a5,a2,255
    e88610e4:	00f10423          	sb	a5,8(sp)
    e88610e8:	4685                	li	a3,1
	else if( x <= UINT16_MAX )	{ WriteLittle16( buf, x ); len = 2; }
	else if( x <= UINT32_MAX )	{ WriteLittle32( buf, x ); len = 4; }
	else						{ WriteLittle64( buf, x ); len = 8; }
	return( TLV8BufferAppend( inBuffer, inType, buf, len ) );
    e88610ea:	0030                	addi	a2,sp,8
    e88610ec:	eefff0ef          	jal	ra,e8860fda <TLV8BufferAppend>
}
    e88610f0:	60e2                	ld	ra,24(sp)
    e88610f2:	6105                	addi	sp,sp,32
    e88610f4:	8082                	ret
	else if( x <= UINT16_MAX )	{ WriteLittle16( buf, x ); len = 2; }
    e88610f6:	67c1                	lui	a5,0x10
    e88610f8:	00f67663          	bgeu	a2,a5,e8861104 <TLV8BufferAppendUInt64+0x30>
    e88610fc:	00c11423          	sh	a2,8(sp)
    e8861100:	4689                	li	a3,2
    e8861102:	b7e5                	j	e88610ea <TLV8BufferAppendUInt64+0x16>
	else if( x <= UINT32_MAX )	{ WriteLittle32( buf, x ); len = 4; }
    e8861104:	57fd                	li	a5,-1
    e8861106:	9381                	srli	a5,a5,0x20
    e8861108:	00c7e563          	bltu	a5,a2,e8861112 <TLV8BufferAppendUInt64+0x3e>
    e886110c:	c432                	sw	a2,8(sp)
    e886110e:	4691                	li	a3,4
    e8861110:	bfe9                	j	e88610ea <TLV8BufferAppendUInt64+0x16>
	else						{ WriteLittle64( buf, x ); len = 8; }
    e8861112:	e432                	sd	a2,8(sp)
    e8861114:	46a1                	li	a3,8
    e8861116:	bfd1                	j	e88610ea <TLV8BufferAppendUInt64+0x16>

00000000e8861118 <TLV8BufferDetach>:
//===========================================================================================================================
//	TLV8BufferDetach
//===========================================================================================================================

OSStatus	TLV8BufferDetach( TLV8Buffer *inBuffer, uint8_t **outPtr, size_t *outLen )
{
    e8861118:	7179                	addi	sp,sp,-48
    e886111a:	f891540b          	sdd	s0,s1,(sp),0,4
    e886111e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8861122:	f052                	sd	s4,32(sp)
    e8861124:	f406                	sd	ra,40(sp)
	OSStatus		err;
	uint8_t *		ptr;
	size_t			len;
	
	len = inBuffer->len;
	if( inBuffer->mallocedPtr )
    e8861126:	01853903          	ld	s2,24(a0)
{
    e886112a:	842a                	mv	s0,a0
    e886112c:	8a2e                	mv	s4,a1
    e886112e:	89b2                	mv	s3,a2
	len = inBuffer->len;
    e8861130:	6504                	ld	s1,8(a0)
	if( inBuffer->mallocedPtr )
    e8861132:	00091e63          	bnez	s2,e886114e <TLV8BufferDetach+0x36>
	{
		ptr = inBuffer->mallocedPtr;
	}
	else
	{
		ptr = (uint8_t *) malloc( len ? len : 1 ); // malloc( 1 ) if buffer is empty since malloc( 0 ) is undefined.
    e8861136:	8526                	mv	a0,s1
    e8861138:	e091                	bnez	s1,e886113c <TLV8BufferDetach+0x24>
    e886113a:	4505                	li	a0,1
    e886113c:	7121a0ef          	jal	ra,e887b84e <my_malloc>
    e8861140:	892a                	mv	s2,a0
		require_action( ptr, exit, err = kNoMemoryErr );
    e8861142:	c915                	beqz	a0,e8861176 <TLV8BufferDetach+0x5e>
		if( len ) memcpy( ptr, inBuffer->ptr, len );
    e8861144:	c489                	beqz	s1,e886114e <TLV8BufferDetach+0x36>
    e8861146:	600c                	ld	a1,0(s0)
    e8861148:	8626                	mv	a2,s1
    e886114a:	2561b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	}
	inBuffer->ptr			= inBuffer->inlineBuffer;
    e886114e:	02040793          	addi	a5,s0,32
    e8861152:	e01c                	sd	a5,0(s0)
	inBuffer->len			= 0;
    e8861154:	00043423          	sd	zero,8(s0)
	inBuffer->mallocedPtr	= NULL;
    e8861158:	00043c23          	sd	zero,24(s0)
	
	*outPtr = ptr;
	*outLen = len;
	err = kNoErr;
    e886115c:	4501                	li	a0,0
	*outPtr = ptr;
    e886115e:	012a3023          	sd	s2,0(s4)
	*outLen = len;
    e8861162:	0099b023          	sd	s1,0(s3)
	
exit:
	return( err );
}
    e8861166:	70a2                	ld	ra,40(sp)
    e8861168:	f891440b          	ldd	s0,s1,(sp),0,4
    e886116c:	7a02                	ld	s4,32(sp)
    e886116e:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8861172:	6145                	addi	sp,sp,48
    e8861174:	8082                	ret
		require_action( ptr, exit, err = kNoMemoryErr );
    e8861176:	7579                	lui	a0,0xffffe
    e8861178:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886117c:	b7ed                	j	e8861166 <TLV8BufferDetach+0x4e>

00000000e886117e <SetCurrentThreadPriority>:

OSStatus	SetCurrentThreadPriority( int inPriority )
{
	OSStatus		err;
	
	if( inPriority == kThreadPriority_TimeConstraint )
    e886117e:	800007b7          	lui	a5,0x80000
    e8861182:	fff7c793          	not	a5,a5
    e8861186:	02f51d63          	bne	a0,a5,e88611c0 <SetCurrentThreadPriority+0x42>
{
    e886118a:	1141                	addi	sp,sp,-16
			
			err = thread_policy_set( mach_thread_self(), THREAD_TIME_CONSTRAINT_POLICY, (thread_policy_t) &policyInfo, 
				THREAD_TIME_CONSTRAINT_POLICY_COUNT );
			require_noerr( err, exit );	
		#else
			dlogassert( "Platform doesn't support time constraint threads" );
    e886118c:	4501                	li	a0,0
    e886118e:	00063817          	auipc	a6,0x63
    e8861192:	81a80813          	addi	a6,a6,-2022 # e88c39a8 <kASCIItoHexTable.8938+0x18>
    e8861196:	00063797          	auipc	a5,0x63
    e886119a:	90278793          	addi	a5,a5,-1790 # e88c3a98 <__PRETTY_FUNCTION__.8517>
    e886119e:	07a00713          	li	a4,122
    e88611a2:	00063697          	auipc	a3,0x63
    e88611a6:	83e68693          	addi	a3,a3,-1986 # e88c39e0 <kASCIItoHexTable.8938+0x50>
    e88611aa:	4601                	li	a2,0
    e88611ac:	4581                	li	a1,0
{
    e88611ae:	e406                	sd	ra,8(sp)
			dlogassert( "Platform doesn't support time constraint threads" );
    e88611b0:	a18ed0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	}
#endif
	
exit:
	return( err );
}
    e88611b4:	60a2                	ld	ra,8(sp)
			err = kUnsupportedErr;
    e88611b6:	7579                	lui	a0,0xffffe
    e88611b8:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
}
    e88611bc:	0141                	addi	sp,sp,16
    e88611be:	8082                	ret
		err = 0;
    e88611c0:	4501                	li	a0,0
}
    e88611c2:	8082                	ret

00000000e88611c4 <UpTicks>:
//===========================================================================================================================

extern int	clock_gettime( clockid_t inClockID, struct timespec *outTS );

uint64_t	UpTicks( void )
{
    e88611c4:	1141                	addi	sp,sp,-16
    e88611c6:	e406                	sd	ra,8(sp)
	return( GetTickCount() );
    e88611c8:	4101a0ef          	jal	ra,e887b5d8 <GetTickCount>
}
    e88611cc:	7c05350b          	extu	a0,a0,31,0
    e88611d0:	60a2                	ld	ra,8(sp)
    e88611d2:	0141                	addi	sp,sp,16
    e88611d4:	8082                	ret

00000000e88611d6 <SleepForUpTicks>:
		err = map_global_noerr_errno( err );
		if( err == EINTR ) continue;
		check_noerr( err );
	}
	#else
	Sleep( ( ( inTicks * kMillisecondsPerSecond ) / UpTicksPerSecond() ) );
    e88611d6:	3e800793          	li	a5,1000
    e88611da:	02f507b3          	mul	a5,a0,a5
    e88611de:	6709                	lui	a4,0x2
    e88611e0:	70f70693          	addi	a3,a4,1807 # 270f <memcmp-0xe87fd8f1>
    e88611e4:	4505                	li	a0,1
    e88611e6:	00f6f863          	bgeu	a3,a5,e88611f6 <SleepForUpTicks+0x20>
    e88611ea:	71070713          	addi	a4,a4,1808
    e88611ee:	02e7d7b3          	divu	a5,a5,a4
    e88611f2:	3c07b50b          	extu	a0,a5,15,0
    e88611f6:	6211a06f          	j	e887c016 <esKRNL_TimeDly>

00000000e88611fa <UpTicksToSeconds>:

uint64_t	UpTicksToSeconds( uint64_t inTicks )
{
	static double		sMultiplier = 0;
	
	if( sMultiplier == 0 ) sMultiplier = 1.0 / ( (double) UpTicksPerSecond() );
    e88611fa:	00083797          	auipc	a5,0x83
    e88611fe:	b5678793          	addi	a5,a5,-1194 # e88e3d50 <sMultiplier.8559>
    e8861202:	239c                	fld	fa5,0(a5)
    e8861204:	f2000753          	fmv.d.x	fa4,zero
    e8861208:	a2e7a753          	feq.d	a4,fa5,fa4
    e886120c:	c711                	beqz	a4,e8861218 <UpTicksToSeconds+0x1e>
    e886120e:	0005e717          	auipc	a4,0x5e
    e8861212:	9f273787          	fld	fa5,-1550(a4) # e88bec00 <__PRETTY_FUNCTION__.8745+0x18>
    e8861216:	a39c                	fsd	fa5,0(a5)
	return( (uint64_t)( ( (double) inTicks ) * sMultiplier ) );
    e8861218:	d23577d3          	fcvt.d.lu	fa5,a0
    e886121c:	2398                	fld	fa4,0(a5)
    e886121e:	12e7f7d3          	fmul.d	fa5,fa5,fa4
}
    e8861222:	c2379553          	fcvt.lu.d	a0,fa5,rtz
    e8861226:	8082                	ret

00000000e8861228 <UpTicksToMilliseconds>:

uint64_t	UpTicksToMilliseconds( uint64_t inTicks )
{
	static double		sMultiplier = 0;
	
	if( sMultiplier == 0 ) sMultiplier = ( (double) kMillisecondsPerSecond ) / ( (double) UpTicksPerSecond() );
    e8861228:	00083797          	auipc	a5,0x83
    e886122c:	b3078793          	addi	a5,a5,-1232 # e88e3d58 <sMultiplier.8567>
    e8861230:	239c                	fld	fa5,0(a5)
    e8861232:	f2000753          	fmv.d.x	fa4,zero
    e8861236:	a2e7a753          	feq.d	a4,fa5,fa4
    e886123a:	c711                	beqz	a4,e8861246 <UpTicksToMilliseconds+0x1e>
    e886123c:	0005e717          	auipc	a4,0x5e
    e8861240:	c3c73787          	fld	fa5,-964(a4) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e8861244:	a39c                	fsd	fa5,0(a5)
	return( (uint64_t)( ( (double) inTicks ) * sMultiplier ) );
    e8861246:	d23577d3          	fcvt.d.lu	fa5,a0
    e886124a:	2398                	fld	fa4,0(a5)
    e886124c:	12e7f7d3          	fmul.d	fa5,fa5,fa4
}
    e8861250:	c2379553          	fcvt.lu.d	a0,fa5,rtz
    e8861254:	8082                	ret

00000000e8861256 <UpTicksToNanoseconds>:

uint64_t	UpTicksToNanoseconds( uint64_t inTicks )
{
	static double		sMultiplier = 0;
	
	if( sMultiplier == 0 ) sMultiplier = ( (double) kNanosecondsPerSecond ) / ( (double) UpTicksPerSecond() );
    e8861256:	00083797          	auipc	a5,0x83
    e886125a:	b0a78793          	addi	a5,a5,-1270 # e88e3d60 <sMultiplier.8575>
    e886125e:	239c                	fld	fa5,0(a5)
    e8861260:	f2000753          	fmv.d.x	fa4,zero
    e8861264:	a2e7a753          	feq.d	a4,fa5,fa4
    e8861268:	c711                	beqz	a4,e8861274 <UpTicksToNanoseconds+0x1e>
    e886126a:	00063717          	auipc	a4,0x63
    e886126e:	84e73787          	fld	fa5,-1970(a4) # e88c3ab8 <__PRETTY_FUNCTION__.8517+0x20>
    e8861272:	a39c                	fsd	fa5,0(a5)
	return( (uint64_t)( ( (double) inTicks ) * sMultiplier ) );
    e8861274:	d23577d3          	fcvt.d.lu	fa5,a0
    e8861278:	2398                	fld	fa4,0(a5)
    e886127a:	12e7f7d3          	fmul.d	fa5,fa5,fa4
}
    e886127e:	c2379553          	fcvt.lu.d	a0,fa5,rtz
    e8861282:	8082                	ret

00000000e8861284 <SecondsToUpTicks>:

uint64_t	SecondsToUpTicks( uint64_t x )
{
	static uint64_t		sMultiplier = 0;
	
	if( sMultiplier == 0 ) sMultiplier = UpTicksPerSecond();
    e8861284:	00083797          	auipc	a5,0x83
    e8861288:	ae478793          	addi	a5,a5,-1308 # e88e3d68 <sMultiplier.8583>
    e886128c:	6398                	ld	a4,0(a5)
    e886128e:	e701                	bnez	a4,e8861296 <SecondsToUpTicks+0x12>
    e8861290:	3e800713          	li	a4,1000
    e8861294:	e398                	sd	a4,0(a5)
	return( x * sMultiplier );
    e8861296:	639c                	ld	a5,0(a5)
}
    e8861298:	02f50533          	mul	a0,a0,a5
    e886129c:	8082                	ret

00000000e886129e <MillisecondsToUpTicks>:

uint64_t	MillisecondsToUpTicks( uint64_t x )
{
	static double		sMultiplier = 0;
	
	if( sMultiplier == 0 ) sMultiplier = ( (double) UpTicksPerSecond() ) / ( (double) kMillisecondsPerSecond );
    e886129e:	00083797          	auipc	a5,0x83
    e88612a2:	ad278793          	addi	a5,a5,-1326 # e88e3d70 <sMultiplier.8591>
    e88612a6:	239c                	fld	fa5,0(a5)
    e88612a8:	f2000753          	fmv.d.x	fa4,zero
    e88612ac:	a2e7a753          	feq.d	a4,fa5,fa4
    e88612b0:	c711                	beqz	a4,e88612bc <MillisecondsToUpTicks+0x1e>
    e88612b2:	0005e717          	auipc	a4,0x5e
    e88612b6:	bc673787          	fld	fa5,-1082(a4) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e88612ba:	a39c                	fsd	fa5,0(a5)
	return( (uint64_t)( ( (double) x ) * sMultiplier ) );
    e88612bc:	d23577d3          	fcvt.d.lu	fa5,a0
    e88612c0:	2398                	fld	fa4,0(a5)
    e88612c2:	12e7f7d3          	fmul.d	fa5,fa5,fa4
}
    e88612c6:	c2379553          	fcvt.lu.d	a0,fa5,rtz
    e88612ca:	8082                	ret

00000000e88612cc <NTPtoUpTicks>:
uint64_t	NTPtoUpTicks( uint64_t inNTP )
{
	uint64_t		ticksPerSec, ticks;
	
	ticksPerSec = UpTicksPerSecond();
	ticks =      ( inNTP >> 32 )					* ticksPerSec;
    e88612cc:	02055713          	srli	a4,a0,0x20
    e88612d0:	3e800793          	li	a5,1000
	ticks += ( ( ( inNTP & UINT32_C( 0xFFFFFFFF ) ) * ticksPerSec ) >> 32 );
    e88612d4:	7c05350b          	extu	a0,a0,31,0
    e88612d8:	02f50533          	mul	a0,a0,a5
    e88612dc:	9101                	srli	a0,a0,0x20
	return( ticks );
}
    e88612de:	20f7150b          	mula	a0,a4,a5
    e88612e2:	8082                	ret

00000000e88612e4 <gettimeofday>:
#endif

#if( TARGET_OS_LINUX )

int	gettimeofday( struct timeval *outTV, void *inUnused )
{
    e88612e4:	1141                	addi	sp,sp,-16
    e88612e6:	e022                	sd	s0,0(sp)
    e88612e8:	e406                	sd	ra,8(sp)
    e88612ea:	842a                	mv	s0,a0
	long timems = GetTickCount();
    e88612ec:	2ec1a0ef          	jal	ra,e887b5d8 <GetTickCount>
    e88612f0:	7c05350b          	extu	a0,a0,31,0

	outTV->tv_usec = (long) ((timems%1000)*1000);
    e88612f4:	3e800793          	li	a5,1000
    e88612f8:	02f56733          	rem	a4,a0,a5
	outTV->tv_sec  = (long) (timems/1000);
	
	return 0;
}
    e88612fc:	60a2                	ld	ra,8(sp)
	outTV->tv_sec  = (long) (timems/1000);
    e88612fe:	02f54533          	div	a0,a0,a5
	outTV->tv_usec = (long) ((timems%1000)*1000);
    e8861302:	02f70733          	mul	a4,a4,a5
	outTV->tv_sec  = (long) (timems/1000);
    e8861306:	e008                	sd	a0,0(s0)
}
    e8861308:	4501                	li	a0,0
	outTV->tv_usec = (long) ((timems%1000)*1000);
    e886130a:	e418                	sd	a4,8(s0)
}
    e886130c:	6402                	ld	s0,0(sp)
    e886130e:	0141                	addi	sp,sp,16
    e8861310:	8082                	ret

00000000e8861312 <YMD_HMStoSeconds>:
	check( ( inMinute >=  0 ) && ( inMinute <= 59 ) );
	check( ( inSecond >=  0 ) && ( inSecond <= 62 ) ); // Note: 62 to handle double leap seconds.
	
	// Convert the year to days.
	
	year  = ( inYear - 1 );	// Only include days that occurred before this year.
    e8861312:	fff50e1b          	addiw	t3,a0,-1
	days  = ( year * 365 );	// Add all the days assuming all are non-leap years.
	days += ( year / 4 );	// Add a day for each 4 year cycle (possible leap years).
    e8861316:	4e91                	li	t4,4
    e8861318:	03de4ebb          	divw	t4,t3,t4
    e886131c:	16d00893          	li	a7,365
	
	// Convert the month to days. This is some magic formula to calculate the cumulative number of non-leap days 
	// before the given month. Months after February are off by 1 day (leap year) or 2 days (non-leap year). This
	// could also be done using a const array of cumulative days, but I didn't want to require static storage.
	
	days += ( ( inMonth * 3057 ) - 3007 ) / 100;
    e8861320:	6305                	lui	t1,0x1
    e8861322:	bf13031b          	addiw	t1,t1,-1039
	days += ( year / 4 );	// Add a day for each 4 year cycle (possible leap years).
    e8861326:	25c89e8b          	mulaw	t4,a7,t3
	days += ( ( inMonth * 3057 ) - 3007 ) / 100;
    e886132a:	78fd                	lui	a7,0xfffff
    e886132c:	4418889b          	addiw	a7,a7,1089
	days += ( year / 4 );	// Add a day for each 4 year cycle (possible leap years).
    e8861330:	8f76                	mv	t5,t4
	days -= ( year / 100 );	// Subtract a day for each non-leap century year.
    e8861332:	f9c00e93          	li	t4,-100
    e8861336:	03de4ebb          	divw	t4,t3,t4
    e886133a:	01ee8ebb          	addw	t4,t4,t5
	days += ( year / 400 );	// Add a day for each leap century year.
    e886133e:	19000f13          	li	t5,400
    e8861342:	03ee4e3b          	divw	t3,t3,t5
	days += ( ( inMonth * 3057 ) - 3007 ) / 100;
    e8861346:	24b3188b          	mulaw	a7,t1,a1
	days += ( year / 400 );	// Add a day for each leap century year.
    e886134a:	01de0e3b          	addw	t3,t3,t4
	days += ( ( inMonth * 3057 ) - 3007 ) / 100;
    e886134e:	06400e93          	li	t4,100
    e8861352:	03d8c8bb          	divw	a7,a7,t4
    e8861356:	01c8833b          	addw	t1,a7,t3
	if( inMonth > 2 )
    e886135a:	4e09                	li	t3,2
	days += ( ( inMonth * 3057 ) - 3007 ) / 100;
    e886135c:	889a                	mv	a7,t1
	if( inMonth > 2 )
    e886135e:	02be5363          	bge	t3,a1,e8861384 <YMD_HMStoSeconds+0x72>
	{
		days -= ( IsLeapYear( inYear ) ? 1 : 2 );
    e8861362:	00357e13          	andi	t3,a0,3
    e8861366:	4589                	li	a1,2
    e8861368:	000e1c63          	bnez	t3,e8861380 <YMD_HMStoSeconds+0x6e>
    e886136c:	03d56ebb          	remw	t4,a0,t4
    e8861370:	4585                	li	a1,1
    e8861372:	000e9763          	bnez	t4,e8861380 <YMD_HMStoSeconds+0x6e>
    e8861376:	03e565bb          	remw	a1,a0,t5
    e886137a:	00b035b3          	snez	a1,a1
    e886137e:	0585                	addi	a1,a1,1
    e8861380:	40b8833b          	subw	t1,a7,a1
	// Convert the total full days and the partial day hours, minutes, and seconds to seconds.
	
	seconds = days;
	seconds *= ( 60 * 60 * 24 );		// Convert days to seconds.
	seconds += ( inHour * 60 * 60 );	// Add hour as seconds.
	seconds += ( inMinute * 60 );		// Add minute as seconds.
    e8861384:	03c00893          	li	a7,60
	seconds += ( inHour * 60 * 60 );	// Add hour as seconds.
    e8861388:	6505                	lui	a0,0x1
	seconds += ( inMinute * 60 );		// Add minute as seconds.
    e886138a:	02e888bb          	mulw	a7,a7,a4
	seconds += ( inHour * 60 * 60 );	// Add hour as seconds.
    e886138e:	e105051b          	addiw	a0,a0,-496
	days -= inEpochDays;
    e8861392:	410605bb          	subw	a1,a2,a6
	seconds = days;
    e8861396:	006585bb          	addw	a1,a1,t1
	seconds += ( inHour * 60 * 60 );	// Add hour as seconds.
    e886139a:	02d5053b          	mulw	a0,a0,a3
	seconds += inSecond;
    e886139e:	98be                	add	a7,a7,a5
	return( seconds );
}
    e88613a0:	67d5                	lui	a5,0x15
    e88613a2:	18078793          	addi	a5,a5,384 # 15180 <memcmp-0xe87eae80>
	seconds += inSecond;
    e88613a6:	9546                	add	a0,a0,a7
}
    e88613a8:	20f5950b          	mula	a0,a1,a5
    e88613ac:	8082                	ret

00000000e88613ae <SecondsToYMD_HMS>:
		int *	outSecond )
{
	int		days, seconds, x;
	int		year, month, day, hour, minute, second;
	
	days	= (int)( inSeconds / kSecondsPerDay );
    e88613ae:	6355                	lui	t1,0x15
    e88613b0:	18030313          	addi	t1,t1,384 # 15180 <memcmp-0xe87eae80>
    e88613b4:	026548b3          	div	a7,a0,t1
{
    e88613b8:	1141                	addi	sp,sp,-16
    e88613ba:	f891540b          	sdd	s0,s1,(sp),0,4
	seconds = (int)( inSeconds % kSecondsPerDay );
	for( x = ( days * 400 ) / 146097; YearToDays( x ) < days; ++x ) {}
    e88613be:	4391                	li	t2,4
    e88613c0:	f9c00493          	li	s1,-100
    e88613c4:	19000293          	li	t0,400
    e88613c8:	16d00f13          	li	t5,365
	days	= (int)( inSeconds / kSecondsPerDay );
    e88613cc:	2881                	sext.w	a7,a7
	seconds = (int)( inSeconds % kSecondsPerDay );
    e88613ce:	02656533          	rem	a0,a0,t1
	for( x = ( days * 400 ) / 146097; YearToDays( x ) < days; ++x ) {}
    e88613d2:	19000313          	li	t1,400
    e88613d6:	03130e3b          	mulw	t3,t1,a7
    e88613da:	00024337          	lui	t1,0x24
    e88613de:	ab13031b          	addiw	t1,t1,-1359
    e88613e2:	026e433b          	divw	t1,t3,t1
    e88613e6:	0293443b          	divw	s0,t1,s1
    e88613ea:	02734e3b          	divw	t3,t1,t2
    e88613ee:	008e0e3b          	addw	t3,t3,s0
    e88613f2:	0253443b          	divw	s0,t1,t0
    e88613f6:	008e0e3b          	addw	t3,t3,s0
    e88613fa:	246f1e0b          	mulaw	t3,t5,t1
    e88613fe:	0f1e4363          	blt	t3,a7,e88614e4 <SecondsToYMD_HMS+0x136>
	year = x;
	
	x = days - YearToDays( x - 1 );
    e8861402:	e9300f13          	li	t5,-365
    e8861406:	fff30e1b          	addiw	t3,t1,-1
    e886140a:	246f188b          	mulaw	a7,t5,t1
    e886140e:	e7000f13          	li	t5,-400
    e8861412:	03ee4f3b          	divw	t5,t3,t5
    e8861416:	01e888bb          	addw	a7,a7,t5
    e886141a:	06400f13          	li	t5,100
    e886141e:	03ee443b          	divw	s0,t3,t5
    e8861422:	027e4e3b          	divw	t3,t3,t2
    e8861426:	008888bb          	addw	a7,a7,s0
	if( x > 59 )
    e886142a:	03b00393          	li	t2,59
	x = days - YearToDays( x - 1 );
    e886142e:	41c888bb          	subw	a7,a7,t3
    e8861432:	16d88e1b          	addiw	t3,a7,365
	if( x > 59 )
    e8861436:	03c3d963          	bge	t2,t3,e8861468 <SecondsToYMD_HMS+0xba>
	{
		x += 2;
    e886143a:	16f88e1b          	addiw	t3,a7,367
		if( IsLeapYear( year ) )
    e886143e:	00337f93          	andi	t6,t1,3
		x += 2;
    e8861442:	88f2                	mv	a7,t3
		if( IsLeapYear( year ) )
    e8861444:	020f9263          	bnez	t6,e8861468 <SecondsToYMD_HMS+0xba>
    e8861448:	03e36f3b          	remw	t5,t1,t5
    e886144c:	000f1663          	bnez	t5,e8861458 <SecondsToYMD_HMS+0xaa>
    e8861450:	02536ebb          	remw	t4,t1,t0
    e8861454:	000e9a63          	bnez	t4,e8861468 <SecondsToYMD_HMS+0xba>
		{
			x -= ( x > 64 ) ? 1 : 2;
    e8861458:	04000f13          	li	t5,64
    e886145c:	4e85                	li	t4,1
    e886145e:	01cf4363          	blt	t5,t3,e8861464 <SecondsToYMD_HMS+0xb6>
    e8861462:	4e89                	li	t4,2
    e8861464:	41d88e3b          	subw	t3,a7,t4
		}
	}
	month	= ( ( x * 100 ) + 3007 ) / 3057;
    e8861468:	6885                	lui	a7,0x1
    e886146a:	bbf88e9b          	addiw	t4,a7,-1089
    e886146e:	06400f13          	li	t5,100
    e8861472:	25cf1e8b          	mulaw	t4,t5,t3
    e8861476:	bf188f1b          	addiw	t5,a7,-1039
	day		= x - MonthToDays( month );
	hour	= seconds / kSecondsPerHour;
	seconds	= seconds % kSecondsPerHour;
    e886147a:	e108889b          	addiw	a7,a7,-496
	month	= ( ( x * 100 ) + 3007 ) / 3057;
    e886147e:	03eecebb          	divw	t4,t4,t5
	seconds	= seconds % kSecondsPerHour;
    e8861482:	031568bb          	remw	a7,a0,a7
	minute	= seconds / kSecondsPerMinute;
	second	= seconds % kSecondsPerMinute;
	
	if( outYear )	*outYear	= year;
    e8861486:	c199                	beqz	a1,e886148c <SecondsToYMD_HMS+0xde>
    e8861488:	0065a023          	sw	t1,0(a1)
	if( outMonth )	*outMonth	= month;
    e886148c:	c219                	beqz	a2,e8861492 <SecondsToYMD_HMS+0xe4>
    e886148e:	01d62023          	sw	t4,0(a2)
	if( outDay )	*outDay		= day;
    e8861492:	c285                	beqz	a3,e88614b2 <SecondsToYMD_HMS+0x104>
	day		= x - MonthToDays( month );
    e8861494:	6585                	lui	a1,0x1
    e8861496:	767d                	lui	a2,0xfffff
    e8861498:	bf15859b          	addiw	a1,a1,-1039
    e886149c:	4416061b          	addiw	a2,a2,1089
    e88614a0:	24be960b          	mulaw	a2,t4,a1
    e88614a4:	f9c00593          	li	a1,-100
    e88614a8:	02b6463b          	divw	a2,a2,a1
    e88614ac:	01c6063b          	addw	a2,a2,t3
	if( outDay )	*outDay		= day;
    e88614b0:	c290                	sw	a2,0(a3)
	if( outHour )	*outHour	= hour;
    e88614b2:	c719                	beqz	a4,e88614c0 <SecondsToYMD_HMS+0x112>
	hour	= seconds / kSecondsPerHour;
    e88614b4:	6685                	lui	a3,0x1
    e88614b6:	e106869b          	addiw	a3,a3,-496
    e88614ba:	02d5453b          	divw	a0,a0,a3
	if( outHour )	*outHour	= hour;
    e88614be:	c308                	sw	a0,0(a4)
	if( outMinute )	*outMinute	= minute;
    e88614c0:	c791                	beqz	a5,e88614cc <SecondsToYMD_HMS+0x11e>
	minute	= seconds / kSecondsPerMinute;
    e88614c2:	03c00713          	li	a4,60
    e88614c6:	02e8c73b          	divw	a4,a7,a4
	if( outMinute )	*outMinute	= minute;
    e88614ca:	c398                	sw	a4,0(a5)
	if( outSecond )	*outSecond	= second;
    e88614cc:	00080863          	beqz	a6,e88614dc <SecondsToYMD_HMS+0x12e>
	second	= seconds % kSecondsPerMinute;
    e88614d0:	03c00793          	li	a5,60
    e88614d4:	02f8e8bb          	remw	a7,a7,a5
	if( outSecond )	*outSecond	= second;
    e88614d8:	01182023          	sw	a7,0(a6)
}
    e88614dc:	f891440b          	ldd	s0,s1,(sp),0,4
    e88614e0:	0141                	addi	sp,sp,16
    e88614e2:	8082                	ret
	for( x = ( days * 400 ) / 146097; YearToDays( x ) < days; ++x ) {}
    e88614e4:	2305                	addiw	t1,t1,1
    e88614e6:	b701                	j	e88613e6 <SecondsToYMD_HMS+0x38>

00000000e88614e8 <URLDecodeEx>:
		size_t 			inEncodedSize, 
		void *			inDecodedDataBuffer, 
		size_t			inDecodedDataBufferSize, 
		size_t *		outDecodedSize, 
		int *			outChanges )
{
    e88614e8:	7139                	addi	sp,sp,-64
    e88614ea:	f422                	sd	s0,40(sp)
    e88614ec:	fc06                	sd	ra,56(sp)
    e88614ee:	f826                	sd	s1,48(sp)
	uint8_t *			lim;
	uint8_t				c1;
	uint8_t				c2;
	int					changes;
	
	if( inEncodedSize == kSizeCString ) inEncodedSize = strlen( (const char *) inEncodedData );
    e88614f0:	587d                	li	a6,-1
{
    e88614f2:	842a                	mv	s0,a0
	if( inEncodedSize == kSizeCString ) inEncodedSize = strlen( (const char *) inEncodedData );
    e88614f4:	01059e63          	bne	a1,a6,e8861510 <URLDecodeEx+0x28>
    e88614f8:	ec3e                	sd	a5,24(sp)
    e88614fa:	e83a                	sd	a4,16(sp)
    e88614fc:	e436                	sd	a3,8(sp)
    e88614fe:	e032                	sd	a2,0(sp)
    e8861500:	6191a0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8861504:	7c05358b          	extu	a1,a0,31,0
    e8861508:	67e2                	ld	a5,24(sp)
    e886150a:	6742                	ld	a4,16(sp)
    e886150c:	66a2                	ld	a3,8(sp)
    e886150e:	6602                	ld	a2,0(sp)
	src = (const uint8_t *) inEncodedData;
	end = src + inEncodedSize;
    e8861510:	95a2                	add	a1,a1,s0
	dst = (uint8_t *) inDecodedDataBuffer;
	lim = dst + inDecodedDataBufferSize;
    e8861512:	96b2                	add	a3,a3,a2
	
	changes = 0;
	while( src < end )
    e8861514:	8e32                	mv	t3,a2
	changes = 0;
    e8861516:	4f01                	li	t5,0
	{
		c1 = *src++;
		if( c1 == '%' )
    e8861518:	02500293          	li	t0,37
			else { err = kMalformedErr; goto exit; }
			
			c1 = (uint8_t)( ( c1 << 4 ) | c2 );
			++changes;
		}
		else if( c1 == '+' )
    e886151c:	02b00393          	li	t2,43
			require_action_quiet( ( end - src ) >= 2, exit, err = kUnderrunErr );
    e8861520:	4485                	li	s1,1
			if(      ( c1 >= '0' ) && ( c1 <= '9' ) ) c1 = c1 - '0';
    e8861522:	4fa5                	li	t6,9
			else if( ( c2 >= 'a' ) && ( c2 <= 'f' ) ) c2 = 10 + ( c2 - 'a' );
    e8861524:	4515                	li	a0,5
	while( src < end )
    e8861526:	02b46063          	bltu	s0,a1,e8861546 <URLDecodeEx+0x5e>
			require_action_quiet( dst < lim, exit, err = kOverrunErr );
			*dst = c1;
		}
		++dst;
	}
	err = kNoErr;
    e886152a:	4501                	li	a0,0
	
exit:
	if( outDecodedSize ) *outDecodedSize = (size_t)( dst - ( (uint8_t *) inDecodedDataBuffer ) );
    e886152c:	c709                	beqz	a4,e8861536 <URLDecodeEx+0x4e>
    e886152e:	40ce0e33          	sub	t3,t3,a2
    e8861532:	01c73023          	sd	t3,0(a4)
	if( outChanges )	 *outChanges	 = changes;
    e8861536:	c399                	beqz	a5,e886153c <URLDecodeEx+0x54>
    e8861538:	01e7a023          	sw	t5,0(a5)
	return( err );
}
    e886153c:	70e2                	ld	ra,56(sp)
    e886153e:	7422                	ld	s0,40(sp)
    e8861540:	74c2                	ld	s1,48(sp)
    e8861542:	6121                	addi	sp,sp,64
    e8861544:	8082                	ret
		c1 = *src++;
    e8861546:	8ea2                	mv	t4,s0
    e8861548:	981ec80b          	lbuia	a6,(t4),1,0
		if( c1 == '%' )
    e886154c:	0a581063          	bne	a6,t0,e88615ec <URLDecodeEx+0x104>
			require_action_quiet( ( end - src ) >= 2, exit, err = kUnderrunErr );
    e8861550:	41d58eb3          	sub	t4,a1,t4
    e8861554:	0bd4d263          	bge	s1,t4,e88615f8 <URLDecodeEx+0x110>
			c1 = *src++;
    e8861558:	00144883          	lbu	a7,1(s0)
			if(      ( c1 >= '0' ) && ( c1 <= '9' ) ) c1 = c1 - '0';
    e886155c:	fd08831b          	addiw	t1,a7,-48
    e8861560:	0ff37813          	andi	a6,t1,255
    e8861564:	8342                	mv	t1,a6
    e8861566:	010ffc63          	bgeu	t6,a6,e886157e <URLDecodeEx+0x96>
			else if( ( c1 >= 'a' ) && ( c1 <= 'f' ) ) c1 = 10 + ( c1 - 'a' );
    e886156a:	f9f8881b          	addiw	a6,a7,-97
    e886156e:	0ff87813          	andi	a6,a6,255
    e8861572:	05056063          	bltu	a0,a6,e88615b2 <URLDecodeEx+0xca>
    e8861576:	fa98889b          	addiw	a7,a7,-87
			else if( ( c1 >= 'A' ) && ( c1 <= 'F' ) ) c1 = 10 + ( c1 - 'A' );
    e886157a:	0ff8f313          	andi	t1,a7,255
			c2 = *src++;
    e886157e:	00244883          	lbu	a7,2(s0)
    e8861582:	00340e93          	addi	t4,s0,3
			if(      ( c2 >= '0' ) && ( c2 <= '9' ) ) c2 = c2 - '0';
    e8861586:	fd08881b          	addiw	a6,a7,-48
    e886158a:	0ff87413          	andi	s0,a6,255
    e886158e:	028feb63          	bltu	t6,s0,e88615c4 <URLDecodeEx+0xdc>
    e8861592:	88a2                	mv	a7,s0
			c1 = (uint8_t)( ( c1 << 4 ) | c2 );
    e8861594:	00431813          	slli	a6,t1,0x4
    e8861598:	0108e8b3          	or	a7,a7,a6
    e886159c:	0ff8f813          	andi	a6,a7,255
			++changes;
    e88615a0:	2f05                	addiw	t5,t5,1
		if( inDecodedDataBuffer )
    e88615a2:	c609                	beqz	a2,e88615ac <URLDecodeEx+0xc4>
			require_action_quiet( dst < lim, exit, err = kOverrunErr );
    e88615a4:	06de7263          	bgeu	t3,a3,e8861608 <URLDecodeEx+0x120>
			*dst = c1;
    e88615a8:	010e0023          	sb	a6,0(t3)
		++dst;
    e88615ac:	0e05                	addi	t3,t3,1
    e88615ae:	8476                	mv	s0,t4
    e88615b0:	bf9d                	j	e8861526 <URLDecodeEx+0x3e>
			else if( ( c1 >= 'A' ) && ( c1 <= 'F' ) ) c1 = 10 + ( c1 - 'A' );
    e88615b2:	fbf8881b          	addiw	a6,a7,-65
    e88615b6:	0ff87813          	andi	a6,a6,255
    e88615ba:	05056363          	bltu	a0,a6,e8861600 <URLDecodeEx+0x118>
    e88615be:	fc98889b          	addiw	a7,a7,-55
    e88615c2:	bf65                	j	e886157a <URLDecodeEx+0x92>
			else if( ( c2 >= 'a' ) && ( c2 <= 'f' ) ) c2 = 10 + ( c2 - 'a' );
    e88615c4:	f9f8881b          	addiw	a6,a7,-97
    e88615c8:	0ff87813          	andi	a6,a6,255
    e88615cc:	01056763          	bltu	a0,a6,e88615da <URLDecodeEx+0xf2>
    e88615d0:	fa98889b          	addiw	a7,a7,-87
			else if( ( c2 >= 'A' ) && ( c2 <= 'F' ) ) c2 = 10 + ( c2 - 'A' );
    e88615d4:	0ff8f893          	andi	a7,a7,255
    e88615d8:	bf75                	j	e8861594 <URLDecodeEx+0xac>
    e88615da:	fbf8881b          	addiw	a6,a7,-65
    e88615de:	0ff87813          	andi	a6,a6,255
    e88615e2:	01056f63          	bltu	a0,a6,e8861600 <URLDecodeEx+0x118>
    e88615e6:	fc98889b          	addiw	a7,a7,-55
    e88615ea:	b7ed                	j	e88615d4 <URLDecodeEx+0xec>
		else if( c1 == '+' )
    e88615ec:	fa781be3          	bne	a6,t2,e88615a2 <URLDecodeEx+0xba>
			++changes;
    e88615f0:	2f05                	addiw	t5,t5,1
			c1 = ' '; // Some application/x-www-form-urlencoded may use '+' instead of %20 for spaces.
    e88615f2:	02000813          	li	a6,32
    e88615f6:	b775                	j	e88615a2 <URLDecodeEx+0xba>
			require_action_quiet( ( end - src ) >= 2, exit, err = kUnderrunErr );
    e88615f8:	7579                	lui	a0,0xffffe
    e88615fa:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
    e88615fe:	b73d                	j	e886152c <URLDecodeEx+0x44>
			else { err = kMalformedErr; goto exit; }
    e8861600:	7579                	lui	a0,0xffffe
    e8861602:	5aa50513          	addi	a0,a0,1450 # ffffffffffffe5aa <__DRAM0_INF_BASE+0xffffffff0000e5aa>
    e8861606:	b71d                	j	e886152c <URLDecodeEx+0x44>
			require_action_quiet( dst < lim, exit, err = kOverrunErr );
    e8861608:	7579                	lui	a0,0xffffe
    e886160a:	5a150513          	addi	a0,a0,1441 # ffffffffffffe5a1 <__DRAM0_INF_BASE+0xffffffff0000e5a1>
    e886160e:	bf39                	j	e886152c <URLDecodeEx+0x44>

00000000e8861610 <URLDecodeCopy>:
//===========================================================================================================================
//	URLDecodeCopy
//===========================================================================================================================

OSStatus	URLDecodeCopy( const void *inEncodedData, size_t inEncodedSize, void *outDecodedPtr, size_t *outDecodedSize )
{
    e8861610:	715d                	addi	sp,sp,-80
    e8861612:	f84a                	sd	s2,48(sp)
    e8861614:	f44e                	sd	s3,40(sp)
    e8861616:	f052                	sd	s4,32(sp)
    e8861618:	ec56                	sd	s5,24(sp)
    e886161a:	e486                	sd	ra,72(sp)
    e886161c:	e0a2                	sd	s0,64(sp)
    e886161e:	fc26                	sd	s1,56(sp)
	size_t			decodedSize;
	char *			decodedData;
	
	decodedData = NULL;
	
	if( inEncodedSize == kSizeCString ) inEncodedSize = strlen( (const char *) inEncodedData );
    e8861620:	57fd                	li	a5,-1
{
    e8861622:	8a2a                	mv	s4,a0
    e8861624:	8ab2                	mv	s5,a2
    e8861626:	89b6                	mv	s3,a3
    e8861628:	892e                	mv	s2,a1
	if( inEncodedSize == kSizeCString ) inEncodedSize = strlen( (const char *) inEncodedData );
    e886162a:	00f59663          	bne	a1,a5,e8861636 <URLDecodeCopy+0x26>
    e886162e:	4eb1a0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8861632:	7c05390b          	extu	s2,a0,31,0
	
	err = URLDecode( inEncodedData, inEncodedSize, NULL, 0, &decodedSize );
    e8861636:	4781                	li	a5,0
    e8861638:	0038                	addi	a4,sp,8
    e886163a:	4681                	li	a3,0
    e886163c:	4601                	li	a2,0
    e886163e:	85ca                	mv	a1,s2
    e8861640:	8552                	mv	a0,s4
    e8861642:	ea7ff0ef          	jal	ra,e88614e8 <URLDecodeEx>
    e8861646:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e8861648:	e91d                	bnez	a0,e886167e <URLDecodeCopy+0x6e>
	
	decodedData = (char *) malloc( decodedSize + 1 );
    e886164a:	6522                	ld	a0,8(sp)
    e886164c:	0505                	addi	a0,a0,1
    e886164e:	2001a0ef          	jal	ra,e887b84e <my_malloc>
    e8861652:	84aa                	mv	s1,a0
	require_action( decodedData, exit, err = kNoMemoryErr );
    e8861654:	cd1d                	beqz	a0,e8861692 <URLDecodeCopy+0x82>
	
	err = URLDecode( inEncodedData, inEncodedSize, decodedData, decodedSize, &decodedSize );
    e8861656:	66a2                	ld	a3,8(sp)
    e8861658:	862a                	mv	a2,a0
    e886165a:	4781                	li	a5,0
    e886165c:	0038                	addi	a4,sp,8
    e886165e:	85ca                	mv	a1,s2
    e8861660:	8552                	mv	a0,s4
    e8861662:	e87ff0ef          	jal	ra,e88614e8 <URLDecodeEx>
    e8861666:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e8861668:	e90d                	bnez	a0,e886169a <URLDecodeCopy+0x8a>
	decodedData[ decodedSize ] = '\0';
    e886166a:	67a2                	ld	a5,8(sp)
    e886166c:	00f4d00b          	srb	zero,s1,a5,0
	
	*( (void **) outDecodedPtr ) 			= decodedData;
    e8861670:	009ab023          	sd	s1,0(s5)
	if( outDecodedSize ) *outDecodedSize	= decodedSize;
    e8861674:	00098563          	beqz	s3,e886167e <URLDecodeCopy+0x6e>
    e8861678:	67a2                	ld	a5,8(sp)
    e886167a:	00f9b023          	sd	a5,0(s3)
	decodedData = NULL;
	
exit:
	if( decodedData ) free( decodedData );
	return( err );
}
    e886167e:	8522                	mv	a0,s0
    e8861680:	60a6                	ld	ra,72(sp)
    e8861682:	6406                	ld	s0,64(sp)
    e8861684:	74e2                	ld	s1,56(sp)
    e8861686:	7942                	ld	s2,48(sp)
    e8861688:	79a2                	ld	s3,40(sp)
    e886168a:	7a02                	ld	s4,32(sp)
    e886168c:	6ae2                	ld	s5,24(sp)
    e886168e:	6161                	addi	sp,sp,80
    e8861690:	8082                	ret
	require_action( decodedData, exit, err = kNoMemoryErr );
    e8861692:	7479                	lui	s0,0xffffe
    e8861694:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8861698:	b7dd                	j	e886167e <URLDecodeCopy+0x6e>
	if( decodedData ) free( decodedData );
    e886169a:	8526                	mv	a0,s1
    e886169c:	4651a0ef          	jal	ra,e887c300 <eLIBs_free>
	return( err );
    e88616a0:	bff9                	j	e886167e <URLDecodeCopy+0x6e>

00000000e88616a2 <URLParseComponents>:
//===========================================================================================================================
//	URLParseComponents
//===========================================================================================================================

OSStatus	URLParseComponents( const char *inSrc, const char *inEnd, URLComponents *outComponents, const char **outSrc )
{
    e88616a2:	7179                	addi	sp,sp,-48
    e88616a4:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88616a8:	f406                	sd	ra,40(sp)
    e88616aa:	f04a                	sd	s2,32(sp)
    e88616ac:	842a                	mv	s0,a0
		  |   _____________________|__
		 / \ /                        \ 
		 urn:example:animal:ferret:nose
	*/
	
	if( inEnd == NULL ) inEnd = inSrc + strlen( inSrc );
    e88616ae:	e991                	bnez	a1,e88616c2 <URLParseComponents+0x20>
    e88616b0:	e436                	sd	a3,8(sp)
    e88616b2:	e032                	sd	a2,0(sp)
    e88616b4:	4651a0ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88616b8:	7c05358b          	extu	a1,a0,31,0
    e88616bc:	66a2                	ld	a3,8(sp)
    e88616be:	6602                	ld	a2,0(sp)
    e88616c0:	95a2                	add	a1,a1,s0
	
	schemePtr = NULL;
	schemeEnd = NULL;
	
	c = '\0';
	ptr = inSrc;
    e88616c2:	88a2                	mv	a7,s0
	c = '\0';
    e88616c4:	4781                	li	a5,0
	while( ( ptr < inEnd ) && ( ( c = *ptr ) != ':' ) && ( c != '/' ) && ( c != '?' ) && ( c != '#' ) ) ++ptr;
    e88616c6:	03a00513          	li	a0,58
    e88616ca:	02f00813          	li	a6,47
    e88616ce:	02300713          	li	a4,35
    e88616d2:	02b8f163          	bgeu	a7,a1,e88616f4 <URLParseComponents+0x52>
    e88616d6:	0008c783          	lbu	a5,0(a7) # 1000 <memcmp-0xe87ff000>
    e88616da:	02a78163          	beq	a5,a0,e88616fc <URLParseComponents+0x5a>
    e88616de:	0ef7f313          	andi	t1,a5,239
    e88616e2:	01030463          	beq	t1,a6,e88616ea <URLParseComponents+0x48>
    e88616e6:	00e79563          	bne	a5,a4,e88616f0 <URLParseComponents+0x4e>
	schemeEnd = NULL;
    e88616ea:	4881                	li	a7,0
	schemePtr = NULL;
    e88616ec:	4381                	li	t2,0
    e88616ee:	a811                	j	e8861702 <URLParseComponents+0x60>
	while( ( ptr < inEnd ) && ( ( c = *ptr ) != ':' ) && ( c != '/' ) && ( c != '?' ) && ( c != '#' ) ) ++ptr;
    e88616f0:	0885                	addi	a7,a7,1
    e88616f2:	b7c5                	j	e88616d2 <URLParseComponents+0x30>
	if( c == ':' )
    e88616f4:	03a00713          	li	a4,58
    e88616f8:	fee799e3          	bne	a5,a4,e88616ea <URLParseComponents+0x48>
	{
		schemePtr = inSrc;
    e88616fc:	83a2                	mv	t2,s0
		schemeEnd = ptr;
		inSrc = ptr + 1;
    e88616fe:	00188413          	addi	s0,a7,1
	passwordPtr	= NULL;
	passwordEnd	= NULL;
	hostPtr		= NULL;
	hostEnd		= NULL;
	
	if( ( ( inEnd - inSrc ) >= 2 ) && ( inSrc[ 0 ] == '/' ) && ( inSrc[ 1 ] == '/' ) )
    e8861702:	408587b3          	sub	a5,a1,s0
    e8861706:	4705                	li	a4,1
    e8861708:	10f75a63          	bge	a4,a5,e886181c <URLParseComponents+0x17a>
    e886170c:	00044783          	lbu	a5,0(s0)
    e8861710:	02f00713          	li	a4,47
    e8861714:	10e79463          	bne	a5,a4,e886181c <URLParseComponents+0x17a>
    e8861718:	00144703          	lbu	a4,1(s0)
    e886171c:	10f71063          	bne	a4,a5,e886181c <URLParseComponents+0x17a>
		const char *		authorityPtr;
		const char *		authorityEnd;
		const char *		userInfoPtr;
		const char *		userInfoEnd;
		
		inSrc += 2;
    e8861720:	0409                	addi	s0,s0,2
    e8861722:	8822                	mv	a6,s0
		authorityPtr = inSrc;
		while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '/' ) && ( c != '?' ) && ( c != '#' ) ) ++inSrc;
    e8861724:	02f00513          	li	a0,47
    e8861728:	02300713          	li	a4,35
    e886172c:	00b47a63          	bgeu	s0,a1,e8861740 <URLParseComponents+0x9e>
    e8861730:	00044783          	lbu	a5,0(s0)
    e8861734:	0ef7f313          	andi	t1,a5,239
    e8861738:	00a30463          	beq	t1,a0,e8861740 <URLParseComponents+0x9e>
    e886173c:	0ce79763          	bne	a5,a4,e886180a <URLParseComponents+0x168>
    e8861740:	87c2                	mv	a5,a6
		
		// Parse an optional userinfo (the "tom:secret" in the above URL).
		
		userInfoPtr = authorityPtr;
		userInfoEnd = userInfoPtr;
		while( ( userInfoEnd < authorityEnd ) && ( *userInfoEnd != '@' ) ) ++userInfoEnd;
    e8861742:	04000513          	li	a0,64
    e8861746:	0e87f263          	bgeu	a5,s0,e886182a <URLParseComponents+0x188>
    e886174a:	873e                	mv	a4,a5
    e886174c:	9817430b          	lbuia	t1,(a4),1,0
    e8861750:	0aa31f63          	bne	t1,a0,e886180e <URLParseComponents+0x16c>
		if( userInfoEnd < authorityEnd )
		{
			// Parse the username (the "tom" in the above URL).
			
			userPtr = userInfoPtr;
			userEnd = userPtr;
    e8861754:	8e42                	mv	t3,a6
			while( ( userEnd < userInfoEnd ) && ( *userEnd != ':' ) ) ++userEnd;
    e8861756:	03a00513          	li	a0,58
    e886175a:	0afe7e63          	bgeu	t3,a5,e8861816 <URLParseComponents+0x174>
    e886175e:	8372                	mv	t1,t3
    e8861760:	98134e8b          	lbuia	t4,(t1),1,0
    e8861764:	0aae9763          	bne	t4,a0,e8861812 <URLParseComponents+0x170>
			userPtr = userInfoPtr;
    e8861768:	8fc2                	mv	t6,a6
    e886176a:	8f22                	mv	t5,s0
    e886176c:	883a                	mv	a6,a4
	
	// Parse the path (the "/test" in "ftp://tom:secret@abc.com/test?x#y").
	
	c = '\0';
	pathPtr = inSrc;
	while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '?' ) && ( c != '#' ) ) ++inSrc;
    e886176e:	8ea2                	mv	t4,s0
	c = '\0';
    e8861770:	4701                	li	a4,0
	while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '?' ) && ( c != '#' ) ) ++inSrc;
    e8861772:	03f00493          	li	s1,63
    e8861776:	02300293          	li	t0,35
    e886177a:	0abefc63          	bgeu	t4,a1,e8861832 <URLParseComponents+0x190>
    e886177e:	8576                	mv	a0,t4
    e8861780:	9815470b          	lbuia	a4,(a0),1,0
    e8861784:	0a970b63          	beq	a4,s1,e886183a <URLParseComponents+0x198>
    e8861788:	0a571363          	bne	a4,t0,e886182e <URLParseComponents+0x18c>
    e886178c:	8776                	mv	a4,t4
	pathEnd = inSrc;
	
	// Parse an optional query (the "x" in "ftp://tom:secret@abc.com/test?x#y").
	
	queryPtr = NULL;
	queryEnd = NULL;	
    e886178e:	4481                	li	s1,0
	queryPtr = NULL;
    e8861790:	4281                	li	t0,0
	
	fragmentPtr = NULL;
	fragmentEnd = NULL;
	if( c == '#' )
	{
		fragmentPtr = ++inSrc;
    e8861792:	00170513          	addi	a0,a4,1
    e8861796:	8726                	mv	a4,s1
    e8861798:	84ae                	mv	s1,a1
	outComponents->schemePtr	= schemePtr;
	outComponents->schemeLen	= (size_t)( schemeEnd - schemePtr );
	outComponents->userPtr		= userPtr;
	outComponents->userLen		= (size_t)( userEnd - userPtr );
	outComponents->passwordPtr	= passwordPtr;
	outComponents->passwordLen	= (size_t)( passwordEnd - passwordPtr );
    e886179a:	406787b3          	sub	a5,a5,t1
	outComponents->schemeLen	= (size_t)( schemeEnd - schemePtr );
    e886179e:	407888b3          	sub	a7,a7,t2
	outComponents->userLen		= (size_t)( userEnd - userPtr );
    e88617a2:	41fe0e33          	sub	t3,t3,t6
	outComponents->passwordLen	= (size_t)( passwordEnd - passwordPtr );
    e88617a6:	f61c                	sd	a5,40(a2)
	outComponents->hostPtr		= hostPtr;
    e88617a8:	03063823          	sd	a6,48(a2) # fffffffffffff030 <__DRAM0_INF_BASE+0xffffffff0000f030>
	outComponents->hostLen		= (size_t)( hostEnd - hostPtr );
	outComponents->pathPtr		= pathPtr;
	outComponents->pathLen		= (size_t)( pathEnd - pathPtr );
    e88617ac:	408e87b3          	sub	a5,t4,s0
	outComponents->hostLen		= (size_t)( hostEnd - hostPtr );
    e88617b0:	410f0833          	sub	a6,t5,a6
	outComponents->queryPtr		= queryPtr;
	outComponents->queryLen		= (size_t)( queryEnd - queryPtr );
    e88617b4:	40570733          	sub	a4,a4,t0
	outComponents->fragmentPtr	= fragmentPtr;
	outComponents->fragmentLen	= (size_t)( fragmentEnd - fragmentPtr );
    e88617b8:	8d89                	sub	a1,a1,a0
	outComponents->schemePtr	= schemePtr;
    e88617ba:	00763023          	sd	t2,0(a2)
	outComponents->schemeLen	= (size_t)( schemeEnd - schemePtr );
    e88617be:	01163423          	sd	a7,8(a2)
	outComponents->userPtr		= userPtr;
    e88617c2:	01f63823          	sd	t6,16(a2)
	outComponents->userLen		= (size_t)( userEnd - userPtr );
    e88617c6:	01c63c23          	sd	t3,24(a2)
	outComponents->passwordPtr	= passwordPtr;
    e88617ca:	02663023          	sd	t1,32(a2)
	outComponents->hostLen		= (size_t)( hostEnd - hostPtr );
    e88617ce:	03063c23          	sd	a6,56(a2)
	outComponents->pathPtr		= pathPtr;
    e88617d2:	e220                	sd	s0,64(a2)
	outComponents->pathLen		= (size_t)( pathEnd - pathPtr );
    e88617d4:	e63c                	sd	a5,72(a2)
	outComponents->queryPtr		= queryPtr;
    e88617d6:	04563823          	sd	t0,80(a2)
	outComponents->queryLen		= (size_t)( queryEnd - queryPtr );
    e88617da:	ee38                	sd	a4,88(a2)
	outComponents->fragmentPtr	= fragmentPtr;
    e88617dc:	f228                	sd	a0,96(a2)
	outComponents->fragmentLen	= (size_t)( fragmentEnd - fragmentPtr );
    e88617de:	f62c                	sd	a1,104(a2)
	outComponents->segmentPtr	= ( ( pathPtr < pathEnd ) && ( *pathPtr == '/' ) ) ? ( pathPtr + 1 ) : pathPtr;
    e88617e0:	01d47963          	bgeu	s0,t4,e88617f2 <URLParseComponents+0x150>
    e88617e4:	00044703          	lbu	a4,0(s0)
    e88617e8:	02f00793          	li	a5,47
    e88617ec:	00f71363          	bne	a4,a5,e88617f2 <URLParseComponents+0x150>
    e88617f0:	0405                	addi	s0,s0,1
    e88617f2:	fa20                	sd	s0,112(a2)
	outComponents->segmentEnd	= pathEnd;
    e88617f4:	07d63c23          	sd	t4,120(a2)
	if( outSrc ) *outSrc = inSrc;
    e88617f8:	c291                	beqz	a3,e88617fc <URLParseComponents+0x15a>
    e88617fa:	e284                	sd	s1,0(a3)
	return( kNoErr );
}
    e88617fc:	70a2                	ld	ra,40(sp)
    e88617fe:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8861802:	7902                	ld	s2,32(sp)
    e8861804:	4501                	li	a0,0
    e8861806:	6145                	addi	sp,sp,48
    e8861808:	8082                	ret
		while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '/' ) && ( c != '?' ) && ( c != '#' ) ) ++inSrc;
    e886180a:	0405                	addi	s0,s0,1
    e886180c:	b705                	j	e886172c <URLParseComponents+0x8a>
    e886180e:	87ba                	mv	a5,a4
    e8861810:	bf1d                	j	e8861746 <URLParseComponents+0xa4>
    e8861812:	8e1a                	mv	t3,t1
    e8861814:	b799                	j	e886175a <URLParseComponents+0xb8>
	passwordEnd	= NULL;
    e8861816:	4781                	li	a5,0
	passwordPtr	= NULL;
    e8861818:	4301                	li	t1,0
    e886181a:	b7b9                	j	e8861768 <URLParseComponents+0xc6>
	hostEnd		= NULL;
    e886181c:	4f01                	li	t5,0
	hostPtr		= NULL;
    e886181e:	4801                	li	a6,0
	passwordEnd	= NULL;
    e8861820:	4781                	li	a5,0
	passwordPtr	= NULL;
    e8861822:	4301                	li	t1,0
	userEnd		= NULL;
    e8861824:	4e01                	li	t3,0
	userPtr		= NULL;
    e8861826:	4f81                	li	t6,0
    e8861828:	b799                	j	e886176e <URLParseComponents+0xcc>
    e886182a:	8f22                	mv	t5,s0
    e886182c:	bfd5                	j	e8861820 <URLParseComponents+0x17e>
	while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '?' ) && ( c != '#' ) ) ++inSrc;
    e886182e:	8eaa                	mv	t4,a0
    e8861830:	b7a9                	j	e886177a <URLParseComponents+0xd8>
	if( c == '?' )
    e8861832:	03f00513          	li	a0,63
    e8861836:	02a71263          	bne	a4,a0,e886185a <URLParseComponents+0x1b8>
		queryPtr = ++inSrc;
    e886183a:	001e8293          	addi	t0,t4,1
    e886183e:	8716                	mv	a4,t0
		while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '#' ) ) ++inSrc;
    e8861840:	02300493          	li	s1,35
    e8861844:	02b77163          	bgeu	a4,a1,e8861866 <URLParseComponents+0x1c4>
    e8861848:	853a                	mv	a0,a4
    e886184a:	9815490b          	lbuia	s2,(a0),1,0
    e886184e:	00991463          	bne	s2,s1,e8861856 <URLParseComponents+0x1b4>
    e8861852:	84ba                	mv	s1,a4
    e8861854:	bf3d                	j	e8861792 <URLParseComponents+0xf0>
    e8861856:	872a                	mv	a4,a0
    e8861858:	b7f5                	j	e8861844 <URLParseComponents+0x1a2>
    e886185a:	84f6                	mv	s1,t4
	queryEnd = NULL;	
    e886185c:	4701                	li	a4,0
	queryPtr = NULL;
    e886185e:	4281                	li	t0,0
	fragmentEnd = NULL;
    e8861860:	4581                	li	a1,0
	fragmentPtr = NULL;
    e8861862:	4501                	li	a0,0
    e8861864:	bf1d                	j	e886179a <URLParseComponents+0xf8>
    e8861866:	84ba                	mv	s1,a4
    e8861868:	bfe5                	j	e8861860 <URLParseComponents+0x1be>

00000000e886186a <URLGetNextVariable>:
	const char *	namePtr;
	const char *	nameEnd;
	const char *	valuePtr;
	const char *	valueEnd;
	
	require_action_quiet( inSrc < inEnd, exit, err = kNotFoundErr );
    e886186a:	06b57c63          	bgeu	a0,a1,e88618e2 <URLGetNextVariable+0x78>
    e886186e:	88aa                	mv	a7,a0
	
	// Variables are in the form: "name1=value1&name2=value2"
	
	c = '\0';
	namePtr = inSrc;
	while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '=' ) && ( c != '&' ) ) ++inSrc;
    e8861870:	03d00f13          	li	t5,61
    e8861874:	02600e93          	li	t4,38
    e8861878:	0008c303          	lbu	t1,0(a7)
    e886187c:	07e30763          	beq	t1,t5,e88618ea <URLGetNextVariable+0x80>
    e8861880:	05d31063          	bne	t1,t4,e88618c0 <URLGetNextVariable+0x56>
	nameEnd = inSrc;
	if( inSrc < inEnd ) ++inSrc;
    e8861884:	8e46                	mv	t3,a7
    e8861886:	04b8f263          	bgeu	a7,a1,e88618ca <URLGetNextVariable+0x60>
	
	if( c == '=' )
    e886188a:	03d00e13          	li	t3,61
	if( inSrc < inEnd ) ++inSrc;
    e886188e:	00188e93          	addi	t4,a7,1
	if( c == '=' )
    e8861892:	05c31663          	bne	t1,t3,e88618de <URLGetNextVariable+0x74>
	if( inSrc < inEnd ) ++inSrc;
    e8861896:	8376                	mv	t1,t4
	{
		valuePtr = inSrc;
		while( ( inSrc < inEnd ) && ( *inSrc != '&' ) ) ++inSrc;
    e8861898:	02600f13          	li	t5,38
    e886189c:	02b36a63          	bltu	t1,a1,e88618d0 <URLGetNextVariable+0x66>
	if( inSrc < inEnd ) ++inSrc;
    e88618a0:	8e1a                	mv	t3,t1
	{
		valuePtr = NULL;
		valueEnd = NULL;
	}
	
	*outNamePtr		= namePtr;
    e88618a2:	e208                	sd	a0,0(a2)
	*outNameLen		= (size_t)( nameEnd - namePtr );
    e88618a4:	40a888b3          	sub	a7,a7,a0
    e88618a8:	0116b023          	sd	a7,0(a3) # 1000 <memcmp-0xe87ff000>
	*outValuePtr	= valuePtr;
	*outValueLen	= (size_t)( valueEnd - valuePtr );
    e88618ac:	41d30333          	sub	t1,t1,t4
	*outValuePtr	= valuePtr;
    e88618b0:	01d73023          	sd	t4,0(a4)
	*outSrc			= inSrc;
    e88618b4:	4501                	li	a0,0
	*outValueLen	= (size_t)( valueEnd - valuePtr );
    e88618b6:	0067b023          	sd	t1,0(a5)
	*outSrc			= inSrc;
    e88618ba:	01c83023          	sd	t3,0(a6)
	err = kNoErr;
	
exit:
	return( err );
    e88618be:	8082                	ret
	while( ( inSrc < inEnd ) && ( ( c = *inSrc ) != '=' ) && ( c != '&' ) ) ++inSrc;
    e88618c0:	00188e13          	addi	t3,a7,1
    e88618c4:	88f2                	mv	a7,t3
    e88618c6:	fbc599e3          	bne	a1,t3,e8861878 <URLGetNextVariable+0xe>
		valueEnd = NULL;
    e88618ca:	4301                	li	t1,0
		valuePtr = NULL;
    e88618cc:	4e81                	li	t4,0
    e88618ce:	bfd1                	j	e88618a2 <URLGetNextVariable+0x38>
    e88618d0:	8e1a                	mv	t3,t1
		while( ( inSrc < inEnd ) && ( *inSrc != '&' ) ) ++inSrc;
    e88618d2:	981e4f8b          	lbuia	t6,(t3),1,0
    e88618d6:	fdef86e3          	beq	t6,t5,e88618a2 <URLGetNextVariable+0x38>
    e88618da:	8372                	mv	t1,t3
    e88618dc:	b7c1                	j	e886189c <URLGetNextVariable+0x32>
	if( inSrc < inEnd ) ++inSrc;
    e88618de:	8e76                	mv	t3,t4
    e88618e0:	b7ed                	j	e88618ca <URLGetNextVariable+0x60>
	require_action_quiet( inSrc < inEnd, exit, err = kNotFoundErr );
    e88618e2:	7579                	lui	a0,0xffffe
    e88618e4:	5b950513          	addi	a0,a0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
}
    e88618e8:	8082                	ret
	if( inSrc < inEnd ) ++inSrc;
    e88618ea:	fab8e0e3          	bltu	a7,a1,e886188a <URLGetNextVariable+0x20>
    e88618ee:	8ec6                	mv	t4,a7
    e88618f0:	8346                	mv	t1,a7
    e88618f2:	b77d                	j	e88618a0 <URLGetNextVariable+0x36>

00000000e88618f4 <URLGetOrCopyNextVariable>:
{
    e88618f4:	7119                	addi	sp,sp,-128
    e88618f6:	f0ca                	sd	s2,96(sp)
    e88618f8:	8942                	mv	s2,a6
	err = URLGetNextVariable( inSrc, inEnd, &namePtr, &nameLen, &valuePtr, &valueLen, outSrc );
    e88618fa:	680a                	ld	a6,128(sp)
{
    e88618fc:	ecce                	sd	s3,88(sp)
    e88618fe:	e8d2                	sd	s4,80(sp)
    e8861900:	e4d6                	sd	s5,72(sp)
    e8861902:	e0da                	sd	s6,64(sp)
    e8861904:	8ab6                	mv	s5,a3
    e8861906:	8b32                	mv	s6,a2
    e8861908:	8a3a                	mv	s4,a4
    e886190a:	89be                	mv	s3,a5
	err = URLGetNextVariable( inSrc, inEnd, &namePtr, &nameLen, &valuePtr, &valueLen, outSrc );
    e886190c:	1038                	addi	a4,sp,40
    e886190e:	181c                	addi	a5,sp,48
    e8861910:	0834                	addi	a3,sp,24
    e8861912:	0810                	addi	a2,sp,16
{
    e8861914:	f8a2                	sd	s0,112(sp)
    e8861916:	f4a6                	sd	s1,104(sp)
    e8861918:	fc86                	sd	ra,120(sp)
    e886191a:	84c6                	mv	s1,a7
	nameStorage  = NULL;
    e886191c:	f002                	sd	zero,32(sp)
	valueStorage = NULL;
    e886191e:	fc02                	sd	zero,56(sp)
	err = URLGetNextVariable( inSrc, inEnd, &namePtr, &nameLen, &valuePtr, &valueLen, outSrc );
    e8861920:	f4bff0ef          	jal	ra,e886186a <URLGetNextVariable>
    e8861924:	842a                	mv	s0,a0
	require_noerr_quiet( err, exit );
    e8861926:	e549                	bnez	a0,e88619b0 <URLGetOrCopyNextVariable+0xbc>
	err = URLDecodeEx( namePtr, nameLen, NULL, 0, NULL, &changes );
    e8861928:	65e2                	ld	a1,24(sp)
    e886192a:	6542                	ld	a0,16(sp)
    e886192c:	007c                	addi	a5,sp,12
    e886192e:	4701                	li	a4,0
    e8861930:	4681                	li	a3,0
    e8861932:	4601                	li	a2,0
    e8861934:	bb5ff0ef          	jal	ra,e88614e8 <URLDecodeEx>
    e8861938:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e886193a:	e93d                	bnez	a0,e88619b0 <URLGetOrCopyNextVariable+0xbc>
	if( changes > 0 )
    e886193c:	47b2                	lw	a5,12(sp)
    e886193e:	00f05b63          	blez	a5,e8861954 <URLGetOrCopyNextVariable+0x60>
		err = URLDecodeCopy( namePtr, nameLen, &nameStorage, &nameLen );
    e8861942:	65e2                	ld	a1,24(sp)
    e8861944:	6542                	ld	a0,16(sp)
    e8861946:	0834                	addi	a3,sp,24
    e8861948:	1010                	addi	a2,sp,32
    e886194a:	cc7ff0ef          	jal	ra,e8861610 <URLDecodeCopy>
		require_noerr( err, exit );
    e886194e:	e541                	bnez	a0,e88619d6 <URLGetOrCopyNextVariable+0xe2>
		namePtr = nameStorage;
    e8861950:	7782                	ld	a5,32(sp)
    e8861952:	e83e                	sd	a5,16(sp)
	if( outValueStorage )
    e8861954:	c495                	beqz	s1,e8861980 <URLGetOrCopyNextVariable+0x8c>
		err = URLDecodeEx( valuePtr, valueLen, NULL, 0, NULL, &changes );
    e8861956:	75c2                	ld	a1,48(sp)
    e8861958:	7522                	ld	a0,40(sp)
    e886195a:	007c                	addi	a5,sp,12
    e886195c:	4701                	li	a4,0
    e886195e:	4681                	li	a3,0
    e8861960:	4601                	li	a2,0
    e8861962:	b87ff0ef          	jal	ra,e88614e8 <URLDecodeEx>
		require_noerr( err, exit );
    e8861966:	e925                	bnez	a0,e88619d6 <URLGetOrCopyNextVariable+0xe2>
		if( changes > 0 )
    e8861968:	47b2                	lw	a5,12(sp)
    e886196a:	00f05b63          	blez	a5,e8861980 <URLGetOrCopyNextVariable+0x8c>
			err = URLDecodeCopy( valuePtr, valueLen, &valueStorage, &valueLen );
    e886196e:	75c2                	ld	a1,48(sp)
    e8861970:	7522                	ld	a0,40(sp)
    e8861972:	1814                	addi	a3,sp,48
    e8861974:	1830                	addi	a2,sp,56
    e8861976:	c9bff0ef          	jal	ra,e8861610 <URLDecodeCopy>
			require_noerr( err, exit );
    e886197a:	ed31                	bnez	a0,e88619d6 <URLGetOrCopyNextVariable+0xe2>
			valuePtr = valueStorage;
    e886197c:	77e2                	ld	a5,56(sp)
    e886197e:	f43e                	sd	a5,40(sp)
	*outNamePtr			= namePtr;
    e8861980:	67c2                	ld	a5,16(sp)
    e8861982:	00fb3023          	sd	a5,0(s6)
	*outNameLen			= nameLen;
    e8861986:	67e2                	ld	a5,24(sp)
    e8861988:	00fab023          	sd	a5,0(s5)
	*outNameStorage		= nameStorage;
    e886198c:	7782                	ld	a5,32(sp)
	nameStorage			= NULL;
    e886198e:	f002                	sd	zero,32(sp)
	*outNameStorage		= nameStorage;
    e8861990:	00fa3023          	sd	a5,0(s4)
	if( outValuePtr ) *outValuePtr = valuePtr;
    e8861994:	00098563          	beqz	s3,e886199e <URLGetOrCopyNextVariable+0xaa>
    e8861998:	77a2                	ld	a5,40(sp)
    e886199a:	00f9b023          	sd	a5,0(s3)
	if( outValueLen ) *outValueLen = valueLen;
    e886199e:	00090563          	beqz	s2,e88619a8 <URLGetOrCopyNextVariable+0xb4>
    e88619a2:	77c2                	ld	a5,48(sp)
    e88619a4:	00f93023          	sd	a5,0(s2)
	if( outValueStorage )
    e88619a8:	c481                	beqz	s1,e88619b0 <URLGetOrCopyNextVariable+0xbc>
		*outValueStorage	= valueStorage;
    e88619aa:	77e2                	ld	a5,56(sp)
		valueStorage		= NULL;
    e88619ac:	fc02                	sd	zero,56(sp)
		*outValueStorage	= valueStorage;
    e88619ae:	e09c                	sd	a5,0(s1)
	if( nameStorage )  free( nameStorage );
    e88619b0:	7502                	ld	a0,32(sp)
    e88619b2:	c119                	beqz	a0,e88619b8 <URLGetOrCopyNextVariable+0xc4>
    e88619b4:	14d1a0ef          	jal	ra,e887c300 <eLIBs_free>
	if( valueStorage ) free( valueStorage );
    e88619b8:	7562                	ld	a0,56(sp)
    e88619ba:	c119                	beqz	a0,e88619c0 <URLGetOrCopyNextVariable+0xcc>
    e88619bc:	1451a0ef          	jal	ra,e887c300 <eLIBs_free>
}
    e88619c0:	8522                	mv	a0,s0
    e88619c2:	70e6                	ld	ra,120(sp)
    e88619c4:	7446                	ld	s0,112(sp)
    e88619c6:	74a6                	ld	s1,104(sp)
    e88619c8:	7906                	ld	s2,96(sp)
    e88619ca:	69e6                	ld	s3,88(sp)
    e88619cc:	6a46                	ld	s4,80(sp)
    e88619ce:	6aa6                	ld	s5,72(sp)
    e88619d0:	6b06                	ld	s6,64(sp)
    e88619d2:	6109                	addi	sp,sp,128
    e88619d4:	8082                	ret
    e88619d6:	842a                	mv	s0,a0
    e88619d8:	bfe1                	j	e88619b0 <URLGetOrCopyNextVariable+0xbc>

00000000e88619da <URLGetOrCopyVariable>:
		const char *	inName, 
		const char **	outValuePtr, 
		size_t *		outValueLen, 
		char **			outValueStorage, 
		const char **	outSrc )
{
    e88619da:	7171                	addi	sp,sp,-176
    e88619dc:	ed26                	sd	s1,152(sp)
    e88619de:	e94a                	sd	s2,144(sp)
    e88619e0:	e54e                	sd	s3,136(sp)
    e88619e2:	e152                	sd	s4,128(sp)
    e88619e4:	fcd6                	sd	s5,120(sp)
    e88619e6:	f8da                	sd	s6,112(sp)
    e88619e8:	f4de                	sd	s7,104(sp)
    e88619ea:	f506                	sd	ra,168(sp)
    e88619ec:	f122                	sd	s0,160(sp)
    e88619ee:	ec2a                	sd	a0,24(sp)
    e88619f0:	8aae                	mv	s5,a1
    e88619f2:	8bb2                	mv	s7,a2
    e88619f4:	8936                	mv	s2,a3
    e88619f6:	89ba                	mv	s3,a4
    e88619f8:	84be                	mv	s1,a5
    e88619fa:	8a42                	mv	s4,a6
	OSStatus		err;
	const char *	namePtr		= NULL;
    e88619fc:	f802                	sd	zero,48(sp)
	size_t			nameLen		= 0;
    e88619fe:	fc02                	sd	zero,56(sp)
	char *			nameStorage	= NULL;
    e8861a00:	e082                	sd	zero,64(sp)
	const char *	valuePtr	= NULL;
    e8861a02:	e482                	sd	zero,72(sp)
	size_t			valueLen;
	char *			valueStorage;
	int				match;
	int				changes;
	
	while( ( err = URLGetOrCopyNextVariable( inSrc, inEnd, 
    e8861a04:	01810b13          	addi	s6,sp,24
    e8861a08:	6562                	ld	a0,24(sp)
    e8861a0a:	e05a                	sd	s6,0(sp)
    e8861a0c:	4881                	li	a7,0
    e8861a0e:	05010813          	addi	a6,sp,80
    e8861a12:	00bc                	addi	a5,sp,72
    e8861a14:	0098                	addi	a4,sp,64
    e8861a16:	1834                	addi	a3,sp,56
    e8861a18:	1810                	addi	a2,sp,48
    e8861a1a:	85d6                	mv	a1,s5
    e8861a1c:	ed9ff0ef          	jal	ra,e88618f4 <URLGetOrCopyNextVariable>
    e8861a20:	842a                	mv	s0,a0
    e8861a22:	e52d                	bnez	a0,e8861a8c <URLGetOrCopyVariable+0xb2>
		&namePtr,  &nameLen,  &nameStorage, 
		&valuePtr, &valueLen, NULL, 
		&inSrc ) ) == kNoErr )
	{
		match = ( strncmpx( namePtr, nameLen, inName ) == 0 );
    e8861a24:	75e2                	ld	a1,56(sp)
    e8861a26:	7542                	ld	a0,48(sp)
    e8861a28:	865e                	mv	a2,s7
    e8861a2a:	f01fd0ef          	jal	ra,e885f92a <strncmpx>
    e8861a2e:	842a                	mv	s0,a0
		if( nameStorage ) free( nameStorage );
    e8861a30:	6506                	ld	a0,64(sp)
    e8861a32:	c119                	beqz	a0,e8861a38 <URLGetOrCopyVariable+0x5e>
    e8861a34:	0cd1a0ef          	jal	ra,e887c300 <eLIBs_free>
		if( !match ) continue;
    e8861a38:	f861                	bnez	s0,e8861a08 <URLGetOrCopyVariable+0x2e>
		
		valueStorage = NULL;
    e8861a3a:	ec82                	sd	zero,88(sp)
		if( outValueStorage )
    e8861a3c:	c495                	beqz	s1,e8861a68 <URLGetOrCopyVariable+0x8e>
		{
			err = URLDecodeEx( valuePtr, valueLen, NULL, 0, NULL, &changes );
    e8861a3e:	65c6                	ld	a1,80(sp)
    e8861a40:	6526                	ld	a0,72(sp)
    e8861a42:	107c                	addi	a5,sp,44
    e8861a44:	4701                	li	a4,0
    e8861a46:	4681                	li	a3,0
    e8861a48:	4601                	li	a2,0
    e8861a4a:	a9fff0ef          	jal	ra,e88614e8 <URLDecodeEx>
			require_noerr( err, exit );
    e8861a4e:	e939                	bnez	a0,e8861aa4 <URLGetOrCopyVariable+0xca>
			if( changes > 0 )
    e8861a50:	57b2                	lw	a5,44(sp)
    e8861a52:	00f05b63          	blez	a5,e8861a68 <URLGetOrCopyVariable+0x8e>
			{
				err = URLDecodeCopy( valuePtr, valueLen, &valueStorage, &valueLen );
    e8861a56:	65c6                	ld	a1,80(sp)
    e8861a58:	6526                	ld	a0,72(sp)
    e8861a5a:	0894                	addi	a3,sp,80
    e8861a5c:	08b0                	addi	a2,sp,88
    e8861a5e:	bb3ff0ef          	jal	ra,e8861610 <URLDecodeCopy>
				require_noerr( err, exit );
    e8861a62:	e129                	bnez	a0,e8861aa4 <URLGetOrCopyVariable+0xca>
				valuePtr = valueStorage;
    e8861a64:	67e6                	ld	a5,88(sp)
    e8861a66:	e4be                	sd	a5,72(sp)
			}
		}
		
		if( outValuePtr )		*outValuePtr		= valuePtr;
    e8861a68:	00090563          	beqz	s2,e8861a72 <URLGetOrCopyVariable+0x98>
    e8861a6c:	67a6                	ld	a5,72(sp)
    e8861a6e:	00f93023          	sd	a5,0(s2)
		if( outValueLen )		*outValueLen		= valueLen;
    e8861a72:	00098563          	beqz	s3,e8861a7c <URLGetOrCopyVariable+0xa2>
    e8861a76:	67c6                	ld	a5,80(sp)
    e8861a78:	00f9b023          	sd	a5,0(s3)
		if( outValueStorage )	*outValueStorage	= valueStorage;
    e8861a7c:	c099                	beqz	s1,e8861a82 <URLGetOrCopyVariable+0xa8>
    e8861a7e:	67e6                	ld	a5,88(sp)
    e8861a80:	e09c                	sd	a5,0(s1)
		if( outSrc )			*outSrc				= inSrc;
    e8861a82:	000a0563          	beqz	s4,e8861a8c <URLGetOrCopyVariable+0xb2>
    e8861a86:	67e2                	ld	a5,24(sp)
    e8861a88:	00fa3023          	sd	a5,0(s4)
		return( kNoErr );
	}
	
exit:
	return( err );
}
    e8861a8c:	8522                	mv	a0,s0
    e8861a8e:	70aa                	ld	ra,168(sp)
    e8861a90:	740a                	ld	s0,160(sp)
    e8861a92:	64ea                	ld	s1,152(sp)
    e8861a94:	694a                	ld	s2,144(sp)
    e8861a96:	69aa                	ld	s3,136(sp)
    e8861a98:	6a0a                	ld	s4,128(sp)
    e8861a9a:	7ae6                	ld	s5,120(sp)
    e8861a9c:	7b46                	ld	s6,112(sp)
    e8861a9e:	7ba6                	ld	s7,104(sp)
    e8861aa0:	614d                	addi	sp,sp,176
    e8861aa2:	8082                	ret
    e8861aa4:	842a                	mv	s0,a0
    e8861aa6:	b7dd                	j	e8861a8c <URLGetOrCopyVariable+0xb2>

00000000e8861aa8 <UUIDGet>:
//===========================================================================================================================
//	UUIDGet
//===========================================================================================================================

void	UUIDGet( void *outUUID )
{
    e8861aa8:	1141                	addi	sp,sp,-16
	RandomBytes( outUUID, 16 );
    e8861aaa:	45c1                	li	a1,16
{
    e8861aac:	e022                	sd	s0,0(sp)
    e8861aae:	e406                	sd	ra,8(sp)
    e8861ab0:	842a                	mv	s0,a0
	RandomBytes( outUUID, 16 );
    e8861ab2:	df2fb0ef          	jal	ra,e885d0a4 <RandomBytes>
	UUIDSetVersion( outUUID, kUUIDVersion_4_Random );
    e8861ab6:	00644783          	lbu	a5,6(s0)
	UUIDMakeRFC4122( outUUID );
}
    e8861aba:	60a2                	ld	ra,8(sp)
	UUIDSetVersion( outUUID, kUUIDVersion_4_Random );
    e8861abc:	8bbd                	andi	a5,a5,15
    e8861abe:	0407e793          	ori	a5,a5,64
    e8861ac2:	00f40323          	sb	a5,6(s0)
	UUIDMakeRFC4122( outUUID );
    e8861ac6:	00844783          	lbu	a5,8(s0)
    e8861aca:	03f7f793          	andi	a5,a5,63
    e8861ace:	f807e793          	ori	a5,a5,-128
    e8861ad2:	00f40423          	sb	a5,8(s0)
}
    e8861ad6:	6402                	ld	s0,0(sp)
    e8861ad8:	0141                	addi	sp,sp,16
    e8861ada:	8082                	ret

00000000e8861adc <unicode_recursive_decompose>:
}


static uint32_t
unicode_recursive_decompose(uint16_t character, uint16_t *convertedChars)
{
    e8861adc:	7179                	addi	sp,sp,-48
    e8861ade:	f04a                	sd	s2,32(sp)
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e8861ae0:	f405069b          	addiw	a3,a0,-192
    e8861ae4:	6741                	lui	a4,0x10
{
    e8861ae6:	f406                	sd	ra,40(sp)
    e8861ae8:	fa91540b          	sdd	s0,s1,(sp),1,4
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e8861aec:	3c06b68b          	extu	a3,a3,15,0
    e8861af0:	a8e70713          	addi	a4,a4,-1394 # fa8e <memcmp-0xe87f0572>
{
    e8861af4:	892e                	mv	s2,a1
		return (0);
    e8861af6:	4781                	li	a5,0
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e8861af8:	04d76163          	bltu	a4,a3,e8861b3a <unicode_recursive_decompose+0x5e>
	p = theTable;
    e8861afc:	00065797          	auipc	a5,0x65
    e8861b00:	9dc78793          	addi	a5,a5,-1572 # e88c64d8 <__CFUniCharDecompositionTable>
	q = p + (numElem-1);
    e8861b04:	00066697          	auipc	a3,0x66
    e8861b08:	8f868693          	addi	a3,a3,-1800 # e88c73fc <__CFUniCharDecompositionTable+0xf24>
		if (character < divider->_key)
    e8861b0c:	2501                	sext.w	a0,a0
		divider = p + ((q - p) >> 1);	/* divide by 2 */
    e8861b0e:	40f68733          	sub	a4,a3,a5
    e8861b12:	870d                	srai	a4,a4,0x3
    e8861b14:	04e7960b          	addsl	a2,a5,a4,2
		if (character < divider->_key)
    e8861b18:	a4e7c70b          	lrhu	a4,a5,a4,2
    e8861b1c:	00e57863          	bgeu	a0,a4,e8861b2c <unicode_recursive_decompose+0x50>
			q = divider - 1;
    e8861b20:	ffc60693          	addi	a3,a2,-4
	while (p <= q) {
    e8861b24:	fef6f5e3          	bgeu	a3,a5,e8861b0e <unicode_recursive_decompose+0x32>
		return (0);
    e8861b28:	4781                	li	a5,0
    e8861b2a:	a801                	j	e8861b3a <unicode_recursive_decompose+0x5e>
		else if (character > divider->_key)
    e8861b2c:	00a77563          	bgeu	a4,a0,e8861b36 <unicode_recursive_decompose+0x5a>
			p = divider + 1;
    e8861b30:	00460793          	addi	a5,a2,4
    e8861b34:	bfc5                	j	e8861b24 <unicode_recursive_decompose+0x48>
			return (divider->_value);
    e8861b36:	00265783          	lhu	a5,2(a2)
	const uint16_t *bmpMappings;
	uint32_t usedLength;

	value = getmappedvalue16(__CFUniCharDecompositionTable, __UniCharDecompositionTableLength, character);
	length = EXTRACT_COUNT(value);
	firstChar = (uint16_t)(value & 0x0FFF);
    e8861b3a:	2c07b70b          	extu	a4,a5,11,0
    e8861b3e:	3c07370b          	extu	a4,a4,15,0
	theChar = firstChar;
    e8861b42:	00e11723          	sh	a4,14(sp)
	length = EXTRACT_COUNT(value);
    e8861b46:	38c7b48b          	extu	s1,a5,14,12
	bmpMappings = (length == 1 ? &theChar : __CFUniCharMultipleDecompositionTable + firstChar);
    e8861b4a:	4685                	li	a3,1
    e8861b4c:	00e10413          	addi	s0,sp,14
    e8861b50:	00d48863          	beq	s1,a3,e8861b60 <unicode_recursive_decompose+0x84>
    e8861b54:	00066417          	auipc	s0,0x66
    e8861b58:	8ac40413          	addi	s0,s0,-1876 # e88c7400 <__CFUniCharMultipleDecompositionTable>
    e8861b5c:	02e4140b          	addsl	s0,s0,a4,1
	usedLength = 0;

	if (value & RECURSIVE_DECOMPOSITION) {
    e8861b60:	fcf7b70b          	extu	a4,a5,63,15
	usedLength = 0;
    e8861b64:	4501                	li	a0,0
	if (value & RECURSIVE_DECOMPOSITION) {
    e8861b66:	cf11                	beqz	a4,e8861b82 <unicode_recursive_decompose+0xa6>
	    usedLength = unicode_recursive_decompose((uint16_t)*bmpMappings, convertedChars);
    e8861b68:	00045503          	lhu	a0,0(s0)
    e8861b6c:	85ca                	mv	a1,s2
    e8861b6e:	f6fff0ef          	jal	ra,e8861adc <unicode_recursive_decompose>
    e8861b72:	2501                	sext.w	a0,a0
	
	    --length;	/* Decrement for the first char */
	    if (!usedLength)
    e8861b74:	cd09                	beqz	a0,e8861b8e <unicode_recursive_decompose+0xb2>
	    	return 0;
	    ++bmpMappings;
	    convertedChars += usedLength;
    e8861b76:	7c05378b          	extu	a5,a0,31,0
    e8861b7a:	34fd                	addiw	s1,s1,-1
	    ++bmpMappings;
    e8861b7c:	0409                	addi	s0,s0,2
	    convertedChars += usedLength;
    e8861b7e:	02f9190b          	addsl	s2,s2,a5,1
	}
	
	usedLength += length;
    e8861b82:	9d25                	addw	a0,a0,s1
	
	while (length--)
    e8861b84:	4781                	li	a5,0
    e8861b86:	0007871b          	sext.w	a4,a5
    e8861b8a:	00e49863          	bne	s1,a4,e8861b9a <unicode_recursive_decompose+0xbe>
		*(convertedChars++) = *(bmpMappings++);
	
	return (usedLength);
}
    e8861b8e:	70a2                	ld	ra,40(sp)
    e8861b90:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8861b94:	7902                	ld	s2,32(sp)
    e8861b96:	6145                	addi	sp,sp,48
    e8861b98:	8082                	ret
		*(convertedChars++) = *(bmpMappings++);
    e8861b9a:	a2f4470b          	lrhu	a4,s0,a5,1
    e8861b9e:	22f9570b          	srh	a4,s2,a5,1
    e8861ba2:	0785                	addi	a5,a5,1
    e8861ba4:	b7cd                	j	e8861b86 <unicode_recursive_decompose+0xaa>

00000000e8861ba6 <unicode_decompose>:
 * Similar to CFUniCharDecomposeCharacter
 */
static int
unicode_decompose(uint16_t character, uint16_t *convertedChars)
{
	if ((character >= HANGUL_SBASE) &&
    e8861ba6:	6795                	lui	a5,0x5
    e8861ba8:	4007879b          	addiw	a5,a5,1024
    e8861bac:	9fa9                	addw	a5,a5,a0
    e8861bae:	670d                	lui	a4,0x3
    e8861bb0:	3c07b78b          	extu	a5,a5,15,0
    e8861bb4:	ba470713          	addi	a4,a4,-1116 # 2ba4 <memcmp-0xe87fd45c>
{
    e8861bb8:	862e                	mv	a2,a1
	if ((character >= HANGUL_SBASE) &&
    e8861bba:	04f76863          	bltu	a4,a5,e8861c0a <unicode_decompose+0x64>
	    (character <= (HANGUL_SBASE + HANGUL_SCOUNT))) {
		uint32_t length;

		character -= HANGUL_SBASE;
		length = (character % HANGUL_TCOUNT ? 3 : 2);
    e8861bbe:	4871                	li	a6,28

		*(convertedChars++) =
			(uint16_t)(character / HANGUL_NCOUNT + HANGUL_LBASE);
    e8861bc0:	24c00893          	li	a7,588
		length = (character % HANGUL_TCOUNT ? 3 : 2);
    e8861bc4:	0307f73b          	remuw	a4,a5,a6
			(uint16_t)(character / HANGUL_NCOUNT + HANGUL_LBASE);
    e8861bc8:	0317d5bb          	divuw	a1,a5,a7
		length = (character % HANGUL_TCOUNT ? 3 : 2);
    e8861bcc:	3c07368b          	extu	a3,a4,15,0
			(uint16_t)(character / HANGUL_NCOUNT + HANGUL_LBASE);
    e8861bd0:	6705                	lui	a4,0x1
    e8861bd2:	1007031b          	addiw	t1,a4,256
		length = (character % HANGUL_TCOUNT ? 3 : 2);
    e8861bd6:	00d03533          	snez	a0,a3
    e8861bda:	0509                	addi	a0,a0,2
		*(convertedChars++) =
			(uint16_t)((character % HANGUL_NCOUNT) / HANGUL_TCOUNT + HANGUL_VBASE);
    e8861bdc:	0317f7bb          	remuw	a5,a5,a7
			(uint16_t)(character / HANGUL_NCOUNT + HANGUL_LBASE);
    e8861be0:	006585bb          	addw	a1,a1,t1
		*(convertedChars++) =
    e8861be4:	00b61023          	sh	a1,0(a2)
			(uint16_t)((character % HANGUL_NCOUNT) / HANGUL_TCOUNT + HANGUL_VBASE);
    e8861be8:	1617059b          	addiw	a1,a4,353
    e8861bec:	0307d7bb          	divuw	a5,a5,a6
    e8861bf0:	9fad                	addw	a5,a5,a1
		*(convertedChars++) =
    e8861bf2:	00f61123          	sh	a5,2(a2)
		if (length > 2)
    e8861bf6:	478d                	li	a5,3
    e8861bf8:	00f51763          	bne	a0,a5,e8861c06 <unicode_decompose+0x60>
			*convertedChars = (uint16_t)((character % HANGUL_TCOUNT) + HANGUL_TBASE);
    e8861bfc:	1a77071b          	addiw	a4,a4,423
    e8861c00:	9f35                	addw	a4,a4,a3
    e8861c02:	00e61223          	sh	a4,4(a2)
		return ((int)length);
    e8861c06:	2501                	sext.w	a0,a0
	} else {
		return ((int)unicode_recursive_decompose(character, convertedChars));
	}
}
    e8861c08:	8082                	ret
		return ((int)unicode_recursive_decompose(character, convertedChars));
    e8861c0a:	ed3ff06f          	j	e8861adc <unicode_recursive_decompose>

00000000e8861c0e <priortysort>:
	uint8_t value = bitmap[(character >> 8)];
    e8861c0e:	00063897          	auipc	a7,0x63
    e8861c12:	08a88893          	addi	a7,a7,138 # e88c4c98 <__CFUniCharCombiningPropertyBitmap>
	uint16_t *ch1, *ch2;
	uint16_t *end;
	int changes;
	uint16_t tmp, tmp2;

	end = characters + count;
    e8861c16:	02b5158b          	addsl	a1,a0,a1,1
    e8861c1a:	8346                	mv	t1,a7
	do {
		changes = 0;
		ch1 = characters;
		ch2 = characters + 1;
		tmp = ReadHost16(ch1);
    e8861c1c:	00154703          	lbu	a4,1(a0)
    e8861c20:	00054783          	lbu	a5,0(a0)
		ch2 = characters + 1;
    e8861c24:	00250693          	addi	a3,a0,2
		tmp = ReadHost16(ch1);
    e8861c28:	0087171b          	slliw	a4,a4,0x8
    e8861c2c:	8f5d                	or	a4,a4,a5
	uint8_t value = bitmap[(character >> 8)];
    e8861c2e:	00875793          	srli	a5,a4,0x8
    e8861c32:	8117c78b          	lrbu	a5,a5,a7,0
	if (value) {
    e8861c36:	c799                	beqz	a5,e8861c44 <priortysort+0x36>
		bitmap = bitmap + (value * 256);
    e8861c38:	07a2                	slli	a5,a5,0x8
		return bitmap[character % 256];
    e8861c3a:	0ff77713          	andi	a4,a4,255
    e8861c3e:	97ba                	add	a5,a5,a4
    e8861c40:	8117c78b          	lrbu	a5,a5,a7,0
		p2 = get_combining_class(tmp);
    e8861c44:	873e                	mv	a4,a5
		changes = 0;
    e8861c46:	4e01                	li	t3,0
		while (ch2 < end) {
    e8861c48:	00b6e563          	bltu	a3,a1,e8861c52 <priortysort+0x44>
				p2 = p1;
			}
			++ch1;
			++ch2;
		}
	} while (changes);
    e8861c4c:	fc0e18e3          	bnez	t3,e8861c1c <priortysort+0xe>
}
    e8861c50:	8082                	ret
			tmp = ReadHost16(ch2);
    e8861c52:	0016c603          	lbu	a2,1(a3)
    e8861c56:	0006c783          	lbu	a5,0(a3)
    e8861c5a:	0086161b          	slliw	a2,a2,0x8
    e8861c5e:	8e5d                	or	a2,a2,a5
    e8861c60:	3c06260b          	ext	a2,a2,15,0
    e8861c64:	3c06380b          	extu	a6,a2,15,0
	uint8_t value = bitmap[(character >> 8)];
    e8861c68:	00885e93          	srli	t4,a6,0x8
    e8861c6c:	81d3478b          	lrbu	a5,t1,t4,0
	if (value) {
    e8861c70:	c799                	beqz	a5,e8861c7e <priortysort+0x70>
		bitmap = bitmap + (value * 256);
    e8861c72:	07a2                	slli	a5,a5,0x8
		return bitmap[character % 256];
    e8861c74:	0ff87813          	andi	a6,a6,255
    e8861c78:	97c2                	add	a5,a5,a6
    e8861c7a:	80f3478b          	lrbu	a5,t1,a5,0
			if (p1 > p2 && p2 != 0) {
    e8861c7e:	02e7f963          	bgeu	a5,a4,e8861cb0 <priortysort+0xa2>
    e8861c82:	c79d                	beqz	a5,e8861cb0 <priortysort+0xa2>
				tmp  = ReadHost16(ch1);
    e8861c84:	fff6c783          	lbu	a5,-1(a3)
    e8861c88:	ffe6c803          	lbu	a6,-2(a3)
				WriteHost16(ch1, tmp2);
    e8861c8c:	ffd68fa3          	sb	t4,-1(a3)
				tmp  = ReadHost16(ch1);
    e8861c90:	0087979b          	slliw	a5,a5,0x8
    e8861c94:	0107e7b3          	or	a5,a5,a6
    e8861c98:	3c07a78b          	ext	a5,a5,15,0
				WriteHost16(ch2, tmp);
    e8861c9c:	00f68023          	sb	a5,0(a3)
    e8861ca0:	3c87b78b          	extu	a5,a5,15,8
    e8861ca4:	00f680a3          	sb	a5,1(a3)
				WriteHost16(ch1, tmp2);
    e8861ca8:	fec68f23          	sb	a2,-2(a3)
				WriteHost16(ch2, tmp);
    e8861cac:	87ba                	mv	a5,a4
				changes = 1;
    e8861cae:	4e05                	li	t3,1
			++ch2;
    e8861cb0:	0689                	addi	a3,a3,2
    e8861cb2:	873e                	mv	a4,a5
    e8861cb4:	bf51                	j	e8861c48 <priortysort+0x3a>

00000000e8861cb6 <utf8_encodelen>:
{
    e8861cb6:	7159                	addi	sp,sp,-112
    e8861cb8:	e4ce                	sd	s3,72(sp)
    e8861cba:	fc56                	sd	s5,56(sp)
	charcnt = (int)(ucslen / 2);
    e8861cbc:	8185                	srli	a1,a1,0x1
	int swapbytes = (flags & UTF_REVERSE_ENDIAN);
    e8861cbe:	0016fa93          	andi	s5,a3,1
		len += UNICODE_TO_UTF8_LEN(ucs_ch);
    e8861cc2:	69b9                	lui	s3,0xe
	int decompose = (flags & UTF_DECOMPOSED);
    e8861cc4:	8a91                	andi	a3,a3,4
{
    e8861cc6:	f0a2                	sd	s0,96(sp)
    e8861cc8:	eca6                	sd	s1,88(sp)
    e8861cca:	e8ca                	sd	s2,80(sp)
    e8861ccc:	e0d2                	sd	s4,64(sp)
    e8861cce:	f85a                	sd	s6,48(sp)
    e8861cd0:	f486                	sd	ra,104(sp)
    e8861cd2:	f45e                	sd	s7,40(sp)
    e8861cd4:	84aa                	mv	s1,a0
	int decompose = (flags & UTF_DECOMPOSED);
    e8861cd6:	0006841b          	sext.w	s0,a3
	charcnt = (int)(ucslen / 2);
    e8861cda:	2581                	sext.w	a1,a1
	len = 0;
    e8861cdc:	4901                	li	s2,0
	int extra = 0;
    e8861cde:	4801                	li	a6,0
	uint16_t * chp = NULL;
    e8861ce0:	4781                	li	a5,0
		len += UNICODE_TO_UTF8_LEN(ucs_ch);
    e8861ce2:	7ff00b13          	li	s6,2047
    e8861ce6:	80098993          	addi	s3,s3,-2048 # d800 <memcmp-0xe87f2800>
	value = bitmap[(character >> 8) & 0xFF];
    e8861cea:	00064a17          	auipc	s4,0x64
    e8861cee:	4aea0a13          	addi	s4,s4,1198 # e88c6198 <__CFUniCharDecomposableBitmap>
	while (charcnt-- > 0) {
    e8861cf2:	fff5869b          	addiw	a3,a1,-1
    e8861cf6:	8bb6                	mv	s7,a3
    e8861cf8:	00b04e63          	bgtz	a1,e8861d14 <utf8_encodelen+0x5e>
}
    e8861cfc:	70a6                	ld	ra,104(sp)
    e8861cfe:	7406                	ld	s0,96(sp)
    e8861d00:	854a                	mv	a0,s2
    e8861d02:	64e6                	ld	s1,88(sp)
    e8861d04:	6946                	ld	s2,80(sp)
    e8861d06:	69a6                	ld	s3,72(sp)
    e8861d08:	6a06                	ld	s4,64(sp)
    e8861d0a:	7ae2                	ld	s5,56(sp)
    e8861d0c:	7b42                	ld	s6,48(sp)
    e8861d0e:	7ba2                	ld	s7,40(sp)
    e8861d10:	6165                	addi	sp,sp,112
    e8861d12:	8082                	ret
		if (extra > 0) {
    e8861d14:	03005563          	blez	a6,e8861d3e <utf8_encodelen+0x88>
			ucs_ch = *chp++; // Note: chp is from the local, aligned "sequence" array.
    e8861d18:	b827c50b          	lhuia	a0,(a5),2,0
			--extra;
    e8861d1c:	387d                	addiw	a6,a6,-1
		len += UNICODE_TO_UTF8_LEN(ucs_ch);
    e8861d1e:	07f00593          	li	a1,127
    e8861d22:	4705                	li	a4,1
    e8861d24:	00a5fa63          	bgeu	a1,a0,e8861d38 <utf8_encodelen+0x82>
    e8861d28:	4709                	li	a4,2
    e8861d2a:	00ab7763          	bgeu	s6,a0,e8861d38 <utf8_encodelen+0x82>
    e8861d2e:	80057513          	andi	a0,a0,-2048
    e8861d32:	01350363          	beq	a0,s3,e8861d38 <utf8_encodelen+0x82>
    e8861d36:	470d                	li	a4,3
    e8861d38:	993a                	add	s2,s2,a4
    e8861d3a:	85b6                	mv	a1,a3
    e8861d3c:	bf5d                	j	e8861cf2 <utf8_encodelen+0x3c>
			if (swapbytes)	ucs_ch = ReadSwap16(ucsp);
    e8861d3e:	0004c583          	lbu	a1,0(s1)
    e8861d42:	0014c703          	lbu	a4,1(s1)
    e8861d46:	020a8063          	beqz	s5,e8861d66 <utf8_encodelen+0xb0>
    e8861d4a:	00859513          	slli	a0,a1,0x8
    e8861d4e:	8d59                	or	a0,a0,a4
			if (ucs_ch == '/') {
    e8861d50:	0005059b          	sext.w	a1,a0
    e8861d54:	02f00713          	li	a4,47
			++ucsp;
    e8861d58:	0489                	addi	s1,s1,2
			if (ucs_ch == '/') {
    e8861d5a:	00e59a63          	bne	a1,a4,e8861d6e <utf8_encodelen+0xb8>
		len += UNICODE_TO_UTF8_LEN(ucs_ch);
    e8861d5e:	4705                	li	a4,1
				ucs_ch = (uint16_t)(altslash ? altslash : '_');
    e8861d60:	de61                	beqz	a2,e8861d38 <utf8_encodelen+0x82>
    e8861d62:	8532                	mv	a0,a2
    e8861d64:	bf6d                	j	e8861d1e <utf8_encodelen+0x68>
			else			ucs_ch = ReadHost16(ucsp);
    e8861d66:	00871513          	slli	a0,a4,0x8
    e8861d6a:	8d4d                	or	a0,a0,a1
    e8861d6c:	b7d5                	j	e8861d50 <utf8_encodelen+0x9a>
		len += UNICODE_TO_UTF8_LEN(ucs_ch);
    e8861d6e:	470d                	li	a4,3
			} else if (ucs_ch == '\0') {
    e8861d70:	d561                	beqz	a0,e8861d38 <utf8_encodelen+0x82>
			} else if (decompose && unicode_decomposeable(ucs_ch)) {
    e8861d72:	d455                	beqz	s0,e8861d1e <utf8_encodelen+0x68>
	if (character < 0x00C0)
    e8861d74:	0bf00713          	li	a4,191
    e8861d78:	fab773e3          	bgeu	a4,a1,e8861d1e <utf8_encodelen+0x68>
	value = bitmap[(character >> 8) & 0xFF];
    e8861d7c:	00855713          	srli	a4,a0,0x8
    e8861d80:	80ea458b          	lrbu	a1,s4,a4,0
	if (value == 0xFF) {
    e8861d84:	0ff00713          	li	a4,255
    e8861d88:	02e58363          	beq	a1,a4,e8861dae <utf8_encodelen+0xf8>
	} else if (value) {
    e8861d8c:	ddd1                	beqz	a1,e8861d28 <utf8_encodelen+0x72>
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e8861d8e:	0ff57713          	andi	a4,a0,255
    e8861d92:	830d                	srli	a4,a4,0x3
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e8861d94:	35fd                	addiw	a1,a1,-1
    e8861d96:	0055959b          	slliw	a1,a1,0x5
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e8861d9a:	9752                	add	a4,a4,s4
    e8861d9c:	972e                	add	a4,a4,a1
    e8861d9e:	10074703          	lbu	a4,256(a4) # 1100 <memcmp-0xe87fef00>
    e8861da2:	00757593          	andi	a1,a0,7
    e8861da6:	40b7573b          	sraw	a4,a4,a1
			} else if (decompose && unicode_decomposeable(ucs_ch)) {
    e8861daa:	8b05                	andi	a4,a4,1
    e8861dac:	df35                	beqz	a4,e8861d28 <utf8_encodelen+0x72>
				extra = unicode_decompose(ucs_ch, sequence) - 1;
    e8861dae:	080c                	addi	a1,sp,16
    e8861db0:	e432                	sd	a2,8(sp)
    e8861db2:	df5ff0ef          	jal	ra,e8861ba6 <unicode_decompose>
    e8861db6:	fff5081b          	addiw	a6,a0,-1
				charcnt += extra;
    e8861dba:	010b86bb          	addw	a3,s7,a6
				ucs_ch = sequence[0];
    e8861dbe:	01015503          	lhu	a0,16(sp)
				chp = &sequence[1];
    e8861dc2:	01210793          	addi	a5,sp,18
    e8861dc6:	6622                	ld	a2,8(sp)
    e8861dc8:	bf99                	j	e8861d1e <utf8_encodelen+0x68>

00000000e8861dca <utf8_encodestr>:
{
    e8861dca:	7135                	addi	sp,sp,-160
    e8861dcc:	e526                	sd	s1,136(sp)
    e8861dce:	e14a                	sd	s2,128(sp)
    e8861dd0:	fcce                	sd	s3,120(sp)
    e8861dd2:	f4d6                	sd	s5,104(sp)
    e8861dd4:	ecde                	sd	s7,88(sp)
	int nullterm  = ((flags & UTF_NO_NULL_TERM) == 0);
    e8861dd6:	00287a93          	andi	s5,a6,2
{
    e8861dda:	e0ea                	sd	s10,64(sp)
    e8861ddc:	ed06                	sd	ra,152(sp)
    e8861dde:	e922                	sd	s0,144(sp)
    e8861de0:	f8d2                	sd	s4,112(sp)
    e8861de2:	f0da                	sd	s6,96(sp)
    e8861de4:	e8e2                	sd	s8,80(sp)
    e8861de6:	e4e6                	sd	s9,72(sp)
    e8861de8:	fc6e                	sd	s11,56(sp)
	int decompose = (flags & UTF_DECOMPOSED);
    e8861dea:	00487b93          	andi	s7,a6,4
	int swapbytes = (flags & UTF_REVERSE_ENDIAN);
    e8861dee:	00187d13          	andi	s10,a6,1
	int nullterm  = ((flags & UTF_NO_NULL_TERM) == 0);
    e8861df2:	2a81                	sext.w	s5,s5
	int sfmconv = (flags & UTF_SFM_CONVERSIONS);
    e8861df4:	02087813          	andi	a6,a6,32
{
    e8861df8:	892a                	mv	s2,a0
	int decompose = (flags & UTF_DECOMPOSED);
    e8861dfa:	2b81                	sext.w	s7,s7
	int sfmconv = (flags & UTF_SFM_CONVERSIONS);
    e8861dfc:	0008049b          	sext.w	s1,a6
	bufend = bufstart + buflen;
    e8861e00:	00e609b3          	add	s3,a2,a4
	if (nullterm)
    e8861e04:	000a9363          	bnez	s5,e8861e0a <utf8_encodestr+0x40>
		--bufend;
    e8861e08:	19fd                	addi	s3,s3,-1
	charcnt = (int)(ucslen / 2);
    e8861e0a:	8185                	srli	a1,a1,0x1
			if (ucs_ch >= SP_HIGH_FIRST && ucs_ch <= SP_HIGH_LAST
    e8861e0c:	6c0d                	lui	s8,0x3
				if (ch2 >= SP_LOW_FIRST && ch2 <= SP_LOW_LAST) {
    e8861e0e:	6b09                	lui	s6,0x2
					pair = ((ucs_ch - SP_HIGH_FIRST) << SP_HALF_SHIFT)
    e8861e10:	7ccd                	lui	s9,0xffff3
			ucs_ch = UCS_ALT_NULL;
    e8861e12:	6d89                	lui	s11,0x2
	charcnt = (int)(ucslen / 2);
    e8861e14:	2581                	sext.w	a1,a1
	while (charcnt-- > 0) {
    e8861e16:	8432                	mv	s0,a2
	int result = 0;
    e8861e18:	4a01                	li	s4,0
	int extra = 0;
    e8861e1a:	4801                	li	a6,0
	uint16_t * chp = NULL;
    e8861e1c:	4701                	li	a4,0
			if (ucs_ch >= SP_HIGH_FIRST && ucs_ch <= SP_HIGH_LAST
    e8861e1e:	800c0c1b          	addiw	s8,s8,-2048
				if (ch2 >= SP_LOW_FIRST && ch2 <= SP_LOW_LAST) {
    e8861e22:	400b0b1b          	addiw	s6,s6,1024
					pair = ((ucs_ch - SP_HIGH_FIRST) << SP_HALF_SHIFT)
    e8861e26:	800c8c9b          	addiw	s9,s9,-2048
			ucs_ch = UCS_ALT_NULL;
    e8861e2a:	400d8d93          	addi	s11,s11,1024 # 2400 <memcmp-0xe87fdc00>
	while (charcnt-- > 0) {
    e8861e2e:	fff58e1b          	addiw	t3,a1,-1
    e8861e32:	88f2                	mv	a7,t3
    e8861e34:	02b05463          	blez	a1,e8861e5c <utf8_encodestr+0x92>
		if (extra > 0) {
    e8861e38:	05005963          	blez	a6,e8861e8a <utf8_encodestr+0xc0>
			ucs_ch = *chp++; // Note: chp is from the local, aligned "sequence" array.
    e8861e3c:	b827450b          	lhuia	a0,(a4),2,0
			--extra;
    e8861e40:	387d                	addiw	a6,a6,-1
		if (ucs_ch == '/') {
    e8861e42:	02f00593          	li	a1,47
    e8861e46:	0cb51963          	bne	a0,a1,e8861f18 <utf8_encodestr+0x14e>
			if (altslash)
    e8861e4a:	10079463          	bnez	a5,e8861f52 <utf8_encodestr+0x188>
				result = EINVAL;
    e8861e4e:	4a59                	li	s4,22
				ucs_ch = '_';
    e8861e50:	05f00513          	li	a0,95
			if (utf8p >= bufend) {
    e8861e54:	11346163          	bltu	s0,s3,e8861f56 <utf8_encodestr+0x18c>
				result = ENAMETOOLONG;
    e8861e58:	05b00a13          	li	s4,91
	*utf8len = (size_t)(utf8p - bufstart);
    e8861e5c:	40c40633          	sub	a2,s0,a2
    e8861e60:	e290                	sd	a2,0(a3)
	if (nullterm)
    e8861e62:	000a9463          	bnez	s5,e8861e6a <utf8_encodestr+0xa0>
		*utf8p = '\0';
    e8861e66:	00040023          	sb	zero,0(s0)
}
    e8861e6a:	60ea                	ld	ra,152(sp)
    e8861e6c:	644a                	ld	s0,144(sp)
    e8861e6e:	8552                	mv	a0,s4
    e8861e70:	64aa                	ld	s1,136(sp)
    e8861e72:	690a                	ld	s2,128(sp)
    e8861e74:	79e6                	ld	s3,120(sp)
    e8861e76:	7a46                	ld	s4,112(sp)
    e8861e78:	7aa6                	ld	s5,104(sp)
    e8861e7a:	7b06                	ld	s6,96(sp)
    e8861e7c:	6be6                	ld	s7,88(sp)
    e8861e7e:	6c46                	ld	s8,80(sp)
    e8861e80:	6ca6                	ld	s9,72(sp)
    e8861e82:	6d06                	ld	s10,64(sp)
    e8861e84:	7de2                	ld	s11,56(sp)
    e8861e86:	610d                	addi	sp,sp,160
    e8861e88:	8082                	ret
			if (swapbytes)	ucs_ch = ReadSwap16(ucsp);
    e8861e8a:	00094303          	lbu	t1,0(s2)
    e8861e8e:	00194583          	lbu	a1,1(s2)
    e8861e92:	060d0e63          	beqz	s10,e8861f0e <utf8_encodestr+0x144>
    e8861e96:	00831513          	slli	a0,t1,0x8
    e8861e9a:	8d4d                	or	a0,a0,a1
			++ucsp;
    e8861e9c:	0909                	addi	s2,s2,2
			if (decompose && unicode_decomposeable(ucs_ch)) {
    e8861e9e:	fa0b82e3          	beqz	s7,e8861e42 <utf8_encodestr+0x78>
	if (character < 0x00C0)
    e8861ea2:	0bf00593          	li	a1,191
    e8861ea6:	f8a5fee3          	bgeu	a1,a0,e8861e42 <utf8_encodestr+0x78>
	value = bitmap[(character >> 8) & 0xFF];
    e8861eaa:	00064317          	auipc	t1,0x64
    e8861eae:	2ee30313          	addi	t1,t1,750 # e88c6198 <__CFUniCharDecomposableBitmap>
    e8861eb2:	00855593          	srli	a1,a0,0x8
    e8861eb6:	80b3458b          	lrbu	a1,t1,a1,0
	if (value == 0xFF) {
    e8861eba:	0ff00e93          	li	t4,255
    e8861ebe:	03d58463          	beq	a1,t4,e8861ee6 <utf8_encodestr+0x11c>
	} else if (value) {
    e8861ec2:	c1ad                	beqz	a1,e8861f24 <utf8_encodestr+0x15a>
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e8861ec4:	0ff57e93          	andi	t4,a0,255
    e8861ec8:	003ede93          	srli	t4,t4,0x3
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e8861ecc:	35fd                	addiw	a1,a1,-1
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e8861ece:	9376                	add	t1,t1,t4
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e8861ed0:	0055959b          	slliw	a1,a1,0x5
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e8861ed4:	959a                	add	a1,a1,t1
    e8861ed6:	1005c583          	lbu	a1,256(a1) # 1100 <memcmp-0xe87fef00>
    e8861eda:	00757313          	andi	t1,a0,7
    e8861ede:	4065d5bb          	sraw	a1,a1,t1
			if (decompose && unicode_decomposeable(ucs_ch)) {
    e8861ee2:	8985                	andi	a1,a1,1
    e8861ee4:	c1a1                	beqz	a1,e8861f24 <utf8_encodestr+0x15a>
				extra = unicode_decompose(ucs_ch, sequence) - 1;
    e8861ee6:	100c                	addi	a1,sp,32
    e8861ee8:	ec72                	sd	t3,24(sp)
    e8861eea:	e83e                	sd	a5,16(sp)
    e8861eec:	e436                	sd	a3,8(sp)
    e8861eee:	e032                	sd	a2,0(sp)
    e8861ef0:	cb7ff0ef          	jal	ra,e8861ba6 <unicode_decompose>
    e8861ef4:	fff5081b          	addiw	a6,a0,-1
				charcnt += extra;
    e8861ef8:	6e62                	ld	t3,24(sp)
				ucs_ch = sequence[0];
    e8861efa:	02015503          	lhu	a0,32(sp)
				chp = &sequence[1];
    e8861efe:	02210713          	addi	a4,sp,34
				charcnt += extra;
    e8861f02:	010e08bb          	addw	a7,t3,a6
				chp = &sequence[1];
    e8861f06:	67c2                	ld	a5,16(sp)
    e8861f08:	66a2                	ld	a3,8(sp)
    e8861f0a:	6602                	ld	a2,0(sp)
    e8861f0c:	bf1d                	j	e8861e42 <utf8_encodestr+0x78>
			else			ucs_ch = ReadHost16(ucsp);
    e8861f0e:	00859513          	slli	a0,a1,0x8
    e8861f12:	00a36533          	or	a0,t1,a0
    e8861f16:	b759                	j	e8861e9c <utf8_encodestr+0xd2>
		} else if (ucs_ch == '\0') {
    e8861f18:	10050c63          	beqz	a0,e8862030 <utf8_encodestr+0x266>
		if (ucs_ch < 0x0080) {
    e8861f1c:	07f00593          	li	a1,127
    e8861f20:	f2a5fae3          	bgeu	a1,a0,e8861e54 <utf8_encodestr+0x8a>
		} else if (ucs_ch < 0x800) {
    e8861f24:	7ff00593          	li	a1,2047
    e8861f28:	02a5eb63          	bltu	a1,a0,e8861f5e <utf8_encodestr+0x194>
			if ((utf8p + 1) >= bufend) {
    e8861f2c:	00140593          	addi	a1,s0,1
    e8861f30:	f335f4e3          	bgeu	a1,s3,e8861e58 <utf8_encodestr+0x8e>
			*utf8p++ = (uint8_t)(0xc0 | (ucs_ch >> 6));
    e8861f34:	3465330b          	extu	t1,a0,13,6
    e8861f38:	85a2                	mv	a1,s0
    e8861f3a:	fc036313          	ori	t1,t1,-64
    e8861f3e:	1825d30b          	sbia	t1,(a1),2,0
			*utf8p++ = (uint8_t)(0x80 | (0x3f & ucs_ch));
    e8861f42:	03f57513          	andi	a0,a0,63
    e8861f46:	f8056513          	ori	a0,a0,-128
    e8861f4a:	00a400a3          	sb	a0,1(s0)
    e8861f4e:	842e                	mv	s0,a1
    e8861f50:	a029                	j	e8861f5a <utf8_encodestr+0x190>
    e8861f52:	853e                	mv	a0,a5
    e8861f54:	b7e1                	j	e8861f1c <utf8_encodestr+0x152>
			*utf8p++ = (uint8_t)ucs_ch;
    e8861f56:	1814550b          	sbia	a0,(s0),1,0
					*utf8p++ = (uint8_t)(0x80 | (0x3f & pair));
    e8861f5a:	85c6                	mv	a1,a7
    e8861f5c:	bdc9                	j	e8861e2e <utf8_encodestr+0x64>
			if (ucs_ch == 0xFFFE || ucs_ch == 0xFFFF) {
    e8861f5e:	0025059b          	addiw	a1,a0,2
    e8861f62:	3c05b58b          	extu	a1,a1,15,0
    e8861f66:	4305                	li	t1,1
    e8861f68:	0eb37d63          	bgeu	t1,a1,e8862062 <utf8_encodestr+0x298>
			if (ucs_ch >= SP_HIGH_FIRST && ucs_ch <= SP_HIGH_LAST
    e8861f6c:	018505bb          	addw	a1,a0,s8
    e8861f70:	3c05b58b          	extu	a1,a1,15,0
    e8861f74:	3ff00313          	li	t1,1023
    e8861f78:	06b36f63          	bltu	t1,a1,e8861ff6 <utf8_encodestr+0x22c>
				&& charcnt > 0) {
    e8861f7c:	0b105b63          	blez	a7,e8862032 <utf8_encodestr+0x268>
				if (swapbytes)	ch2 = ReadSwap16(ucsp);
    e8861f80:	00094583          	lbu	a1,0(s2)
    e8861f84:	00194303          	lbu	t1,1(s2)
    e8861f88:	060d0563          	beqz	s10,e8861ff2 <utf8_encodestr+0x228>
    e8861f8c:	05a2                	slli	a1,a1,0x8
				else			ch2 = ReadHost16(ucsp);
    e8861f8e:	0065e333          	or	t1,a1,t1
				if (ch2 >= SP_LOW_FIRST && ch2 <= SP_LOW_LAST) {
    e8861f92:	016305bb          	addw	a1,t1,s6
    e8861f96:	3c05b58b          	extu	a1,a1,15,0
    e8861f9a:	3ff00e13          	li	t3,1023
    e8861f9e:	08be6a63          	bltu	t3,a1,e8862032 <utf8_encodestr+0x268>
					if ((utf8p + 3) >= bufend) {
    e8861fa2:	00340593          	addi	a1,s0,3
    e8861fa6:	eb35f9e3          	bgeu	a1,s3,e8861e58 <utf8_encodestr+0x8e>
					pair = ((ucs_ch - SP_HIGH_FIRST) << SP_HALF_SHIFT)
    e8861faa:	019505bb          	addw	a1,a0,s9
    e8861fae:	00a5959b          	slliw	a1,a1,0xa
    e8861fb2:	016585bb          	addw	a1,a1,s6
    e8861fb6:	006585bb          	addw	a1,a1,t1
					*utf8p++ = (uint8_t)(0xf0 | (pair >> 18));
    e8861fba:	6525b50b          	extu	a0,a1,25,18
    e8861fbe:	ff056513          	ori	a0,a0,-16
    e8861fc2:	00a40023          	sb	a0,0(s0)
					*utf8p++ = (uint8_t)(0x80 | (0x3f & (pair >> 12)));
    e8861fc6:	44c5b50b          	extu	a0,a1,17,12
    e8861fca:	f8056513          	ori	a0,a0,-128
    e8861fce:	00a400a3          	sb	a0,1(s0)
					*utf8p++ = (uint8_t)(0x80 | (0x3f & (pair >> 6)));
    e8861fd2:	2c65b50b          	extu	a0,a1,11,6
					*utf8p++ = (uint8_t)(0x80 | (0x3f & pair));
    e8861fd6:	03f5f593          	andi	a1,a1,63
					*utf8p++ = (uint8_t)(0x80 | (0x3f & (pair >> 6)));
    e8861fda:	f8056513          	ori	a0,a0,-128
					*utf8p++ = (uint8_t)(0x80 | (0x3f & pair));
    e8861fde:	f805e593          	ori	a1,a1,-128
					*utf8p++ = (uint8_t)(0x80 | (0x3f & (pair >> 6)));
    e8861fe2:	00a40123          	sb	a0,2(s0)
					*utf8p++ = (uint8_t)(0x80 | (0x3f & pair));
    e8861fe6:	00b401a3          	sb	a1,3(s0)
					--charcnt;
    e8861fea:	38fd                	addiw	a7,a7,-1
					++ucsp;				
    e8861fec:	0909                	addi	s2,s2,2
					*utf8p++ = (uint8_t)(0x80 | (0x3f & pair));
    e8861fee:	0411                	addi	s0,s0,4
					continue;
    e8861ff0:	b7ad                	j	e8861f5a <utf8_encodestr+0x190>
				else			ch2 = ReadHost16(ucsp);
    e8861ff2:	0322                	slli	t1,t1,0x8
    e8861ff4:	bf69                	j	e8861f8e <utf8_encodestr+0x1c4>
			} else if (sfmconv) {
    e8861ff6:	cc95                	beqz	s1,e8862032 <utf8_encodestr+0x268>
 * Decode any SFM Private Unicode characters
 */
static uint16_t
sfm_to_ucs(uint16_t ucs_ch)
{
	if (((ucs_ch & 0xffC0) == SFMCODE_PREFIX_MASK) && 
    e8861ff8:	fc057593          	andi	a1,a0,-64
    e8861ffc:	633d                	lui	t1,0xf
    e8861ffe:	02659a63          	bne	a1,t1,e8862032 <utf8_encodestr+0x268>
	    ((ucs_ch & 0x003f) <= MAX_SFM2MAC)) {
    e8862002:	03f57593          	andi	a1,a0,63
	if (((ucs_ch & 0xffC0) == SFMCODE_PREFIX_MASK) && 
    e8862006:	02900313          	li	t1,41
    e886200a:	02b36463          	bltu	t1,a1,e8862032 <utf8_encodestr+0x268>
		ucs_ch = sfm2mac[ucs_ch & 0x003f];
    e886200e:	00066517          	auipc	a0,0x66
    e8862012:	6da50513          	addi	a0,a0,1754 # e88c86e8 <sfm2mac>
    e8862016:	80b5458b          	lrbu	a1,a0,a1,0
				if (ucs_ch < 0x0080) {
    e886201a:	07f00313          	li	t1,127
		ucs_ch = sfm2mac[ucs_ch & 0x003f];
    e886201e:	3c05b50b          	extu	a0,a1,15,0
				if (ucs_ch < 0x0080) {
    e8862022:	00a36863          	bltu	t1,a0,e8862032 <utf8_encodestr+0x268>
					if (utf8p >= bufend) {
    e8862026:	e33479e3          	bgeu	s0,s3,e8861e58 <utf8_encodestr+0x8e>
					*utf8p++ = (uint8_t)ucs_ch;
    e886202a:	1814558b          	sbia	a1,(s0),1,0
					continue;
    e886202e:	b735                	j	e8861f5a <utf8_encodestr+0x190>
			ucs_ch = UCS_ALT_NULL;
    e8862030:	856e                	mv	a0,s11
			if ((utf8p + 2) >= bufend) {
    e8862032:	00240593          	addi	a1,s0,2
    e8862036:	e335f1e3          	bgeu	a1,s3,e8861e58 <utf8_encodestr+0x8e>
			*utf8p++ = (uint8_t)(0xe0 | (ucs_ch >> 12));
    e886203a:	4cc5358b          	extu	a1,a0,19,12
    e886203e:	fe05e593          	ori	a1,a1,-32
    e8862042:	00b40023          	sb	a1,0(s0)
			*utf8p++ = (uint8_t)(0x80 | (0x3f & (ucs_ch >> 6)));
    e8862046:	2c65358b          	extu	a1,a0,11,6
			*utf8p++ = (uint8_t)(0x80 | (0x3f & ucs_ch));
    e886204a:	03f57513          	andi	a0,a0,63
			*utf8p++ = (uint8_t)(0x80 | (0x3f & (ucs_ch >> 6)));
    e886204e:	f805e593          	ori	a1,a1,-128
			*utf8p++ = (uint8_t)(0x80 | (0x3f & ucs_ch));
    e8862052:	f8056513          	ori	a0,a0,-128
			*utf8p++ = (uint8_t)(0x80 | (0x3f & (ucs_ch >> 6)));
    e8862056:	00b400a3          	sb	a1,1(s0)
			*utf8p++ = (uint8_t)(0x80 | (0x3f & ucs_ch));
    e886205a:	00a40123          	sb	a0,2(s0)
    e886205e:	040d                	addi	s0,s0,3
    e8862060:	bded                	j	e8861f5a <utf8_encodestr+0x190>
				result = EINVAL;
    e8862062:	4a59                	li	s4,22
    e8862064:	bbe5                	j	e8861e5c <utf8_encodestr+0x92>

00000000e8862066 <utf8_decodestr>:
{
    e8862066:	7131                	addi	sp,sp,-192
    e8862068:	fcf1568b          	sdd	a3,a5,(sp),2,4
	decompose  = (flags & UTF_DECOMPOSED);
    e886206c:	00487793          	andi	a5,a6,4
    e8862070:	2781                	sext.w	a5,a5
    e8862072:	e43e                	sd	a5,8(sp)
	precompose = (flags & UTF_PRECOMPOSED);
    e8862074:	00887793          	andi	a5,a6,8
    e8862078:	2781                	sext.w	a5,a5
{
    e886207a:	f526                	sd	s1,168(sp)
    e886207c:	ed4e                	sd	s3,152(sp)
	swapbytes  = (flags & UTF_REVERSE_ENDIAN);
    e886207e:	00187493          	andi	s1,a6,1
	escaping   = (flags & UTF_ESCAPE_ILLEGAL);
    e8862082:	01087993          	andi	s3,a6,16
	sfmconv    = (flags & UTF_SFM_CONVERSIONS);
    e8862086:	02087813          	andi	a6,a6,32
{
    e886208a:	e556                	sd	s5,136(sp)
    e886208c:	e15a                	sd	s6,128(sp)
    e886208e:	fcde                	sd	s7,120(sp)
	precompose = (flags & UTF_PRECOMPOSED);
    e8862090:	e83e                	sd	a5,16(sp)
			WriteSwap16(ucsp, (uint16_t) ucs_ch);  ++ucsp;
    e8862092:	6a89                	lui	s5,0x2
	sfmconv    = (flags & UTF_SFM_CONVERSIONS);
    e8862094:	0008079b          	sext.w	a5,a6
			if (ucs_ch == UCS_ALT_NULL)
    e8862098:	6b09                	lui	s6,0x2
	if ((combining >= HANGUL_VBASE) && (combining < (HANGUL_TBASE + HANGUL_TCOUNT))) {
    e886209a:	7bfd                	lui	s7,0xfffff
{
    e886209c:	f14a                	sd	s2,160(sp)
    e886209e:	e952                	sd	s4,144(sp)
    e88620a0:	f8e2                	sd	s8,112(sp)
    e88620a2:	f4e6                	sd	s9,104(sp)
    e88620a4:	f0ea                	sd	s10,96(sp)
    e88620a6:	88ae                	mv	a7,a1
    e88620a8:	fd06                	sd	ra,184(sp)
    e88620aa:	f922                	sd	s0,176(sp)
    e88620ac:	ecee                	sd	s11,88(sp)
    e88620ae:	8932                	mv	s2,a2
	escaping   = (flags & UTF_ESCAPE_ILLEGAL);
    e88620b0:	2981                	sext.w	s3,s3
	sfmconv    = (flags & UTF_SFM_CONVERSIONS);
    e88620b2:	ec3e                	sd	a5,24(sp)
	bufend = (uint16_t *)((uint8_t *)ucsp + buflen);
    e88620b4:	00e60a33          	add	s4,a2,a4
	while (utf8len-- > 0 && (byte = *utf8p++) != '\0') {
    e88620b8:	8d32                	mv	s10,a2
	int combcharcnt = 0;
    e88620ba:	4581                	li	a1,0
			WriteSwap16(ucsp, (uint16_t) ucs_ch);  ++ucsp;
    e88620bc:	500a8a9b          	addiw	s5,s5,1280
			if (ucs_ch == UCS_ALT_NULL)
    e88620c0:	400b0b13          	addi	s6,s6,1024 # 2400 <memcmp-0xe87fdc00>
	if ((combining >= HANGUL_VBASE) && (combining < (HANGUL_TBASE + HANGUL_TCOUNT))) {
    e88620c4:	e9fb8c1b          	addiw	s8,s7,-353
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e88620c8:	6c8d                	lui	s9,0x3
	while (utf8len-- > 0 && (byte = *utf8p++) != '\0') {
    e88620ca:	fff88d93          	addi	s11,a7,-1
    e88620ce:	00088763          	beqz	a7,e88620dc <utf8_decodestr+0x76>
    e88620d2:	842a                	mv	s0,a0
    e88620d4:	9814468b          	lbuia	a3,(s0),1,0
    e88620d8:	87b6                	mv	a5,a3
    e88620da:	e2a1                	bnez	a3,e886211a <utf8_decodestr+0xb4>
	if (combcharcnt > 1) {
    e88620dc:	4785                	li	a5,1
	int result = 0;
    e88620de:	4401                	li	s0,0
	if (combcharcnt > 1) {
    e88620e0:	00b7d863          	bge	a5,a1,e88620f0 <utf8_decodestr+0x8a>
		priortysort(ucsp - combcharcnt, combcharcnt);
    e88620e4:	00159513          	slli	a0,a1,0x1
    e88620e8:	40ad0533          	sub	a0,s10,a0
    e88620ec:	b23ff0ef          	jal	ra,e8861c0e <priortysort>
	*ucslen = (size_t)((uint8_t*)ucsp - (uint8_t*)bufstart);
    e88620f0:	7782                	ld	a5,32(sp)
    e88620f2:	412d0933          	sub	s2,s10,s2
}
    e88620f6:	8522                	mv	a0,s0
	*ucslen = (size_t)((uint8_t*)ucsp - (uint8_t*)bufstart);
    e88620f8:	0127b023          	sd	s2,0(a5) # 5000 <memcmp-0xe87fb000>
}
    e88620fc:	70ea                	ld	ra,184(sp)
    e88620fe:	744a                	ld	s0,176(sp)
    e8862100:	74aa                	ld	s1,168(sp)
    e8862102:	790a                	ld	s2,160(sp)
    e8862104:	69ea                	ld	s3,152(sp)
    e8862106:	6a4a                	ld	s4,144(sp)
    e8862108:	6aaa                	ld	s5,136(sp)
    e886210a:	6b0a                	ld	s6,128(sp)
    e886210c:	7be6                	ld	s7,120(sp)
    e886210e:	7c46                	ld	s8,112(sp)
    e8862110:	7ca6                	ld	s9,104(sp)
    e8862112:	7d06                	ld	s10,96(sp)
    e8862114:	6de6                	ld	s11,88(sp)
    e8862116:	6129                	addi	sp,sp,192
    e8862118:	8082                	ret
		if (ucsp >= bufend)
    e886211a:	354d7463          	bgeu	s10,s4,e8862462 <utf8_decodestr+0x3fc>
		if (byte < 0x80) {
    e886211e:	07f00893          	li	a7,127
    e8862122:	0cf8e163          	bltu	a7,a5,e88621e4 <utf8_decodestr+0x17e>
			ucs_ch = sfmconv ? ucs_to_sfm((uint16_t)byte, utf8len == 0) : byte;
    e8862126:	6762                	ld	a4,24(sp)
    e8862128:	cf1d                	beqz	a4,e8862166 <utf8_decodestr+0x100>
    e886212a:	3c06b78b          	extu	a5,a3,15,0
	if (lastchar) {
    e886212e:	0007851b          	sext.w	a0,a5
    e8862132:	000d9a63          	bnez	s11,e8862146 <utf8_decodestr+0xe0>
		if (ucs_ch == 0x20)
    e8862136:	02000893          	li	a7,32
    e886213a:	09150d63          	beq	a0,a7,e88621d4 <utf8_decodestr+0x16e>
		else if (ucs_ch == 0x2e)
    e886213e:	02e00893          	li	a7,46
    e8862142:	09150d63          	beq	a0,a7,e88621dc <utf8_decodestr+0x176>
	if (ucs_ch <= 0x1f) {
    e8862146:	48fd                	li	a7,31
    e8862148:	00a8e563          	bltu	a7,a0,e8862152 <utf8_decodestr+0xec>
			return((uint16_t)(0xf000 | lsb)); 
    e886214c:	66bd                	lui	a3,0xf
    e886214e:	8fd5                	or	a5,a5,a3
    e8862150:	a811                	j	e8862164 <utf8_decodestr+0xfe>
		lsb = mac2sfm[ucs_ch - 0x0020];
    e8862152:	3681                	addiw	a3,a3,-32
    e8862154:	00066797          	auipc	a5,0x66
    e8862158:	52478793          	addi	a5,a5,1316 # e88c8678 <mac2sfm>
    e886215c:	80d7c78b          	lrbu	a5,a5,a3,0
		if (lsb != ucs_ch)
    e8862160:	fef516e3          	bne	a0,a5,e886214c <utf8_decodestr+0xe6>
			ucs_ch = sfmconv ? ucs_to_sfm((uint16_t)byte, utf8len == 0) : byte;
    e8862164:	2781                	sext.w	a5,a5
		if (ucs_ch == altslash)
    e8862166:	7722                	ld	a4,40(sp)
    e8862168:	00f71463          	bne	a4,a5,e8862170 <utf8_decodestr+0x10a>
			ucs_ch = '/';
    e886216c:	02f00793          	li	a5,47
		if (unicode_combinable((uint16_t)ucs_ch)) {
    e8862170:	3c07b88b          	extu	a7,a5,15,0
	if (character < 0x0300)
    e8862174:	2ff00513          	li	a0,767
    e8862178:	0088d693          	srli	a3,a7,0x8
    e886217c:	4b157a63          	bgeu	a0,a7,e8862630 <utf8_decodestr+0x5ca>
	value = bitmap[(character >> 8) & 0xFF];
    e8862180:	00062517          	auipc	a0,0x62
    e8862184:	79850513          	addi	a0,a0,1944 # e88c4918 <__CFUniCharCombiningBitmap>
    e8862188:	80d5468b          	lrbu	a3,a0,a3,0
	if (value == 0xFF) {
    e886218c:	0ff00313          	li	t1,255
    e8862190:	02668663          	beq	a3,t1,e88621bc <utf8_decodestr+0x156>
	} else if (value) {
    e8862194:	48068e63          	beqz	a3,e8862630 <utf8_decodestr+0x5ca>
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e8862198:	0ff8f313          	andi	t1,a7,255
    e886219c:	00335313          	srli	t1,t1,0x3
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e88621a0:	36fd                	addiw	a3,a3,-1
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e88621a2:	951a                	add	a0,a0,t1
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e88621a4:	0056969b          	slliw	a3,a3,0x5
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e88621a8:	96aa                	add	a3,a3,a0
    e88621aa:	1006c503          	lbu	a0,256(a3) # f100 <memcmp-0xe87f0f00>
    e88621ae:	0078f693          	andi	a3,a7,7
    e88621b2:	40d556bb          	sraw	a3,a0,a3
		if (unicode_combinable((uint16_t)ucs_ch)) {
    e88621b6:	8a85                	andi	a3,a3,1
    e88621b8:	46068c63          	beqz	a3,e8862630 <utf8_decodestr+0x5ca>
			++combcharcnt;   /* start tracking a run */
    e88621bc:	2585                	addiw	a1,a1,1
		if (swapbytes)	WriteSwap16(ucsp, (uint16_t) ucs_ch);
    e88621be:	c491                	beqz	s1,e88621ca <utf8_decodestr+0x164>
    e88621c0:	00879693          	slli	a3,a5,0x8
    e88621c4:	3c87b78b          	extu	a5,a5,15,8
    e88621c8:	8fd5                	or	a5,a5,a3
		else			WriteHost16(ucsp, (uint16_t) ucs_ch);
    e88621ca:	00fd1023          	sh	a5,0(s10)
		++ucsp;
    e88621ce:	002d0793          	addi	a5,s10,2
		continue;
    e88621d2:	aaf9                	j	e88623b0 <utf8_decodestr+0x34a>
			return (0xf028);
    e88621d4:	67bd                	lui	a5,0xf
    e88621d6:	02878793          	addi	a5,a5,40 # f028 <memcmp-0xe87f0fd8>
    e88621da:	b769                	j	e8862164 <utf8_decodestr+0xfe>
			return (0xf029);
    e88621dc:	67bd                	lui	a5,0xf
    e88621de:	02978793          	addi	a5,a5,41 # f029 <memcmp-0xe87f0fd7>
    e88621e2:	b749                	j	e8862164 <utf8_decodestr+0xfe>
			extrabytes = utf_extrabytes[byte >> 3];
    e88621e4:	0037d69b          	srliw	a3,a5,0x3
    e88621e8:	00066897          	auipc	a7,0x66
    e88621ec:	53088893          	addi	a7,a7,1328 # e88c8718 <utf_extrabytes>
    e88621f0:	10d8c88b          	lurb	a7,a7,a3,0
    e88621f4:	0008831b          	sext.w	t1,a7
			if ((extrabytes < 0) || ((int)utf8len < extrabytes)) {
    e88621f8:	0a034863          	bltz	t1,e88622a8 <utf8_decodestr+0x242>
    e88621fc:	000d869b          	sext.w	a3,s11
    e8862200:	0a66c463          	blt	a3,t1,e88622a8 <utf8_decodestr+0x242>
			switch (extrabytes) {
    e8862204:	4e09                	li	t3,2
			utf8len -= ((size_t)extrabytes);
    e8862206:	411d8db3          	sub	s11,s11,a7
			switch (extrabytes) {
    e886220a:	03c88d63          	beq	a7,t3,e8862244 <utf8_decodestr+0x1de>
    e886220e:	468d                	li	a3,3
    e8862210:	10d88063          	beq	a7,a3,e8862310 <utf8_decodestr+0x2aa>
    e8862214:	4685                	li	a3,1
    e8862216:	44d89d63          	bne	a7,a3,e8862670 <utf8_decodestr+0x60a>
				byte = *utf8p++;       /* 2nd byte */
    e886221a:	00154683          	lbu	a3,1(a0)
    e886221e:	00250413          	addi	s0,a0,2
				if ((byte >> 6) != 2)
    e8862222:	0066d513          	srli	a0,a3,0x6
    e8862226:	01c51d63          	bne	a0,t3,e8862240 <utf8_decodestr+0x1da>
				ch -= 0x00003080U;
    e886222a:	7575                	lui	a0,0xffffd
    e886222c:	f805051b          	addiw	a0,a0,-128
    e8862230:	9ea9                	addw	a3,a3,a0
				ch = byte; ch <<= 6;   /* 1st byte */
    e8862232:	0067979b          	slliw	a5,a5,0x6
				ch -= 0x00003080U;
    e8862236:	9fb5                	addw	a5,a5,a3
				if (ch < 0x0080)
    e8862238:	07f00693          	li	a3,127
    e886223c:	18f6e463          	bltu	a3,a5,e88623c4 <utf8_decodestr+0x35e>
		utf8p -= 1;
    e8862240:	147d                	addi	s0,s0,-1
    e8862242:	a09d                	j	e88622a8 <utf8_decodestr+0x242>
				byte = *utf8p++;       /* 2nd byte */
    e8862244:	00154e03          	lbu	t3,1(a0) # ffffffffffffd001 <__DRAM0_INF_BASE+0xffffffff0000d001>
				if ((byte >> 6) != 2)
    e8862248:	006e5693          	srli	a3,t3,0x6
    e886224c:	01168563          	beq	a3,a7,e8862256 <utf8_decodestr+0x1f0>
				byte = *utf8p++;       /* 2nd byte */
    e8862250:	00250413          	addi	s0,a0,2
    e8862254:	b7f5                	j	e8862240 <utf8_decodestr+0x1da>
				byte = *utf8p++;       /* 3rd byte */
    e8862256:	00350413          	addi	s0,a0,3
    e886225a:	00254503          	lbu	a0,2(a0)
				if ((byte >> 6) != 2)
    e886225e:	00655693          	srli	a3,a0,0x6
    e8862262:	05169263          	bne	a3,a7,e88622a6 <utf8_decodestr+0x240>
				ch = byte; ch <<= 6;   /* 1st byte */
    e8862266:	0067969b          	slliw	a3,a5,0x6
				ch += byte; ch <<= 6;
    e886226a:	01c686bb          	addw	a3,a3,t3
    e886226e:	0066969b          	slliw	a3,a3,0x6
				ch -= 0x000E2080U;
    e8862272:	fff1e7b7          	lui	a5,0xfff1e
				ch += byte;
    e8862276:	9ea9                	addw	a3,a3,a0
				ch -= 0x000E2080U;
    e8862278:	f807879b          	addiw	a5,a5,-128
    e886227c:	9fb5                	addw	a5,a5,a3
				if (ch < 0x0800)
    e886227e:	7ff00513          	li	a0,2047
    e8862282:	02f57263          	bgeu	a0,a5,e88622a6 <utf8_decodestr+0x240>
				if (ch >= 0xD800) {
    e8862286:	6535                	lui	a0,0xd
    e8862288:	7ff50513          	addi	a0,a0,2047 # d7ff <memcmp-0xe87f2801>
    e886228c:	12f57c63          	bgeu	a0,a5,e88623c4 <utf8_decodestr+0x35e>
					if (ch <= 0xDFFF)
    e8862290:	6539                	lui	a0,0xe
    e8862292:	00a7ea63          	bltu	a5,a0,e88622a6 <utf8_decodestr+0x240>
					if (ch == 0xFFFE || ch == 0xFFFF)
    e8862296:	fff0e537          	lui	a0,0xfff0e
    e886229a:	f825051b          	addiw	a0,a0,-126
    e886229e:	9ea9                	addw	a3,a3,a0
    e88622a0:	4505                	li	a0,1
    e88622a2:	12d56163          	bltu	a0,a3,e88623c4 <utf8_decodestr+0x35e>
		utf8p -= 2;
    e88622a6:	1479                	addi	s0,s0,-2
		if (!escaping) {
    e88622a8:	3c098463          	beqz	s3,e8862670 <utf8_decodestr+0x60a>
		if (extrabytes > 0)
    e88622ac:	00605363          	blez	t1,e88622b2 <utf8_decodestr+0x24c>
			utf8len += ((size_t)extrabytes);
    e88622b0:	9dc6                	add	s11,s11,a7
		byte = *(utf8p - 1);
    e88622b2:	fff44783          	lbu	a5,-1(s0)
		if ((ucsp + 2) >= bufend)
    e88622b6:	004d0513          	addi	a0,s10,4
		byte = *(utf8p - 1);
    e88622ba:	86be                	mv	a3,a5
		if ((ucsp + 2) >= bufend)
    e88622bc:	1b457363          	bgeu	a0,s4,e8862462 <utf8_decodestr+0x3fc>
		if (combcharcnt > 1) {
    e88622c0:	4505                	li	a0,1
    e88622c2:	00b55c63          	bge	a0,a1,e88622da <utf8_decodestr+0x274>
			priortysort(ucsp - combcharcnt, combcharcnt);
    e88622c6:	00159513          	slli	a0,a1,0x1
    e88622ca:	40ad0533          	sub	a0,s10,a0
    e88622ce:	fc3e                	sd	a5,56(sp)
    e88622d0:	f83e                	sd	a5,48(sp)
    e88622d2:	93dff0ef          	jal	ra,e8861c0e <priortysort>
    e88622d6:	76e2                	ld	a3,56(sp)
    e88622d8:	77c2                	ld	a5,48(sp)
		ucs_ch2 = hexdigits[byte >> 4];
    e88622da:	0046d69b          	srliw	a3,a3,0x4
		ucs_ch3 = hexdigits[byte & 0x0F];
    e88622de:	8bbd                	andi	a5,a5,15
		ucs_ch2 = hexdigits[byte >> 4];
    e88622e0:	00066517          	auipc	a0,0x66
    e88622e4:	18850513          	addi	a0,a0,392 # e88c8468 <hexdigits>
    e88622e8:	90d5458b          	lurbu	a1,a0,a3,0
		ucs_ch3 = hexdigits[byte & 0x0F];
    e88622ec:	90f5468b          	lurbu	a3,a0,a5,0
		if (swapbytes) {
    e88622f0:	006d0793          	addi	a5,s10,6
    e88622f4:	34048d63          	beqz	s1,e886264e <utf8_decodestr+0x5e8>
			WriteSwap16(ucsp, (uint16_t) ucs_ch);  ++ucsp;
    e88622f8:	015d1023          	sh	s5,0(s10)
			WriteSwap16(ucsp, (uint16_t) ucs_ch2); ++ucsp;
    e88622fc:	000d0123          	sb	zero,2(s10)
    e8862300:	00bd01a3          	sb	a1,3(s10)
			WriteSwap16(ucsp, (uint16_t) ucs_ch3); ++ucsp;
    e8862304:	000d0223          	sb	zero,4(s10)
    e8862308:	00dd02a3          	sb	a3,5(s10)
		combcharcnt = 0;
    e886230c:	4581                	li	a1,0
    e886230e:	a04d                	j	e88623b0 <utf8_decodestr+0x34a>
				byte = *utf8p++;       /* 2nd byte */
    e8862310:	00154e83          	lbu	t4,1(a0)
				if ((byte >> 6) != 2)
    e8862314:	006ed693          	srli	a3,t4,0x6
    e8862318:	f3c69ce3          	bne	a3,t3,e8862250 <utf8_decodestr+0x1ea>
				byte = *utf8p++;       /* 3rd byte */
    e886231c:	00254e03          	lbu	t3,2(a0)
				if ((byte >> 6) != 2)
    e8862320:	006e5f13          	srli	t5,t3,0x6
    e8862324:	00df0563          	beq	t5,a3,e886232e <utf8_decodestr+0x2c8>
				byte = *utf8p++;       /* 3rd byte */
    e8862328:	00350413          	addi	s0,a0,3
    e886232c:	bfad                	j	e88622a6 <utf8_decodestr+0x240>
				byte = *utf8p++;       /* 4th byte */
    e886232e:	00354303          	lbu	t1,3(a0)
				if ((byte >> 6) != 2)
    e8862332:	4689                	li	a3,2
    e8862334:	00635f13          	srli	t5,t1,0x6
    e8862338:	32df1a63          	bne	t5,a3,e886266c <utf8_decodestr+0x606>
				ch = byte; ch <<= 6;   /* 1st byte */
    e886233c:	0067969b          	slliw	a3,a5,0x6
				ch += byte; ch <<= 6;
    e8862340:	01d686bb          	addw	a3,a3,t4
    e8862344:	0066969b          	slliw	a3,a3,0x6
				ch -= 0x03C82080U + SP_HALF_BASE;
    e8862348:	fc36e7b7          	lui	a5,0xfc36e
				ch += byte; ch <<= 6;
    e886234c:	01c686bb          	addw	a3,a3,t3
				ch -= 0x03C82080U + SP_HALF_BASE;
    e8862350:	f807879b          	addiw	a5,a5,-128
    e8862354:	00f307bb          	addw	a5,t1,a5
				ch += byte; ch <<= 6;
    e8862358:	0066969b          	slliw	a3,a3,0x6
				ch -= 0x03C82080U + SP_HALF_BASE;
    e886235c:	9fb5                	addw	a5,a5,a3
				ucs_ch = (ch >> SP_HALF_SHIFT) + SP_HIGH_FIRST;
    e886235e:	00a7de1b          	srliw	t3,a5,0xa
				if (ucs_ch < SP_HIGH_FIRST || ucs_ch > SP_HIGH_LAST)
    e8862362:	3ff00313          	li	t1,1023
    e8862366:	31c36363          	bltu	t1,t3,e886266c <utf8_decodestr+0x606>
				ucs_ch = (ch >> SP_HALF_SHIFT) + SP_HIGH_FIRST;
    e886236a:	6639                	lui	a2,0xe
    e886236c:	8006061b          	addiw	a2,a2,-2048
    e8862370:	00ce063b          	addw	a2,t3,a2
				if (swapbytes)	WriteSwap16(ucsp, (uint16_t) ucs_ch);
    e8862374:	c0b1                	beqz	s1,e88623b8 <utf8_decodestr+0x352>
    e8862376:	0086169b          	slliw	a3,a2,0x8
    e886237a:	3c86360b          	extu	a2,a2,15,8
    e886237e:	8ed1                	or	a3,a3,a2
    e8862380:	00dd1023          	sh	a3,0(s10)
				++ucsp;
    e8862384:	002d0693          	addi	a3,s10,2
				if (ucsp >= bufend)
    e8862388:	2f46f063          	bgeu	a3,s4,e8862668 <utf8_decodestr+0x602>
				ucs_ch = (ch & SP_HALF_MASK) + SP_LOW_FIRST;
    e886238c:	66b9                	lui	a3,0xe
    e886238e:	3ff7f793          	andi	a5,a5,1023
    e8862392:	c006869b          	addiw	a3,a3,-1024
    e8862396:	9ebd                	addw	a3,a3,a5
				if (swapbytes)	WriteSwap16(ucsp, (uint16_t) ucs_ch);
    e8862398:	c09d                	beqz	s1,e88623be <utf8_decodestr+0x358>
    e886239a:	0086979b          	slliw	a5,a3,0x8
    e886239e:	3c86b68b          	extu	a3,a3,15,8
    e88623a2:	8fd5                	or	a5,a5,a3
    e88623a4:	00fd1123          	sh	a5,2(s10)
				byte = *utf8p++;       /* 4th byte */
    e88623a8:	00450413          	addi	s0,a0,4
				++ucsp;
    e88623ac:	004d0793          	addi	a5,s10,4
		combcharcnt = 0;
    e88623b0:	8d3e                	mv	s10,a5
    e88623b2:	88ee                	mv	a7,s11
    e88623b4:	8522                	mv	a0,s0
    e88623b6:	bb11                	j	e88620ca <utf8_decodestr+0x64>
				else			WriteHost16(ucsp, (uint16_t) ucs_ch);
    e88623b8:	00cd1023          	sh	a2,0(s10)
    e88623bc:	b7e1                	j	e8862384 <utf8_decodestr+0x31e>
				else			WriteHost16(ucsp, (uint16_t) ucs_ch);
    e88623be:	00dd1123          	sh	a3,2(s10)
    e88623c2:	b7dd                	j	e88623a8 <utf8_decodestr+0x342>
			if (decompose) {
    e88623c4:	6722                	ld	a4,8(sp)
    e88623c6:	cb45                	beqz	a4,e8862476 <utf8_decodestr+0x410>
				if (unicode_decomposeable((uint16_t)ucs_ch)) {
    e88623c8:	3c07b88b          	extu	a7,a5,15,0
	if (character < 0x00C0)
    e88623cc:	0bf00693          	li	a3,191
    e88623d0:	1516ff63          	bgeu	a3,a7,e886252e <utf8_decodestr+0x4c8>
	value = bitmap[(character >> 8) & 0xFF];
    e88623d4:	00064517          	auipc	a0,0x64
    e88623d8:	dc450513          	addi	a0,a0,-572 # e88c6198 <__CFUniCharDecomposableBitmap>
    e88623dc:	0088d693          	srli	a3,a7,0x8
    e88623e0:	80d5468b          	lrbu	a3,a0,a3,0
	if (value == 0xFF) {
    e88623e4:	0ff00313          	li	t1,255
    e88623e8:	02668663          	beq	a3,t1,e8862414 <utf8_decodestr+0x3ae>
	} else if (value) {
    e88623ec:	14068163          	beqz	a3,e886252e <utf8_decodestr+0x4c8>
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e88623f0:	0ff8f313          	andi	t1,a7,255
    e88623f4:	00335313          	srli	t1,t1,0x3
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e88623f8:	36fd                	addiw	a3,a3,-1
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e88623fa:	951a                	add	a0,a0,t1
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e88623fc:	0056969b          	slliw	a3,a3,0x5
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e8862400:	96aa                	add	a3,a3,a0
    e8862402:	1006c683          	lbu	a3,256(a3) # e100 <memcmp-0xe87f1f00>
    e8862406:	0078f513          	andi	a0,a7,7
    e886240a:	40a6d6bb          	sraw	a3,a3,a0
				if (unicode_decomposeable((uint16_t)ucs_ch)) {
    e886240e:	8a85                	andi	a3,a3,1
    e8862410:	10068f63          	beqz	a3,e886252e <utf8_decodestr+0x4c8>
					if (combcharcnt > 1) {
    e8862414:	4785                	li	a5,1
    e8862416:	00b7da63          	bge	a5,a1,e886242a <utf8_decodestr+0x3c4>
						priortysort(ucsp - combcharcnt, combcharcnt);
    e886241a:	00159513          	slli	a0,a1,0x1
    e886241e:	40ad0533          	sub	a0,s10,a0
    e8862422:	f846                	sd	a7,48(sp)
    e8862424:	feaff0ef          	jal	ra,e8861c0e <priortysort>
    e8862428:	78c2                	ld	a7,48(sp)
					count = unicode_decompose((uint16_t)ucs_ch, sequence);
    e886242a:	8546                	mv	a0,a7
    e886242c:	008c                	addi	a1,sp,64
    e886242e:	f78ff0ef          	jal	ra,e8861ba6 <unicode_decompose>
					for (i = 0; i < count; ++i) {
    e8862432:	0094                	addi	a3,sp,64
    e8862434:	87ea                	mv	a5,s10
    e8862436:	4881                	li	a7,0
    e8862438:	00a8c563          	blt	a7,a0,e8862442 <utf8_decodestr+0x3dc>
					combcharcnt += count - 1;
    e886243c:	fff5059b          	addiw	a1,a0,-1
					continue;			
    e8862440:	bf85                	j	e88623b0 <utf8_decodestr+0x34a>
						ucs_ch = sequence[i];
    e8862442:	0006d703          	lhu	a4,0(a3)
						if (swapbytes)	WriteSwap16(ucsp, (uint16_t) ucs_ch);
    e8862446:	0ff77593          	andi	a1,a4,255
    e886244a:	0087571b          	srliw	a4,a4,0x8
    e886244e:	cc89                	beqz	s1,e8862468 <utf8_decodestr+0x402>
    e8862450:	00e78023          	sb	a4,0(a5) # fffffffffc36e000 <__DRAM0_INF_BASE+0xfffffffefc37e000>
    e8862454:	00b780a3          	sb	a1,1(a5)
						++ucsp;
    e8862458:	0789                	addi	a5,a5,2
						if (ucsp >= bufend)
    e886245a:	0689                	addi	a3,a3,2
    e886245c:	0147eb63          	bltu	a5,s4,e8862472 <utf8_decodestr+0x40c>
						++ucsp;
    e8862460:	8d3e                	mv	s10,a5
	result = ENAMETOOLONG;
    e8862462:	05b00413          	li	s0,91
    e8862466:	b169                	j	e88620f0 <utf8_decodestr+0x8a>
						else			WriteHost16(ucsp, (uint16_t) ucs_ch);
    e8862468:	00b78023          	sb	a1,0(a5)
    e886246c:	00e780a3          	sb	a4,1(a5)
    e8862470:	b7e5                	j	e8862458 <utf8_decodestr+0x3f2>
					for (i = 0; i < count; ++i) {
    e8862472:	2885                	addiw	a7,a7,1
    e8862474:	b7d1                	j	e8862438 <utf8_decodestr+0x3d2>
			} else if (precompose && (ucsp != bufstart)) {
    e8862476:	6742                	ld	a4,16(sp)
    e8862478:	cb5d                	beqz	a4,e886252e <utf8_decodestr+0x4c8>
    e886247a:	0b2d0a63          	beq	s10,s2,e886252e <utf8_decodestr+0x4c8>
				if (unicode_combinable((uint16_t)ucs_ch)) {
    e886247e:	3c07b88b          	extu	a7,a5,15,0
	if (character < 0x0300)
    e8862482:	0008831b          	sext.w	t1,a7
    e8862486:	2ff00693          	li	a3,767
    e886248a:	0a66f263          	bgeu	a3,t1,e886252e <utf8_decodestr+0x4c8>
	value = bitmap[(character >> 8) & 0xFF];
    e886248e:	00062697          	auipc	a3,0x62
    e8862492:	48a68693          	addi	a3,a3,1162 # e88c4918 <__CFUniCharCombiningBitmap>
    e8862496:	0088d513          	srli	a0,a7,0x8
    e886249a:	80a6c50b          	lrbu	a0,a3,a0,0
	if (value == 0xFF) {
    e886249e:	0ff00e13          	li	t3,255
    e88624a2:	03c50463          	beq	a0,t3,e88624ca <utf8_decodestr+0x464>
	} else if (value) {
    e88624a6:	c541                	beqz	a0,e886252e <utf8_decodestr+0x4c8>
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e88624a8:	0ff8fe13          	andi	t3,a7,255
    e88624ac:	003e5e13          	srli	t3,t3,0x3
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e88624b0:	357d                	addiw	a0,a0,-1
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e88624b2:	96f2                	add	a3,a3,t3
		bitmap = bitmap + ((value - 1) * 32) + 256;
    e88624b4:	0055151b          	slliw	a0,a0,0x5
		return (bitmap[(character & 0xFF) / 8] & (1 << (character % 8)) ? 1 : 0);
    e88624b8:	9536                	add	a0,a0,a3
    e88624ba:	10054683          	lbu	a3,256(a0)
    e88624be:	0078f513          	andi	a0,a7,7
    e88624c2:	40a6d6bb          	sraw	a3,a3,a0
				if (unicode_combinable((uint16_t)ucs_ch)) {
    e88624c6:	8a85                	andi	a3,a3,1
    e88624c8:	c2bd                	beqz	a3,e886252e <utf8_decodestr+0x4c8>
					if (swapbytes)	base = ReadSwap16(ucsp - 1);
    e88624ca:	ffed4683          	lbu	a3,-2(s10)
    e88624ce:	fffd4e03          	lbu	t3,-1(s10)
    e88624d2:	c0b5                	beqz	s1,e8862536 <utf8_decodestr+0x4d0>
    e88624d4:	06a2                	slli	a3,a3,0x8
    e88624d6:	00de6533          	or	a0,t3,a3
	if ((combining >= HANGUL_VBASE) && (combining < (HANGUL_TBASE + HANGUL_TCOUNT))) {
    e88624da:	018886bb          	addw	a3,a7,s8
    e88624de:	3c06b68b          	extu	a3,a3,15,0
    e88624e2:	06100893          	li	a7,97
    e88624e6:	08d8e763          	bltu	a7,a3,e8862574 <utf8_decodestr+0x50e>
		if ((combining < (HANGUL_VBASE + HANGUL_VCOUNT)) &&
    e88624ea:	6685                	lui	a3,0x1
    e88624ec:	17568893          	addi	a7,a3,373 # 1175 <memcmp-0xe87fee8b>
    e88624f0:	0468e763          	bltu	a7,t1,e886253e <utf8_decodestr+0x4d8>
		    (base >= HANGUL_LBASE && base < (HANGUL_LBASE + HANGUL_LCOUNT))) {
    e88624f4:	f00b889b          	addiw	a7,s7,-256
    e88624f8:	011508bb          	addw	a7,a0,a7
		if ((combining < (HANGUL_VBASE + HANGUL_VCOUNT)) &&
    e88624fc:	3c08b30b          	extu	t1,a7,15,0
    e8862500:	46c9                	li	a3,18
    e8862502:	0666e963          	bltu	a3,t1,e8862574 <utf8_decodestr+0x50e>
		            ((combining  - HANGUL_VBASE)*HANGUL_TCOUNT)));
    e8862506:	3c07b50b          	extu	a0,a5,15,0
		            ((base - HANGUL_LBASE)*(HANGUL_VCOUNT*HANGUL_TCOUNT)) +
    e886250a:	76ed                	lui	a3,0xffffb
		            ((combining  - HANGUL_VBASE)*HANGUL_TCOUNT)));
    e886250c:	0185053b          	addw	a0,a0,s8
		            ((base - HANGUL_LBASE)*(HANGUL_VCOUNT*HANGUL_TCOUNT)) +
    e8862510:	4371                	li	t1,28
    e8862512:	c006869b          	addiw	a3,a3,-1024
    e8862516:	2465168b          	mulaw	a3,a0,t1
    e886251a:	24c00513          	li	a0,588
    e886251e:	24a8968b          	mulaw	a3,a7,a0
	return ((uint16_t)value);
    e8862522:	3c06b68b          	extu	a3,a3,15,0
					if (composite) {
    e8862526:	c681                	beqz	a3,e886252e <utf8_decodestr+0x4c8>
						--ucsp;
    e8862528:	1d79                	addi	s10,s10,-2
						ucs_ch = composite;
    e886252a:	0006879b          	sext.w	a5,a3
			if (ucs_ch == UCS_ALT_NULL)
    e886252e:	c3679ce3          	bne	a5,s6,e8862166 <utf8_decodestr+0x100>
				ucs_ch = '\0';
    e8862532:	4781                	li	a5,0
    e8862534:	b90d                	j	e8862166 <utf8_decodestr+0x100>
					else			base = ReadHost16(ucsp - 1);
    e8862536:	008e1513          	slli	a0,t3,0x8
    e886253a:	8d55                	or	a0,a0,a3
    e886253c:	bf79                	j	e88624da <utf8_decodestr+0x474>
		if ((combining > HANGUL_TBASE) &&
    e886253e:	1a768693          	addi	a3,a3,423 # ffffffffffffb1a7 <__DRAM0_INF_BASE+0xffffffff0000b1a7>
    e8862542:	0266f963          	bgeu	a3,t1,e8862574 <utf8_decodestr+0x50e>
		    (base >= HANGUL_SBASE && base < (HANGUL_SBASE + HANGUL_SCOUNT))) {
    e8862546:	6695                	lui	a3,0x5
    e8862548:	4006869b          	addiw	a3,a3,1024
    e886254c:	9ea9                	addw	a3,a3,a0
		if ((combining > HANGUL_TBASE) &&
    e886254e:	3c06b68b          	extu	a3,a3,15,0
    e8862552:	ba3c8893          	addi	a7,s9,-1117 # 2ba3 <memcmp-0xe87fd45d>
    e8862556:	00d8ef63          	bltu	a7,a3,e8862574 <utf8_decodestr+0x50e>
			if ((base - HANGUL_SBASE) % HANGUL_TCOUNT)
    e886255a:	76d5                	lui	a3,0xffff5
    e886255c:	4006869b          	addiw	a3,a3,1024
    e8862560:	9ea9                	addw	a3,a3,a0
    e8862562:	48f1                	li	a7,28
    e8862564:	0316e6bb          	remw	a3,a3,a7
    e8862568:	f2f9                	bnez	a3,e886252e <utf8_decodestr+0x4c8>
				return ((uint16_t)(base + (combining - HANGUL_TBASE)));
    e886256a:	e59b869b          	addiw	a3,s7,-423
    e886256e:	9ebd                	addw	a3,a3,a5
    e8862570:	9ea9                	addw	a3,a3,a0
    e8862572:	bf45                	j	e8862522 <utf8_decodestr+0x4bc>
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e8862574:	3c07be0b          	extu	t3,a5,15,0
    e8862578:	670d                	lui	a4,0x3
    e886257a:	d00e089b          	addiw	a7,t3,-768
    e886257e:	d9a70713          	addi	a4,a4,-614 # 2d9a <memcmp-0xe87fd266>
		return (0);
    e8862582:	4681                	li	a3,0
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e8862584:	f9176fe3          	bltu	a4,a7,e8862522 <utf8_decodestr+0x4bc>
	p = theTable;
    e8862588:	00066697          	auipc	a3,0x66
    e886258c:	d3868693          	addi	a3,a3,-712 # e88c82c0 <__CFUniCharPrecompSourceTable>
	q = p + (numElem-1);
    e8862590:	00066317          	auipc	t1,0x66
    e8862594:	ed030313          	addi	t1,t1,-304 # e88c8460 <__CFUniCharPrecompSourceTable+0x1a0>
		divider = p + ((q - p) >> 1);	/* divide by 2 */
    e8862598:	40d308b3          	sub	a7,t1,a3
    e886259c:	4048d893          	srai	a7,a7,0x4
    e88625a0:	07169e8b          	addsl	t4,a3,a7,3
		if (character < divider->_key) { q = divider - 1; }
    e88625a4:	4716c88b          	lrw	a7,a3,a7,3
    e88625a8:	011e7863          	bgeu	t3,a7,e88625b8 <utf8_decodestr+0x552>
    e88625ac:	ff8e8313          	addi	t1,t4,-8
	while (p <= q) {
    e88625b0:	fed374e3          	bgeu	t1,a3,e8862598 <utf8_decodestr+0x532>
		return (0);
    e88625b4:	4681                	li	a3,0
    e88625b6:	b7b5                	j	e8862522 <utf8_decodestr+0x4bc>
		else if (character > divider->_key) { p = divider + 1; }
    e88625b8:	01c8f563          	bgeu	a7,t3,e88625c2 <utf8_decodestr+0x55c>
    e88625bc:	008e8693          	addi	a3,t4,8
    e88625c0:	bfc5                	j	e88625b0 <utf8_decodestr+0x54a>
		else { return (divider->_value); }
    e88625c2:	004ea683          	lw	a3,4(t4)
	if (value) {
    e88625c6:	deb1                	beqz	a3,e8862522 <utf8_decodestr+0x4bc>
		value = getmappedvalue16(__CFUniCharBMPPrecompDestinationTable + (value & 0xFFFF), (value >> 16), base);
    e88625c8:	3c06b88b          	extu	a7,a3,15,0
    e88625cc:	00061e17          	auipc	t3,0x61
    e88625d0:	4f4e0e13          	addi	t3,t3,1268 # e88c3ac0 <__CFUniCharBMPPrecompDestinationTable>
    e88625d4:	051e130b          	addsl	t1,t3,a7,2
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e88625d8:	a51e4e0b          	lrhu	t3,t3,a7,2
    e88625dc:	2501                	sext.w	a0,a0
		return (0);
    e88625de:	4881                	li	a7,0
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e88625e0:	01c56d63          	bltu	a0,t3,e88625fa <utf8_decodestr+0x594>
		value = getmappedvalue16(__CFUniCharBMPPrecompDestinationTable + (value & 0xFFFF), (value >> 16), base);
    e88625e4:	7d06b88b          	extu	a7,a3,31,16
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e88625e8:	088a                	slli	a7,a7,0x2
    e88625ea:	18f1                	addi	a7,a7,-4
    e88625ec:	a1134e0b          	lrhu	t3,t1,a7,0
    e88625f0:	011306b3          	add	a3,t1,a7
		return (0);
    e88625f4:	4881                	li	a7,0
	if ((character < theTable[0]._key) || (character > theTable[numElem-1]._key))
    e88625f6:	02ae7163          	bgeu	t3,a0,e8862618 <utf8_decodestr+0x5b2>
		value = getmappedvalue16(__CFUniCharBMPPrecompDestinationTable + (value & 0xFFFF), (value >> 16), base);
    e88625fa:	0008869b          	sext.w	a3,a7
    e88625fe:	b715                	j	e8862522 <utf8_decodestr+0x4bc>
		divider = p + ((q - p) >> 1);	/* divide by 2 */
    e8862600:	406688b3          	sub	a7,a3,t1
    e8862604:	4038d893          	srai	a7,a7,0x3
    e8862608:	05131e0b          	addsl	t3,t1,a7,2
		if (character < divider->_key)
    e886260c:	a513488b          	lrhu	a7,t1,a7,2
    e8862610:	01157863          	bgeu	a0,a7,e8862620 <utf8_decodestr+0x5ba>
			q = divider - 1;
    e8862614:	ffce0693          	addi	a3,t3,-4
	while (p <= q) {
    e8862618:	fe66f4e3          	bgeu	a3,t1,e8862600 <utf8_decodestr+0x59a>
		return (0);
    e886261c:	4881                	li	a7,0
    e886261e:	bff1                	j	e88625fa <utf8_decodestr+0x594>
		else if (character > divider->_key)
    e8862620:	00a8f563          	bgeu	a7,a0,e886262a <utf8_decodestr+0x5c4>
			p = divider + 1;
    e8862624:	004e0313          	addi	t1,t3,4
    e8862628:	bfc5                	j	e8862618 <utf8_decodestr+0x5b2>
			return (divider->_value);
    e886262a:	002e5883          	lhu	a7,2(t3)
    e886262e:	b7f1                	j	e88625fa <utf8_decodestr+0x594>
			if (combcharcnt > 1) {
    e8862630:	4685                	li	a3,1
    e8862632:	00b6dc63          	bge	a3,a1,e886264a <utf8_decodestr+0x5e4>
				priortysort(ucsp - combcharcnt, combcharcnt);
    e8862636:	00159513          	slli	a0,a1,0x1
    e886263a:	40ad0533          	sub	a0,s10,a0
    e886263e:	f83e                	sd	a5,48(sp)
    e8862640:	dceff0ef          	jal	ra,e8861c0e <priortysort>
			combcharcnt = 0;  /* start over */
    e8862644:	4581                	li	a1,0
    e8862646:	77c2                	ld	a5,48(sp)
    e8862648:	be9d                	j	e88621be <utf8_decodestr+0x158>
    e886264a:	4581                	li	a1,0
    e886264c:	be8d                	j	e88621be <utf8_decodestr+0x158>
			WriteHost16(ucsp, (uint16_t) ucs_ch);  ++ucsp;
    e886264e:	02500513          	li	a0,37
    e8862652:	00ad1023          	sh	a0,0(s10)
			WriteHost16(ucsp, (uint16_t) ucs_ch2); ++ucsp;
    e8862656:	00bd0123          	sb	a1,2(s10)
    e886265a:	000d01a3          	sb	zero,3(s10)
			WriteHost16(ucsp, (uint16_t) ucs_ch3); ++ucsp;
    e886265e:	00dd0223          	sb	a3,4(s10)
    e8862662:	000d02a3          	sb	zero,5(s10)
    e8862666:	b15d                	j	e886230c <utf8_decodestr+0x2a6>
				++ucsp;
    e8862668:	8d36                	mv	s10,a3
    e886266a:	bbe5                	j	e8862462 <utf8_decodestr+0x3fc>
		if (!escaping) {
    e886266c:	c40992e3          	bnez	s3,e88622b0 <utf8_decodestr+0x24a>
			result = EINVAL;
    e8862670:	4459                	li	s0,22
    e8862672:	bcbd                	j	e88620f0 <utf8_decodestr+0x8a>

00000000e8862674 <utf8_encodestr_copy>:
 */
int
utf8_encodestr_copy( const uint16_t *inUTF16, size_t inUTF16Bytes, 
					 void *outUTF8, size_t *outUTF8Bytes, 
					 uint16_t inAltSlash, int inFlags )
{
    e8862674:	715d                	addi	sp,sp,-80
    e8862676:	f84a                	sd	s2,48(sp)
    e8862678:	f44e                	sd	s3,40(sp)
    e886267a:	8936                	mv	s2,a3
    e886267c:	89b2                	mv	s3,a2
	int			err;
	size_t		utf8Bytes;
	uint8_t *	utf8;
	
	utf8Bytes = utf8_encodelen(inUTF16, inUTF16Bytes, inAltSlash, inFlags ) + 1;
    e886267e:	86be                	mv	a3,a5
    e8862680:	863a                	mv	a2,a4
{
    e8862682:	fc26                	sd	s1,56(sp)
    e8862684:	f052                	sd	s4,32(sp)
    e8862686:	e486                	sd	ra,72(sp)
    e8862688:	e0a2                	sd	s0,64(sp)
    e886268a:	84aa                	mv	s1,a0
    e886268c:	8a2e                	mv	s4,a1
	utf8Bytes = utf8_encodelen(inUTF16, inUTF16Bytes, inAltSlash, inFlags ) + 1;
    e886268e:	e43e                	sd	a5,8(sp)
    e8862690:	e03a                	sd	a4,0(sp)
    e8862692:	e24ff0ef          	jal	ra,e8861cb6 <utf8_encodelen>
    e8862696:	0505                	addi	a0,a0,1
    e8862698:	ec2a                	sd	a0,24(sp)
	utf8 = (uint8_t *) utfmalloc( utf8Bytes );
    e886269a:	1b4190ef          	jal	ra,e887b84e <my_malloc>
	if( !utf8 ) { err = ENOMEM; goto exit; }
    e886269e:	cd1d                	beqz	a0,e88626dc <utf8_encodestr_copy+0x68>
	
	err = utf8_encodestr( inUTF16, inUTF16Bytes, utf8, &utf8Bytes, utf8Bytes, inAltSlash, inFlags );
    e88626a0:	67a2                	ld	a5,8(sp)
    e88626a2:	6702                	ld	a4,0(sp)
    e88626a4:	862a                	mv	a2,a0
    e88626a6:	883e                	mv	a6,a5
    e88626a8:	87ba                	mv	a5,a4
    e88626aa:	6762                	ld	a4,24(sp)
    e88626ac:	842a                	mv	s0,a0
    e88626ae:	0834                	addi	a3,sp,24
    e88626b0:	8526                	mv	a0,s1
    e88626b2:	85d2                	mv	a1,s4
    e88626b4:	f16ff0ef          	jal	ra,e8861dca <utf8_encodestr>
    e88626b8:	84aa                	mv	s1,a0
	if( err ) goto exit;
    e88626ba:	e11d                	bnez	a0,e88626e0 <utf8_encodestr_copy+0x6c>
	
	*( (uint8_t **) outUTF8 )			= utf8;
    e88626bc:	0089b023          	sd	s0,0(s3)
	if( outUTF8Bytes ) *outUTF8Bytes	= utf8Bytes;
    e88626c0:	00090563          	beqz	s2,e88626ca <utf8_encodestr_copy+0x56>
    e88626c4:	67e2                	ld	a5,24(sp)
    e88626c6:	00f93023          	sd	a5,0(s2)
	utf8 = NULL;
	
exit:
	if( utf8 ) utffree( utf8 );
	return( err );
}
    e88626ca:	60a6                	ld	ra,72(sp)
    e88626cc:	6406                	ld	s0,64(sp)
    e88626ce:	8526                	mv	a0,s1
    e88626d0:	7942                	ld	s2,48(sp)
    e88626d2:	74e2                	ld	s1,56(sp)
    e88626d4:	79a2                	ld	s3,40(sp)
    e88626d6:	7a02                	ld	s4,32(sp)
    e88626d8:	6161                	addi	sp,sp,80
    e88626da:	8082                	ret
	if( !utf8 ) { err = ENOMEM; goto exit; }
    e88626dc:	44b1                	li	s1,12
    e88626de:	b7f5                	j	e88626ca <utf8_encodestr_copy+0x56>
	if( utf8 ) utffree( utf8 );
    e88626e0:	8522                	mv	a0,s0
    e88626e2:	41f190ef          	jal	ra,e887c300 <eLIBs_free>
	return( err );
    e88626e6:	b7d5                	j	e88626ca <utf8_encodestr_copy+0x56>

00000000e88626e8 <utf8_decodestr_copy>:
int
utf8_decodestr_copy(
	const void *inUTF8Ptr, size_t inUTF8Bytes, 
	void *outUTF16, size_t *outUTF16Bytes, 
	uint16_t inAltslash, int inFlags )
{
    e88626e8:	711d                	addi	sp,sp,-96
    e88626ea:	e4a6                	sd	s1,72(sp)
    e88626ec:	84aa                	mv	s1,a0
	OSStatus			err;
	const uint8_t *		utf8;
	uint16_t *			utf16Ptr;
	size_t				utf16Len;
	
	utf16Len = inUTF8Bytes * sizeof( uint16_t );
    e88626ee:	00159513          	slli	a0,a1,0x1
    e88626f2:	f42a                	sd	a0,40(sp)
	utf16Ptr = (uint16_t *) utfmalloc( utf16Len + sizeof( uint16_t ) );
    e88626f4:	0509                	addi	a0,a0,2
{
    e88626f6:	e0ca                	sd	s2,64(sp)
    e88626f8:	fc4e                	sd	s3,56(sp)
    e88626fa:	ec86                	sd	ra,88(sp)
    e88626fc:	e8a2                	sd	s0,80(sp)
    e88626fe:	89b2                	mv	s3,a2
    e8862700:	8936                	mv	s2,a3
    e8862702:	ec3a                	sd	a4,24(sp)
    e8862704:	e83e                	sd	a5,16(sp)
	utf16Len = inUTF8Bytes * sizeof( uint16_t );
    e8862706:	e42e                	sd	a1,8(sp)
	utf16Ptr = (uint16_t *) utfmalloc( utf16Len + sizeof( uint16_t ) );
    e8862708:	146190ef          	jal	ra,e887b84e <my_malloc>
	if( !utf16Ptr ) { err = ENOMEM; goto exit; }
    e886270c:	c131                	beqz	a0,e8862750 <utf8_decodestr_copy+0x68>
	
	utf8 = (const uint8_t *) inUTF8Ptr;
	err = utf8_decodestr( utf8, inUTF8Bytes, utf16Ptr, &utf16Len, utf16Len, inAltslash, inFlags );
    e886270e:	67c2                	ld	a5,16(sp)
    e8862710:	6762                	ld	a4,24(sp)
    e8862712:	65a2                	ld	a1,8(sp)
    e8862714:	883e                	mv	a6,a5
    e8862716:	87ba                	mv	a5,a4
    e8862718:	7722                	ld	a4,40(sp)
    e886271a:	862a                	mv	a2,a0
    e886271c:	842a                	mv	s0,a0
    e886271e:	1034                	addi	a3,sp,40
    e8862720:	8526                	mv	a0,s1
    e8862722:	945ff0ef          	jal	ra,e8862066 <utf8_decodestr>
    e8862726:	84aa                	mv	s1,a0
	if( err ) goto exit;
    e8862728:	e515                	bnez	a0,e8862754 <utf8_decodestr_copy+0x6c>
	utf16Ptr[ utf16Len / sizeof( uint16_t ) ] = 0;
    e886272a:	77a2                	ld	a5,40(sp)
    e886272c:	9bf9                	andi	a5,a5,-2
    e886272e:	20f4500b          	srh	zero,s0,a5,0
	
	*( (uint16_t **) outUTF16 )			= utf16Ptr;
    e8862732:	0089b023          	sd	s0,0(s3)
	if( outUTF16Bytes ) *outUTF16Bytes	= utf16Len;
    e8862736:	00090563          	beqz	s2,e8862740 <utf8_decodestr_copy+0x58>
    e886273a:	77a2                	ld	a5,40(sp)
    e886273c:	00f93023          	sd	a5,0(s2)
	utf16Ptr = NULL;
	
exit:
	if( utf16Ptr ) utffree( utf16Ptr );
	return( err );
}
    e8862740:	60e6                	ld	ra,88(sp)
    e8862742:	6446                	ld	s0,80(sp)
    e8862744:	8526                	mv	a0,s1
    e8862746:	6906                	ld	s2,64(sp)
    e8862748:	64a6                	ld	s1,72(sp)
    e886274a:	79e2                	ld	s3,56(sp)
    e886274c:	6125                	addi	sp,sp,96
    e886274e:	8082                	ret
	if( !utf16Ptr ) { err = ENOMEM; goto exit; }
    e8862750:	44b1                	li	s1,12
    e8862752:	b7fd                	j	e8862740 <utf8_decodestr_copy+0x58>
	if( utf16Ptr ) utffree( utf16Ptr );
    e8862754:	8522                	mv	a0,s0
    e8862756:	3ab190ef          	jal	ra,e887c300 <eLIBs_free>
	return( err );
    e886275a:	b7dd                	j	e8862740 <utf8_decodestr_copy+0x58>

00000000e886275c <latin1_to_utf8_copy>:
		size_t			inLatin1Len, 
		void *			outUTF8Ptr, 
		size_t *		outUTF8Len, 
		uint16_t		inAltSlash, 
		int				inFlags )
{
    e886275c:	715d                	addi	sp,sp,-80
    e886275e:	fc26                	sd	s1,56(sp)
	uint16_t *			utf16buf;
	uint16_t *			utf16ptr;
	
	// Convert Windows Latin-1 (ANSI Codepage 1252) to UTF-16 in a temporary buffer.
	
	utf16len = inLatin1Len * 2;
    e8862760:	00159493          	slli	s1,a1,0x1
{
    e8862764:	f84a                	sd	s2,48(sp)
    e8862766:	892a                	mv	s2,a0
	utf16buf = (uint16_t *) utfmalloc( utf16len + 2 );
    e8862768:	00248513          	addi	a0,s1,2
{
    e886276c:	e486                	sd	ra,72(sp)
    e886276e:	e0a2                	sd	s0,64(sp)
    e8862770:	f432                	sd	a2,40(sp)
    e8862772:	f036                	sd	a3,32(sp)
    e8862774:	ec3a                	sd	a4,24(sp)
    e8862776:	e83e                	sd	a5,16(sp)
	utf16len = inLatin1Len * 2;
    e8862778:	e42e                	sd	a1,8(sp)
	utf16buf = (uint16_t *) utfmalloc( utf16len + 2 );
    e886277a:	0d4190ef          	jal	ra,e887b84e <my_malloc>
	if( !utf16buf ) { err = ENOMEM; goto exit; };
    e886277e:	c529                	beqz	a0,e88627c8 <latin1_to_utf8_copy+0x6c>
    e8862780:	65a2                	ld	a1,8(sp)
    e8862782:	fae1478b          	ldd	a5,a4,(sp),1,4
    e8862786:	fcc1468b          	ldd	a3,a2,(sp),2,4
    e886278a:	842a                	mv	s0,a0
	
	src = (const uint8_t *) inLatin1Ptr;
	end = src + inLatin1Len;
	while( src != end )
	{
		*utf16ptr++ = kWindowsLatin1ToUTF16[ *src++ ];
    e886278c:	00066817          	auipc	a6,0x66
    e8862790:	cec80813          	addi	a6,a6,-788 # e88c8478 <kWindowsLatin1ToUTF16>
    e8862794:	4501                	li	a0,0
	while( src != end )
    e8862796:	02a59163          	bne	a1,a0,e88627b8 <latin1_to_utf8_copy+0x5c>
	}
	
	// Convert UTF-16 to UTF-8 into a new buffer.
	
	err = utf8_encodestr_copy( utf16buf, utf16len, outUTF8Ptr, outUTF8Len, inAltSlash, inFlags );
    e886279a:	85a6                	mv	a1,s1
    e886279c:	8522                	mv	a0,s0
    e886279e:	ed7ff0ef          	jal	ra,e8862674 <utf8_encodestr_copy>
    e88627a2:	84aa                	mv	s1,a0
	
exit:
	if( utf16buf ) utffree( utf16buf );
    e88627a4:	8522                	mv	a0,s0
    e88627a6:	35b190ef          	jal	ra,e887c300 <eLIBs_free>
	return( err );
}
    e88627aa:	60a6                	ld	ra,72(sp)
    e88627ac:	6406                	ld	s0,64(sp)
    e88627ae:	8526                	mv	a0,s1
    e88627b0:	7942                	ld	s2,48(sp)
    e88627b2:	74e2                	ld	s1,56(sp)
    e88627b4:	6161                	addi	sp,sp,80
    e88627b6:	8082                	ret
		*utf16ptr++ = kWindowsLatin1ToUTF16[ *src++ ];
    e88627b8:	80a9488b          	lrbu	a7,s2,a0,0
    e88627bc:	a318488b          	lrhu	a7,a6,a7,1
    e88627c0:	22a4588b          	srh	a7,s0,a0,1
    e88627c4:	0505                	addi	a0,a0,1
    e88627c6:	bfc1                	j	e8862796 <latin1_to_utf8_copy+0x3a>
	if( !utf16buf ) { err = ENOMEM; goto exit; };
    e88627c8:	44b1                	li	s1,12
    e88627ca:	b7c5                	j	e88627aa <latin1_to_utf8_copy+0x4e>

00000000e88627cc <AudioConverterNew>:
//===========================================================================================================================
//	AudioConverterNew
//===========================================================================================================================

OSStatus AudioConverterNew( const AudioStreamBasicDescription *	inSourceFormat, const AudioStreamBasicDescription *	inDestinationFormat, AudioConverterRef * outAudioConverter )
{
    e88627cc:	7179                	addi	sp,sp,-48
    e88627ce:	f406                	sd	ra,40(sp)
    e88627d0:	e422                	sd	s0,8(sp)
    e88627d2:	e826                	sd	s1,16(sp)
    e88627d4:	ec4a                	sd	s2,24(sp)
    e88627d6:	f04e                	sd	s3,32(sp)
	OSStatus						err;
	AudioConverterPrivateRef		me;

	// Sample rate conversion and mixing are not supported
	if( inDestinationFormat->mSampleRate != inSourceFormat->mSampleRate )
    e88627d8:	4198                	lw	a4,0(a1)
    e88627da:	411c                	lw	a5,0(a0)
    e88627dc:	0af71763          	bne	a4,a5,e886288a <AudioConverterNew+0xbe>
		return kUnsupportedErr;
	if( inDestinationFormat->mChannelsPerFrame != inSourceFormat->mChannelsPerFrame )
    e88627e0:	4d98                	lw	a4,24(a1)
    e88627e2:	4d1c                	lw	a5,24(a0)
    e88627e4:	0af71363          	bne	a4,a5,e886288a <AudioConverterNew+0xbe>
    e88627e8:	892a                	mv	s2,a0
    p = malloc(len);
    e88627ea:	02000513          	li	a0,32
    e88627ee:	89b2                	mv	s3,a2
    e88627f0:	842e                	mv	s0,a1
    e88627f2:	05c190ef          	jal	ra,e887b84e <my_malloc>
    e88627f6:	84aa                	mv	s1,a0
    memset(p,0,len);
    e88627f8:	02000613          	li	a2,32
    e88627fc:	4581                	li	a1,0
    e88627fe:	397190ef          	jal	ra,e887c394 <eLIBs_memset>
		return kUnsupportedErr;
	
	me = (AudioConverterPrivateRef) calloc( 1, sizeof( *me ) );
	require_action( me, exit, err = kNoMemoryErr );
    e8862802:	c8c1                	beqz	s1,e8862892 <AudioConverterNew+0xc6>
	// $$$ TODO: The accessory will need to implement support for:
	// AAC LC decode
	// Opus encode/decode or AAC ELD encode/decode
	// Parameters are provided here to initialize the codec

	me->sourceFormatID = inSourceFormat->mFormatID;
    e8862804:	00492783          	lw	a5,4(s2)
    e8862808:	c09c                	sw	a5,0(s1)
	me->destFormatID = inDestinationFormat->mFormatID;
    e886280a:	4058                	lw	a4,4(s0)
    e886280c:	c0d8                	sw	a4,4(s1)
	me->sampleRate = inDestinationFormat->mSampleRate;
    e886280e:	4018                	lw	a4,0(s0)
    e8862810:	c498                	sw	a4,8(s1)
	me->channels = inDestinationFormat->mChannelsPerFrame;
    e8862812:	4c18                	lw	a4,24(s0)
    e8862814:	c4d8                	sw	a4,12(s1)
	me->framesPerPacket = inDestinationFormat->mFramesPerPacket;
    e8862816:	4818                	lw	a4,16(s0)
    e8862818:	c898                	sw	a4,16(s1)

	switch( me->sourceFormatID )
    e886281a:	61616737          	lui	a4,0x61616
    e886281e:	36570693          	addi	a3,a4,869 # 61616365 <memcmp-0x871e9c9b>
    e8862822:	02d78263          	beq	a5,a3,e8862846 <AudioConverterNew+0x7a>
    e8862826:	32070713          	addi	a4,a4,800
    e886282a:	00f6fc63          	bgeu	a3,a5,e8862842 <AudioConverterNew+0x76>
    e886282e:	6c706737          	lui	a4,0x6c706
    e8862832:	36d70713          	addi	a4,a4,877 # 6c70636d <memcmp-0x7c0f9c93>
    e8862836:	02e78d63          	beq	a5,a4,e8862870 <AudioConverterNew+0xa4>
    e886283a:	6f707737          	lui	a4,0x6f707
    e886283e:	57370713          	addi	a4,a4,1395 # 6f707573 <memcmp-0x790f8a8d>
    e8862842:	04e79063          	bne	a5,a4,e8862882 <AudioConverterNew+0xb6>
	{
		case kAudioFormatMPEG4AAC:
			require_action_quiet( inDestinationFormat->mFormatID == kAudioFormatLinearPCM, exit, err = kUnsupportedErr );
    e8862846:	4058                	lw	a4,4(s0)
    e8862848:	6c7067b7          	lui	a5,0x6c706
    e886284c:	36d78793          	addi	a5,a5,877 # 6c70636d <memcmp-0x7c0f9c93>
			{
				// $$$ TODO: Initialize codec for PCM -> AAC ELD compression
				err = kNoErr;
				goto exit;
			}
			else if( inDestinationFormat->mFormatID == kAudioFormatOpus )
    e8862850:	02f71963          	bne	a4,a5,e8862882 <AudioConverterNew+0xb6>
			}
		default:
			err = kUnsupportedErr;
			goto exit;
	}
	*outAudioConverter = me;
    e8862854:	0099b023          	sd	s1,0(s3)
    e8862858:	4401                	li	s0,0
				// $$$ TODO: Free any resources for the Opus encoder
				}
				break;
		}
	}
	free( me );
    e886285a:	8526                	mv	a0,s1
    e886285c:	2a5190ef          	jal	ra,e887c300 <eLIBs_free>
}
    e8862860:	8522                	mv	a0,s0
    e8862862:	70a2                	ld	ra,40(sp)
    e8862864:	6422                	ld	s0,8(sp)
    e8862866:	64c2                	ld	s1,16(sp)
    e8862868:	6962                	ld	s2,24(sp)
    e886286a:	7982                	ld	s3,32(sp)
    e886286c:	6145                	addi	sp,sp,48
    e886286e:	8082                	ret
			if( inDestinationFormat->mFormatID == kAudioFormatMPEG4AAC_ELD )
    e8862870:	4058                	lw	a4,4(s0)
				err = kNoErr;
    e8862872:	4401                	li	s0,0
			if( inDestinationFormat->mFormatID == kAudioFormatMPEG4AAC_ELD )
    e8862874:	fed703e3          	beq	a4,a3,e886285a <AudioConverterNew+0x8e>
			else if( inDestinationFormat->mFormatID == kAudioFormatOpus )
    e8862878:	6f7077b7          	lui	a5,0x6f707
    e886287c:	57378793          	addi	a5,a5,1395 # 6f707573 <memcmp-0x790f8a8d>
    e8862880:	bfc1                	j	e8862850 <AudioConverterNew+0x84>
			require_action_quiet( inDestinationFormat->mFormatID == kAudioFormatLinearPCM, exit, err = kUnsupportedErr );
    e8862882:	7479                	lui	s0,0xffffe
    e8862884:	5b140413          	addi	s0,s0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e8862888:	bfc9                	j	e886285a <AudioConverterNew+0x8e>
		return kUnsupportedErr;
    e886288a:	7479                	lui	s0,0xffffe
    e886288c:	5b140413          	addi	s0,s0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e8862890:	bfc1                	j	e8862860 <AudioConverterNew+0x94>
	require_action( me, exit, err = kNoMemoryErr );
    e8862892:	7479                	lui	s0,0xffffe
    e8862894:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8862898:	b7e1                	j	e8862860 <AudioConverterNew+0x94>

00000000e886289a <AudioConverterDispose>:
{
    e886289a:	1141                	addi	sp,sp,-16
    e886289c:	e406                	sd	ra,8(sp)
	free( me );
    e886289e:	263190ef          	jal	ra,e887c300 <eLIBs_free>
	return( kNoErr );
}
    e88628a2:	60a2                	ld	ra,8(sp)
    e88628a4:	4501                	li	a0,0
    e88628a6:	0141                	addi	sp,sp,16
    e88628a8:	8082                	ret

00000000e88628aa <AudioConverterReset>:
{
	(void) inConverter;
	
	// $$$ TODO: Discard any data buffered by the codec
	return( kNoErr );
}
    e88628aa:	4501                	li	a0,0
    e88628ac:	8082                	ret

00000000e88628ae <AudioConverterSetProperty>:

OSStatus AudioConverterSetProperty( AudioConverterRef inConverter, AudioConverterPropertyID	inPropertyID, uint32_t inSize, const void * inData )
{
	AudioConverterPrivateRef const		me = (AudioConverterPrivateRef) inConverter;
	
	if( !me->nativeCodecRef )
    e88628ae:	6d1c                	ld	a5,24(a0)
    e88628b0:	c7b9                	beqz	a5,e88628fe <AudioConverterSetProperty+0x50>
		return kStateErr;
	switch( me->sourceFormatID )
    e88628b2:	4118                	lw	a4,0(a0)
    e88628b4:	6c7067b7          	lui	a5,0x6c706
    e88628b8:	36d78793          	addi	a5,a5,877 # 6c70636d <memcmp-0x7c0f9c93>
    e88628bc:	02f71d63          	bne	a4,a5,e88628f6 <AudioConverterSetProperty+0x48>

		case kAudioFormatOpus:
			return _AudioConverterSetPropertyOpusDecode( me, inPropertyID, inSize, inData );

		case kAudioFormatLinearPCM:
			if( me->destFormatID == kAudioFormatMPEG4AAC_ELD )
    e88628c0:	4158                	lw	a4,4(a0)
    e88628c2:	616167b7          	lui	a5,0x61616
    e88628c6:	36578793          	addi	a5,a5,869 # 61616365 <memcmp-0x871e9c9b>
    e88628ca:	02f71063          	bne	a4,a5,e88628ea <AudioConverterSetProperty+0x3c>
	switch ( inPropertyID )
    e88628ce:	706177b7          	lui	a5,0x70617
    e88628d2:	b6c78793          	addi	a5,a5,-1172 # 70616b6c <memcmp-0x781e9494>
    e88628d6:	02f59063          	bne	a1,a5,e88628f6 <AudioConverterSetProperty+0x48>
			if( inSize != sizeof( uint32_t ) )
    e88628da:	4791                	li	a5,4
			return kNoErr;
    e88628dc:	4501                	li	a0,0
			if( inSize != sizeof( uint32_t ) )
    e88628de:	00f60f63          	beq	a2,a5,e88628fc <AudioConverterSetProperty+0x4e>
				return kSizeErr;
    e88628e2:	7579                	lui	a0,0xffffe
    e88628e4:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e88628e8:	8082                	ret
				return _AudioConverterSetPropertyAACELDEncode( me, inPropertyID, inSize, inData );
			else if( me->destFormatID == kAudioFormatOpus )
    e88628ea:	6f7077b7          	lui	a5,0x6f707
    e88628ee:	57378793          	addi	a5,a5,1395 # 6f707573 <memcmp-0x790f8a8d>
    e88628f2:	fcf70ee3          	beq	a4,a5,e88628ce <AudioConverterSetProperty+0x20>
			return _AudioConverterSetPropertyAACDecode( me, inPropertyID, inSize, inData );
    e88628f6:	7579                	lui	a0,0xffffe
    e88628f8:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
				return _AudioConverterSetPropertyOpusEncode( me, inPropertyID, inSize, inData );

		default:
			return kUnsupportedErr;
	}
}
    e88628fc:	8082                	ret
		return kStateErr;
    e88628fe:	7579                	lui	a0,0xffffe
    e8862900:	5cb50513          	addi	a0,a0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
    e8862904:	8082                	ret

00000000e8862906 <AudioConverterFillComplexBuffer>:
		AudioBufferList *					outOutputData,
		AudioStreamPacketDescription *		outPacketDescription )
{
	AudioConverterPrivateRef const me = (AudioConverterPrivateRef) inConverter;

	if( !me->nativeCodecRef )
    e8862906:	01853883          	ld	a7,24(a0)
    e886290a:	10088463          	beqz	a7,e8862a12 <AudioConverterFillComplexBuffer+0x10c>
{
    e886290e:	715d                	addi	sp,sp,-80
    e8862910:	e0a2                	sd	s0,64(sp)
    e8862912:	fc26                	sd	s1,56(sp)
    e8862914:	f84a                	sd	s2,48(sp)
    e8862916:	e486                	sd	ra,72(sp)
    e8862918:	893a                	mv	s2,a4
    e886291a:	8732                	mv	a4,a2
		return kStateErr;
	
	switch ( me->sourceFormatID )
    e886291c:	4110                	lw	a2,0(a0)
    e886291e:	843e                	mv	s0,a5
    e8862920:	87ae                	mv	a5,a1
    e8862922:	616165b7          	lui	a1,0x61616
    e8862926:	36558813          	addi	a6,a1,869 # 61616365 <memcmp-0x871e9c9b>
    e886292a:	84b6                	mv	s1,a3
    e886292c:	86aa                	mv	a3,a0
    e886292e:	07060f63          	beq	a2,a6,e88629ac <AudioConverterFillComplexBuffer+0xa6>
    e8862932:	00c86a63          	bltu	a6,a2,e8862946 <AudioConverterFillComplexBuffer+0x40>
    e8862936:	32058593          	addi	a1,a1,800
    e886293a:	02b60b63          	beq	a2,a1,e8862970 <AudioConverterFillComplexBuffer+0x6a>
			{
				// PCM to AAC Opus
				return _AudioConverterFillComplexBufferOpusEncode( inConverter, inInputDataProc, inInputDataProcUserData, ioOutputDataPacketSize, outOutputData, outPacketDescription );
			}
		default:
			return kUnsupportedErr;
    e886293e:	7579                	lui	a0,0xffffe
    e8862940:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e8862944:	a8b1                	j	e88629a0 <AudioConverterFillComplexBuffer+0x9a>
	switch ( me->sourceFormatID )
    e8862946:	6c7065b7          	lui	a1,0x6c706
    e886294a:	36d58593          	addi	a1,a1,877 # 6c70636d <memcmp-0x7c0f9c93>
    e886294e:	08b60b63          	beq	a2,a1,e88629e4 <AudioConverterFillComplexBuffer+0xde>
    e8862952:	6f7076b7          	lui	a3,0x6f707
    e8862956:	57368693          	addi	a3,a3,1395 # 6f707573 <memcmp-0x790f8a8d>
    e886295a:	fed612e3          	bne	a2,a3,e886293e <AudioConverterFillComplexBuffer+0x38>
	bufferList.mNumberBuffers = 1;
    e886295e:	4685                	li	a3,1
    e8862960:	cc36                	sw	a3,24(sp)
	packetCount = 1;
    e8862962:	c636                	sw	a3,12(sp)
	packetDesc  = NULL;
    e8862964:	e802                	sd	zero,16(sp)
	err = inInputDataProc( inConverter, &packetCount, &bufferList, &packetDesc, inInputDataProcUserData );
    e8862966:	0814                	addi	a3,sp,16
    e8862968:	0830                	addi	a2,sp,24
    e886296a:	006c                	addi	a1,sp,12
    e886296c:	9782                	jalr	a5
			return _AudioConverterFillComplexBufferOpusDecode( inConverter, inInputDataProc, inInputDataProcUserData, ioOutputDataPacketSize, outOutputData, outPacketDescription );
    e886296e:	a80d                	j	e88629a0 <AudioConverterFillComplexBuffer+0x9a>
	if( *ioOutputDataPacketSize < kAudioSamplesPerPacket_AAC_LC )
    e8862970:	4090                	lw	a2,0(s1)
    e8862972:	3ff00693          	li	a3,1023
    e8862976:	06c6f363          	bgeu	a3,a2,e88629dc <AudioConverterFillComplexBuffer+0xd6>
	packetCount = 1;
    e886297a:	4685                	li	a3,1
    e886297c:	c636                	sw	a3,12(sp)
	packetDesc  = NULL;
    e886297e:	e802                	sd	zero,16(sp)
	err = inInputDataProc( inConverter, &packetCount, &bufferList, &packetDesc, inInputDataProcUserData );
    e8862980:	0814                	addi	a3,sp,16
    e8862982:	0830                	addi	a2,sp,24
    e8862984:	006c                	addi	a1,sp,12
    e8862986:	9782                	jalr	a5
	require_noerr_quiet( err, exit );
    e8862988:	ed01                	bnez	a0,e88629a0 <AudioConverterFillComplexBuffer+0x9a>
	if( err == kNoErr && outPacketDescription )
    e886298a:	c801                	beqz	s0,e886299a <AudioConverterFillComplexBuffer+0x94>
		outPacketDescription[ 0 ].mStartOffset = 0;
    e886298c:	00043023          	sd	zero,0(s0)
		outPacketDescription[ 0 ].mVariableFramesInPacket = 0;
    e8862990:	00042423          	sw	zero,8(s0)
		outPacketDescription[ 0 ].mDataByteSize = outOutputData->mBuffers[ 0 ].mDataByteSize;
    e8862994:	00c92783          	lw	a5,12(s2)
    e8862998:	c45c                	sw	a5,12(s0)
	*ioOutputDataPacketSize = kAudioSamplesPerPacket_AAC_LC;
    e886299a:	40000793          	li	a5,1024
	*ioOutputDataPacketSize = kAudioSamplesPerPacket_AAC_ELD;
    e886299e:	c09c                	sw	a5,0(s1)
	}
}
    e88629a0:	60a6                	ld	ra,72(sp)
    e88629a2:	6406                	ld	s0,64(sp)
    e88629a4:	74e2                	ld	s1,56(sp)
    e88629a6:	7942                	ld	s2,48(sp)
    e88629a8:	6161                	addi	sp,sp,80
    e88629aa:	8082                	ret
	if( *ioOutputDataPacketSize < kAudioSamplesPerPacket_AAC_ELD )
    e88629ac:	4090                	lw	a2,0(s1)
    e88629ae:	1df00693          	li	a3,479
    e88629b2:	02c6f563          	bgeu	a3,a2,e88629dc <AudioConverterFillComplexBuffer+0xd6>
	packetCount = 1;
    e88629b6:	4685                	li	a3,1
    e88629b8:	c636                	sw	a3,12(sp)
	packetDesc  = NULL;
    e88629ba:	e802                	sd	zero,16(sp)
	err = inInputDataProc( inConverter, &packetCount, &bufferList, &packetDesc, inInputDataProcUserData );
    e88629bc:	0814                	addi	a3,sp,16
    e88629be:	0830                	addi	a2,sp,24
    e88629c0:	006c                	addi	a1,sp,12
    e88629c2:	9782                	jalr	a5
	require_noerr_quiet( err, exit );
    e88629c4:	fd71                	bnez	a0,e88629a0 <AudioConverterFillComplexBuffer+0x9a>
	if( err == kNoErr && outPacketDescription )
    e88629c6:	c801                	beqz	s0,e88629d6 <AudioConverterFillComplexBuffer+0xd0>
		outPacketDescription[ 0 ].mStartOffset = 0;
    e88629c8:	00043023          	sd	zero,0(s0)
		outPacketDescription[ 0 ].mVariableFramesInPacket = 0;
    e88629cc:	00042423          	sw	zero,8(s0)
		outPacketDescription[ 0 ].mDataByteSize = outOutputData->mBuffers[ 0 ].mDataByteSize;
    e88629d0:	00c92783          	lw	a5,12(s2)
    e88629d4:	c45c                	sw	a5,12(s0)
	*ioOutputDataPacketSize = kAudioSamplesPerPacket_AAC_ELD;
    e88629d6:	1e000793          	li	a5,480
    e88629da:	b7d1                	j	e886299e <AudioConverterFillComplexBuffer+0x98>
		return kSizeErr;
    e88629dc:	7579                	lui	a0,0xffffe
    e88629de:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
			return _AudioConverterFillComplexBufferAACELDDecode( inConverter, inInputDataProc, inInputDataProcUserData, ioOutputDataPacketSize, outOutputData, outPacketDescription );
    e88629e2:	bf7d                	j	e88629a0 <AudioConverterFillComplexBuffer+0x9a>
			if( me->destFormatID == kAudioFormatMPEG4AAC_ELD )
    e88629e4:	414c                	lw	a1,4(a0)
    e88629e6:	01059f63          	bne	a1,a6,e8862a04 <AudioConverterFillComplexBuffer+0xfe>
	bufferList.mNumberBuffers = 1;
    e88629ea:	4605                	li	a2,1
    e88629ec:	cc32                	sw	a2,24(sp)
	packetCount = me->framesPerPacket;
    e88629ee:	4a94                	lw	a3,16(a3)
	err = inInputDataProc( inConverter, &packetCount, &bufferList, &packetDesc, inInputDataProcUserData );
    e88629f0:	0830                	addi	a2,sp,24
	packetDesc  = NULL;
    e88629f2:	e802                	sd	zero,16(sp)
	packetCount = me->framesPerPacket;
    e88629f4:	c636                	sw	a3,12(sp)
	err = inInputDataProc( inConverter, &packetCount, &bufferList, &packetDesc, inInputDataProcUserData );
    e88629f6:	006c                	addi	a1,sp,12
    e88629f8:	0814                	addi	a3,sp,16
    e88629fa:	9782                	jalr	a5
	require_noerr_quiet( err, exit );
    e88629fc:	f155                	bnez	a0,e88629a0 <AudioConverterFillComplexBuffer+0x9a>
	*ioOutputDataPacketSize = numPacket;
    e88629fe:	0004a023          	sw	zero,0(s1)
				return _AudioConverterFillComplexBufferOpusEncode( inConverter, inInputDataProc, inInputDataProcUserData, ioOutputDataPacketSize, outOutputData, outPacketDescription );
    e8862a02:	bf79                	j	e88629a0 <AudioConverterFillComplexBuffer+0x9a>
			else if( me->destFormatID == kAudioFormatOpus )
    e8862a04:	6f707637          	lui	a2,0x6f707
    e8862a08:	57360613          	addi	a2,a2,1395 # 6f707573 <memcmp-0x790f8a8d>
    e8862a0c:	fcc58fe3          	beq	a1,a2,e88629ea <AudioConverterFillComplexBuffer+0xe4>
    e8862a10:	b73d                	j	e886293e <AudioConverterFillComplexBuffer+0x38>
		return kStateErr;
    e8862a12:	7579                	lui	a0,0xffffe
    e8862a14:	5cb50513          	addi	a0,a0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
}
    e8862a18:	8082                	ret

00000000e8862a1a <HIDKnobCreateDescriptor>:
//===========================================================================================================================
//	HIDKnobCreateDescriptor
//===========================================================================================================================

OSStatus	HIDKnobCreateDescriptor( uint8_t **outDescriptor, size_t *outLen )
{
    e8862a1a:	1101                	addi	sp,sp,-32
    e8862a1c:	e84a                	sd	s2,16(sp)
    e8862a1e:	892a                	mv	s2,a0
	OSStatus		err;
	size_t			len;
	uint8_t *		desc;
	
	len = sizeof( kDescriptorTemplate );
	desc = (uint8_t *) malloc( len );
    e8862a20:	04600513          	li	a0,70
{
    e8862a24:	f891540b          	sdd	s0,s1,(sp),0,4
    e8862a28:	ec06                	sd	ra,24(sp)
    e8862a2a:	84ae                	mv	s1,a1
	desc = (uint8_t *) malloc( len );
    e8862a2c:	623180ef          	jal	ra,e887b84e <my_malloc>
	require_action( desc, exit, err = kNoMemoryErr );
    e8862a30:	c515                	beqz	a0,e8862a5c <HIDKnobCreateDescriptor+0x42>
	memcpy( desc, kDescriptorTemplate, len );
    e8862a32:	04600613          	li	a2,70
    e8862a36:	00066597          	auipc	a1,0x66
    e8862a3a:	d0258593          	addi	a1,a1,-766 # e88c8738 <kDescriptorTemplate.8575>
    e8862a3e:	842a                	mv	s0,a0
    e8862a40:	161190ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	
	*outDescriptor = desc;
    e8862a44:	00893023          	sd	s0,0(s2)
	*outLen = len;
    e8862a48:	04600793          	li	a5,70
    e8862a4c:	e09c                	sd	a5,0(s1)
	err = kNoErr;
    e8862a4e:	4501                	li	a0,0
	
exit:
	return( err );
}
    e8862a50:	60e2                	ld	ra,24(sp)
    e8862a52:	f891440b          	ldd	s0,s1,(sp),0,4
    e8862a56:	6942                	ld	s2,16(sp)
    e8862a58:	6105                	addi	sp,sp,32
    e8862a5a:	8082                	ret
	require_action( desc, exit, err = kNoMemoryErr );
    e8862a5c:	7579                	lui	a0,0xffffe
    e8862a5e:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8862a62:	b7fd                	j	e8862a50 <HIDKnobCreateDescriptor+0x36>

00000000e8862a64 <HIDKnobFillReport>:
				  Boolean	inBack,
				  int8_t	inX,
				  int8_t	inY,
				  int8_t	inWheel )
{
	inReport[ 0 ] = (uint8_t)( inButton | ( inHome << 1 ) | ( inBack << 2 ) );
    e8862a64:	0026969b          	slliw	a3,a3,0x2
    e8862a68:	8ecd                	or	a3,a3,a1
    e8862a6a:	0016161b          	slliw	a2,a2,0x1
    e8862a6e:	8ed1                	or	a3,a3,a2
    e8862a70:	00d50023          	sb	a3,0(a0)
	inReport[ 1 ] = (uint8_t) inX;
    e8862a74:	00e500a3          	sb	a4,1(a0)
	inReport[ 2 ] = (uint8_t) inY;
    e8862a78:	00f50123          	sb	a5,2(a0)
	inReport[ 3 ] = (uint8_t) inWheel;
    e8862a7c:	010501a3          	sb	a6,3(a0)
}
    e8862a80:	8082                	ret

00000000e8862a82 <HIDMediaButtonsCreateDescriptor>:
 */

#include "HIDMediaButtons.h"

OSStatus HIDMediaButtonsCreateDescriptor( uint8_t **outDescriptor, size_t *outLen )
{
    e8862a82:	1101                	addi	sp,sp,-32
    e8862a84:	e84a                	sd	s2,16(sp)
    e8862a86:	892a                	mv	s2,a0
	OSStatus		err;
	size_t			len;
	uint8_t *		desc;
	
	len = sizeof( kDescriptorTemplate );
	desc = (uint8_t *) malloc( len );
    e8862a88:	02b00513          	li	a0,43
{
    e8862a8c:	f891540b          	sdd	s0,s1,(sp),0,4
    e8862a90:	ec06                	sd	ra,24(sp)
    e8862a92:	84ae                	mv	s1,a1
	desc = (uint8_t *) malloc( len );
    e8862a94:	5bb180ef          	jal	ra,e887b84e <my_malloc>
	require_action( desc, exit, err = kNoMemoryErr );
    e8862a98:	c515                	beqz	a0,e8862ac4 <HIDMediaButtonsCreateDescriptor+0x42>
	memcpy( desc, kDescriptorTemplate, len );
    e8862a9a:	02b00613          	li	a2,43
    e8862a9e:	00066597          	auipc	a1,0x66
    e8862aa2:	ce258593          	addi	a1,a1,-798 # e88c8780 <kDescriptorTemplate.8571>
    e8862aa6:	842a                	mv	s0,a0
    e8862aa8:	0f9190ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	
	*outDescriptor = desc;
    e8862aac:	00893023          	sd	s0,0(s2)
	*outLen = len;
    e8862ab0:	02b00793          	li	a5,43
    e8862ab4:	e09c                	sd	a5,0(s1)
	err = kNoErr;
    e8862ab6:	4501                	li	a0,0
	
exit:
	return( err );
}
    e8862ab8:	60e2                	ld	ra,24(sp)
    e8862aba:	f891440b          	ldd	s0,s1,(sp),0,4
    e8862abe:	6942                	ld	s2,16(sp)
    e8862ac0:	6105                	addi	sp,sp,32
    e8862ac2:	8082                	ret
	require_action( desc, exit, err = kNoMemoryErr );
    e8862ac4:	7579                	lui	a0,0xffffe
    e8862ac6:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8862aca:	b7fd                	j	e8862ab8 <HIDMediaButtonsCreateDescriptor+0x36>

00000000e8862acc <HIDMediaButtonsFillReport>:

void HIDMediaButtonsFillReport( uint8_t inReport[ 1 ], unsigned buttonIndex )
{
	inReport[0] = buttonIndex;
    e8862acc:	00b50023          	sb	a1,0(a0)
}
    e8862ad0:	8082                	ret

00000000e8862ad2 <HIDTelephonyCreateDescriptor>:
 */

#include "HIDTelephony.h"

OSStatus HIDTelephonyCreateDescriptor( uint8_t **outDescriptor, size_t *outLen )
{
    e8862ad2:	711d                	addi	sp,sp,-96
    e8862ad4:	e4a6                	sd	s1,72(sp)
    e8862ad6:	e0ca                	sd	s2,64(sp)
    e8862ad8:	84ae                	mv	s1,a1
    e8862ada:	892a                	mv	s2,a0
	const uint8_t kDescriptorTemplate[] =
    e8862adc:	03900613          	li	a2,57
    e8862ae0:	0003b597          	auipc	a1,0x3b
    e8862ae4:	cc058593          	addi	a1,a1,-832 # e889d7a0 <icmp6_param_problem+0x732>
    e8862ae8:	850a                	mv	a0,sp
{
    e8862aea:	ec86                	sd	ra,88(sp)
    e8862aec:	e8a2                	sd	s0,80(sp)
	const uint8_t kDescriptorTemplate[] =
    e8862aee:	d7a9d0ef          	jal	ra,e8800068 <memcpy>
	OSStatus		err;
	size_t			len;
	uint8_t *		desc;
	
	len = sizeof( kDescriptorTemplate );
	desc = (uint8_t *) malloc( len );
    e8862af2:	03900513          	li	a0,57
    e8862af6:	559180ef          	jal	ra,e887b84e <my_malloc>
	require_action( desc, exit, err = kNoMemoryErr );
    e8862afa:	c11d                	beqz	a0,e8862b20 <HIDTelephonyCreateDescriptor+0x4e>
	memcpy( desc, kDescriptorTemplate, len );
    e8862afc:	03900613          	li	a2,57
    e8862b00:	858a                	mv	a1,sp
    e8862b02:	842a                	mv	s0,a0
    e8862b04:	09d190ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	
	*outDescriptor = desc;
    e8862b08:	00893023          	sd	s0,0(s2)
	*outLen = len;
    e8862b0c:	03900793          	li	a5,57
    e8862b10:	e09c                	sd	a5,0(s1)
	err = kNoErr;
    e8862b12:	4501                	li	a0,0
	
exit:
	return( err );
}
    e8862b14:	60e6                	ld	ra,88(sp)
    e8862b16:	6446                	ld	s0,80(sp)
    e8862b18:	64a6                	ld	s1,72(sp)
    e8862b1a:	6906                	ld	s2,64(sp)
    e8862b1c:	6125                	addi	sp,sp,96
    e8862b1e:	8082                	ret
	require_action( desc, exit, err = kNoMemoryErr );
    e8862b20:	7579                	lui	a0,0xffffe
    e8862b22:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8862b26:	b7fd                	j	e8862b14 <HIDTelephonyCreateDescriptor+0x42>

00000000e8862b28 <HIDTelephonyFillReport>:

void HIDTelephonyFillReport( uint8_t inReport[ 1 ], unsigned buttonIndex )
{
	inReport[0] = buttonIndex;
    e8862b28:	00b50023          	sb	a1,0(a0)
}
    e8862b2c:	8082                	ret

00000000e8862b2e <HIDTouchScreenSingleCreateDescriptor>:
//===========================================================================================================================
//	HIDTouchScreenSingleCreateDescriptor
//===========================================================================================================================

OSStatus	HIDTouchScreenSingleCreateDescriptor( uint8_t **outDescriptor, size_t *outLen, uint16_t width, uint16_t height )
{
    e8862b2e:	7159                	addi	sp,sp,-112
    e8862b30:	eca6                	sd	s1,88(sp)
    e8862b32:	e8ca                	sd	s2,80(sp)
    e8862b34:	e0d2                	sd	s4,64(sp)
    e8862b36:	892a                	mv	s2,a0
    e8862b38:	84ae                	mv	s1,a1
    e8862b3a:	8a32                	mv	s4,a2
	const uint8_t kDescriptorTemplate[] = 
    e8862b3c:	0003b597          	auipc	a1,0x3b
    e8862b40:	ca458593          	addi	a1,a1,-860 # e889d7e0 <icmp6_param_problem+0x772>
    e8862b44:	03e00613          	li	a2,62
    e8862b48:	850a                	mv	a0,sp
{
    e8862b4a:	e4ce                	sd	s3,72(sp)
    e8862b4c:	f486                	sd	ra,104(sp)
    e8862b4e:	f0a2                	sd	s0,96(sp)
    e8862b50:	89b6                	mv	s3,a3
	const uint8_t kDescriptorTemplate[] = 
    e8862b52:	d169d0ef          	jal	ra,e8800068 <memcpy>
	OSStatus		err;
	size_t			len;
	uint8_t *		desc;
	
	len = sizeof( kDescriptorTemplate );
	desc = (uint8_t *) malloc( len );
    e8862b56:	03e00513          	li	a0,62
    e8862b5a:	4f5180ef          	jal	ra,e887b84e <my_malloc>
	require_action( desc, exit, err = kNoMemoryErr );
    e8862b5e:	c90d                	beqz	a0,e8862b90 <HIDTouchScreenSingleCreateDescriptor+0x62>
    e8862b60:	842a                	mv	s0,a0
	memcpy( desc, kDescriptorTemplate, len );
    e8862b62:	03e00613          	li	a2,62
    e8862b66:	858a                	mv	a1,sp
    e8862b68:	039190ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	desc[0x27] = width;
    e8862b6c:	034413a3          	sh	s4,39(s0)
	desc[0x28] = width >> 8;
	desc[0x34] = height;
    e8862b70:	03341a23          	sh	s3,52(s0)
	desc[0x35] = height >> 8;
	*outDescriptor = desc;
	*outLen = len;
    e8862b74:	03e00793          	li	a5,62
	*outDescriptor = desc;
    e8862b78:	00893023          	sd	s0,0(s2)
	err = kNoErr;
    e8862b7c:	4501                	li	a0,0
	*outLen = len;
    e8862b7e:	e09c                	sd	a5,0(s1)
	
exit:
	return( err );
}
    e8862b80:	70a6                	ld	ra,104(sp)
    e8862b82:	7406                	ld	s0,96(sp)
    e8862b84:	64e6                	ld	s1,88(sp)
    e8862b86:	6946                	ld	s2,80(sp)
    e8862b88:	69a6                	ld	s3,72(sp)
    e8862b8a:	6a06                	ld	s4,64(sp)
    e8862b8c:	6165                	addi	sp,sp,112
    e8862b8e:	8082                	ret
	require_action( desc, exit, err = kNoMemoryErr );
    e8862b90:	7579                	lui	a0,0xffffe
    e8862b92:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8862b96:	b7ed                	j	e8862b80 <HIDTouchScreenSingleCreateDescriptor+0x52>

00000000e8862b98 <HIDTouchScreenFillReport>:
//	HIDTouchScreenFillReport
//===========================================================================================================================

void	HIDTouchScreenFillReport( uint8_t inReport[ 5 ], uint8_t inButtons, uint16_t inX, uint16_t inY )
{
	inReport[ 0 ] = inButtons;
    e8862b98:	00b50023          	sb	a1,0(a0)
	inReport[ 1 ] = inX;
    e8862b9c:	00c510a3          	sh	a2,1(a0)
	inReport[ 2 ] = inX >> 8;
	inReport[ 3 ] = inY;
    e8862ba0:	00d511a3          	sh	a3,3(a0)
	inReport[ 4 ] = inY >> 8;
}
    e8862ba4:	8082                	ret

00000000e8862ba6 <_ScreenStreamGetTypeID>:
	dispatch_once_f( &gScreenStreamInitOnce, NULL, _ScreenStreamGetTypeID );
	return( gScreenStreamTypeID );
}

static void _ScreenStreamGetTypeID( void *inContext )
{
    e8862ba6:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gScreenStreamTypeID = _CFRuntimeRegisterClass( &kScreenStreamClass );
    e8862ba8:	00066517          	auipc	a0,0x66
    e8862bac:	d3050513          	addi	a0,a0,-720 # e88c88d8 <kScreenStreamClass>
{
    e8862bb0:	e406                	sd	ra,8(sp)
	gScreenStreamTypeID = _CFRuntimeRegisterClass( &kScreenStreamClass );
    e8862bb2:	b9de40ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8862bb6:	00081797          	auipc	a5,0x81
    e8862bba:	1ca7a323          	sw	a0,454(a5) # e88e3d7c <gScreenStreamTypeID>
	check( gScreenStreamTypeID != _kCFRuntimeNotATypeID );
}
    e8862bbe:	60a2                	ld	ra,8(sp)
    e8862bc0:	0141                	addi	sp,sp,16
    e8862bc2:	8082                	ret

00000000e8862bc4 <_ScreenStreamFinalize>:
	// This function is called when ScreenUtils is compiled into the AirPlay library, when the retain count of a ScreenStream 
	// object goes to zero.
	(void) me;

#if H264_ANNEX_B
	ForgetMem( &me->annexBHeaderPtr );
    e8862bc4:	691c                	ld	a5,16(a0)
    e8862bc6:	cf91                	beqz	a5,e8862be2 <_ScreenStreamFinalize+0x1e>
{
    e8862bc8:	1141                	addi	sp,sp,-16
    e8862bca:	e022                	sd	s0,0(sp)
    e8862bcc:	842a                	mv	s0,a0
	ForgetMem( &me->annexBHeaderPtr );
    e8862bce:	853e                	mv	a0,a5
{
    e8862bd0:	e406                	sd	ra,8(sp)
	ForgetMem( &me->annexBHeaderPtr );
    e8862bd2:	72e190ef          	jal	ra,e887c300 <eLIBs_free>
    e8862bd6:	00043823          	sd	zero,16(s0)
#else
	ForgetMem( &me->avccPtr );
#endif

}
    e8862bda:	60a2                	ld	ra,8(sp)
    e8862bdc:	6402                	ld	s0,0(sp)
    e8862bde:	0141                	addi	sp,sp,16
    e8862be0:	8082                	ret
    e8862be2:	8082                	ret

00000000e8862be4 <ScreenStreamGetTypeID>:
	dispatch_once_f( &gScreenStreamInitOnce, NULL, _ScreenStreamGetTypeID );
    e8862be4:	00081517          	auipc	a0,0x81
    e8862be8:	19450513          	addi	a0,a0,404 # e88e3d78 <gScreenStreamInitOnce>
    e8862bec:	4118                	lw	a4,0(a0)
    e8862bee:	4789                	li	a5,2
    e8862bf0:	02f70363          	beq	a4,a5,e8862c16 <ScreenStreamGetTypeID+0x32>
{
    e8862bf4:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gScreenStreamInitOnce, NULL, _ScreenStreamGetTypeID );
    e8862bf6:	00000617          	auipc	a2,0x0
    e8862bfa:	fb060613          	addi	a2,a2,-80 # e8862ba6 <_ScreenStreamGetTypeID>
    e8862bfe:	4581                	li	a1,0
{
    e8862c00:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gScreenStreamInitOnce, NULL, _ScreenStreamGetTypeID );
    e8862c02:	a70ec0ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e8862c06:	60a2                	ld	ra,8(sp)
    e8862c08:	00081797          	auipc	a5,0x81
    e8862c0c:	17478793          	addi	a5,a5,372 # e88e3d7c <gScreenStreamTypeID>
    e8862c10:	4388                	lw	a0,0(a5)
    e8862c12:	0141                	addi	sp,sp,16
    e8862c14:	8082                	ret
    e8862c16:	00081797          	auipc	a5,0x81
    e8862c1a:	16678793          	addi	a5,a5,358 # e88e3d7c <gScreenStreamTypeID>
    e8862c1e:	4388                	lw	a0,0(a5)
    e8862c20:	8082                	ret

00000000e8862c22 <ScreenStreamCreate>:
{
    e8862c22:	1101                	addi	sp,sp,-32
    e8862c24:	e826                	sd	s1,16(sp)
    e8862c26:	ec06                	sd	ra,24(sp)
    e8862c28:	e422                	sd	s0,8(sp)
    e8862c2a:	84aa                	mv	s1,a0
	me = (ScreenStreamRef) _CFRuntimeCreateInstance( NULL, ScreenStreamGetTypeID(), (CFIndex) extraLen, NULL );
    e8862c2c:	fb9ff0ef          	jal	ra,e8862be4 <ScreenStreamGetTypeID>
    e8862c30:	0005059b          	sext.w	a1,a0
    e8862c34:	4681                	li	a3,0
    e8862c36:	03000613          	li	a2,48
    e8862c3a:	4501                	li	a0,0
    e8862c3c:	b39e40ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( me, exit, err = kNoMemoryErr );
    e8862c40:	cd19                	beqz	a0,e8862c5e <ScreenStreamCreate+0x3c>
    e8862c42:	842a                	mv	s0,a0
	memset( ( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );
    e8862c44:	03000613          	li	a2,48
    e8862c48:	0521                	addi	a0,a0,8
    e8862c4a:	4581                	li	a1,0
    e8862c4c:	748190ef          	jal	ra,e887c394 <eLIBs_memset>
	*outStream = me;
    e8862c50:	e080                	sd	s0,0(s1)
	err = kNoErr;
    e8862c52:	4501                	li	a0,0
}
    e8862c54:	60e2                	ld	ra,24(sp)
    e8862c56:	6422                	ld	s0,8(sp)
    e8862c58:	64c2                	ld	s1,16(sp)
    e8862c5a:	6105                	addi	sp,sp,32
    e8862c5c:	8082                	ret
	require_action( me, exit, err = kNoMemoryErr );
    e8862c5e:	7579                	lui	a0,0xffffe
    e8862c60:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8862c64:	bfc5                	j	e8862c54 <ScreenStreamCreate+0x32>

00000000e8862c66 <ScreenStreamSetDelegateContext>:
//===========================================================================================================================

void ScreenStreamSetDelegateContext( ScreenStreamRef inStream, void* inContext )
{
	ScreenStreamImpRef const me = _ScreenStreamGetImp( inStream );
	me->delegateContext = inContext;
    e8862c66:	e50c                	sd	a1,8(a0)
}
    e8862c68:	8082                	ret

00000000e8862c6a <ScreenStreamSetWidthHeight>:
//===========================================================================================================================
//	ScreenStreamSetWidthHeight
//===========================================================================================================================

void ScreenStreamSetWidthHeight( ScreenStreamRef inStream, uint32_t width, uint32_t height )
{
    e8862c6a:	1101                	addi	sp,sp,-32
    e8862c6c:	f891540b          	sdd	s0,s1,(sp),0,4
    e8862c70:	e84a                	sd	s2,16(sp)
    e8862c72:	ec06                	sd	ra,24(sp)
    e8862c74:	892a                	mv	s2,a0
    e8862c76:	00072517          	auipc	a0,0x72
    e8862c7a:	46a50513          	addi	a0,a0,1130 # e88d50e0 <gLogCategory_ScreenStream>
    e8862c7e:	84ae                	mv	s1,a1
    e8862c80:	8432                	mv	s0,a2
    e8862c82:	411c                	lw	a5,0(a0)
	ScreenStreamImpRef const me = _ScreenStreamGetImp( inStream );

	if(width == 0 || height == 0)
	{
		ss_ulog( kLogLevelNotice, "ScreenStream receive error width=%d,height=%d\n",width,height);
    e8862c84:	03200713          	li	a4,50
	if(width == 0 || height == 0)
    e8862c88:	c191                	beqz	a1,e8862c8c <ScreenStreamSetWidthHeight+0x22>
    e8862c8a:	ee21                	bnez	a2,e8862ce2 <ScreenStreamSetWidthHeight+0x78>
		ss_ulog( kLogLevelNotice, "ScreenStream receive error width=%d,height=%d\n",width,height);
    e8862c8c:	04f74563          	blt	a4,a5,e8862cd6 <ScreenStreamSetWidthHeight+0x6c>
    e8862c90:	577d                	li	a4,-1
    e8862c92:	02e78963          	beq	a5,a4,e8862cc4 <ScreenStreamSetWidthHeight+0x5a>
    e8862c96:	87a2                	mv	a5,s0
    e8862c98:	8726                	mv	a4,s1

        screen_steam = 1;

        //Sleep(300);
    }
}
    e8862c9a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8862c9e:	60e2                	ld	ra,24(sp)
    e8862ca0:	6942                	ld	s2,16(sp)
		ss_ulog( kLogLevelNotice, "ScreenStream receive error width=%d,height=%d\n",width,height);
    e8862ca2:	00066697          	auipc	a3,0x66
    e8862ca6:	b3e68693          	addi	a3,a3,-1218 # e88c87e0 <kDescriptorTemplate.8571+0x60>
    e8862caa:	03200613          	li	a2,50
    e8862cae:	00066597          	auipc	a1,0x66
    e8862cb2:	bc258593          	addi	a1,a1,-1086 # e88c8870 <__PRETTY_FUNCTION__.9258>
    e8862cb6:	00072517          	auipc	a0,0x72
    e8862cba:	42a50513          	addi	a0,a0,1066 # e88d50e0 <gLogCategory_ScreenStream>
}
    e8862cbe:	6105                	addi	sp,sp,32
		ss_ulog( kLogLevelNotice, "ScreenStream receive error width=%d,height=%d\n",width,height);
    e8862cc0:	fb4f106f          	j	e8854474 <LogPrintF>
    e8862cc4:	03200593          	li	a1,50
    e8862cc8:	00072517          	auipc	a0,0x72
    e8862ccc:	41850513          	addi	a0,a0,1048 # e88d50e0 <gLogCategory_ScreenStream>
    e8862cd0:	ba2f10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8862cd4:	f169                	bnez	a0,e8862c96 <ScreenStreamSetWidthHeight+0x2c>
}
    e8862cd6:	60e2                	ld	ra,24(sp)
    e8862cd8:	f891440b          	ldd	s0,s1,(sp),0,4
    e8862cdc:	6942                	ld	s2,16(sp)
    e8862cde:	6105                	addi	sp,sp,32
    e8862ce0:	8082                	ret
	ss_ulog( kLogLevelNotice, "ScreenStreamSetWidthHeight width=%d,height=%d\n",width,height);
    e8862ce2:	02f74763          	blt	a4,a5,e8862d10 <ScreenStreamSetWidthHeight+0xa6>
    e8862ce6:	577d                	li	a4,-1
    e8862ce8:	06e78263          	beq	a5,a4,e8862d4c <ScreenStreamSetWidthHeight+0xe2>
    e8862cec:	87a2                	mv	a5,s0
    e8862cee:	8726                	mv	a4,s1
    e8862cf0:	00066697          	auipc	a3,0x66
    e8862cf4:	b2068693          	addi	a3,a3,-1248 # e88c8810 <kDescriptorTemplate.8571+0x90>
    e8862cf8:	03200613          	li	a2,50
    e8862cfc:	00066597          	auipc	a1,0x66
    e8862d00:	b7458593          	addi	a1,a1,-1164 # e88c8870 <__PRETTY_FUNCTION__.9258>
    e8862d04:	00072517          	auipc	a0,0x72
    e8862d08:	3dc50513          	addi	a0,a0,988 # e88d50e0 <gLogCategory_ScreenStream>
    e8862d0c:	f68f10ef          	jal	ra,e8854474 <LogPrintF>
    if(!screen_steam)
    e8862d10:	00081797          	auipc	a5,0x81
    e8862d14:	2b078793          	addi	a5,a5,688 # e88e3fc0 <screen_steam>
    e8862d18:	4398                	lw	a4,0(a5)
	me->heightPixels = height;
    e8862d1a:	02892a23          	sw	s0,52(s2)
	me->widthPixels = width;
    e8862d1e:	02992823          	sw	s1,48(s2)
    if(!screen_steam)
    e8862d22:	843e                	mv	s0,a5
    e8862d24:	fb4d                	bnez	a4,e8862cd6 <ScreenStreamSetWidthHeight+0x6c>
    	StatusNotify(LINK_SUCCESS);
    e8862d26:	4511                	li	a0,4
    e8862d28:	643110ef          	jal	ra,e8874b6a <StatusNotify>
        if(carplay_playing)
    e8862d2c:	00072797          	auipc	a5,0x72
    e8862d30:	3b078793          	addi	a5,a5,944 # e88d50dc <carplay_playing>
    e8862d34:	439c                	lw	a5,0(a5)
    e8862d36:	c781                	beqz	a5,e8862d3e <ScreenStreamSetWidthHeight+0xd4>
            lib_carplay_key(1);
    e8862d38:	4505                	li	a0,1
    e8862d3a:	6a4110ef          	jal	ra,e88743de <lib_carplay_key>
    	DecoderInit(0, 0);
    e8862d3e:	4581                	li	a1,0
    e8862d40:	4501                	li	a0,0
    e8862d42:	1ab110ef          	jal	ra,e88746ec <DecoderInit>
        screen_steam = 1;
    e8862d46:	4785                	li	a5,1
    e8862d48:	c01c                	sw	a5,0(s0)
    e8862d4a:	b771                	j	e8862cd6 <ScreenStreamSetWidthHeight+0x6c>
	ss_ulog( kLogLevelNotice, "ScreenStreamSetWidthHeight width=%d,height=%d\n",width,height);
    e8862d4c:	03200593          	li	a1,50
    e8862d50:	b22f10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8862d54:	dd55                	beqz	a0,e8862d10 <ScreenStreamSetWidthHeight+0xa6>
    e8862d56:	bf59                	j	e8862cec <ScreenStreamSetWidthHeight+0x82>

00000000e8862d58 <ScreenStreamSetAVCC>:
//===========================================================================================================================
//	ScreenStreamSetAVCC
//===========================================================================================================================

OSStatus ScreenStreamSetAVCC( ScreenStreamRef inStream, const uint8_t* avccPtr, size_t avccLen )
{
    e8862d58:	7139                	addi	sp,sp,-64
    e8862d5a:	f852                	sd	s4,48(sp)
    e8862d5c:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8862d60:	8a32                	mv	s4,a2
    e8862d62:	89ae                	mv	s3,a1
    e8862d64:	fa91540b          	sdd	s0,s1,(sp),1,4
#if H264_ANNEX_B
	uint8_t *			headerPtr;
	size_t				headerLen;
	size_t				nalSizeHeader;
	
	err = H264ConvertAVCCtoAnnexBHeader( avccPtr, avccLen, NULL, 0, &headerLen, NULL, NULL );
    e8862d68:	4801                	li	a6,0
{
    e8862d6a:	84aa                	mv	s1,a0
	err = H264ConvertAVCCtoAnnexBHeader( avccPtr, avccLen, NULL, 0, &headerLen, NULL, NULL );
    e8862d6c:	4781                	li	a5,0
    e8862d6e:	870a                	mv	a4,sp
    e8862d70:	4681                	li	a3,0
    e8862d72:	4601                	li	a2,0
    e8862d74:	85d2                	mv	a1,s4
    e8862d76:	854e                	mv	a0,s3
{
    e8862d78:	fc06                	sd	ra,56(sp)
	err = H264ConvertAVCCtoAnnexBHeader( avccPtr, avccLen, NULL, 0, &headerLen, NULL, NULL );
    e8862d7a:	dfbf10ef          	jal	ra,e8854b74 <H264ConvertAVCCtoAnnexBHeader>
    e8862d7e:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8862d80:	e505                	bnez	a0,e8862da8 <ScreenStreamSetAVCC+0x50>
	
	headerPtr = (uint8_t *) malloc( headerLen );
    e8862d82:	6502                	ld	a0,0(sp)
    e8862d84:	2cb180ef          	jal	ra,e887b84e <my_malloc>
    e8862d88:	892a                	mv	s2,a0
	require_action( headerPtr, exit, err = kNoMemoryErr );
    e8862d8a:	c905                	beqz	a0,e8862dba <ScreenStreamSetAVCC+0x62>
	err = H264ConvertAVCCtoAnnexBHeader( avccPtr, avccLen, headerPtr, headerLen, &headerLen, &nalSizeHeader, NULL );
    e8862d8c:	6682                	ld	a3,0(sp)
    e8862d8e:	862a                	mv	a2,a0
    e8862d90:	4801                	li	a6,0
    e8862d92:	003c                	addi	a5,sp,8
    e8862d94:	870a                	mv	a4,sp
    e8862d96:	85d2                	mv	a1,s4
    e8862d98:	854e                	mv	a0,s3
    e8862d9a:	ddbf10ef          	jal	ra,e8854b74 <H264ConvertAVCCtoAnnexBHeader>
    e8862d9e:	842a                	mv	s0,a0
	if( err )
    e8862da0:	c10d                	beqz	a0,e8862dc2 <ScreenStreamSetAVCC+0x6a>
		free( headerPtr );
    e8862da2:	854a                	mv	a0,s2
    e8862da4:	55c190ef          	jal	ra,e887c300 <eLIBs_free>
		me->avccLen = avccLen;
	}
#endif
exit:
	return( err );
}
    e8862da8:	8522                	mv	a0,s0
    e8862daa:	70e2                	ld	ra,56(sp)
    e8862dac:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8862db0:	7a42                	ld	s4,48(sp)
    e8862db2:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8862db6:	6121                	addi	sp,sp,64
    e8862db8:	8082                	ret
	require_action( headerPtr, exit, err = kNoMemoryErr );
    e8862dba:	7479                	lui	s0,0xffffe
    e8862dbc:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	return( err );
    e8862dc0:	b7e5                	j	e8862da8 <ScreenStreamSetAVCC+0x50>
	if( me->annexBHeaderPtr )
    e8862dc2:	6888                	ld	a0,16(s1)
    e8862dc4:	c119                	beqz	a0,e8862dca <ScreenStreamSetAVCC+0x72>
		free( me->annexBHeaderPtr );
    e8862dc6:	53a190ef          	jal	ra,e887c300 <eLIBs_free>
	me->annexBHeaderLen		= headerLen;
    e8862dca:	6782                	ld	a5,0(sp)
	me->annexBHeaderPtr		= headerPtr;
    e8862dcc:	0124b823          	sd	s2,16(s1)
	me->annexBHeaderWritten = false;
    e8862dd0:	02048023          	sb	zero,32(s1)
	me->annexBHeaderLen		= headerLen;
    e8862dd4:	ec9c                	sd	a5,24(s1)
	me->nalSizeHeader		= nalSizeHeader;
    e8862dd6:	67a2                	ld	a5,8(sp)
    e8862dd8:	f49c                	sd	a5,40(s1)
	me->annexBHeaderWritten = false;
    e8862dda:	b7f9                	j	e8862da8 <ScreenStreamSetAVCC+0x50>

00000000e8862ddc <ScreenStreamStart>:
	// Once this function returns, ScreenStreamProcessData() will be called continuously, providing H.264 bit-stream data
	// to be decoded and displayed.
	(void) me;
	
	err = kNoErr;
	ss_ulog( kLogLevelNotice, "Screen stream started\n" );
    e8862ddc:	00072517          	auipc	a0,0x72
    e8862de0:	30450513          	addi	a0,a0,772 # e88d50e0 <gLogCategory_ScreenStream>
    e8862de4:	411c                	lw	a5,0(a0)
    e8862de6:	03200713          	li	a4,50
    e8862dea:	04f74163          	blt	a4,a5,e8862e2c <ScreenStreamStart+0x50>
{
    e8862dee:	1141                	addi	sp,sp,-16
    e8862df0:	e406                	sd	ra,8(sp)
	ss_ulog( kLogLevelNotice, "Screen stream started\n" );
    e8862df2:	577d                	li	a4,-1
    e8862df4:	02e78663          	beq	a5,a4,e8862e20 <ScreenStreamStart+0x44>
    e8862df8:	00066697          	auipc	a3,0x66
    e8862dfc:	a4868693          	addi	a3,a3,-1464 # e88c8840 <kDescriptorTemplate.8571+0xc0>
    e8862e00:	03200613          	li	a2,50
    e8862e04:	00066597          	auipc	a1,0x66
    e8862e08:	a8c58593          	addi	a1,a1,-1396 # e88c8890 <__PRETTY_FUNCTION__.9277>
    e8862e0c:	00072517          	auipc	a0,0x72
    e8862e10:	2d450513          	addi	a0,a0,724 # e88d50e0 <gLogCategory_ScreenStream>
    e8862e14:	e60f10ef          	jal	ra,e8854474 <LogPrintF>
		ss_ulog( kLogLevelError, "### Start screen stream failed: %#m\n", err );
		ScreenStreamStop( inStream );
	}
    
	return( err );
}
    e8862e18:	60a2                	ld	ra,8(sp)
    e8862e1a:	4501                	li	a0,0
    e8862e1c:	0141                	addi	sp,sp,16
    e8862e1e:	8082                	ret
	ss_ulog( kLogLevelNotice, "Screen stream started\n" );
    e8862e20:	03200593          	li	a1,50
    e8862e24:	a4ef10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8862e28:	d965                	beqz	a0,e8862e18 <ScreenStreamStart+0x3c>
    e8862e2a:	b7f9                	j	e8862df8 <ScreenStreamStart+0x1c>
}
    e8862e2c:	4501                	li	a0,0
    e8862e2e:	8082                	ret

00000000e8862e30 <ScreenStreamStop>:
//===========================================================================================================================
//	ScreenStreamStop
//===========================================================================================================================

void	ScreenStreamStop( ScreenStreamRef inStream )
{
    e8862e30:	1141                	addi	sp,sp,-16
    e8862e32:	e406                	sd	ra,8(sp)
    e8862e34:	e022                	sd	s0,0(sp)
    e8862e36:	842a                	mv	s0,a0
	ScreenStreamImpRef const		me = _ScreenStreamGetImp( inStream );

	// $$$ TODO: This is where the video processing chain should be stopped.
	// This function is responsible for releasing any resources allocated in ScreenStreamStart().
	DecoderUninit();
    e8862e38:	17d110ef          	jal	ra,e88747b4 <DecoderUninit>
	StatusNotify(LINK_EXITING);
    e8862e3c:	4519                	li	a0,6
    e8862e3e:	52d110ef          	jal	ra,e8874b6a <StatusNotify>
    carplay_playing = IsCarPlayPlaying();   //记录播放状态
    e8862e42:	700120ef          	jal	ra,e8875542 <IsCarPlayPlaying>
    e8862e46:	00072797          	auipc	a5,0x72
    e8862e4a:	28a7ab23          	sw	a0,662(a5) # e88d50dc <carplay_playing>
            

#if H264_ANNEX_B
	ForgetMem( &me->annexBHeaderPtr );
    e8862e4e:	6808                	ld	a0,16(s0)
    e8862e50:	c509                	beqz	a0,e8862e5a <ScreenStreamStop+0x2a>
    e8862e52:	4ae190ef          	jal	ra,e887c300 <eLIBs_free>
    e8862e56:	00043823          	sd	zero,16(s0)
#else
	ForgetMem( &me->avccPtr );
#endif
	ss_ulog( kLogLevelNotice, "Screen stream stopped\n" );
    e8862e5a:	00072517          	auipc	a0,0x72
    e8862e5e:	28650513          	addi	a0,a0,646 # e88d50e0 <gLogCategory_ScreenStream>
    e8862e62:	411c                	lw	a5,0(a0)
    e8862e64:	03200713          	li	a4,50
    e8862e68:	02f74563          	blt	a4,a5,e8862e92 <ScreenStreamStop+0x62>
    e8862e6c:	577d                	li	a4,-1
    e8862e6e:	02e78a63          	beq	a5,a4,e8862ea2 <ScreenStreamStop+0x72>
    e8862e72:	00066697          	auipc	a3,0x66
    e8862e76:	9e668693          	addi	a3,a3,-1562 # e88c8858 <kDescriptorTemplate.8571+0xd8>
    e8862e7a:	03200613          	li	a2,50
    e8862e7e:	00066597          	auipc	a1,0x66
    e8862e82:	a2a58593          	addi	a1,a1,-1494 # e88c88a8 <__PRETTY_FUNCTION__.9282>
    e8862e86:	00072517          	auipc	a0,0x72
    e8862e8a:	25a50513          	addi	a0,a0,602 # e88d50e0 <gLogCategory_ScreenStream>
    e8862e8e:	de6f10ef          	jal	ra,e8854474 <LogPrintF>

    screen_steam = 0;
}
    e8862e92:	60a2                	ld	ra,8(sp)
    e8862e94:	6402                	ld	s0,0(sp)
    screen_steam = 0;
    e8862e96:	00081797          	auipc	a5,0x81
    e8862e9a:	1207a523          	sw	zero,298(a5) # e88e3fc0 <screen_steam>
}
    e8862e9e:	0141                	addi	sp,sp,16
    e8862ea0:	8082                	ret
	ss_ulog( kLogLevelNotice, "Screen stream stopped\n" );
    e8862ea2:	03200593          	li	a1,50
    e8862ea6:	9ccf10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8862eaa:	d565                	beqz	a0,e8862e92 <ScreenStreamStop+0x62>
    e8862eac:	b7d9                	j	e8862e72 <ScreenStreamStop+0x42>

00000000e8862eae <ScreenStreamProcessData>:
		size_t						inLen, 
		uint64_t					inDisplayTicks, 
		CFDictionaryRef				inOptions, 
		ScreenStreamCompletion_f	inCompletion, 
		void *						inContext )
{
    e8862eae:	7159                	addi	sp,sp,-112
    e8862eb0:	f85a                	sd	s6,48(sp)
    e8862eb2:	8b3e                	mv	s6,a5
#if H264_ANNEX_B
	const uint8_t *					src;
	const uint8_t *					end;
	const uint8_t *					nalPtr;
	size_t							nalLen;
	const uint8_t					startCodePrefix[4] = { 0x00, 0x00, 0x00, 0x01 };//H.264 zero_byte and start_code_prefix_one_3bytes, see H.264 Annex B, B.1.1
    e8862eb4:	010007b7          	lui	a5,0x1000
{
    e8862eb8:	eca6                	sd	s1,88(sp)
    e8862eba:	e8ca                	sd	s2,80(sp)
    e8862ebc:	e0d2                	sd	s4,64(sp)
    e8862ebe:	f45e                	sd	s7,40(sp)
    e8862ec0:	f486                	sd	ra,104(sp)
    e8862ec2:	f0a2                	sd	s0,96(sp)
    e8862ec4:	e4ce                	sd	s3,72(sp)
    e8862ec6:	fc56                	sd	s5,56(sp)
    e8862ec8:	f062                	sd	s8,32(sp)
	const uint8_t					startCodePrefix[4] = { 0x00, 0x00, 0x00, 0x01 };//H.264 zero_byte and start_code_prefix_one_3bytes, see H.264 Annex B, B.1.1
    e8862eca:	c03e                	sw	a5,0(sp)

	if( !me->annexBHeaderWritten )
    e8862ecc:	02054783          	lbu	a5,32(a0)
{
    e8862ed0:	892a                	mv	s2,a0
    e8862ed2:	84ae                	mv	s1,a1
    e8862ed4:	8a32                	mv	s4,a2
    e8862ed6:	8bc2                	mv	s7,a6
	if( !me->annexBHeaderWritten )
    e8862ed8:	eb99                	bnez	a5,e8862eee <ScreenStreamProcessData+0x40>
	{
		require_action( me->annexBHeaderPtr, exit, err = kNotPreparedErr );
    e8862eda:	6908                	ld	a0,16(a0)
    e8862edc:	12050c63          	beqz	a0,e8863014 <ScreenStreamProcessData+0x166>
	DecoderRender((BYTE*)inPtr,inLen);
    e8862ee0:	01892583          	lw	a1,24(s2)
    e8862ee4:	10f110ef          	jal	ra,e88747f2 <DecoderRender>
		err = _ScreenStreamDecode( me, me->annexBHeaderPtr, me->annexBHeaderLen );
		require_noerr( err, exit );
		me->annexBHeaderWritten = true;
    e8862ee8:	4785                	li	a5,1
    e8862eea:	02f90023          	sb	a5,32(s2)
	}
	
	if ( me->nalSizeHeader == sizeof( startCodePrefix ) )
    e8862eee:	02893703          	ld	a4,40(s2)
    e8862ef2:	4791                	li	a5,4
    e8862ef4:	06f71663          	bne	a4,a5,e8862f60 <ScreenStreamProcessData+0xb2>
	{
		src = inData;
    e8862ef8:	e426                	sd	s1,8(sp)
		end = src + inLen;
    e8862efa:	01448ab3          	add	s5,s1,s4
		const uint8_t * start = inData;
    e8862efe:	89a6                	mv	s3,s1
		while( ( err = H264GetNextNALUnit( src, end, me->nalSizeHeader, &nalPtr, &nalLen, &src ) ) == kNoErr )
    e8862f00:	02893603          	ld	a2,40(s2)
    e8862f04:	6522                	ld	a0,8(sp)
    e8862f06:	003c                	addi	a5,sp,8
    e8862f08:	0838                	addi	a4,sp,24
    e8862f0a:	0814                	addi	a3,sp,16
    e8862f0c:	85d6                	mv	a1,s5
    e8862f0e:	dcbf10ef          	jal	ra,e8854cd8 <H264GetNextNALUnit>
    e8862f12:	842a                	mv	s0,a0
    e8862f14:	cd1d                	beqz	a0,e8862f52 <ScreenStreamProcessData+0xa4>
		{
			memcpy( (uint8_t *)start, startCodePrefix, sizeof( startCodePrefix ) );
			start = (uint8_t *)src;
		}
		if ( err == kEndingErr )
    e8862f16:	77f9                	lui	a5,0xffffe
    e8862f18:	5a078793          	addi	a5,a5,1440 # ffffffffffffe5a0 <__DRAM0_INF_BASE+0xffffffff0000e5a0>
    e8862f1c:	08f51663          	bne	a0,a5,e8862fa8 <ScreenStreamProcessData+0xfa>
	DecoderRender((BYTE*)inPtr,inLen);
    e8862f20:	000a059b          	sext.w	a1,s4
    e8862f24:	8526                	mv	a0,s1
    e8862f26:	0cd110ef          	jal	ra,e88747f2 <DecoderRender>
#endif

	err = kNoErr;
	
exit:;
	if( inCompletion ) inCompletion( inContext );
    e8862f2a:	4401                	li	s0,0
    e8862f2c:	000b0563          	beqz	s6,e8862f36 <ScreenStreamProcessData+0x88>
    e8862f30:	855e                	mv	a0,s7
    e8862f32:	9b02                	jalr	s6
	if( err ) ss_ulog( kLogLevelError, "### Screen stream process data failed: %#m\n", err );
    e8862f34:	ec25                	bnez	s0,e8862fac <ScreenStreamProcessData+0xfe>
	if( inCompletion ) inCompletion( inContext );
    e8862f36:	4401                	li	s0,0
	return( err );
}
    e8862f38:	8522                	mv	a0,s0
    e8862f3a:	70a6                	ld	ra,104(sp)
    e8862f3c:	7406                	ld	s0,96(sp)
    e8862f3e:	64e6                	ld	s1,88(sp)
    e8862f40:	6946                	ld	s2,80(sp)
    e8862f42:	69a6                	ld	s3,72(sp)
    e8862f44:	6a06                	ld	s4,64(sp)
    e8862f46:	7ae2                	ld	s5,56(sp)
    e8862f48:	7b42                	ld	s6,48(sp)
    e8862f4a:	7ba2                	ld	s7,40(sp)
    e8862f4c:	7c02                	ld	s8,32(sp)
    e8862f4e:	6165                	addi	sp,sp,112
    e8862f50:	8082                	ret
			memcpy( (uint8_t *)start, startCodePrefix, sizeof( startCodePrefix ) );
    e8862f52:	854e                	mv	a0,s3
    e8862f54:	4611                	li	a2,4
    e8862f56:	858a                	mv	a1,sp
    e8862f58:	448190ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			start = (uint8_t *)src;
    e8862f5c:	69a2                	ld	s3,8(sp)
    e8862f5e:	b74d                	j	e8862f00 <ScreenStreamProcessData+0x52>
		uint8_t * pData = malloc( inLen * 4 );//Worst case a buffer full of nothing but single byte lengths of 0x00 will be expanded to 4 times the size when replaced with 0x00000001
    e8862f60:	002a1513          	slli	a0,s4,0x2
    e8862f64:	0eb180ef          	jal	ra,e887b84e <my_malloc>
    e8862f68:	8aaa                	mv	s5,a0
		require_action( pData, exit, err = kNoMemoryErr );
    e8862f6a:	c94d                	beqz	a0,e886301c <ScreenStreamProcessData+0x16e>
		src = inData;
    e8862f6c:	e426                	sd	s1,8(sp)
		end = src + inLen;
    e8862f6e:	01448c33          	add	s8,s1,s4
		size_t uIndex = 0;
    e8862f72:	4981                	li	s3,0
		while( ( err = H264GetNextNALUnit( src, end, me->nalSizeHeader, &nalPtr, &nalLen, &src ) ) == kNoErr )
    e8862f74:	02893603          	ld	a2,40(s2)
    e8862f78:	6522                	ld	a0,8(sp)
    e8862f7a:	003c                	addi	a5,sp,8
    e8862f7c:	0838                	addi	a4,sp,24
    e8862f7e:	0814                	addi	a3,sp,16
    e8862f80:	85e2                	mv	a1,s8
    e8862f82:	d57f10ef          	jal	ra,e8854cd8 <H264GetNextNALUnit>
    e8862f86:	842a                	mv	s0,a0
    e8862f88:	c125                	beqz	a0,e8862fe8 <ScreenStreamProcessData+0x13a>
		if ( err == kEndingErr )
    e8862f8a:	77f9                	lui	a5,0xffffe
    e8862f8c:	5a078793          	addi	a5,a5,1440 # ffffffffffffe5a0 <__DRAM0_INF_BASE+0xffffffff0000e5a0>
    e8862f90:	00f51863          	bne	a0,a5,e8862fa0 <ScreenStreamProcessData+0xf2>
	DecoderRender((BYTE*)inPtr,inLen);
    e8862f94:	000a059b          	sext.w	a1,s4
    e8862f98:	8526                	mv	a0,s1
    e8862f9a:	059110ef          	jal	ra,e88747f2 <DecoderRender>
			err = _ScreenStreamDecode( me, inData, inLen );
    e8862f9e:	4401                	li	s0,0
		free(pData);
    e8862fa0:	8556                	mv	a0,s5
    e8862fa2:	35e190ef          	jal	ra,e887c300 <eLIBs_free>
	require_noerr( err, exit );
    e8862fa6:	d051                	beqz	s0,e8862f2a <ScreenStreamProcessData+0x7c>
	if( inCompletion ) inCompletion( inContext );
    e8862fa8:	f80b14e3          	bnez	s6,e8862f30 <ScreenStreamProcessData+0x82>
	if( err ) ss_ulog( kLogLevelError, "### Screen stream process data failed: %#m\n", err );
    e8862fac:	00072517          	auipc	a0,0x72
    e8862fb0:	13450513          	addi	a0,a0,308 # e88d50e0 <gLogCategory_ScreenStream>
    e8862fb4:	411c                	lw	a5,0(a0)
    e8862fb6:	05a00713          	li	a4,90
    e8862fba:	f6f74fe3          	blt	a4,a5,e8862f38 <ScreenStreamProcessData+0x8a>
    e8862fbe:	577d                	li	a4,-1
    e8862fc0:	04e78463          	beq	a5,a4,e8863008 <ScreenStreamProcessData+0x15a>
    e8862fc4:	8722                	mv	a4,s0
    e8862fc6:	00065697          	auipc	a3,0x65
    e8862fca:	7ea68693          	addi	a3,a3,2026 # e88c87b0 <kDescriptorTemplate.8571+0x30>
    e8862fce:	05a00613          	li	a2,90
    e8862fd2:	00066597          	auipc	a1,0x66
    e8862fd6:	8ee58593          	addi	a1,a1,-1810 # e88c88c0 <__PRETTY_FUNCTION__.9316>
    e8862fda:	00072517          	auipc	a0,0x72
    e8862fde:	10650513          	addi	a0,a0,262 # e88d50e0 <gLogCategory_ScreenStream>
    e8862fe2:	c92f10ef          	jal	ra,e8854474 <LogPrintF>
    e8862fe6:	bf89                	j	e8862f38 <ScreenStreamProcessData+0x8a>
			memcpy( pData + uIndex, startCodePrefix, sizeof( startCodePrefix ) );
    e8862fe8:	4611                	li	a2,4
    e8862fea:	858a                	mv	a1,sp
    e8862fec:	013a8533          	add	a0,s5,s3
    e8862ff0:	3b0190ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			uIndex += sizeof( startCodePrefix );
    e8862ff4:	0991                	addi	s3,s3,4
			memcpy( pData + uIndex, nalPtr, nalLen );
    e8862ff6:	6662                	ld	a2,24(sp)
    e8862ff8:	65c2                	ld	a1,16(sp)
    e8862ffa:	013a8533          	add	a0,s5,s3
    e8862ffe:	3a2190ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			uIndex += nalLen;
    e8863002:	67e2                	ld	a5,24(sp)
    e8863004:	99be                	add	s3,s3,a5
    e8863006:	b7bd                	j	e8862f74 <ScreenStreamProcessData+0xc6>
	if( err ) ss_ulog( kLogLevelError, "### Screen stream process data failed: %#m\n", err );
    e8863008:	05a00593          	li	a1,90
    e886300c:	866f10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8863010:	d505                	beqz	a0,e8862f38 <ScreenStreamProcessData+0x8a>
    e8863012:	bf4d                	j	e8862fc4 <ScreenStreamProcessData+0x116>
		require_action( me->annexBHeaderPtr, exit, err = kNotPreparedErr );
    e8863014:	7479                	lui	s0,0xffffe
    e8863016:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e886301a:	b779                	j	e8862fa8 <ScreenStreamProcessData+0xfa>
		require_action( pData, exit, err = kNoMemoryErr );
    e886301c:	7479                	lui	s0,0xffffe
    e886301e:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8863022:	b759                	j	e8862fa8 <ScreenStreamProcessData+0xfa>

00000000e8863024 <_AudioInputCallBack>:
		uint32_t		inSampleTime, 
		uint64_t		inHostTime, 
		const void *	inBuffer, 
		size_t			inLen, 
		void *			inContext )
{
    e8863024:	883a                	mv	a6,a4
	AirPlayAudioStreamPlatformContext * const		streamCtx = (AirPlayAudioStreamPlatformContext *) inContext;
	OSStatus										err;
	
	require_quiet( !streamCtx->loopback, exit );
    e8863026:	01174703          	lbu	a4,17(a4)
{
    e886302a:	87b6                	mv	a5,a3
	require_quiet( !streamCtx->loopback, exit );
    e886302c:	eb11                	bnez	a4,e8863040 <_AudioInputCallBack+0x1c>
	
	err = AirPlayReceiverSessionWriteAudio( streamCtx->session, streamCtx->activeType, inSampleTime, inHostTime, 
    e886302e:	8732                	mv	a4,a2
    e8863030:	86ae                	mv	a3,a1
    e8863032:	862a                	mv	a2,a0
    e8863034:	02882583          	lw	a1,40(a6)
    e8863038:	03083503          	ld	a0,48(a6)
    e886303c:	17a0b06f          	j	e886e1b6 <AirPlayReceiverSessionWriteAudio>
		inBuffer, inLen );
	require_noerr( err, exit );
	
exit:
	return;
}
    e8863040:	8082                	ret

00000000e8863042 <_UpdateStreams>:
{
    e8863042:	711d                	addi	sp,sp,-96
    e8863044:	e4a6                	sd	s1,72(sp)
    e8863046:	ec86                	sd	ra,88(sp)
    e8863048:	e8a2                	sd	s0,80(sp)
    e886304a:	e0ca                	sd	s2,64(sp)
	AirPlayReceiverSessionPlatformData * const		spd		= (AirPlayReceiverSessionPlatformData *) inSession->platformPtr;
    e886304c:	7100                	ld	s0,32(a0)
{
    e886304e:	84aa                	mv	s1,a0
	if( ( streamCtx->type != kAirPlayStreamType_Invalid ) && !streamCtx->stream )
    e8863050:	441c                	lw	a5,8(s0)
    e8863052:	6028                	ld	a0,64(s0)
    e8863054:	36078063          	beqz	a5,e88633b4 <_UpdateStreams+0x372>
    e8863058:	3c051163          	bnez	a0,e886341a <_UpdateStreams+0x3d8>
		atrp_ulog( kLogLevelNotice, "Main audio setting up %s for %@, input %s, loopback %s\n",
    e886305c:	00072517          	auipc	a0,0x72
    e8863060:	0e450513          	addi	a0,a0,228 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863064:	411c                	lw	a5,0(a0)
    e8863066:	03200713          	li	a4,50
    e886306a:	22f74363          	blt	a4,a5,e8863290 <_UpdateStreams+0x24e>
    e886306e:	577d                	li	a4,-1
    e8863070:	20e78a63          	beq	a5,a4,e8863284 <_UpdateStreams+0x242>
    e8863074:	681c                	ld	a5,16(s0)
    e8863076:	00066717          	auipc	a4,0x66
    e886307a:	9aa70713          	addi	a4,a4,-1622 # e88c8a20 <kScreenStreamClass+0x148>
    e886307e:	1a078663          	beqz	a5,e886322a <_UpdateStreams+0x1e8>
    e8863082:	4691                	li	a3,4
    e8863084:	00066717          	auipc	a4,0x66
    e8863088:	9a470713          	addi	a4,a4,-1628 # e88c8a28 <kScreenStreamClass+0x150>
    e886308c:	18d78f63          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863090:	46a1                	li	a3,8
    e8863092:	00066717          	auipc	a4,0x66
    e8863096:	9a670713          	addi	a4,a4,-1626 # e88c8a38 <kScreenStreamClass+0x160>
    e886309a:	18d78863          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e886309e:	46c1                	li	a3,16
    e88630a0:	00066717          	auipc	a4,0x66
    e88630a4:	9a870713          	addi	a4,a4,-1624 # e88c8a48 <kScreenStreamClass+0x170>
    e88630a8:	18d78163          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88630ac:	02000693          	li	a3,32
    e88630b0:	00066717          	auipc	a4,0x66
    e88630b4:	9a870713          	addi	a4,a4,-1624 # e88c8a58 <kScreenStreamClass+0x180>
    e88630b8:	16d78963          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88630bc:	04000693          	li	a3,64
    e88630c0:	00066717          	auipc	a4,0x66
    e88630c4:	9a870713          	addi	a4,a4,-1624 # e88c8a68 <kScreenStreamClass+0x190>
    e88630c8:	16d78163          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88630cc:	08000693          	li	a3,128
    e88630d0:	00066717          	auipc	a4,0x66
    e88630d4:	9a870713          	addi	a4,a4,-1624 # e88c8a78 <kScreenStreamClass+0x1a0>
    e88630d8:	14d78963          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88630dc:	10000693          	li	a3,256
    e88630e0:	00066717          	auipc	a4,0x66
    e88630e4:	9a870713          	addi	a4,a4,-1624 # e88c8a88 <kScreenStreamClass+0x1b0>
    e88630e8:	14d78163          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88630ec:	20000693          	li	a3,512
    e88630f0:	00066717          	auipc	a4,0x66
    e88630f4:	9a870713          	addi	a4,a4,-1624 # e88c8a98 <kScreenStreamClass+0x1c0>
    e88630f8:	12d78963          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88630fc:	40000693          	li	a3,1024
    e8863100:	00066717          	auipc	a4,0x66
    e8863104:	9a870713          	addi	a4,a4,-1624 # e88c8aa8 <kScreenStreamClass+0x1d0>
    e8863108:	12d78163          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e886310c:	80078693          	addi	a3,a5,-2048
    e8863110:	00066717          	auipc	a4,0x66
    e8863114:	9a870713          	addi	a4,a4,-1624 # e88c8ab8 <kScreenStreamClass+0x1e0>
    e8863118:	10068963          	beqz	a3,e886322a <_UpdateStreams+0x1e8>
    e886311c:	6685                	lui	a3,0x1
    e886311e:	00066717          	auipc	a4,0x66
    e8863122:	9aa70713          	addi	a4,a4,-1622 # e88c8ac8 <kScreenStreamClass+0x1f0>
    e8863126:	10d78263          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e886312a:	6689                	lui	a3,0x2
    e886312c:	00066717          	auipc	a4,0x66
    e8863130:	9ac70713          	addi	a4,a4,-1620 # e88c8ad8 <kScreenStreamClass+0x200>
    e8863134:	0ed78b63          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863138:	6691                	lui	a3,0x4
    e886313a:	00066717          	auipc	a4,0x66
    e886313e:	9ae70713          	addi	a4,a4,-1618 # e88c8ae8 <kScreenStreamClass+0x210>
    e8863142:	0ed78463          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863146:	66a1                	lui	a3,0x8
    e8863148:	00066717          	auipc	a4,0x66
    e886314c:	9b070713          	addi	a4,a4,-1616 # e88c8af8 <kScreenStreamClass+0x220>
    e8863150:	0cd78d63          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863154:	66c1                	lui	a3,0x10
    e8863156:	00066717          	auipc	a4,0x66
    e886315a:	9b270713          	addi	a4,a4,-1614 # e88c8b08 <kScreenStreamClass+0x230>
    e886315e:	0cd78663          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863162:	000206b7          	lui	a3,0x20
    e8863166:	00066717          	auipc	a4,0x66
    e886316a:	9b270713          	addi	a4,a4,-1614 # e88c8b18 <kScreenStreamClass+0x240>
    e886316e:	0ad78e63          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863172:	004006b7          	lui	a3,0x400
    e8863176:	00066717          	auipc	a4,0x66
    e886317a:	9b270713          	addi	a4,a4,-1614 # e88c8b28 <kScreenStreamClass+0x250>
    e886317e:	0ad78663          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863182:	008006b7          	lui	a3,0x800
    e8863186:	00066717          	auipc	a4,0x66
    e886318a:	9b270713          	addi	a4,a4,-1614 # e88c8b38 <kScreenStreamClass+0x260>
    e886318e:	08d78e63          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863192:	010006b7          	lui	a3,0x1000
    e8863196:	00066717          	auipc	a4,0x66
    e886319a:	9b270713          	addi	a4,a4,-1614 # e88c8b48 <kScreenStreamClass+0x270>
    e886319e:	08d78663          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88631a2:	020006b7          	lui	a3,0x2000
    e88631a6:	00066717          	auipc	a4,0x66
    e88631aa:	9b270713          	addi	a4,a4,-1614 # e88c8b58 <kScreenStreamClass+0x280>
    e88631ae:	06d78e63          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88631b2:	040006b7          	lui	a3,0x4000
    e88631b6:	00066717          	auipc	a4,0x66
    e88631ba:	9b270713          	addi	a4,a4,-1614 # e88c8b68 <kScreenStreamClass+0x290>
    e88631be:	06d78663          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88631c2:	080006b7          	lui	a3,0x8000
    e88631c6:	00066717          	auipc	a4,0x66
    e88631ca:	9b270713          	addi	a4,a4,-1614 # e88c8b78 <kScreenStreamClass+0x2a0>
    e88631ce:	04d78e63          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88631d2:	100006b7          	lui	a3,0x10000
    e88631d6:	00066717          	auipc	a4,0x66
    e88631da:	81a70713          	addi	a4,a4,-2022 # e88c89f0 <kScreenStreamClass+0x118>
    e88631de:	04d78663          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88631e2:	200006b7          	lui	a3,0x20000
    e88631e6:	00066717          	auipc	a4,0x66
    e88631ea:	9a270713          	addi	a4,a4,-1630 # e88c8b88 <kScreenStreamClass+0x2b0>
    e88631ee:	02d78e63          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e88631f2:	400006b7          	lui	a3,0x40000
    e88631f6:	00065717          	auipc	a4,0x65
    e88631fa:	7ea70713          	addi	a4,a4,2026 # e88c89e0 <kScreenStreamClass+0x108>
    e88631fe:	02d78663          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863202:	4685                	li	a3,1
    e8863204:	01f69613          	slli	a2,a3,0x1f
    e8863208:	00065717          	auipc	a4,0x65
    e886320c:	7f870713          	addi	a4,a4,2040 # e88c8a00 <kScreenStreamClass+0x128>
    e8863210:	00c78d63          	beq	a5,a2,e886322a <_UpdateStreams+0x1e8>
    e8863214:	1682                	slli	a3,a3,0x20
    e8863216:	00065717          	auipc	a4,0x65
    e886321a:	7fa70713          	addi	a4,a4,2042 # e88c8a10 <kScreenStreamClass+0x138>
    e886321e:	00d78663          	beq	a5,a3,e886322a <_UpdateStreams+0x1e8>
    e8863222:	00066717          	auipc	a4,0x66
    e8863226:	97670713          	addi	a4,a4,-1674 # e88c8b98 <kScreenStreamClass+0x2c0>
    e886322a:	701c                	ld	a5,32(s0)
    e886322c:	e789                	bnez	a5,e8863236 <_UpdateStreams+0x1f4>
    e886322e:	0003a797          	auipc	a5,0x3a
    e8863232:	67a78793          	addi	a5,a5,1658 # e889d8a8 <icmp6_param_problem+0x83a>
    e8863236:	01844683          	lbu	a3,24(s0)
    e886323a:	0005c817          	auipc	a6,0x5c
    e886323e:	c5680813          	addi	a6,a6,-938 # e88bee90 <kCFRunLoopTimerClass+0xe8>
    e8863242:	e689                	bnez	a3,e886324c <_UpdateStreams+0x20a>
    e8863244:	0005c817          	auipc	a6,0x5c
    e8863248:	c5480813          	addi	a6,a6,-940 # e88bee98 <kCFRunLoopTimerClass+0xf0>
    e886324c:	01944683          	lbu	a3,25(s0)
    e8863250:	0005c897          	auipc	a7,0x5c
    e8863254:	c4088893          	addi	a7,a7,-960 # e88bee90 <kCFRunLoopTimerClass+0xe8>
    e8863258:	e689                	bnez	a3,e8863262 <_UpdateStreams+0x220>
    e886325a:	0005c897          	auipc	a7,0x5c
    e886325e:	c3e88893          	addi	a7,a7,-962 # e88bee98 <kCFRunLoopTimerClass+0xf0>
    e8863262:	00066697          	auipc	a3,0x66
    e8863266:	93e68693          	addi	a3,a3,-1730 # e88c8ba0 <kScreenStreamClass+0x2c8>
    e886326a:	03200613          	li	a2,50
    e886326e:	00066597          	auipc	a1,0x66
    e8863272:	a8258593          	addi	a1,a1,-1406 # e88c8cf0 <__PRETTY_FUNCTION__.13159>
    e8863276:	00072517          	auipc	a0,0x72
    e886327a:	eca50513          	addi	a0,a0,-310 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e886327e:	9f6f10ef          	jal	ra,e8854474 <LogPrintF>
    e8863282:	a039                	j	e8863290 <_UpdateStreams+0x24e>
    e8863284:	03200593          	li	a1,50
    e8863288:	debf00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886328c:	de0514e3          	bnez	a0,e8863074 <_UpdateStreams+0x32>
		streamCtx->activeType = streamCtx->type;
    e8863290:	441c                	lw	a5,8(s0)
		streamCtx->session = inSession;
    e8863292:	fc04                	sd	s1,56(s0)
		err = AudioStreamCreate( &streamCtx->stream );
    e8863294:	04040513          	addi	a0,s0,64
		streamCtx->activeType = streamCtx->type;
    e8863298:	d81c                	sw	a5,48(s0)
		err = AudioStreamCreate( &streamCtx->stream );
    e886329a:	00840913          	addi	s2,s0,8
    e886329e:	791110ef          	jal	ra,e887522e <AudioStreamCreate>
		require_noerr( err, exit );
    e88632a2:	0e051e63          	bnez	a0,e886339e <_UpdateStreams+0x35c>
		AudioStreamSetDelegateContext( streamCtx->stream, inSession->delegate.context );
    e88632a6:	748c                	ld	a1,40(s1)
    e88632a8:	6028                	ld	a0,64(s0)
    e88632aa:	294120ef          	jal	ra,e887553e <AudioStreamSetDelegateContext>
		if( streamCtx->input ) AudioStreamSetInputCallback( streamCtx->stream, _AudioInputCallBack, streamCtx );
    e88632ae:	01844783          	lbu	a5,24(s0)
    e88632b2:	cb89                	beqz	a5,e88632c4 <_UpdateStreams+0x282>
    e88632b4:	6028                	ld	a0,64(s0)
    e88632b6:	864a                	mv	a2,s2
    e88632b8:	00000597          	auipc	a1,0x0
    e88632bc:	d6c58593          	addi	a1,a1,-660 # e8863024 <_AudioInputCallBack>
    e88632c0:	7b3110ef          	jal	ra,e8875272 <AudioStreamSetInputCallback>
		AudioStreamSetOutputCallback( streamCtx->stream, _AudioOutputCallBack, streamCtx );
    e88632c4:	6028                	ld	a0,64(s0)
    e88632c6:	864a                	mv	a2,s2
    e88632c8:	00000597          	auipc	a1,0x0
    e88632cc:	68058593          	addi	a1,a1,1664 # e8863948 <_AudioOutputCallBack>
    e88632d0:	7a9110ef          	jal	ra,e8875278 <AudioStreamSetOutputCallback>
CFTypeRef	_AudioStreamCopyProperty( CFTypeRef inObject, CFStringRef inKey, OSStatus *outErr );
typedef CFTypeRef ( *_AudioStreamCopyProperty_f )( CFTypeRef inObject, CFStringRef inKey, OSStatus *outErr );
OSStatus	_AudioStreamSetProperty( CFTypeRef inObject, CFStringRef inKey, CFTypeRef inValue );
typedef OSStatus ( *_AudioStreamSetProperty_f )( CFTypeRef inObject, CFStringRef inKey, CFTypeRef inValue );

CFObjectDefineStandardAccessors( AudioStreamRef, AudioStreamProperty, _AudioStreamCopyProperty, _AudioStreamSetProperty )
    e88632d4:	03046683          	lwu	a3,48(s0)
    e88632d8:	6028                	ld	a0,64(s0)
    e88632da:	0003a617          	auipc	a2,0x3a
    e88632de:	5de60613          	addi	a2,a2,1502 # e889d8b8 <icmp6_param_problem+0x84a>
    e88632e2:	00012597          	auipc	a1,0x12
    e88632e6:	f9c58593          	addi	a1,a1,-100 # e887527e <_AudioStreamSetProperty>
    e88632ea:	b9de90ef          	jal	ra,e884ce86 <CFObjectSetInt64>
    e88632ee:	6028                	ld	a0,64(s0)
    e88632f0:	577d                	li	a4,-1
    e88632f2:	00066697          	auipc	a3,0x66
    e88632f6:	8e668693          	addi	a3,a3,-1818 # e88c8bd8 <kScreenStreamClass+0x300>
    e88632fa:	0003a617          	auipc	a2,0x3a
    e88632fe:	5d660613          	addi	a2,a2,1494 # e889d8d0 <icmp6_param_problem+0x862>
    e8863302:	00012597          	auipc	a1,0x12
    e8863306:	f7c58593          	addi	a1,a1,-132 # e887527e <_AudioStreamSetProperty>
    e886330a:	d90e80ef          	jal	ra,e884b89a <CFObjectSetCString>
    e886330e:	6028                	ld	a0,64(s0)
    e8863310:	03d00693          	li	a3,61
    e8863314:	0003a617          	auipc	a2,0x3a
    e8863318:	5d460613          	addi	a2,a2,1492 # e889d8e8 <icmp6_param_problem+0x87a>
    e886331c:	00012597          	auipc	a1,0x12
    e8863320:	f6258593          	addi	a1,a1,-158 # e887527e <_AudioStreamSetProperty>
    e8863324:	b63e90ef          	jal	ra,e884ce86 <CFObjectSetInt64>
    e8863328:	01844783          	lbu	a5,24(s0)
		err = AudioStreamPropertySetBoolean( streamCtx->stream, kAudioStreamProperty_Input, streamCtx->input );
    e886332c:	6028                	ld	a0,64(s0)
    e886332e:	cfb5                	beqz	a5,e88633aa <_UpdateStreams+0x368>
    e8863330:	00072797          	auipc	a5,0x72
    e8863334:	9a078793          	addi	a5,a5,-1632 # e88d4cd0 <kCFLBooleanTrue>
    e8863338:	6394                	ld	a3,0(a5)
    e886333a:	0003a617          	auipc	a2,0x3a
    e886333e:	5c660613          	addi	a2,a2,1478 # e889d900 <icmp6_param_problem+0x892>
    e8863342:	00012597          	auipc	a1,0x12
    e8863346:	f3c58593          	addi	a1,a1,-196 # e887527e <_AudioStreamSetProperty>
    e886334a:	d48e80ef          	jal	ra,e884b892 <CFObjectSetValue>
		require_noerr( err, exit );
    e886334e:	e921                	bnez	a0,e886339e <_UpdateStreams+0x35c>
		err = _AudioStreamSetProperty( streamCtx->stream, kAudioStreamProperty_AudioType, streamCtx->audioType );
    e8863350:	7010                	ld	a2,32(s0)
    e8863352:	6028                	ld	a0,64(s0)
    e8863354:	0003a597          	auipc	a1,0x3a
    e8863358:	5bc58593          	addi	a1,a1,1468 # e889d910 <icmp6_param_problem+0x8a2>
    e886335c:	723110ef          	jal	ra,e887527e <_AudioStreamSetProperty>
		require_noerr( err, exit );
    e8863360:	ed1d                	bnez	a0,e886339e <_UpdateStreams+0x35c>
		err = AirPlayAudioFormatToPCM( streamCtx->format, &asbd );
    e8863362:	6808                	ld	a0,16(s0)
    e8863364:	082c                	addi	a1,sp,24
    e8863366:	6a30c0ef          	jal	ra,e8870208 <AirPlayAudioFormatToPCM>
		require_noerr( err, exit );
    e886336a:	e915                	bnez	a0,e886339e <_UpdateStreams+0x35c>
		AudioStreamSetFormat(streamCtx->stream, &asbd);
    e886336c:	6028                	ld	a0,64(s0)
    e886336e:	082c                	addi	a1,sp,24
    e8863370:	1b8120ef          	jal	ra,e8875528 <AudioStreamSetFormat>
		if( streamCtx->vocoderSampleRate > 0 )
    e8863374:	3408                	fld	fa0,40(s0)
    e8863376:	f20007d3          	fmv.d.x	fa5,zero
    e886337a:	a2a797d3          	flt.d	a5,fa5,fa0
    e886337e:	cf81                	beqz	a5,e8863396 <_UpdateStreams+0x354>
    e8863380:	6028                	ld	a0,64(s0)
    e8863382:	0003a617          	auipc	a2,0x3a
    e8863386:	5a660613          	addi	a2,a2,1446 # e889d928 <icmp6_param_problem+0x8ba>
    e886338a:	00012597          	auipc	a1,0x12
    e886338e:	ef458593          	addi	a1,a1,-268 # e887527e <_AudioStreamSetProperty>
    e8863392:	d76e80ef          	jal	ra,e884b908 <CFObjectSetDouble>
		err = AudioStreamPrepare( streamCtx->stream );
    e8863396:	6028                	ld	a0,64(s0)
    e8863398:	25e120ef          	jal	ra,e88755f6 <AudioStreamPrepare>
		require_noerr( err, exit );
    e886339c:	cd3d                	beqz	a0,e886341a <_UpdateStreams+0x3d8>
}
    e886339e:	60e6                	ld	ra,88(sp)
    e88633a0:	6446                	ld	s0,80(sp)
    e88633a2:	64a6                	ld	s1,72(sp)
    e88633a4:	6906                	ld	s2,64(sp)
    e88633a6:	6125                	addi	sp,sp,96
    e88633a8:	8082                	ret
    e88633aa:	00072797          	auipc	a5,0x72
    e88633ae:	91e78793          	addi	a5,a5,-1762 # e88d4cc8 <kCFLBooleanFalse>
    e88633b2:	b759                	j	e8863338 <_UpdateStreams+0x2f6>
	else if( ( streamCtx->type == kAirPlayStreamType_Invalid ) && streamCtx->stream )
    e88633b4:	c13d                	beqz	a0,e886341a <_UpdateStreams+0x3d8>
		AudioStreamForget( &streamCtx->stream );
    e88633b6:	4581                	li	a1,0
    e88633b8:	2e6120ef          	jal	ra,e887569e <AudioStreamStop>
    e88633bc:	6028                	ld	a0,64(s0)
    e88633be:	d8de30ef          	jal	ra,e884714a <CFRelease>
    e88633c2:	04043023          	sd	zero,64(s0)
		ForgetCF( &streamCtx->audioType );
    e88633c6:	7008                	ld	a0,32(s0)
    e88633c8:	c509                	beqz	a0,e88633d2 <_UpdateStreams+0x390>
    e88633ca:	d81e30ef          	jal	ra,e884714a <CFRelease>
    e88633ce:	02043023          	sd	zero,32(s0)
		atrp_ulog( kLogLevelNotice, "Main audio torn down\n" );
    e88633d2:	00072517          	auipc	a0,0x72
    e88633d6:	d6e50513          	addi	a0,a0,-658 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e88633da:	411c                	lw	a5,0(a0)
		streamCtx->started = false;
    e88633dc:	04040423          	sb	zero,72(s0)
		streamCtx->session = NULL;
    e88633e0:	02043c23          	sd	zero,56(s0)
		streamCtx->vocoderSampleRate = 0;
    e88633e4:	02043423          	sd	zero,40(s0)
		streamCtx->activeType = kAirPlayStreamType_Invalid;
    e88633e8:	02042823          	sw	zero,48(s0)
		atrp_ulog( kLogLevelNotice, "Main audio torn down\n" );
    e88633ec:	03200713          	li	a4,50
    e88633f0:	02f74563          	blt	a4,a5,e886341a <_UpdateStreams+0x3d8>
    e88633f4:	577d                	li	a4,-1
    e88633f6:	22e78063          	beq	a5,a4,e8863616 <_UpdateStreams+0x5d4>
    e88633fa:	00065697          	auipc	a3,0x65
    e88633fe:	7f668693          	addi	a3,a3,2038 # e88c8bf0 <kScreenStreamClass+0x318>
    e8863402:	03200613          	li	a2,50
    e8863406:	00066597          	auipc	a1,0x66
    e886340a:	8ea58593          	addi	a1,a1,-1814 # e88c8cf0 <__PRETTY_FUNCTION__.13159>
    e886340e:	00072517          	auipc	a0,0x72
    e8863412:	d3250513          	addi	a0,a0,-718 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863416:	85ef10ef          	jal	ra,e8854474 <LogPrintF>
	if( ( streamCtx->type != kAirPlayStreamType_Invalid ) && !streamCtx->stream )
    e886341a:	483c                	lw	a5,80(s0)
    e886341c:	6448                	ld	a0,136(s0)
    e886341e:	2c078363          	beqz	a5,e88636e4 <_UpdateStreams+0x6a2>
    e8863422:	2a051c63          	bnez	a0,e88636da <_UpdateStreams+0x698>
		atrp_ulog( kLogLevelNotice, "Alt audio setting up %s\n", AirPlayAudioFormatToString( streamCtx->format ) );
    e8863426:	00072517          	auipc	a0,0x72
    e886342a:	d1a50513          	addi	a0,a0,-742 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e886342e:	411c                	lw	a5,0(a0)
    e8863430:	03200713          	li	a4,50
    e8863434:	1ef74e63          	blt	a4,a5,e8863630 <_UpdateStreams+0x5ee>
    e8863438:	577d                	li	a4,-1
    e886343a:	1ee78563          	beq	a5,a4,e8863624 <_UpdateStreams+0x5e2>
    e886343e:	6c3c                	ld	a5,88(s0)
    e8863440:	00065717          	auipc	a4,0x65
    e8863444:	5e070713          	addi	a4,a4,1504 # e88c8a20 <kScreenStreamClass+0x148>
    e8863448:	1a078663          	beqz	a5,e88635f4 <_UpdateStreams+0x5b2>
    e886344c:	4691                	li	a3,4
    e886344e:	00065717          	auipc	a4,0x65
    e8863452:	5da70713          	addi	a4,a4,1498 # e88c8a28 <kScreenStreamClass+0x150>
    e8863456:	18d78f63          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886345a:	46a1                	li	a3,8
    e886345c:	00065717          	auipc	a4,0x65
    e8863460:	5dc70713          	addi	a4,a4,1500 # e88c8a38 <kScreenStreamClass+0x160>
    e8863464:	18d78863          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e8863468:	46c1                	li	a3,16
    e886346a:	00065717          	auipc	a4,0x65
    e886346e:	5de70713          	addi	a4,a4,1502 # e88c8a48 <kScreenStreamClass+0x170>
    e8863472:	18d78163          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e8863476:	02000693          	li	a3,32
    e886347a:	00065717          	auipc	a4,0x65
    e886347e:	5de70713          	addi	a4,a4,1502 # e88c8a58 <kScreenStreamClass+0x180>
    e8863482:	16d78963          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e8863486:	04000693          	li	a3,64
    e886348a:	00065717          	auipc	a4,0x65
    e886348e:	5de70713          	addi	a4,a4,1502 # e88c8a68 <kScreenStreamClass+0x190>
    e8863492:	16d78163          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e8863496:	08000693          	li	a3,128
    e886349a:	00065717          	auipc	a4,0x65
    e886349e:	5de70713          	addi	a4,a4,1502 # e88c8a78 <kScreenStreamClass+0x1a0>
    e88634a2:	14d78963          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88634a6:	10000693          	li	a3,256
    e88634aa:	00065717          	auipc	a4,0x65
    e88634ae:	5de70713          	addi	a4,a4,1502 # e88c8a88 <kScreenStreamClass+0x1b0>
    e88634b2:	14d78163          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88634b6:	20000693          	li	a3,512
    e88634ba:	00065717          	auipc	a4,0x65
    e88634be:	5de70713          	addi	a4,a4,1502 # e88c8a98 <kScreenStreamClass+0x1c0>
    e88634c2:	12d78963          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88634c6:	40000693          	li	a3,1024
    e88634ca:	00065717          	auipc	a4,0x65
    e88634ce:	5de70713          	addi	a4,a4,1502 # e88c8aa8 <kScreenStreamClass+0x1d0>
    e88634d2:	12d78163          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88634d6:	80078693          	addi	a3,a5,-2048
    e88634da:	00065717          	auipc	a4,0x65
    e88634de:	5de70713          	addi	a4,a4,1502 # e88c8ab8 <kScreenStreamClass+0x1e0>
    e88634e2:	10068963          	beqz	a3,e88635f4 <_UpdateStreams+0x5b2>
    e88634e6:	6685                	lui	a3,0x1
    e88634e8:	00065717          	auipc	a4,0x65
    e88634ec:	5e070713          	addi	a4,a4,1504 # e88c8ac8 <kScreenStreamClass+0x1f0>
    e88634f0:	10d78263          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88634f4:	6689                	lui	a3,0x2
    e88634f6:	00065717          	auipc	a4,0x65
    e88634fa:	5e270713          	addi	a4,a4,1506 # e88c8ad8 <kScreenStreamClass+0x200>
    e88634fe:	0ed78b63          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e8863502:	6691                	lui	a3,0x4
    e8863504:	00065717          	auipc	a4,0x65
    e8863508:	5e470713          	addi	a4,a4,1508 # e88c8ae8 <kScreenStreamClass+0x210>
    e886350c:	0ed78463          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e8863510:	66a1                	lui	a3,0x8
    e8863512:	00065717          	auipc	a4,0x65
    e8863516:	5e670713          	addi	a4,a4,1510 # e88c8af8 <kScreenStreamClass+0x220>
    e886351a:	0cd78d63          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886351e:	66c1                	lui	a3,0x10
    e8863520:	00065717          	auipc	a4,0x65
    e8863524:	5e870713          	addi	a4,a4,1512 # e88c8b08 <kScreenStreamClass+0x230>
    e8863528:	0cd78663          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886352c:	000206b7          	lui	a3,0x20
    e8863530:	00065717          	auipc	a4,0x65
    e8863534:	5e870713          	addi	a4,a4,1512 # e88c8b18 <kScreenStreamClass+0x240>
    e8863538:	0ad78e63          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886353c:	004006b7          	lui	a3,0x400
    e8863540:	00065717          	auipc	a4,0x65
    e8863544:	5e870713          	addi	a4,a4,1512 # e88c8b28 <kScreenStreamClass+0x250>
    e8863548:	0ad78663          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886354c:	008006b7          	lui	a3,0x800
    e8863550:	00065717          	auipc	a4,0x65
    e8863554:	5e870713          	addi	a4,a4,1512 # e88c8b38 <kScreenStreamClass+0x260>
    e8863558:	08d78e63          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886355c:	010006b7          	lui	a3,0x1000
    e8863560:	00065717          	auipc	a4,0x65
    e8863564:	5e870713          	addi	a4,a4,1512 # e88c8b48 <kScreenStreamClass+0x270>
    e8863568:	08d78663          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886356c:	020006b7          	lui	a3,0x2000
    e8863570:	00065717          	auipc	a4,0x65
    e8863574:	5e870713          	addi	a4,a4,1512 # e88c8b58 <kScreenStreamClass+0x280>
    e8863578:	06d78e63          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886357c:	040006b7          	lui	a3,0x4000
    e8863580:	00065717          	auipc	a4,0x65
    e8863584:	5e870713          	addi	a4,a4,1512 # e88c8b68 <kScreenStreamClass+0x290>
    e8863588:	06d78663          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886358c:	080006b7          	lui	a3,0x8000
    e8863590:	00065717          	auipc	a4,0x65
    e8863594:	5e870713          	addi	a4,a4,1512 # e88c8b78 <kScreenStreamClass+0x2a0>
    e8863598:	04d78e63          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e886359c:	100006b7          	lui	a3,0x10000
    e88635a0:	00065717          	auipc	a4,0x65
    e88635a4:	45070713          	addi	a4,a4,1104 # e88c89f0 <kScreenStreamClass+0x118>
    e88635a8:	04d78663          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88635ac:	200006b7          	lui	a3,0x20000
    e88635b0:	00065717          	auipc	a4,0x65
    e88635b4:	5d870713          	addi	a4,a4,1496 # e88c8b88 <kScreenStreamClass+0x2b0>
    e88635b8:	02d78e63          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88635bc:	400006b7          	lui	a3,0x40000
    e88635c0:	00065717          	auipc	a4,0x65
    e88635c4:	42070713          	addi	a4,a4,1056 # e88c89e0 <kScreenStreamClass+0x108>
    e88635c8:	02d78663          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88635cc:	4685                	li	a3,1
    e88635ce:	01f69613          	slli	a2,a3,0x1f
    e88635d2:	00065717          	auipc	a4,0x65
    e88635d6:	42e70713          	addi	a4,a4,1070 # e88c8a00 <kScreenStreamClass+0x128>
    e88635da:	00c78d63          	beq	a5,a2,e88635f4 <_UpdateStreams+0x5b2>
    e88635de:	1682                	slli	a3,a3,0x20
    e88635e0:	00065717          	auipc	a4,0x65
    e88635e4:	43070713          	addi	a4,a4,1072 # e88c8a10 <kScreenStreamClass+0x138>
    e88635e8:	00d78663          	beq	a5,a3,e88635f4 <_UpdateStreams+0x5b2>
    e88635ec:	00065717          	auipc	a4,0x65
    e88635f0:	5ac70713          	addi	a4,a4,1452 # e88c8b98 <kScreenStreamClass+0x2c0>
    e88635f4:	00065697          	auipc	a3,0x65
    e88635f8:	61468693          	addi	a3,a3,1556 # e88c8c08 <kScreenStreamClass+0x330>
    e88635fc:	03200613          	li	a2,50
    e8863600:	00065597          	auipc	a1,0x65
    e8863604:	6f058593          	addi	a1,a1,1776 # e88c8cf0 <__PRETTY_FUNCTION__.13159>
    e8863608:	00072517          	auipc	a0,0x72
    e886360c:	b3850513          	addi	a0,a0,-1224 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863610:	e65f00ef          	jal	ra,e8854474 <LogPrintF>
    e8863614:	a831                	j	e8863630 <_UpdateStreams+0x5ee>
		atrp_ulog( kLogLevelNotice, "Main audio torn down\n" );
    e8863616:	03200593          	li	a1,50
    e886361a:	a59f00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886361e:	de050ee3          	beqz	a0,e886341a <_UpdateStreams+0x3d8>
    e8863622:	bbe1                	j	e88633fa <_UpdateStreams+0x3b8>
		atrp_ulog( kLogLevelNotice, "Alt audio setting up %s\n", AirPlayAudioFormatToString( streamCtx->format ) );
    e8863624:	03200593          	li	a1,50
    e8863628:	a4bf00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886362c:	e00519e3          	bnez	a0,e886343e <_UpdateStreams+0x3fc>
		streamCtx->activeType = streamCtx->type;
    e8863630:	483c                	lw	a5,80(s0)
		err = AudioStreamCreate( &streamCtx->stream );
    e8863632:	05040613          	addi	a2,s0,80
		streamCtx->session = inSession;
    e8863636:	e044                	sd	s1,128(s0)
		streamCtx->activeType = streamCtx->type;
    e8863638:	dc3c                	sw	a5,120(s0)
		err = AudioStreamCreate( &streamCtx->stream );
    e886363a:	08840513          	addi	a0,s0,136
    e886363e:	e432                	sd	a2,8(sp)
    e8863640:	3ef110ef          	jal	ra,e887522e <AudioStreamCreate>
		require_noerr( err, exit );
    e8863644:	d4051de3          	bnez	a0,e886339e <_UpdateStreams+0x35c>
		AudioStreamSetOutputCallback( streamCtx->stream, _AudioOutputCallBack, streamCtx );
    e8863648:	6622                	ld	a2,8(sp)
    e886364a:	6448                	ld	a0,136(s0)
    e886364c:	00000597          	auipc	a1,0x0
    e8863650:	2fc58593          	addi	a1,a1,764 # e8863948 <_AudioOutputCallBack>
    e8863654:	425110ef          	jal	ra,e8875278 <AudioStreamSetOutputCallback>
    e8863658:	6448                	ld	a0,136(s0)
    e886365a:	06500693          	li	a3,101
    e886365e:	0003a617          	auipc	a2,0x3a
    e8863662:	25a60613          	addi	a2,a2,602 # e889d8b8 <icmp6_param_problem+0x84a>
    e8863666:	00012597          	auipc	a1,0x12
    e886366a:	c1858593          	addi	a1,a1,-1000 # e887527e <_AudioStreamSetProperty>
    e886366e:	819e90ef          	jal	ra,e884ce86 <CFObjectSetInt64>
    e8863672:	6448                	ld	a0,136(s0)
    e8863674:	577d                	li	a4,-1
    e8863676:	00065697          	auipc	a3,0x65
    e886367a:	5b268693          	addi	a3,a3,1458 # e88c8c28 <kScreenStreamClass+0x350>
    e886367e:	0003a617          	auipc	a2,0x3a
    e8863682:	25260613          	addi	a2,a2,594 # e889d8d0 <icmp6_param_problem+0x862>
    e8863686:	00012597          	auipc	a1,0x12
    e886368a:	bf858593          	addi	a1,a1,-1032 # e887527e <_AudioStreamSetProperty>
    e886368e:	a0ce80ef          	jal	ra,e884b89a <CFObjectSetCString>
    e8863692:	6448                	ld	a0,136(s0)
    e8863694:	03d00693          	li	a3,61
    e8863698:	0003a617          	auipc	a2,0x3a
    e886369c:	25060613          	addi	a2,a2,592 # e889d8e8 <icmp6_param_problem+0x87a>
    e88636a0:	00012597          	auipc	a1,0x12
    e88636a4:	bde58593          	addi	a1,a1,-1058 # e887527e <_AudioStreamSetProperty>
    e88636a8:	fdee90ef          	jal	ra,e884ce86 <CFObjectSetInt64>
		_AudioStreamSetProperty( streamCtx->stream, kAudioStreamProperty_AudioType, streamCtx->audioType );
    e88636ac:	7430                	ld	a2,104(s0)
    e88636ae:	6448                	ld	a0,136(s0)
    e88636b0:	0003a597          	auipc	a1,0x3a
    e88636b4:	26058593          	addi	a1,a1,608 # e889d910 <icmp6_param_problem+0x8a2>
    e88636b8:	3c7110ef          	jal	ra,e887527e <_AudioStreamSetProperty>
		err = AirPlayAudioFormatToPCM( streamCtx->format, &asbd );
    e88636bc:	6c28                	ld	a0,88(s0)
    e88636be:	082c                	addi	a1,sp,24
    e88636c0:	3490c0ef          	jal	ra,e8870208 <AirPlayAudioFormatToPCM>
		require_noerr( err, exit );
    e88636c4:	cc051de3          	bnez	a0,e886339e <_UpdateStreams+0x35c>
		AudioStreamSetFormat(streamCtx->stream, &asbd);
    e88636c8:	6448                	ld	a0,136(s0)
    e88636ca:	082c                	addi	a1,sp,24
    e88636cc:	65d110ef          	jal	ra,e8875528 <AudioStreamSetFormat>
		err = AudioStreamPrepare( streamCtx->stream );
    e88636d0:	6448                	ld	a0,136(s0)
    e88636d2:	725110ef          	jal	ra,e88755f6 <AudioStreamPrepare>
		require_noerr( err, exit );
    e88636d6:	cc0514e3          	bnez	a0,e886339e <_UpdateStreams+0x35c>
	if( spd->sessionStarted )
    e88636da:	09844783          	lbu	a5,152(s0)
    e88636de:	efad                	bnez	a5,e8863758 <_UpdateStreams+0x716>
	err = kNoErr;
    e88636e0:	4501                	li	a0,0
    e88636e2:	b975                	j	e886339e <_UpdateStreams+0x35c>
	else if( ( streamCtx->type == kAirPlayStreamType_Invalid ) && streamCtx->stream )
    e88636e4:	d97d                	beqz	a0,e88636da <_UpdateStreams+0x698>
		AudioStreamForget( &streamCtx->stream );
    e88636e6:	4581                	li	a1,0
    e88636e8:	7b7110ef          	jal	ra,e887569e <AudioStreamStop>
    e88636ec:	6448                	ld	a0,136(s0)
    e88636ee:	a5de30ef          	jal	ra,e884714a <CFRelease>
    e88636f2:	08043423          	sd	zero,136(s0)
		ForgetCF( &streamCtx->audioType );
    e88636f6:	7428                	ld	a0,104(s0)
    e88636f8:	c509                	beqz	a0,e8863702 <_UpdateStreams+0x6c0>
    e88636fa:	a51e30ef          	jal	ra,e884714a <CFRelease>
    e88636fe:	06043423          	sd	zero,104(s0)
		atrp_ulog( kLogLevelNotice, "Alt audio torn down\n" );
    e8863702:	00072517          	auipc	a0,0x72
    e8863706:	a3e50513          	addi	a0,a0,-1474 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e886370a:	411c                	lw	a5,0(a0)
		streamCtx->started = false;
    e886370c:	08040823          	sb	zero,144(s0)
		streamCtx->session = NULL;
    e8863710:	08043023          	sd	zero,128(s0)
		streamCtx->vocoderSampleRate = 0;
    e8863714:	06043823          	sd	zero,112(s0)
		streamCtx->activeType = kAirPlayStreamType_Invalid;
    e8863718:	06042c23          	sw	zero,120(s0)
		atrp_ulog( kLogLevelNotice, "Alt audio torn down\n" );
    e886371c:	03200713          	li	a4,50
    e8863720:	faf74de3          	blt	a4,a5,e88636da <_UpdateStreams+0x698>
    e8863724:	577d                	li	a4,-1
    e8863726:	02e78363          	beq	a5,a4,e886374c <_UpdateStreams+0x70a>
    e886372a:	00065697          	auipc	a3,0x65
    e886372e:	50e68693          	addi	a3,a3,1294 # e88c8c38 <kScreenStreamClass+0x360>
    e8863732:	03200613          	li	a2,50
    e8863736:	00065597          	auipc	a1,0x65
    e886373a:	5ba58593          	addi	a1,a1,1466 # e88c8cf0 <__PRETTY_FUNCTION__.13159>
    e886373e:	00072517          	auipc	a0,0x72
    e8863742:	a0250513          	addi	a0,a0,-1534 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863746:	d2ff00ef          	jal	ra,e8854474 <LogPrintF>
    e886374a:	bf41                	j	e88636da <_UpdateStreams+0x698>
    e886374c:	03200593          	li	a1,50
    e8863750:	923f00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8863754:	d159                	beqz	a0,e88636da <_UpdateStreams+0x698>
    e8863756:	bfd1                	j	e886372a <_UpdateStreams+0x6e8>
		if( streamCtx->stream && !streamCtx->started )
    e8863758:	6028                	ld	a0,64(s0)
    e886375a:	c539                	beqz	a0,e88637a8 <_UpdateStreams+0x766>
    e886375c:	04844783          	lbu	a5,72(s0)
    e8863760:	e7a1                	bnez	a5,e88637a8 <_UpdateStreams+0x766>
			err = AudioStreamStart( streamCtx->stream );
    e8863762:	7f5110ef          	jal	ra,e8875756 <AudioStreamStart>
    e8863766:	872a                	mv	a4,a0
			if( err ) atrp_ulog( kLogLevelWarning, "### Main audio start failed: %#m\n", err );
    e8863768:	cd0d                	beqz	a0,e88637a2 <_UpdateStreams+0x760>
    e886376a:	00072517          	auipc	a0,0x72
    e886376e:	9d650513          	addi	a0,a0,-1578 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863772:	411c                	lw	a5,0(a0)
    e8863774:	03c00693          	li	a3,60
    e8863778:	02f6c563          	blt	a3,a5,e88637a2 <_UpdateStreams+0x760>
    e886377c:	56fd                	li	a3,-1
    e886377e:	06d78e63          	beq	a5,a3,e88637fa <_UpdateStreams+0x7b8>
    e8863782:	00065697          	auipc	a3,0x65
    e8863786:	4ce68693          	addi	a3,a3,1230 # e88c8c50 <kScreenStreamClass+0x378>
    e886378a:	03c00613          	li	a2,60
    e886378e:	00065597          	auipc	a1,0x65
    e8863792:	56258593          	addi	a1,a1,1378 # e88c8cf0 <__PRETTY_FUNCTION__.13159>
    e8863796:	00072517          	auipc	a0,0x72
    e886379a:	9aa50513          	addi	a0,a0,-1622 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e886379e:	cd7f00ef          	jal	ra,e8854474 <LogPrintF>
			streamCtx->started = true;
    e88637a2:	4785                	li	a5,1
    e88637a4:	04f40423          	sb	a5,72(s0)
		if( streamCtx->stream && !streamCtx->started )
    e88637a8:	6448                	ld	a0,136(s0)
    e88637aa:	d91d                	beqz	a0,e88636e0 <_UpdateStreams+0x69e>
    e88637ac:	09044783          	lbu	a5,144(s0)
    e88637b0:	fb85                	bnez	a5,e88636e0 <_UpdateStreams+0x69e>
			err = AudioStreamStart( streamCtx->stream );
    e88637b2:	7a5110ef          	jal	ra,e8875756 <AudioStreamStart>
    e88637b6:	872a                	mv	a4,a0
			if( err ) atrp_ulog( kLogLevelWarning, "### Alt audio start failed: %#m\n", err );
    e88637b8:	cd0d                	beqz	a0,e88637f2 <_UpdateStreams+0x7b0>
    e88637ba:	00072517          	auipc	a0,0x72
    e88637be:	98650513          	addi	a0,a0,-1658 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e88637c2:	411c                	lw	a5,0(a0)
    e88637c4:	03c00693          	li	a3,60
    e88637c8:	02f6c563          	blt	a3,a5,e88637f2 <_UpdateStreams+0x7b0>
    e88637cc:	56fd                	li	a3,-1
    e88637ce:	02d78e63          	beq	a5,a3,e886380a <_UpdateStreams+0x7c8>
    e88637d2:	00065697          	auipc	a3,0x65
    e88637d6:	4a668693          	addi	a3,a3,1190 # e88c8c78 <kScreenStreamClass+0x3a0>
    e88637da:	03c00613          	li	a2,60
    e88637de:	00065597          	auipc	a1,0x65
    e88637e2:	51258593          	addi	a1,a1,1298 # e88c8cf0 <__PRETTY_FUNCTION__.13159>
    e88637e6:	00072517          	auipc	a0,0x72
    e88637ea:	95a50513          	addi	a0,a0,-1702 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e88637ee:	c87f00ef          	jal	ra,e8854474 <LogPrintF>
			streamCtx->started = true;
    e88637f2:	4785                	li	a5,1
    e88637f4:	08f40823          	sb	a5,144(s0)
    e88637f8:	b5e5                	j	e88636e0 <_UpdateStreams+0x69e>
			if( err ) atrp_ulog( kLogLevelWarning, "### Main audio start failed: %#m\n", err );
    e88637fa:	03c00593          	li	a1,60
    e88637fe:	e43a                	sd	a4,8(sp)
    e8863800:	873f00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8863804:	6722                	ld	a4,8(sp)
    e8863806:	dd51                	beqz	a0,e88637a2 <_UpdateStreams+0x760>
    e8863808:	bfad                	j	e8863782 <_UpdateStreams+0x740>
			if( err ) atrp_ulog( kLogLevelWarning, "### Alt audio start failed: %#m\n", err );
    e886380a:	03c00593          	li	a1,60
    e886380e:	e43a                	sd	a4,8(sp)
    e8863810:	863f00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8863814:	6722                	ld	a4,8(sp)
    e8863816:	dd71                	beqz	a0,e88637f2 <_UpdateStreams+0x7b0>
    e8863818:	bf6d                	j	e88637d2 <_UpdateStreams+0x790>

00000000e886381a <_TearDownStreams>:
{
    e886381a:	7175                	addi	sp,sp,-144
    e886381c:	f4ce                	sd	s3,104(sp)
    e886381e:	e506                	sd	ra,136(sp)
    e8863820:	e122                	sd	s0,128(sp)
    e8863822:	fca6                	sd	s1,120(sp)
    e8863824:	f8ca                	sd	s2,112(sp)
    e8863826:	f0d2                	sd	s4,96(sp)
    e8863828:	ecd6                	sd	s5,88(sp)
    e886382a:	e8da                	sd	s6,80(sp)
    e886382c:	e4de                	sd	s7,72(sp)
    e886382e:	e0e2                	sd	s8,64(sp)
    e8863830:	fc66                	sd	s9,56(sp)
    e8863832:	f86a                	sd	s10,48(sp)
    e8863834:	f46e                	sd	s11,40(sp)
    e8863836:	89aa                	mv	s3,a0
	AirPlayReceiverSessionPlatformData * const		spd = (AirPlayReceiverSessionPlatformData *) inSession->platformPtr;
    e8863838:	7100                	ld	s0,32(a0)
	streams = inParams ? CFDictionaryGetCFArray( inParams, CFSTR( kAirPlayKey_Streams ), NULL ) : NULL;
    e886383a:	e59d                	bnez	a1,e8863868 <_TearDownStreams+0x4e>
		spd->mainAudioCtx.type = kAirPlayStreamType_Invalid;
    e886383c:	00042423          	sw	zero,8(s0)
		spd->altAudioCtx.type  = kAirPlayStreamType_Invalid;
    e8863840:	04042823          	sw	zero,80(s0)
	_UpdateStreams( inSession );
    e8863844:	854e                	mv	a0,s3
    e8863846:	ffcff0ef          	jal	ra,e8863042 <_UpdateStreams>
}
    e886384a:	60aa                	ld	ra,136(sp)
    e886384c:	640a                	ld	s0,128(sp)
    e886384e:	74e6                	ld	s1,120(sp)
    e8863850:	7946                	ld	s2,112(sp)
    e8863852:	79a6                	ld	s3,104(sp)
    e8863854:	7a06                	ld	s4,96(sp)
    e8863856:	6ae6                	ld	s5,88(sp)
    e8863858:	6b46                	ld	s6,80(sp)
    e886385a:	6ba6                	ld	s7,72(sp)
    e886385c:	6c06                	ld	s8,64(sp)
    e886385e:	7ce2                	ld	s9,56(sp)
    e8863860:	7d42                	ld	s10,48(sp)
    e8863862:	7da2                	ld	s11,40(sp)
    e8863864:	6149                	addi	sp,sp,144
    e8863866:	8082                	ret
    e8863868:	84ae                	mv	s1,a1
	streams = inParams ? CFDictionaryGetCFArray( inParams, CFSTR( kAirPlayKey_Streams ), NULL ) : NULL;
    e886386a:	8ffe30ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e886386e:	0005061b          	sext.w	a2,a0
    e8863872:	4681                	li	a3,0
    e8863874:	0003a597          	auipc	a1,0x3a
    e8863878:	0d458593          	addi	a1,a1,212 # e889d948 <icmp6_param_problem+0x8da>
    e886387c:	8526                	mv	a0,s1
    e886387e:	e2de80ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8863882:	8aaa                	mv	s5,a0
	n = streams ? CFArrayGetCount( streams ) : 0;
    e8863884:	dd45                	beqz	a0,e886383c <_TearDownStreams+0x22>
    e8863886:	96de30ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e886388a:	8a2a                	mv	s4,a0
	for( i = 0; i < n; ++i )
    e886388c:	4481                	li	s1,0
		streamType = (AirPlayStreamType) CFDictionaryGetInt64( streamDesc, CFSTR( kAirPlayKey_Type ), NULL );
    e886388e:	0003ac17          	auipc	s8,0x3a
    e8863892:	0cac0c13          	addi	s8,s8,202 # e889d958 <icmp6_param_problem+0x8ea>
		switch( streamType )
    e8863896:	06500b13          	li	s6,101
			case kAirPlayStreamType_AltAudio:		streamCtx = &spd->altAudioCtx;  break;
    e886389a:	05040c93          	addi	s9,s0,80
			default: atrp_ulog( kLogLevelNotice, "### Unsupported stream type %d\n", streamType ); continue;
    e886389e:	00072917          	auipc	s2,0x72
    e88638a2:	8a290913          	addi	s2,s2,-1886 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e88638a6:	03200d13          	li	s10,50
    e88638aa:	5dfd                	li	s11,-1
			case kAirPlayStreamType_MainHighAudio:	streamCtx = &spd->mainAudioCtx; break;
    e88638ac:	00840b93          	addi	s7,s0,8
	for( i = 0; i < n; ++i )
    e88638b0:	0144c563          	blt	s1,s4,e88638ba <_TearDownStreams+0xa0>
	if( n == 0 )
    e88638b4:	f80a04e3          	beqz	s4,e886383c <_TearDownStreams+0x22>
    e88638b8:	b771                	j	e8863844 <_TearDownStreams+0x2a>
		streamDesc = CFArrayGetCFDictionaryAtIndex( streams, i, &err );
    e88638ba:	ae9e30ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e88638be:	0005061b          	sext.w	a2,a0
    e88638c2:	0874                	addi	a3,sp,28
    e88638c4:	85a6                	mv	a1,s1
    e88638c6:	8556                	mv	a0,s5
    e88638c8:	fc4e80ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
		require_noerr( err, exit );
    e88638cc:	47f2                	lw	a5,28(sp)
    e88638ce:	ffb5                	bnez	a5,e886384a <_TearDownStreams+0x30>
		streamType = (AirPlayStreamType) CFDictionaryGetInt64( streamDesc, CFSTR( kAirPlayKey_Type ), NULL );
    e88638d0:	4601                	li	a2,0
    e88638d2:	85e2                	mv	a1,s8
    e88638d4:	d9de80ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e88638d8:	0005071b          	sext.w	a4,a0
		switch( streamType )
    e88638dc:	05670b63          	beq	a4,s6,e8863932 <_TearDownStreams+0x118>
    e88638e0:	02eb6b63          	bltu	s6,a4,e8863916 <_TearDownStreams+0xfc>
    e88638e4:	06400693          	li	a3,100
			case kAirPlayStreamType_MainAudio:		streamCtx = &spd->mainAudioCtx; break;
    e88638e8:	87de                	mv	a5,s7
		switch( streamType )
    e88638ea:	04d70163          	beq	a4,a3,e886392c <_TearDownStreams+0x112>
			default: atrp_ulog( kLogLevelNotice, "### Unsupported stream type %d\n", streamType ); continue;
    e88638ee:	00092783          	lw	a5,0(s2)
    e88638f2:	02fd4a63          	blt	s10,a5,e8863926 <_TearDownStreams+0x10c>
    e88638f6:	05b78063          	beq	a5,s11,e8863936 <_TearDownStreams+0x11c>
    e88638fa:	00065697          	auipc	a3,0x65
    e88638fe:	0c668693          	addi	a3,a3,198 # e88c89c0 <kScreenStreamClass+0xe8>
    e8863902:	03200613          	li	a2,50
    e8863906:	00065597          	auipc	a1,0x65
    e886390a:	3d258593          	addi	a1,a1,978 # e88c8cd8 <__PRETTY_FUNCTION__.13148>
    e886390e:	854a                	mv	a0,s2
    e8863910:	b65f00ef          	jal	ra,e8854474 <LogPrintF>
    e8863914:	a809                	j	e8863926 <_TearDownStreams+0x10c>
		switch( streamType )
    e8863916:	06600793          	li	a5,102
    e886391a:	00f70863          	beq	a4,a5,e886392a <_TearDownStreams+0x110>
    e886391e:	06e00793          	li	a5,110
    e8863922:	fcf716e3          	bne	a4,a5,e88638ee <_TearDownStreams+0xd4>
	for( i = 0; i < n; ++i )
    e8863926:	2485                	addiw	s1,s1,1
    e8863928:	b761                	j	e88638b0 <_TearDownStreams+0x96>
			case kAirPlayStreamType_MainHighAudio:	streamCtx = &spd->mainAudioCtx; break;
    e886392a:	87de                	mv	a5,s7
		streamCtx->type = kAirPlayStreamType_Invalid;
    e886392c:	0007a023          	sw	zero,0(a5)
    e8863930:	bfdd                	j	e8863926 <_TearDownStreams+0x10c>
			case kAirPlayStreamType_AltAudio:		streamCtx = &spd->altAudioCtx;  break;
    e8863932:	87e6                	mv	a5,s9
    e8863934:	bfe5                	j	e886392c <_TearDownStreams+0x112>
			default: atrp_ulog( kLogLevelNotice, "### Unsupported stream type %d\n", streamType ); continue;
    e8863936:	03200593          	li	a1,50
    e886393a:	854a                	mv	a0,s2
    e886393c:	e43a                	sd	a4,8(sp)
    e886393e:	f34f00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8863942:	6722                	ld	a4,8(sp)
    e8863944:	d16d                	beqz	a0,e8863926 <_TearDownStreams+0x10c>
    e8863946:	bf55                	j	e88638fa <_TearDownStreams+0xe0>

00000000e8863948 <_AudioOutputCallBack>:
		uint32_t	inSampleTime, 
		uint64_t	inHostTime, 
		void *		inBuffer, 
		size_t		inLen, 
		void *		inContext )
{
    e8863948:	7179                	addi	sp,sp,-48
    e886394a:	f891540b          	sdd	s0,s1,(sp),0,4
    e886394e:	843a                	mv	s0,a4
    e8863950:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8863954:	f052                	sd	s4,32(sp)
    e8863956:	84aa                	mv	s1,a0
    e8863958:	892e                	mv	s2,a1
    e886395a:	89b2                	mv	s3,a2
    e886395c:	8a36                	mv	s4,a3
	AirPlayAudioStreamPlatformContext * const		streamCtx = (AirPlayAudioStreamPlatformContext *) inContext;
	OSStatus										err;
	
	err = AirPlayReceiverSessionReadAudio( streamCtx->session, streamCtx->activeType, inSampleTime, inHostTime, 
    e886395e:	87b6                	mv	a5,a3
    e8863960:	8732                	mv	a4,a2
    e8863962:	86ae                	mv	a3,a1
    e8863964:	862a                	mv	a2,a0
    e8863966:	540c                	lw	a1,40(s0)
    e8863968:	7808                	ld	a0,48(s0)
{
    e886396a:	f406                	sd	ra,40(sp)
	err = AirPlayReceiverSessionReadAudio( streamCtx->session, streamCtx->activeType, inSampleTime, inHostTime, 
    e886396c:	701090ef          	jal	ra,e886d86c <AirPlayReceiverSessionReadAudio>
		inBuffer, inLen );
	require_noerr( err, exit );
    e8863970:	e515                	bnez	a0,e886399c <_AudioOutputCallBack+0x54>
	
	if( streamCtx->input && streamCtx->loopback )
    e8863972:	01044783          	lbu	a5,16(s0)
    e8863976:	c39d                	beqz	a5,e886399c <_AudioOutputCallBack+0x54>
    e8863978:	01144783          	lbu	a5,17(s0)
    e886397c:	c385                	beqz	a5,e886399c <_AudioOutputCallBack+0x54>
	{
		err = AirPlayReceiverSessionWriteAudio( streamCtx->session, streamCtx->activeType, inSampleTime, inHostTime, 
    e886397e:	540c                	lw	a1,40(s0)
    e8863980:	7808                	ld	a0,48(s0)
    e8863982:	8626                	mv	a2,s1
		require_noerr( err, exit );
	}
	
exit:
	return;
}
    e8863984:	f891440b          	ldd	s0,s1,(sp),0,4
    e8863988:	70a2                	ld	ra,40(sp)
		err = AirPlayReceiverSessionWriteAudio( streamCtx->session, streamCtx->activeType, inSampleTime, inHostTime, 
    e886398a:	87d2                	mv	a5,s4
    e886398c:	874e                	mv	a4,s3
}
    e886398e:	7a02                	ld	s4,32(sp)
		err = AirPlayReceiverSessionWriteAudio( streamCtx->session, streamCtx->activeType, inSampleTime, inHostTime, 
    e8863990:	86ca                	mv	a3,s2
}
    e8863992:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8863996:	6145                	addi	sp,sp,48
		err = AirPlayReceiverSessionWriteAudio( streamCtx->session, streamCtx->activeType, inSampleTime, inHostTime, 
    e8863998:	01f0a06f          	j	e886e1b6 <AirPlayReceiverSessionWriteAudio>
}
    e886399c:	70a2                	ld	ra,40(sp)
    e886399e:	f891440b          	ldd	s0,s1,(sp),0,4
    e88639a2:	7a02                	ld	s4,32(sp)
    e88639a4:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88639a8:	6145                	addi	sp,sp,48
    e88639aa:	8082                	ret

00000000e88639ac <_AirPlayHandleDuckAudio>:
{
    e88639ac:	7179                	addi	sp,sp,-48
    e88639ae:	ac22                	fsd	fs0,24(sp)
    e88639b0:	f406                	sd	ra,40(sp)
    e88639b2:	f022                	sd	s0,32(sp)
	AirPlayReceiverSessionPlatformData * const		spd		= (AirPlayReceiverSessionPlatformData *) inSession->platformPtr;
    e88639b4:	7100                	ld	s0,32(a0)
    StatusNotify(LINK_NAVI_TONE);
    e88639b6:	4569                	li	a0,26
{
    e88639b8:	a42a                	fsd	fa0,8(sp)
    e88639ba:	22b58453          	fmv.d	fs0,fa1
    StatusNotify(LINK_NAVI_TONE);
    e88639be:	1ac110ef          	jal	ra,e8874b6a <StatusNotify>
	if(spd == NULL)
    e88639c2:	c00d                	beqz	s0,e88639e4 <_AirPlayHandleDuckAudio+0x38>
	if(!streamCtx->started)
    e88639c4:	04844783          	lbu	a5,72(s0)
    e88639c8:	cf91                	beqz	a5,e88639e4 <_AirPlayHandleDuckAudio+0x38>
	AudioStreamRampVolume(streamCtx->stream,finalVolume,duration,NULL);
    e88639ca:	2522                	fld	fa0,8(sp)
    e88639cc:	6028                	ld	a0,64(s0)
}
    e88639ce:	7402                	ld	s0,32(sp)
    e88639d0:	70a2                	ld	ra,40(sp)
	AudioStreamRampVolume(streamCtx->stream,finalVolume,duration,NULL);
    e88639d2:	22a505d3          	fmv.d	fa1,fa0
    e88639d6:	22840553          	fmv.d	fa0,fs0
}
    e88639da:	2462                	fld	fs0,24(sp)
	AudioStreamRampVolume(streamCtx->stream,finalVolume,duration,NULL);
    e88639dc:	4581                	li	a1,0
}
    e88639de:	6145                	addi	sp,sp,48
	AudioStreamRampVolume(streamCtx->stream,finalVolume,duration,NULL);
    e88639e0:	2571106f          	j	e8875436 <AudioStreamRampVolume>
}
    e88639e4:	70a2                	ld	ra,40(sp)
    e88639e6:	7402                	ld	s0,32(sp)
    e88639e8:	2462                	fld	fs0,24(sp)
    e88639ea:	6145                	addi	sp,sp,48
    e88639ec:	8082                	ret

00000000e88639ee <_AirPlayHandleUnduckAudio>:
{
    e88639ee:	1101                	addi	sp,sp,-32
    e88639f0:	ec06                	sd	ra,24(sp)
    e88639f2:	e822                	sd	s0,16(sp)
	AirPlayReceiverSessionPlatformData * const		spd		= (AirPlayReceiverSessionPlatformData *) inSession->platformPtr;
    e88639f4:	7100                	ld	s0,32(a0)
    StatusNotify(LINK_NAVI_TONE_EXITED);
    e88639f6:	456d                	li	a0,27
{
    e88639f8:	a42a                	fsd	fa0,8(sp)
    StatusNotify(LINK_NAVI_TONE_EXITED);
    e88639fa:	170110ef          	jal	ra,e8874b6a <StatusNotify>
	if(spd == NULL)
    e88639fe:	c005                	beqz	s0,e8863a1e <_AirPlayHandleUnduckAudio+0x30>
	if(!streamCtx->started)
    e8863a00:	04844783          	lbu	a5,72(s0)
    e8863a04:	cf89                	beqz	a5,e8863a1e <_AirPlayHandleUnduckAudio+0x30>
	AudioStreamRampVolume(streamCtx->stream,1.0,duration,NULL);
    e8863a06:	6028                	ld	a0,64(s0)
}
    e8863a08:	6442                	ld	s0,16(sp)
	AudioStreamRampVolume(streamCtx->stream,1.0,duration,NULL);
    e8863a0a:	25a2                	fld	fa1,8(sp)
}
    e8863a0c:	60e2                	ld	ra,24(sp)
	AudioStreamRampVolume(streamCtx->stream,1.0,duration,NULL);
    e8863a0e:	0005b797          	auipc	a5,0x5b
    e8863a12:	46a7b507          	fld	fa0,1130(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e8863a16:	4581                	li	a1,0
}
    e8863a18:	6105                	addi	sp,sp,32
	AudioStreamRampVolume(streamCtx->stream,1.0,duration,NULL);
    e8863a1a:	21d1106f          	j	e8875436 <AudioStreamRampVolume>
}
    e8863a1e:	60e2                	ld	ra,24(sp)
    e8863a20:	6442                	ld	s0,16(sp)
    e8863a22:	6105                	addi	sp,sp,32
    e8863a24:	8082                	ret

00000000e8863a26 <AirPlayReceiverServerPlatformInitialize>:
{
    e8863a26:	1101                	addi	sp,sp,-32
    e8863a28:	e826                	sd	s1,16(sp)
    e8863a2a:	84aa                	mv	s1,a0
    p = malloc(len);
    e8863a2c:	4521                	li	a0,8
    e8863a2e:	e422                	sd	s0,8(sp)
    e8863a30:	ec06                	sd	ra,24(sp)
    e8863a32:	61d170ef          	jal	ra,e887b84e <my_malloc>
    e8863a36:	842a                	mv	s0,a0
    memset(p,0,len);
    e8863a38:	4621                	li	a2,8
    e8863a3a:	4581                	li	a1,0
    e8863a3c:	159180ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( platform, exit, err = kNoMemoryErr );
    e8863a40:	c801                	beqz	s0,e8863a50 <AirPlayReceiverServerPlatformInitialize+0x2a>
	inServer->platformPtr = platform;
    e8863a42:	e480                	sd	s0,8(s1)
	err = kNoErr;
    e8863a44:	4501                	li	a0,0
}
    e8863a46:	60e2                	ld	ra,24(sp)
    e8863a48:	6422                	ld	s0,8(sp)
    e8863a4a:	64c2                	ld	s1,16(sp)
    e8863a4c:	6105                	addi	sp,sp,32
    e8863a4e:	8082                	ret
	require_action( platform, exit, err = kNoMemoryErr );
    e8863a50:	7579                	lui	a0,0xffffe
    e8863a52:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8863a56:	bfc5                	j	e8863a46 <AirPlayReceiverServerPlatformInitialize+0x20>

00000000e8863a58 <AirPlayReceiverServerPlatformFinalize>:
	AirPlayReceiverServerPlatformData * const	platform = (AirPlayReceiverServerPlatformData *) inServer->platformPtr;
    e8863a58:	651c                	ld	a5,8(a0)
	if( !platform ) return;
    e8863a5a:	cf91                	beqz	a5,e8863a76 <AirPlayReceiverServerPlatformFinalize+0x1e>
{
    e8863a5c:	1141                	addi	sp,sp,-16
    e8863a5e:	e022                	sd	s0,0(sp)
    e8863a60:	842a                	mv	s0,a0
	free( platform );
    e8863a62:	853e                	mv	a0,a5
{
    e8863a64:	e406                	sd	ra,8(sp)
	free( platform );
    e8863a66:	09b180ef          	jal	ra,e887c300 <eLIBs_free>
	inServer->platformPtr = NULL;
    e8863a6a:	00043423          	sd	zero,8(s0)
}
    e8863a6e:	60a2                	ld	ra,8(sp)
    e8863a70:	6402                	ld	s0,0(sp)
    e8863a72:	0141                	addi	sp,sp,16
    e8863a74:	8082                	ret
    e8863a76:	8082                	ret

00000000e8863a78 <AirPlayReceiverServerPlatformControl>:
	else if( server->delegate.control_f )
    e8863a78:	02853303          	ld	t1,40(a0)
{
    e8863a7c:	85b2                	mv	a1,a2
    e8863a7e:	8636                	mv	a2,a3
    e8863a80:	86ba                	mv	a3,a4
    e8863a82:	873e                	mv	a4,a5
	else if( server->delegate.control_f )
    e8863a84:	00030463          	beqz	t1,e8863a8c <AirPlayReceiverServerPlatformControl+0x14>
		err = server->delegate.control_f( server, inCommand, inQualifier, inParams, outParams, server->delegate.context );
    e8863a88:	6d1c                	ld	a5,24(a0)
    e8863a8a:	8302                	jr	t1
}
    e8863a8c:	7579                	lui	a0,0xffffe
    e8863a8e:	5c650513          	addi	a0,a0,1478 # ffffffffffffe5c6 <__DRAM0_INF_BASE+0xffffffff0000e5c6>
    e8863a92:	8082                	ret

00000000e8863a94 <AirPlayReceiverServerPlatformCopyProperty>:
{
    e8863a94:	7139                	addi	sp,sp,-64
    e8863a96:	f84a                	sd	s2,48(sp)
    e8863a98:	8932                	mv	s2,a2
    e8863a9a:	fc91540b          	sdd	s0,s1,(sp),2,4
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_StatusFlags ) ) )
    e8863a9e:	0003a597          	auipc	a1,0x3a
    e8863aa2:	eca58593          	addi	a1,a1,-310 # e889d968 <icmp6_param_problem+0x8fa>
{
    e8863aa6:	842a                	mv	s0,a0
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_StatusFlags ) ) )
    e8863aa8:	854a                	mv	a0,s2
{
    e8863aaa:	fc06                	sd	ra,56(sp)
    e8863aac:	e436                	sd	a3,8(sp)
    e8863aae:	84ba                	mv	s1,a4
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_StatusFlags ) ) )
    e8863ab0:	e9ee30ef          	jal	ra,e884714e <CFEqual>
    e8863ab4:	6622                	ld	a2,8(sp)
    e8863ab6:	c905                	beqz	a0,e8863ae6 <AirPlayReceiverServerPlatformCopyProperty+0x52>
		value = CFNumberCreateInt64( kAirPlayStatusFlag_AudioLink );
    e8863ab8:	4511                	li	a0,4
    e8863aba:	c41e80ef          	jal	ra,e884c6fa <CFNumberCreateInt64>
		require_action( value, exit, err = kUnknownErr );
    e8863abe:	e131                	bnez	a0,e8863b02 <AirPlayReceiverServerPlatformCopyProperty+0x6e>
    e8863ac0:	77f9                	lui	a5,0xffffe
    e8863ac2:	5d47879b          	addiw	a5,a5,1492
    e8863ac6:	ce3e                	sw	a5,28(sp)
	if( err )		ForgetCF( &value );
    e8863ac8:	47f2                	lw	a5,28(sp)
    e8863aca:	c789                	beqz	a5,e8863ad4 <AirPlayReceiverServerPlatformCopyProperty+0x40>
    e8863acc:	c501                	beqz	a0,e8863ad4 <AirPlayReceiverServerPlatformCopyProperty+0x40>
    e8863ace:	e7ce30ef          	jal	ra,e884714a <CFRelease>
    e8863ad2:	4501                	li	a0,0
	if( outErr )	*outErr = err;
    e8863ad4:	c099                	beqz	s1,e8863ada <AirPlayReceiverServerPlatformCopyProperty+0x46>
    e8863ad6:	47f2                	lw	a5,28(sp)
    e8863ad8:	c09c                	sw	a5,0(s1)
}
    e8863ada:	70e2                	ld	ra,56(sp)
    e8863adc:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8863ae0:	7942                	ld	s2,48(sp)
    e8863ae2:	6121                	addi	sp,sp,64
    e8863ae4:	8082                	ret
	else if( server->delegate.copyProperty_f )
    e8863ae6:	781c                	ld	a5,48(s0)
    e8863ae8:	c799                	beqz	a5,e8863af6 <AirPlayReceiverServerPlatformCopyProperty+0x62>
		value = server->delegate.copyProperty_f( server, inProperty, inQualifier, &err, server->delegate.context );
    e8863aea:	6c18                	ld	a4,24(s0)
    e8863aec:	0874                	addi	a3,sp,28
    e8863aee:	85ca                	mv	a1,s2
    e8863af0:	8522                	mv	a0,s0
    e8863af2:	9782                	jalr	a5
		goto exit;
    e8863af4:	bfd1                	j	e8863ac8 <AirPlayReceiverServerPlatformCopyProperty+0x34>
		err = kNotHandledErr;
    e8863af6:	77f9                	lui	a5,0xffffe
    e8863af8:	5c67879b          	addiw	a5,a5,1478
    e8863afc:	ce3e                	sw	a5,28(sp)
	CFTypeRef							value  = NULL;
    e8863afe:	4501                	li	a0,0
		goto exit;
    e8863b00:	b7e1                	j	e8863ac8 <AirPlayReceiverServerPlatformCopyProperty+0x34>
	err = kNoErr;
    e8863b02:	ce02                	sw	zero,28(sp)
    e8863b04:	b7d1                	j	e8863ac8 <AirPlayReceiverServerPlatformCopyProperty+0x34>

00000000e8863b06 <AirPlayReceiverServerPlatformSetProperty>:
	else if( server->delegate.setProperty_f )
    e8863b06:	03853303          	ld	t1,56(a0)
{
    e8863b0a:	85b2                	mv	a1,a2
    e8863b0c:	8636                	mv	a2,a3
    e8863b0e:	86ba                	mv	a3,a4
	else if( server->delegate.setProperty_f )
    e8863b10:	00030463          	beqz	t1,e8863b18 <AirPlayReceiverServerPlatformSetProperty+0x12>
		err = server->delegate.setProperty_f( server, inProperty, inQualifier, inValue, server->delegate.context );
    e8863b14:	6d18                	ld	a4,24(a0)
    e8863b16:	8302                	jr	t1
}
    e8863b18:	7579                	lui	a0,0xffffe
    e8863b1a:	5c650513          	addi	a0,a0,1478 # ffffffffffffe5c6 <__DRAM0_INF_BASE+0xffffffff0000e5c6>
    e8863b1e:	8082                	ret

00000000e8863b20 <AirPlayReceiverSessionPlatformInitialize>:
{
    e8863b20:	1101                	addi	sp,sp,-32
    e8863b22:	e826                	sd	s1,16(sp)
    e8863b24:	84aa                	mv	s1,a0
    p = malloc(len);
    e8863b26:	0a000513          	li	a0,160
    e8863b2a:	e422                	sd	s0,8(sp)
    e8863b2c:	ec06                	sd	ra,24(sp)
    e8863b2e:	521170ef          	jal	ra,e887b84e <my_malloc>
    e8863b32:	842a                	mv	s0,a0
    memset(p,0,len);
    e8863b34:	0a000613          	li	a2,160
    e8863b38:	4581                	li	a1,0
    e8863b3a:	05b180ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( spd, exit, err = kNoMemoryErr );
    e8863b3e:	c809                	beqz	s0,e8863b50 <AirPlayReceiverSessionPlatformInitialize+0x30>
	spd->session = inSession;
    e8863b40:	e004                	sd	s1,0(s0)
	err = kNoErr;
    e8863b42:	4501                	li	a0,0
	inSession->platformPtr = spd;
    e8863b44:	f080                	sd	s0,32(s1)
}
    e8863b46:	60e2                	ld	ra,24(sp)
    e8863b48:	6422                	ld	s0,8(sp)
    e8863b4a:	64c2                	ld	s1,16(sp)
    e8863b4c:	6105                	addi	sp,sp,32
    e8863b4e:	8082                	ret
	require_action( spd, exit, err = kNoMemoryErr );
    e8863b50:	7579                	lui	a0,0xffffe
    e8863b52:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8863b56:	bfc5                	j	e8863b46 <AirPlayReceiverSessionPlatformInitialize+0x26>

00000000e8863b58 <AirPlayReceiverSessionPlatformFinalize>:
{
    e8863b58:	1101                	addi	sp,sp,-32
    e8863b5a:	ec06                	sd	ra,24(sp)
    e8863b5c:	e422                	sd	s0,8(sp)
    e8863b5e:	e826                	sd	s1,16(sp)
	AirPlayReceiverSessionPlatformData * const		spd = (AirPlayReceiverSessionPlatformData *) inSession->platformPtr;
    e8863b60:	7104                	ld	s1,32(a0)
	if( !spd ) return;
    e8863b62:	cc81                	beqz	s1,e8863b7a <AirPlayReceiverSessionPlatformFinalize+0x22>
	_TearDownStreams( inSession, NULL );
    e8863b64:	4581                	li	a1,0
	spd->sessionStarted = false;
    e8863b66:	08048c23          	sb	zero,152(s1)
    e8863b6a:	842a                	mv	s0,a0
	_TearDownStreams( inSession, NULL );
    e8863b6c:	cafff0ef          	jal	ra,e886381a <_TearDownStreams>
	free( spd );
    e8863b70:	8526                	mv	a0,s1
    e8863b72:	78e180ef          	jal	ra,e887c300 <eLIBs_free>
	inSession->platformPtr = NULL;
    e8863b76:	02043023          	sd	zero,32(s0)
}
    e8863b7a:	60e2                	ld	ra,24(sp)
    e8863b7c:	6422                	ld	s0,8(sp)
    e8863b7e:	64c2                	ld	s1,16(sp)
    e8863b80:	6105                	addi	sp,sp,32
    e8863b82:	8082                	ret

00000000e8863b84 <AirPlayReceiverSessionPlatformControl>:
{
    e8863b84:	7135                	addi	sp,sp,-160
    e8863b86:	b422                	fsd	fs0,40(sp)
    e8863b88:	b026                	fsd	fs1,32(sp)
    e8863b8a:	e922                	sd	s0,144(sp)
    e8863b8c:	e526                	sd	s1,136(sp)
    e8863b8e:	e14a                	sd	s2,128(sp)
    e8863b90:	fcce                	sd	s3,120(sp)
    e8863b92:	f8d2                	sd	s4,112(sp)
    e8863b94:	ed06                	sd	ra,152(sp)
    e8863b96:	f4d6                	sd	s5,104(sp)
    e8863b98:	f0da                	sd	s6,96(sp)
    e8863b9a:	ecde                	sd	s7,88(sp)
    e8863b9c:	e8e2                	sd	s8,80(sp)
    e8863b9e:	e4e6                	sd	s9,72(sp)
    e8863ba0:	e0ea                	sd	s10,64(sp)
    e8863ba2:	fc6e                	sd	s11,56(sp)
    e8863ba4:	842a                	mv	s0,a0
	AirPlayReceiverSessionPlatformData * const		spd = (AirPlayReceiverSessionPlatformData *) session->platformPtr;
    e8863ba6:	02053a83          	ld	s5,32(a0)
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_DuckAudio ) ) )
    e8863baa:	0003a597          	auipc	a1,0x3a
    e8863bae:	dd658593          	addi	a1,a1,-554 # e889d980 <icmp6_param_problem+0x912>
    e8863bb2:	8532                	mv	a0,a2
{
    e8863bb4:	84b2                	mv	s1,a2
    e8863bb6:	89b6                	mv	s3,a3
    e8863bb8:	893a                	mv	s2,a4
    e8863bba:	8a3e                	mv	s4,a5
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_DuckAudio ) ) )
    e8863bbc:	d92e30ef          	jal	ra,e884714e <CFEqual>
    e8863bc0:	c955                	beqz	a0,e8863c74 <AirPlayReceiverSessionPlatformControl+0xf0>
		duration = CFDictionaryGetDouble( inParams, CFSTR( kAirPlayKey_DurationMs ), &err );
    e8863bc2:	0870                	addi	a2,sp,28
    e8863bc4:	0003a597          	auipc	a1,0x3a
    e8863bc8:	dd458593          	addi	a1,a1,-556 # e889d998 <icmp6_param_problem+0x92a>
    e8863bcc:	854a                	mv	a0,s2
    e8863bce:	9d7e80ef          	jal	ra,e884c5a4 <CFDictionaryGetDouble>
    e8863bd2:	22a50453          	fmv.d	fs0,fa0
		if( err || ( duration < 0 ) ) duration = 500;
    e8863bd6:	47f2                	lw	a5,28(sp)
    e8863bd8:	e791                	bnez	a5,e8863be4 <AirPlayReceiverSessionPlatformControl+0x60>
    e8863bda:	f20007d3          	fmv.d.x	fa5,zero
    e8863bde:	a2f517d3          	flt.d	a5,fa0,fa5
    e8863be2:	c789                	beqz	a5,e8863bec <AirPlayReceiverSessionPlatformControl+0x68>
    e8863be4:	00065797          	auipc	a5,0x65
    e8863be8:	d5c7b407          	fld	fs0,-676(a5) # e88c8940 <kScreenStreamClass+0x68>
		finalVolume = CFDictionaryGetDouble( inParams, CFSTR( kAirPlayProperty_Volume ), &err );
    e8863bec:	0870                	addi	a2,sp,28
    e8863bee:	0003a597          	auipc	a1,0x3a
    e8863bf2:	dc258593          	addi	a1,a1,-574 # e889d9b0 <icmp6_param_problem+0x942>
    e8863bf6:	854a                	mv	a0,s2
    e8863bf8:	9ade80ef          	jal	ra,e884c5a4 <CFDictionaryGetDouble>
		if( session->delegate.duckAudio_f )
    e8863bfc:	783c                	ld	a5,112(s0)
    e8863bfe:	c3bd                	beqz	a5,e8863c64 <AirPlayReceiverSessionPlatformControl+0xe0>
		duration /= 1000;
    e8863c00:	0005a797          	auipc	a5,0x5a
    e8863c04:	e907b507          	fld	fa0,-368(a5) # e88bda90 <kSRPHashDescriptor_SHA512+0x80>
			atrp_ulog( kLogLevelNotice, "Delegating ducking of audio to %f within %f seconds\n", finalVolume, duration );
    e8863c08:	00071517          	auipc	a0,0x71
    e8863c0c:	53850513          	addi	a0,a0,1336 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863c10:	411c                	lw	a5,0(a0)
    e8863c12:	03200713          	li	a4,50
		duration /= 1000;
    e8863c16:	1aa47453          	fdiv.d	fs0,fs0,fa0
			atrp_ulog( kLogLevelNotice, "Delegating ducking of audio to %f within %f seconds\n", finalVolume, duration );
    e8863c1a:	00065697          	auipc	a3,0x65
    e8863c1e:	d2e6b487          	fld	fs1,-722(a3) # e88c8948 <kScreenStreamClass+0x70>
    e8863c22:	02f74963          	blt	a4,a5,e8863c54 <AirPlayReceiverSessionPlatformControl+0xd0>
    e8863c26:	577d                	li	a4,-1
    e8863c28:	04e78063          	beq	a5,a4,e8863c68 <AirPlayReceiverSessionPlatformControl+0xe4>
    e8863c2c:	e20407d3          	fmv.x.d	a5,fs0
    e8863c30:	e2048753          	fmv.x.d	a4,fs1
    e8863c34:	00065697          	auipc	a3,0x65
    e8863c38:	d1c68693          	addi	a3,a3,-740 # e88c8950 <kScreenStreamClass+0x78>
    e8863c3c:	03200613          	li	a2,50
    e8863c40:	00065597          	auipc	a1,0x65
    e8863c44:	06058593          	addi	a1,a1,96 # e88c8ca0 <__PRETTY_FUNCTION__.13070>
    e8863c48:	00071517          	auipc	a0,0x71
    e8863c4c:	4f850513          	addi	a0,a0,1272 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863c50:	825f00ef          	jal	ra,e8854474 <LogPrintF>
			session->delegate.duckAudio_f( session, duration, finalVolume, session->delegate.context );
    e8863c54:	783c                	ld	a5,112(s0)
    e8863c56:	740c                	ld	a1,40(s0)
    e8863c58:	229485d3          	fmv.d	fa1,fs1
    e8863c5c:	22840553          	fmv.d	fa0,fs0
    e8863c60:	8522                	mv	a0,s0
    e8863c62:	9782                	jalr	a5
	err = kNoErr;
    e8863c64:	ce02                	sw	zero,28(sp)
    e8863c66:	a8e5                	j	e8863d5e <AirPlayReceiverSessionPlatformControl+0x1da>
			atrp_ulog( kLogLevelNotice, "Delegating ducking of audio to %f within %f seconds\n", finalVolume, duration );
    e8863c68:	03200593          	li	a1,50
    e8863c6c:	c06f00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8863c70:	d175                	beqz	a0,e8863c54 <AirPlayReceiverSessionPlatformControl+0xd0>
    e8863c72:	bf6d                	j	e8863c2c <AirPlayReceiverSessionPlatformControl+0xa8>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_UnduckAudio ) ) )
    e8863c74:	0003a597          	auipc	a1,0x3a
    e8863c78:	d4c58593          	addi	a1,a1,-692 # e889d9c0 <icmp6_param_problem+0x952>
    e8863c7c:	8526                	mv	a0,s1
    e8863c7e:	cd0e30ef          	jal	ra,e884714e <CFEqual>
    e8863c82:	c559                	beqz	a0,e8863d10 <AirPlayReceiverSessionPlatformControl+0x18c>
		duration = CFDictionaryGetDouble( inParams, CFSTR( kAirPlayKey_DurationMs ), &err );
    e8863c84:	0870                	addi	a2,sp,28
    e8863c86:	0003a597          	auipc	a1,0x3a
    e8863c8a:	d1258593          	addi	a1,a1,-750 # e889d998 <icmp6_param_problem+0x92a>
    e8863c8e:	854a                	mv	a0,s2
    e8863c90:	915e80ef          	jal	ra,e884c5a4 <CFDictionaryGetDouble>
		if( err || ( duration < 0 ) ) duration = 500;
    e8863c94:	47f2                	lw	a5,28(sp)
    e8863c96:	e791                	bnez	a5,e8863ca2 <AirPlayReceiverSessionPlatformControl+0x11e>
    e8863c98:	f20007d3          	fmv.d.x	fa5,zero
    e8863c9c:	a2f517d3          	flt.d	a5,fa0,fa5
    e8863ca0:	c789                	beqz	a5,e8863caa <AirPlayReceiverSessionPlatformControl+0x126>
    e8863ca2:	00065797          	auipc	a5,0x65
    e8863ca6:	c9e7b507          	fld	fa0,-866(a5) # e88c8940 <kScreenStreamClass+0x68>
		if( session->delegate.unduckAudio_f )
    e8863caa:	7c3c                	ld	a5,120(s0)
    e8863cac:	dfc5                	beqz	a5,e8863c64 <AirPlayReceiverSessionPlatformControl+0xe0>
		duration /= 1000;
    e8863cae:	0005a797          	auipc	a5,0x5a
    e8863cb2:	de27b407          	fld	fs0,-542(a5) # e88bda90 <kSRPHashDescriptor_SHA512+0x80>
			atrp_ulog( kLogLevelNotice, "Delegating unducking of audio within %f seconds\n", duration );
    e8863cb6:	00071517          	auipc	a0,0x71
    e8863cba:	48a50513          	addi	a0,a0,1162 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863cbe:	411c                	lw	a5,0(a0)
    e8863cc0:	03200713          	li	a4,50
		duration /= 1000;
    e8863cc4:	1a857453          	fdiv.d	fs0,fa0,fs0
			atrp_ulog( kLogLevelNotice, "Delegating unducking of audio within %f seconds\n", duration );
    e8863cc8:	02f74763          	blt	a4,a5,e8863cf6 <AirPlayReceiverSessionPlatformControl+0x172>
    e8863ccc:	577d                	li	a4,-1
    e8863cce:	02e78b63          	beq	a5,a4,e8863d04 <AirPlayReceiverSessionPlatformControl+0x180>
    e8863cd2:	e2040753          	fmv.x.d	a4,fs0
    e8863cd6:	00065697          	auipc	a3,0x65
    e8863cda:	cb268693          	addi	a3,a3,-846 # e88c8988 <kScreenStreamClass+0xb0>
    e8863cde:	03200613          	li	a2,50
    e8863ce2:	00065597          	auipc	a1,0x65
    e8863ce6:	fbe58593          	addi	a1,a1,-66 # e88c8ca0 <__PRETTY_FUNCTION__.13070>
    e8863cea:	00071517          	auipc	a0,0x71
    e8863cee:	45650513          	addi	a0,a0,1110 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
    e8863cf2:	f82f00ef          	jal	ra,e8854474 <LogPrintF>
			session->delegate.unduckAudio_f( session, duration, session->delegate.context );
    e8863cf6:	7c3c                	ld	a5,120(s0)
    e8863cf8:	740c                	ld	a1,40(s0)
    e8863cfa:	22840553          	fmv.d	fa0,fs0
    e8863cfe:	8522                	mv	a0,s0
    e8863d00:	9782                	jalr	a5
    e8863d02:	b78d                	j	e8863c64 <AirPlayReceiverSessionPlatformControl+0xe0>
			atrp_ulog( kLogLevelNotice, "Delegating unducking of audio within %f seconds\n", duration );
    e8863d04:	03200593          	li	a1,50
    e8863d08:	b6af00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8863d0c:	d56d                	beqz	a0,e8863cf6 <AirPlayReceiverSessionPlatformControl+0x172>
    e8863d0e:	b7d1                	j	e8863cd2 <AirPlayReceiverSessionPlatformControl+0x14e>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_SetUpStreams ) ) )
    e8863d10:	0003a597          	auipc	a1,0x3a
    e8863d14:	cc858593          	addi	a1,a1,-824 # e889d9d8 <icmp6_param_problem+0x96a>
    e8863d18:	8526                	mv	a0,s1
    e8863d1a:	c34e30ef          	jal	ra,e884714e <CFEqual>
    e8863d1e:	1c050363          	beqz	a0,e8863ee4 <AirPlayReceiverSessionPlatformControl+0x360>
	AirPlayReceiverSessionPlatformData * const		spd = (AirPlayReceiverSessionPlatformData *) inSession->platformPtr;
    e8863d22:	02043983          	ld	s3,32(s0)
	streams = CFDictionaryGetCFArray( inParams, CFSTR( kAirPlayKey_Streams ), NULL );
    e8863d26:	c42e30ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8863d2a:	0005061b          	sext.w	a2,a0
    e8863d2e:	4681                	li	a3,0
    e8863d30:	0003a597          	auipc	a1,0x3a
    e8863d34:	c1858593          	addi	a1,a1,-1000 # e889d948 <icmp6_param_problem+0x8da>
    e8863d38:	854a                	mv	a0,s2
    e8863d3a:	971e80ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8863d3e:	8c2a                	mv	s8,a0
	n = streams ? CFArrayGetCount( streams ) : 0;
    e8863d40:	e129                	bnez	a0,e8863d82 <AirPlayReceiverSessionPlatformControl+0x1fe>
	err = _UpdateStreams( inSession );
    e8863d42:	8522                	mv	a0,s0
    e8863d44:	afeff0ef          	jal	ra,e8863042 <_UpdateStreams>
    e8863d48:	ce2a                	sw	a0,28(sp)
	if( err ) _TearDownStreams( inSession, inParams );
    e8863d4a:	47f2                	lw	a5,28(sp)
    e8863d4c:	c789                	beqz	a5,e8863d56 <AirPlayReceiverSessionPlatformControl+0x1d2>
    e8863d4e:	85ca                	mv	a1,s2
    e8863d50:	8522                	mv	a0,s0
    e8863d52:	ac9ff0ef          	jal	ra,e886381a <_TearDownStreams>
	return( err );
    e8863d56:	47f2                	lw	a5,28(sp)
		err = _SetUpStreams( session, inParams );
    e8863d58:	ce3e                	sw	a5,28(sp)
		require_noerr( err, exit );
    e8863d5a:	f00785e3          	beqz	a5,e8863c64 <AirPlayReceiverSessionPlatformControl+0xe0>
}
    e8863d5e:	60ea                	ld	ra,152(sp)
    e8863d60:	644a                	ld	s0,144(sp)
    e8863d62:	4572                	lw	a0,28(sp)
    e8863d64:	64aa                	ld	s1,136(sp)
    e8863d66:	690a                	ld	s2,128(sp)
    e8863d68:	79e6                	ld	s3,120(sp)
    e8863d6a:	7a46                	ld	s4,112(sp)
    e8863d6c:	7aa6                	ld	s5,104(sp)
    e8863d6e:	7b06                	ld	s6,96(sp)
    e8863d70:	6be6                	ld	s7,88(sp)
    e8863d72:	6c46                	ld	s8,80(sp)
    e8863d74:	6ca6                	ld	s9,72(sp)
    e8863d76:	6d06                	ld	s10,64(sp)
    e8863d78:	7de2                	ld	s11,56(sp)
    e8863d7a:	3422                	fld	fs0,40(sp)
    e8863d7c:	3482                	fld	fs1,32(sp)
    e8863d7e:	610d                	addi	sp,sp,160
    e8863d80:	8082                	ret
	n = streams ? CFArrayGetCount( streams ) : 0;
    e8863d82:	c70e30ef          	jal	ra,e88471f2 <CFArrayGetCount>
		if( streamCtx->format == kAirPlayAudioFormat_Invalid ) streamCtx->format = kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo;
    e8863d86:	6b05                	lui	s6,0x1
			case kAirPlayStreamType_AltAudio:		streamCtx = &spd->altAudioCtx;  break;
    e8863d88:	05098d93          	addi	s11,s3,80
	n = streams ? CFArrayGetCount( streams ) : 0;
    e8863d8c:	8d2a                	mv	s10,a0
	for( i = 0; i < n; ++i )
    e8863d8e:	4a81                	li	s5,0
		switch( streamType )
    e8863d90:	06500c93          	li	s9,101
		if( streamCtx->format == kAirPlayAudioFormat_Invalid ) streamCtx->format = kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo;
    e8863d94:	800b0b13          	addi	s6,s6,-2048 # 800 <memcmp-0xe87ff800>
			default: atrp_ulog( kLogLevelNotice, "### Unsupported stream type %d\n", streamType ); continue;
    e8863d98:	00071b97          	auipc	s7,0x71
    e8863d9c:	3a8b8b93          	addi	s7,s7,936 # e88d5140 <gLogCategory_AirPlayReceiverPlatform>
			case kAirPlayStreamType_MainHighAudio:	streamCtx = &spd->mainAudioCtx; break;
    e8863da0:	09a1                	addi	s3,s3,8
	for( i = 0; i < n; ++i )
    e8863da2:	fbaad0e3          	bge	s5,s10,e8863d42 <AirPlayReceiverSessionPlatformControl+0x1be>
		streamDesc = CFArrayGetCFDictionaryAtIndex( streams, i, &err );
    e8863da6:	dfce30ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8863daa:	0005061b          	sext.w	a2,a0
    e8863dae:	0874                	addi	a3,sp,28
    e8863db0:	85d6                	mv	a1,s5
    e8863db2:	8562                	mv	a0,s8
    e8863db4:	ad8e80ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
    e8863db8:	8a2a                	mv	s4,a0
		require_noerr( err, exit );
    e8863dba:	47f2                	lw	a5,28(sp)
    e8863dbc:	f7d9                	bnez	a5,e8863d4a <AirPlayReceiverSessionPlatformControl+0x1c6>
		streamType = (AirPlayStreamType) CFDictionaryGetInt64( streamDesc, CFSTR( kAirPlayKey_Type ), NULL );
    e8863dbe:	4601                	li	a2,0
    e8863dc0:	0003a597          	auipc	a1,0x3a
    e8863dc4:	b9858593          	addi	a1,a1,-1128 # e889d958 <icmp6_param_problem+0x8ea>
    e8863dc8:	8a9e80ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8863dcc:	0005071b          	sext.w	a4,a0
		switch( streamType )
    e8863dd0:	0f970f63          	beq	a4,s9,e8863ece <AirPlayReceiverSessionPlatformControl+0x34a>
    e8863dd4:	02ecee63          	bltu	s9,a4,e8863e10 <AirPlayReceiverSessionPlatformControl+0x28c>
    e8863dd8:	06400793          	li	a5,100
			case kAirPlayStreamType_MainAudio:		streamCtx = &spd->mainAudioCtx; break;
    e8863ddc:	84ce                	mv	s1,s3
		switch( streamType )
    e8863dde:	04f70463          	beq	a4,a5,e8863e26 <AirPlayReceiverSessionPlatformControl+0x2a2>
			default: atrp_ulog( kLogLevelNotice, "### Unsupported stream type %d\n", streamType ); continue;
    e8863de2:	000ba783          	lw	a5,0(s7)
    e8863de6:	03200693          	li	a3,50
    e8863dea:	02f6cb63          	blt	a3,a5,e8863e20 <AirPlayReceiverSessionPlatformControl+0x29c>
    e8863dee:	56fd                	li	a3,-1
    e8863df0:	0ed78163          	beq	a5,a3,e8863ed2 <AirPlayReceiverSessionPlatformControl+0x34e>
    e8863df4:	00065697          	auipc	a3,0x65
    e8863df8:	bcc68693          	addi	a3,a3,-1076 # e88c89c0 <kScreenStreamClass+0xe8>
    e8863dfc:	03200613          	li	a2,50
    e8863e00:	00065597          	auipc	a1,0x65
    e8863e04:	ec858593          	addi	a1,a1,-312 # e88c8cc8 <__PRETTY_FUNCTION__.13119>
    e8863e08:	855e                	mv	a0,s7
    e8863e0a:	e6af00ef          	jal	ra,e8854474 <LogPrintF>
    e8863e0e:	a809                	j	e8863e20 <AirPlayReceiverSessionPlatformControl+0x29c>
		switch( streamType )
    e8863e10:	06600793          	li	a5,102
    e8863e14:	00f70863          	beq	a4,a5,e8863e24 <AirPlayReceiverSessionPlatformControl+0x2a0>
    e8863e18:	06e00793          	li	a5,110
    e8863e1c:	fcf713e3          	bne	a4,a5,e8863de2 <AirPlayReceiverSessionPlatformControl+0x25e>
	for( i = 0; i < n; ++i )
    e8863e20:	2a85                	addiw	s5,s5,1
    e8863e22:	b741                	j	e8863da2 <AirPlayReceiverSessionPlatformControl+0x21e>
			case kAirPlayStreamType_MainHighAudio:	streamCtx = &spd->mainAudioCtx; break;
    e8863e24:	84ce                	mv	s1,s3
		streamCtx->type				= streamType;
    e8863e26:	c098                	sw	a4,0(s1)
		streamCtx->format			= CFDictionaryGetInt64( streamDesc, CFSTR( kAirPlayKey_AudioFormat ), NULL );
    e8863e28:	4601                	li	a2,0
    e8863e2a:	0003a597          	auipc	a1,0x3a
    e8863e2e:	bc658593          	addi	a1,a1,-1082 # e889d9f0 <icmp6_param_problem+0x982>
    e8863e32:	8552                	mv	a0,s4
    e8863e34:	83de80ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8863e38:	40ab150b          	mveqz	a0,s6,a0
    e8863e3c:	e488                	sd	a0,8(s1)
		streamCtx->input			= CFDictionaryGetBoolean( streamDesc, CFSTR( kAirPlayKey_Input ), &err );
    e8863e3e:	0870                	addi	a2,sp,28
    e8863e40:	0003a597          	auipc	a1,0x3a
    e8863e44:	ac058593          	addi	a1,a1,-1344 # e889d900 <icmp6_param_problem+0x892>
    e8863e48:	8552                	mv	a0,s4
    e8863e4a:	827e80ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8863e4e:	00a03533          	snez	a0,a0
		streamCtx->loopback			= CFDictionaryGetBoolean( streamDesc, CFSTR( kAirPlayKey_AudioLoopback ), NULL );
    e8863e52:	4601                	li	a2,0
    e8863e54:	0003a597          	auipc	a1,0x3a
    e8863e58:	bb458593          	addi	a1,a1,-1100 # e889da08 <icmp6_param_problem+0x99a>
		streamCtx->input			= CFDictionaryGetBoolean( streamDesc, CFSTR( kAirPlayKey_Input ), &err );
    e8863e5c:	00a48823          	sb	a0,16(s1)
		streamCtx->loopback			= CFDictionaryGetBoolean( streamDesc, CFSTR( kAirPlayKey_AudioLoopback ), NULL );
    e8863e60:	8552                	mv	a0,s4
    e8863e62:	80fe80ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8863e66:	00a03533          	snez	a0,a0
    e8863e6a:	00a488a3          	sb	a0,17(s1)
		cfstr = CFDictionaryGetCFString( streamDesc, CFSTR( kAirPlayKey_AudioType ), NULL );
    e8863e6e:	e26e30ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8863e72:	0005061b          	sext.w	a2,a0
    e8863e76:	4681                	li	a3,0
    e8863e78:	0003a597          	auipc	a1,0x3a
    e8863e7c:	a9858593          	addi	a1,a1,-1384 # e889d910 <icmp6_param_problem+0x8a2>
    e8863e80:	8552                	mv	a0,s4
    e8863e82:	829e80ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8863e86:	872a                	mv	a4,a0
		ReplaceCF( &streamCtx->audioType, cfstr );
    e8863e88:	6c9c                	ld	a5,24(s1)
    e8863e8a:	c519                	beqz	a0,e8863e98 <AirPlayReceiverSessionPlatformControl+0x314>
    e8863e8c:	e43e                	sd	a5,8(sp)
    e8863e8e:	e02a                	sd	a0,0(sp)
    e8863e90:	ab6e30ef          	jal	ra,e8847146 <CFRetain>
    e8863e94:	67a2                	ld	a5,8(sp)
    e8863e96:	6702                	ld	a4,0(sp)
    e8863e98:	ec98                	sd	a4,24(s1)
    e8863e9a:	c781                	beqz	a5,e8863ea2 <AirPlayReceiverSessionPlatformControl+0x31e>
    e8863e9c:	853e                	mv	a0,a5
    e8863e9e:	aace30ef          	jal	ra,e884714a <CFRelease>
		dict = CFDictionaryGetCFDictionary( streamDesc, CFSTR( kAirPlayKey_VocoderInfo ), NULL );
    e8863ea2:	d00e30ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8863ea6:	0005061b          	sext.w	a2,a0
    e8863eaa:	4681                	li	a3,0
    e8863eac:	0003a597          	auipc	a1,0x3a
    e8863eb0:	b7458593          	addi	a1,a1,-1164 # e889da20 <icmp6_param_problem+0x9b2>
    e8863eb4:	8552                	mv	a0,s4
    e8863eb6:	ff4e80ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
		if( dict )
    e8863eba:	d13d                	beqz	a0,e8863e20 <AirPlayReceiverSessionPlatformControl+0x29c>
			streamCtx->vocoderSampleRate = CFDictionaryGetDouble( dict, CFSTR( kAirPlayVocoderInfoKey_SampleRate ), NULL );
    e8863ebc:	4601                	li	a2,0
    e8863ebe:	0003a597          	auipc	a1,0x3a
    e8863ec2:	b7a58593          	addi	a1,a1,-1158 # e889da38 <icmp6_param_problem+0x9ca>
    e8863ec6:	edee80ef          	jal	ra,e884c5a4 <CFDictionaryGetDouble>
    e8863eca:	b088                	fsd	fa0,32(s1)
    e8863ecc:	bf91                	j	e8863e20 <AirPlayReceiverSessionPlatformControl+0x29c>
			case kAirPlayStreamType_AltAudio:		streamCtx = &spd->altAudioCtx;  break;
    e8863ece:	84ee                	mv	s1,s11
    e8863ed0:	bf99                	j	e8863e26 <AirPlayReceiverSessionPlatformControl+0x2a2>
			default: atrp_ulog( kLogLevelNotice, "### Unsupported stream type %d\n", streamType ); continue;
    e8863ed2:	03200593          	li	a1,50
    e8863ed6:	855e                	mv	a0,s7
    e8863ed8:	e03a                	sd	a4,0(sp)
    e8863eda:	998f00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8863ede:	6702                	ld	a4,0(sp)
    e8863ee0:	d121                	beqz	a0,e8863e20 <AirPlayReceiverSessionPlatformControl+0x29c>
    e8863ee2:	bf09                	j	e8863df4 <AirPlayReceiverSessionPlatformControl+0x270>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_TearDownStreams ) ) )
    e8863ee4:	0003a597          	auipc	a1,0x3a
    e8863ee8:	b6c58593          	addi	a1,a1,-1172 # e889da50 <icmp6_param_problem+0x9e2>
    e8863eec:	8526                	mv	a0,s1
    e8863eee:	a60e30ef          	jal	ra,e884714e <CFEqual>
    e8863ef2:	c511                	beqz	a0,e8863efe <AirPlayReceiverSessionPlatformControl+0x37a>
		_TearDownStreams( session, inParams );
    e8863ef4:	85ca                	mv	a1,s2
    e8863ef6:	8522                	mv	a0,s0
    e8863ef8:	923ff0ef          	jal	ra,e886381a <_TearDownStreams>
    e8863efc:	b3a5                	j	e8863c64 <AirPlayReceiverSessionPlatformControl+0xe0>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_StartSession ) ) )
    e8863efe:	0003a597          	auipc	a1,0x3a
    e8863f02:	b6a58593          	addi	a1,a1,-1174 # e889da68 <icmp6_param_problem+0x9fa>
    e8863f06:	8526                	mv	a0,s1
    e8863f08:	a46e30ef          	jal	ra,e884714e <CFEqual>
    e8863f0c:	c919                	beqz	a0,e8863f22 <AirPlayReceiverSessionPlatformControl+0x39e>
		spd->sessionStarted = true;
    e8863f0e:	4785                	li	a5,1
    e8863f10:	08fa8c23          	sb	a5,152(s5) # 2098 <memcmp-0xe87fdf68>
		err = _UpdateStreams( session );
    e8863f14:	8522                	mv	a0,s0
    e8863f16:	92cff0ef          	jal	ra,e8863042 <_UpdateStreams>
    e8863f1a:	ce2a                	sw	a0,28(sp)
		require_noerr( err, exit );
    e8863f1c:	d40504e3          	beqz	a0,e8863c64 <AirPlayReceiverSessionPlatformControl+0xe0>
    e8863f20:	bd3d                	j	e8863d5e <AirPlayReceiverSessionPlatformControl+0x1da>
	else if( session->delegate.control_f )
    e8863f22:	04843803          	ld	a6,72(s0)
    e8863f26:	00080b63          	beqz	a6,e8863f3c <AirPlayReceiverSessionPlatformControl+0x3b8>
		err = session->delegate.control_f( session, inCommand, inQualifier, inParams, outParams, session->delegate.context );
    e8863f2a:	741c                	ld	a5,40(s0)
    e8863f2c:	8752                	mv	a4,s4
    e8863f2e:	86ca                	mv	a3,s2
    e8863f30:	864e                	mv	a2,s3
    e8863f32:	85a6                	mv	a1,s1
    e8863f34:	8522                	mv	a0,s0
    e8863f36:	9802                	jalr	a6
    e8863f38:	ce2a                	sw	a0,28(sp)
		goto exit;
    e8863f3a:	b515                	j	e8863d5e <AirPlayReceiverSessionPlatformControl+0x1da>
		err = kNotHandledErr;
    e8863f3c:	77f9                	lui	a5,0xffffe
    e8863f3e:	5c67879b          	addiw	a5,a5,1478
    e8863f42:	ce3e                	sw	a5,28(sp)
		goto exit;
    e8863f44:	bd29                	j	e8863d5e <AirPlayReceiverSessionPlatformControl+0x1da>

00000000e8863f46 <AirPlayReceiverSessionPlatformCopyProperty>:
{
    e8863f46:	1101                	addi	sp,sp,-32
    e8863f48:	e822                	sd	s0,16(sp)
    e8863f4a:	ec06                	sd	ra,24(sp)
	if( session->delegate.copyProperty_f )
    e8863f4c:	693c                	ld	a5,80(a0)
{
    e8863f4e:	843a                	mv	s0,a4
	if( session->delegate.copyProperty_f )
    e8863f50:	cf89                	beqz	a5,e8863f6a <AirPlayReceiverSessionPlatformCopyProperty+0x24>
		value = session->delegate.copyProperty_f( session, inProperty, inQualifier, &err, session->delegate.context );
    e8863f52:	7518                	ld	a4,40(a0)
    e8863f54:	85b2                	mv	a1,a2
    e8863f56:	8636                	mv	a2,a3
    e8863f58:	0074                	addi	a3,sp,12
    e8863f5a:	9782                	jalr	a5
	if( outErr ) *outErr = err;
    e8863f5c:	c019                	beqz	s0,e8863f62 <AirPlayReceiverSessionPlatformCopyProperty+0x1c>
    e8863f5e:	47b2                	lw	a5,12(sp)
    e8863f60:	c01c                	sw	a5,0(s0)
}
    e8863f62:	60e2                	ld	ra,24(sp)
    e8863f64:	6442                	ld	s0,16(sp)
    e8863f66:	6105                	addi	sp,sp,32
    e8863f68:	8082                	ret
		err = kNotHandledErr;
    e8863f6a:	77f9                	lui	a5,0xffffe
    e8863f6c:	5c67879b          	addiw	a5,a5,1478
    e8863f70:	c63e                	sw	a5,12(sp)
	CFTypeRef										value = NULL;
    e8863f72:	4501                	li	a0,0
    e8863f74:	b7e5                	j	e8863f5c <AirPlayReceiverSessionPlatformCopyProperty+0x16>

00000000e8863f76 <AirPlayGetConfigCString>:
        AirPlayReceiverServerRef inServer,
		CFStringRef			inKey,
		char *				inBuffer, 
		size_t				inMaxLen, 
		OSStatus *			outErr )
{
    e8863f76:	1101                	addi	sp,sp,-32
    e8863f78:	e822                	sd	s0,16(sp)
    e8863f7a:	ec06                	sd	ra,24(sp)
    e8863f7c:	843a                	mv	s0,a4
	char *				result = "";
	OSStatus			err;
	
	require_action( inServer, exit, err = kNotInitializedErr );
    e8863f7e:	e105                	bnez	a0,e8863f9e <AirPlayGetConfigCString+0x28>
    e8863f80:	77f9                	lui	a5,0xffffe
    e8863f82:	5c27879b          	addiw	a5,a5,1474
	require_action_quiet( inServer->config, exit, err = kNotFoundErr );
    e8863f86:	c63e                	sw	a5,12(sp)
	char *				result = "";
    e8863f88:	0005d517          	auipc	a0,0x5d
    e8863f8c:	2e850513          	addi	a0,a0,744 # e88c1270 <kHTTPServerClass+0x90>
	
	result = CFDictionaryGetCString( inServer->config, inKey, inBuffer, inMaxLen, &err );
	require_noerr_quiet( err, exit );
	
exit:
	if( outErr )		*outErr = err;
    e8863f90:	c019                	beqz	s0,e8863f96 <AirPlayGetConfigCString+0x20>
    e8863f92:	47b2                	lw	a5,12(sp)
    e8863f94:	c01c                	sw	a5,0(s0)
	return( result );
}
    e8863f96:	60e2                	ld	ra,24(sp)
    e8863f98:	6442                	ld	s0,16(sp)
    e8863f9a:	6105                	addi	sp,sp,32
    e8863f9c:	8082                	ret
	require_action_quiet( inServer->config, exit, err = kNotFoundErr );
    e8863f9e:	7948                	ld	a0,176(a0)
    e8863fa0:	e509                	bnez	a0,e8863faa <AirPlayGetConfigCString+0x34>
    e8863fa2:	77f9                	lui	a5,0xffffe
    e8863fa4:	5b97879b          	addiw	a5,a5,1465
    e8863fa8:	bff9                	j	e8863f86 <AirPlayGetConfigCString+0x10>
	result = CFDictionaryGetCString( inServer->config, inKey, inBuffer, inMaxLen, &err );
    e8863faa:	0078                	addi	a4,sp,12
    e8863fac:	a8ae80ef          	jal	ra,e884c236 <CFDictionaryGetCString>
exit:
    e8863fb0:	b7c5                	j	e8863f90 <AirPlayGetConfigCString+0x1a>

00000000e8863fb2 <_GetTypeID>:
//===========================================================================================================================
//	_GetTypeID
//===========================================================================================================================

static void _GetTypeID( void *inContext )
{
    e8863fb2:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gAirPlayReceiverServerTypeID = _CFRuntimeRegisterClass( &kAirPlayReceiverServerClass );
    e8863fb4:	00066517          	auipc	a0,0x66
    e8863fb8:	a4450513          	addi	a0,a0,-1468 # e88c99f8 <kAirPlayReceiverServerClass>
{
    e8863fbc:	e406                	sd	ra,8(sp)
	gAirPlayReceiverServerTypeID = _CFRuntimeRegisterClass( &kAirPlayReceiverServerClass );
    e8863fbe:	f90e30ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8863fc2:	00080797          	auipc	a5,0x80
    e8863fc6:	dca7a723          	sw	a0,-562(a5) # e88e3d90 <gAirPlayReceiverServerTypeID>
	check( gAirPlayReceiverServerTypeID != _kCFRuntimeNotATypeID );
}
    e8863fca:	60a2                	ld	ra,8(sp)
    e8863fcc:	0141                	addi	sp,sp,16
    e8863fce:	8082                	ret

00000000e8863fd0 <_GetTypeIDLogs>:
{
    e8863fd0:	1141                	addi	sp,sp,-16
	gAirPlayReceiverLogsTypeID = _CFRuntimeRegisterClass( &kAirPlayReceiverLogsClass );
    e8863fd2:	00066517          	auipc	a0,0x66
    e8863fd6:	9ce50513          	addi	a0,a0,-1586 # e88c99a0 <kAirPlayReceiverLogsClass>
{
    e8863fda:	e406                	sd	ra,8(sp)
	gAirPlayReceiverLogsTypeID = _CFRuntimeRegisterClass( &kAirPlayReceiverLogsClass );
    e8863fdc:	f72e30ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8863fe0:	00080797          	auipc	a5,0x80
    e8863fe4:	daa7a423          	sw	a0,-600(a5) # e88e3d88 <gAirPlayReceiverLogsTypeID>
}
    e8863fe8:	60a2                	ld	ra,8(sp)
    e8863fea:	0141                	addi	sp,sp,16
    e8863fec:	8082                	ret

00000000e8863fee <_GlobalInitialize>:
	(void) inContext;
	
#if( 0 )
	signal( SIGPIPE, SIG_IGN ); // Ignore SIGPIPE signals so we get EPIPE errors from APIs instead of a signal.
#endif
	MFiPlatform_Initialize(); // Initialize at app startup to cache cert to speed up first time connect.
    e8863fee:	b03f006f          	j	e8854af0 <MFiPlatform_Initialize>

00000000e8863ff2 <AirPlayReceiverServerCopyProperty>:
{
    e8863ff2:	7139                	addi	sp,sp,-64
    e8863ff4:	fc91540b          	sdd	s0,s1,(sp),2,4
    e8863ff8:	f84a                	sd	s2,48(sp)
    e8863ffa:	842a                	mv	s0,a0
    e8863ffc:	892e                	mv	s2,a1
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_Playing ) ) )
    e8863ffe:	8532                	mv	a0,a2
    e8864000:	0003a597          	auipc	a1,0x3a
    e8864004:	a9058593          	addi	a1,a1,-1392 # e889da90 <icmp6_param_problem+0xa22>
{
    e8864008:	e436                	sd	a3,8(sp)
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_Playing ) ) )
    e886400a:	e032                	sd	a2,0(sp)
{
    e886400c:	fc06                	sd	ra,56(sp)
    e886400e:	84ba                	mv	s1,a4
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_Playing ) ) )
    e8864010:	93ee30ef          	jal	ra,e884714e <CFEqual>
    e8864014:	f8d1460b          	ldd	a2,a3,(sp),0,4
    e8864018:	c11d                	beqz	a0,e886403e <AirPlayReceiverServerCopyProperty+0x4c>
		value = server->playing ? kCFBooleanTrue : kCFBooleanFalse;
    e886401a:	09044783          	lbu	a5,144(s0)
    e886401e:	cb99                	beqz	a5,e8864034 <AirPlayReceiverServerCopyProperty+0x42>
    e8864020:	00071797          	auipc	a5,0x71
    e8864024:	cb078793          	addi	a5,a5,-848 # e88d4cd0 <kCFLBooleanTrue>
    e8864028:	6380                	ld	s0,0(a5)
		CFRetain( value );
    e886402a:	8522                	mv	a0,s0
    e886402c:	91ae30ef          	jal	ra,e8847146 <CFRetain>
	err = kNoErr;
    e8864030:	ce02                	sw	zero,28(sp)
    e8864032:	a099                	j	e8864078 <AirPlayReceiverServerCopyProperty+0x86>
		value = server->playing ? kCFBooleanTrue : kCFBooleanFalse;
    e8864034:	00071797          	auipc	a5,0x71
    e8864038:	c9478793          	addi	a5,a5,-876 # e88d4cc8 <kCFLBooleanFalse>
    e886403c:	b7f5                	j	e8864028 <AirPlayReceiverServerCopyProperty+0x36>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_SourceVersion ) ) )
    e886403e:	8532                	mv	a0,a2
    e8864040:	0003a597          	auipc	a1,0x3a
    e8864044:	a6058593          	addi	a1,a1,-1440 # e889daa0 <icmp6_param_problem+0xa32>
    e8864048:	e436                	sd	a3,8(sp)
    e886404a:	e032                	sd	a2,0(sp)
    e886404c:	902e30ef          	jal	ra,e884714e <CFEqual>
    e8864050:	f8d1460b          	ldd	a2,a3,(sp),0,4
    e8864054:	cd01                	beqz	a0,e886406c <AirPlayReceiverServerCopyProperty+0x7a>
		CFRetain( value );
    e8864056:	0003a517          	auipc	a0,0x3a
    e886405a:	a2a50513          	addi	a0,a0,-1494 # e889da80 <icmp6_param_problem+0xa12>
    e886405e:	8e8e30ef          	jal	ra,e8847146 <CFRetain>
		value = CFSTR( kAirPlaySourceVersionStr );
    e8864062:	0003a417          	auipc	s0,0x3a
    e8864066:	a1e40413          	addi	s0,s0,-1506 # e889da80 <icmp6_param_problem+0xa12>
    e886406a:	b7d9                	j	e8864030 <AirPlayReceiverServerCopyProperty+0x3e>
		value = AirPlayReceiverServerPlatformCopyProperty( server, inFlags, inProperty, inQualifier, &err );
    e886406c:	8522                	mv	a0,s0
    e886406e:	0878                	addi	a4,sp,28
    e8864070:	85ca                	mv	a1,s2
    e8864072:	a23ff0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8864076:	842a                	mv	s0,a0
	if( outErr ) *outErr = err;
    e8864078:	c099                	beqz	s1,e886407e <AirPlayReceiverServerCopyProperty+0x8c>
    e886407a:	47f2                	lw	a5,28(sp)
    e886407c:	c09c                	sw	a5,0(s1)
}
    e886407e:	8522                	mv	a0,s0
    e8864080:	70e2                	ld	ra,56(sp)
    e8864082:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8864086:	7942                	ld	s2,48(sp)
    e8864088:	6121                	addi	sp,sp,64
    e886408a:	8082                	ret

00000000e886408c <_HandleHTTPConnectionCreated>:
	_HandleHTTPConnectionCreated( 
		HTTPServerRef		inServer, 
		HTTPConnectionRef	inCnx, 
		void *				inCnxExtraPtr, 
		void *				inContext )
{
    e886408c:	7159                	addi	sp,sp,-112
    e886408e:	f486                	sd	ra,104(sp)
    e8864090:	f0a2                	sd	s0,96(sp)
    e8864092:	eca6                	sd	s1,88(sp)
    e8864094:	8432                	mv	s0,a2
	HTTPConnectionDelegate		delegate;
	
	(void) inServer;
	
	cnx->server  = server;
	cnx->httpCnx = inCnx;
    e8864096:	f8b6568b          	sdd	a3,a1,(a2),0,4
{
    e886409a:	84ae                	mv	s1,a1
	
	HTTPConnectionDelegateInit( &delegate );
    e886409c:	0028                	addi	a0,sp,8
    e886409e:	04800613          	li	a2,72
    e88640a2:	4581                	li	a1,0
    e88640a4:	2f0180ef          	jal	ra,e887c394 <eLIBs_memset>
	delegate.context			= cnx;
    e88640a8:	e822                	sd	s0,16(sp)
	delegate.initialize_f		= _HandleHTTPConnectionInitialize;
    e88640aa:	00000797          	auipc	a5,0x0
    e88640ae:	60e78793          	addi	a5,a5,1550 # e88646b8 <_HandleHTTPConnectionInitialize>
    e88640b2:	f03e                	sd	a5,32(sp)
	delegate.finalize_f			= _HandleHTTPConnectionFinalize;
    e88640b4:	00000797          	auipc	a5,0x0
    e88640b8:	46278793          	addi	a5,a5,1122 # e8864516 <_HandleHTTPConnectionFinalize>
    e88640bc:	f43e                	sd	a5,40(sp)
	delegate.close_f			= _HandleHTTPConnectionClose;
    e88640be:	00000797          	auipc	a5,0x0
    e88640c2:	3a678793          	addi	a5,a5,934 # e8864464 <_HandleHTTPConnectionClose>
    e88640c6:	f83e                	sd	a5,48(sp)
	delegate.handleMessage_f	= _HandleHTTPConnectionMessage;
    e88640c8:	00003797          	auipc	a5,0x3
    e88640cc:	8d278793          	addi	a5,a5,-1838 # e886699a <_HandleHTTPConnectionMessage>
	HTTPConnectionSetDelegate( inCnx, &delegate );
    e88640d0:	002c                	addi	a1,sp,8
    e88640d2:	8526                	mv	a0,s1
	delegate.handleMessage_f	= _HandleHTTPConnectionMessage;
    e88640d4:	e0be                	sd	a5,64(sp)
	HTTPConnectionSetDelegate( inCnx, &delegate );
    e88640d6:	9c2ed0ef          	jal	ra,e8851298 <HTTPConnectionSetDelegate>
}
    e88640da:	7406                	ld	s0,96(sp)
    e88640dc:	70a6                	ld	ra,104(sp)
    e88640de:	64e6                	ld	s1,88(sp)
    e88640e0:	6165                	addi	sp,sp,112
    e88640e2:	8082                	ret

00000000e88640e4 <_requestProcessLogsRetrieve>:
//===========================================================================================================================
//	_requestProcessRetrieveLogs
//===========================================================================================================================

static HTTPStatus _requestProcessLogsRetrieve( AirPlayReceiverConnectionRef inCnx )
{
    e88640e4:	7179                	addi	sp,sp,-48
    e88640e6:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88640ea:	f406                	sd	ra,40(sp)
    e88640ec:	f04a                	sd	s2,32(sp)
	HTTPStatus			status;
	OSStatus			err;
	uint8_t *			ptr;
	size_t				len;
	HTTPMessageRef		response = inCnx->httpCnx->responseMsg;
    e88640ee:	6518                	ld	a4,8(a0)
	
	require_action( inCnx->logs, exit, status = kHTTPStatus_NotFound );
    e88640f0:	697c                	ld	a5,208(a0)
	HTTPMessageRef		response = inCnx->httpCnx->responseMsg;
    e88640f2:	7764                	ld	s1,232(a4)
	require_action( inCnx->logs, exit, status = kHTTPStatus_NotFound );
    e88640f4:	cbe9                	beqz	a5,e88641c6 <_requestProcessLogsRetrieve+0xe2>
	
	if( inCnx->logs->pending )
    e88640f6:	0107c683          	lbu	a3,16(a5)
    e88640fa:	842a                	mv	s0,a0
    e88640fc:	c2ad                	beqz	a3,e886415e <_requestProcessLogsRetrieve+0x7a>
	{
		// Send 202 (Accepted) with Retry-After and Location
		err = HTTPHeader_InitResponse( &response->header, inCnx->httpCnx->delegate.httpProtocol, kHTTPStatus_Accepted, NULL );
    e88640fe:	770c                	ld	a1,40(a4)
    e8864100:	01048913          	addi	s2,s1,16
    e8864104:	4681                	li	a3,0
    e8864106:	0ca00613          	li	a2,202
    e886410a:	854a                	mv	a0,s2
    e886410c:	ce7ed0ef          	jal	ra,e8851df2 <HTTPHeader_InitResponse>
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8864110:	c911                	beqz	a0,e8864124 <_requestProcessLogsRetrieve+0x40>
    e8864112:	1f400493          	li	s1,500
		ForgetCF( &inCnx->logs );
	}

exit:
	return( status );
}
    e8864116:	8526                	mv	a0,s1
    e8864118:	70a2                	ld	ra,40(sp)
    e886411a:	fa91440b          	ldd	s0,s1,(sp),1,4
    e886411e:	7902                	ld	s2,32(sp)
    e8864120:	6145                	addi	sp,sp,48
    e8864122:	8082                	ret
		HTTPHeader_AddFieldF( &response->header, "Retry-After", "5" ); // Retry in 5 sec
    e8864124:	00065617          	auipc	a2,0x65
    e8864128:	64c60613          	addi	a2,a2,1612 # e88c9770 <__PRETTY_FUNCTION__.14166+0x80>
    e886412c:	00065597          	auipc	a1,0x65
    e8864130:	64c58593          	addi	a1,a1,1612 # e88c9778 <__PRETTY_FUNCTION__.14166+0x88>
    e8864134:	854a                	mv	a0,s2
    e8864136:	de5ed0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
		HTTPHeader_AddFieldF( &response->header, "Location", "/Logs?id=%u", inCnx->logs->requestID );
    e886413a:	687c                	ld	a5,208(s0)
    e886413c:	00065617          	auipc	a2,0x65
    e8864140:	64c60613          	addi	a2,a2,1612 # e88c9788 <__PRETTY_FUNCTION__.14166+0x98>
    e8864144:	00065597          	auipc	a1,0x65
    e8864148:	65458593          	addi	a1,a1,1620 # e88c9798 <__PRETTY_FUNCTION__.14166+0xa8>
    e886414c:	4f94                	lw	a3,24(a5)
    e886414e:	854a                	mv	a0,s2
    e8864150:	dcbed0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
		response->bodyLen = 0;
    e8864154:	5204b023          	sd	zero,1312(s1)
		status = kHTTPStatus_OK;
    e8864158:	0c800493          	li	s1,200
    e886415c:	bf6d                	j	e8864116 <_requestProcessLogsRetrieve+0x32>
		if( inCnx->logs->dataBuffer )
    e886415e:	7394                	ld	a3,32(a5)
    e8864160:	c2a5                	beqz	a3,e88641c0 <_requestProcessLogsRetrieve+0xdc>
			err = HTTPHeader_InitResponse( &response->header, inCnx->httpCnx->delegate.httpProtocol, kHTTPStatus_OK, NULL );
    e8864162:	770c                	ld	a1,40(a4)
    e8864164:	4681                	li	a3,0
    e8864166:	0c800613          	li	a2,200
    e886416a:	01048513          	addi	a0,s1,16
    e886416e:	c85ed0ef          	jal	ra,e8851df2 <HTTPHeader_InitResponse>
			require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8864172:	f145                	bnez	a0,e8864112 <_requestProcessLogsRetrieve+0x2e>
			response->bodyLen = 0;
    e8864174:	5204b023          	sd	zero,1312(s1)
			err = DataBuffer_Detach( inCnx->logs->dataBuffer, &ptr, &len );
    e8864178:	687c                	ld	a5,208(s0)
    e886417a:	0030                	addi	a2,sp,8
    e886417c:	858a                	mv	a1,sp
    e886417e:	7388                	ld	a0,32(a5)
    e8864180:	fb9e90ef          	jal	ra,e884e138 <DataBuffer_Detach>
			require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8864184:	f559                	bnez	a0,e8864112 <_requestProcessLogsRetrieve+0x2e>
			err = HTTPMessageSetBodyPtr( response, "application/x-gzip", ptr, len );
    e8864186:	66a2                	ld	a3,8(sp)
    e8864188:	6602                	ld	a2,0(sp)
    e886418a:	00065597          	auipc	a1,0x65
    e886418e:	61e58593          	addi	a1,a1,1566 # e88c97a8 <__PRETTY_FUNCTION__.14166+0xb8>
    e8864192:	8526                	mv	a0,s1
    e8864194:	c37ec0ef          	jal	ra,e8850dca <HTTPMessageSetBodyPtr>
			require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8864198:	fd2d                	bnez	a0,e8864112 <_requestProcessLogsRetrieve+0x2e>
			DataBuffer_Free( inCnx->logs->dataBuffer );
    e886419a:	687c                	ld	a5,208(s0)
			status = kHTTPStatus_OK;
    e886419c:	0c800493          	li	s1,200
			DataBuffer_Free( inCnx->logs->dataBuffer );
    e88641a0:	7388                	ld	a0,32(a5)
    e88641a2:	f65e90ef          	jal	ra,e884e106 <DataBuffer_Free>
			inCnx->logs->dataBuffer = NULL;
    e88641a6:	687c                	ld	a5,208(s0)
    e88641a8:	0207b023          	sd	zero,32(a5)
			inCnx->logs->requestID = 0;
    e88641ac:	687c                	ld	a5,208(s0)
    e88641ae:	0007ac23          	sw	zero,24(a5)
		ForgetCF( &inCnx->logs );
    e88641b2:	6868                	ld	a0,208(s0)
    e88641b4:	d12d                	beqz	a0,e8864116 <_requestProcessLogsRetrieve+0x32>
    e88641b6:	f95e20ef          	jal	ra,e884714a <CFRelease>
    e88641ba:	0c043823          	sd	zero,208(s0)
    e88641be:	bfa1                	j	e8864116 <_requestProcessLogsRetrieve+0x32>
			status = inCnx->logs->status;
    e88641c0:	0147d483          	lhu	s1,20(a5)
    e88641c4:	b7fd                	j	e88641b2 <_requestProcessLogsRetrieve+0xce>
	require_action( inCnx->logs, exit, status = kHTTPStatus_NotFound );
    e88641c6:	19400493          	li	s1,404
    e88641ca:	b7b1                	j	e8864116 <_requestProcessLogsRetrieve+0x32>

00000000e88641cc <_FinalizeLogs>:
{
    e88641cc:	1141                	addi	sp,sp,-16
    e88641ce:	e022                	sd	s0,0(sp)
    e88641d0:	e406                	sd	ra,8(sp)
    e88641d2:	842a                	mv	s0,a0
	ForgetCF( &inLogs->server );
    e88641d4:	6508                	ld	a0,8(a0)
    e88641d6:	c509                	beqz	a0,e88641e0 <_FinalizeLogs+0x14>
    e88641d8:	f73e20ef          	jal	ra,e884714a <CFRelease>
    e88641dc:	00043423          	sd	zero,8(s0)
	if( inLogs->dataBuffer )
    e88641e0:	7008                	ld	a0,32(s0)
    e88641e2:	c509                	beqz	a0,e88641ec <_FinalizeLogs+0x20>
		DataBuffer_Free( inLogs->dataBuffer );
    e88641e4:	f23e90ef          	jal	ra,e884e106 <DataBuffer_Free>
		inLogs->dataBuffer = NULL;
    e88641e8:	02043023          	sd	zero,32(s0)
}
    e88641ec:	60a2                	ld	ra,8(sp)
    e88641ee:	6402                	ld	s0,0(sp)
    e88641f0:	0141                	addi	sp,sp,16
    e88641f2:	8082                	ret

00000000e88641f4 <_requestProcessRecord>:
//===========================================================================================================================
//	_requestProcessRecord
//===========================================================================================================================

static HTTPStatus _requestProcessRecord( AirPlayReceiverConnectionRef inCnx, HTTPMessageRef inRequest )
{
    e88641f4:	7135                	addi	sp,sp,-160
    e88641f6:	e922                	sd	s0,144(sp)
    e88641f8:	842a                	mv	s0,a0
	size_t								nameLen;
	const char *						valuePtr;
	size_t								valueLen;
	AirPlayReceiverSessionStartInfo		startInfo;
	
	aprs_ulog( kAirPlayPhaseLogLevel, "Record\n" );
    e88641fa:	00071517          	auipc	a0,0x71
    e88641fe:	fa650513          	addi	a0,a0,-90 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
{
    e8864202:	e526                	sd	s1,136(sp)
    e8864204:	ed06                	sd	ra,152(sp)
    e8864206:	e14a                	sd	s2,128(sp)
    e8864208:	fcce                	sd	s3,120(sp)
    e886420a:	f8d2                	sd	s4,112(sp)
    e886420c:	f4d6                	sd	s5,104(sp)
	aprs_ulog( kAirPlayPhaseLogLevel, "Record\n" );
    e886420e:	411c                	lw	a5,0(a0)
    e8864210:	02800713          	li	a4,40
{
    e8864214:	84ae                	mv	s1,a1
	aprs_ulog( kAirPlayPhaseLogLevel, "Record\n" );
    e8864216:	02f74563          	blt	a4,a5,e8864240 <_requestProcessRecord+0x4c>
    e886421a:	577d                	li	a4,-1
    e886421c:	06e78863          	beq	a5,a4,e886428c <_requestProcessRecord+0x98>
    e8864220:	00065697          	auipc	a3,0x65
    e8864224:	5a068693          	addi	a3,a3,1440 # e88c97c0 <__PRETTY_FUNCTION__.14166+0xd0>
    e8864228:	02800613          	li	a2,40
    e886422c:	00065597          	auipc	a1,0x65
    e8864230:	44458593          	addi	a1,a1,1092 # e88c9670 <__PRETTY_FUNCTION__.14090>
    e8864234:	00071517          	auipc	a0,0x71
    e8864238:	f6c50513          	addi	a0,a0,-148 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e886423c:	a38f00ef          	jal	ra,e8854474 <LogPrintF>
	
	if( !AirPlayReceiverConnectionDidSetup( inCnx ) )
    e8864240:	7c5c                	ld	a5,184(s0)
    e8864242:	0ffff737          	lui	a4,0xffff
    e8864246:	0772                	slli	a4,a4,0x1c
    e8864248:	8ff9                	and	a5,a5,a4
    e886424a:	e7b9                	bnez	a5,e8864298 <_requestProcessRecord+0xa4>
	{
		dlogassert( "RECORD not allowed before SETUP" );
    e886424c:	6705                	lui	a4,0x1
    e886424e:	00065797          	auipc	a5,0x65
    e8864252:	42278793          	addi	a5,a5,1058 # e88c9670 <__PRETTY_FUNCTION__.14090>
    e8864256:	00065817          	auipc	a6,0x65
    e886425a:	57280813          	addi	a6,a6,1394 # e88c97c8 <__PRETTY_FUNCTION__.14166+0xd8>
    e886425e:	c2570713          	addi	a4,a4,-987 # c25 <memcmp-0xe87ff3db>
    e8864262:	00065697          	auipc	a3,0x65
    e8864266:	58668693          	addi	a3,a3,1414 # e88c97e8 <__PRETTY_FUNCTION__.14166+0xf8>
    e886426a:	4601                	li	a2,0
    e886426c:	4581                	li	a1,0
    e886426e:	4501                	li	a0,0
    e8864270:	958ea0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		status = kHTTPStatus_MethodNotValidInThisState;
    e8864274:	1c700793          	li	a5,455
	inCnx->didRecord = true;
	status = kHTTPStatus_OK;
	
exit:
	return( status );
}
    e8864278:	60ea                	ld	ra,152(sp)
    e886427a:	644a                	ld	s0,144(sp)
    e886427c:	64aa                	ld	s1,136(sp)
    e886427e:	690a                	ld	s2,128(sp)
    e8864280:	79e6                	ld	s3,120(sp)
    e8864282:	7a46                	ld	s4,112(sp)
    e8864284:	7aa6                	ld	s5,104(sp)
    e8864286:	853e                	mv	a0,a5
    e8864288:	610d                	addi	sp,sp,160
    e886428a:	8082                	ret
	aprs_ulog( kAirPlayPhaseLogLevel, "Record\n" );
    e886428c:	02800593          	li	a1,40
    e8864290:	de3ef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8864294:	d555                	beqz	a0,e8864240 <_requestProcessRecord+0x4c>
    e8864296:	b769                	j	e8864220 <_requestProcessRecord+0x2c>
	memset( &startInfo, 0, sizeof( startInfo ) );
    e8864298:	02800613          	li	a2,40
    e886429c:	4581                	li	a1,0
    e886429e:	1828                	addi	a0,sp,56
    e88642a0:	0f4180ef          	jal	ra,e887c394 <eLIBs_memset>
	src = NULL;
    e88642a4:	e402                	sd	zero,8(sp)
	startInfo.clientName	= inCnx->clientName;
    e88642a6:	02e40793          	addi	a5,s0,46
    e88642aa:	fc3e                	sd	a5,56(sp)
	startInfo.transportType	= inCnx->httpCnx->transportType;
    e88642ac:	641c                	ld	a5,8(s0)
	GetHeaderValue( inRequest, kAirPlayHTTPHeader_Durations, &src, &len );
    e88642ae:	4104b583          	ld	a1,1040(s1)
    e88642b2:	01048513          	addi	a0,s1,16
	startInfo.transportType	= inCnx->httpCnx->transportType;
    e88642b6:	0847a783          	lw	a5,132(a5)
	GetHeaderValue( inRequest, kAirPlayHTTPHeader_Durations, &src, &len );
    e88642ba:	4881                	li	a7,0
    e88642bc:	01010813          	addi	a6,sp,16
	startInfo.transportType	= inCnx->httpCnx->transportType;
    e88642c0:	c0be                	sw	a5,64(sp)
	GetHeaderValue( inRequest, kAirPlayHTTPHeader_Durations, &src, &len );
    e88642c2:	4701                	li	a4,0
    e88642c4:	003c                	addi	a5,sp,8
    e88642c6:	4681                	li	a3,0
    e88642c8:	00065617          	auipc	a2,0x65
    e88642cc:	5d060613          	addi	a2,a2,1488 # e88c9898 <__PRETTY_FUNCTION__.14166+0x1a8>
	len = 0;
    e88642d0:	e802                	sd	zero,16(sp)
	GetHeaderValue( inRequest, kAirPlayHTTPHeader_Durations, &src, &len );
    e88642d2:	d0bed0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
	end = src + len;
    e88642d6:	64a2                	ld	s1,8(sp)
    e88642d8:	67c2                	ld	a5,16(sp)
		if(      strnicmpx( namePtr, nameLen, "b" )  == 0 ) startInfo.bonjourMs		= TextToInt32( valuePtr, valueLen, 10 );
    e88642da:	0006e917          	auipc	s2,0x6e
    e88642de:	ffe90913          	addi	s2,s2,-2 # e88d22d8 <tcp_persist_backoff+0xd68>
		else if( strnicmpx( namePtr, nameLen, "c" )  == 0 ) startInfo.connectMs		= TextToInt32( valuePtr, valueLen, 10 );
    e88642e2:	00070997          	auipc	s3,0x70
    e88642e6:	a3698993          	addi	s3,s3,-1482 # e88d3d18 <dhcp_discover_request_options+0x510>
	end = src + len;
    e88642ea:	94be                	add	s1,s1,a5
		else if( strnicmpx( namePtr, nameLen, "au" ) == 0 ) startInfo.authMs		= TextToInt32( valuePtr, valueLen, 10 );
    e88642ec:	00065a17          	auipc	s4,0x65
    e88642f0:	5c4a0a13          	addi	s4,s4,1476 # e88c98b0 <__PRETTY_FUNCTION__.14166+0x1c0>
		else if( strnicmpx( namePtr, nameLen, "an" ) == 0 ) startInfo.announceMs	= TextToInt32( valuePtr, valueLen, 10 );
    e88642f4:	0005aa97          	auipc	s5,0x5a
    e88642f8:	644a8a93          	addi	s5,s5,1604 # e88be938 <kCFLRuntimeClassTable+0x148>
	while( HTTPParseParameter( src, end, &namePtr, &nameLen, &valuePtr, &valueLen, NULL, &src ) == kNoErr )
    e88642fc:	6522                	ld	a0,8(sp)
    e88642fe:	00810893          	addi	a7,sp,8
    e8864302:	4801                	li	a6,0
    e8864304:	181c                	addi	a5,sp,48
    e8864306:	1038                	addi	a4,sp,40
    e8864308:	1014                	addi	a3,sp,32
    e886430a:	0830                	addi	a2,sp,24
    e886430c:	85a6                	mv	a1,s1
    e886430e:	ebded0ef          	jal	ra,e88521ca <HTTPParseParameter>
    e8864312:	cd1d                	beqz	a0,e8864350 <_requestProcessRecord+0x15c>
	err = AirPlayReceiverSessionStart( 
    e8864314:	6808                	ld	a0,16(s0)
    e8864316:	182c                	addi	a1,sp,56
    e8864318:	048090ef          	jal	ra,e886d360 <AirPlayReceiverSessionStart>
	if( AirPlayIsBusyError( err ) ) { status = kHTTPStatus_NotEnoughBandwidth; goto exit; }
    e886431c:	00031737          	lui	a4,0x31
    e8864320:	f0570713          	addi	a4,a4,-251 # 30f05 <memcmp-0xe87cf0fb>
    e8864324:	1c500793          	li	a5,453
    e8864328:	f4e508e3          	beq	a0,a4,e8864278 <_requestProcessRecord+0x84>
    e886432c:	1c500713          	li	a4,453
    e8864330:	f4e504e3          	beq	a0,a4,e8864278 <_requestProcessRecord+0x84>
    e8864334:	7779                	lui	a4,0xffffe
    e8864336:	5bf70713          	addi	a4,a4,1471 # ffffffffffffe5bf <__DRAM0_INF_BASE+0xffffffff0000e5bf>
    e886433a:	f2e50fe3          	beq	a0,a4,e8864278 <_requestProcessRecord+0x84>
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e886433e:	1f400793          	li	a5,500
    e8864342:	f91d                	bnez	a0,e8864278 <_requestProcessRecord+0x84>
	inCnx->didRecord = true;
    e8864344:	4785                	li	a5,1
    e8864346:	0af40fa3          	sb	a5,191(s0)
	status = kHTTPStatus_OK;
    e886434a:	0c800793          	li	a5,200
    e886434e:	b72d                	j	e8864278 <_requestProcessRecord+0x84>
		if(      strnicmpx( namePtr, nameLen, "b" )  == 0 ) startInfo.bonjourMs		= TextToInt32( valuePtr, valueLen, 10 );
    e8864350:	7582                	ld	a1,32(sp)
    e8864352:	6562                	ld	a0,24(sp)
    e8864354:	864a                	mv	a2,s2
    e8864356:	e06fb0ef          	jal	ra,e885f95c <strnicmpx>
    e886435a:	e901                	bnez	a0,e886436a <_requestProcessRecord+0x176>
    e886435c:	75c2                	ld	a1,48(sp)
    e886435e:	7522                	ld	a0,40(sp)
    e8864360:	4629                	li	a2,10
    e8864362:	8f4fb0ef          	jal	ra,e885f456 <TextToInt32>
    e8864366:	c2aa                	sw	a0,68(sp)
    e8864368:	bf51                	j	e88642fc <_requestProcessRecord+0x108>
		else if( strnicmpx( namePtr, nameLen, "c" )  == 0 ) startInfo.connectMs		= TextToInt32( valuePtr, valueLen, 10 );
    e886436a:	7582                	ld	a1,32(sp)
    e886436c:	6562                	ld	a0,24(sp)
    e886436e:	864e                	mv	a2,s3
    e8864370:	decfb0ef          	jal	ra,e885f95c <strnicmpx>
    e8864374:	e901                	bnez	a0,e8864384 <_requestProcessRecord+0x190>
    e8864376:	75c2                	ld	a1,48(sp)
    e8864378:	7522                	ld	a0,40(sp)
    e886437a:	4629                	li	a2,10
    e886437c:	8dafb0ef          	jal	ra,e885f456 <TextToInt32>
    e8864380:	c4aa                	sw	a0,72(sp)
    e8864382:	bfad                	j	e88642fc <_requestProcessRecord+0x108>
		else if( strnicmpx( namePtr, nameLen, "au" ) == 0 ) startInfo.authMs		= TextToInt32( valuePtr, valueLen, 10 );
    e8864384:	7582                	ld	a1,32(sp)
    e8864386:	6562                	ld	a0,24(sp)
    e8864388:	8652                	mv	a2,s4
    e886438a:	dd2fb0ef          	jal	ra,e885f95c <strnicmpx>
    e886438e:	e901                	bnez	a0,e886439e <_requestProcessRecord+0x1aa>
    e8864390:	75c2                	ld	a1,48(sp)
    e8864392:	7522                	ld	a0,40(sp)
    e8864394:	4629                	li	a2,10
    e8864396:	8c0fb0ef          	jal	ra,e885f456 <TextToInt32>
    e886439a:	c6aa                	sw	a0,76(sp)
    e886439c:	b785                	j	e88642fc <_requestProcessRecord+0x108>
		else if( strnicmpx( namePtr, nameLen, "an" ) == 0 ) startInfo.announceMs	= TextToInt32( valuePtr, valueLen, 10 );
    e886439e:	7582                	ld	a1,32(sp)
    e88643a0:	6562                	ld	a0,24(sp)
    e88643a2:	8656                	mv	a2,s5
    e88643a4:	db8fb0ef          	jal	ra,e885f95c <strnicmpx>
    e88643a8:	e901                	bnez	a0,e88643b8 <_requestProcessRecord+0x1c4>
    e88643aa:	75c2                	ld	a1,48(sp)
    e88643ac:	7522                	ld	a0,40(sp)
    e88643ae:	4629                	li	a2,10
    e88643b0:	8a6fb0ef          	jal	ra,e885f456 <TextToInt32>
    e88643b4:	c8aa                	sw	a0,80(sp)
    e88643b6:	b799                	j	e88642fc <_requestProcessRecord+0x108>
		else if( strnicmpx( namePtr, nameLen, "sa" ) == 0 ) startInfo.setupAudioMs	= TextToInt32( valuePtr, valueLen, 10 );
    e88643b8:	7582                	ld	a1,32(sp)
    e88643ba:	6562                	ld	a0,24(sp)
    e88643bc:	00065617          	auipc	a2,0x65
    e88643c0:	4fc60613          	addi	a2,a2,1276 # e88c98b8 <__PRETTY_FUNCTION__.14166+0x1c8>
    e88643c4:	d98fb0ef          	jal	ra,e885f95c <strnicmpx>
    e88643c8:	e901                	bnez	a0,e88643d8 <_requestProcessRecord+0x1e4>
    e88643ca:	75c2                	ld	a1,48(sp)
    e88643cc:	7522                	ld	a0,40(sp)
    e88643ce:	4629                	li	a2,10
    e88643d0:	886fb0ef          	jal	ra,e885f456 <TextToInt32>
    e88643d4:	caaa                	sw	a0,84(sp)
    e88643d6:	b71d                	j	e88642fc <_requestProcessRecord+0x108>
		else if( strnicmpx( namePtr, nameLen, "ss" ) == 0 ) startInfo.setupScreenMs	= TextToInt32( valuePtr, valueLen, 10 );
    e88643d8:	7582                	ld	a1,32(sp)
    e88643da:	6562                	ld	a0,24(sp)
    e88643dc:	0006b617          	auipc	a2,0x6b
    e88643e0:	e2c60613          	addi	a2,a2,-468 # e88cf208 <err_to_errno_table+0x130>
    e88643e4:	d78fb0ef          	jal	ra,e885f95c <strnicmpx>
    e88643e8:	f0051ae3          	bnez	a0,e88642fc <_requestProcessRecord+0x108>
    e88643ec:	75c2                	ld	a1,48(sp)
    e88643ee:	7522                	ld	a0,40(sp)
    e88643f0:	4629                	li	a2,10
    e88643f2:	864fb0ef          	jal	ra,e885f456 <TextToInt32>
    e88643f6:	ccaa                	sw	a0,88(sp)
    e88643f8:	b711                	j	e88642fc <_requestProcessRecord+0x108>

00000000e88643fa <_DestroyConnection>:
{
    e88643fa:	1141                	addi	sp,sp,-16
    e88643fc:	e022                	sd	s0,0(sp)
    e88643fe:	e406                	sd	ra,8(sp)
    e8864400:	842a                	mv	s0,a0
	HTTPConnectionStop( inCnx );
    e8864402:	fdfec0ef          	jal	ra,e88513e0 <HTTPConnectionStop>
	if( inCnx->selfAddr.sa.sa_family != AF_UNSPEC )
    e8864406:	0a544783          	lbu	a5,165(s0)
    e886440a:	c3a9                	beqz	a5,e886444c <_DestroyConnection+0x52>
		aprs_ulog( kLogLevelInfo, "Closing  connection from %##a to %##a\n", &inCnx->peerAddr, &inCnx->selfAddr );
    e886440c:	00071517          	auipc	a0,0x71
    e8864410:	d9450513          	addi	a0,a0,-620 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864414:	411c                	lw	a5,0(a0)
    e8864416:	02800713          	li	a4,40
    e886441a:	02f74963          	blt	a4,a5,e886444c <_DestroyConnection+0x52>
    e886441e:	577d                	li	a4,-1
    e8864420:	02e78c63          	beq	a5,a4,e8864458 <_DestroyConnection+0x5e>
    e8864424:	0a440793          	addi	a5,s0,164
    e8864428:	0c040713          	addi	a4,s0,192
    e886442c:	0005d697          	auipc	a3,0x5d
    e8864430:	b7c68693          	addi	a3,a3,-1156 # e88c0fa8 <kHTTPMessageClass+0xf8>
    e8864434:	02800613          	li	a2,40
    e8864438:	00065597          	auipc	a1,0x65
    e886443c:	0f058593          	addi	a1,a1,240 # e88c9528 <__PRETTY_FUNCTION__.13854>
    e8864440:	00071517          	auipc	a0,0x71
    e8864444:	d6050513          	addi	a0,a0,-672 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864448:	82cf00ef          	jal	ra,e8854474 <LogPrintF>
	CFRelease( inCnx );
    e886444c:	8522                	mv	a0,s0
}
    e886444e:	6402                	ld	s0,0(sp)
    e8864450:	60a2                	ld	ra,8(sp)
    e8864452:	0141                	addi	sp,sp,16
	CFRelease( inCnx );
    e8864454:	cf7e206f          	j	e884714a <CFRelease>
		aprs_ulog( kLogLevelInfo, "Closing  connection from %##a to %##a\n", &inCnx->peerAddr, &inCnx->selfAddr );
    e8864458:	02800593          	li	a1,40
    e886445c:	c17ef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8864460:	d575                	beqz	a0,e886444c <_DestroyConnection+0x52>
    e8864462:	b7c9                	j	e8864424 <_DestroyConnection+0x2a>

00000000e8864464 <_HandleHTTPConnectionClose>:
{
    e8864464:	1141                	addi	sp,sp,-16
    e8864466:	e406                	sd	ra,8(sp)
    e8864468:	e022                	sd	s0,0(sp)
	session	= cnx->session;
    e886446a:	6980                	ld	s0,16(a1)
	cnx->session = NULL;
    e886446c:	0005b823          	sd	zero,16(a1)
	if( session )
    e8864470:	c825                	beqz	s0,e88644e0 <_HandleHTTPConnectionClose+0x7c>
		if(	( session->mainAudioCtx.type == kAirPlayStreamType_Invalid )
    e8864472:	46042703          	lw	a4,1120(s0)
	Boolean									allStreamsTornDown = false;
    e8864476:	4781                	li	a5,0
		if(	( session->mainAudioCtx.type == kAirPlayStreamType_Invalid )
    e8864478:	ef01                	bnez	a4,e8864490 <_HandleHTTPConnectionClose+0x2c>
			&& ( session->altAudioCtx.type  == kAirPlayStreamType_Invalid )
    e886447a:	6705                	lui	a4,0x1
    e886447c:	9722                	add	a4,a4,s0
    e886447e:	bd872703          	lw	a4,-1064(a4) # bd8 <memcmp-0xe87ff428>
    e8864482:	e719                	bnez	a4,e8864490 <_HandleHTTPConnectionClose+0x2c>
			&& !session->screenInitialized
    e8864484:	6789                	lui	a5,0x2
    e8864486:	97a2                	add	a5,a5,s0
    e8864488:	9387c783          	lbu	a5,-1736(a5) # 1938 <memcmp-0xe87fe6c8>
	Boolean									allStreamsTornDown = false;
    e886448c:	0017b793          	seqz	a5,a5
		AirPlayReceiverSessionTearDown( session, NULL, ( !cnx->didAnnounce || allStreamsTornDown ) ? kNoErr : kConnectionErr, NULL );
    e8864490:	0bc5c703          	lbu	a4,188(a1)
    e8864494:	4601                	li	a2,0
    e8864496:	c709                	beqz	a4,e88644a0 <_HandleHTTPConnectionClose+0x3c>
    e8864498:	e781                	bnez	a5,e88644a0 <_HandleHTTPConnectionClose+0x3c>
    e886449a:	7679                	lui	a2,0xffffe
    e886449c:	59f60613          	addi	a2,a2,1439 # ffffffffffffe59f <__DRAM0_INF_BASE+0xffffffff0000e59f>
    e88644a0:	8522                	mv	a0,s0
    e88644a2:	4681                	li	a3,0
    e88644a4:	4581                	li	a1,0
    e88644a6:	6ae080ef          	jal	ra,e886cb54 <AirPlayReceiverSessionTearDown>
        if (session->server) {
    e88644aa:	6808                	ld	a0,16(s0)
    e88644ac:	c505                	beqz	a0,e88644d4 <_HandleHTTPConnectionClose+0x70>
            AirPlayReceiverServerSetBoolean( session->server, CFSTR( kAirPlayProperty_Playing ), NULL, false );
    e88644ae:	00071797          	auipc	a5,0x71
    e88644b2:	81a78793          	addi	a5,a5,-2022 # e88d4cc8 <kCFLBooleanFalse>
    e88644b6:	0007b803          	ld	a6,0(a5)
    e88644ba:	00039717          	auipc	a4,0x39
    e88644be:	5d670713          	addi	a4,a4,1494 # e889da90 <icmp6_param_problem+0xa22>
    e88644c2:	4781                	li	a5,0
    e88644c4:	4685                	li	a3,1
    e88644c6:	00001617          	auipc	a2,0x1
    e88644ca:	40260613          	addi	a2,a2,1026 # e88658c8 <AirPlayReceiverServerSetProperty>
    e88644ce:	4581                	li	a1,0
    e88644d0:	b68e70ef          	jal	ra,e884b838 <CFObjectSetProperty>
		CFRelease( session );
    e88644d4:	8522                	mv	a0,s0
}
    e88644d6:	6402                	ld	s0,0(sp)
    e88644d8:	60a2                	ld	ra,8(sp)
    e88644da:	0141                	addi	sp,sp,16
		CFRelease( session );
    e88644dc:	c6fe206f          	j	e884714a <CFRelease>
}
    e88644e0:	60a2                	ld	ra,8(sp)
    e88644e2:	6402                	ld	s0,0(sp)
    e88644e4:	0141                	addi	sp,sp,16
    e88644e6:	8082                	ret

00000000e88644e8 <_tearDownNetworkListener>:
		AirPlayReceiverServerControl( cnx->server, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), cnx->session, NULL, NULL );
	}
}
*/
static void	_tearDownNetworkListener( void *inContext)
{
    e88644e8:	1141                	addi	sp,sp,-16
    e88644ea:	e022                	sd	s0,0(sp)
    e88644ec:	e406                	sd	ra,8(sp)
    e88644ee:	842a                	mv	s0,a0
	AirPlayReceiverConnectionRef cnx = (AirPlayReceiverConnectionRef) inContext;
	if( cnx->networkChangeListener )
    e88644f0:	6d08                	ld	a0,24(a0)
    e88644f2:	cd11                	beqz	a0,e886450e <_tearDownNetworkListener+0x26>
	{
		NetworkChangeListenerSetHandler( cnx->networkChangeListener, NULL, NULL );
    e88644f4:	4601                	li	a2,0
    e88644f6:	4581                	li	a1,0
    e88644f8:	901f20ef          	jal	ra,e8856df8 <NetworkChangeListenerSetHandler>
		NetworkChangeListenerStop( cnx->networkChangeListener );
    e88644fc:	6c08                	ld	a0,24(s0)
    e88644fe:	901f20ef          	jal	ra,e8856dfe <NetworkChangeListenerStop>
		ForgetCF( &cnx->networkChangeListener );
    e8864502:	6c08                	ld	a0,24(s0)
    e8864504:	c509                	beqz	a0,e886450e <_tearDownNetworkListener+0x26>
    e8864506:	c45e20ef          	jal	ra,e884714a <CFRelease>
    e886450a:	00043c23          	sd	zero,24(s0)
	}
}
    e886450e:	60a2                	ld	ra,8(sp)
    e8864510:	6402                	ld	s0,0(sp)
    e8864512:	0141                	addi	sp,sp,16
    e8864514:	8082                	ret

00000000e8864516 <_HandleHTTPConnectionFinalize>:
{
    e8864516:	1141                	addi	sp,sp,-16
	_tearDownNetworkListener( cnx );
    e8864518:	852e                	mv	a0,a1
	cnx->server = NULL;
    e886451a:	0005b023          	sd	zero,0(a1)
{
    e886451e:	e022                	sd	s0,0(sp)
    e8864520:	e406                	sd	ra,8(sp)
    e8864522:	842e                	mv	s0,a1
	_tearDownNetworkListener( cnx );
    e8864524:	fc5ff0ef          	jal	ra,e88644e8 <_tearDownNetworkListener>
	ForgetCF( &cnx->pairSetupSessionHomeKit );
    e8864528:	7468                	ld	a0,232(s0)
    e886452a:	c509                	beqz	a0,e8864534 <_HandleHTTPConnectionFinalize+0x1e>
    e886452c:	c1fe20ef          	jal	ra,e884714a <CFRelease>
    e8864530:	0e043423          	sd	zero,232(s0)
	ForgetCF( &cnx->pairVerifySessionHomeKit );
    e8864534:	7868                	ld	a0,240(s0)
    e8864536:	c509                	beqz	a0,e8864540 <_HandleHTTPConnectionFinalize+0x2a>
    e8864538:	c13e20ef          	jal	ra,e884714a <CFRelease>
    e886453c:	0e043823          	sd	zero,240(s0)
	ForgetCF( &cnx->logs );
    e8864540:	6868                	ld	a0,208(s0)
    e8864542:	c509                	beqz	a0,e886454c <_HandleHTTPConnectionFinalize+0x36>
    e8864544:	c07e20ef          	jal	ra,e884714a <CFRelease>
    e8864548:	0c043823          	sd	zero,208(s0)
	if( cnx->MFiSAP )
    e886454c:	6c68                	ld	a0,216(s0)
    e886454e:	c519                	beqz	a0,e886455c <_HandleHTTPConnectionFinalize+0x46>
		MFiSAP_Delete( cnx->MFiSAP );
    e8864550:	a42f00ef          	jal	ra,e8854792 <MFiSAP_Delete>
		cnx->MFiSAP = NULL;
    e8864554:	0c043c23          	sd	zero,216(s0)
		cnx->MFiSAPDone = false;
    e8864558:	0e040023          	sb	zero,224(s0)
}
    e886455c:	60a2                	ld	ra,8(sp)
    e886455e:	6402                	ld	s0,0(sp)
    e8864560:	0141                	addi	sp,sp,16
    e8864562:	8082                	ret

00000000e8864564 <_HandlePairVerifyHomeKitCompletion>:
	HTTPConnectionRef				httpCnx	= (HTTPConnectionRef) inMsg->userContext1;
    e8864564:	6785                	lui	a5,0x1
{
    e8864566:	7135                	addi	sp,sp,-160
	HTTPConnectionRef				httpCnx	= (HTTPConnectionRef) inMsg->userContext1;
    e8864568:	953e                	add	a0,a0,a5
{
    e886456a:	ed06                	sd	ra,152(sp)
    e886456c:	e922                	sd	s0,144(sp)
    e886456e:	e526                	sd	s1,136(sp)
    e8864570:	e14a                	sd	s2,128(sp)
    e8864572:	fcce                	sd	s3,120(sp)
    e8864574:	f8d2                	sd	s4,112(sp)
	HTTPConnectionRef				httpCnx	= (HTTPConnectionRef) inMsg->userContext1;
    e8864576:	9b053983          	ld	s3,-1616(a0)
	AirPlayReceiverConnectionRef	cnx		= httpCnx->delegate.context;
    e886457a:	0209b483          	ld	s1,32(s3)
	require_action( cnx->pairVerifySessionHomeKit, exit, err = kNotPreparedErr );
    e886457e:	78e8                	ld	a0,240(s1)
    e8864580:	cd79                	beqz	a0,e886465e <_HandlePairVerifyHomeKitCompletion+0xfa>
	err = PairingSessionDeriveKey( cnx->pairVerifySessionHomeKit, kAirPlayPairingControlKeySaltPtr, kAirPlayPairingControlKeySaltLen, 
    e8864582:	00810813          	addi	a6,sp,8
    e8864586:	02000793          	li	a5,32
    e886458a:	476d                	li	a4,27
    e886458c:	00065697          	auipc	a3,0x65
    e8864590:	c1c68693          	addi	a3,a3,-996 # e88c91a8 <__PRETTY_FUNCTION__.13159+0x4b8>
    e8864594:	4631                	li	a2,12
    e8864596:	00065597          	auipc	a1,0x65
    e886459a:	c3258593          	addi	a1,a1,-974 # e88c91c8 <__PRETTY_FUNCTION__.13159+0x4d8>
    e886459e:	c70f30ef          	jal	ra,e8857a0e <PairingSessionDeriveKey>
    e88645a2:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88645a4:	e161                	bnez	a0,e8864664 <_HandlePairVerifyHomeKitCompletion+0x100>
	err = PairingSessionDeriveKey( cnx->pairVerifySessionHomeKit, kAirPlayPairingControlKeySaltPtr, kAirPlayPairingControlKeySaltLen, 
    e88645a6:	78e8                	ld	a0,240(s1)
    e88645a8:	02810913          	addi	s2,sp,40
    e88645ac:	884a                	mv	a6,s2
    e88645ae:	02000793          	li	a5,32
    e88645b2:	4771                	li	a4,28
    e88645b4:	00065697          	auipc	a3,0x65
    e88645b8:	c2468693          	addi	a3,a3,-988 # e88c91d8 <__PRETTY_FUNCTION__.13159+0x4e8>
    e88645bc:	4631                	li	a2,12
    e88645be:	00065597          	auipc	a1,0x65
    e88645c2:	c0a58593          	addi	a1,a1,-1014 # e88c91c8 <__PRETTY_FUNCTION__.13159+0x4d8>
    e88645c6:	c48f30ef          	jal	ra,e8857a0e <PairingSessionDeriveKey>
    e88645ca:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88645cc:	ed41                	bnez	a0,e8864664 <_HandlePairVerifyHomeKitCompletion+0x100>
	err = NetTransportChaCha20Poly1305Configure( &delegate, aprs_http_ucat(), writeKey, NULL, readKey, NULL );
    e88645ce:	04810a13          	addi	s4,sp,72
    e88645d2:	4781                	li	a5,0
    e88645d4:	0038                	addi	a4,sp,8
    e88645d6:	4681                	li	a3,0
    e88645d8:	864a                	mv	a2,s2
    e88645da:	00071597          	auipc	a1,0x71
    e88645de:	c2658593          	addi	a1,a1,-986 # e88d5200 <gLogCategory_AirPlayReceiverServerHTTP>
    e88645e2:	8552                	mv	a0,s4
    e88645e4:	c61f00ef          	jal	ra,e8855244 <NetTransportChaCha20Poly1305Configure>
    e88645e8:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88645ea:	ed2d                	bnez	a0,e8864664 <_HandlePairVerifyHomeKitCompletion+0x100>
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e88645ec:	002c                	addi	a1,sp,8
	while( inLen-- ) *ptr++ = 0;
    e88645ee:	1815d00b          	sbia	zero,(a1),1,0
    e88645f2:	ff259ee3          	bne	a1,s2,e88645ee <_HandlePairVerifyHomeKitCompletion+0x8a>
    e88645f6:	1815d00b          	sbia	zero,(a1),1,0
    e88645fa:	ff459ee3          	bne	a1,s4,e88645f6 <_HandlePairVerifyHomeKitCompletion+0x92>
	HTTPConnectionSetTransportDelegate( cnx->httpCnx, &delegate );
    e88645fe:	6488                	ld	a0,8(s1)
    e8864600:	e86ed0ef          	jal	ra,e8851c86 <HTTPConnectionSetTransportDelegate>
	cnx->pairingVerified = true;
    e8864604:	4785                	li	a5,1
	aprs_ulog( kLogLevelTrace, "Pair-verify HK succeeded\n" );
    e8864606:	00071517          	auipc	a0,0x71
    e886460a:	b9a50513          	addi	a0,a0,-1126 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
	cnx->pairingVerified = true;
    e886460e:	0ef48c23          	sb	a5,248(s1)
	aprs_ulog( kLogLevelTrace, "Pair-verify HK succeeded\n" );
    e8864612:	411c                	lw	a5,0(a0)
    e8864614:	4779                	li	a4,30
    e8864616:	02f74463          	blt	a4,a5,e886463e <_HandlePairVerifyHomeKitCompletion+0xda>
    e886461a:	577d                	li	a4,-1
    e886461c:	02e78c63          	beq	a5,a4,e8864654 <_HandlePairVerifyHomeKitCompletion+0xf0>
    e8864620:	00065697          	auipc	a3,0x65
    e8864624:	bd868693          	addi	a3,a3,-1064 # e88c91f8 <__PRETTY_FUNCTION__.13159+0x508>
    e8864628:	4679                	li	a2,30
    e886462a:	00065597          	auipc	a1,0x65
    e886462e:	fd658593          	addi	a1,a1,-42 # e88c9600 <__PRETTY_FUNCTION__.14051>
    e8864632:	00071517          	auipc	a0,0x71
    e8864636:	b6e50513          	addi	a0,a0,-1170 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e886463a:	e3bef0ef          	jal	ra,e8854474 <LogPrintF>
	CFRelease( httpCnx );
    e886463e:	854e                	mv	a0,s3
    e8864640:	b0be20ef          	jal	ra,e884714a <CFRelease>
}
    e8864644:	644a                	ld	s0,144(sp)
    e8864646:	60ea                	ld	ra,152(sp)
    e8864648:	64aa                	ld	s1,136(sp)
    e886464a:	690a                	ld	s2,128(sp)
    e886464c:	79e6                	ld	s3,120(sp)
    e886464e:	7a46                	ld	s4,112(sp)
    e8864650:	610d                	addi	sp,sp,160
    e8864652:	8082                	ret
	aprs_ulog( kLogLevelTrace, "Pair-verify HK succeeded\n" );
    e8864654:	45f9                	li	a1,30
    e8864656:	a1def0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886465a:	d175                	beqz	a0,e886463e <_HandlePairVerifyHomeKitCompletion+0xda>
    e886465c:	b7d1                	j	e8864620 <_HandlePairVerifyHomeKitCompletion+0xbc>
	require_action( cnx->pairVerifySessionHomeKit, exit, err = kNotPreparedErr );
    e886465e:	7479                	lui	s0,0xffffe
    e8864660:	5a740413          	addi	s0,s0,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
		ForgetCF( &cnx->pairVerifySessionHomeKit );
    e8864664:	78e8                	ld	a0,240(s1)
    e8864666:	c509                	beqz	a0,e8864670 <_HandlePairVerifyHomeKitCompletion+0x10c>
    e8864668:	ae3e20ef          	jal	ra,e884714a <CFRelease>
    e886466c:	0e04b823          	sd	zero,240(s1)
		aprs_ulog( kLogLevelWarning, "### Pair-verify HK completion failed: %#m\n", err );
    e8864670:	00071517          	auipc	a0,0x71
    e8864674:	b3050513          	addi	a0,a0,-1232 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864678:	411c                	lw	a5,0(a0)
    e886467a:	03c00713          	li	a4,60
    e886467e:	fcf740e3          	blt	a4,a5,e886463e <_HandlePairVerifyHomeKitCompletion+0xda>
    e8864682:	577d                	li	a4,-1
    e8864684:	02e78463          	beq	a5,a4,e88646ac <_HandlePairVerifyHomeKitCompletion+0x148>
    e8864688:	8722                	mv	a4,s0
    e886468a:	00065697          	auipc	a3,0x65
    e886468e:	b8e68693          	addi	a3,a3,-1138 # e88c9218 <__PRETTY_FUNCTION__.13159+0x528>
    e8864692:	03c00613          	li	a2,60
    e8864696:	00065597          	auipc	a1,0x65
    e886469a:	f6a58593          	addi	a1,a1,-150 # e88c9600 <__PRETTY_FUNCTION__.14051>
    e886469e:	00071517          	auipc	a0,0x71
    e88646a2:	b0250513          	addi	a0,a0,-1278 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88646a6:	dcfef0ef          	jal	ra,e8854474 <LogPrintF>
    e88646aa:	bf51                	j	e886463e <_HandlePairVerifyHomeKitCompletion+0xda>
    e88646ac:	03c00593          	li	a1,60
    e88646b0:	9c3ef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88646b4:	d549                	beqz	a0,e886463e <_HandlePairVerifyHomeKitCompletion+0xda>
    e88646b6:	bfc9                	j	e8864688 <_HandlePairVerifyHomeKitCompletion+0x124>

00000000e88646b8 <_HandleHTTPConnectionInitialize>:
{
    e88646b8:	1141                	addi	sp,sp,-16
    e88646ba:	e406                	sd	ra,8(sp)
    SocketSetKeepAlive( inCnx->sock, kAirPlayDataTimeoutSecs / 5, 5 );
    e88646bc:	5d28                	lw	a0,120(a0)
    e88646be:	4615                	li	a2,5
    e88646c0:	4599                	li	a1,6
    e88646c2:	8e5f10ef          	jal	ra,e8855fa6 <SocketSetKeepAlive>
}
    e88646c6:	60a2                	ld	ra,8(sp)
    e88646c8:	4501                	li	a0,0
    e88646ca:	0141                	addi	sp,sp,16
    e88646cc:	8082                	ret

00000000e88646ce <_RemoveHTTPServerConnections>:
{
    e88646ce:	1101                	addi	sp,sp,-32
    e88646d0:	f891540b          	sdd	s0,s1,(sp),0,4
    e88646d4:	ec06                	sd	ra,24(sp)
    e88646d6:	e84a                	sd	s2,16(sp)
	if( params->httpServer )
    e88646d8:	6500                	ld	s0,8(a0)
{
    e88646da:	84aa                	mv	s1,a0
	if( params->httpServer )
    e88646dc:	c809                	beqz	s0,e88646ee <_RemoveHTTPServerConnections+0x20>
		next = &params->httpServer->connections;
    e88646de:	03040413          	addi	s0,s0,48
	if( inConnectionType == kAirPlayHTTPConnectionTypeAny ) 
    e88646e2:	4905                	li	s2,1
		while( ( conn = *next ) != NULL )
    e88646e4:	6008                	ld	a0,0(s0)
    e88646e6:	ed01                	bnez	a0,e88646fe <_RemoveHTTPServerConnections+0x30>
		CFRelease( params->httpServer );
    e88646e8:	6488                	ld	a0,8(s1)
    e88646ea:	a61e20ef          	jal	ra,e884714a <CFRelease>
	free( params );
    e88646ee:	8526                	mv	a0,s1
}
    e88646f0:	f891440b          	ldd	s0,s1,(sp),0,4
    e88646f4:	60e2                	ld	ra,24(sp)
    e88646f6:	6942                	ld	s2,16(sp)
    e88646f8:	6105                	addi	sp,sp,32
	free( params );
    e88646fa:	4071706f          	j	e887c300 <eLIBs_free>
	if( inConnectionType == kAirPlayHTTPConnectionTypeAny ) 
    e88646fe:	0004c783          	lbu	a5,0(s1)
    e8864702:	00f97563          	bgeu	s2,a5,e886470c <_RemoveHTTPServerConnections+0x3e>
				next = &conn->next;
    e8864706:	00850413          	addi	s0,a0,8
    e886470a:	bfe9                	j	e88646e4 <_RemoveHTTPServerConnections+0x16>
    e886470c:	651c                	ld	a5,8(a0)
				*next = conn->next;
    e886470e:	e01c                	sd	a5,0(s0)
				_DestroyConnection( conn );
    e8864710:	cebff0ef          	jal	ra,e88643fa <_DestroyConnection>
    e8864714:	bfc1                	j	e88646e4 <_RemoveHTTPServerConnections+0x16>

00000000e8864716 <_ProcessLimitedUIElementsConfigArray>:
	if( CFIsType( (CFTypeRef) value, CFDictionary ) )
    e8864716:	c53d                	beqz	a0,e8864784 <_ProcessLimitedUIElementsConfigArray+0x6e>
{
    e8864718:	1101                	addi	sp,sp,-32
    e886471a:	f891540b          	sdd	s0,s1,(sp),0,4
    e886471e:	ec06                	sd	ra,24(sp)
    e8864720:	e84a                	sd	s2,16(sp)
    e8864722:	84ae                	mv	s1,a1
    e8864724:	842a                	mv	s0,a0
	if( CFIsType( (CFTypeRef) value, CFDictionary ) )
    e8864726:	a0de20ef          	jal	ra,e8847132 <CFGetTypeID>
    e886472a:	0005091b          	sext.w	s2,a0
    e886472e:	c75e20ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8864732:	2501                	sext.w	a0,a0
    e8864734:	02a91863          	bne	s2,a0,e8864764 <_ProcessLimitedUIElementsConfigArray+0x4e>
		CFDictionaryApplyFunction( (CFDictionaryRef) value, _ProcessLimitedUIElementsConfigArrayDictionaryEntry, context );
    e8864738:	8626                	mv	a2,s1
    e886473a:	8522                	mv	a0,s0
}
    e886473c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8864740:	60e2                	ld	ra,24(sp)
    e8864742:	6942                	ld	s2,16(sp)
		CFDictionaryApplyFunction( (CFDictionaryRef) value, _ProcessLimitedUIElementsConfigArrayDictionaryEntry, context );
    e8864744:	00000597          	auipc	a1,0x0
    e8864748:	04258593          	addi	a1,a1,66 # e8864786 <_ProcessLimitedUIElementsConfigArrayDictionaryEntry>
}
    e886474c:	6105                	addi	sp,sp,32
		CFDictionaryApplyFunction( (CFDictionaryRef) value, _ProcessLimitedUIElementsConfigArrayDictionaryEntry, context );
    e886474e:	d19e206f          	j	e8847466 <CFDictionaryApplyFunction>
		CFArrayAppendValue( elements, value );
    e8864752:	85a2                	mv	a1,s0
    e8864754:	8526                	mv	a0,s1
}
    e8864756:	f891440b          	ldd	s0,s1,(sp),0,4
    e886475a:	60e2                	ld	ra,24(sp)
    e886475c:	6942                	ld	s2,16(sp)
    e886475e:	6105                	addi	sp,sp,32
		CFArrayAppendValue( elements, value );
    e8864760:	b11e206f          	j	e8847270 <CFArrayAppendValue>
	else if( CFIsType( (CFTypeRef) value, CFString ) )
    e8864764:	8522                	mv	a0,s0
    e8864766:	9cde20ef          	jal	ra,e8847132 <CFGetTypeID>
    e886476a:	0005091b          	sext.w	s2,a0
    e886476e:	d27e20ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8864772:	2501                	sext.w	a0,a0
    e8864774:	fca90fe3          	beq	s2,a0,e8864752 <_ProcessLimitedUIElementsConfigArray+0x3c>
}
    e8864778:	60e2                	ld	ra,24(sp)
    e886477a:	f891440b          	ldd	s0,s1,(sp),0,4
    e886477e:	6942                	ld	s2,16(sp)
    e8864780:	6105                	addi	sp,sp,32
    e8864782:	8082                	ret
    e8864784:	8082                	ret

00000000e8864786 <_ProcessLimitedUIElementsConfigArrayDictionaryEntry>:
	if( CFIsType( (CFTypeRef) value, CFString ) && CFStringGetIntValue( (CFStringRef) value) )
    e8864786:	c9a9                	beqz	a1,e88647d8 <_ProcessLimitedUIElementsConfigArrayDictionaryEntry+0x52>
{
    e8864788:	7179                	addi	sp,sp,-48
    e886478a:	ec4a                	sd	s2,24(sp)
    e886478c:	892a                	mv	s2,a0
	if( CFIsType( (CFTypeRef) value, CFString ) && CFStringGetIntValue( (CFStringRef) value) )
    e886478e:	852e                	mv	a0,a1
{
    e8864790:	f406                	sd	ra,40(sp)
    e8864792:	e422                	sd	s0,8(sp)
    e8864794:	e826                	sd	s1,16(sp)
    e8864796:	f04e                	sd	s3,32(sp)
    e8864798:	84b2                	mv	s1,a2
    e886479a:	842e                	mv	s0,a1
	if( CFIsType( (CFTypeRef) value, CFString ) && CFStringGetIntValue( (CFStringRef) value) )
    e886479c:	997e20ef          	jal	ra,e8847132 <CFGetTypeID>
    e88647a0:	0005099b          	sext.w	s3,a0
    e88647a4:	cf1e20ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e88647a8:	2501                	sext.w	a0,a0
    e88647aa:	02a99063          	bne	s3,a0,e88647ca <_ProcessLimitedUIElementsConfigArrayDictionaryEntry+0x44>
    e88647ae:	8522                	mv	a0,s0
    e88647b0:	ee9e20ef          	jal	ra,e8847698 <CFStringGetIntValue>
    e88647b4:	c919                	beqz	a0,e88647ca <_ProcessLimitedUIElementsConfigArrayDictionaryEntry+0x44>
}
    e88647b6:	6422                	ld	s0,8(sp)
    e88647b8:	70a2                	ld	ra,40(sp)
    e88647ba:	7982                	ld	s3,32(sp)
		CFArrayAppendValue( elements, key );
    e88647bc:	85ca                	mv	a1,s2
    e88647be:	8526                	mv	a0,s1
}
    e88647c0:	6962                	ld	s2,24(sp)
    e88647c2:	64c2                	ld	s1,16(sp)
    e88647c4:	6145                	addi	sp,sp,48
		CFArrayAppendValue( elements, key );
    e88647c6:	aabe206f          	j	e8847270 <CFArrayAppendValue>
}
    e88647ca:	70a2                	ld	ra,40(sp)
    e88647cc:	6422                	ld	s0,8(sp)
    e88647ce:	64c2                	ld	s1,16(sp)
    e88647d0:	6962                	ld	s2,24(sp)
    e88647d2:	7982                	ld	s3,32(sp)
    e88647d4:	6145                	addi	sp,sp,48
    e88647d6:	8082                	ret
    e88647d8:	8082                	ret

00000000e88647da <_StopBonjour>:
{
    e88647da:	1101                	addi	sp,sp,-32
    e88647dc:	e422                	sd	s0,8(sp)
    e88647de:	e826                	sd	s1,16(sp)
    e88647e0:	ec06                	sd	ra,24(sp)
    e88647e2:	842a                	mv	s0,a0
	dispatch_source_forget( &inServer->bonjourRetryTimer );
    e88647e4:	7128                	ld	a0,96(a0)
{
    e88647e6:	84ae                	mv	s1,a1
	dispatch_source_forget( &inServer->bonjourRetryTimer );
    e88647e8:	c901                	beqz	a0,e88647f8 <_StopBonjour+0x1e>
    e88647ea:	c5ceb0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e88647ee:	7028                	ld	a0,96(s0)
    e88647f0:	a60ea0ef          	jal	ra,e884ea50 <dispatch_release>
    e88647f4:	06043023          	sd	zero,96(s0)
	if( inServer->bonjourAirPlay )
    e88647f8:	7428                	ld	a0,104(s0)
	inServer->bonjourStartTicks = 0;
    e88647fa:	04043c23          	sd	zero,88(s0)
	if( inServer->bonjourAirPlay )
    e88647fe:	cd39                	beqz	a0,e886485c <_StopBonjour+0x82>
		DNSServiceForget( &inServer->bonjourAirPlay );
    e8864800:	ce0b60ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    e8864804:	06043423          	sd	zero,104(s0)
		aprs_ulog( kLogLevelNotice, "Deregistered Bonjour %s for %s\n", kAirPlayBonjourServiceType, inReason );
    e8864808:	00071517          	auipc	a0,0x71
    e886480c:	99850513          	addi	a0,a0,-1640 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864810:	411c                	lw	a5,0(a0)
    e8864812:	03200713          	li	a4,50
    e8864816:	04f74363          	blt	a4,a5,e886485c <_StopBonjour+0x82>
    e886481a:	577d                	li	a4,-1
    e886481c:	02e78b63          	beq	a5,a4,e8864852 <_StopBonjour+0x78>
}
    e8864820:	6422                	ld	s0,8(sp)
    e8864822:	60e2                	ld	ra,24(sp)
		aprs_ulog( kLogLevelNotice, "Deregistered Bonjour %s for %s\n", kAirPlayBonjourServiceType, inReason );
    e8864824:	87a6                	mv	a5,s1
}
    e8864826:	64c2                	ld	s1,16(sp)
		aprs_ulog( kLogLevelNotice, "Deregistered Bonjour %s for %s\n", kAirPlayBonjourServiceType, inReason );
    e8864828:	0005a717          	auipc	a4,0x5a
    e886482c:	89070713          	addi	a4,a4,-1904 # e88be0b8 <__PRETTY_FUNCTION__.10585+0x2f0>
    e8864830:	00065697          	auipc	a3,0x65
    e8864834:	a3868693          	addi	a3,a3,-1480 # e88c9268 <__PRETTY_FUNCTION__.13159+0x578>
    e8864838:	03200613          	li	a2,50
    e886483c:	00065597          	auipc	a1,0x65
    e8864840:	c7458593          	addi	a1,a1,-908 # e88c94b0 <__PRETTY_FUNCTION__.13709>
    e8864844:	00071517          	auipc	a0,0x71
    e8864848:	95c50513          	addi	a0,a0,-1700 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
}
    e886484c:	6105                	addi	sp,sp,32
		aprs_ulog( kLogLevelNotice, "Deregistered Bonjour %s for %s\n", kAirPlayBonjourServiceType, inReason );
    e886484e:	c27ef06f          	j	e8854474 <LogPrintF>
    e8864852:	03200593          	li	a1,50
    e8864856:	81def0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886485a:	f179                	bnez	a0,e8864820 <_StopBonjour+0x46>
}
    e886485c:	60e2                	ld	ra,24(sp)
    e886485e:	6422                	ld	s0,8(sp)
    e8864860:	64c2                	ld	s1,16(sp)
    e8864862:	6105                	addi	sp,sp,32
    e8864864:	8082                	ret

00000000e8864866 <_StopServers>:
{
    e8864866:	1141                	addi	sp,sp,-16
	_StopBonjour( inServer, "stop" );
    e8864868:	00065597          	auipc	a1,0x65
    e886486c:	a2058593          	addi	a1,a1,-1504 # e88c9288 <__PRETTY_FUNCTION__.13159+0x598>
{
    e8864870:	e022                	sd	s0,0(sp)
    e8864872:	e406                	sd	ra,8(sp)
    e8864874:	842a                	mv	s0,a0
	_StopBonjour( inServer, "stop" );
    e8864876:	f65ff0ef          	jal	ra,e88647da <_StopBonjour>
	HTTPServerForget( &inServer->httpServer );
    e886487a:	7828                	ld	a0,112(s0)
    e886487c:	c505                	beqz	a0,e88648a4 <_StopServers+0x3e>
    e886487e:	650c                	ld	a1,8(a0)
    e8864880:	4801                	li	a6,0
    e8864882:	4781                	li	a5,0
    e8864884:	00039717          	auipc	a4,0x39
    e8864888:	23470713          	addi	a4,a4,564 # e889dab8 <icmp6_param_problem+0xa4a>
    e886488c:	46a1                	li	a3,8
    e886488e:	fffed617          	auipc	a2,0xfffed
    e8864892:	cf460613          	addi	a2,a2,-780 # e8851582 <_HTTPServerControl>
    e8864896:	fa3e60ef          	jal	ra,e884b838 <CFObjectSetProperty>
    e886489a:	7828                	ld	a0,112(s0)
    e886489c:	8afe20ef          	jal	ra,e884714a <CFRelease>
    e88648a0:	06043823          	sd	zero,112(s0)
	if( inServer->serversStarted )
    e88648a4:	09144783          	lbu	a5,145(s0)
    e88648a8:	cf9d                	beqz	a5,e88648e6 <_StopServers+0x80>
		aprs_ulog( kLogLevelNotice, "AirPlay servers stopped\n" );
    e88648aa:	00071517          	auipc	a0,0x71
    e88648ae:	8f650513          	addi	a0,a0,-1802 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88648b2:	411c                	lw	a5,0(a0)
    e88648b4:	03200713          	li	a4,50
    e88648b8:	02f74563          	blt	a4,a5,e88648e2 <_StopServers+0x7c>
    e88648bc:	577d                	li	a4,-1
    e88648be:	02e78863          	beq	a5,a4,e88648ee <_StopServers+0x88>
    e88648c2:	00065697          	auipc	a3,0x65
    e88648c6:	9ce68693          	addi	a3,a3,-1586 # e88c9290 <__PRETTY_FUNCTION__.13159+0x5a0>
    e88648ca:	03200613          	li	a2,50
    e88648ce:	00065597          	auipc	a1,0x65
    e88648d2:	c2a58593          	addi	a1,a1,-982 # e88c94f8 <__PRETTY_FUNCTION__.13767>
    e88648d6:	00071517          	auipc	a0,0x71
    e88648da:	8ca50513          	addi	a0,a0,-1846 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88648de:	b97ef0ef          	jal	ra,e8854474 <LogPrintF>
		inServer->serversStarted = false;
    e88648e2:	080408a3          	sb	zero,145(s0)
}
    e88648e6:	60a2                	ld	ra,8(sp)
    e88648e8:	6402                	ld	s0,0(sp)
    e88648ea:	0141                	addi	sp,sp,16
    e88648ec:	8082                	ret
		aprs_ulog( kLogLevelNotice, "AirPlay servers stopped\n" );
    e88648ee:	03200593          	li	a1,50
    e88648f2:	f80ef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88648f6:	d575                	beqz	a0,e88648e2 <_StopServers+0x7c>
    e88648f8:	b7e9                	j	e88648c2 <_StopServers+0x5c>

00000000e88648fa <_Finalize>:
{
    e88648fa:	1141                	addi	sp,sp,-16
    e88648fc:	e406                	sd	ra,8(sp)
    e88648fe:	e022                	sd	s0,0(sp)
    e8864900:	842a                	mv	s0,a0
	_StopServers( me );
    e8864902:	f65ff0ef          	jal	ra,e8864866 <_StopServers>
	AirPlayReceiverServerPlatformFinalize( me );
    e8864906:	8522                	mv	a0,s0
    e8864908:	950ff0ef          	jal	ra,e8863a58 <AirPlayReceiverServerPlatformFinalize>
	dispatch_forget( &me->queue );
    e886490c:	6808                	ld	a0,16(s0)
    e886490e:	c509                	beqz	a0,e8864918 <_Finalize+0x1e>
    e8864910:	940ea0ef          	jal	ra,e884ea50 <dispatch_release>
    e8864914:	00043823          	sd	zero,16(s0)
	dispatch_forget( &me->httpQueue );
    e8864918:	7c28                	ld	a0,120(s0)
    e886491a:	c509                	beqz	a0,e8864924 <_Finalize+0x2a>
    e886491c:	934ea0ef          	jal	ra,e884ea50 <dispatch_release>
    e8864920:	06043c23          	sd	zero,120(s0)
	ForgetMem( &me->configFilePath );
    e8864924:	7448                	ld	a0,168(s0)
    e8864926:	c509                	beqz	a0,e8864930 <_Finalize+0x36>
    e8864928:	1d9170ef          	jal	ra,e887c300 <eLIBs_free>
    e886492c:	0a043423          	sd	zero,168(s0)
	ForgetCF( &me->config );
    e8864930:	7848                	ld	a0,176(s0)
    e8864932:	c509                	beqz	a0,e886493c <_Finalize+0x42>
    e8864934:	817e20ef          	jal	ra,e884714a <CFRelease>
    e8864938:	0a043823          	sd	zero,176(s0)
}
    e886493c:	60a2                	ld	ra,8(sp)
    e886493e:	6402                	ld	s0,0(sp)
    e8864940:	0141                	addi	sp,sp,16
    e8864942:	8082                	ret

00000000e8864944 <_requestSendPlistResponse.isra.9>:
static HTTPStatus _requestSendPlistResponse( HTTPConnectionRef inCnx, HTTPMessageRef inRequest, CFPropertyListRef inPlist, OSStatus *outErr )
    e8864944:	7179                	addi	sp,sp,-48
    e8864946:	fa91540b          	sdd	s0,s1,(sp),1,4
    e886494a:	f04a                	sd	s2,32(sp)
    e886494c:	f406                	sd	ra,40(sp)
	if( response->header.len == 0 )
    e886494e:	41053703          	ld	a4,1040(a0)
static HTTPStatus _requestSendPlistResponse( HTTPConnectionRef inCnx, HTTPMessageRef inRequest, CFPropertyListRef inPlist, OSStatus *outErr )
    e8864952:	842a                	mv	s0,a0
    e8864954:	84b2                	mv	s1,a2
    e8864956:	8936                	mv	s2,a3
	if( response->header.len == 0 )
    e8864958:	e329                	bnez	a4,e886499a <_requestSendPlistResponse.isra.9+0x56>
    e886495a:	87ae                	mv	a5,a1
		httpProtocol = ( strnicmp_prefix( inRequest->header.protocolPtr, inRequest->header.protocolLen, "HTTP" ) == 0 )
    e886495c:	4d07b503          	ld	a0,1232(a5) # 14d0 <memcmp-0xe87feb30>
    e8864960:	4d85b583          	ld	a1,1240(a1)
    e8864964:	00065617          	auipc	a2,0x65
    e8864968:	00c60613          	addi	a2,a2,12 # e88c9970 <__PRETTY_FUNCTION__.14166+0x280>
    e886496c:	f61fa0ef          	jal	ra,e885f8cc <strnicmp_prefix>
    e8864970:	0005c597          	auipc	a1,0x5c
    e8864974:	5a858593          	addi	a1,a1,1448 # e88c0f18 <kHTTPMessageClass+0x68>
    e8864978:	c509                	beqz	a0,e8864982 <_requestSendPlistResponse.isra.9+0x3e>
    e886497a:	00065597          	auipc	a1,0x65
    e886497e:	fe658593          	addi	a1,a1,-26 # e88c9960 <__PRETTY_FUNCTION__.14166+0x270>
		err = HTTPHeader_InitResponse( &response->header, httpProtocol, kHTTPStatus_OK, NULL );
    e8864982:	4681                	li	a3,0
    e8864984:	0c800613          	li	a2,200
    e8864988:	01040513          	addi	a0,s0,16
    e886498c:	c66ed0ef          	jal	ra,e8851df2 <HTTPHeader_InitResponse>
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8864990:	1f400793          	li	a5,500
    e8864994:	e519                	bnez	a0,e88649a2 <_requestSendPlistResponse.isra.9+0x5e>
		response->bodyLen = 0;
    e8864996:	52043023          	sd	zero,1312(s0)
	if( inPlist )
    e886499a:	ec89                	bnez	s1,e88649b4 <_requestSendPlistResponse.isra.9+0x70>
		httpProtocol = ( strnicmp_prefix( inRequest->header.protocolPtr, inRequest->header.protocolLen, "HTTP" ) == 0 )
    e886499c:	4501                	li	a0,0
	status = kHTTPStatus_OK;
    e886499e:	0c800793          	li	a5,200
}
    e88649a2:	70a2                	ld	ra,40(sp)
    e88649a4:	fa91440b          	ldd	s0,s1,(sp),1,4
	if( outErr ) *outErr = err;
    e88649a8:	00a92023          	sw	a0,0(s2)
}
    e88649ac:	7902                	ld	s2,32(sp)
    e88649ae:	853e                	mv	a0,a5
    e88649b0:	6145                	addi	sp,sp,48
    e88649b2:	8082                	ret
		ptr = CFBinaryPlistV0Create( inPlist, &len, NULL );
    e88649b4:	4601                	li	a2,0
    e88649b6:	002c                	addi	a1,sp,8
    e88649b8:	8526                	mv	a0,s1
    e88649ba:	df4e50ef          	jal	ra,e8849fae <CFBinaryPlistV0Create>
    e88649be:	862a                	mv	a2,a0
		require_action( ptr, exit, err = kUnknownErr; status = kHTTPStatus_InternalServerError );
    e88649c0:	cd09                	beqz	a0,e88649da <_requestSendPlistResponse.isra.9+0x96>
		err = HTTPMessageSetBodyPtr( response, kMIMEType_AppleBinaryPlist, ptr, len );
    e88649c2:	66a2                	ld	a3,8(sp)
    e88649c4:	00065597          	auipc	a1,0x65
    e88649c8:	fb458593          	addi	a1,a1,-76 # e88c9978 <__PRETTY_FUNCTION__.14166+0x288>
    e88649cc:	8522                	mv	a0,s0
    e88649ce:	bfcec0ef          	jal	ra,e8850dca <HTTPMessageSetBodyPtr>
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e88649d2:	d569                	beqz	a0,e886499c <_requestSendPlistResponse.isra.9+0x58>
		require_action( ptr, exit, err = kUnknownErr; status = kHTTPStatus_InternalServerError );
    e88649d4:	1f400793          	li	a5,500
    e88649d8:	b7e9                	j	e88649a2 <_requestSendPlistResponse.isra.9+0x5e>
    e88649da:	7579                	lui	a0,0xffffe
    e88649dc:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e88649e0:	bfd5                	j	e88649d4 <_requestSendPlistResponse.isra.9+0x90>

00000000e88649e2 <_requestReportIfIncompatibleSender.isra.10>:
static void _requestReportIfIncompatibleSender( AirPlayReceiverConnectionRef inCnx, HTTPMessageRef inRequest )
    e88649e2:	7179                	addi	sp,sp,-48
    e88649e4:	f026                	sd	s1,32(sp)
    e88649e6:	f406                	sd	ra,40(sp)
    e88649e8:	ec22                	sd	s0,24(sp)
	GetHeaderValue( inRequest, kHTTPHeader_UserAgent, &userAgentPtr, &userAgentLen );
    e88649ea:	41053583          	ld	a1,1040(a0)
    e88649ee:	4881                	li	a7,0
    e88649f0:	00810813          	addi	a6,sp,8
    e88649f4:	878a                	mv	a5,sp
    e88649f6:	4701                	li	a4,0
    e88649f8:	4681                	li	a3,0
    e88649fa:	00065617          	auipc	a2,0x65
    e88649fe:	f2660613          	addi	a2,a2,-218 # e88c9920 <__PRETTY_FUNCTION__.14166+0x230>
    e8864a02:	0541                	addi	a0,a0,16
	const char *		userAgentPtr = NULL;
    e8864a04:	e002                	sd	zero,0(sp)
	size_t				userAgentLen = 0;
    e8864a06:	e402                	sd	zero,8(sp)
	GetHeaderValue( inRequest, kHTTPHeader_UserAgent, &userAgentPtr, &userAgentLen );
    e8864a08:	dd4ed0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
	ptr = ( userAgentLen > 0 ) ? ( (const char *) memchr( userAgentPtr, '/', userAgentLen ) ) : NULL;
    e8864a0c:	64a2                	ld	s1,8(sp)
    e8864a0e:	e0a1                	bnez	s1,e8864a4e <_requestReportIfIncompatibleSender.isra.10+0x6c>
		aprs_ulog( kLogLevelNotice, "### Reporting incompatible sender: '%.*s'\n", (int) userAgentLen, userAgentPtr );
    e8864a10:	00070517          	auipc	a0,0x70
    e8864a14:	79050513          	addi	a0,a0,1936 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864a18:	411c                	lw	a5,0(a0)
    e8864a1a:	03200713          	li	a4,50
    e8864a1e:	04f74d63          	blt	a4,a5,e8864a78 <_requestReportIfIncompatibleSender.isra.10+0x96>
    e8864a22:	577d                	li	a4,-1
    e8864a24:	04e78f63          	beq	a5,a4,e8864a82 <_requestReportIfIncompatibleSender.isra.10+0xa0>
    e8864a28:	6782                	ld	a5,0(sp)
    e8864a2a:	4722                	lw	a4,8(sp)
    e8864a2c:	00065697          	auipc	a3,0x65
    e8864a30:	f0468693          	addi	a3,a3,-252 # e88c9930 <__PRETTY_FUNCTION__.14166+0x240>
    e8864a34:	03200613          	li	a2,50
    e8864a38:	00065597          	auipc	a1,0x65
    e8864a3c:	cb858593          	addi	a1,a1,-840 # e88c96f0 <__PRETTY_FUNCTION__.14166>
    e8864a40:	00070517          	auipc	a0,0x70
    e8864a44:	76050513          	addi	a0,a0,1888 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864a48:	a2def0ef          	jal	ra,e8854474 <LogPrintF>
    e8864a4c:	a035                	j	e8864a78 <_requestReportIfIncompatibleSender.isra.10+0x96>
	ptr = ( userAgentLen > 0 ) ? ( (const char *) memchr( userAgentPtr, '/', userAgentLen ) ) : NULL;
    e8864a4e:	6402                	ld	s0,0(sp)
    e8864a50:	8626                	mv	a2,s1
    e8864a52:	02f00593          	li	a1,47
    e8864a56:	8522                	mv	a0,s0
    e8864a58:	5dd160ef          	jal	ra,e887b834 <memchr>
	if( ptr )
    e8864a5c:	d955                	beqz	a0,e8864a10 <_requestReportIfIncompatibleSender.isra.10+0x2e>
		++ptr;
    e8864a5e:	0505                	addi	a0,a0,1
		sourceVersion = TextToSourceVersion( ptr, (size_t)( ( userAgentPtr + userAgentLen ) - ptr ) );
    e8864a60:	009405b3          	add	a1,s0,s1
    e8864a64:	8d89                	sub	a1,a1,a0
    e8864a66:	e62fa0ef          	jal	ra,e885f0c8 <TextToSourceVersion>
    e8864a6a:	2501                	sext.w	a0,a0
	if( sourceVersion < SourceVersionToInteger( 200, 30, 0 ) )
    e8864a6c:	001e97b7          	lui	a5,0x1e9
    e8864a70:	03778793          	addi	a5,a5,55 # 1e9037 <memcmp-0xe8616fc9>
    e8864a74:	f8a7fee3          	bgeu	a5,a0,e8864a10 <_requestReportIfIncompatibleSender.isra.10+0x2e>
}
    e8864a78:	70a2                	ld	ra,40(sp)
    e8864a7a:	6462                	ld	s0,24(sp)
    e8864a7c:	7482                	ld	s1,32(sp)
    e8864a7e:	6145                	addi	sp,sp,48
    e8864a80:	8082                	ret
		aprs_ulog( kLogLevelNotice, "### Reporting incompatible sender: '%.*s'\n", (int) userAgentLen, userAgentPtr );
    e8864a82:	03200593          	li	a1,50
    e8864a86:	decef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8864a8a:	d57d                	beqz	a0,e8864a78 <_requestReportIfIncompatibleSender.isra.10+0x96>
    e8864a8c:	bf71                	j	e8864a28 <_requestReportIfIncompatibleSender.isra.10+0x46>

00000000e8864a8e <_requestCreateSession.constprop.15>:
	require_action_quiet( !inCnx->session, exit, err = kNoErr );
    e8864a8e:	691c                	ld	a5,16(a0)
    e8864a90:	ebb5                	bnez	a5,e8864b04 <_requestCreateSession.constprop.15+0x76>
static OSStatus _requestCreateSession( AirPlayReceiverConnectionRef inCnx, Boolean inUseEvents )
    e8864a92:	711d                	addi	sp,sp,-96
    e8864a94:	e8a2                	sd	s0,80(sp)
	memset( &createParams, 0, sizeof( createParams ) );
    e8864a96:	04800613          	li	a2,72
    e8864a9a:	842a                	mv	s0,a0
    e8864a9c:	4581                	li	a1,0
    e8864a9e:	0028                	addi	a0,sp,8
static OSStatus _requestCreateSession( AirPlayReceiverConnectionRef inCnx, Boolean inUseEvents )
    e8864aa0:	ec86                	sd	ra,88(sp)
	memset( &createParams, 0, sizeof( createParams ) );
    e8864aa2:	0f3170ef          	jal	ra,e887c394 <eLIBs_memset>
	createParams.connection			= inCnx;
    e8864aa6:	e4a2                	sd	s0,72(sp)
	createParams.server				= inCnx->server;
    e8864aa8:	601c                	ld	a5,0(s0)
	memcpy( createParams.clientIfMACAddr, inCnx->clientInterfaceMACAddress, sizeof( createParams.clientIfMACAddr ) );
    e8864aaa:	02840593          	addi	a1,s0,40
    e8864aae:	4619                	li	a2,6
	createParams.server				= inCnx->server;
    e8864ab0:	e43e                	sd	a5,8(sp)
	createParams.transportType		= inCnx->httpCnx->transportType;
    e8864ab2:	641c                	ld	a5,8(s0)
	memcpy( createParams.clientIfMACAddr, inCnx->clientInterfaceMACAddress, sizeof( createParams.clientIfMACAddr ) );
    e8864ab4:	1028                	addi	a0,sp,40
	createParams.transportType		= inCnx->httpCnx->transportType;
    e8864ab6:	0847a703          	lw	a4,132(a5)
	createParams.peerAddr			= &inCnx->httpCnx->peerAddr;
    e8864aba:	0c078793          	addi	a5,a5,192
    e8864abe:	ec3e                	sd	a5,24(sp)
	createParams.clientDeviceID		= inCnx->clientDeviceID;
    e8864ac0:	701c                	ld	a5,32(s0)
	createParams.transportType		= inCnx->httpCnx->transportType;
    e8864ac2:	c83a                	sw	a4,16(sp)
	createParams.clientDeviceID		= inCnx->clientDeviceID;
    e8864ac4:	f03e                	sd	a5,32(sp)
	createParams.clientSessionID	= inCnx->clientSessionID;
    e8864ac6:	785c                	ld	a5,176(s0)
    e8864ac8:	f83e                	sd	a5,48(sp)
	createParams.clientVersion		= inCnx->clientVersion;
    e8864aca:	0b842783          	lw	a5,184(s0)
    e8864ace:	dc3e                	sw	a5,56(sp)
	createParams.useEvents			= inUseEvents;
    e8864ad0:	4785                	li	a5,1
    e8864ad2:	04f101a3          	sb	a5,67(sp)
	memcpy( createParams.clientIfMACAddr, inCnx->clientInterfaceMACAddress, sizeof( createParams.clientIfMACAddr ) );
    e8864ad6:	0cb170ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	snprintf( inCnx->ifName, sizeof( inCnx->ifName ), "%s", inCnx->httpCnx->ifName );
    e8864ada:	6414                	ld	a3,8(s0)
    e8864adc:	00046617          	auipc	a2,0x46
    e8864ae0:	8c460613          	addi	a2,a2,-1852 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e8864ae4:	459d                	li	a1,7
    e8864ae6:	07c68693          	addi	a3,a3,124
    e8864aea:	0c040513          	addi	a0,s0,192
    e8864aee:	762170ef          	jal	ra,e887c250 <eLIBs_snprintf>
	err = AirPlayReceiverSessionCreate( &inCnx->session, &createParams );
    e8864af2:	002c                	addi	a1,sp,8
    e8864af4:	01040513          	addi	a0,s0,16
    e8864af8:	509070ef          	jal	ra,e886c800 <AirPlayReceiverSessionCreate>
}
    e8864afc:	6446                	ld	s0,80(sp)
    e8864afe:	60e6                	ld	ra,88(sp)
    e8864b00:	6125                	addi	sp,sp,96
    e8864b02:	8082                	ret
	require_action_quiet( !inCnx->session, exit, err = kNoErr );
    e8864b04:	4501                	li	a0,0
}
    e8864b06:	8082                	ret

00000000e8864b08 <_requestProcessSetupPlist>:
{
    e8864b08:	7111                	addi	sp,sp,-256
    e8864b0a:	f1ca                	sd	s2,224(sp)
	aprs_ulog( kAirPlayPhaseLogLevel, "Setup\n" );
    e8864b0c:	00070917          	auipc	s2,0x70
    e8864b10:	69490913          	addi	s2,s2,1684 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864b14:	00092783          	lw	a5,0(s2)
{
    e8864b18:	f9a2                	sd	s0,240(sp)
    e8864b1a:	e9d2                	sd	s4,208(sp)
    e8864b1c:	fd86                	sd	ra,248(sp)
    e8864b1e:	f5a6                	sd	s1,232(sp)
    e8864b20:	edce                	sd	s3,216(sp)
    e8864b22:	e5d6                	sd	s5,200(sp)
    e8864b24:	e1da                	sd	s6,192(sp)
    e8864b26:	fd5e                	sd	s7,184(sp)
    e8864b28:	f962                	sd	s8,176(sp)
    e8864b2a:	f566                	sd	s9,168(sp)
    e8864b2c:	f16a                	sd	s10,160(sp)
    e8864b2e:	ed6e                	sd	s11,152(sp)
	CFDictionaryRef				responseParams = NULL;
    e8864b30:	e402                	sd	zero,8(sp)
	aprs_ulog( kAirPlayPhaseLogLevel, "Setup\n" );
    e8864b32:	02800713          	li	a4,40
{
    e8864b36:	842a                	mv	s0,a0
    e8864b38:	8a2e                	mv	s4,a1
	aprs_ulog( kAirPlayPhaseLogLevel, "Setup\n" );
    e8864b3a:	02f74563          	blt	a4,a5,e8864b64 <_requestProcessSetupPlist+0x5c>
    e8864b3e:	577d                	li	a4,-1
    e8864b40:	0ae78563          	beq	a5,a4,e8864bea <_requestProcessSetupPlist+0xe2>
    e8864b44:	00065697          	auipc	a3,0x65
    e8864b48:	d7c68693          	addi	a3,a3,-644 # e88c98c0 <__PRETTY_FUNCTION__.14166+0x1d0>
    e8864b4c:	02800613          	li	a2,40
    e8864b50:	00065597          	auipc	a1,0x65
    e8864b54:	b5058593          	addi	a1,a1,-1200 # e88c96a0 <__PRETTY_FUNCTION__.14118>
    e8864b58:	00070517          	auipc	a0,0x70
    e8864b5c:	64850513          	addi	a0,a0,1608 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864b60:	915ef0ef          	jal	ra,e8854474 <LogPrintF>
	_HijackConnections( inCnx->server, inCnx->httpCnx );
    e8864b64:	601c                	ld	a5,0(s0)
	if( !inServer )				return;
    e8864b66:	ebc9                	bnez	a5,e8864bf8 <_requestProcessSetupPlist+0xf0>
	requestParams = (CFDictionaryRef)CFBinaryPlistV0CreateWithData( inRequest->bodyPtr, inRequest->bodyOffset, &err );
    e8864b68:	530a3583          	ld	a1,1328(s4)
    e8864b6c:	518a3503          	ld	a0,1304(s4)
    e8864b70:	860a                	mv	a2,sp
    e8864b72:	ad1e50ef          	jal	ra,e884a642 <CFBinaryPlistV0CreateWithData>
    e8864b76:	84aa                	mv	s1,a0
	require_noerr_action( err, exit, status = kHTTPStatus_BadRequest );
    e8864b78:	4782                	lw	a5,0(sp)
    e8864b7a:	10078363          	beqz	a5,e8864c80 <_requestProcessSetupPlist+0x178>
		require_action( len == sizeof( sessionUUID ), exit, err = kSizeErr; status = kHTTPStatus_BadRequest );
    e8864b7e:	19000993          	li	s3,400
	CFReleaseNullSafe( requestParams );
    e8864b82:	c481                	beqz	s1,e8864b8a <_requestProcessSetupPlist+0x82>
    e8864b84:	8526                	mv	a0,s1
    e8864b86:	dc4e20ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( responseParams );
    e8864b8a:	6522                	ld	a0,8(sp)
    e8864b8c:	c119                	beqz	a0,e8864b92 <_requestProcessSetupPlist+0x8a>
    e8864b8e:	dbce20ef          	jal	ra,e884714a <CFRelease>
	if( err ) aprs_ulog( kLogLevelNotice, "### Setup session failed: %#m\n", err );
    e8864b92:	4782                	lw	a5,0(sp)
    e8864b94:	cb9d                	beqz	a5,e8864bca <_requestProcessSetupPlist+0xc2>
    e8864b96:	00092783          	lw	a5,0(s2)
    e8864b9a:	03200713          	li	a4,50
    e8864b9e:	02f74663          	blt	a4,a5,e8864bca <_requestProcessSetupPlist+0xc2>
    e8864ba2:	577d                	li	a4,-1
    e8864ba4:	32e78b63          	beq	a5,a4,e8864eda <_requestProcessSetupPlist+0x3d2>
    e8864ba8:	4702                	lw	a4,0(sp)
    e8864baa:	00065697          	auipc	a3,0x65
    e8864bae:	d5668693          	addi	a3,a3,-682 # e88c9900 <__PRETTY_FUNCTION__.14166+0x210>
    e8864bb2:	03200613          	li	a2,50
    e8864bb6:	00065597          	auipc	a1,0x65
    e8864bba:	aea58593          	addi	a1,a1,-1302 # e88c96a0 <__PRETTY_FUNCTION__.14118>
    e8864bbe:	00070517          	auipc	a0,0x70
    e8864bc2:	5e250513          	addi	a0,a0,1506 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864bc6:	8afef0ef          	jal	ra,e8854474 <LogPrintF>
}
    e8864bca:	70ee                	ld	ra,248(sp)
    e8864bcc:	744e                	ld	s0,240(sp)
    e8864bce:	854e                	mv	a0,s3
    e8864bd0:	74ae                	ld	s1,232(sp)
    e8864bd2:	790e                	ld	s2,224(sp)
    e8864bd4:	69ee                	ld	s3,216(sp)
    e8864bd6:	6a4e                	ld	s4,208(sp)
    e8864bd8:	6aae                	ld	s5,200(sp)
    e8864bda:	6b0e                	ld	s6,192(sp)
    e8864bdc:	7bea                	ld	s7,184(sp)
    e8864bde:	7c4a                	ld	s8,176(sp)
    e8864be0:	7caa                	ld	s9,168(sp)
    e8864be2:	7d0a                	ld	s10,160(sp)
    e8864be4:	6dea                	ld	s11,152(sp)
    e8864be6:	6111                	addi	sp,sp,256
    e8864be8:	8082                	ret
	aprs_ulog( kAirPlayPhaseLogLevel, "Setup\n" );
    e8864bea:	02800593          	li	a1,40
    e8864bee:	854a                	mv	a0,s2
    e8864bf0:	c82ef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8864bf4:	d925                	beqz	a0,e8864b64 <_requestProcessSetupPlist+0x5c>
    e8864bf6:	b7b9                	j	e8864b44 <_requestProcessSetupPlist+0x3c>
	if( !inServer->httpServer )	return;
    e8864bf8:	0707b983          	ld	s3,112(a5)
    e8864bfc:	f60986e3          	beqz	s3,e8864b68 <_requestProcessSetupPlist+0x60>
	_HijackConnections( inCnx->server, inCnx->httpCnx );
    e8864c00:	00843a83          	ld	s5,8(s0)
		next = &inHTTPServer->connections;
    e8864c04:	03098993          	addi	s3,s3,48
				aprs_ulog( kLogLevelNotice, "*** Hijacking connection %##a for %##a\n", &conn->peerAddr, &inHijacker->peerAddr );
    e8864c08:	03200b93          	li	s7,50
    e8864c0c:	5c7d                	li	s8,-1
    e8864c0e:	00070b17          	auipc	s6,0x70
    e8864c12:	592b0b13          	addi	s6,s6,1426 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864c16:	0c0a8c93          	addi	s9,s5,192
    e8864c1a:	00065d17          	auipc	s10,0x65
    e8864c1e:	caed0d13          	addi	s10,s10,-850 # e88c98c8 <__PRETTY_FUNCTION__.14166+0x1d8>
    e8864c22:	00065d97          	auipc	s11,0x65
    e8864c26:	8e6d8d93          	addi	s11,s11,-1818 # e88c9508 <__PRETTY_FUNCTION__.13779>
		while( ( conn = *next ) != NULL )
    e8864c2a:	0009b483          	ld	s1,0(s3)
    e8864c2e:	dc8d                	beqz	s1,e8864b68 <_requestProcessSetupPlist+0x60>
			if( ( conn != inHijacker ) && _IsConnectionActive( conn ) )
    e8864c30:	049a8563          	beq	s5,s1,e8864c7a <_requestProcessSetupPlist+0x172>
    e8864c34:	709c                	ld	a5,32(s1)
	if( aprsCnx && aprsCnx->didAnnounce )
    e8864c36:	c3b1                	beqz	a5,e8864c7a <_requestProcessSetupPlist+0x172>
    e8864c38:	0bc7c783          	lbu	a5,188(a5)
    e8864c3c:	cf9d                	beqz	a5,e8864c7a <_requestProcessSetupPlist+0x172>
				aprs_ulog( kLogLevelNotice, "*** Hijacking connection %##a for %##a\n", &conn->peerAddr, &inHijacker->peerAddr );
    e8864c3e:	00092783          	lw	a5,0(s2)
    e8864c42:	00fbce63          	blt	s7,a5,e8864c5e <_requestProcessSetupPlist+0x156>
    e8864c46:	03878363          	beq	a5,s8,e8864c6c <_requestProcessSetupPlist+0x164>
    e8864c4a:	87e6                	mv	a5,s9
    e8864c4c:	0c048713          	addi	a4,s1,192
    e8864c50:	86ea                	mv	a3,s10
    e8864c52:	03200613          	li	a2,50
    e8864c56:	85ee                	mv	a1,s11
    e8864c58:	855a                	mv	a0,s6
    e8864c5a:	81bef0ef          	jal	ra,e8854474 <LogPrintF>
				*next = conn->next;
    e8864c5e:	649c                	ld	a5,8(s1)
				_DestroyConnection( conn );
    e8864c60:	8526                	mv	a0,s1
				*next = conn->next;
    e8864c62:	00f9b023          	sd	a5,0(s3)
				_DestroyConnection( conn );
    e8864c66:	f94ff0ef          	jal	ra,e88643fa <_DestroyConnection>
    e8864c6a:	b7c1                	j	e8864c2a <_requestProcessSetupPlist+0x122>
				aprs_ulog( kLogLevelNotice, "*** Hijacking connection %##a for %##a\n", &conn->peerAddr, &inHijacker->peerAddr );
    e8864c6c:	03200593          	li	a1,50
    e8864c70:	855a                	mv	a0,s6
    e8864c72:	c00ef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8864c76:	d565                	beqz	a0,e8864c5e <_requestProcessSetupPlist+0x156>
    e8864c78:	bfc9                	j	e8864c4a <_requestProcessSetupPlist+0x142>
				next = &conn->next;
    e8864c7a:	00848993          	addi	s3,s1,8
    e8864c7e:	b775                	j	e8864c2a <_requestProcessSetupPlist+0x122>
	require_action( CFGetTypeID( requestParams ) == CFDictionaryGetTypeID(), exit, status = kHTTPStatus_BadRequest );
    e8864c80:	cb2e20ef          	jal	ra,e8847132 <CFGetTypeID>
    e8864c84:	0005099b          	sext.w	s3,a0
    e8864c88:	f1ae20ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8864c8c:	2501                	sext.w	a0,a0
    e8864c8e:	eea998e3          	bne	s3,a0,e8864b7e <_requestProcessSetupPlist+0x76>
	u64 = CFDictionaryGetMACAddress( requestParams, CFSTR( kAirPlayKey_DeviceID ), NULL, &err );
    e8864c92:	870a                	mv	a4,sp
    e8864c94:	4699                	li	a3,6
    e8864c96:	4601                	li	a2,0
    e8864c98:	00039597          	auipc	a1,0x39
    e8864c9c:	e3858593          	addi	a1,a1,-456 # e889dad0 <icmp6_param_problem+0xa62>
    e8864ca0:	8526                	mv	a0,s1
    e8864ca2:	985e70ef          	jal	ra,e884c626 <CFDictionaryGetHardwareAddress>
	if( !err ) inCnx->clientDeviceID = u64;
    e8864ca6:	4782                	lw	a5,0(sp)
    e8864ca8:	e391                	bnez	a5,e8864cac <_requestProcessSetupPlist+0x1a4>
    e8864caa:	f008                	sd	a0,32(s0)
	snprintf( inCnx->ifName, sizeof( inCnx->ifName ), "%s", inCnx->httpCnx->ifName );
    e8864cac:	6414                	ld	a3,8(s0)
    e8864cae:	0c040a93          	addi	s5,s0,192
    e8864cb2:	00045617          	auipc	a2,0x45
    e8864cb6:	6ee60613          	addi	a2,a2,1774 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e8864cba:	07c68693          	addi	a3,a3,124
    e8864cbe:	459d                	li	a1,7
    e8864cc0:	8556                	mv	a0,s5
    e8864cc2:	58e170ef          	jal	ra,e887c250 <eLIBs_snprintf>
	CFDictionaryGetMACAddress( requestParams, CFSTR( kAirPlayKey_MACAddress ), inCnx->clientInterfaceMACAddress, &err );
    e8864cc6:	870a                	mv	a4,sp
    e8864cc8:	4699                	li	a3,6
    e8864cca:	02840613          	addi	a2,s0,40
    e8864cce:	00039597          	auipc	a1,0x39
    e8864cd2:	e1a58593          	addi	a1,a1,-486 # e889dae8 <icmp6_param_problem+0xa7a>
    e8864cd6:	8526                	mv	a0,s1
    e8864cd8:	94fe70ef          	jal	ra,e884c626 <CFDictionaryGetHardwareAddress>
	CFDictionaryGetCString( requestParams, CFSTR( kAirPlayKey_Name ), inCnx->clientName, sizeof( inCnx->clientName ), NULL );
    e8864cdc:	4701                	li	a4,0
    e8864cde:	08000693          	li	a3,128
    e8864ce2:	02e40613          	addi	a2,s0,46
    e8864ce6:	00039597          	auipc	a1,0x39
    e8864cea:	e1a58593          	addi	a1,a1,-486 # e889db00 <icmp6_param_problem+0xa92>
    e8864cee:	8526                	mv	a0,s1
    e8864cf0:	d46e70ef          	jal	ra,e884c236 <CFDictionaryGetCString>
	CFDictionaryGetData( requestParams, CFSTR( kAirPlayKey_SessionUUID ), sessionUUID, sizeof( sessionUUID ), &len, &err );
    e8864cf4:	878a                	mv	a5,sp
    e8864cf6:	0818                	addi	a4,sp,16
    e8864cf8:	46c1                	li	a3,16
    e8864cfa:	1010                	addi	a2,sp,32
    e8864cfc:	00039597          	auipc	a1,0x39
    e8864d00:	e1458593          	addi	a1,a1,-492 # e889db10 <icmp6_param_problem+0xaa2>
    e8864d04:	8526                	mv	a0,s1
    e8864d06:	d5ee80ef          	jal	ra,e884d264 <CFDictionaryGetData>
	if( !err )
    e8864d0a:	4782                	lw	a5,0(sp)
    e8864d0c:	ef91                	bnez	a5,e8864d28 <_requestProcessSetupPlist+0x220>
		require_action( len == sizeof( sessionUUID ), exit, err = kSizeErr; status = kHTTPStatus_BadRequest );
    e8864d0e:	6742                	ld	a4,16(sp)
    e8864d10:	47c1                	li	a5,16
    e8864d12:	00f70763          	beq	a4,a5,e8864d20 <_requestProcessSetupPlist+0x218>
    e8864d16:	77f9                	lui	a5,0xffffe
    e8864d18:	5a97879b          	addiw	a5,a5,1449
    e8864d1c:	c03e                	sw	a5,0(sp)
    e8864d1e:	b585                	j	e8864b7e <_requestProcessSetupPlist+0x76>
		inCnx->clientSessionID = ReadBig64( sessionUUID );
    e8864d20:	7782                	ld	a5,32(sp)
    e8864d22:	8207978b          	rev	a5,a5
    e8864d26:	f85c                	sd	a5,176(s0)
	CFDictionaryGetCString( requestParams, CFSTR( kAirPlayKey_SourceVersion ), cstr, sizeof( cstr ), NULL );
    e8864d28:	4701                	li	a4,0
    e8864d2a:	04000693          	li	a3,64
    e8864d2e:	0890                	addi	a2,sp,80
    e8864d30:	00039597          	auipc	a1,0x39
    e8864d34:	d7058593          	addi	a1,a1,-656 # e889daa0 <icmp6_param_problem+0xa32>
    e8864d38:	8526                	mv	a0,s1
	*cstr = '\0';
    e8864d3a:	04010823          	sb	zero,80(sp)
	CFDictionaryGetCString( requestParams, CFSTR( kAirPlayKey_SourceVersion ), cstr, sizeof( cstr ), NULL );
    e8864d3e:	cf8e70ef          	jal	ra,e884c236 <CFDictionaryGetCString>
	if( *cstr != '\0' ) inCnx->clientVersion = TextToSourceVersion( cstr, kSizeCString );
    e8864d42:	05014783          	lbu	a5,80(sp)
    e8864d46:	c799                	beqz	a5,e8864d54 <_requestProcessSetupPlist+0x24c>
    e8864d48:	55fd                	li	a1,-1
    e8864d4a:	0888                	addi	a0,sp,80
    e8864d4c:	b7cfa0ef          	jal	ra,e885f0c8 <TextToSourceVersion>
    e8864d50:	0aa42c23          	sw	a0,184(s0)
	if( !inCnx->session )
    e8864d54:	681c                	ld	a5,16(s0)
    e8864d56:	e38d                	bnez	a5,e8864d78 <_requestProcessSetupPlist+0x270>
		err = _requestCreateSession( inCnx, true );
    e8864d58:	8522                	mv	a0,s0
    e8864d5a:	d35ff0ef          	jal	ra,e8864a8e <_requestCreateSession.constprop.15>
    e8864d5e:	c02a                	sw	a0,0(sp)
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8864d60:	1f400993          	li	s3,500
    e8864d64:	e0051fe3          	bnez	a0,e8864b82 <_requestProcessSetupPlist+0x7a>
		strlcpy( gAirPlayAudioStats.ifname, inCnx->ifName, sizeof( gAirPlayAudioStats.ifname ) );
    e8864d68:	461d                	li	a2,7
    e8864d6a:	85d6                	mv	a1,s5
    e8864d6c:	0007f517          	auipc	a0,0x7f
    e8864d70:	05050513          	addi	a0,a0,80 # e88e3dbc <gAirPlayAudioStats+0x24>
    e8864d74:	d0bfa0ef          	jal	ra,e885fa7e <strlcpy>
	if( inCnx->pairVerifySessionHomeKit )
    e8864d78:	786c                	ld	a1,240(s0)
    e8864d7a:	c1a5                	beqz	a1,e8864dda <_requestProcessSetupPlist+0x2d2>
		AirPlayReceiverSessionSetHomeKitSecurityContext( inCnx->session, inCnx->pairVerifySessionHomeKit );
    e8864d7c:	6808                	ld	a0,16(s0)
    e8864d7e:	511070ef          	jal	ra,e886ca8e <AirPlayReceiverSessionSetHomeKitSecurityContext>
	err = AirPlayReceiverSessionSetup( inCnx->session, requestParams, &responseParams );
    e8864d82:	6808                	ld	a0,16(s0)
    e8864d84:	0030                	addi	a2,sp,8
    e8864d86:	85a6                	mv	a1,s1
    e8864d88:	05c080ef          	jal	ra,e886cde4 <AirPlayReceiverSessionSetup>
    e8864d8c:	c02a                	sw	a0,0(sp)
	require_noerr_action( err, exit, status = kHTTPStatus_BadRequest );
    e8864d8e:	de0518e3          	bnez	a0,e8864b7e <_requestProcessSetupPlist+0x76>
	inCnx->didAnnounce		= true;
    e8864d92:	10100793          	li	a5,257
    e8864d96:	0af41e23          	sh	a5,188(s0)
	inCnx->didScreenSetup	= true;
    e8864d9a:	4785                	li	a5,1
    e8864d9c:	0af40f23          	sb	a5,190(s0)
	AirPlayReceiverServerSetBoolean( inCnx->server, CFSTR( kAirPlayProperty_Playing ), NULL, true );
    e8864da0:	00070797          	auipc	a5,0x70
    e8864da4:	f3078793          	addi	a5,a5,-208 # e88d4cd0 <kCFLBooleanTrue>
    e8864da8:	0007b803          	ld	a6,0(a5)
    e8864dac:	6008                	ld	a0,0(s0)
    e8864dae:	4781                	li	a5,0
    e8864db0:	00039717          	auipc	a4,0x39
    e8864db4:	ce070713          	addi	a4,a4,-800 # e889da90 <icmp6_param_problem+0xa22>
    e8864db8:	4685                	li	a3,1
    e8864dba:	00001617          	auipc	a2,0x1
    e8864dbe:	b0e60613          	addi	a2,a2,-1266 # e88658c8 <AirPlayReceiverServerSetProperty>
    e8864dc2:	4581                	li	a1,0
    e8864dc4:	a75e60ef          	jal	ra,e884b838 <CFObjectSetProperty>
	status = _requestSendPlistResponse( inCnx->httpCnx, inRequest, responseParams, &err );
    e8864dc8:	641c                	ld	a5,8(s0)
    e8864dca:	6622                	ld	a2,8(sp)
    e8864dcc:	868a                	mv	a3,sp
    e8864dce:	77e8                	ld	a0,232(a5)
    e8864dd0:	85d2                	mv	a1,s4
    e8864dd2:	b73ff0ef          	jal	ra,e8864944 <_requestSendPlistResponse.isra.9>
    e8864dd6:	89aa                	mv	s3,a0
exit:
    e8864dd8:	b36d                	j	e8864b82 <_requestProcessSetupPlist+0x7a>
		et = (AirPlayEncryptionType) CFDictionaryGetInt64( requestParams, CFSTR( kAirPlayKey_EncryptionType ), &err );
    e8864dda:	860a                	mv	a2,sp
    e8864ddc:	00039597          	auipc	a1,0x39
    e8864de0:	d4c58593          	addi	a1,a1,-692 # e889db28 <icmp6_param_problem+0xaba>
    e8864de4:	8526                	mv	a0,s1
    e8864de6:	88be70ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
		if( !err && ( et != kAirPlayEncryptionType_None ) )
    e8864dea:	4782                	lw	a5,0(sp)
    e8864dec:	fbd9                	bnez	a5,e8864d82 <_requestProcessSetupPlist+0x27a>
		et = (AirPlayEncryptionType) CFDictionaryGetInt64( requestParams, CFSTR( kAirPlayKey_EncryptionType ), &err );
    e8864dee:	0005099b          	sext.w	s3,a0
		if( !err && ( et != kAirPlayEncryptionType_None ) )
    e8864df2:	4785                	li	a5,1
    e8864df4:	f8f987e3          	beq	s3,a5,e8864d82 <_requestProcessSetupPlist+0x27a>
	keyPtr = CFDictionaryGetData( inRequestParams, CFSTR( kAirPlayKey_EncryptionKey ), NULL, 0, &len, &err );
    e8864df8:	005c                	addi	a5,sp,4
    e8864dfa:	00039597          	auipc	a1,0x39
    e8864dfe:	d3e58593          	addi	a1,a1,-706 # e889db38 <icmp6_param_problem+0xaca>
    e8864e02:	0838                	addi	a4,sp,24
    e8864e04:	4681                	li	a3,0
    e8864e06:	4601                	li	a2,0
    e8864e08:	8526                	mv	a0,s1
    e8864e0a:	c5ae80ef          	jal	ra,e884d264 <CFDictionaryGetData>
    e8864e0e:	85aa                	mv	a1,a0
	require_noerr( err, exit );
    e8864e10:	4792                	lw	a5,4(sp)
    e8864e12:	e38d                	bnez	a5,e8864e34 <_requestProcessSetupPlist+0x32c>
	else if( inType == kAirPlayEncryptionType_MFi_SAPv1 )
    e8864e14:	47c1                	li	a5,16
    e8864e16:	04f99663          	bne	s3,a5,e8864e62 <_requestProcessSetupPlist+0x35a>
		require_action( inCnx->MFiSAP, exit, err = kAuthenticationErr );
    e8864e1a:	6c68                	ld	a0,216(s0)
    e8864e1c:	e511                	bnez	a0,e8864e28 <_requestProcessSetupPlist+0x320>
    e8864e1e:	77f9                	lui	a5,0xffffe
    e8864e20:	59e7879b          	addiw	a5,a5,1438
	require_action( len == 16, exit, err = kSizeErr );
    e8864e24:	c23e                	sw	a5,4(sp)
    e8864e26:	a039                	j	e8864e34 <_requestProcessSetupPlist+0x32c>
		err = MFiSAP_Decrypt( inCnx->MFiSAP, keyPtr, len, inKeyBuf );
    e8864e28:	6662                	ld	a2,24(sp)
    e8864e2a:	1814                	addi	a3,sp,48
    e8864e2c:	a47ef0ef          	jal	ra,e8854872 <MFiSAP_Decrypt>
    e8864e30:	c22a                	sw	a0,4(sp)
		require_noerr( err, exit );
    e8864e32:	c141                	beqz	a0,e8864eb2 <_requestProcessSetupPlist+0x3aa>
	return( err );
    e8864e34:	4792                	lw	a5,4(sp)
			require_noerr_action( err, exit, status = kHTTPStatus_KeyManagementError );
    e8864e36:	1d200993          	li	s3,466
			err = _requestDecryptKey( inCnx, requestParams, et, key, iv );
    e8864e3a:	c03e                	sw	a5,0(sp)
			require_noerr_action( err, exit, status = kHTTPStatus_KeyManagementError );
    e8864e3c:	d40793e3          	bnez	a5,e8864b82 <_requestProcessSetupPlist+0x7a>
			err = AirPlayReceiverSessionSetSecurityInfo( inCnx->session, key, iv );
    e8864e40:	6808                	ld	a0,16(s0)
    e8864e42:	04010993          	addi	s3,sp,64
    e8864e46:	864e                	mv	a2,s3
    e8864e48:	180c                	addi	a1,sp,48
    e8864e4a:	477070ef          	jal	ra,e886cac0 <AirPlayReceiverSessionSetSecurityInfo>
    e8864e4e:	c02a                	sw	a0,0(sp)
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e8864e50:	181c                	addi	a5,sp,48
	while( inLen-- ) *ptr++ = 0;
    e8864e52:	1817d00b          	sbia	zero,(a5),1,0
    e8864e56:	ff379ee3          	bne	a5,s3,e8864e52 <_requestProcessSetupPlist+0x34a>
			require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8864e5a:	1f400993          	li	s3,500
    e8864e5e:	d115                	beqz	a0,e8864d82 <_requestProcessSetupPlist+0x27a>
    e8864e60:	b30d                	j	e8864b82 <_requestProcessSetupPlist+0x7a>
		aprs_ulog( kLogLevelWarning, "### Bad ET: %d\n", inType );
    e8864e62:	00092783          	lw	a5,0(s2)
    e8864e66:	03c00713          	li	a4,60
    e8864e6a:	02f74663          	blt	a4,a5,e8864e96 <_requestProcessSetupPlist+0x38e>
    e8864e6e:	577d                	li	a4,-1
    e8864e70:	02e78763          	beq	a5,a4,e8864e9e <_requestProcessSetupPlist+0x396>
    e8864e74:	874e                	mv	a4,s3
    e8864e76:	00065697          	auipc	a3,0x65
    e8864e7a:	a7a68693          	addi	a3,a3,-1414 # e88c98f0 <__PRETTY_FUNCTION__.14166+0x200>
    e8864e7e:	03c00613          	li	a2,60
    e8864e82:	00065597          	auipc	a1,0x65
    e8864e86:	85658593          	addi	a1,a1,-1962 # e88c96d8 <__PRETTY_FUNCTION__.14156>
    e8864e8a:	00070517          	auipc	a0,0x70
    e8864e8e:	31650513          	addi	a0,a0,790 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864e92:	de2ef0ef          	jal	ra,e8854474 <LogPrintF>
		err = kParamErr;
    e8864e96:	77f9                	lui	a5,0xffffe
    e8864e98:	5cf7879b          	addiw	a5,a5,1487
    e8864e9c:	b761                	j	e8864e24 <_requestProcessSetupPlist+0x31c>
		aprs_ulog( kLogLevelWarning, "### Bad ET: %d\n", inType );
    e8864e9e:	03c00593          	li	a1,60
    e8864ea2:	00070517          	auipc	a0,0x70
    e8864ea6:	2fe50513          	addi	a0,a0,766 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864eaa:	9c8ef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8864eae:	d565                	beqz	a0,e8864e96 <_requestProcessSetupPlist+0x38e>
    e8864eb0:	b7d1                	j	e8864e74 <_requestProcessSetupPlist+0x36c>
	CFDictionaryGetData( inRequestParams, CFSTR( kAirPlayKey_EncryptionIV ), inIVBuf, 16, &len, &err );
    e8864eb2:	005c                	addi	a5,sp,4
    e8864eb4:	0838                	addi	a4,sp,24
    e8864eb6:	46c1                	li	a3,16
    e8864eb8:	0090                	addi	a2,sp,64
    e8864eba:	00039597          	auipc	a1,0x39
    e8864ebe:	c8e58593          	addi	a1,a1,-882 # e889db48 <icmp6_param_problem+0xada>
    e8864ec2:	8526                	mv	a0,s1
    e8864ec4:	ba0e80ef          	jal	ra,e884d264 <CFDictionaryGetData>
	require_noerr( err, exit );
    e8864ec8:	4792                	lw	a5,4(sp)
    e8864eca:	f7ad                	bnez	a5,e8864e34 <_requestProcessSetupPlist+0x32c>
	require_action( len == 16, exit, err = kSizeErr );
    e8864ecc:	67e2                	ld	a5,24(sp)
    e8864ece:	f73783e3          	beq	a5,s3,e8864e34 <_requestProcessSetupPlist+0x32c>
    e8864ed2:	77f9                	lui	a5,0xffffe
    e8864ed4:	5a97879b          	addiw	a5,a5,1449
    e8864ed8:	b7b1                	j	e8864e24 <_requestProcessSetupPlist+0x31c>
	if( err ) aprs_ulog( kLogLevelNotice, "### Setup session failed: %#m\n", err );
    e8864eda:	03200593          	li	a1,50
    e8864ede:	00070517          	auipc	a0,0x70
    e8864ee2:	2c250513          	addi	a0,a0,706 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8864ee6:	98cef0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8864eea:	ce0500e3          	beqz	a0,e8864bca <_requestProcessSetupPlist+0xc2>
    e8864eee:	b96d                	j	e8864ba8 <_requestProcessSetupPlist+0xa0>

00000000e8864ef0 <_CreateHTTPServerForPort.constprop.16>:
static HTTPServerRef _CreateHTTPServerForPort( AirPlayReceiverServerRef inServer, int inListenPort )
    e8864ef0:	7175                	addi	sp,sp,-144
    e8864ef2:	e122                	sd	s0,128(sp)
	HTTPServerDelegateInit( &delegate );
    e8864ef4:	4581                	li	a1,0
static HTTPServerRef _CreateHTTPServerForPort( AirPlayReceiverServerRef inServer, int inListenPort )
    e8864ef6:	842a                	mv	s0,a0
	HTTPServerDelegateInit( &delegate );
    e8864ef8:	07000613          	li	a2,112
    e8864efc:	0808                	addi	a0,sp,16
static HTTPServerRef _CreateHTTPServerForPort( AirPlayReceiverServerRef inServer, int inListenPort )
    e8864efe:	e506                	sd	ra,136(sp)
	httpServer = NULL;
    e8864f00:	e402                	sd	zero,8(sp)
	HTTPServerDelegateInit( &delegate );
    e8864f02:	492170ef          	jal	ra,e887c394 <eLIBs_memset>
	delegate.context				= inServer;
    e8864f06:	e822                	sd	s0,16(sp)
	delegate.connectionExtraLen		= sizeof( struct AirPlayReceiverConnectionPrivate );
    e8864f08:	13000793          	li	a5,304
    e8864f0c:	e4be                	sd	a5,72(sp)
	delegate.connectionCreated_f	= _HandleHTTPConnectionCreated;
    e8864f0e:	fffff797          	auipc	a5,0xfffff
    e8864f12:	17e78793          	addi	a5,a5,382 # e886408c <_HandleHTTPConnectionCreated>
	err = HTTPServerCreate( &httpServer, &delegate );
    e8864f16:	080c                	addi	a1,sp,16
    e8864f18:	0028                	addi	a0,sp,8
	delegate.connectionCreated_f	= _HandleHTTPConnectionCreated;
    e8864f1a:	e0be                	sd	a5,64(sp)
	err = HTTPServerCreate( &httpServer, &delegate );
    e8864f1c:	abaec0ef          	jal	ra,e88511d6 <HTTPServerCreate>
	require_noerr( err, exit );
    e8864f20:	e911                	bnez	a0,e8864f34 <_CreateHTTPServerForPort.constprop.16+0x44>
	httpServer->listenPort = -( inListenPort );
    e8864f22:	6522                	ld	a0,8(sp)
    e8864f24:	77f9                	lui	a5,0xffffe
    e8864f26:	4a87879b          	addiw	a5,a5,1192
    e8864f2a:	0cf52e23          	sw	a5,220(a0)
	HTTPServerSetDispatchQueue( httpServer, inServer->httpQueue );
    e8864f2e:	7c2c                	ld	a1,120(s0)
    e8864f30:	a78ec0ef          	jal	ra,e88511a8 <HTTPServerSetDispatchQueue>
}
    e8864f34:	60aa                	ld	ra,136(sp)
    e8864f36:	640a                	ld	s0,128(sp)
    e8864f38:	6522                	ld	a0,8(sp)
    e8864f3a:	6149                	addi	sp,sp,144
    e8864f3c:	8082                	ret

00000000e8864f3e <_RemoveHTTPServerConnectionsOfType.isra.11.part.12>:
static void _RemoveHTTPServerConnectionsOfType( AirPlayReceiverServerRef inServer, HTTPServerRef inHTTPServer, AirPlayHTTPConnectionTypes inConnectionTypeToRemove )
    e8864f3e:	7179                	addi	sp,sp,-48
    e8864f40:	ec4a                	sd	s2,24(sp)
    e8864f42:	892a                	mv	s2,a0
    p = malloc(len);
    e8864f44:	4541                	li	a0,16
    e8864f46:	e422                	sd	s0,8(sp)
    e8864f48:	e826                	sd	s1,16(sp)
    e8864f4a:	f04e                	sd	s3,32(sp)
    e8864f4c:	f406                	sd	ra,40(sp)
    e8864f4e:	84ae                	mv	s1,a1
    e8864f50:	89b2                	mv	s3,a2
    e8864f52:	0fd160ef          	jal	ra,e887b84e <my_malloc>
    e8864f56:	842a                	mv	s0,a0
    memset(p,0,len);
    e8864f58:	4641                	li	a2,16
    e8864f5a:	4581                	li	a1,0
    e8864f5c:	438170ef          	jal	ra,e887c394 <eLIBs_memset>
	require( params, exit );
    e8864f60:	c415                	beqz	s0,e8864f8c <_RemoveHTTPServerConnectionsOfType.isra.11.part.12+0x4e>
	CFRetain( inHTTPServer );			// it will be released in _RemoveHTTPServerConnections
    e8864f62:	8526                	mv	a0,s1
    e8864f64:	9e2e20ef          	jal	ra,e8847146 <CFRetain>
	params->httpServer = inHTTPServer;
    e8864f68:	e404                	sd	s1,8(s0)
	params->connectionTypeToRemove = inConnectionTypeToRemove;
    e8864f6a:	01340023          	sb	s3,0(s0)
	dispatch_sync_f( inServer->httpQueue, params, _RemoveHTTPServerConnections );
    e8864f6e:	85a2                	mv	a1,s0
}
    e8864f70:	6422                	ld	s0,8(sp)
	dispatch_sync_f( inServer->httpQueue, params, _RemoveHTTPServerConnections );
    e8864f72:	00093503          	ld	a0,0(s2)
}
    e8864f76:	70a2                	ld	ra,40(sp)
    e8864f78:	64c2                	ld	s1,16(sp)
    e8864f7a:	6962                	ld	s2,24(sp)
    e8864f7c:	7982                	ld	s3,32(sp)
	dispatch_sync_f( inServer->httpQueue, params, _RemoveHTTPServerConnections );
    e8864f7e:	fffff617          	auipc	a2,0xfffff
    e8864f82:	75060613          	addi	a2,a2,1872 # e88646ce <_RemoveHTTPServerConnections>
}
    e8864f86:	6145                	addi	sp,sp,48
	dispatch_sync_f( inServer->httpQueue, params, _RemoveHTTPServerConnections );
    e8864f88:	d97e906f          	j	e884ed1e <dispatch_sync_f>
}
    e8864f8c:	70a2                	ld	ra,40(sp)
    e8864f8e:	6422                	ld	s0,8(sp)
    e8864f90:	64c2                	ld	s1,16(sp)
    e8864f92:	6962                	ld	s2,24(sp)
    e8864f94:	7982                	ld	s3,32(sp)
    e8864f96:	6145                	addi	sp,sp,48
    e8864f98:	8082                	ret

00000000e8864f9a <AirPlayGetDeviceID>:
{
    e8864f9a:	1141                	addi	sp,sp,-16
    e8864f9c:	e022                	sd	s0,0(sp)
    e8864f9e:	e406                	sd	ra,8(sp)
    e8864fa0:	842a                	mv	s0,a0
	if( outDeviceID )	memcpy( outDeviceID, inServer->deviceID, 6 );
    e8864fa2:	c599                	beqz	a1,e8864fb0 <AirPlayGetDeviceID+0x16>
    e8864fa4:	852e                	mv	a0,a1
    e8864fa6:	4619                	li	a2,6
    e8864fa8:	09340593          	addi	a1,s0,147
    e8864fac:	3f4170ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	return( ReadBig48( inServer->deviceID ) );
    e8864fb0:	09444503          	lbu	a0,148(s0)
    e8864fb4:	09344783          	lbu	a5,147(s0)
}
    e8864fb8:	60a2                	ld	ra,8(sp)
	return( ReadBig48( inServer->deviceID ) );
    e8864fba:	1502                	slli	a0,a0,0x20
    e8864fbc:	17a2                	slli	a5,a5,0x28
    e8864fbe:	8fc9                	or	a5,a5,a0
    e8864fc0:	09844503          	lbu	a0,152(s0)
    e8864fc4:	8fc9                	or	a5,a5,a0
    e8864fc6:	09544503          	lbu	a0,149(s0)
    e8864fca:	0562                	slli	a0,a0,0x18
    e8864fcc:	8fc9                	or	a5,a5,a0
    e8864fce:	09644503          	lbu	a0,150(s0)
    e8864fd2:	0542                	slli	a0,a0,0x10
    e8864fd4:	8fc9                	or	a5,a5,a0
    e8864fd6:	09744503          	lbu	a0,151(s0)
}
    e8864fda:	6402                	ld	s0,0(sp)
	return( ReadBig48( inServer->deviceID ) );
    e8864fdc:	0522                	slli	a0,a0,0x8
}
    e8864fde:	8d5d                	or	a0,a0,a5
    e8864fe0:	0141                	addi	sp,sp,16
    e8864fe2:	8082                	ret

00000000e8864fe4 <AirPlayGetDeviceName>:
	require_action( inMaxLen > 0, exit, err = kSizeErr );
    e8864fe4:	c185                	beqz	a1,e8865004 <AirPlayGetDeviceName+0x20>
{
    e8864fe6:	1141                	addi	sp,sp,-16
    e8864fe8:	e406                	sd	ra,8(sp)
    e8864fea:	862e                	mv	a2,a1
	*inBuffer = '\0';
    e8864fec:	00050023          	sb	zero,0(a0)
		strlcpy( inBuffer, "CarPlay", inMaxLen );
    e8864ff0:	00064597          	auipc	a1,0x64
    e8864ff4:	d3058593          	addi	a1,a1,-720 # e88c8d20 <__PRETTY_FUNCTION__.13159+0x30>
    e8864ff8:	a87fa0ef          	jal	ra,e885fa7e <strlcpy>
}
    e8864ffc:	60a2                	ld	ra,8(sp)
	err = kNoErr;
    e8864ffe:	4501                	li	a0,0
}
    e8865000:	0141                	addi	sp,sp,16
    e8865002:	8082                	ret
	require_action( inMaxLen > 0, exit, err = kSizeErr );
    e8865004:	7579                	lui	a0,0xffffe
    e8865006:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
}
    e886500a:	8082                	ret

00000000e886500c <AirPlayGetFeatures>:
{
    e886500c:	1141                	addi	sp,sp,-16
	features |= AirPlayReceiverServerPlatformGetInt64( inServer, CFSTR( kAirPlayProperty_Features ), NULL, NULL );
    e886500e:	4781                	li	a5,0
    e8865010:	4801                	li	a6,0
    e8865012:	00039717          	auipc	a4,0x39
    e8865016:	b4670713          	addi	a4,a4,-1210 # e889db58 <icmp6_param_problem+0xaea>
    e886501a:	4685                	li	a3,1
    e886501c:	fffff617          	auipc	a2,0xfffff
    e8865020:	a7860613          	addi	a2,a2,-1416 # e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865024:	4581                	li	a1,0
{
    e8865026:	e406                	sd	ra,8(sp)
	features |= AirPlayReceiverServerPlatformGetInt64( inServer, CFSTR( kAirPlayProperty_Features ), NULL, NULL );
    e8865028:	e51e60ef          	jal	ra,e884be78 <CFObjectGetPropertyInt64Sync>
}
    e886502c:	60a2                	ld	ra,8(sp)
	features |= AirPlayReceiverServerPlatformGetInt64( inServer, CFSTR( kAirPlayProperty_Features ), NULL, NULL );
    e886502e:	420817b7          	lui	a5,0x42081
}
    e8865032:	80578793          	addi	a5,a5,-2043 # 42080805 <memcmp-0xa677f7fb>
    e8865036:	079e                	slli	a5,a5,0x7
    e8865038:	8d5d                	or	a0,a0,a5
    e886503a:	0141                	addi	sp,sp,16
    e886503c:	8082                	ret

00000000e886503e <AirPlayGetMinimumClientOSBuildVersion>:
{
    e886503e:	715d                	addi	sp,sp,-80
    e8865040:	e0a2                	sd	s0,64(sp)
	AirPlayGetConfigCString( inServer, CFSTR( kAirPlayKey_ClientOSBuildVersionMin ), inBuffer, inMaxLen, &err );
    e8865042:	1060                	addi	s0,sp,44
    e8865044:	86b2                	mv	a3,a2
    e8865046:	ec32                	sd	a2,24(sp)
    e8865048:	e82e                	sd	a1,16(sp)
    e886504a:	862e                	mv	a2,a1
    e886504c:	8722                	mv	a4,s0
    e886504e:	00039597          	auipc	a1,0x39
    e8865052:	b2258593          	addi	a1,a1,-1246 # e889db70 <icmp6_param_problem+0xb02>
{
    e8865056:	fc26                	sd	s1,56(sp)
    e8865058:	e486                	sd	ra,72(sp)
    e886505a:	84aa                	mv	s1,a0
	AirPlayGetConfigCString( inServer, CFSTR( kAirPlayKey_ClientOSBuildVersionMin ), inBuffer, inMaxLen, &err );
    e886505c:	f1bfe0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
	if( err) {
    e8865060:	57b2                	lw	a5,44(sp)
    e8865062:	fb11480b          	ldd	a6,a7,(sp),1,4
    e8865066:	c385                	beqz	a5,e8865086 <AirPlayGetMinimumClientOSBuildVersion+0x48>
		AirPlayReceiverServerGetCString( inServer, CFSTR( kAirPlayKey_ClientOSBuildVersionMin ), NULL, inBuffer, inMaxLen, &err );
    e8865068:	e022                	sd	s0,0(sp)
    e886506a:	4781                	li	a5,0
    e886506c:	00039717          	auipc	a4,0x39
    e8865070:	b0470713          	addi	a4,a4,-1276 # e889db70 <icmp6_param_problem+0xb02>
    e8865074:	4685                	li	a3,1
    e8865076:	fffff617          	auipc	a2,0xfffff
    e886507a:	f7c60613          	addi	a2,a2,-132 # e8863ff2 <AirPlayReceiverServerCopyProperty>
    e886507e:	4581                	li	a1,0
    e8865080:	8526                	mv	a0,s1
    e8865082:	a45e60ef          	jal	ra,e884bac6 <CFObjectGetPropertyCStringSync>
}
    e8865086:	60a6                	ld	ra,72(sp)
    e8865088:	6406                	ld	s0,64(sp)
    e886508a:	5532                	lw	a0,44(sp)
    e886508c:	74e2                	ld	s1,56(sp)
    e886508e:	6161                	addi	sp,sp,80
    e8865090:	8082                	ret

00000000e8865092 <AirPlayCopyHomeKitPairingIdentity>:
{
    e8865092:	7139                	addi	sp,sp,-64
    e8865094:	fc91540b          	sdd	s0,s1,(sp),2,4
    e8865098:	f84a                	sd	s2,48(sp)
    e886509a:	84aa                	mv	s1,a0
    e886509c:	892e                	mv	s2,a1
	err = PairingSessionCreate( &pairingSession, NULL, kPairingSessionType_None );
    e886509e:	4601                	li	a2,0
    e88650a0:	4581                	li	a1,0
    e88650a2:	0828                	addi	a0,sp,24
{
    e88650a4:	fc06                	sd	ra,56(sp)
	err = PairingSessionCreate( &pairingSession, NULL, kPairingSessionType_None );
    e88650a6:	8a5f20ef          	jal	ra,e885794a <PairingSessionCreate>
	require_noerr( err, exit );
    e88650aa:	842a                	mv	s0,a0
    e88650ac:	ed21                	bnez	a0,e8865104 <AirPlayCopyHomeKitPairingIdentity+0x72>
	PairingSessionSetKeychainInfo_AirPlay( pairingSession );
    e88650ae:	478d                	li	a5,3
    e88650b0:	6562                	ld	a0,24(sp)
    e88650b2:	00039897          	auipc	a7,0x39
    e88650b6:	ade88893          	addi	a7,a7,-1314 # e889db90 <icmp6_param_problem+0xb22>
    e88650ba:	00039717          	auipc	a4,0x39
    e88650be:	afe70713          	addi	a4,a4,-1282 # e889dbb8 <icmp6_param_problem+0xb4a>
    e88650c2:	41505637          	lui	a2,0x41505
    e88650c6:	86ba                	mv	a3,a4
    e88650c8:	8846                	mv	a6,a7
    e88650ca:	e03e                	sd	a5,0(sp)
    e88650cc:	00039597          	auipc	a1,0x39
    e88650d0:	b1458593          	addi	a1,a1,-1260 # e889dbe0 <icmp6_param_problem+0xb72>
    e88650d4:	07260793          	addi	a5,a2,114 # 41505072 <memcmp-0xa72faf8e>
    e88650d8:	96460613          	addi	a2,a2,-1692
    e88650dc:	f94f20ef          	jal	ra,e8857870 <PairingSessionSetKeychainInfo>
	PairingSessionSetLogging( pairingSession, aprs_ucat() );
    e88650e0:	6562                	ld	a0,24(sp)
    e88650e2:	00070597          	auipc	a1,0x70
    e88650e6:	0be58593          	addi	a1,a1,190 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88650ea:	911f20ef          	jal	ra,e88579fa <PairingSessionSetLogging>
	err = PairingSessionCopyIdentity( pairingSession, true, outIdentifier, outPK, NULL );
    e88650ee:	6562                	ld	a0,24(sp)
    e88650f0:	4701                	li	a4,0
    e88650f2:	86ca                	mv	a3,s2
    e88650f4:	8626                	mv	a2,s1
    e88650f6:	4585                	li	a1,1
    e88650f8:	959f20ef          	jal	ra,e8857a50 <PairingSessionCopyIdentity>
    e88650fc:	842a                	mv	s0,a0
	CFRelease( pairingSession );
    e88650fe:	6562                	ld	a0,24(sp)
    e8865100:	84ae20ef          	jal	ra,e884714a <CFRelease>
}
    e8865104:	8522                	mv	a0,s0
    e8865106:	70e2                	ld	ra,56(sp)
    e8865108:	fc91440b          	ldd	s0,s1,(sp),2,4
    e886510c:	7942                	ld	s2,48(sp)
    e886510e:	6121                	addi	sp,sp,64
    e8865110:	8082                	ret

00000000e8865112 <AirPlayGetStatusFlags>:
{
    e8865112:	1141                	addi	sp,sp,-16
	flags |= (AirPlayStatusFlags) AirPlayReceiverServerPlatformGetInt64( inServer,
    e8865114:	4801                	li	a6,0
    e8865116:	4781                	li	a5,0
    e8865118:	00039717          	auipc	a4,0x39
    e886511c:	af070713          	addi	a4,a4,-1296 # e889dc08 <icmp6_param_problem+0xb9a>
    e8865120:	4685                	li	a3,1
    e8865122:	fffff617          	auipc	a2,0xfffff
    e8865126:	97260613          	addi	a2,a2,-1678 # e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e886512a:	4581                	li	a1,0
{
    e886512c:	e406                	sd	ra,8(sp)
	flags |= (AirPlayStatusFlags) AirPlayReceiverServerPlatformGetInt64( inServer,
    e886512e:	d4be60ef          	jal	ra,e884be78 <CFObjectGetPropertyInt64Sync>
}
    e8865132:	2501                	sext.w	a0,a0
    e8865134:	60a2                	ld	ra,8(sp)
    e8865136:	0141                	addi	sp,sp,16
    e8865138:	8082                	ret

00000000e886513a <_UpdateBonjourAirPlay>:
{
    e886513a:	d8010113          	addi	sp,sp,-640
    e886513e:	26913423          	sd	s1,616(sp)
    e8865142:	25413823          	sd	s4,592(sp)
	TXTRecordCreate( &txtRec, (uint16_t) sizeof( txtBuf ), txtBuf );
    e8865146:	0890                	addi	a2,sp,80
{
    e8865148:	84aa                	mv	s1,a0
    e886514a:	8a2e                	mv	s4,a1
	TXTRecordCreate( &txtRec, (uint16_t) sizeof( txtBuf ), txtBuf );
    e886514c:	0088                	addi	a0,sp,64
    e886514e:	10000593          	li	a1,256
{
    e8865152:	26113c23          	sd	ra,632(sp)
    e8865156:	26813823          	sd	s0,624(sp)
    e886515a:	27213023          	sd	s2,608(sp)
    e886515e:	25313c23          	sd	s3,600(sp)
	TXTRecordCreate( &txtRec, (uint16_t) sizeof( txtBuf ), txtBuf );
    e8865162:	c2cb50ef          	jal	ra,e881a58e <TXTRecordCreate>
	*cstr = '\0';
    e8865166:	14010823          	sb	zero,336(sp)
	err = AirPlayGetDeviceName( cstr, sizeof( cstr ) );
    e886516a:	10000593          	li	a1,256
    e886516e:	0a88                	addi	a0,sp,336
    e8865170:	e75ff0ef          	jal	ra,e8864fe4 <AirPlayGetDeviceName>
    e8865174:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8865176:	e15d                	bnez	a0,e886521c <_UpdateBonjourAirPlay+0xe2>
	MACAddressToCString( inServer->deviceID, cstr );
    e8865178:	0a90                	addi	a2,sp,336
    e886517a:	4599                	li	a1,6
    e886517c:	09348513          	addi	a0,s1,147
    e8865180:	f03f90ef          	jal	ra,e885f082 <HardwareAddressToCString>
	err = TXTRecordSetValue( &txtRec, kAirPlayTXTKey_DeviceID, (uint8_t) strlen( cstr ), cstr );
    e8865184:	0a88                	addi	a0,sp,336
    e8865186:	192170ef          	jal	ra,e887c318 <eLIBs_strlen>
    e886518a:	0ff57613          	andi	a2,a0,255
    e886518e:	0a94                	addi	a3,sp,336
    e8865190:	00059597          	auipc	a1,0x59
    e8865194:	f3858593          	addi	a1,a1,-200 # e88be0c8 <__PRETTY_FUNCTION__.10585+0x300>
    e8865198:	0088                	addi	a0,sp,64
    e886519a:	c62b50ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e886519e:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88651a0:	ed35                	bnez	a0,e886521c <_UpdateBonjourAirPlay+0xe2>
	features = AirPlayGetFeatures( inServer );
    e88651a2:	8526                	mv	a0,s1
    e88651a4:	e69ff0ef          	jal	ra,e886500c <AirPlayGetFeatures>
	u32 = (uint32_t)( ( features >> 32 ) & UINT32_C( 0xFFFFFFFF ) );
    e88651a8:	02055713          	srli	a4,a0,0x20
	if( u32 != 0 )
    e88651ac:	0005069b          	sext.w	a3,a0
    e88651b0:	cb49                	beqz	a4,e8865242 <_UpdateBonjourAirPlay+0x108>
		n = snprintf( cstr, sizeof( cstr ), "0x%X,0x%X", (uint32_t)( features & UINT32_C( 0xFFFFFFFF ) ), u32 );
    e88651b2:	2701                	sext.w	a4,a4
    e88651b4:	00064617          	auipc	a2,0x64
    e88651b8:	13460613          	addi	a2,a2,308 # e88c92e8 <__PRETTY_FUNCTION__.13159+0x5f8>
    e88651bc:	10000593          	li	a1,256
    e88651c0:	0a88                	addi	a0,sp,336
    e88651c2:	08e170ef          	jal	ra,e887c250 <eLIBs_snprintf>
	err = TXTRecordSetValue( &txtRec, kAirPlayTXTKey_Features, (uint8_t) n, cstr );
    e88651c6:	0ff57613          	andi	a2,a0,255
    e88651ca:	0a94                	addi	a3,sp,336
    e88651cc:	00064597          	auipc	a1,0x64
    e88651d0:	13458593          	addi	a1,a1,308 # e88c9300 <__PRETTY_FUNCTION__.13159+0x610>
    e88651d4:	0088                	addi	a0,sp,64
    e88651d6:	c26b50ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e88651da:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88651dc:	e121                	bnez	a0,e886521c <_UpdateBonjourAirPlay+0xe2>
	AirPlayGetConfigCString( inServer, CFSTR( kAirPlayKey_FirmwareRevision ), cstr, sizeof( cstr ), NULL );
    e88651de:	4701                	li	a4,0
    e88651e0:	10000693          	li	a3,256
    e88651e4:	0a90                	addi	a2,sp,336
    e88651e6:	00039597          	auipc	a1,0x39
    e88651ea:	a3a58593          	addi	a1,a1,-1478 # e889dc20 <icmp6_param_problem+0xbb2>
    e88651ee:	8526                	mv	a0,s1
	*cstr = '\0';
    e88651f0:	14010823          	sb	zero,336(sp)
	AirPlayGetConfigCString( inServer, CFSTR( kAirPlayKey_FirmwareRevision ), cstr, sizeof( cstr ), NULL );
    e88651f4:	d83fe0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
	if( *cstr == '\0' )
    e88651f8:	15014783          	lbu	a5,336(sp)
    e88651fc:	cfa9                	beqz	a5,e8865256 <_UpdateBonjourAirPlay+0x11c>
		err = TXTRecordSetValue( &txtRec, kAirPlayTXTKey_FirmwareVersion, (uint8_t) strlen( cstr ), cstr );
    e88651fe:	0a88                	addi	a0,sp,336
    e8865200:	118170ef          	jal	ra,e887c318 <eLIBs_strlen>
    e8865204:	0ff57613          	andi	a2,a0,255
    e8865208:	0a94                	addi	a3,sp,336
    e886520a:	00064597          	auipc	a1,0x64
    e886520e:	10658593          	addi	a1,a1,262 # e88c9310 <__PRETTY_FUNCTION__.13159+0x620>
    e8865212:	0088                	addi	a0,sp,64
    e8865214:	be8b50ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e8865218:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e886521a:	c525                	beqz	a0,e8865282 <_UpdateBonjourAirPlay+0x148>
	TXTRecordDeallocate( &txtRec );
    e886521c:	0088                	addi	a0,sp,64
    e886521e:	b80b50ef          	jal	ra,e881a59e <TXTRecordDeallocate>
}
    e8865222:	26813483          	ld	s1,616(sp)
    e8865226:	8522                	mv	a0,s0
    e8865228:	27813083          	ld	ra,632(sp)
    e886522c:	27013403          	ld	s0,624(sp)
    e8865230:	26013903          	ld	s2,608(sp)
    e8865234:	25813983          	ld	s3,600(sp)
    e8865238:	25013a03          	ld	s4,592(sp)
    e886523c:	28010113          	addi	sp,sp,640
    e8865240:	8082                	ret
		n = snprintf( cstr, sizeof( cstr ), "0x%X", (uint32_t)( features & UINT32_C( 0xFFFFFFFF ) ) );
    e8865242:	00064617          	auipc	a2,0x64
    e8865246:	0b660613          	addi	a2,a2,182 # e88c92f8 <__PRETTY_FUNCTION__.13159+0x608>
    e886524a:	10000593          	li	a1,256
    e886524e:	0a88                	addi	a0,sp,336
    e8865250:	000170ef          	jal	ra,e887c250 <eLIBs_snprintf>
    e8865254:	bf8d                	j	e88651c6 <_UpdateBonjourAirPlay+0x8c>
		AirPlayReceiverServerPlatformGetCString( inServer, CFSTR( kAirPlayKey_FirmwareRevision ), NULL,
    e8865256:	4781                	li	a5,0
    e8865258:	e002                	sd	zero,0(sp)
    e886525a:	10000893          	li	a7,256
    e886525e:	15010813          	addi	a6,sp,336
    e8865262:	00039717          	auipc	a4,0x39
    e8865266:	9be70713          	addi	a4,a4,-1602 # e889dc20 <icmp6_param_problem+0xbb2>
    e886526a:	4685                	li	a3,1
    e886526c:	fffff617          	auipc	a2,0xfffff
    e8865270:	82860613          	addi	a2,a2,-2008 # e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865274:	4581                	li	a1,0
    e8865276:	8526                	mv	a0,s1
    e8865278:	84fe60ef          	jal	ra,e884bac6 <CFObjectGetPropertyCStringSync>
	if( *cstr != '\0' )
    e886527c:	15014783          	lbu	a5,336(sp)
    e8865280:	ffbd                	bnez	a5,e88651fe <_UpdateBonjourAirPlay+0xc4>
	u32 = AirPlayGetStatusFlags( inServer );
    e8865282:	8526                	mv	a0,s1
    e8865284:	e8fff0ef          	jal	ra,e8865112 <AirPlayGetStatusFlags>
    e8865288:	0005069b          	sext.w	a3,a0
	if( u32 != 0 )
    e886528c:	10069463          	bnez	a3,e8865394 <_UpdateBonjourAirPlay+0x25a>
	AirPlayReceiverServerPlatformGetCString( inServer, CFSTR( kAirPlayKey_Model ), NULL, cstr, sizeof( cstr ), NULL );
    e8865290:	4781                	li	a5,0
    e8865292:	e002                	sd	zero,0(sp)
    e8865294:	10000893          	li	a7,256
    e8865298:	15010813          	addi	a6,sp,336
    e886529c:	00039717          	auipc	a4,0x39
    e88652a0:	9a470713          	addi	a4,a4,-1628 # e889dc40 <icmp6_param_problem+0xbd2>
    e88652a4:	4685                	li	a3,1
    e88652a6:	ffffe617          	auipc	a2,0xffffe
    e88652aa:	7ee60613          	addi	a2,a2,2030 # e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e88652ae:	4581                	li	a1,0
    e88652b0:	8526                	mv	a0,s1
	*cstr = '\0';
    e88652b2:	14010823          	sb	zero,336(sp)
	AirPlayReceiverServerPlatformGetCString( inServer, CFSTR( kAirPlayKey_Model ), NULL, cstr, sizeof( cstr ), NULL );
    e88652b6:	811e60ef          	jal	ra,e884bac6 <CFObjectGetPropertyCStringSync>
	if( *cstr == '\0' )
    e88652ba:	15014783          	lbu	a5,336(sp)
    e88652be:	30079e63          	bnez	a5,e88655da <_UpdateBonjourAirPlay+0x4a0>
	AirPlayGetConfigCString( inServer, CFSTR( kAirPlayKey_Model ), inBuffer, inMaxLen, NULL );
    e88652c2:	4701                	li	a4,0
    e88652c4:	10000693          	li	a3,256
    e88652c8:	0a90                	addi	a2,sp,336
    e88652ca:	00039597          	auipc	a1,0x39
    e88652ce:	97658593          	addi	a1,a1,-1674 # e889dc40 <icmp6_param_problem+0xbd2>
    e88652d2:	8526                	mv	a0,s1
    e88652d4:	ca3fe0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
	if( *inBuffer == '\0' ) strlcpy( inBuffer, "AirPlayGeneric1,1", inMaxLen );		// If no model, use a default.
    e88652d8:	15014783          	lbu	a5,336(sp)
    e88652dc:	2e079f63          	bnez	a5,e88655da <_UpdateBonjourAirPlay+0x4a0>
    e88652e0:	10000613          	li	a2,256
    e88652e4:	00064597          	auipc	a1,0x64
    e88652e8:	03c58593          	addi	a1,a1,60 # e88c9320 <__PRETTY_FUNCTION__.13159+0x630>
    e88652ec:	0a88                	addi	a0,sp,336
    e88652ee:	f90fa0ef          	jal	ra,e885fa7e <strlcpy>
	if( *cstr != '\0' )
    e88652f2:	15014783          	lbu	a5,336(sp)
    e88652f6:	2e079263          	bnez	a5,e88655da <_UpdateBonjourAirPlay+0x4a0>
	if( strcmp( ptr, "1.0" ) != 0 )
    e88652fa:	00064597          	auipc	a1,0x64
    e88652fe:	03e58593          	addi	a1,a1,62 # e88c9338 <__PRETTY_FUNCTION__.13159+0x648>
    e8865302:	852e                	mv	a0,a1
    e8865304:	038170ef          	jal	ra,e887c33c <eLIBs_strcmp>
    e8865308:	ed4d                	bnez	a0,e88653c2 <_UpdateBonjourAirPlay+0x288>
	err = AirPlayCopyHomeKitPairingIdentity( &cptr, NULL );
    e886530a:	4581                	li	a1,0
    e886530c:	1828                	addi	a0,sp,56
    e886530e:	d85ff0ef          	jal	ra,e8865092 <AirPlayCopyHomeKitPairingIdentity>
    e8865312:	872a                	mv	a4,a0
	if( !err )	
    e8865314:	0c051e63          	bnez	a0,e88653f0 <_UpdateBonjourAirPlay+0x2b6>
		err = TXTRecordSetValue( &txtRec, kAirPlayTXTKey_PublicHKID, (uint8_t) strlen( cptr ), cptr );
    e8865318:	7562                	ld	a0,56(sp)
    e886531a:	7ff160ef          	jal	ra,e887c318 <eLIBs_strlen>
    e886531e:	0ff57613          	andi	a2,a0,255
    e8865322:	76e2                	ld	a3,56(sp)
    e8865324:	00064597          	auipc	a1,0x64
    e8865328:	02c58593          	addi	a1,a1,44 # e88c9350 <__PRETTY_FUNCTION__.13159+0x660>
    e886532c:	0088                	addi	a0,sp,64
    e886532e:	aceb50ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e8865332:	842a                	mv	s0,a0
		free( cptr );
    e8865334:	7562                	ld	a0,56(sp)
    e8865336:	7cb160ef          	jal	ra,e887c300 <eLIBs_free>
		require_noerr( err, exit );
    e886533a:	ee0411e3          	bnez	s0,e886521c <_UpdateBonjourAirPlay+0xe2>
	err = TXTRecordSetValue( &txtRec, kAirPlayTXTKey_SourceVersion, (uint8_t) strlen( ptr ), ptr );
    e886533e:	00067517          	auipc	a0,0x67
    e8865342:	e6250513          	addi	a0,a0,-414 # e88cc1a0 <__PRETTY_FUNCTION__.9875+0x2f0>
    e8865346:	7d3160ef          	jal	ra,e887c318 <eLIBs_strlen>
    e886534a:	0ff57613          	andi	a2,a0,255
    e886534e:	00067697          	auipc	a3,0x67
    e8865352:	e5268693          	addi	a3,a3,-430 # e88cc1a0 <__PRETTY_FUNCTION__.9875+0x2f0>
    e8865356:	00064597          	auipc	a1,0x64
    e886535a:	04a58593          	addi	a1,a1,74 # e88c93a0 <__PRETTY_FUNCTION__.13159+0x6b0>
    e886535e:	0088                	addi	a0,sp,64
    e8865360:	a9cb50ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e8865364:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8865366:	ea051be3          	bnez	a0,e886521c <_UpdateBonjourAirPlay+0xe2>
	txtPtr = TXTRecordGetBytesPtr( &txtRec );
    e886536a:	0088                	addi	a0,sp,64
    e886536c:	bb4b50ef          	jal	ra,e881a720 <TXTRecordGetBytesPtr>
    e8865370:	89aa                	mv	s3,a0
	txtLen = TXTRecordGetLength( &txtRec );
    e8865372:	0088                	addi	a0,sp,64
    e8865374:	ba6b50ef          	jal	ra,e881a71a <TXTRecordGetLength>
    e8865378:	892a                	mv	s2,a0
	if( outTXTRecord )
    e886537a:	0c0a0163          	beqz	s4,e886543c <_UpdateBonjourAirPlay+0x302>
		data = CFDataCreate( NULL, txtPtr, txtLen );
    e886537e:	0005061b          	sext.w	a2,a0
    e8865382:	85ce                	mv	a1,s3
    e8865384:	4501                	li	a0,0
    e8865386:	f11e10ef          	jal	ra,e8847296 <CFDataCreate>
		require_action( data, exit, err = kNoMemoryErr );
    e886538a:	24050063          	beqz	a0,e88655ca <_UpdateBonjourAirPlay+0x490>
		*outTXTRecord = data;
    e886538e:	00aa3023          	sd	a0,0(s4)
		goto exit;
    e8865392:	b569                	j	e886521c <_UpdateBonjourAirPlay+0xe2>
		n = snprintf( cstr, sizeof( cstr ), "0x%x", u32 );
    e8865394:	00064617          	auipc	a2,0x64
    e8865398:	f8460613          	addi	a2,a2,-124 # e88c9318 <__PRETTY_FUNCTION__.13159+0x628>
    e886539c:	10000593          	li	a1,256
    e88653a0:	0a88                	addi	a0,sp,336
    e88653a2:	6af160ef          	jal	ra,e887c250 <eLIBs_snprintf>
		err = TXTRecordSetValue( &txtRec, kAirPlayTXTKey_Flags, (uint8_t) n, cstr );
    e88653a6:	0ff57613          	andi	a2,a0,255
    e88653aa:	0a94                	addi	a3,sp,336
    e88653ac:	0005c597          	auipc	a1,0x5c
    e88653b0:	02c58593          	addi	a1,a1,44 # e88c13d8 <__PRETTY_FUNCTION__.9824+0x90>
    e88653b4:	0088                	addi	a0,sp,64
    e88653b6:	a46b50ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e88653ba:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e88653bc:	ec050ae3          	beqz	a0,e8865290 <_UpdateBonjourAirPlay+0x156>
    e88653c0:	bdb1                	j	e886521c <_UpdateBonjourAirPlay+0xe2>
		err = TXTRecordSetValue( &txtRec, kAirPlayTXTKey_ProtocolVersion, (uint8_t) strlen( ptr ), ptr );
    e88653c2:	00064517          	auipc	a0,0x64
    e88653c6:	f7650513          	addi	a0,a0,-138 # e88c9338 <__PRETTY_FUNCTION__.13159+0x648>
    e88653ca:	74f160ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88653ce:	0ff57613          	andi	a2,a0,255
    e88653d2:	00064697          	auipc	a3,0x64
    e88653d6:	f6668693          	addi	a3,a3,-154 # e88c9338 <__PRETTY_FUNCTION__.13159+0x648>
    e88653da:	00064597          	auipc	a1,0x64
    e88653de:	f6658593          	addi	a1,a1,-154 # e88c9340 <__PRETTY_FUNCTION__.13159+0x650>
    e88653e2:	0088                	addi	a0,sp,64
    e88653e4:	a18b50ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e88653e8:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e88653ea:	f20500e3          	beqz	a0,e886530a <_UpdateBonjourAirPlay+0x1d0>
    e88653ee:	b53d                	j	e886521c <_UpdateBonjourAirPlay+0xe2>
		aprs_ulog( kLogLevelNotice, "### Add pairing HomeKit peer identifier to advertiser info failed: %#m\n", err );
    e88653f0:	00070517          	auipc	a0,0x70
    e88653f4:	db050513          	addi	a0,a0,-592 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88653f8:	411c                	lw	a5,0(a0)
    e88653fa:	03200693          	li	a3,50
    e88653fe:	f4f6c0e3          	blt	a3,a5,e886533e <_UpdateBonjourAirPlay+0x204>
    e8865402:	56fd                	li	a3,-1
    e8865404:	02d78363          	beq	a5,a3,e886542a <_UpdateBonjourAirPlay+0x2f0>
    e8865408:	00064697          	auipc	a3,0x64
    e886540c:	f5068693          	addi	a3,a3,-176 # e88c9358 <__PRETTY_FUNCTION__.13159+0x668>
    e8865410:	03200613          	li	a2,50
    e8865414:	00064597          	auipc	a1,0x64
    e8865418:	0bc58593          	addi	a1,a1,188 # e88c94d0 <__PRETTY_FUNCTION__.13747>
    e886541c:	00070517          	auipc	a0,0x70
    e8865420:	d8450513          	addi	a0,a0,-636 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8865424:	850ef0ef          	jal	ra,e8854474 <LogPrintF>
    e8865428:	bf19                	j	e886533e <_UpdateBonjourAirPlay+0x204>
    e886542a:	03200593          	li	a1,50
    e886542e:	f43a                	sd	a4,40(sp)
    e8865430:	c43ee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8865434:	7722                	ld	a4,40(sp)
    e8865436:	f00504e3          	beqz	a0,e886533e <_UpdateBonjourAirPlay+0x204>
    e886543a:	b7f9                	j	e8865408 <_UpdateBonjourAirPlay+0x2ce>
	if( inServer->bonjourAirPlay )
    e886543c:	74a8                	ld	a0,104(s1)
    e886543e:	e139                	bnez	a0,e8865484 <_UpdateBonjourAirPlay+0x34a>
{
    e8865440:	4401                	li	s0,0
	if( !inServer->bonjourAirPlay )
    e8865442:	74bc                	ld	a5,104(s1)
    e8865444:	dc079ce3          	bnez	a5,e886521c <_UpdateBonjourAirPlay+0xe2>
		AirPlayGetDeviceName( cstr, sizeof( cstr ) );
    e8865448:	10000593          	li	a1,256
    e886544c:	0a88                	addi	a0,sp,336
		*cstr = '\0';
    e886544e:	14010823          	sb	zero,336(sp)
		AirPlayGetDeviceName( cstr, sizeof( cstr ) );
    e8865452:	b93ff0ef          	jal	ra,e8864fe4 <AirPlayGetDeviceName>
		port = (uint16_t) _GetListenPort( inServer );
    e8865456:	78bc                	ld	a5,112(s1)
	if( inServer->httpServer ) return( inServer->httpServer->listeningPort );
    e8865458:	16078d63          	beqz	a5,e88655d2 <_UpdateBonjourAirPlay+0x498>
    e886545c:	0287aa03          	lw	s4,40(a5)
		port = (uint16_t) _GetListenPort( inServer );
    e8865460:	3c0a340b          	extu	s0,s4,15,0
		require_action( port > 0, exit, err = kInternalErr );
    e8865464:	16040763          	beqz	s0,e88655d2 <_UpdateBonjourAirPlay+0x498>
		if( *inServer->ifname != '\0' )
    e8865468:	0994c783          	lbu	a5,153(s1)
    e886546c:	c3f1                	beqz	a5,e8865530 <_UpdateBonjourAirPlay+0x3f6>
			ifindex = if_nametoindex( inServer->ifname );
    e886546e:	09948513          	addi	a0,s1,153
    e8865472:	2291e0ef          	jal	ra,e8883e9a <lwip_if_nametoindex>
    e8865476:	0005061b          	sext.w	a2,a0
			require_action_quiet( ifindex != 0, exit, err = kNotFoundErr );
    e886547a:	ee45                	bnez	a2,e8865532 <_UpdateBonjourAirPlay+0x3f8>
    e886547c:	7479                	lui	s0,0xffffe
    e886547e:	5b940413          	addi	s0,s0,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e8865482:	bb69                	j	e886521c <_UpdateBonjourAirPlay+0xe2>
		err = DNSServiceUpdateRecord( inServer->bonjourAirPlay, NULL, 0, txtLen, txtPtr, 0 );
    e8865484:	4781                	li	a5,0
    e8865486:	874e                	mv	a4,s3
    e8865488:	86ca                	mv	a3,s2
    e886548a:	4601                	li	a2,0
    e886548c:	4581                	li	a1,0
    e886548e:	aafb50ef          	jal	ra,e881af3c <DNSServiceUpdateRecord>
    e8865492:	842a                	mv	s0,a0
		if( !err ) aprs_ulog( kLogLevelNotice, "Updated Bonjour TXT for %s\n", kAirPlayBonjourServiceType );
    e8865494:	00070517          	auipc	a0,0x70
    e8865498:	d0c50513          	addi	a0,a0,-756 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e886549c:	411c                	lw	a5,0(a0)
    e886549e:	03200713          	li	a4,50
    e88654a2:	e029                	bnez	s0,e88654e4 <_UpdateBonjourAirPlay+0x3aa>
    e88654a4:	f8f74ee3          	blt	a4,a5,e8865440 <_UpdateBonjourAirPlay+0x306>
    e88654a8:	577d                	li	a4,-1
    e88654aa:	02e78763          	beq	a5,a4,e88654d8 <_UpdateBonjourAirPlay+0x39e>
    e88654ae:	00059717          	auipc	a4,0x59
    e88654b2:	c0a70713          	addi	a4,a4,-1014 # e88be0b8 <__PRETTY_FUNCTION__.10585+0x2f0>
    e88654b6:	00064697          	auipc	a3,0x64
    e88654ba:	ef268693          	addi	a3,a3,-270 # e88c93a8 <__PRETTY_FUNCTION__.13159+0x6b8>
    e88654be:	03200613          	li	a2,50
    e88654c2:	00064597          	auipc	a1,0x64
    e88654c6:	00e58593          	addi	a1,a1,14 # e88c94d0 <__PRETTY_FUNCTION__.13747>
    e88654ca:	00070517          	auipc	a0,0x70
    e88654ce:	cd650513          	addi	a0,a0,-810 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88654d2:	fa3ee0ef          	jal	ra,e8854474 <LogPrintF>
    e88654d6:	b7b5                	j	e8865442 <_UpdateBonjourAirPlay+0x308>
    e88654d8:	03200593          	li	a1,50
    e88654dc:	b97ee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88654e0:	d125                	beqz	a0,e8865440 <_UpdateBonjourAirPlay+0x306>
    e88654e2:	b7f1                	j	e88654ae <_UpdateBonjourAirPlay+0x374>
			aprs_ulog( kLogLevelNotice, "Bonjour TXT update failed for %s, deregistering so we can force a re-register %s\n",
    e88654e4:	02f74963          	blt	a4,a5,e8865516 <_UpdateBonjourAirPlay+0x3dc>
    e88654e8:	577d                	li	a4,-1
    e88654ea:	02e78d63          	beq	a5,a4,e8865524 <_UpdateBonjourAirPlay+0x3ea>
    e88654ee:	00059717          	auipc	a4,0x59
    e88654f2:	bca70713          	addi	a4,a4,-1078 # e88be0b8 <__PRETTY_FUNCTION__.10585+0x2f0>
    e88654f6:	00064697          	auipc	a3,0x64
    e88654fa:	ed268693          	addi	a3,a3,-302 # e88c93c8 <__PRETTY_FUNCTION__.13159+0x6d8>
    e88654fe:	03200613          	li	a2,50
    e8865502:	00064597          	auipc	a1,0x64
    e8865506:	fce58593          	addi	a1,a1,-50 # e88c94d0 <__PRETTY_FUNCTION__.13747>
    e886550a:	00070517          	auipc	a0,0x70
    e886550e:	c9650513          	addi	a0,a0,-874 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8865512:	f63ee0ef          	jal	ra,e8854474 <LogPrintF>
			DNSServiceForget( &inServer->bonjourAirPlay );
    e8865516:	74a8                	ld	a0,104(s1)
    e8865518:	d50d                	beqz	a0,e8865442 <_UpdateBonjourAirPlay+0x308>
    e886551a:	fc6b50ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    e886551e:	0604b423          	sd	zero,104(s1)
    e8865522:	b705                	j	e8865442 <_UpdateBonjourAirPlay+0x308>
			aprs_ulog( kLogLevelNotice, "Bonjour TXT update failed for %s, deregistering so we can force a re-register %s\n",
    e8865524:	03200593          	li	a1,50
    e8865528:	b4bee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886552c:	d56d                	beqz	a0,e8865516 <_UpdateBonjourAirPlay+0x3dc>
    e886552e:	b7c1                	j	e88654ee <_UpdateBonjourAirPlay+0x3b4>
		ifindex = kDNSServiceInterfaceIndexAny;
    e8865530:	4601                	li	a2,0
		err = DNSServiceRegister( &inServer->bonjourAirPlay, flags, ifindex, ptr, kAirPlayBonjourServiceType, domain, NULL,
    e8865532:	8522                	mv	a0,s0
    e8865534:	f432                	sd	a2,40(sp)
    e8865536:	1e9210ef          	jal	ra,e8886f1e <lwip_htons>
    e886553a:	88aa                	mv	a7,a0
    e886553c:	00000797          	auipc	a5,0x0
    e8865540:	1d878793          	addi	a5,a5,472 # e8865714 <_BonjourRegistrationHandler>
    e8865544:	7622                	ld	a2,40(sp)
    e8865546:	6585                	lui	a1,0x1
    e8865548:	e83e                	sd	a5,16(sp)
    e886554a:	ec26                	sd	s1,24(sp)
    e886554c:	e44e                	sd	s3,8(sp)
    e886554e:	e04a                	sd	s2,0(sp)
    e8865550:	4801                	li	a6,0
    e8865552:	0003e797          	auipc	a5,0x3e
    e8865556:	5fe78793          	addi	a5,a5,1534 # e88a3b50 <end.8789+0x4a8>
    e886555a:	00059717          	auipc	a4,0x59
    e886555e:	b5e70713          	addi	a4,a4,-1186 # e88be0b8 <__PRETTY_FUNCTION__.10585+0x2f0>
    e8865562:	0a94                	addi	a3,sp,336
    e8865564:	80058593          	addi	a1,a1,-2048 # 800 <memcmp-0xe87ff800>
    e8865568:	06848513          	addi	a0,s1,104
    e886556c:	f96b50ef          	jal	ra,e881ad02 <DNSServiceRegister>
    e8865570:	842a                	mv	s0,a0
		require_noerr_quiet( err, exit );
    e8865572:	ca0515e3          	bnez	a0,e886521c <_UpdateBonjourAirPlay+0xe2>
		aprs_ulog( kLogLevelNotice, "Registering Bonjour %s port %d\n", kAirPlayBonjourServiceType, port );
    e8865576:	00070517          	auipc	a0,0x70
    e886557a:	c2a50513          	addi	a0,a0,-982 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e886557e:	411c                	lw	a5,0(a0)
    e8865580:	03200713          	li	a4,50
    e8865584:	c8f74ce3          	blt	a4,a5,e886521c <_UpdateBonjourAirPlay+0xe2>
    e8865588:	577d                	li	a4,-1
    e886558a:	02e78963          	beq	a5,a4,e88655bc <_UpdateBonjourAirPlay+0x482>
    e886558e:	3c0a378b          	extu	a5,s4,15,0
    e8865592:	00059717          	auipc	a4,0x59
    e8865596:	b2670713          	addi	a4,a4,-1242 # e88be0b8 <__PRETTY_FUNCTION__.10585+0x2f0>
    e886559a:	00064697          	auipc	a3,0x64
    e886559e:	e8668693          	addi	a3,a3,-378 # e88c9420 <__PRETTY_FUNCTION__.13159+0x730>
    e88655a2:	03200613          	li	a2,50
    e88655a6:	00064597          	auipc	a1,0x64
    e88655aa:	f2a58593          	addi	a1,a1,-214 # e88c94d0 <__PRETTY_FUNCTION__.13747>
    e88655ae:	00070517          	auipc	a0,0x70
    e88655b2:	bf250513          	addi	a0,a0,-1038 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88655b6:	ebfee0ef          	jal	ra,e8854474 <LogPrintF>
    e88655ba:	b18d                	j	e886521c <_UpdateBonjourAirPlay+0xe2>
    e88655bc:	03200593          	li	a1,50
    e88655c0:	ab3ee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88655c4:	c4050ce3          	beqz	a0,e886521c <_UpdateBonjourAirPlay+0xe2>
    e88655c8:	b7d9                	j	e886558e <_UpdateBonjourAirPlay+0x454>
		require_action( data, exit, err = kNoMemoryErr );
    e88655ca:	7479                	lui	s0,0xffffe
    e88655cc:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88655d0:	b1b1                	j	e886521c <_UpdateBonjourAirPlay+0xe2>
		require_action( port > 0, exit, err = kInternalErr );
    e88655d2:	7479                	lui	s0,0xffffe
    e88655d4:	59640413          	addi	s0,s0,1430 # ffffffffffffe596 <__DRAM0_INF_BASE+0xffffffff0000e596>
    e88655d8:	b191                	j	e886521c <_UpdateBonjourAirPlay+0xe2>
		err = TXTRecordSetValue( &txtRec, kAirPlayTXTKey_Model, (uint8_t) strlen( cstr ), cstr );
    e88655da:	0a88                	addi	a0,sp,336
    e88655dc:	53d160ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88655e0:	0ff57613          	andi	a2,a0,255
    e88655e4:	0a94                	addi	a3,sp,336
    e88655e6:	00064597          	auipc	a1,0x64
    e88655ea:	e5a58593          	addi	a1,a1,-422 # e88c9440 <__PRETTY_FUNCTION__.13159+0x750>
    e88655ee:	0088                	addi	a0,sp,64
    e88655f0:	80cb50ef          	jal	ra,e881a5fc <TXTRecordSetValue>
    e88655f4:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e88655f6:	d00502e3          	beqz	a0,e88652fa <_UpdateBonjourAirPlay+0x1c0>
    e88655fa:	b10d                	j	e886521c <_UpdateBonjourAirPlay+0xe2>

00000000e88655fc <_UpdateBonjour>:
	if( !inServer->serversStarted || !activated )
    e88655fc:	09154783          	lbu	a5,145(a0)
    e8865600:	e799                	bnez	a5,e886560e <_UpdateBonjour+0x12>
		_StopBonjour( inServer, "disable" );
    e8865602:	00064597          	auipc	a1,0x64
    e8865606:	cae58593          	addi	a1,a1,-850 # e88c92b0 <__PRETTY_FUNCTION__.13159+0x5c0>
    e886560a:	9d0ff06f          	j	e88647da <_StopBonjour>
{
    e886560e:	1101                	addi	sp,sp,-32
    e8865610:	f891540b          	sdd	s0,s1,(sp),0,4
    e8865614:	ec06                	sd	ra,24(sp)
    e8865616:	e84a                	sd	s2,16(sp)
	if( inServer->bonjourStartTicks == 0 ) inServer->bonjourStartTicks = UpTicks();
    e8865618:	6d3c                	ld	a5,88(a0)
    e886561a:	842a                	mv	s0,a0
    e886561c:	e781                	bnez	a5,e8865624 <_UpdateBonjour+0x28>
    e886561e:	ba7fb0ef          	jal	ra,e88611c4 <UpTicks>
    e8865622:	ec28                	sd	a0,88(s0)
	err = _UpdateBonjourAirPlay( inServer, NULL );
    e8865624:	4581                	li	a1,0
    e8865626:	8522                	mv	a0,s0
    e8865628:	b13ff0ef          	jal	ra,e886513a <_UpdateBonjourAirPlay>
    e886562c:	84aa                	mv	s1,a0
	if( !firstErr )
    e886562e:	7028                	ld	a0,96(s0)
    e8865630:	ec99                	bnez	s1,e886564e <_UpdateBonjour+0x52>
		dispatch_source_forget( &inServer->bonjourRetryTimer );
    e8865632:	c901                	beqz	a0,e8865642 <_UpdateBonjour+0x46>
    e8865634:	e12ea0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8865638:	7028                	ld	a0,96(s0)
    e886563a:	c16e90ef          	jal	ra,e884ea50 <dispatch_release>
    e886563e:	06043023          	sd	zero,96(s0)
}
    e8865642:	60e2                	ld	ra,24(sp)
    e8865644:	f891440b          	ldd	s0,s1,(sp),0,4
    e8865648:	6942                	ld	s2,16(sp)
    e886564a:	6105                	addi	sp,sp,32
    e886564c:	8082                	ret
	else if( !inServer->bonjourRetryTimer )
    e886564e:	f975                	bnez	a0,e8865642 <_UpdateBonjour+0x46>
		ms = UpTicksToMilliseconds( UpTicks() - inServer->bonjourStartTicks );
    e8865650:	b75fb0ef          	jal	ra,e88611c4 <UpTicks>
		ms = ( ms < 11113 ) ? ( 11113 - ms ) : 1; // Use 11113 to avoid being syntonic with 10 second re-launching.
    e8865654:	4905                	li	s2,1
		ms = UpTicksToMilliseconds( UpTicks() - inServer->bonjourStartTicks );
    e8865656:	6c3c                	ld	a5,88(s0)
    e8865658:	8d1d                	sub	a0,a0,a5
    e886565a:	bcffb0ef          	jal	ra,e8861228 <UpTicksToMilliseconds>
		ms = ( ms < 11113 ) ? ( 11113 - ms ) : 1; // Use 11113 to avoid being syntonic with 10 second re-launching.
    e886565e:	670d                	lui	a4,0x3
    e8865660:	b6870793          	addi	a5,a4,-1176 # 2b68 <memcmp-0xe87fd498>
    e8865664:	00a7e663          	bltu	a5,a0,e8865670 <_UpdateBonjour+0x74>
    e8865668:	b6970713          	addi	a4,a4,-1175
    e886566c:	40a70933          	sub	s2,a4,a0
		aprs_ulog( kLogLevelNotice, "### Bonjour failed, retrying in %llu ms: %#m\n", ms, firstErr );
    e8865670:	00070517          	auipc	a0,0x70
    e8865674:	b3050513          	addi	a0,a0,-1232 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8865678:	411c                	lw	a5,0(a0)
    e886567a:	03200713          	li	a4,50
    e886567e:	02f74763          	blt	a4,a5,e88656ac <_UpdateBonjour+0xb0>
    e8865682:	577d                	li	a4,-1
    e8865684:	08e78263          	beq	a5,a4,e8865708 <_UpdateBonjour+0x10c>
    e8865688:	87a6                	mv	a5,s1
    e886568a:	874a                	mv	a4,s2
    e886568c:	00064697          	auipc	a3,0x64
    e8865690:	c2c68693          	addi	a3,a3,-980 # e88c92b8 <__PRETTY_FUNCTION__.13159+0x5c8>
    e8865694:	03200613          	li	a2,50
    e8865698:	00064597          	auipc	a1,0x64
    e886569c:	e2858593          	addi	a1,a1,-472 # e88c94c0 <__PRETTY_FUNCTION__.13718>
    e88656a0:	00070517          	auipc	a0,0x70
    e88656a4:	b0050513          	addi	a0,a0,-1280 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88656a8:	dcdee0ef          	jal	ra,e8854474 <LogPrintF>
		inServer->bonjourRetryTimer = timer = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, inServer->queue );
    e88656ac:	6814                	ld	a3,16(s0)
    e88656ae:	4601                	li	a2,0
    e88656b0:	4581                	li	a1,0
    e88656b2:	4509                	li	a0,2
    e88656b4:	efae90ef          	jal	ra,e884edae <dispatch_source_create>
    e88656b8:	f028                	sd	a0,96(s0)
    e88656ba:	84aa                	mv	s1,a0
		if( timer )
    e88656bc:	d159                	beqz	a0,e8865642 <_UpdateBonjour+0x46>
			dispatch_set_context( timer, inServer );
    e88656be:	85a2                	mv	a1,s0
    e88656c0:	d5ce90ef          	jal	ra,e884ec1c <dispatch_set_context>
			dispatch_source_set_event_handler_f( timer, _RetryBonjour );
    e88656c4:	8526                	mv	a0,s1
    e88656c6:	00000597          	auipc	a1,0x0
    e88656ca:	19458593          	addi	a1,a1,404 # e886585a <_RetryBonjour>
    e88656ce:	f9ce90ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
			dispatch_source_set_timer( timer, dispatch_time_milliseconds( ms ), INT64_MAX, kNanosecondsPerSecond );
    e88656d2:	000f45b7          	lui	a1,0xf4
    e88656d6:	24058593          	addi	a1,a1,576 # f4240 <memcmp-0xe870bdc0>
    e88656da:	02b905b3          	mul	a1,s2,a1
    e88656de:	4501                	li	a0,0
    e88656e0:	875e90ef          	jal	ra,e884ef54 <dispatch_time>
    e88656e4:	85aa                	mv	a1,a0
    e88656e6:	3b9ad6b7          	lui	a3,0x3b9ad
    e88656ea:	567d                	li	a2,-1
    e88656ec:	8526                	mv	a0,s1
    e88656ee:	a0068693          	addi	a3,a3,-1536 # 3b9aca00 <memcmp-0xace53600>
    e88656f2:	8205                	srli	a2,a2,0x1
    e88656f4:	cd4ea0ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
}
    e88656f8:	6942                	ld	s2,16(sp)
			dispatch_resume( timer );
    e88656fa:	8526                	mv	a0,s1
}
    e88656fc:	f891440b          	ldd	s0,s1,(sp),0,4
    e8865700:	60e2                	ld	ra,24(sp)
    e8865702:	6105                	addi	sp,sp,32
			dispatch_resume( timer );
    e8865704:	bf2ea06f          	j	e884faf6 <dispatch_resume>
		aprs_ulog( kLogLevelNotice, "### Bonjour failed, retrying in %llu ms: %#m\n", ms, firstErr );
    e8865708:	03200593          	li	a1,50
    e886570c:	967ee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8865710:	dd51                	beqz	a0,e88656ac <_UpdateBonjour+0xb0>
    e8865712:	bf9d                	j	e8865688 <_UpdateBonjour+0x8c>

00000000e8865714 <_BonjourRegistrationHandler>:
{
    e8865714:	7139                	addi	sp,sp,-64
    e8865716:	fc91540b          	sdd	s0,s1,(sp),2,4
    e886571a:	f84a                	sd	s2,48(sp)
    e886571c:	fc06                	sd	ra,56(sp)
	if( inRef == server->bonjourAirPlay )
    e886571e:	06883583          	ld	a1,104(a6)
{
    e8865722:	8942                	mv	s2,a6
	if( inRef == server->bonjourAirPlay )
    e8865724:	06a59863          	bne	a1,a0,e8865794 <_BonjourRegistrationHandler+0x80>
		servicePtr  = &server->bonjourAirPlay;
    e8865728:	06880413          	addi	s0,a6,104
		serviceType = kAirPlayBonjourServiceType;
    e886572c:	00059497          	auipc	s1,0x59
    e8865730:	98c48493          	addi	s1,s1,-1652 # e88be0b8 <__PRETTY_FUNCTION__.10585+0x2f0>
	if( inError == kDNSServiceErr_ServiceNotRunning )
    e8865734:	7841                	lui	a6,0xffff0
    e8865736:	00070517          	auipc	a0,0x70
    e886573a:	a6a50513          	addi	a0,a0,-1430 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e886573e:	1815                	addi	a6,a6,-27
    e8865740:	410c                	lw	a1,0(a0)
    e8865742:	07061563          	bne	a2,a6,e88657ac <_BonjourRegistrationHandler+0x98>
		aprs_ulog( kLogLevelNotice, "### Bonjour server crashed for %s\n", serviceType );
    e8865746:	03200793          	li	a5,50
    e886574a:	02b7c663          	blt	a5,a1,e8865776 <_BonjourRegistrationHandler+0x62>
    e886574e:	57fd                	li	a5,-1
    e8865750:	04f58863          	beq	a1,a5,e88657a0 <_BonjourRegistrationHandler+0x8c>
    e8865754:	8726                	mv	a4,s1
    e8865756:	00063697          	auipc	a3,0x63
    e886575a:	6a268693          	addi	a3,a3,1698 # e88c8df8 <__PRETTY_FUNCTION__.13159+0x108>
    e886575e:	03200613          	li	a2,50
    e8865762:	00064597          	auipc	a1,0x64
    e8865766:	d1e58593          	addi	a1,a1,-738 # e88c9480 <__PRETTY_FUNCTION__.13695>
    e886576a:	00070517          	auipc	a0,0x70
    e886576e:	a3650513          	addi	a0,a0,-1482 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8865772:	d03ee0ef          	jal	ra,e8854474 <LogPrintF>
		if( servicePtr ) DNSServiceForget( servicePtr );
    e8865776:	c419                	beqz	s0,e8865784 <_BonjourRegistrationHandler+0x70>
    e8865778:	6008                	ld	a0,0(s0)
    e886577a:	c509                	beqz	a0,e8865784 <_BonjourRegistrationHandler+0x70>
    e886577c:	d64b50ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
    e8865780:	00043023          	sd	zero,0(s0)
}
    e8865784:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8865788:	70e2                	ld	ra,56(sp)
		_UpdateBonjour( server );
    e886578a:	854a                	mv	a0,s2
}
    e886578c:	7942                	ld	s2,48(sp)
    e886578e:	6121                	addi	sp,sp,64
		_UpdateBonjour( server );
    e8865790:	e6dff06f          	j	e88655fc <_UpdateBonjour>
	const char *						serviceType = "?";
    e8865794:	00040497          	auipc	s1,0x40
    e8865798:	e8c48493          	addi	s1,s1,-372 # e88a5620 <end.8789+0x1f78>
	DNSServiceRef *						servicePtr  = NULL;
    e886579c:	4401                	li	s0,0
    e886579e:	bf59                	j	e8865734 <_BonjourRegistrationHandler+0x20>
		aprs_ulog( kLogLevelNotice, "### Bonjour server crashed for %s\n", serviceType );
    e88657a0:	03200593          	li	a1,50
    e88657a4:	8cfee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88657a8:	d579                	beqz	a0,e8865776 <_BonjourRegistrationHandler+0x62>
    e88657aa:	b76d                	j	e8865754 <_BonjourRegistrationHandler+0x40>
	else if( inError )
    e88657ac:	ce21                	beqz	a2,e8865804 <_BonjourRegistrationHandler+0xf0>
		aprs_ulog( kLogLevelNotice, "### Bonjour registration error for %s: %#m\n", serviceType, inError );
    e88657ae:	03200793          	li	a5,50
    e88657b2:	04b7c363          	blt	a5,a1,e88657f8 <_BonjourRegistrationHandler+0xe4>
    e88657b6:	57fd                	li	a5,-1
    e88657b8:	02f58963          	beq	a1,a5,e88657ea <_BonjourRegistrationHandler+0xd6>
    e88657bc:	8726                	mv	a4,s1
}
    e88657be:	fc91440b          	ldd	s0,s1,(sp),2,4
    e88657c2:	70e2                	ld	ra,56(sp)
    e88657c4:	7942                	ld	s2,48(sp)
		aprs_ulog( kLogLevelNotice, "### Bonjour registration error for %s: %#m\n", serviceType, inError );
    e88657c6:	87b2                	mv	a5,a2
    e88657c8:	00063697          	auipc	a3,0x63
    e88657cc:	65868693          	addi	a3,a3,1624 # e88c8e20 <__PRETTY_FUNCTION__.13159+0x130>
    e88657d0:	03200613          	li	a2,50
    e88657d4:	00064597          	auipc	a1,0x64
    e88657d8:	cac58593          	addi	a1,a1,-852 # e88c9480 <__PRETTY_FUNCTION__.13695>
    e88657dc:	00070517          	auipc	a0,0x70
    e88657e0:	9c450513          	addi	a0,a0,-1596 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
}
    e88657e4:	6121                	addi	sp,sp,64
		aprs_ulog( kLogLevelNotice, "### Bonjour registration error for %s: %#m\n", serviceType, inError );
    e88657e6:	c8fee06f          	j	e8854474 <LogPrintF>
    e88657ea:	03200593          	li	a1,50
    e88657ee:	e432                	sd	a2,8(sp)
    e88657f0:	883ee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88657f4:	6622                	ld	a2,8(sp)
    e88657f6:	f179                	bnez	a0,e88657bc <_BonjourRegistrationHandler+0xa8>
}
    e88657f8:	70e2                	ld	ra,56(sp)
    e88657fa:	fc91440b          	ldd	s0,s1,(sp),2,4
    e88657fe:	7942                	ld	s2,48(sp)
    e8865800:	6121                	addi	sp,sp,64
    e8865802:	8082                	ret
		aprs_ulog( kLogLevelNotice, "Registered Bonjour %s.%s%s\n", inName, inType, inDomain );
    e8865804:	03200613          	li	a2,50
    e8865808:	feb648e3          	blt	a2,a1,e88657f8 <_BonjourRegistrationHandler+0xe4>
    e886580c:	567d                	li	a2,-1
    e886580e:	02c58a63          	beq	a1,a2,e8865842 <_BonjourRegistrationHandler+0x12e>
}
    e8865812:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8865816:	70e2                	ld	ra,56(sp)
    e8865818:	7942                	ld	s2,48(sp)
		aprs_ulog( kLogLevelNotice, "Registered Bonjour %s.%s%s\n", inName, inType, inDomain );
    e886581a:	883e                	mv	a6,a5
    e886581c:	87ba                	mv	a5,a4
    e886581e:	03200613          	li	a2,50
    e8865822:	8736                	mv	a4,a3
    e8865824:	00064597          	auipc	a1,0x64
    e8865828:	c5c58593          	addi	a1,a1,-932 # e88c9480 <__PRETTY_FUNCTION__.13695>
    e886582c:	00063697          	auipc	a3,0x63
    e8865830:	62468693          	addi	a3,a3,1572 # e88c8e50 <__PRETTY_FUNCTION__.13159+0x160>
    e8865834:	00070517          	auipc	a0,0x70
    e8865838:	96c50513          	addi	a0,a0,-1684 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
}
    e886583c:	6121                	addi	sp,sp,64
		aprs_ulog( kLogLevelNotice, "Registered Bonjour %s.%s%s\n", inName, inType, inDomain );
    e886583e:	c37ee06f          	j	e8854474 <LogPrintF>
    e8865842:	03200593          	li	a1,50
    e8865846:	ec3e                	sd	a5,24(sp)
    e8865848:	e83a                	sd	a4,16(sp)
    e886584a:	e436                	sd	a3,8(sp)
    e886584c:	827ee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8865850:	66a2                	ld	a3,8(sp)
    e8865852:	faf1470b          	ldd	a4,a5,(sp),1,4
    e8865856:	d14d                	beqz	a0,e88657f8 <_BonjourRegistrationHandler+0xe4>
    e8865858:	bf6d                	j	e8865812 <_BonjourRegistrationHandler+0xfe>

00000000e886585a <_RetryBonjour>:
{
    e886585a:	1141                	addi	sp,sp,-16
    e886585c:	e022                	sd	s0,0(sp)
    e886585e:	842a                	mv	s0,a0
	aprs_ulog( kLogLevelNotice, "Retrying Bonjour after failure\n" );
    e8865860:	00070517          	auipc	a0,0x70
    e8865864:	94050513          	addi	a0,a0,-1728 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
{
    e8865868:	e406                	sd	ra,8(sp)
	aprs_ulog( kLogLevelNotice, "Retrying Bonjour after failure\n" );
    e886586a:	411c                	lw	a5,0(a0)
    e886586c:	03200713          	li	a4,50
    e8865870:	02f74563          	blt	a4,a5,e886589a <_RetryBonjour+0x40>
    e8865874:	577d                	li	a4,-1
    e8865876:	04e78363          	beq	a5,a4,e88658bc <_RetryBonjour+0x62>
    e886587a:	00064697          	auipc	a3,0x64
    e886587e:	9ce68693          	addi	a3,a3,-1586 # e88c9248 <__PRETTY_FUNCTION__.13159+0x558>
    e8865882:	03200613          	li	a2,50
    e8865886:	00064597          	auipc	a1,0x64
    e886588a:	c1a58593          	addi	a1,a1,-998 # e88c94a0 <__PRETTY_FUNCTION__.13704>
    e886588e:	00070517          	auipc	a0,0x70
    e8865892:	91250513          	addi	a0,a0,-1774 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8865896:	bdfee0ef          	jal	ra,e8854474 <LogPrintF>
	dispatch_source_forget( &server->bonjourRetryTimer );
    e886589a:	7028                	ld	a0,96(s0)
    e886589c:	c901                	beqz	a0,e88658ac <_RetryBonjour+0x52>
    e886589e:	ba8ea0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e88658a2:	7028                	ld	a0,96(s0)
    e88658a4:	9ace90ef          	jal	ra,e884ea50 <dispatch_release>
    e88658a8:	06043023          	sd	zero,96(s0)
	server->bonjourStartTicks = 0;
    e88658ac:	04043c23          	sd	zero,88(s0)
	_UpdateBonjour( server );
    e88658b0:	8522                	mv	a0,s0
}
    e88658b2:	6402                	ld	s0,0(sp)
    e88658b4:	60a2                	ld	ra,8(sp)
    e88658b6:	0141                	addi	sp,sp,16
	_UpdateBonjour( server );
    e88658b8:	d45ff06f          	j	e88655fc <_UpdateBonjour>
	aprs_ulog( kLogLevelNotice, "Retrying Bonjour after failure\n" );
    e88658bc:	03200593          	li	a1,50
    e88658c0:	fb2ee0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88658c4:	d979                	beqz	a0,e886589a <_RetryBonjour+0x40>
    e88658c6:	bf55                	j	e886587a <_RetryBonjour+0x20>

00000000e88658c8 <AirPlayReceiverServerSetProperty>:
{
    e88658c8:	7179                	addi	sp,sp,-48
    e88658ca:	f891540b          	sdd	s0,s1,(sp),0,4
    e88658ce:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88658d2:	842a                	mv	s0,a0
    e88658d4:	89ae                	mv	s3,a1
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_DeviceID ) ) )
    e88658d6:	8532                	mv	a0,a2
    e88658d8:	00038597          	auipc	a1,0x38
    e88658dc:	1f858593          	addi	a1,a1,504 # e889dad0 <icmp6_param_problem+0xa62>
{
    e88658e0:	f052                	sd	s4,32(sp)
    e88658e2:	f406                	sd	ra,40(sp)
    e88658e4:	84b2                	mv	s1,a2
    e88658e6:	8a36                	mv	s4,a3
    e88658e8:	893a                	mv	s2,a4
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_DeviceID ) ) )
    e88658ea:	865e10ef          	jal	ra,e884714e <CFEqual>
    e88658ee:	c115                	beqz	a0,e8865912 <AirPlayReceiverServerSetProperty+0x4a>
		CFGetData( inValue, server->deviceID, sizeof( server->deviceID ), NULL, NULL );
    e88658f0:	4701                	li	a4,0
    e88658f2:	4681                	li	a3,0
    e88658f4:	4619                	li	a2,6
    e88658f6:	09340593          	addi	a1,s0,147
    e88658fa:	854a                	mv	a0,s2
    e88658fc:	887e70ef          	jal	ra,e884d182 <CFGetData>
}
    e8865900:	70a2                	ld	ra,40(sp)
    e8865902:	f891440b          	ldd	s0,s1,(sp),0,4
    e8865906:	7a02                	ld	s4,32(sp)
    e8865908:	fb31490b          	ldd	s2,s3,(sp),1,4
    e886590c:	4501                	li	a0,0
    e886590e:	6145                	addi	sp,sp,48
    e8865910:	8082                	ret
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_InterfaceName ) ) )
    e8865912:	00038597          	auipc	a1,0x38
    e8865916:	33e58593          	addi	a1,a1,830 # e889dc50 <icmp6_param_problem+0xbe2>
    e886591a:	8526                	mv	a0,s1
    e886591c:	833e10ef          	jal	ra,e884714e <CFEqual>
    e8865920:	c901                	beqz	a0,e8865930 <AirPlayReceiverServerSetProperty+0x68>
		CFGetCString( inValue, server->ifname, sizeof( server->ifname ) );
    e8865922:	461d                	li	a2,7
    e8865924:	09940593          	addi	a1,s0,153
    e8865928:	854a                	mv	a0,s2
    e886592a:	82ce60ef          	jal	ra,e884b956 <CFGetCString>
    e886592e:	bfc9                	j	e8865900 <AirPlayReceiverServerSetProperty+0x38>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_Playing ) ) )
    e8865930:	00038597          	auipc	a1,0x38
    e8865934:	16058593          	addi	a1,a1,352 # e889da90 <icmp6_param_problem+0xa22>
    e8865938:	8526                	mv	a0,s1
    e886593a:	815e10ef          	jal	ra,e884714e <CFEqual>
    e886593e:	c529                	beqz	a0,e8865988 <AirPlayReceiverServerSetProperty+0xc0>
		server->playing = CFGetBoolean( inValue, NULL );
    e8865940:	4581                	li	a1,0
    e8865942:	854a                	mv	a0,s2
    e8865944:	b54e60ef          	jal	ra,e884bc98 <CFGetInt64>
    e8865948:	00a037b3          	snez	a5,a0
    e886594c:	08f40823          	sb	a5,144(s0)
		if( !server->playing && server->started && server->serversStarted && server->bonjourRestartPending )
    e8865950:	f945                	bnez	a0,e8865900 <AirPlayReceiverServerSetProperty+0x38>
    e8865952:	09244783          	lbu	a5,146(s0)
    e8865956:	d7cd                	beqz	a5,e8865900 <AirPlayReceiverServerSetProperty+0x38>
    e8865958:	09144783          	lbu	a5,145(s0)
    e886595c:	d3d5                	beqz	a5,e8865900 <AirPlayReceiverServerSetProperty+0x38>
    e886595e:	05044783          	lbu	a5,80(s0)
    e8865962:	dfd9                	beqz	a5,e8865900 <AirPlayReceiverServerSetProperty+0x38>
	if( !inServer->bonjourAirPlay )
    e8865964:	743c                	ld	a5,104(s0)
	inServer->bonjourRestartPending = false;
    e8865966:	04040823          	sb	zero,80(s0)
	if( !inServer->bonjourAirPlay )
    e886596a:	dbd9                	beqz	a5,e8865900 <AirPlayReceiverServerSetProperty+0x38>
	_StopBonjour( inServer, "restart" );
    e886596c:	00063597          	auipc	a1,0x63
    e8865970:	48458593          	addi	a1,a1,1156 # e88c8df0 <__PRETTY_FUNCTION__.13159+0x100>
    e8865974:	8522                	mv	a0,s0
    e8865976:	e65fe0ef          	jal	ra,e88647da <_StopBonjour>
	Sleep( 1 );
    e886597a:	4505                	li	a0,1
    e886597c:	69a160ef          	jal	ra,e887c016 <esKRNL_TimeDly>
	_UpdateBonjour( inServer );
    e8865980:	8522                	mv	a0,s0
    e8865982:	c7bff0ef          	jal	ra,e88655fc <_UpdateBonjour>
    e8865986:	bfad                	j	e8865900 <AirPlayReceiverServerSetProperty+0x38>
		err = AirPlayReceiverServerPlatformSetProperty( server, inFlags, inProperty, inQualifier, inValue );
    e8865988:	8626                	mv	a2,s1
    e886598a:	8522                	mv	a0,s0
}
    e886598c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8865990:	70a2                	ld	ra,40(sp)
		err = AirPlayReceiverServerPlatformSetProperty( server, inFlags, inProperty, inQualifier, inValue );
    e8865992:	874a                	mv	a4,s2
    e8865994:	86d2                	mv	a3,s4
    e8865996:	85ce                	mv	a1,s3
}
    e8865998:	7a02                	ld	s4,32(sp)
    e886599a:	fb31490b          	ldd	s2,s3,(sp),1,4
    e886599e:	6145                	addi	sp,sp,48
		err = AirPlayReceiverServerPlatformSetProperty( server, inFlags, inProperty, inQualifier, inValue );
    e88659a0:	966fe06f          	j	e8863b06 <AirPlayReceiverServerPlatformSetProperty>

00000000e88659a4 <AirPlayCopyServerInfo>:
{
    e88659a4:	7159                	addi	sp,sp,-112
    e88659a6:	e4ce                	sd	s3,72(sp)
    e88659a8:	f486                	sd	ra,104(sp)
    e88659aa:	f0a2                	sd	s0,96(sp)
    e88659ac:	eca6                	sd	s1,88(sp)
    e88659ae:	e8ca                	sd	s2,80(sp)
    e88659b0:	e0d2                	sd	s4,64(sp)
    e88659b2:	fc56                	sd	s5,56(sp)
    e88659b4:	f85a                	sd	s6,48(sp)
    server = inSession->server;
    e88659b6:	6904                	ld	s1,16(a0)
{
    e88659b8:	737d                	lui	t1,0xfffff
    e88659ba:	911a                	add	sp,sp,t1
    e88659bc:	89b2                	mv	s3,a2
    require_action(server, exit, err = kParamErr);
    e88659be:	040482e3          	beqz	s1,e8866202 <AirPlayCopyServerInfo+0x85e>
    e88659c2:	8aaa                	mv	s5,a0
    e88659c4:	8a2e                	mv	s4,a1
	info = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e88659c6:	00059697          	auipc	a3,0x59
    e88659ca:	e0268693          	addi	a3,a3,-510 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e88659ce:	00059617          	auipc	a2,0x59
    e88659d2:	dca60613          	addi	a2,a2,-566 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e88659d6:	4581                	li	a1,0
    e88659d8:	4501                	li	a0,0
    e88659da:	9cde10ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e88659de:	842a                	mv	s0,a0
	require_action( info, exit, err = kNoMemoryErr );
    e88659e0:	020506e3          	beqz	a0,e886620c <AirPlayCopyServerInfo+0x868>
	obj = CFDictionaryGetValue( server->config, CFSTR( kAirPlayProperty_AudioFormats ) );
    e88659e4:	78c8                	ld	a0,176(s1)
    e88659e6:	00038597          	auipc	a1,0x38
    e88659ea:	28258593          	addi	a1,a1,642 # e889dc68 <icmp6_param_problem+0xbfa>
    e88659ee:	a51e10ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e88659f2:	892a                	mv	s2,a0
	CFRetainNullSafe( obj );
    e88659f4:	0a0508e3          	beqz	a0,e88662a4 <AirPlayCopyServerInfo+0x900>
    e88659f8:	f4ee10ef          	jal	ra,e8847146 <CFRetain>
		CFDictionarySetValue( info, CFSTR( kAirPlayProperty_AudioFormats ), obj );
    e88659fc:	8522                	mv	a0,s0
    e88659fe:	864a                	mv	a2,s2
    e8865a00:	00038597          	auipc	a1,0x38
    e8865a04:	26858593          	addi	a1,a1,616 # e889dc68 <icmp6_param_problem+0xbfa>
    e8865a08:	a4be10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865a0c:	854a                	mv	a0,s2
    e8865a0e:	f3ce10ef          	jal	ra,e884714a <CFRelease>
	obj = CFDictionaryGetValue( server->config, CFSTR( kAirPlayProperty_AudioLatencies ) );
    e8865a12:	78c8                	ld	a0,176(s1)
    e8865a14:	00038597          	auipc	a1,0x38
    e8865a18:	26c58593          	addi	a1,a1,620 # e889dc80 <icmp6_param_problem+0xc12>
    e8865a1c:	a23e10ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8865a20:	892a                	mv	s2,a0
	CFRetainNullSafe( obj );
    e8865a22:	060502e3          	beqz	a0,e8866286 <AirPlayCopyServerInfo+0x8e2>
    e8865a26:	f20e10ef          	jal	ra,e8847146 <CFRetain>
		CFDictionarySetValue( info, CFSTR( kAirPlayProperty_AudioLatencies ), obj );
    e8865a2a:	8522                	mv	a0,s0
    e8865a2c:	864a                	mv	a2,s2
    e8865a2e:	00038597          	auipc	a1,0x38
    e8865a32:	25258593          	addi	a1,a1,594 # e889dc80 <icmp6_param_problem+0xc12>
    e8865a36:	a1de10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865a3a:	854a                	mv	a0,s2
    e8865a3c:	f0ee10ef          	jal	ra,e884714a <CFRelease>
	obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865a40:	4701                	li	a4,0
    e8865a42:	4681                	li	a3,0
    e8865a44:	00038617          	auipc	a2,0x38
    e8865a48:	25460613          	addi	a2,a2,596 # e889dc98 <icmp6_param_problem+0xc2a>
    e8865a4c:	4585                	li	a1,1
    e8865a4e:	8526                	mv	a0,s1
    e8865a50:	844fe0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865a54:	892a                	mv	s2,a0
	if( obj )
    e8865a56:	cd01                	beqz	a0,e8865a6e <AirPlayCopyServerInfo+0xca>
		CFDictionarySetValue( info, CFSTR( kAirPlayProperty_BluetoothIDs ), obj );
    e8865a58:	862a                	mv	a2,a0
    e8865a5a:	00038597          	auipc	a1,0x38
    e8865a5e:	23e58593          	addi	a1,a1,574 # e889dc98 <icmp6_param_problem+0xc2a>
    e8865a62:	8522                	mv	a0,s0
    e8865a64:	9efe10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865a68:	854a                	mv	a0,s2
    e8865a6a:	ee0e10ef          	jal	ra,e884714a <CFRelease>
	MACAddressToCString( server->deviceID, str );
    e8865a6e:	6785                	lui	a5,0x1
    e8865a70:	0818                	addi	a4,sp,16
    e8865a72:	797d                	lui	s2,0xfffff
    e8865a74:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8865a78:	97ba                	add	a5,a5,a4
    e8865a7a:	1961                	addi	s2,s2,-8
    e8865a7c:	993e                	add	s2,s2,a5
    e8865a7e:	864a                	mv	a2,s2
    e8865a80:	4599                	li	a1,6
    e8865a82:	09348513          	addi	a0,s1,147
    e8865a86:	dfcf90ef          	jal	ra,e885f082 <HardwareAddressToCString>
	CFDictionarySetCString( info, CFSTR( kAirPlayKey_DeviceID ), str, kSizeCString );
    e8865a8a:	864a                	mv	a2,s2
    e8865a8c:	56fd                	li	a3,-1
    e8865a8e:	00038597          	auipc	a1,0x38
    e8865a92:	04258593          	addi	a1,a1,66 # e889dad0 <icmp6_param_problem+0xa62>
    e8865a96:	8522                	mv	a0,s0
    e8865a98:	feae60ef          	jal	ra,e884c282 <CFDictionarySetCString>
	obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect, CFSTR( kAirPlayProperty_Displays ), NULL, NULL );
    e8865a9c:	4701                	li	a4,0
    e8865a9e:	4681                	li	a3,0
    e8865aa0:	00038617          	auipc	a2,0x38
    e8865aa4:	21060613          	addi	a2,a2,528 # e889dcb0 <icmp6_param_problem+0xc42>
    e8865aa8:	4585                	li	a1,1
    e8865aaa:	8526                	mv	a0,s1
    e8865aac:	fe9fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865ab0:	892a                	mv	s2,a0
	if( obj )
    e8865ab2:	cd01                	beqz	a0,e8865aca <AirPlayCopyServerInfo+0x126>
		CFDictionarySetValue( info, CFSTR( kAirPlayProperty_Displays ), obj );
    e8865ab4:	862a                	mv	a2,a0
    e8865ab6:	00038597          	auipc	a1,0x38
    e8865aba:	1fa58593          	addi	a1,a1,506 # e889dcb0 <icmp6_param_problem+0xc42>
    e8865abe:	8522                	mv	a0,s0
    e8865ac0:	993e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865ac4:	854a                	mv	a0,s2
    e8865ac6:	e84e10ef          	jal	ra,e884714a <CFRelease>
	obj = CFDictionaryGetValue( server->config, CFSTR( kAirPlayProperty_ExtendedFeatures ) );
    e8865aca:	78c8                	ld	a0,176(s1)
    e8865acc:	00038597          	auipc	a1,0x38
    e8865ad0:	1fc58593          	addi	a1,a1,508 # e889dcc8 <icmp6_param_problem+0xc5a>
    e8865ad4:	96be10ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8865ad8:	892a                	mv	s2,a0
	CFRetainNullSafe( obj );
    e8865ada:	78050763          	beqz	a0,e8866268 <AirPlayCopyServerInfo+0x8c4>
    e8865ade:	e68e10ef          	jal	ra,e8847146 <CFRetain>
		CFDictionarySetValue( info, CFSTR( kAirPlayProperty_ExtendedFeatures ), obj );
    e8865ae2:	8522                	mv	a0,s0
    e8865ae4:	864a                	mv	a2,s2
    e8865ae6:	00038597          	auipc	a1,0x38
    e8865aea:	1e258593          	addi	a1,a1,482 # e889dcc8 <icmp6_param_problem+0xc5a>
    e8865aee:	965e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865af2:	854a                	mv	a0,s2
    e8865af4:	e56e10ef          	jal	ra,e884714a <CFRelease>
	u64 = AirPlayGetFeatures( server );
    e8865af8:	8526                	mv	a0,s1
    e8865afa:	d12ff0ef          	jal	ra,e886500c <AirPlayGetFeatures>
    e8865afe:	862a                	mv	a2,a0
	if( u64 != 0 ) CFDictionarySetInt64( info, CFSTR( kAirPlayKey_Features ), u64 );
    e8865b00:	c901                	beqz	a0,e8865b10 <AirPlayCopyServerInfo+0x16c>
    e8865b02:	00038597          	auipc	a1,0x38
    e8865b06:	05658593          	addi	a1,a1,86 # e889db58 <icmp6_param_problem+0xaea>
    e8865b0a:	8522                	mv	a0,s0
    e8865b0c:	bbae70ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_FirmwareRevision ), str, sizeof( str ), NULL );
    e8865b10:	6785                	lui	a5,0x1
    e8865b12:	0818                	addi	a4,sp,16
	*str = '\0';
    e8865b14:	797d                	lui	s2,0xfffff
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_FirmwareRevision ), str, sizeof( str ), NULL );
    e8865b16:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8865b1a:	97ba                	add	a5,a5,a4
    e8865b1c:	1961                	addi	s2,s2,-8
    e8865b1e:	993e                	add	s2,s2,a5
    e8865b20:	6685                	lui	a3,0x1
    e8865b22:	4701                	li	a4,0
    e8865b24:	0685                	addi	a3,a3,1
    e8865b26:	864a                	mv	a2,s2
    e8865b28:	00038597          	auipc	a1,0x38
    e8865b2c:	0f858593          	addi	a1,a1,248 # e889dc20 <icmp6_param_problem+0xbb2>
    e8865b30:	8526                	mv	a0,s1
	*str = '\0';
    e8865b32:	02010423          	sb	zero,40(sp)
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_FirmwareRevision ), str, sizeof( str ), NULL );
    e8865b36:	c40fe0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
	if( *str != '\0' ) CFDictionarySetCString( info, CFSTR( kAirPlayKey_FirmwareRevision ), str, kSizeCString );
    e8865b3a:	02814783          	lbu	a5,40(sp)
    e8865b3e:	3e078063          	beqz	a5,e8865f1e <AirPlayCopyServerInfo+0x57a>
    e8865b42:	56fd                	li	a3,-1
    e8865b44:	864a                	mv	a2,s2
    e8865b46:	00038597          	auipc	a1,0x38
    e8865b4a:	0da58593          	addi	a1,a1,218 # e889dc20 <icmp6_param_problem+0xbb2>
    e8865b4e:	8522                	mv	a0,s0
    e8865b50:	f32e60ef          	jal	ra,e884c282 <CFDictionarySetCString>
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_HardwareRevision ), str, sizeof( str ), NULL );
    e8865b54:	6785                	lui	a5,0x1
    e8865b56:	0818                	addi	a4,sp,16
	*str = '\0';
    e8865b58:	797d                	lui	s2,0xfffff
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_HardwareRevision ), str, sizeof( str ), NULL );
    e8865b5a:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8865b5e:	97ba                	add	a5,a5,a4
    e8865b60:	1961                	addi	s2,s2,-8
    e8865b62:	993e                	add	s2,s2,a5
    e8865b64:	6685                	lui	a3,0x1
    e8865b66:	4701                	li	a4,0
    e8865b68:	0685                	addi	a3,a3,1
    e8865b6a:	864a                	mv	a2,s2
    e8865b6c:	00038597          	auipc	a1,0x38
    e8865b70:	17c58593          	addi	a1,a1,380 # e889dce8 <icmp6_param_problem+0xc7a>
    e8865b74:	8526                	mv	a0,s1
	*str = '\0';
    e8865b76:	02010423          	sb	zero,40(sp)
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_HardwareRevision ), str, sizeof( str ), NULL );
    e8865b7a:	bfcfe0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
	if( *str != '\0' ) CFDictionarySetCString( info, CFSTR( kAirPlayKey_HardwareRevision ), str, kSizeCString );
    e8865b7e:	02814783          	lbu	a5,40(sp)
    e8865b82:	3c078763          	beqz	a5,e8865f50 <AirPlayCopyServerInfo+0x5ac>
    e8865b86:	56fd                	li	a3,-1
    e8865b88:	864a                	mv	a2,s2
    e8865b8a:	00038597          	auipc	a1,0x38
    e8865b8e:	15e58593          	addi	a1,a1,350 # e889dce8 <icmp6_param_problem+0xc7a>
    e8865b92:	8522                	mv	a0,s0
    e8865b94:	eeee60ef          	jal	ra,e884c282 <CFDictionarySetCString>
	obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect, CFSTR( kAirPlayProperty_HIDDevices ), NULL, NULL );
    e8865b98:	4701                	li	a4,0
    e8865b9a:	4681                	li	a3,0
    e8865b9c:	00038617          	auipc	a2,0x38
    e8865ba0:	16c60613          	addi	a2,a2,364 # e889dd08 <icmp6_param_problem+0xc9a>
    e8865ba4:	4585                	li	a1,1
    e8865ba6:	8526                	mv	a0,s1
    e8865ba8:	eedfd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865bac:	892a                	mv	s2,a0
	if( obj )
    e8865bae:	cd01                	beqz	a0,e8865bc6 <AirPlayCopyServerInfo+0x222>
		CFDictionarySetValue( info, CFSTR( kAirPlayProperty_HIDDevices ), obj );
    e8865bb0:	862a                	mv	a2,a0
    e8865bb2:	00038597          	auipc	a1,0x38
    e8865bb6:	15658593          	addi	a1,a1,342 # e889dd08 <icmp6_param_problem+0xc9a>
    e8865bba:	8522                	mv	a0,s0
    e8865bbc:	897e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865bc0:	854a                	mv	a0,s2
    e8865bc2:	d88e10ef          	jal	ra,e884714a <CFRelease>
	obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865bc6:	4701                	li	a4,0
    e8865bc8:	4681                	li	a3,0
    e8865bca:	00038617          	auipc	a2,0x38
    e8865bce:	15660613          	addi	a2,a2,342 # e889dd20 <icmp6_param_problem+0xcb2>
    e8865bd2:	4585                	li	a1,1
    e8865bd4:	8526                	mv	a0,s1
    e8865bd6:	ebffd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865bda:	892a                	mv	s2,a0
	if( obj )
    e8865bdc:	cd01                	beqz	a0,e8865bf4 <AirPlayCopyServerInfo+0x250>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_HIDLanguages ), obj );
    e8865bde:	862a                	mv	a2,a0
    e8865be0:	00038597          	auipc	a1,0x38
    e8865be4:	14058593          	addi	a1,a1,320 # e889dd20 <icmp6_param_problem+0xcb2>
    e8865be8:	8522                	mv	a0,s0
    e8865bea:	869e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865bee:	854a                	mv	a0,s2
    e8865bf0:	d5ae10ef          	jal	ra,e884714a <CFRelease>
	CFDictionarySetBoolean( info, CFSTR( kAirPlayKey_KeepAliveSendStatsAsBody ), true );
    e8865bf4:	0006f917          	auipc	s2,0x6f
    e8865bf8:	0dc90913          	addi	s2,s2,220 # e88d4cd0 <kCFLBooleanTrue>
    e8865bfc:	00093603          	ld	a2,0(s2)
    e8865c00:	00038597          	auipc	a1,0x38
    e8865c04:	13858593          	addi	a1,a1,312 # e889dd38 <icmp6_param_problem+0xcca>
    e8865c08:	8522                	mv	a0,s0
    e8865c0a:	849e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFDictionarySetBoolean( info, CFSTR( kAirPlayKey_KeepAliveLowPower ), true );
    e8865c0e:	00093603          	ld	a2,0(s2)
    e8865c12:	00038597          	auipc	a1,0x38
    e8865c16:	14e58593          	addi	a1,a1,334 # e889dd60 <icmp6_param_problem+0xcf2>
    e8865c1a:	8522                	mv	a0,s0
    e8865c1c:	837e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFDictionarySetBoolean( info, CFSTR( kAirPlayKey_RightHandDrive ), false );
    e8865c20:	0006f797          	auipc	a5,0x6f
    e8865c24:	0a878793          	addi	a5,a5,168 # e88d4cc8 <kCFLBooleanFalse>
    e8865c28:	6390                	ld	a2,0(a5)
    e8865c2a:	00038597          	auipc	a1,0x38
    e8865c2e:	15658593          	addi	a1,a1,342 # e889dd80 <icmp6_param_problem+0xd12>
    e8865c32:	8522                	mv	a0,s0
    e8865c34:	81fe10ef          	jal	ra,e8847452 <CFDictionarySetValue>
	obj = CFDictionaryGetValue( server->config, CFSTR( kAirPlayKey_LimitedUIElements ) );
    e8865c38:	78c8                	ld	a0,176(s1)
    e8865c3a:	00038597          	auipc	a1,0x38
    e8865c3e:	15e58593          	addi	a1,a1,350 # e889dd98 <icmp6_param_problem+0xd2a>
    e8865c42:	ffce10ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8865c46:	8b2a                	mv	s6,a0
	if( obj )
    e8865c48:	32051d63          	bnez	a0,e8865f82 <AirPlayCopyServerInfo+0x5de>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865c4c:	4701                	li	a4,0
    e8865c4e:	4681                	li	a3,0
    e8865c50:	00038617          	auipc	a2,0x38
    e8865c54:	14860613          	addi	a2,a2,328 # e889dd98 <icmp6_param_problem+0xd2a>
    e8865c58:	4585                	li	a1,1
    e8865c5a:	8526                	mv	a0,s1
    e8865c5c:	e39fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865c60:	892a                	mv	s2,a0
	if( obj )
    e8865c62:	cd01                	beqz	a0,e8865c7a <AirPlayCopyServerInfo+0x2d6>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_LimitedUIElements ), obj );
    e8865c64:	8522                	mv	a0,s0
    e8865c66:	864a                	mv	a2,s2
    e8865c68:	00038597          	auipc	a1,0x38
    e8865c6c:	13058593          	addi	a1,a1,304 # e889dd98 <icmp6_param_problem+0xd2a>
    e8865c70:	fe2e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865c74:	854a                	mv	a0,s2
    e8865c76:	cd4e10ef          	jal	ra,e884714a <CFRelease>
	obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865c7a:	4701                	li	a4,0
    e8865c7c:	4681                	li	a3,0
    e8865c7e:	00038617          	auipc	a2,0x38
    e8865c82:	13a60613          	addi	a2,a2,314 # e889ddb8 <icmp6_param_problem+0xd4a>
    e8865c86:	4585                	li	a1,1
    e8865c88:	8526                	mv	a0,s1
    e8865c8a:	e0bfd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865c8e:	892a                	mv	s2,a0
	if( obj )
    e8865c90:	cd01                	beqz	a0,e8865ca8 <AirPlayCopyServerInfo+0x304>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_LimitedUI ), obj );
    e8865c92:	862a                	mv	a2,a0
    e8865c94:	00038597          	auipc	a1,0x38
    e8865c98:	12458593          	addi	a1,a1,292 # e889ddb8 <icmp6_param_problem+0xd4a>
    e8865c9c:	8522                	mv	a0,s0
    e8865c9e:	fb4e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865ca2:	854a                	mv	a0,s2
    e8865ca4:	ca6e10ef          	jal	ra,e884714a <CFRelease>
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_Manufacturer ), str, sizeof( str ), NULL );
    e8865ca8:	6785                	lui	a5,0x1
    e8865caa:	0818                	addi	a4,sp,16
	*str = '\0';
    e8865cac:	797d                	lui	s2,0xfffff
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_Manufacturer ), str, sizeof( str ), NULL );
    e8865cae:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8865cb2:	97ba                	add	a5,a5,a4
    e8865cb4:	1961                	addi	s2,s2,-8
    e8865cb6:	993e                	add	s2,s2,a5
    e8865cb8:	6685                	lui	a3,0x1
    e8865cba:	4701                	li	a4,0
    e8865cbc:	0685                	addi	a3,a3,1
    e8865cbe:	864a                	mv	a2,s2
    e8865cc0:	00038597          	auipc	a1,0x38
    e8865cc4:	11058593          	addi	a1,a1,272 # e889ddd0 <icmp6_param_problem+0xd62>
    e8865cc8:	8526                	mv	a0,s1
	*str = '\0';
    e8865cca:	02010423          	sb	zero,40(sp)
	AirPlayGetConfigCString( server, CFSTR( kAirPlayKey_Manufacturer ), str, sizeof( str ), NULL );
    e8865cce:	aa8fe0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
	if( *str != '\0' ) CFDictionarySetCString( info, CFSTR( kAirPlayKey_Manufacturer ), str, kSizeCString );
    e8865cd2:	02814783          	lbu	a5,40(sp)
    e8865cd6:	2e078863          	beqz	a5,e8865fc6 <AirPlayCopyServerInfo+0x622>
    e8865cda:	56fd                	li	a3,-1
    e8865cdc:	864a                	mv	a2,s2
    e8865cde:	00038597          	auipc	a1,0x38
    e8865ce2:	0f258593          	addi	a1,a1,242 # e889ddd0 <icmp6_param_problem+0xd62>
    e8865ce6:	8522                	mv	a0,s0
    e8865ce8:	d9ae60ef          	jal	ra,e884c282 <CFDictionarySetCString>
	obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865cec:	4701                	li	a4,0
    e8865cee:	4681                	li	a3,0
    e8865cf0:	00038617          	auipc	a2,0x38
    e8865cf4:	f5060613          	addi	a2,a2,-176 # e889dc40 <icmp6_param_problem+0xbd2>
    e8865cf8:	4585                	li	a1,1
    e8865cfa:	8526                	mv	a0,s1
    e8865cfc:	d99fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865d00:	892a                	mv	s2,a0
	if( obj )
    e8865d02:	2e050b63          	beqz	a0,e8865ff8 <AirPlayCopyServerInfo+0x654>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_Model ), obj );
    e8865d06:	862a                	mv	a2,a0
    e8865d08:	00038597          	auipc	a1,0x38
    e8865d0c:	f3858593          	addi	a1,a1,-200 # e889dc40 <icmp6_param_problem+0xbd2>
    e8865d10:	8522                	mv	a0,s0
    e8865d12:	f40e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865d16:	854a                	mv	a0,s2
    e8865d18:	c32e10ef          	jal	ra,e884714a <CFRelease>
	if( inSession )
    e8865d1c:	020a8963          	beqz	s5,e8865d4e <AirPlayCopyServerInfo+0x3aa>
		obj = AirPlayReceiverSessionPlatformCopyProperty( inSession, kCFObjectFlagDirect, 
    e8865d20:	4701                	li	a4,0
    e8865d22:	4681                	li	a3,0
    e8865d24:	00038617          	auipc	a2,0x38
    e8865d28:	0c460613          	addi	a2,a2,196 # e889dde8 <icmp6_param_problem+0xd7a>
    e8865d2c:	4585                	li	a1,1
    e8865d2e:	8556                	mv	a0,s5
    e8865d30:	a16fe0ef          	jal	ra,e8863f46 <AirPlayReceiverSessionPlatformCopyProperty>
    e8865d34:	892a                	mv	s2,a0
		if( obj )
    e8865d36:	cd01                	beqz	a0,e8865d4e <AirPlayCopyServerInfo+0x3aa>
			CFDictionarySetValue( info, CFSTR( kAirPlayProperty_Modes ), obj );
    e8865d38:	862a                	mv	a2,a0
    e8865d3a:	00038597          	auipc	a1,0x38
    e8865d3e:	0ae58593          	addi	a1,a1,174 # e889dde8 <icmp6_param_problem+0xd7a>
    e8865d42:	8522                	mv	a0,s0
    e8865d44:	f0ee10ef          	jal	ra,e8847452 <CFDictionarySetValue>
			CFRelease( obj );
    e8865d48:	854a                	mv	a0,s2
    e8865d4a:	c00e10ef          	jal	ra,e884714a <CFRelease>
	AirPlayGetDeviceName( str, sizeof( str ) );
    e8865d4e:	6785                	lui	a5,0x1
    e8865d50:	0818                	addi	a4,sp,16
	*str = '\0';
    e8865d52:	767d                	lui	a2,0xfffff
	AirPlayGetDeviceName( str, sizeof( str ) );
    e8865d54:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8865d58:	97ba                	add	a5,a5,a4
    e8865d5a:	1661                	addi	a2,a2,-8
    e8865d5c:	963e                	add	a2,a2,a5
    e8865d5e:	6585                	lui	a1,0x1
    e8865d60:	0585                	addi	a1,a1,1
    e8865d62:	8532                	mv	a0,a2
    e8865d64:	e432                	sd	a2,8(sp)
	*str = '\0';
    e8865d66:	02010423          	sb	zero,40(sp)
	AirPlayGetDeviceName( str, sizeof( str ) );
    e8865d6a:	a7aff0ef          	jal	ra,e8864fe4 <AirPlayGetDeviceName>
	CFDictionarySetCString( info, CFSTR( kAirPlayKey_Name ), str, kSizeCString );
    e8865d6e:	6622                	ld	a2,8(sp)
    e8865d70:	00038597          	auipc	a1,0x38
    e8865d74:	d9058593          	addi	a1,a1,-624 # e889db00 <icmp6_param_problem+0xa92>
    e8865d78:	56fd                	li	a3,-1
    e8865d7a:	8522                	mv	a0,s0
    e8865d7c:	d06e60ef          	jal	ra,e884c282 <CFDictionarySetCString>
	if( strcmp( kAirPlayProtocolVersionStr, "1.0" ) != 0 )
    e8865d80:	00063597          	auipc	a1,0x63
    e8865d84:	5b858593          	addi	a1,a1,1464 # e88c9338 <__PRETTY_FUNCTION__.13159+0x648>
    e8865d88:	852e                	mv	a0,a1
    e8865d8a:	5b2160ef          	jal	ra,e887c33c <eLIBs_strcmp>
    e8865d8e:	cd09                	beqz	a0,e8865da8 <AirPlayCopyServerInfo+0x404>
		CFDictionarySetCString( info, CFSTR( kAirPlayKey_ProtocolVersion ), kAirPlayProtocolVersionStr, kSizeCString );
    e8865d90:	56fd                	li	a3,-1
    e8865d92:	00063617          	auipc	a2,0x63
    e8865d96:	5a660613          	addi	a2,a2,1446 # e88c9338 <__PRETTY_FUNCTION__.13159+0x648>
    e8865d9a:	00038597          	auipc	a1,0x38
    e8865d9e:	05e58593          	addi	a1,a1,94 # e889ddf8 <icmp6_param_problem+0xd8a>
    e8865da2:	8522                	mv	a0,s0
    e8865da4:	cdee60ef          	jal	ra,e884c282 <CFDictionarySetCString>
	obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865da8:	4701                	li	a4,0
    e8865daa:	4681                	li	a3,0
    e8865dac:	00038617          	auipc	a2,0x38
    e8865db0:	06460613          	addi	a2,a2,100 # e889de10 <icmp6_param_problem+0xda2>
    e8865db4:	4585                	li	a1,1
    e8865db6:	8526                	mv	a0,s1
    e8865db8:	cddfd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865dbc:	892a                	mv	s2,a0
	if( obj )
    e8865dbe:	cd01                	beqz	a0,e8865dd6 <AirPlayCopyServerInfo+0x432>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_NightMode ), obj );
    e8865dc0:	862a                	mv	a2,a0
    e8865dc2:	00038597          	auipc	a1,0x38
    e8865dc6:	04e58593          	addi	a1,a1,78 # e889de10 <icmp6_param_problem+0xda2>
    e8865dca:	8522                	mv	a0,s0
    e8865dcc:	e86e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865dd0:	854a                	mv	a0,s2
    e8865dd2:	b78e10ef          	jal	ra,e884714a <CFRelease>
	if( inSession )
    e8865dd6:	100a8263          	beqz	s5,e8865eda <AirPlayCopyServerInfo+0x536>
		AirPlayGetConfigCString( server, CFSTR( kAirPlayProperty_OEMIconPath ), str, sizeof( str ), NULL );
    e8865dda:	6785                	lui	a5,0x1
    e8865ddc:	0818                	addi	a4,sp,16
		*str = '\0';
    e8865dde:	797d                	lui	s2,0xfffff
		AirPlayGetConfigCString( server, CFSTR( kAirPlayProperty_OEMIconPath ), str, sizeof( str ), NULL );
    e8865de0:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8865de4:	97ba                	add	a5,a5,a4
    e8865de6:	1961                	addi	s2,s2,-8
    e8865de8:	993e                	add	s2,s2,a5
    e8865dea:	6685                	lui	a3,0x1
    e8865dec:	4701                	li	a4,0
    e8865dee:	0685                	addi	a3,a3,1
    e8865df0:	864a                	mv	a2,s2
    e8865df2:	00038597          	auipc	a1,0x38
    e8865df6:	03658593          	addi	a1,a1,54 # e889de28 <icmp6_param_problem+0xdba>
    e8865dfa:	8526                	mv	a0,s1
		*str = '\0';
    e8865dfc:	02010423          	sb	zero,40(sp)
		AirPlayGetConfigCString( server, CFSTR( kAirPlayProperty_OEMIconPath ), str, sizeof( str ), NULL );
    e8865e00:	976fe0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
		if( *str != '\0' ) obj = CFDataCreateWithFilePath( str, NULL );
    e8865e04:	02814783          	lbu	a5,40(sp)
    e8865e08:	24079b63          	bnez	a5,e886605e <AirPlayCopyServerInfo+0x6ba>
			obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865e0c:	4701                	li	a4,0
    e8865e0e:	4681                	li	a3,0
    e8865e10:	00038617          	auipc	a2,0x38
    e8865e14:	03060613          	addi	a2,a2,48 # e889de40 <icmp6_param_problem+0xdd2>
    e8865e18:	4585                	li	a1,1
    e8865e1a:	8526                	mv	a0,s1
    e8865e1c:	c79fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865e20:	892a                	mv	s2,a0
		if( obj )
    e8865e22:	cd01                	beqz	a0,e8865e3a <AirPlayCopyServerInfo+0x496>
			CFDictionarySetValue( info, CFSTR( kAirPlayProperty_OEMIcon ), obj );
    e8865e24:	8522                	mv	a0,s0
    e8865e26:	864a                	mv	a2,s2
    e8865e28:	00038597          	auipc	a1,0x38
    e8865e2c:	01858593          	addi	a1,a1,24 # e889de40 <icmp6_param_problem+0xdd2>
    e8865e30:	e22e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
			CFRelease( obj );
    e8865e34:	854a                	mv	a0,s2
    e8865e36:	b14e10ef          	jal	ra,e884714a <CFRelease>
		obj = CFDictionaryGetValue( server->config, CFSTR( kAirPlayProperty_OEMIcons ) );
    e8865e3a:	78c8                	ld	a0,176(s1)
    e8865e3c:	00038597          	auipc	a1,0x38
    e8865e40:	01458593          	addi	a1,a1,20 # e889de50 <icmp6_param_problem+0xde2>
    e8865e44:	dfae10ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8865e48:	892a                	mv	s2,a0
		CFRetainNullSafe( obj );
    e8865e4a:	40050163          	beqz	a0,e886624c <AirPlayCopyServerInfo+0x8a8>
    e8865e4e:	af8e10ef          	jal	ra,e8847146 <CFRetain>
			CFDictionarySetValue( info, CFSTR( kAirPlayProperty_OEMIcons ), obj );
    e8865e52:	8522                	mv	a0,s0
    e8865e54:	864a                	mv	a2,s2
    e8865e56:	00038597          	auipc	a1,0x38
    e8865e5a:	ffa58593          	addi	a1,a1,-6 # e889de50 <icmp6_param_problem+0xde2>
    e8865e5e:	df4e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
			CFRelease( obj );
    e8865e62:	854a                	mv	a0,s2
    e8865e64:	ae6e10ef          	jal	ra,e884714a <CFRelease>
		AirPlayGetConfigCString( server, CFSTR( kAirPlayProperty_OEMIconLabel ), str, sizeof( str ), NULL );
    e8865e68:	6785                	lui	a5,0x1
    e8865e6a:	0818                	addi	a4,sp,16
		*str = '\0';
    e8865e6c:	797d                	lui	s2,0xfffff
		AirPlayGetConfigCString( server, CFSTR( kAirPlayProperty_OEMIconLabel ), str, sizeof( str ), NULL );
    e8865e6e:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8865e72:	97ba                	add	a5,a5,a4
    e8865e74:	1961                	addi	s2,s2,-8
    e8865e76:	993e                	add	s2,s2,a5
    e8865e78:	6685                	lui	a3,0x1
    e8865e7a:	4701                	li	a4,0
    e8865e7c:	0685                	addi	a3,a3,1
    e8865e7e:	864a                	mv	a2,s2
    e8865e80:	00038597          	auipc	a1,0x38
    e8865e84:	fe858593          	addi	a1,a1,-24 # e889de68 <icmp6_param_problem+0xdfa>
    e8865e88:	8526                	mv	a0,s1
		*str = '\0';
    e8865e8a:	02010423          	sb	zero,40(sp)
		AirPlayGetConfigCString( server, CFSTR( kAirPlayProperty_OEMIconLabel ), str, sizeof( str ), NULL );
    e8865e8e:	8e8fe0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
		if( *str != '\0' ) CFDictionarySetCString( info, CFSTR( kAirPlayProperty_OEMIconLabel ), str, kSizeCString );
    e8865e92:	02814783          	lbu	a5,40(sp)
    e8865e96:	1c078c63          	beqz	a5,e886606e <AirPlayCopyServerInfo+0x6ca>
    e8865e9a:	56fd                	li	a3,-1
    e8865e9c:	864a                	mv	a2,s2
    e8865e9e:	00038597          	auipc	a1,0x38
    e8865ea2:	fca58593          	addi	a1,a1,-54 # e889de68 <icmp6_param_problem+0xdfa>
    e8865ea6:	8522                	mv	a0,s0
    e8865ea8:	bdae60ef          	jal	ra,e884c282 <CFDictionarySetCString>
		obj = CFDictionaryGetValue( server->config, CFSTR( kAirPlayProperty_OEMIconVisible ) );
    e8865eac:	78c8                	ld	a0,176(s1)
    e8865eae:	00038597          	auipc	a1,0x38
    e8865eb2:	fd258593          	addi	a1,a1,-46 # e889de80 <icmp6_param_problem+0xe12>
    e8865eb6:	d88e10ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8865eba:	892a                	mv	s2,a0
		CFRetainNullSafe( obj );
    e8865ebc:	36050a63          	beqz	a0,e8866230 <AirPlayCopyServerInfo+0x88c>
    e8865ec0:	a86e10ef          	jal	ra,e8847146 <CFRetain>
			CFDictionarySetValue( info, CFSTR( kAirPlayProperty_OEMIconVisible ), obj );
    e8865ec4:	8522                	mv	a0,s0
    e8865ec6:	864a                	mv	a2,s2
    e8865ec8:	00038597          	auipc	a1,0x38
    e8865ecc:	fb858593          	addi	a1,a1,-72 # e889de80 <icmp6_param_problem+0xe12>
    e8865ed0:	d82e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
			CFRelease( obj );
    e8865ed4:	854a                	mv	a0,s2
    e8865ed6:	a74e10ef          	jal	ra,e884714a <CFRelease>
	obj = CFDictionaryGetValue( server->config, CFSTR( kAirPlayKey_OSInfo ) );
    e8865eda:	78c8                	ld	a0,176(s1)
    e8865edc:	00038597          	auipc	a1,0x38
    e8865ee0:	fbc58593          	addi	a1,a1,-68 # e889de98 <icmp6_param_problem+0xe2a>
    e8865ee4:	d5ae10ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8865ee8:	892a                	mv	s2,a0
	if( CFIsType( obj, CFString ) ) CFRetainNullSafe( obj );
    e8865eea:	1a050b63          	beqz	a0,e88660a0 <AirPlayCopyServerInfo+0x6fc>
    e8865eee:	a44e10ef          	jal	ra,e8847132 <CFGetTypeID>
    e8865ef2:	00050a9b          	sext.w	s5,a0
    e8865ef6:	d9ee10ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8865efa:	2501                	sext.w	a0,a0
    e8865efc:	1aaa9263          	bne	s5,a0,e88660a0 <AirPlayCopyServerInfo+0x6fc>
    e8865f00:	854a                	mv	a0,s2
    e8865f02:	a44e10ef          	jal	ra,e8847146 <CFRetain>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_OSInfo ), obj );
    e8865f06:	8522                	mv	a0,s0
    e8865f08:	864a                	mv	a2,s2
    e8865f0a:	00038597          	auipc	a1,0x38
    e8865f0e:	f8e58593          	addi	a1,a1,-114 # e889de98 <icmp6_param_problem+0xe2a>
    e8865f12:	d40e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865f16:	854a                	mv	a0,s2
    e8865f18:	a32e10ef          	jal	ra,e884714a <CFRelease>
    e8865f1c:	aa79                	j	e88660ba <AirPlayCopyServerInfo+0x716>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865f1e:	4701                	li	a4,0
    e8865f20:	4681                	li	a3,0
    e8865f22:	00038617          	auipc	a2,0x38
    e8865f26:	cfe60613          	addi	a2,a2,-770 # e889dc20 <icmp6_param_problem+0xbb2>
    e8865f2a:	4585                	li	a1,1
    e8865f2c:	8526                	mv	a0,s1
    e8865f2e:	b67fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865f32:	892a                	mv	s2,a0
	if( obj )
    e8865f34:	c20500e3          	beqz	a0,e8865b54 <AirPlayCopyServerInfo+0x1b0>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_FirmwareRevision ), obj );
    e8865f38:	862a                	mv	a2,a0
    e8865f3a:	00038597          	auipc	a1,0x38
    e8865f3e:	ce658593          	addi	a1,a1,-794 # e889dc20 <icmp6_param_problem+0xbb2>
    e8865f42:	8522                	mv	a0,s0
    e8865f44:	d0ee10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865f48:	854a                	mv	a0,s2
    e8865f4a:	a00e10ef          	jal	ra,e884714a <CFRelease>
    e8865f4e:	b119                	j	e8865b54 <AirPlayCopyServerInfo+0x1b0>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865f50:	4701                	li	a4,0
    e8865f52:	4681                	li	a3,0
    e8865f54:	00038617          	auipc	a2,0x38
    e8865f58:	d9460613          	addi	a2,a2,-620 # e889dce8 <icmp6_param_problem+0xc7a>
    e8865f5c:	4585                	li	a1,1
    e8865f5e:	8526                	mv	a0,s1
    e8865f60:	b35fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865f64:	892a                	mv	s2,a0
	if( obj )
    e8865f66:	c20509e3          	beqz	a0,e8865b98 <AirPlayCopyServerInfo+0x1f4>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_HardwareRevision ), obj );
    e8865f6a:	862a                	mv	a2,a0
    e8865f6c:	00038597          	auipc	a1,0x38
    e8865f70:	d7c58593          	addi	a1,a1,-644 # e889dce8 <icmp6_param_problem+0xc7a>
    e8865f74:	8522                	mv	a0,s0
    e8865f76:	cdce10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865f7a:	854a                	mv	a0,s2
    e8865f7c:	9cee10ef          	jal	ra,e884714a <CFRelease>
    e8865f80:	b921                	j	e8865b98 <AirPlayCopyServerInfo+0x1f4>
		if( CFIsType( obj, CFArray ) )
    e8865f82:	9b0e10ef          	jal	ra,e8847132 <CFGetTypeID>
    e8865f86:	0005091b          	sext.w	s2,a0
    e8865f8a:	9dee10ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8865f8e:	2501                	sext.w	a0,a0
    e8865f90:	caa91ee3          	bne	s2,a0,e8865c4c <AirPlayCopyServerInfo+0x2a8>
			CFMutableArrayRef	elements = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8865f94:	00058617          	auipc	a2,0x58
    e8865f98:	7dc60613          	addi	a2,a2,2012 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e8865f9c:	4581                	li	a1,0
    e8865f9e:	4501                	li	a0,0
    e8865fa0:	a26e10ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e8865fa4:	892a                	mv	s2,a0
			CFArrayApplyFunction( (CFArrayRef) obj, CFRangeMake( 0, CFArrayGetCount( (CFArrayRef) obj ) ),
    e8865fa6:	855a                	mv	a0,s6
    e8865fa8:	a4ae10ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8865fac:	02051593          	slli	a1,a0,0x20
    e8865fb0:	86ca                	mv	a3,s2
    e8865fb2:	ffffe617          	auipc	a2,0xffffe
    e8865fb6:	76460613          	addi	a2,a2,1892 # e8864716 <_ProcessLimitedUIElementsConfigArray>
    e8865fba:	855a                	mv	a0,s6
    e8865fbc:	9d2e20ef          	jal	ra,e884818e <CFLArrayApplyFunction>
	if( !obj )
    e8865fc0:	ca0912e3          	bnez	s2,e8865c64 <AirPlayCopyServerInfo+0x2c0>
    e8865fc4:	b161                	j	e8865c4c <AirPlayCopyServerInfo+0x2a8>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8865fc6:	4701                	li	a4,0
    e8865fc8:	4681                	li	a3,0
    e8865fca:	00038617          	auipc	a2,0x38
    e8865fce:	e0660613          	addi	a2,a2,-506 # e889ddd0 <icmp6_param_problem+0xd62>
    e8865fd2:	4585                	li	a1,1
    e8865fd4:	8526                	mv	a0,s1
    e8865fd6:	abffd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8865fda:	892a                	mv	s2,a0
	if( obj )
    e8865fdc:	d00508e3          	beqz	a0,e8865cec <AirPlayCopyServerInfo+0x348>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_Manufacturer ), obj );
    e8865fe0:	862a                	mv	a2,a0
    e8865fe2:	00038597          	auipc	a1,0x38
    e8865fe6:	dee58593          	addi	a1,a1,-530 # e889ddd0 <icmp6_param_problem+0xd62>
    e8865fea:	8522                	mv	a0,s0
    e8865fec:	c66e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8865ff0:	854a                	mv	a0,s2
    e8865ff2:	958e10ef          	jal	ra,e884714a <CFRelease>
    e8865ff6:	b9dd                	j	e8865cec <AirPlayCopyServerInfo+0x348>
	AirPlayGetConfigCString( inServer, CFSTR( kAirPlayKey_Model ), inBuffer, inMaxLen, NULL );
    e8865ff8:	6785                	lui	a5,0x1
    e8865ffa:	0818                	addi	a4,sp,16
		*str = '\0';
    e8865ffc:	797d                	lui	s2,0xfffff
	AirPlayGetConfigCString( inServer, CFSTR( kAirPlayKey_Model ), inBuffer, inMaxLen, NULL );
    e8865ffe:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8866002:	97ba                	add	a5,a5,a4
    e8866004:	1961                	addi	s2,s2,-8
    e8866006:	993e                	add	s2,s2,a5
    e8866008:	6b05                	lui	s6,0x1
    e886600a:	4701                	li	a4,0
    e886600c:	001b0693          	addi	a3,s6,1 # 1001 <memcmp-0xe87fefff>
    e8866010:	864a                	mv	a2,s2
    e8866012:	00038597          	auipc	a1,0x38
    e8866016:	c2e58593          	addi	a1,a1,-978 # e889dc40 <icmp6_param_problem+0xbd2>
    e886601a:	8526                	mv	a0,s1
		*str = '\0';
    e886601c:	02010423          	sb	zero,40(sp)
	AirPlayGetConfigCString( inServer, CFSTR( kAirPlayKey_Model ), inBuffer, inMaxLen, NULL );
    e8866020:	f57fd0ef          	jal	ra,e8863f76 <AirPlayGetConfigCString>
	if( *inBuffer == '\0' ) strlcpy( inBuffer, "AirPlayGeneric1,1", inMaxLen );		// If no model, use a default.
    e8866024:	02814783          	lbu	a5,40(sp)
    e8866028:	eb91                	bnez	a5,e886603c <AirPlayCopyServerInfo+0x698>
    e886602a:	001b0613          	addi	a2,s6,1
    e886602e:	00063597          	auipc	a1,0x63
    e8866032:	2f258593          	addi	a1,a1,754 # e88c9320 <__PRETTY_FUNCTION__.13159+0x630>
    e8866036:	854a                	mv	a0,s2
    e8866038:	a47f90ef          	jal	ra,e885fa7e <strlcpy>
		CFDictionarySetCString( info, CFSTR( kAirPlayKey_Model ), str, kSizeCString );
    e886603c:	6785                	lui	a5,0x1
    e886603e:	0818                	addi	a4,sp,16
    e8866040:	767d                	lui	a2,0xfffff
    e8866042:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e8866046:	97ba                	add	a5,a5,a4
    e8866048:	1661                	addi	a2,a2,-8
    e886604a:	56fd                	li	a3,-1
    e886604c:	963e                	add	a2,a2,a5
    e886604e:	00038597          	auipc	a1,0x38
    e8866052:	bf258593          	addi	a1,a1,-1038 # e889dc40 <icmp6_param_problem+0xbd2>
    e8866056:	8522                	mv	a0,s0
    e8866058:	a2ae60ef          	jal	ra,e884c282 <CFDictionarySetCString>
    e886605c:	b1c1                	j	e8865d1c <AirPlayCopyServerInfo+0x378>
		if( *str != '\0' ) obj = CFDataCreateWithFilePath( str, NULL );
    e886605e:	854a                	mv	a0,s2
    e8866060:	4581                	li	a1,0
    e8866062:	8ece60ef          	jal	ra,e884c14e <CFDataCreateWithFilePath>
    e8866066:	892a                	mv	s2,a0
		if( !obj )
    e8866068:	da051ee3          	bnez	a0,e8865e24 <AirPlayCopyServerInfo+0x480>
    e886606c:	b345                	j	e8865e0c <AirPlayCopyServerInfo+0x468>
			obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e886606e:	4701                	li	a4,0
    e8866070:	4681                	li	a3,0
    e8866072:	00038617          	auipc	a2,0x38
    e8866076:	df660613          	addi	a2,a2,-522 # e889de68 <icmp6_param_problem+0xdfa>
    e886607a:	4585                	li	a1,1
    e886607c:	8526                	mv	a0,s1
    e886607e:	a17fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8866082:	892a                	mv	s2,a0
		if( obj )
    e8866084:	e20504e3          	beqz	a0,e8865eac <AirPlayCopyServerInfo+0x508>
			CFDictionarySetValue( info, CFSTR( kAirPlayProperty_OEMIconLabel ), obj );
    e8866088:	862a                	mv	a2,a0
    e886608a:	00038597          	auipc	a1,0x38
    e886608e:	dde58593          	addi	a1,a1,-546 # e889de68 <icmp6_param_problem+0xdfa>
    e8866092:	8522                	mv	a0,s0
    e8866094:	bbee10ef          	jal	ra,e8847452 <CFDictionarySetValue>
			CFRelease( obj );
    e8866098:	854a                	mv	a0,s2
    e886609a:	8b0e10ef          	jal	ra,e884714a <CFRelease>
    e886609e:	b539                	j	e8865eac <AirPlayCopyServerInfo+0x508>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e88660a0:	4701                	li	a4,0
    e88660a2:	4681                	li	a3,0
    e88660a4:	00038617          	auipc	a2,0x38
    e88660a8:	df460613          	addi	a2,a2,-524 # e889de98 <icmp6_param_problem+0xe2a>
    e88660ac:	4585                	li	a1,1
    e88660ae:	8526                	mv	a0,s1
    e88660b0:	9e5fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e88660b4:	892a                	mv	s2,a0
	if( obj )
    e88660b6:	e40518e3          	bnez	a0,e8865f06 <AirPlayCopyServerInfo+0x562>
	err = AirPlayCopyHomeKitPairingIdentity( &cptr, NULL );
    e88660ba:	6785                	lui	a5,0x1
    e88660bc:	797d                	lui	s2,0xfffff
    e88660be:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e88660c2:	0818                	addi	a4,sp,16
    e88660c4:	ff090513          	addi	a0,s2,-16 # ffffffffffffeff0 <__DRAM0_INF_BASE+0xffffffff0000eff0>
    e88660c8:	97ba                	add	a5,a5,a4
    e88660ca:	4581                	li	a1,0
    e88660cc:	953e                	add	a0,a0,a5
    e88660ce:	fc5fe0ef          	jal	ra,e8865092 <AirPlayCopyHomeKitPairingIdentity>
	if( !err )	
    e88660d2:	e51d                	bnez	a0,e8866100 <AirPlayCopyServerInfo+0x75c>
		CFDictionarySetCString( info, CFSTR( kAirPlayKey_PublicHKID ), cptr, kSizeCString );
    e88660d4:	6785                	lui	a5,0x1
    e88660d6:	0818                	addi	a4,sp,16
    e88660d8:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e88660dc:	97ba                	add	a5,a5,a4
    e88660de:	97ca                	add	a5,a5,s2
    e88660e0:	ff07b603          	ld	a2,-16(a5)
    e88660e4:	56fd                	li	a3,-1
    e88660e6:	00038597          	auipc	a1,0x38
    e88660ea:	dc258593          	addi	a1,a1,-574 # e889dea8 <icmp6_param_problem+0xe3a>
    e88660ee:	8522                	mv	a0,s0
    e88660f0:	e43e                	sd	a5,8(sp)
    e88660f2:	990e60ef          	jal	ra,e884c282 <CFDictionarySetCString>
		free( cptr );
    e88660f6:	67a2                	ld	a5,8(sp)
    e88660f8:	ff07b503          	ld	a0,-16(a5)
    e88660fc:	204160ef          	jal	ra,e887c300 <eLIBs_free>
	obj = CFDictionaryGetValue( server->config, CFSTR( kAirPlayKey_RightHandDrive ) );
    e8866100:	78c8                	ld	a0,176(s1)
    e8866102:	00038597          	auipc	a1,0x38
    e8866106:	c7e58593          	addi	a1,a1,-898 # e889dd80 <icmp6_param_problem+0xd12>
    e886610a:	b34e10ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e886610e:	892a                	mv	s2,a0
	CFRetainNullSafe( obj );
    e8866110:	10050263          	beqz	a0,e8866214 <AirPlayCopyServerInfo+0x870>
    e8866114:	832e10ef          	jal	ra,e8847146 <CFRetain>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_RightHandDrive ), obj );
    e8866118:	8522                	mv	a0,s0
    e886611a:	864a                	mv	a2,s2
    e886611c:	00038597          	auipc	a1,0x38
    e8866120:	c6458593          	addi	a1,a1,-924 # e889dd80 <icmp6_param_problem+0xd12>
    e8866124:	b2ee10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e8866128:	854a                	mv	a0,s2
    e886612a:	820e10ef          	jal	ra,e884714a <CFRelease>
	CFDictionarySetValue( info, CFSTR( kAirPlayKey_SourceVersion ), CFSTR( kAirPlaySourceVersionStr ) );
    e886612e:	00038617          	auipc	a2,0x38
    e8866132:	95260613          	addi	a2,a2,-1710 # e889da80 <icmp6_param_problem+0xa12>
    e8866136:	00038597          	auipc	a1,0x38
    e886613a:	96a58593          	addi	a1,a1,-1686 # e889daa0 <icmp6_param_problem+0xa32>
    e886613e:	8522                	mv	a0,s0
    e8866140:	b12e10ef          	jal	ra,e8847452 <CFDictionarySetValue>
	u64 = AirPlayGetStatusFlags( server );
    e8866144:	8526                	mv	a0,s1
    e8866146:	fcdfe0ef          	jal	ra,e8865112 <AirPlayGetStatusFlags>
    e886614a:	0005061b          	sext.w	a2,a0
	if( u64 != 0 ) CFDictionarySetInt64( info, CFSTR( kAirPlayKey_StatusFlags ), u64 );
    e886614e:	ca11                	beqz	a2,e8866162 <AirPlayCopyServerInfo+0x7be>
    e8866150:	7c06360b          	extu	a2,a2,31,0
    e8866154:	00038597          	auipc	a1,0x38
    e8866158:	ab458593          	addi	a1,a1,-1356 # e889dc08 <icmp6_param_problem+0xb9a>
    e886615c:	8522                	mv	a0,s0
    e886615e:	d69e60ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inProperties )
    e8866162:	040a0763          	beqz	s4,e88661b0 <AirPlayCopyServerInfo+0x80c>
		range = CFRangeMake( 0, CFArrayGetCount( inProperties ) );
    e8866166:	8552                	mv	a0,s4
    e8866168:	88ae10ef          	jal	ra,e88471f2 <CFArrayGetCount>
		if( CFArrayContainsValue( inProperties, range, CFSTR( kAirPlayKey_TXTAirPlay ) ) )
    e886616c:	02051593          	slli	a1,a0,0x20
    e8866170:	00038617          	auipc	a2,0x38
    e8866174:	d4860613          	addi	a2,a2,-696 # e889deb8 <icmp6_param_problem+0xe4a>
    e8866178:	8552                	mv	a0,s4
    e886617a:	902e10ef          	jal	ra,e884727c <CFArrayContainsValue>
    e886617e:	c90d                	beqz	a0,e88661b0 <AirPlayCopyServerInfo+0x80c>
			_UpdateBonjourAirPlay( server, &data );
    e8866180:	6785                	lui	a5,0x1
    e8866182:	0818                	addi	a4,sp,16
			data = NULL;
    e8866184:	75fd                	lui	a1,0xfffff
			_UpdateBonjourAirPlay( server, &data );
    e8866186:	02078793          	addi	a5,a5,32 # 1020 <memcmp-0xe87fefe0>
    e886618a:	97ba                	add	a5,a5,a4
    e886618c:	15a1                	addi	a1,a1,-24
    e886618e:	95be                	add	a1,a1,a5
    e8866190:	8526                	mv	a0,s1
			data = NULL;
    e8866192:	ec02                	sd	zero,24(sp)
			_UpdateBonjourAirPlay( server, &data );
    e8866194:	fa7fe0ef          	jal	ra,e886513a <_UpdateBonjourAirPlay>
			if( data )
    e8866198:	6662                	ld	a2,24(sp)
    e886619a:	ca19                	beqz	a2,e88661b0 <AirPlayCopyServerInfo+0x80c>
				CFDictionarySetValue( info, CFSTR( kAirPlayKey_TXTAirPlay ), data );
    e886619c:	8522                	mv	a0,s0
    e886619e:	00038597          	auipc	a1,0x38
    e88661a2:	d1a58593          	addi	a1,a1,-742 # e889deb8 <icmp6_param_problem+0xe4a>
    e88661a6:	aace10ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFRelease( data );
    e88661aa:	6562                	ld	a0,24(sp)
    e88661ac:	f9fe00ef          	jal	ra,e884714a <CFRelease>
	obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e88661b0:	8526                	mv	a0,s1
    e88661b2:	4701                	li	a4,0
    e88661b4:	4681                	li	a3,0
    e88661b6:	00038617          	auipc	a2,0x38
    e88661ba:	d1a60613          	addi	a2,a2,-742 # e889ded0 <icmp6_param_problem+0xe62>
    e88661be:	4585                	li	a1,1
    e88661c0:	8d5fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e88661c4:	892a                	mv	s2,a0
	err = kNoErr;
    e88661c6:	4481                	li	s1,0
	if( obj )
    e88661c8:	cd01                	beqz	a0,e88661e0 <AirPlayCopyServerInfo+0x83c>
		CFDictionarySetValue( info, CFSTR( kAirPlayKey_VehicleInformation ), obj );
    e88661ca:	862a                	mv	a2,a0
    e88661cc:	00038597          	auipc	a1,0x38
    e88661d0:	d0458593          	addi	a1,a1,-764 # e889ded0 <icmp6_param_problem+0xe62>
    e88661d4:	8522                	mv	a0,s0
    e88661d6:	a7ce10ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( obj );
    e88661da:	854a                	mv	a0,s2
    e88661dc:	f6fe00ef          	jal	ra,e884714a <CFRelease>
	if( outErr ) *outErr = err;
    e88661e0:	00098463          	beqz	s3,e88661e8 <AirPlayCopyServerInfo+0x844>
    e88661e4:	0099a023          	sw	s1,0(s3)
}
    e88661e8:	6305                	lui	t1,0x1
    e88661ea:	911a                	add	sp,sp,t1
    e88661ec:	70a6                	ld	ra,104(sp)
    e88661ee:	8522                	mv	a0,s0
    e88661f0:	64e6                	ld	s1,88(sp)
    e88661f2:	7406                	ld	s0,96(sp)
    e88661f4:	6946                	ld	s2,80(sp)
    e88661f6:	69a6                	ld	s3,72(sp)
    e88661f8:	6a06                	ld	s4,64(sp)
    e88661fa:	7ae2                	ld	s5,56(sp)
    e88661fc:	7b42                	ld	s6,48(sp)
    e88661fe:	6165                	addi	sp,sp,112
    e8866200:	8082                	ret
    require_action(server, exit, err = kParamErr);
    e8866202:	74f9                	lui	s1,0xffffe
	CFDictionaryRef				result = NULL;
    e8866204:	4401                	li	s0,0
    require_action(server, exit, err = kParamErr);
    e8866206:	5cf48493          	addi	s1,s1,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e886620a:	bfd9                	j	e88661e0 <AirPlayCopyServerInfo+0x83c>
	require_action( info, exit, err = kNoMemoryErr );
    e886620c:	74f9                	lui	s1,0xffffe
    e886620e:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8866212:	b7f9                	j	e88661e0 <AirPlayCopyServerInfo+0x83c>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8866214:	4701                	li	a4,0
    e8866216:	4681                	li	a3,0
    e8866218:	00038617          	auipc	a2,0x38
    e886621c:	b6860613          	addi	a2,a2,-1176 # e889dd80 <icmp6_param_problem+0xd12>
    e8866220:	4585                	li	a1,1
    e8866222:	8526                	mv	a0,s1
    e8866224:	871fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8866228:	892a                	mv	s2,a0
	if( obj )
    e886622a:	f00502e3          	beqz	a0,e886612e <AirPlayCopyServerInfo+0x78a>
    e886622e:	b5ed                	j	e8866118 <AirPlayCopyServerInfo+0x774>
			obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8866230:	4701                	li	a4,0
    e8866232:	4681                	li	a3,0
    e8866234:	00038617          	auipc	a2,0x38
    e8866238:	c4c60613          	addi	a2,a2,-948 # e889de80 <icmp6_param_problem+0xe12>
    e886623c:	4585                	li	a1,1
    e886623e:	8526                	mv	a0,s1
    e8866240:	855fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8866244:	892a                	mv	s2,a0
		if( obj )
    e8866246:	c8050ae3          	beqz	a0,e8865eda <AirPlayCopyServerInfo+0x536>
    e886624a:	b9ad                	j	e8865ec4 <AirPlayCopyServerInfo+0x520>
			obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e886624c:	4701                	li	a4,0
    e886624e:	4681                	li	a3,0
    e8866250:	00038617          	auipc	a2,0x38
    e8866254:	c0060613          	addi	a2,a2,-1024 # e889de50 <icmp6_param_problem+0xde2>
    e8866258:	4585                	li	a1,1
    e886625a:	8526                	mv	a0,s1
    e886625c:	839fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e8866260:	892a                	mv	s2,a0
		if( obj )
    e8866262:	c00503e3          	beqz	a0,e8865e68 <AirPlayCopyServerInfo+0x4c4>
    e8866266:	b6f5                	j	e8865e52 <AirPlayCopyServerInfo+0x4ae>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8866268:	4701                	li	a4,0
    e886626a:	4681                	li	a3,0
    e886626c:	00038617          	auipc	a2,0x38
    e8866270:	a5c60613          	addi	a2,a2,-1444 # e889dcc8 <icmp6_param_problem+0xc5a>
    e8866274:	4585                	li	a1,1
    e8866276:	8526                	mv	a0,s1
    e8866278:	81dfd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e886627c:	892a                	mv	s2,a0
	if( obj )
    e886627e:	86050de3          	beqz	a0,e8865af8 <AirPlayCopyServerInfo+0x154>
    e8866282:	861ff06f          	j	e8865ae2 <AirPlayCopyServerInfo+0x13e>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e8866286:	4701                	li	a4,0
    e8866288:	4681                	li	a3,0
    e886628a:	00038617          	auipc	a2,0x38
    e886628e:	9f660613          	addi	a2,a2,-1546 # e889dc80 <icmp6_param_problem+0xc12>
    e8866292:	4585                	li	a1,1
    e8866294:	8526                	mv	a0,s1
    e8866296:	ffefd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e886629a:	892a                	mv	s2,a0
	if( obj )
    e886629c:	fa050263          	beqz	a0,e8865a40 <AirPlayCopyServerInfo+0x9c>
    e88662a0:	f8aff06f          	j	e8865a2a <AirPlayCopyServerInfo+0x86>
		obj = AirPlayReceiverServerPlatformCopyProperty( server, kCFObjectFlagDirect,
    e88662a4:	4701                	li	a4,0
    e88662a6:	4681                	li	a3,0
    e88662a8:	00038617          	auipc	a2,0x38
    e88662ac:	9c060613          	addi	a2,a2,-1600 # e889dc68 <icmp6_param_problem+0xbfa>
    e88662b0:	4585                	li	a1,1
    e88662b2:	8526                	mv	a0,s1
    e88662b4:	fe0fd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e88662b8:	892a                	mv	s2,a0
	if( obj )
    e88662ba:	f4050c63          	beqz	a0,e8865a12 <AirPlayCopyServerInfo+0x6e>
    e88662be:	f3eff06f          	j	e88659fc <AirPlayCopyServerInfo+0x58>

00000000e88662c2 <_requestProcessInfo>:
{
    e88662c2:	7159                	addi	sp,sp,-112
    e88662c4:	f486                	sd	ra,104(sp)
    e88662c6:	f0a2                	sd	s0,96(sp)
    e88662c8:	eca6                	sd	s1,88(sp)
    e88662ca:	e8ca                	sd	s2,80(sp)
    e88662cc:	e4ce                	sd	s3,72(sp)
    e88662ce:	e0d2                	sd	s4,64(sp)
	if ( !inCnx->session )
    e88662d0:	691c                	ld	a5,16(a0)
	CFMutableArrayRef			qualifier = NULL;
    e88662d2:	ec02                	sd	zero,24(sp)
	uint32_t					userVersion = 0;
    e88662d4:	ca02                	sw	zero,20(sp)
	if ( !inCnx->session )
    e88662d6:	e3a1                	bnez	a5,e8866316 <_requestProcessInfo+0x54>
		dlogassert( "/info not allowed before SETUP" );
    e88662d8:	6705                	lui	a4,0x1
    e88662da:	00063817          	auipc	a6,0x63
    e88662de:	43e80813          	addi	a6,a6,1086 # e88c9718 <__PRETTY_FUNCTION__.14166+0x28>
    e88662e2:	00063797          	auipc	a5,0x63
    e88662e6:	2e678793          	addi	a5,a5,742 # e88c95c8 <__PRETTY_FUNCTION__.14000>
    e88662ea:	b1670713          	addi	a4,a4,-1258 # b16 <memcmp-0xe87ff4ea>
    e88662ee:	00063697          	auipc	a3,0x63
    e88662f2:	4fa68693          	addi	a3,a3,1274 # e88c97e8 <__PRETTY_FUNCTION__.14166+0xf8>
    e88662f6:	4601                	li	a2,0
    e88662f8:	4581                	li	a1,0
    e88662fa:	4501                	li	a0,0
    e88662fc:	8cce80ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		return( kHTTPStatus_MethodNotValidInThisState );
    e8866300:	1c700413          	li	s0,455
}
    e8866304:	8522                	mv	a0,s0
    e8866306:	70a6                	ld	ra,104(sp)
    e8866308:	7406                	ld	s0,96(sp)
    e886630a:	64e6                	ld	s1,88(sp)
    e886630c:	6946                	ld	s2,80(sp)
    e886630e:	69a6                	ld	s3,72(sp)
    e8866310:	6a06                	ld	s4,64(sp)
    e8866312:	6165                	addi	sp,sp,112
    e8866314:	8082                	ret
    e8866316:	84ae                	mv	s1,a1
	if ( inRequest->bodyLen > 0 ) {
    e8866318:	5205b583          	ld	a1,1312(a1)
    e886631c:	8a2a                	mv	s4,a0
    e886631e:	cdbd                	beqz	a1,e886639c <_requestProcessInfo+0xda>
		requestDict = (CFDictionaryRef)CFBinaryPlistV0CreateWithData( inRequest->bodyPtr, inRequest->bodyLen, &err );
    e8866320:	5184b503          	ld	a0,1304(s1)
    e8866324:	0810                	addi	a2,sp,16
		require_noerr_action( err, exit, status = kHTTPStatus_BadRequest );
    e8866326:	19000413          	li	s0,400
		requestDict = (CFDictionaryRef)CFBinaryPlistV0CreateWithData( inRequest->bodyPtr, inRequest->bodyLen, &err );
    e886632a:	b18e40ef          	jal	ra,e884a642 <CFBinaryPlistV0CreateWithData>
    e886632e:	892a                	mv	s2,a0
		require_noerr_action( err, exit, status = kHTTPStatus_BadRequest );
    e8866330:	47c2                	lw	a5,16(sp)
    e8866332:	eb91                	bnez	a5,e8866346 <_requestProcessInfo+0x84>
		require_action( CFGetTypeID( requestDict ) == CFDictionaryGetTypeID() , exit, status = kHTTPStatus_BadRequest );
    e8866334:	dffe00ef          	jal	ra,e8847132 <CFGetTypeID>
    e8866338:	0005099b          	sext.w	s3,a0
    e886633c:	866e10ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8866340:	2501                	sext.w	a0,a0
    e8866342:	04a98e63          	beq	s3,a0,e886639e <_requestProcessInfo+0xdc>
	CFReleaseNullSafe( qualifier );
    e8866346:	6562                	ld	a0,24(sp)
    e8866348:	c119                	beqz	a0,e886634e <_requestProcessInfo+0x8c>
    e886634a:	e01e00ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( requestDict );
    e886634e:	00090563          	beqz	s2,e8866358 <_requestProcessInfo+0x96>
    e8866352:	854a                	mv	a0,s2
    e8866354:	df7e00ef          	jal	ra,e884714a <CFRelease>
	if( err ) aprs_ulog( kLogLevelNotice, "### Get info failed: %#m, %#m\n", status, err );
    e8866358:	47c2                	lw	a5,16(sp)
    e886635a:	d7cd                	beqz	a5,e8866304 <_requestProcessInfo+0x42>
    e886635c:	0006f517          	auipc	a0,0x6f
    e8866360:	e4450513          	addi	a0,a0,-444 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866364:	411c                	lw	a5,0(a0)
    e8866366:	03200713          	li	a4,50
    e886636a:	f8f74de3          	blt	a4,a5,e8866304 <_requestProcessInfo+0x42>
    e886636e:	577d                	li	a4,-1
    e8866370:	0ee78463          	beq	a5,a4,e8866458 <_requestProcessInfo+0x196>
    e8866374:	47c2                	lw	a5,16(sp)
    e8866376:	0004071b          	sext.w	a4,s0
    e886637a:	00063697          	auipc	a3,0x63
    e886637e:	3d668693          	addi	a3,a3,982 # e88c9750 <__PRETTY_FUNCTION__.14166+0x60>
    e8866382:	03200613          	li	a2,50
    e8866386:	00063597          	auipc	a1,0x63
    e886638a:	24258593          	addi	a1,a1,578 # e88c95c8 <__PRETTY_FUNCTION__.14000>
    e886638e:	0006f517          	auipc	a0,0x6f
    e8866392:	e1250513          	addi	a0,a0,-494 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866396:	8deee0ef          	jal	ra,e8854474 <LogPrintF>
    e886639a:	b7ad                	j	e8866304 <_requestProcessInfo+0x42>
	CFDictionaryRef				requestDict = NULL;
    e886639c:	4901                	li	s2,0
	qualifier = (CFMutableArrayRef) CFDictionaryGetCFArray( requestDict, CFSTR( kAirPlayKey_Qualifier ), NULL );
    e886639e:	dcbe00ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e88663a2:	0005061b          	sext.w	a2,a0
    e88663a6:	4681                	li	a3,0
    e88663a8:	00038597          	auipc	a1,0x38
    e88663ac:	b4858593          	addi	a1,a1,-1208 # e889def0 <icmp6_param_problem+0xe82>
    e88663b0:	854a                	mv	a0,s2
    e88663b2:	af8e60ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e88663b6:	ec2a                	sd	a0,24(sp)
	if( qualifier ) CFRetain( qualifier );
    e88663b8:	c119                	beqz	a0,e88663be <_requestProcessInfo+0xfc>
    e88663ba:	d8de00ef          	jal	ra,e8847146 <CFRetain>
	src = inRequest->header.url.queryPtr;
    e88663be:	4a04b783          	ld	a5,1184(s1)
	end = src + inRequest->header.url.queryLen;
    e88663c2:	4a84b403          	ld	s0,1192(s1)
	while( ( err = URLGetOrCopyNextVariable( src, end, &namePtr, &nameLen, &nameBuf, NULL, NULL, NULL, &src ) ) == kNoErr )
    e88663c6:	02010993          	addi	s3,sp,32
	src = inRequest->header.url.queryPtr;
    e88663ca:	f03e                	sd	a5,32(sp)
	end = src + inRequest->header.url.queryLen;
    e88663cc:	943e                	add	s0,s0,a5
	while( ( err = URLGetOrCopyNextVariable( src, end, &namePtr, &nameLen, &nameBuf, NULL, NULL, NULL, &src ) ) == kNoErr )
    e88663ce:	7502                	ld	a0,32(sp)
    e88663d0:	e04e                	sd	s3,0(sp)
    e88663d2:	4881                	li	a7,0
    e88663d4:	4801                	li	a6,0
    e88663d6:	4781                	li	a5,0
    e88663d8:	1838                	addi	a4,sp,56
    e88663da:	1814                	addi	a3,sp,48
    e88663dc:	1030                	addi	a2,sp,40
    e88663de:	85a2                	mv	a1,s0
    e88663e0:	d14fb0ef          	jal	ra,e88618f4 <URLGetOrCopyNextVariable>
    e88663e4:	c82a                	sw	a0,16(sp)
    e88663e6:	c931                	beqz	a0,e886643a <_requestProcessInfo+0x178>
	HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_ProtocolVersion, "%u", &userVersion );
    e88663e8:	4104b583          	ld	a1,1040(s1)
    e88663ec:	0858                	addi	a4,sp,20
    e88663ee:	0003f697          	auipc	a3,0x3f
    e88663f2:	b6268693          	addi	a3,a3,-1182 # e88a4f50 <end.8789+0x18a8>
    e88663f6:	00063617          	auipc	a2,0x63
    e88663fa:	34260613          	addi	a2,a2,834 # e88c9738 <__PRETTY_FUNCTION__.14166+0x48>
    e88663fe:	01048513          	addi	a0,s1,16
    e8866402:	86eec0ef          	jal	ra,e8852470 <HTTPScanFHeaderValue>
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8866406:	1f400413          	li	s0,500
	responseDict = AirPlayCopyServerInfo( inCnx->session, qualifier, &err );
    e886640a:	65e2                	ld	a1,24(sp)
    e886640c:	010a3503          	ld	a0,16(s4)
    e8866410:	0810                	addi	a2,sp,16
    e8866412:	d92ff0ef          	jal	ra,e88659a4 <AirPlayCopyServerInfo>
    e8866416:	89aa                	mv	s3,a0
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8866418:	47c2                	lw	a5,16(sp)
    e886641a:	f795                	bnez	a5,e8866346 <_requestProcessInfo+0x84>
	status = _requestSendPlistResponse( inCnx->httpCnx, inRequest, responseDict, &err );
    e886641c:	008a3783          	ld	a5,8(s4)
    e8866420:	862a                	mv	a2,a0
    e8866422:	0814                	addi	a3,sp,16
    e8866424:	77e8                	ld	a0,232(a5)
    e8866426:	85a6                	mv	a1,s1
    e8866428:	d1cfe0ef          	jal	ra,e8864944 <_requestSendPlistResponse.isra.9>
    e886642c:	842a                	mv	s0,a0
	CFReleaseNullSafe( responseDict );
    e886642e:	f0098ce3          	beqz	s3,e8866346 <_requestProcessInfo+0x84>
    e8866432:	854e                	mv	a0,s3
    e8866434:	d17e00ef          	jal	ra,e884714a <CFRelease>
    e8866438:	b739                	j	e8866346 <_requestProcessInfo+0x84>
		err = CFArrayEnsureCreatedAndAppendCString( &qualifier, namePtr, nameLen );
    e886643a:	7642                	ld	a2,48(sp)
    e886643c:	75a2                	ld	a1,40(sp)
    e886643e:	0828                	addi	a0,sp,24
    e8866440:	bf3e50ef          	jal	ra,e884c032 <CFArrayEnsureCreatedAndAppendCString>
    e8866444:	c82a                	sw	a0,16(sp)
		if( nameBuf ) free( nameBuf );
    e8866446:	7562                	ld	a0,56(sp)
    e8866448:	c119                	beqz	a0,e886644e <_requestProcessInfo+0x18c>
    e886644a:	6b7150ef          	jal	ra,e887c300 <eLIBs_free>
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e886644e:	47c2                	lw	a5,16(sp)
    e8866450:	dfbd                	beqz	a5,e88663ce <_requestProcessInfo+0x10c>
    e8866452:	1f400413          	li	s0,500
    e8866456:	bdc5                	j	e8866346 <_requestProcessInfo+0x84>
	if( err ) aprs_ulog( kLogLevelNotice, "### Get info failed: %#m, %#m\n", status, err );
    e8866458:	03200593          	li	a1,50
    e886645c:	c17ed0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8866460:	ea0502e3          	beqz	a0,e8866304 <_requestProcessInfo+0x42>
    e8866464:	bf01                	j	e8866374 <_requestProcessInfo+0xb2>

00000000e8866466 <AirPlayReceiverServerGetTypeID>:
	dispatch_once_f( &gAirPlayReceiverServerInitOnce, NULL, _GetTypeID );
    e8866466:	0007e517          	auipc	a0,0x7e
    e886646a:	92650513          	addi	a0,a0,-1754 # e88e3d8c <gAirPlayReceiverServerInitOnce>
    e886646e:	4118                	lw	a4,0(a0)
    e8866470:	4789                	li	a5,2
    e8866472:	02f70363          	beq	a4,a5,e8866498 <AirPlayReceiverServerGetTypeID+0x32>
{
    e8866476:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gAirPlayReceiverServerInitOnce, NULL, _GetTypeID );
    e8866478:	ffffe617          	auipc	a2,0xffffe
    e886647c:	b3a60613          	addi	a2,a2,-1222 # e8863fb2 <_GetTypeID>
    e8866480:	4581                	li	a1,0
{
    e8866482:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gAirPlayReceiverServerInitOnce, NULL, _GetTypeID );
    e8866484:	9efe80ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e8866488:	60a2                	ld	ra,8(sp)
    e886648a:	0007e797          	auipc	a5,0x7e
    e886648e:	90678793          	addi	a5,a5,-1786 # e88e3d90 <gAirPlayReceiverServerTypeID>
    e8866492:	4388                	lw	a0,0(a5)
    e8866494:	0141                	addi	sp,sp,16
    e8866496:	8082                	ret
    e8866498:	0007e797          	auipc	a5,0x7e
    e886649c:	8f878793          	addi	a5,a5,-1800 # e88e3d90 <gAirPlayReceiverServerTypeID>
    e88664a0:	4388                	lw	a0,0(a5)
    e88664a2:	8082                	ret

00000000e88664a4 <AirPlayReceiverServerCreateWithConfigFilePath>:
{
    e88664a4:	7179                	addi	sp,sp,-48
    e88664a6:	e826                	sd	s1,16(sp)
    e88664a8:	84aa                	mv	s1,a0
	dispatch_once_f( &gAirPlayReceiverInitOnce, NULL, _GlobalInitialize );
    e88664aa:	0007e517          	auipc	a0,0x7e
    e88664ae:	8d650513          	addi	a0,a0,-1834 # e88e3d80 <gAirPlayReceiverInitOnce>
{
    e88664b2:	f04e                	sd	s3,32(sp)
    e88664b4:	f406                	sd	ra,40(sp)
    e88664b6:	e422                	sd	s0,8(sp)
    e88664b8:	ec4a                	sd	s2,24(sp)
	dispatch_once_f( &gAirPlayReceiverInitOnce, NULL, _GlobalInitialize );
    e88664ba:	4118                	lw	a4,0(a0)
    e88664bc:	4789                	li	a5,2
{
    e88664be:	89ae                	mv	s3,a1
	dispatch_once_f( &gAirPlayReceiverInitOnce, NULL, _GlobalInitialize );
    e88664c0:	00f70963          	beq	a4,a5,e88664d2 <AirPlayReceiverServerCreateWithConfigFilePath+0x2e>
    e88664c4:	ffffe617          	auipc	a2,0xffffe
    e88664c8:	b2a60613          	addi	a2,a2,-1238 # e8863fee <_GlobalInitialize>
    e88664cc:	4581                	li	a1,0
    e88664ce:	9a5e80ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
	me = (AirPlayReceiverServerRef) _CFRuntimeCreateInstance( NULL, AirPlayReceiverServerGetTypeID(), (CFIndex) extraLen, NULL );
    e88664d2:	f95ff0ef          	jal	ra,e8866466 <AirPlayReceiverServerGetTypeID>
    e88664d6:	0005059b          	sext.w	a1,a0
    e88664da:	4681                	li	a3,0
    e88664dc:	0b000613          	li	a2,176
    e88664e0:	4501                	li	a0,0
    e88664e2:	a92e10ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
    e88664e6:	842a                	mv	s0,a0
	require_action( me, exit, err = kNoMemoryErr );
    e88664e8:	12050a63          	beqz	a0,e886661c <AirPlayReceiverServerCreateWithConfigFilePath+0x178>
	memset( ( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );
    e88664ec:	0b000613          	li	a2,176
    e88664f0:	4581                	li	a1,0
    e88664f2:	0521                	addi	a0,a0,8
    e88664f4:	6a1150ef          	jal	ra,e887c394 <eLIBs_memset>
	me->timeoutDataSecs  = kAirPlayDataTimeoutSecs;
    e88664f8:	47f9                	li	a5,30
    e88664fa:	0af42023          	sw	a5,160(s0)
	me->queue = dispatch_queue_create( "AirPlayReceiverServerQueue", 0 );
    e88664fe:	4581                	li	a1,0
    e8866500:	00063517          	auipc	a0,0x63
    e8866504:	87850513          	addi	a0,a0,-1928 # e88c8d78 <__PRETTY_FUNCTION__.13159+0x88>
    e8866508:	877e90ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e886650c:	e808                	sd	a0,16(s0)
	me->httpQueue = dispatch_queue_create( "AirPlayReceiverServerHTTPQueue", 0 );
    e886650e:	4581                	li	a1,0
    e8866510:	00063517          	auipc	a0,0x63
    e8866514:	88850513          	addi	a0,a0,-1912 # e88c8d98 <__PRETTY_FUNCTION__.13159+0xa8>
    e8866518:	867e90ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e886651c:	fc28                	sd	a0,120(s0)
	if( !inConfigFilePath )
    e886651e:	e0a5                	bnez	s1,e886657e <AirPlayReceiverServerCreateWithConfigFilePath+0xda>
		me->configFilePath = strdup( AIRPLAY_CONFIG_FILE_PATH );
    e8866520:	00063517          	auipc	a0,0x63
    e8866524:	89850513          	addi	a0,a0,-1896 # e88c8db8 <__PRETTY_FUNCTION__.13159+0xc8>
    e8866528:	ae0f90ef          	jal	ra,e885f808 <strdup>
    e886652c:	f448                	sd	a0,168(s0)
	data = CFDataCreateWithFilePath( inServer->configFilePath, NULL );
    e886652e:	7448                	ld	a0,168(s0)
    e8866530:	4581                	li	a1,0
    e8866532:	c1de50ef          	jal	ra,e884c14e <CFDataCreateWithFilePath>
    e8866536:	892a                	mv	s2,a0
	require_action_quiet( data, exit, err = kNotFoundErr );
    e8866538:	ed31                	bnez	a0,e8866594 <AirPlayReceiverServerCreateWithConfigFilePath+0xf0>
	if( err ) inServer->config = CFDictionaryCreate( NULL, NULL, NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886653a:	00058797          	auipc	a5,0x58
    e886653e:	28e78793          	addi	a5,a5,654 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8866542:	00058717          	auipc	a4,0x58
    e8866546:	25670713          	addi	a4,a4,598 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886654a:	4681                	li	a3,0
    e886654c:	4601                	li	a2,0
    e886654e:	4581                	li	a1,0
    e8866550:	e6be00ef          	jal	ra,e88473ba <CFDictionaryCreate>
    e8866554:	f848                	sd	a0,176(s0)
	RandomBytes( me->httpTimedNonceKey, sizeof( me->httpTimedNonceKey ) );
    e8866556:	45c1                	li	a1,16
    e8866558:	08040513          	addi	a0,s0,128
    e886655c:	b49f60ef          	jal	ra,e885d0a4 <RandomBytes>
	err = AirPlayReceiverServerPlatformInitialize( me );
    e8866560:	8522                	mv	a0,s0
    e8866562:	cc4fd0ef          	jal	ra,e8863a26 <AirPlayReceiverServerPlatformInitialize>
    e8866566:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e8866568:	e115                	bnez	a0,e886658c <AirPlayReceiverServerCreateWithConfigFilePath+0xe8>
	*outServer = me;
    e886656a:	0089b023          	sd	s0,0(s3)
}
    e886656e:	70a2                	ld	ra,40(sp)
    e8866570:	6422                	ld	s0,8(sp)
    e8866572:	8526                	mv	a0,s1
    e8866574:	6962                	ld	s2,24(sp)
    e8866576:	64c2                	ld	s1,16(sp)
    e8866578:	7982                	ld	s3,32(sp)
    e886657a:	6145                	addi	sp,sp,48
    e886657c:	8082                	ret
		err = CFStringCopyUTF8CString( inConfigFilePath, &me->configFilePath );
    e886657e:	8526                	mv	a0,s1
    e8866580:	0a840593          	addi	a1,s0,168
    e8866584:	9ede60ef          	jal	ra,e884cf70 <CFStringCopyUTF8CString>
    e8866588:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e886658a:	d155                	beqz	a0,e886652e <AirPlayReceiverServerCreateWithConfigFilePath+0x8a>
	if( me ) CFRelease( me );
    e886658c:	8522                	mv	a0,s0
    e886658e:	bbde00ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e8866592:	bff1                	j	e886656e <AirPlayReceiverServerCreateWithConfigFilePath+0xca>
	config = (CFDictionaryRef) CFPropertyListCreateWithData( NULL, data, kCFPropertyListImmutable, NULL, NULL );
    e8866594:	85aa                	mv	a1,a0
    e8866596:	4701                	li	a4,0
    e8866598:	4681                	li	a3,0
    e886659a:	4601                	li	a2,0
    e886659c:	4501                	li	a0,0
    e886659e:	96ee10ef          	jal	ra,e884770c <CFPropertyListCreateWithData>
    e88665a2:	84aa                	mv	s1,a0
	if( !config )
    e88665a4:	e11d                	bnez	a0,e88665ca <AirPlayReceiverServerCreateWithConfigFilePath+0x126>
		config = CFDictionaryCreateWithINIBytes( CFDataGetBytePtr( data ), (size_t) CFDataGetLength( data ), 
    e88665a6:	854a                	mv	a0,s2
    e88665a8:	d45e00ef          	jal	ra,e88472ec <CFDataGetBytePtr>
    e88665ac:	84aa                	mv	s1,a0
    e88665ae:	854a                	mv	a0,s2
    e88665b0:	d27e00ef          	jal	ra,e88472d6 <CFDataGetLength>
    e88665b4:	85aa                	mv	a1,a0
    e88665b6:	4701                	li	a4,0
    e88665b8:	8526                	mv	a0,s1
    e88665ba:	00037697          	auipc	a3,0x37
    e88665be:	54668693          	addi	a3,a3,1350 # e889db00 <icmp6_param_problem+0xa92>
    e88665c2:	4605                	li	a2,1
    e88665c4:	d2de50ef          	jal	ra,e884c2f0 <CFDictionaryCreateWithINIBytes>
    e88665c8:	84aa                	mv	s1,a0
	CFRelease( data );
    e88665ca:	854a                	mv	a0,s2
    e88665cc:	b7fe00ef          	jal	ra,e884714a <CFRelease>
	if( config && !CFIsType( config, CFDictionary ) )
    e88665d0:	c4a1                	beqz	s1,e8866618 <AirPlayReceiverServerCreateWithConfigFilePath+0x174>
    e88665d2:	8526                	mv	a0,s1
    e88665d4:	b5fe00ef          	jal	ra,e8847132 <CFGetTypeID>
    e88665d8:	0005091b          	sext.w	s2,a0
    e88665dc:	dc7e00ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e88665e0:	2501                	sext.w	a0,a0
    e88665e2:	02a90b63          	beq	s2,a0,e8866618 <AirPlayReceiverServerCreateWithConfigFilePath+0x174>
		dlogassert( "Bad type for config file: %s", inServer->configFilePath );
    e88665e6:	0a843883          	ld	a7,168(s0)
    e88665ea:	00062817          	auipc	a6,0x62
    e88665ee:	7e680813          	addi	a6,a6,2022 # e88c8dd0 <__PRETTY_FUNCTION__.13159+0xe0>
    e88665f2:	00063797          	auipc	a5,0x63
    e88665f6:	e7678793          	addi	a5,a5,-394 # e88c9468 <__PRETTY_FUNCTION__.13668>
    e88665fa:	57d00713          	li	a4,1405
    e88665fe:	00063697          	auipc	a3,0x63
    e8866602:	1ea68693          	addi	a3,a3,490 # e88c97e8 <__PRETTY_FUNCTION__.14166+0xf8>
    e8866606:	4601                	li	a2,0
    e8866608:	4581                	li	a1,0
    e886660a:	4501                	li	a0,0
    e886660c:	dbde70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		CFRelease( config );
    e8866610:	8526                	mv	a0,s1
    e8866612:	b39e00ef          	jal	ra,e884714a <CFRelease>
		config = NULL;
    e8866616:	4481                	li	s1,0
	inServer->config = config;
    e8866618:	f844                	sd	s1,176(s0)
	if( err ) inServer->config = CFDictionaryCreate( NULL, NULL, NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886661a:	bf35                	j	e8866556 <AirPlayReceiverServerCreateWithConfigFilePath+0xb2>
	require_action( me, exit, err = kNoMemoryErr );
    e886661c:	74f9                	lui	s1,0xffffe
    e886661e:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8866622:	b7b1                	j	e886656e <AirPlayReceiverServerCreateWithConfigFilePath+0xca>

00000000e8866624 <AirPlayReceiverServerCreate>:
	return AirPlayReceiverServerCreateWithConfigFilePath( NULL, outServer );
    e8866624:	85aa                	mv	a1,a0
    e8866626:	4501                	li	a0,0
    e8866628:	e7dff06f          	j	e88664a4 <AirPlayReceiverServerCreateWithConfigFilePath>

00000000e886662c <AirPlayReceiverServerSetDelegate>:
{
    e886662c:	1141                	addi	sp,sp,-16
	inServer->delegate = *inDelegate;
    e886662e:	03800613          	li	a2,56
    e8866632:	0561                	addi	a0,a0,24
{
    e8866634:	e406                	sd	ra,8(sp)
	inServer->delegate = *inDelegate;
    e8866636:	a33990ef          	jal	ra,e8800068 <memcpy>
}
    e886663a:	60a2                	ld	ra,8(sp)
    e886663c:	0141                	addi	sp,sp,16
    e886663e:	8082                	ret

00000000e8866640 <AirPlayReceiverServerGetDispatchQueue>:
}
    e8866640:	6908                	ld	a0,16(a0)
    e8866642:	8082                	ret

00000000e8866644 <AirPlayReceiverServerControl>:
{
    e8866644:	715d                	addi	sp,sp,-80
    e8866646:	e0a2                	sd	s0,64(sp)
    e8866648:	fc26                	sd	s1,56(sp)
    e886664a:	f84a                	sd	s2,48(sp)
    e886664c:	f44e                	sd	s3,40(sp)
    e886664e:	f052                	sd	s4,32(sp)
    e8866650:	ec56                	sd	s5,24(sp)
    e8866652:	e486                	sd	ra,72(sp)
    e8866654:	8a3e                	mv	s4,a5
	else if( server->delegate.control_f && CFEqual( inCommand, CFSTR( kAirPlayCommand_GetLogs ) ) )
    e8866656:	751c                	ld	a5,40(a0)
{
    e8866658:	842a                	mv	s0,a0
    e886665a:	8aae                	mv	s5,a1
    e886665c:	84b2                	mv	s1,a2
    e886665e:	8936                	mv	s2,a3
    e8866660:	89ba                	mv	s3,a4
	else if( server->delegate.control_f && CFEqual( inCommand, CFSTR( kAirPlayCommand_GetLogs ) ) )
    e8866662:	cfad                	beqz	a5,e88666dc <AirPlayReceiverServerControl+0x98>
    e8866664:	00038597          	auipc	a1,0x38
    e8866668:	8a458593          	addi	a1,a1,-1884 # e889df08 <icmp6_param_problem+0xe9a>
    e886666c:	8532                	mv	a0,a2
    e886666e:	ae1e00ef          	jal	ra,e884714e <CFEqual>
    e8866672:	c52d                	beqz	a0,e88666dc <AirPlayReceiverServerControl+0x98>
		aprs_ulog( kLogLevelNotice, "Get Log Archive\n" );
    e8866674:	0006f517          	auipc	a0,0x6f
    e8866678:	b2c50513          	addi	a0,a0,-1236 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e886667c:	411c                	lw	a5,0(a0)
    e886667e:	03200713          	li	a4,50
    e8866682:	02f74563          	blt	a4,a5,e88666ac <AirPlayReceiverServerControl+0x68>
    e8866686:	577d                	li	a4,-1
    e8866688:	04e78463          	beq	a5,a4,e88666d0 <AirPlayReceiverServerControl+0x8c>
    e886668c:	00062697          	auipc	a3,0x62
    e8866690:	69c68693          	addi	a3,a3,1692 # e88c8d28 <__PRETTY_FUNCTION__.13159+0x38>
    e8866694:	03200613          	li	a2,50
    e8866698:	00063597          	auipc	a1,0x63
    e886669c:	db058593          	addi	a1,a1,-592 # e88c9448 <__PRETTY_FUNCTION__.13632>
    e88666a0:	0006f517          	auipc	a0,0x6f
    e88666a4:	b0050513          	addi	a0,a0,-1280 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88666a8:	dcded0ef          	jal	ra,e8854474 <LogPrintF>
		err = server->delegate.control_f( server, inCommand, inQualifier, inParams, outParams, server->delegate.context );
    e88666ac:	02843803          	ld	a6,40(s0)
    e88666b0:	6c1c                	ld	a5,24(s0)
    e88666b2:	8752                	mv	a4,s4
    e88666b4:	86ce                	mv	a3,s3
    e88666b6:	864a                	mv	a2,s2
    e88666b8:	85a6                	mv	a1,s1
    e88666ba:	8522                	mv	a0,s0
    e88666bc:	9802                	jalr	a6
}
    e88666be:	60a6                	ld	ra,72(sp)
    e88666c0:	6406                	ld	s0,64(sp)
    e88666c2:	74e2                	ld	s1,56(sp)
    e88666c4:	7942                	ld	s2,48(sp)
    e88666c6:	79a2                	ld	s3,40(sp)
    e88666c8:	7a02                	ld	s4,32(sp)
    e88666ca:	6ae2                	ld	s5,24(sp)
    e88666cc:	6161                	addi	sp,sp,80
    e88666ce:	8082                	ret
		aprs_ulog( kLogLevelNotice, "Get Log Archive\n" );
    e88666d0:	03200593          	li	a1,50
    e88666d4:	99fed0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88666d8:	d971                	beqz	a0,e88666ac <AirPlayReceiverServerControl+0x68>
    e88666da:	bf4d                	j	e886668c <AirPlayReceiverServerControl+0x48>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_UpdateBonjour ) ) )
    e88666dc:	00038597          	auipc	a1,0x38
    e88666e0:	83c58593          	addi	a1,a1,-1988 # e889df18 <icmp6_param_problem+0xeaa>
    e88666e4:	8526                	mv	a0,s1
    e88666e6:	a69e00ef          	jal	ra,e884714e <CFEqual>
    e88666ea:	c511                	beqz	a0,e88666f6 <AirPlayReceiverServerControl+0xb2>
		_UpdateBonjour( server );
    e88666ec:	8522                	mv	a0,s0
    e88666ee:	f0ffe0ef          	jal	ra,e88655fc <_UpdateBonjour>
	err = kNoErr;
    e88666f2:	4501                	li	a0,0
    e88666f4:	b7e9                	j	e88666be <AirPlayReceiverServerControl+0x7a>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_StartServer ) ) )
    e88666f6:	00038597          	auipc	a1,0x38
    e88666fa:	83a58593          	addi	a1,a1,-1990 # e889df30 <icmp6_param_problem+0xec2>
    e88666fe:	8526                	mv	a0,s1
    e8866700:	a4fe00ef          	jal	ra,e884714e <CFEqual>
    e8866704:	0c050f63          	beqz	a0,e88667e2 <AirPlayReceiverServerControl+0x19e>
		if( !server->serversStarted )
    e8866708:	09144783          	lbu	a5,145(s0)
    e886670c:	f3fd                	bnez	a5,e88666f2 <AirPlayReceiverServerControl+0xae>
			server->started = true;
    e886670e:	4785                	li	a5,1
    e8866710:	08f40923          	sb	a5,146(s0)
	obj = AirPlayReceiverServerPlatformCopyProperty( inServer, kCFObjectFlagDirect, CFSTR( kAirPlayProperty_DeviceID ), NULL, NULL );
    e8866714:	4701                	li	a4,0
    e8866716:	4681                	li	a3,0
    e8866718:	00037617          	auipc	a2,0x37
    e886671c:	3b860613          	addi	a2,a2,952 # e889dad0 <icmp6_param_problem+0xa62>
    e8866720:	4585                	li	a1,1
    e8866722:	8522                	mv	a0,s0
	err = kNoErr;
    e8866724:	c602                	sw	zero,12(sp)
	obj = AirPlayReceiverServerPlatformCopyProperty( inServer, kCFObjectFlagDirect, CFSTR( kAirPlayProperty_DeviceID ), NULL, NULL );
    e8866726:	b6efd0ef          	jal	ra,e8863a94 <AirPlayReceiverServerPlatformCopyProperty>
    e886672a:	84aa                	mv	s1,a0
	if( obj )
    e886672c:	09340993          	addi	s3,s0,147
    e8866730:	e909                	bnez	a0,e8866742 <AirPlayReceiverServerControl+0xfe>
{
    e8866732:	4925                	li	s2,9
			uint64_t u64 = GetPrimaryMACAddress( inServer->deviceID, NULL );
    e8866734:	4581                	li	a1,0
    e8866736:	854e                	mv	a0,s3
    e8866738:	cf3ee0ef          	jal	ra,e885542a <GetPrimaryMACAddress>
			if( u64 != 0 ) break;
    e886673c:	c549                	beqz	a0,e88667c6 <AirPlayReceiverServerControl+0x182>
	CFReleaseNullSafe( obj );
    e886673e:	cc81                	beqz	s1,e8866756 <AirPlayReceiverServerControl+0x112>
    e8866740:	a801                	j	e8866750 <AirPlayReceiverServerControl+0x10c>
		CFGetMACAddress( obj, inServer->deviceID, &err );
    e8866742:	0074                	addi	a3,sp,12
    e8866744:	4619                	li	a2,6
    e8866746:	85ce                	mv	a1,s3
    e8866748:	bb4e50ef          	jal	ra,e884bafc <CFGetHardwareAddress>
	if( !obj || err ) {
    e886674c:	47b2                	lw	a5,12(sp)
    e886674e:	f3f5                	bnez	a5,e8866732 <AirPlayReceiverServerControl+0xee>
	CFReleaseNullSafe( obj );
    e8866750:	8526                	mv	a0,s1
    e8866752:	9f9e00ef          	jal	ra,e884714a <CFRelease>
	if( inServer->serversStarted ) return;
    e8866756:	09144783          	lbu	a5,145(s0)
    e886675a:	ffc1                	bnez	a5,e88666f2 <AirPlayReceiverServerControl+0xae>
	inServer->httpServer = _CreateHTTPServerForPort( inServer, kAirPlayFixedPort_MediaControl );
    e886675c:	8522                	mv	a0,s0
    e886675e:	f92fe0ef          	jal	ra,e8864ef0 <_CreateHTTPServerForPort.constprop.16>
    e8866762:	f828                	sd	a0,112(s0)
	err = HTTPServerStartSync( inServer->httpServer );
    e8866764:	650c                	ld	a1,8(a0)
    e8866766:	00037717          	auipc	a4,0x37
    e886676a:	7ca70713          	addi	a4,a4,1994 # e889df30 <icmp6_param_problem+0xec2>
    e886676e:	4801                	li	a6,0
    e8866770:	4781                	li	a5,0
    e8866772:	4681                	li	a3,0
    e8866774:	fffeb617          	auipc	a2,0xfffeb
    e8866778:	e0e60613          	addi	a2,a2,-498 # e8851582 <_HTTPServerControl>
    e886677c:	8bce50ef          	jal	ra,e884b838 <CFObjectSetProperty>
	inServer->serversStarted = true;
    e8866780:	4785                	li	a5,1
    e8866782:	08f408a3          	sb	a5,145(s0)
	_UpdateBonjour( inServer );
    e8866786:	8522                	mv	a0,s0
    e8866788:	e75fe0ef          	jal	ra,e88655fc <_UpdateBonjour>
	aprs_ulog( kLogLevelNotice, "AirPlay servers started\n" );
    e886678c:	0006f517          	auipc	a0,0x6f
    e8866790:	a1450513          	addi	a0,a0,-1516 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866794:	411c                	lw	a5,0(a0)
    e8866796:	03200713          	li	a4,50
    e886679a:	f4f74ce3          	blt	a4,a5,e88666f2 <AirPlayReceiverServerControl+0xae>
    e886679e:	577d                	li	a4,-1
    e88667a0:	02e78a63          	beq	a5,a4,e88667d4 <AirPlayReceiverServerControl+0x190>
    e88667a4:	00062697          	auipc	a3,0x62
    e88667a8:	59c68693          	addi	a3,a3,1436 # e88c8d40 <__PRETTY_FUNCTION__.13159+0x50>
    e88667ac:	03200613          	li	a2,50
    e88667b0:	00063597          	auipc	a1,0x63
    e88667b4:	d3858593          	addi	a1,a1,-712 # e88c94e8 <__PRETTY_FUNCTION__.13763>
    e88667b8:	0006f517          	auipc	a0,0x6f
    e88667bc:	9e850513          	addi	a0,a0,-1560 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88667c0:	cb5ed0ef          	jal	ra,e8854474 <LogPrintF>
    e88667c4:	b73d                	j	e88666f2 <AirPlayReceiverServerControl+0xae>
			Sleep( 1 );
    e88667c6:	4505                	li	a0,1
    e88667c8:	397d                	addiw	s2,s2,-1
    e88667ca:	04d150ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		for( i = 1; i < 10; ++i )
    e88667ce:	f60913e3          	bnez	s2,e8866734 <AirPlayReceiverServerControl+0xf0>
    e88667d2:	b7b5                	j	e886673e <AirPlayReceiverServerControl+0xfa>
	aprs_ulog( kLogLevelNotice, "AirPlay servers started\n" );
    e88667d4:	03200593          	li	a1,50
    e88667d8:	89bed0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88667dc:	f0050be3          	beqz	a0,e88666f2 <AirPlayReceiverServerControl+0xae>
    e88667e0:	b7d1                	j	e88667a4 <AirPlayReceiverServerControl+0x160>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_StopServer ) ) )
    e88667e2:	00037597          	auipc	a1,0x37
    e88667e6:	2d658593          	addi	a1,a1,726 # e889dab8 <icmp6_param_problem+0xa4a>
    e88667ea:	8526                	mv	a0,s1
    e88667ec:	963e00ef          	jal	ra,e884714e <CFEqual>
    e88667f0:	c919                	beqz	a0,e8866806 <AirPlayReceiverServerControl+0x1c2>
		if( server->started )
    e88667f2:	09244783          	lbu	a5,146(s0)
    e88667f6:	ee078ee3          	beqz	a5,e88666f2 <AirPlayReceiverServerControl+0xae>
			server->started = false;
    e88667fa:	08040923          	sb	zero,146(s0)
			_StopServers( server );
    e88667fe:	8522                	mv	a0,s0
    e8866800:	866fe0ef          	jal	ra,e8864866 <_StopServers>
    e8866804:	b5fd                	j	e88666f2 <AirPlayReceiverServerControl+0xae>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_SessionDied ) ) )
    e8866806:	00037597          	auipc	a1,0x37
    e886680a:	74258593          	addi	a1,a1,1858 # e889df48 <icmp6_param_problem+0xeda>
    e886680e:	8526                	mv	a0,s1
    e8866810:	93fe00ef          	jal	ra,e884714e <CFEqual>
    e8866814:	c12d                	beqz	a0,e8866876 <AirPlayReceiverServerControl+0x232>
		aprs_ulog( kLogLevelNotice, "### Failure: %#m\n", kTimeoutErr );
    e8866816:	0006f517          	auipc	a0,0x6f
    e886681a:	98a50513          	addi	a0,a0,-1654 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e886681e:	411c                	lw	a5,0(a0)
    e8866820:	03200713          	li	a4,50
    e8866824:	02f74863          	blt	a4,a5,e8866854 <AirPlayReceiverServerControl+0x210>
    e8866828:	577d                	li	a4,-1
    e886682a:	04e78063          	beq	a5,a4,e886686a <AirPlayReceiverServerControl+0x226>
    e886682e:	7779                	lui	a4,0xffffe
    e8866830:	5be70713          	addi	a4,a4,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e8866834:	00062697          	auipc	a3,0x62
    e8866838:	52c68693          	addi	a3,a3,1324 # e88c8d60 <__PRETTY_FUNCTION__.13159+0x70>
    e886683c:	03200613          	li	a2,50
    e8866840:	00063597          	auipc	a1,0x63
    e8866844:	c0858593          	addi	a1,a1,-1016 # e88c9448 <__PRETTY_FUNCTION__.13632>
    e8866848:	0006f517          	auipc	a0,0x6f
    e886684c:	95850513          	addi	a0,a0,-1704 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866850:	c25ed0ef          	jal	ra,e8854474 <LogPrintF>
	if( !inServer )					return;
    e8866854:	e8040fe3          	beqz	s0,e88666f2 <AirPlayReceiverServerControl+0xae>
	_RemoveHTTPServerConnectionsOfType( inServer, inServer->httpServer, kAirPlayHTTPConnectionTypeAny );
    e8866858:	782c                	ld	a1,112(s0)
	if( !inHTTPServer )			return;
    e886685a:	e8058ce3          	beqz	a1,e88666f2 <AirPlayReceiverServerControl+0xae>
    e886685e:	4601                	li	a2,0
    e8866860:	07840513          	addi	a0,s0,120
    e8866864:	edafe0ef          	jal	ra,e8864f3e <_RemoveHTTPServerConnectionsOfType.isra.11.part.12>
    e8866868:	b569                	j	e88666f2 <AirPlayReceiverServerControl+0xae>
		aprs_ulog( kLogLevelNotice, "### Failure: %#m\n", kTimeoutErr );
    e886686a:	03200593          	li	a1,50
    e886686e:	805ed0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8866872:	d16d                	beqz	a0,e8866854 <AirPlayReceiverServerControl+0x210>
    e8866874:	bf6d                	j	e886682e <AirPlayReceiverServerControl+0x1ea>
		err = AirPlayReceiverServerPlatformControl( server, inFlags, inCommand, inQualifier, inParams, outParams );
    e8866876:	87d2                	mv	a5,s4
    e8866878:	874e                	mv	a4,s3
    e886687a:	86ca                	mv	a3,s2
    e886687c:	8626                	mv	a2,s1
    e886687e:	85d6                	mv	a1,s5
    e8866880:	8522                	mv	a0,s0
    e8866882:	9f6fd0ef          	jal	ra,e8863a78 <AirPlayReceiverServerPlatformControl>
		goto exit;
    e8866886:	bd25                	j	e88666be <AirPlayReceiverServerControl+0x7a>

00000000e8866888 <_createLogsDataBuffer>:
{
    e8866888:	7139                	addi	sp,sp,-64
    e886688a:	fc91540b          	sdd	s0,s1,(sp),2,4
    e886688e:	fc06                	sd	ra,56(sp)
    e8866890:	f84a                	sd	s2,48(sp)
	require_action( !inLogs->dataBuffer, exit, err = kInternalErr );
    e8866892:	711c                	ld	a5,32(a0)
{
    e8866894:	737d                	lui	t1,0xfffff
    e8866896:	911a                	add	sp,sp,t1
    e8866898:	84aa                	mv	s1,a0
	require_action( !inLogs->dataBuffer, exit, err = kInternalErr );
    e886689a:	c385                	beqz	a5,e88668ba <_createLogsDataBuffer+0x32>
    e886689c:	6705                	lui	a4,0x1
    e886689e:	0741                	addi	a4,a4,16
    e88668a0:	0814                	addi	a3,sp,16
    e88668a2:	9736                	add	a4,a4,a3
    e88668a4:	77fd                	lui	a5,0xfffff
    e88668a6:	97ba                	add	a5,a5,a4
    e88668a8:	e43e                	sd	a5,8(sp)
    e88668aa:	6722                	ld	a4,8(sp)
    e88668ac:	77f9                	lui	a5,0xffffe
    e88668ae:	5967879b          	addiw	a5,a5,1430
    e88668b2:	fef72a23          	sw	a5,-12(a4) # ff4 <memcmp-0xe87ff00c>
	dataBuffer = NULL;
    e88668b6:	4401                	li	s0,0
    e88668b8:	a025                	j	e88668e0 <_createLogsDataBuffer+0x58>
	dataBuffer = (DataBuffer *) malloc( sizeof( DataBuffer ) );
    e88668ba:	03800513          	li	a0,56
    e88668be:	791140ef          	jal	ra,e887b84e <my_malloc>
    e88668c2:	842a                	mv	s0,a0
	require_action( dataBuffer, exit, err = kNoMemoryErr );
    e88668c4:	ed31                	bnez	a0,e8866920 <_createLogsDataBuffer+0x98>
    e88668c6:	6705                	lui	a4,0x1
    e88668c8:	0741                	addi	a4,a4,16
    e88668ca:	0814                	addi	a3,sp,16
    e88668cc:	9736                	add	a4,a4,a3
    e88668ce:	77fd                	lui	a5,0xfffff
    e88668d0:	97ba                	add	a5,a5,a4
    e88668d2:	e43e                	sd	a5,8(sp)
    e88668d4:	6722                	ld	a4,8(sp)
    e88668d6:	77f9                	lui	a5,0xffffe
    e88668d8:	5b87879b          	addiw	a5,a5,1464
    e88668dc:	fef72a23          	sw	a5,-12(a4) # ff4 <memcmp-0xe87ff00c>
	inLogs->status = err ? kHTTPStatus_InternalServerError : kHTTPStatus_OK;
    e88668e0:	6705                	lui	a4,0x1
    e88668e2:	0741                	addi	a4,a4,16
    e88668e4:	0814                	addi	a3,sp,16
    e88668e6:	9736                	add	a4,a4,a3
    e88668e8:	77fd                	lui	a5,0xfffff
    e88668ea:	97ba                	add	a5,a5,a4
    e88668ec:	ff47a703          	lw	a4,-12(a5) # ffffffffffffeff4 <__DRAM0_INF_BASE+0xffffffff0000eff4>
    e88668f0:	e43e                	sd	a5,8(sp)
    e88668f2:	1f400793          	li	a5,500
    e88668f6:	e319                	bnez	a4,e88668fc <_createLogsDataBuffer+0x74>
    e88668f8:	0c800793          	li	a5,200
    e88668fc:	c8dc                	sw	a5,20(s1)
	inLogs->pending	= false;
    e88668fe:	00048823          	sb	zero,16(s1)
	if( dataBuffer ) DataBuffer_Free( dataBuffer );
    e8866902:	c401                	beqz	s0,e886690a <_createLogsDataBuffer+0x82>
    e8866904:	8522                	mv	a0,s0
    e8866906:	801e70ef          	jal	ra,e884e106 <DataBuffer_Free>
	CFRelease( inLogs );
    e886690a:	8526                	mv	a0,s1
    e886690c:	83fe00ef          	jal	ra,e884714a <CFRelease>
}
    e8866910:	6305                	lui	t1,0x1
    e8866912:	911a                	add	sp,sp,t1
    e8866914:	70e2                	ld	ra,56(sp)
    e8866916:	7942                	ld	s2,48(sp)
    e8866918:	fc91440b          	ldd	s0,s1,(sp),2,4
    e886691c:	6121                	addi	sp,sp,64
    e886691e:	8082                	ret
	DataBuffer_Init( dataBuffer, NULL, 0, 10 * kBytesPerMegaByte );
    e8866920:	00a006b7          	lui	a3,0xa00
    e8866924:	4601                	li	a2,0
    e8866926:	4581                	li	a1,0
    e8866928:	fc6e70ef          	jal	ra,e884e0ee <DataBuffer_Init>
	dict = NULL;
    e886692c:	797d                	lui	s2,0xfffff
	err = AirPlayReceiverServerControl( inLogs->server, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_GetLogs ), NULL, NULL, &dict );
    e886692e:	6705                	lui	a4,0x1
    e8866930:	0814                	addi	a3,sp,16
    e8866932:	0741                	addi	a4,a4,16
    e8866934:	9736                	add	a4,a4,a3
    e8866936:	6488                	ld	a0,8(s1)
    e8866938:	ff890793          	addi	a5,s2,-8 # ffffffffffffeff8 <__DRAM0_INF_BASE+0xffffffff0000eff8>
    e886693c:	97ba                	add	a5,a5,a4
    e886693e:	4681                	li	a3,0
    e8866940:	4701                	li	a4,0
    e8866942:	00037617          	auipc	a2,0x37
    e8866946:	5c660613          	addi	a2,a2,1478 # e889df08 <icmp6_param_problem+0xe9a>
    e886694a:	4585                	li	a1,1
	dict = NULL;
    e886694c:	ec02                	sd	zero,24(sp)
	err = AirPlayReceiverServerControl( inLogs->server, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_GetLogs ), NULL, NULL, &dict );
    e886694e:	cf7ff0ef          	jal	ra,e8866644 <AirPlayReceiverServerControl>
    e8866952:	ca2a                	sw	a0,20(sp)
	require_noerr( err, exit );
    e8866954:	f551                	bnez	a0,e88668e0 <_createLogsDataBuffer+0x58>
	require_action( dict, exit, err = kUnknownErr );
    e8866956:	6562                	ld	a0,24(sp)
    e8866958:	e511                	bnez	a0,e8866964 <_createLogsDataBuffer+0xdc>
    e886695a:	77f9                	lui	a5,0xffffe
    e886695c:	5d47879b          	addiw	a5,a5,1492
    e8866960:	ca3e                	sw	a5,20(sp)
    e8866962:	bfbd                	j	e88668e0 <_createLogsDataBuffer+0x58>
	CFDictionaryGetCString( dict, CFSTR( kAirPlayKey_Path), path, PATH_MAX, &err );
    e8866964:	6785                	lui	a5,0x1
    e8866966:	0814                	addi	a3,sp,16
    e8866968:	07c1                	addi	a5,a5,16
    e886696a:	97b6                	add	a5,a5,a3
    e886696c:	ff490713          	addi	a4,s2,-12
    e8866970:	973e                	add	a4,a4,a5
    e8866972:	6685                	lui	a3,0x1
    e8866974:	1010                	addi	a2,sp,32
    e8866976:	00037597          	auipc	a1,0x37
    e886697a:	5ea58593          	addi	a1,a1,1514 # e889df60 <icmp6_param_problem+0xef2>
    e886697e:	8b9e50ef          	jal	ra,e884c236 <CFDictionaryGetCString>
	err = DataBuffer_AppendFile( dataBuffer, path );
    e8866982:	100c                	addi	a1,sp,32
    e8866984:	8522                	mv	a0,s0
    e8866986:	9f7e70ef          	jal	ra,e884e37c <DataBuffer_AppendFile>
    e886698a:	ca2a                	sw	a0,20(sp)
	remove( path );
    e886698c:	1008                	addi	a0,sp,32
    e886698e:	0df150ef          	jal	ra,e887c26c <eLIBs_remove>
	require_noerr( err, exit );
    e8866992:	47d2                	lw	a5,20(sp)
    e8866994:	f7b1                	bnez	a5,e88668e0 <_createLogsDataBuffer+0x58>
	inLogs->dataBuffer = dataBuffer;
    e8866996:	f080                	sd	s0,32(s1)
    e8866998:	bf39                	j	e88668b6 <_createLogsDataBuffer+0x2e>

00000000e886699a <_HandleHTTPConnectionMessage>:
{
    e886699a:	7115                	addi	sp,sp,-224
    e886699c:	ed86                	sd	ra,216(sp)
    e886699e:	e9a2                	sd	s0,208(sp)
    e88669a0:	e5a6                	sd	s1,200(sp)
    e88669a2:	e1ca                	sd	s2,192(sp)
    e88669a4:	fd4e                	sd	s3,184(sp)
    e88669a6:	f952                	sd	s4,176(sp)
    e88669a8:	f556                	sd	s5,168(sp)
    e88669aa:	f15a                	sd	s6,160(sp)
    e88669ac:	ed5e                	sd	s7,152(sp)
    e88669ae:	e962                	sd	s8,144(sp)
    e88669b0:	e566                	sd	s9,136(sp)
    e88669b2:	e16a                	sd	s10,128(sp)
    e88669b4:	fcee                	sd	s11,120(sp)
	const char *			cSeqPtr		= NULL;
    e88669b6:	f402                	sd	zero,40(sp)
	size_t					cSeqLen		= 0;
    e88669b8:	f802                	sd	zero,48(sp)
	HTTPMessageRef			response	= inCnx->responseMsg;
    e88669ba:	0e853c03          	ld	s8,232(a0)
	const char * const		methodPtr	= inRequest->header.methodPtr;
    e88669be:	4285bb03          	ld	s6,1064(a1)
	size_t const			methodLen	= inRequest->header.methodLen;
    e88669c2:	4305ba83          	ld	s5,1072(a1)
	const char * const		pathPtr		= inRequest->header.url.pathPtr;
    e88669c6:	4905b983          	ld	s3,1168(a1)
	size_t const			pathLen		= inRequest->header.url.pathLen;
    e88669ca:	4985b903          	ld	s2,1176(a1)
	require_action( cnx, exit, err = kParamErr );
    e88669ce:	e219                	bnez	a2,e88669d4 <_HandleHTTPConnectionMessage+0x3a>
    e88669d0:	6d30006f          	j	e88678a2 <_HandleHTTPConnectionMessage+0xf08>
    e88669d4:	84ae                	mv	s1,a1
    e88669d6:	8caa                	mv	s9,a0
	httpProtocol = ( strnicmp_prefix(inRequest->header.protocolPtr, inRequest->header.protocolLen, "HTTP" ) == 0 )
    e88669d8:	4d85b583          	ld	a1,1240(a1)
    e88669dc:	4d04b503          	ld	a0,1232(s1)
    e88669e0:	8432                	mv	s0,a2
    e88669e2:	00063617          	auipc	a2,0x63
    e88669e6:	f8e60613          	addi	a2,a2,-114 # e88c9970 <__PRETTY_FUNCTION__.14166+0x280>
    e88669ea:	ee3f80ef          	jal	ra,e885f8cc <strnicmp_prefix>
    e88669ee:	0005ad97          	auipc	s11,0x5a
    e88669f2:	52ad8d93          	addi	s11,s11,1322 # e88c0f18 <kHTTPMessageClass+0x68>
    e88669f6:	c509                	beqz	a0,e8866a00 <_HandleHTTPConnectionMessage+0x66>
    e88669f8:	00063d97          	auipc	s11,0x63
    e88669fc:	f68d8d93          	addi	s11,s11,-152 # e88c9960 <__PRETTY_FUNCTION__.14166+0x270>
	inCnx->delegate.httpProtocol = httpProtocol;
    e8866a00:	03bcb423          	sd	s11,40(s9)
	if( ( ( strnicmpx( methodPtr, methodLen, "OPTIONS" ) == 0 ) ||
    e8866a04:	00062617          	auipc	a2,0x62
    e8866a08:	46c60613          	addi	a2,a2,1132 # e88c8e70 <__PRETTY_FUNCTION__.13159+0x180>
    e8866a0c:	85d6                	mv	a1,s5
    e8866a0e:	855a                	mv	a0,s6
    e8866a10:	f4df80ef          	jal	ra,e885f95c <strnicmpx>
    e8866a14:	01048a13          	addi	s4,s1,16
    e8866a18:	e115                	bnez	a0,e8866a3c <_HandleHTTPConnectionMessage+0xa2>
		!log_category_enabled( aprs_http_ucat(), kLogLevelChatty ) )
    e8866a1a:	0006e517          	auipc	a0,0x6e
    e8866a1e:	7e650513          	addi	a0,a0,2022 # e88d5200 <gLogCategory_AirPlayReceiverServerHTTP>
    e8866a22:	411c                	lw	a5,0(a0)
		( ( strnicmpx( methodPtr, methodLen, "POST" ) == 0 ) && ( strnicmp_suffix( pathPtr, pathLen, "/feedback" ) == 0 ) ) ) &&
    e8866a24:	4729                	li	a4,10
    e8866a26:	00f74963          	blt	a4,a5,e8866a38 <_HandleHTTPConnectionMessage+0x9e>
		!log_category_enabled( aprs_http_ucat(), kLogLevelChatty ) )
    e8866a2a:	577d                	li	a4,-1
    e8866a2c:	02e79263          	bne	a5,a4,e8866a50 <_HandleHTTPConnectionMessage+0xb6>
    e8866a30:	45a9                	li	a1,10
    e8866a32:	e40ed0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8866a36:	ed09                	bnez	a0,e8866a50 <_HandleHTTPConnectionMessage+0xb6>
		logHTTP = false;
    e8866a38:	e802                	sd	zero,16(sp)
    e8866a3a:	a81d                	j	e8866a70 <_HandleHTTPConnectionMessage+0xd6>
		( ( strnicmpx( methodPtr, methodLen, "POST" ) == 0 ) && ( strnicmp_suffix( pathPtr, pathLen, "/feedback" ) == 0 ) ) ) &&
    e8866a3c:	0005b617          	auipc	a2,0x5b
    e8866a40:	86c60613          	addi	a2,a2,-1940 # e88c12a8 <kHTTPServerClass+0xc8>
    e8866a44:	85d6                	mv	a1,s5
    e8866a46:	855a                	mv	a0,s6
    e8866a48:	f15f80ef          	jal	ra,e885f95c <strnicmpx>
	if( ( ( strnicmpx( methodPtr, methodLen, "OPTIONS" ) == 0 ) ||
    e8866a4c:	10050163          	beqz	a0,e8866b4e <_HandleHTTPConnectionMessage+0x1b4>
	if( logHTTP ) LogHTTP( aprs_http_ucat(), aprs_http_ucat(), inRequest->header.buf, inRequest->header.len,
    e8866a50:	5204b783          	ld	a5,1312(s1)
    e8866a54:	5184b703          	ld	a4,1304(s1)
    e8866a58:	4104b683          	ld	a3,1040(s1)
    e8866a5c:	0006e597          	auipc	a1,0x6e
    e8866a60:	7a458593          	addi	a1,a1,1956 # e88d5200 <gLogCategory_AirPlayReceiverServerHTTP>
    e8866a64:	8652                	mv	a2,s4
    e8866a66:	852e                	mv	a0,a1
    e8866a68:	d9beb0ef          	jal	ra,e8852802 <LogHTTP>
    e8866a6c:	4785                	li	a5,1
    e8866a6e:	e83e                	sd	a5,16(sp)
	if( cnx->session ) ++cnx->session->source.activityCount;
    e8866a70:	681c                	ld	a5,16(s0)
    e8866a72:	c791                	beqz	a5,e8866a7e <_HandleHTTPConnectionMessage+0xe4>
    e8866a74:	2607a703          	lw	a4,608(a5) # 1260 <memcmp-0xe87feda0>
    e8866a78:	2705                	addiw	a4,a4,1
    e8866a7a:	26e7a023          	sw	a4,608(a5)
	GetHeaderValue( inRequest, kHTTPHeader_CSeq, &cSeqPtr, &cSeqLen );
    e8866a7e:	4104b583          	ld	a1,1040(s1)
    e8866a82:	103c                	addi	a5,sp,40
    e8866a84:	4881                	li	a7,0
    e8866a86:	03010813          	addi	a6,sp,48
    e8866a8a:	4701                	li	a4,0
    e8866a8c:	4681                	li	a3,0
    e8866a8e:	00062617          	auipc	a2,0x62
    e8866a92:	3fa60613          	addi	a2,a2,1018 # e88c8e88 <__PRETTY_FUNCTION__.13159+0x198>
    e8866a96:	8552                	mv	a0,s4
    e8866a98:	d44eb0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
	HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_DeviceID, "%llx", &cnx->clientDeviceID );
    e8866a9c:	4104b583          	ld	a1,1040(s1)
    e8866aa0:	02040713          	addi	a4,s0,32
    e8866aa4:	00057697          	auipc	a3,0x57
    e8866aa8:	60468693          	addi	a3,a3,1540 # e88be0a8 <__PRETTY_FUNCTION__.10585+0x2e0>
    e8866aac:	00062617          	auipc	a2,0x62
    e8866ab0:	3e460613          	addi	a2,a2,996 # e88c8e90 <__PRETTY_FUNCTION__.13159+0x1a0>
    e8866ab4:	8552                	mv	a0,s4
    e8866ab6:	9bbeb0ef          	jal	ra,e8852470 <HTTPScanFHeaderValue>
	if( cnx->clientDeviceID == 0 ) cnx->clientDeviceID = SockAddrToDeviceID( &inCnx->peerAddr );
    e8866aba:	701c                	ld	a5,32(s0)
    e8866abc:	e791                	bnez	a5,e8866ac8 <_HandleHTTPConnectionMessage+0x12e>
    e8866abe:	0c0c8513          	addi	a0,s9,192
    e8866ac2:	904f00ef          	jal	ra,e8856bc6 <SockAddrToDeviceID>
    e8866ac6:	f008                	sd	a0,32(s0)
	if( *cnx->clientName == '\0' )
    e8866ac8:	02e44783          	lbu	a5,46(s0)
    e8866acc:	ef85                	bnez	a5,e8866b04 <_HandleHTTPConnectionMessage+0x16a>
		GetHeaderValue( inRequest, kAirPlayHTTPHeader_ClientName, &namePtr, &nameLen );
    e8866ace:	4104b583          	ld	a1,1040(s1)
    e8866ad2:	4881                	li	a7,0
    e8866ad4:	05010813          	addi	a6,sp,80
    e8866ad8:	00bc                	addi	a5,sp,72
    e8866ada:	4701                	li	a4,0
    e8866adc:	4681                	li	a3,0
    e8866ade:	00062617          	auipc	a2,0x62
    e8866ae2:	3ca60613          	addi	a2,a2,970 # e88c8ea8 <__PRETTY_FUNCTION__.13159+0x1b8>
    e8866ae6:	8552                	mv	a0,s4
		const char *		namePtr	= NULL;
    e8866ae8:	e482                	sd	zero,72(sp)
		size_t				nameLen	= 0;
    e8866aea:	e882                	sd	zero,80(sp)
		GetHeaderValue( inRequest, kAirPlayHTTPHeader_ClientName, &namePtr, &nameLen );
    e8866aec:	cf0eb0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
		if( nameLen > 0 ) TruncateUTF8( namePtr, nameLen, cnx->clientName, sizeof( cnx->clientName ), true );
    e8866af0:	65c6                	ld	a1,80(sp)
    e8866af2:	c989                	beqz	a1,e8866b04 <_HandleHTTPConnectionMessage+0x16a>
    e8866af4:	6526                	ld	a0,72(sp)
    e8866af6:	4705                	li	a4,1
    e8866af8:	08000693          	li	a3,128
    e8866afc:	02e40613          	addi	a2,s0,46
    e8866b00:	cbef90ef          	jal	ra,e885ffbe <TruncateUTF8>
	if( strnicmp_suffix( pathPtr, pathLen, "/logs" ) == 0 )
    e8866b04:	00062617          	auipc	a2,0x62
    e8866b08:	3bc60613          	addi	a2,a2,956 # e88c8ec0 <__PRETTY_FUNCTION__.13159+0x1d0>
    e8866b0c:	85ca                	mv	a1,s2
    e8866b0e:	854e                	mv	a0,s3
    e8866b10:	eabf80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e8866b14:	010c0b93          	addi	s7,s8,16
    e8866b18:	24051e63          	bnez	a0,e8866d74 <_HandleHTTPConnectionMessage+0x3da>
	err = HTTPMessageGetOrCopyFormVariable( inRequest, "id", &idValue, &idValueLen, NULL );
    e8866b1c:	4701                	li	a4,0
    e8866b1e:	0094                	addi	a3,sp,64
    e8866b20:	1830                	addi	a2,sp,56
    e8866b22:	00057597          	auipc	a1,0x57
    e8866b26:	5ce58593          	addi	a1,a1,1486 # e88be0f0 <__PRETTY_FUNCTION__.10585+0x328>
    e8866b2a:	8526                	mv	a0,s1
    e8866b2c:	c3cea0ef          	jal	ra,e8850f68 <HTTPMessageGetOrCopyFormVariable>
	if( err == kNoErr )
    e8866b30:	e13d                	bnez	a0,e8866b96 <_HandleHTTPConnectionMessage+0x1fc>
		matchCount = SNScanF( idValue, idValueLen, "%u", &requestID );
    e8866b32:	6586                	ld	a1,64(sp)
    e8866b34:	7562                	ld	a0,56(sp)
    e8866b36:	0894                	addi	a3,sp,80
    e8866b38:	0003e617          	auipc	a2,0x3e
    e8866b3c:	41860613          	addi	a2,a2,1048 # e88a4f50 <end.8789+0x18a8>
    e8866b40:	902fa0ef          	jal	ra,e8860c42 <SNScanF>
		require_action( matchCount > 0, exit, status = kHTTPStatus_BadRequest );
    e8866b44:	02a04063          	bgtz	a0,e8866b64 <_HandleHTTPConnectionMessage+0x1ca>
		status = kHTTPStatus_BadRequest;
    e8866b48:	19000913          	li	s2,400
    e8866b4c:	aaf9                	j	e8866d2a <_HandleHTTPConnectionMessage+0x390>
		( ( strnicmpx( methodPtr, methodLen, "POST" ) == 0 ) && ( strnicmp_suffix( pathPtr, pathLen, "/feedback" ) == 0 ) ) ) &&
    e8866b4e:	00062617          	auipc	a2,0x62
    e8866b52:	32a60613          	addi	a2,a2,810 # e88c8e78 <__PRETTY_FUNCTION__.13159+0x188>
    e8866b56:	85ca                	mv	a1,s2
    e8866b58:	854e                	mv	a0,s3
    e8866b5a:	e61f80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e8866b5e:	ea050ee3          	beqz	a0,e8866a1a <_HandleHTTPConnectionMessage+0x80>
    e8866b62:	b5fd                	j	e8866a50 <_HandleHTTPConnectionMessage+0xb6>
		require_action( requestID == inCnx->logs->requestID, exit, status = kHTTPStatus_NotFound );
    e8866b64:	687c                	ld	a5,208(s0)
    e8866b66:	4f98                	lw	a4,24(a5)
    e8866b68:	47c6                	lw	a5,80(sp)
    e8866b6a:	00f70563          	beq	a4,a5,e8866b74 <_HandleHTTPConnectionMessage+0x1da>
		else { dlogassert( "Bad POST: '%.*s'", (int) pathLen, pathPtr ); status = kHTTPStatus_NotFound; }
    e8866b6e:	19400913          	li	s2,404
    e8866b72:	aa65                	j	e8866d2a <_HandleHTTPConnectionMessage+0x390>
		status = _requestProcessLogsRetrieve( inCnx );
    e8866b74:	8522                	mv	a0,s0
    e8866b76:	d6efd0ef          	jal	ra,e88640e4 <_requestProcessLogsRetrieve>
    e8866b7a:	892a                	mv	s2,a0
		ForgetCF( &inCnx->logs );
    e8866b7c:	6868                	ld	a0,208(s0)
    e8866b7e:	c509                	beqz	a0,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e8866b80:	dcae00ef          	jal	ra,e884714a <CFRelease>
    e8866b84:	0c043823          	sd	zero,208(s0)
	if( status != kHTTPStatus_OK )
    e8866b88:	0009079b          	sext.w	a5,s2
    e8866b8c:	0c800713          	li	a4,200
    e8866b90:	18e79d63          	bne	a5,a4,e8866d2a <_HandleHTTPConnectionMessage+0x390>
    e8866b94:	aa2d                	j	e8866cce <_HandleHTTPConnectionMessage+0x334>
	require_action_quiet( !inCnx->logs || !inCnx->logs->pending, exit, status = kHTTPStatus_TooManyRequests );
    e8866b96:	6868                	ld	a0,208(s0)
    e8866b98:	c909                	beqz	a0,e8866baa <_HandleHTTPConnectionMessage+0x210>
    e8866b9a:	01054783          	lbu	a5,16(a0)
    e8866b9e:	18079463          	bnez	a5,e8866d26 <_HandleHTTPConnectionMessage+0x38c>
	ForgetCF( &inCnx->logs );
    e8866ba2:	da8e00ef          	jal	ra,e884714a <CFRelease>
    e8866ba6:	0c043823          	sd	zero,208(s0)
	dispatch_once_f( &gAirPlayReceiverLogsInitOnce, NULL, _GetTypeIDLogs );
    e8866baa:	0007d517          	auipc	a0,0x7d
    e8866bae:	1da50513          	addi	a0,a0,474 # e88e3d84 <gAirPlayReceiverLogsInitOnce>
    e8866bb2:	4118                	lw	a4,0(a0)
    e8866bb4:	4789                	li	a5,2
	err = AirPlayReceiverLogsCreate( inCnx->server, &inCnx->logs );
    e8866bb6:	00043983          	ld	s3,0(s0)
	dispatch_once_f( &gAirPlayReceiverLogsInitOnce, NULL, _GetTypeIDLogs );
    e8866bba:	00f70963          	beq	a4,a5,e8866bcc <_HandleHTTPConnectionMessage+0x232>
    e8866bbe:	ffffd617          	auipc	a2,0xffffd
    e8866bc2:	41260613          	addi	a2,a2,1042 # e8863fd0 <_GetTypeIDLogs>
    e8866bc6:	4581                	li	a1,0
    e8866bc8:	aaae80ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
	me = (AirPlayReceiverLogsRef) _CFRuntimeCreateInstance( NULL, AirPlayReceiverLogsGetTypeID(), (CFIndex) extraLen, NULL );
    e8866bcc:	0007d797          	auipc	a5,0x7d
    e8866bd0:	1bc78793          	addi	a5,a5,444 # e88e3d88 <gAirPlayReceiverLogsTypeID>
    e8866bd4:	438c                	lw	a1,0(a5)
    e8866bd6:	4681                	li	a3,0
    e8866bd8:	02000613          	li	a2,32
    e8866bdc:	4501                	li	a0,0
    e8866bde:	b97e00ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
    e8866be2:	892a                	mv	s2,a0
	require_action( me, exit, err = kNoMemoryErr );
    e8866be4:	2a050163          	beqz	a0,e8866e86 <_HandleHTTPConnectionMessage+0x4ec>
	memset( ( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );	
    e8866be8:	02000613          	li	a2,32
    e8866bec:	4581                	li	a1,0
    e8866bee:	0521                	addi	a0,a0,8
    e8866bf0:	7a4150ef          	jal	ra,e887c394 <eLIBs_memset>
	me->server = inServer;
    e8866bf4:	01393423          	sd	s3,8(s2)
	CFRetain( inServer );
    e8866bf8:	854e                	mv	a0,s3
    e8866bfa:	d4ce00ef          	jal	ra,e8847146 <CFRetain>
	*outLogs = me;
    e8866bfe:	0d243823          	sd	s2,208(s0)
	err = HTTPGetHeaderField( inRequest->header.buf, inRequest->header.len, "Prefer", NULL, NULL, &headerPtr, &headerLen, NULL );
    e8866c02:	4104b583          	ld	a1,1040(s1)
    e8866c06:	4881                	li	a7,0
    e8866c08:	05010813          	addi	a6,sp,80
    e8866c0c:	00bc                	addi	a5,sp,72
    e8866c0e:	4701                	li	a4,0
    e8866c10:	4681                	li	a3,0
    e8866c12:	00062617          	auipc	a2,0x62
    e8866c16:	2b660613          	addi	a2,a2,694 # e88c8ec8 <__PRETTY_FUNCTION__.13159+0x1d8>
    e8866c1a:	8552                	mv	a0,s4
    e8866c1c:	bc0eb0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
	replyAsync = ( ( err == kNoErr ) && ( NULL != strnstr( headerPtr, "respond-async", headerLen ) ) );
    e8866c20:	cd11                	beqz	a0,e8866c3c <_HandleHTTPConnectionMessage+0x2a2>
		CFRetain( inCnx->logs ); // Will be released in _createLogsDataBuffer
    e8866c22:	6868                	ld	a0,208(s0)
    e8866c24:	d22e00ef          	jal	ra,e8847146 <CFRetain>
		_createLogsDataBuffer( inCnx->logs );
    e8866c28:	6868                	ld	a0,208(s0)
    e8866c2a:	c5fff0ef          	jal	ra,e8866888 <_createLogsDataBuffer>
		require_action( inCnx->logs->dataBuffer, exit, status = inCnx->logs->status );
    e8866c2e:	687c                	ld	a5,208(s0)
    e8866c30:	7398                	ld	a4,32(a5)
    e8866c32:	0e071563          	bnez	a4,e8866d1c <_HandleHTTPConnectionMessage+0x382>
    e8866c36:	0147d903          	lhu	s2,20(a5)
    e8866c3a:	b7b9                	j	e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
	replyAsync = ( ( err == kNoErr ) && ( NULL != strnstr( headerPtr, "respond-async", headerLen ) ) );
    e8866c3c:	6646                	ld	a2,80(sp)
    e8866c3e:	6526                	ld	a0,72(sp)
    e8866c40:	00062597          	auipc	a1,0x62
    e8866c44:	29058593          	addi	a1,a1,656 # e88c8ed0 <__PRETTY_FUNCTION__.13159+0x1e0>
    e8866c48:	dcbf80ef          	jal	ra,e885fa12 <strnstr>
	if( !replyAsync )
    e8866c4c:	d979                	beqz	a0,e8866c22 <_HandleHTTPConnectionMessage+0x288>
		RandomBytes( &inCnx->logs->requestID, sizeof( inCnx->logs->requestID ) );
    e8866c4e:	6868                	ld	a0,208(s0)
    e8866c50:	4591                	li	a1,4
    e8866c52:	0561                	addi	a0,a0,24
    e8866c54:	c50f60ef          	jal	ra,e885d0a4 <RandomBytes>
		if( inCnx->logs->requestID == 0 ) ++inCnx->logs->requestID; // Make sure it isn't zero
    e8866c58:	687c                	ld	a5,208(s0)
    e8866c5a:	4f98                	lw	a4,24(a5)
    e8866c5c:	e319                	bnez	a4,e8866c62 <_HandleHTTPConnectionMessage+0x2c8>
    e8866c5e:	4705                	li	a4,1
    e8866c60:	cf98                	sw	a4,24(a5)
		CFRetain( inCnx->logs ); // Will be released in _createLogsDataBuffer
    e8866c62:	6868                	ld	a0,208(s0)
    e8866c64:	ce2e00ef          	jal	ra,e8847146 <CFRetain>
		dispatch_async_f( dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), inCnx->logs, _createLogsDataBuffer );
    e8866c68:	4581                	li	a1,0
    e8866c6a:	4501                	li	a0,0
    e8866c6c:	8f3e80ef          	jal	ra,e884f55e <dispatch_get_global_queue>
    e8866c70:	686c                	ld	a1,208(s0)
    e8866c72:	00000617          	auipc	a2,0x0
    e8866c76:	c1660613          	addi	a2,a2,-1002 # e8866888 <_createLogsDataBuffer>
    e8866c7a:	fa7e70ef          	jal	ra,e884ec20 <dispatch_async_f>
		response = inCnx->httpCnx->responseMsg;
    e8866c7e:	641c                	ld	a5,8(s0)
		err = HTTPHeader_InitResponse( &response->header, inCnx->httpCnx->delegate.httpProtocol, kHTTPStatus_Accepted, NULL );
    e8866c80:	4681                	li	a3,0
    e8866c82:	0ca00613          	li	a2,202
		response = inCnx->httpCnx->responseMsg;
    e8866c86:	0e87b903          	ld	s2,232(a5)
		err = HTTPHeader_InitResponse( &response->header, inCnx->httpCnx->delegate.httpProtocol, kHTTPStatus_Accepted, NULL );
    e8866c8a:	778c                	ld	a1,40(a5)
    e8866c8c:	01090493          	addi	s1,s2,16
    e8866c90:	8526                	mv	a0,s1
    e8866c92:	960eb0ef          	jal	ra,e8851df2 <HTTPHeader_InitResponse>
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8866c96:	1e051863          	bnez	a0,e8866e86 <_HandleHTTPConnectionMessage+0x4ec>
		HTTPHeader_AddFieldF( &response->header, "Retry-After", "5" ); // Retry in 5 sec
    e8866c9a:	00063617          	auipc	a2,0x63
    e8866c9e:	ad660613          	addi	a2,a2,-1322 # e88c9770 <__PRETTY_FUNCTION__.14166+0x80>
    e8866ca2:	00063597          	auipc	a1,0x63
    e8866ca6:	ad658593          	addi	a1,a1,-1322 # e88c9778 <__PRETTY_FUNCTION__.14166+0x88>
    e8866caa:	8526                	mv	a0,s1
    e8866cac:	a6eeb0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
		HTTPHeader_AddFieldF( &response->header, "Location", "/Logs?id=%u", inCnx->logs->requestID );
    e8866cb0:	687c                	ld	a5,208(s0)
    e8866cb2:	00063617          	auipc	a2,0x63
    e8866cb6:	ad660613          	addi	a2,a2,-1322 # e88c9788 <__PRETTY_FUNCTION__.14166+0x98>
    e8866cba:	00063597          	auipc	a1,0x63
    e8866cbe:	ade58593          	addi	a1,a1,-1314 # e88c9798 <__PRETTY_FUNCTION__.14166+0xa8>
    e8866cc2:	4f94                	lw	a3,24(a5)
    e8866cc4:	8526                	mv	a0,s1
    e8866cc6:	a54eb0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
		response->bodyLen = 0;
    e8866cca:	52093023          	sd	zero,1312(s2)
	err = HTTPHeader_AddFieldF( &response->header, kHTTPHeader_Server, "AirTunes/%s", kAirPlaySourceVersionStr );
    e8866cce:	00065697          	auipc	a3,0x65
    e8866cd2:	4d268693          	addi	a3,a3,1234 # e88cc1a0 <__PRETTY_FUNCTION__.9875+0x2f0>
    e8866cd6:	00062617          	auipc	a2,0x62
    e8866cda:	4b260613          	addi	a2,a2,1202 # e88c9188 <__PRETTY_FUNCTION__.13159+0x498>
    e8866cde:	00062597          	auipc	a1,0x62
    e8866ce2:	4ba58593          	addi	a1,a1,1210 # e88c9198 <__PRETTY_FUNCTION__.13159+0x4a8>
    e8866ce6:	855e                	mv	a0,s7
    e8866ce8:	a32eb0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
	require_noerr( err, exit );
    e8866cec:	e52d                	bnez	a0,e8866d56 <_HandleHTTPConnectionMessage+0x3bc>
	if( cSeqPtr )
    e8866cee:	7722                	ld	a4,40(sp)
    e8866cf0:	380719e3          	bnez	a4,e8867882 <_HandleHTTPConnectionMessage+0xee8>
	if( logHTTP ) LogHTTP( aprs_http_ucat(), aprs_http_ucat(), response->header.buf, response->header.len, response->bodyPtr, response->bodyLen );
    e8866cf4:	67c2                	ld	a5,16(sp)
    e8866cf6:	cf99                	beqz	a5,e8866d14 <_HandleHTTPConnectionMessage+0x37a>
    e8866cf8:	520c3783          	ld	a5,1312(s8)
    e8866cfc:	518c3703          	ld	a4,1304(s8)
    e8866d00:	410c3683          	ld	a3,1040(s8)
    e8866d04:	0006e597          	auipc	a1,0x6e
    e8866d08:	4fc58593          	addi	a1,a1,1276 # e88d5200 <gLogCategory_AirPlayReceiverServerHTTP>
    e8866d0c:	865e                	mv	a2,s7
    e8866d0e:	852e                	mv	a0,a1
    e8866d10:	af3eb0ef          	jal	ra,e8852802 <LogHTTP>
	err = HTTPConnectionSendResponse( inCnx );
    e8866d14:	8566                	mv	a0,s9
    e8866d16:	fbdea0ef          	jal	ra,e8851cd2 <HTTPConnectionSendResponse>
exit:
    e8866d1a:	a835                	j	e8866d56 <_HandleHTTPConnectionMessage+0x3bc>
		status = _requestProcessLogsRetrieve( inCnx );
    e8866d1c:	8522                	mv	a0,s0
    e8866d1e:	bc6fd0ef          	jal	ra,e88640e4 <_requestProcessLogsRetrieve>
	else if( strnicmpx( methodPtr, methodLen, "RECORD" )			== 0 ) status = _requestProcessRecord( cnx, inRequest );
    e8866d22:	892a                	mv	s2,a0
    e8866d24:	b595                	j	e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
	require_action_quiet( !inCnx->logs || !inCnx->logs->pending, exit, status = kHTTPStatus_TooManyRequests );
    e8866d26:	1ad00913          	li	s2,429
		err = HTTPHeader_InitResponse( &response->header, httpProtocol, status, NULL );
    e8866d2a:	4681                	li	a3,0
    e8866d2c:	0009061b          	sext.w	a2,s2
    e8866d30:	85ee                	mv	a1,s11
    e8866d32:	855e                	mv	a0,s7
    e8866d34:	8beeb0ef          	jal	ra,e8851df2 <HTTPHeader_InitResponse>
		require_noerr( err, exit );
    e8866d38:	ed19                	bnez	a0,e8866d56 <_HandleHTTPConnectionMessage+0x3bc>
		response->bodyLen = 0;
    e8866d3a:	520c3023          	sd	zero,1312(s8)
		err = HTTPHeader_AddFieldF( &response->header, kHTTPHeader_ContentLength, "0" );
    e8866d3e:	00068617          	auipc	a2,0x68
    e8866d42:	48260613          	addi	a2,a2,1154 # e88cf1c0 <err_to_errno_table+0xe8>
    e8866d46:	0005a597          	auipc	a1,0x5a
    e8866d4a:	14a58593          	addi	a1,a1,330 # e88c0e90 <kHTTPClientClass+0x78>
    e8866d4e:	855e                	mv	a0,s7
    e8866d50:	9caeb0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
		require_noerr( err, exit );
    e8866d54:	dd2d                	beqz	a0,e8866cce <_HandleHTTPConnectionMessage+0x334>
}
    e8866d56:	60ee                	ld	ra,216(sp)
    e8866d58:	644e                	ld	s0,208(sp)
    e8866d5a:	64ae                	ld	s1,200(sp)
    e8866d5c:	690e                	ld	s2,192(sp)
    e8866d5e:	79ea                	ld	s3,184(sp)
    e8866d60:	7a4a                	ld	s4,176(sp)
    e8866d62:	7aaa                	ld	s5,168(sp)
    e8866d64:	7b0a                	ld	s6,160(sp)
    e8866d66:	6bea                	ld	s7,152(sp)
    e8866d68:	6c4a                	ld	s8,144(sp)
    e8866d6a:	6caa                	ld	s9,136(sp)
    e8866d6c:	6d0a                	ld	s10,128(sp)
    e8866d6e:	7de6                	ld	s11,120(sp)
    e8866d70:	612d                	addi	sp,sp,224
    e8866d72:	8082                	ret
	err = HTTPHeader_InitResponse( &response->header, httpProtocol, kHTTPStatus_OK, NULL );
    e8866d74:	4681                	li	a3,0
    e8866d76:	0c800613          	li	a2,200
    e8866d7a:	85ee                	mv	a1,s11
    e8866d7c:	855e                	mv	a0,s7
    e8866d7e:	874eb0ef          	jal	ra,e8851df2 <HTTPHeader_InitResponse>
	require_noerr( err, exit );
    e8866d82:	f971                	bnez	a0,e8866d56 <_HandleHTTPConnectionMessage+0x3bc>
	response->bodyLen = 0;
    e8866d84:	520c3023          	sd	zero,1312(s8)
	if(      strnicmpx( methodPtr, methodLen, "OPTIONS" )			== 0 ) status = _requestProcessOptions( cnx );
    e8866d88:	00062617          	auipc	a2,0x62
    e8866d8c:	0e860613          	addi	a2,a2,232 # e88c8e70 <__PRETTY_FUNCTION__.13159+0x180>
    e8866d90:	85d6                	mv	a1,s5
    e8866d92:	855a                	mv	a0,s6
    e8866d94:	bc9f80ef          	jal	ra,e885f95c <strnicmpx>
    e8866d98:	ed19                	bnez	a0,e8866db6 <_HandleHTTPConnectionMessage+0x41c>
	HTTPMessageRef response = inCnx->httpCnx->responseMsg;
    e8866d9a:	641c                	ld	a5,8(s0)
	HTTPHeader_AddFieldF( &response->header, kHTTPHeader_Public, "ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, POST, GET, PUT" );
    e8866d9c:	00062617          	auipc	a2,0x62
    e8866da0:	14460613          	addi	a2,a2,324 # e88c8ee0 <__PRETTY_FUNCTION__.13159+0x1f0>
    e8866da4:	00062597          	auipc	a1,0x62
    e8866da8:	18c58593          	addi	a1,a1,396 # e88c8f30 <__PRETTY_FUNCTION__.13159+0x240>
    e8866dac:	77e8                	ld	a0,232(a5)
    e8866dae:	0541                	addi	a0,a0,16
    e8866db0:	96aeb0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
	if( status != kHTTPStatus_OK )
    e8866db4:	bf29                	j	e8866cce <_HandleHTTPConnectionMessage+0x334>
	else if( strnicmpx( methodPtr, methodLen, "FLUSH" )				== 0 ) status = _requestProcessFlush( cnx, inRequest );
    e8866db6:	00062617          	auipc	a2,0x62
    e8866dba:	18260613          	addi	a2,a2,386 # e88c8f38 <__PRETTY_FUNCTION__.13159+0x248>
    e8866dbe:	85d6                	mv	a1,s5
    e8866dc0:	855a                	mv	a0,s6
    e8866dc2:	b9bf80ef          	jal	ra,e885f95c <strnicmpx>
    e8866dc6:	e179                	bnez	a0,e8866e8c <_HandleHTTPConnectionMessage+0x4f2>
	HTTPMessageRef			response	= inCnx->httpCnx->responseMsg;
    e8866dc8:	641c                	ld	a5,8(s0)
	aprs_ulog( kLogLevelInfo, "Flush\n" );
    e8866dca:	0006e517          	auipc	a0,0x6e
    e8866dce:	3d650513          	addi	a0,a0,982 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866dd2:	02800713          	li	a4,40
	HTTPMessageRef			response	= inCnx->httpCnx->responseMsg;
    e8866dd6:	0e87b903          	ld	s2,232(a5)
	aprs_ulog( kLogLevelInfo, "Flush\n" );
    e8866dda:	411c                	lw	a5,0(a0)
    e8866ddc:	02f74563          	blt	a4,a5,e8866e06 <_HandleHTTPConnectionMessage+0x46c>
    e8866de0:	577d                	li	a4,-1
    e8866de2:	04e78c63          	beq	a5,a4,e8866e3a <_HandleHTTPConnectionMessage+0x4a0>
    e8866de6:	00062697          	auipc	a3,0x62
    e8866dea:	15a68693          	addi	a3,a3,346 # e88c8f40 <__PRETTY_FUNCTION__.13159+0x250>
    e8866dee:	02800613          	li	a2,40
    e8866df2:	00062597          	auipc	a1,0x62
    e8866df6:	7be58593          	addi	a1,a1,1982 # e88c95b0 <__PRETTY_FUNCTION__.13932>
    e8866dfa:	0006e517          	auipc	a0,0x6e
    e8866dfe:	3a650513          	addi	a0,a0,934 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866e02:	e72ed0ef          	jal	ra,e8854474 <LogPrintF>
	if( !inCnx->didRecord )
    e8866e06:	0bf44783          	lbu	a5,191(s0)
    e8866e0a:	ef95                	bnez	a5,e8866e46 <_HandleHTTPConnectionMessage+0x4ac>
		dlogassert( "FLUSH not allowed when not playing" );
    e8866e0c:	6705                	lui	a4,0x1
    e8866e0e:	00062817          	auipc	a6,0x62
    e8866e12:	13a80813          	addi	a6,a6,314 # e88c8f48 <__PRETTY_FUNCTION__.13159+0x258>
    e8866e16:	00062797          	auipc	a5,0x62
    e8866e1a:	79a78793          	addi	a5,a5,1946 # e88c95b0 <__PRETTY_FUNCTION__.13932>
    e8866e1e:	a2470713          	addi	a4,a4,-1500 # a24 <memcmp-0xe87ff5dc>
    e8866e22:	00063697          	auipc	a3,0x63
    e8866e26:	9c668693          	addi	a3,a3,-1594 # e88c97e8 <__PRETTY_FUNCTION__.14166+0xf8>
    e8866e2a:	4601                	li	a2,0
    e8866e2c:	4581                	li	a1,0
    e8866e2e:	4501                	li	a0,0
    e8866e30:	d98e70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		status = kHTTPStatus_MethodNotValidInThisState;
    e8866e34:	1c700913          	li	s2,455
    e8866e38:	bdcd                	j	e8866d2a <_HandleHTTPConnectionMessage+0x390>
	aprs_ulog( kLogLevelInfo, "Flush\n" );
    e8866e3a:	02800593          	li	a1,40
    e8866e3e:	a34ed0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8866e42:	d171                	beqz	a0,e8866e06 <_HandleHTTPConnectionMessage+0x46c>
    e8866e44:	b74d                	j	e8866de6 <_HandleHTTPConnectionMessage+0x44c>
	err = HTTPParseRTPInfo( inRequest->header.buf, inRequest->header.len, &flushSeq, &flushTS );
    e8866e46:	4104b583          	ld	a1,1040(s1)
    e8866e4a:	00b4                	addi	a3,sp,72
    e8866e4c:	0090                	addi	a2,sp,64
    e8866e4e:	8552                	mv	a0,s4
    e8866e50:	d18eb0ef          	jal	ra,e8852368 <HTTPParseRTPInfo>
	require_noerr_action( err, exit, status = kHTTPStatus_BadRequest );
    e8866e54:	ce051ae3          	bnez	a0,e8866b48 <_HandleHTTPConnectionMessage+0x1ae>
	err = AirPlayReceiverSessionFlushAudio( inCnx->session, flushTS, flushSeq, &lastPlayedTS );
    e8866e58:	04015603          	lhu	a2,64(sp)
    e8866e5c:	45a6                	lw	a1,72(sp)
    e8866e5e:	6808                	ld	a0,16(s0)
    e8866e60:	0894                	addi	a3,sp,80
    e8866e62:	055060ef          	jal	ra,e886d6b6 <AirPlayReceiverSessionFlushAudio>
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8866e66:	e105                	bnez	a0,e8866e86 <_HandleHTTPConnectionMessage+0x4ec>
	err = HTTPHeader_AddFieldF( &response->header, kHTTPHeader_RTPInfo, "rtptime=%u", lastPlayedTS );
    e8866e68:	46c6                	lw	a3,80(sp)
    e8866e6a:	00062617          	auipc	a2,0x62
    e8866e6e:	10660613          	addi	a2,a2,262 # e88c8f70 <__PRETTY_FUNCTION__.13159+0x280>
    e8866e72:	0005a597          	auipc	a1,0x5a
    e8866e76:	46e58593          	addi	a1,a1,1134 # e88c12e0 <kHTTPServerClass+0x100>
    e8866e7a:	01090513          	addi	a0,s2,16
    e8866e7e:	89ceb0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8866e82:	e40506e3          	beqz	a0,e8866cce <_HandleHTTPConnectionMessage+0x334>
    e8866e86:	1f400913          	li	s2,500
    e8866e8a:	b545                	j	e8866d2a <_HandleHTTPConnectionMessage+0x390>
	else if( strnicmpx( methodPtr, methodLen, "RECORD" )			== 0 ) status = _requestProcessRecord( cnx, inRequest );
    e8866e8c:	00062617          	auipc	a2,0x62
    e8866e90:	0f460613          	addi	a2,a2,244 # e88c8f80 <__PRETTY_FUNCTION__.13159+0x290>
    e8866e94:	85d6                	mv	a1,s5
    e8866e96:	855a                	mv	a0,s6
    e8866e98:	ac5f80ef          	jal	ra,e885f95c <strnicmpx>
    e8866e9c:	e511                	bnez	a0,e8866ea8 <_HandleHTTPConnectionMessage+0x50e>
    e8866e9e:	85a6                	mv	a1,s1
    e8866ea0:	8522                	mv	a0,s0
    e8866ea2:	b52fd0ef          	jal	ra,e88641f4 <_requestProcessRecord>
    e8866ea6:	bdb5                	j	e8866d22 <_HandleHTTPConnectionMessage+0x388>
	else if( strnicmpx( methodPtr, methodLen, "SETUP" )				== 0 ) status = _requestProcessSetup( cnx, inRequest );
    e8866ea8:	00062617          	auipc	a2,0x62
    e8866eac:	0e060613          	addi	a2,a2,224 # e88c8f88 <__PRETTY_FUNCTION__.13159+0x298>
    e8866eb0:	85d6                	mv	a1,s5
    e8866eb2:	855a                	mv	a0,s6
    e8866eb4:	aa9f80ef          	jal	ra,e885f95c <strnicmpx>
    e8866eb8:	e159                	bnez	a0,e8866f3e <_HandleHTTPConnectionMessage+0x5a4>
	GetHeaderValue( inRequest, kHTTPHeader_ContentType, &ptr, &len );
    e8866eba:	4104b583          	ld	a1,1040(s1)
    e8866ebe:	0005a617          	auipc	a2,0x5a
    e8866ec2:	fe260613          	addi	a2,a2,-30 # e88c0ea0 <kHTTPClientClass+0x88>
    e8866ec6:	4881                	li	a7,0
    e8866ec8:	05010813          	addi	a6,sp,80
    e8866ecc:	00bc                	addi	a5,sp,72
    e8866ece:	4701                	li	a4,0
    e8866ed0:	4681                	li	a3,0
    e8866ed2:	8552                	mv	a0,s4
	ptr = NULL;
    e8866ed4:	e482                	sd	zero,72(sp)
	len = 0;
    e8866ed6:	e882                	sd	zero,80(sp)
	GetHeaderValue( inRequest, kHTTPHeader_ContentType, &ptr, &len );
    e8866ed8:	904eb0ef          	jal	ra,e8851fdc <HTTPGetHeaderField>
	if( MIMETypeIsPlist( ptr, len ) )
    e8866edc:	65c6                	ld	a1,80(sp)
    e8866ede:	6526                	ld	a0,72(sp)
    e8866ee0:	00063617          	auipc	a2,0x63
    e8866ee4:	a9860613          	addi	a2,a2,-1384 # e88c9978 <__PRETTY_FUNCTION__.14166+0x288>
    e8866ee8:	a75f80ef          	jal	ra,e885f95c <strnicmpx>
    e8866eec:	e511                	bnez	a0,e8866ef8 <_HandleHTTPConnectionMessage+0x55e>
		status = _requestProcessSetupPlist( inCnx, inRequest );
    e8866eee:	85a6                	mv	a1,s1
    e8866ef0:	8522                	mv	a0,s0
    e8866ef2:	c17fd0ef          	jal	ra,e8864b08 <_requestProcessSetupPlist>
    e8866ef6:	b535                	j	e8866d22 <_HandleHTTPConnectionMessage+0x388>
	if( MIMETypeIsPlist( ptr, len ) )
    e8866ef8:	65c6                	ld	a1,80(sp)
    e8866efa:	6526                	ld	a0,72(sp)
    e8866efc:	00062617          	auipc	a2,0x62
    e8866f00:	09460613          	addi	a2,a2,148 # e88c8f90 <__PRETTY_FUNCTION__.13159+0x2a0>
    e8866f04:	a59f80ef          	jal	ra,e885f95c <strnicmpx>
    e8866f08:	d17d                	beqz	a0,e8866eee <_HandleHTTPConnectionMessage+0x554>
		dlogassert( "Bad setup URL '%.*s'", (int) inRequest->header.urlLen, inRequest->header.urlPtr );
    e8866f0a:	4404b783          	ld	a5,1088(s1)
    e8866f0e:	6705                	lui	a4,0x1
    e8866f10:	00062817          	auipc	a6,0x62
    e8866f14:	09880813          	addi	a6,a6,152 # e88c8fa8 <__PRETTY_FUNCTION__.13159+0x2b8>
    e8866f18:	e03e                	sd	a5,0(sp)
    e8866f1a:	4484a883          	lw	a7,1096(s1)
    e8866f1e:	00062797          	auipc	a5,0x62
    e8866f22:	76a78793          	addi	a5,a5,1898 # e88c9688 <__PRETTY_FUNCTION__.14104>
    e8866f26:	c6970713          	addi	a4,a4,-919 # c69 <memcmp-0xe87ff397>
    e8866f2a:	00063697          	auipc	a3,0x63
    e8866f2e:	8be68693          	addi	a3,a3,-1858 # e88c97e8 <__PRETTY_FUNCTION__.14166+0xf8>
    e8866f32:	4601                	li	a2,0
    e8866f34:	4581                	li	a1,0
    e8866f36:	4501                	li	a0,0
    e8866f38:	c90e70ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8866f3c:	b131                	j	e8866b48 <_HandleHTTPConnectionMessage+0x1ae>
	else if( strnicmpx( methodPtr, methodLen, "TEARDOWN" )			== 0 ) status = _requestProcessTearDown( cnx, inRequest );
    e8866f3e:	00062617          	auipc	a2,0x62
    e8866f42:	08260613          	addi	a2,a2,130 # e88c8fc0 <__PRETTY_FUNCTION__.13159+0x2d0>
    e8866f46:	85d6                	mv	a1,s5
    e8866f48:	855a                	mv	a0,s6
    e8866f4a:	a13f80ef          	jal	ra,e885f95c <strnicmpx>
    e8866f4e:	8d2a                	mv	s10,a0
    e8866f50:	10051563          	bnez	a0,e886705a <_HandleHTTPConnectionMessage+0x6c0>
	Boolean					done = true;
    e8866f54:	4785                	li	a5,1
	if( inRequest->bodyOffset > 0) {
    e8866f56:	5304b583          	ld	a1,1328(s1)
	Boolean					done = true;
    e8866f5a:	04f10823          	sb	a5,80(sp)
	if( inRequest->bodyOffset > 0) {
    e8866f5e:	e5ad                	bnez	a1,e8866fc8 <_HandleHTTPConnectionMessage+0x62e>
			requestDict = NULL;
    e8866f60:	4481                	li	s1,0
	aprs_ulog( kLogLevelNotice, "Teardown %?@\n", log_category_enabled( aprs_ucat(), kLogLevelVerbose ), requestDict );
    e8866f62:	0006e917          	auipc	s2,0x6e
    e8866f66:	23e90913          	addi	s2,s2,574 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866f6a:	00092783          	lw	a5,0(s2)
    e8866f6e:	03200713          	li	a4,50
    e8866f72:	08f74563          	blt	a4,a5,e8866ffc <_HandleHTTPConnectionMessage+0x662>
    e8866f76:	577d                	li	a4,-1
    e8866f78:	06e78c63          	beq	a5,a4,e8866ff0 <_HandleHTTPConnectionMessage+0x656>
    e8866f7c:	00092783          	lw	a5,0(s2)
    e8866f80:	4751                	li	a4,20
    e8866f82:	02f74063          	blt	a4,a5,e8866fa2 <_HandleHTTPConnectionMessage+0x608>
    e8866f86:	577d                	li	a4,-1
    e8866f88:	4d05                	li	s10,1
    e8866f8a:	00e79c63          	bne	a5,a4,e8866fa2 <_HandleHTTPConnectionMessage+0x608>
    e8866f8e:	45d1                	li	a1,20
    e8866f90:	0006e517          	auipc	a0,0x6e
    e8866f94:	21050513          	addi	a0,a0,528 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866f98:	8daed0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8866f9c:	2501                	sext.w	a0,a0
    e8866f9e:	00a03d33          	snez	s10,a0
    e8866fa2:	87a6                	mv	a5,s1
    e8866fa4:	876a                	mv	a4,s10
    e8866fa6:	00062697          	auipc	a3,0x62
    e8866faa:	02a68693          	addi	a3,a3,42 # e88c8fd0 <__PRETTY_FUNCTION__.13159+0x2e0>
    e8866fae:	03200613          	li	a2,50
    e8866fb2:	00062597          	auipc	a1,0x62
    e8866fb6:	70e58593          	addi	a1,a1,1806 # e88c96c0 <__PRETTY_FUNCTION__.14134>
    e8866fba:	0006e517          	auipc	a0,0x6e
    e8866fbe:	1e650513          	addi	a0,a0,486 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8866fc2:	cb2ed0ef          	jal	ra,e8854474 <LogPrintF>
    e8866fc6:	a81d                	j	e8866ffc <_HandleHTTPConnectionMessage+0x662>
		requestDict = (CFDictionaryRef)CFBinaryPlistV0CreateWithData( inRequest->bodyPtr, inRequest->bodyOffset, NULL );
    e8866fc8:	5184b503          	ld	a0,1304(s1)
    e8866fcc:	4601                	li	a2,0
    e8866fce:	e74e30ef          	jal	ra,e884a642 <CFBinaryPlistV0CreateWithData>
    e8866fd2:	84aa                	mv	s1,a0
		if( requestDict && ( CFGetTypeID( requestDict ) != CFDictionaryGetTypeID() ) ) {
    e8866fd4:	d551                	beqz	a0,e8866f60 <_HandleHTTPConnectionMessage+0x5c6>
    e8866fd6:	95ce00ef          	jal	ra,e8847132 <CFGetTypeID>
    e8866fda:	0005091b          	sext.w	s2,a0
    e8866fde:	bc4e00ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8866fe2:	2501                	sext.w	a0,a0
    e8866fe4:	f6a90fe3          	beq	s2,a0,e8866f62 <_HandleHTTPConnectionMessage+0x5c8>
			CFRelease( requestDict );
    e8866fe8:	8526                	mv	a0,s1
    e8866fea:	960e00ef          	jal	ra,e884714a <CFRelease>
    e8866fee:	bf8d                	j	e8866f60 <_HandleHTTPConnectionMessage+0x5c6>
	aprs_ulog( kLogLevelNotice, "Teardown %?@\n", log_category_enabled( aprs_ucat(), kLogLevelVerbose ), requestDict );
    e8866ff0:	03200593          	li	a1,50
    e8866ff4:	854a                	mv	a0,s2
    e8866ff6:	87ced0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8866ffa:	f149                	bnez	a0,e8866f7c <_HandleHTTPConnectionMessage+0x5e2>
	if( inCnx->session )
    e8866ffc:	6808                	ld	a0,16(s0)
    e8866ffe:	c511                	beqz	a0,e886700a <_HandleHTTPConnectionMessage+0x670>
		AirPlayReceiverSessionTearDown( inCnx->session, requestDict, kNoErr, &done );
    e8867000:	0894                	addi	a3,sp,80
    e8867002:	4601                	li	a2,0
    e8867004:	85a6                	mv	a1,s1
    e8867006:	34f050ef          	jal	ra,e886cb54 <AirPlayReceiverSessionTearDown>
	if( done )
    e886700a:	05014783          	lbu	a5,80(sp)
    e886700e:	c3a1                	beqz	a5,e886704e <_HandleHTTPConnectionMessage+0x6b4>
		_tearDownNetworkListener( inCnx );
    e8867010:	8522                	mv	a0,s0
    e8867012:	cd6fd0ef          	jal	ra,e88644e8 <_tearDownNetworkListener>
		ForgetCF( &inCnx->session );
    e8867016:	6808                	ld	a0,16(s0)
    e8867018:	c509                	beqz	a0,e8867022 <_HandleHTTPConnectionMessage+0x688>
    e886701a:	930e00ef          	jal	ra,e884714a <CFRelease>
    e886701e:	00043823          	sd	zero,16(s0)
		AirPlayReceiverServerSetBoolean( inCnx->server, CFSTR( kAirPlayProperty_Playing ), NULL, false );
    e8867022:	0006e797          	auipc	a5,0x6e
    e8867026:	ca678793          	addi	a5,a5,-858 # e88d4cc8 <kCFLBooleanFalse>
    e886702a:	0007b803          	ld	a6,0(a5)
    e886702e:	6008                	ld	a0,0(s0)
    e8867030:	4781                	li	a5,0
    e8867032:	00037717          	auipc	a4,0x37
    e8867036:	a5e70713          	addi	a4,a4,-1442 # e889da90 <icmp6_param_problem+0xa22>
    e886703a:	4685                	li	a3,1
    e886703c:	fffff617          	auipc	a2,0xfffff
    e8867040:	88c60613          	addi	a2,a2,-1908 # e88658c8 <AirPlayReceiverServerSetProperty>
    e8867044:	4581                	li	a1,0
    e8867046:	ff2e40ef          	jal	ra,e884b838 <CFObjectSetProperty>
		inCnx->didAnnounce = false;
    e886704a:	0a042e23          	sw	zero,188(s0)
	CFReleaseNullSafe( requestDict );
    e886704e:	c80480e3          	beqz	s1,e8866cce <_HandleHTTPConnectionMessage+0x334>
    e8867052:	8526                	mv	a0,s1
    e8867054:	8f6e00ef          	jal	ra,e884714a <CFRelease>
	if( status != kHTTPStatus_OK )
    e8867058:	b99d                	j	e8866cce <_HandleHTTPConnectionMessage+0x334>
	else if( strnicmpx( methodPtr, methodLen, "GET" )				== 0 )
    e886705a:	0005a617          	auipc	a2,0x5a
    e886705e:	27e60613          	addi	a2,a2,638 # e88c12d8 <kHTTPServerClass+0xf8>
    e8867062:	85d6                	mv	a1,s5
    e8867064:	855a                	mv	a0,s6
    e8867066:	8f7f80ef          	jal	ra,e885f95c <strnicmpx>
    e886706a:	e115                	bnez	a0,e886708e <_HandleHTTPConnectionMessage+0x6f4>
		else if( strnicmp_suffix( pathPtr, pathLen, "/info" )		== 0 ) status = _requestProcessInfo( cnx, inRequest );
    e886706c:	85ca                	mv	a1,s2
    e886706e:	00062617          	auipc	a2,0x62
    e8867072:	f7260613          	addi	a2,a2,-142 # e88c8fe0 <__PRETTY_FUNCTION__.13159+0x2f0>
    e8867076:	854e                	mv	a0,s3
    e8867078:	943f80ef          	jal	ra,e885f9ba <strnicmp_suffix>
		else { dlog( kLogLevelNotice, "### Unsupported GET: '%.*s'\n", (int) pathLen, pathPtr ); status = kHTTPStatus_NotFound; }
    e886707c:	19400913          	li	s2,404
		else if( strnicmp_suffix( pathPtr, pathLen, "/info" )		== 0 ) status = _requestProcessInfo( cnx, inRequest );
    e8867080:	ca0515e3          	bnez	a0,e8866d2a <_HandleHTTPConnectionMessage+0x390>
		else if( strnicmp_suffix( pathPtr, pathLen, "/info" )		== 0 ) status = _requestProcessInfo( cnx, inRequest );
    e8867084:	85a6                	mv	a1,s1
    e8867086:	8522                	mv	a0,s0
    e8867088:	a3aff0ef          	jal	ra,e88662c2 <_requestProcessInfo>
    e886708c:	b959                	j	e8866d22 <_HandleHTTPConnectionMessage+0x388>
	else if( strnicmpx( methodPtr, methodLen, "POST" )				== 0 )
    e886708e:	0005a617          	auipc	a2,0x5a
    e8867092:	21a60613          	addi	a2,a2,538 # e88c12a8 <kHTTPServerClass+0xc8>
    e8867096:	85d6                	mv	a1,s5
    e8867098:	855a                	mv	a0,s6
    e886709a:	8c3f80ef          	jal	ra,e885f95c <strnicmpx>
    e886709e:	7a051763          	bnez	a0,e886784c <_HandleHTTPConnectionMessage+0xeb2>
		else if( strnicmp_suffix( pathPtr, pathLen, "/auth-setup" )	== 0 ) status = _requestProcessAuthSetup( cnx, inRequest );
    e88670a2:	00062617          	auipc	a2,0x62
    e88670a6:	f4660613          	addi	a2,a2,-186 # e88c8fe8 <__PRETTY_FUNCTION__.13159+0x2f8>
    e88670aa:	85ca                	mv	a1,s2
    e88670ac:	854e                	mv	a0,s3
    e88670ae:	90df80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e88670b2:	e179                	bnez	a0,e8867178 <_HandleHTTPConnectionMessage+0x7de>
	HTTPMessageRef			response	= inCnx->httpCnx->responseMsg;
    e88670b4:	641c                	ld	a5,8(s0)
	aprs_ulog( kAirPlayPhaseLogLevel, "MFi\n" );
    e88670b6:	0006e517          	auipc	a0,0x6e
    e88670ba:	0ea50513          	addi	a0,a0,234 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88670be:	02800713          	li	a4,40
	HTTPMessageRef			response	= inCnx->httpCnx->responseMsg;
    e88670c2:	0e87b983          	ld	s3,232(a5)
	aprs_ulog( kAirPlayPhaseLogLevel, "MFi\n" );
    e88670c6:	411c                	lw	a5,0(a0)
    e88670c8:	02f74563          	blt	a4,a5,e88670f2 <_HandleHTTPConnectionMessage+0x758>
    e88670cc:	577d                	li	a4,-1
    e88670ce:	04e78c63          	beq	a5,a4,e8867126 <_HandleHTTPConnectionMessage+0x78c>
    e88670d2:	00062697          	auipc	a3,0x62
    e88670d6:	f2668693          	addi	a3,a3,-218 # e88c8ff8 <__PRETTY_FUNCTION__.13159+0x308>
    e88670da:	02800613          	li	a2,40
    e88670de:	00062597          	auipc	a1,0x62
    e88670e2:	48258593          	addi	a1,a1,1154 # e88c9560 <__PRETTY_FUNCTION__.13892>
    e88670e6:	0006e517          	auipc	a0,0x6e
    e88670ea:	0ba50513          	addi	a0,a0,186 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88670ee:	b86ed0ef          	jal	ra,e8854474 <LogPrintF>
	require_action( inRequest->bodyOffset > 0, exit, status = kHTTPStatus_BadRequest );
    e88670f2:	5304b783          	ld	a5,1328(s1)
	outputPtr = NULL;
    e88670f6:	e482                	sd	zero,72(sp)
	require_action( inRequest->bodyOffset > 0, exit, status = kHTTPStatus_BadRequest );
    e88670f8:	19000913          	li	s2,400
    e88670fc:	cbb1                	beqz	a5,e8867150 <_HandleHTTPConnectionMessage+0x7b6>
	if( inCnx->MFiSAPDone && inCnx->MFiSAP )
    e88670fe:	0e044783          	lbu	a5,224(s0)
    e8867102:	6c68                	ld	a0,216(s0)
    e8867104:	c79d                	beqz	a5,e8867132 <_HandleHTTPConnectionMessage+0x798>
    e8867106:	c519                	beqz	a0,e8867114 <_HandleHTTPConnectionMessage+0x77a>
		MFiSAP_Delete( inCnx->MFiSAP );
    e8867108:	e8aed0ef          	jal	ra,e8854792 <MFiSAP_Delete>
		inCnx->MFiSAP = NULL;
    e886710c:	0c043c23          	sd	zero,216(s0)
		inCnx->MFiSAPDone = false;
    e8867110:	0e040023          	sb	zero,224(s0)
		err = MFiSAP_Create( &inCnx->MFiSAP, kMFiSAPVersion1 );
    e8867114:	4585                	li	a1,1
    e8867116:	0d840513          	addi	a0,s0,216
    e886711a:	e2ced0ef          	jal	ra,e8854746 <MFiSAP_Create>
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e886711e:	c919                	beqz	a0,e8867134 <_HandleHTTPConnectionMessage+0x79a>
    e8867120:	1f400913          	li	s2,500
    e8867124:	a035                	j	e8867150 <_HandleHTTPConnectionMessage+0x7b6>
	aprs_ulog( kAirPlayPhaseLogLevel, "MFi\n" );
    e8867126:	02800593          	li	a1,40
    e886712a:	f49ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886712e:	d171                	beqz	a0,e88670f2 <_HandleHTTPConnectionMessage+0x758>
    e8867130:	b74d                	j	e88670d2 <_HandleHTTPConnectionMessage+0x738>
	if( !inCnx->MFiSAP )
    e8867132:	d16d                	beqz	a0,e8867114 <_HandleHTTPConnectionMessage+0x77a>
	err = MFiSAP_Exchange( inCnx->MFiSAP, inRequest->bodyPtr, inRequest->bodyOffset, &outputPtr, &outputLen, &inCnx->MFiSAPDone );
    e8867134:	5304b603          	ld	a2,1328(s1)
    e8867138:	5184b583          	ld	a1,1304(s1)
    e886713c:	6c68                	ld	a0,216(s0)
    e886713e:	0e040793          	addi	a5,s0,224
    e8867142:	0898                	addi	a4,sp,80
    e8867144:	00b4                	addi	a3,sp,72
    e8867146:	e92ed0ef          	jal	ra,e88547d8 <MFiSAP_Exchange>
	require_noerr_action( err, exit, status = kHTTPStatus_Forbidden );
    e886714a:	19300913          	li	s2,403
    e886714e:	c519                	beqz	a0,e886715c <_HandleHTTPConnectionMessage+0x7c2>
	if( outputPtr ) free( outputPtr );
    e8867150:	6526                	ld	a0,72(sp)
    e8867152:	a2050be3          	beqz	a0,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e8867156:	1aa150ef          	jal	ra,e887c300 <eLIBs_free>
	return( status );
    e886715a:	b43d                	j	e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
	err = HTTPMessageSetBodyPtr( response, kMIMEType_Binary, outputPtr, outputLen );
    e886715c:	66c6                	ld	a3,80(sp)
    e886715e:	6626                	ld	a2,72(sp)
    e8867160:	00062597          	auipc	a1,0x62
    e8867164:	ea058593          	addi	a1,a1,-352 # e88c9000 <__PRETTY_FUNCTION__.13159+0x310>
    e8867168:	854e                	mv	a0,s3
    e886716a:	c61e90ef          	jal	ra,e8850dca <HTTPMessageSetBodyPtr>
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e886716e:	f94d                	bnez	a0,e8867120 <_HandleHTTPConnectionMessage+0x786>
	outputPtr = NULL;
    e8867170:	e482                	sd	zero,72(sp)
	status = kHTTPStatus_OK;
    e8867172:	0c800913          	li	s2,200
    e8867176:	bfe9                	j	e8867150 <_HandleHTTPConnectionMessage+0x7b6>
		else if( strnicmp_suffix( pathPtr, pathLen, "/command" )	== 0 ) status = _requestProcessCommand( cnx, inRequest );
    e8867178:	00062617          	auipc	a2,0x62
    e886717c:	ea860613          	addi	a2,a2,-344 # e88c9020 <__PRETTY_FUNCTION__.13159+0x330>
    e8867180:	85ca                	mv	a1,s2
    e8867182:	854e                	mv	a0,s3
    e8867184:	837f80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e8867188:	14051063          	bnez	a0,e88672c8 <_HandleHTTPConnectionMessage+0x92e>
	if( inRequest->bodyOffset > 0 ) {
    e886718c:	5304b583          	ld	a1,1328(s1)
    e8867190:	c595                	beqz	a1,e88671bc <_HandleHTTPConnectionMessage+0x822>
		requestDict = (CFDictionaryRef)CFBinaryPlistV0CreateWithData( inRequest->bodyPtr, inRequest->bodyOffset, &err );
    e8867192:	5184b503          	ld	a0,1304(s1)
    e8867196:	00b0                	addi	a2,sp,72
    e8867198:	caae30ef          	jal	ra,e884a642 <CFBinaryPlistV0CreateWithData>
    e886719c:	89aa                	mv	s3,a0
		require_noerr_action( err, exit, status = kHTTPStatus_BadRequest );
    e886719e:	47a6                	lw	a5,72(sp)
    e88671a0:	eb91                	bnez	a5,e88671b4 <_HandleHTTPConnectionMessage+0x81a>
		require_action( CFGetTypeID( requestDict ) == CFDictionaryGetTypeID() , exit, status = kHTTPStatus_BadRequest );
    e88671a2:	f91df0ef          	jal	ra,e8847132 <CFGetTypeID>
    e88671a6:	0005091b          	sext.w	s2,a0
    e88671aa:	9f8e00ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e88671ae:	2501                	sext.w	a0,a0
    e88671b0:	00a90763          	beq	s2,a0,e88671be <_HandleHTTPConnectionMessage+0x824>
	CFStringRef				command = NULL;
    e88671b4:	4a01                	li	s4,0
		require_action( CFGetTypeID( requestDict ) == CFDictionaryGetTypeID() , exit, status = kHTTPStatus_BadRequest );
    e88671b6:	19000913          	li	s2,400
    e88671ba:	a035                	j	e88671e6 <_HandleHTTPConnectionMessage+0x84c>
	CFDictionaryRef			requestDict = NULL;
    e88671bc:	4981                	li	s3,0
	command = CFDictionaryGetCFString( requestDict, CFSTR( kAirPlayKey_Type ), NULL );
    e88671be:	ad6e00ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e88671c2:	0005061b          	sext.w	a2,a0
    e88671c6:	4681                	li	a3,0
    e88671c8:	00037597          	auipc	a1,0x37
    e88671cc:	da858593          	addi	a1,a1,-600 # e889df70 <icmp6_param_problem+0xf02>
    e88671d0:	854e                	mv	a0,s3
    e88671d2:	cd8e50ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e88671d6:	8a2a                	mv	s4,a0
	require_action( command, exit, err = kParamErr; status = kHTTPStatus_ParameterNotUnderstood );
    e88671d8:	ed39                	bnez	a0,e8867236 <_HandleHTTPConnectionMessage+0x89c>
    e88671da:	77f9                	lui	a5,0xffffe
    e88671dc:	5cf7879b          	addiw	a5,a5,1487
    e88671e0:	c4be                	sw	a5,72(sp)
    e88671e2:	1c300913          	li	s2,451
	if( err ) aprs_ulog( kLogLevelNotice, "### Command '%@' failed: %#m, %#m\n", command, status, err );
    e88671e6:	47a6                	lw	a5,72(sp)
    e88671e8:	c3a9                	beqz	a5,e886722a <_HandleHTTPConnectionMessage+0x890>
    e88671ea:	0006e517          	auipc	a0,0x6e
    e88671ee:	fb650513          	addi	a0,a0,-74 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88671f2:	411c                	lw	a5,0(a0)
    e88671f4:	03200713          	li	a4,50
    e88671f8:	02f74963          	blt	a4,a5,e886722a <_HandleHTTPConnectionMessage+0x890>
    e88671fc:	577d                	li	a4,-1
    e88671fe:	0ae78f63          	beq	a5,a4,e88672bc <_HandleHTTPConnectionMessage+0x922>
    e8867202:	4826                	lw	a6,72(sp)
    e8867204:	0009079b          	sext.w	a5,s2
    e8867208:	8752                	mv	a4,s4
    e886720a:	00062697          	auipc	a3,0x62
    e886720e:	e2668693          	addi	a3,a3,-474 # e88c9030 <__PRETTY_FUNCTION__.13159+0x340>
    e8867212:	03200613          	li	a2,50
    e8867216:	00062597          	auipc	a1,0x62
    e886721a:	36a58593          	addi	a1,a1,874 # e88c9580 <__PRETTY_FUNCTION__.13909>
    e886721e:	0006e517          	auipc	a0,0x6e
    e8867222:	f8250513          	addi	a0,a0,-126 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867226:	a4eed0ef          	jal	ra,e8854474 <LogPrintF>
	CFReleaseNullSafe( output );
    e886722a:	94098fe3          	beqz	s3,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e886722e:	854e                	mv	a0,s3
    e8867230:	f1bdf0ef          	jal	ra,e884714a <CFRelease>
	return( status );
    e8867234:	ba91                	j	e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
	params = CFDictionaryGetCFDictionary( requestDict, CFSTR( kAirPlayKey_Params ), NULL );
    e8867236:	96ce00ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e886723a:	0005061b          	sext.w	a2,a0
    e886723e:	4681                	li	a3,0
    e8867240:	00037597          	auipc	a1,0x37
    e8867244:	d4058593          	addi	a1,a1,-704 # e889df80 <icmp6_param_problem+0xf12>
    e8867248:	854e                	mv	a0,s3
    e886724a:	c60e50ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e886724e:	872a                	mv	a4,a0
	require_action( inCnx->session, exit, err = kNotPreparedErr; status = kHTTPStatus_SessionNotFound );
    e8867250:	6808                	ld	a0,16(s0)
    e8867252:	e901                	bnez	a0,e8867262 <_HandleHTTPConnectionMessage+0x8c8>
    e8867254:	77f9                	lui	a5,0xffffe
    e8867256:	5a77879b          	addiw	a5,a5,1447
    e886725a:	c4be                	sw	a5,72(sp)
    e886725c:	1c600913          	li	s2,454
    e8867260:	b759                	j	e88671e6 <_HandleHTTPConnectionMessage+0x84c>
	err = AirPlayReceiverSessionControl( inCnx->session, kCFObjectFlagDirect, command, NULL, params, &responseDict );
    e8867262:	089c                	addi	a5,sp,80
    e8867264:	4681                	li	a3,0
    e8867266:	8652                	mv	a2,s4
    e8867268:	4585                	li	a1,1
	responseDict = NULL;
    e886726a:	e882                	sd	zero,80(sp)
	err = AirPlayReceiverSessionControl( inCnx->session, kCFObjectFlagDirect, command, NULL, params, &responseDict );
    e886726c:	3c4070ef          	jal	ra,e886e630 <AirPlayReceiverSessionControl>
    e8867270:	c4aa                	sw	a0,72(sp)
	require_noerr_action_quiet( err, exit, status = kHTTPStatus_UnprocessableEntity );
    e8867272:	1a600913          	li	s2,422
    e8867276:	f925                	bnez	a0,e88671e6 <_HandleHTTPConnectionMessage+0x84c>
	if( !responseDict )
    e8867278:	67c6                	ld	a5,80(sp)
    e886727a:	e78d                	bnez	a5,e88672a4 <_HandleHTTPConnectionMessage+0x90a>
		responseDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886727c:	00057697          	auipc	a3,0x57
    e8867280:	54c68693          	addi	a3,a3,1356 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8867284:	00057617          	auipc	a2,0x57
    e8867288:	51460613          	addi	a2,a2,1300 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886728c:	4581                	li	a1,0
    e886728e:	918e00ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8867292:	e8aa                	sd	a0,80(sp)
		require_action( responseDict, exit, err = kNoMemoryErr; status = kHTTPStatus_InternalServerError );
    e8867294:	e901                	bnez	a0,e88672a4 <_HandleHTTPConnectionMessage+0x90a>
    e8867296:	77f9                	lui	a5,0xffffe
    e8867298:	5b87879b          	addiw	a5,a5,1464
    e886729c:	c4be                	sw	a5,72(sp)
    e886729e:	1f400913          	li	s2,500
    e88672a2:	b791                	j	e88671e6 <_HandleHTTPConnectionMessage+0x84c>
	status = _requestSendPlistResponse( inCnx->httpCnx, inRequest, responseDict, &err );
    e88672a4:	641c                	ld	a5,8(s0)
    e88672a6:	6646                	ld	a2,80(sp)
    e88672a8:	00b4                	addi	a3,sp,72
    e88672aa:	77e8                	ld	a0,232(a5)
    e88672ac:	85a6                	mv	a1,s1
    e88672ae:	e96fd0ef          	jal	ra,e8864944 <_requestSendPlistResponse.isra.9>
    e88672b2:	892a                	mv	s2,a0
	CFRelease( responseDict );
    e88672b4:	6546                	ld	a0,80(sp)
    e88672b6:	e95df0ef          	jal	ra,e884714a <CFRelease>
    e88672ba:	b735                	j	e88671e6 <_HandleHTTPConnectionMessage+0x84c>
	if( err ) aprs_ulog( kLogLevelNotice, "### Command '%@' failed: %#m, %#m\n", command, status, err );
    e88672bc:	03200593          	li	a1,50
    e88672c0:	db3ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88672c4:	d13d                	beqz	a0,e886722a <_HandleHTTPConnectionMessage+0x890>
    e88672c6:	bf35                	j	e8867202 <_HandleHTTPConnectionMessage+0x868>
		else if( strnicmp_suffix( pathPtr, pathLen, "/diag-info" )	== 0 ) status = kHTTPStatus_OK;
    e88672c8:	00062617          	auipc	a2,0x62
    e88672cc:	d9060613          	addi	a2,a2,-624 # e88c9058 <__PRETTY_FUNCTION__.13159+0x368>
    e88672d0:	85ca                	mv	a1,s2
    e88672d2:	854e                	mv	a0,s3
    e88672d4:	ee6f80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e88672d8:	9e050be3          	beqz	a0,e8866cce <_HandleHTTPConnectionMessage+0x334>
		else if( strnicmp_suffix( pathPtr, pathLen, "/feedback" )	== 0 ) status = _requestProcessFeedback( cnx, inRequest );
    e88672dc:	00062617          	auipc	a2,0x62
    e88672e0:	b9c60613          	addi	a2,a2,-1124 # e88c8e78 <__PRETTY_FUNCTION__.13159+0x188>
    e88672e4:	85ca                	mv	a1,s2
    e88672e6:	854e                	mv	a0,s3
    e88672e8:	ed2f80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e88672ec:	10051063          	bnez	a0,e88673ec <_HandleHTTPConnectionMessage+0xa52>
	if( inRequest->bodyLen ) {
    e88672f0:	5204b583          	ld	a1,1312(s1)
    e88672f4:	c595                	beqz	a1,e8867320 <_HandleHTTPConnectionMessage+0x986>
		input = (CFDictionaryRef)CFBinaryPlistV0CreateWithData( inRequest->bodyPtr, inRequest->bodyLen, &err );
    e88672f6:	5184b503          	ld	a0,1304(s1)
    e88672fa:	00b0                	addi	a2,sp,72
    e88672fc:	b46e30ef          	jal	ra,e884a642 <CFBinaryPlistV0CreateWithData>
    e8867300:	8a2a                	mv	s4,a0
		require_noerr_action( err, exit, status = kHTTPStatus_BadRequest );
    e8867302:	47a6                	lw	a5,72(sp)
    e8867304:	eb91                	bnez	a5,e8867318 <_HandleHTTPConnectionMessage+0x97e>
		require_action( CFGetTypeID( input ) == CFDictionaryGetTypeID() , exit, status = kHTTPStatus_BadRequest );
    e8867306:	e2ddf0ef          	jal	ra,e8847132 <CFGetTypeID>
    e886730a:	0005091b          	sext.w	s2,a0
    e886730e:	894e00ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8867312:	2501                	sext.w	a0,a0
    e8867314:	00a90763          	beq	s2,a0,e8867322 <_HandleHTTPConnectionMessage+0x988>
	CFMutableDictionaryRef		output	= NULL;
    e8867318:	4981                	li	s3,0
		require_action( CFGetTypeID( input ) == CFDictionaryGetTypeID() , exit, status = kHTTPStatus_BadRequest );
    e886731a:	19000913          	li	s2,400
    e886731e:	a035                	j	e886734a <_HandleHTTPConnectionMessage+0x9b0>
	CFDictionaryRef				input	= NULL;
    e8867320:	4a01                	li	s4,0
	output = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8867322:	00057697          	auipc	a3,0x57
    e8867326:	4a668693          	addi	a3,a3,1190 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886732a:	00057617          	auipc	a2,0x57
    e886732e:	46e60613          	addi	a2,a2,1134 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8867332:	4581                	li	a1,0
    e8867334:	4501                	li	a0,0
    e8867336:	870e00ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886733a:	89aa                	mv	s3,a0
	require_action( output, exit, err = kNoMemoryErr; status = kHTTPStatus_InternalServerError );
    e886733c:	ed31                	bnez	a0,e8867398 <_HandleHTTPConnectionMessage+0x9fe>
    e886733e:	77f9                	lui	a5,0xffffe
    e8867340:	5b87879b          	addiw	a5,a5,1464
    e8867344:	c4be                	sw	a5,72(sp)
    e8867346:	1f400913          	li	s2,500
	if( err ) aprs_ulog( kLogLevelNotice, "### Feedback failed: %#m, %#m\n", status, err );
    e886734a:	47a6                	lw	a5,72(sp)
    e886734c:	c3a1                	beqz	a5,e886738c <_HandleHTTPConnectionMessage+0x9f2>
    e886734e:	0006e517          	auipc	a0,0x6e
    e8867352:	e5250513          	addi	a0,a0,-430 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867356:	411c                	lw	a5,0(a0)
    e8867358:	03200713          	li	a4,50
    e886735c:	02f74863          	blt	a4,a5,e886738c <_HandleHTTPConnectionMessage+0x9f2>
    e8867360:	577d                	li	a4,-1
    e8867362:	06e78f63          	beq	a5,a4,e88673e0 <_HandleHTTPConnectionMessage+0xa46>
    e8867366:	47a6                	lw	a5,72(sp)
    e8867368:	0009071b          	sext.w	a4,s2
    e886736c:	00062697          	auipc	a3,0x62
    e8867370:	cfc68693          	addi	a3,a3,-772 # e88c9068 <__PRETTY_FUNCTION__.13159+0x378>
    e8867374:	03200613          	li	a2,50
    e8867378:	00062597          	auipc	a1,0x62
    e886737c:	22058593          	addi	a1,a1,544 # e88c9598 <__PRETTY_FUNCTION__.13921>
    e8867380:	0006e517          	auipc	a0,0x6e
    e8867384:	e2050513          	addi	a0,a0,-480 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867388:	8eced0ef          	jal	ra,e8854474 <LogPrintF>
	CFReleaseNullSafe( input );
    e886738c:	e80a0fe3          	beqz	s4,e886722a <_HandleHTTPConnectionMessage+0x890>
    e8867390:	8552                	mv	a0,s4
    e8867392:	db9df0ef          	jal	ra,e884714a <CFRelease>
    e8867396:	bd51                	j	e886722a <_HandleHTTPConnectionMessage+0x890>
	if( inCnx->session )
    e8867398:	6808                	ld	a0,16(s0)
    e886739a:	c505                	beqz	a0,e88673c2 <_HandleHTTPConnectionMessage+0xa28>
		AirPlayReceiverSessionControl( inCnx->session, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_UpdateFeedback ), NULL,
    e886739c:	4585                	li	a1,1
    e886739e:	089c                	addi	a5,sp,80
    e88673a0:	8752                	mv	a4,s4
    e88673a2:	4681                	li	a3,0
    e88673a4:	00037617          	auipc	a2,0x37
    e88673a8:	bec60613          	addi	a2,a2,-1044 # e889df90 <icmp6_param_problem+0xf22>
		dict = NULL;
    e88673ac:	e882                	sd	zero,80(sp)
		AirPlayReceiverSessionControl( inCnx->session, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_UpdateFeedback ), NULL,
    e88673ae:	282070ef          	jal	ra,e886e630 <AirPlayReceiverSessionControl>
		if( dict )
    e88673b2:	65c6                	ld	a1,80(sp)
    e88673b4:	c599                	beqz	a1,e88673c2 <_HandleHTTPConnectionMessage+0xa28>
			CFDictionaryMergeDictionary( output, dict );
    e88673b6:	854e                	mv	a0,s3
    e88673b8:	e61e40ef          	jal	ra,e884c218 <CFDictionaryMergeDictionary>
			CFRelease( dict );
    e88673bc:	6546                	ld	a0,80(sp)
    e88673be:	d8ddf0ef          	jal	ra,e884714a <CFRelease>
	status = _requestSendPlistResponse( inCnx->httpCnx, inRequest, ( CFDictionaryGetCount( output ) > 0 ) ? output : NULL, &err );
    e88673c2:	854e                	mv	a0,s3
    e88673c4:	6400                	ld	s0,8(s0)
    e88673c6:	864e00ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e88673ca:	864e                	mv	a2,s3
    e88673cc:	00a04363          	bgtz	a0,e88673d2 <_HandleHTTPConnectionMessage+0xa38>
    e88673d0:	4601                	li	a2,0
    e88673d2:	7468                	ld	a0,232(s0)
    e88673d4:	00b4                	addi	a3,sp,72
    e88673d6:	85a6                	mv	a1,s1
    e88673d8:	d6cfd0ef          	jal	ra,e8864944 <_requestSendPlistResponse.isra.9>
    e88673dc:	892a                	mv	s2,a0
    e88673de:	b7b5                	j	e886734a <_HandleHTTPConnectionMessage+0x9b0>
	if( err ) aprs_ulog( kLogLevelNotice, "### Feedback failed: %#m, %#m\n", status, err );
    e88673e0:	03200593          	li	a1,50
    e88673e4:	c8fec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88673e8:	d155                	beqz	a0,e886738c <_HandleHTTPConnectionMessage+0x9f2>
    e88673ea:	bfb5                	j	e8867366 <_HandleHTTPConnectionMessage+0x9cc>
		else if( strnicmp_suffix( pathPtr, pathLen, "/info" )		== 0 ) status = _requestProcessInfo( cnx, inRequest );
    e88673ec:	00062617          	auipc	a2,0x62
    e88673f0:	bf460613          	addi	a2,a2,-1036 # e88c8fe0 <__PRETTY_FUNCTION__.13159+0x2f0>
    e88673f4:	85ca                	mv	a1,s2
    e88673f6:	854e                	mv	a0,s3
    e88673f8:	dc2f80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e88673fc:	c80504e3          	beqz	a0,e8867084 <_HandleHTTPConnectionMessage+0x6ea>
		else if( strnicmp_suffix( pathPtr, pathLen, "/pair-setup" )		== 0 ) status = _requestProcessPairSetup( cnx, inRequest );
    e8867400:	00062617          	auipc	a2,0x62
    e8867404:	c8860613          	addi	a2,a2,-888 # e88c9088 <__PRETTY_FUNCTION__.13159+0x398>
    e8867408:	85ca                	mv	a1,s2
    e886740a:	854e                	mv	a0,s3
    e886740c:	daef80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e8867410:	1e051063          	bnez	a0,e88675f0 <_HandleHTTPConnectionMessage+0xc56>
	useHomeKitPairing = ( HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_HomeKitPairing, "%d", &homeKitPairingType ) == 1 );
    e8867414:	4104b583          	ld	a1,1040(s1)
    e8867418:	1058                	addi	a4,sp,36
    e886741a:	00043697          	auipc	a3,0x43
    e886741e:	c7e68693          	addi	a3,a3,-898 # e88aa098 <mDNS_DomainTypeNames+0x6e8>
    e8867422:	00062617          	auipc	a2,0x62
    e8867426:	c7660613          	addi	a2,a2,-906 # e88c9098 <__PRETTY_FUNCTION__.13159+0x3a8>
    e886742a:	8552                	mv	a0,s4
	int						homeKitPairingType = 0;
    e886742c:	d202                	sw	zero,36(sp)
	useHomeKitPairing = ( HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_HomeKitPairing, "%d", &homeKitPairingType ) == 1 );
    e886742e:	842eb0ef          	jal	ra,e8852470 <HTTPScanFHeaderValue>
	if( !useHomeKitPairing )
    e8867432:	4785                	li	a5,1
    e8867434:	00f50963          	beq	a0,a5,e8867446 <_HandleHTTPConnectionMessage+0xaac>
		_requestReportIfIncompatibleSender( inCnx, inRequest );
    e8867438:	8526                	mv	a0,s1
    e886743a:	da8fd0ef          	jal	ra,e88649e2 <_requestReportIfIncompatibleSender.isra.10>
		status = kHTTPStatus_Forbidden;
    e886743e:	19300913          	li	s2,403
    e8867442:	8e9ff06f          	j	e8866d2a <_HandleHTTPConnectionMessage+0x390>
	const char				cptr[] = "3939";
    e8867446:	393347b7          	lui	a5,0x39334
    e886744a:	9337879b          	addiw	a5,a5,-1741
    e886744e:	dc3e                	sw	a5,56(sp)
	HTTPMessageRef			response	= inCnx->httpCnx->responseMsg;
    e8867450:	641c                	ld	a5,8(s0)
	aprs_ulog( kLogLevelNotice, "Control pair-setup HK, type %d\n", inHomeKitPairingType );
    e8867452:	0006ea17          	auipc	s4,0x6e
    e8867456:	d4ea0a13          	addi	s4,s4,-690 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
	const char				cptr[] = "3939";
    e886745a:	02010e23          	sb	zero,60(sp)
	uint8_t *				outputPtr	= NULL;
    e886745e:	e082                	sd	zero,64(sp)
	HTTPMessageRef			response	= inCnx->httpCnx->responseMsg;
    e8867460:	0e87ba83          	ld	s5,232(a5) # 393340e8 <memcmp-0xaf4cbf18>
	aprs_ulog( kLogLevelNotice, "Control pair-setup HK, type %d\n", inHomeKitPairingType );
    e8867464:	000a2783          	lw	a5,0(s4)
    e8867468:	03200693          	li	a3,50
		status = _requestProcessPairSetupHomeKit( inCnx, inRequest, homeKitPairingType );
    e886746c:	5712                	lw	a4,36(sp)
	aprs_ulog( kLogLevelNotice, "Control pair-setup HK, type %d\n", inHomeKitPairingType );
    e886746e:	02f6c563          	blt	a3,a5,e8867498 <_HandleHTTPConnectionMessage+0xafe>
    e8867472:	56fd                	li	a3,-1
    e8867474:	06d78f63          	beq	a5,a3,e88674f2 <_HandleHTTPConnectionMessage+0xb58>
    e8867478:	00062697          	auipc	a3,0x62
    e886747c:	c3068693          	addi	a3,a3,-976 # e88c90a8 <__PRETTY_FUNCTION__.13159+0x3b8>
    e8867480:	03200613          	li	a2,50
    e8867484:	00062597          	auipc	a1,0x62
    e8867488:	15c58593          	addi	a1,a1,348 # e88c95e0 <__PRETTY_FUNCTION__.14025>
    e886748c:	0006e517          	auipc	a0,0x6e
    e8867490:	d1450513          	addi	a0,a0,-748 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867494:	fe1ec0ef          	jal	ra,e8854474 <LogPrintF>
	if( !inCnx->pairSetupSessionHomeKit )
    e8867498:	747c                	ld	a5,232(s0)
    e886749a:	c7ad                	beqz	a5,e8867504 <_HandleHTTPConnectionMessage+0xb6a>
	err = PairingSessionSetSetupCode( inCnx->pairSetupSessionHomeKit, cptr, kSizeCString );
    e886749c:	7468                	ld	a0,232(s0)
    e886749e:	567d                	li	a2,-1
    e88674a0:	182c                	addi	a1,sp,56
    e88674a2:	d5cf00ef          	jal	ra,e88579fe <PairingSessionSetSetupCode>
    e88674a6:	89aa                	mv	s3,a0
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e88674a8:	1f400913          	li	s2,500
    e88674ac:	c569                	beqz	a0,e8867576 <_HandleHTTPConnectionMessage+0xbdc>
	if( outputPtr ) free( outputPtr );
    e88674ae:	6506                	ld	a0,64(sp)
    e88674b0:	c119                	beqz	a0,e88674b6 <_HandleHTTPConnectionMessage+0xb1c>
    e88674b2:	64f140ef          	jal	ra,e887c300 <eLIBs_free>
	if( err ) aprs_ulog( kLogLevelNotice, "### Control pair-setup HK failed: %#m\n", err );
    e88674b6:	ec098963          	beqz	s3,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e88674ba:	000a2783          	lw	a5,0(s4)
    e88674be:	03200713          	li	a4,50
    e88674c2:	ecf74363          	blt	a4,a5,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e88674c6:	577d                	li	a4,-1
    e88674c8:	10e78963          	beq	a5,a4,e88675da <_HandleHTTPConnectionMessage+0xc40>
    e88674cc:	874e                	mv	a4,s3
    e88674ce:	00062697          	auipc	a3,0x62
    e88674d2:	bfa68693          	addi	a3,a3,-1030 # e88c90c8 <__PRETTY_FUNCTION__.13159+0x3d8>
    e88674d6:	03200613          	li	a2,50
    e88674da:	00062597          	auipc	a1,0x62
    e88674de:	10658593          	addi	a1,a1,262 # e88c95e0 <__PRETTY_FUNCTION__.14025>
    e88674e2:	0006e517          	auipc	a0,0x6e
    e88674e6:	cbe50513          	addi	a0,a0,-834 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88674ea:	f8bec0ef          	jal	ra,e8854474 <LogPrintF>
    e88674ee:	e9aff06f          	j	e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
	aprs_ulog( kLogLevelNotice, "Control pair-setup HK, type %d\n", inHomeKitPairingType );
    e88674f2:	03200593          	li	a1,50
    e88674f6:	8552                	mv	a0,s4
    e88674f8:	ec3a                	sd	a4,24(sp)
    e88674fa:	b79ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88674fe:	6762                	ld	a4,24(sp)
    e8867500:	dd41                	beqz	a0,e8867498 <_HandleHTTPConnectionMessage+0xafe>
    e8867502:	bf9d                	j	e8867478 <_HandleHTTPConnectionMessage+0xade>
		err = PairingSessionCreate( &inCnx->pairSetupSessionHomeKit, NULL, kPairingSessionType_SetupServer );
    e8867504:	4609                	li	a2,2
    e8867506:	4581                	li	a1,0
    e8867508:	0e840513          	addi	a0,s0,232
    e886750c:	c3ef00ef          	jal	ra,e885794a <PairingSessionCreate>
    e8867510:	89aa                	mv	s3,a0
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8867512:	1f400913          	li	s2,500
    e8867516:	fd41                	bnez	a0,e88674ae <_HandleHTTPConnectionMessage+0xb14>
		PairingSessionSetKeychainInfo_AirPlay( inCnx->pairSetupSessionHomeKit );
    e8867518:	478d                	li	a5,3
    e886751a:	e03e                	sd	a5,0(sp)
    e886751c:	7468                	ld	a0,232(s0)
    e886751e:	00036897          	auipc	a7,0x36
    e8867522:	67288893          	addi	a7,a7,1650 # e889db90 <icmp6_param_problem+0xb22>
    e8867526:	00036717          	auipc	a4,0x36
    e886752a:	69270713          	addi	a4,a4,1682 # e889dbb8 <icmp6_param_problem+0xb4a>
    e886752e:	41505637          	lui	a2,0x41505
    e8867532:	07260793          	addi	a5,a2,114 # 41505072 <memcmp-0xa72faf8e>
    e8867536:	8846                	mv	a6,a7
    e8867538:	86ba                	mv	a3,a4
    e886753a:	96460613          	addi	a2,a2,-1692
    e886753e:	00036597          	auipc	a1,0x36
    e8867542:	6a258593          	addi	a1,a1,1698 # e889dbe0 <icmp6_param_problem+0xb72>
    e8867546:	b2af00ef          	jal	ra,e8857870 <PairingSessionSetKeychainInfo>
		PairingSessionSetLogging( inCnx->pairSetupSessionHomeKit, aprs_ucat() );
    e886754a:	7468                	ld	a0,232(s0)
    e886754c:	0006e597          	auipc	a1,0x6e
    e8867550:	c5458593          	addi	a1,a1,-940 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867554:	ca6f00ef          	jal	ra,e88579fa <PairingSessionSetLogging>
		MACAddressToCString( inCnx->server->deviceID, cstr );
    e8867558:	6008                	ld	a0,0(s0)
    e886755a:	0890                	addi	a2,sp,80
    e886755c:	4599                	li	a1,6
    e886755e:	09350513          	addi	a0,a0,147
    e8867562:	b21f70ef          	jal	ra,e885f082 <HardwareAddressToCString>
		err = PairingSessionSetIdentifier( inCnx->pairSetupSessionHomeKit, cstr, kSizeCString );
    e8867566:	7468                	ld	a0,232(s0)
    e8867568:	567d                	li	a2,-1
    e886756a:	088c                	addi	a1,sp,80
    e886756c:	af4f00ef          	jal	ra,e8857860 <PairingSessionSetIdentifier>
    e8867570:	89aa                	mv	s3,a0
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8867572:	d50d                	beqz	a0,e886749c <_HandleHTTPConnectionMessage+0xb02>
    e8867574:	bf2d                	j	e88674ae <_HandleHTTPConnectionMessage+0xb14>
	err = PairingSessionExchange( inCnx->pairSetupSessionHomeKit, inRequest->bodyPtr, inRequest->bodyOffset,
    e8867576:	5304b603          	ld	a2,1328(s1)
    e886757a:	5184b583          	ld	a1,1304(s1)
    e886757e:	7468                	ld	a0,232(s0)
    e8867580:	02310793          	addi	a5,sp,35
    e8867584:	00b8                	addi	a4,sp,72
    e8867586:	0094                	addi	a3,sp,64
    e8867588:	d1ef30ef          	jal	ra,e885aaa6 <PairingSessionExchange>
    e886758c:	89aa                	mv	s3,a0
	if( err == kBackoffErr ) { status = kHTTPStatus_NotEnoughBandwidth; goto exit; }
    e886758e:	77f9                	lui	a5,0xffffe
    e8867590:	59878793          	addi	a5,a5,1432 # ffffffffffffe598 <__DRAM0_INF_BASE+0xffffffff0000e598>
    e8867594:	1c500913          	li	s2,453
    e8867598:	f0f50be3          	beq	a0,a5,e88674ae <_HandleHTTPConnectionMessage+0xb14>
	require_noerr_action_quiet( err, exit, status = kHTTPStatus_ConnectionAuthorizationRequired );
    e886759c:	1d600913          	li	s2,470
    e88675a0:	f00517e3          	bnez	a0,e88674ae <_HandleHTTPConnectionMessage+0xb14>
	if( done )
    e88675a4:	02314783          	lbu	a5,35(sp)
    e88675a8:	c799                	beqz	a5,e88675b6 <_HandleHTTPConnectionMessage+0xc1c>
		ForgetCF( &inCnx->pairSetupSessionHomeKit );
    e88675aa:	7468                	ld	a0,232(s0)
    e88675ac:	c509                	beqz	a0,e88675b6 <_HandleHTTPConnectionMessage+0xc1c>
    e88675ae:	b9ddf0ef          	jal	ra,e884714a <CFRelease>
    e88675b2:	0e043423          	sd	zero,232(s0)
	err = HTTPMessageSetBodyPtr( response, kMIMEType_Binary, outputPtr, outputLen );
    e88675b6:	66a6                	ld	a3,72(sp)
    e88675b8:	6606                	ld	a2,64(sp)
    e88675ba:	00062597          	auipc	a1,0x62
    e88675be:	a4658593          	addi	a1,a1,-1466 # e88c9000 <__PRETTY_FUNCTION__.13159+0x310>
    e88675c2:	8556                	mv	a0,s5
    e88675c4:	807e90ef          	jal	ra,e8850dca <HTTPMessageSetBodyPtr>
    e88675c8:	89aa                	mv	s3,a0
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e88675ca:	1f400913          	li	s2,500
    e88675ce:	ee0510e3          	bnez	a0,e88674ae <_HandleHTTPConnectionMessage+0xb14>
	outputPtr = NULL;
    e88675d2:	e082                	sd	zero,64(sp)
	status = kHTTPStatus_OK;
    e88675d4:	0c800913          	li	s2,200
    e88675d8:	bdd9                	j	e88674ae <_HandleHTTPConnectionMessage+0xb14>
	if( err ) aprs_ulog( kLogLevelNotice, "### Control pair-setup HK failed: %#m\n", err );
    e88675da:	03200593          	li	a1,50
    e88675de:	0006e517          	auipc	a0,0x6e
    e88675e2:	bc250513          	addi	a0,a0,-1086 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e88675e6:	a8dec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88675ea:	d8050f63          	beqz	a0,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e88675ee:	bdf9                	j	e88674cc <_HandleHTTPConnectionMessage+0xb32>
		else if( strnicmp_suffix( pathPtr, pathLen, "/pair-verify" )	== 0 ) status = _requestProcessPairVerify( cnx, inRequest );
    e88675f0:	00062617          	auipc	a2,0x62
    e88675f4:	b0060613          	addi	a2,a2,-1280 # e88c90f0 <__PRETTY_FUNCTION__.13159+0x400>
    e88675f8:	85ca                	mv	a1,s2
    e88675fa:	854e                	mv	a0,s3
    e88675fc:	bbef80ef          	jal	ra,e885f9ba <strnicmp_suffix>
    e8867600:	20051d63          	bnez	a0,e886781a <_HandleHTTPConnectionMessage+0xe80>
	aprs_ulog( kLogLevelNotice, "Control pair-verify %d\n", inCnx->pairingCount + 1 );
    e8867604:	0006ea97          	auipc	s5,0x6e
    e8867608:	b9ca8a93          	addi	s5,s5,-1124 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e886760c:	000aa783          	lw	a5,0(s5)
	int						homeKitPairingType = 0;
    e8867610:	dc02                	sw	zero,56(sp)
	aprs_ulog( kLogLevelNotice, "Control pair-verify %d\n", inCnx->pairingCount + 1 );
    e8867612:	03200713          	li	a4,50
    e8867616:	02f74863          	blt	a4,a5,e8867646 <_HandleHTTPConnectionMessage+0xcac>
    e886761a:	577d                	li	a4,-1
    e886761c:	10e78663          	beq	a5,a4,e8867728 <_HandleHTTPConnectionMessage+0xd8e>
    e8867620:	0fc42703          	lw	a4,252(s0)
    e8867624:	00062697          	auipc	a3,0x62
    e8867628:	adc68693          	addi	a3,a3,-1316 # e88c9100 <__PRETTY_FUNCTION__.13159+0x410>
    e886762c:	03200613          	li	a2,50
    e8867630:	2705                	addiw	a4,a4,1
    e8867632:	00062597          	auipc	a1,0x62
    e8867636:	01e58593          	addi	a1,a1,30 # e88c9650 <__PRETTY_FUNCTION__.14075>
    e886763a:	0006e517          	auipc	a0,0x6e
    e886763e:	b6650513          	addi	a0,a0,-1178 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867642:	e33ec0ef          	jal	ra,e8854474 <LogPrintF>
	++inCnx->pairingCount;
    e8867646:	0fc42783          	lw	a5,252(s0)
	HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_PairDerive, "%d", &inCnx->pairDerive );
    e886764a:	10040913          	addi	s2,s0,256
    e886764e:	874a                	mv	a4,s2
	++inCnx->pairingCount;
    e8867650:	2785                	addiw	a5,a5,1
    e8867652:	0ef42e23          	sw	a5,252(s0)
	HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_PairDerive, "%d", &inCnx->pairDerive );
    e8867656:	4104b583          	ld	a1,1040(s1)
    e886765a:	00043697          	auipc	a3,0x43
    e886765e:	a3e68693          	addi	a3,a3,-1474 # e88aa098 <mDNS_DomainTypeNames+0x6e8>
    e8867662:	00062617          	auipc	a2,0x62
    e8867666:	ab660613          	addi	a2,a2,-1354 # e88c9118 <__PRETTY_FUNCTION__.13159+0x428>
    e886766a:	8552                	mv	a0,s4
    e886766c:	e05ea0ef          	jal	ra,e8852470 <HTTPScanFHeaderValue>
	useHomeKitPairing = ( HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_HomeKitPairing, "%d", &homeKitPairingType ) == 1 );
    e8867670:	4104b583          	ld	a1,1040(s1)
    e8867674:	1838                	addi	a4,sp,56
    e8867676:	00043697          	auipc	a3,0x43
    e886767a:	a2268693          	addi	a3,a3,-1502 # e88aa098 <mDNS_DomainTypeNames+0x6e8>
    e886767e:	00062617          	auipc	a2,0x62
    e8867682:	a1a60613          	addi	a2,a2,-1510 # e88c9098 <__PRETTY_FUNCTION__.13159+0x3a8>
    e8867686:	8552                	mv	a0,s4
    e8867688:	de9ea0ef          	jal	ra,e8852470 <HTTPScanFHeaderValue>
	if( !useHomeKitPairing )
    e886768c:	4785                	li	a5,1
    e886768e:	daf515e3          	bne	a0,a5,e8867438 <_HandleHTTPConnectionMessage+0xa9e>
	HTTPMessageRef			response = inCnx->httpCnx->responseMsg;
    e8867692:	641c                	ld	a5,8(s0)
	HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_PairDerive, "%d", &inCnx->pairDerive );
    e8867694:	4104b583          	ld	a1,1040(s1)
    e8867698:	874a                	mv	a4,s2
    e886769a:	00043697          	auipc	a3,0x43
    e886769e:	9fe68693          	addi	a3,a3,-1538 # e88aa098 <mDNS_DomainTypeNames+0x6e8>
    e88676a2:	00062617          	auipc	a2,0x62
    e88676a6:	a7660613          	addi	a2,a2,-1418 # e88c9118 <__PRETTY_FUNCTION__.13159+0x428>
    e88676aa:	8552                	mv	a0,s4
	uint8_t *				outputPtr	= NULL;
    e88676ac:	e082                	sd	zero,64(sp)
	size_t					outputLen	= 0;
    e88676ae:	e482                	sd	zero,72(sp)
	HTTPMessageRef			response = inCnx->httpCnx->responseMsg;
    e88676b0:	0e87bb03          	ld	s6,232(a5)
	HTTPScanFHeaderValue( inRequest->header.buf, inRequest->header.len, kAirPlayHTTPHeader_PairDerive, "%d", &inCnx->pairDerive );
    e88676b4:	dbdea0ef          	jal	ra,e8852470 <HTTPScanFHeaderValue>
	if( !inCnx->pairVerifySessionHomeKit )
    e88676b8:	787c                	ld	a5,240(s0)
    e88676ba:	cfbd                	beqz	a5,e8867738 <_HandleHTTPConnectionMessage+0xd9e>
	err = PairingSessionExchange( inCnx->pairVerifySessionHomeKit, inRequest->bodyPtr, inRequest->bodyOffset, &outputPtr, &outputLen, &done );
    e88676bc:	5304b603          	ld	a2,1328(s1)
    e88676c0:	5184b583          	ld	a1,1304(s1)
    e88676c4:	7868                	ld	a0,240(s0)
    e88676c6:	105c                	addi	a5,sp,36
    e88676c8:	00b8                	addi	a4,sp,72
    e88676ca:	0094                	addi	a3,sp,64
    e88676cc:	bdaf30ef          	jal	ra,e885aaa6 <PairingSessionExchange>
    e88676d0:	89aa                	mv	s3,a0
	if( err == kNotPreparedErr ) { status = kHTTPStatus_NetworkAuthenticationRequired; goto exit; }
    e88676d2:	77f9                	lui	a5,0xffffe
    e88676d4:	5a778713          	addi	a4,a5,1447 # ffffffffffffe5a7 <__DRAM0_INF_BASE+0xffffffff0000e5a7>
    e88676d8:	1ff00913          	li	s2,511
    e88676dc:	0ce51863          	bne	a0,a4,e88677ac <_HandleHTTPConnectionMessage+0xe12>
	FreeNullSafe( outputPtr );
    e88676e0:	6506                	ld	a0,64(sp)
    e88676e2:	c119                	beqz	a0,e88676e8 <_HandleHTTPConnectionMessage+0xd4e>
    e88676e4:	41d140ef          	jal	ra,e887c300 <eLIBs_free>
	if( err ) aprs_ulog( kLogLevelNotice, "### Control pair-verify HK failed: %d, %#m\n", status, err );
    e88676e8:	ca098063          	beqz	s3,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e88676ec:	000aa783          	lw	a5,0(s5)
    e88676f0:	03200713          	li	a4,50
    e88676f4:	c8f74a63          	blt	a4,a5,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e88676f8:	577d                	li	a4,-1
    e88676fa:	10e78563          	beq	a5,a4,e8867804 <_HandleHTTPConnectionMessage+0xe6a>
    e88676fe:	87ce                	mv	a5,s3
    e8867700:	0009071b          	sext.w	a4,s2
    e8867704:	00062697          	auipc	a3,0x62
    e8867708:	a2468693          	addi	a3,a3,-1500 # e88c9128 <__PRETTY_FUNCTION__.13159+0x438>
    e886770c:	03200613          	li	a2,50
    e8867710:	00062597          	auipc	a1,0x62
    e8867714:	f1858593          	addi	a1,a1,-232 # e88c9628 <__PRETTY_FUNCTION__.14067>
    e8867718:	0006e517          	auipc	a0,0x6e
    e886771c:	a8850513          	addi	a0,a0,-1400 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867720:	d55ec0ef          	jal	ra,e8854474 <LogPrintF>
    e8867724:	c64ff06f          	j	e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
	aprs_ulog( kLogLevelNotice, "Control pair-verify %d\n", inCnx->pairingCount + 1 );
    e8867728:	03200593          	li	a1,50
    e886772c:	8556                	mv	a0,s5
    e886772e:	945ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8867732:	f0050ae3          	beqz	a0,e8867646 <_HandleHTTPConnectionMessage+0xcac>
    e8867736:	b5ed                	j	e8867620 <_HandleHTTPConnectionMessage+0xc86>
		err = PairingSessionCreate( &inCnx->pairVerifySessionHomeKit, NULL, kPairingSessionType_VerifyServer );
    e8867738:	4611                	li	a2,4
    e886773a:	4581                	li	a1,0
    e886773c:	0f040513          	addi	a0,s0,240
    e8867740:	a0af00ef          	jal	ra,e885794a <PairingSessionCreate>
    e8867744:	89aa                	mv	s3,a0
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e8867746:	1f400913          	li	s2,500
    e886774a:	f959                	bnez	a0,e88676e0 <_HandleHTTPConnectionMessage+0xd46>
		PairingSessionSetKeychainInfo_AirPlay( inCnx->pairVerifySessionHomeKit );
    e886774c:	478d                	li	a5,3
    e886774e:	e03e                	sd	a5,0(sp)
    e8867750:	7868                	ld	a0,240(s0)
    e8867752:	00036897          	auipc	a7,0x36
    e8867756:	43e88893          	addi	a7,a7,1086 # e889db90 <icmp6_param_problem+0xb22>
    e886775a:	00036717          	auipc	a4,0x36
    e886775e:	45e70713          	addi	a4,a4,1118 # e889dbb8 <icmp6_param_problem+0xb4a>
    e8867762:	41505637          	lui	a2,0x41505
    e8867766:	07260793          	addi	a5,a2,114 # 41505072 <memcmp-0xa72faf8e>
    e886776a:	8846                	mv	a6,a7
    e886776c:	86ba                	mv	a3,a4
    e886776e:	96460613          	addi	a2,a2,-1692
    e8867772:	00036597          	auipc	a1,0x36
    e8867776:	46e58593          	addi	a1,a1,1134 # e889dbe0 <icmp6_param_problem+0xb72>
    e886777a:	8f6f00ef          	jal	ra,e8857870 <PairingSessionSetKeychainInfo>
		PairingSessionSetLogging( inCnx->pairVerifySessionHomeKit, aprs_ucat() );
    e886777e:	7868                	ld	a0,240(s0)
    e8867780:	0006e597          	auipc	a1,0x6e
    e8867784:	a2058593          	addi	a1,a1,-1504 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867788:	a72f00ef          	jal	ra,e88579fa <PairingSessionSetLogging>
		MACAddressToCString( inCnx->server->deviceID, cstr );
    e886778c:	6008                	ld	a0,0(s0)
    e886778e:	0890                	addi	a2,sp,80
    e8867790:	4599                	li	a1,6
    e8867792:	09350513          	addi	a0,a0,147
    e8867796:	8edf70ef          	jal	ra,e885f082 <HardwareAddressToCString>
		err = PairingSessionSetIdentifier( inCnx->pairVerifySessionHomeKit, cstr, kSizeCString );
    e886779a:	7868                	ld	a0,240(s0)
    e886779c:	567d                	li	a2,-1
    e886779e:	088c                	addi	a1,sp,80
    e88677a0:	8c0f00ef          	jal	ra,e8857860 <PairingSessionSetIdentifier>
    e88677a4:	89aa                	mv	s3,a0
		require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e88677a6:	f0050be3          	beqz	a0,e88676bc <_HandleHTTPConnectionMessage+0xd22>
    e88677aa:	bf1d                	j	e88676e0 <_HandleHTTPConnectionMessage+0xd46>
	if( err == kSignatureErr )   { status = kHTTPStatus_Forbidden; goto exit; }
    e88677ac:	5c478793          	addi	a5,a5,1476
    e88677b0:	19300913          	li	s2,403
    e88677b4:	f2f506e3          	beq	a0,a5,e88676e0 <_HandleHTTPConnectionMessage+0xd46>
	require_noerr_action_quiet( err, exit, status = kHTTPStatus_BadRequest );
    e88677b8:	19000913          	li	s2,400
    e88677bc:	f115                	bnez	a0,e88676e0 <_HandleHTTPConnectionMessage+0xd46>
	if( done ) 
    e88677be:	02414783          	lbu	a5,36(sp)
    e88677c2:	cf99                	beqz	a5,e88677e0 <_HandleHTTPConnectionMessage+0xe46>
		CFRetain( inCnx->httpCnx );
    e88677c4:	6408                	ld	a0,8(s0)
    e88677c6:	981df0ef          	jal	ra,e8847146 <CFRetain>
		response->userContext1 = inCnx->httpCnx;
    e88677ca:	6418                	ld	a4,8(s0)
    e88677cc:	6785                	lui	a5,0x1
    e88677ce:	97da                	add	a5,a5,s6
    e88677d0:	9ae7b823          	sd	a4,-1616(a5) # 9b0 <memcmp-0xe87ff650>
		response->completion   = _HandlePairVerifyHomeKitCompletion;
    e88677d4:	ffffd717          	auipc	a4,0xffffd
    e88677d8:	d9070713          	addi	a4,a4,-624 # e8864564 <_HandlePairVerifyHomeKitCompletion>
    e88677dc:	9ce7b823          	sd	a4,-1584(a5)
	err = HTTPMessageSetBodyPtr( response, kMIMEType_Binary, outputPtr, outputLen );
    e88677e0:	66a6                	ld	a3,72(sp)
    e88677e2:	6606                	ld	a2,64(sp)
    e88677e4:	00062597          	auipc	a1,0x62
    e88677e8:	81c58593          	addi	a1,a1,-2020 # e88c9000 <__PRETTY_FUNCTION__.13159+0x310>
    e88677ec:	855a                	mv	a0,s6
    e88677ee:	ddce90ef          	jal	ra,e8850dca <HTTPMessageSetBodyPtr>
    e88677f2:	89aa                	mv	s3,a0
	require_noerr_action( err, exit, status = kHTTPStatus_InternalServerError );
    e88677f4:	1f400913          	li	s2,500
    e88677f8:	ee0514e3          	bnez	a0,e88676e0 <_HandleHTTPConnectionMessage+0xd46>
	outputPtr = NULL;
    e88677fc:	e082                	sd	zero,64(sp)
	status = kHTTPStatus_OK;
    e88677fe:	0c800913          	li	s2,200
    e8867802:	bdf9                	j	e88676e0 <_HandleHTTPConnectionMessage+0xd46>
	if( err ) aprs_ulog( kLogLevelNotice, "### Control pair-verify HK failed: %d, %#m\n", status, err );
    e8867804:	03200593          	li	a1,50
    e8867808:	0006e517          	auipc	a0,0x6e
    e886780c:	99850513          	addi	a0,a0,-1640 # e88d51a0 <gLogCategory_AirPlayReceiverServer>
    e8867810:	863ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8867814:	b6050a63          	beqz	a0,e8866b88 <_HandleHTTPConnectionMessage+0x1ee>
    e8867818:	b5dd                	j	e88676fe <_HandleHTTPConnectionMessage+0xd64>
		else { dlogassert( "Bad POST: '%.*s'", (int) pathLen, pathPtr ); status = kHTTPStatus_NotFound; }
    e886781a:	6705                	lui	a4,0x1
    e886781c:	e04e                	sd	s3,0(sp)
    e886781e:	0009089b          	sext.w	a7,s2
    e8867822:	00062817          	auipc	a6,0x62
    e8867826:	93680813          	addi	a6,a6,-1738 # e88c9158 <__PRETTY_FUNCTION__.13159+0x468>
    e886782a:	00062797          	auipc	a5,0x62
    e886782e:	d1678793          	addi	a5,a5,-746 # e88c9540 <__PRETTY_FUNCTION__.13877>
    e8867832:	96170713          	addi	a4,a4,-1695 # 961 <memcmp-0xe87ff69f>
    e8867836:	00062697          	auipc	a3,0x62
    e886783a:	fb268693          	addi	a3,a3,-78 # e88c97e8 <__PRETTY_FUNCTION__.14166+0xf8>
    e886783e:	4601                	li	a2,0
    e8867840:	4581                	li	a1,0
    e8867842:	4501                	li	a0,0
    e8867844:	b85e60ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8867848:	b26ff06f          	j	e8866b6e <_HandleHTTPConnectionMessage+0x1d4>
	else { dlogassert( "Bad method: %.*s", (int) methodLen, methodPtr ); status = kHTTPStatus_NotImplemented; }
    e886784c:	6705                	lui	a4,0x1
    e886784e:	e05a                	sd	s6,0(sp)
    e8867850:	000a889b          	sext.w	a7,s5
    e8867854:	00062817          	auipc	a6,0x62
    e8867858:	91c80813          	addi	a6,a6,-1764 # e88c9170 <__PRETTY_FUNCTION__.13159+0x480>
    e886785c:	00062797          	auipc	a5,0x62
    e8867860:	ce478793          	addi	a5,a5,-796 # e88c9540 <__PRETTY_FUNCTION__.13877>
    e8867864:	96370713          	addi	a4,a4,-1693 # 963 <memcmp-0xe87ff69d>
    e8867868:	00062697          	auipc	a3,0x62
    e886786c:	f8068693          	addi	a3,a3,-128 # e88c97e8 <__PRETTY_FUNCTION__.14166+0xf8>
    e8867870:	4601                	li	a2,0
    e8867872:	4581                	li	a1,0
    e8867874:	4501                	li	a0,0
    e8867876:	b53e60ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e886787a:	1f500913          	li	s2,501
    e886787e:	cacff06f          	j	e8866d2a <_HandleHTTPConnectionMessage+0x390>
		err = HTTPHeader_AddFieldF( &response->header, kHTTPHeader_CSeq, "%.*s", (int) cSeqLen, cSeqPtr );
    e8867882:	56c2                	lw	a3,48(sp)
    e8867884:	00062617          	auipc	a2,0x62
    e8867888:	91c60613          	addi	a2,a2,-1764 # e88c91a0 <__PRETTY_FUNCTION__.13159+0x4b0>
    e886788c:	00061597          	auipc	a1,0x61
    e8867890:	5fc58593          	addi	a1,a1,1532 # e88c8e88 <__PRETTY_FUNCTION__.13159+0x198>
    e8867894:	855e                	mv	a0,s7
    e8867896:	e84ea0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
		require_noerr( err, exit );
    e886789a:	c4050d63          	beqz	a0,e8866cf4 <_HandleHTTPConnectionMessage+0x35a>
    e886789e:	cb8ff06f          	j	e8866d56 <_HandleHTTPConnectionMessage+0x3bc>
	require_action( cnx, exit, err = kParamErr );
    e88678a2:	7579                	lui	a0,0xffffe
    e88678a4:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
	return( err );
    e88678a8:	caeff06f          	j	e8866d56 <_HandleHTTPConnectionMessage+0x3bc>

00000000e88678ac <_AudioDecoderDecodeCallback>:
	AirPlayReceiverSessionRef const			session = (AirPlayReceiverSessionRef) inUserData;
	AirPlayAudioStreamContext * const		ctx = &session->mainAudioCtx;
	
	(void) inAudioConverter;
	
	if( session->encodedDataPtr != session->encodedDataEnd )
    e88678ac:	6509                	lui	a0,0x2
    e88678ae:	00a707b3          	add	a5,a4,a0
    e88678b2:	8c87b883          	ld	a7,-1848(a5)
    e88678b6:	8d07b803          	ld	a6,-1840(a5)
    e88678ba:	05088563          	beq	a7,a6,e8867904 <_AudioDecoderDecodeCallback+0x58>
	{
		check( *ioNumberDataPackets > 0 );
		*ioNumberDataPackets = 1;
    e88678be:	4805                	li	a6,1
    e88678c0:	0105a023          	sw	a6,0(a1)
		session->encodedDataPtr					= session->encodedDataEnd;
		
		session->encodedPacketDesc.mStartOffset				= 0;
		session->encodedPacketDesc.mVariableFramesInPacket	= 0;
		session->encodedPacketDesc.mDataByteSize			= ioData->mBuffers[ 0 ].mDataByteSize;
		*outDataPacketDescription							= &session->encodedPacketDesc;
    e88678c4:	8d850513          	addi	a0,a0,-1832 # 18d8 <memcmp-0xe87fe728>
		ioData->mNumberBuffers					= 1;
    e88678c8:	01062023          	sw	a6,0(a2)
		ioData->mBuffers[ 0 ].mNumberChannels	= ctx->channels;
    e88678cc:	5c072583          	lw	a1,1472(a4)
		*outDataPacketDescription							= &session->encodedPacketDesc;
    e88678d0:	972a                	add	a4,a4,a0
		
		return( kNoErr );
    e88678d2:	4501                	li	a0,0
		ioData->mBuffers[ 0 ].mNumberChannels	= ctx->channels;
    e88678d4:	c60c                	sw	a1,8(a2)
		ioData->mBuffers[ 0 ].mDataByteSize		= (UInt32)( session->encodedDataEnd - session->encodedDataPtr );
    e88678d6:	8c87b803          	ld	a6,-1848(a5)
    e88678da:	8d07b583          	ld	a1,-1840(a5)
    e88678de:	410585b3          	sub	a1,a1,a6
    e88678e2:	c64c                	sw	a1,12(a2)
		ioData->mBuffers[ 0 ].mData				= (void *) session->encodedDataPtr;
    e88678e4:	8c87b583          	ld	a1,-1848(a5)
    e88678e8:	ea0c                	sd	a1,16(a2)
		session->encodedDataPtr					= session->encodedDataEnd;
    e88678ea:	8d07b583          	ld	a1,-1840(a5)
		session->encodedPacketDesc.mStartOffset				= 0;
    e88678ee:	8c07bc23          	sd	zero,-1832(a5)
		session->encodedPacketDesc.mVariableFramesInPacket	= 0;
    e88678f2:	8e07a023          	sw	zero,-1824(a5)
		session->encodedDataPtr					= session->encodedDataEnd;
    e88678f6:	8cb7b423          	sd	a1,-1848(a5)
		session->encodedPacketDesc.mDataByteSize			= ioData->mBuffers[ 0 ].mDataByteSize;
    e88678fa:	4650                	lw	a2,12(a2)
    e88678fc:	8ec7a223          	sw	a2,-1820(a5)
		*outDataPacketDescription							= &session->encodedPacketDesc;
    e8867900:	e298                	sd	a4,0(a3)
		return( kNoErr );
    e8867902:	8082                	ret
	}
	
	*ioNumberDataPackets = 0;
	return( kUnderrunErr );
    e8867904:	7579                	lui	a0,0xffffe
	*ioNumberDataPackets = 0;
    e8867906:	0005a023          	sw	zero,0(a1)
	return( kUnderrunErr );
    e886790a:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
}
    e886790e:	8082                	ret

00000000e8867910 <_AudioEncoderEncodeCallback>:
	UInt32									bytes, avail;
	
	(void) inAudioConverter;
	(void) outDataPacketDescription;
	
	if( ctx->inputDataPtr != ctx->inputDataEnd )
    e8867910:	76073783          	ld	a5,1888(a4)
    e8867914:	76873683          	ld	a3,1896(a4)
    e8867918:	04d78263          	beq	a5,a3,e886795c <_AudioEncoderEncodeCallback+0x4c>
	{
		bytes = *ioNumberDataPackets * ctx->bytesPerUnit;
    e886791c:	4188                	lw	a0,0(a1)
    e886791e:	16c72803          	lw	a6,364(a4)
		avail = (UInt32)( ctx->inputDataEnd - ctx->inputDataPtr );
    e8867922:	8e9d                	sub	a3,a3,a5
		bytes = Min( bytes, avail );
    e8867924:	0006879b          	sext.w	a5,a3
		bytes = *ioNumberDataPackets * ctx->bytesPerUnit;
    e8867928:	0305083b          	mulw	a6,a0,a6
		bytes = Min( bytes, avail );
    e886792c:	00f837b3          	sltu	a5,a6,a5
		bytes = *ioNumberDataPackets * ctx->bytesPerUnit;
    e8867930:	8542                	mv	a0,a6
		bytes = Min( bytes, avail );
    e8867932:	40f6950b          	mveqz	a0,a3,a5
		
		ioData->mBuffers[ 0 ].mNumberChannels	= ctx->channels;
    e8867936:	16872683          	lw	a3,360(a4)
		ioData->mBuffers[ 0 ].mDataByteSize		= bytes;
    e886793a:	e2a6568b          	swd	a3,a0,(a2),1,3
		ioData->mBuffers[ 0 ].mData				= (void *) ctx->inputDataPtr;
    e886793e:	76073683          	ld	a3,1888(a4)
    e8867942:	ea14                	sd	a3,16(a2)
		ctx->inputDataPtr += bytes;
    e8867944:	7c05360b          	extu	a2,a0,31,0
    e8867948:	96b2                	add	a3,a3,a2
    e886794a:	76d73023          	sd	a3,1888(a4)
		*ioNumberDataPackets = bytes / ctx->bytesPerUnit;
    e886794e:	16c72703          	lw	a4,364(a4)
    e8867952:	02e557bb          	divuw	a5,a0,a4
		
		return( kNoErr );
    e8867956:	4501                	li	a0,0
		*ioNumberDataPackets = bytes / ctx->bytesPerUnit;
    e8867958:	c19c                	sw	a5,0(a1)
		return( kNoErr );
    e886795a:	8082                	ret
	}

	*ioNumberDataPackets = 0;
	return( kUnderrunErr );
    e886795c:	7579                	lui	a0,0xffffe
	*ioNumberDataPackets = 0;
    e886795e:	0005a023          	sw	zero,0(a1)
	return( kUnderrunErr );
    e8867962:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
}
    e8867966:	8082                	ret

00000000e8867968 <_GetTypeID>:
{
    e8867968:	1141                	addi	sp,sp,-16
	gAirPlayReceiverSessionTypeID = _CFRuntimeRegisterClass( &kAirPlayReceiverSessionClass );
    e886796a:	00064517          	auipc	a0,0x64
    e886796e:	db650513          	addi	a0,a0,-586 # e88cb720 <kAirPlayReceiverSessionClass>
{
    e8867972:	e406                	sd	ra,8(sp)
	gAirPlayReceiverSessionTypeID = _CFRuntimeRegisterClass( &kAirPlayReceiverSessionClass );
    e8867974:	ddbdf0ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8867978:	0007c797          	auipc	a5,0x7c
    e886797c:	44a7aa23          	sw	a0,1108(a5) # e88e3dcc <gAirPlayReceiverSessionTypeID>
}
    e8867980:	60a2                	ld	ra,8(sp)
    e8867982:	0141                	addi	sp,sp,16
    e8867984:	8082                	ret

00000000e8867986 <_RetransmitsAbortAll>:
{
    e8867986:	1101                	addi	sp,sp,-32
    e8867988:	e822                	sd	s0,16(sp)
    e886798a:	ec06                	sd	ra,24(sp)
	if( ats->rtcpRTBusyList ) atr_stats_ulog( kLogLevelInfo, "### Aborting all retransmits (%s)\n", inReason );
    e886798c:	39053783          	ld	a5,912(a0)
{
    e8867990:	842a                	mv	s0,a0
	if( ats->rtcpRTBusyList ) atr_stats_ulog( kLogLevelInfo, "### Aborting all retransmits (%s)\n", inReason );
    e8867992:	cf95                	beqz	a5,e88679ce <_RetransmitsAbortAll+0x48>
    e8867994:	0006e517          	auipc	a0,0x6e
    e8867998:	98c50513          	addi	a0,a0,-1652 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886799c:	411c                	lw	a5,0(a0)
    e886799e:	02800693          	li	a3,40
    e88679a2:	02f6c663          	blt	a3,a5,e88679ce <_RetransmitsAbortAll+0x48>
    e88679a6:	56fd                	li	a3,-1
    e88679a8:	872e                	mv	a4,a1
    e88679aa:	02d78963          	beq	a5,a3,e88679dc <_RetransmitsAbortAll+0x56>
    e88679ae:	00063697          	auipc	a3,0x63
    e88679b2:	4b268693          	addi	a3,a3,1202 # e88cae60 <kAirPlayReceiverServerClass+0x1468>
    e88679b6:	02800613          	li	a2,40
    e88679ba:	00064597          	auipc	a1,0x64
    e88679be:	a9e58593          	addi	a1,a1,-1378 # e88cb458 <__PRETTY_FUNCTION__.14134>
    e88679c2:	0006e517          	auipc	a0,0x6e
    e88679c6:	95e50513          	addi	a0,a0,-1698 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e88679ca:	aabec0ef          	jal	ra,e8854474 <LogPrintF>
	while( ( curr = ats->rtcpRTBusyList ) != NULL )
    e88679ce:	39043783          	ld	a5,912(s0)
    e88679d2:	ef89                	bnez	a5,e88679ec <_RetransmitsAbortAll+0x66>
}
    e88679d4:	60e2                	ld	ra,24(sp)
    e88679d6:	6442                	ld	s0,16(sp)
    e88679d8:	6105                	addi	sp,sp,32
    e88679da:	8082                	ret
    e88679dc:	e42e                	sd	a1,8(sp)
	if( ats->rtcpRTBusyList ) atr_stats_ulog( kLogLevelInfo, "### Aborting all retransmits (%s)\n", inReason );
    e88679de:	02800593          	li	a1,40
    e88679e2:	e90ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88679e6:	6722                	ld	a4,8(sp)
    e88679e8:	d17d                	beqz	a0,e88679ce <_RetransmitsAbortAll+0x48>
    e88679ea:	b7d1                	j	e88679ae <_RetransmitsAbortAll+0x28>
		ats->rtcpRTBusyList = curr->next;
    e88679ec:	6398                	ld	a4,0(a5)
    e88679ee:	38e43823          	sd	a4,912(s0)
		curr->next = ats->rtcpRTFreeList;
    e88679f2:	38843703          	ld	a4,904(s0)
    e88679f6:	e398                	sd	a4,0(a5)
		ats->rtcpRTFreeList = curr;
    e88679f8:	38f43423          	sd	a5,904(s0)
    e88679fc:	bfc9                	j	e88679ce <_RetransmitsAbortAll+0x48>

00000000e88679fe <_ForgetReplyTimer>:
{
    e88679fe:	1141                	addi	sp,sp,-16
    e8867a00:	e022                	sd	s0,0(sp)
    e8867a02:	e406                	sd	ra,8(sp)
    e8867a04:	842a                	mv	s0,a0
	dispatch_source_forget( &session->eventReplyTimer );
    e8867a06:	43853503          	ld	a0,1080(a0)
    e8867a0a:	c909                	beqz	a0,e8867a1c <_ForgetReplyTimer+0x1e>
    e8867a0c:	a3ae80ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8867a10:	43843503          	ld	a0,1080(s0)
    e8867a14:	83ce70ef          	jal	ra,e884ea50 <dispatch_release>
    e8867a18:	42043c23          	sd	zero,1080(s0)
}
    e8867a1c:	60a2                	ld	ra,8(sp)
    e8867a1e:	6402                	ld	s0,0(sp)
    e8867a20:	0141                	addi	sp,sp,16
    e8867a22:	8082                	ret

00000000e8867a24 <_ScreenTearDown>:
{
    e8867a24:	1101                	addi	sp,sp,-32
    e8867a26:	e422                	sd	s0,8(sp)
	if( inSession->screenThreadPtr )
    e8867a28:	6409                	lui	s0,0x2
    e8867a2a:	942a                	add	s0,s0,a0
{
    e8867a2c:	e826                	sd	s1,16(sp)
    e8867a2e:	ec06                	sd	ra,24(sp)
	if( inSession->screenThreadPtr )
    e8867a30:	95043783          	ld	a5,-1712(s0) # 1950 <memcmp-0xe87fe6b0>
{
    e8867a34:	84aa                	mv	s1,a0
	if( inSession->screenThreadPtr )
    e8867a36:	cf91                	beqz	a5,e8867a52 <_ScreenTearDown+0x2e>
		err = AirPlayReceiverSessionScreen_SendCommand( inSession->screenSession, kAirPlayReceiverSessionScreenCommand_Quit, NULL, 0 );
    e8867a38:	94043503          	ld	a0,-1728(s0)
    e8867a3c:	4681                	li	a3,0
    e8867a3e:	4601                	li	a2,0
    e8867a40:	07100593          	li	a1,113
    e8867a44:	7a5070ef          	jal	ra,e886f9e8 <AirPlayReceiverSessionScreen_SendCommand>
		while(inSession->screenThreadRun)
    e8867a48:	95844783          	lbu	a5,-1704(s0)
    e8867a4c:	e7b5                	bnez	a5,e8867ab8 <_ScreenTearDown+0x94>
		inSession->screenThreadPtr = NULL;
    e8867a4e:	94043823          	sd	zero,-1712(s0)
	ForgetSocket( &inSession->screenSock );
    e8867a52:	6409                	lui	s0,0x2
    e8867a54:	9426                	add	s0,s0,s1
    e8867a56:	94842503          	lw	a0,-1720(s0) # 1948 <memcmp-0xe87fe6b8>
    e8867a5a:	00054763          	bltz	a0,e8867a68 <_ScreenTearDown+0x44>
    e8867a5e:	7441d0ef          	jal	ra,e88851a2 <lwip_close>
    e8867a62:	57fd                	li	a5,-1
    e8867a64:	94f42423          	sw	a5,-1720(s0)
	if( inSession->screenInitialized ) atr_ulog( kLogLevelTrace, "screen receiver torn down\n" );
    e8867a68:	6789                	lui	a5,0x2
    e8867a6a:	97a6                	add	a5,a5,s1
    e8867a6c:	9387c783          	lbu	a5,-1736(a5) # 1938 <memcmp-0xe87fe6c8>
    e8867a70:	cb9d                	beqz	a5,e8867aa6 <_ScreenTearDown+0x82>
    e8867a72:	0006d517          	auipc	a0,0x6d
    e8867a76:	7ee50513          	addi	a0,a0,2030 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867a7a:	411c                	lw	a5,0(a0)
    e8867a7c:	4779                	li	a4,30
    e8867a7e:	02f74463          	blt	a4,a5,e8867aa6 <_ScreenTearDown+0x82>
    e8867a82:	577d                	li	a4,-1
    e8867a84:	02e78e63          	beq	a5,a4,e8867ac0 <_ScreenTearDown+0x9c>
    e8867a88:	00063697          	auipc	a3,0x63
    e8867a8c:	4c868693          	addi	a3,a3,1224 # e88caf50 <kAirPlayReceiverServerClass+0x1558>
    e8867a90:	4679                	li	a2,30
    e8867a92:	00064597          	auipc	a1,0x64
    e8867a96:	b9658593          	addi	a1,a1,-1130 # e88cb628 <__PRETTY_FUNCTION__.14435>
    e8867a9a:	0006d517          	auipc	a0,0x6d
    e8867a9e:	7c650513          	addi	a0,a0,1990 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867aa2:	9d3ec0ef          	jal	ra,e8854474 <LogPrintF>
	inSession->screenInitialized = false;
    e8867aa6:	6789                	lui	a5,0x2
    e8867aa8:	94be                	add	s1,s1,a5
    e8867aaa:	92048c23          	sb	zero,-1736(s1)
}
    e8867aae:	60e2                	ld	ra,24(sp)
    e8867ab0:	6422                	ld	s0,8(sp)
    e8867ab2:	64c2                	ld	s1,16(sp)
    e8867ab4:	6105                	addi	sp,sp,32
    e8867ab6:	8082                	ret
			Sleep(1);
    e8867ab8:	4505                	li	a0,1
    e8867aba:	55c140ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e8867abe:	b769                	j	e8867a48 <_ScreenTearDown+0x24>
	if( inSession->screenInitialized ) atr_ulog( kLogLevelTrace, "screen receiver torn down\n" );
    e8867ac0:	45f9                	li	a1,30
    e8867ac2:	db0ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8867ac6:	d165                	beqz	a0,e8867aa6 <_ScreenTearDown+0x82>
    e8867ac8:	b7c1                	j	e8867a88 <_ScreenTearDown+0x64>

00000000e8867aca <_IdleStateKeepAliveStop>:
{
    e8867aca:	1101                	addi	sp,sp,-32
    e8867acc:	f891540b          	sdd	s0,s1,(sp),0,4
	require_action( IsValidSocket( inSession->keepAliveSock ), exit, err = kNotInitializedErr );
    e8867ad0:	6405                	lui	s0,0x1
    e8867ad2:	942a                	add	s0,s0,a0
{
    e8867ad4:	e84a                	sd	s2,16(sp)
    e8867ad6:	ec06                	sd	ra,24(sp)
	require_action( IsValidSocket( inSession->keepAliveSock ), exit, err = kNotInitializedErr );
    e8867ad8:	7dc42783          	lw	a5,2012(s0) # 17dc <memcmp-0xe87fe824>
{
    e8867adc:	892a                	mv	s2,a0
	require_action( IsValidSocket( inSession->keepAliveSock ), exit, err = kNotInitializedErr );
    e8867ade:	0807c963          	bltz	a5,e8867b70 <_IdleStateKeepAliveStop+0xa6>
	if( inSession->keepAliveThreadPtr )
    e8867ae2:	7f043783          	ld	a5,2032(s0)
	OSStatus		err = kNoErr;
    e8867ae6:	4481                	li	s1,0
	if( inSession->keepAliveThreadPtr )
    e8867ae8:	c385                	beqz	a5,e8867b08 <_IdleStateKeepAliveStop+0x3e>
		err = SendSelfConnectedLoopbackMessage( inSession->keepAliveCmdSock, "q", 1 );
    e8867aea:	7e442503          	lw	a0,2020(s0)
    e8867aee:	4605                	li	a2,1
    e8867af0:	00063597          	auipc	a1,0x63
    e8867af4:	e8058593          	addi	a1,a1,-384 # e88ca970 <kAirPlayReceiverServerClass+0xf78>
    e8867af8:	a43ed0ef          	jal	ra,e885553a <SendSelfConnectedLoopbackMessage>
    e8867afc:	84aa                	mv	s1,a0
		while(inSession->keepAliveThreadRun)
    e8867afe:	7f844783          	lbu	a5,2040(s0)
    e8867b02:	e3bd                	bnez	a5,e8867b68 <_IdleStateKeepAliveStop+0x9e>
		inSession->keepAliveThreadPtr = NULL;
    e8867b04:	7e043823          	sd	zero,2032(s0)
	ForgetSocket( &inSession->keepAliveCmdSock );
    e8867b08:	6785                	lui	a5,0x1
    e8867b0a:	993e                	add	s2,s2,a5
    e8867b0c:	7e492503          	lw	a0,2020(s2)
    e8867b10:	00054763          	bltz	a0,e8867b1e <_IdleStateKeepAliveStop+0x54>
    e8867b14:	68e1d0ef          	jal	ra,e88851a2 <lwip_close>
    e8867b18:	57fd                	li	a5,-1
    e8867b1a:	7ef92223          	sw	a5,2020(s2)
	if( err ) atr_ulog( kLogLevelWarning, "### Keep alive stop failed: %#m\n", err );
    e8867b1e:	cc95                	beqz	s1,e8867b5a <_IdleStateKeepAliveStop+0x90>
    e8867b20:	0006d517          	auipc	a0,0x6d
    e8867b24:	74050513          	addi	a0,a0,1856 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867b28:	411c                	lw	a5,0(a0)
    e8867b2a:	03c00713          	li	a4,60
    e8867b2e:	02f74663          	blt	a4,a5,e8867b5a <_IdleStateKeepAliveStop+0x90>
    e8867b32:	577d                	li	a4,-1
    e8867b34:	04e78263          	beq	a5,a4,e8867b78 <_IdleStateKeepAliveStop+0xae>
    e8867b38:	8726                	mv	a4,s1
    e8867b3a:	00063697          	auipc	a3,0x63
    e8867b3e:	e3e68693          	addi	a3,a3,-450 # e88ca978 <kAirPlayReceiverServerClass+0xf80>
    e8867b42:	03c00613          	li	a2,60
    e8867b46:	00064597          	auipc	a1,0x64
    e8867b4a:	9d258593          	addi	a1,a1,-1582 # e88cb518 <__PRETTY_FUNCTION__.14256>
    e8867b4e:	0006d517          	auipc	a0,0x6d
    e8867b52:	71250513          	addi	a0,a0,1810 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867b56:	91fec0ef          	jal	ra,e8854474 <LogPrintF>
}
    e8867b5a:	8526                	mv	a0,s1
    e8867b5c:	60e2                	ld	ra,24(sp)
    e8867b5e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8867b62:	6942                	ld	s2,16(sp)
    e8867b64:	6105                	addi	sp,sp,32
    e8867b66:	8082                	ret
			Sleep(1);
    e8867b68:	4505                	li	a0,1
    e8867b6a:	4ac140ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e8867b6e:	bf41                	j	e8867afe <_IdleStateKeepAliveStop+0x34>
	require_action( IsValidSocket( inSession->keepAliveSock ), exit, err = kNotInitializedErr );
    e8867b70:	74f9                	lui	s1,0xffffe
    e8867b72:	5c248493          	addi	s1,s1,1474 # ffffffffffffe5c2 <__DRAM0_INF_BASE+0xffffffff0000e5c2>
    e8867b76:	bf49                	j	e8867b08 <_IdleStateKeepAliveStop+0x3e>
	if( err ) atr_ulog( kLogLevelWarning, "### Keep alive stop failed: %#m\n", err );
    e8867b78:	03c00593          	li	a1,60
    e8867b7c:	cf6ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8867b80:	dd69                	beqz	a0,e8867b5a <_IdleStateKeepAliveStop+0x90>
    e8867b82:	bf5d                	j	e8867b38 <_IdleStateKeepAliveStop+0x6e>

00000000e8867b84 <_ForgetEventClient>:
{
    e8867b84:	1141                	addi	sp,sp,-16
    e8867b86:	e022                	sd	s0,0(sp)
    e8867b88:	e406                	sd	ra,8(sp)
    e8867b8a:	842a                	mv	s0,a0
	HTTPClientForget( &session->eventClient );
    e8867b8c:	42853503          	ld	a0,1064(a0)
    e8867b90:	c909                	beqz	a0,e8867ba2 <_ForgetEventClient+0x1e>
    e8867b92:	e89e80ef          	jal	ra,e8850a1a <HTTPClientInvalidate>
    e8867b96:	42843503          	ld	a0,1064(s0)
    e8867b9a:	db0df0ef          	jal	ra,e884714a <CFRelease>
    e8867b9e:	42043423          	sd	zero,1064(s0)
}
    e8867ba2:	60a2                	ld	ra,8(sp)
    e8867ba4:	6402                	ld	s0,0(sp)
    e8867ba6:	0141                	addi	sp,sp,16
    e8867ba8:	8082                	ret

00000000e8867baa <_RetransmitsAbortOne>:
{
    e8867baa:	7159                	addi	sp,sp,-112
    e8867bac:	e8ca                	sd	s2,80(sp)
    e8867bae:	e0d2                	sd	s4,64(sp)
    e8867bb0:	f486                	sd	ra,104(sp)
    e8867bb2:	f0a2                	sd	s0,96(sp)
    e8867bb4:	eca6                	sd	s1,88(sp)
    e8867bb6:	e4ce                	sd	s3,72(sp)
    e8867bb8:	fc56                	sd	s5,56(sp)
    e8867bba:	f85a                	sd	s6,48(sp)
    e8867bbc:	f45e                	sd	s7,40(sp)
    e8867bbe:	f062                	sd	s8,32(sp)
    e8867bc0:	ec66                	sd	s9,24(sp)
	if( ats->rtcpRTBusyList ) atr_ulog( kLogLevelInfo, "### Aborting retransmits <= %u (%s)\n", inSeq, inReason );
    e8867bc2:	39053703          	ld	a4,912(a0)
{
    e8867bc6:	892a                	mv	s2,a0
    e8867bc8:	8a2e                	mv	s4,a1
	if( ats->rtcpRTBusyList ) atr_ulog( kLogLevelInfo, "### Aborting retransmits <= %u (%s)\n", inSeq, inReason );
    e8867bca:	cf1d                	beqz	a4,e8867c08 <_RetransmitsAbortOne+0x5e>
    e8867bcc:	0006d517          	auipc	a0,0x6d
    e8867bd0:	69450513          	addi	a0,a0,1684 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867bd4:	4118                	lw	a4,0(a0)
    e8867bd6:	02800693          	li	a3,40
    e8867bda:	02e6c763          	blt	a3,a4,e8867c08 <_RetransmitsAbortOne+0x5e>
    e8867bde:	56fd                	li	a3,-1
    e8867be0:	87b2                	mv	a5,a2
    e8867be2:	06d70b63          	beq	a4,a3,e8867c58 <_RetransmitsAbortOne+0xae>
    e8867be6:	8752                	mv	a4,s4
    e8867be8:	00063697          	auipc	a3,0x63
    e8867bec:	2a068693          	addi	a3,a3,672 # e88cae88 <kAirPlayReceiverServerClass+0x1490>
    e8867bf0:	02800613          	li	a2,40
    e8867bf4:	00064597          	auipc	a1,0x64
    e8867bf8:	87c58593          	addi	a1,a1,-1924 # e88cb470 <__PRETTY_FUNCTION__.14147>
    e8867bfc:	0006d517          	auipc	a0,0x6d
    e8867c00:	66450513          	addi	a0,a0,1636 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867c04:	871ec0ef          	jal	ra,e8854474 <LogPrintF>
	nowNanos = UpNanoseconds();
    e8867c08:	000f44b7          	lui	s1,0xf4
    e8867c0c:	db8f90ef          	jal	ra,e88611c4 <UpTicks>
    e8867c10:	24048493          	addi	s1,s1,576 # f4240 <memcmp-0xe870bdc0>
    e8867c14:	029504b3          	mul	s1,a0,s1
	for( next = &ats->rtcpRTBusyList; ( curr = *next ) != NULL; )
    e8867c18:	39090993          	addi	s3,s2,912
			atr_ulog( kLogLevelVerbose, "    ### Abort retransmit %5u  T %2u  A %10llu \n", 
    e8867c1c:	0006dc97          	auipc	s9,0x6d
    e8867c20:	644c8c93          	addi	s9,s9,1604 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867c24:	4ad1                	li	s5,20
    e8867c26:	5b7d                	li	s6,-1
    e8867c28:	00063b97          	auipc	s7,0x63
    e8867c2c:	288b8b93          	addi	s7,s7,648 # e88caeb0 <kAirPlayReceiverServerClass+0x14b8>
    e8867c30:	00064c17          	auipc	s8,0x64
    e8867c34:	840c0c13          	addi	s8,s8,-1984 # e88cb470 <__PRETTY_FUNCTION__.14147>
	for( next = &ats->rtcpRTBusyList; ( curr = *next ) != NULL; )
    e8867c38:	0009b403          	ld	s0,0(s3)
    e8867c3c:	e415                	bnez	s0,e8867c68 <_RetransmitsAbortOne+0xbe>
}
    e8867c3e:	70a6                	ld	ra,104(sp)
    e8867c40:	7406                	ld	s0,96(sp)
    e8867c42:	64e6                	ld	s1,88(sp)
    e8867c44:	6946                	ld	s2,80(sp)
    e8867c46:	69a6                	ld	s3,72(sp)
    e8867c48:	6a06                	ld	s4,64(sp)
    e8867c4a:	7ae2                	ld	s5,56(sp)
    e8867c4c:	7b42                	ld	s6,48(sp)
    e8867c4e:	7ba2                	ld	s7,40(sp)
    e8867c50:	7c02                	ld	s8,32(sp)
    e8867c52:	6ce2                	ld	s9,24(sp)
    e8867c54:	6165                	addi	sp,sp,112
    e8867c56:	8082                	ret
	if( ats->rtcpRTBusyList ) atr_ulog( kLogLevelInfo, "### Aborting retransmits <= %u (%s)\n", inSeq, inReason );
    e8867c58:	02800593          	li	a1,40
    e8867c5c:	e432                	sd	a2,8(sp)
    e8867c5e:	c14ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8867c62:	67a2                	ld	a5,8(sp)
    e8867c64:	d155                	beqz	a0,e8867c08 <_RetransmitsAbortOne+0x5e>
    e8867c66:	b741                	j	e8867be6 <_RetransmitsAbortOne+0x3c>
		if( Mod16_LE( curr->seq, inSeq ) )
    e8867c68:	00845783          	lhu	a5,8(s0)
    e8867c6c:	414787bb          	subw	a5,a5,s4
    e8867c70:	3c07a78b          	ext	a5,a5,15,0
    e8867c74:	04f04563          	bgtz	a5,e8867cbe <_RetransmitsAbortOne+0x114>
			atr_ulog( kLogLevelVerbose, "    ### Abort retransmit %5u  T %2u  A %10llu \n", 
    e8867c78:	000ca783          	lw	a5,0(s9)
    e8867c7c:	02fac263          	blt	s5,a5,e8867ca0 <_RetransmitsAbortOne+0xf6>
    e8867c80:	03678963          	beq	a5,s6,e8867cb2 <_RetransmitsAbortOne+0x108>
    e8867c84:	01043803          	ld	a6,16(s0)
    e8867c88:	00a45783          	lhu	a5,10(s0)
    e8867c8c:	00845703          	lhu	a4,8(s0)
    e8867c90:	41048833          	sub	a6,s1,a6
    e8867c94:	86de                	mv	a3,s7
    e8867c96:	4651                	li	a2,20
    e8867c98:	85e2                	mv	a1,s8
    e8867c9a:	8566                	mv	a0,s9
    e8867c9c:	fd8ec0ef          	jal	ra,e8854474 <LogPrintF>
			*next = curr->next;
    e8867ca0:	601c                	ld	a5,0(s0)
    e8867ca2:	00f9b023          	sd	a5,0(s3)
			curr->next = ats->rtcpRTFreeList;
    e8867ca6:	38893783          	ld	a5,904(s2)
    e8867caa:	e01c                	sd	a5,0(s0)
			ats->rtcpRTFreeList = curr;
    e8867cac:	38893423          	sd	s0,904(s2)
			continue;
    e8867cb0:	b761                	j	e8867c38 <_RetransmitsAbortOne+0x8e>
			atr_ulog( kLogLevelVerbose, "    ### Abort retransmit %5u  T %2u  A %10llu \n", 
    e8867cb2:	45d1                	li	a1,20
    e8867cb4:	8566                	mv	a0,s9
    e8867cb6:	bbcec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8867cba:	d17d                	beqz	a0,e8867ca0 <_RetransmitsAbortOne+0xf6>
    e8867cbc:	b7e1                	j	e8867c84 <_RetransmitsAbortOne+0xda>
		next = &curr->next;
    e8867cbe:	89a2                	mv	s3,s0
    e8867cc0:	bfa5                	j	e8867c38 <_RetransmitsAbortOne+0x8e>

00000000e8867cc2 <_EventReplyTimeoutCallback>:
	require_action_quiet( me->eventPendingMessageCount > 0, exit, err = kNoErr );
    e8867cc2:	43052783          	lw	a5,1072(a0)
    e8867cc6:	08f05463          	blez	a5,e8867d4e <_EventReplyTimeoutCallback+0x8c>
{
    e8867cca:	7139                	addi	sp,sp,-64
    e8867ccc:	fc06                	sd	ra,56(sp)
    e8867cce:	f822                	sd	s0,48(sp)
	err = HTTPClientGetPeerAddress( me->eventClient, &sip, sizeof( sip ), &len );
    e8867cd0:	42853503          	ld	a0,1064(a0)
    e8867cd4:	0034                	addi	a3,sp,8
    e8867cd6:	4671                	li	a2,28
    e8867cd8:	080c                	addi	a1,sp,16
    e8867cda:	d5fe80ef          	jal	ra,e8850a38 <HTTPClientGetPeerAddress>
	require_noerr( err, exit );
    e8867cde:	ed31                	bnez	a0,e8867d3a <_EventReplyTimeoutCallback+0x78>
	sock = socket( sip.sa.sa_family, SOCK_STREAM, IPPROTO_TCP );
    e8867ce0:	01114503          	lbu	a0,17(sp)
    e8867ce4:	4619                	li	a2,6
    e8867ce6:	4585                	li	a1,1
    e8867ce8:	7391d0ef          	jal	ra,e8885c20 <lwip_socket>
    e8867cec:	842a                	mv	s0,a0
	require_action( IsValidSocket( sock ), exit, err = kUnknownErr );
    e8867cee:	04054663          	bltz	a0,e8867d3a <_EventReplyTimeoutCallback+0x78>
	atr_ulog( kLogLevelWarning, "### Waking up device\n" );
    e8867cf2:	0006d517          	auipc	a0,0x6d
    e8867cf6:	56e50513          	addi	a0,a0,1390 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867cfa:	411c                	lw	a5,0(a0)
    e8867cfc:	03c00713          	li	a4,60
    e8867d00:	02f74563          	blt	a4,a5,e8867d2a <_EventReplyTimeoutCallback+0x68>
    e8867d04:	577d                	li	a4,-1
    e8867d06:	02e78e63          	beq	a5,a4,e8867d42 <_EventReplyTimeoutCallback+0x80>
    e8867d0a:	00063697          	auipc	a3,0x63
    e8867d0e:	82e68693          	addi	a3,a3,-2002 # e88ca538 <kAirPlayReceiverServerClass+0xb40>
    e8867d12:	03c00613          	li	a2,60
    e8867d16:	00063597          	auipc	a1,0x63
    e8867d1a:	48a58593          	addi	a1,a1,1162 # e88cb1a0 <__PRETTY_FUNCTION__.13555>
    e8867d1e:	0006d517          	auipc	a0,0x6d
    e8867d22:	54250513          	addi	a0,a0,1346 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867d26:	f4eec0ef          	jal	ra,e8854474 <LogPrintF>
	err = SocketConnect( sock, &sip, connectTimeoutSec );
    e8867d2a:	4651                	li	a2,20
    e8867d2c:	080c                	addi	a1,sp,16
    e8867d2e:	8522                	mv	a0,s0
    e8867d30:	8edee0ef          	jal	ra,e885661c <SocketConnect>
	ForgetSocket( &sock );
    e8867d34:	8522                	mv	a0,s0
    e8867d36:	46c1d0ef          	jal	ra,e88851a2 <lwip_close>
}
    e8867d3a:	70e2                	ld	ra,56(sp)
    e8867d3c:	7442                	ld	s0,48(sp)
    e8867d3e:	6121                	addi	sp,sp,64
    e8867d40:	8082                	ret
	atr_ulog( kLogLevelWarning, "### Waking up device\n" );
    e8867d42:	03c00593          	li	a1,60
    e8867d46:	b2cec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8867d4a:	d165                	beqz	a0,e8867d2a <_EventReplyTimeoutCallback+0x68>
    e8867d4c:	bf7d                	j	e8867d0a <_EventReplyTimeoutCallback+0x48>
    e8867d4e:	8082                	ret

00000000e8867d50 <_AirPlayReceiverSessionSendCommand>:
{
    e8867d50:	7179                	addi	sp,sp,-48
    e8867d52:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8867d56:	f406                	sd	ra,40(sp)
    e8867d58:	f04a                	sd	s2,32(sp)
	require_action_quiet( context->session->eventClient, exit, err = kUnsupportedErr );
    e8867d5a:	611c                	ld	a5,0(a0)
	HTTPMessageRef				msg = NULL;
    e8867d5c:	e002                	sd	zero,0(sp)
{
    e8867d5e:	84aa                	mv	s1,a0
	require_action_quiet( context->session->eventClient, exit, err = kUnsupportedErr );
    e8867d60:	4287b703          	ld	a4,1064(a5) # 1428 <memcmp-0xe87febd8>
    e8867d64:	cb5d                	beqz	a4,e8867e1a <_AirPlayReceiverSessionSendCommand+0xca>
	require_action_quiet( context->session->eventReplyTimer, exit, err = kStateErr );
    e8867d66:	4387b783          	ld	a5,1080(a5)
    e8867d6a:	cfc5                	beqz	a5,e8867e22 <_AirPlayReceiverSessionSendCommand+0xd2>
	err = HTTPMessageCreate( &msg );
    e8867d6c:	850a                	mv	a0,sp
    e8867d6e:	fede80ef          	jal	ra,e8850d5a <HTTPMessageCreate>
    e8867d72:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8867d74:	e941                	bnez	a0,e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>
	err = HTTPHeader_InitRequest( &msg->header, "POST", kAirPlayCommandPath, kAirTunesHTTPVersionStr );
    e8867d76:	6502                	ld	a0,0(sp)
    e8867d78:	00062697          	auipc	a3,0x62
    e8867d7c:	be868693          	addi	a3,a3,-1048 # e88c9960 <__PRETTY_FUNCTION__.14166+0x270>
    e8867d80:	00061617          	auipc	a2,0x61
    e8867d84:	2a060613          	addi	a2,a2,672 # e88c9020 <__PRETTY_FUNCTION__.13159+0x330>
    e8867d88:	00059597          	auipc	a1,0x59
    e8867d8c:	52058593          	addi	a1,a1,1312 # e88c12a8 <kHTTPServerClass+0xc8>
    e8867d90:	0541                	addi	a0,a0,16
    e8867d92:	fede90ef          	jal	ra,e8851d7e <HTTPHeader_InitRequest>
    e8867d96:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8867d98:	e535                	bnez	a0,e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>
	ptr = CFBinaryPlistV0Create( context->request, &len, NULL );
    e8867d9a:	6488                	ld	a0,8(s1)
    e8867d9c:	4601                	li	a2,0
    e8867d9e:	002c                	addi	a1,sp,8
    e8867da0:	a0ee20ef          	jal	ra,e8849fae <CFBinaryPlistV0Create>
    e8867da4:	862a                	mv	a2,a0
	require_action( ptr, exit, err = kUnknownErr );
    e8867da6:	c151                	beqz	a0,e8867e2a <_AirPlayReceiverSessionSendCommand+0xda>
	err = HTTPMessageSetBodyPtr( msg, kMIMEType_AppleBinaryPlist, ptr, len );
    e8867da8:	66a2                	ld	a3,8(sp)
    e8867daa:	6502                	ld	a0,0(sp)
    e8867dac:	00062597          	auipc	a1,0x62
    e8867db0:	bcc58593          	addi	a1,a1,-1076 # e88c9978 <__PRETTY_FUNCTION__.14166+0x288>
    e8867db4:	816e90ef          	jal	ra,e8850dca <HTTPMessageSetBodyPtr>
    e8867db8:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8867dba:	e529                	bnez	a0,e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>
	if( context->completion )
    e8867dbc:	689c                	ld	a5,16(s1)
    e8867dbe:	c795                	beqz	a5,e8867dea <_AirPlayReceiverSessionSendCommand+0x9a>
		CFRetain( context->session );
    e8867dc0:	6088                	ld	a0,0(s1)
    e8867dc2:	b84df0ef          	jal	ra,e8847146 <CFRetain>
		msg->userContext1 = context->session;
    e8867dc6:	6782                	ld	a5,0(sp)
    e8867dc8:	6098                	ld	a4,0(s1)
    e8867dca:	6685                	lui	a3,0x1
    e8867dcc:	97b6                	add	a5,a5,a3
    e8867dce:	9ae7b823          	sd	a4,-1616(a5)
		msg->userContext2 = (void *)(uintptr_t) context->completion;
    e8867dd2:	6898                	ld	a4,16(s1)
    e8867dd4:	9ae7bc23          	sd	a4,-1608(a5)
		msg->userContext3 = context->completionContext;
    e8867dd8:	6c98                	ld	a4,24(s1)
    e8867dda:	9ce7b023          	sd	a4,-1600(a5)
		msg->completion   = _AirPlayReceiverSessionSendCommandCompletion;
    e8867dde:	00000717          	auipc	a4,0x0
    e8867de2:	09070713          	addi	a4,a4,144 # e8867e6e <_AirPlayReceiverSessionSendCommandCompletion>
    e8867de6:	9ce7b823          	sd	a4,-1584(a5)
	err = HTTPClientSendMessage( context->session->eventClient, msg );
    e8867dea:	609c                	ld	a5,0(s1)
    e8867dec:	6582                	ld	a1,0(sp)
    e8867dee:	4287b503          	ld	a0,1064(a5)
    e8867df2:	d4be80ef          	jal	ra,e8850b3c <HTTPClientSendMessage>
    e8867df6:	842a                	mv	s0,a0
	if( err && context->completion ) CFRelease( context->session );
    e8867df8:	689c                	ld	a5,16(s1)
    e8867dfa:	cd05                	beqz	a0,e8867e32 <_AirPlayReceiverSessionSendCommand+0xe2>
    e8867dfc:	c781                	beqz	a5,e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>
    e8867dfe:	6088                	ld	a0,0(s1)
    e8867e00:	b4adf0ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( msg );
    e8867e04:	6502                	ld	a0,0(sp)
    e8867e06:	c119                	beqz	a0,e8867e0c <_AirPlayReceiverSessionSendCommand+0xbc>
    e8867e08:	b42df0ef          	jal	ra,e884714a <CFRelease>
	context->err = err;
    e8867e0c:	d080                	sw	s0,32(s1)
}
    e8867e0e:	70a2                	ld	ra,40(sp)
    e8867e10:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8867e14:	7902                	ld	s2,32(sp)
    e8867e16:	6145                	addi	sp,sp,48
    e8867e18:	8082                	ret
	require_action_quiet( context->session->eventClient, exit, err = kUnsupportedErr );
    e8867e1a:	7479                	lui	s0,0xffffe
    e8867e1c:	5b140413          	addi	s0,s0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e8867e20:	b7d5                	j	e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>
	require_action_quiet( context->session->eventReplyTimer, exit, err = kStateErr );
    e8867e22:	7479                	lui	s0,0xffffe
    e8867e24:	5cb40413          	addi	s0,s0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
    e8867e28:	bff1                	j	e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>
	require_action( ptr, exit, err = kUnknownErr );
    e8867e2a:	7479                	lui	s0,0xffffe
    e8867e2c:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8867e30:	bfd1                	j	e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>
	if( context->completion )
    e8867e32:	dbe9                	beqz	a5,e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>
		if( 0 == context->session->eventPendingMessageCount )
    e8867e34:	609c                	ld	a5,0(s1)
    e8867e36:	4307a703          	lw	a4,1072(a5)
    e8867e3a:	e31d                	bnez	a4,e8867e60 <_AirPlayReceiverSessionSendCommand+0x110>
			dispatch_source_set_timer( context->session->eventReplyTimer, dispatch_time( DISPATCH_TIME_NOW, kAirPlayEventTimeoutNS ), DISPATCH_TIME_FOREVER, kNanosecondsPerSecond );
    e8867e3c:	009505b7          	lui	a1,0x950
    e8867e40:	2f958593          	addi	a1,a1,761 # 9502f9 <memcmp-0xe7eafd07>
    e8867e44:	05aa                	slli	a1,a1,0xa
    e8867e46:	4387b903          	ld	s2,1080(a5)
    e8867e4a:	90ae70ef          	jal	ra,e884ef54 <dispatch_time>
    e8867e4e:	85aa                	mv	a1,a0
    e8867e50:	3b9ad6b7          	lui	a3,0x3b9ad
    e8867e54:	a0068693          	addi	a3,a3,-1536 # 3b9aca00 <memcmp-0xace53600>
    e8867e58:	567d                	li	a2,-1
    e8867e5a:	854a                	mv	a0,s2
    e8867e5c:	d6de70ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
		context->session->eventPendingMessageCount++;
    e8867e60:	6098                	ld	a4,0(s1)
    e8867e62:	43072783          	lw	a5,1072(a4)
    e8867e66:	2785                	addiw	a5,a5,1
    e8867e68:	42f72823          	sw	a5,1072(a4)
    e8867e6c:	bf61                	j	e8867e04 <_AirPlayReceiverSessionSendCommand+0xb4>

00000000e8867e6e <_AirPlayReceiverSessionSendCommandCompletion>:
{
    e8867e6e:	7139                	addi	sp,sp,-64
	AirPlayReceiverSessionRef const							session		= (AirPlayReceiverSessionRef) inMsg->userContext1;
    e8867e70:	6785                	lui	a5,0x1
{
    e8867e72:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8867e76:	fd31590b          	sdd	s2,s3,(sp),2,4
	AirPlayReceiverSessionRef const							session		= (AirPlayReceiverSessionRef) inMsg->userContext1;
    e8867e7a:	97aa                	add	a5,a5,a0
{
    e8867e7c:	fc06                	sd	ra,56(sp)
    e8867e7e:	f852                	sd	s4,48(sp)
	AirPlayReceiverSessionRef const							session		= (AirPlayReceiverSessionRef) inMsg->userContext1;
    e8867e80:	9b07b903          	ld	s2,-1616(a5) # 9b0 <memcmp-0xe87ff650>
	OSStatus												err = kNoErr;
    e8867e84:	c602                	sw	zero,12(sp)
{
    e8867e86:	84aa                	mv	s1,a0
	require_action_quiet( session->eventReplyTimer, exit, err = kStateErr );
    e8867e88:	43893403          	ld	s0,1080(s2)
	AirPlayReceiverSessionCommandCompletionFunc const		completion	= (AirPlayReceiverSessionCommandCompletionFunc)(uintptr_t) inMsg->userContext2;
    e8867e8c:	9b87b983          	ld	s3,-1608(a5)
	require_action_quiet( session->eventReplyTimer, exit, err = kStateErr );
    e8867e90:	ec1d                	bnez	s0,e8867ece <_AirPlayReceiverSessionSendCommandCompletion+0x60>
    e8867e92:	77f9                	lui	a5,0xffffe
    e8867e94:	5cb7879b          	addiw	a5,a5,1483
		require_action( CFGetTypeID( response ) == CFDictionaryGetTypeID(), exit, err = kTypeErr );
    e8867e98:	c63e                	sw	a5,12(sp)
	if( completion ) completion( err, err ? NULL : response, inMsg->userContext3 );
    e8867e9a:	00098b63          	beqz	s3,e8867eb0 <_AirPlayReceiverSessionSendCommandCompletion+0x42>
    e8867e9e:	4532                	lw	a0,12(sp)
    e8867ea0:	85a2                	mv	a1,s0
    e8867ea2:	c111                	beqz	a0,e8867ea6 <_AirPlayReceiverSessionSendCommandCompletion+0x38>
    e8867ea4:	4581                	li	a1,0
    e8867ea6:	6785                	lui	a5,0x1
    e8867ea8:	94be                	add	s1,s1,a5
    e8867eaa:	9c04b603          	ld	a2,-1600(s1)
    e8867eae:	9982                	jalr	s3
	CFRelease( session );
    e8867eb0:	854a                	mv	a0,s2
    e8867eb2:	a98df0ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( response );
    e8867eb6:	c401                	beqz	s0,e8867ebe <_AirPlayReceiverSessionSendCommandCompletion+0x50>
    e8867eb8:	8522                	mv	a0,s0
    e8867eba:	a90df0ef          	jal	ra,e884714a <CFRelease>
}
    e8867ebe:	70e2                	ld	ra,56(sp)
    e8867ec0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8867ec4:	7a42                	ld	s4,48(sp)
    e8867ec6:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8867eca:	6121                	addi	sp,sp,64
    e8867ecc:	8082                	ret
	session->eventPendingMessageCount--;
    e8867ece:	43092783          	lw	a5,1072(s2)
    e8867ed2:	fff7871b          	addiw	a4,a5,-1
    e8867ed6:	42e92823          	sw	a4,1072(s2)
	if( 0 < session->eventPendingMessageCount )
    e8867eda:	04e05c63          	blez	a4,e8867f32 <_AirPlayReceiverSessionSendCommandCompletion+0xc4>
		dispatch_source_set_timer( session->eventReplyTimer, dispatch_time( DISPATCH_TIME_NOW, kAirPlayEventTimeoutNS ), DISPATCH_TIME_FOREVER, kNanosecondsPerSecond );
    e8867ede:	009505b7          	lui	a1,0x950
    e8867ee2:	2f958593          	addi	a1,a1,761 # 9502f9 <memcmp-0xe7eafd07>
    e8867ee6:	05aa                	slli	a1,a1,0xa
    e8867ee8:	4501                	li	a0,0
    e8867eea:	86ae70ef          	jal	ra,e884ef54 <dispatch_time>
    e8867eee:	85aa                	mv	a1,a0
    e8867ef0:	3b9ad6b7          	lui	a3,0x3b9ad
    e8867ef4:	a0068693          	addi	a3,a3,-1536 # 3b9aca00 <memcmp-0xace53600>
    e8867ef8:	567d                	li	a2,-1
		dispatch_source_set_timer( session->eventReplyTimer, DISPATCH_TIME_FOREVER, DISPATCH_TIME_FOREVER, kNanosecondsPerSecond );
    e8867efa:	8522                	mv	a0,s0
    e8867efc:	ccde70ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
	CFDictionaryRef											response = NULL;
    e8867f00:	4401                	li	s0,0
	if( inMsg->bodyLen > 0 ) {
    e8867f02:	5204b583          	ld	a1,1312(s1)
    e8867f06:	d9d1                	beqz	a1,e8867e9a <_AirPlayReceiverSessionSendCommandCompletion+0x2c>
		response = (CFDictionaryRef)CFBinaryPlistV0CreateWithData( inMsg->bodyPtr, inMsg->bodyLen, &err );
    e8867f08:	5184b503          	ld	a0,1304(s1)
    e8867f0c:	0070                	addi	a2,sp,12
    e8867f0e:	f34e20ef          	jal	ra,e884a642 <CFBinaryPlistV0CreateWithData>
    e8867f12:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e8867f14:	47b2                	lw	a5,12(sp)
    e8867f16:	f3d1                	bnez	a5,e8867e9a <_AirPlayReceiverSessionSendCommandCompletion+0x2c>
		require_action( CFGetTypeID( response ) == CFDictionaryGetTypeID(), exit, err = kTypeErr );
    e8867f18:	a1adf0ef          	jal	ra,e8847132 <CFGetTypeID>
    e8867f1c:	00050a1b          	sext.w	s4,a0
    e8867f20:	c82df0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e8867f24:	2501                	sext.w	a0,a0
    e8867f26:	00aa0d63          	beq	s4,a0,e8867f40 <_AirPlayReceiverSessionSendCommandCompletion+0xd2>
    e8867f2a:	77f9                	lui	a5,0xffffe
    e8867f2c:	59c7879b          	addiw	a5,a5,1436
    e8867f30:	b7a5                	j	e8867e98 <_AirPlayReceiverSessionSendCommandCompletion+0x2a>
		dispatch_source_set_timer( session->eventReplyTimer, DISPATCH_TIME_FOREVER, DISPATCH_TIME_FOREVER, kNanosecondsPerSecond );
    e8867f32:	3b9ad6b7          	lui	a3,0x3b9ad
    e8867f36:	a0068693          	addi	a3,a3,-1536 # 3b9aca00 <memcmp-0xace53600>
    e8867f3a:	567d                	li	a2,-1
    e8867f3c:	55fd                	li	a1,-1
    e8867f3e:	bf75                	j	e8867efa <_AirPlayReceiverSessionSendCommandCompletion+0x8c>
		err = (OSStatus) CFDictionaryGetInt64( response, CFSTR( kAirPlayKey_Status ), NULL );
    e8867f40:	4601                	li	a2,0
    e8867f42:	00036597          	auipc	a1,0x36
    e8867f46:	06658593          	addi	a1,a1,102 # e889dfa8 <icmp6_param_problem+0xf3a>
    e8867f4a:	8522                	mv	a0,s0
    e8867f4c:	f24e40ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8867f50:	c62a                	sw	a0,12(sp)
    e8867f52:	b7a1                	j	e8867e9a <_AirPlayReceiverSessionSendCommandCompletion+0x2c>

00000000e8867f54 <_ScreenStart>:
{
    e8867f54:	7139                	addi	sp,sp,-64
    e8867f56:	fc91540b          	sdd	s0,s1,(sp),2,4
	require_action_quiet( !inSession->screenThreadPtr, exit, err = kNoErr );
    e8867f5a:	6409                	lui	s0,0x2
{
    e8867f5c:	f84a                	sd	s2,48(sp)
	require_action_quiet( !inSession->screenThreadPtr, exit, err = kNoErr );
    e8867f5e:	00850933          	add	s2,a0,s0
{
    e8867f62:	fc06                	sd	ra,56(sp)
	require_action_quiet( !inSession->screenThreadPtr, exit, err = kNoErr );
    e8867f64:	95093783          	ld	a5,-1712(s2)
    e8867f68:	4481                	li	s1,0
    e8867f6a:	eb85                	bnez	a5,e8867f9a <_ScreenStart+0x46>
    e8867f6c:	e42a                	sd	a0,8(sp)
	pthread_attr_init(&attr);
    e8867f6e:	0828                	addi	a0,sp,24
    e8867f70:	2a3130ef          	jal	ra,e887ba12 <pthread_attr_init>
	err = pthread_create( &inSession->screenThread, &attr, _ScreenThread, inSession );
    e8867f74:	94c40413          	addi	s0,s0,-1716 # 194c <memcmp-0xe87fe6b4>
    e8867f78:	66a2                	ld	a3,8(sp)
    e8867f7a:	00001617          	auipc	a2,0x1
    e8867f7e:	82260613          	addi	a2,a2,-2014 # e886879c <_ScreenThread>
    e8867f82:	082c                	addi	a1,sp,24
    e8867f84:	9436                	add	s0,s0,a3
    e8867f86:	8522                	mv	a0,s0
    e8867f88:	2bd130ef          	jal	ra,e887ba44 <pthread_create>
    e8867f8c:	84aa                	mv	s1,a0
	pthread_attr_destroy(&attr);
    e8867f8e:	0828                	addi	a0,sp,24
    e8867f90:	297130ef          	jal	ra,e887ba26 <pthread_attr_destroy>
	require_noerr( err, exit );
    e8867f94:	e085                	bnez	s1,e8867fb4 <_ScreenStart+0x60>
	inSession->screenThreadPtr = &inSession->screenThread;
    e8867f96:	94893823          	sd	s0,-1712(s2)
}
    e8867f9a:	8526                	mv	a0,s1
    e8867f9c:	70e2                	ld	ra,56(sp)
    e8867f9e:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8867fa2:	7942                	ld	s2,48(sp)
    e8867fa4:	6121                	addi	sp,sp,64
    e8867fa6:	8082                	ret
	if( err ) atr_ulog( kLogLevelWarning, "### screen start failed: %#m\n", err );
    e8867fa8:	03c00593          	li	a1,60
    e8867fac:	8c6ec0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8867fb0:	d56d                	beqz	a0,e8867f9a <_ScreenStart+0x46>
    e8867fb2:	a829                	j	e8867fcc <_ScreenStart+0x78>
    e8867fb4:	0006d517          	auipc	a0,0x6d
    e8867fb8:	2ac50513          	addi	a0,a0,684 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867fbc:	411c                	lw	a5,0(a0)
    e8867fbe:	03c00713          	li	a4,60
    e8867fc2:	fcf74ce3          	blt	a4,a5,e8867f9a <_ScreenStart+0x46>
    e8867fc6:	577d                	li	a4,-1
    e8867fc8:	fee780e3          	beq	a5,a4,e8867fa8 <_ScreenStart+0x54>
    e8867fcc:	8726                	mv	a4,s1
    e8867fce:	00063697          	auipc	a3,0x63
    e8867fd2:	f6268693          	addi	a3,a3,-158 # e88caf30 <kAirPlayReceiverServerClass+0x1538>
    e8867fd6:	03c00613          	li	a2,60
    e8867fda:	00063597          	auipc	a1,0x63
    e8867fde:	65e58593          	addi	a1,a1,1630 # e88cb638 <__PRETTY_FUNCTION__.14443>
    e8867fe2:	0006d517          	auipc	a0,0x6d
    e8867fe6:	27e50513          	addi	a0,a0,638 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8867fea:	c8aec0ef          	jal	ra,e8854474 <LogPrintF>
    e8867fee:	b775                	j	e8867f9a <_ScreenStart+0x46>

00000000e8867ff0 <_AudioDecoderInitialize>:
{
    e8867ff0:	711d                	addi	sp,sp,-96
    e8867ff2:	ec86                	sd	ra,88(sp)
	else if( inSession->compressionType == kAirPlayCompressionType_AAC_LC )
    e8867ff4:	12052883          	lw	a7,288(a0)
    e8867ff8:	4791                	li	a5,4
    e8867ffa:	06f89363          	bne	a7,a5,e8868060 <_AudioDecoderInitialize+0x70>
		ASBD_FillAAC_LC( &inputFormat, ctx->sampleRate, ctx->channels );
    e8867ffe:	616167b7          	lui	a5,0x61616
    e8868002:	3207879b          	addiw	a5,a5,800
    e8868006:	5bc52683          	lw	a3,1468(a0)
    e886800a:	c23e                	sw	a5,4(sp)
    e886800c:	40000793          	li	a5,1024
    e8868010:	e83e                	sd	a5,16(sp)
	ASBD_FillPCM( &outputFormat, ctx->sampleRate, ctx->bitsPerSample, ctx->bitsPerSample, ctx->channels );
    e8868012:	00062797          	auipc	a5,0x62
    e8868016:	19678793          	addi	a5,a5,406 # e88ca1a8 <kAirPlayReceiverServerClass+0x7b0>
    e886801a:	639c                	ld	a5,0(a5)
		ASBD_FillAAC_LC( &inputFormat, ctx->sampleRate, ctx->channels );
    e886801c:	c036                	sw	a3,0(sp)
	ASBD_FillPCM( &outputFormat, ctx->sampleRate, ctx->bitsPerSample, ctx->bitsPerSample, ctx->channels );
    e886801e:	d436                	sw	a3,40(sp)
    e8868020:	5cc52683          	lw	a3,1484(a0)
		ASBD_FillAAC_LC( &inputFormat, ctx->sampleRate, ctx->channels );
    e8868024:	5c052703          	lw	a4,1472(a0)
	ASBD_FillPCM( &outputFormat, ctx->sampleRate, ctx->bitsPerSample, ctx->bitsPerSample, ctx->channels );
    e8868028:	02f13623          	sd	a5,44(sp)
    e886802c:	0036d79b          	srliw	a5,a3,0x3
    e8868030:	02e787bb          	mulw	a5,a5,a4
    e8868034:	4605                	li	a2,1
    e8868036:	dc32                	sw	a2,56(sp)
	err = AudioConverterNew( &inputFormat, &outputFormat, &inSession->audioConverter );
    e8868038:	6609                	lui	a2,0x2
    e886803a:	8c060613          	addi	a2,a2,-1856 # 18c0 <memcmp-0xe87fe740>
    e886803e:	962a                	add	a2,a2,a0
    e8868040:	102c                	addi	a1,sp,40
    e8868042:	850a                	mv	a0,sp
		ASBD_FillAAC_LC( &inputFormat, ctx->sampleRate, ctx->channels );
    e8868044:	e402                	sd	zero,8(sp)
    e8868046:	cc3a                	sw	a4,24(sp)
    e8868048:	00013e23          	sd	zero,28(sp)
	ASBD_FillPCM( &outputFormat, ctx->sampleRate, ctx->bitsPerSample, ctx->bitsPerSample, ctx->channels );
    e886804c:	da3e                	sw	a5,52(sp)
    e886804e:	de3e                	sw	a5,60(sp)
    e8868050:	c0ba                	sw	a4,64(sp)
    e8868052:	c2b6                	sw	a3,68(sp)
    e8868054:	c482                	sw	zero,72(sp)
	err = AudioConverterNew( &inputFormat, &outputFormat, &inSession->audioConverter );
    e8868056:	f76fa0ef          	jal	ra,e88627cc <AudioConverterNew>
}
    e886805a:	60e6                	ld	ra,88(sp)
    e886805c:	6125                	addi	sp,sp,96
    e886805e:	8082                	ret
	else { dlogassert( "Bad compression type: %d", inSession->compressionType ); err = kUnsupportedErr; goto exit; }
    e8868060:	6705                	lui	a4,0x1
    e8868062:	4501                	li	a0,0
    e8868064:	00062817          	auipc	a6,0x62
    e8868068:	14c80813          	addi	a6,a6,332 # e88ca1b0 <kAirPlayReceiverServerClass+0x7b8>
    e886806c:	00063797          	auipc	a5,0x63
    e8868070:	5ec78793          	addi	a5,a5,1516 # e88cb658 <__PRETTY_FUNCTION__.14485>
    e8868074:	22970713          	addi	a4,a4,553 # 1229 <memcmp-0xe87fedd7>
    e8868078:	00062697          	auipc	a3,0x62
    e886807c:	15868693          	addi	a3,a3,344 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e8868080:	4601                	li	a2,0
    e8868082:	4581                	li	a1,0
    e8868084:	b44e60ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8868088:	7579                	lui	a0,0xffffe
    e886808a:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e886808e:	b7f1                	j	e886805a <_AudioDecoderInitialize+0x6a>

00000000e8868090 <_MainAltAudioThread>:
{
    e8868090:	7155                	addi	sp,sp,-208
    e8868092:	e586                	sd	ra,200(sp)
    e8868094:	e1a2                	sd	s0,192(sp)
    e8868096:	f54e                	sd	s3,168(sp)
    e8868098:	fd26                	sd	s1,184(sp)
    e886809a:	f94a                	sd	s2,176(sp)
    e886809c:	f152                	sd	s4,160(sp)
    e886809e:	ed56                	sd	s5,152(sp)
    e88680a0:	e95a                	sd	s6,144(sp)
    e88680a2:	e55e                	sd	s7,136(sp)
    e88680a4:	e162                	sd	s8,128(sp)
    e88680a6:	fce6                	sd	s9,120(sp)
    e88680a8:	f8ea                	sd	s10,112(sp)
    e88680aa:	f4ee                	sd	s11,104(sp)
	ctx->threadRun = true;
    e88680ac:	4785                	li	a5,1
    e88680ae:	02f50c23          	sb	a5,56(a0)
{
    e88680b2:	842a                	mv	s0,a0
	SocketRef const							dataSock	= ctx->dataSock;
    e88680b4:	02452a03          	lw	s4,36(a0)
	SocketRef const							cmdSock		= ctx->cmdSock;
    e88680b8:	02052903          	lw	s2,32(a0)
	pthread_setname_np_compat( "AirPlayAudioReceiver" );
    e88680bc:	13f130ef          	jal	ra,e887b9fa <pthread_self>
    e88680c0:	2501                	sext.w	a0,a0
    e88680c2:	00063597          	auipc	a1,0x63
    e88680c6:	be658593          	addi	a1,a1,-1050 # e88caca8 <kAirPlayReceiverServerClass+0x12b0>
    e88680ca:	50b130ef          	jal	ra,e887bdd4 <pthread_setname_np>
    atr_ulog( kLogLevelTrace, "MainAltAudio thread starting\n" );
    e88680ce:	0006d997          	auipc	s3,0x6d
    e88680d2:	19298993          	addi	s3,s3,402 # e88d5260 <gLogCategory_AirPlayReceiverCore>
	SetCurrentThreadPriority( kAirPlayThreadPriority_AudioReceiver );
    e88680d6:	03d00513          	li	a0,61
    e88680da:	8a4f90ef          	jal	ra,e886117e <SetCurrentThreadPriority>
    atr_ulog( kLogLevelTrace, "MainAltAudio thread starting\n" );
    e88680de:	0009a783          	lw	a5,0(s3)
    e88680e2:	4779                	li	a4,30
    e88680e4:	02f74463          	blt	a4,a5,e886810c <_MainAltAudioThread+0x7c>
    e88680e8:	577d                	li	a4,-1
    e88680ea:	10e78863          	beq	a5,a4,e88681fa <_MainAltAudioThread+0x16a>
    e88680ee:	00063697          	auipc	a3,0x63
    e88680f2:	bd268693          	addi	a3,a3,-1070 # e88cacc0 <kAirPlayReceiverServerClass+0x12c8>
    e88680f6:	4679                	li	a2,30
    e88680f8:	00063597          	auipc	a1,0x63
    e88680fc:	3a858593          	addi	a1,a1,936 # e88cb4a0 <__PRETTY_FUNCTION__.14205>
    e8868100:	0006d517          	auipc	a0,0x6d
    e8868104:	16050513          	addi	a0,a0,352 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868108:	b6cec0ef          	jal	ra,e8854474 <LogPrintF>
	printf("_MainAltAudioThread start run %d\n",pthread_self());
    e886810c:	0ef130ef          	jal	ra,e887b9fa <pthread_self>
    e8868110:	0005059b          	sext.w	a1,a0
    e8868114:	00063517          	auipc	a0,0x63
    e8868118:	bcc50513          	addi	a0,a0,-1076 # e88cace0 <kAirPlayReceiverServerClass+0x12e8>
    e886811c:	1aa140ef          	jal	ra,e887c2c6 <eLIBs_printf>
	FD_ZERO( &readSet );
    e8868120:	00a4                	addi	s1,sp,72
    e8868122:	461d                	li	a2,7
    e8868124:	4581                	li	a1,0
    e8868126:	8526                	mv	a0,s1
    e8868128:	26c140ef          	jal	ra,e887c394 <eLIBs_memset>
	if( (int) cmdSock  > maxFd ) maxFd = cmdSock;
    e886812c:	012a27b3          	slt	a5,s4,s2
    e8868130:	874a                	mv	a4,s2
    e8868132:	40fa170b          	mveqz	a4,s4,a5
    e8868136:	87ba                	mv	a5,a4
    e8868138:	02079713          	slli	a4,a5,0x20
    e886813c:	00075363          	bgez	a4,e8868142 <_MainAltAudioThread+0xb2>
    e8868140:	57fd                	li	a5,-1
	maxFd += 1;
    e8868142:	2785                	addiw	a5,a5,1
    e8868144:	fc3e                	sd	a5,56(sp)
		FD_SET( dataSock, &readSet );
    e8868146:	007a7713          	andi	a4,s4,7
    e886814a:	4785                	li	a5,1
    e886814c:	00e7973b          	sllw	a4,a5,a4
    e8868150:	ec3a                	sd	a4,24(sp)
    e8868152:	1c07270b          	ext	a4,a4,7,0
    e8868156:	f43a                	sd	a4,40(sp)
		FD_SET( cmdSock,  &readSet );
    e8868158:	00797713          	andi	a4,s2,7
    e886815c:	00e797bb          	sllw	a5,a5,a4
    e8868160:	f03e                	sd	a5,32(sp)
    e8868162:	1c07a78b          	ext	a5,a5,7,0
		FD_SET( dataSock, &readSet );
    e8868166:	403a5c13          	srai	s8,s4,0x3
		FD_SET( cmdSock,  &readSet );
    e886816a:	40395b93          	srai	s7,s2,0x3
    e886816e:	f83e                	sd	a5,48(sp)
		FD_SET( dataSock, &readSet );
    e8868170:	e852                	sd	s4,16(sp)
    e8868172:	03100b13          	li	s6,49
	err = RTPJitterBufferGetFreeNode( &ctx->jitterBuffer, &node );
    e8868176:	04040c93          	addi	s9,s0,64
		require_action( len == node->pkt.len - 24, exit, err = kInternalErr );
    e886817a:	7d79                	lui	s10,0xffffe
		err = select_errno( n );
    e886817c:	7df9                	lui	s11,0xffffe
		FD_SET( dataSock, &readSet );
    e886817e:	67c2                	ld	a5,16(sp)
    e8868180:	00fb6863          	bltu	s6,a5,e8868190 <_MainAltAudioThread+0x100>
    e8868184:	8184c78b          	lrbu	a5,s1,s8,0
    e8868188:	7722                	ld	a4,40(sp)
    e886818a:	8fd9                	or	a5,a5,a4
    e886818c:	0184d78b          	srb	a5,s1,s8,0
		FD_SET( cmdSock,  &readSet );
    e8868190:	012b6863          	bltu	s6,s2,e88681a0 <_MainAltAudioThread+0x110>
    e8868194:	8174c78b          	lrbu	a5,s1,s7,0
    e8868198:	7742                	ld	a4,48(sp)
    e886819a:	8fd9                	or	a5,a5,a4
    e886819c:	0174d78b          	srb	a5,s1,s7,0
		n = select( maxFd, &readSet, NULL, NULL, NULL );
    e88681a0:	7562                	ld	a0,56(sp)
    e88681a2:	4701                	li	a4,0
    e88681a4:	4681                	li	a3,0
    e88681a6:	4601                	li	a2,0
    e88681a8:	85a6                	mv	a1,s1
    e88681aa:	3831d0ef          	jal	ra,e8885d2c <lwip_select>
		err = select_errno( n );
    e88681ae:	06a04463          	bgtz	a0,e8868216 <_MainAltAudioThread+0x186>
    e88681b2:	c939                	beqz	a0,e8868208 <_MainAltAudioThread+0x178>
    e88681b4:	0007c797          	auipc	a5,0x7c
    e88681b8:	47478793          	addi	a5,a5,1140 # e88e4628 <lwip_errno>
    e88681bc:	0007a883          	lw	a7,0(a5)
    e88681c0:	04088863          	beqz	a7,e8868210 <_MainAltAudioThread+0x180>
		if( err == EINTR ) continue;
    e88681c4:	4791                	li	a5,4
    e88681c6:	faf88ce3          	beq	a7,a5,e886817e <_MainAltAudioThread+0xee>
		if( err ) { dlogassert( "select() error: %#m", err ); usleep( 100000 ); continue; }
    e88681ca:	6705                	lui	a4,0x1
    e88681cc:	00057817          	auipc	a6,0x57
    e88681d0:	a3c80813          	addi	a6,a6,-1476 # e88bec08 <__PRETTY_FUNCTION__.8745+0x20>
    e88681d4:	00063797          	auipc	a5,0x63
    e88681d8:	2cc78793          	addi	a5,a5,716 # e88cb4a0 <__PRETTY_FUNCTION__.14205>
    e88681dc:	def70713          	addi	a4,a4,-529 # def <memcmp-0xe87ff211>
    e88681e0:	00062697          	auipc	a3,0x62
    e88681e4:	ff068693          	addi	a3,a3,-16 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e88681e8:	4601                	li	a2,0
    e88681ea:	4581                	li	a1,0
    e88681ec:	4501                	li	a0,0
    e88681ee:	9dae60ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e88681f2:	4529                	li	a0,10
    e88681f4:	623130ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e88681f8:	b759                	j	e886817e <_MainAltAudioThread+0xee>
    atr_ulog( kLogLevelTrace, "MainAltAudio thread starting\n" );
    e88681fa:	45f9                	li	a1,30
    e88681fc:	854e                	mv	a0,s3
    e88681fe:	e75eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868202:	f00505e3          	beqz	a0,e886810c <_MainAltAudioThread+0x7c>
    e8868206:	b5e5                	j	e88680ee <_MainAltAudioThread+0x5e>
		err = select_errno( n );
    e8868208:	77f9                	lui	a5,0xffffe
    e886820a:	5be78893          	addi	a7,a5,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e886820e:	bf75                	j	e88681ca <_MainAltAudioThread+0x13a>
    e8868210:	5d4d8893          	addi	a7,s11,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8868214:	bf5d                	j	e88681ca <_MainAltAudioThread+0x13a>
		if( FD_ISSET( dataSock, &readSet ) ) _MainAltAudioProcessPacket( ctx );
    e8868216:	67c2                	ld	a5,16(sp)
    e8868218:	08fb6763          	bltu	s6,a5,e88682a6 <_MainAltAudioThread+0x216>
    e886821c:	8184c78b          	lrbu	a5,s1,s8,0
    e8868220:	6762                	ld	a4,24(sp)
    e8868222:	8ff9                	and	a5,a5,a4
    e8868224:	c3c9                	beqz	a5,e88682a6 <_MainAltAudioThread+0x216>
	err = RTPJitterBufferGetFreeNode( &ctx->jitterBuffer, &node );
    e8868226:	088c                	addi	a1,sp,80
    e8868228:	8566                	mv	a0,s9
	RTPPacketNode *		node = NULL;
    e886822a:	e882                	sd	zero,80(sp)
	err = RTPJitterBufferGetFreeNode( &ctx->jitterBuffer, &node );
    e886822c:	135080ef          	jal	ra,e8870b60 <RTPJitterBufferGetFreeNode>
    e8868230:	c2aa                	sw	a0,68(sp)
	require_noerr( err, exit );
    e8868232:	e90d                	bnez	a0,e8868264 <_MainAltAudioThread+0x1d4>
	err = SocketRecvFrom( ctx->dataSock, node->pkt.pkt.bytes, sizeof( node->pkt.pkt.bytes ), &len, 
    e8868234:	65c6                	ld	a1,80(sp)
    e8868236:	5048                	lw	a0,36(s0)
    e8868238:	e402                	sd	zero,8(sp)
    e886823a:	e002                	sd	zero,0(sp)
    e886823c:	4881                	li	a7,0
    e886823e:	4801                	li	a6,0
    e8868240:	4781                	li	a5,0
    e8868242:	4701                	li	a4,0
    e8868244:	08b4                	addi	a3,sp,88
    e8868246:	5c000613          	li	a2,1472
    e886824a:	05c1                	addi	a1,a1,16
    e886824c:	922ee0ef          	jal	ra,e885636e <SocketRecvFrom>
    e8868250:	c2aa                	sw	a0,68(sp)
	require_noerr( err, exit );
    e8868252:	e909                	bnez	a0,e8868264 <_MainAltAudioThread+0x1d4>
	require_action( len >= kRTPHeaderSize, exit, err = kSizeErr );
    e8868254:	67e6                	ld	a5,88(sp)
    e8868256:	472d                	li	a4,11
    e8868258:	6ac6                	ld	s5,80(sp)
    e886825a:	0af76b63          	bltu	a4,a5,e8868310 <_MainAltAudioThread+0x280>
    e886825e:	5a9d079b          	addiw	a5,s10,1449
		require_action( len == node->pkt.len - 24, exit, err = kInternalErr );
    e8868262:	c2be                	sw	a5,68(sp)
	if( node )	RTPJitterBufferPutFreeNode( &ctx->jitterBuffer, node );
    e8868264:	65c6                	ld	a1,80(sp)
    e8868266:	c581                	beqz	a1,e886826e <_MainAltAudioThread+0x1de>
    e8868268:	8566                	mv	a0,s9
    e886826a:	145080ef          	jal	ra,e8870bae <RTPJitterBufferPutFreeNode>
	if( err )	atr_ulog( kLogLevelNotice, "### Process main audio error: %#m\n", err );
    e886826e:	4796                	lw	a5,68(sp)
    e8868270:	cb9d                	beqz	a5,e88682a6 <_MainAltAudioThread+0x216>
    e8868272:	0009a783          	lw	a5,0(s3)
    e8868276:	03200713          	li	a4,50
    e886827a:	02f74663          	blt	a4,a5,e88682a6 <_MainAltAudioThread+0x216>
    e886827e:	577d                	li	a4,-1
    e8868280:	1ae78e63          	beq	a5,a4,e886843c <_MainAltAudioThread+0x3ac>
    e8868284:	4716                	lw	a4,68(sp)
    e8868286:	00063697          	auipc	a3,0x63
    e886828a:	ac268693          	addi	a3,a3,-1342 # e88cad48 <kAirPlayReceiverServerClass+0x1350>
    e886828e:	03200613          	li	a2,50
    e8868292:	00063597          	auipc	a1,0x63
    e8868296:	22658593          	addi	a1,a1,550 # e88cb4b8 <__PRETTY_FUNCTION__.14222>
    e886829a:	0006d517          	auipc	a0,0x6d
    e886829e:	fc650513          	addi	a0,a0,-58 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e88682a2:	9d2ec0ef          	jal	ra,e8854474 <LogPrintF>
		if( FD_ISSET( cmdSock,  &readSet ) ) break; // The only event is quit so break if anything is pending.
    e88682a6:	ed2b6ce3          	bltu	s6,s2,e886817e <_MainAltAudioThread+0xee>
    e88682aa:	8174c78b          	lrbu	a5,s1,s7,0
    e88682ae:	7702                	ld	a4,32(sp)
    e88682b0:	8ff9                	and	a5,a5,a4
    e88682b2:	ec0786e3          	beqz	a5,e886817e <_MainAltAudioThread+0xee>
	atr_ulog( kLogLevelTrace, "%s audio thread exit\n", ctx->label );
    e88682b6:	0009a783          	lw	a5,0(s3)
    e88682ba:	4779                	li	a4,30
    e88682bc:	02f74563          	blt	a4,a5,e88682e6 <_MainAltAudioThread+0x256>
    e88682c0:	577d                	li	a4,-1
    e88682c2:	18e78863          	beq	a5,a4,e8868452 <_MainAltAudioThread+0x3c2>
    e88682c6:	6818                	ld	a4,16(s0)
    e88682c8:	00063697          	auipc	a3,0x63
    e88682cc:	aa868693          	addi	a3,a3,-1368 # e88cad70 <kAirPlayReceiverServerClass+0x1378>
    e88682d0:	4679                	li	a2,30
    e88682d2:	00063597          	auipc	a1,0x63
    e88682d6:	1ce58593          	addi	a1,a1,462 # e88cb4a0 <__PRETTY_FUNCTION__.14205>
    e88682da:	0006d517          	auipc	a0,0x6d
    e88682de:	f8650513          	addi	a0,a0,-122 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e88682e2:	992ec0ef          	jal	ra,e8854474 <LogPrintF>
	ctx->threadRun = false;
    e88682e6:	02040c23          	sb	zero,56(s0)
	pthread_exit(0);
    e88682ea:	4501                	li	a0,0
    e88682ec:	71e130ef          	jal	ra,e887ba0a <pthread_exit>
}
    e88682f0:	640e                	ld	s0,192(sp)
    e88682f2:	60ae                	ld	ra,200(sp)
    e88682f4:	74ea                	ld	s1,184(sp)
    e88682f6:	794a                	ld	s2,176(sp)
    e88682f8:	79aa                	ld	s3,168(sp)
    e88682fa:	7a0a                	ld	s4,160(sp)
    e88682fc:	6aea                	ld	s5,152(sp)
    e88682fe:	6b4a                	ld	s6,144(sp)
    e8868300:	6baa                	ld	s7,136(sp)
    e8868302:	6c0a                	ld	s8,128(sp)
    e8868304:	7ce6                	ld	s9,120(sp)
    e8868306:	7d46                	ld	s10,112(sp)
    e8868308:	7da6                	ld	s11,104(sp)
    e886830a:	4501                	li	a0,0
    e886830c:	6169                	addi	sp,sp,208
    e886830e:	8082                	ret
	node->pkt.len					= len - kRTPHeaderSize;
    e8868310:	17d1                	addi	a5,a5,-12
    e8868312:	5cfab823          	sd	a5,1488(s5)
	node->ptr						= node->pkt.pkt.rtp.payload;
    e8868316:	01ca8793          	addi	a5,s5,28
    e886831a:	5efab023          	sd	a5,1504(s5)
	if( ctx->outputCryptor.isValid )
    e886831e:	49044783          	lbu	a5,1168(s0)
    e8868322:	efa1                	bnez	a5,e886837a <_MainAltAudioThread+0x2ea>
	node->pkt.pkt.rtp.header.seq	= ntohs( node->pkt.pkt.rtp.header.seq );
    e8868324:	6a46                	ld	s4,80(sp)
    e8868326:	012a5503          	lhu	a0,18(s4)
    e886832a:	3f51e0ef          	jal	ra,e8886f1e <lwip_htons>
    e886832e:	00aa1923          	sh	a0,18(s4)
	node->pkt.pkt.rtp.header.ts		= ntohl( node->pkt.pkt.rtp.header.ts );
    e8868332:	6a46                	ld	s4,80(sp)
    e8868334:	014a2503          	lw	a0,20(s4)
    e8868338:	3f71e0ef          	jal	ra,e8886f2e <lwip_htonl>
    e886833c:	00aa2a23          	sw	a0,20(s4)
	node->pkt.pkt.rtp.header.ssrc	= ntohl( node->pkt.pkt.rtp.header.ssrc );
    e8868340:	6a46                	ld	s4,80(sp)
    e8868342:	018a2503          	lw	a0,24(s4)
    e8868346:	3e91e0ef          	jal	ra,e8886f2e <lwip_htonl>
    e886834a:	00aa2c23          	sw	a0,24(s4)
	if( ctx->compressionType == kAirPlayCompressionType_PCM )
    e886834e:	16042703          	lw	a4,352(s0)
    e8868352:	4785                	li	a5,1
    e8868354:	00f71a63          	bne	a4,a5,e8868368 <_MainAltAudioThread+0x2d8>
		BigToHost16Mem( node->ptr, node->pkt.len, node->ptr );
    e8868358:	67c6                	ld	a5,80(sp)
    e886835a:	5e07b603          	ld	a2,1504(a5)
    e886835e:	5d07b583          	ld	a1,1488(a5)
    e8868362:	8532                	mv	a0,a2
    e8868364:	fd8ec0ef          	jal	ra,e8854b3c <Swap16Mem>
	err = RTPJitterBufferPutBusyNode( &ctx->jitterBuffer, node );
    e8868368:	65c6                	ld	a1,80(sp)
    e886836a:	8566                	mv	a0,s9
    e886836c:	079080ef          	jal	ra,e8870be4 <RTPJitterBufferPutBusyNode>
    e8868370:	c2aa                	sw	a0,68(sp)
	require_noerr( err, exit );
    e8868372:	ee0519e3          	bnez	a0,e8868264 <_MainAltAudioThread+0x1d4>
	node = NULL;
    e8868376:	e882                	sd	zero,80(sp)
    e8868378:	b5f5                	j	e8868264 <_MainAltAudioThread+0x1d4>
	if( _CompareOSBuildVersionStrings( "13A1", ctx->session->clientOSBuildVersion ) < 0 )
    e886837a:	6010                	ld	a2,0(s0)
int _CompareOSBuildVersionStrings( const char *inVersion1, const char *inVersion2 )
{
	int result;
	int major1, major2, build1, build2;
	char minor1, minor2;
	printf("_CompareOSBuildVersionStrings*********sscanf %s,%s\n",inVersion1,inVersion2);
    e886837c:	00063597          	auipc	a1,0x63
    e8868380:	98c58593          	addi	a1,a1,-1652 # e88cad08 <kAirPlayReceiverServerClass+0x1310>
    e8868384:	00063517          	auipc	a0,0x63
    e8868388:	98c50513          	addi	a0,a0,-1652 # e88cad10 <kAirPlayReceiverServerClass+0x1318>
    e886838c:	08060613          	addi	a2,a2,128
    e8868390:	737130ef          	jal	ra,e887c2c6 <eLIBs_printf>
		_MainAltAudioGetAADFromRTPHeader( ctx, &node->pkt.pkt.rtp.header, &aad, &aadLength );
    e8868394:	0ac1                	addi	s5,s5,16
		require_action( node->pkt.len >= 24, exit, err = kUnknownErr );
    e8868396:	67c6                	ld	a5,80(sp)
    e8868398:	475d                	li	a4,23
    e886839a:	5d07b603          	ld	a2,1488(a5)
    e886839e:	00c76563          	bltu	a4,a2,e88683a8 <_MainAltAudioThread+0x318>
    e88683a2:	5d4d079b          	addiw	a5,s10,1492
    e88683a6:	bd75                	j	e8868262 <_MainAltAudioThread+0x1d2>
		chacha20_poly1305_init_64x64( &ctx->outputCryptor.state, ctx->outputCryptor.key, &node->ptr[ node->pkt.len - 8 ] );
    e88683a8:	5e07b783          	ld	a5,1504(a5)
    e88683ac:	49840a13          	addi	s4,s0,1176
    e88683b0:	1661                	addi	a2,a2,-8
    e88683b2:	963e                	add	a2,a2,a5
    e88683b4:	59840593          	addi	a1,s0,1432
    e88683b8:	8552                	mv	a0,s4
    e88683ba:	881e50ef          	jal	ra,e884dc3a <chacha20_poly1305_init_64x64>
		chacha20_poly1305_add_aad( &ctx->outputCryptor.state, aad, aadLength );
    e88683be:	4631                	li	a2,12
    e88683c0:	85d6                	mv	a1,s5
    e88683c2:	8552                	mv	a0,s4
    e88683c4:	ab1e50ef          	jal	ra,e884de74 <chacha20_poly1305_add_aad>
		len = chacha20_poly1305_decrypt( &ctx->outputCryptor.state, node->ptr, node->pkt.len - 24, node->ptr );
    e88683c8:	67c6                	ld	a5,80(sp)
    e88683ca:	8552                	mv	a0,s4
    e88683cc:	5e07b683          	ld	a3,1504(a5)
    e88683d0:	5d07b603          	ld	a2,1488(a5)
    e88683d4:	85b6                	mv	a1,a3
    e88683d6:	1621                	addi	a2,a2,-24
    e88683d8:	b2de50ef          	jal	ra,e884df04 <chacha20_poly1305_decrypt>
    e88683dc:	ecaa                	sd	a0,88(sp)
		len += chacha20_poly1305_verify( &ctx->outputCryptor.state, &node->ptr[ len ], &node->ptr[ node->pkt.len - 24 ], &err );
    e88683de:	67c6                	ld	a5,80(sp)
    e88683e0:	00d4                	addi	a3,sp,68
    e88683e2:	5d07b603          	ld	a2,1488(a5)
    e88683e6:	5e07b583          	ld	a1,1504(a5)
    e88683ea:	1621                	addi	a2,a2,-24
    e88683ec:	962e                	add	a2,a2,a1
    e88683ee:	95aa                	add	a1,a1,a0
    e88683f0:	8552                	mv	a0,s4
    e88683f2:	c13e50ef          	jal	ra,e884e004 <chacha20_poly1305_verify>
    e88683f6:	67e6                	ld	a5,88(sp)
    e88683f8:	953e                	add	a0,a0,a5
		require_noerr( err, exit );
    e88683fa:	4796                	lw	a5,68(sp)
		len += chacha20_poly1305_verify( &ctx->outputCryptor.state, &node->ptr[ len ], &node->ptr[ node->pkt.len - 24 ], &err );
    e88683fc:	ecaa                	sd	a0,88(sp)
		require_noerr( err, exit );
    e88683fe:	e60793e3          	bnez	a5,e8868264 <_MainAltAudioThread+0x1d4>
		require_action( len == node->pkt.len - 24, exit, err = kInternalErr );
    e8868402:	6746                	ld	a4,80(sp)
    e8868404:	5d073783          	ld	a5,1488(a4)
    e8868408:	17a1                	addi	a5,a5,-24
    e886840a:	00f50663          	beq	a0,a5,e8868416 <_MainAltAudioThread+0x386>
    e886840e:	77f9                	lui	a5,0xffffe
    e8868410:	5967879b          	addiw	a5,a5,1430
    e8868414:	b5b9                	j	e8868262 <_MainAltAudioThread+0x1d2>
		node->pkt.len -= 24;
    e8868416:	5cf73823          	sd	a5,1488(a4)
	for( i = 0; i < inLen; ++i )
    e886841a:	5c040693          	addi	a3,s0,1472
    e886841e:	5b840713          	addi	a4,s0,1464
		if( ++( inInteger[ i ] ) != 0 )
    e8868422:	00074783          	lbu	a5,0(a4)
    e8868426:	2785                	addiw	a5,a5,1
    e8868428:	0ff7f793          	andi	a5,a5,255
    e886842c:	00f70023          	sb	a5,0(a4)
    e8868430:	ee079ae3          	bnez	a5,e8868324 <_MainAltAudioThread+0x294>
	for( i = 0; i < inLen; ++i )
    e8868434:	0705                	addi	a4,a4,1
    e8868436:	fee696e3          	bne	a3,a4,e8868422 <_MainAltAudioThread+0x392>
    e886843a:	b5ed                	j	e8868324 <_MainAltAudioThread+0x294>
	if( err )	atr_ulog( kLogLevelNotice, "### Process main audio error: %#m\n", err );
    e886843c:	03200593          	li	a1,50
    e8868440:	0006d517          	auipc	a0,0x6d
    e8868444:	e2050513          	addi	a0,a0,-480 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868448:	c2beb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886844c:	e4050de3          	beqz	a0,e88682a6 <_MainAltAudioThread+0x216>
    e8868450:	bd15                	j	e8868284 <_MainAltAudioThread+0x1f4>
	atr_ulog( kLogLevelTrace, "%s audio thread exit\n", ctx->label );
    e8868452:	45f9                	li	a1,30
    e8868454:	0006d517          	auipc	a0,0x6d
    e8868458:	e0c50513          	addi	a0,a0,-500 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886845c:	c17eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868460:	e80503e3          	beqz	a0,e88682e6 <_MainAltAudioThread+0x256>
    e8868464:	b58d                	j	e88682c6 <_MainAltAudioThread+0x236>

00000000e8868466 <_AirPlayReceiver_SendAudio>:
{
    e8868466:	98010113          	addi	sp,sp,-1664
    e886846a:	66813823          	sd	s0,1648(sp)
    e886846e:	65513423          	sd	s5,1608(sp)
    e8868472:	66113c23          	sd	ra,1656(sp)
    e8868476:	66913423          	sd	s1,1640(sp)
    e886847a:	67213023          	sd	s2,1632(sp)
    e886847e:	65313c23          	sd	s3,1624(sp)
    e8868482:	65413823          	sd	s4,1616(sp)
    e8868486:	65613023          	sd	s6,1600(sp)
    e886848a:	63713c23          	sd	s7,1592(sp)
    e886848e:	63813823          	sd	s8,1584(sp)
    e8868492:	63913423          	sd	s9,1576(sp)
    e8868496:	63a13023          	sd	s10,1568(sp)
    e886849a:	61b13c23          	sd	s11,1560(sp)
    if( ctx->inputCryptor.isValid )
    e886849e:	62854783          	lbu	a5,1576(a0)
{
    e88684a2:	842a                	mv	s0,a0
    MirroredRingBuffer * const				ring    = ctx->inputRingRef;
    e88684a4:	5f853d03          	ld	s10,1528(a0)
    uint16_t								seq		= ctx->inputSeqNum;
    e88684a8:	62055983          	lhu	s3,1568(a0)
    uint32_t								ts		= ctx->inputTimestamp;
    e88684ac:	62452a03          	lw	s4,1572(a0)
        maxPayloadSize = kAirTunesMaxPayloadSizeUDP;
    e88684b0:	5a000a93          	li	s5,1440
    if( ctx->inputCryptor.isValid )
    e88684b4:	c399                	beqz	a5,e88684ba <_AirPlayReceiver_SendAudio+0x54>
    e88684b6:	58800a93          	li	s5,1416
    pkt.pkt.rtp.header.v_p_x_cc	= RTPHeaderInsertVersion( 0, kRTPVersion );
    e88684ba:	f8000793          	li	a5,-128
    e88684be:	04f10023          	sb	a5,64(sp)
    pkt.pkt.rtp.header.m_pt		= RTPHeaderInsertPayloadType( 0, ctx->type );
    e88684c2:	00844783          	lbu	a5,8(s0)
        err = map_socket_value_errno( inSession->audioInputSock, n == (ssize_t) len, n );
    e88684c6:	7cf9                	lui	s9,0xffffe
    pkt.pkt.rtp.header.ssrc		= 0;
    e88684c8:	c482                	sw	zero,72(sp)
    pkt.pkt.rtp.header.m_pt		= RTPHeaderInsertPayloadType( 0, ctx->type );
    e88684ca:	07f7f793          	andi	a5,a5,127
    e88684ce:	04f100a3          	sb	a5,65(sp)
        n = sendto( ctx->dataSock, (const char *) &pkt, len, 0, &ctx->inputAddr.sa, ctx->inputAddrLen );
    e88684d2:	60040793          	addi	a5,s0,1536
    e88684d6:	04c10b13          	addi	s6,sp,76
    e88684da:	e03e                	sd	a5,0(sp)
            atr_stats_ulog( kLogLevelNotice, "### Audio audio send error (%u total): %#m\n", ctx->sendErrors, err );
    e88684dc:	0006dc17          	auipc	s8,0x6d
    e88684e0:	e44c0c13          	addi	s8,s8,-444 # e88d5320 <gLogCategory_AirPlayReceiverStats>
        err = map_socket_value_errno( inSession->audioInputSock, n == (ssize_t) len, n );
    e88684e4:	5d4c8c93          	addi	s9,s9,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
        chacha20_poly1305_init_64x64( &ctx->inputCryptor.state, ctx->inputCryptor.key, ctx->inputCryptor.nonce );
    e88684e8:	63040b93          	addi	s7,s0,1584
        avail = MirroredRingBufferGetBytesUsed( ring );
    e88684ec:	018d2703          	lw	a4,24(s10) # ffffffffffffe018 <__DRAM0_INF_BASE+0xffffffff0000e018>
    e88684f0:	01cd2783          	lw	a5,28(s10)
        spp = (uint32_t)( avail / ctx->bytesPerUnit );
    e88684f4:	16c46903          	lwu	s2,364(s0)
        avail = MirroredRingBufferGetBytesUsed( ring );
    e88684f8:	9f99                	subw	a5,a5,a4
    e88684fa:	7c07b78b          	extu	a5,a5,31,0
        if( avail > maxPayloadSize ) avail = maxPayloadSize;
    e88684fe:	0157b733          	sltu	a4,a5,s5
    e8868502:	40ea978b          	mveqz	a5,s5,a4
    e8868506:	8dbe                	mv	s11,a5
        if( spp == 0 ) break;
    e8868508:	1d27e363          	bltu	a5,s2,e88686ce <_AirPlayReceiver_SendAudio+0x268>
        pkt.pkt.rtp.header.seq	= htons( seq );
    e886850c:	854e                	mv	a0,s3
    e886850e:	2111e0ef          	jal	ra,e8886f1e <lwip_htons>
    e8868512:	04a11123          	sh	a0,66(sp)
        pkt.pkt.rtp.header.ts	= htonl( ts );
    e8868516:	8552                	mv	a0,s4
    e8868518:	2171e0ef          	jal	ra,e8886f2e <lwip_htonl>
    e886851c:	c2aa                	sw	a0,68(sp)
        if( ctx->inputConverter )
    e886851e:	75843503          	ld	a0,1880(s0)
    e8868522:	018d2703          	lw	a4,24(s10)
    e8868526:	014d2683          	lw	a3,20(s10)
    e886852a:	000d3483          	ld	s1,0(s10)
    e886852e:	16050263          	beqz	a0,e8868692 <_AirPlayReceiver_SendAudio+0x22c>
            src = MirroredRingBufferGetReadPtr( ring );
    e8868532:	8f75                	and	a4,a4,a3
    e8868534:	7c07370b          	extu	a4,a4,31,0
    e8868538:	94ba                	add	s1,s1,a4
            ctx->inputDataEnd							= src + avail;
    e886853a:	01b487b3          	add	a5,s1,s11
    e886853e:	76f43423          	sd	a5,1896(s0)
            packetCount									= 1;
    e8868542:	4785                	li	a5,1
    e8868544:	ca3e                	sw	a5,20(sp)
            outputList.mNumberBuffers					= 1;
    e8868546:	d43e                	sw	a5,40(sp)
            outputList.mBuffers[ 0 ].mNumberChannels	= ctx->channels;
    e8868548:	16842783          	lw	a5,360(s0)
            ctx->inputDataPtr							= src;
    e886854c:	76943023          	sd	s1,1888(s0)
            err = AudioConverterFillComplexBuffer( ctx->inputConverter, _AudioEncoderEncodeCallback, ctx,
    e8868550:	1038                	addi	a4,sp,40
            outputList.mBuffers[ 0 ].mNumberChannels	= ctx->channels;
    e8868552:	d83e                	sw	a5,48(sp)
            err = AudioConverterFillComplexBuffer( ctx->inputConverter, _AudioEncoderEncodeCallback, ctx,
    e8868554:	0854                	addi	a3,sp,20
    e8868556:	083c                	addi	a5,sp,24
    e8868558:	8622                	mv	a2,s0
    e886855a:	fffff597          	auipc	a1,0xfffff
    e886855e:	3b658593          	addi	a1,a1,950 # e8867910 <_AudioEncoderEncodeCallback>
            outputList.mBuffers[ 0 ].mDataByteSize		= (UInt32)maxPayloadSize;
    e8868562:	da56                	sw	s5,52(sp)
            outputList.mBuffers[ 0 ].mData				= pkt.pkt.rtp.payload;
    e8868564:	fc5a                	sd	s6,56(sp)
			packetDescription.mStartOffset				= 0;
    e8868566:	ec02                	sd	zero,24(sp)
			packetDescription.mVariableFramesInPacket	= 0;
    e8868568:	f002                	sd	zero,32(sp)
            err = AudioConverterFillComplexBuffer( ctx->inputConverter, _AudioEncoderEncodeCallback, ctx,
    e886856a:	b9cfa0ef          	jal	ra,e8862906 <AudioConverterFillComplexBuffer>
            MirroredRingBufferReadAdvance( ring, (size_t)( ctx->inputDataPtr - src ) );
    e886856e:	76043703          	ld	a4,1888(s0)
            if( packetCount == 0 ) continue; // Skip if a packet wasn't produced.
    e8868572:	47d2                	lw	a5,20(sp)
            MirroredRingBufferReadAdvance( ring, (size_t)( ctx->inputDataPtr - src ) );
    e8868574:	409704b3          	sub	s1,a4,s1
    e8868578:	018d2703          	lw	a4,24(s10)
    e886857c:	9f25                	addw	a4,a4,s1
    e886857e:	00ed2c23          	sw	a4,24(s10)
            if( packetCount == 0 ) continue; // Skip if a packet wasn't produced.
    e8868582:	d7ad                	beqz	a5,e88684ec <_AirPlayReceiver_SendAudio+0x86>
            spp = packetCount * ctx->framesPerPacket;
    e8868584:	17042903          	lw	s2,368(s0)
            len = kRTPHeaderSize + packetDescription.mDataByteSize;
    e8868588:	5492                	lw	s1,36(sp)
            spp = packetCount * ctx->framesPerPacket;
    e886858a:	02f9093b          	mulw	s2,s2,a5
            len = kRTPHeaderSize + packetDescription.mDataByteSize;
    e886858e:	24b1                	addiw	s1,s1,12
    e8868590:	7c04b48b          	extu	s1,s1,31,0
    if( ctx->inputCryptor.isValid )
    e8868594:	62844703          	lbu	a4,1576(s0)
    size_t	additionalPayload = 0;
    e8868598:	4781                	li	a5,0
    if( ctx->inputCryptor.isValid )
    e886859a:	c351                	beqz	a4,e886861e <_AirPlayReceiver_SendAudio+0x1b8>
	if( _CompareOSBuildVersionStrings( "13A1", ctx->session->clientOSBuildVersion ) < 0 )
    e886859c:	6010                	ld	a2,0(s0)
	printf("_CompareOSBuildVersionStrings*********sscanf %s,%s\n",inVersion1,inVersion2);
    e886859e:	00062597          	auipc	a1,0x62
    e88685a2:	76a58593          	addi	a1,a1,1898 # e88cad08 <kAirPlayReceiverServerClass+0x1310>
    e88685a6:	00062517          	auipc	a0,0x62
    e88685aa:	76a50513          	addi	a0,a0,1898 # e88cad10 <kAirPlayReceiverServerClass+0x1318>
    e88685ae:	08060613          	addi	a2,a2,128
    e88685b2:	515130ef          	jal	ra,e887c2c6 <eLIBs_printf>
        chacha20_poly1305_init_64x64( &ctx->inputCryptor.state, ctx->inputCryptor.key, ctx->inputCryptor.nonce );
    e88685b6:	75040d93          	addi	s11,s0,1872
    e88685ba:	866e                	mv	a2,s11
    e88685bc:	73040593          	addi	a1,s0,1840
    e88685c0:	855e                	mv	a0,s7
    e88685c2:	e78e50ef          	jal	ra,e884dc3a <chacha20_poly1305_init_64x64>
        chacha20_poly1305_add_aad( &ctx->inputCryptor.state, aad, aadLength );
    e88685c6:	4631                	li	a2,12
    e88685c8:	008c                	addi	a1,sp,64
    e88685ca:	855e                	mv	a0,s7
    e88685cc:	8a9e50ef          	jal	ra,e884de74 <chacha20_poly1305_add_aad>
        len = chacha20_poly1305_encrypt( &ctx->inputCryptor.state, inPkt->pkt.rtp.payload, inPayloadSize, inPkt->pkt.rtp.payload );
    e88685d0:	86da                	mv	a3,s6
    e88685d2:	ff448613          	addi	a2,s1,-12
    e88685d6:	85da                	mv	a1,s6
    e88685d8:	855e                	mv	a0,s7
    e88685da:	8bfe50ef          	jal	ra,e884de98 <chacha20_poly1305_encrypt>
        len += chacha20_poly1305_final( &ctx->inputCryptor.state, &inPkt->pkt.rtp.payload[ len ], &inPkt->pkt.rtp.payload[ inPayloadSize ] );
    e88685de:	00c50593          	addi	a1,a0,12
    e88685e2:	009c                	addi	a5,sp,64
    e88685e4:	00978633          	add	a2,a5,s1
    e88685e8:	95be                	add	a1,a1,a5
    e88685ea:	855e                	mv	a0,s7
    e88685ec:	983e50ef          	jal	ra,e884df6e <chacha20_poly1305_final>
        memcpy( &inPkt->pkt.rtp.payload[ inPayloadSize + 16 ], ctx->inputCryptor.nonce, sizeof( ctx->inputCryptor.nonce ) );
    e88685f0:	009c                	addi	a5,sp,64
    e88685f2:	01048513          	addi	a0,s1,16
    e88685f6:	4621                	li	a2,8
    e88685f8:	85ee                	mv	a1,s11
    e88685fa:	953e                	add	a0,a0,a5
    e88685fc:	5a5130ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e8868600:	866e                	mv	a2,s11
    e8868602:	75840713          	addi	a4,s0,1880
		if( ++( inInteger[ i ] ) != 0 )
    e8868606:	00064783          	lbu	a5,0(a2)
    e886860a:	2785                	addiw	a5,a5,1
    e886860c:	0ff7f793          	andi	a5,a5,255
    e8868610:	00f60023          	sb	a5,0(a2)
    e8868614:	e781                	bnez	a5,e886861c <_AirPlayReceiver_SendAudio+0x1b6>
	for( i = 0; i < inLen; ++i )
    e8868616:	0605                	addi	a2,a2,1
    e8868618:	fec717e3          	bne	a4,a2,e8868606 <_AirPlayReceiver_SendAudio+0x1a0>
        additionalPayload = 24;
    e886861c:	47e1                	li	a5,24
        len += _AirPlayReceiver_EncryptAudio( ctx, &pkt, len - kRTPHeaderSize );
    e886861e:	94be                	add	s1,s1,a5
        n = sendto( ctx->dataSock, (const char *) &pkt, len, 0, &ctx->inputAddr.sa, ctx->inputAddrLen );
    e8868620:	6702                	ld	a4,0(sp)
    e8868622:	61c42783          	lw	a5,1564(s0)
    e8868626:	5048                	lw	a0,36(s0)
    e8868628:	8626                	mv	a2,s1
    e886862a:	4681                	li	a3,0
    e886862c:	008c                	addi	a1,sp,64
    e886862e:	3b01d0ef          	jal	ra,e88859de <lwip_sendto>
        err = map_socket_value_errno( inSession->audioInputSock, n == (ssize_t) len, n );
    e8868632:	2481                	sext.w	s1,s1
    e8868634:	04a48963          	beq	s1,a0,e8868686 <_AirPlayReceiver_SendAudio+0x220>
    e8868638:	0007c797          	auipc	a5,0x7c
    e886863c:	ff078793          	addi	a5,a5,-16 # e88e4628 <lwip_errno>
    e8868640:	439c                	lw	a5,0(a5)
            increment_saturate( ctx->sendErrors, UINT32_MAX );
    e8868642:	48842703          	lw	a4,1160(s0)
    e8868646:	56fd                	li	a3,-1
        err = map_socket_value_errno( inSession->audioInputSock, n == (ssize_t) len, n );
    e8868648:	40fc978b          	mveqz	a5,s9,a5
            increment_saturate( ctx->sendErrors, UINT32_MAX );
    e886864c:	00d70563          	beq	a4,a3,e8868656 <_AirPlayReceiver_SendAudio+0x1f0>
    e8868650:	2705                	addiw	a4,a4,1
    e8868652:	48e42423          	sw	a4,1160(s0)
            atr_stats_ulog( kLogLevelNotice, "### Audio audio send error (%u total): %#m\n", ctx->sendErrors, err );
    e8868656:	000c2703          	lw	a4,0(s8)
    e886865a:	03200693          	li	a3,50
    e886865e:	02e6c463          	blt	a3,a4,e8868686 <_AirPlayReceiver_SendAudio+0x220>
    e8868662:	56fd                	li	a3,-1
    e8868664:	04d70c63          	beq	a4,a3,e88686bc <_AirPlayReceiver_SendAudio+0x256>
    e8868668:	48842703          	lw	a4,1160(s0)
    e886866c:	00062697          	auipc	a3,0x62
    e8868670:	b0c68693          	addi	a3,a3,-1268 # e88ca178 <kAirPlayReceiverServerClass+0x780>
    e8868674:	03200613          	li	a2,50
    e8868678:	00063597          	auipc	a1,0x63
    e886867c:	bd058593          	addi	a1,a1,-1072 # e88cb248 <__PRETTY_FUNCTION__.13744>
    e8868680:	8562                	mv	a0,s8
    e8868682:	df3eb0ef          	jal	ra,e8854474 <LogPrintF>
        seq += 1;
    e8868686:	2985                	addiw	s3,s3,1
    e8868688:	3c09b98b          	extu	s3,s3,15,0
        ts  += spp;
    e886868c:	012a0a3b          	addw	s4,s4,s2
    e8868690:	bdb1                	j	e88684ec <_AirPlayReceiver_SendAudio+0x86>
        spp = (uint32_t)( avail / ctx->bytesPerUnit );
    e8868692:	032dd933          	divu	s2,s11,s2
            HostToBig16Mem( MirroredRingBufferGetReadPtr( ring ), avail, pkt.pkt.rtp.payload );
    e8868696:	8f75                	and	a4,a4,a3
    e8868698:	7c07370b          	extu	a4,a4,31,0
    e886869c:	00e48533          	add	a0,s1,a4
    e88686a0:	865a                	mv	a2,s6
    e88686a2:	85ee                	mv	a1,s11
    e88686a4:	c98ec0ef          	jal	ra,e8854b3c <Swap16Mem>
            len = kRTPHeaderSize + avail;
    e88686a8:	00cd8493          	addi	s1,s11,12
            MirroredRingBufferReadAdvance( ring, avail );
    e88686ac:	018d2703          	lw	a4,24(s10)
    e88686b0:	01b707bb          	addw	a5,a4,s11
    e88686b4:	00fd2c23          	sw	a5,24(s10)
        spp = (uint32_t)( avail / ctx->bytesPerUnit );
    e88686b8:	2901                	sext.w	s2,s2
            MirroredRingBufferReadAdvance( ring, avail );
    e88686ba:	bde9                	j	e8868594 <_AirPlayReceiver_SendAudio+0x12e>
            atr_stats_ulog( kLogLevelNotice, "### Audio audio send error (%u total): %#m\n", ctx->sendErrors, err );
    e88686bc:	03200593          	li	a1,50
    e88686c0:	8562                	mv	a0,s8
    e88686c2:	e43e                	sd	a5,8(sp)
    e88686c4:	9afeb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88686c8:	67a2                	ld	a5,8(sp)
    e88686ca:	dd55                	beqz	a0,e8868686 <_AirPlayReceiver_SendAudio+0x220>
    e88686cc:	bf71                	j	e8868668 <_AirPlayReceiver_SendAudio+0x202>
    ctx->inputSeqNum = seq;
    e88686ce:	63341023          	sh	s3,1568(s0)
    ctx->inputTimestamp = ts;
    e88686d2:	63442223          	sw	s4,1572(s0)
}
    e88686d6:	67813083          	ld	ra,1656(sp)
    e88686da:	67013403          	ld	s0,1648(sp)
    e88686de:	66813483          	ld	s1,1640(sp)
    e88686e2:	66013903          	ld	s2,1632(sp)
    e88686e6:	65813983          	ld	s3,1624(sp)
    e88686ea:	65013a03          	ld	s4,1616(sp)
    e88686ee:	64813a83          	ld	s5,1608(sp)
    e88686f2:	64013b03          	ld	s6,1600(sp)
    e88686f6:	63813b83          	ld	s7,1592(sp)
    e88686fa:	63013c03          	ld	s8,1584(sp)
    e88686fe:	62813c83          	ld	s9,1576(sp)
    e8868702:	62013d03          	ld	s10,1568(sp)
    e8868706:	61813d83          	ld	s11,1560(sp)
    e886870a:	68010113          	addi	sp,sp,1664
    e886870e:	8082                	ret

00000000e8868710 <_AudioSenderThread>:
{
    e8868710:	1141                	addi	sp,sp,-16
    e8868712:	e406                	sd	ra,8(sp)
    e8868714:	e022                	sd	s0,0(sp)
	ctx->sendAudioThreadRun = true;
    e8868716:	4785                	li	a5,1
    e8868718:	5cf50823          	sb	a5,1488(a0)
{
    e886871c:	842a                	mv	s0,a0
	pthread_setname_np_compat( "AirPlayAudioSender" );
    e886871e:	2dc130ef          	jal	ra,e887b9fa <pthread_self>
    e8868722:	2501                	sext.w	a0,a0
    e8868724:	00062597          	auipc	a1,0x62
    e8868728:	b5c58593          	addi	a1,a1,-1188 # e88ca280 <kAirPlayReceiverServerClass+0x888>
    e886872c:	6a8130ef          	jal	ra,e887bdd4 <pthread_setname_np>
	SetCurrentThreadPriority( kAirPlayThreadPriority_AudioSender );
    e8868730:	03e00513          	li	a0,62
    e8868734:	a4bf80ef          	jal	ra,e886117e <SetCurrentThreadPriority>
	printf("AudioSenderThread start run %d\n",pthread_self());
    e8868738:	2c2130ef          	jal	ra,e887b9fa <pthread_self>
    e886873c:	0005059b          	sext.w	a1,a0
    e8868740:	00062517          	auipc	a0,0x62
    e8868744:	b5850513          	addi	a0,a0,-1192 # e88ca298 <kAirPlayReceiverServerClass+0x8a0>
    e8868748:	37f130ef          	jal	ra,e887c2c6 <eLIBs_printf>
		pthread_mutex_lock( ctx->sendAudioMutexPtr );
    e886874c:	5e843503          	ld	a0,1512(s0)
    e8868750:	3ce130ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	while( !ctx->sendAudioDone )
    e8868754:	5f044783          	lbu	a5,1520(s0)
    e8868758:	5e843583          	ld	a1,1512(s0)
    e886875c:	c785                	beqz	a5,e8868784 <_AudioSenderThread+0x74>
	pthread_mutex_unlock( ctx->sendAudioMutexPtr );
    e886875e:	852e                	mv	a0,a1
    e8868760:	402130ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
    printf("AudioSenderThread exit\r\n");
    e8868764:	00062517          	auipc	a0,0x62
    e8868768:	b5450513          	addi	a0,a0,-1196 # e88ca2b8 <kAirPlayReceiverServerClass+0x8c0>
    e886876c:	35b130ef          	jal	ra,e887c2c6 <eLIBs_printf>
	ctx->sendAudioThreadRun = false;
    e8868770:	5c040823          	sb	zero,1488(s0)
	pthread_exit(0);
    e8868774:	4501                	li	a0,0
    e8868776:	294130ef          	jal	ra,e887ba0a <pthread_exit>
}
    e886877a:	6402                	ld	s0,0(sp)
    e886877c:	60a2                	ld	ra,8(sp)
    e886877e:	4501                	li	a0,0
    e8868780:	0141                	addi	sp,sp,16
    e8868782:	8082                	ret
		pthread_cond_wait( ctx->sendAudioCondPtr, ctx->sendAudioMutexPtr );
    e8868784:	5d843503          	ld	a0,1496(s0)
    e8868788:	580130ef          	jal	ra,e887bd08 <pthread_cond_wait>
		pthread_mutex_unlock( ctx->sendAudioMutexPtr );
    e886878c:	5e843503          	ld	a0,1512(s0)
    e8868790:	3d2130ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		_AirPlayReceiver_SendAudio( ctx );
    e8868794:	8522                	mv	a0,s0
    e8868796:	cd1ff0ef          	jal	ra,e8868466 <_AirPlayReceiver_SendAudio>
    e886879a:	bf4d                	j	e886874c <_AudioSenderThread+0x3c>

00000000e886879c <_ScreenThread>:
{
    e886879c:	711d                	addi	sp,sp,-96
    e886879e:	ec86                	sd	ra,88(sp)
    e88687a0:	e8a2                	sd	s0,80(sp)
    e88687a2:	e4a6                	sd	s1,72(sp)
    e88687a4:	e0ca                	sd	s2,64(sp)
    e88687a6:	fc4e                	sd	s3,56(sp)
	session->screenThreadRun = true;
    e88687a8:	6489                	lui	s1,0x2
    e88687aa:	4785                	li	a5,1
    e88687ac:	94aa                	add	s1,s1,a0
    e88687ae:	94f48c23          	sb	a5,-1704(s1) # 1958 <memcmp-0xe87fe6a8>
	SocketRef										newSock = kInvalidSocketRef;
    e88687b2:	597d                	li	s2,-1
{
    e88687b4:	842a                	mv	s0,a0
	NetSocketRef									netSock = NULL;
    e88687b6:	e802                	sd	zero,16(sp)
	SocketRef										newSock = kInvalidSocketRef;
    e88687b8:	c64a                	sw	s2,12(sp)
	pthread_setname_np_compat( "AirPlayScreenReceiver" );
    e88687ba:	240130ef          	jal	ra,e887b9fa <pthread_self>
    e88687be:	2501                	sext.w	a0,a0
    e88687c0:	00062597          	auipc	a1,0x62
    e88687c4:	7b058593          	addi	a1,a1,1968 # e88caf70 <kAirPlayReceiverServerClass+0x1578>
    e88687c8:	60c130ef          	jal	ra,e887bdd4 <pthread_setname_np>
	SetCurrentThreadPriority( kAirPlayThreadPriority_ScreenReceiver );
    e88687cc:	0006d997          	auipc	s3,0x6d
    e88687d0:	a9498993          	addi	s3,s3,-1388 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e88687d4:	03c00513          	li	a0,60
    e88687d8:	9a7f80ef          	jal	ra,e886117e <SetCurrentThreadPriority>
    printf("ScreenThread start run %d\n",pthread_self());
    e88687dc:	21e130ef          	jal	ra,e887b9fa <pthread_self>
    e88687e0:	0005059b          	sext.w	a1,a0
    e88687e4:	00062517          	auipc	a0,0x62
    e88687e8:	7a450513          	addi	a0,a0,1956 # e88caf88 <kAirPlayReceiverServerClass+0x1590>
    e88687ec:	2db130ef          	jal	ra,e887c2c6 <eLIBs_printf>
	err = SocketAccept( session->screenSock, kAirPlayConnectTimeoutSecs, &newSock, NULL );
    e88687f0:	9484a503          	lw	a0,-1720(s1)
    e88687f4:	4681                	li	a3,0
    e88687f6:	0070                	addi	a2,sp,12
    e88687f8:	45a9                	li	a1,10
    e88687fa:	9b3ed0ef          	jal	ra,e88561ac <SocketAccept>
	require_noerr( err, exit );
    e88687fe:	cd3d                	beqz	a0,e886887c <_ScreenThread+0xe0>
	CFMutableDictionaryRef							params = NULL;
    e8868800:	4901                	li	s2,0
	AirPlayReceiverSessionScreen_StopSession( session->screenSession );
    e8868802:	6789                	lui	a5,0x2
    e8868804:	97a2                	add	a5,a5,s0
    e8868806:	9407b503          	ld	a0,-1728(a5) # 1940 <memcmp-0xe87fe6c0>
    e886880a:	1da070ef          	jal	ra,e886f9e4 <AirPlayReceiverSessionScreen_StopSession>
	NetSocket_Forget( &netSock );
    e886880e:	6542                	ld	a0,16(sp)
    e8868810:	c501                	beqz	a0,e8868818 <_ScreenThread+0x7c>
    e8868812:	df7ec0ef          	jal	ra,e8855608 <NetSocket_Delete>
    e8868816:	e802                	sd	zero,16(sp)
	ForgetSocket( &newSock );
    e8868818:	4532                	lw	a0,12(sp)
    e886881a:	00054663          	bltz	a0,e8868826 <_ScreenThread+0x8a>
    e886881e:	1851c0ef          	jal	ra,e88851a2 <lwip_close>
    e8868822:	57fd                	li	a5,-1
    e8868824:	c63e                	sw	a5,12(sp)
	CFReleaseNullSafe( params );
    e8868826:	00090563          	beqz	s2,e8868830 <_ScreenThread+0x94>
    e886882a:	854a                	mv	a0,s2
    e886882c:	91fde0ef          	jal	ra,e884714a <CFRelease>
    atr_ulog( kLogLevelTrace, "Screen thread exit\n" );
    e8868830:	0009a783          	lw	a5,0(s3)
    e8868834:	4779                	li	a4,30
    e8868836:	02f74463          	blt	a4,a5,e886885e <_ScreenThread+0xc2>
    e886883a:	577d                	li	a4,-1
    e886883c:	0ee78f63          	beq	a5,a4,e886893a <_ScreenThread+0x19e>
    e8868840:	00062697          	auipc	a3,0x62
    e8868844:	78868693          	addi	a3,a3,1928 # e88cafc8 <kAirPlayReceiverServerClass+0x15d0>
    e8868848:	4679                	li	a2,30
    e886884a:	00063597          	auipc	a1,0x63
    e886884e:	dfe58593          	addi	a1,a1,-514 # e88cb648 <__PRETTY_FUNCTION__.14456>
    e8868852:	0006d517          	auipc	a0,0x6d
    e8868856:	a0e50513          	addi	a0,a0,-1522 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886885a:	c1beb0ef          	jal	ra,e8854474 <LogPrintF>
	session->screenThreadRun = false;
    e886885e:	6789                	lui	a5,0x2
    e8868860:	943e                	add	s0,s0,a5
    e8868862:	94040c23          	sb	zero,-1704(s0)
	pthread_exit(0);
    e8868866:	4501                	li	a0,0
    e8868868:	1a2130ef          	jal	ra,e887ba0a <pthread_exit>
}
    e886886c:	6446                	ld	s0,80(sp)
    e886886e:	60e6                	ld	ra,88(sp)
    e8868870:	64a6                	ld	s1,72(sp)
    e8868872:	6906                	ld	s2,64(sp)
    e8868874:	79e2                	ld	s3,56(sp)
    e8868876:	4501                	li	a0,0
    e8868878:	6125                	addi	sp,sp,96
    e886887a:	8082                	ret
	ForgetSocket( &session->screenSock ); // don't need listening socket anymore.
    e886887c:	9484a503          	lw	a0,-1720(s1)
    e8868880:	00054663          	bltz	a0,e886888c <_ScreenThread+0xf0>
    e8868884:	11f1c0ef          	jal	ra,e88851a2 <lwip_close>
    e8868888:	9524a423          	sw	s2,-1720(s1)
	atr_ulog( kLogLevelTrace, "screen receiver started\n" );
    e886888c:	0009a783          	lw	a5,0(s3)
    e8868890:	4779                	li	a4,30
    e8868892:	02f74463          	blt	a4,a5,e88688ba <_ScreenThread+0x11e>
    e8868896:	577d                	li	a4,-1
    e8868898:	08e78863          	beq	a5,a4,e8868928 <_ScreenThread+0x18c>
    e886889c:	00062697          	auipc	a3,0x62
    e88688a0:	70c68693          	addi	a3,a3,1804 # e88cafa8 <kAirPlayReceiverServerClass+0x15b0>
    e88688a4:	4679                	li	a2,30
    e88688a6:	00063597          	auipc	a1,0x63
    e88688aa:	da258593          	addi	a1,a1,-606 # e88cb648 <__PRETTY_FUNCTION__.14456>
    e88688ae:	0006d517          	auipc	a0,0x6d
    e88688b2:	9b250513          	addi	a0,a0,-1614 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e88688b6:	bbfeb0ef          	jal	ra,e8854474 <LogPrintF>
	err = NetSocket_CreateWithNative( &netSock, newSock );
    e88688ba:	45b2                	lw	a1,12(sp)
    e88688bc:	0808                	addi	a0,sp,16
    e88688be:	8bded0ef          	jal	ra,e885617a <NetSocket_CreateWithNative>
	require_noerr( err, exit );
    e88688c2:	fd1d                	bnez	a0,e8868800 <_ScreenThread+0x64>
	newSock = kInvalidSocketRef; // netSock now owns newSock.
    e88688c4:	57fd                	li	a5,-1
	AirPlayReceiverSessionScreen_SetTimeSynchronizer( session->screenSession, &timeSynchronizer );
    e88688c6:	6489                	lui	s1,0x2
	newSock = kInvalidSocketRef; // netSock now owns newSock.
    e88688c8:	c63e                	sw	a5,12(sp)
	AirPlayReceiverSessionScreen_SetTimeSynchronizer( session->screenSession, &timeSynchronizer );
    e88688ca:	94a2                	add	s1,s1,s0
	timeSynchronizer.getSynchronizedNTPTimeFunc				= _ScreenGetSynchronizedNTPTime;
    e88688cc:	00000797          	auipc	a5,0x0
    e88688d0:	08e78793          	addi	a5,a5,142 # e886895a <_ScreenGetSynchronizedNTPTime>
	AirPlayReceiverSessionScreen_SetTimeSynchronizer( session->screenSession, &timeSynchronizer );
    e88688d4:	9404b503          	ld	a0,-1728(s1) # 1940 <memcmp-0xe87fe6c0>
	timeSynchronizer.getSynchronizedNTPTimeFunc				= _ScreenGetSynchronizedNTPTime;
    e88688d8:	f03e                	sd	a5,32(sp)
	timeSynchronizer.getUpTicksNearSynchronizedNTPTimeFunc	= _ScreenGetUpTicksNearSynchronizedNTPTime;
    e88688da:	00000797          	auipc	a5,0x0
    e88688de:	07478793          	addi	a5,a5,116 # e886894e <_ScreenGetUpTicksNearSynchronizedNTPTime>
	AirPlayReceiverSessionScreen_SetTimeSynchronizer( session->screenSession, &timeSynchronizer );
    e88688e2:	082c                	addi	a1,sp,24
	timeSynchronizer.context								= session;
    e88688e4:	ec22                	sd	s0,24(sp)
	timeSynchronizer.getUpTicksNearSynchronizedNTPTimeFunc	= _ScreenGetUpTicksNearSynchronizedNTPTime;
    e88688e6:	f43e                	sd	a5,40(sp)
	AirPlayReceiverSessionScreen_SetTimeSynchronizer( session->screenSession, &timeSynchronizer );
    e88688e8:	2b3060ef          	jal	ra,e886f39a <AirPlayReceiverSessionScreen_SetTimeSynchronizer>
	err = AirPlayReceiverSessionScreen_StartSession( session->screenSession, session->delegate.context );
    e88688ec:	740c                	ld	a1,40(s0)
    e88688ee:	9404b503          	ld	a0,-1728(s1)
    e88688f2:	094070ef          	jal	ra,e886f986 <AirPlayReceiverSessionScreen_StartSession>
	require_noerr( err, exit );
    e88688f6:	f00515e3          	bnez	a0,e8868800 <_ScreenThread+0x64>
	params = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e88688fa:	00056697          	auipc	a3,0x56
    e88688fe:	ece68693          	addi	a3,a3,-306 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8868902:	00056617          	auipc	a2,0x56
    e8868906:	e9660613          	addi	a2,a2,-362 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886890a:	4581                	li	a1,0
    e886890c:	a9bde0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8868910:	892a                	mv	s2,a0
	require_action( params, exit, err = kNoMemoryErr );
    e8868912:	ee0508e3          	beqz	a0,e8868802 <_ScreenThread+0x66>
	err = AirPlayReceiverSessionScreen_ProcessFrames( session->screenSession, netSock, session->server->timeoutDataSecs );
    e8868916:	681c                	ld	a5,16(s0)
    e8868918:	65c2                	ld	a1,16(sp)
    e886891a:	9404b503          	ld	a0,-1728(s1)
    e886891e:	0a07a603          	lw	a2,160(a5)
    e8868922:	337060ef          	jal	ra,e886f458 <AirPlayReceiverSessionScreen_ProcessFrames>
exit:
    e8868926:	bdf1                	j	e8868802 <_ScreenThread+0x66>
	atr_ulog( kLogLevelTrace, "screen receiver started\n" );
    e8868928:	45f9                	li	a1,30
    e886892a:	0006d517          	auipc	a0,0x6d
    e886892e:	93650513          	addi	a0,a0,-1738 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868932:	f40eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868936:	d151                	beqz	a0,e88688ba <_ScreenThread+0x11e>
    e8868938:	b795                	j	e886889c <_ScreenThread+0x100>
    atr_ulog( kLogLevelTrace, "Screen thread exit\n" );
    e886893a:	45f9                	li	a1,30
    e886893c:	0006d517          	auipc	a0,0x6d
    e8868940:	92450513          	addi	a0,a0,-1756 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868944:	f2eeb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868948:	f0050be3          	beqz	a0,e886885e <_ScreenThread+0xc2>
    e886894c:	bdd5                	j	e8868840 <_ScreenThread+0xa4>

00000000e886894e <_ScreenGetUpTicksNearSynchronizedNTPTime>:
	return AirTunesClock_GetUpTicksNearSynchronizedNTPTime( me->airTunesClock, inNTPTime );
    e886894e:	6785                	lui	a5,0x1
    e8868950:	953e                	add	a0,a0,a5
    e8868952:	79053503          	ld	a0,1936(a0)
    e8868956:	41b0806f          	j	e8871570 <AirTunesClock_GetUpTicksNearSynchronizedNTPTime>

00000000e886895a <_ScreenGetSynchronizedNTPTime>:
	return AirTunesClock_GetSynchronizedNTPTime( me->airTunesClock );
    e886895a:	6785                	lui	a5,0x1
    e886895c:	953e                	add	a0,a0,a5
    e886895e:	79053503          	ld	a0,1936(a0)
    e8868962:	3190806f          	j	e887147a <AirTunesClock_GetSynchronizedNTPTime>

00000000e8868966 <_IdleStateKeepAliveThread>:
{
    e8868966:	7115                	addi	sp,sp,-224
    e8868968:	ed86                	sd	ra,216(sp)
    e886896a:	e1ca                	sd	s2,192(sp)
    e886896c:	fd4e                	sd	s3,184(sp)
    e886896e:	e9a2                	sd	s0,208(sp)
    e8868970:	e5a6                	sd	s1,200(sp)
    e8868972:	f952                	sd	s4,176(sp)
    e8868974:	f556                	sd	s5,168(sp)
    e8868976:	f15a                	sd	s6,160(sp)
    e8868978:	ed5e                	sd	s7,152(sp)
    e886897a:	e962                	sd	s8,144(sp)
    e886897c:	e566                	sd	s9,136(sp)
    e886897e:	e16a                	sd	s10,128(sp)
    e8868980:	fcee                	sd	s11,120(sp)
	SocketRef const						sock	= session->keepAliveSock;
    e8868982:	6785                	lui	a5,0x1
    e8868984:	97aa                	add	a5,a5,a0
	session->keepAliveThreadRun = true;
    e8868986:	4705                	li	a4,1
    e8868988:	7ee78c23          	sb	a4,2040(a5) # 17f8 <memcmp-0xe87fe808>
	SocketRef const						sock	= session->keepAliveSock;
    e886898c:	7dc7aa83          	lw	s5,2012(a5)
	SocketRef const						cmdSock	= session->keepAliveCmdSock;
    e8868990:	7e47a403          	lw	s0,2020(a5)
{
    e8868994:	892a                	mv	s2,a0
	pthread_setname_np_compat( "AirPlayKeepAliveReceiver" );
    e8868996:	064130ef          	jal	ra,e887b9fa <pthread_self>
    e886899a:	2501                	sext.w	a0,a0
    e886899c:	00062597          	auipc	a1,0x62
    e88689a0:	00458593          	addi	a1,a1,4 # e88ca9a0 <kAirPlayReceiverServerClass+0xfa8>
    e88689a4:	430130ef          	jal	ra,e887bdd4 <pthread_setname_np>
    atr_ulog( kLogLevelTrace, "Keep alive thread starting\n" );
    e88689a8:	0006d997          	auipc	s3,0x6d
    e88689ac:	8b898993          	addi	s3,s3,-1864 # e88d5260 <gLogCategory_AirPlayReceiverCore>
	SetCurrentThreadPriority( kAirPlayThreadPriority_KeepAliveReceiver );
    e88689b0:	03f00513          	li	a0,63
    e88689b4:	fcaf80ef          	jal	ra,e886117e <SetCurrentThreadPriority>
    atr_ulog( kLogLevelTrace, "Keep alive thread starting\n" );
    e88689b8:	0009a783          	lw	a5,0(s3)
    e88689bc:	4779                	li	a4,30
    e88689be:	02f74463          	blt	a4,a5,e88689e6 <_IdleStateKeepAliveThread+0x80>
    e88689c2:	577d                	li	a4,-1
    e88689c4:	18e78463          	beq	a5,a4,e8868b4c <_IdleStateKeepAliveThread+0x1e6>
    e88689c8:	00062697          	auipc	a3,0x62
    e88689cc:	ff868693          	addi	a3,a3,-8 # e88ca9c0 <kAirPlayReceiverServerClass+0xfc8>
    e88689d0:	4679                	li	a2,30
    e88689d2:	00063597          	auipc	a1,0x63
    e88689d6:	b7e58593          	addi	a1,a1,-1154 # e88cb550 <__PRETTY_FUNCTION__.14279>
    e88689da:	0006d517          	auipc	a0,0x6d
    e88689de:	88650513          	addi	a0,a0,-1914 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e88689e2:	a93eb0ef          	jal	ra,e8854474 <LogPrintF>
	printf("_IdleStateKeepAliveThread start run %d\n",pthread_self());
    e88689e6:	014130ef          	jal	ra,e887b9fa <pthread_self>
    e88689ea:	0005059b          	sext.w	a1,a0
    e88689ee:	00062517          	auipc	a0,0x62
    e88689f2:	ff250513          	addi	a0,a0,-14 # e88ca9e0 <kAirPlayReceiverServerClass+0xfe8>
    e88689f6:	0d1130ef          	jal	ra,e887c2c6 <eLIBs_printf>
	FD_ZERO( &readSet );
    e88689fa:	1804                	addi	s1,sp,48
    e88689fc:	461d                	li	a2,7
    e88689fe:	4581                	li	a1,0
    e8868a00:	8526                	mv	a0,s1
    e8868a02:	193130ef          	jal	ra,e887c394 <eLIBs_memset>
	if( (int) cmdSock > maxFd ) maxFd = cmdSock;
    e8868a06:	008aa7b3          	slt	a5,s5,s0
    e8868a0a:	8722                	mv	a4,s0
    e8868a0c:	40fa970b          	mveqz	a4,s5,a5
    e8868a10:	87ba                	mv	a5,a4
    e8868a12:	02079713          	slli	a4,a5,0x20
    e8868a16:	00075363          	bgez	a4,e8868a1c <_IdleStateKeepAliveThread+0xb6>
    e8868a1a:	57fd                	li	a5,-1
	maxFd += 1;
    e8868a1c:	2785                	addiw	a5,a5,1
		FD_SET( sock, &readSet );
    e8868a1e:	4b05                	li	s6,1
    e8868a20:	007afa13          	andi	s4,s5,7
    e8868a24:	014b1a3b          	sllw	s4,s6,s4
	maxFd += 1;
    e8868a28:	f03e                	sd	a5,32(sp)
		FD_SET( sock, &readSet );
    e8868a2a:	1c0a278b          	ext	a5,s4,7,0
    e8868a2e:	e83e                	sd	a5,16(sp)
		FD_SET( cmdSock, &readSet );
    e8868a30:	00747793          	andi	a5,s0,7
    e8868a34:	00fb1b3b          	sllw	s6,s6,a5
    e8868a38:	1c0b278b          	ext	a5,s6,7,0
		FD_SET( sock, &readSet );
    e8868a3c:	403adc13          	srai	s8,s5,0x3
		FD_SET( cmdSock, &readSet );
    e8868a40:	40345c93          	srai	s9,s0,0x3
    e8868a44:	ec3e                	sd	a5,24(sp)
		FD_SET( sock, &readSet );
    e8868a46:	8d56                	mv	s10,s5
    e8868a48:	03100b93          	li	s7,49
		err = select_errno( n );
    e8868a4c:	7df9                	lui	s11,0xffffe
		timeout.tv_sec  = kAirPlayDataTimeoutSecs;
    e8868a4e:	47f9                	li	a5,30
    e8868a50:	e0be                	sd	a5,64(sp)
		timeout.tv_usec = 0;
    e8868a52:	e482                	sd	zero,72(sp)
		FD_SET( sock, &readSet );
    e8868a54:	01abe863          	bltu	s7,s10,e8868a64 <_IdleStateKeepAliveThread+0xfe>
    e8868a58:	8184c78b          	lrbu	a5,s1,s8,0
    e8868a5c:	6742                	ld	a4,16(sp)
    e8868a5e:	8fd9                	or	a5,a5,a4
    e8868a60:	0184d78b          	srb	a5,s1,s8,0
		FD_SET( cmdSock, &readSet );
    e8868a64:	008be863          	bltu	s7,s0,e8868a74 <_IdleStateKeepAliveThread+0x10e>
    e8868a68:	8194c78b          	lrbu	a5,s1,s9,0
    e8868a6c:	6762                	ld	a4,24(sp)
    e8868a6e:	8fd9                	or	a5,a5,a4
    e8868a70:	0194d78b          	srb	a5,s1,s9,0
		n = select( maxFd, &readSet, NULL, NULL, &timeout );
    e8868a74:	7502                	ld	a0,32(sp)
    e8868a76:	0098                	addi	a4,sp,64
    e8868a78:	4681                	li	a3,0
    e8868a7a:	4601                	li	a2,0
    e8868a7c:	85a6                	mv	a1,s1
    e8868a7e:	2ae1d0ef          	jal	ra,e8885d2c <lwip_select>
		err = select_errno( n );
    e8868a82:	14a04763          	bgtz	a0,e8868bd0 <_IdleStateKeepAliveThread+0x26a>
    e8868a86:	c105                	beqz	a0,e8868aa6 <_IdleStateKeepAliveThread+0x140>
    e8868a88:	0007c797          	auipc	a5,0x7c
    e8868a8c:	ba078793          	addi	a5,a5,-1120 # e88e4628 <lwip_errno>
    e8868a90:	0007a883          	lw	a7,0(a5)
    e8868a94:	10088363          	beqz	a7,e8868b9a <_IdleStateKeepAliveThread+0x234>
		if( err == EINTR )					continue;
    e8868a98:	4791                	li	a5,4
    e8868a9a:	faf88ae3          	beq	a7,a5,e8868a4e <_IdleStateKeepAliveThread+0xe8>
		if( err == kTimeoutErr )
    e8868a9e:	5bed8793          	addi	a5,s11,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e8868aa2:	0ef89f63          	bne	a7,a5,e8868ba0 <_IdleStateKeepAliveThread+0x23a>
			atr_ulog( kLogLevelError, "Keep alive thread timeout\n" );
    e8868aa6:	0009a783          	lw	a5,0(s3)
    e8868aaa:	05a00713          	li	a4,90
    e8868aae:	02f74563          	blt	a4,a5,e8868ad8 <_IdleStateKeepAliveThread+0x172>
    e8868ab2:	577d                	li	a4,-1
    e8868ab4:	0ae78363          	beq	a5,a4,e8868b5a <_IdleStateKeepAliveThread+0x1f4>
    e8868ab8:	00062697          	auipc	a3,0x62
    e8868abc:	f5068693          	addi	a3,a3,-176 # e88caa08 <kAirPlayReceiverServerClass+0x1010>
    e8868ac0:	05a00613          	li	a2,90
    e8868ac4:	00063597          	auipc	a1,0x63
    e8868ac8:	a8c58593          	addi	a1,a1,-1396 # e88cb550 <__PRETTY_FUNCTION__.14279>
    e8868acc:	0006c517          	auipc	a0,0x6c
    e8868ad0:	79450513          	addi	a0,a0,1940 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868ad4:	9a1eb0ef          	jal	ra,e8854474 <LogPrintF>
			CFRetain( session );
    e8868ad8:	854a                	mv	a0,s2
    e8868ada:	e6cde0ef          	jal	ra,e8847146 <CFRetain>
			dispatch_async_f( session->queue, session, _IdleStateSessionDied );
    e8868ade:	00893503          	ld	a0,8(s2)
    e8868ae2:	00000617          	auipc	a2,0x0
    e8868ae6:	1a060613          	addi	a2,a2,416 # e8868c82 <_IdleStateSessionDied>
    e8868aea:	85ca                	mv	a1,s2
    e8868aec:	934e60ef          	jal	ra,e884ec20 <dispatch_async_f>
	atr_ulog( kLogLevelTrace, "Keep alive thread exit\n" );
    e8868af0:	0009a783          	lw	a5,0(s3)
    e8868af4:	4779                	li	a4,30
    e8868af6:	02f74463          	blt	a4,a5,e8868b1e <_IdleStateKeepAliveThread+0x1b8>
    e8868afa:	577d                	li	a4,-1
    e8868afc:	08e78663          	beq	a5,a4,e8868b88 <_IdleStateKeepAliveThread+0x222>
    e8868b00:	00062697          	auipc	a3,0x62
    e8868b04:	f5868693          	addi	a3,a3,-168 # e88caa58 <kAirPlayReceiverServerClass+0x1060>
    e8868b08:	4679                	li	a2,30
    e8868b0a:	00063597          	auipc	a1,0x63
    e8868b0e:	a4658593          	addi	a1,a1,-1466 # e88cb550 <__PRETTY_FUNCTION__.14279>
    e8868b12:	0006c517          	auipc	a0,0x6c
    e8868b16:	74e50513          	addi	a0,a0,1870 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868b1a:	95beb0ef          	jal	ra,e8854474 <LogPrintF>
	session->keepAliveThreadRun = false;
    e8868b1e:	6785                	lui	a5,0x1
    e8868b20:	993e                	add	s2,s2,a5
    e8868b22:	7e090c23          	sb	zero,2040(s2)
	pthread_exit(0);
    e8868b26:	4501                	li	a0,0
    e8868b28:	6e3120ef          	jal	ra,e887ba0a <pthread_exit>
}
    e8868b2c:	644e                	ld	s0,208(sp)
    e8868b2e:	60ee                	ld	ra,216(sp)
    e8868b30:	64ae                	ld	s1,200(sp)
    e8868b32:	690e                	ld	s2,192(sp)
    e8868b34:	79ea                	ld	s3,184(sp)
    e8868b36:	7a4a                	ld	s4,176(sp)
    e8868b38:	7aaa                	ld	s5,168(sp)
    e8868b3a:	7b0a                	ld	s6,160(sp)
    e8868b3c:	6bea                	ld	s7,152(sp)
    e8868b3e:	6c4a                	ld	s8,144(sp)
    e8868b40:	6caa                	ld	s9,136(sp)
    e8868b42:	6d0a                	ld	s10,128(sp)
    e8868b44:	7de6                	ld	s11,120(sp)
    e8868b46:	4501                	li	a0,0
    e8868b48:	612d                	addi	sp,sp,224
    e8868b4a:	8082                	ret
    atr_ulog( kLogLevelTrace, "Keep alive thread starting\n" );
    e8868b4c:	45f9                	li	a1,30
    e8868b4e:	854e                	mv	a0,s3
    e8868b50:	d22eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868b54:	e80509e3          	beqz	a0,e88689e6 <_IdleStateKeepAliveThread+0x80>
    e8868b58:	bd85                	j	e88689c8 <_IdleStateKeepAliveThread+0x62>
			atr_ulog( kLogLevelError, "Keep alive thread timeout\n" );
    e8868b5a:	05a00593          	li	a1,90
    e8868b5e:	0006c517          	auipc	a0,0x6c
    e8868b62:	70250513          	addi	a0,a0,1794 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868b66:	d0ceb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868b6a:	d53d                	beqz	a0,e8868ad8 <_IdleStateKeepAliveThread+0x172>
    e8868b6c:	b7b1                	j	e8868ab8 <_IdleStateKeepAliveThread+0x152>
	atr_ulog( kLogLevelInfo, "err %#m RCV UDP len %d. %02x%02x %02x%02x\n", err, len, (unsigned char)pkt[0], (unsigned char)pkt[1], (unsigned char)pkt[2], (unsigned char)pkt[3] );
    e8868b6e:	02800593          	li	a1,40
    e8868b72:	0006c517          	auipc	a0,0x6c
    e8868b76:	6ee50513          	addi	a0,a0,1774 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868b7a:	f43a                	sd	a4,40(sp)
    e8868b7c:	cf6eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868b80:	7722                	ld	a4,40(sp)
    e8868b82:	0e050763          	beqz	a0,e8868c70 <_IdleStateKeepAliveThread+0x30a>
    e8868b86:	a855                	j	e8868c3a <_IdleStateKeepAliveThread+0x2d4>
	atr_ulog( kLogLevelTrace, "Keep alive thread exit\n" );
    e8868b88:	45f9                	li	a1,30
    e8868b8a:	0006c517          	auipc	a0,0x6c
    e8868b8e:	6d650513          	addi	a0,a0,1750 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868b92:	ce0eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868b96:	d541                	beqz	a0,e8868b1e <_IdleStateKeepAliveThread+0x1b8>
    e8868b98:	b7a5                	j	e8868b00 <_IdleStateKeepAliveThread+0x19a>
		err = select_errno( n );
    e8868b9a:	77f9                	lui	a5,0xffffe
    e8868b9c:	5d478893          	addi	a7,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
		if( err )							{ dlogassert( "select() error: %#m", err ); usleep( 100000 ); continue; }
    e8868ba0:	6705                	lui	a4,0x1
    e8868ba2:	00056817          	auipc	a6,0x56
    e8868ba6:	06680813          	addi	a6,a6,102 # e88bec08 <__PRETTY_FUNCTION__.8745+0x20>
    e8868baa:	00063797          	auipc	a5,0x63
    e8868bae:	9a678793          	addi	a5,a5,-1626 # e88cb550 <__PRETTY_FUNCTION__.14279>
    e8868bb2:	efd70713          	addi	a4,a4,-259 # efd <memcmp-0xe87ff103>
    e8868bb6:	00061697          	auipc	a3,0x61
    e8868bba:	61a68693          	addi	a3,a3,1562 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e8868bbe:	4601                	li	a2,0
    e8868bc0:	4581                	li	a1,0
    e8868bc2:	4501                	li	a0,0
    e8868bc4:	805e50ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8868bc8:	4529                	li	a0,10
    e8868bca:	44c130ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e8868bce:	b541                	j	e8868a4e <_IdleStateKeepAliveThread+0xe8>
		if( FD_ISSET( sock,    &readSet ) ) _IdleStateKeepAliveReceiveBeacon( session, sock );
    e8868bd0:	0babe063          	bltu	s7,s10,e8868c70 <_IdleStateKeepAliveThread+0x30a>
    e8868bd4:	8184c78b          	lrbu	a5,s1,s8,0
    e8868bd8:	00fa77b3          	and	a5,s4,a5
    e8868bdc:	cbd1                	beqz	a5,e8868c70 <_IdleStateKeepAliveThread+0x30a>
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, NULL, NULL, NULL );
    e8868bde:	4701                	li	a4,0
    e8868be0:	e402                	sd	zero,8(sp)
    e8868be2:	e002                	sd	zero,0(sp)
    e8868be4:	4881                	li	a7,0
    e8868be6:	4801                	li	a6,0
    e8868be8:	4781                	li	a5,0
    e8868bea:	1834                	addi	a3,sp,56
    e8868bec:	02000613          	li	a2,32
    e8868bf0:	088c                	addi	a1,sp,80
    e8868bf2:	8556                	mv	a0,s5
    e8868bf4:	f7aed0ef          	jal	ra,e885636e <SocketRecvFrom>
    e8868bf8:	872a                	mv	a4,a0
	require_noerr( err, exit );
    e8868bfa:	e51d                	bnez	a0,e8868c28 <_IdleStateKeepAliveThread+0x2c2>
	if( ( len > 0 )
    e8868bfc:	77e2                	ld	a5,56(sp)
    e8868bfe:	c78d                	beqz	a5,e8868c28 <_IdleStateKeepAliveThread+0x2c2>
		&& ( kLowPowerKeepAliveVersion == LowPowerKeepAliveHeaderExtractVersion( pkt[0] ) )
    e8868c00:	05014783          	lbu	a5,80(sp)
    e8868c04:	fc67b68b          	extu	a3,a5,63,6
    e8868c08:	e285                	bnez	a3,e8868c28 <_IdleStateKeepAliveThread+0x2c2>
		&& LowPowerKeepAliveHeaderExtractSleep( pkt[0] )
    e8868c0a:	fc57b68b          	extu	a3,a5,63,5
    e8868c0e:	ce89                	beqz	a3,e8868c28 <_IdleStateKeepAliveThread+0x2c2>
		&& inSession->eventQueue )
    e8868c10:	42093503          	ld	a0,1056(s2)
    e8868c14:	c911                	beqz	a0,e8868c28 <_IdleStateKeepAliveThread+0x2c2>
		dispatch_async_f( inSession->eventQueue, inSession, _EventReplyTimeoutCallback );
    e8868c16:	fffff617          	auipc	a2,0xfffff
    e8868c1a:	0ac60613          	addi	a2,a2,172 # e8867cc2 <_EventReplyTimeoutCallback>
    e8868c1e:	85ca                	mv	a1,s2
    e8868c20:	f43a                	sd	a4,40(sp)
    e8868c22:	fffe50ef          	jal	ra,e884ec20 <dispatch_async_f>
    e8868c26:	7722                	ld	a4,40(sp)
	atr_ulog( kLogLevelInfo, "err %#m RCV UDP len %d. %02x%02x %02x%02x\n", err, len, (unsigned char)pkt[0], (unsigned char)pkt[1], (unsigned char)pkt[2], (unsigned char)pkt[3] );
    e8868c28:	0009a783          	lw	a5,0(s3)
    e8868c2c:	02800693          	li	a3,40
    e8868c30:	04f6c063          	blt	a3,a5,e8868c70 <_IdleStateKeepAliveThread+0x30a>
    e8868c34:	56fd                	li	a3,-1
    e8868c36:	f2d78ce3          	beq	a5,a3,e8868b6e <_IdleStateKeepAliveThread+0x208>
    e8868c3a:	05314783          	lbu	a5,83(sp)
    e8868c3e:	05114883          	lbu	a7,81(sp)
    e8868c42:	05014803          	lbu	a6,80(sp)
    e8868c46:	e43e                	sd	a5,8(sp)
    e8868c48:	05214783          	lbu	a5,82(sp)
    e8868c4c:	00062697          	auipc	a3,0x62
    e8868c50:	ddc68693          	addi	a3,a3,-548 # e88caa28 <kAirPlayReceiverServerClass+0x1030>
    e8868c54:	02800613          	li	a2,40
    e8868c58:	e03e                	sd	a5,0(sp)
    e8868c5a:	77e2                	ld	a5,56(sp)
    e8868c5c:	00063597          	auipc	a1,0x63
    e8868c60:	91458593          	addi	a1,a1,-1772 # e88cb570 <__PRETTY_FUNCTION__.14292>
    e8868c64:	0006c517          	auipc	a0,0x6c
    e8868c68:	5fc50513          	addi	a0,a0,1532 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868c6c:	809eb0ef          	jal	ra,e8854474 <LogPrintF>
		if( FD_ISSET( cmdSock, &readSet ) ) break; // The only event is quit so break if anything is pending.
    e8868c70:	dc8befe3          	bltu	s7,s0,e8868a4e <_IdleStateKeepAliveThread+0xe8>
    e8868c74:	8194c78b          	lrbu	a5,s1,s9,0
    e8868c78:	00fb77b3          	and	a5,s6,a5
    e8868c7c:	dc0789e3          	beqz	a5,e8868a4e <_IdleStateKeepAliveThread+0xe8>
    e8868c80:	bd85                	j	e8868af0 <_IdleStateKeepAliveThread+0x18a>

00000000e8868c82 <_IdleStateSessionDied>:
{
    e8868c82:	1141                	addi	sp,sp,-16
    e8868c84:	e022                	sd	s0,0(sp)
    e8868c86:	e406                	sd	ra,8(sp)
    e8868c88:	842a                	mv	s0,a0
	AirPlayReceiverServerControl( session->server, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), session, NULL, NULL );
    e8868c8a:	86aa                	mv	a3,a0
    e8868c8c:	6908                	ld	a0,16(a0)
    e8868c8e:	4781                	li	a5,0
    e8868c90:	4701                	li	a4,0
    e8868c92:	00035617          	auipc	a2,0x35
    e8868c96:	32660613          	addi	a2,a2,806 # e889dfb8 <icmp6_param_problem+0xf4a>
    e8868c9a:	4585                	li	a1,1
    e8868c9c:	9a9fd0ef          	jal	ra,e8866644 <AirPlayReceiverServerControl>
	CFRelease( session );
    e8868ca0:	8522                	mv	a0,s0
}
    e8868ca2:	6402                	ld	s0,0(sp)
    e8868ca4:	60a2                	ld	ra,8(sp)
    e8868ca6:	0141                	addi	sp,sp,16
	CFRelease( session );
    e8868ca8:	ca2de06f          	j	e884714a <CFRelease>

00000000e8868cac <_PerformPeriodTasks>:
{
    e8868cac:	7179                	addi	sp,sp,-48
    e8868cae:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8868cb2:	f406                	sd	ra,40(sp)
    e8868cb4:	842a                	mv	s0,a0
    e8868cb6:	f04a                	sd	s2,32(sp)
	ticks = UpTicks();
    e8868cb8:	d0cf80ef          	jal	ra,e88611c4 <UpTicks>
    e8868cbc:	84aa                	mv	s1,a0
	if( ( ats->receiveCount == ats->lastReceiveCount ) && ( ats->activityCount == ats->lastActivityCount ) )
    e8868cbe:	25842683          	lw	a3,600(s0)
    e8868cc2:	25c42783          	lw	a5,604(s0)
    e8868cc6:	26042703          	lw	a4,608(s0)
    e8868cca:	10d79763          	bne	a5,a3,e8868dd8 <_PerformPeriodTasks+0x12c>
    e8868cce:	26442603          	lw	a2,612(s0)
    e8868cd2:	10c71363          	bne	a4,a2,e8868dd8 <_PerformPeriodTasks+0x12c>
		if( ( ticks - ats->lastIdleLogTicks ) > ats->idleLogIntervalTicks )
    e8868cd6:	28843783          	ld	a5,648(s0)
		idleTicks = ticks - ats->lastActivityTicks;
    e8868cda:	26843903          	ld	s2,616(s0)
		if( ( ticks - ats->lastIdleLogTicks ) > ats->idleLogIntervalTicks )
    e8868cde:	29043703          	ld	a4,656(s0)
    e8868ce2:	40f507b3          	sub	a5,a0,a5
		idleTicks = ticks - ats->lastActivityTicks;
    e8868ce6:	41250933          	sub	s2,a0,s2
		if( ( ticks - ats->lastIdleLogTicks ) > ats->idleLogIntervalTicks )
    e8868cea:	04f77463          	bgeu	a4,a5,e8868d32 <_PerformPeriodTasks+0x86>
			atr_ulog( kLogLevelInfo, "### Idle for %llu seconds\n", idleTicks / UpTicksPerSecond() );
    e8868cee:	0006c517          	auipc	a0,0x6c
    e8868cf2:	57250513          	addi	a0,a0,1394 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868cf6:	411c                	lw	a5,0(a0)
    e8868cf8:	02800713          	li	a4,40
    e8868cfc:	02f74963          	blt	a4,a5,e8868d2e <_PerformPeriodTasks+0x82>
    e8868d00:	577d                	li	a4,-1
    e8868d02:	0ae78f63          	beq	a5,a4,e8868dc0 <_PerformPeriodTasks+0x114>
    e8868d06:	3e800713          	li	a4,1000
    e8868d0a:	02e95733          	divu	a4,s2,a4
    e8868d0e:	00062697          	auipc	a3,0x62
    e8868d12:	07a68693          	addi	a3,a3,122 # e88cad88 <kAirPlayReceiverServerClass+0x1390>
    e8868d16:	02800613          	li	a2,40
    e8868d1a:	00062597          	auipc	a1,0x62
    e8868d1e:	58658593          	addi	a1,a1,1414 # e88cb2a0 <__PRETTY_FUNCTION__.13776>
    e8868d22:	0006c517          	auipc	a0,0x6c
    e8868d26:	53e50513          	addi	a0,a0,1342 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868d2a:	f4aeb0ef          	jal	ra,e8854474 <LogPrintF>
			ats->lastIdleLogTicks = ticks;
    e8868d2e:	28943423          	sd	s1,648(s0)
		if( ( idleTicks > ats->maxIdleTicks )
    e8868d32:	27043783          	ld	a5,624(s0)
    e8868d36:	0b27f963          	bgeu	a5,s2,e8868de8 <_PerformPeriodTasks+0x13c>
				&& ( ( !_UsingIdleStateKeepAlive( me ) )
    e8868d3a:	6785                	lui	a5,0x1
    e8868d3c:	97a2                	add	a5,a5,s0
    e8868d3e:	7dc7a703          	lw	a4,2012(a5) # 17dc <memcmp-0xe87fe824>
    e8868d42:	02074063          	bltz	a4,e8868d62 <_PerformPeriodTasks+0xb6>
					|| ( _UsingIdleStateKeepAlive( me ) && me->sessionStarted &&  _UsingScreenOrAudio( me ) ) )
    e8868d46:	41e44703          	lbu	a4,1054(s0)
    e8868d4a:	cf59                	beqz	a4,e8868de8 <_PerformPeriodTasks+0x13c>
    e8868d4c:	46042703          	lw	a4,1120(s0)
    e8868d50:	eb09                	bnez	a4,e8868d62 <_PerformPeriodTasks+0xb6>
    e8868d52:	bd87a783          	lw	a5,-1064(a5)
    e8868d56:	e791                	bnez	a5,e8868d62 <_PerformPeriodTasks+0xb6>
    e8868d58:	6789                	lui	a5,0x2
    e8868d5a:	97a2                	add	a5,a5,s0
    e8868d5c:	9387c783          	lbu	a5,-1736(a5) # 1938 <memcmp-0xe87fe6c8>
    e8868d60:	c7c1                	beqz	a5,e8868de8 <_PerformPeriodTasks+0x13c>
			atr_ulog( kLogLevelError, "Idle timeout after %d seconds with no audio\n", me->server->timeoutDataSecs );
    e8868d62:	0006c517          	auipc	a0,0x6c
    e8868d66:	4fe50513          	addi	a0,a0,1278 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868d6a:	411c                	lw	a5,0(a0)
    e8868d6c:	05a00713          	li	a4,90
    e8868d70:	02f74863          	blt	a4,a5,e8868da0 <_PerformPeriodTasks+0xf4>
    e8868d74:	577d                	li	a4,-1
    e8868d76:	04e78b63          	beq	a5,a4,e8868dcc <_PerformPeriodTasks+0x120>
    e8868d7a:	681c                	ld	a5,16(s0)
    e8868d7c:	00062697          	auipc	a3,0x62
    e8868d80:	02c68693          	addi	a3,a3,44 # e88cada8 <kAirPlayReceiverServerClass+0x13b0>
    e8868d84:	05a00613          	li	a2,90
    e8868d88:	0a07a703          	lw	a4,160(a5)
    e8868d8c:	00062597          	auipc	a1,0x62
    e8868d90:	51458593          	addi	a1,a1,1300 # e88cb2a0 <__PRETTY_FUNCTION__.13776>
    e8868d94:	0006c517          	auipc	a0,0x6c
    e8868d98:	4cc50513          	addi	a0,a0,1228 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868d9c:	ed8eb0ef          	jal	ra,e8854474 <LogPrintF>
			AirPlayReceiverServerControl( me->server, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), me, NULL, NULL );
    e8868da0:	6808                	ld	a0,16(s0)
    e8868da2:	86a2                	mv	a3,s0
}
    e8868da4:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8868da8:	70a2                	ld	ra,40(sp)
    e8868daa:	7902                	ld	s2,32(sp)
			AirPlayReceiverServerControl( me->server, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), me, NULL, NULL );
    e8868dac:	4781                	li	a5,0
    e8868dae:	4701                	li	a4,0
    e8868db0:	00035617          	auipc	a2,0x35
    e8868db4:	20860613          	addi	a2,a2,520 # e889dfb8 <icmp6_param_problem+0xf4a>
    e8868db8:	4585                	li	a1,1
}
    e8868dba:	6145                	addi	sp,sp,48
			AirPlayReceiverServerControl( me->server, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), me, NULL, NULL );
    e8868dbc:	889fd06f          	j	e8866644 <AirPlayReceiverServerControl>
			atr_ulog( kLogLevelInfo, "### Idle for %llu seconds\n", idleTicks / UpTicksPerSecond() );
    e8868dc0:	02800593          	li	a1,40
    e8868dc4:	aaeeb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868dc8:	d13d                	beqz	a0,e8868d2e <_PerformPeriodTasks+0x82>
    e8868dca:	bf35                	j	e8868d06 <_PerformPeriodTasks+0x5a>
			atr_ulog( kLogLevelError, "Idle timeout after %d seconds with no audio\n", me->server->timeoutDataSecs );
    e8868dcc:	05a00593          	li	a1,90
    e8868dd0:	aa2eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868dd4:	d571                	beqz	a0,e8868da0 <_PerformPeriodTasks+0xf4>
    e8868dd6:	b755                	j	e8868d7a <_PerformPeriodTasks+0xce>
		ats->lastReceiveCount	= ats->receiveCount;
    e8868dd8:	24d42e23          	sw	a3,604(s0)
		ats->lastActivityCount	= ats->activityCount;
    e8868ddc:	26e42223          	sw	a4,612(s0)
		ats->lastActivityTicks	= ticks;
    e8868de0:	26943423          	sd	s1,616(s0)
		ats->lastIdleLogTicks	= ticks;
    e8868de4:	28943423          	sd	s1,648(s0)
	if( ticks >= me->glitchNextTicks )
    e8868de8:	6789                	lui	a5,0x2
    e8868dea:	97a2                	add	a5,a5,s0
    e8868dec:	9007b703          	ld	a4,-1792(a5) # 1900 <memcmp-0xe87fe700>
    e8868df0:	08e4e563          	bltu	s1,a4,e8868e7a <_PerformPeriodTasks+0x1ce>
		++me->glitchTotalPeriods;
    e8868df4:	8fc7a703          	lw	a4,-1796(a5)
		glitches = me->glitchTotal - me->glitchLast;
    e8868df8:	8f07a683          	lw	a3,-1808(a5)
    e8868dfc:	0006c517          	auipc	a0,0x6c
    e8868e00:	46450513          	addi	a0,a0,1124 # e88d5260 <gLogCategory_AirPlayReceiverCore>
		++me->glitchTotalPeriods;
    e8868e04:	2705                	addiw	a4,a4,1
    e8868e06:	8ee7ae23          	sw	a4,-1796(a5)
		glitches = me->glitchTotal - me->glitchLast;
    e8868e0a:	8f47a703          	lw	a4,-1804(a5)
		me->glitchLast += glitches;
    e8868e0e:	8ed7aa23          	sw	a3,-1804(a5)
		glitches = me->glitchTotal - me->glitchLast;
    e8868e12:	40e6873b          	subw	a4,a3,a4
		if( glitches > 0 )
    e8868e16:	4114                	lw	a3,0(a0)
    e8868e18:	06e05f63          	blez	a4,e8868e96 <_PerformPeriodTasks+0x1ea>
			++me->glitchyPeriods;
    e8868e1c:	8f87a603          	lw	a2,-1800(a5)
    e8868e20:	2605                	addiw	a2,a2,1
    e8868e22:	8ec7ac23          	sw	a2,-1800(a5)
			atr_ulog( kLogLevelNotice, "### %d glitches in the last minute of %d minute(s) (%d%% glitchy)\n", 
    e8868e26:	03200793          	li	a5,50
    e8868e2a:	04d7c163          	blt	a5,a3,e8868e6c <_PerformPeriodTasks+0x1c0>
    e8868e2e:	57fd                	li	a5,-1
    e8868e30:	04f68b63          	beq	a3,a5,e8868e86 <_PerformPeriodTasks+0x1da>
    e8868e34:	6689                	lui	a3,0x2
    e8868e36:	96a2                	add	a3,a3,s0
    e8868e38:	8fc6a783          	lw	a5,-1796(a3) # 18fc <memcmp-0xe87fe704>
    e8868e3c:	8f86a683          	lw	a3,-1800(a3)
    e8868e40:	06400813          	li	a6,100
    e8868e44:	03200613          	li	a2,50
    e8868e48:	02d8083b          	mulw	a6,a6,a3
    e8868e4c:	00062597          	auipc	a1,0x62
    e8868e50:	45458593          	addi	a1,a1,1108 # e88cb2a0 <__PRETTY_FUNCTION__.13776>
    e8868e54:	00062697          	auipc	a3,0x62
    e8868e58:	f8468693          	addi	a3,a3,-124 # e88cadd8 <kAirPlayReceiverServerClass+0x13e0>
    e8868e5c:	0006c517          	auipc	a0,0x6c
    e8868e60:	40450513          	addi	a0,a0,1028 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868e64:	02f8483b          	divw	a6,a6,a5
    e8868e68:	e0ceb0ef          	jal	ra,e8854474 <LogPrintF>
		me->glitchNextTicks = ticks + me->glitchIntervalTicks;
    e8868e6c:	6789                	lui	a5,0x2
    e8868e6e:	943e                	add	s0,s0,a5
    e8868e70:	90843783          	ld	a5,-1784(s0)
    e8868e74:	94be                	add	s1,s1,a5
    e8868e76:	90943023          	sd	s1,-1792(s0)
}
    e8868e7a:	70a2                	ld	ra,40(sp)
    e8868e7c:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8868e80:	7902                	ld	s2,32(sp)
    e8868e82:	6145                	addi	sp,sp,48
    e8868e84:	8082                	ret
			atr_ulog( kLogLevelNotice, "### %d glitches in the last minute of %d minute(s) (%d%% glitchy)\n", 
    e8868e86:	03200593          	li	a1,50
    e8868e8a:	e43a                	sd	a4,8(sp)
    e8868e8c:	9e6eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868e90:	6722                	ld	a4,8(sp)
    e8868e92:	dd69                	beqz	a0,e8868e6c <_PerformPeriodTasks+0x1c0>
    e8868e94:	b745                	j	e8868e34 <_PerformPeriodTasks+0x188>
			atr_ulog( kLogLevelVerbose, "No glitches in the last minute of %d minutes (%d%% glitchy)\n", 
    e8868e96:	47d1                	li	a5,20
    e8868e98:	fcd7cae3          	blt	a5,a3,e8868e6c <_PerformPeriodTasks+0x1c0>
    e8868e9c:	57fd                	li	a5,-1
    e8868e9e:	02f68e63          	beq	a3,a5,e8868eda <_PerformPeriodTasks+0x22e>
    e8868ea2:	6789                	lui	a5,0x2
    e8868ea4:	97a2                	add	a5,a5,s0
    e8868ea6:	8f87a683          	lw	a3,-1800(a5) # 18f8 <memcmp-0xe87fe708>
    e8868eaa:	8fc7a703          	lw	a4,-1796(a5)
    e8868eae:	06400793          	li	a5,100
    e8868eb2:	02d787bb          	mulw	a5,a5,a3
    e8868eb6:	4651                	li	a2,20
    e8868eb8:	00062697          	auipc	a3,0x62
    e8868ebc:	f6868693          	addi	a3,a3,-152 # e88cae20 <kAirPlayReceiverServerClass+0x1428>
    e8868ec0:	00062597          	auipc	a1,0x62
    e8868ec4:	3e058593          	addi	a1,a1,992 # e88cb2a0 <__PRETTY_FUNCTION__.13776>
    e8868ec8:	0006c517          	auipc	a0,0x6c
    e8868ecc:	39850513          	addi	a0,a0,920 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868ed0:	02e7c7bb          	divw	a5,a5,a4
    e8868ed4:	da0eb0ef          	jal	ra,e8854474 <LogPrintF>
    e8868ed8:	bf51                	j	e8868e6c <_PerformPeriodTasks+0x1c0>
    e8868eda:	45d1                	li	a1,20
    e8868edc:	996eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868ee0:	d551                	beqz	a0,e8868e6c <_PerformPeriodTasks+0x1c0>
    e8868ee2:	b7c1                	j	e8868ea2 <_PerformPeriodTasks+0x1f6>

00000000e8868ee4 <_TimingSendRequest>:
	pkt.v_p_m			= RTCPHeaderInsertVersion( 0, kRTPVersion );
    e8868ee4:	77f5                	lui	a5,0xffffd
{
    e8868ee6:	715d                	addi	sp,sp,-80
	pkt.v_p_m			= RTCPHeaderInsertVersion( 0, kRTPVersion );
    e8868ee8:	2807879b          	addiw	a5,a5,640
{
    e8868eec:	e0a2                	sd	s0,64(sp)
    e8868eee:	842a                	mv	s0,a0
	pkt.length			= htons( ( sizeof( pkt ) / 4 ) - 1 );
    e8868ef0:	451d                	li	a0,7
{
    e8868ef2:	e486                	sd	ra,72(sp)
	pkt.v_p_m			= RTCPHeaderInsertVersion( 0, kRTPVersion );
    e8868ef4:	00f11823          	sh	a5,16(sp)
{
    e8868ef8:	fc26                	sd	s1,56(sp)
    e8868efa:	f84a                	sd	s2,48(sp)
	AirTunesClock_GetSynchronizedTime( inSession->airTunesClock, &now );
    e8868efc:	6485                	lui	s1,0x1
	pkt.length			= htons( ( sizeof( pkt ) / 4 ) - 1 );
    e8868efe:	0201e0ef          	jal	ra,e8886f1e <lwip_htons>
	AirTunesClock_GetSynchronizedTime( inSession->airTunesClock, &now );
    e8868f02:	00940933          	add	s2,s0,s1
	pkt.length			= htons( ( sizeof( pkt ) / 4 ) - 1 );
    e8868f06:	00a11923          	sh	a0,18(sp)
	AirTunesClock_GetSynchronizedTime( inSession->airTunesClock, &now );
    e8868f0a:	79093503          	ld	a0,1936(s2)
    e8868f0e:	858a                	mv	a1,sp
	pkt.rtpTimestamp	= 0;
    e8868f10:	ca02                	sw	zero,20(sp)
	pkt.ntpOriginateHi	= 0;
    e8868f12:	ec02                	sd	zero,24(sp)
	pkt.ntpReceiveHi	= 0;
    e8868f14:	f002                	sd	zero,32(sp)
	AirTunesClock_GetSynchronizedTime( inSession->airTunesClock, &now );
    e8868f16:	4fc080ef          	jal	ra,e8871412 <AirTunesClock_GetSynchronizedTime>
	src->rtcpTILastTransmitTimeHi = now.secs + kNTPvsUnixSeconds;
    e8868f1a:	4502                	lw	a0,0(sp)
    e8868f1c:	83aa87b7          	lui	a5,0x83aa8
    e8868f20:	e807879b          	addiw	a5,a5,-384
    e8868f24:	9d3d                	addw	a0,a0,a5
	src->rtcpTILastTransmitTimeLo = (uint32_t)( now.frac >> 32 );
    e8868f26:	00c16783          	lwu	a5,12(sp)
	src->rtcpTILastTransmitTimeHi = now.secs + kNTPvsUnixSeconds;
    e8868f2a:	28a42c23          	sw	a0,664(s0)
	src->rtcpTILastTransmitTimeLo = (uint32_t)( now.frac >> 32 );
    e8868f2e:	28f42e23          	sw	a5,668(s0)
	pkt.ntpTransmitHi	= htonl( src->rtcpTILastTransmitTimeHi );
    e8868f32:	7fd1d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e8868f36:	d42a                	sw	a0,40(sp)
	pkt.ntpTransmitLo	= htonl( src->rtcpTILastTransmitTimeLo );
    e8868f38:	29c42503          	lw	a0,668(s0)
    e8868f3c:	7f31d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e8868f40:	d62a                	sw	a0,44(sp)
	if( inSession->timingConnected )
    e8868f42:	7c494783          	lbu	a5,1988(s2)
    e8868f46:	79892503          	lw	a0,1944(s2)
    e8868f4a:	c3b5                	beqz	a5,e8868fae <_TimingSendRequest+0xca>
		n = send( inSession->timingSock, (char *) &pkt, sizeof( pkt ), 0 );
    e8868f4c:	4681                	li	a3,0
    e8868f4e:	02000613          	li	a2,32
    e8868f52:	080c                	addi	a1,sp,16
    e8868f54:	43f1c0ef          	jal	ra,e8885b92 <lwip_send>
	err = map_socket_value_errno( inSession->timingSock, n == (ssize_t) sizeof( pkt ), n );
    e8868f58:	02000793          	li	a5,32
    e8868f5c:	06f50563          	beq	a0,a5,e8868fc6 <_TimingSendRequest+0xe2>
    e8868f60:	0007b797          	auipc	a5,0x7b
    e8868f64:	6c878793          	addi	a5,a5,1736 # e88e4628 <lwip_errno>
    e8868f68:	4380                	lw	s0,0(a5)
    e8868f6a:	e401                	bnez	s0,e8868f72 <_TimingSendRequest+0x8e>
    e8868f6c:	7479                	lui	s0,0xffffe
    e8868f6e:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	if( err ) atr_ulog( kLogLevelNotice, "### NTP send request failed: %#m\n", err );
    e8868f72:	0006c517          	auipc	a0,0x6c
    e8868f76:	2ee50513          	addi	a0,a0,750 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868f7a:	411c                	lw	a5,0(a0)
    e8868f7c:	03200713          	li	a4,50
    e8868f80:	04f74c63          	blt	a4,a5,e8868fd8 <_TimingSendRequest+0xf4>
    e8868f84:	577d                	li	a4,-1
    e8868f86:	06e78263          	beq	a5,a4,e8868fea <_TimingSendRequest+0x106>
    e8868f8a:	8722                	mv	a4,s0
    e8868f8c:	00062697          	auipc	a3,0x62
    e8868f90:	13468693          	addi	a3,a3,308 # e88cb0c0 <kAirPlayReceiverServerClass+0x16c8>
    e8868f94:	03200613          	li	a2,50
    e8868f98:	00062597          	auipc	a1,0x62
    e8868f9c:	65058593          	addi	a1,a1,1616 # e88cb5e8 <__PRETTY_FUNCTION__.14363>
    e8868fa0:	0006c517          	auipc	a0,0x6c
    e8868fa4:	2c050513          	addi	a0,a0,704 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8868fa8:	ccceb0ef          	jal	ra,e8854474 <LogPrintF>
    e8868fac:	a035                	j	e8868fd8 <_TimingSendRequest+0xf4>
		n = sendto( inSession->timingSock, (char *) &pkt, sizeof( pkt ), 0, &inSession->timingRemoteAddr.sa, 
    e8868fae:	7c092783          	lw	a5,1984(s2)
    e8868fb2:	7a448713          	addi	a4,s1,1956 # 17a4 <memcmp-0xe87fe85c>
    e8868fb6:	9722                	add	a4,a4,s0
    e8868fb8:	4681                	li	a3,0
    e8868fba:	02000613          	li	a2,32
    e8868fbe:	080c                	addi	a1,sp,16
    e8868fc0:	21f1c0ef          	jal	ra,e88859de <lwip_sendto>
    e8868fc4:	bf51                	j	e8868f58 <_TimingSendRequest+0x74>
	increment_wrap( src->rtcpTISendCount, 1 );
    e8868fc6:	2a042783          	lw	a5,672(s0)
    e8868fca:	0017871b          	addiw	a4,a5,1
    e8868fce:	87ba                	mv	a5,a4
    e8868fd0:	cb19                	beqz	a4,e8868fe6 <_TimingSendRequest+0x102>
    e8868fd2:	2af42023          	sw	a5,672(s0)
    e8868fd6:	4401                	li	s0,0
}
    e8868fd8:	8522                	mv	a0,s0
    e8868fda:	60a6                	ld	ra,72(sp)
    e8868fdc:	6406                	ld	s0,64(sp)
    e8868fde:	74e2                	ld	s1,56(sp)
    e8868fe0:	7942                	ld	s2,48(sp)
    e8868fe2:	6161                	addi	sp,sp,80
    e8868fe4:	8082                	ret
	increment_wrap( src->rtcpTISendCount, 1 );
    e8868fe6:	4785                	li	a5,1
    e8868fe8:	b7ed                	j	e8868fd2 <_TimingSendRequest+0xee>
	if( err ) atr_ulog( kLogLevelNotice, "### NTP send request failed: %#m\n", err );
    e8868fea:	03200593          	li	a1,50
    e8868fee:	884eb0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8868ff2:	d17d                	beqz	a0,e8868fd8 <_TimingSendRequest+0xf4>
    e8868ff4:	bf59                	j	e8868f8a <_TimingSendRequest+0xa6>

00000000e8868ff6 <_TimingReceiveResponse>:
{
    e8868ff6:	a0010113          	addi	sp,sp,-1536
    e8868ffa:	5e813823          	sd	s0,1520(sp)
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, &ticks, NULL, NULL );
    e8868ffe:	4781                	li	a5,0
{
    e8869000:	842a                	mv	s0,a0
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, &ticks, NULL, NULL );
    e8869002:	e402                	sd	zero,8(sp)
{
    e8869004:	852e                	mv	a0,a1
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, &ticks, NULL, NULL );
    e8869006:	e002                	sd	zero,0(sp)
    e8869008:	02010893          	addi	a7,sp,32
    e886900c:	4801                	li	a6,0
    e886900e:	4701                	li	a4,0
    e8869010:	0834                	addi	a3,sp,24
    e8869012:	5a400613          	li	a2,1444
    e8869016:	182c                	addi	a1,sp,56
{
    e8869018:	5e913423          	sd	s1,1512(sp)
    e886901c:	5e113c23          	sd	ra,1528(sp)
    e8869020:	5f213023          	sd	s2,1504(sp)
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, &ticks, NULL, NULL );
    e8869024:	b4aed0ef          	jal	ra,e885636e <SocketRecvFrom>
    e8869028:	84aa                	mv	s1,a0
	if( err == EWOULDBLOCK ) goto exit;
    e886902a:	47ad                	li	a5,11
    e886902c:	06f50d63          	beq	a0,a5,e88690a6 <_TimingReceiveResponse+0xb0>
	require_noerr( err, exit );
    e8869030:	e93d                	bnez	a0,e88690a6 <_TimingReceiveResponse+0xb0>
	if( len < sizeof( pkt.header ) )
    e8869032:	67e2                	ld	a5,24(sp)
    e8869034:	470d                	li	a4,3
    e8869036:	02f76b63          	bltu	a4,a5,e886906c <_TimingReceiveResponse+0x76>
		dlogassert( "Bad size: %zu < %zu", sizeof( pkt.header ), len );
    e886903a:	6705                	lui	a4,0x1
    e886903c:	e03e                	sd	a5,0(sp)
    e886903e:	4891                	li	a7,4
    e8869040:	00062817          	auipc	a6,0x62
    e8869044:	04080813          	addi	a6,a6,64 # e88cb080 <kAirPlayReceiverServerClass+0x1688>
    e8869048:	00062797          	auipc	a5,0x62
    e886904c:	5b878793          	addi	a5,a5,1464 # e88cb600 <__PRETTY_FUNCTION__.14376>
    e8869050:	07470713          	addi	a4,a4,116 # 1074 <memcmp-0xe87fef8c>
    e8869054:	00061697          	auipc	a3,0x61
    e8869058:	17c68693          	addi	a3,a3,380 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886905c:	4601                	li	a2,0
    e886905e:	4581                	li	a1,0
    e8869060:	b68e50ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	require_action( len >= sizeof( pkt.timeSync ), exit, err = kSizeErr );
    e8869064:	74f9                	lui	s1,0xffffe
    e8869066:	5a948493          	addi	s1,s1,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e886906a:	a835                	j	e88690a6 <_TimingReceiveResponse+0xb0>
	tmp = RTCPHeaderExtractVersion( pkt.header.v_p_c );
    e886906c:	03814883          	lbu	a7,56(sp)
	if( tmp != kRTPVersion )
    e8869070:	4709                	li	a4,2
	tmp = RTCPHeaderExtractVersion( pkt.header.v_p_c );
    e8869072:	0068d893          	srli	a7,a7,0x6
	if( tmp != kRTPVersion )
    e8869076:	04e88463          	beq	a7,a4,e88690be <_TimingReceiveResponse+0xc8>
		dlogassert( "Bad version: %d", tmp );
    e886907a:	6705                	lui	a4,0x1
    e886907c:	00062817          	auipc	a6,0x62
    e8869080:	01c80813          	addi	a6,a6,28 # e88cb098 <kAirPlayReceiverServerClass+0x16a0>
    e8869084:	00062797          	auipc	a5,0x62
    e8869088:	57c78793          	addi	a5,a5,1404 # e88cb600 <__PRETTY_FUNCTION__.14376>
    e886908c:	07c70713          	addi	a4,a4,124 # 107c <memcmp-0xe87fef84>
    e8869090:	00061697          	auipc	a3,0x61
    e8869094:	14068693          	addi	a3,a3,320 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e8869098:	4601                	li	a2,0
    e886909a:	4581                	li	a1,0
		err = kVersionErr;
    e886909c:	74f9                	lui	s1,0xffffe
		dlogassert( "Bad version: %d", tmp );
    e886909e:	b2ae50ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kVersionErr;
    e88690a2:	5c548493          	addi	s1,s1,1477 # ffffffffffffe5c5 <__DRAM0_INF_BASE+0xffffffff0000e5c5>
}
    e88690a6:	5f813083          	ld	ra,1528(sp)
    e88690aa:	5f013403          	ld	s0,1520(sp)
    e88690ae:	8526                	mv	a0,s1
    e88690b0:	5e013903          	ld	s2,1504(sp)
    e88690b4:	5e813483          	ld	s1,1512(sp)
    e88690b8:	60010113          	addi	sp,sp,1536
    e88690bc:	8082                	ret
	if( pkt.header.pt != kRTCPTypeTimeSyncResponse )
    e88690be:	03914883          	lbu	a7,57(sp)
    e88690c2:	0d300713          	li	a4,211
    e88690c6:	02e88963          	beq	a7,a4,e88690f8 <_TimingReceiveResponse+0x102>
		dlogassert( "Wrong packet type: %d", pkt.header.pt );
    e88690ca:	6705                	lui	a4,0x1
    e88690cc:	00062817          	auipc	a6,0x62
    e88690d0:	fdc80813          	addi	a6,a6,-36 # e88cb0a8 <kAirPlayReceiverServerClass+0x16b0>
    e88690d4:	00062797          	auipc	a5,0x62
    e88690d8:	52c78793          	addi	a5,a5,1324 # e88cb600 <__PRETTY_FUNCTION__.14376>
    e88690dc:	08270713          	addi	a4,a4,130 # 1082 <memcmp-0xe87fef7e>
    e88690e0:	00061697          	auipc	a3,0x61
    e88690e4:	0f068693          	addi	a3,a3,240 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e88690e8:	4601                	li	a2,0
    e88690ea:	4581                	li	a1,0
		err = kTypeErr;
    e88690ec:	74f9                	lui	s1,0xffffe
		dlogassert( "Wrong packet type: %d", pkt.header.pt );
    e88690ee:	adae50ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kTypeErr;
    e88690f2:	59c48493          	addi	s1,s1,1436 # ffffffffffffe59c <__DRAM0_INF_BASE+0xffffffff0000e59c>
		goto exit;
    e88690f6:	bf45                	j	e88690a6 <_TimingReceiveResponse+0xb0>
	require_action( len >= sizeof( pkt.timeSync ), exit, err = kSizeErr );
    e88690f8:	477d                	li	a4,31
    e88690fa:	f6f775e3          	bgeu	a4,a5,e8869064 <_TimingReceiveResponse+0x6e>
	AirTunesClock_GetSynchronizedTimeNearUpTicks( inSession->airTunesClock, &recvTime, ticks );
    e88690fe:	6785                	lui	a5,0x1
    e8869100:	97a2                	add	a5,a5,s0
    e8869102:	7907b503          	ld	a0,1936(a5) # 1790 <memcmp-0xe87fe870>
    e8869106:	7602                	ld	a2,32(sp)
    e8869108:	102c                	addi	a1,sp,40
    e886910a:	38a080ef          	jal	ra,e8871494 <AirTunesClock_GetSynchronizedTimeNearUpTicks>
	inPkt->rtpTimestamp		= ntohl( inPkt->rtpTimestamp );
    e886910e:	5572                	lw	a0,60(sp)
    e8869110:	61f1d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e8869114:	de2a                	sw	a0,60(sp)
	inPkt->ntpOriginateHi	= ntohl( inPkt->ntpOriginateHi );
    e8869116:	4506                	lw	a0,64(sp)
    e8869118:	6171d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e886911c:	c0aa                	sw	a0,64(sp)
	inPkt->ntpOriginateLo	= ntohl( inPkt->ntpOriginateLo );
    e886911e:	4516                	lw	a0,68(sp)
    e8869120:	60f1d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e8869124:	c2aa                	sw	a0,68(sp)
	inPkt->ntpReceiveHi		= ntohl( inPkt->ntpReceiveHi );
    e8869126:	4526                	lw	a0,72(sp)
    e8869128:	6071d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e886912c:	c4aa                	sw	a0,72(sp)
	inPkt->ntpReceiveLo		= ntohl( inPkt->ntpReceiveLo );
    e886912e:	4536                	lw	a0,76(sp)
    e8869130:	5ff1d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e8869134:	c6aa                	sw	a0,76(sp)
	inPkt->ntpTransmitHi	= ntohl( inPkt->ntpTransmitHi );
    e8869136:	4546                	lw	a0,80(sp)
    e8869138:	5f71d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e886913c:	c8aa                	sw	a0,80(sp)
	inPkt->ntpTransmitLo	= ntohl( inPkt->ntpTransmitLo );
    e886913e:	4556                	lw	a0,84(sp)
    e8869140:	5ef1d0ef          	jal	ra,e8886f2e <lwip_htonl>
    e8869144:	2501                	sext.w	a0,a0
	if( ( inPkt->ntpOriginateHi != src->rtcpTILastTransmitTimeHi ) || 
    e8869146:	4706                	lw	a4,64(sp)
    e8869148:	29842783          	lw	a5,664(s0)
	inPkt->ntpTransmitLo	= ntohl( inPkt->ntpTransmitLo );
    e886914c:	caaa                	sw	a0,84(sp)
	if( ( inPkt->ntpOriginateHi != src->rtcpTILastTransmitTimeHi ) || 
    e886914e:	1ae79963          	bne	a5,a4,e8869300 <_TimingReceiveResponse+0x30a>
		( inPkt->ntpOriginateLo != src->rtcpTILastTransmitTimeLo ) )
    e8869152:	4696                	lw	a3,68(sp)
	if( ( inPkt->ntpOriginateHi != src->rtcpTILastTransmitTimeHi ) || 
    e8869154:	29c42703          	lw	a4,668(s0)
    e8869158:	1ad71463          	bne	a4,a3,e8869300 <_TimingReceiveResponse+0x30a>
	t1 = ( ( (uint64_t) inPkt->ntpOriginateHi )	<< 32 ) | inPkt->ntpOriginateLo;
    e886915c:	7c07370b          	extu	a4,a4,31,0
    e8869160:	1782                	slli	a5,a5,0x20
    e8869162:	00e7e6b3          	or	a3,a5,a4
	t3 = ( ( (uint64_t) inPkt->ntpTransmitHi )	<< 32 ) | inPkt->ntpTransmitLo;
    e8869166:	05016703          	lwu	a4,80(sp)
	t2 = ( ( (uint64_t) inPkt->ntpReceiveHi )	<< 32 ) | inPkt->ntpReceiveLo;
    e886916a:	04816603          	lwu	a2,72(sp)
    e886916e:	04c16783          	lwu	a5,76(sp)
	t3 = ( ( (uint64_t) inPkt->ntpTransmitHi )	<< 32 ) | inPkt->ntpTransmitLo;
    e8869172:	1702                	slli	a4,a4,0x20
	t2 = ( ( (uint64_t) inPkt->ntpReceiveHi )	<< 32 ) | inPkt->ntpReceiveLo;
    e8869174:	1602                	slli	a2,a2,0x20
	t3 = ( ( (uint64_t) inPkt->ntpTransmitHi )	<< 32 ) | inPkt->ntpTransmitLo;
    e8869176:	7c05350b          	extu	a0,a0,31,0
	t2 = ( ( (uint64_t) inPkt->ntpReceiveHi )	<< 32 ) | inPkt->ntpReceiveLo;
    e886917a:	8e5d                	or	a2,a2,a5
	t3 = ( ( (uint64_t) inPkt->ntpTransmitHi )	<< 32 ) | inPkt->ntpTransmitLo;
    e886917c:	8d59                	or	a0,a0,a4
	t4 = ( ( (uint64_t)( inTime->secs + kNTPvsUnixSeconds ) ) << 32 ) + ( inTime->frac >> 32 );
    e886917e:	57a2                	lw	a5,40(sp)
    e8869180:	83aa8737          	lui	a4,0x83aa8
    e8869184:	e807071b          	addiw	a4,a4,-384
    e8869188:	9fb9                	addw	a5,a5,a4
    e886918a:	03416703          	lwu	a4,52(sp)
	offset = 0.5 * ( ( ( (double)( (int64_t)( t2 - t1 ) ) ) * kNTPFraction ) + 
    e886918e:	40d605b3          	sub	a1,a2,a3
	t4 = ( ( (uint64_t)( inTime->secs + kNTPvsUnixSeconds ) ) << 32 ) + ( inTime->frac >> 32 );
    e8869192:	1782                	slli	a5,a5,0x20
    e8869194:	97ba                	add	a5,a5,a4
	offset = 0.5 * ( ( ( (double)( (int64_t)( t2 - t1 ) ) ) * kNTPFraction ) + 
    e8869196:	d225f753          	fcvt.d.l	fa4,a1
					 ( ( (double)( (int64_t)( t3 - t4 ) ) ) * kNTPFraction ) );
    e886919a:	40f505b3          	sub	a1,a0,a5
    e886919e:	d225f6d3          	fcvt.d.l	fa3,a1
    e88691a2:	00062717          	auipc	a4,0x62
    e88691a6:	eb673607          	fld	fa2,-330(a4) # e88cb058 <kAirPlayReceiverServerClass+0x1660>
		  ( ( (double)( (int64_t)( t3 - t2 ) ) ) * kNTPFraction );
    e88691aa:	8d11                	sub	a0,a0,a2
					 ( ( (double)( (int64_t)( t3 - t4 ) ) ) * kNTPFraction ) );
    e88691ac:	12c6f6d3          	fmul.d	fa3,fa3,fa2
	offset = 0.5 * ( ( ( (double)( (int64_t)( t2 - t1 ) ) ) * kNTPFraction ) + 
    e88691b0:	00062717          	auipc	a4,0x62
    e88691b4:	eb073787          	fld	fa5,-336(a4) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
	rtt = ( ( (double)( (int64_t)( t4 - t1 ) ) ) * kNTPFraction ) - 
    e88691b8:	8f95                	sub	a5,a5,a3
	src->rtcpTILastTransmitTimeHi = 0; // Zero so we don't try to process a duplicate.
    e88691ba:	28043c23          	sd	zero,664(s0)
	offset = 0.5 * ( ( ( (double)( (int64_t)( t2 - t1 ) ) ) * kNTPFraction ) + 
    e88691be:	6ac77743          	fmadd.d	fa4,fa4,fa2,fa3
		  ( ( (double)( (int64_t)( t3 - t2 ) ) ) * kNTPFraction );
    e88691c2:	d22576d3          	fcvt.d.l	fa3,a0
    e88691c6:	12c6f6d3          	fmul.d	fa3,fa3,fa2
	offset = 0.5 * ( ( ( (double)( (int64_t)( t2 - t1 ) ) ) * kNTPFraction ) + 
    e88691ca:	12f77753          	fmul.d	fa4,fa4,fa5
	rtt = ( ( (double)( (int64_t)( t4 - t1 ) ) ) * kNTPFraction ) - 
    e88691ce:	d227f7d3          	fcvt.d.l	fa5,a5
    e88691d2:	6ac7f7c7          	fmsub.d	fa5,fa5,fa2,fa3
	if( rtt < src->rtcpTIClockRTTMin ) src->rtcpTIClockRTTMin = rtt;
    e88691d6:	2b843687          	fld	fa3,696(s0)
    e88691da:	a2d797d3          	flt.d	a5,fa5,fa3
    e88691de:	c399                	beqz	a5,e88691e4 <_TimingReceiveResponse+0x1ee>
    e88691e0:	2af43c27          	fsd	fa5,696(s0)
	if( rtt > src->rtcpTIClockRTTMax ) src->rtcpTIClockRTTMax = rtt;
    e88691e4:	2c043687          	fld	fa3,704(s0)
    e88691e8:	a2f697d3          	flt.d	a5,fa3,fa5
    e88691ec:	c399                	beqz	a5,e88691f2 <_TimingReceiveResponse+0x1fc>
    e88691ee:	2cf43027          	fsd	fa5,704(s0)
	if( src->rtcpTIResponseCount == 0 ) src->rtcpTIClockRTTAvg = rtt;
    e88691f2:	2a442903          	lw	s2,676(s0)
    e88691f6:	00091463          	bnez	s2,e88691fe <_TimingReceiveResponse+0x208>
    e88691fa:	2af43827          	fsd	fa5,688(s0)
	src->rtcpTIClockRTTAvg			= ( ( 15.0 * src->rtcpTIClockRTTAvg ) + rtt ) * ( 1.0 / 16.0 );
    e88691fe:	2b043687          	fld	fa3,688(s0)
    e8869202:	00062797          	auipc	a5,0x62
    e8869206:	e667b587          	fld	fa1,-410(a5) # e88cb068 <kAirPlayReceiverServerClass+0x1670>
    e886920a:	00062797          	auipc	a5,0x62
    e886920e:	e667b607          	fld	fa2,-410(a5) # e88cb070 <kAirPlayReceiverServerClass+0x1678>
    e8869212:	7ab6f6c3          	fmadd.d	fa3,fa3,fa1,fa5
	if( src->rtcpTIResetStats || ( src->rtcpTIResponseCount == 0 ) )
    e8869216:	36844703          	lbu	a4,872(s0)
    e886921a:	2c840793          	addi	a5,s0,712
    e886921e:	30840693          	addi	a3,s0,776
	src->rtcpTIClockRTTAvg			= ( ( 15.0 * src->rtcpTIClockRTTAvg ) + rtt ) * ( 1.0 / 16.0 );
    e8869222:	12c6f6d3          	fmul.d	fa3,fa3,fa2
    e8869226:	2ad43827          	fsd	fa3,688(s0)
	if( src->rtcpTIResetStats || ( src->rtcpTIResponseCount == 0 ) )
    e886922a:	e319                	bnez	a4,e8869230 <_TimingReceiveResponse+0x23a>
    e886922c:	02091563          	bnez	s2,e8869256 <_TimingReceiveResponse+0x260>
    e8869230:	873e                	mv	a4,a5
			src->rtcpTIClockDelayArray[ i ] = 1000.0;
    e8869232:	00055617          	auipc	a2,0x55
    e8869236:	85e63687          	fld	fa3,-1954(a2) # e88bda90 <kSRPHashDescriptor_SHA512+0x80>
    e886923a:	a314                	fsd	fa3,0(a4)
			src->rtcpTIClockOffsetArray[ i ] = 0.0;
    e886923c:	04073023          	sd	zero,64(a4)
		for( i = 0; i < countof( src->rtcpTIClockOffsetArray ); ++i )
    e8869240:	0721                	addi	a4,a4,8
    e8869242:	fee69ce3          	bne	a3,a4,e886923a <_TimingReceiveResponse+0x244>
		src->rtcpTIClockIndex = 0;
    e8869246:	34042423          	sw	zero,840(s0)
		src->rtcpTIClockOffsetAvg = 0.0;
    e886924a:	34043823          	sd	zero,848(s0)
		src->rtcpTIClockOffsetMin = offset;
    e886924e:	34e43c27          	fsd	fa4,856(s0)
		src->rtcpTIClockOffsetMax = offset;
    e8869252:	36e43027          	fsd	fa4,864(s0)
		if( rtt > src->rtcpTIClockDelayArray[ i ])
    e8869256:	2394                	fld	fa3,0(a5)
    e8869258:	a2f69753          	flt.d	a4,fa3,fa5
    e886925c:	e345                	bnez	a4,e88692fc <_TimingReceiveResponse+0x306>
	for( i = 0; i < countof( src->rtcpTIClockDelayArray ); ++i )
    e886925e:	07a1                	addi	a5,a5,8
    e8869260:	fef69be3          	bne	a3,a5,e8869256 <_TimingReceiveResponse+0x260>
	useMeasurement = true;
    e8869264:	4685                	li	a3,1
	src->rtcpTIClockDelayArray[ src->rtcpTIClockIndex ] = rtt;
    e8869266:	34842783          	lw	a5,840(s0)
	if( src->rtcpTIClockIndex >= countof( src->rtcpTIClockOffsetArray ) )
    e886926a:	461d                	li	a2,7
    e886926c:	7c07b70b          	extu	a4,a5,31,0
    e8869270:	06e4170b          	addsl	a4,s0,a4,3
	src->rtcpTIClockDelayArray[ src->rtcpTIClockIndex ] = rtt;
    e8869274:	2cf73427          	fsd	fa5,712(a4)
	src->rtcpTIClockOffsetArray[ src->rtcpTIClockIndex ] = offset;
    e8869278:	30e73427          	fsd	fa4,776(a4)
	src->rtcpTIClockOffsetAvg = ( ( 15.0 * src->rtcpTIClockOffsetAvg ) + offset ) * ( 1.0 / 16.0 );
    e886927c:	35043787          	fld	fa5,848(s0)
	src->rtcpTIClockIndex++;
    e8869280:	2785                	addiw	a5,a5,1
    e8869282:	873e                	mv	a4,a5
	src->rtcpTIClockOffsetAvg = ( ( 15.0 * src->rtcpTIClockOffsetAvg ) + offset ) * ( 1.0 / 16.0 );
    e8869284:	72b7f7c3          	fmadd.d	fa5,fa5,fa1,fa4
	src->rtcpTIClockIndex++;
    e8869288:	00f637b3          	sltu	a5,a2,a5
    e886928c:	42f0170b          	mvnez	a4,zero,a5
    e8869290:	34e42423          	sw	a4,840(s0)
	src->rtcpTIClockOffsetAvg = ( ( 15.0 * src->rtcpTIClockOffsetAvg ) + offset ) * ( 1.0 / 16.0 );
    e8869294:	12c7f7d3          	fmul.d	fa5,fa5,fa2
    e8869298:	34f43827          	fsd	fa5,848(s0)
	if( offset < src->rtcpTIClockOffsetMin ) src->rtcpTIClockOffsetMin = offset;
    e886929c:	35843787          	fld	fa5,856(s0)
    e88692a0:	a2f717d3          	flt.d	a5,fa4,fa5
    e88692a4:	c399                	beqz	a5,e88692aa <_TimingReceiveResponse+0x2b4>
    e88692a6:	34e43c27          	fsd	fa4,856(s0)
	if( offset > src->rtcpTIClockOffsetMax ) src->rtcpTIClockOffsetMax = offset;
    e88692aa:	36043787          	fld	fa5,864(s0)
    e88692ae:	a2e797d3          	flt.d	a5,fa5,fa4
    e88692b2:	c399                	beqz	a5,e88692b8 <_TimingReceiveResponse+0x2c2>
    e88692b4:	36e43027          	fsd	fa4,864(s0)
	if (useMeasurement)
    e88692b8:	de0687e3          	beqz	a3,e88690a6 <_TimingReceiveResponse+0xb0>
		src->rtcpTIResetStats = AirTunesClock_Adjust( inSession->airTunesClock, (int64_t)( offset * 1E9 ), forceStep );
    e88692bc:	00062797          	auipc	a5,0x62
    e88692c0:	dbc7b787          	fld	fa5,-580(a5) # e88cb078 <kAirPlayReceiverServerClass+0x1680>
    e88692c4:	12f77753          	fmul.d	fa4,fa4,fa5
    e88692c8:	6785                	lui	a5,0x1
    e88692ca:	97a2                	add	a5,a5,s0
    e88692cc:	7907b503          	ld	a0,1936(a5) # 1790 <memcmp-0xe87fe870>
    e88692d0:	00193613          	seqz	a2,s2
    e88692d4:	c22715d3          	fcvt.l.d	a1,fa4,rtz
    e88692d8:	7e7070ef          	jal	ra,e88712be <AirTunesClock_Adjust>
    e88692dc:	36a40423          	sb	a0,872(s0)
		if( src->rtcpTIResetStats && !forceStep ) ++src->rtcpTIStepCount;
    e88692e0:	c901                	beqz	a0,e88692f0 <_TimingReceiveResponse+0x2fa>
    e88692e2:	00090763          	beqz	s2,e88692f0 <_TimingReceiveResponse+0x2fa>
    e88692e6:	2a842783          	lw	a5,680(s0)
    e88692ea:	2785                	addiw	a5,a5,1
    e88692ec:	2af42423          	sw	a5,680(s0)
		++src->rtcpTIResponseCount;
    e88692f0:	2a442783          	lw	a5,676(s0)
    e88692f4:	2785                	addiw	a5,a5,1
    e88692f6:	2af42223          	sw	a5,676(s0)
    e88692fa:	b375                	j	e88690a6 <_TimingReceiveResponse+0xb0>
			useMeasurement = false;
    e88692fc:	4681                	li	a3,0
    e88692fe:	b7a5                	j	e8869266 <_TimingReceiveResponse+0x270>
		err = kDuplicateErr;
    e8869300:	74f9                	lui	s1,0xffffe
    e8869302:	5b648493          	addi	s1,s1,1462 # ffffffffffffe5b6 <__DRAM0_INF_BASE+0xffffffff0000e5b6>
    e8869306:	b345                	j	e88690a6 <_TimingReceiveResponse+0xb0>

00000000e8869308 <_TimingThread>:
{
    e8869308:	7171                	addi	sp,sp,-176
    e886930a:	f506                	sd	ra,168(sp)
    e886930c:	fcd6                	sd	s5,120(sp)
    e886930e:	f8da                	sd	s6,112(sp)
    e8869310:	f122                	sd	s0,160(sp)
    e8869312:	ed26                	sd	s1,152(sp)
    e8869314:	e94a                	sd	s2,144(sp)
    e8869316:	e54e                	sd	s3,136(sp)
    e8869318:	e152                	sd	s4,128(sp)
    e886931a:	f4de                	sd	s7,104(sp)
    e886931c:	f0e2                	sd	s8,96(sp)
    e886931e:	ece6                	sd	s9,88(sp)
    e8869320:	e8ea                	sd	s10,80(sp)
    e8869322:	e4ee                	sd	s11,72(sp)
	SocketRef const						sock	= session->timingSock;
    e8869324:	6785                	lui	a5,0x1
    e8869326:	97aa                	add	a5,a5,a0
	session->timingThreadRun = true;
    e8869328:	4705                	li	a4,1
    e886932a:	7ce78c23          	sb	a4,2008(a5) # 17d8 <memcmp-0xe87fe828>
	SocketRef const						sock	= session->timingSock;
    e886932e:	7987a983          	lw	s3,1944(a5)
	SocketRef const						cmdSock	= session->timingCmdSock;
    e8869332:	7c87a403          	lw	s0,1992(a5)
{
    e8869336:	8b2a                	mv	s6,a0
	pthread_setname_np_compat( "AirPlayTimeSyncClient" );
    e8869338:	6c2120ef          	jal	ra,e887b9fa <pthread_self>
    e886933c:	2501                	sext.w	a0,a0
    e886933e:	00062597          	auipc	a1,0x62
    e8869342:	daa58593          	addi	a1,a1,-598 # e88cb0e8 <kAirPlayReceiverServerClass+0x16f0>
    e8869346:	28f120ef          	jal	ra,e887bdd4 <pthread_setname_np>
    atr_ulog( kLogLevelTrace, "Timing thread starting\n" );
    e886934a:	0006ca97          	auipc	s5,0x6c
    e886934e:	f16a8a93          	addi	s5,s5,-234 # e88d5260 <gLogCategory_AirPlayReceiverCore>
	SetCurrentThreadPriority( kAirPlayThreadPriority_TimeSyncClient );
    e8869352:	03e00513          	li	a0,62
    e8869356:	e29f70ef          	jal	ra,e886117e <SetCurrentThreadPriority>
    atr_ulog( kLogLevelTrace, "Timing thread starting\n" );
    e886935a:	000aa783          	lw	a5,0(s5)
    e886935e:	4779                	li	a4,30
    e8869360:	02f74463          	blt	a4,a5,e8869388 <_TimingThread+0x80>
    e8869364:	577d                	li	a4,-1
    e8869366:	10e78063          	beq	a5,a4,e8869466 <_TimingThread+0x15e>
    e886936a:	00062697          	auipc	a3,0x62
    e886936e:	d9668693          	addi	a3,a3,-618 # e88cb100 <kAirPlayReceiverServerClass+0x1708>
    e8869372:	4679                	li	a2,30
    e8869374:	00062597          	auipc	a1,0x62
    e8869378:	26458593          	addi	a1,a1,612 # e88cb5d8 <__PRETTY_FUNCTION__.14350>
    e886937c:	0006c517          	auipc	a0,0x6c
    e8869380:	ee450513          	addi	a0,a0,-284 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869384:	8f0eb0ef          	jal	ra,e8854474 <LogPrintF>
	printf("_TimingThread start run %d\n",pthread_self());
    e8869388:	672120ef          	jal	ra,e887b9fa <pthread_self>
    e886938c:	0005059b          	sext.w	a1,a0
    e8869390:	00062517          	auipc	a0,0x62
    e8869394:	d8850513          	addi	a0,a0,-632 # e88cb118 <kAirPlayReceiverServerClass+0x1720>
    e8869398:	72f120ef          	jal	ra,e887c2c6 <eLIBs_printf>
	FD_ZERO( &readSet );
    e886939c:	1024                	addi	s1,sp,40
    e886939e:	461d                	li	a2,7
    e88693a0:	4581                	li	a1,0
    e88693a2:	8526                	mv	a0,s1
    e88693a4:	7f1120ef          	jal	ra,e887c394 <eLIBs_memset>
	if( (int) cmdSock > maxFd ) maxFd = cmdSock;
    e88693a8:	0089a7b3          	slt	a5,s3,s0
    e88693ac:	8722                	mv	a4,s0
    e88693ae:	40f9970b          	mveqz	a4,s3,a5
    e88693b2:	87ba                	mv	a5,a4
    e88693b4:	02079713          	slli	a4,a5,0x20
    e88693b8:	00075363          	bgez	a4,e88693be <_TimingThread+0xb6>
    e88693bc:	57fd                	li	a5,-1
	maxFd += 1;
    e88693be:	2785                	addiw	a5,a5,1
		FD_SET( sock, &readSet );
    e88693c0:	4a05                	li	s4,1
    e88693c2:	0079f913          	andi	s2,s3,7
    e88693c6:	012a193b          	sllw	s2,s4,s2
	maxFd += 1;
    e88693ca:	e83e                	sd	a5,16(sp)
		FD_SET( sock, &readSet );
    e88693cc:	1c09278b          	ext	a5,s2,7,0
    e88693d0:	e03e                	sd	a5,0(sp)
		FD_SET( cmdSock, &readSet );
    e88693d2:	00747793          	andi	a5,s0,7
    e88693d6:	00fa1a3b          	sllw	s4,s4,a5
    e88693da:	1c0a278b          	ext	a5,s4,7,0
    e88693de:	e43e                	sd	a5,8(sp)
		timeout.tv_usec = Random32() % 1000000;
    e88693e0:	000f47b7          	lui	a5,0xf4
    e88693e4:	2407879b          	addiw	a5,a5,576
		FD_SET( sock, &readSet );
    e88693e8:	4039dc13          	srai	s8,s3,0x3
		FD_SET( cmdSock, &readSet );
    e88693ec:	40345c93          	srai	s9,s0,0x3
		FD_SET( sock, &readSet );
    e88693f0:	8d4e                	mv	s10,s3
    e88693f2:	03100b93          	li	s7,49
		timeout.tv_usec = Random32() % 1000000;
    e88693f6:	ce3e                	sw	a5,28(sp)
		err = select_errno( n );
    e88693f8:	7df9                	lui	s11,0xffffe
		FD_SET( sock, &readSet );
    e88693fa:	01abe863          	bltu	s7,s10,e886940a <_TimingThread+0x102>
    e88693fe:	8184c78b          	lrbu	a5,s1,s8,0
    e8869402:	6702                	ld	a4,0(sp)
    e8869404:	8fd9                	or	a5,a5,a4
    e8869406:	0184d78b          	srb	a5,s1,s8,0
		FD_SET( cmdSock, &readSet );
    e886940a:	008be863          	bltu	s7,s0,e886941a <_TimingThread+0x112>
    e886940e:	8194c78b          	lrbu	a5,s1,s9,0
    e8869412:	6722                	ld	a4,8(sp)
    e8869414:	8fd9                	or	a5,a5,a4
    e8869416:	0194d78b          	srb	a5,s1,s9,0
		timeout.tv_sec  = 2;
    e886941a:	4789                	li	a5,2
		timeout.tv_usec = Random32() % 1000000;
    e886941c:	557d                	li	a0,-1
		timeout.tv_sec  = 2;
    e886941e:	f83e                	sd	a5,48(sp)
		timeout.tv_usec = Random32() % 1000000;
    e8869420:	425120ef          	jal	ra,e887c044 <esKSRV_Random>
    e8869424:	47f2                	lw	a5,28(sp)
		n = select( maxFd, &readSet, NULL, NULL, &timeout );
    e8869426:	1818                	addi	a4,sp,48
    e8869428:	4681                	li	a3,0
		timeout.tv_usec = Random32() % 1000000;
    e886942a:	02f5753b          	remuw	a0,a0,a5
		n = select( maxFd, &readSet, NULL, NULL, &timeout );
    e886942e:	4601                	li	a2,0
    e8869430:	85a6                	mv	a1,s1
		timeout.tv_usec = Random32() % 1000000;
    e8869432:	fc2a                	sd	a0,56(sp)
		n = select( maxFd, &readSet, NULL, NULL, &timeout );
    e8869434:	6542                	ld	a0,16(sp)
    e8869436:	0f71c0ef          	jal	ra,e8885d2c <lwip_select>
		err = select_errno( n );
    e886943a:	08a04163          	bgtz	a0,e88694bc <_TimingThread+0x1b4>
    e886943e:	c105                	beqz	a0,e886945e <_TimingThread+0x156>
    e8869440:	0007b797          	auipc	a5,0x7b
    e8869444:	1e878793          	addi	a5,a5,488 # e88e4628 <lwip_errno>
    e8869448:	0007a883          	lw	a7,0(a5)
    e886944c:	02088d63          	beqz	a7,e8869486 <_TimingThread+0x17e>
		if( err == EINTR )					continue;
    e8869450:	4791                	li	a5,4
    e8869452:	faf884e3          	beq	a7,a5,e88693fa <_TimingThread+0xf2>
		if( err == kTimeoutErr )			{ _TimingSendRequest( session ); continue; }
    e8869456:	5bed8793          	addi	a5,s11,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e886945a:	02f89963          	bne	a7,a5,e886948c <_TimingThread+0x184>
    e886945e:	855a                	mv	a0,s6
    e8869460:	a85ff0ef          	jal	ra,e8868ee4 <_TimingSendRequest>
    e8869464:	bf59                	j	e88693fa <_TimingThread+0xf2>
    atr_ulog( kLogLevelTrace, "Timing thread starting\n" );
    e8869466:	45f9                	li	a1,30
    e8869468:	8556                	mv	a0,s5
    e886946a:	c09ea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886946e:	f0050de3          	beqz	a0,e8869388 <_TimingThread+0x80>
    e8869472:	bde5                	j	e886936a <_TimingThread+0x62>
	atr_ulog( kLogLevelTrace, "Timing thread exit\n" );
    e8869474:	45f9                	li	a1,30
    e8869476:	0006c517          	auipc	a0,0x6c
    e886947a:	dea50513          	addi	a0,a0,-534 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886947e:	bf5ea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8869482:	c559                	beqz	a0,e8869510 <_TimingThread+0x208>
    e8869484:	a0bd                	j	e88694f2 <_TimingThread+0x1ea>
		err = select_errno( n );
    e8869486:	77f9                	lui	a5,0xffffe
    e8869488:	5d478893          	addi	a7,a5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
		if( err )							{ dlogassert( "select() error: %#m", err ); usleep( 100000 ); continue; }
    e886948c:	6705                	lui	a4,0x1
    e886948e:	00055817          	auipc	a6,0x55
    e8869492:	77a80813          	addi	a6,a6,1914 # e88bec08 <__PRETTY_FUNCTION__.8745+0x20>
    e8869496:	00062797          	auipc	a5,0x62
    e886949a:	14278793          	addi	a5,a5,322 # e88cb5d8 <__PRETTY_FUNCTION__.14350>
    e886949e:	02470713          	addi	a4,a4,36 # 1024 <memcmp-0xe87fefdc>
    e88694a2:	00061697          	auipc	a3,0x61
    e88694a6:	d2e68693          	addi	a3,a3,-722 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e88694aa:	4601                	li	a2,0
    e88694ac:	4581                	li	a1,0
    e88694ae:	4501                	li	a0,0
    e88694b0:	f19e40ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e88694b4:	4529                	li	a0,10
    e88694b6:	361120ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e88694ba:	b781                	j	e88693fa <_TimingThread+0xf2>
		if( FD_ISSET( sock,    &readSet ) ) _TimingReceiveResponse( session, sock );
    e88694bc:	01abeb63          	bltu	s7,s10,e88694d2 <_TimingThread+0x1ca>
    e88694c0:	8184c78b          	lrbu	a5,s1,s8,0
    e88694c4:	00f977b3          	and	a5,s2,a5
    e88694c8:	c789                	beqz	a5,e88694d2 <_TimingThread+0x1ca>
    e88694ca:	85ce                	mv	a1,s3
    e88694cc:	855a                	mv	a0,s6
    e88694ce:	b29ff0ef          	jal	ra,e8868ff6 <_TimingReceiveResponse>
		if( FD_ISSET( cmdSock, &readSet ) ) break; // The only event is quit so break if anything is pending.
    e88694d2:	f28be4e3          	bltu	s7,s0,e88693fa <_TimingThread+0xf2>
    e88694d6:	8194c78b          	lrbu	a5,s1,s9,0
    e88694da:	00fa77b3          	and	a5,s4,a5
    e88694de:	f0078ee3          	beqz	a5,e88693fa <_TimingThread+0xf2>
	atr_ulog( kLogLevelTrace, "Timing thread exit\n" );
    e88694e2:	000aa783          	lw	a5,0(s5)
    e88694e6:	4779                	li	a4,30
    e88694e8:	02f74463          	blt	a4,a5,e8869510 <_TimingThread+0x208>
    e88694ec:	577d                	li	a4,-1
    e88694ee:	f8e783e3          	beq	a5,a4,e8869474 <_TimingThread+0x16c>
    e88694f2:	00062697          	auipc	a3,0x62
    e88694f6:	c4668693          	addi	a3,a3,-954 # e88cb138 <kAirPlayReceiverServerClass+0x1740>
    e88694fa:	4679                	li	a2,30
    e88694fc:	00062597          	auipc	a1,0x62
    e8869500:	0dc58593          	addi	a1,a1,220 # e88cb5d8 <__PRETTY_FUNCTION__.14350>
    e8869504:	0006c517          	auipc	a0,0x6c
    e8869508:	d5c50513          	addi	a0,a0,-676 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886950c:	f69ea0ef          	jal	ra,e8854474 <LogPrintF>
	session->timingThreadRun = false;
    e8869510:	6785                	lui	a5,0x1
    e8869512:	9b3e                	add	s6,s6,a5
    e8869514:	7c0b0c23          	sb	zero,2008(s6)
	pthread_exit(0);
    e8869518:	4501                	li	a0,0
    e886951a:	4f0120ef          	jal	ra,e887ba0a <pthread_exit>
}
    e886951e:	740a                	ld	s0,160(sp)
    e8869520:	70aa                	ld	ra,168(sp)
    e8869522:	64ea                	ld	s1,152(sp)
    e8869524:	694a                	ld	s2,144(sp)
    e8869526:	69aa                	ld	s3,136(sp)
    e8869528:	6a0a                	ld	s4,128(sp)
    e886952a:	7ae6                	ld	s5,120(sp)
    e886952c:	7b46                	ld	s6,112(sp)
    e886952e:	7ba6                	ld	s7,104(sp)
    e8869530:	7c06                	ld	s8,96(sp)
    e8869532:	6ce6                	ld	s9,88(sp)
    e8869534:	6d46                	ld	s10,80(sp)
    e8869536:	6da6                	ld	s11,72(sp)
    e8869538:	4501                	li	a0,0
    e886953a:	614d                	addi	sp,sp,176
    e886953c:	8082                	ret

00000000e886953e <_LogEnded>:
//===========================================================================================================================
//	_LogEnded
//===========================================================================================================================

static void	_LogEnded( AirPlayReceiverSessionRef inSession, OSStatus inReason )
{
    e886953e:	7151                	addi	sp,sp,-240
    e8869540:	f586                	sd	ra,232(sp)
    e8869542:	f1a2                	sd	s0,224(sp)
    e8869544:	fd56                	sd	s5,184(sp)
    e8869546:	e96a                	sd	s10,144(sp)
    e8869548:	eda6                	sd	s1,216(sp)
    e886954a:	e9ca                	sd	s2,208(sp)
    e886954c:	e5ce                	sd	s3,200(sp)
    e886954e:	e1d2                	sd	s4,192(sp)
    e8869550:	f95a                	sd	s6,176(sp)
    e8869552:	f55e                	sd	s7,168(sp)
    e8869554:	f162                	sd	s8,160(sp)
    e8869556:	ed66                	sd	s9,152(sp)
    e8869558:	e56e                	sd	s11,136(sp)
    e886955a:	81010113          	addi	sp,sp,-2032
    e886955e:	842a                	mv	s0,a0
    e8869560:	8d2e                	mv	s10,a1
#if( TARGET_OS_POSIX )
	char								buf[ 2048 ];
#else
	char								buf[ 512 ];
#endif
	uint32_t const						durationSecs			= (uint32_t) UpTicksToSeconds( UpTicks() - inSession->sessionTicks );
    e8869562:	c63f70ef          	jal	ra,e88611c4 <UpTicks>
    e8869566:	4a81                	li	s5,0
    e8869568:	11043783          	ld	a5,272(s0)
    e886956c:	8d1d                	sub	a0,a0,a5
    e886956e:	c8df70ef          	jal	ra,e88611fa <UpTicksToSeconds>
    e8869572:	0005071b          	sext.w	a4,a0
	const AirTunesSource * const		ats						= &inSession->source;
	uint32_t const						retransmitMinMs			= NanosecondsToMilliseconds32( ats->retransmitMinNanos );
    e8869576:	3d843803          	ld	a6,984(s0)
    e886957a:	57fd                	li	a5,-1
    e886957c:	00f80a63          	beq	a6,a5,e8869590 <_LogEnded+0x52>
    e8869580:	000f4ab7          	lui	s5,0xf4
    e8869584:	240a8a93          	addi	s5,s5,576 # f4240 <memcmp-0xe870bdc0>
    e8869588:	03585833          	divu	a6,a6,s5
    e886958c:	00080a9b          	sext.w	s5,a6
	uint32_t const						retransmitMaxMs			= NanosecondsToMilliseconds32( ats->retransmitMaxNanos );
    e8869590:	3e043883          	ld	a7,992(s0)
    e8869594:	57fd                	li	a5,-1
    e8869596:	4c81                	li	s9,0
    e8869598:	00f88a63          	beq	a7,a5,e88695ac <_LogEnded+0x6e>
    e886959c:	000f4cb7          	lui	s9,0xf4
    e88695a0:	240c8c93          	addi	s9,s9,576 # f4240 <memcmp-0xe870bdc0>
    e88695a4:	0398d8b3          	divu	a7,a7,s9
    e88695a8:	00088c9b          	sext.w	s9,a7
	uint32_t const						retransmitAvgMs			= NanosecondsToMilliseconds32( ats->retransmitAvgNanos );
    e88695ac:	3e843783          	ld	a5,1000(s0)
    e88695b0:	56fd                	li	a3,-1
    e88695b2:	4b01                	li	s6,0
    e88695b4:	00d78963          	beq	a5,a3,e88695c6 <_LogEnded+0x88>
    e88695b8:	000f4b37          	lui	s6,0xf4
    e88695bc:	240b0b13          	addi	s6,s6,576 # f4240 <memcmp-0xe870bdc0>
    e88695c0:	0367db33          	divu	s6,a5,s6
    e88695c4:	2b01                	sext.w	s6,s6
	uint32_t const						retransmitRetryMinMs	= NanosecondsToMilliseconds32( ats->retransmitRetryMinNanos );
    e88695c6:	3f043783          	ld	a5,1008(s0)
    e88695ca:	56fd                	li	a3,-1
    e88695cc:	4b81                	li	s7,0
    e88695ce:	00d78963          	beq	a5,a3,e88695e0 <_LogEnded+0xa2>
    e88695d2:	000f4bb7          	lui	s7,0xf4
    e88695d6:	240b8b93          	addi	s7,s7,576 # f4240 <memcmp-0xe870bdc0>
    e88695da:	0377dbb3          	divu	s7,a5,s7
    e88695de:	2b81                	sext.w	s7,s7
	uint32_t const						retransmitRetryMaxMs	= NanosecondsToMilliseconds32( ats->retransmitRetryMaxNanos );
    e88695e0:	3f843783          	ld	a5,1016(s0)
    e88695e4:	56fd                	li	a3,-1
    e88695e6:	4c01                	li	s8,0
    e88695e8:	00d78963          	beq	a5,a3,e88695fa <_LogEnded+0xbc>
    e88695ec:	000f4c37          	lui	s8,0xf4
    e88695f0:	240c0c13          	addi	s8,s8,576 # f4240 <memcmp-0xe870bdc0>
    e88695f4:	0387dc33          	divu	s8,a5,s8
    e88695f8:	2c01                	sext.w	s8,s8
	uint32_t const						ntpRTTMin				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMin );
    e88695fa:	2b843707          	fld	fa4,696(s0)
    e88695fe:	00054797          	auipc	a5,0x54
    e8869602:	4927b687          	fld	fa3,1170(a5) # e88bda90 <kSRPHashDescriptor_SHA512+0x80>
	uint32_t const						ntpRTTMax				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMax );
	uint32_t const						ntpRTTAvg				= (uint32_t)( 1000 * ats->rtcpTIClockRTTAvg );
    e8869606:	2b043787          	fld	fa5,688(s0)
	uint32_t const						ntpRTTMin				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMin );
    e886960a:	12d77753          	fmul.d	fa4,fa4,fa3
	
	DataBuffer_Init( &db, buf, sizeof( buf ), 10000 );
    e886960e:	6785                	lui	a5,0x1
	uint32_t const						ntpRTTAvg				= (uint32_t)( 1000 * ats->rtcpTIClockRTTAvg );
    e8869610:	12d7f7d3          	fmul.d	fa5,fa5,fa3
    e8869614:	f43a                	sd	a4,40(sp)
	DataBuffer_Init( &db, buf, sizeof( buf ), 10000 );
    e8869616:	74fd                	lui	s1,0xfffff
    e8869618:	0818                	addi	a4,sp,16
    e886961a:	86078793          	addi	a5,a5,-1952 # 860 <memcmp-0xe87ff7a0>
	uint32_t const						ntpRTTMin				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMin );
    e886961e:	c2171953          	fcvt.wu.d	s2,fa4,rtz
	uint32_t const						ntpRTTMax				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMax );
    e8869622:	2c043707          	fld	fa4,704(s0)
	DataBuffer_Init( &db, buf, sizeof( buf ), 10000 );
    e8869626:	97ba                	add	a5,a5,a4
    e8869628:	7c848493          	addi	s1,s1,1992 # fffffffffffff7c8 <__DRAM0_INF_BASE+0xffffffff0000f7c8>
	uint32_t const						ntpRTTMax				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMax );
    e886962c:	12d77753          	fmul.d	fa4,fa4,fa3
	DataBuffer_Init( &db, buf, sizeof( buf ), 10000 );
    e8869630:	94be                	add	s1,s1,a5
    e8869632:	6d89                	lui	s11,0x2
    e8869634:	6605                	lui	a2,0x1
    e8869636:	710d8693          	addi	a3,s11,1808 # 2710 <memcmp-0xe87fd8f0>
    e886963a:	80060613          	addi	a2,a2,-2048 # 800 <memcmp-0xe87ff800>
    e886963e:	188c                	addi	a1,sp,112
    e8869640:	8526                	mv	a0,s1
	uint32_t const						ntpRTTMax				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMax );
    e8869642:	c21719d3          	fcvt.wu.d	s3,fa4,rtz
	uint32_t const						ntpRTTAvg				= (uint32_t)( 1000 * ats->rtcpTIClockRTTAvg );
    e8869646:	c2179a53          	fcvt.wu.d	s4,fa5,rtz
	DataBuffer_Init( &db, buf, sizeof( buf ), 10000 );
    e886964a:	aa5e40ef          	jal	ra,e884e0ee <DataBuffer_Init>
	DataBuffer_AppendF( &db, "AirPlay session ended: Dur=%u seconds Reason=%#m\n", durationSecs, inReason );
	DataBuffer_AppendF( &db, "Glitches:    %d%%, %d total, %d glitchy minute(s)\n", 
		( inSession->glitchTotalPeriods > 0 ) ? ( ( inSession->glitchyPeriods * 100 ) / inSession->glitchTotalPeriods ) : 0,
    e886964e:	9da2                	add	s11,s11,s0
	DataBuffer_AppendF( &db, "AirPlay session ended: Dur=%u seconds Reason=%#m\n", durationSecs, inReason );
    e8869650:	7722                	ld	a4,40(sp)
    e8869652:	86ea                	mv	a3,s10
    e8869654:	00061597          	auipc	a1,0x61
    e8869658:	41c58593          	addi	a1,a1,1052 # e88caa70 <kAirPlayReceiverServerClass+0x1078>
    e886965c:	863a                	mv	a2,a4
    e886965e:	8526                	mv	a0,s1
    e8869660:	c8de40ef          	jal	ra,e884e2ec <DataBuffer_AppendF>
	uint32_t const						ntpRTTMin				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMin );
    e8869664:	2901                	sext.w	s2,s2
		( inSession->glitchTotalPeriods > 0 ) ? ( ( inSession->glitchyPeriods * 100 ) / inSession->glitchTotalPeriods ) : 0,
    e8869666:	8fcda783          	lw	a5,-1796(s11)
	uint32_t const						ntpRTTMax				= (uint32_t)( 1000 * ats->rtcpTIClockRTTMax );
    e886966a:	2981                	sext.w	s3,s3
	uint32_t const						ntpRTTAvg				= (uint32_t)( 1000 * ats->rtcpTIClockRTTAvg );
    e886966c:	2a01                	sext.w	s4,s4
	DataBuffer_AppendF( &db, "Glitches:    %d%%, %d total, %d glitchy minute(s)\n", 
    e886966e:	4601                	li	a2,0
    e8869670:	00f05a63          	blez	a5,e8869684 <_LogEnded+0x146>
		( inSession->glitchTotalPeriods > 0 ) ? ( ( inSession->glitchyPeriods * 100 ) / inSession->glitchTotalPeriods ) : 0,
    e8869674:	8f8da703          	lw	a4,-1800(s11)
    e8869678:	06400613          	li	a2,100
    e886967c:	02e6063b          	mulw	a2,a2,a4
	DataBuffer_AppendF( &db, "Glitches:    %d%%, %d total, %d glitchy minute(s)\n", 
    e8869680:	02f6463b          	divw	a2,a2,a5
    e8869684:	0818                	addi	a4,sp,16
    e8869686:	6d09                	lui	s10,0x2
    e8869688:	6785                	lui	a5,0x1
    e886968a:	9d22                	add	s10,s10,s0
    e886968c:	74fd                	lui	s1,0xfffff
    e886968e:	86078793          	addi	a5,a5,-1952 # 860 <memcmp-0xe87ff7a0>
    e8869692:	97ba                	add	a5,a5,a4
    e8869694:	8f0d2683          	lw	a3,-1808(s10) # 18f0 <memcmp-0xe87fe710>
    e8869698:	8f8d2703          	lw	a4,-1800(s10)
    e886969c:	7c848493          	addi	s1,s1,1992 # fffffffffffff7c8 <__DRAM0_INF_BASE+0xffffffff0000f7c8>
    e88696a0:	94be                	add	s1,s1,a5
    e88696a2:	00061597          	auipc	a1,0x61
    e88696a6:	40658593          	addi	a1,a1,1030 # e88caaa8 <kAirPlayReceiverServerClass+0x10b0>
    e88696aa:	8526                	mv	a0,s1
    e88696ac:	c41e40ef          	jal	ra,e884e2ec <DataBuffer_AppendF>
		inSession->glitchTotal, inSession->glitchyPeriods );
	DataBuffer_AppendF( &db, "Retransmits: "
    e88696b0:	e862                	sd	s8,16(sp)
    e88696b2:	3d442783          	lw	a5,980(s0)
    e88696b6:	3d042703          	lw	a4,976(s0)
    e88696ba:	3cc42683          	lw	a3,972(s0)
    e88696be:	3c842603          	lw	a2,968(s0)
    e88696c2:	88e6                	mv	a7,s9
    e88696c4:	8856                	mv	a6,s5
    e88696c6:	00061597          	auipc	a1,0x61
    e88696ca:	41a58593          	addi	a1,a1,1050 # e88caae0 <kAirPlayReceiverServerClass+0x10e8>
    e88696ce:	e45e                	sd	s7,8(sp)
    e88696d0:	e05a                	sd	s6,0(sp)
    e88696d2:	8526                	mv	a0,s1
    e88696d4:	c19e40ef          	jal	ra,e884e2ec <DataBuffer_AppendF>
		"%u sent, %u received, %u futile, %u not found, %u/%u/%u ms min/max/avg, %u/%u ms retry min/max\n", 
		ats->retransmitSendCount, ats->retransmitReceiveCount, ats->retransmitFutileCount, ats->retransmitNotFoundCount, 
		retransmitMinMs, retransmitMaxMs, retransmitAvgMs, retransmitRetryMinMs, retransmitRetryMaxMs );
	DataBuffer_AppendF( &db, "Packets:     %u lost, %u unrecovered, %u late, %u max burst, %u big losses, %d%% compression\n", 
    e88696d8:	8e8d2883          	lw	a7,-1816(s10)
    e88696dc:	06400793          	li	a5,100
    e88696e0:	0007a617          	auipc	a2,0x7a
    e88696e4:	6b860613          	addi	a2,a2,1720 # e88e3d98 <gAirPlayAudioStats>
    e88696e8:	5218                	lw	a4,32(a2)
    e88696ea:	4e54                	lw	a3,28(a2)
    e88696ec:	40842803          	lw	a6,1032(s0)
    e88696f0:	4e10                	lw	a2,24(a2)
    e88696f2:	00061597          	auipc	a1,0x61
    e88696f6:	45e58593          	addi	a1,a1,1118 # e88cab50 <kAirPlayReceiverServerClass+0x1158>
    e88696fa:	8526                	mv	a0,s1
    e88696fc:	02f8d8bb          	divuw	a7,a7,a5
    e8869700:	40442783          	lw	a5,1028(s0)
    e8869704:	be9e40ef          	jal	ra,e884e2ec <DataBuffer_AppendF>
	DataBuffer_AppendF( &db, "Time Sync:   "
		"%u/%u/%u ms min/max/avg RTT, %d/%d/%d μS min/max/avg offset, %u step(s)\n",
		ntpRTTMin, ntpRTTMax, ntpRTTAvg, 
		(int32_t)(  1000000 * ats->rtcpTIClockOffsetMin ), 
		(int32_t)(  1000000 * ats->rtcpTIClockOffsetMax ), 
		(int32_t)(  1000000 * ats->rtcpTIClockOffsetAvg ), ats->rtcpTIStepCount );
    e8869708:	35043707          	fld	fa4,848(s0)
    e886970c:	0005a797          	auipc	a5,0x5a
    e8869710:	3ac7b687          	fld	fa3,940(a5) # e88c3ab8 <__PRETTY_FUNCTION__.8517+0x20>
		(int32_t)(  1000000 * ats->rtcpTIClockOffsetMin ), 
    e8869714:	35843787          	fld	fa5,856(s0)
		(int32_t)(  1000000 * ats->rtcpTIClockOffsetAvg ), ats->rtcpTIStepCount );
    e8869718:	12d77753          	fmul.d	fa4,fa4,fa3
	DataBuffer_AppendF( &db, "Time Sync:   "
    e886971c:	2a842703          	lw	a4,680(s0)
		(int32_t)(  1000000 * ats->rtcpTIClockOffsetMin ), 
    e8869720:	12d7f7d3          	fmul.d	fa5,fa5,fa3
	DataBuffer_AppendF( &db, "Time Sync:   "
    e8869724:	86ce                	mv	a3,s3
    e8869726:	e03a                	sd	a4,0(sp)
    e8869728:	864a                	mv	a2,s2
    e886972a:	8752                	mv	a4,s4
    e886972c:	c20718d3          	fcvt.w.d	a7,fa4,rtz
		(int32_t)(  1000000 * ats->rtcpTIClockOffsetMax ), 
    e8869730:	36043707          	fld	fa4,864(s0)
	DataBuffer_AppendF( &db, "Time Sync:   "
    e8869734:	c20797d3          	fcvt.w.d	a5,fa5,rtz
    e8869738:	2881                	sext.w	a7,a7
		(int32_t)(  1000000 * ats->rtcpTIClockOffsetMax ), 
    e886973a:	12d77753          	fmul.d	fa4,fa4,fa3
	DataBuffer_AppendF( &db, "Time Sync:   "
    e886973e:	2781                	sext.w	a5,a5
    e8869740:	00061597          	auipc	a1,0x61
    e8869744:	47058593          	addi	a1,a1,1136 # e88cabb0 <kAirPlayReceiverServerClass+0x11b8>
    e8869748:	8526                	mv	a0,s1
    e886974a:	c2071853          	fcvt.w.d	a6,fa4,rtz
    e886974e:	2801                	sext.w	a6,a6
    e8869750:	b9de40ef          	jal	ra,e884e2ec <DataBuffer_AppendF>
	atr_ulog( kLogLevelNotice, "%.*s\n", (int) DataBuffer_GetLen( &db ), DataBuffer_GetPtr( &db ) );
    e8869754:	0006c517          	auipc	a0,0x6c
    e8869758:	b0c50513          	addi	a0,a0,-1268 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886975c:	411c                	lw	a5,0(a0)
    e886975e:	03200713          	li	a4,50
    e8869762:	04f74263          	blt	a4,a5,e88697a6 <_LogEnded+0x268>
    e8869766:	577d                	li	a4,-1
    e8869768:	06e78b63          	beq	a5,a4,e88697de <_LogEnded+0x2a0>
    e886976c:	6705                	lui	a4,0x1
    e886976e:	0814                	addi	a3,sp,16
    e8869770:	86070713          	addi	a4,a4,-1952 # 860 <memcmp-0xe87ff7a0>
    e8869774:	9736                	add	a4,a4,a3
    e8869776:	77fd                	lui	a5,0xfffff
    e8869778:	97ba                	add	a5,a5,a4
    e886977a:	f43e                	sd	a5,40(sp)
    e886977c:	7722                	ld	a4,40(sp)
    e886977e:	7e07b783          	ld	a5,2016(a5) # fffffffffffff7e0 <__DRAM0_INF_BASE+0xffffffff0000f7e0>
    e8869782:	00061697          	auipc	a3,0x61
    e8869786:	48668693          	addi	a3,a3,1158 # e88cac08 <kAirPlayReceiverServerClass+0x1210>
    e886978a:	7e872703          	lw	a4,2024(a4)
    e886978e:	03200613          	li	a2,50
    e8869792:	00062597          	auipc	a1,0x62
    e8869796:	eee58593          	addi	a1,a1,-274 # e88cb680 <__PRETTY_FUNCTION__.14569>
    e886979a:	0006c517          	auipc	a0,0x6c
    e886979e:	ac650513          	addi	a0,a0,-1338 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e88697a2:	cd3ea0ef          	jal	ra,e8854474 <LogPrintF>
	DataBuffer_Free( &db );
    e88697a6:	6785                	lui	a5,0x1
    e88697a8:	0818                	addi	a4,sp,16
    e88697aa:	757d                	lui	a0,0xfffff
    e88697ac:	86078793          	addi	a5,a5,-1952 # 860 <memcmp-0xe87ff7a0>
    e88697b0:	97ba                	add	a5,a5,a4
    e88697b2:	7c850513          	addi	a0,a0,1992 # fffffffffffff7c8 <__DRAM0_INF_BASE+0xffffffff0000f7c8>
    e88697b6:	953e                	add	a0,a0,a5
    e88697b8:	94fe40ef          	jal	ra,e884e106 <DataBuffer_Free>
	
}
    e88697bc:	7f010113          	addi	sp,sp,2032
    e88697c0:	70ae                	ld	ra,232(sp)
    e88697c2:	740e                	ld	s0,224(sp)
    e88697c4:	64ee                	ld	s1,216(sp)
    e88697c6:	694e                	ld	s2,208(sp)
    e88697c8:	69ae                	ld	s3,200(sp)
    e88697ca:	6a0e                	ld	s4,192(sp)
    e88697cc:	7aea                	ld	s5,184(sp)
    e88697ce:	7b4a                	ld	s6,176(sp)
    e88697d0:	7baa                	ld	s7,168(sp)
    e88697d2:	7c0a                	ld	s8,160(sp)
    e88697d4:	6cea                	ld	s9,152(sp)
    e88697d6:	6d4a                	ld	s10,144(sp)
    e88697d8:	6daa                	ld	s11,136(sp)
    e88697da:	616d                	addi	sp,sp,240
    e88697dc:	8082                	ret
	atr_ulog( kLogLevelNotice, "%.*s\n", (int) DataBuffer_GetLen( &db ), DataBuffer_GetPtr( &db ) );
    e88697de:	03200593          	li	a1,50
    e88697e2:	891ea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88697e6:	d161                	beqz	a0,e88697a6 <_LogEnded+0x268>
    e88697e8:	b751                	j	e886976c <_LogEnded+0x22e>

00000000e88697ea <_ControlStart>:
{
    e88697ea:	7155                	addi	sp,sp,-208
    e88697ec:	e1a2                	sd	s0,192(sp)
    e88697ee:	fd26                	sd	s1,184(sp)
    e88697f0:	f94a                	sd	s2,176(sp)
    e88697f2:	e586                	sd	ra,200(sp)
    e88697f4:	f54e                	sd	s3,168(sp)
    e88697f6:	842a                	mv	s0,a0
	err = SocketAccept( inSession->eventSock, kAirPlayConnectTimeoutSecs, &newSock, &sip );
    e88697f8:	44052503          	lw	a0,1088(a0)
	SocketRef		newSock = kInvalidSocketRef;
    e88697fc:	597d                	li	s2,-1
	err = SocketAccept( inSession->eventSock, kAirPlayConnectTimeoutSecs, &newSock, &sip );
    e88697fe:	0834                	addi	a3,sp,24
    e8869800:	0850                	addi	a2,sp,20
    e8869802:	45a9                	li	a1,10
	SocketRef		newSock = kInvalidSocketRef;
    e8869804:	ca4a                	sw	s2,20(sp)
	err = SocketAccept( inSession->eventSock, kAirPlayConnectTimeoutSecs, &newSock, &sip );
    e8869806:	9a7ec0ef          	jal	ra,e88561ac <SocketAccept>
    e886980a:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e886980c:	10051963          	bnez	a0,e886991e <_ControlStart+0x134>
	ForgetSocket( &inSession->eventSock );
    e8869810:	44042503          	lw	a0,1088(s0)
    e8869814:	00054663          	bltz	a0,e8869820 <_ControlStart+0x36>
    e8869818:	18b1b0ef          	jal	ra,e88851a2 <lwip_close>
    e886981c:	45242023          	sw	s2,1088(s0)
	err = HTTPClientCreateWithSocket( &inSession->eventClient, newSock );
    e8869820:	45d2                	lw	a1,20(sp)
    e8869822:	42840513          	addi	a0,s0,1064
    e8869826:	9d2e70ef          	jal	ra,e88509f8 <HTTPClientCreateWithSocket>
    e886982a:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e886982c:	0e051963          	bnez	a0,e886991e <_ControlStart+0x134>
	HTTPClientSetDispatchQueue( inSession->eventClient, inSession->eventQueue );
    e8869830:	42043583          	ld	a1,1056(s0)
    e8869834:	42843503          	ld	a0,1064(s0)
	newSock = kInvalidSocketRef;
    e8869838:	57fd                	li	a5,-1
    e886983a:	ca3e                	sw	a5,20(sp)
	HTTPClientSetDispatchQueue( inSession->eventClient, inSession->eventQueue );
    e886983c:	a6ee70ef          	jal	ra,e8850aaa <HTTPClientSetDispatchQueue>
	HTTPClientSetLogging( inSession->eventClient, atr_events_ucat() );
    e8869840:	42843503          	ld	a0,1064(s0)
    e8869844:	0006c597          	auipc	a1,0x6c
    e8869848:	a7c58593          	addi	a1,a1,-1412 # e88d52c0 <gLogCategory_AirPlayReceiverEvents>
    e886984c:	a9ce70ef          	jal	ra,e8850ae8 <HTTPClientSetLogging>
	if( inSession->pairVerifySession )
    e8869850:	45043503          	ld	a0,1104(s0)
    e8869854:	c149                	beqz	a0,e88698d6 <_ControlStart+0xec>
		err = PairingSessionDeriveKey( inSession->pairVerifySession, kAirPlayPairingEventsKeySaltPtr, kAirPlayPairingEventsKeySaltLen, 
    e8869856:	03810813          	addi	a6,sp,56
    e886985a:	02000793          	li	a5,32
    e886985e:	4769                	li	a4,26
    e8869860:	00061697          	auipc	a3,0x61
    e8869864:	c2868693          	addi	a3,a3,-984 # e88ca488 <kAirPlayReceiverServerClass+0xa90>
    e8869868:	462d                	li	a2,11
    e886986a:	00061597          	auipc	a1,0x61
    e886986e:	c3e58593          	addi	a1,a1,-962 # e88ca4a8 <kAirPlayReceiverServerClass+0xab0>
    e8869872:	99cee0ef          	jal	ra,e8857a0e <PairingSessionDeriveKey>
		require_noerr( err, exit );
    e8869876:	e15d                	bnez	a0,e886991c <_ControlStart+0x132>
		err = PairingSessionDeriveKey( inSession->pairVerifySession, kAirPlayPairingEventsKeySaltPtr, kAirPlayPairingEventsKeySaltLen, 
    e8869878:	45043503          	ld	a0,1104(s0)
    e886987c:	05810913          	addi	s2,sp,88
    e8869880:	884a                	mv	a6,s2
    e8869882:	02000793          	li	a5,32
    e8869886:	476d                	li	a4,27
    e8869888:	00061697          	auipc	a3,0x61
    e886988c:	c3068693          	addi	a3,a3,-976 # e88ca4b8 <kAirPlayReceiverServerClass+0xac0>
    e8869890:	462d                	li	a2,11
    e8869892:	00061597          	auipc	a1,0x61
    e8869896:	c1658593          	addi	a1,a1,-1002 # e88ca4a8 <kAirPlayReceiverServerClass+0xab0>
    e886989a:	974ee0ef          	jal	ra,e8857a0e <PairingSessionDeriveKey>
		require_noerr( err, exit );
    e886989e:	ed3d                	bnez	a0,e886991c <_ControlStart+0x132>
		err = NetTransportChaCha20Poly1305Configure( &delegate, atr_ucat(), readKey, NULL, writeKey, NULL );
    e88698a0:	07810993          	addi	s3,sp,120
    e88698a4:	4781                	li	a5,0
    e88698a6:	874a                	mv	a4,s2
    e88698a8:	4681                	li	a3,0
    e88698aa:	1830                	addi	a2,sp,56
    e88698ac:	0006c597          	auipc	a1,0x6c
    e88698b0:	9b458593          	addi	a1,a1,-1612 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e88698b4:	854e                	mv	a0,s3
    e88698b6:	98feb0ef          	jal	ra,e8855244 <NetTransportChaCha20Poly1305Configure>
		require_noerr( err, exit );
    e88698ba:	e12d                	bnez	a0,e886991c <_ControlStart+0x132>
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e88698bc:	182c                	addi	a1,sp,56
	while( inLen-- ) *ptr++ = 0;
    e88698be:	1815d00b          	sbia	zero,(a1),1,0
    e88698c2:	ff259ee3          	bne	a1,s2,e88698be <_ControlStart+0xd4>
    e88698c6:	1815d00b          	sbia	zero,(a1),1,0
    e88698ca:	ff359ee3          	bne	a1,s3,e88698c6 <_ControlStart+0xdc>
		HTTPClientSetTransportDelegate( inSession->eventClient, &delegate );
    e88698ce:	42843503          	ld	a0,1064(s0)
    e88698d2:	a1ee70ef          	jal	ra,e8850af0 <HTTPClientSetTransportDelegate>
	atr_ulog( kLogLevelTrace, "Events started on port %d to port %d\n", inSession->eventPort, SockAddrGetPort( &sip ) );
    e88698d6:	0006c517          	auipc	a0,0x6c
    e88698da:	98a50513          	addi	a0,a0,-1654 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e88698de:	411c                	lw	a5,0(a0)
    e88698e0:	4779                	li	a4,30
    e88698e2:	02f74e63          	blt	a4,a5,e886991e <_ControlStart+0x134>
    e88698e6:	577d                	li	a4,-1
    e88698e8:	08e78863          	beq	a5,a4,e8869978 <_ControlStart+0x18e>
    e88698ec:	44442703          	lw	a4,1092(s0)
    e88698f0:	0828                	addi	a0,sp,24
    e88698f2:	e43a                	sd	a4,8(sp)
    e88698f4:	e49ec0ef          	jal	ra,e885673c <SockAddrGetPort>
    e88698f8:	87aa                	mv	a5,a0
    e88698fa:	6722                	ld	a4,8(sp)
    e88698fc:	00061697          	auipc	a3,0x61
    e8869900:	bdc68693          	addi	a3,a3,-1060 # e88ca4d8 <kAirPlayReceiverServerClass+0xae0>
    e8869904:	4679                	li	a2,30
    e8869906:	00062597          	auipc	a1,0x62
    e886990a:	9fa58593          	addi	a1,a1,-1542 # e88cb300 <__PRETTY_FUNCTION__.13851>
    e886990e:	0006c517          	auipc	a0,0x6c
    e8869912:	95250513          	addi	a0,a0,-1710 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869916:	b5fea0ef          	jal	ra,e8854474 <LogPrintF>
    e886991a:	a011                	j	e886991e <_ControlStart+0x134>
		require_noerr( err, exit );
    e886991c:	84aa                	mv	s1,a0
	ForgetSocket( &newSock );
    e886991e:	4552                	lw	a0,20(sp)
    e8869920:	00054663          	bltz	a0,e886992c <_ControlStart+0x142>
    e8869924:	07f1b0ef          	jal	ra,e88851a2 <lwip_close>
    e8869928:	57fd                	li	a5,-1
    e886992a:	ca3e                	sw	a5,20(sp)
	if( err ) atr_ulog( kLogLevelWarning, "### Event start failed: %#m\n", err );
    e886992c:	cc95                	beqz	s1,e8869968 <_ControlStart+0x17e>
    e886992e:	0006c517          	auipc	a0,0x6c
    e8869932:	93250513          	addi	a0,a0,-1742 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869936:	411c                	lw	a5,0(a0)
    e8869938:	03c00713          	li	a4,60
    e886993c:	02f74663          	blt	a4,a5,e8869968 <_ControlStart+0x17e>
    e8869940:	577d                	li	a4,-1
    e8869942:	04e78063          	beq	a5,a4,e8869982 <_ControlStart+0x198>
    e8869946:	8726                	mv	a4,s1
    e8869948:	00061697          	auipc	a3,0x61
    e886994c:	bb868693          	addi	a3,a3,-1096 # e88ca500 <kAirPlayReceiverServerClass+0xb08>
    e8869950:	03c00613          	li	a2,60
    e8869954:	00062597          	auipc	a1,0x62
    e8869958:	9ac58593          	addi	a1,a1,-1620 # e88cb300 <__PRETTY_FUNCTION__.13851>
    e886995c:	0006c517          	auipc	a0,0x6c
    e8869960:	90450513          	addi	a0,a0,-1788 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869964:	b11ea0ef          	jal	ra,e8854474 <LogPrintF>
}
    e8869968:	60ae                	ld	ra,200(sp)
    e886996a:	640e                	ld	s0,192(sp)
    e886996c:	8526                	mv	a0,s1
    e886996e:	794a                	ld	s2,176(sp)
    e8869970:	74ea                	ld	s1,184(sp)
    e8869972:	79aa                	ld	s3,168(sp)
    e8869974:	6169                	addi	sp,sp,208
    e8869976:	8082                	ret
	atr_ulog( kLogLevelTrace, "Events started on port %d to port %d\n", inSession->eventPort, SockAddrGetPort( &sip ) );
    e8869978:	45f9                	li	a1,30
    e886997a:	ef8ea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886997e:	d145                	beqz	a0,e886991e <_ControlStart+0x134>
    e8869980:	b7b5                	j	e88698ec <_ControlStart+0x102>
	if( err ) atr_ulog( kLogLevelWarning, "### Event start failed: %#m\n", err );
    e8869982:	03c00593          	li	a1,60
    e8869986:	eecea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886998a:	dd79                	beqz	a0,e8869968 <_ControlStart+0x17e>
    e886998c:	bf6d                	j	e8869946 <_ControlStart+0x15c>

00000000e886998e <_GeneralAudioDecryptPacket>:
{
    e886998e:	711d                	addi	sp,sp,-96
    e8869990:	e0ca                	sd	s2,64(sp)
	if( ctx->outputCryptor.isValid )
    e8869992:	6905                	lui	s2,0x1
{
    e8869994:	f852                	sd	s4,48(sp)
    e8869996:	8a3e                	mv	s4,a5
	if( ctx->outputCryptor.isValid )
    e8869998:	012507b3          	add	a5,a0,s2
{
    e886999c:	e8a2                	sd	s0,80(sp)
    e886999e:	e4a6                	sd	s1,72(sp)
    e88699a0:	fc4e                	sd	s3,56(sp)
    e88699a2:	f456                	sd	s5,40(sp)
    e88699a4:	ec86                	sd	ra,88(sp)
    e88699a6:	f05a                	sd	s6,32(sp)
    e88699a8:	ec5e                	sd	s7,24(sp)
    e88699aa:	e862                	sd	s8,16(sp)
	if( ctx->outputCryptor.isValid )
    e88699ac:	8e87c783          	lbu	a5,-1816(a5)
{
    e88699b0:	84aa                	mv	s1,a0
    e88699b2:	89b6                	mv	s3,a3
    e88699b4:	843a                	mv	s0,a4
    e88699b6:	8ac2                	mv	s5,a6
	if( ctx->outputCryptor.isValid )
    e88699b8:	c3c5                	beqz	a5,e8869a58 <_GeneralAudioDecryptPacket+0xca>
    e88699ba:	8b2e                	mv	s6,a1
		chacha20_poly1305_init_64x64( &ctx->outputCryptor.state, ctx->outputCryptor.key, &inSrc[ inSrcSize - 8 ] );
    e88699bc:	45850593          	addi	a1,a0,1112
    e88699c0:	49858b93          	addi	s7,a1,1176
    e88699c4:	8c32                	mv	s8,a2
    e88699c6:	ff870613          	addi	a2,a4,-8
    e88699ca:	9636                	add	a2,a2,a3
    e88699cc:	59858593          	addi	a1,a1,1432
    e88699d0:	855e                	mv	a0,s7
    e88699d2:	a68e40ef          	jal	ra,e884dc3a <chacha20_poly1305_init_64x64>
		chacha20_poly1305_add_aad( &ctx->outputCryptor.state, inAAD, inAADSize );
    e88699d6:	85da                	mv	a1,s6
    e88699d8:	8662                	mv	a2,s8
    e88699da:	855e                	mv	a0,s7
    e88699dc:	c98e40ef          	jal	ra,e884de74 <chacha20_poly1305_add_aad>
		len = chacha20_poly1305_decrypt( &ctx->outputCryptor.state, inSrc, inSrcSize - 24, inDst );
    e88699e0:	fe840b13          	addi	s6,s0,-24
    e88699e4:	86d2                	mv	a3,s4
    e88699e6:	865a                	mv	a2,s6
    e88699e8:	85ce                	mv	a1,s3
    e88699ea:	855e                	mv	a0,s7
    e88699ec:	d18e40ef          	jal	ra,e884df04 <chacha20_poly1305_decrypt>
    e88699f0:	842a                	mv	s0,a0
		len += chacha20_poly1305_verify( &ctx->outputCryptor.state, &inDst[ len ], &inSrc[ inSrcSize - 24 ], &err );
    e88699f2:	00aa05b3          	add	a1,s4,a0
    e88699f6:	0074                	addi	a3,sp,12
    e88699f8:	01698633          	add	a2,s3,s6
    e88699fc:	855e                	mv	a0,s7
    e88699fe:	e06e40ef          	jal	ra,e884e004 <chacha20_poly1305_verify>
    e8869a02:	942a                	add	s0,s0,a0
		require_noerr( err, exit );
    e8869a04:	47b2                	lw	a5,12(sp)
    e8869a06:	e799                	bnez	a5,e8869a14 <_GeneralAudioDecryptPacket+0x86>
		require_action( len == inSrcSize - 24, exit, err = kInternalErr );
    e8869a08:	028b0363          	beq	s6,s0,e8869a2e <_GeneralAudioDecryptPacket+0xa0>
    e8869a0c:	77f9                	lui	a5,0xffffe
    e8869a0e:	5967879b          	addiw	a5,a5,1430
    e8869a12:	c63e                	sw	a5,12(sp)
}
    e8869a14:	60e6                	ld	ra,88(sp)
    e8869a16:	6446                	ld	s0,80(sp)
    e8869a18:	4532                	lw	a0,12(sp)
    e8869a1a:	64a6                	ld	s1,72(sp)
    e8869a1c:	6906                	ld	s2,64(sp)
    e8869a1e:	79e2                	ld	s3,56(sp)
    e8869a20:	7a42                	ld	s4,48(sp)
    e8869a22:	7aa2                	ld	s5,40(sp)
    e8869a24:	7b02                	ld	s6,32(sp)
    e8869a26:	6be2                	ld	s7,24(sp)
    e8869a28:	6c42                	ld	s8,16(sp)
    e8869a2a:	6125                	addi	sp,sp,96
    e8869a2c:	8082                	ret
	for( i = 0; i < inLen; ++i )
    e8869a2e:	a1090793          	addi	a5,s2,-1520 # a10 <memcmp-0xe87ff5f0>
    e8869a32:	a1890913          	addi	s2,s2,-1512
    e8869a36:	97a6                	add	a5,a5,s1
    e8869a38:	94ca                	add	s1,s1,s2
		if( ++( inInteger[ i ] ) != 0 )
    e8869a3a:	0007c703          	lbu	a4,0(a5) # ffffffffffffe000 <__DRAM0_INF_BASE+0xffffffff0000e000>
    e8869a3e:	2705                	addiw	a4,a4,1
    e8869a40:	0ff77713          	andi	a4,a4,255
    e8869a44:	00e78023          	sb	a4,0(a5)
    e8869a48:	e701                	bnez	a4,e8869a50 <_GeneralAudioDecryptPacket+0xc2>
	for( i = 0; i < inLen; ++i )
    e8869a4a:	0785                	addi	a5,a5,1
    e8869a4c:	fef497e3          	bne	s1,a5,e8869a3a <_GeneralAudioDecryptPacket+0xac>
	*outSize = len;
    e8869a50:	008ab023          	sd	s0,0(s5)
	err = kNoErr;
    e8869a54:	c602                	sw	zero,12(sp)
    e8869a56:	bf7d                	j	e8869a14 <_GeneralAudioDecryptPacket+0x86>
		err = AES_CBCFrame_Update( inSession->decryptor, inSrc, inSrcSize, inDst );
    e8869a58:	23053503          	ld	a0,560(a0)
    e8869a5c:	86d2                	mv	a3,s4
    e8869a5e:	863a                	mv	a2,a4
    e8869a60:	85ce                	mv	a1,s3
    e8869a62:	db2da0ef          	jal	ra,e8844014 <AES_CBCFrame_Update>
    e8869a66:	c62a                	sw	a0,12(sp)
		require_noerr( err, exit );
    e8869a68:	d565                	beqz	a0,e8869a50 <_GeneralAudioDecryptPacket+0xc2>
    e8869a6a:	b76d                	j	e8869a14 <_GeneralAudioDecryptPacket+0x86>

00000000e8869a6c <_UpdateEstimatedRate>:
	uint32_t					oldCount, newCount, oldNdx;
	AirPlayTimestampTuple *		newSample;
	AirPlayTimestampTuple *		oldSample;
	AirTunesTime				atTime;
	double						scale, rate;
	AirTunesClockRef			airTunesClock = ctx->session ? ctx->session->airTunesClock : NULL;
    e8869a6c:	611c                	ld	a5,0(a0)
    e8869a6e:	c789                	beqz	a5,e8869a78 <_UpdateEstimatedRate+0xc>
    e8869a70:	6705                	lui	a4,0x1
    e8869a72:	97ba                	add	a5,a5,a4
    e8869a74:	7907b783          	ld	a5,1936(a5)
	
	if( inHostTime >= ctx->rateUpdateNextTicks )
    e8869a78:	17853703          	ld	a4,376(a0)
    e8869a7c:	18e66163          	bltu	a2,a4,e8869bfe <_UpdateEstimatedRate+0x192>
{
    e8869a80:	715d                	addi	sp,sp,-80
    e8869a82:	e486                	sd	ra,72(sp)
    e8869a84:	e0a2                	sd	s0,64(sp)
    e8869a86:	f84a                	sd	s2,48(sp)
    e8869a88:	f44e                	sd	s3,40(sp)
    e8869a8a:	f052                	sd	s4,32(sp)
    e8869a8c:	ec56                	sd	s5,24(sp)
    e8869a8e:	e85a                	sd	s6,16(sp)
    e8869a90:	fc26                	sd	s1,56(sp)
	{
		oldCount = ctx->rateUpdateCount;
    e8869a92:	45852483          	lw	s1,1112(a0)
		oldNdx = oldCount % countof( ctx->rateUpdateSamples );
    e8869a96:	49f9                	li	s3,30
    e8869a98:	842a                	mv	s0,a0
    e8869a9a:	0334f9bb          	remuw	s3,s1,s3
		newCount = oldCount + 1;
		AirTunesClock_GetSynchronizedTimeNearUpTicks( airTunesClock, &atTime, inHostTime );
    e8869a9e:	853e                	mv	a0,a5
    e8869aa0:	8aae                	mv	s5,a1
    e8869aa2:	858a                	mv	a1,sp
    e8869aa4:	8932                	mv	s2,a2
    e8869aa6:	1ef070ef          	jal	ra,e8871494 <AirTunesClock_GetSynchronizedTimeNearUpTicks>
		newSample				= &ctx->rateUpdateSamples[ oldNdx ];
		newSample->hostTime		= AirTunesTime_ToNTP( &atTime );
    e8869aaa:	8a22                	mv	s4,s0
    e8869aac:	47e1                	li	a5,24
    e8869aae:	00c16703          	lwu	a4,12(sp)
		newSample->hostTimeRaw	= UpTicksToNanoseconds( inHostTime );
    e8869ab2:	854a                	mv	a0,s2
		newCount = oldCount + 1;
    e8869ab4:	00148b1b          	addiw	s6,s1,1
    e8869ab8:	84da                	mv	s1,s6
		newSample->hostTime		= AirTunesTime_ToNTP( &atTime );
    e8869aba:	7c09b98b          	extu	s3,s3,31,0
    e8869abe:	20f99a0b          	mula	s4,s3,a5
    e8869ac2:	4782                	lw	a5,0(sp)
    e8869ac4:	1782                	slli	a5,a5,0x20
    e8869ac6:	8fd9                	or	a5,a5,a4
    e8869ac8:	18fa3423          	sd	a5,392(s4)
		newSample->hostTimeRaw	= UpTicksToNanoseconds( inHostTime );
    e8869acc:	f8af70ef          	jal	ra,e8861256 <UpTicksToNanoseconds>
    e8869ad0:	18aa3823          	sd	a0,400(s4)
		newSample->sampleTime	= inSampleTime;
    e8869ad4:	195a2c23          	sw	s5,408(s4)
		
		pthread_mutex_lock( ctx->zeroTimeLockPtr );
    e8869ad8:	48043503          	ld	a0,1152(s0)
    e8869adc:	042120ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		ctx->zeroTime = *newSample;
    e8869ae0:	188a3683          	ld	a3,392(s4)
		pthread_mutex_unlock( ctx->zeroTimeLockPtr );
    e8869ae4:	48043503          	ld	a0,1152(s0)
		ctx->zeroTime = *newSample;
    e8869ae8:	46d43023          	sd	a3,1120(s0)
    e8869aec:	190a3683          	ld	a3,400(s4)
    e8869af0:	46d43423          	sd	a3,1128(s0)
    e8869af4:	198a3703          	ld	a4,408(s4)
    e8869af8:	46e43823          	sd	a4,1136(s0)
		pthread_mutex_unlock( ctx->zeroTimeLockPtr );
    e8869afc:	066120ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		
		if( newCount >= 8 )
    e8869b00:	479d                	li	a5,7
    e8869b02:	0d67f663          	bgeu	a5,s6,e8869bce <_UpdateEstimatedRate+0x162>
		{
			oldSample = &ctx->rateUpdateSamples[ newCount % Min( newCount, countof( ctx->rateUpdateSamples ) ) ];
    e8869b06:	46f9                	li	a3,30
    e8869b08:	7c0b370b          	extu	a4,s6,31,0
    e8869b0c:	7c0b378b          	extu	a5,s6,31,0
    e8869b10:	0166f363          	bgeu	a3,s6,e8869b16 <_UpdateEstimatedRate+0xaa>
    e8869b14:	47f9                	li	a5,30
    e8869b16:	02f777b3          	remu	a5,a4,a5
			scale = ( newSample->hostTime - oldSample->hostTime ) * kNTPFraction;
    e8869b1a:	86a2                	mv	a3,s0
    e8869b1c:	4761                	li	a4,24
    e8869b1e:	8622                	mv	a2,s0
    e8869b20:	20e7960b          	mula	a2,a5,a4
    e8869b24:	20e9968b          	mula	a3,s3,a4
    e8869b28:	8732                	mv	a4,a2
    e8869b2a:	18863603          	ld	a2,392(a2)
    e8869b2e:	1886b783          	ld	a5,392(a3)
    e8869b32:	8f91                	sub	a5,a5,a2
    e8869b34:	d237f7d3          	fcvt.d.lu	fa5,a5
    e8869b38:	00061797          	auipc	a5,0x61
    e8869b3c:	5207b707          	fld	fa4,1312(a5) # e88cb058 <kAirPlayReceiverServerClass+0x1660>
    e8869b40:	12e7f753          	fmul.d	fa4,fa5,fa4
			if( scale > 0 )
    e8869b44:	f20007d3          	fmv.d.x	fa5,zero
    e8869b48:	a2e797d3          	flt.d	a5,fa5,fa4
    e8869b4c:	c3c9                	beqz	a5,e8869bce <_UpdateEstimatedRate+0x162>
			{
				rate = ( newSample->sampleTime - oldSample->sampleTime ) / scale;
    e8869b4e:	19872703          	lw	a4,408(a4) # 1198 <memcmp-0xe87fee68>
    e8869b52:	1986a783          	lw	a5,408(a3)
				ctx->rateAvg = (Float32) MovingAverageF( ctx->rateAvg, rate, 0.125 );
    e8869b56:	45c42787          	flw	fa5,1116(s0)
				atr_stats_ulog( ( kLogLevelVerbose + 1 ) | kLogLevelFlagDontRateLimit, "%s: Estimated rate: %.3f\n", 
    e8869b5a:	0006b517          	auipc	a0,0x6b
    e8869b5e:	7c650513          	addi	a0,a0,1990 # e88d5320 <gLogCategory_AirPlayReceiverStats>
				rate = ( newSample->sampleTime - oldSample->sampleTime ) / scale;
    e8869b62:	9f99                	subw	a5,a5,a4
				ctx->rateAvg = (Float32) MovingAverageF( ctx->rateAvg, rate, 0.125 );
    e8869b64:	420786d3          	fcvt.d.s	fa3,fa5
				rate = ( newSample->sampleTime - oldSample->sampleTime ) / scale;
    e8869b68:	d21787d3          	fcvt.d.wu	fa5,a5
				atr_stats_ulog( ( kLogLevelVerbose + 1 ) | kLogLevelFlagDontRateLimit, "%s: Estimated rate: %.3f\n", 
    e8869b6c:	4755                	li	a4,21
				rate = ( newSample->sampleTime - oldSample->sampleTime ) / scale;
    e8869b6e:	1ae7f7d3          	fdiv.d	fa5,fa5,fa4
				ctx->rateAvg = (Float32) MovingAverageF( ctx->rateAvg, rate, 0.125 );
    e8869b72:	00061797          	auipc	a5,0x61
    e8869b76:	5de7b707          	fld	fa4,1502(a5) # e88cb150 <kAirPlayReceiverServerClass+0x1758>
    e8869b7a:	12e7f7d3          	fmul.d	fa5,fa5,fa4
    e8869b7e:	00061797          	auipc	a5,0x61
    e8869b82:	5da7b707          	fld	fa4,1498(a5) # e88cb158 <kAirPlayReceiverServerClass+0x1760>
				atr_stats_ulog( ( kLogLevelVerbose + 1 ) | kLogLevelFlagDontRateLimit, "%s: Estimated rate: %.3f\n", 
    e8869b86:	411c                	lw	a5,0(a0)
				ctx->rateAvg = (Float32) MovingAverageF( ctx->rateAvg, rate, 0.125 );
    e8869b88:	7ae6f7c3          	fmadd.d	fa5,fa3,fa4,fa5
    e8869b8c:	4017f7d3          	fcvt.s.d	fa5,fa5
    e8869b90:	44f42e27          	fsw	fa5,1116(s0)
				atr_stats_ulog( ( kLogLevelVerbose + 1 ) | kLogLevelFlagDontRateLimit, "%s: Estimated rate: %.3f\n", 
    e8869b94:	02f74d63          	blt	a4,a5,e8869bce <_UpdateEstimatedRate+0x162>
    e8869b98:	577d                	li	a4,-1
    e8869b9a:	04e78b63          	beq	a5,a4,e8869bf0 <_UpdateEstimatedRate+0x184>
    e8869b9e:	45c42787          	flw	fa5,1116(s0)
    e8869ba2:	6818                	ld	a4,16(s0)
    e8869ba4:	00400637          	lui	a2,0x400
    e8869ba8:	420787d3          	fcvt.d.s	fa5,fa5
    e8869bac:	00061697          	auipc	a3,0x61
    e8869bb0:	5b468693          	addi	a3,a3,1460 # e88cb160 <kAirPlayReceiverServerClass+0x1768>
    e8869bb4:	0655                	addi	a2,a2,21
    e8869bb6:	e20787d3          	fmv.x.d	a5,fa5
    e8869bba:	00062597          	auipc	a1,0x62
    e8869bbe:	ae658593          	addi	a1,a1,-1306 # e88cb6a0 <__PRETTY_FUNCTION__.14608>
    e8869bc2:	0006b517          	auipc	a0,0x6b
    e8869bc6:	75e50513          	addi	a0,a0,1886 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e8869bca:	8abea0ef          	jal	ra,e8854474 <LogPrintF>
					ctx->label, ctx->rateAvg );
			}
		}
		ctx->rateUpdateCount = newCount;
		ctx->rateUpdateNextTicks = inHostTime + ctx->rateUpdateIntervalTicks;
    e8869bce:	18043603          	ld	a2,384(s0)
		ctx->rateUpdateCount = newCount;
    e8869bd2:	44942c23          	sw	s1,1112(s0)
		ctx->rateUpdateNextTicks = inHostTime + ctx->rateUpdateIntervalTicks;
    e8869bd6:	9932                	add	s2,s2,a2
    e8869bd8:	17243c23          	sd	s2,376(s0)
	}
}
    e8869bdc:	60a6                	ld	ra,72(sp)
    e8869bde:	6406                	ld	s0,64(sp)
    e8869be0:	74e2                	ld	s1,56(sp)
    e8869be2:	7942                	ld	s2,48(sp)
    e8869be4:	79a2                	ld	s3,40(sp)
    e8869be6:	7a02                	ld	s4,32(sp)
    e8869be8:	6ae2                	ld	s5,24(sp)
    e8869bea:	6b42                	ld	s6,16(sp)
    e8869bec:	6161                	addi	sp,sp,80
    e8869bee:	8082                	ret
				atr_stats_ulog( ( kLogLevelVerbose + 1 ) | kLogLevelFlagDontRateLimit, "%s: Estimated rate: %.3f\n", 
    e8869bf0:	004005b7          	lui	a1,0x400
    e8869bf4:	05d5                	addi	a1,a1,21
    e8869bf6:	c7cea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8869bfa:	d971                	beqz	a0,e8869bce <_UpdateEstimatedRate+0x162>
    e8869bfc:	b74d                	j	e8869b9e <_UpdateEstimatedRate+0x132>
    e8869bfe:	8082                	ret

00000000e8869c00 <_TimingFinalize>:
{
    e8869c00:	1101                	addi	sp,sp,-32
    e8869c02:	f891540b          	sdd	s0,s1,(sp),0,4
	wasStarted = IsValidSocket( inSession->timingSock );
    e8869c06:	6405                	lui	s0,0x1
    e8869c08:	942a                	add	s0,s0,a0
{
    e8869c0a:	ec06                	sd	ra,24(sp)
    e8869c0c:	e84a                	sd	s2,16(sp)
	if( inSession->timingThreadPtr )
    e8869c0e:	7d043783          	ld	a5,2000(s0) # 17d0 <memcmp-0xe87fe830>
{
    e8869c12:	84aa                	mv	s1,a0
	wasStarted = IsValidSocket( inSession->timingSock );
    e8869c14:	79842903          	lw	s2,1944(s0)
	if( inSession->timingThreadPtr )
    e8869c18:	cf99                	beqz	a5,e8869c36 <_TimingFinalize+0x36>
		err = SendSelfConnectedLoopbackMessage( inSession->timingCmdSock, "q", 1 );
    e8869c1a:	7c842503          	lw	a0,1992(s0)
    e8869c1e:	4605                	li	a2,1
    e8869c20:	00061597          	auipc	a1,0x61
    e8869c24:	d5058593          	addi	a1,a1,-688 # e88ca970 <kAirPlayReceiverServerClass+0xf78>
    e8869c28:	913eb0ef          	jal	ra,e885553a <SendSelfConnectedLoopbackMessage>
		while(inSession->timingThreadRun)
    e8869c2c:	7d844783          	lbu	a5,2008(s0)
    e8869c30:	efa5                	bnez	a5,e8869ca8 <_TimingFinalize+0xa8>
		inSession->timingThreadPtr = NULL;
    e8869c32:	7c043823          	sd	zero,2000(s0)
	ForgetSocket( &inSession->timingCmdSock );
    e8869c36:	6405                	lui	s0,0x1
    e8869c38:	9426                	add	s0,s0,s1
    e8869c3a:	7c842503          	lw	a0,1992(s0) # 17c8 <memcmp-0xe87fe838>
    e8869c3e:	00054763          	bltz	a0,e8869c4c <_TimingFinalize+0x4c>
    e8869c42:	5601b0ef          	jal	ra,e88851a2 <lwip_close>
    e8869c46:	57fd                	li	a5,-1
    e8869c48:	7cf42423          	sw	a5,1992(s0)
	ForgetSocket( &inSession->timingSock );
    e8869c4c:	6785                	lui	a5,0x1
    e8869c4e:	94be                	add	s1,s1,a5
    e8869c50:	7984a503          	lw	a0,1944(s1)
    e8869c54:	00054763          	bltz	a0,e8869c62 <_TimingFinalize+0x62>
    e8869c58:	54a1b0ef          	jal	ra,e88851a2 <lwip_close>
    e8869c5c:	57fd                	li	a5,-1
    e8869c5e:	78f4ac23          	sw	a5,1944(s1)
	if( wasStarted ) atr_ulog( kLogLevelTrace, "Timing finalized\n" );
    e8869c62:	02094c63          	bltz	s2,e8869c9a <_TimingFinalize+0x9a>
    e8869c66:	0006b517          	auipc	a0,0x6b
    e8869c6a:	5fa50513          	addi	a0,a0,1530 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869c6e:	411c                	lw	a5,0(a0)
    e8869c70:	4779                	li	a4,30
    e8869c72:	02f74463          	blt	a4,a5,e8869c9a <_TimingFinalize+0x9a>
    e8869c76:	577d                	li	a4,-1
    e8869c78:	02e78c63          	beq	a5,a4,e8869cb0 <_TimingFinalize+0xb0>
    e8869c7c:	00061697          	auipc	a3,0x61
    e8869c80:	37c68693          	addi	a3,a3,892 # e88caff8 <kAirPlayReceiverServerClass+0x1600>
    e8869c84:	4679                	li	a2,30
    e8869c86:	00062597          	auipc	a1,0x62
    e8869c8a:	92a58593          	addi	a1,a1,-1750 # e88cb5b0 <__PRETTY_FUNCTION__.14312>
    e8869c8e:	0006b517          	auipc	a0,0x6b
    e8869c92:	5d250513          	addi	a0,a0,1490 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869c96:	fdeea0ef          	jal	ra,e8854474 <LogPrintF>
}
    e8869c9a:	60e2                	ld	ra,24(sp)
    e8869c9c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8869ca0:	6942                	ld	s2,16(sp)
    e8869ca2:	4501                	li	a0,0
    e8869ca4:	6105                	addi	sp,sp,32
    e8869ca6:	8082                	ret
			Sleep(1);
    e8869ca8:	4505                	li	a0,1
    e8869caa:	36c120ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e8869cae:	bfbd                	j	e8869c2c <_TimingFinalize+0x2c>
	if( wasStarted ) atr_ulog( kLogLevelTrace, "Timing finalized\n" );
    e8869cb0:	45f9                	li	a1,30
    e8869cb2:	bc0ea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8869cb6:	d175                	beqz	a0,e8869c9a <_TimingFinalize+0x9a>
    e8869cb8:	b7d1                	j	e8869c7c <_TimingFinalize+0x7c>

00000000e8869cba <_TimingInitialize>:
{
    e8869cba:	715d                	addi	sp,sp,-80
    e8869cbc:	fc26                	sd	s1,56(sp)
	SockAddrCopy( &inSession->peerAddr, &sip );
    e8869cbe:	858a                	mv	a1,sp
{
    e8869cc0:	84aa                	mv	s1,a0
	SockAddrCopy( &inSession->peerAddr, &sip );
    e8869cc2:	0bc50513          	addi	a0,a0,188
{
    e8869cc6:	e486                	sd	ra,72(sp)
    e8869cc8:	e0a2                	sd	s0,64(sp)
    e8869cca:	f44e                	sd	s3,40(sp)
    e8869ccc:	f84a                	sd	s2,48(sp)
	SockAddrCopy( &inSession->peerAddr, &sip );
    e8869cce:	da9ec0ef          	jal	ra,e8856a76 <SockAddrCopy>
	err = ServerSocketOpen( sip.sa.sa_family, SOCK_DGRAM, IPPROTO_UDP, -kAirPlayPort_TimeSyncClient, 
    e8869cd2:	6405                	lui	s0,0x1
    e8869cd4:	00114503          	lbu	a0,1(sp)
    e8869cd8:	79840813          	addi	a6,s0,1944 # 1798 <memcmp-0xe87fe868>
    e8869cdc:	79c40713          	addi	a4,s0,1948
    e8869ce0:	9826                	add	a6,a6,s1
    e8869ce2:	57fd                	li	a5,-1
    e8869ce4:	9726                	add	a4,a4,s1
    e8869ce6:	4681                	li	a3,0
    e8869ce8:	4645                	li	a2,17
    e8869cea:	4589                	li	a1,2
    e8869cec:	aa1ec0ef          	jal	ra,e885678c <ServerSocketOpen>
	require_noerr( err, exit );
    e8869cf0:	0006b997          	auipc	s3,0x6b
    e8869cf4:	57098993          	addi	s3,s3,1392 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869cf8:	0e051463          	bnez	a0,e8869de0 <_TimingInitialize+0x126>
	SocketSetPacketTimestamps( inSession->timingSock, true );
    e8869cfc:	9426                	add	s0,s0,s1
    e8869cfe:	79842503          	lw	a0,1944(s0)
    e8869d02:	4585                	li	a1,1
    e8869d04:	f24ec0ef          	jal	ra,e8856428 <SocketSetPacketTimestamps>
	SocketSetQoS( inSession->timingSock, kSocketQoS_NTP );
    e8869d08:	79842503          	lw	a0,1944(s0)
    e8869d0c:	45d1                	li	a1,20
    e8869d0e:	f1eec0ef          	jal	ra,e885642c <SocketSetQoS>
	SockAddrSetPort( &sip, inSession->timingPortRemote );
    e8869d12:	7a042583          	lw	a1,1952(s0)
    e8869d16:	850a                	mv	a0,sp
    e8869d18:	d05ec0ef          	jal	ra,e8856a1c <SockAddrSetPort>
	inSession->timingRemoteAddr = sip;
    e8869d1c:	4671                	li	a2,28
    e8869d1e:	858a                	mv	a1,sp
    e8869d20:	7a440513          	addi	a0,s0,1956
    e8869d24:	b44960ef          	jal	ra,e8800068 <memcpy>
	inSession->timingRemoteLen  = SockAddrGetSize( &sip );
    e8869d28:	850a                	mv	a0,sp
    e8869d2a:	8a7ec0ef          	jal	ra,e88565d0 <SockAddrGetSize>
    e8869d2e:	0005061b          	sext.w	a2,a0
	err = connect( inSession->timingSock, &sip.sa, inSession->timingRemoteLen );
    e8869d32:	79842503          	lw	a0,1944(s0)
	inSession->timingRemoteLen  = SockAddrGetSize( &sip );
    e8869d36:	7cc42023          	sw	a2,1984(s0)
	err = connect( inSession->timingSock, &sip.sa, inSession->timingRemoteLen );
    e8869d3a:	858a                	mv	a1,sp
    e8869d3c:	5e81b0ef          	jal	ra,e8885324 <lwip_connect>
	err = map_socket_noerr_errno( inSession->timingSock, err );
    e8869d40:	c911                	beqz	a0,e8869d54 <_TimingInitialize+0x9a>
    e8869d42:	0007b797          	auipc	a5,0x7b
    e8869d46:	8e678793          	addi	a5,a5,-1818 # e88e4628 <lwip_errno>
    e8869d4a:	4388                	lw	a0,0(a5)
    e8869d4c:	e501                	bnez	a0,e8869d54 <_TimingInitialize+0x9a>
    e8869d4e:	7579                	lui	a0,0xffffe
    e8869d50:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	inSession->timingConnected = !err;
    e8869d54:	6785                	lui	a5,0x1
    e8869d56:	00153513          	seqz	a0,a0
    e8869d5a:	00f48733          	add	a4,s1,a5
    e8869d5e:	7ca70223          	sb	a0,1988(a4)
	err = OpenSelfConnectedLoopbackSocket( &inSession->timingCmdSock );
    e8869d62:	7c878513          	addi	a0,a5,1992 # 17c8 <memcmp-0xe87fe838>
    e8869d66:	9526                	add	a0,a0,s1
    e8869d68:	f2ceb0ef          	jal	ra,e8855494 <OpenSelfConnectedLoopbackSocket>
    e8869d6c:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e8869d6e:	e935                	bnez	a0,e8869de2 <_TimingInitialize+0x128>
	atr_ulog( kLogLevelTrace, "Timing set up on port %d to port %d\n", inSession->timingPortLocal, inSession->timingPortRemote );
    e8869d70:	0009a783          	lw	a5,0(s3)
    e8869d74:	4779                	li	a4,30
    e8869d76:	02f74a63          	blt	a4,a5,e8869daa <_TimingInitialize+0xf0>
    e8869d7a:	577d                	li	a4,-1
    e8869d7c:	02e78f63          	beq	a5,a4,e8869dba <_TimingInitialize+0x100>
    e8869d80:	6785                	lui	a5,0x1
    e8869d82:	94be                	add	s1,s1,a5
    e8869d84:	7a04a783          	lw	a5,1952(s1)
    e8869d88:	79c4a703          	lw	a4,1948(s1)
    e8869d8c:	00061697          	auipc	a3,0x61
    e8869d90:	28468693          	addi	a3,a3,644 # e88cb010 <kAirPlayReceiverServerClass+0x1618>
    e8869d94:	4679                	li	a2,30
    e8869d96:	00062597          	auipc	a1,0x62
    e8869d9a:	80258593          	addi	a1,a1,-2046 # e88cb598 <__PRETTY_FUNCTION__.14301>
    e8869d9e:	0006b517          	auipc	a0,0x6b
    e8869da2:	4c250513          	addi	a0,a0,1218 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869da6:	eceea0ef          	jal	ra,e8854474 <LogPrintF>
}
    e8869daa:	60a6                	ld	ra,72(sp)
    e8869dac:	6406                	ld	s0,64(sp)
    e8869dae:	854a                	mv	a0,s2
    e8869db0:	74e2                	ld	s1,56(sp)
    e8869db2:	7942                	ld	s2,48(sp)
    e8869db4:	79a2                	ld	s3,40(sp)
    e8869db6:	6161                	addi	sp,sp,80
    e8869db8:	8082                	ret
	atr_ulog( kLogLevelTrace, "Timing set up on port %d to port %d\n", inSession->timingPortLocal, inSession->timingPortRemote );
    e8869dba:	45f9                	li	a1,30
    e8869dbc:	0006b517          	auipc	a0,0x6b
    e8869dc0:	4a450513          	addi	a0,a0,1188 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869dc4:	aaeea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8869dc8:	d16d                	beqz	a0,e8869daa <_TimingInitialize+0xf0>
    e8869dca:	bf5d                	j	e8869d80 <_TimingInitialize+0xc6>
		atr_ulog( kLogLevelWarning, "### Timing setup failed: %#m\n", err );
    e8869dcc:	03c00593          	li	a1,60
    e8869dd0:	0006b517          	auipc	a0,0x6b
    e8869dd4:	49050513          	addi	a0,a0,1168 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869dd8:	a9aea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8869ddc:	cd0d                	beqz	a0,e8869e16 <_TimingInitialize+0x15c>
    e8869dde:	a819                	j	e8869df4 <_TimingInitialize+0x13a>
    e8869de0:	892a                	mv	s2,a0
    e8869de2:	0009a783          	lw	a5,0(s3)
    e8869de6:	03c00713          	li	a4,60
    e8869dea:	02f74663          	blt	a4,a5,e8869e16 <_TimingInitialize+0x15c>
    e8869dee:	577d                	li	a4,-1
    e8869df0:	fce78ee3          	beq	a5,a4,e8869dcc <_TimingInitialize+0x112>
    e8869df4:	874a                	mv	a4,s2
    e8869df6:	00061697          	auipc	a3,0x61
    e8869dfa:	24268693          	addi	a3,a3,578 # e88cb038 <kAirPlayReceiverServerClass+0x1640>
    e8869dfe:	03c00613          	li	a2,60
    e8869e02:	00061597          	auipc	a1,0x61
    e8869e06:	79658593          	addi	a1,a1,1942 # e88cb598 <__PRETTY_FUNCTION__.14301>
    e8869e0a:	0006b517          	auipc	a0,0x6b
    e8869e0e:	45650513          	addi	a0,a0,1110 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869e12:	e62ea0ef          	jal	ra,e8854474 <LogPrintF>
		_TimingFinalize( inSession );
    e8869e16:	8526                	mv	a0,s1
    e8869e18:	de9ff0ef          	jal	ra,e8869c00 <_TimingFinalize>
	return( err );
    e8869e1c:	b779                	j	e8869daa <_TimingInitialize+0xf0>

00000000e8869e1e <_ControlIdleStateTransition>:
{
    e8869e1e:	7155                	addi	sp,sp,-208
    e8869e20:	f54e                	sd	s3,168(sp)
    e8869e22:	e586                	sd	ra,200(sp)
    e8869e24:	e1a2                	sd	s0,192(sp)
    e8869e26:	fd26                	sd	s1,184(sp)
    e8869e28:	f94a                	sd	s2,176(sp)
    e8869e2a:	f152                	sd	s4,160(sp)
    e8869e2c:	ed56                	sd	s5,152(sp)
    e8869e2e:	e95a                	sd	s6,144(sp)
    e8869e30:	e55e                	sd	s7,136(sp)
    e8869e32:	e162                	sd	s8,128(sp)
    e8869e34:	fce6                	sd	s9,120(sp)
    e8869e36:	f8ea                	sd	s10,112(sp)
    e8869e38:	f4ee                	sd	s11,104(sp)
	idle = !_UsingScreenOrAudio( inSession );
    e8869e3a:	46052783          	lw	a5,1120(a0)
    e8869e3e:	4981                	li	s3,0
    e8869e40:	ef81                	bnez	a5,e8869e58 <_ControlIdleStateTransition+0x3a>
    e8869e42:	6785                	lui	a5,0x1
    e8869e44:	97aa                	add	a5,a5,a0
    e8869e46:	bd87a783          	lw	a5,-1064(a5) # bd8 <memcmp-0xe87ff428>
    e8869e4a:	e799                	bnez	a5,e8869e58 <_ControlIdleStateTransition+0x3a>
    e8869e4c:	6789                	lui	a5,0x2
    e8869e4e:	97aa                	add	a5,a5,a0
    e8869e50:	9387c983          	lbu	s3,-1736(a5) # 1938 <memcmp-0xe87fe6c8>
    e8869e54:	0019b993          	seqz	s3,s3
    e8869e58:	0ff9f793          	andi	a5,s3,255
    e8869e5c:	ec3e                	sd	a5,24(sp)
	carplay_idle = idle;
    e8869e5e:	0006b797          	auipc	a5,0x6b
    e8869e62:	6b37a323          	sw	s3,1702(a5) # e88d5504 <carplay_idle>
	require_action_quiet( ( !inSession->sessionIdleValid || ( idle != inSession->sessionIdle ) ), exit, err = kNoErr );
    e8869e66:	44954783          	lbu	a5,1097(a0)
    e8869e6a:	cb81                	beqz	a5,e8869e7a <_ControlIdleStateTransition+0x5c>
    e8869e6c:	44854703          	lbu	a4,1096(a0)
    e8869e70:	0ff9f793          	andi	a5,s3,255
    e8869e74:	4c01                	li	s8,0
    e8869e76:	10f70763          	beq	a4,a5,e8869f84 <_ControlIdleStateTransition+0x166>
	atr_ulog( kLogLevelTrace, "mainAudio %c. altAudio %c. screen %c\n",
    e8869e7a:	0006b497          	auipc	s1,0x6b
    e8869e7e:	3e648493          	addi	s1,s1,998 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869e82:	409c                	lw	a5,0(s1)
    e8869e84:	4779                	li	a4,30
    e8869e86:	8a2e                	mv	s4,a1
    e8869e88:	842a                	mv	s0,a0
    e8869e8a:	06f74363          	blt	a4,a5,e8869ef0 <_ControlIdleStateTransition+0xd2>
    e8869e8e:	577d                	li	a4,-1
    e8869e90:	04e78b63          	beq	a5,a4,e8869ee6 <_ControlIdleStateTransition+0xc8>
    e8869e94:	46042783          	lw	a5,1120(s0)
    e8869e98:	05900713          	li	a4,89
    e8869e9c:	e399                	bnez	a5,e8869ea2 <_ControlIdleStateTransition+0x84>
    e8869e9e:	04e00713          	li	a4,78
    e8869ea2:	6785                	lui	a5,0x1
    e8869ea4:	97a2                	add	a5,a5,s0
    e8869ea6:	bd87a683          	lw	a3,-1064(a5) # bd8 <memcmp-0xe87ff428>
    e8869eaa:	05900793          	li	a5,89
    e8869eae:	e299                	bnez	a3,e8869eb4 <_ControlIdleStateTransition+0x96>
    e8869eb0:	04e00793          	li	a5,78
    e8869eb4:	6689                	lui	a3,0x2
    e8869eb6:	96a2                	add	a3,a3,s0
    e8869eb8:	9386c683          	lbu	a3,-1736(a3) # 1938 <memcmp-0xe87fe6c8>
    e8869ebc:	05900813          	li	a6,89
    e8869ec0:	e299                	bnez	a3,e8869ec6 <_ControlIdleStateTransition+0xa8>
    e8869ec2:	04e00813          	li	a6,78
    e8869ec6:	00060697          	auipc	a3,0x60
    e8869eca:	41268693          	addi	a3,a3,1042 # e88ca2d8 <kAirPlayReceiverServerClass+0x8e0>
    e8869ece:	4679                	li	a2,30
    e8869ed0:	00061597          	auipc	a1,0x61
    e8869ed4:	3e858593          	addi	a1,a1,1000 # e88cb2b8 <__PRETTY_FUNCTION__.13810>
    e8869ed8:	0006b517          	auipc	a0,0x6b
    e8869edc:	38850513          	addi	a0,a0,904 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869ee0:	d94ea0ef          	jal	ra,e8854474 <LogPrintF>
    e8869ee4:	a031                	j	e8869ef0 <_ControlIdleStateTransition+0xd2>
    e8869ee6:	45f9                	li	a1,30
    e8869ee8:	8526                	mv	a0,s1
    e8869eea:	988ea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8869eee:	f15d                	bnez	a0,e8869e94 <_ControlIdleStateTransition+0x76>
	if( idle )
    e8869ef0:	6905                	lui	s2,0x1
    e8869ef2:	9922                	add	s2,s2,s0
    e8869ef4:	7dc92783          	lw	a5,2012(s2) # 17dc <memcmp-0xe87fe824>
    e8869ef8:	0e098d63          	beqz	s3,e8869ff2 <_ControlIdleStateTransition+0x1d4>
		if ( _UsingIdleStateKeepAlive( inSession ) )
    e8869efc:	0607c563          	bltz	a5,e8869f66 <_ControlIdleStateTransition+0x148>
	require_action( NULL == inSession->keepAliveThreadPtr, exit, err = kAlreadyInitializedErr );
    e8869f00:	7f093783          	ld	a5,2032(s2)
    e8869f04:	e3c5                	bnez	a5,e8869fa4 <_ControlIdleStateTransition+0x186>
	ForgetSocket( &inSession->keepAliveCmdSock );
    e8869f06:	7e492503          	lw	a0,2020(s2)
    e8869f0a:	00054763          	bltz	a0,e8869f18 <_ControlIdleStateTransition+0xfa>
    e8869f0e:	2941b0ef          	jal	ra,e88851a2 <lwip_close>
    e8869f12:	57fd                	li	a5,-1
    e8869f14:	7ef92223          	sw	a5,2020(s2)
	err = OpenSelfConnectedLoopbackSocket( &inSession->keepAliveCmdSock );
    e8869f18:	6985                	lui	s3,0x1
    e8869f1a:	7e498513          	addi	a0,s3,2020 # 17e4 <memcmp-0xe87fe81c>
    e8869f1e:	9522                	add	a0,a0,s0
    e8869f20:	d74eb0ef          	jal	ra,e8855494 <OpenSelfConnectedLoopbackSocket>
    e8869f24:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e8869f26:	e151                	bnez	a0,e8869faa <_ControlIdleStateTransition+0x18c>
	pthread_attr_init(&attr);
    e8869f28:	0888                	addi	a0,sp,80
    e8869f2a:	2e9110ef          	jal	ra,e887ba12 <pthread_attr_init>
	err = pthread_create( &inSession->keepAliveThread, &attr, _IdleStateKeepAliveThread, inSession );
    e8869f2e:	7e898a13          	addi	s4,s3,2024
    e8869f32:	9a22                	add	s4,s4,s0
    e8869f34:	86a2                	mv	a3,s0
    e8869f36:	fffff617          	auipc	a2,0xfffff
    e8869f3a:	a3060613          	addi	a2,a2,-1488 # e8868966 <_IdleStateKeepAliveThread>
    e8869f3e:	088c                	addi	a1,sp,80
    e8869f40:	8552                	mv	a0,s4
    e8869f42:	303110ef          	jal	ra,e887ba44 <pthread_create>
    e8869f46:	892a                	mv	s2,a0
	pthread_attr_destroy(&attr);
    e8869f48:	0888                	addi	a0,sp,80
    e8869f4a:	2dd110ef          	jal	ra,e887ba26 <pthread_attr_destroy>
	require_noerr( err, exit );
    e8869f4e:	04091e63          	bnez	s2,e8869faa <_ControlIdleStateTransition+0x18c>
	inSession->keepAliveThreadPtr = &inSession->keepAliveThread;
    e8869f52:	99a2                	add	s3,s3,s0
    e8869f54:	7f49b823          	sd	s4,2032(s3)
			SocketSetKeepAlive( inSession->connection->httpCnx->sock, 0, 0 );
    e8869f58:	6c1c                	ld	a5,24(s0)
    e8869f5a:	4601                	li	a2,0
    e8869f5c:	4581                	li	a1,0
    e8869f5e:	679c                	ld	a5,8(a5)
    e8869f60:	5fa8                	lw	a0,120(a5)
    e8869f62:	844ec0ef          	jal	ra,e8855fa6 <SocketSetKeepAlive>
		if( NULL != inSession->timingThreadPtr ) _TimingFinalize( inSession );
    e8869f66:	6785                	lui	a5,0x1
    e8869f68:	97a2                	add	a5,a5,s0
    e8869f6a:	7d07b783          	ld	a5,2000(a5) # 17d0 <memcmp-0xe87fe830>
    e8869f6e:	c781                	beqz	a5,e8869f76 <_ControlIdleStateTransition+0x158>
    e8869f70:	8522                	mv	a0,s0
    e8869f72:	c8fff0ef          	jal	ra,e8869c00 <_TimingFinalize>
	inSession->sessionIdle = idle;
    e8869f76:	67e2                	ld	a5,24(sp)
	err = kNoErr;
    e8869f78:	4c01                	li	s8,0
	inSession->sessionIdle = idle;
    e8869f7a:	44f40423          	sb	a5,1096(s0)
	inSession->sessionIdleValid = true;
    e8869f7e:	4785                	li	a5,1
    e8869f80:	44f404a3          	sb	a5,1097(s0)
}
    e8869f84:	60ae                	ld	ra,200(sp)
    e8869f86:	640e                	ld	s0,192(sp)
    e8869f88:	8562                	mv	a0,s8
    e8869f8a:	74ea                	ld	s1,184(sp)
    e8869f8c:	794a                	ld	s2,176(sp)
    e8869f8e:	79aa                	ld	s3,168(sp)
    e8869f90:	7a0a                	ld	s4,160(sp)
    e8869f92:	6aea                	ld	s5,152(sp)
    e8869f94:	6b4a                	ld	s6,144(sp)
    e8869f96:	6baa                	ld	s7,136(sp)
    e8869f98:	6c0a                	ld	s8,128(sp)
    e8869f9a:	7ce6                	ld	s9,120(sp)
    e8869f9c:	7d46                	ld	s10,112(sp)
    e8869f9e:	7da6                	ld	s11,104(sp)
    e8869fa0:	6169                	addi	sp,sp,208
    e8869fa2:	8082                	ret
	require_action( NULL == inSession->keepAliveThreadPtr, exit, err = kAlreadyInitializedErr );
    e8869fa4:	7979                	lui	s2,0xffffe
    e8869fa6:	5c190913          	addi	s2,s2,1473 # ffffffffffffe5c1 <__DRAM0_INF_BASE+0xffffffff0000e5c1>
	if( err ) atr_ulog( kLogLevelWarning, "### Keep alive start failed: %#m\n", err );
    e8869faa:	409c                	lw	a5,0(s1)
    e8869fac:	03c00713          	li	a4,60
    e8869fb0:	faf744e3          	blt	a4,a5,e8869f58 <_ControlIdleStateTransition+0x13a>
    e8869fb4:	577d                	li	a4,-1
    e8869fb6:	02e78463          	beq	a5,a4,e8869fde <_ControlIdleStateTransition+0x1c0>
    e8869fba:	874a                	mv	a4,s2
    e8869fbc:	00060697          	auipc	a3,0x60
    e8869fc0:	34468693          	addi	a3,a3,836 # e88ca300 <kAirPlayReceiverServerClass+0x908>
    e8869fc4:	03c00613          	li	a2,60
    e8869fc8:	00061597          	auipc	a1,0x61
    e8869fcc:	53058593          	addi	a1,a1,1328 # e88cb4f8 <__PRETTY_FUNCTION__.14246>
    e8869fd0:	0006b517          	auipc	a0,0x6b
    e8869fd4:	29050513          	addi	a0,a0,656 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869fd8:	c9cea0ef          	jal	ra,e8854474 <LogPrintF>
    e8869fdc:	bfb5                	j	e8869f58 <_ControlIdleStateTransition+0x13a>
    e8869fde:	03c00593          	li	a1,60
    e8869fe2:	0006b517          	auipc	a0,0x6b
    e8869fe6:	27e50513          	addi	a0,a0,638 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e8869fea:	888ea0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8869fee:	d52d                	beqz	a0,e8869f58 <_ControlIdleStateTransition+0x13a>
    e8869ff0:	b7e9                	j	e8869fba <_ControlIdleStateTransition+0x19c>
		if ( _UsingIdleStateKeepAlive( inSession ) )
    e8869ff2:	0007cc63          	bltz	a5,e886a00a <_ControlIdleStateTransition+0x1ec>
			_IdleStateKeepAliveStop( inSession );
    e8869ff6:	8522                	mv	a0,s0
    e8869ff8:	ad3fd0ef          	jal	ra,e8867aca <_IdleStateKeepAliveStop>
			SocketSetKeepAlive( inSession->connection->httpCnx->sock, kAirPlayDataTimeoutSecs / 10, 3 );    //9 sec
    e8869ffc:	6c1c                	ld	a5,24(s0)
    e8869ffe:	460d                	li	a2,3
    e886a000:	458d                	li	a1,3
    e886a002:	679c                	ld	a5,8(a5)
    e886a004:	5fa8                	lw	a0,120(a5)
    e886a006:	fa1eb0ef          	jal	ra,e8855fa6 <SocketSetKeepAlive>
		if( !IsValidSocket( inSession->timingSock ) )
    e886a00a:	6905                	lui	s2,0x1
    e886a00c:	9922                	add	s2,s2,s0
    e886a00e:	79892783          	lw	a5,1944(s2) # 1798 <memcmp-0xe87fe868>
    e886a012:	0207d263          	bgez	a5,e886a036 <_ControlIdleStateTransition+0x218>
			err = _TimingInitialize( inSession );
    e886a016:	8522                	mv	a0,s0
    e886a018:	ca3ff0ef          	jal	ra,e8869cba <_TimingInitialize>
    e886a01c:	8c2a                	mv	s8,a0
			require_noerr( err, exit );
    e886a01e:	e505                	bnez	a0,e886a046 <_ControlIdleStateTransition+0x228>
			if( inResponseParams ) CFDictionarySetInt64( inResponseParams, CFSTR( kAirPlayKey_Port_Timing ), inSession->timingPortLocal );
    e886a020:	000a0b63          	beqz	s4,e886a036 <_ControlIdleStateTransition+0x218>
    e886a024:	79c92603          	lw	a2,1948(s2)
    e886a028:	00034597          	auipc	a1,0x34
    e886a02c:	fa858593          	addi	a1,a1,-88 # e889dfd0 <icmp6_param_problem+0xf62>
    e886a030:	8552                	mv	a0,s4
    e886a032:	e95e20ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	require_action( inSession->timingThreadPtr == NULL, exit, err = kAlreadyInitializedErr );
    e886a036:	6785                	lui	a5,0x1
    e886a038:	97a2                	add	a5,a5,s0
    e886a03a:	7d07b703          	ld	a4,2000(a5) # 17d0 <memcmp-0xe87fe830>
    e886a03e:	cf15                	beqz	a4,e886a07a <_ControlIdleStateTransition+0x25c>
    e886a040:	77f9                	lui	a5,0xffffe
    e886a042:	5c178c13          	addi	s8,a5,1473 # ffffffffffffe5c1 <__DRAM0_INF_BASE+0xffffffff0000e5c1>
	if( err ) atr_ulog( kLogLevelWarning, "### Control idle state transition failed: %#m\n", err );
    e886a046:	4098                	lw	a4,0(s1)
    e886a048:	03c00693          	li	a3,60
    e886a04c:	f2e6cce3          	blt	a3,a4,e8869f84 <_ControlIdleStateTransition+0x166>
    e886a050:	56fd                	li	a3,-1
    e886a052:	3cd70263          	beq	a4,a3,e886a416 <_ControlIdleStateTransition+0x5f8>
    e886a056:	8762                	mv	a4,s8
    e886a058:	00060697          	auipc	a3,0x60
    e886a05c:	40068693          	addi	a3,a3,1024 # e88ca458 <kAirPlayReceiverServerClass+0xa60>
    e886a060:	03c00613          	li	a2,60
    e886a064:	00061597          	auipc	a1,0x61
    e886a068:	25458593          	addi	a1,a1,596 # e88cb2b8 <__PRETTY_FUNCTION__.13810>
    e886a06c:	0006b517          	auipc	a0,0x6b
    e886a070:	1f450513          	addi	a0,a0,500 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a074:	c00ea0ef          	jal	ra,e8854474 <LogPrintF>
    e886a078:	b731                	j	e8869f84 <_ControlIdleStateTransition+0x166>
	require_action( inSession->airTunesClock, exit, err = kStateErr );
    e886a07a:	7907b703          	ld	a4,1936(a5)
    e886a07e:	e709                	bnez	a4,e886a088 <_ControlIdleStateTransition+0x26a>
    e886a080:	77f9                	lui	a5,0xffffe
    e886a082:	5cb78c13          	addi	s8,a5,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
    e886a086:	b7c1                	j	e886a046 <_ControlIdleStateTransition+0x228>
	SocketRef const		timingSock = inSession->timingSock;
    e886a088:	7987aa83          	lw	s5,1944(a5)
	FD_ZERO( &readSet );
    e886a08c:	461d                	li	a2,7
    e886a08e:	4581                	li	a1,0
    e886a090:	0088                	addi	a0,sp,64
    e886a092:	302120ef          	jal	ra,e887c394 <eLIBs_memset>
	lastRecvError	= kNoErr;
    e886a096:	4b81                	li	s7,0
			FD_SET( timingSock, &readSet );
    e886a098:	403ad793          	srai	a5,s5,0x3
    e886a09c:	e83e                	sd	a5,16(sp)
    e886a09e:	007af713          	andi	a4,s5,7
    e886a0a2:	4785                	li	a5,1
    e886a0a4:	00e797bb          	sllw	a5,a5,a4
    e886a0a8:	1c07a78b          	ext	a5,a5,7,0
    e886a0ac:	f03e                	sd	a5,32(sp)
			timeout.tv_usec = 500 * 1000;
    e886a0ae:	0007a7b7          	lui	a5,0x7a
    e886a0b2:	12078793          	addi	a5,a5,288 # 7a120 <memcmp-0xe8785ee0>
    e886a0b6:	f83e                	sd	a5,48(sp)
			n = select( timingSock + 1, &readSet, NULL, NULL, &timeout );
    e886a0b8:	001a879b          	addiw	a5,s5,1
	nRecvErrors		= 0;
    e886a0bc:	e402                	sd	zero,8(sp)
	nTimeouts		= 0;
    e886a0be:	4c81                	li	s9,0
	nSuccess		= 0;
    e886a0c0:	4b01                	li	s6,0
	nFailure		= 0;
    e886a0c2:	4a01                	li	s4,0
			atr_ulog( kLogLevelWarning, "### Time sync send error: %#m\n", err );
    e886a0c4:	0006b917          	auipc	s2,0x6b
    e886a0c8:	19c90913          	addi	s2,s2,412 # e88d5260 <gLogCategory_AirPlayReceiverCore>
			n = select( timingSock + 1, &readSet, NULL, NULL, &timeout );
    e886a0cc:	fc3e                	sd	a5,56(sp)
			err = select_errno( n );
    e886a0ce:	7d79                	lui	s10,0xffffe
		if( nFailure >= 64 )
    e886a0d0:	04000d93          	li	s11,64
			err = _TimingSendRequest( inSession );
    e886a0d4:	8522                	mv	a0,s0
    e886a0d6:	e0ffe0ef          	jal	ra,e8868ee4 <_TimingSendRequest>
    e886a0da:	8c2a                	mv	s8,a0
			if( !err ) break;
    e886a0dc:	e165                	bnez	a0,e886a1bc <_ControlIdleStateTransition+0x39e>
			FD_SET( timingSock, &readSet );
    e886a0de:	f456                	sd	s5,40(sp)
			err = select_errno( n );
    e886a0e0:	5d4d0d93          	addi	s11,s10,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
			FD_SET( timingSock, &readSet );
    e886a0e4:	7722                	ld	a4,40(sp)
    e886a0e6:	03100793          	li	a5,49
    e886a0ea:	00e7ec63          	bltu	a5,a4,e886a102 <_ControlIdleStateTransition+0x2e4>
    e886a0ee:	67c2                	ld	a5,16(sp)
    e886a0f0:	0098                	addi	a4,sp,64
    e886a0f2:	0094                	addi	a3,sp,64
    e886a0f4:	80f7478b          	lrbu	a5,a4,a5,0
    e886a0f8:	7702                	ld	a4,32(sp)
    e886a0fa:	8fd9                	or	a5,a5,a4
    e886a0fc:	6742                	ld	a4,16(sp)
    e886a0fe:	00e6d78b          	srb	a5,a3,a4,0
			timeout.tv_usec = 500 * 1000;
    e886a102:	77c2                	ld	a5,48(sp)
			n = select( timingSock + 1, &readSet, NULL, NULL, &timeout );
    e886a104:	7562                	ld	a0,56(sp)
    e886a106:	0898                	addi	a4,sp,80
    e886a108:	4681                	li	a3,0
    e886a10a:	4601                	li	a2,0
    e886a10c:	008c                	addi	a1,sp,64
			timeout.tv_sec  = 0;
    e886a10e:	e882                	sd	zero,80(sp)
			timeout.tv_usec = 500 * 1000;
    e886a110:	ecbe                	sd	a5,88(sp)
			n = select( timingSock + 1, &readSet, NULL, NULL, &timeout );
    e886a112:	41b1b0ef          	jal	ra,e8885d2c <lwip_select>
			err = select_errno( n );
    e886a116:	18a04c63          	bgtz	a0,e886a2ae <_ControlIdleStateTransition+0x490>
    e886a11a:	77f9                	lui	a5,0xffffe
    e886a11c:	5be78c13          	addi	s8,a5,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e886a120:	c909                	beqz	a0,e886a132 <_ControlIdleStateTransition+0x314>
    e886a122:	0007a797          	auipc	a5,0x7a
    e886a126:	50678793          	addi	a5,a5,1286 # e88e4628 <lwip_errno>
    e886a12a:	0007ac03          	lw	s8,0(a5)
    e886a12e:	418d9c0b          	mveqz	s8,s11,s8
				atr_ulog( kLogLevelWarning, "### Time sync select() error: %#m\n", err );
    e886a132:	4098                	lw	a4,0(s1)
    e886a134:	03c00693          	li	a3,60
    e886a138:	02e6c363          	blt	a3,a4,e886a15e <_ControlIdleStateTransition+0x340>
    e886a13c:	56fd                	li	a3,-1
    e886a13e:	14d70863          	beq	a4,a3,e886a28e <_ControlIdleStateTransition+0x470>
    e886a142:	8762                	mv	a4,s8
    e886a144:	00060697          	auipc	a3,0x60
    e886a148:	25468693          	addi	a3,a3,596 # e88ca398 <kAirPlayReceiverServerClass+0x9a0>
    e886a14c:	03c00613          	li	a2,60
    e886a150:	00061597          	auipc	a1,0x61
    e886a154:	47058593          	addi	a1,a1,1136 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a158:	854a                	mv	a0,s2
    e886a15a:	b1aea0ef          	jal	ra,e8854474 <LogPrintF>
				if( err == EINTR ) continue;
    e886a15e:	4711                	li	a4,4
    e886a160:	f8ec02e3          	beq	s8,a4,e886a0e4 <_ControlIdleStateTransition+0x2c6>
				++nTimeouts;
    e886a164:	2c85                	addiw	s9,s9,1
				++nFailure;
    e886a166:	2a05                	addiw	s4,s4,1
				if( err != lastRecvError )
    e886a168:	037c0863          	beq	s8,s7,e886a198 <_ControlIdleStateTransition+0x37a>
					atr_ulog( kLogLevelNotice, "Time negotiate receive error: %d\n", (int) err );
    e886a16c:	4098                	lw	a4,0(s1)
    e886a16e:	03200693          	li	a3,50
    e886a172:	02e6c363          	blt	a3,a4,e886a198 <_ControlIdleStateTransition+0x37a>
    e886a176:	56fd                	li	a3,-1
    e886a178:	12d70363          	beq	a4,a3,e886a29e <_ControlIdleStateTransition+0x480>
    e886a17c:	8762                	mv	a4,s8
    e886a17e:	00060697          	auipc	a3,0x60
    e886a182:	24268693          	addi	a3,a3,578 # e88ca3c0 <kAirPlayReceiverServerClass+0x9c8>
    e886a186:	03200613          	li	a2,50
    e886a18a:	00061597          	auipc	a1,0x61
    e886a18e:	43658593          	addi	a1,a1,1078 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a192:	854a                	mv	a0,s2
    e886a194:	ae0ea0ef          	jal	ra,e8854474 <LogPrintF>
		if( nSuccess >= 3 ) break;
    e886a198:	4709                	li	a4,2
    e886a19a:	21674463          	blt	a4,s6,e886a3a2 <_ControlIdleStateTransition+0x584>
		if( nFailure >= 64 )
    e886a19e:	03f00713          	li	a4,63
    e886a1a2:	01475b63          	bge	a4,s4,e886a1b8 <_ControlIdleStateTransition+0x39a>
			atr_ulog( kLogLevelError, "Too many time negotiate failures: G=%d B=%d R=%d T=%d\n", 
    e886a1a6:	409c                	lw	a5,0(s1)
    e886a1a8:	05a00713          	li	a4,90
    e886a1ac:	1af75963          	bge	a4,a5,e886a35e <_ControlIdleStateTransition+0x540>
			err = kTimeoutErr;
    e886a1b0:	77f9                	lui	a5,0xffffe
    e886a1b2:	5be78c13          	addi	s8,a5,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e886a1b6:	bd41                	j	e886a046 <_ControlIdleStateTransition+0x228>
		if( nFailure >= 64 )
    e886a1b8:	8be2                	mv	s7,s8
    e886a1ba:	bf19                	j	e886a0d0 <_ControlIdleStateTransition+0x2b2>
			atr_ulog( kLogLevelWarning, "### Time sync send error: %#m\n", err );
    e886a1bc:	4098                	lw	a4,0(s1)
    e886a1be:	03c00793          	li	a5,60
    e886a1c2:	02e7c363          	blt	a5,a4,e886a1e8 <_ControlIdleStateTransition+0x3ca>
    e886a1c6:	57fd                	li	a5,-1
    e886a1c8:	08f70a63          	beq	a4,a5,e886a25c <_ControlIdleStateTransition+0x43e>
    e886a1cc:	8762                	mv	a4,s8
    e886a1ce:	00060697          	auipc	a3,0x60
    e886a1d2:	15a68693          	addi	a3,a3,346 # e88ca328 <kAirPlayReceiverServerClass+0x930>
    e886a1d6:	03c00613          	li	a2,60
    e886a1da:	00061597          	auipc	a1,0x61
    e886a1de:	3e658593          	addi	a1,a1,998 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a1e2:	854a                	mv	a0,s2
    e886a1e4:	a90ea0ef          	jal	ra,e8854474 <LogPrintF>
			usleep( 100000 );
    e886a1e8:	4529                	li	a0,10
    e886a1ea:	62d110ef          	jal	ra,e887c016 <esKRNL_TimeDly>
			if( err != lastSendError )
    e886a1ee:	033c0a63          	beq	s8,s3,e886a222 <_ControlIdleStateTransition+0x404>
				atr_ulog( kLogLevelNotice, "Time negotiate send error: %d\n", (int) err );
    e886a1f2:	4098                	lw	a4,0(s1)
    e886a1f4:	03200793          	li	a5,50
    e886a1f8:	89e2                	mv	s3,s8
    e886a1fa:	02e7c463          	blt	a5,a4,e886a222 <_ControlIdleStateTransition+0x404>
    e886a1fe:	57fd                	li	a5,-1
    e886a200:	06f70563          	beq	a4,a5,e886a26a <_ControlIdleStateTransition+0x44c>
    e886a204:	8762                	mv	a4,s8
    e886a206:	00060697          	auipc	a3,0x60
    e886a20a:	14268693          	addi	a3,a3,322 # e88ca348 <kAirPlayReceiverServerClass+0x950>
    e886a20e:	03200613          	li	a2,50
    e886a212:	00061597          	auipc	a1,0x61
    e886a216:	3ae58593          	addi	a1,a1,942 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a21a:	854a                	mv	a0,s2
    e886a21c:	a58ea0ef          	jal	ra,e8854474 <LogPrintF>
    e886a220:	89e2                	mv	s3,s8
			if( ++nSendErrors >= 64 )
    e886a222:	3dfd                	addiw	s11,s11,-1
    e886a224:	ea0d98e3          	bnez	s11,e886a0d4 <_ControlIdleStateTransition+0x2b6>
				atr_ulog( kLogLevelError, "Too many time negotiate send failures: %d\n", (int) err );
    e886a228:	4098                	lw	a4,0(s1)
    e886a22a:	05a00693          	li	a3,90
    e886a22e:	e0e6cce3          	blt	a3,a4,e886a046 <_ControlIdleStateTransition+0x228>
    e886a232:	56fd                	li	a3,-1
    e886a234:	04d70263          	beq	a4,a3,e886a278 <_ControlIdleStateTransition+0x45a>
    e886a238:	8762                	mv	a4,s8
    e886a23a:	00060697          	auipc	a3,0x60
    e886a23e:	12e68693          	addi	a3,a3,302 # e88ca368 <kAirPlayReceiverServerClass+0x970>
    e886a242:	05a00613          	li	a2,90
    e886a246:	00061597          	auipc	a1,0x61
    e886a24a:	37a58593          	addi	a1,a1,890 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a24e:	0006b517          	auipc	a0,0x6b
    e886a252:	01250513          	addi	a0,a0,18 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a256:	a1eea0ef          	jal	ra,e8854474 <LogPrintF>
    e886a25a:	b3f5                	j	e886a046 <_ControlIdleStateTransition+0x228>
			atr_ulog( kLogLevelWarning, "### Time sync send error: %#m\n", err );
    e886a25c:	03c00593          	li	a1,60
    e886a260:	854a                	mv	a0,s2
    e886a262:	e11e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a266:	d149                	beqz	a0,e886a1e8 <_ControlIdleStateTransition+0x3ca>
    e886a268:	b795                	j	e886a1cc <_ControlIdleStateTransition+0x3ae>
				atr_ulog( kLogLevelNotice, "Time negotiate send error: %d\n", (int) err );
    e886a26a:	03200593          	li	a1,50
    e886a26e:	854a                	mv	a0,s2
    e886a270:	e03e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a274:	d555                	beqz	a0,e886a220 <_ControlIdleStateTransition+0x402>
    e886a276:	b779                	j	e886a204 <_ControlIdleStateTransition+0x3e6>
				atr_ulog( kLogLevelError, "Too many time negotiate send failures: %d\n", (int) err );
    e886a278:	05a00593          	li	a1,90
    e886a27c:	0006b517          	auipc	a0,0x6b
    e886a280:	fe450513          	addi	a0,a0,-28 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a284:	defe90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a288:	da050fe3          	beqz	a0,e886a046 <_ControlIdleStateTransition+0x228>
    e886a28c:	b775                	j	e886a238 <_ControlIdleStateTransition+0x41a>
				atr_ulog( kLogLevelWarning, "### Time sync select() error: %#m\n", err );
    e886a28e:	03c00593          	li	a1,60
    e886a292:	854a                	mv	a0,s2
    e886a294:	ddfe90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a298:	ec0503e3          	beqz	a0,e886a15e <_ControlIdleStateTransition+0x340>
    e886a29c:	b55d                	j	e886a142 <_ControlIdleStateTransition+0x324>
					atr_ulog( kLogLevelNotice, "Time negotiate receive error: %d\n", (int) err );
    e886a29e:	03200593          	li	a1,50
    e886a2a2:	854a                	mv	a0,s2
    e886a2a4:	dcfe90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a2a8:	ee0508e3          	beqz	a0,e886a198 <_ControlIdleStateTransition+0x37a>
    e886a2ac:	bdc1                	j	e886a17c <_ControlIdleStateTransition+0x35e>
			err = _TimingReceiveResponse( inSession, timingSock );
    e886a2ae:	85d6                	mv	a1,s5
    e886a2b0:	8522                	mv	a0,s0
    e886a2b2:	d45fe0ef          	jal	ra,e8868ff6 <_TimingReceiveResponse>
    e886a2b6:	8c2a                	mv	s8,a0
			if( err )
    e886a2b8:	c145                	beqz	a0,e886a358 <_ControlIdleStateTransition+0x53a>
				if( err == ECONNREFUSED )
    e886a2ba:	06f00693          	li	a3,111
    e886a2be:	4098                	lw	a4,0(s1)
    e886a2c0:	d8d503e3          	beq	a0,a3,e886a046 <_ControlIdleStateTransition+0x228>
				++nRecvErrors;
    e886a2c4:	67a2                	ld	a5,8(sp)
				atr_ulog( kLogLevelWarning, "### Time sync receive error: %#m\n", err );
    e886a2c6:	03c00693          	li	a3,60
				++nFailure;
    e886a2ca:	2a05                	addiw	s4,s4,1
				++nRecvErrors;
    e886a2cc:	2785                	addiw	a5,a5,1
    e886a2ce:	e43e                	sd	a5,8(sp)
				atr_ulog( kLogLevelWarning, "### Time sync receive error: %#m\n", err );
    e886a2d0:	02e6c363          	blt	a3,a4,e886a2f6 <_ControlIdleStateTransition+0x4d8>
    e886a2d4:	56fd                	li	a3,-1
    e886a2d6:	06d70363          	beq	a4,a3,e886a33c <_ControlIdleStateTransition+0x51e>
    e886a2da:	8762                	mv	a4,s8
    e886a2dc:	00060697          	auipc	a3,0x60
    e886a2e0:	10c68693          	addi	a3,a3,268 # e88ca3e8 <kAirPlayReceiverServerClass+0x9f0>
    e886a2e4:	03c00613          	li	a2,60
    e886a2e8:	00061597          	auipc	a1,0x61
    e886a2ec:	2d858593          	addi	a1,a1,728 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a2f0:	854a                	mv	a0,s2
    e886a2f2:	982ea0ef          	jal	ra,e8854474 <LogPrintF>
				if( err != lastRecvError )
    e886a2f6:	038b8863          	beq	s7,s8,e886a326 <_ControlIdleStateTransition+0x508>
					atr_ulog( kLogLevelNotice, "Time negotiate receive error: %d\n", (int) err );
    e886a2fa:	4098                	lw	a4,0(s1)
    e886a2fc:	03200693          	li	a3,50
    e886a300:	02e6c363          	blt	a3,a4,e886a326 <_ControlIdleStateTransition+0x508>
    e886a304:	56fd                	li	a3,-1
    e886a306:	04d70263          	beq	a4,a3,e886a34a <_ControlIdleStateTransition+0x52c>
    e886a30a:	8762                	mv	a4,s8
    e886a30c:	00060697          	auipc	a3,0x60
    e886a310:	0b468693          	addi	a3,a3,180 # e88ca3c0 <kAirPlayReceiverServerClass+0x9c8>
    e886a314:	03200613          	li	a2,50
    e886a318:	00061597          	auipc	a1,0x61
    e886a31c:	2a858593          	addi	a1,a1,680 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a320:	854a                	mv	a0,s2
    e886a322:	952ea0ef          	jal	ra,e8854474 <LogPrintF>
				if( err == kDuplicateErr )
    e886a326:	5b6d0713          	addi	a4,s10,1462
    e886a32a:	e6ec17e3          	bne	s8,a4,e886a198 <_ControlIdleStateTransition+0x37a>
					DrainUDPSocket( timingSock, 500, NULL );
    e886a32e:	4601                	li	a2,0
    e886a330:	1f400593          	li	a1,500
    e886a334:	8556                	mv	a0,s5
    e886a336:	fffea0ef          	jal	ra,e8855334 <DrainUDPSocket>
    e886a33a:	bdb9                	j	e886a198 <_ControlIdleStateTransition+0x37a>
				atr_ulog( kLogLevelWarning, "### Time sync receive error: %#m\n", err );
    e886a33c:	03c00593          	li	a1,60
    e886a340:	854a                	mv	a0,s2
    e886a342:	d31e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a346:	d945                	beqz	a0,e886a2f6 <_ControlIdleStateTransition+0x4d8>
    e886a348:	bf49                	j	e886a2da <_ControlIdleStateTransition+0x4bc>
					atr_ulog( kLogLevelNotice, "Time negotiate receive error: %d\n", (int) err );
    e886a34a:	03200593          	li	a1,50
    e886a34e:	854a                	mv	a0,s2
    e886a350:	d23e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a354:	d969                	beqz	a0,e886a326 <_ControlIdleStateTransition+0x508>
    e886a356:	bf55                	j	e886a30a <_ControlIdleStateTransition+0x4ec>
				++nSuccess;
    e886a358:	2b05                	addiw	s6,s6,1
    e886a35a:	8c5e                	mv	s8,s7
    e886a35c:	bd35                	j	e886a198 <_ControlIdleStateTransition+0x37a>
			atr_ulog( kLogLevelError, "Too many time negotiate failures: G=%d B=%d R=%d T=%d\n", 
    e886a35e:	577d                	li	a4,-1
    e886a360:	00e79c63          	bne	a5,a4,e886a378 <_ControlIdleStateTransition+0x55a>
    e886a364:	05a00593          	li	a1,90
    e886a368:	0006b517          	auipc	a0,0x6b
    e886a36c:	ef850513          	addi	a0,a0,-264 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a370:	d03e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a374:	e2050ee3          	beqz	a0,e886a1b0 <_ControlIdleStateTransition+0x392>
    e886a378:	6822                	ld	a6,8(sp)
    e886a37a:	88e6                	mv	a7,s9
    e886a37c:	87d2                	mv	a5,s4
    e886a37e:	875a                	mv	a4,s6
    e886a380:	00060697          	auipc	a3,0x60
    e886a384:	09068693          	addi	a3,a3,144 # e88ca410 <kAirPlayReceiverServerClass+0xa18>
    e886a388:	05a00613          	li	a2,90
    e886a38c:	00061597          	auipc	a1,0x61
    e886a390:	23458593          	addi	a1,a1,564 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a394:	0006b517          	auipc	a0,0x6b
    e886a398:	ecc50513          	addi	a0,a0,-308 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a39c:	8d8ea0ef          	jal	ra,e8854474 <LogPrintF>
    e886a3a0:	bd01                	j	e886a1b0 <_ControlIdleStateTransition+0x392>
	pthread_attr_init(&attr);
    e886a3a2:	00a8                	addi	a0,sp,72
	err = pthread_create( &inSession->timingThread, &attr, _TimingThread, inSession );
    e886a3a4:	6905                	lui	s2,0x1
	pthread_attr_init(&attr);
    e886a3a6:	66c110ef          	jal	ra,e887ba12 <pthread_attr_init>
	err = pthread_create( &inSession->timingThread, &attr, _TimingThread, inSession );
    e886a3aa:	7cc90993          	addi	s3,s2,1996 # 17cc <memcmp-0xe87fe834>
    e886a3ae:	99a2                	add	s3,s3,s0
    e886a3b0:	86a2                	mv	a3,s0
    e886a3b2:	fffff617          	auipc	a2,0xfffff
    e886a3b6:	f5660613          	addi	a2,a2,-170 # e8869308 <_TimingThread>
    e886a3ba:	00ac                	addi	a1,sp,72
    e886a3bc:	854e                	mv	a0,s3
    e886a3be:	686110ef          	jal	ra,e887ba44 <pthread_create>
    e886a3c2:	8c2a                	mv	s8,a0
	pthread_attr_destroy(&attr);
    e886a3c4:	00a8                	addi	a0,sp,72
    e886a3c6:	660110ef          	jal	ra,e887ba26 <pthread_attr_destroy>
	require_noerr( err, exit );
    e886a3ca:	c60c1ee3          	bnez	s8,e886a046 <_ControlIdleStateTransition+0x228>
	inSession->timingThreadPtr = &inSession->timingThread;
    e886a3ce:	9922                	add	s2,s2,s0
	atr_ulog( kLogLevelTrace, "Timing started\n" );
    e886a3d0:	409c                	lw	a5,0(s1)
	inSession->timingThreadPtr = &inSession->timingThread;
    e886a3d2:	7d393823          	sd	s3,2000(s2)
	atr_ulog( kLogLevelTrace, "Timing started\n" );
    e886a3d6:	4779                	li	a4,30
    e886a3d8:	b8f74fe3          	blt	a4,a5,e8869f76 <_ControlIdleStateTransition+0x158>
    e886a3dc:	577d                	li	a4,-1
    e886a3de:	02e78263          	beq	a5,a4,e886a402 <_ControlIdleStateTransition+0x5e4>
    e886a3e2:	00060697          	auipc	a3,0x60
    e886a3e6:	06668693          	addi	a3,a3,102 # e88ca448 <kAirPlayReceiverServerClass+0xa50>
    e886a3ea:	4679                	li	a2,30
    e886a3ec:	00061597          	auipc	a1,0x61
    e886a3f0:	1d458593          	addi	a1,a1,468 # e88cb5c0 <__PRETTY_FUNCTION__.14330>
    e886a3f4:	0006b517          	auipc	a0,0x6b
    e886a3f8:	e6c50513          	addi	a0,a0,-404 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a3fc:	878ea0ef          	jal	ra,e8854474 <LogPrintF>
		require_noerr( err, exit );
    e886a400:	be9d                	j	e8869f76 <_ControlIdleStateTransition+0x158>
	atr_ulog( kLogLevelTrace, "Timing started\n" );
    e886a402:	45f9                	li	a1,30
    e886a404:	0006b517          	auipc	a0,0x6b
    e886a408:	e5c50513          	addi	a0,a0,-420 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a40c:	c67e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a410:	b60503e3          	beqz	a0,e8869f76 <_ControlIdleStateTransition+0x158>
    e886a414:	b7f9                	j	e886a3e2 <_ControlIdleStateTransition+0x5c4>
	if( err ) atr_ulog( kLogLevelWarning, "### Control idle state transition failed: %#m\n", err );
    e886a416:	03c00593          	li	a1,60
    e886a41a:	0006b517          	auipc	a0,0x6b
    e886a41e:	e4650513          	addi	a0,a0,-442 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a422:	c51e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a426:	b4050fe3          	beqz	a0,e8869f84 <_ControlIdleStateTransition+0x166>
    e886a42a:	b135                	j	e886a056 <_ControlIdleStateTransition+0x238>

00000000e886a42c <_IdleStateKeepAliveFinalize>:
{
    e886a42c:	1101                	addi	sp,sp,-32
	wasStarted = IsValidSocket( inSession->keepAliveSock );
    e886a42e:	6785                	lui	a5,0x1
{
    e886a430:	f891540b          	sdd	s0,s1,(sp),0,4
	wasStarted = IsValidSocket( inSession->keepAliveSock );
    e886a434:	97aa                	add	a5,a5,a0
{
    e886a436:	ec06                	sd	ra,24(sp)
    e886a438:	e84a                	sd	s2,16(sp)
	wasStarted = IsValidSocket( inSession->keepAliveSock );
    e886a43a:	7dc7a903          	lw	s2,2012(a5) # 17dc <memcmp-0xe87fe824>
{
    e886a43e:	842a                	mv	s0,a0
	if( wasStarted ) _IdleStateKeepAliveStop( inSession );
    e886a440:	00094463          	bltz	s2,e886a448 <_IdleStateKeepAliveFinalize+0x1c>
    e886a444:	e86fd0ef          	jal	ra,e8867aca <_IdleStateKeepAliveStop>
	ForgetSocket( &inSession->keepAliveCmdSock );
    e886a448:	6485                	lui	s1,0x1
    e886a44a:	94a2                	add	s1,s1,s0
    e886a44c:	7e44a503          	lw	a0,2020(s1) # 17e4 <memcmp-0xe87fe81c>
    e886a450:	00054763          	bltz	a0,e886a45e <_IdleStateKeepAliveFinalize+0x32>
    e886a454:	54f1a0ef          	jal	ra,e88851a2 <lwip_close>
    e886a458:	57fd                	li	a5,-1
    e886a45a:	7ef4a223          	sw	a5,2020(s1)
	ForgetSocket( &inSession->keepAliveSock );
    e886a45e:	6785                	lui	a5,0x1
    e886a460:	943e                	add	s0,s0,a5
    e886a462:	7dc42503          	lw	a0,2012(s0)
    e886a466:	00054763          	bltz	a0,e886a474 <_IdleStateKeepAliveFinalize+0x48>
    e886a46a:	5391a0ef          	jal	ra,e88851a2 <lwip_close>
    e886a46e:	57fd                	li	a5,-1
    e886a470:	7cf42e23          	sw	a5,2012(s0)
	if( wasStarted ) atr_ulog( kLogLevelTrace, "Keep alive finalized\n" );
    e886a474:	02094c63          	bltz	s2,e886a4ac <_IdleStateKeepAliveFinalize+0x80>
    e886a478:	0006b517          	auipc	a0,0x6b
    e886a47c:	de850513          	addi	a0,a0,-536 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a480:	411c                	lw	a5,0(a0)
    e886a482:	4779                	li	a4,30
    e886a484:	02f74463          	blt	a4,a5,e886a4ac <_IdleStateKeepAliveFinalize+0x80>
    e886a488:	577d                	li	a4,-1
    e886a48a:	02e78863          	beq	a5,a4,e886a4ba <_IdleStateKeepAliveFinalize+0x8e>
    e886a48e:	00060697          	auipc	a3,0x60
    e886a492:	4ca68693          	addi	a3,a3,1226 # e88ca958 <kAirPlayReceiverServerClass+0xf60>
    e886a496:	4679                	li	a2,30
    e886a498:	00061597          	auipc	a1,0x61
    e886a49c:	09858593          	addi	a1,a1,152 # e88cb530 <__PRETTY_FUNCTION__.14263>
    e886a4a0:	0006b517          	auipc	a0,0x6b
    e886a4a4:	dc050513          	addi	a0,a0,-576 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a4a8:	fcde90ef          	jal	ra,e8854474 <LogPrintF>
}
    e886a4ac:	60e2                	ld	ra,24(sp)
    e886a4ae:	f891440b          	ldd	s0,s1,(sp),0,4
    e886a4b2:	6942                	ld	s2,16(sp)
    e886a4b4:	4501                	li	a0,0
    e886a4b6:	6105                	addi	sp,sp,32
    e886a4b8:	8082                	ret
	if( wasStarted ) atr_ulog( kLogLevelTrace, "Keep alive finalized\n" );
    e886a4ba:	45f9                	li	a1,30
    e886a4bc:	bb7e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a4c0:	d575                	beqz	a0,e886a4ac <_IdleStateKeepAliveFinalize+0x80>
    e886a4c2:	b7f1                	j	e886a48e <_IdleStateKeepAliveFinalize+0x62>

00000000e886a4c4 <_SessionLock.isra.3>:
	require_action( inSession->mutexPtr, exit, err = kNotInitializedErr );
    e886a4c4:	c119                	beqz	a0,e886a4ca <_SessionLock.isra.3+0x6>
	err = pthread_mutex_lock( inSession->mutexPtr );
    e886a4c6:	6581106f          	j	e887bb1e <pthread_mutex_lock>
}
    e886a4ca:	7579                	lui	a0,0xffffe
    e886a4cc:	5c250513          	addi	a0,a0,1474 # ffffffffffffe5c2 <__DRAM0_INF_BASE+0xffffffff0000e5c2>
    e886a4d0:	8082                	ret

00000000e886a4d2 <_SessionUnlock.isra.4>:
	require_action( inSession->mutexPtr, exit, err = kNotInitializedErr );
    e886a4d2:	c119                	beqz	a0,e886a4d8 <_SessionUnlock.isra.4+0x6>
	err = pthread_mutex_unlock( inSession->mutexPtr );
    e886a4d4:	68e1106f          	j	e887bb62 <pthread_mutex_unlock>
}
    e886a4d8:	7579                	lui	a0,0xffffe
    e886a4da:	5c250513          	addi	a0,a0,1474 # ffffffffffffe5c2 <__DRAM0_INF_BASE+0xffffffff0000e5c2>
    e886a4de:	8082                	ret

00000000e886a4e0 <_TearDownStream.isra.5>:
static void	_TearDownStream( AirPlayReceiverSessionRef inSession, AirPlayAudioStreamContext * const ctx, Boolean inIsFinalizing )
    e886a4e0:	1101                	addi	sp,sp,-32
    e886a4e2:	f891540b          	sdd	s0,s1,(sp),0,4
    e886a4e6:	ec06                	sd	ra,24(sp)
    e886a4e8:	e84a                	sd	s2,16(sp)
	if( ctx->threadPtr )
    e886a4ea:	799c                	ld	a5,48(a1)
static void	_TearDownStream( AirPlayReceiverSessionRef inSession, AirPlayAudioStreamContext * const ctx, Boolean inIsFinalizing )
    e886a4ec:	84aa                	mv	s1,a0
    e886a4ee:	842e                	mv	s0,a1
	if( ctx->threadPtr )
    e886a4f0:	cf99                	beqz	a5,e886a50e <_TearDownStream.isra.5+0x2e>
		err = SendSelfConnectedLoopbackMessage( ctx->cmdSock, "q", 1 );
    e886a4f2:	5008                	lw	a0,32(s0)
    e886a4f4:	4605                	li	a2,1
    e886a4f6:	00060597          	auipc	a1,0x60
    e886a4fa:	47a58593          	addi	a1,a1,1146 # e88ca970 <kAirPlayReceiverServerClass+0xf78>
    e886a4fe:	83ceb0ef          	jal	ra,e885553a <SendSelfConnectedLoopbackMessage>
		while(ctx->threadRun)
    e886a502:	03844783          	lbu	a5,56(s0)
    e886a506:	18079863          	bnez	a5,e886a696 <_TearDownStream.isra.5+0x1b6>
		ctx->threadPtr = NULL;
    e886a50a:	02043823          	sd	zero,48(s0)
	if( ctx->sendAudioThreadPtr )
    e886a50e:	5c843783          	ld	a5,1480(s0)
    e886a512:	c7a1                	beqz	a5,e886a55a <_TearDownStream.isra.5+0x7a>
        pthread_mutex_lock( ctx->sendAudioMutexPtr );
    e886a514:	5e843503          	ld	a0,1512(s0)
    e886a518:	606110ef          	jal	ra,e887bb1e <pthread_mutex_lock>
        pthread_cond_signal( ctx->sendAudioCondPtr );
    e886a51c:	5d843503          	ld	a0,1496(s0)
        ctx->sendAudioDone = 1;
    e886a520:	4785                	li	a5,1
    e886a522:	5ef40823          	sb	a5,1520(s0)
        pthread_cond_signal( ctx->sendAudioCondPtr );
    e886a526:	7de110ef          	jal	ra,e887bd04 <pthread_cond_signal>
        pthread_mutex_unlock( ctx->sendAudioMutexPtr );
    e886a52a:	5e843503          	ld	a0,1512(s0)
    e886a52e:	634110ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		while(ctx->sendAudioThreadRun)
    e886a532:	5d044783          	lbu	a5,1488(s0)
    e886a536:	16079463          	bnez	a5,e886a69e <_TearDownStream.isra.5+0x1be>
        pthread_mutex_forget( &ctx->sendAudioMutexPtr );
    e886a53a:	5e843503          	ld	a0,1512(s0)
        ctx->sendAudioThreadPtr = NULL;
    e886a53e:	5c043423          	sd	zero,1480(s0)
        pthread_mutex_forget( &ctx->sendAudioMutexPtr );
    e886a542:	c509                	beqz	a0,e886a54c <_TearDownStream.isra.5+0x6c>
    e886a544:	590110ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
    e886a548:	5e043423          	sd	zero,1512(s0)
        pthread_cond_forget( &ctx->sendAudioCondPtr );
    e886a54c:	5d843503          	ld	a0,1496(s0)
    e886a550:	c509                	beqz	a0,e886a55a <_TearDownStream.isra.5+0x7a>
    e886a552:	78a110ef          	jal	ra,e887bcdc <pthread_cond_destroy>
    e886a556:	5c043c23          	sd	zero,1496(s0)
	if( ctx->zeroTimeLockPtr )
    e886a55a:	48043503          	ld	a0,1152(s0)
    e886a55e:	c509                	beqz	a0,e886a568 <_TearDownStream.isra.5+0x88>
		pthread_mutex_forget( &ctx->zeroTimeLockPtr );
    e886a560:	574110ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
    e886a564:	48043023          	sd	zero,1152(s0)
	ForgetSocket( &ctx->cmdSock );
    e886a568:	5008                	lw	a0,32(s0)
    e886a56a:	00054663          	bltz	a0,e886a576 <_TearDownStream.isra.5+0x96>
    e886a56e:	4351a0ef          	jal	ra,e88851a2 <lwip_close>
    e886a572:	57fd                	li	a5,-1
    e886a574:	d01c                	sw	a5,32(s0)
	ForgetSocket( &ctx->dataSock );
    e886a576:	5048                	lw	a0,36(s0)
    e886a578:	00054663          	bltz	a0,e886a584 <_TearDownStream.isra.5+0xa4>
    e886a57c:	4271a0ef          	jal	ra,e88851a2 <lwip_close>
    e886a580:	57fd                	li	a5,-1
    e886a582:	d05c                	sw	a5,36(s0)
	RTPJitterBufferFree( &ctx->jitterBuffer );
    e886a584:	04040513          	addi	a0,s0,64
    e886a588:	214060ef          	jal	ra,e887079c <RTPJitterBufferFree>
	AudioConverterForget( &ctx->inputConverter );
    e886a58c:	75843503          	ld	a0,1880(s0)
    e886a590:	c509                	beqz	a0,e886a59a <_TearDownStream.isra.5+0xba>
    e886a592:	b08f80ef          	jal	ra,e886289a <AudioConverterDispose>
    e886a596:	74043c23          	sd	zero,1880(s0)
	ctx->inputRingRef = NULL;
    e886a59a:	5e043c23          	sd	zero,1528(s0)
	if( ctx == &inSession->mainAudioCtx )
    e886a59e:	45848793          	addi	a5,s1,1112
    e886a5a2:	0af41263          	bne	s0,a5,e886a646 <_TearDownStream.isra.5+0x166>
		inSession->flushing	= false;
    e886a5a6:	6789                	lui	a5,0x2
    e886a5a8:	97a6                	add	a5,a5,s1
		inSession->rtpAudioPort = 0;
    e886a5aa:	6905                	lui	s2,0x1
		inSession->flushing	= false;
    e886a5ac:	88078e23          	sb	zero,-1892(a5) # 189c <memcmp-0xe87fe764>
		inSession->rtpAudioPort = 0;
    e886a5b0:	9926                	add	s2,s2,s1
		ForgetSocket( &inSession->rtcpSock );
    e886a5b2:	75492503          	lw	a0,1876(s2) # 1754 <memcmp-0xe87fe8ac>
		inSession->rtpAudioPort = 0;
    e886a5b6:	34092423          	sw	zero,840(s2)
		ForgetSocket( &inSession->rtcpSock );
    e886a5ba:	00054763          	bltz	a0,e886a5c8 <_TearDownStream.isra.5+0xe8>
    e886a5be:	3e51a0ef          	jal	ra,e88851a2 <lwip_close>
    e886a5c2:	57fd                	li	a5,-1
    e886a5c4:	74f92a23          	sw	a5,1876(s2)
		ForgetMem( &inSession->source.rtcpRTListStorage );
    e886a5c8:	3804b503          	ld	a0,896(s1)
    e886a5cc:	c509                	beqz	a0,e886a5d6 <_TearDownStream.isra.5+0xf6>
    e886a5ce:	533110ef          	jal	ra,e887c300 <eLIBs_free>
    e886a5d2:	3804b023          	sd	zero,896(s1)
		ForgetMem( &inSession->nodeBufferStorage );
    e886a5d6:	6909                	lui	s2,0x2
    e886a5d8:	9926                	add	s2,s2,s1
    e886a5da:	80893503          	ld	a0,-2040(s2) # 1808 <memcmp-0xe87fe7f8>
    e886a5de:	c509                	beqz	a0,e886a5e8 <_TearDownStream.isra.5+0x108>
    e886a5e0:	521110ef          	jal	ra,e887c300 <eLIBs_free>
    e886a5e4:	80093423          	sd	zero,-2040(s2)
		ForgetMem( &inSession->nodeHeaderStorage );
    e886a5e8:	6909                	lui	s2,0x2
    e886a5ea:	9926                	add	s2,s2,s1
    e886a5ec:	81093503          	ld	a0,-2032(s2) # 1810 <memcmp-0xe87fe7f0>
    e886a5f0:	c509                	beqz	a0,e886a5fa <_TearDownStream.isra.5+0x11a>
    e886a5f2:	50f110ef          	jal	ra,e887c300 <eLIBs_free>
    e886a5f6:	80093823          	sd	zero,-2032(s2)
		ForgetMem( &inSession->decodeBuffer );
    e886a5fa:	6909                	lui	s2,0x2
    e886a5fc:	9926                	add	s2,s2,s1
    e886a5fe:	86893503          	ld	a0,-1944(s2) # 1868 <memcmp-0xe87fe798>
    e886a602:	c509                	beqz	a0,e886a60c <_TearDownStream.isra.5+0x12c>
    e886a604:	4fd110ef          	jal	ra,e887c300 <eLIBs_free>
    e886a608:	86093423          	sd	zero,-1944(s2)
		ForgetMem( &inSession->readBuffer );
    e886a60c:	6909                	lui	s2,0x2
    e886a60e:	9926                	add	s2,s2,s1
    e886a610:	87893503          	ld	a0,-1928(s2) # 1878 <memcmp-0xe87fe788>
    e886a614:	c509                	beqz	a0,e886a61e <_TearDownStream.isra.5+0x13e>
    e886a616:	4eb110ef          	jal	ra,e887c300 <eLIBs_free>
    e886a61a:	86093c23          	sd	zero,-1928(s2)
		ForgetMem( &inSession->skewAdjustBuffer );
    e886a61e:	6909                	lui	s2,0x2
    e886a620:	9926                	add	s2,s2,s1
    e886a622:	88893503          	ld	a0,-1912(s2) # 1888 <memcmp-0xe87fe778>
    e886a626:	c509                	beqz	a0,e886a630 <_TearDownStream.isra.5+0x150>
    e886a628:	4d9110ef          	jal	ra,e887c300 <eLIBs_free>
    e886a62c:	88093423          	sd	zero,-1912(s2)
		AudioConverterForget( &inSession->audioConverter );
    e886a630:	6909                	lui	s2,0x2
    e886a632:	9926                	add	s2,s2,s1
    e886a634:	8c093503          	ld	a0,-1856(s2) # 18c0 <memcmp-0xe87fe740>
    e886a638:	c509                	beqz	a0,e886a642 <_TearDownStream.isra.5+0x162>
    e886a63a:	a60f80ef          	jal	ra,e886289a <AudioConverterDispose>
    e886a63e:	8c093023          	sd	zero,-1856(s2)
		inSession->source.receiveCount = 0;
    e886a642:	2404ac23          	sw	zero,600(s1)
	if( ctx->type != kAirPlayStreamType_Invalid )
    e886a646:	441c                	lw	a5,8(s0)
	ctx->session = NULL;
    e886a648:	00043023          	sd	zero,0(s0)
	ctx->connectionID = 0;
    e886a64c:	00043c23          	sd	zero,24(s0)
	if( ctx->type != kAirPlayStreamType_Invalid )
    e886a650:	cfb9                	beqz	a5,e886a6ae <_TearDownStream.isra.5+0x1ce>
		atr_ulog( kLogLevelTrace, "%s audio torn down\n", ctx->label );
    e886a652:	0006b517          	auipc	a0,0x6b
    e886a656:	c0e50513          	addi	a0,a0,-1010 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a65a:	411c                	lw	a5,0(a0)
		ctx->type = kAirPlayStreamType_Invalid;
    e886a65c:	00042423          	sw	zero,8(s0)
		atr_ulog( kLogLevelTrace, "%s audio torn down\n", ctx->label );
    e886a660:	4779                	li	a4,30
    e886a662:	04f74663          	blt	a4,a5,e886a6ae <_TearDownStream.isra.5+0x1ce>
    e886a666:	577d                	li	a4,-1
    e886a668:	02e78f63          	beq	a5,a4,e886a6a6 <_TearDownStream.isra.5+0x1c6>
    e886a66c:	6818                	ld	a4,16(s0)
}
    e886a66e:	f891440b          	ldd	s0,s1,(sp),0,4
    e886a672:	60e2                	ld	ra,24(sp)
    e886a674:	6942                	ld	s2,16(sp)
		atr_ulog( kLogLevelTrace, "%s audio torn down\n", ctx->label );
    e886a676:	00061697          	auipc	a3,0x61
    e886a67a:	96a68693          	addi	a3,a3,-1686 # e88cafe0 <kAirPlayReceiverServerClass+0x15e8>
    e886a67e:	4679                	li	a2,30
    e886a680:	00061597          	auipc	a1,0x61
    e886a684:	01058593          	addi	a1,a1,16 # e88cb690 <__PRETTY_FUNCTION__.14593>
    e886a688:	0006b517          	auipc	a0,0x6b
    e886a68c:	bd850513          	addi	a0,a0,-1064 # e88d5260 <gLogCategory_AirPlayReceiverCore>
}
    e886a690:	6105                	addi	sp,sp,32
		atr_ulog( kLogLevelTrace, "%s audio torn down\n", ctx->label );
    e886a692:	de3e906f          	j	e8854474 <LogPrintF>
			Sleep(1);
    e886a696:	4505                	li	a0,1
    e886a698:	17f110ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e886a69c:	b59d                	j	e886a502 <_TearDownStream.isra.5+0x22>
			Sleep(1);
    e886a69e:	4505                	li	a0,1
    e886a6a0:	177110ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e886a6a4:	b579                	j	e886a532 <_TearDownStream.isra.5+0x52>
		atr_ulog( kLogLevelTrace, "%s audio torn down\n", ctx->label );
    e886a6a6:	45f9                	li	a1,30
    e886a6a8:	9cbe90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a6ac:	f161                	bnez	a0,e886a66c <_TearDownStream.isra.5+0x18c>
}
    e886a6ae:	60e2                	ld	ra,24(sp)
    e886a6b0:	f891440b          	ldd	s0,s1,(sp),0,4
    e886a6b4:	6942                	ld	s2,16(sp)
    e886a6b6:	6105                	addi	sp,sp,32
    e886a6b8:	8082                	ret

00000000e886a6ba <_ControlTearDown>:
{
    e886a6ba:	1141                	addi	sp,sp,-16
    e886a6bc:	e022                	sd	s0,0(sp)
    e886a6be:	e406                	sd	ra,8(sp)
    e886a6c0:	842a                	mv	s0,a0
	dispatch_sync_f( inSession->eventQueue, inSession, _ForgetEventClient );
    e886a6c2:	85aa                	mv	a1,a0
    e886a6c4:	42053503          	ld	a0,1056(a0)
    e886a6c8:	ffffd617          	auipc	a2,0xffffd
    e886a6cc:	4bc60613          	addi	a2,a2,1212 # e8867b84 <_ForgetEventClient>
    e886a6d0:	e4ee40ef          	jal	ra,e884ed1e <dispatch_sync_f>
	ForgetCF( &inSession->pairVerifySession );
    e886a6d4:	45043503          	ld	a0,1104(s0)
    e886a6d8:	c509                	beqz	a0,e886a6e2 <_ControlTearDown+0x28>
    e886a6da:	a71dc0ef          	jal	ra,e884714a <CFRelease>
    e886a6de:	44043823          	sd	zero,1104(s0)
	ForgetSocket( &inSession->eventSock );
    e886a6e2:	44042503          	lw	a0,1088(s0)
    e886a6e6:	00054763          	bltz	a0,e886a6f4 <_ControlTearDown+0x3a>
    e886a6ea:	2b91a0ef          	jal	ra,e88851a2 <lwip_close>
    e886a6ee:	57fd                	li	a5,-1
    e886a6f0:	44f42023          	sw	a5,1088(s0)
	if( inSession->controlSetup )
    e886a6f4:	41c44783          	lbu	a5,1052(s0)
    e886a6f8:	c7a1                	beqz	a5,e886a740 <_ControlTearDown+0x86>
		atr_ulog( kLogLevelTrace, "Control torn down\n" );
    e886a6fa:	0006b517          	auipc	a0,0x6b
    e886a6fe:	b6650513          	addi	a0,a0,-1178 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886a702:	411c                	lw	a5,0(a0)
		inSession->controlSetup = false;
    e886a704:	40040e23          	sb	zero,1052(s0)
		atr_ulog( kLogLevelTrace, "Control torn down\n" );
    e886a708:	4779                	li	a4,30
    e886a70a:	02f74b63          	blt	a4,a5,e886a740 <_ControlTearDown+0x86>
    e886a70e:	577d                	li	a4,-1
    e886a710:	02e78463          	beq	a5,a4,e886a738 <_ControlTearDown+0x7e>
}
    e886a714:	6402                	ld	s0,0(sp)
    e886a716:	60a2                	ld	ra,8(sp)
		atr_ulog( kLogLevelTrace, "Control torn down\n" );
    e886a718:	00060697          	auipc	a3,0x60
    e886a71c:	e0868693          	addi	a3,a3,-504 # e88ca520 <kAirPlayReceiverServerClass+0xb28>
    e886a720:	4679                	li	a2,30
    e886a722:	00061597          	auipc	a1,0x61
    e886a726:	bc658593          	addi	a1,a1,-1082 # e88cb2e8 <__PRETTY_FUNCTION__.13834>
    e886a72a:	0006b517          	auipc	a0,0x6b
    e886a72e:	b3650513          	addi	a0,a0,-1226 # e88d5260 <gLogCategory_AirPlayReceiverCore>
}
    e886a732:	0141                	addi	sp,sp,16
		atr_ulog( kLogLevelTrace, "Control torn down\n" );
    e886a734:	d41e906f          	j	e8854474 <LogPrintF>
    e886a738:	45f9                	li	a1,30
    e886a73a:	939e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886a73e:	f979                	bnez	a0,e886a714 <_ControlTearDown+0x5a>
}
    e886a740:	60a2                	ld	ra,8(sp)
    e886a742:	6402                	ld	s0,0(sp)
    e886a744:	0141                	addi	sp,sp,16
    e886a746:	8082                	ret

00000000e886a748 <_AddResponseStream>:
{
    e886a748:	1101                	addi	sp,sp,-32
    e886a74a:	e84a                	sd	s2,16(sp)
    e886a74c:	f891540b          	sdd	s0,s1,(sp),0,4
    e886a750:	ec06                	sd	ra,24(sp)
    e886a752:	892a                	mv	s2,a0
    e886a754:	84ae                	mv	s1,a1
	responseStreams = (CFMutableArrayRef) CFDictionaryGetCFArray( inResponseParams, CFSTR( kAirPlayKey_Streams ), NULL );
    e886a756:	a13dc0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e886a75a:	0005061b          	sext.w	a2,a0
    e886a75e:	4681                	li	a3,0
    e886a760:	00034597          	auipc	a1,0x34
    e886a764:	88858593          	addi	a1,a1,-1912 # e889dfe8 <icmp6_param_problem+0xf7a>
    e886a768:	854a                	mv	a0,s2
    e886a76a:	f41e10ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
	if( !responseStreams )
    e886a76e:	ed1d                	bnez	a0,e886a7ac <_AddResponseStream+0x64>
		responseStreams = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e886a770:	00054617          	auipc	a2,0x54
    e886a774:	00060613          	mv	a2,a2
    e886a778:	4581                	li	a1,0
    e886a77a:	a4ddc0ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e886a77e:	842a                	mv	s0,a0
		require_action( responseStreams, exit, err = kNoMemoryErr );
    e886a780:	c915                	beqz	a0,e886a7b4 <_AddResponseStream+0x6c>
		CFArrayAppendValue( responseStreams, inStreamDesc );
    e886a782:	85a6                	mv	a1,s1
    e886a784:	aeddc0ef          	jal	ra,e8847270 <CFArrayAppendValue>
		CFDictionarySetValue( inResponseParams, CFSTR( kAirPlayKey_Streams ), responseStreams );
    e886a788:	854a                	mv	a0,s2
    e886a78a:	8622                	mv	a2,s0
    e886a78c:	00034597          	auipc	a1,0x34
    e886a790:	85c58593          	addi	a1,a1,-1956 # e889dfe8 <icmp6_param_problem+0xf7a>
    e886a794:	cbfdc0ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( responseStreams );
    e886a798:	8522                	mv	a0,s0
    e886a79a:	9b1dc0ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e886a79e:	4501                	li	a0,0
}
    e886a7a0:	60e2                	ld	ra,24(sp)
    e886a7a2:	f891440b          	ldd	s0,s1,(sp),0,4
    e886a7a6:	6942                	ld	s2,16(sp)
    e886a7a8:	6105                	addi	sp,sp,32
    e886a7aa:	8082                	ret
		CFArrayAppendValue( responseStreams, inStreamDesc );
    e886a7ac:	85a6                	mv	a1,s1
    e886a7ae:	ac3dc0ef          	jal	ra,e8847270 <CFArrayAppendValue>
    e886a7b2:	b7f5                	j	e886a79e <_AddResponseStream+0x56>
		require_action( responseStreams, exit, err = kNoMemoryErr );
    e886a7b4:	7579                	lui	a0,0xffffe
    e886a7b6:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886a7ba:	b7dd                	j	e886a7a0 <_AddResponseStream+0x58>

00000000e886a7bc <_AudioDecoderDecodeFrame.constprop.15>:
	_AudioDecoderDecodeFrame( 
    e886a7bc:	7139                	addi	sp,sp,-64
    e886a7be:	f422                	sd	s0,40(sp)
    e886a7c0:	f826                	sd	s1,48(sp)
    e886a7c2:	842a                	mv	s0,a0
    e886a7c4:	fc06                	sd	ra,56(sp)
	inSession->encodedDataPtr = inSrcPtr;
    e886a7c6:	6509                	lui	a0,0x2
    e886a7c8:	9522                	add	a0,a0,s0
	inSession->encodedDataEnd = inSrcPtr + inSrcLen;
    e886a7ca:	962e                	add	a2,a2,a1
	inSession->encodedDataPtr = inSrcPtr;
    e886a7cc:	8cb53423          	sd	a1,-1848(a0) # 18c8 <memcmp-0xe87fe738>
	inSession->encodedDataEnd = inSrcPtr + inSrcLen;
    e886a7d0:	8cc53823          	sd	a2,-1840(a0)
	_AudioDecoderDecodeFrame( 
    e886a7d4:	84be                	mv	s1,a5
	frameCount									= inSession->framesPerPacket;
    e886a7d6:	41442783          	lw	a5,1044(s0)
	err = AudioConverterFillComplexBuffer( inSession->audioConverter, _AudioDecoderDecodeCallback, inSession, 
    e886a7da:	8c053503          	ld	a0,-1856(a0)
	bufferList.mBuffers[ 0 ].mData				= inDstPtr;
    e886a7de:	ec36                	sd	a3,24(sp)
	frameCount									= inSession->framesPerPacket;
    e886a7e0:	c23e                	sw	a5,4(sp)
	bufferList.mNumberBuffers					= 1;
    e886a7e2:	4785                	li	a5,1
    e886a7e4:	c43e                	sw	a5,8(sp)
	bufferList.mBuffers[ 0 ].mNumberChannels	= ctx->channels;
    e886a7e6:	5c042783          	lw	a5,1472(s0)
	err = AudioConverterFillComplexBuffer( inSession->audioConverter, _AudioDecoderDecodeCallback, inSession, 
    e886a7ea:	0054                	addi	a3,sp,4
    e886a7ec:	8622                	mv	a2,s0
	bufferList.mBuffers[ 0 ].mDataByteSize		= (uint32_t) inDstMaxLen;
    e886a7ee:	e4e1578b          	swd	a5,a4,(sp),2,3
	err = AudioConverterFillComplexBuffer( inSession->audioConverter, _AudioDecoderDecodeCallback, inSession, 
    e886a7f2:	ffffd597          	auipc	a1,0xffffd
    e886a7f6:	0ba58593          	addi	a1,a1,186 # e88678ac <_AudioDecoderDecodeCallback>
    e886a7fa:	4781                	li	a5,0
    e886a7fc:	0038                	addi	a4,sp,8
    e886a7fe:	908f80ef          	jal	ra,e8862906 <AudioConverterFillComplexBuffer>
	if( err == kUnderrunErr ) err = kNoErr;
    e886a802:	77f9                	lui	a5,0xffffe
    e886a804:	5a278793          	addi	a5,a5,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
    e886a808:	00f50363          	beq	a0,a5,e886a80e <_AudioDecoderDecodeFrame.constprop.15+0x52>
	require_noerr( err, exit );
    e886a80c:	e911                	bnez	a0,e886a820 <_AudioDecoderDecodeFrame.constprop.15+0x64>
	*outDstLen = frameCount * ctx->bytesPerUnit;
    e886a80e:	5c442783          	lw	a5,1476(s0)
    e886a812:	4712                	lw	a4,4(sp)
    e886a814:	4501                	li	a0,0
    e886a816:	02e787bb          	mulw	a5,a5,a4
    e886a81a:	7c07b78b          	extu	a5,a5,31,0
    e886a81e:	e09c                	sd	a5,0(s1)
}
    e886a820:	70e2                	ld	ra,56(sp)
    e886a822:	7422                	ld	s0,40(sp)
    e886a824:	74c2                	ld	s1,48(sp)
    e886a826:	6121                	addi	sp,sp,64
    e886a828:	8082                	ret

00000000e886a82a <_GetStreamSecurityKeys.isra.11.constprop.16>:
	_GetStreamSecurityKeys( 
    e886a82a:	715d                	addi	sp,sp,-80
    e886a82c:	e486                	sd	ra,72(sp)
    e886a82e:	e0a2                	sd	s0,64(sp)
    e886a830:	fc26                	sd	s1,56(sp)
    e886a832:	f84a                	sd	s2,48(sp)
    e886a834:	f44e                	sd	s3,40(sp)
    e886a836:	f052                	sd	s4,32(sp)
	require_action( inSession->pairVerifySession, exit, err = kStateErr );
    e886a838:	611c                	ld	a5,0(a0)
	_GetStreamSecurityKeys( 
    e886a83a:	e43a                	sd	a4,8(sp)
	char *					streamKeySaltPtr = NULL;
    e886a83c:	ec02                	sd	zero,24(sp)
	require_action( inSession->pairVerifySession, exit, err = kStateErr );
    e886a83e:	c7c1                	beqz	a5,e886a8c6 <_GetStreamSecurityKeys.isra.11.constprop.16+0x9c>
    e886a840:	892a                	mv	s2,a0
    e886a842:	8a32                	mv	s4,a2
    e886a844:	89b6                	mv	s3,a3
	streamKeySaltLen = asprintf( &streamKeySaltPtr, "%s%llu", kAirPlayPairingDataStreamKeySaltPtr, streamConnectionID );
    e886a846:	00060617          	auipc	a2,0x60
    e886a84a:	0ba60613          	addi	a2,a2,186 # e88ca900 <kAirPlayReceiverServerClass+0xf08>
    e886a84e:	86ae                	mv	a3,a1
    e886a850:	0828                	addi	a0,sp,24
    e886a852:	00057597          	auipc	a1,0x57
    e886a856:	b5658593          	addi	a1,a1,-1194 # e88c13a8 <__PRETTY_FUNCTION__.9824+0x60>
    e886a85a:	32a090ef          	jal	ra,e8873b84 <asprintf>
		err = PairingSessionDeriveKey( inSession->pairVerifySession, streamKeySaltPtr, streamKeySaltLen, 
    e886a85e:	862a                	mv	a2,a0
    e886a860:	6722                	ld	a4,8(sp)
	streamKeySaltLen = asprintf( &streamKeySaltPtr, "%s%llu", kAirPlayPairingDataStreamKeySaltPtr, streamConnectionID );
    e886a862:	84aa                	mv	s1,a0
		err = PairingSessionDeriveKey( inSession->pairVerifySession, streamKeySaltPtr, streamKeySaltLen, 
    e886a864:	65e2                	ld	a1,24(sp)
    e886a866:	00093503          	ld	a0,0(s2)
    e886a86a:	883a                	mv	a6,a4
    e886a86c:	02000793          	li	a5,32
    e886a870:	02000713          	li	a4,32
    e886a874:	00060697          	auipc	a3,0x60
    e886a878:	09c68693          	addi	a3,a3,156 # e88ca910 <kAirPlayReceiverServerClass+0xf18>
    e886a87c:	992ed0ef          	jal	ra,e8857a0e <PairingSessionDeriveKey>
    e886a880:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e886a882:	e10d                	bnez	a0,e886a8a4 <_GetStreamSecurityKeys.isra.11.constprop.16+0x7a>
	if( outInputKey ) 
    e886a884:	02098063          	beqz	s3,e886a8a4 <_GetStreamSecurityKeys.isra.11.constprop.16+0x7a>
		err = PairingSessionDeriveKey( inSession->pairVerifySession, streamKeySaltPtr, streamKeySaltLen, 
    e886a888:	65e2                	ld	a1,24(sp)
    e886a88a:	00093503          	ld	a0,0(s2)
    e886a88e:	884e                	mv	a6,s3
    e886a890:	87d2                	mv	a5,s4
    e886a892:	477d                	li	a4,31
    e886a894:	00060697          	auipc	a3,0x60
    e886a898:	0a468693          	addi	a3,a3,164 # e88ca938 <kAirPlayReceiverServerClass+0xf40>
    e886a89c:	8626                	mv	a2,s1
    e886a89e:	970ed0ef          	jal	ra,e8857a0e <PairingSessionDeriveKey>
    e886a8a2:	842a                	mv	s0,a0
	MemZeroSecure( streamKeySaltPtr, streamKeySaltLen );
    e886a8a4:	67e2                	ld	a5,24(sp)
	while( inLen-- ) *ptr++ = 0;
    e886a8a6:	94be                	add	s1,s1,a5
    e886a8a8:	02f49463          	bne	s1,a5,e886a8d0 <_GetStreamSecurityKeys.isra.11.constprop.16+0xa6>
	FreeNullSafe( streamKeySaltPtr );
    e886a8ac:	6562                	ld	a0,24(sp)
    e886a8ae:	c119                	beqz	a0,e886a8b4 <_GetStreamSecurityKeys.isra.11.constprop.16+0x8a>
    e886a8b0:	251110ef          	jal	ra,e887c300 <eLIBs_free>
}
    e886a8b4:	8522                	mv	a0,s0
    e886a8b6:	60a6                	ld	ra,72(sp)
    e886a8b8:	6406                	ld	s0,64(sp)
    e886a8ba:	74e2                	ld	s1,56(sp)
    e886a8bc:	7942                	ld	s2,48(sp)
    e886a8be:	79a2                	ld	s3,40(sp)
    e886a8c0:	7a02                	ld	s4,32(sp)
    e886a8c2:	6161                	addi	sp,sp,80
    e886a8c4:	8082                	ret
	require_action( inSession->pairVerifySession, exit, err = kStateErr );
    e886a8c6:	7479                	lui	s0,0xffffe
	size_t					streamKeySaltLen = 0;
    e886a8c8:	4481                	li	s1,0
	require_action( inSession->pairVerifySession, exit, err = kStateErr );
    e886a8ca:	5cb40413          	addi	s0,s0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
    e886a8ce:	bfd9                	j	e886a8a4 <_GetStreamSecurityKeys.isra.11.constprop.16+0x7a>
    e886a8d0:	1817d00b          	sbia	zero,(a5),1,0
    e886a8d4:	bfd1                	j	e886a8a8 <_GetStreamSecurityKeys.isra.11.constprop.16+0x7e>

00000000e886a8d6 <_ScreenSetup>:
{
    e886a8d6:	7175                	addi	sp,sp,-144
    e886a8d8:	f8ca                	sd	s2,112(sp)
	require_action( !inSession->screenInitialized, exit2, err = kAlreadyInitializedErr );
    e886a8da:	6909                	lui	s2,0x2
    e886a8dc:	992a                	add	s2,s2,a0
{
    e886a8de:	e506                	sd	ra,136(sp)
    e886a8e0:	e122                	sd	s0,128(sp)
    e886a8e2:	fca6                	sd	s1,120(sp)
    e886a8e4:	f4ce                	sd	s3,104(sp)
    e886a8e6:	f0d2                	sd	s4,96(sp)
    e886a8e8:	ecd6                	sd	s5,88(sp)
	require_action( !inSession->screenInitialized, exit2, err = kAlreadyInitializedErr );
    e886a8ea:	93894783          	lbu	a5,-1736(s2) # 1938 <memcmp-0xe87fe6c8>
    e886a8ee:	1c079b63          	bnez	a5,e886aac4 <_ScreenSetup+0x1ee>
    e886a8f2:	84aa                	mv	s1,a0
    e886a8f4:	8aae                	mv	s5,a1
    e886a8f6:	8a32                	mv	s4,a2
	responseStreamDesc = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886a8f8:	00054697          	auipc	a3,0x54
    e886a8fc:	ed068693          	addi	a3,a3,-304 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886a900:	00054617          	auipc	a2,0x54
    e886a904:	e9860613          	addi	a2,a2,-360 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886a908:	4581                	li	a1,0
    e886a90a:	4501                	li	a0,0
    e886a90c:	a9bdc0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886a910:	89aa                	mv	s3,a0
	require_action( responseStreamDesc, exit, err = kNoMemoryErr );
    e886a912:	14050563          	beqz	a0,e886aa5c <_ScreenSetup+0x186>
	err = AirPlayReceiverSessionScreen_Setup( inSession->screenSession, inStreamDesc, (uint32_t) inSession->clientSessionID );
    e886a916:	1004a603          	lw	a2,256(s1)
    e886a91a:	94093503          	ld	a0,-1728(s2)
    e886a91e:	85d6                	mv	a1,s5
    e886a920:	30b040ef          	jal	ra,e886f42a <AirPlayReceiverSessionScreen_Setup>
    e886a924:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e886a926:	e12d                	bnez	a0,e886a988 <_ScreenSetup+0xb2>
	streamConnectionID = (uint64_t) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_StreamConnectionID ), NULL );
    e886a928:	00033597          	auipc	a1,0x33
    e886a92c:	6d058593          	addi	a1,a1,1744 # e889dff8 <icmp6_param_problem+0xf8a>
    e886a930:	4601                	li	a2,0
    e886a932:	8556                	mv	a0,s5
    e886a934:	d3de10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886a938:	85aa                	mv	a1,a0
	require_action( streamConnectionID, exit, err = kVersionErr );
    e886a93a:	18050f63          	beqz	a0,e886aad8 <_ScreenSetup+0x202>
	if( inSession->pairVerifySession )
    e886a93e:	4504b783          	ld	a5,1104(s1)
    e886a942:	cba9                	beqz	a5,e886a994 <_ScreenSetup+0xbe>
		err = _GetStreamSecurityKeys( inSession, streamConnectionID, 0, NULL, 32, outputKey );
    e886a944:	1818                	addi	a4,sp,48
    e886a946:	4681                	li	a3,0
    e886a948:	4601                	li	a2,0
    e886a94a:	45048513          	addi	a0,s1,1104
    e886a94e:	eddff0ef          	jal	ra,e886a82a <_GetStreamSecurityKeys.isra.11.constprop.16>
    e886a952:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e886a954:	e915                	bnez	a0,e886a988 <_ScreenSetup+0xb2>
		err = AirPlayReceiverSessionScreen_SetChaChaSecurityInfo( inSession->screenSession, outputKey, 32 );
    e886a956:	94093503          	ld	a0,-1728(s2)
    e886a95a:	02000613          	li	a2,32
    e886a95e:	180c                	addi	a1,sp,48
    e886a960:	249040ef          	jal	ra,e886f3a8 <AirPlayReceiverSessionScreen_SetChaChaSecurityInfo>
    e886a964:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e886a966:	e00d                	bnez	s0,e886a988 <_ScreenSetup+0xb2>
	err = ServerSocketOpen( inSession->peerAddr.sa.sa_family, SOCK_STREAM, IPPROTO_TCP, -kAirPlayPort_RTPScreen, 
    e886a968:	6909                	lui	s2,0x2
    e886a96a:	0bd4c503          	lbu	a0,189(s1)
    e886a96e:	94890813          	addi	a6,s2,-1720 # 1948 <memcmp-0xe87fe6b8>
    e886a972:	9826                	add	a6,a6,s1
    e886a974:	fffd47b7          	lui	a5,0xfffd4
    e886a978:	0078                	addi	a4,sp,12
    e886a97a:	4681                	li	a3,0
    e886a97c:	4619                	li	a2,6
    e886a97e:	4585                	li	a1,1
    e886a980:	e0deb0ef          	jal	ra,e885678c <ServerSocketOpen>
    e886a984:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e886a986:	c139                	beqz	a0,e886a9cc <_ScreenSetup+0xf6>
	CFReleaseNullSafe( responseStreamDesc );
    e886a988:	854e                	mv	a0,s3
    e886a98a:	fc0dc0ef          	jal	ra,e884714a <CFRelease>
	if( err ) _ScreenTearDown( inSession );
    e886a98e:	0c040d63          	beqz	s0,e886aa68 <_ScreenSetup+0x192>
    e886a992:	a8c1                	j	e886aa62 <_ScreenSetup+0x18c>
		AirPlay_DeriveAESKeySHA512ForScreen( inSession->aesSessionKey, kAirTunesAESKeyLen, streamConnectionID, aesScreenKey, aesScreenIV );
    e886a994:	02010a93          	addi	s5,sp,32
    e886a998:	862a                	mv	a2,a0
    e886a99a:	8756                	mv	a4,s5
    e886a99c:	0814                	addi	a3,sp,16
    e886a99e:	45c1                	li	a1,16
    e886a9a0:	23848513          	addi	a0,s1,568
    e886a9a4:	55f050ef          	jal	ra,e8870702 <AirPlay_DeriveAESKeySHA512ForScreen>
		err = AirPlayReceiverSessionScreen_SetSecurityInfo( inSession->screenSession, aesScreenKey, aesScreenIV );
    e886a9a8:	94093503          	ld	a0,-1728(s2)
    e886a9ac:	8656                	mv	a2,s5
    e886a9ae:	080c                	addi	a1,sp,16
    e886a9b0:	23d040ef          	jal	ra,e886f3ec <AirPlayReceiverSessionScreen_SetSecurityInfo>
    e886a9b4:	842a                	mv	s0,a0
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e886a9b6:	081c                	addi	a5,sp,16
	while( inLen-- ) *ptr++ = 0;
    e886a9b8:	1817d00b          	sbia	zero,(a5),1,0
    e886a9bc:	ff579ee3          	bne	a5,s5,e886a9b8 <_ScreenSetup+0xe2>
    e886a9c0:	1818                	addi	a4,sp,48
    e886a9c2:	1817d00b          	sbia	zero,(a5),1,0
    e886a9c6:	fee79ee3          	bne	a5,a4,e886a9c2 <_ScreenSetup+0xec>
    e886a9ca:	bf71                	j	e886a966 <_ScreenSetup+0x90>
	SocketSetQoS( inSession->screenSock, kSocketQoS_AirPlayScreenVideo );
    e886a9cc:	9926                	add	s2,s2,s1
    e886a9ce:	94892503          	lw	a0,-1720(s2)
    e886a9d2:	45b1                	li	a1,12
    e886a9d4:	a59eb0ef          	jal	ra,e885642c <SocketSetQoS>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Type ), kAirPlayStreamType_Screen );
    e886a9d8:	06e00613          	li	a2,110
    e886a9dc:	00033597          	auipc	a1,0x33
    e886a9e0:	63c58593          	addi	a1,a1,1596 # e889e018 <icmp6_param_problem+0xfaa>
    e886a9e4:	854e                	mv	a0,s3
    e886a9e6:	ce0e20ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Port_Data ), receivePort );
    e886a9ea:	4632                	lw	a2,12(sp)
    e886a9ec:	00033597          	auipc	a1,0x33
    e886a9f0:	63c58593          	addi	a1,a1,1596 # e889e028 <icmp6_param_problem+0xfba>
    e886a9f4:	854e                	mv	a0,s3
    e886a9f6:	cd0e20ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	err = _AddResponseStream( inResponseParams, responseStreamDesc );
    e886a9fa:	85ce                	mv	a1,s3
    e886a9fc:	8552                	mv	a0,s4
    e886a9fe:	d4bff0ef          	jal	ra,e886a748 <_AddResponseStream>
    e886aa02:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e886aa04:	f151                	bnez	a0,e886a988 <_ScreenSetup+0xb2>
	inSession->screenInitialized = true;
    e886aa06:	4785                	li	a5,1
	atr_ulog( kLogLevelTrace, "screen receiver set up on port %d\n", receivePort );
    e886aa08:	0006b517          	auipc	a0,0x6b
    e886aa0c:	85850513          	addi	a0,a0,-1960 # e88d5260 <gLogCategory_AirPlayReceiverCore>
	inSession->screenInitialized = true;
    e886aa10:	92f90c23          	sb	a5,-1736(s2)
	atr_ulog( kLogLevelTrace, "screen receiver set up on port %d\n", receivePort );
    e886aa14:	411c                	lw	a5,0(a0)
    e886aa16:	4779                	li	a4,30
    e886aa18:	02f74563          	blt	a4,a5,e886aa42 <_ScreenSetup+0x16c>
    e886aa1c:	577d                	li	a4,-1
    e886aa1e:	02e78a63          	beq	a5,a4,e886aa52 <_ScreenSetup+0x17c>
    e886aa22:	4732                	lw	a4,12(sp)
    e886aa24:	00060697          	auipc	a3,0x60
    e886aa28:	4bc68693          	addi	a3,a3,1212 # e88caee0 <kAirPlayReceiverServerClass+0x14e8>
    e886aa2c:	4679                	li	a2,30
    e886aa2e:	00061597          	auipc	a1,0x61
    e886aa32:	bea58593          	addi	a1,a1,-1046 # e88cb618 <__PRETTY_FUNCTION__.14425>
    e886aa36:	0006b517          	auipc	a0,0x6b
    e886aa3a:	82a50513          	addi	a0,a0,-2006 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886aa3e:	a37e90ef          	jal	ra,e8854474 <LogPrintF>
	if( inSession->sessionStarted )
    e886aa42:	41e4c783          	lbu	a5,1054(s1)
    e886aa46:	d3a9                	beqz	a5,e886a988 <_ScreenSetup+0xb2>
		err = _ScreenStart( inSession );
    e886aa48:	8526                	mv	a0,s1
    e886aa4a:	d0afd0ef          	jal	ra,e8867f54 <_ScreenStart>
    e886aa4e:	842a                	mv	s0,a0
exit:
    e886aa50:	bf25                	j	e886a988 <_ScreenSetup+0xb2>
	atr_ulog( kLogLevelTrace, "screen receiver set up on port %d\n", receivePort );
    e886aa52:	45f9                	li	a1,30
    e886aa54:	e1ee90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886aa58:	d56d                	beqz	a0,e886aa42 <_ScreenSetup+0x16c>
    e886aa5a:	b7e1                	j	e886aa22 <_ScreenSetup+0x14c>
	require_action( responseStreamDesc, exit, err = kNoMemoryErr );
    e886aa5c:	7479                	lui	s0,0xffffe
    e886aa5e:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	if( err ) _ScreenTearDown( inSession );
    e886aa62:	8526                	mv	a0,s1
    e886aa64:	fc1fc0ef          	jal	ra,e8867a24 <_ScreenTearDown>
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e886aa68:	181c                	addi	a5,sp,48
	while( inLen-- ) *ptr++ = 0;
    e886aa6a:	1817d00b          	sbia	zero,(a5),1,0
    e886aa6e:	0898                	addi	a4,sp,80
    e886aa70:	fee79de3          	bne	a5,a4,e886aa6a <_ScreenSetup+0x194>
	if( err ) atr_ulog( kLogLevelWarning, "### screen receiver setup failed: %#m\n", err );
    e886aa74:	cc15                	beqz	s0,e886aab0 <_ScreenSetup+0x1da>
    e886aa76:	0006a517          	auipc	a0,0x6a
    e886aa7a:	7ea50513          	addi	a0,a0,2026 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886aa7e:	411c                	lw	a5,0(a0)
    e886aa80:	03c00713          	li	a4,60
    e886aa84:	02f74663          	blt	a4,a5,e886aab0 <_ScreenSetup+0x1da>
    e886aa88:	577d                	li	a4,-1
    e886aa8a:	04e78163          	beq	a5,a4,e886aacc <_ScreenSetup+0x1f6>
    e886aa8e:	8722                	mv	a4,s0
    e886aa90:	00060697          	auipc	a3,0x60
    e886aa94:	47868693          	addi	a3,a3,1144 # e88caf08 <kAirPlayReceiverServerClass+0x1510>
    e886aa98:	03c00613          	li	a2,60
    e886aa9c:	00061597          	auipc	a1,0x61
    e886aaa0:	b7c58593          	addi	a1,a1,-1156 # e88cb618 <__PRETTY_FUNCTION__.14425>
    e886aaa4:	0006a517          	auipc	a0,0x6a
    e886aaa8:	7bc50513          	addi	a0,a0,1980 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886aaac:	9c9e90ef          	jal	ra,e8854474 <LogPrintF>
}
    e886aab0:	8522                	mv	a0,s0
    e886aab2:	60aa                	ld	ra,136(sp)
    e886aab4:	640a                	ld	s0,128(sp)
    e886aab6:	74e6                	ld	s1,120(sp)
    e886aab8:	7946                	ld	s2,112(sp)
    e886aaba:	79a6                	ld	s3,104(sp)
    e886aabc:	7a06                	ld	s4,96(sp)
    e886aabe:	6ae6                	ld	s5,88(sp)
    e886aac0:	6149                	addi	sp,sp,144
    e886aac2:	8082                	ret
	require_action( !inSession->screenInitialized, exit2, err = kAlreadyInitializedErr );
    e886aac4:	7479                	lui	s0,0xffffe
    e886aac6:	5c140413          	addi	s0,s0,1473 # ffffffffffffe5c1 <__DRAM0_INF_BASE+0xffffffff0000e5c1>
    e886aaca:	bf79                	j	e886aa68 <_ScreenSetup+0x192>
	if( err ) atr_ulog( kLogLevelWarning, "### screen receiver setup failed: %#m\n", err );
    e886aacc:	03c00593          	li	a1,60
    e886aad0:	da2e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886aad4:	dd71                	beqz	a0,e886aab0 <_ScreenSetup+0x1da>
    e886aad6:	bf65                	j	e886aa8e <_ScreenSetup+0x1b8>
	require_action( streamConnectionID, exit, err = kVersionErr );
    e886aad8:	7479                	lui	s0,0xffffe
    e886aada:	5c540413          	addi	s0,s0,1477 # ffffffffffffe5c5 <__DRAM0_INF_BASE+0xffffffff0000e5c5>
    e886aade:	b56d                	j	e886a988 <_ScreenSetup+0xb2>

00000000e886aae0 <_MainAltAudioSetup>:
{
    e886aae0:	716d                	addi	sp,sp,-272
    e886aae2:	f9ca                	sd	s2,240(sp)
    e886aae4:	f1d2                	sd	s4,224(sp)
    e886aae6:	e5de                	sd	s7,200(sp)
    e886aae8:	e1e2                	sd	s8,192(sp)
    e886aaea:	fd66                	sd	s9,184(sp)
    e886aaec:	e606                	sd	ra,264(sp)
    e886aaee:	e222                	sd	s0,256(sp)
    e886aaf0:	fda6                	sd	s1,248(sp)
    e886aaf2:	f5ce                	sd	s3,232(sp)
    e886aaf4:	edd6                	sd	s5,216(sp)
    e886aaf6:	e9da                	sd	s6,208(sp)
    e886aaf8:	f96a                	sd	s10,176(sp)
    e886aafa:	f56e                	sd	s11,168(sp)
	switch( inType )
    e886aafc:	06400793          	li	a5,100
{
    e886ab00:	892a                	mv	s2,a0
    e886ab02:	8a2e                	mv	s4,a1
    e886ab04:	8c32                	mv	s8,a2
    e886ab06:	8cb6                	mv	s9,a3
    e886ab08:	05010b93          	addi	s7,sp,80
	switch( inType )
    e886ab0c:	0af58e63          	beq	a1,a5,e886abc8 <_MainAltAudioSetup+0xe8>
    e886ab10:	06500793          	li	a5,101
    e886ab14:	0cf58763          	beq	a1,a5,e886abe2 <_MainAltAudioSetup+0x102>
			dlogassert( "Bad stream type: %u", inType );
    e886ab18:	6705                	lui	a4,0x1
    e886ab1a:	88ae                	mv	a7,a1
    e886ab1c:	00061797          	auipc	a5,0x61
    e886ab20:	96c78793          	addi	a5,a5,-1684 # e88cb488 <__PRETTY_FUNCTION__.14174>
    e886ab24:	00060817          	auipc	a6,0x60
    e886ab28:	10c80813          	addi	a6,a6,268 # e88cac30 <kAirPlayReceiverServerClass+0x1238>
    e886ab2c:	d0070713          	addi	a4,a4,-768 # d00 <memcmp-0xe87ff300>
    e886ab30:	0005f697          	auipc	a3,0x5f
    e886ab34:	6a068693          	addi	a3,a3,1696 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886ab38:	4601                	li	a2,0
    e886ab3a:	4581                	li	a1,0
    e886ab3c:	4501                	li	a0,0
    e886ab3e:	88be30ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			label = "<< Bad >>";
    e886ab42:	00060a97          	auipc	s5,0x60
    e886ab46:	0dea8a93          	addi	s5,s5,222 # e88cac20 <kAirPlayReceiverServerClass+0x1228>
			err = kParamErr;
    e886ab4a:	77f9                	lui	a5,0xffffe
    e886ab4c:	5cf7879b          	addiw	a5,a5,1487
    e886ab50:	c03e                	sw	a5,0(sp)
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e886ab52:	181c                	addi	a5,sp,48
    e886ab54:	873e                	mv	a4,a5
	while( inLen-- ) *ptr++ = 0;
    e886ab56:	1817d00b          	sbia	zero,(a5),1,0
    e886ab5a:	ff779ee3          	bne	a5,s7,e886ab56 <_MainAltAudioSetup+0x76>
	volatile uint8_t *		ptr = (volatile uint8_t *) inPtr;
    e886ab5e:	081c                	addi	a5,sp,16
	while( inLen-- ) *ptr++ = 0;
    e886ab60:	1817d00b          	sbia	zero,(a5),1,0
    e886ab64:	fee79ee3          	bne	a5,a4,e886ab60 <_MainAltAudioSetup+0x80>
	if( err ) atr_ulog( kLogLevelWarning, "### %s audio setup failed: %#m\n", label, err );
    e886ab68:	4782                	lw	a5,0(sp)
    e886ab6a:	cf9d                	beqz	a5,e886aba8 <_MainAltAudioSetup+0xc8>
    e886ab6c:	0006a517          	auipc	a0,0x6a
    e886ab70:	6f450513          	addi	a0,a0,1780 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886ab74:	411c                	lw	a5,0(a0)
    e886ab76:	03c00713          	li	a4,60
    e886ab7a:	02f74763          	blt	a4,a5,e886aba8 <_MainAltAudioSetup+0xc8>
    e886ab7e:	577d                	li	a4,-1
    e886ab80:	64e78863          	beq	a5,a4,e886b1d0 <_MainAltAudioSetup+0x6f0>
    e886ab84:	4782                	lw	a5,0(sp)
    e886ab86:	8756                	mv	a4,s5
    e886ab88:	00060697          	auipc	a3,0x60
    e886ab8c:	10068693          	addi	a3,a3,256 # e88cac88 <kAirPlayReceiverServerClass+0x1290>
    e886ab90:	03c00613          	li	a2,60
    e886ab94:	00061597          	auipc	a1,0x61
    e886ab98:	8f458593          	addi	a1,a1,-1804 # e88cb488 <__PRETTY_FUNCTION__.14174>
    e886ab9c:	0006a517          	auipc	a0,0x6a
    e886aba0:	6c450513          	addi	a0,a0,1732 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886aba4:	8d1e90ef          	jal	ra,e8854474 <LogPrintF>
}
    e886aba8:	60b2                	ld	ra,264(sp)
    e886abaa:	6412                	ld	s0,256(sp)
	return( err );
    e886abac:	4502                	lw	a0,0(sp)
}
    e886abae:	74ee                	ld	s1,248(sp)
    e886abb0:	794e                	ld	s2,240(sp)
    e886abb2:	79ae                	ld	s3,232(sp)
    e886abb4:	7a0e                	ld	s4,224(sp)
    e886abb6:	6aee                	ld	s5,216(sp)
    e886abb8:	6b4e                	ld	s6,208(sp)
    e886abba:	6bae                	ld	s7,200(sp)
    e886abbc:	6c0e                	ld	s8,192(sp)
    e886abbe:	7cea                	ld	s9,184(sp)
    e886abc0:	7d4a                	ld	s10,176(sp)
    e886abc2:	7daa                	ld	s11,168(sp)
    e886abc4:	6151                	addi	sp,sp,272
    e886abc6:	8082                	ret
			ctx = &inSession->mainAudioCtx;
    e886abc8:	45850413          	addi	s0,a0,1112
			label = "Main";
    e886abcc:	00060a97          	auipc	s5,0x60
    e886abd0:	044a8a93          	addi	s5,s5,68 # e88cac10 <kAirPlayReceiverServerClass+0x1218>
	require_action( !ctx->session, exit2, err = kAlreadyInitializedErr );
    e886abd4:	601c                	ld	a5,0(s0)
    e886abd6:	cf99                	beqz	a5,e886abf4 <_MainAltAudioSetup+0x114>
    e886abd8:	77f9                	lui	a5,0xffffe
    e886abda:	5c17879b          	addiw	a5,a5,1473
    e886abde:	c03e                	sw	a5,0(sp)
    e886abe0:	bf8d                	j	e886ab52 <_MainAltAudioSetup+0x72>
			ctx = &inSession->altAudioCtx;
    e886abe2:	6405                	lui	s0,0x1
    e886abe4:	bd040413          	addi	s0,s0,-1072 # bd0 <memcmp-0xe87ff430>
    e886abe8:	942a                	add	s0,s0,a0
			label = "Alt";
    e886abea:	00060a97          	auipc	s5,0x60
    e886abee:	02ea8a93          	addi	s5,s5,46 # e88cac18 <kAirPlayReceiverServerClass+0x1220>
			break;
    e886abf2:	b7cd                	j	e886abd4 <_MainAltAudioSetup+0xf4>
	ctx->type  = inType;
    e886abf4:	01442423          	sw	s4,8(s0)
	ctx->label = label;
    e886abf8:	01543823          	sd	s5,16(s0)
	streamConnectionID = (uint64_t) CFDictionaryGetInt64( inRequestStreamDesc, CFSTR( kAirPlayKey_StreamConnectionID ), &err );
    e886abfc:	860a                	mv	a2,sp
    e886abfe:	00033597          	auipc	a1,0x33
    e886ac02:	3fa58593          	addi	a1,a1,1018 # e889dff8 <icmp6_param_problem+0xf8a>
    e886ac06:	8562                	mv	a0,s8
    e886ac08:	a69e10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886ac0c:	8b2a                	mv	s6,a0
	if( err )
    e886ac0e:	4782                	lw	a5,0(sp)
    e886ac10:	c79d                	beqz	a5,e886ac3e <_MainAltAudioSetup+0x15e>
		UUIDGet( &uuid );
    e886ac12:	18a8                	addi	a0,sp,120
    e886ac14:	e95f60ef          	jal	ra,e8861aa8 <UUIDGet>
		err = kNoErr;
    e886ac18:	c002                	sw	zero,0(sp)
    e886ac1a:	77e6                	ld	a5,120(sp)
    e886ac1c:	8207978b          	rev	a5,a5
		ctx->connectionID = ReadBig64( uuid.bytes );
    e886ac20:	ec1c                	sd	a5,24(s0)
	if( inSession->pairVerifySession )	require_action( streamConnectionID, exit, err = kVersionErr );
    e886ac22:	45093783          	ld	a5,1104(s2)
    e886ac26:	cf91                	beqz	a5,e886ac42 <_MainAltAudioSetup+0x162>
    e886ac28:	000b1d63          	bnez	s6,e886ac42 <_MainAltAudioSetup+0x162>
    e886ac2c:	77f9                	lui	a5,0xffffe
    e886ac2e:	5c57879b          	addiw	a5,a5,1477
	require_action( responseStreamDesc, exit, err = kNoMemoryErr );
    e886ac32:	c03e                	sw	a5,0(sp)
	if( err ) _TearDownStream( inSession, ctx, false );
    e886ac34:	85a2                	mv	a1,s0
    e886ac36:	854a                	mv	a0,s2
    e886ac38:	8a9ff0ef          	jal	ra,e886a4e0 <_TearDownStream.isra.5>
    e886ac3c:	bf19                	j	e886ab52 <_MainAltAudioSetup+0x72>
		ctx->connectionID = streamConnectionID;
    e886ac3e:	ec08                	sd	a0,24(s0)
    e886ac40:	b7cd                	j	e886ac22 <_MainAltAudioSetup+0x142>
	responseStreamDesc = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ac42:	00054697          	auipc	a3,0x54
    e886ac46:	b8668693          	addi	a3,a3,-1146 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886ac4a:	00054617          	auipc	a2,0x54
    e886ac4e:	b4e60613          	addi	a2,a2,-1202 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886ac52:	4581                	li	a1,0
    e886ac54:	4501                	li	a0,0
    e886ac56:	f50dc0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886ac5a:	89aa                	mv	s3,a0
	require_action( responseStreamDesc, exit, err = kNoMemoryErr );
    e886ac5c:	e509                	bnez	a0,e886ac66 <_MainAltAudioSetup+0x186>
    e886ac5e:	77f9                	lui	a5,0xffffe
    e886ac60:	5b87879b          	addiw	a5,a5,1464
    e886ac64:	b7f9                	j	e886ac32 <_MainAltAudioSetup+0x152>
	err = OpenSelfConnectedLoopbackSocket( &ctx->cmdSock );
    e886ac66:	02040513          	addi	a0,s0,32
    e886ac6a:	82bea0ef          	jal	ra,e8855494 <OpenSelfConnectedLoopbackSocket>
    e886ac6e:	c02a                	sw	a0,0(sp)
	require_noerr( err, exit );
    e886ac70:	e571                	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
	format = (AirPlayAudioFormat) CFDictionaryGetInt64( inRequestStreamDesc, CFSTR( kAirPlayKey_AudioFormat ), NULL );
    e886ac72:	4601                	li	a2,0
    e886ac74:	00033597          	auipc	a1,0x33
    e886ac78:	3cc58593          	addi	a1,a1,972 # e889e040 <icmp6_param_problem+0xfd2>
    e886ac7c:	8562                	mv	a0,s8
    e886ac7e:	9f3e10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886ac82:	84aa                	mv	s1,a0
	if( format == kAirPlayAudioFormat_Invalid ) format = kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo;
    e886ac84:	e501                	bnez	a0,e886ac8c <_MainAltAudioSetup+0x1ac>
    e886ac86:	6485                	lui	s1,0x1
    e886ac88:	80048493          	addi	s1,s1,-2048 # 800 <memcmp-0xe87ff800>
	err = AirPlayAudioFormatToASBD( format, &encodedASBD, &ctx->bitsPerSample );
    e886ac8c:	17440613          	addi	a2,s0,372
    e886ac90:	85de                	mv	a1,s7
    e886ac92:	8526                	mv	a0,s1
    e886ac94:	2ae050ef          	jal	ra,e886ff42 <AirPlayAudioFormatToASBD>
    e886ac98:	c02a                	sw	a0,0(sp)
	require_noerr( err, exit );
    e886ac9a:	e14d                	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
	AirPlayAudioFormatToPCM( format, &decodedASBD );
    e886ac9c:	18ac                	addi	a1,sp,120
    e886ac9e:	8526                	mv	a0,s1
    e886aca0:	568050ef          	jal	ra,e8870208 <AirPlayAudioFormatToPCM>
	ctx->sampleRate		= (uint32_t) decodedASBD.mSampleRate;
    e886aca4:	57e6                	lw	a5,120(sp)
	ctx->channels		= decodedASBD.mChannelsPerFrame;
    e886aca6:	474a                	lw	a4,144(sp)
	ctx->sampleRate		= (uint32_t) decodedASBD.mSampleRate;
    e886aca8:	16f42223          	sw	a5,356(s0)
	ctx->bytesPerUnit	= decodedASBD.mBytesPerFrame;
    e886acac:	47ba                	lw	a5,140(sp)
	ctx->channels		= decodedASBD.mChannelsPerFrame;
    e886acae:	16e42423          	sw	a4,360(s0)
	ctx->bytesPerUnit	= decodedASBD.mBytesPerFrame;
    e886acb2:	16f42623          	sw	a5,364(s0)
	if( ctx->bytesPerUnit == 0 ) ctx->bytesPerUnit = ( RoundUp( ctx->bitsPerSample, 8 ) * ctx->channels ) / 8;
    e886acb6:	eb99                	bnez	a5,e886accc <_MainAltAudioSetup+0x1ec>
    e886acb8:	17442783          	lw	a5,372(s0)
    e886acbc:	279d                	addiw	a5,a5,7
    e886acbe:	9be1                	andi	a5,a5,-8
    e886acc0:	02e787bb          	mulw	a5,a5,a4
    e886acc4:	0037d79b          	srliw	a5,a5,0x3
    e886acc8:	16f42623          	sw	a5,364(s0)
	ctx->framesPerPacket= encodedASBD.mFramesPerPacket;
    e886accc:	5786                	lw	a5,96(sp)
	ctx->rateUpdateNextTicks		= 0;
    e886acce:	16043c23          	sd	zero,376(s0)
	ctx->rateUpdateIntervalTicks	= SecondsToUpTicks( 1 );
    e886acd2:	4505                	li	a0,1
	ctx->framesPerPacket= encodedASBD.mFramesPerPacket;
    e886acd4:	16f42823          	sw	a5,368(s0)
	ctx->rateUpdateIntervalTicks	= SecondsToUpTicks( 1 );
    e886acd8:	dacf60ef          	jal	ra,e8861284 <SecondsToUpTicks>
	err = pthread_mutex_init( &ctx->zeroTimeLock, NULL );
    e886acdc:	47840d13          	addi	s10,s0,1144
	ctx->rateAvg					= (Float32) ctx->sampleRate;
    e886ace0:	16442783          	lw	a5,356(s0)
	ctx->rateUpdateIntervalTicks	= SecondsToUpTicks( 1 );
    e886ace4:	18a43023          	sd	a0,384(s0)
	ctx->rateUpdateCount			= 0;
    e886ace8:	44042c23          	sw	zero,1112(s0)
	ctx->rateAvg					= (Float32) ctx->sampleRate;
    e886acec:	d017f7d3          	fcvt.s.wu	fa5,a5
	err = pthread_mutex_init( &ctx->zeroTimeLock, NULL );
    e886acf0:	4581                	li	a1,0
    e886acf2:	856a                	mv	a0,s10
	ctx->rateAvg					= (Float32) ctx->sampleRate;
    e886acf4:	44f42e27          	fsw	fa5,1116(s0)
	err = pthread_mutex_init( &ctx->zeroTimeLock, NULL );
    e886acf8:	583100ef          	jal	ra,e887ba7a <pthread_mutex_init>
    e886acfc:	c02a                	sw	a0,0(sp)
	require_noerr( err, exit );
    e886acfe:	ed1d                	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
	ctx->zeroTimeLockPtr = &ctx->zeroTimeLock;
    e886ad00:	49a43023          	sd	s10,1152(s0)
	ctx->inputTimestamp		        = 0;
    e886ad04:	62042223          	sw	zero,1572(s0)
	bufferMs = CFDictionaryGetInt64( inRequestStreamDesc, CFSTR( kAirPlayKey_AudioLatencyMs ), &err );
    e886ad08:	860a                	mv	a2,sp
    e886ad0a:	00033597          	auipc	a1,0x33
    e886ad0e:	34e58593          	addi	a1,a1,846 # e889e058 <icmp6_param_problem+0xfea>
    e886ad12:	8562                	mv	a0,s8
    e886ad14:	95de10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886ad18:	8d2a                	mv	s10,a0
	if(bufferMs < kAirPlayAudioBufferMainAltWiredMs)
    e886ad1a:	12c00793          	li	a5,300
    e886ad1e:	00f55463          	bge	a0,a5,e886ad26 <_MainAltAudioSetup+0x246>
    e886ad22:	12c00d13          	li	s10,300
	ctx->compressionType = AudioFormatIDToAirPlayCompressionType( encodedASBD.mFormatID );
    e886ad26:	4556                	lw	a0,84(sp)
    e886ad28:	554050ef          	jal	ra,e887027c <AudioFormatIDToAirPlayCompressionType>
    e886ad2c:	2501                	sext.w	a0,a0
    e886ad2e:	16a42023          	sw	a0,352(s0)
	require_action( ctx->compressionType != kAirPlayCompressionType_Undefined, exit, err = kUnknownErr );
    e886ad32:	ed01                	bnez	a0,e886ad4a <_MainAltAudioSetup+0x26a>
    e886ad34:	77f9                	lui	a5,0xffffe
    e886ad36:	5d47879b          	addiw	a5,a5,1492
    e886ad3a:	c03e                	sw	a5,0(sp)
	CFReleaseNullSafe( responseStreamDesc );
    e886ad3c:	854e                	mv	a0,s3
    e886ad3e:	c0cdc0ef          	jal	ra,e884714a <CFRelease>
	if( err ) _TearDownStream( inSession, ctx, false );
    e886ad42:	4782                	lw	a5,0(sp)
    e886ad44:	e00787e3          	beqz	a5,e886ab52 <_MainAltAudioSetup+0x72>
    e886ad48:	b5f5                	j	e886ac34 <_MainAltAudioSetup+0x154>
	MemZeroSecure( &ctx->outputCryptor, sizeof( ctx->outputCryptor ) );
    e886ad4a:	49040793          	addi	a5,s0,1168
    e886ad4e:	5c040d93          	addi	s11,s0,1472
    e886ad52:	26fd9563          	bne	s11,a5,e886afbc <_MainAltAudioSetup+0x4dc>
	if( streamConnectionID )
    e886ad56:	020b0d63          	beqz	s6,e886ad90 <_MainAltAudioSetup+0x2b0>
		err = _GetStreamSecurityKeys( inSession, streamConnectionID, 32, inputKey, 32, outputKey );
    e886ad5a:	0818                	addi	a4,sp,16
    e886ad5c:	1814                	addi	a3,sp,48
    e886ad5e:	02000613          	li	a2,32
    e886ad62:	85da                	mv	a1,s6
    e886ad64:	45090513          	addi	a0,s2,1104
    e886ad68:	ac3ff0ef          	jal	ra,e886a82a <_GetStreamSecurityKeys.isra.11.constprop.16>
    e886ad6c:	c02a                	sw	a0,0(sp)
		require_noerr( err, exit );
    e886ad6e:	f579                	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
		memset( ctx->outputCryptor.nonce, 0, sizeof( ctx->outputCryptor.nonce ) );
    e886ad70:	4621                	li	a2,8
    e886ad72:	4581                	li	a1,0
    e886ad74:	5b840513          	addi	a0,s0,1464
    e886ad78:	61c110ef          	jal	ra,e887c394 <eLIBs_memset>
		memcpy( ctx->outputCryptor.key, outputKey, 32 );
    e886ad7c:	02000613          	li	a2,32
    e886ad80:	080c                	addi	a1,sp,16
    e886ad82:	59840513          	addi	a0,s0,1432
    e886ad86:	61a110ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		ctx->outputCryptor.isValid = true;
    e886ad8a:	4785                	li	a5,1
    e886ad8c:	48f40823          	sb	a5,1168(s0)
	err = RTPJitterBufferInit( &ctx->jitterBuffer, &encodedASBD, &decodedASBD, (uint32_t) bufferMs );
    e886ad90:	000d069b          	sext.w	a3,s10
    e886ad94:	18b0                	addi	a2,sp,120
    e886ad96:	85de                	mv	a1,s7
    e886ad98:	04040513          	addi	a0,s0,64
    e886ad9c:	349050ef          	jal	ra,e88708e4 <RTPJitterBufferInit>
    e886ada0:	c02a                	sw	a0,0(sp)
	require_noerr( err, exit );
    e886ada2:	fd49                	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
	ctx->jitterBuffer.label = label;
    e886ada4:	15543823          	sd	s5,336(s0)
	err = ServerSocketOpen( inSession->peerAddr.sa.sa_family, SOCK_DGRAM, IPPROTO_UDP,
    e886ada8:	0bd94503          	lbu	a0,189(s2)
    e886adac:	02440813          	addi	a6,s0,36
    e886adb0:	57fd                	li	a5,-1
    e886adb2:	0058                	addi	a4,sp,4
    e886adb4:	4681                	li	a3,0
    e886adb6:	4645                	li	a2,17
    e886adb8:	4589                	li	a1,2
    e886adba:	9d3eb0ef          	jal	ra,e885678c <ServerSocketOpen>
    e886adbe:	c02a                	sw	a0,0(sp)
    e886adc0:	8d2a                	mv	s10,a0
	require_noerr( err, exit );
    e886adc2:	fd2d                	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
	SocketSetQoS( ctx->dataSock, kSocketQoS_Voice );
    e886adc4:	5048                	lw	a0,36(s0)
    e886adc6:	458d                	li	a1,3
    e886adc8:	e64eb0ef          	jal	ra,e885642c <SocketSetQoS>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Type ), inType );
    e886adcc:	7c0a360b          	extu	a2,s4,31,0
    e886add0:	00033597          	auipc	a1,0x33
    e886add4:	24858593          	addi	a1,a1,584 # e889e018 <icmp6_param_problem+0xfaa>
    e886add8:	854e                	mv	a0,s3
    e886adda:	8ece20ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_StreamConnectionID ), ctx->connectionID );
    e886adde:	6c10                	ld	a2,24(s0)
    e886ade0:	00033597          	auipc	a1,0x33
    e886ade4:	21858593          	addi	a1,a1,536 # e889dff8 <icmp6_param_problem+0xf8a>
    e886ade8:	854e                	mv	a0,s3
    e886adea:	8dce20ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Port_Data ), receivePort );
    e886adee:	4612                	lw	a2,4(sp)
    e886adf0:	00033597          	auipc	a1,0x33
    e886adf4:	23858593          	addi	a1,a1,568 # e889e028 <icmp6_param_problem+0xfba>
    e886adf8:	854e                	mv	a0,s3
    e886adfa:	8cce20ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inType == kAirPlayStreamType_MainAudio )
    e886adfe:	06400793          	li	a5,100
    e886ae02:	14fa1f63          	bne	s4,a5,e886af60 <_MainAltAudioSetup+0x480>
		sendPort = (int) CFDictionaryGetInt64( inRequestStreamDesc, CFSTR( kAirPlayKey_Port_Data ), NULL );
    e886ae06:	4601                	li	a2,0
    e886ae08:	00033597          	auipc	a1,0x33
    e886ae0c:	22058593          	addi	a1,a1,544 # e889e028 <icmp6_param_problem+0xfba>
    e886ae10:	8562                	mv	a0,s8
    e886ae12:	85fe10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886ae16:	00050d1b          	sext.w	s10,a0
		if( sendPort > 0 )
    e886ae1a:	15a05363          	blez	s10,e886af60 <_MainAltAudioSetup+0x480>
			if( ctx->compressionType != kAirPlayCompressionType_PCM )
    e886ae1e:	16042703          	lw	a4,352(s0)
    e886ae22:	4785                	li	a5,1
    e886ae24:	75840a13          	addi	s4,s0,1880
    e886ae28:	04f70663          	beq	a4,a5,e886ae74 <_MainAltAudioSetup+0x394>
				err = AudioConverterNew( &decodedASBD, &encodedASBD, &ctx->inputConverter );
    e886ae2c:	8652                	mv	a2,s4
    e886ae2e:	85de                	mv	a1,s7
    e886ae30:	18a8                	addi	a0,sp,120
    e886ae32:	99bf70ef          	jal	ra,e88627cc <AudioConverterNew>
    e886ae36:	c02a                	sw	a0,0(sp)
				require_noerr( err, exit );
    e886ae38:	f00512e3          	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
				if( encodedASBD.mSampleRate <= 24000 )
    e886ae3c:	5786                	lw	a5,96(sp)
    e886ae3e:	46c6                	lw	a3,80(sp)
    e886ae40:	02f6d73b          	divuw	a4,a3,a5
    e886ae44:	6799                	lui	a5,0x6
    e886ae46:	dc078793          	addi	a5,a5,-576 # 5dc0 <memcmp-0xe87fa240>
    e886ae4a:	16d7ec63          	bltu	a5,a3,e886afc2 <_MainAltAudioSetup+0x4e2>
					u32 = kAirPlayAudioBitrateLowLatencyUpTo24KHz / (uint32_t)(encodedASBD.mSampleRate / encodedASBD.mFramesPerPacket);
    e886ae4e:	67b1                	lui	a5,0xc
    e886ae50:	b807879b          	addiw	a5,a5,-1152
				err = AudioConverterSetProperty( ctx->inputConverter, kAudioCodecPropertyPacketSizeLimitForVBR, sizeof( u32 ), &u32 );
    e886ae54:	75843503          	ld	a0,1880(s0)
    e886ae58:	706175b7          	lui	a1,0x70617
    e886ae5c:	0034                	addi	a3,sp,8
    e886ae5e:	4611                	li	a2,4
    e886ae60:	b6c58593          	addi	a1,a1,-1172 # 70616b6c <memcmp-0x781e9494>
					u32 = kAirPlayAudioBitrateLowLatencyUpTo48KHz / (uint32_t)(encodedASBD.mSampleRate / encodedASBD.mFramesPerPacket);
    e886ae64:	02e7d7bb          	divuw	a5,a5,a4
    e886ae68:	c43e                	sw	a5,8(sp)
				err = AudioConverterSetProperty( ctx->inputConverter, kAudioCodecPropertyPacketSizeLimitForVBR, sizeof( u32 ), &u32 );
    e886ae6a:	a45f70ef          	jal	ra,e88628ae <AudioConverterSetProperty>
    e886ae6e:	c02a                	sw	a0,0(sp)
				require_noerr( err, exit );
    e886ae70:	ec0516e3          	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
			MemZeroSecure( &ctx->inputCryptor, sizeof( ctx->inputCryptor ) );
    e886ae74:	62840793          	addi	a5,s0,1576
    e886ae78:	16fa1263          	bne	s4,a5,e886afdc <_MainAltAudioSetup+0x4fc>
			if( streamConnectionID )
    e886ae7c:	020b0263          	beqz	s6,e886aea0 <_MainAltAudioSetup+0x3c0>
				memset( ctx->inputCryptor.nonce, 0, sizeof( ctx->inputCryptor.nonce ) );
    e886ae80:	4621                	li	a2,8
    e886ae82:	4581                	li	a1,0
    e886ae84:	75040513          	addi	a0,s0,1872
    e886ae88:	50c110ef          	jal	ra,e887c394 <eLIBs_memset>
				memcpy( ctx->inputCryptor.key, inputKey, 32 );
    e886ae8c:	02000613          	li	a2,32
    e886ae90:	180c                	addi	a1,sp,48
    e886ae92:	73040513          	addi	a0,s0,1840
    e886ae96:	50a110ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
				ctx->inputCryptor.isValid = true;
    e886ae9a:	4785                	li	a5,1
    e886ae9c:	62f40423          	sb	a5,1576(s0)
			if( !inSession->inputRingRef )
    e886aea0:	6a09                	lui	s4,0x2
    e886aea2:	01490b33          	add	s6,s2,s4
    e886aea6:	930b3783          	ld	a5,-1744(s6)
    e886aeaa:	12079c63          	bnez	a5,e886afe2 <_MainAltAudioSetup+0x502>
				err = MirroredRingBufferInit( &inSession->inputRing, kAirPlayInputRingSize, true );
    e886aeae:	910a0a13          	addi	s4,s4,-1776 # 1910 <memcmp-0xe87fe6f0>
    e886aeb2:	9a4a                	add	s4,s4,s2
    e886aeb4:	4605                	li	a2,1
    e886aeb6:	65c1                	lui	a1,0x10
    e886aeb8:	8552                	mv	a0,s4
    e886aeba:	e8de90ef          	jal	ra,e8854d46 <MirroredRingBufferInit>
    e886aebe:	c02a                	sw	a0,0(sp)
				require_noerr( err, exit );
    e886aec0:	e6051ee3          	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
				inSession->inputRingRef = &inSession->inputRing;
    e886aec4:	934b3823          	sd	s4,-1744(s6)
			ctx->inputRingRef = inSession->inputRingRef;
    e886aec8:	6789                	lui	a5,0x2
    e886aeca:	97ca                	add	a5,a5,s2
    e886aecc:	9307b783          	ld	a5,-1744(a5) # 1930 <memcmp-0xe87fe6d0>
			err = pthread_mutex_init( &ctx->sendAudioMutex, NULL );
    e886aed0:	5e040a13          	addi	s4,s0,1504
			ctx->sendAudioDone = 0;
    e886aed4:	5e040823          	sb	zero,1520(s0)
			ctx->inputRingRef = inSession->inputRingRef;
    e886aed8:	5ef43c23          	sd	a5,1528(s0)
			err = pthread_mutex_init( &ctx->sendAudioMutex, NULL );
    e886aedc:	4581                	li	a1,0
    e886aede:	8552                	mv	a0,s4
    e886aee0:	39b100ef          	jal	ra,e887ba7a <pthread_mutex_init>
    e886aee4:	c02a                	sw	a0,0(sp)
			require_noerr( err, exit );
    e886aee6:	e4051be3          	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
			ctx->sendAudioMutexPtr = &ctx->sendAudioMutex;
    e886aeea:	5f443423          	sd	s4,1512(s0)
			err = pthread_cond_init( &ctx->sendAudioCond, NULL );
    e886aeee:	5d440a13          	addi	s4,s0,1492
    e886aef2:	4581                	li	a1,0
    e886aef4:	8552                	mv	a0,s4
    e886aef6:	5bf100ef          	jal	ra,e887bcb4 <pthread_cond_init>
    e886aefa:	c02a                	sw	a0,0(sp)
			require_noerr( err, exit );
    e886aefc:	e40510e3          	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
			ctx->sendAudioCondPtr = &ctx->sendAudioCond;
    e886af00:	5d443c23          	sd	s4,1496(s0)
			pthread_attr_init(&attr);
    e886af04:	0028                	addi	a0,sp,8
    e886af06:	30d100ef          	jal	ra,e887ba12 <pthread_attr_init>
			pthread_attr_setpriority(&attr,2);
    e886af0a:	4589                	li	a1,2
    e886af0c:	0028                	addi	a0,sp,8
    e886af0e:	329100ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
			err = pthread_create( &ctx->sendAudioThread, &attr, _AudioSenderThread, ctx );
    e886af12:	86a2                	mv	a3,s0
    e886af14:	ffffd617          	auipc	a2,0xffffd
    e886af18:	7fc60613          	addi	a2,a2,2044 # e8868710 <_AudioSenderThread>
    e886af1c:	002c                	addi	a1,sp,8
    e886af1e:	856e                	mv	a0,s11
    e886af20:	325100ef          	jal	ra,e887ba44 <pthread_create>
    e886af24:	c02a                	sw	a0,0(sp)
			pthread_attr_destroy(&attr);
    e886af26:	0028                	addi	a0,sp,8
    e886af28:	2ff100ef          	jal	ra,e887ba26 <pthread_attr_destroy>
			require_noerr( err, exit );
    e886af2c:	4782                	lw	a5,0(sp)
    e886af2e:	e00797e3          	bnez	a5,e886ad3c <_MainAltAudioSetup+0x25c>
			RandomBytes( &ctx->inputSeqNum, sizeof( ctx->inputSeqNum ) );
    e886af32:	4589                	li	a1,2
			ctx->sendAudioThreadPtr = &ctx->sendAudioThread;
    e886af34:	5db43423          	sd	s11,1480(s0)
			RandomBytes( &ctx->inputSeqNum, sizeof( ctx->inputSeqNum ) );
    e886af38:	62040513          	addi	a0,s0,1568
    e886af3c:	968f20ef          	jal	ra,e885d0a4 <RandomBytes>
			SockAddrCopy( &inSession->peerAddr, &ctx->inputAddr );
    e886af40:	60040a13          	addi	s4,s0,1536
    e886af44:	85d2                	mv	a1,s4
    e886af46:	0bc90513          	addi	a0,s2,188
    e886af4a:	b2deb0ef          	jal	ra,e8856a76 <SockAddrCopy>
			SockAddrSetPort( &ctx->inputAddr, sendPort );
    e886af4e:	85ea                	mv	a1,s10
    e886af50:	8552                	mv	a0,s4
    e886af52:	acbeb0ef          	jal	ra,e8856a1c <SockAddrSetPort>
			ctx->inputAddrLen = (socklen_t) SockAddrGetSize( &ctx->inputAddr );
    e886af56:	8552                	mv	a0,s4
    e886af58:	e78eb0ef          	jal	ra,e88565d0 <SockAddrGetSize>
    e886af5c:	60a42e23          	sw	a0,1564(s0)
	err = _AddResponseStream( inResponseParams, responseStreamDesc );
    e886af60:	85ce                	mv	a1,s3
    e886af62:	8566                	mv	a0,s9
    e886af64:	fe4ff0ef          	jal	ra,e886a748 <_AddResponseStream>
    e886af68:	c02a                	sw	a0,0(sp)
	require_noerr( err, exit );
    e886af6a:	dc0519e3          	bnez	a0,e886ad3c <_MainAltAudioSetup+0x25c>
	atr_ulog( kLogLevelTrace, "%s audio set up for %s on receive port %d, send port %d\n", 
    e886af6e:	0006a517          	auipc	a0,0x6a
    e886af72:	2f250513          	addi	a0,a0,754 # e88d5260 <gLogCategory_AirPlayReceiverCore>
	ctx->session = inSession;
    e886af76:	01243023          	sd	s2,0(s0)
	atr_ulog( kLogLevelTrace, "%s audio set up for %s on receive port %d, send port %d\n", 
    e886af7a:	411c                	lw	a5,0(a0)
    e886af7c:	4779                	li	a4,30
    e886af7e:	06f74963          	blt	a4,a5,e886aff0 <_MainAltAudioSetup+0x510>
    e886af82:	577d                	li	a4,-1
    e886af84:	06e78263          	beq	a5,a4,e886afe8 <_MainAltAudioSetup+0x508>
    e886af88:	4791                	li	a5,4
    e886af8a:	6818                	ld	a4,16(s0)
    e886af8c:	0af49463          	bne	s1,a5,e886b034 <_MainAltAudioSetup+0x554>
    e886af90:	0005e797          	auipc	a5,0x5e
    e886af94:	a9878793          	addi	a5,a5,-1384 # e88c8a28 <kScreenStreamClass+0x150>
    e886af98:	4812                	lw	a6,4(sp)
    e886af9a:	88ea                	mv	a7,s10
    e886af9c:	00060697          	auipc	a3,0x60
    e886afa0:	cac68693          	addi	a3,a3,-852 # e88cac48 <kAirPlayReceiverServerClass+0x1250>
    e886afa4:	4679                	li	a2,30
    e886afa6:	00060597          	auipc	a1,0x60
    e886afaa:	4e258593          	addi	a1,a1,1250 # e88cb488 <__PRETTY_FUNCTION__.14174>
    e886afae:	0006a517          	auipc	a0,0x6a
    e886afb2:	2b250513          	addi	a0,a0,690 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886afb6:	cbee90ef          	jal	ra,e8854474 <LogPrintF>
    e886afba:	a81d                	j	e886aff0 <_MainAltAudioSetup+0x510>
    e886afbc:	1817d00b          	sbia	zero,(a5),1,0
    e886afc0:	bb49                	j	e886ad52 <_MainAltAudioSetup+0x272>
				else if( encodedASBD.mSampleRate <= 32000 )
    e886afc2:	67a1                	lui	a5,0x8
    e886afc4:	d0078793          	addi	a5,a5,-768 # 7d00 <memcmp-0xe87f8300>
    e886afc8:	00d7e663          	bltu	a5,a3,e886afd4 <_MainAltAudioSetup+0x4f4>
					u32 = kAirPlayAudioBitrateLowLatencyUpTo32KHz / (uint32_t)(encodedASBD.mSampleRate / encodedASBD.mFramesPerPacket);
    e886afcc:	67c1                	lui	a5,0x10
    e886afce:	a007879b          	addiw	a5,a5,-1536
    e886afd2:	b549                	j	e886ae54 <_MainAltAudioSetup+0x374>
					u32 = kAirPlayAudioBitrateLowLatencyUpTo48KHz / (uint32_t)(encodedASBD.mSampleRate / encodedASBD.mFramesPerPacket);
    e886afd4:	67dd                	lui	a5,0x17
    e886afd6:	7007879b          	addiw	a5,a5,1792
    e886afda:	bdad                	j	e886ae54 <_MainAltAudioSetup+0x374>
    e886afdc:	1817d00b          	sbia	zero,(a5),1,0
    e886afe0:	bd61                	j	e886ae78 <_MainAltAudioSetup+0x398>
				MirroredRingBufferReset( inSession->inputRingRef );
    e886afe2:	4fd8                	lw	a4,28(a5)
    e886afe4:	cf98                	sw	a4,24(a5)
    e886afe6:	b5cd                	j	e886aec8 <_MainAltAudioSetup+0x3e8>
	atr_ulog( kLogLevelTrace, "%s audio set up for %s on receive port %d, send port %d\n", 
    e886afe8:	45f9                	li	a1,30
    e886afea:	888e90ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886afee:	fd49                	bnez	a0,e886af88 <_MainAltAudioSetup+0x4a8>
	if( inSession->sessionStarted && !ctx->threadPtr )
    e886aff0:	41e94783          	lbu	a5,1054(s2)
    e886aff4:	d40784e3          	beqz	a5,e886ad3c <_MainAltAudioSetup+0x25c>
    e886aff8:	781c                	ld	a5,48(s0)
    e886affa:	d40791e3          	bnez	a5,e886ad3c <_MainAltAudioSetup+0x25c>
		pthread_attr_init(&attr);
    e886affe:	0028                	addi	a0,sp,8
    e886b000:	213100ef          	jal	ra,e887ba12 <pthread_attr_init>
		err = pthread_create( &ctx->thread, &attr, _MainAltAudioThread, ctx );
    e886b004:	02840493          	addi	s1,s0,40
	    pthread_attr_setpriority(&attr,2);
    e886b008:	4589                	li	a1,2
    e886b00a:	0028                	addi	a0,sp,8
    e886b00c:	22b100ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
		err = pthread_create( &ctx->thread, &attr, _MainAltAudioThread, ctx );
    e886b010:	86a2                	mv	a3,s0
    e886b012:	ffffd617          	auipc	a2,0xffffd
    e886b016:	07e60613          	addi	a2,a2,126 # e8868090 <_MainAltAudioThread>
    e886b01a:	002c                	addi	a1,sp,8
    e886b01c:	8526                	mv	a0,s1
    e886b01e:	227100ef          	jal	ra,e887ba44 <pthread_create>
    e886b022:	c02a                	sw	a0,0(sp)
		pthread_attr_destroy(&attr);
    e886b024:	0028                	addi	a0,sp,8
    e886b026:	201100ef          	jal	ra,e887ba26 <pthread_attr_destroy>
		require_noerr( err, exit );
    e886b02a:	4782                	lw	a5,0(sp)
    e886b02c:	d00798e3          	bnez	a5,e886ad3c <_MainAltAudioSetup+0x25c>
		ctx->threadPtr = &ctx->thread;
    e886b030:	f804                	sd	s1,48(s0)
    e886b032:	b329                	j	e886ad3c <_MainAltAudioSetup+0x25c>
	atr_ulog( kLogLevelTrace, "%s audio set up for %s on receive port %d, send port %d\n", 
    e886b034:	46a1                	li	a3,8
    e886b036:	0005e797          	auipc	a5,0x5e
    e886b03a:	a0278793          	addi	a5,a5,-1534 # e88c8a38 <kScreenStreamClass+0x160>
    e886b03e:	f4d48de3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b042:	46c1                	li	a3,16
    e886b044:	0005e797          	auipc	a5,0x5e
    e886b048:	a0478793          	addi	a5,a5,-1532 # e88c8a48 <kScreenStreamClass+0x170>
    e886b04c:	f4d486e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b050:	02000693          	li	a3,32
    e886b054:	0005e797          	auipc	a5,0x5e
    e886b058:	a0478793          	addi	a5,a5,-1532 # e88c8a58 <kScreenStreamClass+0x180>
    e886b05c:	f2d48ee3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b060:	04000693          	li	a3,64
    e886b064:	0005e797          	auipc	a5,0x5e
    e886b068:	a0478793          	addi	a5,a5,-1532 # e88c8a68 <kScreenStreamClass+0x190>
    e886b06c:	f2d486e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b070:	08000693          	li	a3,128
    e886b074:	0005e797          	auipc	a5,0x5e
    e886b078:	a0478793          	addi	a5,a5,-1532 # e88c8a78 <kScreenStreamClass+0x1a0>
    e886b07c:	f0d48ee3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b080:	10000693          	li	a3,256
    e886b084:	0005e797          	auipc	a5,0x5e
    e886b088:	a0478793          	addi	a5,a5,-1532 # e88c8a88 <kScreenStreamClass+0x1b0>
    e886b08c:	f0d486e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b090:	20000693          	li	a3,512
    e886b094:	0005e797          	auipc	a5,0x5e
    e886b098:	a0478793          	addi	a5,a5,-1532 # e88c8a98 <kScreenStreamClass+0x1c0>
    e886b09c:	eed48ee3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b0a0:	40000693          	li	a3,1024
    e886b0a4:	0005e797          	auipc	a5,0x5e
    e886b0a8:	a0478793          	addi	a5,a5,-1532 # e88c8aa8 <kScreenStreamClass+0x1d0>
    e886b0ac:	eed486e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b0b0:	80048693          	addi	a3,s1,-2048
    e886b0b4:	0005e797          	auipc	a5,0x5e
    e886b0b8:	a0478793          	addi	a5,a5,-1532 # e88c8ab8 <kScreenStreamClass+0x1e0>
    e886b0bc:	ec068ee3          	beqz	a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b0c0:	6685                	lui	a3,0x1
    e886b0c2:	0005e797          	auipc	a5,0x5e
    e886b0c6:	a0678793          	addi	a5,a5,-1530 # e88c8ac8 <kScreenStreamClass+0x1f0>
    e886b0ca:	ecd487e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b0ce:	6689                	lui	a3,0x2
    e886b0d0:	0005e797          	auipc	a5,0x5e
    e886b0d4:	a0878793          	addi	a5,a5,-1528 # e88c8ad8 <kScreenStreamClass+0x200>
    e886b0d8:	ecd480e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b0dc:	6691                	lui	a3,0x4
    e886b0de:	0005e797          	auipc	a5,0x5e
    e886b0e2:	a0a78793          	addi	a5,a5,-1526 # e88c8ae8 <kScreenStreamClass+0x210>
    e886b0e6:	ead489e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b0ea:	66a1                	lui	a3,0x8
    e886b0ec:	0005e797          	auipc	a5,0x5e
    e886b0f0:	a0c78793          	addi	a5,a5,-1524 # e88c8af8 <kScreenStreamClass+0x220>
    e886b0f4:	ead482e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b0f8:	66c1                	lui	a3,0x10
    e886b0fa:	0005e797          	auipc	a5,0x5e
    e886b0fe:	a0e78793          	addi	a5,a5,-1522 # e88c8b08 <kScreenStreamClass+0x230>
    e886b102:	e8d48be3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b106:	000206b7          	lui	a3,0x20
    e886b10a:	0005e797          	auipc	a5,0x5e
    e886b10e:	a0e78793          	addi	a5,a5,-1522 # e88c8b18 <kScreenStreamClass+0x240>
    e886b112:	e8d483e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b116:	004006b7          	lui	a3,0x400
    e886b11a:	0005e797          	auipc	a5,0x5e
    e886b11e:	a0e78793          	addi	a5,a5,-1522 # e88c8b28 <kScreenStreamClass+0x250>
    e886b122:	e6d48be3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b126:	008006b7          	lui	a3,0x800
    e886b12a:	0005e797          	auipc	a5,0x5e
    e886b12e:	a0e78793          	addi	a5,a5,-1522 # e88c8b38 <kScreenStreamClass+0x260>
    e886b132:	e6d483e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b136:	010006b7          	lui	a3,0x1000
    e886b13a:	0005e797          	auipc	a5,0x5e
    e886b13e:	a0e78793          	addi	a5,a5,-1522 # e88c8b48 <kScreenStreamClass+0x270>
    e886b142:	e4d48be3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b146:	020006b7          	lui	a3,0x2000
    e886b14a:	0005e797          	auipc	a5,0x5e
    e886b14e:	a0e78793          	addi	a5,a5,-1522 # e88c8b58 <kScreenStreamClass+0x280>
    e886b152:	e4d483e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b156:	040006b7          	lui	a3,0x4000
    e886b15a:	0005e797          	auipc	a5,0x5e
    e886b15e:	a0e78793          	addi	a5,a5,-1522 # e88c8b68 <kScreenStreamClass+0x290>
    e886b162:	e2d48be3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b166:	080006b7          	lui	a3,0x8000
    e886b16a:	0005e797          	auipc	a5,0x5e
    e886b16e:	a0e78793          	addi	a5,a5,-1522 # e88c8b78 <kScreenStreamClass+0x2a0>
    e886b172:	e2d483e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b176:	100006b7          	lui	a3,0x10000
    e886b17a:	0005e797          	auipc	a5,0x5e
    e886b17e:	87678793          	addi	a5,a5,-1930 # e88c89f0 <kScreenStreamClass+0x118>
    e886b182:	e0d48be3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b186:	200006b7          	lui	a3,0x20000
    e886b18a:	0005e797          	auipc	a5,0x5e
    e886b18e:	9fe78793          	addi	a5,a5,-1538 # e88c8b88 <kScreenStreamClass+0x2b0>
    e886b192:	e0d483e3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b196:	400006b7          	lui	a3,0x40000
    e886b19a:	0005e797          	auipc	a5,0x5e
    e886b19e:	84678793          	addi	a5,a5,-1978 # e88c89e0 <kScreenStreamClass+0x108>
    e886b1a2:	ded48be3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b1a6:	4685                	li	a3,1
    e886b1a8:	01f69613          	slli	a2,a3,0x1f
    e886b1ac:	0005e797          	auipc	a5,0x5e
    e886b1b0:	85478793          	addi	a5,a5,-1964 # e88c8a00 <kScreenStreamClass+0x128>
    e886b1b4:	dec482e3          	beq	s1,a2,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b1b8:	1682                	slli	a3,a3,0x20
    e886b1ba:	0005e797          	auipc	a5,0x5e
    e886b1be:	85678793          	addi	a5,a5,-1962 # e88c8a10 <kScreenStreamClass+0x138>
    e886b1c2:	dcd48be3          	beq	s1,a3,e886af98 <_MainAltAudioSetup+0x4b8>
    e886b1c6:	0005e797          	auipc	a5,0x5e
    e886b1ca:	9d278793          	addi	a5,a5,-1582 # e88c8b98 <kScreenStreamClass+0x2c0>
    e886b1ce:	b3e9                	j	e886af98 <_MainAltAudioSetup+0x4b8>
	if( err ) atr_ulog( kLogLevelWarning, "### %s audio setup failed: %#m\n", label, err );
    e886b1d0:	03c00593          	li	a1,60
    e886b1d4:	e9fe80ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886b1d8:	9c0508e3          	beqz	a0,e886aba8 <_MainAltAudioSetup+0xc8>
    e886b1dc:	b265                	j	e886ab84 <_MainAltAudioSetup+0xa4>

00000000e886b1de <_GeneralAudioSetup>:
{
    e886b1de:	7115                	addi	sp,sp,-224
	ctx->sampleTimeOffset = 0;
    e886b1e0:	6785                	lui	a5,0x1
{
    e886b1e2:	ed86                	sd	ra,216(sp)
    e886b1e4:	e9a2                	sd	s0,208(sp)
    e886b1e6:	e5a6                	sd	s1,200(sp)
    e886b1e8:	e1ca                	sd	s2,192(sp)
    e886b1ea:	fd4e                	sd	s3,184(sp)
    e886b1ec:	f952                	sd	s4,176(sp)
    e886b1ee:	f556                	sd	s5,168(sp)
    e886b1f0:	f15a                	sd	s6,160(sp)
    e886b1f2:	ed5e                	sd	s7,152(sp)
	ctx->sampleTimeOffset = 0;
    e886b1f4:	97aa                	add	a5,a5,a0
    e886b1f6:	bc07a423          	sw	zero,-1080(a5) # bc8 <memcmp-0xe87ff438>
	require_action( !IsValidSocket( ctx->dataSock ), exit2, err = kAlreadyInitializedErr );
    e886b1fa:	47c52783          	lw	a5,1148(a0)
    e886b1fe:	0607c163          	bltz	a5,e886b260 <_GeneralAudioSetup+0x82>
    e886b202:	77f9                	lui	a5,0xffffe
    e886b204:	5c17879b          	addiw	a5,a5,1473
    e886b208:	ce3e                	sw	a5,28(sp)
	if( err ) atr_ulog( kLogLevelWarning, "### General audio setup failed: %#m\n", err );
    e886b20a:	47f2                	lw	a5,28(sp)
    e886b20c:	cf95                	beqz	a5,e886b248 <_GeneralAudioSetup+0x6a>
    e886b20e:	0006a517          	auipc	a0,0x6a
    e886b212:	05250513          	addi	a0,a0,82 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886b216:	411c                	lw	a5,0(a0)
    e886b218:	03c00713          	li	a4,60
    e886b21c:	02f74663          	blt	a4,a5,e886b248 <_GeneralAudioSetup+0x6a>
    e886b220:	577d                	li	a4,-1
    e886b222:	0ae78ce3          	beq	a5,a4,e886bada <_GeneralAudioSetup+0x8fc>
    e886b226:	4772                	lw	a4,28(sp)
    e886b228:	0005f697          	auipc	a3,0x5f
    e886b22c:	66868693          	addi	a3,a3,1640 # e88ca890 <kAirPlayReceiverServerClass+0xe98>
    e886b230:	03c00613          	li	a2,60
    e886b234:	00060597          	auipc	a1,0x60
    e886b238:	0dc58593          	addi	a1,a1,220 # e88cb310 <__PRETTY_FUNCTION__.13876>
    e886b23c:	0006a517          	auipc	a0,0x6a
    e886b240:	02450513          	addi	a0,a0,36 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886b244:	a30e90ef          	jal	ra,e8854474 <LogPrintF>
}
    e886b248:	60ee                	ld	ra,216(sp)
    e886b24a:	644e                	ld	s0,208(sp)
	return( err );
    e886b24c:	4572                	lw	a0,28(sp)
}
    e886b24e:	64ae                	ld	s1,200(sp)
    e886b250:	690e                	ld	s2,192(sp)
    e886b252:	79ea                	ld	s3,184(sp)
    e886b254:	7a4a                	ld	s4,176(sp)
    e886b256:	7aaa                	ld	s5,168(sp)
    e886b258:	7b0a                	ld	s6,160(sp)
    e886b25a:	6bea                	ld	s7,152(sp)
    e886b25c:	612d                	addi	sp,sp,224
    e886b25e:	8082                	ret
    e886b260:	842a                	mv	s0,a0
    e886b262:	892e                	mv	s2,a1
    e886b264:	8b32                	mv	s6,a2
    e886b266:	8a36                	mv	s4,a3
	responseStreamDesc = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886b268:	00053617          	auipc	a2,0x53
    e886b26c:	53060613          	addi	a2,a2,1328 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886b270:	00053697          	auipc	a3,0x53
    e886b274:	55868693          	addi	a3,a3,1368 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886b278:	4581                	li	a1,0
    e886b27a:	4501                	li	a0,0
    e886b27c:	92adc0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886b280:	89aa                	mv	s3,a0
	require_action( responseStreamDesc, exit, err = kNoMemoryErr );
    e886b282:	e919                	bnez	a0,e886b298 <_GeneralAudioSetup+0xba>
    e886b284:	77f9                	lui	a5,0xffffe
    e886b286:	5b87879b          	addiw	a5,a5,1464
    e886b28a:	ce3e                	sw	a5,28(sp)
	if( err ) _TearDownStream( me, ctx, false );
    e886b28c:	45840593          	addi	a1,s0,1112
    e886b290:	8522                	mv	a0,s0
    e886b292:	a4eff0ef          	jal	ra,e886a4e0 <_TearDownStream.isra.5>
    e886b296:	bf95                	j	e886b20a <_GeneralAudioSetup+0x2c>
	streamConnectionID = (uint64_t) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_StreamConnectionID ), &err );
    e886b298:	00033597          	auipc	a1,0x33
    e886b29c:	d6058593          	addi	a1,a1,-672 # e889dff8 <icmp6_param_problem+0xf8a>
    e886b2a0:	0870                	addi	a2,sp,28
    e886b2a2:	855a                	mv	a0,s6
    e886b2a4:	bcce10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b2a8:	85aa                	mv	a1,a0
	if( err )
    e886b2aa:	47f2                	lw	a5,28(sp)
    e886b2ac:	cb95                	beqz	a5,e886b2e0 <_GeneralAudioSetup+0x102>
    e886b2ae:	e42a                	sd	a0,8(sp)
		UUIDGet( &uuid );
    e886b2b0:	10a8                	addi	a0,sp,104
    e886b2b2:	ff6f60ef          	jal	ra,e8861aa8 <UUIDGet>
		err = kNoErr;
    e886b2b6:	ce02                	sw	zero,28(sp)
    e886b2b8:	77a6                	ld	a5,104(sp)
    e886b2ba:	65a2                	ld	a1,8(sp)
    e886b2bc:	8207978b          	rev	a5,a5
		ctx->connectionID = ReadBig64( uuid.bytes );
    e886b2c0:	46f43823          	sd	a5,1136(s0)
	if( me->pairVerifySession )	require_action( streamConnectionID, exit, err = kVersionErr );
    e886b2c4:	45043783          	ld	a5,1104(s0)
    e886b2c8:	cf99                	beqz	a5,e886b2e6 <_GeneralAudioSetup+0x108>
    e886b2ca:	ed91                	bnez	a1,e886b2e6 <_GeneralAudioSetup+0x108>
    e886b2cc:	77f9                	lui	a5,0xffffe
    e886b2ce:	5c57879b          	addiw	a5,a5,1477
		err = kUnsupportedErr;
    e886b2d2:	ce3e                	sw	a5,28(sp)
	CFReleaseNullSafe( responseStreamDesc );
    e886b2d4:	854e                	mv	a0,s3
    e886b2d6:	e75db0ef          	jal	ra,e884714a <CFRelease>
	if( err ) _TearDownStream( me, ctx, false );
    e886b2da:	47f2                	lw	a5,28(sp)
    e886b2dc:	d79d                	beqz	a5,e886b20a <_GeneralAudioSetup+0x2c>
    e886b2de:	b77d                	j	e886b28c <_GeneralAudioSetup+0xae>
		ctx->connectionID = streamConnectionID;
    e886b2e0:	46a43823          	sd	a0,1136(s0)
    e886b2e4:	b7c5                	j	e886b2c4 <_GeneralAudioSetup+0xe6>
	MemZeroSecure( &ctx->outputCryptor, sizeof( ctx->outputCryptor ) );
    e886b2e6:	6705                	lui	a4,0x1
    e886b2e8:	45840a93          	addi	s5,s0,1112
    e886b2ec:	a1870713          	addi	a4,a4,-1512 # a18 <memcmp-0xe87ff5e8>
    e886b2f0:	490a8793          	addi	a5,s5,1168
    e886b2f4:	9722                	add	a4,a4,s0
    e886b2f6:	0af71d63          	bne	a4,a5,e886b3b0 <_GeneralAudioSetup+0x1d2>
	if( streamConnectionID && me->pairVerifySession )
    e886b2fa:	cd9d                	beqz	a1,e886b338 <_GeneralAudioSetup+0x15a>
    e886b2fc:	45043783          	ld	a5,1104(s0)
    e886b300:	cf85                	beqz	a5,e886b338 <_GeneralAudioSetup+0x15a>
		err = _GetStreamSecurityKeys( me, streamConnectionID, 0, NULL, 32, outputKey );
    e886b302:	00b8                	addi	a4,sp,72
    e886b304:	4681                	li	a3,0
    e886b306:	4601                	li	a2,0
    e886b308:	45040513          	addi	a0,s0,1104
    e886b30c:	d1eff0ef          	jal	ra,e886a82a <_GetStreamSecurityKeys.isra.11.constprop.16>
    e886b310:	ce2a                	sw	a0,28(sp)
		require_noerr( err, exit );
    e886b312:	f169                	bnez	a0,e886b2d4 <_GeneralAudioSetup+0xf6>
		memset( ctx->outputCryptor.nonce, 0, sizeof( ctx->outputCryptor.nonce ) );
    e886b314:	4621                	li	a2,8
    e886b316:	4581                	li	a1,0
    e886b318:	5b8a8513          	addi	a0,s5,1464
    e886b31c:	078110ef          	jal	ra,e887c394 <eLIBs_memset>
		memcpy( ctx->outputCryptor.key, outputKey, 32 );
    e886b320:	02000613          	li	a2,32
    e886b324:	00ac                	addi	a1,sp,72
    e886b326:	598a8513          	addi	a0,s5,1432
    e886b32a:	076110ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		ctx->outputCryptor.isValid = true;
    e886b32e:	6785                	lui	a5,0x1
    e886b330:	97a2                	add	a5,a5,s0
    e886b332:	4705                	li	a4,1
    e886b334:	8ee78423          	sb	a4,-1816(a5) # 8e8 <memcmp-0xe87ff718>
	ctx->label = "MainHigh";
    e886b338:	0005f797          	auipc	a5,0x5f
    e886b33c:	4c878793          	addi	a5,a5,1224 # e88ca800 <kAirPlayReceiverServerClass+0xe08>
    e886b340:	46f43423          	sd	a5,1128(s0)
	me->compressionType = (AirPlayCompressionType) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_CompressionType ), NULL );
    e886b344:	4601                	li	a2,0
    e886b346:	00033597          	auipc	a1,0x33
    e886b34a:	d2a58593          	addi	a1,a1,-726 # e889e070 <icmp6_param_problem+0x1002>
	ctx->type = inStreamType;
    e886b34e:	47242023          	sw	s2,1120(s0)
	me->compressionType = (AirPlayCompressionType) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_CompressionType ), NULL );
    e886b352:	855a                	mv	a0,s6
    e886b354:	b1ce10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b358:	12a42023          	sw	a0,288(s0)
	format = (AirPlayAudioFormat) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_AudioFormat ), NULL );
    e886b35c:	4601                	li	a2,0
    e886b35e:	00033597          	auipc	a1,0x33
    e886b362:	ce258593          	addi	a1,a1,-798 # e889e040 <icmp6_param_problem+0xfd2>
    e886b366:	855a                	mv	a0,s6
    e886b368:	b08e10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b36c:	84aa                	mv	s1,a0
	if( format == kAirPlayAudioFormat_Invalid )
    e886b36e:	e539                	bnez	a0,e886b3bc <_GeneralAudioSetup+0x1de>
		if(      me->compressionType == kAirPlayCompressionType_PCM )		format = kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo;
    e886b370:	12042883          	lw	a7,288(s0)
    e886b374:	4785                	li	a5,1
    e886b376:	04f88063          	beq	a7,a5,e886b3b6 <_GeneralAudioSetup+0x1d8>
		else if( me->compressionType == kAirPlayCompressionType_AAC_LC )	format = kAirPlayAudioFormat_AAC_LC_44KHz_Stereo;
    e886b37a:	4791                	li	a5,4
    e886b37c:	004004b7          	lui	s1,0x400
    e886b380:	02f88e63          	beq	a7,a5,e886b3bc <_GeneralAudioSetup+0x1de>
		else { dlogassert( "Bad compression type: 0x%X", me->compressionType ); err = kUnsupportedErr; goto exit; }
    e886b384:	0005f817          	auipc	a6,0x5f
    e886b388:	48c80813          	addi	a6,a6,1164 # e88ca810 <kAirPlayReceiverServerClass+0xe18>
    e886b38c:	00060797          	auipc	a5,0x60
    e886b390:	f8478793          	addi	a5,a5,-124 # e88cb310 <__PRETTY_FUNCTION__.13876>
    e886b394:	7bc00713          	li	a4,1980
    e886b398:	0005f697          	auipc	a3,0x5f
    e886b39c:	e3868693          	addi	a3,a3,-456 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886b3a0:	4601                	li	a2,0
    e886b3a2:	4581                	li	a1,0
		dlogassert( "Unsupported compression type: %d", me->compressionType );
    e886b3a4:	824e30ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kUnsupportedErr;
    e886b3a8:	77f9                	lui	a5,0xffffe
    e886b3aa:	5b17879b          	addiw	a5,a5,1457
    e886b3ae:	b715                	j	e886b2d2 <_GeneralAudioSetup+0xf4>
    e886b3b0:	1817d00b          	sbia	zero,(a5),1,0
    e886b3b4:	b789                	j	e886b2f6 <_GeneralAudioSetup+0x118>
		if(      me->compressionType == kAirPlayCompressionType_PCM )		format = kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo;
    e886b3b6:	6485                	lui	s1,0x1
    e886b3b8:	80048493          	addi	s1,s1,-2048 # 800 <memcmp-0xe87ff800>
	err = AirPlayAudioFormatToASBD( format, &asbd, &ctx->bitsPerSample );
    e886b3bc:	5cc40613          	addi	a2,s0,1484
    e886b3c0:	10ac                	addi	a1,sp,104
    e886b3c2:	8526                	mv	a0,s1
    e886b3c4:	37f040ef          	jal	ra,e886ff42 <AirPlayAudioFormatToASBD>
    e886b3c8:	ce2a                	sw	a0,28(sp)
	require_noerr( err, exit );
    e886b3ca:	f00515e3          	bnez	a0,e886b2d4 <_GeneralAudioSetup+0xf6>
	if( me->compressionType == kAirPlayCompressionType_Undefined )
    e886b3ce:	12042783          	lw	a5,288(s0)
    e886b3d2:	e791                	bnez	a5,e886b3de <_GeneralAudioSetup+0x200>
		me->compressionType = AudioFormatIDToAirPlayCompressionType( asbd.mFormatID );
    e886b3d4:	5536                	lw	a0,108(sp)
    e886b3d6:	6a7040ef          	jal	ra,e887027c <AudioFormatIDToAirPlayCompressionType>
    e886b3da:	12a42023          	sw	a0,288(s0)
	ctx->sampleRate		= (uint32_t) asbd.mSampleRate;
    e886b3de:	57a6                	lw	a5,104(sp)
	ctx->channels		= asbd.mChannelsPerFrame;
    e886b3e0:	470a                	lw	a4,128(sp)
	ctx->sampleRate		= (uint32_t) asbd.mSampleRate;
    e886b3e2:	5af42e23          	sw	a5,1468(s0)
	ctx->bytesPerUnit	= asbd.mBytesPerFrame;
    e886b3e6:	57f6                	lw	a5,124(sp)
	ctx->channels		= asbd.mChannelsPerFrame;
    e886b3e8:	5ce42023          	sw	a4,1472(s0)
	ctx->bytesPerUnit	= asbd.mBytesPerFrame;
    e886b3ec:	5cf42223          	sw	a5,1476(s0)
	if( ctx->bytesPerUnit == 0 ) ctx->bytesPerUnit = ( RoundUp( ctx->bitsPerSample, 8 ) * ctx->channels ) / 8;
    e886b3f0:	eb99                	bnez	a5,e886b406 <_GeneralAudioSetup+0x228>
    e886b3f2:	5cc42783          	lw	a5,1484(s0)
    e886b3f6:	279d                	addiw	a5,a5,7
    e886b3f8:	9be1                	andi	a5,a5,-8
    e886b3fa:	02e787bb          	mulw	a5,a5,a4
    e886b3fe:	0037d79b          	srliw	a5,a5,0x3
    e886b402:	5cf42223          	sw	a5,1476(s0)
	me->rtpAudioDupsInitialized	= false;
    e886b406:	6b85                	lui	s7,0x1
    e886b408:	9ba2                	add	s7,s7,s0
	me->redundantAudio			= (int) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_RedundantAudio ), NULL );
    e886b40a:	4601                	li	a2,0
    e886b40c:	00033597          	auipc	a1,0x33
    e886b410:	c7458593          	addi	a1,a1,-908 # e889e080 <icmp6_param_problem+0x1012>
	me->rtpAudioDupsInitialized	= false;
    e886b414:	340b8823          	sb	zero,848(s7) # 1350 <memcmp-0xe87fecb0>
	me->redundantAudio			= (int) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_RedundantAudio ), NULL );
    e886b418:	855a                	mv	a0,s6
    e886b41a:	a56e10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b41e:	34aba623          	sw	a0,844(s7)
	me->screen					= CFDictionaryGetBoolean( inStreamDesc, CFSTR( kAirPlayKey_UsingScreen ), NULL );
    e886b422:	4601                	li	a2,0
    e886b424:	00033597          	auipc	a1,0x33
    e886b428:	c7458593          	addi	a1,a1,-908 # e889e098 <icmp6_param_problem+0x102a>
    e886b42c:	855a                	mv	a0,s6
    e886b42e:	a42e10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b432:	00a03533          	snez	a0,a0
    e886b436:	40a40823          	sb	a0,1040(s0)
	me->rtcpPortRemote			= (int) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_Port_Control ), NULL );
    e886b43a:	4601                	li	a2,0
    e886b43c:	00033597          	auipc	a1,0x33
    e886b440:	c7458593          	addi	a1,a1,-908 # e889e0b0 <icmp6_param_problem+0x1042>
    e886b444:	855a                	mv	a0,s6
    e886b446:	a2ae10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b44a:	2501                	sext.w	a0,a0
	if( me->rtcpPortRemote <= 0 ) me->rtcpPortRemote = kAirPlayFixedPort_RTCPLegacy;
    e886b44c:	36a05d63          	blez	a0,e886b7c6 <_GeneralAudioSetup+0x5e8>
	me->rtcpPortRemote			= (int) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_Port_Control ), NULL );
    e886b450:	74abae23          	sw	a0,1884(s7)
	latencyMs					= (uint32_t) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_AudioLatencyMs ), NULL );
    e886b454:	4601                	li	a2,0
    e886b456:	00033597          	auipc	a1,0x33
    e886b45a:	c0258593          	addi	a1,a1,-1022 # e889e058 <icmp6_param_problem+0xfea>
    e886b45e:	855a                	mv	a0,s6
    e886b460:	a10e10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b464:	2501                	sext.w	a0,a0
	if( latencyMs > 0 )
    e886b466:	36050663          	beqz	a0,e886b7d2 <_GeneralAudioSetup+0x5f4>
		me->minLatency			= ctx->sampleRate * latencyMs / 1000;
    e886b46a:	5bc42783          	lw	a5,1468(s0)
    e886b46e:	02a7853b          	mulw	a0,a5,a0
    e886b472:	3e800793          	li	a5,1000
    e886b476:	02f5553b          	divuw	a0,a0,a5
    e886b47a:	6785                	lui	a5,0x1
    e886b47c:	97a2                	add	a5,a5,s0
    e886b47e:	78a7a223          	sw	a0,1924(a5) # 1784 <memcmp-0xe87fe87c>
		me->maxLatency			= ctx->sampleRate * latencyMs / 1000;
    e886b482:	78a7a423          	sw	a0,1928(a5)
	me->audioQoS				= me->screen ? kSocketQoS_AirPlayScreenAudio : kSocketQoS_AirPlayAudio;
    e886b486:	41044783          	lbu	a5,1040(s0)
	me->framesPerPacket	= (uint32_t) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_FramesPerPacket ), NULL );
    e886b48a:	4601                	li	a2,0
    e886b48c:	00033597          	auipc	a1,0x33
    e886b490:	c6c58593          	addi	a1,a1,-916 # e889e0f8 <icmp6_param_problem+0x108a>
	me->audioQoS				= me->screen ? kSocketQoS_AirPlayScreenAudio : kSocketQoS_AirPlayAudio;
    e886b494:	00f037b3          	snez	a5,a5
    e886b498:	07a9                	addi	a5,a5,10
    e886b49a:	40f42c23          	sw	a5,1048(s0)
	me->framesPerPacket	= (uint32_t) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_FramesPerPacket ), NULL );
    e886b49e:	855a                	mv	a0,s6
    e886b4a0:	9d0e10ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b4a4:	2501                	sext.w	a0,a0
	i = ( me->framesPerPacket + ( ( me->framesPerPacket / kAirTunesMaxSkewAdjustRate ) + 16 ) ) * ctx->bytesPerUnit;
    e886b4a6:	1b900793          	li	a5,441
    e886b4aa:	02f557bb          	divuw	a5,a0,a5
	me->framesPerPacket	= (uint32_t) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_FramesPerPacket ), NULL );
    e886b4ae:	40a42a23          	sw	a0,1044(s0)
	i = ( me->framesPerPacket + ( ( me->framesPerPacket / kAirTunesMaxSkewAdjustRate ) + 16 ) ) * ctx->bytesPerUnit;
    e886b4b2:	2541                	addiw	a0,a0,16
	me->nodeCount				= kAirTunesBufferNodeCountUDP;
    e886b4b4:	6705                	lui	a4,0x1
    e886b4b6:	9722                	add	a4,a4,s0
    e886b4b8:	20000693          	li	a3,512
	i = ( me->framesPerPacket + ( ( me->framesPerPacket / kAirTunesMaxSkewAdjustRate ) + 16 ) ) * ctx->bytesPerUnit;
    e886b4bc:	9fa9                	addw	a5,a5,a0
    e886b4be:	5c442503          	lw	a0,1476(s0)
	me->nodeCount				= kAirTunesBufferNodeCountUDP;
    e886b4c2:	7ed72e23          	sw	a3,2044(a4) # 17fc <memcmp-0xe87fe804>
	me->nodeBufferSize			= kRTPHeaderSize + Max( kAirTunesMaxPacketSizeUDP, i );
    e886b4c6:	6709                	lui	a4,0x2
	i = ( me->framesPerPacket + ( ( me->framesPerPacket / kAirTunesMaxSkewAdjustRate ) + 16 ) ) * ctx->bytesPerUnit;
    e886b4c8:	02a787bb          	mulw	a5,a5,a0
	me->nodeBufferSize			= kRTPHeaderSize + Max( kAirTunesMaxPacketSizeUDP, i );
    e886b4cc:	5c000693          	li	a3,1472
    e886b4d0:	9722                	add	a4,a4,s0
    e886b4d2:	7c07b78b          	extu	a5,a5,31,0
    e886b4d6:	00d7f463          	bgeu	a5,a3,e886b4de <_GeneralAudioSetup+0x300>
    e886b4da:	5c000793          	li	a5,1472
    e886b4de:	07b1                	addi	a5,a5,12
    e886b4e0:	80f73023          	sd	a5,-2048(a4) # 1800 <memcmp-0xe87fe800>
	ctx->rateUpdateIntervalTicks	= SecondsToUpTicks( 1 );
    e886b4e4:	4505                	li	a0,1
	ctx->rateUpdateNextTicks		= 0;
    e886b4e6:	5c043823          	sd	zero,1488(s0)
	ctx->rateUpdateIntervalTicks	= SecondsToUpTicks( 1 );
    e886b4ea:	d9bf50ef          	jal	ra,e8861284 <SecondsToUpTicks>
    e886b4ee:	5ca43c23          	sd	a0,1496(s0)
	ctx->rateUpdateCount			= 0;
    e886b4f2:	6b85                	lui	s7,0x1
    e886b4f4:	01740b33          	add	s6,s0,s7
    e886b4f8:	8a0b2823          	sw	zero,-1872(s6)
	ctx->rateAvg					= (Float32) ctx->sampleRate;
    e886b4fc:	5bc42783          	lw	a5,1468(s0)
	err = pthread_mutex_init( &ctx->zeroTimeLock, NULL );
    e886b500:	478a8a93          	addi	s5,s5,1144
    e886b504:	4581                	li	a1,0
	ctx->rateAvg					= (Float32) ctx->sampleRate;
    e886b506:	d017f7d3          	fcvt.s.wu	fa5,a5
	err = pthread_mutex_init( &ctx->zeroTimeLock, NULL );
    e886b50a:	8556                	mv	a0,s5
	ctx->rateAvg					= (Float32) ctx->sampleRate;
    e886b50c:	8afb2a27          	fsw	fa5,-1868(s6)
	err = pthread_mutex_init( &ctx->zeroTimeLock, NULL );
    e886b510:	56a100ef          	jal	ra,e887ba7a <pthread_mutex_init>
    e886b514:	ce2a                	sw	a0,28(sp)
	require_noerr( err, exit );
    e886b516:	da051fe3          	bnez	a0,e886b2d4 <_GeneralAudioSetup+0xf6>
	ctx->zeroTimeLockPtr = &ctx->zeroTimeLock;
    e886b51a:	8d5b3c23          	sd	s5,-1832(s6)
	err = ServerSocketOpen( me->peerAddr.sa.sa_family, SOCK_DGRAM, IPPROTO_UDP, -kAirPlayPort_RTPAudio, 
    e886b51e:	0bd44503          	lbu	a0,189(s0)
    e886b522:	348b8713          	addi	a4,s7,840 # 1348 <memcmp-0xe87fecb8>
    e886b526:	47c40813          	addi	a6,s0,1148
    e886b52a:	fff807b7          	lui	a5,0xfff80
    e886b52e:	9722                	add	a4,a4,s0
    e886b530:	4681                	li	a3,0
    e886b532:	4645                	li	a2,17
    e886b534:	4589                	li	a1,2
    e886b536:	a56eb0ef          	jal	ra,e885678c <ServerSocketOpen>
    e886b53a:	ce2a                	sw	a0,28(sp)
	require_noerr( err, exit );
    e886b53c:	d8051ce3          	bnez	a0,e886b2d4 <_GeneralAudioSetup+0xf6>
	SocketSetQoS( ctx->dataSock, me->audioQoS );
    e886b540:	41842583          	lw	a1,1048(s0)
    e886b544:	47c42503          	lw	a0,1148(s0)
    e886b548:	ee5ea0ef          	jal	ra,e885642c <SocketSetQoS>
	err = OpenSelfConnectedLoopbackSocket( &ctx->cmdSock );
    e886b54c:	47840513          	addi	a0,s0,1144
    e886b550:	f45e90ef          	jal	ra,e8855494 <OpenSelfConnectedLoopbackSocket>
    e886b554:	ce2a                	sw	a0,28(sp)
	require_noerr( err, exit );
    e886b556:	d6051fe3          	bnez	a0,e886b2d4 <_GeneralAudioSetup+0xf6>
	SockAddrCopy( &me->peerAddr, &sip );
    e886b55a:	102c                	addi	a1,sp,40
    e886b55c:	0bc40513          	addi	a0,s0,188
    e886b560:	d16eb0ef          	jal	ra,e8856a76 <SockAddrCopy>
	err = ServerSocketOpen( sip.sa.sa_family, SOCK_DGRAM, IPPROTO_UDP, -kAirPlayPort_RTCPServer, &me->rtcpPortLocal, 
    e886b564:	02914503          	lbu	a0,41(sp)
    e886b568:	754b8813          	addi	a6,s7,1876
    e886b56c:	758b8713          	addi	a4,s7,1880
    e886b570:	9822                	add	a6,a6,s0
    e886b572:	fff807b7          	lui	a5,0xfff80
    e886b576:	9722                	add	a4,a4,s0
    e886b578:	4681                	li	a3,0
    e886b57a:	4645                	li	a2,17
    e886b57c:	4589                	li	a1,2
    e886b57e:	a0eeb0ef          	jal	ra,e885678c <ServerSocketOpen>
    e886b582:	ce2a                	sw	a0,28(sp)
	require_noerr( err, exit );
    e886b584:	d40518e3          	bnez	a0,e886b2d4 <_GeneralAudioSetup+0xf6>
	SocketSetPacketTimestamps( me->rtcpSock, true );
    e886b588:	754b2503          	lw	a0,1876(s6)
    e886b58c:	4585                	li	a1,1
    e886b58e:	e9bea0ef          	jal	ra,e8856428 <SocketSetPacketTimestamps>
	SocketSetQoS( me->rtcpSock, me->audioQoS );
    e886b592:	41842583          	lw	a1,1048(s0)
    e886b596:	754b2503          	lw	a0,1876(s6)
    e886b59a:	e93ea0ef          	jal	ra,e885642c <SocketSetQoS>
	SockAddrSetPort( &sip, me->rtcpPortRemote );
    e886b59e:	75cb2583          	lw	a1,1884(s6)
    e886b5a2:	1028                	addi	a0,sp,40
    e886b5a4:	c78eb0ef          	jal	ra,e8856a1c <SockAddrSetPort>
	me->rtcpRemoteAddr = sip;
    e886b5a8:	4671                	li	a2,28
    e886b5aa:	102c                	addi	a1,sp,40
    e886b5ac:	760b0513          	addi	a0,s6,1888
    e886b5b0:	ab9940ef          	jal	ra,e8800068 <memcpy>
	me->rtcpRemoteLen  = SockAddrGetSize( &sip );
    e886b5b4:	1028                	addi	a0,sp,40
    e886b5b6:	81aeb0ef          	jal	ra,e88565d0 <SockAddrGetSize>
    e886b5ba:	0005061b          	sext.w	a2,a0
	err = connect( me->rtcpSock, &sip.sa, me->rtcpRemoteLen );
    e886b5be:	754b2503          	lw	a0,1876(s6)
	me->rtcpRemoteLen  = SockAddrGetSize( &sip );
    e886b5c2:	76cb2e23          	sw	a2,1916(s6)
	err = connect( me->rtcpSock, &sip.sa, me->rtcpRemoteLen );
    e886b5c6:	102c                	addi	a1,sp,40
    e886b5c8:	55d190ef          	jal	ra,e8885324 <lwip_connect>
	err = map_socket_noerr_errno( me->rtcpSock, err );
    e886b5cc:	c911                	beqz	a0,e886b5e0 <_GeneralAudioSetup+0x402>
    e886b5ce:	00079797          	auipc	a5,0x79
    e886b5d2:	05a78793          	addi	a5,a5,90 # e88e4628 <lwip_errno>
    e886b5d6:	4388                	lw	a0,0(a5)
    e886b5d8:	e501                	bnez	a0,e886b5e0 <_GeneralAudioSetup+0x402>
    e886b5da:	7579                	lui	a0,0xffffe
    e886b5dc:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	me->rtcpConnected = !err;
    e886b5e0:	6785                	lui	a5,0x1
    e886b5e2:	97a2                	add	a5,a5,s0
	err = map_socket_noerr_errno( me->rtcpSock, err );
    e886b5e4:	ce2a                	sw	a0,28(sp)
	me->rtcpConnected = !err;
    e886b5e6:	00153513          	seqz	a0,a0
    e886b5ea:	78a78023          	sb	a0,1920(a5) # 1780 <memcmp-0xe87fe880>
	if( me->redundantAudio )
    e886b5ee:	34c7a783          	lw	a5,844(a5)
    e886b5f2:	20078763          	beqz	a5,e886b800 <_GeneralAudioSetup+0x622>
		ats->rtcpRTDisable = true;
    e886b5f6:	4785                	li	a5,1
    e886b5f8:	38f40c23          	sb	a5,920(s0)
	me->nodeHeaderStorage = (AirTunesBufferNode *) malloc( me->nodeCount * sizeof( AirTunesBufferNode ) );
    e886b5fc:	6a85                	lui	s5,0x1
    e886b5fe:	9aa2                	add	s5,s5,s0
    e886b600:	7fcae503          	lwu	a0,2044(s5) # 17fc <memcmp-0xe87fe804>
    e886b604:	03800793          	li	a5,56
    e886b608:	6909                	lui	s2,0x2
    e886b60a:	02f50533          	mul	a0,a0,a5
    e886b60e:	9922                	add	s2,s2,s0
    e886b610:	23e100ef          	jal	ra,e887b84e <my_malloc>
    e886b614:	80a93823          	sd	a0,-2032(s2) # 1810 <memcmp-0xe87fe7f0>
	require_action( me->nodeHeaderStorage, exit, err = kNoMemoryErr );
    e886b618:	26050f63          	beqz	a0,e886b896 <_GeneralAudioSetup+0x6b8>
	me->nodeBufferStorage = (uint8_t *) malloc( me->nodeCount * me->nodeBufferSize );
    e886b61c:	7fcae503          	lwu	a0,2044(s5)
    e886b620:	80093783          	ld	a5,-2048(s2)
    e886b624:	02f50533          	mul	a0,a0,a5
    e886b628:	226100ef          	jal	ra,e887b84e <my_malloc>
    e886b62c:	80a93423          	sd	a0,-2040(s2)
	require_action( me->nodeBufferStorage, exit, err = kNoMemoryErr );
    e886b630:	26050363          	beqz	a0,e886b896 <_GeneralAudioSetup+0x6b8>
	n = me->nodeCount - 1;
    e886b634:	7fcaa783          	lw	a5,2044(s5)
	for( i = 0; i < n; ++i )
    e886b638:	4701                	li	a4,0
    e886b63a:	03800813          	li	a6,56
	n = me->nodeCount - 1;
    e886b63e:	37fd                	addiw	a5,a5,-1
    e886b640:	7c07b78b          	extu	a5,a5,31,0
	for( i = 0; i < n; ++i )
    e886b644:	030706b3          	mul	a3,a4,a6
    e886b648:	81093603          	ld	a2,-2032(s2)
    e886b64c:	00d605b3          	add	a1,a2,a3
    e886b650:	24f76a63          	bltu	a4,a5,e886b8a4 <_GeneralAudioSetup+0x6c6>
	me->nodeHeaderStorage[ i ].next = NULL;
    e886b654:	0005b023          	sd	zero,0(a1)
	me->nodeHeaderStorage[ i ].data = ptr;
    e886b658:	81093703          	ld	a4,-2032(s2)
    e886b65c:	2107970b          	mula	a4,a5,a6
    e886b660:	f708                	sd	a0,40(a4)
	me->freeList						= me->nodeHeaderStorage;
    e886b662:	81093783          	ld	a5,-2032(s2)
	me->busyNodeCount					= 0;
    e886b666:	86092023          	sw	zero,-1952(s2)
	ptr += me->nodeBufferSize;
    e886b66a:	80093a83          	ld	s5,-2048(s2)
	me->freeList						= me->nodeHeaderStorage;
    e886b66e:	84f93c23          	sd	a5,-1960(s2)
	me->busyListSentinelStorage.prev	= &me->busyListSentinelStorage;
    e886b672:	6789                	lui	a5,0x2
    e886b674:	81878793          	addi	a5,a5,-2024 # 1818 <memcmp-0xe87fe7e8>
    e886b678:	97a2                	add	a5,a5,s0
    e886b67a:	82f93023          	sd	a5,-2016(s2)
	me->busyListSentinelStorage.next	= &me->busyListSentinelStorage;
    e886b67e:	80f93c23          	sd	a5,-2024(s2)
	me->busyListSentinel				= &me->busyListSentinelStorage;
    e886b682:	84f93823          	sd	a5,-1968(s2)
	else if( me->compressionType == kAirPlayCompressionType_AAC_LC )
    e886b686:	12042883          	lw	a7,288(s0)
    e886b68a:	4791                	li	a5,4
    e886b68c:	22f89a63          	bne	a7,a5,e886b8c0 <_GeneralAudioSetup+0x6e2>
		err = _AudioDecoderInitialize( me );
    e886b690:	8522                	mv	a0,s0
    e886b692:	95ffc0ef          	jal	ra,e8867ff0 <_AudioDecoderInitialize>
    e886b696:	ce2a                	sw	a0,28(sp)
		require_noerr( err, exit );
    e886b698:	c2051ee3          	bnez	a0,e886b2d4 <_GeneralAudioSetup+0xf6>
		n = me->nodeBufferSize;
    e886b69c:	80093a83          	ld	s5,-2048(s2)
	me->decodeBufferSize = n;
    e886b6a0:	6909                	lui	s2,0x2
    e886b6a2:	9922                	add	s2,s2,s0
    e886b6a4:	87593823          	sd	s5,-1936(s2) # 1870 <memcmp-0xe87fe790>
	me->decodeBuffer = (uint8_t *) malloc( me->decodeBufferSize );
    e886b6a8:	8556                	mv	a0,s5
    e886b6aa:	1a4100ef          	jal	ra,e887b84e <my_malloc>
    e886b6ae:	86a93423          	sd	a0,-1944(s2)
	require_action( me->decodeBuffer, exit, err = kNoMemoryErr );
    e886b6b2:	1e050263          	beqz	a0,e886b896 <_GeneralAudioSetup+0x6b8>
	me->readBufferSize = n;
    e886b6b6:	89593023          	sd	s5,-1920(s2)
	me->readBuffer = (uint8_t *) malloc( me->readBufferSize );
    e886b6ba:	8556                	mv	a0,s5
    e886b6bc:	192100ef          	jal	ra,e887b84e <my_malloc>
    e886b6c0:	86a93c23          	sd	a0,-1928(s2)
	require_action( me->readBuffer, exit, err = kNoMemoryErr );
    e886b6c4:	1c050963          	beqz	a0,e886b896 <_GeneralAudioSetup+0x6b8>
	me->skewAdjustBufferSize = n;
    e886b6c8:	89593823          	sd	s5,-1904(s2)
	me->skewAdjustBuffer = (uint8_t *) malloc( me->skewAdjustBufferSize );
    e886b6cc:	8556                	mv	a0,s5
    e886b6ce:	180100ef          	jal	ra,e887b84e <my_malloc>
    e886b6d2:	88a93423          	sd	a0,-1912(s2)
	require_action( me->skewAdjustBuffer, exit, err = kNoMemoryErr );
    e886b6d6:	1c050063          	beqz	a0,e886b896 <_GeneralAudioSetup+0x6b8>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Type ), ctx->type );
    e886b6da:	46046603          	lwu	a2,1120(s0)
	EWMA_FP_Init( &gAirPlayAudioStats.bufferAvg, 0.25, kEWMAFlags_StartWithFirstValue );
    e886b6de:	00078797          	auipc	a5,0x78
    e886b6e2:	6ba78793          	addi	a5,a5,1722 # e88e3d98 <gAirPlayAudioStats>
    e886b6e6:	0005f717          	auipc	a4,0x5f
    e886b6ea:	11273787          	fld	fa5,274(a4) # e88ca7f8 <kAirPlayReceiverServerClass+0xe00>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Type ), ctx->type );
    e886b6ee:	00033597          	auipc	a1,0x33
    e886b6f2:	92a58593          	addi	a1,a1,-1750 # e889e018 <icmp6_param_problem+0xfaa>
    e886b6f6:	854e                	mv	a0,s3
	EWMA_FP_Init( &gAirPlayAudioStats.bufferAvg, 0.25, kEWMAFlags_StartWithFirstValue );
    e886b6f8:	a39c                	fsd	fa5,0(a5)
    e886b6fa:	0007b423          	sd	zero,8(a5)
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Port_Data ), me->rtpAudioPort );
    e886b6fe:	6905                	lui	s2,0x1
	EWMA_FP_Init( &gAirPlayAudioStats.bufferAvg, 0.25, kEWMAFlags_StartWithFirstValue );
    e886b700:	00078797          	auipc	a5,0x78
    e886b704:	6a078423          	sb	zero,1704(a5) # e88e3da8 <gAirPlayAudioStats+0x10>
	gAirPlayAudioStats.lostPackets			= 0;
    e886b708:	00078797          	auipc	a5,0x78
    e886b70c:	6a07b423          	sd	zero,1704(a5) # e88e3db0 <gAirPlayAudioStats+0x18>
	gAirPlayAudioStats.latePackets			= 0;
    e886b710:	00078797          	auipc	a5,0x78
    e886b714:	6a07a423          	sw	zero,1704(a5) # e88e3db8 <gAirPlayAudioStats+0x20>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Type ), ctx->type );
    e886b718:	faee10ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Port_Data ), me->rtpAudioPort );
    e886b71c:	9922                	add	s2,s2,s0
    e886b71e:	34892603          	lw	a2,840(s2) # 1348 <memcmp-0xe87fecb8>
    e886b722:	00033597          	auipc	a1,0x33
    e886b726:	90658593          	addi	a1,a1,-1786 # e889e028 <icmp6_param_problem+0xfba>
    e886b72a:	854e                	mv	a0,s3
    e886b72c:	f9ae10ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_Port_Control ), me->rtcpPortLocal );
    e886b730:	75892603          	lw	a2,1880(s2)
    e886b734:	00033597          	auipc	a1,0x33
    e886b738:	97c58593          	addi	a1,a1,-1668 # e889e0b0 <icmp6_param_problem+0x1042>
    e886b73c:	854e                	mv	a0,s3
    e886b73e:	f88e10ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( ctx->type == kAirPlayStreamType_MainHighAudio )
    e886b742:	46042703          	lw	a4,1120(s0)
    e886b746:	06600793          	li	a5,102
    e886b74a:	00f71b63          	bne	a4,a5,e886b760 <_GeneralAudioSetup+0x582>
		CFDictionarySetInt64( responseStreamDesc, CFSTR( kAirPlayKey_StreamConnectionID ), ctx->connectionID );
    e886b74e:	47043603          	ld	a2,1136(s0)
    e886b752:	00033597          	auipc	a1,0x33
    e886b756:	8a658593          	addi	a1,a1,-1882 # e889dff8 <icmp6_param_problem+0xf8a>
    e886b75a:	854e                	mv	a0,s3
    e886b75c:	f6ae10ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	err = _AddResponseStream( inResponseParams, responseStreamDesc );
    e886b760:	85ce                	mv	a1,s3
    e886b762:	8552                	mv	a0,s4
    e886b764:	fe5fe0ef          	jal	ra,e886a748 <_AddResponseStream>
    e886b768:	ce2a                	sw	a0,28(sp)
	require_noerr( err, exit );
    e886b76a:	b60515e3          	bnez	a0,e886b2d4 <_GeneralAudioSetup+0xf6>
	atr_ulog( kLogLevelTrace, "%s audio set up for %s on port %d, RTCP on port %d\n",
    e886b76e:	0006a517          	auipc	a0,0x6a
    e886b772:	af250513          	addi	a0,a0,-1294 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886b776:	411c                	lw	a5,0(a0)
	ctx->session = me;
    e886b778:	44843c23          	sd	s0,1112(s0)
	atr_ulog( kLogLevelTrace, "%s audio set up for %s on port %d, RTCP on port %d\n",
    e886b77c:	4779                	li	a4,30
    e886b77e:	16f74c63          	blt	a4,a5,e886b8f6 <_GeneralAudioSetup+0x718>
    e886b782:	577d                	li	a4,-1
    e886b784:	16e78463          	beq	a5,a4,e886b8ec <_GeneralAudioSetup+0x70e>
    e886b788:	4791                	li	a5,4
    e886b78a:	46843703          	ld	a4,1128(s0)
    e886b78e:	1af49863          	bne	s1,a5,e886b93e <_GeneralAudioSetup+0x760>
    e886b792:	0005d797          	auipc	a5,0x5d
    e886b796:	29678793          	addi	a5,a5,662 # e88c8a28 <kScreenStreamClass+0x150>
    e886b79a:	6685                	lui	a3,0x1
    e886b79c:	96a2                	add	a3,a3,s0
    e886b79e:	7586a883          	lw	a7,1880(a3) # 1758 <memcmp-0xe87fe8a8>
    e886b7a2:	3486a803          	lw	a6,840(a3)
    e886b7a6:	4679                	li	a2,30
    e886b7a8:	0005f697          	auipc	a3,0x5f
    e886b7ac:	0b068693          	addi	a3,a3,176 # e88ca858 <kAirPlayReceiverServerClass+0xe60>
    e886b7b0:	00060597          	auipc	a1,0x60
    e886b7b4:	b6058593          	addi	a1,a1,-1184 # e88cb310 <__PRETTY_FUNCTION__.13876>
    e886b7b8:	0006a517          	auipc	a0,0x6a
    e886b7bc:	aa850513          	addi	a0,a0,-1368 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886b7c0:	cb5e80ef          	jal	ra,e8854474 <LogPrintF>
    e886b7c4:	aa0d                	j	e886b8f6 <_GeneralAudioSetup+0x718>
	if( me->rtcpPortRemote <= 0 ) me->rtcpPortRemote = kAirPlayFixedPort_RTCPLegacy;
    e886b7c6:	6785                	lui	a5,0x1
    e886b7c8:	7717879b          	addiw	a5,a5,1905
    e886b7cc:	74fbae23          	sw	a5,1884(s7)
    e886b7d0:	b151                	j	e886b454 <_GeneralAudioSetup+0x276>
		me->minLatency				= (uint32_t) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_LatencyMin ), NULL );
    e886b7d2:	4601                	li	a2,0
    e886b7d4:	00033597          	auipc	a1,0x33
    e886b7d8:	8f458593          	addi	a1,a1,-1804 # e889e0c8 <icmp6_param_problem+0x105a>
    e886b7dc:	855a                	mv	a0,s6
    e886b7de:	e93e00ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b7e2:	6b85                	lui	s7,0x1
    e886b7e4:	9ba2                	add	s7,s7,s0
    e886b7e6:	78aba223          	sw	a0,1924(s7) # 1784 <memcmp-0xe87fe87c>
		me->maxLatency				= (uint32_t) CFDictionaryGetInt64( inStreamDesc, CFSTR( kAirPlayKey_LatencyMax ), NULL );
    e886b7ea:	4601                	li	a2,0
    e886b7ec:	00033597          	auipc	a1,0x33
    e886b7f0:	8f458593          	addi	a1,a1,-1804 # e889e0e0 <icmp6_param_problem+0x1072>
    e886b7f4:	855a                	mv	a0,s6
    e886b7f6:	e7be00ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886b7fa:	78aba423          	sw	a0,1928(s7)
    e886b7fe:	b161                	j	e886b486 <_GeneralAudioSetup+0x2a8>
		ats->rtcpRTListStorage = (AirTunesRetransmitNode *) malloc( kAirTunesRetransmitCount * sizeof( AirTunesRetransmitNode ) );
    e886b800:	6515                	lui	a0,0x5
    e886b802:	04c100ef          	jal	ra,e887b84e <my_malloc>
    e886b806:	38a43023          	sd	a0,896(s0)
		require_action( ats->rtcpRTListStorage, exit, err = kNoMemoryErr );
    e886b80a:	4781                	li	a5,0
    e886b80c:	c549                	beqz	a0,e886b896 <_GeneralAudioSetup+0x6b8>
		for( i = 0; i < n; ++i )
    e886b80e:	6715                	lui	a4,0x5
    e886b810:	fd870593          	addi	a1,a4,-40 # 4fd8 <memcmp-0xe87fb028>
			ats->rtcpRTListStorage[ i ].next = &ats->rtcpRTListStorage[ i + 1 ];
    e886b814:	38043603          	ld	a2,896(s0)
    e886b818:	02878693          	addi	a3,a5,40 # 1028 <memcmp-0xe87fefd8>
    e886b81c:	00d60533          	add	a0,a2,a3
    e886b820:	60f6550b          	srd	a0,a2,a5,0
		for( i = 0; i < n; ++i )
    e886b824:	87b6                	mv	a5,a3
    e886b826:	feb697e3          	bne	a3,a1,e886b814 <_GeneralAudioSetup+0x636>
		ats->rtcpRTListStorage[ i ].next = NULL;
    e886b82a:	38043783          	ld	a5,896(s0)
    e886b82e:	97ba                	add	a5,a5,a4
    e886b830:	fc07bc23          	sd	zero,-40(a5)
		ats->rtcpRTFreeList = ats->rtcpRTListStorage;
    e886b834:	38043783          	ld	a5,896(s0)
    e886b838:	38f43423          	sd	a5,904(s0)
		ats->rtcpRTMinRTTNanos			= INT64_MAX;
    e886b83c:	57fd                	li	a5,-1
    e886b83e:	0017d713          	srli	a4,a5,0x1
    e886b842:	3ae43023          	sd	a4,928(s0)
		ats->rtcpRTMaxRTTNanos			= INT64_MIN;
    e886b846:	03f79713          	slli	a4,a5,0x3f
    e886b84a:	3ae43423          	sd	a4,936(s0)
		ats->rtcpRTAvgRTTNanos			= 100000000; // Default to 100 ms.
    e886b84e:	05f5e737          	lui	a4,0x5f5e
    e886b852:	10070713          	addi	a4,a4,256 # 5f5e100 <memcmp-0xe28a1f00>
    e886b856:	3ae43823          	sd	a4,944(s0)
		ats->rtcpRTTimeoutNanos			= 100000000; // Default to 100 ms.
    e886b85a:	3ce43023          	sd	a4,960(s0)
		ats->rtcpRTDisable				= me->redundantAudio;
    e886b85e:	6705                	lui	a4,0x1
    e886b860:	9722                	add	a4,a4,s0
    e886b862:	34c72683          	lw	a3,844(a4) # 134c <memcmp-0xe87fecb4>
		ats->retransmitMinNanos			= UINT64_MAX;
    e886b866:	3cf43c23          	sd	a5,984(s0)
		ats->retransmitRetryMinNanos	= UINT64_MAX;
    e886b86a:	3ef43823          	sd	a5,1008(s0)
		ats->rtcpRTDisable				= me->redundantAudio;
    e886b86e:	38d40c23          	sb	a3,920(s0)
		if( inStreamType == kAirPlayStreamType_MainHighAudio)
    e886b872:	06600793          	li	a5,102
    e886b876:	02f91463          	bne	s2,a5,e886b89e <_GeneralAudioSetup+0x6c0>
			ats->retransmitMaxLoss		= ( ( me->minLatency + ( me->framesPerPacket / 2 ) ) / me->framesPerPacket ) / 2;
    e886b87a:	41442683          	lw	a3,1044(s0)
    e886b87e:	78472703          	lw	a4,1924(a4)
    e886b882:	0016d79b          	srliw	a5,a3,0x1
    e886b886:	9fb9                	addw	a5,a5,a4
    e886b888:	02d7d7bb          	divuw	a5,a5,a3
    e886b88c:	0017d79b          	srliw	a5,a5,0x1
			ats->retransmitMaxLoss		= kAirTunesRetransmitMaxLoss;
    e886b890:	40f42023          	sw	a5,1024(s0)
    e886b894:	b3a5                	j	e886b5fc <_GeneralAudioSetup+0x41e>
		require_action( ats->rtcpRTListStorage, exit, err = kNoMemoryErr );
    e886b896:	77f9                	lui	a5,0xffffe
    e886b898:	5b87879b          	addiw	a5,a5,1464
    e886b89c:	bc1d                	j	e886b2d2 <_GeneralAudioSetup+0xf4>
			ats->retransmitMaxLoss		= kAirTunesRetransmitMaxLoss;
    e886b89e:	08000793          	li	a5,128
    e886b8a2:	b7fd                	j	e886b890 <_GeneralAudioSetup+0x6b2>
		me->nodeHeaderStorage[ i ].next = &me->nodeHeaderStorage[ i + 1 ];
    e886b8a4:	03868593          	addi	a1,a3,56
    e886b8a8:	95b2                	add	a1,a1,a2
    e886b8aa:	60d6558b          	srd	a1,a2,a3,0
		me->nodeHeaderStorage[ i ].data = ptr;
    e886b8ae:	81093603          	ld	a2,-2032(s2)
		me->nodeHeaderStorage[ i ].next = &me->nodeHeaderStorage[ i + 1 ];
    e886b8b2:	0705                	addi	a4,a4,1
		me->nodeHeaderStorage[ i ].data = ptr;
    e886b8b4:	96b2                	add	a3,a3,a2
    e886b8b6:	f688                	sd	a0,40(a3)
		ptr += me->nodeBufferSize;
    e886b8b8:	80093683          	ld	a3,-2048(s2)
    e886b8bc:	9536                	add	a0,a0,a3
	for( i = 0; i < n; ++i )
    e886b8be:	b359                	j	e886b644 <_GeneralAudioSetup+0x466>
	else if( me->compressionType == kAirPlayCompressionType_PCM )
    e886b8c0:	4785                	li	a5,1
    e886b8c2:	dcf88fe3          	beq	a7,a5,e886b6a0 <_GeneralAudioSetup+0x4c2>
		dlogassert( "Unsupported compression type: %d", me->compressionType );
    e886b8c6:	6705                	lui	a4,0x1
    e886b8c8:	0005f817          	auipc	a6,0x5f
    e886b8cc:	f6880813          	addi	a6,a6,-152 # e88ca830 <kAirPlayReceiverServerClass+0xe38>
    e886b8d0:	00060797          	auipc	a5,0x60
    e886b8d4:	a4078793          	addi	a5,a5,-1472 # e88cb310 <__PRETTY_FUNCTION__.13876>
    e886b8d8:	85c70713          	addi	a4,a4,-1956 # 85c <memcmp-0xe87ff7a4>
    e886b8dc:	0005f697          	auipc	a3,0x5f
    e886b8e0:	8f468693          	addi	a3,a3,-1804 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886b8e4:	4601                	li	a2,0
    e886b8e6:	4581                	li	a1,0
    e886b8e8:	4501                	li	a0,0
    e886b8ea:	bc6d                	j	e886b3a4 <_GeneralAudioSetup+0x1c6>
	atr_ulog( kLogLevelTrace, "%s audio set up for %s on port %d, RTCP on port %d\n",
    e886b8ec:	45f9                	li	a1,30
    e886b8ee:	f84e80ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886b8f2:	e8051be3          	bnez	a0,e886b788 <_GeneralAudioSetup+0x5aa>
	if( me->sessionStarted && !ctx->threadPtr )
    e886b8f6:	41e44783          	lbu	a5,1054(s0)
    e886b8fa:	9c078de3          	beqz	a5,e886b2d4 <_GeneralAudioSetup+0xf6>
    e886b8fe:	48843783          	ld	a5,1160(s0)
    e886b902:	9c0799e3          	bnez	a5,e886b2d4 <_GeneralAudioSetup+0xf6>
		pthread_attr_init(&attr);
    e886b906:	1008                	addi	a0,sp,32
    e886b908:	10a100ef          	jal	ra,e887ba12 <pthread_attr_init>
		err = pthread_create( &ctx->thread, &attr, _GeneralAudioThread, me );
    e886b90c:	48040493          	addi	s1,s0,1152
	    pthread_attr_setpriority(&attr,1);
    e886b910:	4585                	li	a1,1
    e886b912:	1008                	addi	a0,sp,32
    e886b914:	122100ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
		err = pthread_create( &ctx->thread, &attr, _GeneralAudioThread, me );
    e886b918:	86a2                	mv	a3,s0
    e886b91a:	00001617          	auipc	a2,0x1
    e886b91e:	b7260613          	addi	a2,a2,-1166 # e886c48c <_GeneralAudioThread>
    e886b922:	100c                	addi	a1,sp,32
    e886b924:	8526                	mv	a0,s1
    e886b926:	11e100ef          	jal	ra,e887ba44 <pthread_create>
    e886b92a:	ce2a                	sw	a0,28(sp)
		pthread_attr_destroy(&attr);
    e886b92c:	1008                	addi	a0,sp,32
    e886b92e:	0f8100ef          	jal	ra,e887ba26 <pthread_attr_destroy>
		require_noerr( err, exit );
    e886b932:	47f2                	lw	a5,28(sp)
    e886b934:	9a0790e3          	bnez	a5,e886b2d4 <_GeneralAudioSetup+0xf6>
		ctx->threadPtr = &ctx->thread;
    e886b938:	48943423          	sd	s1,1160(s0)
    e886b93c:	ba61                	j	e886b2d4 <_GeneralAudioSetup+0xf6>
	atr_ulog( kLogLevelTrace, "%s audio set up for %s on port %d, RTCP on port %d\n",
    e886b93e:	46a1                	li	a3,8
    e886b940:	0005d797          	auipc	a5,0x5d
    e886b944:	0f878793          	addi	a5,a5,248 # e88c8a38 <kScreenStreamClass+0x160>
    e886b948:	e4d489e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b94c:	46c1                	li	a3,16
    e886b94e:	0005d797          	auipc	a5,0x5d
    e886b952:	0fa78793          	addi	a5,a5,250 # e88c8a48 <kScreenStreamClass+0x170>
    e886b956:	e4d482e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b95a:	02000693          	li	a3,32
    e886b95e:	0005d797          	auipc	a5,0x5d
    e886b962:	0fa78793          	addi	a5,a5,250 # e88c8a58 <kScreenStreamClass+0x180>
    e886b966:	e2d48ae3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b96a:	04000693          	li	a3,64
    e886b96e:	0005d797          	auipc	a5,0x5d
    e886b972:	0fa78793          	addi	a5,a5,250 # e88c8a68 <kScreenStreamClass+0x190>
    e886b976:	e2d482e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b97a:	08000693          	li	a3,128
    e886b97e:	0005d797          	auipc	a5,0x5d
    e886b982:	0fa78793          	addi	a5,a5,250 # e88c8a78 <kScreenStreamClass+0x1a0>
    e886b986:	e0d48ae3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b98a:	10000693          	li	a3,256
    e886b98e:	0005d797          	auipc	a5,0x5d
    e886b992:	0fa78793          	addi	a5,a5,250 # e88c8a88 <kScreenStreamClass+0x1b0>
    e886b996:	e0d482e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b99a:	20000693          	li	a3,512
    e886b99e:	0005d797          	auipc	a5,0x5d
    e886b9a2:	0fa78793          	addi	a5,a5,250 # e88c8a98 <kScreenStreamClass+0x1c0>
    e886b9a6:	ded48ae3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b9aa:	40000693          	li	a3,1024
    e886b9ae:	0005d797          	auipc	a5,0x5d
    e886b9b2:	0fa78793          	addi	a5,a5,250 # e88c8aa8 <kScreenStreamClass+0x1d0>
    e886b9b6:	ded482e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b9ba:	80048693          	addi	a3,s1,-2048
    e886b9be:	0005d797          	auipc	a5,0x5d
    e886b9c2:	0fa78793          	addi	a5,a5,250 # e88c8ab8 <kScreenStreamClass+0x1e0>
    e886b9c6:	dc068ae3          	beqz	a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b9ca:	6685                	lui	a3,0x1
    e886b9cc:	0005d797          	auipc	a5,0x5d
    e886b9d0:	0fc78793          	addi	a5,a5,252 # e88c8ac8 <kScreenStreamClass+0x1f0>
    e886b9d4:	dcd483e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b9d8:	6689                	lui	a3,0x2
    e886b9da:	0005d797          	auipc	a5,0x5d
    e886b9de:	0fe78793          	addi	a5,a5,254 # e88c8ad8 <kScreenStreamClass+0x200>
    e886b9e2:	dad48ce3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b9e6:	6691                	lui	a3,0x4
    e886b9e8:	0005d797          	auipc	a5,0x5d
    e886b9ec:	10078793          	addi	a5,a5,256 # e88c8ae8 <kScreenStreamClass+0x210>
    e886b9f0:	dad485e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886b9f4:	66a1                	lui	a3,0x8
    e886b9f6:	0005d797          	auipc	a5,0x5d
    e886b9fa:	10278793          	addi	a5,a5,258 # e88c8af8 <kScreenStreamClass+0x220>
    e886b9fe:	d8d48ee3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba02:	66c1                	lui	a3,0x10
    e886ba04:	0005d797          	auipc	a5,0x5d
    e886ba08:	10478793          	addi	a5,a5,260 # e88c8b08 <kScreenStreamClass+0x230>
    e886ba0c:	d8d487e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba10:	000206b7          	lui	a3,0x20
    e886ba14:	0005d797          	auipc	a5,0x5d
    e886ba18:	10478793          	addi	a5,a5,260 # e88c8b18 <kScreenStreamClass+0x240>
    e886ba1c:	d6d48fe3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba20:	004006b7          	lui	a3,0x400
    e886ba24:	0005d797          	auipc	a5,0x5d
    e886ba28:	10478793          	addi	a5,a5,260 # e88c8b28 <kScreenStreamClass+0x250>
    e886ba2c:	d6d487e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba30:	008006b7          	lui	a3,0x800
    e886ba34:	0005d797          	auipc	a5,0x5d
    e886ba38:	10478793          	addi	a5,a5,260 # e88c8b38 <kScreenStreamClass+0x260>
    e886ba3c:	d4d48fe3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba40:	010006b7          	lui	a3,0x1000
    e886ba44:	0005d797          	auipc	a5,0x5d
    e886ba48:	10478793          	addi	a5,a5,260 # e88c8b48 <kScreenStreamClass+0x270>
    e886ba4c:	d4d487e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba50:	020006b7          	lui	a3,0x2000
    e886ba54:	0005d797          	auipc	a5,0x5d
    e886ba58:	10478793          	addi	a5,a5,260 # e88c8b58 <kScreenStreamClass+0x280>
    e886ba5c:	d2d48fe3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba60:	040006b7          	lui	a3,0x4000
    e886ba64:	0005d797          	auipc	a5,0x5d
    e886ba68:	10478793          	addi	a5,a5,260 # e88c8b68 <kScreenStreamClass+0x290>
    e886ba6c:	d2d487e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba70:	080006b7          	lui	a3,0x8000
    e886ba74:	0005d797          	auipc	a5,0x5d
    e886ba78:	10478793          	addi	a5,a5,260 # e88c8b78 <kScreenStreamClass+0x2a0>
    e886ba7c:	d0d48fe3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba80:	100006b7          	lui	a3,0x10000
    e886ba84:	0005d797          	auipc	a5,0x5d
    e886ba88:	f6c78793          	addi	a5,a5,-148 # e88c89f0 <kScreenStreamClass+0x118>
    e886ba8c:	d0d487e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886ba90:	200006b7          	lui	a3,0x20000
    e886ba94:	0005d797          	auipc	a5,0x5d
    e886ba98:	0f478793          	addi	a5,a5,244 # e88c8b88 <kScreenStreamClass+0x2b0>
    e886ba9c:	ced48fe3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886baa0:	400006b7          	lui	a3,0x40000
    e886baa4:	0005d797          	auipc	a5,0x5d
    e886baa8:	f3c78793          	addi	a5,a5,-196 # e88c89e0 <kScreenStreamClass+0x108>
    e886baac:	ced487e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886bab0:	4685                	li	a3,1
    e886bab2:	01f69613          	slli	a2,a3,0x1f
    e886bab6:	0005d797          	auipc	a5,0x5d
    e886baba:	f4a78793          	addi	a5,a5,-182 # e88c8a00 <kScreenStreamClass+0x128>
    e886babe:	ccc48ee3          	beq	s1,a2,e886b79a <_GeneralAudioSetup+0x5bc>
    e886bac2:	1682                	slli	a3,a3,0x20
    e886bac4:	0005d797          	auipc	a5,0x5d
    e886bac8:	f4c78793          	addi	a5,a5,-180 # e88c8a10 <kScreenStreamClass+0x138>
    e886bacc:	ccd487e3          	beq	s1,a3,e886b79a <_GeneralAudioSetup+0x5bc>
    e886bad0:	0005d797          	auipc	a5,0x5d
    e886bad4:	0c878793          	addi	a5,a5,200 # e88c8b98 <kScreenStreamClass+0x2c0>
    e886bad8:	b1c9                	j	e886b79a <_GeneralAudioSetup+0x5bc>
	if( err ) atr_ulog( kLogLevelWarning, "### General audio setup failed: %#m\n", err );
    e886bada:	03c00593          	li	a1,60
    e886bade:	d94e80ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886bae2:	f6050363          	beqz	a0,e886b248 <_GeneralAudioSetup+0x6a>
    e886bae6:	f40ff06f          	j	e886b226 <_GeneralAudioSetup+0x48>

00000000e886baea <_GeneralAudioReceiveRTP>:
{
    e886baea:	7171                	addi	sp,sp,-176
    e886baec:	f122                	sd	s0,160(sp)
    e886baee:	ed26                	sd	s1,152(sp)
    e886baf0:	e94a                	sd	s2,144(sp)
    e886baf2:	e152                	sd	s4,128(sp)
    e886baf4:	f506                	sd	ra,168(sp)
    e886baf6:	e54e                	sd	s3,136(sp)
    e886baf8:	fcd6                	sd	s5,120(sp)
    e886bafa:	f8da                	sd	s6,112(sp)
    e886bafc:	f4de                	sd	s7,104(sp)
    e886bafe:	f0e2                	sd	s8,96(sp)
    e886bb00:	ece6                	sd	s9,88(sp)
    e886bb02:	e8ea                	sd	s10,80(sp)
    e886bb04:	e4ee                	sd	s11,72(sp)
    e886bb06:	842a                	mv	s0,a0
	_SessionLock( inSession );
    e886bb08:	7548                	ld	a0,168(a0)
{
    e886bb0a:	8a2e                	mv	s4,a1
    e886bb0c:	8932                	mv	s2,a2
	_SessionLock( inSession );
    e886bb0e:	9b7fe0ef          	jal	ra,e886a4c4 <_SessionLock.isra.3>
	node = inSession->freeList;
    e886bb12:	6789                	lui	a5,0x2
    e886bb14:	97a2                	add	a5,a5,s0
    e886bb16:	8587b483          	ld	s1,-1960(a5) # 1858 <memcmp-0xe87fe7a8>
	if( node )
    e886bb1a:	ccb1                	beqz	s1,e886bb76 <_GeneralAudioReceiveRTP+0x8c>
		inSession->freeList = node->next;
    e886bb1c:	6098                	ld	a4,0(s1)
    e886bb1e:	84e7bc23          	sd	a4,-1960(a5)
	if( inPkt )
    e886bb22:	6789                	lui	a5,0x2
    e886bb24:	97a2                	add	a5,a5,s0
    e886bb26:	8007b603          	ld	a2,-2048(a5) # 1800 <memcmp-0xe87fe800>
    e886bb2a:	100a0263          	beqz	s4,e886bc2e <_GeneralAudioReceiveRTP+0x144>
		require_action( inSize <= inSession->nodeBufferSize, exit, err = kSizeErr );
    e886bb2e:	05266063          	bltu	a2,s2,e886bb6e <_GeneralAudioReceiveRTP+0x84>
		memcpy( node->data, inPkt, inSize );
    e886bb32:	7488                	ld	a0,40(s1)
    e886bb34:	864a                	mv	a2,s2
    e886bb36:	85d2                	mv	a1,s4
    e886bb38:	069100ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		len = inSize;
    e886bb3c:	f44a                	sd	s2,40(sp)
	err = _GeneralAudioProcessPacket( inSession, node, len, inPkt != NULL );
    e886bb3e:	78a2                	ld	a7,40(sp)
	if( inSize < kRTPHeaderSize ) { dlogassert( "Packet too small: %zu bytes", inSize ); err = kSizeErr; goto exit; }
    e886bb40:	47ad                	li	a5,11
    e886bb42:	1317e163          	bltu	a5,a7,e886bc64 <_GeneralAudioReceiveRTP+0x17a>
    e886bb46:	6705                	lui	a4,0x1
    e886bb48:	0005f817          	auipc	a6,0x5f
    e886bb4c:	ae880813          	addi	a6,a6,-1304 # e88ca630 <kAirPlayReceiverServerClass+0xc38>
    e886bb50:	00060797          	auipc	a5,0x60
    e886bb54:	82878793          	addi	a5,a5,-2008 # e88cb378 <__PRETTY_FUNCTION__.13956>
    e886bb58:	98370713          	addi	a4,a4,-1661 # 983 <memcmp-0xe87ff67d>
    e886bb5c:	0005e697          	auipc	a3,0x5e
    e886bb60:	67468693          	addi	a3,a3,1652 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886bb64:	4601                	li	a2,0
    e886bb66:	4581                	li	a1,0
    e886bb68:	4501                	li	a0,0
    e886bb6a:	85fe20ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		require_action( inSize <= inSession->nodeBufferSize, exit, err = kSizeErr );
    e886bb6e:	7979                	lui	s2,0xffffe
    e886bb70:	5a990913          	addi	s2,s2,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e886bb74:	a8f9                	j	e886bc52 <_GeneralAudioReceiveRTP+0x168>
		stop = inSession->busyListSentinel;
    e886bb76:	8507b703          	ld	a4,-1968(a5)
		node = stop->next;
    e886bb7a:	6304                	ld	s1,0(a4)
		if( node != stop )
    e886bb7c:	04970c63          	beq	a4,s1,e886bbd4 <_GeneralAudioReceiveRTP+0xea>
			node->next->prev = node->prev;
    e886bb80:	f8e4c68b          	ldd	a3,a4,(s1),0,4
			atr_stats_ulog( kLogLevelVerbose, "### No free buffer nodes. Stealing oldest busy node.\n" );
    e886bb84:	00069517          	auipc	a0,0x69
    e886bb88:	79c50513          	addi	a0,a0,1948 # e88d5320 <gLogCategory_AirPlayReceiverStats>
			node->next->prev = node->prev;
    e886bb8c:	e698                	sd	a4,8(a3)
			node->prev->next = node->next;
    e886bb8e:	6094                	ld	a3,0(s1)
    e886bb90:	e314                	sd	a3,0(a4)
			--inSession->busyNodeCount;
    e886bb92:	8607a703          	lw	a4,-1952(a5)
    e886bb96:	377d                	addiw	a4,a4,-1
    e886bb98:	86e7a023          	sw	a4,-1952(a5)
			atr_stats_ulog( kLogLevelVerbose, "### No free buffer nodes. Stealing oldest busy node.\n" );
    e886bb9c:	411c                	lw	a5,0(a0)
    e886bb9e:	4751                	li	a4,20
    e886bba0:	f8f741e3          	blt	a4,a5,e886bb22 <_GeneralAudioReceiveRTP+0x38>
    e886bba4:	577d                	li	a4,-1
    e886bba6:	02e78263          	beq	a5,a4,e886bbca <_GeneralAudioReceiveRTP+0xe0>
    e886bbaa:	0005f697          	auipc	a3,0x5f
    e886bbae:	a1668693          	addi	a3,a3,-1514 # e88ca5c0 <kAirPlayReceiverServerClass+0xbc8>
    e886bbb2:	4651                	li	a2,20
    e886bbb4:	0005f597          	auipc	a1,0x5f
    e886bbb8:	7ac58593          	addi	a1,a1,1964 # e88cb360 <__PRETTY_FUNCTION__.13941>
    e886bbbc:	00069517          	auipc	a0,0x69
    e886bbc0:	76450513          	addi	a0,a0,1892 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886bbc4:	8b1e80ef          	jal	ra,e8854474 <LogPrintF>
    e886bbc8:	bfa9                	j	e886bb22 <_GeneralAudioReceiveRTP+0x38>
    e886bbca:	45d1                	li	a1,20
    e886bbcc:	ca6e80ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886bbd0:	d929                	beqz	a0,e886bb22 <_GeneralAudioReceiveRTP+0x38>
    e886bbd2:	bfe1                	j	e886bbaa <_GeneralAudioReceiveRTP+0xc0>
			dlogassert( "No buffer nodes at all? Probably a bug in the code\n" );
    e886bbd4:	6705                	lui	a4,0x1
    e886bbd6:	0005f817          	auipc	a6,0x5f
    e886bbda:	a2280813          	addi	a6,a6,-1502 # e88ca5f8 <kAirPlayReceiverServerClass+0xc00>
    e886bbde:	0005f797          	auipc	a5,0x5f
    e886bbe2:	78278793          	addi	a5,a5,1922 # e88cb360 <__PRETTY_FUNCTION__.13941>
    e886bbe6:	93f70713          	addi	a4,a4,-1729 # 93f <memcmp-0xe87ff6c1>
    e886bbea:	0005e697          	auipc	a3,0x5e
    e886bbee:	5e668693          	addi	a3,a3,1510 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886bbf2:	4601                	li	a2,0
    e886bbf4:	4581                	li	a1,0
    e886bbf6:	4501                	li	a0,0
    e886bbf8:	fd0e20ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			err = kNoResourcesErr;
    e886bbfc:	7979                	lui	s2,0xffffe
			usleep( 100000 ); // Sleep for a moment to avoid hogging the CPU on continual failures.
    e886bbfe:	4529                	li	a0,10
    e886bc00:	416100ef          	jal	ra,e887c016 <esKRNL_TimeDly>
			err = kNoResourcesErr;
    e886bc04:	5b790913          	addi	s2,s2,1463 # ffffffffffffe5b7 <__DRAM0_INF_BASE+0xffffffff0000e5b7>
	_SessionUnlock( inSession );
    e886bc08:	7448                	ld	a0,168(s0)
    e886bc0a:	8c9fe0ef          	jal	ra,e886a4d2 <_SessionUnlock.isra.4>
}
    e886bc0e:	740a                	ld	s0,160(sp)
    e886bc10:	70aa                	ld	ra,168(sp)
    e886bc12:	854a                	mv	a0,s2
    e886bc14:	64ea                	ld	s1,152(sp)
    e886bc16:	694a                	ld	s2,144(sp)
    e886bc18:	69aa                	ld	s3,136(sp)
    e886bc1a:	6a0a                	ld	s4,128(sp)
    e886bc1c:	7ae6                	ld	s5,120(sp)
    e886bc1e:	7b46                	ld	s6,112(sp)
    e886bc20:	7ba6                	ld	s7,104(sp)
    e886bc22:	7c06                	ld	s8,96(sp)
    e886bc24:	6ce6                	ld	s9,88(sp)
    e886bc26:	6d46                	ld	s10,80(sp)
    e886bc28:	6da6                	ld	s11,72(sp)
    e886bc2a:	614d                	addi	sp,sp,176
    e886bc2c:	8082                	ret
			err = SocketRecvFrom( ctx->dataSock, node->data, inSession->nodeBufferSize, &len, NULL, 0, NULL, NULL, NULL, NULL );
    e886bc2e:	748c                	ld	a1,40(s1)
    e886bc30:	47c42503          	lw	a0,1148(s0)
    e886bc34:	4781                	li	a5,0
    e886bc36:	e402                	sd	zero,8(sp)
    e886bc38:	e002                	sd	zero,0(sp)
    e886bc3a:	4881                	li	a7,0
    e886bc3c:	4801                	li	a6,0
    e886bc3e:	4701                	li	a4,0
    e886bc40:	1034                	addi	a3,sp,40
    e886bc42:	f2cea0ef          	jal	ra,e885636e <SocketRecvFrom>
    e886bc46:	892a                	mv	s2,a0
		if( err == EWOULDBLOCK ) goto exit;
    e886bc48:	47ad                	li	a5,11
    e886bc4a:	00f50463          	beq	a0,a5,e886bc52 <_GeneralAudioReceiveRTP+0x168>
		require_noerr( err, exit );
    e886bc4e:	ee0508e3          	beqz	a0,e886bb3e <_GeneralAudioReceiveRTP+0x54>
	if( node )
    e886bc52:	d8dd                	beqz	s1,e886bc08 <_GeneralAudioReceiveRTP+0x11e>
		node->next = inSession->freeList;
    e886bc54:	6789                	lui	a5,0x2
    e886bc56:	97a2                	add	a5,a5,s0
    e886bc58:	8587b703          	ld	a4,-1960(a5) # 1858 <memcmp-0xe87fe7a8>
    e886bc5c:	e098                	sd	a4,0(s1)
		inSession->freeList = node;
    e886bc5e:	8497bc23          	sd	s1,-1960(a5)
    e886bc62:	b75d                	j	e886bc08 <_GeneralAudioReceiveRTP+0x11e>
	rtp					= (RTPPacket *) inNode->data;
    e886bc64:	0284b903          	ld	s2,40(s1)
    e886bc68:	ec46                	sd	a7,24(sp)
	rtp->header.seq		= pktSeq = ntohs( rtp->header.seq );
    e886bc6a:	00295503          	lhu	a0,2(s2)
    e886bc6e:	2b01b0ef          	jal	ra,e8886f1e <lwip_htons>
    e886bc72:	00a91123          	sh	a0,2(s2)
    e886bc76:	89aa                	mv	s3,a0
	rtp->header.ts		= pktTS  = ntohl( rtp->header.ts );
    e886bc78:	00492503          	lw	a0,4(s2)
    e886bc7c:	2b21b0ef          	jal	ra,e8886f2e <lwip_htonl>
    e886bc80:	00050a9b          	sext.w	s5,a0
	rtp->header.ssrc	= ntohl( rtp->header.ssrc );
    e886bc84:	00892503          	lw	a0,8(s2)
	rtp->header.ts		= pktTS  = ntohl( rtp->header.ts );
    e886bc88:	01592223          	sw	s5,4(s2)
	rtp->header.ssrc	= ntohl( rtp->header.ssrc );
    e886bc8c:	2a21b0ef          	jal	ra,e8886f2e <lwip_htonl>
    e886bc90:	00a92423          	sw	a0,8(s2)
	inNode->ptr			= inNode->data + kRTPHeaderSize;
    e886bc94:	749c                	ld	a5,40(s1)
	inNode->size		= inSize - kRTPHeaderSize;
    e886bc96:	68e2                	ld	a7,24(sp)
	inNode->rtp			= rtp;
    e886bc98:	0124b823          	sd	s2,16(s1)
	inNode->ptr			= inNode->data + kRTPHeaderSize;
    e886bc9c:	07b1                	addi	a5,a5,12
    e886bc9e:	ec9c                	sd	a5,24(s1)
	if( inSession->rtpAudioDupsInitialized )
    e886bca0:	6785                	lui	a5,0x1
	inNode->size		= inSize - kRTPHeaderSize;
    e886bca2:	18d1                	addi	a7,a7,-12
	if( inSession->rtpAudioDupsInitialized )
    e886bca4:	97a2                	add	a5,a5,s0
	inNode->size		= inSize - kRTPHeaderSize;
    e886bca6:	0314b023          	sd	a7,32(s1)
	inNode->ts			= pktTS;
    e886bcaa:	0354a823          	sw	s5,48(s1)
	if( inSession->rtpAudioDupsInitialized )
    e886bcae:	3507c703          	lbu	a4,848(a5) # 1350 <memcmp-0xe87fecb0>
    e886bcb2:	16070163          	beqz	a4,e886be14 <_GeneralAudioReceiveRTP+0x32a>
		diff = Mod16_Cmp( inSeq, inSession->rtpAudioDupsLastSeq );
    e886bcb6:	3527d783          	lhu	a5,850(a5)
    e886bcba:	40f987bb          	subw	a5,s3,a5
    e886bcbe:	3c07a78b          	ext	a5,a5,15,0
		if(      diff  > 0 )						{}
    e886bcc2:	00f04863          	bgtz	a5,e886bcd2 <_GeneralAudioReceiveRTP+0x1e8>
		else if( diff == 0 )						goto dup;
    e886bcc6:	16078863          	beqz	a5,e886be36 <_GeneralAudioReceiveRTP+0x34c>
		else if( diff <= -kAirTunesDupWindowSize )	goto dup;
    e886bcca:	e0100713          	li	a4,-511
    e886bcce:	16e7c463          	blt	a5,a4,e886be36 <_GeneralAudioReceiveRTP+0x34c>
		i = inSeq % kAirTunesDupWindowSize;
    e886bcd2:	1ff9f793          	andi	a5,s3,511
		if( inSession->rtpAudioDupsArray[ i ] == inSeq ) goto dup;
    e886bcd6:	6705                	lui	a4,0x1
    e886bcd8:	02f4178b          	addsl	a5,s0,a5,1
    e886bcdc:	97ba                	add	a5,a5,a4
    e886bcde:	3547d703          	lhu	a4,852(a5)
    e886bce2:	15370a63          	beq	a4,s3,e886be36 <_GeneralAudioReceiveRTP+0x34c>
		inSession->rtpAudioDupsArray[ i ] = inSeq;
    e886bce6:	35379a23          	sh	s3,852(a5)
	inSession->rtpAudioDupsLastSeq = inSeq;
    e886bcea:	6705                	lui	a4,0x1
    e886bcec:	00e40633          	add	a2,s0,a4
    e886bcf0:	35361923          	sh	s3,850(a2)
	if( !inIsRetransmit )								_GeneralAudioTrackLosses( inSession, inNode );
    e886bcf4:	280a1863          	bnez	s4,e886bf84 <_GeneralAudioReceiveRTP+0x49a>
	seqCurr = inNode->rtp->header.seq;
    e886bcf8:	689c                	ld	a5,16(s1)
    e886bcfa:	0027dc03          	lhu	s8,2(a5)
	if( inSession->source.receiveCount > 0 )
    e886bcfe:	25842783          	lw	a5,600(s0)
    e886bd02:	10078063          	beqz	a5,e886be02 <_GeneralAudioReceiveRTP+0x318>
		seqNext = inSession->lastRTPSeq + 1;
    e886bd06:	6789                	lui	a5,0x2
    e886bd08:	97a2                	add	a5,a5,s0
    e886bd0a:	8a87d583          	lhu	a1,-1880(a5) # 18a8 <memcmp-0xe87fe758>
		if( seqCurr == seqNext )
    e886bd0e:	000c079b          	sext.w	a5,s8
		seqNext = inSession->lastRTPSeq + 1;
    e886bd12:	00158c9b          	addiw	s9,a1,1
    e886bd16:	3c0cb90b          	extu	s2,s9,15,0
		if( seqCurr == seqNext )
    e886bd1a:	00090b9b          	sext.w	s7,s2
    e886bd1e:	0f778263          	beq	a5,s7,e886be02 <_GeneralAudioReceiveRTP+0x318>
		else if( Mod16_GT( seqCurr, seqNext ) )
    e886bd22:	412c093b          	subw	s2,s8,s2
    e886bd26:	3c09390b          	extu	s2,s2,15,0
    e886bd2a:	0109169b          	slliw	a3,s2,0x10
    e886bd2e:	4106d69b          	sraiw	a3,a3,0x10
    e886bd32:	22d05363          	blez	a3,e886bf58 <_GeneralAudioReceiveRTP+0x46e>
			gAirPlayAudioStats.lostPackets += seqLoss;
    e886bd36:	00078717          	auipc	a4,0x78
    e886bd3a:	06270713          	addi	a4,a4,98 # e88e3d98 <gAirPlayAudioStats>
    e886bd3e:	4f14                	lw	a3,24(a4)
    e886bd40:	2901                	sext.w	s2,s2
    e886bd42:	8d3a                	mv	s10,a4
    e886bd44:	012686bb          	addw	a3,a3,s2
    e886bd48:	cf14                	sw	a3,24(a4)
			if( seqLoss > inSession->source.maxBurstLoss ) inSession->source.maxBurstLoss = seqLoss;
    e886bd4a:	40442683          	lw	a3,1028(s0)
    e886bd4e:	0126f463          	bgeu	a3,s2,e886bd56 <_GeneralAudioReceiveRTP+0x26c>
    e886bd52:	41242223          	sw	s2,1028(s0)
			if( seqLoss <= inSession->source.retransmitMaxLoss )
    e886bd56:	40042703          	lw	a4,1024(s0)
    e886bd5a:	19276a63          	bltu	a4,s2,e886beee <_GeneralAudioReceiveRTP+0x404>
				atr_stats_ulog( kLogLevelNotice, "### Lost packets %u-%u (+%u, %u total)\n", 
    e886bd5e:	00069b17          	auipc	s6,0x69
    e886bd62:	5c2b0b13          	addi	s6,s6,1474 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886bd66:	000b2703          	lw	a4,0(s6)
    e886bd6a:	03200693          	li	a3,50
    e886bd6e:	02e6c963          	blt	a3,a4,e886bda0 <_GeneralAudioReceiveRTP+0x2b6>
    e886bd72:	56fd                	li	a3,-1
    e886bd74:	10d70e63          	beq	a4,a3,e886be90 <_GeneralAudioReceiveRTP+0x3a6>
    e886bd78:	018d2883          	lw	a7,24(s10)
    e886bd7c:	884a                	mv	a6,s2
    e886bd7e:	875e                	mv	a4,s7
    e886bd80:	0005f697          	auipc	a3,0x5f
    e886bd84:	8f068693          	addi	a3,a3,-1808 # e88ca670 <kAirPlayReceiverServerClass+0xc78>
    e886bd88:	03200613          	li	a2,50
    e886bd8c:	0005f597          	auipc	a1,0x5f
    e886bd90:	63c58593          	addi	a1,a1,1596 # e88cb3c8 <__PRETTY_FUNCTION__.14064>
    e886bd94:	00069517          	auipc	a0,0x69
    e886bd98:	58c50513          	addi	a0,a0,1420 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886bd9c:	ed8e80ef          	jal	ra,e8854474 <LogPrintF>
				if( !inSession->source.rtcpRTDisable ) _RetransmitsSchedule( inSession, seqNext, seqLoss );
    e886bda0:	39844783          	lbu	a5,920(s0)
    e886bda4:	efb9                	bnez	a5,e886be02 <_GeneralAudioReceiveRTP+0x318>
	for( next = &inSession->source.rtcpRTBusyList; *next; next = &( *next )->next ) {}
    e886bda6:	39043783          	ld	a5,912(s0)
    e886bdaa:	39040d13          	addi	s10,s0,912
    e886bdae:	0e079b63          	bnez	a5,e886bea4 <_GeneralAudioReceiveRTP+0x3ba>
	nowNanos = UpNanoseconds();
    e886bdb2:	c12f50ef          	jal	ra,e88611c4 <UpTicks>
    e886bdb6:	000f47b7          	lui	a5,0xf4
    e886bdba:	24078793          	addi	a5,a5,576 # f4240 <memcmp-0xe870bdc0>
    e886bdbe:	02f50533          	mul	a0,a0,a5
	for( i = 0; i < inSeqCount; ++i )
    e886bdc2:	4801                	li	a6,0
		node = inSession->source.rtcpRTFreeList;
    e886bdc4:	38843783          	ld	a5,904(s0)
		if( !node )
    e886bdc8:	0e079d63          	bnez	a5,e886bec2 <_GeneralAudioReceiveRTP+0x3d8>
			atr_stats_ulog( kLogLevelWarning, "### No free retransmit nodes, dropping retransmit of seq %u#%u, %u\n", 
    e886bdcc:	000b2783          	lw	a5,0(s6)
    e886bdd0:	03c00713          	li	a4,60
    e886bdd4:	02f74763          	blt	a4,a5,e886be02 <_GeneralAudioReceiveRTP+0x318>
    e886bdd8:	577d                	li	a4,-1
    e886bdda:	0ce78863          	beq	a5,a4,e886beaa <_GeneralAudioReceiveRTP+0x3c0>
    e886bdde:	87ca                	mv	a5,s2
    e886bde0:	875e                	mv	a4,s7
    e886bde2:	0005f697          	auipc	a3,0x5f
    e886bde6:	8b668693          	addi	a3,a3,-1866 # e88ca698 <kAirPlayReceiverServerClass+0xca0>
    e886bdea:	03c00613          	li	a2,60
    e886bdee:	0005f597          	auipc	a1,0x5f
    e886bdf2:	63a58593          	addi	a1,a1,1594 # e88cb428 <__PRETTY_FUNCTION__.14100>
    e886bdf6:	00069517          	auipc	a0,0x69
    e886bdfa:	52a50513          	addi	a0,a0,1322 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886bdfe:	e76e80ef          	jal	ra,e8854474 <LogPrintF>
		inSession->lastRTPSeq = seqCurr;
    e886be02:	6789                	lui	a5,0x2
    e886be04:	97a2                	add	a5,a5,s0
    e886be06:	8b879423          	sh	s8,-1880(a5) # 18a8 <memcmp-0xe87fe758>
		inSession->lastRTPTS  = inNode->rtp->header.ts;
    e886be0a:	6898                	ld	a4,16(s1)
    e886be0c:	4358                	lw	a4,4(a4)
    e886be0e:	8ae7a623          	sw	a4,-1876(a5)
    e886be12:	aa8d                	j	e886bf84 <_GeneralAudioReceiveRTP+0x49a>
			inSession->rtpAudioDupsArray[ i ] = inSeq;
    e886be14:	6785                	lui	a5,0x1
    e886be16:	35478693          	addi	a3,a5,852 # 1354 <memcmp-0xe87fecac>
		for( i = 0; i < kAirTunesDupWindowSize; ++i )
    e886be1a:	4701                	li	a4,0
			inSession->rtpAudioDupsArray[ i ] = inSeq;
    e886be1c:	96a2                	add	a3,a3,s0
		for( i = 0; i < kAirTunesDupWindowSize; ++i )
    e886be1e:	20000613          	li	a2,512
			inSession->rtpAudioDupsArray[ i ] = inSeq;
    e886be22:	22e6d98b          	srh	s3,a3,a4,1
		for( i = 0; i < kAirTunesDupWindowSize; ++i )
    e886be26:	0705                	addi	a4,a4,1
    e886be28:	fec71de3          	bne	a4,a2,e886be22 <_GeneralAudioReceiveRTP+0x338>
		inSession->rtpAudioDupsInitialized = true;
    e886be2c:	97a2                	add	a5,a5,s0
    e886be2e:	4705                	li	a4,1
    e886be30:	34e78823          	sb	a4,848(a5)
    e886be34:	bd5d                	j	e886bcea <_GeneralAudioReceiveRTP+0x200>
	if( !inSession->redundantAudio )
    e886be36:	6785                	lui	a5,0x1
    e886be38:	97a2                	add	a5,a5,s0
    e886be3a:	34c7a783          	lw	a5,844(a5) # 134c <memcmp-0xe87fecb4>
    e886be3e:	c789                	beqz	a5,e886be48 <_GeneralAudioReceiveRTP+0x35e>
		err = kDuplicateErr;
    e886be40:	7979                	lui	s2,0xffffe
    e886be42:	5b690913          	addi	s2,s2,1462 # ffffffffffffe5b6 <__DRAM0_INF_BASE+0xffffffff0000e5b6>
    e886be46:	b531                	j	e886bc52 <_GeneralAudioReceiveRTP+0x168>
		atr_stats_ulog( kLogLevelInfo, "### Duplicate packet seq %u\n", inSeq );
    e886be48:	00069517          	auipc	a0,0x69
    e886be4c:	4d850513          	addi	a0,a0,1240 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886be50:	411c                	lw	a5,0(a0)
    e886be52:	02800713          	li	a4,40
    e886be56:	fef745e3          	blt	a4,a5,e886be40 <_GeneralAudioReceiveRTP+0x356>
    e886be5a:	577d                	li	a4,-1
    e886be5c:	02e78463          	beq	a5,a4,e886be84 <_GeneralAudioReceiveRTP+0x39a>
    e886be60:	874e                	mv	a4,s3
    e886be62:	0005e697          	auipc	a3,0x5e
    e886be66:	7ee68693          	addi	a3,a3,2030 # e88ca650 <kAirPlayReceiverServerClass+0xc58>
    e886be6a:	02800613          	li	a2,40
    e886be6e:	0005f597          	auipc	a1,0x5f
    e886be72:	54258593          	addi	a1,a1,1346 # e88cb3b0 <__PRETTY_FUNCTION__.14055>
    e886be76:	00069517          	auipc	a0,0x69
    e886be7a:	4aa50513          	addi	a0,a0,1194 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886be7e:	df6e80ef          	jal	ra,e8854474 <LogPrintF>
    e886be82:	bf7d                	j	e886be40 <_GeneralAudioReceiveRTP+0x356>
    e886be84:	02800593          	li	a1,40
    e886be88:	9eae80ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886be8c:	d955                	beqz	a0,e886be40 <_GeneralAudioReceiveRTP+0x356>
    e886be8e:	bfc9                	j	e886be60 <_GeneralAudioReceiveRTP+0x376>
				atr_stats_ulog( kLogLevelNotice, "### Lost packets %u-%u (+%u, %u total)\n", 
    e886be90:	03200593          	li	a1,50
    e886be94:	855a                	mv	a0,s6
    e886be96:	ec3e                	sd	a5,24(sp)
    e886be98:	9dae80ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886be9c:	67e2                	ld	a5,24(sp)
    e886be9e:	f00501e3          	beqz	a0,e886bda0 <_GeneralAudioReceiveRTP+0x2b6>
    e886bea2:	bdd9                	j	e886bd78 <_GeneralAudioReceiveRTP+0x28e>
	for( next = &inSession->source.rtcpRTBusyList; *next; next = &( *next )->next ) {}
    e886bea4:	8d3e                	mv	s10,a5
    e886bea6:	639c                	ld	a5,0(a5)
    e886bea8:	b719                	j	e886bdae <_GeneralAudioReceiveRTP+0x2c4>
			atr_stats_ulog( kLogLevelWarning, "### No free retransmit nodes, dropping retransmit of seq %u#%u, %u\n", 
    e886beaa:	03c00593          	li	a1,60
    e886beae:	00069517          	auipc	a0,0x69
    e886beb2:	47250513          	addi	a0,a0,1138 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886beb6:	ec42                	sd	a6,24(sp)
    e886beb8:	9bae80ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886bebc:	6862                	ld	a6,24(sp)
    e886bebe:	d131                	beqz	a0,e886be02 <_GeneralAudioReceiveRTP+0x318>
    e886bec0:	bf39                	j	e886bdde <_GeneralAudioReceiveRTP+0x2f4>
		inSession->source.rtcpRTFreeList = node->next;
    e886bec2:	6398                	ld	a4,0(a5)
    e886bec4:	38e43423          	sd	a4,904(s0)
		node->seq			= inSeqStart + i;
    e886bec8:	010c873b          	addw	a4,s9,a6
		node->next			= NULL;
    e886becc:	0007b023          	sd	zero,0(a5)
		node->seq			= inSeqStart + i;
    e886bed0:	00e79423          	sh	a4,8(a5)
		node->tries			= 0;
    e886bed4:	00079523          	sh	zero,10(a5)
		node->startNanos	= nowNanos;
    e886bed8:	eb88                	sd	a0,16(a5)
		node->nextNanos		= nowNanos;
    e886beda:	f388                	sd	a0,32(a5)
	for( i = 0; i < inSeqCount; ++i )
    e886bedc:	2805                	addiw	a6,a6,1
		*next = node;
    e886bede:	00fd3023          	sd	a5,0(s10)
	for( i = 0; i < inSeqCount; ++i )
    e886bee2:	3c08380b          	extu	a6,a6,15,0
		 next = &node->next;
    e886bee6:	8d3e                	mv	s10,a5
	for( i = 0; i < inSeqCount; ++i )
    e886bee8:	ed091ee3          	bne	s2,a6,e886bdc4 <_GeneralAudioReceiveRTP+0x2da>
    e886beec:	bf19                	j	e886be02 <_GeneralAudioReceiveRTP+0x318>
				atr_ulog( kLogLevelNotice, "### Burst packet loss %u-%u (+%u, %u total)\n", 
    e886beee:	00069517          	auipc	a0,0x69
    e886bef2:	37250513          	addi	a0,a0,882 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886bef6:	4118                	lw	a4,0(a0)
    e886bef8:	03200693          	li	a3,50
    e886befc:	02e6c963          	blt	a3,a4,e886bf2e <_GeneralAudioReceiveRTP+0x444>
    e886bf00:	56fd                	li	a3,-1
    e886bf02:	04d70363          	beq	a4,a3,e886bf48 <_GeneralAudioReceiveRTP+0x45e>
    e886bf06:	018d2883          	lw	a7,24(s10)
    e886bf0a:	884a                	mv	a6,s2
    e886bf0c:	875e                	mv	a4,s7
    e886bf0e:	0005e697          	auipc	a3,0x5e
    e886bf12:	7d268693          	addi	a3,a3,2002 # e88ca6e0 <kAirPlayReceiverServerClass+0xce8>
    e886bf16:	03200613          	li	a2,50
    e886bf1a:	0005f597          	auipc	a1,0x5f
    e886bf1e:	4ae58593          	addi	a1,a1,1198 # e88cb3c8 <__PRETTY_FUNCTION__.14064>
    e886bf22:	00069517          	auipc	a0,0x69
    e886bf26:	33e50513          	addi	a0,a0,830 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886bf2a:	d4ae80ef          	jal	ra,e8854474 <LogPrintF>
				++inSession->source.bigLossCount;
    e886bf2e:	40842783          	lw	a5,1032(s0)
				_RetransmitsAbortAll( inSession, "BURST" );
    e886bf32:	0005e597          	auipc	a1,0x5e
    e886bf36:	7de58593          	addi	a1,a1,2014 # e88ca710 <kAirPlayReceiverServerClass+0xd18>
    e886bf3a:	8522                	mv	a0,s0
				++inSession->source.bigLossCount;
    e886bf3c:	2785                	addiw	a5,a5,1
    e886bf3e:	40f42423          	sw	a5,1032(s0)
				_RetransmitsAbortAll( inSession, "BURST" );
    e886bf42:	a45fb0ef          	jal	ra,e8867986 <_RetransmitsAbortAll>
	if( updateLast )
    e886bf46:	bd75                	j	e886be02 <_GeneralAudioReceiveRTP+0x318>
				atr_ulog( kLogLevelNotice, "### Burst packet loss %u-%u (+%u, %u total)\n", 
    e886bf48:	03200593          	li	a1,50
    e886bf4c:	ec3e                	sd	a5,24(sp)
    e886bf4e:	924e80ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886bf52:	67e2                	ld	a5,24(sp)
    e886bf54:	dd69                	beqz	a0,e886bf2e <_GeneralAudioReceiveRTP+0x444>
    e886bf56:	bf45                	j	e886bf06 <_GeneralAudioReceiveRTP+0x41c>
		else if( seqCurr == inSession->lastRTPSeq )
    e886bf58:	0eb79663          	bne	a5,a1,e886c044 <_GeneralAudioReceiveRTP+0x55a>
			dlogassert( "Duplicate sequence number not caught earlier? seq %u", seqCurr );
    e886bf5c:	88be                	mv	a7,a5
    e886bf5e:	0005e817          	auipc	a6,0x5e
    e886bf62:	7ba80813          	addi	a6,a6,1978 # e88ca718 <kAirPlayReceiverServerClass+0xd20>
    e886bf66:	0005f797          	auipc	a5,0x5f
    e886bf6a:	46278793          	addi	a5,a5,1122 # e88cb3c8 <__PRETTY_FUNCTION__.14064>
    e886bf6e:	bba70713          	addi	a4,a4,-1094
    e886bf72:	0005e697          	auipc	a3,0x5e
    e886bf76:	25e68693          	addi	a3,a3,606 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886bf7a:	4601                	li	a2,0
    e886bf7c:	4581                	li	a1,0
    e886bf7e:	4501                	li	a0,0
    e886bf80:	c48e20ef          	jal	ra,e884e3c8 <DebugPrintAssert>
	if( !inSession->source.rtcpRTDisable )				_RetransmitsUpdate( inSession, inNode, inIsRetransmit );
    e886bf84:	39844b03          	lbu	s6,920(s0)
    e886bf88:	100b0b63          	beqz	s6,e886c09e <_GeneralAudioReceiveRTP+0x5b4>
	if( !inIsRetransmit )								increment_wrap( inSession->source.receiveCount, 1 );
    e886bf8c:	2e0a0563          	beqz	s4,e886c276 <_GeneralAudioReceiveRTP+0x78c>
	if( inSession->flushing )
    e886bf90:	6789                	lui	a5,0x2
    e886bf92:	97a2                	add	a5,a5,s0
    e886bf94:	89c7c703          	lbu	a4,-1892(a5) # 189c <memcmp-0xe87fe764>
    e886bf98:	c325                	beqz	a4,e886bff8 <_GeneralAudioReceiveRTP+0x50e>
		if( Mod32_LT( pktTS, inSession->flushUntilTS ) )
    e886bf9a:	8a47a703          	lw	a4,-1884(a5)
    e886bf9e:	40ea873b          	subw	a4,s5,a4
    e886bfa2:	30074d63          	bltz	a4,e886c2bc <_GeneralAudioReceiveRTP+0x7d2>
		if( Mod32_GE( pktTS, inSession->flushTimeoutTS ) )
    e886bfa6:	8a07a703          	lw	a4,-1888(a5)
    e886bfaa:	40ea873b          	subw	a4,s5,a4
    e886bfae:	04074563          	bltz	a4,e886bff8 <_GeneralAudioReceiveRTP+0x50e>
			atr_ulog( kLogLevelInfo, "Flush complete ts=%u until=%u\n", pktTS, inSession->flushUntilTS );
    e886bfb2:	00069517          	auipc	a0,0x69
    e886bfb6:	2ae50513          	addi	a0,a0,686 # e88d5260 <gLogCategory_AirPlayReceiverCore>
			inSession->flushing = false;
    e886bfba:	88078e23          	sb	zero,-1892(a5)
			atr_ulog( kLogLevelInfo, "Flush complete ts=%u until=%u\n", pktTS, inSession->flushUntilTS );
    e886bfbe:	411c                	lw	a5,0(a0)
    e886bfc0:	02800713          	li	a4,40
    e886bfc4:	02f74a63          	blt	a4,a5,e886bff8 <_GeneralAudioReceiveRTP+0x50e>
    e886bfc8:	577d                	li	a4,-1
    e886bfca:	2ce78163          	beq	a5,a4,e886c28c <_GeneralAudioReceiveRTP+0x7a2>
    e886bfce:	6789                	lui	a5,0x2
    e886bfd0:	97a2                	add	a5,a5,s0
    e886bfd2:	8a47a783          	lw	a5,-1884(a5) # 18a4 <memcmp-0xe87fe75c>
    e886bfd6:	8756                	mv	a4,s5
    e886bfd8:	0005e697          	auipc	a3,0x5e
    e886bfdc:	7c868693          	addi	a3,a3,1992 # e88ca7a0 <kAirPlayReceiverServerClass+0xda8>
    e886bfe0:	02800613          	li	a2,40
    e886bfe4:	0005f597          	auipc	a1,0x5f
    e886bfe8:	39458593          	addi	a1,a1,916 # e88cb378 <__PRETTY_FUNCTION__.13956>
    e886bfec:	00069517          	auipc	a0,0x69
    e886bff0:	27450513          	addi	a0,a0,628 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886bff4:	c80e80ef          	jal	ra,e8854474 <LogPrintF>
	stop = inSession->busyListSentinel;
    e886bff8:	6789                	lui	a5,0x2
    e886bffa:	97a2                	add	a5,a5,s0
    e886bffc:	8507b683          	ld	a3,-1968(a5) # 1850 <memcmp-0xe87fe7b0>
	for( curr = stop->prev; ( curr != stop ) && Mod32_GT( curr->rtp->header.ts, pktTS ); curr = curr->prev ) {}
    e886c000:	669c                	ld	a5,8(a3)
    e886c002:	28f68e63          	beq	a3,a5,e886c29e <_GeneralAudioReceiveRTP+0x7b4>
    e886c006:	6b98                	ld	a4,16(a5)
    e886c008:	4358                	lw	a4,4(a4)
    e886c00a:	4157063b          	subw	a2,a4,s5
    e886c00e:	28c04663          	bgtz	a2,e886c29a <_GeneralAudioReceiveRTP+0x7b0>
	if( ( curr != stop ) && ( curr->rtp->header.ts == pktTS ) )
    e886c012:	28ea9663          	bne	s5,a4,e886c29e <_GeneralAudioReceiveRTP+0x7b4>
		dlogassert( "Duplicate timestamp not caught earlier? seq %u ts %u", pktSeq, pktTS );
    e886c016:	6705                	lui	a4,0x1
    e886c018:	e056                	sd	s5,0(sp)
    e886c01a:	88ce                	mv	a7,s3
    e886c01c:	0005e817          	auipc	a6,0x5e
    e886c020:	7a480813          	addi	a6,a6,1956 # e88ca7c0 <kAirPlayReceiverServerClass+0xdc8>
    e886c024:	0005f797          	auipc	a5,0x5f
    e886c028:	35478793          	addi	a5,a5,852 # e88cb378 <__PRETTY_FUNCTION__.13956>
    e886c02c:	9aa70713          	addi	a4,a4,-1622 # 9aa <memcmp-0xe87ff656>
    e886c030:	0005e697          	auipc	a3,0x5e
    e886c034:	1a068693          	addi	a3,a3,416 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886c038:	4601                	li	a2,0
    e886c03a:	4581                	li	a1,0
    e886c03c:	4501                	li	a0,0
    e886c03e:	b8ae20ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e886c042:	bbfd                	j	e886be40 <_GeneralAudioReceiveRTP+0x356>
		else if( inSession->redundantAudio )
    e886c044:	34c62703          	lw	a4,844(a2)
    e886c048:	ff15                	bnez	a4,e886bf84 <_GeneralAudioReceiveRTP+0x49a>
			atr_ulog( kLogLevelNotice, "### Misordered packet seq %u -> %u\n", inSession->lastRTPSeq, seqCurr );
    e886c04a:	00069517          	auipc	a0,0x69
    e886c04e:	21650513          	addi	a0,a0,534 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886c052:	4118                	lw	a4,0(a0)
    e886c054:	03200693          	li	a3,50
    e886c058:	f2e6c6e3          	blt	a3,a4,e886bf84 <_GeneralAudioReceiveRTP+0x49a>
    e886c05c:	56fd                	li	a3,-1
    e886c05e:	02d70763          	beq	a4,a3,e886c08c <_GeneralAudioReceiveRTP+0x5a2>
    e886c062:	6709                	lui	a4,0x2
    e886c064:	9722                	add	a4,a4,s0
    e886c066:	8a875703          	lhu	a4,-1880(a4) # 18a8 <memcmp-0xe87fe758>
    e886c06a:	0005e697          	auipc	a3,0x5e
    e886c06e:	6e668693          	addi	a3,a3,1766 # e88ca750 <kAirPlayReceiverServerClass+0xd58>
    e886c072:	03200613          	li	a2,50
    e886c076:	0005f597          	auipc	a1,0x5f
    e886c07a:	35258593          	addi	a1,a1,850 # e88cb3c8 <__PRETTY_FUNCTION__.14064>
    e886c07e:	00069517          	auipc	a0,0x69
    e886c082:	1e250513          	addi	a0,a0,482 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886c086:	beee80ef          	jal	ra,e8854474 <LogPrintF>
    e886c08a:	bded                	j	e886bf84 <_GeneralAudioReceiveRTP+0x49a>
    e886c08c:	03200593          	li	a1,50
    e886c090:	ec3e                	sd	a5,24(sp)
    e886c092:	fe1e70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886c096:	67e2                	ld	a5,24(sp)
    e886c098:	ee0506e3          	beqz	a0,e886bf84 <_GeneralAudioReceiveRTP+0x49a>
    e886c09c:	b7d9                	j	e886c062 <_GeneralAudioReceiveRTP+0x578>
	nowNanos = UpNanoseconds();
    e886c09e:	000f4937          	lui	s2,0xf4
    e886c0a2:	922f50ef          	jal	ra,e88611c4 <UpTicks>
    e886c0a6:	24090913          	addi	s2,s2,576 # f4240 <memcmp-0xe870bdc0>
    e886c0aa:	03250933          	mul	s2,a0,s2
	pktSeq   = inNode->rtp->header.seq;
    e886c0ae:	689c                	ld	a5,16(s1)
	for( next = &ats->rtcpRTBusyList; ( ( curr = *next ) != NULL ) && ( curr->seq != pktSeq ); next = &curr->next ) {}
    e886c0b0:	39043683          	ld	a3,912(s0)
    e886c0b4:	39040613          	addi	a2,s0,912
	pktSeq   = inNode->rtp->header.seq;
    e886c0b8:	0027d703          	lhu	a4,2(a5)
	for( next = &ats->rtcpRTBusyList; ( ( curr = *next ) != NULL ) && ( curr->seq != pktSeq ); next = &curr->next ) {}
    e886c0bc:	0007079b          	sext.w	a5,a4
    e886c0c0:	20068263          	beqz	a3,e886c2c4 <_GeneralAudioReceiveRTP+0x7da>
    e886c0c4:	0086d583          	lhu	a1,8(a3)
    e886c0c8:	12f59d63          	bne	a1,a5,e886c202 <_GeneralAudioReceiveRTP+0x718>
		if( inIsRetransmit )
    e886c0cc:	060a0763          	beqz	s4,e886c13a <_GeneralAudioReceiveRTP+0x650>
			ageNanos = nowNanos - curr->startNanos;
    e886c0d0:	6a9c                	ld	a5,16(a3)
			if( ageNanos < ats->retransmitMinNanos ) ats->retransmitMinNanos = ageNanos;
    e886c0d2:	3d843703          	ld	a4,984(s0)
			ageNanos = nowNanos - curr->startNanos;
    e886c0d6:	40f907b3          	sub	a5,s2,a5
			if( ageNanos < ats->retransmitMinNanos ) ats->retransmitMinNanos = ageNanos;
    e886c0da:	00e7f463          	bgeu	a5,a4,e886c0e2 <_GeneralAudioReceiveRTP+0x5f8>
    e886c0de:	3cf43c23          	sd	a5,984(s0)
			if( ageNanos > ats->retransmitMaxNanos ) ats->retransmitMaxNanos = ageNanos;
    e886c0e2:	3e043703          	ld	a4,992(s0)
    e886c0e6:	00f77463          	bgeu	a4,a5,e886c0ee <_GeneralAudioReceiveRTP+0x604>
    e886c0ea:	3ef43023          	sd	a5,992(s0)
			if( ( ageNanos > ats->retransmitMinNanos ) && ( ageNanos < ats->retransmitMaxNanos ) )
    e886c0ee:	3d843703          	ld	a4,984(s0)
    e886c0f2:	00f77f63          	bgeu	a4,a5,e886c110 <_GeneralAudioReceiveRTP+0x626>
    e886c0f6:	3e043703          	ld	a4,992(s0)
    e886c0fa:	00e7fb63          	bgeu	a5,a4,e886c110 <_GeneralAudioReceiveRTP+0x626>
				ats->retransmitAvgNanos = ( ( ats->retransmitAvgNanos * 63 ) + ageNanos ) / 64;
    e886c0fe:	3e843703          	ld	a4,1000(s0)
    e886c102:	03f00593          	li	a1,63
    e886c106:	20e5978b          	mula	a5,a1,a4
    e886c10a:	8399                	srli	a5,a5,0x6
    e886c10c:	3ef43423          	sd	a5,1000(s0)
			if( curr->tries <= 1 )
    e886c110:	00a6d703          	lhu	a4,10(a3)
    e886c114:	4785                	li	a5,1
    e886c116:	02e7e263          	bltu	a5,a4,e886c13a <_GeneralAudioReceiveRTP+0x650>
				rttNanos = nowNanos - curr->sentNanos;
    e886c11a:	6e9c                	ld	a5,24(a3)
				if( rttNanos < ats->rtcpRTMinRTTNanos ) { ats->rtcpRTMinRTTNanos = rttNanos; outlier = true; }
    e886c11c:	3a043703          	ld	a4,928(s0)
				rttNanos = nowNanos - curr->sentNanos;
    e886c120:	40f907b3          	sub	a5,s2,a5
				if( rttNanos < ats->rtcpRTMinRTTNanos ) { ats->rtcpRTMinRTTNanos = rttNanos; outlier = true; }
    e886c124:	00e7d563          	bge	a5,a4,e886c12e <_GeneralAudioReceiveRTP+0x644>
    e886c128:	3af43023          	sd	a5,928(s0)
    e886c12c:	4b05                	li	s6,1
				if( rttNanos > ats->rtcpRTMaxRTTNanos ) { ats->rtcpRTMaxRTTNanos = rttNanos; outlier = true; }
    e886c12e:	3a843703          	ld	a4,936(s0)
    e886c132:	0cf75b63          	bge	a4,a5,e886c208 <_GeneralAudioReceiveRTP+0x71e>
    e886c136:	3af43423          	sd	a5,936(s0)
		*next = curr->next;
    e886c13a:	629c                	ld	a5,0(a3)
    e886c13c:	e21c                	sd	a5,0(a2)
		curr->next = ats->rtcpRTFreeList;
    e886c13e:	38843783          	ld	a5,904(s0)
    e886c142:	e29c                	sd	a5,0(a3)
		ats->rtcpRTFreeList = curr;
    e886c144:	38d43423          	sd	a3,904(s0)
	if( inSession->rtcpConnected )
    e886c148:	6b85                	lui	s7,0x1
	for( curr = ats->rtcpRTBusyList; curr; curr = curr->next )
    e886c14a:	39043b03          	ld	s6,912(s0)
	pkt.v_p			= RTCPHeaderInsertVersion( 0, kRTPVersion );
    e886c14e:	7cf5                	lui	s9,0xffffd
	if( inSession->rtcpConnected )
    e886c150:	01740d33          	add	s10,s0,s7
		n = sendto( inSession->rtcpSock, (char *) &pkt, size, 0, &inSession->rtcpRemoteAddr.sa, inSession->rtcpRemoteLen );
    e886c154:	760b8b93          	addi	s7,s7,1888 # 1760 <memcmp-0xe87fe8a0>
	credits = 3;
    e886c158:	4c0d                	li	s8,3
	pkt.v_p			= RTCPHeaderInsertVersion( 0, kRTPVersion );
    e886c15a:	580c8c9b          	addiw	s9,s9,1408
	err = map_socket_value_errno( inSession->rtcpSock, n == (ssize_t) size, n );
    e886c15e:	4da1                	li	s11,8
		n = sendto( inSession->rtcpSock, (char *) &pkt, size, 0, &inSession->rtcpRemoteAddr.sa, inSession->rtcpRemoteLen );
    e886c160:	9ba2                	add	s7,s7,s0
	for( curr = ats->rtcpRTBusyList; curr; curr = curr->next )
    e886c162:	e20b05e3          	beqz	s6,e886bf8c <_GeneralAudioReceiveRTP+0x4a2>
		if( nowNanos < curr->nextNanos ) continue;
    e886c166:	020b3783          	ld	a5,32(s6)
    e886c16a:	08f96963          	bltu	s2,a5,e886c1fc <_GeneralAudioReceiveRTP+0x712>
		if( curr->tries++ > 0 )
    e886c16e:	00ab5703          	lhu	a4,10(s6)
		ageNanos = nowNanos - curr->startNanos;
    e886c172:	010b3783          	ld	a5,16(s6)
		if( curr->tries++ > 0 )
    e886c176:	0017069b          	addiw	a3,a4,1
    e886c17a:	00db1523          	sh	a3,10(s6)
    e886c17e:	cf19                	beqz	a4,e886c19c <_GeneralAudioReceiveRTP+0x6b2>
			if( ageNanos < ats->retransmitRetryMinNanos ) ats->retransmitRetryMinNanos = ageNanos;
    e886c180:	3f043703          	ld	a4,1008(s0)
		ageNanos = nowNanos - curr->startNanos;
    e886c184:	40f907b3          	sub	a5,s2,a5
			if( ageNanos < ats->retransmitRetryMinNanos ) ats->retransmitRetryMinNanos = ageNanos;
    e886c188:	00e7f463          	bgeu	a5,a4,e886c190 <_GeneralAudioReceiveRTP+0x6a6>
    e886c18c:	3ef43823          	sd	a5,1008(s0)
			if( ageNanos > ats->retransmitRetryMaxNanos ) ats->retransmitRetryMaxNanos = ageNanos;
    e886c190:	3f843703          	ld	a4,1016(s0)
    e886c194:	00f77463          	bgeu	a4,a5,e886c19c <_GeneralAudioReceiveRTP+0x6b2>
    e886c198:	3ef43c23          	sd	a5,1016(s0)
		curr->sentNanos = nowNanos;
    e886c19c:	012b3c23          	sd	s2,24(s6)
		curr->nextNanos = nowNanos + ats->rtcpRTTimeoutNanos;
    e886c1a0:	3c043783          	ld	a5,960(s0)
	pkt.length		= htons( (uint16_t)( ( size / 4 ) - 1 ) );
    e886c1a4:	4505                	li	a0,1
	pkt.v_p			= RTCPHeaderInsertVersion( 0, kRTPVersion );
    e886c1a6:	03911823          	sh	s9,48(sp)
		curr->nextNanos = nowNanos + ats->rtcpRTTimeoutNanos;
    e886c1aa:	97ca                	add	a5,a5,s2
    e886c1ac:	02fb3023          	sd	a5,32(s6)
		_RetransmitsSendRequest( inSession, curr->seq, 1 );
    e886c1b0:	008b5783          	lhu	a5,8(s6)
    e886c1b4:	ec3e                	sd	a5,24(sp)
	pkt.length		= htons( (uint16_t)( ( size / 4 ) - 1 ) );
    e886c1b6:	5691a0ef          	jal	ra,e8886f1e <lwip_htons>
    e886c1ba:	02a11923          	sh	a0,50(sp)
	pkt.seqStart	= htons( inSeqStart );
    e886c1be:	67e2                	ld	a5,24(sp)
    e886c1c0:	853e                	mv	a0,a5
    e886c1c2:	55d1a0ef          	jal	ra,e8886f1e <lwip_htons>
    e886c1c6:	02a11a23          	sh	a0,52(sp)
	pkt.seqCount	= htons( inSeqCount );
    e886c1ca:	4505                	li	a0,1
    e886c1cc:	5531a0ef          	jal	ra,e8886f1e <lwip_htons>
    e886c1d0:	02a11b23          	sh	a0,54(sp)
	if( inSession->rtcpConnected )
    e886c1d4:	780d4783          	lbu	a5,1920(s10)
    e886c1d8:	754d2503          	lw	a0,1876(s10)
    e886c1dc:	c7c1                	beqz	a5,e886c264 <_GeneralAudioReceiveRTP+0x77a>
		n = send( inSession->rtcpSock, (char *) &pkt, size, 0 );
    e886c1de:	4681                	li	a3,0
    e886c1e0:	4621                	li	a2,8
    e886c1e2:	180c                	addi	a1,sp,48
    e886c1e4:	1af190ef          	jal	ra,e8885b92 <lwip_send>
	err = map_socket_value_errno( inSession->rtcpSock, n == (ssize_t) size, n );
    e886c1e8:	01b51763          	bne	a0,s11,e886c1f6 <_GeneralAudioReceiveRTP+0x70c>
	++inSession->source.retransmitSendCount;
    e886c1ec:	3c842783          	lw	a5,968(s0)
    e886c1f0:	2785                	addiw	a5,a5,1
    e886c1f2:	3cf42423          	sw	a5,968(s0)
		if( --credits == 0 ) break;
    e886c1f6:	3c7d                	addiw	s8,s8,-1
    e886c1f8:	d80c0ae3          	beqz	s8,e886bf8c <_GeneralAudioReceiveRTP+0x4a2>
	for( curr = ats->rtcpRTBusyList; curr; curr = curr->next )
    e886c1fc:	000b3b03          	ld	s6,0(s6)
    e886c200:	b78d                	j	e886c162 <_GeneralAudioReceiveRTP+0x678>
	for( next = &ats->rtcpRTBusyList; ( ( curr = *next ) != NULL ) && ( curr->seq != pktSeq ); next = &curr->next ) {}
    e886c202:	8636                	mv	a2,a3
    e886c204:	6294                	ld	a3,0(a3)
    e886c206:	bd6d                	j	e886c0c0 <_GeneralAudioReceiveRTP+0x5d6>
				if( !outlier )
    e886c208:	f20b19e3          	bnez	s6,e886c13a <_GeneralAudioReceiveRTP+0x650>
					errNanos				= rttNanos - ats->rtcpRTAvgRTTNanos;
    e886c20c:	3b043583          	ld	a1,944(s0)
					ats->rtcpRTAvgRTTNanos	= ats->rtcpRTAvgRTTNanos + ( errNanos / 8 );
    e886c210:	4721                	li	a4,8
					errNanos				= rttNanos - ats->rtcpRTAvgRTTNanos;
    e886c212:	8f8d                	sub	a5,a5,a1
					ats->rtcpRTAvgRTTNanos	= ats->rtcpRTAvgRTTNanos + ( errNanos / 8 );
    e886c214:	02e7c733          	div	a4,a5,a4
					absErrNanos				= ( errNanos < 0 ) ? -errNanos : errNanos;
    e886c218:	43f7d513          	srai	a0,a5,0x3f
    e886c21c:	8fa9                	xor	a5,a5,a0
    e886c21e:	8f89                	sub	a5,a5,a0
					ats->rtcpRTDevRTTNanos	= ats->rtcpRTDevRTTNanos + ( ( absErrNanos - ats->rtcpRTDevRTTNanos ) / 4 );
    e886c220:	4511                	li	a0,4
					ats->rtcpRTAvgRTTNanos	= ats->rtcpRTAvgRTTNanos + ( errNanos / 8 );
    e886c222:	972e                	add	a4,a4,a1
					ats->rtcpRTDevRTTNanos	= ats->rtcpRTDevRTTNanos + ( ( absErrNanos - ats->rtcpRTDevRTTNanos ) / 4 );
    e886c224:	3b843583          	ld	a1,952(s0)
					ats->rtcpRTAvgRTTNanos	= ats->rtcpRTAvgRTTNanos + ( errNanos / 8 );
    e886c228:	3ae43823          	sd	a4,944(s0)
					ats->rtcpRTDevRTTNanos	= ats->rtcpRTDevRTTNanos + ( ( absErrNanos - ats->rtcpRTDevRTTNanos ) / 4 );
    e886c22c:	8f8d                	sub	a5,a5,a1
    e886c22e:	02a7c7b3          	div	a5,a5,a0
    e886c232:	97ae                	add	a5,a5,a1
    e886c234:	3af43c23          	sd	a5,952(s0)
					ats->rtcpRTTimeoutNanos	= ( 2 * ats->rtcpRTAvgRTTNanos ) + ( 4 * ats->rtcpRTDevRTTNanos );
    e886c238:	02f7178b          	addsl	a5,a4,a5,1
					if( ats->rtcpRTTimeoutNanos > 100000000 ) // Cap at 100 ms
    e886c23c:	05f5e737          	lui	a4,0x5f5e
					ats->rtcpRTTimeoutNanos	= ( 2 * ats->rtcpRTAvgRTTNanos ) + ( 4 * ats->rtcpRTDevRTTNanos );
    e886c240:	0786                	slli	a5,a5,0x1
					if( ats->rtcpRTTimeoutNanos > 100000000 ) // Cap at 100 ms
    e886c242:	10070713          	addi	a4,a4,256 # 5f5e100 <memcmp-0xe28a1f00>
					ats->rtcpRTTimeoutNanos	= ( 2 * ats->rtcpRTAvgRTTNanos ) + ( 4 * ats->rtcpRTDevRTTNanos );
    e886c246:	00f725b3          	slt	a1,a4,a5
    e886c24a:	42b7178b          	mvnez	a5,a4,a1
    e886c24e:	3cf43023          	sd	a5,960(s0)
    e886c252:	b5e5                	j	e886c13a <_GeneralAudioReceiveRTP+0x650>
		atr_stats_ulog( kLogLevelInfo, "### Retransmit seq %u not found\n", pktSeq );
    e886c254:	02800593          	li	a1,40
    e886c258:	ec3a                	sd	a4,24(sp)
    e886c25a:	e19e70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886c25e:	6762                	ld	a4,24(sp)
    e886c260:	c145                	beqz	a0,e886c300 <_GeneralAudioReceiveRTP+0x816>
    e886c262:	a8bd                	j	e886c2e0 <_GeneralAudioReceiveRTP+0x7f6>
		n = sendto( inSession->rtcpSock, (char *) &pkt, size, 0, &inSession->rtcpRemoteAddr.sa, inSession->rtcpRemoteLen );
    e886c264:	77cd2783          	lw	a5,1916(s10)
    e886c268:	875e                	mv	a4,s7
    e886c26a:	4681                	li	a3,0
    e886c26c:	4621                	li	a2,8
    e886c26e:	180c                	addi	a1,sp,48
    e886c270:	76e190ef          	jal	ra,e88859de <lwip_sendto>
    e886c274:	bf95                	j	e886c1e8 <_GeneralAudioReceiveRTP+0x6fe>
	if( !inIsRetransmit )								increment_wrap( inSession->source.receiveCount, 1 );
    e886c276:	25842783          	lw	a5,600(s0)
    e886c27a:	0017871b          	addiw	a4,a5,1
    e886c27e:	87ba                	mv	a5,a4
    e886c280:	c701                	beqz	a4,e886c288 <_GeneralAudioReceiveRTP+0x79e>
    e886c282:	24f42c23          	sw	a5,600(s0)
    e886c286:	b329                	j	e886bf90 <_GeneralAudioReceiveRTP+0x4a6>
    e886c288:	4785                	li	a5,1
    e886c28a:	bfe5                	j	e886c282 <_GeneralAudioReceiveRTP+0x798>
			atr_ulog( kLogLevelInfo, "Flush complete ts=%u until=%u\n", pktTS, inSession->flushUntilTS );
    e886c28c:	02800593          	li	a1,40
    e886c290:	de3e70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886c294:	d60502e3          	beqz	a0,e886bff8 <_GeneralAudioReceiveRTP+0x50e>
    e886c298:	bb1d                	j	e886bfce <_GeneralAudioReceiveRTP+0x4e4>
	for( curr = stop->prev; ( curr != stop ) && Mod32_GT( curr->rtp->header.ts, pktTS ); curr = curr->prev ) {}
    e886c29a:	679c                	ld	a5,8(a5)
    e886c29c:	b39d                	j	e886c002 <_GeneralAudioReceiveRTP+0x518>
	inNode->prev		= curr;
    e886c29e:	e49c                	sd	a5,8(s1)
	inNode->next		= curr->next;
    e886c2a0:	639c                	ld	a5,0(a5)
	err = kNoErr;
    e886c2a2:	4901                	li	s2,0
	inNode->next		= curr->next;
    e886c2a4:	e09c                	sd	a5,0(s1)
	inNode->next->prev	= inNode;
    e886c2a6:	e784                	sd	s1,8(a5)
	inNode->prev->next	= inNode;
    e886c2a8:	649c                	ld	a5,8(s1)
    e886c2aa:	e384                	sd	s1,0(a5)
	++inSession->busyNodeCount;
    e886c2ac:	6789                	lui	a5,0x2
    e886c2ae:	97a2                	add	a5,a5,s0
    e886c2b0:	8607a703          	lw	a4,-1952(a5) # 1860 <memcmp-0xe87fe7a0>
    e886c2b4:	2705                	addiw	a4,a4,1
    e886c2b6:	86e7a023          	sw	a4,-1952(a5)
	require_noerr_quiet( err, exit );
    e886c2ba:	b2b9                	j	e886bc08 <_GeneralAudioReceiveRTP+0x11e>
			err = kSkipErr;
    e886c2bc:	7979                	lui	s2,0xffffe
    e886c2be:	59b90913          	addi	s2,s2,1435 # ffffffffffffe59b <__DRAM0_INF_BASE+0xffffffff0000e59b>
    e886c2c2:	ba41                	j	e886bc52 <_GeneralAudioReceiveRTP+0x168>
	else if( inIsRetransmit )
    e886c2c4:	e80a02e3          	beqz	s4,e886c148 <_GeneralAudioReceiveRTP+0x65e>
		atr_stats_ulog( kLogLevelInfo, "### Retransmit seq %u not found\n", pktSeq );
    e886c2c8:	00069517          	auipc	a0,0x69
    e886c2cc:	05850513          	addi	a0,a0,88 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886c2d0:	411c                	lw	a5,0(a0)
    e886c2d2:	02800693          	li	a3,40
    e886c2d6:	02f6c563          	blt	a3,a5,e886c300 <_GeneralAudioReceiveRTP+0x816>
    e886c2da:	56fd                	li	a3,-1
    e886c2dc:	f6d78ce3          	beq	a5,a3,e886c254 <_GeneralAudioReceiveRTP+0x76a>
    e886c2e0:	0005e697          	auipc	a3,0x5e
    e886c2e4:	49868693          	addi	a3,a3,1176 # e88ca778 <kAirPlayReceiverServerClass+0xd80>
    e886c2e8:	02800613          	li	a2,40
    e886c2ec:	0005f597          	auipc	a1,0x5f
    e886c2f0:	15458593          	addi	a1,a1,340 # e88cb440 <__PRETTY_FUNCTION__.14123>
    e886c2f4:	00069517          	auipc	a0,0x69
    e886c2f8:	02c50513          	addi	a0,a0,44 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886c2fc:	978e80ef          	jal	ra,e8854474 <LogPrintF>
		++ats->retransmitNotFoundCount;
    e886c300:	3d442783          	lw	a5,980(s0)
    e886c304:	2785                	addiw	a5,a5,1
    e886c306:	3cf42a23          	sw	a5,980(s0)
    e886c30a:	bd3d                	j	e886c148 <_GeneralAudioReceiveRTP+0x65e>

00000000e886c30c <_GeneralAudioReceiveRTCP.constprop.13>:
static OSStatus	_GeneralAudioReceiveRTCP( AirPlayReceiverSessionRef inSession, SocketRef inSock, RTCPType inExpectedType )
    e886c30c:	a1010113          	addi	sp,sp,-1520
    e886c310:	5c913c23          	sd	s1,1496(sp)
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, &ticks, NULL, NULL );
    e886c314:	4781                	li	a5,0
static OSStatus	_GeneralAudioReceiveRTCP( AirPlayReceiverSessionRef inSession, SocketRef inSock, RTCPType inExpectedType )
    e886c316:	84aa                	mv	s1,a0
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, &ticks, NULL, NULL );
    e886c318:	e402                	sd	zero,8(sp)
static OSStatus	_GeneralAudioReceiveRTCP( AirPlayReceiverSessionRef inSession, SocketRef inSock, RTCPType inExpectedType )
    e886c31a:	852e                	mv	a0,a1
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, &ticks, NULL, NULL );
    e886c31c:	e002                	sd	zero,0(sp)
    e886c31e:	02010893          	addi	a7,sp,32
    e886c322:	4801                	li	a6,0
    e886c324:	4701                	li	a4,0
    e886c326:	0834                	addi	a3,sp,24
    e886c328:	5a400613          	li	a2,1444
    e886c32c:	102c                	addi	a1,sp,40
static OSStatus	_GeneralAudioReceiveRTCP( AirPlayReceiverSessionRef inSession, SocketRef inSock, RTCPType inExpectedType )
    e886c32e:	5e813023          	sd	s0,1504(sp)
    e886c332:	5e113423          	sd	ra,1512(sp)
	err = SocketRecvFrom( inSock, &pkt, sizeof( pkt ), &len, NULL, 0, NULL, &ticks, NULL, NULL );
    e886c336:	838ea0ef          	jal	ra,e885636e <SocketRecvFrom>
    e886c33a:	842a                	mv	s0,a0
	if( err == EWOULDBLOCK ) goto exit;
    e886c33c:	47ad                	li	a5,11
    e886c33e:	06f50d63          	beq	a0,a5,e886c3b8 <_GeneralAudioReceiveRTCP.constprop.13+0xac>
	require_noerr( err, exit );
    e886c342:	e93d                	bnez	a0,e886c3b8 <_GeneralAudioReceiveRTCP.constprop.13+0xac>
	if( len < sizeof( pkt.header ) )
    e886c344:	6662                	ld	a2,24(sp)
    e886c346:	478d                	li	a5,3
    e886c348:	02c7eb63          	bltu	a5,a2,e886c37e <_GeneralAudioReceiveRTCP.constprop.13+0x72>
		dlogassert( "Bad size: %zu < %zu", sizeof( pkt.header ), len );
    e886c34c:	6705                	lui	a4,0x1
    e886c34e:	e032                	sd	a2,0(sp)
    e886c350:	4891                	li	a7,4
    e886c352:	0005f817          	auipc	a6,0x5f
    e886c356:	d2e80813          	addi	a6,a6,-722 # e88cb080 <kAirPlayReceiverServerClass+0x1688>
    e886c35a:	0005f797          	auipc	a5,0x5f
    e886c35e:	fe678793          	addi	a5,a5,-26 # e88cb340 <__PRETTY_FUNCTION__.13927>
    e886c362:	8f670713          	addi	a4,a4,-1802 # 8f6 <memcmp-0xe87ff70a>
    e886c366:	0005e697          	auipc	a3,0x5e
    e886c36a:	e6a68693          	addi	a3,a3,-406 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886c36e:	4601                	li	a2,0
    e886c370:	4581                	li	a1,0
    e886c372:	856e20ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kSizeErr;
    e886c376:	7479                	lui	s0,0xffffe
    e886c378:	5a940413          	addi	s0,s0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e886c37c:	a835                	j	e886c3b8 <_GeneralAudioReceiveRTCP.constprop.13+0xac>
	tmp = RTCPHeaderExtractVersion( pkt.header.v_p_c );
    e886c37e:	02814883          	lbu	a7,40(sp)
	if( tmp != kRTPVersion )
    e886c382:	4789                	li	a5,2
	tmp = RTCPHeaderExtractVersion( pkt.header.v_p_c );
    e886c384:	0068d893          	srli	a7,a7,0x6
	if( tmp != kRTPVersion )
    e886c388:	04f88263          	beq	a7,a5,e886c3cc <_GeneralAudioReceiveRTCP.constprop.13+0xc0>
		dlogassert( "Bad version: %d", tmp );
    e886c38c:	6705                	lui	a4,0x1
    e886c38e:	0005f817          	auipc	a6,0x5f
    e886c392:	d0a80813          	addi	a6,a6,-758 # e88cb098 <kAirPlayReceiverServerClass+0x16a0>
    e886c396:	0005f797          	auipc	a5,0x5f
    e886c39a:	faa78793          	addi	a5,a5,-86 # e88cb340 <__PRETTY_FUNCTION__.13927>
    e886c39e:	8fe70713          	addi	a4,a4,-1794 # 8fe <memcmp-0xe87ff702>
    e886c3a2:	0005e697          	auipc	a3,0x5e
    e886c3a6:	e2e68693          	addi	a3,a3,-466 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886c3aa:	4601                	li	a2,0
    e886c3ac:	4581                	li	a1,0
		err = kVersionErr;
    e886c3ae:	7479                	lui	s0,0xffffe
		dlogassert( "Bad version: %d", tmp );
    e886c3b0:	818e20ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kVersionErr;
    e886c3b4:	5c540413          	addi	s0,s0,1477 # ffffffffffffe5c5 <__DRAM0_INF_BASE+0xffffffff0000e5c5>
}
    e886c3b8:	8522                	mv	a0,s0
    e886c3ba:	5e813083          	ld	ra,1512(sp)
    e886c3be:	5e013403          	ld	s0,1504(sp)
    e886c3c2:	5d813483          	ld	s1,1496(sp)
    e886c3c6:	5f010113          	addi	sp,sp,1520
    e886c3ca:	8082                	ret
	switch( pkt.header.pt )
    e886c3cc:	02914883          	lbu	a7,41(sp)
    e886c3d0:	0d600793          	li	a5,214
    e886c3d4:	08f89463          	bne	a7,a5,e886c45c <_GeneralAudioReceiveRTCP.constprop.13+0x150>
	if( inSize == ( offsetof( RTCPRetransmitResponsePacket, payload ) + sizeof_field( RTCPRetransmitResponsePacket, payload.fail ) ) )
    e886c3d8:	47a1                	li	a5,8
    e886c3da:	02f61d63          	bne	a2,a5,e886c414 <_GeneralAudioReceiveRTCP.constprop.13+0x108>
		inPkt->payload.fail.seq = ntohs( inPkt->payload.fail.seq );
    e886c3de:	02c15503          	lhu	a0,44(sp)
    e886c3e2:	33d1a0ef          	jal	ra,e8886f1e <lwip_htons>
    e886c3e6:	02a11623          	sh	a0,44(sp)
		_SessionLock( inSession );
    e886c3ea:	74c8                	ld	a0,168(s1)
    e886c3ec:	8d8fe0ef          	jal	ra,e886a4c4 <_SessionLock.isra.3>
		_RetransmitsAbortOne( inSession, inPkt->payload.fail.seq, "FUTILE" );
    e886c3f0:	02c15583          	lhu	a1,44(sp)
    e886c3f4:	0005e617          	auipc	a2,0x5e
    e886c3f8:	17460613          	addi	a2,a2,372 # e88ca568 <kAirPlayReceiverServerClass+0xb70>
    e886c3fc:	8526                	mv	a0,s1
    e886c3fe:	facfb0ef          	jal	ra,e8867baa <_RetransmitsAbortOne>
		_SessionUnlock( inSession );
    e886c402:	74c8                	ld	a0,168(s1)
    e886c404:	8cefe0ef          	jal	ra,e886a4d2 <_SessionUnlock.isra.4>
		++inSession->source.retransmitFutileCount;
    e886c408:	3d04a783          	lw	a5,976(s1)
    e886c40c:	2785                	addiw	a5,a5,1
    e886c40e:	3cf4a823          	sw	a5,976(s1)
		goto exit;
    e886c412:	b75d                	j	e886c3b8 <_GeneralAudioReceiveRTCP.constprop.13+0xac>
	if( inSize < ( offsetof( RTCPRetransmitResponsePacket, payload ) + offsetof( RTPPacket, payload ) ) )
    e886c414:	47bd                	li	a5,15
    e886c416:	02c7e763          	bltu	a5,a2,e886c444 <_GeneralAudioReceiveRTCP.constprop.13+0x138>
		dlogassert( "Retransmit packet too small (%zu bytes)", inSize );
    e886c41a:	6705                	lui	a4,0x1
    e886c41c:	88b2                	mv	a7,a2
    e886c41e:	0005e817          	auipc	a6,0x5e
    e886c422:	15280813          	addi	a6,a6,338 # e88ca570 <kAirPlayReceiverServerClass+0xb78>
    e886c426:	0005f797          	auipc	a5,0x5f
    e886c42a:	fe278793          	addi	a5,a5,-30 # e88cb408 <__PRETTY_FUNCTION__.14087>
    e886c42e:	c1270713          	addi	a4,a4,-1006 # c12 <memcmp-0xe87ff3ee>
    e886c432:	0005e697          	auipc	a3,0x5e
    e886c436:	d9e68693          	addi	a3,a3,-610 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886c43a:	4601                	li	a2,0
    e886c43c:	4581                	li	a1,0
    e886c43e:	f8be10ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e886c442:	bf15                	j	e886c376 <_GeneralAudioReceiveRTCP.constprop.13+0x6a>
	err = _GeneralAudioReceiveRTP( inSession, &inPkt->payload.rtp, 
    e886c444:	1671                	addi	a2,a2,-4
    e886c446:	106c                	addi	a1,sp,44
    e886c448:	8526                	mv	a0,s1
    e886c44a:	ea0ff0ef          	jal	ra,e886baea <_GeneralAudioReceiveRTP>
    e886c44e:	842a                	mv	s0,a0
	++inSession->source.retransmitReceiveCount;
    e886c450:	3cc4a783          	lw	a5,972(s1)
    e886c454:	2785                	addiw	a5,a5,1
    e886c456:	3cf4a623          	sw	a5,972(s1)
    e886c45a:	bfb9                	j	e886c3b8 <_GeneralAudioReceiveRTCP.constprop.13+0xac>
			dlogassert( "Unsupported packet type: %d (%zu bytes)", pkt.header.pt, len );
    e886c45c:	6705                	lui	a4,0x1
    e886c45e:	e032                	sd	a2,0(sp)
    e886c460:	0005e817          	auipc	a6,0x5e
    e886c464:	13880813          	addi	a6,a6,312 # e88ca598 <kAirPlayReceiverServerClass+0xba0>
    e886c468:	0005f797          	auipc	a5,0x5f
    e886c46c:	ed878793          	addi	a5,a5,-296 # e88cb340 <__PRETTY_FUNCTION__.13927>
    e886c470:	91270713          	addi	a4,a4,-1774 # 912 <memcmp-0xe87ff6ee>
    e886c474:	0005e697          	auipc	a3,0x5e
    e886c478:	d5c68693          	addi	a3,a3,-676 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886c47c:	4601                	li	a2,0
    e886c47e:	4581                	li	a1,0
			err = kUnsupportedErr;
    e886c480:	7479                	lui	s0,0xffffe
			dlogassert( "Unsupported packet type: %d (%zu bytes)", pkt.header.pt, len );
    e886c482:	f47e10ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			err = kUnsupportedErr;
    e886c486:	5b140413          	addi	s0,s0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e886c48a:	b73d                	j	e886c3b8 <_GeneralAudioReceiveRTCP.constprop.13+0xac>

00000000e886c48c <_GeneralAudioThread>:
	SocketRef const						rtcpSock	= session->rtcpSock;
    e886c48c:	6785                	lui	a5,0x1
    e886c48e:	97aa                	add	a5,a5,a0
{
    e886c490:	7131                	addi	sp,sp,-192
    e886c492:	fd06                	sd	ra,184(sp)
    e886c494:	f14a                	sd	s2,160(sp)
    e886c496:	f0ea                	sd	s10,96(sp)
    e886c498:	f922                	sd	s0,176(sp)
    e886c49a:	f526                	sd	s1,168(sp)
    e886c49c:	ed4e                	sd	s3,152(sp)
    e886c49e:	e952                	sd	s4,144(sp)
    e886c4a0:	e556                	sd	s5,136(sp)
    e886c4a2:	e15a                	sd	s6,128(sp)
    e886c4a4:	fcde                	sd	s7,120(sp)
    e886c4a6:	f8e2                	sd	s8,112(sp)
    e886c4a8:	f4e6                	sd	s9,104(sp)
    e886c4aa:	ecee                	sd	s11,88(sp)
    e886c4ac:	892a                	mv	s2,a0
	SocketRef const						rtcpSock	= session->rtcpSock;
    e886c4ae:	7547a983          	lw	s3,1876(a5) # 1754 <memcmp-0xe87fe8ac>
	SocketRef const						rtpSock		= ctx->dataSock;
    e886c4b2:	47c52403          	lw	s0,1148(a0)
	SocketRef const						cmdSock		= ctx->cmdSock;
    e886c4b6:	47852483          	lw	s1,1144(a0)
	printf("GeneralAudioThread start run %d\n",pthread_self());
    e886c4ba:	5400f0ef          	jal	ra,e887b9fa <pthread_self>
    e886c4be:	0005059b          	sext.w	a1,a0
    e886c4c2:	0005e517          	auipc	a0,0x5e
    e886c4c6:	3f650513          	addi	a0,a0,1014 # e88ca8b8 <kAirPlayReceiverServerClass+0xec0>
    e886c4ca:	5fd0f0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	FD_ZERO( &readSet );
    e886c4ce:	04810d13          	addi	s10,sp,72
	ctx->threadRun = true;
    e886c4d2:	4785                	li	a5,1
    e886c4d4:	48f90823          	sb	a5,1168(s2)
	pthread_setname_np_compat( "AirPlayAudioReceiver" );
    e886c4d8:	5220f0ef          	jal	ra,e887b9fa <pthread_self>
    e886c4dc:	2501                	sext.w	a0,a0
    e886c4de:	0005e597          	auipc	a1,0x5e
    e886c4e2:	7ca58593          	addi	a1,a1,1994 # e88caca8 <kAirPlayReceiverServerClass+0x12b0>
    e886c4e6:	0ef0f0ef          	jal	ra,e887bdd4 <pthread_setname_np>
	SetCurrentThreadPriority( kAirPlayThreadPriority_AudioReceiver );
    e886c4ea:	03d00513          	li	a0,61
    e886c4ee:	c91f40ef          	jal	ra,e886117e <SetCurrentThreadPriority>
	FD_ZERO( &readSet );
    e886c4f2:	461d                	li	a2,7
    e886c4f4:	4581                	li	a1,0
    e886c4f6:	856a                	mv	a0,s10
    e886c4f8:	69d0f0ef          	jal	ra,e887c394 <eLIBs_memset>
	if( (int) rtcpSock > maxFd ) maxFd = rtcpSock;
    e886c4fc:	013427b3          	slt	a5,s0,s3
    e886c500:	874e                	mv	a4,s3
    e886c502:	40f4170b          	mveqz	a4,s0,a5
    e886c506:	87ba                	mv	a5,a4
    e886c508:	02079713          	slli	a4,a5,0x20
    e886c50c:	00075363          	bgez	a4,e886c512 <_GeneralAudioThread+0x86>
    e886c510:	57fd                	li	a5,-1
	if( (int) cmdSock  > maxFd ) maxFd = cmdSock;
    e886c512:	0007871b          	sext.w	a4,a5
    e886c516:	00e4a733          	slt	a4,s1,a4
    e886c51a:	40e4978b          	mveqz	a5,s1,a4
	maxFd += 1;
    e886c51e:	2785                	addiw	a5,a5,1
    e886c520:	f83e                	sd	a5,48(sp)
		FD_SET( rtpSock,  &readSet );
    e886c522:	00747a93          	andi	s5,s0,7
    e886c526:	4785                	li	a5,1
    e886c528:	01579abb          	sllw	s5,a5,s5
    e886c52c:	1c0aa70b          	ext	a4,s5,7,0
		FD_SET( rtcpSock, &readSet );
    e886c530:	0079fb13          	andi	s6,s3,7
    e886c534:	01679b3b          	sllw	s6,a5,s6
		FD_SET( rtpSock,  &readSet );
    e886c538:	ec3a                	sd	a4,24(sp)
		FD_SET( rtcpSock, &readSet );
    e886c53a:	1c0b270b          	ext	a4,s6,7,0
    e886c53e:	f03a                	sd	a4,32(sp)
		FD_SET( cmdSock,  &readSet );
    e886c540:	0074f713          	andi	a4,s1,7
    e886c544:	00e797bb          	sllw	a5,a5,a4
    e886c548:	e83e                	sd	a5,16(sp)
    e886c54a:	1c07a78b          	ext	a5,a5,7,0
    e886c54e:	f43e                	sd	a5,40(sp)
		if( err ) { dlogassert( "select() error: %#m", err ); usleep( 100000 ); continue; }
    e886c550:	6785                	lui	a5,0x1
    e886c552:	8d778793          	addi	a5,a5,-1833 # 8d7 <memcmp-0xe87ff729>
		FD_SET( rtpSock,  &readSet );
    e886c556:	40345c13          	srai	s8,s0,0x3
		FD_SET( rtcpSock, &readSet );
    e886c55a:	4039dc93          	srai	s9,s3,0x3
		FD_SET( cmdSock,  &readSet );
    e886c55e:	4034db93          	srai	s7,s1,0x3
		FD_SET( rtpSock,  &readSet );
    e886c562:	03100a13          	li	s4,49
		FD_SET( rtcpSock, &readSet );
    e886c566:	e44e                	sd	s3,8(sp)
		if( err ) { dlogassert( "select() error: %#m", err ); usleep( 100000 ); continue; }
    e886c568:	fc3e                	sd	a5,56(sp)
		err = select_errno( n );
    e886c56a:	7df9                	lui	s11,0xffffe
		FD_SET( rtpSock,  &readSet );
    e886c56c:	008a6863          	bltu	s4,s0,e886c57c <_GeneralAudioThread+0xf0>
    e886c570:	818d478b          	lrbu	a5,s10,s8,0
    e886c574:	6762                	ld	a4,24(sp)
    e886c576:	8fd9                	or	a5,a5,a4
    e886c578:	018d578b          	srb	a5,s10,s8,0
		FD_SET( rtcpSock, &readSet );
    e886c57c:	67a2                	ld	a5,8(sp)
    e886c57e:	00fa6863          	bltu	s4,a5,e886c58e <_GeneralAudioThread+0x102>
    e886c582:	819d478b          	lrbu	a5,s10,s9,0
    e886c586:	7702                	ld	a4,32(sp)
    e886c588:	8fd9                	or	a5,a5,a4
    e886c58a:	019d578b          	srb	a5,s10,s9,0
		FD_SET( cmdSock,  &readSet );
    e886c58e:	009a6863          	bltu	s4,s1,e886c59e <_GeneralAudioThread+0x112>
    e886c592:	817d478b          	lrbu	a5,s10,s7,0
    e886c596:	7722                	ld	a4,40(sp)
    e886c598:	8fd9                	or	a5,a5,a4
    e886c59a:	017d578b          	srb	a5,s10,s7,0
		n = select( maxFd, &readSet, NULL, NULL, NULL );
    e886c59e:	7542                	ld	a0,48(sp)
    e886c5a0:	4701                	li	a4,0
    e886c5a2:	4681                	li	a3,0
    e886c5a4:	4601                	li	a2,0
    e886c5a6:	85ea                	mv	a1,s10
    e886c5a8:	784190ef          	jal	ra,e8885d2c <lwip_select>
		err = select_errno( n );
    e886c5ac:	04a04b63          	bgtz	a0,e886c602 <_GeneralAudioThread+0x176>
    e886c5b0:	c131                	beqz	a0,e886c5f4 <_GeneralAudioThread+0x168>
    e886c5b2:	00078797          	auipc	a5,0x78
    e886c5b6:	07678793          	addi	a5,a5,118 # e88e4628 <lwip_errno>
    e886c5ba:	0007a883          	lw	a7,0(a5)
    e886c5be:	02088f63          	beqz	a7,e886c5fc <_GeneralAudioThread+0x170>
		if( err == EINTR ) continue;
    e886c5c2:	4791                	li	a5,4
    e886c5c4:	faf884e3          	beq	a7,a5,e886c56c <_GeneralAudioThread+0xe0>
		if( err ) { dlogassert( "select() error: %#m", err ); usleep( 100000 ); continue; }
    e886c5c8:	7762                	ld	a4,56(sp)
    e886c5ca:	00052817          	auipc	a6,0x52
    e886c5ce:	63e80813          	addi	a6,a6,1598 # e88bec08 <__PRETTY_FUNCTION__.8745+0x20>
    e886c5d2:	0005f797          	auipc	a5,0x5f
    e886c5d6:	d5678793          	addi	a5,a5,-682 # e88cb328 <__PRETTY_FUNCTION__.13912>
    e886c5da:	0005e697          	auipc	a3,0x5e
    e886c5de:	bf668693          	addi	a3,a3,-1034 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886c5e2:	4601                	li	a2,0
    e886c5e4:	4581                	li	a1,0
    e886c5e6:	4501                	li	a0,0
    e886c5e8:	de1e10ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e886c5ec:	4529                	li	a0,10
    e886c5ee:	2290f0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e886c5f2:	bfad                	j	e886c56c <_GeneralAudioThread+0xe0>
		err = select_errno( n );
    e886c5f4:	77f9                	lui	a5,0xffffe
    e886c5f6:	5be78893          	addi	a7,a5,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e886c5fa:	b7f9                	j	e886c5c8 <_GeneralAudioThread+0x13c>
    e886c5fc:	5d4d8893          	addi	a7,s11,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e886c600:	b7e1                	j	e886c5c8 <_GeneralAudioThread+0x13c>
		if( FD_ISSET( rtpSock,  &readSet ) ) _GeneralAudioReceiveRTP( session, NULL, 0 );
    e886c602:	008a6c63          	bltu	s4,s0,e886c61a <_GeneralAudioThread+0x18e>
    e886c606:	818d478b          	lrbu	a5,s10,s8,0
    e886c60a:	00faf7b3          	and	a5,s5,a5
    e886c60e:	c791                	beqz	a5,e886c61a <_GeneralAudioThread+0x18e>
    e886c610:	4601                	li	a2,0
    e886c612:	4581                	li	a1,0
    e886c614:	854a                	mv	a0,s2
    e886c616:	cd4ff0ef          	jal	ra,e886baea <_GeneralAudioReceiveRTP>
		if( FD_ISSET( rtcpSock, &readSet ) ) _GeneralAudioReceiveRTCP( session, rtcpSock, kRTCPTypeAny );
    e886c61a:	67a2                	ld	a5,8(sp)
    e886c61c:	00fa6b63          	bltu	s4,a5,e886c632 <_GeneralAudioThread+0x1a6>
    e886c620:	819d478b          	lrbu	a5,s10,s9,0
    e886c624:	00fb77b3          	and	a5,s6,a5
    e886c628:	c789                	beqz	a5,e886c632 <_GeneralAudioThread+0x1a6>
    e886c62a:	85ce                	mv	a1,s3
    e886c62c:	854a                	mv	a0,s2
    e886c62e:	cdfff0ef          	jal	ra,e886c30c <_GeneralAudioReceiveRTCP.constprop.13>
		if( FD_ISSET( cmdSock,  &readSet ) ) break; // The only event is quit so break if anything is pending.
    e886c632:	f29a6de3          	bltu	s4,s1,e886c56c <_GeneralAudioThread+0xe0>
    e886c636:	817d478b          	lrbu	a5,s10,s7,0
    e886c63a:	6742                	ld	a4,16(sp)
    e886c63c:	8ff9                	and	a5,a5,a4
    e886c63e:	d79d                	beqz	a5,e886c56c <_GeneralAudioThread+0xe0>
	atr_ulog( kLogLevelTrace, "General audio thread exit\n" );
    e886c640:	00069517          	auipc	a0,0x69
    e886c644:	c2050513          	addi	a0,a0,-992 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886c648:	411c                	lw	a5,0(a0)
    e886c64a:	4779                	li	a4,30
    e886c64c:	02f74463          	blt	a4,a5,e886c674 <_GeneralAudioThread+0x1e8>
    e886c650:	577d                	li	a4,-1
    e886c652:	04e78663          	beq	a5,a4,e886c69e <_GeneralAudioThread+0x212>
    e886c656:	0005e697          	auipc	a3,0x5e
    e886c65a:	28a68693          	addi	a3,a3,650 # e88ca8e0 <kAirPlayReceiverServerClass+0xee8>
    e886c65e:	4679                	li	a2,30
    e886c660:	0005f597          	auipc	a1,0x5f
    e886c664:	cc858593          	addi	a1,a1,-824 # e88cb328 <__PRETTY_FUNCTION__.13912>
    e886c668:	00069517          	auipc	a0,0x69
    e886c66c:	bf850513          	addi	a0,a0,-1032 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886c670:	e05e70ef          	jal	ra,e8854474 <LogPrintF>
	ctx->threadRun = false;
    e886c674:	48090823          	sb	zero,1168(s2)
	pthread_exit(0);
    e886c678:	4501                	li	a0,0
    e886c67a:	3900f0ef          	jal	ra,e887ba0a <pthread_exit>
}
    e886c67e:	744a                	ld	s0,176(sp)
    e886c680:	70ea                	ld	ra,184(sp)
    e886c682:	74aa                	ld	s1,168(sp)
    e886c684:	790a                	ld	s2,160(sp)
    e886c686:	69ea                	ld	s3,152(sp)
    e886c688:	6a4a                	ld	s4,144(sp)
    e886c68a:	6aaa                	ld	s5,136(sp)
    e886c68c:	6b0a                	ld	s6,128(sp)
    e886c68e:	7be6                	ld	s7,120(sp)
    e886c690:	7c46                	ld	s8,112(sp)
    e886c692:	7ca6                	ld	s9,104(sp)
    e886c694:	7d06                	ld	s10,96(sp)
    e886c696:	6de6                	ld	s11,88(sp)
    e886c698:	4501                	li	a0,0
    e886c69a:	6129                	addi	sp,sp,192
    e886c69c:	8082                	ret
	atr_ulog( kLogLevelTrace, "General audio thread exit\n" );
    e886c69e:	45f9                	li	a1,30
    e886c6a0:	9d3e70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886c6a4:	d961                	beqz	a0,e886c674 <_GeneralAudioThread+0x1e8>
    e886c6a6:	bf45                	j	e886c656 <_GeneralAudioThread+0x1ca>

00000000e886c6a8 <_Finalize>:
{
    e886c6a8:	1101                	addi	sp,sp,-32
    e886c6aa:	e422                	sd	s0,8(sp)
    e886c6ac:	842a                	mv	s0,a0
	atr_ulog( kLogLevelTrace, "Finalize session %llu\n", session->clientSessionID );
    e886c6ae:	00069517          	auipc	a0,0x69
    e886c6b2:	bb250513          	addi	a0,a0,-1102 # e88d5260 <gLogCategory_AirPlayReceiverCore>
{
    e886c6b6:	ec06                	sd	ra,24(sp)
    e886c6b8:	e826                	sd	s1,16(sp)
	atr_ulog( kLogLevelTrace, "Finalize session %llu\n", session->clientSessionID );
    e886c6ba:	411c                	lw	a5,0(a0)
    e886c6bc:	4779                	li	a4,30
    e886c6be:	02f74663          	blt	a4,a5,e886c6ea <_Finalize+0x42>
    e886c6c2:	577d                	li	a4,-1
    e886c6c4:	0ee78963          	beq	a5,a4,e886c7b6 <_Finalize+0x10e>
    e886c6c8:	10043703          	ld	a4,256(s0)
    e886c6cc:	0005e697          	auipc	a3,0x5e
    e886c6d0:	e8468693          	addi	a3,a3,-380 # e88ca550 <kAirPlayReceiverServerClass+0xb58>
    e886c6d4:	4679                	li	a2,30
    e886c6d6:	0005f597          	auipc	a1,0x5f
    e886c6da:	bba58593          	addi	a1,a1,-1094 # e88cb290 <__PRETTY_FUNCTION__.13767>
    e886c6de:	00069517          	auipc	a0,0x69
    e886c6e2:	b8250513          	addi	a0,a0,-1150 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886c6e6:	d8fe70ef          	jal	ra,e8854474 <LogPrintF>
	if( session->delegate.finalize_f ) session->delegate.finalize_f( session, session->delegate.context );
    e886c6ea:	7c1c                	ld	a5,56(s0)
    e886c6ec:	c781                	beqz	a5,e886c6f4 <_Finalize+0x4c>
    e886c6ee:	740c                	ld	a1,40(s0)
    e886c6f0:	8522                	mv	a0,s0
    e886c6f2:	9782                	jalr	a5
	AirPlayReceiverSessionPlatformFinalize( session );
    e886c6f4:	8522                	mv	a0,s0
    e886c6f6:	c62f70ef          	jal	ra,e8863b58 <AirPlayReceiverSessionPlatformFinalize>
	dispatch_source_forget( &session->periodicTimer );
    e886c6fa:	7848                	ld	a0,176(s0)
    e886c6fc:	c901                	beqz	a0,e886c70c <_Finalize+0x64>
    e886c6fe:	d48e30ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e886c702:	7848                	ld	a0,176(s0)
    e886c704:	b4ce20ef          	jal	ra,e884ea50 <dispatch_release>
    e886c708:	0a043823          	sd	zero,176(s0)
	_ScreenTearDown( session );
    e886c70c:	8522                	mv	a0,s0
    e886c70e:	b16fb0ef          	jal	ra,e8867a24 <_ScreenTearDown>
	_TearDownStream( session, &session->altAudioCtx, true );
    e886c712:	6485                	lui	s1,0x1
    e886c714:	bd048593          	addi	a1,s1,-1072 # bd0 <memcmp-0xe87ff430>
    e886c718:	95a2                	add	a1,a1,s0
    e886c71a:	8522                	mv	a0,s0
    e886c71c:	dc5fd0ef          	jal	ra,e886a4e0 <_TearDownStream.isra.5>
	AirTunesClock_Finalize( session->airTunesClock );
    e886c720:	94a2                	add	s1,s1,s0
	_TearDownStream( session, &session->mainAudioCtx, true );
    e886c722:	45840593          	addi	a1,s0,1112
    e886c726:	8522                	mv	a0,s0
    e886c728:	db9fd0ef          	jal	ra,e886a4e0 <_TearDownStream.isra.5>
	dispatch_sync_f( inSession->eventQueue, inSession, _ForgetReplyTimer );
    e886c72c:	42043503          	ld	a0,1056(s0)
    e886c730:	ffffb617          	auipc	a2,0xffffb
    e886c734:	2ce60613          	addi	a2,a2,718 # e88679fe <_ForgetReplyTimer>
    e886c738:	85a2                	mv	a1,s0
    e886c73a:	de4e20ef          	jal	ra,e884ed1e <dispatch_sync_f>
	_ControlTearDown( session );
    e886c73e:	8522                	mv	a0,s0
    e886c740:	f7bfd0ef          	jal	ra,e886a6ba <_ControlTearDown>
	_TimingFinalize( session );
    e886c744:	8522                	mv	a0,s0
    e886c746:	cbafd0ef          	jal	ra,e8869c00 <_TimingFinalize>
	_IdleStateKeepAliveFinalize( session );
    e886c74a:	8522                	mv	a0,s0
    e886c74c:	ce1fd0ef          	jal	ra,e886a42c <_IdleStateKeepAliveFinalize>
	AirTunesClock_Finalize( session->airTunesClock );
    e886c750:	7904b503          	ld	a0,1936(s1)
    e886c754:	251040ef          	jal	ra,e88711a4 <AirTunesClock_Finalize>
	session->airTunesClock = NULL;
    e886c758:	7804b823          	sd	zero,1936(s1)
	AES_CBCFrame_Final( &session->decryptorStorage );
    e886c75c:	12440513          	addi	a0,s0,292
    e886c760:	923d70ef          	jal	ra,e8844082 <AES_CBCFrame_Final>
	pthread_mutex_forget( &session->mutexPtr );
    e886c764:	7448                	ld	a0,168(s0)
    e886c766:	c509                	beqz	a0,e886c770 <_Finalize+0xc8>
    e886c768:	36c0f0ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
    e886c76c:	0a043423          	sd	zero,168(s0)
	AirPlayReceiverSessionScreen_Forget( &session->screenSession );
    e886c770:	6489                	lui	s1,0x2
    e886c772:	94a2                	add	s1,s1,s0
    e886c774:	9404b503          	ld	a0,-1728(s1) # 1940 <memcmp-0xe87fe6c0>
    e886c778:	c509                	beqz	a0,e886c782 <_Finalize+0xda>
    e886c77a:	3ad020ef          	jal	ra,e886f326 <AirPlayReceiverSessionScreen_Delete>
    e886c77e:	9404b023          	sd	zero,-1728(s1)
	ForgetCF( &session->server );
    e886c782:	6808                	ld	a0,16(s0)
	session->connection = NULL;
    e886c784:	00043c23          	sd	zero,24(s0)
	ForgetCF( &session->server );
    e886c788:	c509                	beqz	a0,e886c792 <_Finalize+0xea>
    e886c78a:	9c1da0ef          	jal	ra,e884714a <CFRelease>
    e886c78e:	00043823          	sd	zero,16(s0)
	dispatch_forget( &session->queue );
    e886c792:	6408                	ld	a0,8(s0)
    e886c794:	c509                	beqz	a0,e886c79e <_Finalize+0xf6>
    e886c796:	abae20ef          	jal	ra,e884ea50 <dispatch_release>
    e886c79a:	00043423          	sd	zero,8(s0)
	dispatch_forget( &session->eventQueue );
    e886c79e:	42043503          	ld	a0,1056(s0)
    e886c7a2:	c509                	beqz	a0,e886c7ac <_Finalize+0x104>
    e886c7a4:	aace20ef          	jal	ra,e884ea50 <dispatch_release>
    e886c7a8:	42043023          	sd	zero,1056(s0)
}
    e886c7ac:	60e2                	ld	ra,24(sp)
    e886c7ae:	6422                	ld	s0,8(sp)
    e886c7b0:	64c2                	ld	s1,16(sp)
    e886c7b2:	6105                	addi	sp,sp,32
    e886c7b4:	8082                	ret
	atr_ulog( kLogLevelTrace, "Finalize session %llu\n", session->clientSessionID );
    e886c7b6:	45f9                	li	a1,30
    e886c7b8:	8bbe70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886c7bc:	f20507e3          	beqz	a0,e886c6ea <_Finalize+0x42>
    e886c7c0:	b721                	j	e886c6c8 <_Finalize+0x20>

00000000e886c7c2 <AirPlayReceiverSessionGetTypeID>:
	dispatch_once_f( &gAirPlayReceiverSessionInitOnce, NULL, _GetTypeID );
    e886c7c2:	00077517          	auipc	a0,0x77
    e886c7c6:	60650513          	addi	a0,a0,1542 # e88e3dc8 <gAirPlayReceiverSessionInitOnce>
    e886c7ca:	4118                	lw	a4,0(a0)
    e886c7cc:	4789                	li	a5,2
    e886c7ce:	02f70363          	beq	a4,a5,e886c7f4 <AirPlayReceiverSessionGetTypeID+0x32>
{
    e886c7d2:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gAirPlayReceiverSessionInitOnce, NULL, _GetTypeID );
    e886c7d4:	ffffb617          	auipc	a2,0xffffb
    e886c7d8:	19460613          	addi	a2,a2,404 # e8867968 <_GetTypeID>
    e886c7dc:	4581                	li	a1,0
{
    e886c7de:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gAirPlayReceiverSessionInitOnce, NULL, _GetTypeID );
    e886c7e0:	e92e20ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e886c7e4:	60a2                	ld	ra,8(sp)
    e886c7e6:	00077797          	auipc	a5,0x77
    e886c7ea:	5e678793          	addi	a5,a5,1510 # e88e3dcc <gAirPlayReceiverSessionTypeID>
    e886c7ee:	4388                	lw	a0,0(a5)
    e886c7f0:	0141                	addi	sp,sp,16
    e886c7f2:	8082                	ret
    e886c7f4:	00077797          	auipc	a5,0x77
    e886c7f8:	5d878793          	addi	a5,a5,1496 # e88e3dcc <gAirPlayReceiverSessionTypeID>
    e886c7fc:	4388                	lw	a0,0(a5)
    e886c7fe:	8082                	ret

00000000e886c800 <AirPlayReceiverSessionCreate>:
{
    e886c800:	715d                	addi	sp,sp,-80
    e886c802:	e486                	sd	ra,72(sp)
    e886c804:	fc26                	sd	s1,56(sp)
    e886c806:	f44e                	sd	s3,40(sp)
    e886c808:	f052                	sd	s4,32(sp)
    e886c80a:	ec56                	sd	s5,24(sp)
    e886c80c:	e0a2                	sd	s0,64(sp)
    e886c80e:	f84a                	sd	s2,48(sp)
    e886c810:	e85a                	sd	s6,16(sp)
    e886c812:	e45e                	sd	s7,8(sp)
    e886c814:	84ae                	mv	s1,a1
	AirPlayReceiverServerRef const		server = inParams->server;
    e886c816:	0005b903          	ld	s2,0(a1)
{
    e886c81a:	8a2a                	mv	s4,a0
	ticks = UpTicks();
    e886c81c:	9a9f40ef          	jal	ra,e88611c4 <UpTicks>
    e886c820:	8aaa                	mv	s5,a0
	me = (AirPlayReceiverSessionRef) _CFRuntimeCreateInstance( NULL, AirPlayReceiverSessionGetTypeID(), (CFIndex) extraLen, NULL );
    e886c822:	fa1ff0ef          	jal	ra,e886c7c2 <AirPlayReceiverSessionGetTypeID>
    e886c826:	6989                	lui	s3,0x2
    e886c828:	0005059b          	sext.w	a1,a0
    e886c82c:	4681                	li	a3,0
    e886c82e:	95898613          	addi	a2,s3,-1704 # 1958 <memcmp-0xe87fe6a8>
    e886c832:	4501                	li	a0,0
    e886c834:	f41da0ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( me, exit, err = kNoMemoryErr );
    e886c838:	1c050663          	beqz	a0,e886ca04 <AirPlayReceiverSessionCreate+0x204>
    e886c83c:	842a                	mv	s0,a0
	memset( ( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );
    e886c83e:	95898613          	addi	a2,s3,-1704
    e886c842:	4581                	li	a1,0
    e886c844:	0521                	addi	a0,a0,8
    e886c846:	34f0f0ef          	jal	ra,e887c394 <eLIBs_memset>
	me->screenSock				= kInvalidSocketRef;
    e886c84a:	01340b33          	add	s6,s0,s3
	me->queue = AirPlayReceiverServerGetDispatchQueue( server );
    e886c84e:	854a                	mv	a0,s2
    e886c850:	df1f90ef          	jal	ra,e8866640 <AirPlayReceiverServerGetDispatchQueue>
    e886c854:	e408                	sd	a0,8(s0)
	dispatch_retain( me->queue );
    e886c856:	9eee20ef          	jal	ra,e884ea44 <dispatch_retain>
	CFRetain( server );
    e886c85a:	854a                	mv	a0,s2
    e886c85c:	8ebda0ef          	jal	ra,e8847146 <CFRetain>
	me->server = server;
    e886c860:	01243823          	sd	s2,16(s0)
	me->connection = inParams->connection;
    e886c864:	60bc                	ld	a5,64(s1)
	me->peerAddr				= *inParams->peerAddr;
    e886c866:	4671                	li	a2,28
    e886c868:	0bc40513          	addi	a0,s0,188
	me->connection = inParams->connection;
    e886c86c:	ec1c                	sd	a5,24(s0)
	me->transportType			= inParams->transportType;
    e886c86e:	449c                	lw	a5,8(s1)
    e886c870:	0af42c23          	sw	a5,184(s0)
	me->peerAddr				= *inParams->peerAddr;
    e886c874:	688c                	ld	a1,16(s1)
    e886c876:	ff2930ef          	jal	ra,e8800068 <memcpy>
	UUIDGet( me->sessionUUID );
    e886c87a:	0d840513          	addi	a0,s0,216
    e886c87e:	a2af50ef          	jal	ra,e8861aa8 <UUIDGet>
	me->startStatus				= kNotInitializedErr;
    e886c882:	77f9                	lui	a5,0xffffe
    e886c884:	5c27879b          	addiw	a5,a5,1474
    e886c888:	0ef42423          	sw	a5,232(s0)
	me->clientDeviceID			= inParams->clientDeviceID;
    e886c88c:	6c9c                	ld	a5,24(s1)
	memcpy( me->clientIfMACAddr, inParams->clientIfMACAddr, sizeof( inParams->clientIfMACAddr ) );
    e886c88e:	4619                	li	a2,6
    e886c890:	02048593          	addi	a1,s1,32
	me->clientDeviceID			= inParams->clientDeviceID;
    e886c894:	f87c                	sd	a5,240(s0)
	me->clientSessionID			= inParams->clientSessionID;
    e886c896:	749c                	ld	a5,40(s1)
	memcpy( me->clientIfMACAddr, inParams->clientIfMACAddr, sizeof( inParams->clientIfMACAddr ) );
    e886c898:	0f840513          	addi	a0,s0,248
	me->clientSessionID			= inParams->clientSessionID;
    e886c89c:	10f43023          	sd	a5,256(s0)
	me->clientVersion			= inParams->clientVersion;
    e886c8a0:	589c                	lw	a5,48(s1)
    e886c8a2:	10f42423          	sw	a5,264(s0)
	memcpy( me->clientIfMACAddr, inParams->clientIfMACAddr, sizeof( inParams->clientIfMACAddr ) );
    e886c8a6:	2fb0f0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	me->sessionTicks			= ticks;
    e886c8aa:	11543823          	sd	s5,272(s0)
	me->sessionIdle				= true;
    e886c8ae:	4785                	li	a5,1
    e886c8b0:	44f41423          	sh	a5,1096(s0)
	me->useEvents				= inParams->useEvents;
    e886c8b4:	03b4c783          	lbu	a5,59(s1)
	me->altAudioCtx.cmdSock		= kInvalidSocketRef;
    e886c8b8:	6705                	lui	a4,0x1
    e886c8ba:	9722                	add	a4,a4,s0
	me->useEvents				= inParams->useEvents;
    e886c8bc:	40f40ea3          	sb	a5,1053(s0)
	me->eventSock				= kInvalidSocketRef;
    e886c8c0:	57fd                	li	a5,-1
    e886c8c2:	44f42023          	sw	a5,1088(s0)
	me->mainAudioCtx.cmdSock	= kInvalidSocketRef;
    e886c8c6:	57fd                	li	a5,-1
    e886c8c8:	46f43c23          	sd	a5,1144(s0)
	me->eventQueue = dispatch_queue_create( "AirPlayReceiverSessionEventQueue", NULL );
    e886c8cc:	4581                	li	a1,0
	me->altAudioCtx.cmdSock		= kInvalidSocketRef;
    e886c8ce:	bef73823          	sd	a5,-1040(a4) # bf0 <memcmp-0xe87ff410>
	me->keepAliveSock			= kInvalidSocketRef;
    e886c8d2:	7cf72e23          	sw	a5,2012(a4)
	me->keepAliveCmdSock		= kInvalidSocketRef;
    e886c8d6:	7ef72223          	sw	a5,2020(a4)
	me->rtcpSock				= kInvalidSocketRef;
    e886c8da:	74f72a23          	sw	a5,1876(a4)
	me->timingSock				= kInvalidSocketRef;
    e886c8de:	78f72c23          	sw	a5,1944(a4)
	me->timingCmdSock			= kInvalidSocketRef;
    e886c8e2:	7cf72423          	sw	a5,1992(a4)
	me->eventQueue = dispatch_queue_create( "AirPlayReceiverSessionEventQueue", NULL );
    e886c8e6:	0005d517          	auipc	a0,0x5d
    e886c8ea:	2ba50513          	addi	a0,a0,698 # e88c9ba0 <kAirPlayReceiverServerClass+0x1a8>
	me->screenSock				= kInvalidSocketRef;
    e886c8ee:	94fb2423          	sw	a5,-1720(s6)
	me->eventQueue = dispatch_queue_create( "AirPlayReceiverSessionEventQueue", NULL );
    e886c8f2:	c8ce30ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e886c8f6:	42a43023          	sd	a0,1056(s0)
    e886c8fa:	86aa                	mv	a3,a0
	require_action( me->eventQueue, exit, err = kNoMemoryErr );
    e886c8fc:	10050863          	beqz	a0,e886ca0c <AirPlayReceiverSessionCreate+0x20c>
	me->eventReplyTimer = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, me->eventQueue );
    e886c900:	4601                	li	a2,0
    e886c902:	4581                	li	a1,0
    e886c904:	4509                	li	a0,2
    e886c906:	ca8e20ef          	jal	ra,e884edae <dispatch_source_create>
    e886c90a:	42a43c23          	sd	a0,1080(s0)
	require_action( me->eventReplyTimer, exit, err = kNoMemoryErr );
    e886c90e:	0e050f63          	beqz	a0,e886ca0c <AirPlayReceiverSessionCreate+0x20c>
	dispatch_set_context( me->eventReplyTimer, me );
    e886c912:	85a2                	mv	a1,s0
    e886c914:	b08e20ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( me->eventReplyTimer, _EventReplyTimeoutCallback );
    e886c918:	43843503          	ld	a0,1080(s0)
    e886c91c:	ffffb597          	auipc	a1,0xffffb
    e886c920:	3a658593          	addi	a1,a1,934 # e8867cc2 <_EventReplyTimeoutCallback>
    e886c924:	d46e20ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_timer( me->eventReplyTimer, DISPATCH_TIME_FOREVER, DISPATCH_TIME_FOREVER, kNanosecondsPerSecond );
    e886c928:	43843503          	ld	a0,1080(s0)
    e886c92c:	3b9ad6b7          	lui	a3,0x3b9ad
    e886c930:	a0068693          	addi	a3,a3,-1536 # 3b9aca00 <memcmp-0xace53600>
    e886c934:	567d                	li	a2,-1
    e886c936:	55fd                	li	a1,-1
    e886c938:	a90e30ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
	dispatch_resume( me->eventReplyTimer );
    e886c93c:	43843503          	ld	a0,1080(s0)
    e886c940:	9b6e30ef          	jal	ra,e884faf6 <dispatch_resume>
	err = AirPlayReceiverSessionScreen_Create( &me->screenSession );
    e886c944:	94098513          	addi	a0,s3,-1728
    e886c948:	9522                	add	a0,a0,s0
    e886c94a:	215020ef          	jal	ra,e886f35e <AirPlayReceiverSessionScreen_Create>
    e886c94e:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e886c950:	e169                	bnez	a0,e886ca12 <AirPlayReceiverSessionCreate+0x212>
	err = pthread_mutex_init( &me->mutex, NULL );
    e886c952:	0a040b93          	addi	s7,s0,160
    e886c956:	4581                	li	a1,0
    e886c958:	855e                	mv	a0,s7
    e886c95a:	1200f0ef          	jal	ra,e887ba7a <pthread_mutex_init>
    e886c95e:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e886c960:	e94d                	bnez	a0,e886ca12 <AirPlayReceiverSessionCreate+0x212>
	me->mutexPtr = &me->mutex;
    e886c962:	0b743423          	sd	s7,168(s0)
	me->glitchIntervalTicks			= 1 * kSecondsPerMinute * ticksPerSec;
    e886c966:	67bd                	lui	a5,0xf
    e886c968:	a6078793          	addi	a5,a5,-1440 # ea60 <memcmp-0xe87f15a0>
    e886c96c:	90fb3423          	sd	a5,-1784(s6)
	me->glitchNextTicks				= ticks + me->glitchIntervalTicks;
    e886c970:	97d6                	add	a5,a5,s5
    e886c972:	90fb3023          	sd	a5,-1792(s6)
	ats->maxIdleTicks				= server->timeoutDataSecs * ticksPerSec;
    e886c976:	3e800713          	li	a4,1000
	ats->lastActivityTicks			= ticks;
    e886c97a:	27543423          	sd	s5,616(s0)
	ats->maxIdleTicks				= server->timeoutDataSecs * ticksPerSec;
    e886c97e:	0a092783          	lw	a5,160(s2)
	ats->idleLogIntervalTicks		= 10 * ticksPerSec;
    e886c982:	71098993          	addi	s3,s3,1808
	ats->perSecTicks				= 1 * ticksPerSec;
    e886c986:	26e43c23          	sd	a4,632(s0)
	ats->maxIdleTicks				= server->timeoutDataSecs * ticksPerSec;
    e886c98a:	02e787b3          	mul	a5,a5,a4
	ats->perSecLastTicks			= 0; // Explicit 0 to note that it's intentional to force an immmediate update.
    e886c98e:	28043023          	sd	zero,640(s0)
	ats->lastIdleLogTicks			= ticks;
    e886c992:	29543423          	sd	s5,648(s0)
	ats->idleLogIntervalTicks		= 10 * ticksPerSec;
    e886c996:	29343823          	sd	s3,656(s0)
	ats->maxIdleTicks				= server->timeoutDataSecs * ticksPerSec;
    e886c99a:	26f43823          	sd	a5,624(s0)
	ats->rtcpTIClockRTTMin			= +1000000.0;
    e886c99e:	00057797          	auipc	a5,0x57
    e886c9a2:	11a7b707          	fld	fa4,282(a5) # e88c3ab8 <__PRETTY_FUNCTION__.8517+0x20>
	ats->rtcpTIClockRTTMax			= -1000000.0;
    e886c9a6:	0005d797          	auipc	a5,0x5d
    e886c9aa:	1f27b787          	fld	fa5,498(a5) # e88c9b98 <kAirPlayReceiverServerClass+0x1a0>
	ats->rtcpTIClockRTTMin			= +1000000.0;
    e886c9ae:	2ae43c27          	fsd	fa4,696(s0)
	ats->rtcpTIClockRTTMax			= -1000000.0;
    e886c9b2:	2cf43027          	fsd	fa5,704(s0)
	ats->rtcpTIClockOffsetMin		= +1000000.0;
    e886c9b6:	34e43c27          	fsd	fa4,856(s0)
	ats->rtcpTIClockOffsetMax		= -1000000.0;
    e886c9ba:	36f43027          	fsd	fa5,864(s0)
	if( server->delegate.sessionCreated_f ) server->delegate.sessionCreated_f( server, me, server->delegate.context );
    e886c9be:	04093783          	ld	a5,64(s2)
    e886c9c2:	c791                	beqz	a5,e886c9ce <AirPlayReceiverSessionCreate+0x1ce>
    e886c9c4:	01893603          	ld	a2,24(s2)
    e886c9c8:	85a2                	mv	a1,s0
    e886c9ca:	854a                	mv	a0,s2
    e886c9cc:	9782                	jalr	a5
	err = AirPlayReceiverSessionPlatformInitialize( me );
    e886c9ce:	8522                	mv	a0,s0
    e886c9d0:	950f70ef          	jal	ra,e8863b20 <AirPlayReceiverSessionPlatformInitialize>
    e886c9d4:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e886c9d6:	ed15                	bnez	a0,e886ca12 <AirPlayReceiverSessionCreate+0x212>
	if( me->delegate.initialize_f )
    e886c9d8:	781c                	ld	a5,48(s0)
    e886c9da:	ef99                	bnez	a5,e886c9f8 <AirPlayReceiverSessionCreate+0x1f8>
	*outSession = me;
    e886c9dc:	008a3023          	sd	s0,0(s4)
}
    e886c9e0:	60a6                	ld	ra,72(sp)
    e886c9e2:	6406                	ld	s0,64(sp)
    e886c9e4:	8526                	mv	a0,s1
    e886c9e6:	7942                	ld	s2,48(sp)
    e886c9e8:	74e2                	ld	s1,56(sp)
    e886c9ea:	79a2                	ld	s3,40(sp)
    e886c9ec:	7a02                	ld	s4,32(sp)
    e886c9ee:	6ae2                	ld	s5,24(sp)
    e886c9f0:	6b42                	ld	s6,16(sp)
    e886c9f2:	6ba2                	ld	s7,8(sp)
    e886c9f4:	6161                	addi	sp,sp,80
    e886c9f6:	8082                	ret
		err = me->delegate.initialize_f( me, me->delegate.context );
    e886c9f8:	740c                	ld	a1,40(s0)
    e886c9fa:	8522                	mv	a0,s0
    e886c9fc:	9782                	jalr	a5
		require_noerr( err, exit );
    e886c9fe:	dd79                	beqz	a0,e886c9dc <AirPlayReceiverSessionCreate+0x1dc>
    e886ca00:	84aa                	mv	s1,a0
    e886ca02:	a801                	j	e886ca12 <AirPlayReceiverSessionCreate+0x212>
	require_action( me, exit, err = kNoMemoryErr );
    e886ca04:	74f9                	lui	s1,0xffffe
    e886ca06:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886ca0a:	bfd9                	j	e886c9e0 <AirPlayReceiverSessionCreate+0x1e0>
	require_action( me->eventQueue, exit, err = kNoMemoryErr );
    e886ca0c:	74f9                	lui	s1,0xffffe
    e886ca0e:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	CFReleaseNullSafe( me );
    e886ca12:	8522                	mv	a0,s0
    e886ca14:	f36da0ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e886ca18:	b7e1                	j	e886c9e0 <AirPlayReceiverSessionCreate+0x1e0>

00000000e886ca1a <AirPlayReceiverSessionSetDelegate>:
{
    e886ca1a:	1141                	addi	sp,sp,-16
	inSession->delegate = *inDelegate;
    e886ca1c:	05800613          	li	a2,88
    e886ca20:	02850513          	addi	a0,a0,40
{
    e886ca24:	e406                	sd	ra,8(sp)
	inSession->delegate = *inDelegate;
    e886ca26:	e42930ef          	jal	ra,e8800068 <memcpy>
}
    e886ca2a:	60a2                	ld	ra,8(sp)
    e886ca2c:	0141                	addi	sp,sp,16
    e886ca2e:	8082                	ret

00000000e886ca30 <AirPlayReceiverSessionCopyProperty>:
{
    e886ca30:	7139                	addi	sp,sp,-64
    e886ca32:	fc91540b          	sdd	s0,s1,(sp),2,4
    e886ca36:	f84a                	sd	s2,48(sp)
    e886ca38:	84aa                	mv	s1,a0
    e886ca3a:	892e                	mv	s2,a1
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_TransportType ) ) )
    e886ca3c:	8532                	mv	a0,a2
    e886ca3e:	00031597          	auipc	a1,0x31
    e886ca42:	6ca58593          	addi	a1,a1,1738 # e889e108 <icmp6_param_problem+0x109a>
{
    e886ca46:	e436                	sd	a3,8(sp)
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_TransportType ) ) )
    e886ca48:	e032                	sd	a2,0(sp)
{
    e886ca4a:	fc06                	sd	ra,56(sp)
    e886ca4c:	843a                	mv	s0,a4
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_TransportType ) ) )
    e886ca4e:	f00da0ef          	jal	ra,e884714e <CFEqual>
    e886ca52:	f8d1460b          	ldd	a2,a3,(sp),0,4
    e886ca56:	c515                	beqz	a0,e886ca82 <AirPlayReceiverSessionCopyProperty+0x52>
		value = CFNumberCreate( kCFAllocatorDefault, kCFNumberSInt32Type, (int32_t*) &session->transportType );
    e886ca58:	0b848613          	addi	a2,s1,184
    e886ca5c:	458d                	li	a1,3
    e886ca5e:	4501                	li	a0,0
    e886ca60:	a0fda0ef          	jal	ra,e884746e <CFNumberCreate>
		err = value ? kNoErr : kNoMemoryErr;
    e886ca64:	4781                	li	a5,0
    e886ca66:	e501                	bnez	a0,e886ca6e <AirPlayReceiverSessionCopyProperty+0x3e>
    e886ca68:	77f9                	lui	a5,0xffffe
    e886ca6a:	5b878793          	addi	a5,a5,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886ca6e:	ce3e                	sw	a5,28(sp)
	if( outErr ) *outErr = err;
    e886ca70:	c019                	beqz	s0,e886ca76 <AirPlayReceiverSessionCopyProperty+0x46>
    e886ca72:	47f2                	lw	a5,28(sp)
    e886ca74:	c01c                	sw	a5,0(s0)
}
    e886ca76:	70e2                	ld	ra,56(sp)
    e886ca78:	fc91440b          	ldd	s0,s1,(sp),2,4
    e886ca7c:	7942                	ld	s2,48(sp)
    e886ca7e:	6121                	addi	sp,sp,64
    e886ca80:	8082                	ret
		value = AirPlayReceiverSessionPlatformCopyProperty( session, inFlags, inProperty, inQualifier, &err );
    e886ca82:	0878                	addi	a4,sp,28
    e886ca84:	85ca                	mv	a1,s2
    e886ca86:	8526                	mv	a0,s1
    e886ca88:	cbef70ef          	jal	ra,e8863f46 <AirPlayReceiverSessionPlatformCopyProperty>
		goto exit;
    e886ca8c:	b7d5                	j	e886ca70 <AirPlayReceiverSessionCopyProperty+0x40>

00000000e886ca8e <AirPlayReceiverSessionSetHomeKitSecurityContext>:
{
    e886ca8e:	7179                	addi	sp,sp,-48
    e886ca90:	f026                	sd	s1,32(sp)
    e886ca92:	f406                	sd	ra,40(sp)
    e886ca94:	ec22                	sd	s0,24(sp)
    e886ca96:	84aa                	mv	s1,a0
	ReplaceCF( &inSession->pairVerifySession, inHKPairVerifySession );
    e886ca98:	45053403          	ld	s0,1104(a0)
    e886ca9c:	c591                	beqz	a1,e886caa8 <AirPlayReceiverSessionSetHomeKitSecurityContext+0x1a>
    e886ca9e:	852e                	mv	a0,a1
    e886caa0:	e42e                	sd	a1,8(sp)
    e886caa2:	ea4da0ef          	jal	ra,e8847146 <CFRetain>
    e886caa6:	65a2                	ld	a1,8(sp)
    e886caa8:	44b4b823          	sd	a1,1104(s1)
    e886caac:	c401                	beqz	s0,e886cab4 <AirPlayReceiverSessionSetHomeKitSecurityContext+0x26>
    e886caae:	8522                	mv	a0,s0
    e886cab0:	e9ada0ef          	jal	ra,e884714a <CFRelease>
}
    e886cab4:	70a2                	ld	ra,40(sp)
    e886cab6:	6462                	ld	s0,24(sp)
    e886cab8:	7482                	ld	s1,32(sp)
    e886caba:	4501                	li	a0,0
    e886cabc:	6145                	addi	sp,sp,48
    e886cabe:	8082                	ret

00000000e886cac0 <AirPlayReceiverSessionSetSecurityInfo>:
{
    e886cac0:	7179                	addi	sp,sp,-48
    e886cac2:	f891540b          	sdd	s0,s1,(sp),0,4
	AES_CBCFrame_Final( &inSession->decryptorStorage );
    e886cac6:	12450493          	addi	s1,a0,292
{
    e886caca:	842a                	mv	s0,a0
	AES_CBCFrame_Final( &inSession->decryptorStorage );
    e886cacc:	8526                	mv	a0,s1
{
    e886cace:	fb31590b          	sdd	s2,s3,(sp),1,4
    e886cad2:	f406                	sd	ra,40(sp)
    e886cad4:	f052                	sd	s4,32(sp)
    e886cad6:	89b2                	mv	s3,a2
    e886cad8:	8a2e                	mv	s4,a1
	AES_CBCFrame_Final( &inSession->decryptorStorage );
    e886cada:	da8d70ef          	jal	ra,e8844082 <AES_CBCFrame_Final>
	inSession->decryptor = NULL;
    e886cade:	22043823          	sd	zero,560(s0)
	err = AES_CBCFrame_Init( &inSession->decryptorStorage, inKey, inIV, false );
    e886cae2:	4681                	li	a3,0
    e886cae4:	864e                	mv	a2,s3
    e886cae6:	85d2                	mv	a1,s4
    e886cae8:	8526                	mv	a0,s1
    e886caea:	ce2d70ef          	jal	ra,e8843fcc <AES_CBCFrame_Init>
    e886caee:	892a                	mv	s2,a0
	require_noerr( err, exit );
    e886caf0:	ed19                	bnez	a0,e886cb0e <AirPlayReceiverSessionSetSecurityInfo+0x4e>
	memcpy( inSession->aesSessionKey, inKey, sizeof( inSession->aesSessionKey ) );
    e886caf2:	4641                	li	a2,16
    e886caf4:	85d2                	mv	a1,s4
	inSession->decryptor = &inSession->decryptorStorage;
    e886caf6:	22943823          	sd	s1,560(s0)
	memcpy( inSession->aesSessionKey, inKey, sizeof( inSession->aesSessionKey ) );
    e886cafa:	23840513          	addi	a0,s0,568
    e886cafe:	0a30f0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	memcpy( inSession->aesSessionIV, inIV, sizeof( inSession->aesSessionIV ) );
    e886cb02:	4641                	li	a2,16
    e886cb04:	85ce                	mv	a1,s3
    e886cb06:	24840513          	addi	a0,s0,584
    e886cb0a:	0970f0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
}
    e886cb0e:	70a2                	ld	ra,40(sp)
    e886cb10:	f891440b          	ldd	s0,s1,(sp),0,4
    e886cb14:	854a                	mv	a0,s2
    e886cb16:	7a02                	ld	s4,32(sp)
    e886cb18:	fb31490b          	ldd	s2,s3,(sp),1,4
    e886cb1c:	6145                	addi	sp,sp,48
    e886cb1e:	8082                	ret

00000000e886cb20 <AirPlayReceiverSessionSendCommand>:
	require_action_quiet( inSession->sessionStarted, exit, err = kStateErr );
    e886cb20:	41e54783          	lbu	a5,1054(a0)
    e886cb24:	c785                	beqz	a5,e886cb4c <AirPlayReceiverSessionSendCommand+0x2c>
{
    e886cb26:	7139                	addi	sp,sp,-64
    e886cb28:	fc06                	sd	ra,56(sp)
	context.session = inSession;
    e886cb2a:	e42a                	sd	a0,8(sp)
	dispatch_sync_f( inSession->eventQueue, &context, _AirPlayReceiverSessionSendCommand );
    e886cb2c:	42053503          	ld	a0,1056(a0)
	context.completion = inCompletion;
    e886cb30:	fac1558b          	sdd	a1,a2,(sp),1,4
	dispatch_sync_f( inSession->eventQueue, &context, _AirPlayReceiverSessionSendCommand );
    e886cb34:	002c                	addi	a1,sp,8
    e886cb36:	ffffb617          	auipc	a2,0xffffb
    e886cb3a:	21a60613          	addi	a2,a2,538 # e8867d50 <_AirPlayReceiverSessionSendCommand>
	context.completionContext = inContext;
    e886cb3e:	f036                	sd	a3,32(sp)
	dispatch_sync_f( inSession->eventQueue, &context, _AirPlayReceiverSessionSendCommand );
    e886cb40:	9dee20ef          	jal	ra,e884ed1e <dispatch_sync_f>
}
    e886cb44:	70e2                	ld	ra,56(sp)
	err = context.err;
    e886cb46:	5522                	lw	a0,40(sp)
}
    e886cb48:	6121                	addi	sp,sp,64
    e886cb4a:	8082                	ret
	require_action_quiet( inSession->sessionStarted, exit, err = kStateErr );
    e886cb4c:	7579                	lui	a0,0xffffe
    e886cb4e:	5cb50513          	addi	a0,a0,1483 # ffffffffffffe5cb <__DRAM0_INF_BASE+0xffffffff0000e5cb>
}
    e886cb52:	8082                	ret

00000000e886cb54 <AirPlayReceiverSessionTearDown>:
{
    e886cb54:	7135                	addi	sp,sp,-160
    e886cb56:	e526                	sd	s1,136(sp)
	atr_ulog( kLogLevelTrace, "Tearing down session %llu with %##a %?@\n", 
    e886cb58:	00068497          	auipc	s1,0x68
    e886cb5c:	70848493          	addi	s1,s1,1800 # e88d5260 <gLogCategory_AirPlayReceiverCore>
{
    e886cb60:	e922                	sd	s0,144(sp)
    e886cb62:	e14a                	sd	s2,128(sp)
    e886cb64:	f4d6                	sd	s5,104(sp)
    e886cb66:	ed06                	sd	ra,152(sp)
    e886cb68:	fcce                	sd	s3,120(sp)
    e886cb6a:	f8d2                	sd	s4,112(sp)
    e886cb6c:	f0da                	sd	s6,96(sp)
    e886cb6e:	ecde                	sd	s7,88(sp)
    e886cb70:	e8e2                	sd	s8,80(sp)
    e886cb72:	e4e6                	sd	s9,72(sp)
    e886cb74:	e0ea                	sd	s10,64(sp)
    e886cb76:	fc6e                	sd	s11,56(sp)
	atr_ulog( kLogLevelTrace, "Tearing down session %llu with %##a %?@\n", 
    e886cb78:	409c                	lw	a5,0(s1)
{
    e886cb7a:	e432                	sd	a2,8(sp)
	atr_ulog( kLogLevelTrace, "Tearing down session %llu with %##a %?@\n", 
    e886cb7c:	4779                	li	a4,30
{
    e886cb7e:	842a                	mv	s0,a0
    e886cb80:	892e                	mv	s2,a1
    e886cb82:	8ab6                	mv	s5,a3
	atr_ulog( kLogLevelTrace, "Tearing down session %llu with %##a %?@\n", 
    e886cb84:	06f74663          	blt	a4,a5,e886cbf0 <AirPlayReceiverSessionTearDown+0x9c>
    e886cb88:	577d                	li	a4,-1
    e886cb8a:	04e78e63          	beq	a5,a4,e886cbe6 <AirPlayReceiverSessionTearDown+0x92>
    e886cb8e:	4094                	lw	a3,0(s1)
    e886cb90:	4651                	li	a2,20
    e886cb92:	10043703          	ld	a4,256(s0)
    e886cb96:	0bc40793          	addi	a5,s0,188
    e886cb9a:	4801                	li	a6,0
    e886cb9c:	02d64463          	blt	a2,a3,e886cbc4 <AirPlayReceiverSessionTearDown+0x70>
    e886cba0:	567d                	li	a2,-1
    e886cba2:	4805                	li	a6,1
    e886cba4:	02c69063          	bne	a3,a2,e886cbc4 <AirPlayReceiverSessionTearDown+0x70>
    e886cba8:	45d1                	li	a1,20
    e886cbaa:	00068517          	auipc	a0,0x68
    e886cbae:	6b650513          	addi	a0,a0,1718 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886cbb2:	ec3e                	sd	a5,24(sp)
    e886cbb4:	e83a                	sd	a4,16(sp)
    e886cbb6:	cbce70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886cbba:	2501                	sext.w	a0,a0
    e886cbbc:	67e2                	ld	a5,24(sp)
    e886cbbe:	6742                	ld	a4,16(sp)
    e886cbc0:	00a03833          	snez	a6,a0
    e886cbc4:	88ca                	mv	a7,s2
    e886cbc6:	0005d697          	auipc	a3,0x5d
    e886cbca:	51268693          	addi	a3,a3,1298 # e88ca0d8 <kAirPlayReceiverServerClass+0x6e0>
    e886cbce:	4679                	li	a2,30
    e886cbd0:	0005e597          	auipc	a1,0x5e
    e886cbd4:	61058593          	addi	a1,a1,1552 # e88cb1e0 <__PRETTY_FUNCTION__.13650>
    e886cbd8:	00068517          	auipc	a0,0x68
    e886cbdc:	68850513          	addi	a0,a0,1672 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886cbe0:	895e70ef          	jal	ra,e8854474 <LogPrintF>
    e886cbe4:	a031                	j	e886cbf0 <AirPlayReceiverSessionTearDown+0x9c>
    e886cbe6:	45f9                	li	a1,30
    e886cbe8:	8526                	mv	a0,s1
    e886cbea:	c88e70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886cbee:	f145                	bnez	a0,e886cb8e <AirPlayReceiverSessionTearDown+0x3a>
	AirPlayReceiverSessionPlatformControl( inSession, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_TearDownStreams ), NULL, 
    e886cbf0:	4781                	li	a5,0
    e886cbf2:	874a                	mv	a4,s2
    e886cbf4:	4681                	li	a3,0
    e886cbf6:	00031617          	auipc	a2,0x31
    e886cbfa:	54260613          	addi	a2,a2,1346 # e889e138 <icmp6_param_problem+0x10ca>
    e886cbfe:	4585                	li	a1,1
    e886cc00:	8522                	mv	a0,s0
    e886cc02:	f83f60ef          	jal	ra,e8863b84 <AirPlayReceiverSessionPlatformControl>
	streams = inParams ? CFDictionaryGetCFArray( inParams, CFSTR( kAirPlayKey_Streams ), NULL ) : NULL;
    e886cc06:	14090e63          	beqz	s2,e886cd62 <AirPlayReceiverSessionTearDown+0x20e>
    e886cc0a:	d5eda0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e886cc0e:	0005061b          	sext.w	a2,a0
    e886cc12:	4681                	li	a3,0
    e886cc14:	00031597          	auipc	a1,0x31
    e886cc18:	3d458593          	addi	a1,a1,980 # e889dfe8 <icmp6_param_problem+0xf7a>
    e886cc1c:	854a                	mv	a0,s2
    e886cc1e:	a8ddf0ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e886cc22:	8b2a                	mv	s6,a0
	streamCount = streams ? CFArrayGetCount( streams ) : 0;
    e886cc24:	12050f63          	beqz	a0,e886cd62 <AirPlayReceiverSessionTearDown+0x20e>
				_TearDownStream( inSession, &inSession->altAudioCtx, false );
    e886cc28:	6985                	lui	s3,0x1
	streamCount = streams ? CFArrayGetCount( streams ) : 0;
    e886cc2a:	dc8da0ef          	jal	ra,e88471f2 <CFArrayGetCount>
				_TearDownStream( inSession, &inSession->altAudioCtx, false );
    e886cc2e:	bd098993          	addi	s3,s3,-1072 # bd0 <memcmp-0xe87ff430>
	streamCount = streams ? CFArrayGetCount( streams ) : 0;
    e886cc32:	892a                	mv	s2,a0
	for( streamIndex = 0; streamIndex < streamCount; ++streamIndex )
    e886cc34:	4a01                	li	s4,0
		streamType = (AirPlayStreamType) CFDictionaryGetInt64( streamDesc, CFSTR( kAirPlayKey_Type ), NULL );
    e886cc36:	00031c97          	auipc	s9,0x31
    e886cc3a:	3e2c8c93          	addi	s9,s9,994 # e889e018 <icmp6_param_problem+0xfaa>
		atr_ulog( kLogLevelTrace, "Tearing down stream type %d\n", streamType );
    e886cc3e:	4d79                	li	s10,30
    e886cc40:	5bfd                	li	s7,-1
				_TearDownStream( inSession, &inSession->altAudioCtx, false );
    e886cc42:	99a2                	add	s3,s3,s0
				_TearDownStream( inSession, &inSession->mainAudioCtx, false );
    e886cc44:	45840d93          	addi	s11,s0,1112
	for( streamIndex = 0; streamIndex < streamCount; ++streamIndex )
    e886cc48:	032a4d63          	blt	s4,s2,e886cc82 <AirPlayReceiverSessionTearDown+0x12e>
	if( streamCount > 0 )
    e886cc4c:	11205c63          	blez	s2,e886cd64 <AirPlayReceiverSessionTearDown+0x210>
		err = _ControlIdleStateTransition( inSession, NULL );
    e886cc50:	4581                	li	a1,0
    e886cc52:	8522                	mv	a0,s0
    e886cc54:	9cafd0ef          	jal	ra,e8869e1e <_ControlIdleStateTransition>
	if( outDone ) *outDone = ( streamCount == 0 );
    e886cc58:	000a8663          	beqz	s5,e886cc64 <AirPlayReceiverSessionTearDown+0x110>
    e886cc5c:	00193913          	seqz	s2,s2
    e886cc60:	012a8023          	sb	s2,0(s5)
}
    e886cc64:	60ea                	ld	ra,152(sp)
    e886cc66:	644a                	ld	s0,144(sp)
    e886cc68:	64aa                	ld	s1,136(sp)
    e886cc6a:	690a                	ld	s2,128(sp)
    e886cc6c:	79e6                	ld	s3,120(sp)
    e886cc6e:	7a46                	ld	s4,112(sp)
    e886cc70:	7aa6                	ld	s5,104(sp)
    e886cc72:	7b06                	ld	s6,96(sp)
    e886cc74:	6be6                	ld	s7,88(sp)
    e886cc76:	6c46                	ld	s8,80(sp)
    e886cc78:	6ca6                	ld	s9,72(sp)
    e886cc7a:	6d06                	ld	s10,64(sp)
    e886cc7c:	7de2                	ld	s11,56(sp)
    e886cc7e:	610d                	addi	sp,sp,160
    e886cc80:	8082                	ret
		streamDesc = CFArrayGetCFDictionaryAtIndex( streams, streamIndex, &err );
    e886cc82:	f20da0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e886cc86:	0005061b          	sext.w	a2,a0
    e886cc8a:	1074                	addi	a3,sp,44
    e886cc8c:	85d2                	mv	a1,s4
    e886cc8e:	855a                	mv	a0,s6
    e886cc90:	bfcdf0ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
		require_noerr( err, exit );
    e886cc94:	57b2                	lw	a5,44(sp)
    e886cc96:	f3e9                	bnez	a5,e886cc58 <AirPlayReceiverSessionTearDown+0x104>
		streamType = (AirPlayStreamType) CFDictionaryGetInt64( streamDesc, CFSTR( kAirPlayKey_Type ), NULL );
    e886cc98:	4601                	li	a2,0
    e886cc9a:	85e6                	mv	a1,s9
    e886cc9c:	9d5df0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886cca0:	00050c1b          	sext.w	s8,a0
		atr_ulog( kLogLevelTrace, "Tearing down stream type %d\n", streamType );
    e886cca4:	4098                	lw	a4,0(s1)
    e886cca6:	02ed4463          	blt	s10,a4,e886ccce <AirPlayReceiverSessionTearDown+0x17a>
    e886ccaa:	07770563          	beq	a4,s7,e886cd14 <AirPlayReceiverSessionTearDown+0x1c0>
    e886ccae:	8762                	mv	a4,s8
    e886ccb0:	0005d697          	auipc	a3,0x5d
    e886ccb4:	45868693          	addi	a3,a3,1112 # e88ca108 <kAirPlayReceiverServerClass+0x710>
    e886ccb8:	4679                	li	a2,30
    e886ccba:	0005e597          	auipc	a1,0x5e
    e886ccbe:	52658593          	addi	a1,a1,1318 # e88cb1e0 <__PRETTY_FUNCTION__.13650>
    e886ccc2:	00068517          	auipc	a0,0x68
    e886ccc6:	59e50513          	addi	a0,a0,1438 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886ccca:	faae70ef          	jal	ra,e8854474 <LogPrintF>
		switch( streamType )
    e886ccce:	06500713          	li	a4,101
    e886ccd2:	06ec0c63          	beq	s8,a4,e886cd4a <AirPlayReceiverSessionTearDown+0x1f6>
    e886ccd6:	05876863          	bltu	a4,s8,e886cd26 <AirPlayReceiverSessionTearDown+0x1d2>
    e886ccda:	06400713          	li	a4,100
    e886ccde:	06ec0063          	beq	s8,a4,e886cd3e <AirPlayReceiverSessionTearDown+0x1ea>
				atr_ulog( kLogLevelNotice, "### Unsupported stream type: %d\n", streamType );
    e886cce2:	4098                	lw	a4,0(s1)
    e886cce4:	03200693          	li	a3,50
    e886cce8:	04e6cf63          	blt	a3,a4,e886cd46 <AirPlayReceiverSessionTearDown+0x1f2>
    e886ccec:	07770163          	beq	a4,s7,e886cd4e <AirPlayReceiverSessionTearDown+0x1fa>
    e886ccf0:	8762                	mv	a4,s8
    e886ccf2:	0005d697          	auipc	a3,0x5d
    e886ccf6:	43668693          	addi	a3,a3,1078 # e88ca128 <kAirPlayReceiverServerClass+0x730>
    e886ccfa:	03200613          	li	a2,50
    e886ccfe:	0005e597          	auipc	a1,0x5e
    e886cd02:	4e258593          	addi	a1,a1,1250 # e88cb1e0 <__PRETTY_FUNCTION__.13650>
    e886cd06:	00068517          	auipc	a0,0x68
    e886cd0a:	55a50513          	addi	a0,a0,1370 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886cd0e:	f66e70ef          	jal	ra,e8854474 <LogPrintF>
    e886cd12:	a815                	j	e886cd46 <AirPlayReceiverSessionTearDown+0x1f2>
		atr_ulog( kLogLevelTrace, "Tearing down stream type %d\n", streamType );
    e886cd14:	45f9                	li	a1,30
    e886cd16:	00068517          	auipc	a0,0x68
    e886cd1a:	54a50513          	addi	a0,a0,1354 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886cd1e:	b54e70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886cd22:	d555                	beqz	a0,e886ccce <AirPlayReceiverSessionTearDown+0x17a>
    e886cd24:	b769                	j	e886ccae <AirPlayReceiverSessionTearDown+0x15a>
		switch( streamType )
    e886cd26:	06600713          	li	a4,102
    e886cd2a:	00ec0a63          	beq	s8,a4,e886cd3e <AirPlayReceiverSessionTearDown+0x1ea>
    e886cd2e:	06e00713          	li	a4,110
    e886cd32:	faec18e3          	bne	s8,a4,e886cce2 <AirPlayReceiverSessionTearDown+0x18e>
				_ScreenTearDown( inSession );
    e886cd36:	8522                	mv	a0,s0
    e886cd38:	cedfa0ef          	jal	ra,e8867a24 <_ScreenTearDown>
				break;
    e886cd3c:	a029                	j	e886cd46 <AirPlayReceiverSessionTearDown+0x1f2>
				_TearDownStream( inSession, &inSession->mainAudioCtx, false );
    e886cd3e:	85ee                	mv	a1,s11
				_TearDownStream( inSession, &inSession->altAudioCtx, false );
    e886cd40:	8522                	mv	a0,s0
    e886cd42:	f9efd0ef          	jal	ra,e886a4e0 <_TearDownStream.isra.5>
	for( streamIndex = 0; streamIndex < streamCount; ++streamIndex )
    e886cd46:	2a05                	addiw	s4,s4,1
    e886cd48:	b701                	j	e886cc48 <AirPlayReceiverSessionTearDown+0xf4>
				_TearDownStream( inSession, &inSession->altAudioCtx, false );
    e886cd4a:	85ce                	mv	a1,s3
    e886cd4c:	bfd5                	j	e886cd40 <AirPlayReceiverSessionTearDown+0x1ec>
				atr_ulog( kLogLevelNotice, "### Unsupported stream type: %d\n", streamType );
    e886cd4e:	03200593          	li	a1,50
    e886cd52:	00068517          	auipc	a0,0x68
    e886cd56:	50e50513          	addi	a0,a0,1294 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886cd5a:	b18e70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886cd5e:	d565                	beqz	a0,e886cd46 <AirPlayReceiverSessionTearDown+0x1f2>
    e886cd60:	bf41                	j	e886ccf0 <AirPlayReceiverSessionTearDown+0x19c>
	for( streamIndex = 0; streamIndex < streamCount; ++streamIndex )
    e886cd62:	4901                	li	s2,0
	_LogEnded( inSession, inReason );
    e886cd64:	65a2                	ld	a1,8(sp)
    e886cd66:	8522                	mv	a0,s0
	if( inSession->inputRingRef )
    e886cd68:	6489                	lui	s1,0x2
	_LogEnded( inSession, inReason );
    e886cd6a:	fd4fc0ef          	jal	ra,e886953e <_LogEnded>
	if( inSession->inputRingRef )
    e886cd6e:	94a2                	add	s1,s1,s0
    e886cd70:	9304b503          	ld	a0,-1744(s1) # 1930 <memcmp-0xe87fe6d0>
	gAirTunes = NULL;
    e886cd74:	00077797          	auipc	a5,0x77
    e886cd78:	0407be23          	sd	zero,92(a5) # e88e3dd0 <gAirTunes>
	if( inSession->inputRingRef )
    e886cd7c:	c509                	beqz	a0,e886cd86 <AirPlayReceiverSessionTearDown+0x232>
		MirroredRingBufferFree( inSession->inputRingRef );
    e886cd7e:	81ce80ef          	jal	ra,e8854d9a <MirroredRingBufferFree>
		inSession->inputRingRef = NULL;
    e886cd82:	9204b823          	sd	zero,-1744(s1)
	dispatch_source_forget( &inSession->periodicTimer );
    e886cd86:	7848                	ld	a0,176(s0)
    e886cd88:	c901                	beqz	a0,e886cd98 <AirPlayReceiverSessionTearDown+0x244>
    e886cd8a:	ebde20ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e886cd8e:	7848                	ld	a0,176(s0)
    e886cd90:	cc1e10ef          	jal	ra,e884ea50 <dispatch_release>
    e886cd94:	0a043823          	sd	zero,176(s0)
	_ScreenTearDown( inSession );
    e886cd98:	8522                	mv	a0,s0
    e886cd9a:	c8bfa0ef          	jal	ra,e8867a24 <_ScreenTearDown>
	_TearDownStream( inSession, &inSession->altAudioCtx, false );
    e886cd9e:	6485                	lui	s1,0x1
    e886cda0:	bd048593          	addi	a1,s1,-1072 # bd0 <memcmp-0xe87ff430>
    e886cda4:	95a2                	add	a1,a1,s0
    e886cda6:	8522                	mv	a0,s0
    e886cda8:	f38fd0ef          	jal	ra,e886a4e0 <_TearDownStream.isra.5>
	_TearDownStream( inSession, &inSession->mainAudioCtx, false );
    e886cdac:	45840593          	addi	a1,s0,1112
    e886cdb0:	8522                	mv	a0,s0
    e886cdb2:	f2efd0ef          	jal	ra,e886a4e0 <_TearDownStream.isra.5>
	dispatch_sync_f( inSession->eventQueue, inSession, _ForgetReplyTimer );
    e886cdb6:	42043503          	ld	a0,1056(s0)
    e886cdba:	85a2                	mv	a1,s0
    e886cdbc:	ffffb617          	auipc	a2,0xffffb
    e886cdc0:	c4260613          	addi	a2,a2,-958 # e88679fe <_ForgetReplyTimer>
    e886cdc4:	f5be10ef          	jal	ra,e884ed1e <dispatch_sync_f>
	_ControlTearDown( inSession );
    e886cdc8:	8522                	mv	a0,s0
    e886cdca:	8f1fd0ef          	jal	ra,e886a6ba <_ControlTearDown>
	_TimingFinalize( inSession );
    e886cdce:	8522                	mv	a0,s0
    e886cdd0:	e31fc0ef          	jal	ra,e8869c00 <_TimingFinalize>
	AirTunesClock_Finalize( inSession->airTunesClock );
    e886cdd4:	9426                	add	s0,s0,s1
    e886cdd6:	79043503          	ld	a0,1936(s0)
    e886cdda:	3ca040ef          	jal	ra,e88711a4 <AirTunesClock_Finalize>
	inSession->airTunesClock = NULL;
    e886cdde:	78043823          	sd	zero,1936(s0)
    e886cde2:	bd9d                	j	e886cc58 <AirPlayReceiverSessionTearDown+0x104>

00000000e886cde4 <AirPlayReceiverSessionSetup>:
{
    e886cde4:	7155                	addi	sp,sp,-208
    e886cde6:	fd26                	sd	s1,184(sp)
	atr_ulog( kLogLevelTrace, "Setting up session %llu with %##a %?@\n", 
    e886cde8:	00068497          	auipc	s1,0x68
    e886cdec:	47848493          	addi	s1,s1,1144 # e88d5260 <gLogCategory_AirPlayReceiverCore>
{
    e886cdf0:	e1a2                	sd	s0,192(sp)
    e886cdf2:	f54e                	sd	s3,168(sp)
    e886cdf4:	f8ea                	sd	s10,112(sp)
    e886cdf6:	e586                	sd	ra,200(sp)
    e886cdf8:	f94a                	sd	s2,176(sp)
    e886cdfa:	f152                	sd	s4,160(sp)
    e886cdfc:	ed56                	sd	s5,152(sp)
    e886cdfe:	e95a                	sd	s6,144(sp)
    e886ce00:	e55e                	sd	s7,136(sp)
    e886ce02:	e162                	sd	s8,128(sp)
    e886ce04:	fce6                	sd	s9,120(sp)
    e886ce06:	f4ee                	sd	s11,104(sp)
	atr_ulog( kLogLevelTrace, "Setting up session %llu with %##a %?@\n", 
    e886ce08:	409c                	lw	a5,0(s1)
    e886ce0a:	4779                	li	a4,30
{
    e886ce0c:	842a                	mv	s0,a0
    e886ce0e:	89ae                	mv	s3,a1
    e886ce10:	8d32                	mv	s10,a2
	atr_ulog( kLogLevelTrace, "Setting up session %llu with %##a %?@\n", 
    e886ce12:	06f74663          	blt	a4,a5,e886ce7e <AirPlayReceiverSessionSetup+0x9a>
    e886ce16:	577d                	li	a4,-1
    e886ce18:	04e78e63          	beq	a5,a4,e886ce74 <AirPlayReceiverSessionSetup+0x90>
    e886ce1c:	4094                	lw	a3,0(s1)
    e886ce1e:	4651                	li	a2,20
    e886ce20:	10043703          	ld	a4,256(s0)
    e886ce24:	0bc40793          	addi	a5,s0,188
    e886ce28:	4801                	li	a6,0
    e886ce2a:	02d64463          	blt	a2,a3,e886ce52 <AirPlayReceiverSessionSetup+0x6e>
    e886ce2e:	567d                	li	a2,-1
    e886ce30:	4805                	li	a6,1
    e886ce32:	02c69063          	bne	a3,a2,e886ce52 <AirPlayReceiverSessionSetup+0x6e>
    e886ce36:	45d1                	li	a1,20
    e886ce38:	00068517          	auipc	a0,0x68
    e886ce3c:	42850513          	addi	a0,a0,1064 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886ce40:	e43e                	sd	a5,8(sp)
    e886ce42:	e03a                	sd	a4,0(sp)
    e886ce44:	a2ee70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886ce48:	2501                	sext.w	a0,a0
    e886ce4a:	67a2                	ld	a5,8(sp)
    e886ce4c:	6702                	ld	a4,0(sp)
    e886ce4e:	00a03833          	snez	a6,a0
    e886ce52:	88ce                	mv	a7,s3
    e886ce54:	0005d697          	auipc	a3,0x5d
    e886ce58:	06468693          	addi	a3,a3,100 # e88c9eb8 <kAirPlayReceiverServerClass+0x4c0>
    e886ce5c:	4679                	li	a2,30
    e886ce5e:	0005e597          	auipc	a1,0x5e
    e886ce62:	36258593          	addi	a1,a1,866 # e88cb1c0 <__PRETTY_FUNCTION__.13612>
    e886ce66:	00068517          	auipc	a0,0x68
    e886ce6a:	3fa50513          	addi	a0,a0,1018 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886ce6e:	e06e70ef          	jal	ra,e8854474 <LogPrintF>
    e886ce72:	a031                	j	e886ce7e <AirPlayReceiverSessionSetup+0x9a>
    e886ce74:	45f9                	li	a1,30
    e886ce76:	8526                	mv	a0,s1
    e886ce78:	9fae70ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886ce7c:	f145                	bnez	a0,e886ce1c <AirPlayReceiverSessionSetup+0x38>
	responseParams = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ce7e:	00052697          	auipc	a3,0x52
    e886ce82:	94a68693          	addi	a3,a3,-1718 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886ce86:	00052617          	auipc	a2,0x52
    e886ce8a:	91260613          	addi	a2,a2,-1774 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886ce8e:	4581                	li	a1,0
    e886ce90:	4501                	li	a0,0
    e886ce92:	d14da0ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886ce96:	892a                	mv	s2,a0
	require_action( responseParams, exit, err = kNoMemoryErr );
    e886ce98:	e125                	bnez	a0,e886cef8 <AirPlayReceiverSessionSetup+0x114>
    e886ce9a:	77f9                	lui	a5,0xffffe
    e886ce9c:	5b87879b          	addiw	a5,a5,1464
    e886cea0:	ce3e                	sw	a5,28(sp)
		atr_ulog( kLogLevelNotice, "### Set up session %llu with %##a failed: %#m %@\n", 
    e886cea2:	409c                	lw	a5,0(s1)
    e886cea4:	03200713          	li	a4,50
    e886cea8:	02f74b63          	blt	a4,a5,e886cede <AirPlayReceiverSessionSetup+0xfa>
    e886ceac:	577d                	li	a4,-1
    e886ceae:	40e78f63          	beq	a5,a4,e886d2cc <AirPlayReceiverSessionSetup+0x4e8>
    e886ceb2:	4872                	lw	a6,28(sp)
    e886ceb4:	10043703          	ld	a4,256(s0)
    e886ceb8:	88ce                	mv	a7,s3
    e886ceba:	0bc40793          	addi	a5,s0,188
    e886cebe:	0005d697          	auipc	a3,0x5d
    e886cec2:	0e268693          	addi	a3,a3,226 # e88c9fa0 <kAirPlayReceiverServerClass+0x5a8>
    e886cec6:	03200613          	li	a2,50
    e886ceca:	0005e597          	auipc	a1,0x5e
    e886cece:	2f658593          	addi	a1,a1,758 # e88cb1c0 <__PRETTY_FUNCTION__.13612>
    e886ced2:	00068517          	auipc	a0,0x68
    e886ced6:	38e50513          	addi	a0,a0,910 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886ceda:	d9ae70ef          	jal	ra,e8854474 <LogPrintF>
		if( me->server->delegate.sessionFailed_f )
    e886cede:	6808                	ld	a0,16(s0)
    e886cee0:	653c                	ld	a5,72(a0)
    e886cee2:	c781                	beqz	a5,e886ceea <AirPlayReceiverSessionSetup+0x106>
			me->server->delegate.sessionFailed_f( me->server, err, me->server->delegate.context );
    e886cee4:	6d10                	ld	a2,24(a0)
    e886cee6:	45f2                	lw	a1,28(sp)
    e886cee8:	9782                	jalr	a5
		AirPlayReceiverSessionTearDown( me, inRequestParams, err, NULL );
    e886ceea:	4672                	lw	a2,28(sp)
    e886ceec:	4681                	li	a3,0
    e886ceee:	85ce                	mv	a1,s3
    e886cef0:	8522                	mv	a0,s0
    e886cef2:	c63ff0ef          	jal	ra,e886cb54 <AirPlayReceiverSessionTearDown>
    e886cef6:	a655                	j	e886d29a <AirPlayReceiverSessionSetup+0x4b6>
	if( !me->controlSetup )
    e886cef8:	41c44783          	lbu	a5,1052(s0)
    e886cefc:	14079b63          	bnez	a5,e886d052 <AirPlayReceiverSessionSetup+0x26e>
	inSession->timingPortRemote = (int) CFDictionaryGetInt64( inRequestParams, CFSTR( kAirPlayKey_Port_Timing ), NULL );
    e886cf00:	4601                	li	a2,0
    e886cf02:	00031597          	auipc	a1,0x31
    e886cf06:	0ce58593          	addi	a1,a1,206 # e889dfd0 <icmp6_param_problem+0xf62>
    e886cf0a:	854e                	mv	a0,s3
    e886cf0c:	f64df0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886cf10:	2501                	sext.w	a0,a0
	if( inSession->timingPortRemote <= 0 ) inSession->timingPortRemote = kAirPlayFixedPort_TimeSyncLegacy;
    e886cf12:	6785                	lui	a5,0x1
    e886cf14:	97a2                	add	a5,a5,s0
    e886cf16:	1ca05c63          	blez	a0,e886d0ee <AirPlayReceiverSessionSetup+0x30a>
	inSession->timingPortRemote = (int) CFDictionaryGetInt64( inRequestParams, CFSTR( kAirPlayKey_Port_Timing ), NULL );
    e886cf1a:	7aa7a023          	sw	a0,1952(a5) # 17a0 <memcmp-0xe87fe860>
	err = AirTunesClock_Create( &inSession->airTunesClock );
    e886cf1e:	6a85                	lui	s5,0x1
    e886cf20:	790a8513          	addi	a0,s5,1936 # 1790 <memcmp-0xe87fe870>
    e886cf24:	9522                	add	a0,a0,s0
    e886cf26:	2c2040ef          	jal	ra,e88711e8 <AirTunesClock_Create>
    e886cf2a:	8a2a                	mv	s4,a0
	require_noerr( err, exit );
    e886cf2c:	3e051763          	bnez	a0,e886d31a <AirPlayReceiverSessionSetup+0x536>
	err = _TimingInitialize( inSession );
    e886cf30:	8522                	mv	a0,s0
    e886cf32:	d89fc0ef          	jal	ra,e8869cba <_TimingInitialize>
    e886cf36:	8a2a                	mv	s4,a0
	require_noerr( err, exit );
    e886cf38:	3e051163          	bnez	a0,e886d31a <AirPlayReceiverSessionSetup+0x536>
	CFDictionarySetInt64( inResponseParams, CFSTR( kAirPlayKey_Port_Timing ), inSession->timingPortLocal );
    e886cf3c:	01540b33          	add	s6,s0,s5
    e886cf40:	79cb2603          	lw	a2,1948(s6)
    e886cf44:	00031597          	auipc	a1,0x31
    e886cf48:	08c58593          	addi	a1,a1,140 # e889dfd0 <icmp6_param_problem+0xf62>
    e886cf4c:	854a                	mv	a0,s2
    e886cf4e:	f79df0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( CFDictionaryGetBoolean( inRequestParams, CFSTR( kAirPlayKey_KeepAliveLowPower ), NULL ) )
    e886cf52:	4601                	li	a2,0
    e886cf54:	00031597          	auipc	a1,0x31
    e886cf58:	1fc58593          	addi	a1,a1,508 # e889e150 <icmp6_param_problem+0x10e2>
    e886cf5c:	854e                	mv	a0,s3
    e886cf5e:	f12df0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886cf62:	c149                	beqz	a0,e886cfe4 <AirPlayReceiverSessionSetup+0x200>
	SockAddrCopy( &inSession->peerAddr, &sip );
    e886cf64:	008c                	addi	a1,sp,64
    e886cf66:	0bc40513          	addi	a0,s0,188
    e886cf6a:	b0de90ef          	jal	ra,e8856a76 <SockAddrCopy>
	err = ServerSocketOpen( sip.sa.sa_family, SOCK_DGRAM, IPPROTO_UDP, -kAirPlayPort_KeepAlive,
    e886cf6e:	04114503          	lbu	a0,65(sp)
    e886cf72:	7dca8813          	addi	a6,s5,2012
    e886cf76:	7e0a8713          	addi	a4,s5,2016
    e886cf7a:	9822                	add	a6,a6,s0
    e886cf7c:	57fd                	li	a5,-1
    e886cf7e:	9722                	add	a4,a4,s0
    e886cf80:	4681                	li	a3,0
    e886cf82:	4645                	li	a2,17
    e886cf84:	4589                	li	a1,2
    e886cf86:	807e90ef          	jal	ra,e885678c <ServerSocketOpen>
    e886cf8a:	8a2a                	mv	s4,a0
	require_noerr( err, exit );
    e886cf8c:	34051b63          	bnez	a0,e886d2e2 <AirPlayReceiverSessionSetup+0x4fe>
	SocketSetQoS( inSession->keepAliveSock, kSocketQoS_Background );
    e886cf90:	7dcb2503          	lw	a0,2012(s6)
    e886cf94:	4585                	li	a1,1
    e886cf96:	c96e90ef          	jal	ra,e885642c <SocketSetQoS>
	atr_ulog( kLogLevelTrace, "KeepAlive set up on port %d\n", inSession->keepAlivePortLocal );
    e886cf9a:	409c                	lw	a5,0(s1)
    e886cf9c:	4779                	li	a4,30
    e886cf9e:	02f74863          	blt	a4,a5,e886cfce <AirPlayReceiverSessionSetup+0x1ea>
    e886cfa2:	577d                	li	a4,-1
    e886cfa4:	14e78b63          	beq	a5,a4,e886d0fa <AirPlayReceiverSessionSetup+0x316>
    e886cfa8:	6785                	lui	a5,0x1
    e886cfaa:	97a2                	add	a5,a5,s0
    e886cfac:	7e07a703          	lw	a4,2016(a5) # 17e0 <memcmp-0xe87fe820>
    e886cfb0:	0005d697          	auipc	a3,0x5d
    e886cfb4:	f3068693          	addi	a3,a3,-208 # e88c9ee0 <kAirPlayReceiverServerClass+0x4e8>
    e886cfb8:	4679                	li	a2,30
    e886cfba:	0005e597          	auipc	a1,0x5e
    e886cfbe:	51e58593          	addi	a1,a1,1310 # e88cb4d8 <__PRETTY_FUNCTION__.14236>
    e886cfc2:	00068517          	auipc	a0,0x68
    e886cfc6:	29e50513          	addi	a0,a0,670 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886cfca:	caae70ef          	jal	ra,e8854474 <LogPrintF>
		CFDictionarySetInt64( inResponseParams, CFSTR( kAirPlayKey_Port_KeepAlive ), inSession->keepAlivePortLocal );
    e886cfce:	6785                	lui	a5,0x1
    e886cfd0:	97a2                	add	a5,a5,s0
    e886cfd2:	7e07a603          	lw	a2,2016(a5) # 17e0 <memcmp-0xe87fe820>
    e886cfd6:	00031597          	auipc	a1,0x31
    e886cfda:	1e258593          	addi	a1,a1,482 # e889e1b8 <icmp6_param_problem+0x114a>
    e886cfde:	854a                	mv	a0,s2
    e886cfe0:	ee7df0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inSession->useEvents )
    e886cfe4:	41d44783          	lbu	a5,1053(s0)
    e886cfe8:	c3ad                	beqz	a5,e886d04a <AirPlayReceiverSessionSetup+0x266>
		err = ServerSocketOpen( inSession->peerAddr.sa.sa_family, SOCK_STREAM, IPPROTO_TCP, -kAirPlayPort_RTSPEvents,
    e886cfea:	0bd44503          	lbu	a0,189(s0)
    e886cfee:	44040813          	addi	a6,s0,1088
    e886cff2:	57fd                	li	a5,-1
    e886cff4:	44440713          	addi	a4,s0,1092
    e886cff8:	4681                	li	a3,0
    e886cffa:	4619                	li	a2,6
    e886cffc:	4585                	li	a1,1
    e886cffe:	f8ee90ef          	jal	ra,e885678c <ServerSocketOpen>
    e886d002:	8a2a                	mv	s4,a0
		require_noerr( err, exit );
    e886d004:	30051b63          	bnez	a0,e886d31a <AirPlayReceiverSessionSetup+0x536>
		CFDictionarySetInt64( inResponseParams,  CFSTR( kAirPlayKey_Port_Event ), inSession->eventPort );
    e886d008:	44442603          	lw	a2,1092(s0)
    e886d00c:	00031597          	auipc	a1,0x31
    e886d010:	16458593          	addi	a1,a1,356 # e889e170 <icmp6_param_problem+0x1102>
    e886d014:	854a                	mv	a0,s2
    e886d016:	eb1df0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		atr_ulog( kLogLevelTrace, "Events set up on port %d\n", inSession->eventPort );
    e886d01a:	409c                	lw	a5,0(s1)
    e886d01c:	4779                	li	a4,30
    e886d01e:	02f74663          	blt	a4,a5,e886d04a <AirPlayReceiverSessionSetup+0x266>
    e886d022:	577d                	li	a4,-1
    e886d024:	10e78063          	beq	a5,a4,e886d124 <AirPlayReceiverSessionSetup+0x340>
    e886d028:	44442703          	lw	a4,1092(s0)
    e886d02c:	0005d697          	auipc	a3,0x5d
    e886d030:	efc68693          	addi	a3,a3,-260 # e88c9f28 <kAirPlayReceiverServerClass+0x530>
    e886d034:	4679                	li	a2,30
    e886d036:	0005e597          	auipc	a1,0x5e
    e886d03a:	2a258593          	addi	a1,a1,674 # e88cb2d8 <__PRETTY_FUNCTION__.13825>
    e886d03e:	00068517          	auipc	a0,0x68
    e886d042:	22250513          	addi	a0,a0,546 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d046:	c2ee70ef          	jal	ra,e8854474 <LogPrintF>
	inSession->controlSetup = true;
    e886d04a:	4785                	li	a5,1
    e886d04c:	40f40e23          	sb	a5,1052(s0)
		err = _ControlSetup( me, inRequestParams, responseParams );
    e886d050:	ce02                	sw	zero,28(sp)
	CFDictionaryGetCString( inRequestParams, CFSTR( kAirPlayKey_OSBuildVersion ), clientOSBuildVersion, sizeof( clientOSBuildVersion ), &err );
    e886d052:	0878                	addi	a4,sp,28
    e886d054:	02000693          	li	a3,32
    e886d058:	1010                	addi	a2,sp,32
    e886d05a:	00031597          	auipc	a1,0x31
    e886d05e:	12e58593          	addi	a1,a1,302 # e889e188 <icmp6_param_problem+0x111a>
    e886d062:	854e                	mv	a0,s3
    e886d064:	9d2df0ef          	jal	ra,e884c236 <CFDictionaryGetCString>
	if( !err )
    e886d068:	47f2                	lw	a5,28(sp)
    e886d06a:	eb85                	bnez	a5,e886d09a <AirPlayReceiverSessionSetup+0x2b6>
		strlcpy( me->clientOSBuildVersion, clientOSBuildVersion, sizeof( me->clientOSBuildVersion ) );
    e886d06c:	02000613          	li	a2,32
    e886d070:	100c                	addi	a1,sp,32
    e886d072:	08040513          	addi	a0,s0,128
    e886d076:	a09f20ef          	jal	ra,e885fa7e <strlcpy>
		err = AirPlayGetMinimumClientOSBuildVersion( me->server, minClientOSBuildVersion, sizeof( minClientOSBuildVersion ) );
    e886d07a:	6808                	ld	a0,16(s0)
    e886d07c:	02000613          	li	a2,32
    e886d080:	008c                	addi	a1,sp,64
    e886d082:	fbdf70ef          	jal	ra,e886503e <AirPlayGetMinimumClientOSBuildVersion>
    e886d086:	ce2a                	sw	a0,28(sp)
		if( !err )
    e886d088:	e909                	bnez	a0,e886d09a <AirPlayReceiverSessionSetup+0x2b6>
	printf("_CompareOSBuildVersionStrings*********sscanf %s,%s\n",inVersion1,inVersion2);
    e886d08a:	1010                	addi	a2,sp,32
    e886d08c:	008c                	addi	a1,sp,64
    e886d08e:	0005e517          	auipc	a0,0x5e
    e886d092:	c8250513          	addi	a0,a0,-894 # e88cad10 <kAirPlayReceiverServerClass+0x1318>
    e886d096:	2300f0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	requestStreams = CFDictionaryGetCFArray( inRequestParams, CFSTR( kAirPlayKey_Streams ), &err );
    e886d09a:	8ceda0ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e886d09e:	0005061b          	sext.w	a2,a0
    e886d0a2:	0874                	addi	a3,sp,28
    e886d0a4:	00031597          	auipc	a1,0x31
    e886d0a8:	f4458593          	addi	a1,a1,-188 # e889dfe8 <icmp6_param_problem+0xf7a>
    e886d0ac:	854e                	mv	a0,s3
    e886d0ae:	dfcdf0ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e886d0b2:	8baa                	mv	s7,a0
	streamCount = requestStreams ? CFArrayGetCount( requestStreams ) : 0;
    e886d0b4:	14050863          	beqz	a0,e886d204 <AirPlayReceiverSessionSetup+0x420>
    e886d0b8:	93ada0ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e886d0bc:	8b2a                	mv	s6,a0
	for( streamIndex = 0; streamIndex < streamCount; ++streamIndex )
    e886d0be:	4a01                	li	s4,0
	Boolean						general = false;
    e886d0c0:	4a81                	li	s5,0
		switch( type )
    e886d0c2:	06600c13          	li	s8,102
				atr_ulog( kLogLevelNotice, "### Unsupported stream type: %d\n", type );
    e886d0c6:	00068c97          	auipc	s9,0x68
    e886d0ca:	19ac8c93          	addi	s9,s9,410 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d0ce:	0005ed97          	auipc	s11,0x5e
    e886d0d2:	0f2d8d93          	addi	s11,s11,242 # e88cb1c0 <__PRETTY_FUNCTION__.13612>
	for( streamIndex = 0; streamIndex < streamCount; ++streamIndex )
    e886d0d6:	076a4c63          	blt	s4,s6,e886d14e <AirPlayReceiverSessionSetup+0x36a>
	if( streamCount > 0 || !me->sessionIdleValid )
    e886d0da:	13605663          	blez	s6,e886d206 <AirPlayReceiverSessionSetup+0x422>
		err = _ControlIdleStateTransition( me, responseParams );
    e886d0de:	85ca                	mv	a1,s2
    e886d0e0:	8522                	mv	a0,s0
    e886d0e2:	d3dfc0ef          	jal	ra,e8869e1e <_ControlIdleStateTransition>
    e886d0e6:	ce2a                	sw	a0,28(sp)
		require_noerr( err, exit );
    e886d0e8:	12050363          	beqz	a0,e886d20e <AirPlayReceiverSessionSetup+0x42a>
    e886d0ec:	a4a5                	j	e886d354 <AirPlayReceiverSessionSetup+0x570>
	if( inSession->timingPortRemote <= 0 ) inSession->timingPortRemote = kAirPlayFixedPort_TimeSyncLegacy;
    e886d0ee:	6705                	lui	a4,0x1
    e886d0f0:	7727071b          	addiw	a4,a4,1906
    e886d0f4:	7ae7a023          	sw	a4,1952(a5)
    e886d0f8:	b51d                	j	e886cf1e <AirPlayReceiverSessionSetup+0x13a>
	atr_ulog( kLogLevelTrace, "KeepAlive set up on port %d\n", inSession->keepAlivePortLocal );
    e886d0fa:	45f9                	li	a1,30
    e886d0fc:	00068517          	auipc	a0,0x68
    e886d100:	16450513          	addi	a0,a0,356 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d104:	f6fe60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d108:	ec0503e3          	beqz	a0,e886cfce <AirPlayReceiverSessionSetup+0x1ea>
    e886d10c:	bd71                	j	e886cfa8 <AirPlayReceiverSessionSetup+0x1c4>
		atr_ulog( kLogLevelWarning, "### Keep alive setup failed: %#m\n", err );
    e886d10e:	03c00593          	li	a1,60
    e886d112:	00068517          	auipc	a0,0x68
    e886d116:	14e50513          	addi	a0,a0,334 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d11a:	f59e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d11e:	1e050b63          	beqz	a0,e886d314 <AirPlayReceiverSessionSetup+0x530>
    e886d122:	aac1                	j	e886d2f2 <AirPlayReceiverSessionSetup+0x50e>
		atr_ulog( kLogLevelTrace, "Events set up on port %d\n", inSession->eventPort );
    e886d124:	45f9                	li	a1,30
    e886d126:	00068517          	auipc	a0,0x68
    e886d12a:	13a50513          	addi	a0,a0,314 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d12e:	f45e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d132:	f0050ce3          	beqz	a0,e886d04a <AirPlayReceiverSessionSetup+0x266>
    e886d136:	bdcd                	j	e886d028 <AirPlayReceiverSessionSetup+0x244>
	if( err ) atr_ulog( kLogLevelWarning, "### Control setup failed: %#m\n", err );
    e886d138:	03c00593          	li	a1,60
    e886d13c:	00068517          	auipc	a0,0x68
    e886d140:	12450513          	addi	a0,a0,292 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d144:	f2fe60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d148:	20050563          	beqz	a0,e886d352 <AirPlayReceiverSessionSetup+0x56e>
    e886d14c:	a2d5                	j	e886d330 <AirPlayReceiverSessionSetup+0x54c>
		requestStreamDesc = CFArrayGetCFDictionaryAtIndex( requestStreams, streamIndex, &err );
    e886d14e:	a54da0ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e886d152:	0005061b          	sext.w	a2,a0
    e886d156:	0874                	addi	a3,sp,28
    e886d158:	85d2                	mv	a1,s4
    e886d15a:	855e                	mv	a0,s7
    e886d15c:	f31de0ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
    e886d160:	e02a                	sd	a0,0(sp)
		require_noerr( err, exit );
    e886d162:	4772                	lw	a4,28(sp)
    e886d164:	1e071863          	bnez	a4,e886d354 <AirPlayReceiverSessionSetup+0x570>
		type = (AirPlayStreamType) CFDictionaryGetInt64( requestStreamDesc, CFSTR( kAirPlayKey_Type ), NULL );
    e886d168:	4601                	li	a2,0
    e886d16a:	00031597          	auipc	a1,0x31
    e886d16e:	eae58593          	addi	a1,a1,-338 # e889e018 <icmp6_param_problem+0xfaa>
    e886d172:	cfedf0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886d176:	0005071b          	sext.w	a4,a0
		switch( type )
    e886d17a:	6782                	ld	a5,0(sp)
    e886d17c:	05870563          	beq	a4,s8,e886d1c6 <AirPlayReceiverSessionSetup+0x3e2>
    e886d180:	02ec6963          	bltu	s8,a4,e886d1b2 <AirPlayReceiverSessionSetup+0x3ce>
    e886d184:	06400693          	li	a3,100
    e886d188:	04d77c63          	bgeu	a4,a3,e886d1e0 <AirPlayReceiverSessionSetup+0x3fc>
				atr_ulog( kLogLevelNotice, "### Unsupported stream type: %d\n", type );
    e886d18c:	409c                	lw	a5,0(s1)
    e886d18e:	03200693          	li	a3,50
    e886d192:	04f6c563          	blt	a3,a5,e886d1dc <AirPlayReceiverSessionSetup+0x3f8>
    e886d196:	56fd                	li	a3,-1
    e886d198:	04d78d63          	beq	a5,a3,e886d1f2 <AirPlayReceiverSessionSetup+0x40e>
    e886d19c:	0005d697          	auipc	a3,0x5d
    e886d1a0:	f8c68693          	addi	a3,a3,-116 # e88ca128 <kAirPlayReceiverServerClass+0x730>
    e886d1a4:	03200613          	li	a2,50
    e886d1a8:	85ee                	mv	a1,s11
    e886d1aa:	8566                	mv	a0,s9
    e886d1ac:	ac8e70ef          	jal	ra,e8854474 <LogPrintF>
    e886d1b0:	a035                	j	e886d1dc <AirPlayReceiverSessionSetup+0x3f8>
		switch( type )
    e886d1b2:	06e00693          	li	a3,110
    e886d1b6:	fcd71be3          	bne	a4,a3,e886d18c <AirPlayReceiverSessionSetup+0x3a8>
				err = _ScreenSetup( me, requestStreamDesc, responseParams );
    e886d1ba:	864a                	mv	a2,s2
    e886d1bc:	85be                	mv	a1,a5
    e886d1be:	8522                	mv	a0,s0
    e886d1c0:	f16fd0ef          	jal	ra,e886a8d6 <_ScreenSetup>
    e886d1c4:	a025                	j	e886d1ec <AirPlayReceiverSessionSetup+0x408>
				err = _GeneralAudioSetup( me, type, requestStreamDesc, responseParams );
    e886d1c6:	86ca                	mv	a3,s2
    e886d1c8:	863e                	mv	a2,a5
    e886d1ca:	06600593          	li	a1,102
    e886d1ce:	8522                	mv	a0,s0
    e886d1d0:	80efe0ef          	jal	ra,e886b1de <_GeneralAudioSetup>
    e886d1d4:	ce2a                	sw	a0,28(sp)
				require_noerr( err, exit );
    e886d1d6:	16051f63          	bnez	a0,e886d354 <AirPlayReceiverSessionSetup+0x570>
				general = true;
    e886d1da:	4a85                	li	s5,1
	for( streamIndex = 0; streamIndex < streamCount; ++streamIndex )
    e886d1dc:	2a05                	addiw	s4,s4,1
    e886d1de:	bde5                	j	e886d0d6 <AirPlayReceiverSessionSetup+0x2f2>
				err = _MainAltAudioSetup( me, type, requestStreamDesc, responseParams );
    e886d1e0:	86ca                	mv	a3,s2
    e886d1e2:	863e                	mv	a2,a5
    e886d1e4:	85ba                	mv	a1,a4
    e886d1e6:	8522                	mv	a0,s0
    e886d1e8:	8f9fd0ef          	jal	ra,e886aae0 <_MainAltAudioSetup>
				err = _ScreenSetup( me, requestStreamDesc, responseParams );
    e886d1ec:	ce2a                	sw	a0,28(sp)
				require_noerr( err, exit );
    e886d1ee:	d57d                	beqz	a0,e886d1dc <AirPlayReceiverSessionSetup+0x3f8>
    e886d1f0:	a295                	j	e886d354 <AirPlayReceiverSessionSetup+0x570>
				atr_ulog( kLogLevelNotice, "### Unsupported stream type: %d\n", type );
    e886d1f2:	03200593          	li	a1,50
    e886d1f6:	8566                	mv	a0,s9
    e886d1f8:	e03a                	sd	a4,0(sp)
    e886d1fa:	e79e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d1fe:	6702                	ld	a4,0(sp)
    e886d200:	dd71                	beqz	a0,e886d1dc <AirPlayReceiverSessionSetup+0x3f8>
    e886d202:	bf69                	j	e886d19c <AirPlayReceiverSessionSetup+0x3b8>
	Boolean						general = false;
    e886d204:	4a81                	li	s5,0
	if( streamCount > 0 || !me->sessionIdleValid )
    e886d206:	44944783          	lbu	a5,1097(s0)
    e886d20a:	ec078ae3          	beqz	a5,e886d0de <AirPlayReceiverSessionSetup+0x2fa>
	err = AirPlayReceiverSessionPlatformControl( me, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SetUpStreams ), NULL, 
    e886d20e:	4781                	li	a5,0
    e886d210:	874e                	mv	a4,s3
    e886d212:	4681                	li	a3,0
    e886d214:	00031617          	auipc	a2,0x31
    e886d218:	f8c60613          	addi	a2,a2,-116 # e889e1a0 <icmp6_param_problem+0x1132>
    e886d21c:	4585                	li	a1,1
    e886d21e:	8522                	mv	a0,s0
    e886d220:	965f60ef          	jal	ra,e8863b84 <AirPlayReceiverSessionPlatformControl>
    e886d224:	ce2a                	sw	a0,28(sp)
	require_noerr( err, exit );
    e886d226:	12051763          	bnez	a0,e886d354 <AirPlayReceiverSessionSetup+0x570>
	if( general )
    e886d22a:	060a8163          	beqz	s5,e886d28c <AirPlayReceiverSessionSetup+0x4a8>
	inSession->audioLatencyOffset = inSession->minLatency + gAirTunesRelativeTimeOffset;
    e886d22e:	6685                	lui	a3,0x1
    e886d230:	00077797          	auipc	a5,0x77
    e886d234:	ba878793          	addi	a5,a5,-1112 # e88e3dd8 <gAirTunesRelativeTimeOffset>
    e886d238:	96a2                	add	a3,a3,s0
    e886d23a:	7846a683          	lw	a3,1924(a3) # 1784 <memcmp-0xe87fe87c>
    e886d23e:	4390                	lw	a2,0(a5)
    e886d240:	6709                	lui	a4,0x2
    e886d242:	9722                	add	a4,a4,s0
    e886d244:	9eb1                	addw	a3,a3,a2
    e886d246:	88d72c23          	sw	a3,-1896(a4) # 1898 <memcmp-0xe87fe768>
	atr_ulog( kLogLevelVerbose, "Audio Latency Offset %u, Sender %d, Relative %d\n",
    e886d24a:	4098                	lw	a4,0(s1)
    e886d24c:	46d1                	li	a3,20
    e886d24e:	84be                	mv	s1,a5
    e886d250:	02e6ce63          	blt	a3,a4,e886d28c <AirPlayReceiverSessionSetup+0x4a8>
    e886d254:	57fd                	li	a5,-1
    e886d256:	06f70263          	beq	a4,a5,e886d2ba <AirPlayReceiverSessionSetup+0x4d6>
    e886d25a:	6785                	lui	a5,0x1
    e886d25c:	6709                	lui	a4,0x2
    e886d25e:	97a2                	add	a5,a5,s0
    e886d260:	9722                	add	a4,a4,s0
    e886d262:	0004a803          	lw	a6,0(s1)
    e886d266:	7847a783          	lw	a5,1924(a5) # 1784 <memcmp-0xe87fe87c>
    e886d26a:	89872703          	lw	a4,-1896(a4) # 1898 <memcmp-0xe87fe768>
    e886d26e:	0005d697          	auipc	a3,0x5d
    e886d272:	cfa68693          	addi	a3,a3,-774 # e88c9f68 <kAirPlayReceiverServerClass+0x570>
    e886d276:	4651                	li	a2,20
    e886d278:	0005e597          	auipc	a1,0x5e
    e886d27c:	17058593          	addi	a1,a1,368 # e88cb3e8 <__PRETTY_FUNCTION__.14068>
    e886d280:	00068517          	auipc	a0,0x68
    e886d284:	fe050513          	addi	a0,a0,-32 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d288:	9ece70ef          	jal	ra,e8854474 <LogPrintF>
	*outResponseParams = responseParams;
    e886d28c:	012d3023          	sd	s2,0(s10)
	err = kNoErr;
    e886d290:	ce02                	sw	zero,28(sp)
	gAirTunes = me;
    e886d292:	00077797          	auipc	a5,0x77
    e886d296:	b287bf23          	sd	s0,-1218(a5) # e88e3dd0 <gAirTunes>
}
    e886d29a:	60ae                	ld	ra,200(sp)
    e886d29c:	640e                	ld	s0,192(sp)
	return( err );
    e886d29e:	4572                	lw	a0,28(sp)
}
    e886d2a0:	74ea                	ld	s1,184(sp)
    e886d2a2:	794a                	ld	s2,176(sp)
    e886d2a4:	79aa                	ld	s3,168(sp)
    e886d2a6:	7a0a                	ld	s4,160(sp)
    e886d2a8:	6aea                	ld	s5,152(sp)
    e886d2aa:	6b4a                	ld	s6,144(sp)
    e886d2ac:	6baa                	ld	s7,136(sp)
    e886d2ae:	6c0a                	ld	s8,128(sp)
    e886d2b0:	7ce6                	ld	s9,120(sp)
    e886d2b2:	7d46                	ld	s10,112(sp)
    e886d2b4:	7da6                	ld	s11,104(sp)
    e886d2b6:	6169                	addi	sp,sp,208
    e886d2b8:	8082                	ret
	atr_ulog( kLogLevelVerbose, "Audio Latency Offset %u, Sender %d, Relative %d\n",
    e886d2ba:	45d1                	li	a1,20
    e886d2bc:	00068517          	auipc	a0,0x68
    e886d2c0:	fa450513          	addi	a0,a0,-92 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d2c4:	dafe60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d2c8:	d171                	beqz	a0,e886d28c <AirPlayReceiverSessionSetup+0x4a8>
    e886d2ca:	bf41                	j	e886d25a <AirPlayReceiverSessionSetup+0x476>
		atr_ulog( kLogLevelNotice, "### Set up session %llu with %##a failed: %#m %@\n", 
    e886d2cc:	03200593          	li	a1,50
    e886d2d0:	00068517          	auipc	a0,0x68
    e886d2d4:	f9050513          	addi	a0,a0,-112 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d2d8:	d9be60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d2dc:	c00501e3          	beqz	a0,e886cede <AirPlayReceiverSessionSetup+0xfa>
    e886d2e0:	bec9                	j	e886ceb2 <AirPlayReceiverSessionSetup+0xce>
		atr_ulog( kLogLevelWarning, "### Keep alive setup failed: %#m\n", err );
    e886d2e2:	409c                	lw	a5,0(s1)
    e886d2e4:	03c00713          	li	a4,60
    e886d2e8:	02f74663          	blt	a4,a5,e886d314 <AirPlayReceiverSessionSetup+0x530>
    e886d2ec:	577d                	li	a4,-1
    e886d2ee:	e2e780e3          	beq	a5,a4,e886d10e <AirPlayReceiverSessionSetup+0x32a>
    e886d2f2:	8752                	mv	a4,s4
    e886d2f4:	0005d697          	auipc	a3,0x5d
    e886d2f8:	c0c68693          	addi	a3,a3,-1012 # e88c9f00 <kAirPlayReceiverServerClass+0x508>
    e886d2fc:	03c00613          	li	a2,60
    e886d300:	0005e597          	auipc	a1,0x5e
    e886d304:	1d858593          	addi	a1,a1,472 # e88cb4d8 <__PRETTY_FUNCTION__.14236>
    e886d308:	00068517          	auipc	a0,0x68
    e886d30c:	f5850513          	addi	a0,a0,-168 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d310:	964e70ef          	jal	ra,e8854474 <LogPrintF>
		_IdleStateKeepAliveFinalize( inSession );
    e886d314:	8522                	mv	a0,s0
    e886d316:	916fd0ef          	jal	ra,e886a42c <_IdleStateKeepAliveFinalize>
	if( err ) _ControlTearDown( inSession );
    e886d31a:	8522                	mv	a0,s0
    e886d31c:	b9efd0ef          	jal	ra,e886a6ba <_ControlTearDown>
	if( err ) atr_ulog( kLogLevelWarning, "### Control setup failed: %#m\n", err );
    e886d320:	409c                	lw	a5,0(s1)
    e886d322:	03c00713          	li	a4,60
    e886d326:	02f74663          	blt	a4,a5,e886d352 <AirPlayReceiverSessionSetup+0x56e>
    e886d32a:	577d                	li	a4,-1
    e886d32c:	e0e786e3          	beq	a5,a4,e886d138 <AirPlayReceiverSessionSetup+0x354>
    e886d330:	8752                	mv	a4,s4
    e886d332:	0005d697          	auipc	a3,0x5d
    e886d336:	c1668693          	addi	a3,a3,-1002 # e88c9f48 <kAirPlayReceiverServerClass+0x550>
    e886d33a:	03c00613          	li	a2,60
    e886d33e:	0005e597          	auipc	a1,0x5e
    e886d342:	f9a58593          	addi	a1,a1,-102 # e88cb2d8 <__PRETTY_FUNCTION__.13825>
    e886d346:	00068517          	auipc	a0,0x68
    e886d34a:	f1a50513          	addi	a0,a0,-230 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d34e:	926e70ef          	jal	ra,e8854474 <LogPrintF>
		err = _ControlSetup( me, inRequestParams, responseParams );
    e886d352:	ce52                	sw	s4,28(sp)
	CFReleaseNullSafe( responseParams );
    e886d354:	854a                	mv	a0,s2
    e886d356:	df5d90ef          	jal	ra,e884714a <CFRelease>
	if( err )
    e886d35a:	47f2                	lw	a5,28(sp)
    e886d35c:	df9d                	beqz	a5,e886d29a <AirPlayReceiverSessionSetup+0x4b6>
    e886d35e:	b691                	j	e886cea2 <AirPlayReceiverSessionSetup+0xbe>

00000000e886d360 <AirPlayReceiverSessionStart>:
{
    e886d360:	7171                	addi	sp,sp,-176
    e886d362:	f122                	sd	s0,160(sp)
    e886d364:	e94a                	sd	s2,144(sp)
    e886d366:	842a                	mv	s0,a0
    e886d368:	f506                	sd	ra,168(sp)
    e886d36a:	ed26                	sd	s1,152(sp)
    e886d36c:	e54e                	sd	s3,136(sp)
    e886d36e:	e152                	sd	s4,128(sp)
    e886d370:	892e                	mv	s2,a1
	inSession->playTicks = UpTicks();
    e886d372:	e53f30ef          	jal	ra,e88611c4 <UpTicks>
    e886d376:	10a43c23          	sd	a0,280(s0)
	if( IsValidSocket( inSession->eventSock ) )
    e886d37a:	44042783          	lw	a5,1088(s0)
    e886d37e:	1607d563          	bgez	a5,e886d4e8 <AirPlayReceiverSessionStart+0x188>
	if( ( ctx->type == kAirPlayStreamType_MainHighAudio ) && !ctx->threadPtr )
    e886d382:	46042703          	lw	a4,1120(s0)
    e886d386:	06600793          	li	a5,102
    e886d38a:	02f71f63          	bne	a4,a5,e886d3c8 <AirPlayReceiverSessionStart+0x68>
    e886d38e:	48843783          	ld	a5,1160(s0)
    e886d392:	efbd                	bnez	a5,e886d410 <AirPlayReceiverSessionStart+0xb0>
		pthread_attr_init(&attr);
    e886d394:	18a8                	addi	a0,sp,120
    e886d396:	67c0e0ef          	jal	ra,e887ba12 <pthread_attr_init>
		err = pthread_create( &ctx->thread, &attr, _GeneralAudioThread, inSession );
    e886d39a:	48040993          	addi	s3,s0,1152
		pthread_attr_setpriority(&attr,2);
    e886d39e:	4589                	li	a1,2
    e886d3a0:	18a8                	addi	a0,sp,120
    e886d3a2:	6940e0ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
		err = pthread_create( &ctx->thread, &attr, _GeneralAudioThread, inSession );
    e886d3a6:	86a2                	mv	a3,s0
    e886d3a8:	fffff617          	auipc	a2,0xfffff
    e886d3ac:	0e460613          	addi	a2,a2,228 # e886c48c <_GeneralAudioThread>
    e886d3b0:	18ac                	addi	a1,sp,120
    e886d3b2:	854e                	mv	a0,s3
    e886d3b4:	6900e0ef          	jal	ra,e887ba44 <pthread_create>
    e886d3b8:	84aa                	mv	s1,a0
		pthread_attr_destroy(&attr);
    e886d3ba:	18a8                	addi	a0,sp,120
    e886d3bc:	66a0e0ef          	jal	ra,e887ba26 <pthread_attr_destroy>
		require_noerr( err, exit );
    e886d3c0:	12049a63          	bnez	s1,e886d4f4 <AirPlayReceiverSessionStart+0x194>
		ctx->threadPtr = &ctx->thread;
    e886d3c4:	49343423          	sd	s3,1160(s0)
	if( ( ctx->type == kAirPlayStreamType_MainAudio ) && !ctx->threadPtr )
    e886d3c8:	46042703          	lw	a4,1120(s0)
    e886d3cc:	06400793          	li	a5,100
    e886d3d0:	04f71063          	bne	a4,a5,e886d410 <AirPlayReceiverSessionStart+0xb0>
    e886d3d4:	48843783          	ld	a5,1160(s0)
    e886d3d8:	ef85                	bnez	a5,e886d410 <AirPlayReceiverSessionStart+0xb0>
		pthread_attr_init(&attr);
    e886d3da:	18a8                	addi	a0,sp,120
    e886d3dc:	6360e0ef          	jal	ra,e887ba12 <pthread_attr_init>
		err = pthread_create( &ctx->thread, &attr, _MainAltAudioThread, ctx );
    e886d3e0:	48040993          	addi	s3,s0,1152
		pthread_attr_setpriority(&attr,2);
    e886d3e4:	4589                	li	a1,2
    e886d3e6:	18a8                	addi	a0,sp,120
    e886d3e8:	64e0e0ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
		err = pthread_create( &ctx->thread, &attr, _MainAltAudioThread, ctx );
    e886d3ec:	45840693          	addi	a3,s0,1112
    e886d3f0:	ffffb617          	auipc	a2,0xffffb
    e886d3f4:	ca060613          	addi	a2,a2,-864 # e8868090 <_MainAltAudioThread>
    e886d3f8:	18ac                	addi	a1,sp,120
    e886d3fa:	854e                	mv	a0,s3
    e886d3fc:	6480e0ef          	jal	ra,e887ba44 <pthread_create>
    e886d400:	84aa                	mv	s1,a0
		pthread_attr_destroy(&attr);
    e886d402:	18a8                	addi	a0,sp,120
    e886d404:	6220e0ef          	jal	ra,e887ba26 <pthread_attr_destroy>
		require_noerr( err, exit );
    e886d408:	0e049663          	bnez	s1,e886d4f4 <AirPlayReceiverSessionStart+0x194>
		ctx->threadPtr = &ctx->thread;
    e886d40c:	49343423          	sd	s3,1160(s0)
	if( ( ctx->type == kAirPlayStreamType_AltAudio ) && !ctx->threadPtr )
    e886d410:	6485                	lui	s1,0x1
    e886d412:	009409b3          	add	s3,s0,s1
    e886d416:	bd89a703          	lw	a4,-1064(s3)
    e886d41a:	06500793          	li	a5,101
    e886d41e:	04f71063          	bne	a4,a5,e886d45e <AirPlayReceiverSessionStart+0xfe>
    e886d422:	c009b783          	ld	a5,-1024(s3)
    e886d426:	ef85                	bnez	a5,e886d45e <AirPlayReceiverSessionStart+0xfe>
		pthread_attr_init(&attr);
    e886d428:	18a8                	addi	a0,sp,120
    e886d42a:	5e80e0ef          	jal	ra,e887ba12 <pthread_attr_init>
		pthread_attr_setpriority(&attr,2);
    e886d42e:	4589                	li	a1,2
    e886d430:	18a8                	addi	a0,sp,120
    e886d432:	6040e0ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
		err = pthread_create( &ctx->thread, &attr, _MainAltAudioThread, ctx );
    e886d436:	bd048693          	addi	a3,s1,-1072 # bd0 <memcmp-0xe87ff430>
    e886d43a:	96a2                	add	a3,a3,s0
    e886d43c:	02868a13          	addi	s4,a3,40
    e886d440:	ffffb617          	auipc	a2,0xffffb
    e886d444:	c5060613          	addi	a2,a2,-944 # e8868090 <_MainAltAudioThread>
    e886d448:	18ac                	addi	a1,sp,120
    e886d44a:	8552                	mv	a0,s4
    e886d44c:	5f80e0ef          	jal	ra,e887ba44 <pthread_create>
    e886d450:	84aa                	mv	s1,a0
		pthread_attr_destroy(&attr);
    e886d452:	18a8                	addi	a0,sp,120
    e886d454:	5d20e0ef          	jal	ra,e887ba26 <pthread_attr_destroy>
		require_noerr( err, exit );
    e886d458:	ecd1                	bnez	s1,e886d4f4 <AirPlayReceiverSessionStart+0x194>
		ctx->threadPtr = &ctx->thread;
    e886d45a:	c149b023          	sd	s4,-1024(s3)
	if( IsValidSocket( inSession->screenSock ) )
    e886d45e:	6789                	lui	a5,0x2
    e886d460:	97a2                	add	a5,a5,s0
    e886d462:	9487a783          	lw	a5,-1720(a5) # 1948 <memcmp-0xe87fe6b8>
    e886d466:	2007de63          	bgez	a5,e886d682 <AirPlayReceiverSessionStart+0x322>
	err = AirPlayReceiverSessionPlatformControl( inSession, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_StartSession ), 
    e886d46a:	4781                	li	a5,0
    e886d46c:	4701                	li	a4,0
    e886d46e:	4681                	li	a3,0
    e886d470:	00031617          	auipc	a2,0x31
    e886d474:	d6060613          	addi	a2,a2,-672 # e889e1d0 <icmp6_param_problem+0x1162>
    e886d478:	4585                	li	a1,1
    e886d47a:	8522                	mv	a0,s0
    e886d47c:	f08f60ef          	jal	ra,e8863b84 <AirPlayReceiverSessionPlatformControl>
    e886d480:	84aa                	mv	s1,a0
	require_noerr_quiet( err, exit );
    e886d482:	e92d                	bnez	a0,e886d4f4 <AirPlayReceiverSessionStart+0x194>
	inSession->sessionStarted = true;
    e886d484:	4785                	li	a5,1
    e886d486:	40f40f23          	sb	a5,1054(s0)
	if( inSession->delegate.started_f )
    e886d48a:	603c                	ld	a5,64(s0)
    e886d48c:	c781                	beqz	a5,e886d494 <AirPlayReceiverSessionStart+0x134>
		inSession->delegate.started_f( inSession, inSession->delegate.context );
    e886d48e:	740c                	ld	a1,40(s0)
    e886d490:	8522                	mv	a0,s0
    e886d492:	9782                	jalr	a5
	inSession->source.lastIdleLogTicks = inSession->playTicks;
    e886d494:	11843783          	ld	a5,280(s0)
	inSession->periodicTimer = source = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, inSession->queue );
    e886d498:	6414                	ld	a3,8(s0)
    e886d49a:	4601                	li	a2,0
	inSession->source.lastIdleLogTicks = inSession->playTicks;
    e886d49c:	28f43423          	sd	a5,648(s0)
	inSession->periodicTimer = source = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, inSession->queue );
    e886d4a0:	4581                	li	a1,0
    e886d4a2:	4509                	li	a0,2
    e886d4a4:	90be10ef          	jal	ra,e884edae <dispatch_source_create>
    e886d4a8:	f848                	sd	a0,176(s0)
    e886d4aa:	89aa                	mv	s3,a0
	require_action( source, exit, err = kUnknownErr );
    e886d4ac:	1e050263          	beqz	a0,e886d690 <AirPlayReceiverSessionStart+0x330>
	dispatch_set_context( source, inSession );
    e886d4b0:	85a2                	mv	a1,s0
    e886d4b2:	f6ae10ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_timer( source, dispatch_time( DISPATCH_TIME_NOW, nanos ), nanos, nanos );
    e886d4b6:	0ee6ba37          	lui	s4,0xee6b
	dispatch_source_set_event_handler_f( source, _PerformPeriodTasks );
    e886d4ba:	854e                	mv	a0,s3
    e886d4bc:	ffffb597          	auipc	a1,0xffffb
    e886d4c0:	7f058593          	addi	a1,a1,2032 # e8868cac <_PerformPeriodTasks>
    e886d4c4:	9a7e10ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_timer( source, dispatch_time( DISPATCH_TIME_NOW, nanos ), nanos, nanos );
    e886d4c8:	280a0593          	addi	a1,s4,640 # ee6b280 <memcmp-0xd9994d80>
    e886d4cc:	4501                	li	a0,0
    e886d4ce:	a87e10ef          	jal	ra,e884ef54 <dispatch_time>
    e886d4d2:	85aa                	mv	a1,a0
    e886d4d4:	280a0693          	addi	a3,s4,640
    e886d4d8:	854e                	mv	a0,s3
    e886d4da:	8636                	mv	a2,a3
    e886d4dc:	eece20ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
	dispatch_resume( source );
    e886d4e0:	854e                	mv	a0,s3
    e886d4e2:	e14e20ef          	jal	ra,e884faf6 <dispatch_resume>
    e886d4e6:	a039                	j	e886d4f4 <AirPlayReceiverSessionStart+0x194>
		err = _ControlStart( inSession );
    e886d4e8:	8522                	mv	a0,s0
    e886d4ea:	b00fc0ef          	jal	ra,e88697ea <_ControlStart>
    e886d4ee:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e886d4f0:	e80509e3          	beqz	a0,e886d382 <AirPlayReceiverSessionStart+0x22>
	inSession->startStatus = inStatus;
    e886d4f4:	0e942423          	sw	s1,232(s0)
	inInfo->recordMs = (uint32_t)( UpTicksToMilliseconds( UpTicks() - inSession->playTicks ) );
    e886d4f8:	ccdf30ef          	jal	ra,e88611c4 <UpTicks>
    e886d4fc:	11843783          	ld	a5,280(s0)
    e886d500:	8d1d                	sub	a0,a0,a5
    e886d502:	d27f30ef          	jal	ra,e8861228 <UpTicksToMilliseconds>
    e886d506:	02a92223          	sw	a0,36(s2)
	atr_ulog( kLogLevelNotice, 
    e886d50a:	00068517          	auipc	a0,0x68
    e886d50e:	d5650513          	addi	a0,a0,-682 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d512:	411c                	lw	a5,0(a0)
    e886d514:	03200713          	li	a4,50
    e886d518:	18f74663          	blt	a4,a5,e886d6a4 <AirPlayReceiverSessionStart+0x344>
    e886d51c:	577d                	li	a4,-1
    e886d51e:	16e78d63          	beq	a5,a4,e886d698 <AirPlayReceiverSessionStart+0x338>
    e886d522:	00892683          	lw	a3,8(s2)
    e886d526:	4605                	li	a2,1
    e886d528:	00093703          	ld	a4,0(s2)
    e886d52c:	787c                	ld	a5,240(s0)
    e886d52e:	0bc40813          	addi	a6,s0,188
    e886d532:	0005d897          	auipc	a7,0x5d
    e886d536:	ab688893          	addi	a7,a7,-1354 # e88c9fe8 <kAirPlayReceiverServerClass+0x5f0>
    e886d53a:	04c68b63          	beq	a3,a2,e886d590 <AirPlayReceiverSessionStart+0x230>
    e886d53e:	4609                	li	a2,2
    e886d540:	0005d897          	auipc	a7,0x5d
    e886d544:	ab088893          	addi	a7,a7,-1360 # e88c9ff0 <kAirPlayReceiverServerClass+0x5f8>
    e886d548:	04c68463          	beq	a3,a2,e886d590 <AirPlayReceiverSessionStart+0x230>
    e886d54c:	04000613          	li	a2,64
    e886d550:	0005d897          	auipc	a7,0x5d
    e886d554:	aa888893          	addi	a7,a7,-1368 # e88c9ff8 <kAirPlayReceiverServerClass+0x600>
    e886d558:	02c68c63          	beq	a3,a2,e886d590 <AirPlayReceiverSessionStart+0x230>
    e886d55c:	4621                	li	a2,8
    e886d55e:	0005d897          	auipc	a7,0x5d
    e886d562:	aa288893          	addi	a7,a7,-1374 # e88ca000 <kAirPlayReceiverServerClass+0x608>
    e886d566:	02c68563          	beq	a3,a2,e886d590 <AirPlayReceiverSessionStart+0x230>
    e886d56a:	4641                	li	a2,16
    e886d56c:	0005d897          	auipc	a7,0x5d
    e886d570:	a6c88893          	addi	a7,a7,-1428 # e88c9fd8 <kAirPlayReceiverServerClass+0x5e0>
    e886d574:	00c68e63          	beq	a3,a2,e886d590 <AirPlayReceiverSessionStart+0x230>
    e886d578:	02000613          	li	a2,32
    e886d57c:	0005d897          	auipc	a7,0x5d
    e886d580:	a6488893          	addi	a7,a7,-1436 # e88c9fe0 <kAirPlayReceiverServerClass+0x5e8>
    e886d584:	00c68663          	beq	a3,a2,e886d590 <AirPlayReceiverSessionStart+0x230>
    e886d588:	00038897          	auipc	a7,0x38
    e886d58c:	09888893          	addi	a7,a7,152 # e88a5620 <end.8789+0x1f78>
    e886d590:	12042683          	lw	a3,288(s0)
    e886d594:	4585                	li	a1,1
    e886d596:	0005d617          	auipc	a2,0x5d
    e886d59a:	a8260613          	addi	a2,a2,-1406 # e88ca018 <kAirPlayReceiverServerClass+0x620>
    e886d59e:	04b68363          	beq	a3,a1,e886d5e4 <AirPlayReceiverSessionStart+0x284>
    e886d5a2:	4591                	li	a1,4
    e886d5a4:	0005d617          	auipc	a2,0x5d
    e886d5a8:	a7c60613          	addi	a2,a2,-1412 # e88ca020 <kAirPlayReceiverServerClass+0x628>
    e886d5ac:	02b68c63          	beq	a3,a1,e886d5e4 <AirPlayReceiverSessionStart+0x284>
    e886d5b0:	45a1                	li	a1,8
    e886d5b2:	0005d617          	auipc	a2,0x5d
    e886d5b6:	a7660613          	addi	a2,a2,-1418 # e88ca028 <kAirPlayReceiverServerClass+0x630>
    e886d5ba:	02b68563          	beq	a3,a1,e886d5e4 <AirPlayReceiverSessionStart+0x284>
    e886d5be:	45c1                	li	a1,16
    e886d5c0:	0005d617          	auipc	a2,0x5d
    e886d5c4:	a4860613          	addi	a2,a2,-1464 # e88ca008 <kAirPlayReceiverServerClass+0x610>
    e886d5c8:	00b68e63          	beq	a3,a1,e886d5e4 <AirPlayReceiverSessionStart+0x284>
    e886d5cc:	02000593          	li	a1,32
    e886d5d0:	0005d617          	auipc	a2,0x5d
    e886d5d4:	a4060613          	addi	a2,a2,-1472 # e88ca010 <kAirPlayReceiverServerClass+0x618>
    e886d5d8:	00b68663          	beq	a3,a1,e886d5e4 <AirPlayReceiverSessionStart+0x284>
    e886d5dc:	00038617          	auipc	a2,0x38
    e886d5e0:	04460613          	addi	a2,a2,68 # e88a5620 <end.8789+0x1f78>
    e886d5e4:	6685                	lui	a3,0x1
    e886d5e6:	96a2                	add	a3,a3,s0
    e886d5e8:	7886a583          	lw	a1,1928(a3) # 1788 <memcmp-0xe87fe878>
    e886d5ec:	6695                	lui	a3,0x5
    e886d5ee:	3e800513          	li	a0,1000
    e886d5f2:	6226869b          	addiw	a3,a3,1570
    e886d5f6:	24b5168b          	mulaw	a3,a0,a1
    e886d5fa:	65ad                	lui	a1,0xb
    e886d5fc:	c445859b          	addiw	a1,a1,-956
    e886d600:	00c92e03          	lw	t3,12(s2)
    e886d604:	e5e94e8b          	lwd	t4,t5,(s2),2,3
    e886d608:	01892f83          	lw	t6,24(s2)
    e886d60c:	01c92283          	lw	t0,28(s2)
    e886d610:	0005d517          	auipc	a0,0x5d
    e886d614:	a2050513          	addi	a0,a0,-1504 # e88ca030 <kAirPlayReceiverServerClass+0x638>
    e886d618:	02b6d6bb          	divuw	a3,a3,a1
    e886d61c:	41044583          	lbu	a1,1040(s0)
    e886d620:	e589                	bnez	a1,e886d62a <AirPlayReceiverSessionStart+0x2ca>
    e886d622:	00054517          	auipc	a0,0x54
    e886d626:	c4e50513          	addi	a0,a0,-946 # e88c1270 <kHTTPServerClass+0x90>
    e886d62a:	83ae                	mv	t2,a1
    e886d62c:	02092403          	lw	s0,32(s2)
    e886d630:	0005d317          	auipc	t1,0x5d
    e886d634:	a0830313          	addi	t1,t1,-1528 # e88ca038 <kAirPlayReceiverServerClass+0x640>
    e886d638:	e589                	bnez	a1,e886d642 <AirPlayReceiverSessionStart+0x2e2>
    e886d63a:	00054317          	auipc	t1,0x54
    e886d63e:	c3630313          	addi	t1,t1,-970 # e88c1270 <kHTTPServerClass+0x90>
    e886d642:	02492583          	lw	a1,36(s2)
    e886d646:	fc2a                	sd	a0,56(sp)
    e886d648:	e436                	sd	a3,8(sp)
    e886d64a:	ecae                	sd	a1,88(sp)
    e886d64c:	e032                	sd	a2,0(sp)
    e886d64e:	f0a6                	sd	s1,96(sp)
    e886d650:	e89a                	sd	t1,80(sp)
    e886d652:	e4a2                	sd	s0,72(sp)
    e886d654:	e09e                	sd	t2,64(sp)
    e886d656:	f816                	sd	t0,48(sp)
    e886d658:	f47e                	sd	t6,40(sp)
    e886d65a:	f07a                	sd	t5,32(sp)
    e886d65c:	ec76                	sd	t4,24(sp)
    e886d65e:	e872                	sd	t3,16(sp)
    e886d660:	0005d697          	auipc	a3,0x5d
    e886d664:	9e068693          	addi	a3,a3,-1568 # e88ca040 <kAirPlayReceiverServerClass+0x648>
    e886d668:	03200613          	li	a2,50
    e886d66c:	0005e597          	auipc	a1,0x5e
    e886d670:	00458593          	addi	a1,a1,4 # e88cb670 <__PRETTY_FUNCTION__.14552>
    e886d674:	00068517          	auipc	a0,0x68
    e886d678:	bec50513          	addi	a0,a0,-1044 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d67c:	df9e60ef          	jal	ra,e8854474 <LogPrintF>
    e886d680:	a015                	j	e886d6a4 <AirPlayReceiverSessionStart+0x344>
		err = _ScreenStart( inSession );
    e886d682:	8522                	mv	a0,s0
    e886d684:	8d1fa0ef          	jal	ra,e8867f54 <_ScreenStart>
    e886d688:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e886d68a:	de0500e3          	beqz	a0,e886d46a <AirPlayReceiverSessionStart+0x10a>
    e886d68e:	b59d                	j	e886d4f4 <AirPlayReceiverSessionStart+0x194>
	require_action( source, exit, err = kUnknownErr );
    e886d690:	74f9                	lui	s1,0xffffe
    e886d692:	5d448493          	addi	s1,s1,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e886d696:	bdb9                	j	e886d4f4 <AirPlayReceiverSessionStart+0x194>
	atr_ulog( kLogLevelNotice, 
    e886d698:	03200593          	li	a1,50
    e886d69c:	9d7e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d6a0:	e80511e3          	bnez	a0,e886d522 <AirPlayReceiverSessionStart+0x1c2>
}
    e886d6a4:	70aa                	ld	ra,168(sp)
    e886d6a6:	740a                	ld	s0,160(sp)
    e886d6a8:	8526                	mv	a0,s1
    e886d6aa:	694a                	ld	s2,144(sp)
    e886d6ac:	64ea                	ld	s1,152(sp)
    e886d6ae:	69aa                	ld	s3,136(sp)
    e886d6b0:	6a0a                	ld	s4,128(sp)
    e886d6b2:	614d                	addi	sp,sp,176
    e886d6b4:	8082                	ret

00000000e886d6b6 <AirPlayReceiverSessionFlushAudio>:
{
    e886d6b6:	7139                	addi	sp,sp,-64
    e886d6b8:	e422                	sd	s0,8(sp)
	require_action_quiet( inSession->busyListSentinel, exit, atr_ulog( kLogLevelNotice, "### Not playing audio - nothing to flush\n" ) );
    e886d6ba:	6709                	lui	a4,0x2
{
    e886d6bc:	842a                	mv	s0,a0
	require_action_quiet( inSession->busyListSentinel, exit, atr_ulog( kLogLevelNotice, "### Not playing audio - nothing to flush\n" ) );
    e886d6be:	9722                	add	a4,a4,s0
{
    e886d6c0:	fc06                	sd	ra,56(sp)
    e886d6c2:	e826                	sd	s1,16(sp)
    e886d6c4:	ec4a                	sd	s2,24(sp)
    e886d6c6:	f04e                	sd	s3,32(sp)
    e886d6c8:	f452                	sd	s4,40(sp)
    e886d6ca:	f856                	sd	s5,48(sp)
	require_action_quiet( inSession->busyListSentinel, exit, atr_ulog( kLogLevelNotice, "### Not playing audio - nothing to flush\n" ) );
    e886d6cc:	85073703          	ld	a4,-1968(a4) # 1850 <memcmp-0xe87fe7b0>
    e886d6d0:	00068517          	auipc	a0,0x68
    e886d6d4:	b9050513          	addi	a0,a0,-1136 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d6d8:	411c                	lw	a5,0(a0)
    e886d6da:	eb21                	bnez	a4,e886d72a <AirPlayReceiverSessionFlushAudio+0x74>
    e886d6dc:	03200713          	li	a4,50
    e886d6e0:	02f74563          	blt	a4,a5,e886d70a <AirPlayReceiverSessionFlushAudio+0x54>
    e886d6e4:	577d                	li	a4,-1
    e886d6e6:	02e78c63          	beq	a5,a4,e886d71e <AirPlayReceiverSessionFlushAudio+0x68>
    e886d6ea:	0005c697          	auipc	a3,0x5c
    e886d6ee:	4de68693          	addi	a3,a3,1246 # e88c9bc8 <kAirPlayReceiverServerClass+0x1d0>
    e886d6f2:	03200613          	li	a2,50
    e886d6f6:	0005e597          	auipc	a1,0x5e
    e886d6fa:	b0a58593          	addi	a1,a1,-1270 # e88cb200 <__PRETTY_FUNCTION__.13692>
    e886d6fe:	00068517          	auipc	a0,0x68
    e886d702:	b6250513          	addi	a0,a0,-1182 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d706:	d6fe60ef          	jal	ra,e8854474 <LogPrintF>
}
    e886d70a:	70e2                	ld	ra,56(sp)
    e886d70c:	6422                	ld	s0,8(sp)
    e886d70e:	64c2                	ld	s1,16(sp)
    e886d710:	6962                	ld	s2,24(sp)
    e886d712:	7982                	ld	s3,32(sp)
    e886d714:	7a22                	ld	s4,40(sp)
    e886d716:	7ac2                	ld	s5,48(sp)
    e886d718:	4501                	li	a0,0
    e886d71a:	6121                	addi	sp,sp,64
    e886d71c:	8082                	ret
	require_action_quiet( inSession->busyListSentinel, exit, atr_ulog( kLogLevelNotice, "### Not playing audio - nothing to flush\n" ) );
    e886d71e:	03200593          	li	a1,50
    e886d722:	951e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d726:	d175                	beqz	a0,e886d70a <AirPlayReceiverSessionFlushAudio+0x54>
    e886d728:	b7c9                	j	e886d6ea <AirPlayReceiverSessionFlushAudio+0x34>
	atr_ulog( kLogLevelVerbose, "Flushing until ts %u seq %u\n", inFlushUntilTS, inFlushUntilSeq );
    e886d72a:	4751                	li	a4,20
    e886d72c:	892e                	mv	s2,a1
    e886d72e:	8ab2                	mv	s5,a2
    e886d730:	89b6                	mv	s3,a3
    e886d732:	8a2a                	mv	s4,a0
    e886d734:	02f74663          	blt	a4,a5,e886d760 <AirPlayReceiverSessionFlushAudio+0xaa>
    e886d738:	577d                	li	a4,-1
    e886d73a:	08e78e63          	beq	a5,a4,e886d7d6 <AirPlayReceiverSessionFlushAudio+0x120>
    e886d73e:	87d6                	mv	a5,s5
    e886d740:	874a                	mv	a4,s2
    e886d742:	0005c697          	auipc	a3,0x5c
    e886d746:	4b668693          	addi	a3,a3,1206 # e88c9bf8 <kAirPlayReceiverServerClass+0x200>
    e886d74a:	4651                	li	a2,20
    e886d74c:	0005e597          	auipc	a1,0x5e
    e886d750:	ab458593          	addi	a1,a1,-1356 # e88cb200 <__PRETTY_FUNCTION__.13692>
    e886d754:	00068517          	auipc	a0,0x68
    e886d758:	b0c50513          	addi	a0,a0,-1268 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d75c:	d19e60ef          	jal	ra,e8854474 <LogPrintF>
	_SessionLock( inSession );
    e886d760:	7448                	ld	a0,168(s0)
    e886d762:	d63fc0ef          	jal	ra,e886a4c4 <_SessionLock.isra.3>
	inSession->flushing				= true;
    e886d766:	4705                	li	a4,1
    e886d768:	6789                	lui	a5,0x2
    e886d76a:	97a2                	add	a5,a5,s0
    e886d76c:	88e78e23          	sb	a4,-1892(a5) # 189c <memcmp-0xe87fe764>
	inSession->flushTimeoutTS		= inFlushUntilTS + ( 3 * ctx->sampleRate ); // 3 seconds.
    e886d770:	5bc42703          	lw	a4,1468(s0)
    e886d774:	468d                	li	a3,3
    e886d776:	864a                	mv	a2,s2
    e886d778:	24e6960b          	mulaw	a2,a3,a4
	ats->rtcpRTDisable				= inSession->redundantAudio;
    e886d77c:	6705                	lui	a4,0x1
    e886d77e:	9722                	add	a4,a4,s0
	inSession->flushUntilTS			= inFlushUntilTS;
    e886d780:	8b27a223          	sw	s2,-1884(a5)
	inSession->lastPlayedValid		= false;
    e886d784:	8a078823          	sb	zero,-1872(a5)
	inSession->flushTimeoutTS		= inFlushUntilTS + ( 3 * ctx->sampleRate ); // 3 seconds.
    e886d788:	8ac7a023          	sw	a2,-1888(a5)
	ats->rtcpRTDisable				= inSession->redundantAudio;
    e886d78c:	34c72703          	lw	a4,844(a4) # 134c <memcmp-0xe87fecb4>
	ats->receiveCount				= 0; // Reset so we don't try to retransmit on the next post-flush packet.
    e886d790:	24042c23          	sw	zero,600(s0)
	ats->rtcpRTDisable				= inSession->redundantAudio;
    e886d794:	38e40c23          	sb	a4,920(s0)
	stop = inSession->busyListSentinel;
    e886d798:	8507b683          	ld	a3,-1968(a5)
	for( curr = stop->next; curr != stop; curr = next )
    e886d79c:	6284                	ld	s1,0(a3)
    e886d79e:	04d49163          	bne	s1,a3,e886d7e0 <AirPlayReceiverSessionFlushAudio+0x12a>
	_RetransmitsAbortAll( inSession, "flush" );
    e886d7a2:	8522                	mv	a0,s0
    e886d7a4:	0005c597          	auipc	a1,0x5c
    e886d7a8:	4ac58593          	addi	a1,a1,1196 # e88c9c50 <kAirPlayReceiverServerClass+0x258>
    e886d7ac:	9dafa0ef          	jal	ra,e8867986 <_RetransmitsAbortAll>
	if( inSession->audioConverter )
    e886d7b0:	6789                	lui	a5,0x2
    e886d7b2:	97a2                	add	a5,a5,s0
    e886d7b4:	8c07b503          	ld	a0,-1856(a5) # 18c0 <memcmp-0xe87fe740>
    e886d7b8:	c119                	beqz	a0,e886d7be <AirPlayReceiverSessionFlushAudio+0x108>
		err = AudioConverterReset( inSession->audioConverter );
    e886d7ba:	8f0f50ef          	jal	ra,e88628aa <AudioConverterReset>
	if( outLastTS ) *outLastTS = inSession->lastPlayedTS;
    e886d7be:	00098863          	beqz	s3,e886d7ce <AirPlayReceiverSessionFlushAudio+0x118>
    e886d7c2:	6789                	lui	a5,0x2
    e886d7c4:	97a2                	add	a5,a5,s0
    e886d7c6:	8b47a783          	lw	a5,-1868(a5) # 18b4 <memcmp-0xe87fe74c>
    e886d7ca:	00f9a023          	sw	a5,0(s3)
	_SessionUnlock( inSession );
    e886d7ce:	7448                	ld	a0,168(s0)
    e886d7d0:	d03fc0ef          	jal	ra,e886a4d2 <_SessionUnlock.isra.4>
	return( kNoErr );
    e886d7d4:	bf1d                	j	e886d70a <AirPlayReceiverSessionFlushAudio+0x54>
	atr_ulog( kLogLevelVerbose, "Flushing until ts %u seq %u\n", inFlushUntilTS, inFlushUntilSeq );
    e886d7d6:	45d1                	li	a1,20
    e886d7d8:	89be60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d7dc:	d151                	beqz	a0,e886d760 <AirPlayReceiverSessionFlushAudio+0xaa>
    e886d7de:	b785                	j	e886d73e <AirPlayReceiverSessionFlushAudio+0x88>
		if( Mod32_LT( curr->rtp->header.ts, inFlushUntilTS ) || Mod16_LT( curr->rtp->header.seq, inFlushUntilSeq ) )
    e886d7e0:	6890                	ld	a2,16(s1)
    e886d7e2:	4258                	lw	a4,4(a2)
    e886d7e4:	4127073b          	subw	a4,a4,s2
    e886d7e8:	00074a63          	bltz	a4,e886d7fc <AirPlayReceiverSessionFlushAudio+0x146>
    e886d7ec:	00265703          	lhu	a4,2(a2)
    e886d7f0:	4157073b          	subw	a4,a4,s5
    e886d7f4:	03071613          	slli	a2,a4,0x30
    e886d7f8:	02065e63          	bgez	a2,e886d834 <AirPlayReceiverSessionFlushAudio+0x17e>
			AirTunesFreeBufferNode( inSession, curr );
    e886d7fc:	f8e4c60b          	ldd	a2,a4,(s1),0,4
    e886d800:	e618                	sd	a4,8(a2)
    e886d802:	6498                	ld	a4,8(s1)
    e886d804:	608c                	ld	a1,0(s1)
    e886d806:	e30c                	sd	a1,0(a4)
    e886d808:	8587b703          	ld	a4,-1960(a5)
    e886d80c:	e098                	sd	a4,0(s1)
    e886d80e:	8607a703          	lw	a4,-1952(a5)
    e886d812:	8497bc23          	sd	s1,-1960(a5)
	for( curr = stop->next; curr != stop; curr = next )
    e886d816:	84b2                	mv	s1,a2
			AirTunesFreeBufferNode( inSession, curr );
    e886d818:	377d                	addiw	a4,a4,-1
    e886d81a:	86e7a023          	sw	a4,-1952(a5)
	for( curr = stop->next; curr != stop; curr = next )
    e886d81e:	b741                	j	e886d79e <AirPlayReceiverSessionFlushAudio+0xe8>
		atr_ulog( kLogLevelInfo, "Packets still present after flush (first ts %u)\n", curr->rtp->header.ts );
    e886d820:	02800593          	li	a1,40
    e886d824:	00068517          	auipc	a0,0x68
    e886d828:	a3c50513          	addi	a0,a0,-1476 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d82c:	847e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886d830:	d92d                	beqz	a0,e886d7a2 <AirPlayReceiverSessionFlushAudio+0xec>
    e886d832:	a811                	j	e886d846 <AirPlayReceiverSessionFlushAudio+0x190>
    e886d834:	000a2783          	lw	a5,0(s4)
    e886d838:	02800713          	li	a4,40
    e886d83c:	f6f743e3          	blt	a4,a5,e886d7a2 <AirPlayReceiverSessionFlushAudio+0xec>
    e886d840:	577d                	li	a4,-1
    e886d842:	fce78fe3          	beq	a5,a4,e886d820 <AirPlayReceiverSessionFlushAudio+0x16a>
    e886d846:	689c                	ld	a5,16(s1)
    e886d848:	0005c697          	auipc	a3,0x5c
    e886d84c:	3d068693          	addi	a3,a3,976 # e88c9c18 <kAirPlayReceiverServerClass+0x220>
    e886d850:	02800613          	li	a2,40
    e886d854:	43d8                	lw	a4,4(a5)
    e886d856:	0005e597          	auipc	a1,0x5e
    e886d85a:	9aa58593          	addi	a1,a1,-1622 # e88cb200 <__PRETTY_FUNCTION__.13692>
    e886d85e:	00068517          	auipc	a0,0x68
    e886d862:	a0250513          	addi	a0,a0,-1534 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d866:	c0fe60ef          	jal	ra,e8854474 <LogPrintF>
    e886d86a:	bf25                	j	e886d7a2 <AirPlayReceiverSessionFlushAudio+0xec>

00000000e886d86c <AirPlayReceiverSessionReadAudio>:
{
    e886d86c:	7115                	addi	sp,sp,-224
    e886d86e:	e9a2                	sd	s0,208(sp)
    e886d870:	e5a6                	sd	s1,200(sp)
    e886d872:	f952                	sd	s4,176(sp)
    e886d874:	f556                	sd	s5,168(sp)
    e886d876:	ed86                	sd	ra,216(sp)
    e886d878:	e1ca                	sd	s2,192(sp)
    e886d87a:	fd4e                	sd	s3,184(sp)
    e886d87c:	f15a                	sd	s6,160(sp)
    e886d87e:	ed5e                	sd	s7,152(sp)
    e886d880:	e962                	sd	s8,144(sp)
    e886d882:	e566                	sd	s9,136(sp)
    e886d884:	e16a                	sd	s10,128(sp)
    e886d886:	fcee                	sd	s11,120(sp)
    e886d888:	8a3e                	mv	s4,a5
	switch( inType )
    e886d88a:	06500793          	li	a5,101
{
    e886d88e:	84b2                	mv	s1,a2
    e886d890:	842a                	mv	s0,a0
    e886d892:	8636                	mv	a2,a3
    e886d894:	8aba                	mv	s5,a4
	switch( inType )
    e886d896:	0cf58be3          	beq	a1,a5,e886e16c <AirPlayReceiverSessionReadAudio+0x900>
    e886d89a:	06600793          	li	a5,102
    e886d89e:	88ae                	mv	a7,a1
    e886d8a0:	02f58363          	beq	a1,a5,e886d8c6 <AirPlayReceiverSessionReadAudio+0x5a>
    e886d8a4:	06400793          	li	a5,100
    e886d8a8:	0ef590e3          	bne	a1,a5,e886e188 <AirPlayReceiverSessionReadAudio+0x91c>
			_UpdateEstimatedRate( &inSession->mainAudioCtx, inSampleTime, inHostTime );
    e886d8ac:	85a6                	mv	a1,s1
    e886d8ae:	45850513          	addi	a0,a0,1112
    e886d8b2:	9bafc0ef          	jal	ra,e8869a6c <_UpdateEstimatedRate>
			err = RTPJitterBufferRead( &inSession->mainAudioCtx.jitterBuffer, inBuffer, inLen );
    e886d8b6:	8652                	mv	a2,s4
    e886d8b8:	85d6                	mv	a1,s5
    e886d8ba:	49840513          	addi	a0,s0,1176
			err = RTPJitterBufferRead( &inSession->altAudioCtx.jitterBuffer, inBuffer, inLen );
    e886d8be:	434030ef          	jal	ra,e8870cf2 <RTPJitterBufferRead>
			require_noerr( err, exit );
    e886d8c2:	0010006f          	j	e886e0c2 <AirPlayReceiverSessionReadAudio+0x856>
    e886d8c6:	e82e                	sd	a1,16(sp)
			_UpdateEstimatedRate( &inSession->mainAudioCtx, inSampleTime, inHostTime );
    e886d8c8:	45850513          	addi	a0,a0,1112
    e886d8cc:	85a6                	mv	a1,s1
    e886d8ce:	99efc0ef          	jal	ra,e8869a6c <_UpdateEstimatedRate>
			_SessionLock( inSession );
    e886d8d2:	7448                	ld	a0,168(s0)
    e886d8d4:	bf1fc0ef          	jal	ra,e886a4c4 <_SessionLock.isra.3>
	uint32_t const							bytesPerUnit = ctx->bytesPerUnit;
    e886d8d8:	5c442d03          	lw	s10,1476(s0)
	if( ctx->type == kAirPlayStreamType_MainHighAudio )
    e886d8dc:	46042783          	lw	a5,1120(s0)
    e886d8e0:	68c2                	ld	a7,16(sp)
    e886d8e2:	07179163          	bne	a5,a7,e886d944 <AirPlayReceiverSessionReadAudio+0xd8>
		if( ctx->sampleTimeOffset == 0 && ( 0 < inSession->busyNodeCount ) )
    e886d8e6:	6785                	lui	a5,0x1
    e886d8e8:	97a2                	add	a5,a5,s0
    e886d8ea:	bc87a783          	lw	a5,-1080(a5) # bc8 <memcmp-0xe87ff438>
    e886d8ee:	ebb9                	bnez	a5,e886d944 <AirPlayReceiverSessionReadAudio+0xd8>
    e886d8f0:	6789                	lui	a5,0x2
    e886d8f2:	97a2                	add	a5,a5,s0
    e886d8f4:	8607a783          	lw	a5,-1952(a5) # 1860 <memcmp-0xe87fe7a0>
    e886d8f8:	c7b1                	beqz	a5,e886d944 <AirPlayReceiverSessionReadAudio+0xd8>
			atr_ulog( kLogLevelInfo, "busyNodeCount %d set sampleTimeOffset to %d\n",
    e886d8fa:	00068517          	auipc	a0,0x68
    e886d8fe:	96650513          	addi	a0,a0,-1690 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d902:	411c                	lw	a5,0(a0)
    e886d904:	02800713          	li	a4,40
    e886d908:	02f74a63          	blt	a4,a5,e886d93c <AirPlayReceiverSessionReadAudio+0xd0>
    e886d90c:	577d                	li	a4,-1
    e886d90e:	18e78e63          	beq	a5,a4,e886daaa <AirPlayReceiverSessionReadAudio+0x23e>
    e886d912:	6709                	lui	a4,0x2
    e886d914:	9722                	add	a4,a4,s0
    e886d916:	86072703          	lw	a4,-1952(a4) # 1860 <memcmp-0xe87fe7a0>
    e886d91a:	87a6                	mv	a5,s1
    e886d91c:	0005c697          	auipc	a3,0x5c
    e886d920:	39c68693          	addi	a3,a3,924 # e88c9cb8 <kAirPlayReceiverServerClass+0x2c0>
    e886d924:	02800613          	li	a2,40
    e886d928:	0005e597          	auipc	a1,0x5e
    e886d92c:	a7058593          	addi	a1,a1,-1424 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886d930:	00068517          	auipc	a0,0x68
    e886d934:	93050513          	addi	a0,a0,-1744 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d938:	b3de60ef          	jal	ra,e8854474 <LogPrintF>
			ctx->sampleTimeOffset = inRTPTime;
    e886d93c:	6785                	lui	a5,0x1
    e886d93e:	97a2                	add	a5,a5,s0
    e886d940:	bc97a423          	sw	s1,-1080(a5) # bc8 <memcmp-0xe87ff438>
	nowTS	= inRTPTime - ctx->sampleTimeOffset;
    e886d944:	6785                	lui	a5,0x1
    e886d946:	97a2                	add	a5,a5,s0
    e886d948:	bc87ab03          	lw	s6,-1080(a5) # bc8 <memcmp-0xe87ff438>
	limTS	= nowTS + (uint32_t)( inSize / bytesPerUnit );
    e886d94c:	7c0d378b          	extu	a5,s10,31,0
    e886d950:	f83e                	sd	a5,48(sp)
	nowTS	= inRTPTime - ctx->sampleTimeOffset;
    e886d952:	416489bb          	subw	s3,s1,s6
	limTS	= nowTS + (uint32_t)( inSize / bytesPerUnit );
    e886d956:	02fa5b33          	divu	s6,s4,a5
	stop = inSession->busyListSentinel;
    e886d95a:	6489                	lui	s1,0x2
    e886d95c:	94a2                	add	s1,s1,s0
	some	= false;
    e886d95e:	4c01                	li	s8,0
	pktSeq	= 0;
    e886d960:	4b81                	li	s7,0
	limTS	= nowTS + (uint32_t)( inSize / bytesPerUnit );
    e886d962:	013b07bb          	addw	a5,s6,s3
    e886d966:	ce3e                	sw	a5,28(sp)
	maxTS	= limTS + kAirTunesRTPOffsetApplyThreshold;
    e886d968:	4772                	lw	a4,28(sp)
	limTS	= nowTS + (uint32_t)( inSize / bytesPerUnit );
    e886d96a:	e83e                	sd	a5,16(sp)
	maxTS	= limTS + kAirTunesRTPOffsetApplyThreshold;
    e886d96c:	0006c7b7          	lui	a5,0x6c
    e886d970:	aa87879b          	addiw	a5,a5,-1368
    e886d974:	9fb9                	addw	a5,a5,a4
    e886d976:	f03e                	sd	a5,32(sp)
	lim		= dst + inSize;
    e886d978:	014a87b3          	add	a5,s5,s4
    e886d97c:	fc3e                	sd	a5,56(sp)
	stop = inSession->busyListSentinel;
    e886d97e:	8504b783          	ld	a5,-1968(s1) # 1850 <memcmp-0xe87fe7b0>
	glitchCount = 0;
    e886d982:	4a01                	li	s4,0
	stop = inSession->busyListSentinel;
    e886d984:	f43e                	sd	a5,40(sp)
	for( curr = stop->next; curr != stop; curr = next )
    e886d986:	0007bd83          	ld	s11,0(a5) # 6c000 <memcmp-0xe8794000>
			atr_stats_ulog( kLogLevelNotice, "Discarding late packet: seq %u ts %u-%u (%u ms), %u total\n", 
    e886d98a:	6795                	lui	a5,0x5
    e886d98c:	6227879b          	addiw	a5,a5,1570
    e886d990:	c4be                	sw	a5,72(sp)
    e886d992:	67ad                	lui	a5,0xb
    e886d994:	c447879b          	addiw	a5,a5,-956
    e886d998:	c6be                	sw	a5,76(sp)
		require_action( inSrcSize <= inSession->decodeBufferSize, exit, err = kSizeErr );
    e886d99a:	77f9                	lui	a5,0xffffe
    e886d99c:	5a978793          	addi	a5,a5,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e886d9a0:	e8be                	sd	a5,80(sp)
	for( curr = stop->next; curr != stop; curr = next )
    e886d9a2:	77a2                	ld	a5,40(sp)
    e886d9a4:	11b79a63          	bne	a5,s11,e886dab8 <AirPlayReceiverSessionReadAudio+0x24c>
	if( Mod32_LT( nowTS, limTS ) )
    e886d9a8:	47f2                	lw	a5,28(sp)
    e886d9aa:	40f987bb          	subw	a5,s3,a5
    e886d9ae:	6e07d763          	bgez	a5,e886e09c <AirPlayReceiverSessionReadAudio+0x830>
		delta = limTS - nowTS;
    e886d9b2:	47f2                	lw	a5,28(sp)
		_AudioDecoderConcealLoss( inSession, dst, size );
    e886d9b4:	8556                	mv	a0,s5
    e886d9b6:	4581                	li	a1,0
		delta = limTS - nowTS;
    e886d9b8:	413784bb          	subw	s1,a5,s3
		size = delta * bytesPerUnit;
    e886d9bc:	029d09bb          	mulw	s3,s10,s1
		_AudioDecoderConcealLoss( inSession, dst, size );
    e886d9c0:	7c09b60b          	extu	a2,s3,31,0
    e886d9c4:	1d10e0ef          	jal	ra,e887c394 <eLIBs_memset>
		atr_ulog( kLogLevelChatty, "Concealed %d units at end (ts=%u)\n", delta, nowTS );
    e886d9c8:	00068517          	auipc	a0,0x68
    e886d9cc:	89850513          	addi	a0,a0,-1896 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d9d0:	411c                	lw	a5,0(a0)
    e886d9d2:	4729                	li	a4,10
    e886d9d4:	02f74663          	blt	a4,a5,e886da00 <AirPlayReceiverSessionReadAudio+0x194>
    e886d9d8:	577d                	li	a4,-1
    e886d9da:	68e78363          	beq	a5,a4,e886e060 <AirPlayReceiverSessionReadAudio+0x7f4>
    e886d9de:	67c2                	ld	a5,16(sp)
    e886d9e0:	8726                	mv	a4,s1
    e886d9e2:	0005c697          	auipc	a3,0x5c
    e886d9e6:	45668693          	addi	a3,a3,1110 # e88c9e38 <kAirPlayReceiverServerClass+0x440>
    e886d9ea:	4629                	li	a2,10
    e886d9ec:	0005e597          	auipc	a1,0x5e
    e886d9f0:	9ac58593          	addi	a1,a1,-1620 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886d9f4:	00068517          	auipc	a0,0x68
    e886d9f8:	86c50513          	addi	a0,a0,-1940 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886d9fc:	a79e60ef          	jal	ra,e8854474 <LogPrintF>
		if( some ) _RetransmitsAbortOne( inSession, pktSeq, "UNDERRUN" );
    e886da00:	660c1663          	bnez	s8,e886e06c <AirPlayReceiverSessionReadAudio+0x800>
		glitchCount = 0;
    e886da04:	4a01                	li	s4,0
	inSession->glitchTotal += glitchCount;
    e886da06:	6789                	lui	a5,0x2
    e886da08:	97a2                	add	a5,a5,s0
    e886da0a:	8f07a703          	lw	a4,-1808(a5) # 18f0 <memcmp-0xe87fe710>
    e886da0e:	0147073b          	addw	a4,a4,s4
    e886da12:	8ee7a823          	sw	a4,-1808(a5)
	if( glitchCount > 0 )
    e886da16:	05405163          	blez	s4,e886da58 <AirPlayReceiverSessionReadAudio+0x1ec>
		atr_ulog( kLogLevelChatty, "Glitch: %d new, %u session\n", glitchCount, inSession->glitchTotal );
    e886da1a:	00068517          	auipc	a0,0x68
    e886da1e:	84650513          	addi	a0,a0,-1978 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886da22:	411c                	lw	a5,0(a0)
    e886da24:	4729                	li	a4,10
    e886da26:	02f74963          	blt	a4,a5,e886da58 <AirPlayReceiverSessionReadAudio+0x1ec>
    e886da2a:	577d                	li	a4,-1
    e886da2c:	66e78b63          	beq	a5,a4,e886e0a2 <AirPlayReceiverSessionReadAudio+0x836>
    e886da30:	6789                	lui	a5,0x2
    e886da32:	97a2                	add	a5,a5,s0
    e886da34:	8f07a783          	lw	a5,-1808(a5) # 18f0 <memcmp-0xe87fe710>
    e886da38:	8752                	mv	a4,s4
    e886da3a:	0005c697          	auipc	a3,0x5c
    e886da3e:	43668693          	addi	a3,a3,1078 # e88c9e70 <kAirPlayReceiverServerClass+0x478>
    e886da42:	4629                	li	a2,10
    e886da44:	0005e597          	auipc	a1,0x5e
    e886da48:	95458593          	addi	a1,a1,-1708 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886da4c:	00068517          	auipc	a0,0x68
    e886da50:	81450513          	addi	a0,a0,-2028 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886da54:	a21e60ef          	jal	ra,e8854474 <LogPrintF>
	if( inSession->lastPlayedValid && log_category_enabled( atr_stats_ucat(), kLogLevelNotice ) )
    e886da58:	6789                	lui	a5,0x2
    e886da5a:	97a2                	add	a5,a5,s0
    e886da5c:	8b07c783          	lbu	a5,-1872(a5) # 18b0 <memcmp-0xe87fe750>
    e886da60:	64078d63          	beqz	a5,e886e0ba <AirPlayReceiverSessionReadAudio+0x84e>
    e886da64:	00068517          	auipc	a0,0x68
    e886da68:	8bc50513          	addi	a0,a0,-1860 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886da6c:	411c                	lw	a5,0(a0)
    e886da6e:	03200713          	li	a4,50
    e886da72:	64f74463          	blt	a4,a5,e886e0ba <AirPlayReceiverSessionReadAudio+0x84e>
    e886da76:	577d                	li	a4,-1
    e886da78:	62e78b63          	beq	a5,a4,e886e0ae <AirPlayReceiverSessionReadAudio+0x842>
		int samples = (int)( inSession->lastRTPTS - inSession->lastPlayedTS );
    e886da7c:	6789                	lui	a5,0x2
    e886da7e:	97a2                	add	a5,a5,s0
    e886da80:	8ac7a903          	lw	s2,-1876(a5) # 18ac <memcmp-0xe87fe754>
    e886da84:	8b47a783          	lw	a5,-1868(a5)
		EWMA_FP_Update( &gAirPlayAudioStats.bufferAvg, samples );
    e886da88:	00076497          	auipc	s1,0x76
    e886da8c:	31048493          	addi	s1,s1,784 # e88e3d98 <gAirPlayAudioStats>
		int samples = (int)( inSession->lastRTPTS - inSession->lastPlayedTS );
    e886da90:	40f9093b          	subw	s2,s2,a5
		EWMA_FP_Update( &gAirPlayAudioStats.bufferAvg, samples );
    e886da94:	0104c783          	lbu	a5,16(s1)
    e886da98:	d20907d3          	fcvt.d.w	fa5,s2
    e886da9c:	64079263          	bnez	a5,e886e0e0 <AirPlayReceiverSessionReadAudio+0x874>
    e886daa0:	4785                	li	a5,1
    e886daa2:	a49c                	fsd	fa5,8(s1)
    e886daa4:	00f48823          	sb	a5,16(s1)
    e886daa8:	a599                	j	e886e0ee <AirPlayReceiverSessionReadAudio+0x882>
			atr_ulog( kLogLevelInfo, "busyNodeCount %d set sampleTimeOffset to %d\n",
    e886daaa:	02800593          	li	a1,40
    e886daae:	dc4e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886dab2:	e80505e3          	beqz	a0,e886d93c <AirPlayReceiverSessionReadAudio+0xd0>
    e886dab6:	bdb1                	j	e886d912 <AirPlayReceiverSessionReadAudio+0xa6>
		next = curr->next;
    e886dab8:	000db783          	ld	a5,0(s11)
		pktTS = curr->ts;
    e886dabc:	030dac83          	lw	s9,48(s11)
		next = curr->next;
    e886dac0:	e0be                	sd	a5,64(sp)
		if( src->rtpOffsetApply && Mod32_GE( pktTS, src->rtpOffsetApplyTimestamp ) )
    e886dac2:	37444783          	lbu	a5,884(s0)
    e886dac6:	c3ad                	beqz	a5,e886db28 <AirPlayReceiverSessionReadAudio+0x2bc>
    e886dac8:	37842783          	lw	a5,888(s0)
    e886dacc:	40fc87bb          	subw	a5,s9,a5
    e886dad0:	0407cc63          	bltz	a5,e886db28 <AirPlayReceiverSessionReadAudio+0x2bc>
			atr_ulog( kLogLevelTrace, "Applying RTP offset %u (was=%u, ts=%u, apply=%u)\n", 
    e886dad4:	00067517          	auipc	a0,0x67
    e886dad8:	78c50513          	addi	a0,a0,1932 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886dadc:	411c                	lw	a5,0(a0)
    e886dade:	4779                	li	a4,30
    e886dae0:	02f74b63          	blt	a4,a5,e886db16 <AirPlayReceiverSessionReadAudio+0x2aa>
    e886dae4:	577d                	li	a4,-1
    e886dae6:	20e78963          	beq	a5,a4,e886dcf8 <AirPlayReceiverSessionReadAudio+0x48c>
    e886daea:	37842883          	lw	a7,888(s0)
    e886daee:	36c42783          	lw	a5,876(s0)
    e886daf2:	37042703          	lw	a4,880(s0)
    e886daf6:	8866                	mv	a6,s9
    e886daf8:	0005c697          	auipc	a3,0x5c
    e886dafc:	1f068693          	addi	a3,a3,496 # e88c9ce8 <kAirPlayReceiverServerClass+0x2f0>
    e886db00:	4679                	li	a2,30
    e886db02:	0005e597          	auipc	a1,0x5e
    e886db06:	89658593          	addi	a1,a1,-1898 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886db0a:	00067517          	auipc	a0,0x67
    e886db0e:	75650513          	addi	a0,a0,1878 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886db12:	963e60ef          	jal	ra,e8854474 <LogPrintF>
			src->rtpOffsetActive			= src->rtpOffset;
    e886db16:	37042783          	lw	a5,880(s0)
			src->rtpOffsetApply				= false;
    e886db1a:	36040a23          	sb	zero,884(s0)
			src->rtpOffsetActive			= src->rtpOffset;
    e886db1e:	36f42623          	sw	a5,876(s0)
			inSession->stutterCreditPending = true;
    e886db22:	4785                	li	a5,1
    e886db24:	8ef48623          	sb	a5,-1812(s1)
        srcTS = pktTS + src->rtpOffsetActive + inSession->audioLatencyOffset;
    e886db28:	8984a703          	lw	a4,-1896(s1)
    e886db2c:	36c42783          	lw	a5,876(s0)
    e886db30:	9fb9                	addw	a5,a5,a4
		if( src->rtpOffsetApply && Mod32_GT( srcTS, maxTS ) )
    e886db32:	37444703          	lbu	a4,884(s0)
        srcTS = pktTS + src->rtpOffsetActive + inSession->audioLatencyOffset;
    e886db36:	0197893b          	addw	s2,a5,s9
		if( src->rtpOffsetApply && Mod32_GT( srcTS, maxTS ) )
    e886db3a:	c33d                	beqz	a4,e886dba0 <AirPlayReceiverSessionReadAudio+0x334>
    e886db3c:	7702                	ld	a4,32(sp)
    e886db3e:	40e907bb          	subw	a5,s2,a4
    e886db42:	04f05f63          	blez	a5,e886dba0 <AirPlayReceiverSessionReadAudio+0x334>
			atr_ulog( kLogLevelNotice, "Force apply RTP offset (srcTS=%u maxTS=%u)\n", srcTS, maxTS );
    e886db46:	00067517          	auipc	a0,0x67
    e886db4a:	71a50513          	addi	a0,a0,1818 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886db4e:	411c                	lw	a5,0(a0)
    e886db50:	03200713          	li	a4,50
    e886db54:	02f74763          	blt	a4,a5,e886db82 <AirPlayReceiverSessionReadAudio+0x316>
    e886db58:	577d                	li	a4,-1
    e886db5a:	1ae78563          	beq	a5,a4,e886dd04 <AirPlayReceiverSessionReadAudio+0x498>
    e886db5e:	7782                	ld	a5,32(sp)
    e886db60:	874a                	mv	a4,s2
    e886db62:	0005c697          	auipc	a3,0x5c
    e886db66:	1be68693          	addi	a3,a3,446 # e88c9d20 <kAirPlayReceiverServerClass+0x328>
    e886db6a:	03200613          	li	a2,50
    e886db6e:	0005e597          	auipc	a1,0x5e
    e886db72:	82a58593          	addi	a1,a1,-2006 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886db76:	00067517          	auipc	a0,0x67
    e886db7a:	6ea50513          	addi	a0,a0,1770 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886db7e:	8f7e60ef          	jal	ra,e8854474 <LogPrintF>
			src->rtpOffsetActive			= src->rtpOffset;
    e886db82:	37042783          	lw	a5,880(s0)
			src->rtpOffsetApply				= false;
    e886db86:	36040a23          	sb	zero,884(s0)
			inSession->stutterCreditPending = true;
    e886db8a:	4705                	li	a4,1
			src->rtpOffsetActive			= src->rtpOffset;
    e886db8c:	36f42623          	sw	a5,876(s0)
			srcTS = pktTS + src->rtpOffsetActive + inSession->audioLatencyOffset;
    e886db90:	8984a903          	lw	s2,-1896(s1)
			inSession->stutterCreditPending = true;
    e886db94:	8ee48623          	sb	a4,-1812(s1)
			srcTS = pktTS + src->rtpOffsetActive + inSession->audioLatencyOffset;
    e886db98:	00f9093b          	addw	s2,s2,a5
    e886db9c:	0199093b          	addw	s2,s2,s9
		if( Mod32_GE( srcTS, limTS ) ) break;
    e886dba0:	67c2                	ld	a5,16(sp)
    e886dba2:	40f907bb          	subw	a5,s2,a5
    e886dba6:	e007d1e3          	bgez	a5,e886d9a8 <AirPlayReceiverSessionReadAudio+0x13c>
		pktSeq = curr->rtp->header.seq;
    e886dbaa:	010db783          	ld	a5,16(s11)
    e886dbae:	0027db83          	lhu	s7,2(a5)
		if( inSession->lastPlayedValid && ( ( (int16_t)( pktSeq - inSession->lastPlayedSeq ) ) > 1 ) )
    e886dbb2:	8b04c783          	lbu	a5,-1872(s1)
    e886dbb6:	cbad                	beqz	a5,e886dc28 <AirPlayReceiverSessionReadAudio+0x3bc>
    e886dbb8:	8b84d803          	lhu	a6,-1864(s1)
    e886dbbc:	4785                	li	a5,1
    e886dbbe:	410b883b          	subw	a6,s7,a6
    e886dbc2:	3c08280b          	ext	a6,a6,15,0
    e886dbc6:	0707d163          	bge	a5,a6,e886dc28 <AirPlayReceiverSessionReadAudio+0x3bc>
			gAirPlayAudioStats.unrecoveredPackets += pktGap;
    e886dbca:	00076c17          	auipc	s8,0x76
    e886dbce:	1cec0c13          	addi	s8,s8,462 # e88e3d98 <gAirPlayAudioStats>
    e886dbd2:	01cc2783          	lw	a5,28(s8)
			pktGap = ( pktSeq - inSession->lastPlayedSeq ) - 1;
    e886dbd6:	387d                	addiw	a6,a6,-1
    e886dbd8:	3c08280b          	ext	a6,a6,15,0
			gAirPlayAudioStats.unrecoveredPackets += pktGap;
    e886dbdc:	010787bb          	addw	a5,a5,a6
			atr_stats_ulog( kLogLevelNotice, "### Unrecovered packets: %u-%u (%u) %u total\n", 
    e886dbe0:	00067517          	auipc	a0,0x67
    e886dbe4:	74050513          	addi	a0,a0,1856 # e88d5320 <gLogCategory_AirPlayReceiverStats>
			gAirPlayAudioStats.unrecoveredPackets += pktGap;
    e886dbe8:	00fc2e23          	sw	a5,28(s8)
			atr_stats_ulog( kLogLevelNotice, "### Unrecovered packets: %u-%u (%u) %u total\n", 
    e886dbec:	411c                	lw	a5,0(a0)
    e886dbee:	03200713          	li	a4,50
    e886dbf2:	02f74b63          	blt	a4,a5,e886dc28 <AirPlayReceiverSessionReadAudio+0x3bc>
    e886dbf6:	577d                	li	a4,-1
    e886dbf8:	10e78d63          	beq	a5,a4,e886dd12 <AirPlayReceiverSessionReadAudio+0x4a6>
    e886dbfc:	8b84d703          	lhu	a4,-1864(s1)
    e886dc00:	01cc2883          	lw	a7,28(s8)
    e886dc04:	87de                	mv	a5,s7
    e886dc06:	0705                	addi	a4,a4,1
    e886dc08:	0005c697          	auipc	a3,0x5c
    e886dc0c:	14868693          	addi	a3,a3,328 # e88c9d50 <kAirPlayReceiverServerClass+0x358>
    e886dc10:	03200613          	li	a2,50
    e886dc14:	0005d597          	auipc	a1,0x5d
    e886dc18:	78458593          	addi	a1,a1,1924 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886dc1c:	00067517          	auipc	a0,0x67
    e886dc20:	70450513          	addi	a0,a0,1796 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886dc24:	851e60ef          	jal	ra,e8854474 <LogPrintF>
		inSession->lastPlayedValid	= true;
    e886dc28:	4785                	li	a5,1
    e886dc2a:	8af48823          	sb	a5,-1872(s1)
		inSession->lastPlayedTS		= pktTS;
    e886dc2e:	8b94aa23          	sw	s9,-1868(s1)
		inSession->lastPlayedSeq	= pktSeq;
    e886dc32:	8b749c23          	sh	s7,-1864(s1)
		if( curr->ptr == curr->rtp->payload )
    e886dc36:	010dbc03          	ld	s8,16(s11)
    e886dc3a:	018db703          	ld	a4,24(s11)
    e886dc3e:	00cc0793          	addi	a5,s8,12
    e886dc42:	1cf71463          	bne	a4,a5,e886de0a <AirPlayReceiverSessionReadAudio+0x59e>
	uint32_t			tsNetworkOrder		= htonl( inRTPPacket->header.ts );
    e886dc46:	004c2503          	lw	a0,4(s8)
    e886dc4a:	2e4190ef          	jal	ra,e8886f2e <lwip_htonl>
    e886dc4e:	d2aa                	sw	a0,100(sp)
	uint32_t			ssrcNetworkOrder	= htonl( inRTPPacket->header.ssrc );
    e886dc50:	008c2503          	lw	a0,8(s8)
    e886dc54:	2da190ef          	jal	ra,e8886f2e <lwip_htonl>
    e886dc58:	d4aa                	sw	a0,104(sp)
    p = malloc(len);
    e886dc5a:	4521                	li	a0,8
    e886dc5c:	3f30d0ef          	jal	ra,e887b84e <my_malloc>
    e886dc60:	8c2a                	mv	s8,a0
    memset(p,0,len);
    e886dc62:	4621                	li	a2,8
    e886dc64:	4581                	li	a1,0
    e886dc66:	72e0e0ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( aad, exit, err = kNoMemoryErr );
    e886dc6a:	3c0c0263          	beqz	s8,e886e02e <AirPlayReceiverSessionReadAudio+0x7c2>
	memcpy( aad, &tsNetworkOrder, sizeof( tsNetworkOrder ) );
    e886dc6e:	4611                	li	a2,4
    e886dc70:	10cc                	addi	a1,sp,100
    e886dc72:	8562                	mv	a0,s8
    e886dc74:	72c0e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	memcpy( &aad[sizeof( tsNetworkOrder )], &ssrcNetworkOrder, sizeof( ssrcNetworkOrder ) );
    e886dc78:	4611                	li	a2,4
    e886dc7a:	10ac                	addi	a1,sp,104
    e886dc7c:	004c0513          	addi	a0,s8,4
    e886dc80:	7200e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
			err = _GeneralAudioDecodePacket( inSession, aad, aadSize, curr->ptr, curr->size, curr->ptr, 
    e886dc84:	018dbb03          	ld	s6,24(s11)
    e886dc88:	8004be03          	ld	t3,-2048(s1)
	decrypt = ( decrypt || inSession->mainAudioCtx.outputCryptor.isValid );
    e886dc8c:	23043783          	ld	a5,560(s0)
			err = _GeneralAudioDecodePacket( inSession, aad, aadSize, curr->ptr, curr->size, curr->ptr, 
    e886dc90:	020dbc83          	ld	s9,32(s11)
    e886dc94:	1e51                	addi	t3,t3,-12
	decrypt = ( decrypt || inSession->mainAudioCtx.outputCryptor.isValid );
    e886dc96:	12042703          	lw	a4,288(s0)
    e886dc9a:	e799                	bnez	a5,e886dca8 <AirPlayReceiverSessionReadAudio+0x43c>
    e886dc9c:	6785                	lui	a5,0x1
    e886dc9e:	97a2                	add	a5,a5,s0
	if( decrypt && decompress ) // Encryption and Compression (most common case)
    e886dca0:	8e87c783          	lbu	a5,-1816(a5) # 8e8 <memcmp-0xe87ff718>
    e886dca4:	10078e63          	beqz	a5,e886ddc0 <AirPlayReceiverSessionReadAudio+0x554>
    e886dca8:	4685                	li	a3,1
    e886dcaa:	8704b783          	ld	a5,-1936(s1)
    e886dcae:	0ed70263          	beq	a4,a3,e886dd92 <AirPlayReceiverSessionReadAudio+0x526>
		require_action( inSrcSize <= inSession->decodeBufferSize, exit, err = kSizeErr );
    e886dcb2:	0797f963          	bgeu	a5,s9,e886dd24 <AirPlayReceiverSessionReadAudio+0x4b8>
    e886dcb6:	67c6                	ld	a5,80(sp)
			free( aad );
    e886dcb8:	8562                	mv	a0,s8
    e886dcba:	ecbe                	sd	a5,88(sp)
    e886dcbc:	6440e0ef          	jal	ra,e887c300 <eLIBs_free>
			if( err || ( curr->size == 0 ) )
    e886dcc0:	67e6                	ld	a5,88(sp)
    e886dcc2:	e789                	bnez	a5,e886dccc <AirPlayReceiverSessionReadAudio+0x460>
    e886dcc4:	020db783          	ld	a5,32(s11)
    e886dcc8:	14079163          	bnez	a5,e886de0a <AirPlayReceiverSessionReadAudio+0x59e>
			AirTunesFreeBufferNode( inSession, curr );
    e886dccc:	f8edc78b          	ldd	a5,a4,(s11),0,4
    e886dcd0:	e798                	sd	a4,8(a5)
    e886dcd2:	008db783          	ld	a5,8(s11)
    e886dcd6:	000db703          	ld	a4,0(s11)
    e886dcda:	e398                	sd	a4,0(a5)
    e886dcdc:	8584b783          	ld	a5,-1960(s1)
    e886dce0:	00fdb023          	sd	a5,0(s11)
    e886dce4:	8604a783          	lw	a5,-1952(s1)
    e886dce8:	85b4bc23          	sd	s11,-1960(s1)
    e886dcec:	37fd                	addiw	a5,a5,-1
    e886dcee:	86f4a023          	sw	a5,-1952(s1)
			continue;
    e886dcf2:	4c05                	li	s8,1
		if( cap ) endTS = limTS;
    e886dcf4:	6d86                	ld	s11,64(sp)
    e886dcf6:	b175                	j	e886d9a2 <AirPlayReceiverSessionReadAudio+0x136>
			atr_ulog( kLogLevelTrace, "Applying RTP offset %u (was=%u, ts=%u, apply=%u)\n", 
    e886dcf8:	45f9                	li	a1,30
    e886dcfa:	b78e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886dcfe:	e0050ce3          	beqz	a0,e886db16 <AirPlayReceiverSessionReadAudio+0x2aa>
    e886dd02:	b3e5                	j	e886daea <AirPlayReceiverSessionReadAudio+0x27e>
			atr_ulog( kLogLevelNotice, "Force apply RTP offset (srcTS=%u maxTS=%u)\n", srcTS, maxTS );
    e886dd04:	03200593          	li	a1,50
    e886dd08:	b6ae60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886dd0c:	e6050be3          	beqz	a0,e886db82 <AirPlayReceiverSessionReadAudio+0x316>
    e886dd10:	b5b9                	j	e886db5e <AirPlayReceiverSessionReadAudio+0x2f2>
			atr_stats_ulog( kLogLevelNotice, "### Unrecovered packets: %u-%u (%u) %u total\n", 
    e886dd12:	03200593          	li	a1,50
    e886dd16:	ecc2                	sd	a6,88(sp)
    e886dd18:	b5ae60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886dd1c:	6866                	ld	a6,88(sp)
    e886dd1e:	f00505e3          	beqz	a0,e886dc28 <AirPlayReceiverSessionReadAudio+0x3bc>
    e886dd22:	bde9                	j	e886dbfc <AirPlayReceiverSessionReadAudio+0x390>
		err = _GeneralAudioDecryptPacket( 
    e886dd24:	8684b783          	ld	a5,-1944(s1)
    e886dd28:	06810813          	addi	a6,sp,104
    e886dd2c:	8766                	mv	a4,s9
    e886dd2e:	86da                	mv	a3,s6
    e886dd30:	4621                	li	a2,8
    e886dd32:	85e2                	mv	a1,s8
    e886dd34:	8522                	mv	a0,s0
    e886dd36:	ecf2                	sd	t3,88(sp)
    e886dd38:	c57fb0ef          	jal	ra,e886998e <_GeneralAudioDecryptPacket>
    e886dd3c:	87aa                	mv	a5,a0
		require_noerr( err, exit );
    e886dd3e:	fd2d                	bnez	a0,e886dcb8 <AirPlayReceiverSessionReadAudio+0x44c>
		inSrcSize = size;
    e886dd40:	7ca6                	ld	s9,104(sp)
		err = _AudioDecoderDecodeFrame( inSession, inSession->decodeBuffer, inSrcSize, inDst, inDstSize, &size );
    e886dd42:	6e66                	ld	t3,88(sp)
    e886dd44:	8684b583          	ld	a1,-1944(s1)
    e886dd48:	10bc                	addi	a5,sp,104
    e886dd4a:	8772                	mv	a4,t3
    e886dd4c:	86da                	mv	a3,s6
    e886dd4e:	8666                	mv	a2,s9
    e886dd50:	8522                	mv	a0,s0
		size = 0;
    e886dd52:	f482                	sd	zero,104(sp)
		err = _AudioDecoderDecodeFrame( inSession, inSession->decodeBuffer, inSrcSize, inDst, inDstSize, &size );
    e886dd54:	a69fc0ef          	jal	ra,e886a7bc <_AudioDecoderDecodeFrame.constprop.15>
    e886dd58:	87aa                	mv	a5,a0
		require_noerr( err, exit );
    e886dd5a:	fd39                	bnez	a0,e886dcb8 <AirPlayReceiverSessionReadAudio+0x44c>
	percent = ( size > 0 ) ? ( (uint32_t)( ( inSrcSize * ( 100 * 100 ) ) / size ) ) : 0;
    e886dd5c:	7726                	ld	a4,104(sp)
    e886dd5e:	4781                	li	a5,0
    e886dd60:	cb11                	beqz	a4,e886dd74 <AirPlayReceiverSessionReadAudio+0x508>
    e886dd62:	6789                	lui	a5,0x2
    e886dd64:	71078793          	addi	a5,a5,1808 # 2710 <memcmp-0xe87fd8f0>
    e886dd68:	02fc8cb3          	mul	s9,s9,a5
    e886dd6c:	02ecdcb3          	divu	s9,s9,a4
    e886dd70:	000c879b          	sext.w	a5,s9
	inSession->compressionPercentAvg = ( ( inSession->compressionPercentAvg * 63 ) + percent ) / 64;
    e886dd74:	8e84a683          	lw	a3,-1816(s1)
    e886dd78:	8cbe                	mv	s9,a5
    e886dd7a:	03f00613          	li	a2,63
    e886dd7e:	24d61c8b          	mulaw	s9,a2,a3
	err = kNoErr;
    e886dd82:	4781                	li	a5,0
	inSession->compressionPercentAvg = ( ( inSession->compressionPercentAvg * 63 ) + percent ) / 64;
    e886dd84:	006cdc9b          	srliw	s9,s9,0x6
    e886dd88:	8f94a423          	sw	s9,-1816(s1)
	*outSize = size;
    e886dd8c:	02edb023          	sd	a4,32(s11)
	err = kNoErr;
    e886dd90:	b725                	j	e886dcb8 <AirPlayReceiverSessionReadAudio+0x44c>
		require_action( inSrcSize <= inSession->decodeBufferSize, exit, err = kSizeErr );
    e886dd92:	f397e2e3          	bltu	a5,s9,e886dcb6 <AirPlayReceiverSessionReadAudio+0x44a>
		err = _GeneralAudioDecryptPacket( 
    e886dd96:	8684b783          	ld	a5,-1944(s1)
    e886dd9a:	06810813          	addi	a6,sp,104
    e886dd9e:	8766                	mv	a4,s9
    e886dda0:	86da                	mv	a3,s6
    e886dda2:	4621                	li	a2,8
    e886dda4:	85e2                	mv	a1,s8
    e886dda6:	8522                	mv	a0,s0
    e886dda8:	be7fb0ef          	jal	ra,e886998e <_GeneralAudioDecryptPacket>
    e886ddac:	87aa                	mv	a5,a0
		require_noerr( err, exit );
    e886ddae:	f00515e3          	bnez	a0,e886dcb8 <AirPlayReceiverSessionReadAudio+0x44c>
		BigToHost16Mem( inSession->decodeBuffer, size, inDst );
    e886ddb2:	75a6                	ld	a1,104(sp)
    e886ddb4:	8684b503          	ld	a0,-1944(s1)
    e886ddb8:	865a                	mv	a2,s6
    e886ddba:	d83e60ef          	jal	ra,e8854b3c <Swap16Mem>
    e886ddbe:	bf79                	j	e886dd5c <AirPlayReceiverSessionReadAudio+0x4f0>
	else if( decompress ) // Compression only
    e886ddc0:	4785                	li	a5,1
    e886ddc2:	02f70b63          	beq	a4,a5,e886ddf8 <AirPlayReceiverSessionReadAudio+0x58c>
		err = _AudioDecoderDecodeFrame( inSession, inSrc, inSrcSize, inSession->decodeBuffer, 
    e886ddc6:	8704b703          	ld	a4,-1936(s1)
    e886ddca:	8684b683          	ld	a3,-1944(s1)
    e886ddce:	10bc                	addi	a5,sp,104
    e886ddd0:	8666                	mv	a2,s9
    e886ddd2:	85da                	mv	a1,s6
    e886ddd4:	8522                	mv	a0,s0
    e886ddd6:	ecf2                	sd	t3,88(sp)
		size = 0;
    e886ddd8:	f482                	sd	zero,104(sp)
		err = _AudioDecoderDecodeFrame( inSession, inSrc, inSrcSize, inSession->decodeBuffer, 
    e886ddda:	9e3fc0ef          	jal	ra,e886a7bc <_AudioDecoderDecodeFrame.constprop.15>
    e886ddde:	87aa                	mv	a5,a0
		require_noerr( err, exit );
    e886dde0:	ec051ce3          	bnez	a0,e886dcb8 <AirPlayReceiverSessionReadAudio+0x44c>
		require_action( size <= inDstSize, exit, err = kSizeErr );
    e886dde4:	7626                	ld	a2,104(sp)
    e886dde6:	6e66                	ld	t3,88(sp)
    e886dde8:	ecce67e3          	bltu	t3,a2,e886dcb6 <AirPlayReceiverSessionReadAudio+0x44a>
		memcpy( inDst, inSession->decodeBuffer, size );
    e886ddec:	8684b583          	ld	a1,-1944(s1)
    e886ddf0:	855a                	mv	a0,s6
    e886ddf2:	5ae0e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e886ddf6:	b79d                	j	e886dd5c <AirPlayReceiverSessionReadAudio+0x4f0>
		require_action( inSrcSize <= inDstSize, exit, err = kSizeErr );
    e886ddf8:	eb9e6fe3          	bltu	t3,s9,e886dcb6 <AirPlayReceiverSessionReadAudio+0x44a>
		BigToHost16Mem( inSrc, inSrcSize, inDst );
    e886ddfc:	865a                	mv	a2,s6
    e886ddfe:	85e6                	mv	a1,s9
    e886de00:	855a                	mv	a0,s6
    e886de02:	d3be60ef          	jal	ra,e8854b3c <Swap16Mem>
		size = inSrcSize;
    e886de06:	f4e6                	sd	s9,104(sp)
    e886de08:	bf91                	j	e886dd5c <AirPlayReceiverSessionReadAudio+0x4f0>
		endTS = srcTS + (uint32_t)( curr->size / bytesPerUnit );
    e886de0a:	77c2                	ld	a5,48(sp)
    e886de0c:	020dbc03          	ld	s8,32(s11)
    e886de10:	02fc5c33          	divu	s8,s8,a5
    e886de14:	012c07bb          	addw	a5,s8,s2
    e886de18:	8c3e                	mv	s8,a5
    e886de1a:	8b3e                	mv	s6,a5
		if( Mod32_LE( endTS, nowTS ) )
    e886de1c:	413787bb          	subw	a5,a5,s3
    e886de20:	08f04663          	bgtz	a5,e886deac <AirPlayReceiverSessionReadAudio+0x640>
			gAirPlayAudioStats.latePackets += 1;
    e886de24:	00076c17          	auipc	s8,0x76
    e886de28:	f74c0c13          	addi	s8,s8,-140 # e88e3d98 <gAirPlayAudioStats>
    e886de2c:	020c2783          	lw	a5,32(s8)
			atr_stats_ulog( kLogLevelNotice, "Discarding late packet: seq %u ts %u-%u (%u ms), %u total\n", 
    e886de30:	00067517          	auipc	a0,0x67
    e886de34:	4f050513          	addi	a0,a0,1264 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886de38:	03200713          	li	a4,50
			gAirPlayAudioStats.latePackets += 1;
    e886de3c:	2785                	addiw	a5,a5,1
    e886de3e:	02fc2023          	sw	a5,32(s8)
			atr_stats_ulog( kLogLevelNotice, "Discarding late packet: seq %u ts %u-%u (%u ms), %u total\n", 
    e886de42:	411c                	lw	a5,0(a0)
    e886de44:	04f74563          	blt	a4,a5,e886de8e <AirPlayReceiverSessionReadAudio+0x622>
    e886de48:	577d                	li	a4,-1
    e886de4a:	04e78b63          	beq	a5,a4,e886dea0 <AirPlayReceiverSessionReadAudio+0x634>
    e886de4e:	48a6                	lw	a7,72(sp)
    e886de50:	4129873b          	subw	a4,s3,s2
    e886de54:	3e800793          	li	a5,1000
    e886de58:	24f7188b          	mulaw	a7,a4,a5
    e886de5c:	020c2783          	lw	a5,32(s8)
    e886de60:	884a                	mv	a6,s2
    e886de62:	875e                	mv	a4,s7
    e886de64:	e03e                	sd	a5,0(sp)
    e886de66:	47b6                	lw	a5,76(sp)
    e886de68:	0005c697          	auipc	a3,0x5c
    e886de6c:	f1868693          	addi	a3,a3,-232 # e88c9d80 <kAirPlayReceiverServerClass+0x388>
    e886de70:	03200613          	li	a2,50
    e886de74:	0005d597          	auipc	a1,0x5d
    e886de78:	52458593          	addi	a1,a1,1316 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886de7c:	00067517          	auipc	a0,0x67
    e886de80:	4a450513          	addi	a0,a0,1188 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886de84:	02f8d8bb          	divuw	a7,a7,a5
    e886de88:	87ce                	mv	a5,s3
    e886de8a:	deae60ef          	jal	ra,e8854474 <LogPrintF>
			_RetransmitsAbortOne( inSession, pktSeq, "OLD" );
    e886de8e:	0005c617          	auipc	a2,0x5c
    e886de92:	f3260613          	addi	a2,a2,-206 # e88c9dc0 <kAirPlayReceiverServerClass+0x3c8>
    e886de96:	85de                	mv	a1,s7
    e886de98:	8522                	mv	a0,s0
    e886de9a:	d11f90ef          	jal	ra,e8867baa <_RetransmitsAbortOne>
    e886de9e:	b53d                	j	e886dccc <AirPlayReceiverSessionReadAudio+0x460>
			atr_stats_ulog( kLogLevelNotice, "Discarding late packet: seq %u ts %u-%u (%u ms), %u total\n", 
    e886dea0:	03200593          	li	a1,50
    e886dea4:	9cee60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886dea8:	d17d                	beqz	a0,e886de8e <AirPlayReceiverSessionReadAudio+0x622>
    e886deaa:	b755                	j	e886de4e <AirPlayReceiverSessionReadAudio+0x5e2>
		if( Mod32_LT( nowTS, srcTS ) )
    e886deac:	412987bb          	subw	a5,s3,s2
    e886deb0:	0607d663          	bgez	a5,e886df1c <AirPlayReceiverSessionReadAudio+0x6b0>
			atr_stats_ulog( kLogLevelVerbose, "Concealed %d unit gap (%u vs %u), curr seq %u\n", delta, nowTS, srcTS, pktSeq );
    e886deb4:	00067517          	auipc	a0,0x67
    e886deb8:	46c50513          	addi	a0,a0,1132 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886debc:	411c                	lw	a5,0(a0)
    e886debe:	4139073b          	subw	a4,s2,s3
    e886dec2:	46d1                	li	a3,20
    e886dec4:	8cba                	mv	s9,a4
    e886dec6:	02f6c763          	blt	a3,a5,e886def4 <AirPlayReceiverSessionReadAudio+0x688>
    e886deca:	56fd                	li	a3,-1
    e886decc:	0ad78763          	beq	a5,a3,e886df7a <AirPlayReceiverSessionReadAudio+0x70e>
    e886ded0:	88de                	mv	a7,s7
    e886ded2:	884a                	mv	a6,s2
    e886ded4:	87ce                	mv	a5,s3
    e886ded6:	0005c697          	auipc	a3,0x5c
    e886deda:	ef268693          	addi	a3,a3,-270 # e88c9dc8 <kAirPlayReceiverServerClass+0x3d0>
    e886dede:	4651                	li	a2,20
    e886dee0:	0005d597          	auipc	a1,0x5d
    e886dee4:	4b858593          	addi	a1,a1,1208 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886dee8:	00067517          	auipc	a0,0x67
    e886deec:	43850513          	addi	a0,a0,1080 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886def0:	d84e60ef          	jal	ra,e8854474 <LogPrintF>
			size = delta * bytesPerUnit;
    e886def4:	039d0cbb          	mulw	s9,s10,s9
			_RetransmitsAbortOne( inSession, pktSeq, "GAP" );
    e886def8:	0005c617          	auipc	a2,0x5c
    e886defc:	f0060613          	addi	a2,a2,-256 # e88c9df8 <kAirPlayReceiverServerClass+0x400>
    e886df00:	85de                	mv	a1,s7
    e886df02:	8522                	mv	a0,s0
    e886df04:	ca7f90ef          	jal	ra,e8867baa <_RetransmitsAbortOne>
			++glitchCount;
    e886df08:	2a05                	addiw	s4,s4,1
			_AudioDecoderConcealLoss( inSession, dst, size );
    e886df0a:	8556                	mv	a0,s5
    e886df0c:	4581                	li	a1,0
			nowTS += delta;
    e886df0e:	89ca                	mv	s3,s2
			size = delta * bytesPerUnit;
    e886df10:	7c0cbc8b          	extu	s9,s9,31,0
			_AudioDecoderConcealLoss( inSession, dst, size );
    e886df14:	8666                	mv	a2,s9
    e886df16:	47e0e0ef          	jal	ra,e887c394 <eLIBs_memset>
			dst   += size;
    e886df1a:	9ae6                	add	s5,s5,s9
		if( Mod32_LT( srcTS, nowTS ) )
    e886df1c:	4139073b          	subw	a4,s2,s3
    e886df20:	0a075d63          	bgez	a4,e886dfda <AirPlayReceiverSessionReadAudio+0x76e>
			gAirPlayAudioStats.latePackets += 1;
    e886df24:	00076797          	auipc	a5,0x76
    e886df28:	e7478793          	addi	a5,a5,-396 # e88e3d98 <gAirPlayAudioStats>
    e886df2c:	5394                	lw	a3,32(a5)
			atr_stats_ulog( kLogLevelVerbose, "Dropped %d late units (%u vs %u), %u total\n", 
    e886df2e:	00067517          	auipc	a0,0x67
    e886df32:	3f250513          	addi	a0,a0,1010 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886df36:	4651                	li	a2,20
			gAirPlayAudioStats.latePackets += 1;
    e886df38:	2685                	addiw	a3,a3,1
    e886df3a:	d394                	sw	a3,32(a5)
			atr_stats_ulog( kLogLevelVerbose, "Dropped %d late units (%u vs %u), %u total\n", 
    e886df3c:	4114                	lw	a3,0(a0)
    e886df3e:	41298cbb          	subw	s9,s3,s2
    e886df42:	04d64d63          	blt	a2,a3,e886df9c <AirPlayReceiverSessionReadAudio+0x730>
    e886df46:	567d                	li	a2,-1
    e886df48:	04c68063          	beq	a3,a2,e886df88 <AirPlayReceiverSessionReadAudio+0x71c>
    e886df4c:	000cc363          	bltz	s9,e886df52 <AirPlayReceiverSessionReadAudio+0x6e6>
    e886df50:	8766                	mv	a4,s9
    e886df52:	0207a883          	lw	a7,32(a5)
    e886df56:	884e                	mv	a6,s3
    e886df58:	87ca                	mv	a5,s2
    e886df5a:	0005c697          	auipc	a3,0x5c
    e886df5e:	ea668693          	addi	a3,a3,-346 # e88c9e00 <kAirPlayReceiverServerClass+0x408>
    e886df62:	4651                	li	a2,20
    e886df64:	0005d597          	auipc	a1,0x5d
    e886df68:	43458593          	addi	a1,a1,1076 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886df6c:	00067517          	auipc	a0,0x67
    e886df70:	3b450513          	addi	a0,a0,948 # e88d5320 <gLogCategory_AirPlayReceiverStats>
    e886df74:	d00e60ef          	jal	ra,e8854474 <LogPrintF>
    e886df78:	a015                	j	e886df9c <AirPlayReceiverSessionReadAudio+0x730>
			atr_stats_ulog( kLogLevelVerbose, "Concealed %d unit gap (%u vs %u), curr seq %u\n", delta, nowTS, srcTS, pktSeq );
    e886df7a:	45d1                	li	a1,20
    e886df7c:	ecba                	sd	a4,88(sp)
    e886df7e:	8f4e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886df82:	6766                	ld	a4,88(sp)
    e886df84:	d925                	beqz	a0,e886def4 <AirPlayReceiverSessionReadAudio+0x688>
    e886df86:	b7a9                	j	e886ded0 <AirPlayReceiverSessionReadAudio+0x664>
			atr_stats_ulog( kLogLevelVerbose, "Dropped %d late units (%u vs %u), %u total\n", 
    e886df88:	45d1                	li	a1,20
    e886df8a:	ecba                	sd	a4,88(sp)
    e886df8c:	8e6e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886df90:	6766                	ld	a4,88(sp)
    e886df92:	00076797          	auipc	a5,0x76
    e886df96:	e0678793          	addi	a5,a5,-506 # e88e3d98 <gAirPlayAudioStats>
    e886df9a:	f94d                	bnez	a0,e886df4c <AirPlayReceiverSessionReadAudio+0x6e0>
			_RetransmitsAbortOne( inSession, pktSeq, "LATE" );
    e886df9c:	0005c617          	auipc	a2,0x5c
    e886dfa0:	e9460613          	addi	a2,a2,-364 # e88c9e30 <kAirPlayReceiverServerClass+0x438>
    e886dfa4:	85de                	mv	a1,s7
    e886dfa6:	8522                	mv	a0,s0
    e886dfa8:	c03f90ef          	jal	ra,e8867baa <_RetransmitsAbortOne>
			++glitchCount;
    e886dfac:	2a05                	addiw	s4,s4,1
			size		= delta * bytesPerUnit;
    e886dfae:	03ac87bb          	mulw	a5,s9,s10
			curr->ptr	+= size;
    e886dfb2:	018db703          	ld	a4,24(s11)
			srcTS		= nowTS;
    e886dfb6:	894e                	mv	s2,s3
			size		= delta * bytesPerUnit;
    e886dfb8:	7c07b78b          	extu	a5,a5,31,0
			curr->ptr	+= size;
    e886dfbc:	973e                	add	a4,a4,a5
    e886dfbe:	00edbc23          	sd	a4,24(s11)
			curr->size	-= size;
    e886dfc2:	020db703          	ld	a4,32(s11)
    e886dfc6:	40f707b3          	sub	a5,a4,a5
    e886dfca:	02fdb023          	sd	a5,32(s11)
			curr->ts	+= delta;
    e886dfce:	030da783          	lw	a5,48(s11)
    e886dfd2:	01978cbb          	addw	s9,a5,s9
    e886dfd6:	039da823          	sw	s9,48(s11)
		cap = Mod32_GT( endTS, limTS );
    e886dfda:	67c2                	ld	a5,16(sp)
    e886dfdc:	40fc0c3b          	subw	s8,s8,a5
		if( cap ) endTS = limTS;
    e886dfe0:	01805363          	blez	s8,e886dfe6 <AirPlayReceiverSessionReadAudio+0x77a>
    e886dfe4:	8b3e                	mv	s6,a5
		delta = endTS - srcTS;
    e886dfe6:	412b06bb          	subw	a3,s6,s2
		size  = delta * bytesPerUnit;
    e886dfea:	02dd0cbb          	mulw	s9,s10,a3
		memcpy( dst, curr->ptr, size );
    e886dfee:	018db583          	ld	a1,24(s11)
    e886dff2:	8556                	mv	a0,s5
		delta = endTS - srcTS;
    e886dff4:	8936                	mv	s2,a3
    e886dff6:	ecb6                	sd	a3,88(sp)
		nowTS += delta;
    e886dff8:	013909bb          	addw	s3,s2,s3
		size  = delta * bytesPerUnit;
    e886dffc:	7c0cbc8b          	extu	s9,s9,31,0
		memcpy( dst, curr->ptr, size );
    e886e000:	8666                	mv	a2,s9
    e886e002:	39e0e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		dst   += size;
    e886e006:	9ae6                	add	s5,s5,s9
		if( cap )
    e886e008:	66e6                	ld	a3,88(sp)
    e886e00a:	03805463          	blez	s8,e886e032 <AirPlayReceiverSessionReadAudio+0x7c6>
			curr->ptr	+= size;
    e886e00e:	018db703          	ld	a4,24(s11)
			curr->ts	+= delta;
    e886e012:	030da783          	lw	a5,48(s11)
			curr->ptr	+= size;
    e886e016:	9766                	add	a4,a4,s9
    e886e018:	00edbc23          	sd	a4,24(s11)
			curr->size	-= size;
    e886e01c:	020db703          	ld	a4,32(s11)
			curr->ts	+= delta;
    e886e020:	9fb5                	addw	a5,a5,a3
    e886e022:	02fda823          	sw	a5,48(s11)
			curr->size	-= size;
    e886e026:	41970cb3          	sub	s9,a4,s9
    e886e02a:	039db023          	sd	s9,32(s11)
		some = true;
    e886e02e:	4c05                	li	s8,1
    e886e030:	baa5                	j	e886d9a8 <AirPlayReceiverSessionReadAudio+0x13c>
			AirTunesFreeBufferNode( inSession, curr );
    e886e032:	f8edc78b          	ldd	a5,a4,(s11),0,4
    e886e036:	e798                	sd	a4,8(a5)
    e886e038:	008db783          	ld	a5,8(s11)
    e886e03c:	000db703          	ld	a4,0(s11)
    e886e040:	e398                	sd	a4,0(a5)
    e886e042:	8584b783          	ld	a5,-1960(s1)
    e886e046:	00fdb023          	sd	a5,0(s11)
    e886e04a:	8604a783          	lw	a5,-1952(s1)
    e886e04e:	85b4bc23          	sd	s11,-1960(s1)
    e886e052:	37fd                	addiw	a5,a5,-1
    e886e054:	86f4a023          	sw	a5,-1952(s1)
		if( dst >= lim ) break;
    e886e058:	77e2                	ld	a5,56(sp)
    e886e05a:	c8faece3          	bltu	s5,a5,e886dcf2 <AirPlayReceiverSessionReadAudio+0x486>
    e886e05e:	bfc1                	j	e886e02e <AirPlayReceiverSessionReadAudio+0x7c2>
		atr_ulog( kLogLevelChatty, "Concealed %d units at end (ts=%u)\n", delta, nowTS );
    e886e060:	45a9                	li	a1,10
    e886e062:	810e60ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e066:	98050de3          	beqz	a0,e886da00 <AirPlayReceiverSessionReadAudio+0x194>
    e886e06a:	ba95                	j	e886d9de <AirPlayReceiverSessionReadAudio+0x172>
		if( some ) _RetransmitsAbortOne( inSession, pktSeq, "UNDERRUN" );
    e886e06c:	0005c617          	auipc	a2,0x5c
    e886e070:	df460613          	addi	a2,a2,-524 # e88c9e60 <kAirPlayReceiverServerClass+0x468>
    e886e074:	85de                	mv	a1,s7
    e886e076:	8522                	mv	a0,s0
		++glitchCount;
    e886e078:	2a05                	addiw	s4,s4,1
		if( some ) _RetransmitsAbortOne( inSession, pktSeq, "UNDERRUN" );
    e886e07a:	b31f90ef          	jal	ra,e8867baa <_RetransmitsAbortOne>
	if( !some || inSession->flushing )
    e886e07e:	6789                	lui	a5,0x2
    e886e080:	97a2                	add	a5,a5,s0
    e886e082:	89c7c703          	lbu	a4,-1892(a5) # 189c <memcmp-0xe87fe764>
    e886e086:	96071fe3          	bnez	a4,e886da04 <AirPlayReceiverSessionReadAudio+0x198>
	else if( ( glitchCount > 0 ) && inSession->stutterCreditPending )
    e886e08a:	97405ee3          	blez	s4,e886da06 <AirPlayReceiverSessionReadAudio+0x19a>
    e886e08e:	8ec7c703          	lbu	a4,-1812(a5)
    e886e092:	96070ae3          	beqz	a4,e886da06 <AirPlayReceiverSessionReadAudio+0x19a>
		inSession->stutterCreditPending = false;
    e886e096:	8e078623          	sb	zero,-1812(a5)
    e886e09a:	b2ad                	j	e886da04 <AirPlayReceiverSessionReadAudio+0x198>
	if( !some || inSession->flushing )
    e886e09c:	fe0c11e3          	bnez	s8,e886e07e <AirPlayReceiverSessionReadAudio+0x812>
    e886e0a0:	b295                	j	e886da04 <AirPlayReceiverSessionReadAudio+0x198>
		atr_ulog( kLogLevelChatty, "Glitch: %d new, %u session\n", glitchCount, inSession->glitchTotal );
    e886e0a2:	45a9                	li	a1,10
    e886e0a4:	fcfe50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e0a8:	9a0508e3          	beqz	a0,e886da58 <AirPlayReceiverSessionReadAudio+0x1ec>
    e886e0ac:	b251                	j	e886da30 <AirPlayReceiverSessionReadAudio+0x1c4>
	if( inSession->lastPlayedValid && log_category_enabled( atr_stats_ucat(), kLogLevelNotice ) )
    e886e0ae:	03200593          	li	a1,50
    e886e0b2:	fc1e50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e0b6:	9c0513e3          	bnez	a0,e886da7c <AirPlayReceiverSessionReadAudio+0x210>
			_SessionUnlock( inSession );
    e886e0ba:	7448                	ld	a0,168(s0)
    e886e0bc:	c16fc0ef          	jal	ra,e886a4d2 <_SessionUnlock.isra.4>
			err = kNoErr;
    e886e0c0:	4501                	li	a0,0
}
    e886e0c2:	60ee                	ld	ra,216(sp)
    e886e0c4:	644e                	ld	s0,208(sp)
    e886e0c6:	64ae                	ld	s1,200(sp)
    e886e0c8:	690e                	ld	s2,192(sp)
    e886e0ca:	79ea                	ld	s3,184(sp)
    e886e0cc:	7a4a                	ld	s4,176(sp)
    e886e0ce:	7aaa                	ld	s5,168(sp)
    e886e0d0:	7b0a                	ld	s6,160(sp)
    e886e0d2:	6bea                	ld	s7,152(sp)
    e886e0d4:	6c4a                	ld	s8,144(sp)
    e886e0d6:	6caa                	ld	s9,136(sp)
    e886e0d8:	6d0a                	ld	s10,128(sp)
    e886e0da:	7de6                	ld	s11,120(sp)
    e886e0dc:	612d                	addi	sp,sp,224
    e886e0de:	8082                	ret
		EWMA_FP_Update( &gAirPlayAudioStats.bufferAvg, samples );
    e886e0e0:	2494                	fld	fa3,8(s1)
    e886e0e2:	2098                	fld	fa4,0(s1)
    e886e0e4:	0ad7f7d3          	fsub.d	fa5,fa5,fa3
    e886e0e8:	6af777c3          	fmadd.d	fa5,fa4,fa5,fa3
    e886e0ec:	a49c                	fsd	fa5,8(s1)
		atr_ulog( kLogLevelChatty, "RTP Buffer: %3d ms, %3.2f ms avg\n", 
    e886e0ee:	00067517          	auipc	a0,0x67
    e886e0f2:	17250513          	addi	a0,a0,370 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e0f6:	411c                	lw	a5,0(a0)
    e886e0f8:	4729                	li	a4,10
    e886e0fa:	fcf740e3          	blt	a4,a5,e886e0ba <AirPlayReceiverSessionReadAudio+0x84e>
    e886e0fe:	577d                	li	a4,-1
    e886e100:	06e78163          	beq	a5,a4,e886e162 <AirPlayReceiverSessionReadAudio+0x8f6>
    e886e104:	249c                	fld	fa5,8(s1)
    e886e106:	0005c797          	auipc	a5,0x5c
    e886e10a:	ba27b707          	fld	fa4,-1118(a5) # e88c9ca8 <kAirPlayReceiverServerClass+0x2b0>
    e886e10e:	00050797          	auipc	a5,0x50
    e886e112:	9827b687          	fld	fa3,-1662(a5) # e88bda90 <kSRPHashDescriptor_SHA512+0x80>
    e886e116:	72d7f7c3          	fmadd.d	fa5,fa5,fa3,fa4
    e886e11a:	0005c797          	auipc	a5,0x5c
    e886e11e:	b967b707          	fld	fa4,-1130(a5) # e88c9cb0 <kAirPlayReceiverServerClass+0x2b8>
    e886e122:	6695                	lui	a3,0x5
    e886e124:	3e800793          	li	a5,1000
    e886e128:	6226869b          	addiw	a3,a3,1570
    e886e12c:	2527968b          	mulaw	a3,a5,s2
    e886e130:	672d                	lui	a4,0xb
    e886e132:	c447071b          	addiw	a4,a4,-956
    e886e136:	1ae7f7d3          	fdiv.d	fa5,fa5,fa4
    e886e13a:	4629                	li	a2,10
    e886e13c:	0005d597          	auipc	a1,0x5d
    e886e140:	25c58593          	addi	a1,a1,604 # e88cb398 <__PRETTY_FUNCTION__.14035>
    e886e144:	00067517          	auipc	a0,0x67
    e886e148:	11c50513          	addi	a0,a0,284 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e14c:	02e6c73b          	divw	a4,a3,a4
    e886e150:	0005c697          	auipc	a3,0x5c
    e886e154:	d4068693          	addi	a3,a3,-704 # e88c9e90 <kAirPlayReceiverServerClass+0x498>
    e886e158:	e20787d3          	fmv.x.d	a5,fa5
    e886e15c:	b18e60ef          	jal	ra,e8854474 <LogPrintF>
    e886e160:	bfa9                	j	e886e0ba <AirPlayReceiverSessionReadAudio+0x84e>
    e886e162:	45a9                	li	a1,10
    e886e164:	f0fe50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e168:	d929                	beqz	a0,e886e0ba <AirPlayReceiverSessionReadAudio+0x84e>
    e886e16a:	bf69                	j	e886e104 <AirPlayReceiverSessionReadAudio+0x898>
			_UpdateEstimatedRate( &inSession->altAudioCtx, inSampleTime, inHostTime );
    e886e16c:	6905                	lui	s2,0x1
    e886e16e:	bd090513          	addi	a0,s2,-1072 # bd0 <memcmp-0xe87ff430>
    e886e172:	85a6                	mv	a1,s1
    e886e174:	9522                	add	a0,a0,s0
    e886e176:	8f7fb0ef          	jal	ra,e8869a6c <_UpdateEstimatedRate>
			err = RTPJitterBufferRead( &inSession->altAudioCtx.jitterBuffer, inBuffer, inLen );
    e886e17a:	c1090513          	addi	a0,s2,-1008
    e886e17e:	8652                	mv	a2,s4
    e886e180:	85d6                	mv	a1,s5
    e886e182:	9522                	add	a0,a0,s0
    e886e184:	f3aff06f          	j	e886d8be <AirPlayReceiverSessionReadAudio+0x52>
			dlogassert( "Bad stream type: %u", inType );
    e886e188:	4501                	li	a0,0
    e886e18a:	0005d817          	auipc	a6,0x5d
    e886e18e:	aa680813          	addi	a6,a6,-1370 # e88cac30 <kAirPlayReceiverServerClass+0x1238>
    e886e192:	0005d797          	auipc	a5,0x5d
    e886e196:	09678793          	addi	a5,a5,150 # e88cb228 <__PRETTY_FUNCTION__.13715>
    e886e19a:	50a00713          	li	a4,1290
    e886e19e:	0005c697          	auipc	a3,0x5c
    e886e1a2:	03268693          	addi	a3,a3,50 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886e1a6:	4601                	li	a2,0
    e886e1a8:	4581                	li	a1,0
    e886e1aa:	a1ee00ef          	jal	ra,e884e3c8 <DebugPrintAssert>
			err = kParamErr;
    e886e1ae:	7579                	lui	a0,0xffffe
    e886e1b0:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
	return( err );
    e886e1b4:	b739                	j	e886e0c2 <AirPlayReceiverSessionReadAudio+0x856>

00000000e886e1b6 <AirPlayReceiverSessionWriteAudio>:
{
    e886e1b6:	7179                	addi	sp,sp,-48
    e886e1b8:	fa91540b          	sdd	s0,s1,(sp),1,4
    e886e1bc:	84be                	mv	s1,a5
	MirroredRingBuffer * const				ring				= ctx->inputRingRef;
    e886e1be:	6785                	lui	a5,0x1
    e886e1c0:	97aa                	add	a5,a5,a0
{
    e886e1c2:	f04a                	sd	s2,32(sp)
    e886e1c4:	f406                	sd	ra,40(sp)
	MirroredRingBuffer * const				ring				= ctx->inputRingRef;
    e886e1c6:	a507b403          	ld	s0,-1456(a5) # a50 <memcmp-0xe87ff5b0>
{
    e886e1ca:	892a                	mv	s2,a0
	len = MirroredRingBufferGetBytesFree( ring );
    e886e1cc:	481c                	lw	a5,16(s0)
    e886e1ce:	4c14                	lw	a3,24(s0)
    e886e1d0:	4c48                	lw	a0,28(s0)
    e886e1d2:	9fb5                	addw	a5,a5,a3
    e886e1d4:	9f89                	subw	a5,a5,a0
    e886e1d6:	7c07b78b          	extu	a5,a5,31,0
	require_action_quiet( len >= inLen, exit, err = kNoSpaceErr; 
    e886e1da:	0697f163          	bgeu	a5,s1,e886e23c <AirPlayReceiverSessionWriteAudio+0x86>
    e886e1de:	00067517          	auipc	a0,0x67
    e886e1e2:	08250513          	addi	a0,a0,130 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e1e6:	4118                	lw	a4,0(a0)
    e886e1e8:	02800693          	li	a3,40
    e886e1ec:	00e6db63          	bge	a3,a4,e886e202 <AirPlayReceiverSessionWriteAudio+0x4c>
    e886e1f0:	7579                	lui	a0,0xffffe
    e886e1f2:	59550513          	addi	a0,a0,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
}
    e886e1f6:	70a2                	ld	ra,40(sp)
    e886e1f8:	fa91440b          	ldd	s0,s1,(sp),1,4
    e886e1fc:	7902                	ld	s2,32(sp)
    e886e1fe:	6145                	addi	sp,sp,48
    e886e200:	8082                	ret
	require_action_quiet( len >= inLen, exit, err = kNoSpaceErr; 
    e886e202:	56fd                	li	a3,-1
    e886e204:	02d70463          	beq	a4,a3,e886e22c <AirPlayReceiverSessionWriteAudio+0x76>
    e886e208:	8726                	mv	a4,s1
    e886e20a:	0005c697          	auipc	a3,0x5c
    e886e20e:	f4668693          	addi	a3,a3,-186 # e88ca150 <kAirPlayReceiverServerClass+0x758>
    e886e212:	02800613          	li	a2,40
    e886e216:	0005d597          	auipc	a1,0x5d
    e886e21a:	05258593          	addi	a1,a1,82 # e88cb268 <__PRETTY_FUNCTION__.13758>
    e886e21e:	00067517          	auipc	a0,0x67
    e886e222:	04250513          	addi	a0,a0,66 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e226:	a4ee60ef          	jal	ra,e8854474 <LogPrintF>
    e886e22a:	b7d9                	j	e886e1f0 <AirPlayReceiverSessionWriteAudio+0x3a>
    e886e22c:	02800593          	li	a1,40
    e886e230:	e43e                	sd	a5,8(sp)
    e886e232:	e41e50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e236:	67a2                	ld	a5,8(sp)
    e886e238:	dd45                	beqz	a0,e886e1f0 <AirPlayReceiverSessionWriteAudio+0x3a>
    e886e23a:	b7f9                	j	e886e208 <AirPlayReceiverSessionWriteAudio+0x52>
	memcpy( MirroredRingBufferGetWritePtr( ring ), inBuffer, inLen );
    e886e23c:	485c                	lw	a5,20(s0)
    e886e23e:	85ba                	mv	a1,a4
    e886e240:	8626                	mv	a2,s1
    e886e242:	8d7d                	and	a0,a0,a5
    e886e244:	601c                	ld	a5,0(s0)
    e886e246:	7c05350b          	extu	a0,a0,31,0
    e886e24a:	e43a                	sd	a4,8(sp)
    e886e24c:	953e                	add	a0,a0,a5
    e886e24e:	1520e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	if(MirroredRingBufferGetWriteOffset( ring ) + inLen < MirroredRingBufferGetSize( ring ))
    e886e252:	4c50                	lw	a2,28(s0)
    e886e254:	4854                	lw	a3,20(s0)
    e886e256:	6008                	ld	a0,0(s0)
    e886e258:	6722                	ld	a4,8(sp)
    e886e25a:	8ef1                	and	a3,a3,a2
    e886e25c:	4810                	lw	a2,16(s0)
    e886e25e:	7c06b78b          	extu	a5,a3,31,0
    e886e262:	00978833          	add	a6,a5,s1
    e886e266:	7c06358b          	extu	a1,a2,31,0
    e886e26a:	02b87b63          	bgeu	a6,a1,e886e2a0 <AirPlayReceiverSessionWriteAudio+0xea>
		memcpy(MirroredRingBufferGetBuffer2( ring )+MirroredRingBufferGetWriteOffset( ring ), inBuffer, inLen );
    e886e26e:	97ae                	add	a5,a5,a1
    e886e270:	8626                	mv	a2,s1
    e886e272:	85ba                	mv	a1,a4
    e886e274:	953e                	add	a0,a0,a5
		memcpy(MirroredRingBufferGetBuffer( ring ),
    e886e276:	12a0e0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	MirroredRingBufferWriteAdvance( ring, inLen );
    e886e27a:	4c58                	lw	a4,28(s0)
    e886e27c:	9f25                	addw	a4,a4,s1
    e886e27e:	cc58                	sw	a4,28(s0)
	pthread_mutex_lock( ctx->sendAudioMutexPtr );
    e886e280:	6405                	lui	s0,0x1
    e886e282:	944a                	add	s0,s0,s2
    e886e284:	a4043503          	ld	a0,-1472(s0) # a40 <memcmp-0xe87ff5c0>
    e886e288:	0970d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	pthread_cond_signal( ctx->sendAudioCondPtr );
    e886e28c:	a3043503          	ld	a0,-1488(s0)
    e886e290:	2750d0ef          	jal	ra,e887bd04 <pthread_cond_signal>
	pthread_mutex_unlock( ctx->sendAudioMutexPtr );
    e886e294:	a4043503          	ld	a0,-1472(s0)
    e886e298:	0cb0d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	OSStatus								err 				= kNoErr;
    e886e29c:	4501                	li	a0,0
    e886e29e:	bfa1                	j	e886e1f6 <AirPlayReceiverSessionWriteAudio+0x40>
			   inLen - (MirroredRingBufferGetSize( ring ) - MirroredRingBufferGetWriteOffset( ring )));
    e886e2a0:	9e15                	subw	a2,a2,a3
		memcpy(MirroredRingBufferGetBuffer( ring ),
    e886e2a2:	7c06360b          	extu	a2,a2,31,0
			   inBuffer + MirroredRingBufferGetSize( ring ) - MirroredRingBufferGetWriteOffset( ring ),
    e886e2a6:	8d9d                	sub	a1,a1,a5
		memcpy(MirroredRingBufferGetBuffer( ring ),
    e886e2a8:	40c48633          	sub	a2,s1,a2
    e886e2ac:	95ba                	add	a1,a1,a4
    e886e2ae:	b7e1                	j	e886e276 <AirPlayReceiverSessionWriteAudio+0xc0>

00000000e886e2b0 <AirPlayReceiverSessionChangeModes>:
		AirPlayReceiverSessionRef					inSession, 
		const AirPlayModeChanges *					inChanges, 
		CFStringRef									inReason, 
		AirPlayReceiverSessionCommandCompletionFunc	inCompletion, 
		void *										inContext )
{
    e886e2b0:	715d                	addi	sp,sp,-80
    e886e2b2:	fc26                	sd	s1,56(sp)
    e886e2b4:	f84a                	sd	s2,48(sp)
    e886e2b6:	f44e                	sd	s3,40(sp)
    e886e2b8:	ec56                	sd	s5,24(sp)
    e886e2ba:	892a                	mv	s2,a0
    e886e2bc:	84ae                	mv	s1,a1
    e886e2be:	8ab2                	mv	s5,a2
    e886e2c0:	89b6                	mv	s3,a3
	OSStatus					err;
	CFMutableDictionaryRef		request;
	CFDictionaryRef				params;
	
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886e2c2:	00050617          	auipc	a2,0x50
    e886e2c6:	4d660613          	addi	a2,a2,1238 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886e2ca:	00050697          	auipc	a3,0x50
    e886e2ce:	4fe68693          	addi	a3,a3,1278 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886e2d2:	4581                	li	a1,0
    e886e2d4:	4501                	li	a0,0
{
    e886e2d6:	f052                	sd	s4,32(sp)
    e886e2d8:	e486                	sd	ra,72(sp)
    e886e2da:	e0a2                	sd	s0,64(sp)
    e886e2dc:	8a3a                	mv	s4,a4
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886e2de:	8c8d90ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
	require_action( request, exit, err = kNoMemoryErr );
    e886e2e2:	ed19                	bnez	a0,e886e300 <AirPlayReceiverSessionChangeModes+0x50>
    e886e2e4:	77f9                	lui	a5,0xffffe
    e886e2e6:	5b87879b          	addiw	a5,a5,1464
    e886e2ea:	c63e                	sw	a5,12(sp)
	require_noerr( err, exit );
	
exit:
	CFReleaseNullSafe( request );
	return( err );
}
    e886e2ec:	60a6                	ld	ra,72(sp)
    e886e2ee:	6406                	ld	s0,64(sp)
	return( err );
    e886e2f0:	4532                	lw	a0,12(sp)
}
    e886e2f2:	74e2                	ld	s1,56(sp)
    e886e2f4:	7942                	ld	s2,48(sp)
    e886e2f6:	79a2                	ld	s3,40(sp)
    e886e2f8:	7a02                	ld	s4,32(sp)
    e886e2fa:	6ae2                	ld	s5,24(sp)
    e886e2fc:	6161                	addi	sp,sp,80
    e886e2fe:	8082                	ret
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_Type ), CFSTR( kAirPlayCommand_ChangeModes ) );
    e886e300:	00030617          	auipc	a2,0x30
    e886e304:	ee860613          	addi	a2,a2,-280 # e889e1e8 <icmp6_param_problem+0x117a>
    e886e308:	00030597          	auipc	a1,0x30
    e886e30c:	d1058593          	addi	a1,a1,-752 # e889e018 <icmp6_param_problem+0xfaa>
    e886e310:	842a                	mv	s0,a0
    e886e312:	940d90ef          	jal	ra,e8847452 <CFDictionarySetValue>
	params = AirPlayCreateModesDictionary( inChanges, inReason, &err );
    e886e316:	8526                	mv	a0,s1
    e886e318:	0070                	addi	a2,sp,12
    e886e31a:	85d6                	mv	a1,s5
    e886e31c:	7a1010ef          	jal	ra,e88702bc <AirPlayCreateModesDictionary>
    e886e320:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e886e322:	47b2                	lw	a5,12(sp)
    e886e324:	e39d                	bnez	a5,e886e34a <AirPlayReceiverSessionChangeModes+0x9a>
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_Params ), params );
    e886e326:	862a                	mv	a2,a0
    e886e328:	00030597          	auipc	a1,0x30
    e886e32c:	ed858593          	addi	a1,a1,-296 # e889e200 <icmp6_param_problem+0x1192>
    e886e330:	8522                	mv	a0,s0
    e886e332:	920d90ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( params );
    e886e336:	8526                	mv	a0,s1
    e886e338:	e13d80ef          	jal	ra,e884714a <CFRelease>
	err = AirPlayReceiverSessionSendCommand( inSession, request, inCompletion, inContext );
    e886e33c:	86d2                	mv	a3,s4
    e886e33e:	864e                	mv	a2,s3
    e886e340:	85a2                	mv	a1,s0
    e886e342:	854a                	mv	a0,s2
    e886e344:	fdcfe0ef          	jal	ra,e886cb20 <AirPlayReceiverSessionSendCommand>
    e886e348:	c62a                	sw	a0,12(sp)
	CFReleaseNullSafe( request );
    e886e34a:	8522                	mv	a0,s0
    e886e34c:	dffd80ef          	jal	ra,e884714a <CFRelease>
    e886e350:	bf71                	j	e886e2ec <AirPlayReceiverSessionChangeModes+0x3c>

00000000e886e352 <AirPlayReceiverSessionChangeResourceMode>:
		AirPlayConstraint							inTakeConstraint, 
		AirPlayConstraint							inBorrowOrUnborrowConstraint, 
		CFStringRef									inReason, 
		AirPlayReceiverSessionCommandCompletionFunc	inCompletion, 
		void *										inContext )
{
    e886e352:	7119                	addi	sp,sp,-128
    e886e354:	f8a2                	sd	s0,112(sp)
    e886e356:	f0ca                	sd	s2,96(sp)
    e886e358:	ecce                	sd	s3,88(sp)
    e886e35a:	842e                	mv	s0,a1
    e886e35c:	89aa                	mv	s3,a0
    e886e35e:	8932                	mv	s2,a2
	OSStatus				err;
	AirPlayModeChanges		changes;
	
	AirPlayModeChangesInit( &changes );
    e886e360:	4581                	li	a1,0
    e886e362:	02c00613          	li	a2,44
    e886e366:	1008                	addi	a0,sp,32
{
    e886e368:	f4a6                	sd	s1,104(sp)
    e886e36a:	ec3a                	sd	a4,24(sp)
    e886e36c:	84b6                	mv	s1,a3
    e886e36e:	e83e                	sd	a5,16(sp)
    e886e370:	e442                	sd	a6,8(sp)
    e886e372:	fc86                	sd	ra,120(sp)
    e886e374:	e046                	sd	a7,0(sp)
	AirPlayModeChangesInit( &changes );
    e886e376:	01e0e0ef          	jal	ra,e887c394 <eLIBs_memset>
	if( inResourceID == kAirPlayResourceID_MainScreen )
    e886e37a:	4605                	li	a2,1
    e886e37c:	f901468b          	ldd	a3,a6,(sp),0,4
    e886e380:	fae1478b          	ldd	a5,a4,(sp),1,4
    e886e384:	00c41d63          	bne	s0,a2,e886e39e <AirPlayReceiverSessionChangeResourceMode+0x4c>
	{
		changes.screen.type								= inType;
    e886e388:	d04a                	sw	s2,32(sp)
		changes.screen.priority							= inPriority;
    e886e38a:	d226                	sw	s1,36(sp)
		changes.screen.takeConstraint					= inTakeConstraint;
    e886e38c:	d43a                	sw	a4,40(sp)
		changes.screen.borrowOrUnborrowConstraint		= inBorrowOrUnborrowConstraint;
    e886e38e:	d63e                	sw	a5,44(sp)
		dlogassert( "Bad resource ID: %d\n", inResourceID );
		err = kParamErr;
		goto exit;
	}
	
	err = AirPlayReceiverSessionChangeModes( inSession, &changes, inReason, inCompletion, inContext );
    e886e390:	670a                	ld	a4,128(sp)
    e886e392:	8642                	mv	a2,a6
    e886e394:	100c                	addi	a1,sp,32
    e886e396:	854e                	mv	a0,s3
    e886e398:	f19ff0ef          	jal	ra,e886e2b0 <AirPlayReceiverSessionChangeModes>
	require_noerr( err, exit );
	
exit:
    e886e39c:	a089                	j	e886e3de <AirPlayReceiverSessionChangeResourceMode+0x8c>
	else if( inResourceID == kAirPlayResourceID_MainAudio )
    e886e39e:	4609                	li	a2,2
    e886e3a0:	00c41763          	bne	s0,a2,e886e3ae <AirPlayReceiverSessionChangeResourceMode+0x5c>
		changes.mainAudio.type							= inType;
    e886e3a4:	d84a                	sw	s2,48(sp)
		changes.mainAudio.priority						= inPriority;
    e886e3a6:	da26                	sw	s1,52(sp)
		changes.mainAudio.takeConstraint				= inTakeConstraint;
    e886e3a8:	dc3a                	sw	a4,56(sp)
		changes.mainAudio.borrowOrUnborrowConstraint	= inBorrowOrUnborrowConstraint;
    e886e3aa:	de3e                	sw	a5,60(sp)
    e886e3ac:	b7d5                	j	e886e390 <AirPlayReceiverSessionChangeResourceMode+0x3e>
		dlogassert( "Bad resource ID: %d\n", inResourceID );
    e886e3ae:	6705                	lui	a4,0x1
    e886e3b0:	4501                	li	a0,0
    e886e3b2:	88a2                	mv	a7,s0
    e886e3b4:	0005b817          	auipc	a6,0x5b
    e886e3b8:	6ec80813          	addi	a6,a6,1772 # e88c9aa0 <kAirPlayReceiverServerClass+0xa8>
    e886e3bc:	0005d797          	auipc	a5,0x5d
    e886e3c0:	2fc78793          	addi	a5,a5,764 # e88cb6b8 <__PRETTY_FUNCTION__.14648>
    e886e3c4:	42170713          	addi	a4,a4,1057 # 1421 <memcmp-0xe87febdf>
    e886e3c8:	0005c697          	auipc	a3,0x5c
    e886e3cc:	e0868693          	addi	a3,a3,-504 # e88ca1d0 <kAirPlayReceiverServerClass+0x7d8>
    e886e3d0:	4601                	li	a2,0
    e886e3d2:	4581                	li	a1,0
    e886e3d4:	ff5df0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
		err = kParamErr;
    e886e3d8:	7579                	lui	a0,0xffffe
    e886e3da:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
	return( err );
}
    e886e3de:	70e6                	ld	ra,120(sp)
    e886e3e0:	7446                	ld	s0,112(sp)
    e886e3e2:	74a6                	ld	s1,104(sp)
    e886e3e4:	7906                	ld	s2,96(sp)
    e886e3e6:	69e6                	ld	s3,88(sp)
    e886e3e8:	6109                	addi	sp,sp,128
    e886e3ea:	8082                	ret

00000000e886e3ec <AirPlayReceiverSessionMakeModeStateFromDictionary>:
OSStatus
	AirPlayReceiverSessionMakeModeStateFromDictionary( 
		AirPlayReceiverSessionRef	inSession, 
		CFDictionaryRef				inDict, 
		AirPlayModeState *			outModes )
{
    e886e3ec:	7175                	addi	sp,sp,-144
    e886e3ee:	e122                	sd	s0,128(sp)
    e886e3f0:	8432                	mv	s0,a2
    e886e3f2:	f0d2                	sd	s4,96(sp)
	CFDictionaryRef		dict;
	int					x;
	
	(void) inSession;
	
	AirPlayModeStateInit( outModes );
    e886e3f4:	4661                	li	a2,24
{
    e886e3f6:	8a2e                	mv	s4,a1
	AirPlayModeStateInit( outModes );
    e886e3f8:	8522                	mv	a0,s0
    e886e3fa:	4581                	li	a1,0
{
    e886e3fc:	e506                	sd	ra,136(sp)
    e886e3fe:	fca6                	sd	s1,120(sp)
    e886e400:	f8ca                	sd	s2,112(sp)
    e886e402:	f4ce                	sd	s3,104(sp)
    e886e404:	ecd6                	sd	s5,88(sp)
    e886e406:	e8da                	sd	s6,80(sp)
    e886e408:	e4de                	sd	s7,72(sp)
    e886e40a:	e0e2                	sd	s8,64(sp)
    e886e40c:	fc66                	sd	s9,56(sp)
    e886e40e:	f86a                	sd	s10,48(sp)
    e886e410:	f46e                	sd	s11,40(sp)
	AirPlayModeStateInit( outModes );
    e886e412:	7830d0ef          	jal	ra,e887c394 <eLIBs_memset>
	
	// AppStates
	
	array = CFDictionaryGetCFArray( inDict, CFSTR( kAirPlayKey_AppStates ), NULL );
    e886e416:	d53d80ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e886e41a:	0005061b          	sext.w	a2,a0
    e886e41e:	4681                	li	a3,0
    e886e420:	00030597          	auipc	a1,0x30
    e886e424:	df058593          	addi	a1,a1,-528 # e889e210 <icmp6_param_problem+0x11a2>
    e886e428:	8552                	mv	a0,s4
    e886e42a:	a80de0ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
	n = array ? CFArrayGetCount( array ) : 0;
    e886e42e:	e129                	bnez	a0,e886e470 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x84>
		}
	}
	
	// Resources
	
	array = CFDictionaryGetCFArray( inDict, CFSTR( kAirPlayKey_Resources ), NULL );
    e886e430:	d39d80ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e886e434:	0005061b          	sext.w	a2,a0
    e886e438:	4681                	li	a3,0
    e886e43a:	8552                	mv	a0,s4
    e886e43c:	00030597          	auipc	a1,0x30
    e886e440:	dec58593          	addi	a1,a1,-532 # e889e228 <icmp6_param_problem+0x11ba>
    e886e444:	a66de0ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e886e448:	8a2a                	mv	s4,a0
	n = array ? CFArrayGetCount( array ) : 0;
    e886e44a:	12051163          	bnez	a0,e886e56c <AirPlayReceiverSessionMakeModeStateFromDictionary+0x180>
			default:
				atr_ulog( kLogLevelNotice, "### Ignoring unknown resource state %@\n", dict );
				break;
		}
	}
	err = kNoErr;
    e886e44e:	ce02                	sw	zero,28(sp)
	
exit:
	return( err );
}
    e886e450:	60aa                	ld	ra,136(sp)
    e886e452:	640a                	ld	s0,128(sp)
    e886e454:	4572                	lw	a0,28(sp)
    e886e456:	74e6                	ld	s1,120(sp)
    e886e458:	7946                	ld	s2,112(sp)
    e886e45a:	79a6                	ld	s3,104(sp)
    e886e45c:	7a06                	ld	s4,96(sp)
    e886e45e:	6ae6                	ld	s5,88(sp)
    e886e460:	6b46                	ld	s6,80(sp)
    e886e462:	6ba6                	ld	s7,72(sp)
    e886e464:	6c06                	ld	s8,64(sp)
    e886e466:	7ce2                	ld	s9,56(sp)
    e886e468:	7d42                	ld	s10,48(sp)
    e886e46a:	7da2                	ld	s11,40(sp)
    e886e46c:	6149                	addi	sp,sp,144
    e886e46e:	8082                	ret
    e886e470:	8aaa                	mv	s5,a0
	n = array ? CFArrayGetCount( array ) : 0;
    e886e472:	d81d80ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e886e476:	e42a                	sd	a0,8(sp)
	for( i = 0; i < n; ++i )
    e886e478:	4481                	li	s1,0
		x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_AppStateID ), NULL );
    e886e47a:	00030c17          	auipc	s8,0x30
    e886e47e:	dc6c0c13          	addi	s8,s8,-570 # e889e240 <icmp6_param_problem+0x11d2>
		switch( x )
    e886e482:	4b05                	li	s6,1
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_Entity ), &err );
    e886e484:	00030917          	auipc	s2,0x30
    e886e488:	dd490913          	addi	s2,s2,-556 # e889e258 <icmp6_param_problem+0x11ea>
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_SpeechMode ), &err );
    e886e48c:	00030c97          	auipc	s9,0x30
    e886e490:	ddcc8c93          	addi	s9,s9,-548 # e889e268 <icmp6_param_problem+0x11fa>
				atr_ulog( kLogLevelNotice, "### Ignoring unknown app state %@\n", dict );
    e886e494:	00067997          	auipc	s3,0x67
    e886e498:	dcc98993          	addi	s3,s3,-564 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e49c:	03200d13          	li	s10,50
    e886e4a0:	5dfd                	li	s11,-1
	for( i = 0; i < n; ++i )
    e886e4a2:	67a2                	ld	a5,8(sp)
    e886e4a4:	f8f4d6e3          	bge	s1,a5,e886e430 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x44>
		dict = CFArrayGetCFDictionaryAtIndex( array, i, &err );
    e886e4a8:	efbd80ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e886e4ac:	0005061b          	sext.w	a2,a0
    e886e4b0:	0874                	addi	a3,sp,28
    e886e4b2:	85a6                	mv	a1,s1
    e886e4b4:	8556                	mv	a0,s5
    e886e4b6:	bd7dd0ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
    e886e4ba:	8baa                	mv	s7,a0
		require_noerr( err, exit );
    e886e4bc:	47f2                	lw	a5,28(sp)
    e886e4be:	fbc9                	bnez	a5,e886e450 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x64>
		x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_AppStateID ), NULL );
    e886e4c0:	4601                	li	a2,0
    e886e4c2:	85e2                	mv	a1,s8
    e886e4c4:	9acde0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886e4c8:	2501                	sext.w	a0,a0
		switch( x )
    e886e4ca:	07650563          	beq	a0,s6,e886e534 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x148>
    e886e4ce:	02ab4863          	blt	s6,a0,e886e4fe <AirPlayReceiverSessionMakeModeStateFromDictionary+0x112>
    e886e4d2:	cd39                	beqz	a0,e886e530 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x144>
				atr_ulog( kLogLevelNotice, "### Ignoring unknown app state %@\n", dict );
    e886e4d4:	0009a783          	lw	a5,0(s3)
    e886e4d8:	04fd4c63          	blt	s10,a5,e886e530 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x144>
    e886e4dc:	09b78163          	beq	a5,s11,e886e55e <AirPlayReceiverSessionMakeModeStateFromDictionary+0x172>
    e886e4e0:	875e                	mv	a4,s7
    e886e4e2:	0005b697          	auipc	a3,0x5b
    e886e4e6:	77668693          	addi	a3,a3,1910 # e88c9c58 <kAirPlayReceiverServerClass+0x260>
    e886e4ea:	03200613          	li	a2,50
    e886e4ee:	0005d597          	auipc	a1,0x5d
    e886e4f2:	1fa58593          	addi	a1,a1,506 # e88cb6e8 <__PRETTY_FUNCTION__.14674>
    e886e4f6:	854e                	mv	a0,s3
    e886e4f8:	f7de50ef          	jal	ra,e8854474 <LogPrintF>
    e886e4fc:	a815                	j	e886e530 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x144>
		switch( x )
    e886e4fe:	4789                	li	a5,2
    e886e500:	00f50f63          	beq	a0,a5,e886e51e <AirPlayReceiverSessionMakeModeStateFromDictionary+0x132>
    e886e504:	478d                	li	a5,3
    e886e506:	fcf517e3          	bne	a0,a5,e886e4d4 <AirPlayReceiverSessionMakeModeStateFromDictionary+0xe8>
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_Entity ), &err );
    e886e50a:	0870                	addi	a2,sp,28
    e886e50c:	85ca                	mv	a1,s2
    e886e50e:	855e                	mv	a0,s7
    e886e510:	960de0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886e514:	2501                	sext.w	a0,a0
				require_noerr( err, exit );
    e886e516:	47f2                	lw	a5,28(sp)
    e886e518:	ff85                	bnez	a5,e886e450 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x64>
				outModes->turnByTurn = x;
    e886e51a:	c848                	sw	a0,20(s0)
				break;
    e886e51c:	a811                	j	e886e530 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x144>
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_Entity ), &err );
    e886e51e:	0870                	addi	a2,sp,28
    e886e520:	85ca                	mv	a1,s2
    e886e522:	855e                	mv	a0,s7
    e886e524:	94cde0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886e528:	2501                	sext.w	a0,a0
				require_noerr( err, exit );
    e886e52a:	47f2                	lw	a5,28(sp)
    e886e52c:	f395                	bnez	a5,e886e450 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x64>
				outModes->phoneCall = x;
    e886e52e:	c408                	sw	a0,8(s0)
	for( i = 0; i < n; ++i )
    e886e530:	2485                	addiw	s1,s1,1
    e886e532:	bf85                	j	e886e4a2 <AirPlayReceiverSessionMakeModeStateFromDictionary+0xb6>
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_Entity ), &err );
    e886e534:	0870                	addi	a2,sp,28
    e886e536:	85ca                	mv	a1,s2
    e886e538:	855e                	mv	a0,s7
    e886e53a:	936de0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886e53e:	2501                	sext.w	a0,a0
				require_noerr( err, exit );
    e886e540:	47f2                	lw	a5,28(sp)
    e886e542:	f00797e3          	bnez	a5,e886e450 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x64>
				outModes->speech.entity = x;
    e886e546:	c448                	sw	a0,12(s0)
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_SpeechMode ), &err );
    e886e548:	0870                	addi	a2,sp,28
    e886e54a:	85e6                	mv	a1,s9
    e886e54c:	855e                	mv	a0,s7
    e886e54e:	922de0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886e552:	2501                	sext.w	a0,a0
				require_noerr( err, exit );
    e886e554:	47f2                	lw	a5,28(sp)
    e886e556:	ee079de3          	bnez	a5,e886e450 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x64>
				outModes->speech.mode = x;
    e886e55a:	c808                	sw	a0,16(s0)
				break;
    e886e55c:	bfd1                	j	e886e530 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x144>
				atr_ulog( kLogLevelNotice, "### Ignoring unknown app state %@\n", dict );
    e886e55e:	03200593          	li	a1,50
    e886e562:	854e                	mv	a0,s3
    e886e564:	b0fe50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e568:	d561                	beqz	a0,e886e530 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x144>
    e886e56a:	bf9d                	j	e886e4e0 <AirPlayReceiverSessionMakeModeStateFromDictionary+0xf4>
	n = array ? CFArrayGetCount( array ) : 0;
    e886e56c:	c87d80ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e886e570:	8b2a                	mv	s6,a0
	for( i = 0; i < n; ++i )
    e886e572:	4481                	li	s1,0
		x = (AirPlayAppStateID) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_ResourceID ), NULL );
    e886e574:	00030b97          	auipc	s7,0x30
    e886e578:	d0cb8b93          	addi	s7,s7,-756 # e889e280 <icmp6_param_problem+0x1212>
		switch( x )
    e886e57c:	4c05                	li	s8,1
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_Entity ), &err );
    e886e57e:	00030a97          	auipc	s5,0x30
    e886e582:	cdaa8a93          	addi	s5,s5,-806 # e889e258 <icmp6_param_problem+0x11ea>
		switch( x )
    e886e586:	4c89                	li	s9,2
				atr_ulog( kLogLevelNotice, "### Ignoring unknown resource state %@\n", dict );
    e886e588:	00067917          	auipc	s2,0x67
    e886e58c:	cd890913          	addi	s2,s2,-808 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e590:	03200d13          	li	s10,50
    e886e594:	5dfd                	li	s11,-1
	for( i = 0; i < n; ++i )
    e886e596:	eb64dce3          	bge	s1,s6,e886e44e <AirPlayReceiverSessionMakeModeStateFromDictionary+0x62>
		dict = CFArrayGetCFDictionaryAtIndex( array, i, &err );
    e886e59a:	e09d80ef          	jal	ra,e88473a2 <CFDictionaryGetTypeID>
    e886e59e:	0005061b          	sext.w	a2,a0
    e886e5a2:	0874                	addi	a3,sp,28
    e886e5a4:	85a6                	mv	a1,s1
    e886e5a6:	8552                	mv	a0,s4
    e886e5a8:	ae5dd0ef          	jal	ra,e884c08c <CFArrayGetTypedValueAtIndex>
    e886e5ac:	89aa                	mv	s3,a0
		require_noerr( err, exit );
    e886e5ae:	47f2                	lw	a5,28(sp)
    e886e5b0:	ea0790e3          	bnez	a5,e886e450 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x64>
		x = (AirPlayAppStateID) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_ResourceID ), NULL );
    e886e5b4:	4601                	li	a2,0
    e886e5b6:	85de                	mv	a1,s7
    e886e5b8:	8b8de0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886e5bc:	2501                	sext.w	a0,a0
		switch( x )
    e886e5be:	01850763          	beq	a0,s8,e886e5cc <AirPlayReceiverSessionMakeModeStateFromDictionary+0x1e0>
    e886e5c2:	03950063          	beq	a0,s9,e886e5e2 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x1f6>
    e886e5c6:	e90d                	bnez	a0,e886e5f8 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x20c>
	for( i = 0; i < n; ++i )
    e886e5c8:	2485                	addiw	s1,s1,1
    e886e5ca:	b7f1                	j	e886e596 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x1aa>
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_Entity ), &err );
    e886e5cc:	0870                	addi	a2,sp,28
    e886e5ce:	85d6                	mv	a1,s5
    e886e5d0:	854e                	mv	a0,s3
    e886e5d2:	89ede0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886e5d6:	2501                	sext.w	a0,a0
				require_noerr( err, exit );
    e886e5d8:	47f2                	lw	a5,28(sp)
    e886e5da:	e6079be3          	bnez	a5,e886e450 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x64>
				outModes->screen = x;
    e886e5de:	c008                	sw	a0,0(s0)
				break;
    e886e5e0:	b7e5                	j	e886e5c8 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x1dc>
				x = (int) CFDictionaryGetInt64( dict, CFSTR( kAirPlayKey_Entity ), &err );
    e886e5e2:	0870                	addi	a2,sp,28
    e886e5e4:	85d6                	mv	a1,s5
    e886e5e6:	854e                	mv	a0,s3
    e886e5e8:	888de0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886e5ec:	2501                	sext.w	a0,a0
				require_noerr( err, exit );
    e886e5ee:	47f2                	lw	a5,28(sp)
    e886e5f0:	e60790e3          	bnez	a5,e886e450 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x64>
				outModes->mainAudio = x;
    e886e5f4:	c048                	sw	a0,4(s0)
				break;
    e886e5f6:	bfc9                	j	e886e5c8 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x1dc>
				atr_ulog( kLogLevelNotice, "### Ignoring unknown resource state %@\n", dict );
    e886e5f8:	00092783          	lw	a5,0(s2)
    e886e5fc:	fcfd46e3          	blt	s10,a5,e886e5c8 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x1dc>
    e886e600:	03b78163          	beq	a5,s11,e886e622 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x236>
    e886e604:	874e                	mv	a4,s3
    e886e606:	0005b697          	auipc	a3,0x5b
    e886e60a:	67a68693          	addi	a3,a3,1658 # e88c9c80 <kAirPlayReceiverServerClass+0x288>
    e886e60e:	03200613          	li	a2,50
    e886e612:	0005d597          	auipc	a1,0x5d
    e886e616:	0d658593          	addi	a1,a1,214 # e88cb6e8 <__PRETTY_FUNCTION__.14674>
    e886e61a:	854a                	mv	a0,s2
    e886e61c:	e59e50ef          	jal	ra,e8854474 <LogPrintF>
    e886e620:	b765                	j	e886e5c8 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x1dc>
    e886e622:	03200593          	li	a1,50
    e886e626:	854a                	mv	a0,s2
    e886e628:	a4be50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e62c:	dd51                	beqz	a0,e886e5c8 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x1dc>
    e886e62e:	bfd9                	j	e886e604 <AirPlayReceiverSessionMakeModeStateFromDictionary+0x218>

00000000e886e630 <AirPlayReceiverSessionControl>:
{
    e886e630:	7119                	addi	sp,sp,-128
    e886e632:	f8a2                	sd	s0,112(sp)
    e886e634:	f4a6                	sd	s1,104(sp)
    e886e636:	f0ca                	sd	s2,96(sp)
    e886e638:	ecce                	sd	s3,88(sp)
    e886e63a:	e8d2                	sd	s4,80(sp)
    e886e63c:	e4d6                	sd	s5,72(sp)
    e886e63e:	fc86                	sd	ra,120(sp)
    e886e640:	e0da                	sd	s6,64(sp)
    e886e642:	fc5e                	sd	s7,56(sp)
    e886e644:	f862                	sd	s8,48(sp)
    e886e646:	89be                	mv	s3,a5
	else if( session->delegate.modesChanged_f && CFEqual( inCommand, CFSTR( kAirPlayCommand_ModesChanged ) ) )
    e886e648:	713c                	ld	a5,96(a0)
{
    e886e64a:	842a                	mv	s0,a0
    e886e64c:	8aae                	mv	s5,a1
    e886e64e:	8932                	mv	s2,a2
    e886e650:	8a36                	mv	s4,a3
    e886e652:	84ba                	mv	s1,a4
	else if( session->delegate.modesChanged_f && CFEqual( inCommand, CFSTR( kAirPlayCommand_ModesChanged ) ) )
    e886e654:	1c078763          	beqz	a5,e886e822 <AirPlayReceiverSessionControl+0x1f2>
    e886e658:	00030597          	auipc	a1,0x30
    e886e65c:	c4058593          	addi	a1,a1,-960 # e889e298 <icmp6_param_problem+0x122a>
    e886e660:	8532                	mv	a0,a2
    e886e662:	aedd80ef          	jal	ra,e884714e <CFEqual>
    e886e666:	1a050e63          	beqz	a0,e886e822 <AirPlayReceiverSessionControl+0x1f2>
		require_action( inParams, exit, err = kParamErr );
    e886e66a:	1a048863          	beqz	s1,e886e81a <AirPlayReceiverSessionControl+0x1ea>
		err = AirPlayReceiverSessionMakeModeStateFromDictionary( session, inParams, &modeState );
    e886e66e:	85a6                	mv	a1,s1
    e886e670:	0830                	addi	a2,sp,24
    e886e672:	8522                	mv	a0,s0
    e886e674:	d79ff0ef          	jal	ra,e886e3ec <AirPlayReceiverSessionMakeModeStateFromDictionary>
    e886e678:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e886e67a:	18051363          	bnez	a0,e886e800 <AirPlayReceiverSessionControl+0x1d0>
		atr_ulog( kLogLevelNotice, "Modes changed: screen %s, mainAudio %s, speech %s (%s), phone %s, turns %s\n", 
    e886e67e:	00067517          	auipc	a0,0x67
    e886e682:	be250513          	addi	a0,a0,-1054 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e686:	411c                	lw	a5,0(a0)
    e886e688:	03200713          	li	a4,50
    e886e68c:	16f74563          	blt	a4,a5,e886e7f6 <AirPlayReceiverSessionControl+0x1c6>
    e886e690:	577d                	li	a4,-1
    e886e692:	14e78c63          	beq	a5,a4,e886e7ea <AirPlayReceiverSessionControl+0x1ba>
    e886e696:	47e2                	lw	a5,24(sp)
    e886e698:	0005b717          	auipc	a4,0x5b
    e886e69c:	43070713          	addi	a4,a4,1072 # e88c9ac8 <kAirPlayReceiverServerClass+0xd0>
    e886e6a0:	c39d                	beqz	a5,e886e6c6 <AirPlayReceiverSessionControl+0x96>
    e886e6a2:	4685                	li	a3,1
    e886e6a4:	0005b717          	auipc	a4,0x5b
    e886e6a8:	42c70713          	addi	a4,a4,1068 # e88c9ad0 <kAirPlayReceiverServerClass+0xd8>
    e886e6ac:	00d78d63          	beq	a5,a3,e886e6c6 <AirPlayReceiverSessionControl+0x96>
    e886e6b0:	4689                	li	a3,2
    e886e6b2:	0005b717          	auipc	a4,0x5b
    e886e6b6:	40670713          	addi	a4,a4,1030 # e88c9ab8 <kAirPlayReceiverServerClass+0xc0>
    e886e6ba:	00d78663          	beq	a5,a3,e886e6c6 <AirPlayReceiverSessionControl+0x96>
    e886e6be:	00037717          	auipc	a4,0x37
    e886e6c2:	f6270713          	addi	a4,a4,-158 # e88a5620 <end.8789+0x1f78>
    e886e6c6:	46f2                	lw	a3,28(sp)
    e886e6c8:	0005b797          	auipc	a5,0x5b
    e886e6cc:	40078793          	addi	a5,a5,1024 # e88c9ac8 <kAirPlayReceiverServerClass+0xd0>
    e886e6d0:	c29d                	beqz	a3,e886e6f6 <AirPlayReceiverSessionControl+0xc6>
    e886e6d2:	4605                	li	a2,1
    e886e6d4:	0005b797          	auipc	a5,0x5b
    e886e6d8:	3fc78793          	addi	a5,a5,1020 # e88c9ad0 <kAirPlayReceiverServerClass+0xd8>
    e886e6dc:	00c68d63          	beq	a3,a2,e886e6f6 <AirPlayReceiverSessionControl+0xc6>
    e886e6e0:	4609                	li	a2,2
    e886e6e2:	0005b797          	auipc	a5,0x5b
    e886e6e6:	3d678793          	addi	a5,a5,982 # e88c9ab8 <kAirPlayReceiverServerClass+0xc0>
    e886e6ea:	00c68663          	beq	a3,a2,e886e6f6 <AirPlayReceiverSessionControl+0xc6>
    e886e6ee:	00037797          	auipc	a5,0x37
    e886e6f2:	f3278793          	addi	a5,a5,-206 # e88a5620 <end.8789+0x1f78>
    e886e6f6:	5692                	lw	a3,36(sp)
    e886e6f8:	0005b817          	auipc	a6,0x5b
    e886e6fc:	3d080813          	addi	a6,a6,976 # e88c9ac8 <kAirPlayReceiverServerClass+0xd0>
    e886e700:	c29d                	beqz	a3,e886e726 <AirPlayReceiverSessionControl+0xf6>
    e886e702:	4605                	li	a2,1
    e886e704:	0005b817          	auipc	a6,0x5b
    e886e708:	3cc80813          	addi	a6,a6,972 # e88c9ad0 <kAirPlayReceiverServerClass+0xd8>
    e886e70c:	00c68d63          	beq	a3,a2,e886e726 <AirPlayReceiverSessionControl+0xf6>
    e886e710:	4609                	li	a2,2
    e886e712:	0005b817          	auipc	a6,0x5b
    e886e716:	3a680813          	addi	a6,a6,934 # e88c9ab8 <kAirPlayReceiverServerClass+0xc0>
    e886e71a:	00c68663          	beq	a3,a2,e886e726 <AirPlayReceiverSessionControl+0xf6>
    e886e71e:	00037817          	auipc	a6,0x37
    e886e722:	f0280813          	addi	a6,a6,-254 # e88a5620 <end.8789+0x1f78>
    e886e726:	56a2                	lw	a3,40(sp)
    e886e728:	0005b897          	auipc	a7,0x5b
    e886e72c:	3a088893          	addi	a7,a7,928 # e88c9ac8 <kAirPlayReceiverServerClass+0xd0>
    e886e730:	ca95                	beqz	a3,e886e764 <AirPlayReceiverSessionControl+0x134>
    e886e732:	567d                	li	a2,-1
    e886e734:	00053897          	auipc	a7,0x53
    e886e738:	cac88893          	addi	a7,a7,-852 # e88c13e0 <__PRETTY_FUNCTION__.9824+0x98>
    e886e73c:	02c68463          	beq	a3,a2,e886e764 <AirPlayReceiverSessionControl+0x134>
    e886e740:	4605                	li	a2,1
    e886e742:	0005b897          	auipc	a7,0x5b
    e886e746:	3ae88893          	addi	a7,a7,942 # e88c9af0 <kAirPlayReceiverServerClass+0xf8>
    e886e74a:	00c68d63          	beq	a3,a2,e886e764 <AirPlayReceiverSessionControl+0x134>
    e886e74e:	4609                	li	a2,2
    e886e750:	0005b897          	auipc	a7,0x5b
    e886e754:	39088893          	addi	a7,a7,912 # e88c9ae0 <kAirPlayReceiverServerClass+0xe8>
    e886e758:	00c68663          	beq	a3,a2,e886e764 <AirPlayReceiverSessionControl+0x134>
    e886e75c:	00037897          	auipc	a7,0x37
    e886e760:	ec488893          	addi	a7,a7,-316 # e88a5620 <end.8789+0x1f78>
    e886e764:	5602                	lw	a2,32(sp)
    e886e766:	0005b697          	auipc	a3,0x5b
    e886e76a:	36268693          	addi	a3,a3,866 # e88c9ac8 <kAirPlayReceiverServerClass+0xd0>
    e886e76e:	c21d                	beqz	a2,e886e794 <AirPlayReceiverSessionControl+0x164>
    e886e770:	4585                	li	a1,1
    e886e772:	0005b697          	auipc	a3,0x5b
    e886e776:	35e68693          	addi	a3,a3,862 # e88c9ad0 <kAirPlayReceiverServerClass+0xd8>
    e886e77a:	00b60d63          	beq	a2,a1,e886e794 <AirPlayReceiverSessionControl+0x164>
    e886e77e:	4589                	li	a1,2
    e886e780:	0005b697          	auipc	a3,0x5b
    e886e784:	33868693          	addi	a3,a3,824 # e88c9ab8 <kAirPlayReceiverServerClass+0xc0>
    e886e788:	00b60663          	beq	a2,a1,e886e794 <AirPlayReceiverSessionControl+0x164>
    e886e78c:	00037697          	auipc	a3,0x37
    e886e790:	e9468693          	addi	a3,a3,-364 # e88a5620 <end.8789+0x1f78>
    e886e794:	55b2                	lw	a1,44(sp)
    e886e796:	0005b617          	auipc	a2,0x5b
    e886e79a:	33260613          	addi	a2,a2,818 # e88c9ac8 <kAirPlayReceiverServerClass+0xd0>
    e886e79e:	c19d                	beqz	a1,e886e7c4 <AirPlayReceiverSessionControl+0x194>
    e886e7a0:	4505                	li	a0,1
    e886e7a2:	0005b617          	auipc	a2,0x5b
    e886e7a6:	32e60613          	addi	a2,a2,814 # e88c9ad0 <kAirPlayReceiverServerClass+0xd8>
    e886e7aa:	00a58d63          	beq	a1,a0,e886e7c4 <AirPlayReceiverSessionControl+0x194>
    e886e7ae:	4509                	li	a0,2
    e886e7b0:	0005b617          	auipc	a2,0x5b
    e886e7b4:	30860613          	addi	a2,a2,776 # e88c9ab8 <kAirPlayReceiverServerClass+0xc0>
    e886e7b8:	00a58663          	beq	a1,a0,e886e7c4 <AirPlayReceiverSessionControl+0x194>
    e886e7bc:	00037617          	auipc	a2,0x37
    e886e7c0:	e6460613          	addi	a2,a2,-412 # e88a5620 <end.8789+0x1f78>
    e886e7c4:	e432                	sd	a2,8(sp)
    e886e7c6:	e036                	sd	a3,0(sp)
    e886e7c8:	03200613          	li	a2,50
    e886e7cc:	0005b697          	auipc	a3,0x5b
    e886e7d0:	33468693          	addi	a3,a3,820 # e88c9b00 <kAirPlayReceiverServerClass+0x108>
    e886e7d4:	0005d597          	auipc	a1,0x5d
    e886e7d8:	9ac58593          	addi	a1,a1,-1620 # e88cb180 <__PRETTY_FUNCTION__.13504>
    e886e7dc:	00067517          	auipc	a0,0x67
    e886e7e0:	a8450513          	addi	a0,a0,-1404 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e7e4:	c91e50ef          	jal	ra,e8854474 <LogPrintF>
    e886e7e8:	a039                	j	e886e7f6 <AirPlayReceiverSessionControl+0x1c6>
    e886e7ea:	03200593          	li	a1,50
    e886e7ee:	885e50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e7f2:	ea0512e3          	bnez	a0,e886e696 <AirPlayReceiverSessionControl+0x66>
		session->delegate.modesChanged_f( session, &modeState, session->delegate.context );
    e886e7f6:	703c                	ld	a5,96(s0)
    e886e7f8:	7410                	ld	a2,40(s0)
    e886e7fa:	082c                	addi	a1,sp,24
    e886e7fc:	8522                	mv	a0,s0
    e886e7fe:	9782                	jalr	a5
}
    e886e800:	70e6                	ld	ra,120(sp)
    e886e802:	7446                	ld	s0,112(sp)
    e886e804:	8526                	mv	a0,s1
    e886e806:	7906                	ld	s2,96(sp)
    e886e808:	74a6                	ld	s1,104(sp)
    e886e80a:	69e6                	ld	s3,88(sp)
    e886e80c:	6a46                	ld	s4,80(sp)
    e886e80e:	6aa6                	ld	s5,72(sp)
    e886e810:	6b06                	ld	s6,64(sp)
    e886e812:	7be2                	ld	s7,56(sp)
    e886e814:	7c42                	ld	s8,48(sp)
    e886e816:	6109                	addi	sp,sp,128
    e886e818:	8082                	ret
		require_action( inParams, exit, err = kParamErr );
    e886e81a:	74f9                	lui	s1,0xffffe
    e886e81c:	5cf48493          	addi	s1,s1,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e886e820:	b7c5                	j	e886e800 <AirPlayReceiverSessionControl+0x1d0>
	else if( session->delegate.requestUI_f && CFEqual( inCommand, CFSTR( kAirPlayCommand_RequestUI ) ) )
    e886e822:	743c                	ld	a5,104(s0)
    e886e824:	cbbd                	beqz	a5,e886e89a <AirPlayReceiverSessionControl+0x26a>
    e886e826:	00030597          	auipc	a1,0x30
    e886e82a:	a8a58593          	addi	a1,a1,-1398 # e889e2b0 <icmp6_param_problem+0x1242>
    e886e82e:	854a                	mv	a0,s2
    e886e830:	91fd80ef          	jal	ra,e884714e <CFEqual>
    e886e834:	c13d                	beqz	a0,e886e89a <AirPlayReceiverSessionControl+0x26a>
		if( inParams )	url = (CFStringRef) CFDictionaryGetValue( inParams, CFSTR( kAirPlayKey_URL ) );
    e886e836:	c889                	beqz	s1,e886e848 <AirPlayReceiverSessionControl+0x218>
    e886e838:	8526                	mv	a0,s1
    e886e83a:	00030597          	auipc	a1,0x30
    e886e83e:	a8e58593          	addi	a1,a1,-1394 # e889e2c8 <icmp6_param_problem+0x125a>
    e886e842:	bfdd80ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e886e846:	84aa                	mv	s1,a0
		atr_ulog( kLogLevelNotice, "Request accessory UI\n" );
    e886e848:	00067517          	auipc	a0,0x67
    e886e84c:	a1850513          	addi	a0,a0,-1512 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e850:	411c                	lw	a5,0(a0)
    e886e852:	03200713          	li	a4,50
    e886e856:	02f74563          	blt	a4,a5,e886e880 <AirPlayReceiverSessionControl+0x250>
    e886e85a:	577d                	li	a4,-1
    e886e85c:	02e78963          	beq	a5,a4,e886e88e <AirPlayReceiverSessionControl+0x25e>
    e886e860:	0005b697          	auipc	a3,0x5b
    e886e864:	2f068693          	addi	a3,a3,752 # e88c9b50 <kAirPlayReceiverServerClass+0x158>
    e886e868:	03200613          	li	a2,50
    e886e86c:	0005d597          	auipc	a1,0x5d
    e886e870:	91458593          	addi	a1,a1,-1772 # e88cb180 <__PRETTY_FUNCTION__.13504>
    e886e874:	00067517          	auipc	a0,0x67
    e886e878:	9ec50513          	addi	a0,a0,-1556 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886e87c:	bf9e50ef          	jal	ra,e8854474 <LogPrintF>
		session->delegate.requestUI_f( session, url, session->delegate.context );
    e886e880:	743c                	ld	a5,104(s0)
    e886e882:	7410                	ld	a2,40(s0)
    e886e884:	85a6                	mv	a1,s1
    e886e886:	8522                	mv	a0,s0
    e886e888:	9782                	jalr	a5
	err = kNoErr;
    e886e88a:	4481                	li	s1,0
		session->delegate.control_f( session, inCommand, inQualifier, inParams, outParams, session->delegate.context );
    e886e88c:	bf95                	j	e886e800 <AirPlayReceiverSessionControl+0x1d0>
		atr_ulog( kLogLevelNotice, "Request accessory UI\n" );
    e886e88e:	03200593          	li	a1,50
    e886e892:	fe0e50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886e896:	d56d                	beqz	a0,e886e880 <AirPlayReceiverSessionControl+0x250>
    e886e898:	b7e1                	j	e886e860 <AirPlayReceiverSessionControl+0x230>
	else if( CFEqual( inCommand, CFSTR( kAirPlayCommand_UpdateFeedback ) ) )
    e886e89a:	00030597          	auipc	a1,0x30
    e886e89e:	a3e58593          	addi	a1,a1,-1474 # e889e2d8 <icmp6_param_problem+0x126a>
    e886e8a2:	854a                	mv	a0,s2
    e886e8a4:	8abd80ef          	jal	ra,e884714e <CFEqual>
    e886e8a8:	20050463          	beqz	a0,e886eab0 <AirPlayReceiverSessionControl+0x480>
	require_action_quiet( inSession->mainAudioCtx.session || inSession->altAudioCtx.session, exit, err = kNoErr );
    e886e8ac:	45843783          	ld	a5,1112(s0)
    e886e8b0:	e799                	bnez	a5,e886e8be <AirPlayReceiverSessionControl+0x28e>
    e886e8b2:	6785                	lui	a5,0x1
    e886e8b4:	97a2                	add	a5,a5,s0
    e886e8b6:	bd07b783          	ld	a5,-1072(a5) # bd0 <memcmp-0xe87ff430>
    e886e8ba:	4481                	li	s1,0
    e886e8bc:	d3b1                	beqz	a5,e886e800 <AirPlayReceiverSessionControl+0x1d0>
    e886e8be:	4481                	li	s1,0
	require_action_quiet( outOutput, exit, err = kNoErr );
    e886e8c0:	f40980e3          	beqz	s3,e886e800 <AirPlayReceiverSessionControl+0x1d0>
	feedback = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886e8c4:	00050697          	auipc	a3,0x50
    e886e8c8:	f0468693          	addi	a3,a3,-252 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886e8cc:	00050617          	auipc	a2,0x50
    e886e8d0:	ecc60613          	addi	a2,a2,-308 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886e8d4:	4581                	li	a1,0
    e886e8d6:	4501                	li	a0,0
    e886e8d8:	acfd80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886e8dc:	8a2a                	mv	s4,a0
	require_action( feedback, exit, err = kNoMemoryErr );
    e886e8de:	1c050563          	beqz	a0,e886eaa8 <AirPlayReceiverSessionControl+0x478>
	streams = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e886e8e2:	00050617          	auipc	a2,0x50
    e886e8e6:	e8e60613          	addi	a2,a2,-370 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e886e8ea:	4581                	li	a1,0
    e886e8ec:	4501                	li	a0,0
    e886e8ee:	8d9d80ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e886e8f2:	8aaa                	mv	s5,a0
	require_action( streams, exit, err = kNoMemoryErr );
    e886e8f4:	1a050363          	beqz	a0,e886ea9a <AirPlayReceiverSessionControl+0x46a>
	CFDictionarySetValue( feedback, CFSTR( kAirPlayKey_Streams ), streams );
    e886e8f8:	862a                	mv	a2,a0
    e886e8fa:	0002f597          	auipc	a1,0x2f
    e886e8fe:	6ee58593          	addi	a1,a1,1774 # e889dfe8 <icmp6_param_problem+0xf7a>
    e886e902:	8552                	mv	a0,s4
    e886e904:	b4fd80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	if( inSession->mainAudioCtx.session )
    e886e908:	45843783          	ld	a5,1112(s0)
    e886e90c:	c3e1                	beqz	a5,e886e9cc <AirPlayReceiverSessionControl+0x39c>
		stream = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886e90e:	00050697          	auipc	a3,0x50
    e886e912:	eba68693          	addi	a3,a3,-326 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886e916:	00050617          	auipc	a2,0x50
    e886e91a:	e8260613          	addi	a2,a2,-382 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886e91e:	4581                	li	a1,0
    e886e920:	4501                	li	a0,0
    e886e922:	a85d80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886e926:	84aa                	mv	s1,a0
		require_action( stream, exit, err = kNoMemoryErr );
    e886e928:	24050463          	beqz	a0,e886eb70 <AirPlayReceiverSessionControl+0x540>
		pthread_mutex_lock( inSession->mainAudioCtx.zeroTimeLockPtr );
    e886e92c:	6905                	lui	s2,0x1
    e886e92e:	9922                	add	s2,s2,s0
    e886e930:	8d893503          	ld	a0,-1832(s2) # 8d8 <memcmp-0xe87ff728>
    e886e934:	1ea0d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		zeroTime = inSession->mainAudioCtx.zeroTime;
    e886e938:	8b893c03          	ld	s8,-1864(s2)
		pthread_mutex_unlock( inSession->mainAudioCtx.zeroTimeLockPtr );
    e886e93c:	8d893503          	ld	a0,-1832(s2)
		zeroTime = inSession->mainAudioCtx.zeroTime;
    e886e940:	8c093b83          	ld	s7,-1856(s2)
    e886e944:	8c892b03          	lw	s6,-1848(s2)
		pthread_mutex_unlock( inSession->mainAudioCtx.zeroTimeLockPtr );
    e886e948:	21a0d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		CFDictionarySetInt64( stream, CFSTR( kAirPlayKey_Type ), inSession->mainAudioCtx.type );
    e886e94c:	46046603          	lwu	a2,1120(s0)
    e886e950:	0002f597          	auipc	a1,0x2f
    e886e954:	6c858593          	addi	a1,a1,1736 # e889e018 <icmp6_param_problem+0xfaa>
    e886e958:	8526                	mv	a0,s1
    e886e95a:	d6cde0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFDictionarySetDouble( stream, CFSTR( kAirPlayKey_SampleRate ), inSession->mainAudioCtx.rateAvg );
    e886e95e:	8b492507          	flw	fa0,-1868(s2)
    e886e962:	00030597          	auipc	a1,0x30
    e886e966:	98e58593          	addi	a1,a1,-1650 # e889e2f0 <icmp6_param_problem+0x1282>
    e886e96a:	8526                	mv	a0,s1
    e886e96c:	42050553          	fcvt.d.s	fa0,fa0
    e886e970:	c73dd0ef          	jal	ra,e884c5e2 <CFDictionarySetDouble>
		if( inSession->mainAudioCtx.rateUpdateCount > 0 )
    e886e974:	8b092783          	lw	a5,-1872(s2)
    e886e978:	c3b9                	beqz	a5,e886e9be <AirPlayReceiverSessionControl+0x38e>
			CFDictionarySetUInt64( stream, CFSTR( kAirPlayKey_StreamConnectionID ), inSession->mainAudioCtx.connectionID );
    e886e97a:	47043603          	ld	a2,1136(s0)
    e886e97e:	0002f597          	auipc	a1,0x2f
    e886e982:	67a58593          	addi	a1,a1,1658 # e889dff8 <icmp6_param_problem+0xf8a>
    e886e986:	8526                	mv	a0,s1
    e886e988:	d3ede0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
			CFDictionarySetUInt64( stream, CFSTR( kAirPlayKey_Timestamp ), zeroTime.hostTime );
    e886e98c:	8662                	mv	a2,s8
    e886e98e:	00030597          	auipc	a1,0x30
    e886e992:	97258593          	addi	a1,a1,-1678 # e889e300 <icmp6_param_problem+0x1292>
    e886e996:	8526                	mv	a0,s1
    e886e998:	d2ede0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
			CFDictionarySetUInt64( stream, CFSTR( kAirPlayKey_TimestampRawNs ), zeroTime.hostTimeRaw );
    e886e99c:	865e                	mv	a2,s7
    e886e99e:	00030597          	auipc	a1,0x30
    e886e9a2:	97a58593          	addi	a1,a1,-1670 # e889e318 <icmp6_param_problem+0x12aa>
    e886e9a6:	8526                	mv	a0,s1
    e886e9a8:	d1ede0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
			CFDictionarySetInt64( stream, CFSTR( kAirPlayKey_SampleTime ), zeroTime.sampleTime );
    e886e9ac:	7c0b360b          	extu	a2,s6,31,0
    e886e9b0:	00030597          	auipc	a1,0x30
    e886e9b4:	98058593          	addi	a1,a1,-1664 # e889e330 <icmp6_param_problem+0x12c2>
    e886e9b8:	8526                	mv	a0,s1
    e886e9ba:	d0cde0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFArrayAppendValue( streams, stream );
    e886e9be:	8556                	mv	a0,s5
    e886e9c0:	85a6                	mv	a1,s1
    e886e9c2:	8afd80ef          	jal	ra,e8847270 <CFArrayAppendValue>
		CFRelease( stream );
    e886e9c6:	8526                	mv	a0,s1
    e886e9c8:	f82d80ef          	jal	ra,e884714a <CFRelease>
	if( inSession->altAudioCtx.session )
    e886e9cc:	6785                	lui	a5,0x1
    e886e9ce:	943e                	add	s0,s0,a5
    e886e9d0:	bd043783          	ld	a5,-1072(s0)
    e886e9d4:	cbcd                	beqz	a5,e886ea86 <AirPlayReceiverSessionControl+0x456>
		stream = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886e9d6:	00050697          	auipc	a3,0x50
    e886e9da:	df268693          	addi	a3,a3,-526 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886e9de:	00050617          	auipc	a2,0x50
    e886e9e2:	dba60613          	addi	a2,a2,-582 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886e9e6:	4581                	li	a1,0
    e886e9e8:	4501                	li	a0,0
    e886e9ea:	9bdd80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886e9ee:	84aa                	mv	s1,a0
		require_action( stream, exit, err = kNoMemoryErr );
    e886e9f0:	18050063          	beqz	a0,e886eb70 <AirPlayReceiverSessionControl+0x540>
		pthread_mutex_lock( inSession->altAudioCtx.zeroTimeLockPtr );
    e886e9f4:	6828                	ld	a0,80(s0)
    e886e9f6:	1280d0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		zeroTime = inSession->altAudioCtx.zeroTime;
    e886e9fa:	ff644b8b          	ldd	s7,s6,(s0),3,4
		pthread_mutex_unlock( inSession->altAudioCtx.zeroTimeLockPtr );
    e886e9fe:	6828                	ld	a0,80(s0)
		zeroTime = inSession->altAudioCtx.zeroTime;
    e886ea00:	04042903          	lw	s2,64(s0)
		pthread_mutex_unlock( inSession->altAudioCtx.zeroTimeLockPtr );
    e886ea04:	15e0d0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		CFDictionarySetInt64( stream, CFSTR( kAirPlayKey_Type ), kAirPlayStreamType_AltAudio );
    e886ea08:	06500613          	li	a2,101
    e886ea0c:	0002f597          	auipc	a1,0x2f
    e886ea10:	60c58593          	addi	a1,a1,1548 # e889e018 <icmp6_param_problem+0xfaa>
    e886ea14:	8526                	mv	a0,s1
    e886ea16:	cb0de0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFDictionarySetDouble( stream, CFSTR( kAirPlayKey_SampleRate ), inSession->altAudioCtx.rateAvg );
    e886ea1a:	02c42507          	flw	fa0,44(s0)
    e886ea1e:	00030597          	auipc	a1,0x30
    e886ea22:	8d258593          	addi	a1,a1,-1838 # e889e2f0 <icmp6_param_problem+0x1282>
    e886ea26:	8526                	mv	a0,s1
    e886ea28:	42050553          	fcvt.d.s	fa0,fa0
    e886ea2c:	bb7dd0ef          	jal	ra,e884c5e2 <CFDictionarySetDouble>
		if( inSession->altAudioCtx.rateUpdateCount > 0 )
    e886ea30:	541c                	lw	a5,40(s0)
    e886ea32:	c3b9                	beqz	a5,e886ea78 <AirPlayReceiverSessionControl+0x448>
			CFDictionarySetUInt64( stream, CFSTR( kAirPlayKey_StreamConnectionID ), inSession->altAudioCtx.connectionID );
    e886ea34:	be843603          	ld	a2,-1048(s0)
    e886ea38:	0002f597          	auipc	a1,0x2f
    e886ea3c:	5c058593          	addi	a1,a1,1472 # e889dff8 <icmp6_param_problem+0xf8a>
    e886ea40:	8526                	mv	a0,s1
    e886ea42:	c84de0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
			CFDictionarySetUInt64( stream, CFSTR( kAirPlayKey_Timestamp ), zeroTime.hostTime );
    e886ea46:	865e                	mv	a2,s7
    e886ea48:	00030597          	auipc	a1,0x30
    e886ea4c:	8b858593          	addi	a1,a1,-1864 # e889e300 <icmp6_param_problem+0x1292>
    e886ea50:	8526                	mv	a0,s1
    e886ea52:	c74de0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
			CFDictionarySetUInt64( stream, CFSTR( kAirPlayKey_TimestampRawNs ), zeroTime.hostTimeRaw );
    e886ea56:	865a                	mv	a2,s6
    e886ea58:	00030597          	auipc	a1,0x30
    e886ea5c:	8c058593          	addi	a1,a1,-1856 # e889e318 <icmp6_param_problem+0x12aa>
    e886ea60:	8526                	mv	a0,s1
    e886ea62:	c64de0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
			CFDictionarySetInt64( stream, CFSTR( kAirPlayKey_SampleTime ), zeroTime.sampleTime );
    e886ea66:	7c09360b          	extu	a2,s2,31,0
    e886ea6a:	00030597          	auipc	a1,0x30
    e886ea6e:	8c658593          	addi	a1,a1,-1850 # e889e330 <icmp6_param_problem+0x12c2>
    e886ea72:	8526                	mv	a0,s1
    e886ea74:	c52de0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFArrayAppendValue( streams, stream );
    e886ea78:	8556                	mv	a0,s5
    e886ea7a:	85a6                	mv	a1,s1
    e886ea7c:	ff4d80ef          	jal	ra,e8847270 <CFArrayAppendValue>
		CFRelease( stream );
    e886ea80:	8526                	mv	a0,s1
    e886ea82:	ec8d80ef          	jal	ra,e884714a <CFRelease>
	*outOutput = feedback;
    e886ea86:	0149b023          	sd	s4,0(s3)
	err = kNoErr;
    e886ea8a:	4481                	li	s1,0
	feedback = NULL;
    e886ea8c:	4a01                	li	s4,0
	CFReleaseNullSafe( streams );
    e886ea8e:	8556                	mv	a0,s5
    e886ea90:	ebad80ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( feedback );
    e886ea94:	000a1663          	bnez	s4,e886eaa0 <AirPlayReceiverSessionControl+0x470>
    e886ea98:	b3a5                	j	e886e800 <AirPlayReceiverSessionControl+0x1d0>
	require_action( streams, exit, err = kNoMemoryErr );
    e886ea9a:	74f9                	lui	s1,0xffffe
    e886ea9c:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	CFReleaseNullSafe( feedback );
    e886eaa0:	8552                	mv	a0,s4
    e886eaa2:	ea8d80ef          	jal	ra,e884714a <CFRelease>
    e886eaa6:	bba9                	j	e886e800 <AirPlayReceiverSessionControl+0x1d0>
	require_action( feedback, exit, err = kNoMemoryErr );
    e886eaa8:	74f9                	lui	s1,0xffffe
    e886eaaa:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
		require_noerr( err, exit );
    e886eaae:	bb89                	j	e886e800 <AirPlayReceiverSessionControl+0x1d0>
	else if( session->delegate.control_f && CFEqual( inCommand, CFSTR( kAirPlayCommand_HIDSetInputMode ) ) )
    e886eab0:	643c                	ld	a5,72(s0)
    e886eab2:	c7cd                	beqz	a5,e886eb5c <AirPlayReceiverSessionControl+0x52c>
    e886eab4:	00030597          	auipc	a1,0x30
    e886eab8:	89458593          	addi	a1,a1,-1900 # e889e348 <icmp6_param_problem+0x12da>
    e886eabc:	854a                	mv	a0,s2
    e886eabe:	e90d80ef          	jal	ra,e884714e <CFEqual>
    e886eac2:	cd29                	beqz	a0,e886eb1c <AirPlayReceiverSessionControl+0x4ec>
		atr_ulog( kLogLevelNotice, "Set HIDInputMode\n" );
    e886eac4:	00066517          	auipc	a0,0x66
    e886eac8:	79c50513          	addi	a0,a0,1948 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886eacc:	411c                	lw	a5,0(a0)
    e886eace:	03200713          	li	a4,50
    e886ead2:	02f74b63          	blt	a4,a5,e886eb08 <AirPlayReceiverSessionControl+0x4d8>
    e886ead6:	577d                	li	a4,-1
    e886ead8:	02e78363          	beq	a5,a4,e886eafe <AirPlayReceiverSessionControl+0x4ce>
    e886eadc:	0005b697          	auipc	a3,0x5b
    e886eae0:	08c68693          	addi	a3,a3,140 # e88c9b68 <kAirPlayReceiverServerClass+0x170>
    e886eae4:	03200613          	li	a2,50
		atr_ulog( kLogLevelTrace, "iAP Send Message\n" );
    e886eae8:	0005c597          	auipc	a1,0x5c
    e886eaec:	69858593          	addi	a1,a1,1688 # e88cb180 <__PRETTY_FUNCTION__.13504>
    e886eaf0:	00066517          	auipc	a0,0x66
    e886eaf4:	77050513          	addi	a0,a0,1904 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886eaf8:	97de50ef          	jal	ra,e8854474 <LogPrintF>
    e886eafc:	a031                	j	e886eb08 <AirPlayReceiverSessionControl+0x4d8>
		atr_ulog( kLogLevelNotice, "Set HIDInputMode\n" );
    e886eafe:	03200593          	li	a1,50
    e886eb02:	d70e50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886eb06:	f979                	bnez	a0,e886eadc <AirPlayReceiverSessionControl+0x4ac>
		session->delegate.control_f( session, inCommand, inQualifier, inParams, outParams, session->delegate.context );
    e886eb08:	04843803          	ld	a6,72(s0)
    e886eb0c:	741c                	ld	a5,40(s0)
    e886eb0e:	874e                	mv	a4,s3
    e886eb10:	86a6                	mv	a3,s1
    e886eb12:	8652                	mv	a2,s4
    e886eb14:	85ca                	mv	a1,s2
    e886eb16:	8522                	mv	a0,s0
    e886eb18:	9802                	jalr	a6
    e886eb1a:	bb85                	j	e886e88a <AirPlayReceiverSessionControl+0x25a>
	else if( session->delegate.control_f && CFEqual( inCommand, CFSTR( kAirPlayCommand_iAPSendMessage ) ) )
    e886eb1c:	643c                	ld	a5,72(s0)
    e886eb1e:	cf9d                	beqz	a5,e886eb5c <AirPlayReceiverSessionControl+0x52c>
    e886eb20:	00030597          	auipc	a1,0x30
    e886eb24:	84058593          	addi	a1,a1,-1984 # e889e360 <icmp6_param_problem+0x12f2>
    e886eb28:	854a                	mv	a0,s2
    e886eb2a:	e24d80ef          	jal	ra,e884714e <CFEqual>
    e886eb2e:	c51d                	beqz	a0,e886eb5c <AirPlayReceiverSessionControl+0x52c>
		atr_ulog( kLogLevelTrace, "iAP Send Message\n" );
    e886eb30:	00066517          	auipc	a0,0x66
    e886eb34:	73050513          	addi	a0,a0,1840 # e88d5260 <gLogCategory_AirPlayReceiverCore>
    e886eb38:	411c                	lw	a5,0(a0)
    e886eb3a:	4779                	li	a4,30
    e886eb3c:	fcf746e3          	blt	a4,a5,e886eb08 <AirPlayReceiverSessionControl+0x4d8>
    e886eb40:	577d                	li	a4,-1
    e886eb42:	00e78863          	beq	a5,a4,e886eb52 <AirPlayReceiverSessionControl+0x522>
    e886eb46:	0005b697          	auipc	a3,0x5b
    e886eb4a:	03a68693          	addi	a3,a3,58 # e88c9b80 <kAirPlayReceiverServerClass+0x188>
    e886eb4e:	4679                	li	a2,30
    e886eb50:	bf61                	j	e886eae8 <AirPlayReceiverSessionControl+0x4b8>
    e886eb52:	45f9                	li	a1,30
    e886eb54:	d1ee50ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886eb58:	d945                	beqz	a0,e886eb08 <AirPlayReceiverSessionControl+0x4d8>
    e886eb5a:	b7f5                	j	e886eb46 <AirPlayReceiverSessionControl+0x516>
		err = AirPlayReceiverSessionPlatformControl( session, inFlags, inCommand, inQualifier, inParams, outParams );
    e886eb5c:	8726                	mv	a4,s1
    e886eb5e:	87ce                	mv	a5,s3
    e886eb60:	86d2                	mv	a3,s4
    e886eb62:	864a                	mv	a2,s2
    e886eb64:	85d6                	mv	a1,s5
    e886eb66:	8522                	mv	a0,s0
    e886eb68:	81cf50ef          	jal	ra,e8863b84 <AirPlayReceiverSessionPlatformControl>
    e886eb6c:	84aa                	mv	s1,a0
		goto exit;
    e886eb6e:	b949                	j	e886e800 <AirPlayReceiverSessionControl+0x1d0>
		require_action( stream, exit, err = kNoMemoryErr );
    e886eb70:	74f9                	lui	s1,0xffffe
    e886eb72:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886eb76:	bf21                	j	e886ea8e <AirPlayReceiverSessionControl+0x45e>

00000000e886eb78 <AirPlayReceiverSessionRequestSiriAction>:
	AirPlayReceiverSessionRequestSiriAction(
		AirPlayReceiverSessionRef					inSession,
		AirPlaySiriAction							inAction,
		AirPlayReceiverSessionCommandCompletionFunc	inCompletion,
		void *										inContext )
{
    e886eb78:	7139                	addi	sp,sp,-64
    e886eb7a:	ec4a                	sd	s2,24(sp)
    e886eb7c:	f04e                	sd	s3,32(sp)
    e886eb7e:	f452                	sd	s4,40(sp)
    e886eb80:	f856                	sd	s5,48(sp)
    e886eb82:	892a                	mv	s2,a0
    e886eb84:	8aae                	mv	s5,a1
    e886eb86:	89b2                	mv	s3,a2
    e886eb88:	8a36                	mv	s4,a3
	OSStatus					err;
	CFMutableDictionaryRef		request;
	CFMutableDictionaryRef		params;
	
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886eb8a:	00050617          	auipc	a2,0x50
    e886eb8e:	c0e60613          	addi	a2,a2,-1010 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886eb92:	00050697          	auipc	a3,0x50
    e886eb96:	c3668693          	addi	a3,a3,-970 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886eb9a:	4581                	li	a1,0
    e886eb9c:	4501                	li	a0,0
{
    e886eb9e:	fc06                	sd	ra,56(sp)
    e886eba0:	e422                	sd	s0,8(sp)
    e886eba2:	e826                	sd	s1,16(sp)
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886eba4:	803d80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
	require_action( request, exit, err = kNoMemoryErr );
    e886eba8:	c53d                	beqz	a0,e886ec16 <AirPlayReceiverSessionRequestSiriAction+0x9e>
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_Type ), CFSTR( kAirPlayCommand_RequestSiri ) );
    e886ebaa:	0002f617          	auipc	a2,0x2f
    e886ebae:	7e660613          	addi	a2,a2,2022 # e889e390 <icmp6_param_problem+0x1322>
    e886ebb2:	0002f597          	auipc	a1,0x2f
    e886ebb6:	46658593          	addi	a1,a1,1126 # e889e018 <icmp6_param_problem+0xfaa>
    e886ebba:	84aa                	mv	s1,a0
    e886ebbc:	897d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	
	params = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ebc0:	00050697          	auipc	a3,0x50
    e886ebc4:	c0868693          	addi	a3,a3,-1016 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886ebc8:	00050617          	auipc	a2,0x50
    e886ebcc:	bd060613          	addi	a2,a2,-1072 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886ebd0:	4581                	li	a1,0
    e886ebd2:	4501                	li	a0,0
    e886ebd4:	fd2d80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886ebd8:	842a                	mv	s0,a0
	require_action( params, exit, err = kNoMemoryErr );
    e886ebda:	c939                	beqz	a0,e886ec30 <AirPlayReceiverSessionRequestSiriAction+0xb8>
	CFDictionarySetInt64( params, CFSTR( kAirPlayKey_SiriAction ), (int64_t) inAction );
    e886ebdc:	8656                	mv	a2,s5
    e886ebde:	0002f597          	auipc	a1,0x2f
    e886ebe2:	7ca58593          	addi	a1,a1,1994 # e889e3a8 <icmp6_param_problem+0x133a>
    e886ebe6:	ae0de0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_Params ), params );
    e886ebea:	8622                	mv	a2,s0
    e886ebec:	0002f597          	auipc	a1,0x2f
    e886ebf0:	61458593          	addi	a1,a1,1556 # e889e200 <icmp6_param_problem+0x1192>
    e886ebf4:	8526                	mv	a0,s1
    e886ebf6:	85dd80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( params );
    e886ebfa:	8522                	mv	a0,s0
    e886ebfc:	d4ed80ef          	jal	ra,e884714a <CFRelease>
	
	err = AirPlayReceiverSessionSendCommand( inSession, request, inCompletion, inContext );
    e886ec00:	86d2                	mv	a3,s4
    e886ec02:	864e                	mv	a2,s3
    e886ec04:	85a6                	mv	a1,s1
    e886ec06:	854a                	mv	a0,s2
    e886ec08:	f19fd0ef          	jal	ra,e886cb20 <AirPlayReceiverSessionSendCommand>
    e886ec0c:	842a                	mv	s0,a0
	require_noerr( err, exit );
	
exit:
	CFReleaseNullSafe( request );
    e886ec0e:	8526                	mv	a0,s1
    e886ec10:	d3ad80ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e886ec14:	a021                	j	e886ec1c <AirPlayReceiverSessionRequestSiriAction+0xa4>
	require_action( request, exit, err = kNoMemoryErr );
    e886ec16:	7479                	lui	s0,0xffffe
    e886ec18:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
}
    e886ec1c:	8522                	mv	a0,s0
    e886ec1e:	70e2                	ld	ra,56(sp)
    e886ec20:	6422                	ld	s0,8(sp)
    e886ec22:	64c2                	ld	s1,16(sp)
    e886ec24:	6962                	ld	s2,24(sp)
    e886ec26:	7982                	ld	s3,32(sp)
    e886ec28:	7a22                	ld	s4,40(sp)
    e886ec2a:	7ac2                	ld	s5,48(sp)
    e886ec2c:	6121                	addi	sp,sp,64
    e886ec2e:	8082                	ret
	require_action( params, exit, err = kNoMemoryErr );
    e886ec30:	7479                	lui	s0,0xffffe
    e886ec32:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886ec36:	bfe1                	j	e886ec0e <AirPlayReceiverSessionRequestSiriAction+0x96>

00000000e886ec38 <AirPlayReceiverSessionRequestUI>:
	AirPlayReceiverSessionRequestUI( 
		AirPlayReceiverSessionRef					inSession, 
		CFStringRef									inURL, 
		AirPlayReceiverSessionCommandCompletionFunc	inCompletion, 
		void *										inContext )
{
    e886ec38:	7139                	addi	sp,sp,-64
    e886ec3a:	ec4a                	sd	s2,24(sp)
    e886ec3c:	f04e                	sd	s3,32(sp)
    e886ec3e:	f452                	sd	s4,40(sp)
    e886ec40:	f856                	sd	s5,48(sp)
    e886ec42:	89aa                	mv	s3,a0
    e886ec44:	892e                	mv	s2,a1
    e886ec46:	8a32                	mv	s4,a2
    e886ec48:	8ab6                	mv	s5,a3
	OSStatus					err;
	CFMutableDictionaryRef		request;
	CFMutableDictionaryRef		params;
	
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ec4a:	00050617          	auipc	a2,0x50
    e886ec4e:	b4e60613          	addi	a2,a2,-1202 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886ec52:	00050697          	auipc	a3,0x50
    e886ec56:	b7668693          	addi	a3,a3,-1162 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886ec5a:	4581                	li	a1,0
    e886ec5c:	4501                	li	a0,0
{
    e886ec5e:	fc06                	sd	ra,56(sp)
    e886ec60:	e422                	sd	s0,8(sp)
    e886ec62:	e826                	sd	s1,16(sp)
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ec64:	f42d80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
	require_action( request, exit, err = kNoMemoryErr );
    e886ec68:	c92d                	beqz	a0,e886ecda <AirPlayReceiverSessionRequestUI+0xa2>
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_Type ), CFSTR( kAirPlayCommand_RequestUI ) );
    e886ec6a:	0002f617          	auipc	a2,0x2f
    e886ec6e:	64660613          	addi	a2,a2,1606 # e889e2b0 <icmp6_param_problem+0x1242>
    e886ec72:	0002f597          	auipc	a1,0x2f
    e886ec76:	3a658593          	addi	a1,a1,934 # e889e018 <icmp6_param_problem+0xfaa>
    e886ec7a:	84aa                	mv	s1,a0
    e886ec7c:	fd6d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	
	if( inURL )
    e886ec80:	04090263          	beqz	s2,e886ecc4 <AirPlayReceiverSessionRequestUI+0x8c>
	{
		params = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ec84:	00050697          	auipc	a3,0x50
    e886ec88:	b4468693          	addi	a3,a3,-1212 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886ec8c:	00050617          	auipc	a2,0x50
    e886ec90:	b0c60613          	addi	a2,a2,-1268 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886ec94:	4581                	li	a1,0
    e886ec96:	4501                	li	a0,0
    e886ec98:	f0ed80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886ec9c:	842a                	mv	s0,a0
		require_action( params, exit, err = kNoMemoryErr );
    e886ec9e:	c939                	beqz	a0,e886ecf4 <AirPlayReceiverSessionRequestUI+0xbc>
		CFDictionarySetValue( params, CFSTR( kAirPlayKey_URL ), inURL );
    e886eca0:	864a                	mv	a2,s2
    e886eca2:	0002f597          	auipc	a1,0x2f
    e886eca6:	62658593          	addi	a1,a1,1574 # e889e2c8 <icmp6_param_problem+0x125a>
    e886ecaa:	fa8d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFDictionarySetValue( request, CFSTR( kAirPlayKey_Params ), params );
    e886ecae:	8526                	mv	a0,s1
    e886ecb0:	8622                	mv	a2,s0
    e886ecb2:	0002f597          	auipc	a1,0x2f
    e886ecb6:	54e58593          	addi	a1,a1,1358 # e889e200 <icmp6_param_problem+0x1192>
    e886ecba:	f98d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( params );
    e886ecbe:	8522                	mv	a0,s0
    e886ecc0:	c8ad80ef          	jal	ra,e884714a <CFRelease>
	}
	
	err = AirPlayReceiverSessionSendCommand( inSession, request, inCompletion, inContext );
    e886ecc4:	86d6                	mv	a3,s5
    e886ecc6:	8652                	mv	a2,s4
    e886ecc8:	85a6                	mv	a1,s1
    e886ecca:	854e                	mv	a0,s3
    e886eccc:	e55fd0ef          	jal	ra,e886cb20 <AirPlayReceiverSessionSendCommand>
    e886ecd0:	842a                	mv	s0,a0
	require_noerr( err, exit );
	
exit:
	CFReleaseNullSafe( request );
    e886ecd2:	8526                	mv	a0,s1
    e886ecd4:	c76d80ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e886ecd8:	a021                	j	e886ece0 <AirPlayReceiverSessionRequestUI+0xa8>
	require_action( request, exit, err = kNoMemoryErr );
    e886ecda:	7479                	lui	s0,0xffffe
    e886ecdc:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
}
    e886ece0:	8522                	mv	a0,s0
    e886ece2:	70e2                	ld	ra,56(sp)
    e886ece4:	6422                	ld	s0,8(sp)
    e886ece6:	64c2                	ld	s1,16(sp)
    e886ece8:	6962                	ld	s2,24(sp)
    e886ecea:	7982                	ld	s3,32(sp)
    e886ecec:	7a22                	ld	s4,40(sp)
    e886ecee:	7ac2                	ld	s5,48(sp)
    e886ecf0:	6121                	addi	sp,sp,64
    e886ecf2:	8082                	ret
		require_action( params, exit, err = kNoMemoryErr );
    e886ecf4:	7479                	lui	s0,0xffffe
    e886ecf6:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886ecfa:	bfe1                	j	e886ecd2 <AirPlayReceiverSessionRequestUI+0x9a>

00000000e886ecfc <AirPlayReceiverSessionSetNightMode>:
AirPlayReceiverSessionSetNightMode(
	AirPlayReceiverSessionRef					inSession,
	Boolean										inNightMode,
	AirPlayReceiverSessionCommandCompletionFunc	inCompletion,
	void *										inContext )
{
    e886ecfc:	7139                	addi	sp,sp,-64
    e886ecfe:	ec4a                	sd	s2,24(sp)
    e886ed00:	f04e                	sd	s3,32(sp)
    e886ed02:	f452                	sd	s4,40(sp)
    e886ed04:	f856                	sd	s5,48(sp)
    e886ed06:	892a                	mv	s2,a0
    e886ed08:	8aae                	mv	s5,a1
    e886ed0a:	89b2                	mv	s3,a2
    e886ed0c:	8a36                	mv	s4,a3
	OSStatus					err;
	CFMutableDictionaryRef		request;
	CFMutableDictionaryRef		params;
	
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ed0e:	00050617          	auipc	a2,0x50
    e886ed12:	a8a60613          	addi	a2,a2,-1398 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886ed16:	00050697          	auipc	a3,0x50
    e886ed1a:	ab268693          	addi	a3,a3,-1358 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886ed1e:	4581                	li	a1,0
    e886ed20:	4501                	li	a0,0
{
    e886ed22:	fc06                	sd	ra,56(sp)
    e886ed24:	e422                	sd	s0,8(sp)
    e886ed26:	e826                	sd	s1,16(sp)
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ed28:	e7ed80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
	require_action( request, exit, err = kNoMemoryErr );
    e886ed2c:	c151                	beqz	a0,e886edb0 <AirPlayReceiverSessionSetNightMode+0xb4>
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_Type ), CFSTR( kAirPlayCommand_SetNightMode ) );
    e886ed2e:	0002f617          	auipc	a2,0x2f
    e886ed32:	69260613          	addi	a2,a2,1682 # e889e3c0 <icmp6_param_problem+0x1352>
    e886ed36:	0002f597          	auipc	a1,0x2f
    e886ed3a:	2e258593          	addi	a1,a1,738 # e889e018 <icmp6_param_problem+0xfaa>
    e886ed3e:	84aa                	mv	s1,a0
    e886ed40:	f12d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	
	params = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ed44:	00050697          	auipc	a3,0x50
    e886ed48:	a8468693          	addi	a3,a3,-1404 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886ed4c:	00050617          	auipc	a2,0x50
    e886ed50:	a4c60613          	addi	a2,a2,-1460 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886ed54:	4581                	li	a1,0
    e886ed56:	4501                	li	a0,0
    e886ed58:	e4ed80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886ed5c:	842a                	mv	s0,a0
	require_action( params, exit, err = kNoMemoryErr );
    e886ed5e:	c535                	beqz	a0,e886edca <AirPlayReceiverSessionSetNightMode+0xce>
	CFDictionarySetValue( params, CFSTR( kAirPlayKey_NightMode ), inNightMode ? kCFBooleanTrue : kCFBooleanFalse );
    e886ed60:	00066797          	auipc	a5,0x66
    e886ed64:	f7078793          	addi	a5,a5,-144 # e88d4cd0 <kCFLBooleanTrue>
    e886ed68:	000a9663          	bnez	s5,e886ed74 <AirPlayReceiverSessionSetNightMode+0x78>
    e886ed6c:	00066797          	auipc	a5,0x66
    e886ed70:	f5c78793          	addi	a5,a5,-164 # e88d4cc8 <kCFLBooleanFalse>
    e886ed74:	6390                	ld	a2,0(a5)
    e886ed76:	8522                	mv	a0,s0
    e886ed78:	0002f597          	auipc	a1,0x2f
    e886ed7c:	66058593          	addi	a1,a1,1632 # e889e3d8 <icmp6_param_problem+0x136a>
    e886ed80:	ed2d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_Params ), params );
    e886ed84:	8622                	mv	a2,s0
    e886ed86:	0002f597          	auipc	a1,0x2f
    e886ed8a:	47a58593          	addi	a1,a1,1146 # e889e200 <icmp6_param_problem+0x1192>
    e886ed8e:	8526                	mv	a0,s1
    e886ed90:	ec2d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( params );
    e886ed94:	8522                	mv	a0,s0
    e886ed96:	bb4d80ef          	jal	ra,e884714a <CFRelease>
	
	err = AirPlayReceiverSessionSendCommand( inSession, request, inCompletion, inContext );
    e886ed9a:	86d2                	mv	a3,s4
    e886ed9c:	864e                	mv	a2,s3
    e886ed9e:	85a6                	mv	a1,s1
    e886eda0:	854a                	mv	a0,s2
    e886eda2:	d7ffd0ef          	jal	ra,e886cb20 <AirPlayReceiverSessionSendCommand>
    e886eda6:	842a                	mv	s0,a0
	require_noerr( err, exit );
	
exit:
	CFReleaseNullSafe( request );
    e886eda8:	8526                	mv	a0,s1
    e886edaa:	ba0d80ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e886edae:	a021                	j	e886edb6 <AirPlayReceiverSessionSetNightMode+0xba>
	require_action( request, exit, err = kNoMemoryErr );
    e886edb0:	7479                	lui	s0,0xffffe
    e886edb2:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
}
    e886edb6:	8522                	mv	a0,s0
    e886edb8:	70e2                	ld	ra,56(sp)
    e886edba:	6422                	ld	s0,8(sp)
    e886edbc:	64c2                	ld	s1,16(sp)
    e886edbe:	6962                	ld	s2,24(sp)
    e886edc0:	7982                	ld	s3,32(sp)
    e886edc2:	7a22                	ld	s4,40(sp)
    e886edc4:	7ac2                	ld	s5,48(sp)
    e886edc6:	6121                	addi	sp,sp,64
    e886edc8:	8082                	ret
	require_action( params, exit, err = kNoMemoryErr );
    e886edca:	7479                	lui	s0,0xffffe
    e886edcc:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886edd0:	bfe1                	j	e886eda8 <AirPlayReceiverSessionSetNightMode+0xac>

00000000e886edd2 <AirPlayReceiverSessionSendHIDReport>:
AirPlayReceiverSessionSendHIDReport(
	AirPlayReceiverSessionRef					inSession,
	uint32_t									inDeviceUID,
	const uint8_t *								inPtr,
	size_t										inLen )
{
    e886edd2:	7179                	addi	sp,sp,-48
    e886edd4:	fb31590b          	sdd	s2,s3,(sp),1,4
    e886edd8:	f052                	sd	s4,32(sp)
    e886edda:	892a                	mv	s2,a0
    e886eddc:	89b2                	mv	s3,a2
    e886edde:	8a36                	mv	s4,a3
	OSStatus					err;
	CFMutableDictionaryRef		request;
	CFStringRef					uid;
	
	uid = CFStringCreateWithFormat( kCFAllocatorDefault, NULL, CFSTR( "%X" ), inDeviceUID );
    e886ede0:	0002f617          	auipc	a2,0x2f
    e886ede4:	69860613          	addi	a2,a2,1688 # e889e478 <icmp6_param_problem+0x140a>
    e886ede8:	86ae                	mv	a3,a1
    e886edea:	4501                	li	a0,0
    e886edec:	4581                	li	a1,0
{
    e886edee:	f406                	sd	ra,40(sp)
    e886edf0:	f891540b          	sdd	s0,s1,(sp),0,4
	uid = CFStringCreateWithFormat( kCFAllocatorDefault, NULL, CFSTR( "%X" ), inDeviceUID );
    e886edf4:	f58d80ef          	jal	ra,e884754c <CFStringCreateWithFormat>
	require_action( uid, exit, err = kNoMemoryErr );
    e886edf8:	ed09                	bnez	a0,e886ee12 <AirPlayReceiverSessionSendHIDReport+0x40>
    e886edfa:	74f9                	lui	s1,0xffffe
    e886edfc:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	CFRelease( request );
	require_noerr( err, exit );
	
exit:
	return( err );
}
    e886ee00:	8526                	mv	a0,s1
    e886ee02:	70a2                	ld	ra,40(sp)
    e886ee04:	f891440b          	ldd	s0,s1,(sp),0,4
    e886ee08:	7a02                	ld	s4,32(sp)
    e886ee0a:	fb31490b          	ldd	s2,s3,(sp),1,4
    e886ee0e:	6145                	addi	sp,sp,48
    e886ee10:	8082                	ret
    e886ee12:	84aa                	mv	s1,a0
	request = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886ee14:	00050697          	auipc	a3,0x50
    e886ee18:	9b468693          	addi	a3,a3,-1612 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886ee1c:	00050617          	auipc	a2,0x50
    e886ee20:	97c60613          	addi	a2,a2,-1668 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886ee24:	4581                	li	a1,0
    e886ee26:	4501                	li	a0,0
    e886ee28:	d7ed80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886ee2c:	842a                	mv	s0,a0
	require_action( request, exit, err = kNoMemoryErr );
    e886ee2e:	d571                	beqz	a0,e886edfa <AirPlayReceiverSessionSendHIDReport+0x28>
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_Type ), CFSTR( kAirPlayCommand_HIDSendReport ) );
    e886ee30:	0002f617          	auipc	a2,0x2f
    e886ee34:	65860613          	addi	a2,a2,1624 # e889e488 <icmp6_param_problem+0x141a>
    e886ee38:	0002f597          	auipc	a1,0x2f
    e886ee3c:	1e058593          	addi	a1,a1,480 # e889e018 <icmp6_param_problem+0xfaa>
    e886ee40:	e12d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFDictionarySetValue( request, CFSTR( kAirPlayKey_UUID ), uid );
    e886ee44:	8626                	mv	a2,s1
    e886ee46:	0002f597          	auipc	a1,0x2f
    e886ee4a:	65a58593          	addi	a1,a1,1626 # e889e4a0 <icmp6_param_problem+0x1432>
    e886ee4e:	8522                	mv	a0,s0
    e886ee50:	e02d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease(uid);
    e886ee54:	8526                	mv	a0,s1
    e886ee56:	af4d80ef          	jal	ra,e884714a <CFRelease>
	CFDictionarySetData( request, CFSTR( kAirPlayKey_HIDReport ), inPtr, inLen );
    e886ee5a:	86d2                	mv	a3,s4
    e886ee5c:	864e                	mv	a2,s3
    e886ee5e:	0002f597          	auipc	a1,0x2f
    e886ee62:	65258593          	addi	a1,a1,1618 # e889e4b0 <icmp6_param_problem+0x1442>
    e886ee66:	8522                	mv	a0,s0
    e886ee68:	ef8dd0ef          	jal	ra,e884c560 <CFDictionarySetData>
	err = AirPlayReceiverSessionSendCommand( inSession, request, NULL, NULL );
    e886ee6c:	4681                	li	a3,0
    e886ee6e:	4601                	li	a2,0
    e886ee70:	85a2                	mv	a1,s0
    e886ee72:	854a                	mv	a0,s2
    e886ee74:	cadfd0ef          	jal	ra,e886cb20 <AirPlayReceiverSessionSendCommand>
    e886ee78:	84aa                	mv	s1,a0
	CFRelease( request );
    e886ee7a:	8522                	mv	a0,s0
    e886ee7c:	aced80ef          	jal	ra,e884714a <CFRelease>
exit:
    e886ee80:	b741                	j	e886ee00 <AirPlayReceiverSessionSendHIDReport+0x2e>

00000000e886ee82 <AirPlayInfoArrayAddHIDDevice>:
	uint16_t				inProductID,
	uint16_t				inCountryCode,
	const uint8_t *			inDescPtr,
	size_t					inDescLen,
	CFStringRef				inDisplayUUID )
{
    e886ee82:	711d                	addi	sp,sp,-96
    e886ee84:	e8a2                	sd	s0,80(sp)
    e886ee86:	e4a6                	sd	s1,72(sp)
    e886ee88:	fc4e                	sd	s3,56(sp)
    e886ee8a:	f852                	sd	s4,48(sp)
    e886ee8c:	f456                	sd	s5,40(sp)
    e886ee8e:	f05a                	sd	s6,32(sp)
    e886ee90:	ec5e                	sd	s7,24(sp)
    e886ee92:	e862                	sd	s8,16(sp)
    e886ee94:	ec86                	sd	ra,88(sp)
    e886ee96:	e0ca                	sd	s2,64(sp)
    e886ee98:	8abe                	mv	s5,a5
	CFMutableDictionaryRef		dict = NULL;
	CFStringRef					uidStr;
	CFDataRef					descData;
	CFStringRef					nameStr = NULL;

	if( *inArray == NULL )
    e886ee9a:	611c                	ld	a5,0(a0)
{
    e886ee9c:	842a                	mv	s0,a0
    e886ee9e:	84ae                	mv	s1,a1
    e886eea0:	8c32                	mv	s8,a2
    e886eea2:	8b36                	mv	s6,a3
    e886eea4:	8bba                	mv	s7,a4
    e886eea6:	89c2                	mv	s3,a6
    e886eea8:	8a46                	mv	s4,a7
	if( *inArray == NULL )
    e886eeaa:	ef85                	bnez	a5,e886eee2 <AirPlayInfoArrayAddHIDDevice+0x60>
	{
		*inArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e886eeac:	00050617          	auipc	a2,0x50
    e886eeb0:	8c460613          	addi	a2,a2,-1852 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e886eeb4:	4581                	li	a1,0
    e886eeb6:	4501                	li	a0,0
    e886eeb8:	b0ed80ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e886eebc:	e008                	sd	a0,0(s0)
		require_action( *inArray, exit, err = kNoMemoryErr );
    e886eebe:	e115                	bnez	a0,e886eee2 <AirPlayInfoArrayAddHIDDevice+0x60>
    e886eec0:	77f9                	lui	a5,0xffffe
    e886eec2:	5b87879b          	addiw	a5,a5,1464
    e886eec6:	c63e                	sw	a5,12(sp)
	err = kNoErr;

exit:
	CFReleaseNullSafe( dict );
	return( err );
}
    e886eec8:	60e6                	ld	ra,88(sp)
    e886eeca:	6446                	ld	s0,80(sp)
	return( err );
    e886eecc:	4532                	lw	a0,12(sp)
}
    e886eece:	64a6                	ld	s1,72(sp)
    e886eed0:	6906                	ld	s2,64(sp)
    e886eed2:	79e2                	ld	s3,56(sp)
    e886eed4:	7a42                	ld	s4,48(sp)
    e886eed6:	7aa2                	ld	s5,40(sp)
    e886eed8:	7b02                	ld	s6,32(sp)
    e886eeda:	6be2                	ld	s7,24(sp)
    e886eedc:	6c42                	ld	s8,16(sp)
    e886eede:	6125                	addi	sp,sp,96
    e886eee0:	8082                	ret
	dict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886eee2:	00050697          	auipc	a3,0x50
    e886eee6:	8e668693          	addi	a3,a3,-1818 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886eeea:	00050617          	auipc	a2,0x50
    e886eeee:	8ae60613          	addi	a2,a2,-1874 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886eef2:	4581                	li	a1,0
    e886eef4:	4501                	li	a0,0
	dictArray = (CFMutableArrayRef)*inArray;
    e886eef6:	00043903          	ld	s2,0(s0)
	dict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886eefa:	cacd80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886eefe:	842a                	mv	s0,a0
	require_action( dict, exit, err = kNoMemoryErr );
    e886ef00:	d161                	beqz	a0,e886eec0 <AirPlayInfoArrayAddHIDDevice+0x3e>
	uidStr = CFStringCreateF( &err, "%X", inDeviceUID );
    e886ef02:	8626                	mv	a2,s1
    e886ef04:	0005c597          	auipc	a1,0x5c
    e886ef08:	92458593          	addi	a1,a1,-1756 # e88ca828 <kAirPlayReceiverServerClass+0xe30>
    e886ef0c:	0068                	addi	a0,sp,12
    e886ef0e:	844de0ef          	jal	ra,e884cf52 <CFStringCreateF>
    e886ef12:	84aa                	mv	s1,a0
	require_action( uidStr, exit, err = kNoMemoryErr );
    e886ef14:	e909                	bnez	a0,e886ef26 <AirPlayInfoArrayAddHIDDevice+0xa4>
    e886ef16:	77f9                	lui	a5,0xffffe
    e886ef18:	5b87879b          	addiw	a5,a5,1464
    e886ef1c:	c63e                	sw	a5,12(sp)
	CFReleaseNullSafe( dict );
    e886ef1e:	8522                	mv	a0,s0
    e886ef20:	a2ad80ef          	jal	ra,e884714a <CFRelease>
    e886ef24:	b755                	j	e886eec8 <AirPlayInfoArrayAddHIDDevice+0x46>
	CFDictionarySetValue( dict, CFSTR( kAirPlayKey_UUID ), uidStr );
    e886ef26:	862a                	mv	a2,a0
    e886ef28:	0002f597          	auipc	a1,0x2f
    e886ef2c:	57858593          	addi	a1,a1,1400 # e889e4a0 <icmp6_param_problem+0x1432>
    e886ef30:	8522                	mv	a0,s0
    e886ef32:	d20d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( uidStr );
    e886ef36:	8526                	mv	a0,s1
    e886ef38:	a12d80ef          	jal	ra,e884714a <CFRelease>
	nameStr = CFStringCreateWithCString( kCFAllocatorDefault, inName, kCFStringEncodingUTF8 );
    e886ef3c:	08000637          	lui	a2,0x8000
    e886ef40:	10060613          	addi	a2,a2,256 # 8000100 <memcmp-0xe07fff00>
    e886ef44:	85e2                	mv	a1,s8
    e886ef46:	4501                	li	a0,0
    e886ef48:	ddcd80ef          	jal	ra,e8847524 <CFStringCreateWithCString>
	CFDictionarySetValue( dict, CFSTR( kAirPlayKey_Name ), nameStr );
    e886ef4c:	862a                	mv	a2,a0
	nameStr = CFStringCreateWithCString( kCFAllocatorDefault, inName, kCFStringEncodingUTF8 );
    e886ef4e:	84aa                	mv	s1,a0
	CFDictionarySetValue( dict, CFSTR( kAirPlayKey_Name ), nameStr );
    e886ef50:	0002f597          	auipc	a1,0x2f
    e886ef54:	57858593          	addi	a1,a1,1400 # e889e4c8 <icmp6_param_problem+0x145a>
    e886ef58:	8522                	mv	a0,s0
    e886ef5a:	cf8d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( nameStr );
    e886ef5e:	8526                	mv	a0,s1
    e886ef60:	9ead80ef          	jal	ra,e884714a <CFRelease>
	CFDictionarySetValue( dict, CFSTR( kAirPlayKey_DisplayUUID ), inDisplayUUID );
    e886ef64:	7606                	ld	a2,96(sp)
    e886ef66:	0002f597          	auipc	a1,0x2f
    e886ef6a:	57258593          	addi	a1,a1,1394 # e889e4d8 <icmp6_param_problem+0x146a>
    e886ef6e:	8522                	mv	a0,s0
    e886ef70:	ce2d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_HIDProductID ), inProductID );
    e886ef74:	865e                	mv	a2,s7
    e886ef76:	0002f597          	auipc	a1,0x2f
    e886ef7a:	57a58593          	addi	a1,a1,1402 # e889e4f0 <icmp6_param_problem+0x1482>
    e886ef7e:	8522                	mv	a0,s0
    e886ef80:	f47dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_HIDVendorID ), inVendorID );
    e886ef84:	865a                	mv	a2,s6
    e886ef86:	0002f597          	auipc	a1,0x2f
    e886ef8a:	58258593          	addi	a1,a1,1410 # e889e508 <icmp6_param_problem+0x149a>
    e886ef8e:	8522                	mv	a0,s0
    e886ef90:	f37dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_HIDCountryCode ), inCountryCode );
    e886ef94:	8656                	mv	a2,s5
    e886ef96:	0002f597          	auipc	a1,0x2f
    e886ef9a:	58a58593          	addi	a1,a1,1418 # e889e520 <icmp6_param_problem+0x14b2>
    e886ef9e:	8522                	mv	a0,s0
    e886efa0:	f27dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	descData = CFDataCreate( NULL, inDescPtr, inDescLen );
    e886efa4:	000a061b          	sext.w	a2,s4
    e886efa8:	85ce                	mv	a1,s3
    e886efaa:	4501                	li	a0,0
    e886efac:	aead80ef          	jal	ra,e8847296 <CFDataCreate>
    e886efb0:	84aa                	mv	s1,a0
	require_action( descData, exit, err = kNoMemoryErr );
    e886efb2:	d135                	beqz	a0,e886ef16 <AirPlayInfoArrayAddHIDDevice+0x94>
	CFDictionarySetValue( dict, CFSTR( kAirPlayKey_HIDDescriptor ), descData );
    e886efb4:	862a                	mv	a2,a0
    e886efb6:	0002f597          	auipc	a1,0x2f
    e886efba:	58258593          	addi	a1,a1,1410 # e889e538 <icmp6_param_problem+0x14ca>
    e886efbe:	8522                	mv	a0,s0
    e886efc0:	c92d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFRelease( descData );
    e886efc4:	8526                	mv	a0,s1
    e886efc6:	984d80ef          	jal	ra,e884714a <CFRelease>
	CFArrayAppendValue( dictArray, dict );
    e886efca:	85a2                	mv	a1,s0
    e886efcc:	854a                	mv	a0,s2
    e886efce:	aa2d80ef          	jal	ra,e8847270 <CFArrayAppendValue>
	err = kNoErr;
    e886efd2:	c602                	sw	zero,12(sp)
    e886efd4:	b7a9                	j	e886ef1e <AirPlayInfoArrayAddHIDDevice+0x9c>

00000000e886efd6 <AirPlayInfoArrayAddAudioLatency>:
	uint32_t				inSampleRate,
	uint32_t				inSampleSize,
	uint32_t				inChannels,
	uint32_t				inInputLatency,
	uint32_t				inOutputLatency )
{
    e886efd6:	715d                	addi	sp,sp,-80
    e886efd8:	e0a2                	sd	s0,64(sp)
    e886efda:	fc26                	sd	s1,56(sp)
    e886efdc:	f84a                	sd	s2,48(sp)
    e886efde:	f44e                	sd	s3,40(sp)
    e886efe0:	f052                	sd	s4,32(sp)
    e886efe2:	ec56                	sd	s5,24(sp)
    e886efe4:	e45e                	sd	s7,8(sp)
    e886efe6:	e062                	sd	s8,0(sp)
    e886efe8:	e486                	sd	ra,72(sp)
    e886efea:	e85a                	sd	s6,16(sp)
    e886efec:	84be                	mv	s1,a5
	OSStatus				err;
	CFMutableArrayRef		dictArray;
	CFMutableDictionaryRef	dict = NULL;

	if( *inArray == NULL )
    e886efee:	611c                	ld	a5,0(a0)
{
    e886eff0:	842a                	mv	s0,a0
    e886eff2:	8aae                	mv	s5,a1
    e886eff4:	8a32                	mv	s4,a2
    e886eff6:	89b6                	mv	s3,a3
    e886eff8:	893a                	mv	s2,a4
    e886effa:	8c42                	mv	s8,a6
    e886effc:	8bc6                	mv	s7,a7
	if( *inArray == NULL )
    e886effe:	c3a1                	beqz	a5,e886f03e <AirPlayInfoArrayAddAudioLatency+0x68>
		*inArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
		require_action( *inArray, exit, err = kNoMemoryErr );
	}
	dictArray = (CFMutableArrayRef)*inArray;
	
	dict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886f000:	0004f697          	auipc	a3,0x4f
    e886f004:	7c868693          	addi	a3,a3,1992 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886f008:	0004f617          	auipc	a2,0x4f
    e886f00c:	79060613          	addi	a2,a2,1936 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886f010:	4581                	li	a1,0
    e886f012:	4501                	li	a0,0
	dictArray = (CFMutableArrayRef)*inArray;
    e886f014:	00043b03          	ld	s6,0(s0)
	dict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886f018:	b8ed80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886f01c:	842a                	mv	s0,a0
	require_action( dict, exit, err = kNoMemoryErr );
    e886f01e:	e91d                	bnez	a0,e886f054 <AirPlayInfoArrayAddAudioLatency+0x7e>
		require_action( *inArray, exit, err = kNoMemoryErr );
    e886f020:	7579                	lui	a0,0xffffe
    e886f022:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	err = kNoErr;

exit:
	CFReleaseNullSafe( dict );
	return( err );
}
    e886f026:	60a6                	ld	ra,72(sp)
    e886f028:	6406                	ld	s0,64(sp)
    e886f02a:	74e2                	ld	s1,56(sp)
    e886f02c:	7942                	ld	s2,48(sp)
    e886f02e:	79a2                	ld	s3,40(sp)
    e886f030:	7a02                	ld	s4,32(sp)
    e886f032:	6ae2                	ld	s5,24(sp)
    e886f034:	6b42                	ld	s6,16(sp)
    e886f036:	6ba2                	ld	s7,8(sp)
    e886f038:	6c02                	ld	s8,0(sp)
    e886f03a:	6161                	addi	sp,sp,80
    e886f03c:	8082                	ret
		*inArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e886f03e:	0004f617          	auipc	a2,0x4f
    e886f042:	73260613          	addi	a2,a2,1842 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e886f046:	4581                	li	a1,0
    e886f048:	4501                	li	a0,0
    e886f04a:	97cd80ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e886f04e:	e008                	sd	a0,0(s0)
		require_action( *inArray, exit, err = kNoMemoryErr );
    e886f050:	f945                	bnez	a0,e886f000 <AirPlayInfoArrayAddAudioLatency+0x2a>
    e886f052:	b7f9                	j	e886f020 <AirPlayInfoArrayAddAudioLatency+0x4a>
	if( inStreamType != kAudioStreamType_Invalid )
    e886f054:	000a8a63          	beqz	s5,e886f068 <AirPlayInfoArrayAddAudioLatency+0x92>
		CFDictionarySetInt64( dict, kAudioSessionKey_Type, inStreamType );
    e886f058:	7c0ab60b          	extu	a2,s5,31,0
    e886f05c:	0002f597          	auipc	a1,0x2f
    e886f060:	fbc58593          	addi	a1,a1,-68 # e889e018 <icmp6_param_problem+0xfaa>
    e886f064:	e63dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inAudioType )
    e886f068:	000a0a63          	beqz	s4,e886f07c <AirPlayInfoArrayAddAudioLatency+0xa6>
		CFDictionarySetValue( dict, kAudioSessionKey_AudioType, inAudioType );
    e886f06c:	8652                	mv	a2,s4
    e886f06e:	0002f597          	auipc	a1,0x2f
    e886f072:	4e258593          	addi	a1,a1,1250 # e889e550 <icmp6_param_problem+0x14e2>
    e886f076:	8522                	mv	a0,s0
    e886f078:	bdad80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	if( inSampleRate )
    e886f07c:	00098b63          	beqz	s3,e886f092 <AirPlayInfoArrayAddAudioLatency+0xbc>
		CFDictionarySetInt64( dict, kAudioSessionKey_SampleRate, inSampleRate );
    e886f080:	7c09b60b          	extu	a2,s3,31,0
    e886f084:	0002f597          	auipc	a1,0x2f
    e886f088:	26c58593          	addi	a1,a1,620 # e889e2f0 <icmp6_param_problem+0x1282>
    e886f08c:	8522                	mv	a0,s0
    e886f08e:	e39dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inSampleSize )
    e886f092:	00090b63          	beqz	s2,e886f0a8 <AirPlayInfoArrayAddAudioLatency+0xd2>
		CFDictionarySetInt64( dict, kAudioSessionKey_SampleSize, inSampleSize );
    e886f096:	7c09360b          	extu	a2,s2,31,0
    e886f09a:	0002f597          	auipc	a1,0x2f
    e886f09e:	4ce58593          	addi	a1,a1,1230 # e889e568 <icmp6_param_problem+0x14fa>
    e886f0a2:	8522                	mv	a0,s0
    e886f0a4:	e23dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inChannels )
    e886f0a8:	c891                	beqz	s1,e886f0bc <AirPlayInfoArrayAddAudioLatency+0xe6>
		CFDictionarySetInt64( dict, kAudioSessionKey_Channels, inChannels );
    e886f0aa:	7c04b60b          	extu	a2,s1,31,0
    e886f0ae:	0002f597          	auipc	a1,0x2f
    e886f0b2:	4ca58593          	addi	a1,a1,1226 # e889e578 <icmp6_param_problem+0x150a>
    e886f0b6:	8522                	mv	a0,s0
    e886f0b8:	e0fdd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, kAudioSessionKey_InputLatencyMicros, inInputLatency );
    e886f0bc:	7c0c360b          	extu	a2,s8,31,0
    e886f0c0:	0002f597          	auipc	a1,0x2f
    e886f0c4:	4c858593          	addi	a1,a1,1224 # e889e588 <icmp6_param_problem+0x151a>
    e886f0c8:	8522                	mv	a0,s0
    e886f0ca:	dfddd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, kAudioSessionKey_OutputLatencyMicros, inOutputLatency );
    e886f0ce:	7c0bb60b          	extu	a2,s7,31,0
    e886f0d2:	0002f597          	auipc	a1,0x2f
    e886f0d6:	4d658593          	addi	a1,a1,1238 # e889e5a8 <icmp6_param_problem+0x153a>
    e886f0da:	8522                	mv	a0,s0
    e886f0dc:	debdd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFArrayAppendValue( dictArray, dict );
    e886f0e0:	85a2                	mv	a1,s0
    e886f0e2:	855a                	mv	a0,s6
    e886f0e4:	98cd80ef          	jal	ra,e8847270 <CFArrayAppendValue>
	CFReleaseNullSafe( dict );
    e886f0e8:	8522                	mv	a0,s0
    e886f0ea:	860d80ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e886f0ee:	4501                	li	a0,0
    e886f0f0:	bf1d                	j	e886f026 <AirPlayInfoArrayAddAudioLatency+0x50>

00000000e886f0f2 <AirPlayInfoArrayAddAudioFormat>:
	CFArrayRef *			inArray,
	AudioStreamType			inStreamType,
	CFStringRef				inAudioType,
	AirPlayAudioFormat		inInputFormats,
	AirPlayAudioFormat		inOutputFormats )
{
    e886f0f2:	7139                	addi	sp,sp,-64
    e886f0f4:	e422                	sd	s0,8(sp)
    e886f0f6:	e826                	sd	s1,16(sp)
    e886f0f8:	ec4a                	sd	s2,24(sp)
    e886f0fa:	f04e                	sd	s3,32(sp)
    e886f0fc:	f452                	sd	s4,40(sp)
    e886f0fe:	fc06                	sd	ra,56(sp)
    e886f100:	f856                	sd	s5,48(sp)
	OSStatus				err;
	CFMutableArrayRef		dictArray;
	CFMutableDictionaryRef	dict = NULL;

	if( *inArray == NULL )
    e886f102:	611c                	ld	a5,0(a0)
{
    e886f104:	842a                	mv	s0,a0
    e886f106:	8a2e                	mv	s4,a1
    e886f108:	89b2                	mv	s3,a2
    e886f10a:	8936                	mv	s2,a3
    e886f10c:	84ba                	mv	s1,a4
	if( *inArray == NULL )
    e886f10e:	cf8d                	beqz	a5,e886f148 <AirPlayInfoArrayAddAudioFormat+0x56>
		*inArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
		require_action( *inArray, exit, err = kNoMemoryErr );
	}
	dictArray = (CFMutableArrayRef)*inArray;
	
	dict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886f110:	0004f697          	auipc	a3,0x4f
    e886f114:	6b868693          	addi	a3,a3,1720 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886f118:	0004f617          	auipc	a2,0x4f
    e886f11c:	68060613          	addi	a2,a2,1664 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886f120:	4581                	li	a1,0
    e886f122:	4501                	li	a0,0
	dictArray = (CFMutableArrayRef)*inArray;
    e886f124:	00043a83          	ld	s5,0(s0)
	dict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886f128:	a7ed80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886f12c:	842a                	mv	s0,a0
	require_action( dict, exit, err = kNoMemoryErr );
    e886f12e:	e905                	bnez	a0,e886f15e <AirPlayInfoArrayAddAudioFormat+0x6c>
		require_action( *inArray, exit, err = kNoMemoryErr );
    e886f130:	7579                	lui	a0,0xffffe
    e886f132:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	err = kNoErr;

exit:
	CFReleaseNullSafe( dict );
	return( err );
}
    e886f136:	70e2                	ld	ra,56(sp)
    e886f138:	6422                	ld	s0,8(sp)
    e886f13a:	64c2                	ld	s1,16(sp)
    e886f13c:	6962                	ld	s2,24(sp)
    e886f13e:	7982                	ld	s3,32(sp)
    e886f140:	7a22                	ld	s4,40(sp)
    e886f142:	7ac2                	ld	s5,48(sp)
    e886f144:	6121                	addi	sp,sp,64
    e886f146:	8082                	ret
		*inArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e886f148:	0004f617          	auipc	a2,0x4f
    e886f14c:	62860613          	addi	a2,a2,1576 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e886f150:	4581                	li	a1,0
    e886f152:	4501                	li	a0,0
    e886f154:	872d80ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e886f158:	e008                	sd	a0,0(s0)
		require_action( *inArray, exit, err = kNoMemoryErr );
    e886f15a:	f95d                	bnez	a0,e886f110 <AirPlayInfoArrayAddAudioFormat+0x1e>
    e886f15c:	bfd1                	j	e886f130 <AirPlayInfoArrayAddAudioFormat+0x3e>
	if( inStreamType != kAudioStreamType_Invalid )
    e886f15e:	000a0a63          	beqz	s4,e886f172 <AirPlayInfoArrayAddAudioFormat+0x80>
		CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_Type ), inStreamType );
    e886f162:	7c0a360b          	extu	a2,s4,31,0
    e886f166:	0002f597          	auipc	a1,0x2f
    e886f16a:	eb258593          	addi	a1,a1,-334 # e889e018 <icmp6_param_problem+0xfaa>
    e886f16e:	d59dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inAudioType )
    e886f172:	00098a63          	beqz	s3,e886f186 <AirPlayInfoArrayAddAudioFormat+0x94>
		CFDictionarySetValue( dict, CFSTR( kAirPlayKey_AudioType ), inAudioType );
    e886f176:	864e                	mv	a2,s3
    e886f178:	0002f597          	auipc	a1,0x2f
    e886f17c:	3d858593          	addi	a1,a1,984 # e889e550 <icmp6_param_problem+0x14e2>
    e886f180:	8522                	mv	a0,s0
    e886f182:	ad0d80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	if( inInputFormats )
    e886f186:	00090a63          	beqz	s2,e886f19a <AirPlayInfoArrayAddAudioFormat+0xa8>
		CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_AudioInputFormats ), inInputFormats );
    e886f18a:	864a                	mv	a2,s2
    e886f18c:	0002f597          	auipc	a1,0x2f
    e886f190:	43c58593          	addi	a1,a1,1084 # e889e5c8 <icmp6_param_problem+0x155a>
    e886f194:	8522                	mv	a0,s0
    e886f196:	d31dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inOutputFormats )
    e886f19a:	c889                	beqz	s1,e886f1ac <AirPlayInfoArrayAddAudioFormat+0xba>
		CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_AudioOutputFormats ), inOutputFormats );
    e886f19c:	8626                	mv	a2,s1
    e886f19e:	0002f597          	auipc	a1,0x2f
    e886f1a2:	44a58593          	addi	a1,a1,1098 # e889e5e8 <icmp6_param_problem+0x157a>
    e886f1a6:	8522                	mv	a0,s0
    e886f1a8:	d1fdd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFArrayAppendValue( dictArray, dict );
    e886f1ac:	85a2                	mv	a1,s0
    e886f1ae:	8556                	mv	a0,s5
    e886f1b0:	8c0d80ef          	jal	ra,e8847270 <CFArrayAppendValue>
	CFReleaseNullSafe( dict );
    e886f1b4:	8522                	mv	a0,s0
    e886f1b6:	f95d70ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e886f1ba:	4501                	li	a0,0
    e886f1bc:	bfad                	j	e886f136 <AirPlayInfoArrayAddAudioFormat+0x44>

00000000e886f1be <AirPlayInfoArrayAddScreenDisplay>:
	uint32_t							inMaxFPS,
	uint32_t							inWidthPixels,
	uint32_t							inHeightPixels,
	uint32_t							inWidthPhysical,
	uint32_t							inHeightPhysical )
{
    e886f1be:	715d                	addi	sp,sp,-80
    e886f1c0:	e0a2                	sd	s0,64(sp)
    e886f1c2:	fc26                	sd	s1,56(sp)
    e886f1c4:	f44e                	sd	s3,40(sp)
    e886f1c6:	f052                	sd	s4,32(sp)
    e886f1c8:	ec56                	sd	s5,24(sp)
    e886f1ca:	e85a                	sd	s6,16(sp)
    e886f1cc:	e45e                	sd	s7,8(sp)
    e886f1ce:	e062                	sd	s8,0(sp)
    e886f1d0:	e486                	sd	ra,72(sp)
    e886f1d2:	f84a                	sd	s2,48(sp)
    e886f1d4:	8abe                	mv	s5,a5
	OSStatus				err;
	CFMutableArrayRef		dictArray;
	CFMutableDictionaryRef	dict = NULL;

	if( *inArray == NULL )
    e886f1d6:	611c                	ld	a5,0(a0)
{
    e886f1d8:	842a                	mv	s0,a0
    e886f1da:	8c2e                	mv	s8,a1
    e886f1dc:	8bb2                	mv	s7,a2
    e886f1de:	8b36                	mv	s6,a3
    e886f1e0:	84ba                	mv	s1,a4
    e886f1e2:	8a42                	mv	s4,a6
    e886f1e4:	89c6                	mv	s3,a7
	if( *inArray == NULL )
    e886f1e6:	c3a1                	beqz	a5,e886f226 <AirPlayInfoArrayAddScreenDisplay+0x68>
		*inArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
		require_action( *inArray, exit, err = kNoMemoryErr );
	}
	dictArray = (CFMutableArrayRef)*inArray;
	
	dict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886f1e8:	0004f697          	auipc	a3,0x4f
    e886f1ec:	5e068693          	addi	a3,a3,1504 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e886f1f0:	0004f617          	auipc	a2,0x4f
    e886f1f4:	5a860613          	addi	a2,a2,1448 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e886f1f8:	4581                	li	a1,0
    e886f1fa:	4501                	li	a0,0
	dictArray = (CFMutableArrayRef)*inArray;
    e886f1fc:	00043903          	ld	s2,0(s0)
	dict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e886f200:	9a6d80ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e886f204:	842a                	mv	s0,a0
	require_action( dict, exit, err = kNoMemoryErr );
    e886f206:	e91d                	bnez	a0,e886f23c <AirPlayInfoArrayAddScreenDisplay+0x7e>
		require_action( *inArray, exit, err = kNoMemoryErr );
    e886f208:	7579                	lui	a0,0xffffe
    e886f20a:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	err = kNoErr;

exit:
	CFReleaseNullSafe( dict );
	return( err );
}
    e886f20e:	60a6                	ld	ra,72(sp)
    e886f210:	6406                	ld	s0,64(sp)
    e886f212:	74e2                	ld	s1,56(sp)
    e886f214:	7942                	ld	s2,48(sp)
    e886f216:	79a2                	ld	s3,40(sp)
    e886f218:	7a02                	ld	s4,32(sp)
    e886f21a:	6ae2                	ld	s5,24(sp)
    e886f21c:	6b42                	ld	s6,16(sp)
    e886f21e:	6ba2                	ld	s7,8(sp)
    e886f220:	6c02                	ld	s8,0(sp)
    e886f222:	6161                	addi	sp,sp,80
    e886f224:	8082                	ret
		*inArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e886f226:	0004f617          	auipc	a2,0x4f
    e886f22a:	54a60613          	addi	a2,a2,1354 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e886f22e:	4581                	li	a1,0
    e886f230:	4501                	li	a0,0
    e886f232:	f95d70ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e886f236:	e008                	sd	a0,0(s0)
		require_action( *inArray, exit, err = kNoMemoryErr );
    e886f238:	f945                	bnez	a0,e886f1e8 <AirPlayInfoArrayAddScreenDisplay+0x2a>
    e886f23a:	b7f9                	j	e886f208 <AirPlayInfoArrayAddScreenDisplay+0x4a>
	CFDictionarySetValue( dict, CFSTR( kAirPlayKey_UUID ), inUUID );
    e886f23c:	8662                	mv	a2,s8
    e886f23e:	0002f597          	auipc	a1,0x2f
    e886f242:	26258593          	addi	a1,a1,610 # e889e4a0 <icmp6_param_problem+0x1432>
    e886f246:	a0cd80ef          	jal	ra,e8847452 <CFDictionarySetValue>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_DisplayFeatures ), inFeatures );
    e886f24a:	7c0bb60b          	extu	a2,s7,31,0
    e886f24e:	0002f597          	auipc	a1,0x2f
    e886f252:	3ba58593          	addi	a1,a1,954 # e889e608 <icmp6_param_problem+0x159a>
    e886f256:	8522                	mv	a0,s0
    e886f258:	c6fdd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_PrimaryInputDevice ), inPrimaryDevice );
    e886f25c:	7c0b360b          	extu	a2,s6,31,0
    e886f260:	0002f597          	auipc	a1,0x2f
    e886f264:	3c058593          	addi	a1,a1,960 # e889e620 <icmp6_param_problem+0x15b2>
    e886f268:	8522                	mv	a0,s0
    e886f26a:	c5ddd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	if( inMaxFPS )
    e886f26e:	c891                	beqz	s1,e886f282 <AirPlayInfoArrayAddScreenDisplay+0xc4>
		CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_MaxFPS ), inMaxFPS );
    e886f270:	7c04b60b          	extu	a2,s1,31,0
    e886f274:	0002f597          	auipc	a1,0x2f
    e886f278:	3cc58593          	addi	a1,a1,972 # e889e640 <icmp6_param_problem+0x15d2>
    e886f27c:	8522                	mv	a0,s0
    e886f27e:	c49dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_WidthPixels ), inWidthPixels );
    e886f282:	7c0ab60b          	extu	a2,s5,31,0
    e886f286:	0002f597          	auipc	a1,0x2f
    e886f28a:	3ca58593          	addi	a1,a1,970 # e889e650 <icmp6_param_problem+0x15e2>
    e886f28e:	8522                	mv	a0,s0
    e886f290:	c37dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_HeightPixels ), inHeightPixels );
    e886f294:	7c0a360b          	extu	a2,s4,31,0
    e886f298:	0002f597          	auipc	a1,0x2f
    e886f29c:	3d058593          	addi	a1,a1,976 # e889e668 <icmp6_param_problem+0x15fa>
    e886f2a0:	8522                	mv	a0,s0
    e886f2a2:	c25dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_WidthPhysical ), inWidthPhysical );
    e886f2a6:	7c09b60b          	extu	a2,s3,31,0
    e886f2aa:	0002f597          	auipc	a1,0x2f
    e886f2ae:	3d658593          	addi	a1,a1,982 # e889e680 <icmp6_param_problem+0x1612>
    e886f2b2:	8522                	mv	a0,s0
    e886f2b4:	c13dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFDictionarySetInt64( dict, CFSTR( kAirPlayKey_HeightPhysical ), inHeightPhysical );
    e886f2b8:	05016603          	lwu	a2,80(sp)
    e886f2bc:	0002f597          	auipc	a1,0x2f
    e886f2c0:	3dc58593          	addi	a1,a1,988 # e889e698 <icmp6_param_problem+0x162a>
    e886f2c4:	8522                	mv	a0,s0
    e886f2c6:	c01dd0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
	CFArrayAppendValue( dictArray, dict );
    e886f2ca:	85a2                	mv	a1,s0
    e886f2cc:	854a                	mv	a0,s2
    e886f2ce:	fa3d70ef          	jal	ra,e8847270 <CFArrayAppendValue>
	CFReleaseNullSafe( dict );
    e886f2d2:	8522                	mv	a0,s0
    e886f2d4:	e77d70ef          	jal	ra,e884714a <CFRelease>
	err = kNoErr;
    e886f2d8:	4501                	li	a0,0
    e886f2da:	bf15                	j	e886f20e <AirPlayInfoArrayAddScreenDisplay+0x50>

00000000e886f2dc <_AirPlayReceiverSessionScreen_Cleanup>:
//===========================================================================================================================
//	_AirPlayReceiverSessionScreen_Cleanup
//===========================================================================================================================

static void	_AirPlayReceiverSessionScreen_Cleanup( AirPlayReceiverSessionScreenRef me )
{
    e886f2dc:	1141                	addi	sp,sp,-16
    e886f2de:	e022                	sd	s0,0(sp)
    e886f2e0:	e406                	sd	ra,8(sp)
    e886f2e2:	842a                	mv	s0,a0
	ScreenStreamForget( &me->screenStream );
    e886f2e4:	32853503          	ld	a0,808(a0)
    e886f2e8:	c909                	beqz	a0,e886f2fa <_AirPlayReceiverSessionScreen_Cleanup+0x1e>
    e886f2ea:	b47f30ef          	jal	ra,e8862e30 <ScreenStreamStop>
    e886f2ee:	32843503          	ld	a0,808(s0)
    e886f2f2:	e59d70ef          	jal	ra,e884714a <CFRelease>
    e886f2f6:	32043423          	sd	zero,808(s0)
	ForgetSocket( &me->commandSock );
    e886f2fa:	32042503          	lw	a0,800(s0)
    e886f2fe:	00054763          	bltz	a0,e886f30c <_AirPlayReceiverSessionScreen_Cleanup+0x30>
    e886f302:	6a1150ef          	jal	ra,e88851a2 <lwip_close>
    e886f306:	57fd                	li	a5,-1
    e886f308:	32f42023          	sw	a5,800(s0)
	AES_CTR_Forget( &me->aesContext, &me->aesValid );
    e886f30c:	1e844783          	lbu	a5,488(s0)
    e886f310:	c799                	beqz	a5,e886f31e <_AirPlayReceiverSessionScreen_Cleanup+0x42>
    e886f312:	0c840513          	addi	a0,s0,200
    e886f316:	ca7d40ef          	jal	ra,e8843fbc <AES_CTR_Final>
    e886f31a:	1e040423          	sb	zero,488(s0)
}
    e886f31e:	60a2                	ld	ra,8(sp)
    e886f320:	6402                	ld	s0,0(sp)
    e886f322:	0141                	addi	sp,sp,16
    e886f324:	8082                	ret

00000000e886f326 <AirPlayReceiverSessionScreen_Delete>:
{
    e886f326:	1141                	addi	sp,sp,-16
    e886f328:	e022                	sd	s0,0(sp)
    e886f32a:	e406                	sd	ra,8(sp)
	if( inSession->aesValid )
    e886f32c:	1e854783          	lbu	a5,488(a0)
{
    e886f330:	842a                	mv	s0,a0
	if( inSession->aesValid )
    e886f332:	c799                	beqz	a5,e886f340 <AirPlayReceiverSessionScreen_Delete+0x1a>
		inSession->aesValid = false;
    e886f334:	1e050423          	sb	zero,488(a0)
		AES_CTR_Final( &inSession->aesContext );
    e886f338:	0c850513          	addi	a0,a0,200
    e886f33c:	c81d40ef          	jal	ra,e8843fbc <AES_CTR_Final>
	MemZeroSecure( &inSession->chachaCryptor, sizeof( inSession->chachaCryptor ) );
    e886f340:	1f040793          	addi	a5,s0,496
    e886f344:	32040713          	addi	a4,s0,800
    e886f348:	00e79863          	bne	a5,a4,e886f358 <AirPlayReceiverSessionScreen_Delete+0x32>
	free( inSession );
    e886f34c:	8522                	mv	a0,s0
}
    e886f34e:	6402                	ld	s0,0(sp)
    e886f350:	60a2                	ld	ra,8(sp)
    e886f352:	0141                	addi	sp,sp,16
	free( inSession );
    e886f354:	7ad0c06f          	j	e887c300 <eLIBs_free>
    e886f358:	1817d00b          	sbia	zero,(a5),1,0
    e886f35c:	b7f5                	j	e886f348 <AirPlayReceiverSessionScreen_Delete+0x22>

00000000e886f35e <AirPlayReceiverSessionScreen_Create>:
{
    e886f35e:	1101                	addi	sp,sp,-32
    e886f360:	e826                	sd	s1,16(sp)
    e886f362:	84aa                	mv	s1,a0
    p = malloc(len);
    e886f364:	33000513          	li	a0,816
    e886f368:	e422                	sd	s0,8(sp)
    e886f36a:	ec06                	sd	ra,24(sp)
    e886f36c:	4e20c0ef          	jal	ra,e887b84e <my_malloc>
    e886f370:	842a                	mv	s0,a0
    memset(p,0,len);
    e886f372:	33000613          	li	a2,816
    e886f376:	4581                	li	a1,0
    e886f378:	01c0d0ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( obj, exit, err = kNoMemoryErr );
    e886f37c:	c819                	beqz	s0,e886f392 <AirPlayReceiverSessionScreen_Create+0x34>
	obj->commandSock = kInvalidSocketRef;
    e886f37e:	57fd                	li	a5,-1
    e886f380:	32f42023          	sw	a5,800(s0)
	err = kNoErr;
    e886f384:	4501                	li	a0,0
	*outRef = obj;
    e886f386:	e080                	sd	s0,0(s1)
}
    e886f388:	60e2                	ld	ra,24(sp)
    e886f38a:	6422                	ld	s0,8(sp)
    e886f38c:	64c2                	ld	s1,16(sp)
    e886f38e:	6105                	addi	sp,sp,32
    e886f390:	8082                	ret
	require_action( obj, exit, err = kNoMemoryErr );
    e886f392:	7579                	lui	a0,0xffffe
    e886f394:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e886f398:	bfc5                	j	e886f388 <AirPlayReceiverSessionScreen_Create+0x2a>

00000000e886f39a <AirPlayReceiverSessionScreen_SetTimeSynchronizer>:
	inSession->timeSynchronizer = *inTimeSynchronizer;
    e886f39a:	6198                	ld	a4,0(a1)
    e886f39c:	e518                	sd	a4,8(a0)
    e886f39e:	6598                	ld	a4,8(a1)
    e886f3a0:	e918                	sd	a4,16(a0)
    e886f3a2:	6998                	ld	a4,16(a1)
    e886f3a4:	ed18                	sd	a4,24(a0)
}
    e886f3a6:	8082                	ret

00000000e886f3a8 <AirPlayReceiverSessionScreen_SetChaChaSecurityInfo>:
	MemZeroSecure( &inSession->chachaCryptor, sizeof( inSession->chachaCryptor ) );
    e886f3a8:	1f050793          	addi	a5,a0,496
    e886f3ac:	32050713          	addi	a4,a0,800
    e886f3b0:	02f71963          	bne	a4,a5,e886f3e2 <AirPlayReceiverSessionScreen_SetChaChaSecurityInfo+0x3a>
	require_action_quiet( inKey && ( inKeyLen == 32 ), exit, err = kNoErr );
    e886f3b4:	c995                	beqz	a1,e886f3e8 <AirPlayReceiverSessionScreen_SetChaChaSecurityInfo+0x40>
    e886f3b6:	02000793          	li	a5,32
    e886f3ba:	02f61763          	bne	a2,a5,e886f3e8 <AirPlayReceiverSessionScreen_SetChaChaSecurityInfo+0x40>
{
    e886f3be:	1141                	addi	sp,sp,-16
    e886f3c0:	e022                	sd	s0,0(sp)
	memcpy( inSession->chachaCryptor.key, inKey, inKeyLen );
    e886f3c2:	02000613          	li	a2,32
    e886f3c6:	842a                	mv	s0,a0
    e886f3c8:	2f850513          	addi	a0,a0,760
{
    e886f3cc:	e406                	sd	ra,8(sp)
	memcpy( inSession->chachaCryptor.key, inKey, inKeyLen );
    e886f3ce:	7d30c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	inSession->chachaCryptor.isValid = true;
    e886f3d2:	4785                	li	a5,1
    e886f3d4:	1ef40823          	sb	a5,496(s0)
}
    e886f3d8:	60a2                	ld	ra,8(sp)
    e886f3da:	6402                	ld	s0,0(sp)
    e886f3dc:	4501                	li	a0,0
    e886f3de:	0141                	addi	sp,sp,16
    e886f3e0:	8082                	ret
    e886f3e2:	1817d00b          	sbia	zero,(a5),1,0
    e886f3e6:	b7e9                	j	e886f3b0 <AirPlayReceiverSessionScreen_SetChaChaSecurityInfo+0x8>
    e886f3e8:	4501                	li	a0,0
    e886f3ea:	8082                	ret

00000000e886f3ec <AirPlayReceiverSessionScreen_SetSecurityInfo>:
{
    e886f3ec:	7179                	addi	sp,sp,-48
    e886f3ee:	ec22                	sd	s0,24(sp)
    e886f3f0:	f026                	sd	s1,32(sp)
    e886f3f2:	f406                	sd	ra,40(sp)
	AES_CTR_Forget( &inSession->aesContext, &inSession->aesValid );
    e886f3f4:	1e854783          	lbu	a5,488(a0)
{
    e886f3f8:	842a                	mv	s0,a0
    e886f3fa:	0c850493          	addi	s1,a0,200
	AES_CTR_Forget( &inSession->aesContext, &inSession->aesValid );
    e886f3fe:	cb91                	beqz	a5,e886f412 <AirPlayReceiverSessionScreen_SetSecurityInfo+0x26>
    e886f400:	8526                	mv	a0,s1
    e886f402:	e432                	sd	a2,8(sp)
    e886f404:	e02e                	sd	a1,0(sp)
    e886f406:	bb7d40ef          	jal	ra,e8843fbc <AES_CTR_Final>
    e886f40a:	1e040423          	sb	zero,488(s0)
    e886f40e:	6622                	ld	a2,8(sp)
    e886f410:	6582                	ld	a1,0(sp)
	err = AES_CTR_Init( &inSession->aesContext, inKey, inIV );
    e886f412:	8526                	mv	a0,s1
    e886f414:	a35d40ef          	jal	ra,e8843e48 <AES_CTR_Init>
	require_noerr( err, exit );
    e886f418:	e501                	bnez	a0,e886f420 <AirPlayReceiverSessionScreen_SetSecurityInfo+0x34>
	inSession->aesValid = true;
    e886f41a:	4785                	li	a5,1
    e886f41c:	1ef40423          	sb	a5,488(s0)
}
    e886f420:	70a2                	ld	ra,40(sp)
    e886f422:	6462                	ld	s0,24(sp)
    e886f424:	7482                	ld	s1,32(sp)
    e886f426:	6145                	addi	sp,sp,48
    e886f428:	8082                	ret

00000000e886f42a <AirPlayReceiverSessionScreen_Setup>:
{
    e886f42a:	1101                	addi	sp,sp,-32
    e886f42c:	e822                	sd	s0,16(sp)
	inSession->videoLatencyMs = CFDictionaryGetInt64( inStreamDesc, CFSTR( "latencyMs" ), &err );
    e886f42e:	0070                	addi	a2,sp,12
{
    e886f430:	842a                	mv	s0,a0
    e886f432:	852e                	mv	a0,a1
	inSession->videoLatencyMs = CFDictionaryGetInt64( inStreamDesc, CFSTR( "latencyMs" ), &err );
    e886f434:	0002f597          	auipc	a1,0x2f
    e886f438:	27c58593          	addi	a1,a1,636 # e889e6b0 <icmp6_param_problem+0x1642>
{
    e886f43c:	ec06                	sd	ra,24(sp)
	inSession->videoLatencyMs = CFDictionaryGetInt64( inStreamDesc, CFSTR( "latencyMs" ), &err );
    e886f43e:	a32dd0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e886f442:	e008                	sd	a0,0(s0)
	if( err ) inSession->videoLatencyMs = 70;
    e886f444:	47b2                	lw	a5,12(sp)
    e886f446:	c781                	beqz	a5,e886f44e <AirPlayReceiverSessionScreen_Setup+0x24>
    e886f448:	04600793          	li	a5,70
    e886f44c:	e01c                	sd	a5,0(s0)
}
    e886f44e:	60e2                	ld	ra,24(sp)
    e886f450:	6442                	ld	s0,16(sp)
    e886f452:	4501                	li	a0,0
    e886f454:	6105                	addi	sp,sp,32
    e886f456:	8082                	ret

00000000e886f458 <AirPlayReceiverSessionScreen_ProcessFrames>:
{
    e886f458:	7111                	addi	sp,sp,-256
    e886f45a:	f9a2                	sd	s0,240(sp)
    e886f45c:	842a                	mv	s0,a0
	tcpSock = NetSocket_GetNative( inNetSock );
    e886f45e:	852e                	mv	a0,a1
{
    e886f460:	f5a6                	sd	s1,232(sp)
    e886f462:	e9d2                	sd	s4,208(sp)
    e886f464:	e032                	sd	a2,0(sp)
    e886f466:	fd86                	sd	ra,248(sp)
    e886f468:	f1ca                	sd	s2,224(sp)
    e886f46a:	edce                	sd	s3,216(sp)
    e886f46c:	e5d6                	sd	s5,200(sp)
    e886f46e:	e1da                	sd	s6,192(sp)
    e886f470:	fd5e                	sd	s7,184(sp)
    e886f472:	f962                	sd	s8,176(sp)
    e886f474:	f566                	sd	s9,168(sp)
    e886f476:	f16a                	sd	s10,160(sp)
    e886f478:	ed6e                	sd	s11,152(sp)
    e886f47a:	8a2e                	mv	s4,a1
	tcpSock = NetSocket_GetNative( inNetSock );
    e886f47c:	9fce60ef          	jal	ra,e8855678 <NetSocket_GetNative>
    e886f480:	84aa                	mv	s1,a0
	if( (int) inSession->commandSock	> maxFD ) maxFD = (int) inSession->commandSock;
    e886f482:	32042703          	lw	a4,800(s0)
    e886f486:	6602                	ld	a2,0(sp)
    e886f488:	02071793          	slli	a5,a4,0x20
    e886f48c:	0007d363          	bgez	a5,e886f492 <AirPlayReceiverSessionScreen_ProcessFrames+0x3a>
    e886f490:	577d                	li	a4,-1
    e886f492:	0007079b          	sext.w	a5,a4
    e886f496:	0097a7b3          	slt	a5,a5,s1
    e886f49a:	42f4970b          	mvnez	a4,s1,a5
	maxFD += 1;
    e886f49e:	0017079b          	addiw	a5,a4,1
    e886f4a2:	e83e                	sd	a5,16(sp)
	deadSenderTicks = inTimeoutDataSecs * UpTicksPerSecond();
    e886f4a4:	3e800793          	li	a5,1000
    e886f4a8:	02f607b3          	mul	a5,a2,a5
	FD_ZERO( &readSet );
    e886f4ac:	03810913          	addi	s2,sp,56
		FD_SET( tcpSock, &readSet );
    e886f4b0:	4b05                	li	s6,1
    e886f4b2:	4034dc1b          	sraiw	s8,s1,0x3
    e886f4b6:	03100b93          	li	s7,49
			if( err == kConnectionErr ) { err = kNoErr; goto exit; }
    e886f4ba:	7cf9                	lui	s9,0xffffe
		// This opcode is intended to be ignored. It's only for measuring bandwidth.
	}
	else
	{
		apvs_ulog( kLogLevelError, "### Unknown screen opcode: %u\n", inHeader->opcode );
		err = kUnsupportedErr;
    e886f4bc:	7d79                	lui	s10,0xffffe
	deadSenderTicks = inTimeoutDataSecs * UpTicksPerSecond();
    e886f4be:	ec3e                	sd	a5,24(sp)
	lastAliveTicks  = UpTicks();
    e886f4c0:	d05f10ef          	jal	ra,e88611c4 <UpTicks>
    e886f4c4:	89aa                	mv	s3,a0
	FD_ZERO( &readSet );
    e886f4c6:	461d                	li	a2,7
    e886f4c8:	4581                	li	a1,0
    e886f4ca:	854a                	mv	a0,s2
    e886f4cc:	6c90c0ef          	jal	ra,e887c394 <eLIBs_memset>
		FD_SET( tcpSock, &readSet );
    e886f4d0:	0074f793          	andi	a5,s1,7
    e886f4d4:	00fb1b3b          	sllw	s6,s6,a5
    e886f4d8:	1c0b278b          	ext	a5,s6,7,0
    e886f4dc:	e43e                	sd	a5,8(sp)
    e886f4de:	0004879b          	sext.w	a5,s1
    e886f4e2:	e03e                	sd	a5,0(sp)
		timeout.tv_usec = 100000; // 100 ms
    e886f4e4:	67e1                	lui	a5,0x18
    e886f4e6:	6a078793          	addi	a5,a5,1696 # 186a0 <memcmp-0xe87e7960>
    e886f4ea:	f03e                	sd	a5,32(sp)
		FD_SET( tcpSock, &readSet );
    e886f4ec:	6782                	ld	a5,0(sp)
    e886f4ee:	00fbe863          	bltu	s7,a5,e886f4fe <AirPlayReceiverSessionScreen_ProcessFrames+0xa6>
    e886f4f2:	8189478b          	lrbu	a5,s2,s8,0
    e886f4f6:	6722                	ld	a4,8(sp)
    e886f4f8:	8fd9                	or	a5,a5,a4
    e886f4fa:	0189578b          	srb	a5,s2,s8,0
		FD_SET( inSession->commandSock, &readSet );
    e886f4fe:	32042783          	lw	a5,800(s0)
    e886f502:	00fbee63          	bltu	s7,a5,e886f51e <AirPlayReceiverSessionScreen_ProcessFrames+0xc6>
    e886f506:	0077f713          	andi	a4,a5,7
    e886f50a:	4037d693          	srai	a3,a5,0x3
    e886f50e:	4785                	li	a5,1
    e886f510:	00e797bb          	sllw	a5,a5,a4
    e886f514:	80d9470b          	lrbu	a4,s2,a3,0
    e886f518:	8fd9                	or	a5,a5,a4
    e886f51a:	00d9578b          	srb	a5,s2,a3,0
		timeout.tv_usec = 100000; // 100 ms
    e886f51e:	7782                	ld	a5,32(sp)
		n = select( maxFD, &readSet, NULL, NULL, &timeout );
    e886f520:	6542                	ld	a0,16(sp)
    e886f522:	0098                	addi	a4,sp,64
    e886f524:	4681                	li	a3,0
    e886f526:	4601                	li	a2,0
    e886f528:	85ca                	mv	a1,s2
		timeout.tv_sec  = 0;
    e886f52a:	e082                	sd	zero,64(sp)
		timeout.tv_usec = 100000; // 100 ms
    e886f52c:	e4be                	sd	a5,72(sp)
		n = select( maxFD, &readSet, NULL, NULL, &timeout );
    e886f52e:	7fe160ef          	jal	ra,e8885d2c <lwip_select>
		err = select_errno( n );
    e886f532:	08a04c63          	bgtz	a0,e886f5ca <AirPlayReceiverSessionScreen_ProcessFrames+0x172>
    e886f536:	cd09                	beqz	a0,e886f550 <AirPlayReceiverSessionScreen_ProcessFrames+0xf8>
    e886f538:	00075797          	auipc	a5,0x75
    e886f53c:	0f078793          	addi	a5,a5,240 # e88e4628 <lwip_errno>
    e886f540:	0007aa83          	lw	s5,0(a5)
    e886f544:	220a8063          	beqz	s5,e886f764 <AirPlayReceiverSessionScreen_ProcessFrames+0x30c>
		if( err == kTimeoutErr )
    e886f548:	5bec8793          	addi	a5,s9,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e886f54c:	02fa9563          	bne	s5,a5,e886f576 <AirPlayReceiverSessionScreen_ProcessFrames+0x11e>
			if( ( UpTicks() - lastAliveTicks ) > deadSenderTicks )
    e886f550:	c75f10ef          	jal	ra,e88611c4 <UpTicks>
    e886f554:	41350533          	sub	a0,a0,s3
    e886f558:	67e2                	ld	a5,24(sp)
    e886f55a:	f8a7f9e3          	bgeu	a5,a0,e886f4ec <AirPlayReceiverSessionScreen_ProcessFrames+0x94>
				apvs_ulog( kLogLevelNotice, "### Sender went dead. Stopping.\n" );
    e886f55e:	00066517          	auipc	a0,0x66
    e886f562:	e2250513          	addi	a0,a0,-478 # e88d5380 <gLogCategory_AirPlayReceiverSessionScreenCore>
    e886f566:	411c                	lw	a5,0(a0)
    e886f568:	03200713          	li	a4,50
    e886f56c:	02f75563          	bge	a4,a5,e886f596 <AirPlayReceiverSessionScreen_ProcessFrames+0x13e>
    e886f570:	7af9                	lui	s5,0xffffe
    e886f572:	5bea8a93          	addi	s5,s5,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
}
    e886f576:	70ee                	ld	ra,248(sp)
    e886f578:	744e                	ld	s0,240(sp)
    e886f57a:	8556                	mv	a0,s5
    e886f57c:	74ae                	ld	s1,232(sp)
    e886f57e:	790e                	ld	s2,224(sp)
    e886f580:	69ee                	ld	s3,216(sp)
    e886f582:	6a4e                	ld	s4,208(sp)
    e886f584:	6aae                	ld	s5,200(sp)
    e886f586:	6b0e                	ld	s6,192(sp)
    e886f588:	7bea                	ld	s7,184(sp)
    e886f58a:	7c4a                	ld	s8,176(sp)
    e886f58c:	7caa                	ld	s9,168(sp)
    e886f58e:	7d0a                	ld	s10,160(sp)
    e886f590:	6dea                	ld	s11,152(sp)
    e886f592:	6111                	addi	sp,sp,256
    e886f594:	8082                	ret
				apvs_ulog( kLogLevelNotice, "### Sender went dead. Stopping.\n" );
    e886f596:	577d                	li	a4,-1
    e886f598:	02e78363          	beq	a5,a4,e886f5be <AirPlayReceiverSessionScreen_ProcessFrames+0x166>
    e886f59c:	0005c697          	auipc	a3,0x5c
    e886f5a0:	26468693          	addi	a3,a3,612 # e88cb800 <kAirPlayReceiverSessionClass+0xe0>
    e886f5a4:	03200613          	li	a2,50
    e886f5a8:	0005c597          	auipc	a1,0x5c
    e886f5ac:	3d858593          	addi	a1,a1,984 # e88cb980 <__PRETTY_FUNCTION__.10607>
    e886f5b0:	00066517          	auipc	a0,0x66
    e886f5b4:	dd050513          	addi	a0,a0,-560 # e88d5380 <gLogCategory_AirPlayReceiverSessionScreenCore>
    e886f5b8:	ebde40ef          	jal	ra,e8854474 <LogPrintF>
    e886f5bc:	bf55                	j	e886f570 <AirPlayReceiverSessionScreen_ProcessFrames+0x118>
    e886f5be:	03200593          	li	a1,50
    e886f5c2:	ab1e40ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886f5c6:	d54d                	beqz	a0,e886f570 <AirPlayReceiverSessionScreen_ProcessFrames+0x118>
    e886f5c8:	bfd1                	j	e886f59c <AirPlayReceiverSessionScreen_ProcessFrames+0x144>
		if( FD_ISSET( tcpSock, &readSet ) )
    e886f5ca:	6782                	ld	a5,0(sp)
    e886f5cc:	14fbed63          	bltu	s7,a5,e886f726 <AirPlayReceiverSessionScreen_ProcessFrames+0x2ce>
    e886f5d0:	8189478b          	lrbu	a5,s2,s8,0
    e886f5d4:	00fb77b3          	and	a5,s6,a5
    e886f5d8:	14078763          	beqz	a5,e886f726 <AirPlayReceiverSessionScreen_ProcessFrames+0x2ce>
			err = NetSocket_Read( inNetSock, sizeof( inSession->screenHeader ),
    e886f5dc:	010a3883          	ld	a7,16(s4)
    e886f5e0:	04840d93          	addi	s11,s0,72
    e886f5e4:	4781                	li	a5,0
    e886f5e6:	4805                	li	a6,1
    e886f5e8:	4701                	li	a4,0
    e886f5ea:	86ee                	mv	a3,s11
    e886f5ec:	08000613          	li	a2,128
    e886f5f0:	08000593          	li	a1,128
    e886f5f4:	8552                	mv	a0,s4
    e886f5f6:	9882                	jalr	a7
    e886f5f8:	8aaa                	mv	s5,a0
			if( err == kConnectionErr ) { err = kNoErr; goto exit; }
    e886f5fa:	77f9                	lui	a5,0xffffe
    e886f5fc:	59f78793          	addi	a5,a5,1439 # ffffffffffffe59f <__DRAM0_INF_BASE+0xffffffff0000e59f>
    e886f600:	38f50163          	beq	a0,a5,e886f982 <AirPlayReceiverSessionScreen_ProcessFrames+0x52a>
			require_noerr_quiet( err, exit );
    e886f604:	f92d                	bnez	a0,e886f576 <AirPlayReceiverSessionScreen_ProcessFrames+0x11e>
			len = inSession->screenHeader.bodySize;
    e886f606:	04846603          	lwu	a2,72(s0)
			if( len > 0 )
    e886f60a:	ca39                	beqz	a2,e886f660 <AirPlayReceiverSessionScreen_ProcessFrames+0x208>
				frameBuffer = (uint8_t *) malloc( len );
    e886f60c:	8532                	mv	a0,a2
    e886f60e:	f432                	sd	a2,40(sp)
    e886f610:	23e0c0ef          	jal	ra,e887b84e <my_malloc>
    e886f614:	84aa                	mv	s1,a0
				if( frameBuffer == NULL ) { dlogassert( "malloc( %zu ) failed\n", len ); continue; }
    e886f616:	7622                	ld	a2,40(sp)
    e886f618:	e50d                	bnez	a0,e886f642 <AirPlayReceiverSessionScreen_ProcessFrames+0x1ea>
    e886f61a:	88b2                	mv	a7,a2
    e886f61c:	0005c817          	auipc	a6,0x5c
    e886f620:	20c80813          	addi	a6,a6,524 # e88cb828 <kAirPlayReceiverSessionClass+0x108>
    e886f624:	0005c797          	auipc	a5,0x5c
    e886f628:	35c78793          	addi	a5,a5,860 # e88cb980 <__PRETTY_FUNCTION__.10607>
    e886f62c:	18900713          	li	a4,393
    e886f630:	0005c697          	auipc	a3,0x5c
    e886f634:	21068693          	addi	a3,a3,528 # e88cb840 <kAirPlayReceiverSessionClass+0x120>
    e886f638:	4601                	li	a2,0
    e886f63a:	4581                	li	a1,0
    e886f63c:	d8dde0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e886f640:	b575                	j	e886f4ec <AirPlayReceiverSessionScreen_ProcessFrames+0x94>
				err = NetSocket_Read( inNetSock, len, len, frameBuffer, NULL, 1/*inTimeoutDataSecs*/ );
    e886f642:	010a3883          	ld	a7,16(s4)
    e886f646:	86aa                	mv	a3,a0
    e886f648:	4805                	li	a6,1
    e886f64a:	4781                	li	a5,0
    e886f64c:	4701                	li	a4,0
    e886f64e:	85b2                	mv	a1,a2
    e886f650:	8552                	mv	a0,s4
    e886f652:	9882                	jalr	a7
    e886f654:	8aaa                	mv	s5,a0
				if( err ) free( frameBuffer );
    e886f656:	c511                	beqz	a0,e886f662 <AirPlayReceiverSessionScreen_ProcessFrames+0x20a>
    e886f658:	8526                	mv	a0,s1
    e886f65a:	4a70c0ef          	jal	ra,e887c300 <eLIBs_free>
				if( err == kConnectionErr ) goto exit;
    e886f65e:	bf21                	j	e886f576 <AirPlayReceiverSessionScreen_ProcessFrames+0x11e>
				frameBuffer = NULL;
    e886f660:	4481                	li	s1,0
	if( inHeader->opcode == kAirPlayScreenOpCode_VideoFrame )
    e886f662:	04c44783          	lbu	a5,76(s0)
    e886f666:	1c079863          	bnez	a5,e886f836 <AirPlayReceiverSessionScreen_ProcessFrames+0x3de>
		if( me->respectTimestamps )
    e886f66a:	02844783          	lbu	a5,40(s0)
    e886f66e:	0e078f63          	beqz	a5,e886f76c <AirPlayReceiverSessionScreen_ProcessFrames+0x314>
			displayTicks = me->timeSynchronizer.getUpTicksNearSynchronizedNTPTimeFunc(
    e886f672:	6c1c                	ld	a5,24(s0)
    e886f674:	682c                	ld	a1,80(s0)
    e886f676:	6408                	ld	a0,8(s0)
    e886f678:	9782                	jalr	a5
			displayTicks = UpTicks();
    e886f67a:	8aaa                	mv	s5,a0
		nowTicks = UpTicks();
    e886f67c:	b49f10ef          	jal	ra,e88611c4 <UpTicks>
		if( displayTicks >= nowTicks )
    e886f680:	0eaae963          	bltu	s5,a0,e886f772 <AirPlayReceiverSessionScreen_ProcessFrames+0x31a>
			me->displayDeltaMs = UpTicksToMilliseconds( displayTicks - nowTicks );
    e886f684:	40aa8533          	sub	a0,s5,a0
    e886f688:	ba1f10ef          	jal	ra,e8861228 <UpTicksToMilliseconds>
    e886f68c:	f808                	sd	a0,48(s0)
		me->displayDeltaMs = me->videoLatencyMs - me->displayDeltaMs;
    e886f68e:	601c                	ld	a5,0(s0)
    e886f690:	7818                	ld	a4,48(s0)
    e886f692:	40e78733          	sub	a4,a5,a4
    e886f696:	f818                	sd	a4,48(s0)
		if( me->displayDeltaMs >= ( 2 * me->videoLatencyMs ) )
    e886f698:	0786                	slli	a5,a5,0x1
    e886f69a:	00f74563          	blt	a4,a5,e886f6a4 <AirPlayReceiverSessionScreen_ProcessFrames+0x24c>
			++me->lateFrames;
    e886f69e:	5c1c                	lw	a5,56(s0)
    e886f6a0:	2785                	addiw	a5,a5,1
    e886f6a2:	dc1c                	sw	a5,56(s0)
		if( me->chachaCryptor.isValid )
    e886f6a4:	1f044783          	lbu	a5,496(s0)
    e886f6a8:	4430                	lw	a2,72(s0)
    e886f6aa:	16078463          	beqz	a5,e886f812 <AirPlayReceiverSessionScreen_ProcessFrames+0x3ba>
			if( inHeader->bodySize >= 16 )
    e886f6ae:	47bd                	li	a5,15
    e886f6b0:	0cc7ec63          	bltu	a5,a2,e886f788 <AirPlayReceiverSessionScreen_ProcessFrames+0x330>
		err = ScreenStreamProcessData( me->screenStream, inFramePtr, inHeader->bodySize, displayTicks, NULL, NULL, NULL );
    e886f6b4:	04846603          	lwu	a2,72(s0)
    e886f6b8:	32843503          	ld	a0,808(s0)
    e886f6bc:	4801                	li	a6,0
    e886f6be:	4781                	li	a5,0
    e886f6c0:	4701                	li	a4,0
    e886f6c2:	86d6                	mv	a3,s5
    e886f6c4:	85a6                	mv	a1,s1
    e886f6c6:	fe8f30ef          	jal	ra,e8862eae <ScreenStreamProcessData>
			err = ScreenStreamSetAVCC( me->screenStream, inFramePtr, inHeader->bodySize );
    e886f6ca:	c8aa                	sw	a0,80(sp)
			require_noerr( err, exit );
    e886f6cc:	16051263          	bnez	a0,e886f830 <AirPlayReceiverSessionScreen_ProcessFrames+0x3d8>
		goto exit;
	}
	err = kNoErr;
    e886f6d0:	c882                	sw	zero,80(sp)
	
exit:
	if( inFramePtr ) free( inFramePtr );
    e886f6d2:	c4b9                	beqz	s1,e886f720 <AirPlayReceiverSessionScreen_ProcessFrames+0x2c8>
    e886f6d4:	8526                	mv	a0,s1
    e886f6d6:	42b0c0ef          	jal	ra,e887c300 <eLIBs_free>
	if( err )
    e886f6da:	47c6                	lw	a5,80(sp)
    e886f6dc:	c3b1                	beqz	a5,e886f720 <AirPlayReceiverSessionScreen_ProcessFrames+0x2c8>
	{
		++me->frameErrors;
    e886f6de:	501c                	lw	a5,32(s0)
		apvs_frames_ulog( kLogLevelError, "### Process frame error (%u): %#m\n", me->frameErrors, err );
    e886f6e0:	00066517          	auipc	a0,0x66
    e886f6e4:	d0050513          	addi	a0,a0,-768 # e88d53e0 <gLogCategory_AirPlayReceiverSessionScreenFrames>
    e886f6e8:	05a00713          	li	a4,90
		++me->frameErrors;
    e886f6ec:	2785                	addiw	a5,a5,1
    e886f6ee:	d01c                	sw	a5,32(s0)
		apvs_frames_ulog( kLogLevelError, "### Process frame error (%u): %#m\n", me->frameErrors, err );
    e886f6f0:	411c                	lw	a5,0(a0)
    e886f6f2:	02f74763          	blt	a4,a5,e886f720 <AirPlayReceiverSessionScreen_ProcessFrames+0x2c8>
    e886f6f6:	577d                	li	a4,-1
    e886f6f8:	1ee78163          	beq	a5,a4,e886f8da <AirPlayReceiverSessionScreen_ProcessFrames+0x482>
    e886f6fc:	47c6                	lw	a5,80(sp)
    e886f6fe:	5018                	lw	a4,32(s0)
    e886f700:	0005c697          	auipc	a3,0x5c
    e886f704:	21868693          	addi	a3,a3,536 # e88cb918 <kAirPlayReceiverSessionClass+0x1f8>
    e886f708:	05a00613          	li	a2,90
    e886f70c:	0005c597          	auipc	a1,0x5c
    e886f710:	2a458593          	addi	a1,a1,676 # e88cb9b0 <__PRETTY_FUNCTION__.10645>
    e886f714:	00066517          	auipc	a0,0x66
    e886f718:	ccc50513          	addi	a0,a0,-820 # e88d53e0 <gLogCategory_AirPlayReceiverSessionScreenFrames>
    e886f71c:	d59e40ef          	jal	ra,e8854474 <LogPrintF>
			lastAliveTicks = UpTicks();
    e886f720:	aa5f10ef          	jal	ra,e88611c4 <UpTicks>
    e886f724:	89aa                	mv	s3,a0
		if( FD_ISSET( inSession->commandSock, &readSet ) )
    e886f726:	32042503          	lw	a0,800(s0)
    e886f72a:	dcabe1e3          	bltu	s7,a0,e886f4ec <AirPlayReceiverSessionScreen_ProcessFrames+0x94>
    e886f72e:	40355793          	srai	a5,a0,0x3
    e886f732:	80f9478b          	lrbu	a5,s2,a5,0
    e886f736:	00757713          	andi	a4,a0,7
    e886f73a:	40e7d7bb          	sraw	a5,a5,a4
    e886f73e:	8b85                	andi	a5,a5,1
    e886f740:	da0786e3          	beqz	a5,e886f4ec <AirPlayReceiverSessionScreen_ProcessFrames+0x94>
{
	OSStatus		err;
	char			buf[ kAirPlayReceiverSessionScreenCommandMaxSize ];
	ssize_t			n;
	
	n = recv( me->commandSock, buf, sizeof( buf ), 0 );
    e886f744:	4681                	li	a3,0
    e886f746:	04000613          	li	a2,64
    e886f74a:	088c                	addi	a1,sp,80
    e886f74c:	633150ef          	jal	ra,e888557e <lwip_recv>
	err = map_global_value_errno( n > 0, n );
    e886f750:	18a04c63          	bgtz	a0,e886f8e8 <AirPlayReceiverSessionScreen_ProcessFrames+0x490>
    e886f754:	00075797          	auipc	a5,0x75
    e886f758:	ed478793          	addi	a5,a5,-300 # e88e4628 <lwip_errno>
    e886f75c:	0007aa83          	lw	s5,0(a5)
    e886f760:	e00a9be3          	bnez	s5,e886f576 <AirPlayReceiverSessionScreen_ProcessFrames+0x11e>
    e886f764:	7af9                	lui	s5,0xffffe
    e886f766:	5d4a8a93          	addi	s5,s5,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
	return( err );
    e886f76a:	b531                	j	e886f576 <AirPlayReceiverSessionScreen_ProcessFrames+0x11e>
			displayTicks = UpTicks();
    e886f76c:	a59f10ef          	jal	ra,e88611c4 <UpTicks>
    e886f770:	b729                	j	e886f67a <AirPlayReceiverSessionScreen_ProcessFrames+0x222>
			me->displayDeltaMs = -(int64_t) UpTicksToMilliseconds( nowTicks - displayTicks );
    e886f772:	41550533          	sub	a0,a0,s5
    e886f776:	ab3f10ef          	jal	ra,e8861228 <UpTicksToMilliseconds>
    e886f77a:	40a00533          	neg	a0,a0
			++me->negativeAheadFrames;
    e886f77e:	505c                	lw	a5,36(s0)
			me->displayDeltaMs = -(int64_t) UpTicksToMilliseconds( nowTicks - displayTicks );
    e886f780:	f808                	sd	a0,48(s0)
			++me->negativeAheadFrames;
    e886f782:	2785                	addiw	a5,a5,1
    e886f784:	d05c                	sw	a5,36(s0)
    e886f786:	b721                	j	e886f68e <AirPlayReceiverSessionScreen_ProcessFrames+0x236>
				chacha20_poly1305_init_64x64( &me->chachaCryptor.state, me->chachaCryptor.key, me->chachaCryptor.nonce );
    e886f788:	31840793          	addi	a5,s0,792
    e886f78c:	1f840993          	addi	s3,s0,504
    e886f790:	863e                	mv	a2,a5
    e886f792:	2f840593          	addi	a1,s0,760
    e886f796:	854e                	mv	a0,s3
    e886f798:	f43e                	sd	a5,40(sp)
    e886f79a:	ca0de0ef          	jal	ra,e884dc3a <chacha20_poly1305_init_64x64>
				chacha20_poly1305_add_aad( &me->chachaCryptor.state, inHeader, sizeof( AirPlayScreenHeader ) );
    e886f79e:	85ee                	mv	a1,s11
    e886f7a0:	08000613          	li	a2,128
    e886f7a4:	854e                	mv	a0,s3
    e886f7a6:	ecede0ef          	jal	ra,e884de74 <chacha20_poly1305_add_aad>
				len = chacha20_poly1305_decrypt( &me->chachaCryptor.state, inFramePtr, inHeader->bodySize - 16, inFramePtr );
    e886f7aa:	4430                	lw	a2,72(s0)
    e886f7ac:	86a6                	mv	a3,s1
    e886f7ae:	85a6                	mv	a1,s1
    e886f7b0:	3641                	addiw	a2,a2,-16
    e886f7b2:	7c06360b          	extu	a2,a2,31,0
    e886f7b6:	854e                	mv	a0,s3
    e886f7b8:	f4cde0ef          	jal	ra,e884df04 <chacha20_poly1305_decrypt>
    e886f7bc:	8daa                	mv	s11,a0
				len += chacha20_poly1305_verify( &me->chachaCryptor.state, &inFramePtr[ len ], &inFramePtr[ inHeader->bodySize - 16 ], &err );
    e886f7be:	4430                	lw	a2,72(s0)
    e886f7c0:	00a485b3          	add	a1,s1,a0
    e886f7c4:	0894                	addi	a3,sp,80
    e886f7c6:	3641                	addiw	a2,a2,-16
    e886f7c8:	7c06360b          	extu	a2,a2,31,0
    e886f7cc:	9626                	add	a2,a2,s1
    e886f7ce:	854e                	mv	a0,s3
    e886f7d0:	835de0ef          	jal	ra,e884e004 <chacha20_poly1305_verify>
    e886f7d4:	956e                	add	a0,a0,s11
				require_noerr( err, exit );
    e886f7d6:	4746                	lw	a4,80(sp)
    e886f7d8:	ef21                	bnez	a4,e886f830 <AirPlayReceiverSessionScreen_ProcessFrames+0x3d8>
				require_action( len == inHeader->bodySize - 16, exit, err = kInternalErr );
    e886f7da:	4438                	lw	a4,72(s0)
    e886f7dc:	77a2                	ld	a5,40(sp)
    e886f7de:	3741                	addiw	a4,a4,-16
    e886f7e0:	7c07368b          	extu	a3,a4,31,0
    e886f7e4:	00d50663          	beq	a0,a3,e886f7f0 <AirPlayReceiverSessionScreen_ProcessFrames+0x398>
    e886f7e8:	596d079b          	addiw	a5,s10,1430
		err = kUnsupportedErr;
    e886f7ec:	c8be                	sw	a5,80(sp)
		goto exit;
    e886f7ee:	a089                	j	e886f830 <AirPlayReceiverSessionScreen_ProcessFrames+0x3d8>
				inHeader->bodySize -= 16;
    e886f7f0:	c438                	sw	a4,72(s0)
	for( i = 0; i < inLen; ++i )
    e886f7f2:	863e                	mv	a2,a5
    e886f7f4:	32040713          	addi	a4,s0,800
		if( ++( inInteger[ i ] ) != 0 )
    e886f7f8:	00064783          	lbu	a5,0(a2)
    e886f7fc:	2785                	addiw	a5,a5,1
    e886f7fe:	0ff7f793          	andi	a5,a5,255
    e886f802:	00f60023          	sb	a5,0(a2)
    e886f806:	ea0797e3          	bnez	a5,e886f6b4 <AirPlayReceiverSessionScreen_ProcessFrames+0x25c>
	for( i = 0; i < inLen; ++i )
    e886f80a:	0605                	addi	a2,a2,1
    e886f80c:	fee616e3          	bne	a2,a4,e886f7f8 <AirPlayReceiverSessionScreen_ProcessFrames+0x3a0>
    e886f810:	b555                	j	e886f6b4 <AirPlayReceiverSessionScreen_ProcessFrames+0x25c>
		if( me->aesValid )
    e886f812:	1e844783          	lbu	a5,488(s0)
    e886f816:	e8078fe3          	beqz	a5,e886f6b4 <AirPlayReceiverSessionScreen_ProcessFrames+0x25c>
			err = AES_CTR_Update( &me->aesContext, inFramePtr, inHeader->bodySize, inFramePtr );
    e886f81a:	86a6                	mv	a3,s1
    e886f81c:	7c06360b          	extu	a2,a2,31,0
    e886f820:	85a6                	mv	a1,s1
    e886f822:	0c840513          	addi	a0,s0,200
    e886f826:	e5cd40ef          	jal	ra,e8843e82 <AES_CTR_Update>
    e886f82a:	c8aa                	sw	a0,80(sp)
			require_noerr( err, exit );
    e886f82c:	e80504e3          	beqz	a0,e886f6b4 <AirPlayReceiverSessionScreen_ProcessFrames+0x25c>
	if( inFramePtr ) free( inFramePtr );
    e886f830:	ea0492e3          	bnez	s1,e886f6d4 <AirPlayReceiverSessionScreen_ProcessFrames+0x27c>
    e886f834:	b56d                	j	e886f6de <AirPlayReceiverSessionScreen_ProcessFrames+0x286>
	else if( inHeader->opcode == kAirPlayScreenOpCode_VideoConfig )
    e886f836:	4705                	li	a4,1
    e886f838:	04e79163          	bne	a5,a4,e886f87a <AirPlayReceiverSessionScreen_ProcessFrames+0x422>
		ScreenStreamSetWidthHeight( me->screenStream, inHeader->params[ 1 ].f32[ 0 ], inHeader->params[ 1 ].f32[ 1 ] );
    e886f83c:	05c42787          	flw	fa5,92(s0)
		me->respectTimestamps = ( inHeader->smallParam[ 1 ] & kAirPlayScreenFlag_RespectTimestamps ) != 0;
    e886f840:	04e44783          	lbu	a5,78(s0)
		ScreenStreamSetWidthHeight( me->screenStream, inHeader->params[ 1 ].f32[ 0 ], inHeader->params[ 1 ].f32[ 1 ] );
    e886f844:	32843503          	ld	a0,808(s0)
    e886f848:	c0179653          	fcvt.wu.s	a2,fa5,rtz
    e886f84c:	05842787          	flw	fa5,88(s0)
		me->respectTimestamps = ( inHeader->smallParam[ 1 ] & kAirPlayScreenFlag_RespectTimestamps ) != 0;
    e886f850:	0417b78b          	extu	a5,a5,1,1
		ScreenStreamSetWidthHeight( me->screenStream, inHeader->params[ 1 ].f32[ 0 ], inHeader->params[ 1 ].f32[ 1 ] );
    e886f854:	2601                	sext.w	a2,a2
    e886f856:	c01795d3          	fcvt.wu.s	a1,fa5,rtz
		me->respectTimestamps = ( inHeader->smallParam[ 1 ] & kAirPlayScreenFlag_RespectTimestamps ) != 0;
    e886f85a:	02f40423          	sb	a5,40(s0)
		ScreenStreamSetWidthHeight( me->screenStream, inHeader->params[ 1 ].f32[ 0 ], inHeader->params[ 1 ].f32[ 1 ] );
    e886f85e:	2581                	sext.w	a1,a1
    e886f860:	c0af30ef          	jal	ra,e8862c6a <ScreenStreamSetWidthHeight>
		if( inHeader->bodySize > 0 )
    e886f864:	4430                	lw	a2,72(s0)
    e886f866:	e60605e3          	beqz	a2,e886f6d0 <AirPlayReceiverSessionScreen_ProcessFrames+0x278>
			err = ScreenStreamSetAVCC( me->screenStream, inFramePtr, inHeader->bodySize );
    e886f86a:	32843503          	ld	a0,808(s0)
    e886f86e:	7c06360b          	extu	a2,a2,31,0
    e886f872:	85a6                	mv	a1,s1
    e886f874:	ce4f30ef          	jal	ra,e8862d58 <ScreenStreamSetAVCC>
    e886f878:	bd89                	j	e886f6ca <AirPlayReceiverSessionScreen_ProcessFrames+0x272>
	else if( inHeader->opcode == kAirPlayScreenOpCode_KeepAlive )
    e886f87a:	4689                	li	a3,2
    e886f87c:	e4d78ae3          	beq	a5,a3,e886f6d0 <AirPlayReceiverSessionScreen_ProcessFrames+0x278>
	else if( inHeader->opcode == kAirPlayScreenOpCode_Ignore )
    e886f880:	37f1                	addiw	a5,a5,-4
    e886f882:	0ff7f793          	andi	a5,a5,255
    e886f886:	e4f775e3          	bgeu	a4,a5,e886f6d0 <AirPlayReceiverSessionScreen_ProcessFrames+0x278>
		apvs_ulog( kLogLevelError, "### Unknown screen opcode: %u\n", inHeader->opcode );
    e886f88a:	00066517          	auipc	a0,0x66
    e886f88e:	af650513          	addi	a0,a0,-1290 # e88d5380 <gLogCategory_AirPlayReceiverSessionScreenCore>
    e886f892:	411c                	lw	a5,0(a0)
    e886f894:	05a00713          	li	a4,90
    e886f898:	02f74763          	blt	a4,a5,e886f8c6 <AirPlayReceiverSessionScreen_ProcessFrames+0x46e>
    e886f89c:	577d                	li	a4,-1
    e886f89e:	02e78863          	beq	a5,a4,e886f8ce <AirPlayReceiverSessionScreen_ProcessFrames+0x476>
    e886f8a2:	04c44703          	lbu	a4,76(s0)
    e886f8a6:	0005c697          	auipc	a3,0x5c
    e886f8aa:	05268693          	addi	a3,a3,82 # e88cb8f8 <kAirPlayReceiverSessionClass+0x1d8>
    e886f8ae:	05a00613          	li	a2,90
    e886f8b2:	0005c597          	auipc	a1,0x5c
    e886f8b6:	0fe58593          	addi	a1,a1,254 # e88cb9b0 <__PRETTY_FUNCTION__.10645>
    e886f8ba:	00066517          	auipc	a0,0x66
    e886f8be:	ac650513          	addi	a0,a0,-1338 # e88d5380 <gLogCategory_AirPlayReceiverSessionScreenCore>
    e886f8c2:	bb3e40ef          	jal	ra,e8854474 <LogPrintF>
		err = kUnsupportedErr;
    e886f8c6:	77f9                	lui	a5,0xffffe
    e886f8c8:	5b17879b          	addiw	a5,a5,1457
    e886f8cc:	b705                	j	e886f7ec <AirPlayReceiverSessionScreen_ProcessFrames+0x394>
		apvs_ulog( kLogLevelError, "### Unknown screen opcode: %u\n", inHeader->opcode );
    e886f8ce:	05a00593          	li	a1,90
    e886f8d2:	fa0e40ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886f8d6:	d965                	beqz	a0,e886f8c6 <AirPlayReceiverSessionScreen_ProcessFrames+0x46e>
    e886f8d8:	b7e9                	j	e886f8a2 <AirPlayReceiverSessionScreen_ProcessFrames+0x44a>
		apvs_frames_ulog( kLogLevelError, "### Process frame error (%u): %#m\n", me->frameErrors, err );
    e886f8da:	05a00593          	li	a1,90
    e886f8de:	f94e40ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886f8e2:	e2050fe3          	beqz	a0,e886f720 <AirPlayReceiverSessionScreen_ProcessFrames+0x2c8>
    e886f8e6:	bd19                	j	e886f6fc <AirPlayReceiverSessionScreen_ProcessFrames+0x2a4>
	require_noerr( err, exit );
	
	switch( buf[ 0 ] )
    e886f8e8:	05014683          	lbu	a3,80(sp)
    e886f8ec:	00066517          	auipc	a0,0x66
    e886f8f0:	a9450513          	addi	a0,a0,-1388 # e88d5380 <gLogCategory_AirPlayReceiverSessionScreenCore>
    e886f8f4:	07100713          	li	a4,113
    e886f8f8:	411c                	lw	a5,0(a0)
    e886f8fa:	04e69363          	bne	a3,a4,e886f940 <AirPlayReceiverSessionScreen_ProcessFrames+0x4e8>
	{
		case kAirPlayReceiverSessionScreenCommand_Quit:
			apvs_ulog( kLogLevelNotice, "User quit event received\n" );
    e886f8fe:	03200713          	li	a4,50
    e886f902:	00f75663          	bge	a4,a5,e886f90e <AirPlayReceiverSessionScreen_ProcessFrames+0x4b6>
			err = kEndingErr;
    e886f906:	7af9                	lui	s5,0xffffe
    e886f908:	5a0a8a93          	addi	s5,s5,1440 # ffffffffffffe5a0 <__DRAM0_INF_BASE+0xffffffff0000e5a0>
    e886f90c:	b1ad                	j	e886f576 <AirPlayReceiverSessionScreen_ProcessFrames+0x11e>
			apvs_ulog( kLogLevelNotice, "User quit event received\n" );
    e886f90e:	577d                	li	a4,-1
    e886f910:	00e79763          	bne	a5,a4,e886f91e <AirPlayReceiverSessionScreen_ProcessFrames+0x4c6>
    e886f914:	03200593          	li	a1,50
    e886f918:	f5ae40ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886f91c:	d56d                	beqz	a0,e886f906 <AirPlayReceiverSessionScreen_ProcessFrames+0x4ae>
    e886f91e:	0005c697          	auipc	a3,0x5c
    e886f922:	02268693          	addi	a3,a3,34 # e88cb940 <kAirPlayReceiverSessionClass+0x220>
    e886f926:	03200613          	li	a2,50
    e886f92a:	0005c597          	auipc	a1,0x5c
    e886f92e:	0b658593          	addi	a1,a1,182 # e88cb9e0 <__PRETTY_FUNCTION__.10655>
    e886f932:	00066517          	auipc	a0,0x66
    e886f936:	a4e50513          	addi	a0,a0,-1458 # e88d5380 <gLogCategory_AirPlayReceiverSessionScreenCore>
    e886f93a:	b3be40ef          	jal	ra,e8854474 <LogPrintF>
    e886f93e:	b7e1                	j	e886f906 <AirPlayReceiverSessionScreen_ProcessFrames+0x4ae>
			break;
		
		default:
			apvs_ulog( kLogLevelWarning, "### Unknown pipe action: '%c'\n", buf[ 0 ] );
    e886f940:	03c00713          	li	a4,60
    e886f944:	baf744e3          	blt	a4,a5,e886f4ec <AirPlayReceiverSessionScreen_ProcessFrames+0x94>
    e886f948:	577d                	li	a4,-1
    e886f94a:	02e78563          	beq	a5,a4,e886f974 <AirPlayReceiverSessionScreen_ProcessFrames+0x51c>
    e886f94e:	05014703          	lbu	a4,80(sp)
    e886f952:	0005c697          	auipc	a3,0x5c
    e886f956:	00e68693          	addi	a3,a3,14 # e88cb960 <kAirPlayReceiverSessionClass+0x240>
    e886f95a:	03c00613          	li	a2,60
    e886f95e:	0005c597          	auipc	a1,0x5c
    e886f962:	08258593          	addi	a1,a1,130 # e88cb9e0 <__PRETTY_FUNCTION__.10655>
    e886f966:	00066517          	auipc	a0,0x66
    e886f96a:	a1a50513          	addi	a0,a0,-1510 # e88d5380 <gLogCategory_AirPlayReceiverSessionScreenCore>
    e886f96e:	b07e40ef          	jal	ra,e8854474 <LogPrintF>
    e886f972:	bead                	j	e886f4ec <AirPlayReceiverSessionScreen_ProcessFrames+0x94>
    e886f974:	03c00593          	li	a1,60
    e886f978:	efae40ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886f97c:	b60508e3          	beqz	a0,e886f4ec <AirPlayReceiverSessionScreen_ProcessFrames+0x94>
    e886f980:	b7f9                	j	e886f94e <AirPlayReceiverSessionScreen_ProcessFrames+0x4f6>
			if( err == kConnectionErr ) { err = kNoErr; goto exit; }
    e886f982:	4a81                	li	s5,0
    e886f984:	becd                	j	e886f576 <AirPlayReceiverSessionScreen_ProcessFrames+0x11e>

00000000e886f986 <AirPlayReceiverSessionScreen_StartSession>:
{
    e886f986:	7179                	addi	sp,sp,-48
    e886f988:	ec22                	sd	s0,24(sp)
    e886f98a:	f026                	sd	s1,32(sp)
    e886f98c:	f406                	sd	ra,40(sp)
	inSession->ticksPerSecF			= (double) UpTicksPerSecond();
    e886f98e:	0004e797          	auipc	a5,0x4e
    e886f992:	1027b787          	fld	fa5,258(a5) # e88bda90 <kSRPHashDescriptor_SHA512+0x80>
    e886f996:	a13c                	fsd	fa5,64(a0)
	inSession->lateFrames			= 0;
    e886f998:	02052c23          	sw	zero,56(a0)
	inSession->negativeAheadFrames	= 0;
    e886f99c:	02052223          	sw	zero,36(a0)
{
    e886f9a0:	842a                	mv	s0,a0
	err = OpenSelfConnectedLoopbackSocket( &inSession->commandSock );
    e886f9a2:	32050513          	addi	a0,a0,800
{
    e886f9a6:	e42e                	sd	a1,8(sp)
	err = OpenSelfConnectedLoopbackSocket( &inSession->commandSock );
    e886f9a8:	aede50ef          	jal	ra,e8855494 <OpenSelfConnectedLoopbackSocket>
    e886f9ac:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e886f9ae:	e115                	bnez	a0,e886f9d2 <AirPlayReceiverSessionScreen_StartSession+0x4c>
	err = ScreenStreamCreate( &inSession->screenStream );
    e886f9b0:	32840513          	addi	a0,s0,808
    e886f9b4:	a6ef30ef          	jal	ra,e8862c22 <ScreenStreamCreate>
    e886f9b8:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e886f9ba:	ed01                	bnez	a0,e886f9d2 <AirPlayReceiverSessionScreen_StartSession+0x4c>
	ScreenStreamSetDelegateContext( inSession->screenStream, context);
    e886f9bc:	65a2                	ld	a1,8(sp)
    e886f9be:	32843503          	ld	a0,808(s0)
    e886f9c2:	aa4f30ef          	jal	ra,e8862c66 <ScreenStreamSetDelegateContext>
	err = ScreenStreamStart( inSession->screenStream );
    e886f9c6:	32843503          	ld	a0,808(s0)
    e886f9ca:	c12f30ef          	jal	ra,e8862ddc <ScreenStreamStart>
    e886f9ce:	84aa                	mv	s1,a0
	if( err ) AirPlayReceiverSessionScreen_StopSession( inSession );
    e886f9d0:	c501                	beqz	a0,e886f9d8 <AirPlayReceiverSessionScreen_StartSession+0x52>
	_AirPlayReceiverSessionScreen_Cleanup( inSession );
    e886f9d2:	8522                	mv	a0,s0
    e886f9d4:	909ff0ef          	jal	ra,e886f2dc <_AirPlayReceiverSessionScreen_Cleanup>
}
    e886f9d8:	70a2                	ld	ra,40(sp)
    e886f9da:	6462                	ld	s0,24(sp)
    e886f9dc:	8526                	mv	a0,s1
    e886f9de:	7482                	ld	s1,32(sp)
    e886f9e0:	6145                	addi	sp,sp,48
    e886f9e2:	8082                	ret

00000000e886f9e4 <AirPlayReceiverSessionScreen_StopSession>:
	_AirPlayReceiverSessionScreen_Cleanup( inSession );
    e886f9e4:	8f9ff06f          	j	e886f2dc <_AirPlayReceiverSessionScreen_Cleanup>

00000000e886f9e8 <AirPlayReceiverSessionScreen_SendCommand>:
	AirPlayReceiverSessionScreen_SendCommand(
		AirPlayReceiverSessionScreenRef		inSession,
		char								inCommand,
		const void *						inExtraPtr,
		size_t								inExtraLen )
{
    e886f9e8:	7139                	addi	sp,sp,-64
    e886f9ea:	fc06                	sd	ra,56(sp)
    e886f9ec:	f822                	sd	s0,48(sp)
    e886f9ee:	00b107a3          	sb	a1,15(sp)
	OSStatus		err = kNoErr;
	ssize_t			n;
	iovec_t			iov[ 2 ];
	int				ion;

	require_action( ( 1 + inExtraLen ) <= kAirPlayReceiverSessionScreenCommandMaxSize, exit, err = kSizeErr );
    e886f9f2:	00168713          	addi	a4,a3,1
    e886f9f6:	04000793          	li	a5,64
    e886f9fa:	04e7e863          	bltu	a5,a4,e886fa4a <AirPlayReceiverSessionScreen_SendCommand+0x62>
	
	if( IsValidSocket( inSession->commandSock ) )
    e886f9fe:	32052503          	lw	a0,800(a0)
    e886fa02:	00055763          	bgez	a0,e886fa10 <AirPlayReceiverSessionScreen_SendCommand+0x28>
	OSStatus		err = kNoErr;
    e886fa06:	4501                	li	a0,0
		err = map_global_value_errno( n == (ssize_t)( 1 + inExtraLen ), n );
	}
	
exit:
	return( err );
}
    e886fa08:	70e2                	ld	ra,56(sp)
    e886fa0a:	7442                	ld	s0,48(sp)
    e886fa0c:	6121                	addi	sp,sp,64
    e886fa0e:	8082                	ret
		iov[ 0 ].iov_base = (void *) &inCommand;
    e886fa10:	00f10793          	addi	a5,sp,15
    e886fa14:	e83e                	sd	a5,16(sp)
		iov[ 0 ].iov_len  = 1;
    e886fa16:	4785                	li	a5,1
    e886fa18:	ec3e                	sd	a5,24(sp)
		if( inExtraLen > 0 )
    e886fa1a:	c681                	beqz	a3,e886fa22 <AirPlayReceiverSessionScreen_SendCommand+0x3a>
			iov[ 1 ].iov_len  = inExtraLen;
    e886fa1c:	fcd1560b          	sdd	a2,a3,(sp),2,4
			ion = 2;
    e886fa20:	4789                	li	a5,2
		n = writev( inSession->commandSock, iov, ion );
    e886fa22:	863e                	mv	a2,a5
    e886fa24:	080c                	addi	a1,sp,16
    e886fa26:	8436                	mv	s0,a3
    e886fa28:	2e6160ef          	jal	ra,e8885d0e <lwip_writev>
		err = map_global_value_errno( n == (ssize_t)( 1 + inExtraLen ), n );
    e886fa2c:	2501                	sext.w	a0,a0
    e886fa2e:	0014069b          	addiw	a3,s0,1
    e886fa32:	fca68ae3          	beq	a3,a0,e886fa06 <AirPlayReceiverSessionScreen_SendCommand+0x1e>
    e886fa36:	00075797          	auipc	a5,0x75
    e886fa3a:	bf278793          	addi	a5,a5,-1038 # e88e4628 <lwip_errno>
    e886fa3e:	4388                	lw	a0,0(a5)
    e886fa40:	f561                	bnez	a0,e886fa08 <AirPlayReceiverSessionScreen_SendCommand+0x20>
    e886fa42:	7579                	lui	a0,0xffffe
    e886fa44:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e886fa48:	b7c1                	j	e886fa08 <AirPlayReceiverSessionScreen_SendCommand+0x20>
	require_action( ( 1 + inExtraLen ) <= kAirPlayReceiverSessionScreenCommandMaxSize, exit, err = kSizeErr );
    e886fa4a:	7579                	lui	a0,0xffffe
    e886fa4c:	5a950513          	addi	a0,a0,1449 # ffffffffffffe5a9 <__DRAM0_INF_BASE+0xffffffff0000e5a9>
    e886fa50:	bf65                	j	e886fa08 <AirPlayReceiverSessionScreen_SendCommand+0x20>

00000000e886fa52 <_RTPJitterBufferBufferedSamples>:
{
	RTPPacketNode	*first, *last;
	uint32_t		preparedSamples, receivedSamples;
	
	// Calculate size of prepared list?first (which is always fully decoded)
	if( !TAILQ_EMPTY( &ctx->preparedList ) )
    e886fa52:	6d3c                	ld	a5,88(a0)
		// Calculate sample count of last packet based on size
		preparedSamples += last->pkt.len / ctx->outputFormat.mBytesPerFrame;
	}
	else
	{
		preparedSamples = 0;
    e886fa54:	4701                	li	a4,0
	if( !TAILQ_EMPTY( &ctx->preparedList ) )
    e886fa56:	cf91                	beqz	a5,e886fa72 <_RTPJitterBufferBufferedSamples+0x20>
		last = TAILQ_LAST( &ctx->preparedList, RTPPacketNodeList );
    e886fa58:	7138                	ld	a4,96(a0)
		preparedSamples = (uint32_t)( last->pkt.pkt.rtp.header.ts - first->pkt.pkt.rtp.header.ts );
    e886fa5a:	4bdc                	lw	a5,20(a5)
		preparedSamples += last->pkt.len / ctx->outputFormat.mBytesPerFrame;
    e886fa5c:	0b856603          	lwu	a2,184(a0)
		last = TAILQ_LAST( &ctx->preparedList, RTPPacketNodeList );
    e886fa60:	6718                	ld	a4,8(a4)
    e886fa62:	6314                	ld	a3,0(a4)
		preparedSamples = (uint32_t)( last->pkt.pkt.rtp.header.ts - first->pkt.pkt.rtp.header.ts );
    e886fa64:	4ad8                	lw	a4,20(a3)
    e886fa66:	9f1d                	subw	a4,a4,a5
		preparedSamples += last->pkt.len / ctx->outputFormat.mBytesPerFrame;
    e886fa68:	5d06b783          	ld	a5,1488(a3)
    e886fa6c:	02c7d7b3          	divu	a5,a5,a2
    e886fa70:	9f3d                	addw	a4,a4,a5
		// Calculate sample count of last packet based on format
		receivedSamples += ctx->inputFormat.mFramesPerPacket;
	}
	else
	{
		receivedSamples = 0;
    e886fa72:	4781                	li	a5,0
	if( !preparedOnly && !TAILQ_EMPTY( &ctx->receivedList ) )
    e886fa74:	ed89                	bnez	a1,e886fa8e <_RTPJitterBufferBufferedSamples+0x3c>
    e886fa76:	7534                	ld	a3,104(a0)
		receivedSamples = 0;
    e886fa78:	87ae                	mv	a5,a1
	if( !preparedOnly && !TAILQ_EMPTY( &ctx->receivedList ) )
    e886fa7a:	ca91                	beqz	a3,e886fa8e <_RTPJitterBufferBufferedSamples+0x3c>
		last = TAILQ_LAST( &ctx->receivedList, RTPPacketNodeList );
    e886fa7c:	793c                	ld	a5,112(a0)
    e886fa7e:	679c                	ld	a5,8(a5)
		receivedSamples = (uint32_t)( last->pkt.pkt.rtp.header.ts - first->pkt.pkt.rtp.header.ts );
    e886fa80:	6390                	ld	a2,0(a5)
		receivedSamples += ctx->inputFormat.mFramesPerPacket;
    e886fa82:	09052783          	lw	a5,144(a0)
    e886fa86:	4ac8                	lw	a0,20(a3)
    e886fa88:	9f89                	subw	a5,a5,a0
    e886fa8a:	4a48                	lw	a0,20(a2)
    e886fa8c:	9fa9                	addw	a5,a5,a0
	}

	return( preparedSamples + receivedSamples );
}
    e886fa8e:	00f7053b          	addw	a0,a4,a5
    e886fa92:	8082                	ret

00000000e886fa94 <_RTPJitterBufferAudioDecoderDecodeCallback>:
{
	RTPPacketNode *		node = (RTPPacketNode *) inUserData;
	
	(void) inAudioConverter;
	
	if( node->pkt.len > 0 )
    e886fa94:	5d073783          	ld	a5,1488(a4)
    e886fa98:	c7b1                	beqz	a5,e886fae4 <_RTPJitterBufferAudioDecoderDecodeCallback+0x50>
	{
		check( *ioNumberDataPackets > 0 );
		*ioNumberDataPackets = 1;
    e886fa9a:	4785                	li	a5,1
    e886fa9c:	c19c                	sw	a5,0(a1)
			node->jitterBuffer->packetDescription.mVariableFramesInPacket	= 0;
			node->jitterBuffer->packetDescription.mDataByteSize				= ioData->mBuffers[ 0 ].mDataByteSize;
			*outDataPacketDescription										= &node->jitterBuffer->packetDescription;
		}

		return( kNoErr );
    e886fa9e:	4501                	li	a0,0
		ioData->mNumberBuffers					= 1;
    e886faa0:	c21c                	sw	a5,0(a2)
		ioData->mBuffers[ 0 ].mNumberChannels	= node->jitterBuffer->inputFormat.mChannelsPerFrame;
    e886faa2:	5f873783          	ld	a5,1528(a4)
    e886faa6:	0987a783          	lw	a5,152(a5)
    e886faaa:	c61c                	sw	a5,8(a2)
		ioData->mBuffers[ 0 ].mDataByteSize		= (UInt32)( node->pkt.len );
    e886faac:	5d073783          	ld	a5,1488(a4)
    e886fab0:	c65c                	sw	a5,12(a2)
		ioData->mBuffers[ 0 ].mData				= (void *) node->ptr;
    e886fab2:	5e073783          	ld	a5,1504(a4)
    e886fab6:	ea1c                	sd	a5,16(a2)
		node->pkt.len							= 0;
    e886fab8:	5c073823          	sd	zero,1488(a4)
		if( outDataPacketDescription )
    e886fabc:	ca8d                	beqz	a3,e886faee <_RTPJitterBufferAudioDecoderDecodeCallback+0x5a>
			node->jitterBuffer->packetDescription.mStartOffset				= 0;
    e886fabe:	5f873783          	ld	a5,1528(a4)
    e886fac2:	0c07b823          	sd	zero,208(a5)
			node->jitterBuffer->packetDescription.mVariableFramesInPacket	= 0;
    e886fac6:	5f873783          	ld	a5,1528(a4)
    e886faca:	0c07ac23          	sw	zero,216(a5)
			node->jitterBuffer->packetDescription.mDataByteSize				= ioData->mBuffers[ 0 ].mDataByteSize;
    e886face:	5f873783          	ld	a5,1528(a4)
    e886fad2:	4650                	lw	a2,12(a2)
    e886fad4:	0cc7ae23          	sw	a2,220(a5)
			*outDataPacketDescription										= &node->jitterBuffer->packetDescription;
    e886fad8:	5f873783          	ld	a5,1528(a4)
    e886fadc:	0d078793          	addi	a5,a5,208
    e886fae0:	e29c                	sd	a5,0(a3)
    e886fae2:	8082                	ret
	}
	
	*ioNumberDataPackets = 0;
	return( kUnderrunErr );
    e886fae4:	7579                	lui	a0,0xffffe
	*ioNumberDataPackets = 0;
    e886fae6:	0005a023          	sw	zero,0(a1)
	return( kUnderrunErr );
    e886faea:	5a250513          	addi	a0,a0,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
}
    e886faee:	8082                	ret

00000000e886faf0 <RTPJitterBufferLog>:
{
    e886faf0:	7159                	addi	sp,sp,-112
    e886faf2:	f026                	sd	s1,32(sp)
    e886faf4:	84aa                	mv	s1,a0
	if( log_category_enabled( &log_category_from_name( AirPlayJitterBuffer ), inLevel ) )
    e886faf6:	00066517          	auipc	a0,0x66
    e886fafa:	94a50513          	addi	a0,a0,-1718 # e88d5440 <gLogCategory_AirPlayJitterBuffer>
{
    e886fafe:	e8ba                	sd	a4,80(sp)
    e886fb00:	fc06                	sd	ra,56(sp)
    e886fb02:	ec22                	sd	s0,24(sp)
    e886fb04:	f44a                	sd	s2,40(sp)
    e886fb06:	f84e                	sd	s3,48(sp)
    e886fb08:	e4b6                	sd	a3,72(sp)
    e886fb0a:	ecbe                	sd	a5,88(sp)
    e886fb0c:	f0c2                	sd	a6,96(sp)
    e886fb0e:	f4c6                	sd	a7,104(sp)
	if( log_category_enabled( &log_category_from_name( AirPlayJitterBuffer ), inLevel ) )
    e886fb10:	411c                	lw	a5,0(a0)
    e886fb12:	0ff5f713          	andi	a4,a1,255
    e886fb16:	04f74263          	blt	a4,a5,e886fb5a <RTPJitterBufferLog+0x6a>
    e886fb1a:	577d                	li	a4,-1
    e886fb1c:	842e                	mv	s0,a1
    e886fb1e:	8932                	mv	s2,a2
    e886fb20:	04e78463          	beq	a5,a4,e886fb68 <RTPJitterBufferLog+0x78>
		logCtx = malloc( sizeof( *logCtx ) );
    e886fb24:	4541                	li	a0,16
    e886fb26:	5290b0ef          	jal	ra,e887b84e <my_malloc>
    e886fb2a:	89aa                	mv	s3,a0
		logCtx->level = inLevel;
    e886fb2c:	c100                	sw	s0,0(a0)
		logCtx->msg = (char*)malloc(1024);
    e886fb2e:	40000513          	li	a0,1024
    e886fb32:	51d0b0ef          	jal	ra,e887b84e <my_malloc>
    e886fb36:	00a9b423          	sd	a0,8(s3)
		va_start( args, inFormat );
    e886fb3a:	00b4                	addi	a3,sp,72
		vsnprintf(logCtx->msg, 1024, inFormat, args);
    e886fb3c:	864a                	mv	a2,s2
    e886fb3e:	40000593          	li	a1,1024
		va_start( args, inFormat );
    e886fb42:	e436                	sd	a3,8(sp)
		vsnprintf(logCtx->msg, 1024, inFormat, args);
    e886fb44:	6e40c0ef          	jal	ra,e887c228 <eLIBs_vsnprintf>
		dispatch_async_f( ctx->logQueue, logCtx, _RTPJitterBufferLog);
    e886fb48:	1184b503          	ld	a0,280(s1)
    e886fb4c:	00000617          	auipc	a2,0x0
    e886fb50:	39660613          	addi	a2,a2,918 # e886fee2 <_RTPJitterBufferLog>
    e886fb54:	85ce                	mv	a1,s3
    e886fb56:	8cadf0ef          	jal	ra,e884ec20 <dispatch_async_f>
}
    e886fb5a:	70e2                	ld	ra,56(sp)
    e886fb5c:	6462                	ld	s0,24(sp)
    e886fb5e:	7482                	ld	s1,32(sp)
    e886fb60:	7922                	ld	s2,40(sp)
    e886fb62:	79c2                	ld	s3,48(sp)
    e886fb64:	6165                	addi	sp,sp,112
    e886fb66:	8082                	ret
	if( log_category_enabled( &log_category_from_name( AirPlayJitterBuffer ), inLevel ) )
    e886fb68:	d0ae40ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886fb6c:	d57d                	beqz	a0,e886fb5a <RTPJitterBufferLog+0x6a>
    e886fb6e:	bf5d                	j	e886fb24 <RTPJitterBufferLog+0x34>

00000000e886fb70 <_RTPJitterBufferDecodeThread>:
//===========================================================================================================================
//	_RTPJitterBufferDecodeThread
//===========================================================================================================================

static void * _RTPJitterBufferDecodeThread( void *inCtx )
{
    e886fb70:	7119                	addi	sp,sp,-128
    e886fb72:	fc86                	sd	ra,120(sp)
    e886fb74:	f8a2                	sd	s0,112(sp)
    e886fb76:	f0ca                	sd	s2,96(sp)
    e886fb78:	ecce                	sd	s3,88(sp)
    e886fb7a:	e8d2                	sd	s4,80(sp)
    e886fb7c:	e4d6                	sd	s5,72(sp)
    e886fb7e:	bc22                	fsd	fs0,56(sp)
    e886fb80:	f4a6                	sd	s1,104(sp)
    e886fb82:	e0da                	sd	s6,64(sp)
	RTPJitterBufferContext *	ctx = inCtx;
	RTPPacketNode *				node;
	uint32_t					nextDecodeTS = 0;

	ctx->decodeThreadRun = true;
    e886fb84:	4785                	li	a5,1
    e886fb86:	00f50c23          	sb	a5,24(a0)
{
    e886fb8a:	842a                	mv	s0,a0
	pthread_setname_np_compat( "AirPlayAudioDecoder" );
    e886fb8c:	66f0b0ef          	jal	ra,e887b9fa <pthread_self>
    e886fb90:	2501                	sext.w	a0,a0
    e886fb92:	0005c597          	auipc	a1,0x5c
    e886fb96:	21e58593          	addi	a1,a1,542 # e88cbdb0 <__PRETTY_FUNCTION__.10655+0x3d0>
    e886fb9a:	23a0c0ef          	jal	ra,e887bdd4 <pthread_setname_np>
			{
				TAILQ_REMOVE( &ctx->receivedList, node, list );
				TAILQ_INSERT_TAIL( &ctx->freeList, node, list );
				ctx->nodesUsed -= 1;

				RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "Discarding late decode node at time %u\n",
    e886fb9e:	004009b7          	lui	s3,0x400
	SetCurrentThreadPriority( kAirPlayThreadPriority_AudioDecoder );
    e886fba2:	03d00513          	li	a0,61
    e886fba6:	dd8f10ef          	jal	ra,e886117e <SetCurrentThreadPriority>
	require( err == kNoErr || err == kUnderrunErr, exit );
    e886fbaa:	7a79                	lui	s4,0xffffe
	printf("_RTPJitterBufferDecodeThread start run %d\n",pthread_self());
    e886fbac:	64f0b0ef          	jal	ra,e887b9fa <pthread_self>
    e886fbb0:	0005059b          	sext.w	a1,a0
    e886fbb4:	0005c517          	auipc	a0,0x5c
    e886fbb8:	21450513          	addi	a0,a0,532 # e88cbdc8 <__PRETTY_FUNCTION__.10655+0x3e8>
    e886fbbc:	70a0c0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	uint32_t					nextDecodeTS = 0;
    e886fbc0:	4901                	li	s2,0
				RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "Discarding late decode node at time %u\n",
    e886fbc2:	0005ca97          	auipc	s5,0x5c
    e886fbc6:	25ea8a93          	addi	s5,s5,606 # e88cbe20 <__PRETTY_FUNCTION__.10655+0x440>
    e886fbca:	03298993          	addi	s3,s3,50 # 400032 <memcmp-0xe83fffce>
				if( RTPJitterBufferPreparedMs( ctx ) >= 0.5 * ctx->bufferMs )
    e886fbce:	0005b797          	auipc	a5,0x5b
    e886fbd2:	4927b407          	fld	fs0,1170(a5) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
	require( err == kNoErr || err == kUnderrunErr, exit );
    e886fbd6:	5a2a0a13          	addi	s4,s4,1442 # ffffffffffffe5a2 <__DRAM0_INF_BASE+0xffffffff0000e5a2>
	while( !ctx->decodeDone )
    e886fbda:	03844783          	lbu	a5,56(s0)
    e886fbde:	c395                	beqz	a5,e886fc02 <_RTPJitterBufferDecodeThread+0x92>
			}
		}
		RTPJitterBufferUnlock( ctx, AIRPLAY_SIGNPOST_JB_DECODEPASS_LOCK_EXIT );
	}
	
	ctx->decodeThreadRun = false;
    e886fbe0:	00040c23          	sb	zero,24(s0)
	pthread_exit(0);
    e886fbe4:	4501                	li	a0,0
    e886fbe6:	6250b0ef          	jal	ra,e887ba0a <pthread_exit>
	return NULL;
}
    e886fbea:	7446                	ld	s0,112(sp)
    e886fbec:	70e6                	ld	ra,120(sp)
    e886fbee:	74a6                	ld	s1,104(sp)
    e886fbf0:	7906                	ld	s2,96(sp)
    e886fbf2:	69e6                	ld	s3,88(sp)
    e886fbf4:	6a46                	ld	s4,80(sp)
    e886fbf6:	6aa6                	ld	s5,72(sp)
    e886fbf8:	6b06                	ld	s6,64(sp)
    e886fbfa:	3462                	fld	fs0,56(sp)
    e886fbfc:	4501                	li	a0,0
    e886fbfe:	6109                	addi	sp,sp,128
    e886fc00:	8082                	ret
		pthread_mutex_lock( ctx->decodeMutexPtr );
    e886fc02:	7808                	ld	a0,48(s0)
    e886fc04:	71b0b0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		pthread_cond_wait( ctx->decodeConditionPtr, ctx->decodeMutexPtr );
    e886fc08:	780c                	ld	a1,48(s0)
    e886fc0a:	7008                	ld	a0,32(s0)
    e886fc0c:	0fc0c0ef          	jal	ra,e887bd08 <pthread_cond_wait>
		pthread_mutex_unlock( ctx->decodeMutexPtr );
    e886fc10:	7808                	ld	a0,48(s0)
    e886fc12:	7510b0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		if( ctx->decodeDone )	break;
    e886fc16:	03844783          	lbu	a5,56(s0)
    e886fc1a:	f3f9                	bnez	a5,e886fbe0 <_RTPJitterBufferDecodeThread+0x70>
		RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_DECODEPASS_LOCK_ENTER );
    e886fc1c:	6008                	ld	a0,0(s0)
    e886fc1e:	55fd                	li	a1,-1
    e886fc20:	c2adf0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
		while( !TAILQ_EMPTY( &ctx->receivedList ) )
    e886fc24:	7424                	ld	s1,104(s0)
    e886fc26:	14048163          	beqz	s1,e886fd68 <_RTPJitterBufferDecodeThread+0x1f8>
			if( node->pkt.pkt.rtp.header.ts == nextDecodeTS )
    e886fc2a:	48d4                	lw	a3,20(s1)
    e886fc2c:	0f269963          	bne	a3,s2,e886fd1e <_RTPJitterBufferDecodeThread+0x1ae>
				if( ctx->decoder )
    e886fc30:	647c                	ld	a5,200(s0)
    e886fc32:	c3e1                	beqz	a5,e886fcf2 <_RTPJitterBufferDecodeThread+0x182>
					dispatch_semaphore_wait( node->decodeLock, DISPATCH_TIME_FOREVER );
    e886fc34:	5e84b503          	ld	a0,1512(s1)
    e886fc38:	55fd                	li	a1,-1
    e886fc3a:	c10df0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
					RTPJitterBufferUnlock( ctx, AIRPLAY_SIGNPOST_JB_DECODEITERATION_LOCK_EXIT );
    e886fc3e:	6008                	ld	a0,0(s0)
    e886fc40:	ae4df0ef          	jal	ra,e884ef24 <dispatch_semaphore_signal>
	bufferList.mNumberBuffers					= 1;
    e886fc44:	4785                	li	a5,1
    e886fc46:	cc3e                	sw	a5,24(sp)
	bufferList.mBuffers[ 0 ].mNumberChannels	= ctx->outputFormat.mChannelsPerFrame;
    e886fc48:	0bc42783          	lw	a5,188(s0)
	outputPacketCount							= ctx->inputFormat.mFramesPerPacket;
    e886fc4c:	09042703          	lw	a4,144(s0)
	err = AudioConverterFillComplexBuffer( ctx->decoder, _RTPJitterBufferAudioDecoderDecodeCallback, inNode,
    e886fc50:	6468                	ld	a0,200(s0)
	bufferList.mBuffers[ 0 ].mNumberChannels	= ctx->outputFormat.mChannelsPerFrame;
    e886fc52:	d03e                	sw	a5,32(sp)
	bufferList.mBuffers[ 0 ].mDataByteSize		= (uint32_t) ctx->inputFormat.mFramesPerPacket * ctx->outputFormat.mBytesPerPacket;
    e886fc54:	0b042783          	lw	a5,176(s0)
	outputPacketCount							= ctx->inputFormat.mFramesPerPacket;
    e886fc58:	ca3a                	sw	a4,20(sp)
	err = AudioConverterFillComplexBuffer( ctx->decoder, _RTPJitterBufferAudioDecoderDecodeCallback, inNode,
    e886fc5a:	0854                	addi	a3,sp,20
	bufferList.mBuffers[ 0 ].mDataByteSize		= (uint32_t) ctx->inputFormat.mFramesPerPacket * ctx->outputFormat.mBytesPerPacket;
    e886fc5c:	02e787bb          	mulw	a5,a5,a4
	err = AudioConverterFillComplexBuffer( ctx->decoder, _RTPJitterBufferAudioDecoderDecodeCallback, inNode,
    e886fc60:	8626                	mv	a2,s1
    e886fc62:	0838                	addi	a4,sp,24
    e886fc64:	00000597          	auipc	a1,0x0
    e886fc68:	e3058593          	addi	a1,a1,-464 # e886fa94 <_RTPJitterBufferAudioDecoderDecodeCallback>
	bufferList.mBuffers[ 0 ].mDataByteSize		= (uint32_t) ctx->inputFormat.mFramesPerPacket * ctx->outputFormat.mBytesPerPacket;
    e886fc6c:	d23e                	sw	a5,36(sp)
	bufferList.mBuffers[ 0 ].mData				= inNode->decodeBuffer;
    e886fc6e:	5f04b783          	ld	a5,1520(s1)
    e886fc72:	f43e                	sd	a5,40(sp)
	err = AudioConverterFillComplexBuffer( ctx->decoder, _RTPJitterBufferAudioDecoderDecodeCallback, inNode,
    e886fc74:	4781                	li	a5,0
    e886fc76:	c91f20ef          	jal	ra,e8862906 <AudioConverterFillComplexBuffer>
    e886fc7a:	8b2a                	mv	s6,a0
	require( err == kNoErr || err == kUnderrunErr, exit );
    e886fc7c:	c119                	beqz	a0,e886fc82 <_RTPJitterBufferDecodeThread+0x112>
    e886fc7e:	03451163          	bne	a0,s4,e886fca0 <_RTPJitterBufferDecodeThread+0x130>
	if( outputPacketCount > 0 )
    e886fc82:	4752                	lw	a4,20(sp)
    e886fc84:	cb29                	beqz	a4,e886fcd6 <_RTPJitterBufferDecodeThread+0x166>
		inNode->ptr = inNode->decodeBuffer;
    e886fc86:	5f04b783          	ld	a5,1520(s1)
    e886fc8a:	5ef4b023          	sd	a5,1504(s1)
		inNode->pkt.len = outputPacketCount * ctx->outputFormat.mBytesPerFrame;
    e886fc8e:	0b842783          	lw	a5,184(s0)
    e886fc92:	02e787bb          	mulw	a5,a5,a4
    e886fc96:	7c07b78b          	extu	a5,a5,31,0
    e886fc9a:	5cf4b823          	sd	a5,1488(s1)
	err = kNoErr;
    e886fc9e:	4b01                	li	s6,0
					RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_DECODEITERATION_LOCK_ENTER );
    e886fca0:	6008                	ld	a0,0(s0)
    e886fca2:	55fd                	li	a1,-1
    e886fca4:	ba6df0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
					dispatch_semaphore_signal( node->decodeLock );
    e886fca8:	5e84b503          	ld	a0,1512(s1)
    e886fcac:	a78df0ef          	jal	ra,e884ef24 <dispatch_semaphore_signal>
					TAILQ_REMOVE( &ctx->receivedList, node, list );
    e886fcb0:	f8f4c70b          	ldd	a4,a5,(s1),0,4
    e886fcb4:	c705                	beqz	a4,e886fcdc <_RTPJitterBufferDecodeThread+0x16c>
    e886fcb6:	e71c                	sd	a5,8(a4)
    e886fcb8:	6098                	ld	a4,0(s1)
    e886fcba:	649c                	ld	a5,8(s1)
    e886fcbc:	e398                	sd	a4,0(a5)
						TAILQ_INSERT_TAIL( &ctx->freeList, node, list );
    e886fcbe:	0004b023          	sd	zero,0(s1)
					if( err )
    e886fcc2:	000b0f63          	beqz	s6,e886fce0 <_RTPJitterBufferDecodeThread+0x170>
						TAILQ_INSERT_TAIL( &ctx->freeList, node, list );
    e886fcc6:	683c                	ld	a5,80(s0)
    e886fcc8:	e49c                	sd	a5,8(s1)
    e886fcca:	e384                	sd	s1,0(a5)
						ctx->nodesUsed -= 1;
    e886fccc:	5c7c                	lw	a5,124(s0)
						TAILQ_INSERT_TAIL( &ctx->freeList, node, list );
    e886fcce:	e824                	sd	s1,80(s0)
						ctx->nodesUsed -= 1;
    e886fcd0:	37fd                	addiw	a5,a5,-1
    e886fcd2:	dc7c                	sw	a5,124(s0)
    e886fcd4:	bf81                	j	e886fc24 <_RTPJitterBufferDecodeThread+0xb4>
		inNode->pkt.len = 0;
    e886fcd6:	5c04b823          	sd	zero,1488(s1)
    e886fcda:	b7d1                	j	e886fc9e <_RTPJitterBufferDecodeThread+0x12e>
					TAILQ_REMOVE( &ctx->receivedList, node, list );
    e886fcdc:	f83c                	sd	a5,112(s0)
    e886fcde:	bfe9                	j	e886fcb8 <_RTPJitterBufferDecodeThread+0x148>
						TAILQ_INSERT_TAIL( &ctx->preparedList, node, list );
    e886fce0:	703c                	ld	a5,96(s0)
    e886fce2:	e49c                	sd	a5,8(s1)
    e886fce4:	e384                	sd	s1,0(a5)
						nextDecodeTS += ctx->inputFormat.mFramesPerPacket;
    e886fce6:	09042783          	lw	a5,144(s0)
						TAILQ_INSERT_TAIL( &ctx->preparedList, node, list );
    e886fcea:	f024                	sd	s1,96(s0)
					nextDecodeTS += node->pkt.len / ctx->outputFormat.mBytesPerFrame;
    e886fcec:	0127893b          	addw	s2,a5,s2
    e886fcf0:	bf15                	j	e886fc24 <_RTPJitterBufferDecodeThread+0xb4>
					TAILQ_REMOVE( &ctx->receivedList, node, list );
    e886fcf2:	f8f4c70b          	ldd	a4,a5,(s1),0,4
    e886fcf6:	c315                	beqz	a4,e886fd1a <_RTPJitterBufferDecodeThread+0x1aa>
    e886fcf8:	e71c                	sd	a5,8(a4)
    e886fcfa:	649c                	ld	a5,8(s1)
    e886fcfc:	6098                	ld	a4,0(s1)
    e886fcfe:	e398                	sd	a4,0(a5)
					TAILQ_INSERT_TAIL( &ctx->preparedList, node, list );
    e886fd00:	0004b023          	sd	zero,0(s1)
    e886fd04:	703c                	ld	a5,96(s0)
    e886fd06:	e49c                	sd	a5,8(s1)
    e886fd08:	e384                	sd	s1,0(a5)
					nextDecodeTS += node->pkt.len / ctx->outputFormat.mBytesPerFrame;
    e886fd0a:	0b846703          	lwu	a4,184(s0)
					TAILQ_INSERT_TAIL( &ctx->preparedList, node, list );
    e886fd0e:	f024                	sd	s1,96(s0)
					nextDecodeTS += node->pkt.len / ctx->outputFormat.mBytesPerFrame;
    e886fd10:	5d04b783          	ld	a5,1488(s1)
    e886fd14:	02e7d7b3          	divu	a5,a5,a4
    e886fd18:	bfd1                	j	e886fcec <_RTPJitterBufferDecodeThread+0x17c>
					TAILQ_REMOVE( &ctx->receivedList, node, list );
    e886fd1a:	f83c                	sd	a5,112(s0)
    e886fd1c:	bff9                	j	e886fcfa <_RTPJitterBufferDecodeThread+0x18a>
			else if( node->pkt.pkt.rtp.header.ts > nextDecodeTS )
    e886fd1e:	e436                	sd	a3,8(sp)
    e886fd20:	04d97863          	bgeu	s2,a3,e886fd70 <_RTPJitterBufferDecodeThread+0x200>
				if( RTPJitterBufferPreparedMs( ctx ) >= 0.5 * ctx->bufferMs )
    e886fd24:	4585                	li	a1,1
    e886fd26:	8522                	mv	a0,s0
    e886fd28:	d2bff0ef          	jal	ra,e886fa52 <_RTPJitterBufferBufferedSamples>
    e886fd2c:	08042703          	lw	a4,128(s0)
    e886fd30:	3e800613          	li	a2,1000
    e886fd34:	66a2                	ld	a3,8(sp)
    e886fd36:	0017579b          	srliw	a5,a4,0x1
    e886fd3a:	24c5178b          	mulaw	a5,a0,a2
    e886fd3e:	02e7d7bb          	divuw	a5,a5,a4
    e886fd42:	d21787d3          	fcvt.d.wu	fa5,a5
    e886fd46:	0e842783          	lw	a5,232(s0)
    e886fd4a:	d2178753          	fcvt.d.wu	fa4,a5
    e886fd4e:	12877753          	fmul.d	fa4,fa4,fs0
    e886fd52:	a2f707d3          	fle.d	a5,fa4,fa5
    e886fd56:	c7b1                	beqz	a5,e886fda2 <_RTPJitterBufferDecodeThread+0x232>
					RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "Delaying decode of node at time %u\n", node->pkt.pkt.rtp.header.ts );
    e886fd58:	0005c617          	auipc	a2,0x5c
    e886fd5c:	0a060613          	addi	a2,a2,160 # e88cbdf8 <__PRETTY_FUNCTION__.10655+0x418>
    e886fd60:	85ce                	mv	a1,s3
    e886fd62:	8522                	mv	a0,s0
    e886fd64:	d8dff0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
		RTPJitterBufferUnlock( ctx, AIRPLAY_SIGNPOST_JB_DECODEPASS_LOCK_EXIT );
    e886fd68:	6008                	ld	a0,0(s0)
    e886fd6a:	9badf0ef          	jal	ra,e884ef24 <dispatch_semaphore_signal>
    e886fd6e:	b5b5                	j	e886fbda <_RTPJitterBufferDecodeThread+0x6a>
				TAILQ_REMOVE( &ctx->receivedList, node, list );
    e886fd70:	f8f4c70b          	ldd	a4,a5,(s1),0,4
    e886fd74:	c70d                	beqz	a4,e886fd9e <_RTPJitterBufferDecodeThread+0x22e>
    e886fd76:	e71c                	sd	a5,8(a4)
    e886fd78:	649c                	ld	a5,8(s1)
    e886fd7a:	6098                	ld	a4,0(s1)
				RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "Discarding late decode node at time %u\n",
    e886fd7c:	8656                	mv	a2,s5
    e886fd7e:	85ce                	mv	a1,s3
				TAILQ_REMOVE( &ctx->receivedList, node, list );
    e886fd80:	e398                	sd	a4,0(a5)
				RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "Discarding late decode node at time %u\n",
    e886fd82:	8522                	mv	a0,s0
				TAILQ_INSERT_TAIL( &ctx->freeList, node, list );
    e886fd84:	0004b023          	sd	zero,0(s1)
    e886fd88:	683c                	ld	a5,80(s0)
    e886fd8a:	e49c                	sd	a5,8(s1)
    e886fd8c:	e384                	sd	s1,0(a5)
				ctx->nodesUsed -= 1;
    e886fd8e:	5c7c                	lw	a5,124(s0)
				TAILQ_INSERT_TAIL( &ctx->freeList, node, list );
    e886fd90:	e824                	sd	s1,80(s0)
				ctx->nodesUsed -= 1;
    e886fd92:	37fd                	addiw	a5,a5,-1
    e886fd94:	dc7c                	sw	a5,124(s0)
				RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "Discarding late decode node at time %u\n",
    e886fd96:	48d4                	lw	a3,20(s1)
    e886fd98:	d59ff0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
    e886fd9c:	b561                	j	e886fc24 <_RTPJitterBufferDecodeThread+0xb4>
				TAILQ_REMOVE( &ctx->receivedList, node, list );
    e886fd9e:	f83c                	sd	a5,112(s0)
    e886fda0:	bfe1                	j	e886fd78 <_RTPJitterBufferDecodeThread+0x208>
    e886fda2:	8936                	mv	s2,a3
    e886fda4:	b541                	j	e886fc24 <_RTPJitterBufferDecodeThread+0xb4>

00000000e886fda6 <_RTPJitterBufferDiscardExcess>:
	RTPPacketNodeList *		listsToDiscardFrom[] = { &ctx->preparedList, &ctx->receivedList };
    e886fda6:	05850793          	addi	a5,a0,88
{
    e886fdaa:	711d                	addi	sp,sp,-96
	RTPPacketNodeList *		listsToDiscardFrom[] = { &ctx->preparedList, &ctx->receivedList };
    e886fdac:	e03e                	sd	a5,0(sp)
    e886fdae:	06850793          	addi	a5,a0,104
{
    e886fdb2:	ec86                	sd	ra,88(sp)
    e886fdb4:	e8a2                	sd	s0,80(sp)
    e886fdb6:	e4a6                	sd	s1,72(sp)
    e886fdb8:	e0ca                	sd	s2,64(sp)
    e886fdba:	fc4e                	sd	s3,56(sp)
    e886fdbc:	f852                	sd	s4,48(sp)
    e886fdbe:	f456                	sd	s5,40(sp)
    e886fdc0:	f05a                	sd	s6,32(sp)
    e886fdc2:	ec5e                	sd	s7,24(sp)
    e886fdc4:	e862                	sd	s8,16(sp)
	RTPPacketNodeList *		listsToDiscardFrom[] = { &ctx->preparedList, &ctx->receivedList };
    e886fdc6:	e43e                	sd	a5,8(sp)
	require( ( ctx->bufferMs > 0 && ctx->inputFormat.mSampleRate > 0 ), exit );
    e886fdc8:	0e852783          	lw	a5,232(a0)
    e886fdcc:	0e078f63          	beqz	a5,e886feca <_RTPJitterBufferDiscardExcess+0x124>
    e886fdd0:	08052703          	lw	a4,128(a0)
    e886fdd4:	0e070b63          	beqz	a4,e886feca <_RTPJitterBufferDiscardExcess+0x124>
	highWatermarkMs = ctx->bufferMs + 20;
    e886fdd8:	0147861b          	addiw	a2,a5,20
	desired =  highWatermarkMs * ( (uint32_t) ctx->inputFormat.mSampleRate ) / 1000;
    e886fddc:	0c800693          	li	a3,200
	highWatermarkMs = ctx->bufferMs + 20;
    e886fde0:	87b2                	mv	a5,a2
	desired =  highWatermarkMs * ( (uint32_t) ctx->inputFormat.mSampleRate ) / 1000;
    e886fde2:	00d67463          	bgeu	a2,a3,e886fdea <_RTPJitterBufferDiscardExcess+0x44>
    e886fde6:	0c800793          	li	a5,200
    e886fdea:	02e787bb          	mulw	a5,a5,a4
    e886fdee:	3e800a13          	li	s4,1000
	queueSize = prevSampleSize = _RTPJitterBufferBufferedSamples( ctx, false );
    e886fdf2:	4581                	li	a1,0
    e886fdf4:	842a                	mv	s0,a0
    e886fdf6:	898a                	mv	s3,sp
    e886fdf8:	01010b13          	addi	s6,sp,16
				TAILQ_INSERT_HEAD( &ctx->freeList, nodeToDiscard, list );
    e886fdfc:	04840b93          	addi	s7,s0,72
	desired =  highWatermarkMs * ( (uint32_t) ctx->inputFormat.mSampleRate ) / 1000;
    e886fe00:	0347da3b          	divuw	s4,a5,s4
	queueSize = prevSampleSize = _RTPJitterBufferBufferedSamples( ctx, false );
    e886fe04:	c4fff0ef          	jal	ra,e886fa52 <_RTPJitterBufferBufferedSamples>
    e886fe08:	00050a9b          	sext.w	s5,a0
    e886fe0c:	8956                	mv	s2,s5
		TAILQ_FOREACH_SAFE( nodeToDiscard, listsToDiscardFrom[ listNdx ], list, safeNode )
    e886fe0e:	0009b783          	ld	a5,0(s3)
    e886fe12:	6384                	ld	s1,0(a5)
    e886fe14:	c899                	beqz	s1,e886fe2a <_RTPJitterBufferDiscardExcess+0x84>
			if ( ( queueSize = _RTPJitterBufferBufferedSamples( ctx, false ) ) <= desired )
    e886fe16:	4581                	li	a1,0
    e886fe18:	8522                	mv	a0,s0
    e886fe1a:	c39ff0ef          	jal	ra,e886fa52 <_RTPJitterBufferBufferedSamples>
    e886fe1e:	0005091b          	sext.w	s2,a0
		TAILQ_FOREACH_SAFE( nodeToDiscard, listsToDiscardFrom[ listNdx ], list, safeNode )
    e886fe22:	0004bc03          	ld	s8,0(s1)
			if ( ( queueSize = _RTPJitterBufferBufferedSamples( ctx, false ) ) <= desired )
    e886fe26:	052a6e63          	bltu	s4,s2,e886fe82 <_RTPJitterBufferDiscardExcess+0xdc>
	for( listNdx = 0; listNdx < listCount; ++listNdx )
    e886fe2a:	09a1                	addi	s3,s3,8
    e886fe2c:	ff6991e3          	bne	s3,s6,e886fe0e <_RTPJitterBufferDiscardExcess+0x68>
	if( queueSize != prevSampleSize )
    e886fe30:	09590d63          	beq	s2,s5,e886feca <_RTPJitterBufferDiscardExcess+0x124>
			prevSampleSize, RTPJitterBufferSamplesToMs( ctx, prevSampleSize ),
    e886fe34:	08042683          	lw	a3,128(s0)
			queueSize, RTPJitterBufferSamplesToMs( ctx, queueSize ) );
    e886fe38:	3e800793          	li	a5,1000
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e886fe3c:	8522                	mv	a0,s0
			prevSampleSize, RTPJitterBufferSamplesToMs( ctx, prevSampleSize ),
    e886fe3e:	0016d71b          	srliw	a4,a3,0x1
			queueSize, RTPJitterBufferSamplesToMs( ctx, queueSize ) );
    e886fe42:	883a                	mv	a6,a4
    e886fe44:	2527980b          	mulaw	a6,a5,s2
}
    e886fe48:	6446                	ld	s0,80(sp)
    e886fe4a:	60e6                	ld	ra,88(sp)
    e886fe4c:	64a6                	ld	s1,72(sp)
    e886fe4e:	79e2                	ld	s3,56(sp)
    e886fe50:	7a42                	ld	s4,48(sp)
    e886fe52:	7b02                	ld	s6,32(sp)
    e886fe54:	6be2                	ld	s7,24(sp)
    e886fe56:	6c42                	ld	s8,16(sp)
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e886fe58:	004005b7          	lui	a1,0x400
			prevSampleSize, RTPJitterBufferSamplesToMs( ctx, prevSampleSize ),
    e886fe5c:	2557970b          	mulaw	a4,a5,s5
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e886fe60:	87ca                	mv	a5,s2
}
    e886fe62:	6906                	ld	s2,64(sp)
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e886fe64:	0005c617          	auipc	a2,0x5c
    e886fe68:	fe460613          	addi	a2,a2,-28 # e88cbe48 <__PRETTY_FUNCTION__.10655+0x468>
    e886fe6c:	03258593          	addi	a1,a1,50 # 400032 <memcmp-0xe83fffce>
    e886fe70:	02d8583b          	divuw	a6,a6,a3
    e886fe74:	02d7573b          	divuw	a4,a4,a3
    e886fe78:	86d6                	mv	a3,s5
}
    e886fe7a:	7aa2                	ld	s5,40(sp)
    e886fe7c:	6125                	addi	sp,sp,96
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e886fe7e:	c73ff06f          	j	e886faf0 <RTPJitterBufferLog>
			if( !nodeToDiscard->decodeLock || dispatch_semaphore_wait( nodeToDiscard->decodeLock, DISPATCH_TIME_NOW ) == 0 )
    e886fe82:	5e84b503          	ld	a0,1512(s1)
    e886fe86:	e915                	bnez	a0,e886feba <_RTPJitterBufferDiscardExcess+0x114>
				TAILQ_REMOVE( listsToDiscardFrom[ listNdx ], nodeToDiscard, list );
    e886fe88:	f8f4c70b          	ldd	a4,a5,(s1),0,4
    e886fe8c:	e319                	bnez	a4,e886fe92 <_RTPJitterBufferDiscardExcess+0xec>
    e886fe8e:	0009b703          	ld	a4,0(s3)
    e886fe92:	e71c                	sd	a5,8(a4)
    e886fe94:	649c                	ld	a5,8(s1)
    e886fe96:	6098                	ld	a4,0(s1)
    e886fe98:	e398                	sd	a4,0(a5)
				TAILQ_INSERT_HEAD( &ctx->freeList, nodeToDiscard, list );
    e886fe9a:	643c                	ld	a5,72(s0)
    e886fe9c:	e09c                	sd	a5,0(s1)
    e886fe9e:	c785                	beqz	a5,e886fec6 <_RTPJitterBufferDiscardExcess+0x120>
    e886fea0:	e784                	sd	s1,8(a5)
    e886fea2:	e424                	sd	s1,72(s0)
    e886fea4:	0174b423          	sd	s7,8(s1)
				ctx->nodesUsed -= 1;
    e886fea8:	5c7c                	lw	a5,124(s0)
    e886feaa:	37fd                	addiw	a5,a5,-1
    e886feac:	dc7c                	sw	a5,124(s0)
				if( nodeToDiscard->decodeLock )
    e886feae:	5e84b503          	ld	a0,1512(s1)
    e886feb2:	c901                	beqz	a0,e886fec2 <_RTPJitterBufferDiscardExcess+0x11c>
					dispatch_semaphore_signal( nodeToDiscard->decodeLock );
    e886feb4:	870df0ef          	jal	ra,e884ef24 <dispatch_semaphore_signal>
    e886feb8:	a029                	j	e886fec2 <_RTPJitterBufferDiscardExcess+0x11c>
			if( !nodeToDiscard->decodeLock || dispatch_semaphore_wait( nodeToDiscard->decodeLock, DISPATCH_TIME_NOW ) == 0 )
    e886feba:	4581                	li	a1,0
    e886febc:	98edf0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
    e886fec0:	d561                	beqz	a0,e886fe88 <_RTPJitterBufferDiscardExcess+0xe2>
	queueSize = prevSampleSize = _RTPJitterBufferBufferedSamples( ctx, false );
    e886fec2:	84e2                	mv	s1,s8
    e886fec4:	bf81                	j	e886fe14 <_RTPJitterBufferDiscardExcess+0x6e>
				TAILQ_INSERT_HEAD( &ctx->freeList, nodeToDiscard, list );
    e886fec6:	e824                	sd	s1,80(s0)
    e886fec8:	bfe9                	j	e886fea2 <_RTPJitterBufferDiscardExcess+0xfc>
}
    e886feca:	60e6                	ld	ra,88(sp)
    e886fecc:	6446                	ld	s0,80(sp)
    e886fece:	64a6                	ld	s1,72(sp)
    e886fed0:	6906                	ld	s2,64(sp)
    e886fed2:	79e2                	ld	s3,56(sp)
    e886fed4:	7a42                	ld	s4,48(sp)
    e886fed6:	7aa2                	ld	s5,40(sp)
    e886fed8:	7b02                	ld	s6,32(sp)
    e886feda:	6be2                	ld	s7,24(sp)
    e886fedc:	6c42                	ld	s8,16(sp)
    e886fede:	6125                	addi	sp,sp,96
    e886fee0:	8082                	ret

00000000e886fee2 <_RTPJitterBufferLog>:
	if( ctx )
    e886fee2:	cd39                	beqz	a0,e886ff40 <_RTPJitterBufferLog+0x5e>
{
    e886fee4:	1141                	addi	sp,sp,-16
    e886fee6:	e022                	sd	s0,0(sp)
    e886fee8:	e406                	sd	ra,8(sp)
    e886feea:	842a                	mv	s0,a0
		ap_jitter_ulog( ctx->level, "%s", ctx->msg );
    e886feec:	410c                	lw	a1,0(a0)
    e886feee:	00065517          	auipc	a0,0x65
    e886fef2:	55250513          	addi	a0,a0,1362 # e88d5440 <gLogCategory_AirPlayJitterBuffer>
    e886fef6:	411c                	lw	a5,0(a0)
    e886fef8:	0ff5f713          	andi	a4,a1,255
    e886fefc:	02f74563          	blt	a4,a5,e886ff26 <_RTPJitterBufferLog+0x44>
    e886ff00:	577d                	li	a4,-1
    e886ff02:	02e78b63          	beq	a5,a4,e886ff38 <_RTPJitterBufferLog+0x56>
    e886ff06:	6418                	ld	a4,8(s0)
    e886ff08:	4010                	lw	a2,0(s0)
    e886ff0a:	0003a697          	auipc	a3,0x3a
    e886ff0e:	49668693          	addi	a3,a3,1174 # e88aa3a0 <mDNS_DomainTypeNames+0x9f0>
    e886ff12:	0005c597          	auipc	a1,0x5c
    e886ff16:	f9e58593          	addi	a1,a1,-98 # e88cbeb0 <__PRETTY_FUNCTION__.9875>
    e886ff1a:	00065517          	auipc	a0,0x65
    e886ff1e:	52650513          	addi	a0,a0,1318 # e88d5440 <gLogCategory_AirPlayJitterBuffer>
    e886ff22:	d52e40ef          	jal	ra,e8854474 <LogPrintF>
		free( ctx->msg );
    e886ff26:	6408                	ld	a0,8(s0)
    e886ff28:	3d80c0ef          	jal	ra,e887c300 <eLIBs_free>
		free( ctx );
    e886ff2c:	8522                	mv	a0,s0
}
    e886ff2e:	6402                	ld	s0,0(sp)
    e886ff30:	60a2                	ld	ra,8(sp)
    e886ff32:	0141                	addi	sp,sp,16
		free( ctx );
    e886ff34:	3cc0c06f          	j	e887c300 <eLIBs_free>
		ap_jitter_ulog( ctx->level, "%s", ctx->msg );
    e886ff38:	93ae40ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e886ff3c:	d56d                	beqz	a0,e886ff26 <_RTPJitterBufferLog+0x44>
    e886ff3e:	b7e1                	j	e886ff06 <_RTPJitterBufferLog+0x24>
    e886ff40:	8082                	ret

00000000e886ff42 <AirPlayAudioFormatToASBD>:
	switch( inFormat )
    e886ff42:	67a1                	lui	a5,0x8
    e886ff44:	22f50063          	beq	a0,a5,e8870164 <AirPlayAudioFormatToASBD+0x222>
    e886ff48:	0aa7e663          	bltu	a5,a0,e886fff4 <AirPlayAudioFormatToASBD+0xb2>
    e886ff4c:	10000793          	li	a5,256
    e886ff50:	1cf50663          	beq	a0,a5,e887011c <AirPlayAudioFormatToASBD+0x1da>
    e886ff54:	04a7e263          	bltu	a5,a0,e886ff98 <AirPlayAudioFormatToASBD+0x56>
    e886ff58:	47c1                	li	a5,16
    e886ff5a:	1af50263          	beq	a0,a5,e88700fe <AirPlayAudioFormatToASBD+0x1bc>
    e886ff5e:	00a7ec63          	bltu	a5,a0,e886ff76 <AirPlayAudioFormatToASBD+0x34>
    e886ff62:	4791                	li	a5,4
    e886ff64:	14f50563          	beq	a0,a5,e88700ae <AirPlayAudioFormatToASBD+0x16c>
    e886ff68:	47a1                	li	a5,8
    e886ff6a:	16f50963          	beq	a0,a5,e88700dc <AirPlayAudioFormatToASBD+0x19a>
		default: return( kUnsupportedErr );
    e886ff6e:	7579                	lui	a0,0xffffe
    e886ff70:	5b150513          	addi	a0,a0,1457 # ffffffffffffe5b1 <__DRAM0_INF_BASE+0xffffffff0000e5b1>
    e886ff74:	8082                	ret
	switch( inFormat )
    e886ff76:	04000793          	li	a5,64
    e886ff7a:	18f50763          	beq	a0,a5,e8870108 <AirPlayAudioFormatToASBD+0x1c6>
    e886ff7e:	08000793          	li	a5,128
    e886ff82:	18f50863          	beq	a0,a5,e8870112 <AirPlayAudioFormatToASBD+0x1d0>
    e886ff86:	02000793          	li	a5,32
    e886ff8a:	fef512e3          	bne	a0,a5,e886ff6e <AirPlayAudioFormatToASBD+0x2c>
		case kAirPlayAudioFormat_PCM_16KHz_16Bit_Stereo:	ASBD_FillPCM( outASBD, 16000, 16, 16, 2 ); break;
    e886ff8e:	0005c797          	auipc	a5,0x5c
    e886ff92:	b2a78793          	addi	a5,a5,-1238 # e88cbab8 <__PRETTY_FUNCTION__.10655+0xd8>
    e886ff96:	a2b9                	j	e88700e4 <AirPlayAudioFormatToASBD+0x1a2>
	switch( inFormat )
    e886ff98:	80050793          	addi	a5,a0,-2048
    e886ff9c:	18078a63          	beqz	a5,e8870130 <AirPlayAudioFormatToASBD+0x1ee>
    e886ffa0:	6785                	lui	a5,0x1
    e886ffa2:	80078713          	addi	a4,a5,-2048 # 800 <memcmp-0xe87ff800>
    e886ffa6:	00a76f63          	bltu	a4,a0,e886ffc4 <AirPlayAudioFormatToASBD+0x82>
    e886ffaa:	20000793          	li	a5,512
    e886ffae:	16f50c63          	beq	a0,a5,e8870126 <AirPlayAudioFormatToASBD+0x1e4>
    e886ffb2:	40000793          	li	a5,1024
    e886ffb6:	faf51ce3          	bne	a0,a5,e886ff6e <AirPlayAudioFormatToASBD+0x2c>
		case kAirPlayAudioFormat_PCM_44KHz_16Bit_Mono:		ASBD_FillPCM( outASBD, 44100, 16, 16, 1 ); break;
    e886ffba:	0005c797          	auipc	a5,0x5c
    e886ffbe:	b1678793          	addi	a5,a5,-1258 # e88cbad0 <__PRETTY_FUNCTION__.10655+0xf0>
    e886ffc2:	a8d5                	j	e88700b6 <AirPlayAudioFormatToASBD+0x174>
	switch( inFormat )
    e886ffc4:	6709                	lui	a4,0x2
    e886ffc6:	16e50a63          	beq	a0,a4,e887013a <AirPlayAudioFormatToASBD+0x1f8>
    e886ffca:	6711                	lui	a4,0x4
    e886ffcc:	18e50763          	beq	a0,a4,e887015a <AirPlayAudioFormatToASBD+0x218>
    e886ffd0:	f8f51fe3          	bne	a0,a5,e886ff6e <AirPlayAudioFormatToASBD+0x2c>
		case kAirPlayAudioFormat_PCM_44KHz_24Bit_Mono:		ASBD_FillPCM( outASBD, 44100, 24, 24, 1 ); break;
    e886ffd4:	0005c797          	auipc	a5,0x5c
    e886ffd8:	afc78793          	addi	a5,a5,-1284 # e88cbad0 <__PRETTY_FUNCTION__.10655+0xf0>
		case kAirPlayAudioFormat_PCM_48KHz_24Bit_Mono:		ASBD_FillPCM( outASBD, 48000, 24, 24, 1 ); break;
    e886ffdc:	639c                	ld	a5,0(a5)
    e886ffde:	e19c                	sd	a5,0(a1)
    e886ffe0:	478d                	li	a5,3
    e886ffe2:	02079713          	slli	a4,a5,0x20
    e886ffe6:	00c70693          	addi	a3,a4,12 # 400c <memcmp-0xe87fbff4>
    e886ffea:	0705                	addi	a4,a4,1
    e886ffec:	e594                	sd	a3,8(a1)
    e886ffee:	e998                	sd	a4,16(a1)
    e886fff0:	178e                	slli	a5,a5,0x23
    e886fff2:	a8e9                	j	e88700cc <AirPlayAudioFormatToASBD+0x18a>
	switch( inFormat )
    e886fff4:	040007b7          	lui	a5,0x4000
    e886fff8:	1af50363          	beq	a0,a5,e887019e <AirPlayAudioFormatToASBD+0x25c>
    e886fffc:	04a7e563          	bltu	a5,a0,e8870046 <AirPlayAudioFormatToASBD+0x104>
    e8870000:	004007b7          	lui	a5,0x400
    e8870004:	16f50a63          	beq	a0,a5,e8870178 <AirPlayAudioFormatToASBD+0x236>
    e8870008:	00a7ee63          	bltu	a5,a0,e8870024 <AirPlayAudioFormatToASBD+0xe2>
    e887000c:	67c1                	lui	a5,0x10
    e887000e:	16f50063          	beq	a0,a5,e887016e <AirPlayAudioFormatToASBD+0x22c>
    e8870012:	000207b7          	lui	a5,0x20
    e8870016:	f4f51ce3          	bne	a0,a5,e886ff6e <AirPlayAudioFormatToASBD+0x2c>
		case kAirPlayAudioFormat_PCM_48KHz_24Bit_Stereo:	ASBD_FillPCM( outASBD, 48000, 24, 24, 2 ); break;
    e887001a:	0005c797          	auipc	a5,0x5c
    e887001e:	abe78793          	addi	a5,a5,-1346 # e88cbad8 <__PRETTY_FUNCTION__.10655+0xf8>
    e8870022:	a205                	j	e8870142 <AirPlayAudioFormatToASBD+0x200>
	switch( inFormat )
    e8870024:	010007b7          	lui	a5,0x1000
    e8870028:	18f50b63          	beq	a0,a5,e88701be <AirPlayAudioFormatToASBD+0x27c>
    e887002c:	020007b7          	lui	a5,0x2000
    e8870030:	1af50263          	beq	a0,a5,e88701d4 <AirPlayAudioFormatToASBD+0x292>
    e8870034:	008007b7          	lui	a5,0x800
    e8870038:	f2f51be3          	bne	a0,a5,e886ff6e <AirPlayAudioFormatToASBD+0x2c>
		case kAirPlayAudioFormat_AAC_LC_48KHz_Stereo:		ASBD_FillAAC_LC( outASBD, 48000, 2 ); break;
    e887003c:	0005c797          	auipc	a5,0x5c
    e8870040:	aac78793          	addi	a5,a5,-1364 # e88cbae8 <__PRETTY_FUNCTION__.10655+0x108>
    e8870044:	aa35                	j	e8870180 <AirPlayAudioFormatToASBD+0x23e>
	switch( inFormat )
    e8870046:	200007b7          	lui	a5,0x20000
    e887004a:	18f50a63          	beq	a0,a5,e88701de <AirPlayAudioFormatToASBD+0x29c>
    e887004e:	02a7e763          	bltu	a5,a0,e887007c <AirPlayAudioFormatToASBD+0x13a>
    e8870052:	080007b7          	lui	a5,0x8000
    e8870056:	14f50f63          	beq	a0,a5,e88701b4 <AirPlayAudioFormatToASBD+0x272>
    e887005a:	100007b7          	lui	a5,0x10000
    e887005e:	f0f518e3          	bne	a0,a5,e886ff6e <AirPlayAudioFormatToASBD+0x2c>
		case kAirPlayAudioFormat_OPUS_16KHz_Mono:			ASBD_FillOpus( outASBD, 16000, 1 ); break;
    e8870062:	0005c797          	auipc	a5,0x5c
    e8870066:	aae78793          	addi	a5,a5,-1362 # e88cbb10 <__PRETTY_FUNCTION__.10655+0x130>
    e887006a:	639c                	ld	a5,0(a5)
    e887006c:	0005b423          	sd	zero,8(a1)
    e8870070:	e19c                	sd	a5,0(a1)
    e8870072:	14000793          	li	a5,320
    e8870076:	e99c                	sd	a5,16(a1)
    e8870078:	4785                	li	a5,1
    e887007a:	aa19                	j	e8870190 <AirPlayAudioFormatToASBD+0x24e>
	switch( inFormat )
    e887007c:	4785                	li	a5,1
    e887007e:	01f79713          	slli	a4,a5,0x1f
    e8870082:	16e50363          	beq	a0,a4,e88701e8 <AirPlayAudioFormatToASBD+0x2a6>
    e8870086:	02079713          	slli	a4,a5,0x20
    e887008a:	16e50a63          	beq	a0,a4,e88701fe <AirPlayAudioFormatToASBD+0x2bc>
    e887008e:	40000737          	lui	a4,0x40000
    e8870092:	ece51ee3          	bne	a0,a4,e886ff6e <AirPlayAudioFormatToASBD+0x2c>
		case kAirPlayAudioFormat_OPUS_48KHz_Mono:			ASBD_FillOpus( outASBD, 48000, 1 ); break;
    e8870096:	0005c717          	auipc	a4,0x5c
    e887009a:	a8a70713          	addi	a4,a4,-1398 # e88cbb20 <__PRETTY_FUNCTION__.10655+0x140>
    e887009e:	6318                	ld	a4,0(a4)
    e88700a0:	0005b423          	sd	zero,8(a1)
    e88700a4:	e198                	sd	a4,0(a1)
    e88700a6:	3c000713          	li	a4,960
		case kAirPlayAudioFormat_AAC_ELD_44KHz_Mono:		ASBD_FillAAC_ELD( outASBD, 44100, 1 ); break;
    e88700aa:	e998                	sd	a4,16(a1)
    e88700ac:	a0d5                	j	e8870190 <AirPlayAudioFormatToASBD+0x24e>
		case kAirPlayAudioFormat_PCM_8KHz_16Bit_Mono:		ASBD_FillPCM( outASBD,  8000, 16, 16, 1 ); break;
    e88700ae:	0005c797          	auipc	a5,0x5c
    e88700b2:	a0278793          	addi	a5,a5,-1534 # e88cbab0 <__PRETTY_FUNCTION__.10655+0xd0>
		case kAirPlayAudioFormat_PCM_48KHz_16Bit_Mono:		ASBD_FillPCM( outASBD, 48000, 16, 16, 1 ); break;
    e88700b6:	639c                	ld	a5,0(a5)
    e88700b8:	e19c                	sd	a5,0(a1)
    e88700ba:	4785                	li	a5,1
    e88700bc:	02179713          	slli	a4,a5,0x21
    e88700c0:	00c70693          	addi	a3,a4,12
    e88700c4:	0705                	addi	a4,a4,1
    e88700c6:	e594                	sd	a3,8(a1)
    e88700c8:	e998                	sd	a4,16(a1)
    e88700ca:	1792                	slli	a5,a5,0x24
		case kAirPlayAudioFormat_PCM_48KHz_24Bit_Mono:		ASBD_FillPCM( outASBD, 48000, 24, 24, 1 ); break;
    e88700cc:	0785                	addi	a5,a5,1
		case kAirPlayAudioFormat_PCM_48KHz_24Bit_Stereo:	ASBD_FillPCM( outASBD, 48000, 24, 24, 2 ); break;
    e88700ce:	ed9c                	sd	a5,24(a1)
    e88700d0:	0205a023          	sw	zero,32(a1)
	if( outBitsPerChannel )
    e88700d4:	c279                	beqz	a2,e887019a <AirPlayAudioFormatToASBD+0x258>
			*outBitsPerChannel = outASBD->mBitsPerChannel;
    e88700d6:	4ddc                	lw	a5,28(a1)
    e88700d8:	c21c                	sw	a5,0(a2)
    e88700da:	a0c1                	j	e887019a <AirPlayAudioFormatToASBD+0x258>
		case kAirPlayAudioFormat_PCM_8KHz_16Bit_Stereo:		ASBD_FillPCM( outASBD,  8000, 16, 16, 2 ); break;
    e88700dc:	0005c797          	auipc	a5,0x5c
    e88700e0:	9d478793          	addi	a5,a5,-1580 # e88cbab0 <__PRETTY_FUNCTION__.10655+0xd0>
		case kAirPlayAudioFormat_PCM_48KHz_16Bit_Stereo:	ASBD_FillPCM( outASBD, 48000, 16, 16, 2 ); break;
    e88700e4:	639c                	ld	a5,0(a5)
    e88700e6:	e19c                	sd	a5,0(a1)
    e88700e8:	4785                	li	a5,1
    e88700ea:	02279713          	slli	a4,a5,0x22
    e88700ee:	00c70693          	addi	a3,a4,12
    e88700f2:	0705                	addi	a4,a4,1
    e88700f4:	e594                	sd	a3,8(a1)
    e88700f6:	e998                	sd	a4,16(a1)
    e88700f8:	1792                	slli	a5,a5,0x24
		case kAirPlayAudioFormat_PCM_48KHz_24Bit_Stereo:	ASBD_FillPCM( outASBD, 48000, 24, 24, 2 ); break;
    e88700fa:	0789                	addi	a5,a5,2
    e88700fc:	bfc9                	j	e88700ce <AirPlayAudioFormatToASBD+0x18c>
		case kAirPlayAudioFormat_PCM_16KHz_16Bit_Mono:		ASBD_FillPCM( outASBD, 16000, 16, 16, 1 ); break;
    e88700fe:	0005c797          	auipc	a5,0x5c
    e8870102:	9ba78793          	addi	a5,a5,-1606 # e88cbab8 <__PRETTY_FUNCTION__.10655+0xd8>
    e8870106:	bf45                	j	e88700b6 <AirPlayAudioFormatToASBD+0x174>
		case kAirPlayAudioFormat_PCM_24KHz_16Bit_Mono:		ASBD_FillPCM( outASBD, 24000, 16, 16, 1 ); break;
    e8870108:	0005c797          	auipc	a5,0x5c
    e887010c:	9b878793          	addi	a5,a5,-1608 # e88cbac0 <__PRETTY_FUNCTION__.10655+0xe0>
    e8870110:	b75d                	j	e88700b6 <AirPlayAudioFormatToASBD+0x174>
		case kAirPlayAudioFormat_PCM_24KHz_16Bit_Stereo:	ASBD_FillPCM( outASBD, 24000, 16, 16, 2 ); break;
    e8870112:	0005c797          	auipc	a5,0x5c
    e8870116:	9ae78793          	addi	a5,a5,-1618 # e88cbac0 <__PRETTY_FUNCTION__.10655+0xe0>
    e887011a:	b7e9                	j	e88700e4 <AirPlayAudioFormatToASBD+0x1a2>
		case kAirPlayAudioFormat_PCM_32KHz_16Bit_Mono:		ASBD_FillPCM( outASBD, 32000, 16, 16, 1 ); break;
    e887011c:	0005c797          	auipc	a5,0x5c
    e8870120:	9ac78793          	addi	a5,a5,-1620 # e88cbac8 <__PRETTY_FUNCTION__.10655+0xe8>
    e8870124:	bf49                	j	e88700b6 <AirPlayAudioFormatToASBD+0x174>
		case kAirPlayAudioFormat_PCM_32KHz_16Bit_Stereo:	ASBD_FillPCM( outASBD, 32000, 16, 16, 2 ); break;
    e8870126:	0005c797          	auipc	a5,0x5c
    e887012a:	9a278793          	addi	a5,a5,-1630 # e88cbac8 <__PRETTY_FUNCTION__.10655+0xe8>
    e887012e:	bf5d                	j	e88700e4 <AirPlayAudioFormatToASBD+0x1a2>
		case kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo:	ASBD_FillPCM( outASBD, 44100, 16, 16, 2 ); break;
    e8870130:	0005c797          	auipc	a5,0x5c
    e8870134:	9a078793          	addi	a5,a5,-1632 # e88cbad0 <__PRETTY_FUNCTION__.10655+0xf0>
    e8870138:	b775                	j	e88700e4 <AirPlayAudioFormatToASBD+0x1a2>
		case kAirPlayAudioFormat_PCM_44KHz_24Bit_Stereo:	ASBD_FillPCM( outASBD, 44100, 24, 24, 2 ); break;
    e887013a:	0005c797          	auipc	a5,0x5c
    e887013e:	99678793          	addi	a5,a5,-1642 # e88cbad0 <__PRETTY_FUNCTION__.10655+0xf0>
		case kAirPlayAudioFormat_PCM_48KHz_24Bit_Stereo:	ASBD_FillPCM( outASBD, 48000, 24, 24, 2 ); break;
    e8870142:	639c                	ld	a5,0(a5)
    e8870144:	e19c                	sd	a5,0(a1)
    e8870146:	478d                	li	a5,3
    e8870148:	02179713          	slli	a4,a5,0x21
    e887014c:	00c70693          	addi	a3,a4,12
    e8870150:	0705                	addi	a4,a4,1
    e8870152:	e594                	sd	a3,8(a1)
    e8870154:	e998                	sd	a4,16(a1)
    e8870156:	178e                	slli	a5,a5,0x23
    e8870158:	b74d                	j	e88700fa <AirPlayAudioFormatToASBD+0x1b8>
		case kAirPlayAudioFormat_PCM_48KHz_16Bit_Mono:		ASBD_FillPCM( outASBD, 48000, 16, 16, 1 ); break;
    e887015a:	0005c797          	auipc	a5,0x5c
    e887015e:	97e78793          	addi	a5,a5,-1666 # e88cbad8 <__PRETTY_FUNCTION__.10655+0xf8>
    e8870162:	bf91                	j	e88700b6 <AirPlayAudioFormatToASBD+0x174>
		case kAirPlayAudioFormat_PCM_48KHz_16Bit_Stereo:	ASBD_FillPCM( outASBD, 48000, 16, 16, 2 ); break;
    e8870164:	0005c797          	auipc	a5,0x5c
    e8870168:	97478793          	addi	a5,a5,-1676 # e88cbad8 <__PRETTY_FUNCTION__.10655+0xf8>
    e887016c:	bfa5                	j	e88700e4 <AirPlayAudioFormatToASBD+0x1a2>
		case kAirPlayAudioFormat_PCM_48KHz_24Bit_Mono:		ASBD_FillPCM( outASBD, 48000, 24, 24, 1 ); break;
    e887016e:	0005c797          	auipc	a5,0x5c
    e8870172:	96a78793          	addi	a5,a5,-1686 # e88cbad8 <__PRETTY_FUNCTION__.10655+0xf8>
    e8870176:	b59d                	j	e886ffdc <AirPlayAudioFormatToASBD+0x9a>
		case kAirPlayAudioFormat_AAC_LC_44KHz_Stereo:		ASBD_FillAAC_LC( outASBD, 44100, 2 ); break;
    e8870178:	0005c797          	auipc	a5,0x5c
    e887017c:	96878793          	addi	a5,a5,-1688 # e88cbae0 <__PRETTY_FUNCTION__.10655+0x100>
    e8870180:	639c                	ld	a5,0(a5)
    e8870182:	0005b423          	sd	zero,8(a1)
    e8870186:	e19c                	sd	a5,0(a1)
    e8870188:	40000793          	li	a5,1024
    e887018c:	e99c                	sd	a5,16(a1)
    e887018e:	4789                	li	a5,2
    e8870190:	ed9c                	sd	a5,24(a1)
    e8870192:	0205a023          	sw	zero,32(a1)
			*outBitsPerChannel = 16;
    e8870196:	47c1                	li	a5,16
	if( outBitsPerChannel )
    e8870198:	f221                	bnez	a2,e88700d8 <AirPlayAudioFormatToASBD+0x196>
	return( kNoErr );
    e887019a:	4501                	li	a0,0
}
    e887019c:	8082                	ret
		case kAirPlayAudioFormat_AAC_ELD_16KHz_Mono:		ASBD_FillAAC_ELD( outASBD, 16000, 1 ); break;
    e887019e:	0005c797          	auipc	a5,0x5c
    e88701a2:	95278793          	addi	a5,a5,-1710 # e88cbaf0 <__PRETTY_FUNCTION__.10655+0x110>
		case kAirPlayAudioFormat_OPUS_24KHz_Mono:			ASBD_FillOpus( outASBD, 24000, 1 ); break;
    e88701a6:	639c                	ld	a5,0(a5)
    e88701a8:	0005b423          	sd	zero,8(a1)
    e88701ac:	e19c                	sd	a5,0(a1)
    e88701ae:	1e000793          	li	a5,480
    e88701b2:	b5d1                	j	e8870076 <AirPlayAudioFormatToASBD+0x134>
		case kAirPlayAudioFormat_AAC_ELD_24KHz_Mono:		ASBD_FillAAC_ELD( outASBD, 24000, 1 ); break;
    e88701b4:	0005c797          	auipc	a5,0x5c
    e88701b8:	94478793          	addi	a5,a5,-1724 # e88cbaf8 <__PRETTY_FUNCTION__.10655+0x118>
    e88701bc:	b7ed                	j	e88701a6 <AirPlayAudioFormatToASBD+0x264>
		case kAirPlayAudioFormat_AAC_ELD_44KHz_Stereo:		ASBD_FillAAC_ELD( outASBD, 44100, 2 ); break;
    e88701be:	0005c797          	auipc	a5,0x5c
    e88701c2:	94278793          	addi	a5,a5,-1726 # e88cbb00 <__PRETTY_FUNCTION__.10655+0x120>
		case kAirPlayAudioFormat_AAC_ELD_48KHz_Stereo:		ASBD_FillAAC_ELD( outASBD, 48000, 2 ); break;
    e88701c6:	639c                	ld	a5,0(a5)
    e88701c8:	0005b423          	sd	zero,8(a1)
    e88701cc:	e19c                	sd	a5,0(a1)
    e88701ce:	1e000793          	li	a5,480
    e88701d2:	bf6d                	j	e887018c <AirPlayAudioFormatToASBD+0x24a>
    e88701d4:	0005c797          	auipc	a5,0x5c
    e88701d8:	93478793          	addi	a5,a5,-1740 # e88cbb08 <__PRETTY_FUNCTION__.10655+0x128>
    e88701dc:	b7ed                	j	e88701c6 <AirPlayAudioFormatToASBD+0x284>
		case kAirPlayAudioFormat_OPUS_24KHz_Mono:			ASBD_FillOpus( outASBD, 24000, 1 ); break;
    e88701de:	0005c797          	auipc	a5,0x5c
    e88701e2:	93a78793          	addi	a5,a5,-1734 # e88cbb18 <__PRETTY_FUNCTION__.10655+0x138>
    e88701e6:	b7c1                	j	e88701a6 <AirPlayAudioFormatToASBD+0x264>
		case kAirPlayAudioFormat_AAC_ELD_44KHz_Mono:		ASBD_FillAAC_ELD( outASBD, 44100, 1 ); break;
    e88701e8:	0005c717          	auipc	a4,0x5c
    e88701ec:	91870713          	addi	a4,a4,-1768 # e88cbb00 <__PRETTY_FUNCTION__.10655+0x120>
    e88701f0:	6318                	ld	a4,0(a4)
    e88701f2:	0005b423          	sd	zero,8(a1)
    e88701f6:	e198                	sd	a4,0(a1)
    e88701f8:	1e000713          	li	a4,480
    e88701fc:	b57d                	j	e88700aa <AirPlayAudioFormatToASBD+0x168>
		case kAirPlayAudioFormat_AAC_ELD_48KHz_Mono:		ASBD_FillAAC_ELD( outASBD, 48000, 1 ); break;
    e88701fe:	0005c717          	auipc	a4,0x5c
    e8870202:	90a70713          	addi	a4,a4,-1782 # e88cbb08 <__PRETTY_FUNCTION__.10655+0x128>
    e8870206:	b7ed                	j	e88701f0 <AirPlayAudioFormatToASBD+0x2ae>

00000000e8870208 <AirPlayAudioFormatToPCM>:
{
    e8870208:	715d                	addi	sp,sp,-80
    e887020a:	e0a2                	sd	s0,64(sp)
	err = AirPlayAudioFormatToASBD( inFormat, &asbd, &bitsPerChannel );
    e887020c:	0050                	addi	a2,sp,4
{
    e887020e:	842e                	mv	s0,a1
	err = AirPlayAudioFormatToASBD( inFormat, &asbd, &bitsPerChannel );
    e8870210:	002c                	addi	a1,sp,8
{
    e8870212:	fc26                	sd	s1,56(sp)
    e8870214:	e486                	sd	ra,72(sp)
	err = AirPlayAudioFormatToASBD( inFormat, &asbd, &bitsPerChannel );
    e8870216:	d2dff0ef          	jal	ra,e886ff42 <AirPlayAudioFormatToASBD>
    e887021a:	84aa                	mv	s1,a0
	require_noerr_quiet( err, exit );
    e887021c:	ed11                	bnez	a0,e8870238 <AirPlayAudioFormatToPCM+0x30>
	if( asbd.mFormatID == kAudioFormatLinearPCM )
    e887021e:	4732                	lw	a4,12(sp)
    e8870220:	6c7067b7          	lui	a5,0x6c706
    e8870224:	36d78793          	addi	a5,a5,877 # 6c70636d <memcmp-0x7c0f9c93>
    e8870228:	00f71e63          	bne	a4,a5,e8870244 <AirPlayAudioFormatToPCM+0x3c>
		memcpy( outASBD, &asbd, sizeof( asbd ) );
    e887022c:	02400613          	li	a2,36
    e8870230:	002c                	addi	a1,sp,8
    e8870232:	8522                	mv	a0,s0
    e8870234:	16c0c0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
}
    e8870238:	60a6                	ld	ra,72(sp)
    e887023a:	6406                	ld	s0,64(sp)
    e887023c:	8526                	mv	a0,s1
    e887023e:	74e2                	ld	s1,56(sp)
    e8870240:	6161                	addi	sp,sp,80
    e8870242:	8082                	ret
		ASBD_FillPCM( outASBD, asbd.mSampleRate, bitsPerChannel, RoundUp( bitsPerChannel, 8 ), asbd.mChannelsPerFrame );
    e8870244:	4722                	lw	a4,8(sp)
    e8870246:	4631                	li	a2,12
    e8870248:	e0f4570b          	swd	a4,a5,(s0),0,3
    e887024c:	4712                	lw	a4,4(sp)
    e887024e:	0077079b          	addiw	a5,a4,7
    e8870252:	ff87f693          	andi	a3,a5,-8
    e8870256:	2681                	sext.w	a3,a3
    e8870258:	00d70363          	beq	a4,a3,e887025e <AirPlayAudioFormatToPCM+0x56>
    e887025c:	4651                	li	a2,20
    e887025e:	5682                	lw	a3,32(sp)
    e8870260:	0037d79b          	srliw	a5,a5,0x3
    e8870264:	c410                	sw	a2,8(s0)
    e8870266:	02d787bb          	mulw	a5,a5,a3
    e887026a:	4605                	li	a2,1
    e887026c:	cc14                	sw	a3,24(s0)
    e887026e:	cc58                	sw	a4,28(s0)
    e8870270:	02042023          	sw	zero,32(s0)
    e8870274:	c45c                	sw	a5,12(s0)
    e8870276:	e4f4560b          	swd	a2,a5,(s0),2,3
    e887027a:	bf7d                	j	e8870238 <AirPlayAudioFormatToPCM+0x30>

00000000e887027c <AudioFormatIDToAirPlayCompressionType>:
	switch( inFormatID )
    e887027c:	616167b7          	lui	a5,0x61616
    e8870280:	36578713          	addi	a4,a5,869 # 61616365 <memcmp-0x871e9c9b>
    e8870284:	02e50a63          	beq	a0,a4,e88702b8 <AudioFormatIDToAirPlayCompressionType+0x3c>
    e8870288:	00a76a63          	bltu	a4,a0,e887029c <AudioFormatIDToAirPlayCompressionType+0x20>
    e887028c:	32078713          	addi	a4,a5,800
		case kAudioFormatMPEG4AAC:			compressionType = kAirPlayCompressionType_AAC_LC; break;
    e8870290:	4791                	li	a5,4
	switch( inFormatID )
    e8870292:	00e50363          	beq	a0,a4,e8870298 <AudioFormatIDToAirPlayCompressionType+0x1c>
		default:							compressionType = 0;
    e8870296:	4781                	li	a5,0
}
    e8870298:	853e                	mv	a0,a5
    e887029a:	8082                	ret
	switch( inFormatID )
    e887029c:	6c706737          	lui	a4,0x6c706
    e88702a0:	36d70713          	addi	a4,a4,877 # 6c70636d <memcmp-0x7c0f9c93>
		case kAudioFormatLinearPCM:			compressionType = kAirPlayCompressionType_PCM; break;
    e88702a4:	4785                	li	a5,1
	switch( inFormatID )
    e88702a6:	fee509e3          	beq	a0,a4,e8870298 <AudioFormatIDToAirPlayCompressionType+0x1c>
    e88702aa:	6f707737          	lui	a4,0x6f707
    e88702ae:	57370713          	addi	a4,a4,1395 # 6f707573 <memcmp-0x790f8a8d>
		case kAudioFormatOpus:				compressionType = kAirPlayCompressionType_OPUS; break;
    e88702b2:	02000793          	li	a5,32
    e88702b6:	bff1                	j	e8870292 <AudioFormatIDToAirPlayCompressionType+0x16>
		case kAudioFormatMPEG4AAC_ELD:		compressionType = kAirPlayCompressionType_AAC_ELD; break;
    e88702b8:	47a1                	li	a5,8
    e88702ba:	bff9                	j	e8870298 <AudioFormatIDToAirPlayCompressionType+0x1c>

00000000e88702bc <AirPlayCreateModesDictionary>:
{
    e88702bc:	715d                	addi	sp,sp,-80
    e88702be:	f84a                	sd	s2,48(sp)
    e88702c0:	f052                	sd	s4,32(sp)
    e88702c2:	ec56                	sd	s5,24(sp)
    e88702c4:	892a                	mv	s2,a0
    e88702c6:	8a2e                	mv	s4,a1
    e88702c8:	8ab2                	mv	s5,a2
	params = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e88702ca:	0004e697          	auipc	a3,0x4e
    e88702ce:	4fe68693          	addi	a3,a3,1278 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e88702d2:	0004e617          	auipc	a2,0x4e
    e88702d6:	4c660613          	addi	a2,a2,1222 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e88702da:	4581                	li	a1,0
    e88702dc:	4501                	li	a0,0
{
    e88702de:	f44e                	sd	s3,40(sp)
    e88702e0:	e486                	sd	ra,72(sp)
    e88702e2:	e0a2                	sd	s0,64(sp)
    e88702e4:	fc26                	sd	s1,56(sp)
	CFMutableArrayRef			appStates	= NULL;
    e88702e6:	e002                	sd	zero,0(sp)
	CFMutableArrayRef			resources	= NULL;
    e88702e8:	e402                	sd	zero,8(sp)
	params = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e88702ea:	8bcd70ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e88702ee:	89aa                	mv	s3,a0
	require_action( params, exit, err = kNoMemoryErr );
    e88702f0:	36050063          	beqz	a0,e8870650 <AirPlayCreateModesDictionary+0x394>
	if( inChanges->phoneCall != kAirPlayTriState_NotApplicable )
    e88702f4:	02492783          	lw	a5,36(s2)
    e88702f8:	18079463          	bnez	a5,e8870480 <AirPlayCreateModesDictionary+0x1c4>
	if( inChanges->speech != kAirPlayEntity_NotApplicable )
    e88702fc:	02092783          	lw	a5,32(s2)
    e8870300:	cbb1                	beqz	a5,e8870354 <AirPlayCreateModesDictionary+0x98>
		tempDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8870302:	0004e697          	auipc	a3,0x4e
    e8870306:	4c668693          	addi	a3,a3,1222 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e887030a:	0004e617          	auipc	a2,0x4e
    e887030e:	48e60613          	addi	a2,a2,1166 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8870312:	4581                	li	a1,0
    e8870314:	4501                	li	a0,0
    e8870316:	890d70ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e887031a:	84aa                	mv	s1,a0
		require_action( tempDict, exit, err = kNoMemoryErr );
    e887031c:	32050f63          	beqz	a0,e887065a <AirPlayCreateModesDictionary+0x39e>
		CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_AppStateID ), kAirPlayAppStateID_Speech );
    e8870320:	4605                	li	a2,1
    e8870322:	0002e597          	auipc	a1,0x2e
    e8870326:	3e658593          	addi	a1,a1,998 # e889e708 <icmp6_param_problem+0x169a>
    e887032a:	b9ddc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_SpeechMode ), inChanges->speech );
    e887032e:	02092603          	lw	a2,32(s2)
    e8870332:	0002e597          	auipc	a1,0x2e
    e8870336:	3fe58593          	addi	a1,a1,1022 # e889e730 <icmp6_param_problem+0x16c2>
    e887033a:	8526                	mv	a0,s1
    e887033c:	b8bdc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		err = CFArrayEnsureCreatedAndAppend( &appStates, tempDict );
    e8870340:	85a6                	mv	a1,s1
    e8870342:	850a                	mv	a0,sp
    e8870344:	cb3db0ef          	jal	ra,e884bff6 <CFArrayEnsureCreatedAndAppend>
    e8870348:	842a                	mv	s0,a0
		CFRelease( tempDict );
    e887034a:	8526                	mv	a0,s1
    e887034c:	dffd60ef          	jal	ra,e884714a <CFRelease>
		require_noerr( err, exit );
    e8870350:	18041963          	bnez	s0,e88704e2 <AirPlayCreateModesDictionary+0x226>
	if( inChanges->turnByTurn != kAirPlayTriState_NotApplicable )
    e8870354:	02892783          	lw	a5,40(s2)
    e8870358:	c3b5                	beqz	a5,e88703bc <AirPlayCreateModesDictionary+0x100>
		tempDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e887035a:	0004e697          	auipc	a3,0x4e
    e887035e:	46e68693          	addi	a3,a3,1134 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8870362:	0004e617          	auipc	a2,0x4e
    e8870366:	43660613          	addi	a2,a2,1078 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e887036a:	4581                	li	a1,0
    e887036c:	4501                	li	a0,0
    e887036e:	838d70ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8870372:	84aa                	mv	s1,a0
		require_action( tempDict, exit, err = kNoMemoryErr );
    e8870374:	2e050363          	beqz	a0,e887065a <AirPlayCreateModesDictionary+0x39e>
		CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_AppStateID ), kAirPlayAppStateID_TurnByTurn );
    e8870378:	460d                	li	a2,3
    e887037a:	0002e597          	auipc	a1,0x2e
    e887037e:	38e58593          	addi	a1,a1,910 # e889e708 <icmp6_param_problem+0x169a>
    e8870382:	b45dc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFDictionarySetBoolean( tempDict, CFSTR( kAirPlayKey_State ), inChanges->turnByTurn != kAirPlayTriState_False );
    e8870386:	02892703          	lw	a4,40(s2)
    e887038a:	57fd                	li	a5,-1
    e887038c:	16f70263          	beq	a4,a5,e88704f0 <AirPlayCreateModesDictionary+0x234>
    e8870390:	00065797          	auipc	a5,0x65
    e8870394:	94078793          	addi	a5,a5,-1728 # e88d4cd0 <kCFLBooleanTrue>
    e8870398:	6390                	ld	a2,0(a5)
    e887039a:	0002e597          	auipc	a1,0x2e
    e887039e:	38658593          	addi	a1,a1,902 # e889e720 <icmp6_param_problem+0x16b2>
    e88703a2:	8526                	mv	a0,s1
    e88703a4:	8aed70ef          	jal	ra,e8847452 <CFDictionarySetValue>
		err = CFArrayEnsureCreatedAndAppend( &appStates, tempDict );
    e88703a8:	85a6                	mv	a1,s1
    e88703aa:	850a                	mv	a0,sp
    e88703ac:	c4bdb0ef          	jal	ra,e884bff6 <CFArrayEnsureCreatedAndAppend>
    e88703b0:	842a                	mv	s0,a0
		CFRelease( tempDict );
    e88703b2:	8526                	mv	a0,s1
    e88703b4:	d97d60ef          	jal	ra,e884714a <CFRelease>
		require_noerr( err, exit );
    e88703b8:	12041563          	bnez	s0,e88704e2 <AirPlayCreateModesDictionary+0x226>
	if( inChanges->screen.type != kAirPlayTransferType_NotApplicable )
    e88703bc:	00092783          	lw	a5,0(s2)
    e88703c0:	14078d63          	beqz	a5,e887051a <AirPlayCreateModesDictionary+0x25e>
		tempDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e88703c4:	0004e697          	auipc	a3,0x4e
    e88703c8:	40468693          	addi	a3,a3,1028 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e88703cc:	0004e617          	auipc	a2,0x4e
    e88703d0:	3cc60613          	addi	a2,a2,972 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e88703d4:	4581                	li	a1,0
    e88703d6:	4501                	li	a0,0
    e88703d8:	fcfd60ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e88703dc:	84aa                	mv	s1,a0
		require_action( tempDict, exit, err = kNoMemoryErr );
    e88703de:	26050e63          	beqz	a0,e887065a <AirPlayCreateModesDictionary+0x39e>
		CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_ResourceID ), kAirPlayResourceID_MainScreen );
    e88703e2:	4605                	li	a2,1
    e88703e4:	0002e597          	auipc	a1,0x2e
    e88703e8:	36458593          	addi	a1,a1,868 # e889e748 <icmp6_param_problem+0x16da>
    e88703ec:	adbdc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_TransferType ), inChanges->screen.type );
    e88703f0:	00092603          	lw	a2,0(s2)
    e88703f4:	0002e597          	auipc	a1,0x2e
    e88703f8:	36c58593          	addi	a1,a1,876 # e889e760 <icmp6_param_problem+0x16f2>
    e88703fc:	8526                	mv	a0,s1
    e88703fe:	ac9dc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		if( inChanges->screen.priority != kAirPlayTransferPriority_NotApplicable )
    e8870402:	00492603          	lw	a2,4(s2)
    e8870406:	ca01                	beqz	a2,e8870416 <AirPlayCreateModesDictionary+0x15a>
			CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_TransferPriority ), inChanges->screen.priority );
    e8870408:	0002e597          	auipc	a1,0x2e
    e887040c:	37058593          	addi	a1,a1,880 # e889e778 <icmp6_param_problem+0x170a>
    e8870410:	8526                	mv	a0,s1
    e8870412:	ab5dc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		if( inChanges->screen.takeConstraint != kAirPlayConstraint_NotApplicable )
    e8870416:	00892603          	lw	a2,8(s2)
    e887041a:	ca01                	beqz	a2,e887042a <AirPlayCreateModesDictionary+0x16e>
			CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_TakeConstraint ), inChanges->screen.takeConstraint );
    e887041c:	0002e597          	auipc	a1,0x2e
    e8870420:	37c58593          	addi	a1,a1,892 # e889e798 <icmp6_param_problem+0x172a>
    e8870424:	8526                	mv	a0,s1
    e8870426:	aa1dc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		if( inChanges->screen.borrowOrUnborrowConstraint != kAirPlayConstraint_NotApplicable )
    e887042a:	00c92603          	lw	a2,12(s2)
    e887042e:	ce69                	beqz	a2,e8870508 <AirPlayCreateModesDictionary+0x24c>
			if(      inChanges->screen.type == kAirPlayTransferType_Take )   key = CFSTR( kAirPlayKey_BorrowConstraint );
    e8870430:	00092783          	lw	a5,0(s2)
    e8870434:	4705                	li	a4,1
    e8870436:	0ce78263          	beq	a5,a4,e88704fa <AirPlayCreateModesDictionary+0x23e>
			else if( inChanges->screen.type == kAirPlayTransferType_Borrow ) key = CFSTR( kAirPlayKey_UnborrowConstraint );
    e887043a:	470d                	li	a4,3
    e887043c:	0002e597          	auipc	a1,0x2e
    e8870440:	2ac58593          	addi	a1,a1,684 # e889e6e8 <icmp6_param_problem+0x167a>
    e8870444:	0ae78f63          	beq	a5,a4,e8870502 <AirPlayCreateModesDictionary+0x246>
			else { dlogassert( "Bad borrow/unborrow constraint" ); err = kParamErr; goto exit; }
    e8870448:	0005b817          	auipc	a6,0x5b
    e887044c:	6e080813          	addi	a6,a6,1760 # e88cbb28 <__PRETTY_FUNCTION__.10655+0x148>
    e8870450:	0005c797          	auipc	a5,0x5c
    e8870454:	a4078793          	addi	a5,a5,-1472 # e88cbe90 <__PRETTY_FUNCTION__.9833>
    e8870458:	11d00713          	li	a4,285
			else { dlogassert( "Bad borrow/unborrow constraint" ); err = kParamErr; goto exit; }
    e887045c:	0005b697          	auipc	a3,0x5b
    e8870460:	6ec68693          	addi	a3,a3,1772 # e88cbb48 <__PRETTY_FUNCTION__.10655+0x168>
    e8870464:	4601                	li	a2,0
    e8870466:	4581                	li	a1,0
    e8870468:	4501                	li	a0,0
    e887046a:	7479                	lui	s0,0xffffe
    e887046c:	f5ddd0ef          	jal	ra,e884e3c8 <DebugPrintAssert>
    e8870470:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
	CFReleaseNullSafe( params );
    e8870474:	854e                	mv	a0,s3
    e8870476:	cd5d60ef          	jal	ra,e884714a <CFRelease>
    e887047a:	8a26                	mv	s4,s1
    e887047c:	4981                	li	s3,0
    e887047e:	a271                	j	e887060a <AirPlayCreateModesDictionary+0x34e>
		tempDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8870480:	0004e697          	auipc	a3,0x4e
    e8870484:	34868693          	addi	a3,a3,840 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8870488:	0004e617          	auipc	a2,0x4e
    e887048c:	31060613          	addi	a2,a2,784 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8870490:	4581                	li	a1,0
    e8870492:	4501                	li	a0,0
    e8870494:	f13d60ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8870498:	84aa                	mv	s1,a0
		require_action( tempDict, exit, err = kNoMemoryErr );
    e887049a:	1c050063          	beqz	a0,e887065a <AirPlayCreateModesDictionary+0x39e>
		CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_AppStateID ), kAirPlayAppStateID_PhoneCall );
    e887049e:	4609                	li	a2,2
    e88704a0:	0002e597          	auipc	a1,0x2e
    e88704a4:	26858593          	addi	a1,a1,616 # e889e708 <icmp6_param_problem+0x169a>
    e88704a8:	a1fdc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFDictionarySetBoolean( tempDict, CFSTR( kAirPlayKey_State ), inChanges->phoneCall != kAirPlayTriState_False );
    e88704ac:	02492703          	lw	a4,36(s2)
    e88704b0:	57fd                	li	a5,-1
    e88704b2:	02f70a63          	beq	a4,a5,e88704e6 <AirPlayCreateModesDictionary+0x22a>
    e88704b6:	00065797          	auipc	a5,0x65
    e88704ba:	81a78793          	addi	a5,a5,-2022 # e88d4cd0 <kCFLBooleanTrue>
    e88704be:	6390                	ld	a2,0(a5)
    e88704c0:	0002e597          	auipc	a1,0x2e
    e88704c4:	26058593          	addi	a1,a1,608 # e889e720 <icmp6_param_problem+0x16b2>
    e88704c8:	8526                	mv	a0,s1
    e88704ca:	f89d60ef          	jal	ra,e8847452 <CFDictionarySetValue>
		err = CFArrayEnsureCreatedAndAppend( &appStates, tempDict );
    e88704ce:	85a6                	mv	a1,s1
    e88704d0:	850a                	mv	a0,sp
    e88704d2:	b25db0ef          	jal	ra,e884bff6 <CFArrayEnsureCreatedAndAppend>
    e88704d6:	842a                	mv	s0,a0
		CFRelease( tempDict );
    e88704d8:	8526                	mv	a0,s1
    e88704da:	c71d60ef          	jal	ra,e884714a <CFRelease>
		require_noerr( err, exit );
    e88704de:	e0040fe3          	beqz	s0,e88702fc <AirPlayCreateModesDictionary+0x40>
		tempDict = NULL;
    e88704e2:	4481                	li	s1,0
    e88704e4:	bf41                	j	e8870474 <AirPlayCreateModesDictionary+0x1b8>
		CFDictionarySetBoolean( tempDict, CFSTR( kAirPlayKey_State ), inChanges->phoneCall != kAirPlayTriState_False );
    e88704e6:	00064797          	auipc	a5,0x64
    e88704ea:	7e278793          	addi	a5,a5,2018 # e88d4cc8 <kCFLBooleanFalse>
    e88704ee:	bfc1                	j	e88704be <AirPlayCreateModesDictionary+0x202>
		CFDictionarySetBoolean( tempDict, CFSTR( kAirPlayKey_State ), inChanges->turnByTurn != kAirPlayTriState_False );
    e88704f0:	00064797          	auipc	a5,0x64
    e88704f4:	7d878793          	addi	a5,a5,2008 # e88d4cc8 <kCFLBooleanFalse>
    e88704f8:	b545                	j	e8870398 <AirPlayCreateModesDictionary+0xdc>
			if(      inChanges->screen.type == kAirPlayTransferType_Take )   key = CFSTR( kAirPlayKey_BorrowConstraint );
    e88704fa:	0002e597          	auipc	a1,0x2e
    e88704fe:	1ce58593          	addi	a1,a1,462 # e889e6c8 <icmp6_param_problem+0x165a>
			CFDictionarySetInt64( tempDict, key, inChanges->screen.borrowOrUnborrowConstraint );
    e8870502:	8526                	mv	a0,s1
    e8870504:	9c3dc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		err = CFArrayEnsureCreatedAndAppend( &resources, tempDict );
    e8870508:	85a6                	mv	a1,s1
    e887050a:	0028                	addi	a0,sp,8
    e887050c:	aebdb0ef          	jal	ra,e884bff6 <CFArrayEnsureCreatedAndAppend>
    e8870510:	842a                	mv	s0,a0
		CFRelease( tempDict );
    e8870512:	8526                	mv	a0,s1
    e8870514:	c37d60ef          	jal	ra,e884714a <CFRelease>
		require_noerr( err, exit );
    e8870518:	f469                	bnez	s0,e88704e2 <AirPlayCreateModesDictionary+0x226>
	if( inChanges->mainAudio.type != kAirPlayTransferType_NotApplicable )
    e887051a:	01092783          	lw	a5,16(s2)
    e887051e:	cfdd                	beqz	a5,e88705dc <AirPlayCreateModesDictionary+0x320>
		tempDict = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8870520:	0004e697          	auipc	a3,0x4e
    e8870524:	2a868693          	addi	a3,a3,680 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8870528:	0004e617          	auipc	a2,0x4e
    e887052c:	27060613          	addi	a2,a2,624 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8870530:	4581                	li	a1,0
    e8870532:	4501                	li	a0,0
    e8870534:	e73d60ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8870538:	84aa                	mv	s1,a0
		require_action( tempDict, exit, err = kNoMemoryErr );
    e887053a:	12050063          	beqz	a0,e887065a <AirPlayCreateModesDictionary+0x39e>
		CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_ResourceID ), kAirPlayResourceID_MainAudio );
    e887053e:	4609                	li	a2,2
    e8870540:	0002e597          	auipc	a1,0x2e
    e8870544:	20858593          	addi	a1,a1,520 # e889e748 <icmp6_param_problem+0x16da>
    e8870548:	97fdc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_TransferType ), inChanges->mainAudio.type );
    e887054c:	01092603          	lw	a2,16(s2)
    e8870550:	0002e597          	auipc	a1,0x2e
    e8870554:	21058593          	addi	a1,a1,528 # e889e760 <icmp6_param_problem+0x16f2>
    e8870558:	8526                	mv	a0,s1
    e887055a:	96ddc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		if( inChanges->mainAudio.priority != kAirPlayTransferPriority_NotApplicable )
    e887055e:	01492603          	lw	a2,20(s2)
    e8870562:	ca01                	beqz	a2,e8870572 <AirPlayCreateModesDictionary+0x2b6>
			CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_TransferPriority ), inChanges->mainAudio.priority );
    e8870564:	0002e597          	auipc	a1,0x2e
    e8870568:	21458593          	addi	a1,a1,532 # e889e778 <icmp6_param_problem+0x170a>
    e887056c:	8526                	mv	a0,s1
    e887056e:	959dc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		if( inChanges->mainAudio.takeConstraint != kAirPlayConstraint_NotApplicable )
    e8870572:	01892603          	lw	a2,24(s2)
    e8870576:	ca01                	beqz	a2,e8870586 <AirPlayCreateModesDictionary+0x2ca>
			CFDictionarySetInt64( tempDict, CFSTR( kAirPlayKey_TakeConstraint ), inChanges->mainAudio.takeConstraint );
    e8870578:	0002e597          	auipc	a1,0x2e
    e887057c:	22058593          	addi	a1,a1,544 # e889e798 <icmp6_param_problem+0x172a>
    e8870580:	8526                	mv	a0,s1
    e8870582:	945dc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		if( inChanges->mainAudio.borrowOrUnborrowConstraint != kAirPlayConstraint_NotApplicable )
    e8870586:	01c92603          	lw	a2,28(s2)
    e887058a:	ce1d                	beqz	a2,e88705c8 <AirPlayCreateModesDictionary+0x30c>
			if(      inChanges->mainAudio.type == kAirPlayTransferType_Take )   key = CFSTR( kAirPlayKey_BorrowConstraint );
    e887058c:	01092783          	lw	a5,16(s2)
    e8870590:	4705                	li	a4,1
    e8870592:	02e78463          	beq	a5,a4,e88705ba <AirPlayCreateModesDictionary+0x2fe>
			else if( inChanges->mainAudio.type == kAirPlayTransferType_Borrow ) key = CFSTR( kAirPlayKey_UnborrowConstraint );
    e8870596:	470d                	li	a4,3
    e8870598:	0002e597          	auipc	a1,0x2e
    e887059c:	15058593          	addi	a1,a1,336 # e889e6e8 <icmp6_param_problem+0x167a>
    e88705a0:	02e78163          	beq	a5,a4,e88705c2 <AirPlayCreateModesDictionary+0x306>
			else { dlogassert( "Bad borrow/unborrow constraint" ); err = kParamErr; goto exit; }
    e88705a4:	0005b817          	auipc	a6,0x5b
    e88705a8:	58480813          	addi	a6,a6,1412 # e88cbb28 <__PRETTY_FUNCTION__.10655+0x148>
    e88705ac:	0005c797          	auipc	a5,0x5c
    e88705b0:	8e478793          	addi	a5,a5,-1820 # e88cbe90 <__PRETTY_FUNCTION__.9833>
    e88705b4:	13c00713          	li	a4,316
    e88705b8:	b555                	j	e887045c <AirPlayCreateModesDictionary+0x1a0>
			if(      inChanges->mainAudio.type == kAirPlayTransferType_Take )   key = CFSTR( kAirPlayKey_BorrowConstraint );
    e88705ba:	0002e597          	auipc	a1,0x2e
    e88705be:	10e58593          	addi	a1,a1,270 # e889e6c8 <icmp6_param_problem+0x165a>
			CFDictionarySetInt64( tempDict, key, inChanges->mainAudio.borrowOrUnborrowConstraint );
    e88705c2:	8526                	mv	a0,s1
    e88705c4:	903dc0ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
		err = CFArrayEnsureCreatedAndAppend( &resources, tempDict );
    e88705c8:	85a6                	mv	a1,s1
    e88705ca:	0028                	addi	a0,sp,8
    e88705cc:	a2bdb0ef          	jal	ra,e884bff6 <CFArrayEnsureCreatedAndAppend>
    e88705d0:	842a                	mv	s0,a0
		CFRelease( tempDict );
    e88705d2:	8526                	mv	a0,s1
    e88705d4:	b77d60ef          	jal	ra,e884714a <CFRelease>
		require_noerr( err, exit );
    e88705d8:	f00415e3          	bnez	s0,e88704e2 <AirPlayCreateModesDictionary+0x226>
	if( appStates )	CFDictionarySetValue( params, CFSTR( kAirPlayKey_AppStates ), appStates );
    e88705dc:	6602                	ld	a2,0(sp)
    e88705de:	e22d                	bnez	a2,e8870640 <AirPlayCreateModesDictionary+0x384>
	if( resources )	CFDictionarySetValue( params, CFSTR( kAirPlayKey_Resources ), resources );
    e88705e0:	6622                	ld	a2,8(sp)
    e88705e2:	ca01                	beqz	a2,e88705f2 <AirPlayCreateModesDictionary+0x336>
    e88705e4:	0002e597          	auipc	a1,0x2e
    e88705e8:	1e458593          	addi	a1,a1,484 # e889e7c8 <icmp6_param_problem+0x175a>
    e88705ec:	854e                	mv	a0,s3
    e88705ee:	e65d60ef          	jal	ra,e8847452 <CFDictionarySetValue>
	err = kNoErr;
    e88705f2:	4401                	li	s0,0
	if( inReason )	CFDictionarySetValue( params, CFSTR( kAirPlayKey_ReasonStr ), inReason );
    e88705f4:	000a0b63          	beqz	s4,e887060a <AirPlayCreateModesDictionary+0x34e>
    e88705f8:	8652                	mv	a2,s4
    e88705fa:	0002e597          	auipc	a1,0x2e
    e88705fe:	1e658593          	addi	a1,a1,486 # e889e7e0 <icmp6_param_problem+0x1772>
    e8870602:	854e                	mv	a0,s3
    e8870604:	e4fd60ef          	jal	ra,e8847452 <CFDictionarySetValue>
    e8870608:	4a01                	li	s4,0
	CFReleaseNullSafe( appStates );
    e887060a:	6502                	ld	a0,0(sp)
    e887060c:	c119                	beqz	a0,e8870612 <AirPlayCreateModesDictionary+0x356>
    e887060e:	b3dd60ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( resources );
    e8870612:	6522                	ld	a0,8(sp)
    e8870614:	c119                	beqz	a0,e887061a <AirPlayCreateModesDictionary+0x35e>
    e8870616:	b35d60ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( tempDict );
    e887061a:	000a0563          	beqz	s4,e8870624 <AirPlayCreateModesDictionary+0x368>
    e887061e:	8552                	mv	a0,s4
    e8870620:	b2bd60ef          	jal	ra,e884714a <CFRelease>
	if( outErr ) *outErr = err;
    e8870624:	000a8463          	beqz	s5,e887062c <AirPlayCreateModesDictionary+0x370>
    e8870628:	008aa023          	sw	s0,0(s5)
}
    e887062c:	60a6                	ld	ra,72(sp)
    e887062e:	6406                	ld	s0,64(sp)
    e8870630:	854e                	mv	a0,s3
    e8870632:	74e2                	ld	s1,56(sp)
    e8870634:	7942                	ld	s2,48(sp)
    e8870636:	79a2                	ld	s3,40(sp)
    e8870638:	7a02                	ld	s4,32(sp)
    e887063a:	6ae2                	ld	s5,24(sp)
    e887063c:	6161                	addi	sp,sp,80
    e887063e:	8082                	ret
	if( appStates )	CFDictionarySetValue( params, CFSTR( kAirPlayKey_AppStates ), appStates );
    e8870640:	0002e597          	auipc	a1,0x2e
    e8870644:	17058593          	addi	a1,a1,368 # e889e7b0 <icmp6_param_problem+0x1742>
    e8870648:	854e                	mv	a0,s3
    e887064a:	e09d60ef          	jal	ra,e8847452 <CFDictionarySetValue>
    e887064e:	bf49                	j	e88705e0 <AirPlayCreateModesDictionary+0x324>
	require_action( params, exit, err = kNoMemoryErr );
    e8870650:	7479                	lui	s0,0xffffe
    e8870652:	4a01                	li	s4,0
    e8870654:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8870658:	bf4d                	j	e887060a <AirPlayCreateModesDictionary+0x34e>
		require_action( tempDict, exit, err = kNoMemoryErr );
    e887065a:	7479                	lui	s0,0xffffe
    e887065c:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8870660:	b549                	j	e88704e2 <AirPlayCreateModesDictionary+0x226>

00000000e8870662 <AirPlay_DeriveAESKeySHA512>:
{
    e8870662:	7149                	addi	sp,sp,-368
    e8870664:	f2a2                	sd	s0,352(sp)
    e8870666:	eea6                	sd	s1,344(sp)
    e8870668:	eaca                	sd	s2,336(sp)
    e887066a:	e6ce                	sd	s3,328(sp)
    e887066c:	e2d2                	sd	s4,320(sp)
    e887066e:	fe56                	sd	s5,312(sp)
    e8870670:	f686                	sd	ra,360(sp)
    e8870672:	ec32                	sd	a2,24(sp)
    e8870674:	e836                	sd	a3,16(sp)
	if( outKey )
    e8870676:	e442                	sd	a6,8(sp)
{
    e8870678:	892a                	mv	s2,a0
    e887067a:	89ae                	mv	s3,a1
    e887067c:	8a3a                	mv	s4,a4
    e887067e:	8abe                	mv	s5,a5
    e8870680:	84c6                	mv	s1,a7
    e8870682:	1080                	addi	s0,sp,96
	if( outKey )
    e8870684:	02080a63          	beqz	a6,e88706b8 <AirPlay_DeriveAESKeySHA512+0x56>
		SHA512_Init( &shaCtx );
    e8870688:	8522                	mv	a0,s0
    e887068a:	e00ed0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
		SHA512_Update( &shaCtx, inKeySaltPtr, inKeySaltLen );
    e887068e:	66c2                	ld	a3,16(sp)
    e8870690:	65e2                	ld	a1,24(sp)
    e8870692:	8522                	mv	a0,s0
    e8870694:	8636                	mv	a2,a3
    e8870696:	e60ed0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
		SHA512_Update( &shaCtx, inMasterKeyPtr, inMasterKeyLen );
    e887069a:	864e                	mv	a2,s3
    e887069c:	85ca                	mv	a1,s2
    e887069e:	8522                	mv	a0,s0
    e88706a0:	e56ed0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
		SHA512_Final( buf, &shaCtx );
    e88706a4:	85a2                	mv	a1,s0
    e88706a6:	1008                	addi	a0,sp,32
    e88706a8:	ee8ed0ef          	jal	ra,e885dd90 <SHA512_Final_compat>
		memcpy( outKey, buf, 16 );
    e88706ac:	6822                	ld	a6,8(sp)
    e88706ae:	4641                	li	a2,16
    e88706b0:	100c                	addi	a1,sp,32
    e88706b2:	8542                	mv	a0,a6
    e88706b4:	4ed0b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	if( outIV )
    e88706b8:	c49d                	beqz	s1,e88706e6 <AirPlay_DeriveAESKeySHA512+0x84>
		SHA512_Init( &shaCtx );
    e88706ba:	8522                	mv	a0,s0
    e88706bc:	dceed0ef          	jal	ra,e885dc8a <SHA512_Init_compat>
		SHA512_Update( &shaCtx, inIVSaltPtr, inIVSaltLen );
    e88706c0:	8656                	mv	a2,s5
    e88706c2:	85d2                	mv	a1,s4
    e88706c4:	8522                	mv	a0,s0
    e88706c6:	e30ed0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
		SHA512_Update( &shaCtx, inMasterKeyPtr, inMasterKeyLen );
    e88706ca:	864e                	mv	a2,s3
    e88706cc:	85ca                	mv	a1,s2
    e88706ce:	8522                	mv	a0,s0
    e88706d0:	e26ed0ef          	jal	ra,e885dcf6 <SHA512_Update_compat>
		SHA512_Final( buf, &shaCtx );
    e88706d4:	85a2                	mv	a1,s0
    e88706d6:	1008                	addi	a0,sp,32
    e88706d8:	eb8ed0ef          	jal	ra,e885dd90 <SHA512_Final_compat>
		memcpy( outIV, buf, 16 );
    e88706dc:	4641                	li	a2,16
    e88706de:	100c                	addi	a1,sp,32
    e88706e0:	8526                	mv	a0,s1
    e88706e2:	4bf0b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
{
    e88706e6:	101c                	addi	a5,sp,32
	while( inLen-- ) *ptr++ = 0;
    e88706e8:	1817d00b          	sbia	zero,(a5),1,0
    e88706ec:	fe879ee3          	bne	a5,s0,e88706e8 <AirPlay_DeriveAESKeySHA512+0x86>
}
    e88706f0:	70b6                	ld	ra,360(sp)
    e88706f2:	7416                	ld	s0,352(sp)
    e88706f4:	64f6                	ld	s1,344(sp)
    e88706f6:	6956                	ld	s2,336(sp)
    e88706f8:	69b6                	ld	s3,328(sp)
    e88706fa:	6a16                	ld	s4,320(sp)
    e88706fc:	7af2                	ld	s5,312(sp)
    e88706fe:	6175                	addi	sp,sp,368
    e8870700:	8082                	ret

00000000e8870702 <AirPlay_DeriveAESKeySHA512ForScreen>:
{
    e8870702:	715d                	addi	sp,sp,-80
    e8870704:	e0a2                	sd	s0,64(sp)
    e8870706:	f84a                	sd	s2,48(sp)
    e8870708:	8432                	mv	s0,a2
    e887070a:	f44e                	sd	s3,40(sp)
    e887070c:	892a                	mv	s2,a0
    e887070e:	89ae                	mv	s3,a1
    e8870710:	e436                	sd	a3,8(sp)
	screenStreamKeySaltLen = asprintf( &screenStreamKeySalt, "%s%llu", kAirPlayEncryptionStreamPrefix_Key, inScreenStreamConnectionID );
    e8870712:	00051597          	auipc	a1,0x51
    e8870716:	c9658593          	addi	a1,a1,-874 # e88c13a8 <__PRETTY_FUNCTION__.9824+0x60>
    e887071a:	86b2                	mv	a3,a2
    e887071c:	0808                	addi	a0,sp,16
    e887071e:	0005b617          	auipc	a2,0x5b
    e8870722:	4d260613          	addi	a2,a2,1234 # e88cbbf0 <__PRETTY_FUNCTION__.10655+0x210>
{
    e8870726:	e486                	sd	ra,72(sp)
    e8870728:	e03a                	sd	a4,0(sp)
    e887072a:	fc26                	sd	s1,56(sp)
	char *screenStreamKeySalt = NULL, *screenStreamIVSalt = NULL;
    e887072c:	e802                	sd	zero,16(sp)
    e887072e:	ec02                	sd	zero,24(sp)
	screenStreamKeySaltLen = asprintf( &screenStreamKeySalt, "%s%llu", kAirPlayEncryptionStreamPrefix_Key, inScreenStreamConnectionID );
    e8870730:	454030ef          	jal	ra,e8873b84 <asprintf>
    e8870734:	84aa                	mv	s1,a0
	screenStreamIVSaltLen = asprintf( &screenStreamIVSalt, "%s%llu", kAirPlayEncryptionStreamPrefix_IV, inScreenStreamConnectionID );
    e8870736:	86a2                	mv	a3,s0
    e8870738:	0005b617          	auipc	a2,0x5b
    e887073c:	4d060613          	addi	a2,a2,1232 # e88cbc08 <__PRETTY_FUNCTION__.10655+0x228>
    e8870740:	00051597          	auipc	a1,0x51
    e8870744:	c6858593          	addi	a1,a1,-920 # e88c13a8 <__PRETTY_FUNCTION__.9824+0x60>
    e8870748:	0828                	addi	a0,sp,24
    e887074a:	43a030ef          	jal	ra,e8873b84 <asprintf>
	AirPlay_DeriveAESKeySHA512( inMasterKeyPtr, inMasterKeyLen, screenStreamKeySalt, screenStreamKeySaltLen, screenStreamIVSalt, screenStreamIVSaltLen, outKey, outIV );
    e887074e:	87aa                	mv	a5,a0
    e8870750:	6702                	ld	a4,0(sp)
    e8870752:	6822                	ld	a6,8(sp)
    e8870754:	6642                	ld	a2,16(sp)
    e8870756:	88ba                	mv	a7,a4
    e8870758:	6762                	ld	a4,24(sp)
    e887075a:	86a6                	mv	a3,s1
	screenStreamIVSaltLen = asprintf( &screenStreamIVSalt, "%s%llu", kAirPlayEncryptionStreamPrefix_IV, inScreenStreamConnectionID );
    e887075c:	842a                	mv	s0,a0
	AirPlay_DeriveAESKeySHA512( inMasterKeyPtr, inMasterKeyLen, screenStreamKeySalt, screenStreamKeySaltLen, screenStreamIVSalt, screenStreamIVSaltLen, outKey, outIV );
    e887075e:	85ce                	mv	a1,s3
    e8870760:	854a                	mv	a0,s2
    e8870762:	f01ff0ef          	jal	ra,e8870662 <AirPlay_DeriveAESKeySHA512>
	MemZeroSecure( screenStreamKeySalt, screenStreamKeySaltLen );
    e8870766:	67c2                	ld	a5,16(sp)
    e8870768:	94be                	add	s1,s1,a5
    e887076a:	02979363          	bne	a5,s1,e8870790 <AirPlay_DeriveAESKeySHA512ForScreen+0x8e>
	MemZeroSecure( screenStreamIVSalt, screenStreamIVSaltLen );
    e887076e:	6762                	ld	a4,24(sp)
    e8870770:	943a                	add	s0,s0,a4
    e8870772:	02871263          	bne	a4,s0,e8870796 <AirPlay_DeriveAESKeySHA512ForScreen+0x94>
	free( screenStreamKeySalt );
    e8870776:	6542                	ld	a0,16(sp)
    e8870778:	3890b0ef          	jal	ra,e887c300 <eLIBs_free>
	free( screenStreamIVSalt );
    e887077c:	6562                	ld	a0,24(sp)
    e887077e:	3830b0ef          	jal	ra,e887c300 <eLIBs_free>
}
    e8870782:	6406                	ld	s0,64(sp)
    e8870784:	60a6                	ld	ra,72(sp)
    e8870786:	74e2                	ld	s1,56(sp)
    e8870788:	7942                	ld	s2,48(sp)
    e887078a:	79a2                	ld	s3,40(sp)
    e887078c:	6161                	addi	sp,sp,80
    e887078e:	8082                	ret
    e8870790:	1817d00b          	sbia	zero,(a5),1,0
    e8870794:	bfd9                	j	e887076a <AirPlay_DeriveAESKeySHA512ForScreen+0x68>
    e8870796:	1817500b          	sbia	zero,(a4),1,0
    e887079a:	bfe1                	j	e8870772 <AirPlay_DeriveAESKeySHA512ForScreen+0x70>

00000000e887079c <RTPJitterBufferFree>:
{
    e887079c:	7179                	addi	sp,sp,-48
    e887079e:	e422                	sd	s0,8(sp)
    e88707a0:	f406                	sd	ra,40(sp)
    e88707a2:	e826                	sd	s1,16(sp)
    e88707a4:	ec4a                	sd	s2,24(sp)
    e88707a6:	f04e                	sd	s3,32(sp)
	if( ( ctx->nLate > 0 ) || ( ctx->nGaps > 0 ) || ( ctx->nSkipped > 0 ) || ( ctx->nRebuffer > 0 ) )
    e88707a8:	0fc52703          	lw	a4,252(a0)
{
    e88707ac:	842a                	mv	s0,a0
    e88707ae:	10852883          	lw	a7,264(a0)
	if( ( ctx->nLate > 0 ) || ( ctx->nGaps > 0 ) || ( ctx->nSkipped > 0 ) || ( ctx->nRebuffer > 0 ) )
    e88707b2:	e711                	bnez	a4,e88707be <RTPJitterBufferFree+0x22>
    e88707b4:	10053783          	ld	a5,256(a0)
    e88707b8:	e399                	bnez	a5,e88707be <RTPJitterBufferFree+0x22>
    e88707ba:	02088863          	beqz	a7,e88707ea <RTPJitterBufferFree+0x4e>
			ap_jitter_label( ctx ), ctx->nLate, ctx->nGaps, ctx->nSkipped, ctx->nRebuffer );
    e88707be:	11043683          	ld	a3,272(s0)
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e88707c2:	e689                	bnez	a3,e88707cc <RTPJitterBufferFree+0x30>
    e88707c4:	0005b697          	auipc	a3,0x5b
    e88707c8:	45468693          	addi	a3,a3,1108 # e88cbc18 <__PRETTY_FUNCTION__.10655+0x238>
    e88707cc:	10442803          	lw	a6,260(s0)
    e88707d0:	10042783          	lw	a5,256(s0)
    e88707d4:	004005b7          	lui	a1,0x400
    e88707d8:	0005b617          	auipc	a2,0x5b
    e88707dc:	44860613          	addi	a2,a2,1096 # e88cbc20 <__PRETTY_FUNCTION__.10655+0x240>
    e88707e0:	03258593          	addi	a1,a1,50 # 400032 <memcmp-0xe83fffce>
    e88707e4:	8522                	mv	a0,s0
    e88707e6:	b0aff0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
	if( ctx->logQueue )
    e88707ea:	11843503          	ld	a0,280(s0)
	ctx->nLate		= 0;
    e88707ee:	0e043e23          	sd	zero,252(s0)
	ctx->nSkipped	= 0;
    e88707f2:	10043223          	sd	zero,260(s0)
	if( ctx->logQueue )
    e88707f6:	cd19                	beqz	a0,e8870814 <RTPJitterBufferFree+0x78>
		dispatch_sync_f( ctx->logQueue, NULL, _RTPJitterBufferLog );
    e88707f8:	fffff617          	auipc	a2,0xfffff
    e88707fc:	6ea60613          	addi	a2,a2,1770 # e886fee2 <_RTPJitterBufferLog>
    e8870800:	4581                	li	a1,0
    e8870802:	d1cde0ef          	jal	ra,e884ed1e <dispatch_sync_f>
		dispatch_forget( &ctx->logQueue );
    e8870806:	11843503          	ld	a0,280(s0)
    e887080a:	c509                	beqz	a0,e8870814 <RTPJitterBufferFree+0x78>
    e887080c:	a44de0ef          	jal	ra,e884ea50 <dispatch_release>
    e8870810:	10043c23          	sd	zero,280(s0)
	if( ctx->decodeThreadPtr )
    e8870814:	681c                	ld	a5,16(s0)
    e8870816:	e7bd                	bnez	a5,e8870884 <RTPJitterBufferFree+0xe8>
	pthread_mutex_forget( &ctx->decodeMutexPtr );
    e8870818:	7808                	ld	a0,48(s0)
    e887081a:	e941                	bnez	a0,e88708aa <RTPJitterBufferFree+0x10e>
	pthread_cond_forget( &ctx->decodeConditionPtr );
    e887081c:	7008                	ld	a0,32(s0)
    e887081e:	c509                	beqz	a0,e8870828 <RTPJitterBufferFree+0x8c>
    e8870820:	4bc0b0ef          	jal	ra,e887bcdc <pthread_cond_destroy>
    e8870824:	02043023          	sd	zero,32(s0)
	ctx->decodeThreadPtr = NULL;
    e8870828:	00043823          	sd	zero,16(s0)
	TAILQ_INIT( &ctx->freeList );
    e887082c:	87a2                	mv	a5,s0
    e887082e:	6e97d00b          	sdib	zero,(a5),9,3
    e8870832:	e83c                	sd	a5,80(s0)
	TAILQ_INIT( &ctx->preparedList );
    e8870834:	87a2                	mv	a5,s0
    e8870836:	6eb7d00b          	sdib	zero,(a5),11,3
    e887083a:	f03c                	sd	a5,96(s0)
	TAILQ_INIT( &ctx->receivedList );
    e887083c:	87a2                	mv	a5,s0
    e887083e:	6ed7d00b          	sdib	zero,(a5),13,3
	dispatch_forget( &ctx->nodeLock );
    e8870842:	6008                	ld	a0,0(s0)
	TAILQ_INIT( &ctx->receivedList );
    e8870844:	f83c                	sd	a5,112(s0)
	dispatch_forget( &ctx->nodeLock );
    e8870846:	c509                	beqz	a0,e8870850 <RTPJitterBufferFree+0xb4>
    e8870848:	a08de0ef          	jal	ra,e884ea50 <dispatch_release>
    e887084c:	00043023          	sd	zero,0(s0)
	if( ctx->packets )
    e8870850:	603c                	ld	a5,64(s0)
		for( i = 0; i < ctx->nodesAllocated; ++i )
    e8870852:	4481                	li	s1,0
    e8870854:	60000993          	li	s3,1536
	if( ctx->packets )
    e8870858:	ebbd                	bnez	a5,e88708ce <RTPJitterBufferFree+0x132>
	ForgetMem( &ctx->packets );
    e887085a:	6028                	ld	a0,64(s0)
    e887085c:	ed3d                	bnez	a0,e88708da <RTPJitterBufferFree+0x13e>
	AudioConverterForget( &ctx->decoder );
    e887085e:	6468                	ld	a0,200(s0)
    e8870860:	c509                	beqz	a0,e887086a <RTPJitterBufferFree+0xce>
    e8870862:	838f20ef          	jal	ra,e886289a <AudioConverterDispose>
    e8870866:	0c043423          	sd	zero,200(s0)
	ForgetMem( &ctx->decodeBuffers );
    e887086a:	7068                	ld	a0,224(s0)
    e887086c:	c509                	beqz	a0,e8870876 <RTPJitterBufferFree+0xda>
    e887086e:	2930b0ef          	jal	ra,e887c300 <eLIBs_free>
    e8870872:	0e043023          	sd	zero,224(s0)
}
    e8870876:	70a2                	ld	ra,40(sp)
    e8870878:	6422                	ld	s0,8(sp)
    e887087a:	64c2                	ld	s1,16(sp)
    e887087c:	6962                	ld	s2,24(sp)
    e887087e:	7982                	ld	s3,32(sp)
    e8870880:	6145                	addi	sp,sp,48
    e8870882:	8082                	ret
		pthread_mutex_lock( ctx->decodeMutexPtr );
    e8870884:	7808                	ld	a0,48(s0)
		ctx->decodeDone = true;
    e8870886:	4785                	li	a5,1
    e8870888:	02f40c23          	sb	a5,56(s0)
		pthread_mutex_lock( ctx->decodeMutexPtr );
    e887088c:	2920b0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		pthread_cond_signal( ctx->decodeConditionPtr );
    e8870890:	7008                	ld	a0,32(s0)
    e8870892:	4720b0ef          	jal	ra,e887bd04 <pthread_cond_signal>
		pthread_mutex_unlock( ctx->decodeMutexPtr );
    e8870896:	7808                	ld	a0,48(s0)
    e8870898:	2ca0b0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		while(ctx->decodeThreadRun)
    e887089c:	01844783          	lbu	a5,24(s0)
    e88708a0:	dfa5                	beqz	a5,e8870818 <RTPJitterBufferFree+0x7c>
			Sleep(1);
    e88708a2:	4505                	li	a0,1
    e88708a4:	7720b0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e88708a8:	bfd5                	j	e887089c <RTPJitterBufferFree+0x100>
	pthread_mutex_forget( &ctx->decodeMutexPtr );
    e88708aa:	22a0b0ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
    e88708ae:	02043823          	sd	zero,48(s0)
    e88708b2:	b7ad                	j	e887081c <RTPJitterBufferFree+0x80>
			dispatch_forget( &ctx->packets[i].decodeLock );
    e88708b4:	03348933          	mul	s2,s1,s3
    e88708b8:	97ca                	add	a5,a5,s2
    e88708ba:	5e87b503          	ld	a0,1512(a5)
    e88708be:	c519                	beqz	a0,e88708cc <RTPJitterBufferFree+0x130>
    e88708c0:	990de0ef          	jal	ra,e884ea50 <dispatch_release>
    e88708c4:	603c                	ld	a5,64(s0)
    e88708c6:	97ca                	add	a5,a5,s2
    e88708c8:	5e07b423          	sd	zero,1512(a5)
		for( i = 0; i < ctx->nodesAllocated; ++i )
    e88708cc:	0485                	addi	s1,s1,1
    e88708ce:	07846703          	lwu	a4,120(s0)
    e88708d2:	603c                	ld	a5,64(s0)
    e88708d4:	fee4e0e3          	bltu	s1,a4,e88708b4 <RTPJitterBufferFree+0x118>
    e88708d8:	b749                	j	e887085a <RTPJitterBufferFree+0xbe>
	ForgetMem( &ctx->packets );
    e88708da:	2270b0ef          	jal	ra,e887c300 <eLIBs_free>
    e88708de:	04043023          	sd	zero,64(s0)
    e88708e2:	bfb5                	j	e887085e <RTPJitterBufferFree+0xc2>

00000000e88708e4 <RTPJitterBufferInit>:
{
    e88708e4:	7159                	addi	sp,sp,-112
    e88708e6:	eca6                	sd	s1,88(sp)
    e88708e8:	e4ce                	sd	s3,72(sp)
    e88708ea:	84ae                	mv	s1,a1
    e88708ec:	89b2                	mv	s3,a2
	memset( ctx, 0, sizeof( *ctx ) );
    e88708ee:	4581                	li	a1,0
    e88708f0:	12000613          	li	a2,288
{
    e88708f4:	f486                	sd	ra,104(sp)
    e88708f6:	f0a2                	sd	s0,96(sp)
    e88708f8:	e0d2                	sd	s4,64(sp)
    e88708fa:	842a                	mv	s0,a0
    e88708fc:	8a36                	mv	s4,a3
    e88708fe:	e8ca                	sd	s2,80(sp)
    e8870900:	fc56                	sd	s5,56(sp)
    e8870902:	f85a                	sd	s6,48(sp)
    e8870904:	f45e                	sd	s7,40(sp)
	memset( ctx, 0, sizeof( *ctx ) );
    e8870906:	28f0b0ef          	jal	ra,e887c394 <eLIBs_memset>
	ctx->nodeLock = dispatch_semaphore_create( 1 );
    e887090a:	4505                	li	a0,1
    e887090c:	dbcde0ef          	jal	ra,e884eec8 <dispatch_semaphore_create>
    e8870910:	e008                	sd	a0,0(s0)
	require_action( ctx->nodeLock, exit, err = kNoResourcesErr );
    e8870912:	22050c63          	beqz	a0,e8870b4a <RTPJitterBufferInit+0x266>
	require_action( inInputFormat, exit, err = kParamErr );
    e8870916:	22048e63          	beqz	s1,e8870b52 <RTPJitterBufferInit+0x26e>
	require_action( inInputFormat->mFramesPerPacket > 0 || inInputFormat->mFormatID == kAudioFormatLinearPCM, exit, err = kParamErr );
    e887091a:	0104a903          	lw	s2,16(s1)
    e887091e:	22091e63          	bnez	s2,e8870b5a <RTPJitterBufferInit+0x276>
    e8870922:	40d8                	lw	a4,4(s1)
    e8870924:	6c7067b7          	lui	a5,0x6c706
    e8870928:	36d78793          	addi	a5,a5,877 # 6c70636d <memcmp-0x7c0f9c93>
    e887092c:	22f71363          	bne	a4,a5,e8870b52 <RTPJitterBufferInit+0x26e>
	require_action( !inOutputFormat || inOutputFormat->mSampleRate == inInputFormat->mSampleRate, exit, err = kParamErr );
    e8870930:	08098063          	beqz	s3,e88709b0 <RTPJitterBufferInit+0xcc>
    e8870934:	0009a703          	lw	a4,0(s3)
    e8870938:	409c                	lw	a5,0(s1)
    e887093a:	20f71c63          	bne	a4,a5,e8870b52 <RTPJitterBufferInit+0x26e>
	require_action( !inOutputFormat || inOutputFormat->mChannelsPerFrame == inInputFormat->mChannelsPerFrame, exit, err = kParamErr );
    e887093e:	0189a703          	lw	a4,24(s3)
    e8870942:	4c9c                	lw	a5,24(s1)
    e8870944:	20f71763          	bne	a4,a5,e8870b52 <RTPJitterBufferInit+0x26e>
	framesPerPacket = inInputFormat->mFramesPerPacket > 0 ? inInputFormat->mFramesPerPacket : kAirPlaySamplesPerPacket_PCM;
    e8870948:	06090463          	beqz	s2,e88709b0 <RTPJitterBufferInit+0xcc>
	ctx->nodesAllocated = 2 * ( inBufferMs * ( (uint32_t) inInputFormat->mSampleRate ) + 500 * framesPerPacket ) / ( 1000 * framesPerPacket ) / kAirTunesMaxPayloadSizeUDP;
    e887094c:	1f400793          	li	a5,500
    e8870950:	032787bb          	mulw	a5,a5,s2
    e8870954:	4098                	lw	a4,0(s1)
    e8870956:	2547178b          	mulaw	a5,a4,s4
    e887095a:	3e800713          	li	a4,1000
    e887095e:	0327073b          	mulw	a4,a4,s2
    e8870962:	0017979b          	slliw	a5,a5,0x1
    e8870966:	02e7d6bb          	divuw	a3,a5,a4
	if( 50 > ctx->nodesAllocated )
    e887096a:	6749                	lui	a4,0x12
    e887096c:	93f70713          	addi	a4,a4,-1729 # 1193f <memcmp-0xe87ee6c1>
    e8870970:	04d77363          	bgeu	a4,a3,e88709b6 <RTPJitterBufferInit+0xd2>
	ctx->nodesAllocated = 2 * ( inBufferMs * ( (uint32_t) inInputFormat->mSampleRate ) + 500 * framesPerPacket ) / ( 1000 * framesPerPacket ) / kAirTunesMaxPayloadSizeUDP;
    e8870974:	5a000713          	li	a4,1440
    e8870978:	02e6d7bb          	divuw	a5,a3,a4
		ctx->nodesAllocated = 50; // ~400 ms at 352 samples per packet and 44100 Hz.
    e887097c:	dc3c                	sw	a5,120(s0)
    int len = nitems*size;
    e887097e:	5c3c                	lw	a5,120(s0)
    p = malloc(len);
    e8870980:	60000613          	li	a2,1536
    e8870984:	02f6063b          	mulw	a2,a2,a5
    e8870988:	8532                	mv	a0,a2
    e887098a:	e432                	sd	a2,8(sp)
    e887098c:	6c30a0ef          	jal	ra,e887b84e <my_malloc>
    e8870990:	8aaa                	mv	s5,a0
    memset(p,0,len);
    e8870992:	6622                	ld	a2,8(sp)
    e8870994:	4581                	li	a1,0
    e8870996:	1ff0b0ef          	jal	ra,e887c394 <eLIBs_memset>
	ctx->packets = (RTPPacketNode *) calloc( ctx->nodesAllocated, sizeof( *ctx->packets ) );
    e887099a:	05543023          	sd	s5,64(s0)
	require_action( ctx->packets, exit, err = kNoMemoryErr );
    e887099e:	000a9f63          	bnez	s5,e88709bc <RTPJitterBufferInit+0xd8>
    e88709a2:	74f9                	lui	s1,0xffffe
    e88709a4:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	if( err ) RTPJitterBufferFree( ctx );
    e88709a8:	8522                	mv	a0,s0
    e88709aa:	df3ff0ef          	jal	ra,e887079c <RTPJitterBufferFree>
	return( err );
    e88709ae:	aa31                	j	e8870aca <RTPJitterBufferInit+0x1e6>
	framesPerPacket = inInputFormat->mFramesPerPacket > 0 ? inInputFormat->mFramesPerPacket : kAirPlaySamplesPerPacket_PCM;
    e88709b0:	16000913          	li	s2,352
    e88709b4:	bf61                	j	e887094c <RTPJitterBufferInit+0x68>
		ctx->nodesAllocated = 50; // ~400 ms at 352 samples per packet and 44100 Hz.
    e88709b6:	03200793          	li	a5,50
    e88709ba:	b7c9                	j	e887097c <RTPJitterBufferInit+0x98>
	TAILQ_INIT( &ctx->freeList );
    e88709bc:	8aa2                	mv	s5,s0
    e88709be:	6e9ad00b          	sdib	zero,(s5),9,3
    e88709c2:	05543823          	sd	s5,80(s0)
	TAILQ_INIT( &ctx->preparedList );
    e88709c6:	87a2                	mv	a5,s0
    e88709c8:	6eb7d00b          	sdib	zero,(a5),11,3
    e88709cc:	f03c                	sd	a5,96(s0)
	TAILQ_INIT( &ctx->receivedList );
    e88709ce:	87a2                	mv	a5,s0
    e88709d0:	6ed7d00b          	sdib	zero,(a5),13,3
	ctx->inputFormat			= *inInputFormat;
    e88709d4:	08040b13          	addi	s6,s0,128
    e88709d8:	02400613          	li	a2,36
    e88709dc:	85a6                	mv	a1,s1
	TAILQ_INIT( &ctx->receivedList );
    e88709de:	f83c                	sd	a5,112(s0)
	ctx->inputFormat			= *inInputFormat;
    e88709e0:	855a                	mv	a0,s6
    e88709e2:	e868f0ef          	jal	ra,e8800068 <memcpy>
	ctx->inputFormat.mReserved	= 0;
    e88709e6:	0a042023          	sw	zero,160(s0)
	ctx->outputFormat			= inOutputFormat ? *inOutputFormat : *inInputFormat;
    e88709ea:	0a440713          	addi	a4,s0,164
    e88709ee:	02400613          	li	a2,36
    e88709f2:	85ce                	mv	a1,s3
    e88709f4:	00099363          	bnez	s3,e88709fa <RTPJitterBufferInit+0x116>
    e88709f8:	85a6                	mv	a1,s1
    e88709fa:	853a                	mv	a0,a4
    e88709fc:	e6c8f0ef          	jal	ra,e8800068 <memcpy>
    e8870a00:	872a                	mv	a4,a0
	ctx->buffering				= true;
    e8870a02:	4785                	li	a5,1
    e8870a04:	0ef40ca3          	sb	a5,249(s0)
	ctx->outputFormat.mReserved	= 0;
    e8870a08:	0c042223          	sw	zero,196(s0)
	ctx->bufferMs				= inBufferMs;
    e8870a0c:	0f442423          	sw	s4,232(s0)
    const unsigned char *c1=v1,*c2=v2;
    e8870a10:	87da                	mv	a5,s6
    while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
    e8870a12:	0007c603          	lbu	a2,0(a5)
    e8870a16:	0247c683          	lbu	a3,36(a5)
    e8870a1a:	02d60763          	beq	a2,a3,e8870a48 <RTPJitterBufferInit+0x164>
		err = AudioConverterNew( &ctx->inputFormat, &ctx->outputFormat, &ctx->decoder );
    e8870a1e:	0c840613          	addi	a2,s0,200
    e8870a22:	85ba                	mv	a1,a4
    e8870a24:	855a                	mv	a0,s6
    e8870a26:	da7f10ef          	jal	ra,e88627cc <AudioConverterNew>
    e8870a2a:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e8870a2c:	fd35                	bnez	a0,e88709a8 <RTPJitterBufferInit+0xc4>
		ctx->decodeBuffers = malloc( framesPerPacket * ctx->outputFormat.mBytesPerFrame * ctx->nodesAllocated );
    e8870a2e:	0b842503          	lw	a0,184(s0)
    e8870a32:	5c3c                	lw	a5,120(s0)
    e8870a34:	02f5053b          	mulw	a0,a0,a5
    e8870a38:	0325053b          	mulw	a0,a0,s2
    e8870a3c:	7c05350b          	extu	a0,a0,31,0
    e8870a40:	60f0a0ef          	jal	ra,e887b84e <my_malloc>
    e8870a44:	f068                	sd	a0,224(s0)
    e8870a46:	a021                	j	e8870a4e <RTPJitterBufferInit+0x16a>
    e8870a48:	0785                	addi	a5,a5,1
    e8870a4a:	fce794e3          	bne	a5,a4,e8870a12 <RTPJitterBufferInit+0x12e>
	err = pthread_mutex_init( &ctx->decodeMutex, NULL );
    e8870a4e:	02840993          	addi	s3,s0,40
    e8870a52:	4581                	li	a1,0
    e8870a54:	854e                	mv	a0,s3
    e8870a56:	0240b0ef          	jal	ra,e887ba7a <pthread_mutex_init>
    e8870a5a:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e8870a5c:	f531                	bnez	a0,e88709a8 <RTPJitterBufferInit+0xc4>
	ctx->decodeMutexPtr = &ctx->decodeMutex;
    e8870a5e:	03343823          	sd	s3,48(s0)
	err = pthread_cond_init( &ctx->decodeCondition, NULL );
    e8870a62:	01c40993          	addi	s3,s0,28
    e8870a66:	4581                	li	a1,0
    e8870a68:	854e                	mv	a0,s3
    e8870a6a:	24a0b0ef          	jal	ra,e887bcb4 <pthread_cond_init>
    e8870a6e:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e8870a70:	fd05                	bnez	a0,e88709a8 <RTPJitterBufferInit+0xc4>
	ctx->decodeConditionPtr = &ctx->decodeCondition;
    e8870a72:	03343023          	sd	s3,32(s0)
	pthread_attr_init(&attr);
    e8870a76:	0828                	addi	a0,sp,24
    e8870a78:	79b0a0ef          	jal	ra,e887ba12 <pthread_attr_init>
	err = pthread_create( &ctx->decodeThread, &attr, _RTPJitterBufferDecodeThread, ctx );
    e8870a7c:	00840993          	addi	s3,s0,8
	pthread_attr_setpriority(&attr,2);
    e8870a80:	4589                	li	a1,2
    e8870a82:	0828                	addi	a0,sp,24
    e8870a84:	7b30a0ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
	err = pthread_create( &ctx->decodeThread, &attr, _RTPJitterBufferDecodeThread, ctx );
    e8870a88:	86a2                	mv	a3,s0
    e8870a8a:	fffff617          	auipc	a2,0xfffff
    e8870a8e:	0e660613          	addi	a2,a2,230 # e886fb70 <_RTPJitterBufferDecodeThread>
    e8870a92:	082c                	addi	a1,sp,24
    e8870a94:	854e                	mv	a0,s3
    e8870a96:	7af0a0ef          	jal	ra,e887ba44 <pthread_create>
    e8870a9a:	84aa                	mv	s1,a0
	pthread_attr_destroy(&attr);
    e8870a9c:	0828                	addi	a0,sp,24
    e8870a9e:	7890a0ef          	jal	ra,e887ba26 <pthread_attr_destroy>
	require_noerr( err, exit );
    e8870aa2:	f00493e3          	bnez	s1,e88709a8 <RTPJitterBufferInit+0xc4>
	ctx->decodeThreadPtr = &ctx->decodeThread;
    e8870aa6:	01343823          	sd	s3,16(s0)
	for( i = 0; i < ctx->nodesAllocated; ++i )
    e8870aaa:	4a01                	li	s4,0
    e8870aac:	60000b93          	li	s7,1536
    e8870ab0:	07846783          	lwu	a5,120(s0)
    e8870ab4:	02fa6763          	bltu	s4,a5,e8870ae2 <RTPJitterBufferInit+0x1fe>
	ctx->logQueue = dispatch_queue_create( "com.apple.airplay.jitterbufferlog", NULL );
    e8870ab8:	4581                	li	a1,0
    e8870aba:	0005b517          	auipc	a0,0x5b
    e8870abe:	1be50513          	addi	a0,a0,446 # e88cbc78 <__PRETTY_FUNCTION__.10655+0x298>
    e8870ac2:	abcdf0ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e8870ac6:	10a43c23          	sd	a0,280(s0)
}
    e8870aca:	70a6                	ld	ra,104(sp)
    e8870acc:	7406                	ld	s0,96(sp)
    e8870ace:	8526                	mv	a0,s1
    e8870ad0:	6946                	ld	s2,80(sp)
    e8870ad2:	64e6                	ld	s1,88(sp)
    e8870ad4:	69a6                	ld	s3,72(sp)
    e8870ad6:	6a06                	ld	s4,64(sp)
    e8870ad8:	7ae2                	ld	s5,56(sp)
    e8870ada:	7b42                	ld	s6,48(sp)
    e8870adc:	7ba2                	ld	s7,40(sp)
    e8870ade:	6165                	addi	sp,sp,112
    e8870ae0:	8082                	ret
		TAILQ_INSERT_HEAD( &ctx->freeList, &ctx->packets[ i ], list );
    e8870ae2:	037a09b3          	mul	s3,s4,s7
    e8870ae6:	603c                	ld	a5,64(s0)
    e8870ae8:	6438                	ld	a4,72(s0)
    e8870aea:	6137d70b          	srd	a4,a5,s3,0
    e8870aee:	603c                	ld	a5,64(s0)
    e8870af0:	cb31                	beqz	a4,e8870b44 <RTPJitterBufferInit+0x260>
    e8870af2:	6438                	ld	a4,72(s0)
    e8870af4:	97ce                	add	a5,a5,s3
    e8870af6:	e71c                	sd	a5,8(a4)
    e8870af8:	603c                	ld	a5,64(s0)
    e8870afa:	97ce                	add	a5,a5,s3
    e8870afc:	e43c                	sd	a5,72(s0)
    e8870afe:	0157b423          	sd	s5,8(a5)
		ctx->packets[ i ].jitterBuffer = ctx;
    e8870b02:	603c                	ld	a5,64(s0)
    e8870b04:	97ce                	add	a5,a5,s3
    e8870b06:	5e87bc23          	sd	s0,1528(a5)
		if( ctx->decodeBuffers )
    e8870b0a:	707c                	ld	a5,224(s0)
    e8870b0c:	cb95                	beqz	a5,e8870b40 <RTPJitterBufferInit+0x25c>
			ctx->packets[ i ].decodeLock = dispatch_semaphore_create( 1 );
    e8870b0e:	04043b03          	ld	s6,64(s0)
    e8870b12:	4505                	li	a0,1
    e8870b14:	bb4de0ef          	jal	ra,e884eec8 <dispatch_semaphore_create>
    e8870b18:	9b4e                	add	s6,s6,s3
    e8870b1a:	5eab3423          	sd	a0,1512(s6)
			require_action( ctx->packets[ i ].decodeLock, exit, err = kNoMemoryErr );
    e8870b1e:	603c                	ld	a5,64(s0)
    e8870b20:	99be                	add	s3,s3,a5
    e8870b22:	5e89b783          	ld	a5,1512(s3)
    e8870b26:	e6078ee3          	beqz	a5,e88709a2 <RTPJitterBufferInit+0xbe>
			ctx->packets[ i ].decodeBuffer = ctx->decodeBuffers + ( framesPerPacket * ctx->outputFormat.mBytesPerFrame * i );
    e8870b2a:	0b842783          	lw	a5,184(s0)
    e8870b2e:	7078                	ld	a4,224(s0)
    e8870b30:	032787bb          	mulw	a5,a5,s2
    e8870b34:	7c07b78b          	extu	a5,a5,31,0
    e8870b38:	2147970b          	mula	a4,a5,s4
    e8870b3c:	5ee9b823          	sd	a4,1520(s3)
	for( i = 0; i < ctx->nodesAllocated; ++i )
    e8870b40:	0a05                	addi	s4,s4,1
    e8870b42:	b7bd                	j	e8870ab0 <RTPJitterBufferInit+0x1cc>
		TAILQ_INSERT_HEAD( &ctx->freeList, &ctx->packets[ i ], list );
    e8870b44:	97ce                	add	a5,a5,s3
    e8870b46:	e83c                	sd	a5,80(s0)
    e8870b48:	bf45                	j	e8870af8 <RTPJitterBufferInit+0x214>
	require_action( ctx->nodeLock, exit, err = kNoResourcesErr );
    e8870b4a:	74f9                	lui	s1,0xffffe
    e8870b4c:	5b748493          	addi	s1,s1,1463 # ffffffffffffe5b7 <__DRAM0_INF_BASE+0xffffffff0000e5b7>
    e8870b50:	bda1                	j	e88709a8 <RTPJitterBufferInit+0xc4>
	require_action( inInputFormat, exit, err = kParamErr );
    e8870b52:	74f9                	lui	s1,0xffffe
    e8870b54:	5cf48493          	addi	s1,s1,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8870b58:	bd81                	j	e88709a8 <RTPJitterBufferInit+0xc4>
	require_action( !inOutputFormat || inOutputFormat->mSampleRate == inInputFormat->mSampleRate, exit, err = kParamErr );
    e8870b5a:	de0989e3          	beqz	s3,e887094c <RTPJitterBufferInit+0x68>
    e8870b5e:	bbd9                	j	e8870934 <RTPJitterBufferInit+0x50>

00000000e8870b60 <RTPJitterBufferGetFreeNode>:
{
    e8870b60:	1101                	addi	sp,sp,-32
    e8870b62:	f891540b          	sdd	s0,s1,(sp),0,4
    e8870b66:	e84a                	sd	s2,16(sp)
    e8870b68:	ec06                	sd	ra,24(sp)
    e8870b6a:	84aa                	mv	s1,a0
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_GETFREENODE_LOCK_ENTER );
    e8870b6c:	6108                	ld	a0,0(a0)
{
    e8870b6e:	892e                	mv	s2,a1
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_GETFREENODE_LOCK_ENTER );
    e8870b70:	55fd                	li	a1,-1
    e8870b72:	cd8de0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
	node = TAILQ_FIRST( &ctx->freeList );
    e8870b76:	64bc                	ld	a5,72(s1)
	if( node )
    e8870b78:	c79d                	beqz	a5,e8870ba6 <RTPJitterBufferGetFreeNode+0x46>
		TAILQ_REMOVE( &ctx->freeList, node, list );
    e8870b7a:	f8e7c68b          	ldd	a3,a4,(a5),0,4
    e8870b7e:	c295                	beqz	a3,e8870ba2 <RTPJitterBufferGetFreeNode+0x42>
    e8870b80:	e698                	sd	a4,8(a3)
    e8870b82:	6798                	ld	a4,8(a5)
    e8870b84:	6394                	ld	a3,0(a5)
		err = kNoErr;
    e8870b86:	4401                	li	s0,0
		TAILQ_REMOVE( &ctx->freeList, node, list );
    e8870b88:	e314                	sd	a3,0(a4)
	*outNode = node;
    e8870b8a:	00f93023          	sd	a5,0(s2)
	RTPJitterBufferUnlock( ctx, AIRPLAY_SIGNPOST_JB_GETFREENODE_LOCK_EXIT );
    e8870b8e:	6088                	ld	a0,0(s1)
    e8870b90:	b94de0ef          	jal	ra,e884ef24 <dispatch_semaphore_signal>
}
    e8870b94:	6942                	ld	s2,16(sp)
    e8870b96:	8522                	mv	a0,s0
    e8870b98:	60e2                	ld	ra,24(sp)
    e8870b9a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8870b9e:	6105                	addi	sp,sp,32
    e8870ba0:	8082                	ret
		TAILQ_REMOVE( &ctx->freeList, node, list );
    e8870ba2:	e8b8                	sd	a4,80(s1)
    e8870ba4:	bff9                	j	e8870b82 <RTPJitterBufferGetFreeNode+0x22>
		err = kNoSpaceErr;
    e8870ba6:	7479                	lui	s0,0xffffe
    e8870ba8:	59540413          	addi	s0,s0,1429 # ffffffffffffe595 <__DRAM0_INF_BASE+0xffffffff0000e595>
    e8870bac:	bff9                	j	e8870b8a <RTPJitterBufferGetFreeNode+0x2a>

00000000e8870bae <RTPJitterBufferPutFreeNode>:
{
    e8870bae:	1101                	addi	sp,sp,-32
    e8870bb0:	e422                	sd	s0,8(sp)
    e8870bb2:	e826                	sd	s1,16(sp)
    e8870bb4:	ec06                	sd	ra,24(sp)
    e8870bb6:	842a                	mv	s0,a0
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_PUTFREENODE_LOCK_ENTER );
    e8870bb8:	6108                	ld	a0,0(a0)
{
    e8870bba:	84ae                	mv	s1,a1
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_PUTFREENODE_LOCK_ENTER );
    e8870bbc:	55fd                	li	a1,-1
    e8870bbe:	c8cde0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
	TAILQ_INSERT_HEAD( &ctx->freeList, inNode, list );
    e8870bc2:	643c                	ld	a5,72(s0)
    e8870bc4:	e09c                	sd	a5,0(s1)
    e8870bc6:	cf89                	beqz	a5,e8870be0 <RTPJitterBufferPutFreeNode+0x32>
    e8870bc8:	e784                	sd	s1,8(a5)
    e8870bca:	87a2                	mv	a5,s0
    e8870bcc:	6e97d48b          	sdib	s1,(a5),9,3
    e8870bd0:	e49c                	sd	a5,8(s1)
	RTPJitterBufferUnlock( ctx, AIRPLAY_SIGNPOST_JB_PUTFREENODE_LOCK_EXIT );
    e8870bd2:	6008                	ld	a0,0(s0)
}
    e8870bd4:	6422                	ld	s0,8(sp)
    e8870bd6:	60e2                	ld	ra,24(sp)
    e8870bd8:	64c2                	ld	s1,16(sp)
    e8870bda:	6105                	addi	sp,sp,32
	RTPJitterBufferUnlock( ctx, AIRPLAY_SIGNPOST_JB_PUTFREENODE_LOCK_EXIT );
    e8870bdc:	b48de06f          	j	e884ef24 <dispatch_semaphore_signal>
	TAILQ_INSERT_HEAD( &ctx->freeList, inNode, list );
    e8870be0:	e824                	sd	s1,80(s0)
    e8870be2:	b7e5                	j	e8870bca <RTPJitterBufferPutFreeNode+0x1c>

00000000e8870be4 <RTPJitterBufferPutBusyNode>:
{
    e8870be4:	1101                	addi	sp,sp,-32
    e8870be6:	f891540b          	sdd	s0,s1,(sp),0,4
    e8870bea:	ec06                	sd	ra,24(sp)
    e8870bec:	e84a                	sd	s2,16(sp)
    e8870bee:	842a                	mv	s0,a0
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_PUTBUSYNODE_LOCK_ENTER );
    e8870bf0:	6108                	ld	a0,0(a0)
	uint32_t const		ts = inNode->pkt.pkt.rtp.header.ts;
    e8870bf2:	0145a903          	lw	s2,20(a1)
{
    e8870bf6:	84ae                	mv	s1,a1
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_PUTBUSYNODE_LOCK_ENTER );
    e8870bf8:	55fd                	li	a1,-1
    e8870bfa:	c50de0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
	if( ctx->nodesUsed >= ctx->nodesAllocated - 3 )
    e8870bfe:	5c3c                	lw	a5,120(s0)
    e8870c00:	5c78                	lw	a4,124(s0)
    e8870c02:	37f5                	addiw	a5,a5,-3
    e8870c04:	00f76b63          	bltu	a4,a5,e8870c1a <RTPJitterBufferPutBusyNode+0x36>
		_RTPJitterBufferDiscardExcess( ctx );
    e8870c08:	8522                	mv	a0,s0
    e8870c0a:	99cff0ef          	jal	ra,e886fda6 <_RTPJitterBufferDiscardExcess>
		if( !TAILQ_EMPTY( &ctx->preparedList ) )
    e8870c0e:	6c3c                	ld	a5,88(s0)
    e8870c10:	e391                	bnez	a5,e8870c14 <RTPJitterBufferPutBusyNode+0x30>
			node = TAILQ_FIRST( &ctx->receivedList );
    e8870c12:	743c                	ld	a5,104(s0)
		ctx->nextTS = node->pkt.pkt.rtp.header.ts;
    e8870c14:	4bdc                	lw	a5,20(a5)
    e8870c16:	0ef42623          	sw	a5,236(s0)
	TAILQ_FOREACH_REVERSE( node, &ctx->receivedList, RTPPacketNodeList, list)
    e8870c1a:	783c                	ld	a5,112(s0)
    e8870c1c:	679c                	ld	a5,8(a5)
    e8870c1e:	639c                	ld	a5,0(a5)
    e8870c20:	eb8d                	bnez	a5,e8870c52 <RTPJitterBufferPutBusyNode+0x6e>
		node = TAILQ_LAST( &ctx->preparedList, RTPPacketNodeList );
    e8870c22:	703c                	ld	a5,96(s0)
    e8870c24:	679c                	ld	a5,8(a5)
    e8870c26:	639c                	ld	a5,0(a5)
		require_action( !node || Mod32_LT( node->pkt.pkt.rtp.header.ts, ts ), exit,
    e8870c28:	cf85                	beqz	a5,e8870c60 <RTPJitterBufferPutBusyNode+0x7c>
    e8870c2a:	4bdc                	lw	a5,20(a5)
    e8870c2c:	4127873b          	subw	a4,a5,s2
    e8870c30:	02074863          	bltz	a4,e8870c60 <RTPJitterBufferPutBusyNode+0x7c>
    e8870c34:	74f9                	lui	s1,0xffffe
    e8870c36:	0b278b63          	beq	a5,s2,e8870cec <RTPJitterBufferPutBusyNode+0x108>
    e8870c3a:	58f48493          	addi	s1,s1,1423 # ffffffffffffe58f <__DRAM0_INF_BASE+0xffffffff0000e58f>
	RTPJitterBufferUnlock( ctx, AIRPLAY_SIGNPOST_JB_PUTBUSYNODE_LOCK_EXIT );
    e8870c3e:	6008                	ld	a0,0(s0)
    e8870c40:	ae4de0ef          	jal	ra,e884ef24 <dispatch_semaphore_signal>
}
    e8870c44:	6942                	ld	s2,16(sp)
    e8870c46:	8526                	mv	a0,s1
    e8870c48:	60e2                	ld	ra,24(sp)
    e8870c4a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8870c4e:	6105                	addi	sp,sp,32
    e8870c50:	8082                	ret
		if( Mod32_LE( node->pkt.pkt.rtp.header.ts, ts ) ) break;
    e8870c52:	4bd8                	lw	a4,20(a5)
    e8870c54:	412706bb          	subw	a3,a4,s2
    e8870c58:	08d05763          	blez	a3,e8870ce6 <RTPJitterBufferPutBusyNode+0x102>
	TAILQ_FOREACH_REVERSE( node, &ctx->receivedList, RTPPacketNodeList, list)
    e8870c5c:	679c                	ld	a5,8(a5)
    e8870c5e:	bf7d                	j	e8870c1c <RTPJitterBufferPutBusyNode+0x38>
		TAILQ_INSERT_HEAD( &ctx->receivedList, inNode, list );
    e8870c60:	743c                	ld	a5,104(s0)
    e8870c62:	e09c                	sd	a5,0(s1)
    e8870c64:	c7bd                	beqz	a5,e8870cd2 <RTPJitterBufferPutBusyNode+0xee>
    e8870c66:	e784                	sd	s1,8(a5)
    e8870c68:	87a2                	mv	a5,s0
    e8870c6a:	6ed7d48b          	sdib	s1,(a5),13,3
		TAILQ_INSERT_AFTER( &ctx->receivedList, node, inNode, list );
    e8870c6e:	e49c                	sd	a5,8(s1)
	ctx->nodesUsed += 1;
    e8870c70:	5c7c                	lw	a5,124(s0)
	pthread_mutex_lock( ctx->decodeMutexPtr );
    e8870c72:	7808                	ld	a0,48(s0)
	err = kNoErr;
    e8870c74:	4481                	li	s1,0
	ctx->nodesUsed += 1;
    e8870c76:	2785                	addiw	a5,a5,1
    e8870c78:	dc7c                	sw	a5,124(s0)
	pthread_mutex_lock( ctx->decodeMutexPtr );
    e8870c7a:	6a50a0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	pthread_cond_signal( ctx->decodeConditionPtr );
    e8870c7e:	7008                	ld	a0,32(s0)
    e8870c80:	0840b0ef          	jal	ra,e887bd04 <pthread_cond_signal>
	pthread_mutex_unlock( ctx->decodeMutexPtr );
    e8870c84:	7808                	ld	a0,48(s0)
    e8870c86:	6dd0a0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	if( ctx->buffering && ( ctx->startTicks == 0 ) )
    e8870c8a:	0f944783          	lbu	a5,249(s0)
    e8870c8e:	dbc5                	beqz	a5,e8870c3e <RTPJitterBufferPutBusyNode+0x5a>
    e8870c90:	787c                	ld	a5,240(s0)
    e8870c92:	f7d5                	bnez	a5,e8870c3e <RTPJitterBufferPutBusyNode+0x5a>
		ctx->startTicks = UpTicks() + MillisecondsToUpTicks( ctx->bufferMs );
    e8870c94:	d30f00ef          	jal	ra,e88611c4 <UpTicks>
    e8870c98:	84aa                	mv	s1,a0
    e8870c9a:	0e846503          	lwu	a0,232(s0)
    e8870c9e:	e00f00ef          	jal	ra,e886129e <MillisecondsToUpTicks>
    e8870ca2:	9526                	add	a0,a0,s1
			ap_jitter_label( ctx ), ctx->bufferMs );
    e8870ca4:	11043683          	ld	a3,272(s0)
		ctx->startTicks = UpTicks() + MillisecondsToUpTicks( ctx->bufferMs );
    e8870ca8:	f868                	sd	a0,240(s0)
		RTPJitterBufferLog( ctx, kLogLevelInfo | kLogLevelFlagDontRateLimit, "%s: Starting audio in %u ms\n",
    e8870caa:	e689                	bnez	a3,e8870cb4 <RTPJitterBufferPutBusyNode+0xd0>
    e8870cac:	0005b697          	auipc	a3,0x5b
    e8870cb0:	f6c68693          	addi	a3,a3,-148 # e88cbc18 <__PRETTY_FUNCTION__.10655+0x238>
    e8870cb4:	0e842703          	lw	a4,232(s0)
    e8870cb8:	004005b7          	lui	a1,0x400
    e8870cbc:	0005b617          	auipc	a2,0x5b
    e8870cc0:	fe460613          	addi	a2,a2,-28 # e88cbca0 <__PRETTY_FUNCTION__.10655+0x2c0>
    e8870cc4:	02858593          	addi	a1,a1,40 # 400028 <memcmp-0xe83fffd8>
    e8870cc8:	8522                	mv	a0,s0
    e8870cca:	e27fe0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
	err = kNoErr;
    e8870cce:	4481                	li	s1,0
    e8870cd0:	b7bd                	j	e8870c3e <RTPJitterBufferPutBusyNode+0x5a>
		TAILQ_INSERT_HEAD( &ctx->receivedList, inNode, list );
    e8870cd2:	f824                	sd	s1,112(s0)
    e8870cd4:	bf51                	j	e8870c68 <RTPJitterBufferPutBusyNode+0x84>
		TAILQ_INSERT_AFTER( &ctx->receivedList, node, inNode, list );
    e8870cd6:	6398                	ld	a4,0(a5)
    e8870cd8:	e098                	sd	a4,0(s1)
    e8870cda:	c701                	beqz	a4,e8870ce2 <RTPJitterBufferPutBusyNode+0xfe>
    e8870cdc:	e704                	sd	s1,8(a4)
    e8870cde:	e384                	sd	s1,0(a5)
    e8870ce0:	b779                	j	e8870c6e <RTPJitterBufferPutBusyNode+0x8a>
    e8870ce2:	f824                	sd	s1,112(s0)
    e8870ce4:	bfed                	j	e8870cde <RTPJitterBufferPutBusyNode+0xfa>
		require_action( !Mod32_EQ( node->pkt.pkt.rtp.header.ts, ts ), exit, err = kDuplicateErr );
    e8870ce6:	ff2718e3          	bne	a4,s2,e8870cd6 <RTPJitterBufferPutBusyNode+0xf2>
		require_action( !node || Mod32_LT( node->pkt.pkt.rtp.header.ts, ts ), exit,
    e8870cea:	74f9                	lui	s1,0xffffe
    e8870cec:	5b648493          	addi	s1,s1,1462 # ffffffffffffe5b6 <__DRAM0_INF_BASE+0xffffffff0000e5b6>
    e8870cf0:	b7b9                	j	e8870c3e <RTPJitterBufferPutBusyNode+0x5a>

00000000e8870cf2 <RTPJitterBufferRead>:
//===========================================================================================================================
//	RTPJitterBufferRead
//===========================================================================================================================

OSStatus	RTPJitterBufferRead( RTPJitterBufferContext *ctx, void *inBuffer, size_t inLen )
{
    e8870cf2:	7175                	addi	sp,sp,-144
    e8870cf4:	e122                	sd	s0,128(sp)
    e8870cf6:	f0d2                	sd	s4,96(sp)
    e8870cf8:	e506                	sd	ra,136(sp)
    e8870cfa:	fca6                	sd	s1,120(sp)
    e8870cfc:	f8ca                	sd	s2,112(sp)
    e8870cfe:	f4ce                	sd	s3,104(sp)
    e8870d00:	ecd6                	sd	s5,88(sp)
    e8870d02:	e8da                	sd	s6,80(sp)
    e8870d04:	e4de                	sd	s7,72(sp)
    e8870d06:	e0e2                	sd	s8,64(sp)
    e8870d08:	fc66                	sd	s9,56(sp)
    e8870d0a:	f86a                	sd	s10,48(sp)
    e8870d0c:	f46e                	sd	s11,40(sp)
	uint32_t const		lenTS = (uint32_t)( inLen / ctx->outputFormat.mBytesPerFrame );
    e8870d0e:	0b856903          	lwu	s2,184(a0)
{
    e8870d12:	842a                	mv	s0,a0
	uint32_t			nowTS, limTS, srcTS, endTS, delta;
	size_t				len;
	Boolean				cap;
	uint64_t			ticks;
	
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_READ_LOCK_ENTER );
    e8870d14:	6108                	ld	a0,0(a0)
	uint32_t const		lenTS = (uint32_t)( inLen / ctx->outputFormat.mBytesPerFrame );
    e8870d16:	03265933          	divu	s2,a2,s2
{
    e8870d1a:	8a2e                	mv	s4,a1
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_READ_LOCK_ENTER );
    e8870d1c:	55fd                	li	a1,-1
	uint32_t const		lenTS = (uint32_t)( inLen / ctx->outputFormat.mBytesPerFrame );
    e8870d1e:	e832                	sd	a2,16(sp)
	RTPJitterBufferLock( ctx, AIRPLAY_SIGNPOST_JB_READ_LOCK_ENTER );
    e8870d20:	b2ade0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
	
	if( ctx->buffering )
    e8870d24:	0f944783          	lbu	a5,249(s0)
	uint32_t const		lenTS = (uint32_t)( inLen / ctx->outputFormat.mBytesPerFrame );
    e8870d28:	2901                	sext.w	s2,s2
	if( ctx->buffering )
    e8870d2a:	18078563          	beqz	a5,e8870eb4 <RTPJitterBufferRead+0x1c2>
	{
		ticks = UpTicks();
    e8870d2e:	c96f00ef          	jal	ra,e88611c4 <UpTicks>
    e8870d32:	89aa                	mv	s3,a0
		if( ( ctx->startTicks == 0 ) || ( ticks < ctx->startTicks ) )
    e8870d34:	787c                	ld	a5,240(s0)
    e8870d36:	6642                	ld	a2,16(sp)
    e8870d38:	c399                	beqz	a5,e8870d3e <RTPJitterBufferRead+0x4c>
    e8870d3a:	02f57963          	bgeu	a0,a5,e8870d6c <RTPJitterBufferRead+0x7a>
		{
			memset( inBuffer, 0, inLen );
    e8870d3e:	4581                	li	a1,0
    e8870d40:	8552                	mv	a0,s4
    e8870d42:	6520b0ef          	jal	ra,e887c394 <eLIBs_memset>
		nowTS = limTS;
	}
	ctx->nextTS = nowTS;
	
exit:
	RTPJitterBufferUnlock( ctx, AIRPLAY_SIGNPOST_JB_READ_LOCK_EXIT );
    e8870d46:	6008                	ld	a0,0(s0)
    e8870d48:	9dcde0ef          	jal	ra,e884ef24 <dispatch_semaphore_signal>
	return( kNoErr );
}
    e8870d4c:	640a                	ld	s0,128(sp)
    e8870d4e:	60aa                	ld	ra,136(sp)
    e8870d50:	74e6                	ld	s1,120(sp)
    e8870d52:	7946                	ld	s2,112(sp)
    e8870d54:	79a6                	ld	s3,104(sp)
    e8870d56:	7a06                	ld	s4,96(sp)
    e8870d58:	6ae6                	ld	s5,88(sp)
    e8870d5a:	6b46                	ld	s6,80(sp)
    e8870d5c:	6ba6                	ld	s7,72(sp)
    e8870d5e:	6c06                	ld	s8,64(sp)
    e8870d60:	7ce2                	ld	s9,56(sp)
    e8870d62:	7d42                	ld	s10,48(sp)
    e8870d64:	7da2                	ld	s11,40(sp)
    e8870d66:	4501                	li	a0,0
    e8870d68:	6149                	addi	sp,sp,144
    e8870d6a:	8082                	ret
		node = TAILQ_EMPTY( &ctx->preparedList) ? TAILQ_FIRST( &ctx->receivedList ) : TAILQ_FIRST( &ctx->preparedList );
    e8870d6c:	6c24                	ld	s1,88(s0)
    e8870d6e:	e481                	bnez	s1,e8870d76 <RTPJitterBufferRead+0x84>
    e8870d70:	7424                	ld	s1,104(s0)
			nowTS = 0;
    e8870d72:	4c01                	li	s8,0
		if( node )
    e8870d74:	c0a5                	beqz	s1,e8870dd4 <RTPJitterBufferRead+0xe2>
			_RTPJitterBufferDiscardExcess( ctx );
    e8870d76:	8522                	mv	a0,s0
    e8870d78:	82eff0ef          	jal	ra,e886fda6 <_RTPJitterBufferDiscardExcess>
			nowTS = node->pkt.pkt.rtp.header.ts;
    e8870d7c:	0144ac03          	lw	s8,20(s1)
				ap_jitter_label( ctx ), RTPJitterBufferBufferedMs( ctx ), _RTPJitterBufferBufferedSamples( ctx, false ),
    e8870d80:	11043683          	ld	a3,272(s0)
			ctx->buffering = false;
    e8870d84:	0e040ca3          	sb	zero,249(s0)
			RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "%s: Buffering complete, %d ms (%d), %llu ticks late\n",
    e8870d88:	e689                	bnez	a3,e8870d92 <RTPJitterBufferRead+0xa0>
    e8870d8a:	0005b697          	auipc	a3,0x5b
    e8870d8e:	e8e68693          	addi	a3,a3,-370 # e88cbc18 <__PRETTY_FUNCTION__.10655+0x238>
				ap_jitter_label( ctx ), RTPJitterBufferBufferedMs( ctx ), _RTPJitterBufferBufferedSamples( ctx, false ),
    e8870d92:	4581                	li	a1,0
    e8870d94:	8522                	mv	a0,s0
    e8870d96:	e836                	sd	a3,16(sp)
    e8870d98:	cbbfe0ef          	jal	ra,e886fa52 <_RTPJitterBufferBufferedSamples>
    e8870d9c:	0005079b          	sext.w	a5,a0
    e8870da0:	08042603          	lw	a2,128(s0)
    e8870da4:	3e800593          	li	a1,1000
			RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "%s: Buffering complete, %d ms (%d), %llu ticks late\n",
    e8870da8:	0f043803          	ld	a6,240(s0)
				ap_jitter_label( ctx ), RTPJitterBufferBufferedMs( ctx ), _RTPJitterBufferBufferedSamples( ctx, false ),
    e8870dac:	0016571b          	srliw	a4,a2,0x1
    e8870db0:	24f5970b          	mulaw	a4,a1,a5
			RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit, "%s: Buffering complete, %d ms (%d), %llu ticks late\n",
    e8870db4:	66c2                	ld	a3,16(sp)
    e8870db6:	004005b7          	lui	a1,0x400
    e8870dba:	41098833          	sub	a6,s3,a6
    e8870dbe:	03258593          	addi	a1,a1,50 # 400032 <memcmp-0xe83fffce>
    e8870dc2:	8522                	mv	a0,s0
    e8870dc4:	02c7573b          	divuw	a4,a4,a2
    e8870dc8:	0005b617          	auipc	a2,0x5b
    e8870dcc:	ef860613          	addi	a2,a2,-264 # e88cbcc0 <__PRETTY_FUNCTION__.10655+0x2e0>
    e8870dd0:	d21fe0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
	limTS = nowTS + lenTS;
    e8870dd4:	012c0abb          	addw	s5,s8,s2
    e8870dd8:	8956                	mv	s2,s5
				RTPJitterBufferSamplesToMs( ctx, (int)( srcTS - nowTS ) ), ctx->nGaps );
    e8870dda:	3e800b13          	li	s6,1000
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Gap:  %d ms (%u total)\n", ap_jitter_label( ctx ),
    e8870dde:	0005bb97          	auipc	s7,0x5b
    e8870de2:	e3ab8b93          	addi	s7,s7,-454 # e88cbc18 <__PRETTY_FUNCTION__.10655+0x238>
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Late: %d ms (%u total)\n", ap_jitter_label( ctx ),
    e8870de6:	0005bd17          	auipc	s10,0x5b
    e8870dea:	f12d0d13          	addi	s10,s10,-238 # e88cbcf8 <__PRETTY_FUNCTION__.10655+0x318>
		TAILQ_INSERT_HEAD( &ctx->freeList, node, list );
    e8870dee:	04840d93          	addi	s11,s0,72
	while( ( node = TAILQ_FIRST( &ctx->preparedList ) ) != NULL )
    e8870df2:	6c24                	ld	s1,88(s0)
    e8870df4:	c48d                	beqz	s1,e8870e1e <RTPJitterBufferRead+0x12c>
		srcTS = node->pkt.pkt.rtp.header.ts;
    e8870df6:	0144a303          	lw	t1,20(s1)
		if( Mod32_GE( srcTS, limTS ) )
    e8870dfa:	415307bb          	subw	a5,t1,s5
    e8870dfe:	0a07ce63          	bltz	a5,e8870eba <RTPJitterBufferRead+0x1c8>
			delta = limTS - nowTS;
    e8870e02:	4189073b          	subw	a4,s2,s8
			nowTS = limTS;
    e8870e06:	8c56                	mv	s8,s5
			if( delta )
    e8870e08:	cb19                	beqz	a4,e8870e1e <RTPJitterBufferRead+0x12c>
				len	= delta * ctx->outputFormat.mBytesPerFrame;
    e8870e0a:	0b842603          	lw	a2,184(s0)
				memset( dst, 0, len );
    e8870e0e:	4581                	li	a1,0
    e8870e10:	8552                	mv	a0,s4
				len	= delta * ctx->outputFormat.mBytesPerFrame;
    e8870e12:	02e6063b          	mulw	a2,a2,a4
				memset( dst, 0, len );
    e8870e16:	7c06360b          	extu	a2,a2,31,0
    e8870e1a:	57a0b0ef          	jal	ra,e887c394 <eLIBs_memset>
	if( Mod32_LT( nowTS, limTS ) )
    e8870e1e:	412c07bb          	subw	a5,s8,s2
    e8870e22:	0807d663          	bgez	a5,e8870eae <RTPJitterBufferRead+0x1bc>
		++ctx->nRebuffer;
    e8870e26:	10842783          	lw	a5,264(s0)
			"%s: Re-buffering: %d ms buffered (%d), %d ms missing (%d), %u total) nowTS (%u) \n", ap_jitter_label( ctx ),
    e8870e2a:	11043683          	ld	a3,272(s0)
		++ctx->nRebuffer;
    e8870e2e:	0017849b          	addiw	s1,a5,1
    e8870e32:	10942423          	sw	s1,264(s0)
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e8870e36:	e689                	bnez	a3,e8870e40 <RTPJitterBufferRead+0x14e>
    e8870e38:	0005b697          	auipc	a3,0x5b
    e8870e3c:	de068693          	addi	a3,a3,-544 # e88cbc18 <__PRETTY_FUNCTION__.10655+0x238>
			RTPJitterBufferBufferedMs( ctx ), _RTPJitterBufferBufferedSamples( ctx, false ),
    e8870e40:	4581                	li	a1,0
    e8870e42:	8522                	mv	a0,s0
    e8870e44:	e836                	sd	a3,16(sp)
    e8870e46:	c0dfe0ef          	jal	ra,e886fa52 <_RTPJitterBufferBufferedSamples>
    e8870e4a:	0005079b          	sext.w	a5,a0
    e8870e4e:	08042603          	lw	a2,128(s0)
			RTPJitterBufferSamplesToMs( ctx, (int)( limTS - nowTS ) ), (int)( limTS - nowTS ), ctx->nRebuffer, nowTS );
    e8870e52:	418908bb          	subw	a7,s2,s8
    e8870e56:	3e800593          	li	a1,1000
			RTPJitterBufferBufferedMs( ctx ), _RTPJitterBufferBufferedSamples( ctx, false ),
    e8870e5a:	0016571b          	srliw	a4,a2,0x1
			RTPJitterBufferSamplesToMs( ctx, (int)( limTS - nowTS ) ), (int)( limTS - nowTS ), ctx->nRebuffer, nowTS );
    e8870e5e:	883a                	mv	a6,a4
    e8870e60:	2515980b          	mulaw	a6,a1,a7
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e8870e64:	66c2                	ld	a3,16(sp)
    e8870e66:	e462                	sd	s8,8(sp)
    e8870e68:	8522                	mv	a0,s0
    e8870e6a:	e026                	sd	s1,0(sp)
			RTPJitterBufferSamplesToMs( ctx, (int)( limTS - nowTS ) ), (int)( limTS - nowTS ), ctx->nRebuffer, nowTS );
    e8870e6c:	8946                	mv	s2,a7
		nowTS = limTS;
    e8870e6e:	8c56                	mv	s8,s5
			RTPJitterBufferBufferedMs( ctx ), _RTPJitterBufferBufferedSamples( ctx, false ),
    e8870e70:	24f5970b          	mulaw	a4,a1,a5
		RTPJitterBufferLog( ctx, kLogLevelNotice | kLogLevelFlagDontRateLimit,
    e8870e74:	004005b7          	lui	a1,0x400
    e8870e78:	03258593          	addi	a1,a1,50 # 400032 <memcmp-0xe83fffce>
    e8870e7c:	02c8583b          	divuw	a6,a6,a2
    e8870e80:	02c7573b          	divuw	a4,a4,a2
    e8870e84:	0005b617          	auipc	a2,0x5b
    e8870e88:	ed460613          	addi	a2,a2,-300 # e88cbd58 <__PRETTY_FUNCTION__.10655+0x378>
    e8870e8c:	c65fe0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
		len = delta * ctx->outputFormat.mBytesPerFrame;
    e8870e90:	0b842603          	lw	a2,184(s0)
		memset( dst, 0, len );
    e8870e94:	4581                	li	a1,0
    e8870e96:	8552                	mv	a0,s4
		len = delta * ctx->outputFormat.mBytesPerFrame;
    e8870e98:	0326063b          	mulw	a2,a2,s2
		memset( dst, 0, len );
    e8870e9c:	7c06360b          	extu	a2,a2,31,0
    e8870ea0:	4f40b0ef          	jal	ra,e887c394 <eLIBs_memset>
		ctx->startTicks = 0;
    e8870ea4:	0e043823          	sd	zero,240(s0)
		ctx->buffering = true;
    e8870ea8:	4785                	li	a5,1
    e8870eaa:	0ef40ca3          	sb	a5,249(s0)
	ctx->nextTS = nowTS;
    e8870eae:	0f842623          	sw	s8,236(s0)
    e8870eb2:	bd51                	j	e8870d46 <RTPJitterBufferRead+0x54>
		nowTS = ctx->nextTS;
    e8870eb4:	0ec42c03          	lw	s8,236(s0)
    e8870eb8:	bf31                	j	e8870dd4 <RTPJitterBufferRead+0xe2>
		endTS = (uint32_t)( srcTS + ( node->pkt.len / ctx->outputFormat.mBytesPerFrame ) );
    e8870eba:	0b846783          	lwu	a5,184(s0)
    e8870ebe:	5d04b803          	ld	a6,1488(s1)
    e8870ec2:	02f85833          	divu	a6,a6,a5
    e8870ec6:	006809bb          	addw	s3,a6,t1
		if( Mod32_LE( endTS, nowTS ) )
    e8870eca:	418987bb          	subw	a5,s3,s8
		endTS = (uint32_t)( srcTS + ( node->pkt.len / ctx->outputFormat.mBytesPerFrame ) );
    e8870ece:	8cce                	mv	s9,s3
		if( Mod32_LE( endTS, nowTS ) )
    e8870ed0:	06f04c63          	bgtz	a5,e8870f48 <RTPJitterBufferRead+0x256>
			++ctx->nLate;
    e8870ed4:	0fc42703          	lw	a4,252(s0)
				RTPJitterBufferSamplesToMs( ctx, (int)( nowTS - endTS ) ), ctx->nLate );
    e8870ed8:	08042603          	lw	a2,128(s0)
    e8870edc:	413c083b          	subw	a6,s8,s3
			++ctx->nLate;
    e8870ee0:	0017079b          	addiw	a5,a4,1
				RTPJitterBufferSamplesToMs( ctx, (int)( nowTS - endTS ) ), ctx->nLate );
    e8870ee4:	0016571b          	srliw	a4,a2,0x1
    e8870ee8:	2568170b          	mulaw	a4,a6,s6
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Late: %d ms (%u total)\n", ap_jitter_label( ctx ),
    e8870eec:	11043683          	ld	a3,272(s0)
			++ctx->nLate;
    e8870ef0:	0ef42e23          	sw	a5,252(s0)
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Late: %d ms (%u total)\n", ap_jitter_label( ctx ),
    e8870ef4:	03200593          	li	a1,50
    e8870ef8:	40db968b          	mveqz	a3,s7,a3
    e8870efc:	8522                	mv	a0,s0
    e8870efe:	02c7573b          	divuw	a4,a4,a2
    e8870f02:	866a                	mv	a2,s10
    e8870f04:	bedfe0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
		TAILQ_REMOVE( &ctx->preparedList, node, list );
    e8870f08:	f8f4c70b          	ldd	a4,a5,(s1),0,4
    e8870f0c:	18070163          	beqz	a4,e887108e <RTPJitterBufferRead+0x39c>
    e8870f10:	e71c                	sd	a5,8(a4)
    e8870f12:	649c                	ld	a5,8(s1)
    e8870f14:	6098                	ld	a4,0(s1)
    e8870f16:	e398                	sd	a4,0(a5)
		TAILQ_INSERT_HEAD( &ctx->freeList, node, list );
    e8870f18:	643c                	ld	a5,72(s0)
    e8870f1a:	e09c                	sd	a5,0(s1)
    e8870f1c:	16078b63          	beqz	a5,e8871092 <RTPJitterBufferRead+0x3a0>
    e8870f20:	e784                	sd	s1,8(a5)
    e8870f22:	e424                	sd	s1,72(s0)
    e8870f24:	01b4b423          	sd	s11,8(s1)
		ctx->nodesUsed -= 1;
    e8870f28:	5c7c                	lw	a5,124(s0)
    e8870f2a:	37fd                	addiw	a5,a5,-1
    e8870f2c:	dc7c                	sw	a5,124(s0)
		if( ctx->decodeThreadPtr )
    e8870f2e:	681c                	ld	a5,16(s0)
    e8870f30:	ec0781e3          	beqz	a5,e8870df2 <RTPJitterBufferRead+0x100>
			pthread_mutex_lock( ctx->decodeMutexPtr );
    e8870f34:	7808                	ld	a0,48(s0)
    e8870f36:	3e90a0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
			pthread_cond_signal( ctx->decodeConditionPtr );
    e8870f3a:	7008                	ld	a0,32(s0)
    e8870f3c:	5c90a0ef          	jal	ra,e887bd04 <pthread_cond_signal>
			pthread_mutex_unlock( ctx->decodeMutexPtr );
    e8870f40:	7808                	ld	a0,48(s0)
    e8870f42:	4210a0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
    e8870f46:	b575                	j	e8870df2 <RTPJitterBufferRead+0x100>
		if( Mod32_LT( srcTS, nowTS ) )
    e8870f48:	41830e3b          	subw	t3,t1,s8
    e8870f4c:	87f2                	mv	a5,t3
    e8870f4e:	0c07da63          	bgez	a5,e8871022 <RTPJitterBufferRead+0x330>
			++ctx->nSkipped;
    e8870f52:	10442703          	lw	a4,260(s0)
				RTPJitterBufferSamplesToMs( ctx, (int)( nowTS - srcTS ) ), ctx->nSkipped );
    e8870f56:	08042603          	lw	a2,128(s0)
    e8870f5a:	406c033b          	subw	t1,s8,t1
			++ctx->nSkipped;
    e8870f5e:	0017079b          	addiw	a5,a4,1
				RTPJitterBufferSamplesToMs( ctx, (int)( nowTS - srcTS ) ), ctx->nSkipped );
    e8870f62:	0016571b          	srliw	a4,a2,0x1
    e8870f66:	246b170b          	mulaw	a4,s6,t1
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Skip: %d ms (%u total)\n", ap_jitter_label( ctx ),
    e8870f6a:	11043683          	ld	a3,272(s0)
			++ctx->nSkipped;
    e8870f6e:	10f42223          	sw	a5,260(s0)
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Skip: %d ms (%u total)\n", ap_jitter_label( ctx ),
    e8870f72:	03200593          	li	a1,50
    e8870f76:	40db968b          	mveqz	a3,s7,a3
    e8870f7a:	8522                	mv	a0,s0
				RTPJitterBufferSamplesToMs( ctx, (int)( nowTS - srcTS ) ), ctx->nSkipped );
    e8870f7c:	e81a                	sd	t1,16(sp)
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Skip: %d ms (%u total)\n", ap_jitter_label( ctx ),
    e8870f7e:	02c7573b          	divuw	a4,a4,a2
    e8870f82:	0005b617          	auipc	a2,0x5b
    e8870f86:	d9660613          	addi	a2,a2,-618 # e88cbd18 <__PRETTY_FUNCTION__.10655+0x338>
    e8870f8a:	b67fe0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
			len   = delta * ctx->outputFormat.mBytesPerFrame;
    e8870f8e:	0b842783          	lw	a5,184(s0)
    e8870f92:	6342                	ld	t1,16(sp)
			node->ptr += len;
    e8870f94:	5e04b703          	ld	a4,1504(s1)
			len   = delta * ctx->outputFormat.mBytesPerFrame;
    e8870f98:	026787bb          	mulw	a5,a5,t1
    e8870f9c:	7c07b78b          	extu	a5,a5,31,0
			node->ptr += len;
    e8870fa0:	973e                	add	a4,a4,a5
    e8870fa2:	5ee4b023          	sd	a4,1504(s1)
			node->pkt.len -= len;
    e8870fa6:	5d04b703          	ld	a4,1488(s1)
    e8870faa:	40f707b3          	sub	a5,a4,a5
    e8870fae:	5cf4b823          	sd	a5,1488(s1)
			node->pkt.pkt.rtp.header.ts += delta;
    e8870fb2:	48dc                	lw	a5,20(s1)
    e8870fb4:	0067833b          	addw	t1,a5,t1
    e8870fb8:	0064aa23          	sw	t1,20(s1)
			srcTS = nowTS;
    e8870fbc:	8362                	mv	t1,s8
		cap = Mod32_GT( endTS, limTS );
    e8870fbe:	415c883b          	subw	a6,s9,s5
		if( cap ) endTS = limTS;
    e8870fc2:	01005363          	blez	a6,e8870fc8 <RTPJitterBufferRead+0x2d6>
    e8870fc6:	89d6                	mv	s3,s5
		len   = delta * ctx->outputFormat.mBytesPerFrame;
    e8870fc8:	0b842703          	lw	a4,184(s0)
		delta = endTS - srcTS;
    e8870fcc:	406986bb          	subw	a3,s3,t1
		if( len >= node->pkt.len )
    e8870fd0:	5d04b783          	ld	a5,1488(s1)
		len   = delta * ctx->outputFormat.mBytesPerFrame;
    e8870fd4:	02d7033b          	mulw	t1,a4,a3
    e8870fd8:	7c03330b          	extu	t1,t1,31,0
		if( len >= node->pkt.len )
    e8870fdc:	0af37163          	bgeu	t1,a5,e887107e <RTPJitterBufferRead+0x38c>
		cap = Mod32_GT( endTS, limTS );
    e8870fe0:	010029b3          	sgtz	s3,a6
    e8870fe4:	879a                	mv	a5,t1
		memcpy( dst, node->ptr, len );
    e8870fe6:	5e04b583          	ld	a1,1504(s1)
    e8870fea:	863e                	mv	a2,a5
    e8870fec:	8552                	mv	a0,s4
    e8870fee:	ec36                	sd	a3,24(sp)
    e8870ff0:	e83e                	sd	a5,16(sp)
    e8870ff2:	3ae0b0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		dst   += len;
    e8870ff6:	67c2                	ld	a5,16(sp)
		nowTS += delta;
    e8870ff8:	66e2                	ld	a3,24(sp)
		dst   += len;
    e8870ffa:	9a3e                	add	s4,s4,a5
		nowTS += delta;
    e8870ffc:	00dc0c3b          	addw	s8,s8,a3
		if( cap )
    e8871000:	f00984e3          	beqz	s3,e8870f08 <RTPJitterBufferRead+0x216>
			node->ptr     += len;
    e8871004:	5e04b703          	ld	a4,1504(s1)
    e8871008:	973e                	add	a4,a4,a5
    e887100a:	5ee4b023          	sd	a4,1504(s1)
			node->pkt.len -= len;
    e887100e:	5d04b703          	ld	a4,1488(s1)
    e8871012:	40f707b3          	sub	a5,a4,a5
			node->pkt.pkt.rtp.header.ts	+= delta;
    e8871016:	48d8                	lw	a4,20(s1)
			node->pkt.len -= len;
    e8871018:	5cf4b823          	sd	a5,1488(s1)
			node->pkt.pkt.rtp.header.ts	+= delta;
    e887101c:	9f35                	addw	a4,a4,a3
    e887101e:	c8d8                	sw	a4,20(s1)
			break;
    e8871020:	bbfd                	j	e8870e1e <RTPJitterBufferRead+0x12c>
		else if( Mod32_GT( srcTS, nowTS ) )
    e8871022:	dfd1                	beqz	a5,e8870fbe <RTPJitterBufferRead+0x2cc>
			++ctx->nGaps;
    e8871024:	10042703          	lw	a4,256(s0)
				RTPJitterBufferSamplesToMs( ctx, (int)( srcTS - nowTS ) ), ctx->nGaps );
    e8871028:	08042603          	lw	a2,128(s0)
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Gap:  %d ms (%u total)\n", ap_jitter_label( ctx ),
    e887102c:	11043683          	ld	a3,272(s0)
			++ctx->nGaps;
    e8871030:	0017079b          	addiw	a5,a4,1
				RTPJitterBufferSamplesToMs( ctx, (int)( srcTS - nowTS ) ), ctx->nGaps );
    e8871034:	0016571b          	srliw	a4,a2,0x1
    e8871038:	25cb170b          	mulaw	a4,s6,t3
			++ctx->nGaps;
    e887103c:	10f42023          	sw	a5,256(s0)
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Gap:  %d ms (%u total)\n", ap_jitter_label( ctx ),
    e8871040:	40db968b          	mveqz	a3,s7,a3
    e8871044:	03200593          	li	a1,50
    e8871048:	8522                	mv	a0,s0
    e887104a:	ec1a                	sd	t1,24(sp)
				RTPJitterBufferSamplesToMs( ctx, (int)( srcTS - nowTS ) ), ctx->nGaps );
    e887104c:	e872                	sd	t3,16(sp)
			RTPJitterBufferLog( ctx, kLogLevelNotice, "%s: Gap:  %d ms (%u total)\n", ap_jitter_label( ctx ),
    e887104e:	02c7573b          	divuw	a4,a4,a2
    e8871052:	0005b617          	auipc	a2,0x5b
    e8871056:	ce660613          	addi	a2,a2,-794 # e88cbd38 <__PRETTY_FUNCTION__.10655+0x358>
    e887105a:	a97fe0ef          	jal	ra,e886faf0 <RTPJitterBufferLog>
			len   = delta * ctx->outputFormat.mBytesPerFrame;
    e887105e:	0b842783          	lw	a5,184(s0)
    e8871062:	6e42                	ld	t3,16(sp)
			memset( dst, 0, len );
    e8871064:	8552                	mv	a0,s4
    e8871066:	4581                	li	a1,0
			len   = delta * ctx->outputFormat.mBytesPerFrame;
    e8871068:	03c787bb          	mulw	a5,a5,t3
    e887106c:	7c07bc0b          	extu	s8,a5,31,0
			memset( dst, 0, len );
    e8871070:	8662                	mv	a2,s8
    e8871072:	3220b0ef          	jal	ra,e887c394 <eLIBs_memset>
			dst   += len;
    e8871076:	9a62                	add	s4,s4,s8
			nowTS += delta;
    e8871078:	6362                	ld	t1,24(sp)
    e887107a:	8c1a                	mv	s8,t1
    e887107c:	b789                	j	e8870fbe <RTPJitterBufferRead+0x2cc>
			delta = (uint32_t)( len / ctx->outputFormat.mBytesPerFrame );
    e887107e:	7c07370b          	extu	a4,a4,31,0
    e8871082:	02e7d733          	divu	a4,a5,a4
			cap = false;
    e8871086:	4981                	li	s3,0
			delta = (uint32_t)( len / ctx->outputFormat.mBytesPerFrame );
    e8871088:	0007069b          	sext.w	a3,a4
			cap = false;
    e887108c:	bfa9                	j	e8870fe6 <RTPJitterBufferRead+0x2f4>
		TAILQ_REMOVE( &ctx->preparedList, node, list );
    e887108e:	f03c                	sd	a5,96(s0)
    e8871090:	b549                	j	e8870f12 <RTPJitterBufferRead+0x220>
		TAILQ_INSERT_HEAD( &ctx->freeList, node, list );
    e8871092:	e824                	sd	s1,80(s0)
    e8871094:	b579                	j	e8870f22 <RTPJitterBufferRead+0x230>

00000000e8871096 <_AirTunesClock_Tick>:
//===========================================================================================================================
//	_AirTunesClock_Tick
//===========================================================================================================================

DEBUG_STATIC void	_AirTunesClock_Tick( AirTunesClockRef inClock )
{
    e8871096:	1141                	addi	sp,sp,-16
    e8871098:	e406                	sd	ra,8(sp)
    e887109a:	e022                	sd	s0,0(sp)
    e887109c:	842a                	mv	s0,a0
	uint32_t			count;
	uint32_t			delta;
	AirTunesTime		at;
	
	pthread_mutex_lock( inClock->lockPtr );
    e887109e:	6548                	ld	a0,136(a0)
    e88710a0:	27f0a0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	
	// Update the current uptime from the delta between now and the last update.
	
	count = UpTicks32();
    e88710a4:	920f00ef          	jal	ra,e88611c4 <UpTicks>
    e88710a8:	2501                	sext.w	a0,a0
	delta = count - inClock->lastCount;
    e88710aa:	403c                	lw	a5,64(s0)

STATIC_INLINE void	AirTunesTime_AddFrac( AirTunesTime *inTime, uint64_t inFrac )
{
	uint64_t		frac;
	
	frac = inTime->frac;
    e88710ac:	6c18                	ld	a4,24(s0)
	inClock->lastCount = count;
	AirTunesTime_AddFrac( &inClock->upTime, inClock->scale * delta );
    e88710ae:	7c14                	ld	a3,56(s0)
	delta = count - inClock->lastCount;
    e88710b0:	40f507bb          	subw	a5,a0,a5
	AirTunesTime_AddFrac( &inClock->upTime, inClock->scale * delta );
    e88710b4:	7c07b78b          	extu	a5,a5,31,0
	inTime->frac = frac + inFrac;
    e88710b8:	863a                	mv	a2,a4
    e88710ba:	20d7960b          	mula	a2,a5,a3
	inClock->lastCount = count;
    e88710be:	c028                	sw	a0,64(s0)
    e88710c0:	ec10                	sd	a2,24(s0)
    e88710c2:	87b2                	mv	a5,a2
	if( frac > inTime->frac ) inTime->secs += 1; // Increment seconds on fraction wrap.
    e88710c4:	00e67563          	bgeu	a2,a4,e88710ce <_AirTunesClock_Tick+0x38>
    e88710c8:	4818                	lw	a4,16(s0)
    e88710ca:	2705                	addiw	a4,a4,1
    e88710cc:	c818                	sw	a4,16(s0)
STATIC_INLINE void	AirTunesTime_Add( AirTunesTime *inTime, const AirTunesTime *inTimeToAdd )
{
	uint64_t		frac;
	
	frac = inTime->frac;
	inTime->frac = frac + inTimeToAdd->frac;
    e88710ce:	6410                	ld	a2,8(s0)
	
	// Perform NTP adjustments each second.
	
	at = inClock->upTime;
    e88710d0:	4818                	lw	a4,16(s0)
    e88710d2:	963e                	add	a2,a2,a5
	if( frac > inTime->frac ) inTime->secs += 1; // Increment seconds on fraction wrap.
    e88710d4:	00f67363          	bgeu	a2,a5,e88710da <_AirTunesClock_Tick+0x44>
    e88710d8:	2705                	addiw	a4,a4,1
	inTime->secs += inTimeToAdd->secs;
    e88710da:	4014                	lw	a3,0(s0)
    e88710dc:	00e687bb          	addw	a5,a3,a4
	AirTunesTime_Add( &at, &inClock->epochTime );
	if( at.secs > inClock->lastTime.secs )
    e88710e0:	5018                	lw	a4,32(s0)
    e88710e2:	86be                	mv	a3,a5
    e88710e4:	04f75363          	bge	a4,a5,e887112a <_AirTunesClock_Tick+0x94>
	{
		Fixed64		ftemp;
		
		ftemp = inClock->offset;
    e88710e8:	6c38                	ld	a4,88(s0)
		Fixed64_RightShift( ftemp, kAirTunesClock_PLLShift );
    e88710ea:	40475793          	srai	a5,a4,0x4
    e88710ee:	00075763          	bgez	a4,e88710fc <_AirTunesClock_Tick+0x66>
    e88710f2:	40e007b3          	neg	a5,a4
    e88710f6:	8791                	srai	a5,a5,0x4
    e88710f8:	40f007b3          	neg	a5,a5
		inClock->tickAdjust = ftemp;
		Fixed64_Sub( inClock->offset, ftemp );
    e88710fc:	8f1d                	sub	a4,a4,a5
    e88710fe:	ec38                	sd	a4,88(s0)
		Fixed64_Add( inClock->tickAdjust, inClock->frequencyOffset );
    e8871100:	7038                	ld	a4,96(s0)
		// 10PPM. On a 5000 PPM adjustment this is a 0.05PPM error. This is acceptable.
	
		uint64_t		scale;
		
		scale  = UINT64_C( 1 ) << 63;
		scale += ( inClock->adjustment / 1024 ) * 2199;
    e8871102:	6585                	lui	a1,0x1
    e8871104:	89758593          	addi	a1,a1,-1897 # 897 <memcmp-0xe87ff769>
		Fixed64_Add( inClock->tickAdjust, inClock->frequencyOffset );
    e8871108:	97ba                	add	a5,a5,a4
		scale += ( inClock->adjustment / 1024 ) * 2199;
    e887110a:	40000713          	li	a4,1024
		Fixed64_Add( inClock->tickAdjust, inClock->frequencyOffset );
    e887110e:	f43c                	sd	a5,104(s0)
		inClock->adjustment = inClock->tickAdjust;
    e8871110:	e43c                	sd	a5,72(s0)
		scale += ( inClock->adjustment / 1024 ) * 2199;
    e8871112:	02e7c7b3          	div	a5,a5,a4
    e8871116:	577d                	li	a4,-1
    e8871118:	177e                	slli	a4,a4,0x3f
    e887111a:	20b7970b          	mula	a4,a5,a1
    e887111e:	87ba                	mv	a5,a4
		scale /= inClock->frequency;
    e8871120:	7818                	ld	a4,48(s0)
    e8871122:	02e7d7b3          	divu	a5,a5,a4
		inClock->scale = scale * 2;
    e8871126:	0786                	slli	a5,a5,0x1
    e8871128:	fc1c                	sd	a5,56(s0)
	}
	
	inClock->second = at.secs;
    e887112a:	d834                	sw	a3,112(s0)
	inClock->lastTime = at;
    e887112c:	d014                	sw	a3,32(s0)
    e887112e:	f410                	sd	a2,40(s0)
	
	pthread_mutex_unlock( inClock->lockPtr );
    e8871130:	6448                	ld	a0,136(s0)
}
    e8871132:	6402                	ld	s0,0(sp)
    e8871134:	60a2                	ld	ra,8(sp)
    e8871136:	0141                	addi	sp,sp,16
	pthread_mutex_unlock( inClock->lockPtr );
    e8871138:	22b0a06f          	j	e887bb62 <pthread_mutex_unlock>

00000000e887113c <_AirTunesClock_Thread>:
//===========================================================================================================================
//	_AirTunesClock_Thread
//===========================================================================================================================

DEBUG_STATIC void *	_AirTunesClock_Thread( void *inArg )
{
    e887113c:	1141                	addi	sp,sp,-16
    e887113e:	e406                	sd	ra,8(sp)
    e8871140:	e022                	sd	s0,0(sp)
	AirTunesClockRef const me = (AirTunesClockRef) inArg;

	me->threadRun = true;
    e8871142:	4785                	li	a5,1
    e8871144:	08f50023          	sb	a5,128(a0)
{
    e8871148:	842a                	mv	s0,a0
	pthread_setname_np_compat( "AirPlayClock" );
    e887114a:	0b10a0ef          	jal	ra,e887b9fa <pthread_self>
    e887114e:	2501                	sext.w	a0,a0
    e8871150:	0005b597          	auipc	a1,0x5b
    e8871154:	db858593          	addi	a1,a1,-584 # e88cbf08 <__PRETTY_FUNCTION__.9875+0x58>
    e8871158:	47d0a0ef          	jal	ra,e887bdd4 <pthread_setname_np>
	printf("_AirTunesClock_Thread start run %d\n",pthread_self());
    e887115c:	09f0a0ef          	jal	ra,e887b9fa <pthread_self>
    e8871160:	0005059b          	sext.w	a1,a0
    e8871164:	0005b517          	auipc	a0,0x5b
    e8871168:	db450513          	addi	a0,a0,-588 # e88cbf18 <__PRETTY_FUNCTION__.9875+0x68>
    e887116c:	15a0b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	
	while( me->running )
    e8871170:	09044783          	lbu	a5,144(s0)
    e8871174:	e38d                	bnez	a5,e8871196 <_AirTunesClock_Thread+0x5a>
	{
		_AirTunesClock_Tick( me );
		usleep( 10000 );
	}
	
	printf("_AirTunesClock_Thread exit\n");
    e8871176:	0005b517          	auipc	a0,0x5b
    e887117a:	dca50513          	addi	a0,a0,-566 # e88cbf40 <__PRETTY_FUNCTION__.9875+0x90>
    e887117e:	1480b0ef          	jal	ra,e887c2c6 <eLIBs_printf>
	me->threadRun = false;
    e8871182:	08040023          	sb	zero,128(s0)
	pthread_exit(0);
    e8871186:	4501                	li	a0,0
    e8871188:	0830a0ef          	jal	ra,e887ba0a <pthread_exit>
	
	return( NULL );
}
    e887118c:	6402                	ld	s0,0(sp)
    e887118e:	60a2                	ld	ra,8(sp)
    e8871190:	4501                	li	a0,0
    e8871192:	0141                	addi	sp,sp,16
    e8871194:	8082                	ret
		_AirTunesClock_Tick( me );
    e8871196:	8522                	mv	a0,s0
    e8871198:	effff0ef          	jal	ra,e8871096 <_AirTunesClock_Tick>
		usleep( 10000 );
    e887119c:	4505                	li	a0,1
    e887119e:	6790a0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e88711a2:	b7f9                	j	e8871170 <_AirTunesClock_Thread+0x34>

00000000e88711a4 <AirTunesClock_Finalize>:
	if( inClock )
    e88711a4:	c121                	beqz	a0,e88711e4 <AirTunesClock_Finalize+0x40>
{
    e88711a6:	1141                	addi	sp,sp,-16
    e88711a8:	e022                	sd	s0,0(sp)
    e88711aa:	e406                	sd	ra,8(sp)
		if( inClock->threadPtr )
    e88711ac:	7d3c                	ld	a5,120(a0)
		inClock->running = false;
    e88711ae:	08050823          	sb	zero,144(a0)
    e88711b2:	842a                	mv	s0,a0
		if( inClock->threadPtr )
    e88711b4:	e395                	bnez	a5,e88711d8 <AirTunesClock_Finalize+0x34>
		if( inClock->lockPtr )
    e88711b6:	6448                	ld	a0,136(s0)
    e88711b8:	c509                	beqz	a0,e88711c2 <AirTunesClock_Finalize+0x1e>
			err = pthread_mutex_destroy( inClock->lockPtr );
    e88711ba:	11b0a0ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
			inClock->lockPtr = NULL;
    e88711be:	08043423          	sd	zero,136(s0)
		free( inClock );
    e88711c2:	8522                	mv	a0,s0
    e88711c4:	13c0b0ef          	jal	ra,e887c300 <eLIBs_free>
}
    e88711c8:	6402                	ld	s0,0(sp)
    e88711ca:	60a2                	ld	ra,8(sp)
    e88711cc:	4501                	li	a0,0
    e88711ce:	0141                	addi	sp,sp,16
    e88711d0:	8082                	ret
			Sleep(1);
    e88711d2:	4505                	li	a0,1
    e88711d4:	6430a0ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		while(inClock->threadRun)
    e88711d8:	08044783          	lbu	a5,128(s0)
    e88711dc:	fbfd                	bnez	a5,e88711d2 <AirTunesClock_Finalize+0x2e>
			inClock->threadPtr = NULL;
    e88711de:	06043c23          	sd	zero,120(s0)
    e88711e2:	bfd1                	j	e88711b6 <AirTunesClock_Finalize+0x12>
}
    e88711e4:	4501                	li	a0,0
    e88711e6:	8082                	ret

00000000e88711e8 <AirTunesClock_Create>:
{
    e88711e8:	7139                	addi	sp,sp,-64
    e88711ea:	f852                	sd	s4,48(sp)
    e88711ec:	8a2a                	mv	s4,a0
    p = malloc(len);
    e88711ee:	09800513          	li	a0,152
    e88711f2:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88711f6:	fc06                	sd	ra,56(sp)
    e88711f8:	fd31590b          	sdd	s2,s3,(sp),2,4
    e88711fc:	6520a0ef          	jal	ra,e887b84e <my_malloc>
    e8871200:	842a                	mv	s0,a0
    memset(p,0,len);
    e8871202:	09800613          	li	a2,152
    e8871206:	4581                	li	a1,0
    e8871208:	18c0b0ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( obj, exit, err = kNoMemoryErr );
    e887120c:	c04d                	beqz	s0,e88712ae <AirTunesClock_Create+0xc6>
	obj->frequency = UpTicksPerSecond();
    e887120e:	3e800793          	li	a5,1000
    e8871212:	f81c                	sd	a5,48(s0)
	obj->scale = UINT64_C( 0xFFFFFFFFFFFFFFFF ) / obj->frequency;
    e8871214:	0005b797          	auipc	a5,0x5b
    e8871218:	cec78793          	addi	a5,a5,-788 # e88cbf00 <__PRETTY_FUNCTION__.9875+0x50>
    e887121c:	639c                	ld	a5,0(a5)
	obj->second = 1;
    e887121e:	4905                	li	s2,1
	err = pthread_mutex_init( &obj->lock, NULL );
    e8871220:	08440993          	addi	s3,s0,132
	obj->epochTime.secs = 0;
    e8871224:	00042023          	sw	zero,0(s0)
	obj->epochTime.frac = 0;
    e8871228:	00043423          	sd	zero,8(s0)
	obj->upTime.secs = 0;
    e887122c:	00042823          	sw	zero,16(s0)
	obj->upTime.frac = 0;
    e8871230:	00043c23          	sd	zero,24(s0)
	obj->lastTime.secs = 0;
    e8871234:	02042023          	sw	zero,32(s0)
	obj->lastTime.frac = 0;
    e8871238:	02043423          	sd	zero,40(s0)
	obj->scale = UINT64_C( 0xFFFFFFFFFFFFFFFF ) / obj->frequency;
    e887123c:	fc1c                	sd	a5,56(s0)
	obj->lastCount		= 0;
    e887123e:	04042023          	sw	zero,64(s0)
	obj->adjustment		= 0;
    e8871242:	04043423          	sd	zero,72(s0)
	obj->lastOffset		= 0;
    e8871246:	04043823          	sd	zero,80(s0)
	Fixed64_Clear( obj->offset );
    e887124a:	04043c23          	sd	zero,88(s0)
	Fixed64_Clear( obj->frequencyOffset );
    e887124e:	06043023          	sd	zero,96(s0)
	Fixed64_Clear( obj->tickAdjust );
    e8871252:	06043423          	sd	zero,104(s0)
	obj->second = 1;
    e8871256:	07242823          	sw	s2,112(s0)
	err = pthread_mutex_init( &obj->lock, NULL );
    e887125a:	4581                	li	a1,0
    e887125c:	854e                	mv	a0,s3
    e887125e:	01d0a0ef          	jal	ra,e887ba7a <pthread_mutex_init>
    e8871262:	84aa                	mv	s1,a0
	require_noerr( err, exit );
    e8871264:	e929                	bnez	a0,e88712b6 <AirTunesClock_Create+0xce>
	obj->running = true;
    e8871266:	09240823          	sb	s2,144(s0)
	obj->lockPtr = &obj->lock;
    e887126a:	09343423          	sd	s3,136(s0)
	pthread_attr_init(&attr);
    e887126e:	0028                	addi	a0,sp,8
    e8871270:	7a20a0ef          	jal	ra,e887ba12 <pthread_attr_init>
	err = pthread_create( &obj->thread, &attr, _AirTunesClock_Thread, obj );
    e8871274:	07440913          	addi	s2,s0,116
    e8871278:	86a2                	mv	a3,s0
    e887127a:	00000617          	auipc	a2,0x0
    e887127e:	ec260613          	addi	a2,a2,-318 # e887113c <_AirTunesClock_Thread>
    e8871282:	002c                	addi	a1,sp,8
    e8871284:	854a                	mv	a0,s2
    e8871286:	7be0a0ef          	jal	ra,e887ba44 <pthread_create>
    e887128a:	84aa                	mv	s1,a0
	pthread_attr_destroy(&attr);
    e887128c:	0028                	addi	a0,sp,8
    e887128e:	7980a0ef          	jal	ra,e887ba26 <pthread_attr_destroy>
	require_noerr( err, exit );
    e8871292:	e095                	bnez	s1,e88712b6 <AirTunesClock_Create+0xce>
	obj->threadPtr = &obj->thread;
    e8871294:	07243c23          	sd	s2,120(s0)
	*outRef = obj;
    e8871298:	008a3023          	sd	s0,0(s4)
}
    e887129c:	8526                	mv	a0,s1
    e887129e:	70e2                	ld	ra,56(sp)
    e88712a0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88712a4:	7a42                	ld	s4,48(sp)
    e88712a6:	fd31490b          	ldd	s2,s3,(sp),2,4
    e88712aa:	6121                	addi	sp,sp,64
    e88712ac:	8082                	ret
	require_action( obj, exit, err = kNoMemoryErr );
    e88712ae:	74f9                	lui	s1,0xffffe
    e88712b0:	5b848493          	addi	s1,s1,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e88712b4:	b7e5                	j	e887129c <AirTunesClock_Create+0xb4>
		AirTunesClock_Finalize( obj );
    e88712b6:	8522                	mv	a0,s0
    e88712b8:	eedff0ef          	jal	ra,e88711a4 <AirTunesClock_Finalize>
	return( err );
    e88712bc:	b7c5                	j	e887129c <AirTunesClock_Create+0xb4>

00000000e88712be <AirTunesClock_Adjust>:
{
    e88712be:	1101                	addi	sp,sp,-32
    e88712c0:	f891540b          	sdd	s0,s1,(sp),0,4
    e88712c4:	ec06                	sd	ra,24(sp)
    e88712c6:	e84a                	sd	s2,16(sp)
    e88712c8:	842a                	mv	s0,a0
    e88712ca:	84ae                	mv	s1,a1
    e88712cc:	6548                	ld	a0,136(a0)
	if( inReset || ( ( inOffsetNanoseconds < -100000000 ) || ( inOffsetNanoseconds > 100000000 ) ) )
    e88712ce:	ee01                	bnez	a2,e88712e6 <AirTunesClock_Adjust+0x28>
    e88712d0:	05f5e7b7          	lui	a5,0x5f5e
    e88712d4:	10078793          	addi	a5,a5,256 # 5f5e100 <memcmp-0xe28a1f00>
    e88712d8:	0bebc737          	lui	a4,0xbebc
    e88712dc:	97ae                	add	a5,a5,a1
    e88712de:	20070713          	addi	a4,a4,512 # bebc200 <memcmp-0xdc943e00>
    e88712e2:	08f77663          	bgeu	a4,a5,e887136e <AirTunesClock_Adjust+0xb0>
		pthread_mutex_lock( inClock->lockPtr );
    e88712e6:	0390a0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		if( inOffsetNanoseconds < 0 )
    e88712ea:	3b9ad5b7          	lui	a1,0x3b9ad
    e88712ee:	a0058593          	addi	a1,a1,-1536 # 3b9aca00 <memcmp-0xace53600>
    e88712f2:	6414                	ld	a3,8(s0)
    e88712f4:	401c                	lw	a5,0(s0)
    e88712f6:	0404d763          	bgez	s1,e8871344 <AirTunesClock_Adjust+0x86>
			offset  = (uint64_t) -inOffsetNanoseconds;
    e88712fa:	409004b3          	neg	s1,s1
			at.secs = (int32_t)( offset / 1000000000 );
    e88712fe:	02b4d633          	divu	a2,s1,a1
			at.frac = ( offset % 1000000000 ) * ( UINT64_C( 0xFFFFFFFFFFFFFFFF ) / 1000000000 );
    e8871302:	44b83737          	lui	a4,0x44b83
STATIC_INLINE void	AirTunesTime_Sub( AirTunesTime *inTime, const AirTunesTime *inTimeToSub )
{
	uint64_t	frac;
	
	frac = inTime->frac;
	inTime->frac = frac - inTimeToSub->frac;
    e8871306:	0712                	slli	a4,a4,0x4
    e8871308:	a0970713          	addi	a4,a4,-1527 # 44b82a09 <memcmp-0xa3c7d5f7>
    e887130c:	02b4f4b3          	remu	s1,s1,a1
    e8871310:	85b6                	mv	a1,a3
			at.secs = (int32_t)( offset / 1000000000 );
    e8871312:	2601                	sext.w	a2,a2
    e8871314:	22e4958b          	muls	a1,s1,a4
    e8871318:	e40c                	sd	a1,8(s0)
	if( frac < inTime->frac ) inTime->secs -= 1; // Decrement seconds on fraction wrap.
    e887131a:	00b6f463          	bgeu	a3,a1,e8871322 <AirTunesClock_Adjust+0x64>
    e887131e:	37fd                	addiw	a5,a5,-1
    e8871320:	c01c                	sw	a5,0(s0)
	inTime->secs -= inTimeToSub->secs;
    e8871322:	401c                	lw	a5,0(s0)
    e8871324:	9f91                	subw	a5,a5,a2
		pthread_mutex_unlock( inClock->lockPtr );
    e8871326:	6448                	ld	a0,136(s0)
	inTime->secs += inTimeToAdd->secs;
    e8871328:	c01c                	sw	a5,0(s0)
		inReset = true;
    e887132a:	4905                	li	s2,1
		pthread_mutex_unlock( inClock->lockPtr );
    e887132c:	0370a0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		_AirTunesClock_Tick( inClock );
    e8871330:	8522                	mv	a0,s0
    e8871332:	d65ff0ef          	jal	ra,e8871096 <_AirTunesClock_Tick>
}
    e8871336:	60e2                	ld	ra,24(sp)
    e8871338:	f891440b          	ldd	s0,s1,(sp),0,4
    e887133c:	854a                	mv	a0,s2
    e887133e:	6942                	ld	s2,16(sp)
    e8871340:	6105                	addi	sp,sp,32
    e8871342:	8082                	ret
			at.secs = (int32_t)( offset / 1000000000 );
    e8871344:	02b4d633          	divu	a2,s1,a1
			at.frac = ( offset % 1000000000 ) * ( UINT64_C( 0xFFFFFFFFFFFFFFFF ) / 1000000000 );
    e8871348:	44b83737          	lui	a4,0x44b83
	inTime->frac = frac + inTimeToAdd->frac;
    e887134c:	0712                	slli	a4,a4,0x4
    e887134e:	a0970713          	addi	a4,a4,-1527 # 44b82a09 <memcmp-0xa3c7d5f7>
    e8871352:	02b4f4b3          	remu	s1,s1,a1
    e8871356:	85b6                	mv	a1,a3
			at.secs = (int32_t)( offset / 1000000000 );
    e8871358:	2601                	sext.w	a2,a2
    e887135a:	20e4958b          	mula	a1,s1,a4
    e887135e:	e40c                	sd	a1,8(s0)
	if( frac > inTime->frac ) inTime->secs += 1; // Increment seconds on fraction wrap.
    e8871360:	00d5f463          	bgeu	a1,a3,e8871368 <AirTunesClock_Adjust+0xaa>
    e8871364:	2785                	addiw	a5,a5,1
    e8871366:	c01c                	sw	a5,0(s0)
	inTime->secs += inTimeToAdd->secs;
    e8871368:	401c                	lw	a5,0(s0)
    e887136a:	9fb1                	addw	a5,a5,a2
    e887136c:	bf6d                	j	e8871326 <AirTunesClock_Adjust+0x68>
    e887136e:	8932                	mv	s2,a2
		pthread_mutex_lock( inClock->lockPtr );
    e8871370:	7ae0a0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		offset = (int32_t) inOffsetNanoseconds;
    e8871374:	2481                	sext.w	s1,s1
		if(      offset >  kAirTunesClock_MaxPhase )	inClock->lastOffset = kAirTunesClock_MaxPhase;
    e8871376:	1dcd67b7          	lui	a5,0x1dcd6
    e887137a:	50078793          	addi	a5,a5,1280 # 1dcd6500 <memcmp-0xcab29b00>
    e887137e:	0697d163          	bge	a5,s1,e88713e0 <AirTunesClock_Adjust+0x122>
    e8871382:	c83c                	sw	a5,80(s0)
		Fixed64_SetInteger( inClock->offset, inClock->lastOffset );
    e8871384:	483c                	lw	a5,80(s0)
		if( inClock->lastAdjustTime == 0 )
    e8871386:	4874                	lw	a3,84(s0)
    e8871388:	5838                	lw	a4,112(s0)
		Fixed64_SetInteger( inClock->offset, inClock->lastOffset );
    e887138a:	1782                	slli	a5,a5,0x20
    e887138c:	ec3c                	sd	a5,88(s0)
		if( inClock->lastAdjustTime == 0 )
    e887138e:	e291                	bnez	a3,e8871392 <AirTunesClock_Adjust+0xd4>
			inClock->lastAdjustTime = inClock->second;
    e8871390:	c878                	sw	a4,84(s0)
		mtemp = inClock->second - inClock->lastAdjustTime;
    e8871392:	4874                	lw	a3,84(s0)
		Fixed64_RightShift( ftemp, ( kAirTunesClock_PLLShift + 2 ) << 1 );
    e8871394:	40c7d613          	srai	a2,a5,0xc
		mtemp = inClock->second - inClock->lastAdjustTime;
    e8871398:	40d706bb          	subw	a3,a4,a3
		Fixed64_RightShift( ftemp, ( kAirTunesClock_PLLShift + 2 ) << 1 );
    e887139c:	0007d763          	bgez	a5,e88713aa <AirTunesClock_Adjust+0xec>
    e88713a0:	40f007b3          	neg	a5,a5
    e88713a4:	87b1                	srai	a5,a5,0xc
    e88713a6:	40f00633          	neg	a2,a5
		Fixed64_Add( inClock->frequencyOffset, ftemp );
    e88713aa:	703c                	ld	a5,96(s0)
		inClock->lastAdjustTime = inClock->second;
    e88713ac:	c878                	sw	a4,84(s0)
		Fixed64_Add( inClock->frequencyOffset, ftemp );
    e88713ae:	20c6978b          	mula	a5,a3,a2
    e88713b2:	f03c                	sd	a5,96(s0)
		if( Fixed64_GetInteger( inClock->frequencyOffset ) > kAirTunesClock_MaxFrequency )
    e88713b4:	0407d063          	bgez	a5,e88713f4 <AirTunesClock_Adjust+0x136>
    e88713b8:	40f007b3          	neg	a5,a5
    e88713bc:	9781                	srai	a5,a5,0x20
    e88713be:	0007a737          	lui	a4,0x7a
    e88713c2:	40f007b3          	neg	a5,a5
    e88713c6:	12070713          	addi	a4,a4,288 # 7a120 <memcmp-0xe8785ee0>
    e88713ca:	02f74c63          	blt	a4,a5,e8871402 <AirTunesClock_Adjust+0x144>
		else if( Fixed64_GetInteger( inClock->frequencyOffset ) < -kAirTunesClock_MaxFrequency )
    e88713ce:	fff86737          	lui	a4,0xfff86
    e88713d2:	ee070713          	addi	a4,a4,-288 # fffffffffff85ee0 <__DRAM0_INF_BASE+0xfffffffefff95ee0>
    e88713d6:	02e7da63          	bge	a5,a4,e887140a <AirTunesClock_Adjust+0x14c>
			Fixed64_SetInteger( inClock->frequencyOffset, -kAirTunesClock_MaxFrequency );
    e88713da:	fc2f77b7          	lui	a5,0xfc2f7
    e88713de:	a025                	j	e8871406 <AirTunesClock_Adjust+0x148>
		else if( offset < -kAirTunesClock_MaxPhase )	inClock->lastOffset = -kAirTunesClock_MaxPhase;
    e88713e0:	e232a5b7          	lui	a1,0xe232a
    e88713e4:	b0058593          	addi	a1,a1,-1280 # ffffffffe2329b00 <__DRAM0_INF_BASE+0xfffffffee2339b00>
    e88713e8:	00b4a7b3          	slt	a5,s1,a1
    e88713ec:	42f5948b          	mvnez	s1,a1,a5
    e88713f0:	c824                	sw	s1,80(s0)
    e88713f2:	bf49                	j	e8871384 <AirTunesClock_Adjust+0xc6>
		if( Fixed64_GetInteger( inClock->frequencyOffset ) > kAirTunesClock_MaxFrequency )
    e88713f4:	0007a737          	lui	a4,0x7a
    e88713f8:	9781                	srai	a5,a5,0x20
    e88713fa:	12070713          	addi	a4,a4,288 # 7a120 <memcmp-0xe8785ee0>
    e88713fe:	00f75663          	bge	a4,a5,e887140a <AirTunesClock_Adjust+0x14c>
			Fixed64_SetInteger( inClock->frequencyOffset, kAirTunesClock_MaxFrequency );
    e8871402:	03d097b7          	lui	a5,0x3d09
			Fixed64_SetInteger( inClock->frequencyOffset, -kAirTunesClock_MaxFrequency );
    e8871406:	07e6                	slli	a5,a5,0x19
    e8871408:	f03c                	sd	a5,96(s0)
		pthread_mutex_unlock( inClock->lockPtr );
    e887140a:	6448                	ld	a0,136(s0)
    e887140c:	7560a0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
    e8871410:	b71d                	j	e8871336 <AirTunesClock_Adjust+0x78>

00000000e8871412 <AirTunesClock_GetSynchronizedTime>:
{
    e8871412:	1101                	addi	sp,sp,-32
    e8871414:	f891540b          	sdd	s0,s1,(sp),0,4
    e8871418:	ec06                	sd	ra,24(sp)
    e887141a:	84aa                	mv	s1,a0
    e887141c:	e84a                	sd	s2,16(sp)
	pthread_mutex_lock( inClock->lockPtr );
    e887141e:	6548                	ld	a0,136(a0)
{
    e8871420:	842e                	mv	s0,a1
	pthread_mutex_lock( inClock->lockPtr );
    e8871422:	6fc0a0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		*outTime = inClock->upTime;
    e8871426:	689c                	ld	a5,16(s1)
    e8871428:	e01c                	sd	a5,0(s0)
    e887142a:	6c9c                	ld	a5,24(s1)
    e887142c:	e41c                	sd	a5,8(s0)
		AirTunesTime_AddFrac( outTime, inClock->scale * ( UpTicks32() - inClock->lastCount ) );
    e887142e:	0384b903          	ld	s2,56(s1)
    e8871432:	d93ef0ef          	jal	ra,e88611c4 <UpTicks>
    e8871436:	40bc                	lw	a5,64(s1)
	frac = inTime->frac;
    e8871438:	6418                	ld	a4,8(s0)
    e887143a:	9d1d                	subw	a0,a0,a5
    e887143c:	7c05350b          	extu	a0,a0,31,0
	inTime->frac = frac + inFrac;
    e8871440:	87ba                	mv	a5,a4
    e8871442:	2125178b          	mula	a5,a0,s2
    e8871446:	e41c                	sd	a5,8(s0)
	if( frac > inTime->frac ) inTime->secs += 1; // Increment seconds on fraction wrap.
    e8871448:	00e7f563          	bgeu	a5,a4,e8871452 <AirTunesClock_GetSynchronizedTime+0x40>
    e887144c:	4018                	lw	a4,0(s0)
    e887144e:	2705                	addiw	a4,a4,1
    e8871450:	c018                	sw	a4,0(s0)
	inTime->frac = frac + inTimeToAdd->frac;
    e8871452:	6498                	ld	a4,8(s1)
    e8871454:	973e                	add	a4,a4,a5
    e8871456:	e418                	sd	a4,8(s0)
	if( frac > inTime->frac ) inTime->secs += 1; // Increment seconds on fraction wrap.
    e8871458:	00f77563          	bgeu	a4,a5,e8871462 <AirTunesClock_GetSynchronizedTime+0x50>
    e887145c:	401c                	lw	a5,0(s0)
    e887145e:	2785                	addiw	a5,a5,1
    e8871460:	c01c                	sw	a5,0(s0)
	inTime->secs += inTimeToAdd->secs;
    e8871462:	401c                	lw	a5,0(s0)
    e8871464:	4098                	lw	a4,0(s1)
}
    e8871466:	60e2                	ld	ra,24(sp)
    e8871468:	6942                	ld	s2,16(sp)
    e887146a:	9fb9                	addw	a5,a5,a4
    e887146c:	c01c                	sw	a5,0(s0)
	pthread_mutex_unlock( inClock->lockPtr );
    e887146e:	64c8                	ld	a0,136(s1)
}
    e8871470:	f891440b          	ldd	s0,s1,(sp),0,4
    e8871474:	6105                	addi	sp,sp,32
	pthread_mutex_unlock( inClock->lockPtr );
    e8871476:	6ec0a06f          	j	e887bb62 <pthread_mutex_unlock>

00000000e887147a <AirTunesClock_GetSynchronizedNTPTime>:
{
    e887147a:	1101                	addi	sp,sp,-32
	AirTunesClock_GetSynchronizedTime( inClock, &t );
    e887147c:	858a                	mv	a1,sp
{
    e887147e:	ec06                	sd	ra,24(sp)
	AirTunesClock_GetSynchronizedTime( inClock, &t );
    e8871480:	f93ff0ef          	jal	ra,e8871412 <AirTunesClock_GetSynchronizedTime>
	return( AirTunesTime_ToNTP( &t ) );
    e8871484:	4782                	lw	a5,0(sp)
    e8871486:	00c16503          	lwu	a0,12(sp)
}
    e887148a:	60e2                	ld	ra,24(sp)
	return( AirTunesTime_ToNTP( &t ) );
    e887148c:	1782                	slli	a5,a5,0x20
}
    e887148e:	8d5d                	or	a0,a0,a5
    e8871490:	6105                	addi	sp,sp,32
    e8871492:	8082                	ret

00000000e8871494 <AirTunesClock_GetSynchronizedTimeNearUpTicks>:
{
    e8871494:	7139                	addi	sp,sp,-64
    e8871496:	fc06                	sd	ra,56(sp)
    e8871498:	e422                	sd	s0,8(sp)
    e887149a:	e826                	sd	s1,16(sp)
    e887149c:	ec4a                	sd	s2,24(sp)
    e887149e:	f04e                	sd	s3,32(sp)
    e88714a0:	f452                	sd	s4,40(sp)
    e88714a2:	f856                	sd	s5,48(sp)
    e88714a4:	892a                	mv	s2,a0
	pthread_mutex_lock( inClock->lockPtr );
    e88714a6:	6548                	ld	a0,136(a0)
{
    e88714a8:	8a32                	mv	s4,a2
    e88714aa:	842e                	mv	s0,a1
	pthread_mutex_lock( inClock->lockPtr );
    e88714ac:	6720a0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		nowTicks	= UpTicks();
    e88714b0:	d15ef0ef          	jal	ra,e88611c4 <UpTicks>
    e88714b4:	89aa                	mv	s3,a0
		nowTicks32	= ( (uint32_t)( nowTicks & UINT32_C( 0xFFFFFFFF ) ) );
    e88714b6:	0005079b          	sext.w	a5,a0
		deltaTicks	= future ? ( inTicks - nowTicks ) : ( nowTicks - inTicks );
    e88714ba:	414504b3          	sub	s1,a0,s4
    e88714be:	01457463          	bgeu	a0,s4,e88714c6 <AirTunesClock_GetSynchronizedTimeNearUpTicks+0x32>
    e88714c2:	40aa04b3          	sub	s1,s4,a0
		*outTime = inClock->upTime;
    e88714c6:	01093703          	ld	a4,16(s2)
    e88714ca:	e018                	sd	a4,0(s0)
    e88714cc:	01893703          	ld	a4,24(s2)
    e88714d0:	e418                	sd	a4,8(s0)
		AirTunesTime_AddFrac( outTime, inClock->scale * ( nowTicks32 - inClock->lastCount ) );
    e88714d2:	04092683          	lw	a3,64(s2)
	inTime->frac = frac + inFrac;
    e88714d6:	863a                	mv	a2,a4
    e88714d8:	9f95                	subw	a5,a5,a3
    e88714da:	03893683          	ld	a3,56(s2)
    e88714de:	7c07b78b          	extu	a5,a5,31,0
    e88714e2:	20d7960b          	mula	a2,a5,a3
    e88714e6:	e410                	sd	a2,8(s0)
    e88714e8:	87b2                	mv	a5,a2
	if( frac > inTime->frac ) inTime->secs += 1; // Increment seconds on fraction wrap.
    e88714ea:	00e67563          	bgeu	a2,a4,e88714f4 <AirTunesClock_GetSynchronizedTimeNearUpTicks+0x60>
    e88714ee:	4018                	lw	a4,0(s0)
    e88714f0:	2705                	addiw	a4,a4,1
    e88714f2:	c018                	sw	a4,0(s0)
	inTime->frac = frac + inTimeToAdd->frac;
    e88714f4:	00893703          	ld	a4,8(s2)
    e88714f8:	973e                	add	a4,a4,a5
    e88714fa:	e418                	sd	a4,8(s0)
	if( frac > inTime->frac ) inTime->secs += 1; // Increment seconds on fraction wrap.
    e88714fc:	00f77563          	bgeu	a4,a5,e8871506 <AirTunesClock_GetSynchronizedTimeNearUpTicks+0x72>
    e8871500:	401c                	lw	a5,0(s0)
    e8871502:	2785                	addiw	a5,a5,1
    e8871504:	c01c                	sw	a5,0(s0)
	inTime->secs += inTimeToAdd->secs;
    e8871506:	00092703          	lw	a4,0(s2)
    e887150a:	401c                	lw	a5,0(s0)
    e887150c:	9fb9                	addw	a5,a5,a4
    e887150e:	c01c                	sw	a5,0(s0)
	pthread_mutex_unlock( inClock->lockPtr );
    e8871510:	08893503          	ld	a0,136(s2)
		scale = inClock->scale;
    e8871514:	03893a83          	ld	s5,56(s2)
	pthread_mutex_unlock( inClock->lockPtr );
    e8871518:	64a0a0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	deltaTime.secs = (int32_t)( deltaTicks / inClock->frequency ); // Note: unscaled, but delta expected to be < 1 sec.
    e887151c:	03093783          	ld	a5,48(s2)
    e8871520:	6414                	ld	a3,8(s0)
    e8871522:	02f4d733          	divu	a4,s1,a5
	deltaTime.frac = ( deltaTicks % inClock->frequency ) * scale;
    e8871526:	02f4f4b3          	remu	s1,s1,a5
	deltaTime.secs = (int32_t)( deltaTicks / inClock->frequency ); // Note: unscaled, but delta expected to be < 1 sec.
    e887152a:	2701                	sext.w	a4,a4
	deltaTime.frac = ( deltaTicks % inClock->frequency ) * scale;
    e887152c:	401c                	lw	a5,0(s0)
    e887152e:	035484b3          	mul	s1,s1,s5
	if( future )	AirTunesTime_Add( outTime, &deltaTime );
    e8871532:	0349f463          	bgeu	s3,s4,e887155a <AirTunesClock_GetSynchronizedTimeNearUpTicks+0xc6>
	inTime->frac = frac + inTimeToAdd->frac;
    e8871536:	94b6                	add	s1,s1,a3
    e8871538:	e404                	sd	s1,8(s0)
	if( frac > inTime->frac ) inTime->secs += 1; // Increment seconds on fraction wrap.
    e887153a:	00d4f463          	bgeu	s1,a3,e8871542 <AirTunesClock_GetSynchronizedTimeNearUpTicks+0xae>
    e887153e:	2785                	addiw	a5,a5,1
    e8871540:	c01c                	sw	a5,0(s0)
	inTime->secs += inTimeToAdd->secs;
    e8871542:	401c                	lw	a5,0(s0)
    e8871544:	9f3d                	addw	a4,a4,a5
	inTime->secs -= inTimeToSub->secs;
    e8871546:	c018                	sw	a4,0(s0)
}
    e8871548:	70e2                	ld	ra,56(sp)
    e887154a:	6422                	ld	s0,8(sp)
    e887154c:	64c2                	ld	s1,16(sp)
    e887154e:	6962                	ld	s2,24(sp)
    e8871550:	7982                	ld	s3,32(sp)
    e8871552:	7a22                	ld	s4,40(sp)
    e8871554:	7ac2                	ld	s5,48(sp)
    e8871556:	6121                	addi	sp,sp,64
    e8871558:	8082                	ret
	inTime->frac = frac - inTimeToSub->frac;
    e887155a:	409684b3          	sub	s1,a3,s1
    e887155e:	e404                	sd	s1,8(s0)
	if( frac < inTime->frac ) inTime->secs -= 1; // Decrement seconds on fraction wrap.
    e8871560:	0096f463          	bgeu	a3,s1,e8871568 <AirTunesClock_GetSynchronizedTimeNearUpTicks+0xd4>
    e8871564:	37fd                	addiw	a5,a5,-1
    e8871566:	c01c                	sw	a5,0(s0)
	inTime->secs -= inTimeToSub->secs;
    e8871568:	401c                	lw	a5,0(s0)
    e887156a:	40e7873b          	subw	a4,a5,a4
    e887156e:	bfe1                	j	e8871546 <AirTunesClock_GetSynchronizedTimeNearUpTicks+0xb2>

00000000e8871570 <AirTunesClock_GetUpTicksNearSynchronizedNTPTime>:
{
    e8871570:	1101                	addi	sp,sp,-32
    e8871572:	e84a                	sd	s2,16(sp)
    e8871574:	f891540b          	sdd	s0,s1,(sp),0,4
    e8871578:	ec06                	sd	ra,24(sp)
    e887157a:	84ae                	mv	s1,a1
	nowNTP = AirTunesClock_GetSynchronizedNTPTime( inClock );
    e887157c:	effff0ef          	jal	ra,e887147a <AirTunesClock_GetSynchronizedNTPTime>
    e8871580:	892a                	mv	s2,a0
	if( inNTPTime >= nowNTP )	ticks = UpTicks() + NTPtoUpTicks( inNTPTime - nowNTP );
    e8871582:	02a4e063          	bltu	s1,a0,e88715a2 <AirTunesClock_GetUpTicksNearSynchronizedNTPTime+0x32>
    e8871586:	c3fef0ef          	jal	ra,e88611c4 <UpTicks>
    e887158a:	842a                	mv	s0,a0
    e887158c:	41248533          	sub	a0,s1,s2
    e8871590:	d3def0ef          	jal	ra,e88612cc <NTPtoUpTicks>
    e8871594:	9522                	add	a0,a0,s0
}
    e8871596:	60e2                	ld	ra,24(sp)
    e8871598:	f891440b          	ldd	s0,s1,(sp),0,4
    e887159c:	6942                	ld	s2,16(sp)
    e887159e:	6105                	addi	sp,sp,32
    e88715a0:	8082                	ret
	else						ticks = UpTicks() - NTPtoUpTicks( nowNTP    - inNTPTime );
    e88715a2:	c23ef0ef          	jal	ra,e88611c4 <UpTicks>
    e88715a6:	842a                	mv	s0,a0
    e88715a8:	40990533          	sub	a0,s2,s1
    e88715ac:	d21ef0ef          	jal	ra,e88612cc <NTPtoUpTicks>
    e88715b0:	40a40533          	sub	a0,s0,a0
	return( ticks );
    e88715b4:	b7cd                	j	e8871596 <AirTunesClock_GetUpTicksNearSynchronizedNTPTime+0x26>

00000000e88715b6 <_CarPlayBonjourServiceGetAddress>:
static void _CarPlayBonjourServiceGetAddress( void *inCtx )
{
	OSStatus					err;
	_GetAddressContext *		context	= (_GetAddressContext*) inCtx;
	
	require_action( context->service->hostName, exit, err = kNotFoundErr );
    e88715b6:	611c                	ld	a5,0(a0)
    e88715b8:	7398                	ld	a4,32(a5)
    e88715ba:	cb19                	beqz	a4,e88715d0 <_CarPlayBonjourServiceGetAddress+0x1a>
	
	context->hostName = context->service->hostName;
    e88715bc:	e518                	sd	a4,8(a0)
	context->port = context->service->port;
    e88715be:	0287d703          	lhu	a4,40(a5) # 3d09028 <memcmp-0xe4af6fd8>
    e88715c2:	00e51823          	sh	a4,16(a0)
	context->interfaceNdx = context->service->interfaceNdx;
    e88715c6:	57dc                	lw	a5,44(a5)
    e88715c8:	c95c                	sw	a5,20(a0)
	
	err = kNoErr;
    e88715ca:	4781                	li	a5,0
	
exit:
	context->err = err;
    e88715cc:	cd1c                	sw	a5,24(a0)
}
    e88715ce:	8082                	ret
	require_action( context->service->hostName, exit, err = kNotFoundErr );
    e88715d0:	77f9                	lui	a5,0xffffe
    e88715d2:	5b978793          	addi	a5,a5,1465 # ffffffffffffe5b9 <__DRAM0_INF_BASE+0xffffffff0000e5b9>
    e88715d6:	bfdd                	j	e88715cc <_CarPlayBonjourServiceGetAddress+0x16>

00000000e88715d8 <_CarPlayControllerGetTypeID>:
//===========================================================================================================================
//	CarPlayControllerGetTypeID
//===========================================================================================================================

static void _CarPlayControllerGetTypeID( void *inCtx )
{
    e88715d8:	1141                	addi	sp,sp,-16
    e88715da:	e022                	sd	s0,0(sp)
    e88715dc:	842a                	mv	s0,a0
		NULL,							// copyDebugDesc
		NULL,							// reclaim
		NULL							// refcount
	};

	*( (CFTypeID*) inCtx ) = _CFRuntimeRegisterClass( &kCarPlayControllerClass );
    e88715de:	0005b517          	auipc	a0,0x5b
    e88715e2:	14a50513          	addi	a0,a0,330 # e88cc728 <kCarPlayControllerClass.11452>
{
    e88715e6:	e406                	sd	ra,8(sp)
	*( (CFTypeID*) inCtx ) = _CFRuntimeRegisterClass( &kCarPlayControllerClass );
    e88715e8:	966d60ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e88715ec:	c008                	sw	a0,0(s0)
}
    e88715ee:	60a2                	ld	ra,8(sp)
    e88715f0:	6402                	ld	s0,0(sp)
    e88715f2:	0141                	addi	sp,sp,16
    e88715f4:	8082                	ret

00000000e88715f6 <_CarPlayControlClientGetTypeID>:
//===========================================================================================================================
//	_CarPlayControlClientGetTypeID
//===========================================================================================================================

static void _CarPlayControlClientGetTypeID( void *inCtx )
{
    e88715f6:	1141                	addi	sp,sp,-16
    e88715f8:	e022                	sd	s0,0(sp)
    e88715fa:	842a                	mv	s0,a0
		NULL,							// copyDebugDesc
		NULL,							// reclaim
		NULL							// refcount
	};

	*( (CFTypeID*) inCtx ) = _CFRuntimeRegisterClass( &kCarPlayControlClientClass );
    e88715fc:	0005b517          	auipc	a0,0x5b
    e8871600:	0d450513          	addi	a0,a0,212 # e88cc6d0 <kCarPlayControlClientClass.11637>
{
    e8871604:	e406                	sd	ra,8(sp)
	*( (CFTypeID*) inCtx ) = _CFRuntimeRegisterClass( &kCarPlayControlClientClass );
    e8871606:	948d60ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e887160a:	c008                	sw	a0,0(s0)
}
    e887160c:	60a2                	ld	ra,8(sp)
    e887160e:	6402                	ld	s0,0(sp)
    e8871610:	0141                	addi	sp,sp,16
    e8871612:	8082                	ret

00000000e8871614 <_CarPlayBonjourServiceGetTypeID>:
{
    e8871614:	1141                	addi	sp,sp,-16
    e8871616:	e022                	sd	s0,0(sp)
    e8871618:	842a                	mv	s0,a0
	*( (CFTypeID*) inCtx ) = _CFRuntimeRegisterClass( &kCarPlayBonjourServiceClass );
    e887161a:	0005b517          	auipc	a0,0x5b
    e887161e:	05e50513          	addi	a0,a0,94 # e88cc678 <kCarPlayBonjourServiceClass.11346>
{
    e8871622:	e406                	sd	ra,8(sp)
	*( (CFTypeID*) inCtx ) = _CFRuntimeRegisterClass( &kCarPlayBonjourServiceClass );
    e8871624:	92ad60ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8871628:	c008                	sw	a0,0(s0)
}
    e887162a:	60a2                	ld	ra,8(sp)
    e887162c:	6402                	ld	s0,0(sp)
    e887162e:	0141                	addi	sp,sp,16
    e8871630:	8082                	ret

00000000e8871632 <_CarPlayControllerFinalize>:
{
    e8871632:	1141                	addi	sp,sp,-16
    e8871634:	e022                	sd	s0,0(sp)
    e8871636:	e406                	sd	ra,8(sp)
    e8871638:	842a                	mv	s0,a0
	dispatch_forget( &controller->internalQueue );
    e887163a:	6908                	ld	a0,16(a0)
    e887163c:	c509                	beqz	a0,e8871646 <_CarPlayControllerFinalize+0x14>
    e887163e:	c12dd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8871642:	00043823          	sd	zero,16(s0)
	ForgetCF( &controller->device );
    e8871646:	6c08                	ld	a0,24(s0)
    e8871648:	c509                	beqz	a0,e8871652 <_CarPlayControllerFinalize+0x20>
    e887164a:	b01d50ef          	jal	ra,e884714a <CFRelease>
    e887164e:	00043c23          	sd	zero,24(s0)
	ForgetCF( &controller->activeServices );
    e8871652:	7008                	ld	a0,32(s0)
    e8871654:	c509                	beqz	a0,e887165e <_CarPlayControllerFinalize+0x2c>
    e8871656:	af5d50ef          	jal	ra,e884714a <CFRelease>
    e887165a:	02043023          	sd	zero,32(s0)
	ForgetCF( &controller->inactiveWiFiServices );
    e887165e:	7408                	ld	a0,40(s0)
    e8871660:	c509                	beqz	a0,e887166a <_CarPlayControllerFinalize+0x38>
    e8871662:	ae9d50ef          	jal	ra,e884714a <CFRelease>
    e8871666:	02043423          	sd	zero,40(s0)
	cpcc_ulog( kLogLevelVerbose, "Finalized CarPlayController [%p]\n", inObj );
    e887166a:	00064517          	auipc	a0,0x64
    e887166e:	e3650513          	addi	a0,a0,-458 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8871672:	411c                	lw	a5,0(a0)
	controller->client = NULL;
    e8871674:	00043423          	sd	zero,8(s0)
	cpcc_ulog( kLogLevelVerbose, "Finalized CarPlayController [%p]\n", inObj );
    e8871678:	4751                	li	a4,20
    e887167a:	02f74c63          	blt	a4,a5,e88716b2 <_CarPlayControllerFinalize+0x80>
    e887167e:	577d                	li	a4,-1
    e8871680:	02e78563          	beq	a5,a4,e88716aa <_CarPlayControllerFinalize+0x78>
    e8871684:	8722                	mv	a4,s0
}
    e8871686:	6402                	ld	s0,0(sp)
    e8871688:	60a2                	ld	ra,8(sp)
	cpcc_ulog( kLogLevelVerbose, "Finalized CarPlayController [%p]\n", inObj );
    e887168a:	0005b697          	auipc	a3,0x5b
    e887168e:	dc668693          	addi	a3,a3,-570 # e88cc450 <__PRETTY_FUNCTION__.9875+0x5a0>
    e8871692:	4651                	li	a2,20
    e8871694:	0005b597          	auipc	a1,0x5b
    e8871698:	e4c58593          	addi	a1,a1,-436 # e88cc4e0 <__PRETTY_FUNCTION__.11448>
    e887169c:	00064517          	auipc	a0,0x64
    e88716a0:	e0450513          	addi	a0,a0,-508 # e88d54a0 <gLogCategory_CarPlayControlClient>
}
    e88716a4:	0141                	addi	sp,sp,16
	cpcc_ulog( kLogLevelVerbose, "Finalized CarPlayController [%p]\n", inObj );
    e88716a6:	dcfe206f          	j	e8854474 <LogPrintF>
    e88716aa:	45d1                	li	a1,20
    e88716ac:	9c7e20ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88716b0:	f971                	bnez	a0,e8871684 <_CarPlayControllerFinalize+0x52>
}
    e88716b2:	60a2                	ld	ra,8(sp)
    e88716b4:	6402                	ld	s0,0(sp)
    e88716b6:	0141                	addi	sp,sp,16
    e88716b8:	8082                	ret

00000000e88716ba <_CarPlayControlClientFinalize>:
{
    e88716ba:	1141                	addi	sp,sp,-16
    e88716bc:	e022                	sd	s0,0(sp)
    e88716be:	842a                	mv	s0,a0
	cpcc_ulog( kLogLevelTrace, "CarPlayControlClient %p Finalized\n", inCF );
    e88716c0:	00064517          	auipc	a0,0x64
    e88716c4:	de050513          	addi	a0,a0,-544 # e88d54a0 <gLogCategory_CarPlayControlClient>
{
    e88716c8:	e406                	sd	ra,8(sp)
	cpcc_ulog( kLogLevelTrace, "CarPlayControlClient %p Finalized\n", inCF );
    e88716ca:	411c                	lw	a5,0(a0)
    e88716cc:	4779                	li	a4,30
    e88716ce:	02f74563          	blt	a4,a5,e88716f8 <_CarPlayControlClientFinalize+0x3e>
    e88716d2:	577d                	li	a4,-1
    e88716d4:	06e78463          	beq	a5,a4,e887173c <_CarPlayControlClientFinalize+0x82>
    e88716d8:	8722                	mv	a4,s0
    e88716da:	0005b697          	auipc	a3,0x5b
    e88716de:	c1e68693          	addi	a3,a3,-994 # e88cc2f8 <__PRETTY_FUNCTION__.9875+0x448>
    e88716e2:	4679                	li	a2,30
    e88716e4:	0005b597          	auipc	a1,0x5b
    e88716e8:	eb458593          	addi	a1,a1,-332 # e88cc598 <__PRETTY_FUNCTION__.11633>
    e88716ec:	00064517          	auipc	a0,0x64
    e88716f0:	db450513          	addi	a0,a0,-588 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e88716f4:	d81e20ef          	jal	ra,e8854474 <LogPrintF>
	dispatch_forget( &client->internalQueue );
    e88716f8:	6408                	ld	a0,8(s0)
    e88716fa:	c509                	beqz	a0,e8871704 <_CarPlayControlClientFinalize+0x4a>
    e88716fc:	b54dd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8871700:	00043423          	sd	zero,8(s0)
	dispatch_forget( &client->httpQueue );
    e8871704:	6808                	ld	a0,16(s0)
    e8871706:	c509                	beqz	a0,e8871710 <_CarPlayControlClientFinalize+0x56>
    e8871708:	b48dd0ef          	jal	ra,e884ea50 <dispatch_release>
    e887170c:	00043823          	sd	zero,16(s0)
	dispatch_forget( &client->eventQueue );
    e8871710:	6c08                	ld	a0,24(s0)
    e8871712:	c509                	beqz	a0,e887171c <_CarPlayControlClientFinalize+0x62>
    e8871714:	b3cdd0ef          	jal	ra,e884ea50 <dispatch_release>
    e8871718:	00043c23          	sd	zero,24(s0)
	ForgetCF( &client->controllers );
    e887171c:	6028                	ld	a0,64(s0)
    e887171e:	c509                	beqz	a0,e8871728 <_CarPlayControlClientFinalize+0x6e>
    e8871720:	a2bd50ef          	jal	ra,e884714a <CFRelease>
    e8871724:	04043023          	sd	zero,64(s0)
	ForgetCF( &client->server );
    e8871728:	6428                	ld	a0,72(s0)
    e887172a:	c509                	beqz	a0,e8871734 <_CarPlayControlClientFinalize+0x7a>
    e887172c:	a1fd50ef          	jal	ra,e884714a <CFRelease>
    e8871730:	04043423          	sd	zero,72(s0)
}
    e8871734:	60a2                	ld	ra,8(sp)
    e8871736:	6402                	ld	s0,0(sp)
    e8871738:	0141                	addi	sp,sp,16
    e887173a:	8082                	ret
	cpcc_ulog( kLogLevelTrace, "CarPlayControlClient %p Finalized\n", inCF );
    e887173c:	45f9                	li	a1,30
    e887173e:	935e20ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8871742:	d95d                	beqz	a0,e88716f8 <_CarPlayControlClientFinalize+0x3e>
    e8871744:	bf51                	j	e88716d8 <_CarPlayControlClientFinalize+0x1e>

00000000e8871746 <_CarPlayControllerCopyCurrentDeviceInternal>:
{
    e8871746:	1141                	addi	sp,sp,-16
    e8871748:	e406                	sd	ra,8(sp)
    e887174a:	e022                	sd	s0,0(sp)
	*ctx->device = (CFDictionaryRef) CFRetain( ctx->controller->device );
    e887174c:	611c                	ld	a5,0(a0)
    e887174e:	6500                	ld	s0,8(a0)
    e8871750:	6f88                	ld	a0,24(a5)
    e8871752:	9f5d50ef          	jal	ra,e8847146 <CFRetain>
    e8871756:	e008                	sd	a0,0(s0)
}
    e8871758:	60a2                	ld	ra,8(sp)
    e887175a:	6402                	ld	s0,0(sp)
    e887175c:	0141                	addi	sp,sp,16
    e887175e:	8082                	ret

00000000e8871760 <_CarPlayControllerCopyCurrentDevice>:
{
    e8871760:	7179                	addi	sp,sp,-48
    e8871762:	f406                	sd	ra,40(sp)
	ctx.controller = inController;
    e8871764:	e82a                	sd	a0,16(sp)
	dispatch_sync_f( inController->internalQueue, &ctx, _CarPlayControllerCopyCurrentDeviceInternal );
    e8871766:	6908                	ld	a0,16(a0)
	ctx.device = &device;
    e8871768:	003c                	addi	a5,sp,8
	dispatch_sync_f( inController->internalQueue, &ctx, _CarPlayControllerCopyCurrentDeviceInternal );
    e887176a:	080c                	addi	a1,sp,16
    e887176c:	00000617          	auipc	a2,0x0
    e8871770:	fda60613          	addi	a2,a2,-38 # e8871746 <_CarPlayControllerCopyCurrentDeviceInternal>
	ctx.device = &device;
    e8871774:	ec3e                	sd	a5,24(sp)
	dispatch_sync_f( inController->internalQueue, &ctx, _CarPlayControllerCopyCurrentDeviceInternal );
    e8871776:	da8dd0ef          	jal	ra,e884ed1e <dispatch_sync_f>
}
    e887177a:	70a2                	ld	ra,40(sp)
    e887177c:	6522                	ld	a0,8(sp)
    e887177e:	6145                	addi	sp,sp,48
    e8871780:	8082                	ret

00000000e8871782 <_CarPlayControllerUpdate>:
{
    e8871782:	7179                	addi	sp,sp,-48
    e8871784:	f406                	sd	ra,40(sp)
    e8871786:	f022                	sd	s0,32(sp)
	_UpdateDeviceContext		ctx = { inController, inDevice, 0 };
    e8871788:	e42a                	sd	a0,8(sp)
    e887178a:	e82e                	sd	a1,16(sp)
    e887178c:	cc02                	sw	zero,24(sp)
	require( inController, exit );
    e887178e:	cd09                	beqz	a0,e88717a8 <_CarPlayControllerUpdate+0x26>
	dispatch_sync_f( inController->internalQueue, &ctx, _CarPlayControllerUpdateInternal );
    e8871790:	6908                	ld	a0,16(a0)
    e8871792:	8432                	mv	s0,a2
    e8871794:	002c                	addi	a1,sp,8
    e8871796:	00000617          	auipc	a2,0x0
    e887179a:	03a60613          	addi	a2,a2,58 # e88717d0 <_CarPlayControllerUpdateInternal>
    e887179e:	d80dd0ef          	jal	ra,e884ed1e <dispatch_sync_f>
	if( outServiceCount )
    e88717a2:	c019                	beqz	s0,e88717a8 <_CarPlayControllerUpdate+0x26>
		*outServiceCount = ctx.newServiceCount;
    e88717a4:	47e2                	lw	a5,24(sp)
    e88717a6:	c01c                	sw	a5,0(s0)
}
    e88717a8:	70a2                	ld	ra,40(sp)
    e88717aa:	7402                	ld	s0,32(sp)
    e88717ac:	6145                	addi	sp,sp,48
    e88717ae:	8082                	ret

00000000e88717b0 <_CarPlayControlClientEnsureStopped>:
//===========================================================================================================================
//	_CarPlayControlClientEnsureStopped
//===========================================================================================================================

static void	_CarPlayControlClientEnsureStopped( void *inCtx )
{
    e88717b0:	1141                	addi	sp,sp,-16
    e88717b2:	e022                	sd	s0,0(sp)
    e88717b4:	e406                	sd	ra,8(sp)
	CarPlayControlClient *		client = (CarPlayControlClient*) inCtx;

	require_quiet( client->started, exit );
    e88717b6:	03054783          	lbu	a5,48(a0)
{
    e88717ba:	842a                	mv	s0,a0
	require_quiet( client->started, exit );
    e88717bc:	c781                	beqz	a5,e88717c4 <_CarPlayControlClientEnsureStopped+0x14>
	BonjourBrowser_Stop( client->browser );
    e88717be:	7d08                	ld	a0,56(a0)
    e88717c0:	c90d50ef          	jal	ra,e8846c50 <BonjourBrowser_Stop>

exit:
	CFRelease( client );
    e88717c4:	8522                	mv	a0,s0
}
    e88717c6:	6402                	ld	s0,0(sp)
    e88717c8:	60a2                	ld	ra,8(sp)
    e88717ca:	0141                	addi	sp,sp,16
	CFRelease( client );
    e88717cc:	97fd506f          	j	e884714a <CFRelease>

00000000e88717d0 <_CarPlayControllerUpdateInternal>:
{
    e88717d0:	7179                	addi	sp,sp,-48
    e88717d2:	f406                	sd	ra,40(sp)
    e88717d4:	e422                	sd	s0,8(sp)
    e88717d6:	ec4a                	sd	s2,24(sp)
    e88717d8:	f04e                	sd	s3,32(sp)
    e88717da:	e826                	sd	s1,16(sp)
	removedServices = CFDictionaryGetCFArray( ctx->device, CFSTR( kBonjourDeviceKey_RemovedServices ), NULL );
    e88717dc:	6504                	ld	s1,8(a0)
{
    e88717de:	842a                	mv	s0,a0
	removedServices = CFDictionaryGetCFArray( ctx->device, CFSTR( kBonjourDeviceKey_RemovedServices ), NULL );
    e88717e0:	989d50ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e88717e4:	0005061b          	sext.w	a2,a0
    e88717e8:	4681                	li	a3,0
    e88717ea:	0002d597          	auipc	a1,0x2d
    e88717ee:	00e58593          	addi	a1,a1,14 # e889e7f8 <icmp6_param_problem+0x178a>
    e88717f2:	8526                	mv	a0,s1
    e88717f4:	eb7da0ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
	deviceServices = CFDictionaryGetCFArray( ctx->device, CFSTR( kBonjourDeviceKey_Services ), NULL );
    e88717f8:	6404                	ld	s1,8(s0)
	removedServices = CFDictionaryGetCFArray( ctx->device, CFSTR( kBonjourDeviceKey_RemovedServices ), NULL );
    e88717fa:	89aa                	mv	s3,a0
	deviceServices = CFDictionaryGetCFArray( ctx->device, CFSTR( kBonjourDeviceKey_Services ), NULL );
    e88717fc:	96dd50ef          	jal	ra,e8847168 <CFArrayGetTypeID>
    e8871800:	0005061b          	sext.w	a2,a0
    e8871804:	4681                	li	a3,0
    e8871806:	8526                	mv	a0,s1
    e8871808:	0002d597          	auipc	a1,0x2d
    e887180c:	00858593          	addi	a1,a1,8 # e889e810 <icmp6_param_problem+0x17a2>
    e8871810:	e9bda0ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8871814:	892a                	mv	s2,a0
	oldDevice = ctx->controller->device;
    e8871816:	601c                	ld	a5,0(s0)
    e8871818:	6f84                	ld	s1,24(a5)
	CFRetainNullSafe( oldDevice );
    e887181a:	c481                	beqz	s1,e8871822 <_CarPlayControllerUpdateInternal+0x52>
    e887181c:	8526                	mv	a0,s1
    e887181e:	929d50ef          	jal	ra,e8847146 <CFRetain>
	if( ctx->device )	BonjourDevice_MergeInfo( &ctx->controller->device, ctx->device );
    e8871822:	6008                	ld	a0,0(s0)
    e8871824:	640c                	ld	a1,8(s0)
    e8871826:	0561                	addi	a0,a0,24
    e8871828:	c5bd                	beqz	a1,e8871896 <_CarPlayControllerUpdateInternal+0xc6>
    e887182a:	d1ad50ef          	jal	ra,e8846d44 <BonjourDevice_MergeInfo>
	if( removedServices )
    e887182e:	00098f63          	beqz	s3,e887184c <_CarPlayControllerUpdateInternal+0x7c>
		CFArrayApplyFunction( removedServices, CFRangeMake( 0, CFArrayGetCount( removedServices ) ),
    e8871832:	854e                	mv	a0,s3
    e8871834:	9bfd50ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8871838:	02051593          	slli	a1,a0,0x20
    e887183c:	6014                	ld	a3,0(s0)
    e887183e:	00000617          	auipc	a2,0x0
    e8871842:	19860613          	addi	a2,a2,408 # e88719d6 <_CarPlayControllerDeactivateService>
    e8871846:	854e                	mv	a0,s3
    e8871848:	947d60ef          	jal	ra,e884818e <CFLArrayApplyFunction>
	if( deviceServices )
    e887184c:	00090f63          	beqz	s2,e887186a <_CarPlayControllerUpdateInternal+0x9a>
		CFArrayApplyFunction( deviceServices, CFRangeMake( 0, CFArrayGetCount( deviceServices ) ),
    e8871850:	854a                	mv	a0,s2
    e8871852:	9a1d50ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8871856:	02051593          	slli	a1,a0,0x20
    e887185a:	6014                	ld	a3,0(s0)
    e887185c:	00001617          	auipc	a2,0x1
    e8871860:	d5460613          	addi	a2,a2,-684 # e88725b0 <_CarPlayControllerActivateService>
    e8871864:	854a                	mv	a0,s2
    e8871866:	929d60ef          	jal	ra,e884818e <CFLArrayApplyFunction>
	ctx->newServiceCount = CFDictionaryGetCount( ctx->controller->activeServices ) +
    e887186a:	601c                	ld	a5,0(s0)
    e887186c:	7388                	ld	a0,32(a5)
    e887186e:	bbdd50ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e8871872:	892a                	mv	s2,a0
							CFDictionaryGetCount( ctx->controller->inactiveWiFiServices );
    e8871874:	601c                	ld	a5,0(s0)
    e8871876:	7788                	ld	a0,40(a5)
    e8871878:	bb3d50ef          	jal	ra,e884742a <CFDictionaryGetCount>
	ctx->newServiceCount = CFDictionaryGetCount( ctx->controller->activeServices ) +
    e887187c:	0125053b          	addw	a0,a0,s2
    e8871880:	c808                	sw	a0,16(s0)
	CFReleaseNullSafe( oldDevice );
    e8871882:	c095                	beqz	s1,e88718a6 <_CarPlayControllerUpdateInternal+0xd6>
}
    e8871884:	6422                	ld	s0,8(sp)
    e8871886:	70a2                	ld	ra,40(sp)
    e8871888:	6962                	ld	s2,24(sp)
    e887188a:	7982                	ld	s3,32(sp)
	CFReleaseNullSafe( oldDevice );
    e887188c:	8526                	mv	a0,s1
}
    e887188e:	64c2                	ld	s1,16(sp)
    e8871890:	6145                	addi	sp,sp,48
	CFReleaseNullSafe( oldDevice );
    e8871892:	8b9d506f          	j	e884714a <CFRelease>
	else				BonjourDevice_RemoveInterfaceInfo( &ctx->controller->device, "", true );
    e8871896:	4605                	li	a2,1
    e8871898:	00050597          	auipc	a1,0x50
    e887189c:	9d858593          	addi	a1,a1,-1576 # e88c1270 <kHTTPServerClass+0x90>
    e88718a0:	f7ed50ef          	jal	ra,e884701e <BonjourDevice_RemoveInterfaceInfo>
    e88718a4:	b769                	j	e887182e <_CarPlayControllerUpdateInternal+0x5e>
}
    e88718a6:	70a2                	ld	ra,40(sp)
    e88718a8:	6422                	ld	s0,8(sp)
    e88718aa:	64c2                	ld	s1,16(sp)
    e88718ac:	6962                	ld	s2,24(sp)
    e88718ae:	7982                	ld	s3,32(sp)
    e88718b0:	6145                	addi	sp,sp,48
    e88718b2:	8082                	ret

00000000e88718b4 <_CarPlayBonjourServiceFinalize>:
{
    e88718b4:	1141                	addi	sp,sp,-16
    e88718b6:	e022                	sd	s0,0(sp)
    e88718b8:	e406                	sd	ra,8(sp)
    e88718ba:	842a                	mv	s0,a0
	dispatch_forget( &service->queue );
    e88718bc:	6508                	ld	a0,8(a0)
    e88718be:	c509                	beqz	a0,e88718c8 <_CarPlayBonjourServiceFinalize+0x14>
    e88718c0:	990dd0ef          	jal	ra,e884ea50 <dispatch_release>
    e88718c4:	00043423          	sd	zero,8(s0)
	ForgetCF( &service->bonjourservice );
    e88718c8:	6808                	ld	a0,16(s0)
    e88718ca:	c509                	beqz	a0,e88718d4 <_CarPlayBonjourServiceFinalize+0x20>
    e88718cc:	87fd50ef          	jal	ra,e884714a <CFRelease>
    e88718d0:	00043823          	sd	zero,16(s0)
	ForgetCF( &service->serviceType );
    e88718d4:	6c08                	ld	a0,24(s0)
    e88718d6:	c509                	beqz	a0,e88718e0 <_CarPlayBonjourServiceFinalize+0x2c>
    e88718d8:	873d50ef          	jal	ra,e884714a <CFRelease>
    e88718dc:	00043c23          	sd	zero,24(s0)
	ForgetMem( &service->hostName );
    e88718e0:	7008                	ld	a0,32(s0)
    e88718e2:	c509                	beqz	a0,e88718ec <_CarPlayBonjourServiceFinalize+0x38>
    e88718e4:	21d0a0ef          	jal	ra,e887c300 <eLIBs_free>
    e88718e8:	02043023          	sd	zero,32(s0)
	cpcc_ulog( kLogLevelVerbose, "Finalized CarPlayBonjourService [%p]\n", inObj );
    e88718ec:	00064517          	auipc	a0,0x64
    e88718f0:	bb450513          	addi	a0,a0,-1100 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e88718f4:	411c                	lw	a5,0(a0)
    e88718f6:	4751                	li	a4,20
    e88718f8:	02f74c63          	blt	a4,a5,e8871930 <_CarPlayBonjourServiceFinalize+0x7c>
    e88718fc:	577d                	li	a4,-1
    e88718fe:	02e78563          	beq	a5,a4,e8871928 <_CarPlayBonjourServiceFinalize+0x74>
    e8871902:	8722                	mv	a4,s0
}
    e8871904:	6402                	ld	s0,0(sp)
    e8871906:	60a2                	ld	ra,8(sp)
	cpcc_ulog( kLogLevelVerbose, "Finalized CarPlayBonjourService [%p]\n", inObj );
    e8871908:	0005a697          	auipc	a3,0x5a
    e887190c:	6e068693          	addi	a3,a3,1760 # e88cbfe8 <__PRETTY_FUNCTION__.9875+0x138>
    e8871910:	4651                	li	a2,20
    e8871912:	0005b597          	auipc	a1,0x5b
    e8871916:	b6658593          	addi	a1,a1,-1178 # e88cc478 <__PRETTY_FUNCTION__.11342>
    e887191a:	00064517          	auipc	a0,0x64
    e887191e:	b8650513          	addi	a0,a0,-1146 # e88d54a0 <gLogCategory_CarPlayControlClient>
}
    e8871922:	0141                	addi	sp,sp,16
	cpcc_ulog( kLogLevelVerbose, "Finalized CarPlayBonjourService [%p]\n", inObj );
    e8871924:	b51e206f          	j	e8854474 <LogPrintF>
    e8871928:	45d1                	li	a1,20
    e887192a:	f48e20ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e887192e:	f971                	bnez	a0,e8871902 <_CarPlayBonjourServiceFinalize+0x4e>
}
    e8871930:	60a2                	ld	ra,8(sp)
    e8871932:	6402                	ld	s0,0(sp)
    e8871934:	0141                	addi	sp,sp,16
    e8871936:	8082                	ret

00000000e8871938 <_CarPlayControlClientCallEventCallback>:
	OSStatus					err;
	const void *				eventInfo;
} CallbackContext;

static void _CarPlayControlClientCallEventCallback( void *inCtx )
{
    e8871938:	1141                	addi	sp,sp,-16
    e887193a:	e022                	sd	s0,0(sp)
    e887193c:	842a                	mv	s0,a0
	CallbackContext *		ctx = (CallbackContext*) inCtx;
	
	cpcc_ulog( kLogLevelTrace, "Posting event: %s\n", CarPlayControlEventToString( ctx->event ) );
    e887193e:	00064517          	auipc	a0,0x64
    e8871942:	b6250513          	addi	a0,a0,-1182 # e88d54a0 <gLogCategory_CarPlayControlClient>
{
    e8871946:	e406                	sd	ra,8(sp)
	cpcc_ulog( kLogLevelTrace, "Posting event: %s\n", CarPlayControlEventToString( ctx->event ) );
    e8871948:	411c                	lw	a5,0(a0)
    e887194a:	4779                	li	a4,30
    e887194c:	06f74163          	blt	a4,a5,e88719ae <_CarPlayControlClientCallEventCallback+0x76>
    e8871950:	577d                	li	a4,-1
    e8871952:	04e78a63          	beq	a5,a4,e88719a6 <_CarPlayControlClientCallEventCallback+0x6e>
    e8871956:	441c                	lw	a5,8(s0)
    e8871958:	0005a717          	auipc	a4,0x5a
    e887195c:	7b870713          	addi	a4,a4,1976 # e88cc110 <__PRETTY_FUNCTION__.9875+0x260>
    e8871960:	c39d                	beqz	a5,e8871986 <_CarPlayControlClientCallEventCallback+0x4e>
    e8871962:	4685                	li	a3,1
    e8871964:	0005a717          	auipc	a4,0x5a
    e8871968:	7bc70713          	addi	a4,a4,1980 # e88cc120 <__PRETTY_FUNCTION__.9875+0x270>
    e887196c:	00d78d63          	beq	a5,a3,e8871986 <_CarPlayControlClientCallEventCallback+0x4e>
    e8871970:	4689                	li	a3,2
    e8871972:	0005a717          	auipc	a4,0x5a
    e8871976:	79670713          	addi	a4,a4,1942 # e88cc108 <__PRETTY_FUNCTION__.9875+0x258>
    e887197a:	00d78663          	beq	a5,a3,e8871986 <_CarPlayControlClientCallEventCallback+0x4e>
    e887197e:	0005a717          	auipc	a4,0x5a
    e8871982:	7aa70713          	addi	a4,a4,1962 # e88cc128 <__PRETTY_FUNCTION__.9875+0x278>
    e8871986:	0005a697          	auipc	a3,0x5a
    e887198a:	7aa68693          	addi	a3,a3,1962 # e88cc130 <__PRETTY_FUNCTION__.9875+0x280>
    e887198e:	4679                	li	a2,30
    e8871990:	0005b597          	auipc	a1,0x5b
    e8871994:	c7058593          	addi	a1,a1,-912 # e88cc600 <__PRETTY_FUNCTION__.11689>
    e8871998:	00064517          	auipc	a0,0x64
    e887199c:	b0850513          	addi	a0,a0,-1272 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e88719a0:	ad5e20ef          	jal	ra,e8854474 <LogPrintF>
    e88719a4:	a029                	j	e88719ae <_CarPlayControlClientCallEventCallback+0x76>
    e88719a6:	45f9                	li	a1,30
    e88719a8:	ecae20ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88719ac:	f54d                	bnez	a0,e8871956 <_CarPlayControlClientCallEventCallback+0x1e>
	
	ctx->client->eventCallback( ctx->client, ctx->event, (void*) ctx->eventInfo, ctx->client->eventCtx );
    e88719ae:	6008                	ld	a0,0(s0)
    e88719b0:	7010                	ld	a2,32(s0)
    e88719b2:	440c                	lw	a1,8(s0)
    e88719b4:	fcd5478b          	ldd	a5,a3,(a0),2,4
    e88719b8:	9782                	jalr	a5
	CFReleaseNullSafe( ctx->controller );
    e88719ba:	6808                	ld	a0,16(s0)
    e88719bc:	c119                	beqz	a0,e88719c2 <_CarPlayControlClientCallEventCallback+0x8a>
    e88719be:	f8cd50ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( ctx->client );
    e88719c2:	6008                	ld	a0,0(s0)
    e88719c4:	c119                	beqz	a0,e88719ca <_CarPlayControlClientCallEventCallback+0x92>
    e88719c6:	f84d50ef          	jal	ra,e884714a <CFRelease>
	free( ctx );
    e88719ca:	8522                	mv	a0,s0
}
    e88719cc:	6402                	ld	s0,0(sp)
    e88719ce:	60a2                	ld	ra,8(sp)
    e88719d0:	0141                	addi	sp,sp,16
	free( ctx );
    e88719d2:	12f0a06f          	j	e887c300 <eLIBs_free>

00000000e88719d6 <_CarPlayControllerDeactivateService>:
{
    e88719d6:	7179                	addi	sp,sp,-48
    e88719d8:	e422                	sd	s0,8(sp)
    e88719da:	842e                	mv	s0,a1
	serviceInterfaceNdx = CFDictionaryGetValue( bonjourService, CFSTR( kBonjourDeviceKey_InterfaceIndex ) );
    e88719dc:	0002d597          	auipc	a1,0x2d
    e88719e0:	e4c58593          	addi	a1,a1,-436 # e889e828 <icmp6_param_problem+0x17ba>
{
    e88719e4:	f406                	sd	ra,40(sp)
    e88719e6:	e826                	sd	s1,16(sp)
    e88719e8:	ec4a                	sd	s2,24(sp)
    e88719ea:	f04e                	sd	s3,32(sp)
    e88719ec:	89aa                	mv	s3,a0
	serviceInterfaceNdx = CFDictionaryGetValue( bonjourService, CFSTR( kBonjourDeviceKey_InterfaceIndex ) );
    e88719ee:	a51d50ef          	jal	ra,e884743e <CFDictionaryGetValue>
	service = CFDictionaryGetValue( controller->activeServices, serviceInterfaceNdx );
    e88719f2:	85aa                	mv	a1,a0
	serviceInterfaceNdx = CFDictionaryGetValue( bonjourService, CFSTR( kBonjourDeviceKey_InterfaceIndex ) );
    e88719f4:	892a                	mv	s2,a0
	service = CFDictionaryGetValue( controller->activeServices, serviceInterfaceNdx );
    e88719f6:	7008                	ld	a0,32(s0)
    e88719f8:	a47d50ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e88719fc:	84aa                	mv	s1,a0
	wifi = CFDictionaryGetBoolean( bonjourService, CFSTR( kBonjourDeviceKey_WiFi ), NULL );
    e88719fe:	0002d597          	auipc	a1,0x2d
    e8871a02:	e3a58593          	addi	a1,a1,-454 # e889e838 <icmp6_param_problem+0x17ca>
    e8871a06:	854e                	mv	a0,s3
    e8871a08:	4601                	li	a2,0
    e8871a0a:	c67da0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8871a0e:	89aa                	mv	s3,a0
	CFDictionaryRemoveValue( controller->activeServices, serviceInterfaceNdx );
    e8871a10:	7008                	ld	a0,32(s0)
    e8871a12:	85ca                	mv	a1,s2
    e8871a14:	a47d50ef          	jal	ra,e884745a <CFDictionaryRemoveValue>
	if( wifi )
    e8871a18:	00098763          	beqz	s3,e8871a26 <_CarPlayControllerDeactivateService+0x50>
		CFDictionarySetValue( controller->inactiveWiFiServices, serviceInterfaceNdx, service );
    e8871a1c:	7408                	ld	a0,40(s0)
    e8871a1e:	8626                	mv	a2,s1
    e8871a20:	85ca                	mv	a1,s2
    e8871a22:	a31d50ef          	jal	ra,e8847452 <CFDictionarySetValue>
	cpcc_ulog( kLogLevelNotice, "Controller [%p] %s Service [%p]\n",
    e8871a26:	00064517          	auipc	a0,0x64
    e8871a2a:	a7a50513          	addi	a0,a0,-1414 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8871a2e:	411c                	lw	a5,0(a0)
    e8871a30:	03200713          	li	a4,50
    e8871a34:	04f74763          	blt	a4,a5,e8871a82 <_CarPlayControllerDeactivateService+0xac>
    e8871a38:	577d                	li	a4,-1
    e8871a3a:	02e78f63          	beq	a5,a4,e8871a78 <_CarPlayControllerDeactivateService+0xa2>
    e8871a3e:	0005b797          	auipc	a5,0x5b
    e8871a42:	9d278793          	addi	a5,a5,-1582 # e88cc410 <__PRETTY_FUNCTION__.9875+0x560>
    e8871a46:	00099663          	bnez	s3,e8871a52 <_CarPlayControllerDeactivateService+0x7c>
    e8871a4a:	0005b797          	auipc	a5,0x5b
    e8871a4e:	9d678793          	addi	a5,a5,-1578 # e88cc420 <__PRETTY_FUNCTION__.9875+0x570>
    e8871a52:	8826                	mv	a6,s1
    e8871a54:	8722                	mv	a4,s0
    e8871a56:	0005b697          	auipc	a3,0x5b
    e8871a5a:	9d268693          	addi	a3,a3,-1582 # e88cc428 <__PRETTY_FUNCTION__.9875+0x578>
    e8871a5e:	03200613          	li	a2,50
    e8871a62:	0005b597          	auipc	a1,0x5b
    e8871a66:	abe58593          	addi	a1,a1,-1346 # e88cc520 <__PRETTY_FUNCTION__.11476>
    e8871a6a:	00064517          	auipc	a0,0x64
    e8871a6e:	a3650513          	addi	a0,a0,-1482 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8871a72:	a03e20ef          	jal	ra,e8854474 <LogPrintF>
    e8871a76:	a031                	j	e8871a82 <_CarPlayControllerDeactivateService+0xac>
    e8871a78:	03200593          	li	a1,50
    e8871a7c:	df6e20ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8871a80:	fd5d                	bnez	a0,e8871a3e <_CarPlayControllerDeactivateService+0x68>
}
    e8871a82:	6422                	ld	s0,8(sp)
    e8871a84:	70a2                	ld	ra,40(sp)
    e8871a86:	6962                	ld	s2,24(sp)
    e8871a88:	7982                	ld	s3,32(sp)
	CFRelease( service );
    e8871a8a:	8526                	mv	a0,s1
}
    e8871a8c:	64c2                	ld	s1,16(sp)
    e8871a8e:	6145                	addi	sp,sp,48
	CFRelease( service );
    e8871a90:	ebad506f          	j	e884714a <CFRelease>

00000000e8871a94 <_CarPlayBonjourServiceResolveReply>:
{
    e8871a94:	7179                	addi	sp,sp,-48
    e8871a96:	f022                	sd	s0,32(sp)
    e8871a98:	7462                	ld	s0,56(sp)
    e8871a9a:	f406                	sd	ra,40(sp)
	require_quiet( !ctx->resolved, exit );
    e8871a9c:	00844703          	lbu	a4,8(s0)
    e8871aa0:	e319                	bnez	a4,e8871aa6 <_CarPlayBonjourServiceResolveReply+0x12>
	require_action( !inErr, exit, ctx->err = inErr );
    e8871aa2:	ca91                	beqz	a3,e8871ab6 <_CarPlayBonjourServiceResolveReply+0x22>
    e8871aa4:	c454                	sw	a3,12(s0)
	if( !( inFlags & kDNSServiceFlagsMoreComing ) )
    e8871aa6:	8985                	andi	a1,a1,1
    e8871aa8:	e1a1                	bnez	a1,e8871ae8 <_CarPlayBonjourServiceResolveReply+0x54>
		dispatch_semaphore_signal( ctx->semaphore );
    e8871aaa:	6008                	ld	a0,0(s0)
}
    e8871aac:	7402                	ld	s0,32(sp)
    e8871aae:	70a2                	ld	ra,40(sp)
    e8871ab0:	6145                	addi	sp,sp,48
		dispatch_semaphore_signal( ctx->semaphore );
    e8871ab2:	c72dd06f          	j	e884ef24 <dispatch_semaphore_signal>
		ctx->resolved = true;
    e8871ab6:	4705                	li	a4,1
		ctx->hostname = strdup( inTargetName );
    e8871ab8:	853e                	mv	a0,a5
	ctx->err = inErr;
    e8871aba:	00042623          	sw	zero,12(s0)
		ctx->resolved = true;
    e8871abe:	00e40423          	sb	a4,8(s0)
    e8871ac2:	ec42                	sd	a6,24(sp)
    e8871ac4:	e832                	sd	a2,16(sp)
    e8871ac6:	e42e                	sd	a1,8(sp)
		ctx->hostname = strdup( inTargetName );
    e8871ac8:	d41ed0ef          	jal	ra,e885f808 <strdup>
    e8871acc:	e808                	sd	a0,16(s0)
		ctx->port = ntoh16( inPort );
    e8871ace:	6862                	ld	a6,24(sp)
		ctx->interfaceNdx = inIfNdx;
    e8871ad0:	6642                	ld	a2,16(sp)
    e8871ad2:	65a2                	ld	a1,8(sp)
		ctx->port = ntoh16( inPort );
    e8871ad4:	00881793          	slli	a5,a6,0x8
    e8871ad8:	5c88380b          	extu	a6,a6,23,8
    e8871adc:	0107e833          	or	a6,a5,a6
    e8871ae0:	01041c23          	sh	a6,24(s0)
		ctx->interfaceNdx = inIfNdx;
    e8871ae4:	cc50                	sw	a2,28(s0)
    e8871ae6:	b7c1                	j	e8871aa6 <_CarPlayBonjourServiceResolveReply+0x12>
}
    e8871ae8:	70a2                	ld	ra,40(sp)
    e8871aea:	7402                	ld	s0,32(sp)
    e8871aec:	6145                	addi	sp,sp,48
    e8871aee:	8082                	ret

00000000e8871af0 <_DNSServiceSocketEventCallback>:
{
    e8871af0:	1141                	addi	sp,sp,-16
    e8871af2:	e022                	sd	s0,0(sp)
    e8871af4:	e406                	sd	ra,8(sp)
    e8871af6:	842a                	mv	s0,a0
	err = DNSServiceProcessResult( ctx->service );
    e8871af8:	6908                	ld	a0,16(a0)
    e8871afa:	9e2a90ef          	jal	ra,e881acdc <DNSServiceProcessResult>
	if( err && ctx->errorHandler )
    e8871afe:	cd01                	beqz	a0,e8871b16 <_DNSServiceSocketEventCallback+0x26>
    e8871b00:	00043303          	ld	t1,0(s0)
    e8871b04:	00030963          	beqz	t1,e8871b16 <_DNSServiceSocketEventCallback+0x26>
		ctx->errorHandler( ctx, err, ctx->errorHandlerCtx );
    e8871b08:	6410                	ld	a2,8(s0)
    e8871b0a:	85aa                	mv	a1,a0
    e8871b0c:	8522                	mv	a0,s0
}
    e8871b0e:	6402                	ld	s0,0(sp)
    e8871b10:	60a2                	ld	ra,8(sp)
    e8871b12:	0141                	addi	sp,sp,16
		ctx->errorHandler( ctx, err, ctx->errorHandlerCtx );
    e8871b14:	8302                	jr	t1
}
    e8871b16:	60a2                	ld	ra,8(sp)
    e8871b18:	6402                	ld	s0,0(sp)
    e8871b1a:	0141                	addi	sp,sp,16
    e8871b1c:	8082                	ret

00000000e8871b1e <_DNSServiceCleanup>:
{
    e8871b1e:	1141                	addi	sp,sp,-16
    e8871b20:	e022                	sd	s0,0(sp)
    e8871b22:	e406                	sd	ra,8(sp)
    e8871b24:	842a                	mv	s0,a0
	if( ctx->service )
    e8871b26:	6908                	ld	a0,16(a0)
    e8871b28:	c119                	beqz	a0,e8871b2e <_DNSServiceCleanup+0x10>
		DNSServiceRefDeallocate( ctx->service );
    e8871b2a:	9b6a90ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
	dispatch_source_forget( &ctx->source );
    e8871b2e:	7008                	ld	a0,32(s0)
    e8871b30:	c901                	beqz	a0,e8871b40 <_DNSServiceCleanup+0x22>
    e8871b32:	914de0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8871b36:	7008                	ld	a0,32(s0)
    e8871b38:	f19dc0ef          	jal	ra,e884ea50 <dispatch_release>
    e8871b3c:	02043023          	sd	zero,32(s0)
	dispatch_release_null_safe( ctx->queue );
    e8871b40:	6c08                	ld	a0,24(s0)
    e8871b42:	c119                	beqz	a0,e8871b48 <_DNSServiceCleanup+0x2a>
    e8871b44:	f0ddc0ef          	jal	ra,e884ea50 <dispatch_release>
	free( ctx );
    e8871b48:	8522                	mv	a0,s0
}
    e8871b4a:	6402                	ld	s0,0(sp)
    e8871b4c:	60a2                	ld	ra,8(sp)
    e8871b4e:	0141                	addi	sp,sp,16
	free( ctx );
    e8871b50:	7b00a06f          	j	e887c300 <eLIBs_free>

00000000e8871b54 <_CarPlayControllerForgetInactiveServicesInternal>:
{
    e8871b54:	1101                	addi	sp,sp,-32
    e8871b56:	ec06                	sd	ra,24(sp)
    e8871b58:	e422                	sd	s0,8(sp)
    e8871b5a:	e826                	sd	s1,16(sp)
	CFDictionaryRemoveAllValues( context->controller->inactiveWiFiServices );
    e8871b5c:	611c                	ld	a5,0(a0)
{
    e8871b5e:	842a                	mv	s0,a0
	CFDictionaryRemoveAllValues( context->controller->inactiveWiFiServices );
    e8871b60:	7788                	ld	a0,40(a5)
    e8871b62:	8fdd50ef          	jal	ra,e884745e <CFDictionaryRemoveAllValues>
	context->serviceCount = CFDictionaryGetCount( context->controller->activeServices ) +
    e8871b66:	601c                	ld	a5,0(s0)
    e8871b68:	7388                	ld	a0,32(a5)
    e8871b6a:	8c1d50ef          	jal	ra,e884742a <CFDictionaryGetCount>
    e8871b6e:	84aa                	mv	s1,a0
								CFDictionaryGetCount( context->controller->inactiveWiFiServices );
    e8871b70:	601c                	ld	a5,0(s0)
    e8871b72:	7788                	ld	a0,40(a5)
    e8871b74:	8b7d50ef          	jal	ra,e884742a <CFDictionaryGetCount>
	context->serviceCount = CFDictionaryGetCount( context->controller->activeServices ) +
    e8871b78:	9d25                	addw	a0,a0,s1
    e8871b7a:	c408                	sw	a0,8(s0)
}
    e8871b7c:	60e2                	ld	ra,24(sp)
    e8871b7e:	6422                	ld	s0,8(sp)
    e8871b80:	64c2                	ld	s1,16(sp)
    e8871b82:	6105                	addi	sp,sp,32
    e8871b84:	8082                	ret

00000000e8871b86 <CarPlayBonjourServiceGetAddress.constprop.2>:
	CarPlayBonjourServiceGetAddress(
    e8871b86:	715d                	addi	sp,sp,-80
    e8871b88:	e0a2                	sd	s0,64(sp)
    e8871b8a:	fc26                	sd	s1,56(sp)
    e8871b8c:	e486                	sd	ra,72(sp)
	_GetAddressContext		context	= { inService, NULL, 0, 0, kNoErr };
    e8871b8e:	e82a                	sd	a0,16(sp)
	dispatch_sync_f( inService->queue, &context, _CarPlayBonjourServiceGetAddress );
    e8871b90:	6508                	ld	a0,8(a0)
	CarPlayBonjourServiceGetAddress(
    e8871b92:	84ae                	mv	s1,a1
    e8871b94:	8432                	mv	s0,a2
	dispatch_sync_f( inService->queue, &context, _CarPlayBonjourServiceGetAddress );
    e8871b96:	080c                	addi	a1,sp,16
    e8871b98:	00000617          	auipc	a2,0x0
    e8871b9c:	a1e60613          	addi	a2,a2,-1506 # e88715b6 <_CarPlayBonjourServiceGetAddress>
	CarPlayBonjourServiceGetAddress(
    e8871ba0:	e436                	sd	a3,8(sp)
	_GetAddressContext		context	= { inService, NULL, 0, 0, kNoErr };
    e8871ba2:	ec02                	sd	zero,24(sp)
    e8871ba4:	02011023          	sh	zero,32(sp)
    e8871ba8:	02013223          	sd	zero,36(sp)
	dispatch_sync_f( inService->queue, &context, _CarPlayBonjourServiceGetAddress );
    e8871bac:	972dd0ef          	jal	ra,e884ed1e <dispatch_sync_f>
	require_noerr( context.err, exit );
    e8871bb0:	5522                	lw	a0,40(sp)
    e8871bb2:	e911                	bnez	a0,e8871bc6 <CarPlayBonjourServiceGetAddress.constprop.2+0x40>
	*outHostname = context.hostName;
    e8871bb4:	67e2                	ld	a5,24(sp)
	*outInterfaceNdx = context.interfaceNdx;
    e8871bb6:	66a2                	ld	a3,8(sp)
	*outHostname = context.hostName;
    e8871bb8:	e09c                	sd	a5,0(s1)
	*outPort = context.port;
    e8871bba:	02015783          	lhu	a5,32(sp)
    e8871bbe:	00f41023          	sh	a5,0(s0)
	*outInterfaceNdx = context.interfaceNdx;
    e8871bc2:	5792                	lw	a5,36(sp)
    e8871bc4:	c29c                	sw	a5,0(a3)
}
    e8871bc6:	60a6                	ld	ra,72(sp)
    e8871bc8:	6406                	ld	s0,64(sp)
    e8871bca:	74e2                	ld	s1,56(sp)
    e8871bcc:	6161                	addi	sp,sp,80
    e8871bce:	8082                	ret

00000000e8871bd0 <_CarPlayBonjourServiceResolveAddress>:
{
    e8871bd0:	7135                	addi	sp,sp,-160
    e8871bd2:	e14a                	sd	s2,128(sp)
	memset( &resolveCtx, 0, sizeof ( resolveCtx ) );
    e8871bd4:	02000613          	li	a2,32
    e8871bd8:	4581                	li	a1,0
{
    e8871bda:	892a                	mv	s2,a0
	memset( &resolveCtx, 0, sizeof ( resolveCtx ) );
    e8871bdc:	1008                	addi	a0,sp,32
{
    e8871bde:	ed06                	sd	ra,152(sp)
    e8871be0:	ecde                	sd	s7,88(sp)
    e8871be2:	e922                	sd	s0,144(sp)
    e8871be4:	e526                	sd	s1,136(sp)
    e8871be6:	fcce                	sd	s3,120(sp)
    e8871be8:	f8d2                	sd	s4,112(sp)
    e8871bea:	f4d6                	sd	s5,104(sp)
    e8871bec:	f0da                	sd	s6,96(sp)
    e8871bee:	e8e2                	sd	s8,80(sp)
    e8871bf0:	e4e6                	sd	s9,72(sp)
	DNSServiceRef				dnsService = NULL;
    e8871bf2:	ec02                	sd	zero,24(sp)
	memset( &resolveCtx, 0, sizeof ( resolveCtx ) );
    e8871bf4:	7a00a0ef          	jal	ra,e887c394 <eLIBs_memset>
	dnsServiceSemaphore = dispatch_semaphore_create( 0 );
    e8871bf8:	4501                	li	a0,0
    e8871bfa:	acedd0ef          	jal	ra,e884eec8 <dispatch_semaphore_create>
    e8871bfe:	8baa                	mv	s7,a0
	require_action( dnsServiceSemaphore, exit, err = kNoMemoryErr );
    e8871c00:	1a050a63          	beqz	a0,e8871db4 <_CarPlayBonjourServiceResolveAddress+0x1e4>
	resolveCtx.semaphore = dnsServiceSemaphore;
    e8871c04:	f02a                	sd	a0,32(sp)
	serviceType = CFCopyCString( service->serviceType, NULL );
    e8871c06:	01893503          	ld	a0,24(s2)
    e8871c0a:	4581                	li	a1,0
    e8871c0c:	bf8db0ef          	jal	ra,e884d004 <CFCopyCString>
    e8871c10:	8b2a                	mv	s6,a0
	ifNdx = (uint32_t) CFDictionaryGetInt64( service->bonjourservice, CFSTR( kBonjourDeviceKey_InterfaceIndex ), NULL );
    e8871c12:	01093503          	ld	a0,16(s2)
    e8871c16:	4601                	li	a2,0
    e8871c18:	0002d597          	auipc	a1,0x2d
    e8871c1c:	c1058593          	addi	a1,a1,-1008 # e889e828 <icmp6_param_problem+0x17ba>
    e8871c20:	a51da0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
    e8871c24:	842a                	mv	s0,a0
	name = CFDictionaryCopyCString( service->bonjourservice, CFSTR( kBonjourDeviceKey_RawName ), NULL );
    e8871c26:	01093503          	ld	a0,16(s2)
    e8871c2a:	4601                	li	a2,0
    e8871c2c:	0002d597          	auipc	a1,0x2d
    e8871c30:	c3458593          	addi	a1,a1,-972 # e889e860 <icmp6_param_problem+0x17f2>
    e8871c34:	c68db0ef          	jal	ra,e884d09c <CFDictionaryCopyCString>
    e8871c38:	8aaa                	mv	s5,a0
	domain = CFDictionaryCopyCString( service->bonjourservice, CFSTR( kBonjourDeviceKey_Domain ), NULL );
    e8871c3a:	01093503          	ld	a0,16(s2)
    e8871c3e:	4601                	li	a2,0
    e8871c40:	0002d597          	auipc	a1,0x2d
    e8871c44:	c3058593          	addi	a1,a1,-976 # e889e870 <icmp6_param_problem+0x1802>
    e8871c48:	c54db0ef          	jal	ra,e884d09c <CFDictionaryCopyCString>
    e8871c4c:	8a2a                	mv	s4,a0
	require_action( name && serviceType && domain, exit, err = kNoMemoryErr );
    e8871c4e:	160a8b63          	beqz	s5,e8871dc4 <_CarPlayBonjourServiceResolveAddress+0x1f4>
    e8871c52:	160b0963          	beqz	s6,e8871dc4 <_CarPlayBonjourServiceResolveAddress+0x1f4>
    e8871c56:	16050763          	beqz	a0,e8871dc4 <_CarPlayBonjourServiceResolveAddress+0x1f4>
	err = DNSServiceResolve( &dnsService, 0, ifNdx, name, serviceType, domain, _CarPlayBonjourServiceResolveReply, &resolveCtx );
    e8871c5a:	87aa                	mv	a5,a0
    e8871c5c:	0004061b          	sext.w	a2,s0
    e8871c60:	02010893          	addi	a7,sp,32
    e8871c64:	00000817          	auipc	a6,0x0
    e8871c68:	e3080813          	addi	a6,a6,-464 # e8871a94 <_CarPlayBonjourServiceResolveReply>
    e8871c6c:	875a                	mv	a4,s6
    e8871c6e:	86d6                	mv	a3,s5
    e8871c70:	4581                	li	a1,0
    e8871c72:	0828                	addi	a0,sp,24
    e8871c74:	c20a90ef          	jal	ra,e881b094 <DNSServiceResolve>
    e8871c78:	842a                	mv	s0,a0
	DNSServiceContext *			dnsServiceCtx = NULL;
    e8871c7a:	4481                	li	s1,0
	require_noerr( err, exit );
    e8871c7c:	e559                	bnez	a0,e8871d0a <_CarPlayBonjourServiceResolveAddress+0x13a>
    p = malloc(len);
    e8871c7e:	02800513          	li	a0,40
	err = DNSServiceContextCreate( &dnsServiceCtx, dnsService, NULL, NULL );
    e8871c82:	6c62                	ld	s8,24(sp)
    e8871c84:	3cb090ef          	jal	ra,e887b84e <my_malloc>
    e8871c88:	89aa                	mv	s3,a0
    memset(p,0,len);
    e8871c8a:	02800613          	li	a2,40
    e8871c8e:	4581                	li	a1,0
    e8871c90:	7040a0ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( ctx, exit, err = kNoMemoryErr );
    e8871c94:	0c098763          	beqz	s3,e8871d62 <_CarPlayBonjourServiceResolveAddress+0x192>
	dnsSocket = DNSServiceRefSockFD( inService );
    e8871c98:	8562                	mv	a0,s8
    e8871c9a:	83ea90ef          	jal	ra,e881acd8 <DNSServiceRefSockFD>
    e8871c9e:	8caa                	mv	s9,a0
	require_action( IsValidSocket( dnsSocket ), exit, err = kUnknownErr );
    e8871ca0:	0c054663          	bltz	a0,e8871d6c <_CarPlayBonjourServiceResolveAddress+0x19c>
	ctx->queue = dispatch_queue_create( "CarPlayControl DNSServiceContext", NULL );
    e8871ca4:	4581                	li	a1,0
    e8871ca6:	0005a517          	auipc	a0,0x5a
    e8871caa:	37250513          	addi	a0,a0,882 # e88cc018 <__PRETTY_FUNCTION__.9875+0x168>
    e8871cae:	8d0de0ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e8871cb2:	00a9bc23          	sd	a0,24(s3)
    e8871cb6:	84aa                	mv	s1,a0
	require_action( ctx->queue, exit, err = kNoMemoryErr );
    e8871cb8:	c555                	beqz	a0,e8871d64 <_CarPlayBonjourServiceResolveAddress+0x194>
	ctx->source = dispatch_source_create( DISPATCH_SOURCE_TYPE_READ, dnsSocket, 0, ctx->queue );
    e8871cba:	86aa                	mv	a3,a0
    e8871cbc:	4601                	li	a2,0
    e8871cbe:	85e6                	mv	a1,s9
    e8871cc0:	4501                	li	a0,0
    e8871cc2:	8ecdd0ef          	jal	ra,e884edae <dispatch_source_create>
    e8871cc6:	02a9b023          	sd	a0,32(s3)
    e8871cca:	84aa                	mv	s1,a0
	require_action( ctx->source, exit, err = kNoMemoryErr );
    e8871ccc:	cd41                	beqz	a0,e8871d64 <_CarPlayBonjourServiceResolveAddress+0x194>
	dispatch_set_context( ctx->source, ctx );
    e8871cce:	85ce                	mv	a1,s3
	ctx->errorHandler = inErrorHandler;
    e8871cd0:	0009b023          	sd	zero,0(s3)
	ctx->errorHandlerCtx = inErrorHandlerCtx;
    e8871cd4:	0009b423          	sd	zero,8(s3)
	ctx->service = inService;
    e8871cd8:	0189b823          	sd	s8,16(s3)
	dispatch_set_context( ctx->source, ctx );
    e8871cdc:	f41dc0ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_resume( ctx->source );
    e8871ce0:	84ce                	mv	s1,s3
	dispatch_source_set_event_handler_f( ctx->source, _DNSServiceSocketEventCallback );
    e8871ce2:	0209b503          	ld	a0,32(s3)
    e8871ce6:	00000597          	auipc	a1,0x0
    e8871cea:	e0a58593          	addi	a1,a1,-502 # e8871af0 <_DNSServiceSocketEventCallback>
    e8871cee:	97cdd0ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_resume( ctx->source );
    e8871cf2:	0209b503          	ld	a0,32(s3)
	ctx = NULL;
    e8871cf6:	4981                	li	s3,0
	dispatch_resume( ctx->source );
    e8871cf8:	dffdd0ef          	jal	ra,e884faf6 <dispatch_resume>
	free( ctx );
    e8871cfc:	854e                	mv	a0,s3
    e8871cfe:	6020a0ef          	jal	ra,e887c300 <eLIBs_free>
	require_noerr_action( err, exit, DNSServiceRefDeallocate( dnsService ) );
    e8871d02:	c835                	beqz	s0,e8871d76 <_CarPlayBonjourServiceResolveAddress+0x1a6>
    e8871d04:	6562                	ld	a0,24(sp)
    e8871d06:	fdba80ef          	jal	ra,e881ace0 <DNSServiceRefDeallocate>
	cpcc_ulog( kLogLevelNotice, "CarPlayBonjourService [%p] resolved to: %s port: %u interfaceNdx: %lu (%#m)\n",
    e8871d0a:	00063517          	auipc	a0,0x63
    e8871d0e:	79650513          	addi	a0,a0,1942 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8871d12:	411c                	lw	a5,0(a0)
	service->resolutionError = err;
    e8871d14:	02892823          	sw	s0,48(s2)
	cpcc_ulog( kLogLevelNotice, "CarPlayBonjourService [%p] resolved to: %s port: %u interfaceNdx: %lu (%#m)\n",
    e8871d18:	03200713          	li	a4,50
    e8871d1c:	0af74f63          	blt	a4,a5,e8871dda <_CarPlayBonjourServiceResolveAddress+0x20a>
    e8871d20:	577d                	li	a4,-1
    e8871d22:	0ae78763          	beq	a5,a4,e8871dd0 <_CarPlayBonjourServiceResolveAddress+0x200>
    e8871d26:	02093783          	ld	a5,32(s2)
    e8871d2a:	e789                	bnez	a5,e8871d34 <_CarPlayBonjourServiceResolveAddress+0x164>
    e8871d2c:	0005a797          	auipc	a5,0x5a
    e8871d30:	2e478793          	addi	a5,a5,740 # e88cc010 <__PRETTY_FUNCTION__.9875+0x160>
    e8871d34:	02c92883          	lw	a7,44(s2)
    e8871d38:	02895803          	lhu	a6,40(s2)
    e8871d3c:	e022                	sd	s0,0(sp)
    e8871d3e:	874a                	mv	a4,s2
    e8871d40:	0005a697          	auipc	a3,0x5a
    e8871d44:	30068693          	addi	a3,a3,768 # e88cc040 <__PRETTY_FUNCTION__.9875+0x190>
    e8871d48:	03200613          	li	a2,50
    e8871d4c:	0005a597          	auipc	a1,0x5a
    e8871d50:	74c58593          	addi	a1,a1,1868 # e88cc498 <__PRETTY_FUNCTION__.11392>
    e8871d54:	00063517          	auipc	a0,0x63
    e8871d58:	74c50513          	addi	a0,a0,1868 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8871d5c:	f18e20ef          	jal	ra,e8854474 <LogPrintF>
    e8871d60:	a8ad                	j	e8871dda <_CarPlayBonjourServiceResolveAddress+0x20a>
	DNSServiceContext *			dnsServiceCtx = NULL;
    e8871d62:	4481                	li	s1,0
	require_action( ctx->source, exit, err = kNoMemoryErr );
    e8871d64:	7479                	lui	s0,0xffffe
    e8871d66:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8871d6a:	bf49                	j	e8871cfc <_CarPlayBonjourServiceResolveAddress+0x12c>
	require_action( IsValidSocket( dnsSocket ), exit, err = kUnknownErr );
    e8871d6c:	7479                	lui	s0,0xffffe
	DNSServiceContext *			dnsServiceCtx = NULL;
    e8871d6e:	4481                	li	s1,0
	require_action( IsValidSocket( dnsSocket ), exit, err = kUnknownErr );
    e8871d70:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8871d74:	b761                	j	e8871cfc <_CarPlayBonjourServiceResolveAddress+0x12c>
	timeout = dispatch_semaphore_wait( dnsServiceSemaphore, dispatch_time( DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC ) );
    e8871d76:	009505b7          	lui	a1,0x950
    e8871d7a:	2f958593          	addi	a1,a1,761 # 9502f9 <memcmp-0xe7eafd07>
    e8871d7e:	05a6                	slli	a1,a1,0x9
    e8871d80:	4501                	li	a0,0
    e8871d82:	9d2dd0ef          	jal	ra,e884ef54 <dispatch_time>
    e8871d86:	85aa                	mv	a1,a0
    e8871d88:	855e                	mv	a0,s7
    e8871d8a:	ac0dd0ef          	jal	ra,e884f04a <dispatch_semaphore_wait>
	require_action( timeout == 0, exit, err = kTimeoutErr );
    e8871d8e:	ed0d                	bnez	a0,e8871dc8 <_CarPlayBonjourServiceResolveAddress+0x1f8>
	err = resolveCtx.err;
    e8871d90:	5432                	lw	s0,44(sp)
	require_noerr( err, exit );
    e8871d92:	fc25                	bnez	s0,e8871d0a <_CarPlayBonjourServiceResolveAddress+0x13a>
	ForgetMem( &service->hostName );
    e8871d94:	02093503          	ld	a0,32(s2)
    e8871d98:	c119                	beqz	a0,e8871d9e <_CarPlayBonjourServiceResolveAddress+0x1ce>
    e8871d9a:	5660a0ef          	jal	ra,e887c300 <eLIBs_free>
	service->hostName = resolveCtx.hostname;
    e8871d9e:	77c2                	ld	a5,48(sp)
    e8871da0:	02f93023          	sd	a5,32(s2)
	service->port = resolveCtx.port;
    e8871da4:	03815783          	lhu	a5,56(sp)
    e8871da8:	02f91423          	sh	a5,40(s2)
	service->interfaceNdx = resolveCtx.interfaceNdx;
    e8871dac:	57f2                	lw	a5,60(sp)
    e8871dae:	02f92623          	sw	a5,44(s2)
    e8871db2:	bfa1                	j	e8871d0a <_CarPlayBonjourServiceResolveAddress+0x13a>
	DNSServiceContext *			dnsServiceCtx = NULL;
    e8871db4:	4481                	li	s1,0
	char *						domain = NULL;
    e8871db6:	4a01                	li	s4,0
	char *						name = NULL;
    e8871db8:	4a81                	li	s5,0
	char *						serviceType = NULL;
    e8871dba:	4b01                	li	s6,0
	require_action( name && serviceType && domain, exit, err = kNoMemoryErr );
    e8871dbc:	7479                	lui	s0,0xffffe
    e8871dbe:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8871dc2:	b7a1                	j	e8871d0a <_CarPlayBonjourServiceResolveAddress+0x13a>
	DNSServiceContext *			dnsServiceCtx = NULL;
    e8871dc4:	4481                	li	s1,0
    e8871dc6:	bfdd                	j	e8871dbc <_CarPlayBonjourServiceResolveAddress+0x1ec>
	require_action( timeout == 0, exit, err = kTimeoutErr );
    e8871dc8:	7479                	lui	s0,0xffffe
    e8871dca:	5be40413          	addi	s0,s0,1470 # ffffffffffffe5be <__DRAM0_INF_BASE+0xffffffff0000e5be>
    e8871dce:	bf35                	j	e8871d0a <_CarPlayBonjourServiceResolveAddress+0x13a>
	cpcc_ulog( kLogLevelNotice, "CarPlayBonjourService [%p] resolved to: %s port: %u interfaceNdx: %lu (%#m)\n",
    e8871dd0:	03200593          	li	a1,50
    e8871dd4:	a9ee20ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8871dd8:	f539                	bnez	a0,e8871d26 <_CarPlayBonjourServiceResolveAddress+0x156>
	dispatch_release_null_safe( dnsServiceSemaphore );
    e8871dda:	000b8563          	beqz	s7,e8871de4 <_CarPlayBonjourServiceResolveAddress+0x214>
    e8871dde:	855e                	mv	a0,s7
    e8871de0:	c71dc0ef          	jal	ra,e884ea50 <dispatch_release>
	DNSServiceContextForget( &dnsServiceCtx );
    e8871de4:	c889                	beqz	s1,e8871df6 <_CarPlayBonjourServiceResolveAddress+0x226>
	dispatch_async_f( inServiceCtx->queue, inServiceCtx, _DNSServiceCleanup);
    e8871de6:	6c88                	ld	a0,24(s1)
    e8871de8:	00000617          	auipc	a2,0x0
    e8871dec:	d3660613          	addi	a2,a2,-714 # e8871b1e <_DNSServiceCleanup>
    e8871df0:	85a6                	mv	a1,s1
    e8871df2:	e2fdc0ef          	jal	ra,e884ec20 <dispatch_async_f>
	ForgetMem( &serviceType );
    e8871df6:	000b0563          	beqz	s6,e8871e00 <_CarPlayBonjourServiceResolveAddress+0x230>
    e8871dfa:	855a                	mv	a0,s6
    e8871dfc:	5040a0ef          	jal	ra,e887c300 <eLIBs_free>
	ForgetMem( &name );
    e8871e00:	000a8563          	beqz	s5,e8871e0a <_CarPlayBonjourServiceResolveAddress+0x23a>
    e8871e04:	8556                	mv	a0,s5
    e8871e06:	4fa0a0ef          	jal	ra,e887c300 <eLIBs_free>
	ForgetMem( &domain );
    e8871e0a:	000a0563          	beqz	s4,e8871e14 <_CarPlayBonjourServiceResolveAddress+0x244>
    e8871e0e:	8552                	mv	a0,s4
    e8871e10:	4f00a0ef          	jal	ra,e887c300 <eLIBs_free>
	CFRelease( service );
    e8871e14:	854a                	mv	a0,s2
    e8871e16:	b34d50ef          	jal	ra,e884714a <CFRelease>
}
    e8871e1a:	644a                	ld	s0,144(sp)
    e8871e1c:	60ea                	ld	ra,152(sp)
    e8871e1e:	64aa                	ld	s1,136(sp)
    e8871e20:	690a                	ld	s2,128(sp)
    e8871e22:	79e6                	ld	s3,120(sp)
    e8871e24:	7a46                	ld	s4,112(sp)
    e8871e26:	7aa6                	ld	s5,104(sp)
    e8871e28:	7b06                	ld	s6,96(sp)
    e8871e2a:	6be6                	ld	s7,88(sp)
    e8871e2c:	6c46                	ld	s8,80(sp)
    e8871e2e:	6ca6                	ld	s9,72(sp)
    e8871e30:	610d                	addi	sp,sp,160
    e8871e32:	8082                	ret

00000000e8871e34 <_CarPlayControlClientPostEvent>:

static void _CarPlayControlClientPostEvent( CarPlayControlClientRef inClient, CarPlayControlClientEvent inEvent, const void *inEventInfo )
{
    e8871e34:	7179                	addi	sp,sp,-48
    e8871e36:	ec4a                	sd	s2,24(sp)
    e8871e38:	892a                	mv	s2,a0
    p = malloc(len);
    e8871e3a:	02800513          	li	a0,40
    e8871e3e:	e422                	sd	s0,8(sp)
    e8871e40:	e826                	sd	s1,16(sp)
    e8871e42:	f04e                	sd	s3,32(sp)
    e8871e44:	f406                	sd	ra,40(sp)
    e8871e46:	89ae                	mv	s3,a1
    e8871e48:	84b2                	mv	s1,a2
    e8871e4a:	205090ef          	jal	ra,e887b84e <my_malloc>
    e8871e4e:	842a                	mv	s0,a0
    memset(p,0,len);
    e8871e50:	02800613          	li	a2,40
    e8871e54:	4581                	li	a1,0
    e8871e56:	53e0a0ef          	jal	ra,e887c394 <eLIBs_memset>
	CallbackContext *		callbackCtx;
	
	callbackCtx = calloc( 1, sizeof( CallbackContext ) );
	require( callbackCtx, exit );
    e8871e5a:	c431                	beqz	s0,e8871ea6 <_CarPlayControlClientPostEvent+0x72>
	callbackCtx->client = (CarPlayControlClientRef) CFRetain( inClient );
    e8871e5c:	854a                	mv	a0,s2
    e8871e5e:	ae8d50ef          	jal	ra,e8847146 <CFRetain>
    e8871e62:	e008                	sd	a0,0(s0)
	callbackCtx->event = inEvent;
    e8871e64:	01342423          	sw	s3,8(s0)
	
	switch( inEvent )
    e8871e68:	4789                	li	a5,2
    e8871e6a:	02f98663          	beq	s3,a5,e8871e96 <_CarPlayControlClientPostEvent+0x62>
	{
		case kCarPlayControlClientEvent_AddOrUpdateController:
		case kCarPlayControlClientEvent_RemoveController:
			callbackCtx->controller = (CarPlayControllerRef) CFRetain( (CarPlayControllerRef) inEventInfo );
    e8871e6e:	8526                	mv	a0,s1
    e8871e70:	ad6d50ef          	jal	ra,e8847146 <CFRetain>
    e8871e74:	e808                	sd	a0,16(s0)
			callbackCtx->eventInfo = callbackCtx->controller;
    e8871e76:	f008                	sd	a0,32(s0)
		default:
			check( "Unhandled CarPlayControlClientEvent" == 0 );
			break;
	}

	dispatch_async_f( inClient->eventQueue, callbackCtx, _CarPlayControlClientCallEventCallback );
    e8871e78:	85a2                	mv	a1,s0
	
exit:
	return;
}
    e8871e7a:	6422                	ld	s0,8(sp)
	dispatch_async_f( inClient->eventQueue, callbackCtx, _CarPlayControlClientCallEventCallback );
    e8871e7c:	01893503          	ld	a0,24(s2)
}
    e8871e80:	70a2                	ld	ra,40(sp)
    e8871e82:	64c2                	ld	s1,16(sp)
    e8871e84:	6962                	ld	s2,24(sp)
    e8871e86:	7982                	ld	s3,32(sp)
	dispatch_async_f( inClient->eventQueue, callbackCtx, _CarPlayControlClientCallEventCallback );
    e8871e88:	00000617          	auipc	a2,0x0
    e8871e8c:	ab060613          	addi	a2,a2,-1360 # e8871938 <_CarPlayControlClientCallEventCallback>
}
    e8871e90:	6145                	addi	sp,sp,48
	dispatch_async_f( inClient->eventQueue, callbackCtx, _CarPlayControlClientCallEventCallback );
    e8871e92:	d8fdc06f          	j	e884ec20 <dispatch_async_f>
			callbackCtx->err = inEventInfo ? *( (OSStatus*) inEventInfo ) : kNoErr;
    e8871e96:	4701                	li	a4,0
    e8871e98:	c091                	beqz	s1,e8871e9c <_CarPlayControlClientPostEvent+0x68>
    e8871e9a:	4098                	lw	a4,0(s1)
    e8871e9c:	87a2                	mv	a5,s0
    e8871e9e:	4ac7d70b          	swib	a4,(a5),12,1
			callbackCtx->eventInfo = &callbackCtx->err;
    e8871ea2:	f01c                	sd	a5,32(s0)
			break;
    e8871ea4:	bfd1                	j	e8871e78 <_CarPlayControlClientPostEvent+0x44>
}
    e8871ea6:	70a2                	ld	ra,40(sp)
    e8871ea8:	6422                	ld	s0,8(sp)
    e8871eaa:	64c2                	ld	s1,16(sp)
    e8871eac:	6962                	ld	s2,24(sp)
    e8871eae:	7982                	ld	s3,32(sp)
    e8871eb0:	6145                	addi	sp,sp,48
    e8871eb2:	8082                	ret

00000000e8871eb4 <_CarPlayControlClientEnsureStarted>:
{
    e8871eb4:	7179                	addi	sp,sp,-48
    e8871eb6:	ec22                	sd	s0,24(sp)
    e8871eb8:	f406                	sd	ra,40(sp)
    e8871eba:	f026                	sd	s1,32(sp)
	require_action_quiet( !client->started, exit, err = kNoErr );
    e8871ebc:	03054783          	lbu	a5,48(a0)
{
    e8871ec0:	842a                	mv	s0,a0
	require_action_quiet( !client->started, exit, err = kNoErr );
    e8871ec2:	c7ad                	beqz	a5,e8871f2c <_CarPlayControlClientEnsureStarted+0x78>
    e8871ec4:	c602                	sw	zero,12(sp)
	cpcc_ulog( kLogLevelTrace, "_CarPlayControlClientEnsureStarted: %#m\n", err );
    e8871ec6:	00063517          	auipc	a0,0x63
    e8871eca:	5da50513          	addi	a0,a0,1498 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8871ece:	411c                	lw	a5,0(a0)
    e8871ed0:	4779                	li	a4,30
    e8871ed2:	02f74563          	blt	a4,a5,e8871efc <_CarPlayControlClientEnsureStarted+0x48>
    e8871ed6:	577d                	li	a4,-1
    e8871ed8:	0ae78f63          	beq	a5,a4,e8871f96 <_CarPlayControlClientEnsureStarted+0xe2>
    e8871edc:	4732                	lw	a4,12(sp)
    e8871ede:	0005a697          	auipc	a3,0x5a
    e8871ee2:	3ea68693          	addi	a3,a3,1002 # e88cc2c8 <__PRETTY_FUNCTION__.9875+0x418>
    e8871ee6:	4679                	li	a2,30
    e8871ee8:	0005a597          	auipc	a1,0x5a
    e8871eec:	6f058593          	addi	a1,a1,1776 # e88cc5d8 <__PRETTY_FUNCTION__.11667>
    e8871ef0:	00063517          	auipc	a0,0x63
    e8871ef4:	5b050513          	addi	a0,a0,1456 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8871ef8:	d7ce20ef          	jal	ra,e8854474 <LogPrintF>
	if( err )
    e8871efc:	47b2                	lw	a5,12(sp)
    e8871efe:	cf99                	beqz	a5,e8871f1c <_CarPlayControlClientEnsureStarted+0x68>
		BonjourBrowser_Forget( &client->browser );
    e8871f00:	7c08                	ld	a0,56(s0)
    e8871f02:	c901                	beqz	a0,e8871f12 <_CarPlayControlClientEnsureStarted+0x5e>
    e8871f04:	d4dd40ef          	jal	ra,e8846c50 <BonjourBrowser_Stop>
    e8871f08:	7c08                	ld	a0,56(s0)
    e8871f0a:	a40d50ef          	jal	ra,e884714a <CFRelease>
    e8871f0e:	02043c23          	sd	zero,56(s0)
		_CarPlayControlClientPostEvent( client, kCarPlayControlClientEvent_Stopped, &err );
    e8871f12:	0070                	addi	a2,sp,12
    e8871f14:	4589                	li	a1,2
    e8871f16:	8522                	mv	a0,s0
    e8871f18:	f1dff0ef          	jal	ra,e8871e34 <_CarPlayControlClientPostEvent>
	CFRelease( client );
    e8871f1c:	8522                	mv	a0,s0
    e8871f1e:	a2cd50ef          	jal	ra,e884714a <CFRelease>
}
    e8871f22:	6462                	ld	s0,24(sp)
    e8871f24:	70a2                	ld	ra,40(sp)
    e8871f26:	7482                	ld	s1,32(sp)
    e8871f28:	6145                	addi	sp,sp,48
    e8871f2a:	8082                	ret
	if( client->deviceID == 0 && client->server != NULL)
    e8871f2c:	693c                	ld	a5,80(a0)
    e8871f2e:	e799                	bnez	a5,e8871f3c <_CarPlayControlClientEnsureStarted+0x88>
    e8871f30:	6528                	ld	a0,72(a0)
    e8871f32:	c509                	beqz	a0,e8871f3c <_CarPlayControlClientEnsureStarted+0x88>
		client->deviceID = AirPlayGetDeviceID(client->server, NULL );
    e8871f34:	4581                	li	a1,0
    e8871f36:	864f30ef          	jal	ra,e8864f9a <AirPlayGetDeviceID>
    e8871f3a:	e828                	sd	a0,80(s0)
	err = BonjourBrowser_Create( &client->browser, "CarPlayControlClient" );
    e8871f3c:	0005a597          	auipc	a1,0x5a
    e8871f40:	35c58593          	addi	a1,a1,860 # e88cc298 <__PRETTY_FUNCTION__.9875+0x3e8>
    e8871f44:	03840513          	addi	a0,s0,56
    e8871f48:	ba9d40ef          	jal	ra,e8846af0 <BonjourBrowser_Create>
    e8871f4c:	c62a                	sw	a0,12(sp)
	require_noerr( err, exit );
    e8871f4e:	fd25                	bnez	a0,e8871ec6 <_CarPlayControlClientEnsureStarted+0x12>
	BonjourBrowser_SetDispatchQueue( client->browser, client->internalQueue );
    e8871f50:	640c                	ld	a1,8(s0)
    e8871f52:	7c08                	ld	a0,56(s0)
	err = BonjourBrowser_Start( client->browser,
    e8871f54:	4485                	li	s1,1
	BonjourBrowser_SetDispatchQueue( client->browser, client->internalQueue );
    e8871f56:	c15d40ef          	jal	ra,e8846b6a <BonjourBrowser_SetDispatchQueue>
	BonjourBrowser_SetEventHandler( client->browser, _CarPlayControlClientBrowseCallback, client );
    e8871f5a:	7c08                	ld	a0,56(s0)
    e8871f5c:	8622                	mv	a2,s0
    e8871f5e:	00001597          	auipc	a1,0x1
    e8871f62:	87658593          	addi	a1,a1,-1930 # e88727d4 <_CarPlayControlClientBrowseCallback>
    e8871f66:	c33d40ef          	jal	ra,e8846b98 <BonjourBrowser_SetEventHandler>
	err = BonjourBrowser_Start( client->browser,
    e8871f6a:	7c08                	ld	a0,56(s0)
    e8871f6c:	03b49713          	slli	a4,s1,0x3b
    e8871f70:	4681                	li	a3,0
    e8871f72:	00032617          	auipc	a2,0x32
    e8871f76:	bde60613          	addi	a2,a2,-1058 # e88a3b50 <end.8789+0x4a8>
    e8871f7a:	0005a597          	auipc	a1,0x5a
    e8871f7e:	33658593          	addi	a1,a1,822 # e88cc2b0 <__PRETTY_FUNCTION__.9875+0x400>
    e8871f82:	c1dd40ef          	jal	ra,e8846b9e <BonjourBrowser_Start>
    e8871f86:	c62a                	sw	a0,12(sp)
	require_noerr( err, exit );
    e8871f88:	fd1d                	bnez	a0,e8871ec6 <_CarPlayControlClientEnsureStarted+0x12>
	CFRetain( client ); // Released on stop event
    e8871f8a:	8522                	mv	a0,s0
    e8871f8c:	9bad50ef          	jal	ra,e8847146 <CFRetain>
	client->started = true;
    e8871f90:	02940823          	sb	s1,48(s0)
    e8871f94:	bf0d                	j	e8871ec6 <_CarPlayControlClientEnsureStarted+0x12>
	cpcc_ulog( kLogLevelTrace, "_CarPlayControlClientEnsureStarted: %#m\n", err );
    e8871f96:	45f9                	li	a1,30
    e8871f98:	8dae20ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8871f9c:	d125                	beqz	a0,e8871efc <_CarPlayControlClientEnsureStarted+0x48>
    e8871f9e:	bf3d                	j	e8871edc <_CarPlayControlClientEnsureStarted+0x28>

00000000e8871fa0 <_CarPlayControlClientRemoveController>:
//===========================================================================================================================
//	_CarPlayControlClientRemoveController
//===========================================================================================================================

static void _CarPlayControlClientRemoveController( CarPlayControlClientRef inClient, CarPlayControllerRef inController )
{
    e8871fa0:	7179                	addi	sp,sp,-48
    e8871fa2:	e826                	sd	s1,16(sp)
    e8871fa4:	84aa                	mv	s1,a0
	CFIndex			ndx;
	
	// Find the controller and remove it if there are no more services

	CFRetain( inController );
    e8871fa6:	852e                	mv	a0,a1
{
    e8871fa8:	f406                	sd	ra,40(sp)
    e8871faa:	e422                	sd	s0,8(sp)
    e8871fac:	ec4a                	sd	s2,24(sp)
    e8871fae:	842e                	mv	s0,a1
    e8871fb0:	f04e                	sd	s3,32(sp)
	CFRetain( inController );
    e8871fb2:	994d50ef          	jal	ra,e8847146 <CFRetain>
	
	ndx = CFArrayGetFirstIndexOfValue( inClient->controllers, CFRangeMake( 0, CFArrayGetCount( inClient->controllers ) ), inController );
    e8871fb6:	0404b903          	ld	s2,64(s1)
    e8871fba:	59fd                	li	s3,-1
    e8871fbc:	854a                	mv	a0,s2
    e8871fbe:	a34d50ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8871fc2:	02051593          	slli	a1,a0,0x20
    e8871fc6:	8622                	mv	a2,s0
    e8871fc8:	854a                	mv	a0,s2
    e8871fca:	a50d50ef          	jal	ra,e884721a <CFArrayGetFirstIndexOfValue>
	check( ndx != kCFNotFound );
	
	if( ndx != kCFNotFound )
    e8871fce:	01350b63          	beq	a0,s3,e8871fe4 <_CarPlayControlClientRemoveController+0x44>
    e8871fd2:	85aa                	mv	a1,a0
	{
		// Remove and notify our client
		CFArrayRemoveValueAtIndex( inClient->controllers, ndx );
    e8871fd4:	60a8                	ld	a0,64(s1)
    e8871fd6:	a9ed50ef          	jal	ra,e8847274 <CFArrayRemoveValueAtIndex>
		_CarPlayControlClientPostEvent( inClient, kCarPlayControlClientEvent_RemoveController, inController );
    e8871fda:	8622                	mv	a2,s0
    e8871fdc:	4585                	li	a1,1
    e8871fde:	8526                	mv	a0,s1
    e8871fe0:	e55ff0ef          	jal	ra,e8871e34 <_CarPlayControlClientPostEvent>
	}
	
	CFRelease( inController );
    e8871fe4:	8522                	mv	a0,s0
}
    e8871fe6:	6422                	ld	s0,8(sp)
    e8871fe8:	70a2                	ld	ra,40(sp)
    e8871fea:	64c2                	ld	s1,16(sp)
    e8871fec:	6962                	ld	s2,24(sp)
    e8871fee:	7982                	ld	s3,32(sp)
    e8871ff0:	6145                	addi	sp,sp,48
	CFRelease( inController );
    e8871ff2:	958d506f          	j	e884714a <CFRelease>

00000000e8871ff6 <_CarPlayControlClientConnect>:
//===========================================================================================================================
//	CarPlayControlClientConnect
//===========================================================================================================================

static void _CarPlayControlClientConnect( void *inCtx )
{
    e8871ff6:	7175                	addi	sp,sp,-144
    e8871ff8:	f8ca                	sd	s2,112(sp)
    e8871ffa:	e506                	sd	ra,136(sp)
    e8871ffc:	e122                	sd	s0,128(sp)
    e8871ffe:	fca6                	sd	s1,120(sp)
    e8872000:	f4ce                	sd	s3,104(sp)
    e8872002:	f0d2                	sd	s4,96(sp)
    e8872004:	ecd6                	sd	s5,88(sp)
    e8872006:	e8da                	sd	s6,80(sp)
	_SendCommandContext *			ctx = (_SendCommandContext*) inCtx;
	CarPlayControlClientRef			client = ctx->controller->client;
    e8872008:	611c                	ld	a5,0(a0)
{
    e887200a:	892a                	mv	s2,a0
	CarPlayControlClientRef			client = ctx->controller->client;
    e887200c:	0087ba03          	ld	s4,8(a5)
	CarPlayBonjourServiceRef		carPlayService = NULL;
	Boolean							carPlayServiceIsActive = false;
	CFIndex							serviceCount;
	
	require_action( client->started, exit, ctx->err = kStateErr );
    e8872010:	030a4a83          	lbu	s5,48(s4)
    e8872014:	060a9263          	bnez	s5,e8872078 <_CarPlayControlClientConnect+0x82>
    e8872018:	77f9                	lui	a5,0xffffe
    e887201a:	5cb7879b          	addiw	a5,a5,1483
    e887201e:	c91c                	sw	a5,16(a0)
	CarPlayBonjourServiceRef		carPlayService = NULL;
    e8872020:	4481                	li	s1,0
	
	ctx->err = _CarPlayControlClientSendCommand( client, carPlayService, ctx->command );
	require_noerr( ctx->err, exit );
	
exit:
	if( ctx->err != kNoErr )
    e8872022:	01092783          	lw	a5,16(s2)
    e8872026:	cb9d                	beqz	a5,e887205c <_CarPlayControlClientConnect+0x66>
	{
		if( carPlayServiceIsActive )
    e8872028:	3e0a8e63          	beqz	s5,e8872424 <_CarPlayControlClientConnect+0x42e>
	CFRetain( inService );
    e887202c:	8526                	mv	a0,s1
    e887202e:	918d50ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( inService->queue, (void*) inService, _CarPlayBonjourServiceResolveAddress );
    e8872032:	6488                	ld	a0,8(s1)
    e8872034:	00000617          	auipc	a2,0x0
    e8872038:	b9c60613          	addi	a2,a2,-1124 # e8871bd0 <_CarPlayBonjourServiceResolveAddress>
    e887203c:	85a6                	mv	a1,s1
    e887203e:	be3dc0ef          	jal	ra,e884ec20 <dispatch_async_f>
			
			CarPlayBonjourServiceResolveAddress( carPlayService );
			
			// Also try reconfirming the device

			CFDictionaryRef device = _CarPlayControllerCopyCurrentDevice( ctx->controller );
    e8872042:	00093503          	ld	a0,0(s2)
    e8872046:	f1aff0ef          	jal	ra,e8871760 <_CarPlayControllerCopyCurrentDevice>
    e887204a:	842a                	mv	s0,a0
			BonjourBrowser_ReconfirmDevice( client->browser, device );
    e887204c:	85aa                	mv	a1,a0
    e887204e:	038a3503          	ld	a0,56(s4)
    e8872052:	c1dd40ef          	jal	ra,e8846c6e <BonjourBrowser_ReconfirmDevice>
			CFRelease( device );
    e8872056:	8522                	mv	a0,s0
    e8872058:	8f2d50ef          	jal	ra,e884714a <CFRelease>
				_CarPlayControlClientRemoveController( client, ctx->controller );

		}
	}
    
    CFReleaseNullSafe(carPlayService);
    e887205c:	c481                	beqz	s1,e8872064 <_CarPlayControlClientConnect+0x6e>
    e887205e:	8526                	mv	a0,s1
    e8872060:	8ead50ef          	jal	ra,e884714a <CFRelease>
}
    e8872064:	60aa                	ld	ra,136(sp)
    e8872066:	640a                	ld	s0,128(sp)
    e8872068:	74e6                	ld	s1,120(sp)
    e887206a:	7946                	ld	s2,112(sp)
    e887206c:	79a6                	ld	s3,104(sp)
    e887206e:	7a06                	ld	s4,96(sp)
    e8872070:	6ae6                	ld	s5,88(sp)
    e8872072:	6b46                	ld	s6,80(sp)
    e8872074:	6149                	addi	sp,sp,144
    e8872076:	8082                	ret
	_CopyBestServiceContext		ctx = { inController, NULL, false, kNoErr };
    e8872078:	f83e                	sd	a5,48(sp)
    e887207a:	fc02                	sd	zero,56(sp)
    e887207c:	04010023          	sb	zero,64(sp)
    e8872080:	c282                	sw	zero,68(sp)
	dispatch_sync_f( inController->internalQueue, &ctx, _CarPlayControllerCopyBestService );
    e8872082:	6b88                	ld	a0,16(a5)
    e8872084:	00000617          	auipc	a2,0x0
    e8872088:	3ca60613          	addi	a2,a2,970 # e887244e <_CarPlayControllerCopyBestService>
    e887208c:	180c                	addi	a1,sp,48
    e887208e:	c91dc0ef          	jal	ra,e884ed1e <dispatch_sync_f>
	require_noerr( ctx.err, exit );
    e8872092:	4796                	lw	a5,68(sp)
    e8872094:	20079f63          	bnez	a5,e88722b2 <_CarPlayControlClientConnect+0x2bc>
	*outBestService = ctx.bestService;
    e8872098:	74e2                	ld	s1,56(sp)
	*outBestServiceIsActive = ctx.bestServiceIsActive;
    e887209a:	04014a83          	lbu	s5,64(sp)
	ctx->err = CarPlayControllerCopyBestService( ctx->controller, &carPlayService, &carPlayServiceIsActive );
    e887209e:	00f92823          	sw	a5,16(s2)
	require_noerr( ctx->err, exit );
    e88720a2:	f3c1                	bnez	a5,e8872022 <_CarPlayControlClientConnect+0x2c>
	err = CarPlayBonjourServiceGetAddress( inService, &hostName, &port, &interfaceNdx );
    e88720a4:	0074                	addi	a3,sp,12
    e88720a6:	00a10613          	addi	a2,sp,10
    e88720aa:	080c                	addi	a1,sp,16
    e88720ac:	8526                	mv	a0,s1
	ctx->err = _CarPlayControlClientSendCommand( client, carPlayService, ctx->command );
    e88720ae:	00893b03          	ld	s6,8(s2)
	const char *		hostName = NULL;
    e88720b2:	e802                	sd	zero,16(sp)
	char *				hostNameWithInterfaceNdx = NULL;
    e88720b4:	ec02                	sd	zero,24(sp)
	uint16_t			port = 0;
    e88720b6:	00011523          	sh	zero,10(sp)
	uint32_t			interfaceNdx = 0;
    e88720ba:	c602                	sw	zero,12(sp)
	HTTPClientRef		httpClient = NULL;
    e88720bc:	f002                	sd	zero,32(sp)
	HTTPMessageRef		httpMessage = NULL;
    e88720be:	f402                	sd	zero,40(sp)
	err = CarPlayBonjourServiceGetAddress( inService, &hostName, &port, &interfaceNdx );
    e88720c0:	ac7ff0ef          	jal	ra,e8871b86 <CarPlayBonjourServiceGetAddress.constprop.2>
    e88720c4:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88720c6:	00063997          	auipc	s3,0x63
    e88720ca:	3da98993          	addi	s3,s3,986 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e88720ce:	2c051c63          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	asprintf( &hostNameWithInterfaceNdx, "%s%%%u", hostName, (unsigned)interfaceNdx );
    e88720d2:	46b2                	lw	a3,12(sp)
    e88720d4:	6642                	ld	a2,16(sp)
    e88720d6:	0005a597          	auipc	a1,0x5a
    e88720da:	07258593          	addi	a1,a1,114 # e88cc148 <__PRETTY_FUNCTION__.9875+0x298>
    e88720de:	0828                	addi	a0,sp,24
    e88720e0:	2a5010ef          	jal	ra,e8873b84 <asprintf>
	cpcc_ulog( kLogLevelNotice, "CarPlayControl connecting to %s on port %d\n", hostNameWithInterfaceNdx, (int) port );
    e88720e4:	0009a783          	lw	a5,0(s3)
    e88720e8:	03200713          	li	a4,50
    e88720ec:	02f74863          	blt	a4,a5,e887211c <_CarPlayControlClientConnect+0x126>
    e88720f0:	577d                	li	a4,-1
    e88720f2:	1ce78363          	beq	a5,a4,e88722b8 <_CarPlayControlClientConnect+0x2c2>
    e88720f6:	00a15783          	lhu	a5,10(sp)
    e88720fa:	6762                	ld	a4,24(sp)
    e88720fc:	0005a697          	auipc	a3,0x5a
    e8872100:	05468693          	addi	a3,a3,84 # e88cc150 <__PRETTY_FUNCTION__.9875+0x2a0>
    e8872104:	03200613          	li	a2,50
    e8872108:	0005a597          	auipc	a1,0x5a
    e887210c:	54858593          	addi	a1,a1,1352 # e88cc650 <__PRETTY_FUNCTION__.11767>
    e8872110:	00063517          	auipc	a0,0x63
    e8872114:	39050513          	addi	a0,a0,912 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872118:	b5ce20ef          	jal	ra,e8854474 <LogPrintF>
	err = HTTPClientCreate( &httpClient );
    e887211c:	1008                	addi	a0,sp,32
    e887211e:	85fde0ef          	jal	ra,e885097c <HTTPClientCreate>
    e8872122:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8872124:	28051163          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	HTTPClientSetDispatchQueue( httpClient, inClient->httpQueue );
    e8872128:	010a3583          	ld	a1,16(s4)
    e887212c:	7502                	ld	a0,32(sp)
    e887212e:	97dde0ef          	jal	ra,e8850aaa <HTTPClientSetDispatchQueue>
	HTTPClientSetTimeout( httpClient, kCarPlayControlClient_ConnectionTimeoutSeconds );
    e8872132:	7502                	ld	a0,32(sp)
    e8872134:	4589                	li	a1,2
    e8872136:	9b7de0ef          	jal	ra,e8850aec <HTTPClientSetTimeout>
	HTTPClientSetLogging( httpClient, &log_category_from_name( CarPlayControlClient ) );
    e887213a:	7502                	ld	a0,32(sp)
    e887213c:	00063597          	auipc	a1,0x63
    e8872140:	36458593          	addi	a1,a1,868 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872144:	9a5de0ef          	jal	ra,e8850ae8 <HTTPClientSetLogging>
	HTTPClientSetConnectionLogging( httpClient, &log_category_from_name( CarPlayControlClient ) );
    e8872148:	7502                	ld	a0,32(sp)
    e887214a:	00063597          	auipc	a1,0x63
    e887214e:	35658593          	addi	a1,a1,854 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872152:	993de0ef          	jal	ra,e8850ae4 <HTTPClientSetConnectionLogging>
	err = HTTPClientSetDestination( httpClient, hostNameWithInterfaceNdx, port );
    e8872156:	00a15603          	lhu	a2,10(sp)
    e887215a:	65e2                	ld	a1,24(sp)
    e887215c:	7502                	ld	a0,32(sp)
    e887215e:	911de0ef          	jal	ra,e8850a6e <HTTPClientSetDestination>
    e8872162:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8872164:	24051163          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	return CFDictionaryGetBoolean( inService->bonjourservice, CFSTR( kBonjourDeviceKey_WiFi ), NULL );
    e8872168:	6888                	ld	a0,16(s1)
    e887216a:	4601                	li	a2,0
    e887216c:	0002c597          	auipc	a1,0x2c
    e8872170:	6cc58593          	addi	a1,a1,1740 # e889e838 <icmp6_param_problem+0x17ca>
    e8872174:	cfcda0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
	httpFlags = kHTTPClientFlag_Reachability;
    e8872178:	4611                	li	a2,4
	if( CarPlayBonjourServiceIsWiFi( inService ) ) httpFlags |= kHTTPClientFlag_NonLinkLocal;
    e887217a:	c119                	beqz	a0,e8872180 <_CarPlayControlClientConnect+0x18a>
    e887217c:	10400613          	li	a2,260
	HTTPClientSetFlags( httpClient, httpFlags, httpFlags );
    e8872180:	7502                	ld	a0,32(sp)
    e8872182:	85b2                	mv	a1,a2
    e8872184:	955de0ef          	jal	ra,e8850ad8 <HTTPClientSetFlags>
	err = HTTPMessageCreate( &httpMessage );
    e8872188:	1028                	addi	a0,sp,40
    e887218a:	bd1de0ef          	jal	ra,e8850d5a <HTTPMessageCreate>
    e887218e:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8872190:	20051b63          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	snprintf( url, sizeof(url), "/ctrl-int/1/%s", inCommand );
    e8872194:	86da                	mv	a3,s6
    e8872196:	0005a617          	auipc	a2,0x5a
    e887219a:	fea60613          	addi	a2,a2,-22 # e88cc180 <__PRETTY_FUNCTION__.9875+0x2d0>
    e887219e:	02000593          	li	a1,32
    e88721a2:	1808                	addi	a0,sp,48
    e88721a4:	0ac0a0ef          	jal	ra,e887c250 <eLIBs_snprintf>
	err = HTTPHeader_InitRequest( &httpMessage->header, kHTTPMethodString_GET, url, kHTTPVersionString_1pt1 );
    e88721a8:	7522                	ld	a0,40(sp)
    e88721aa:	0004f697          	auipc	a3,0x4f
    e88721ae:	d6e68693          	addi	a3,a3,-658 # e88c0f18 <kHTTPMessageClass+0x68>
    e88721b2:	1810                	addi	a2,sp,48
    e88721b4:	0004f597          	auipc	a1,0x4f
    e88721b8:	12458593          	addi	a1,a1,292 # e88c12d8 <kHTTPServerClass+0xf8>
    e88721bc:	0541                	addi	a0,a0,16
    e88721be:	bc1df0ef          	jal	ra,e8851d7e <HTTPHeader_InitRequest>
    e88721c2:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88721c4:	1e051163          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	err = HTTPHeader_AddField( &httpMessage->header, kHTTPHeader_Host, hostName );
    e88721c8:	7522                	ld	a0,40(sp)
    e88721ca:	6642                	ld	a2,16(sp)
    e88721cc:	0005a597          	auipc	a1,0x5a
    e88721d0:	fc458593          	addi	a1,a1,-60 # e88cc190 <__PRETTY_FUNCTION__.9875+0x2e0>
    e88721d4:	0541                	addi	a0,a0,16
    e88721d6:	ccbdf0ef          	jal	ra,e8851ea0 <HTTPHeader_AddField>
    e88721da:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88721dc:	1c051563          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	err = HTTPHeader_AddField( &httpMessage->header, kHTTPHeader_UserAgent, kAirPlayUserAgentStr );
    e88721e0:	7522                	ld	a0,40(sp)
    e88721e2:	0005a617          	auipc	a2,0x5a
    e88721e6:	fb660613          	addi	a2,a2,-74 # e88cc198 <__PRETTY_FUNCTION__.9875+0x2e8>
    e88721ea:	00057597          	auipc	a1,0x57
    e88721ee:	73658593          	addi	a1,a1,1846 # e88c9920 <__PRETTY_FUNCTION__.14166+0x230>
    e88721f2:	0541                	addi	a0,a0,16
    e88721f4:	caddf0ef          	jal	ra,e8851ea0 <HTTPHeader_AddField>
    e88721f8:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88721fa:	1a051663          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	err = HTTPHeader_AddFieldF( &httpMessage->header, "AirPlay-Receiver-Device-ID", "%llu", inClient->deviceID );
    e88721fe:	7522                	ld	a0,40(sp)
    e8872200:	050a3683          	ld	a3,80(s4)
    e8872204:	0004f617          	auipc	a2,0x4f
    e8872208:	0cc60613          	addi	a2,a2,204 # e88c12d0 <kHTTPServerClass+0xf0>
    e887220c:	0005a597          	auipc	a1,0x5a
    e8872210:	f9c58593          	addi	a1,a1,-100 # e88cc1a8 <__PRETTY_FUNCTION__.9875+0x2f8>
    e8872214:	0541                	addi	a0,a0,16
    e8872216:	d05df0ef          	jal	ra,e8851f1a <HTTPHeader_AddFieldF>
    e887221a:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e887221c:	18051563          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	cpcc_ulog( kLogLevelTrace, "********** CarPlayControl Request **********\n" );
    e8872220:	0009a783          	lw	a5,0(s3)
    e8872224:	4779                	li	a4,30
    e8872226:	02f74463          	blt	a4,a5,e887224e <_CarPlayControlClientConnect+0x258>
    e887222a:	577d                	li	a4,-1
    e887222c:	08e78e63          	beq	a5,a4,e88722c8 <_CarPlayControlClientConnect+0x2d2>
    e8872230:	0005a697          	auipc	a3,0x5a
    e8872234:	f9868693          	addi	a3,a3,-104 # e88cc1c8 <__PRETTY_FUNCTION__.9875+0x318>
    e8872238:	4679                	li	a2,30
    e887223a:	0005a597          	auipc	a1,0x5a
    e887223e:	41658593          	addi	a1,a1,1046 # e88cc650 <__PRETTY_FUNCTION__.11767>
    e8872242:	00063517          	auipc	a0,0x63
    e8872246:	25e50513          	addi	a0,a0,606 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e887224a:	a2ae20ef          	jal	ra,e8854474 <LogPrintF>
	cpcc_ulog( kLogLevelTrace, "%@\n", httpMessage );
    e887224e:	0009a783          	lw	a5,0(s3)
    e8872252:	4779                	li	a4,30
    e8872254:	02f74563          	blt	a4,a5,e887227e <_CarPlayControlClientConnect+0x288>
    e8872258:	577d                	li	a4,-1
    e887225a:	08e78063          	beq	a5,a4,e88722da <_CarPlayControlClientConnect+0x2e4>
    e887225e:	7722                	ld	a4,40(sp)
    e8872260:	0005a697          	auipc	a3,0x5a
    e8872264:	f9868693          	addi	a3,a3,-104 # e88cc1f8 <__PRETTY_FUNCTION__.9875+0x348>
    e8872268:	4679                	li	a2,30
    e887226a:	0005a597          	auipc	a1,0x5a
    e887226e:	3e658593          	addi	a1,a1,998 # e88cc650 <__PRETTY_FUNCTION__.11767>
    e8872272:	00063517          	auipc	a0,0x63
    e8872276:	22e50513          	addi	a0,a0,558 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e887227a:	9fae20ef          	jal	ra,e8854474 <LogPrintF>
	err = HTTPClientSendMessageSync( httpClient, httpMessage );
    e887227e:	75a2                	ld	a1,40(sp)
    e8872280:	7502                	ld	a0,32(sp)
    e8872282:	971de0ef          	jal	ra,e8850bf2 <HTTPClientSendMessageSync>
    e8872286:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8872288:	10051f63          	bnez	a0,e88723a6 <_CarPlayControlClientConnect+0x3b0>
	require_action( httpMessage->header.statusCode != 0, exit, err = kResponseErr );
    e887228c:	77a2                	ld	a5,40(sp)
    e887228e:	4e07a703          	lw	a4,1248(a5) # ffffffffffffe4e0 <__DRAM0_INF_BASE+0xffffffff0000e4e0>
    e8872292:	10070763          	beqz	a4,e88723a0 <_CarPlayControlClientConnect+0x3aa>
	require_action( IsHTTPStatusCode_Success( httpMessage->header.statusCode ), exit, err = HTTPStatusToOSStatus( httpMessage->header.statusCode ) );
    e8872296:	f387079b          	addiw	a5,a4,-200
    e887229a:	06300693          	li	a3,99
    e887229e:	04f6f763          	bgeu	a3,a5,e88722ec <_CarPlayControlClientConnect+0x2f6>
    e88722a2:	000317b7          	lui	a5,0x31
    e88722a6:	d407879b          	addiw	a5,a5,-704
    e88722aa:	9fb9                	addw	a5,a5,a4
	if( err )	cpcc_ulog( kLogLevelVerbose, "CarPlayControl command \"%s\" failed    @ %N: %#m\n", inCommand, err );
    e88722ac:	cfd9                	beqz	a5,e887234a <_CarPlayControlClientConnect+0x354>
    e88722ae:	843e                	mv	s0,a5
    e88722b0:	a8dd                	j	e88723a6 <_CarPlayControlClientConnect+0x3b0>
	Boolean							carPlayServiceIsActive = false;
    e88722b2:	4a81                	li	s5,0
	CarPlayBonjourServiceRef		carPlayService = NULL;
    e88722b4:	4481                	li	s1,0
    e88722b6:	b3e5                	j	e887209e <_CarPlayControlClientConnect+0xa8>
	cpcc_ulog( kLogLevelNotice, "CarPlayControl connecting to %s on port %d\n", hostNameWithInterfaceNdx, (int) port );
    e88722b8:	03200593          	li	a1,50
    e88722bc:	854e                	mv	a0,s3
    e88722be:	db5e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88722c2:	e4050de3          	beqz	a0,e887211c <_CarPlayControlClientConnect+0x126>
    e88722c6:	bd05                	j	e88720f6 <_CarPlayControlClientConnect+0x100>
	cpcc_ulog( kLogLevelTrace, "********** CarPlayControl Request **********\n" );
    e88722c8:	45f9                	li	a1,30
    e88722ca:	00063517          	auipc	a0,0x63
    e88722ce:	1d650513          	addi	a0,a0,470 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e88722d2:	da1e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88722d6:	dd25                	beqz	a0,e887224e <_CarPlayControlClientConnect+0x258>
    e88722d8:	bfa1                	j	e8872230 <_CarPlayControlClientConnect+0x23a>
	cpcc_ulog( kLogLevelTrace, "%@\n", httpMessage );
    e88722da:	45f9                	li	a1,30
    e88722dc:	00063517          	auipc	a0,0x63
    e88722e0:	1c450513          	addi	a0,a0,452 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e88722e4:	d8fe10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88722e8:	d959                	beqz	a0,e887227e <_CarPlayControlClientConnect+0x288>
    e88722ea:	bf95                	j	e887225e <_CarPlayControlClientConnect+0x268>
    e88722ec:	0009a783          	lw	a5,0(s3)
	cpcc_ulog( kLogLevelTrace, "********** CarPlayControl Response **********\n" );
    e88722f0:	4779                	li	a4,30
    e88722f2:	02f74463          	blt	a4,a5,e887231a <_CarPlayControlClientConnect+0x324>
    e88722f6:	577d                	li	a4,-1
    e88722f8:	08e78263          	beq	a5,a4,e887237c <_CarPlayControlClientConnect+0x386>
    e88722fc:	0005a697          	auipc	a3,0x5a
    e8872300:	f0468693          	addi	a3,a3,-252 # e88cc200 <__PRETTY_FUNCTION__.9875+0x350>
    e8872304:	4679                	li	a2,30
    e8872306:	0005a597          	auipc	a1,0x5a
    e887230a:	34a58593          	addi	a1,a1,842 # e88cc650 <__PRETTY_FUNCTION__.11767>
    e887230e:	00063517          	auipc	a0,0x63
    e8872312:	19250513          	addi	a0,a0,402 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872316:	95ee20ef          	jal	ra,e8854474 <LogPrintF>
	cpcc_ulog( kLogLevelTrace, "%@\n", httpMessage );
    e887231a:	0009a783          	lw	a5,0(s3)
    e887231e:	4779                	li	a4,30
    e8872320:	02f74563          	blt	a4,a5,e887234a <_CarPlayControlClientConnect+0x354>
    e8872324:	577d                	li	a4,-1
    e8872326:	06e78463          	beq	a5,a4,e887238e <_CarPlayControlClientConnect+0x398>
    e887232a:	7722                	ld	a4,40(sp)
    e887232c:	0005a697          	auipc	a3,0x5a
    e8872330:	ecc68693          	addi	a3,a3,-308 # e88cc1f8 <__PRETTY_FUNCTION__.9875+0x348>
    e8872334:	4679                	li	a2,30
    e8872336:	0005a597          	auipc	a1,0x5a
    e887233a:	31a58593          	addi	a1,a1,794 # e88cc650 <__PRETTY_FUNCTION__.11767>
    e887233e:	00063517          	auipc	a0,0x63
    e8872342:	16250513          	addi	a0,a0,354 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872346:	92ee20ef          	jal	ra,e8854474 <LogPrintF>
	else		cpcc_ulog( kLogLevelVerbose, "CarPlayControl command \"%s\" completed @ %N\n", inCommand);
    e887234a:	0009a783          	lw	a5,0(s3)
    e887234e:	4751                	li	a4,20
    e8872350:	08f74463          	blt	a4,a5,e88723d8 <_CarPlayControlClientConnect+0x3e2>
    e8872354:	577d                	li	a4,-1
    e8872356:	0ae78e63          	beq	a5,a4,e8872412 <_CarPlayControlClientConnect+0x41c>
    e887235a:	875a                	mv	a4,s6
    e887235c:	0005a697          	auipc	a3,0x5a
    e8872360:	f0c68693          	addi	a3,a3,-244 # e88cc268 <__PRETTY_FUNCTION__.9875+0x3b8>
    e8872364:	4651                	li	a2,20
    e8872366:	0005a597          	auipc	a1,0x5a
    e887236a:	2ea58593          	addi	a1,a1,746 # e88cc650 <__PRETTY_FUNCTION__.11767>
    e887236e:	00063517          	auipc	a0,0x63
    e8872372:	13250513          	addi	a0,a0,306 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872376:	8fee20ef          	jal	ra,e8854474 <LogPrintF>
    e887237a:	a8b9                	j	e88723d8 <_CarPlayControlClientConnect+0x3e2>
	cpcc_ulog( kLogLevelTrace, "********** CarPlayControl Response **********\n" );
    e887237c:	45f9                	li	a1,30
    e887237e:	00063517          	auipc	a0,0x63
    e8872382:	12250513          	addi	a0,a0,290 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872386:	cede10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e887238a:	d941                	beqz	a0,e887231a <_CarPlayControlClientConnect+0x324>
    e887238c:	bf85                	j	e88722fc <_CarPlayControlClientConnect+0x306>
	cpcc_ulog( kLogLevelTrace, "%@\n", httpMessage );
    e887238e:	45f9                	li	a1,30
    e8872390:	00063517          	auipc	a0,0x63
    e8872394:	11050513          	addi	a0,a0,272 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872398:	cdbe10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e887239c:	d55d                	beqz	a0,e887234a <_CarPlayControlClientConnect+0x354>
    e887239e:	b771                	j	e887232a <_CarPlayControlClientConnect+0x334>
	require_action( httpMessage->header.statusCode != 0, exit, err = kResponseErr );
    e88723a0:	7479                	lui	s0,0xffffe
    e88723a2:	5c840413          	addi	s0,s0,1480 # ffffffffffffe5c8 <__DRAM0_INF_BASE+0xffffffff0000e5c8>
	if( err )	cpcc_ulog( kLogLevelVerbose, "CarPlayControl command \"%s\" failed    @ %N: %#m\n", inCommand, err );
    e88723a6:	0009a783          	lw	a5,0(s3)
    e88723aa:	4751                	li	a4,20
    e88723ac:	02f74663          	blt	a4,a5,e88723d8 <_CarPlayControlClientConnect+0x3e2>
    e88723b0:	577d                	li	a4,-1
    e88723b2:	04e78763          	beq	a5,a4,e8872400 <_CarPlayControlClientConnect+0x40a>
    e88723b6:	87a2                	mv	a5,s0
    e88723b8:	875a                	mv	a4,s6
    e88723ba:	0005a697          	auipc	a3,0x5a
    e88723be:	e7668693          	addi	a3,a3,-394 # e88cc230 <__PRETTY_FUNCTION__.9875+0x380>
    e88723c2:	4651                	li	a2,20
    e88723c4:	0005a597          	auipc	a1,0x5a
    e88723c8:	28c58593          	addi	a1,a1,652 # e88cc650 <__PRETTY_FUNCTION__.11767>
    e88723cc:	00063517          	auipc	a0,0x63
    e88723d0:	0d450513          	addi	a0,a0,212 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e88723d4:	8a0e20ef          	jal	ra,e8854474 <LogPrintF>
	ForgetMem( &hostNameWithInterfaceNdx );
    e88723d8:	6562                	ld	a0,24(sp)
    e88723da:	c501                	beqz	a0,e88723e2 <_CarPlayControlClientConnect+0x3ec>
    e88723dc:	725090ef          	jal	ra,e887c300 <eLIBs_free>
    e88723e0:	ec02                	sd	zero,24(sp)
	HTTPClientForget( &httpClient );
    e88723e2:	7502                	ld	a0,32(sp)
    e88723e4:	c519                	beqz	a0,e88723f2 <_CarPlayControlClientConnect+0x3fc>
    e88723e6:	e34de0ef          	jal	ra,e8850a1a <HTTPClientInvalidate>
    e88723ea:	7502                	ld	a0,32(sp)
    e88723ec:	d5fd40ef          	jal	ra,e884714a <CFRelease>
    e88723f0:	f002                	sd	zero,32(sp)
	CFReleaseNullSafe( httpMessage );
    e88723f2:	7522                	ld	a0,40(sp)
    e88723f4:	c119                	beqz	a0,e88723fa <_CarPlayControlClientConnect+0x404>
    e88723f6:	d55d40ef          	jal	ra,e884714a <CFRelease>
	ctx->err = _CarPlayControlClientSendCommand( client, carPlayService, ctx->command );
    e88723fa:	00892823          	sw	s0,16(s2)
exit:
    e88723fe:	b115                	j	e8872022 <_CarPlayControlClientConnect+0x2c>
	if( err )	cpcc_ulog( kLogLevelVerbose, "CarPlayControl command \"%s\" failed    @ %N: %#m\n", inCommand, err );
    e8872400:	45d1                	li	a1,20
    e8872402:	00063517          	auipc	a0,0x63
    e8872406:	09e50513          	addi	a0,a0,158 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e887240a:	c69e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e887240e:	d569                	beqz	a0,e88723d8 <_CarPlayControlClientConnect+0x3e2>
    e8872410:	b75d                	j	e88723b6 <_CarPlayControlClientConnect+0x3c0>
	else		cpcc_ulog( kLogLevelVerbose, "CarPlayControl command \"%s\" completed @ %N\n", inCommand);
    e8872412:	45d1                	li	a1,20
    e8872414:	00063517          	auipc	a0,0x63
    e8872418:	08c50513          	addi	a0,a0,140 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e887241c:	c57e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8872420:	dd45                	beqz	a0,e88723d8 <_CarPlayControlClientConnect+0x3e2>
    e8872422:	bf25                	j	e887235a <_CarPlayControlClientConnect+0x364>
			_CarPlayControllerForgetInactiveServices( ctx->controller, &serviceCount );
    e8872424:	00093783          	ld	a5,0(s2)
	_ForgetInactiveServicesContext		context	= { inController, 0 };
    e8872428:	dc02                	sw	zero,56(sp)
	dispatch_sync_f( inController->internalQueue, &context, _CarPlayControllerForgetInactiveServicesInternal );
    e887242a:	fffff617          	auipc	a2,0xfffff
    e887242e:	72a60613          	addi	a2,a2,1834 # e8871b54 <_CarPlayControllerForgetInactiveServicesInternal>
	_ForgetInactiveServicesContext		context	= { inController, 0 };
    e8872432:	f83e                	sd	a5,48(sp)
	dispatch_sync_f( inController->internalQueue, &context, _CarPlayControllerForgetInactiveServicesInternal );
    e8872434:	6b88                	ld	a0,16(a5)
    e8872436:	180c                	addi	a1,sp,48
    e8872438:	8e7dc0ef          	jal	ra,e884ed1e <dispatch_sync_f>
		*outServiceCount = context.serviceCount;
    e887243c:	57e2                	lw	a5,56(sp)
			if( serviceCount == 0 )
    e887243e:	c0079fe3          	bnez	a5,e887205c <_CarPlayControlClientConnect+0x66>
				_CarPlayControlClientRemoveController( client, ctx->controller );
    e8872442:	00093583          	ld	a1,0(s2)
    e8872446:	8552                	mv	a0,s4
    e8872448:	b59ff0ef          	jal	ra,e8871fa0 <_CarPlayControlClientRemoveController>
    e887244c:	b901                	j	e887205c <_CarPlayControlClientConnect+0x66>

00000000e887244e <_CarPlayControllerCopyBestService>:
{
    e887244e:	715d                	addi	sp,sp,-80
    e8872450:	e0a2                	sd	s0,64(sp)
    e8872452:	e486                	sd	ra,72(sp)
    e8872454:	fc26                	sd	s1,56(sp)
    e8872456:	f84a                	sd	s2,48(sp)
    e8872458:	f44e                	sd	s3,40(sp)
    e887245a:	f052                	sd	s4,32(sp)
    e887245c:	ec56                	sd	s5,24(sp)
    e887245e:	e85a                	sd	s6,16(sp)
	serviceKeys = CFDictionaryCopyKeys( ctx->controller->activeServices, NULL );
    e8872460:	611c                	ld	a5,0(a0)
{
    e8872462:	842a                	mv	s0,a0
	serviceKeys = CFDictionaryCopyKeys( ctx->controller->activeServices, NULL );
    e8872464:	4581                	li	a1,0
    e8872466:	7388                	ld	a0,32(a5)
    e8872468:	d3fd90ef          	jal	ra,e884c1a6 <CFDictionaryCopyKeys>
	require_action( serviceKeys, exit, ctx->err = kNoMemoryErr );
    e887246c:	ed19                	bnez	a0,e887248a <_CarPlayControllerCopyBestService+0x3c>
    e887246e:	77f9                	lui	a5,0xffffe
    e8872470:	5b87879b          	addiw	a5,a5,1464
	require_action_quiet( ctx->bestService, exit, ctx->err = kNotFoundErr );
    e8872474:	c85c                	sw	a5,20(s0)
}
    e8872476:	60a6                	ld	ra,72(sp)
    e8872478:	6406                	ld	s0,64(sp)
    e887247a:	74e2                	ld	s1,56(sp)
    e887247c:	7942                	ld	s2,48(sp)
    e887247e:	79a2                	ld	s3,40(sp)
    e8872480:	7a02                	ld	s4,32(sp)
    e8872482:	6ae2                	ld	s5,24(sp)
    e8872484:	6b42                	ld	s6,16(sp)
    e8872486:	6161                	addi	sp,sp,80
    e8872488:	8082                	ret
    e887248a:	8a2a                	mv	s4,a0
	for( serviceNdx = 0, serviceCount = CFArrayGetCount( serviceKeys ); serviceNdx < serviceCount; ++serviceNdx )
    e887248c:	d67d40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8872490:	8aaa                	mv	s5,a0
	Boolean							active = false;
    e8872492:	4981                	li	s3,0
	for( serviceNdx = 0, serviceCount = CFArrayGetCount( serviceKeys ); serviceNdx < serviceCount; ++serviceNdx )
    e8872494:	4481                	li	s1,0
	return CFDictionaryGetBoolean( inService->bonjourservice, CFSTR( kBonjourDeviceKey_WiFi ), NULL );
    e8872496:	0002cb17          	auipc	s6,0x2c
    e887249a:	3a2b0b13          	addi	s6,s6,930 # e889e838 <icmp6_param_problem+0x17ca>
	for( serviceNdx = 0, serviceCount = CFArrayGetCount( serviceKeys ); serviceNdx < serviceCount; ++serviceNdx )
    e887249e:	0554d363          	bge	s1,s5,e88724e4 <_CarPlayControllerCopyBestService+0x96>
		carPlayService = CFDictionaryGetValue( ctx->controller->activeServices,
    e88724a2:	601c                	ld	a5,0(s0)
								CFArrayGetValueAtIndex( serviceKeys, serviceNdx ) );
    e88724a4:	85a6                	mv	a1,s1
    e88724a6:	8552                	mv	a0,s4
		carPlayService = CFDictionaryGetValue( ctx->controller->activeServices,
    e88724a8:	0207b903          	ld	s2,32(a5) # ffffffffffffe020 <__DRAM0_INF_BASE+0xffffffff0000e020>
								CFArrayGetValueAtIndex( serviceKeys, serviceNdx ) );
    e88724ac:	d5bd40ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
		carPlayService = CFDictionaryGetValue( ctx->controller->activeServices,
    e88724b0:	85aa                	mv	a1,a0
    e88724b2:	854a                	mv	a0,s2
    e88724b4:	f8bd40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e88724b8:	892a                	mv	s2,a0
	return CFDictionaryGetBoolean( inService->bonjourservice, CFSTR( kBonjourDeviceKey_WiFi ), NULL );
    e88724ba:	6908                	ld	a0,16(a0)
    e88724bc:	4601                	li	a2,0
    e88724be:	85da                	mv	a1,s6
    e88724c0:	9b0da0ef          	jal	ra,e884c670 <CFDictionaryGetInt64>
		if( !CarPlayBonjourServiceIsWiFi( carPlayService ) )
    e88724c4:	e161                	bnez	a0,e8872584 <_CarPlayControllerCopyBestService+0x136>
			ReplaceCF( &ctx->bestService, carPlayService );
    e88724c6:	00843a83          	ld	s5,8(s0)
    e88724ca:	00090563          	beqz	s2,e88724d4 <_CarPlayControllerCopyBestService+0x86>
    e88724ce:	854a                	mv	a0,s2
    e88724d0:	c77d40ef          	jal	ra,e8847146 <CFRetain>
    e88724d4:	01243423          	sd	s2,8(s0)
			active = true;
    e88724d8:	4985                	li	s3,1
			ReplaceCF( &ctx->bestService, carPlayService );
    e88724da:	000a8563          	beqz	s5,e88724e4 <_CarPlayControllerCopyBestService+0x96>
    e88724de:	8556                	mv	a0,s5
    e88724e0:	c6bd40ef          	jal	ra,e884714a <CFRelease>
	ForgetCF( &serviceKeys );
    e88724e4:	8552                	mv	a0,s4
    e88724e6:	c65d40ef          	jal	ra,e884714a <CFRelease>
	if( !ctx->bestService )
    e88724ea:	641c                	ld	a5,8(s0)
    e88724ec:	ef8d                	bnez	a5,e8872526 <_CarPlayControllerCopyBestService+0xd8>
		serviceKeys = CFDictionaryCopyKeys( ctx->controller->inactiveWiFiServices, NULL );
    e88724ee:	601c                	ld	a5,0(s0)
    e88724f0:	4581                	li	a1,0
    e88724f2:	7788                	ld	a0,40(a5)
    e88724f4:	cb3d90ef          	jal	ra,e884c1a6 <CFDictionaryCopyKeys>
    e88724f8:	892a                	mv	s2,a0
		require_action( serviceKeys, exit, ctx->err = kNoMemoryErr );
    e88724fa:	d935                	beqz	a0,e887246e <_CarPlayControllerCopyBestService+0x20>
		if( CFArrayGetCount( serviceKeys ) > 0 )
    e88724fc:	cf7d40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8872500:	02a05063          	blez	a0,e8872520 <_CarPlayControllerCopyBestService+0xd2>
			carPlayService = CFDictionaryGetValue( ctx->controller->inactiveWiFiServices,
    e8872504:	601c                	ld	a5,0(s0)
									CFArrayGetValueAtIndex( serviceKeys, serviceNdx ) );
    e8872506:	85a6                	mv	a1,s1
    e8872508:	854a                	mv	a0,s2
			carPlayService = CFDictionaryGetValue( ctx->controller->inactiveWiFiServices,
    e887250a:	0287ba03          	ld	s4,40(a5)
									CFArrayGetValueAtIndex( serviceKeys, serviceNdx ) );
    e887250e:	cf9d40ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
			carPlayService = CFDictionaryGetValue( ctx->controller->inactiveWiFiServices,
    e8872512:	85aa                	mv	a1,a0
    e8872514:	8552                	mv	a0,s4
    e8872516:	f29d40ef          	jal	ra,e884743e <CFDictionaryGetValue>
			ctx->bestService = CFRetain( carPlayService );
    e887251a:	c2dd40ef          	jal	ra,e8847146 <CFRetain>
    e887251e:	e408                	sd	a0,8(s0)
		ForgetCF( &serviceKeys );
    e8872520:	854a                	mv	a0,s2
    e8872522:	c29d40ef          	jal	ra,e884714a <CFRelease>
	cpcc_ulog( kLogLevelTrace, "Controller [%p] found best Service [%p] (%s) from:\nActiveServices:%@\nInactiveServices:%@\n",
    e8872526:	00063517          	auipc	a0,0x63
    e887252a:	f7a50513          	addi	a0,a0,-134 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e887252e:	411c                	lw	a5,0(a0)
    e8872530:	4779                	li	a4,30
    e8872532:	06f74663          	blt	a4,a5,e887259e <_CarPlayControllerCopyBestService+0x150>
    e8872536:	577d                	li	a4,-1
    e8872538:	04e78f63          	beq	a5,a4,e8872596 <_CarPlayControllerCopyBestService+0x148>
    e887253c:	f8f4470b          	ldd	a4,a5,(s0),0,4
    e8872540:	0005a817          	auipc	a6,0x5a
    e8872544:	e5080813          	addi	a6,a6,-432 # e88cc390 <__PRETTY_FUNCTION__.9875+0x4e0>
    e8872548:	cb99                	beqz	a5,e887255e <_CarPlayControllerCopyBestService+0x110>
    e887254a:	0005a817          	auipc	a6,0x5a
    e887254e:	e4e80813          	addi	a6,a6,-434 # e88cc398 <__PRETTY_FUNCTION__.9875+0x4e8>
    e8872552:	00099663          	bnez	s3,e887255e <_CarPlayControllerCopyBestService+0x110>
    e8872556:	0005a817          	auipc	a6,0x5a
    e887255a:	e4a80813          	addi	a6,a6,-438 # e88cc3a0 <__PRETTY_FUNCTION__.9875+0x4f0>
    e887255e:	fcd7488b          	ldd	a7,a3,(a4),2,4
    e8872562:	4679                	li	a2,30
    e8872564:	0005a597          	auipc	a1,0x5a
    e8872568:	00c58593          	addi	a1,a1,12 # e88cc570 <__PRETTY_FUNCTION__.11529>
    e887256c:	e036                	sd	a3,0(sp)
    e887256e:	00063517          	auipc	a0,0x63
    e8872572:	f3250513          	addi	a0,a0,-206 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872576:	0005a697          	auipc	a3,0x5a
    e887257a:	e3a68693          	addi	a3,a3,-454 # e88cc3b0 <__PRETTY_FUNCTION__.9875+0x500>
    e887257e:	ef7e10ef          	jal	ra,e8854474 <LogPrintF>
    e8872582:	a831                	j	e887259e <_CarPlayControllerCopyBestService+0x150>
		else if( !ctx->bestService )
    e8872584:	641c                	ld	a5,8(s0)
    e8872586:	e791                	bnez	a5,e8872592 <_CarPlayControllerCopyBestService+0x144>
			ctx->bestService = CFRetain( carPlayService );
    e8872588:	854a                	mv	a0,s2
    e887258a:	bbdd40ef          	jal	ra,e8847146 <CFRetain>
    e887258e:	e408                	sd	a0,8(s0)
			active = true;
    e8872590:	4985                	li	s3,1
	for( serviceNdx = 0, serviceCount = CFArrayGetCount( serviceKeys ); serviceNdx < serviceCount; ++serviceNdx )
    e8872592:	2485                	addiw	s1,s1,1
    e8872594:	b729                	j	e887249e <_CarPlayControllerCopyBestService+0x50>
	cpcc_ulog( kLogLevelTrace, "Controller [%p] found best Service [%p] (%s) from:\nActiveServices:%@\nInactiveServices:%@\n",
    e8872596:	45f9                	li	a1,30
    e8872598:	adbe10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e887259c:	f145                	bnez	a0,e887253c <_CarPlayControllerCopyBestService+0xee>
	require_action_quiet( ctx->bestService, exit, ctx->err = kNotFoundErr );
    e887259e:	641c                	ld	a5,8(s0)
    e88725a0:	e789                	bnez	a5,e88725aa <_CarPlayControllerCopyBestService+0x15c>
    e88725a2:	77f9                	lui	a5,0xffffe
    e88725a4:	5b97879b          	addiw	a5,a5,1465
    e88725a8:	b5f1                	j	e8872474 <_CarPlayControllerCopyBestService+0x26>
	ctx->bestServiceIsActive = active;
    e88725aa:	01340823          	sb	s3,16(s0)
	return;
    e88725ae:	b5e1                	j	e8872476 <_CarPlayControllerCopyBestService+0x28>

00000000e88725b0 <_CarPlayControllerActivateService>:
{
    e88725b0:	7139                	addi	sp,sp,-64
    e88725b2:	e826                	sd	s1,16(sp)
    e88725b4:	84ae                	mv	s1,a1
	serviceInterfaceNdx = CFDictionaryGetValue( bonjourService, CFSTR( kBonjourDeviceKey_InterfaceIndex ) );
    e88725b6:	0002c597          	auipc	a1,0x2c
    e88725ba:	27258593          	addi	a1,a1,626 # e889e828 <icmp6_param_problem+0x17ba>
{
    e88725be:	ec4a                	sd	s2,24(sp)
    e88725c0:	f04e                	sd	s3,32(sp)
    e88725c2:	fc06                	sd	ra,56(sp)
    e88725c4:	e422                	sd	s0,8(sp)
    e88725c6:	f452                	sd	s4,40(sp)
    e88725c8:	f856                	sd	s5,48(sp)
    e88725ca:	89aa                	mv	s3,a0
	serviceInterfaceNdx = CFDictionaryGetValue( bonjourService, CFSTR( kBonjourDeviceKey_InterfaceIndex ) );
    e88725cc:	e73d40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e88725d0:	892a                	mv	s2,a0
	require_quiet( !CFDictionaryContainsKey( controller->activeServices, serviceInterfaceNdx ), exit );
    e88725d2:	85aa                	mv	a1,a0
    e88725d4:	7088                	ld	a0,32(s1)
    e88725d6:	b88d60ef          	jal	ra,e884895e <CFLDictionaryContainsKey>
    e88725da:	18051d63          	bnez	a0,e8872774 <_CarPlayControllerActivateService+0x1c4>
	service = CFDictionaryGetValue( controller->inactiveWiFiServices, serviceInterfaceNdx );
    e88725de:	7488                	ld	a0,40(s1)
    e88725e0:	85ca                	mv	a1,s2
    e88725e2:	e5dd40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e88725e6:	842a                	mv	s0,a0
	if( service )
    e88725e8:	cd19                	beqz	a0,e8872606 <_CarPlayControllerActivateService+0x56>
		CFRetain( service );
    e88725ea:	b5dd40ef          	jal	ra,e8847146 <CFRetain>
		CFDictionaryRemoveValue( controller->inactiveWiFiServices, serviceInterfaceNdx );
    e88725ee:	7488                	ld	a0,40(s1)
    e88725f0:	85ca                	mv	a1,s2
    e88725f2:	e69d40ef          	jal	ra,e884745a <CFDictionaryRemoveValue>
		CFDictionarySetValue( controller->activeServices, serviceInterfaceNdx, service );
    e88725f6:	7088                	ld	a0,32(s1)
    e88725f8:	8622                	mv	a2,s0
    e88725fa:	85ca                	mv	a1,s2
    e88725fc:	e57d40ef          	jal	ra,e8847452 <CFDictionarySetValue>
		CFRelease( service );
    e8872600:	8522                	mv	a0,s0
    e8872602:	b49d40ef          	jal	ra,e884714a <CFRelease>
	service = CFDictionaryGetValue( controller->activeServices, serviceInterfaceNdx );
    e8872606:	7088                	ld	a0,32(s1)
    e8872608:	85ca                	mv	a1,s2
    e887260a:	00063a17          	auipc	s4,0x63
    e887260e:	e96a0a13          	addi	s4,s4,-362 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872612:	e2dd40ef          	jal	ra,e884743e <CFDictionaryGetValue>
    e8872616:	842a                	mv	s0,a0
	if( !service || !CarPlayBonjourServiceIsSameBonjourService( service, bonjourService ) )
    e8872618:	10051a63          	bnez	a0,e887272c <_CarPlayControllerActivateService+0x17c>
					CFDictionaryGetCFString( controller->device, CFSTR( kBonjourDeviceKey_ServiceType ), NULL ) );
    e887261c:	6c80                	ld	s0,24(s1)
    e887261e:	e77d40ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8872622:	0005061b          	sext.w	a2,a0
    e8872626:	4681                	li	a3,0
    e8872628:	0002c597          	auipc	a1,0x2c
    e887262c:	25858593          	addi	a1,a1,600 # e889e880 <icmp6_param_problem+0x1812>
    e8872630:	8522                	mv	a0,s0
    e8872632:	878da0ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
    e8872636:	8aaa                	mv	s5,a0
	dispatch_once_f( &serviceInitOnce, &serviceTypeID, _CarPlayBonjourServiceGetTypeID );
    e8872638:	00071517          	auipc	a0,0x71
    e887263c:	7b450513          	addi	a0,a0,1972 # e88e3dec <serviceInitOnce.11350>
    e8872640:	4118                	lw	a4,0(a0)
    e8872642:	4789                	li	a5,2
    e8872644:	00f70c63          	beq	a4,a5,e887265c <_CarPlayControllerActivateService+0xac>
    e8872648:	fffff617          	auipc	a2,0xfffff
    e887264c:	fcc60613          	addi	a2,a2,-52 # e8871614 <_CarPlayBonjourServiceGetTypeID>
    e8872650:	00071597          	auipc	a1,0x71
    e8872654:	7a058593          	addi	a1,a1,1952 # e88e3df0 <serviceTypeID.11351>
    e8872658:	81bdc0ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
	obj = (CarPlayBonjourService*) _CFRuntimeCreateInstance( NULL, CarPlayBonjourServiceGetTypeID(), (CFIndex) extraLen, NULL );
    e887265c:	00071797          	auipc	a5,0x71
    e8872660:	79478793          	addi	a5,a5,1940 # e88e3df0 <serviceTypeID.11351>
    e8872664:	438c                	lw	a1,0(a5)
    e8872666:	4681                	li	a3,0
    e8872668:	03000613          	li	a2,48
    e887266c:	4501                	li	a0,0
    e887266e:	906d50ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
    e8872672:	842a                	mv	s0,a0
	require_action( obj, exit, err = kNoMemoryErr );
    e8872674:	c13d                	beqz	a0,e88726da <_CarPlayControllerActivateService+0x12a>
	memset( ( (uint8_t *) obj ) + sizeof( obj->base ), 0, extraLen );
    e8872676:	03000613          	li	a2,48
    e887267a:	4581                	li	a1,0
    e887267c:	0521                	addi	a0,a0,8
    e887267e:	517090ef          	jal	ra,e887c394 <eLIBs_memset>
	obj->queue = dispatch_queue_create( "CarPlayBonjourService", NULL );
    e8872682:	4581                	li	a1,0
    e8872684:	0005a517          	auipc	a0,0x5a
    e8872688:	c9c50513          	addi	a0,a0,-868 # e88cc320 <__PRETTY_FUNCTION__.9875+0x470>
    e887268c:	ef2dd0ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e8872690:	e408                	sd	a0,8(s0)
	require_action( obj->queue, exit, err = kNoMemoryErr );
    e8872692:	0e050a63          	beqz	a0,e8872786 <_CarPlayControllerActivateService+0x1d6>
	obj->bonjourservice = (CFDictionaryRef) CFRetain( inService );
    e8872696:	854e                	mv	a0,s3
    e8872698:	aafd40ef          	jal	ra,e8847146 <CFRetain>
    e887269c:	e808                	sd	a0,16(s0)
	obj->serviceType = (CFStringRef) CFRetain( inServiceType );
    e887269e:	8556                	mv	a0,s5
    e88726a0:	aa7d40ef          	jal	ra,e8847146 <CFRetain>
    e88726a4:	ec08                	sd	a0,24(s0)
	cpcc_ulog( kLogLevelTrace, "Created CarPlayBonjourService [%p] for:\n%1@\n", obj, inServiceType, inService );
    e88726a6:	000a2783          	lw	a5,0(s4)
    e88726aa:	4779                	li	a4,30
    e88726ac:	02f74763          	blt	a4,a5,e88726da <_CarPlayControllerActivateService+0x12a>
    e88726b0:	577d                	li	a4,-1
    e88726b2:	08e78f63          	beq	a5,a4,e8872750 <_CarPlayControllerActivateService+0x1a0>
    e88726b6:	884e                	mv	a6,s3
    e88726b8:	87d6                	mv	a5,s5
    e88726ba:	8722                	mv	a4,s0
    e88726bc:	0005a697          	auipc	a3,0x5a
    e88726c0:	c7c68693          	addi	a3,a3,-900 # e88cc338 <__PRETTY_FUNCTION__.9875+0x488>
    e88726c4:	4679                	li	a2,30
    e88726c6:	0005a597          	auipc	a1,0x5a
    e88726ca:	dfa58593          	addi	a1,a1,-518 # e88cc4c0 <__PRETTY_FUNCTION__.11434>
    e88726ce:	00063517          	auipc	a0,0x63
    e88726d2:	dd250513          	addi	a0,a0,-558 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e88726d6:	d9fe10ef          	jal	ra,e8854474 <LogPrintF>
		CFDictionarySetValue( controller->activeServices, serviceInterfaceNdx, service );
    e88726da:	7088                	ld	a0,32(s1)
    e88726dc:	8622                	mv	a2,s0
    e88726de:	85ca                	mv	a1,s2
    e88726e0:	d73d40ef          	jal	ra,e8847452 <CFDictionarySetValue>
	if( service )
    e88726e4:	e831                	bnez	s0,e8872738 <_CarPlayControllerActivateService+0x188>
	cpcc_ulog( kLogLevelNotice, "Controller [%p] Activated Service [%p]\n", controller, service );
    e88726e6:	000a2783          	lw	a5,0(s4)
    e88726ea:	03200713          	li	a4,50
    e88726ee:	08f74363          	blt	a4,a5,e8872774 <_CarPlayControllerActivateService+0x1c4>
    e88726f2:	577d                	li	a4,-1
    e88726f4:	06e78763          	beq	a5,a4,e8872762 <_CarPlayControllerActivateService+0x1b2>
    e88726f8:	87a2                	mv	a5,s0
}
    e88726fa:	6422                	ld	s0,8(sp)
    e88726fc:	70e2                	ld	ra,56(sp)
    e88726fe:	6962                	ld	s2,24(sp)
    e8872700:	7982                	ld	s3,32(sp)
    e8872702:	7a22                	ld	s4,40(sp)
    e8872704:	7ac2                	ld	s5,48(sp)
	cpcc_ulog( kLogLevelNotice, "Controller [%p] Activated Service [%p]\n", controller, service );
    e8872706:	8726                	mv	a4,s1
}
    e8872708:	64c2                	ld	s1,16(sp)
	cpcc_ulog( kLogLevelNotice, "Controller [%p] Activated Service [%p]\n", controller, service );
    e887270a:	0005a697          	auipc	a3,0x5a
    e887270e:	c5e68693          	addi	a3,a3,-930 # e88cc368 <__PRETTY_FUNCTION__.9875+0x4b8>
    e8872712:	03200613          	li	a2,50
    e8872716:	0005a597          	auipc	a1,0x5a
    e887271a:	e3258593          	addi	a1,a1,-462 # e88cc548 <__PRETTY_FUNCTION__.11487>
    e887271e:	00063517          	auipc	a0,0x63
    e8872722:	d8250513          	addi	a0,a0,-638 # e88d54a0 <gLogCategory_CarPlayControlClient>
}
    e8872726:	6121                	addi	sp,sp,64
	cpcc_ulog( kLogLevelNotice, "Controller [%p] Activated Service [%p]\n", controller, service );
    e8872728:	d4de106f          	j	e8854474 <LogPrintF>
	return CFEqual( inService->bonjourservice, inBonjourService );
    e887272c:	6908                	ld	a0,16(a0)
    e887272e:	85ce                	mv	a1,s3
    e8872730:	a1fd40ef          	jal	ra,e884714e <CFEqual>
	if( !service || !CarPlayBonjourServiceIsSameBonjourService( service, bonjourService ) )
    e8872734:	ee0504e3          	beqz	a0,e887261c <_CarPlayControllerActivateService+0x6c>
	CFRetain( inService );
    e8872738:	8522                	mv	a0,s0
    e887273a:	a0dd40ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( inService->queue, (void*) inService, _CarPlayBonjourServiceResolveAddress );
    e887273e:	6408                	ld	a0,8(s0)
    e8872740:	fffff617          	auipc	a2,0xfffff
    e8872744:	49060613          	addi	a2,a2,1168 # e8871bd0 <_CarPlayBonjourServiceResolveAddress>
    e8872748:	85a2                	mv	a1,s0
    e887274a:	cd6dc0ef          	jal	ra,e884ec20 <dispatch_async_f>
	return( kNoErr );
    e887274e:	bf61                	j	e88726e6 <_CarPlayControllerActivateService+0x136>
	cpcc_ulog( kLogLevelTrace, "Created CarPlayBonjourService [%p] for:\n%1@\n", obj, inServiceType, inService );
    e8872750:	45f9                	li	a1,30
    e8872752:	00063517          	auipc	a0,0x63
    e8872756:	d4e50513          	addi	a0,a0,-690 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e887275a:	919e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e887275e:	dd35                	beqz	a0,e88726da <_CarPlayControllerActivateService+0x12a>
    e8872760:	bf99                	j	e88726b6 <_CarPlayControllerActivateService+0x106>
	cpcc_ulog( kLogLevelNotice, "Controller [%p] Activated Service [%p]\n", controller, service );
    e8872762:	03200593          	li	a1,50
    e8872766:	00063517          	auipc	a0,0x63
    e887276a:	d3a50513          	addi	a0,a0,-710 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e887276e:	905e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8872772:	f159                	bnez	a0,e88726f8 <_CarPlayControllerActivateService+0x148>
}
    e8872774:	70e2                	ld	ra,56(sp)
    e8872776:	6422                	ld	s0,8(sp)
    e8872778:	64c2                	ld	s1,16(sp)
    e887277a:	6962                	ld	s2,24(sp)
    e887277c:	7982                	ld	s3,32(sp)
    e887277e:	7a22                	ld	s4,40(sp)
    e8872780:	7ac2                	ld	s5,48(sp)
    e8872782:	6121                	addi	sp,sp,64
    e8872784:	8082                	ret
	CFReleaseNullSafe( obj );
    e8872786:	8522                	mv	a0,s0
    e8872788:	9c3d40ef          	jal	ra,e884714a <CFRelease>
		if( err ) service = NULL;
    e887278c:	4401                	li	s0,0
    e887278e:	b7b1                	j	e88726da <_CarPlayControllerActivateService+0x12a>

00000000e8872790 <CarPlayControllerGetTypeID>:
	dispatch_once_f( &carPlayControllerInitOnce, &carPlayControllerTypeID, _CarPlayControllerGetTypeID );
    e8872790:	00071517          	auipc	a0,0x71
    e8872794:	65450513          	addi	a0,a0,1620 # e88e3de4 <carPlayControllerInitOnce.11456>
    e8872798:	4118                	lw	a4,0(a0)
    e887279a:	4789                	li	a5,2
    e887279c:	02f70663          	beq	a4,a5,e88727c8 <CarPlayControllerGetTypeID+0x38>
{
    e88727a0:	1141                	addi	sp,sp,-16
	dispatch_once_f( &carPlayControllerInitOnce, &carPlayControllerTypeID, _CarPlayControllerGetTypeID );
    e88727a2:	fffff617          	auipc	a2,0xfffff
    e88727a6:	e3660613          	addi	a2,a2,-458 # e88715d8 <_CarPlayControllerGetTypeID>
    e88727aa:	00071597          	auipc	a1,0x71
    e88727ae:	63e58593          	addi	a1,a1,1598 # e88e3de8 <carPlayControllerTypeID.11457>
{
    e88727b2:	e406                	sd	ra,8(sp)
	dispatch_once_f( &carPlayControllerInitOnce, &carPlayControllerTypeID, _CarPlayControllerGetTypeID );
    e88727b4:	ebedc0ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e88727b8:	60a2                	ld	ra,8(sp)
    e88727ba:	00071797          	auipc	a5,0x71
    e88727be:	62e78793          	addi	a5,a5,1582 # e88e3de8 <carPlayControllerTypeID.11457>
    e88727c2:	4388                	lw	a0,0(a5)
    e88727c4:	0141                	addi	sp,sp,16
    e88727c6:	8082                	ret
    e88727c8:	00071797          	auipc	a5,0x71
    e88727cc:	62078793          	addi	a5,a5,1568 # e88e3de8 <carPlayControllerTypeID.11457>
    e88727d0:	4388                	lw	a0,0(a5)
    e88727d2:	8082                	ret

00000000e88727d4 <_CarPlayControlClientBrowseCallback>:
{
    e88727d4:	715d                	addi	sp,sp,-80
    e88727d6:	f44e                	sd	s3,40(sp)
	cpcc_ulog( kLogLevelTrace, "BrowseCallback: event=%s, info=%@\n", BonjourBrowserEventTypeToString(inEventType), inEventInfo );
    e88727d8:	00063997          	auipc	s3,0x63
    e88727dc:	cc898993          	addi	s3,s3,-824 # e88d54a0 <gLogCategory_CarPlayControlClient>
{
    e88727e0:	e0a2                	sd	s0,64(sp)
    e88727e2:	fc26                	sd	s1,56(sp)
    e88727e4:	f84a                	sd	s2,48(sp)
    e88727e6:	e486                	sd	ra,72(sp)
    e88727e8:	f052                	sd	s4,32(sp)
    e88727ea:	ec56                	sd	s5,24(sp)
    e88727ec:	e85a                	sd	s6,16(sp)
	cpcc_ulog( kLogLevelTrace, "BrowseCallback: event=%s, info=%@\n", BonjourBrowserEventTypeToString(inEventType), inEventInfo );
    e88727ee:	0009a783          	lw	a5,0(s3)
    e88727f2:	4779                	li	a4,30
{
    e88727f4:	84aa                	mv	s1,a0
    e88727f6:	892e                	mv	s2,a1
    e88727f8:	8432                	mv	s0,a2
	cpcc_ulog( kLogLevelTrace, "BrowseCallback: event=%s, info=%@\n", BonjourBrowserEventTypeToString(inEventType), inEventInfo );
    e88727fa:	06f74b63          	blt	a4,a5,e8872870 <_CarPlayControlClientBrowseCallback+0x9c>
    e88727fe:	577d                	li	a4,-1
    e8872800:	06e78363          	beq	a5,a4,e8872866 <_CarPlayControlClientBrowseCallback+0x92>
    e8872804:	4785                	li	a5,1
    e8872806:	00032717          	auipc	a4,0x32
    e887280a:	9aa70713          	addi	a4,a4,-1622 # e88a41b0 <end.8789+0xb08>
    e887280e:	02f48b63          	beq	s1,a5,e8872844 <_CarPlayControlClientBrowseCallback+0x70>
    e8872812:	4789                	li	a5,2
    e8872814:	0005a717          	auipc	a4,0x5a
    e8872818:	90c70713          	addi	a4,a4,-1780 # e88cc120 <__PRETTY_FUNCTION__.9875+0x270>
    e887281c:	02f48463          	beq	s1,a5,e8872844 <_CarPlayControlClientBrowseCallback+0x70>
    e8872820:	478d                	li	a5,3
    e8872822:	0005a717          	auipc	a4,0x5a
    e8872826:	87e70713          	addi	a4,a4,-1922 # e88cc0a0 <__PRETTY_FUNCTION__.9875+0x1f0>
    e887282a:	00f48d63          	beq	s1,a5,e8872844 <_CarPlayControlClientBrowseCallback+0x70>
    e887282e:	4791                	li	a5,4
    e8872830:	0005a717          	auipc	a4,0x5a
    e8872834:	86070713          	addi	a4,a4,-1952 # e88cc090 <__PRETTY_FUNCTION__.9875+0x1e0>
    e8872838:	00f48663          	beq	s1,a5,e8872844 <_CarPlayControlClientBrowseCallback+0x70>
    e887283c:	0005a717          	auipc	a4,0x5a
    e8872840:	8ec70713          	addi	a4,a4,-1812 # e88cc128 <__PRETTY_FUNCTION__.9875+0x278>
    e8872844:	87ca                	mv	a5,s2
    e8872846:	0005a697          	auipc	a3,0x5a
    e887284a:	86268693          	addi	a3,a3,-1950 # e88cc0a8 <__PRETTY_FUNCTION__.9875+0x1f8>
    e887284e:	4679                	li	a2,30
    e8872850:	0005a597          	auipc	a1,0x5a
    e8872854:	dd858593          	addi	a1,a1,-552 # e88cc628 <__PRETTY_FUNCTION__.11746>
    e8872858:	00063517          	auipc	a0,0x63
    e887285c:	c4850513          	addi	a0,a0,-952 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872860:	c15e10ef          	jal	ra,e8854474 <LogPrintF>
    e8872864:	a031                	j	e8872870 <_CarPlayControlClientBrowseCallback+0x9c>
    e8872866:	45f9                	li	a1,30
    e8872868:	854e                	mv	a0,s3
    e887286a:	809e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e887286e:	f959                	bnez	a0,e8872804 <_CarPlayControlClientBrowseCallback+0x30>
	if( inEventType == kBonjourBrowserEventType_AddOrUpdateDevice )
    e8872870:	4785                	li	a5,1
    e8872872:	12f49563          	bne	s1,a5,e887299c <_CarPlayControlClientBrowseCallback+0x1c8>
	deviceID = BonjourDevice_GetDeviceID( inEventInfo, NULL, NULL );
    e8872876:	4601                	li	a2,0
    e8872878:	4581                	li	a1,0
    e887287a:	854a                	mv	a0,s2
    e887287c:	c3cd40ef          	jal	ra,e8846cb8 <BonjourDevice_GetDeviceID>
    e8872880:	8b2a                	mv	s6,a0
	for( ndx = 0, count = CFArrayGetCount( inClient->controllers ); ndx < count; ++ndx )
    e8872882:	6028                	ld	a0,64(s0)
    e8872884:	4a01                	li	s4,0
    e8872886:	96dd40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e887288a:	8aaa                	mv	s5,a0
    e887288c:	035a5263          	bge	s4,s5,e88728b0 <_CarPlayControlClientBrowseCallback+0xdc>
		controller = (CarPlayController*) CFArrayGetValueAtIndex( inClient->controllers, ndx );
    e8872890:	6028                	ld	a0,64(s0)
    e8872892:	85d2                	mv	a1,s4
    e8872894:	973d40ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
    e8872898:	84aa                	mv	s1,a0
		if( BonjourDevice_GetDeviceID( controller->device, NULL, NULL ) == deviceID )
    e887289a:	6d08                	ld	a0,24(a0)
    e887289c:	4601                	li	a2,0
    e887289e:	4581                	li	a1,0
    e88728a0:	c18d40ef          	jal	ra,e8846cb8 <BonjourDevice_GetDeviceID>
    e88728a4:	02ab1c63          	bne	s6,a0,e88728dc <_CarPlayControlClientBrowseCallback+0x108>
			CFRetain( controller );
    e88728a8:	8526                	mv	a0,s1
    e88728aa:	89dd40ef          	jal	ra,e8847146 <CFRetain>
	if( !controller )
    e88728ae:	e0f1                	bnez	s1,e8872972 <_CarPlayControlClientBrowseCallback+0x19e>
	obj = (CarPlayController*) _CFRuntimeCreateInstance( NULL, CarPlayControllerGetTypeID(), (CFIndex) extraLen, NULL );
    e88728b0:	ee1ff0ef          	jal	ra,e8872790 <CarPlayControllerGetTypeID>
    e88728b4:	0005059b          	sext.w	a1,a0
    e88728b8:	4681                	li	a3,0
    e88728ba:	02800613          	li	a2,40
    e88728be:	4501                	li	a0,0
    e88728c0:	eb5d40ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
    e88728c4:	84aa                	mv	s1,a0
	require_action( obj, exit, err = kNoMemoryErr );
    e88728c6:	ed09                	bnez	a0,e88728e0 <_CarPlayControlClientBrowseCallback+0x10c>
}
    e88728c8:	60a6                	ld	ra,72(sp)
    e88728ca:	6406                	ld	s0,64(sp)
    e88728cc:	74e2                	ld	s1,56(sp)
    e88728ce:	7942                	ld	s2,48(sp)
    e88728d0:	79a2                	ld	s3,40(sp)
    e88728d2:	7a02                	ld	s4,32(sp)
    e88728d4:	6ae2                	ld	s5,24(sp)
    e88728d6:	6b42                	ld	s6,16(sp)
    e88728d8:	6161                	addi	sp,sp,80
    e88728da:	8082                	ret
	for( ndx = 0, count = CFArrayGetCount( inClient->controllers ); ndx < count; ++ndx )
    e88728dc:	2a05                	addiw	s4,s4,1
    e88728de:	b77d                	j	e887288c <_CarPlayControlClientBrowseCallback+0xb8>
	memset( ( (uint8_t *) obj ) + sizeof( obj->base ), 0, extraLen );
    e88728e0:	02800613          	li	a2,40
    e88728e4:	4581                	li	a1,0
    e88728e6:	0521                	addi	a0,a0,8
    e88728e8:	2ad090ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( inClient, exit, err = kParamErr );
    e88728ec:	cc49                	beqz	s0,e8872986 <_CarPlayControlClientBrowseCallback+0x1b2>
	obj->client = inClient;
    e88728ee:	e480                	sd	s0,8(s1)
	obj->internalQueue = dispatch_queue_create( "CarPlayController", NULL );
    e88728f0:	4581                	li	a1,0
    e88728f2:	00059517          	auipc	a0,0x59
    e88728f6:	7de50513          	addi	a0,a0,2014 # e88cc0d0 <__PRETTY_FUNCTION__.9875+0x220>
    e88728fa:	c84dd0ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e88728fe:	e888                	sd	a0,16(s1)
	require_action( obj->internalQueue, exit, err = kNoMemoryErr );
    e8872900:	c159                	beqz	a0,e8872986 <_CarPlayControlClientBrowseCallback+0x1b2>
	obj->activeServices = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8872902:	0004c697          	auipc	a3,0x4c
    e8872906:	ec668693          	addi	a3,a3,-314 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e887290a:	0004c617          	auipc	a2,0x4c
    e887290e:	e8e60613          	addi	a2,a2,-370 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8872912:	4581                	li	a1,0
    e8872914:	4501                	li	a0,0
    e8872916:	a91d40ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e887291a:	f088                	sd	a0,32(s1)
	require_action( obj->activeServices, exit, err = kNoMemoryErr );
    e887291c:	c52d                	beqz	a0,e8872986 <_CarPlayControlClientBrowseCallback+0x1b2>
	obj->inactiveWiFiServices = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e887291e:	0004c697          	auipc	a3,0x4c
    e8872922:	eaa68693          	addi	a3,a3,-342 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8872926:	0004c617          	auipc	a2,0x4c
    e887292a:	e7260613          	addi	a2,a2,-398 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e887292e:	4581                	li	a1,0
    e8872930:	4501                	li	a0,0
    e8872932:	a75d40ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8872936:	f488                	sd	a0,40(s1)
	require_action( obj->inactiveWiFiServices, exit, err = kNoMemoryErr );
    e8872938:	c539                	beqz	a0,e8872986 <_CarPlayControlClientBrowseCallback+0x1b2>
	cpcc_ulog( kLogLevelTrace, "Created controller [%p]\n", obj );
    e887293a:	0009a783          	lw	a5,0(s3)
    e887293e:	4779                	li	a4,30
    e8872940:	02f74563          	blt	a4,a5,e887296a <_CarPlayControlClientBrowseCallback+0x196>
    e8872944:	577d                	li	a4,-1
    e8872946:	04e78263          	beq	a5,a4,e887298a <_CarPlayControlClientBrowseCallback+0x1b6>
    e887294a:	8726                	mv	a4,s1
    e887294c:	00059697          	auipc	a3,0x59
    e8872950:	79c68693          	addi	a3,a3,1948 # e88cc0e8 <__PRETTY_FUNCTION__.9875+0x238>
    e8872954:	4679                	li	a2,30
    e8872956:	0005a597          	auipc	a1,0x5a
    e887295a:	baa58593          	addi	a1,a1,-1110 # e88cc500 <__PRETTY_FUNCTION__.11466>
    e887295e:	00063517          	auipc	a0,0x63
    e8872962:	b4250513          	addi	a0,a0,-1214 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872966:	b0fe10ef          	jal	ra,e8854474 <LogPrintF>
			CFArrayAppendValue( inClient->controllers, controller );
    e887296a:	6028                	ld	a0,64(s0)
    e887296c:	85a6                	mv	a1,s1
    e887296e:	903d40ef          	jal	ra,e8847270 <CFArrayAppendValue>
		_CarPlayControllerUpdate( controller, inEventInfo, NULL );
    e8872972:	4601                	li	a2,0
    e8872974:	85ca                	mv	a1,s2
    e8872976:	8526                	mv	a0,s1
    e8872978:	e0bfe0ef          	jal	ra,e8871782 <_CarPlayControllerUpdate>
		_CarPlayControlClientPostEvent( inClient, kCarPlayControlClientEvent_AddOrUpdateController, controller );
    e887297c:	8626                	mv	a2,s1
    e887297e:	4581                	li	a1,0
    e8872980:	8522                	mv	a0,s0
    e8872982:	cb2ff0ef          	jal	ra,e8871e34 <_CarPlayControlClientPostEvent>
	CFReleaseNullSafe( obj );
    e8872986:	8526                	mv	a0,s1
    e8872988:	a85d                	j	e8872a3e <_CarPlayControlClientBrowseCallback+0x26a>
	cpcc_ulog( kLogLevelTrace, "Created controller [%p]\n", obj );
    e887298a:	45f9                	li	a1,30
    e887298c:	00063517          	auipc	a0,0x63
    e8872990:	b1450513          	addi	a0,a0,-1260 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872994:	edee10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8872998:	d969                	beqz	a0,e887296a <_CarPlayControlClientBrowseCallback+0x196>
    e887299a:	bf45                	j	e887294a <_CarPlayControlClientBrowseCallback+0x176>
	else if( inEventType == kBonjourBrowserEventType_RemoveDevice )
    e887299c:	4709                	li	a4,2
    e887299e:	04e49d63          	bne	s1,a4,e88729f8 <_CarPlayControlClientBrowseCallback+0x224>
	deviceID = BonjourDevice_GetDeviceID( inEventInfo, NULL, NULL );
    e88729a2:	4601                	li	a2,0
    e88729a4:	4581                	li	a1,0
    e88729a6:	854a                	mv	a0,s2
    e88729a8:	b10d40ef          	jal	ra,e8846cb8 <BonjourDevice_GetDeviceID>
    e88729ac:	8aaa                	mv	s5,a0
	for( ndx = 0, count = CFArrayGetCount( inClient->controllers ); ndx < count; ++ndx )
    e88729ae:	6028                	ld	a0,64(s0)
    e88729b0:	4481                	li	s1,0
    e88729b2:	841d40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e88729b6:	8a2a                	mv	s4,a0
    e88729b8:	f144d8e3          	bge	s1,s4,e88728c8 <_CarPlayControlClientBrowseCallback+0xf4>
		controller = (CarPlayController*) CFArrayGetValueAtIndex( inClient->controllers, ndx );
    e88729bc:	6028                	ld	a0,64(s0)
    e88729be:	85a6                	mv	a1,s1
    e88729c0:	847d40ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
    e88729c4:	89aa                	mv	s3,a0
		if( BonjourDevice_GetDeviceID( controller->device, NULL, NULL ) == deviceID )
    e88729c6:	6d08                	ld	a0,24(a0)
    e88729c8:	4601                	li	a2,0
    e88729ca:	4581                	li	a1,0
    e88729cc:	aecd40ef          	jal	ra,e8846cb8 <BonjourDevice_GetDeviceID>
    e88729d0:	02aa9263          	bne	s5,a0,e88729f4 <_CarPlayControlClientBrowseCallback+0x220>
			CFRetain( controller );
    e88729d4:	854e                	mv	a0,s3
    e88729d6:	f70d40ef          	jal	ra,e8847146 <CFRetain>
			_CarPlayControllerUpdate( controller, inEventInfo, &serviceCount );
    e88729da:	0070                	addi	a2,sp,12
    e88729dc:	85ca                	mv	a1,s2
    e88729de:	854e                	mv	a0,s3
    e88729e0:	da3fe0ef          	jal	ra,e8871782 <_CarPlayControllerUpdate>
			if( serviceCount == 0 )
    e88729e4:	47b2                	lw	a5,12(sp)
    e88729e6:	ee0791e3          	bnez	a5,e88728c8 <_CarPlayControlClientBrowseCallback+0xf4>
				_CarPlayControlClientRemoveController( inClient, controller );
    e88729ea:	85ce                	mv	a1,s3
    e88729ec:	8522                	mv	a0,s0
    e88729ee:	db2ff0ef          	jal	ra,e8871fa0 <_CarPlayControlClientRemoveController>
    e88729f2:	bdd9                	j	e88728c8 <_CarPlayControlClientBrowseCallback+0xf4>
	for( ndx = 0, count = CFArrayGetCount( inClient->controllers ); ndx < count; ++ndx )
    e88729f4:	2485                	addiw	s1,s1,1
    e88729f6:	b7c9                	j	e88729b8 <_CarPlayControlClientBrowseCallback+0x1e4>
	else if( inEventType == kBonjourBrowserEventType_Restarted || inEventType == kBonjourBrowserEventType_Stop )
    e88729f8:	ffd4871b          	addiw	a4,s1,-3
    e88729fc:	ece7e6e3          	bltu	a5,a4,e88728c8 <_CarPlayControlClientBrowseCallback+0xf4>
	for( ndx = 0, count = CFArrayGetCount( inClient->controllers ); ndx < count; ++ndx )
    e8872a00:	6028                	ld	a0,64(s0)
    e8872a02:	4901                	li	s2,0
		if( inEventType == kBonjourBrowserEventType_Restarted )
    e8872a04:	4a11                	li	s4,4
	for( ndx = 0, count = CFArrayGetCount( inClient->controllers ); ndx < count; ++ndx )
    e8872a06:	fecd40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8872a0a:	89aa                	mv	s3,a0
    e8872a0c:	6028                	ld	a0,64(s0)
    e8872a0e:	03394b63          	blt	s2,s3,e8872a44 <_CarPlayControlClientBrowseCallback+0x270>
	CFArrayRemoveAllValues( inClient->controllers );
    e8872a12:	867d40ef          	jal	ra,e8847278 <CFArrayRemoveAllValues>
	if( inEventType == kBonjourBrowserEventType_Stop )
    e8872a16:	478d                	li	a5,3
    e8872a18:	eaf498e3          	bne	s1,a5,e88728c8 <_CarPlayControlClientBrowseCallback+0xf4>
		_CarPlayControlClientPostEvent( inClient, kCarPlayControlClientEvent_Stopped, NULL );
    e8872a1c:	8522                	mv	a0,s0
    e8872a1e:	4601                	li	a2,0
    e8872a20:	4589                	li	a1,2
    e8872a22:	c12ff0ef          	jal	ra,e8871e34 <_CarPlayControlClientPostEvent>
		inClient->started = false;
    e8872a26:	02040823          	sb	zero,48(s0)
		BonjourBrowser_Forget( &inClient->browser );
    e8872a2a:	7c08                	ld	a0,56(s0)
    e8872a2c:	c901                	beqz	a0,e8872a3c <_CarPlayControlClientBrowseCallback+0x268>
    e8872a2e:	a22d40ef          	jal	ra,e8846c50 <BonjourBrowser_Stop>
    e8872a32:	7c08                	ld	a0,56(s0)
    e8872a34:	f16d40ef          	jal	ra,e884714a <CFRelease>
    e8872a38:	02043c23          	sd	zero,56(s0)
		CFRelease( inClient ); // Balance retain in _CarPlayControlClientEnsureStarted
    e8872a3c:	8522                	mv	a0,s0
	CFReleaseNullSafe( obj );
    e8872a3e:	f0cd40ef          	jal	ra,e884714a <CFRelease>
    e8872a42:	b559                	j	e88728c8 <_CarPlayControlClientBrowseCallback+0xf4>
		controller = (CarPlayController*) CFArrayGetValueAtIndex( inClient->controllers, ndx );
    e8872a44:	85ca                	mv	a1,s2
    e8872a46:	fc0d40ef          	jal	ra,e8847206 <CFArrayGetValueAtIndex>
    e8872a4a:	8aaa                	mv	s5,a0
		_CarPlayControllerUpdate( controller, NULL, NULL );
    e8872a4c:	4601                	li	a2,0
    e8872a4e:	4581                	li	a1,0
    e8872a50:	d33fe0ef          	jal	ra,e8871782 <_CarPlayControllerUpdate>
		if( inEventType == kBonjourBrowserEventType_Restarted )
    e8872a54:	01449763          	bne	s1,s4,e8872a62 <_CarPlayControlClientBrowseCallback+0x28e>
			_CarPlayControlClientPostEvent( inClient, kCarPlayControlClientEvent_RemoveController, controller );
    e8872a58:	8656                	mv	a2,s5
    e8872a5a:	4585                	li	a1,1
    e8872a5c:	8522                	mv	a0,s0
    e8872a5e:	bd6ff0ef          	jal	ra,e8871e34 <_CarPlayControlClientPostEvent>
	for( ndx = 0, count = CFArrayGetCount( inClient->controllers ); ndx < count; ++ndx )
    e8872a62:	2905                	addiw	s2,s2,1
    e8872a64:	b765                	j	e8872a0c <_CarPlayControlClientBrowseCallback+0x238>

00000000e8872a66 <CarPlayControllerCopyName>:
{
    e8872a66:	1101                	addi	sp,sp,-32
    e8872a68:	ec06                	sd	ra,24(sp)
    e8872a6a:	e422                	sd	s0,8(sp)
    e8872a6c:	e826                	sd	s1,16(sp)
	require_action( inController, exit, err = kParamErr );
    e8872a6e:	c121                	beqz	a0,e8872aae <CarPlayControllerCopyName+0x48>
    e8872a70:	842e                	mv	s0,a1
	require_action( outName, exit, err = kParamErr );
    e8872a72:	c1b9                	beqz	a1,e8872ab8 <CarPlayControllerCopyName+0x52>
	device = _CarPlayControllerCopyCurrentDevice( inController );
    e8872a74:	cedfe0ef          	jal	ra,e8871760 <_CarPlayControllerCopyCurrentDevice>
    e8872a78:	84aa                	mv	s1,a0
	name = CFDictionaryGetCFString( device, CFSTR( kBonjourDeviceKey_Name ), NULL );
    e8872a7a:	a1bd40ef          	jal	ra,e8847494 <CFStringGetTypeID>
    e8872a7e:	0005061b          	sext.w	a2,a0
    e8872a82:	4681                	li	a3,0
    e8872a84:	0002c597          	auipc	a1,0x2c
    e8872a88:	e1458593          	addi	a1,a1,-492 # e889e898 <icmp6_param_problem+0x182a>
    e8872a8c:	8526                	mv	a0,s1
    e8872a8e:	c1dd90ef          	jal	ra,e884c6aa <CFDictionaryGetTypedValue>
	require_action( name, exit, err = kUnknownErr );
    e8872a92:	c50d                	beqz	a0,e8872abc <CarPlayControllerCopyName+0x56>
	*outName = (CFStringRef) CFRetain( name );
    e8872a94:	eb2d40ef          	jal	ra,e8847146 <CFRetain>
    e8872a98:	e008                	sd	a0,0(s0)
	err = kNoErr;
    e8872a9a:	4401                	li	s0,0
	CFRelease( device );
    e8872a9c:	8526                	mv	a0,s1
    e8872a9e:	eacd40ef          	jal	ra,e884714a <CFRelease>
}
    e8872aa2:	64c2                	ld	s1,16(sp)
    e8872aa4:	8522                	mv	a0,s0
    e8872aa6:	60e2                	ld	ra,24(sp)
    e8872aa8:	6422                	ld	s0,8(sp)
    e8872aaa:	6105                	addi	sp,sp,32
    e8872aac:	8082                	ret
    e8872aae:	84aa                	mv	s1,a0
	require_action( inController, exit, err = kParamErr );
    e8872ab0:	7479                	lui	s0,0xffffe
    e8872ab2:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8872ab6:	b7dd                	j	e8872a9c <CarPlayControllerCopyName+0x36>
	CFDictionaryRef		device = NULL;
    e8872ab8:	4481                	li	s1,0
    e8872aba:	bfdd                	j	e8872ab0 <CarPlayControllerCopyName+0x4a>
	require_action( name, exit, err = kUnknownErr );
    e8872abc:	7479                	lui	s0,0xffffe
    e8872abe:	5d440413          	addi	s0,s0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8872ac2:	bfe9                	j	e8872a9c <CarPlayControllerCopyName+0x36>

00000000e8872ac4 <CarPlayControlClientGetTypeID>:
	dispatch_once_f( &carPlayControlClientInitOnce, &carPlayControlClientTypeID, _CarPlayControlClientGetTypeID );
    e8872ac4:	00071517          	auipc	a0,0x71
    e8872ac8:	31850513          	addi	a0,a0,792 # e88e3ddc <carPlayControlClientInitOnce.11641>
    e8872acc:	4118                	lw	a4,0(a0)
    e8872ace:	4789                	li	a5,2
    e8872ad0:	02f70663          	beq	a4,a5,e8872afc <CarPlayControlClientGetTypeID+0x38>
{
    e8872ad4:	1141                	addi	sp,sp,-16
	dispatch_once_f( &carPlayControlClientInitOnce, &carPlayControlClientTypeID, _CarPlayControlClientGetTypeID );
    e8872ad6:	fffff617          	auipc	a2,0xfffff
    e8872ada:	b2060613          	addi	a2,a2,-1248 # e88715f6 <_CarPlayControlClientGetTypeID>
    e8872ade:	00071597          	auipc	a1,0x71
    e8872ae2:	30258593          	addi	a1,a1,770 # e88e3de0 <carPlayControlClientTypeID.11642>
{
    e8872ae6:	e406                	sd	ra,8(sp)
	dispatch_once_f( &carPlayControlClientInitOnce, &carPlayControlClientTypeID, _CarPlayControlClientGetTypeID );
    e8872ae8:	b8adc0ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e8872aec:	60a2                	ld	ra,8(sp)
    e8872aee:	00071797          	auipc	a5,0x71
    e8872af2:	2f278793          	addi	a5,a5,754 # e88e3de0 <carPlayControlClientTypeID.11642>
    e8872af6:	4388                	lw	a0,0(a5)
    e8872af8:	0141                	addi	sp,sp,16
    e8872afa:	8082                	ret
    e8872afc:	00071797          	auipc	a5,0x71
    e8872b00:	2e478793          	addi	a5,a5,740 # e88e3de0 <carPlayControlClientTypeID.11642>
    e8872b04:	4388                	lw	a0,0(a5)
    e8872b06:	8082                	ret

00000000e8872b08 <CarPlayControlClientCreateWithServer>:
{
    e8872b08:	7179                	addi	sp,sp,-48
    e8872b0a:	f406                	sd	ra,40(sp)
    e8872b0c:	f052                	sd	s4,32(sp)
    e8872b0e:	f891540b          	sdd	s0,s1,(sp),0,4
    e8872b12:	fb31590b          	sdd	s2,s3,(sp),1,4
	require_action( outClient, exit, err = kParamErr );
    e8872b16:	c14d                	beqz	a0,e8872bb8 <CarPlayControlClientCreateWithServer+0xb0>
    e8872b18:	8a36                	mv	s4,a3
    e8872b1a:	89b2                	mv	s3,a2
    e8872b1c:	842e                	mv	s0,a1
    e8872b1e:	892a                	mv	s2,a0
	obj = (CarPlayControlClient*) _CFRuntimeCreateInstance( NULL, CarPlayControlClientGetTypeID(), (CFIndex) extraLen, NULL );
    e8872b20:	fa5ff0ef          	jal	ra,e8872ac4 <CarPlayControlClientGetTypeID>
    e8872b24:	0005059b          	sext.w	a1,a0
    e8872b28:	4681                	li	a3,0
    e8872b2a:	05000613          	li	a2,80
    e8872b2e:	4501                	li	a0,0
    e8872b30:	c45d40ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
    e8872b34:	84aa                	mv	s1,a0
	require_action( obj, exit, err = kNoMemoryErr );
    e8872b36:	c549                	beqz	a0,e8872bc0 <CarPlayControlClientCreateWithServer+0xb8>
	memset( ( (uint8_t *) obj ) + sizeof( obj->base ), 0, extraLen );
    e8872b38:	05000613          	li	a2,80
    e8872b3c:	4581                	li	a1,0
    e8872b3e:	0521                	addi	a0,a0,8
    e8872b40:	055090ef          	jal	ra,e887c394 <eLIBs_memset>
	obj->internalQueue = dispatch_queue_create( "CarPlayControlClient Internal", 0 );
    e8872b44:	4581                	li	a1,0
    e8872b46:	00059517          	auipc	a0,0x59
    e8872b4a:	42250513          	addi	a0,a0,1058 # e88cbf68 <__PRETTY_FUNCTION__.9875+0xb8>
    e8872b4e:	a30dd0ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e8872b52:	e488                	sd	a0,8(s1)
	require_action( obj->internalQueue, exit, err = kNoMemoryErr );
    e8872b54:	c935                	beqz	a0,e8872bc8 <CarPlayControlClientCreateWithServer+0xc0>
	obj->httpQueue = dispatch_queue_create( "CarPlayControlClient http", 0 );
    e8872b56:	4581                	li	a1,0
    e8872b58:	00059517          	auipc	a0,0x59
    e8872b5c:	43050513          	addi	a0,a0,1072 # e88cbf88 <__PRETTY_FUNCTION__.9875+0xd8>
    e8872b60:	a1edd0ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e8872b64:	e888                	sd	a0,16(s1)
	require_action( obj->httpQueue, exit, err = kNoMemoryErr );
    e8872b66:	c12d                	beqz	a0,e8872bc8 <CarPlayControlClientCreateWithServer+0xc0>
	require_action( inCallback, exit, err = kParamErr );
    e8872b68:	06098763          	beqz	s3,e8872bd6 <CarPlayControlClientCreateWithServer+0xce>
	obj->eventCtx = inCtx;
    e8872b6c:	fd44d98b          	sdd	s3,s4,(s1),2,4
	obj->eventQueue = dispatch_queue_create( "CarPlayControlClient Event", 0 );
    e8872b70:	4581                	li	a1,0
    e8872b72:	00059517          	auipc	a0,0x59
    e8872b76:	43650513          	addi	a0,a0,1078 # e88cbfa8 <__PRETTY_FUNCTION__.9875+0xf8>
    e8872b7a:	a04dd0ef          	jal	ra,e884fd7e <dispatch_queue_create>
    e8872b7e:	ec88                	sd	a0,24(s1)
	require_action( obj->eventQueue, exit, err = kNoMemoryErr );
    e8872b80:	c521                	beqz	a0,e8872bc8 <CarPlayControlClientCreateWithServer+0xc0>
	obj->server = inServer;
    e8872b82:	e4a0                	sd	s0,72(s1)
	CFRetainNullSafe( obj->server );
    e8872b84:	c401                	beqz	s0,e8872b8c <CarPlayControlClientCreateWithServer+0x84>
    e8872b86:	8522                	mv	a0,s0
    e8872b88:	dbed40ef          	jal	ra,e8847146 <CFRetain>
	obj->controllers = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8872b8c:	0004c617          	auipc	a2,0x4c
    e8872b90:	be460613          	addi	a2,a2,-1052 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e8872b94:	4581                	li	a1,0
    e8872b96:	4501                	li	a0,0
    e8872b98:	e2ed40ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e8872b9c:	e0a8                	sd	a0,64(s1)
	require_action( obj->controllers, exit, err = kNoMemoryErr );
    e8872b9e:	c50d                	beqz	a0,e8872bc8 <CarPlayControlClientCreateWithServer+0xc0>
	*outClient = obj;
    e8872ba0:	00993023          	sd	s1,0(s2)
	err = kNoErr;
    e8872ba4:	4401                	li	s0,0
}
    e8872ba6:	8522                	mv	a0,s0
    e8872ba8:	70a2                	ld	ra,40(sp)
    e8872baa:	f891440b          	ldd	s0,s1,(sp),0,4
    e8872bae:	7a02                	ld	s4,32(sp)
    e8872bb0:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8872bb4:	6145                	addi	sp,sp,48
    e8872bb6:	8082                	ret
	require_action( outClient, exit, err = kParamErr );
    e8872bb8:	7479                	lui	s0,0xffffe
    e8872bba:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8872bbe:	b7e5                	j	e8872ba6 <CarPlayControlClientCreateWithServer+0x9e>
	require_action( obj, exit, err = kNoMemoryErr );
    e8872bc0:	7479                	lui	s0,0xffffe
    e8872bc2:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8872bc6:	b7c5                	j	e8872ba6 <CarPlayControlClientCreateWithServer+0x9e>
	require_action( obj->internalQueue, exit, err = kNoMemoryErr );
    e8872bc8:	7479                	lui	s0,0xffffe
    e8872bca:	5b840413          	addi	s0,s0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
	CFReleaseNullSafe( obj );
    e8872bce:	8526                	mv	a0,s1
    e8872bd0:	d7ad40ef          	jal	ra,e884714a <CFRelease>
	return( err );
    e8872bd4:	bfc9                	j	e8872ba6 <CarPlayControlClientCreateWithServer+0x9e>
	require_action( inCallback, exit, err = kParamErr );
    e8872bd6:	7479                	lui	s0,0xffffe
    e8872bd8:	5cf40413          	addi	s0,s0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
    e8872bdc:	bfcd                	j	e8872bce <CarPlayControlClientCreateWithServer+0xc6>

00000000e8872bde <CarPlayControlClientStart>:
	require_action( inClient, exit, err = kParamErr );
    e8872bde:	c535                	beqz	a0,e8872c4a <CarPlayControlClientStart+0x6c>
{
    e8872be0:	1101                	addi	sp,sp,-32
    e8872be2:	ec06                	sd	ra,24(sp)
    e8872be4:	e42a                	sd	a0,8(sp)
	CFRetain( inClient );
    e8872be6:	d60d40ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( inClient->internalQueue, (void*) inClient, _CarPlayControlClientEnsureStarted );
    e8872bea:	65a2                	ld	a1,8(sp)
    e8872bec:	fffff617          	auipc	a2,0xfffff
    e8872bf0:	2c860613          	addi	a2,a2,712 # e8871eb4 <_CarPlayControlClientEnsureStarted>
    e8872bf4:	6588                	ld	a0,8(a1)
    e8872bf6:	82adc0ef          	jal	ra,e884ec20 <dispatch_async_f>
	cpcc_ulog( kLogLevelNotice, "CarPlayControlClientStart: %#m\n", err );
    e8872bfa:	00063517          	auipc	a0,0x63
    e8872bfe:	8a650513          	addi	a0,a0,-1882 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872c02:	411c                	lw	a5,0(a0)
    e8872c04:	03200713          	li	a4,50
    e8872c08:	00f75663          	bge	a4,a5,e8872c14 <CarPlayControlClientStart+0x36>
}
    e8872c0c:	60e2                	ld	ra,24(sp)
	err = kNoErr;
    e8872c0e:	4501                	li	a0,0
}
    e8872c10:	6105                	addi	sp,sp,32
    e8872c12:	8082                	ret
	cpcc_ulog( kLogLevelNotice, "CarPlayControlClientStart: %#m\n", err );
    e8872c14:	577d                	li	a4,-1
    e8872c16:	02e78463          	beq	a5,a4,e8872c3e <CarPlayControlClientStart+0x60>
    e8872c1a:	4701                	li	a4,0
    e8872c1c:	00059697          	auipc	a3,0x59
    e8872c20:	3ac68693          	addi	a3,a3,940 # e88cbfc8 <__PRETTY_FUNCTION__.9875+0x118>
    e8872c24:	03200613          	li	a2,50
    e8872c28:	0005a597          	auipc	a1,0x5a
    e8872c2c:	99058593          	addi	a1,a1,-1648 # e88cc5b8 <__PRETTY_FUNCTION__.11658>
    e8872c30:	00063517          	auipc	a0,0x63
    e8872c34:	87050513          	addi	a0,a0,-1936 # e88d54a0 <gLogCategory_CarPlayControlClient>
    e8872c38:	83de10ef          	jal	ra,e8854474 <LogPrintF>
    e8872c3c:	bfc1                	j	e8872c0c <CarPlayControlClientStart+0x2e>
    e8872c3e:	03200593          	li	a1,50
    e8872c42:	c30e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8872c46:	d179                	beqz	a0,e8872c0c <CarPlayControlClientStart+0x2e>
    e8872c48:	bfc9                	j	e8872c1a <CarPlayControlClientStart+0x3c>
	require_action( inClient, exit, err = kParamErr );
    e8872c4a:	7579                	lui	a0,0xffffe
    e8872c4c:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e8872c50:	8082                	ret

00000000e8872c52 <CarPlayControlClientStop>:
	require_action( inClient, exit, err = kParamErr );
    e8872c52:	c115                	beqz	a0,e8872c76 <CarPlayControlClientStop+0x24>
{
    e8872c54:	1101                	addi	sp,sp,-32
    e8872c56:	ec06                	sd	ra,24(sp)
    e8872c58:	e42a                	sd	a0,8(sp)
	CFRetain( inClient );
    e8872c5a:	cecd40ef          	jal	ra,e8847146 <CFRetain>
	dispatch_async_f( inClient->internalQueue, (void*) inClient, _CarPlayControlClientEnsureStopped );
    e8872c5e:	65a2                	ld	a1,8(sp)
    e8872c60:	fffff617          	auipc	a2,0xfffff
    e8872c64:	b5060613          	addi	a2,a2,-1200 # e88717b0 <_CarPlayControlClientEnsureStopped>
    e8872c68:	6588                	ld	a0,8(a1)
    e8872c6a:	fb7db0ef          	jal	ra,e884ec20 <dispatch_async_f>
}
    e8872c6e:	60e2                	ld	ra,24(sp)
	err = kNoErr;
    e8872c70:	4501                	li	a0,0
}
    e8872c72:	6105                	addi	sp,sp,32
    e8872c74:	8082                	ret
	require_action( inClient, exit, err = kParamErr );
    e8872c76:	7579                	lui	a0,0xffffe
    e8872c78:	5cf50513          	addi	a0,a0,1487 # ffffffffffffe5cf <__DRAM0_INF_BASE+0xffffffff0000e5cf>
}
    e8872c7c:	8082                	ret

00000000e8872c7e <CarPlayControlClientConnect>:

OSStatus CarPlayControlClientConnect( CarPlayControlClientRef inClient, CarPlayControllerRef inController )
{
    e8872c7e:	7139                	addi	sp,sp,-64
    e8872c80:	f422                	sd	s0,40(sp)
    e8872c82:	f826                	sd	s1,48(sp)
    e8872c84:	842e                	mv	s0,a1
    e8872c86:	84aa                	mv	s1,a0
	_SendCommandContext		commandCtx;
	
	memset( &commandCtx, 0, sizeof( commandCtx ) );	
    e8872c88:	4661                	li	a2,24
    e8872c8a:	4581                	li	a1,0
    e8872c8c:	0028                	addi	a0,sp,8
{
    e8872c8e:	fc06                	sd	ra,56(sp)
	memset( &commandCtx, 0, sizeof( commandCtx ) );	
    e8872c90:	704090ef          	jal	ra,e887c394 <eLIBs_memset>
	require_action( inClient && inController && inController->client == inClient, exit, commandCtx.err = kParamErr );
    e8872c94:	c489                	beqz	s1,e8872c9e <CarPlayControlClientConnect+0x20>
    e8872c96:	c401                	beqz	s0,e8872c9e <CarPlayControlClientConnect+0x20>
    e8872c98:	641c                	ld	a5,8(s0)
    e8872c9a:	00978c63          	beq	a5,s1,e8872cb2 <CarPlayControlClientConnect+0x34>
    e8872c9e:	77f9                	lui	a5,0xffffe
    e8872ca0:	5cf7879b          	addiw	a5,a5,1487
    e8872ca4:	cc3e                	sw	a5,24(sp)
	
	dispatch_sync_f( inClient->internalQueue, &commandCtx, _CarPlayControlClientConnect );
	
exit:
	return( commandCtx.err );
}
    e8872ca6:	70e2                	ld	ra,56(sp)
    e8872ca8:	7422                	ld	s0,40(sp)
    e8872caa:	4562                	lw	a0,24(sp)
    e8872cac:	74c2                	ld	s1,48(sp)
    e8872cae:	6121                	addi	sp,sp,64
    e8872cb0:	8082                	ret
	dispatch_sync_f( inClient->internalQueue, &commandCtx, _CarPlayControlClientConnect );
    e8872cb2:	6788                	ld	a0,8(a5)
	commandCtx.command = kAPSCarPlayControlCommandStr_Connect;
    e8872cb4:	00059717          	auipc	a4,0x59
    e8872cb8:	2ac70713          	addi	a4,a4,684 # e88cbf60 <__PRETTY_FUNCTION__.9875+0xb0>
	dispatch_sync_f( inClient->internalQueue, &commandCtx, _CarPlayControlClientConnect );
    e8872cbc:	fffff617          	auipc	a2,0xfffff
    e8872cc0:	33a60613          	addi	a2,a2,826 # e8871ff6 <_CarPlayControlClientConnect>
    e8872cc4:	002c                	addi	a1,sp,8
	commandCtx.controller = inController;
    e8872cc6:	e422                	sd	s0,8(sp)
	commandCtx.command = kAPSCarPlayControlCommandStr_Connect;
    e8872cc8:	e83a                	sd	a4,16(sp)
	dispatch_sync_f( inClient->internalQueue, &commandCtx, _CarPlayControlClientConnect );
    e8872cca:	854dc0ef          	jal	ra,e884ed1e <dispatch_sync_f>
    e8872cce:	bfe1                	j	e8872ca6 <CarPlayControlClientConnect+0x28>

00000000e8872cd0 <lock_airplay>:
BOOL carplay_connect = 0;
static pthread_mutex_t airplay_mutex;

static void lock_airplay(void)
{
    pthread_mutex_lock(&airplay_mutex);
    e8872cd0:	00071517          	auipc	a0,0x71
    e8872cd4:	12450513          	addi	a0,a0,292 # e88e3df4 <airplay_mutex>
    e8872cd8:	6470806f          	j	e887bb1e <pthread_mutex_lock>

00000000e8872cdc <unlock_airplay>:
}

static void unlock_airplay(void)
{
    pthread_mutex_unlock(&airplay_mutex);
    e8872cdc:	00071517          	auipc	a0,0x71
    e8872ce0:	11850513          	addi	a0,a0,280 # e88e3df4 <airplay_mutex>
    e8872ce4:	67f0806f          	j	e887bb62 <pthread_mutex_unlock>

00000000e8872ce8 <CarPlayControlClientEventCallback>:

//===========================================================================================================================
//	CarPlayControlClient
//===========================================================================================================================
void CarPlayControlClientEventCallback( CarPlayControlClientRef client, CarPlayControlClientEvent event, void *eventInfo, void *context )
{
    e8872ce8:	7135                	addi	sp,sp,-160
    e8872cea:	e922                	sd	s0,144(sp)
    e8872cec:	ed06                	sd	ra,152(sp)
    e8872cee:	e526                	sd	s1,136(sp)
    e8872cf0:	e14a                	sd	s2,128(sp)
    e8872cf2:	fcce                	sd	s3,120(sp)
    e8872cf4:	f8d2                	sd	s4,112(sp)
    e8872cf6:	f4d6                	sd	s5,104(sp)
    e8872cf8:	f0da                	sd	s6,96(sp)
    e8872cfa:	ecde                	sd	s7,88(sp)
    e8872cfc:	e8e2                	sd	s8,80(sp)
    e8872cfe:	e4e6                	sd	s9,72(sp)
    e8872d00:	e0ea                	sd	s10,64(sp)
    e8872d02:	fc6e                	sd	s11,56(sp)
    e8872d04:	8432                	mv	s0,a2
	CarPlayControllerRef controller = (CarPlayControllerRef)eventInfo;
	OSStatus err;

	//app_ulog( kLogLevelNotice, "CarPlayControlClientEvent event received\n" );

	if (event == kCarPlayControlClientEvent_AddOrUpdateController) {
    e8872d06:	14059063          	bnez	a1,e8872e46 <CarPlayControlClientEventCallback+0x15e>
		CFStringRef name = NULL;
		CFIndex count;

		//app_ulog( kLogLevelNotice, "CarPlayControlClientEvent Add/Update event received\n" );

		CarPlayControllerCopyName( controller, &name);
    e8872d0a:	102c                	addi	a1,sp,40
    e8872d0c:	8532                	mv	a0,a2
		const char *cStr = NULL;
    e8872d0e:	ec02                	sd	zero,24(sp)
		char *storage = NULL;
    e8872d10:	f002                	sd	zero,32(sp)
		CFStringRef name = NULL;
    e8872d12:	f402                	sd	zero,40(sp)
		CarPlayControllerCopyName( controller, &name);
    e8872d14:	d53ff0ef          	jal	ra,e8872a66 <CarPlayControllerCopyName>
		CFStringGetOrCopyCStringUTF8(name, &cStr, &storage, NULL);
		app_ulog( kLogLevelNotice, "Adding CarPlayController '%s',number %d\n", cStr ,CFArrayGetCount( gCarPlayControllers ));
    e8872d18:	00062497          	auipc	s1,0x62
    e8872d1c:	7f048493          	addi	s1,s1,2032 # e88d5508 <gLogCategory_CarPlayDemoApp>
		CFStringGetOrCopyCStringUTF8(name, &cStr, &storage, NULL);
    e8872d20:	7522                	ld	a0,40(sp)
    e8872d22:	4681                	li	a3,0
    e8872d24:	1010                	addi	a2,sp,32
    e8872d26:	082c                	addi	a1,sp,24
    e8872d28:	ba4da0ef          	jal	ra,e884d0cc <CFStringGetOrCopyCStringUTF8>
		app_ulog( kLogLevelNotice, "Adding CarPlayController '%s',number %d\n", cStr ,CFArrayGetCount( gCarPlayControllers ));
    e8872d2c:	00071917          	auipc	s2,0x71
    e8872d30:	15490913          	addi	s2,s2,340 # e88e3e80 <gCarPlayControllers>
    e8872d34:	409c                	lw	a5,0(s1)
    e8872d36:	03200713          	li	a4,50
    e8872d3a:	02f74d63          	blt	a4,a5,e8872d74 <CarPlayControlClientEventCallback+0x8c>
    e8872d3e:	577d                	li	a4,-1
    e8872d40:	0ee78563          	beq	a5,a4,e8872e2a <CarPlayControlClientEventCallback+0x142>
    e8872d44:	6762                	ld	a4,24(sp)
    e8872d46:	00093503          	ld	a0,0(s2)
    e8872d4a:	e43a                	sd	a4,8(sp)
    e8872d4c:	ca6d40ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8872d50:	87aa                	mv	a5,a0
    e8872d52:	6722                	ld	a4,8(sp)
    e8872d54:	0005a697          	auipc	a3,0x5a
    e8872d58:	a4c68693          	addi	a3,a3,-1460 # e88cc7a0 <kCarPlayControllerClass.11452+0x78>
    e8872d5c:	03200613          	li	a2,50
    e8872d60:	0005a597          	auipc	a1,0x5a
    e8872d64:	db058593          	addi	a1,a1,-592 # e88ccb10 <__PRETTY_FUNCTION__.11813>
    e8872d68:	00062517          	auipc	a0,0x62
    e8872d6c:	7a050513          	addi	a0,a0,1952 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8872d70:	f04e10ef          	jal	ra,e8854474 <LogPrintF>
			CFArrayRemoveAllValues( gCarPlayControllers);
		}
		#endif
		
		// Add the new client to the array 
		CFArrayAppendValue( gCarPlayControllers, controller );
    e8872d74:	00093503          	ld	a0,0(s2)
    e8872d78:	85a2                	mv	a1,s0
    e8872d7a:	cf6d40ef          	jal	ra,e8847270 <CFArrayAppendValue>
		count = CFArrayGetCount( gCarPlayControllers );
    e8872d7e:	00093503          	ld	a0,0(s2)
    e8872d82:	c70d40ef          	jal	ra,e88471f2 <CFArrayGetCount>

		if( count == 1 ) {
    e8872d86:	4785                	li	a5,1
    e8872d88:	06f51c63          	bne	a0,a5,e8872e00 <CarPlayControlClientEventCallback+0x118>
    e8872d8c:	4915                	li	s2,5
			// Try to connect if this is the only client
			int i;

			for( i = 0; i < 5; i++ ) {
				err = CarPlayControlClientConnect(gCarPlayControlClient, controller);
    e8872d8e:	00071b17          	auipc	s6,0x71
    e8872d92:	0eab0b13          	addi	s6,s6,234 # e88e3e78 <gCarPlayControlClient>
				app_ulog( kLogLevelNotice, "CarPlayControlClientConnect %s: %#m\n", err ? "failed" : "succeeded", err );
    e8872d96:	03200b93          	li	s7,50
    e8872d9a:	5c7d                	li	s8,-1
    e8872d9c:	00062a17          	auipc	s4,0x62
    e8872da0:	76ca0a13          	addi	s4,s4,1900 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8872da4:	0003aa97          	auipc	s5,0x3a
    e8872da8:	daca8a93          	addi	s5,s5,-596 # e88acb50 <kOn.10632+0xc08>
    e8872dac:	0005ac97          	auipc	s9,0x5a
    e8872db0:	a24c8c93          	addi	s9,s9,-1500 # e88cc7d0 <kCarPlayControllerClass.11452+0xa8>
    e8872db4:	0005ad17          	auipc	s10,0x5a
    e8872db8:	d5cd0d13          	addi	s10,s10,-676 # e88ccb10 <__PRETTY_FUNCTION__.11813>
    e8872dbc:	0005ad97          	auipc	s11,0x5a
    e8872dc0:	9d4d8d93          	addi	s11,s11,-1580 # e88cc790 <kCarPlayControllerClass.11452+0x68>
				err = CarPlayControlClientConnect(gCarPlayControlClient, controller);
    e8872dc4:	000b3503          	ld	a0,0(s6)
    e8872dc8:	85a2                	mv	a1,s0
    e8872dca:	eb5ff0ef          	jal	ra,e8872c7e <CarPlayControlClientConnect>
    e8872dce:	89aa                	mv	s3,a0
				app_ulog( kLogLevelNotice, "CarPlayControlClientConnect %s: %#m\n", err ? "failed" : "succeeded", err );
    e8872dd0:	409c                	lw	a5,0(s1)
    e8872dd2:	00fbcf63          	blt	s7,a5,e8872df0 <CarPlayControlClientEventCallback+0x108>
    e8872dd6:	07878163          	beq	a5,s8,e8872e38 <CarPlayControlClientEventCallback+0x150>
    e8872dda:	876e                	mv	a4,s11
    e8872ddc:	433a970b          	mvnez	a4,s5,s3
    e8872de0:	87ce                	mv	a5,s3
    e8872de2:	86e6                	mv	a3,s9
    e8872de4:	03200613          	li	a2,50
    e8872de8:	85ea                	mv	a1,s10
    e8872dea:	8552                	mv	a0,s4
    e8872dec:	e88e10ef          	jal	ra,e8854474 <LogPrintF>

				if( err != kNoErr ) {
    e8872df0:	00098863          	beqz	s3,e8872e00 <CarPlayControlClientEventCallback+0x118>
					Sleep( 1 );
    e8872df4:	4505                	li	a0,1
    e8872df6:	397d                	addiw	s2,s2,-1
    e8872df8:	21e090ef          	jal	ra,e887c016 <esKRNL_TimeDly>
			for( i = 0; i < 5; i++ ) {
    e8872dfc:	fc0914e3          	bnez	s2,e8872dc4 <CarPlayControlClientEventCallback+0xdc>
				} else {
					break;
				}
			}
		}
		free( storage );
    e8872e00:	7502                	ld	a0,32(sp)
    e8872e02:	4fe090ef          	jal	ra,e887c300 <eLIBs_free>
		CFRelease( name );
    e8872e06:	7522                	ld	a0,40(sp)
		
		CFArrayRemoveValueAtIndex( gCarPlayControllers, ndx );
		//CFArrayRemoveAllValues( gCarPlayControllers);
		free( storage );
		CFRelease( name );
        CFRelease( controller );
    e8872e08:	b42d40ef          	jal	ra,e884714a <CFRelease>
	} else {
		app_ulog( kLogLevelNotice, "CarPlayControlClientEvent event type %d received\n", (int)event );
	}
}
    e8872e0c:	60ea                	ld	ra,152(sp)
    e8872e0e:	644a                	ld	s0,144(sp)
    e8872e10:	64aa                	ld	s1,136(sp)
    e8872e12:	690a                	ld	s2,128(sp)
    e8872e14:	79e6                	ld	s3,120(sp)
    e8872e16:	7a46                	ld	s4,112(sp)
    e8872e18:	7aa6                	ld	s5,104(sp)
    e8872e1a:	7b06                	ld	s6,96(sp)
    e8872e1c:	6be6                	ld	s7,88(sp)
    e8872e1e:	6c46                	ld	s8,80(sp)
    e8872e20:	6ca6                	ld	s9,72(sp)
    e8872e22:	6d06                	ld	s10,64(sp)
    e8872e24:	7de2                	ld	s11,56(sp)
    e8872e26:	610d                	addi	sp,sp,160
    e8872e28:	8082                	ret
		app_ulog( kLogLevelNotice, "Adding CarPlayController '%s',number %d\n", cStr ,CFArrayGetCount( gCarPlayControllers ));
    e8872e2a:	03200593          	li	a1,50
    e8872e2e:	8526                	mv	a0,s1
    e8872e30:	a42e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8872e34:	d121                	beqz	a0,e8872d74 <CarPlayControlClientEventCallback+0x8c>
    e8872e36:	b739                	j	e8872d44 <CarPlayControlClientEventCallback+0x5c>
				app_ulog( kLogLevelNotice, "CarPlayControlClientConnect %s: %#m\n", err ? "failed" : "succeeded", err );
    e8872e38:	03200593          	li	a1,50
    e8872e3c:	8552                	mv	a0,s4
    e8872e3e:	a34e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8872e42:	d55d                	beqz	a0,e8872df0 <CarPlayControlClientEventCallback+0x108>
    e8872e44:	bf59                	j	e8872dda <CarPlayControlClientEventCallback+0xf2>
	} else if (event == kCarPlayControlClientEvent_RemoveController) {
    e8872e46:	4785                	li	a5,1
    e8872e48:	872e                	mv	a4,a1
    e8872e4a:	04f59863          	bne	a1,a5,e8872e9a <CarPlayControlClientEventCallback+0x1b2>
		CarPlayControllerCopyName( controller, &name);
    e8872e4e:	082c                	addi	a1,sp,24
    e8872e50:	8532                	mv	a0,a2
		CFStringRef name = NULL;
    e8872e52:	ec02                	sd	zero,24(sp)
		const char *cStr = NULL;
    e8872e54:	f002                	sd	zero,32(sp)
		char *storage = NULL;
    e8872e56:	f402                	sd	zero,40(sp)
		CarPlayControllerCopyName( controller, &name);
    e8872e58:	c0fff0ef          	jal	ra,e8872a66 <CarPlayControllerCopyName>
		count = CFArrayGetCount( gCarPlayControllers );
    e8872e5c:	00071497          	auipc	s1,0x71
    e8872e60:	02448493          	addi	s1,s1,36 # e88e3e80 <gCarPlayControllers>
		CFStringGetOrCopyCStringUTF8(name, &cStr, &storage, NULL);
    e8872e64:	6562                	ld	a0,24(sp)
    e8872e66:	4681                	li	a3,0
    e8872e68:	1030                	addi	a2,sp,40
    e8872e6a:	100c                	addi	a1,sp,32
    e8872e6c:	a60da0ef          	jal	ra,e884d0cc <CFStringGetOrCopyCStringUTF8>
		count = CFArrayGetCount( gCarPlayControllers );
    e8872e70:	6088                	ld	a0,0(s1)
    e8872e72:	b80d40ef          	jal	ra,e88471f2 <CFArrayGetCount>
		ndx = CFArrayGetFirstIndexOfValue( gCarPlayControllers, CFRangeMake(0, count), controller );
    e8872e76:	02051593          	slli	a1,a0,0x20
    e8872e7a:	6088                	ld	a0,0(s1)
    e8872e7c:	8622                	mv	a2,s0
    e8872e7e:	b9cd40ef          	jal	ra,e884721a <CFArrayGetFirstIndexOfValue>
		CFArrayRemoveValueAtIndex( gCarPlayControllers, ndx );
    e8872e82:	85aa                	mv	a1,a0
    e8872e84:	6088                	ld	a0,0(s1)
    e8872e86:	beed40ef          	jal	ra,e8847274 <CFArrayRemoveValueAtIndex>
		free( storage );
    e8872e8a:	7522                	ld	a0,40(sp)
    e8872e8c:	474090ef          	jal	ra,e887c300 <eLIBs_free>
		CFRelease( name );
    e8872e90:	6562                	ld	a0,24(sp)
    e8872e92:	ab8d40ef          	jal	ra,e884714a <CFRelease>
        CFRelease( controller );
    e8872e96:	8522                	mv	a0,s0
    e8872e98:	bf85                	j	e8872e08 <CarPlayControlClientEventCallback+0x120>
		app_ulog( kLogLevelNotice, "CarPlayControlClientEvent event type %d received\n", (int)event );
    e8872e9a:	00062517          	auipc	a0,0x62
    e8872e9e:	66e50513          	addi	a0,a0,1646 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8872ea2:	411c                	lw	a5,0(a0)
    e8872ea4:	03200693          	li	a3,50
    e8872ea8:	f6f6c2e3          	blt	a3,a5,e8872e0c <CarPlayControlClientEventCallback+0x124>
    e8872eac:	56fd                	li	a3,-1
    e8872eae:	02d78363          	beq	a5,a3,e8872ed4 <CarPlayControlClientEventCallback+0x1ec>
    e8872eb2:	0005a697          	auipc	a3,0x5a
    e8872eb6:	94668693          	addi	a3,a3,-1722 # e88cc7f8 <kCarPlayControllerClass.11452+0xd0>
    e8872eba:	03200613          	li	a2,50
    e8872ebe:	0005a597          	auipc	a1,0x5a
    e8872ec2:	c5258593          	addi	a1,a1,-942 # e88ccb10 <__PRETTY_FUNCTION__.11813>
    e8872ec6:	00062517          	auipc	a0,0x62
    e8872eca:	64250513          	addi	a0,a0,1602 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8872ece:	da6e10ef          	jal	ra,e8854474 <LogPrintF>
    e8872ed2:	bf2d                	j	e8872e0c <CarPlayControlClientEventCallback+0x124>
    e8872ed4:	e42e                	sd	a1,8(sp)
    e8872ed6:	03200593          	li	a1,50
    e8872eda:	998e10ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8872ede:	6722                	ld	a4,8(sp)
    e8872ee0:	d515                	beqz	a0,e8872e0c <CarPlayControlClientEventCallback+0x124>
    e8872ee2:	bfc1                	j	e8872eb2 <CarPlayControlClientEventCallback+0x1ca>

00000000e8872ee4 <_AirPlayThread>:
{
    e8872ee4:	711d                	addi	sp,sp,-96
    e8872ee6:	ec86                	sd	ra,88(sp)
    e8872ee8:	e8a2                	sd	s0,80(sp)
    e8872eea:	e4a6                	sd	s1,72(sp)
    e8872eec:	e0ca                	sd	s2,64(sp)
    pthread_setname_np_compat( "AirPlayThread" );
    e8872eee:	30d080ef          	jal	ra,e887b9fa <pthread_self>
    e8872ef2:	2501                	sext.w	a0,a0
    e8872ef4:	0005a597          	auipc	a1,0x5a
    e8872ef8:	b7458593          	addi	a1,a1,-1164 # e88cca68 <kCarPlayControllerClass.11452+0x340>
    e8872efc:	6d9080ef          	jal	ra,e887bdd4 <pthread_setname_np>
	err = AirPlayReceiverServerCreate( &gAirPlayServer );
    e8872f00:	00071417          	auipc	s0,0x71
    e8872f04:	f5840413          	addi	s0,s0,-168 # e88e3e58 <gAirPlayServer>
	printf("AirPlayThread start run %d\n",pthread_self());
    e8872f08:	2f3080ef          	jal	ra,e887b9fa <pthread_self>
    e8872f0c:	0005059b          	sext.w	a1,a0
    e8872f10:	0005a517          	auipc	a0,0x5a
    e8872f14:	b6850513          	addi	a0,a0,-1176 # e88cca78 <kCarPlayControllerClass.11452+0x350>
    e8872f18:	3ae090ef          	jal	ra,e887c2c6 <eLIBs_printf>
	err = AirPlayReceiverServerCreate( &gAirPlayServer );
    e8872f1c:	00071497          	auipc	s1,0x71
    e8872f20:	f5c48493          	addi	s1,s1,-164 # e88e3e78 <gCarPlayControlClient>
    e8872f24:	8522                	mv	a0,s0
    e8872f26:	efef30ef          	jal	ra,e8866624 <AirPlayReceiverServerCreate>
	require_noerr( err, exit );
    e8872f2a:	00071917          	auipc	s2,0x71
    e8872f2e:	f5690913          	addi	s2,s2,-170 # e88e3e80 <gCarPlayControllers>
    e8872f32:	e559                	bnez	a0,e8872fc0 <_AirPlayThread+0xdc>
	AirPlayReceiverServerDelegateInit( &delegate );
    e8872f34:	03800613          	li	a2,56
    e8872f38:	4581                	li	a1,0
    e8872f3a:	0028                	addi	a0,sp,8
    e8872f3c:	458090ef          	jal	ra,e887c394 <eLIBs_memset>
	delegate.copyProperty_f		= _AirPlayHandleServerCopyProperty;
    e8872f40:	00000797          	auipc	a5,0x0
    e8872f44:	20478793          	addi	a5,a5,516 # e8873144 <_AirPlayHandleServerCopyProperty>
	AirPlayReceiverServerSetDelegate( gAirPlayServer, &delegate );
    e8872f48:	6008                	ld	a0,0(s0)
	delegate.copyProperty_f		= _AirPlayHandleServerCopyProperty;
    e8872f4a:	f03e                	sd	a5,32(sp)
	delegate.sessionCreated_f = _AirPlayHandleSessionCreated;
    e8872f4c:	00000797          	auipc	a5,0x0
    e8872f50:	0ae78793          	addi	a5,a5,174 # e8872ffa <_AirPlayHandleSessionCreated>
	AirPlayReceiverServerSetDelegate( gAirPlayServer, &delegate );
    e8872f54:	002c                	addi	a1,sp,8
	delegate.sessionCreated_f = _AirPlayHandleSessionCreated;
    e8872f56:	f83e                	sd	a5,48(sp)
	AirPlayReceiverServerSetDelegate( gAirPlayServer, &delegate );
    e8872f58:	ed4f30ef          	jal	ra,e886662c <AirPlayReceiverServerSetDelegate>
	err = CarPlayControlClientCreateWithServer( &gCarPlayControlClient, gAirPlayServer, CarPlayControlClientEventCallback, NULL );
    e8872f5c:	600c                	ld	a1,0(s0)
    e8872f5e:	4681                	li	a3,0
    e8872f60:	00000617          	auipc	a2,0x0
    e8872f64:	d8860613          	addi	a2,a2,-632 # e8872ce8 <CarPlayControlClientEventCallback>
    e8872f68:	8526                	mv	a0,s1
    e8872f6a:	b9fff0ef          	jal	ra,e8872b08 <CarPlayControlClientCreateWithServer>
	require_noerr( err, exit );
    e8872f6e:	e929                	bnez	a0,e8872fc0 <_AirPlayThread+0xdc>
	gCarPlayControllers = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8872f70:	0004c617          	auipc	a2,0x4c
    e8872f74:	80060613          	addi	a2,a2,-2048 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e8872f78:	4581                	li	a1,0
    e8872f7a:	a4cd40ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e8872f7e:	00a93023          	sd	a0,0(s2)
	require_action( gCarPlayControllers, exit, err = kNoMemoryErr );
    e8872f82:	cd1d                	beqz	a0,e8872fc0 <_AirPlayThread+0xdc>
	AirPlayReceiverServerStart( gAirPlayServer );
    e8872f84:	6008                	ld	a0,0(s0)
    e8872f86:	4781                	li	a5,0
    e8872f88:	4701                	li	a4,0
    e8872f8a:	4681                	li	a3,0
    e8872f8c:	0002c617          	auipc	a2,0x2c
    e8872f90:	92c60613          	addi	a2,a2,-1748 # e889e8b8 <icmp6_param_problem+0x184a>
    e8872f94:	4585                	li	a1,1
    e8872f96:	eaef30ef          	jal	ra,e8866644 <AirPlayReceiverServerControl>
	CarPlayControlClientStart( gCarPlayControlClient );
    e8872f9a:	6088                	ld	a0,0(s1)
    e8872f9c:	c43ff0ef          	jal	ra,e8872bde <CarPlayControlClientStart>
	CFRunLoopRun();
    e8872fa0:	ebed80ef          	jal	ra,e884b65e <CFRunLoopRun>
	CarPlayControlClientStop( gCarPlayControlClient );
    e8872fa4:	6088                	ld	a0,0(s1)
    e8872fa6:	cadff0ef          	jal	ra,e8872c52 <CarPlayControlClientStop>
	AirPlayReceiverServerStop( gAirPlayServer );
    e8872faa:	6008                	ld	a0,0(s0)
    e8872fac:	4781                	li	a5,0
    e8872fae:	4701                	li	a4,0
    e8872fb0:	4681                	li	a3,0
    e8872fb2:	0002c617          	auipc	a2,0x2c
    e8872fb6:	91e60613          	addi	a2,a2,-1762 # e889e8d0 <icmp6_param_problem+0x1862>
    e8872fba:	4585                	li	a1,1
    e8872fbc:	e88f30ef          	jal	ra,e8866644 <AirPlayReceiverServerControl>
	LibDispatch_Finalize();
    e8872fc0:	96adc0ef          	jal	ra,e884f12a <LibDispatch_Finalize>
	CFReleaseNullSafe( gCarPlayControllers );
    e8872fc4:	00093503          	ld	a0,0(s2)
    e8872fc8:	c119                	beqz	a0,e8872fce <_AirPlayThread+0xea>
    e8872fca:	980d40ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( gCarPlayControlClient );
    e8872fce:	6088                	ld	a0,0(s1)
    e8872fd0:	c119                	beqz	a0,e8872fd6 <_AirPlayThread+0xf2>
    e8872fd2:	978d40ef          	jal	ra,e884714a <CFRelease>
	CFReleaseNullSafe( gAirPlayServer );
    e8872fd6:	6008                	ld	a0,0(s0)
    e8872fd8:	c119                	beqz	a0,e8872fde <_AirPlayThread+0xfa>
    e8872fda:	970d40ef          	jal	ra,e884714a <CFRelease>
	pthread_exit(0);
    e8872fde:	4501                	li	a0,0
    gAirPlayServer = NULL;
    e8872fe0:	00071797          	auipc	a5,0x71
    e8872fe4:	e607bc23          	sd	zero,-392(a5) # e88e3e58 <gAirPlayServer>
	pthread_exit(0);
    e8872fe8:	223080ef          	jal	ra,e887ba0a <pthread_exit>
}
    e8872fec:	6446                	ld	s0,80(sp)
    e8872fee:	60e6                	ld	ra,88(sp)
    e8872ff0:	64a6                	ld	s1,72(sp)
    e8872ff2:	6906                	ld	s2,64(sp)
    e8872ff4:	4501                	li	a0,0
    e8872ff6:	6125                	addi	sp,sp,96
    e8872ff8:	8082                	ret

00000000e8872ffa <_AirPlayHandleSessionCreated>:
{
    e8872ffa:	7159                	addi	sp,sp,-112
	app_ulog( kLogLevelNotice, "AirPlay session started\n" );
    e8872ffc:	00062517          	auipc	a0,0x62
    e8873000:	50c50513          	addi	a0,a0,1292 # e88d5508 <gLogCategory_CarPlayDemoApp>
{
    e8873004:	f0a2                	sd	s0,96(sp)
    e8873006:	f486                	sd	ra,104(sp)
	app_ulog( kLogLevelNotice, "AirPlay session started\n" );
    e8873008:	411c                	lw	a5,0(a0)
    e887300a:	03200713          	li	a4,50
{
    e887300e:	842e                	mv	s0,a1
	app_ulog( kLogLevelNotice, "AirPlay session started\n" );
    e8873010:	02f74563          	blt	a4,a5,e887303a <_AirPlayHandleSessionCreated+0x40>
    e8873014:	577d                	li	a4,-1
    e8873016:	08e78c63          	beq	a5,a4,e88730ae <_AirPlayHandleSessionCreated+0xb4>
    e887301a:	0005a697          	auipc	a3,0x5a
    e887301e:	a1668693          	addi	a3,a3,-1514 # e88cca30 <kCarPlayControllerClass.11452+0x308>
    e8873022:	03200613          	li	a2,50
    e8873026:	0005a597          	auipc	a1,0x5a
    e887302a:	a7258593          	addi	a1,a1,-1422 # e88cca98 <__PRETTY_FUNCTION__.11642>
    e887302e:	00062517          	auipc	a0,0x62
    e8873032:	4da50513          	addi	a0,a0,1242 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8873036:	c3ee10ef          	jal	ra,e8854474 <LogPrintF>
	AirPlayReceiverSessionDelegateInit( &delegate );
    e887303a:	0028                	addi	a0,sp,8
    e887303c:	05800613          	li	a2,88
    e8873040:	4581                	li	a1,0
	gAirPlaySession = inSession;
    e8873042:	00071797          	auipc	a5,0x71
    e8873046:	e087bf23          	sd	s0,-482(a5) # e88e3e60 <gAirPlaySession>
	AirPlayReceiverSessionDelegateInit( &delegate );
    e887304a:	34a090ef          	jal	ra,e887c394 <eLIBs_memset>
	delegate.finalize_f		= _AirPlayHandleSessionFinalized;
    e887304e:	00001797          	auipc	a5,0x1
    e8873052:	86878793          	addi	a5,a5,-1944 # e88738b6 <_AirPlayHandleSessionFinalized>
    e8873056:	ec3e                	sd	a5,24(sp)
	delegate.started_f		= _AirPlayHandleSessionStarted;
    e8873058:	00000797          	auipc	a5,0x0
    e887305c:	0b278793          	addi	a5,a5,178 # e887310a <_AirPlayHandleSessionStarted>
    e8873060:	f03e                	sd	a5,32(sp)
	delegate.copyProperty_f	= _AirPlayHandleSessionCopyProperty;
    e8873062:	00000797          	auipc	a5,0x0
    e8873066:	05878793          	addi	a5,a5,88 # e88730ba <_AirPlayHandleSessionCopyProperty>
    e887306a:	f83e                	sd	a5,48(sp)
	delegate.modesChanged_f	= _AirPlayHandleModesChanged;
    e887306c:	00002797          	auipc	a5,0x2
    e8873070:	ba678793          	addi	a5,a5,-1114 # e8874c12 <_AirPlayHandleModesChanged>
    e8873074:	e0be                	sd	a5,64(sp)
	delegate.requestUI_f	= _AirPlayHandleRequestUI;
    e8873076:	00002797          	auipc	a5,0x2
    e887307a:	b2878793          	addi	a5,a5,-1240 # e8874b9e <_AirPlayHandleRequestUI>
    e887307e:	e4be                	sd	a5,72(sp)
	delegate.control_f		= _AirPlayHandleSessionControl;
    e8873080:	00002797          	auipc	a5,0x2
    e8873084:	a7678793          	addi	a5,a5,-1418 # e8874af6 <_AirPlayHandleSessionControl>
    e8873088:	f43e                	sd	a5,40(sp)
	delegate.duckAudio_f		= _AirPlayHandleDuckAudio;
    e887308a:	ffff1797          	auipc	a5,0xffff1
    e887308e:	92278793          	addi	a5,a5,-1758 # e88639ac <_AirPlayHandleDuckAudio>
    e8873092:	e8be                	sd	a5,80(sp)
	delegate.unduckAudio_f		= _AirPlayHandleUnduckAudio;
    e8873094:	ffff1797          	auipc	a5,0xffff1
    e8873098:	95a78793          	addi	a5,a5,-1702 # e88639ee <_AirPlayHandleUnduckAudio>
	AirPlayReceiverSessionSetDelegate( inSession, &delegate );
    e887309c:	002c                	addi	a1,sp,8
    e887309e:	8522                	mv	a0,s0
	delegate.unduckAudio_f		= _AirPlayHandleUnduckAudio;
    e88730a0:	ecbe                	sd	a5,88(sp)
	AirPlayReceiverSessionSetDelegate( inSession, &delegate );
    e88730a2:	979f90ef          	jal	ra,e886ca1a <AirPlayReceiverSessionSetDelegate>
}
    e88730a6:	7406                	ld	s0,96(sp)
    e88730a8:	70a6                	ld	ra,104(sp)
    e88730aa:	6165                	addi	sp,sp,112
    e88730ac:	8082                	ret
	app_ulog( kLogLevelNotice, "AirPlay session started\n" );
    e88730ae:	03200593          	li	a1,50
    e88730b2:	fc1e00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e88730b6:	d151                	beqz	a0,e887303a <_AirPlayHandleSessionCreated+0x40>
    e88730b8:	b78d                	j	e887301a <_AirPlayHandleSessionCreated+0x20>

00000000e88730ba <_AirPlayHandleSessionCopyProperty>:
{
    e88730ba:	1101                	addi	sp,sp,-32
    e88730bc:	852e                	mv	a0,a1
	if( CFEqual( inProperty, CFSTR( kAirPlayProperty_Modes ) ) )
    e88730be:	0002c597          	auipc	a1,0x2c
    e88730c2:	82a58593          	addi	a1,a1,-2006 # e889e8e8 <icmp6_param_problem+0x187a>
{
    e88730c6:	e826                	sd	s1,16(sp)
    e88730c8:	ec06                	sd	ra,24(sp)
    e88730ca:	e422                	sd	s0,8(sp)
    e88730cc:	84b6                	mv	s1,a3
	if( CFEqual( inProperty, CFSTR( kAirPlayProperty_Modes ) ) )
    e88730ce:	880d40ef          	jal	ra,e884714e <CFEqual>
    e88730d2:	c11d                	beqz	a0,e88730f8 <_AirPlayHandleSessionCopyProperty+0x3e>
		value = gInitialModes;
    e88730d4:	00071797          	auipc	a5,0x71
    e88730d8:	dbc78793          	addi	a5,a5,-580 # e88e3e90 <gInitialModes>
    e88730dc:	6380                	ld	s0,0(a5)
		require_action_quiet( value, exit, err = kNotHandledErr );
    e88730de:	c015                	beqz	s0,e8873102 <_AirPlayHandleSessionCopyProperty+0x48>
		CFRetain( value );
    e88730e0:	8522                	mv	a0,s0
    e88730e2:	864d40ef          	jal	ra,e8847146 <CFRetain>
	err = kNoErr;
    e88730e6:	4781                	li	a5,0
	if( outErr ) *outErr = err;
    e88730e8:	c091                	beqz	s1,e88730ec <_AirPlayHandleSessionCopyProperty+0x32>
    e88730ea:	c09c                	sw	a5,0(s1)
}
    e88730ec:	8522                	mv	a0,s0
    e88730ee:	60e2                	ld	ra,24(sp)
    e88730f0:	6422                	ld	s0,8(sp)
    e88730f2:	64c2                	ld	s1,16(sp)
    e88730f4:	6105                	addi	sp,sp,32
    e88730f6:	8082                	ret
		err = kNotHandledErr;
    e88730f8:	77f9                	lui	a5,0xffffe
    e88730fa:	5c678793          	addi	a5,a5,1478 # ffffffffffffe5c6 <__DRAM0_INF_BASE+0xffffffff0000e5c6>
	CFTypeRef		value = NULL;
    e88730fe:	4401                	li	s0,0
    e8873100:	b7e5                	j	e88730e8 <_AirPlayHandleSessionCopyProperty+0x2e>
		require_action_quiet( value, exit, err = kNotHandledErr );
    e8873102:	77f9                	lui	a5,0xffffe
    e8873104:	5c678793          	addi	a5,a5,1478 # ffffffffffffe5c6 <__DRAM0_INF_BASE+0xffffffff0000e5c6>
    e8873108:	b7c5                	j	e88730e8 <_AirPlayHandleSessionCopyProperty+0x2e>

00000000e887310a <_AirPlayHandleSessionStarted>:
{
    e887310a:	1101                	addi	sp,sp,-32
	value = (CFNumberRef) AirPlayReceiverSessionCopyProperty( inSession, 0, CFSTR( kAirPlayProperty_TransportType ), NULL, &error );
    e887310c:	0038                	addi	a4,sp,8
    e887310e:	4681                	li	a3,0
    e8873110:	0002b617          	auipc	a2,0x2b
    e8873114:	7e860613          	addi	a2,a2,2024 # e889e8f8 <icmp6_param_problem+0x188a>
    e8873118:	4581                	li	a1,0
{
    e887311a:	ec06                	sd	ra,24(sp)
    e887311c:	e822                	sd	s0,16(sp)
	value = (CFNumberRef) AirPlayReceiverSessionCopyProperty( inSession, 0, CFSTR( kAirPlayProperty_TransportType ), NULL, &error );
    e887311e:	913f90ef          	jal	ra,e886ca30 <AirPlayReceiverSessionCopyProperty>
	if( error == kNoErr && value ) {
    e8873122:	47a2                	lw	a5,8(sp)
    e8873124:	eb91                	bnez	a5,e8873138 <_AirPlayHandleSessionStarted+0x2e>
    e8873126:	842a                	mv	s0,a0
    e8873128:	c901                	beqz	a0,e8873138 <_AirPlayHandleSessionStarted+0x2e>
		CFNumberGetValue( (CFNumberRef) value, kCFNumberSInt32Type, &transportType ); 
    e887312a:	0070                	addi	a2,sp,12
    e887312c:	458d                	li	a1,3
    e887312e:	b54d40ef          	jal	ra,e8847482 <CFNumberGetValue>
        CFLRelease(value);
    e8873132:	8522                	mv	a0,s0
    e8873134:	ae3d40ef          	jal	ra,e8847c16 <CFLRelease>
    AudioOutputStart();
    e8873138:	428020ef          	jal	ra,e8875560 <AudioOutputStart>
}
    e887313c:	6442                	ld	s0,16(sp)
    e887313e:	60e2                	ld	ra,24(sp)
    e8873140:	6105                	addi	sp,sp,32
    e8873142:	8082                	ret

00000000e8873144 <_AirPlayHandleServerCopyProperty>:
{
    e8873144:	711d                	addi	sp,sp,-96
    e8873146:	e8a2                	sd	s0,80(sp)
    e8873148:	842e                	mv	s0,a1
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_AudioFormats ) ) )
    e887314a:	8522                	mv	a0,s0
    e887314c:	0002b597          	auipc	a1,0x2b
    e8873150:	7f458593          	addi	a1,a1,2036 # e889e940 <icmp6_param_problem+0x18d2>
{
    e8873154:	e0ca                	sd	s2,64(sp)
    e8873156:	ec86                	sd	ra,88(sp)
    e8873158:	e4a6                	sd	s1,72(sp)
    e887315a:	fc4e                	sd	s3,56(sp)
    e887315c:	8936                	mv	s2,a3
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_AudioFormats ) ) )
    e887315e:	ff1d30ef          	jal	ra,e884714e <CFEqual>
    e8873162:	14050863          	beqz	a0,e88732b2 <_AirPlayHandleServerCopyProperty+0x16e>
		kAirPlayAudioFormat_PCM_8KHz_16Bit_Mono |
		kAirPlayAudioFormat_PCM_16KHz_16Bit_Mono |
		kAirPlayAudioFormat_PCM_24KHz_16Bit_Mono |
		//kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo |
		kAirPlayAudioFormat_PCM_48KHz_16Bit_Stereo;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Compatibility, inputFormats, outputFormats );
    e8873166:	6721                	lui	a4,0x8
    e8873168:	05470713          	addi	a4,a4,84 # 8054 <memcmp-0xe87f7fac>
    e887316c:	46c1                	li	a3,16
    e887316e:	0002b617          	auipc	a2,0x2b
    e8873172:	7ea60613          	addi	a2,a2,2026 # e889e958 <icmp6_param_problem+0x18ea>
    e8873176:	06400593          	li	a1,100
    e887317a:	1028                	addi	a0,sp,40
	CFArrayRef					dictArray = NULL;
    e887317c:	f402                	sd	zero,40(sp)
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Compatibility, inputFormats, outputFormats );
    e887317e:	f75fb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e8873182:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8873184:	10051a63          	bnez	a0,e8873298 <_AirPlayHandleServerCopyProperty+0x154>
	// Alt Audio - Compatibility
	inputFormats = 0;
	outputFormats =
		//kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo |
		kAirPlayAudioFormat_PCM_48KHz_16Bit_Stereo;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_AltAudio, kAudioStreamAudioType_Compatibility, inputFormats, outputFormats );
    e8873188:	6721                	lui	a4,0x8
    e887318a:	4681                	li	a3,0
    e887318c:	0002b617          	auipc	a2,0x2b
    e8873190:	7cc60613          	addi	a2,a2,1996 # e889e958 <icmp6_param_problem+0x18ea>
    e8873194:	06500593          	li	a1,101
    e8873198:	1028                	addi	a0,sp,40
    e887319a:	f59fb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e887319e:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88731a0:	0e051c63          	bnez	a0,e8873298 <_AirPlayHandleServerCopyProperty+0x154>
		kAirPlayAudioFormat_OPUS_48KHz_Mono;
		//kAirPlayAudioFormat_AAC_ELD_48KHz_Mono |
		//kAirPlayAudioFormat_AAC_ELD_44KHz_Mono |
		//kAirPlayAudioFormat_AAC_ELD_48KHz_Stereo |
		//kAirPlayAudioFormat_AAC_ELD_44KHz_Stereo;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Alert, inputFormats, outputFormats );
    e88731a4:	40008737          	lui	a4,0x40008
    e88731a8:	4681                	li	a3,0
    e88731aa:	0002b617          	auipc	a2,0x2b
    e88731ae:	7c660613          	addi	a2,a2,1990 # e889e970 <icmp6_param_problem+0x1902>
    e88731b2:	06400593          	li	a1,100
    e88731b6:	1028                	addi	a0,sp,40
    e88731b8:	f3bfb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e88731bc:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88731be:	ed69                	bnez	a0,e8873298 <_AirPlayHandleServerCopyProperty+0x154>
		kAirPlayAudioFormat_PCM_16KHz_16Bit_Mono |
		kAirPlayAudioFormat_OPUS_24KHz_Mono |
		kAirPlayAudioFormat_OPUS_16KHz_Mono;
		//kAirPlayAudioFormat_AAC_ELD_16KHz_Mono |
		//kAirPlayAudioFormat_AAC_ELD_24KHz_Mono;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Default, inputFormats, outputFormats );
    e88731c0:	30000737          	lui	a4,0x30000
    e88731c4:	05070713          	addi	a4,a4,80 # 30000050 <memcmp-0xb87fffb0>
    e88731c8:	05000693          	li	a3,80
    e88731cc:	0002b617          	auipc	a2,0x2b
    e88731d0:	7b460613          	addi	a2,a2,1972 # e889e980 <icmp6_param_problem+0x1912>
    e88731d4:	06400593          	li	a1,100
    e88731d8:	1028                	addi	a0,sp,40
    e88731da:	f19fb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e88731de:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88731e0:	ed45                	bnez	a0,e8873298 <_AirPlayHandleServerCopyProperty+0x154>
	// Main Audio - Media
	inputFormats = 0;
	outputFormats =
		//kAirPlayAudioFormat_PCM_44KHz_16Bit_Stereo |
		kAirPlayAudioFormat_PCM_48KHz_16Bit_Stereo;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Media, inputFormats, outputFormats );
    e88731e2:	6721                	lui	a4,0x8
    e88731e4:	4681                	li	a3,0
    e88731e6:	0002b617          	auipc	a2,0x2b
    e88731ea:	7aa60613          	addi	a2,a2,1962 # e889e990 <icmp6_param_problem+0x1922>
    e88731ee:	06400593          	li	a1,100
    e88731f2:	1028                	addi	a0,sp,40
    e88731f4:	efffb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e88731f8:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e88731fa:	ed59                	bnez	a0,e8873298 <_AirPlayHandleServerCopyProperty+0x154>
	
	// Main Audio - Telephony
	if(talk_fs == 24000)
    e88731fc:	00062797          	auipc	a5,0x62
    e8873200:	37878793          	addi	a5,a5,888 # e88d5574 <talk_fs>
    e8873204:	4398                	lw	a4,0(a5)
    e8873206:	6799                	lui	a5,0x6
    e8873208:	dc078793          	addi	a5,a5,-576 # 5dc0 <memcmp-0xe87fa240>
	{
		inputFormats = kAirPlayAudioFormat_PCM_24KHz_16Bit_Mono;
    e887320c:	04000693          	li	a3,64
	if(talk_fs == 24000)
    e8873210:	00f70963          	beq	a4,a5,e8873222 <_AirPlayHandleServerCopyProperty+0xde>
	}
	else if(talk_fs == 16000)
    e8873214:	6791                	lui	a5,0x4
    e8873216:	e8078793          	addi	a5,a5,-384 # 3e80 <memcmp-0xe87fc180>
	{
		inputFormats = kAirPlayAudioFormat_PCM_16KHz_16Bit_Mono;
    e887321a:	46c1                	li	a3,16
	else if(talk_fs == 16000)
    e887321c:	00f70363          	beq	a4,a5,e8873222 <_AirPlayHandleServerCopyProperty+0xde>
	}
	else
	{
		inputFormats = kAirPlayAudioFormat_PCM_8KHz_16Bit_Mono;
    e8873220:	4691                	li	a3,4
		kAirPlayAudioFormat_PCM_16KHz_16Bit_Mono |
		kAirPlayAudioFormat_OPUS_24KHz_Mono |
		kAirPlayAudioFormat_OPUS_16KHz_Mono;
		//kAirPlayAudioFormat_AAC_ELD_16KHz_Mono |
		//kAirPlayAudioFormat_AAC_ELD_24KHz_Mono;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Telephony, inputFormats, outputFormats );
    e8873222:	30000737          	lui	a4,0x30000
    e8873226:	05070713          	addi	a4,a4,80 # 30000050 <memcmp-0xb87fffb0>
    e887322a:	0002b617          	auipc	a2,0x2b
    e887322e:	77660613          	addi	a2,a2,1910 # e889e9a0 <icmp6_param_problem+0x1932>
    e8873232:	06400593          	li	a1,100
    e8873236:	1028                	addi	a0,sp,40
    e8873238:	ebbfb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e887323c:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e887323e:	ed29                	bnez	a0,e8873298 <_AirPlayHandleServerCopyProperty+0x154>
		//kAirPlayAudioFormat_AAC_ELD_24KHz_Mono;
	outputFormats =
		kAirPlayAudioFormat_PCM_24KHz_16Bit_Mono |
		kAirPlayAudioFormat_OPUS_24KHz_Mono;
		//kAirPlayAudioFormat_AAC_ELD_24KHz_Mono;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_SpeechRecognition, inputFormats, outputFormats );
    e8873240:	20000737          	lui	a4,0x20000
    e8873244:	04070713          	addi	a4,a4,64 # 20000040 <memcmp-0xc87fffc0>
    e8873248:	04000693          	li	a3,64
    e887324c:	0002b617          	auipc	a2,0x2b
    e8873250:	76c60613          	addi	a2,a2,1900 # e889e9b8 <icmp6_param_problem+0x194a>
    e8873254:	06400593          	li	a1,100
    e8873258:	1028                	addi	a0,sp,40
    e887325a:	e99fb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e887325e:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e8873260:	ed05                	bnez	a0,e8873298 <_AirPlayHandleServerCopyProperty+0x154>
		kAirPlayAudioFormat_OPUS_48KHz_Mono;
		//kAirPlayAudioFormat_AAC_ELD_48KHz_Mono |
		//kAirPlayAudioFormat_AAC_ELD_44KHz_Mono |
		//kAirPlayAudioFormat_AAC_ELD_48KHz_Stereo |
		//kAirPlayAudioFormat_AAC_ELD_44KHz_Stereo;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_AltAudio, kAudioStreamAudioType_Default, inputFormats, outputFormats );
    e8873262:	40008737          	lui	a4,0x40008
    e8873266:	4681                	li	a3,0
    e8873268:	0002b617          	auipc	a2,0x2b
    e887326c:	71860613          	addi	a2,a2,1816 # e889e980 <icmp6_param_problem+0x1912>
    e8873270:	06500593          	li	a1,101
    e8873274:	1028                	addi	a0,sp,40
    e8873276:	e7dfb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e887327a:	842a                	mv	s0,a0
	require_noerr( err, exit );
    e887327c:	ed11                	bnez	a0,e8873298 <_AirPlayHandleServerCopyProperty+0x154>
	// Main High - Media
	inputFormats = 0;
	outputFormats =
		kAirPlayAudioFormat_AAC_LC_48KHz_Stereo;// |
		//kAirPlayAudioFormat_AAC_LC_44KHz_Stereo;
	err = AirPlayInfoArrayAddAudioFormat( &dictArray, kAudioStreamType_AltAudio, kAudioStreamAudioType_Media, inputFormats, outputFormats );
    e887327e:	00800737          	lui	a4,0x800
    e8873282:	4681                	li	a3,0
    e8873284:	0002b617          	auipc	a2,0x2b
    e8873288:	70c60613          	addi	a2,a2,1804 # e889e990 <icmp6_param_problem+0x1922>
    e887328c:	06500593          	li	a1,101
    e8873290:	1028                	addi	a0,sp,40
    e8873292:	e61fb0ef          	jal	ra,e886f0f2 <AirPlayInfoArrayAddAudioFormat>
    e8873296:	842a                	mv	s0,a0
	require_noerr( err, exit );
	
exit:
	if( outErr ) *outErr = err;
	return( dictArray );
    e8873298:	74a2                	ld	s1,40(sp)
	if( outErr ) *outErr = err;
    e887329a:	00090463          	beqz	s2,e88732a2 <_AirPlayHandleServerCopyProperty+0x15e>
    e887329e:	00892023          	sw	s0,0(s2)
}
    e88732a2:	60e6                	ld	ra,88(sp)
    e88732a4:	6446                	ld	s0,80(sp)
    e88732a6:	8526                	mv	a0,s1
    e88732a8:	6906                	ld	s2,64(sp)
    e88732aa:	64a6                	ld	s1,72(sp)
    e88732ac:	79e2                	ld	s3,56(sp)
    e88732ae:	6125                	addi	sp,sp,96
    e88732b0:	8082                	ret
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_AudioLatencies ) ) )
    e88732b2:	0002b597          	auipc	a1,0x2b
    e88732b6:	72658593          	addi	a1,a1,1830 # e889e9d8 <icmp6_param_problem+0x196a>
    e88732ba:	8522                	mv	a0,s0
    e88732bc:	e93d30ef          	jal	ra,e884714e <CFEqual>
    e88732c0:	cd61                	beqz	a0,e8873398 <_AirPlayHandleServerCopyProperty+0x254>
	// MainAudio catch all - set 0 latencies for now - $$$ TODO set real latencies
	//err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_MainAudio, NULL, 0, 0, 0, 0, 0 );
	//require_noerr( err, exit );
	
	// MainAudio default latencies - set 0 latencies for now - $$$ TODO set real latencies
	err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Default, 0, 0, 0, 0, 0 );
    e88732c2:	4881                	li	a7,0
    e88732c4:	4801                	li	a6,0
    e88732c6:	4781                	li	a5,0
    e88732c8:	4701                	li	a4,0
    e88732ca:	4681                	li	a3,0
    e88732cc:	0002b617          	auipc	a2,0x2b
    e88732d0:	6b460613          	addi	a2,a2,1716 # e889e980 <icmp6_param_problem+0x1912>
    e88732d4:	06400593          	li	a1,100
    e88732d8:	1028                	addi	a0,sp,40
	CFArrayRef							dictArray = NULL;
    e88732da:	f402                	sd	zero,40(sp)
	err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Default, 0, 0, 0, 0, 0 );
    e88732dc:	cfbfb0ef          	jal	ra,e886efd6 <AirPlayInfoArrayAddAudioLatency>
	require_noerr( err, exit );
    e88732e0:	e955                	bnez	a0,e8873394 <_AirPlayHandleServerCopyProperty+0x250>
	
	// MainAudio media latencies - set 0 latencies for now - $$$ TODO set real latencies
	err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Media, 0, 0, 0, 0, 0 );
    e88732e2:	4881                	li	a7,0
    e88732e4:	4801                	li	a6,0
    e88732e6:	4781                	li	a5,0
    e88732e8:	4701                	li	a4,0
    e88732ea:	4681                	li	a3,0
    e88732ec:	0002b617          	auipc	a2,0x2b
    e88732f0:	6a460613          	addi	a2,a2,1700 # e889e990 <icmp6_param_problem+0x1922>
    e88732f4:	06400593          	li	a1,100
    e88732f8:	1028                	addi	a0,sp,40
    e88732fa:	cddfb0ef          	jal	ra,e886efd6 <AirPlayInfoArrayAddAudioLatency>
	require_noerr( err, exit );
    e88732fe:	e959                	bnez	a0,e8873394 <_AirPlayHandleServerCopyProperty+0x250>
	
	// MainAudio telephony latencies - set 0 latencies for now - $$$ TODO set real latencies
	err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Telephony, 0, 0, 0, 0, 0 );
    e8873300:	4881                	li	a7,0
    e8873302:	4801                	li	a6,0
    e8873304:	4781                	li	a5,0
    e8873306:	4701                	li	a4,0
    e8873308:	4681                	li	a3,0
    e887330a:	0002b617          	auipc	a2,0x2b
    e887330e:	69660613          	addi	a2,a2,1686 # e889e9a0 <icmp6_param_problem+0x1932>
    e8873312:	06400593          	li	a1,100
    e8873316:	1028                	addi	a0,sp,40
    e8873318:	cbffb0ef          	jal	ra,e886efd6 <AirPlayInfoArrayAddAudioLatency>
	require_noerr( err, exit );
    e887331c:	ed25                	bnez	a0,e8873394 <_AirPlayHandleServerCopyProperty+0x250>
	
	// MainAudio SpeechRecognition latencies - set 0 latencies for now - $$$ TODO set real latencies
	err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_SpeechRecognition, 0, 0, 0, 0, 0 );
    e887331e:	4881                	li	a7,0
    e8873320:	4801                	li	a6,0
    e8873322:	4781                	li	a5,0
    e8873324:	4701                	li	a4,0
    e8873326:	4681                	li	a3,0
    e8873328:	0002b617          	auipc	a2,0x2b
    e887332c:	69060613          	addi	a2,a2,1680 # e889e9b8 <icmp6_param_problem+0x194a>
    e8873330:	06400593          	li	a1,100
    e8873334:	1028                	addi	a0,sp,40
    e8873336:	ca1fb0ef          	jal	ra,e886efd6 <AirPlayInfoArrayAddAudioLatency>
	require_noerr( err, exit );
    e887333a:	ed29                	bnez	a0,e8873394 <_AirPlayHandleServerCopyProperty+0x250>
	
	// Main Audio alert latencies - set 0 latencies for now - $$$ TODO set real latencies
	err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_MainAudio, kAudioStreamAudioType_Alert, 0, 0, 0, 0, 0 );
    e887333c:	4881                	li	a7,0
    e887333e:	4801                	li	a6,0
    e8873340:	4781                	li	a5,0
    e8873342:	4701                	li	a4,0
    e8873344:	4681                	li	a3,0
    e8873346:	0002b617          	auipc	a2,0x2b
    e887334a:	62a60613          	addi	a2,a2,1578 # e889e970 <icmp6_param_problem+0x1902>
    e887334e:	06400593          	li	a1,100
    e8873352:	1028                	addi	a0,sp,40
    e8873354:	c83fb0ef          	jal	ra,e886efd6 <AirPlayInfoArrayAddAudioLatency>
	require_noerr( err, exit );
    e8873358:	ed15                	bnez	a0,e8873394 <_AirPlayHandleServerCopyProperty+0x250>
	// AltAudio catch all latencies - set 0 latencies for now - $$$ TODO set real latencies
	//err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_AltAudio, NULL, 0, 0, 0, 0, 0 );
	//require_noerr( err, exit );
	
	// AltAudio default latencies - set 0 latencies for now - $$$ TODO set real latencies
	err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_AltAudio, kAudioStreamAudioType_Default, 0, 0, 0, 0, 0 );
    e887335a:	4881                	li	a7,0
    e887335c:	4801                	li	a6,0
    e887335e:	4781                	li	a5,0
    e8873360:	4701                	li	a4,0
    e8873362:	4681                	li	a3,0
    e8873364:	0002b617          	auipc	a2,0x2b
    e8873368:	61c60613          	addi	a2,a2,1564 # e889e980 <icmp6_param_problem+0x1912>
    e887336c:	06500593          	li	a1,101
    e8873370:	1028                	addi	a0,sp,40
    e8873372:	c65fb0ef          	jal	ra,e886efd6 <AirPlayInfoArrayAddAudioLatency>
	require_noerr( err, exit );
    e8873376:	ed19                	bnez	a0,e8873394 <_AirPlayHandleServerCopyProperty+0x250>
	
	// MainHighAudio Media latencies (wireless only) - set 0 latencies for now - $$$ TODO set real latencies
	err = AirPlayInfoArrayAddAudioLatency( &dictArray, kAudioStreamType_MainHighAudio, kAudioStreamAudioType_Media, 0, 0, 0, 0, 0 );
    e8873378:	4881                	li	a7,0
    e887337a:	4801                	li	a6,0
    e887337c:	4781                	li	a5,0
    e887337e:	4701                	li	a4,0
    e8873380:	4681                	li	a3,0
    e8873382:	0002b617          	auipc	a2,0x2b
    e8873386:	60e60613          	addi	a2,a2,1550 # e889e990 <icmp6_param_problem+0x1922>
    e887338a:	06600593          	li	a1,102
    e887338e:	1028                	addi	a0,sp,40
    e8873390:	c47fb0ef          	jal	ra,e886efd6 <AirPlayInfoArrayAddAudioLatency>
	if( gTouchpad )		u32 |= kAirPlayDisplayFeatures_Touchpad;

	AirPlayInfoArrayAddScreenDisplay( &dictArray, kDefaultUUID, u32, gPrimaryInputDevice, gMaxFPS, gVideoWidth, gVideoHeight, gVideoWidthMM, gVideoHeightMM ); 

	*outErr = kNoErr;
	return( dictArray );
    e8873394:	74a2                	ld	s1,40(sp)
		require_noerr( err, exit );
    e8873396:	a08d                	j	e88733f8 <_AirPlayHandleServerCopyProperty+0x2b4>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_BluetoothIDs ) ) )
    e8873398:	0002b597          	auipc	a1,0x2b
    e887339c:	65858593          	addi	a1,a1,1624 # e889e9f0 <icmp6_param_problem+0x1982>
    e88733a0:	8522                	mv	a0,s0
    e88733a2:	dadd30ef          	jal	ra,e884714e <CFEqual>
		value = gBluetoothIDs;
    e88733a6:	00071797          	auipc	a5,0x71
    e88733aa:	aca78793          	addi	a5,a5,-1334 # e88e3e70 <gBluetoothIDs>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_BluetoothIDs ) ) )
    e88733ae:	e131                	bnez	a0,e88733f2 <_AirPlayHandleServerCopyProperty+0x2ae>
	else if( CFEqual( inProperty, CFSTR( kAirPlayKey_RightHandDrive ) ) )
    e88733b0:	0002b597          	auipc	a1,0x2b
    e88733b4:	65858593          	addi	a1,a1,1624 # e889ea08 <icmp6_param_problem+0x199a>
    e88733b8:	8522                	mv	a0,s0
    e88733ba:	d95d30ef          	jal	ra,e884714e <CFEqual>
        value = gRightHandDrive;
    e88733be:	00071797          	auipc	a5,0x71
    e88733c2:	bb278793          	addi	a5,a5,-1102 # e88e3f70 <gRightHandDrive>
	else if( CFEqual( inProperty, CFSTR( kAirPlayKey_RightHandDrive ) ) )
    e88733c6:	e515                	bnez	a0,e88733f2 <_AirPlayHandleServerCopyProperty+0x2ae>
	else if( CFEqual( inProperty, CFSTR( kAirPlayKey_Manufacturer ) ) )
    e88733c8:	0002b597          	auipc	a1,0x2b
    e88733cc:	65858593          	addi	a1,a1,1624 # e889ea20 <icmp6_param_problem+0x19b2>
    e88733d0:	8522                	mv	a0,s0
    e88733d2:	d7dd30ef          	jal	ra,e884714e <CFEqual>
    e88733d6:	46051c63          	bnez	a0,e887384e <_AirPlayHandleServerCopyProperty+0x70a>
    else if( CFEqual( inProperty, CFSTR( kAirPlayKey_NightMode ) ) )
    e88733da:	0002b597          	auipc	a1,0x2b
    e88733de:	65e58593          	addi	a1,a1,1630 # e889ea38 <icmp6_param_problem+0x19ca>
    e88733e2:	8522                	mv	a0,s0
    e88733e4:	d6bd30ef          	jal	ra,e884714e <CFEqual>
    e88733e8:	c911                	beqz	a0,e88733fc <_AirPlayHandleServerCopyProperty+0x2b8>
        value = gNightMode;
    e88733ea:	00071797          	auipc	a5,0x71
    e88733ee:	ade78793          	addi	a5,a5,-1314 # e88e3ec8 <gNightMode>
    e88733f2:	6384                	ld	s1,0(a5)
        require_action_quiet( value, exit, err = kNotHandledErr );
    e88733f4:	0c048b63          	beqz	s1,e88734ca <_AirPlayHandleServerCopyProperty+0x386>
	err = kNoErr;
    e88733f8:	4401                	li	s0,0
    e88733fa:	b545                	j	e887329a <_AirPlayHandleServerCopyProperty+0x156>
	else if( CFEqual( inProperty, CFSTR( kAirPlayKey_VehicleInformation ) ) )
    e88733fc:	0002b597          	auipc	a1,0x2b
    e8873400:	65458593          	addi	a1,a1,1620 # e889ea50 <icmp6_param_problem+0x19e2>
    e8873404:	8522                	mv	a0,s0
    e8873406:	d49d30ef          	jal	ra,e884714e <CFEqual>
    e887340a:	cd05                	beqz	a0,e8873442 <_AirPlayHandleServerCopyProperty+0x2fe>
		vehicleDict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e887340c:	0004b697          	auipc	a3,0x4b
    e8873410:	3bc68693          	addi	a3,a3,956 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8873414:	0004b617          	auipc	a2,0x4b
    e8873418:	38460613          	addi	a2,a2,900 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e887341c:	4581                	li	a1,0
    e887341e:	4501                	li	a0,0
    e8873420:	f87d30ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8873424:	84aa                	mv	s1,a0
		require_action_quiet( vehicleDict, exit, err = kNotHandledErr );
    e8873426:	e509                	bnez	a0,e8873430 <_AirPlayHandleServerCopyProperty+0x2ec>
			err = kNotHandledErr;
    e8873428:	7479                	lui	s0,0xffffe
    e887342a:	5c640413          	addi	s0,s0,1478 # ffffffffffffe5c6 <__DRAM0_INF_BASE+0xffffffff0000e5c6>
    e887342e:	a891                	j	e8873482 <_AirPlayHandleServerCopyProperty+0x33e>
		if( CFDictionaryGetCount( vehicleDict ) == 0 ) {
    e8873430:	ffbd30ef          	jal	ra,e884742a <CFDictionaryGetCount>
	err = kNoErr;
    e8873434:	4401                	li	s0,0
		if( CFDictionaryGetCount( vehicleDict ) == 0 ) {
    e8873436:	e60512e3          	bnez	a0,e887329a <_AirPlayHandleServerCopyProperty+0x156>
			CFRelease( iconsArray );
    e887343a:	8526                	mv	a0,s1
    e887343c:	d0fd30ef          	jal	ra,e884714a <CFRelease>
    e8873440:	b7e5                	j	e8873428 <_AirPlayHandleServerCopyProperty+0x2e4>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_ExtendedFeatures ) ) )
    e8873442:	0002b597          	auipc	a1,0x2b
    e8873446:	62e58593          	addi	a1,a1,1582 # e889ea70 <icmp6_param_problem+0x1a02>
    e887344a:	8522                	mv	a0,s0
    e887344c:	d03d30ef          	jal	ra,e884714e <CFEqual>
    e8873450:	c91d                	beqz	a0,e8873486 <_AirPlayHandleServerCopyProperty+0x342>
		extendedFeatures = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e8873452:	0004b617          	auipc	a2,0x4b
    e8873456:	31e60613          	addi	a2,a2,798 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e887345a:	4581                	li	a1,0
    e887345c:	4501                	li	a0,0
    e887345e:	d69d30ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e8873462:	84aa                	mv	s1,a0
		require_action_quiet( extendedFeatures, exit, err = kNotHandledErr );
    e8873464:	d171                	beqz	a0,e8873428 <_AirPlayHandleServerCopyProperty+0x2e4>
		CFArrayAppendValue( extendedFeatures, CFSTR( kAirPlayExtendedFeature_VocoderInfo ) );
    e8873466:	0002b597          	auipc	a1,0x2b
    e887346a:	62a58593          	addi	a1,a1,1578 # e889ea90 <icmp6_param_problem+0x1a22>
    e887346e:	e03d30ef          	jal	ra,e8847270 <CFArrayAppendValue>
		if( CFArrayGetCount( extendedFeatures ) == 0 ) {
    e8873472:	8526                	mv	a0,s1
    e8873474:	d7fd30ef          	jal	ra,e88471f2 <CFArrayGetCount>
    e8873478:	842a                	mv	s0,a0
    e887347a:	fd3d                	bnez	a0,e88733f8 <_AirPlayHandleServerCopyProperty+0x2b4>
			ForgetCF( &extendedFeatures );
    e887347c:	8526                	mv	a0,s1
    e887347e:	ccdd30ef          	jal	ra,e884714a <CFRelease>
	CFTypeRef		value = NULL;
    e8873482:	4481                	li	s1,0
    e8873484:	bd19                	j	e887329a <_AirPlayHandleServerCopyProperty+0x156>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_OEMIconLabel ) ) )
    e8873486:	0002b597          	auipc	a1,0x2b
    e887348a:	62258593          	addi	a1,a1,1570 # e889eaa8 <icmp6_param_problem+0x1a3a>
    e887348e:	8522                	mv	a0,s0
    e8873490:	cbfd30ef          	jal	ra,e884714e <CFEqual>
    e8873494:	cd1d                	beqz	a0,e88734d2 <_AirPlayHandleServerCopyProperty+0x38e>
		if(gOemIconLabel[0] != 0)
    e8873496:	00071797          	auipc	a5,0x71
    e887349a:	a3a7c783          	lbu	a5,-1478(a5) # e88e3ed0 <gOemIconLabel>
	err = kNoErr;
    e887349e:	4401                	li	s0,0
		if(gOemIconLabel[0] != 0)
    e88734a0:	d3ed                	beqz	a5,e8873482 <_AirPlayHandleServerCopyProperty+0x33e>
			err = CFLStringCreateWithText( kCFLAllocatorDefault, gOemIconLabel, strlen( gOemIconLabel ), &obj );
    e88734a2:	00071517          	auipc	a0,0x71
    e88734a6:	a2e50513          	addi	a0,a0,-1490 # e88e3ed0 <gOemIconLabel>
    e88734aa:	66f080ef          	jal	ra,e887c318 <eLIBs_strlen>
    e88734ae:	7c05360b          	extu	a2,a0,31,0
    e88734b2:	1034                	addi	a3,sp,40
    e88734b4:	00071597          	auipc	a1,0x71
    e88734b8:	a1c58593          	addi	a1,a1,-1508 # e88e3ed0 <gOemIconLabel>
    e88734bc:	4501                	li	a0,0
    e88734be:	c3bd50ef          	jal	ra,e88490f8 <CFLStringCreateWithText>
			value = obj;
    e88734c2:	74a2                	ld	s1,40(sp)
	err = kNoErr;
    e88734c4:	4401                	li	s0,0
			require_action_quiet( value, exit, err = kNotHandledErr );
    e88734c6:	dc049ae3          	bnez	s1,e887329a <_AirPlayHandleServerCopyProperty+0x156>
        require_action_quiet( value, exit, err = kNotHandledErr );
    e88734ca:	7479                	lui	s0,0xffffe
    e88734cc:	5c640413          	addi	s0,s0,1478 # ffffffffffffe5c6 <__DRAM0_INF_BASE+0xffffffff0000e5c6>
    e88734d0:	b3e9                	j	e887329a <_AirPlayHandleServerCopyProperty+0x156>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_OEMIcons ) ) )
    e88734d2:	0002b597          	auipc	a1,0x2b
    e88734d6:	5ee58593          	addi	a1,a1,1518 # e889eac0 <icmp6_param_problem+0x1a52>
    e88734da:	8522                	mv	a0,s0
    e88734dc:	c73d30ef          	jal	ra,e884714e <CFEqual>
    e88734e0:	1c050563          	beqz	a0,e88736aa <_AirPlayHandleServerCopyProperty+0x566>
		iconsArray = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );
    e88734e4:	0004b617          	auipc	a2,0x4b
    e88734e8:	28c60613          	addi	a2,a2,652 # e88be770 <kCFLArrayCallBacksCFLTypes>
    e88734ec:	4581                	li	a1,0
    e88734ee:	4501                	li	a0,0
    e88734f0:	cd7d30ef          	jal	ra,e88471c6 <CFArrayCreateMutable>
    e88734f4:	84aa                	mv	s1,a0
		require_action_quiet( iconsArray, exit, err = kNotHandledErr );
    e88734f6:	d90d                	beqz	a0,e8873428 <_AirPlayHandleServerCopyProperty+0x2e4>
		obj = CFDataCreateWithFilePath( "d:\\apps\\CarPlay\\icon_120x120.png", NULL );
    e88734f8:	4581                	li	a1,0
    e88734fa:	00059517          	auipc	a0,0x59
    e88734fe:	3f650513          	addi	a0,a0,1014 # e88cc8f0 <kCarPlayControllerClass.11452+0x1c8>
    e8873502:	c4dd80ef          	jal	ra,e884c14e <CFDataCreateWithFilePath>
    e8873506:	89aa                	mv	s3,a0
		if( obj ) {
    e8873508:	cd35                	beqz	a0,e8873584 <_AirPlayHandleServerCopyProperty+0x440>
			iconDict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e887350a:	0004b697          	auipc	a3,0x4b
    e887350e:	2be68693          	addi	a3,a3,702 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e8873512:	0004b617          	auipc	a2,0x4b
    e8873516:	28660613          	addi	a2,a2,646 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e887351a:	4581                	li	a1,0
    e887351c:	4501                	li	a0,0
    e887351e:	e89d30ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e8873522:	842a                	mv	s0,a0
			if( iconDict ) {
    e8873524:	cd29                	beqz	a0,e887357e <_AirPlayHandleServerCopyProperty+0x43a>
				CFDictionarySetInt64( iconDict, CFSTR( kAirPlayOEMIconKey_WidthPixels ), 120 );
    e8873526:	07800613          	li	a2,120
    e887352a:	0002b597          	auipc	a1,0x2b
    e887352e:	5ae58593          	addi	a1,a1,1454 # e889ead8 <icmp6_param_problem+0x1a6a>
    e8873532:	995d90ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
				CFDictionarySetInt64( iconDict, CFSTR( kAirPlayOEMIconKey_HeightPixels ), 120 );
    e8873536:	07800613          	li	a2,120
    e887353a:	0002b597          	auipc	a1,0x2b
    e887353e:	5b658593          	addi	a1,a1,1462 # e889eaf0 <icmp6_param_problem+0x1a82>
    e8873542:	8522                	mv	a0,s0
    e8873544:	983d90ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
				CFDictionarySetBoolean( iconDict, CFSTR( kAirPlayOEMIconKey_Prerendered ), true );
    e8873548:	00061797          	auipc	a5,0x61
    e887354c:	78878793          	addi	a5,a5,1928 # e88d4cd0 <kCFLBooleanTrue>
    e8873550:	6390                	ld	a2,0(a5)
    e8873552:	0002b597          	auipc	a1,0x2b
    e8873556:	5b658593          	addi	a1,a1,1462 # e889eb08 <icmp6_param_problem+0x1a9a>
    e887355a:	8522                	mv	a0,s0
    e887355c:	ef7d30ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFDictionarySetValue( iconDict, CFSTR( kAirPlayOEMIconKey_ImageData ), obj );
    e8873560:	864e                	mv	a2,s3
    e8873562:	0002b597          	auipc	a1,0x2b
    e8873566:	5be58593          	addi	a1,a1,1470 # e889eb20 <icmp6_param_problem+0x1ab2>
    e887356a:	8522                	mv	a0,s0
    e887356c:	ee7d30ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFArrayAppendValue( iconsArray, iconDict );
    e8873570:	8526                	mv	a0,s1
    e8873572:	85a2                	mv	a1,s0
    e8873574:	cfdd30ef          	jal	ra,e8847270 <CFArrayAppendValue>
				CFRelease( iconDict );
    e8873578:	8522                	mv	a0,s0
    e887357a:	bd1d30ef          	jal	ra,e884714a <CFRelease>
			CFRelease( obj );
    e887357e:	854e                	mv	a0,s3
    e8873580:	bcbd30ef          	jal	ra,e884714a <CFRelease>
		obj = CFDataCreateWithFilePath( "d:\\apps\\CarPlay\\icon_180x180.png", NULL );
    e8873584:	4581                	li	a1,0
    e8873586:	00059517          	auipc	a0,0x59
    e887358a:	39250513          	addi	a0,a0,914 # e88cc918 <kCarPlayControllerClass.11452+0x1f0>
    e887358e:	bc1d80ef          	jal	ra,e884c14e <CFDataCreateWithFilePath>
    e8873592:	89aa                	mv	s3,a0
		if( obj ) {
    e8873594:	cd35                	beqz	a0,e8873610 <_AirPlayHandleServerCopyProperty+0x4cc>
			iconDict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8873596:	0004b697          	auipc	a3,0x4b
    e887359a:	23268693          	addi	a3,a3,562 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e887359e:	0004b617          	auipc	a2,0x4b
    e88735a2:	1fa60613          	addi	a2,a2,506 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e88735a6:	4581                	li	a1,0
    e88735a8:	4501                	li	a0,0
    e88735aa:	dfdd30ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e88735ae:	842a                	mv	s0,a0
			if( iconDict ) {
    e88735b0:	cd29                	beqz	a0,e887360a <_AirPlayHandleServerCopyProperty+0x4c6>
				CFDictionarySetInt64( iconDict, CFSTR( kAirPlayOEMIconKey_WidthPixels ), 180 );
    e88735b2:	0b400613          	li	a2,180
    e88735b6:	0002b597          	auipc	a1,0x2b
    e88735ba:	52258593          	addi	a1,a1,1314 # e889ead8 <icmp6_param_problem+0x1a6a>
    e88735be:	909d90ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
				CFDictionarySetInt64( iconDict, CFSTR( kAirPlayOEMIconKey_HeightPixels ), 180 );
    e88735c2:	0b400613          	li	a2,180
    e88735c6:	0002b597          	auipc	a1,0x2b
    e88735ca:	52a58593          	addi	a1,a1,1322 # e889eaf0 <icmp6_param_problem+0x1a82>
    e88735ce:	8522                	mv	a0,s0
    e88735d0:	8f7d90ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
				CFDictionarySetBoolean( iconDict, CFSTR( kAirPlayOEMIconKey_Prerendered ), true );
    e88735d4:	00061797          	auipc	a5,0x61
    e88735d8:	6fc78793          	addi	a5,a5,1788 # e88d4cd0 <kCFLBooleanTrue>
    e88735dc:	6390                	ld	a2,0(a5)
    e88735de:	0002b597          	auipc	a1,0x2b
    e88735e2:	52a58593          	addi	a1,a1,1322 # e889eb08 <icmp6_param_problem+0x1a9a>
    e88735e6:	8522                	mv	a0,s0
    e88735e8:	e6bd30ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFDictionarySetValue( iconDict, CFSTR( kAirPlayOEMIconKey_ImageData ), obj );
    e88735ec:	864e                	mv	a2,s3
    e88735ee:	0002b597          	auipc	a1,0x2b
    e88735f2:	53258593          	addi	a1,a1,1330 # e889eb20 <icmp6_param_problem+0x1ab2>
    e88735f6:	8522                	mv	a0,s0
    e88735f8:	e5bd30ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFArrayAppendValue( iconsArray, iconDict );
    e88735fc:	8526                	mv	a0,s1
    e88735fe:	85a2                	mv	a1,s0
    e8873600:	c71d30ef          	jal	ra,e8847270 <CFArrayAppendValue>
				CFRelease( iconDict );
    e8873604:	8522                	mv	a0,s0
    e8873606:	b45d30ef          	jal	ra,e884714a <CFRelease>
			CFRelease( obj );
    e887360a:	854e                	mv	a0,s3
    e887360c:	b3fd30ef          	jal	ra,e884714a <CFRelease>
		obj = CFDataCreateWithFilePath( "d:\\apps\\CarPlay\\icon_256x256.png", NULL );
    e8873610:	4581                	li	a1,0
    e8873612:	00059517          	auipc	a0,0x59
    e8873616:	32e50513          	addi	a0,a0,814 # e88cc940 <kCarPlayControllerClass.11452+0x218>
    e887361a:	b35d80ef          	jal	ra,e884c14e <CFDataCreateWithFilePath>
    e887361e:	89aa                	mv	s3,a0
		if( obj ) {
    e8873620:	cd35                	beqz	a0,e887369c <_AirPlayHandleServerCopyProperty+0x558>
			iconDict = CFDictionaryCreateMutable( NULL, 0,  &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    e8873622:	0004b697          	auipc	a3,0x4b
    e8873626:	1a668693          	addi	a3,a3,422 # e88be7c8 <kCFLDictionaryValueCallBacksCFLTypes>
    e887362a:	0004b617          	auipc	a2,0x4b
    e887362e:	16e60613          	addi	a2,a2,366 # e88be798 <kCFLDictionaryKeyCallBacksCFLTypes>
    e8873632:	4581                	li	a1,0
    e8873634:	4501                	li	a0,0
    e8873636:	d71d30ef          	jal	ra,e88473a6 <CFDictionaryCreateMutable>
    e887363a:	842a                	mv	s0,a0
			if( iconDict ) {
    e887363c:	cd29                	beqz	a0,e8873696 <_AirPlayHandleServerCopyProperty+0x552>
				CFDictionarySetInt64( iconDict, CFSTR( kAirPlayOEMIconKey_WidthPixels ), 256 );
    e887363e:	10000613          	li	a2,256
    e8873642:	0002b597          	auipc	a1,0x2b
    e8873646:	49658593          	addi	a1,a1,1174 # e889ead8 <icmp6_param_problem+0x1a6a>
    e887364a:	87dd90ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
				CFDictionarySetInt64( iconDict, CFSTR( kAirPlayOEMIconKey_HeightPixels ), 256 );
    e887364e:	10000613          	li	a2,256
    e8873652:	0002b597          	auipc	a1,0x2b
    e8873656:	49e58593          	addi	a1,a1,1182 # e889eaf0 <icmp6_param_problem+0x1a82>
    e887365a:	8522                	mv	a0,s0
    e887365c:	86bd90ef          	jal	ra,e884cec6 <CFDictionarySetInt64>
				CFDictionarySetBoolean( iconDict, CFSTR( kAirPlayOEMIconKey_Prerendered ), true );
    e8873660:	00061797          	auipc	a5,0x61
    e8873664:	67078793          	addi	a5,a5,1648 # e88d4cd0 <kCFLBooleanTrue>
    e8873668:	6390                	ld	a2,0(a5)
    e887366a:	0002b597          	auipc	a1,0x2b
    e887366e:	49e58593          	addi	a1,a1,1182 # e889eb08 <icmp6_param_problem+0x1a9a>
    e8873672:	8522                	mv	a0,s0
    e8873674:	ddfd30ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFDictionarySetValue( iconDict, CFSTR( kAirPlayOEMIconKey_ImageData ), obj );
    e8873678:	864e                	mv	a2,s3
    e887367a:	0002b597          	auipc	a1,0x2b
    e887367e:	4a658593          	addi	a1,a1,1190 # e889eb20 <icmp6_param_problem+0x1ab2>
    e8873682:	8522                	mv	a0,s0
    e8873684:	dcfd30ef          	jal	ra,e8847452 <CFDictionarySetValue>
				CFArrayAppendValue( iconsArray, iconDict );
    e8873688:	8526                	mv	a0,s1
    e887368a:	85a2                	mv	a1,s0
    e887368c:	be5d30ef          	jal	ra,e8847270 <CFArrayAppendValue>
				CFRelease( iconDict );
    e8873690:	8522                	mv	a0,s0
    e8873692:	ab9d30ef          	jal	ra,e884714a <CFRelease>
			CFRelease( obj );
    e8873696:	854e                	mv	a0,s3
    e8873698:	ab3d30ef          	jal	ra,e884714a <CFRelease>
		if( CFArrayGetCount( iconsArray ) > 0) {
    e887369c:	8526                	mv	a0,s1
    e887369e:	b55d30ef          	jal	ra,e88471f2 <CFArrayGetCount>
	err = kNoErr;
    e88736a2:	4401                	li	s0,0
		if( CFArrayGetCount( iconsArray ) > 0) {
    e88736a4:	bea04be3          	bgtz	a0,e887329a <_AirPlayHandleServerCopyProperty+0x156>
    e88736a8:	bb49                	j	e887343a <_AirPlayHandleServerCopyProperty+0x2f6>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_Displays ) ) )
    e88736aa:	0002b597          	auipc	a1,0x2b
    e88736ae:	48e58593          	addi	a1,a1,1166 # e889eb38 <icmp6_param_problem+0x1aca>
    e88736b2:	8522                	mv	a0,s0
    e88736b4:	a9bd30ef          	jal	ra,e884714e <CFEqual>
    e88736b8:	c921                	beqz	a0,e8873708 <_AirPlayHandleServerCopyProperty+0x5c4>
	AirPlayInfoArrayAddScreenDisplay( &dictArray, kDefaultUUID, u32, gPrimaryInputDevice, gMaxFPS, gVideoWidth, gVideoHeight, gVideoWidthMM, gVideoHeightMM ); 
    e88736ba:	00071797          	auipc	a5,0x71
    e88736be:	8c678793          	addi	a5,a5,-1850 # e88e3f80 <gVideoHeightMM>
    e88736c2:	439c                	lw	a5,0(a5)
    e88736c4:	00062717          	auipc	a4,0x62
    e88736c8:	ea470713          	addi	a4,a4,-348 # e88d5568 <gMaxFPS>
    e88736cc:	4685                	li	a3,1
    e88736ce:	e03e                	sd	a5,0(sp)
    e88736d0:	00071797          	auipc	a5,0x71
    e88736d4:	8b878793          	addi	a5,a5,-1864 # e88e3f88 <gVideoWidthMM>
    e88736d8:	0007a883          	lw	a7,0(a5)
    e88736dc:	00071797          	auipc	a5,0x71
    e88736e0:	8a078793          	addi	a5,a5,-1888 # e88e3f7c <gVideoHeight>
    e88736e4:	0007a803          	lw	a6,0(a5)
    e88736e8:	00071797          	auipc	a5,0x71
    e88736ec:	89c78793          	addi	a5,a5,-1892 # e88e3f84 <gVideoWidth>
    e88736f0:	439c                	lw	a5,0(a5)
    e88736f2:	4318                	lw	a4,0(a4)
    e88736f4:	4629                	li	a2,10
    e88736f6:	0002b597          	auipc	a1,0x2b
    e88736fa:	45a58593          	addi	a1,a1,1114 # e889eb50 <icmp6_param_problem+0x1ae2>
    e88736fe:	1028                	addi	a0,sp,40
	CFArrayRef dictArray = NULL;
    e8873700:	f402                	sd	zero,40(sp)
	AirPlayInfoArrayAddScreenDisplay( &dictArray, kDefaultUUID, u32, gPrimaryInputDevice, gMaxFPS, gVideoWidth, gVideoHeight, gVideoWidthMM, gVideoHeightMM ); 
    e8873702:	abdfb0ef          	jal	ra,e886f1be <AirPlayInfoArrayAddScreenDisplay>
    e8873706:	b179                	j	e8873394 <_AirPlayHandleServerCopyProperty+0x250>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_HIDDevices ) ) )
    e8873708:	0002b597          	auipc	a1,0x2b
    e887370c:	47858593          	addi	a1,a1,1144 # e889eb80 <icmp6_param_problem+0x1b12>
    e8873710:	8522                	mv	a0,s0
    e8873712:	a3dd30ef          	jal	ra,e884714e <CFEqual>
    e8873716:	10050463          	beqz	a0,e887381e <_AirPlayHandleServerCopyProperty+0x6da>
		err = HIDTouchScreenSingleCreateDescriptor( &descPtr, &descLen, gVideoWidth, gVideoHeight );
    e887371a:	00071697          	auipc	a3,0x71
    e887371e:	8626d683          	lhu	a3,-1950(a3) # e88e3f7c <gVideoHeight>
    e8873722:	00071617          	auipc	a2,0x71
    e8873726:	86265603          	lhu	a2,-1950(a2) # e88e3f84 <gVideoWidth>
    e887372a:	102c                	addi	a1,sp,40
    e887372c:	1008                	addi	a0,sp,32
	CFArrayRef					dictArray = NULL;
    e887372e:	ec02                	sd	zero,24(sp)
		err = HIDTouchScreenSingleCreateDescriptor( &descPtr, &descLen, gVideoWidth, gVideoHeight );
    e8873730:	bfeef0ef          	jal	ra,e8862b2e <HIDTouchScreenSingleCreateDescriptor>
    e8873734:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e8873736:	0e051263          	bnez	a0,e887381a <_AirPlayHandleServerCopyProperty+0x6d6>
		err = AirPlayInfoArrayAddHIDDevice( &dictArray, gTouchUID, "Touch Screen", kUSBVendorTouchScreen, kUSBProductTouchScreen, kUSBCountryCodeUnused, descPtr, descLen, kDefaultUUID );
    e887373a:	78a2                	ld	a7,40(sp)
    e887373c:	7802                	ld	a6,32(sp)
    e887373e:	0002b497          	auipc	s1,0x2b
    e8873742:	41248493          	addi	s1,s1,1042 # e889eb50 <icmp6_param_problem+0x1ae2>
    e8873746:	e026                	sd	s1,0(sp)
    e8873748:	4781                	li	a5,0
    e887374a:	4745                	li	a4,17
    e887374c:	46c1                	li	a3,16
    e887374e:	00059617          	auipc	a2,0x59
    e8873752:	21a60613          	addi	a2,a2,538 # e88cc968 <kCarPlayControllerClass.11452+0x240>
    e8873756:	00071597          	auipc	a1,0x71
    e887375a:	8245c583          	lbu	a1,-2012(a1) # e88e3f7a <gTouchUID>
    e887375e:	0828                	addi	a0,sp,24
    e8873760:	f22fb0ef          	jal	ra,e886ee82 <AirPlayInfoArrayAddHIDDevice>
    e8873764:	842a                	mv	s0,a0
		free( descPtr );
    e8873766:	7502                	ld	a0,32(sp)
    e8873768:	399080ef          	jal	ra,e887c300 <eLIBs_free>
		require_noerr( err, exit );
    e887376c:	e45d                	bnez	s0,e887381a <_AirPlayHandleServerCopyProperty+0x6d6>
		err = HIDKnobCreateDescriptor( &descPtr, &descLen );
    e887376e:	102c                	addi	a1,sp,40
    e8873770:	1008                	addi	a0,sp,32
    e8873772:	aa8ef0ef          	jal	ra,e8862a1a <HIDKnobCreateDescriptor>
    e8873776:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e8873778:	e14d                	bnez	a0,e887381a <_AirPlayHandleServerCopyProperty+0x6d6>
		err = AirPlayInfoArrayAddHIDDevice( &dictArray, gKnobUID, "Knob & Buttons", kUSBVendorKnobButtons, kUSBProductKnobButtons, kUSBCountryCodeUnused, descPtr, descLen, kDefaultUUID );
    e887377a:	78a2                	ld	a7,40(sp)
    e887377c:	7802                	ld	a6,32(sp)
    e887377e:	e026                	sd	s1,0(sp)
    e8873780:	4781                	li	a5,0
    e8873782:	4701                	li	a4,0
    e8873784:	4681                	li	a3,0
    e8873786:	00059617          	auipc	a2,0x59
    e887378a:	1f260613          	addi	a2,a2,498 # e88cc978 <kCarPlayControllerClass.11452+0x250>
    e887378e:	00070597          	auipc	a1,0x70
    e8873792:	7365c583          	lbu	a1,1846(a1) # e88e3ec4 <gKnobUID>
    e8873796:	0828                	addi	a0,sp,24
    e8873798:	eeafb0ef          	jal	ra,e886ee82 <AirPlayInfoArrayAddHIDDevice>
    e887379c:	842a                	mv	s0,a0
		free( descPtr );
    e887379e:	7502                	ld	a0,32(sp)
    e88737a0:	361080ef          	jal	ra,e887c300 <eLIBs_free>
		require_noerr( err, exit );
    e88737a4:	e83d                	bnez	s0,e887381a <_AirPlayHandleServerCopyProperty+0x6d6>
		err = HIDMediaButtonsCreateDescriptor( &descPtr, &descLen );
    e88737a6:	102c                	addi	a1,sp,40
    e88737a8:	1008                	addi	a0,sp,32
    e88737aa:	ad8ef0ef          	jal	ra,e8862a82 <HIDMediaButtonsCreateDescriptor>
    e88737ae:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e88737b0:	e52d                	bnez	a0,e887381a <_AirPlayHandleServerCopyProperty+0x6d6>
		err = AirPlayInfoArrayAddHIDDevice( &dictArray, gMediaButtonUID, "Media Buttons", 0x11, 0x22, kUSBCountryCodeUnused, descPtr, descLen, kDefaultUUID );
    e88737b2:	78a2                	ld	a7,40(sp)
    e88737b4:	7802                	ld	a6,32(sp)
    e88737b6:	e026                	sd	s1,0(sp)
    e88737b8:	4781                	li	a5,0
    e88737ba:	02200713          	li	a4,34
    e88737be:	46c5                	li	a3,17
    e88737c0:	00059617          	auipc	a2,0x59
    e88737c4:	1c860613          	addi	a2,a2,456 # e88cc988 <kCarPlayControllerClass.11452+0x260>
    e88737c8:	00070597          	auipc	a1,0x70
    e88737cc:	6fd5c583          	lbu	a1,1789(a1) # e88e3ec5 <gMediaButtonUID>
    e88737d0:	0828                	addi	a0,sp,24
    e88737d2:	eb0fb0ef          	jal	ra,e886ee82 <AirPlayInfoArrayAddHIDDevice>
    e88737d6:	842a                	mv	s0,a0
		free( descPtr );
    e88737d8:	7502                	ld	a0,32(sp)
    e88737da:	327080ef          	jal	ra,e887c300 <eLIBs_free>
		require_noerr( err, exit );
    e88737de:	ec15                	bnez	s0,e887381a <_AirPlayHandleServerCopyProperty+0x6d6>
		err = HIDTelephonyCreateDescriptor( &descPtr, &descLen );
    e88737e0:	102c                	addi	a1,sp,40
    e88737e2:	1008                	addi	a0,sp,32
    e88737e4:	aeeef0ef          	jal	ra,e8862ad2 <HIDTelephonyCreateDescriptor>
    e88737e8:	842a                	mv	s0,a0
		require_noerr( err, exit );
    e88737ea:	e905                	bnez	a0,e887381a <_AirPlayHandleServerCopyProperty+0x6d6>
		err = AirPlayInfoArrayAddHIDDevice( &dictArray, gTelephonyUID, "Telephony", 0x33, 0x44, kUSBCountryCodeUnused, descPtr, descLen, kDefaultUUID );
    e88737ec:	78a2                	ld	a7,40(sp)
    e88737ee:	7802                	ld	a6,32(sp)
    e88737f0:	e026                	sd	s1,0(sp)
    e88737f2:	4781                	li	a5,0
    e88737f4:	04400713          	li	a4,68
    e88737f8:	03300693          	li	a3,51
    e88737fc:	00059617          	auipc	a2,0x59
    e8873800:	19c60613          	addi	a2,a2,412 # e88cc998 <kCarPlayControllerClass.11452+0x270>
    e8873804:	00070597          	auipc	a1,0x70
    e8873808:	7755c583          	lbu	a1,1909(a1) # e88e3f79 <gTelephonyUID>
    e887380c:	0828                	addi	a0,sp,24
    e887380e:	e74fb0ef          	jal	ra,e886ee82 <AirPlayInfoArrayAddHIDDevice>
    e8873812:	842a                	mv	s0,a0
		free( descPtr );
    e8873814:	7502                	ld	a0,32(sp)
    e8873816:	2eb080ef          	jal	ra,e887c300 <eLIBs_free>
	return( dictArray );
    e887381a:	64e2                	ld	s1,24(sp)
		require_noerr( err, exit );
    e887381c:	bcbd                	j	e887329a <_AirPlayHandleServerCopyProperty+0x156>
	else if( CFEqual( inProperty, CFSTR( kAirPlayKey_ClientOSBuildVersionMin ) ) )
    e887381e:	0002b597          	auipc	a1,0x2b
    e8873822:	37a58593          	addi	a1,a1,890 # e889eb98 <icmp6_param_problem+0x1b2a>
    e8873826:	8522                	mv	a0,s0
    e8873828:	927d30ef          	jal	ra,e884714e <CFEqual>
    e887382c:	be051ee3          	bnez	a0,e8873428 <_AirPlayHandleServerCopyProperty+0x2e4>
	else if( CFEqual( inProperty, CFSTR( kAirPlayProperty_DeviceID ) ) )
    e8873830:	0002b597          	auipc	a1,0x2b
    e8873834:	38858593          	addi	a1,a1,904 # e889ebb8 <icmp6_param_problem+0x1b4a>
    e8873838:	8522                	mv	a0,s0
    e887383a:	915d30ef          	jal	ra,e884714e <CFEqual>
    e887383e:	be0505e3          	beqz	a0,e8873428 <_AirPlayHandleServerCopyProperty+0x2e4>
	err = kNoErr;
    e8873842:	4401                	li	s0,0
			value = gDeviceID; // ie. CFSTR( "00:11:22:AA:BB:CC" )
    e8873844:	0002b497          	auipc	s1,0x2b
    e8873848:	0dc48493          	addi	s1,s1,220 # e889e920 <icmp6_param_problem+0x18b2>
    e887384c:	b4b9                	j	e887329a <_AirPlayHandleServerCopyProperty+0x156>
	err = kNoErr;
    e887384e:	4401                	li	s0,0
			value = gManufacturer; // ie. CFSTR( "11D257" )
    e8873850:	0002b497          	auipc	s1,0x2b
    e8873854:	0c048493          	addi	s1,s1,192 # e889e910 <icmp6_param_problem+0x18a2>
    e8873858:	b489                	j	e887329a <_AirPlayHandleServerCopyProperty+0x156>

00000000e887385a <TelephonyUpdate>:
{
    e887385a:	1101                	addi	sp,sp,-32
	HIDTelephonyFillReport( report, inButton );
    e887385c:	85aa                	mv	a1,a0
    e887385e:	0028                	addi	a0,sp,8
{
    e8873860:	ec06                	sd	ra,24(sp)
	HIDTelephonyFillReport( report, inButton );
    e8873862:	ac6ef0ef          	jal	ra,e8862b28 <HIDTelephonyFillReport>
	AirPlayReceiverSessionSendHIDReport( gAirPlaySession, gTelephonyUID, report, sizeof( report ) );
    e8873866:	00070797          	auipc	a5,0x70
    e887386a:	5fa78793          	addi	a5,a5,1530 # e88e3e60 <gAirPlaySession>
    e887386e:	6388                	ld	a0,0(a5)
    e8873870:	0030                	addi	a2,sp,8
    e8873872:	4685                	li	a3,1
    e8873874:	00070597          	auipc	a1,0x70
    e8873878:	7055c583          	lbu	a1,1797(a1) # e88e3f79 <gTelephonyUID>
    e887387c:	d56fb0ef          	jal	ra,e886edd2 <AirPlayReceiverSessionSendHIDReport>
}
    e8873880:	60e2                	ld	ra,24(sp)
    e8873882:	4501                	li	a0,0
    e8873884:	6105                	addi	sp,sp,32
    e8873886:	8082                	ret

00000000e8873888 <MediaButtonUpdate>:
{
    e8873888:	1101                	addi	sp,sp,-32
	HIDMediaButtonsFillReport( report, inButton );
    e887388a:	85aa                	mv	a1,a0
    e887388c:	0028                	addi	a0,sp,8
{
    e887388e:	ec06                	sd	ra,24(sp)
	HIDMediaButtonsFillReport( report, inButton );
    e8873890:	a3cef0ef          	jal	ra,e8862acc <HIDMediaButtonsFillReport>
	AirPlayReceiverSessionSendHIDReport( gAirPlaySession, gMediaButtonUID, report, sizeof( report ) );
    e8873894:	00070797          	auipc	a5,0x70
    e8873898:	5cc78793          	addi	a5,a5,1484 # e88e3e60 <gAirPlaySession>
    e887389c:	6388                	ld	a0,0(a5)
    e887389e:	0030                	addi	a2,sp,8
    e88738a0:	4685                	li	a3,1
    e88738a2:	00070597          	auipc	a1,0x70
    e88738a6:	6235c583          	lbu	a1,1571(a1) # e88e3ec5 <gMediaButtonUID>
    e88738aa:	d28fb0ef          	jal	ra,e886edd2 <AirPlayReceiverSessionSendHIDReport>
}
    e88738ae:	60e2                	ld	ra,24(sp)
    e88738b0:	4501                	li	a0,0
    e88738b2:	6105                	addi	sp,sp,32
    e88738b4:	8082                	ret

00000000e88738b6 <_AirPlayHandleSessionFinalized>:
{
    e88738b6:	1141                	addi	sp,sp,-16
    e88738b8:	e406                	sd	ra,8(sp)
	carplay_talking = FALSE;
    e88738ba:	00070797          	auipc	a5,0x70
    e88738be:	5807a723          	sw	zero,1422(a5) # e88e3e48 <carplay_talking>
    carplay_connect = FALSE;
    e88738c2:	00070797          	auipc	a5,0x70
    e88738c6:	5607ab23          	sw	zero,1398(a5) # e88e3e38 <carplay_connect>
    lock_airplay();
    e88738ca:	c06ff0ef          	jal	ra,e8872cd0 <lock_airplay>
	gAirPlaySession = NULL;
    e88738ce:	00070797          	auipc	a5,0x70
    e88738d2:	5807b923          	sd	zero,1426(a5) # e88e3e60 <gAirPlaySession>
    unlock_airplay();
    e88738d6:	c06ff0ef          	jal	ra,e8872cdc <unlock_airplay>
    AudioOutputStop();
    e88738da:	4e7010ef          	jal	ra,e88755c0 <AudioOutputStop>
	app_ulog( kLogLevelNotice, "AirPlay session ended\n" );
    e88738de:	00062517          	auipc	a0,0x62
    e88738e2:	c2a50513          	addi	a0,a0,-982 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e88738e6:	411c                	lw	a5,0(a0)
    e88738e8:	03200713          	li	a4,50
    e88738ec:	02f74c63          	blt	a4,a5,e8873924 <_AirPlayHandleSessionFinalized+0x6e>
    e88738f0:	577d                	li	a4,-1
    e88738f2:	02e78463          	beq	a5,a4,e887391a <_AirPlayHandleSessionFinalized+0x64>
}
    e88738f6:	60a2                	ld	ra,8(sp)
	app_ulog( kLogLevelNotice, "AirPlay session ended\n" );
    e88738f8:	00059697          	auipc	a3,0x59
    e88738fc:	15868693          	addi	a3,a3,344 # e88cca50 <kCarPlayControllerClass.11452+0x328>
    e8873900:	03200613          	li	a2,50
    e8873904:	00059597          	auipc	a1,0x59
    e8873908:	1b458593          	addi	a1,a1,436 # e88ccab8 <__PRETTY_FUNCTION__.11647>
    e887390c:	00062517          	auipc	a0,0x62
    e8873910:	bfc50513          	addi	a0,a0,-1028 # e88d5508 <gLogCategory_CarPlayDemoApp>
}
    e8873914:	0141                	addi	sp,sp,16
	app_ulog( kLogLevelNotice, "AirPlay session ended\n" );
    e8873916:	b5fe006f          	j	e8854474 <LogPrintF>
    e887391a:	03200593          	li	a1,50
    e887391e:	f54e00ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8873922:	f971                	bnez	a0,e88738f6 <_AirPlayHandleSessionFinalized+0x40>
}
    e8873924:	60a2                	ld	ra,8(sp)
    e8873926:	0141                	addi	sp,sp,16
    e8873928:	8082                	ret

00000000e887392a <lib_iic_open>:
{
    e887392a:	1141                	addi	sp,sp,-16
    pthread_mutex_lock(&iic_mutex);
    e887392c:	00070517          	auipc	a0,0x70
    e8873930:	67c50513          	addi	a0,a0,1660 # e88e3fa8 <iic_mutex>
{
    e8873934:	e406                	sd	ra,8(sp)
    pthread_mutex_lock(&iic_mutex);
    e8873936:	1e8080ef          	jal	ra,e887bb1e <pthread_mutex_lock>
    CI2C_Open(fiic,apple_iic_name);
    e887393a:	00070797          	auipc	a5,0x70
    e887393e:	51678793          	addi	a5,a5,1302 # e88e3e50 <fiic>
    e8873942:	6388                	ld	a0,0(a5)
    e8873944:	00070597          	auipc	a1,0x70
    e8873948:	4b458593          	addi	a1,a1,1204 # e88e3df8 <apple_iic_name>
    e887394c:	73f070ef          	jal	ra,e887b88a <CI2C_Open>
}
    e8873950:	60a2                	ld	ra,8(sp)
    e8873952:	4501                	li	a0,0
    e8873954:	0141                	addi	sp,sp,16
    e8873956:	8082                	ret

00000000e8873958 <lib_iic_close>:
{
    e8873958:	1141                	addi	sp,sp,-16
    CI2C_Close(fiic);
    e887395a:	00070797          	auipc	a5,0x70
    e887395e:	4f678793          	addi	a5,a5,1270 # e88e3e50 <fiic>
{
    e8873962:	e406                	sd	ra,8(sp)
    CI2C_Close(fiic);
    e8873964:	6388                	ld	a0,0(a5)
    e8873966:	773070ef          	jal	ra,e887b8d8 <CI2C_Close>
}
    e887396a:	60a2                	ld	ra,8(sp)
    pthread_mutex_unlock(&iic_mutex);
    e887396c:	00070517          	auipc	a0,0x70
    e8873970:	63c50513          	addi	a0,a0,1596 # e88e3fa8 <iic_mutex>
}
    e8873974:	0141                	addi	sp,sp,16
    pthread_mutex_unlock(&iic_mutex);
    e8873976:	1ec0806f          	j	e887bb62 <pthread_mutex_unlock>

00000000e887397a <lib_iic_read>:
{
    e887397a:	715d                	addi	sp,sp,-80
    e887397c:	e0a2                	sd	s0,64(sp)
    e887397e:	f84a                	sd	s2,48(sp)
    e8873980:	f44e                	sd	s3,40(sp)
    e8873982:	f052                	sd	s4,32(sp)
    e8873984:	ec56                	sd	s5,24(sp)
    e8873986:	e486                	sd	ra,72(sp)
    e8873988:	fc26                	sd	s1,56(sp)
    e887398a:	e85a                	sd	s6,16(sp)
    e887398c:	8a2e                	mv	s4,a1
    e887398e:	8ab2                	mv	s5,a2
    uint8_t reg_addr = inRegister;
    e8873990:	00a107a3          	sb	a0,15(sp)
	while(try_time -- > 0)
    e8873994:	4419                	li	s0,6
        ret = CI2C_Write(fiic,apple_iic_addr,&reg_addr,1,NULL,0);
    e8873996:	00062917          	auipc	s2,0x62
    e887399a:	b6a90913          	addi	s2,s2,-1174 # e88d5500 <apple_iic_addr>
    e887399e:	00070997          	auipc	s3,0x70
    e88739a2:	4b298993          	addi	s3,s3,1202 # e88e3e50 <fiic>
	while(try_time -- > 0)
    e88739a6:	347d                	addiw	s0,s0,-1
    e88739a8:	0ff47413          	andi	s0,s0,255
    e88739ac:	e411                	bnez	s0,e88739b8 <lib_iic_read+0x3e>
		printf("i2c read fail1\n");
    e88739ae:	00059517          	auipc	a0,0x59
    e88739b2:	31250513          	addi	a0,a0,786 # e88cccc0 <__PRETTY_FUNCTION__.11813+0x1b0>
    e88739b6:	a895                	j	e8873a2a <lib_iic_read+0xb0>
        ret = CI2C_Write(fiic,apple_iic_addr,&reg_addr,1,NULL,0);
    e88739b8:	00094583          	lbu	a1,0(s2)
    e88739bc:	0009b503          	ld	a0,0(s3)
    e88739c0:	4781                	li	a5,0
    e88739c2:	4701                	li	a4,0
    e88739c4:	4685                	li	a3,1
    e88739c6:	00f10613          	addi	a2,sp,15
    e88739ca:	7b1070ef          	jal	ra,e887b97a <CI2C_Write>
    e88739ce:	84aa                	mv	s1,a0
		if (ret != TRUE)
    e88739d0:	4785                	li	a5,1
    e88739d2:	06f50063          	beq	a0,a5,e8873a32 <lib_iic_read+0xb8>
			Sleep(10);
    e88739d6:	4505                	li	a0,1
    e88739d8:	63e080ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e88739dc:	b7e9                	j	e88739a6 <lib_iic_read+0x2c>
        ret = CI2C_Read(fiic,apple_iic_addr,NULL,0,inReadBuf,inReadLen);
    e88739de:	00094583          	lbu	a1,0(s2)
    e88739e2:	0009b503          	ld	a0,0(s3)
    e88739e6:	87d6                	mv	a5,s5
    e88739e8:	8752                	mv	a4,s4
    e88739ea:	4681                	li	a3,0
    e88739ec:	4601                	li	a2,0
    e88739ee:	70d070ef          	jal	ra,e887b8fa <CI2C_Read>
    e88739f2:	84aa                	mv	s1,a0
		if (ret != TRUE)
    e88739f4:	01651d63          	bne	a0,s6,e8873a0e <lib_iic_read+0x94>
	return 0;
    e88739f8:	4501                	li	a0,0
}
    e88739fa:	60a6                	ld	ra,72(sp)
    e88739fc:	6406                	ld	s0,64(sp)
    e88739fe:	74e2                	ld	s1,56(sp)
    e8873a00:	7942                	ld	s2,48(sp)
    e8873a02:	79a2                	ld	s3,40(sp)
    e8873a04:	7a02                	ld	s4,32(sp)
    e8873a06:	6ae2                	ld	s5,24(sp)
    e8873a08:	6b42                	ld	s6,16(sp)
    e8873a0a:	6161                	addi	sp,sp,80
    e8873a0c:	8082                	ret
			Sleep(10);
    e8873a0e:	4505                	li	a0,1
    e8873a10:	606080ef          	jal	ra,e887c016 <esKRNL_TimeDly>
	while(try_time -- > 0)
    e8873a14:	347d                	addiw	s0,s0,-1
    e8873a16:	0ff47413          	andi	s0,s0,255
    e8873a1a:	f071                	bnez	s0,e88739de <lib_iic_read+0x64>
	if (ret != TRUE)
    e8873a1c:	4785                	li	a5,1
		printf("i2c read fail2\n");
    e8873a1e:	00059517          	auipc	a0,0x59
    e8873a22:	29250513          	addi	a0,a0,658 # e88cccb0 <__PRETTY_FUNCTION__.11813+0x1a0>
	if (ret != TRUE)
    e8873a26:	fcf489e3          	beq	s1,a5,e88739f8 <lib_iic_read+0x7e>
		printf("i2c read fail1\n");
    e8873a2a:	09d080ef          	jal	ra,e887c2c6 <eLIBs_printf>
		return 1;
    e8873a2e:	4505                	li	a0,1
    e8873a30:	b7e9                	j	e88739fa <lib_iic_read+0x80>
    e8873a32:	4419                	li	s0,6
		if (ret != TRUE)
    e8873a34:	4b05                	li	s6,1
    e8873a36:	bff9                	j	e8873a14 <lib_iic_read+0x9a>

00000000e8873a38 <lib_iic_write>:
{
    e8873a38:	715d                	addi	sp,sp,-80
    e8873a3a:	f44e                	sd	s3,40(sp)
	reg_addr = (uint8_t *) malloc( inWriteLen+1 );
    e8873a3c:	0016099b          	addiw	s3,a2,1
{
    e8873a40:	e0a2                	sd	s0,64(sp)
    e8873a42:	842a                	mv	s0,a0
	reg_addr = (uint8_t *) malloc( inWriteLen+1 );
    e8873a44:	854e                	mv	a0,s3
{
    e8873a46:	e486                	sd	ra,72(sp)
    e8873a48:	fc26                	sd	s1,56(sp)
    e8873a4a:	f84a                	sd	s2,48(sp)
    e8873a4c:	f052                	sd	s4,32(sp)
    e8873a4e:	ec56                	sd	s5,24(sp)
    e8873a50:	e85a                	sd	s6,16(sp)
    e8873a52:	e42e                	sd	a1,8(sp)
	reg_addr = (uint8_t *) malloc( inWriteLen+1 );
    e8873a54:	e032                	sd	a2,0(sp)
    e8873a56:	5f9070ef          	jal	ra,e887b84e <my_malloc>
    e8873a5a:	892a                	mv	s2,a0
	memcpy( &reg_addr[ 1 ], inWritePtr, inWriteLen );
    e8873a5c:	f8b1460b          	ldd	a2,a1,(sp),0,4
	reg_addr[0] = inRegister;
    e8873a60:	1815540b          	sbia	s0,(a0),1,0
{
    e8873a64:	4481                	li	s1,0
	memcpy( &reg_addr[ 1 ], inWritePtr, inWriteLen );
    e8873a66:	13b080ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	while(try_time -- > 0)
    e8873a6a:	4419                	li	s0,6
        ret = CI2C_Write(fiic,apple_iic_addr,NULL,0,reg_addr,inWriteLen+1);
    e8873a6c:	00062a17          	auipc	s4,0x62
    e8873a70:	a94a0a13          	addi	s4,s4,-1388 # e88d5500 <apple_iic_addr>
    e8873a74:	00070a97          	auipc	s5,0x70
    e8873a78:	3dca8a93          	addi	s5,s5,988 # e88e3e50 <fiic>
		if (ret != TRUE)
    e8873a7c:	4b05                	li	s6,1
	while(try_time -- > 0)
    e8873a7e:	347d                	addiw	s0,s0,-1
    e8873a80:	0ff47413          	andi	s0,s0,255
    e8873a84:	e80d                	bnez	s0,e8873ab6 <lib_iic_write+0x7e>
	free( reg_addr );
    e8873a86:	854a                	mv	a0,s2
    e8873a88:	079080ef          	jal	ra,e887c300 <eLIBs_free>
	if (ret != TRUE)
    e8873a8c:	4785                	li	a5,1
   return 0;
    e8873a8e:	4501                	li	a0,0
	if (ret != TRUE)
    e8873a90:	00f48963          	beq	s1,a5,e8873aa2 <lib_iic_write+0x6a>
		printf("i2c write fail\n");
    e8873a94:	00059517          	auipc	a0,0x59
    e8873a98:	23c50513          	addi	a0,a0,572 # e88cccd0 <__PRETTY_FUNCTION__.11813+0x1c0>
    e8873a9c:	02b080ef          	jal	ra,e887c2c6 <eLIBs_printf>
		return 1;
    e8873aa0:	4505                	li	a0,1
}
    e8873aa2:	60a6                	ld	ra,72(sp)
    e8873aa4:	6406                	ld	s0,64(sp)
    e8873aa6:	74e2                	ld	s1,56(sp)
    e8873aa8:	7942                	ld	s2,48(sp)
    e8873aaa:	79a2                	ld	s3,40(sp)
    e8873aac:	7a02                	ld	s4,32(sp)
    e8873aae:	6ae2                	ld	s5,24(sp)
    e8873ab0:	6b42                	ld	s6,16(sp)
    e8873ab2:	6161                	addi	sp,sp,80
    e8873ab4:	8082                	ret
        ret = CI2C_Write(fiic,apple_iic_addr,NULL,0,reg_addr,inWriteLen+1);
    e8873ab6:	000a4583          	lbu	a1,0(s4)
    e8873aba:	000ab503          	ld	a0,0(s5)
    e8873abe:	87ce                	mv	a5,s3
    e8873ac0:	874a                	mv	a4,s2
    e8873ac2:	4681                	li	a3,0
    e8873ac4:	4601                	li	a2,0
    e8873ac6:	6b5070ef          	jal	ra,e887b97a <CI2C_Write>
    e8873aca:	84aa                	mv	s1,a0
		if (ret != TRUE)
    e8873acc:	fb650de3          	beq	a0,s6,e8873a86 <lib_iic_write+0x4e>
			Sleep(1);
    e8873ad0:	4505                	li	a0,1
    e8873ad2:	544080ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    e8873ad6:	b765                	j	e8873a7e <lib_iic_write+0x46>

00000000e8873ad8 <KnobUpdate>:
	return( ( ( ( inValue - inOldMin ) / ( inOldMax - inOldMin ) ) * ( inNewMax - inNewMin ) ) + inNewMin );
    e8873ad8:	0004b797          	auipc	a5,0x4b
    e8873adc:	3a07b587          	fld	fa1,928(a5) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e8873ae0:	00070797          	auipc	a5,0x70
    e8873ae4:	4b87b707          	fld	fa4,1208(a5) # e88e3f98 <gYPosition>
    e8873ae8:	02b77753          	fadd.d	fa4,fa4,fa1
    e8873aec:	f20007d3          	fmv.d.x	fa5,zero
    e8873af0:	00059797          	auipc	a5,0x59
    e8873af4:	db07b607          	fld	fa2,-592(a5) # e88cc8a0 <kCarPlayControllerClass.11452+0x178>
    e8873af8:	00059797          	auipc	a5,0x59
    e8873afc:	db07b687          	fld	fa3,-592(a5) # e88cc8a8 <kCarPlayControllerClass.11452+0x180>
{
    e8873b00:	1101                	addi	sp,sp,-32
	HIDKnobFillReport( report, gSelectButtonPressed, gHomeButtonPressed, gBackButtonPressed, x, y, gWheelPositionRelative );
    e8873b02:	00070697          	auipc	a3,0x70
    e8873b06:	48a68693          	addi	a3,a3,1162 # e88e3f8c <gWheelPositionRelative>
{
    e8873b0a:	ec06                	sd	ra,24(sp)
	return( ( ( ( inValue - inOldMin ) / ( inOldMax - inOldMin ) ) * ( inNewMax - inNewMin ) ) + inNewMin );
    e8873b0c:	1af77753          	fdiv.d	fa4,fa4,fa5
    e8873b10:	00070717          	auipc	a4,0x70
    e8873b14:	48073787          	fld	fa5,1152(a4) # e88e3f90 <gXPosition>
    e8873b18:	02b7f7d3          	fadd.d	fa5,fa5,fa1
	HIDKnobFillReport( report, gSelectButtonPressed, gHomeButtonPressed, gBackButtonPressed, x, y, gWheelPositionRelative );
    e8873b1c:	00068803          	lb	a6,0(a3)
    e8873b20:	0028                	addi	a0,sp,8
    e8873b22:	00070697          	auipc	a3,0x70
    e8873b26:	34a6c683          	lbu	a3,842(a3) # e88e3e6c <gBackButtonPressed>
    e8873b2a:	00070617          	auipc	a2,0x70
    e8873b2e:	35e64603          	lbu	a2,862(a2) # e88e3e88 <gHomeButtonPressed>
    e8873b32:	00070597          	auipc	a1,0x70
    e8873b36:	4465c583          	lbu	a1,1094(a1) # e88e3f78 <gSelectButtonPressed>
	return( ( ( ( inValue - inOldMin ) / ( inOldMax - inOldMin ) ) * ( inNewMax - inNewMin ) ) + inNewMin );
    e8873b3a:	6ac77743          	fmadd.d	fa4,fa4,fa2,fa3
	y = (int8_t) TranslateValue( gYPosition, kMinYPosition, kMinYPosition, -127, 127 );
    e8873b3e:	c20717d3          	fcvt.w.d	a5,fa4,rtz
	return( ( ( ( inValue - inOldMin ) / ( inOldMax - inOldMin ) ) * ( inNewMax - inNewMin ) ) + inNewMin );
    e8873b42:	00057717          	auipc	a4,0x57
    e8873b46:	51e73707          	fld	fa4,1310(a4) # e88cb060 <kAirPlayReceiverServerClass+0x1668>
    e8873b4a:	12e7f7d3          	fmul.d	fa5,fa5,fa4
	HIDKnobFillReport( report, gSelectButtonPressed, gHomeButtonPressed, gBackButtonPressed, x, y, gWheelPositionRelative );
    e8873b4e:	1c07a78b          	ext	a5,a5,7,0
	return( ( ( ( inValue - inOldMin ) / ( inOldMax - inOldMin ) ) * ( inNewMax - inNewMin ) ) + inNewMin );
    e8873b52:	6ac7f7c3          	fmadd.d	fa5,fa5,fa2,fa3
	x = (int8_t) TranslateValue( gXPosition, kMinXPosition, kMaxXPosition, -127, 127 );
    e8873b56:	c2079753          	fcvt.w.d	a4,fa5,rtz
	HIDKnobFillReport( report, gSelectButtonPressed, gHomeButtonPressed, gBackButtonPressed, x, y, gWheelPositionRelative );
    e8873b5a:	1c07270b          	ext	a4,a4,7,0
    e8873b5e:	f07ee0ef          	jal	ra,e8862a64 <HIDKnobFillReport>
	AirPlayReceiverSessionSendHIDReport( gAirPlaySession, gKnobUID, report, sizeof( report ) );
    e8873b62:	00070797          	auipc	a5,0x70
    e8873b66:	2fe78793          	addi	a5,a5,766 # e88e3e60 <gAirPlaySession>
    e8873b6a:	6388                	ld	a0,0(a5)
    e8873b6c:	0030                	addi	a2,sp,8
    e8873b6e:	4691                	li	a3,4
    e8873b70:	00070597          	auipc	a1,0x70
    e8873b74:	3545c583          	lbu	a1,852(a1) # e88e3ec4 <gKnobUID>
    e8873b78:	a5afb0ef          	jal	ra,e886edd2 <AirPlayReceiverSessionSendHIDReport>
}
    e8873b7c:	60e2                	ld	ra,24(sp)
    e8873b7e:	4501                	li	a0,0
    e8873b80:	6105                	addi	sp,sp,32
    e8873b82:	8082                	ret

00000000e8873b84 <asprintf>:
}

int asprintf(char **ret, const char *format, ...)
{
    e8873b84:	7159                	addi	sp,sp,-112
    e8873b86:	f84a                	sd	s2,48(sp)
    e8873b88:	fc91540b          	sdd	s0,s1,(sp),2,4
    e8873b8c:	ecbe                	sd	a5,88(sp)
    e8873b8e:	fc06                	sd	ra,56(sp)
    e8873b90:	e0b2                	sd	a2,64(sp)
    e8873b92:	e4b6                	sd	a3,72(sp)
    e8873b94:	e8ba                	sd	a4,80(sp)
    e8873b96:	f0c2                	sd	a6,96(sp)
    e8873b98:	f4c6                	sd	a7,104(sp)
    va_list ap;
    *ret = NULL;

    va_start(ap, format);
    e8873b9a:	009c                	addi	a5,sp,64
    *ret = NULL;
    e8873b9c:	00053023          	sd	zero,0(a0)
{
    e8873ba0:	892a                	mv	s2,a0
    int count = 1024;
    va_end(ap);

    if (count >= 0)
    {
        char* buffer = (char*)malloc(count + 1);
    e8873ba2:	40100513          	li	a0,1025
{
    e8873ba6:	e42e                	sd	a1,8(sp)
    va_start(ap, format);
    e8873ba8:	ec3e                	sd	a5,24(sp)
        char* buffer = (char*)malloc(count + 1);
    e8873baa:	4a5070ef          	jal	ra,e887b84e <my_malloc>
        if (buffer == NULL)
            return -1;
    e8873bae:	547d                	li	s0,-1
        if (buffer == NULL)
    e8873bb0:	c10d                	beqz	a0,e8873bd2 <asprintf+0x4e>

        va_start(ap, format);
        count = vsnprintf(buffer, count + 1, format, ap);
    e8873bb2:	65a2                	ld	a1,8(sp)
        va_start(ap, format);
    e8873bb4:	009c                	addi	a5,sp,64
        count = vsnprintf(buffer, count + 1, format, ap);
    e8873bb6:	86be                	mv	a3,a5
    e8873bb8:	862e                	mv	a2,a1
    e8873bba:	40100593          	li	a1,1025
    e8873bbe:	84aa                	mv	s1,a0
        va_start(ap, format);
    e8873bc0:	ec3e                	sd	a5,24(sp)
        count = vsnprintf(buffer, count + 1, format, ap);
    e8873bc2:	666080ef          	jal	ra,e887c228 <eLIBs_vsnprintf>
    e8873bc6:	842a                	mv	s0,a0
        va_end(ap);

        if (count < 0)
    e8873bc8:	00055c63          	bgez	a0,e8873be0 <asprintf+0x5c>
            free(buffer);
    e8873bcc:	8526                	mv	a0,s1
    e8873bce:	732080ef          	jal	ra,e887c300 <eLIBs_free>
        else
            *ret = buffer;
    }

    return count;
}
    e8873bd2:	8522                	mv	a0,s0
    e8873bd4:	70e2                	ld	ra,56(sp)
    e8873bd6:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8873bda:	7942                	ld	s2,48(sp)
    e8873bdc:	6165                	addi	sp,sp,112
    e8873bde:	8082                	ret
            *ret = buffer;
    e8873be0:	00993023          	sd	s1,0(s2)
    e8873be4:	b7fd                	j	e8873bd2 <asprintf+0x4e>

00000000e8873be6 <lib_carplay_init>:
S_AEC_PARAM *g_pAecParam;

static BOOL decoder_init = FALSE;

void lib_carplay_init(void *callback)
{
    e8873be6:	7119                	addi	sp,sp,-128
    e8873be8:	f4a6                	sd	s1,104(sp)
    e8873bea:	84aa                	mv	s1,a0
	int i,j;
	OSStatus			err;

	printf("lib_carplay_init\n");
    e8873bec:	00059517          	auipc	a0,0x59
    e8873bf0:	fac50513          	addi	a0,a0,-84 # e88ccb98 <__PRETTY_FUNCTION__.11813+0x88>
{
    e8873bf4:	fc86                	sd	ra,120(sp)
    e8873bf6:	f8a2                	sd	s0,112(sp)
    e8873bf8:	f0ca                	sd	s2,96(sp)
    e8873bfa:	ecce                	sd	s3,88(sp)
    e8873bfc:	e8d2                	sd	s4,80(sp)
    e8873bfe:	e4d6                	sd	s5,72(sp)
	printf("lib_carplay_init\n");
    e8873c00:	6c6080ef          	jal	ra,e887c2c6 <eLIBs_printf>
	uint8_t buf[20] = {0};
    e8873c04:	f002                	sd	zero,32(sp)
    e8873c06:	f402                	sd	zero,40(sp)
    e8873c08:	d802                	sw	zero,48(sp)
    fiic = CI2C_new();
    e8873c0a:	45f070ef          	jal	ra,e887b868 <CI2C_new>
    e8873c0e:	00070797          	auipc	a5,0x70
    e8873c12:	24a7b123          	sd	a0,578(a5) # e88e3e50 <fiic>
    pthread_mutex_init(&iic_mutex,NULL);
    e8873c16:	4581                	li	a1,0
    e8873c18:	00070517          	auipc	a0,0x70
    e8873c1c:	39050513          	addi	a0,a0,912 # e88e3fa8 <iic_mutex>
    e8873c20:	65b070ef          	jal	ra,e887ba7a <pthread_mutex_init>
	apple_iic_addr = (0x23);
    e8873c24:	00062417          	auipc	s0,0x62
    e8873c28:	8dc40413          	addi	s0,s0,-1828 # e88d5500 <apple_iic_addr>
	lib_iic_open();
    e8873c2c:	cffff0ef          	jal	ra,e887392a <lib_iic_open>
	apple_iic_addr = (0x23);
    e8873c30:	02300793          	li	a5,35
	if(lib_iic_read(0x00,buf,1) == 0)
    e8873c34:	4605                	li	a2,1
    e8873c36:	100c                	addi	a1,sp,32
    e8873c38:	4501                	li	a0,0
	apple_iic_addr = (0x23);
    e8873c3a:	00f40023          	sb	a5,0(s0)
	if(lib_iic_read(0x00,buf,1) == 0)
    e8873c3e:	d3dff0ef          	jal	ra,e887397a <lib_iic_read>
    e8873c42:	10051e63          	bnez	a0,e8873d5e <lib_carplay_init+0x178>
		printf("Device Addr 0x23,Version %d\n",buf[0]);
    e8873c46:	02014583          	lbu	a1,32(sp)
    e8873c4a:	00059517          	auipc	a0,0x59
    e8873c4e:	f6650513          	addi	a0,a0,-154 # e88ccbb0 <__PRETTY_FUNCTION__.11813+0xa0>
			printf("Device Addr 0x21,Version %d\n",buf[0]);
    e8873c52:	674080ef          	jal	ra,e887c2c6 <eLIBs_printf>
	lib_iic_close();
    e8873c56:	d03ff0ef          	jal	ra,e8873958 <lib_iic_close>

	static char ansi[]={0xC9,0xEE,0xDB,0xDA,0xCA,0xD0,0xC1,0xA2,0xCC,0xEC,0xCC,0xAB,0xBF,0xC6,0xBC,0xBC,0xD3,0xD0,0xCF,0xDE,0xB9,0xAB,0xCB,0xBE,0xB0,0xE6,0xC8,0xA8,0xCB,0xF9,0xD3,0xD0,0xCD,0xF5,0xCA,0xF7,0xC8,0xD9,0x00};
	static char unicode[]={0xF1,0x6D,0x33,0x57,0x02,0x5E,0xCB,0x7A,0x29,0x59,0x2A,0x59,0xD1,0x79,0x80,0x62,0x09,0x67,0x50,0x96,0x6C,0x51,0xF8,0x53,0x48,0x72,0x43,0x67,0x40,0x62,0x09,0x67,0x8B,0x73,0x11,0x68,0x63,0x83,0x00};
	static char utf8[]={0xBF,0xE6,0xB7,0xB1,0xE5,0x9C,0xB3,0xE5,0xB8,0x82,0xE7,0xAB,0x8B,0xE5,0xA4,0xA9,0xE5,0xA4,0xAA,0xE7,0xA7,0x91,0xE6,0x8A,0x80,0xE6,0x9C,0x89,0xE9,0x99,0x90,0xE5,0x85,0xAC,0xE5,0x8F,0xB8,0xE7,0x89,0x88,0xE6,0x9D,0x83,0xE6,0x89,0x80,0xE6,0x9C,0x89,0xE7,0x8E,0x8B,0xE6,0xA0,0x91,0xE8,0x8D,0xA3,0x00};
	
	carplay_callback = (fun_callback)callback;
    e8873c5a:	00070797          	auipc	a5,0x70
    e8873c5e:	1c97bb23          	sd	s1,470(a5) # e88e3e30 <carplay_callback>
	carplay_start = 0;
    e8873c62:	00070797          	auipc	a5,0x70
    e8873c66:	1e07a123          	sw	zero,482(a5) # e88e3e44 <carplay_start>
    startTime = GetTickCount();
    e8873c6a:	16f070ef          	jal	ra,e887b5d8 <GetTickCount>
    
	pthread_mutex_init(&airplay_mutex,NULL);
	
	AirPlayModeChangesInit( &gInitialModesRaw );
    e8873c6e:	00070917          	auipc	s2,0x70
    e8873c72:	22a90913          	addi	s2,s2,554 # e88e3e98 <gInitialModesRaw>
	pthread_mutex_init(&airplay_mutex,NULL);
    e8873c76:	4581                	li	a1,0
    e8873c78:	00070517          	auipc	a0,0x70
    e8873c7c:	17c50513          	addi	a0,a0,380 # e88e3df4 <airplay_mutex>
    e8873c80:	5fb070ef          	jal	ra,e887ba7a <pthread_mutex_init>

	in_tab = malloc(32);
    e8873c84:	00070417          	auipc	s0,0x70
    e8873c88:	32c40413          	addi	s0,s0,812 # e88e3fb0 <in_tab>
	AirPlayModeChangesInit( &gInitialModesRaw );
    e8873c8c:	02c00613          	li	a2,44
    e8873c90:	4581                	li	a1,0
    e8873c92:	854a                	mv	a0,s2
    e8873c94:	700080ef          	jal	ra,e887c394 <eLIBs_memset>
	out_tab = malloc(32);
    e8873c98:	00070497          	auipc	s1,0x70
    e8873c9c:	32048493          	addi	s1,s1,800 # e88e3fb8 <out_tab>
	in_tab = malloc(32);
    e8873ca0:	02000513          	li	a0,32
    e8873ca4:	3ab070ef          	jal	ra,e887b84e <my_malloc>
    e8873ca8:	e008                	sd	a0,0(s0)
	out_tab = malloc(32);
    e8873caa:	02000513          	li	a0,32
    e8873cae:	3a1070ef          	jal	ra,e887b84e <my_malloc>
    e8873cb2:	e088                	sd	a0,0(s1)
	outModeChanges->screen.takeConstraint 					= inScreenTake;
    e8873cb4:	3e800793          	li	a5,1000
	outModeChanges->screen.type								= inScreenType;
    e8873cb8:	07d00713          	li	a4,125
	outModeChanges->screen.takeConstraint 					= inScreenTake;
    e8873cbc:	1782                	slli	a5,a5,0x20
    e8873cbe:	3e878793          	addi	a5,a5,1000
	outModeChanges->screen.type								= inScreenType;
    e8873cc2:	170a                	slli	a4,a4,0x22
    e8873cc4:	0705                	addi	a4,a4,1
	outModeChanges->mainAudio.takeConstraint 				= inAudioTake;
    e8873cc6:	faf9570b          	sdd	a4,a5,(s2),1,4
	outModeChanges->screen.takeConstraint 					= inScreenTake;
    e8873cca:	00f93423          	sd	a5,8(s2)
	outModeChanges->speech 									= inSpeech;
    e8873cce:	57fd                	li	a5,-1
    e8873cd0:	02f93023          	sd	a5,32(s2)
	outModeChanges->screen.type								= inScreenType;
    e8873cd4:	00e93023          	sd	a4,0(s2)
	{
		_setChangeModesStruct( &gInitialModesRaw, 
			kAirPlayTransferType_Take,kAirPlayTransferPriority_UserInitiated,kAirPlayConstraint_Never,kAirPlayConstraint_Never,
			kAirPlayTransferType_Take,kAirPlayTransferPriority_UserInitiated,kAirPlayConstraint_Never,kAirPlayConstraint_Never,
			kAirPlayTriState_False,kAirPlaySpeechMode_None,kAirPlayTriState_False);
		gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e8873cd8:	0070                	addi	a2,sp,12
    e8873cda:	4581                	li	a1,0
    e8873cdc:	854a                	mv	a0,s2
	outModeChanges->turnByTurn 								= inTurnByTurn;
    e8873cde:	02f92423          	sw	a5,40(s2)
		gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e8873ce2:	ddafc0ef          	jal	ra,e88702bc <AirPlayCreateModesDictionary>
    e8873ce6:	00070797          	auipc	a5,0x70
    e8873cea:	1aa7b523          	sd	a0,426(a5) # e88e3e90 <gInitialModes>
		check_noerr( err );
	}
	
	RandomBytes(in_tab,32);
    e8873cee:	6008                	ld	a0,0(s0)
    e8873cf0:	02000593          	li	a1,32
	esTIME_GetTime(&current_time);
    e8873cf4:	4901                	li	s2,0
	RandomBytes(in_tab,32);
    e8873cf6:	baee90ef          	jal	ra,e885d0a4 <RandomBytes>
	for(i=0;i<20;i++)
    e8873cfa:	4a51                	li	s4,20
	esTIME_GetTime(&current_time);
    e8873cfc:	0028                	addi	a0,sp,8
    e8873cfe:	3d8080ef          	jal	ra,e887c0d6 <esTIME_GetTime>
		in_tab[i] = in_tab[i] + current_time.second + GetTickCount();
    e8873d02:	601c                	ld	a5,0(s0)
    e8873d04:	00a14983          	lbu	s3,10(sp)
    e8873d08:	8127ca8b          	lrbu	s5,a5,s2,0
    e8873d0c:	0cd070ef          	jal	ra,e887b5d8 <GetTickCount>
    e8873d10:	0135053b          	addw	a0,a0,s3
    e8873d14:	601c                	ld	a5,0(s0)
    e8873d16:	0155053b          	addw	a0,a0,s5
    e8873d1a:	0127d50b          	srb	a0,a5,s2,0
	for(i=0;i<20;i++)
    e8873d1e:	0905                	addi	s2,s2,1
    e8873d20:	ff4911e3          	bne	s2,s4,e8873d02 <lib_carplay_init+0x11c>
        uid_len = spinor_read_uid(uid_data);
    e8873d24:	1008                	addi	a0,sp,32
    e8873d26:	423010ef          	jal	ra,e8875948 <spinor_read_uid>
    e8873d2a:	892a                	mv	s2,a0
        if(uid_len > 0)
    e8873d2c:	10a05463          	blez	a0,e8873e34 <lib_carplay_init+0x24e>
            spinor_read_otp(256,otp);
    e8873d30:	080c                	addi	a1,sp,16
    e8873d32:	10000513          	li	a0,256
    e8873d36:	521010ef          	jal	ra,e8875a56 <spinor_read_otp>
            if(CheckLicense(1,gProductInfo,uid_data,uid_len,otp) > 0)
    e8873d3a:	0818                	addi	a4,sp,16
    e8873d3c:	86ca                	mv	a3,s2
    e8873d3e:	1010                	addi	a2,sp,32
    e8873d40:	00070597          	auipc	a1,0x70
    e8873d44:	1f858593          	addi	a1,a1,504 # e88e3f38 <gProductInfo>
    e8873d48:	4505                	li	a0,1
    e8873d4a:	6d3010ef          	jal	ra,e8875c1c <CheckLicense>
    e8873d4e:	02a05a63          	blez	a0,e8873d82 <lib_carplay_init+0x19c>
                memcpy(out_tab,in_tab,16);
    e8873d52:	600c                	ld	a1,0(s0)
    e8873d54:	6088                	ld	a0,0(s1)
    e8873d56:	4641                	li	a2,16
    e8873d58:	648080ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
                goto exit;
    e8873d5c:	a8e1                	j	e8873e34 <lib_carplay_init+0x24e>
		apple_iic_addr = (0x21);
    e8873d5e:	02100793          	li	a5,33
		if(lib_iic_read(0x00,buf,1) == 0)
    e8873d62:	4605                	li	a2,1
    e8873d64:	100c                	addi	a1,sp,32
    e8873d66:	4501                	li	a0,0
		apple_iic_addr = (0x21);
    e8873d68:	00f40023          	sb	a5,0(s0)
		if(lib_iic_read(0x00,buf,1) == 0)
    e8873d6c:	c0fff0ef          	jal	ra,e887397a <lib_iic_read>
    e8873d70:	ee0513e3          	bnez	a0,e8873c56 <lib_carplay_init+0x70>
			printf("Device Addr 0x21,Version %d\n",buf[0]);
    e8873d74:	02014583          	lbu	a1,32(sp)
    e8873d78:	00059517          	auipc	a0,0x59
    e8873d7c:	e5850513          	addi	a0,a0,-424 # e88ccbd0 <__PRETTY_FUNCTION__.11813+0xc0>
    e8873d80:	bdc9                	j	e8873c52 <lib_carplay_init+0x6c>
            else if(CheckLicense(2,gProductInfo,uid_data,uid_len,otp) > 0)
    e8873d82:	0818                	addi	a4,sp,16
    e8873d84:	86ca                	mv	a3,s2
    e8873d86:	1010                	addi	a2,sp,32
    e8873d88:	00070597          	auipc	a1,0x70
    e8873d8c:	1b058593          	addi	a1,a1,432 # e88e3f38 <gProductInfo>
    e8873d90:	4509                	li	a0,2
    e8873d92:	68b010ef          	jal	ra,e8875c1c <CheckLicense>
    e8873d96:	faa04ee3          	bgtz	a0,e8873d52 <lib_carplay_init+0x16c>
            else if(CheckLicense(3,gProductInfo,uid_data,uid_len,otp) > 0)
    e8873d9a:	0818                	addi	a4,sp,16
    e8873d9c:	86ca                	mv	a3,s2
    e8873d9e:	1010                	addi	a2,sp,32
    e8873da0:	00070597          	auipc	a1,0x70
    e8873da4:	19858593          	addi	a1,a1,408 # e88e3f38 <gProductInfo>
    e8873da8:	450d                	li	a0,3
    e8873daa:	673010ef          	jal	ra,e8875c1c <CheckLicense>
    e8873dae:	faa042e3          	bgtz	a0,e8873d52 <lib_carplay_init+0x16c>
            else if(CheckLicense(4,gProductInfo,uid_data,uid_len,otp) > 0)
    e8873db2:	0818                	addi	a4,sp,16
    e8873db4:	86ca                	mv	a3,s2
    e8873db6:	1010                	addi	a2,sp,32
    e8873db8:	00070597          	auipc	a1,0x70
    e8873dbc:	18058593          	addi	a1,a1,384 # e88e3f38 <gProductInfo>
    e8873dc0:	4511                	li	a0,4
    e8873dc2:	65b010ef          	jal	ra,e8875c1c <CheckLicense>
    e8873dc6:	f8a046e3          	bgtz	a0,e8873d52 <lib_carplay_init+0x16c>
            spinor_read_otp(128,otp);
    e8873dca:	080c                	addi	a1,sp,16
    e8873dcc:	08000513          	li	a0,128
    e8873dd0:	487010ef          	jal	ra,e8875a56 <spinor_read_otp>
            if(CheckLicense(1,gProductInfo,uid_data,uid_len,otp) > 0)
    e8873dd4:	0818                	addi	a4,sp,16
    e8873dd6:	86ca                	mv	a3,s2
    e8873dd8:	1010                	addi	a2,sp,32
    e8873dda:	00070597          	auipc	a1,0x70
    e8873dde:	15e58593          	addi	a1,a1,350 # e88e3f38 <gProductInfo>
    e8873de2:	4505                	li	a0,1
    e8873de4:	639010ef          	jal	ra,e8875c1c <CheckLicense>
    e8873de8:	f6a045e3          	bgtz	a0,e8873d52 <lib_carplay_init+0x16c>
            else if(CheckLicense(2,gProductInfo,uid_data,uid_len,otp) > 0)
    e8873dec:	0818                	addi	a4,sp,16
    e8873dee:	86ca                	mv	a3,s2
    e8873df0:	1010                	addi	a2,sp,32
    e8873df2:	00070597          	auipc	a1,0x70
    e8873df6:	14658593          	addi	a1,a1,326 # e88e3f38 <gProductInfo>
    e8873dfa:	4509                	li	a0,2
    e8873dfc:	621010ef          	jal	ra,e8875c1c <CheckLicense>
    e8873e00:	f4a049e3          	bgtz	a0,e8873d52 <lib_carplay_init+0x16c>
            else if(CheckLicense(3,gProductInfo,uid_data,uid_len,otp) > 0)
    e8873e04:	0818                	addi	a4,sp,16
    e8873e06:	86ca                	mv	a3,s2
    e8873e08:	1010                	addi	a2,sp,32
    e8873e0a:	00070597          	auipc	a1,0x70
    e8873e0e:	12e58593          	addi	a1,a1,302 # e88e3f38 <gProductInfo>
    e8873e12:	450d                	li	a0,3
    e8873e14:	609010ef          	jal	ra,e8875c1c <CheckLicense>
    e8873e18:	f2a04de3          	bgtz	a0,e8873d52 <lib_carplay_init+0x16c>
            else if(CheckLicense(4,gProductInfo,uid_data,uid_len,otp) > 0)
    e8873e1c:	0818                	addi	a4,sp,16
    e8873e1e:	86ca                	mv	a3,s2
    e8873e20:	1010                	addi	a2,sp,32
    e8873e22:	00070597          	auipc	a1,0x70
    e8873e26:	11658593          	addi	a1,a1,278 # e88e3f38 <gProductInfo>
    e8873e2a:	4511                	li	a0,4
    e8873e2c:	5f1010ef          	jal	ra,e8875c1c <CheckLicense>
    e8873e30:	f2a041e3          	bgtz	a0,e8873d52 <lib_carplay_init+0x16c>
		gTouchUID = gNextDeviceUID++;
    e8873e34:	00070717          	auipc	a4,0x70
    e8873e38:	09270713          	addi	a4,a4,146 # e88e3ec6 <gNextDeviceUID>
    e8873e3c:	00074783          	lbu	a5,0(a4)
	/*gRightHandDrive = CFDictionaryCreateMutable( NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
	CFDictionarySetBoolean( gRightHandDrive, CFSTR( kAirPlayKey_RightHandDrive ), true );*/
	
	// Set up interaction with the platform UI framework.
	
	err = _SetupUI();
    e8873e40:	c602                	sw	zero,12(sp)
		gTouchUID = gNextDeviceUID++;
    e8873e42:	00070697          	auipc	a3,0x70
    e8873e46:	12f68c23          	sb	a5,312(a3) # e88e3f7a <gTouchUID>
    e8873e4a:	0017869b          	addiw	a3,a5,1
		gKnobUID = gNextDeviceUID++;
    e8873e4e:	00070617          	auipc	a2,0x70
    e8873e52:	06d60b23          	sb	a3,118(a2) # e88e3ec4 <gKnobUID>
    e8873e56:	0027869b          	addiw	a3,a5,2
		gMediaButtonUID = gNextDeviceUID++;
    e8873e5a:	00070617          	auipc	a2,0x70
    e8873e5e:	06d605a3          	sb	a3,107(a2) # e88e3ec5 <gMediaButtonUID>
		gTelephonyUID = gNextDeviceUID++;
    e8873e62:	0047869b          	addiw	a3,a5,4
		gMediaButtonUID = gNextDeviceUID++;
    e8873e66:	278d                	addiw	a5,a5,3
		gTelephonyUID = gNextDeviceUID++;
    e8873e68:	00d70023          	sb	a3,0(a4)
    e8873e6c:	00070717          	auipc	a4,0x70
    e8873e70:	10f706a3          	sb	a5,269(a4) # e88e3f79 <gTelephonyUID>
	
	err = _setupHIDDevices();
	require_noerr( err, exit );
	
	// Start AirPlay in a separate thread since the demo app needs to own the main thread
	AudioOutputInit();
    e8873e74:	6de010ef          	jal	ra,e8875552 <AudioOutputInit>

	pthread_attr_t attr;
	pthread_attr_init(&attr);
    e8873e78:	1008                	addi	a0,sp,32
    e8873e7a:	399070ef          	jal	ra,e887ba12 <pthread_attr_init>
    pthread_attr_setstacksize(&attr,0x4000);
    e8873e7e:	6591                	lui	a1,0x4
    e8873e80:	1008                	addi	a0,sp,32
    e8873e82:	3a9070ef          	jal	ra,e887ba2a <pthread_attr_setstacksize>
	err = pthread_create( &gAirPlayThread, &attr, _AirPlayThread, NULL );
    e8873e86:	100c                	addi	a1,sp,32
    e8873e88:	4681                	li	a3,0
    e8873e8a:	fffff617          	auipc	a2,0xfffff
    e8873e8e:	05a60613          	addi	a2,a2,90 # e8872ee4 <_AirPlayThread>
    e8873e92:	00070517          	auipc	a0,0x70
    e8873e96:	fd650513          	addi	a0,a0,-42 # e88e3e68 <gAirPlayThread>
    e8873e9a:	3ab070ef          	jal	ra,e887ba44 <pthread_create>
    e8873e9e:	c62a                	sw	a0,12(sp)
	pthread_attr_destroy(&attr);
    e8873ea0:	1008                	addi	a0,sp,32
    e8873ea2:	385070ef          	jal	ra,e887ba26 <pthread_attr_destroy>
	
	_RunUI();
	
exit:
	return;
}
    e8873ea6:	7446                	ld	s0,112(sp)
    e8873ea8:	70e6                	ld	ra,120(sp)
    e8873eaa:	74a6                	ld	s1,104(sp)
    e8873eac:	7906                	ld	s2,96(sp)
    e8873eae:	69e6                	ld	s3,88(sp)
    e8873eb0:	6a46                	ld	s4,80(sp)
    e8873eb2:	6aa6                	ld	s5,72(sp)
    e8873eb4:	6109                	addi	sp,sp,128
    e8873eb6:	8082                	ret

00000000e8873eb8 <lib_carplay_start>:

void lib_carplay_start(void)
{
    e8873eb8:	7139                	addi	sp,sp,-64
	OSStatus				err;

	printf("lib_carplay_start\n");
    e8873eba:	00059517          	auipc	a0,0x59
    e8873ebe:	da650513          	addi	a0,a0,-602 # e88ccc60 <__PRETTY_FUNCTION__.11813+0x150>
{
    e8873ec2:	fc06                	sd	ra,56(sp)
    e8873ec4:	f422                	sd	s0,40(sp)
    e8873ec6:	f826                	sd	s1,48(sp)
	printf("lib_carplay_start\n");
    e8873ec8:	3fe080ef          	jal	ra,e887c2c6 <eLIBs_printf>

    if(!carplay_show)
    e8873ecc:	00070797          	auipc	a5,0x70
    e8873ed0:	f7478793          	addi	a5,a5,-140 # e88e3e40 <carplay_show>
    e8873ed4:	4398                	lw	a4,0(a5)
    e8873ed6:	ef0d                	bnez	a4,e8873f10 <lib_carplay_start+0x58>
    {
        carplay_show = 1;
    e8873ed8:	4705                	li	a4,1
    e8873eda:	c398                	sw	a4,0(a5)
        lock_airplay();
    e8873edc:	df5fe0ef          	jal	ra,e8872cd0 <lock_airplay>
    	if(gAirPlaySession)
    e8873ee0:	00070417          	auipc	s0,0x70
    e8873ee4:	f8040413          	addi	s0,s0,-128 # e88e3e60 <gAirPlaySession>
    e8873ee8:	6008                	ld	a0,0(s0)
    e8873eea:	c10d                	beqz	a0,e8873f0c <lib_carplay_start+0x54>
    	{
    		AirPlayReceiverSessionUntakeScreen(gAirPlaySession, NULL, NULL, NULL);
    e8873eec:	4681                	li	a3,0
    e8873eee:	4609                	li	a2,2
    e8873ef0:	4585                	li	a1,1
    e8873ef2:	e002                	sd	zero,0(sp)
    e8873ef4:	4881                	li	a7,0
    e8873ef6:	4801                	li	a6,0
    e8873ef8:	4781                	li	a5,0
    e8873efa:	4701                	li	a4,0
    e8873efc:	c56fa0ef          	jal	ra,e886e352 <AirPlayReceiverSessionChangeResourceMode>
    		AirPlayReceiverSessionRequestUI(gAirPlaySession,NULL,NULL,NULL);
    e8873f00:	6008                	ld	a0,0(s0)
    e8873f02:	4681                	li	a3,0
    e8873f04:	4601                	li	a2,0
    e8873f06:	4581                	li	a1,0
    e8873f08:	d31fa0ef          	jal	ra,e886ec38 <AirPlayReceiverSessionRequestUI>
    	}
        unlock_airplay();
    e8873f0c:	dd1fe0ef          	jal	ra,e8872cdc <unlock_airplay>
    }
	
	if(!carplay_start)
    e8873f10:	00070797          	auipc	a5,0x70
    e8873f14:	f3478793          	addi	a5,a5,-204 # e88e3e44 <carplay_start>
    e8873f18:	4398                	lw	a4,0(a5)
    e8873f1a:	843e                	mv	s0,a5
    e8873f1c:	e71d                	bnez	a4,e8873f4a <lib_carplay_start+0x92>
	{
    	//AudioOutputStart();
    	//DecoderInit(gVideoWidth,gVideoHeight);
        
        lock_airplay();
    e8873f1e:	db3fe0ef          	jal	ra,e8872cd0 <lock_airplay>
    	if(gAirPlaySession)
    e8873f22:	00070797          	auipc	a5,0x70
    e8873f26:	f3e78793          	addi	a5,a5,-194 # e88e3e60 <gAirPlaySession>
    e8873f2a:	6388                	ld	a0,0(a5)
    e8873f2c:	c919                	beqz	a0,e8873f42 <lib_carplay_start+0x8a>
    	{
    		AirPlayReceiverSessionUnborrowMainAudio(gAirPlaySession, NULL, NULL, NULL);
    e8873f2e:	e002                	sd	zero,0(sp)
    e8873f30:	4881                	li	a7,0
    e8873f32:	4801                	li	a6,0
    e8873f34:	4781                	li	a5,0
    e8873f36:	4701                	li	a4,0
    e8873f38:	4681                	li	a3,0
    e8873f3a:	4611                	li	a2,4
    e8873f3c:	4589                	li	a1,2
    e8873f3e:	c14fa0ef          	jal	ra,e886e352 <AirPlayReceiverSessionChangeResourceMode>
    	}
        unlock_airplay();
    e8873f42:	d9bfe0ef          	jal	ra,e8872cdc <unlock_airplay>
	    carplay_start = 1;
    e8873f46:	4785                	li	a5,1
    e8873f48:	c01c                	sw	a5,0(s0)
	}
    
    if(!screen_steam)
    e8873f4a:	00070797          	auipc	a5,0x70
    e8873f4e:	07678793          	addi	a5,a5,118 # e88e3fc0 <screen_steam>
    e8873f52:	4398                	lw	a4,0(a5)
    e8873f54:	843e                	mv	s0,a5
    e8873f56:	cb29                	beqz	a4,e8873fa8 <lib_carplay_start+0xf0>
    			Sleep(10);
    		}
        }
    }

	if(gInitialModes)
    e8873f58:	00070797          	auipc	a5,0x70
    e8873f5c:	f3878793          	addi	a5,a5,-200 # e88e3e90 <gInitialModes>
    e8873f60:	6388                	ld	a0,0(a5)
    e8873f62:	843e                	mv	s0,a5
    e8873f64:	e135                	bnez	a0,e8873fc8 <lib_carplay_start+0x110>
	outModeChanges->screen.type								= inScreenType;
    e8873f66:	07d00793          	li	a5,125
    e8873f6a:	178a                	slli	a5,a5,0x22
    e8873f6c:	00278713          	addi	a4,a5,2
	outModeChanges->mainAudio.type							= inAudioType;
    e8873f70:	0791                	addi	a5,a5,4
	outModeChanges->screen.type								= inScreenType;
    e8873f72:	00070517          	auipc	a0,0x70
    e8873f76:	f2650513          	addi	a0,a0,-218 # e88e3e98 <gInitialModesRaw>
	outModeChanges->mainAudio.type							= inAudioType;
    e8873f7a:	e91c                	sd	a5,16(a0)
	outModeChanges->mainAudio.takeConstraint 				= inAudioTake;
    e8873f7c:	00070797          	auipc	a5,0x70
    e8873f80:	f207ba23          	sd	zero,-204(a5) # e88e3eb0 <gInitialModesRaw+0x18>
	outModeChanges->screen.type								= inScreenType;
    e8873f84:	e118                	sd	a4,0(a0)
	outModeChanges->speech 									= inSpeech;
    e8873f86:	57fd                	li	a5,-1
	//AirPlayModeChangesInit( &gInitialModesRaw );
	_setChangeModesStruct( &gInitialModesRaw, 
		kAirPlayTransferType_Untake,kAirPlayTransferPriority_UserInitiated,kAirPlayConstraint_NotApplicable,kAirPlayConstraint_NotApplicable,
		kAirPlayTransferType_Unborrow,kAirPlayTransferPriority_UserInitiated,kAirPlayConstraint_NotApplicable,kAirPlayConstraint_NotApplicable,
		kAirPlayTriState_False,kAirPlaySpeechMode_None,kAirPlayTriState_False);
	gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e8873f88:	0870                	addi	a2,sp,28
	outModeChanges->speech 									= inSpeech;
    e8873f8a:	f11c                	sd	a5,32(a0)
	gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e8873f8c:	4581                	li	a1,0
	outModeChanges->screen.takeConstraint 					= inScreenTake;
    e8873f8e:	00070717          	auipc	a4,0x70
    e8873f92:	f0073923          	sd	zero,-238(a4) # e88e3ea0 <gInitialModesRaw+0x8>
	outModeChanges->turnByTurn 								= inTurnByTurn;
    e8873f96:	d51c                	sw	a5,40(a0)
	gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e8873f98:	b24fc0ef          	jal	ra,e88702bc <AirPlayCreateModesDictionary>
    e8873f9c:	e008                	sd	a0,0(s0)
}
    e8873f9e:	70e2                	ld	ra,56(sp)
    e8873fa0:	7422                	ld	s0,40(sp)
    e8873fa2:	74c2                	ld	s1,48(sp)
    e8873fa4:	6121                	addi	sp,sp,64
    e8873fa6:	8082                	ret
        if(gAirPlaySession)
    e8873fa8:	00070797          	auipc	a5,0x70
    e8873fac:	eb878793          	addi	a5,a5,-328 # e88e3e60 <gAirPlaySession>
    e8873fb0:	639c                	ld	a5,0(a5)
    e8873fb2:	12c00493          	li	s1,300
    e8873fb6:	d3cd                	beqz	a5,e8873f58 <lib_carplay_start+0xa0>
    			Sleep(10);
    e8873fb8:	4505                	li	a0,1
    e8873fba:	34fd                	addiw	s1,s1,-1
    e8873fbc:	05a080ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    		for(i=0;i<300;i++)
    e8873fc0:	dcc1                	beqz	s1,e8873f58 <lib_carplay_start+0xa0>
    			if(screen_steam)
    e8873fc2:	401c                	lw	a5,0(s0)
    e8873fc4:	dbf5                	beqz	a5,e8873fb8 <lib_carplay_start+0x100>
    e8873fc6:	bf49                	j	e8873f58 <lib_carplay_start+0xa0>
		CFReleaseNullSafe( gInitialModes );
    e8873fc8:	982d30ef          	jal	ra,e884714a <CFRelease>
		gInitialModes = NULL;
    e8873fcc:	00070797          	auipc	a5,0x70
    e8873fd0:	ec07b223          	sd	zero,-316(a5) # e88e3e90 <gInitialModes>
    e8873fd4:	bf49                	j	e8873f66 <lib_carplay_start+0xae>

00000000e8873fd6 <lib_carplay_start_audio>:

void lib_carplay_start_audio(void)
{
    e8873fd6:	7139                	addi	sp,sp,-64
	OSStatus				err;
    
	printf("lib_carplay_start_audio\n");
    e8873fd8:	00059517          	auipc	a0,0x59
    e8873fdc:	ca050513          	addi	a0,a0,-864 # e88ccc78 <__PRETTY_FUNCTION__.11813+0x168>
{
    e8873fe0:	f826                	sd	s1,48(sp)
    e8873fe2:	fc06                	sd	ra,56(sp)
    e8873fe4:	f422                	sd	s0,40(sp)
	printf("lib_carplay_start_audio\n");
    e8873fe6:	2e0080ef          	jal	ra,e887c2c6 <eLIBs_printf>
    
	if(!carplay_start)
    e8873fea:	00070497          	auipc	s1,0x70
    e8873fee:	e7648493          	addi	s1,s1,-394 # e88e3e60 <gAirPlaySession>
    e8873ff2:	00070797          	auipc	a5,0x70
    e8873ff6:	e5278793          	addi	a5,a5,-430 # e88e3e44 <carplay_start>
    e8873ffa:	4398                	lw	a4,0(a5)
    e8873ffc:	e705                	bnez	a4,e8874024 <lib_carplay_start_audio+0x4e>
    e8873ffe:	843e                	mv	s0,a5
	{
    	//AudioOutputStart();
    	//DecoderInit(gVideoWidth,gVideoHeight);
        
        lock_airplay();
    e8874000:	cd1fe0ef          	jal	ra,e8872cd0 <lock_airplay>
    	if(gAirPlaySession)
    e8874004:	6088                	ld	a0,0(s1)
    e8874006:	c919                	beqz	a0,e887401c <lib_carplay_start_audio+0x46>
    	{
    		AirPlayReceiverSessionUnborrowMainAudio(gAirPlaySession, NULL, NULL, NULL);
    e8874008:	e002                	sd	zero,0(sp)
    e887400a:	4881                	li	a7,0
    e887400c:	4801                	li	a6,0
    e887400e:	4781                	li	a5,0
    e8874010:	4701                	li	a4,0
    e8874012:	4681                	li	a3,0
    e8874014:	4611                	li	a2,4
    e8874016:	4589                	li	a1,2
    e8874018:	b3afa0ef          	jal	ra,e886e352 <AirPlayReceiverSessionChangeResourceMode>
    	}
        unlock_airplay();
    e887401c:	cc1fe0ef          	jal	ra,e8872cdc <unlock_airplay>
        
	    carplay_start = 1;
    e8874020:	4785                	li	a5,1
    e8874022:	c01c                	sw	a5,0(s0)
	}
    
	if(gAirPlaySession)
    e8874024:	609c                	ld	a5,0(s1)
    e8874026:	c3a9                	beqz	a5,e8874068 <lib_carplay_start_audio+0x92>
	{
		int i;
        
        lock_airplay();
    e8874028:	ca9fe0ef          	jal	ra,e8872cd0 <lock_airplay>
        if(gAirPlaySession)
    e887402c:	6088                	ld	a0,0(s1)
    e887402e:	cd11                	beqz	a0,e887404a <lib_carplay_start_audio+0x74>
        {
    		AirPlayReceiverSessionTakeScreen(gAirPlaySession, kAirPlayTransferPriority_UserInitiated, kAirPlayConstraint_UserInitiated,kAirPlayConstraint_Anytime, NULL, NULL, NULL);
    e8874030:	e002                	sd	zero,0(sp)
    e8874032:	4881                	li	a7,0
    e8874034:	4801                	li	a6,0
    e8874036:	06400793          	li	a5,100
    e887403a:	1f400713          	li	a4,500
    e887403e:	1f400693          	li	a3,500
    e8874042:	4605                	li	a2,1
    e8874044:	4585                	li	a1,1
    e8874046:	b0cfa0ef          	jal	ra,e886e352 <AirPlayReceiverSessionChangeResourceMode>
		    //AirPlayReceiverSessionTakeMainAudio(gAirPlaySession, kAirPlayTransferPriority_UserInitiated, kAirPlayConstraint_Never,kAirPlayConstraint_Never, NULL, NULL, NULL);
        }
        unlock_airplay();
    e887404a:	c93fe0ef          	jal	ra,e8872cdc <unlock_airplay>
    e887404e:	12c00413          	li	s0,300
        
		for(i=0;i<300;i++)
		{
			if(!screen_steam)
    e8874052:	00070497          	auipc	s1,0x70
    e8874056:	f6e48493          	addi	s1,s1,-146 # e88e3fc0 <screen_steam>
    e887405a:	409c                	lw	a5,0(s1)
    e887405c:	c791                	beqz	a5,e8874068 <lib_carplay_start_audio+0x92>
			{
				break;
			}
			Sleep(10);
    e887405e:	4505                	li	a0,1
    e8874060:	347d                	addiw	s0,s0,-1
    e8874062:	7b5070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		for(i=0;i<300;i++)
    e8874066:	f875                	bnez	s0,e887405a <lib_carplay_start_audio+0x84>
		}
	}
    carplay_show = 0;
    e8874068:	00070797          	auipc	a5,0x70
    e887406c:	dc07ac23          	sw	zero,-552(a5) # e88e3e40 <carplay_show>

	if(gInitialModes)
    e8874070:	00070797          	auipc	a5,0x70
    e8874074:	e2078793          	addi	a5,a5,-480 # e88e3e90 <gInitialModes>
    e8874078:	6388                	ld	a0,0(a5)
    e887407a:	843e                	mv	s0,a5
    e887407c:	c519                	beqz	a0,e887408a <lib_carplay_start_audio+0xb4>
	{
		CFReleaseNullSafe( gInitialModes );
    e887407e:	8ccd30ef          	jal	ra,e884714a <CFRelease>
		gInitialModes = NULL;
    e8874082:	00070797          	auipc	a5,0x70
    e8874086:	e007b723          	sd	zero,-498(a5) # e88e3e90 <gInitialModes>
	outModeChanges->screen.type								= inScreenType;
    e887408a:	07d00793          	li	a5,125
    e887408e:	178a                	slli	a5,a5,0x22
    e8874090:	00178713          	addi	a4,a5,1
    e8874094:	00070517          	auipc	a0,0x70
    e8874098:	e0450513          	addi	a0,a0,-508 # e88e3e98 <gInitialModesRaw>
    e887409c:	e118                	sd	a4,0(a0)
	outModeChanges->screen.takeConstraint 					= inScreenTake;
    e887409e:	1f478713          	addi	a4,a5,500
	outModeChanges->mainAudio.type							= inAudioType;
    e88740a2:	0791                	addi	a5,a5,4
    e88740a4:	e91c                	sd	a5,16(a0)
	outModeChanges->mainAudio.takeConstraint 				= inAudioTake;
    e88740a6:	00070797          	auipc	a5,0x70
    e88740aa:	e007b523          	sd	zero,-502(a5) # e88e3eb0 <gInitialModesRaw+0x18>
	//AirPlayModeChangesInit( &gInitialModesRaw );
	_setChangeModesStruct( &gInitialModesRaw, 
		kAirPlayTransferType_Take,kAirPlayTransferPriority_UserInitiated,kAirPlayConstraint_UserInitiated,kAirPlayConstraint_UserInitiated,
		kAirPlayTransferType_Unborrow,kAirPlayTransferPriority_UserInitiated,kAirPlayConstraint_NotApplicable,kAirPlayConstraint_NotApplicable,
		kAirPlayTriState_False,kAirPlaySpeechMode_None,kAirPlayTriState_False);
	gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e88740ae:	0870                	addi	a2,sp,28
	outModeChanges->speech 									= inSpeech;
    e88740b0:	57fd                	li	a5,-1
	outModeChanges->screen.takeConstraint 					= inScreenTake;
    e88740b2:	e518                	sd	a4,8(a0)
	outModeChanges->speech 									= inSpeech;
    e88740b4:	f11c                	sd	a5,32(a0)
	gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e88740b6:	4581                	li	a1,0
	outModeChanges->turnByTurn 								= inTurnByTurn;
    e88740b8:	d51c                	sw	a5,40(a0)
	gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e88740ba:	a02fc0ef          	jal	ra,e88702bc <AirPlayCreateModesDictionary>
    e88740be:	e008                	sd	a0,0(s0)
}
    e88740c0:	70e2                	ld	ra,56(sp)
    e88740c2:	7422                	ld	s0,40(sp)
    e88740c4:	74c2                	ld	s1,48(sp)
    e88740c6:	6121                	addi	sp,sp,64
    e88740c8:	8082                	ret

00000000e88740ca <lib_carplay_stop>:

void lib_carplay_stop(void)
{
    e88740ca:	7139                	addi	sp,sp,-64
	OSStatus				err;
	
	printf("lib_carplay_stop\n");
    e88740cc:	00059517          	auipc	a0,0x59
    e88740d0:	bcc50513          	addi	a0,a0,-1076 # e88ccc98 <__PRETTY_FUNCTION__.11813+0x188>
{
    e88740d4:	fc91540b          	sdd	s0,s1,(sp),2,4
    e88740d8:	fc06                	sd	ra,56(sp)
    e88740da:	f84a                	sd	s2,48(sp)
	printf("lib_carplay_stop\n");
    e88740dc:	1ea080ef          	jal	ra,e887c2c6 <eLIBs_printf>
    
	if(gInitialModes)
    e88740e0:	00070797          	auipc	a5,0x70
    e88740e4:	db078793          	addi	a5,a5,-592 # e88e3e90 <gInitialModes>
    e88740e8:	6388                	ld	a0,0(a5)
    e88740ea:	843e                	mv	s0,a5
    e88740ec:	c519                	beqz	a0,e88740fa <lib_carplay_stop+0x30>
	{
		CFReleaseNullSafe( gInitialModes );
    e88740ee:	85cd30ef          	jal	ra,e884714a <CFRelease>
		gInitialModes = NULL;
    e88740f2:	00070797          	auipc	a5,0x70
    e88740f6:	d807bf23          	sd	zero,-610(a5) # e88e3e90 <gInitialModes>
	outModeChanges->screen.type								= inScreenType;
    e88740fa:	07d00793          	li	a5,125
    e88740fe:	178a                	slli	a5,a5,0x22
    e8874100:	00178713          	addi	a4,a5,1
    e8874104:	00070517          	auipc	a0,0x70
    e8874108:	d9450513          	addi	a0,a0,-620 # e88e3e98 <gInitialModesRaw>
    e887410c:	e118                	sd	a4,0(a0)
	outModeChanges->screen.takeConstraint 					= inScreenTake;
    e887410e:	1f478713          	addi	a4,a5,500
	outModeChanges->mainAudio.type							= inAudioType;
    e8874112:	078d                	addi	a5,a5,3
	outModeChanges->mainAudio.takeConstraint 				= inAudioTake;
    e8874114:	fae5578b          	sdd	a5,a4,(a0),1,4
	outModeChanges->speech 									= inSpeech;
    e8874118:	57fd                	li	a5,-1
    e887411a:	f11c                	sd	a5,32(a0)
	outModeChanges->screen.takeConstraint 					= inScreenTake;
    e887411c:	e518                	sd	a4,8(a0)
	
	_setChangeModesStruct( &gInitialModesRaw, 
		kAirPlayTransferType_Take,kAirPlayTransferPriority_UserInitiated,kAirPlayConstraint_UserInitiated,kAirPlayConstraint_UserInitiated,
		kAirPlayTransferType_Borrow,kAirPlayTransferPriority_UserInitiated,kAirPlayConstraint_UserInitiated,kAirPlayConstraint_UserInitiated,
		kAirPlayTriState_False,kAirPlaySpeechMode_None,kAirPlayTriState_False);
	gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e887411e:	0870                	addi	a2,sp,28
    e8874120:	4581                	li	a1,0
	outModeChanges->turnByTurn 								= inTurnByTurn;
    e8874122:	d51c                	sw	a5,40(a0)
	gInitialModes = AirPlayCreateModesDictionary( &gInitialModesRaw, NULL, &err );
    e8874124:	998fc0ef          	jal	ra,e88702bc <AirPlayCreateModesDictionary>
    e8874128:	e008                	sd	a0,0(s0)

	if(gAirPlaySession)
    e887412a:	00070417          	auipc	s0,0x70
    e887412e:	d3640413          	addi	s0,s0,-714 # e88e3e60 <gAirPlaySession>
    e8874132:	601c                	ld	a5,0(s0)
    e8874134:	c7ad                	beqz	a5,e887419e <lib_carplay_stop+0xd4>
	{
        lock_airplay();
    e8874136:	b9bfe0ef          	jal	ra,e8872cd0 <lock_airplay>
        if(gAirPlaySession)
    e887413a:	6008                	ld	a0,0(s0)
    e887413c:	c91d                	beqz	a0,e8874172 <lib_carplay_stop+0xa8>
        {
    		AirPlayReceiverSessionTakeScreen(gAirPlaySession, kAirPlayTransferPriority_UserInitiated, kAirPlayConstraint_UserInitiated,kAirPlayConstraint_Anytime, NULL, NULL, NULL);
    e887413e:	4881                	li	a7,0
    e8874140:	4801                	li	a6,0
    e8874142:	06400793          	li	a5,100
    e8874146:	1f400713          	li	a4,500
    e887414a:	1f400693          	li	a3,500
    e887414e:	4605                	li	a2,1
    e8874150:	4585                	li	a1,1
    e8874152:	e002                	sd	zero,0(sp)
    e8874154:	9fefa0ef          	jal	ra,e886e352 <AirPlayReceiverSessionChangeResourceMode>
	    	AirPlayReceiverSessionBorrowMainAudio(gAirPlaySession, kAirPlayTransferPriority_UserInitiated, kAirPlayConstraint_UserInitiated,NULL, NULL, NULL);
    e8874158:	e002                	sd	zero,0(sp)
    e887415a:	6008                	ld	a0,0(s0)
    e887415c:	4881                	li	a7,0
    e887415e:	4801                	li	a6,0
    e8874160:	1f400793          	li	a5,500
    e8874164:	4701                	li	a4,0
    e8874166:	1f400693          	li	a3,500
    e887416a:	460d                	li	a2,3
    e887416c:	4589                	li	a1,2
    e887416e:	9e4fa0ef          	jal	ra,e886e352 <AirPlayReceiverSessionChangeResourceMode>
        }
        unlock_airplay();
    e8874172:	b6bfe0ef          	jal	ra,e8872cdc <unlock_airplay>
    e8874176:	12c00413          	li	s0,300

		//ȴ߳˳
		int i;
		for(i=0;i<300;i++)
		{
			if(!screen_steam && !audio_steam)
    e887417a:	00070497          	auipc	s1,0x70
    e887417e:	e4648493          	addi	s1,s1,-442 # e88e3fc0 <screen_steam>
    e8874182:	00070917          	auipc	s2,0x70
    e8874186:	caa90913          	addi	s2,s2,-854 # e88e3e2c <audio_steam>
    e887418a:	409c                	lw	a5,0(s1)
    e887418c:	00092703          	lw	a4,0(s2)
    e8874190:	8fd9                	or	a5,a5,a4
    e8874192:	c791                	beqz	a5,e887419e <lib_carplay_stop+0xd4>
			{
				break;
			}
			Sleep(10);
    e8874194:	4505                	li	a0,1
    e8874196:	347d                	addiw	s0,s0,-1
    e8874198:	67f070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		for(i=0;i<300;i++)
    e887419c:	f47d                	bnez	s0,e887418a <lib_carplay_stop+0xc0>
		}
	}
	
	if(carplay_start)
    e887419e:	00070797          	auipc	a5,0x70
    e88741a2:	ca678793          	addi	a5,a5,-858 # e88e3e44 <carplay_start>
    e88741a6:	439c                	lw	a5,0(a5)
    e88741a8:	c789                	beqz	a5,e88741b2 <lib_carplay_stop+0xe8>
	{
    	//AudioOutputStop();
    	//DecoderUninit();
	    carplay_start = 0;
    e88741aa:	00070797          	auipc	a5,0x70
    e88741ae:	c807ad23          	sw	zero,-870(a5) # e88e3e44 <carplay_start>
	}
    
    carplay_show = 0;
}
    e88741b2:	70e2                	ld	ra,56(sp)
    e88741b4:	fc91440b          	ldd	s0,s1,(sp),2,4
    carplay_show = 0;
    e88741b8:	00070797          	auipc	a5,0x70
    e88741bc:	c807a423          	sw	zero,-888(a5) # e88e3e40 <carplay_show>
}
    e88741c0:	7942                	ld	s2,48(sp)
    e88741c2:	6121                	addi	sp,sp,64
    e88741c4:	8082                	ret

00000000e88741c6 <lib_carplay_show>:

void lib_carplay_show(void)
{
}
    e88741c6:	8082                	ret

00000000e88741c8 <lib_carplay_hide>:

void lib_carplay_hide(void)
{
    e88741c8:	7179                	addi	sp,sp,-48
	printf("lib_carplay_hide\n");
    e88741ca:	00059517          	auipc	a0,0x59
    e88741ce:	99e50513          	addi	a0,a0,-1634 # e88ccb68 <__PRETTY_FUNCTION__.11813+0x58>
{
    e88741d2:	ec22                	sd	s0,24(sp)
    e88741d4:	f406                	sd	ra,40(sp)
    e88741d6:	f026                	sd	s1,32(sp)
	printf("lib_carplay_hide\n");
    e88741d8:	0ee080ef          	jal	ra,e887c2c6 <eLIBs_printf>
	if(gAirPlaySession)
    e88741dc:	00070417          	auipc	s0,0x70
    e88741e0:	c8440413          	addi	s0,s0,-892 # e88e3e60 <gAirPlaySession>
    e88741e4:	601c                	ld	a5,0(s0)
    e88741e6:	c3a9                	beqz	a5,e8874228 <lib_carplay_hide+0x60>
	{
        lock_airplay();
    e88741e8:	ae9fe0ef          	jal	ra,e8872cd0 <lock_airplay>
        if(gAirPlaySession)
    e88741ec:	6008                	ld	a0,0(s0)
    e88741ee:	cd11                	beqz	a0,e887420a <lib_carplay_hide+0x42>
        {
    		AirPlayReceiverSessionTakeScreen(gAirPlaySession, kAirPlayTransferPriority_UserInitiated, kAirPlayConstraint_UserInitiated,kAirPlayConstraint_Anytime, NULL, NULL, NULL);
    e88741f0:	e002                	sd	zero,0(sp)
    e88741f2:	4881                	li	a7,0
    e88741f4:	4801                	li	a6,0
    e88741f6:	06400793          	li	a5,100
    e88741fa:	1f400713          	li	a4,500
    e88741fe:	1f400693          	li	a3,500
    e8874202:	4605                	li	a2,1
    e8874204:	4585                	li	a1,1
    e8874206:	94cfa0ef          	jal	ra,e886e352 <AirPlayReceiverSessionChangeResourceMode>
	    	//AirPlayReceiverSessionTakeMainAudio(gAirPlaySession, kAirPlayTransferPriority_UserInitiated, kAirPlayConstraint_Never,kAirPlayConstraint_Never, NULL, NULL, NULL);
        }
        unlock_airplay();
    e887420a:	ad3fe0ef          	jal	ra,e8872cdc <unlock_airplay>
    e887420e:	12c00413          	li	s0,300
        
		int i;
		for(i=0;i<300;i++)
		{
			if(!screen_steam)
    e8874212:	00070497          	auipc	s1,0x70
    e8874216:	dae48493          	addi	s1,s1,-594 # e88e3fc0 <screen_steam>
    e887421a:	409c                	lw	a5,0(s1)
    e887421c:	c791                	beqz	a5,e8874228 <lib_carplay_hide+0x60>
			{
				break;
			}
			Sleep(10);
    e887421e:	4505                	li	a0,1
    e8874220:	347d                	addiw	s0,s0,-1
    e8874222:	5f5070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		for(i=0;i<300;i++)
    e8874226:	f875                	bnez	s0,e887421a <lib_carplay_hide+0x52>
		}
	}
    carplay_show = 0;
}
    e8874228:	70a2                	ld	ra,40(sp)
    e887422a:	6462                	ld	s0,24(sp)
    carplay_show = 0;
    e887422c:	00070797          	auipc	a5,0x70
    e8874230:	c007aa23          	sw	zero,-1004(a5) # e88e3e40 <carplay_show>
}
    e8874234:	7482                	ld	s1,32(sp)
    e8874236:	6145                	addi	sp,sp,48
    e8874238:	8082                	ret

00000000e887423a <lib_carplay_touch>:

void lib_carplay_touch(uint8_t down,uint32_t x,uint32_t y)
{
    e887423a:	7139                	addi	sp,sp,-64
    e887423c:	f822                	sd	s0,48(sp)
    e887423e:	fc06                	sd	ra,56(sp)
    e8874240:	ec2a                	sd	a0,24(sp)
    e8874242:	e82e                	sd	a1,16(sp)
    e8874244:	e432                	sd	a2,8(sp)
    lock_airplay();
    e8874246:	a8bfe0ef          	jal	ra,e8872cd0 <lock_airplay>
	if(gAirPlaySession)
    e887424a:	00070417          	auipc	s0,0x70
    e887424e:	c1640413          	addi	s0,s0,-1002 # e88e3e60 <gAirPlaySession>
    e8874252:	601c                	ld	a5,0(s0)
    e8874254:	c3b5                	beqz	a5,e88742b8 <lib_carplay_touch+0x7e>
	{
    	x = x * gVideoWidth / screen_width;
    	y = y * gVideoHeight / screen_height;
    e8874256:	00070717          	auipc	a4,0x70
    e887425a:	d2670713          	addi	a4,a4,-730 # e88e3f7c <gVideoHeight>
    e887425e:	4314                	lw	a3,0(a4)
    e8874260:	6622                	ld	a2,8(sp)
    	x = x * gVideoWidth / screen_width;
    e8874262:	00070797          	auipc	a5,0x70
    e8874266:	d2278793          	addi	a5,a5,-734 # e88e3f84 <gVideoWidth>
    e887426a:	65c2                	ld	a1,16(sp)
    e887426c:	439c                	lw	a5,0(a5)
    	y = y * gVideoHeight / screen_height;
    e887426e:	02c686bb          	mulw	a3,a3,a2
    e8874272:	00061717          	auipc	a4,0x61
    e8874276:	2fa70713          	addi	a4,a4,762 # e88d556c <screen_height>
    e887427a:	4310                	lw	a2,0(a4)
    	x = x * gVideoWidth / screen_width;
    e887427c:	00061717          	auipc	a4,0x61
    e8874280:	2f470713          	addi	a4,a4,756 # e88d5570 <screen_width>
	HIDTouchScreenFillReport( report, inPress, inX, inY );
    e8874284:	6562                	ld	a0,24(sp)
    	x = x * gVideoWidth / screen_width;
    e8874286:	02b787bb          	mulw	a5,a5,a1
	HIDTouchScreenFillReport( report, inPress, inX, inY );
    e887428a:	00a035b3          	snez	a1,a0
    e887428e:	1028                	addi	a0,sp,40
    	y = y * gVideoHeight / screen_height;
    e8874290:	02c6d6bb          	divuw	a3,a3,a2
    	x = x * gVideoWidth / screen_width;
    e8874294:	4310                	lw	a2,0(a4)
    e8874296:	02c7d63b          	divuw	a2,a5,a2
	HIDTouchScreenFillReport( report, inPress, inX, inY );
    e887429a:	3c06b68b          	extu	a3,a3,15,0
    e887429e:	3c06360b          	extu	a2,a2,15,0
    e88742a2:	8f7ee0ef          	jal	ra,e8862b98 <HIDTouchScreenFillReport>
	AirPlayReceiverSessionSendHIDReport( gAirPlaySession, gTouchUID, report, sizeof( report ) );
    e88742a6:	6008                	ld	a0,0(s0)
    e88742a8:	4695                	li	a3,5
    e88742aa:	1030                	addi	a2,sp,40
    e88742ac:	00070597          	auipc	a1,0x70
    e88742b0:	cce5c583          	lbu	a1,-818(a1) # e88e3f7a <gTouchUID>
    e88742b4:	b1ffa0ef          	jal	ra,e886edd2 <AirPlayReceiverSessionSendHIDReport>
        
		_touchScreenUpdate(down,x,y);
		//AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), NULL, NULL, NULL );
	}
    unlock_airplay();
    e88742b8:	a25fe0ef          	jal	ra,e8872cdc <unlock_airplay>
}
    e88742bc:	7442                	ld	s0,48(sp)
    e88742be:	70e2                	ld	ra,56(sp)
    e88742c0:	6121                	addi	sp,sp,64
    e88742c2:	8082                	ret

00000000e88742c4 <lib_carplay_screen>:

void lib_carplay_screen(uint32_t width,uint32_t height)
{
    e88742c4:	1101                	addi	sp,sp,-32
	printf("lib_carplay_screen %d,%d\n",width,height);
    e88742c6:	862e                	mv	a2,a1
{
    e88742c8:	e422                	sd	s0,8(sp)
    e88742ca:	e826                	sd	s1,16(sp)
    e88742cc:	842e                	mv	s0,a1
    e88742ce:	84aa                	mv	s1,a0
	printf("lib_carplay_screen %d,%d\n",width,height);
    e88742d0:	85aa                	mv	a1,a0
    e88742d2:	00059517          	auipc	a0,0x59
    e88742d6:	96e50513          	addi	a0,a0,-1682 # e88ccc40 <__PRETTY_FUNCTION__.11813+0x130>
{
    e88742da:	ec06                	sd	ra,24(sp)
	printf("lib_carplay_screen %d,%d\n",width,height);
    e88742dc:	7eb070ef          	jal	ra,e887c2c6 <eLIBs_printf>
    
    screen_width = width;
    e88742e0:	0004851b          	sext.w	a0,s1
    screen_height = height;
    e88742e4:	0004061b          	sext.w	a2,s0
    screen_width = width;
    e88742e8:	00061797          	auipc	a5,0x61
    e88742ec:	28a7a423          	sw	a0,648(a5) # e88d5570 <screen_width>
    screen_height = height;
    e88742f0:	00061797          	auipc	a5,0x61
    e88742f4:	26c7ae23          	sw	a2,636(a5) # e88d556c <screen_height>
    
	if(width == 800 && height == 480)
    e88742f8:	32000813          	li	a6,800
    e88742fc:	00070597          	auipc	a1,0x70
    e8874300:	c8858593          	addi	a1,a1,-888 # e88e3f84 <gVideoWidth>
    e8874304:	00070717          	auipc	a4,0x70
    e8874308:	c7870713          	addi	a4,a4,-904 # e88e3f7c <gVideoHeight>
    e887430c:	00070697          	auipc	a3,0x70
    e8874310:	c7c68693          	addi	a3,a3,-900 # e88e3f88 <gVideoWidthMM>
    e8874314:	00070797          	auipc	a5,0x70
    e8874318:	c6c78793          	addi	a5,a5,-916 # e88e3f80 <gVideoHeightMM>
    e887431c:	03049763          	bne	s1,a6,e887434a <lib_carplay_screen+0x86>
    e8874320:	1e000813          	li	a6,480
    e8874324:	03041a63          	bne	s0,a6,e8874358 <lib_carplay_screen+0x94>
		gVideoWidth = 800;
		gVideoHeight = 480;
		gVideoWidthMM = 140;
		gVideoHeightMM = 80;
        #else
		gVideoWidth = 1080;
    e8874328:	43800613          	li	a2,1080
    e887432c:	c190                	sw	a2,0(a1)
		gVideoHeight = 600;
    e887432e:	25800613          	li	a2,600
    e8874332:	c310                	sw	a2,0(a4)
		gVideoWidthMM = 225;
    e8874334:	0e100713          	li	a4,225
    e8874338:	c298                	sw	a4,0(a3)
		gVideoHeightMM = 125;
    e887433a:	07d00713          	li	a4,125
    e887433e:	c398                	sw	a4,0(a5)
		gVideoWidth = width;
		gVideoHeight = height;
		gVideoWidthMM = width/5;
		gVideoHeightMM = height/5;
    }
}
    e8874340:	60e2                	ld	ra,24(sp)
    e8874342:	6422                	ld	s0,8(sp)
    e8874344:	64c2                	ld	s1,16(sp)
    e8874346:	6105                	addi	sp,sp,32
    e8874348:	8082                	ret
	else if(width == 1024 && height == 600)
    e887434a:	40000813          	li	a6,1024
    e887434e:	01049563          	bne	s1,a6,e8874358 <lib_carplay_screen+0x94>
    e8874352:	25800813          	li	a6,600
    e8874356:	b7f9                	j	e8874324 <lib_carplay_screen+0x60>
		gVideoHeight = height;
    e8874358:	c310                	sw	a2,0(a4)
		gVideoWidthMM = width/5;
    e887435a:	4715                	li	a4,5
    e887435c:	02e4d4bb          	divuw	s1,s1,a4
		gVideoWidth = width;
    e8874360:	c188                	sw	a0,0(a1)
		gVideoHeightMM = height/5;
    e8874362:	02e4543b          	divuw	s0,s0,a4
		gVideoWidthMM = width/5;
    e8874366:	c284                	sw	s1,0(a3)
		gVideoHeightMM = height/5;
    e8874368:	c380                	sw	s0,0(a5)
}
    e887436a:	bfd9                	j	e8874340 <lib_carplay_screen+0x7c>

00000000e887436c <lib_carplay_frame_rate>:

void lib_carplay_frame_rate(uint32_t fps)
{
	gMaxFPS = fps;
    e887436c:	00061797          	auipc	a5,0x61
    e8874370:	1ea7ae23          	sw	a0,508(a5) # e88d5568 <gMaxFPS>
}
    e8874374:	8082                	ret

00000000e8874376 <lib_carplay_btaddr>:

void lib_carplay_btaddr(char *btaddr)
{
    e8874376:	716d                	addi	sp,sp,-272
    e8874378:	e222                	sd	s0,256(sp)
	int i,j;
	
	char bluetoothID[MAX_PATH];
	memset(bluetoothID,0,sizeof(bluetoothID));
    e887437a:	10000613          	li	a2,256
{
    e887437e:	842a                	mv	s0,a0
	memset(bluetoothID,0,sizeof(bluetoothID));
    e8874380:	4581                	li	a1,0
    e8874382:	850a                	mv	a0,sp
{
    e8874384:	e606                	sd	ra,264(sp)
	memset(bluetoothID,0,sizeof(bluetoothID));
    e8874386:	00e080ef          	jal	ra,e887c394 <eLIBs_memset>
    e887438a:	4781                	li	a5,0
	for(i=0,j=0;i<12;i++)
    e887438c:	4701                	li	a4,0
    e887438e:	462d                	li	a2,11
	{
		if((i>0) && ((i%2)==0))
		{
			bluetoothID[j++] = ':';
    e8874390:	03a00513          	li	a0,58
		}
		bluetoothID[j++] = btaddr[i];
    e8874394:	80f4458b          	lrbu	a1,s0,a5,0
    e8874398:	0017069b          	addiw	a3,a4,1
    e887439c:	00e1558b          	srb	a1,sp,a4,0
	for(i=0,j=0;i<12;i++)
    e88743a0:	02c79563          	bne	a5,a2,e88743ca <lib_carplay_btaddr+0x54>
	}
	printf("bluetoothID is %s\r\n",bluetoothID);
    e88743a4:	858a                	mv	a1,sp
    e88743a6:	00058517          	auipc	a0,0x58
    e88743aa:	79250513          	addi	a0,a0,1938 # e88ccb38 <__PRETTY_FUNCTION__.11813+0x28>
    e88743ae:	719070ef          	jal	ra,e887c2c6 <eLIBs_printf>
	CFArrayEnsureCreatedAndAppendCString( &gBluetoothIDs, bluetoothID, kSizeCString );
    e88743b2:	858a                	mv	a1,sp
    e88743b4:	567d                	li	a2,-1
    e88743b6:	00070517          	auipc	a0,0x70
    e88743ba:	aba50513          	addi	a0,a0,-1350 # e88e3e70 <gBluetoothIDs>
    e88743be:	c75d70ef          	jal	ra,e884c032 <CFArrayEnsureCreatedAndAppendCString>
}
    e88743c2:	6412                	ld	s0,256(sp)
    e88743c4:	60b2                	ld	ra,264(sp)
    e88743c6:	6151                	addi	sp,sp,272
    e88743c8:	8082                	ret
		if((i>0) && ((i%2)==0))
    e88743ca:	0007b58b          	extu	a1,a5,0,0
    e88743ce:	c589                	beqz	a1,e88743d8 <lib_carplay_btaddr+0x62>
			bluetoothID[j++] = ':';
    e88743d0:	00d1550b          	srb	a0,sp,a3,0
    e88743d4:	0027069b          	addiw	a3,a4,2
    e88743d8:	0785                	addi	a5,a5,1
    e88743da:	8736                	mv	a4,a3
    e88743dc:	bf65                	j	e8874394 <lib_carplay_btaddr+0x1e>

00000000e88743de <lib_carplay_key>:

void lib_carplay_key(uint8_t key)
{
    e88743de:	1101                	addi	sp,sp,-32
    e88743e0:	e84a                	sd	s2,16(sp)
    e88743e2:	f891540b          	sdd	s0,s1,(sp),0,4
    e88743e6:	ec06                	sd	ra,24(sp)
    e88743e8:	842a                	mv	s0,a0
    lock_airplay();
    e88743ea:	8e7fe0ef          	jal	ra,e8872cd0 <lock_airplay>
	if(gAirPlaySession)
    e88743ee:	00070917          	auipc	s2,0x70
    e88743f2:	a7290913          	addi	s2,s2,-1422 # e88e3e60 <gAirPlaySession>
    e88743f6:	00093783          	ld	a5,0(s2)
    e88743fa:	cf95                	beqz	a5,e8874436 <lib_carplay_key+0x58>
	{
		printf("lib_carplay_key %d\r\n",key);
    e88743fc:	0004049b          	sext.w	s1,s0
    e8874400:	85a6                	mv	a1,s1
    e8874402:	00058517          	auipc	a0,0x58
    e8874406:	7ee50513          	addi	a0,a0,2030 # e88ccbf0 <__PRETTY_FUNCTION__.11813+0xe0>
    e887440a:	6bd070ef          	jal	ra,e887c2c6 <eLIBs_printf>
            printf("dial key\r\n");
            void lib_iap_key(int keyValue);
            lib_iap_key(0);
            //AirPlayReceiverSessionRequestUI(gAirPlaySession,CFSTR( "com.apple.mobilephone" ),NULL,NULL);
        }*/
		if(key == kHIDMediaButtonIndexSiri)
    e887440e:	4799                	li	a5,6
    e8874410:	02f41a63          	bne	s0,a5,e8874444 <lib_carplay_key+0x66>
		{
    		AirPlayReceiverSessionRequestSiriAction(gAirPlaySession,kAirPlaySiriAction_ButtonDown,NULL,NULL);
    e8874414:	00093503          	ld	a0,0(s2)
    e8874418:	4681                	li	a3,0
    e887441a:	4601                	li	a2,0
    e887441c:	4589                	li	a1,2
    e887441e:	f5afa0ef          	jal	ra,e886eb78 <AirPlayReceiverSessionRequestSiriAction>
			Sleep(100);
    e8874422:	4529                	li	a0,10
    e8874424:	3f3070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    		AirPlayReceiverSessionRequestSiriAction(gAirPlaySession,kAirPlaySiriAction_ButtonUp,NULL,NULL);
    e8874428:	00093503          	ld	a0,0(s2)
    e887442c:	4681                	li	a3,0
    e887442e:	4601                	li	a2,0
    e8874430:	458d                	li	a1,3
    e8874432:	f46fa0ef          	jal	ra,e886eb78 <AirPlayReceiverSessionRequestSiriAction>
			Sleep(100);
    		MediaButtonUpdate(0);
		}
	}
    unlock_airplay();
}
    e8874436:	f891440b          	ldd	s0,s1,(sp),0,4
    e887443a:	60e2                	ld	ra,24(sp)
    e887443c:	6942                	ld	s2,16(sp)
    e887443e:	6105                	addi	sp,sp,32
    unlock_airplay();
    e8874440:	89dfe06f          	j	e8872cdc <unlock_airplay>
        else if(key == CARPLAY_KEY_UP)
    e8874444:	47e5                	li	a5,25
    e8874446:	04f41263          	bne	s0,a5,e887448a <lib_carplay_key+0xac>
            gXPosition = 0;
    e887444a:	00070797          	auipc	a5,0x70
    e887444e:	b4678793          	addi	a5,a5,-1210 # e88e3f90 <gXPosition>
    e8874452:	0007b023          	sd	zero,0(a5)
            gYPosition = 0;
    e8874456:	00070797          	auipc	a5,0x70
    e887445a:	b4278793          	addi	a5,a5,-1214 # e88e3f98 <gYPosition>
    e887445e:	0007b023          	sd	zero,0(a5)
            gSelectButtonPressed = 0;
    e8874462:	00070797          	auipc	a5,0x70
    e8874466:	b0078b23          	sb	zero,-1258(a5) # e88e3f78 <gSelectButtonPressed>
            gHomeButtonPressed = 0;
    e887446a:	00070797          	auipc	a5,0x70
    e887446e:	a0078f23          	sb	zero,-1506(a5) # e88e3e88 <gHomeButtonPressed>
            gBackButtonPressed = 0;
    e8874472:	00070797          	auipc	a5,0x70
    e8874476:	9e078d23          	sb	zero,-1542(a5) # e88e3e6c <gBackButtonPressed>
            gWheelPositionRelative = -1;
    e887447a:	57fd                	li	a5,-1
            gWheelPositionRelative = 1;
    e887447c:	00070717          	auipc	a4,0x70
    e8874480:	b0f70823          	sb	a5,-1264(a4) # e88e3f8c <gWheelPositionRelative>
            KnobUpdate();
    e8874484:	e54ff0ef          	jal	ra,e8873ad8 <KnobUpdate>
    e8874488:	b77d                	j	e8874436 <lib_carplay_key+0x58>
        else if(key == CARPLAY_KEY_DOWN)
    e887448a:	47e9                	li	a5,26
    e887448c:	02f41c63          	bne	s0,a5,e88744c4 <lib_carplay_key+0xe6>
            gXPosition = 0;
    e8874490:	00070797          	auipc	a5,0x70
    e8874494:	b0078793          	addi	a5,a5,-1280 # e88e3f90 <gXPosition>
    e8874498:	0007b023          	sd	zero,0(a5)
            gYPosition = 0;
    e887449c:	00070797          	auipc	a5,0x70
    e88744a0:	afc78793          	addi	a5,a5,-1284 # e88e3f98 <gYPosition>
    e88744a4:	0007b023          	sd	zero,0(a5)
            gSelectButtonPressed = 0;
    e88744a8:	00070797          	auipc	a5,0x70
    e88744ac:	ac078823          	sb	zero,-1328(a5) # e88e3f78 <gSelectButtonPressed>
            gHomeButtonPressed = 0;
    e88744b0:	00070797          	auipc	a5,0x70
    e88744b4:	9c078c23          	sb	zero,-1576(a5) # e88e3e88 <gHomeButtonPressed>
            gBackButtonPressed = 0;
    e88744b8:	00070797          	auipc	a5,0x70
    e88744bc:	9a078a23          	sb	zero,-1612(a5) # e88e3e6c <gBackButtonPressed>
            gWheelPositionRelative = 1;
    e88744c0:	4785                	li	a5,1
    e88744c2:	bf6d                	j	e887447c <lib_carplay_key+0x9e>
        else if(key == CARPLAY_KEY_ENTER)
    e88744c4:	47f5                	li	a5,29
    e88744c6:	04f41963          	bne	s0,a5,e8874518 <lib_carplay_key+0x13a>
            gXPosition = 0;
    e88744ca:	00070797          	auipc	a5,0x70
    e88744ce:	ac678793          	addi	a5,a5,-1338 # e88e3f90 <gXPosition>
    e88744d2:	0007b023          	sd	zero,0(a5)
            gYPosition = 0;
    e88744d6:	00070797          	auipc	a5,0x70
    e88744da:	ac278793          	addi	a5,a5,-1342 # e88e3f98 <gYPosition>
    e88744de:	0007b023          	sd	zero,0(a5)
            gSelectButtonPressed = 1;
    e88744e2:	4785                	li	a5,1
    e88744e4:	00070717          	auipc	a4,0x70
    e88744e8:	a8f70a23          	sb	a5,-1388(a4) # e88e3f78 <gSelectButtonPressed>
            gHomeButtonPressed = 0;
    e88744ec:	00070797          	auipc	a5,0x70
    e88744f0:	98078e23          	sb	zero,-1636(a5) # e88e3e88 <gHomeButtonPressed>
            gBackButtonPressed = 0;
    e88744f4:	00070797          	auipc	a5,0x70
    e88744f8:	96078c23          	sb	zero,-1672(a5) # e88e3e6c <gBackButtonPressed>
            gWheelPositionRelative = 0;
    e88744fc:	00070797          	auipc	a5,0x70
    e8874500:	a8078823          	sb	zero,-1392(a5) # e88e3f8c <gWheelPositionRelative>
            KnobUpdate();
    e8874504:	dd4ff0ef          	jal	ra,e8873ad8 <KnobUpdate>
			Sleep(100);
    e8874508:	4529                	li	a0,10
    e887450a:	30d070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
            gSelectButtonPressed = 0;
    e887450e:	00070797          	auipc	a5,0x70
    e8874512:	a6078523          	sb	zero,-1430(a5) # e88e3f78 <gSelectButtonPressed>
            KnobUpdate();
    e8874516:	b7bd                	j	e8874484 <lib_carplay_key+0xa6>
		else if(key > kHIDMediaButtonIndexRepeat)
    e8874518:	47a1                	li	a5,8
    e887451a:	0087fd63          	bgeu	a5,s0,e8874534 <lib_carplay_key+0x156>
    		TelephonyUpdate(key - kHIDMediaButtonIndexRepeat);
    e887451e:	ff84851b          	addiw	a0,s1,-8
    e8874522:	b38ff0ef          	jal	ra,e887385a <TelephonyUpdate>
			Sleep(100);
    e8874526:	4529                	li	a0,10
    e8874528:	2ef070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    		TelephonyUpdate(0);
    e887452c:	4501                	li	a0,0
    e887452e:	b2cff0ef          	jal	ra,e887385a <TelephonyUpdate>
    e8874532:	b711                	j	e8874436 <lib_carplay_key+0x58>
    		MediaButtonUpdate(key);
    e8874534:	8526                	mv	a0,s1
    e8874536:	b52ff0ef          	jal	ra,e8873888 <MediaButtonUpdate>
			Sleep(100);
    e887453a:	4529                	li	a0,10
    e887453c:	2db070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    		MediaButtonUpdate(0);
    e8874540:	4501                	li	a0,0
    e8874542:	b46ff0ef          	jal	ra,e8873888 <MediaButtonUpdate>
    e8874546:	bdc5                	j	e8874436 <lib_carplay_key+0x58>

00000000e8874548 <lib_carplay_icon_label>:

void lib_carplay_icon_label(char *str)
{
	strcpy(gOemIconLabel,str);
    e8874548:	85aa                	mv	a1,a0
    e887454a:	00070517          	auipc	a0,0x70
    e887454e:	98650513          	addi	a0,a0,-1658 # e88e3ed0 <gOemIconLabel>
    e8874552:	5d30706f          	j	e887c324 <eLIBs_strcpy>

00000000e8874556 <lib_carplay_product_info>:
}

void lib_carplay_product_info(char *str)
{
	strcpy(gProductInfo,str);
    e8874556:	85aa                	mv	a1,a0
    e8874558:	00070517          	auipc	a0,0x70
    e887455c:	9e050513          	addi	a0,a0,-1568 # e88e3f38 <gProductInfo>
    e8874560:	5c50706f          	j	e887c324 <eLIBs_strcpy>

00000000e8874564 <lib_carplay_aec_param>:
}

void lib_carplay_aec_param(void *param)
{
    g_pAecParam = param;
    e8874564:	00070797          	auipc	a5,0x70
    e8874568:	a2a7be23          	sd	a0,-1476(a5) # e88e3fa0 <g_pAecParam>
}
    e887456c:	8082                	ret

00000000e887456e <lib_carplay_net_disconnect>:

void lib_carplay_net_disconnect(void)
{
    e887456e:	1101                	addi	sp,sp,-32
	int i;

    if(gAirPlayServer)
    e8874570:	00070797          	auipc	a5,0x70
    e8874574:	8e878793          	addi	a5,a5,-1816 # e88e3e58 <gAirPlayServer>
{
    e8874578:	ec06                	sd	ra,24(sp)
    e887457a:	e422                	sd	s0,8(sp)
    e887457c:	e826                	sd	s1,16(sp)
    if(gAirPlayServer)
    e887457e:	6388                	ld	a0,0(a5)
    e8874580:	c919                	beqz	a0,e8874596 <lib_carplay_net_disconnect+0x28>
    {
    	AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), NULL, NULL, NULL );
    e8874582:	4781                	li	a5,0
    e8874584:	4701                	li	a4,0
    e8874586:	4681                	li	a3,0
    e8874588:	0002a617          	auipc	a2,0x2a
    e887458c:	64860613          	addi	a2,a2,1608 # e889ebd0 <icmp6_param_problem+0x1b62>
    e8874590:	4585                	li	a1,1
    e8874592:	8b2f20ef          	jal	ra,e8866644 <AirPlayReceiverServerControl>
{
    e8874596:	4479                	li	s0,30
    }
    
	for(i=0;i<30;i++)
	{
		if(gAirPlaySession == NULL)
    e8874598:	00070497          	auipc	s1,0x70
    e887459c:	8c848493          	addi	s1,s1,-1848 # e88e3e60 <gAirPlaySession>
    e88745a0:	609c                	ld	a5,0(s1)
    e88745a2:	c791                	beqz	a5,e88745ae <lib_carplay_net_disconnect+0x40>
		{
			break;
		}
		Sleep(100);
    e88745a4:	4529                	li	a0,10
    e88745a6:	347d                	addiw	s0,s0,-1
    e88745a8:	26f070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
	for(i=0;i<30;i++)
    e88745ac:	f875                	bnez	s0,e88745a0 <lib_carplay_net_disconnect+0x32>
	}
}
    e88745ae:	60e2                	ld	ra,24(sp)
    e88745b0:	6422                	ld	s0,8(sp)
    e88745b2:	64c2                	ld	s1,16(sp)
    e88745b4:	6105                	addi	sp,sp,32
    e88745b6:	8082                	ret

00000000e88745b8 <lib_carplay_right_hand_drive>:

void lib_carplay_right_hand_drive(uint8_t right)
{
	if(right)
	{
		gRightHandDrive	= kCFBooleanTrue;
    e88745b8:	00060797          	auipc	a5,0x60
    e88745bc:	71878793          	addi	a5,a5,1816 # e88d4cd0 <kCFLBooleanTrue>
	if(right)
    e88745c0:	e509                	bnez	a0,e88745ca <lib_carplay_right_hand_drive+0x12>
	}
	else
	{
		gRightHandDrive	= kCFBooleanFalse;
    e88745c2:	00060797          	auipc	a5,0x60
    e88745c6:	70678793          	addi	a5,a5,1798 # e88d4cc8 <kCFLBooleanFalse>
    e88745ca:	639c                	ld	a5,0(a5)
    e88745cc:	00070717          	auipc	a4,0x70
    e88745d0:	9af73223          	sd	a5,-1628(a4) # e88e3f70 <gRightHandDrive>
	}
}
    e88745d4:	8082                	ret

00000000e88745d6 <lib_carplay_night_mode>:

void lib_carplay_night_mode(uint8_t night)
{
    e88745d6:	1141                	addi	sp,sp,-16
    e88745d8:	e022                	sd	s0,0(sp)
	printf("lib_carplay_night_mode %d\n",night);
    e88745da:	85aa                	mv	a1,a0
{
    e88745dc:	842a                	mv	s0,a0
	printf("lib_carplay_night_mode %d\n",night);
    e88745de:	00058517          	auipc	a0,0x58
    e88745e2:	62a50513          	addi	a0,a0,1578 # e88ccc08 <__PRETTY_FUNCTION__.11813+0xf8>
{
    e88745e6:	e406                	sd	ra,8(sp)
	printf("lib_carplay_night_mode %d\n",night);
    e88745e8:	4df070ef          	jal	ra,e887c2c6 <eLIBs_printf>
	if(night)
	{
		gNightMode	= kCFBooleanTrue;
    e88745ec:	00060797          	auipc	a5,0x60
    e88745f0:	6e478793          	addi	a5,a5,1764 # e88d4cd0 <kCFLBooleanTrue>
	if(night)
    e88745f4:	e409                	bnez	s0,e88745fe <lib_carplay_night_mode+0x28>
	}
	else
	{
		gNightMode	= kCFBooleanFalse;
    e88745f6:	00060797          	auipc	a5,0x60
    e88745fa:	6d278793          	addi	a5,a5,1746 # e88d4cc8 <kCFLBooleanFalse>
    e88745fe:	639c                	ld	a5,0(a5)
    e8874600:	00070717          	auipc	a4,0x70
    e8874604:	8cf73423          	sd	a5,-1848(a4) # e88e3ec8 <gNightMode>
	}
    
    lock_airplay();
    e8874608:	ec8fe0ef          	jal	ra,e8872cd0 <lock_airplay>
	if(gAirPlaySession)
    e887460c:	00070797          	auipc	a5,0x70
    e8874610:	85478793          	addi	a5,a5,-1964 # e88e3e60 <gAirPlaySession>
    e8874614:	6388                	ld	a0,0(a5)
    e8874616:	c511                	beqz	a0,e8874622 <lib_carplay_night_mode+0x4c>
	{
        AirPlayReceiverSessionSetNightMode(gAirPlaySession,night,NULL,NULL);
    e8874618:	4681                	li	a3,0
    e887461a:	4601                	li	a2,0
    e887461c:	85a2                	mv	a1,s0
    e887461e:	edefa0ef          	jal	ra,e886ecfc <AirPlayReceiverSessionSetNightMode>
	}
    unlock_airplay();
}
    e8874622:	6402                	ld	s0,0(sp)
    e8874624:	60a2                	ld	ra,8(sp)
    e8874626:	0141                	addi	sp,sp,16
    unlock_airplay();
    e8874628:	eb4fe06f          	j	e8872cdc <unlock_airplay>

00000000e887462c <lib_carplay_i2c_name>:

void lib_carplay_i2c_name(char *str)
{
    e887462c:	1141                	addi	sp,sp,-16
    e887462e:	e022                	sd	s0,0(sp)
    printf("carplay i2c name is %s\n",str);
    e8874630:	85aa                	mv	a1,a0
{
    e8874632:	842a                	mv	s0,a0
    printf("carplay i2c name is %s\n",str);
    e8874634:	00058517          	auipc	a0,0x58
    e8874638:	54c50513          	addi	a0,a0,1356 # e88ccb80 <__PRETTY_FUNCTION__.11813+0x70>
{
    e887463c:	e406                	sd	ra,8(sp)
    printf("carplay i2c name is %s\n",str);
    e887463e:	489070ef          	jal	ra,e887c2c6 <eLIBs_printf>
	strcpy(apple_iic_name,str);
    e8874642:	85a2                	mv	a1,s0
}
    e8874644:	6402                	ld	s0,0(sp)
    e8874646:	60a2                	ld	ra,8(sp)
	strcpy(apple_iic_name,str);
    e8874648:	0006f517          	auipc	a0,0x6f
    e887464c:	7b050513          	addi	a0,a0,1968 # e88e3df8 <apple_iic_name>
}
    e8874650:	0141                	addi	sp,sp,16
	strcpy(apple_iic_name,str);
    e8874652:	4d30706f          	j	e887c324 <eLIBs_strcpy>

00000000e8874656 <lib_carplay_disconnect>:

void lib_carplay_disconnect(void)
{
    e8874656:	1141                	addi	sp,sp,-16
    printf("lib_carplay_disconnect\n");
    e8874658:	00058517          	auipc	a0,0x58
    e887465c:	4f850513          	addi	a0,a0,1272 # e88ccb50 <__PRETTY_FUNCTION__.11813+0x40>
{
    e8874660:	e406                	sd	ra,8(sp)
    printf("lib_carplay_disconnect\n");
    e8874662:	465070ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if(gAirPlayServer)
    e8874666:	0006f797          	auipc	a5,0x6f
    e887466a:	7f278793          	addi	a5,a5,2034 # e88e3e58 <gAirPlayServer>
    e887466e:	6388                	ld	a0,0(a5)
    e8874670:	cd09                	beqz	a0,e887468a <lib_carplay_disconnect+0x34>
    {
    	AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), NULL, NULL, NULL );
    }
}
    e8874672:	60a2                	ld	ra,8(sp)
    	AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), NULL, NULL, NULL );
    e8874674:	4781                	li	a5,0
    e8874676:	4701                	li	a4,0
    e8874678:	4681                	li	a3,0
    e887467a:	0002a617          	auipc	a2,0x2a
    e887467e:	55660613          	addi	a2,a2,1366 # e889ebd0 <icmp6_param_problem+0x1b62>
    e8874682:	4585                	li	a1,1
}
    e8874684:	0141                	addi	sp,sp,16
    	AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), NULL, NULL, NULL );
    e8874686:	fbff106f          	j	e8866644 <AirPlayReceiverServerControl>
}
    e887468a:	60a2                	ld	ra,8(sp)
    e887468c:	0141                	addi	sp,sp,16
    e887468e:	8082                	ret

00000000e8874690 <lib_carplay_reconnect>:

void lib_carplay_reconnect(void)
{
    e8874690:	1141                	addi	sp,sp,-16
    printf("lib_carplay_reconnect\n");
    e8874692:	00058517          	auipc	a0,0x58
    e8874696:	59650513          	addi	a0,a0,1430 # e88ccc28 <__PRETTY_FUNCTION__.11813+0x118>
{
    e887469a:	e022                	sd	s0,0(sp)
    e887469c:	e406                	sd	ra,8(sp)
    printf("lib_carplay_reconnect\n");
    e887469e:	429070ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if(gAirPlayServer)
    e88746a2:	0006f417          	auipc	s0,0x6f
    e88746a6:	7b640413          	addi	s0,s0,1974 # e88e3e58 <gAirPlayServer>
    e88746aa:	6008                	ld	a0,0(s0)
    e88746ac:	cd05                	beqz	a0,e88746e4 <lib_carplay_reconnect+0x54>
    {
    	AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_SessionDied ), NULL, NULL, NULL );
    e88746ae:	4781                	li	a5,0
    e88746b0:	4701                	li	a4,0
    e88746b2:	4681                	li	a3,0
    e88746b4:	0002a617          	auipc	a2,0x2a
    e88746b8:	51c60613          	addi	a2,a2,1308 # e889ebd0 <icmp6_param_problem+0x1b62>
    e88746bc:	4585                	li	a1,1
    e88746be:	f87f10ef          	jal	ra,e8866644 <AirPlayReceiverServerControl>
        Sleep(100);
    e88746c2:	4529                	li	a0,10
    e88746c4:	153070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    	AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_StartSession ), NULL, NULL, NULL );
    e88746c8:	6008                	ld	a0,0(s0)
    }
}
    e88746ca:	6402                	ld	s0,0(sp)
    e88746cc:	60a2                	ld	ra,8(sp)
    	AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_StartSession ), NULL, NULL, NULL );
    e88746ce:	4781                	li	a5,0
    e88746d0:	4701                	li	a4,0
    e88746d2:	4681                	li	a3,0
    e88746d4:	0002a617          	auipc	a2,0x2a
    e88746d8:	51460613          	addi	a2,a2,1300 # e889ebe8 <icmp6_param_problem+0x1b7a>
    e88746dc:	4585                	li	a1,1
}
    e88746de:	0141                	addi	sp,sp,16
    	AirPlayReceiverServerControl( gAirPlayServer, kCFObjectFlagDirect, CFSTR( kAirPlayCommand_StartSession ), NULL, NULL, NULL );
    e88746e0:	f65f106f          	j	e8866644 <AirPlayReceiverServerControl>
}
    e88746e4:	60a2                	ld	ra,8(sp)
    e88746e6:	6402                	ld	s0,0(sp)
    e88746e8:	0141                	addi	sp,sp,16
    e88746ea:	8082                	ret

00000000e88746ec <DecoderInit>:

void DecoderInit(int width,int height)
{
    e88746ec:	7159                	addi	sp,sp,-112
    e88746ee:	eca6                	sd	s1,88(sp)
    e88746f0:	e8ca                	sd	s2,80(sp)
	printf("DecoderInit width %d,height %d\n",width,height);
    e88746f2:	862e                	mv	a2,a1
{
    e88746f4:	892a                	mv	s2,a0
    e88746f6:	84ae                	mv	s1,a1
	printf("DecoderInit width %d,height %d\n",width,height);
    e88746f8:	85aa                	mv	a1,a0
    e88746fa:	00058517          	auipc	a0,0x58
    e88746fe:	13650513          	addi	a0,a0,310 # e88cc830 <kCarPlayControllerClass.11452+0x108>
{
    e8874702:	f0a2                	sd	s0,96(sp)
    e8874704:	e4ce                	sd	s3,72(sp)
    e8874706:	f486                	sd	ra,104(sp)
	printf("DecoderInit width %d,height %d\n",width,height);
    e8874708:	12c00413          	li	s0,300
    e887470c:	3bb070ef          	jal	ra,e887c2c6 <eLIBs_printf>
	int i;
	uint32_t data[10];

    for(i=0;i<300;i++)
    {
        if(carplay_show)
    e8874710:	0006f997          	auipc	s3,0x6f
    e8874714:	73098993          	addi	s3,s3,1840 # e88e3e40 <carplay_show>
    e8874718:	0009a783          	lw	a5,0(s3)
    e887471c:	efa9                	bnez	a5,e8874776 <DecoderInit+0x8a>
        {
            break;
        }
        Sleep(10);
    e887471e:	4505                	li	a0,1
    e8874720:	347d                	addiw	s0,s0,-1
    e8874722:	0f5070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    for(i=0;i<300;i++)
    e8874726:	f86d                	bnez	s0,e8874718 <DecoderInit+0x2c>
    }
    
    if(!carplay_show)
    e8874728:	0009a783          	lw	a5,0(s3)
    e887472c:	e7a9                	bnez	a5,e8874776 <DecoderInit+0x8a>
    {
        printf("carplay not start,hide carplay\n");
    e887472e:	00058517          	auipc	a0,0x58
    e8874732:	12250513          	addi	a0,a0,290 # e88cc850 <kCarPlayControllerClass.11452+0x128>
    e8874736:	391070ef          	jal	ra,e887c2c6 <eLIBs_printf>
        lock_airplay();
    e887473a:	d96fe0ef          	jal	ra,e8872cd0 <lock_airplay>
        if(gAirPlaySession)
    e887473e:	0006f797          	auipc	a5,0x6f
    e8874742:	72278793          	addi	a5,a5,1826 # e88e3e60 <gAirPlaySession>
    e8874746:	6388                	ld	a0,0(a5)
    e8874748:	cd11                	beqz	a0,e8874764 <DecoderInit+0x78>
        {
            AirPlayReceiverSessionTakeScreen(gAirPlaySession, kAirPlayTransferPriority_UserInitiated, kAirPlayConstraint_UserInitiated,kAirPlayConstraint_Anytime, NULL, NULL, NULL);
    e887474a:	e002                	sd	zero,0(sp)
    e887474c:	4881                	li	a7,0
    e887474e:	4801                	li	a6,0
    e8874750:	06400793          	li	a5,100
    e8874754:	1f400713          	li	a4,500
    e8874758:	1f400693          	li	a3,500
    e887475c:	4605                	li	a2,1
    e887475e:	4585                	li	a1,1
    e8874760:	bf3f90ef          	jal	ra,e886e352 <AirPlayReceiverSessionChangeResourceMode>
        }
        unlock_airplay();
    e8874764:	d78fe0ef          	jal	ra,e8872cdc <unlock_airplay>

	if(carplay_callback)
	{
		carplay_callback(data);
	}
}
    e8874768:	70a6                	ld	ra,104(sp)
    e887476a:	7406                	ld	s0,96(sp)
    e887476c:	64e6                	ld	s1,88(sp)
    e887476e:	6946                	ld	s2,80(sp)
    e8874770:	69a6                	ld	s3,72(sp)
    e8874772:	6165                	addi	sp,sp,112
    e8874774:	8082                	ret
    if(decoder_init)
    e8874776:	0006f717          	auipc	a4,0x6f
    e887477a:	6d670713          	addi	a4,a4,1750 # e88e3e4c <decoder_init>
    e887477e:	431c                	lw	a5,0(a4)
    e8874780:	cb81                	beqz	a5,e8874790 <DecoderInit+0xa4>
        printf("carplay decoder already init\n");
    e8874782:	00058517          	auipc	a0,0x58
    e8874786:	0ee50513          	addi	a0,a0,238 # e88cc870 <kCarPlayControllerClass.11452+0x148>
    e887478a:	33d070ef          	jal	ra,e887c2c6 <eLIBs_printf>
        return;
    e887478e:	bfe9                	j	e8874768 <DecoderInit+0x7c>
    decoder_init = TRUE;
    e8874790:	4785                	li	a5,1
    e8874792:	c31c                	sw	a5,0(a4)
    carplay_connect = TRUE;
    e8874794:	0006f717          	auipc	a4,0x6f
    e8874798:	6af72223          	sw	a5,1700(a4) # e88e3e38 <carplay_connect>
	if(carplay_callback)
    e887479c:	0006f797          	auipc	a5,0x6f
    e88747a0:	69478793          	addi	a5,a5,1684 # e88e3e30 <carplay_callback>
    e88747a4:	639c                	ld	a5,0(a5)
	data[0] = CARPLAY_DATA_VIDEO_INIT;
    e88747a6:	cc02                	sw	zero,24(sp)
	data[1] = width;
    e88747a8:	ce4a                	sw	s2,28(sp)
	data[2] = height;
    e88747aa:	d026                	sw	s1,32(sp)
	if(carplay_callback)
    e88747ac:	dfd5                	beqz	a5,e8874768 <DecoderInit+0x7c>
		carplay_callback(data);
    e88747ae:	0828                	addi	a0,sp,24
    e88747b0:	9782                	jalr	a5
    e88747b2:	bf5d                	j	e8874768 <DecoderInit+0x7c>

00000000e88747b4 <DecoderUninit>:

void DecoderUninit(void)
{
    e88747b4:	7139                	addi	sp,sp,-64
	uint32_t data[10];
	printf("DecoderUninit\n");
    e88747b6:	00058517          	auipc	a0,0x58
    e88747ba:	0da50513          	addi	a0,a0,218 # e88cc890 <kCarPlayControllerClass.11452+0x168>
{
    e88747be:	fc06                	sd	ra,56(sp)
	printf("DecoderUninit\n");
    e88747c0:	307070ef          	jal	ra,e887c2c6 <eLIBs_printf>

    if(!decoder_init)
    e88747c4:	0006f797          	auipc	a5,0x6f
    e88747c8:	68878793          	addi	a5,a5,1672 # e88e3e4c <decoder_init>
    e88747cc:	439c                	lw	a5,0(a5)
    e88747ce:	cf99                	beqz	a5,e88747ec <DecoderUninit+0x38>
    {
        return;
    }

    decoder_init = FALSE;
    e88747d0:	0006f797          	auipc	a5,0x6f
    e88747d4:	6607ae23          	sw	zero,1660(a5) # e88e3e4c <decoder_init>
    
	data[0] = CARPLAY_DATA_VIDEO_EXIT;
    e88747d8:	4785                	li	a5,1
    e88747da:	c43e                	sw	a5,8(sp)

	if(carplay_callback)
    e88747dc:	0006f797          	auipc	a5,0x6f
    e88747e0:	65478793          	addi	a5,a5,1620 # e88e3e30 <carplay_callback>
    e88747e4:	639c                	ld	a5,0(a5)
    e88747e6:	c399                	beqz	a5,e88747ec <DecoderUninit+0x38>
	{
		carplay_callback(data);
    e88747e8:	0028                	addi	a0,sp,8
    e88747ea:	9782                	jalr	a5
	}
}
    e88747ec:	70e2                	ld	ra,56(sp)
    e88747ee:	6121                	addi	sp,sp,64
    e88747f0:	8082                	ret

00000000e88747f2 <DecoderRender>:

void DecoderRender(uint8_t *pData,int len)
{
    e88747f2:	715d                	addi	sp,sp,-80
    e88747f4:	e0a2                	sd	s0,64(sp)
    e88747f6:	e486                	sd	ra,72(sp)
    e88747f8:	842a                	mv	s0,a0
    e88747fa:	e42e                	sd	a1,8(sp)
	uint32_t data[10];

    //if(GetTickCount()-startTime > 30*60*1000)
    {
        int index;
        index = (GetTickCount()/10%16);
    e88747fc:	5dd060ef          	jal	ra,e887b5d8 <GetTickCount>
    e8874800:	47a9                	li	a5,10
    e8874802:	02f5553b          	divuw	a0,a0,a5
        pData[index] += (in_tab[index]-out_tab[index]);
    e8874806:	0006f717          	auipc	a4,0x6f
    e887480a:	7b270713          	addi	a4,a4,1970 # e88e3fb8 <out_tab>
    e887480e:	0006f797          	auipc	a5,0x6f
    e8874812:	7a278793          	addi	a5,a5,1954 # e88e3fb0 <in_tab>
    e8874816:	639c                	ld	a5,0(a5)
    e8874818:	6318                	ld	a4,0(a4)
    e887481a:	893d                	andi	a0,a0,15
    e887481c:	80a7470b          	lrbu	a4,a4,a0,0
    e8874820:	80a7c78b          	lrbu	a5,a5,a0,0
    e8874824:	9f99                	subw	a5,a5,a4
    e8874826:	80a4470b          	lrbu	a4,s0,a0,0
    e887482a:	9fb9                	addw	a5,a5,a4
    e887482c:	00a4578b          	srb	a5,s0,a0,0
    }

    if(!decoder_init)
    e8874830:	0006f797          	auipc	a5,0x6f
    e8874834:	61c78793          	addi	a5,a5,1564 # e88e3e4c <decoder_init>
    e8874838:	439c                	lw	a5,0(a5)
    e887483a:	cf91                	beqz	a5,e8874856 <DecoderRender+0x64>
    {
        return;
    }

	data[0] = CARPLAY_DATA_VIDEO_PLAY;
    e887483c:	4789                	li	a5,2
	data[1] = pData;
	data[2] = len;
    e887483e:	65a2                	ld	a1,8(sp)
	data[0] = CARPLAY_DATA_VIDEO_PLAY;
    e8874840:	cc3e                	sw	a5,24(sp)

	if(carplay_callback)
    e8874842:	0006f797          	auipc	a5,0x6f
    e8874846:	5ee78793          	addi	a5,a5,1518 # e88e3e30 <carplay_callback>
    e887484a:	639c                	ld	a5,0(a5)
	data[1] = pData;
    e887484c:	ce22                	sw	s0,28(sp)
	data[2] = len;
    e887484e:	d02e                	sw	a1,32(sp)
	if(carplay_callback)
    e8874850:	c399                	beqz	a5,e8874856 <DecoderRender+0x64>
	{
		carplay_callback(data);
    e8874852:	0828                	addi	a0,sp,24
    e8874854:	9782                	jalr	a5
	}
}
    e8874856:	60a6                	ld	ra,72(sp)
    e8874858:	6406                	ld	s0,64(sp)
    e887485a:	6161                	addi	sp,sp,80
    e887485c:	8082                	ret

00000000e887485e <WaveOutOpen>:

void WaveOutOpen(int type,int rate,int ch,int bits)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_AUDIO_INIT;
    e887485e:	478d                	li	a5,3
{
    e8874860:	7139                	addi	sp,sp,-64
	data[1] = type;
    e8874862:	e2a1578b          	swd	a5,a0,(sp),1,3
	data[2] = ch;
	data[3] = bits;
	data[4] = rate;

	if(carplay_callback)
    e8874866:	0006f797          	auipc	a5,0x6f
    e887486a:	5ca78793          	addi	a5,a5,1482 # e88e3e30 <carplay_callback>
{
    e887486e:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e8874870:	639c                	ld	a5,0(a5)
	data[3] = bits;
    e8874872:	e4d1560b          	swd	a2,a3,(sp),2,3
	data[4] = rate;
    e8874876:	cc2e                	sw	a1,24(sp)
	if(carplay_callback)
    e8874878:	c399                	beqz	a5,e887487e <WaveOutOpen+0x20>
	{
		carplay_callback(data);
    e887487a:	0028                	addi	a0,sp,8
    e887487c:	9782                	jalr	a5
	}
}
    e887487e:	70e2                	ld	ra,56(sp)
    e8874880:	6121                	addi	sp,sp,64
    e8874882:	8082                	ret

00000000e8874884 <WaveOutWrite>:

void WaveOutWrite(int type,uint8_t *pData,int len)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_AUDIO_PLAY;
    e8874884:	4795                	li	a5,5
{
    e8874886:	7139                	addi	sp,sp,-64
	data[1] = type;
    e8874888:	e2a1578b          	swd	a5,a0,(sp),1,3
	data[2] = pData;
	data[3] = len;

	if(carplay_callback)
    e887488c:	0006f797          	auipc	a5,0x6f
    e8874890:	5a478793          	addi	a5,a5,1444 # e88e3e30 <carplay_callback>
{
    e8874894:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e8874896:	639c                	ld	a5,0(a5)
	data[3] = len;
    e8874898:	e4c1558b          	swd	a1,a2,(sp),2,3
	if(carplay_callback)
    e887489c:	c399                	beqz	a5,e88748a2 <WaveOutWrite+0x1e>
	{
		carplay_callback(data);
    e887489e:	0028                	addi	a0,sp,8
    e88748a0:	9782                	jalr	a5
	}
}
    e88748a2:	70e2                	ld	ra,56(sp)
    e88748a4:	6121                	addi	sp,sp,64
    e88748a6:	8082                	ret

00000000e88748a8 <WaveOutClose>:

void WaveOutClose(int type)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_AUDIO_EXIT;
    e88748a8:	4791                	li	a5,4
{
    e88748aa:	7139                	addi	sp,sp,-64
	data[1] = type;
    e88748ac:	e2a1578b          	swd	a5,a0,(sp),1,3

	if(carplay_callback)
    e88748b0:	0006f797          	auipc	a5,0x6f
    e88748b4:	58078793          	addi	a5,a5,1408 # e88e3e30 <carplay_callback>
{
    e88748b8:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e88748ba:	639c                	ld	a5,0(a5)
    e88748bc:	c399                	beqz	a5,e88748c2 <WaveOutClose+0x1a>
	{
		carplay_callback(data);
    e88748be:	0028                	addi	a0,sp,8
    e88748c0:	9782                	jalr	a5
	}
}
    e88748c2:	70e2                	ld	ra,56(sp)
    e88748c4:	6121                	addi	sp,sp,64
    e88748c6:	8082                	ret

00000000e88748c8 <WaveInOpen>:

void WaveInOpen(int rate,int ch,int bits)
{
    e88748c8:	711d                	addi	sp,sp,-96
    e88748ca:	e8a2                	sd	s0,80(sp)
    e88748cc:	e4a6                	sd	s1,72(sp)
    e88748ce:	e0ca                	sd	s2,64(sp)
    e88748d0:	ec86                	sd	ra,88(sp)
    e88748d2:	892a                	mv	s2,a0
    e88748d4:	12c00413          	li	s0,300
    int i;
	uint32_t data[10];

    for(i=0;i<300;i++)
    {
        if(carplay_start)
    e88748d8:	0006f497          	auipc	s1,0x6f
    e88748dc:	56c48493          	addi	s1,s1,1388 # e88e3e44 <carplay_start>
    e88748e0:	409c                	lw	a5,0(s1)
    e88748e2:	ef81                	bnez	a5,e88748fa <WaveInOpen+0x32>
        {
            break;
        }
        Sleep(10);
    e88748e4:	4505                	li	a0,1
    e88748e6:	e432                	sd	a2,8(sp)
    e88748e8:	e02e                	sd	a1,0(sp)
    e88748ea:	72c070ef          	jal	ra,e887c016 <esKRNL_TimeDly>
    for(i=0;i<300;i++)
    e88748ee:	347d                	addiw	s0,s0,-1
    e88748f0:	f8c1458b          	ldd	a1,a2,(sp),0,4
    e88748f4:	f475                	bnez	s0,e88748e0 <WaveInOpen+0x18>
    }
    
    if(!carplay_start)
    e88748f6:	409c                	lw	a5,0(s1)
    e88748f8:	cf91                	beqz	a5,e8874914 <WaveInOpen+0x4c>
    {
        return;
    }

	data[0] = CARPLAY_DATA_MIC_INIT;
    e88748fa:	4799                	li	a5,6
    e88748fc:	cc3e                	sw	a5,24(sp)
	data[1] = ch;
	data[2] = bits;
	data[3] = rate;

	if(carplay_callback)
    e88748fe:	0006f797          	auipc	a5,0x6f
    e8874902:	53278793          	addi	a5,a5,1330 # e88e3e30 <carplay_callback>
    e8874906:	639c                	ld	a5,0(a5)
	data[1] = ch;
    e8874908:	ce2e                	sw	a1,28(sp)
	data[2] = bits;
    e887490a:	d032                	sw	a2,32(sp)
	data[3] = rate;
    e887490c:	d24a                	sw	s2,36(sp)
	if(carplay_callback)
    e887490e:	c399                	beqz	a5,e8874914 <WaveInOpen+0x4c>
	{
		carplay_callback(data);
    e8874910:	0828                	addi	a0,sp,24
    e8874912:	9782                	jalr	a5
	}
}
    e8874914:	60e6                	ld	ra,88(sp)
    e8874916:	6446                	ld	s0,80(sp)
    e8874918:	64a6                	ld	s1,72(sp)
    e887491a:	6906                	ld	s2,64(sp)
    e887491c:	6125                	addi	sp,sp,96
    e887491e:	8082                	ret

00000000e8874920 <WaveInRead>:

void WaveInRead(uint8_t *pData,int len)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_MIC_CAPTURE;
    e8874920:	47a1                	li	a5,8
{
    e8874922:	7139                	addi	sp,sp,-64
	data[1] = pData;
    e8874924:	e2a1578b          	swd	a5,a0,(sp),1,3
	data[2] = len;

	if(carplay_callback)
    e8874928:	0006f797          	auipc	a5,0x6f
    e887492c:	50878793          	addi	a5,a5,1288 # e88e3e30 <carplay_callback>
{
    e8874930:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e8874932:	639c                	ld	a5,0(a5)
	data[2] = len;
    e8874934:	c82e                	sw	a1,16(sp)
	if(carplay_callback)
    e8874936:	c399                	beqz	a5,e887493c <WaveInRead+0x1c>
	{
		carplay_callback(data);
    e8874938:	0028                	addi	a0,sp,8
    e887493a:	9782                	jalr	a5
	}
}
    e887493c:	70e2                	ld	ra,56(sp)
    e887493e:	6121                	addi	sp,sp,64
    e8874940:	8082                	ret

00000000e8874942 <WaveInClose>:

void WaveInClose(void)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_MIC_EXIT;
    e8874942:	479d                	li	a5,7
{
    e8874944:	7139                	addi	sp,sp,-64
	data[0] = CARPLAY_DATA_MIC_EXIT;
    e8874946:	c43e                	sw	a5,8(sp)

	if(carplay_callback)
    e8874948:	0006f797          	auipc	a5,0x6f
    e887494c:	4e878793          	addi	a5,a5,1256 # e88e3e30 <carplay_callback>
{
    e8874950:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e8874952:	639c                	ld	a5,0(a5)
    e8874954:	c399                	beqz	a5,e887495a <WaveInClose+0x18>
	{
		carplay_callback(data);
    e8874956:	0028                	addi	a0,sp,8
    e8874958:	9782                	jalr	a5
	}
}
    e887495a:	70e2                	ld	ra,56(sp)
    e887495c:	6121                	addi	sp,sp,64
    e887495e:	8082                	ret

00000000e8874960 <AecInit>:

void AecInit(void)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_AEC_INIT;
    e8874960:	47b1                	li	a5,12
{
    e8874962:	7139                	addi	sp,sp,-64
	data[0] = CARPLAY_DATA_AEC_INIT;
    e8874964:	c43e                	sw	a5,8(sp)

	if(carplay_callback)
    e8874966:	0006f797          	auipc	a5,0x6f
    e887496a:	4ca78793          	addi	a5,a5,1226 # e88e3e30 <carplay_callback>
{
    e887496e:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e8874970:	639c                	ld	a5,0(a5)
    e8874972:	c399                	beqz	a5,e8874978 <AecInit+0x18>
	{
		carplay_callback(data);
    e8874974:	0028                	addi	a0,sp,8
    e8874976:	9782                	jalr	a5
	}
}
    e8874978:	70e2                	ld	ra,56(sp)
    e887497a:	6121                	addi	sp,sp,64
    e887497c:	8082                	ret

00000000e887497e <AecUninit>:

void AecUninit(void)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_AEC_EXIT;
    e887497e:	47b5                	li	a5,13
{
    e8874980:	7139                	addi	sp,sp,-64
	data[0] = CARPLAY_DATA_AEC_EXIT;
    e8874982:	c43e                	sw	a5,8(sp)

	if(carplay_callback)
    e8874984:	0006f797          	auipc	a5,0x6f
    e8874988:	4ac78793          	addi	a5,a5,1196 # e88e3e30 <carplay_callback>
{
    e887498c:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e887498e:	639c                	ld	a5,0(a5)
    e8874990:	c399                	beqz	a5,e8874996 <AecUninit+0x18>
	{
		carplay_callback(data);
    e8874992:	0028                	addi	a0,sp,8
    e8874994:	9782                	jalr	a5
	}
}
    e8874996:	70e2                	ld	ra,56(sp)
    e8874998:	6121                	addi	sp,sp,64
    e887499a:	8082                	ret

00000000e887499c <AecProcess>:

void AecProcess(uint8_t* captbuf,uint8_t* playbuf,uint8_t* outbuf,int len)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_AEC_PROCESS;
    e887499c:	47b9                	li	a5,14
{
    e887499e:	7139                	addi	sp,sp,-64
	data[1] = captbuf;
    e88749a0:	e2a1578b          	swd	a5,a0,(sp),1,3
	data[2] = playbuf;
	data[3] = outbuf;
	data[4] = len;

	if(carplay_callback)
    e88749a4:	0006f797          	auipc	a5,0x6f
    e88749a8:	48c78793          	addi	a5,a5,1164 # e88e3e30 <carplay_callback>
{
    e88749ac:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e88749ae:	639c                	ld	a5,0(a5)
	data[3] = outbuf;
    e88749b0:	e4c1558b          	swd	a1,a2,(sp),2,3
	data[4] = len;
    e88749b4:	cc36                	sw	a3,24(sp)
	if(carplay_callback)
    e88749b6:	c399                	beqz	a5,e88749bc <AecProcess+0x20>
	{
		carplay_callback(data);
    e88749b8:	0028                	addi	a0,sp,8
    e88749ba:	9782                	jalr	a5
	}
}
    e88749bc:	70e2                	ld	ra,56(sp)
    e88749be:	6121                	addi	sp,sp,64
    e88749c0:	8082                	ret

00000000e88749c2 <EnterMain>:

void EnterMain(void)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_ENTER_MAIN;
    e88749c2:	47a5                	li	a5,9
{
    e88749c4:	7139                	addi	sp,sp,-64
	data[0] = CARPLAY_DATA_ENTER_MAIN;
    e88749c6:	c43e                	sw	a5,8(sp)

	if(carplay_callback)
    e88749c8:	0006f797          	auipc	a5,0x6f
    e88749cc:	46878793          	addi	a5,a5,1128 # e88e3e30 <carplay_callback>
{
    e88749d0:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e88749d2:	639c                	ld	a5,0(a5)
    e88749d4:	c399                	beqz	a5,e88749da <EnterMain+0x18>
	{
		carplay_callback(data);
    e88749d6:	0028                	addi	a0,sp,8
    e88749d8:	9782                	jalr	a5
	}
}
    e88749da:	70e2                	ld	ra,56(sp)
    e88749dc:	6121                	addi	sp,sp,64
    e88749de:	8082                	ret

00000000e88749e0 <SetPhoneBtAddr>:

void SetPhoneBtAddr(char *btaddr)
{
	uint32_t data[10];

	data[0] = CARPLAY_DATA_PHONE_ADDR;
    e88749e0:	47a9                	li	a5,10
{
    e88749e2:	7139                	addi	sp,sp,-64
	data[1] = btaddr;
    e88749e4:	e2a1578b          	swd	a5,a0,(sp),1,3

	if(carplay_callback)
    e88749e8:	0006f797          	auipc	a5,0x6f
    e88749ec:	44878793          	addi	a5,a5,1096 # e88e3e30 <carplay_callback>
{
    e88749f0:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e88749f2:	639c                	ld	a5,0(a5)
    e88749f4:	c399                	beqz	a5,e88749fa <SetPhoneBtAddr+0x1a>
	{
		carplay_callback(data);
    e88749f6:	0028                	addi	a0,sp,8
    e88749f8:	9782                	jalr	a5
	}
}
    e88749fa:	70e2                	ld	ra,56(sp)
    e88749fc:	6121                	addi	sp,sp,64
    e88749fe:	8082                	ret

00000000e8874a00 <_AirPlayHandleSessionControl.part.2>:
	_AirPlayHandleSessionControl( 	
    e8874a00:	db010113          	addi	sp,sp,-592
    e8874a04:	24813023          	sd	s0,576(sp)
		memset(bluetoothID,0,sizeof(bluetoothID));
    e8874a08:	0800                	addi	s0,sp,16
	_AirPlayHandleSessionControl( 	
    e8874a0a:	23213823          	sd	s2,560(sp)
		memset(bluetoothID,0,sizeof(bluetoothID));
    e8874a0e:	10000613          	li	a2,256
	_AirPlayHandleSessionControl( 	
    e8874a12:	892a                	mv	s2,a0
		memset(bluetoothID,0,sizeof(bluetoothID));
    e8874a14:	4581                	li	a1,0
    e8874a16:	8522                	mv	a0,s0
	_AirPlayHandleSessionControl( 	
    e8874a18:	24113423          	sd	ra,584(sp)
    e8874a1c:	22913c23          	sd	s1,568(sp)
    e8874a20:	23313423          	sd	s3,552(sp)
    e8874a24:	23413023          	sd	s4,544(sp)
    e8874a28:	21513c23          	sd	s5,536(sp)
		memset(bluetoothID,0,sizeof(bluetoothID));
    e8874a2c:	169070ef          	jal	ra,e887c394 <eLIBs_memset>
		memset(phoneBluetoothID,0,sizeof(phoneBluetoothID));
    e8874a30:	0a04                	addi	s1,sp,272
    e8874a32:	10000613          	li	a2,256
    e8874a36:	4581                	li	a1,0
    e8874a38:	8526                	mv	a0,s1
    e8874a3a:	15b070ef          	jal	ra,e887c394 <eLIBs_memset>
		CFDictionaryGetCString(inParams,CFSTR("deviceID"),bluetoothID,sizeof(bluetoothID),&err);
    e8874a3e:	0078                	addi	a4,sp,12
    e8874a40:	10000693          	li	a3,256
    e8874a44:	8622                	mv	a2,s0
    e8874a46:	0002a597          	auipc	a1,0x2a
    e8874a4a:	17258593          	addi	a1,a1,370 # e889ebb8 <icmp6_param_problem+0x1b4a>
    e8874a4e:	854a                	mv	a0,s2
    e8874a50:	fe6d70ef          	jal	ra,e884c236 <CFDictionaryGetCString>
		app_ulog( kLogLevelNotice, "Disable Bluetooth session control request,id %s\n",bluetoothID);
    e8874a54:	00061517          	auipc	a0,0x61
    e8874a58:	ab450513          	addi	a0,a0,-1356 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8874a5c:	411c                	lw	a5,0(a0)
    e8874a5e:	03200713          	li	a4,50
    e8874a62:	02f74663          	blt	a4,a5,e8874a8e <_AirPlayHandleSessionControl.part.2+0x8e>
    e8874a66:	577d                	li	a4,-1
    e8874a68:	08e78163          	beq	a5,a4,e8874aea <_AirPlayHandleSessionControl.part.2+0xea>
    e8874a6c:	8722                	mv	a4,s0
    e8874a6e:	00058697          	auipc	a3,0x58
    e8874a72:	f3a68693          	addi	a3,a3,-198 # e88cc9a8 <kCarPlayControllerClass.11452+0x280>
    e8874a76:	03200613          	li	a2,50
    e8874a7a:	00058597          	auipc	a1,0x58
    e8874a7e:	07658593          	addi	a1,a1,118 # e88ccaf0 <__PRETTY_FUNCTION__.11691>
    e8874a82:	00061517          	auipc	a0,0x61
    e8874a86:	a8650513          	addi	a0,a0,-1402 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8874a8a:	9ebdf0ef          	jal	ra,e8854474 <LogPrintF>
	_AirPlayHandleSessionControl( 	
    e8874a8e:	4901                	li	s2,0
    e8874a90:	4781                	li	a5,0
			if(bluetoothID[i] != ':')
    e8874a92:	03a00a13          	li	s4,58
		for(i=0,j=0;i<17;i++)
    e8874a96:	49c5                	li	s3,17
			if(bluetoothID[i] != ':')
    e8874a98:	8124470b          	lrbu	a4,s0,s2,0
    e8874a9c:	01470a63          	beq	a4,s4,e8874ab0 <_AirPlayHandleSessionControl.part.2+0xb0>
				SetPhoneBtAddr(phoneBluetoothID);
    e8874aa0:	8526                	mv	a0,s1
				phoneBluetoothID[j++] = bluetoothID[i];
    e8874aa2:	00178a9b          	addiw	s5,a5,1
    e8874aa6:	00f4d70b          	srb	a4,s1,a5,0
				SetPhoneBtAddr(phoneBluetoothID);
    e8874aaa:	f37ff0ef          	jal	ra,e88749e0 <SetPhoneBtAddr>
				phoneBluetoothID[j++] = bluetoothID[i];
    e8874aae:	87d6                	mv	a5,s5
		for(i=0,j=0;i<17;i++)
    e8874ab0:	0905                	addi	s2,s2,1
    e8874ab2:	ff3913e3          	bne	s2,s3,e8874a98 <_AirPlayHandleSessionControl.part.2+0x98>
		printf("receive phone bluetooth id %s,%s\r\n",bluetoothID,phoneBluetoothID);
    e8874ab6:	8626                	mv	a2,s1
    e8874ab8:	85a2                	mv	a1,s0
    e8874aba:	00058517          	auipc	a0,0x58
    e8874abe:	f2650513          	addi	a0,a0,-218 # e88cc9e0 <kCarPlayControllerClass.11452+0x2b8>
    e8874ac2:	005070ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e8874ac6:	24013403          	ld	s0,576(sp)
    e8874aca:	24813083          	ld	ra,584(sp)
    e8874ace:	23813483          	ld	s1,568(sp)
    e8874ad2:	23013903          	ld	s2,560(sp)
    e8874ad6:	22813983          	ld	s3,552(sp)
    e8874ada:	22013a03          	ld	s4,544(sp)
    e8874ade:	21813a83          	ld	s5,536(sp)
    e8874ae2:	4501                	li	a0,0
    e8874ae4:	25010113          	addi	sp,sp,592
    e8874ae8:	8082                	ret
		app_ulog( kLogLevelNotice, "Disable Bluetooth session control request,id %s\n",bluetoothID);
    e8874aea:	03200593          	li	a1,50
    e8874aee:	d84df0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8874af2:	dd51                	beqz	a0,e8874a8e <_AirPlayHandleSessionControl.part.2+0x8e>
    e8874af4:	bfa5                	j	e8874a6c <_AirPlayHandleSessionControl.part.2+0x6c>

00000000e8874af6 <_AirPlayHandleSessionControl>:
{
    e8874af6:	1101                	addi	sp,sp,-32
    e8874af8:	852e                	mv	a0,a1
	if( CFEqual( inCommand, CFSTR( kAirPlayCommand_DisableBluetooth ) ) )
    e8874afa:	0002a597          	auipc	a1,0x2a
    e8874afe:	10658593          	addi	a1,a1,262 # e889ec00 <icmp6_param_problem+0x1b92>
{
    e8874b02:	e436                	sd	a3,8(sp)
    e8874b04:	ec06                	sd	ra,24(sp)
	if( CFEqual( inCommand, CFSTR( kAirPlayCommand_DisableBluetooth ) ) )
    e8874b06:	e48d20ef          	jal	ra,e884714e <CFEqual>
    e8874b0a:	66a2                	ld	a3,8(sp)
    e8874b0c:	c511                	beqz	a0,e8874b18 <_AirPlayHandleSessionControl+0x22>
}
    e8874b0e:	60e2                	ld	ra,24(sp)
    e8874b10:	8536                	mv	a0,a3
    e8874b12:	6105                	addi	sp,sp,32
    e8874b14:	eedff06f          	j	e8874a00 <_AirPlayHandleSessionControl.part.2>
		app_ulog( kLogLevelNotice, "Unsupported session control request\n" );
    e8874b18:	00061517          	auipc	a0,0x61
    e8874b1c:	9f050513          	addi	a0,a0,-1552 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8874b20:	411c                	lw	a5,0(a0)
    e8874b22:	03200713          	li	a4,50
    e8874b26:	00f75863          	bge	a4,a5,e8874b36 <_AirPlayHandleSessionControl+0x40>
}
    e8874b2a:	60e2                	ld	ra,24(sp)
        err = kNotHandledErr;
    e8874b2c:	7579                	lui	a0,0xffffe
    e8874b2e:	5c650513          	addi	a0,a0,1478 # ffffffffffffe5c6 <__DRAM0_INF_BASE+0xffffffff0000e5c6>
}
    e8874b32:	6105                	addi	sp,sp,32
    e8874b34:	8082                	ret
		app_ulog( kLogLevelNotice, "Unsupported session control request\n" );
    e8874b36:	577d                	li	a4,-1
    e8874b38:	02e78363          	beq	a5,a4,e8874b5e <_AirPlayHandleSessionControl+0x68>
    e8874b3c:	00058697          	auipc	a3,0x58
    e8874b40:	ecc68693          	addi	a3,a3,-308 # e88cca08 <kCarPlayControllerClass.11452+0x2e0>
    e8874b44:	03200613          	li	a2,50
    e8874b48:	00058597          	auipc	a1,0x58
    e8874b4c:	fa858593          	addi	a1,a1,-88 # e88ccaf0 <__PRETTY_FUNCTION__.11691>
    e8874b50:	00061517          	auipc	a0,0x61
    e8874b54:	9b850513          	addi	a0,a0,-1608 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8874b58:	91ddf0ef          	jal	ra,e8854474 <LogPrintF>
    e8874b5c:	b7f9                	j	e8874b2a <_AirPlayHandleSessionControl+0x34>
    e8874b5e:	03200593          	li	a1,50
    e8874b62:	d10df0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8874b66:	d171                	beqz	a0,e8874b2a <_AirPlayHandleSessionControl+0x34>
    e8874b68:	bfd1                	j	e8874b3c <_AirPlayHandleSessionControl+0x46>

00000000e8874b6a <StatusNotify>:

void StatusNotify(int status)
{
    e8874b6a:	7139                	addi	sp,sp,-64
    e8874b6c:	f822                	sd	s0,48(sp)
	uint32_t data[10];

	printf("StatusNotify %d\n",status);
    e8874b6e:	85aa                	mv	a1,a0
{
    e8874b70:	842a                	mv	s0,a0
	printf("StatusNotify %d\n",status);
    e8874b72:	00058517          	auipc	a0,0x58
    e8874b76:	d3e50513          	addi	a0,a0,-706 # e88cc8b0 <kCarPlayControllerClass.11452+0x188>
{
    e8874b7a:	fc06                	sd	ra,56(sp)
	printf("StatusNotify %d\n",status);
    e8874b7c:	74a070ef          	jal	ra,e887c2c6 <eLIBs_printf>

	data[0] = CARPLAY_DATA_STATUS_NOTIFY;
    e8874b80:	47ad                	li	a5,11
	data[1] = status;
    e8874b82:	e281578b          	swd	a5,s0,(sp),1,3

	if(carplay_callback)
    e8874b86:	0006f797          	auipc	a5,0x6f
    e8874b8a:	2aa78793          	addi	a5,a5,682 # e88e3e30 <carplay_callback>
    e8874b8e:	639c                	ld	a5,0(a5)
    e8874b90:	c399                	beqz	a5,e8874b96 <StatusNotify+0x2c>
	{
		carplay_callback(data);
    e8874b92:	0028                	addi	a0,sp,8
    e8874b94:	9782                	jalr	a5
	}
}
    e8874b96:	70e2                	ld	ra,56(sp)
    e8874b98:	7442                	ld	s0,48(sp)
    e8874b9a:	6121                	addi	sp,sp,64
    e8874b9c:	8082                	ret

00000000e8874b9e <_AirPlayHandleRequestUI>:
{
    e8874b9e:	1101                	addi	sp,sp,-32
    e8874ba0:	ec06                	sd	ra,24(sp)
	if( inURL ) {
    e8874ba2:	c9a9                	beqz	a1,e8874bf4 <_AirPlayHandleRequestUI+0x56>
    e8874ba4:	852e                	mv	a0,a1
		CFLStringGetCStringPtr( inURL, &str, &len);
    e8874ba6:	0030                	addi	a2,sp,8
    e8874ba8:	858a                	mv	a1,sp
    e8874baa:	c3cd40ef          	jal	ra,e8848fe6 <CFLStringGetCStringPtr>
	app_ulog( kLogLevelNotice, "Request accessory UI: \"%s\"\n", str ? str : "null" );
    e8874bae:	00061517          	auipc	a0,0x61
    e8874bb2:	95a50513          	addi	a0,a0,-1702 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8874bb6:	411c                	lw	a5,0(a0)
    e8874bb8:	03200713          	li	a4,50
    e8874bbc:	04f74363          	blt	a4,a5,e8874c02 <_AirPlayHandleRequestUI+0x64>
    e8874bc0:	577d                	li	a4,-1
    e8874bc2:	02e78b63          	beq	a5,a4,e8874bf8 <_AirPlayHandleRequestUI+0x5a>
    e8874bc6:	6702                	ld	a4,0(sp)
    e8874bc8:	e709                	bnez	a4,e8874bd2 <_AirPlayHandleRequestUI+0x34>
    e8874bca:	00058717          	auipc	a4,0x58
    e8874bce:	cfe70713          	addi	a4,a4,-770 # e88cc8c8 <kCarPlayControllerClass.11452+0x1a0>
    e8874bd2:	00058697          	auipc	a3,0x58
    e8874bd6:	cfe68693          	addi	a3,a3,-770 # e88cc8d0 <kCarPlayControllerClass.11452+0x1a8>
    e8874bda:	03200613          	li	a2,50
    e8874bde:	00058597          	auipc	a1,0x58
    e8874be2:	efa58593          	addi	a1,a1,-262 # e88ccad8 <__PRETTY_FUNCTION__.11677>
    e8874be6:	00061517          	auipc	a0,0x61
    e8874bea:	92250513          	addi	a0,a0,-1758 # e88d5508 <gLogCategory_CarPlayDemoApp>
    e8874bee:	887df0ef          	jal	ra,e8854474 <LogPrintF>
    e8874bf2:	a801                	j	e8874c02 <_AirPlayHandleRequestUI+0x64>
		str = NULL;
    e8874bf4:	e002                	sd	zero,0(sp)
    e8874bf6:	bf65                	j	e8874bae <_AirPlayHandleRequestUI+0x10>
	app_ulog( kLogLevelNotice, "Request accessory UI: \"%s\"\n", str ? str : "null" );
    e8874bf8:	03200593          	li	a1,50
    e8874bfc:	c76df0ef          	jal	ra,e8854072 <_LogCategory_Initialize>
    e8874c00:	f179                	bnez	a0,e8874bc6 <_AirPlayHandleRequestUI+0x28>
	EnterMain();
    e8874c02:	dc1ff0ef          	jal	ra,e88749c2 <EnterMain>
	StatusNotify(LINK_REQUEST_HIDE);
    e8874c06:	4571                	li	a0,28
    e8874c08:	f63ff0ef          	jal	ra,e8874b6a <StatusNotify>
}
    e8874c0c:	60e2                	ld	ra,24(sp)
    e8874c0e:	6105                	addi	sp,sp,32
    e8874c10:	8082                	ret

00000000e8874c12 <_AirPlayHandleModesChanged>:
{
    e8874c12:	1101                	addi	sp,sp,-32
    e8874c14:	e84a                	sd	s2,16(sp)
	if(!carplay_talking)
    e8874c16:	0006f917          	auipc	s2,0x6f
    e8874c1a:	23290913          	addi	s2,s2,562 # e88e3e48 <carplay_talking>
    e8874c1e:	00092783          	lw	a5,0(s2)
{
    e8874c22:	f891540b          	sdd	s0,s1,(sp),0,4
    e8874c26:	ec06                	sd	ra,24(sp)
    e8874c28:	842e                	mv	s0,a1
	if(!carplay_talking)
    e8874c2a:	eb91                	bnez	a5,e8874c3e <_AirPlayHandleModesChanged+0x2c>
		if(inState->phoneCall == kAirPlayEntity_Controller)
    e8874c2c:	459c                	lw	a5,8(a1)
    e8874c2e:	4705                	li	a4,1
    e8874c30:	00e79763          	bne	a5,a4,e8874c3e <_AirPlayHandleModesChanged+0x2c>
			StatusNotify(LINK_CALL_PHONE);
    e8874c34:	4531                	li	a0,12
			carplay_talking = TRUE;
    e8874c36:	00f92023          	sw	a5,0(s2)
			StatusNotify(LINK_CALL_PHONE);
    e8874c3a:	f31ff0ef          	jal	ra,e8874b6a <StatusNotify>
    if(!carplay_recognition)
    e8874c3e:	0006f497          	auipc	s1,0x6f
    e8874c42:	1fe48493          	addi	s1,s1,510 # e88e3e3c <carplay_recognition>
    e8874c46:	409c                	lw	a5,0(s1)
    e8874c48:	ef81                	bnez	a5,e8874c60 <_AirPlayHandleModesChanged+0x4e>
        if(/*inState->screen == kAirPlayEntity_Accessory && */inState->phoneCall == kAirPlayEntity_NotApplicable)
    e8874c4a:	441c                	lw	a5,8(s0)
    e8874c4c:	eb91                	bnez	a5,e8874c60 <_AirPlayHandleModesChanged+0x4e>
            if(inState->speech.mode == kAirPlaySpeechMode_Speaking || inState->speech.mode == kAirPlaySpeechMode_Recognizing)
    e8874c4e:	481c                	lw	a5,16(s0)
    e8874c50:	4705                	li	a4,1
    e8874c52:	37fd                	addiw	a5,a5,-1
    e8874c54:	00f76663          	bltu	a4,a5,e8874c60 <_AirPlayHandleModesChanged+0x4e>
    			StatusNotify(LINK_SPEECH_RECOGNITION);
    e8874c58:	4561                	li	a0,24
                carplay_recognition = 1;
    e8874c5a:	c098                	sw	a4,0(s1)
    			StatusNotify(LINK_SPEECH_RECOGNITION);
    e8874c5c:	f0fff0ef          	jal	ra,e8874b6a <StatusNotify>
	if(carplay_talking)
    e8874c60:	00092783          	lw	a5,0(s2)
    e8874c64:	cf81                	beqz	a5,e8874c7c <_AirPlayHandleModesChanged+0x6a>
		if(inState->phoneCall != kAirPlayEntity_Controller)
    e8874c66:	4418                	lw	a4,8(s0)
    e8874c68:	4785                	li	a5,1
    e8874c6a:	00f70963          	beq	a4,a5,e8874c7c <_AirPlayHandleModesChanged+0x6a>
			StatusNotify(LINK_CALL_PHONE_EXITED);
    e8874c6e:	4535                	li	a0,13
			carplay_talking = FALSE;
    e8874c70:	0006f797          	auipc	a5,0x6f
    e8874c74:	1c07ac23          	sw	zero,472(a5) # e88e3e48 <carplay_talking>
			StatusNotify(LINK_CALL_PHONE_EXITED);
    e8874c78:	ef3ff0ef          	jal	ra,e8874b6a <StatusNotify>
    if(carplay_recognition)
    e8874c7c:	409c                	lw	a5,0(s1)
    e8874c7e:	c395                	beqz	a5,e8874ca2 <_AirPlayHandleModesChanged+0x90>
        if(inState->speech.mode == kAirPlaySpeechMode_None || inState->speech.mode == kAirPlaySpeechMode_NotApplicable)
    e8874c80:	481c                	lw	a5,16(s0)
    e8874c82:	4705                	li	a4,1
    e8874c84:	2785                	addiw	a5,a5,1
    e8874c86:	00f76e63          	bltu	a4,a5,e8874ca2 <_AirPlayHandleModesChanged+0x90>
}
    e8874c8a:	f891440b          	ldd	s0,s1,(sp),0,4
    e8874c8e:	60e2                	ld	ra,24(sp)
    e8874c90:	6942                	ld	s2,16(sp)
            carplay_recognition = 0;
    e8874c92:	0006f797          	auipc	a5,0x6f
    e8874c96:	1a07a523          	sw	zero,426(a5) # e88e3e3c <carplay_recognition>
    		StatusNotify(LINK_SPEECH_RECOGNITION_EXITED);
    e8874c9a:	4565                	li	a0,25
}
    e8874c9c:	6105                	addi	sp,sp,32
    		StatusNotify(LINK_SPEECH_RECOGNITION_EXITED);
    e8874c9e:	ecdff06f          	j	e8874b6a <StatusNotify>
}
    e8874ca2:	60e2                	ld	ra,24(sp)
    e8874ca4:	f891440b          	ldd	s0,s1,(sp),0,4
    e8874ca8:	6942                	ld	s2,16(sp)
    e8874caa:	6105                	addi	sp,sp,32
    e8874cac:	8082                	ret

00000000e8874cae <UpdateMediaInfo>:
{
	uint32_t data[10];

	//printf("UpdateMediaInfo %d\n",type);

	data[0] = CARPLAY_DATA_MEDIA_INFO;
    e8874cae:	47bd                	li	a5,15
{
    e8874cb0:	7139                	addi	sp,sp,-64
	data[1] = type;
    e8874cb2:	e2a1578b          	swd	a5,a0,(sp),1,3
	data[2] = info;

	if(carplay_callback)
    e8874cb6:	0006f797          	auipc	a5,0x6f
    e8874cba:	17a78793          	addi	a5,a5,378 # e88e3e30 <carplay_callback>
{
    e8874cbe:	fc06                	sd	ra,56(sp)
	if(carplay_callback)
    e8874cc0:	639c                	ld	a5,0(a5)
	data[2] = info;
    e8874cc2:	c82e                	sw	a1,16(sp)
	if(carplay_callback)
    e8874cc4:	c399                	beqz	a5,e8874cca <UpdateMediaInfo+0x1c>
	{
		carplay_callback(data);
    e8874cc6:	0028                	addi	a0,sp,8
    e8874cc8:	9782                	jalr	a5
	}
}
    e8874cca:	70e2                	ld	ra,56(sp)
    e8874ccc:	6121                	addi	sp,sp,64
    e8874cce:	8082                	ret

00000000e8874cd0 <UpdateDeviceTime>:

void UpdateDeviceTime(int year,int month,int day,int hour,int minute,int second)
{
    e8874cd0:	7139                	addi	sp,sp,-64
	data[1] = year;
	data[2] = month;
	data[3] = day;
	data[4] = hour;
	data[5] = minute;
	data[6] = second;
    e8874cd2:	d03e                	sw	a5,32(sp)

	if(carplay_callback)
    e8874cd4:	0006f797          	auipc	a5,0x6f
    e8874cd8:	15c78793          	addi	a5,a5,348 # e88e3e30 <carplay_callback>
{
    e8874cdc:	fc06                	sd	ra,56(sp)
	data[0] = CARPLAY_DATA_LOCAL_TIME;
    e8874cde:	4841                	li	a6,16
	if(carplay_callback)
    e8874ce0:	639c                	ld	a5,0(a5)
	data[1] = year;
    e8874ce2:	e2a1580b          	swd	a6,a0,(sp),1,3
	data[3] = day;
    e8874ce6:	e4c1558b          	swd	a1,a2,(sp),2,3
	data[4] = hour;
    e8874cea:	cc36                	sw	a3,24(sp)
	data[5] = minute;
    e8874cec:	ce3a                	sw	a4,28(sp)
	if(carplay_callback)
    e8874cee:	c399                	beqz	a5,e8874cf4 <UpdateDeviceTime+0x24>
	{
		carplay_callback(data);
    e8874cf0:	0028                	addi	a0,sp,8
    e8874cf2:	9782                	jalr	a5
	}
}
    e8874cf4:	70e2                	ld	ra,56(sp)
    e8874cf6:	6121                	addi	sp,sp,64
    e8874cf8:	8082                	ret

00000000e8874cfa <IsCarPlayStart>:

BOOL IsCarPlayStart(void)
{
    return carplay_start;
}
    e8874cfa:	0006f797          	auipc	a5,0x6f
    e8874cfe:	14a78793          	addi	a5,a5,330 # e88e3e44 <carplay_start>
    e8874d02:	4388                	lw	a0,0(a5)
    e8874d04:	8082                	ret

00000000e8874d06 <_AudioStreamGetTypeID>:
	dispatch_once_f( &gAudioStreamInitOnce, NULL, _AudioStreamGetTypeID );
	return( gAudioStreamTypeID );
}

static void _AudioStreamGetTypeID( void *inContext )
{
    e8874d06:	1141                	addi	sp,sp,-16
	(void) inContext;
	
	gAudioStreamTypeID = _CFRuntimeRegisterClass( &kAudioStreamClass );
    e8874d08:	00058517          	auipc	a0,0x58
    e8874d0c:	12050513          	addi	a0,a0,288 # e88cce28 <kAudioStreamClass>
{
    e8874d10:	e406                	sd	ra,8(sp)
	gAudioStreamTypeID = _CFRuntimeRegisterClass( &kAudioStreamClass );
    e8874d12:	a3dd20ef          	jal	ra,e884774e <_CFRuntimeRegisterClass>
    e8874d16:	0006f797          	auipc	a5,0x6f
    e8874d1a:	2ca7a923          	sw	a0,722(a5) # e88e3fe8 <gAudioStreamTypeID>
	check( gAudioStreamTypeID != _kCFRuntimeNotATypeID );
}
    e8874d1e:	60a2                	ld	ra,8(sp)
    e8874d20:	0141                	addi	sp,sp,16
    e8874d22:	8082                	ret

00000000e8874d24 <_AudioStreamFinalize>:
	
	check( !me->inputPCMHandle );
	check( !me->outputPCMHandle );
	check( !me->inputBuffer );
	check( !me->outputBuffer );
	ForgetMem( &me->threadName );
    e8874d24:	11853783          	ld	a5,280(a0)
    e8874d28:	cf91                	beqz	a5,e8874d44 <_AudioStreamFinalize+0x20>
{
    e8874d2a:	1141                	addi	sp,sp,-16
    e8874d2c:	e022                	sd	s0,0(sp)
    e8874d2e:	842a                	mv	s0,a0
	ForgetMem( &me->threadName );
    e8874d30:	853e                	mv	a0,a5
{
    e8874d32:	e406                	sd	ra,8(sp)
	ForgetMem( &me->threadName );
    e8874d34:	5cc070ef          	jal	ra,e887c300 <eLIBs_free>
    e8874d38:	10043c23          	sd	zero,280(s0)
}
    e8874d3c:	60a2                	ld	ra,8(sp)
    e8874d3e:	6402                	ld	s0,0(sp)
    e8874d40:	0141                	addi	sp,sp,16
    e8874d42:	8082                	ret
    e8874d44:	8082                	ret

00000000e8874d46 <_AudioStreamRampVolumeCanceled>:
	if( ( me->rampCurrentStep != me->rampTotalSteps ) && ( me->rampCurrentVolume != me->rampFinalVolume ) )
	{
		as_dlog( kLogLevelTrace, "Ramp volume canceled at %d of %d, volume %f of %f\n", 
			me->rampCurrentStep, me->rampTotalSteps, me->rampCurrentVolume, me->rampFinalVolume );
	}
	CFRelease( me );
    e8874d46:	c04d206f          	j	e884714a <CFRelease>

00000000e8874d4a <_AudioStreamRampVolumeTimer>:
	me->rampCurrentVolume += me->rampGain;
    e8874d4a:	3158                	fld	fa4,160(a0)
    e8874d4c:	395c                	fld	fa5,176(a0)
	done = ( ( ++me->rampCurrentStep >= me->rampTotalSteps ) || ( me->rampCurrentVolume == me->rampFinalVolume ) );
    e8874d4e:	0b852783          	lw	a5,184(a0)
    e8874d52:	4705                	li	a4,1
	me->rampCurrentVolume += me->rampGain;
    e8874d54:	02f77753          	fadd.d	fa4,fa4,fa5
	done = ( ( ++me->rampCurrentStep >= me->rampTotalSteps ) || ( me->rampCurrentVolume == me->rampFinalVolume ) );
    e8874d58:	0017869b          	addiw	a3,a5,1
    e8874d5c:	0bc52783          	lw	a5,188(a0)
    e8874d60:	0ad52c23          	sw	a3,184(a0)
    e8874d64:	355c                	fld	fa5,168(a0)
	me->rampCurrentVolume += me->rampGain;
    e8874d66:	b158                	fsd	fa4,160(a0)
	done = ( ( ++me->rampCurrentStep >= me->rampTotalSteps ) || ( me->rampCurrentVolume == me->rampFinalVolume ) );
    e8874d68:	00f6d863          	bge	a3,a5,e8874d78 <_AudioStreamRampVolumeTimer+0x2e>
	AudioStreamSetVolume( me, done ? me->rampFinalVolume : me->rampCurrentVolume );
    e8874d6c:	a2f727d3          	feq.d	a5,fa4,fa5
    e8874d70:	e781                	bnez	a5,e8874d78 <_AudioStreamRampVolumeTimer+0x2e>
    e8874d72:	22e707d3          	fmv.d	fa5,fa4
	done = ( ( ++me->rampCurrentStep >= me->rampTotalSteps ) || ( me->rampCurrentVolume == me->rampFinalVolume ) );
    e8874d76:	4701                	li	a4,0
	me->outputVolume = inVolume*100;
    e8874d78:	00058797          	auipc	a5,0x58
    e8874d7c:	0a87b707          	fld	fa4,168(a5) # e88cce20 <__PRETTY_FUNCTION__.11813+0x310>
    e8874d80:	12e7f7d3          	fmul.d	fa5,fa5,fa4
    e8874d84:	c20797d3          	fcvt.w.d	a5,fa5,rtz
    e8874d88:	08f52823          	sw	a5,144(a0)
	if( done )
    e8874d8c:	c31d                	beqz	a4,e8874db2 <_AudioStreamRampVolumeTimer+0x68>
		dispatch_source_forget( &me->rampTimer );
    e8874d8e:	6d5c                	ld	a5,152(a0)
    e8874d90:	c38d                	beqz	a5,e8874db2 <_AudioStreamRampVolumeTimer+0x68>
{
    e8874d92:	1141                	addi	sp,sp,-16
    e8874d94:	e022                	sd	s0,0(sp)
    e8874d96:	842a                	mv	s0,a0
		dispatch_source_forget( &me->rampTimer );
    e8874d98:	853e                	mv	a0,a5
{
    e8874d9a:	e406                	sd	ra,8(sp)
		dispatch_source_forget( &me->rampTimer );
    e8874d9c:	eabda0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8874da0:	6c48                	ld	a0,152(s0)
    e8874da2:	cafd90ef          	jal	ra,e884ea50 <dispatch_release>
    e8874da6:	08043c23          	sd	zero,152(s0)
}
    e8874daa:	60a2                	ld	ra,8(sp)
    e8874dac:	6402                	ld	s0,0(sp)
    e8874dae:	0141                	addi	sp,sp,16
    e8874db0:	8082                	ret
    e8874db2:	8082                	ret

00000000e8874db4 <ConverAudio>:
	int16_t *src = srcBuffer;
	int16_t *dest = destBuffer;
	int i,j,k;
	int ratio;

	if(rate == 48000 && chn == 2 && vol == 100)
    e8874db4:	6831                	lui	a6,0xc
    e8874db6:	b8080813          	addi	a6,a6,-1152 # bb80 <memcmp-0xe87f4480>
    e8874dba:	01061f63          	bne	a2,a6,e8874dd8 <ConverAudio+0x24>
    e8874dbe:	4809                	li	a6,2
    e8874dc0:	03069b63          	bne	a3,a6,e8874df6 <ConverAudio+0x42>
    e8874dc4:	06400813          	li	a6,100
    e8874dc8:	03071763          	bne	a4,a6,e8874df6 <ConverAudio+0x42>
	{
		memcpy(destBuffer,srcBuffer,len);
    e8874dcc:	7c05b60b          	extu	a2,a1,31,0
    e8874dd0:	85aa                	mv	a1,a0
    e8874dd2:	853e                	mv	a0,a5
    e8874dd4:	5cc0706f          	j	e887c3a0 <eLIBs_memcpy>
		return;
	}

	switch(rate)
    e8874dd8:	6811                	lui	a6,0x4
    e8874dda:	e8080813          	addi	a6,a6,-384 # 3e80 <memcmp-0xe87fc180>
    e8874dde:	01060c63          	beq	a2,a6,e8874df6 <ConverAudio+0x42>
    e8874de2:	6819                	lui	a6,0x6
    e8874de4:	dc080813          	addi	a6,a6,-576 # 5dc0 <memcmp-0xe87fa240>
    e8874de8:	01060763          	beq	a2,a6,e8874df6 <ConverAudio+0x42>
    e8874dec:	6809                	lui	a6,0x2
    e8874dee:	f4080813          	addi	a6,a6,-192 # 1f40 <memcmp-0xe87fe0c0>
    e8874df2:	07061763          	bne	a2,a6,e8874e60 <ConverAudio+0xac>
	{
		case 8000:
		case 16000:
		case 24000:
		case 48000:
			ratio = 48000/rate*2/chn;
    e8874df6:	6831                	lui	a6,0xc
    e8874df8:	b808081b          	addiw	a6,a6,-1152
    e8874dfc:	02c8583b          	divuw	a6,a6,a2
	{
		int32_t value = src[i];
		value = value*vol/100;
        if(value > 32767)
        {
           value = 32767; 
    e8874e00:	6321                	lui	t1,0x8
        }
        else if(value < -32768)
    e8874e02:	ffce0e37          	lui	t3,0xffce0
	for(i=0,j=0;i<len/2;i++)
    e8874e06:	7c15b58b          	extu	a1,a1,31,1
    e8874e0a:	4601                	li	a2,0
    e8874e0c:	4881                	li	a7,0
        if(value > 32767)
    e8874e0e:	00320fb7          	lui	t6,0x320
           value = 32767; 
    e8874e12:	137d                	addi	t1,t1,-1
        else if(value < -32768)
    e8874e14:	f9de0e13          	addi	t3,t3,-99 # ffffffffffcdff9d <__DRAM0_INF_BASE+0xfffffffeffceff9d>
		value = value*vol/100;
    e8874e18:	06400293          	li	t0,100
			ratio = 48000/rate*2/chn;
    e8874e1c:	0018181b          	slliw	a6,a6,0x1
    e8874e20:	02d856bb          	divuw	a3,a6,a3
	for(i=0,j=0;i<len/2;i++)
    e8874e24:	0006081b          	sext.w	a6,a2
    e8874e28:	00b86363          	bltu	a6,a1,e8874e2e <ConverAudio+0x7a>
    e8874e2c:	8082                	ret
		int32_t value = src[i];
    e8874e2e:	22c5480b          	lrh	a6,a0,a2,1
           value = 32767; 
    e8874e32:	8e9a                	mv	t4,t1
		value = value*vol/100;
    e8874e34:	02e80f3b          	mulw	t5,a6,a4
        if(value > 32767)
    e8874e38:	01ff5763          	bge	t5,t6,e8874e46 <ConverAudio+0x92>
        {
           value = -32768; 
    e8874e3c:	7ee1                	lui	t4,0xffff8
        else if(value < -32768)
    e8874e3e:	01cf4463          	blt	t5,t3,e8874e46 <ConverAudio+0x92>
		value = value*vol/100;
    e8874e42:	025f4ebb          	divw	t4,t5,t0
        }
		for(k=0;k<ratio;k++)
    e8874e46:	4801                	li	a6,0
    e8874e48:	01180f3b          	addw	t5,a6,a7
    e8874e4c:	00d84663          	blt	a6,a3,e8874e58 <ConverAudio+0xa4>
    e8874e50:	011688bb          	addw	a7,a3,a7
	for(i=0,j=0;i<len/2;i++)
    e8874e54:	0605                	addi	a2,a2,1
    e8874e56:	b7f9                	j	e8874e24 <ConverAudio+0x70>
		{
			dest[j++] = value;
    e8874e58:	23e7de8b          	srh	t4,a5,t5,1
		for(k=0;k<ratio;k++)
    e8874e5c:	2805                	addiw	a6,a6,1
    e8874e5e:	b7ed                	j	e8874e48 <ConverAudio+0x94>
			printf("error sample rate %d\n",rate);
    e8874e60:	85b2                	mv	a1,a2
    e8874e62:	00058517          	auipc	a0,0x58
    e8874e66:	fa650513          	addi	a0,a0,-90 # e88cce08 <__PRETTY_FUNCTION__.11813+0x2f8>
    e8874e6a:	45c0706f          	j	e887c2c6 <eLIBs_printf>

00000000e8874e6e <AudioOutputThread>:
	OSStatus					err;
	uint64_t                    lastTime,thisTime;
	uint8_t						*MainOutputBuffer,*AltOutputBuffer;
	uint8_t						*pRawData = NULL;

	OutputThreadRun = TRUE;
    e8874e6e:	4785                	li	a5,1
{
    e8874e70:	7159                	addi	sp,sp,-112
    e8874e72:	f486                	sd	ra,104(sp)
	OutputThreadRun = TRUE;
    e8874e74:	0006f717          	auipc	a4,0x6f
    e8874e78:	16f72423          	sw	a5,360(a4) # e88e3fdc <OutputThreadRun>
{
    e8874e7c:	f0a2                	sd	s0,96(sp)
    e8874e7e:	eca6                	sd	s1,88(sp)
    e8874e80:	e4ce                	sd	s3,72(sp)
    e8874e82:	fc56                	sd	s5,56(sp)
    e8874e84:	f85a                	sd	s6,48(sp)
    e8874e86:	f45e                	sd	s7,40(sp)
    e8874e88:	e86a                	sd	s10,16(sp)
    e8874e8a:	e8ca                	sd	s2,80(sp)
    e8874e8c:	e0d2                	sd	s4,64(sp)
    e8874e8e:	f062                	sd	s8,32(sp)
    e8874e90:	ec66                	sd	s9,24(sp)
    e8874e92:	e46e                	sd	s11,8(sp)
    pthread_setname_np_compat("AudioOutputThread");
    e8874e94:	367060ef          	jal	ra,e887b9fa <pthread_self>
    e8874e98:	2501                	sext.w	a0,a0
    e8874e9a:	00058597          	auipc	a1,0x58
    e8874e9e:	e5658593          	addi	a1,a1,-426 # e88cccf0 <__PRETTY_FUNCTION__.11813+0x1e0>
    e8874ea2:	733060ef          	jal	ra,e887bdd4 <pthread_setname_np>
	printf("AudioOutputThread start run %d\n",pthread_self());
	
	uint32_t len = ( 48000 * kDefaultLatencyMs * 4 ) / 1000;
	MainOutputBuffer = (uint8_t *) malloc( len );
    e8874ea6:	6409                	lui	s0,0x2
	printf("AudioOutputThread start run %d\n",pthread_self());
    e8874ea8:	353060ef          	jal	ra,e887b9fa <pthread_self>
    e8874eac:	0005059b          	sext.w	a1,a0
    e8874eb0:	00058517          	auipc	a0,0x58
    e8874eb4:	e5850513          	addi	a0,a0,-424 # e88ccd08 <__PRETTY_FUNCTION__.11813+0x1f8>
    e8874eb8:	40e070ef          	jal	ra,e887c2c6 <eLIBs_printf>
	uint8_t						*pRawData = NULL;
    e8874ebc:	4981                	li	s3,0
	MainOutputBuffer = (uint8_t *) malloc( len );
    e8874ebe:	e0040513          	addi	a0,s0,-512 # 1e00 <memcmp-0xe87fe200>
    e8874ec2:	18d060ef          	jal	ra,e887b84e <my_malloc>
    e8874ec6:	84aa                	mv	s1,a0
	AltOutputBuffer = (uint8_t *) malloc( len );
    e8874ec8:	e0040513          	addi	a0,s0,-512
    e8874ecc:	183060ef          	jal	ra,e887b84e <my_malloc>
    e8874ed0:	8aaa                	mv	s5,a0
		}
		//if(UpMilliseconds() - lastTime >= kDefaultLatencyMs)
		{
			//lastTime += kDefaultLatencyMs;

			memclr(MainOutputBuffer,len);
    e8874ed2:	e0040413          	addi	s0,s0,-512
	lastTime = UpMilliseconds()-kDefaultLatencyMs;
    e8874ed6:	aeeec0ef          	jal	ra,e88611c4 <UpTicks>
			memclr(AltOutputBuffer,len);

			lock_audio();
			
			if(MainAudioStream && IsCarPlayStart())
    e8874eda:	0006fb17          	auipc	s6,0x6f
    e8874ede:	0f6b0b13          	addi	s6,s6,246 # e88e3fd0 <MainAudioStream>
					
					me->inputCallbackPtr( me->inputSampleTime, UpTicks(), me->inputBuffer, me->inputMaxLen, me->inputCallbackCtx );
					me->inputSampleTime += (me->inputMaxLen/me->format.mBytesPerFrame);
				}

				ConverAudio(me->outputBuffer,me->outputMaxLen,me->format.mSampleRate,me->format.mChannelsPerFrame,g_pAecParam->mainVolume*70/100,MainOutputBuffer);
    e8874ee2:	0006fd17          	auipc	s10,0x6f
    e8874ee6:	0bed0d13          	addi	s10,s10,190 # e88e3fa0 <g_pAecParam>
			}
			if(AltAudioStream)
    e8874eea:	0006fb97          	auipc	s7,0x6f
    e8874eee:	0deb8b93          	addi	s7,s7,222 # e88e3fc8 <AltAudioStream>
		if(OutputThreadExit)
    e8874ef2:	0006f797          	auipc	a5,0x6f
    e8874ef6:	0e678793          	addi	a5,a5,230 # e88e3fd8 <OutputThreadExit>
    e8874efa:	0007aa03          	lw	s4,0(a5)
    e8874efe:	2a0a1763          	bnez	s4,e88751ac <AudioOutputThread+0x33e>
			memclr(MainOutputBuffer,len);
    e8874f02:	85a2                	mv	a1,s0
    e8874f04:	8526                	mv	a0,s1
    e8874f06:	47e070ef          	jal	ra,e887c384 <eLIBs_memclr>
			memclr(AltOutputBuffer,len);
    e8874f0a:	85a2                	mv	a1,s0
    e8874f0c:	8556                	mv	a0,s5
    e8874f0e:	476070ef          	jal	ra,e887c384 <eLIBs_memclr>
    pthread_mutex_lock(&audio_mutex);
    e8874f12:	0006f517          	auipc	a0,0x6f
    e8874f16:	0ce50513          	addi	a0,a0,206 # e88e3fe0 <audio_mutex>
    e8874f1a:	405060ef          	jal	ra,e887bb1e <pthread_mutex_lock>
			if(MainAudioStream && IsCarPlayStart())
    e8874f1e:	000b3783          	ld	a5,0(s6)
    e8874f22:	16078363          	beqz	a5,e8875088 <AudioOutputThread+0x21a>
    e8874f26:	dd5ff0ef          	jal	ra,e8874cfa <IsCarPlayStart>
    e8874f2a:	14050f63          	beqz	a0,e8875088 <AudioOutputThread+0x21a>
				me = MainAudioStream;
    e8874f2e:	000b3d83          	ld	s11,0(s6)
				me->outputCallbackPtr( me->outputSampleTime, UpTicks(), me->outputBuffer, me->outputMaxLen, me->outputCallbackCtx );
    e8874f32:	0d0db903          	ld	s2,208(s11)
    e8874f36:	08cdac03          	lw	s8,140(s11)
    e8874f3a:	a8aec0ef          	jal	ra,e88611c4 <UpTicks>
    e8874f3e:	85aa                	mv	a1,a0
    e8874f40:	0d8db703          	ld	a4,216(s11)
    e8874f44:	080db683          	ld	a3,128(s11)
    e8874f48:	078db603          	ld	a2,120(s11)
    e8874f4c:	8562                	mv	a0,s8
    e8874f4e:	9902                	jalr	s2
				me->outputSampleTime += (me->outputMaxLen/me->format.mBytesPerFrame);
    e8874f50:	080db783          	ld	a5,128(s11)
    e8874f54:	0f8de703          	lwu	a4,248(s11)
    e8874f58:	02e7d733          	divu	a4,a5,a4
    e8874f5c:	08cda783          	lw	a5,140(s11)
    e8874f60:	9fb9                	addw	a5,a5,a4
    e8874f62:	08fda623          	sw	a5,140(s11)
				if(me->inputPCMHandle)
    e8874f66:	020da783          	lw	a5,32(s11)
    e8874f6a:	0e078863          	beqz	a5,e887505a <AudioOutputThread+0x1ec>
					int blockNum = me->inputMaxLen/me->blockLen10ms/2;
    e8874f6e:	070db583          	ld	a1,112(s11)
    e8874f72:	058da903          	lw	s2,88(s11)
					WaveInRead(me->inputBuffer,me->inputMaxLen);
    e8874f76:	068db503          	ld	a0,104(s11)
					int blockNum = me->inputMaxLen/me->blockLen10ms/2;
    e8874f7a:	0325d933          	divu	s2,a1,s2
					WaveInRead(me->inputBuffer,me->inputMaxLen);
    e8874f7e:	2581                	sext.w	a1,a1
    e8874f80:	9a1ff0ef          	jal	ra,e8874920 <WaveInRead>
					if(GetTickCount() - me->startTalkTime < 500)
    e8874f84:	654060ef          	jal	ra,e887b5d8 <GetTickCount>
    e8874f88:	064da783          	lw	a5,100(s11)
    e8874f8c:	9d1d                	subw	a0,a0,a5
    e8874f8e:	1f300793          	li	a5,499
					int blockNum = me->inputMaxLen/me->blockLen10ms/2;
    e8874f92:	00195913          	srli	s2,s2,0x1
    e8874f96:	2901                	sext.w	s2,s2
					if(GetTickCount() - me->startTalkTime < 500)
    e8874f98:	00a7e863          	bltu	a5,a0,e8874fa8 <AudioOutputThread+0x13a>
						memclr(me->inputBuffer,me->inputMaxLen);
    e8874f9c:	070db583          	ld	a1,112(s11)
    e8874fa0:	068db503          	ld	a0,104(s11)
    e8874fa4:	3e0070ef          	jal	ra,e887c384 <eLIBs_memclr>
					if(pRawData == NULL)
    e8874fa8:	00099663          	bnez	s3,e8874fb4 <AudioOutputThread+0x146>
						pRawData = (uint8_t *) malloc(len);
    e8874fac:	8522                	mv	a0,s0
    e8874fae:	0a1060ef          	jal	ra,e887b84e <my_malloc>
    e8874fb2:	89aa                	mv	s3,a0
					memcpy(pRawData,me->inputBuffer,me->inputMaxLen);
    e8874fb4:	070db603          	ld	a2,112(s11)
    e8874fb8:	068db583          	ld	a1,104(s11)
    e8874fbc:	854e                	mv	a0,s3
    e8874fbe:	3e2070ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
					if(me->pNS_inst)
    e8874fc2:	048db783          	ld	a5,72(s11)
    e8874fc6:	c39d                	beqz	a5,e8874fec <AudioOutputThread+0x17e>
						BYTE *pData = malloc(me->inputMaxLen);
    e8874fc8:	070db503          	ld	a0,112(s11)
    e8874fcc:	083060ef          	jal	ra,e887b84e <my_malloc>
    e8874fd0:	8caa                	mv	s9,a0
						if(pData)
    e8874fd2:	cd09                	beqz	a0,e8874fec <AudioOutputThread+0x17e>
                            memcpy(pData,me->inputBuffer,me->inputMaxLen);
    e8874fd4:	070db603          	ld	a2,112(s11)
    e8874fd8:	068db583          	ld	a1,104(s11)
							for(i=0;i<blockNum;i++)
    e8874fdc:	4c01                	li	s8,0
                            memcpy(pData,me->inputBuffer,me->inputMaxLen);
    e8874fde:	3c2070ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
							for(i=0;i<blockNum;i++)
    e8874fe2:	132c4463          	blt	s8,s2,e887510a <AudioOutputThread+0x29c>
                            free(pData);
    e8874fe6:	8566                	mv	a0,s9
    e8874fe8:	318070ef          	jal	ra,e887c300 <eLIBs_free>
					if(me->aecmInst)
    e8874fec:	038db783          	ld	a5,56(s11)
    e8874ff0:	c395                	beqz	a5,e8875014 <AudioOutputThread+0x1a6>
						BYTE *pData = malloc(me->inputMaxLen);
    e8874ff2:	070db503          	ld	a0,112(s11)
    e8874ff6:	059060ef          	jal	ra,e887b84e <my_malloc>
    e8874ffa:	8c2a                	mv	s8,a0
						if(pData)
    e8874ffc:	cd01                	beqz	a0,e8875014 <AudioOutputThread+0x1a6>
							memcpy(pData,me->inputBuffer,me->inputMaxLen);
    e8874ffe:	070db603          	ld	a2,112(s11)
    e8875002:	068db583          	ld	a1,104(s11)
    e8875006:	39a070ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
							for(i=0;i<blockNum;i++)
    e887500a:	132a4263          	blt	s4,s2,e887512e <AudioOutputThread+0x2c0>
							free(pData);
    e887500e:	8562                	mv	a0,s8
    e8875010:	2f0070ef          	jal	ra,e887c300 <eLIBs_free>
					AecProcess(pRawData,me->outputBuffer,me->inputBuffer,me->inputMaxLen);
    e8875014:	070da683          	lw	a3,112(s11)
    e8875018:	068db603          	ld	a2,104(s11)
    e887501c:	078db583          	ld	a1,120(s11)
    e8875020:	854e                	mv	a0,s3
    e8875022:	97bff0ef          	jal	ra,e887499c <AecProcess>
					me->inputCallbackPtr( me->inputSampleTime, UpTicks(), me->inputBuffer, me->inputMaxLen, me->inputCallbackCtx );
    e8875026:	0c0db903          	ld	s2,192(s11)
    e887502a:	088daa03          	lw	s4,136(s11)
    e887502e:	996ec0ef          	jal	ra,e88611c4 <UpTicks>
    e8875032:	85aa                	mv	a1,a0
    e8875034:	0c8db703          	ld	a4,200(s11)
    e8875038:	070db683          	ld	a3,112(s11)
    e887503c:	068db603          	ld	a2,104(s11)
    e8875040:	8552                	mv	a0,s4
    e8875042:	9902                	jalr	s2
					me->inputSampleTime += (me->inputMaxLen/me->format.mBytesPerFrame);
    e8875044:	070db783          	ld	a5,112(s11)
    e8875048:	0f8de703          	lwu	a4,248(s11)
    e887504c:	02e7d733          	divu	a4,a5,a4
    e8875050:	088da783          	lw	a5,136(s11)
    e8875054:	9fb9                	addw	a5,a5,a4
    e8875056:	08fda423          	sw	a5,136(s11)
				ConverAudio(me->outputBuffer,me->outputMaxLen,me->format.mSampleRate,me->format.mChannelsPerFrame,g_pAecParam->mainVolume*70/100,MainOutputBuffer);
    e887505a:	000d3783          	ld	a5,0(s10)
    e887505e:	06400693          	li	a3,100
    e8875062:	0e4da603          	lw	a2,228(s11)
    e8875066:	00d7c703          	lbu	a4,13(a5)
    e887506a:	04600793          	li	a5,70
    e887506e:	080da583          	lw	a1,128(s11)
    e8875072:	02f7073b          	mulw	a4,a4,a5
    e8875076:	078db503          	ld	a0,120(s11)
    e887507a:	87a6                	mv	a5,s1
    e887507c:	02d7473b          	divw	a4,a4,a3
    e8875080:	0fcdc683          	lbu	a3,252(s11)
    e8875084:	d31ff0ef          	jal	ra,e8874db4 <ConverAudio>
			if(AltAudioStream)
    e8875088:	000bb903          	ld	s2,0(s7)
    e887508c:	04090863          	beqz	s2,e88750dc <AudioOutputThread+0x26e>
			{
				me = AltAudioStream;
				me->outputCallbackPtr( me->outputSampleTime, UpTicks(), me->outputBuffer, me->outputMaxLen, me->outputCallbackCtx );
    e8875090:	0d093a03          	ld	s4,208(s2)
    e8875094:	08c92c03          	lw	s8,140(s2)
    e8875098:	92cec0ef          	jal	ra,e88611c4 <UpTicks>
    e887509c:	85aa                	mv	a1,a0
    e887509e:	0d893703          	ld	a4,216(s2)
    e88750a2:	08093683          	ld	a3,128(s2)
    e88750a6:	07893603          	ld	a2,120(s2)
    e88750aa:	8562                	mv	a0,s8
    e88750ac:	9a02                	jalr	s4
				me->outputSampleTime += (me->outputMaxLen/me->format.mBytesPerFrame);
    e88750ae:	08093583          	ld	a1,128(s2)
    e88750b2:	0f896783          	lwu	a5,248(s2)
				ConverAudio(me->outputBuffer,me->outputMaxLen,me->format.mSampleRate,me->format.mChannelsPerFrame,me->outputVolume,AltOutputBuffer);
    e88750b6:	0fc94683          	lbu	a3,252(s2)
    e88750ba:	0e492603          	lw	a2,228(s2)
				me->outputSampleTime += (me->outputMaxLen/me->format.mBytesPerFrame);
    e88750be:	02f5d733          	divu	a4,a1,a5
    e88750c2:	08c92783          	lw	a5,140(s2)
				ConverAudio(me->outputBuffer,me->outputMaxLen,me->format.mSampleRate,me->format.mChannelsPerFrame,me->outputVolume,AltOutputBuffer);
    e88750c6:	07893503          	ld	a0,120(s2)
    e88750ca:	2581                	sext.w	a1,a1
				me->outputSampleTime += (me->outputMaxLen/me->format.mBytesPerFrame);
    e88750cc:	9fb9                	addw	a5,a5,a4
				ConverAudio(me->outputBuffer,me->outputMaxLen,me->format.mSampleRate,me->format.mChannelsPerFrame,me->outputVolume,AltOutputBuffer);
    e88750ce:	09092703          	lw	a4,144(s2)
				me->outputSampleTime += (me->outputMaxLen/me->format.mBytesPerFrame);
    e88750d2:	08f92623          	sw	a5,140(s2)
				ConverAudio(me->outputBuffer,me->outputMaxLen,me->format.mSampleRate,me->format.mChannelsPerFrame,me->outputVolume,AltOutputBuffer);
    e88750d6:	87d6                	mv	a5,s5
    e88750d8:	cddff0ef          	jal	ra,e8874db4 <ConverAudio>
			}
			if(MainAudioStream && IsCarPlayStart() && AltAudioStream)
    e88750dc:	000b3783          	ld	a5,0(s6)
    e88750e0:	c7c5                	beqz	a5,e8875188 <AudioOutputThread+0x31a>
    e88750e2:	c19ff0ef          	jal	ra,e8874cfa <IsCarPlayStart>
    e88750e6:	c959                	beqz	a0,e887517c <AudioOutputThread+0x30e>
    e88750e8:	000bb783          	ld	a5,0(s7)
    e88750ec:	cbc1                	beqz	a5,e887517c <AudioOutputThread+0x30e>
    e88750ee:	4781                	li	a5,0
		dest[i] = (src1[i]+src2[i]);
    e88750f0:	a0f4c70b          	lrhu	a4,s1,a5,0
    e88750f4:	a0fac68b          	lrhu	a3,s5,a5,0
    e88750f8:	9f35                	addw	a4,a4,a3
    e88750fa:	20f4d70b          	srh	a4,s1,a5,0
	for(i=0;i<len/2;i++)
    e88750fe:	0789                	addi	a5,a5,2
    e8875100:	fe8798e3          	bne	a5,s0,e88750f0 <AudioOutputThread+0x282>
				MergeAudio(MainOutputBuffer,AltOutputBuffer,MainOutputBuffer,len);
				WaveOutWrite(0,MainOutputBuffer,len);
			}
			else if(MainAudioStream && IsCarPlayStart())
			{
				WaveOutWrite(0,MainOutputBuffer,len);
    e8875104:	8622                	mv	a2,s0
			{
				WaveOutWrite(0,AltOutputBuffer,len);
			}
			else
			{
				WaveOutWrite(0,MainOutputBuffer,len);
    e8875106:	85a6                	mv	a1,s1
    e8875108:	a069                	j	e8875192 <AudioOutputThread+0x324>
								if(WebRtcNs_Process(me->pNS_inst ,(short *)(pData+i*me->blockLen10ms*2)  ,NULL ,(short *)(me->inputBuffer+i*me->blockLen10ms*2) , NULL) == 0)
    e887510a:	058da583          	lw	a1,88(s11)
    e887510e:	068db683          	ld	a3,104(s11)
    e8875112:	048db503          	ld	a0,72(s11)
    e8875116:	038585bb          	mulw	a1,a1,s8
    e887511a:	4701                	li	a4,0
    e887511c:	4601                	li	a2,0
							for(i=0;i<blockNum;i++)
    e887511e:	2c05                	addiw	s8,s8,1
								if(WebRtcNs_Process(me->pNS_inst ,(short *)(pData+i*me->blockLen10ms*2)  ,NULL ,(short *)(me->inputBuffer+i*me->blockLen10ms*2) , NULL) == 0)
    e8875120:	0015959b          	slliw	a1,a1,0x1
    e8875124:	96ae                	add	a3,a3,a1
    e8875126:	95e6                	add	a1,a1,s9
    e8875128:	276080ef          	jal	ra,e887d39e <WebRtcNs_Process>
							for(i=0;i<blockNum;i++)
    e887512c:	bd5d                	j	e8874fe2 <AudioOutputThread+0x174>
                                WebRtcAecm_BufferFarend(me->aecmInst, (const int16_t *)(me->outputBuffer+i*me->blockLen10ms*2), me->blockLen10ms);
    e887512e:	058da603          	lw	a2,88(s11)
    e8875132:	078db583          	ld	a1,120(s11)
    e8875136:	038db503          	ld	a0,56(s11)
    e887513a:	034607bb          	mulw	a5,a2,s4
    e887513e:	3c06260b          	ext	a2,a2,15,0
    e8875142:	0017979b          	slliw	a5,a5,0x1
    e8875146:	95be                	add	a1,a1,a5
    e8875148:	3a0070ef          	jal	ra,e887c4e8 <WebRtcAecm_BufferFarend>
								if(WebRtcAecm_Process(me->aecmInst, (const int16_t *)(pRawData+i*me->blockLen10ms*2), (const int16_t *)(pData+i*me->blockLen10ms*2), (int16_t *)(me->inputBuffer+i*me->blockLen10ms*2), me->blockLen10ms,g_pAecParam->echoDelayTime) == 0)
    e887514c:	058da703          	lw	a4,88(s11)
    e8875150:	000d3783          	ld	a5,0(s10)
    e8875154:	068db683          	ld	a3,104(s11)
    e8875158:	034705bb          	mulw	a1,a4,s4
    e887515c:	00279783          	lh	a5,2(a5)
    e8875160:	038db503          	ld	a0,56(s11)
    e8875164:	3c07270b          	ext	a4,a4,15,0
							for(i=0;i<blockNum;i++)
    e8875168:	2a05                	addiw	s4,s4,1
								if(WebRtcAecm_Process(me->aecmInst, (const int16_t *)(pRawData+i*me->blockLen10ms*2), (const int16_t *)(pData+i*me->blockLen10ms*2), (int16_t *)(me->inputBuffer+i*me->blockLen10ms*2), me->blockLen10ms,g_pAecParam->echoDelayTime) == 0)
    e887516a:	0015959b          	slliw	a1,a1,0x1
    e887516e:	96ae                	add	a3,a3,a1
    e8875170:	00bc0633          	add	a2,s8,a1
    e8875174:	95ce                	add	a1,a1,s3
    e8875176:	452070ef          	jal	ra,e887c5c8 <WebRtcAecm_Process>
							for(i=0;i<blockNum;i++)
    e887517a:	bd41                	j	e887500a <AudioOutputThread+0x19c>
			else if(MainAudioStream && IsCarPlayStart())
    e887517c:	000b3783          	ld	a5,0(s6)
    e8875180:	c781                	beqz	a5,e8875188 <AudioOutputThread+0x31a>
    e8875182:	b79ff0ef          	jal	ra,e8874cfa <IsCarPlayStart>
    e8875186:	fd3d                	bnez	a0,e8875104 <AudioOutputThread+0x296>
			else if(AltAudioStream)
    e8875188:	000bb783          	ld	a5,0(s7)
				WaveOutWrite(0,AltOutputBuffer,len);
    e887518c:	8622                	mv	a2,s0
    e887518e:	85d6                	mv	a1,s5
			else if(AltAudioStream)
    e8875190:	dbbd                	beqz	a5,e8875106 <AudioOutputThread+0x298>
				WaveOutWrite(0,MainOutputBuffer,len);
    e8875192:	4501                	li	a0,0
    e8875194:	ef0ff0ef          	jal	ra,e8874884 <WaveOutWrite>
    pthread_mutex_unlock(&audio_mutex);
    e8875198:	0006f517          	auipc	a0,0x6f
    e887519c:	e4850513          	addi	a0,a0,-440 # e88e3fe0 <audio_mutex>
    e88751a0:	1c3060ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
			}
			unlock_audio();
		}
		//else
		{
    		Sleep(10);
    e88751a4:	4505                	li	a0,1
    e88751a6:	671060ef          	jal	ra,e887c016 <esKRNL_TimeDly>
		if(OutputThreadExit)
    e88751aa:	b3a1                	j	e8874ef2 <AudioOutputThread+0x84>
		}
	}
	
	free( MainOutputBuffer );
    e88751ac:	8526                	mv	a0,s1
    e88751ae:	152070ef          	jal	ra,e887c300 <eLIBs_free>
	free( AltOutputBuffer );
    e88751b2:	8556                	mv	a0,s5
    e88751b4:	14c070ef          	jal	ra,e887c300 <eLIBs_free>
	
	if(pRawData != NULL)
    e88751b8:	00098563          	beqz	s3,e88751c2 <AudioOutputThread+0x354>
	{
		free( pRawData );
    e88751bc:	854e                	mv	a0,s3
    e88751be:	142070ef          	jal	ra,e887c300 <eLIBs_free>
		pRawData = NULL;
	}
	
	OutputThreadRun = FALSE;
	pthread_exit(0);
    e88751c2:	4501                	li	a0,0
	OutputThreadRun = FALSE;
    e88751c4:	0006f797          	auipc	a5,0x6f
    e88751c8:	e007ac23          	sw	zero,-488(a5) # e88e3fdc <OutputThreadRun>
	pthread_exit(0);
    e88751cc:	03f060ef          	jal	ra,e887ba0a <pthread_exit>
	return NULL;
}
    e88751d0:	7406                	ld	s0,96(sp)
    e88751d2:	70a6                	ld	ra,104(sp)
    e88751d4:	64e6                	ld	s1,88(sp)
    e88751d6:	6946                	ld	s2,80(sp)
    e88751d8:	69a6                	ld	s3,72(sp)
    e88751da:	6a06                	ld	s4,64(sp)
    e88751dc:	7ae2                	ld	s5,56(sp)
    e88751de:	7b42                	ld	s6,48(sp)
    e88751e0:	7ba2                	ld	s7,40(sp)
    e88751e2:	7c02                	ld	s8,32(sp)
    e88751e4:	6ce2                	ld	s9,24(sp)
    e88751e6:	6d42                	ld	s10,16(sp)
    e88751e8:	6da2                	ld	s11,8(sp)
    e88751ea:	4501                	li	a0,0
    e88751ec:	6165                	addi	sp,sp,112
    e88751ee:	8082                	ret

00000000e88751f0 <AudioStreamGetTypeID>:
	dispatch_once_f( &gAudioStreamInitOnce, NULL, _AudioStreamGetTypeID );
    e88751f0:	0006f517          	auipc	a0,0x6f
    e88751f4:	df450513          	addi	a0,a0,-524 # e88e3fe4 <gAudioStreamInitOnce>
    e88751f8:	4118                	lw	a4,0(a0)
    e88751fa:	4789                	li	a5,2
    e88751fc:	02f70363          	beq	a4,a5,e8875222 <AudioStreamGetTypeID+0x32>
{
    e8875200:	1141                	addi	sp,sp,-16
	dispatch_once_f( &gAudioStreamInitOnce, NULL, _AudioStreamGetTypeID );
    e8875202:	00000617          	auipc	a2,0x0
    e8875206:	b0460613          	addi	a2,a2,-1276 # e8874d06 <_AudioStreamGetTypeID>
    e887520a:	4581                	li	a1,0
{
    e887520c:	e406                	sd	ra,8(sp)
	dispatch_once_f( &gAudioStreamInitOnce, NULL, _AudioStreamGetTypeID );
    e887520e:	c65d90ef          	jal	ra,e884ee72 <dispatch_once_f_slow>
}
    e8875212:	60a2                	ld	ra,8(sp)
    e8875214:	0006f797          	auipc	a5,0x6f
    e8875218:	dd478793          	addi	a5,a5,-556 # e88e3fe8 <gAudioStreamTypeID>
    e887521c:	4388                	lw	a0,0(a5)
    e887521e:	0141                	addi	sp,sp,16
    e8875220:	8082                	ret
    e8875222:	0006f797          	auipc	a5,0x6f
    e8875226:	dc678793          	addi	a5,a5,-570 # e88e3fe8 <gAudioStreamTypeID>
    e887522a:	4388                	lw	a0,0(a5)
    e887522c:	8082                	ret

00000000e887522e <AudioStreamCreate>:
{
    e887522e:	1101                	addi	sp,sp,-32
    e8875230:	e826                	sd	s1,16(sp)
    e8875232:	ec06                	sd	ra,24(sp)
    e8875234:	e422                	sd	s0,8(sp)
    e8875236:	84aa                	mv	s1,a0
	me = (AudioStreamRef) _CFRuntimeCreateInstance( NULL, AudioStreamGetTypeID(), (CFIndex) extraLen, NULL );
    e8875238:	fb9ff0ef          	jal	ra,e88751f0 <AudioStreamGetTypeID>
    e887523c:	0005059b          	sext.w	a1,a0
    e8875240:	4681                	li	a3,0
    e8875242:	12000613          	li	a2,288
    e8875246:	4501                	li	a0,0
    e8875248:	d2cd20ef          	jal	ra,e8847774 <_CFRuntimeCreateInstance>
	require_action( me, exit, err = kNoMemoryErr );
    e887524c:	cd19                	beqz	a0,e887526a <AudioStreamCreate+0x3c>
    e887524e:	842a                	mv	s0,a0
	memset( ( (uint8_t *) me ) + sizeof( me->base ), 0, extraLen );
    e8875250:	12000613          	li	a2,288
    e8875254:	0521                	addi	a0,a0,8
    e8875256:	4581                	li	a1,0
    e8875258:	13c070ef          	jal	ra,e887c394 <eLIBs_memset>
	*outStream = me;
    e887525c:	e080                	sd	s0,0(s1)
	err = kNoErr;
    e887525e:	4501                	li	a0,0
}
    e8875260:	60e2                	ld	ra,24(sp)
    e8875262:	6422                	ld	s0,8(sp)
    e8875264:	64c2                	ld	s1,16(sp)
    e8875266:	6105                	addi	sp,sp,32
    e8875268:	8082                	ret
	require_action( me, exit, err = kNoMemoryErr );
    e887526a:	7579                	lui	a0,0xffffe
    e887526c:	5b850513          	addi	a0,a0,1464 # ffffffffffffe5b8 <__DRAM0_INF_BASE+0xffffffff0000e5b8>
    e8875270:	bfc5                	j	e8875260 <AudioStreamCreate+0x32>

00000000e8875272 <AudioStreamSetInputCallback>:
	me->inputCallbackPtr = inFunc;
    e8875272:	e16c                	sd	a1,192(a0)
	me->inputCallbackCtx = inContext;
    e8875274:	e570                	sd	a2,200(a0)
}
    e8875276:	8082                	ret

00000000e8875278 <AudioStreamSetOutputCallback>:
	me->outputCallbackPtr = inFunc;
    e8875278:	e96c                	sd	a1,208(a0)
	me->outputCallbackCtx = inContext;
    e887527a:	ed70                	sd	a2,216(a0)
}
    e887527c:	8082                	ret

00000000e887527e <_AudioStreamSetProperty>:
{
    e887527e:	7179                	addi	sp,sp,-48
    e8875280:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8875284:	f406                	sd	ra,40(sp)
    e8875286:	f04a                	sd	s2,32(sp)
	require_action( !me->prepared, exit, err = kStateErr );
    e8875288:	03454783          	lbu	a5,52(a0)
    e887528c:	cf81                	beqz	a5,e88752a4 <_AudioStreamSetProperty+0x26>
    e887528e:	77f9                	lui	a5,0xffffe
    e8875290:	5cb7879b          	addiw	a5,a5,1483
			err = kAlreadyInitializedErr;
    e8875294:	c63e                	sw	a5,12(sp)
}
    e8875296:	70a2                	ld	ra,40(sp)
    e8875298:	fa91440b          	ldd	s0,s1,(sp),1,4
    e887529c:	4532                	lw	a0,12(sp)
    e887529e:	7902                	ld	s2,32(sp)
    e88752a0:	6145                	addi	sp,sp,48
    e88752a2:	8082                	ret
    e88752a4:	892e                	mv	s2,a1
    e88752a6:	842a                	mv	s0,a0
	else if( CFEqual( inProperty, kAudioStreamProperty_AudioType ) )
    e88752a8:	0002a597          	auipc	a1,0x2a
    e88752ac:	97858593          	addi	a1,a1,-1672 # e889ec20 <icmp6_param_problem+0x1bb2>
    e88752b0:	854a                	mv	a0,s2
    e88752b2:	84b2                	mv	s1,a2
    e88752b4:	e9bd10ef          	jal	ra,e884714e <CFEqual>
    e88752b8:	c925                	beqz	a0,e8875328 <_AudioStreamSetProperty+0xaa>
		if(me->streamType == kAudioStreamType_MainAudio)
    e88752ba:	10842783          	lw	a5,264(s0)
    e88752be:	06400713          	li	a4,100
    e88752c2:	04e79d63          	bne	a5,a4,e887531c <_AudioStreamSetProperty+0x9e>
			if(CFEqual( inValue, kAudioStreamAudioType_Media ))
    e88752c6:	0002a597          	auipc	a1,0x2a
    e88752ca:	9e258593          	addi	a1,a1,-1566 # e889eca8 <icmp6_param_problem+0x1c3a>
    e88752ce:	8526                	mv	a0,s1
    e88752d0:	e7fd10ef          	jal	ra,e884714e <CFEqual>
    e88752d4:	c509                	beqz	a0,e88752de <_AudioStreamSetProperty+0x60>
				me->audioType = AUDIO_TYPE_MEDIA;
    e88752d6:	10042623          	sw	zero,268(s0)
	err = kNoErr;
    e88752da:	c602                	sw	zero,12(sp)
    e88752dc:	bf6d                	j	e8875296 <_AudioStreamSetProperty+0x18>
			else if(CFEqual( inValue, kAudioStreamAudioType_Telephony ))
    e88752de:	0002a597          	auipc	a1,0x2a
    e88752e2:	9da58593          	addi	a1,a1,-1574 # e889ecb8 <icmp6_param_problem+0x1c4a>
    e88752e6:	8526                	mv	a0,s1
    e88752e8:	e67d10ef          	jal	ra,e884714e <CFEqual>
				me->audioType = AUDIO_TYPE_TALK;
    e88752ec:	4785                	li	a5,1
			else if(CFEqual( inValue, kAudioStreamAudioType_Telephony ))
    e88752ee:	e505                	bnez	a0,e8875316 <_AudioStreamSetProperty+0x98>
			else if(CFEqual( inValue, kAudioStreamAudioType_SpeechRecognition ))
    e88752f0:	0002a597          	auipc	a1,0x2a
    e88752f4:	9e058593          	addi	a1,a1,-1568 # e889ecd0 <icmp6_param_problem+0x1c62>
    e88752f8:	8526                	mv	a0,s1
    e88752fa:	e55d10ef          	jal	ra,e884714e <CFEqual>
				me->audioType = AUDIO_TYPE_SIRI;
    e88752fe:	4789                	li	a5,2
			else if(CFEqual( inValue, kAudioStreamAudioType_SpeechRecognition ))
    e8875300:	e919                	bnez	a0,e8875316 <_AudioStreamSetProperty+0x98>
			else if(CFEqual( inValue, kAudioStreamAudioType_Alert ))
    e8875302:	0002a597          	auipc	a1,0x2a
    e8875306:	9ee58593          	addi	a1,a1,-1554 # e889ecf0 <icmp6_param_problem+0x1c82>
    e887530a:	8526                	mv	a0,s1
    e887530c:	e43d10ef          	jal	ra,e884714e <CFEqual>
				me->audioType = AUDIO_TYPE_ALERT;
    e8875310:	478d                	li	a5,3
			else if(CFEqual( inValue, kAudioStreamAudioType_Alert ))
    e8875312:	e111                	bnez	a0,e8875316 <_AudioStreamSetProperty+0x98>
				me->audioType = AUDIO_TYPE_DEFAULT;
    e8875314:	4791                	li	a5,4
			me->audioType = AUDIO_TYPE_NAVI;
    e8875316:	10f42623          	sw	a5,268(s0)
    e887531a:	b7c1                	j	e88752da <_AudioStreamSetProperty+0x5c>
		else if(me->streamType == kAudioStreamType_AltAudio)
    e887531c:	06500713          	li	a4,101
    e8875320:	fae79de3          	bne	a5,a4,e88752da <_AudioStreamSetProperty+0x5c>
			me->audioType = AUDIO_TYPE_NAVI;
    e8875324:	47a9                	li	a5,10
    e8875326:	bfc5                	j	e8875316 <_AudioStreamSetProperty+0x98>
	else if ( CFEqual( inProperty, kAudioStreamProperty_StreamType ) )
    e8875328:	0002a597          	auipc	a1,0x2a
    e887532c:	9d858593          	addi	a1,a1,-1576 # e889ed00 <icmp6_param_problem+0x1c92>
    e8875330:	854a                	mv	a0,s2
    e8875332:	e1dd10ef          	jal	ra,e884714e <CFEqual>
    e8875336:	c911                	beqz	a0,e887534a <_AudioStreamSetProperty+0xcc>
		me->streamType = CFGetInt64( inValue, &err );
    e8875338:	006c                	addi	a1,sp,12
    e887533a:	8526                	mv	a0,s1
    e887533c:	95dd60ef          	jal	ra,e884bc98 <CFGetInt64>
    e8875340:	10a42423          	sw	a0,264(s0)
		require_noerr( err, exit );
    e8875344:	47b2                	lw	a5,12(sp)
    e8875346:	dbd1                	beqz	a5,e88752da <_AudioStreamSetProperty+0x5c>
    e8875348:	b7b9                	j	e8875296 <_AudioStreamSetProperty+0x18>
	else if( CFEqual( inProperty, kAudioStreamProperty_Format ) )
    e887534a:	0002a597          	auipc	a1,0x2a
    e887534e:	8ee58593          	addi	a1,a1,-1810 # e889ec38 <icmp6_param_problem+0x1bca>
    e8875352:	854a                	mv	a0,s2
    e8875354:	dfbd10ef          	jal	ra,e884714e <CFEqual>
    e8875358:	c115                	beqz	a0,e887537c <_AudioStreamSetProperty+0xfe>
		if ( me->prepared ) {
    e887535a:	03444783          	lbu	a5,52(s0)
    e887535e:	c789                	beqz	a5,e8875368 <_AudioStreamSetProperty+0xea>
			err = kAlreadyInitializedErr;
    e8875360:	77f9                	lui	a5,0xffffe
    e8875362:	5c17879b          	addiw	a5,a5,1473
    e8875366:	b73d                	j	e8875294 <_AudioStreamSetProperty+0x16>
		CFGetData( inValue, &me->format, sizeof( me->format ), NULL, &err );
    e8875368:	0078                	addi	a4,sp,12
    e887536a:	4681                	li	a3,0
    e887536c:	02400613          	li	a2,36
    e8875370:	0e440593          	addi	a1,s0,228
    e8875374:	8526                	mv	a0,s1
    e8875376:	e0dd70ef          	jal	ra,e884d182 <CFGetData>
		require_noerr( err, exit );
    e887537a:	b7e9                	j	e8875344 <_AudioStreamSetProperty+0xc6>
	else if( CFEqual( inProperty, kAudioStreamProperty_Input ) )
    e887537c:	0002a597          	auipc	a1,0x2a
    e8875380:	8cc58593          	addi	a1,a1,-1844 # e889ec48 <icmp6_param_problem+0x1bda>
    e8875384:	854a                	mv	a0,s2
    e8875386:	dc9d10ef          	jal	ra,e884714e <CFEqual>
    e887538a:	c911                	beqz	a0,e887539e <_AudioStreamSetProperty+0x120>
		me->input = CFGetBoolean( inValue, NULL );
    e887538c:	4581                	li	a1,0
    e887538e:	8526                	mv	a0,s1
    e8875390:	909d60ef          	jal	ra,e884bc98 <CFGetInt64>
    e8875394:	00a03533          	snez	a0,a0
    e8875398:	0ea40023          	sb	a0,224(s0)
    e887539c:	bf3d                	j	e88752da <_AudioStreamSetProperty+0x5c>
	else if( CFEqual( inProperty, kAudioStreamProperty_PreferredLatency ) )
    e887539e:	0002a597          	auipc	a1,0x2a
    e88753a2:	8ba58593          	addi	a1,a1,-1862 # e889ec58 <icmp6_param_problem+0x1bea>
    e88753a6:	854a                	mv	a0,s2
    e88753a8:	da7d10ef          	jal	ra,e884714e <CFEqual>
    e88753ac:	c901                	beqz	a0,e88753bc <_AudioStreamSetProperty+0x13e>
		me->preferredLatencyMics = (uint32_t) CFGetInt64( inValue, &err );
    e88753ae:	006c                	addi	a1,sp,12
    e88753b0:	8526                	mv	a0,s1
    e88753b2:	8e7d60ef          	jal	ra,e884bc98 <CFGetInt64>
    e88753b6:	10a42823          	sw	a0,272(s0)
    e88753ba:	b769                	j	e8875344 <_AudioStreamSetProperty+0xc6>
	else if( CFEqual( inProperty, kAudioStreamProperty_ThreadName ) )
    e88753bc:	0002a597          	auipc	a1,0x2a
    e88753c0:	8bc58593          	addi	a1,a1,-1860 # e889ec78 <icmp6_param_problem+0x1c0a>
    e88753c4:	854a                	mv	a0,s2
    e88753c6:	d89d10ef          	jal	ra,e884714e <CFEqual>
    e88753ca:	c10d                	beqz	a0,e88753ec <_AudioStreamSetProperty+0x16e>
		cstr = CFCopyCString( inValue, &err );
    e88753cc:	8526                	mv	a0,s1
    e88753ce:	006c                	addi	a1,sp,12
    e88753d0:	c35d70ef          	jal	ra,e884d004 <CFCopyCString>
    e88753d4:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e88753d6:	47b2                	lw	a5,12(sp)
    e88753d8:	ea079fe3          	bnez	a5,e8875296 <_AudioStreamSetProperty+0x18>
		if( me->threadName ) free( me->threadName );
    e88753dc:	11843503          	ld	a0,280(s0)
    e88753e0:	c119                	beqz	a0,e88753e6 <_AudioStreamSetProperty+0x168>
    e88753e2:	71f060ef          	jal	ra,e887c300 <eLIBs_free>
		me->threadName = cstr;
    e88753e6:	10943c23          	sd	s1,280(s0)
    e88753ea:	bdc5                	j	e88752da <_AudioStreamSetProperty+0x5c>
	else if( CFEqual( inProperty, kAudioStreamProperty_ThreadPriority ) )
    e88753ec:	0002a597          	auipc	a1,0x2a
    e88753f0:	8a458593          	addi	a1,a1,-1884 # e889ec90 <icmp6_param_problem+0x1c22>
    e88753f4:	854a                	mv	a0,s2
    e88753f6:	d59d10ef          	jal	ra,e884714e <CFEqual>
    e88753fa:	cd09                	beqz	a0,e8875414 <_AudioStreamSetProperty+0x196>
		me->threadPriority = (int) CFGetInt64( inValue, &err );
    e88753fc:	006c                	addi	a1,sp,12
    e88753fe:	8526                	mv	a0,s1
    e8875400:	899d60ef          	jal	ra,e884bc98 <CFGetInt64>
    e8875404:	12a42023          	sw	a0,288(s0)
		me->hasThreadPriority = ( err == kNoErr );
    e8875408:	47b2                	lw	a5,12(sp)
    e887540a:	0017b793          	seqz	a5,a5
    e887540e:	12f40223          	sb	a5,292(s0)
    e8875412:	b5e1                	j	e88752da <_AudioStreamSetProperty+0x5c>
	else if( CFEqual( inProperty, CFSTR( "vocoderSampleRate" ) ) )
    e8875414:	0002a597          	auipc	a1,0x2a
    e8875418:	90458593          	addi	a1,a1,-1788 # e889ed18 <icmp6_param_problem+0x1caa>
    e887541c:	854a                	mv	a0,s2
    e887541e:	d31d10ef          	jal	ra,e884714e <CFEqual>
    e8875422:	c511                	beqz	a0,e887542e <_AudioStreamSetProperty+0x1b0>
		d = CFGetDouble( inValue, &err );
    e8875424:	006c                	addi	a1,sp,12
    e8875426:	8526                	mv	a0,s1
    e8875428:	a81d60ef          	jal	ra,e884bea8 <CFGetDouble>
		as_dlog( kLogLevelTrace, "VocoderSampleRate: %f\n", d );
    e887542c:	b57d                	j	e88752da <_AudioStreamSetProperty+0x5c>
		err = kNotHandledErr;
    e887542e:	77f9                	lui	a5,0xffffe
    e8875430:	5c67879b          	addiw	a5,a5,1478
    e8875434:	b585                	j	e8875294 <_AudioStreamSetProperty+0x16>

00000000e8875436 <AudioStreamRampVolume>:
	if(me == NULL)
    e8875436:	0e050363          	beqz	a0,e887551c <AudioStreamRampVolume+0xe6>
{
    e887543a:	7139                	addi	sp,sp,-64
    e887543c:	fc91540b          	sdd	s0,s1,(sp),2,4
    e8875440:	fc06                	sd	ra,56(sp)
    e8875442:	f84a                	sd	s2,48(sp)
    e8875444:	842a                	mv	s0,a0
	dispatch_source_forget( &me->rampTimer );
    e8875446:	6d48                	ld	a0,152(a0)
    e8875448:	86ae                	mv	a3,a1
    e887544a:	cd11                	beqz	a0,e8875466 <AudioStreamRampVolume+0x30>
    e887544c:	a82e                	fsd	fa1,16(sp)
    e887544e:	a42a                	fsd	fa0,8(sp)
    e8875450:	ec2e                	sd	a1,24(sp)
    e8875452:	ff4da0ef          	jal	ra,e884fc46 <dispatch_source_cancel>
    e8875456:	6c48                	ld	a0,152(s0)
    e8875458:	df8d90ef          	jal	ra,e884ea50 <dispatch_release>
    e887545c:	08043c23          	sd	zero,152(s0)
    e8875460:	66e2                	ld	a3,24(sp)
    e8875462:	25c2                	fld	fa1,16(sp)
    e8875464:	2522                	fld	fa0,8(sp)
	volume = me->outputVolume;
    e8875466:	09042783          	lw	a5,144(s0)
	me->rampFinalVolume		= inFinalVolume;
    e887546a:	b448                	fsd	fa0,168(s0)
	volume = me->outputVolume;
    e887546c:	d20787d3          	fcvt.d.w	fa5,a5
	volume = volume / 100;
    e8875470:	00058797          	auipc	a5,0x58
    e8875474:	9b07b707          	fld	fa4,-1616(a5) # e88cce20 <__PRETTY_FUNCTION__.11813+0x310>
    e8875478:	1ae7f7d3          	fdiv.d	fa5,fa5,fa4
	me->rampGain			= ( inFinalVolume - me->rampCurrentVolume ) / kRampSteps;
    e887547c:	0af57553          	fsub.d	fa0,fa0,fa5
	me->rampCurrentVolume	= AudioStreamGetVolume( me, NULL );
    e8875480:	b05c                	fsd	fa5,160(s0)
	me->rampGain			= ( inFinalVolume - me->rampCurrentVolume ) / kRampSteps;
    e8875482:	00056797          	auipc	a5,0x56
    e8875486:	bee7b787          	fld	fa5,-1042(a5) # e88cb070 <kAirPlayReceiverServerClass+0x1678>
	me->rampCurrentStep		= 0;
    e887548a:	4785                	li	a5,1
    e887548c:	1792                	slli	a5,a5,0x24
    e887548e:	fc5c                	sd	a5,184(s0)
	nanos					= (uint64_t)( ( inDurationSecs * kNanosecondsPerSecond ) / kRampSteps );
    e8875490:	00056797          	auipc	a5,0x56
    e8875494:	be87b707          	fld	fa4,-1048(a5) # e88cb078 <kAirPlayReceiverServerClass+0x1680>
    e8875498:	12e5f5d3          	fmul.d	fa1,fa1,fa4
	me->rampGain			= ( inFinalVolume - me->rampCurrentVolume ) / kRampSteps;
    e887549c:	12f57553          	fmul.d	fa0,fa0,fa5
	nanos					= (uint64_t)( ( inDurationSecs * kNanosecondsPerSecond ) / kRampSteps );
    e88754a0:	12f5f5d3          	fmul.d	fa1,fa1,fa5
	me->rampGain			= ( inFinalVolume - me->rampCurrentVolume ) / kRampSteps;
    e88754a4:	b848                	fsd	fa0,176(s0)
	nanos					= (uint64_t)( ( inDurationSecs * kNanosecondsPerSecond ) / kRampSteps );
    e88754a6:	c23594d3          	fcvt.lu.d	s1,fa1,rtz
	me->rampTimer = dispatch_source_create( DISPATCH_SOURCE_TYPE_TIMER, 0, 0, inQueue ? inQueue : dispatch_get_main_queue() );
    e88754aa:	e681                	bnez	a3,e88754b2 <AudioStreamRampVolume+0x7c>
    e88754ac:	8b5da0ef          	jal	ra,e884fd60 <dispatch_get_main_queue>
    e88754b0:	86aa                	mv	a3,a0
    e88754b2:	4601                	li	a2,0
    e88754b4:	4581                	li	a1,0
    e88754b6:	4509                	li	a0,2
    e88754b8:	8f7d90ef          	jal	ra,e884edae <dispatch_source_create>
    e88754bc:	ec48                	sd	a0,152(s0)
	require_action( me->rampTimer, exit, err = kUnknownErr );
    e88754be:	c12d                	beqz	a0,e8875520 <AudioStreamRampVolume+0xea>
	CFRetain( me );
    e88754c0:	8522                	mv	a0,s0
    e88754c2:	c85d10ef          	jal	ra,e8847146 <CFRetain>
	dispatch_set_context( me->rampTimer, me );
    e88754c6:	6c48                	ld	a0,152(s0)
    e88754c8:	85a2                	mv	a1,s0
    e88754ca:	f52d90ef          	jal	ra,e884ec1c <dispatch_set_context>
	dispatch_source_set_event_handler_f( me->rampTimer, _AudioStreamRampVolumeTimer );
    e88754ce:	6c48                	ld	a0,152(s0)
    e88754d0:	00000597          	auipc	a1,0x0
    e88754d4:	87a58593          	addi	a1,a1,-1926 # e8874d4a <_AudioStreamRampVolumeTimer>
    e88754d8:	993d90ef          	jal	ra,e884ee6a <dispatch_source_set_event_handler_f>
	dispatch_source_set_cancel_handler_f( me->rampTimer, _AudioStreamRampVolumeCanceled );
    e88754dc:	6c48                	ld	a0,152(s0)
    e88754de:	00000597          	auipc	a1,0x0
    e88754e2:	86858593          	addi	a1,a1,-1944 # e8874d46 <_AudioStreamRampVolumeCanceled>
    e88754e6:	989d90ef          	jal	ra,e884ee6e <dispatch_source_set_cancel_handler_f>
	dispatch_source_set_timer( me->rampTimer, dispatch_time( DISPATCH_TIME_NOW, nanos ), nanos, 5 * kNanosecondsPerMillisecond );
    e88754ea:	09843903          	ld	s2,152(s0)
    e88754ee:	85a6                	mv	a1,s1
    e88754f0:	4501                	li	a0,0
    e88754f2:	a63d90ef          	jal	ra,e884ef54 <dispatch_time>
    e88754f6:	85aa                	mv	a1,a0
    e88754f8:	004c56b7          	lui	a3,0x4c5
    e88754fc:	b4068693          	addi	a3,a3,-1216 # 4c4b40 <memcmp-0xe833b4c0>
    e8875500:	8626                	mv	a2,s1
    e8875502:	854a                	mv	a0,s2
    e8875504:	ec4da0ef          	jal	ra,e884fbc8 <dispatch_source_set_timer>
	dispatch_resume( me->rampTimer );
    e8875508:	6c48                	ld	a0,152(s0)
    e887550a:	decda0ef          	jal	ra,e884faf6 <dispatch_resume>
	err = kNoErr;
    e887550e:	4501                	li	a0,0
}
    e8875510:	70e2                	ld	ra,56(sp)
    e8875512:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8875516:	7942                	ld	s2,48(sp)
    e8875518:	6121                	addi	sp,sp,64
    e887551a:	8082                	ret
		return kNoErr;
    e887551c:	4501                	li	a0,0
}
    e887551e:	8082                	ret
	require_action( me->rampTimer, exit, err = kUnknownErr );
    e8875520:	7579                	lui	a0,0xffffe
    e8875522:	5d450513          	addi	a0,a0,1492 # ffffffffffffe5d4 <__DRAM0_INF_BASE+0xffffffff0000e5d4>
    e8875526:	b7ed                	j	e8875510 <AudioStreamRampVolume+0xda>

00000000e8875528 <AudioStreamSetFormat>:
{
    e8875528:	1141                	addi	sp,sp,-16
	me->format = *inFormat;
    e887552a:	02400613          	li	a2,36
    e887552e:	0e450513          	addi	a0,a0,228
{
    e8875532:	e406                	sd	ra,8(sp)
	me->format = *inFormat;
    e8875534:	b358a0ef          	jal	ra,e8800068 <memcpy>
}
    e8875538:	60a2                	ld	ra,8(sp)
    e887553a:	0141                	addi	sp,sp,16
    e887553c:	8082                	ret

00000000e887553e <AudioStreamSetDelegateContext>:
	me->delegateContext = inContext;
    e887553e:	e50c                	sd	a1,8(a0)
}
    e8875540:	8082                	ret

00000000e8875542 <IsCarPlayPlaying>:
    if(MainAudioStream != NULL)
    e8875542:	0006f797          	auipc	a5,0x6f
    e8875546:	a8e78793          	addi	a5,a5,-1394 # e88e3fd0 <MainAudioStream>
    e887554a:	6388                	ld	a0,0(a5)
}
    e887554c:	00a03533          	snez	a0,a0
    e8875550:	8082                	ret

00000000e8875552 <AudioOutputInit>:

void AudioOutputInit(void)
{
    pthread_mutex_init(&audio_mutex,NULL);
    e8875552:	4581                	li	a1,0
    e8875554:	0006f517          	auipc	a0,0x6f
    e8875558:	a8c50513          	addi	a0,a0,-1396 # e88e3fe0 <audio_mutex>
    e887555c:	51e0606f          	j	e887ba7a <pthread_mutex_init>

00000000e8875560 <AudioOutputStart>:
}

void AudioOutputStart(void)
{
	if(OutputThreadRun)
    e8875560:	0006f797          	auipc	a5,0x6f
    e8875564:	a7c78793          	addi	a5,a5,-1412 # e88e3fdc <OutputThreadRun>
    e8875568:	439c                	lw	a5,0(a5)
    e887556a:	ebb1                	bnez	a5,e88755be <AudioOutputStart+0x5e>
		return;
	}
	
	OutputThreadExit = FALSE;
	
	WaveOutOpen(0,48000,2,16);
    e887556c:	65b1                	lui	a1,0xc
{
    e887556e:	1101                	addi	sp,sp,-32
	WaveOutOpen(0,48000,2,16);
    e8875570:	46c1                	li	a3,16
    e8875572:	4609                	li	a2,2
    e8875574:	b8058593          	addi	a1,a1,-1152 # bb80 <memcmp-0xe87f4480>
    e8875578:	4501                	li	a0,0
{
    e887557a:	ec06                	sd	ra,24(sp)
	OutputThreadExit = FALSE;
    e887557c:	0006f797          	auipc	a5,0x6f
    e8875580:	a407ae23          	sw	zero,-1444(a5) # e88e3fd8 <OutputThreadExit>
	WaveOutOpen(0,48000,2,16);
    e8875584:	adaff0ef          	jal	ra,e887485e <WaveOutOpen>

	pthread_t outputThread;
	pthread_attr_t attr;
	pthread_attr_init(&attr);
    e8875588:	0028                	addi	a0,sp,8
    e887558a:	488060ef          	jal	ra,e887ba12 <pthread_attr_init>
	pthread_attr_setpriority(&attr,0x3b);   //melis特殊优先级
    e887558e:	03b00593          	li	a1,59
    e8875592:	0028                	addi	a0,sp,8
    e8875594:	4a2060ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
    pthread_attr_setstacksize(&attr,0x8000);
    e8875598:	65a1                	lui	a1,0x8
    e887559a:	0028                	addi	a0,sp,8
    e887559c:	48e060ef          	jal	ra,e887ba2a <pthread_attr_setstacksize>
	pthread_create( &outputThread, &attr, AudioOutputThread, NULL );
    e88755a0:	002c                	addi	a1,sp,8
    e88755a2:	4681                	li	a3,0
    e88755a4:	00000617          	auipc	a2,0x0
    e88755a8:	8ca60613          	addi	a2,a2,-1846 # e8874e6e <AudioOutputThread>
    e88755ac:	0048                	addi	a0,sp,4
    e88755ae:	496060ef          	jal	ra,e887ba44 <pthread_create>
	pthread_attr_destroy(&attr);
    e88755b2:	0028                	addi	a0,sp,8
    e88755b4:	472060ef          	jal	ra,e887ba26 <pthread_attr_destroy>
}
    e88755b8:	60e2                	ld	ra,24(sp)
    e88755ba:	6105                	addi	sp,sp,32
    e88755bc:	8082                	ret
    e88755be:	8082                	ret

00000000e88755c0 <AudioOutputStop>:

void AudioOutputStop(void)
{
	if(!OutputThreadRun)
    e88755c0:	0006f797          	auipc	a5,0x6f
    e88755c4:	a1c78793          	addi	a5,a5,-1508 # e88e3fdc <OutputThreadRun>
    e88755c8:	4398                	lw	a4,0(a5)
    e88755ca:	c70d                	beqz	a4,e88755f4 <AudioOutputStop+0x34>
{
    e88755cc:	1141                	addi	sp,sp,-16
    e88755ce:	e022                	sd	s0,0(sp)
    e88755d0:	843e                	mv	s0,a5
	{
		return;
	}
    
	OutputThreadExit = TRUE;
    e88755d2:	4785                	li	a5,1
{
    e88755d4:	e406                	sd	ra,8(sp)
	OutputThreadExit = TRUE;
    e88755d6:	0006f717          	auipc	a4,0x6f
    e88755da:	a0f72123          	sw	a5,-1534(a4) # e88e3fd8 <OutputThreadExit>
	while(OutputThreadRun)
	{
		Sleep(10);
    e88755de:	4505                	li	a0,1
    e88755e0:	237060ef          	jal	ra,e887c016 <esKRNL_TimeDly>
	while(OutputThreadRun)
    e88755e4:	401c                	lw	a5,0(s0)
    e88755e6:	ffe5                	bnez	a5,e88755de <AudioOutputStop+0x1e>
	}
	
	WaveOutClose(0);
}
    e88755e8:	6402                	ld	s0,0(sp)
    e88755ea:	60a2                	ld	ra,8(sp)
	WaveOutClose(0);
    e88755ec:	4501                	li	a0,0
}
    e88755ee:	0141                	addi	sp,sp,16
	WaveOutClose(0);
    e88755f0:	ab8ff06f          	j	e88748a8 <WaveOutClose>
    e88755f4:	8082                	ret

00000000e88755f6 <AudioStreamPrepare>:

OSStatus	AudioStreamPrepare( AudioStreamRef inStream )
{
    e88755f6:	1101                	addi	sp,sp,-32
    e88755f8:	e422                	sd	s0,8(sp)
    e88755fa:	842a                	mv	s0,a0
    pthread_mutex_lock(&audio_mutex);
    e88755fc:	0006f517          	auipc	a0,0x6f
    e8875600:	9e450513          	addi	a0,a0,-1564 # e88e3fe0 <audio_mutex>
{
    e8875604:	ec06                	sd	ra,24(sp)
    e8875606:	e826                	sd	s1,16(sp)
    pthread_mutex_lock(&audio_mutex);
    e8875608:	516060ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	//uint8_t *pbuf1 = (uint8_t *) malloc( 120*1024 );
	//uint8_t *pbuf2 = (uint8_t *) malloc( 80*1024 );

	lock_audio();

	if( me->input )
    e887560c:	0e044783          	lbu	a5,224(s0)
    e8875610:	cf9d                	beqz	a5,e887564e <AudioStreamPrepare+0x58>
	{
		me->inputPCMHandle = 1;
    e8875612:	4785                	li	a5,1
    e8875614:	d01c                	sw	a5,32(s0)
		me->inputMaxLen = ( me->format.mSampleRate * kDefaultLatencyMs * me->format.mBytesPerPacket ) / 1000;
    e8875616:	0e442503          	lw	a0,228(s0)
    e887561a:	0f042783          	lw	a5,240(s0)
    e887561e:	02f5053b          	mulw	a0,a0,a5
    e8875622:	02800793          	li	a5,40
    e8875626:	02f5053b          	mulw	a0,a0,a5
    e887562a:	3e800793          	li	a5,1000
    e887562e:	02f5553b          	divuw	a0,a0,a5
    e8875632:	7c05350b          	extu	a0,a0,31,0
    e8875636:	f828                	sd	a0,112(s0)
		me->inputBuffer = (uint8_t *) malloc( me->inputMaxLen );
    e8875638:	216060ef          	jal	ra,e887b84e <my_malloc>
    e887563c:	f428                	sd	a0,104(s0)
		WaveInOpen(me->format.mSampleRate,me->format.mChannelsPerFrame,me->format.mBitsPerChannel);
    e887563e:	10042603          	lw	a2,256(s0)
    e8875642:	0fc42583          	lw	a1,252(s0)
    e8875646:	0e442503          	lw	a0,228(s0)
    e887564a:	a7eff0ef          	jal	ra,e88748c8 <WaveInOpen>
	}

	me->outputPCMHandle = 1;
	me->outputMaxLen = ( me->format.mSampleRate * kDefaultLatencyMs * me->format.mBytesPerPacket ) / 1000;
    e887564e:	0f042783          	lw	a5,240(s0)
    e8875652:	0e442503          	lw	a0,228(s0)
	me->outputPCMHandle = 1;
    e8875656:	4485                	li	s1,1
    e8875658:	d804                	sw	s1,48(s0)
	me->outputMaxLen = ( me->format.mSampleRate * kDefaultLatencyMs * me->format.mBytesPerPacket ) / 1000;
    e887565a:	02f5053b          	mulw	a0,a0,a5
    e887565e:	02800793          	li	a5,40
    e8875662:	02f5053b          	mulw	a0,a0,a5
    e8875666:	3e800793          	li	a5,1000
    e887566a:	02f5553b          	divuw	a0,a0,a5
    e887566e:	7c05350b          	extu	a0,a0,31,0
    e8875672:	e048                	sd	a0,128(s0)
	me->outputBuffer = (uint8_t *) malloc( me->outputMaxLen );
    e8875674:	1da060ef          	jal	ra,e887b84e <my_malloc>
    e8875678:	fc28                	sd	a0,120(s0)
	me->outputVolume = 70;
    e887567a:	04600793          	li	a5,70
	//WaveOutOpen(me->audioType,me->format.mSampleRate,me->format.mChannelsPerFrame,me->format.mBitsPerChannel);

	me->prepared = true;
    e887567e:	02940a23          	sb	s1,52(s0)
	me->outputVolume = 70;
    e8875682:	08f42823          	sw	a5,144(s0)
    pthread_mutex_unlock(&audio_mutex);
    e8875686:	0006f517          	auipc	a0,0x6f
    e887568a:	95a50513          	addi	a0,a0,-1702 # e88e3fe0 <audio_mutex>
    e887568e:	4d4060ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	
	unlock_audio();
	
	return( err );
}
    e8875692:	6422                	ld	s0,8(sp)
    e8875694:	60e2                	ld	ra,24(sp)
    e8875696:	64c2                	ld	s1,16(sp)
    e8875698:	4501                	li	a0,0
    e887569a:	6105                	addi	sp,sp,32
    e887569c:	8082                	ret

00000000e887569e <AudioStreamStop>:
//===========================================================================================================================
//	AudioStreamStop
//===========================================================================================================================

void	AudioStreamStop( AudioStreamRef inStream, Boolean inDrain )
{
    e887569e:	1141                	addi	sp,sp,-16
    e88756a0:	e022                	sd	s0,0(sp)
    e88756a2:	e406                	sd	ra,8(sp)
	OSStatus					err;
	//ssize_t						n;
	
	DEBUG_USE_ONLY( err );
	
	me->stop = true;
    e88756a4:	4785                	li	a5,1
    e88756a6:	02f50aa3          	sb	a5,53(a0)
{
    e88756aa:	842a                	mv	s0,a0
    pthread_mutex_lock(&audio_mutex);
    e88756ac:	0006f517          	auipc	a0,0x6f
    e88756b0:	93450513          	addi	a0,a0,-1740 # e88e3fe0 <audio_mutex>
    e88756b4:	46a060ef          	jal	ra,e887bb1e <pthread_mutex_lock>
#endif
	check_noerr( err );*/
	
	lock_audio();

	if(me->streamType == kAudioStreamType_MainAudio || me->streamType == kAudioStreamType_MainHighAudio)
    e88756b8:	10842783          	lw	a5,264(s0)
    e88756bc:	06400713          	li	a4,100
    e88756c0:	ffd7f693          	andi	a3,a5,-3
    e88756c4:	08e69063          	bne	a3,a4,e8875744 <AudioStreamStop+0xa6>
	{
		MainAudioStream = NULL;
    e88756c8:	0006f797          	auipc	a5,0x6f
    e88756cc:	9007b423          	sd	zero,-1784(a5) # e88e3fd0 <MainAudioStream>
	else if(me->streamType == kAudioStreamType_AltAudio)
	{
		AltAudioStream = NULL;
	}

	ForgetMem( &me->inputBuffer );
    e88756d0:	7428                	ld	a0,104(s0)
    e88756d2:	c509                	beqz	a0,e88756dc <AudioStreamStop+0x3e>
    e88756d4:	42d060ef          	jal	ra,e887c300 <eLIBs_free>
    e88756d8:	06043423          	sd	zero,104(s0)
	ForgetMem( &me->outputBuffer );
    e88756dc:	7c28                	ld	a0,120(s0)
    e88756de:	c509                	beqz	a0,e88756e8 <AudioStreamStop+0x4a>
    e88756e0:	421060ef          	jal	ra,e887c300 <eLIBs_free>
    e88756e4:	06043c23          	sd	zero,120(s0)
	
	if( me->inputPCMHandle )
    e88756e8:	501c                	lw	a5,32(s0)
    e88756ea:	c79d                	beqz	a5,e8875718 <AudioStreamStop+0x7a>
	{
		WaveInClose();
    e88756ec:	a56ff0ef          	jal	ra,e8874942 <WaveInClose>
		me->inputPCMHandle = NULL;
    e88756f0:	02042023          	sw	zero,32(s0)
        
    	if(me->aecmInst)
    e88756f4:	7c08                	ld	a0,56(s0)
    e88756f6:	c119                	beqz	a0,e88756fc <AudioStreamStop+0x5e>
    	{
    		WebRtcAecm_Free(me->aecmInst);
    e88756f8:	559060ef          	jal	ra,e887c450 <WebRtcAecm_Free>
    	}
        
		AecUninit();
    e88756fc:	a82ff0ef          	jal	ra,e887497e <AecUninit>
        #ifdef SAVE_MIC
        SaveStop();
        #endif
        
    	if(me->pNS_inst)
    e8875700:	6428                	ld	a0,72(s0)
    e8875702:	c119                	beqz	a0,e8875708 <AudioStreamStop+0x6a>
    	{
    		WebRtcNs_Free(me->pNS_inst);
    e8875704:	483070ef          	jal	ra,e887d386 <WebRtcNs_Free>
    	}
    	
    	if(me->agcHandle)
    e8875708:	6028                	ld	a0,64(s0)
    e887570a:	c119                	beqz	a0,e8875710 <AudioStreamStop+0x72>
    	{
    		WebRtcAgc_Free(me->agcHandle);
    e887570c:	690070ef          	jal	ra,e887cd9c <WebRtcAgc_Free>
    	}

    	if(me->vadInst)
    e8875710:	6828                	ld	a0,80(s0)
    e8875712:	c119                	beqz	a0,e8875718 <AudioStreamStop+0x7a>
    	{
    		WebRtcVad_Free(me->vadInst);
    e8875714:	50d060ef          	jal	ra,e887c420 <WebRtcVad_Free>
    	}
	}
	if( me->outputPCMHandle )
    e8875718:	581c                	lw	a5,48(s0)
    e887571a:	c399                	beqz	a5,e8875720 <AudioStreamStop+0x82>
	{
		//WaveOutClose(me->audioType);
		me->outputPCMHandle = NULL;
    e887571c:	02042823          	sw	zero,48(s0)
    pthread_mutex_unlock(&audio_mutex);
    e8875720:	0006f517          	auipc	a0,0x6f
    e8875724:	8c050513          	addi	a0,a0,-1856 # e88e3fe0 <audio_mutex>
    e8875728:	43a060ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	}
	
	unlock_audio();
	
    audio_steam  = 0;
	me->prepared = false;
    e887572c:	02040a23          	sb	zero,52(s0)
	CFRelease( inStream );
    e8875730:	8522                	mv	a0,s0
}
    e8875732:	6402                	ld	s0,0(sp)
    e8875734:	60a2                	ld	ra,8(sp)
    audio_steam  = 0;
    e8875736:	0006e797          	auipc	a5,0x6e
    e887573a:	6e07ab23          	sw	zero,1782(a5) # e88e3e2c <audio_steam>
}
    e887573e:	0141                	addi	sp,sp,16
	CFRelease( inStream );
    e8875740:	a0bd106f          	j	e884714a <CFRelease>
	else if(me->streamType == kAudioStreamType_AltAudio)
    e8875744:	06500713          	li	a4,101
    e8875748:	f8e794e3          	bne	a5,a4,e88756d0 <AudioStreamStop+0x32>
		AltAudioStream = NULL;
    e887574c:	0006f797          	auipc	a5,0x6f
    e8875750:	8607be23          	sd	zero,-1924(a5) # e88e3fc8 <AltAudioStream>
    e8875754:	bfb5                	j	e88756d0 <AudioStreamStop+0x32>

00000000e8875756 <AudioStreamStart>:
{
    e8875756:	7179                	addi	sp,sp,-48
    e8875758:	ec22                	sd	s0,24(sp)
    e887575a:	f406                	sd	ra,40(sp)
    e887575c:	f026                	sd	s1,32(sp)
	if( !me->prepared )
    e887575e:	03454783          	lbu	a5,52(a0)
{
    e8875762:	842a                	mv	s0,a0
	if( !me->prepared )
    e8875764:	cfb5                	beqz	a5,e88757e0 <AudioStreamStart+0x8a>
	me->pNS_inst = NULL;
    e8875766:	04043423          	sd	zero,72(s0)
	me->agcHandle = NULL;
    e887576a:	04043023          	sd	zero,64(s0)
	me->aecmInst = NULL;
    e887576e:	02043c23          	sd	zero,56(s0)
	me->vadInst = NULL;
    e8875772:	04043823          	sd	zero,80(s0)
    me->startTalkTime = GetTickCount();
    e8875776:	663050ef          	jal	ra,e887b5d8 <GetTickCount>
    e887577a:	d068                	sw	a0,100(s0)
	if(me->input)
    e887577c:	0e044783          	lbu	a5,224(s0)
    e8875780:	ebad                	bnez	a5,e88757f2 <AudioStreamStart+0x9c>
	me->stop = false;
    e8875782:	02040aa3          	sb	zero,53(s0)
    pthread_mutex_lock(&audio_mutex);
    e8875786:	0006f517          	auipc	a0,0x6f
    e887578a:	85a50513          	addi	a0,a0,-1958 # e88e3fe0 <audio_mutex>
    e887578e:	390060ef          	jal	ra,e887bb1e <pthread_mutex_lock>
	if(me->streamType == kAudioStreamType_MainAudio || me->streamType == kAudioStreamType_MainHighAudio)
    e8875792:	10842783          	lw	a5,264(s0)
    e8875796:	06400713          	li	a4,100
    e887579a:	ffd7f693          	andi	a3,a5,-3
    e887579e:	16e69b63          	bne	a3,a4,e8875914 <AudioStreamStart+0x1be>
		if(MainAudioStream != NULL)
    e88757a2:	0006f797          	auipc	a5,0x6f
    e88757a6:	82e78793          	addi	a5,a5,-2002 # e88e3fd0 <MainAudioStream>
    e88757aa:	6398                	ld	a4,0(a5)
    e88757ac:	84be                	mv	s1,a5
			printf("MainAudioStream not null\n");
    e88757ae:	00057517          	auipc	a0,0x57
    e88757b2:	60250513          	addi	a0,a0,1538 # e88ccdb0 <__PRETTY_FUNCTION__.11813+0x2a0>
		if(MainAudioStream != NULL)
    e88757b6:	16071f63          	bnez	a4,e8875934 <AudioStreamStart+0x1de>
		AltAudioStream = me;
    e88757ba:	e080                	sd	s0,0(s1)
    pthread_mutex_unlock(&audio_mutex);
    e88757bc:	0006f517          	auipc	a0,0x6f
    e88757c0:	82450513          	addi	a0,a0,-2012 # e88e3fe0 <audio_mutex>
    e88757c4:	39e060ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
    audio_steam  = 1;
    e88757c8:	4481                	li	s1,0
    e88757ca:	4785                	li	a5,1
    e88757cc:	0006e717          	auipc	a4,0x6e
    e88757d0:	66f72023          	sw	a5,1632(a4) # e88e3e2c <audio_steam>
}
    e88757d4:	70a2                	ld	ra,40(sp)
    e88757d6:	6462                	ld	s0,24(sp)
    e88757d8:	8526                	mv	a0,s1
    e88757da:	7482                	ld	s1,32(sp)
    e88757dc:	6145                	addi	sp,sp,48
    e88757de:	8082                	ret
		err = AudioStreamPrepare( inStream );
    e88757e0:	e17ff0ef          	jal	ra,e88755f6 <AudioStreamPrepare>
    e88757e4:	84aa                	mv	s1,a0
		require_noerr( err, exit );
    e88757e6:	d141                	beqz	a0,e8875766 <AudioStreamStart+0x10>
	if( err ) AudioStreamStop( inStream, false );
    e88757e8:	4581                	li	a1,0
    e88757ea:	8522                	mv	a0,s0
    e88757ec:	eb3ff0ef          	jal	ra,e887569e <AudioStreamStop>
	return( err );
    e88757f0:	b7d5                	j	e88757d4 <AudioStreamStart+0x7e>
	    me->blockLen10ms = me->format.mSampleRate/100;
    e88757f2:	0e442783          	lw	a5,228(s0)
    e88757f6:	06400713          	li	a4,100
        if(g_pAecParam->bNoiseCancel)
    e88757fa:	0006e497          	auipc	s1,0x6e
    e88757fe:	7a648493          	addi	s1,s1,1958 # e88e3fa0 <g_pAecParam>
	    me->blockLen10ms = me->format.mSampleRate/100;
    e8875802:	02e7d7bb          	divuw	a5,a5,a4
    e8875806:	cc3c                	sw	a5,88(s0)
        if(g_pAecParam->bNoiseCancel)
    e8875808:	609c                	ld	a5,0(s1)
    e887580a:	0057c703          	lbu	a4,5(a5)
    e887580e:	cb05                	beqz	a4,e887583e <AudioStreamStart+0xe8>
    		printf("noise cancel mode %d\n",g_pAecParam->noiseCancelMode);
    e8875810:	0067c583          	lbu	a1,6(a5)
    e8875814:	00057517          	auipc	a0,0x57
    e8875818:	51450513          	addi	a0,a0,1300 # e88ccd28 <__PRETTY_FUNCTION__.11813+0x218>
    e887581c:	2ab060ef          	jal	ra,e887c2c6 <eLIBs_printf>
    		WebRtcNs_Create(&me->pNS_inst);
    e8875820:	04840513          	addi	a0,s0,72
    e8875824:	337070ef          	jal	ra,e887d35a <WebRtcNs_Create>
    		WebRtcNs_Init(me->pNS_inst,me->format.mSampleRate);
    e8875828:	0e442583          	lw	a1,228(s0)
    e887582c:	6428                	ld	a0,72(s0)
    e887582e:	369070ef          	jal	ra,e887d396 <WebRtcNs_Init>
    		WebRtcNs_set_policy(me->pNS_inst,g_pAecParam->noiseCancelMode);
    e8875832:	609c                	ld	a5,0(s1)
    e8875834:	6428                	ld	a0,72(s0)
    e8875836:	0067c583          	lbu	a1,6(a5)
    e887583a:	361070ef          	jal	ra,e887d39a <WebRtcNs_set_policy>
        if(g_pAecParam->bAutoGainCtrl)
    e887583e:	609c                	ld	a5,0(s1)
    e8875840:	0077c703          	lbu	a4,7(a5)
    e8875844:	cb31                	beqz	a4,e8875898 <AudioStreamStart+0x142>
            printf("auto gain ctrl min -%ddB,max %ddB\n",g_pAecParam->minAgcGain,g_pAecParam->maxAgcGain);
    e8875846:	0097c603          	lbu	a2,9(a5)
    e887584a:	0087c583          	lbu	a1,8(a5)
    e887584e:	00057517          	auipc	a0,0x57
    e8875852:	4f250513          	addi	a0,a0,1266 # e88ccd40 <__PRETTY_FUNCTION__.11813+0x230>
    e8875856:	271060ef          	jal	ra,e887c2c6 <eLIBs_printf>
    		WebRtcAgc_Create(&me->agcHandle);
    e887585a:	04040513          	addi	a0,s0,64
    e887585e:	512070ef          	jal	ra,e887cd70 <WebRtcAgc_Create>
    		WebRtcAgc_Init(me->agcHandle, minLevel, maxLevel, agcMode, me->format.mSampleRate);
    e8875862:	0e442703          	lw	a4,228(s0)
    e8875866:	6028                	ld	a0,64(s0)
    e8875868:	468d                	li	a3,3
    e887586a:	0ff00613          	li	a2,255
    e887586e:	4581                	li	a1,0
    e8875870:	53c070ef          	jal	ra,e887cdac <WebRtcAgc_Init>
    		agcConfig.compressionGaindB = g_pAecParam->maxAgcGain;
    e8875874:	609c                	ld	a5,0(s1)
    		WebRtcAgc_set_config(me->agcHandle, agcConfig);
    e8875876:	6028                	ld	a0,64(s0)
    		agcConfig.compressionGaindB = g_pAecParam->maxAgcGain;
    e8875878:	0097c703          	lbu	a4,9(a5)
    		agcConfig.targetLevelDbfs   = g_pAecParam->minAgcGain;
    e887587c:	0087c783          	lbu	a5,8(a5)
    		agcConfig.compressionGaindB = g_pAecParam->maxAgcGain;
    e8875880:	00e11523          	sh	a4,10(sp)
    		agcConfig.limiterEnable     = 1;
    e8875884:	4705                	li	a4,1
    e8875886:	00e10623          	sb	a4,12(sp)
    		agcConfig.targetLevelDbfs   = g_pAecParam->minAgcGain;
    e887588a:	00f11423          	sh	a5,8(sp)
    		WebRtcAgc_set_config(me->agcHandle, agcConfig);
    e887588e:	65a2                	ld	a1,8(sp)
    e8875890:	434070ef          	jal	ra,e887ccc4 <WebRtcAgc_set_config>
    		me->micLevelIn = 0;
    e8875894:	04043e23          	sd	zero,92(s0)
        if(g_pAecParam->bEchoCancel && carplay_talking)
    e8875898:	609c                	ld	a5,0(s1)
    e887589a:	0007c703          	lbu	a4,0(a5)
    e887589e:	c729                	beqz	a4,e88758e8 <AudioStreamStart+0x192>
    e88758a0:	0006e717          	auipc	a4,0x6e
    e88758a4:	5a870713          	addi	a4,a4,1448 # e88e3e48 <carplay_talking>
    e88758a8:	4318                	lw	a4,0(a4)
    e88758aa:	cf1d                	beqz	a4,e88758e8 <AudioStreamStart+0x192>
            printf("echo cancel delay time %dms,echo mode %d\n",g_pAecParam->echoDelayTime,g_pAecParam->echoCancelMode);
    e88758ac:	0027d583          	lhu	a1,2(a5)
    e88758b0:	0047c603          	lbu	a2,4(a5)
    e88758b4:	00057517          	auipc	a0,0x57
    e88758b8:	4b450513          	addi	a0,a0,1204 # e88ccd68 <__PRETTY_FUNCTION__.11813+0x258>
    e88758bc:	20b060ef          	jal	ra,e887c2c6 <eLIBs_printf>
            me->aecmInst = NULL;
    e88758c0:	8522                	mv	a0,s0
    e88758c2:	6ce5500b          	sdib	zero,(a0),14,2
            WebRtcAecm_Create(&me->aecmInst);
    e88758c6:	3b9060ef          	jal	ra,e887c47e <WebRtcAecm_Create>
            WebRtcAecm_Init(me->aecmInst, me->format.mSampleRate);
    e88758ca:	0e442583          	lw	a1,228(s0)
    e88758ce:	7c08                	ld	a0,56(s0)
    e88758d0:	2b0070ef          	jal	ra,e887cb80 <WebRtcAecm_Init>
            config.echoMode = g_pAecParam->echoCancelMode;//回音消除等级 0 - 4
    e88758d4:	609c                	ld	a5,0(s1)
            WebRtcAecm_set_config(me->aecmInst, config);
    e88758d6:	7c08                	ld	a0,56(s0)
            config.echoMode = g_pAecParam->echoCancelMode;//回音消除等级 0 - 4
    e88758d8:	0047c583          	lbu	a1,4(a5)
    e88758dc:	0105959b          	slliw	a1,a1,0x10
            WebRtcAecm_set_config(me->aecmInst, config);
    e88758e0:	0015e593          	ori	a1,a1,1
    e88758e4:	0ce070ef          	jal	ra,e887c9b2 <WebRtcAecm_set_config>
        AecInit();
    e88758e8:	878ff0ef          	jal	ra,e8874960 <AecInit>
            printf("vad detect,mode %d\n",2);
    e88758ec:	4589                	li	a1,2
    e88758ee:	00057517          	auipc	a0,0x57
    e88758f2:	4aa50513          	addi	a0,a0,1194 # e88ccd98 <__PRETTY_FUNCTION__.11813+0x288>
    e88758f6:	1d1060ef          	jal	ra,e887c2c6 <eLIBs_printf>
    		me->vadInst = NULL;
    e88758fa:	8522                	mv	a0,s0
    e88758fc:	6ea5500b          	sdib	zero,(a0),10,3
    		WebRtcVad_Create(&me->vadInst);
    e8875900:	2e9060ef          	jal	ra,e887c3e8 <WebRtcVad_Create>
    		WebRtcVad_Init(me->vadInst);
    e8875904:	6828                	ld	a0,80(s0)
    e8875906:	331060ef          	jal	ra,e887c436 <WebRtcVad_Init>
    		WebRtcVad_set_mode(me->vadInst,mode);
    e887590a:	6828                	ld	a0,80(s0)
    e887590c:	4589                	li	a1,2
    e887590e:	32d060ef          	jal	ra,e887c43a <WebRtcVad_set_mode>
    e8875912:	bd85                	j	e8875782 <AudioStreamStart+0x2c>
	else if(me->streamType == kAudioStreamType_AltAudio)
    e8875914:	06500713          	li	a4,101
    e8875918:	02e79163          	bne	a5,a4,e887593a <AudioStreamStart+0x1e4>
		if(AltAudioStream != NULL)
    e887591c:	0006e797          	auipc	a5,0x6e
    e8875920:	6ac78793          	addi	a5,a5,1708 # e88e3fc8 <AltAudioStream>
    e8875924:	6398                	ld	a4,0(a5)
    e8875926:	84be                	mv	s1,a5
    e8875928:	e80709e3          	beqz	a4,e88757ba <AudioStreamStart+0x64>
			printf("AltAudioStream not null\n");
    e887592c:	00057517          	auipc	a0,0x57
    e8875930:	4a450513          	addi	a0,a0,1188 # e88ccdd0 <__PRETTY_FUNCTION__.11813+0x2c0>
    e8875934:	193060ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8875938:	b549                	j	e88757ba <AudioStreamStart+0x64>
		printf("unknow Audio stream\n");
    e887593a:	00057517          	auipc	a0,0x57
    e887593e:	4b650513          	addi	a0,a0,1206 # e88ccdf0 <__PRETTY_FUNCTION__.11813+0x2e0>
    e8875942:	185060ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8875946:	bd9d                	j	e88757bc <AudioStreamStart+0x66>

00000000e8875948 <spinor_read_uid>:
	int32_t ret;
	uint32_t rdid;
    int fd = -1;
	unsigned long arg[3] = {0};
    char in[16],out[16];
    char key[16] = {0x23,0x37,0x95,0x13,0x45,0x98,0x59,0x78,0x06,0x78,0x90,0x65,0x95,0x24,0x56,0x76};
    e8875948:	00057797          	auipc	a5,0x57
    e887594c:	5e078793          	addi	a5,a5,1504 # e88ccf28 <kAudioStreamClass+0x100>
    e8875950:	639c                	ld	a5,0(a5)
{
    e8875952:	7175                	addi	sp,sp,-144
    e8875954:	f4ce                	sd	s3,104(sp)
    char key[16] = {0x23,0x37,0x95,0x13,0x45,0x98,0x59,0x78,0x06,0x78,0x90,0x65,0x95,0x24,0x56,0x76};
    e8875956:	f43e                	sd	a5,40(sp)
    e8875958:	00057797          	auipc	a5,0x57
    e887595c:	5d878793          	addi	a5,a5,1496 # e88ccf30 <kAudioStreamClass+0x108>
    e8875960:	639c                	ld	a5,0(a5)
{
    e8875962:	89aa                	mv	s3,a0
    
	fd = open("dev/spinor2", O_RDWR);
    e8875964:	4589                	li	a1,2
    e8875966:	00057517          	auipc	a0,0x57
    e887596a:	5d250513          	addi	a0,a0,1490 # e88ccf38 <kAudioStreamClass+0x110>
{
    e887596e:	e506                	sd	ra,136(sp)
    e8875970:	e122                	sd	s0,128(sp)
    e8875972:	fca6                	sd	s1,120(sp)
    e8875974:	f8ca                	sd	s2,112(sp)
    e8875976:	f0d2                	sd	s4,96(sp)
    e8875978:	ecd6                	sd	s5,88(sp)
	unsigned long arg[3] = {0};
    e887597a:	fc02                	sd	zero,56(sp)
    e887597c:	e082                	sd	zero,64(sp)
    e887597e:	e482                	sd	zero,72(sp)
    char key[16] = {0x23,0x37,0x95,0x13,0x45,0x98,0x59,0x78,0x06,0x78,0x90,0x65,0x95,0x24,0x56,0x76};
    e8875980:	f83e                	sd	a5,48(sp)
	fd = open("dev/spinor2", O_RDWR);
    e8875982:	aaf8a0ef          	jal	ra,e8800430 <open>
	if (fd < 0)
    e8875986:	00055a63          	bgez	a0,e887599a <spinor_read_uid+0x52>
	{
        printf("fd is null----\n");
    e887598a:	00057517          	auipc	a0,0x57
    e887598e:	5be50513          	addi	a0,a0,1470 # e88ccf48 <kAudioStreamClass+0x120>
    e8875992:	88f8a0ef          	jal	ra,e8800220 <printf>
    ioctl(fd, BLOCK_DEVICE_CMD_TEST_LIB, arg);
    for(i=0;i<16;i++)
    {
        if(out[i] != (char)(in[i]+key[i]))
        {
            return 0;
    e8875996:	4401                	li	s0,0
    e8875998:	a871                	j	e8875a34 <spinor_read_uid+0xec>
    arg[0] = in;
    e887599a:	003c                	addi	a5,sp,8
    e887599c:	fc3e                	sd	a5,56(sp)
    arg[1] = out;
    e887599e:	083c                	addi	a5,sp,24
    ioctl(fd, BLOCK_DEVICE_CMD_TEST_LIB, arg);
    e88759a0:	1830                	addi	a2,sp,56
    e88759a2:	45a5                	li	a1,9
    e88759a4:	84aa                	mv	s1,a0
    arg[1] = out;
    e88759a6:	e0be                	sd	a5,64(sp)
    ioctl(fd, BLOCK_DEVICE_CMD_TEST_LIB, arg);
    e88759a8:	059060ef          	jal	ra,e887c200 <ioctl>
    e88759ac:	4401                	li	s0,0
        if(out[i] != (char)(in[i]+key[i]))
    e88759ae:	1034                	addi	a3,sp,40
    for(i=0;i<16;i++)
    e88759b0:	4741                	li	a4,16
        if(out[i] != (char)(in[i]+key[i]))
    e88759b2:	003c                	addi	a5,sp,8
    e88759b4:	80d4460b          	lrbu	a2,s0,a3,0
    e88759b8:	8087c78b          	lrbu	a5,a5,s0,0
    e88759bc:	9fb1                	addw	a5,a5,a2
    e88759be:	0830                	addi	a2,sp,24
    e88759c0:	8086460b          	lrbu	a2,a2,s0,0
    e88759c4:	0ff7f793          	andi	a5,a5,255
    e88759c8:	fcf617e3          	bne	a2,a5,e8875996 <spinor_read_uid+0x4e>
    for(i=0;i<16;i++)
    e88759cc:	0405                	addi	s0,s0,1
    e88759ce:	fee412e3          	bne	s0,a4,e88759b2 <spinor_read_uid+0x6a>
        }
    }
    
    arg[0] = &rdid;
    e88759d2:	005c                	addi	a5,sp,4
    if(ioctl(fd, BLOCK_DEVICE_CMD_READ_ID, arg) == 0)
    e88759d4:	1830                	addi	a2,sp,56
    e88759d6:	45a1                	li	a1,8
    e88759d8:	8526                	mv	a0,s1
    arg[0] = &rdid;
    e88759da:	fc3e                	sd	a5,56(sp)
    if(ioctl(fd, BLOCK_DEVICE_CMD_READ_ID, arg) == 0)
    e88759dc:	025060ef          	jal	ra,e887c200 <ioctl>
    arg[1] = 16;

    uid_len = ioctl(fd, BLOCK_DEVICE_CMD_READ_UUID, arg);
    
    printf("uuid len %d:",uid_len);
	for(i=0; i< uid_len; i++)
    e88759e0:	4901                	li	s2,0
    printf("rdid=0x%x\n", rdid);
    e88759e2:	4592                	lw	a1,4(sp)
    e88759e4:	00057517          	auipc	a0,0x57
    e88759e8:	57450513          	addi	a0,a0,1396 # e88ccf58 <kAudioStreamClass+0x130>
	{
		printf("%02x ", uid[i]);
    e88759ec:	00057a97          	auipc	s5,0x57
    e88759f0:	58ca8a93          	addi	s5,s5,1420 # e88ccf78 <kAudioStreamClass+0x150>
    printf("rdid=0x%x\n", rdid);
    e88759f4:	82d8a0ef          	jal	ra,e8800220 <printf>
    arg[1] = 16;
    e88759f8:	e0a2                	sd	s0,64(sp)
    uid_len = ioctl(fd, BLOCK_DEVICE_CMD_READ_UUID, arg);
    e88759fa:	1830                	addi	a2,sp,56
    e88759fc:	4595                	li	a1,5
    e88759fe:	8526                	mv	a0,s1
    arg[0] = uid;
    e8875a00:	fc4e                	sd	s3,56(sp)
    uid_len = ioctl(fd, BLOCK_DEVICE_CMD_READ_UUID, arg);
    e8875a02:	7fe060ef          	jal	ra,e887c200 <ioctl>
    e8875a06:	0ff57a13          	andi	s4,a0,255
    printf("uuid len %d:",uid_len);
    e8875a0a:	85d2                	mv	a1,s4
    e8875a0c:	00057517          	auipc	a0,0x57
    e8875a10:	55c50513          	addi	a0,a0,1372 # e88ccf68 <kAudioStreamClass+0x140>
    e8875a14:	8452                	mv	s0,s4
    e8875a16:	80b8a0ef          	jal	ra,e8800220 <printf>
	for(i=0; i< uid_len; i++)
    e8875a1a:	0ff97793          	andi	a5,s2,255
    e8875a1e:	0347e563          	bltu	a5,s4,e8875a48 <spinor_read_uid+0x100>
    }
    printf("\n");
    e8875a22:	0002a517          	auipc	a0,0x2a
    e8875a26:	25e50513          	addi	a0,a0,606 # e889fc80 <TWO52+0x88>
    e8875a2a:	ff68a0ef          	jal	ra,e8800220 <printf>
    
    close(fd);
    e8875a2e:	8526                	mv	a0,s1
    e8875a30:	9e18a0ef          	jal	ra,e8800410 <close>
	return uid_len;
}
    e8875a34:	8522                	mv	a0,s0
    e8875a36:	60aa                	ld	ra,136(sp)
    e8875a38:	640a                	ld	s0,128(sp)
    e8875a3a:	74e6                	ld	s1,120(sp)
    e8875a3c:	7946                	ld	s2,112(sp)
    e8875a3e:	79a6                	ld	s3,104(sp)
    e8875a40:	7a06                	ld	s4,96(sp)
    e8875a42:	6ae6                	ld	s5,88(sp)
    e8875a44:	6149                	addi	sp,sp,144
    e8875a46:	8082                	ret
		printf("%02x ", uid[i]);
    e8875a48:	8129c58b          	lrbu	a1,s3,s2,0
    e8875a4c:	8556                	mv	a0,s5
    e8875a4e:	0905                	addi	s2,s2,1
    e8875a50:	fd08a0ef          	jal	ra,e8800220 <printf>
	for(i=0; i< uid_len; i++)
    e8875a54:	b7d9                	j	e8875a1a <spinor_read_uid+0xd2>

00000000e8875a56 <spinor_read_otp>:

int32_t spinor_read_otp(uint32_t addr,uint8_t *otp)
{
    e8875a56:	715d                	addi	sp,sp,-80
    e8875a58:	e0a2                	sd	s0,64(sp)
    e8875a5a:	f84a                	sd	s2,48(sp)
    e8875a5c:	842a                	mv	s0,a0
    e8875a5e:	892e                	mv	s2,a1
    int i;
    int fd = -1;
	unsigned long arg[3] = {0};
    
    fd = open("dev/spinor2", O_RDWR);
    e8875a60:	00057517          	auipc	a0,0x57
    e8875a64:	4d850513          	addi	a0,a0,1240 # e88ccf38 <kAudioStreamClass+0x110>
    e8875a68:	4589                	li	a1,2
{
    e8875a6a:	e486                	sd	ra,72(sp)
    e8875a6c:	fc26                	sd	s1,56(sp)
    e8875a6e:	f44e                	sd	s3,40(sp)
    e8875a70:	f052                	sd	s4,32(sp)
	unsigned long arg[3] = {0};
    e8875a72:	e402                	sd	zero,8(sp)
    e8875a74:	e802                	sd	zero,16(sp)
    e8875a76:	ec02                	sd	zero,24(sp)
    fd = open("dev/spinor2", O_RDWR);
    e8875a78:	9b98a0ef          	jal	ra,e8800430 <open>
	if (fd < 0)
    e8875a7c:	02055163          	bgez	a0,e8875a9e <spinor_read_otp+0x48>
	{
        printf("fd is null----\n");
    e8875a80:	00057517          	auipc	a0,0x57
    e8875a84:	4c850513          	addi	a0,a0,1224 # e88ccf48 <kAudioStreamClass+0x120>
    e8875a88:	f988a0ef          	jal	ra,e8800220 <printf>
    }
    printf("\n");

    close(fd);
	return 0;
}
    e8875a8c:	60a6                	ld	ra,72(sp)
    e8875a8e:	6406                	ld	s0,64(sp)
    e8875a90:	74e2                	ld	s1,56(sp)
    e8875a92:	7942                	ld	s2,48(sp)
    e8875a94:	79a2                	ld	s3,40(sp)
    e8875a96:	7a02                	ld	s4,32(sp)
    e8875a98:	4501                	li	a0,0
    e8875a9a:	6161                	addi	sp,sp,80
    e8875a9c:	8082                	ret
    arg[2] = 16;
    e8875a9e:	47c1                	li	a5,16
    arg[0] = addr;
    e8875aa0:	7c04340b          	extu	s0,s0,31,0
    if(ioctl(fd, BLOCK_DEVICE_CMD_READ_OTP, arg) == 0)
    e8875aa4:	0030                	addi	a2,sp,8
    e8875aa6:	4599                	li	a1,6
    arg[0] = addr;
    e8875aa8:	e422                	sd	s0,8(sp)
    arg[2] = 16;
    e8875aaa:	ec3e                	sd	a5,24(sp)
    e8875aac:	84aa                	mv	s1,a0
    arg[1] = otp;
    e8875aae:	e84a                	sd	s2,16(sp)
    if(ioctl(fd, BLOCK_DEVICE_CMD_READ_OTP, arg) == 0)
    e8875ab0:	750060ef          	jal	ra,e887c200 <ioctl>
    printf("otp:");
    e8875ab4:	4401                	li	s0,0
    e8875ab6:	00057517          	auipc	a0,0x57
    e8875aba:	46a50513          	addi	a0,a0,1130 # e88ccf20 <kAudioStreamClass+0xf8>
    e8875abe:	f628a0ef          	jal	ra,e8800220 <printf>
        printf("%02x ",otp[i]);
    e8875ac2:	00057a17          	auipc	s4,0x57
    e8875ac6:	4b6a0a13          	addi	s4,s4,1206 # e88ccf78 <kAudioStreamClass+0x150>
    for(i=0;i<16;i++)
    e8875aca:	49c1                	li	s3,16
        printf("%02x ",otp[i]);
    e8875acc:	8089458b          	lrbu	a1,s2,s0,0
    e8875ad0:	8552                	mv	a0,s4
    e8875ad2:	0405                	addi	s0,s0,1
    e8875ad4:	f4c8a0ef          	jal	ra,e8800220 <printf>
    for(i=0;i<16;i++)
    e8875ad8:	ff341ae3          	bne	s0,s3,e8875acc <spinor_read_otp+0x76>
    printf("\n");
    e8875adc:	0002a517          	auipc	a0,0x2a
    e8875ae0:	1a450513          	addi	a0,a0,420 # e889fc80 <TWO52+0x88>
    e8875ae4:	f3c8a0ef          	jal	ra,e8800220 <printf>
    close(fd);
    e8875ae8:	8526                	mv	a0,s1
    e8875aea:	9278a0ef          	jal	ra,e8800410 <close>
	return 0;
    e8875aee:	bf79                	j	e8875a8c <spinor_read_otp+0x36>

00000000e8875af0 <CalcEncryptData>:
{
    int i;
    uint8_t sum = 0;
    int str_len;
    char str[250];
    uint8_t key[16] = {0x55,0x37,0x95,0x13,0x14,0x98,0x59,0x41,0x06,0x78,0x54,0x65,0x95,0x24,0x66,0x82};
    e8875af0:	00057797          	auipc	a5,0x57
    e8875af4:	3b878793          	addi	a5,a5,952 # e88ccea8 <kAudioStreamClass+0x80>
    e8875af8:	639c                	ld	a5,0(a5)
{
    e8875afa:	7125                	addi	sp,sp,-416
    e8875afc:	eb22                	sd	s0,400(sp)
    uint8_t key[16] = {0x55,0x37,0x95,0x13,0x14,0x98,0x59,0x41,0x06,0x78,0x54,0x65,0x95,0x24,0x66,0x82};
    e8875afe:	e43e                	sd	a5,8(sp)
    e8875b00:	00057797          	auipc	a5,0x57
    e8875b04:	3b078793          	addi	a5,a5,944 # e88cceb0 <kAudioStreamClass+0x88>
    e8875b08:	639c                	ld	a5,0(a5)

    strcpy(str,product);
    e8875b0a:	1880                	addi	s0,sp,112
{
    e8875b0c:	fad2                	sd	s4,368(sp)
    e8875b0e:	8a2a                	mv	s4,a0
    strcpy(str,product);
    e8875b10:	8522                	mv	a0,s0
{
    e8875b12:	e726                	sd	s1,392(sp)
    e8875b14:	e34a                	sd	s2,384(sp)
    e8875b16:	fece                	sd	s3,376(sp)
    uint8_t key[16] = {0x55,0x37,0x95,0x13,0x14,0x98,0x59,0x41,0x06,0x78,0x54,0x65,0x95,0x24,0x66,0x82};
    e8875b18:	e83e                	sd	a5,16(sp)
{
    e8875b1a:	ef06                	sd	ra,408(sp)
    e8875b1c:	89b2                	mv	s3,a2
    e8875b1e:	84b6                	mv	s1,a3
    e8875b20:	893a                	mv	s2,a4
    strcpy(str,product);
    e8875b22:	f968a0ef          	jal	ra,e88002b8 <strcpy>

    switch(function)
    e8875b26:	4795                	li	a5,5
    		break;
    	case 5:
            strcat(str,"-MIRROR");
    		break;
        default:
            return 0;
    e8875b28:	4501                	li	a0,0
    switch(function)
    e8875b2a:	0b47e863          	bltu	a5,s4,e8875bda <CalcEncryptData+0xea>
    e8875b2e:	00057717          	auipc	a4,0x57
    e8875b32:	35e70713          	addi	a4,a4,862 # e88cce8c <kAudioStreamClass+0x64>
    e8875b36:	5547478b          	lurw	a5,a4,s4,2
    e8875b3a:	97ba                	add	a5,a5,a4
    e8875b3c:	8782                	jr	a5
            strcat(str,"-MP5");
    e8875b3e:	00057597          	auipc	a1,0x57
    e8875b42:	37a58593          	addi	a1,a1,890 # e88cceb8 <kAudioStreamClass+0x90>
            strcat(str,"-MIRROR");
    e8875b46:	8522                	mv	a0,s0
    e8875b48:	f188a0ef          	jal	ra,e8800260 <strcat>
    }

    str_len = strlen(str);
    e8875b4c:	8522                	mv	a0,s0
    e8875b4e:	81b8a0ef          	jal	ra,e8800368 <strlen>
    e8875b52:	2501                	sext.w	a0,a0
    e8875b54:	4781                	li	a5,0
    uint8_t sum = 0;
    e8875b56:	4681                	li	a3,0

    //printf("str:%s\n",str);
    
	for(i=0;i<16;i++)
    e8875b58:	4641                	li	a2,16
	{
		key[i] += str[i%16%str_len];
    e8875b5a:	02a7e73b          	remw	a4,a5,a0
    e8875b5e:	002c                	addi	a1,sp,8
    e8875b60:	80f5c58b          	lrbu	a1,a1,a5,0
    e8875b64:	80e4470b          	lrbu	a4,s0,a4,0
    e8875b68:	9f2d                	addw	a4,a4,a1
    e8875b6a:	0ff77713          	andi	a4,a4,255
    e8875b6e:	002c                	addi	a1,sp,8
    e8875b70:	00f5d70b          	srb	a4,a1,a5,0
		sum += key[i];
    e8875b74:	9eb9                	addw	a3,a3,a4
    e8875b76:	0785                	addi	a5,a5,1
    e8875b78:	0ff6f693          	andi	a3,a3,255
	for(i=0;i<16;i++)
    e8875b7c:	fcc79fe3          	bne	a5,a2,e8875b5a <CalcEncryptData+0x6a>
	}

	key[0] += sum;
    e8875b80:	00814703          	lbu	a4,8(sp)
    e8875b84:	87ae                	mv	a5,a1
    e8875b86:	9eb9                	addw	a3,a3,a4
    e8875b88:	00d10423          	sb	a3,8(sp)
	for(i=1;i<16;i++)
    e8875b8c:	01710693          	addi	a3,sp,23
	{
		key[i] += key[i-1];
    e8875b90:	0017c703          	lbu	a4,1(a5)
    e8875b94:	0007c603          	lbu	a2,0(a5)
    e8875b98:	9f31                	addw	a4,a4,a2
    e8875b9a:	0817d70b          	sbib	a4,(a5),1,0
	for(i=1;i<16;i++)
    e8875b9e:	fef699e3          	bne	a3,a5,e8875b90 <CalcEncryptData+0xa0>
        printf("\n");*/

        return 1;
    }

    return 0;
    e8875ba2:	4501                	li	a0,0
    if(uid_len > 0)
    e8875ba4:	02905b63          	blez	s1,e8875bda <CalcEncryptData+0xea>
    	mbedtls_md5_init( &ctx_md5 );
    e8875ba8:	0828                	addi	a0,sp,24
    e8875baa:	0de000ef          	jal	ra,e8875c88 <mbedtls_md5_init>
    	mbedtls_md5_starts( &ctx_md5 );
    e8875bae:	0828                	addi	a0,sp,24
    e8875bb0:	0f4000ef          	jal	ra,e8875ca4 <mbedtls_md5_starts>
    	mbedtls_md5_update( &ctx_md5, uid_data, uid_len );
    e8875bb4:	0ff4f613          	andi	a2,s1,255
    e8875bb8:	85ce                	mv	a1,s3
    e8875bba:	0828                	addi	a0,sp,24
    e8875bbc:	3fb000ef          	jal	ra,e88767b6 <mbedtls_md5_update>
    	mbedtls_md5_update(&ctx_md5, key, sizeof(key));		// KEY, ʹøKEY, δ.
    e8875bc0:	4641                	li	a2,16
    e8875bc2:	002c                	addi	a1,sp,8
    e8875bc4:	0828                	addi	a0,sp,24
    e8875bc6:	3f1000ef          	jal	ra,e88767b6 <mbedtls_md5_update>
    	mbedtls_md5_finish( &ctx_md5, out );
    e8875bca:	85ca                	mv	a1,s2
    e8875bcc:	0828                	addi	a0,sp,24
    e8875bce:	3f1000ef          	jal	ra,e88767be <mbedtls_md5_finish>
    	mbedtls_md5_free( &ctx_md5 );
    e8875bd2:	0828                	addi	a0,sp,24
    e8875bd4:	0be000ef          	jal	ra,e8875c92 <mbedtls_md5_free>
        return 1;
    e8875bd8:	4505                	li	a0,1
}
    e8875bda:	60fa                	ld	ra,408(sp)
    e8875bdc:	645a                	ld	s0,400(sp)
    e8875bde:	64ba                	ld	s1,392(sp)
    e8875be0:	691a                	ld	s2,384(sp)
    e8875be2:	79f6                	ld	s3,376(sp)
    e8875be4:	7a56                	ld	s4,368(sp)
    e8875be6:	611d                	addi	sp,sp,416
    e8875be8:	8082                	ret
            strcat(str,"-MP5-CARPLAY");
    e8875bea:	00057597          	auipc	a1,0x57
    e8875bee:	2d658593          	addi	a1,a1,726 # e88ccec0 <kAudioStreamClass+0x98>
    e8875bf2:	bf91                	j	e8875b46 <CalcEncryptData+0x56>
            strcat(str,"-MP5-WIFI");
    e8875bf4:	00057597          	auipc	a1,0x57
    e8875bf8:	2dc58593          	addi	a1,a1,732 # e88cced0 <kAudioStreamClass+0xa8>
    e8875bfc:	b7a9                	j	e8875b46 <CalcEncryptData+0x56>
            strcat(str,"-CARPLAY");
    e8875bfe:	00057597          	auipc	a1,0x57
    e8875c02:	2e258593          	addi	a1,a1,738 # e88ccee0 <kAudioStreamClass+0xb8>
    e8875c06:	b781                	j	e8875b46 <CalcEncryptData+0x56>
            strcat(str,"-WIFI");
    e8875c08:	00057597          	auipc	a1,0x57
    e8875c0c:	2e858593          	addi	a1,a1,744 # e88ccef0 <kAudioStreamClass+0xc8>
    e8875c10:	bf1d                	j	e8875b46 <CalcEncryptData+0x56>
            strcat(str,"-MIRROR");
    e8875c12:	00057597          	auipc	a1,0x57
    e8875c16:	2e658593          	addi	a1,a1,742 # e88ccef8 <kAudioStreamClass+0xd0>
    e8875c1a:	b735                	j	e8875b46 <CalcEncryptData+0x56>

00000000e8875c1c <CheckLicense>:

int CheckLicense(int function,char *product,uint8_t *uid_data,int uid_len,uint8_t *otp)
{
    e8875c1c:	1101                	addi	sp,sp,-32
    e8875c1e:	e822                	sd	s0,16(sp)
    e8875c20:	843a                	mv	s0,a4
    int i;
    uint8_t encrypt;
    uint8_t otp_calc[16];  //otp
    CalcEncryptData(function,product,uid_data,uid_len,otp_calc);
    e8875c22:	870a                	mv	a4,sp
{
    e8875c24:	ec06                	sd	ra,24(sp)
    CalcEncryptData(function,product,uid_data,uid_len,otp_calc);
    e8875c26:	ecbff0ef          	jal	ra,e8875af0 <CalcEncryptData>
    if(memcmp(otp,otp_calc,16) == 0)
    e8875c2a:	4641                	li	a2,16
    e8875c2c:	858a                	mv	a1,sp
    e8875c2e:	8522                	mv	a0,s0
    e8875c30:	bd08a0ef          	jal	ra,e8800000 <memcmp>
    e8875c34:	ed09                	bnez	a0,e8875c4e <CheckLicense+0x32>
    {   //㷨
        printf("license1\n");
    e8875c36:	00057517          	auipc	a0,0x57
    e8875c3a:	2ca50513          	addi	a0,a0,714 # e88ccf00 <kAudioStreamClass+0xd8>
    e8875c3e:	de28a0ef          	jal	ra,e8800220 <printf>
        return 1;
    e8875c42:	4785                	li	a5,1
            printf("license2\n");
            return 2;
        }
    }
    return 0;
}
    e8875c44:	60e2                	ld	ra,24(sp)
    e8875c46:	6442                	ld	s0,16(sp)
    e8875c48:	853e                	mv	a0,a5
    e8875c4a:	6105                	addi	sp,sp,32
    e8875c4c:	8082                	ret
        encrypt = otp_calc[5];
    e8875c4e:	00514783          	lbu	a5,5(sp)
        for(i=0;i<16;i++)
    e8875c52:	870a                	mv	a4,sp
    e8875c54:	0810                	addi	a2,sp,16
    		encrypt += otp_calc[i];
    e8875c56:	00074683          	lbu	a3,0(a4)
    e8875c5a:	9fb5                	addw	a5,a5,a3
    e8875c5c:	0ff7f793          	andi	a5,a5,255
    		otp_calc[i] ^= encrypt;
    e8875c60:	8ebd                	xor	a3,a3,a5
    e8875c62:	1817568b          	sbia	a3,(a4),1,0
        for(i=0;i<16;i++)
    e8875c66:	fec718e3          	bne	a4,a2,e8875c56 <CheckLicense+0x3a>
        if(memcmp(otp,otp_calc,16) == 0)       
    e8875c6a:	4641                	li	a2,16
    e8875c6c:	858a                	mv	a1,sp
    e8875c6e:	8522                	mv	a0,s0
    e8875c70:	b908a0ef          	jal	ra,e8800000 <memcmp>
    return 0;
    e8875c74:	4781                	li	a5,0
        if(memcmp(otp,otp_calc,16) == 0)       
    e8875c76:	f579                	bnez	a0,e8875c44 <CheckLicense+0x28>
            printf("license2\n");
    e8875c78:	00057517          	auipc	a0,0x57
    e8875c7c:	29850513          	addi	a0,a0,664 # e88ccf10 <kAudioStreamClass+0xe8>
    e8875c80:	da08a0ef          	jal	ra,e8800220 <printf>
            return 2;
    e8875c84:	4789                	li	a5,2
    e8875c86:	bf7d                	j	e8875c44 <CheckLicense+0x28>

00000000e8875c88 <mbedtls_md5_init>:
}
#endif

void mbedtls_md5_init( mbedtls_md5_context *ctx )
{
    memset( ctx, 0, sizeof( mbedtls_md5_context ) );
    e8875c88:	05800613          	li	a2,88
    e8875c8c:	4581                	li	a1,0
    e8875c8e:	7060606f          	j	e887c394 <eLIBs_memset>

00000000e8875c92 <mbedtls_md5_free>:
}

void mbedtls_md5_free( mbedtls_md5_context *ctx )
{
    if( ctx == NULL )
    e8875c92:	05850793          	addi	a5,a0,88
    e8875c96:	e501                	bnez	a0,e8875c9e <mbedtls_md5_free+0xc>
        return;

    mbedtls_zeroize( ctx, sizeof( mbedtls_md5_context ) );
}
    e8875c98:	8082                	ret
		while( n-- ) *p++ = 0;
    e8875c9a:	1815500b          	sbia	zero,(a0),1,0
    e8875c9e:	fef51ee3          	bne	a0,a5,e8875c9a <mbedtls_md5_free+0x8>
    e8875ca2:	bfdd                	j	e8875c98 <mbedtls_md5_free+0x6>

00000000e8875ca4 <mbedtls_md5_starts>:
void mbedtls_md5_starts( mbedtls_md5_context *ctx )
{
    ctx->total[0] = 0;
    ctx->total[1] = 0;

    ctx->state[0] = 0x67452301;
    e8875ca4:	0002e797          	auipc	a5,0x2e
    e8875ca8:	9f478793          	addi	a5,a5,-1548 # e88a3698 <zerov6Addr+0xb0>
    e8875cac:	639c                	ld	a5,0(a5)
    ctx->total[0] = 0;
    e8875cae:	00053023          	sd	zero,0(a0)
    ctx->state[0] = 0x67452301;
    e8875cb2:	e51c                	sd	a5,8(a0)
    ctx->state[1] = 0xEFCDAB89;
    ctx->state[2] = 0x98BADCFE;
    e8875cb4:	0002e797          	auipc	a5,0x2e
    e8875cb8:	9ec78793          	addi	a5,a5,-1556 # e88a36a0 <zerov6Addr+0xb8>
    e8875cbc:	639c                	ld	a5,0(a5)
    e8875cbe:	e91c                	sd	a5,16(a0)
    ctx->state[3] = 0x10325476;
}
    e8875cc0:	8082                	ret

00000000e8875cc2 <mbedtls_md5_process>:

#if !defined(MBEDTLS_MD5_PROCESS_ALT)
void mbedtls_md5_process( mbedtls_md5_context *ctx, const unsigned char data[64] )
{
    e8875cc2:	711d                	addi	sp,sp,-96
{                                                       \
    a += F(b,c,d) + X[k] + t; a = S(a,s) + b;           \
}

    A = ctx->state[0];
    B = ctx->state[1];
    e8875cc4:	e2c54f8b          	lwd	t6,a2,(a0),1,3
{
    e8875cc8:	e06e                	sd	s11,0(sp)
    e8875cca:	eca2                	sd	s0,88(sp)
    e8875ccc:	e8a6                	sd	s1,80(sp)
    e8875cce:	e4ca                	sd	s2,72(sp)
    e8875cd0:	e0ce                	sd	s3,64(sp)
    e8875cd2:	fc52                	sd	s4,56(sp)
    e8875cd4:	f856                	sd	s5,48(sp)
    e8875cd6:	f45a                	sd	s6,40(sp)
    e8875cd8:	f05e                	sd	s7,32(sp)
    e8875cda:	ec62                	sd	s8,24(sp)
    e8875cdc:	e866                	sd	s9,16(sp)
    e8875cde:	e46a                	sd	s10,8(sp)
    e8875ce0:	d76aa337          	lui	t1,0xd76aa
    GET_UINT32_LE( X[ 1], data,  4 );
    e8875ce4:	e0e5cc8b          	lwd	s9,a4,(a1),0,3
    C = ctx->state[2];
    D = ctx->state[3];
    e8875ce8:	e515480b          	lwd	a6,a7,(a0),2,3
    e8875cec:	4783031b          	addiw	t1,t1,1144
    e8875cf0:	006f833b          	addw	t1,t6,t1
    GET_UINT32_LE( X[ 5], data, 20 );
    e8875cf4:	e565c48b          	lwd	s1,s6,(a1),2,3
    GET_UINT32_LE( X[ 3], data, 12 );
    e8875cf8:	e345c38b          	lwd	t2,s4,(a1),1,3
    GET_UINT32_LE( X[ 7], data, 28 );
    e8875cfc:	01c5ac03          	lw	s8,28(a1)
    GET_UINT32_LE( X[ 8], data, 32 );
    e8875d00:	519c                	lw	a5,32(a1)
    GET_UINT32_LE( X[11], data, 44 );
    e8875d02:	55c0                	lw	s0,44(a1)
    GET_UINT32_LE( X[12], data, 48 );
    e8875d04:	0305aa83          	lw	s5,48(a1)
    GET_UINT32_LE( X[ 6], data, 24 );
    e8875d08:	4d94                	lw	a3,24(a1)
    GET_UINT32_LE( X[ 9], data, 36 );
    e8875d0a:	0245af03          	lw	t5,36(a1)
    GET_UINT32_LE( X[10], data, 40 );
    e8875d0e:	0285a983          	lw	s3,40(a1)
    GET_UINT32_LE( X[13], data, 52 );
    e8875d12:	0345a903          	lw	s2,52(a1)
    GET_UINT32_LE( X[14], data, 56 );
    e8875d16:	0385ab83          	lw	s7,56(a1)
    GET_UINT32_LE( X[15], data, 60 );
    e8875d1a:	03c5ad03          	lw	s10,60(a1)

#define F(x,y,z) (z ^ (x & (y ^ z)))

    P( A, B, C, D,  0,  7, 0xD76AA478 );
    e8875d1e:	019305bb          	addw	a1,t1,s9
    e8875d22:	01184333          	xor	t1,a6,a7
    e8875d26:	00c37333          	and	t1,t1,a2
    e8875d2a:	e8c7beb7          	lui	t4,0xe8c7b
    e8875d2e:	0068c333          	xor	t1,a7,t1
    e8875d32:	756e8e9b          	addiw	t4,t4,1878
    e8875d36:	00b3033b          	addw	t1,t1,a1
    e8875d3a:	01d88ebb          	addw	t4,a7,t4
    e8875d3e:	1593130b          	srriw	t1,t1,25
    e8875d42:	00c3033b          	addw	t1,t1,a2
    P( D, A, B, C,  1, 12, 0xE8C7B756 );
    e8875d46:	00ee85bb          	addw	a1,t4,a4
    e8875d4a:	00c84eb3          	xor	t4,a6,a2
    e8875d4e:	006efeb3          	and	t4,t4,t1
    e8875d52:	01d84eb3          	xor	t4,a6,t4
    e8875d56:	00be8ebb          	addw	t4,t4,a1
    e8875d5a:	242075b7          	lui	a1,0x24207
    e8875d5e:	0db5859b          	addiw	a1,a1,219
    e8875d62:	00b805bb          	addw	a1,a6,a1
    e8875d66:	154e9e8b          	srriw	t4,t4,20
    e8875d6a:	006e8ebb          	addw	t4,t4,t1
    P( C, D, A, B,  2, 17, 0x242070DB );
    e8875d6e:	00758e3b          	addw	t3,a1,t2
    e8875d72:	006645b3          	xor	a1,a2,t1
    e8875d76:	01d5f5b3          	and	a1,a1,t4
    e8875d7a:	8db1                	xor	a1,a1,a2
    e8875d7c:	01c585bb          	addw	a1,a1,t3
    e8875d80:	c1bdde37          	lui	t3,0xc1bdd
    e8875d84:	eeee0e1b          	addiw	t3,t3,-274
    e8875d88:	01c60e3b          	addw	t3,a2,t3
    e8875d8c:	14f5958b          	srriw	a1,a1,15
    e8875d90:	01d585bb          	addw	a1,a1,t4
    P( B, C, D, A,  3, 22, 0xC1BDCEEE );
    e8875d94:	014e02bb          	addw	t0,t3,s4
    e8875d98:	01d34e33          	xor	t3,t1,t4
    e8875d9c:	00be7e33          	and	t3,t3,a1
    e8875da0:	006e4e33          	xor	t3,t3,t1
    e8875da4:	005e0e3b          	addw	t3,t3,t0
    e8875da8:	f57c12b7          	lui	t0,0xf57c1
    e8875dac:	faf2829b          	addiw	t0,t0,-81
    e8875db0:	005482bb          	addw	t0,s1,t0
    e8875db4:	14ae1e0b          	srriw	t3,t3,10
    e8875db8:	00be0e3b          	addw	t3,t3,a1
    P( A, B, C, D,  4,  7, 0xF57C0FAF );
    e8875dbc:	006282bb          	addw	t0,t0,t1
    e8875dc0:	00bec333          	xor	t1,t4,a1
    e8875dc4:	01c37333          	and	t1,t1,t3
    e8875dc8:	01d34333          	xor	t1,t1,t4
    e8875dcc:	0053033b          	addw	t1,t1,t0
    e8875dd0:	4787c2b7          	lui	t0,0x4787c
    e8875dd4:	62a2829b          	addiw	t0,t0,1578
    e8875dd8:	005b02bb          	addw	t0,s6,t0
    e8875ddc:	1593130b          	srriw	t1,t1,25
    e8875de0:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C,  5, 12, 0x4787C62A );
    e8875de4:	01d282bb          	addw	t0,t0,t4
    e8875de8:	01c5ceb3          	xor	t4,a1,t3
    e8875dec:	006efeb3          	and	t4,t4,t1
    e8875df0:	00beceb3          	xor	t4,t4,a1
    e8875df4:	005e8ebb          	addw	t4,t4,t0
    e8875df8:	a83042b7          	lui	t0,0xa8304
    e8875dfc:	6132829b          	addiw	t0,t0,1555
    e8875e00:	005682bb          	addw	t0,a3,t0
    e8875e04:	154e9e8b          	srriw	t4,t4,20
    e8875e08:	006e8ebb          	addw	t4,t4,t1
    P( C, D, A, B,  6, 17, 0xA8304613 );
    e8875e0c:	00b282bb          	addw	t0,t0,a1
    e8875e10:	006e45b3          	xor	a1,t3,t1
    e8875e14:	01d5f5b3          	and	a1,a1,t4
    e8875e18:	01c5c5b3          	xor	a1,a1,t3
    e8875e1c:	005585bb          	addw	a1,a1,t0
    e8875e20:	fd4692b7          	lui	t0,0xfd469
    e8875e24:	5012829b          	addiw	t0,t0,1281
    e8875e28:	005c02bb          	addw	t0,s8,t0
    e8875e2c:	14f5958b          	srriw	a1,a1,15
    e8875e30:	01d585bb          	addw	a1,a1,t4
    P( B, C, D, A,  7, 22, 0xFD469501 );
    e8875e34:	01c282bb          	addw	t0,t0,t3
    e8875e38:	01d34e33          	xor	t3,t1,t4
    e8875e3c:	00be7e33          	and	t3,t3,a1
    e8875e40:	006e4e33          	xor	t3,t3,t1
    e8875e44:	005e0e3b          	addw	t3,t3,t0
    e8875e48:	6980a2b7          	lui	t0,0x6980a
    e8875e4c:	8d82829b          	addiw	t0,t0,-1832
    e8875e50:	005782bb          	addw	t0,a5,t0
    e8875e54:	14ae1e0b          	srriw	t3,t3,10
    e8875e58:	00be0e3b          	addw	t3,t3,a1
    P( A, B, C, D,  8,  7, 0x698098D8 );
    e8875e5c:	006282bb          	addw	t0,t0,t1
    e8875e60:	00bec333          	xor	t1,t4,a1
    e8875e64:	01c37333          	and	t1,t1,t3
    e8875e68:	01d34333          	xor	t1,t1,t4
    e8875e6c:	0053033b          	addw	t1,t1,t0
    e8875e70:	8b44f2b7          	lui	t0,0x8b44f
    e8875e74:	7af2829b          	addiw	t0,t0,1967
    e8875e78:	005f02bb          	addw	t0,t5,t0
    e8875e7c:	1593130b          	srriw	t1,t1,25
    e8875e80:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C,  9, 12, 0x8B44F7AF );
    e8875e84:	01d282bb          	addw	t0,t0,t4
    e8875e88:	01c5ceb3          	xor	t4,a1,t3
    e8875e8c:	006efeb3          	and	t4,t4,t1
    e8875e90:	00beceb3          	xor	t4,t4,a1
    e8875e94:	005e8ebb          	addw	t4,t4,t0
    e8875e98:	72d9                	lui	t0,0xffff6
    e8875e9a:	bb12829b          	addiw	t0,t0,-1103
    e8875e9e:	005982bb          	addw	t0,s3,t0
    e8875ea2:	154e9e8b          	srriw	t4,t4,20
    e8875ea6:	006e8ebb          	addw	t4,t4,t1
    P( C, D, A, B, 10, 17, 0xFFFF5BB1 );
    e8875eaa:	00b282bb          	addw	t0,t0,a1
    e8875eae:	006e45b3          	xor	a1,t3,t1
    e8875eb2:	01d5f5b3          	and	a1,a1,t4
    e8875eb6:	01c5c5b3          	xor	a1,a1,t3
    e8875eba:	005585bb          	addw	a1,a1,t0
    e8875ebe:	895cd2b7          	lui	t0,0x895cd
    e8875ec2:	7be2829b          	addiw	t0,t0,1982
    e8875ec6:	005402bb          	addw	t0,s0,t0
    e8875eca:	14f5958b          	srriw	a1,a1,15
    e8875ece:	01d585bb          	addw	a1,a1,t4
    P( B, C, D, A, 11, 22, 0x895CD7BE );
    e8875ed2:	01c282bb          	addw	t0,t0,t3
    e8875ed6:	01d34e33          	xor	t3,t1,t4
    e8875eda:	00be7e33          	and	t3,t3,a1
    e8875ede:	006e4e33          	xor	t3,t3,t1
    e8875ee2:	005e0e3b          	addw	t3,t3,t0
    e8875ee6:	6b9012b7          	lui	t0,0x6b901
    e8875eea:	1222829b          	addiw	t0,t0,290
    e8875eee:	005a82bb          	addw	t0,s5,t0
    e8875ef2:	14ae1e0b          	srriw	t3,t3,10
    e8875ef6:	00be0e3b          	addw	t3,t3,a1
    P( A, B, C, D, 12,  7, 0x6B901122 );
    e8875efa:	006282bb          	addw	t0,t0,t1
    e8875efe:	00bec333          	xor	t1,t4,a1
    e8875f02:	01c37333          	and	t1,t1,t3
    e8875f06:	01d34333          	xor	t1,t1,t4
    e8875f0a:	0053033b          	addw	t1,t1,t0
    e8875f0e:	fd9872b7          	lui	t0,0xfd987
    e8875f12:	1932829b          	addiw	t0,t0,403
    e8875f16:	005902bb          	addw	t0,s2,t0
    e8875f1a:	1593130b          	srriw	t1,t1,25
    e8875f1e:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C, 13, 12, 0xFD987193 );
    e8875f22:	01d282bb          	addw	t0,t0,t4
    e8875f26:	01c5ceb3          	xor	t4,a1,t3
    e8875f2a:	006efeb3          	and	t4,t4,t1
    e8875f2e:	00beceb3          	xor	t4,t4,a1
    e8875f32:	005e8ebb          	addw	t4,t4,t0
    e8875f36:	a67942b7          	lui	t0,0xa6794
    e8875f3a:	38e2829b          	addiw	t0,t0,910
    e8875f3e:	005b82bb          	addw	t0,s7,t0
    e8875f42:	154e9e8b          	srriw	t4,t4,20
    e8875f46:	006e8ebb          	addw	t4,t4,t1
    P( C, D, A, B, 14, 17, 0xA679438E );
    e8875f4a:	00b282bb          	addw	t0,t0,a1
    e8875f4e:	006e45b3          	xor	a1,t3,t1
    e8875f52:	01d5f5b3          	and	a1,a1,t4
    e8875f56:	01c5c5b3          	xor	a1,a1,t3
    e8875f5a:	005585bb          	addw	a1,a1,t0
    e8875f5e:	49b412b7          	lui	t0,0x49b41
    e8875f62:	8212829b          	addiw	t0,t0,-2015
    e8875f66:	005d02bb          	addw	t0,s10,t0
    e8875f6a:	14f5958b          	srriw	a1,a1,15
    e8875f6e:	01d585bb          	addw	a1,a1,t4
    P( B, C, D, A, 15, 22, 0x49B40821 );
    e8875f72:	01c282bb          	addw	t0,t0,t3
    e8875f76:	01d34e33          	xor	t3,t1,t4
    e8875f7a:	00be7e33          	and	t3,t3,a1
    e8875f7e:	006e4e33          	xor	t3,t3,t1
    e8875f82:	005e0e3b          	addw	t3,t3,t0
    e8875f86:	f61e22b7          	lui	t0,0xf61e2
    e8875f8a:	14ae1e0b          	srriw	t3,t3,10
    e8875f8e:	5622829b          	addiw	t0,t0,1378
    e8875f92:	00be0e3b          	addw	t3,t3,a1

#undef F

#define F(x,y,z) (y ^ (z & (x ^ y)))

    P( A, B, C, D,  1,  5, 0xF61E2562 );
    e8875f96:	005702bb          	addw	t0,a4,t0
    e8875f9a:	006282bb          	addw	t0,t0,t1
    e8875f9e:	01c5c333          	xor	t1,a1,t3
    e8875fa2:	01d37333          	and	t1,t1,t4
    e8875fa6:	00b34333          	xor	t1,t1,a1
    e8875faa:	0053033b          	addw	t1,t1,t0
    e8875fae:	c040b2b7          	lui	t0,0xc040b
    e8875fb2:	15b3130b          	srriw	t1,t1,27
    e8875fb6:	3402829b          	addiw	t0,t0,832
    e8875fba:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C,  6,  9, 0xC040B340 );
    e8875fbe:	005682bb          	addw	t0,a3,t0
    e8875fc2:	01d282bb          	addw	t0,t0,t4
    e8875fc6:	006e4eb3          	xor	t4,t3,t1
    e8875fca:	00befeb3          	and	t4,t4,a1
    e8875fce:	01ceceb3          	xor	t4,t4,t3
    e8875fd2:	005e8ebb          	addw	t4,t4,t0
    e8875fd6:	265e62b7          	lui	t0,0x265e6
    e8875fda:	157e9e8b          	srriw	t4,t4,23
    e8875fde:	a512829b          	addiw	t0,t0,-1455
    e8875fe2:	006e8ebb          	addw	t4,t4,t1
    P( C, D, A, B, 11, 14, 0x265E5A51 );
    e8875fe6:	005402bb          	addw	t0,s0,t0
    e8875fea:	00b282bb          	addw	t0,t0,a1
    e8875fee:	01d345b3          	xor	a1,t1,t4
    e8875ff2:	01c5f5b3          	and	a1,a1,t3
    e8875ff6:	0065c5b3          	xor	a1,a1,t1
    e8875ffa:	005585bb          	addw	a1,a1,t0
    e8875ffe:	e9b6c2b7          	lui	t0,0xe9b6c
    e8876002:	1525958b          	srriw	a1,a1,18
    e8876006:	7aa2829b          	addiw	t0,t0,1962
    e887600a:	01d585bb          	addw	a1,a1,t4
    P( B, C, D, A,  0, 20, 0xE9B6C7AA );
    e887600e:	005c82bb          	addw	t0,s9,t0
    e8876012:	01c282bb          	addw	t0,t0,t3
    e8876016:	00bece33          	xor	t3,t4,a1
    e887601a:	006e7e33          	and	t3,t3,t1
    e887601e:	01de4e33          	xor	t3,t3,t4
    e8876022:	005e0e3b          	addw	t3,t3,t0
    e8876026:	d62f12b7          	lui	t0,0xd62f1
    e887602a:	14ce1e0b          	srriw	t3,t3,12
    e887602e:	05d2829b          	addiw	t0,t0,93
    e8876032:	00be0e3b          	addw	t3,t3,a1
    P( A, B, C, D,  5,  5, 0xD62F105D );
    e8876036:	005b02bb          	addw	t0,s6,t0
    e887603a:	006282bb          	addw	t0,t0,t1
    e887603e:	01c5c333          	xor	t1,a1,t3
    e8876042:	01d37333          	and	t1,t1,t4
    e8876046:	00b34333          	xor	t1,t1,a1
    e887604a:	0053033b          	addw	t1,t1,t0
    e887604e:	024412b7          	lui	t0,0x2441
    e8876052:	4532829b          	addiw	t0,t0,1107
    e8876056:	005982bb          	addw	t0,s3,t0
    e887605a:	15b3130b          	srriw	t1,t1,27
    e887605e:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C, 10,  9, 0x02441453 );
    e8876062:	01d28ebb          	addw	t4,t0,t4
    e8876066:	006e42b3          	xor	t0,t3,t1
    e887606a:	00b2f2b3          	and	t0,t0,a1
    e887606e:	01c2c2b3          	xor	t0,t0,t3
    e8876072:	01d282bb          	addw	t0,t0,t4
    e8876076:	d8a1eeb7          	lui	t4,0xd8a1e
    e887607a:	1572928b          	srriw	t0,t0,23
    e887607e:	681e8e9b          	addiw	t4,t4,1665
    e8876082:	006282bb          	addw	t0,t0,t1
    P( C, D, A, B, 15, 14, 0xD8A1E681 );
    e8876086:	01dd0ebb          	addw	t4,s10,t4
    e887608a:	00be8ebb          	addw	t4,t4,a1
    e887608e:	005345b3          	xor	a1,t1,t0
    e8876092:	01c5f5b3          	and	a1,a1,t3
    e8876096:	0065c5b3          	xor	a1,a1,t1
    e887609a:	01d585bb          	addw	a1,a1,t4
    e887609e:	e7d40eb7          	lui	t4,0xe7d40
    e88760a2:	1525958b          	srriw	a1,a1,18
    e88760a6:	bc8e8e9b          	addiw	t4,t4,-1080
    e88760aa:	005585bb          	addw	a1,a1,t0
    P( B, C, D, A,  4, 20, 0xE7D3FBC8 );
    e88760ae:	01d48ebb          	addw	t4,s1,t4
    e88760b2:	01ce8ebb          	addw	t4,t4,t3
    e88760b6:	00b2ce33          	xor	t3,t0,a1
    e88760ba:	006e7e33          	and	t3,t3,t1
    e88760be:	005e4e33          	xor	t3,t3,t0
    e88760c2:	01de0e3b          	addw	t3,t3,t4
    e88760c6:	21e1deb7          	lui	t4,0x21e1d
    e88760ca:	14ce1e0b          	srriw	t3,t3,12
    e88760ce:	de6e8e9b          	addiw	t4,t4,-538
    e88760d2:	00be0e3b          	addw	t3,t3,a1
    P( A, B, C, D,  9,  5, 0x21E1CDE6 );
    e88760d6:	01df0ebb          	addw	t4,t5,t4
    e88760da:	006e8ebb          	addw	t4,t4,t1
    e88760de:	01c5c333          	xor	t1,a1,t3
    e88760e2:	00537333          	and	t1,t1,t0
    e88760e6:	00b34333          	xor	t1,t1,a1
    e88760ea:	01d3033b          	addw	t1,t1,t4
    e88760ee:	c3370eb7          	lui	t4,0xc3370
    e88760f2:	15b3130b          	srriw	t1,t1,27
    e88760f6:	7d6e8e9b          	addiw	t4,t4,2006
    e88760fa:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C, 14,  9, 0xC33707D6 );
    e88760fe:	01db8ebb          	addw	t4,s7,t4
    e8876102:	005e8ebb          	addw	t4,t4,t0
    e8876106:	006e42b3          	xor	t0,t3,t1
    e887610a:	00b2f2b3          	and	t0,t0,a1
    e887610e:	01c2c2b3          	xor	t0,t0,t3
    e8876112:	01d282bb          	addw	t0,t0,t4
    e8876116:	f4d51eb7          	lui	t4,0xf4d51
    e887611a:	d87e8e9b          	addiw	t4,t4,-633
    e887611e:	01da0ebb          	addw	t4,s4,t4
    e8876122:	1572928b          	srriw	t0,t0,23
    e8876126:	006282bb          	addw	t0,t0,t1
    P( C, D, A, B,  3, 14, 0xF4D50D87 );
    e887612a:	00be85bb          	addw	a1,t4,a1
    e887612e:	00534eb3          	xor	t4,t1,t0
    e8876132:	01cefeb3          	and	t4,t4,t3
    e8876136:	006eceb3          	xor	t4,t4,t1
    e887613a:	00be8ebb          	addw	t4,t4,a1
    e887613e:	455a15b7          	lui	a1,0x455a1
    e8876142:	152e9e8b          	srriw	t4,t4,18
    e8876146:	4ed5859b          	addiw	a1,a1,1261
    e887614a:	005e8ebb          	addw	t4,t4,t0
    P( B, C, D, A,  8, 20, 0x455A14ED );
    e887614e:	9dbd                	addw	a1,a1,a5
    e8876150:	01c585bb          	addw	a1,a1,t3
    e8876154:	01d2ce33          	xor	t3,t0,t4
    e8876158:	006e7e33          	and	t3,t3,t1
    e887615c:	005e4e33          	xor	t3,t3,t0
    e8876160:	00be0e3b          	addw	t3,t3,a1
    e8876164:	a9e3f5b7          	lui	a1,0xa9e3f
    e8876168:	14ce1e0b          	srriw	t3,t3,12
    e887616c:	9055859b          	addiw	a1,a1,-1787
    e8876170:	01de0e3b          	addw	t3,t3,t4
    P( A, B, C, D, 13,  5, 0xA9E3E905 );
    e8876174:	00b905bb          	addw	a1,s2,a1
    e8876178:	006585bb          	addw	a1,a1,t1
    e887617c:	01cec333          	xor	t1,t4,t3
    e8876180:	00537333          	and	t1,t1,t0
    e8876184:	01d34333          	xor	t1,t1,t4
    e8876188:	00b3033b          	addw	t1,t1,a1
    e887618c:	fcefa5b7          	lui	a1,0xfcefa
    e8876190:	15b3130b          	srriw	t1,t1,27
    e8876194:	3f85859b          	addiw	a1,a1,1016
    e8876198:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C,  2,  9, 0xFCEFA3F8 );
    e887619c:	00b385bb          	addw	a1,t2,a1
    e88761a0:	005585bb          	addw	a1,a1,t0
    e88761a4:	006e42b3          	xor	t0,t3,t1
    e88761a8:	01d2f2b3          	and	t0,t0,t4
    e88761ac:	01c2c2b3          	xor	t0,t0,t3
    e88761b0:	00b282bb          	addw	t0,t0,a1
    e88761b4:	676f05b7          	lui	a1,0x676f0
    e88761b8:	1572928b          	srriw	t0,t0,23
    e88761bc:	2d95859b          	addiw	a1,a1,729
    e88761c0:	006282bb          	addw	t0,t0,t1
    P( C, D, A, B,  7, 14, 0x676F02D9 );
    e88761c4:	00bc05bb          	addw	a1,s8,a1
    e88761c8:	01d585bb          	addw	a1,a1,t4
    e88761cc:	00534eb3          	xor	t4,t1,t0
    e88761d0:	01cefeb3          	and	t4,t4,t3
    e88761d4:	006eceb3          	xor	t4,t4,t1
    e88761d8:	00be8ebb          	addw	t4,t4,a1
    e88761dc:	152e9e8b          	srriw	t4,t4,18
    e88761e0:	8d2a5db7          	lui	s11,0x8d2a5
    e88761e4:	005e8ebb          	addw	t4,t4,t0
    P( B, C, D, A, 12, 20, 0x8D2A4C8A );
    e88761e8:	c8ad8d9b          	addiw	s11,s11,-886
    e88761ec:	01d2c5b3          	xor	a1,t0,t4
    e88761f0:	01ba8dbb          	addw	s11,s5,s11
    e88761f4:	01cd8dbb          	addw	s11,s11,t3
    e88761f8:	0065fe33          	and	t3,a1,t1
    e88761fc:	005e4e33          	xor	t3,t3,t0
    e8876200:	01be0e3b          	addw	t3,t3,s11
    e8876204:	fffa4db7          	lui	s11,0xfffa4
    e8876208:	14ce1e0b          	srriw	t3,t3,12
    e887620c:	942d8d9b          	addiw	s11,s11,-1726
    e8876210:	01de0e3b          	addw	t3,t3,t4

#undef F

#define F(x,y,z) (x ^ y ^ z)

    P( A, B, C, D,  5,  4, 0xFFFA3942 );
    e8876214:	01bb0dbb          	addw	s11,s6,s11
    e8876218:	006d8dbb          	addw	s11,s11,t1
    e887621c:	01c5c333          	xor	t1,a1,t3
    e8876220:	8771f5b7          	lui	a1,0x8771f
    e8876224:	01b3033b          	addw	t1,t1,s11
    e8876228:	6815859b          	addiw	a1,a1,1665
    e887622c:	9dbd                	addw	a1,a1,a5
    e887622e:	15c3130b          	srriw	t1,t1,28
    e8876232:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C,  8, 11, 0x8771F681 );
    e8876236:	005585bb          	addw	a1,a1,t0
    e887623a:	01cec2b3          	xor	t0,t4,t3
    e887623e:	0062c2b3          	xor	t0,t0,t1
    e8876242:	00b282bb          	addw	t0,t0,a1
    e8876246:	6d9d65b7          	lui	a1,0x6d9d6
    e887624a:	1225859b          	addiw	a1,a1,290
    e887624e:	9da1                	addw	a1,a1,s0
    e8876250:	1552928b          	srriw	t0,t0,21
    e8876254:	006282bb          	addw	t0,t0,t1
    P( C, D, A, B, 11, 16, 0x6D9D6122 );
    e8876258:	01d585bb          	addw	a1,a1,t4
    e887625c:	006e4eb3          	xor	t4,t3,t1
    e8876260:	005eceb3          	xor	t4,t4,t0
    e8876264:	00be8ebb          	addw	t4,t4,a1
    e8876268:	fde545b7          	lui	a1,0xfde54
    e887626c:	80c5859b          	addiw	a1,a1,-2036
    e8876270:	00bb85bb          	addw	a1,s7,a1
    e8876274:	150e9e8b          	srriw	t4,t4,16
    e8876278:	005e8ebb          	addw	t4,t4,t0
    P( B, C, D, A, 14, 23, 0xFDE5380C );
    e887627c:	01c585bb          	addw	a1,a1,t3
    e8876280:	00534e33          	xor	t3,t1,t0
    e8876284:	01de4e33          	xor	t3,t3,t4
    e8876288:	00be0e3b          	addw	t3,t3,a1
    e887628c:	a4bef5b7          	lui	a1,0xa4bef
    e8876290:	a445859b          	addiw	a1,a1,-1468
    e8876294:	9db9                	addw	a1,a1,a4
    e8876296:	149e1e0b          	srriw	t3,t3,9
    e887629a:	01de0e3b          	addw	t3,t3,t4
    P( A, B, C, D,  1,  4, 0xA4BEEA44 );
    e887629e:	006585bb          	addw	a1,a1,t1
    e88762a2:	01d2c333          	xor	t1,t0,t4
    e88762a6:	01c34333          	xor	t1,t1,t3
    e88762aa:	00b3033b          	addw	t1,t1,a1
    e88762ae:	4bded5b7          	lui	a1,0x4bded
    e88762b2:	fa95859b          	addiw	a1,a1,-87
    e88762b6:	9da5                	addw	a1,a1,s1
    e88762b8:	15c3130b          	srriw	t1,t1,28
    e88762bc:	01c3033b          	addw	t1,t1,t3
    P( D, A, B, C,  4, 11, 0x4BDECFA9 );
    e88762c0:	005585bb          	addw	a1,a1,t0
    e88762c4:	01cec2b3          	xor	t0,t4,t3
    e88762c8:	0062c2b3          	xor	t0,t0,t1
    e88762cc:	00b282bb          	addw	t0,t0,a1
    e88762d0:	f6bb55b7          	lui	a1,0xf6bb5
    e88762d4:	b605859b          	addiw	a1,a1,-1184
    e88762d8:	00bc05bb          	addw	a1,s8,a1
    e88762dc:	1552928b          	srriw	t0,t0,21
    e88762e0:	006282bb          	addw	t0,t0,t1
    P( C, D, A, B,  7, 16, 0xF6BB4B60 );
    e88762e4:	01d58ebb          	addw	t4,a1,t4
    e88762e8:	006e45b3          	xor	a1,t3,t1
    e88762ec:	0055c5b3          	xor	a1,a1,t0
    e88762f0:	01d585bb          	addw	a1,a1,t4
    e88762f4:	bebfceb7          	lui	t4,0xbebfc
    e88762f8:	c70e8e9b          	addiw	t4,t4,-912
    e88762fc:	01d98ebb          	addw	t4,s3,t4
    e8876300:	1505958b          	srriw	a1,a1,16
    e8876304:	005585bb          	addw	a1,a1,t0
    P( B, C, D, A, 10, 23, 0xBEBFBC70 );
    e8876308:	01ce8e3b          	addw	t3,t4,t3
    e887630c:	00534eb3          	xor	t4,t1,t0
    e8876310:	00beceb3          	xor	t4,t4,a1
    e8876314:	01ce8ebb          	addw	t4,t4,t3
    e8876318:	289b8e37          	lui	t3,0x289b8
    e887631c:	ec6e0e1b          	addiw	t3,t3,-314
    e8876320:	01c90e3b          	addw	t3,s2,t3
    e8876324:	149e9e8b          	srriw	t4,t4,9
    e8876328:	00be8ebb          	addw	t4,t4,a1
    P( A, B, C, D, 13,  4, 0x289B7EC6 );
    e887632c:	006e033b          	addw	t1,t3,t1
    e8876330:	00b2ce33          	xor	t3,t0,a1
    e8876334:	01de4e33          	xor	t3,t3,t4
    e8876338:	006e0e3b          	addw	t3,t3,t1
    e887633c:	eaa12337          	lui	t1,0xeaa12
    e8876340:	7fa3031b          	addiw	t1,t1,2042
    e8876344:	006c833b          	addw	t1,s9,t1
    e8876348:	15ce1e0b          	srriw	t3,t3,28
    e887634c:	01de0e3b          	addw	t3,t3,t4
    P( D, A, B, C,  0, 11, 0xEAA127FA );
    e8876350:	005302bb          	addw	t0,t1,t0
    e8876354:	01d5c333          	xor	t1,a1,t4
    e8876358:	01c34333          	xor	t1,t1,t3
    e887635c:	0053033b          	addw	t1,t1,t0
    e8876360:	d4ef32b7          	lui	t0,0xd4ef3
    e8876364:	0852829b          	addiw	t0,t0,133
    e8876368:	005a02bb          	addw	t0,s4,t0
    e887636c:	1553130b          	srriw	t1,t1,21
    e8876370:	01c3033b          	addw	t1,t1,t3
    P( C, D, A, B,  3, 16, 0xD4EF3085 );
    e8876374:	00b285bb          	addw	a1,t0,a1
    e8876378:	01cec2b3          	xor	t0,t4,t3
    e887637c:	0062c2b3          	xor	t0,t0,t1
    e8876380:	00b282bb          	addw	t0,t0,a1
    e8876384:	048825b7          	lui	a1,0x4882
    e8876388:	d055859b          	addiw	a1,a1,-763
    e887638c:	9db5                	addw	a1,a1,a3
    e887638e:	1502928b          	srriw	t0,t0,16
    e8876392:	006282bb          	addw	t0,t0,t1
    P( B, C, D, A,  6, 23, 0x04881D05 );
    e8876396:	01d58ebb          	addw	t4,a1,t4
    e887639a:	006e45b3          	xor	a1,t3,t1
    e887639e:	0055c5b3          	xor	a1,a1,t0
    e88763a2:	01d585bb          	addw	a1,a1,t4
    e88763a6:	d9d4deb7          	lui	t4,0xd9d4d
    e88763aa:	039e8e9b          	addiw	t4,t4,57
    e88763ae:	01df0ebb          	addw	t4,t5,t4
    e88763b2:	1495958b          	srriw	a1,a1,9
    e88763b6:	005585bb          	addw	a1,a1,t0
    P( A, B, C, D,  9,  4, 0xD9D4D039 );
    e88763ba:	01ce8e3b          	addw	t3,t4,t3
    e88763be:	00534eb3          	xor	t4,t1,t0
    e88763c2:	00beceb3          	xor	t4,t4,a1
    e88763c6:	01ce8ebb          	addw	t4,t4,t3
    e88763ca:	e6dbae37          	lui	t3,0xe6dba
    e88763ce:	9e5e0e1b          	addiw	t3,t3,-1563
    e88763d2:	01ca8e3b          	addw	t3,s5,t3
    e88763d6:	15ce9e8b          	srriw	t4,t4,28
    e88763da:	00be8ebb          	addw	t4,t4,a1
    P( D, A, B, C, 12, 11, 0xE6DB99E5 );
    e88763de:	006e0e3b          	addw	t3,t3,t1
    e88763e2:	00b2c333          	xor	t1,t0,a1
    e88763e6:	01d34333          	xor	t1,t1,t4
    e88763ea:	01c3033b          	addw	t1,t1,t3
    e88763ee:	1fa28e37          	lui	t3,0x1fa28
    e88763f2:	cf8e0e1b          	addiw	t3,t3,-776
    e88763f6:	01cd0e3b          	addw	t3,s10,t3
    e88763fa:	1553130b          	srriw	t1,t1,21
    e88763fe:	01d3033b          	addw	t1,t1,t4
    P( C, D, A, B, 15, 16, 0x1FA27CF8 );
    e8876402:	005e02bb          	addw	t0,t3,t0
    e8876406:	01d5ce33          	xor	t3,a1,t4
    e887640a:	006e4e33          	xor	t3,t3,t1
    e887640e:	005e0e3b          	addw	t3,t3,t0
    e8876412:	c4ac52b7          	lui	t0,0xc4ac5
    e8876416:	6652829b          	addiw	t0,t0,1637
    e887641a:	150e1e0b          	srriw	t3,t3,16
    e887641e:	005382bb          	addw	t0,t2,t0
    e8876422:	006e0e3b          	addw	t3,t3,t1
    P( B, C, D, A,  2, 23, 0xC4AC5665 );
    e8876426:	00b282bb          	addw	t0,t0,a1
    e887642a:	006ec5b3          	xor	a1,t4,t1
    e887642e:	01c5c5b3          	xor	a1,a1,t3
    e8876432:	005585bb          	addw	a1,a1,t0
    e8876436:	f42922b7          	lui	t0,0xf4292
    e887643a:	2442829b          	addiw	t0,t0,580
    e887643e:	005c82bb          	addw	t0,s9,t0
    e8876442:	1495958b          	srriw	a1,a1,9
    e8876446:	01c585bb          	addw	a1,a1,t3

#undef F

#define F(x,y,z) (y ^ (x | ~z))

    P( A, B, C, D,  0,  6, 0xF4292244 );
    e887644a:	01d28ebb          	addw	t4,t0,t4
    e887644e:	fff34293          	not	t0,t1
    e8876452:	00b2e2b3          	or	t0,t0,a1
    e8876456:	01c2c2b3          	xor	t0,t0,t3
    e887645a:	01d282bb          	addw	t0,t0,t4
    e887645e:	432b0eb7          	lui	t4,0x432b0
    e8876462:	f97e8e9b          	addiw	t4,t4,-105
    e8876466:	01dc0ebb          	addw	t4,s8,t4
    e887646a:	15a2928b          	srriw	t0,t0,26
    e887646e:	00b282bb          	addw	t0,t0,a1
    P( D, A, B, C,  7, 10, 0x432AFF97 );
    e8876472:	006e833b          	addw	t1,t4,t1
    e8876476:	fffe4e93          	not	t4,t3
    e887647a:	005eeeb3          	or	t4,t4,t0
    e887647e:	00beceb3          	xor	t4,t4,a1
    e8876482:	006e8ebb          	addw	t4,t4,t1
    e8876486:	ab942337          	lui	t1,0xab942
    e887648a:	3a73031b          	addiw	t1,t1,935
    e887648e:	006b8bbb          	addw	s7,s7,t1
    e8876492:	156e9e8b          	srriw	t4,t4,22
    e8876496:	005e8ebb          	addw	t4,t4,t0
    P( C, D, A, B, 14, 15, 0xAB9423A7 );
    e887649a:	01cb8bbb          	addw	s7,s7,t3
    e887649e:	fff5ce13          	not	t3,a1
    e88764a2:	01de6e33          	or	t3,t3,t4
    e88764a6:	fc93a337          	lui	t1,0xfc93a
    e88764aa:	005e4e33          	xor	t3,t3,t0
    e88764ae:	0393031b          	addiw	t1,t1,57
    e88764b2:	006b033b          	addw	t1,s6,t1
    e88764b6:	017e0e3b          	addw	t3,t3,s7
    e88764ba:	151e1e0b          	srriw	t3,t3,17
    e88764be:	01de0e3b          	addw	t3,t3,t4
    P( B, C, D, A,  5, 21, 0xFC93A039 );
    e88764c2:	00b305bb          	addw	a1,t1,a1
    e88764c6:	fff2c313          	not	t1,t0
    e88764ca:	01c36333          	or	t1,t1,t3
    e88764ce:	01d34333          	xor	t1,t1,t4
    e88764d2:	00b3033b          	addw	t1,t1,a1
    e88764d6:	655b65b7          	lui	a1,0x655b6
    e88764da:	9c35859b          	addiw	a1,a1,-1597
    e88764de:	00ba85bb          	addw	a1,s5,a1
    e88764e2:	14b3130b          	srriw	t1,t1,11
    e88764e6:	01c3033b          	addw	t1,t1,t3
    P( A, B, C, D, 12,  6, 0x655B59C3 );
    e88764ea:	005582bb          	addw	t0,a1,t0
    e88764ee:	fffec593          	not	a1,t4
    e88764f2:	0065e5b3          	or	a1,a1,t1
    e88764f6:	01c5c5b3          	xor	a1,a1,t3
    e88764fa:	005585bb          	addw	a1,a1,t0
    e88764fe:	8f0cd2b7          	lui	t0,0x8f0cd
    e8876502:	c922829b          	addiw	t0,t0,-878
    e8876506:	005a0a3b          	addw	s4,s4,t0
    e887650a:	15a5958b          	srriw	a1,a1,26
    e887650e:	006585bb          	addw	a1,a1,t1
    P( D, A, B, C,  3, 10, 0x8F0CCC92 );
    e8876512:	01da0a3b          	addw	s4,s4,t4
    e8876516:	fffe4e93          	not	t4,t3
    e887651a:	00beeeb3          	or	t4,t4,a1
    e887651e:	006eceb3          	xor	t4,t4,t1
    e8876522:	ffeff2b7          	lui	t0,0xffeff
    e8876526:	014e8ebb          	addw	t4,t4,s4
    e887652a:	47d2829b          	addiw	t0,t0,1149
    e887652e:	005989bb          	addw	s3,s3,t0
    e8876532:	156e9e8b          	srriw	t4,t4,22
    e8876536:	00be8ebb          	addw	t4,t4,a1
    P( C, D, A, B, 10, 15, 0xFFEFF47D );
    e887653a:	01c989bb          	addw	s3,s3,t3
    e887653e:	fff34e13          	not	t3,t1
    e8876542:	01de6e33          	or	t3,t3,t4
    e8876546:	00be4e33          	xor	t3,t3,a1
    e887654a:	858462b7          	lui	t0,0x85846
    e887654e:	013e0e3b          	addw	t3,t3,s3
    e8876552:	dd12829b          	addiw	t0,t0,-559
    e8876556:	0057073b          	addw	a4,a4,t0
    e887655a:	151e1e0b          	srriw	t3,t3,17
    e887655e:	01de0e3b          	addw	t3,t3,t4
    P( B, C, D, A,  1, 21, 0x85845DD1 );
    e8876562:	0067073b          	addw	a4,a4,t1
    e8876566:	fff5c313          	not	t1,a1
    e887656a:	01c36333          	or	t1,t1,t3
    e887656e:	6fa882b7          	lui	t0,0x6fa88
    e8876572:	01d34333          	xor	t1,t1,t4
    e8876576:	e4f2829b          	addiw	t0,t0,-433
    e887657a:	005782bb          	addw	t0,a5,t0
    e887657e:	00e3033b          	addw	t1,t1,a4
    e8876582:	14b3130b          	srriw	t1,t1,11
    e8876586:	01c3033b          	addw	t1,t1,t3
    P( A, B, C, D,  8,  6, 0x6FA87E4F );
    e887658a:	00b285bb          	addw	a1,t0,a1
    e887658e:	fffec293          	not	t0,t4
    e8876592:	0062e2b3          	or	t0,t0,t1
    e8876596:	01c2c2b3          	xor	t0,t0,t3
    e887659a:	fe2ce7b7          	lui	a5,0xfe2ce
    e887659e:	00b282bb          	addw	t0,t0,a1
    e88765a2:	6e07879b          	addiw	a5,a5,1760
    e88765a6:	00fd0d3b          	addw	s10,s10,a5
    e88765aa:	15a2928b          	srriw	t0,t0,26
    e88765ae:	006282bb          	addw	t0,t0,t1
    P( D, A, B, C, 15, 10, 0xFE2CE6E0 );
    e88765b2:	01dd0d3b          	addw	s10,s10,t4
    e88765b6:	fffe4e93          	not	t4,t3
    e88765ba:	005eeeb3          	or	t4,t4,t0
    e88765be:	006eceb3          	xor	t4,t4,t1
    e88765c2:	a30147b7          	lui	a5,0xa3014
    e88765c6:	01ae8ebb          	addw	t4,t4,s10
    e88765ca:	3147879b          	addiw	a5,a5,788
    e88765ce:	9ebd                	addw	a3,a3,a5
    e88765d0:	156e9e8b          	srriw	t4,t4,22
    e88765d4:	005e8ebb          	addw	t4,t4,t0
    P( C, D, A, B,  6, 15, 0xA3014314 );
    e88765d8:	01c686bb          	addw	a3,a3,t3
    e88765dc:	fff34e13          	not	t3,t1
    e88765e0:	01de6e33          	or	t3,t3,t4
    e88765e4:	005e4e33          	xor	t3,t3,t0
    e88765e8:	4e0817b7          	lui	a5,0x4e081
    e88765ec:	00de0e3b          	addw	t3,t3,a3
    e88765f0:	1a17879b          	addiw	a5,a5,417
    e88765f4:	00f9093b          	addw	s2,s2,a5
    e88765f8:	151e1e0b          	srriw	t3,t3,17
    e88765fc:	01de0e3b          	addw	t3,t3,t4
    P( B, C, D, A, 13, 21, 0x4E0811A1 );
    e8876600:	0069093b          	addw	s2,s2,t1
    e8876604:	fff2c313          	not	t1,t0
    e8876608:	01c36333          	or	t1,t1,t3
    e887660c:	f75385b7          	lui	a1,0xf7538
    e8876610:	01d34333          	xor	t1,t1,t4
    e8876614:	e825859b          	addiw	a1,a1,-382
    e8876618:	9da5                	addw	a1,a1,s1
    e887661a:	0123033b          	addw	t1,t1,s2
    e887661e:	14b3130b          	srriw	t1,t1,11
    e8876622:	01c3033b          	addw	t1,t1,t3
    P( A, B, C, D,  4,  6, 0xF7537E82 );
    e8876626:	005582bb          	addw	t0,a1,t0
    e887662a:	fffec593          	not	a1,t4
    e887662e:	0065e5b3          	or	a1,a1,t1
    e8876632:	bd3af737          	lui	a4,0xbd3af
    e8876636:	01c5c5b3          	xor	a1,a1,t3
    e887663a:	2357071b          	addiw	a4,a4,565
    e887663e:	9f21                	addw	a4,a4,s0
    e8876640:	005585bb          	addw	a1,a1,t0
    e8876644:	15a5958b          	srriw	a1,a1,26
    e8876648:	006587bb          	addw	a5,a1,t1
    P( D, A, B, C, 11, 10, 0xBD3AF235 );
    e887664c:	01d70ebb          	addw	t4,a4,t4
    e8876650:	fffe4713          	not	a4,t3
    e8876654:	8f5d                	or	a4,a4,a5
    e8876656:	2ad7d6b7          	lui	a3,0x2ad7d
    e887665a:	00674733          	xor	a4,a4,t1
    e887665e:	2bb6869b          	addiw	a3,a3,699
    e8876662:	00d386bb          	addw	a3,t2,a3
    e8876666:	01d7073b          	addw	a4,a4,t4
    e887666a:	1567170b          	srriw	a4,a4,22
    e887666e:	9f3d                	addw	a4,a4,a5
    P( C, D, A, B,  2, 15, 0x2AD7D2BB );
    e8876670:	01c68e3b          	addw	t3,a3,t3
    e8876674:	fff34693          	not	a3,t1
    e8876678:	8ed9                	or	a3,a3,a4
    e887667a:	8ebd                	xor	a3,a3,a5
    e887667c:	01c686bb          	addw	a3,a3,t3
    e8876680:	1516968b          	srriw	a3,a3,17
    e8876684:	eb86d5b7          	lui	a1,0xeb86d
    e8876688:	9eb9                	addw	a3,a3,a4
    P( B, C, D, A,  9, 21, 0xEB86D391 );

#undef F

    ctx->state[0] += A;
    e887668a:	00ff8fbb          	addw	t6,t6,a5
    e887668e:	3915859b          	addiw	a1,a1,913
    P( B, C, D, A,  9, 21, 0xEB86D391 );
    e8876692:	fff7c793          	not	a5,a5
    e8876696:	8fd5                	or	a5,a5,a3
    e8876698:	00bf0f3b          	addw	t5,t5,a1
    e887669c:	8fb9                	xor	a5,a5,a4
    e887669e:	006f033b          	addw	t1,t5,t1
    e88766a2:	006787bb          	addw	a5,a5,t1
    ctx->state[1] += B;
    e88766a6:	9e35                	addw	a2,a2,a3
    P( B, C, D, A,  9, 21, 0xEB86D391 );
    e88766a8:	14b7978b          	srriw	a5,a5,11
    ctx->state[0] += A;
    e88766ac:	01f52423          	sw	t6,8(a0)
    ctx->state[1] += B;
    e88766b0:	9fb1                	addw	a5,a5,a2
    ctx->state[2] += C;
    ctx->state[3] += D;
}
    e88766b2:	6466                	ld	s0,88(sp)
    ctx->state[2] += C;
    e88766b4:	00d806bb          	addw	a3,a6,a3
    ctx->state[3] += D;
    e88766b8:	00e8873b          	addw	a4,a7,a4
    ctx->state[1] += B;
    e88766bc:	c55c                	sw	a5,12(a0)
    ctx->state[2] += C;
    e88766be:	c914                	sw	a3,16(a0)
    ctx->state[3] += D;
    e88766c0:	c958                	sw	a4,20(a0)
}
    e88766c2:	64c6                	ld	s1,80(sp)
    e88766c4:	6926                	ld	s2,72(sp)
    e88766c6:	6986                	ld	s3,64(sp)
    e88766c8:	7a62                	ld	s4,56(sp)
    e88766ca:	7ac2                	ld	s5,48(sp)
    e88766cc:	7b22                	ld	s6,40(sp)
    e88766ce:	7b82                	ld	s7,32(sp)
    e88766d0:	6c62                	ld	s8,24(sp)
    e88766d2:	6cc2                	ld	s9,16(sp)
    e88766d4:	6d22                	ld	s10,8(sp)
    e88766d6:	6d82                	ld	s11,0(sp)
    e88766d8:	6125                	addi	sp,sp,96
    e88766da:	8082                	ret

00000000e88766dc <mbedtls_md5_update.part.0>:
#endif /* !MBEDTLS_MD5_PROCESS_ALT */

/*
 * MD5 process buffer
 */
void mbedtls_md5_update( mbedtls_md5_context *ctx, const unsigned char *input, uint8_t ilen )
    e88766dc:	7139                	addi	sp,sp,-64
    e88766de:	f891540b          	sdd	s0,s1,(sp),0,4
    e88766e2:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88766e6:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e88766ea:	fc06                	sd	ra,56(sp)
    e88766ec:	f85a                	sd	s6,48(sp)
    uint32_t left;

    if( ilen == 0 )
        return;

    left = ctx->total[0] & 0x3F;
    e88766ee:	411c                	lw	a5,0(a0)
    fill = 64 - left;

    ctx->total[0] += (uint32_t) ilen;
    e88766f0:	0006071b          	sext.w	a4,a2
void mbedtls_md5_update( mbedtls_md5_context *ctx, const unsigned char *input, uint8_t ilen )
    e88766f4:	84aa                	mv	s1,a0
    ctx->total[0] += (uint32_t) ilen;
    e88766f6:	00e786bb          	addw	a3,a5,a4
    e88766fa:	c114                	sw	a3,0(a0)
void mbedtls_md5_update( mbedtls_md5_context *ctx, const unsigned char *input, uint8_t ilen )
    e88766fc:	892e                	mv	s2,a1
    e88766fe:	8432                	mv	s0,a2
    left = ctx->total[0] & 0x3F;
    e8876700:	03f7fa13          	andi	s4,a5,63
    ctx->total[0] &= 0xFFFFFFFF;

    if( ctx->total[0] < (uint32_t) ilen )
    e8876704:	00e6f563          	bgeu	a3,a4,e887670e <mbedtls_md5_update.part.0+0x32>
        ctx->total[1]++;
    e8876708:	415c                	lw	a5,4(a0)
    e887670a:	2785                	addiw	a5,a5,1
    e887670c:	c15c                	sw	a5,4(a0)

    if( left && ilen >= fill )
    e887670e:	020a0c63          	beqz	s4,e8876746 <mbedtls_md5_update.part.0+0x6a>
    fill = 64 - left;
    e8876712:	04000993          	li	s3,64
    e8876716:	414989bb          	subw	s3,s3,s4
    e887671a:	7c09bb0b          	extu	s6,s3,31,0
    if( left && ilen >= fill )
    e887671e:	03646463          	bltu	s0,s6,e8876746 <mbedtls_md5_update.part.0+0x6a>
    {
        memcpy( (void *) (ctx->buffer + left), input, fill );
    e8876722:	01848a93          	addi	s5,s1,24
    e8876726:	85ca                	mv	a1,s2
    e8876728:	865a                	mv	a2,s6
    e887672a:	014a8533          	add	a0,s5,s4
    e887672e:	473050ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        mbedtls_md5_process( ctx, ctx->buffer );
        input += fill;
        ilen  -= fill;
    e8876732:	4134043b          	subw	s0,s0,s3
        mbedtls_md5_process( ctx, ctx->buffer );
    e8876736:	85d6                	mv	a1,s5
    e8876738:	8526                	mv	a0,s1
    e887673a:	d88ff0ef          	jal	ra,e8875cc2 <mbedtls_md5_process>
        input += fill;
    e887673e:	995a                	add	s2,s2,s6
        ilen  -= fill;
    e8876740:	0ff47413          	andi	s0,s0,255
        left = 0;
    e8876744:	4a01                	li	s4,0
    e8876746:	00890abb          	addw	s5,s2,s0
    e887674a:	89ca                	mv	s3,s2
    e887674c:	0ffafa93          	andi	s5,s5,255
    }

    while( ilen >= 64 )
    e8876750:	03f00b13          	li	s6,63
    e8876754:	a039                	j	e8876762 <mbedtls_md5_update.part.0+0x86>
    {
        mbedtls_md5_process( ctx, input );
    e8876756:	85ce                	mv	a1,s3
    e8876758:	8526                	mv	a0,s1
    e887675a:	d68ff0ef          	jal	ra,e8875cc2 <mbedtls_md5_process>
        input += 64;
    e887675e:	04098993          	addi	s3,s3,64
    while( ilen >= 64 )
    e8876762:	413a87bb          	subw	a5,s5,s3
    e8876766:	0ff7f793          	andi	a5,a5,255
    e887676a:	fefb66e3          	bltu	s6,a5,e8876756 <mbedtls_md5_update.part.0+0x7a>
    e887676e:	00645793          	srli	a5,s0,0x6
    e8876772:	fc000713          	li	a4,-64
    e8876776:	24e7940b          	mulaw	s0,a5,a4
    e887677a:	00679593          	slli	a1,a5,0x6
    e887677e:	95ca                	add	a1,a1,s2
    e8876780:	0ff47613          	andi	a2,s0,255
        ilen  -= 64;
    }

    if( ilen > 0 )
    e8876784:	ce19                	beqz	a2,e88767a2 <mbedtls_md5_update.part.0+0xc6>
    {
        memcpy( (void *) (ctx->buffer + left), input, ilen );
    e8876786:	01848513          	addi	a0,s1,24
    }
}
    e887678a:	f891440b          	ldd	s0,s1,(sp),0,4
    e887678e:	70e2                	ld	ra,56(sp)
    e8876790:	7b42                	ld	s6,48(sp)
    e8876792:	fb31490b          	ldd	s2,s3,(sp),1,4
        memcpy( (void *) (ctx->buffer + left), input, ilen );
    e8876796:	9552                	add	a0,a0,s4
}
    e8876798:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e887679c:	6121                	addi	sp,sp,64
        memcpy( (void *) (ctx->buffer + left), input, ilen );
    e887679e:	4030506f          	j	e887c3a0 <eLIBs_memcpy>
}
    e88767a2:	70e2                	ld	ra,56(sp)
    e88767a4:	f891440b          	ldd	s0,s1,(sp),0,4
    e88767a8:	7b42                	ld	s6,48(sp)
    e88767aa:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88767ae:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88767b2:	6121                	addi	sp,sp,64
    e88767b4:	8082                	ret

00000000e88767b6 <mbedtls_md5_update>:
    if( ilen == 0 )
    e88767b6:	c219                	beqz	a2,e88767bc <mbedtls_md5_update+0x6>
    e88767b8:	f25ff06f          	j	e88766dc <mbedtls_md5_update.part.0>
}
    e88767bc:	8082                	ret

00000000e88767be <mbedtls_md5_finish>:

/*
 * MD5 final digest
 */
void mbedtls_md5_finish( mbedtls_md5_context *ctx, unsigned char output[16] )
{
    e88767be:	7179                	addi	sp,sp,-48
    e88767c0:	ec22                	sd	s0,24(sp)
    e88767c2:	f026                	sd	s1,32(sp)
    e88767c4:	f406                	sd	ra,40(sp)
    uint32_t last, padn;
    uint32_t high, low;
    unsigned char msglen[8];

    high = ( ctx->total[0] >> 29 )
         | ( ctx->total[1] <<  3 );
    e88767c6:	e0f5460b          	lwd	a2,a5,(a0),0,3
{
    e88767ca:	842a                	mv	s0,a0
    e88767cc:	84ae                	mv	s1,a1
    high = ( ctx->total[0] >> 29 )
    e88767ce:	01d6571b          	srliw	a4,a2,0x1d
         | ( ctx->total[1] <<  3 );
    e88767d2:	0037979b          	slliw	a5,a5,0x3
    high = ( ctx->total[0] >> 29 )
    e88767d6:	8fd9                	or	a5,a5,a4
    low  = ( ctx->total[0] <<  3 );
    e88767d8:	0036171b          	slliw	a4,a2,0x3

    PUT_UINT32_LE( low,  msglen, 0 );
    PUT_UINT32_LE( high, msglen, 4 );
    e88767dc:	e2f1570b          	swd	a4,a5,(sp),1,3

    last = ctx->total[0] & 0x3F;
    e88767e0:	03f67613          	andi	a2,a2,63
    padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
    e88767e4:	03700793          	li	a5,55
    e88767e8:	0ac7e963          	bltu	a5,a2,e887689a <mbedtls_md5_finish+0xdc>
    e88767ec:	03800793          	li	a5,56
    e88767f0:	40c7863b          	subw	a2,a5,a2

    mbedtls_md5_update( ctx, md5_padding, padn );
    e88767f4:	8522                	mv	a0,s0
    e88767f6:	0ff67613          	andi	a2,a2,255
    e88767fa:	00056597          	auipc	a1,0x56
    e88767fe:	78658593          	addi	a1,a1,1926 # e88ccf80 <md5_padding>
    e8876802:	fb5ff0ef          	jal	ra,e88767b6 <mbedtls_md5_update>
    if( ilen == 0 )
    e8876806:	002c                	addi	a1,sp,8
    e8876808:	8522                	mv	a0,s0
    e887680a:	4621                	li	a2,8
    e887680c:	ed1ff0ef          	jal	ra,e88766dc <mbedtls_md5_update.part.0>
    mbedtls_md5_update( ctx, msglen, 8 );

    PUT_UINT32_LE( ctx->state[0], output,  0 );
    e8876810:	441c                	lw	a5,8(s0)
    e8876812:	00f48023          	sb	a5,0(s1)
    e8876816:	441c                	lw	a5,8(s0)
    e8876818:	0087d79b          	srliw	a5,a5,0x8
    e887681c:	00f480a3          	sb	a5,1(s1)
    e8876820:	00a45783          	lhu	a5,10(s0)
    e8876824:	00f48123          	sb	a5,2(s1)
    e8876828:	00b44783          	lbu	a5,11(s0)
    e887682c:	00f481a3          	sb	a5,3(s1)
    PUT_UINT32_LE( ctx->state[1], output,  4 );
    e8876830:	445c                	lw	a5,12(s0)
    e8876832:	00f48223          	sb	a5,4(s1)
    e8876836:	445c                	lw	a5,12(s0)
    e8876838:	0087d79b          	srliw	a5,a5,0x8
    e887683c:	00f482a3          	sb	a5,5(s1)
    e8876840:	00e45783          	lhu	a5,14(s0)
    e8876844:	00f48323          	sb	a5,6(s1)
    e8876848:	00f44783          	lbu	a5,15(s0)
    e887684c:	00f483a3          	sb	a5,7(s1)
    PUT_UINT32_LE( ctx->state[2], output,  8 );
    e8876850:	481c                	lw	a5,16(s0)
    e8876852:	00f48423          	sb	a5,8(s1)
    e8876856:	481c                	lw	a5,16(s0)
    e8876858:	0087d79b          	srliw	a5,a5,0x8
    e887685c:	00f484a3          	sb	a5,9(s1)
    e8876860:	01245783          	lhu	a5,18(s0)
    e8876864:	00f48523          	sb	a5,10(s1)
    e8876868:	01344783          	lbu	a5,19(s0)
    e887686c:	00f485a3          	sb	a5,11(s1)
    PUT_UINT32_LE( ctx->state[3], output, 12 );
    e8876870:	485c                	lw	a5,20(s0)
    e8876872:	00f48623          	sb	a5,12(s1)
    e8876876:	485c                	lw	a5,20(s0)
    e8876878:	0087d79b          	srliw	a5,a5,0x8
    e887687c:	00f486a3          	sb	a5,13(s1)
    e8876880:	01645783          	lhu	a5,22(s0)
    e8876884:	00f48723          	sb	a5,14(s1)
    e8876888:	01744783          	lbu	a5,23(s0)
    e887688c:	00f487a3          	sb	a5,15(s1)
}
    e8876890:	70a2                	ld	ra,40(sp)
    e8876892:	6462                	ld	s0,24(sp)
    e8876894:	7482                	ld	s1,32(sp)
    e8876896:	6145                	addi	sp,sp,48
    e8876898:	8082                	ret
    padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
    e887689a:	07800793          	li	a5,120
    e887689e:	bf89                	j	e88767f0 <mbedtls_md5_finish+0x32>

00000000e88768a0 <load_limb>:
    (((limb)in[3]) << 24) |
    (((limb)in[4]) << 32) |
    (((limb)in[5]) << 40) |
    (((limb)in[6]) << 48) |
    (((limb)in[7]) << 56);
}
    e88768a0:	6108                	ld	a0,0(a0)
    e88768a2:	8082                	ret

00000000e88768a4 <store_limb>:

static void
store_limb(u8 *out, limb in) {
  out[0] = in & 0xff;
    e88768a4:	e10c                	sd	a1,0(a0)
  out[3] = (in >> 24) & 0xff;
  out[4] = (in >> 32) & 0xff;
  out[5] = (in >> 40) & 0xff;
  out[6] = (in >> 48) & 0xff;
  out[7] = (in >> 56) & 0xff;
}
    e88768a6:	8082                	ret

00000000e88768a8 <swap_conditional>:
// information.
// -----------------------------------------------------------------------------
static void
swap_conditional(limb a[5], limb b[5], limb iswap) {
  unsigned i;
  const limb swap = -iswap;
    e88768a8:	40c00633          	neg	a2,a2
    e88768ac:	4781                	li	a5,0

  for (i = 0; i < 5; ++i) {
    e88768ae:	02800813          	li	a6,40
    const limb x = swap & (a[i] ^ b[i]);
    e88768b2:	60f5468b          	lrd	a3,a0,a5,0
    e88768b6:	60f5c70b          	lrd	a4,a1,a5,0
    e88768ba:	8f35                	xor	a4,a4,a3
    e88768bc:	8f71                	and	a4,a4,a2
    a[i] ^= x;
    e88768be:	8eb9                	xor	a3,a3,a4
    e88768c0:	60f5568b          	srd	a3,a0,a5,0
    b[i] ^= x;
    e88768c4:	60f5c68b          	lrd	a3,a1,a5,0
    e88768c8:	8f35                	xor	a4,a4,a3
    e88768ca:	60f5d70b          	srd	a4,a1,a5,0
  for (i = 0; i < 5; ++i) {
    e88768ce:	07a1                	addi	a5,a5,8
    e88768d0:	ff0791e3          	bne	a5,a6,e88768b2 <swap_conditional+0xa>
  }
}
    e88768d4:	8082                	ret

00000000e88768d6 <cmult>:
 *   resultx/resultz: the x coordinate of the resulting curve point (short form)
 *   n: a little endian, 32-byte number
 *   q: a point of the curve (short form)
 */
static void
cmult(limb *resultx, limb *resultz, const u8 *n, const limb *q) {
    e88768d6:	d5010113          	addi	sp,sp,-688
  limb a[5] = {0}, b[5] = {1}, c[5] = {1}, d[5] = {0};
    e88768da:	4785                	li	a5,1
    e88768dc:	f93e                	sd	a5,176(sp)
    e88768de:	edbe                	sd	a5,216(sp)
cmult(limb *resultx, limb *resultz, const u8 *n, const limb *q) {
    e88768e0:	2a113423          	sd	ra,680(sp)
    e88768e4:	2a813023          	sd	s0,672(sp)
    e88768e8:	28913c23          	sd	s1,664(sp)
    e88768ec:	29213823          	sd	s2,656(sp)
    e88768f0:	29313423          	sd	s3,648(sp)
    e88768f4:	29413023          	sd	s4,640(sp)
    e88768f8:	27513c23          	sd	s5,632(sp)
    e88768fc:	27613823          	sd	s6,624(sp)
    e8876900:	27813023          	sd	s8,608(sp)
    e8876904:	25913c23          	sd	s9,600(sp)
    e8876908:	25a13823          	sd	s10,592(sp)
    e887690c:	25b13423          	sd	s11,584(sp)
    e8876910:	f0aa                	sd	a0,96(sp)
    e8876912:	f4ae                	sd	a1,104(sp)
    e8876914:	e4b2                	sd	a2,72(sp)
    e8876916:	27713423          	sd	s7,616(sp)
  limb a[5] = {0}, b[5] = {1}, c[5] = {1}, d[5] = {0};
    e887691a:	e502                	sd	zero,136(sp)
    e887691c:	e902                	sd	zero,144(sp)
    e887691e:	ed02                	sd	zero,152(sp)
    e8876920:	f102                	sd	zero,160(sp)
    e8876922:	f502                	sd	zero,168(sp)
    e8876924:	fd02                	sd	zero,184(sp)
    e8876926:	e182                	sd	zero,192(sp)
    e8876928:	e582                	sd	zero,200(sp)
    e887692a:	e982                	sd	zero,208(sp)
    e887692c:	f182                	sd	zero,224(sp)
    e887692e:	f582                	sd	zero,232(sp)
    e8876930:	f982                	sd	zero,240(sp)
    e8876932:	fd82                	sd	zero,248(sp)
    e8876934:	e202                	sd	zero,256(sp)
  limb e[5] = {0}, f[5] = {1}, g[5] = {0}, h[5] = {1};
  limb *nqpqx2 = e, *nqpqz2 = f, *nqx2 = g, *nqz2 = h;

  unsigned i, j;

  memcpy(nqpqx, q, sizeof(limb) * 5);
    e8876936:	85b6                	mv	a1,a3
    e8876938:	02800613          	li	a2,40
    e887693c:	0128                	addi	a0,sp,136
  limb a[5] = {0}, b[5] = {1}, c[5] = {1}, d[5] = {0};
    e887693e:	e602                	sd	zero,264(sp)
  limb e[5] = {0}, f[5] = {1}, g[5] = {0}, h[5] = {1};
    e8876940:	eabe                	sd	a5,336(sp)
    e8876942:	f33e                	sd	a5,416(sp)
  memcpy(nqpqx, q, sizeof(limb) * 5);
    e8876944:	e036                	sd	a3,0(sp)
  limb a[5] = {0}, b[5] = {1}, c[5] = {1}, d[5] = {0};
    e8876946:	ea02                	sd	zero,272(sp)
    e8876948:	ee02                	sd	zero,280(sp)
    e887694a:	f202                	sd	zero,288(sp)
  limb e[5] = {0}, f[5] = {1}, g[5] = {0}, h[5] = {1};
    e887694c:	f602                	sd	zero,296(sp)
    e887694e:	fa02                	sd	zero,304(sp)
    e8876950:	fe02                	sd	zero,312(sp)
    e8876952:	e282                	sd	zero,320(sp)
    e8876954:	e682                	sd	zero,328(sp)
    e8876956:	ee82                	sd	zero,344(sp)
    e8876958:	f282                	sd	zero,352(sp)
    e887695a:	f682                	sd	zero,360(sp)
    e887695c:	fa82                	sd	zero,368(sp)
    e887695e:	fe82                	sd	zero,376(sp)
    e8876960:	e302                	sd	zero,384(sp)
    e8876962:	e702                	sd	zero,392(sp)
    e8876964:	eb02                	sd	zero,400(sp)
    e8876966:	ef02                	sd	zero,408(sp)
    e8876968:	f702                	sd	zero,424(sp)
    e887696a:	fb02                	sd	zero,432(sp)
    e887696c:	ff02                	sd	zero,440(sp)
    e887696e:	e382                	sd	zero,448(sp)
  memcpy(nqpqx, q, sizeof(limb) * 5);
    e8876970:	231050ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  out[1] = in[1] + two54m8 - out[1];
    e8876974:	79f9                	lui	s3,0xffffe
    e8876976:	67a6                	ld	a5,72(sp)
    e8876978:	6682                	ld	a3,0(sp)
  a = ((uint128_t) in[0]) * scalar;
    e887697a:	6c79                	lui	s8,0x1e
    e887697c:	07fd                	addi	a5,a5,31
    e887697e:	e43e                	sd	a5,8(sp)
  out[0] = in[0] + two54m152 - out[0];
    e8876980:	fffda7b7          	lui	a5,0xfffda
    e8876984:	83a9                	srli	a5,a5,0xa
  limb *nqpqx2 = e, *nqpqz2 = f, *nqx2 = g, *nqz2 = h;
    e8876986:	1a010913          	addi	s2,sp,416
    e887698a:	1aa4                	addi	s1,sp,376
    e887698c:	15010a93          	addi	s5,sp,336
    e8876990:	12810a13          	addi	s4,sp,296
  limb *nqpqx = a, *nqpqz = b, *nqx = c, *nqz = d, *t;
    e8876994:	10010c93          	addi	s9,sp,256
    e8876998:	0d810d13          	addi	s10,sp,216
    e887699c:	0b010d93          	addi	s11,sp,176
    e88769a0:	08810b13          	addi	s6,sp,136
  out[0] = in[0] + two54m152 - out[0];
    e88769a4:	ec3e                	sd	a5,24(sp)
  out[1] = in[1] + two54m8 - out[1];
    e88769a6:	00a9d993          	srli	s3,s3,0xa
  r4 *= 19;
    e88769aa:	444d                	li	s0,19
  a = ((uint128_t) in[0]) * scalar;
    e88769ac:	b41c0c13          	addi	s8,s8,-1215 # 1db41 <memcmp-0xe87e24bf>

  for (i = 0; i < 32; ++i) {
    u8 byte = n[31 - i];
    e88769b0:	67a2                	ld	a5,8(sp)
    e88769b2:	0007c783          	lbu	a5,0(a5) # fffffffffffda000 <__DRAM0_INF_BASE+0xfffffffefffea000>
    e88769b6:	f03e                	sd	a5,32(sp)
    e88769b8:	87ca                	mv	a5,s2
    e88769ba:	8966                	mv	s2,s9
    e88769bc:	8cbe                	mv	s9,a5
    e88769be:	87a6                	mv	a5,s1
    e88769c0:	84ea                	mv	s1,s10
    e88769c2:	8d3e                	mv	s10,a5
    e88769c4:	87d6                	mv	a5,s5
    e88769c6:	8aee                	mv	s5,s11
    e88769c8:	8dbe                	mv	s11,a5
    e88769ca:	87d2                	mv	a5,s4
    e88769cc:	8a5a                	mv	s4,s6
    e88769ce:	8b3e                	mv	s6,a5
    e88769d0:	47a1                	li	a5,8
    e88769d2:	f43e                	sd	a5,40(sp)
    for (j = 0; j < 8; ++j) {
      const limb bit = byte >> 7;
    e88769d4:	7782                	ld	a5,32(sp)

      swap_conditional(nqx, nqpqx, bit);
    e88769d6:	85d2                	mv	a1,s4
    e88769d8:	8526                	mv	a0,s1
      const limb bit = byte >> 7;
    e88769da:	0077db93          	srli	s7,a5,0x7
      swap_conditional(nqx, nqpqx, bit);
    e88769de:	865e                	mv	a2,s7
    e88769e0:	fcb6                	sd	a3,120(sp)
    e88769e2:	ec7ff0ef          	jal	ra,e88768a8 <swap_conditional>
      swap_conditional(nqz, nqpqz, bit);
    e88769e6:	865e                	mv	a2,s7
    e88769e8:	85d6                	mv	a1,s5
    e88769ea:	854a                	mv	a0,s2
    e88769ec:	ebdff0ef          	jal	ra,e88768a8 <swap_conditional>
  memcpy(origx, x, 5 * sizeof(limb));
    e88769f0:	02800613          	li	a2,40
    e88769f4:	85a6                	mv	a1,s1
    e88769f6:	03a8                	addi	a0,sp,456
    e88769f8:	1a9050ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  output[0] += in[0];
    e88769fc:	00093703          	ld	a4,0(s2)
    e8876a00:	609c                	ld	a5,0(s1)
  output[1] += in[1];
    e8876a02:	00893803          	ld	a6,8(s2)
  output[2] += in[2];
    e8876a06:	01093503          	ld	a0,16(s2)
  output[0] += in[0];
    e8876a0a:	97ba                	add	a5,a5,a4
    e8876a0c:	e09c                	sd	a5,0(s1)
  output[1] += in[1];
    e8876a0e:	649c                	ld	a5,8(s1)
  output[3] += in[3];
    e8876a10:	6c90                	ld	a2,24(s1)
  output[4] += in[4];
    e8876a12:	02093583          	ld	a1,32(s2)
  output[1] += in[1];
    e8876a16:	97c2                	add	a5,a5,a6
    e8876a18:	e49c                	sd	a5,8(s1)
  output[2] += in[2];
    e8876a1a:	689c                	ld	a5,16(s1)
  out[0] = in[0] + two54m152 - out[0];
    e8876a1c:	66e2                	ld	a3,24(sp)
  output[2] += in[2];
    e8876a1e:	97aa                	add	a5,a5,a0
    e8876a20:	e89c                	sd	a5,16(s1)
  output[3] += in[3];
    e8876a22:	01893783          	ld	a5,24(s2)
    e8876a26:	963e                	add	a2,a2,a5
    e8876a28:	ec90                	sd	a2,24(s1)
  output[4] += in[4];
    e8876a2a:	7090                	ld	a2,32(s1)
    e8876a2c:	962e                	add	a2,a2,a1
    e8876a2e:	f090                	sd	a2,32(s1)
  out[0] = in[0] + two54m152 - out[0];
    e8876a30:	663e                	ld	a2,456(sp)
    e8876a32:	9636                	add	a2,a2,a3
    e8876a34:	8e19                	sub	a2,a2,a4
  out[1] = in[1] + two54m8 - out[1];
    e8876a36:	675e                	ld	a4,464(sp)
  out[0] = in[0] + two54m152 - out[0];
    e8876a38:	00c93023          	sd	a2,0(s2)
  out[2] = in[2] + two54m8 - out[2];
    e8876a3c:	667e                	ld	a2,472(sp)
  out[1] = in[1] + two54m8 - out[1];
    e8876a3e:	974e                	add	a4,a4,s3
    e8876a40:	41070733          	sub	a4,a4,a6
    e8876a44:	00e93423          	sd	a4,8(s2)
  out[3] = in[3] + two54m8 - out[3];
    e8876a48:	771e                	ld	a4,480(sp)
  out[2] = in[2] + two54m8 - out[2];
    e8876a4a:	964e                	add	a2,a2,s3
    e8876a4c:	8e09                	sub	a2,a2,a0
  out[3] = in[3] + two54m8 - out[3];
    e8876a4e:	974e                	add	a4,a4,s3
    e8876a50:	8f1d                	sub	a4,a4,a5
  out[4] = in[4] + two54m8 - out[4];
    e8876a52:	77be                	ld	a5,488(sp)
  out[2] = in[2] + two54m8 - out[2];
    e8876a54:	00c93823          	sd	a2,16(s2)
  out[3] = in[3] + two54m8 - out[3];
    e8876a58:	00e93c23          	sd	a4,24(s2)
  out[4] = in[4] + two54m8 - out[4];
    e8876a5c:	97ce                	add	a5,a5,s3
    e8876a5e:	8f8d                	sub	a5,a5,a1
    e8876a60:	02f93023          	sd	a5,32(s2)
  memcpy(origxprime, xprime, sizeof(limb) * 5);
    e8876a64:	02800613          	li	a2,40
    e8876a68:	85d2                	mv	a1,s4
    e8876a6a:	1b88                	addi	a0,sp,496
    e8876a6c:	135050ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  out[0] = in[0] + two54m152 - out[0];
    e8876a70:	66e2                	ld	a3,24(sp)
    e8876a72:	77de                	ld	a5,496(sp)
  output[0] += in[0];
    e8876a74:	000ab703          	ld	a4,0(s5)
    e8876a78:	000a3803          	ld	a6,0(s4)
  out[0] = in[0] + two54m152 - out[0];
    e8876a7c:	97b6                	add	a5,a5,a3
    e8876a7e:	8f99                	sub	a5,a5,a4
  output[0] += in[0];
    e8876a80:	983a                	add	a6,a6,a4
  out[1] = in[1] + two54m8 - out[1];
    e8876a82:	777e                	ld	a4,504(sp)
  output[1] += in[1];
    e8876a84:	008ab303          	ld	t1,8(s5)
    e8876a88:	008a3583          	ld	a1,8(s4)
  out[1] = in[1] + two54m8 - out[1];
    e8876a8c:	974e                	add	a4,a4,s3
    e8876a8e:	40670733          	sub	a4,a4,t1
  output[1] += in[1];
    e8876a92:	959a                	add	a1,a1,t1
  out[2] = in[2] + two54m8 - out[2];
    e8876a94:	20013303          	ld	t1,512(sp)
  output[2] += in[2];
    e8876a98:	010abe03          	ld	t3,16(s5)
    e8876a9c:	010a3603          	ld	a2,16(s4)
  out[2] = in[2] + two54m8 - out[2];
    e8876aa0:	934e                	add	t1,t1,s3
    e8876aa2:	41c30333          	sub	t1,t1,t3
  output[2] += in[2];
    e8876aa6:	9672                	add	a2,a2,t3
  out[3] = in[3] + two54m8 - out[3];
    e8876aa8:	20813e03          	ld	t3,520(sp)
  output[3] += in[3];
    e8876aac:	018abe83          	ld	t4,24(s5)
    e8876ab0:	018a3503          	ld	a0,24(s4)
  out[3] = in[3] + two54m8 - out[3];
    e8876ab4:	9e4e                	add	t3,t3,s3
    e8876ab6:	41de06b3          	sub	a3,t3,t4
  output[3] += in[3];
    e8876aba:	9576                	add	a0,a0,t4
  out[4] = in[4] + two54m8 - out[4];
    e8876abc:	21013e83          	ld	t4,528(sp)
  output[4] += in[4];
    e8876ac0:	020abf83          	ld	t6,32(s5)
  out[3] = in[3] + two54m8 - out[3];
    e8876ac4:	e036                	sd	a3,0(sp)
  out[4] = in[4] + two54m8 - out[4];
    e8876ac6:	9ece                	add	t4,t4,s3
  out[3] = in[3] + two54m8 - out[3];
    e8876ac8:	00dabc23          	sd	a3,24(s5)
  out[4] = in[4] + two54m8 - out[4];
    e8876acc:	41fe86b3          	sub	a3,t4,t6
  output[4] += in[4];
    e8876ad0:	020a3883          	ld	a7,32(s4)
  out[4] = in[4] + two54m8 - out[4];
    e8876ad4:	e836                	sd	a3,16(sp)
    e8876ad6:	02dab023          	sd	a3,32(s5)
  r4 *= 19;
    e8876ada:	02093683          	ld	a3,32(s2)
  output[4] += in[4];
    e8876ade:	98fe                	add	a7,a7,t6
  r2 = in[2];
    e8876ae0:	01093f03          	ld	t5,16(s2)
  r1 = in[1];
    e8876ae4:	f9f94e8b          	ldd	t4,t6,(s2),0,4
  r4 *= 19;
    e8876ae8:	028682b3          	mul	t0,a3,s0
  out[2] = in[2] + two54m8 - out[2];
    e8876aec:	006ab823          	sd	t1,16(s5)
  output[0] += in[0];
    e8876af0:	010a3023          	sd	a6,0(s4)
  output[1] += in[1];
    e8876af4:	00ba3423          	sd	a1,8(s4)
  output[2] += in[2];
    e8876af8:	00ca3823          	sd	a2,16(s4)
  output[3] += in[3];
    e8876afc:	00aa3c23          	sd	a0,24(s4)
  output[4] += in[4];
    e8876b00:	031a3023          	sd	a7,32(s4)
  out[0] = in[0] + two54m152 - out[0];
    e8876b04:	00fab023          	sd	a5,0(s5)
  out[1] = in[1] + two54m8 - out[1];
    e8876b08:	00eab423          	sd	a4,8(s5)
  r3 *= 19;
    e8876b0c:	01893683          	ld	a3,24(s2)
  t[0]  =  ((uint128_t) r0) * s0;
    e8876b10:	030e83b3          	mul	t2,t4,a6
  r3 *= 19;
    e8876b14:	028680b3          	mul	ra,a3,s0
  t[0]  =  ((uint128_t) r0) * s0;
    e8876b18:	030eb6b3          	mulhu	a3,t4,a6
    e8876b1c:	8e36                	mv	t3,a3
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8876b1e:	869e                	mv	a3,t2
    e8876b20:	2055968b          	mula	a3,a1,t0
    e8876b24:	f836                	sd	a3,48(sp)
    e8876b26:	0076b3b3          	sltu	t2,a3,t2
    e8876b2a:	86f2                	mv	a3,t3
    e8876b2c:	0255be33          	mulhu	t3,a1,t0
    e8876b30:	96f2                	add	a3,a3,t3
    e8876b32:	969e                	add	a3,a3,t2
  r1 *= 19;
    e8876b34:	028f83b3          	mul	t2,t6,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8876b38:	e0b6                	sd	a3,64(sp)
    e8876b3a:	7e42                	ld	t3,48(sp)
    e8876b3c:	0313b6b3          	mulhu	a3,t2,a7
    e8876b40:	e8b6                	sd	a3,80(sp)
    e8876b42:	76c2                	ld	a3,48(sp)
    e8876b44:	2113968b          	mula	a3,t2,a7
    e8876b48:	fc36                	sd	a3,56(sp)
    e8876b4a:	01c6b6b3          	sltu	a3,a3,t3
    e8876b4e:	f836                	sd	a3,48(sp)
    e8876b50:	6e46                	ld	t3,80(sp)
    e8876b52:	6686                	ld	a3,64(sp)
    e8876b54:	01c683b3          	add	t2,a3,t3
    e8876b58:	76c2                	ld	a3,48(sp)
    e8876b5a:	7e62                	ld	t3,56(sp)
    e8876b5c:	93b6                	add	t2,t2,a3
    e8876b5e:	76e2                	ld	a3,56(sp)
    e8876b60:	2016168b          	mula	a3,a2,ra
    e8876b64:	f836                	sd	a3,48(sp)
    e8876b66:	01c6b6b3          	sltu	a3,a3,t3
    e8876b6a:	8e36                	mv	t3,a3
    e8876b6c:	021636b3          	mulhu	a3,a2,ra
    e8876b70:	93b6                	add	t2,t2,a3
    e8876b72:	028f06b3          	mul	a3,t5,s0
    e8876b76:	93f2                	add	t2,t2,t3
    e8876b78:	02d536b3          	mulhu	a3,a0,a3
    e8876b7c:	028f0e33          	mul	t3,t5,s0
    e8876b80:	e0b6                	sd	a3,64(sp)
    e8876b82:	76c2                	ld	a3,48(sp)
    e8876b84:	21c5168b          	mula	a3,a0,t3
    e8876b88:	7e42                	ld	t3,48(sp)
    e8876b8a:	fc36                	sd	a3,56(sp)
    e8876b8c:	01c6b6b3          	sltu	a3,a3,t3
    e8876b90:	8e36                	mv	t3,a3
    e8876b92:	6686                	ld	a3,64(sp)
    e8876b94:	93b6                	add	t2,t2,a3
    e8876b96:	007e06b3          	add	a3,t3,t2
    e8876b9a:	ecb6                	sd	a3,88(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8876b9c:	76e2                	ld	a3,56(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8876b9e:	02be83b3          	mul	t2,t4,a1
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8876ba2:	c806b68b          	extu	a3,a3,50,0
    e8876ba6:	e8b6                	sd	a3,80(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8876ba8:	02beb6b3          	mulhu	a3,t4,a1
    e8876bac:	8e36                	mv	t3,a3
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8876bae:	869e                	mv	a3,t2
    e8876bb0:	21f8168b          	mula	a3,a6,t6
    e8876bb4:	f836                	sd	a3,48(sp)
    e8876bb6:	0076b3b3          	sltu	t2,a3,t2
    e8876bba:	86f2                	mv	a3,t3
    e8876bbc:	03f83e33          	mulhu	t3,a6,t6
    e8876bc0:	96f2                	add	a3,a3,t3
    e8876bc2:	93b6                	add	t2,t2,a3
    e8876bc4:	76c2                	ld	a3,48(sp)
    e8876bc6:	7e42                	ld	t3,48(sp)
    e8876bc8:	2056168b          	mula	a3,a2,t0
    e8876bcc:	e0b6                	sd	a3,64(sp)
    e8876bce:	01c6b6b3          	sltu	a3,a3,t3
    e8876bd2:	8e36                	mv	t3,a3
    e8876bd4:	025636b3          	mulhu	a3,a2,t0
    e8876bd8:	93b6                	add	t2,t2,a3
    e8876bda:	028f06b3          	mul	a3,t5,s0
    e8876bde:	93f2                	add	t2,t2,t3
    e8876be0:	02d8b6b3          	mulhu	a3,a7,a3
    e8876be4:	028f0e33          	mul	t3,t5,s0
    e8876be8:	f8b6                	sd	a3,112(sp)
    e8876bea:	6686                	ld	a3,64(sp)
    e8876bec:	21c8968b          	mula	a3,a7,t3
    e8876bf0:	6e06                	ld	t3,64(sp)
    e8876bf2:	f836                	sd	a3,48(sp)
    e8876bf4:	01c6b6b3          	sltu	a3,a3,t3
    e8876bf8:	8e36                	mv	t3,a3
    e8876bfa:	76c6                	ld	a3,112(sp)
    e8876bfc:	93b6                	add	t2,t2,a3
    e8876bfe:	76c2                	ld	a3,48(sp)
    e8876c00:	93f2                	add	t2,t2,t3
    e8876c02:	2015168b          	mula	a3,a0,ra
    e8876c06:	e0b6                	sd	a3,64(sp)
    e8876c08:	7e42                	ld	t3,48(sp)
    e8876c0a:	01c6b6b3          	sltu	a3,a3,t3
    e8876c0e:	8e36                	mv	t3,a3
    e8876c10:	021536b3          	mulhu	a3,a0,ra
    e8876c14:	93b6                	add	t2,t2,a3
    e8876c16:	007e06b3          	add	a3,t3,t2
    e8876c1a:	f8b6                	sd	a3,112(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8876c1c:	66e6                	ld	a3,88(sp)
    e8876c1e:	06b6                	slli	a3,a3,0xd
    e8876c20:	8e36                	mv	t3,a3
    e8876c22:	76e2                	ld	a3,56(sp)
    e8876c24:	0336d393          	srli	t2,a3,0x33
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8876c28:	6686                	ld	a3,64(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8876c2a:	007e63b3          	or	t2,t3,t2
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8876c2e:	6e06                	ld	t3,64(sp)
    e8876c30:	969e                	add	a3,a3,t2
    e8876c32:	f836                	sd	a3,48(sp)
    e8876c34:	01c6b3b3          	sltu	t2,a3,t3
    e8876c38:	76c6                	ld	a3,112(sp)
    e8876c3a:	969e                	add	a3,a3,t2
    e8876c3c:	f8b6                	sd	a3,112(sp)
    e8876c3e:	76c2                	ld	a3,48(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8876c40:	02ce83b3          	mul	t2,t4,a2
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8876c44:	c806b68b          	extu	a3,a3,50,0
    e8876c48:	ecb6                	sd	a3,88(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8876c4a:	02ceb6b3          	mulhu	a3,t4,a2
    e8876c4e:	8e36                	mv	t3,a3
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8876c50:	869e                	mv	a3,t2
    e8876c52:	21e8168b          	mula	a3,a6,t5
    e8876c56:	fc36                	sd	a3,56(sp)
    e8876c58:	0076b3b3          	sltu	t2,a3,t2
    e8876c5c:	86f2                	mv	a3,t3
    e8876c5e:	03e83e33          	mulhu	t3,a6,t5
    e8876c62:	96f2                	add	a3,a3,t3
    e8876c64:	93b6                	add	t2,t2,a3
    e8876c66:	76e2                	ld	a3,56(sp)
    e8876c68:	7e62                	ld	t3,56(sp)
    e8876c6a:	21f5968b          	mula	a3,a1,t6
    e8876c6e:	e0b6                	sd	a3,64(sp)
    e8876c70:	01c6b6b3          	sltu	a3,a3,t3
    e8876c74:	8e36                	mv	t3,a3
    e8876c76:	03f5b6b3          	mulhu	a3,a1,t6
    e8876c7a:	93b6                	add	t2,t2,a3
    e8876c7c:	6686                	ld	a3,64(sp)
    e8876c7e:	93f2                	add	t2,t2,t3
    e8876c80:	6e06                	ld	t3,64(sp)
    e8876c82:	2055168b          	mula	a3,a0,t0
    e8876c86:	fc36                	sd	a3,56(sp)
    e8876c88:	01c6b6b3          	sltu	a3,a3,t3
    e8876c8c:	8e36                	mv	t3,a3
    e8876c8e:	025536b3          	mulhu	a3,a0,t0
    e8876c92:	93b6                	add	t2,t2,a3
    e8876c94:	0218b6b3          	mulhu	a3,a7,ra
    e8876c98:	93f2                	add	t2,t2,t3
    e8876c9a:	8e36                	mv	t3,a3
    e8876c9c:	76e2                	ld	a3,56(sp)
    e8876c9e:	93f2                	add	t2,t2,t3
    e8876ca0:	2018968b          	mula	a3,a7,ra
    e8876ca4:	80b6                	mv	ra,a3
    e8876ca6:	76e2                	ld	a3,56(sp)
    e8876ca8:	00d0b6b3          	sltu	a3,ra,a3
    e8876cac:	fc36                	sd	a3,56(sp)
    e8876cae:	76e2                	ld	a3,56(sp)
    e8876cb0:	969e                	add	a3,a3,t2
    e8876cb2:	8e36                	mv	t3,a3
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8876cb4:	76c6                	ld	a3,112(sp)
    e8876cb6:	06b6                	slli	a3,a3,0xd
    e8876cb8:	fc36                	sd	a3,56(sp)
    e8876cba:	76c2                	ld	a3,48(sp)
    e8876cbc:	0336d393          	srli	t2,a3,0x33
    e8876cc0:	76e2                	ld	a3,56(sp)
    e8876cc2:	0076e3b3          	or	t2,a3,t2
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8876cc6:	007086b3          	add	a3,ra,t2
    e8876cca:	0016b3b3          	sltu	t2,a3,ra
    e8876cce:	f836                	sd	a3,48(sp)
    e8876cd0:	01c386b3          	add	a3,t2,t3
    e8876cd4:	e0b6                	sd	a3,64(sp)
    e8876cd6:	76c2                	ld	a3,48(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8876cd8:	02ae83b3          	mul	t2,t4,a0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8876cdc:	c806b68b          	extu	a3,a3,50,0
    e8876ce0:	fc36                	sd	a3,56(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8876ce2:	02aeb6b3          	mulhu	a3,t4,a0
    e8876ce6:	809e                	mv	ra,t2
    e8876ce8:	8e36                	mv	t3,a3
    e8876cea:	01893683          	ld	a3,24(s2)
    e8876cee:	02d836b3          	mulhu	a3,a6,a3
    e8876cf2:	f8b6                	sd	a3,112(sp)
    e8876cf4:	01893683          	ld	a3,24(s2)
    e8876cf8:	20d8108b          	mula	ra,a6,a3
    e8876cfc:	86f2                	mv	a3,t3
    e8876cfe:	7e46                	ld	t3,112(sp)
    e8876d00:	96f2                	add	a3,a3,t3
    e8876d02:	0070b3b3          	sltu	t2,ra,t2
    e8876d06:	93b6                	add	t2,t2,a3
    e8876d08:	8686                	mv	a3,ra
    e8876d0a:	21e5968b          	mula	a3,a1,t5
    e8876d0e:	8e36                	mv	t3,a3
    e8876d10:	0016b0b3          	sltu	ra,a3,ra
    e8876d14:	03e5b6b3          	mulhu	a3,a1,t5
    e8876d18:	93b6                	add	t2,t2,a3
    e8876d1a:	9386                	add	t2,t2,ra
    e8876d1c:	80f2                	mv	ra,t3
    e8876d1e:	20cf908b          	mula	ra,t6,a2
    e8876d22:	01c0b6b3          	sltu	a3,ra,t3
    e8876d26:	8e36                	mv	t3,a3
    e8876d28:	02cfb6b3          	mulhu	a3,t6,a2
    e8876d2c:	93b6                	add	t2,t2,a3
  t[3] += ((uint128_t) r4) * s4;
    e8876d2e:	0258b6b3          	mulhu	a3,a7,t0
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8876d32:	93f2                	add	t2,t2,t3
  t[3] += ((uint128_t) r4) * s4;
    e8876d34:	8e36                	mv	t3,a3
    e8876d36:	8686                	mv	a3,ra
    e8876d38:	2058968b          	mula	a3,a7,t0
    e8876d3c:	93f2                	add	t2,t2,t3
    e8876d3e:	82b6                	mv	t0,a3
    e8876d40:	0016b0b3          	sltu	ra,a3,ra
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8876d44:	6686                	ld	a3,64(sp)
  t[3] += ((uint128_t) r4) * s4;
    e8876d46:	909e                	add	ra,ra,t2
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8876d48:	06b6                	slli	a3,a3,0xd
    e8876d4a:	8e36                	mv	t3,a3
    e8876d4c:	76c2                	ld	a3,48(sp)
    e8876d4e:	0336d393          	srli	t2,a3,0x33
    e8876d52:	007e63b3          	or	t2,t3,t2
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8876d56:	9396                	add	t2,t2,t0
    e8876d58:	0053b2b3          	sltu	t0,t2,t0
    e8876d5c:	9096                	add	ra,ra,t0
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8876d5e:	031e82b3          	mul	t0,t4,a7
    e8876d62:	02093683          	ld	a3,32(s2)
    e8876d66:	02093e03          	ld	t3,32(s2)
    e8876d6a:	031eb8b3          	mulhu	a7,t4,a7
    e8876d6e:	02d83eb3          	mulhu	t4,a6,a3
    e8876d72:	8696                	mv	a3,t0
    e8876d74:	21c8168b          	mula	a3,a6,t3
    e8876d78:	98f6                	add	a7,a7,t4
    e8876d7a:	01893e03          	ld	t3,24(s2)
    e8876d7e:	0056b2b3          	sltu	t0,a3,t0
    e8876d82:	8836                	mv	a6,a3
    e8876d84:	20af968b          	mula	a3,t6,a0
    e8876d88:	9896                	add	a7,a7,t0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8876d8a:	00d09293          	slli	t0,ra,0xd
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8876d8e:	02afbeb3          	mulhu	t4,t6,a0
    e8876d92:	0106b833          	sltu	a6,a3,a6
    e8876d96:	8536                	mv	a0,a3
    e8876d98:	01893683          	ld	a3,24(s2)
    e8876d9c:	98f6                	add	a7,a7,t4
    e8876d9e:	98c2                	add	a7,a7,a6
    e8876da0:	02d5b833          	mulhu	a6,a1,a3
    e8876da4:	86aa                	mv	a3,a0
    e8876da6:	21c5968b          	mula	a3,a1,t3
    e8876daa:	98c2                	add	a7,a7,a6
    e8876dac:	00a6b533          	sltu	a0,a3,a0
    e8876db0:	8836                	mv	a6,a3
    e8876db2:	21e6180b          	mula	a6,a2,t5
    e8876db6:	98aa                	add	a7,a7,a0
    e8876db8:	03e63533          	mulhu	a0,a2,t5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8876dbc:	0333d613          	srli	a2,t2,0x33
    e8876dc0:	00c2e633          	or	a2,t0,a2
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8876dc4:	00d835b3          	sltu	a1,a6,a3
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8876dc8:	9642                	add	a2,a2,a6
    e8876dca:	01063833          	sltu	a6,a2,a6
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8876dce:	66e6                	ld	a3,88(sp)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8876dd0:	c803b38b          	extu	t2,t2,50,0
  output[3] = r3;
    e8876dd4:	22713823          	sd	t2,560(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8876dd8:	98aa                	add	a7,a7,a0
    e8876dda:	95c6                	add	a1,a1,a7
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8876ddc:	982e                	add	a6,a6,a1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8876dde:	6546                	ld	a0,80(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8876de0:	0836                	slli	a6,a6,0xd
    e8876de2:	03365593          	srli	a1,a2,0x33
    e8876de6:	00b865b3          	or	a1,a6,a1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8876dea:	20b4150b          	mula	a0,s0,a1
  s4 = in2[4];
    e8876dee:	0204b883          	ld	a7,32(s1)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8876df2:	c806360b          	extu	a2,a2,50,0
  output[4] = r4;
    e8876df6:	22c13c23          	sd	a2,568(sp)
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8876dfa:	03355593          	srli	a1,a0,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8876dfe:	00d58833          	add	a6,a1,a3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8876e02:	c805358b          	extu	a1,a0,50,0
  r1 *= 19;
    e8876e06:	028703b3          	mul	t2,a4,s0
  r2 +=   c;
    e8876e0a:	76e2                	ld	a3,56(sp)
  output[0] = r0;
    e8876e0c:	20b13c23          	sd	a1,536(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8876e10:	c808358b          	extu	a1,a6,50,0
  output[1] = r1;
    e8876e14:	22b13023          	sd	a1,544(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8876e18:	03385593          	srli	a1,a6,0x33
  r2 +=   c;
    e8876e1c:	95b6                	add	a1,a1,a3
  r4 *= 19;
    e8876e1e:	66c2                	ld	a3,16(sp)
  output[2] = r2;
    e8876e20:	22b13423          	sd	a1,552(sp)
  s1 = in2[1];
    e8876e24:	f8b4c80b          	ldd	a6,a1,(s1),0,4
  r4 *= 19;
    e8876e28:	02868eb3          	mul	t4,a3,s0
  r3 *= 19;
    e8876e2c:	6682                	ld	a3,0(sp)
  s3 = in2[3];
    e8876e2e:	faa4c60b          	ldd	a2,a0,(s1),1,4
  r3 *= 19;
    e8876e32:	02868fb3          	mul	t6,a3,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8876e36:	031386b3          	mul	a3,t2,a7
    e8876e3a:	8e36                	mv	t3,a3
    e8876e3c:	80f2                	mv	ra,t3
    e8876e3e:	21d5908b          	mula	ra,a1,t4
    e8876e42:	03d5b6b3          	mulhu	a3,a1,t4
    e8876e46:	8f36                	mv	t5,a3
    e8876e48:	01c0b6b3          	sltu	a3,ra,t3
    e8876e4c:	8e36                	mv	t3,a3
    e8876e4e:	0313b3b3          	mulhu	t2,t2,a7
  t[0]  =  ((uint128_t) r0) * s0;
    e8876e52:	0307b6b3          	mulhu	a3,a5,a6
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8876e56:	93fa                	add	t2,t2,t5
    e8876e58:	93f2                	add	t2,t2,t3
  t[0]  =  ((uint128_t) r0) * s0;
    e8876e5a:	8f36                	mv	t5,a3
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8876e5c:	8686                	mv	a3,ra
    e8876e5e:	2107968b          	mula	a3,a5,a6
    e8876e62:	93fa                	add	t2,t2,t5
    e8876e64:	0016b0b3          	sltu	ra,a3,ra
    e8876e68:	8e36                	mv	t3,a3
    e8876e6a:	9386                	add	t2,t2,ra
    e8876e6c:	80f2                	mv	ra,t3
    e8876e6e:	21f6108b          	mula	ra,a2,t6
    e8876e72:	03f636b3          	mulhu	a3,a2,t6
  r2 *= 19;
    e8876e76:	028302b3          	mul	t0,t1,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8876e7a:	8f36                	mv	t5,a3
    e8876e7c:	01c0b6b3          	sltu	a3,ra,t3
    e8876e80:	8e36                	mv	t3,a3
    e8876e82:	93fa                	add	t2,t2,t5
    e8876e84:	93f2                	add	t2,t2,t3
    e8876e86:	025536b3          	mulhu	a3,a0,t0
    e8876e8a:	8e36                	mv	t3,a3
    e8876e8c:	8686                	mv	a3,ra
    e8876e8e:	2055168b          	mula	a3,a0,t0
    e8876e92:	93f2                	add	t2,t2,t3
    e8876e94:	0016b0b3          	sltu	ra,a3,ra
    e8876e98:	f836                	sd	a3,48(sp)
    e8876e9a:	007086b3          	add	a3,ra,t2
    e8876e9e:	e0b6                	sd	a3,64(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8876ea0:	76c2                	ld	a3,48(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8876ea2:	02b783b3          	mul	t2,a5,a1
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8876ea6:	c806b68b          	extu	a3,a3,50,0
    e8876eaa:	fc36                	sd	a3,56(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8876eac:	02b7b6b3          	mulhu	a3,a5,a1
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8876eb0:	809e                	mv	ra,t2
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8876eb2:	8e36                	mv	t3,a3
    e8876eb4:	02e836b3          	mulhu	a3,a6,a4
    e8876eb8:	8f36                	mv	t5,a3
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8876eba:	86f2                	mv	a3,t3
    e8876ebc:	20e8108b          	mula	ra,a6,a4
    e8876ec0:	9f36                	add	t5,t5,a3
    e8876ec2:	03d636b3          	mulhu	a3,a2,t4
    e8876ec6:	0070b3b3          	sltu	t2,ra,t2
    e8876eca:	93fa                	add	t2,t2,t5
    e8876ecc:	8f36                	mv	t5,a3
    e8876ece:	8686                	mv	a3,ra
    e8876ed0:	21d6168b          	mula	a3,a2,t4
    e8876ed4:	93fa                	add	t2,t2,t5
    e8876ed6:	8e36                	mv	t3,a3
    e8876ed8:	0016b0b3          	sltu	ra,a3,ra
    e8876edc:	909e                	add	ra,ra,t2
    e8876ede:	83f2                	mv	t2,t3
    e8876ee0:	2058938b          	mula	t2,a7,t0
    e8876ee4:	0258b6b3          	mulhu	a3,a7,t0
    e8876ee8:	8f36                	mv	t5,a3
    e8876eea:	01c3b6b3          	sltu	a3,t2,t3
    e8876eee:	8e36                	mv	t3,a3
    e8876ef0:	03f536b3          	mulhu	a3,a0,t6
    e8876ef4:	01e082b3          	add	t0,ra,t5
    e8876ef8:	809e                	mv	ra,t2
    e8876efa:	92f2                	add	t0,t0,t3
    e8876efc:	21f5108b          	mula	ra,a0,t6
    e8876f00:	92b6                	add	t0,t0,a3
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8876f02:	6686                	ld	a3,64(sp)
    e8876f04:	00d69f13          	slli	t5,a3,0xd
    e8876f08:	76c2                	ld	a3,48(sp)
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8876f0a:	0070b3b3          	sltu	t2,ra,t2
    e8876f0e:	9396                	add	t2,t2,t0
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8876f10:	0336d293          	srli	t0,a3,0x33
    e8876f14:	005f62b3          	or	t0,t5,t0
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8876f18:	005086b3          	add	a3,ra,t0
    e8876f1c:	0016b2b3          	sltu	t0,a3,ra
    e8876f20:	8e36                	mv	t3,a3
    e8876f22:	007286b3          	add	a3,t0,t2
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8876f26:	02c782b3          	mul	t0,a5,a2
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8876f2a:	e0b6                	sd	a3,64(sp)
    e8876f2c:	c80e368b          	extu	a3,t3,50,0
    e8876f30:	f836                	sd	a3,48(sp)
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8876f32:	8396                	mv	t2,t0
    e8876f34:	2068138b          	mula	t2,a6,t1
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8876f38:	026836b3          	mulhu	a3,a6,t1
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8876f3c:	0053b2b3          	sltu	t0,t2,t0
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8876f40:	02c7b0b3          	mulhu	ra,a5,a2
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8876f44:	00d08f33          	add	t5,ra,a3
    e8876f48:	809e                	mv	ra,t2
    e8876f4a:	20e5908b          	mula	ra,a1,a4
    e8876f4e:	92fa                	add	t0,t0,t5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8876f50:	02e5b6b3          	mulhu	a3,a1,a4
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8876f54:	0070b3b3          	sltu	t2,ra,t2
    e8876f58:	92b6                	add	t0,t0,a3
    e8876f5a:	929e                	add	t0,t0,t2
    e8876f5c:	8386                	mv	t2,ra
    e8876f5e:	21d5138b          	mula	t2,a0,t4
    e8876f62:	03d536b3          	mulhu	a3,a0,t4
    e8876f66:	0013b0b3          	sltu	ra,t2,ra
    e8876f6a:	92b6                	add	t0,t0,a3
    e8876f6c:	869e                	mv	a3,t2
    e8876f6e:	21f8968b          	mula	a3,a7,t6
    e8876f72:	9286                	add	t0,t0,ra
    e8876f74:	03f8b0b3          	mulhu	ra,a7,t6
    e8876f78:	0076b3b3          	sltu	t2,a3,t2
    e8876f7c:	8fb6                	mv	t6,a3
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8876f7e:	6686                	ld	a3,64(sp)
    e8876f80:	00d69f13          	slli	t5,a3,0xd
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8876f84:	9286                	add	t0,t0,ra
    e8876f86:	9396                	add	t2,t2,t0
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8876f88:	033e5293          	srli	t0,t3,0x33
    e8876f8c:	005f62b3          	or	t0,t5,t0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8876f90:	005f80b3          	add	ra,t6,t0
    e8876f94:	01f0bfb3          	sltu	t6,ra,t6
    e8876f98:	007f86b3          	add	a3,t6,t2
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8876f9c:	02a78fb3          	mul	t6,a5,a0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8876fa0:	8e36                	mv	t3,a3
    e8876fa2:	c800b68b          	extu	a3,ra,50,0
    e8876fa6:	e0b6                	sd	a3,64(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8876fa8:	6f02                	ld	t5,0(sp)
    e8876faa:	6682                	ld	a3,0(sp)
    e8876fac:	82fe                	mv	t0,t6
    e8876fae:	21e8128b          	mula	t0,a6,t5
    e8876fb2:	02a7b3b3          	mulhu	t2,a5,a0
    e8876fb6:	01f2bfb3          	sltu	t6,t0,t6
    e8876fba:	02d836b3          	mulhu	a3,a6,a3
    e8876fbe:	00d38f33          	add	t5,t2,a3
    e8876fc2:	8396                	mv	t2,t0
    e8876fc4:	2065938b          	mula	t2,a1,t1
    e8876fc8:	9ffa                	add	t6,t6,t5
    e8876fca:	0265b6b3          	mulhu	a3,a1,t1
    e8876fce:	0053b2b3          	sltu	t0,t2,t0
    e8876fd2:	9fb6                	add	t6,t6,a3
    e8876fd4:	9f96                	add	t6,t6,t0
    e8876fd6:	829e                	mv	t0,t2
    e8876fd8:	20c7128b          	mula	t0,a4,a2
    e8876fdc:	02c736b3          	mulhu	a3,a4,a2
    e8876fe0:	0072b3b3          	sltu	t2,t0,t2
    e8876fe4:	9fb6                	add	t6,t6,a3
  t[3] += ((uint128_t) r4) * s4;
    e8876fe6:	8696                	mv	a3,t0
    e8876fe8:	21d8968b          	mula	a3,a7,t4
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8876fec:	9f9e                	add	t6,t6,t2
  t[3] += ((uint128_t) r4) * s4;
    e8876fee:	03d8b3b3          	mulhu	t2,a7,t4
    e8876ff2:	0056b2b3          	sltu	t0,a3,t0
    e8876ff6:	8eb6                	mv	t4,a3
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8876ff8:	66c2                	ld	a3,16(sp)
  t[3] += ((uint128_t) r4) * s4;
    e8876ffa:	9f9e                	add	t6,t6,t2
    e8876ffc:	01f283b3          	add	t2,t0,t6
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877000:	00de1f93          	slli	t6,t3,0xd
    e8877004:	0330d293          	srli	t0,ra,0x33
    e8877008:	005fe2b3          	or	t0,t6,t0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887700c:	92f6                	add	t0,t0,t4
    e887700e:	01d2beb3          	sltu	t4,t0,t4
    e8877012:	007e8fb3          	add	t6,t4,t2
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8877016:	03178eb3          	mul	t4,a5,a7
    e887701a:	6e42                	ld	t3,16(sp)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887701c:	c802b38b          	extu	t2,t0,50,0
    e8877020:	0fb6                	slli	t6,t6,0xd
    e8877022:	0332d293          	srli	t0,t0,0x33
    e8877026:	005fe2b3          	or	t0,t6,t0
    e887702a:	ec9e                	sd	t2,88(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887702c:	0317b7b3          	mulhu	a5,a5,a7
    e8877030:	02d838b3          	mulhu	a7,a6,a3
    e8877034:	86f6                	mv	a3,t4
    e8877036:	21c8168b          	mula	a3,a6,t3
    e887703a:	97c6                	add	a5,a5,a7
    e887703c:	01d6beb3          	sltu	t4,a3,t4
    e8877040:	97f6                	add	a5,a5,t4
    e8877042:	02a73eb3          	mulhu	t4,a4,a0
    e8877046:	8836                	mv	a6,a3
    e8877048:	20a7168b          	mula	a3,a4,a0
    e887704c:	97f6                	add	a5,a5,t4
    e887704e:	6502                	ld	a0,0(sp)
    e8877050:	0106b833          	sltu	a6,a3,a6
    e8877054:	983e                	add	a6,a6,a5
    e8877056:	6782                	ld	a5,0(sp)
    e8877058:	8736                	mv	a4,a3
    e887705a:	20a5968b          	mula	a3,a1,a0
  memcpy(origxprime, xxprime, sizeof(limb) * 5);
    e887705e:	1b88                	addi	a0,sp,496
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8877060:	02f5b7b3          	mulhu	a5,a1,a5
    e8877064:	00e6b733          	sltu	a4,a3,a4
    e8877068:	983e                	add	a6,a6,a5
    e887706a:	87b6                	mv	a5,a3
    e887706c:	2066178b          	mula	a5,a2,t1
    e8877070:	9742                	add	a4,a4,a6
    e8877072:	02663833          	mulhu	a6,a2,t1
    e8877076:	00d7b5b3          	sltu	a1,a5,a3
    e887707a:	863e                	mv	a2,a5
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887707c:	9796                	add	a5,a5,t0
    e887707e:	00c7b633          	sltu	a2,a5,a2
    e8877082:	c807b28b          	extu	t0,a5,50,0
    e8877086:	93cd                	srli	a5,a5,0x33
    e8877088:	e896                	sd	t0,80(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887708a:	9742                	add	a4,a4,a6
    e887708c:	972e                	add	a4,a4,a1
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887708e:	9732                	add	a4,a4,a2
    e8877090:	0736                	slli	a4,a4,0xd
    e8877092:	8fd9                	or	a5,a5,a4
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877094:	7762                	ld	a4,56(sp)
  memcpy(origxprime, xxprime, sizeof(limb) * 5);
    e8877096:	02800613          	li	a2,40
    e887709a:	0c2c                	addi	a1,sp,536
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887709c:	20f4170b          	mula	a4,s0,a5
    e88770a0:	87ba                	mv	a5,a4
    e88770a2:	c807370b          	extu	a4,a4,50,0
    e88770a6:	fc3a                	sd	a4,56(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88770a8:	7742                	ld	a4,48(sp)
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88770aa:	93cd                	srli	a5,a5,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88770ac:	97ba                	add	a5,a5,a4
  r2 +=   c;
    e88770ae:	6706                	ld	a4,64(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88770b0:	c807b88b          	extu	a7,a5,50,0
    e88770b4:	93cd                	srli	a5,a5,0x33
  r2 +=   c;
    e88770b6:	00e78eb3          	add	t4,a5,a4
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88770ba:	e846                	sd	a7,16(sp)
  r2 +=   c;
    e88770bc:	e076                	sd	t4,0(sp)
  memcpy(origxprime, xxprime, sizeof(limb) * 5);
    e88770be:	2e2050ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  out[1] = in[1] + two54m8 - out[1];
    e88770c2:	767e                	ld	a2,504(sp)
  output[1] += in[1];
    e88770c4:	68c2                	ld	a7,16(sp)
    e88770c6:	22013803          	ld	a6,544(sp)
  output[0] += in[0];
    e88770ca:	7762                	ld	a4,56(sp)
    e88770cc:	21813f83          	ld	t6,536(sp)
  out[1] = in[1] + two54m8 - out[1];
    e88770d0:	964e                	add	a2,a2,s3
  output[1] += in[1];
    e88770d2:	9846                	add	a6,a6,a7
  out[1] = in[1] + two54m8 - out[1];
    e88770d4:	41160633          	sub	a2,a2,a7
  output[4] += in[4];
    e88770d8:	62c6                	ld	t0,80(sp)
    e88770da:	23813e03          	ld	t3,568(sp)
  out[4] = in[4] + two54m8 - out[4];
    e88770de:	21013883          	ld	a7,528(sp)
  output[0] += in[0];
    e88770e2:	9fba                	add	t6,t6,a4
  output[4] += in[4];
    e88770e4:	9e16                	add	t3,t3,t0
    d4 = d419 * 2;
    e88770e6:	02600693          	li	a3,38
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88770ea:	03ff8f33          	mul	t5,t6,t6
  out[4] = in[4] + two54m8 - out[4];
    e88770ee:	98ce                	add	a7,a7,s3
    e88770f0:	405888b3          	sub	a7,a7,t0
  out[0] = in[0] + two54m152 - out[0];
    e88770f4:	67e2                	ld	a5,24(sp)
    e88770f6:	735e                	ld	t1,496(sp)
  output[2] += in[2];
    e88770f8:	6e82                	ld	t4,0(sp)
    e88770fa:	22813583          	ld	a1,552(sp)
  out[0] = in[0] + two54m152 - out[0];
    e88770fe:	933e                	add	t1,t1,a5
  out[2] = in[2] + two54m8 - out[2];
    e8877100:	20013783          	ld	a5,512(sp)
  output[2] += in[2];
    e8877104:	95f6                	add	a1,a1,t4
    d4 = d419 * 2;
    e8877106:	02de02b3          	mul	t0,t3,a3
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887710a:	80fa                	mv	ra,t5
  out[2] = in[2] + two54m8 - out[2];
    e887710c:	97ce                	add	a5,a5,s3
    e887710e:	41d787b3          	sub	a5,a5,t4
    d0 = r0 * 2;
    e8877112:	001f9e93          	slli	t4,t6,0x1
  output[3] += in[3];
    e8877116:	63e6                	ld	t2,88(sp)
    e8877118:	23013503          	ld	a0,560(sp)
  out[0] = in[0] + two54m152 - out[0];
    e887711c:	40e30333          	sub	t1,t1,a4
  out[3] = in[3] + two54m8 - out[3];
    e8877120:	20813703          	ld	a4,520(sp)
  output[3] += in[3];
    e8877124:	951e                	add	a0,a0,t2
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8877126:	2102908b          	mula	ra,t0,a6
  out[3] = in[3] + two54m8 - out[3];
    e887712a:	974e                	add	a4,a4,s3
    e887712c:	40770733          	sub	a4,a4,t2
    d1 = r1 * 2;
    e8877130:	00181393          	slli	t2,a6,0x1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8877134:	01e0bf33          	sltu	t5,ra,t5
    e8877138:	e07a                	sd	t5,0(sp)
    e887713a:	03ffbfb3          	mulhu	t6,t6,t6
    e887713e:	0302bf33          	mulhu	t5,t0,a6
    e8877142:	9ffa                	add	t6,t6,t5
    e8877144:	6f02                	ld	t5,0(sp)
    e8877146:	9f7e                	add	t5,t5,t6
    d2 = r2 * 2 * 19;
    e8877148:	02d58fb3          	mul	t6,a1,a3
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887714c:	e87a                	sd	t5,16(sp)
    e887714e:	02afbf33          	mulhu	t5,t6,a0
    e8877152:	f87a                	sd	t5,48(sp)
    e8877154:	8f06                	mv	t5,ra
    e8877156:	20af9f0b          	mula	t5,t6,a0
    e887715a:	7fc2                	ld	t6,48(sp)
    e887715c:	e07a                	sd	t5,0(sp)
    e887715e:	001f30b3          	sltu	ra,t5,ra
    e8877162:	6f42                	ld	t5,16(sp)
    e8877164:	9ffa                	add	t6,t6,t5
    e8877166:	01f08f33          	add	t5,ra,t6
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887716a:	02850fb3          	mul	t6,a0,s0
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887716e:	fc7a                	sd	t5,56(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877170:	6f02                	ld	t5,0(sp)
    e8877172:	c80f3f0b          	extu	t5,t5,50,0
    e8877176:	f87a                	sd	t5,48(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8877178:	02af8f33          	mul	t5,t6,a0
    e887717c:	80fa                	mv	ra,t5
    e887717e:	21d8108b          	mula	ra,a6,t4
    e8877182:	01e0bf33          	sltu	t5,ra,t5
    e8877186:	e87a                	sd	t5,16(sp)
    e8877188:	02afbfb3          	mulhu	t6,t6,a0
    e887718c:	03d83f33          	mulhu	t5,a6,t4
    e8877190:	9ffa                	add	t6,t6,t5
    e8877192:	6f42                	ld	t5,16(sp)
    e8877194:	9ffa                	add	t6,t6,t5
    e8877196:	8f06                	mv	t5,ra
    e8877198:	20b29f0b          	mula	t5,t0,a1
    e887719c:	001f30b3          	sltu	ra,t5,ra
    e88771a0:	e87a                	sd	t5,16(sp)
    e88771a2:	02b2bf33          	mulhu	t5,t0,a1
    e88771a6:	9ffa                	add	t6,t6,t5
    e88771a8:	01f08f33          	add	t5,ra,t6
    e88771ac:	e0fa                	sd	t5,64(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88771ae:	7f62                	ld	t5,56(sp)
    e88771b0:	00df1093          	slli	ra,t5,0xd
    e88771b4:	6f02                	ld	t5,0(sp)
    e88771b6:	033f5f93          	srli	t6,t5,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88771ba:	6f42                	ld	t5,16(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88771bc:	01f0efb3          	or	t6,ra,t6
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88771c0:	01ff00b3          	add	ra,t5,t6
    e88771c4:	01e0bfb3          	sltu	t6,ra,t5
    e88771c8:	6f06                	ld	t5,64(sp)
    e88771ca:	9f7e                	add	t5,t5,t6
    e88771cc:	fc7a                	sd	t5,56(sp)
    e88771ce:	c800bf0b          	extu	t5,ra,50,0
    e88771d2:	e87a                	sd	t5,16(sp)
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88771d4:	03080f33          	mul	t5,a6,a6
    e88771d8:	e07a                	sd	t5,0(sp)
    e88771da:	02a2bf33          	mulhu	t5,t0,a0
    e88771de:	6f82                	ld	t6,0(sp)
    e88771e0:	20a29f8b          	mula	t6,t0,a0
    e88771e4:	e0fa                	sd	t5,64(sp)
    e88771e6:	6f02                	ld	t5,0(sp)
    e88771e8:	03083833          	mulhu	a6,a6,a6
    e88771ec:	01efb2b3          	sltu	t0,t6,t5
    e88771f0:	6f06                	ld	t5,64(sp)
    e88771f2:	987a                	add	a6,a6,t5
    e88771f4:	9816                	add	a6,a6,t0
    e88771f6:	82fe                	mv	t0,t6
    e88771f8:	20be928b          	mula	t0,t4,a1
    e88771fc:	02bebf33          	mulhu	t5,t4,a1
    e8877200:	01f2bfb3          	sltu	t6,t0,t6
    e8877204:	987a                	add	a6,a6,t5
    e8877206:	987e                	add	a6,a6,t6
    e8877208:	8f42                	mv	t5,a6
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887720a:	7862                	ld	a6,56(sp)
    e887720c:	0330df93          	srli	t6,ra,0x33
    e8877210:	0836                	slli	a6,a6,0xd
    e8877212:	01f86fb3          	or	t6,a6,t6
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877216:	01f280b3          	add	ra,t0,t6
    e887721a:	0050b833          	sltu	a6,ra,t0
    e887721e:	987a                	add	a6,a6,t5
    e8877220:	fc42                	sd	a6,56(sp)
    e8877222:	c800b80b          	extu	a6,ra,50,0
    e8877226:	e042                	sd	a6,0(sp)
    d419 = r4 * 19;
    e8877228:	028e0833          	mul	a6,t3,s0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887722c:	03c802b3          	mul	t0,a6,t3
    e8877230:	8f96                	mv	t6,t0
    e8877232:	21d51f8b          	mula	t6,a0,t4
    e8877236:	03d53f33          	mulhu	t5,a0,t4
    e887723a:	005fb2b3          	sltu	t0,t6,t0
    e887723e:	03c83833          	mulhu	a6,a6,t3
    e8877242:	987a                	add	a6,a6,t5
    e8877244:	9816                	add	a6,a6,t0
    e8877246:	82fe                	mv	t0,t6
    e8877248:	2075928b          	mula	t0,a1,t2
    e887724c:	0275bf33          	mulhu	t5,a1,t2
    e8877250:	01f2bfb3          	sltu	t6,t0,t6
    e8877254:	987a                	add	a6,a6,t5
    e8877256:	987e                	add	a6,a6,t6
    e8877258:	8f42                	mv	t5,a6
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887725a:	7862                	ld	a6,56(sp)
    e887725c:	0330df93          	srli	t6,ra,0x33
    e8877260:	0836                	slli	a6,a6,0xd
    e8877262:	01f86fb3          	or	t6,a6,t6
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877266:	9f96                	add	t6,t6,t0
    e8877268:	005fb833          	sltu	a6,t6,t0
    e887726c:	01e802b3          	add	t0,a6,t5
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877270:	02750833          	mul	a6,a0,t2
    e8877274:	8f42                	mv	t5,a6
    e8877276:	20b59f0b          	mula	t5,a1,a1
    e887727a:	02753533          	mulhu	a0,a0,t2
    e887727e:	010f3833          	sltu	a6,t5,a6
    e8877282:	02b5b3b3          	mulhu	t2,a1,a1
    e8877286:	951e                	add	a0,a0,t2
    e8877288:	9542                	add	a0,a0,a6
    e887728a:	03ceb3b3          	mulhu	t2,t4,t3
    e887728e:	887a                	mv	a6,t5
    e8877290:	21ce980b          	mula	a6,t4,t3
    e8877294:	951e                	add	a0,a0,t2
    e8877296:	01e835b3          	sltu	a1,a6,t5
    e887729a:	8e42                	mv	t3,a6
    e887729c:	95aa                	add	a1,a1,a0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887729e:	00d29813          	slli	a6,t0,0xd
    e88772a2:	033fd513          	srli	a0,t6,0x33
    e88772a6:	00a86533          	or	a0,a6,a0
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88772aa:	9572                	add	a0,a0,t3
    e88772ac:	01c53e33          	sltu	t3,a0,t3
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88772b0:	7842                	ld	a6,48(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88772b2:	9e2e                	add	t3,t3,a1
    e88772b4:	0e36                	slli	t3,t3,0xd
    e88772b6:	03355593          	srli	a1,a0,0x33
    e88772ba:	00be65b3          	or	a1,t3,a1
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88772be:	20b4180b          	mula	a6,s0,a1
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88772c2:	6e42                	ld	t3,16(sp)
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88772c4:	c80fbf8b          	extu	t6,t6,50,0
  output[3] = r3;
    e88772c8:	01fb3c23          	sd	t6,24(s6)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88772cc:	c805350b          	extu	a0,a0,50,0
  output[4] = r4;
    e88772d0:	02ab3023          	sd	a0,32(s6)
    d1 = r1 * 2;
    e88772d4:	00161513          	slli	a0,a2,0x1
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88772d8:	03385593          	srli	a1,a6,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88772dc:	9e2e                	add	t3,t3,a1
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88772de:	c808358b          	extu	a1,a6,50,0
  output[0] = r0;
    e88772e2:	00bb3023          	sd	a1,0(s6)
    r2 +=   c;
    e88772e6:	6802                	ld	a6,0(sp)
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88772e8:	c80e358b          	extu	a1,t3,50,0
  output[1] = r1;
    e88772ec:	00bb3423          	sd	a1,8(s6)
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88772f0:	033e5593          	srli	a1,t3,0x33
    r2 +=   c;
    e88772f4:	95c2                	add	a1,a1,a6
  output[2] = r2;
    e88772f6:	00bb3823          	sd	a1,16(s6)
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88772fa:	026305b3          	mul	a1,t1,t1
    d0 = r0 * 2;
    e88772fe:	00131813          	slli	a6,t1,0x1
    d4 = d419 * 2;
    e8877302:	02d88e33          	mul	t3,a7,a3
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8877306:	8eae                	mv	t4,a1
    e8877308:	20ce1e8b          	mula	t4,t3,a2
    e887730c:	02ce3fb3          	mulhu	t6,t3,a2
    e8877310:	00beb5b3          	sltu	a1,t4,a1
    e8877314:	8f76                	mv	t5,t4
    e8877316:	02633333          	mulhu	t1,t1,t1
    e887731a:	937e                	add	t1,t1,t6
    e887731c:	932e                	add	t1,t1,a1
    d2 = r2 * 2 * 19;
    e887731e:	02d785b3          	mul	a1,a5,a3
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8877322:	02e5bfb3          	mulhu	t6,a1,a4
    e8877326:	20e59f0b          	mula	t5,a1,a4
    e887732a:	937e                	add	t1,t1,t6
    e887732c:	01df3eb3          	sltu	t4,t5,t4
    e8877330:	006e80b3          	add	ra,t4,t1
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877334:	c80f330b          	extu	t1,t5,50,0
    e8877338:	869a                	mv	a3,t1
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887733a:	02870333          	mul	t1,a4,s0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887733e:	033f5593          	srli	a1,t5,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8877342:	02e30fb3          	mul	t6,t1,a4
    e8877346:	030632b3          	mulhu	t0,a2,a6
    e887734a:	8efe                	mv	t4,t6
    e887734c:	02e33333          	mulhu	t1,t1,a4
    e8877350:	21061e8b          	mula	t4,a2,a6
    e8877354:	9316                	add	t1,t1,t0
    e8877356:	01febfb3          	sltu	t6,t4,t6
    e887735a:	9f9a                	add	t6,t6,t1
    e887735c:	8376                	mv	t1,t4
    e887735e:	20fe130b          	mula	t1,t3,a5
    e8877362:	02fe32b3          	mulhu	t0,t3,a5
    e8877366:	01d333b3          	sltu	t2,t1,t4
    e887736a:	005f8eb3          	add	t4,t6,t0
    e887736e:	93f6                	add	t2,t2,t4
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877370:	00d09e93          	slli	t4,ra,0xd
    e8877374:	00bee5b3          	or	a1,t4,a1
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877378:	959a                	add	a1,a1,t1
    e887737a:	0065b333          	sltu	t1,a1,t1
    e887737e:	939a                	add	t2,t2,t1
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8877380:	02c60333          	mul	t1,a2,a2
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877384:	c805b08b          	extu	ra,a1,50,0
    e8877388:	03b6                	slli	t2,t2,0xd
    e887738a:	91cd                	srli	a1,a1,0x33
    e887738c:	00b3e5b3          	or	a1,t2,a1
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8877390:	8f1a                	mv	t5,t1
    e8877392:	20ee1f0b          	mula	t5,t3,a4
    e8877396:	02ee3eb3          	mulhu	t4,t3,a4
    e887739a:	006f3333          	sltu	t1,t5,t1
    e887739e:	02c63633          	mulhu	a2,a2,a2
    e88773a2:	9676                	add	a2,a2,t4
    e88773a4:	961a                	add	a2,a2,t1
    e88773a6:	837a                	mv	t1,t5
    e88773a8:	20f8130b          	mula	t1,a6,a5
    e88773ac:	02f83eb3          	mulhu	t4,a6,a5
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88773b0:	959a                	add	a1,a1,t1
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88773b2:	01e33e33          	sltu	t3,t1,t5
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88773b6:	0065b333          	sltu	t1,a1,t1
    e88773ba:	c805b38b          	extu	t2,a1,50,0
    e88773be:	91cd                	srli	a1,a1,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88773c0:	9676                	add	a2,a2,t4
    e88773c2:	9e32                	add	t3,t3,a2
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88773c4:	01c302b3          	add	t0,t1,t3
    d419 = r4 * 19;
    e88773c8:	02888333          	mul	t1,a7,s0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88773cc:	03130e33          	mul	t3,t1,a7
    e88773d0:	03073eb3          	mulhu	t4,a4,a6
    e88773d4:	8672                	mv	a2,t3
    e88773d6:	03133333          	mulhu	t1,t1,a7
    e88773da:	2107160b          	mula	a2,a4,a6
    e88773de:	9376                	add	t1,t1,t4
    e88773e0:	01c63e33          	sltu	t3,a2,t3
    e88773e4:	9e1a                	add	t3,t3,t1
    e88773e6:	8332                	mv	t1,a2
    e88773e8:	20a7930b          	mula	t1,a5,a0
    e88773ec:	02a7beb3          	mulhu	t4,a5,a0
    e88773f0:	00c33fb3          	sltu	t6,t1,a2
    e88773f4:	01de0633          	add	a2,t3,t4
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88773f8:	00d29e13          	slli	t3,t0,0xd
    e88773fc:	00be65b3          	or	a1,t3,a1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8877400:	9fb2                	add	t6,t6,a2
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877402:	00b30633          	add	a2,t1,a1
    e8877406:	00663333          	sltu	t1,a2,t1
    e887740a:	9f9a                	add	t6,t6,t1
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887740c:	02a70333          	mul	t1,a4,a0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877410:	c806358b          	extu	a1,a2,50,0
    e8877414:	0fb6                	slli	t6,t6,0xd
    e8877416:	924d                	srli	a2,a2,0x33
    e8877418:	00cfe633          	or	a2,t6,a2
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887741c:	02a73733          	mulhu	a4,a4,a0
    e8877420:	8e1a                	mv	t3,t1
    e8877422:	02f7b533          	mulhu	a0,a5,a5
    e8877426:	20f79e0b          	mula	t3,a5,a5
    e887742a:	972a                	add	a4,a4,a0
    e887742c:	006e3333          	sltu	t1,t3,t1
    e8877430:	8572                	mv	a0,t3
    e8877432:	2118150b          	mula	a0,a6,a7
    e8877436:	933a                	add	t1,t1,a4
    e8877438:	03183733          	mulhu	a4,a6,a7
    e887743c:	01c537b3          	sltu	a5,a0,t3
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877440:	962a                	add	a2,a2,a0
    e8877442:	00a63833          	sltu	a6,a2,a0
    e8877446:	c806350b          	extu	a0,a2,50,0
    e887744a:	924d                	srli	a2,a2,0x33
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887744c:	933a                	add	t1,t1,a4
    e887744e:	933e                	add	t1,t1,a5
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877450:	9342                	add	t1,t1,a6
    e8877452:	0336                	slli	t1,t1,0xd
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877454:	87b6                	mv	a5,a3
  r0 = in[0];
    e8877456:	76e6                	ld	a3,120(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877458:	00c36633          	or	a2,t1,a2
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887745c:	20c4178b          	mula	a5,s0,a2
  r1 = in[1];
    e8877460:	f916c80b          	ldd	a6,a7,(a3),0,4
  r2 = in[2];
    e8877464:	0106be03          	ld	t3,16(a3) # 2ad7d010 <memcmp-0xbda82ff0>
  r4 *= 19;
    e8877468:	0206b303          	ld	t1,32(a3)
  r3 *= 19;
    e887746c:	0186be83          	ld	t4,24(a3)
  r1 *= 19;
    e8877470:	028882b3          	mul	t0,a7,s0
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877474:	c807b60b          	extu	a2,a5,50,0
    e8877478:	93cd                	srli	a5,a5,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887747a:	90be                	add	ra,ra,a5
    e887747c:	c800b70b          	extu	a4,ra,50,0
    e8877480:	0330d093          	srli	ra,ra,0x33
    r2 +=   c;
    e8877484:	007087b3          	add	a5,ra,t2
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8877488:	02a280b3          	mul	ra,t0,a0
  r2 *= 19;
    e887748c:	028e0fb3          	mul	t6,t3,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8877490:	8386                	mv	t2,ra
    e8877492:	21f5938b          	mula	t2,a1,t6
    e8877496:	03f5bf33          	mulhu	t5,a1,t6
    e887749a:	0013b0b3          	sltu	ra,t2,ra
    e887749e:	02a2b2b3          	mulhu	t0,t0,a0
    e88774a2:	92fa                	add	t0,t0,t5
    e88774a4:	9286                	add	t0,t0,ra
    e88774a6:	809e                	mv	ra,t2
    e88774a8:	20c8108b          	mula	ra,a6,a2
  t[0]  =  ((uint128_t) r0) * s0;
    e88774ac:	02c83f33          	mulhu	t5,a6,a2
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88774b0:	0070b3b3          	sltu	t2,ra,t2
  r4 *= 19;
    e88774b4:	02830333          	mul	t1,t1,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88774b8:	92fa                	add	t0,t0,t5
    e88774ba:	929e                	add	t0,t0,t2
    e88774bc:	8386                	mv	t2,ra
    e88774be:	2067138b          	mula	t2,a4,t1
    e88774c2:	02673f33          	mulhu	t5,a4,t1
    e88774c6:	0013b0b3          	sltu	ra,t2,ra
  r3 *= 19;
    e88774ca:	028e8eb3          	mul	t4,t4,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88774ce:	92fa                	add	t0,t0,t5
    e88774d0:	9286                	add	t0,t0,ra
    e88774d2:	809e                	mv	ra,t2
    e88774d4:	21d7908b          	mula	ra,a5,t4
    e88774d8:	03d7bf33          	mulhu	t5,a5,t4
    e88774dc:	0070b3b3          	sltu	t2,ra,t2
    e88774e0:	92fa                	add	t0,t0,t5
    e88774e2:	00538f33          	add	t5,t2,t0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e88774e6:	03f503b3          	mul	t2,a0,t6
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88774ea:	e87a                	sd	t5,16(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88774ec:	c800bf0b          	extu	t5,ra,50,0
    e88774f0:	e07a                	sd	t5,0(sp)
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e88774f2:	829e                	mv	t0,t2
    e88774f4:	21d5928b          	mula	t0,a1,t4
    e88774f8:	03d5bf33          	mulhu	t5,a1,t4
    e88774fc:	0072b3b3          	sltu	t2,t0,t2
    e8877500:	03f53fb3          	mulhu	t6,a0,t6
    e8877504:	9ffa                	add	t6,t6,t5
    e8877506:	9f9e                	add	t6,t6,t2
    e8877508:	8396                	mv	t2,t0
    e887750a:	2116138b          	mula	t2,a2,a7
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887750e:	03163f33          	mulhu	t5,a2,a7
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8877512:	0053b2b3          	sltu	t0,t2,t0
    e8877516:	9ffa                	add	t6,t6,t5
    e8877518:	9f96                	add	t6,t6,t0
    e887751a:	829e                	mv	t0,t2
    e887751c:	20e8128b          	mula	t0,a6,a4
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8877520:	02e83f33          	mulhu	t5,a6,a4
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8877524:	0072b3b3          	sltu	t2,t0,t2
    e8877528:	9ffa                	add	t6,t6,t5
    e887752a:	0267bf33          	mulhu	t5,a5,t1
    e887752e:	9f9e                	add	t6,t6,t2
    e8877530:	8396                	mv	t2,t0
    e8877532:	2067938b          	mula	t2,a5,t1
    e8877536:	9ffa                	add	t6,t6,t5
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877538:	6f42                	ld	t5,16(sp)
    e887753a:	0f36                	slli	t5,t5,0xd
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887753c:	0053b2b3          	sltu	t0,t2,t0
    e8877540:	92fe                	add	t0,t0,t6
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877542:	0330df93          	srli	t6,ra,0x33
    e8877546:	01ff6fb3          	or	t6,t5,t6
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887754a:	01f380b3          	add	ra,t2,t6
    e887754e:	0070bfb3          	sltu	t6,ra,t2
    e8877552:	005f8f33          	add	t5,t6,t0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877556:	026582b3          	mul	t0,a1,t1
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887755a:	f87a                	sd	t5,48(sp)
    e887755c:	c800bf0b          	extu	t5,ra,50,0
    e8877560:	e87a                	sd	t5,16(sp)
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877562:	8f96                	mv	t6,t0
    e8877564:	21d51f8b          	mula	t6,a0,t4
    e8877568:	0265b3b3          	mulhu	t2,a1,t1
    e887756c:	005fb2b3          	sltu	t0,t6,t0
    e8877570:	03d53f33          	mulhu	t5,a0,t4
    e8877574:	01e38eb3          	add	t4,t2,t5
    e8877578:	9e96                	add	t4,t4,t0
    e887757a:	82fe                	mv	t0,t6
    e887757c:	21c6128b          	mula	t0,a2,t3
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8877580:	03c633b3          	mulhu	t2,a2,t3
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877584:	01f2bfb3          	sltu	t6,t0,t6
    e8877588:	9e9e                	add	t4,t4,t2
    e887758a:	9efe                	add	t4,t4,t6
    e887758c:	8f96                	mv	t6,t0
    e887758e:	21171f8b          	mula	t6,a4,a7
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8877592:	031733b3          	mulhu	t2,a4,a7
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877596:	005fb2b3          	sltu	t0,t6,t0
    e887759a:	9e9e                	add	t4,t4,t2
    e887759c:	9e96                	add	t4,t4,t0
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887759e:	02f833b3          	mulhu	t2,a6,a5
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e88775a2:	82fe                	mv	t0,t6
    e88775a4:	20f8128b          	mula	t0,a6,a5
    e88775a8:	9e9e                	add	t4,t4,t2
    e88775aa:	01f2bfb3          	sltu	t6,t0,t6
    e88775ae:	01df83b3          	add	t2,t6,t4
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88775b2:	7ec2                	ld	t4,48(sp)
    e88775b4:	0330df93          	srli	t6,ra,0x33
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88775b8:	0186bf03          	ld	t5,24(a3)
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88775bc:	0eb6                	slli	t4,t4,0xd
    e88775be:	01feefb3          	or	t6,t4,t6
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88775c2:	01f280b3          	add	ra,t0,t6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88775c6:	02b80fb3          	mul	t6,a6,a1
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88775ca:	0050b2b3          	sltu	t0,ra,t0
    e88775ce:	00728eb3          	add	t4,t0,t2
    e88775d2:	fc76                	sd	t4,56(sp)
    e88775d4:	c800be8b          	extu	t4,ra,50,0
    e88775d8:	f876                	sd	t4,48(sp)
    e88775da:	0330d093          	srli	ra,ra,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88775de:	ecb6                	sd	a3,88(sp)
  t[3] += ((uint128_t) r4) * s4;
    e88775e0:	8efe                	mv	t4,t6
    e88775e2:	20651e8b          	mula	t4,a0,t1
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88775e6:	02b832b3          	mulhu	t0,a6,a1
  t[3] += ((uint128_t) r4) * s4;
    e88775ea:	01febfb3          	sltu	t6,t4,t6
    e88775ee:	026533b3          	mulhu	t2,a0,t1
    e88775f2:	00728333          	add	t1,t0,t2
    e88775f6:	937e                	add	t1,t1,t6
    e88775f8:	8ff6                	mv	t6,t4
    e88775fa:	21e61f8b          	mula	t6,a2,t5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88775fe:	03e632b3          	mulhu	t0,a2,t5
  t[3] += ((uint128_t) r4) * s4;
    e8877602:	01dfb3b3          	sltu	t2,t6,t4
    e8877606:	00530eb3          	add	t4,t1,t0
    e887760a:	837e                	mv	t1,t6
    e887760c:	21c7130b          	mula	t1,a4,t3
    e8877610:	9e9e                	add	t4,t4,t2
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877612:	03c732b3          	mulhu	t0,a4,t3
  t[3] += ((uint128_t) r4) * s4;
    e8877616:	01f33fb3          	sltu	t6,t1,t6
    e887761a:	9e96                	add	t4,t4,t0
    e887761c:	9efe                	add	t4,t4,t6
    e887761e:	829a                	mv	t0,t1
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877620:	02f8bfb3          	mulhu	t6,a7,a5
  t[3] += ((uint128_t) r4) * s4;
    e8877624:	20f8928b          	mula	t0,a7,a5
    e8877628:	9efe                	add	t4,t4,t6
    e887762a:	0062b333          	sltu	t1,t0,t1
    e887762e:	9376                	add	t1,t1,t4
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877630:	7ee2                	ld	t4,56(sp)
    e8877632:	00de9393          	slli	t2,t4,0xd
    e8877636:	0013e0b3          	or	ra,t2,ra
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887763a:	9096                	add	ra,ra,t0
    e887763c:	0050b2b3          	sltu	t0,ra,t0
    e8877640:	929a                	add	t0,t0,t1
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8877642:	02a80333          	mul	t1,a6,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877646:	02b6                	slli	t0,t0,0xd
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8877648:	02a83533          	mulhu	a0,a6,a0
    e887764c:	8e9a                	mv	t4,t1
    e887764e:	02b8b833          	mulhu	a6,a7,a1
    e8877652:	20b89e8b          	mula	t4,a7,a1
    e8877656:	9542                	add	a0,a0,a6
    e8877658:	0206b883          	ld	a7,32(a3)
    e887765c:	006eb333          	sltu	t1,t4,t1
    e8877660:	932a                	add	t1,t1,a0
    e8877662:	7288                	ld	a0,32(a3)
    e8877664:	8876                	mv	a6,t4
    e8877666:	2116180b          	mula	a6,a2,a7
    d4 = d419 * 2;
    e887766a:	02600693          	li	a3,38
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887766e:	02a63533          	mulhu	a0,a2,a0
    e8877672:	01d835b3          	sltu	a1,a6,t4
    e8877676:	8642                	mv	a2,a6
    e8877678:	932a                	add	t1,t1,a0
    e887767a:	8542                	mv	a0,a6
    e887767c:	21e7150b          	mula	a0,a4,t5
    e8877680:	932e                	add	t1,t1,a1
  r4 = in[4];
    e8877682:	0204b803          	ld	a6,32(s1)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8877686:	03e735b3          	mulhu	a1,a4,t5
    e887768a:	00c53633          	sltu	a2,a0,a2
    e887768e:	872a                	mv	a4,a0
    e8877690:	21c7950b          	mula	a0,a5,t3
    e8877694:	932e                	add	t1,t1,a1
    e8877696:	961a                	add	a2,a2,t1
    e8877698:	03c7b5b3          	mulhu	a1,a5,t3
    e887769c:	00e53733          	sltu	a4,a0,a4
    e88776a0:	87aa                	mv	a5,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88776a2:	0330d513          	srli	a0,ra,0x33
    e88776a6:	00a2e533          	or	a0,t0,a0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88776aa:	953e                	add	a0,a0,a5
    e88776ac:	00f537b3          	sltu	a5,a0,a5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88776b0:	c800b08b          	extu	ra,ra,50,0
  output[3] = r3;
    e88776b4:	001dbc23          	sd	ra,24(s11) # fffffffffffa4018 <__DRAM0_INF_BASE+0xfffffffefffb4018>
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88776b8:	962e                	add	a2,a2,a1
    e88776ba:	9732                	add	a4,a4,a2
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88776bc:	973e                	add	a4,a4,a5
    e88776be:	0736                	slli	a4,a4,0xd
    e88776c0:	03355793          	srli	a5,a0,0x33
    e88776c4:	8fd9                	or	a5,a5,a4
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88776c6:	6702                	ld	a4,0(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88776c8:	6642                	ld	a2,16(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88776ca:	c805350b          	extu	a0,a0,50,0
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88776ce:	20f4170b          	mula	a4,s0,a5
  output[4] = r4;
    e88776d2:	02adb023          	sd	a0,32(s11)
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88776d6:	03375793          	srli	a5,a4,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88776da:	97b2                	add	a5,a5,a2
  r3 = in[3];
    e88776dc:	faa4c60b          	ldd	a2,a0,(s1),1,4
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88776e0:	c807370b          	extu	a4,a4,50,0
    d4 = d419 * 2;
    e88776e4:	02d808b3          	mul	a7,a6,a3
  output[0] = r0;
    e88776e8:	00edb023          	sd	a4,0(s11)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88776ec:	c807b70b          	extu	a4,a5,50,0
  output[1] = r1;
    e88776f0:	00edb423          	sd	a4,8(s11)
  r2 +=   c;
    e88776f4:	7742                	ld	a4,48(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88776f6:	93cd                	srli	a5,a5,0x33
  r2 +=   c;
    e88776f8:	97ba                	add	a5,a5,a4
  output[2] = r2;
    e88776fa:	00fdb823          	sd	a5,16(s11)
  r1 = in[1];
    e88776fe:	f8b4c78b          	ldd	a5,a1,(s1),0,4
    d2 = r2 * 2 * 19;
    e8877702:	02d60eb3          	mul	t4,a2,a3
    d0 = r0 * 2;
    e8877706:	00179713          	slli	a4,a5,0x1
    d1 = r1 * 2;
    e887770a:	00159e13          	slli	t3,a1,0x1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887770e:	02ae8fb3          	mul	t6,t4,a0
    e8877712:	837e                	mv	t1,t6
    e8877714:	20b8930b          	mula	t1,a7,a1
    e8877718:	02b8b2b3          	mulhu	t0,a7,a1
    e887771c:	01f33fb3          	sltu	t6,t1,t6
    e8877720:	8f1a                	mv	t5,t1
    e8877722:	02aebeb3          	mulhu	t4,t4,a0
    e8877726:	9e96                	add	t4,t4,t0
    e8877728:	9efe                	add	t4,t4,t6
    e887772a:	02f7bfb3          	mulhu	t6,a5,a5
    e887772e:	20f79f0b          	mula	t5,a5,a5
    e8877732:	9efe                	add	t4,t4,t6
    e8877734:	006f3333          	sltu	t1,t5,t1
    e8877738:	01d300b3          	add	ra,t1,t4
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887773c:	02e58eb3          	mul	t4,a1,a4
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877740:	c80f330b          	extu	t1,t5,50,0
    e8877744:	e01a                	sd	t1,0(sp)
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8877746:	87fa                	mv	a5,t5
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877748:	93cd                	srli	a5,a5,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887774a:	8ff6                	mv	t6,t4
    e887774c:	20c89f8b          	mula	t6,a7,a2
    e8877750:	02e5b333          	mulhu	t1,a1,a4
    e8877754:	01dfb3b3          	sltu	t2,t6,t4
    e8877758:	8f7e                	mv	t5,t6
    e887775a:	02c8b2b3          	mulhu	t0,a7,a2
    e887775e:	00530eb3          	add	t4,t1,t0
    e8877762:	02850333          	mul	t1,a0,s0
    e8877766:	9e9e                	add	t4,t4,t2
    e8877768:	02a332b3          	mulhu	t0,t1,a0
    e887776c:	20a31f0b          	mula	t5,t1,a0
    e8877770:	9e96                	add	t4,t4,t0
    e8877772:	01ff3fb3          	sltu	t6,t5,t6
    e8877776:	9ff6                	add	t6,t6,t4
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877778:	00d09e93          	slli	t4,ra,0xd
    e887777c:	00fee7b3          	or	a5,t4,a5
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877780:	97fa                	add	a5,a5,t5
    e8877782:	01e7b333          	sltu	t1,a5,t5
    e8877786:	01f303b3          	add	t2,t1,t6
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887778a:	02c70333          	mul	t1,a4,a2
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887778e:	c807b08b          	extu	ra,a5,50,0
    e8877792:	93cd                	srli	a5,a5,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8877794:	8f1a                	mv	t5,t1
    e8877796:	02c73eb3          	mulhu	t4,a4,a2
    e887779a:	02a8bfb3          	mulhu	t6,a7,a0
    e887779e:	20a89f0b          	mula	t5,a7,a0
    e88777a2:	006f32b3          	sltu	t0,t5,t1
    e88777a6:	88fa                	mv	a7,t5
    e88777a8:	01fe8333          	add	t1,t4,t6
    e88777ac:	20b59f0b          	mula	t5,a1,a1
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88777b0:	00d39f93          	slli	t6,t2,0xd
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88777b4:	9316                	add	t1,t1,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88777b6:	00ffe7b3          	or	a5,t6,a5
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88777ba:	02b5beb3          	mulhu	t4,a1,a1
    e88777be:	011f38b3          	sltu	a7,t5,a7
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88777c2:	97fa                	add	a5,a5,t5
    e88777c4:	01e7b5b3          	sltu	a1,a5,t5
    e88777c8:	c807b38b          	extu	t2,a5,50,0
    e88777cc:	93cd                	srli	a5,a5,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88777ce:	9376                	add	t1,t1,t4
    e88777d0:	989a                	add	a7,a7,t1
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88777d2:	011582b3          	add	t0,a1,a7
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88777d6:	02e508b3          	mul	a7,a0,a4
    e88777da:	8346                	mv	t1,a7
    e88777dc:	21c6130b          	mula	t1,a2,t3
    e88777e0:	02e535b3          	mulhu	a1,a0,a4
    e88777e4:	01133fb3          	sltu	t6,t1,a7
    e88777e8:	8f1a                	mv	t5,t1
    e88777ea:	03c63eb3          	mulhu	t4,a2,t3
    e88777ee:	01d588b3          	add	a7,a1,t4
    d419 = r4 * 19;
    e88777f2:	028805b3          	mul	a1,a6,s0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88777f6:	98fe                	add	a7,a7,t6
  r4 = in[4];
    e88777f8:	02093f83          	ld	t6,32(s2)
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88777fc:	0305beb3          	mulhu	t4,a1,a6
    e8877800:	21059f0b          	mula	t5,a1,a6
    e8877804:	98f6                	add	a7,a7,t4
    e8877806:	006f3333          	sltu	t1,t5,t1
    e887780a:	9346                	add	t1,t1,a7
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887780c:	00d29893          	slli	a7,t0,0xd
    e8877810:	00f8e7b3          	or	a5,a7,a5
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877814:	030708b3          	mul	a7,a4,a6
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877818:	97fa                	add	a5,a5,t5
    e887781a:	01e7b5b3          	sltu	a1,a5,t5
    e887781e:	932e                	add	t1,t1,a1
    e8877820:	0336                	slli	t1,t1,0xd
    e8877822:	c807b58b          	extu	a1,a5,50,0
    e8877826:	93cd                	srli	a5,a5,0x33
    e8877828:	00f367b3          	or	a5,t1,a5
  r1 = in[1];
    e887782c:	f8694f0b          	ldd	t5,t1,(s2),0,4
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877830:	03073733          	mulhu	a4,a4,a6
    e8877834:	8ec6                	mv	t4,a7
    d1 = r1 * 2;
    e8877836:	00131293          	slli	t0,t1,0x1
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887783a:	03c53833          	mulhu	a6,a0,t3
    e887783e:	21c51e8b          	mula	t4,a0,t3
    e8877842:	9742                	add	a4,a4,a6
    d0 = r0 * 2;
    e8877844:	001f1e13          	slli	t3,t5,0x1
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877848:	011eb8b3          	sltu	a7,t4,a7
    e887784c:	8876                	mv	a6,t4
    e887784e:	20c6180b          	mula	a6,a2,a2
    e8877852:	98ba                	add	a7,a7,a4
    e8877854:	02c63733          	mulhu	a4,a2,a2
    e8877858:	01d83533          	sltu	a0,a6,t4
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887785c:	97c2                	add	a5,a5,a6
    e887785e:	0107b633          	sltu	a2,a5,a6
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877862:	98ba                	add	a7,a7,a4
    e8877864:	98aa                	add	a7,a7,a0
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877866:	6702                	ld	a4,0(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877868:	98b2                	add	a7,a7,a2
    e887786a:	08b6                	slli	a7,a7,0xd
    e887786c:	c807b60b          	extu	a2,a5,50,0
    e8877870:	93cd                	srli	a5,a5,0x33
    e8877872:	00f8e7b3          	or	a5,a7,a5
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877876:	20f4170b          	mula	a4,s0,a5
    e887787a:	c807380b          	extu	a6,a4,50,0
    e887787e:	03375793          	srli	a5,a4,0x33
  r3 = in[3];
    e8877882:	fb19470b          	ldd	a4,a7,(s2),1,4
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8877886:	90be                	add	ra,ra,a5
    e8877888:	c800b50b          	extu	a0,ra,50,0
    d2 = r2 * 2 * 19;
    e887788c:	02d70eb3          	mul	t4,a4,a3
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8877890:	0330d093          	srli	ra,ra,0x33
    r2 +=   c;
    e8877894:	007087b3          	add	a5,ra,t2
    d4 = d419 * 2;
    e8877898:	02df83b3          	mul	t2,t6,a3
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887789c:	031e86b3          	mul	a3,t4,a7
    e88778a0:	80b6                	mv	ra,a3
    e88778a2:	2063908b          	mula	ra,t2,t1
    e88778a6:	00d0b6b3          	sltu	a3,ra,a3
    e88778aa:	e036                	sd	a3,0(sp)
    e88778ac:	031ebeb3          	mulhu	t4,t4,a7
    e88778b0:	0263b6b3          	mulhu	a3,t2,t1
    e88778b4:	9eb6                	add	t4,t4,a3
    e88778b6:	6682                	ld	a3,0(sp)
    e88778b8:	9eb6                	add	t4,t4,a3
    e88778ba:	03ef36b3          	mulhu	a3,t5,t5
    e88778be:	e836                	sd	a3,16(sp)
    e88778c0:	8686                	mv	a3,ra
    e88778c2:	21ef168b          	mula	a3,t5,t5
    e88778c6:	0016b0b3          	sltu	ra,a3,ra
    e88778ca:	e036                	sd	a3,0(sp)
    e88778cc:	66c2                	ld	a3,16(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e88778ce:	02e3bf33          	mulhu	t5,t2,a4
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88778d2:	9eb6                	add	t4,t4,a3
    e88778d4:	01d086b3          	add	a3,ra,t4
    e88778d8:	f836                	sd	a3,48(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88778da:	6682                	ld	a3,0(sp)
    e88778dc:	c806b68b          	extu	a3,a3,50,0
    e88778e0:	e836                	sd	a3,16(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e88778e2:	03c30eb3          	mul	t4,t1,t3
    e88778e6:	80f6                	mv	ra,t4
    e88778e8:	20e3908b          	mula	ra,t2,a4
    e88778ec:	03c336b3          	mulhu	a3,t1,t3
    e88778f0:	01d0beb3          	sltu	t4,ra,t4
    e88778f4:	9f36                	add	t5,t5,a3
    e88778f6:	01ee86b3          	add	a3,t4,t5
    e88778fa:	02888eb3          	mul	t4,a7,s0
    e88778fe:	fc36                	sd	a3,56(sp)
    e8877900:	031eb6b3          	mulhu	a3,t4,a7
    e8877904:	e0b6                	sd	a3,64(sp)
    e8877906:	8686                	mv	a3,ra
    e8877908:	211e968b          	mula	a3,t4,a7
    e887790c:	6e86                	ld	t4,64(sp)
    e887790e:	8f36                	mv	t5,a3
    e8877910:	0016b0b3          	sltu	ra,a3,ra
    e8877914:	76e2                	ld	a3,56(sp)
    e8877916:	9eb6                	add	t4,t4,a3
    e8877918:	01d086b3          	add	a3,ra,t4
    e887791c:	fc36                	sd	a3,56(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887791e:	76c2                	ld	a3,48(sp)
    e8877920:	00d69093          	slli	ra,a3,0xd
    e8877924:	6682                	ld	a3,0(sp)
    e8877926:	0336de93          	srli	t4,a3,0x33
    e887792a:	01d0eeb3          	or	t4,ra,t4
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887792e:	76e2                	ld	a3,56(sp)
    e8877930:	01df00b3          	add	ra,t5,t4
    e8877934:	01e0beb3          	sltu	t4,ra,t5
    e8877938:	96f6                	add	a3,a3,t4
    e887793a:	f836                	sd	a3,48(sp)
    e887793c:	c800b68b          	extu	a3,ra,50,0
    e8877940:	e036                	sd	a3,0(sp)
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8877942:	02ee36b3          	mulhu	a3,t3,a4
    e8877946:	02ee0eb3          	mul	t4,t3,a4
    e887794a:	8f36                	mv	t5,a3
    e887794c:	0313b6b3          	mulhu	a3,t2,a7
    e8877950:	fc36                	sd	a3,56(sp)
    e8877952:	86f6                	mv	a3,t4
    e8877954:	2113968b          	mula	a3,t2,a7
    e8877958:	83b6                	mv	t2,a3
    e887795a:	01d6beb3          	sltu	t4,a3,t4
    e887795e:	86fa                	mv	a3,t5
    e8877960:	7f62                	ld	t5,56(sp)
    e8877962:	9f36                	add	t5,t5,a3
    e8877964:	026336b3          	mulhu	a3,t1,t1
    e8877968:	9efa                	add	t4,t4,t5
    e887796a:	8f36                	mv	t5,a3
    e887796c:	869e                	mv	a3,t2
    e887796e:	2063168b          	mula	a3,t1,t1
    e8877972:	9efa                	add	t4,t4,t5
    e8877974:	0076b3b3          	sltu	t2,a3,t2
    e8877978:	8336                	mv	t1,a3
    e887797a:	01d386b3          	add	a3,t2,t4
    e887797e:	8f36                	mv	t5,a3
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877980:	76c2                	ld	a3,48(sp)
    e8877982:	0330de93          	srli	t4,ra,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8877986:	03c8b0b3          	mulhu	ra,a7,t3
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887798a:	00d69393          	slli	t2,a3,0xd
    e887798e:	01d3eeb3          	or	t4,t2,t4
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877992:	01d303b3          	add	t2,t1,t4
    e8877996:	0063b333          	sltu	t1,t2,t1
    e887799a:	01e306b3          	add	a3,t1,t5
    e887799e:	fc36                	sd	a3,56(sp)
    e88779a0:	c803b68b          	extu	a3,t2,50,0
    e88779a4:	f836                	sd	a3,48(sp)
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88779a6:	03c88333          	mul	t1,a7,t3
    e88779aa:	8e9a                	mv	t4,t1
    e88779ac:	20571e8b          	mula	t4,a4,t0
    e88779b0:	025736b3          	mulhu	a3,a4,t0
    e88779b4:	006eb333          	sltu	t1,t4,t1
    e88779b8:	00d08f33          	add	t5,ra,a3
    e88779bc:	01e306b3          	add	a3,t1,t5
    d419 = r4 * 19;
    e88779c0:	028f8333          	mul	t1,t6,s0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88779c4:	8f36                	mv	t5,a3
    e88779c6:	80f6                	mv	ra,t4
    e88779c8:	03f336b3          	mulhu	a3,t1,t6
    e88779cc:	21f3108b          	mula	ra,t1,t6
    e88779d0:	e0b6                	sd	a3,64(sp)
    e88779d2:	6306                	ld	t1,64(sp)
    e88779d4:	937a                	add	t1,t1,t5
    e88779d6:	01d0beb3          	sltu	t4,ra,t4
    e88779da:	006e86b3          	add	a3,t4,t1
    e88779de:	8f36                	mv	t5,a3
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88779e0:	76e2                	ld	a3,56(sp)
    e88779e2:	0333de93          	srli	t4,t2,0x33
    e88779e6:	00d69313          	slli	t1,a3,0xd
    e88779ea:	01d36eb3          	or	t4,t1,t4
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88779ee:	01d083b3          	add	t2,ra,t4
    e88779f2:	0013b333          	sltu	t1,t2,ra
    e88779f6:	01e300b3          	add	ra,t1,t5
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e88779fa:	03fe0333          	mul	t1,t3,t6
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88779fe:	c803be8b          	extu	t4,t2,50,0
    e8877a02:	0333d393          	srli	t2,t2,0x33
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877a06:	869a                	mv	a3,t1
    e8877a08:	2058968b          	mula	a3,a7,t0
    e8877a0c:	03fe3e33          	mulhu	t3,t3,t6
    e8877a10:	0066b333          	sltu	t1,a3,t1
    e8877a14:	0258bfb3          	mulhu	t6,a7,t0
    e8877a18:	88b6                	mv	a7,a3
    e8877a1a:	9e7e                	add	t3,t3,t6
    e8877a1c:	20e7168b          	mula	a3,a4,a4
    e8877a20:	9e1a                	add	t3,t3,t1
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877a22:	00d09313          	slli	t1,ra,0xd
    e8877a26:	007363b3          	or	t2,t1,t2
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877a2a:	02e73fb3          	mulhu	t6,a4,a4
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877a2e:	93b6                	add	t2,t2,a3
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877a30:	0116b8b3          	sltu	a7,a3,a7
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877a34:	00d3b733          	sltu	a4,t2,a3
    e8877a38:	c803b08b          	extu	ra,t2,50,0
    e8877a3c:	0333d393          	srli	t2,t2,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8877a40:	6682                	ld	a3,0(sp)
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8877a42:	9e7e                	add	t3,t3,t6
    e8877a44:	98f2                	add	a7,a7,t3
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877a46:	9746                	add	a4,a4,a7
    e8877a48:	0736                	slli	a4,a4,0xd
    e8877a4a:	007763b3          	or	t2,a4,t2
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877a4e:	6742                	ld	a4,16(sp)
  r4 *= 19;
    e8877a50:	02808e33          	mul	t3,ra,s0
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877a54:	2074170b          	mula	a4,s0,t2
    e8877a58:	c807388b          	extu	a7,a4,50,0
    e8877a5c:	934d                	srli	a4,a4,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8877a5e:	9736                	add	a4,a4,a3
    r2 +=   c;
    e8877a60:	76c2                	ld	a3,48(sp)
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8877a62:	c807330b          	extu	t1,a4,50,0
    e8877a66:	934d                	srli	a4,a4,0x33
    r2 +=   c;
    e8877a68:	9736                	add	a4,a4,a3
  t[0]  =  ((uint128_t) r0) * s0;
    e8877a6a:	030883b3          	mul	t2,a7,a6
    e8877a6e:	0308b6b3          	mulhu	a3,a7,a6
    e8877a72:	8f36                	mv	t5,a3
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8877a74:	869e                	mv	a3,t2
    e8877a76:	21c5168b          	mula	a3,a0,t3
    e8877a7a:	e036                	sd	a3,0(sp)
    e8877a7c:	0076b3b3          	sltu	t2,a3,t2
    e8877a80:	86fa                	mv	a3,t5
    e8877a82:	03c53f33          	mulhu	t5,a0,t3
    e8877a86:	9f36                	add	t5,t5,a3
    e8877a88:	01e386b3          	add	a3,t2,t5
  r1 *= 19;
    e8877a8c:	028303b3          	mul	t2,t1,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8877a90:	f836                	sd	a3,48(sp)
    e8877a92:	6f02                	ld	t5,0(sp)
    e8877a94:	02c3b6b3          	mulhu	a3,t2,a2
    e8877a98:	fc36                	sd	a3,56(sp)
    e8877a9a:	6682                	ld	a3,0(sp)
  r3 *= 19;
    e8877a9c:	028e8fb3          	mul	t6,t4,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8877aa0:	20c3968b          	mula	a3,t2,a2
    e8877aa4:	e836                	sd	a3,16(sp)
    e8877aa6:	01e6b6b3          	sltu	a3,a3,t5
    e8877aaa:	e036                	sd	a3,0(sp)
    e8877aac:	ffe1468b          	ldd	a3,t5,(sp),3,4
  r2 *= 19;
    e8877ab0:	028702b3          	mul	t0,a4,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8877ab4:	01e683b3          	add	t2,a3,t5
    e8877ab8:	6682                	ld	a3,0(sp)
    e8877aba:	6f42                	ld	t5,16(sp)
    e8877abc:	93b6                	add	t2,t2,a3
    e8877abe:	66c2                	ld	a3,16(sp)
    e8877ac0:	21f7968b          	mula	a3,a5,t6
    e8877ac4:	e036                	sd	a3,0(sp)
    e8877ac6:	01e6b6b3          	sltu	a3,a3,t5
    e8877aca:	8f36                	mv	t5,a3
    e8877acc:	03f7b6b3          	mulhu	a3,a5,t6
    e8877ad0:	93b6                	add	t2,t2,a3
    e8877ad2:	6682                	ld	a3,0(sp)
    e8877ad4:	93fa                	add	t2,t2,t5
    e8877ad6:	6f02                	ld	t5,0(sp)
    e8877ad8:	2055968b          	mula	a3,a1,t0
    e8877adc:	e836                	sd	a3,16(sp)
    e8877ade:	01e6b6b3          	sltu	a3,a3,t5
    e8877ae2:	8f36                	mv	t5,a3
    e8877ae4:	0255b6b3          	mulhu	a3,a1,t0
    e8877ae8:	93b6                	add	t2,t2,a3
    e8877aea:	007f06b3          	add	a3,t5,t2
    e8877aee:	fc36                	sd	a3,56(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877af0:	66c2                	ld	a3,16(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8877af2:	02a883b3          	mul	t2,a7,a0
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877af6:	c806b68b          	extu	a3,a3,50,0
    e8877afa:	e0b6                	sd	a3,64(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8877afc:	02a8b6b3          	mulhu	a3,a7,a0
    e8877b00:	8f36                	mv	t5,a3
    e8877b02:	869e                	mv	a3,t2
    e8877b04:	2068168b          	mula	a3,a6,t1
    e8877b08:	e036                	sd	a3,0(sp)
    e8877b0a:	0076b3b3          	sltu	t2,a3,t2
    e8877b0e:	86fa                	mv	a3,t5
    e8877b10:	02683f33          	mulhu	t5,a6,t1
    e8877b14:	9f36                	add	t5,t5,a3
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8877b16:	6682                	ld	a3,0(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8877b18:	93fa                	add	t2,t2,t5
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8877b1a:	6f02                	ld	t5,0(sp)
    e8877b1c:	21f5968b          	mula	a3,a1,t6
    e8877b20:	f836                	sd	a3,48(sp)
    e8877b22:	01e6b6b3          	sltu	a3,a3,t5
    e8877b26:	8f36                	mv	t5,a3
    e8877b28:	03f5b6b3          	mulhu	a3,a1,t6
    e8877b2c:	93b6                	add	t2,t2,a3
    e8877b2e:	76c2                	ld	a3,48(sp)
    e8877b30:	93fa                	add	t2,t2,t5
    e8877b32:	7f42                	ld	t5,48(sp)
    e8877b34:	21c7968b          	mula	a3,a5,t3
    e8877b38:	e036                	sd	a3,0(sp)
    e8877b3a:	01e6b6b3          	sltu	a3,a3,t5
    e8877b3e:	8f36                	mv	t5,a3
    e8877b40:	03c7b6b3          	mulhu	a3,a5,t3
    e8877b44:	93b6                	add	t2,t2,a3
    e8877b46:	025636b3          	mulhu	a3,a2,t0
    e8877b4a:	93fa                	add	t2,t2,t5
    e8877b4c:	6f02                	ld	t5,0(sp)
    e8877b4e:	e8b6                	sd	a3,80(sp)
    e8877b50:	6682                	ld	a3,0(sp)
    e8877b52:	2056168b          	mula	a3,a2,t0
    e8877b56:	f836                	sd	a3,48(sp)
    e8877b58:	01e6b2b3          	sltu	t0,a3,t5
    e8877b5c:	66c6                	ld	a3,80(sp)
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877b5e:	7f42                	ld	t5,48(sp)
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8877b60:	93b6                	add	t2,t2,a3
    e8877b62:	007286b3          	add	a3,t0,t2
    e8877b66:	e8b6                	sd	a3,80(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877b68:	76e2                	ld	a3,56(sp)
    e8877b6a:	00d69393          	slli	t2,a3,0xd
    e8877b6e:	66c2                	ld	a3,16(sp)
    e8877b70:	0336d293          	srli	t0,a3,0x33
    e8877b74:	76e2                	ld	a3,56(sp)
    e8877b76:	0053e2b3          	or	t0,t2,t0
    e8877b7a:	0336d393          	srli	t2,a3,0x33
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877b7e:	76c2                	ld	a3,48(sp)
    e8877b80:	9696                	add	a3,a3,t0
    e8877b82:	01e6b2b3          	sltu	t0,a3,t5
    e8877b86:	e036                	sd	a3,0(sp)
    e8877b88:	66c6                	ld	a3,80(sp)
    e8877b8a:	93b6                	add	t2,t2,a3
    e8877b8c:	007286b3          	add	a3,t0,t2
    e8877b90:	e836                	sd	a3,16(sp)
    e8877b92:	6682                	ld	a3,0(sp)
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877b94:	03c583b3          	mul	t2,a1,t3
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877b98:	c806b68b          	extu	a3,a3,50,0
    e8877b9c:	f836                	sd	a3,48(sp)
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877b9e:	03f636b3          	mulhu	a3,a2,t6
    e8877ba2:	8f36                	mv	t5,a3
    e8877ba4:	869e                	mv	a3,t2
    e8877ba6:	21f6168b          	mula	a3,a2,t6
    e8877baa:	03c5b2b3          	mulhu	t0,a1,t3
    e8877bae:	8fb6                	mv	t6,a3
    e8877bb0:	0076b3b3          	sltu	t2,a3,t2
    e8877bb4:	9f16                	add	t5,t5,t0
    e8877bb6:	82fe                	mv	t0,t6
    e8877bb8:	2065128b          	mula	t0,a0,t1
    e8877bbc:	93fa                	add	t2,t2,t5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8877bbe:	026536b3          	mulhu	a3,a0,t1
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877bc2:	01f2bfb3          	sltu	t6,t0,t6
    e8877bc6:	93b6                	add	t2,t2,a3
    e8877bc8:	93fe                	add	t2,t2,t6
    e8877bca:	8f96                	mv	t6,t0
    e8877bcc:	20f89f8b          	mula	t6,a7,a5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8877bd0:	02f8b6b3          	mulhu	a3,a7,a5
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877bd4:	005fb2b3          	sltu	t0,t6,t0
    e8877bd8:	93b6                	add	t2,t2,a3
    e8877bda:	86fe                	mv	a3,t6
    e8877bdc:	20e8168b          	mula	a3,a6,a4
    e8877be0:	9396                	add	t2,t2,t0
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8877be2:	02e832b3          	mulhu	t0,a6,a4
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877be6:	8f36                	mv	t5,a3
    e8877be8:	01f6bfb3          	sltu	t6,a3,t6
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877bec:	66c2                	ld	a3,16(sp)
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877bee:	9396                	add	t2,t2,t0
    e8877bf0:	93fe                	add	t2,t2,t6
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877bf2:	00d69f93          	slli	t6,a3,0xd
    e8877bf6:	6682                	ld	a3,0(sp)
    e8877bf8:	0336d293          	srli	t0,a3,0x33
    e8877bfc:	66c2                	ld	a3,16(sp)
    e8877bfe:	005fe2b3          	or	t0,t6,t0
    e8877c02:	0336df93          	srli	t6,a3,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877c06:	93fe                	add	t2,t2,t6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877c08:	02b88fb3          	mul	t6,a7,a1
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877c0c:	005f06b3          	add	a3,t5,t0
    e8877c10:	01e6b2b3          	sltu	t0,a3,t5
    e8877c14:	e036                	sd	a3,0(sp)
    e8877c16:	c806b68b          	extu	a3,a3,50,0
    e8877c1a:	9396                	add	t2,t2,t0
    e8877c1c:	e836                	sd	a3,16(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877c1e:	82fe                	mv	t0,t6
    e8877c20:	21d8128b          	mula	t0,a6,t4
    e8877c24:	02b8b6b3          	mulhu	a3,a7,a1
    e8877c28:	01f2bfb3          	sltu	t6,t0,t6
    e8877c2c:	03d83f33          	mulhu	t5,a6,t4
    e8877c30:	9f36                	add	t5,t5,a3
    e8877c32:	01ef86b3          	add	a3,t6,t5
    e8877c36:	8f36                	mv	t5,a3
  t[3] += ((uint128_t) r4) * s4;
    e8877c38:	03c636b3          	mulhu	a3,a2,t3
    e8877c3c:	8f96                	mv	t6,t0
    e8877c3e:	21c61f8b          	mula	t6,a2,t3
    e8877c42:	fc36                	sd	a3,56(sp)
    e8877c44:	7e62                	ld	t3,56(sp)
    e8877c46:	9e7a                	add	t3,t3,t5
    e8877c48:	005fb2b3          	sltu	t0,t6,t0
    e8877c4c:	9e16                	add	t3,t3,t0
    e8877c4e:	82fe                	mv	t0,t6
    e8877c50:	20e5128b          	mula	t0,a0,a4
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877c54:	02e536b3          	mulhu	a3,a0,a4
  t[3] += ((uint128_t) r4) * s4;
    e8877c58:	01f2bfb3          	sltu	t6,t0,t6
    e8877c5c:	9e36                	add	t3,t3,a3
    e8877c5e:	9e7e                	add	t3,t3,t6
    e8877c60:	8f96                	mv	t6,t0
    e8877c62:	20f31f8b          	mula	t6,t1,a5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877c66:	02f336b3          	mulhu	a3,t1,a5
  t[3] += ((uint128_t) r4) * s4;
    e8877c6a:	005fb2b3          	sltu	t0,t6,t0
    e8877c6e:	9e36                	add	t3,t3,a3
    e8877c70:	01c286b3          	add	a3,t0,t3
    e8877c74:	8f36                	mv	t5,a3
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877c76:	6682                	ld	a3,0(sp)
    e8877c78:	00d39e13          	slli	t3,t2,0xd
    e8877c7c:	0336d293          	srli	t0,a3,0x33
    e8877c80:	005e62b3          	or	t0,t3,t0
    e8877c84:	0333de13          	srli	t3,t2,0x33
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877c88:	9e7a                	add	t3,t3,t5
    e8877c8a:	005f83b3          	add	t2,t6,t0
    e8877c8e:	01f3bfb3          	sltu	t6,t2,t6
    e8877c92:	01cf86b3          	add	a3,t6,t3
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8877c96:	02c88e33          	mul	t3,a7,a2
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877c9a:	e036                	sd	a3,0(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8877c9c:	8ff2                	mv	t6,t3
    e8877c9e:	20181f8b          	mula	t6,a6,ra
    e8877ca2:	02c8b2b3          	mulhu	t0,a7,a2
    e8877ca6:	01cfbe33          	sltu	t3,t6,t3
    e8877caa:	021836b3          	mulhu	a3,a6,ra
    e8877cae:	00d28f33          	add	t5,t0,a3
    e8877cb2:	82fe                	mv	t0,t6
    e8877cb4:	20b3128b          	mula	t0,t1,a1
    e8877cb8:	9e7a                	add	t3,t3,t5
    e8877cba:	02b336b3          	mulhu	a3,t1,a1
    e8877cbe:	01f2bfb3          	sltu	t6,t0,t6
    e8877cc2:	9e36                	add	t3,t3,a3
    e8877cc4:	9e7e                	add	t3,t3,t6
    e8877cc6:	8f96                	mv	t6,t0
    e8877cc8:	21d51f8b          	mula	t6,a0,t4
    e8877ccc:	03d536b3          	mulhu	a3,a0,t4
    e8877cd0:	005fb2b3          	sltu	t0,t6,t0
    e8877cd4:	9e36                	add	t3,t3,a3
    e8877cd6:	9e16                	add	t3,t3,t0
    e8877cd8:	82fe                	mv	t0,t6
    e8877cda:	20e7928b          	mula	t0,a5,a4
    e8877cde:	02e7b6b3          	mulhu	a3,a5,a4
    e8877ce2:	01f2bfb3          	sltu	t6,t0,t6
    e8877ce6:	9e36                	add	t3,t3,a3
    e8877ce8:	01cf86b3          	add	a3,t6,t3
    e8877cec:	fc36                	sd	a3,56(sp)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877cee:	6682                	ld	a3,0(sp)
    e8877cf0:	0333df93          	srli	t6,t2,0x33
    e8877cf4:	00d69e13          	slli	t3,a3,0xd
    e8877cf8:	01fe6fb3          	or	t6,t3,t6
    e8877cfc:	0336de13          	srli	t3,a3,0x33
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877d00:	01f286b3          	add	a3,t0,t6
    e8877d04:	8f36                	mv	t5,a3
    e8877d06:	0056b2b3          	sltu	t0,a3,t0
    e8877d0a:	76e2                	ld	a3,56(sp)
    e8877d0c:	033f5f93          	srli	t6,t5,0x33
    e8877d10:	9e36                	add	t3,t3,a3
    e8877d12:	9e16                	add	t3,t3,t0
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877d14:	6686                	ld	a3,64(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877d16:	0e36                	slli	t3,t3,0xd
    e8877d18:	01fe6fb3          	or	t6,t3,t6
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877d1c:	21f4168b          	mula	a3,s0,t6
    e8877d20:	8fb6                	mv	t6,a3
    e8877d22:	0336de13          	srli	t3,a3,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8877d26:	76c2                	ld	a3,48(sp)
    e8877d28:	00de02b3          	add	t0,t3,a3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8877d2c:	c80fbe0b          	extu	t3,t6,50,0
  r2 +=   c;
    e8877d30:	66c2                	ld	a3,16(sp)
  output[0] = r0;
    e8877d32:	01cd3023          	sd	t3,0(s10)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8877d36:	c802be0b          	extu	t3,t0,50,0
  output[1] = r1;
    e8877d3a:	01cd3423          	sd	t3,8(s10)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8877d3e:	0332de13          	srli	t3,t0,0x33
  r2 +=   c;
    e8877d42:	9e36                	add	t3,t3,a3
  output[2] = r2;
    e8877d44:	01cd3823          	sd	t3,16(s10)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8877d48:	c803be0b          	extu	t3,t2,50,0
  out[0] = in[0] + two54m152 - out[0];
    e8877d4c:	66e2                	ld	a3,24(sp)
  output[3] = r3;
    e8877d4e:	01cd3c23          	sd	t3,24(s10)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8877d52:	c80f3e0b          	extu	t3,t5,50,0
  output[4] = r4;
    e8877d56:	03cd3023          	sd	t3,32(s10)
  out[0] = in[0] + two54m152 - out[0];
    e8877d5a:	00d80e33          	add	t3,a6,a3
    e8877d5e:	411e08b3          	sub	a7,t3,a7
  out[1] = in[1] + two54m8 - out[1];
    e8877d62:	01350e33          	add	t3,a0,s3
    e8877d66:	406e0333          	sub	t1,t3,t1
  out[2] = in[2] + two54m8 - out[2];
    e8877d6a:	01378e33          	add	t3,a5,s3
    e8877d6e:	40ee0733          	sub	a4,t3,a4
  out[3] = in[3] + two54m8 - out[3];
    e8877d72:	01358e33          	add	t3,a1,s3
    e8877d76:	41de0eb3          	sub	t4,t3,t4
  out[4] = in[4] + two54m8 - out[4];
    e8877d7a:	01360e33          	add	t3,a2,s3
    e8877d7e:	401e00b3          	sub	ra,t3,ra
  a = ((uint128_t) in[0]) * scalar;
    e8877d82:	0388be33          	mulhu	t3,a7,s8
  a = ((uint128_t) in[1]) * scalar + ((limb) (a >> 51));
    e8877d86:	038886b3          	mul	a3,a7,s8
    e8877d8a:	00de1f93          	slli	t6,t3,0xd
    e8877d8e:	0336d293          	srli	t0,a3,0x33
    e8877d92:	033e5693          	srli	a3,t3,0x33
    e8877d96:	03830e33          	mul	t3,t1,s8
    e8877d9a:	005fe2b3          	or	t0,t6,t0
    e8877d9e:	03833fb3          	mulhu	t6,t1,s8
    e8877da2:	005e03b3          	add	t2,t3,t0
    e8877da6:	01c3b2b3          	sltu	t0,t2,t3
    e8877daa:	00df8e33          	add	t3,t6,a3
    e8877dae:	9e16                	add	t3,t3,t0
  a = ((uint128_t) in[2]) * scalar + ((limb) (a >> 51));
    e8877db0:	00de1f93          	slli	t6,t3,0xd
    e8877db4:	033e5693          	srli	a3,t3,0x33
    e8877db8:	03870e33          	mul	t3,a4,s8
    e8877dbc:	0333d293          	srli	t0,t2,0x33
    e8877dc0:	005fe2b3          	or	t0,t6,t0
    e8877dc4:	8f36                	mv	t5,a3
    e8877dc6:	03873fb3          	mulhu	t6,a4,s8
    e8877dca:	005e06b3          	add	a3,t3,t0
    e8877dce:	e036                	sd	a3,0(sp)
    e8877dd0:	01c6b2b3          	sltu	t0,a3,t3
  a = ((uint128_t) in[3]) * scalar + ((limb) (a >> 51));
    e8877dd4:	6682                	ld	a3,0(sp)
  a = ((uint128_t) in[2]) * scalar + ((limb) (a >> 51));
    e8877dd6:	01ef8e33          	add	t3,t6,t5
    e8877dda:	9e16                	add	t3,t3,t0
  a = ((uint128_t) in[3]) * scalar + ((limb) (a >> 51));
    e8877ddc:	00de1f93          	slli	t6,t3,0xd
    e8877de0:	0336d293          	srli	t0,a3,0x33
    e8877de4:	033e5693          	srli	a3,t3,0x33
    e8877de8:	038e8e33          	mul	t3,t4,s8
    e8877dec:	005fe2b3          	or	t0,t6,t0
    e8877df0:	8f36                	mv	t5,a3
    e8877df2:	038ebfb3          	mulhu	t6,t4,s8
    e8877df6:	005e06b3          	add	a3,t3,t0
    e8877dfa:	e836                	sd	a3,16(sp)
    e8877dfc:	01c6b2b3          	sltu	t0,a3,t3
  a = ((uint128_t) in[4]) * scalar + ((limb) (a >> 51));
    e8877e00:	66c2                	ld	a3,16(sp)
  a = ((uint128_t) in[3]) * scalar + ((limb) (a >> 51));
    e8877e02:	01ef8e33          	add	t3,t6,t5
    e8877e06:	9e16                	add	t3,t3,t0
  a = ((uint128_t) in[4]) * scalar + ((limb) (a >> 51));
    e8877e08:	00de1f93          	slli	t6,t3,0xd
    e8877e0c:	0336d293          	srli	t0,a3,0x33
    e8877e10:	005fe2b3          	or	t0,t6,t0
    e8877e14:	0380bfb3          	mulhu	t6,ra,s8
    e8877e18:	033e5693          	srli	a3,t3,0x33
    e8877e1c:	03808e33          	mul	t3,ra,s8
    e8877e20:	00df8f33          	add	t5,t6,a3
  output[0] = ((limb)a) & 0x7ffffffffffff;
    e8877e24:	038886b3          	mul	a3,a7,s8
  a = ((uint128_t) in[4]) * scalar + ((limb) (a >> 51));
    e8877e28:	92f2                	add	t0,t0,t3
    e8877e2a:	01c2be33          	sltu	t3,t0,t3
    e8877e2e:	01ee0fb3          	add	t6,t3,t5
  output[0] += (a >> 51) * 19;
    e8877e32:	00df9f13          	slli	t5,t6,0xd
  output[0] = ((limb)a) & 0x7ffffffffffff;
    e8877e36:	c806be0b          	extu	t3,a3,50,0
  output[0] += in[0];
    e8877e3a:	9e42                	add	t3,t3,a6
  output[0] += (a >> 51) * 19;
    e8877e3c:	0332d813          	srli	a6,t0,0x33
    e8877e40:	010f6833          	or	a6,t5,a6
  output[0] += in[0];
    e8877e44:	21041e0b          	mula	t3,s0,a6
  output[2] = ((limb)a) & 0x7ffffffffffff;
    e8877e48:	6682                	ld	a3,0(sp)
  output[0] += in[0];
    e8877e4a:	8872                	mv	a6,t3
  output[1] = ((limb)a) & 0x7ffffffffffff;
    e8877e4c:	c803be0b          	extu	t3,t2,50,0
  output[1] += in[1];
    e8877e50:	9572                	add	a0,a0,t3
  output[2] = ((limb)a) & 0x7ffffffffffff;
    e8877e52:	c806be0b          	extu	t3,a3,50,0
  output[3] = ((limb)a) & 0x7ffffffffffff;
    e8877e56:	66c2                	ld	a3,16(sp)
  output[2] += in[2];
    e8877e58:	97f2                	add	a5,a5,t3
  r2 *= 19;
    e8877e5a:	02878fb3          	mul	t6,a5,s0
  output[3] = ((limb)a) & 0x7ffffffffffff;
    e8877e5e:	c806be0b          	extu	t3,a3,50,0
  output[3] += in[3];
    e8877e62:	95f2                	add	a1,a1,t3
  output[4] = ((limb)a) & 0x7ffffffffffff;
    e8877e64:	c802be0b          	extu	t3,t0,50,0
  output[4] += in[4];
    e8877e68:	00ce06b3          	add	a3,t3,a2
    e8877e6c:	e036                	sd	a3,0(sp)
  r1 *= 19;
    e8877e6e:	028502b3          	mul	t0,a0,s0
  r4 *= 19;
    e8877e72:	02868633          	mul	a2,a3,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8877e76:	021286b3          	mul	a3,t0,ra
    e8877e7a:	83b6                	mv	t2,a3
    e8877e7c:	21fe938b          	mula	t2,t4,t6
    e8877e80:	00d3b6b3          	sltu	a3,t2,a3
    e8877e84:	0212b2b3          	mulhu	t0,t0,ra
    e8877e88:	8f36                	mv	t5,a3
    e8877e8a:	03feb6b3          	mulhu	a3,t4,t6
  r3 *= 19;
    e8877e8e:	02858e33          	mul	t3,a1,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8877e92:	92b6                	add	t0,t0,a3
    e8877e94:	869e                	mv	a3,t2
    e8877e96:	92fa                	add	t0,t0,t5
    e8877e98:	21c7168b          	mula	a3,a4,t3
    e8877e9c:	8f36                	mv	t5,a3
    e8877e9e:	0076b3b3          	sltu	t2,a3,t2
    e8877ea2:	03c736b3          	mulhu	a3,a4,t3
    e8877ea6:	92b6                	add	t0,t0,a3
    e8877ea8:	929e                	add	t0,t0,t2
    e8877eaa:	83fa                	mv	t2,t5
    e8877eac:	2108938b          	mula	t2,a7,a6
    e8877eb0:	01e3b6b3          	sltu	a3,t2,t5
    e8877eb4:	8f36                	mv	t5,a3
    e8877eb6:	0308b6b3          	mulhu	a3,a7,a6
    e8877eba:	92b6                	add	t0,t0,a3
    e8877ebc:	02c336b3          	mulhu	a3,t1,a2
    e8877ec0:	92fa                	add	t0,t0,t5
    e8877ec2:	8f36                	mv	t5,a3
    e8877ec4:	869e                	mv	a3,t2
    e8877ec6:	20c3168b          	mula	a3,t1,a2
    e8877eca:	92fa                	add	t0,t0,t5
    e8877ecc:	0076b3b3          	sltu	t2,a3,t2
    e8877ed0:	e836                	sd	a3,16(sp)
    e8877ed2:	005386b3          	add	a3,t2,t0
    e8877ed6:	f836                	sd	a3,48(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877ed8:	66c2                	ld	a3,16(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8877eda:	02a882b3          	mul	t0,a7,a0
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877ede:	c806b68b          	extu	a3,a3,50,0
    e8877ee2:	fc36                	sd	a3,56(sp)
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8877ee4:	03f0b6b3          	mulhu	a3,ra,t6
    e8877ee8:	8f36                	mv	t5,a3
    e8877eea:	8696                	mv	a3,t0
    e8877eec:	21f0968b          	mula	a3,ra,t6
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8877ef0:	02a8b3b3          	mulhu	t2,a7,a0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8877ef4:	8fb6                	mv	t6,a3
    e8877ef6:	0056b2b3          	sltu	t0,a3,t0
    e8877efa:	9f1e                	add	t5,t5,t2
    e8877efc:	83fe                	mv	t2,t6
    e8877efe:	21ce938b          	mula	t2,t4,t3
    e8877f02:	92fa                	add	t0,t0,t5
    e8877f04:	03ceb6b3          	mulhu	a3,t4,t3
    e8877f08:	01f3bfb3          	sltu	t6,t2,t6
    e8877f0c:	92b6                	add	t0,t0,a3
    e8877f0e:	92fe                	add	t0,t0,t6
    e8877f10:	8f9e                	mv	t6,t2
    e8877f12:	21031f8b          	mula	t6,t1,a6
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8877f16:	030336b3          	mulhu	a3,t1,a6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8877f1a:	007fb3b3          	sltu	t2,t6,t2
    e8877f1e:	92b6                	add	t0,t0,a3
    e8877f20:	929e                	add	t0,t0,t2
    e8877f22:	83fe                	mv	t2,t6
    e8877f24:	20c7138b          	mula	t2,a4,a2
    e8877f28:	02c736b3          	mulhu	a3,a4,a2
    e8877f2c:	01f3bfb3          	sltu	t6,t2,t6
    e8877f30:	92b6                	add	t0,t0,a3
    e8877f32:	005f86b3          	add	a3,t6,t0
    e8877f36:	8f36                	mv	t5,a3
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8877f38:	76c2                	ld	a3,48(sp)
    e8877f3a:	00d69293          	slli	t0,a3,0xd
    e8877f3e:	66c2                	ld	a3,16(sp)
    e8877f40:	0336df93          	srli	t6,a3,0x33
    e8877f44:	76c2                	ld	a3,48(sp)
    e8877f46:	01f2efb3          	or	t6,t0,t6
    e8877f4a:	0336d293          	srli	t0,a3,0x33
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877f4e:	01f386b3          	add	a3,t2,t6
    e8877f52:	e836                	sd	a3,16(sp)
    e8877f54:	0076b3b3          	sltu	t2,a3,t2
    e8877f58:	66c2                	ld	a3,16(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8877f5a:	02f88fb3          	mul	t6,a7,a5
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877f5e:	92fa                	add	t0,t0,t5
    e8877f60:	c806b68b          	extu	a3,a3,50,0
    e8877f64:	f836                	sd	a3,48(sp)
    e8877f66:	9396                	add	t2,t2,t0
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8877f68:	02f8b6b3          	mulhu	a3,a7,a5
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877f6c:	82fe                	mv	t0,t6
    e8877f6e:	02a33f33          	mulhu	t5,t1,a0
    e8877f72:	20a3128b          	mula	t0,t1,a0
    e8877f76:	9f36                	add	t5,t5,a3
    e8877f78:	03c0b6b3          	mulhu	a3,ra,t3
    e8877f7c:	01f2bfb3          	sltu	t6,t0,t6
    e8877f80:	9ffa                	add	t6,t6,t5
    e8877f82:	8f36                	mv	t5,a3
    e8877f84:	8696                	mv	a3,t0
    e8877f86:	21c0968b          	mula	a3,ra,t3
    e8877f8a:	9f7e                	add	t5,t5,t6
    e8877f8c:	8e36                	mv	t3,a3
    e8877f8e:	8ff2                	mv	t6,t3
    e8877f90:	21071f8b          	mula	t6,a4,a6
    e8877f94:	0056b2b3          	sltu	t0,a3,t0
    e8877f98:	92fa                	add	t0,t0,t5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8877f9a:	030736b3          	mulhu	a3,a4,a6
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8877f9e:	01cfbe33          	sltu	t3,t6,t3
    e8877fa2:	92b6                	add	t0,t0,a3
    e8877fa4:	92f2                	add	t0,t0,t3
    e8877fa6:	8e7e                	mv	t3,t6
    e8877fa8:	20ce9e0b          	mula	t3,t4,a2
    e8877fac:	02ceb6b3          	mulhu	a3,t4,a2
    e8877fb0:	01fe3fb3          	sltu	t6,t3,t6
    e8877fb4:	92b6                	add	t0,t0,a3
    e8877fb6:	005f86b3          	add	a3,t6,t0
    e8877fba:	8f36                	mv	t5,a3
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8877fbc:	66c2                	ld	a3,16(sp)
    e8877fbe:	00d39293          	slli	t0,t2,0xd
    e8877fc2:	0336df93          	srli	t6,a3,0x33
    e8877fc6:	01f2efb3          	or	t6,t0,t6
    e8877fca:	0333d293          	srli	t0,t2,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877fce:	01fe03b3          	add	t2,t3,t6
    e8877fd2:	01c3be33          	sltu	t3,t2,t3
    e8877fd6:	92fa                	add	t0,t0,t5
    e8877fd8:	005e06b3          	add	a3,t3,t0
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877fdc:	02f30e33          	mul	t3,t1,a5
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8877fe0:	e836                	sd	a3,16(sp)
    e8877fe2:	c803b68b          	extu	a3,t2,50,0
    e8877fe6:	e0b6                	sd	a3,64(sp)
  t[3] += ((uint128_t) r4) * s4;
    e8877fe8:	8ff2                	mv	t6,t3
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877fea:	02f332b3          	mulhu	t0,t1,a5
  t[3] += ((uint128_t) r4) * s4;
    e8877fee:	20a71f8b          	mula	t6,a4,a0
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8877ff2:	02a736b3          	mulhu	a3,a4,a0
  t[3] += ((uint128_t) r4) * s4;
    e8877ff6:	01cfbe33          	sltu	t3,t6,t3
    e8877ffa:	00d28f33          	add	t5,t0,a3
    e8877ffe:	82fe                	mv	t0,t6
    e8878000:	20b8928b          	mula	t0,a7,a1
    e8878004:	9e7a                	add	t3,t3,t5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878006:	02b8b6b3          	mulhu	a3,a7,a1
  t[3] += ((uint128_t) r4) * s4;
    e887800a:	01f2bfb3          	sltu	t6,t0,t6
    e887800e:	9e36                	add	t3,t3,a3
    e8878010:	9e7e                	add	t3,t3,t6
    e8878012:	8f96                	mv	t6,t0
    e8878014:	210e9f8b          	mula	t6,t4,a6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878018:	030eb6b3          	mulhu	a3,t4,a6
  t[3] += ((uint128_t) r4) * s4;
    e887801c:	005fb2b3          	sltu	t0,t6,t0
    e8878020:	9e36                	add	t3,t3,a3
    e8878022:	86fe                	mv	a3,t6
    e8878024:	20c0968b          	mula	a3,ra,a2
    e8878028:	9e16                	add	t3,t3,t0
    e887802a:	02c0b2b3          	mulhu	t0,ra,a2
    e887802e:	01f6bfb3          	sltu	t6,a3,t6
    e8878032:	8636                	mv	a2,a3
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878034:	66c2                	ld	a3,16(sp)
  t[3] += ((uint128_t) r4) * s4;
    e8878036:	9e16                	add	t3,t3,t0
    e8878038:	01cf82b3          	add	t0,t6,t3
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887803c:	00d69e13          	slli	t3,a3,0xd
    e8878040:	0333df93          	srli	t6,t2,0x33
    e8878044:	01fe6fb3          	or	t6,t3,t6
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878048:	9fb2                	add	t6,t6,a2
    e887804a:	00cfb633          	sltu	a2,t6,a2
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887804e:	0336de13          	srli	t3,a3,0x33
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878052:	9e16                	add	t3,t3,t0
    e8878054:	9e32                	add	t3,t3,a2
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878056:	02ae8633          	mul	a2,t4,a0
    e887805a:	86b2                	mv	a3,a2
    e887805c:	20f7168b          	mula	a3,a4,a5
    e8878060:	02aeb533          	mulhu	a0,t4,a0
    e8878064:	00c6b633          	sltu	a2,a3,a2
    e8878068:	02f73eb3          	mulhu	t4,a4,a5
    e887806c:	8736                	mv	a4,a3
    e887806e:	20b3170b          	mula	a4,t1,a1
    e8878072:	9576                	add	a0,a0,t4
    e8878074:	9532                	add	a0,a0,a2
    e8878076:	02b33633          	mulhu	a2,t1,a1
    e887807a:	00d737b3          	sltu	a5,a4,a3
    e887807e:	6682                	ld	a3,0(sp)
    e8878080:	85ba                	mv	a1,a4
    e8878082:	9532                	add	a0,a0,a2
    e8878084:	97aa                	add	a5,a5,a0
    e8878086:	02d8b533          	mulhu	a0,a7,a3
      fmonty(nqx2, nqz2,
             nqpqx2, nqpqz2,
             nqx, nqz,
             nqpqx, nqpqz,
             q);
      swap_conditional(nqx2, nqpqx2, bit);
    e887808a:	865e                	mv	a2,s7
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887808c:	20d8958b          	mula	a1,a7,a3
    e8878090:	97aa                	add	a5,a5,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878092:	033fd893          	srli	a7,t6,0x33
    e8878096:	c80fbf8b          	extu	t6,t6,50,0
  output[3] = r3;
    e887809a:	01fcbc23          	sd	t6,24(s9)
      swap_conditional(nqx2, nqpqx2, bit);
    e887809e:	856a                	mv	a0,s10
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88780a0:	00e5b733          	sltu	a4,a1,a4
    e88780a4:	973e                	add	a4,a4,a5
    e88780a6:	86ae                	mv	a3,a1
    e88780a8:	0300b7b3          	mulhu	a5,ra,a6
    e88780ac:	2100968b          	mula	a3,ra,a6
    e88780b0:	973e                	add	a4,a4,a5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88780b2:	00de1793          	slli	a5,t3,0xd
    e88780b6:	0117e8b3          	or	a7,a5,a7
    e88780ba:	033e5e13          	srli	t3,t3,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88780be:	00b6b5b3          	sltu	a1,a3,a1
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88780c2:	98b6                	add	a7,a7,a3
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88780c4:	972e                	add	a4,a4,a1
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88780c6:	9e3a                	add	t3,t3,a4
    e88780c8:	00d8b833          	sltu	a6,a7,a3
    e88780cc:	9872                	add	a6,a6,t3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88780ce:	7762                	ld	a4,56(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88780d0:	0836                	slli	a6,a6,0xd
    e88780d2:	0338d793          	srli	a5,a7,0x33
    e88780d6:	00f867b3          	or	a5,a6,a5
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88780da:	20f4170b          	mula	a4,s0,a5
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88780de:	76c2                	ld	a3,48(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88780e0:	c808b88b          	extu	a7,a7,50,0
  output[4] = r4;
    e88780e4:	031cb023          	sd	a7,32(s9)
      swap_conditional(nqx2, nqpqx2, bit);
    e88780e8:	85da                	mv	a1,s6
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88780ea:	03375793          	srli	a5,a4,0x33
    e88780ee:	c807370b          	extu	a4,a4,50,0
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88780f2:	97b6                	add	a5,a5,a3
  output[0] = r0;
    e88780f4:	00ecb023          	sd	a4,0(s9)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88780f8:	c807b70b          	extu	a4,a5,50,0
  output[1] = r1;
    e88780fc:	00ecb423          	sd	a4,8(s9)
  r2 +=   c;
    e8878100:	6706                	ld	a4,64(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8878102:	93cd                	srli	a5,a5,0x33
  r2 +=   c;
    e8878104:	97ba                	add	a5,a5,a4
  output[2] = r2;
    e8878106:	00fcb823          	sd	a5,16(s9)
      swap_conditional(nqx2, nqpqx2, bit);
    e887810a:	f9efe0ef          	jal	ra,e88768a8 <swap_conditional>
      swap_conditional(nqz2, nqpqz2, bit);
    e887810e:	865e                	mv	a2,s7
    e8878110:	85ee                	mv	a1,s11
    e8878112:	8566                	mv	a0,s9
    e8878114:	f94fe0ef          	jal	ra,e88768a8 <swap_conditional>
      nqpqx2 = t;
      t = nqpqz;
      nqpqz = nqpqz2;
      nqpqz2 = t;

      byte <<= 1;
    e8878118:	7782                	ld	a5,32(sp)
    for (j = 0; j < 8; ++j) {
    e887811a:	66e6                	ld	a3,88(sp)
      byte <<= 1;
    e887811c:	0017979b          	slliw	a5,a5,0x1
    e8878120:	0ff7f793          	andi	a5,a5,255
    e8878124:	f03e                	sd	a5,32(sp)
    for (j = 0; j < 8; ++j) {
    e8878126:	77a2                	ld	a5,40(sp)
    e8878128:	37fd                	addiw	a5,a5,-1
    e887812a:	f43e                	sd	a5,40(sp)
    e887812c:	e3bd                	bnez	a5,e8878192 <cmult+0x18bc>
  for (i = 0; i < 32; ++i) {
    e887812e:	67a2                	ld	a5,8(sp)
    e8878130:	6726                	ld	a4,72(sp)
    e8878132:	6622                	ld	a2,8(sp)
    e8878134:	17fd                	addi	a5,a5,-1
    e8878136:	04c71b63          	bne	a4,a2,e887818c <cmult+0x18b6>
    }
  }

  memcpy(resultx, nqx, sizeof(limb) * 5);
    e887813a:	7506                	ld	a0,96(sp)
    e887813c:	85ea                	mv	a1,s10
    e887813e:	02800613          	li	a2,40
    e8878142:	25e040ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  memcpy(resultz, nqz, sizeof(limb) * 5);
    e8878146:	7526                	ld	a0,104(sp)
    e8878148:	85e6                	mv	a1,s9
    e887814a:	02800613          	li	a2,40
    e887814e:	252040ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
}
    e8878152:	2a013403          	ld	s0,672(sp)
    e8878156:	2a813083          	ld	ra,680(sp)
    e887815a:	29813483          	ld	s1,664(sp)
    e887815e:	29013903          	ld	s2,656(sp)
    e8878162:	28813983          	ld	s3,648(sp)
    e8878166:	28013a03          	ld	s4,640(sp)
    e887816a:	27813a83          	ld	s5,632(sp)
    e887816e:	27013b03          	ld	s6,624(sp)
    e8878172:	26813b83          	ld	s7,616(sp)
    e8878176:	26013c03          	ld	s8,608(sp)
    e887817a:	25813c83          	ld	s9,600(sp)
    e887817e:	25013d03          	ld	s10,592(sp)
    e8878182:	24813d83          	ld	s11,584(sp)
    e8878186:	2b010113          	addi	sp,sp,688
    e887818a:	8082                	ret
    e887818c:	e43e                	sd	a5,8(sp)
    e887818e:	823fe06f          	j	e88769b0 <cmult+0xda>
    e8878192:	87ca                	mv	a5,s2
    e8878194:	8966                	mv	s2,s9
    e8878196:	8cbe                	mv	s9,a5
    e8878198:	87a6                	mv	a5,s1
    e887819a:	84ea                	mv	s1,s10
    e887819c:	8d3e                	mv	s10,a5
    e887819e:	87d6                	mv	a5,s5
    e88781a0:	8aee                	mv	s5,s11
    e88781a2:	8dbe                	mv	s11,a5
    e88781a4:	87d2                	mv	a5,s4
    e88781a6:	8a5a                	mv	s4,s6
    e88781a8:	8b3e                	mv	s6,a5
    e88781aa:	82bfe06f          	j	e88769d4 <cmult+0xfe>

00000000e88781ae <curve25519_donna>:
static const unsigned char		kCurve25519BasePoint[ 32 ] = { 9 };

void curve25519_donna(u8 *, const u8 *, const u8 *);

void
curve25519_donna(u8 *mypublic, const u8 *secret, const u8 *basepoint) {
    e88781ae:	7109                	addi	sp,sp,-384
    e88781b0:	f6a6                	sd	s1,360(sp)
    e88781b2:	fe86                	sd	ra,376(sp)
    e88781b4:	faa2                	sd	s0,368(sp)
    e88781b6:	f2ca                	sd	s2,352(sp)
    e88781b8:	eece                	sd	s3,344(sp)
    e88781ba:	ead2                	sd	s4,336(sp)
    e88781bc:	e6d6                	sd	s5,328(sp)
    e88781be:	e2da                	sd	s6,320(sp)
    e88781c0:	fe5e                	sd	s7,312(sp)
    e88781c2:	fa62                	sd	s8,304(sp)
    e88781c4:	f666                	sd	s9,296(sp)
    e88781c6:	f26a                	sd	s10,288(sp)
    e88781c8:	ee6e                	sd	s11,280(sp)
    e88781ca:	ec2a                	sd	a0,24(sp)
  limb bp[5], x[5], z[5], zmone[5];
  uint8_t e[32];
  int i;

  if (basepoint == NULL) basepoint = kCurve25519BasePoint;
    e88781cc:	00055497          	auipc	s1,0x55
    e88781d0:	df448493          	addi	s1,s1,-524 # e88ccfc0 <kCurve25519BasePoint>
    e88781d4:	c211                	beqz	a2,e88781d8 <curve25519_donna+0x2a>
    e88781d6:	84b2                	mv	s1,a2
    e88781d8:	4781                	li	a5,0

  for (i = 0;i < 32;++i) e[i] = secret[i];
    e88781da:	18b0                	addi	a2,sp,120
    e88781dc:	02000713          	li	a4,32
    e88781e0:	80f5c68b          	lrbu	a3,a1,a5,0
    e88781e4:	00c7d68b          	srb	a3,a5,a2,0
    e88781e8:	0785                	addi	a5,a5,1
    e88781ea:	fee79be3          	bne	a5,a4,e88781e0 <curve25519_donna+0x32>
  e[0] &= 248;
    e88781ee:	07814783          	lbu	a5,120(sp)
  output[0] = load_limb(in) & 0x7ffffffffffff;
    e88781f2:	8526                	mv	a0,s1
    r2 +=   c;
    e88781f4:	4d09                	li	s10,2
  e[0] &= 248;
    e88781f6:	9be1                	andi	a5,a5,-8
    e88781f8:	06f10c23          	sb	a5,120(sp)
  e[31] &= 127;
    e88781fc:	09714783          	lbu	a5,151(sp)
    e8878200:	07f7f793          	andi	a5,a5,127
  e[31] |= 64;
    e8878204:	0407e793          	ori	a5,a5,64
    e8878208:	08f10ba3          	sb	a5,151(sp)
  output[0] = load_limb(in) & 0x7ffffffffffff;
    e887820c:	e94fe0ef          	jal	ra,e88768a0 <load_limb>
    e8878210:	c805350b          	extu	a0,a0,50,0
    e8878214:	ed2a                	sd	a0,152(sp)
  output[1] = (load_limb(in+6) >> 3) & 0x7ffffffffffff;
    e8878216:	00648513          	addi	a0,s1,6
    e887821a:	e86fe0ef          	jal	ra,e88768a0 <load_limb>
    e887821e:	d435350b          	extu	a0,a0,53,3
    e8878222:	f12a                	sd	a0,160(sp)
  output[2] = (load_limb(in+12) >> 6) & 0x7ffffffffffff;
    e8878224:	00c48513          	addi	a0,s1,12
    e8878228:	e78fe0ef          	jal	ra,e88768a0 <load_limb>
    e887822c:	e065350b          	extu	a0,a0,56,6
    e8878230:	f52a                	sd	a0,168(sp)
  output[3] = (load_limb(in+19) >> 1) & 0x7ffffffffffff;
    e8878232:	01348513          	addi	a0,s1,19
    e8878236:	e6afe0ef          	jal	ra,e88768a0 <load_limb>
    e887823a:	cc15350b          	extu	a0,a0,51,1
    e887823e:	f92a                	sd	a0,176(sp)
  output[4] = (load_limb(in+24) >> 12) & 0x7ffffffffffff;
    e8878240:	01848513          	addi	a0,s1,24
    e8878244:	e5cfe0ef          	jal	ra,e88768a0 <load_limb>
    e8878248:	f8c5350b          	extu	a0,a0,62,12
    e887824c:	fd2a                	sd	a0,184(sp)

  fexpand(bp, basepoint);
  cmult(x, z, e, bp);
    e887824e:	0934                	addi	a3,sp,152
    e8878250:	18b0                	addi	a2,sp,120
    e8878252:	11ac                	addi	a1,sp,232
    e8878254:	0188                	addi	a0,sp,192
    e8878256:	e80fe0ef          	jal	ra,e88768d6 <cmult>
  r4 = in[4];
    e887825a:	64b2                	ld	s1,264(sp)
  r2 = in[2];
    e887825c:	78ee                	ld	a7,248(sp)
    d4 = d419 * 2;
    e887825e:	02600693          	li	a3,38
    e8878262:	02d482b3          	mul	t0,s1,a3
  r3 = in[3];
    e8878266:	6f92                	ld	t6,256(sp)
  r1 = in[1];
    e8878268:	734e                	ld	t1,240(sp)
  r0 = in[0];
    e887826a:	782e                	ld	a6,232(sp)
    d419 = r4 * 19;
    e887826c:	4e4d                	li	t3,19
    d1 = r1 * 2;
    e887826e:	00131e93          	slli	t4,t1,0x1
    d0 = r0 * 2;
    e8878272:	00181713          	slli	a4,a6,0x1
    d2 = r2 * 2 * 19;
    e8878276:	02d886b3          	mul	a3,a7,a3
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887827a:	03f68633          	mul	a2,a3,t6
    e887827e:	87b2                	mv	a5,a2
    e8878280:	2062978b          	mula	a5,t0,t1
    e8878284:	0262b5b3          	mulhu	a1,t0,t1
    e8878288:	00c7b633          	sltu	a2,a5,a2
    e887828c:	8f3e                	mv	t5,a5
    e887828e:	03f6b6b3          	mulhu	a3,a3,t6
    e8878292:	96ae                	add	a3,a3,a1
    e8878294:	96b2                	add	a3,a3,a2
    e8878296:	03083633          	mulhu	a2,a6,a6
    e887829a:	21081f0b          	mula	t5,a6,a6
    e887829e:	96b2                	add	a3,a3,a2
    e88782a0:	00ff37b3          	sltu	a5,t5,a5
    e88782a4:	97b6                	add	a5,a5,a3
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e88782a6:	02e306b3          	mul	a3,t1,a4
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88782aa:	c80f358b          	extu	a1,t5,50,0
    e88782ae:	07b6                	slli	a5,a5,0xd
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e88782b0:	8536                	mv	a0,a3
    e88782b2:	2112950b          	mula	a0,t0,a7
    e88782b6:	0312b0b3          	mulhu	ra,t0,a7
    e88782ba:	00d536b3          	sltu	a3,a0,a3
    e88782be:	02e33633          	mulhu	a2,t1,a4
    e88782c2:	03cf8933          	mul	s2,t6,t3
    e88782c6:	9606                	add	a2,a2,ra
    e88782c8:	9636                	add	a2,a2,a3
    e88782ca:	86aa                	mv	a3,a0
    e88782cc:	032fb0b3          	mulhu	ra,t6,s2
    e88782d0:	212f968b          	mula	a3,t6,s2
    e88782d4:	9606                	add	a2,a2,ra
    e88782d6:	00a6b533          	sltu	a0,a3,a0
    e88782da:	9532                	add	a0,a0,a2
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88782dc:	033f5613          	srli	a2,t5,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88782e0:	03170f33          	mul	t5,a4,a7
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88782e4:	8e5d                	or	a2,a2,a5
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88782e6:	00c687b3          	add	a5,a3,a2
    e88782ea:	00d7b633          	sltu	a2,a5,a3
    e88782ee:	962a                	add	a2,a2,a0
    e88782f0:	0636                	slli	a2,a2,0xd
    e88782f2:	c807b50b          	extu	a0,a5,50,0
    e88782f6:	93cd                	srli	a5,a5,0x33
    e88782f8:	8fd1                	or	a5,a5,a2
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88782fa:	03f2b0b3          	mulhu	ra,t0,t6
    e88782fe:	847a                	mv	s0,t5
    e8878300:	031736b3          	mulhu	a3,a4,a7
    e8878304:	21f2940b          	mula	s0,t0,t6
    e8878308:	9686                	add	a3,a3,ra
    e887830a:	01e43f33          	sltu	t5,s0,t5
    e887830e:	9f36                	add	t5,t5,a3
    e8878310:	86a2                	mv	a3,s0
    e8878312:	2063168b          	mula	a3,t1,t1
    e8878316:	026330b3          	mulhu	ra,t1,t1
    e887831a:	0086b2b3          	sltu	t0,a3,s0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887831e:	97b6                	add	a5,a5,a3
    e8878320:	00d7b6b3          	sltu	a3,a5,a3
    e8878324:	c807b60b          	extu	a2,a5,50,0
    e8878328:	93cd                	srli	a5,a5,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887832a:	9f06                	add	t5,t5,ra
    e887832c:	9f16                	add	t5,t5,t0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887832e:	96fa                	add	a3,a3,t5
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878330:	02ef8f33          	mul	t5,t6,a4
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878334:	06b6                	slli	a3,a3,0xd
    e8878336:	8fd5                	or	a5,a5,a3
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878338:	03d8b9b3          	mulhu	s3,a7,t4
    e887833c:	82fa                	mv	t0,t5
    e887833e:	02efb0b3          	mulhu	ra,t6,a4
    e8878342:	21d8928b          	mula	t0,a7,t4
    e8878346:	90ce                	add	ra,ra,s3
    d419 = r4 * 19;
    e8878348:	03c483b3          	mul	t2,s1,t3
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887834c:	01e2bf33          	sltu	t5,t0,t5
    e8878350:	9f06                	add	t5,t5,ra
    e8878352:	8096                	mv	ra,t0
    e8878354:	2074908b          	mula	ra,s1,t2
    e8878358:	0274b9b3          	mulhu	s3,s1,t2
    e887835c:	0050b2b3          	sltu	t0,ra,t0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878360:	9786                	add	a5,a5,ra
    e8878362:	0017b0b3          	sltu	ra,a5,ra
    e8878366:	c807ba8b          	extu	s5,a5,50,0
    e887836a:	93cd                	srli	a5,a5,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887836c:	9f4e                	add	t5,t5,s3
    e887836e:	9f16                	add	t5,t5,t0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878370:	90fa                	add	ra,ra,t5
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878372:	02970f33          	mul	t5,a4,s1
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878376:	00b6                	slli	ra,ra,0xd
    e8878378:	00f0e7b3          	or	a5,ra,a5
    d4 = d419 * 2;
    e887837c:	02600993          	li	s3,38
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878380:	847a                	mv	s0,t5
    e8878382:	21df940b          	mula	s0,t6,t4
    e8878386:	03dfb6b3          	mulhu	a3,t6,t4
    e887838a:	01e43f33          	sltu	t5,s0,t5
    e887838e:	02973733          	mulhu	a4,a4,s1
    e8878392:	9736                	add	a4,a4,a3
    e8878394:	86a2                	mv	a3,s0
    e8878396:	2118968b          	mula	a3,a7,a7
    e887839a:	977a                	add	a4,a4,t5
    e887839c:	0318bf33          	mulhu	t5,a7,a7
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88783a0:	97b6                	add	a5,a5,a3
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e88783a2:	0086beb3          	sltu	t4,a3,s0
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88783a6:	00d7b6b3          	sltu	a3,a5,a3
    e88783aa:	c807bb8b          	extu	s7,a5,50,0
    e88783ae:	93cd                	srli	a5,a5,0x33
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e88783b0:	977a                	add	a4,a4,t5
    e88783b2:	9776                	add	a4,a4,t4
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88783b4:	96ba                	add	a3,a3,a4
    e88783b6:	06b6                	slli	a3,a3,0xd
    e88783b8:	8fd5                	or	a5,a5,a3
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88783ba:	20fe158b          	mula	a1,t3,a5
  r3 = in[3];
    e88783be:	86d6                	mv	a3,s5
  r4 = in[4];
    e88783c0:	8e5e                	mv	t3,s7
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88783c2:	0335d793          	srli	a5,a1,0x33
    e88783c6:	c805bf0b          	extu	t5,a1,50,0
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88783ca:	00a785b3          	add	a1,a5,a0
    e88783ce:	c805b28b          	extu	t0,a1,50,0
    e88783d2:	91cd                	srli	a1,a1,0x33
    r2 +=   c;
    e88783d4:	95b2                	add	a1,a1,a2
  r2 = in[2];
    e88783d6:	872e                	mv	a4,a1
  r1 = in[1];
    e88783d8:	8516                	mv	a0,t0
  r0 = in[0];
    e88783da:	87fa                	mv	a5,t5
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e88783dc:	464d                	li	a2,19
    d2 = r2 * 2 * 19;
    e88783de:	03370cb3          	mul	s9,a4,s3
    d0 = r0 * 2;
    e88783e2:	00179e93          	slli	t4,a5,0x1
    d1 = r1 * 2;
    e88783e6:	00151c13          	slli	s8,a0,0x1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88783ea:	02dc80b3          	mul	ra,s9,a3
    d4 = d419 * 2;
    e88783ee:	033e0b33          	mul	s6,t3,s3
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88783f2:	8d86                	mv	s11,ra
    e88783f4:	20ab1d8b          	mula	s11,s6,a0
    e88783f8:	02dcbcb3          	mulhu	s9,s9,a3
    e88783fc:	001db0b3          	sltu	ra,s11,ra
    e8878400:	02ab3a33          	mulhu	s4,s6,a0
    e8878404:	9a66                	add	s4,s4,s9
    e8878406:	9a06                	add	s4,s4,ra
    e8878408:	80ee                	mv	ra,s11
    e887840a:	20f7908b          	mula	ra,a5,a5
    e887840e:	02f7bcb3          	mulhu	s9,a5,a5
    e8878412:	01b0bdb3          	sltu	s11,ra,s11
    e8878416:	8786                	mv	a5,ra
    e8878418:	019a00b3          	add	ra,s4,s9
    e887841c:	90ee                	add	ra,ra,s11
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887841e:	03ce8db3          	mul	s11,t4,t3
    e8878422:	03ceba33          	mulhu	s4,t4,t3
    e8878426:	8cee                	mv	s9,s11
    e8878428:	0386b433          	mulhu	s0,a3,s8
    e887842c:	21869c8b          	mula	s9,a3,s8
    e8878430:	9a22                	add	s4,s4,s0
    e8878432:	01bcbdb3          	sltu	s11,s9,s11
    e8878436:	02e73433          	mulhu	s0,a4,a4
    e887843a:	9dd2                	add	s11,s11,s4
    e887843c:	8a66                	mv	s4,s9
    e887843e:	20e71a0b          	mula	s4,a4,a4
    e8878442:	9da2                	add	s11,s11,s0
    e8878444:	019a3cb3          	sltu	s9,s4,s9
    e8878448:	01bc8433          	add	s0,s9,s11
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887844c:	03d50db3          	mul	s11,a0,t4
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878450:	e822                	sd	s0,16(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878452:	c807b40b          	extu	s0,a5,50,0
    e8878456:	e022                	sd	s0,0(sp)
    e8878458:	93cd                	srli	a5,a5,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887845a:	8cee                	mv	s9,s11
    e887845c:	20eb1c8b          	mula	s9,s6,a4
    e8878460:	01bcb433          	sltu	s0,s9,s11
    e8878464:	e422                	sd	s0,8(sp)
    e8878466:	02eb3db3          	mulhu	s11,s6,a4
    e887846a:	03d53433          	mulhu	s0,a0,t4
    e887846e:	946e                	add	s0,s0,s11
    e8878470:	6da2                	ld	s11,8(sp)
    e8878472:	946e                	add	s0,s0,s11
    e8878474:	02c68db3          	mul	s11,a3,a2
    e8878478:	e422                	sd	s0,8(sp)
    e887847a:	02ddb433          	mulhu	s0,s11,a3
    e887847e:	f022                	sd	s0,32(sp)
    e8878480:	8466                	mv	s0,s9
    e8878482:	20dd940b          	mula	s0,s11,a3
    e8878486:	8da2                	mv	s11,s0
    e8878488:	01943433          	sltu	s0,s0,s9
    e887848c:	f422                	sd	s0,40(sp)
    e887848e:	7c82                	ld	s9,32(sp)
    e8878490:	6422                	ld	s0,8(sp)
    e8878492:	9466                	add	s0,s0,s9
    e8878494:	7ca2                	ld	s9,40(sp)
    e8878496:	9ca2                	add	s9,s9,s0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878498:	00d09413          	slli	s0,ra,0xd
    e887849c:	8fc1                	or	a5,a5,s0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887849e:	97ee                	add	a5,a5,s11
    e88784a0:	01b7bdb3          	sltu	s11,a5,s11
    e88784a4:	c807b40b          	extu	s0,a5,50,0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88784a8:	0330d093          	srli	ra,ra,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88784ac:	9c86                	add	s9,s9,ra
    e88784ae:	9cee                	add	s9,s9,s11
    e88784b0:	e422                	sd	s0,8(sp)
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88784b2:	02ee8db3          	mul	s11,t4,a4
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88784b6:	93cd                	srli	a5,a5,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88784b8:	02db3433          	mulhu	s0,s6,a3
    e88784bc:	f022                	sd	s0,32(sp)
    e88784be:	846e                	mv	s0,s11
    e88784c0:	20db140b          	mula	s0,s6,a3
    e88784c4:	02eeb0b3          	mulhu	ra,t4,a4
    e88784c8:	8b22                	mv	s6,s0
    e88784ca:	01b43db3          	sltu	s11,s0,s11
    e88784ce:	7402                	ld	s0,32(sp)
    e88784d0:	90a2                	add	ra,ra,s0
    e88784d2:	9d86                	add	s11,s11,ra
    e88784d4:	02a530b3          	mulhu	ra,a0,a0
    e88784d8:	845a                	mv	s0,s6
    e88784da:	20a5140b          	mula	s0,a0,a0
    e88784de:	9d86                	add	s11,s11,ra
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88784e0:	00dc9093          	slli	ra,s9,0xd
    e88784e4:	00f0e7b3          	or	a5,ra,a5
    e88784e8:	033cdc93          	srli	s9,s9,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88784ec:	03d680b3          	mul	ra,a3,t4
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88784f0:	01643b33          	sltu	s6,s0,s6
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88784f4:	97a2                	add	a5,a5,s0
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88784f6:	9b6e                	add	s6,s6,s11
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88784f8:	0087b533          	sltu	a0,a5,s0
    e88784fc:	9b66                	add	s6,s6,s9
    e88784fe:	955a                	add	a0,a0,s6
    e8878500:	c807bd8b          	extu	s11,a5,50,0
    e8878504:	93cd                	srli	a5,a5,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878506:	8406                	mv	s0,ra
    e8878508:	2187140b          	mula	s0,a4,s8
    d419 = r4 * 19;
    e887850c:	02ce0b33          	mul	s6,t3,a2
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878510:	8ca2                	mv	s9,s0
    e8878512:	001430b3          	sltu	ra,s0,ra
    e8878516:	03d6b6b3          	mulhu	a3,a3,t4
    e887851a:	03873eb3          	mulhu	t4,a4,s8
    e887851e:	21cb1c8b          	mula	s9,s6,t3
    e8878522:	96f6                	add	a3,a3,t4
    e8878524:	9686                	add	a3,a3,ra
    e8878526:	03cb3eb3          	mulhu	t4,s6,t3
    e887852a:	008cb733          	sltu	a4,s9,s0
  } while(--count);
    e887852e:	4405                	li	s0,1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878530:	96f6                	add	a3,a3,t4
    e8878532:	96ba                	add	a3,a3,a4
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878534:	00d51713          	slli	a4,a0,0xd
    e8878538:	8fd9                	or	a5,a5,a4
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887853a:	97e6                	add	a5,a5,s9
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887853c:	914d                	srli	a0,a0,0x33
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887853e:	9536                	add	a0,a0,a3
    e8878540:	0197bcb3          	sltu	s9,a5,s9
    e8878544:	9caa                	add	s9,s9,a0
    e8878546:	00dc9713          	slli	a4,s9,0xd
    e887854a:	c807b68b          	extu	a3,a5,50,0
    e887854e:	93cd                	srli	a5,a5,0x33
    e8878550:	8fd9                	or	a5,a5,a4
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878552:	6742                	ld	a4,16(sp)
    e8878554:	9a3e                	add	s4,s4,a5
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878556:	033cdc93          	srli	s9,s9,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887855a:	00fa37b3          	sltu	a5,s4,a5
    e887855e:	9cba                	add	s9,s9,a4
    e8878560:	9cbe                	add	s9,s9,a5
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878562:	6702                	ld	a4,0(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878564:	c80a3e0b          	extu	t3,s4,50,0
    e8878568:	0cb6                	slli	s9,s9,0xd
    e887856a:	033a5a13          	srli	s4,s4,0x33
    e887856e:	014cea33          	or	s4,s9,s4
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878572:	2146170b          	mula	a4,a2,s4
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8878576:	6522                	ld	a0,8(sp)
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878578:	c807378b          	extu	a5,a4,50,0
    e887857c:	934d                	srli	a4,a4,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887857e:	972a                	add	a4,a4,a0
    e8878580:	c807350b          	extu	a0,a4,50,0
    e8878584:	934d                	srli	a4,a4,0x33
    r2 +=   c;
    e8878586:	976e                	add	a4,a4,s11
  } while(--count);
    e8878588:	008d0463          	beq	s10,s0,e8878590 <curve25519_donna+0x3e2>
    e887858c:	6cb0206f          	j	e887b456 <curve25519_donna+0x32a8>
  t[0]  =  ((uint128_t) r0) * s0;
    e8878590:	02f80b33          	mul	s6,a6,a5
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878594:	02a3bc33          	mulhu	s8,t2,a0
    e8878598:	80da                	mv	ra,s6
  t[0]  =  ((uint128_t) r0) * s0;
    e887859a:	02f83eb3          	mulhu	t4,a6,a5
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887859e:	20a3908b          	mula	ra,t2,a0
    e88785a2:	9ee2                	add	t4,t4,s8
  r1 *= 19;
    e88785a4:	02c30c33          	mul	s8,t1,a2
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88785a8:	0160bb33          	sltu	s6,ra,s6
    e88785ac:	9b76                	add	s6,s6,t4
    e88785ae:	8e86                	mv	t4,ra
    e88785b0:	03cc3cb3          	mulhu	s9,s8,t3
    e88785b4:	21cc1e8b          	mula	t4,s8,t3
    e88785b8:	9b66                	add	s6,s6,s9
    e88785ba:	001eb0b3          	sltu	ra,t4,ra
    e88785be:	90da                	add	ra,ra,s6
    e88785c0:	8cf6                	mv	s9,t4
    e88785c2:	02e93b33          	mulhu	s6,s2,a4
    e88785c6:	20e91c8b          	mula	s9,s2,a4
    e88785ca:	90da                	add	ra,ra,s6
  r2 *= 19;
    e88785cc:	02c88a33          	mul	s4,a7,a2
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88785d0:	01dcbeb3          	sltu	t4,s9,t4
    e88785d4:	9e86                	add	t4,t4,ra
    e88785d6:	8b66                	mv	s6,s9
    e88785d8:	0346b0b3          	mulhu	ra,a3,s4
    e88785dc:	21469b0b          	mula	s6,a3,s4
    e88785e0:	9e86                	add	t4,t4,ra
    e88785e2:	019b3cb3          	sltu	s9,s6,s9
    e88785e6:	9cf6                	add	s9,s9,t4
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e88785e8:	02a80eb3          	mul	t4,a6,a0
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88785ec:	0cb6                	slli	s9,s9,0xd
    e88785ee:	c80b308b          	extu	ra,s6,50,0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e88785f2:	8d76                	mv	s10,t4
    e88785f4:	20f31d0b          	mula	s10,t1,a5
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e88785f8:	02f33db3          	mulhu	s11,t1,a5
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e88785fc:	01dd3eb3          	sltu	t4,s10,t4
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8878600:	02a83c33          	mulhu	s8,a6,a0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878604:	9c6e                	add	s8,s8,s11
    e8878606:	9c76                	add	s8,s8,t4
    e8878608:	02e3bdb3          	mulhu	s11,t2,a4
    e887860c:	8eea                	mv	t4,s10
    e887860e:	20e39e8b          	mula	t4,t2,a4
    e8878612:	9c6e                	add	s8,s8,s11
    e8878614:	01aebd33          	sltu	s10,t4,s10
    e8878618:	9d62                	add	s10,s10,s8
    e887861a:	8476                	mv	s0,t4
    e887861c:	034e3c33          	mulhu	s8,t3,s4
    e8878620:	214e140b          	mula	s0,t3,s4
    e8878624:	9d62                	add	s10,s10,s8
    e8878626:	01d43eb3          	sltu	t4,s0,t4
    e887862a:	9eea                	add	t4,t4,s10
    e887862c:	02d93d33          	mulhu	s10,s2,a3
    e8878630:	8c22                	mv	s8,s0
    e8878632:	20d91c0b          	mula	s8,s2,a3
    e8878636:	9eea                	add	t4,t4,s10
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8878638:	02e80d33          	mul	s10,a6,a4
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887863c:	008c3a33          	sltu	s4,s8,s0
    e8878640:	9ed2                	add	t4,t4,s4
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878642:	033b5a13          	srli	s4,s6,0x33
    e8878646:	014cea33          	or	s4,s9,s4
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887864a:	014c0b33          	add	s6,s8,s4
    e887864e:	018b3c33          	sltu	s8,s6,s8
    e8878652:	9c76                	add	s8,s8,t4
    e8878654:	0c36                	slli	s8,s8,0xd
    e8878656:	c80b3a0b          	extu	s4,s6,50,0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887865a:	8dea                	mv	s11,s10
    e887865c:	20f89d8b          	mula	s11,a7,a5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8878660:	02f8bcb3          	mulhu	s9,a7,a5
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8878664:	01adbd33          	sltu	s10,s11,s10
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8878668:	02e83eb3          	mulhu	t4,a6,a4
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887866c:	9ee6                	add	t4,t4,s9
    e887866e:	01dd0cb3          	add	s9,s10,t4
    e8878672:	8d6e                	mv	s10,s11
    e8878674:	20a31d0b          	mula	s10,t1,a0
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8878678:	02a33eb3          	mulhu	t4,t1,a0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887867c:	01bd3db3          	sltu	s11,s10,s11
    e8878680:	9ee6                	add	t4,t4,s9
    e8878682:	8cea                	mv	s9,s10
    e8878684:	20d39c8b          	mula	s9,t2,a3
    e8878688:	9eee                	add	t4,t4,s11
    e887868a:	02d3bdb3          	mulhu	s11,t2,a3
    e887868e:	01acbd33          	sltu	s10,s9,s10
    e8878692:	9eee                	add	t4,t4,s11
    e8878694:	9eea                	add	t4,t4,s10
    e8878696:	8d66                	mv	s10,s9
    e8878698:	21c91d0b          	mula	s10,s2,t3
    e887869c:	03c93db3          	mulhu	s11,s2,t3
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88786a0:	033b5913          	srli	s2,s6,0x33
    e88786a4:	012c6933          	or	s2,s8,s2
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e88786a8:	019d3cb3          	sltu	s9,s10,s9
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88786ac:	02d80c33          	mul	s8,a6,a3
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e88786b0:	9eee                	add	t4,t4,s11
    e88786b2:	9cf6                	add	s9,s9,t4
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88786b4:	012d0eb3          	add	t4,s10,s2
    e88786b8:	01aeb933          	sltu	s2,t4,s10
    e88786bc:	9cca                	add	s9,s9,s2
    e88786be:	0cb6                	slli	s9,s9,0xd
    e88786c0:	c80eb90b          	extu	s2,t4,50,0
  t[3] += ((uint128_t) r4) * s4;
    e88786c4:	8de2                	mv	s11,s8
    e88786c6:	20ff9d8b          	mula	s11,t6,a5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88786ca:	02ffbd33          	mulhu	s10,t6,a5
  t[3] += ((uint128_t) r4) * s4;
    e88786ce:	018dbc33          	sltu	s8,s11,s8
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88786d2:	02d83b33          	mulhu	s6,a6,a3
  t[3] += ((uint128_t) r4) * s4;
    e88786d6:	9b6a                	add	s6,s6,s10
    e88786d8:	016c0d33          	add	s10,s8,s6
    e88786dc:	8c6e                	mv	s8,s11
    e88786de:	20a89c0b          	mula	s8,a7,a0
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88786e2:	02a8bb33          	mulhu	s6,a7,a0
  t[3] += ((uint128_t) r4) * s4;
    e88786e6:	01bc3db3          	sltu	s11,s8,s11
    e88786ea:	9b6a                	add	s6,s6,s10
    e88786ec:	9b6e                	add	s6,s6,s11
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88786ee:	02e33d33          	mulhu	s10,t1,a4
  t[3] += ((uint128_t) r4) * s4;
    e88786f2:	8de2                	mv	s11,s8
    e88786f4:	20e31d8b          	mula	s11,t1,a4
    e88786f8:	9b6a                	add	s6,s6,s10
    e88786fa:	018dbc33          	sltu	s8,s11,s8
    e88786fe:	9c5a                	add	s8,s8,s6
    e8878700:	8b6e                	mv	s6,s11
    e8878702:	21c39b0b          	mula	s6,t2,t3
    e8878706:	03c3bd33          	mulhu	s10,t2,t3
    e887870a:	01bb33b3          	sltu	t2,s6,s11
    e887870e:	9c6a                	add	s8,s8,s10
    e8878710:	9c1e                	add	s8,s8,t2
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878712:	033ed393          	srli	t2,t4,0x33
    e8878716:	007ce3b3          	or	t2,s9,t2
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887871a:	93da                	add	t2,t2,s6
    e887871c:	0163bb33          	sltu	s6,t2,s6
    e8878720:	9b62                	add	s6,s6,s8
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878722:	03c80c33          	mul	s8,a6,t3
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878726:	0b36                	slli	s6,s6,0xd
    e8878728:	c803be8b          	extu	t4,t2,50,0
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887872c:	8462                	mv	s0,s8
    e887872e:	20f4940b          	mula	s0,s1,a5
    e8878732:	03c83833          	mulhu	a6,a6,t3
    e8878736:	01843c33          	sltu	s8,s0,s8
    e887873a:	02f4be33          	mulhu	t3,s1,a5
    e887873e:	87a2                	mv	a5,s0
    e8878740:	20d3178b          	mula	a5,t1,a3
    e8878744:	9872                	add	a6,a6,t3
    e8878746:	9862                	add	a6,a6,s8
    e8878748:	02d33c33          	mulhu	s8,t1,a3
    e887874c:	86be                	mv	a3,a5
    e887874e:	0087b4b3          	sltu	s1,a5,s0
    e8878752:	20af968b          	mula	a3,t6,a0
    e8878756:	9862                	add	a6,a6,s8
    e8878758:	94c2                	add	s1,s1,a6
    e887875a:	02afb833          	mulhu	a6,t6,a0
    e887875e:	8436                	mv	s0,a3
    e8878760:	00f6b7b3          	sltu	a5,a3,a5
    e8878764:	02e8b533          	mulhu	a0,a7,a4
    e8878768:	94c2                	add	s1,s1,a6
    e887876a:	97a6                	add	a5,a5,s1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887876c:	8806                	mv	a6,ra
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887876e:	20e8940b          	mula	s0,a7,a4
    e8878772:	97aa                	add	a5,a5,a0
    e8878774:	00d436b3          	sltu	a3,s0,a3
    e8878778:	96be                	add	a3,a3,a5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887877a:	0333d793          	srli	a5,t2,0x33
    e887877e:	00fb67b3          	or	a5,s6,a5
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878782:	97a2                	add	a5,a5,s0
    e8878784:	0087b733          	sltu	a4,a5,s0
    e8878788:	9736                	add	a4,a4,a3
  r1 *= 19;
    e887878a:	02c286b3          	mul	a3,t0,a2
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887878e:	0736                	slli	a4,a4,0xd
    e8878790:	c807b88b          	extu	a7,a5,50,0
    e8878794:	93cd                	srli	a5,a5,0x33
    e8878796:	8fd9                	or	a5,a5,a4
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878798:	03168733          	mul	a4,a3,a7
  r2 *= 19;
    e887879c:	02c58e33          	mul	t3,a1,a2
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88787a0:	20f6180b          	mula	a6,a2,a5
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88787a4:	87ba                	mv	a5,a4
    e88787a6:	21ce978b          	mula	a5,t4,t3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88787aa:	c808308b          	extu	ra,a6,50,0
    e88787ae:	03385813          	srli	a6,a6,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88787b2:	9a42                	add	s4,s4,a6
    e88787b4:	c80a3f8b          	extu	t6,s4,50,0
    e88787b8:	033a5a13          	srli	s4,s4,0x33
  r2 +=   c;
    e88787bc:	012a0833          	add	a6,s4,s2
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88787c0:	03ceb533          	mulhu	a0,t4,t3
    e88787c4:	00e7b733          	sltu	a4,a5,a4
    e88787c8:	0316b6b3          	mulhu	a3,a3,a7
    e88787cc:	96aa                	add	a3,a3,a0
    e88787ce:	96ba                	add	a3,a3,a4
  t[0]  =  ((uint128_t) r0) * s0;
    e88787d0:	021f3533          	mulhu	a0,t5,ra
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88787d4:	873e                	mv	a4,a5
    e88787d6:	201f170b          	mula	a4,t5,ra
    e88787da:	96aa                	add	a3,a3,a0
  r4 *= 19;
    e88787dc:	02cb8933          	mul	s2,s7,a2
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88787e0:	00f737b3          	sltu	a5,a4,a5
    e88787e4:	853a                	mv	a0,a4
    e88787e6:	97b6                	add	a5,a5,a3
    e88787e8:	212f950b          	mula	a0,t6,s2
    e88787ec:	032fb6b3          	mulhu	a3,t6,s2
    e88787f0:	00e53733          	sltu	a4,a0,a4
  r3 *= 19;
    e88787f4:	02ca83b3          	mul	t2,s5,a2
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88787f8:	97b6                	add	a5,a5,a3
    e88787fa:	86aa                	mv	a3,a0
    e88787fc:	973e                	add	a4,a4,a5
    e88787fe:	2078168b          	mula	a3,a6,t2
    e8878802:	027837b3          	mulhu	a5,a6,t2
    e8878806:	00a6b533          	sltu	a0,a3,a0
    e887880a:	973e                	add	a4,a4,a5
    e887880c:	00e507b3          	add	a5,a0,a4
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878810:	03c88533          	mul	a0,a7,t3
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878814:	c806b70b          	extu	a4,a3,50,0
    e8878818:	92cd                	srli	a3,a3,0x33
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887881a:	832a                	mv	t1,a0
    e887881c:	207e930b          	mula	t1,t4,t2
    e8878820:	027eb4b3          	mulhu	s1,t4,t2
    e8878824:	00a33533          	sltu	a0,t1,a0
    e8878828:	03c8be33          	mulhu	t3,a7,t3
    e887882c:	9e26                	add	t3,t3,s1
    e887882e:	9e2a                	add	t3,t3,a0
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8878830:	0250b4b3          	mulhu	s1,ra,t0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878834:	851a                	mv	a0,t1
    e8878836:	2050950b          	mula	a0,ra,t0
    e887883a:	9e26                	add	t3,t3,s1
    e887883c:	00653333          	sltu	t1,a0,t1
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8878840:	03ff34b3          	mulhu	s1,t5,t6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878844:	9372                	add	t1,t1,t3
    e8878846:	8e2a                	mv	t3,a0
    e8878848:	21ff1e0b          	mula	t3,t5,t6
    e887884c:	9326                	add	t1,t1,s1
    e887884e:	00ae3533          	sltu	a0,t3,a0
    e8878852:	032834b3          	mulhu	s1,a6,s2
    e8878856:	951a                	add	a0,a0,t1
    e8878858:	8372                	mv	t1,t3
    e887885a:	2128130b          	mula	t1,a6,s2
    e887885e:	9526                	add	a0,a0,s1
    e8878860:	01c33e33          	sltu	t3,t1,t3
    e8878864:	9e2a                	add	t3,t3,a0
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878866:	00d79513          	slli	a0,a5,0xd
    e887886a:	8ec9                	or	a3,a3,a0
    e887886c:	93cd                	srli	a5,a5,0x33
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887886e:	969a                	add	a3,a3,t1
    e8878870:	97f2                	add	a5,a5,t3
    e8878872:	0066b533          	sltu	a0,a3,t1
    e8878876:	953e                	add	a0,a0,a5
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8878878:	032e87b3          	mul	a5,t4,s2
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887887c:	c806be0b          	extu	t3,a3,50,0
    e8878880:	92cd                	srli	a3,a3,0x33
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8878882:	833e                	mv	t1,a5
    e8878884:	2078930b          	mula	t1,a7,t2
    e8878888:	032eb4b3          	mulhu	s1,t4,s2
    e887888c:	00f337b3          	sltu	a5,t1,a5
    e8878890:	0278ba33          	mulhu	s4,a7,t2
    e8878894:	014483b3          	add	t2,s1,s4
    e8878898:	93be                	add	t2,t2,a5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887889a:	02b0b4b3          	mulhu	s1,ra,a1
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887889e:	879a                	mv	a5,t1
    e88788a0:	20b0978b          	mula	a5,ra,a1
    e88788a4:	93a6                	add	t2,t2,s1
    e88788a6:	0067b333          	sltu	t1,a5,t1
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e88788aa:	025fb4b3          	mulhu	s1,t6,t0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e88788ae:	931e                	add	t1,t1,t2
    e88788b0:	83be                	mv	t2,a5
    e88788b2:	205f938b          	mula	t2,t6,t0
    e88788b6:	9326                	add	t1,t1,s1
    e88788b8:	00f3b7b3          	sltu	a5,t2,a5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e88788bc:	030f34b3          	mulhu	s1,t5,a6
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e88788c0:	979a                	add	a5,a5,t1
    e88788c2:	831e                	mv	t1,t2
    e88788c4:	210f130b          	mula	t1,t5,a6
    e88788c8:	97a6                	add	a5,a5,s1
    e88788ca:	007333b3          	sltu	t2,t1,t2
    e88788ce:	93be                	add	t2,t2,a5
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88788d0:	00d51793          	slli	a5,a0,0xd
    e88788d4:	8edd                	or	a3,a3,a5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88788d6:	03df07b3          	mul	a5,t5,t4
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88788da:	914d                	srli	a0,a0,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88788dc:	951e                	add	a0,a0,t2
    e88788de:	969a                	add	a3,a3,t1
    e88788e0:	0066b333          	sltu	t1,a3,t1
    e88788e4:	932a                	add	t1,t1,a0
    e88788e6:	c806b50b          	extu	a0,a3,50,0
    e88788ea:	92cd                	srli	a3,a3,0x33
  t[3] += ((uint128_t) r4) * s4;
    e88788ec:	83be                	mv	t2,a5
    e88788ee:	2128938b          	mula	t2,a7,s2
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88788f2:	03df3a33          	mulhu	s4,t5,t4
  t[3] += ((uint128_t) r4) * s4;
    e88788f6:	00f3b4b3          	sltu	s1,t2,a5
    e88788fa:	0328bb33          	mulhu	s6,a7,s2
    e88788fe:	016a07b3          	add	a5,s4,s6
    e8878902:	94be                	add	s1,s1,a5
    e8878904:	879e                	mv	a5,t2
    e8878906:	2150978b          	mula	a5,ra,s5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887890a:	0350b933          	mulhu	s2,ra,s5
  t[3] += ((uint128_t) r4) * s4;
    e887890e:	0077b3b3          	sltu	t2,a5,t2
    e8878912:	94ca                	add	s1,s1,s2
    e8878914:	949e                	add	s1,s1,t2
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878916:	02bfb933          	mulhu	s2,t6,a1
  t[3] += ((uint128_t) r4) * s4;
    e887891a:	83be                	mv	t2,a5
    e887891c:	20bf938b          	mula	t2,t6,a1
    e8878920:	94ca                	add	s1,s1,s2
    e8878922:	00f3b7b3          	sltu	a5,t2,a5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878926:	0302b933          	mulhu	s2,t0,a6
  t[3] += ((uint128_t) r4) * s4;
    e887892a:	97a6                	add	a5,a5,s1
    e887892c:	849e                	mv	s1,t2
    e887892e:	2102948b          	mula	s1,t0,a6
    e8878932:	97ca                	add	a5,a5,s2
    e8878934:	0074b3b3          	sltu	t2,s1,t2
    e8878938:	93be                	add	t2,t2,a5
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887893a:	00d31793          	slli	a5,t1,0xd
    e887893e:	8edd                	or	a3,a3,a5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878940:	96a6                	add	a3,a3,s1
    e8878942:	0096b7b3          	sltu	a5,a3,s1
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878946:	031f04b3          	mul	s1,t5,a7
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887894a:	03335313          	srli	t1,t1,0x33
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887894e:	931e                	add	t1,t1,t2
    e8878950:	979a                	add	a5,a5,t1
    e8878952:	c806b38b          	extu	t2,a3,50,0
    e8878956:	92cd                	srli	a3,a3,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878958:	8326                	mv	t1,s1
    e887895a:	21d2930b          	mula	t1,t0,t4
    e887895e:	03d2b933          	mulhu	s2,t0,t4
    e8878962:	009334b3          	sltu	s1,t1,s1
    e8878966:	829a                	mv	t0,t1
    e8878968:	031f3f33          	mulhu	t5,t5,a7
    e887896c:	2170928b          	mula	t0,ra,s7
    e8878970:	9f4a                	add	t5,t5,s2
    e8878972:	9f26                	add	t5,t5,s1
    e8878974:	0370b4b3          	mulhu	s1,ra,s7
    e8878978:	0062b333          	sltu	t1,t0,t1
    e887897c:	9f26                	add	t5,t5,s1
    e887897e:	9f1a                	add	t5,t5,t1
    e8878980:	035fb4b3          	mulhu	s1,t6,s5
    e8878984:	8316                	mv	t1,t0
    e8878986:	215f930b          	mula	t1,t6,s5
    e887898a:	9f26                	add	t5,t5,s1
    e887898c:	005332b3          	sltu	t0,t1,t0
    e8878990:	92fa                	add	t0,t0,t5
    e8878992:	841a                	mv	s0,t1
    e8878994:	02b83f33          	mulhu	t5,a6,a1
    e8878998:	20b8140b          	mula	s0,a6,a1
    e887899c:	92fa                	add	t0,t0,t5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887899e:	00d79f13          	slli	t5,a5,0xd
    e88789a2:	00df66b3          	or	a3,t5,a3
    e88789a6:	93cd                	srli	a5,a5,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88789a8:	00643333          	sltu	t1,s0,t1
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88789ac:	96a2                	add	a3,a3,s0
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88789ae:	9316                	add	t1,t1,t0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88789b0:	0086b5b3          	sltu	a1,a3,s0
    e88789b4:	979a                	add	a5,a5,t1
    e88789b6:	95be                	add	a1,a1,a5
    e88789b8:	c806ba8b          	extu	s5,a3,50,0
    e88789bc:	05b6                	slli	a1,a1,0xd
    e88789be:	92cd                	srli	a3,a3,0x33
    e88789c0:	8ecd                	or	a3,a3,a1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88789c2:	20d6170b          	mula	a4,a2,a3
    e88789c6:	c807330b          	extu	t1,a4,50,0
    d4 = d419 * 2;
    e88789ca:	033a82b3          	mul	t0,s5,s3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88789ce:	03375793          	srli	a5,a4,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88789d2:	97f2                	add	a5,a5,t3
    e88789d4:	c807be0b          	extu	t3,a5,50,0
    e88789d8:	93cd                	srli	a5,a5,0x33
  r2 +=   c;
    e88789da:	97aa                	add	a5,a5,a0
    d0 = r0 * 2;
    e88789dc:	00131493          	slli	s1,t1,0x1
    d1 = r1 * 2;
    e88789e0:	001e1a13          	slli	s4,t3,0x1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88789e4:	02630733          	mul	a4,t1,t1
    e88789e8:	03c2b533          	mulhu	a0,t0,t3
    e88789ec:	86ba                	mv	a3,a4
    e88789ee:	026335b3          	mulhu	a1,t1,t1
    e88789f2:	21c2968b          	mula	a3,t0,t3
    e88789f6:	95aa                	add	a1,a1,a0
    d2 = r2 * 2 * 19;
    e88789f8:	033789b3          	mul	s3,a5,s3
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88789fc:	00e6b733          	sltu	a4,a3,a4
    e8878a00:	972e                	add	a4,a4,a1
    e8878a02:	8536                	mv	a0,a3
    e8878a04:	0279b5b3          	mulhu	a1,s3,t2
    e8878a08:	2079950b          	mula	a0,s3,t2
    e8878a0c:	972e                	add	a4,a4,a1
    e8878a0e:	00d536b3          	sltu	a3,a0,a3
    e8878a12:	00e68f33          	add	t5,a3,a4
    d419 = r4 * 19;
    e8878a16:	02ca8933          	mul	s2,s5,a2
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878a1a:	c805358b          	extu	a1,a0,50,0
    e8878a1e:	914d                	srli	a0,a0,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8878a20:	029e0733          	mul	a4,t3,s1
    e8878a24:	02c38633          	mul	a2,t2,a2
    e8878a28:	86ba                	mv	a3,a4
    e8878a2a:	029e39b3          	mulhu	s3,t3,s1
    e8878a2e:	02c3bb33          	mulhu	s6,t2,a2
    e8878a32:	20c3968b          	mula	a3,t2,a2
    e8878a36:	99da                	add	s3,s3,s6
    e8878a38:	00e6b733          	sltu	a4,a3,a4
    e8878a3c:	974e                	add	a4,a4,s3
    e8878a3e:	8b36                	mv	s6,a3
    e8878a40:	02f2b9b3          	mulhu	s3,t0,a5
    e8878a44:	20f29b0b          	mula	s6,t0,a5
    e8878a48:	974e                	add	a4,a4,s3
    e8878a4a:	00db36b3          	sltu	a3,s6,a3
    e8878a4e:	96ba                	add	a3,a3,a4
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878a50:	00df1713          	slli	a4,t5,0xd
    e8878a54:	8d59                	or	a0,a0,a4
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878a56:	00ab09b3          	add	s3,s6,a0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878a5a:	033f5713          	srli	a4,t5,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878a5e:	0169b533          	sltu	a0,s3,s6
    e8878a62:	96ba                	add	a3,a3,a4
    e8878a64:	00d50b33          	add	s6,a0,a3
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8878a68:	03ce0533          	mul	a0,t3,t3
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878a6c:	c809bf0b          	extu	t5,s3,50,0
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8878a70:	0272bbb3          	mulhu	s7,t0,t2
    e8878a74:	872a                	mv	a4,a0
    e8878a76:	03ce36b3          	mulhu	a3,t3,t3
    e8878a7a:	2072970b          	mula	a4,t0,t2
    e8878a7e:	96de                	add	a3,a3,s7
    e8878a80:	00a73533          	sltu	a0,a4,a0
    e8878a84:	9536                	add	a0,a0,a3
    e8878a86:	82ba                	mv	t0,a4
    e8878a88:	02f4b6b3          	mulhu	a3,s1,a5
    e8878a8c:	20f4928b          	mula	t0,s1,a5
    e8878a90:	9536                	add	a0,a0,a3
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878a92:	0339d693          	srli	a3,s3,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8878a96:	00e2b733          	sltu	a4,t0,a4
    e8878a9a:	972a                	add	a4,a4,a0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878a9c:	00db1513          	slli	a0,s6,0xd
    e8878aa0:	8ec9                	or	a3,a3,a0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878aa2:	9696                	add	a3,a3,t0
    e8878aa4:	0056b533          	sltu	a0,a3,t0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878aa8:	029382b3          	mul	t0,t2,s1
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878aac:	033b5b13          	srli	s6,s6,0x33
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878ab0:	975a                	add	a4,a4,s6
    e8878ab2:	00e509b3          	add	s3,a0,a4
    e8878ab6:	c806b70b          	extu	a4,a3,50,0
    e8878aba:	92cd                	srli	a3,a3,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878abc:	0293bb33          	mulhu	s6,t2,s1
    e8878ac0:	8516                	mv	a0,t0
    e8878ac2:	032abbb3          	mulhu	s7,s5,s2
    e8878ac6:	212a950b          	mula	a0,s5,s2
    e8878aca:	9b5e                	add	s6,s6,s7
    e8878acc:	005532b3          	sltu	t0,a0,t0
    e8878ad0:	0347bbb3          	mulhu	s7,a5,s4
    e8878ad4:	92da                	add	t0,t0,s6
    e8878ad6:	8b2a                	mv	s6,a0
    e8878ad8:	21479b0b          	mula	s6,a5,s4
    e8878adc:	92de                	add	t0,t0,s7
    e8878ade:	00ab3533          	sltu	a0,s6,a0
    e8878ae2:	9516                	add	a0,a0,t0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878ae4:	00d99293          	slli	t0,s3,0xd
    e8878ae8:	00d2e6b3          	or	a3,t0,a3
    e8878aec:	0339d993          	srli	s3,s3,0x33
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878af0:	96da                	add	a3,a3,s6
    e8878af2:	954e                	add	a0,a0,s3
    e8878af4:	0166bb33          	sltu	s6,a3,s6
    e8878af8:	9b2a                	add	s6,s6,a0
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878afa:	03438533          	mul	a0,t2,s4
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878afe:	c806b98b          	extu	s3,a3,50,0
    e8878b02:	92cd                	srli	a3,a3,0x33
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878b04:	82aa                	mv	t0,a0
    e8878b06:	20f7928b          	mula	t0,a5,a5
    e8878b0a:	02f7bbb3          	mulhu	s7,a5,a5
    e8878b0e:	00a2b533          	sltu	a0,t0,a0
    e8878b12:	0343ba33          	mulhu	s4,t2,s4
    e8878b16:	9a5e                	add	s4,s4,s7
    e8878b18:	9a2a                	add	s4,s4,a0
    e8878b1a:	8516                	mv	a0,t0
    e8878b1c:	2154950b          	mula	a0,s1,s5
    e8878b20:	0354bbb3          	mulhu	s7,s1,s5
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878b24:	00db1493          	slli	s1,s6,0xd
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878b28:	005532b3          	sltu	t0,a0,t0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878b2c:	8ec5                	or	a3,a3,s1
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878b2e:	96aa                	add	a3,a3,a0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878b30:	033b5b13          	srli	s6,s6,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878b34:	00a6b533          	sltu	a0,a3,a0
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878b38:	9a5e                	add	s4,s4,s7
    e8878b3a:	92d2                	add	t0,t0,s4
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878b3c:	92da                	add	t0,t0,s6
    e8878b3e:	9516                	add	a0,a0,t0
    e8878b40:	c806bb8b          	extu	s7,a3,50,0
    e8878b44:	0536                	slli	a0,a0,0xd
    e8878b46:	92cd                	srli	a3,a3,0x33
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878b48:	42cd                	li	t0,19
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878b4a:	8ec9                	or	a3,a3,a0
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878b4c:	20d2958b          	mula	a1,t0,a3
    e8878b50:	0335d693          	srli	a3,a1,0x33
    e8878b54:	c805bb0b          	extu	s6,a1,50,0
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8878b58:	01e685b3          	add	a1,a3,t5
    e8878b5c:	c805bc0b          	extu	s8,a1,50,0
    e8878b60:	91cd                	srli	a1,a1,0x33
    r2 +=   c;
    e8878b62:	95ba                	add	a1,a1,a4
  r1 *= 19;
    e8878b64:	025f8733          	mul	a4,t6,t0
  r2 *= 19;
    e8878b68:	025804b3          	mul	s1,a6,t0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878b6c:	03770533          	mul	a0,a4,s7
    e8878b70:	0299bcb3          	mulhu	s9,s3,s1
    e8878b74:	86aa                	mv	a3,a0
    e8878b76:	03773733          	mulhu	a4,a4,s7
    e8878b7a:	2099968b          	mula	a3,s3,s1
    e8878b7e:	9766                	add	a4,a4,s9
    e8878b80:	00a6b533          	sltu	a0,a3,a0
  t[0]  =  ((uint128_t) r0) * s0;
    e8878b84:	0360bcb3          	mulhu	s9,ra,s6
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878b88:	953a                	add	a0,a0,a4
    e8878b8a:	8736                	mv	a4,a3
    e8878b8c:	2160970b          	mula	a4,ra,s6
    e8878b90:	9566                	add	a0,a0,s9
  r4 *= 19;
    e8878b92:	02588a33          	mul	s4,a7,t0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878b96:	00d736b3          	sltu	a3,a4,a3
    e8878b9a:	96aa                	add	a3,a3,a0
    e8878b9c:	853a                	mv	a0,a4
    e8878b9e:	034c3cb3          	mulhu	s9,s8,s4
    e8878ba2:	214c150b          	mula	a0,s8,s4
    e8878ba6:	96e6                	add	a3,a3,s9
  r3 *= 19;
    e8878ba8:	025e8f33          	mul	t5,t4,t0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878bac:	00e53733          	sltu	a4,a0,a4
    e8878bb0:	9736                	add	a4,a4,a3
    e8878bb2:	86aa                	mv	a3,a0
    e8878bb4:	03e5bcb3          	mulhu	s9,a1,t5
    e8878bb8:	21e5968b          	mula	a3,a1,t5
    e8878bbc:	9766                	add	a4,a4,s9
    e8878bbe:	00a6b533          	sltu	a0,a3,a0
    e8878bc2:	00e50cb3          	add	s9,a0,a4
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878bc6:	029b8733          	mul	a4,s7,s1
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878bca:	c806b50b          	extu	a0,a3,50,0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878bce:	8d3a                	mv	s10,a4
    e8878bd0:	21e99d0b          	mula	s10,s3,t5
    e8878bd4:	03e9bdb3          	mulhu	s11,s3,t5
    e8878bd8:	00ed3733          	sltu	a4,s10,a4
    e8878bdc:	029bb4b3          	mulhu	s1,s7,s1
    e8878be0:	94ee                	add	s1,s1,s11
    e8878be2:	94ba                	add	s1,s1,a4
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8878be4:	036fbdb3          	mulhu	s11,t6,s6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878be8:	876a                	mv	a4,s10
    e8878bea:	216f970b          	mula	a4,t6,s6
    e8878bee:	94ee                	add	s1,s1,s11
    e8878bf0:	01a73d33          	sltu	s10,a4,s10
    e8878bf4:	9d26                	add	s10,s10,s1
    e8878bf6:	8dba                	mv	s11,a4
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8878bf8:	0380b4b3          	mulhu	s1,ra,s8
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878bfc:	21809d8b          	mula	s11,ra,s8
    e8878c00:	9d26                	add	s10,s10,s1
    e8878c02:	00edb733          	sltu	a4,s11,a4
    e8878c06:	976a                	add	a4,a4,s10
    e8878c08:	8d6e                	mv	s10,s11
    e8878c0a:	21459d0b          	mula	s10,a1,s4
    e8878c0e:	0345b4b3          	mulhu	s1,a1,s4
    e8878c12:	01bd3db3          	sltu	s11,s10,s11
    e8878c16:	94ba                	add	s1,s1,a4
    e8878c18:	94ee                	add	s1,s1,s11
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878c1a:	0336d713          	srli	a4,a3,0x33
    e8878c1e:	00dc9d93          	slli	s11,s9,0xd
    e8878c22:	00ede733          	or	a4,s11,a4
    e8878c26:	033cdc93          	srli	s9,s9,0x33
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878c2a:	976a                	add	a4,a4,s10
    e8878c2c:	9ca6                	add	s9,s9,s1
    e8878c2e:	01a736b3          	sltu	a3,a4,s10
    e8878c32:	96e6                	add	a3,a3,s9
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8878c34:	03498cb3          	mul	s9,s3,s4
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878c38:	c807348b          	extu	s1,a4,50,0
    e8878c3c:	934d                	srli	a4,a4,0x33
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8878c3e:	8466                	mv	s0,s9
    e8878c40:	21eb940b          	mula	s0,s7,t5
    e8878c44:	03ebbdb3          	mulhu	s11,s7,t5
    e8878c48:	01943cb3          	sltu	s9,s0,s9
    e8878c4c:	0349bd33          	mulhu	s10,s3,s4
    e8878c50:	9d6e                	add	s10,s10,s11
    e8878c52:	8da2                	mv	s11,s0
    e8878c54:	21681d8b          	mula	s11,a6,s6
    e8878c58:	9d66                	add	s10,s10,s9
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8878c5a:	03683cb3          	mulhu	s9,a6,s6
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8878c5e:	008dbf33          	sltu	t5,s11,s0
    e8878c62:	9cea                	add	s9,s9,s10
    e8878c64:	8d6e                	mv	s10,s11
    e8878c66:	218f9d0b          	mula	s10,t6,s8
    e8878c6a:	9cfa                	add	s9,s9,t5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8878c6c:	038fbf33          	mulhu	t5,t6,s8
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8878c70:	01bd3db3          	sltu	s11,s10,s11
    e8878c74:	9f66                	add	t5,t5,s9
    e8878c76:	8cea                	mv	s9,s10
    e8878c78:	20b09c8b          	mula	s9,ra,a1
    e8878c7c:	9dfa                	add	s11,s11,t5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8878c7e:	02b0bf33          	mulhu	t5,ra,a1
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8878c82:	01acbd33          	sltu	s10,s9,s10
    e8878c86:	9f6e                	add	t5,t5,s11
    e8878c88:	9f6a                	add	t5,t5,s10
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878c8a:	00d69d13          	slli	s10,a3,0xd
    e8878c8e:	00ed6733          	or	a4,s10,a4
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878c92:	9766                	add	a4,a4,s9
    e8878c94:	01973cb3          	sltu	s9,a4,s9
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878c98:	92cd                	srli	a3,a3,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878c9a:	96fa                	add	a3,a3,t5
    e8878c9c:	96e6                	add	a3,a3,s9
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878c9e:	03308cb3          	mul	s9,ra,s3
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878ca2:	c8073f0b          	extu	t5,a4,50,0
    e8878ca6:	934d                	srli	a4,a4,0x33
  t[3] += ((uint128_t) r4) * s4;
    e8878ca8:	8466                	mv	s0,s9
    e8878caa:	214b940b          	mula	s0,s7,s4
    e8878cae:	034bbdb3          	mulhu	s11,s7,s4
    e8878cb2:	01943cb3          	sltu	s9,s0,s9
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878cb6:	0330bd33          	mulhu	s10,ra,s3
  t[3] += ((uint128_t) r4) * s4;
    e8878cba:	9d6e                	add	s10,s10,s11
    e8878cbc:	8da2                	mv	s11,s0
    e8878cbe:	216e9d8b          	mula	s11,t4,s6
    e8878cc2:	9d66                	add	s10,s10,s9
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878cc4:	036ebcb3          	mulhu	s9,t4,s6
  t[3] += ((uint128_t) r4) * s4;
    e8878cc8:	008dba33          	sltu	s4,s11,s0
    e8878ccc:	9cea                	add	s9,s9,s10
    e8878cce:	8d6e                	mv	s10,s11
    e8878cd0:	21881d0b          	mula	s10,a6,s8
    e8878cd4:	9cd2                	add	s9,s9,s4
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878cd6:	03883a33          	mulhu	s4,a6,s8
  t[3] += ((uint128_t) r4) * s4;
    e8878cda:	01bd3db3          	sltu	s11,s10,s11
    e8878cde:	9a66                	add	s4,s4,s9
    e8878ce0:	8cea                	mv	s9,s10
    e8878ce2:	20bf9c8b          	mula	s9,t6,a1
    e8878ce6:	9dd2                	add	s11,s11,s4
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8878ce8:	02bfba33          	mulhu	s4,t6,a1
  t[3] += ((uint128_t) r4) * s4;
    e8878cec:	01acbd33          	sltu	s10,s9,s10
    e8878cf0:	9a6e                	add	s4,s4,s11
    e8878cf2:	9a6a                	add	s4,s4,s10
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878cf4:	00d69d13          	slli	s10,a3,0xd
    e8878cf8:	00ed6733          	or	a4,s10,a4
    e8878cfc:	0336dd13          	srli	s10,a3,0x33
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878d00:	9a6a                	add	s4,s4,s10
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878d02:	03708d33          	mul	s10,ra,s7
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878d06:	00ec86b3          	add	a3,s9,a4
    e8878d0a:	0196bcb3          	sltu	s9,a3,s9
    e8878d0e:	9cd2                	add	s9,s9,s4
    e8878d10:	c806ba0b          	extu	s4,a3,50,0
    d4 = d419 * 2;
    e8878d14:	02600d93          	li	s11,38
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878d18:	0370b733          	mulhu	a4,ra,s7
    e8878d1c:	80ea                	mv	ra,s10
    e8878d1e:	213f908b          	mula	ra,t6,s3
    e8878d22:	033fbbb3          	mulhu	s7,t6,s3
    e8878d26:	01a0bfb3          	sltu	t6,ra,s10
    e8878d2a:	975e                	add	a4,a4,s7
    e8878d2c:	0368b9b3          	mulhu	s3,a7,s6
    e8878d30:	977e                	add	a4,a4,t6
    e8878d32:	8f86                	mv	t6,ra
    e8878d34:	21689f8b          	mula	t6,a7,s6
    e8878d38:	974e                	add	a4,a4,s3
    e8878d3a:	001fb0b3          	sltu	ra,t6,ra
    e8878d3e:	88fe                	mv	a7,t6
    e8878d40:	218e988b          	mula	a7,t4,s8
    e8878d44:	90ba                	add	ra,ra,a4
    e8878d46:	038eb733          	mulhu	a4,t4,s8
    e8878d4a:	8446                	mv	s0,a7
    e8878d4c:	01f8bfb3          	sltu	t6,a7,t6
  r2 +=   c;
    e8878d50:	4c15                	li	s8,5
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878d52:	90ba                	add	ra,ra,a4
    e8878d54:	02b83733          	mulhu	a4,a6,a1
    e8878d58:	9f86                	add	t6,t6,ra
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8878d5a:	40cd                	li	ra,19
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878d5c:	20b8140b          	mula	s0,a6,a1
    e8878d60:	9fba                	add	t6,t6,a4
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878d62:	00dc9813          	slli	a6,s9,0xd
    e8878d66:	0336d713          	srli	a4,a3,0x33
    e8878d6a:	00e86733          	or	a4,a6,a4
    e8878d6e:	033cdc93          	srli	s9,s9,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8878d72:	011438b3          	sltu	a7,s0,a7
    e8878d76:	98fe                	add	a7,a7,t6
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878d78:	9722                	add	a4,a4,s0
    e8878d7a:	008735b3          	sltu	a1,a4,s0
    e8878d7e:	9cc6                	add	s9,s9,a7
    e8878d80:	95e6                	add	a1,a1,s9
    e8878d82:	c8073b0b          	extu	s6,a4,50,0
    e8878d86:	05b6                	slli	a1,a1,0xd
    e8878d88:	934d                	srli	a4,a4,0x33
    e8878d8a:	8f4d                	or	a4,a4,a1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878d8c:	20e2950b          	mula	a0,t0,a4
  r4 = in[4];
    e8878d90:	88da                	mv	a7,s6
  r3 = in[3];
    e8878d92:	85d2                	mv	a1,s4
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878d94:	c8053e8b          	extu	t4,a0,50,0
    e8878d98:	914d                	srli	a0,a0,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8878d9a:	9526                	add	a0,a0,s1
    e8878d9c:	c8053f8b          	extu	t6,a0,50,0
    e8878da0:	914d                	srli	a0,a0,0x33
  r2 +=   c;
    e8878da2:	957a                	add	a0,a0,t5
  r2 = in[2];
    e8878da4:	86aa                	mv	a3,a0
  r1 = in[1];
    e8878da6:	887e                	mv	a6,t6
  r0 = in[0];
    e8878da8:	84f6                	mv	s1,t4
    d2 = r2 * 2 * 19;
    e8878daa:	03b68733          	mul	a4,a3,s11
    d0 = r0 * 2;
    e8878dae:	00149f13          	slli	t5,s1,0x1
    d1 = r1 * 2;
    e8878db2:	00181b93          	slli	s7,a6,0x1
    d4 = d419 * 2;
    e8878db6:	1c7d                	addi	s8,s8,-1
    e8878db8:	03b889b3          	mul	s3,a7,s11
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8878dbc:	02b70cb3          	mul	s9,a4,a1
    e8878dc0:	0309bd33          	mulhu	s10,s3,a6
    e8878dc4:	82e6                	mv	t0,s9
    e8878dc6:	02b73733          	mulhu	a4,a4,a1
    e8878dca:	2109928b          	mula	t0,s3,a6
    e8878dce:	976a                	add	a4,a4,s10
    e8878dd0:	0294bd33          	mulhu	s10,s1,s1
    e8878dd4:	0192bcb3          	sltu	s9,t0,s9
    e8878dd8:	9cba                	add	s9,s9,a4
    e8878dda:	8716                	mv	a4,t0
    e8878ddc:	2094970b          	mula	a4,s1,s1
    e8878de0:	9cea                	add	s9,s9,s10
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878de2:	031f0d33          	mul	s10,t5,a7
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8878de6:	005732b3          	sltu	t0,a4,t0
    e8878dea:	92e6                	add	t0,t0,s9
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878dec:	031f34b3          	mulhu	s1,t5,a7
    e8878df0:	8cea                	mv	s9,s10
    e8878df2:	0375b433          	mulhu	s0,a1,s7
    e8878df6:	21759c8b          	mula	s9,a1,s7
    e8878dfa:	94a2                	add	s1,s1,s0
    e8878dfc:	01acbd33          	sltu	s10,s9,s10
    e8878e00:	02d6b433          	mulhu	s0,a3,a3
    e8878e04:	9d26                	add	s10,s10,s1
    e8878e06:	84e6                	mv	s1,s9
    e8878e08:	20d6948b          	mula	s1,a3,a3
    e8878e0c:	9d22                	add	s10,s10,s0
    e8878e0e:	0194bcb3          	sltu	s9,s1,s9
    e8878e12:	01ac8433          	add	s0,s9,s10
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8878e16:	03e80d33          	mul	s10,a6,t5
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8878e1a:	e822                	sd	s0,16(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878e1c:	c807340b          	extu	s0,a4,50,0
    e8878e20:	e022                	sd	s0,0(sp)
    e8878e22:	934d                	srli	a4,a4,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8878e24:	8cea                	mv	s9,s10
    e8878e26:	20d99c8b          	mula	s9,s3,a3
    e8878e2a:	01acbd33          	sltu	s10,s9,s10
    e8878e2e:	e46a                	sd	s10,8(sp)
    e8878e30:	02d9b433          	mulhu	s0,s3,a3
    e8878e34:	03e83d33          	mulhu	s10,a6,t5
    e8878e38:	9d22                	add	s10,s10,s0
    e8878e3a:	6422                	ld	s0,8(sp)
    e8878e3c:	946a                	add	s0,s0,s10
    e8878e3e:	02158d33          	mul	s10,a1,ra
    e8878e42:	e422                	sd	s0,8(sp)
    e8878e44:	02bd3433          	mulhu	s0,s10,a1
    e8878e48:	f022                	sd	s0,32(sp)
    e8878e4a:	8466                	mv	s0,s9
    e8878e4c:	20bd140b          	mula	s0,s10,a1
    e8878e50:	8d22                	mv	s10,s0
    e8878e52:	01943433          	sltu	s0,s0,s9
    e8878e56:	f422                	sd	s0,40(sp)
    e8878e58:	6ca2                	ld	s9,8(sp)
    e8878e5a:	7402                	ld	s0,32(sp)
    e8878e5c:	9ca2                	add	s9,s9,s0
    e8878e5e:	7422                	ld	s0,40(sp)
    e8878e60:	9466                	add	s0,s0,s9
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878e62:	00d29c93          	slli	s9,t0,0xd
    e8878e66:	00ece733          	or	a4,s9,a4
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878e6a:	976a                	add	a4,a4,s10
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878e6c:	0332d293          	srli	t0,t0,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878e70:	01a73d33          	sltu	s10,a4,s10
    e8878e74:	00540cb3          	add	s9,s0,t0
    e8878e78:	c807340b          	extu	s0,a4,50,0
    e8878e7c:	9cea                	add	s9,s9,s10
    e8878e7e:	e422                	sd	s0,8(sp)
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8878e80:	02df0d33          	mul	s10,t5,a3
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878e84:	934d                	srli	a4,a4,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8878e86:	02b9b433          	mulhu	s0,s3,a1
    e8878e8a:	f022                	sd	s0,32(sp)
    e8878e8c:	846a                	mv	s0,s10
    e8878e8e:	20b9940b          	mula	s0,s3,a1
    e8878e92:	02df32b3          	mulhu	t0,t5,a3
    e8878e96:	89a2                	mv	s3,s0
    e8878e98:	01a43d33          	sltu	s10,s0,s10
    e8878e9c:	7402                	ld	s0,32(sp)
    e8878e9e:	92a2                	add	t0,t0,s0
    e8878ea0:	9d16                	add	s10,s10,t0
    e8878ea2:	030832b3          	mulhu	t0,a6,a6
    e8878ea6:	844e                	mv	s0,s3
    e8878ea8:	9d16                	add	s10,s10,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878eaa:	00dc9293          	slli	t0,s9,0xd
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8878eae:	2108140b          	mula	s0,a6,a6
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8878eb2:	00e2e733          	or	a4,t0,a4
    e8878eb6:	033cdc93          	srli	s9,s9,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878eba:	03e582b3          	mul	t0,a1,t5
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878ebe:	9722                	add	a4,a4,s0
    e8878ec0:	00873833          	sltu	a6,a4,s0
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8878ec4:	013439b3          	sltu	s3,s0,s3
    e8878ec8:	99ea                	add	s3,s3,s10
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878eca:	99e6                	add	s3,s3,s9
    e8878ecc:	984e                	add	a6,a6,s3
    e8878ece:	c8073d0b          	extu	s10,a4,50,0
    e8878ed2:	934d                	srli	a4,a4,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878ed4:	8416                	mv	s0,t0
    e8878ed6:	2176940b          	mula	s0,a3,s7
    e8878eda:	03e5b5b3          	mulhu	a1,a1,t5
    e8878ede:	005432b3          	sltu	t0,s0,t0
    e8878ee2:	8ca2                	mv	s9,s0
    e8878ee4:	0376bf33          	mulhu	t5,a3,s7
    e8878ee8:	95fa                	add	a1,a1,t5
    e8878eea:	9596                	add	a1,a1,t0
    d419 = r4 * 19;
    e8878eec:	021882b3          	mul	t0,a7,ra
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8878ef0:	0312bf33          	mulhu	t5,t0,a7
    e8878ef4:	21129c8b          	mula	s9,t0,a7
    e8878ef8:	95fa                	add	a1,a1,t5
    e8878efa:	008cb6b3          	sltu	a3,s9,s0
    e8878efe:	96ae                	add	a3,a3,a1
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878f00:	00d81593          	slli	a1,a6,0xd
    e8878f04:	8f4d                	or	a4,a4,a1
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878f06:	9766                	add	a4,a4,s9
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8878f08:	03385813          	srli	a6,a6,0x33
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878f0c:	9836                	add	a6,a6,a3
    e8878f0e:	01973cb3          	sltu	s9,a4,s9
    e8878f12:	9cc2                	add	s9,s9,a6
    e8878f14:	00dc9693          	slli	a3,s9,0xd
    e8878f18:	c807358b          	extu	a1,a4,50,0
    e8878f1c:	934d                	srli	a4,a4,0x33
    e8878f1e:	8f55                	or	a4,a4,a3
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878f20:	66c2                	ld	a3,16(sp)
    e8878f22:	94ba                	add	s1,s1,a4
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8878f24:	033cdc93          	srli	s9,s9,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878f28:	00e4b733          	sltu	a4,s1,a4
    e8878f2c:	9cb6                	add	s9,s9,a3
    e8878f2e:	9cba                	add	s9,s9,a4
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878f30:	6682                	ld	a3,0(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8878f32:	c804b88b          	extu	a7,s1,50,0
    e8878f36:	0cb6                	slli	s9,s9,0xd
    e8878f38:	90cd                	srli	s1,s1,0x33
    e8878f3a:	009ce4b3          	or	s1,s9,s1
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878f3e:	2090968b          	mula	a3,ra,s1
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8878f42:	6722                	ld	a4,8(sp)
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8878f44:	c806b48b          	extu	s1,a3,50,0
    e8878f48:	92cd                	srli	a3,a3,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8878f4a:	96ba                	add	a3,a3,a4
    e8878f4c:	c806b80b          	extu	a6,a3,50,0
    e8878f50:	92cd                	srli	a3,a3,0x33
    r2 +=   c;
    e8878f52:	96ea                	add	a3,a3,s10
  } while(--count);
    e8878f54:	e40c1be3          	bnez	s8,e8878daa <curve25519_donna+0xbfc>
  r4 *= 19;
    e8878f58:	021b0bb3          	mul	s7,s6,ra
  t[0]  =  ((uint128_t) r0) * s0;
    e8878f5c:	029e8733          	mul	a4,t4,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878f60:	037839b3          	mulhu	s3,a6,s7
    e8878f64:	82ba                	mv	t0,a4
  t[0]  =  ((uint128_t) r0) * s0;
    e8878f66:	029ebf33          	mulhu	t5,t4,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878f6a:	2178128b          	mula	t0,a6,s7
    e8878f6e:	9f4e                	add	t5,t5,s3
  r1 *= 19;
    e8878f70:	021f89b3          	mul	s3,t6,ra
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878f74:	00e2b733          	sltu	a4,t0,a4
    e8878f78:	977a                	add	a4,a4,t5
    e8878f7a:	8f16                	mv	t5,t0
    e8878f7c:	0319bcb3          	mulhu	s9,s3,a7
    e8878f80:	21199f0b          	mula	t5,s3,a7
    e8878f84:	9766                	add	a4,a4,s9
  r3 *= 19;
    e8878f86:	021a0c33          	mul	s8,s4,ra
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878f8a:	005f32b3          	sltu	t0,t5,t0
    e8878f8e:	89fa                	mv	s3,t5
    e8878f90:	92ba                	add	t0,t0,a4
    e8878f92:	2186998b          	mula	s3,a3,s8
    e8878f96:	0386b733          	mulhu	a4,a3,s8
    e8878f9a:	01e9bf33          	sltu	t5,s3,t5
  r2 *= 19;
    e8878f9e:	02150d33          	mul	s10,a0,ra
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878fa2:	92ba                	add	t0,t0,a4
    e8878fa4:	874e                	mv	a4,s3
    e8878fa6:	9f16                	add	t5,t5,t0
    e8878fa8:	21a5970b          	mula	a4,a1,s10
    e8878fac:	03a5bcb3          	mulhu	s9,a1,s10
    e8878fb0:	013732b3          	sltu	t0,a4,s3
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8878fb4:	c807340b          	extu	s0,a4,50,0
    e8878fb8:	e422                	sd	s0,8(sp)
    e8878fba:	934d                	srli	a4,a4,0x33
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8878fbc:	030e89b3          	mul	s3,t4,a6
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8878fc0:	9f66                	add	t5,t5,s9
    e8878fc2:	92fa                	add	t0,t0,t5
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878fc4:	8cce                	mv	s9,s3
    e8878fc6:	21f49c8b          	mula	s9,s1,t6
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8878fca:	030ebdb3          	mulhu	s11,t4,a6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878fce:	013cb9b3          	sltu	s3,s9,s3
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8878fd2:	03f4bf33          	mulhu	t5,s1,t6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8878fd6:	9f6e                	add	t5,t5,s11
    e8878fd8:	9f4e                	add	t5,t5,s3
    e8878fda:	0376bdb3          	mulhu	s11,a3,s7
    e8878fde:	89e6                	mv	s3,s9
    e8878fe0:	2176998b          	mula	s3,a3,s7
    e8878fe4:	9f6e                	add	t5,t5,s11
    e8878fe6:	0199bcb3          	sltu	s9,s3,s9
    e8878fea:	844e                	mv	s0,s3
    e8878fec:	21a8940b          	mula	s0,a7,s10
    e8878ff0:	9cfa                	add	s9,s9,t5
    e8878ff2:	03a8bf33          	mulhu	t5,a7,s10
    e8878ff6:	8da2                	mv	s11,s0
    e8878ff8:	013439b3          	sltu	s3,s0,s3
    e8878ffc:	9cfa                	add	s9,s9,t5
    e8878ffe:	0385bf33          	mulhu	t5,a1,s8
    e8879002:	9cce                	add	s9,s9,s3
    e8879004:	21859d8b          	mula	s11,a1,s8
    e8879008:	9cfa                	add	s9,s9,t5
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887900a:	00d29f13          	slli	t5,t0,0xd
    e887900e:	00ef6733          	or	a4,t5,a4
    e8879012:	0332d293          	srli	t0,t0,0x33
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879016:	008dbd33          	sltu	s10,s11,s0
    e887901a:	9d66                	add	s10,s10,s9
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887901c:	02de8cb3          	mul	s9,t4,a3
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879020:	976e                	add	a4,a4,s11
    e8879022:	01b73db3          	sltu	s11,a4,s11
    e8879026:	92ea                	add	t0,t0,s10
    e8879028:	92ee                	add	t0,t0,s11
    e887902a:	c807340b          	extu	s0,a4,50,0
    e887902e:	e822                	sd	s0,16(sp)
    e8879030:	934d                	srli	a4,a4,0x33
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879032:	8d66                	mv	s10,s9
    e8879034:	20a49d0b          	mula	s10,s1,a0
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879038:	02debdb3          	mulhu	s11,t4,a3
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887903c:	019d3cb3          	sltu	s9,s10,s9
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879040:	02a4bf33          	mulhu	t5,s1,a0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879044:	01ed89b3          	add	s3,s11,t5
    e8879048:	99e6                	add	s3,s3,s9
    e887904a:	8cea                	mv	s9,s10
    e887904c:	21f81c8b          	mula	s9,a6,t6
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879050:	03f83db3          	mulhu	s11,a6,t6
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879054:	01acbd33          	sltu	s10,s9,s10
    e8879058:	01b98f33          	add	t5,s3,s11
    e887905c:	89e6                	mv	s3,s9
    e887905e:	2175998b          	mula	s3,a1,s7
    e8879062:	9f6a                	add	t5,t5,s10
    e8879064:	0375bd33          	mulhu	s10,a1,s7
    e8879068:	844e                	mv	s0,s3
    e887906a:	0199bcb3          	sltu	s9,s3,s9
    e887906e:	9f6a                	add	t5,t5,s10
    e8879070:	2188940b          	mula	s0,a7,s8
    e8879074:	9cfa                	add	s9,s9,t5
    e8879076:	0388bf33          	mulhu	t5,a7,s8
    e887907a:	013439b3          	sltu	s3,s0,s3
    e887907e:	9cfa                	add	s9,s9,t5
    e8879080:	9cce                	add	s9,s9,s3
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8879082:	02be89b3          	mul	s3,t4,a1
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879086:	00d29f13          	slli	t5,t0,0xd
    e887908a:	0332d293          	srli	t0,t0,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887908e:	92e6                	add	t0,t0,s9
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879090:	00ef6733          	or	a4,t5,a4
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879094:	9722                	add	a4,a4,s0
    e8879096:	00873c33          	sltu	s8,a4,s0
    e887909a:	9c16                	add	s8,s8,t0
    e887909c:	c807340b          	extu	s0,a4,50,0
    e88790a0:	f022                	sd	s0,32(sp)
  t[3] += ((uint128_t) r4) * s4;
    e88790a2:	8cce                	mv	s9,s3
    e88790a4:	21449c8b          	mula	s9,s1,s4
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88790a8:	934d                	srli	a4,a4,0x33
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88790aa:	02bebd33          	mulhu	s10,t4,a1
  t[3] += ((uint128_t) r4) * s4;
    e88790ae:	013cb9b3          	sltu	s3,s9,s3
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88790b2:	0344bdb3          	mulhu	s11,s1,s4
  t[3] += ((uint128_t) r4) * s4;
    e88790b6:	01bd02b3          	add	t0,s10,s11
    e88790ba:	92ce                	add	t0,t0,s3
    e88790bc:	89e6                	mv	s3,s9
    e88790be:	20a8198b          	mula	s3,a6,a0
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88790c2:	02a83d33          	mulhu	s10,a6,a0
  t[3] += ((uint128_t) r4) * s4;
    e88790c6:	0199bcb3          	sltu	s9,s3,s9
    e88790ca:	01a28f33          	add	t5,t0,s10
    e88790ce:	9f66                	add	t5,t5,s9
    e88790d0:	82ce                	mv	t0,s3
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88790d2:	02dfbcb3          	mulhu	s9,t6,a3
  t[3] += ((uint128_t) r4) * s4;
    e88790d6:	20df928b          	mula	t0,t6,a3
    e88790da:	9f66                	add	t5,t5,s9
    d4 = d419 * 2;
    e88790dc:	02600c93          	li	s9,38
  t[3] += ((uint128_t) r4) * s4;
    e88790e0:	0132b9b3          	sltu	s3,t0,s3
    e88790e4:	99fa                	add	s3,s3,t5
    e88790e6:	0378bf33          	mulhu	t5,a7,s7
    e88790ea:	8416                	mv	s0,t0
    e88790ec:	2178940b          	mula	s0,a7,s7
    e88790f0:	99fa                	add	s3,s3,t5
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88790f2:	00dc1f13          	slli	t5,s8,0xd
    e88790f6:	00ef6733          	or	a4,t5,a4
    e88790fa:	033c5c13          	srli	s8,s8,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88790fe:	031e8f33          	mul	t5,t4,a7
  t[3] += ((uint128_t) r4) * s4;
    e8879102:	005432b3          	sltu	t0,s0,t0
    e8879106:	9996                	add	s3,s3,t0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879108:	9722                	add	a4,a4,s0
    e887910a:	9c4e                	add	s8,s8,s3
    e887910c:	00873bb3          	sltu	s7,a4,s0
    e8879110:	9be2                	add	s7,s7,s8
    e8879112:	c807398b          	extu	s3,a4,50,0
    e8879116:	934d                	srli	a4,a4,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879118:	82fa                	mv	t0,t5
    e887911a:	2164928b          	mula	t0,s1,s6
    e887911e:	031eb8b3          	mulhu	a7,t4,a7
    e8879122:	01e2beb3          	sltu	t4,t0,t5
    e8879126:	8f16                	mv	t5,t0
    e8879128:	0364bc33          	mulhu	s8,s1,s6
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887912c:	44cd                	li	s1,19
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887912e:	20bf9f0b          	mula	t5,t6,a1
    e8879132:	98e2                	add	a7,a7,s8
    e8879134:	98f6                	add	a7,a7,t4
    e8879136:	02bfbeb3          	mulhu	t4,t6,a1
    e887913a:	85fa                	mv	a1,t5
    e887913c:	005f32b3          	sltu	t0,t5,t0
    e8879140:	2148158b          	mula	a1,a6,s4
    e8879144:	98f6                	add	a7,a7,t4
    e8879146:	92c6                	add	t0,t0,a7
    e8879148:	034838b3          	mulhu	a7,a6,s4
    e887914c:	842e                	mv	s0,a1
    e887914e:	01e5bf33          	sltu	t5,a1,t5
    e8879152:	02a6b833          	mulhu	a6,a3,a0
    e8879156:	92c6                	add	t0,t0,a7
    e8879158:	9f16                	add	t5,t5,t0
  r3 = in[3];
    e887915a:	88ce                	mv	a7,s3
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887915c:	20a6940b          	mula	s0,a3,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879160:	00db9513          	slli	a0,s7,0xd
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879164:	9f42                	add	t5,t5,a6
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879166:	8f49                	or	a4,a4,a0
    e8879168:	033bdb93          	srli	s7,s7,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887916c:	00b435b3          	sltu	a1,s0,a1
    e8879170:	95fa                	add	a1,a1,t5
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879172:	9722                	add	a4,a4,s0
    e8879174:	9bae                	add	s7,s7,a1
    e8879176:	008736b3          	sltu	a3,a4,s0
    e887917a:	96de                	add	a3,a3,s7
    e887917c:	06b6                	slli	a3,a3,0xd
    e887917e:	c807358b          	extu	a1,a4,50,0
    e8879182:	934d                	srli	a4,a4,0x33
    e8879184:	8f55                	or	a4,a4,a3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879186:	66a2                	ld	a3,8(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879188:	e02e                	sd	a1,0(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887918a:	65c2                	ld	a1,16(sp)
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887918c:	20e0968b          	mula	a3,ra,a4
  r4 = in[4];
    e8879190:	6502                	ld	a0,0(sp)
  r2 +=   c;
    e8879192:	4ba9                	li	s7,10
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879194:	8736                	mv	a4,a3
    e8879196:	934d                	srli	a4,a4,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879198:	972e                	add	a4,a4,a1
  r2 +=   c;
    e887919a:	7582                	ld	a1,32(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887919c:	c8073e8b          	extu	t4,a4,50,0
    e88791a0:	934d                	srli	a4,a4,0x33
  r2 +=   c;
    e88791a2:	972e                	add	a4,a4,a1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88791a4:	c806b68b          	extu	a3,a3,50,0
  r2 = in[2];
    e88791a8:	883a                	mv	a6,a4
  r1 = in[1];
    e88791aa:	8f76                	mv	t5,t4
  r0 = in[0];
    e88791ac:	85b6                	mv	a1,a3
    d2 = r2 * 2 * 19;
    e88791ae:	039800b3          	mul	ra,a6,s9
    d0 = r0 * 2;
    e88791b2:	00159f93          	slli	t6,a1,0x1
    d1 = r1 * 2;
    e88791b6:	001f1b13          	slli	s6,t5,0x1
    d4 = d419 * 2;
    e88791ba:	1bfd                	addi	s7,s7,-1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88791bc:	03108c33          	mul	s8,ra,a7
    d4 = d419 * 2;
    e88791c0:	03950a33          	mul	s4,a0,s9
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88791c4:	82e2                	mv	t0,s8
    e88791c6:	21ea128b          	mula	t0,s4,t5
    e88791ca:	03ea3d33          	mulhu	s10,s4,t5
    e88791ce:	0182bc33          	sltu	s8,t0,s8
    e88791d2:	0310b0b3          	mulhu	ra,ra,a7
    e88791d6:	90ea                	add	ra,ra,s10
    e88791d8:	8d16                	mv	s10,t0
    e88791da:	20b59d0b          	mula	s10,a1,a1
    e88791de:	90e2                	add	ra,ra,s8
    e88791e0:	02b5bc33          	mulhu	s8,a1,a1
    e88791e4:	005d32b3          	sltu	t0,s10,t0
    e88791e8:	85ea                	mv	a1,s10
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e88791ea:	02af8d33          	mul	s10,t6,a0
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88791ee:	90e2                	add	ra,ra,s8
    e88791f0:	9286                	add	t0,t0,ra
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e88791f2:	0368bdb3          	mulhu	s11,a7,s6
    e88791f6:	8c6a                	mv	s8,s10
    e88791f8:	02afb0b3          	mulhu	ra,t6,a0
    e88791fc:	21689c0b          	mula	s8,a7,s6
    e8879200:	90ee                	add	ra,ra,s11
    e8879202:	01ac3d33          	sltu	s10,s8,s10
    e8879206:	03083db3          	mulhu	s11,a6,a6
    e887920a:	9d06                	add	s10,s10,ra
    e887920c:	80e2                	mv	ra,s8
    e887920e:	2108108b          	mula	ra,a6,a6
    e8879212:	9d6e                	add	s10,s10,s11
    e8879214:	0180bc33          	sltu	s8,ra,s8
    e8879218:	01ac0433          	add	s0,s8,s10
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887921c:	03ff0d33          	mul	s10,t5,t6
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8879220:	f022                	sd	s0,32(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879222:	c805b40b          	extu	s0,a1,50,0
    e8879226:	e422                	sd	s0,8(sp)
    e8879228:	91cd                	srli	a1,a1,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887922a:	8c6a                	mv	s8,s10
    e887922c:	210a1c0b          	mula	s8,s4,a6
    e8879230:	030a3433          	mulhu	s0,s4,a6
    e8879234:	01ac3d33          	sltu	s10,s8,s10
    e8879238:	03ff3db3          	mulhu	s11,t5,t6
    e887923c:	9da2                	add	s11,s11,s0
    e887923e:	9dea                	add	s11,s11,s10
    e8879240:	02988d33          	mul	s10,a7,s1
    e8879244:	031d3433          	mulhu	s0,s10,a7
    e8879248:	e822                	sd	s0,16(sp)
    e887924a:	8462                	mv	s0,s8
    e887924c:	211d140b          	mula	s0,s10,a7
    e8879250:	8d22                	mv	s10,s0
    e8879252:	01843c33          	sltu	s8,s0,s8
    e8879256:	6442                	ld	s0,16(sp)
    e8879258:	9da2                	add	s11,s11,s0
    e887925a:	9de2                	add	s11,s11,s8
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887925c:	00d29c13          	slli	s8,t0,0xd
    e8879260:	00bc65b3          	or	a1,s8,a1
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8879264:	030f8c33          	mul	s8,t6,a6
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879268:	95ea                	add	a1,a1,s10
    e887926a:	01a5bd33          	sltu	s10,a1,s10
    e887926e:	c805b40b          	extu	s0,a1,50,0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879272:	0332d293          	srli	t0,t0,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879276:	9d96                	add	s11,s11,t0
    e8879278:	9dea                	add	s11,s11,s10
    e887927a:	e822                	sd	s0,16(sp)
    e887927c:	91cd                	srli	a1,a1,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887927e:	031a3d33          	mulhu	s10,s4,a7
    e8879282:	8462                	mv	s0,s8
    e8879284:	030fb2b3          	mulhu	t0,t6,a6
    e8879288:	211a140b          	mula	s0,s4,a7
    e887928c:	92ea                	add	t0,t0,s10
    e887928e:	01843c33          	sltu	s8,s0,s8
    e8879292:	9c16                	add	s8,s8,t0
    e8879294:	03ef32b3          	mulhu	t0,t5,t5
    e8879298:	8a22                	mv	s4,s0
    e887929a:	9c16                	add	s8,s8,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887929c:	00dd9293          	slli	t0,s11,0xd
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88792a0:	21ef140b          	mula	s0,t5,t5
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88792a4:	00b2e5b3          	or	a1,t0,a1
    e88792a8:	033ddd93          	srli	s11,s11,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88792ac:	03f882b3          	mul	t0,a7,t6
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88792b0:	95a2                	add	a1,a1,s0
    e88792b2:	0085bf33          	sltu	t5,a1,s0
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88792b6:	01443a33          	sltu	s4,s0,s4
    e88792ba:	9a62                	add	s4,s4,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88792bc:	9a6e                	add	s4,s4,s11
    e88792be:	9f52                	add	t5,t5,s4
    e88792c0:	c805bd0b          	extu	s10,a1,50,0
    e88792c4:	91cd                	srli	a1,a1,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88792c6:	8416                	mv	s0,t0
    e88792c8:	2168140b          	mula	s0,a6,s6
    e88792cc:	03f8b8b3          	mulhu	a7,a7,t6
    e88792d0:	005432b3          	sltu	t0,s0,t0
    e88792d4:	8c22                	mv	s8,s0
    e88792d6:	03683fb3          	mulhu	t6,a6,s6
    e88792da:	98fe                	add	a7,a7,t6
    e88792dc:	9896                	add	a7,a7,t0
    d419 = r4 * 19;
    e88792de:	029502b3          	mul	t0,a0,s1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88792e2:	20a29c0b          	mula	s8,t0,a0
    e88792e6:	02a2bfb3          	mulhu	t6,t0,a0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88792ea:	00df1513          	slli	a0,t5,0xd
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e88792ee:	008c3833          	sltu	a6,s8,s0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88792f2:	8dc9                	or	a1,a1,a0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88792f4:	95e2                	add	a1,a1,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88792f6:	033f5f13          	srli	t5,t5,0x33
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88792fa:	0185bc33          	sltu	s8,a1,s8
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88792fe:	6442                	ld	s0,16(sp)
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879300:	98fe                	add	a7,a7,t6
    e8879302:	9846                	add	a6,a6,a7
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879304:	9f42                	add	t5,t5,a6
    e8879306:	9c7a                	add	s8,s8,t5
    e8879308:	00dc1513          	slli	a0,s8,0xd
    e887930c:	c805b88b          	extu	a7,a1,50,0
    e8879310:	91cd                	srli	a1,a1,0x33
    e8879312:	8dc9                	or	a1,a1,a0
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879314:	7502                	ld	a0,32(sp)
    e8879316:	90ae                	add	ra,ra,a1
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879318:	033c5c13          	srli	s8,s8,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887931c:	00b0b5b3          	sltu	a1,ra,a1
    e8879320:	9c2a                	add	s8,s8,a0
    e8879322:	9c2e                	add	s8,s8,a1
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879324:	6822                	ld	a6,8(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879326:	c800b50b          	extu	a0,ra,50,0
    e887932a:	0c36                	slli	s8,s8,0xd
    e887932c:	0330d093          	srli	ra,ra,0x33
    e8879330:	001c60b3          	or	ra,s8,ra
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879334:	2014980b          	mula	a6,s1,ra
    e8879338:	c808358b          	extu	a1,a6,50,0
    e887933c:	03385813          	srli	a6,a6,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879340:	9822                	add	a6,a6,s0
    e8879342:	c8083f0b          	extu	t5,a6,50,0
    e8879346:	03385813          	srli	a6,a6,0x33
    r2 +=   c;
    e887934a:	986a                	add	a6,a6,s10
  } while(--count);
    e887934c:	e60b91e3          	bnez	s7,e88791ae <curve25519_donna+0x1000>
  r4 *= 19;
    e8879350:	6402                	ld	s0,0(sp)
  t[0]  =  ((uint128_t) r0) * s0;
    e8879352:	02b682b3          	mul	t0,a3,a1
  r4 *= 19;
    e8879356:	02940fb3          	mul	t6,s0,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887935a:	8b96                	mv	s7,t0
    e887935c:	03ff3c33          	mulhu	s8,t5,t6
  t[0]  =  ((uint128_t) r0) * s0;
    e8879360:	02b6ba33          	mulhu	s4,a3,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8879364:	21ff1b8b          	mula	s7,t5,t6
    e8879368:	9a62                	add	s4,s4,s8
  r1 *= 19;
    e887936a:	029e8433          	mul	s0,t4,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887936e:	005bb2b3          	sltu	t0,s7,t0
    e8879372:	92d2                	add	t0,t0,s4
    e8879374:	8a5e                	mv	s4,s7
    e8879376:	02853c33          	mulhu	s8,a0,s0
  r1 *= 19;
    e887937a:	fc22                	sd	s0,56(sp)
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887937c:	20851a0b          	mula	s4,a0,s0
    e8879380:	92e2                	add	t0,t0,s8
  r3 *= 19;
    e8879382:	029980b3          	mul	ra,s3,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8879386:	017a3bb3          	sltu	s7,s4,s7
    e887938a:	9b96                	add	s7,s7,t0
    e887938c:	8c52                	mv	s8,s4
    e887938e:	021832b3          	mulhu	t0,a6,ra
    e8879392:	20181c0b          	mula	s8,a6,ra
    e8879396:	9b96                	add	s7,s7,t0
  r2 *= 19;
    e8879398:	02970b33          	mul	s6,a4,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887939c:	014c3a33          	sltu	s4,s8,s4
    e88793a0:	82e2                	mv	t0,s8
    e88793a2:	9a5e                	add	s4,s4,s7
    e88793a4:	2168928b          	mula	t0,a7,s6
    e88793a8:	0368bbb3          	mulhu	s7,a7,s6
    e88793ac:	0182bc33          	sltu	s8,t0,s8
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88793b0:	c802b40b          	extu	s0,t0,50,0
    e88793b4:	0332d293          	srli	t0,t0,0x33
    e88793b8:	f022                	sd	s0,32(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e88793ba:	03e68cb3          	mul	s9,a3,t5
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88793be:	9a5e                	add	s4,s4,s7
    e88793c0:	014c0bb3          	add	s7,s8,s4
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e88793c4:	03d5bd33          	mulhu	s10,a1,t4
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e88793c8:	8c66                	mv	s8,s9
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e88793ca:	03e6ba33          	mulhu	s4,a3,t5
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e88793ce:	21d59c0b          	mula	s8,a1,t4
    e88793d2:	9a6a                	add	s4,s4,s10
    e88793d4:	019c3cb3          	sltu	s9,s8,s9
    e88793d8:	9cd2                	add	s9,s9,s4
    e88793da:	8de2                	mv	s11,s8
    e88793dc:	03f83a33          	mulhu	s4,a6,t6
    e88793e0:	21f81d8b          	mula	s11,a6,t6
    e88793e4:	9cd2                	add	s9,s9,s4
    e88793e6:	018dbc33          	sltu	s8,s11,s8
    e88793ea:	9c66                	add	s8,s8,s9
    e88793ec:	8d6e                	mv	s10,s11
    e88793ee:	03653cb3          	mulhu	s9,a0,s6
    e88793f2:	21651d0b          	mula	s10,a0,s6
    e88793f6:	9c66                	add	s8,s8,s9
    e88793f8:	01bd3db3          	sltu	s11,s10,s11
    e88793fc:	8a6a                	mv	s4,s10
    e88793fe:	20189a0b          	mula	s4,a7,ra
    e8879402:	9de2                	add	s11,s11,s8
    e8879404:	0218bc33          	mulhu	s8,a7,ra
    e8879408:	01aa3d33          	sltu	s10,s4,s10
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887940c:	03068cb3          	mul	s9,a3,a6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879410:	9de2                	add	s11,s11,s8
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879412:	00db9c13          	slli	s8,s7,0xd
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879416:	9d6e                	add	s10,s10,s11
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879418:	005c62b3          	or	t0,s8,t0
    e887941c:	033bdb93          	srli	s7,s7,0x33
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879420:	92d2                	add	t0,t0,s4
    e8879422:	9d5e                	add	s10,s10,s7
    e8879424:	0142ba33          	sltu	s4,t0,s4
    e8879428:	9a6a                	add	s4,s4,s10
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887942a:	0306bc33          	mulhu	s8,a3,a6
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887942e:	8be6                	mv	s7,s9
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879430:	c802b40b          	extu	s0,t0,50,0
    e8879434:	0332d293          	srli	t0,t0,0x33
    e8879438:	f422                	sd	s0,40(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887943a:	02e5bd33          	mulhu	s10,a1,a4
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887943e:	20e59b8b          	mula	s7,a1,a4
    e8879442:	9c6a                	add	s8,s8,s10
    e8879444:	019bbcb3          	sltu	s9,s7,s9
    e8879448:	9ce2                	add	s9,s9,s8
    e887944a:	8dde                	mv	s11,s7
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887944c:	03df3c33          	mulhu	s8,t5,t4
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879450:	21df1d8b          	mula	s11,t5,t4
    e8879454:	9ce2                	add	s9,s9,s8
    e8879456:	017dbbb3          	sltu	s7,s11,s7
    e887945a:	9be6                	add	s7,s7,s9
    e887945c:	8d6e                	mv	s10,s11
    e887945e:	03f8bcb3          	mulhu	s9,a7,t6
    e8879462:	21f89d0b          	mula	s10,a7,t6
    e8879466:	9be6                	add	s7,s7,s9
    e8879468:	01bd3db3          	sltu	s11,s10,s11
    e887946c:	8c6a                	mv	s8,s10
    e887946e:	20151c0b          	mula	s8,a0,ra
    e8879472:	9dde                	add	s11,s11,s7
    e8879474:	02153bb3          	mulhu	s7,a0,ra
    e8879478:	01ac3d33          	sltu	s10,s8,s10
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887947c:	03168cb3          	mul	s9,a3,a7
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879480:	9dde                	add	s11,s11,s7
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879482:	00da1b93          	slli	s7,s4,0xd
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879486:	9d6e                	add	s10,s10,s11
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879488:	005be2b3          	or	t0,s7,t0
    e887948c:	033a5a13          	srli	s4,s4,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879490:	92e2                	add	t0,t0,s8
    e8879492:	9d52                	add	s10,s10,s4
    e8879494:	0182bc33          	sltu	s8,t0,s8
    e8879498:	9c6a                	add	s8,s8,s10
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887949a:	0316bbb3          	mulhu	s7,a3,a7
  t[3] += ((uint128_t) r4) * s4;
    e887949e:	8a66                	mv	s4,s9
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88794a0:	c802b40b          	extu	s0,t0,50,0
    e88794a4:	0332d293          	srli	t0,t0,0x33
    e88794a8:	f822                	sd	s0,48(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88794aa:	0335bd33          	mulhu	s10,a1,s3
  t[3] += ((uint128_t) r4) * s4;
    e88794ae:	21359a0b          	mula	s4,a1,s3
    e88794b2:	9bea                	add	s7,s7,s10
    e88794b4:	019a3cb3          	sltu	s9,s4,s9
    e88794b8:	9cde                	add	s9,s9,s7
    e88794ba:	8dd2                	mv	s11,s4
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88794bc:	02ef3bb3          	mulhu	s7,t5,a4
  t[3] += ((uint128_t) r4) * s4;
    e88794c0:	20ef1d8b          	mula	s11,t5,a4
    e88794c4:	9cde                	add	s9,s9,s7
    e88794c6:	014dba33          	sltu	s4,s11,s4
    e88794ca:	9a66                	add	s4,s4,s9
    e88794cc:	8d6e                	mv	s10,s11
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88794ce:	030ebcb3          	mulhu	s9,t4,a6
  t[3] += ((uint128_t) r4) * s4;
    e88794d2:	210e9d0b          	mula	s10,t4,a6
    e88794d6:	9a66                	add	s4,s4,s9
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88794d8:	6c82                	ld	s9,0(sp)
  t[3] += ((uint128_t) r4) * s4;
    e88794da:	01bd3db3          	sltu	s11,s10,s11
    e88794de:	9dd2                	add	s11,s11,s4
    e88794e0:	03f53a33          	mulhu	s4,a0,t6
    e88794e4:	8bea                	mv	s7,s10
    e88794e6:	21f51b8b          	mula	s7,a0,t6
    e88794ea:	9dd2                	add	s11,s11,s4
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88794ec:	00dc1a13          	slli	s4,s8,0xd
    e88794f0:	005a62b3          	or	t0,s4,t0
    e88794f4:	033c5c13          	srli	s8,s8,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e88794f8:	02a68a33          	mul	s4,a3,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e88794fc:	92de                	add	t0,t0,s7
    e88794fe:	c802b40b          	extu	s0,t0,50,0
    e8879502:	e422                	sd	s0,8(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879504:	6402                	ld	s0,0(sp)
  t[3] += ((uint128_t) r4) * s4;
    e8879506:	01abbd33          	sltu	s10,s7,s10
    e887950a:	9d6e                	add	s10,s10,s11
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887950c:	9d62                	add	s10,s10,s8
    e887950e:	0172bbb3          	sltu	s7,t0,s7
    e8879512:	9bea                	add	s7,s7,s10
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879514:	0285bc33          	mulhu	s8,a1,s0
    e8879518:	8452                	mv	s0,s4
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887951a:	0332d293          	srli	t0,t0,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887951e:	02a6b533          	mulhu	a0,a3,a0
    e8879522:	2195940b          	mula	s0,a1,s9
    e8879526:	9562                	add	a0,a0,s8
    e8879528:	01443a33          	sltu	s4,s0,s4
    e887952c:	9a2a                	add	s4,s4,a0
    e887952e:	031eb533          	mulhu	a0,t4,a7
    e8879532:	85a2                	mv	a1,s0
    e8879534:	211e940b          	mula	s0,t4,a7
    e8879538:	9a2a                	add	s4,s4,a0
    e887953a:	00b435b3          	sltu	a1,s0,a1
    e887953e:	95d2                	add	a1,a1,s4
    e8879540:	8522                	mv	a0,s0
    e8879542:	033f3a33          	mulhu	s4,t5,s3
    e8879546:	213f150b          	mula	a0,t5,s3
    e887954a:	95d2                	add	a1,a1,s4
    e887954c:	008538b3          	sltu	a7,a0,s0
    e8879550:	98ae                	add	a7,a7,a1
    e8879552:	85aa                	mv	a1,a0
    e8879554:	20e8158b          	mula	a1,a6,a4
  r2 +=   c;
    e8879558:	4451                	li	s0,20
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887955a:	02e83a33          	mulhu	s4,a6,a4
    e887955e:	00a5bf33          	sltu	t5,a1,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879562:	00db9513          	slli	a0,s7,0xd
    e8879566:	005562b3          	or	t0,a0,t0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887956a:	92ae                	add	t0,t0,a1
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887956c:	033bdb93          	srli	s7,s7,0x33
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879570:	00b2b5b3          	sltu	a1,t0,a1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879574:	7802                	ld	a6,32(sp)
  r3 = in[3];
    e8879576:	6522                	ld	a0,8(sp)
  r2 +=   c;
    e8879578:	f022                	sd	s0,32(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887957a:	98d2                	add	a7,a7,s4
    e887957c:	98fa                	add	a7,a7,t5
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887957e:	9bc6                	add	s7,s7,a7
    e8879580:	9bae                	add	s7,s7,a1
    e8879582:	0bb6                	slli	s7,s7,0xd
    e8879584:	c802b58b          	extu	a1,t0,50,0
    e8879588:	0332d293          	srli	t0,t0,0x33
    e887958c:	005be2b3          	or	t0,s7,t0
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879590:	2054980b          	mula	a6,s1,t0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879594:	e82e                	sd	a1,16(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879596:	75a2                	ld	a1,40(sp)
  r4 = in[4];
    e8879598:	6f42                	ld	t5,16(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887959a:	4bcd                	li	s7,19
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887959c:	c808348b          	extu	s1,a6,50,0
    e88795a0:	03385813          	srli	a6,a6,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88795a4:	982e                	add	a6,a6,a1
  r2 +=   c;
    e88795a6:	75c2                	ld	a1,48(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88795a8:	c8083a0b          	extu	s4,a6,50,0
    e88795ac:	03385813          	srli	a6,a6,0x33
  r2 +=   c;
    e88795b0:	982e                	add	a6,a6,a1
  r2 = in[2];
    e88795b2:	85c2                	mv	a1,a6
  r1 = in[1];
    e88795b4:	88d2                	mv	a7,s4
  r0 = in[0];
    e88795b6:	82a6                	mv	t0,s1
    d1 = r1 * 2;
    e88795b8:	00189413          	slli	s0,a7,0x1
    e88795bc:	e0a2                	sd	s0,64(sp)
    d4 = d419 * 2;
    e88795be:	02600413          	li	s0,38
    d2 = r2 * 2 * 19;
    e88795c2:	02858db3          	mul	s11,a1,s0
    d0 = r0 * 2;
    e88795c6:	00129c13          	slli	s8,t0,0x1
    d4 = d419 * 2;
    e88795ca:	028f0d33          	mul	s10,t5,s0
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e88795ce:	02ad8433          	mul	s0,s11,a0
    e88795d2:	8ca2                	mv	s9,s0
    e88795d4:	211d140b          	mula	s0,s10,a7
    e88795d8:	f422                	sd	s0,40(sp)
    e88795da:	01943433          	sltu	s0,s0,s9
    e88795de:	8ca2                	mv	s9,s0
    e88795e0:	02adbdb3          	mulhu	s11,s11,a0
    e88795e4:	031d3433          	mulhu	s0,s10,a7
    e88795e8:	9da2                	add	s11,s11,s0
    e88795ea:	0252b433          	mulhu	s0,t0,t0
    e88795ee:	9de6                	add	s11,s11,s9
    e88795f0:	8ca2                	mv	s9,s0
    e88795f2:	7422                	ld	s0,40(sp)
    e88795f4:	9de6                	add	s11,s11,s9
    e88795f6:	2052940b          	mula	s0,t0,t0
    e88795fa:	72a2                	ld	t0,40(sp)
    e88795fc:	005432b3          	sltu	t0,s0,t0
    e8879600:	f822                	sd	s0,48(sp)
    e8879602:	01b28433          	add	s0,t0,s11
    e8879606:	f422                	sd	s0,40(sp)
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8879608:	03ec3433          	mulhu	s0,s8,t5
    e887960c:	8ca2                	mv	s9,s0
    e887960e:	00189413          	slli	s0,a7,0x1
    e8879612:	03ec02b3          	mul	t0,s8,t5
    e8879616:	02853433          	mulhu	s0,a0,s0
    e887961a:	8d96                	mv	s11,t0
    e887961c:	e4a2                	sd	s0,72(sp)
    e887961e:	00189413          	slli	s0,a7,0x1
    e8879622:	20851d8b          	mula	s11,a0,s0
    e8879626:	8466                	mv	s0,s9
    e8879628:	6ca6                	ld	s9,72(sp)
    e887962a:	9466                	add	s0,s0,s9
    e887962c:	005db2b3          	sltu	t0,s11,t0
    e8879630:	92a2                	add	t0,t0,s0
    e8879632:	02b5b433          	mulhu	s0,a1,a1
    e8879636:	8ca2                	mv	s9,s0
    e8879638:	846e                	mv	s0,s11
    e887963a:	20b5940b          	mula	s0,a1,a1
    e887963e:	92e6                	add	t0,t0,s9
    e8879640:	01b43db3          	sltu	s11,s0,s11
    e8879644:	e4a2                	sd	s0,72(sp)
    e8879646:	005d8433          	add	s0,s11,t0
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887964a:	038882b3          	mul	t0,a7,s8
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887964e:	eca2                	sd	s0,88(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879650:	7442                	ld	s0,48(sp)
    e8879652:	c804340b          	extu	s0,s0,50,0
    e8879656:	e8a2                	sd	s0,80(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8879658:	8d96                	mv	s11,t0
    e887965a:	20bd1d8b          	mula	s11,s10,a1
    e887965e:	02bd3cb3          	mulhu	s9,s10,a1
    e8879662:	005db2b3          	sltu	t0,s11,t0
    e8879666:	0388b433          	mulhu	s0,a7,s8
    e887966a:	9466                	add	s0,s0,s9
    e887966c:	9416                	add	s0,s0,t0
    e887966e:	037502b3          	mul	t0,a0,s7
    e8879672:	f0a2                	sd	s0,96(sp)
    e8879674:	02a2b433          	mulhu	s0,t0,a0
    e8879678:	f4a2                	sd	s0,104(sp)
    e887967a:	846e                	mv	s0,s11
    e887967c:	20a2940b          	mula	s0,t0,a0
    e8879680:	72a6                	ld	t0,104(sp)
    e8879682:	8ca2                	mv	s9,s0
    e8879684:	01b43db3          	sltu	s11,s0,s11
    e8879688:	7406                	ld	s0,96(sp)
    e887968a:	92a2                	add	t0,t0,s0
    e887968c:	005d8433          	add	s0,s11,t0
    e8879690:	f0a2                	sd	s0,96(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879692:	7422                	ld	s0,40(sp)
    e8879694:	00d41d93          	slli	s11,s0,0xd
    e8879698:	7442                	ld	s0,48(sp)
    e887969a:	03345293          	srli	t0,s0,0x33
    e887969e:	7422                	ld	s0,40(sp)
    e88796a0:	005de2b3          	or	t0,s11,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88796a4:	005c8db3          	add	s11,s9,t0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88796a8:	904d                	srli	s0,s0,0x33
    e88796aa:	f422                	sd	s0,40(sp)
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88796ac:	019db433          	sltu	s0,s11,s9
    e88796b0:	8ca2                	mv	s9,s0
    e88796b2:	72a2                	ld	t0,40(sp)
    e88796b4:	7406                	ld	s0,96(sp)
    e88796b6:	92a2                	add	t0,t0,s0
    e88796b8:	005c8433          	add	s0,s9,t0
    e88796bc:	f422                	sd	s0,40(sp)
    e88796be:	c80db40b          	extu	s0,s11,50,0
    e88796c2:	f822                	sd	s0,48(sp)
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e88796c4:	02bc3433          	mulhu	s0,s8,a1
    e88796c8:	02bc02b3          	mul	t0,s8,a1
    e88796cc:	8ca2                	mv	s9,s0
    e88796ce:	02ad3433          	mulhu	s0,s10,a0
    e88796d2:	f0a2                	sd	s0,96(sp)
    e88796d4:	8416                	mv	s0,t0
    e88796d6:	20ad140b          	mula	s0,s10,a0
    e88796da:	8d22                	mv	s10,s0
    e88796dc:	005432b3          	sltu	t0,s0,t0
    e88796e0:	8466                	mv	s0,s9
    e88796e2:	7c86                	ld	s9,96(sp)
    e88796e4:	9466                	add	s0,s0,s9
    e88796e6:	92a2                	add	t0,t0,s0
    e88796e8:	0318b433          	mulhu	s0,a7,a7
    e88796ec:	8ca2                	mv	s9,s0
    e88796ee:	846a                	mv	s0,s10
    e88796f0:	2118940b          	mula	s0,a7,a7
    e88796f4:	92e6                	add	t0,t0,s9
    e88796f6:	01a43d33          	sltu	s10,s0,s10
    e88796fa:	88a2                	mv	a7,s0
    e88796fc:	005d0433          	add	s0,s10,t0
    e8879700:	8ca2                	mv	s9,s0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879702:	7422                	ld	s0,40(sp)
    e8879704:	033dd293          	srli	t0,s11,0x33
    e8879708:	00d41d13          	slli	s10,s0,0xd
    e887970c:	005d62b3          	or	t0,s10,t0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879710:	00588db3          	add	s11,a7,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879714:	03345d13          	srli	s10,s0,0x33
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879718:	011db8b3          	sltu	a7,s11,a7
    e887971c:	01ac82b3          	add	t0,s9,s10
    e8879720:	00588d33          	add	s10,a7,t0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879724:	038508b3          	mul	a7,a0,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879728:	c80db40b          	extu	s0,s11,50,0
    e887972c:	8ca2                	mv	s9,s0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887972e:	6406                	ld	s0,64(sp)
    e8879730:	6286                	ld	t0,64(sp)
    e8879732:	03853533          	mulhu	a0,a0,s8
    e8879736:	0285bc33          	mulhu	s8,a1,s0
    e887973a:	8446                	mv	s0,a7
    e887973c:	2055940b          	mula	s0,a1,t0
    e8879740:	9562                	add	a0,a0,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879742:	033dd293          	srli	t0,s11,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879746:	011438b3          	sltu	a7,s0,a7
    e887974a:	98aa                	add	a7,a7,a0
    d419 = r4 * 19;
    e887974c:	037f0533          	mul	a0,t5,s7
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879750:	85a2                	mv	a1,s0
    e8879752:	21e5140b          	mula	s0,a0,t5
    e8879756:	03e53c33          	mulhu	s8,a0,t5
    e887975a:	00b435b3          	sltu	a1,s0,a1
    e887975e:	01888533          	add	a0,a7,s8
    e8879762:	952e                	add	a0,a0,a1
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879764:	00dd1593          	slli	a1,s10,0xd
    e8879768:	0055e2b3          	or	t0,a1,t0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887976c:	92a2                	add	t0,t0,s0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887976e:	033d5d13          	srli	s10,s10,0x33
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879772:	0082bf33          	sltu	t5,t0,s0
    e8879776:	956a                	add	a0,a0,s10
    e8879778:	9f2a                	add	t5,t5,a0
    e887977a:	00df1593          	slli	a1,t5,0xd
    e887977e:	c802b50b          	extu	a0,t0,50,0
    e8879782:	0332d293          	srli	t0,t0,0x33
    e8879786:	0055e2b3          	or	t0,a1,t0
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887978a:	65a6                	ld	a1,72(sp)
    e887978c:	6466                	ld	s0,88(sp)
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887978e:	033f5f13          	srli	t5,t5,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879792:	9596                	add	a1,a1,t0
    e8879794:	0055bdb3          	sltu	s11,a1,t0
    e8879798:	008f02b3          	add	t0,t5,s0
    e887979c:	92ee                	add	t0,t0,s11
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887979e:	6446                	ld	s0,80(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e88797a0:	02b6                	slli	t0,t0,0xd
    e88797a2:	c805bf0b          	extu	t5,a1,50,0
    e88797a6:	91cd                	srli	a1,a1,0x33
    e88797a8:	00b2e5b3          	or	a1,t0,a1
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e88797ac:	20bb940b          	mula	s0,s7,a1
    e88797b0:	03345593          	srli	a1,s0,0x33
    e88797b4:	c804328b          	extu	t0,s0,50,0
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e88797b8:	7442                	ld	s0,48(sp)
    e88797ba:	95a2                	add	a1,a1,s0
    e88797bc:	7402                	ld	s0,32(sp)
    e88797be:	c805b88b          	extu	a7,a1,50,0
    e88797c2:	91cd                	srli	a1,a1,0x33
    e88797c4:	147d                	addi	s0,s0,-1
    e88797c6:	f022                	sd	s0,32(sp)
    r2 +=   c;
    e88797c8:	95e6                	add	a1,a1,s9
  } while(--count);
    e88797ca:	de0417e3          	bnez	s0,e88795b8 <curve25519_donna+0x140a>
  r4 *= 19;
    e88797ce:	6442                	ld	s0,16(sp)
  t[0]  =  ((uint128_t) r0) * s0;
    e88797d0:	02548db3          	mul	s11,s1,t0
  r4 *= 19;
    e88797d4:	03740c33          	mul	s8,s0,s7
  r3 *= 19;
    e88797d8:	6422                	ld	s0,8(sp)
    e88797da:	03740d33          	mul	s10,s0,s7
  t[0]  =  ((uint128_t) r0) * s0;
    e88797de:	0254b433          	mulhu	s0,s1,t0
    e88797e2:	8ca2                	mv	s9,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88797e4:	846e                	mv	s0,s11
    e88797e6:	2188940b          	mula	s0,a7,s8
    e88797ea:	f022                	sd	s0,32(sp)
    e88797ec:	01b43db3          	sltu	s11,s0,s11
    e88797f0:	8466                	mv	s0,s9
    e88797f2:	0388bcb3          	mulhu	s9,a7,s8
    e88797f6:	9466                	add	s0,s0,s9
    e88797f8:	946e                	add	s0,s0,s11
  r1 *= 19;
    e88797fa:	037a0db3          	mul	s11,s4,s7
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e88797fe:	f822                	sd	s0,48(sp)
    e8879800:	7c82                	ld	s9,32(sp)
    e8879802:	03edb433          	mulhu	s0,s11,t5
    e8879806:	e0a2                	sd	s0,64(sp)
    e8879808:	7402                	ld	s0,32(sp)
    e887980a:	21ed940b          	mula	s0,s11,t5
    e887980e:	f422                	sd	s0,40(sp)
    e8879810:	01943433          	sltu	s0,s0,s9
    e8879814:	f022                	sd	s0,32(sp)
    e8879816:	6c86                	ld	s9,64(sp)
    e8879818:	7442                	ld	s0,48(sp)
    e887981a:	01940db3          	add	s11,s0,s9
    e887981e:	7402                	ld	s0,32(sp)
    e8879820:	7ca2                	ld	s9,40(sp)
    e8879822:	9da2                	add	s11,s11,s0
    e8879824:	7422                	ld	s0,40(sp)
    e8879826:	21a5940b          	mula	s0,a1,s10
    e887982a:	f022                	sd	s0,32(sp)
    e887982c:	01943433          	sltu	s0,s0,s9
    e8879830:	8ca2                	mv	s9,s0
    e8879832:	03a5b433          	mulhu	s0,a1,s10
    e8879836:	9da2                	add	s11,s11,s0
    e8879838:	03780433          	mul	s0,a6,s7
    e887983c:	9de6                	add	s11,s11,s9
    e887983e:	02853433          	mulhu	s0,a0,s0
    e8879842:	03780cb3          	mul	s9,a6,s7
    e8879846:	f822                	sd	s0,48(sp)
    e8879848:	7402                	ld	s0,32(sp)
    e887984a:	2195140b          	mula	s0,a0,s9
    e887984e:	7c82                	ld	s9,32(sp)
    e8879850:	f422                	sd	s0,40(sp)
    e8879852:	01943433          	sltu	s0,s0,s9
    e8879856:	8ca2                	mv	s9,s0
    e8879858:	7442                	ld	s0,48(sp)
    e887985a:	9da2                	add	s11,s11,s0
    e887985c:	01bc8433          	add	s0,s9,s11
    e8879860:	e0a2                	sd	s0,64(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879862:	7422                	ld	s0,40(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8879864:	03148db3          	mul	s11,s1,a7
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879868:	c804340b          	extu	s0,s0,50,0
    e887986c:	e4a2                	sd	s0,72(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887986e:	0314b433          	mulhu	s0,s1,a7
    e8879872:	8ca2                	mv	s9,s0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879874:	846e                	mv	s0,s11
    e8879876:	2142940b          	mula	s0,t0,s4
    e887987a:	f022                	sd	s0,32(sp)
    e887987c:	01b43db3          	sltu	s11,s0,s11
    e8879880:	8466                	mv	s0,s9
    e8879882:	0342bcb3          	mulhu	s9,t0,s4
    e8879886:	9466                	add	s0,s0,s9
    e8879888:	9da2                	add	s11,s11,s0
    e887988a:	7402                	ld	s0,32(sp)
    e887988c:	7c82                	ld	s9,32(sp)
    e887988e:	2185940b          	mula	s0,a1,s8
    e8879892:	f822                	sd	s0,48(sp)
    e8879894:	01943433          	sltu	s0,s0,s9
    e8879898:	8ca2                	mv	s9,s0
    e887989a:	0385b433          	mulhu	s0,a1,s8
    e887989e:	9da2                	add	s11,s11,s0
    e88798a0:	03780433          	mul	s0,a6,s7
    e88798a4:	9de6                	add	s11,s11,s9
    e88798a6:	028f3433          	mulhu	s0,t5,s0
    e88798aa:	03780cb3          	mul	s9,a6,s7
    e88798ae:	e8a2                	sd	s0,80(sp)
    e88798b0:	7442                	ld	s0,48(sp)
    e88798b2:	219f140b          	mula	s0,t5,s9
    e88798b6:	7cc2                	ld	s9,48(sp)
    e88798b8:	f022                	sd	s0,32(sp)
    e88798ba:	01943433          	sltu	s0,s0,s9
    e88798be:	8ca2                	mv	s9,s0
    e88798c0:	6446                	ld	s0,80(sp)
    e88798c2:	9da2                	add	s11,s11,s0
    e88798c4:	7402                	ld	s0,32(sp)
    e88798c6:	9de6                	add	s11,s11,s9
    e88798c8:	7c82                	ld	s9,32(sp)
    e88798ca:	21a5140b          	mula	s0,a0,s10
    e88798ce:	f822                	sd	s0,48(sp)
    e88798d0:	01943433          	sltu	s0,s0,s9
    e88798d4:	8ca2                	mv	s9,s0
    e88798d6:	03a53433          	mulhu	s0,a0,s10
    e88798da:	9da2                	add	s11,s11,s0
    e88798dc:	01bc8433          	add	s0,s9,s11
    e88798e0:	e8a2                	sd	s0,80(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88798e2:	6406                	ld	s0,64(sp)
    e88798e4:	0436                	slli	s0,s0,0xd
    e88798e6:	8ca2                	mv	s9,s0
    e88798e8:	7422                	ld	s0,40(sp)
    e88798ea:	03345d93          	srli	s11,s0,0x33
    e88798ee:	6406                	ld	s0,64(sp)
    e88798f0:	01bcedb3          	or	s11,s9,s11
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88798f4:	7cc2                	ld	s9,48(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e88798f6:	904d                	srli	s0,s0,0x33
    e88798f8:	e0a2                	sd	s0,64(sp)
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e88798fa:	7442                	ld	s0,48(sp)
    e88798fc:	946e                	add	s0,s0,s11
    e88798fe:	f022                	sd	s0,32(sp)
    e8879900:	01943433          	sltu	s0,s0,s9
    e8879904:	f422                	sd	s0,40(sp)
    e8879906:	6c86                	ld	s9,64(sp)
    e8879908:	6446                	ld	s0,80(sp)
    e887990a:	01940db3          	add	s11,s0,s9
    e887990e:	7422                	ld	s0,40(sp)
    e8879910:	946e                	add	s0,s0,s11
    e8879912:	e0a2                	sd	s0,64(sp)
    e8879914:	7402                	ld	s0,32(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879916:	02b48db3          	mul	s11,s1,a1
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887991a:	c804340b          	extu	s0,s0,50,0
    e887991e:	e8a2                	sd	s0,80(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879920:	02b4b433          	mulhu	s0,s1,a1
    e8879924:	8ca2                	mv	s9,s0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879926:	846e                	mv	s0,s11
    e8879928:	2102940b          	mula	s0,t0,a6
    e887992c:	f422                	sd	s0,40(sp)
    e887992e:	01b43db3          	sltu	s11,s0,s11
    e8879932:	8466                	mv	s0,s9
    e8879934:	0302bcb3          	mulhu	s9,t0,a6
    e8879938:	9466                	add	s0,s0,s9
    e887993a:	9da2                	add	s11,s11,s0
    e887993c:	7422                	ld	s0,40(sp)
    e887993e:	7ca2                	ld	s9,40(sp)
    e8879940:	2148940b          	mula	s0,a7,s4
    e8879944:	f822                	sd	s0,48(sp)
    e8879946:	01943433          	sltu	s0,s0,s9
    e887994a:	8ca2                	mv	s9,s0
    e887994c:	0348b433          	mulhu	s0,a7,s4
    e8879950:	9da2                	add	s11,s11,s0
    e8879952:	7442                	ld	s0,48(sp)
    e8879954:	9de6                	add	s11,s11,s9
    e8879956:	7cc2                	ld	s9,48(sp)
    e8879958:	2185140b          	mula	s0,a0,s8
    e887995c:	f422                	sd	s0,40(sp)
    e887995e:	01943433          	sltu	s0,s0,s9
    e8879962:	8ca2                	mv	s9,s0
    e8879964:	03853433          	mulhu	s0,a0,s8
    e8879968:	9da2                	add	s11,s11,s0
    e887996a:	03af3433          	mulhu	s0,t5,s10
    e887996e:	9de6                	add	s11,s11,s9
    e8879970:	8ca2                	mv	s9,s0
    e8879972:	7422                	ld	s0,40(sp)
    e8879974:	9de6                	add	s11,s11,s9
    e8879976:	21af140b          	mula	s0,t5,s10
    e887997a:	8d22                	mv	s10,s0
    e887997c:	7422                	ld	s0,40(sp)
    e887997e:	008d3433          	sltu	s0,s10,s0
    e8879982:	f422                	sd	s0,40(sp)
    e8879984:	7422                	ld	s0,40(sp)
    e8879986:	946e                	add	s0,s0,s11
    e8879988:	8ca2                	mv	s9,s0
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887998a:	6406                	ld	s0,64(sp)
    e887998c:	0436                	slli	s0,s0,0xd
    e887998e:	f422                	sd	s0,40(sp)
    e8879990:	7402                	ld	s0,32(sp)
    e8879992:	03345d93          	srli	s11,s0,0x33
    e8879996:	7422                	ld	s0,40(sp)
    e8879998:	01b46db3          	or	s11,s0,s11
    e887999c:	6406                	ld	s0,64(sp)
    e887999e:	904d                	srli	s0,s0,0x33
    e88799a0:	f422                	sd	s0,40(sp)
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88799a2:	01bd0433          	add	s0,s10,s11
    e88799a6:	f022                	sd	s0,32(sp)
    e88799a8:	01a43d33          	sltu	s10,s0,s10
    e88799ac:	8466                	mv	s0,s9
    e88799ae:	7ca2                	ld	s9,40(sp)
    e88799b0:	01940db3          	add	s11,s0,s9
    e88799b4:	01bd0433          	add	s0,s10,s11
    e88799b8:	f422                	sd	s0,40(sp)
    e88799ba:	7402                	ld	s0,32(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88799bc:	02a48d33          	mul	s10,s1,a0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e88799c0:	c804340b          	extu	s0,s0,50,0
    e88799c4:	f822                	sd	s0,48(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88799c6:	02a4b433          	mulhu	s0,s1,a0
  t[3] += ((uint128_t) r4) * s4;
    e88799ca:	8dea                	mv	s11,s10
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e88799cc:	8ca2                	mv	s9,s0
    e88799ce:	6422                	ld	s0,8(sp)
    e88799d0:	0282b433          	mulhu	s0,t0,s0
    e88799d4:	e0a2                	sd	s0,64(sp)
  t[3] += ((uint128_t) r4) * s4;
    e88799d6:	6422                	ld	s0,8(sp)
    e88799d8:	20829d8b          	mula	s11,t0,s0
    e88799dc:	8466                	mv	s0,s9
    e88799de:	6c86                	ld	s9,64(sp)
    e88799e0:	9466                	add	s0,s0,s9
    e88799e2:	01adbd33          	sltu	s10,s11,s10
    e88799e6:	9d22                	add	s10,s10,s0
    e88799e8:	846e                	mv	s0,s11
    e88799ea:	2108940b          	mula	s0,a7,a6
    e88799ee:	8ca2                	mv	s9,s0
    e88799f0:	01b43db3          	sltu	s11,s0,s11
    e88799f4:	0308b433          	mulhu	s0,a7,a6
    e88799f8:	9d22                	add	s10,s10,s0
    e88799fa:	9d6e                	add	s10,s10,s11
    e88799fc:	8de6                	mv	s11,s9
    e88799fe:	20ba1d8b          	mula	s11,s4,a1
    e8879a02:	019db433          	sltu	s0,s11,s9
    e8879a06:	8ca2                	mv	s9,s0
    e8879a08:	02ba3433          	mulhu	s0,s4,a1
    e8879a0c:	9d22                	add	s10,s10,s0
    e8879a0e:	038f3433          	mulhu	s0,t5,s8
    e8879a12:	9d66                	add	s10,s10,s9
    e8879a14:	8ca2                	mv	s9,s0
    e8879a16:	846e                	mv	s0,s11
    e8879a18:	218f140b          	mula	s0,t5,s8
    e8879a1c:	9d66                	add	s10,s10,s9
    e8879a1e:	01b43db3          	sltu	s11,s0,s11
    e8879a22:	8c22                	mv	s8,s0
    e8879a24:	01ad8433          	add	s0,s11,s10
    e8879a28:	8ca2                	mv	s9,s0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879a2a:	7422                	ld	s0,40(sp)
    e8879a2c:	00d41d13          	slli	s10,s0,0xd
    e8879a30:	7402                	ld	s0,32(sp)
    e8879a32:	03345d93          	srli	s11,s0,0x33
    e8879a36:	7422                	ld	s0,40(sp)
    e8879a38:	01bd6db3          	or	s11,s10,s11
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879a3c:	01bc0d33          	add	s10,s8,s11
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879a40:	904d                	srli	s0,s0,0x33
    e8879a42:	f022                	sd	s0,32(sp)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879a44:	8466                	mv	s0,s9
    e8879a46:	7c82                	ld	s9,32(sp)
    e8879a48:	018d3c33          	sltu	s8,s10,s8
    e8879a4c:	01940db3          	add	s11,s0,s9
    e8879a50:	01bc0433          	add	s0,s8,s11
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879a54:	03e48db3          	mul	s11,s1,t5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879a58:	f022                	sd	s0,32(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879a5a:	6442                	ld	s0,16(sp)
    e8879a5c:	6cc2                	ld	s9,16(sp)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879a5e:	c80d3c0b          	extu	s8,s10,50,0
    e8879a62:	033d5d13          	srli	s10,s10,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879a66:	03e4bf33          	mulhu	t5,s1,t5
    e8879a6a:	0282b4b3          	mulhu	s1,t0,s0
    e8879a6e:	846e                	mv	s0,s11
    e8879a70:	2192940b          	mula	s0,t0,s9
    e8879a74:	9f26                	add	t5,t5,s1
    e8879a76:	64a2                	ld	s1,8(sp)
    e8879a78:	82a2                	mv	t0,s0
    e8879a7a:	01b43db3          	sltu	s11,s0,s11
    e8879a7e:	20aa140b          	mula	s0,s4,a0
    e8879a82:	9dfa                	add	s11,s11,t5
    e8879a84:	02aa3f33          	mulhu	t5,s4,a0
    e8879a88:	005432b3          	sltu	t0,s0,t0
    e8879a8c:	8522                	mv	a0,s0
    e8879a8e:	6422                	ld	s0,8(sp)
    e8879a90:	9dfa                	add	s11,s11,t5
    e8879a92:	92ee                	add	t0,t0,s11
    e8879a94:	0288bdb3          	mulhu	s11,a7,s0
    e8879a98:	842a                	mv	s0,a0
    e8879a9a:	2098940b          	mula	s0,a7,s1
    e8879a9e:	92ee                	add	t0,t0,s11
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8879aa0:	44cd                	li	s1,19
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879aa2:	88a2                	mv	a7,s0
    e8879aa4:	00a43533          	sltu	a0,s0,a0
    e8879aa8:	2105940b          	mula	s0,a1,a6
    e8879aac:	9516                	add	a0,a0,t0
    e8879aae:	0305b2b3          	mulhu	t0,a1,a6
    e8879ab2:	011438b3          	sltu	a7,s0,a7
    e8879ab6:	85a2                	mv	a1,s0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879ab8:	7402                	ld	s0,32(sp)
    e8879aba:	00d41813          	slli	a6,s0,0xd
    e8879abe:	03345d93          	srli	s11,s0,0x33
    e8879ac2:	01a86d33          	or	s10,a6,s10
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879ac6:	9d2e                	add	s10,s10,a1
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879ac8:	9516                	add	a0,a0,t0
    e8879aca:	9546                	add	a0,a0,a7
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879acc:	956e                	add	a0,a0,s11
    e8879ace:	00bd35b3          	sltu	a1,s10,a1
    e8879ad2:	95aa                	add	a1,a1,a0
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879ad4:	6526                	ld	a0,72(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879ad6:	05b6                	slli	a1,a1,0xd
    e8879ad8:	033d5d93          	srli	s11,s10,0x33
    e8879adc:	01b5edb3          	or	s11,a1,s11
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879ae0:	21bb950b          	mula	a0,s7,s11
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879ae4:	6446                	ld	s0,80(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879ae6:	c80d3f0b          	extu	t5,s10,50,0
  r2 +=   c;
    e8879aea:	4da9                	li	s11,10
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879aec:	c805358b          	extu	a1,a0,50,0
    e8879af0:	914d                	srli	a0,a0,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879af2:	9522                	add	a0,a0,s0
  r2 +=   c;
    e8879af4:	7442                	ld	s0,48(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879af6:	c805380b          	extu	a6,a0,50,0
    e8879afa:	914d                	srli	a0,a0,0x33
  r2 +=   c;
    e8879afc:	9522                	add	a0,a0,s0
    d4 = d419 * 2;
    e8879afe:	02600413          	li	s0,38
    d2 = r2 * 2 * 19;
    e8879b02:	02850cb3          	mul	s9,a0,s0
    d0 = r0 * 2;
    e8879b06:	00159893          	slli	a7,a1,0x1
    d1 = r1 * 2;
    e8879b0a:	00181a13          	slli	s4,a6,0x1
    d4 = d419 * 2;
    e8879b0e:	1dfd                	addi	s11,s11,-1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8879b10:	038c8d33          	mul	s10,s9,s8
    d4 = d419 * 2;
    e8879b14:	028f02b3          	mul	t0,t5,s0
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8879b18:	8bea                	mv	s7,s10
    e8879b1a:	21029b8b          	mula	s7,t0,a6
    e8879b1e:	0302b433          	mulhu	s0,t0,a6
    e8879b22:	01abbd33          	sltu	s10,s7,s10
    e8879b26:	038cbcb3          	mulhu	s9,s9,s8
    e8879b2a:	9ca2                	add	s9,s9,s0
    e8879b2c:	9cea                	add	s9,s9,s10
    e8879b2e:	845e                	mv	s0,s7
    e8879b30:	02b5bd33          	mulhu	s10,a1,a1
    e8879b34:	20b5940b          	mula	s0,a1,a1
    e8879b38:	9cea                	add	s9,s9,s10
    e8879b3a:	01743bb3          	sltu	s7,s0,s7
    e8879b3e:	85a2                	mv	a1,s0
    e8879b40:	019b8433          	add	s0,s7,s9
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8879b44:	03e88cb3          	mul	s9,a7,t5
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8879b48:	e422                	sd	s0,8(sp)
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8879b4a:	03e8bd33          	mulhu	s10,a7,t5
    e8879b4e:	8be6                	mv	s7,s9
    e8879b50:	034c3433          	mulhu	s0,s8,s4
    e8879b54:	214c1b8b          	mula	s7,s8,s4
    e8879b58:	9d22                	add	s10,s10,s0
    e8879b5a:	019bbcb3          	sltu	s9,s7,s9
    e8879b5e:	9cea                	add	s9,s9,s10
    e8879b60:	845e                	mv	s0,s7
    e8879b62:	02a53d33          	mulhu	s10,a0,a0
    e8879b66:	20a5140b          	mula	s0,a0,a0
    e8879b6a:	9cea                	add	s9,s9,s10
    e8879b6c:	01743bb3          	sltu	s7,s0,s7
    e8879b70:	e822                	sd	s0,16(sp)
    e8879b72:	019b8433          	add	s0,s7,s9
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8879b76:	03180cb3          	mul	s9,a6,a7
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8879b7a:	f422                	sd	s0,40(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879b7c:	c805b40b          	extu	s0,a1,50,0
    e8879b80:	f022                	sd	s0,32(sp)
    e8879b82:	91cd                	srli	a1,a1,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8879b84:	02a2b433          	mulhu	s0,t0,a0
    e8879b88:	8d66                	mv	s10,s9
    e8879b8a:	03183bb3          	mulhu	s7,a6,a7
    e8879b8e:	20a29d0b          	mula	s10,t0,a0
    e8879b92:	9ba2                	add	s7,s7,s0
    e8879b94:	019d3cb3          	sltu	s9,s10,s9
    e8879b98:	9cde                	add	s9,s9,s7
    e8879b9a:	029c0bb3          	mul	s7,s8,s1
    e8879b9e:	038bb433          	mulhu	s0,s7,s8
    e8879ba2:	f822                	sd	s0,48(sp)
    e8879ba4:	846a                	mv	s0,s10
    e8879ba6:	218b940b          	mula	s0,s7,s8
    e8879baa:	8ba2                	mv	s7,s0
    e8879bac:	01a43d33          	sltu	s10,s0,s10
    e8879bb0:	7442                	ld	s0,48(sp)
    e8879bb2:	9ca2                	add	s9,s9,s0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879bb4:	6422                	ld	s0,8(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8879bb6:	9d66                	add	s10,s10,s9
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879bb8:	00d41c93          	slli	s9,s0,0xd
    e8879bbc:	00bce5b3          	or	a1,s9,a1
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879bc0:	95de                	add	a1,a1,s7
    e8879bc2:	0175bbb3          	sltu	s7,a1,s7
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879bc6:	03345c93          	srli	s9,s0,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879bca:	c805b40b          	extu	s0,a1,50,0
    e8879bce:	9cea                	add	s9,s9,s10
    e8879bd0:	9cde                	add	s9,s9,s7
    e8879bd2:	e422                	sd	s0,8(sp)
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8879bd4:	02a88bb3          	mul	s7,a7,a0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879bd8:	91cd                	srli	a1,a1,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8879bda:	0382b433          	mulhu	s0,t0,s8
    e8879bde:	f822                	sd	s0,48(sp)
    e8879be0:	845e                	mv	s0,s7
    e8879be2:	2182940b          	mula	s0,t0,s8
    e8879be6:	02a8bd33          	mulhu	s10,a7,a0
    e8879bea:	82a2                	mv	t0,s0
    e8879bec:	01743bb3          	sltu	s7,s0,s7
    e8879bf0:	7442                	ld	s0,48(sp)
    e8879bf2:	9d22                	add	s10,s10,s0
    e8879bf4:	8416                	mv	s0,t0
    e8879bf6:	2108140b          	mula	s0,a6,a6
    e8879bfa:	9bea                	add	s7,s7,s10
    e8879bfc:	03083d33          	mulhu	s10,a6,a6
    e8879c00:	005432b3          	sltu	t0,s0,t0
    e8879c04:	9bea                	add	s7,s7,s10
    e8879c06:	9b96                	add	s7,s7,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879c08:	00dc9293          	slli	t0,s9,0xd
    e8879c0c:	00b2e5b3          	or	a1,t0,a1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879c10:	031c02b3          	mul	t0,s8,a7
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879c14:	95a2                	add	a1,a1,s0
    e8879c16:	0085b833          	sltu	a6,a1,s0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879c1a:	033cdc93          	srli	s9,s9,0x33
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879c1e:	9be6                	add	s7,s7,s9
    e8879c20:	985e                	add	a6,a6,s7
    e8879c22:	c805bd0b          	extu	s10,a1,50,0
    e8879c26:	91cd                	srli	a1,a1,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879c28:	8416                	mv	s0,t0
    e8879c2a:	2145140b          	mula	s0,a0,s4
    e8879c2e:	031c3c33          	mulhu	s8,s8,a7
    e8879c32:	005432b3          	sltu	t0,s0,t0
    e8879c36:	034538b3          	mulhu	a7,a0,s4
    e8879c3a:	8522                	mv	a0,s0
    d419 = r4 * 19;
    e8879c3c:	029f0a33          	mul	s4,t5,s1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879c40:	9c46                	add	s8,s8,a7
    e8879c42:	9c16                	add	s8,s8,t0
    e8879c44:	03ea38b3          	mulhu	a7,s4,t5
    e8879c48:	21ea140b          	mula	s0,s4,t5
    e8879c4c:	9c46                	add	s8,s8,a7
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879c4e:	00d81893          	slli	a7,a6,0xd
    e8879c52:	00b8e5b3          	or	a1,a7,a1
    e8879c56:	03385813          	srli	a6,a6,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879c5a:	00a43533          	sltu	a0,s0,a0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879c5e:	95a2                	add	a1,a1,s0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e8879c60:	9562                	add	a0,a0,s8
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879c62:	0085bf33          	sltu	t5,a1,s0
    e8879c66:	9542                	add	a0,a0,a6
    e8879c68:	957a                	add	a0,a0,t5
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879c6a:	6442                	ld	s0,16(sp)
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879c6c:	00d51813          	slli	a6,a0,0xd
    e8879c70:	c805bc0b          	extu	s8,a1,50,0
    e8879c74:	91cd                	srli	a1,a1,0x33
    e8879c76:	00b865b3          	or	a1,a6,a1
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879c7a:	008582b3          	add	t0,a1,s0
    e8879c7e:	7422                	ld	s0,40(sp)
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879c80:	914d                	srli	a0,a0,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879c82:	00b2b5b3          	sltu	a1,t0,a1
    e8879c86:	9522                	add	a0,a0,s0
    e8879c88:	95aa                	add	a1,a1,a0
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879c8a:	7502                	ld	a0,32(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879c8c:	05b6                	slli	a1,a1,0xd
    e8879c8e:	c802bf0b          	extu	t5,t0,50,0
    e8879c92:	0332d293          	srli	t0,t0,0x33
    e8879c96:	0055e2b3          	or	t0,a1,t0
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879c9a:	2054950b          	mula	a0,s1,t0
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879c9e:	6422                	ld	s0,8(sp)
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879ca0:	c805358b          	extu	a1,a0,50,0
    e8879ca4:	914d                	srli	a0,a0,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879ca6:	9522                	add	a0,a0,s0
    e8879ca8:	c805380b          	extu	a6,a0,50,0
    e8879cac:	914d                	srli	a0,a0,0x33
    r2 +=   c;
    e8879cae:	956a                	add	a0,a0,s10
  } while(--count);
    e8879cb0:	e40d97e3          	bnez	s11,e8879afe <curve25519_donna+0x1950>
  t[0]  =  ((uint128_t) r0) * s0;
    e8879cb4:	02b688b3          	mul	a7,a3,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8879cb8:	7462                	ld	s0,56(sp)
    e8879cba:	030fbbb3          	mulhu	s7,t6,a6
    e8879cbe:	8a46                	mv	s4,a7
  t[0]  =  ((uint128_t) r0) * s0;
    e8879cc0:	02b6b2b3          	mulhu	t0,a3,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8879cc4:	210f9a0b          	mula	s4,t6,a6
    e8879cc8:	92de                	add	t0,t0,s7
    e8879cca:	011a38b3          	sltu	a7,s4,a7
    e8879cce:	03e43bb3          	mulhu	s7,s0,t5
    e8879cd2:	9896                	add	a7,a7,t0
    e8879cd4:	82d2                	mv	t0,s4
    e8879cd6:	21e4128b          	mula	t0,s0,t5
    e8879cda:	98de                	add	a7,a7,s7
    e8879cdc:	0142ba33          	sltu	s4,t0,s4
    e8879ce0:	8b96                	mv	s7,t0
    e8879ce2:	20a09b8b          	mula	s7,ra,a0
    e8879ce6:	9a46                	add	s4,s4,a7
    e8879ce8:	02a0b8b3          	mulhu	a7,ra,a0
    e8879cec:	005bb2b3          	sltu	t0,s7,t0
    e8879cf0:	9a46                	add	s4,s4,a7
    e8879cf2:	88de                	mv	a7,s7
    e8879cf4:	218b188b          	mula	a7,s6,s8
    e8879cf8:	92d2                	add	t0,t0,s4
    e8879cfa:	038b3cb3          	mulhu	s9,s6,s8
    e8879cfe:	0178ba33          	sltu	s4,a7,s7
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879d02:	c808b40b          	extu	s0,a7,50,0
    e8879d06:	e422                	sd	s0,8(sp)
    e8879d08:	0338d893          	srli	a7,a7,0x33
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8879d0c:	03068bb3          	mul	s7,a3,a6
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e8879d10:	92e6                	add	t0,t0,s9
    e8879d12:	9a16                	add	s4,s4,t0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879d14:	8cde                	mv	s9,s7
    e8879d16:	20be9c8b          	mula	s9,t4,a1
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8879d1a:	0306bd33          	mulhu	s10,a3,a6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879d1e:	017cbbb3          	sltu	s7,s9,s7
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e8879d22:	02bebdb3          	mulhu	s11,t4,a1
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879d26:	01bd02b3          	add	t0,s10,s11
    e8879d2a:	92de                	add	t0,t0,s7
    e8879d2c:	02afbd33          	mulhu	s10,t6,a0
    e8879d30:	8be6                	mv	s7,s9
    e8879d32:	20af9b8b          	mula	s7,t6,a0
    e8879d36:	92ea                	add	t0,t0,s10
    e8879d38:	019bbcb3          	sltu	s9,s7,s9
    e8879d3c:	9c96                	add	s9,s9,t0
    e8879d3e:	845e                	mv	s0,s7
    e8879d40:	03eb32b3          	mulhu	t0,s6,t5
    e8879d44:	21eb140b          	mula	s0,s6,t5
    e8879d48:	9c96                	add	s9,s9,t0
    e8879d4a:	0380b2b3          	mulhu	t0,ra,s8
    e8879d4e:	01743bb3          	sltu	s7,s0,s7
    e8879d52:	8da2                	mv	s11,s0
    e8879d54:	9cde                	add	s9,s9,s7
    e8879d56:	21809d8b          	mula	s11,ra,s8
    e8879d5a:	9c96                	add	s9,s9,t0
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879d5c:	00da1293          	slli	t0,s4,0xd
    e8879d60:	0112e8b3          	or	a7,t0,a7
    e8879d64:	033a5a13          	srli	s4,s4,0x33
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879d68:	02a68bb3          	mul	s7,a3,a0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879d6c:	008dbb33          	sltu	s6,s11,s0
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879d70:	98ee                	add	a7,a7,s11
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e8879d72:	9b66                	add	s6,s6,s9
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879d74:	01b8bdb3          	sltu	s11,a7,s11
    e8879d78:	9a5a                	add	s4,s4,s6
    e8879d7a:	9a6e                	add	s4,s4,s11
    e8879d7c:	c808b40b          	extu	s0,a7,50,0
    e8879d80:	e822                	sd	s0,16(sp)
    e8879d82:	0338d893          	srli	a7,a7,0x33
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879d86:	8cde                	mv	s9,s7
    e8879d88:	20b71c8b          	mula	s9,a4,a1
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879d8c:	02a6bd33          	mulhu	s10,a3,a0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879d90:	017cbbb3          	sltu	s7,s9,s7
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879d94:	02b73db3          	mulhu	s11,a4,a1
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879d98:	01bd0b33          	add	s6,s10,s11
    e8879d9c:	9b5e                	add	s6,s6,s7
    e8879d9e:	8be6                	mv	s7,s9
    e8879da0:	210e9b8b          	mula	s7,t4,a6
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e8879da4:	030ebd33          	mulhu	s10,t4,a6
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e8879da8:	019bbcb3          	sltu	s9,s7,s9
    e8879dac:	01ab02b3          	add	t0,s6,s10
    e8879db0:	8b5e                	mv	s6,s7
    e8879db2:	218f9b0b          	mula	s6,t6,s8
    e8879db6:	92e6                	add	t0,t0,s9
    e8879db8:	038fbcb3          	mulhu	s9,t6,s8
    e8879dbc:	845a                	mv	s0,s6
    e8879dbe:	017b3bb3          	sltu	s7,s6,s7
    e8879dc2:	92e6                	add	t0,t0,s9
    e8879dc4:	21e0940b          	mula	s0,ra,t5
    e8879dc8:	9b96                	add	s7,s7,t0
    e8879dca:	03e0b2b3          	mulhu	t0,ra,t5
    e8879dce:	01643b33          	sltu	s6,s0,s6
    e8879dd2:	9b96                	add	s7,s7,t0
    e8879dd4:	9bda                	add	s7,s7,s6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8879dd6:	03868b33          	mul	s6,a3,s8
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879dda:	00da1293          	slli	t0,s4,0xd
    e8879dde:	033a5a13          	srli	s4,s4,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879de2:	9a5e                	add	s4,s4,s7
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879de4:	0112e8b3          	or	a7,t0,a7
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879de8:	98a2                	add	a7,a7,s0
    e8879dea:	0088b0b3          	sltu	ra,a7,s0
    e8879dee:	90d2                	add	ra,ra,s4
    e8879df0:	c808bd8b          	extu	s11,a7,50,0
    e8879df4:	0338d893          	srli	a7,a7,0x33
  t[3] += ((uint128_t) r4) * s4;
    e8879df8:	8bda                	mv	s7,s6
    e8879dfa:	20b99b8b          	mula	s7,s3,a1
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8879dfe:	0386bcb3          	mulhu	s9,a3,s8
  t[3] += ((uint128_t) r4) * s4;
    e8879e02:	016bbb33          	sltu	s6,s7,s6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8879e06:	02b9bd33          	mulhu	s10,s3,a1
  t[3] += ((uint128_t) r4) * s4;
    e8879e0a:	01ac8a33          	add	s4,s9,s10
    e8879e0e:	9a5a                	add	s4,s4,s6
    e8879e10:	8b5e                	mv	s6,s7
    e8879e12:	21071b0b          	mula	s6,a4,a6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8879e16:	03073cb3          	mulhu	s9,a4,a6
  t[3] += ((uint128_t) r4) * s4;
    e8879e1a:	017b3bb3          	sltu	s7,s6,s7
    e8879e1e:	019a02b3          	add	t0,s4,s9
    e8879e22:	92de                	add	t0,t0,s7
    e8879e24:	8a5a                	mv	s4,s6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e8879e26:	02aebbb3          	mulhu	s7,t4,a0
    d4 = d419 * 2;
    e8879e2a:	02600c93          	li	s9,38
  t[3] += ((uint128_t) r4) * s4;
    e8879e2e:	20ae9a0b          	mula	s4,t4,a0
    e8879e32:	92de                	add	t0,t0,s7
  r2 +=   c;
    e8879e34:	03200b93          	li	s7,50
  t[3] += ((uint128_t) r4) * s4;
    e8879e38:	016a3b33          	sltu	s6,s4,s6
    e8879e3c:	9b16                	add	s6,s6,t0
    e8879e3e:	03efb2b3          	mulhu	t0,t6,t5
    e8879e42:	8452                	mv	s0,s4
    e8879e44:	21ef940b          	mula	s0,t6,t5
    e8879e48:	9b16                	add	s6,s6,t0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e8879e4a:	00d09293          	slli	t0,ra,0xd
    e8879e4e:	0112e8b3          	or	a7,t0,a7
    e8879e52:	0330d093          	srli	ra,ra,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879e56:	03e682b3          	mul	t0,a3,t5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879e5a:	98a2                	add	a7,a7,s0
  t[3] += ((uint128_t) r4) * s4;
    e8879e5c:	01443a33          	sltu	s4,s0,s4
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879e60:	0088bfb3          	sltu	t6,a7,s0
  t[3] += ((uint128_t) r4) * s4;
    e8879e64:	9b52                	add	s6,s6,s4
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879e66:	6402                	ld	s0,0(sp)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879e68:	90da                	add	ra,ra,s6
    e8879e6a:	9f86                	add	t6,t6,ra
    e8879e6c:	c808ba0b          	extu	s4,a7,50,0
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879e70:	03e6b6b3          	mulhu	a3,a3,t5
    e8879e74:	6f02                	ld	t5,0(sp)
    e8879e76:	02b430b3          	mulhu	ra,s0,a1
    e8879e7a:	8416                	mv	s0,t0
    e8879e7c:	20bf140b          	mula	s0,t5,a1
    e8879e80:	9686                	add	a3,a3,ra
    e8879e82:	00543f33          	sltu	t5,s0,t0
    e8879e86:	85a2                	mv	a1,s0
    e8879e88:	218e940b          	mula	s0,t4,s8
    e8879e8c:	96fa                	add	a3,a3,t5
    e8879e8e:	038ebf33          	mulhu	t5,t4,s8
    e8879e92:	00b435b3          	sltu	a1,s0,a1
    e8879e96:	96fa                	add	a3,a3,t5
    e8879e98:	96ae                	add	a3,a3,a1
    e8879e9a:	0309bf33          	mulhu	t5,s3,a6
    e8879e9e:	85a2                	mv	a1,s0
    e8879ea0:	2109958b          	mula	a1,s3,a6
    e8879ea4:	96fa                	add	a3,a3,t5
    e8879ea6:	0085beb3          	sltu	t4,a1,s0
    e8879eaa:	9eb6                	add	t4,t4,a3
    e8879eac:	86ae                	mv	a3,a1
    e8879eae:	20a7168b          	mula	a3,a4,a0
    e8879eb2:	02a73833          	mulhu	a6,a4,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879eb6:	00df9513          	slli	a0,t6,0xd
    e8879eba:	0338d713          	srli	a4,a7,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879ebe:	00b6b5b3          	sltu	a1,a3,a1
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879ec2:	8f49                	or	a4,a4,a0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879ec4:	9736                	add	a4,a4,a3
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e8879ec6:	033fdf93          	srli	t6,t6,0x33
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879eca:	00d736b3          	sltu	a3,a4,a3
  r3 = in[3];
    e8879ece:	88d2                	mv	a7,s4
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e8879ed0:	9ec2                	add	t4,t4,a6
    e8879ed2:	95f6                	add	a1,a1,t4
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879ed4:	9fae                	add	t6,t6,a1
    e8879ed6:	96fe                	add	a3,a3,t6
    e8879ed8:	06b6                	slli	a3,a3,0xd
    e8879eda:	c807358b          	extu	a1,a4,50,0
    e8879ede:	934d                	srli	a4,a4,0x33
    e8879ee0:	8f55                	or	a4,a4,a3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879ee2:	66a2                	ld	a3,8(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e8879ee4:	e02e                	sd	a1,0(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879ee6:	65c2                	ld	a1,16(sp)
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879ee8:	20e4968b          	mula	a3,s1,a4
  r4 = in[4];
    e8879eec:	6502                	ld	a0,0(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8879eee:	44cd                	li	s1,19
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879ef0:	8736                	mv	a4,a3
    e8879ef2:	934d                	srli	a4,a4,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e8879ef4:	972e                	add	a4,a4,a1
    e8879ef6:	c8073e8b          	extu	t4,a4,50,0
    e8879efa:	934d                	srli	a4,a4,0x33
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e8879efc:	c806b68b          	extu	a3,a3,50,0
  r2 +=   c;
    e8879f00:	976e                	add	a4,a4,s11
  r2 = in[2];
    e8879f02:	883a                	mv	a6,a4
  r1 = in[1];
    e8879f04:	8f76                	mv	t5,t4
  r0 = in[0];
    e8879f06:	85b6                	mv	a1,a3
    d2 = r2 * 2 * 19;
    e8879f08:	039800b3          	mul	ra,a6,s9
    d0 = r0 * 2;
    e8879f0c:	00159f93          	slli	t6,a1,0x1
    d1 = r1 * 2;
    e8879f10:	001f1b13          	slli	s6,t5,0x1
    d4 = d419 * 2;
    e8879f14:	1bfd                	addi	s7,s7,-1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8879f16:	03108c33          	mul	s8,ra,a7
    d4 = d419 * 2;
    e8879f1a:	039509b3          	mul	s3,a0,s9
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8879f1e:	82e2                	mv	t0,s8
    e8879f20:	21e9928b          	mula	t0,s3,t5
    e8879f24:	03e9bd33          	mulhu	s10,s3,t5
    e8879f28:	0182bc33          	sltu	s8,t0,s8
    e8879f2c:	0310b0b3          	mulhu	ra,ra,a7
    e8879f30:	90ea                	add	ra,ra,s10
    e8879f32:	8d16                	mv	s10,t0
    e8879f34:	20b59d0b          	mula	s10,a1,a1
    e8879f38:	90e2                	add	ra,ra,s8
    e8879f3a:	02b5bc33          	mulhu	s8,a1,a1
    e8879f3e:	005d32b3          	sltu	t0,s10,t0
    e8879f42:	85ea                	mv	a1,s10
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8879f44:	02af8d33          	mul	s10,t6,a0
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e8879f48:	90e2                	add	ra,ra,s8
    e8879f4a:	9286                	add	t0,t0,ra
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8879f4c:	0368bdb3          	mulhu	s11,a7,s6
    e8879f50:	8c6a                	mv	s8,s10
    e8879f52:	02afb0b3          	mulhu	ra,t6,a0
    e8879f56:	21689c0b          	mula	s8,a7,s6
    e8879f5a:	90ee                	add	ra,ra,s11
    e8879f5c:	01ac3d33          	sltu	s10,s8,s10
    e8879f60:	03083db3          	mulhu	s11,a6,a6
    e8879f64:	9d06                	add	s10,s10,ra
    e8879f66:	80e2                	mv	ra,s8
    e8879f68:	2108108b          	mula	ra,a6,a6
    e8879f6c:	9d6e                	add	s10,s10,s11
    e8879f6e:	0180bc33          	sltu	s8,ra,s8
    e8879f72:	01ac0433          	add	s0,s8,s10
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8879f76:	03ff0d33          	mul	s10,t5,t6
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e8879f7a:	f022                	sd	s0,32(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879f7c:	c805b40b          	extu	s0,a1,50,0
    e8879f80:	e422                	sd	s0,8(sp)
    e8879f82:	91cd                	srli	a1,a1,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e8879f84:	8c6a                	mv	s8,s10
    e8879f86:	21099c0b          	mula	s8,s3,a6
    e8879f8a:	0309b433          	mulhu	s0,s3,a6
    e8879f8e:	01ac3d33          	sltu	s10,s8,s10
    e8879f92:	03ff3db3          	mulhu	s11,t5,t6
    e8879f96:	9da2                	add	s11,s11,s0
    e8879f98:	9dea                	add	s11,s11,s10
    e8879f9a:	02988d33          	mul	s10,a7,s1
    e8879f9e:	031d3433          	mulhu	s0,s10,a7
    e8879fa2:	e822                	sd	s0,16(sp)
    e8879fa4:	8462                	mv	s0,s8
    e8879fa6:	211d140b          	mula	s0,s10,a7
    e8879faa:	8d22                	mv	s10,s0
    e8879fac:	01843c33          	sltu	s8,s0,s8
    e8879fb0:	6442                	ld	s0,16(sp)
    e8879fb2:	9da2                	add	s11,s11,s0
    e8879fb4:	9de2                	add	s11,s11,s8
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879fb6:	00d29c13          	slli	s8,t0,0xd
    e8879fba:	00bc65b3          	or	a1,s8,a1
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8879fbe:	030f8c33          	mul	s8,t6,a6
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879fc2:	95ea                	add	a1,a1,s10
    e8879fc4:	01a5bd33          	sltu	s10,a1,s10
    e8879fc8:	c805b40b          	extu	s0,a1,50,0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e8879fcc:	0332d293          	srli	t0,t0,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879fd0:	9d96                	add	s11,s11,t0
    e8879fd2:	9dea                	add	s11,s11,s10
    e8879fd4:	e822                	sd	s0,16(sp)
    e8879fd6:	91cd                	srli	a1,a1,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8879fd8:	0319bd33          	mulhu	s10,s3,a7
    e8879fdc:	8462                	mv	s0,s8
    e8879fde:	030fb2b3          	mulhu	t0,t6,a6
    e8879fe2:	2119940b          	mula	s0,s3,a7
    e8879fe6:	92ea                	add	t0,t0,s10
    e8879fe8:	01843c33          	sltu	s8,s0,s8
    e8879fec:	9c16                	add	s8,s8,t0
    e8879fee:	03ef32b3          	mulhu	t0,t5,t5
    e8879ff2:	89a2                	mv	s3,s0
    e8879ff4:	9c16                	add	s8,s8,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879ff6:	00dd9293          	slli	t0,s11,0xd
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e8879ffa:	21ef140b          	mula	s0,t5,t5
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e8879ffe:	00b2e5b3          	or	a1,t0,a1
    e887a002:	033ddd93          	srli	s11,s11,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a006:	03f882b3          	mul	t0,a7,t6
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a00a:	95a2                	add	a1,a1,s0
    e887a00c:	0085bf33          	sltu	t5,a1,s0
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887a010:	013439b3          	sltu	s3,s0,s3
    e887a014:	99e2                	add	s3,s3,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a016:	99ee                	add	s3,s3,s11
    e887a018:	9f4e                	add	t5,t5,s3
    e887a01a:	c805bd0b          	extu	s10,a1,50,0
    e887a01e:	91cd                	srli	a1,a1,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a020:	8416                	mv	s0,t0
    e887a022:	2168140b          	mula	s0,a6,s6
    e887a026:	03f8b8b3          	mulhu	a7,a7,t6
    e887a02a:	005432b3          	sltu	t0,s0,t0
    e887a02e:	8c22                	mv	s8,s0
    e887a030:	03683fb3          	mulhu	t6,a6,s6
    e887a034:	98fe                	add	a7,a7,t6
    e887a036:	9896                	add	a7,a7,t0
    d419 = r4 * 19;
    e887a038:	029502b3          	mul	t0,a0,s1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a03c:	20a29c0b          	mula	s8,t0,a0
    e887a040:	02a2bfb3          	mulhu	t6,t0,a0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a044:	00df1513          	slli	a0,t5,0xd
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a048:	008c3833          	sltu	a6,s8,s0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a04c:	8dc9                	or	a1,a1,a0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a04e:	95e2                	add	a1,a1,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a050:	033f5f13          	srli	t5,t5,0x33
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a054:	0185bc33          	sltu	s8,a1,s8
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a058:	6442                	ld	s0,16(sp)
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a05a:	98fe                	add	a7,a7,t6
    e887a05c:	9846                	add	a6,a6,a7
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a05e:	9f42                	add	t5,t5,a6
    e887a060:	9c7a                	add	s8,s8,t5
    e887a062:	00dc1513          	slli	a0,s8,0xd
    e887a066:	c805b88b          	extu	a7,a1,50,0
    e887a06a:	91cd                	srli	a1,a1,0x33
    e887a06c:	8dc9                	or	a1,a1,a0
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a06e:	7502                	ld	a0,32(sp)
    e887a070:	90ae                	add	ra,ra,a1
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a072:	033c5c13          	srli	s8,s8,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a076:	00b0b5b3          	sltu	a1,ra,a1
    e887a07a:	9c2a                	add	s8,s8,a0
    e887a07c:	9c2e                	add	s8,s8,a1
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a07e:	6822                	ld	a6,8(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a080:	c800b50b          	extu	a0,ra,50,0
    e887a084:	0c36                	slli	s8,s8,0xd
    e887a086:	0330d093          	srli	ra,ra,0x33
    e887a08a:	001c60b3          	or	ra,s8,ra
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a08e:	2014980b          	mula	a6,s1,ra
    e887a092:	c808358b          	extu	a1,a6,50,0
    e887a096:	03385813          	srli	a6,a6,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a09a:	9822                	add	a6,a6,s0
    e887a09c:	c8083f0b          	extu	t5,a6,50,0
    e887a0a0:	03385813          	srli	a6,a6,0x33
    r2 +=   c;
    e887a0a4:	986a                	add	a6,a6,s10
  } while(--count);
    e887a0a6:	e60b91e3          	bnez	s7,e8879f08 <curve25519_donna+0x1d5a>
  r4 *= 19;
    e887a0aa:	6402                	ld	s0,0(sp)
  t[0]  =  ((uint128_t) r0) * s0;
    e887a0ac:	02b682b3          	mul	t0,a3,a1
  r4 *= 19;
    e887a0b0:	02940fb3          	mul	t6,s0,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a0b4:	8b96                	mv	s7,t0
    e887a0b6:	03ff3c33          	mulhu	s8,t5,t6
  t[0]  =  ((uint128_t) r0) * s0;
    e887a0ba:	02b6b9b3          	mulhu	s3,a3,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a0be:	21ff1b8b          	mula	s7,t5,t6
    e887a0c2:	99e2                	add	s3,s3,s8
  r1 *= 19;
    e887a0c4:	029e8433          	mul	s0,t4,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a0c8:	005bb2b3          	sltu	t0,s7,t0
    e887a0cc:	92ce                	add	t0,t0,s3
    e887a0ce:	89de                	mv	s3,s7
    e887a0d0:	02853c33          	mulhu	s8,a0,s0
  r1 *= 19;
    e887a0d4:	fc22                	sd	s0,56(sp)
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a0d6:	2085198b          	mula	s3,a0,s0
    e887a0da:	92e2                	add	t0,t0,s8
  r3 *= 19;
    e887a0dc:	029a00b3          	mul	ra,s4,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a0e0:	0179bbb3          	sltu	s7,s3,s7
    e887a0e4:	9b96                	add	s7,s7,t0
    e887a0e6:	8c4e                	mv	s8,s3
    e887a0e8:	021832b3          	mulhu	t0,a6,ra
    e887a0ec:	20181c0b          	mula	s8,a6,ra
    e887a0f0:	9b96                	add	s7,s7,t0
  r2 *= 19;
    e887a0f2:	02970b33          	mul	s6,a4,s1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a0f6:	013c39b3          	sltu	s3,s8,s3
    e887a0fa:	82e2                	mv	t0,s8
    e887a0fc:	99de                	add	s3,s3,s7
    e887a0fe:	2168928b          	mula	t0,a7,s6
    e887a102:	0368bbb3          	mulhu	s7,a7,s6
    e887a106:	0182bc33          	sltu	s8,t0,s8
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a10a:	c802b40b          	extu	s0,t0,50,0
    e887a10e:	0332d293          	srli	t0,t0,0x33
    e887a112:	f022                	sd	s0,32(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887a114:	03e68cb3          	mul	s9,a3,t5
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a118:	99de                	add	s3,s3,s7
    e887a11a:	013c0bb3          	add	s7,s8,s3
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887a11e:	03d5bd33          	mulhu	s10,a1,t4
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887a122:	8c66                	mv	s8,s9
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887a124:	03e6b9b3          	mulhu	s3,a3,t5
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887a128:	21d59c0b          	mula	s8,a1,t4
    e887a12c:	99ea                	add	s3,s3,s10
    e887a12e:	019c3cb3          	sltu	s9,s8,s9
    e887a132:	9cce                	add	s9,s9,s3
    e887a134:	8de2                	mv	s11,s8
    e887a136:	03f839b3          	mulhu	s3,a6,t6
    e887a13a:	21f81d8b          	mula	s11,a6,t6
    e887a13e:	9cce                	add	s9,s9,s3
    e887a140:	018dbc33          	sltu	s8,s11,s8
    e887a144:	9c66                	add	s8,s8,s9
    e887a146:	8d6e                	mv	s10,s11
    e887a148:	03653cb3          	mulhu	s9,a0,s6
    e887a14c:	21651d0b          	mula	s10,a0,s6
    e887a150:	9c66                	add	s8,s8,s9
    e887a152:	01bd3db3          	sltu	s11,s10,s11
    e887a156:	89ea                	mv	s3,s10
    e887a158:	2018998b          	mula	s3,a7,ra
    e887a15c:	9de2                	add	s11,s11,s8
    e887a15e:	0218bc33          	mulhu	s8,a7,ra
    e887a162:	01a9bd33          	sltu	s10,s3,s10
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887a166:	03068cb3          	mul	s9,a3,a6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887a16a:	9de2                	add	s11,s11,s8
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a16c:	00db9c13          	slli	s8,s7,0xd
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887a170:	9d6e                	add	s10,s10,s11
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a172:	005c62b3          	or	t0,s8,t0
    e887a176:	033bdb93          	srli	s7,s7,0x33
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a17a:	92ce                	add	t0,t0,s3
    e887a17c:	9d5e                	add	s10,s10,s7
    e887a17e:	0132b9b3          	sltu	s3,t0,s3
    e887a182:	99ea                	add	s3,s3,s10
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887a184:	0306bc33          	mulhu	s8,a3,a6
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887a188:	8be6                	mv	s7,s9
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a18a:	c802b40b          	extu	s0,t0,50,0
    e887a18e:	0332d293          	srli	t0,t0,0x33
    e887a192:	f422                	sd	s0,40(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887a194:	02e5bd33          	mulhu	s10,a1,a4
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887a198:	20e59b8b          	mula	s7,a1,a4
    e887a19c:	9c6a                	add	s8,s8,s10
    e887a19e:	019bbcb3          	sltu	s9,s7,s9
    e887a1a2:	9ce2                	add	s9,s9,s8
    e887a1a4:	8dde                	mv	s11,s7
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887a1a6:	03df3c33          	mulhu	s8,t5,t4
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887a1aa:	21df1d8b          	mula	s11,t5,t4
    e887a1ae:	9ce2                	add	s9,s9,s8
    e887a1b0:	017dbbb3          	sltu	s7,s11,s7
    e887a1b4:	9be6                	add	s7,s7,s9
    e887a1b6:	8d6e                	mv	s10,s11
    e887a1b8:	03f8bcb3          	mulhu	s9,a7,t6
    e887a1bc:	21f89d0b          	mula	s10,a7,t6
    e887a1c0:	9be6                	add	s7,s7,s9
    e887a1c2:	01bd3db3          	sltu	s11,s10,s11
    e887a1c6:	8c6a                	mv	s8,s10
    e887a1c8:	20151c0b          	mula	s8,a0,ra
    e887a1cc:	9dde                	add	s11,s11,s7
    e887a1ce:	02153bb3          	mulhu	s7,a0,ra
    e887a1d2:	01ac3d33          	sltu	s10,s8,s10
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887a1d6:	03168cb3          	mul	s9,a3,a7
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887a1da:	9dde                	add	s11,s11,s7
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a1dc:	00d99b93          	slli	s7,s3,0xd
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887a1e0:	9d6e                	add	s10,s10,s11
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a1e2:	005be2b3          	or	t0,s7,t0
    e887a1e6:	0339d993          	srli	s3,s3,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a1ea:	92e2                	add	t0,t0,s8
    e887a1ec:	9d4e                	add	s10,s10,s3
    e887a1ee:	0182bc33          	sltu	s8,t0,s8
    e887a1f2:	9c6a                	add	s8,s8,s10
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887a1f4:	0316bbb3          	mulhu	s7,a3,a7
  t[3] += ((uint128_t) r4) * s4;
    e887a1f8:	89e6                	mv	s3,s9
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a1fa:	c802b40b          	extu	s0,t0,50,0
    e887a1fe:	0332d293          	srli	t0,t0,0x33
    e887a202:	f822                	sd	s0,48(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887a204:	0345bd33          	mulhu	s10,a1,s4
  t[3] += ((uint128_t) r4) * s4;
    e887a208:	2145998b          	mula	s3,a1,s4
    e887a20c:	9bea                	add	s7,s7,s10
    e887a20e:	0199bcb3          	sltu	s9,s3,s9
    e887a212:	9cde                	add	s9,s9,s7
    e887a214:	8dce                	mv	s11,s3
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887a216:	02ef3bb3          	mulhu	s7,t5,a4
  t[3] += ((uint128_t) r4) * s4;
    e887a21a:	20ef1d8b          	mula	s11,t5,a4
    e887a21e:	9cde                	add	s9,s9,s7
    e887a220:	013db9b3          	sltu	s3,s11,s3
    e887a224:	99e6                	add	s3,s3,s9
    e887a226:	8d6e                	mv	s10,s11
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887a228:	030ebcb3          	mulhu	s9,t4,a6
  t[3] += ((uint128_t) r4) * s4;
    e887a22c:	210e9d0b          	mula	s10,t4,a6
    e887a230:	99e6                	add	s3,s3,s9
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a232:	6c82                	ld	s9,0(sp)
  t[3] += ((uint128_t) r4) * s4;
    e887a234:	01bd3db3          	sltu	s11,s10,s11
    e887a238:	9dce                	add	s11,s11,s3
    e887a23a:	03f539b3          	mulhu	s3,a0,t6
    e887a23e:	8bea                	mv	s7,s10
    e887a240:	21f51b8b          	mula	s7,a0,t6
    e887a244:	9dce                	add	s11,s11,s3
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a246:	00dc1993          	slli	s3,s8,0xd
    e887a24a:	0059e2b3          	or	t0,s3,t0
    e887a24e:	033c5c13          	srli	s8,s8,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a252:	02a689b3          	mul	s3,a3,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a256:	92de                	add	t0,t0,s7
    e887a258:	c802b40b          	extu	s0,t0,50,0
    e887a25c:	e422                	sd	s0,8(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a25e:	6402                	ld	s0,0(sp)
  t[3] += ((uint128_t) r4) * s4;
    e887a260:	01abbd33          	sltu	s10,s7,s10
    e887a264:	9d6e                	add	s10,s10,s11
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a266:	9d62                	add	s10,s10,s8
    e887a268:	0172bbb3          	sltu	s7,t0,s7
    e887a26c:	9bea                	add	s7,s7,s10
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a26e:	0285bc33          	mulhu	s8,a1,s0
    e887a272:	844e                	mv	s0,s3
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a274:	0332d293          	srli	t0,t0,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a278:	02a6b533          	mulhu	a0,a3,a0
    e887a27c:	2195940b          	mula	s0,a1,s9
    e887a280:	9562                	add	a0,a0,s8
    e887a282:	013439b3          	sltu	s3,s0,s3
    e887a286:	99aa                	add	s3,s3,a0
    e887a288:	031eb533          	mulhu	a0,t4,a7
    e887a28c:	85a2                	mv	a1,s0
    e887a28e:	211e940b          	mula	s0,t4,a7
    e887a292:	99aa                	add	s3,s3,a0
    e887a294:	00b435b3          	sltu	a1,s0,a1
    e887a298:	95ce                	add	a1,a1,s3
    e887a29a:	8522                	mv	a0,s0
    e887a29c:	034f39b3          	mulhu	s3,t5,s4
    e887a2a0:	214f150b          	mula	a0,t5,s4
    e887a2a4:	95ce                	add	a1,a1,s3
    e887a2a6:	008538b3          	sltu	a7,a0,s0
    e887a2aa:	98ae                	add	a7,a7,a1
    e887a2ac:	85aa                	mv	a1,a0
    e887a2ae:	20e8158b          	mula	a1,a6,a4
  r2 +=   c;
    e887a2b2:	06400413          	li	s0,100
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a2b6:	02e839b3          	mulhu	s3,a6,a4
    e887a2ba:	00a5bf33          	sltu	t5,a1,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a2be:	00db9513          	slli	a0,s7,0xd
    e887a2c2:	005562b3          	or	t0,a0,t0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a2c6:	92ae                	add	t0,t0,a1
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a2c8:	033bdb93          	srli	s7,s7,0x33
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a2cc:	00b2b5b3          	sltu	a1,t0,a1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a2d0:	7802                	ld	a6,32(sp)
  r3 = in[3];
    e887a2d2:	6522                	ld	a0,8(sp)
  r2 +=   c;
    e887a2d4:	f022                	sd	s0,32(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a2d6:	98ce                	add	a7,a7,s3
    e887a2d8:	98fa                	add	a7,a7,t5
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a2da:	9bc6                	add	s7,s7,a7
    e887a2dc:	9bae                	add	s7,s7,a1
    e887a2de:	0bb6                	slli	s7,s7,0xd
    e887a2e0:	c802b58b          	extu	a1,t0,50,0
    e887a2e4:	0332d293          	srli	t0,t0,0x33
    e887a2e8:	005be2b3          	or	t0,s7,t0
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a2ec:	2054980b          	mula	a6,s1,t0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a2f0:	e82e                	sd	a1,16(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a2f2:	75a2                	ld	a1,40(sp)
  r4 = in[4];
    e887a2f4:	6f42                	ld	t5,16(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887a2f6:	4bcd                	li	s7,19
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a2f8:	c808348b          	extu	s1,a6,50,0
    e887a2fc:	03385813          	srli	a6,a6,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a300:	982e                	add	a6,a6,a1
  r2 +=   c;
    e887a302:	75c2                	ld	a1,48(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a304:	c808398b          	extu	s3,a6,50,0
    e887a308:	03385813          	srli	a6,a6,0x33
  r2 +=   c;
    e887a30c:	982e                	add	a6,a6,a1
  r2 = in[2];
    e887a30e:	85c2                	mv	a1,a6
  r1 = in[1];
    e887a310:	88ce                	mv	a7,s3
  r0 = in[0];
    e887a312:	82a6                	mv	t0,s1
    d1 = r1 * 2;
    e887a314:	00189413          	slli	s0,a7,0x1
    e887a318:	e0a2                	sd	s0,64(sp)
    d4 = d419 * 2;
    e887a31a:	02600413          	li	s0,38
    d2 = r2 * 2 * 19;
    e887a31e:	02858db3          	mul	s11,a1,s0
    d0 = r0 * 2;
    e887a322:	00129c13          	slli	s8,t0,0x1
    d4 = d419 * 2;
    e887a326:	028f0d33          	mul	s10,t5,s0
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887a32a:	02ad8433          	mul	s0,s11,a0
    e887a32e:	8ca2                	mv	s9,s0
    e887a330:	211d140b          	mula	s0,s10,a7
    e887a334:	f422                	sd	s0,40(sp)
    e887a336:	01943433          	sltu	s0,s0,s9
    e887a33a:	8ca2                	mv	s9,s0
    e887a33c:	02adbdb3          	mulhu	s11,s11,a0
    e887a340:	031d3433          	mulhu	s0,s10,a7
    e887a344:	9da2                	add	s11,s11,s0
    e887a346:	0252b433          	mulhu	s0,t0,t0
    e887a34a:	9de6                	add	s11,s11,s9
    e887a34c:	8ca2                	mv	s9,s0
    e887a34e:	7422                	ld	s0,40(sp)
    e887a350:	9de6                	add	s11,s11,s9
    e887a352:	2052940b          	mula	s0,t0,t0
    e887a356:	72a2                	ld	t0,40(sp)
    e887a358:	005432b3          	sltu	t0,s0,t0
    e887a35c:	f822                	sd	s0,48(sp)
    e887a35e:	01b28433          	add	s0,t0,s11
    e887a362:	f422                	sd	s0,40(sp)
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887a364:	03ec3433          	mulhu	s0,s8,t5
    e887a368:	8ca2                	mv	s9,s0
    e887a36a:	00189413          	slli	s0,a7,0x1
    e887a36e:	03ec02b3          	mul	t0,s8,t5
    e887a372:	02853433          	mulhu	s0,a0,s0
    e887a376:	8d96                	mv	s11,t0
    e887a378:	e4a2                	sd	s0,72(sp)
    e887a37a:	00189413          	slli	s0,a7,0x1
    e887a37e:	20851d8b          	mula	s11,a0,s0
    e887a382:	8466                	mv	s0,s9
    e887a384:	6ca6                	ld	s9,72(sp)
    e887a386:	9466                	add	s0,s0,s9
    e887a388:	005db2b3          	sltu	t0,s11,t0
    e887a38c:	92a2                	add	t0,t0,s0
    e887a38e:	02b5b433          	mulhu	s0,a1,a1
    e887a392:	8ca2                	mv	s9,s0
    e887a394:	846e                	mv	s0,s11
    e887a396:	20b5940b          	mula	s0,a1,a1
    e887a39a:	92e6                	add	t0,t0,s9
    e887a39c:	01b43db3          	sltu	s11,s0,s11
    e887a3a0:	e4a2                	sd	s0,72(sp)
    e887a3a2:	005d8433          	add	s0,s11,t0
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887a3a6:	038882b3          	mul	t0,a7,s8
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887a3aa:	eca2                	sd	s0,88(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a3ac:	7442                	ld	s0,48(sp)
    e887a3ae:	c804340b          	extu	s0,s0,50,0
    e887a3b2:	e8a2                	sd	s0,80(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887a3b4:	8d96                	mv	s11,t0
    e887a3b6:	20bd1d8b          	mula	s11,s10,a1
    e887a3ba:	02bd3cb3          	mulhu	s9,s10,a1
    e887a3be:	005db2b3          	sltu	t0,s11,t0
    e887a3c2:	0388b433          	mulhu	s0,a7,s8
    e887a3c6:	9466                	add	s0,s0,s9
    e887a3c8:	9416                	add	s0,s0,t0
    e887a3ca:	037502b3          	mul	t0,a0,s7
    e887a3ce:	f0a2                	sd	s0,96(sp)
    e887a3d0:	02a2b433          	mulhu	s0,t0,a0
    e887a3d4:	f4a2                	sd	s0,104(sp)
    e887a3d6:	846e                	mv	s0,s11
    e887a3d8:	20a2940b          	mula	s0,t0,a0
    e887a3dc:	72a6                	ld	t0,104(sp)
    e887a3de:	8ca2                	mv	s9,s0
    e887a3e0:	01b43db3          	sltu	s11,s0,s11
    e887a3e4:	7406                	ld	s0,96(sp)
    e887a3e6:	92a2                	add	t0,t0,s0
    e887a3e8:	005d8433          	add	s0,s11,t0
    e887a3ec:	f0a2                	sd	s0,96(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a3ee:	7422                	ld	s0,40(sp)
    e887a3f0:	00d41d93          	slli	s11,s0,0xd
    e887a3f4:	7442                	ld	s0,48(sp)
    e887a3f6:	03345293          	srli	t0,s0,0x33
    e887a3fa:	7422                	ld	s0,40(sp)
    e887a3fc:	005de2b3          	or	t0,s11,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a400:	005c8db3          	add	s11,s9,t0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a404:	904d                	srli	s0,s0,0x33
    e887a406:	f422                	sd	s0,40(sp)
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a408:	019db433          	sltu	s0,s11,s9
    e887a40c:	8ca2                	mv	s9,s0
    e887a40e:	72a2                	ld	t0,40(sp)
    e887a410:	7406                	ld	s0,96(sp)
    e887a412:	92a2                	add	t0,t0,s0
    e887a414:	005c8433          	add	s0,s9,t0
    e887a418:	f422                	sd	s0,40(sp)
    e887a41a:	c80db40b          	extu	s0,s11,50,0
    e887a41e:	f822                	sd	s0,48(sp)
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887a420:	02bc3433          	mulhu	s0,s8,a1
    e887a424:	02bc02b3          	mul	t0,s8,a1
    e887a428:	8ca2                	mv	s9,s0
    e887a42a:	02ad3433          	mulhu	s0,s10,a0
    e887a42e:	f0a2                	sd	s0,96(sp)
    e887a430:	8416                	mv	s0,t0
    e887a432:	20ad140b          	mula	s0,s10,a0
    e887a436:	8d22                	mv	s10,s0
    e887a438:	005432b3          	sltu	t0,s0,t0
    e887a43c:	8466                	mv	s0,s9
    e887a43e:	7c86                	ld	s9,96(sp)
    e887a440:	9466                	add	s0,s0,s9
    e887a442:	92a2                	add	t0,t0,s0
    e887a444:	0318b433          	mulhu	s0,a7,a7
    e887a448:	8ca2                	mv	s9,s0
    e887a44a:	846a                	mv	s0,s10
    e887a44c:	2118940b          	mula	s0,a7,a7
    e887a450:	92e6                	add	t0,t0,s9
    e887a452:	01a43d33          	sltu	s10,s0,s10
    e887a456:	88a2                	mv	a7,s0
    e887a458:	005d0433          	add	s0,s10,t0
    e887a45c:	8ca2                	mv	s9,s0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a45e:	7422                	ld	s0,40(sp)
    e887a460:	033dd293          	srli	t0,s11,0x33
    e887a464:	00d41d13          	slli	s10,s0,0xd
    e887a468:	005d62b3          	or	t0,s10,t0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a46c:	00588db3          	add	s11,a7,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a470:	03345d13          	srli	s10,s0,0x33
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a474:	011db8b3          	sltu	a7,s11,a7
    e887a478:	01ac82b3          	add	t0,s9,s10
    e887a47c:	00588d33          	add	s10,a7,t0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a480:	038508b3          	mul	a7,a0,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a484:	c80db40b          	extu	s0,s11,50,0
    e887a488:	8ca2                	mv	s9,s0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a48a:	6406                	ld	s0,64(sp)
    e887a48c:	6286                	ld	t0,64(sp)
    e887a48e:	03853533          	mulhu	a0,a0,s8
    e887a492:	0285bc33          	mulhu	s8,a1,s0
    e887a496:	8446                	mv	s0,a7
    e887a498:	2055940b          	mula	s0,a1,t0
    e887a49c:	9562                	add	a0,a0,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a49e:	033dd293          	srli	t0,s11,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a4a2:	011438b3          	sltu	a7,s0,a7
    e887a4a6:	98aa                	add	a7,a7,a0
    d419 = r4 * 19;
    e887a4a8:	037f0533          	mul	a0,t5,s7
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a4ac:	85a2                	mv	a1,s0
    e887a4ae:	21e5140b          	mula	s0,a0,t5
    e887a4b2:	03e53c33          	mulhu	s8,a0,t5
    e887a4b6:	00b435b3          	sltu	a1,s0,a1
    e887a4ba:	01888533          	add	a0,a7,s8
    e887a4be:	952e                	add	a0,a0,a1
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a4c0:	00dd1593          	slli	a1,s10,0xd
    e887a4c4:	0055e2b3          	or	t0,a1,t0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a4c8:	92a2                	add	t0,t0,s0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a4ca:	033d5d13          	srli	s10,s10,0x33
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a4ce:	0082bf33          	sltu	t5,t0,s0
    e887a4d2:	956a                	add	a0,a0,s10
    e887a4d4:	9f2a                	add	t5,t5,a0
    e887a4d6:	00df1593          	slli	a1,t5,0xd
    e887a4da:	c802b50b          	extu	a0,t0,50,0
    e887a4de:	0332d293          	srli	t0,t0,0x33
    e887a4e2:	0055e2b3          	or	t0,a1,t0
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a4e6:	65a6                	ld	a1,72(sp)
    e887a4e8:	6466                	ld	s0,88(sp)
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a4ea:	033f5f13          	srli	t5,t5,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a4ee:	9596                	add	a1,a1,t0
    e887a4f0:	0055bdb3          	sltu	s11,a1,t0
    e887a4f4:	008f02b3          	add	t0,t5,s0
    e887a4f8:	92ee                	add	t0,t0,s11
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a4fa:	6446                	ld	s0,80(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a4fc:	02b6                	slli	t0,t0,0xd
    e887a4fe:	c805bf0b          	extu	t5,a1,50,0
    e887a502:	91cd                	srli	a1,a1,0x33
    e887a504:	00b2e5b3          	or	a1,t0,a1
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a508:	20bb940b          	mula	s0,s7,a1
    e887a50c:	03345593          	srli	a1,s0,0x33
    e887a510:	c804328b          	extu	t0,s0,50,0
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a514:	7442                	ld	s0,48(sp)
    e887a516:	95a2                	add	a1,a1,s0
    e887a518:	7402                	ld	s0,32(sp)
    e887a51a:	c805b88b          	extu	a7,a1,50,0
    e887a51e:	91cd                	srli	a1,a1,0x33
    e887a520:	147d                	addi	s0,s0,-1
    e887a522:	f022                	sd	s0,32(sp)
    r2 +=   c;
    e887a524:	95e6                	add	a1,a1,s9
  } while(--count);
    e887a526:	de0417e3          	bnez	s0,e887a314 <curve25519_donna+0x2166>
  r4 *= 19;
    e887a52a:	6442                	ld	s0,16(sp)
  t[0]  =  ((uint128_t) r0) * s0;
    e887a52c:	02548db3          	mul	s11,s1,t0
  r4 *= 19;
    e887a530:	03740c33          	mul	s8,s0,s7
  r3 *= 19;
    e887a534:	6422                	ld	s0,8(sp)
    e887a536:	03740d33          	mul	s10,s0,s7
  t[0]  =  ((uint128_t) r0) * s0;
    e887a53a:	0254b433          	mulhu	s0,s1,t0
    e887a53e:	8ca2                	mv	s9,s0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a540:	846e                	mv	s0,s11
    e887a542:	2188940b          	mula	s0,a7,s8
    e887a546:	f022                	sd	s0,32(sp)
    e887a548:	01b43db3          	sltu	s11,s0,s11
    e887a54c:	8466                	mv	s0,s9
    e887a54e:	0388bcb3          	mulhu	s9,a7,s8
    e887a552:	9466                	add	s0,s0,s9
    e887a554:	946e                	add	s0,s0,s11
  r1 *= 19;
    e887a556:	03798db3          	mul	s11,s3,s7
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887a55a:	f822                	sd	s0,48(sp)
    e887a55c:	7c82                	ld	s9,32(sp)
    e887a55e:	03edb433          	mulhu	s0,s11,t5
    e887a562:	e0a2                	sd	s0,64(sp)
    e887a564:	7402                	ld	s0,32(sp)
    e887a566:	21ed940b          	mula	s0,s11,t5
    e887a56a:	f422                	sd	s0,40(sp)
    e887a56c:	01943433          	sltu	s0,s0,s9
    e887a570:	f022                	sd	s0,32(sp)
    e887a572:	6c86                	ld	s9,64(sp)
    e887a574:	7442                	ld	s0,48(sp)
    e887a576:	01940db3          	add	s11,s0,s9
    e887a57a:	7402                	ld	s0,32(sp)
    e887a57c:	7ca2                	ld	s9,40(sp)
    e887a57e:	9da2                	add	s11,s11,s0
    e887a580:	7422                	ld	s0,40(sp)
    e887a582:	21a5940b          	mula	s0,a1,s10
    e887a586:	f022                	sd	s0,32(sp)
    e887a588:	01943433          	sltu	s0,s0,s9
    e887a58c:	8ca2                	mv	s9,s0
    e887a58e:	03a5b433          	mulhu	s0,a1,s10
    e887a592:	9da2                	add	s11,s11,s0
    e887a594:	03780433          	mul	s0,a6,s7
    e887a598:	9de6                	add	s11,s11,s9
    e887a59a:	02853433          	mulhu	s0,a0,s0
    e887a59e:	03780cb3          	mul	s9,a6,s7
    e887a5a2:	f822                	sd	s0,48(sp)
    e887a5a4:	7402                	ld	s0,32(sp)
    e887a5a6:	2195140b          	mula	s0,a0,s9
    e887a5aa:	7c82                	ld	s9,32(sp)
    e887a5ac:	f422                	sd	s0,40(sp)
    e887a5ae:	01943433          	sltu	s0,s0,s9
    e887a5b2:	8ca2                	mv	s9,s0
    e887a5b4:	7442                	ld	s0,48(sp)
    e887a5b6:	9da2                	add	s11,s11,s0
    e887a5b8:	01bc8433          	add	s0,s9,s11
    e887a5bc:	e0a2                	sd	s0,64(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a5be:	7422                	ld	s0,40(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887a5c0:	03148db3          	mul	s11,s1,a7
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a5c4:	c804340b          	extu	s0,s0,50,0
    e887a5c8:	e4a2                	sd	s0,72(sp)
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887a5ca:	0314b433          	mulhu	s0,s1,a7
    e887a5ce:	8ca2                	mv	s9,s0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887a5d0:	846e                	mv	s0,s11
    e887a5d2:	2132940b          	mula	s0,t0,s3
    e887a5d6:	f022                	sd	s0,32(sp)
    e887a5d8:	01b43db3          	sltu	s11,s0,s11
    e887a5dc:	8466                	mv	s0,s9
    e887a5de:	0332bcb3          	mulhu	s9,t0,s3
    e887a5e2:	9466                	add	s0,s0,s9
    e887a5e4:	9da2                	add	s11,s11,s0
    e887a5e6:	7402                	ld	s0,32(sp)
    e887a5e8:	7c82                	ld	s9,32(sp)
    e887a5ea:	2185940b          	mula	s0,a1,s8
    e887a5ee:	f822                	sd	s0,48(sp)
    e887a5f0:	01943433          	sltu	s0,s0,s9
    e887a5f4:	8ca2                	mv	s9,s0
    e887a5f6:	0385b433          	mulhu	s0,a1,s8
    e887a5fa:	9da2                	add	s11,s11,s0
    e887a5fc:	03780433          	mul	s0,a6,s7
    e887a600:	9de6                	add	s11,s11,s9
    e887a602:	028f3433          	mulhu	s0,t5,s0
    e887a606:	03780cb3          	mul	s9,a6,s7
    e887a60a:	e8a2                	sd	s0,80(sp)
    e887a60c:	7442                	ld	s0,48(sp)
    e887a60e:	219f140b          	mula	s0,t5,s9
    e887a612:	7cc2                	ld	s9,48(sp)
    e887a614:	f022                	sd	s0,32(sp)
    e887a616:	01943433          	sltu	s0,s0,s9
    e887a61a:	8ca2                	mv	s9,s0
    e887a61c:	6446                	ld	s0,80(sp)
    e887a61e:	9da2                	add	s11,s11,s0
    e887a620:	7402                	ld	s0,32(sp)
    e887a622:	9de6                	add	s11,s11,s9
    e887a624:	7c82                	ld	s9,32(sp)
    e887a626:	21a5140b          	mula	s0,a0,s10
    e887a62a:	f822                	sd	s0,48(sp)
    e887a62c:	01943433          	sltu	s0,s0,s9
    e887a630:	8ca2                	mv	s9,s0
    e887a632:	03a53433          	mulhu	s0,a0,s10
    e887a636:	9da2                	add	s11,s11,s0
    e887a638:	01bc8433          	add	s0,s9,s11
    e887a63c:	e8a2                	sd	s0,80(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a63e:	6406                	ld	s0,64(sp)
    e887a640:	0436                	slli	s0,s0,0xd
    e887a642:	8ca2                	mv	s9,s0
    e887a644:	7422                	ld	s0,40(sp)
    e887a646:	03345d93          	srli	s11,s0,0x33
    e887a64a:	6406                	ld	s0,64(sp)
    e887a64c:	01bcedb3          	or	s11,s9,s11
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a650:	7cc2                	ld	s9,48(sp)
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a652:	904d                	srli	s0,s0,0x33
    e887a654:	e0a2                	sd	s0,64(sp)
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a656:	7442                	ld	s0,48(sp)
    e887a658:	946e                	add	s0,s0,s11
    e887a65a:	f022                	sd	s0,32(sp)
    e887a65c:	01943433          	sltu	s0,s0,s9
    e887a660:	f422                	sd	s0,40(sp)
    e887a662:	6c86                	ld	s9,64(sp)
    e887a664:	6446                	ld	s0,80(sp)
    e887a666:	01940db3          	add	s11,s0,s9
    e887a66a:	7422                	ld	s0,40(sp)
    e887a66c:	946e                	add	s0,s0,s11
    e887a66e:	e0a2                	sd	s0,64(sp)
    e887a670:	7402                	ld	s0,32(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887a672:	02b48db3          	mul	s11,s1,a1
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a676:	c804340b          	extu	s0,s0,50,0
    e887a67a:	e8a2                	sd	s0,80(sp)
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887a67c:	02b4b433          	mulhu	s0,s1,a1
    e887a680:	8ca2                	mv	s9,s0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887a682:	846e                	mv	s0,s11
    e887a684:	2102940b          	mula	s0,t0,a6
    e887a688:	f422                	sd	s0,40(sp)
    e887a68a:	01b43db3          	sltu	s11,s0,s11
    e887a68e:	8466                	mv	s0,s9
    e887a690:	0302bcb3          	mulhu	s9,t0,a6
    e887a694:	9466                	add	s0,s0,s9
    e887a696:	9da2                	add	s11,s11,s0
    e887a698:	7422                	ld	s0,40(sp)
    e887a69a:	7ca2                	ld	s9,40(sp)
    e887a69c:	2138940b          	mula	s0,a7,s3
    e887a6a0:	f822                	sd	s0,48(sp)
    e887a6a2:	01943433          	sltu	s0,s0,s9
    e887a6a6:	8ca2                	mv	s9,s0
    e887a6a8:	0338b433          	mulhu	s0,a7,s3
    e887a6ac:	9da2                	add	s11,s11,s0
    e887a6ae:	7442                	ld	s0,48(sp)
    e887a6b0:	9de6                	add	s11,s11,s9
    e887a6b2:	7cc2                	ld	s9,48(sp)
    e887a6b4:	2185140b          	mula	s0,a0,s8
    e887a6b8:	f422                	sd	s0,40(sp)
    e887a6ba:	01943433          	sltu	s0,s0,s9
    e887a6be:	8ca2                	mv	s9,s0
    e887a6c0:	03853433          	mulhu	s0,a0,s8
    e887a6c4:	9da2                	add	s11,s11,s0
    e887a6c6:	03af3433          	mulhu	s0,t5,s10
    e887a6ca:	9de6                	add	s11,s11,s9
    e887a6cc:	8ca2                	mv	s9,s0
    e887a6ce:	7422                	ld	s0,40(sp)
    e887a6d0:	9de6                	add	s11,s11,s9
    e887a6d2:	21af140b          	mula	s0,t5,s10
    e887a6d6:	8d22                	mv	s10,s0
    e887a6d8:	7422                	ld	s0,40(sp)
    e887a6da:	008d3433          	sltu	s0,s10,s0
    e887a6de:	f422                	sd	s0,40(sp)
    e887a6e0:	7422                	ld	s0,40(sp)
    e887a6e2:	946e                	add	s0,s0,s11
    e887a6e4:	8ca2                	mv	s9,s0
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a6e6:	6406                	ld	s0,64(sp)
    e887a6e8:	0436                	slli	s0,s0,0xd
    e887a6ea:	f422                	sd	s0,40(sp)
    e887a6ec:	7402                	ld	s0,32(sp)
    e887a6ee:	03345d93          	srli	s11,s0,0x33
    e887a6f2:	7422                	ld	s0,40(sp)
    e887a6f4:	01b46db3          	or	s11,s0,s11
    e887a6f8:	6406                	ld	s0,64(sp)
    e887a6fa:	904d                	srli	s0,s0,0x33
    e887a6fc:	f422                	sd	s0,40(sp)
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a6fe:	01bd0433          	add	s0,s10,s11
    e887a702:	f022                	sd	s0,32(sp)
    e887a704:	01a43d33          	sltu	s10,s0,s10
    e887a708:	8466                	mv	s0,s9
    e887a70a:	7ca2                	ld	s9,40(sp)
    e887a70c:	01940db3          	add	s11,s0,s9
    e887a710:	01bd0433          	add	s0,s10,s11
    e887a714:	f422                	sd	s0,40(sp)
    e887a716:	7402                	ld	s0,32(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887a718:	02a48d33          	mul	s10,s1,a0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a71c:	c804340b          	extu	s0,s0,50,0
    e887a720:	f822                	sd	s0,48(sp)
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887a722:	02a4b433          	mulhu	s0,s1,a0
  t[3] += ((uint128_t) r4) * s4;
    e887a726:	8dea                	mv	s11,s10
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887a728:	8ca2                	mv	s9,s0
    e887a72a:	6422                	ld	s0,8(sp)
    e887a72c:	0282b433          	mulhu	s0,t0,s0
    e887a730:	e0a2                	sd	s0,64(sp)
  t[3] += ((uint128_t) r4) * s4;
    e887a732:	6422                	ld	s0,8(sp)
    e887a734:	20829d8b          	mula	s11,t0,s0
    e887a738:	8466                	mv	s0,s9
    e887a73a:	6c86                	ld	s9,64(sp)
    e887a73c:	9466                	add	s0,s0,s9
    e887a73e:	01adbd33          	sltu	s10,s11,s10
    e887a742:	9d22                	add	s10,s10,s0
    e887a744:	846e                	mv	s0,s11
    e887a746:	2108940b          	mula	s0,a7,a6
    e887a74a:	8ca2                	mv	s9,s0
    e887a74c:	01b43db3          	sltu	s11,s0,s11
    e887a750:	0308b433          	mulhu	s0,a7,a6
    e887a754:	9d22                	add	s10,s10,s0
    e887a756:	9d6e                	add	s10,s10,s11
    e887a758:	8de6                	mv	s11,s9
    e887a75a:	20b99d8b          	mula	s11,s3,a1
    e887a75e:	019db433          	sltu	s0,s11,s9
    e887a762:	8ca2                	mv	s9,s0
    e887a764:	02b9b433          	mulhu	s0,s3,a1
    e887a768:	9d22                	add	s10,s10,s0
    e887a76a:	038f3433          	mulhu	s0,t5,s8
    e887a76e:	9d66                	add	s10,s10,s9
    e887a770:	8ca2                	mv	s9,s0
    e887a772:	846e                	mv	s0,s11
    e887a774:	218f140b          	mula	s0,t5,s8
    e887a778:	9d66                	add	s10,s10,s9
    e887a77a:	01b43db3          	sltu	s11,s0,s11
    e887a77e:	8c22                	mv	s8,s0
    e887a780:	01ad8433          	add	s0,s11,s10
    e887a784:	8ca2                	mv	s9,s0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a786:	7422                	ld	s0,40(sp)
    e887a788:	00d41d13          	slli	s10,s0,0xd
    e887a78c:	7402                	ld	s0,32(sp)
    e887a78e:	03345d93          	srli	s11,s0,0x33
    e887a792:	7422                	ld	s0,40(sp)
    e887a794:	01bd6db3          	or	s11,s10,s11
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a798:	01bc0d33          	add	s10,s8,s11
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a79c:	904d                	srli	s0,s0,0x33
    e887a79e:	f022                	sd	s0,32(sp)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a7a0:	8466                	mv	s0,s9
    e887a7a2:	7c82                	ld	s9,32(sp)
    e887a7a4:	018d3c33          	sltu	s8,s10,s8
    e887a7a8:	01940db3          	add	s11,s0,s9
    e887a7ac:	01bc0433          	add	s0,s8,s11
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a7b0:	03e48db3          	mul	s11,s1,t5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a7b4:	f022                	sd	s0,32(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a7b6:	6442                	ld	s0,16(sp)
    e887a7b8:	6cc2                	ld	s9,16(sp)
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a7ba:	c80d3c0b          	extu	s8,s10,50,0
    e887a7be:	033d5d13          	srli	s10,s10,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a7c2:	03e4bf33          	mulhu	t5,s1,t5
    e887a7c6:	0282b4b3          	mulhu	s1,t0,s0
    e887a7ca:	846e                	mv	s0,s11
    e887a7cc:	2192940b          	mula	s0,t0,s9
    e887a7d0:	9f26                	add	t5,t5,s1
    e887a7d2:	64a2                	ld	s1,8(sp)
    e887a7d4:	82a2                	mv	t0,s0
    e887a7d6:	01b43db3          	sltu	s11,s0,s11
    e887a7da:	20a9940b          	mula	s0,s3,a0
    e887a7de:	9dfa                	add	s11,s11,t5
    e887a7e0:	02a9bf33          	mulhu	t5,s3,a0
    e887a7e4:	005432b3          	sltu	t0,s0,t0
    e887a7e8:	8522                	mv	a0,s0
    e887a7ea:	6422                	ld	s0,8(sp)
    e887a7ec:	9dfa                	add	s11,s11,t5
    e887a7ee:	92ee                	add	t0,t0,s11
    e887a7f0:	0288bdb3          	mulhu	s11,a7,s0
    e887a7f4:	842a                	mv	s0,a0
    e887a7f6:	2098940b          	mula	s0,a7,s1
    e887a7fa:	92ee                	add	t0,t0,s11
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887a7fc:	44cd                	li	s1,19
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a7fe:	88a2                	mv	a7,s0
    e887a800:	00a43533          	sltu	a0,s0,a0
    e887a804:	2105940b          	mula	s0,a1,a6
    e887a808:	9516                	add	a0,a0,t0
    e887a80a:	0305b2b3          	mulhu	t0,a1,a6
    e887a80e:	011438b3          	sltu	a7,s0,a7
    e887a812:	85a2                	mv	a1,s0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a814:	7402                	ld	s0,32(sp)
    e887a816:	00d41813          	slli	a6,s0,0xd
    e887a81a:	03345d93          	srli	s11,s0,0x33
    e887a81e:	01a86d33          	or	s10,a6,s10
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a822:	9d2e                	add	s10,s10,a1
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887a824:	9516                	add	a0,a0,t0
    e887a826:	9546                	add	a0,a0,a7
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a828:	956e                	add	a0,a0,s11
    e887a82a:	00bd35b3          	sltu	a1,s10,a1
    e887a82e:	95aa                	add	a1,a1,a0
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a830:	6526                	ld	a0,72(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a832:	05b6                	slli	a1,a1,0xd
    e887a834:	033d5d93          	srli	s11,s10,0x33
    e887a838:	01b5edb3          	or	s11,a1,s11
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a83c:	21bb950b          	mula	a0,s7,s11
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a840:	6446                	ld	s0,80(sp)
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a842:	c80d3f0b          	extu	t5,s10,50,0
  r2 +=   c;
    e887a846:	03200d93          	li	s11,50
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a84a:	c805358b          	extu	a1,a0,50,0
    e887a84e:	914d                	srli	a0,a0,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a850:	9522                	add	a0,a0,s0
  r2 +=   c;
    e887a852:	7442                	ld	s0,48(sp)
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a854:	c805380b          	extu	a6,a0,50,0
    e887a858:	914d                	srli	a0,a0,0x33
  r2 +=   c;
    e887a85a:	9522                	add	a0,a0,s0
    d4 = d419 * 2;
    e887a85c:	02600413          	li	s0,38
    d2 = r2 * 2 * 19;
    e887a860:	02850cb3          	mul	s9,a0,s0
    d0 = r0 * 2;
    e887a864:	00159893          	slli	a7,a1,0x1
    d1 = r1 * 2;
    e887a868:	00181993          	slli	s3,a6,0x1
    d4 = d419 * 2;
    e887a86c:	1dfd                	addi	s11,s11,-1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887a86e:	038c8d33          	mul	s10,s9,s8
    d4 = d419 * 2;
    e887a872:	028f02b3          	mul	t0,t5,s0
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887a876:	8bea                	mv	s7,s10
    e887a878:	21029b8b          	mula	s7,t0,a6
    e887a87c:	0302b433          	mulhu	s0,t0,a6
    e887a880:	01abbd33          	sltu	s10,s7,s10
    e887a884:	038cbcb3          	mulhu	s9,s9,s8
    e887a888:	9ca2                	add	s9,s9,s0
    e887a88a:	9cea                	add	s9,s9,s10
    e887a88c:	845e                	mv	s0,s7
    e887a88e:	02b5bd33          	mulhu	s10,a1,a1
    e887a892:	20b5940b          	mula	s0,a1,a1
    e887a896:	9cea                	add	s9,s9,s10
    e887a898:	01743bb3          	sltu	s7,s0,s7
    e887a89c:	85a2                	mv	a1,s0
    e887a89e:	019b8433          	add	s0,s7,s9
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887a8a2:	03e88cb3          	mul	s9,a7,t5
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887a8a6:	e422                	sd	s0,8(sp)
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887a8a8:	03e8bd33          	mulhu	s10,a7,t5
    e887a8ac:	8be6                	mv	s7,s9
    e887a8ae:	033c3433          	mulhu	s0,s8,s3
    e887a8b2:	213c1b8b          	mula	s7,s8,s3
    e887a8b6:	9d22                	add	s10,s10,s0
    e887a8b8:	019bbcb3          	sltu	s9,s7,s9
    e887a8bc:	9cea                	add	s9,s9,s10
    e887a8be:	845e                	mv	s0,s7
    e887a8c0:	02a53d33          	mulhu	s10,a0,a0
    e887a8c4:	20a5140b          	mula	s0,a0,a0
    e887a8c8:	9cea                	add	s9,s9,s10
    e887a8ca:	01743bb3          	sltu	s7,s0,s7
    e887a8ce:	e822                	sd	s0,16(sp)
    e887a8d0:	019b8433          	add	s0,s7,s9
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887a8d4:	03180cb3          	mul	s9,a6,a7
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887a8d8:	f422                	sd	s0,40(sp)
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a8da:	c805b40b          	extu	s0,a1,50,0
    e887a8de:	f022                	sd	s0,32(sp)
    e887a8e0:	91cd                	srli	a1,a1,0x33
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887a8e2:	02a2b433          	mulhu	s0,t0,a0
    e887a8e6:	8d66                	mv	s10,s9
    e887a8e8:	03183bb3          	mulhu	s7,a6,a7
    e887a8ec:	20a29d0b          	mula	s10,t0,a0
    e887a8f0:	9ba2                	add	s7,s7,s0
    e887a8f2:	019d3cb3          	sltu	s9,s10,s9
    e887a8f6:	9cde                	add	s9,s9,s7
    e887a8f8:	029c0bb3          	mul	s7,s8,s1
    e887a8fc:	038bb433          	mulhu	s0,s7,s8
    e887a900:	f822                	sd	s0,48(sp)
    e887a902:	846a                	mv	s0,s10
    e887a904:	218b940b          	mula	s0,s7,s8
    e887a908:	8ba2                	mv	s7,s0
    e887a90a:	01a43d33          	sltu	s10,s0,s10
    e887a90e:	7442                	ld	s0,48(sp)
    e887a910:	9ca2                	add	s9,s9,s0
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a912:	6422                	ld	s0,8(sp)
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887a914:	9d66                	add	s10,s10,s9
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a916:	00d41c93          	slli	s9,s0,0xd
    e887a91a:	00bce5b3          	or	a1,s9,a1
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a91e:	95de                	add	a1,a1,s7
    e887a920:	0175bbb3          	sltu	s7,a1,s7
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887a924:	03345c93          	srli	s9,s0,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a928:	c805b40b          	extu	s0,a1,50,0
    e887a92c:	9cea                	add	s9,s9,s10
    e887a92e:	9cde                	add	s9,s9,s7
    e887a930:	e422                	sd	s0,8(sp)
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887a932:	02a88bb3          	mul	s7,a7,a0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a936:	91cd                	srli	a1,a1,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887a938:	0382b433          	mulhu	s0,t0,s8
    e887a93c:	f822                	sd	s0,48(sp)
    e887a93e:	845e                	mv	s0,s7
    e887a940:	2182940b          	mula	s0,t0,s8
    e887a944:	02a8bd33          	mulhu	s10,a7,a0
    e887a948:	82a2                	mv	t0,s0
    e887a94a:	01743bb3          	sltu	s7,s0,s7
    e887a94e:	7442                	ld	s0,48(sp)
    e887a950:	9d22                	add	s10,s10,s0
    e887a952:	8416                	mv	s0,t0
    e887a954:	2108140b          	mula	s0,a6,a6
    e887a958:	9bea                	add	s7,s7,s10
    e887a95a:	03083d33          	mulhu	s10,a6,a6
    e887a95e:	005432b3          	sltu	t0,s0,t0
    e887a962:	9bea                	add	s7,s7,s10
    e887a964:	9b96                	add	s7,s7,t0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a966:	00dc9293          	slli	t0,s9,0xd
    e887a96a:	00b2e5b3          	or	a1,t0,a1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a96e:	031c02b3          	mul	t0,s8,a7
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a972:	95a2                	add	a1,a1,s0
    e887a974:	0085b833          	sltu	a6,a1,s0
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887a978:	033cdc93          	srli	s9,s9,0x33
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a97c:	9be6                	add	s7,s7,s9
    e887a97e:	985e                	add	a6,a6,s7
    e887a980:	c805bd0b          	extu	s10,a1,50,0
    e887a984:	91cd                	srli	a1,a1,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a986:	8416                	mv	s0,t0
    e887a988:	2135140b          	mula	s0,a0,s3
    e887a98c:	031c3c33          	mulhu	s8,s8,a7
    e887a990:	005432b3          	sltu	t0,s0,t0
    e887a994:	033538b3          	mulhu	a7,a0,s3
    e887a998:	8522                	mv	a0,s0
    d419 = r4 * 19;
    e887a99a:	029f09b3          	mul	s3,t5,s1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a99e:	9c46                	add	s8,s8,a7
    e887a9a0:	9c16                	add	s8,s8,t0
    e887a9a2:	03e9b8b3          	mulhu	a7,s3,t5
    e887a9a6:	21e9940b          	mula	s0,s3,t5
    e887a9aa:	9c46                	add	s8,s8,a7
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887a9ac:	00d81893          	slli	a7,a6,0xd
    e887a9b0:	00b8e5b3          	or	a1,a7,a1
    e887a9b4:	03385813          	srli	a6,a6,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a9b8:	00a43533          	sltu	a0,s0,a0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a9bc:	95a2                	add	a1,a1,s0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887a9be:	9562                	add	a0,a0,s8
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a9c0:	0085bf33          	sltu	t5,a1,s0
    e887a9c4:	9542                	add	a0,a0,a6
    e887a9c6:	957a                	add	a0,a0,t5
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a9c8:	6442                	ld	s0,16(sp)
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a9ca:	00d51813          	slli	a6,a0,0xd
    e887a9ce:	c805bc0b          	extu	s8,a1,50,0
    e887a9d2:	91cd                	srli	a1,a1,0x33
    e887a9d4:	00b865b3          	or	a1,a6,a1
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a9d8:	008582b3          	add	t0,a1,s0
    e887a9dc:	7422                	ld	s0,40(sp)
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887a9de:	914d                	srli	a0,a0,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a9e0:	00b2b5b3          	sltu	a1,t0,a1
    e887a9e4:	9522                	add	a0,a0,s0
    e887a9e6:	95aa                	add	a1,a1,a0
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a9e8:	7502                	ld	a0,32(sp)
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887a9ea:	05b6                	slli	a1,a1,0xd
    e887a9ec:	c802bf0b          	extu	t5,t0,50,0
    e887a9f0:	0332d293          	srli	t0,t0,0x33
    e887a9f4:	0055e2b3          	or	t0,a1,t0
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a9f8:	2054950b          	mula	a0,s1,t0
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887a9fc:	6422                	ld	s0,8(sp)
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887a9fe:	c805358b          	extu	a1,a0,50,0
    e887aa02:	914d                	srli	a0,a0,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887aa04:	9522                	add	a0,a0,s0
    e887aa06:	c805380b          	extu	a6,a0,50,0
    e887aa0a:	914d                	srli	a0,a0,0x33
    r2 +=   c;
    e887aa0c:	956a                	add	a0,a0,s10
  } while(--count);
    e887aa0e:	e40d97e3          	bnez	s11,e887a85c <curve25519_donna+0x26ae>
  t[0]  =  ((uint128_t) r0) * s0;
    e887aa12:	02b688b3          	mul	a7,a3,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887aa16:	7462                	ld	s0,56(sp)
    e887aa18:	030fbbb3          	mulhu	s7,t6,a6
    e887aa1c:	89c6                	mv	s3,a7
  t[0]  =  ((uint128_t) r0) * s0;
    e887aa1e:	02b6b2b3          	mulhu	t0,a3,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887aa22:	210f998b          	mula	s3,t6,a6
    e887aa26:	92de                	add	t0,t0,s7
    e887aa28:	0119b8b3          	sltu	a7,s3,a7
    e887aa2c:	03e43bb3          	mulhu	s7,s0,t5
    e887aa30:	9896                	add	a7,a7,t0
    e887aa32:	82ce                	mv	t0,s3
    e887aa34:	21e4128b          	mula	t0,s0,t5
    e887aa38:	98de                	add	a7,a7,s7
    e887aa3a:	0132b9b3          	sltu	s3,t0,s3
    e887aa3e:	8b96                	mv	s7,t0
    e887aa40:	20a09b8b          	mula	s7,ra,a0
    e887aa44:	99c6                	add	s3,s3,a7
    e887aa46:	02a0b8b3          	mulhu	a7,ra,a0
    e887aa4a:	005bb2b3          	sltu	t0,s7,t0
    e887aa4e:	99c6                	add	s3,s3,a7
    e887aa50:	88de                	mv	a7,s7
    e887aa52:	218b188b          	mula	a7,s6,s8
    e887aa56:	92ce                	add	t0,t0,s3
    e887aa58:	038b3cb3          	mulhu	s9,s6,s8
    e887aa5c:	0178b9b3          	sltu	s3,a7,s7
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887aa60:	c808b40b          	extu	s0,a7,50,0
    e887aa64:	e422                	sd	s0,8(sp)
    e887aa66:	0338d893          	srli	a7,a7,0x33
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887aa6a:	03068bb3          	mul	s7,a3,a6
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887aa6e:	92e6                	add	t0,t0,s9
    e887aa70:	9996                	add	s3,s3,t0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887aa72:	8cde                	mv	s9,s7
    e887aa74:	20be9c8b          	mula	s9,t4,a1
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887aa78:	0306bd33          	mulhu	s10,a3,a6
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887aa7c:	017cbbb3          	sltu	s7,s9,s7
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887aa80:	02bebdb3          	mulhu	s11,t4,a1
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887aa84:	01bd02b3          	add	t0,s10,s11
    e887aa88:	92de                	add	t0,t0,s7
    e887aa8a:	02afbd33          	mulhu	s10,t6,a0
    e887aa8e:	8be6                	mv	s7,s9
    e887aa90:	20af9b8b          	mula	s7,t6,a0
    e887aa94:	92ea                	add	t0,t0,s10
    e887aa96:	019bbcb3          	sltu	s9,s7,s9
    e887aa9a:	9c96                	add	s9,s9,t0
    e887aa9c:	845e                	mv	s0,s7
    e887aa9e:	03eb32b3          	mulhu	t0,s6,t5
    e887aaa2:	21eb140b          	mula	s0,s6,t5
    e887aaa6:	9c96                	add	s9,s9,t0
    e887aaa8:	0380b2b3          	mulhu	t0,ra,s8
    e887aaac:	01743bb3          	sltu	s7,s0,s7
    e887aab0:	8da2                	mv	s11,s0
    e887aab2:	9cde                	add	s9,s9,s7
    e887aab4:	21809d8b          	mula	s11,ra,s8
    e887aab8:	9c96                	add	s9,s9,t0
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887aaba:	00d99293          	slli	t0,s3,0xd
    e887aabe:	0112e8b3          	or	a7,t0,a7
    e887aac2:	0339d993          	srli	s3,s3,0x33
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887aac6:	02a68bb3          	mul	s7,a3,a0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887aaca:	008dbb33          	sltu	s6,s11,s0
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887aace:	98ee                	add	a7,a7,s11
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887aad0:	9b66                	add	s6,s6,s9
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887aad2:	01b8bdb3          	sltu	s11,a7,s11
    e887aad6:	99da                	add	s3,s3,s6
    e887aad8:	99ee                	add	s3,s3,s11
    e887aada:	c808b40b          	extu	s0,a7,50,0
    e887aade:	e822                	sd	s0,16(sp)
    e887aae0:	0338d893          	srli	a7,a7,0x33
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887aae4:	8cde                	mv	s9,s7
    e887aae6:	20b71c8b          	mula	s9,a4,a1
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887aaea:	02a6bd33          	mulhu	s10,a3,a0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887aaee:	017cbbb3          	sltu	s7,s9,s7
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887aaf2:	02b73db3          	mulhu	s11,a4,a1
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887aaf6:	01bd0b33          	add	s6,s10,s11
    e887aafa:	9b5e                	add	s6,s6,s7
    e887aafc:	8be6                	mv	s7,s9
    e887aafe:	210e9b8b          	mula	s7,t4,a6
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887ab02:	030ebd33          	mulhu	s10,t4,a6
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887ab06:	019bbcb3          	sltu	s9,s7,s9
    e887ab0a:	01ab02b3          	add	t0,s6,s10
    e887ab0e:	8b5e                	mv	s6,s7
    e887ab10:	218f9b0b          	mula	s6,t6,s8
    e887ab14:	92e6                	add	t0,t0,s9
    e887ab16:	038fbcb3          	mulhu	s9,t6,s8
    e887ab1a:	845a                	mv	s0,s6
    e887ab1c:	017b3bb3          	sltu	s7,s6,s7
    e887ab20:	92e6                	add	t0,t0,s9
    e887ab22:	21e0940b          	mula	s0,ra,t5
    e887ab26:	9b96                	add	s7,s7,t0
    e887ab28:	03e0b2b3          	mulhu	t0,ra,t5
    e887ab2c:	01643b33          	sltu	s6,s0,s6
    e887ab30:	9b96                	add	s7,s7,t0
    e887ab32:	9bda                	add	s7,s7,s6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887ab34:	03868b33          	mul	s6,a3,s8
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887ab38:	00d99293          	slli	t0,s3,0xd
    e887ab3c:	0339d993          	srli	s3,s3,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ab40:	99de                	add	s3,s3,s7
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887ab42:	0112e8b3          	or	a7,t0,a7
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ab46:	98a2                	add	a7,a7,s0
    e887ab48:	0088b0b3          	sltu	ra,a7,s0
    e887ab4c:	90ce                	add	ra,ra,s3
    e887ab4e:	c808bd8b          	extu	s11,a7,50,0
    e887ab52:	0338d893          	srli	a7,a7,0x33
  t[3] += ((uint128_t) r4) * s4;
    e887ab56:	8bda                	mv	s7,s6
    e887ab58:	20ba1b8b          	mula	s7,s4,a1
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887ab5c:	0386bcb3          	mulhu	s9,a3,s8
  t[3] += ((uint128_t) r4) * s4;
    e887ab60:	016bbb33          	sltu	s6,s7,s6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887ab64:	02ba3d33          	mulhu	s10,s4,a1
  t[3] += ((uint128_t) r4) * s4;
    e887ab68:	01ac89b3          	add	s3,s9,s10
    e887ab6c:	99da                	add	s3,s3,s6
    e887ab6e:	8b5e                	mv	s6,s7
    e887ab70:	21071b0b          	mula	s6,a4,a6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887ab74:	03073cb3          	mulhu	s9,a4,a6
  t[3] += ((uint128_t) r4) * s4;
    e887ab78:	017b3bb3          	sltu	s7,s6,s7
    e887ab7c:	019982b3          	add	t0,s3,s9
    e887ab80:	92de                	add	t0,t0,s7
    e887ab82:	89da                	mv	s3,s6
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887ab84:	02aebbb3          	mulhu	s7,t4,a0
  t[3] += ((uint128_t) r4) * s4;
    e887ab88:	20ae998b          	mula	s3,t4,a0
    e887ab8c:	92de                	add	t0,t0,s7
    e887ab8e:	0169bb33          	sltu	s6,s3,s6
    e887ab92:	9b16                	add	s6,s6,t0
    e887ab94:	03efb2b3          	mulhu	t0,t6,t5
    e887ab98:	844e                	mv	s0,s3
    e887ab9a:	21ef940b          	mula	s0,t6,t5
    e887ab9e:	9b16                	add	s6,s6,t0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887aba0:	00d09293          	slli	t0,ra,0xd
    e887aba4:	0112e8b3          	or	a7,t0,a7
    e887aba8:	0330d093          	srli	ra,ra,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887abac:	03e682b3          	mul	t0,a3,t5
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887abb0:	98a2                	add	a7,a7,s0
    e887abb2:	0088bfb3          	sltu	t6,a7,s0
  t[3] += ((uint128_t) r4) * s4;
    e887abb6:	013439b3          	sltu	s3,s0,s3
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887abba:	6402                	ld	s0,0(sp)
  t[3] += ((uint128_t) r4) * s4;
    e887abbc:	9b4e                	add	s6,s6,s3
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887abbe:	90da                	add	ra,ra,s6
    e887abc0:	90fe                	add	ra,ra,t6
    e887abc2:	c808bf8b          	extu	t6,a7,50,0
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887abc6:	03e6b6b3          	mulhu	a3,a3,t5
    e887abca:	6f02                	ld	t5,0(sp)
    e887abcc:	02b439b3          	mulhu	s3,s0,a1
    e887abd0:	8416                	mv	s0,t0
    e887abd2:	20bf140b          	mula	s0,t5,a1
    e887abd6:	96ce                	add	a3,a3,s3
    e887abd8:	00543f33          	sltu	t5,s0,t0
    e887abdc:	85a2                	mv	a1,s0
    e887abde:	218e940b          	mula	s0,t4,s8
    e887abe2:	96fa                	add	a3,a3,t5
    e887abe4:	038ebf33          	mulhu	t5,t4,s8
    e887abe8:	00b435b3          	sltu	a1,s0,a1
    e887abec:	96fa                	add	a3,a3,t5
    e887abee:	96ae                	add	a3,a3,a1
    e887abf0:	030a3f33          	mulhu	t5,s4,a6
    e887abf4:	85a2                	mv	a1,s0
    e887abf6:	210a158b          	mula	a1,s4,a6
    e887abfa:	96fa                	add	a3,a3,t5
    e887abfc:	0085beb3          	sltu	t4,a1,s0
    e887ac00:	9eb6                	add	t4,t4,a3
    e887ac02:	86ae                	mv	a3,a1
    e887ac04:	20a7168b          	mula	a3,a4,a0
    e887ac08:	02a73833          	mulhu	a6,a4,a0
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887ac0c:	00d09513          	slli	a0,ra,0xd
    e887ac10:	0338d713          	srli	a4,a7,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887ac14:	00b6b5b3          	sltu	a1,a3,a1
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887ac18:	8f49                	or	a4,a4,a0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887ac1a:	9736                	add	a4,a4,a3
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887ac1c:	0330d093          	srli	ra,ra,0x33
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887ac20:	00d736b3          	sltu	a3,a4,a3
    e887ac24:	c807350b          	extu	a0,a4,50,0
    e887ac28:	934d                	srli	a4,a4,0x33
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887ac2a:	9ec2                	add	t4,t4,a6
    e887ac2c:	95f6                	add	a1,a1,t4
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887ac2e:	90ae                	add	ra,ra,a1
    e887ac30:	9686                	add	a3,a3,ra
    e887ac32:	06b6                	slli	a3,a3,0xd
    e887ac34:	8f55                	or	a4,a4,a3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887ac36:	66a2                	ld	a3,8(sp)
  r2 +=   c;
    e887ac38:	4895                	li	a7,5
    d4 = d419 * 2;
    e887ac3a:	02600e93          	li	t4,38
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887ac3e:	20e4968b          	mula	a3,s1,a4
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887ac42:	45cd                	li	a1,19
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887ac44:	0336d713          	srli	a4,a3,0x33
    e887ac48:	c806b08b          	extu	ra,a3,50,0
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887ac4c:	66c2                	ld	a3,16(sp)
    e887ac4e:	9736                	add	a4,a4,a3
    e887ac50:	c807368b          	extu	a3,a4,50,0
    e887ac54:	934d                	srli	a4,a4,0x33
  r2 +=   c;
    e887ac56:	9dba                	add	s11,s11,a4
    d2 = r2 * 2 * 19;
    e887ac58:	03dd8833          	mul	a6,s11,t4
    d0 = r0 * 2;
    e887ac5c:	00109993          	slli	s3,ra,0x1
    d1 = r1 * 2;
    e887ac60:	00169b13          	slli	s6,a3,0x1
    d4 = d419 * 2;
    e887ac64:	18fd                	addi	a7,a7,-1
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887ac66:	03f80733          	mul	a4,a6,t6
    d4 = d419 * 2;
    e887ac6a:	03d50bb3          	mul	s7,a0,t4
    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));
    e887ac6e:	8f3a                	mv	t5,a4
    e887ac70:	20db9f0b          	mula	t5,s7,a3
    e887ac74:	02dbb2b3          	mulhu	t0,s7,a3
    e887ac78:	00ef3733          	sltu	a4,t5,a4
    e887ac7c:	03f83833          	mulhu	a6,a6,t6
    e887ac80:	9816                	add	a6,a6,t0
    e887ac82:	983a                	add	a6,a6,a4
    e887ac84:	0210b2b3          	mulhu	t0,ra,ra
    e887ac88:	877a                	mv	a4,t5
    e887ac8a:	2010970b          	mula	a4,ra,ra
    e887ac8e:	9816                	add	a6,a6,t0
    e887ac90:	01e73f33          	sltu	t5,a4,t5
    e887ac94:	9f42                	add	t5,t5,a6
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887ac96:	02a98833          	mul	a6,s3,a0
    e887ac9a:	036fb4b3          	mulhu	s1,t6,s6
    e887ac9e:	80c2                	mv	ra,a6
    e887aca0:	02a9b2b3          	mulhu	t0,s3,a0
    e887aca4:	216f908b          	mula	ra,t6,s6
    e887aca8:	92a6                	add	t0,t0,s1
    e887acaa:	0100b833          	sltu	a6,ra,a6
    e887acae:	9816                	add	a6,a6,t0
    e887acb0:	03bdb2b3          	mulhu	t0,s11,s11
    e887acb4:	8486                	mv	s1,ra
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887acb6:	03368a33          	mul	s4,a3,s3
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887acba:	9816                	add	a6,a6,t0
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887acbc:	0336bc33          	mulhu	s8,a3,s3
    e887acc0:	8cd2                	mv	s9,s4
    e887acc2:	03bbb2b3          	mulhu	t0,s7,s11
    e887acc6:	21bb9c8b          	mula	s9,s7,s11
    e887acca:	9c16                	add	s8,s8,t0
    e887accc:	02bf82b3          	mul	t0,t6,a1
    e887acd0:	8466                	mv	s0,s9
    e887acd2:	014cba33          	sltu	s4,s9,s4
    e887acd6:	9a62                	add	s4,s4,s8
    e887acd8:	03f2bd33          	mulhu	s10,t0,t6
    e887acdc:	21f2940b          	mula	s0,t0,t6
    e887ace0:	9a6a                	add	s4,s4,s10
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887ace2:	21bd948b          	mula	s1,s11,s11
    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));
    e887ace6:	01943c33          	sltu	s8,s0,s9
    e887acea:	9c52                	add	s8,s8,s4
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887acec:	00df1a13          	slli	s4,t5,0xd
    e887acf0:	033f5f13          	srli	t5,t5,0x33
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887acf4:	9c7a                	add	s8,s8,t5
    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));
    e887acf6:	0014b0b3          	sltu	ra,s1,ra
    e887acfa:	90c2                	add	ra,ra,a6
                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887acfc:	c807380b          	extu	a6,a4,50,0
    e887ad00:	934d                	srli	a4,a4,0x33
    e887ad02:	00ea6733          	or	a4,s4,a4
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887ad06:	03b98a33          	mul	s4,s3,s11
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887ad0a:	9722                	add	a4,a4,s0
    e887ad0c:	008732b3          	sltu	t0,a4,s0
    e887ad10:	92e2                	add	t0,t0,s8
    e887ad12:	c8073f0b          	extu	t5,a4,50,0
    e887ad16:	934d                	srli	a4,a4,0x33
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887ad18:	8452                	mv	s0,s4
    e887ad1a:	21fb940b          	mula	s0,s7,t6
    e887ad1e:	03b9bc33          	mulhu	s8,s3,s11
    e887ad22:	01443a33          	sltu	s4,s0,s4
    e887ad26:	03fbbcb3          	mulhu	s9,s7,t6
    e887ad2a:	8ba2                	mv	s7,s0
    e887ad2c:	9c66                	add	s8,s8,s9
    e887ad2e:	9c52                	add	s8,s8,s4
    e887ad30:	02d6ba33          	mulhu	s4,a3,a3
    e887ad34:	20d6940b          	mula	s0,a3,a3
    e887ad38:	9c52                	add	s8,s8,s4
    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887ad3a:	00d29a13          	slli	s4,t0,0xd
    e887ad3e:	00ea6733          	or	a4,s4,a4
    e887ad42:	0332d293          	srli	t0,t0,0x33
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ad46:	9722                	add	a4,a4,s0
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887ad48:	01743bb3          	sltu	s7,s0,s7
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ad4c:	008736b3          	sltu	a3,a4,s0
    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));
    e887ad50:	9be2                	add	s7,s7,s8
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ad52:	92de                	add	t0,t0,s7
    e887ad54:	00568a33          	add	s4,a3,t0
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887ad58:	033f86b3          	mul	a3,t6,s3
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ad5c:	c807328b          	extu	t0,a4,50,0
    e887ad60:	934d                	srli	a4,a4,0x33
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887ad62:	033fbfb3          	mulhu	t6,t6,s3
    e887ad66:	89b6                	mv	s3,a3
    e887ad68:	216d998b          	mula	s3,s11,s6
    e887ad6c:	036dbbb3          	mulhu	s7,s11,s6
    e887ad70:	00d9b6b3          	sltu	a3,s3,a3
    d419 = r4 * 19;
    e887ad74:	02b50b33          	mul	s6,a0,a1
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887ad78:	9fde                	add	t6,t6,s7
    e887ad7a:	9fb6                	add	t6,t6,a3
    e887ad7c:	86ce                	mv	a3,s3
    e887ad7e:	20ab168b          	mula	a3,s6,a0
    e887ad82:	02ab3bb3          	mulhu	s7,s6,a0
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ad86:	00da1513          	slli	a0,s4,0xd
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887ad8a:	0136b9b3          	sltu	s3,a3,s3
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ad8e:	8f49                	or	a4,a4,a0
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887ad90:	9736                	add	a4,a4,a3
    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887ad92:	033a5a13          	srli	s4,s4,0x33
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887ad96:	00d736b3          	sltu	a3,a4,a3
    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));
    e887ad9a:	9fde                	add	t6,t6,s7
    e887ad9c:	99fe                	add	s3,s3,t6
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887ad9e:	9a4e                	add	s4,s4,s3
    e887ada0:	96d2                	add	a3,a3,s4
    e887ada2:	00d69513          	slli	a0,a3,0xd
    e887ada6:	c8073f8b          	extu	t6,a4,50,0
    e887adaa:	934d                	srli	a4,a4,0x33
    e887adac:	8f49                	or	a4,a4,a0
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887adae:	94ba                	add	s1,s1,a4
    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887adb0:	92cd                	srli	a3,a3,0x33
    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887adb2:	9686                	add	a3,a3,ra
    e887adb4:	00e4b733          	sltu	a4,s1,a4
    e887adb8:	9736                	add	a4,a4,a3
    e887adba:	c804b50b          	extu	a0,s1,50,0
    e887adbe:	0736                	slli	a4,a4,0xd
    e887adc0:	90cd                	srli	s1,s1,0x33
    e887adc2:	8cd9                	or	s1,s1,a4
    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887adc4:	2095980b          	mula	a6,a1,s1
    e887adc8:	c808308b          	extu	ra,a6,50,0
    e887adcc:	03385813          	srli	a6,a6,0x33
    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887add0:	9f42                	add	t5,t5,a6
    e887add2:	033f5d93          	srli	s11,t5,0x33
    e887add6:	c80f368b          	extu	a3,t5,50,0
    r2 +=   c;
    e887adda:	9d96                	add	s11,s11,t0
  } while(--count);
    e887addc:	e6089ee3          	bnez	a7,e887ac58 <curve25519_donna+0x2aaa>
  t[0]  =  ((uint128_t) r0) * s0;
    e887ade0:	02130733          	mul	a4,t1,ra
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887ade4:	02d938b3          	mulhu	a7,s2,a3
    e887ade8:	883a                	mv	a6,a4
  t[0]  =  ((uint128_t) r0) * s0;
    e887adea:	02133f33          	mulhu	t5,t1,ra
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887adee:	20d9180b          	mula	a6,s2,a3
    e887adf2:	9f46                	add	t5,t5,a7
  r1 *= 19;
    e887adf4:	02be08b3          	mul	a7,t3,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887adf8:	00e83733          	sltu	a4,a6,a4
    e887adfc:	9f3a                	add	t5,t5,a4
    e887adfe:	8742                	mv	a4,a6
    e887ae00:	20a8970b          	mula	a4,a7,a0
    e887ae04:	02a8beb3          	mulhu	t4,a7,a0
    e887ae08:	01073833          	sltu	a6,a4,a6
    e887ae0c:	9f76                	add	t5,t5,t4
    e887ae0e:	8eba                	mv	t4,a4
    e887ae10:	21b61e8b          	mula	t4,a2,s11
    e887ae14:	987a                	add	a6,a6,t5
    e887ae16:	03b63f33          	mulhu	t5,a2,s11
    e887ae1a:	00eeb733          	sltu	a4,t4,a4
  r2 *= 19;
    e887ae1e:	02b784b3          	mul	s1,a5,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887ae22:	987a                	add	a6,a6,t5
    e887ae24:	983a                	add	a6,a6,a4
    e887ae26:	8776                	mv	a4,t4
    e887ae28:	029fbf33          	mulhu	t5,t6,s1
    e887ae2c:	209f970b          	mula	a4,t6,s1
    e887ae30:	987a                	add	a6,a6,t5
    e887ae32:	01d73eb3          	sltu	t4,a4,t4
    e887ae36:	010e8f33          	add	t5,t4,a6
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887ae3a:	02d30833          	mul	a6,t1,a3
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887ae3e:	c807388b          	extu	a7,a4,50,0
    e887ae42:	934d                	srli	a4,a4,0x33
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887ae44:	8ec2                	mv	t4,a6
    e887ae46:	201e1e8b          	mula	t4,t3,ra
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887ae4a:	021e39b3          	mulhu	s3,t3,ra
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887ae4e:	010eb833          	sltu	a6,t4,a6
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887ae52:	02d332b3          	mulhu	t0,t1,a3
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887ae56:	92ce                	add	t0,t0,s3
    e887ae58:	92c2                	add	t0,t0,a6
    e887ae5a:	03b939b3          	mulhu	s3,s2,s11
    e887ae5e:	8876                	mv	a6,t4
    e887ae60:	21b9180b          	mula	a6,s2,s11
    e887ae64:	92ce                	add	t0,t0,s3
    e887ae66:	01d83eb3          	sltu	t4,a6,t4
    e887ae6a:	029539b3          	mulhu	s3,a0,s1
    e887ae6e:	9e96                	add	t4,t4,t0
    e887ae70:	82c2                	mv	t0,a6
    e887ae72:	2095128b          	mula	t0,a0,s1
    e887ae76:	9ece                	add	t4,t4,s3
    e887ae78:	0102b833          	sltu	a6,t0,a6
    e887ae7c:	9876                	add	a6,a6,t4
    e887ae7e:	8496                	mv	s1,t0
    e887ae80:	03f63eb3          	mulhu	t4,a2,t6
    e887ae84:	21f6148b          	mula	s1,a2,t6
    e887ae88:	9876                	add	a6,a6,t4
    e887ae8a:	0054b2b3          	sltu	t0,s1,t0
    e887ae8e:	92c2                	add	t0,t0,a6
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887ae90:	00df1813          	slli	a6,t5,0xd
    e887ae94:	00e86733          	or	a4,a6,a4
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887ae98:	03b30833          	mul	a6,t1,s11
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887ae9c:	033f5f13          	srli	t5,t5,0x33
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887aea0:	9f16                	add	t5,t5,t0
    e887aea2:	9726                	add	a4,a4,s1
    e887aea4:	009734b3          	sltu	s1,a4,s1
    e887aea8:	01e48eb3          	add	t4,s1,t5
    e887aeac:	c8073f0b          	extu	t5,a4,50,0
    e887aeb0:	934d                	srli	a4,a4,0x33
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887aeb2:	82c2                	mv	t0,a6
    e887aeb4:	2017928b          	mula	t0,a5,ra
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887aeb8:	03b339b3          	mulhu	s3,t1,s11
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887aebc:	0102b4b3          	sltu	s1,t0,a6
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887aec0:	0217ba33          	mulhu	s4,a5,ra
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887aec4:	01498833          	add	a6,s3,s4
    e887aec8:	94c2                	add	s1,s1,a6
    e887aeca:	8816                	mv	a6,t0
    e887aecc:	20de180b          	mula	a6,t3,a3
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887aed0:	02de39b3          	mulhu	s3,t3,a3
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887aed4:	005832b3          	sltu	t0,a6,t0
    e887aed8:	94ce                	add	s1,s1,s3
    e887aeda:	9496                	add	s1,s1,t0
    e887aedc:	03f939b3          	mulhu	s3,s2,t6
    e887aee0:	82c2                	mv	t0,a6
    e887aee2:	21f9128b          	mula	t0,s2,t6
    e887aee6:	94ce                	add	s1,s1,s3
    e887aee8:	0102b833          	sltu	a6,t0,a6
    e887aeec:	9826                	add	a6,a6,s1
    e887aeee:	8416                	mv	s0,t0
    e887aef0:	02a634b3          	mulhu	s1,a2,a0
    e887aef4:	20a6140b          	mula	s0,a2,a0
    e887aef8:	9826                	add	a6,a6,s1
    e887aefa:	005432b3          	sltu	t0,s0,t0
    e887aefe:	92c2                	add	t0,t0,a6
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887af00:	00de9813          	slli	a6,t4,0xd
    e887af04:	00e86733          	or	a4,a6,a4
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887af08:	9722                	add	a4,a4,s0
    e887af0a:	00873633          	sltu	a2,a4,s0
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887af0e:	033ede93          	srli	t4,t4,0x33
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887af12:	9e96                	add	t4,t4,t0
    e887af14:	01d60833          	add	a6,a2,t4
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887af18:	03f30633          	mul	a2,t1,t6
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887af1c:	c8073e8b          	extu	t4,a4,50,0
    e887af20:	934d                	srli	a4,a4,0x33
  t[3] += ((uint128_t) r4) * s4;
    e887af22:	82b2                	mv	t0,a2
    e887af24:	2013928b          	mula	t0,t2,ra
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887af28:	03f339b3          	mulhu	s3,t1,t6
  t[3] += ((uint128_t) r4) * s4;
    e887af2c:	00c2b4b3          	sltu	s1,t0,a2
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887af30:	0213ba33          	mulhu	s4,t2,ra
  t[3] += ((uint128_t) r4) * s4;
    e887af34:	01498633          	add	a2,s3,s4
    e887af38:	94b2                	add	s1,s1,a2
    e887af3a:	8616                	mv	a2,t0
    e887af3c:	20d7960b          	mula	a2,a5,a3
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887af40:	02d7b9b3          	mulhu	s3,a5,a3
  t[3] += ((uint128_t) r4) * s4;
    e887af44:	005632b3          	sltu	t0,a2,t0
    e887af48:	94ce                	add	s1,s1,s3
    e887af4a:	9496                	add	s1,s1,t0
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887af4c:	03be39b3          	mulhu	s3,t3,s11
  t[3] += ((uint128_t) r4) * s4;
    e887af50:	82b2                	mv	t0,a2
    e887af52:	21be128b          	mula	t0,t3,s11
    e887af56:	94ce                	add	s1,s1,s3
    e887af58:	00c2b633          	sltu	a2,t0,a2
    e887af5c:	9626                	add	a2,a2,s1
    e887af5e:	8496                	mv	s1,t0
    e887af60:	20a9148b          	mula	s1,s2,a0
    e887af64:	02a939b3          	mulhu	s3,s2,a0
    e887af68:	0054b2b3          	sltu	t0,s1,t0
    e887af6c:	964e                	add	a2,a2,s3
    e887af6e:	92b2                	add	t0,t0,a2
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887af70:	00d81613          	slli	a2,a6,0xd
    e887af74:	03385813          	srli	a6,a6,0x33
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887af78:	9816                	add	a6,a6,t0
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887af7a:	02a302b3          	mul	t0,t1,a0
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887af7e:	8f51                	or	a4,a4,a2
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887af80:	9726                	add	a4,a4,s1
    e887af82:	009734b3          	sltu	s1,a4,s1
    e887af86:	01048633          	add	a2,s1,a6
    e887af8a:	c807380b          	extu	a6,a4,50,0
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887af8e:	02a33333          	mulhu	t1,t1,a0
    e887af92:	8516                	mv	a0,t0
    e887af94:	201a950b          	mula	a0,s5,ra
    e887af98:	021ab4b3          	mulhu	s1,s5,ra
    e887af9c:	005532b3          	sltu	t0,a0,t0
    e887afa0:	842a                	mv	s0,a0
    e887afa2:	21fe140b          	mula	s0,t3,t6
    e887afa6:	9326                	add	t1,t1,s1
    e887afa8:	9316                	add	t1,t1,t0
    e887afaa:	03fe32b3          	mulhu	t0,t3,t6
    e887afae:	00a43533          	sltu	a0,s0,a0
    e887afb2:	9316                	add	t1,t1,t0
    e887afb4:	932a                	add	t1,t1,a0
    e887afb6:	02d3bfb3          	mulhu	t6,t2,a3
    e887afba:	8522                	mv	a0,s0
    e887afbc:	20d3950b          	mula	a0,t2,a3
    e887afc0:	01f306b3          	add	a3,t1,t6
    e887afc4:	00853e33          	sltu	t3,a0,s0
    e887afc8:	03b7b333          	mulhu	t1,a5,s11
    e887afcc:	9e36                	add	t3,t3,a3
    e887afce:	86aa                	mv	a3,a0
    e887afd0:	21b7968b          	mula	a3,a5,s11
    e887afd4:	9e1a                	add	t3,t3,t1
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887afd6:	03375793          	srli	a5,a4,0x33
    e887afda:	00d61313          	slli	t1,a2,0xd
    e887afde:	00f367b3          	or	a5,t1,a5
    e887afe2:	924d                	srli	a2,a2,0x33
  s4 = in2[4];
    e887afe4:	730e                	ld	t1,224(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887afe6:	00a6b533          	sltu	a0,a3,a0
    e887afea:	9572                	add	a0,a0,t3
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887afec:	97b6                	add	a5,a5,a3
    e887afee:	962a                	add	a2,a2,a0
    e887aff0:	00d7b6b3          	sltu	a3,a5,a3
    e887aff4:	96b2                	add	a3,a3,a2
    e887aff6:	c807b08b          	extu	ra,a5,50,0
    e887affa:	06b6                	slli	a3,a3,0xd
    e887affc:	93cd                	srli	a5,a5,0x33
    e887affe:	8fd5                	or	a5,a5,a3
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887b000:	20f5988b          	mula	a7,a1,a5
  s2 = in2[2];
    e887b004:	654e                	ld	a0,208(sp)
  s0 = in2[0];
    e887b006:	660e                	ld	a2,192(sp)
  r4 *= 19;
    e887b008:	02b08933          	mul	s2,ra,a1
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887b00c:	0338d793          	srli	a5,a7,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887b010:	97fa                	add	a5,a5,t5
    e887b012:	c807b48b          	extu	s1,a5,50,0
    e887b016:	93cd                	srli	a5,a5,0x33
  r2 +=   c;
    e887b018:	97f6                	add	a5,a5,t4
  s1 = in2[1];
    e887b01a:	6eae                	ld	t4,200(sp)
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887b01c:	c808be0b          	extu	t3,a7,50,0
  s3 = in2[3];
    e887b020:	68ee                	ld	a7,216(sp)
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887b022:	032e8733          	mul	a4,t4,s2
  r3 *= 19;
    e887b026:	02b803b3          	mul	t2,a6,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887b02a:	86ba                	mv	a3,a4
    e887b02c:	2075168b          	mula	a3,a0,t2
    e887b030:	02753fb3          	mulhu	t6,a0,t2
    e887b034:	00e6b733          	sltu	a4,a3,a4
    e887b038:	032ebf33          	mulhu	t5,t4,s2
    e887b03c:	9f7e                	add	t5,t5,t6
    e887b03e:	9f3a                	add	t5,t5,a4
  t[0]  =  ((uint128_t) r0) * s0;
    e887b040:	02ce3fb3          	mulhu	t6,t3,a2
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887b044:	8736                	mv	a4,a3
    e887b046:	20ce170b          	mula	a4,t3,a2
    e887b04a:	9f7e                	add	t5,t5,t6
    e887b04c:	00d736b3          	sltu	a3,a4,a3
    e887b050:	96fa                	add	a3,a3,t5
  r1 *= 19;
    e887b052:	02b48f33          	mul	t5,s1,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887b056:	89ba                	mv	s3,a4
  r2 *= 19;
    e887b058:	02b782b3          	mul	t0,a5,a1
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887b05c:	206f198b          	mula	s3,t5,t1
    e887b060:	026f3fb3          	mulhu	t6,t5,t1
    e887b064:	00e9b733          	sltu	a4,s3,a4
    e887b068:	0258bf33          	mulhu	t5,a7,t0
    e887b06c:	96fe                	add	a3,a3,t6
    e887b06e:	9736                	add	a4,a4,a3
    e887b070:	86ce                	mv	a3,s3
    e887b072:	977a                	add	a4,a4,t5
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887b074:	03250f33          	mul	t5,a0,s2
    e887b078:	8ffa                	mv	t6,t5
    e887b07a:	20789f8b          	mula	t6,a7,t2
    e887b07e:	0278bab3          	mulhu	s5,a7,t2
    e887b082:	01efbf33          	sltu	t5,t6,t5
    e887b086:	03253a33          	mulhu	s4,a0,s2
    e887b08a:	9a56                	add	s4,s4,s5
    e887b08c:	9a7a                	add	s4,s4,t5
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887b08e:	03de3ab3          	mulhu	s5,t3,t4
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887b092:	8f7e                	mv	t5,t6
    e887b094:	21de1f0b          	mula	t5,t3,t4
    e887b098:	9a56                	add	s4,s4,s5
    e887b09a:	01ff3fb3          	sltu	t6,t5,t6
    e887b09e:	9fd2                	add	t6,t6,s4
    e887b0a0:	8afa                	mv	s5,t5
  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;
    e887b0a2:	02963a33          	mulhu	s4,a2,s1
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887b0a6:	20961a8b          	mula	s5,a2,s1
    e887b0aa:	9fd2                	add	t6,t6,s4
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887b0ac:	2058968b          	mula	a3,a7,t0
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887b0b0:	01eabf33          	sltu	t5,s5,t5
    e887b0b4:	8a56                	mv	s4,s5
    e887b0b6:	9f7e                	add	t5,t5,t6
    e887b0b8:	20531a0b          	mula	s4,t1,t0
  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;
    e887b0bc:	0136b9b3          	sltu	s3,a3,s3
    e887b0c0:	99ba                	add	s3,s3,a4
                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);
    e887b0c2:	09b6                	slli	s3,s3,0xd
    e887b0c4:	c806b70b          	extu	a4,a3,50,0
    e887b0c8:	92cd                	srli	a3,a3,0x33
    e887b0ca:	00d9e6b3          	or	a3,s3,a3
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887b0ce:	02533fb3          	mulhu	t6,t1,t0
    e887b0d2:	015a3ab3          	sltu	s5,s4,s5
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887b0d6:	96d2                	add	a3,a3,s4
    e887b0d8:	0146ba33          	sltu	s4,a3,s4
    e887b0dc:	c806b28b          	extu	t0,a3,50,0
    e887b0e0:	92cd                	srli	a3,a3,0x33
  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;
    e887b0e2:	9f7e                	add	t5,t5,t6
    e887b0e4:	9f56                	add	t5,t5,s5
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887b0e6:	9a7a                	add	s4,s4,t5
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887b0e8:	03288f33          	mul	t5,a7,s2
  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);
    e887b0ec:	0a36                	slli	s4,s4,0xd
    e887b0ee:	00da66b3          	or	a3,s4,a3
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887b0f2:	8ffa                	mv	t6,t5
    e887b0f4:	20731f8b          	mula	t6,t1,t2
    e887b0f8:	0328b9b3          	mulhu	s3,a7,s2
    e887b0fc:	01efbf33          	sltu	t5,t6,t5
    e887b100:	02733ab3          	mulhu	s5,t1,t2
    e887b104:	015983b3          	add	t2,s3,s5
    e887b108:	93fa                	add	t2,t2,t5
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887b10a:	02ae39b3          	mulhu	s3,t3,a0
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887b10e:	8f7e                	mv	t5,t6
    e887b110:	20ae1f0b          	mula	t5,t3,a0
    e887b114:	93ce                	add	t2,t2,s3
    e887b116:	01ff3fb3          	sltu	t6,t5,t6
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887b11a:	029eb9b3          	mulhu	s3,t4,s1
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887b11e:	9f9e                	add	t6,t6,t2
    e887b120:	83fa                	mv	t2,t5
    e887b122:	209e938b          	mula	t2,t4,s1
    e887b126:	9fce                	add	t6,t6,s3
    e887b128:	01e3bf33          	sltu	t5,t2,t5
    e887b12c:	899e                	mv	s3,t2
    e887b12e:	20f6198b          	mula	s3,a2,a5
    e887b132:	9f7e                	add	t5,t5,t6
  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;
    e887b134:	02f63fb3          	mulhu	t6,a2,a5
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887b138:	0079b3b3          	sltu	t2,s3,t2
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887b13c:	96ce                	add	a3,a3,s3
    e887b13e:	0136b9b3          	sltu	s3,a3,s3
  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;
    e887b142:	9f7e                	add	t5,t5,t6
    e887b144:	9f1e                	add	t5,t5,t2
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887b146:	99fa                	add	s3,s3,t5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887b148:	03060f33          	mul	t5,a2,a6
  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);
    e887b14c:	c806bf8b          	extu	t6,a3,50,0
    e887b150:	09b6                	slli	s3,s3,0xd
    e887b152:	92cd                	srli	a3,a3,0x33
    e887b154:	00d9e6b3          	or	a3,s3,a3
  t[3] += ((uint128_t) r4) * s4;
    e887b158:	83fa                	mv	t2,t5
    e887b15a:	2123138b          	mula	t2,t1,s2
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887b15e:	03063a33          	mulhu	s4,a2,a6
  t[3] += ((uint128_t) r4) * s4;
    e887b162:	01e3bf33          	sltu	t5,t2,t5
    e887b166:	03233ab3          	mulhu	s5,t1,s2
    e887b16a:	015a0933          	add	s2,s4,s5
    e887b16e:	997a                	add	s2,s2,t5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887b170:	031e3a33          	mulhu	s4,t3,a7
  t[3] += ((uint128_t) r4) * s4;
    e887b174:	8f1e                	mv	t5,t2
    e887b176:	211e1f0b          	mula	t5,t3,a7
    e887b17a:	9952                	add	s2,s2,s4
    e887b17c:	007f33b3          	sltu	t2,t5,t2
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887b180:	02a4ba33          	mulhu	s4,s1,a0
  t[3] += ((uint128_t) r4) * s4;
    e887b184:	93ca                	add	t2,t2,s2
    e887b186:	897a                	mv	s2,t5
    e887b188:	20a4990b          	mula	s2,s1,a0
    e887b18c:	93d2                	add	t2,t2,s4
    e887b18e:	01e93f33          	sltu	t5,s2,t5
    e887b192:	9f1e                	add	t5,t5,t2
    e887b194:	83ca                	mv	t2,s2
    e887b196:	20fe938b          	mula	t2,t4,a5
  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;
    e887b19a:	02feba33          	mulhu	s4,t4,a5
  t[3] += ((uint128_t) r4) * s4;
    e887b19e:	0123b933          	sltu	s2,t2,s2
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887b1a2:	969e                	add	a3,a3,t2
    e887b1a4:	0076b3b3          	sltu	t2,a3,t2
  t[3] += ((uint128_t) r4) * s4;
    e887b1a8:	9f52                	add	t5,t5,s4
    e887b1aa:	9f4a                	add	t5,t5,s2
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887b1ac:	02160933          	mul	s2,a2,ra
  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);
    e887b1b0:	93fa                	add	t2,t2,t5
    e887b1b2:	03b6                	slli	t2,t2,0xd
    e887b1b4:	c806bf0b          	extu	t5,a3,50,0
    e887b1b8:	92cd                	srli	a3,a3,0x33
    e887b1ba:	00d3e6b3          	or	a3,t2,a3
  output[3] = r3;
    e887b1be:	e27a                	sd	t5,256(sp)
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887b1c0:	844a                	mv	s0,s2
    e887b1c2:	210e940b          	mula	s0,t4,a6
    e887b1c6:	02163633          	mulhu	a2,a2,ra
    e887b1ca:	01243933          	sltu	s2,s0,s2
    e887b1ce:	030eb0b3          	mulhu	ra,t4,a6
    e887b1d2:	8822                	mv	a6,s0
    e887b1d4:	9606                	add	a2,a2,ra
    e887b1d6:	964a                	add	a2,a2,s2
    e887b1d8:	026e3933          	mulhu	s2,t3,t1
    e887b1dc:	206e180b          	mula	a6,t3,t1
    e887b1e0:	964a                	add	a2,a2,s2
    e887b1e2:	00883eb3          	sltu	t4,a6,s0
    e887b1e6:	8442                	mv	s0,a6
    e887b1e8:	2114940b          	mula	s0,s1,a7
    e887b1ec:	9eb2                	add	t4,t4,a2
    e887b1ee:	0314b633          	mulhu	a2,s1,a7
    e887b1f2:	01043833          	sltu	a6,s0,a6
    e887b1f6:	9eb2                	add	t4,t4,a2
    e887b1f8:	8622                	mv	a2,s0
    e887b1fa:	20f5160b          	mula	a2,a0,a5
    e887b1fe:	9876                	add	a6,a6,t4
    e887b200:	02f53333          	mulhu	t1,a0,a5
    e887b204:	008638b3          	sltu	a7,a2,s0
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887b208:	96b2                	add	a3,a3,a2
    e887b20a:	00c6b633          	sltu	a2,a3,a2
  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;
    e887b20e:	981a                	add	a6,a6,t1
    e887b210:	9846                	add	a6,a6,a7
  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);
    e887b212:	9642                	add	a2,a2,a6
    e887b214:	0636                	slli	a2,a2,0xd
    e887b216:	c806b80b          	extu	a6,a3,50,0
    e887b21a:	92cd                	srli	a3,a3,0x33
    e887b21c:	8ed1                	or	a3,a3,a2
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887b21e:	20d5970b          	mula	a4,a1,a3
  output[4] = r4;
    e887b222:	e642                	sd	a6,264(sp)
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887b224:	03375793          	srli	a5,a4,0x33
  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;
    e887b228:	9796                	add	a5,a5,t0
    e887b22a:	c807b60b          	extu	a2,a5,50,0
    e887b22e:	93cd                	srli	a5,a5,0x33
  r2 +=   c;
    e887b230:	97fe                	add	a5,a5,t6
  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;
    e887b232:	c8073e0b          	extu	t3,a4,50,0
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b236:	0337d713          	srli	a4,a5,0x33
    e887b23a:	977a                	add	a4,a4,t5
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b23c:	03375693          	srli	a3,a4,0x33
    e887b240:	9836                	add	a6,a6,a3
    e887b242:	00d836b3          	sltu	a3,a6,a3
  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
    e887b246:	06b6                	slli	a3,a3,0xd
    e887b248:	03385513          	srli	a0,a6,0x33
    e887b24c:	8d55                	or	a0,a0,a3
    e887b24e:	02a58333          	mul	t1,a1,a0
  output[0] = r0;
    e887b252:	f5f2                	sd	t3,232(sp)
  output[2] = r2;
    e887b254:	fdbe                	sd	a5,248(sp)
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b256:	c807b78b          	extu	a5,a5,50,0
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b25a:	c807370b          	extu	a4,a4,50,0
  output[1] = r1;
    e887b25e:	f9b2                	sd	a2,240(sp)
  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
    e887b260:	c808380b          	extu	a6,a6,50,0
    e887b264:	02a5b6b3          	mulhu	a3,a1,a0
    e887b268:	9e1a                	add	t3,t3,t1
    e887b26a:	006e3533          	sltu	a0,t3,t1
    e887b26e:	9536                	add	a0,a0,a3
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b270:	00d51893          	slli	a7,a0,0xd
    e887b274:	033e5693          	srli	a3,t3,0x33
    e887b278:	00d8e6b3          	or	a3,a7,a3
    e887b27c:	00c688b3          	add	a7,a3,a2
    e887b280:	914d                	srli	a0,a0,0x33
    e887b282:	00d8b6b3          	sltu	a3,a7,a3
    e887b286:	96aa                	add	a3,a3,a0
  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
    e887b288:	06b6                	slli	a3,a3,0xd
    e887b28a:	0338d513          	srli	a0,a7,0x33
    e887b28e:	8d55                	or	a0,a0,a3
    e887b290:	953e                	add	a0,a0,a5
    e887b292:	00f537b3          	sltu	a5,a0,a5
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b296:	07b6                	slli	a5,a5,0xd
    e887b298:	03355693          	srli	a3,a0,0x33
    e887b29c:	8edd                	or	a3,a3,a5
    e887b29e:	96ba                	add	a3,a3,a4
    e887b2a0:	00e6b733          	sltu	a4,a3,a4
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b2a4:	0736                	slli	a4,a4,0xd
    e887b2a6:	0336d613          	srli	a2,a3,0x33
    e887b2aa:	8e59                	or	a2,a2,a4
    e887b2ac:	00c80333          	add	t1,a6,a2
    e887b2b0:	01033833          	sltu	a6,t1,a6
  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
    e887b2b4:	0836                	slli	a6,a6,0xd
    e887b2b6:	03335793          	srli	a5,t1,0x33
    e887b2ba:	00f867b3          	or	a5,a6,a5
    e887b2be:	02f58633          	mul	a2,a1,a5
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b2c2:	c80e370b          	extu	a4,t3,50,0
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b2c6:	c805350b          	extu	a0,a0,50,0
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b2ca:	c806b68b          	extu	a3,a3,50,0
  t[0] += 19;
    e887b2ce:	4e4d                	li	t3,19
  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
    e887b2d0:	02f5b7b3          	mulhu	a5,a1,a5
  t[0] += 19;
    e887b2d4:	01370593          	addi	a1,a4,19 # ffffffffbd3af013 <__DRAM0_INF_BASE+0xfffffffebd3bf013>
    e887b2d8:	00e5b733          	sltu	a4,a1,a4
    e887b2dc:	95b2                	add	a1,a1,a2
    e887b2de:	00c5b633          	sltu	a2,a1,a2
    e887b2e2:	97ba                	add	a5,a5,a4
    e887b2e4:	97b2                	add	a5,a5,a2
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b2e6:	00d79813          	slli	a6,a5,0xd
    e887b2ea:	0335d713          	srli	a4,a1,0x33
  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
    e887b2ee:	c808b60b          	extu	a2,a7,50,0
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b2f2:	00e86733          	or	a4,a6,a4
    e887b2f6:	9732                	add	a4,a4,a2
    e887b2f8:	93cd                	srli	a5,a5,0x33
    e887b2fa:	00c73633          	sltu	a2,a4,a2
    e887b2fe:	963e                	add	a2,a2,a5
  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
    e887b300:	0636                	slli	a2,a2,0xd
    e887b302:	03375813          	srli	a6,a4,0x33
    e887b306:	01066833          	or	a6,a2,a6
    e887b30a:	982a                	add	a6,a6,a0
    e887b30c:	00a83533          	sltu	a0,a6,a0
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b310:	0536                	slli	a0,a0,0xd
    e887b312:	03385793          	srli	a5,a6,0x33
    e887b316:	8fc9                	or	a5,a5,a0
    e887b318:	00f68533          	add	a0,a3,a5
    e887b31c:	00d536b3          	sltu	a3,a0,a3
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b320:	06b6                	slli	a3,a3,0xd
    e887b322:	03355793          	srli	a5,a0,0x33
  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
    e887b326:	c803360b          	extu	a2,t1,50,0
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b32a:	8fd5                	or	a5,a5,a3
    e887b32c:	00f609b3          	add	s3,a2,a5
    e887b330:	00c9b633          	sltu	a2,s3,a2
  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
    e887b334:	0636                	slli	a2,a2,0xd
    e887b336:	0339d893          	srli	a7,s3,0x33
    e887b33a:	011668b3          	or	a7,a2,a7
    e887b33e:	031e07b3          	mul	a5,t3,a7
  t[0] += 0x8000000000000 - 19;
    e887b342:	fffda337          	lui	t1,0xfffda
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b346:	c805b58b          	extu	a1,a1,50,0
  t[0] += 0x8000000000000 - 19;
    e887b34a:	00d35313          	srli	t1,t1,0xd
    e887b34e:	932e                	add	t1,t1,a1
    e887b350:	00b335b3          	sltu	a1,t1,a1
  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
    e887b354:	c807370b          	extu	a4,a4,50,0
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b358:	c808380b          	extu	a6,a6,50,0
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b35c:	c805350b          	extu	a0,a0,50,0
  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
    e887b360:	031e38b3          	mulhu	a7,t3,a7
  t[0] += 0x8000000000000 - 19;
    e887b364:	933e                	add	t1,t1,a5
    e887b366:	00f337b3          	sltu	a5,t1,a5
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b36a:	03335693          	srli	a3,t1,0x33
    e887b36e:	c803330b          	extu	t1,t1,50,0
  t[0] += 0x8000000000000 - 19;
    e887b372:	95c6                	add	a1,a1,a7
    e887b374:	00b788b3          	add	a7,a5,a1
  t[1] += 0x8000000000000 - 1;
    e887b378:	57fd                	li	a5,-1
    e887b37a:	00d7db13          	srli	s6,a5,0xd
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b37e:	00d89793          	slli	a5,a7,0xd
  t[1] += 0x8000000000000 - 1;
    e887b382:	01670633          	add	a2,a4,s6
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b386:	8edd                	or	a3,a3,a5
    e887b388:	96b2                	add	a3,a3,a2
    e887b38a:	0338d893          	srli	a7,a7,0x33
  t[1] += 0x8000000000000 - 1;
    e887b38e:	00e63733          	sltu	a4,a2,a4
  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;
    e887b392:	9746                	add	a4,a4,a7
    e887b394:	00c6b633          	sltu	a2,a3,a2
    e887b398:	9732                	add	a4,a4,a2
  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
    e887b39a:	0736                	slli	a4,a4,0xd
    e887b39c:	0336d613          	srli	a2,a3,0x33
  t[2] += 0x8000000000000 - 1;
    e887b3a0:	016805b3          	add	a1,a6,s6
  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
    e887b3a4:	8e59                	or	a2,a2,a4
    e887b3a6:	00c58733          	add	a4,a1,a2
    e887b3aa:	00b737b3          	sltu	a5,a4,a1
    e887b3ae:	0105b833          	sltu	a6,a1,a6
    e887b3b2:	983e                	add	a6,a6,a5
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b3b4:	0836                	slli	a6,a6,0xd
    e887b3b6:	03375913          	srli	s2,a4,0x33
  t[3] += 0x8000000000000 - 1;
    e887b3ba:	016507b3          	add	a5,a0,s6
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b3be:	01286933          	or	s2,a6,s2
    e887b3c2:	993e                	add	s2,s2,a5
    e887b3c4:	00a7b533          	sltu	a0,a5,a0
    e887b3c8:	00f93bb3          	sltu	s7,s2,a5
  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;
    e887b3cc:	c806b48b          	extu	s1,a3,50,0
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b3d0:	9baa                	add	s7,s7,a0
  store_limb(output,    (limb)(t[0] | (t[1] << 51)));
    e887b3d2:	6562                	ld	a0,24(sp)
    e887b3d4:	03349593          	slli	a1,s1,0x33
    e887b3d8:	0065e5b3          	or	a1,a1,t1
  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;
    e887b3dc:	c8073a8b          	extu	s5,a4,50,0
  store_limb(output,    (limb)(t[0] | (t[1] << 51)));
    e887b3e0:	cc4fb0ef          	jal	ra,e88768a4 <store_limb>
  store_limb(output+8,  (limb)((t[1] >> 13) | (t[2] << 38)));
    e887b3e4:	80b5                	srli	s1,s1,0xd
    e887b3e6:	67e2                	ld	a5,24(sp)
    e887b3e8:	026a9593          	slli	a1,s5,0x26
    e887b3ec:	8dc5                	or	a1,a1,s1
    e887b3ee:	00878513          	addi	a0,a5,8
    e887b3f2:	cb2fb0ef          	jal	ra,e88768a4 <store_limb>
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b3f6:	c8093a0b          	extu	s4,s2,50,0
  store_limb(output+16, (limb)((t[2] >> 26) | (t[3] << 25)));
    e887b3fa:	67e2                	ld	a5,24(sp)
    e887b3fc:	01aada93          	srli	s5,s5,0x1a
    e887b400:	019a1593          	slli	a1,s4,0x19
    e887b404:	0155e5b3          	or	a1,a1,s5
    e887b408:	01078513          	addi	a0,a5,16
    e887b40c:	c98fb0ef          	jal	ra,e88768a4 <store_limb>
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b410:	0bb6                	slli	s7,s7,0xd
  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;
    e887b412:	c809b78b          	extu	a5,s3,50,0
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b416:	03395913          	srli	s2,s2,0x33
    e887b41a:	012be933          	or	s2,s7,s2
  t[4] += 0x8000000000000 - 1;
    e887b41e:	97da                	add	a5,a5,s6
  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;
    e887b420:	97ca                	add	a5,a5,s2
  t[4] &= 0x7ffffffffffff;
    e887b422:	c807b78b          	extu	a5,a5,50,0
  store_limb(output+24, (limb)((t[3] >> 39) | (t[4] << 12)));
    e887b426:	07b2                	slli	a5,a5,0xc
    e887b428:	027a5593          	srli	a1,s4,0x27
    e887b42c:	8ddd                	or	a1,a1,a5
    e887b42e:	67e2                	ld	a5,24(sp)
    e887b430:	01878513          	addi	a0,a5,24
    e887b434:	c70fb0ef          	jal	ra,e88768a4 <store_limb>
  crecip(zmone, z);
  fmul(z, x, zmone);
  fcontract(mypublic, z);
}
    e887b438:	7456                	ld	s0,368(sp)
    e887b43a:	70f6                	ld	ra,376(sp)
    e887b43c:	74b6                	ld	s1,360(sp)
    e887b43e:	7916                	ld	s2,352(sp)
    e887b440:	69f6                	ld	s3,344(sp)
    e887b442:	6a56                	ld	s4,336(sp)
    e887b444:	6ab6                	ld	s5,328(sp)
    e887b446:	6b16                	ld	s6,320(sp)
    e887b448:	7bf2                	ld	s7,312(sp)
    e887b44a:	7c52                	ld	s8,304(sp)
    e887b44c:	7cb2                	ld	s9,296(sp)
    e887b44e:	7d12                	ld	s10,288(sp)
    e887b450:	6df2                	ld	s11,280(sp)
    e887b452:	6119                	addi	sp,sp,384
    e887b454:	8082                	ret
  } while(--count);
    e887b456:	4d05                	li	s10,1
    e887b458:	f87fc06f          	j	e88783de <curve25519_donna+0x230>

00000000e887b45c <CARPLAY_MInit>:
	lib_dns_net_change();
	lib_carplay_net_disconnect();	//ȴcarplayرsession
}

__s32 CARPLAY_MInit(void)
{
    e887b45c:	1141                	addi	sp,sp,-16
    eLIBs_printf("CARPLAY_MInit\n");
    e887b45e:	00052517          	auipc	a0,0x52
    e887b462:	be250513          	addi	a0,a0,-1054 # e88cd040 <kCurve25519BasePoint+0x80>
{
    e887b466:	e406                	sd	ra,8(sp)
    eLIBs_printf("CARPLAY_MInit\n");
    e887b468:	65f000ef          	jal	ra,e887c2c6 <eLIBs_printf>
	return EPDK_OK;
}
    e887b46c:	60a2                	ld	ra,8(sp)
    e887b46e:	4501                	li	a0,0
    e887b470:	0141                	addi	sp,sp,16
    e887b472:	8082                	ret

00000000e887b474 <CARPLAY_MExit>:

__s32 CARPLAY_MExit(void)
{
	return EPDK_OK;
}
    e887b474:	4501                	li	a0,0
    e887b476:	8082                	ret

00000000e887b478 <CARPLAY_MOpen>:

__mp *CARPLAY_MOpen(__u32 mid, __u32 mod)
{
	if(carplay_mp.userdef)
    e887b478:	00069797          	auipc	a5,0x69
    e887b47c:	b7878793          	addi	a5,a5,-1160 # e88e3ff0 <carplay_mp>
    e887b480:	0017c703          	lbu	a4,1(a5)
    e887b484:	cb09                	beqz	a4,e887b496 <CARPLAY_MOpen+0x1e>
	{
		carplay_mp.userdef++;
    e887b486:	2705                	addiw	a4,a4,1
	    return (__mp *)&carplay_mp;
	}

	carplay_mp.mid = mid;
	carplay_mp.userdef = 1;
    e887b488:	00e780a3          	sb	a4,1(a5)
	
	return (__mp *)&carplay_mp;
}
    e887b48c:	00069517          	auipc	a0,0x69
    e887b490:	b6450513          	addi	a0,a0,-1180 # e88e3ff0 <carplay_mp>
    e887b494:	8082                	ret
	carplay_mp.mid = mid;
    e887b496:	00a78023          	sb	a0,0(a5)
	carplay_mp.userdef = 1;
    e887b49a:	4705                	li	a4,1
    e887b49c:	b7f5                	j	e887b488 <CARPLAY_MOpen+0x10>

00000000e887b49e <CARPLAY_MClose>:
{
	if(carplay_mp.userdef == 0)  //if need free res
	{
		//module_deinit();
	}
	carplay_mp.userdef --;
    e887b49e:	00069717          	auipc	a4,0x69
    e887b4a2:	b5270713          	addi	a4,a4,-1198 # e88e3ff0 <carplay_mp>
    e887b4a6:	00174783          	lbu	a5,1(a4)

	return EPDK_OK;
}
    e887b4aa:	4501                	li	a0,0
	carplay_mp.userdef --;
    e887b4ac:	37fd                	addiw	a5,a5,-1
    e887b4ae:	00f700a3          	sb	a5,1(a4)
}
    e887b4b2:	8082                	ret

00000000e887b4b4 <CARPLAY_MRead>:

__u32 CARPLAY_MRead(void *pdata, __u32 size, __u32 n, __mp *mp)
{
	return 0;
}
    e887b4b4:	4501                	li	a0,0
    e887b4b6:	8082                	ret

00000000e887b4b8 <CARPLAY_MWrite>:
    e887b4b8:	4501                	li	a0,0
    e887b4ba:	8082                	ret

00000000e887b4bc <CARPLAY_MIoctrl>:
long CARPLAY_MIoctrl(__mp *mp, __u32 cmd, __s32 aux, void *pbuffer)
{
	__s32 ret = EPDK_OK;
    unsigned long *arg = (__u32*)pbuffer;
    
	switch (cmd)
    e887b4bc:	fff5871b          	addiw	a4,a1,-1
    e887b4c0:	47d9                	li	a5,22
            lib_carplay_reconnect();
            break;
        }
		default:
		{
			ret = EPDK_FAIL;
    e887b4c2:	557d                	li	a0,-1
	switch (cmd)
    e887b4c4:	10e7e963          	bltu	a5,a4,e887b5d6 <CARPLAY_MIoctrl+0x11a>
    e887b4c8:	85ba                	mv	a1,a4
    e887b4ca:	00052717          	auipc	a4,0x52
    e887b4ce:	b1670713          	addi	a4,a4,-1258 # e88ccfe0 <kCurve25519BasePoint+0x20>
    e887b4d2:	54b7478b          	lurw	a5,a4,a1,2
{
    e887b4d6:	1101                	addi	sp,sp,-32
    e887b4d8:	ec06                	sd	ra,24(sp)
    e887b4da:	e422                	sd	s0,8(sp)
    e887b4dc:	e826                	sd	s1,16(sp)
	switch (cmd)
    e887b4de:	97ba                	add	a5,a5,a4
    e887b4e0:	8782                	jr	a5
	lib_net_init(lib_net_cb);
    e887b4e2:	6688                	ld	a0,8(a3)
			void* cb2 = arg[2];
    e887b4e4:	6a84                	ld	s1,16(a3)
			void* cb0 = arg[0];
    e887b4e6:	6280                	ld	s0,0(a3)
	lib_net_init(lib_net_cb);
    e887b4e8:	0b7080ef          	jal	ra,e8883d9e <lib_net_init>
	lib_dns_init();
    e887b4ec:	dd2970ef          	jal	ra,e8812abe <lib_dns_init>
	lib_iap_init(lib_iap_cb);
    e887b4f0:	8526                	mv	a0,s1
    e887b4f2:	ce8930ef          	jal	ra,e880e9da <lib_iap_init>
	lib_carplay_init(lib_carplay_cb);
    e887b4f6:	8522                	mv	a0,s0
    e887b4f8:	eeef80ef          	jal	ra,e8873be6 <lib_carplay_init>
			break;
		}
	}
	return ret;
}
    e887b4fc:	60e2                	ld	ra,24(sp)
    e887b4fe:	6422                	ld	s0,8(sp)
    e887b500:	64c2                	ld	s1,16(sp)
	__s32 ret = EPDK_OK;
    e887b502:	4501                	li	a0,0
}
    e887b504:	6105                	addi	sp,sp,32
    e887b506:	8082                	ret
			lib_carplay_start();
    e887b508:	9b1f80ef          	jal	ra,e8873eb8 <lib_carplay_start>
			break;
    e887b50c:	bfc5                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_stop();
    e887b50e:	bbdf80ef          	jal	ra,e88740ca <lib_carplay_stop>
			break;
    e887b512:	b7ed                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_show();
    e887b514:	cb3f80ef          	jal	ra,e88741c6 <lib_carplay_show>
			break;
    e887b518:	b7d5                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_hide();
    e887b51a:	caff80ef          	jal	ra,e88741c8 <lib_carplay_hide>
			break;
    e887b51e:	bff9                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
	lib_iap_attach();
    e887b520:	d60930ef          	jal	ra,e880ea80 <lib_iap_attach>
	StatusNotify(3);//LINK_STARTING
    e887b524:	450d                	li	a0,3
    e887b526:	e44f90ef          	jal	ra,e8874b6a <StatusNotify>
    e887b52a:	bfc9                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
	StatusNotify(8); //LINK_REMOVED
    e887b52c:	4521                	li	a0,8
    e887b52e:	e3cf90ef          	jal	ra,e8874b6a <StatusNotify>
	lib_iap_detach();
    e887b532:	d88930ef          	jal	ra,e880eaba <lib_iap_detach>
	lib_dns_net_change();
    e887b536:	dc6970ef          	jal	ra,e8812afc <lib_dns_net_change>
	lib_carplay_net_disconnect();	//ȴcarplayرsession
    e887b53a:	834f90ef          	jal	ra,e887456e <lib_carplay_net_disconnect>
    e887b53e:	bf7d                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_touch(action,x,y);
    e887b540:	4a90                	lw	a2,16(a3)
    e887b542:	468c                	lw	a1,8(a3)
    e887b544:	0006c503          	lbu	a0,0(a3)
    e887b548:	cf3f80ef          	jal	ra,e887423a <lib_carplay_touch>
			break;
    e887b54c:	bf45                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_screen(w, h);
    e887b54e:	468c                	lw	a1,8(a3)
    e887b550:	4288                	lw	a0,0(a3)
    e887b552:	d73f80ef          	jal	ra,e88742c4 <lib_carplay_screen>
			break;
    e887b556:	b75d                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_frame_rate(fps);
    e887b558:	4288                	lw	a0,0(a3)
    e887b55a:	e13f80ef          	jal	ra,e887436c <lib_carplay_frame_rate>
			break;
    e887b55e:	bf79                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_btaddr(addr);
    e887b560:	6288                	ld	a0,0(a3)
    e887b562:	e15f80ef          	jal	ra,e8874376 <lib_carplay_btaddr>
			break;
    e887b566:	bf59                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_key(key);
    e887b568:	0006c503          	lbu	a0,0(a3)
    e887b56c:	e73f80ef          	jal	ra,e88743de <lib_carplay_key>
			break;
    e887b570:	b771                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            if(type == 0)
    e887b572:	0006c783          	lbu	a5,0(a3)
			__u8 *buf = arg[1];
    e887b576:	6688                	ld	a0,8(a3)
			__u32 len = arg[2];
    e887b578:	4a8c                	lw	a1,16(a3)
            if(type == 0)
    e887b57a:	e781                	bnez	a5,e887b582 <CARPLAY_MIoctrl+0xc6>
		        lib_iap_usb_input((__u8*)buf, len);
    e887b57c:	d78930ef          	jal	ra,e880eaf4 <lib_iap_usb_input>
    e887b580:	bfb5                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
		        lib_net_usb_input((__u8*)buf, len);
    e887b582:	7d8080ef          	jal	ra,e8883d5a <lib_net_usb_input>
    e887b586:	bf9d                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            lib_carplay_icon_label(str);    //UTF8
    e887b588:	6288                	ld	a0,0(a3)
    e887b58a:	fbff80ef          	jal	ra,e8874548 <lib_carplay_icon_label>
            break;
    e887b58e:	b7bd                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            lib_carplay_product_info(str);    //UTF8
    e887b590:	6288                	ld	a0,0(a3)
    e887b592:	fc5f80ef          	jal	ra,e8874556 <lib_carplay_product_info>
            break;
    e887b596:	b79d                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            lib_carplay_aec_param(param);
    e887b598:	6288                	ld	a0,0(a3)
    e887b59a:	fcbf80ef          	jal	ra,e8874564 <lib_carplay_aec_param>
            break;
    e887b59e:	bfb9                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            lib_carplay_i2c_name(str);    //UTF8
    e887b5a0:	6288                	ld	a0,0(a3)
    e887b5a2:	88af90ef          	jal	ra,e887462c <lib_carplay_i2c_name>
            break;
    e887b5a6:	bf99                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            lib_carplay_car_name(str);    //UTF8
    e887b5a8:	6288                	ld	a0,0(a3)
    e887b5aa:	de6930ef          	jal	ra,e880eb90 <lib_carplay_car_name>
            break;
    e887b5ae:	b7b9                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            lib_carplay_start_audio();    //UTF8
    e887b5b0:	a27f80ef          	jal	ra,e8873fd6 <lib_carplay_start_audio>
            break;
    e887b5b4:	b7a1                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_right_hand_drive(right);
    e887b5b6:	0006c503          	lbu	a0,0(a3)
    e887b5ba:	ffff80ef          	jal	ra,e88745b8 <lib_carplay_right_hand_drive>
            break;
    e887b5be:	bf3d                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
			lib_carplay_night_mode(night);
    e887b5c0:	0006c503          	lbu	a0,0(a3)
    e887b5c4:	812f90ef          	jal	ra,e88745d6 <lib_carplay_night_mode>
            break;
    e887b5c8:	bf15                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            lib_carplay_disconnect();
    e887b5ca:	88cf90ef          	jal	ra,e8874656 <lib_carplay_disconnect>
            break;
    e887b5ce:	b73d                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
            lib_carplay_reconnect();
    e887b5d0:	8c0f90ef          	jal	ra,e8874690 <lib_carplay_reconnect>
    e887b5d4:	b725                	j	e887b4fc <CARPLAY_MIoctrl+0x40>
}
    e887b5d6:	8082                	ret

00000000e887b5d8 <GetTickCount>:
    }
    return s;
}

DWORD GetTickCount(void)
{
    e887b5d8:	1141                	addi	sp,sp,-16
    e887b5da:	e406                	sd	ra,8(sp)
	return esKRNL_TimeGet()*10;
    e887b5dc:	251000ef          	jal	ra,e887c02c <esKRNL_TimeGet>
}
    e887b5e0:	60a2                	ld	ra,8(sp)
    e887b5e2:	47a9                	li	a5,10
    e887b5e4:	02f5053b          	mulw	a0,a0,a5
    e887b5e8:	0141                	addi	sp,sp,16
    e887b5ea:	8082                	ret

00000000e887b5ec <GetLocalTime>:
	return week;
}

void GetLocalTime(SYSTEMTIME *st)
{
    if(st)
    e887b5ec:	10050b63          	beqz	a0,e887b702 <GetLocalTime+0x116>
{
    e887b5f0:	1101                	addi	sp,sp,-32
    e887b5f2:	e822                	sd	s0,16(sp)
    e887b5f4:	842a                	mv	s0,a0
    	__awos_date_t date;
    	__awos_time_t time;

        static WORD year,month,day,week;
    	
    	esTIME_GetDate(&date);
    e887b5f6:	0028                	addi	a0,sp,8
{
    e887b5f8:	ec06                	sd	ra,24(sp)
    	esTIME_GetDate(&date);
    e887b5fa:	2c5000ef          	jal	ra,e887c0be <esTIME_GetDate>
    	esTIME_GetTime(&time);
    e887b5fe:	850a                	mv	a0,sp
    e887b600:	2d7000ef          	jal	ra,e887c0d6 <esTIME_GetTime>
        
        if(year != date.year || month != date.month || day != date.day)
    e887b604:	00069797          	auipc	a5,0x69
    e887b608:	9f478793          	addi	a5,a5,-1548 # e88e3ff8 <year.6186>
    e887b60c:	00815583          	lhu	a1,8(sp)
    e887b610:	0007d603          	lhu	a2,0(a5)
    e887b614:	00a14303          	lbu	t1,10(sp)
    e887b618:	00069717          	auipc	a4,0x69
    e887b61c:	9dc70713          	addi	a4,a4,-1572 # e88e3ff4 <month.6187>
    e887b620:	00069697          	auipc	a3,0x69
    e887b624:	9d268693          	addi	a3,a3,-1582 # e88e3ff2 <day.6188>
    e887b628:	00b14883          	lbu	a7,11(sp)
    e887b62c:	00069817          	auipc	a6,0x69
    e887b630:	9ca80813          	addi	a6,a6,-1590 # e88e3ff6 <week.6189>
    e887b634:	00b61a63          	bne	a2,a1,e887b648 <GetLocalTime+0x5c>
    e887b638:	00075603          	lhu	a2,0(a4)
    e887b63c:	00661663          	bne	a2,t1,e887b648 <GetLocalTime+0x5c>
    e887b640:	0006d603          	lhu	a2,0(a3)
    e887b644:	07160c63          	beq	a2,a7,e887b6bc <GetLocalTime+0xd0>
        {
            year = date.year;
            month = date.month;
    e887b648:	00a14603          	lbu	a2,10(sp)
            year = date.year;
    e887b64c:	00b79023          	sh	a1,0(a5)
            month = date.month;
    e887b650:	3c06378b          	extu	a5,a2,15,0
    e887b654:	00f71023          	sh	a5,0(a4)
            day = date.day;
    e887b658:	00b14703          	lbu	a4,11(sp)
	if ( month == 1 || month == 2 )  
    e887b65c:	37fd                	addiw	a5,a5,-1
    e887b65e:	3c07b78b          	extu	a5,a5,15,0
            day = date.day;
    e887b662:	00e69023          	sh	a4,0(a3)
	if ( month == 1 || month == 2 )  
    e887b666:	4685                	li	a3,1
    e887b668:	08f6e463          	bltu	a3,a5,e887b6f0 <GetLocalTime+0x104>
		c = ( year - 1 ) / 100;  
    e887b66c:	fff5869b          	addiw	a3,a1,-1
    e887b670:	06400793          	li	a5,100
    e887b674:	02f6c53b          	divw	a0,a3,a5
		m = month + 12;  
    e887b678:	0631                	addi	a2,a2,12
		y = ( year - 1 ) % 100;  
    e887b67a:	02f6e6bb          	remw	a3,a3,a5
	week = y + y / 4 + c / 4 - 2 * c + 26 * ( m + 1 ) / 10 + d - 1;	//蔡勒公式	 
    e887b67e:	fff7079b          	addiw	a5,a4,-1
    e887b682:	9fb5                	addw	a5,a5,a3
    e887b684:	0025571b          	srliw	a4,a0,0x2
    e887b688:	0026d69b          	srliw	a3,a3,0x2
    e887b68c:	9fb5                	addw	a5,a5,a3
    e887b68e:	9fb9                	addw	a5,a5,a4
    e887b690:	2605                	addiw	a2,a2,1
    e887b692:	4769                	li	a4,26
    e887b694:	0015151b          	slliw	a0,a0,0x1
    e887b698:	9f89                	subw	a5,a5,a0
    e887b69a:	469d                	li	a3,7
    e887b69c:	02e6063b          	mulw	a2,a2,a4
    e887b6a0:	4729                	li	a4,10
    e887b6a2:	02e6563b          	divuw	a2,a2,a4
    e887b6a6:	9fb1                	addw	a5,a5,a2
	week = week >= 0 ? ( week % 7 ) : ( week % 7 + 7 );    //week为负时取模   
    e887b6a8:	02079613          	slli	a2,a5,0x20
    e887b6ac:	02d7e73b          	remw	a4,a5,a3
    e887b6b0:	04064763          	bltz	a2,e887b6fe <GetLocalTime+0x112>
	if ( week == 0 )	 //星期日不作为一周的第一天   
    e887b6b4:	e311                	bnez	a4,e887b6b8 <GetLocalTime+0xcc>
		week = 7;	
    e887b6b6:	471d                	li	a4,7
            week = GetWeekByTime(year,month,day);
    e887b6b8:	00e81023          	sh	a4,0(a6)
        }
    	
    	st->wYear = date.year;
    	st->wMonth = date.month;
    	st->wDay = date.day;
    	st->wHour = time.hour;
    e887b6bc:	00014783          	lbu	a5,0(sp)
    	st->wYear = date.year;
    e887b6c0:	00b41023          	sh	a1,0(s0)
    	st->wMonth = date.month;
    e887b6c4:	00641123          	sh	t1,2(s0)
    	st->wHour = time.hour;
    e887b6c8:	00f41423          	sh	a5,8(s0)
    	st->wMinute = time.minute;
    e887b6cc:	00114783          	lbu	a5,1(sp)
    	st->wDay = date.day;
    e887b6d0:	01141323          	sh	a7,6(s0)
    	st->wMinute = time.minute;
    e887b6d4:	00f41523          	sh	a5,10(s0)
    	st->wSecond = time.second;
    e887b6d8:	00214783          	lbu	a5,2(sp)
    e887b6dc:	00f41623          	sh	a5,12(s0)
        st->wDayOfWeek  = week;
    e887b6e0:	00085783          	lhu	a5,0(a6)
    e887b6e4:	00f41223          	sh	a5,4(s0)
    }
}
    e887b6e8:	60e2                	ld	ra,24(sp)
    e887b6ea:	6442                	ld	s0,16(sp)
    e887b6ec:	6105                	addi	sp,sp,32
    e887b6ee:	8082                	ret
		c = year / 100;  
    e887b6f0:	06400693          	li	a3,100
    e887b6f4:	02d5d53b          	divuw	a0,a1,a3
		y = year % 100;  
    e887b6f8:	02d5f6bb          	remuw	a3,a1,a3
		d = day;  
    e887b6fc:	b749                	j	e887b67e <GetLocalTime+0x92>
	week = week >= 0 ? ( week % 7 ) : ( week % 7 + 7 );    //week为负时取模   
    e887b6fe:	271d                	addiw	a4,a4,7
	if ( week == 0 )	 //星期日不作为一周的第一天   
    e887b700:	bf65                	j	e887b6b8 <GetLocalTime+0xcc>
    e887b702:	8082                	ret

00000000e887b704 <SetThreadName>:
    return TRUE;
}

void SetThreadName(DWORD dwThreadID,TCHAR *szThreadName)
{
    esKRNL_TaskNameSet(dwThreadID, szThreadName);
    e887b704:	0a70006f          	j	e887bfaa <esKRNL_TaskNameSet>

00000000e887b708 <localtime>:
struct tm *localtime(const time_t *clock)
{
	static struct tm tm;
	
	int n = *clock;
	int year_s[2]= {365*24*60*60, 366*24*60*60};
    e887b708:	00052797          	auipc	a5,0x52
    e887b70c:	94878793          	addi	a5,a5,-1720 # e88cd050 <kCurve25519BasePoint+0x90>
    e887b710:	639c                	ld	a5,0(a5)
{
    e887b712:	7135                	addi	sp,sp,-160
    e887b714:	e526                	sd	s1,136(sp)
    e887b716:	e14a                	sd	s2,128(sp)
    e887b718:	fcce                	sd	s3,120(sp)
    e887b71a:	ed06                	sd	ra,152(sp)
    e887b71c:	e922                	sd	s0,144(sp)
    e887b71e:	f8d2                	sd	s4,112(sp)
	int month_s[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
    e887b720:	06000613          	li	a2,96
	int n = *clock;
    e887b724:	4100                	lw	s0,0(a0)
	int month_s[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
    e887b726:	00023597          	auipc	a1,0x23
    e887b72a:	64a58593          	addi	a1,a1,1610 # e889ed70 <icmp6_param_problem+0x1d02>
    e887b72e:	0808                	addi	a0,sp,16
	int year_s[2]= {365*24*60*60, 366*24*60*60};
    e887b730:	e43e                	sd	a5,8(sp)
	int month_s[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
    e887b732:	937840ef          	jal	ra,e8800068 <memcpy>
    int day=1;
    int hour=0;
    int minute=0;
    int second=0;
 
    while(temp>=60)
    e887b736:	03b00493          	li	s1,59
		int flag= is_leap_year(year);
		if(temp>=year_s[flag])
		{
			year++; temp-=year_s[flag];
		}
		else if(temp>=day_s)
    e887b73a:	68d5                	lui	a7,0x15
				hh=month_s[flag][i];
			}
			month+= i;
			day+=days;
		}
		else if(temp>=hour_s)
    e887b73c:	6305                	lui	t1,0x1
		{
			hour=temp/hour_s;
    e887b73e:	6685                	lui	a3,0x1
			int days = temp/day_s;
    e887b740:	6655                	lui	a2,0x15
    int minute=0;
    e887b742:	4e81                	li	t4,0
    int hour=0;
    e887b744:	4f01                	li	t5,0
    int day=1;
    e887b746:	4805                	li	a6,1
    int month=1;
    e887b748:	4705                	li	a4,1
    int year=1970;
    e887b74a:	7b200793          	li	a5,1970
		int flag= is_leap_year(year);
    e887b74e:	19000f93          	li	t6,400
    e887b752:	06400293          	li	t0,100
		if(temp>=year_s[flag])
    e887b756:	00810913          	addi	s2,sp,8
		else if(temp>=day_s)
    e887b75a:	17f88893          	addi	a7,a7,383 # 1517f <memcmp-0xe87eae81>
		else if(temp>=hour_s)
    e887b75e:	e0f30313          	addi	t1,t1,-497 # e0f <memcmp-0xe87ff1f1>
			temp%=hour_s;
		}
		else if(temp>=minute_s)
		{
			minute = temp/minute_s;
    e887b762:	03c00393          	li	t2,60
			hour=temp/hour_s;
    e887b766:	e106869b          	addiw	a3,a3,-496
			int days = temp/day_s;
    e887b76a:	1806061b          	addiw	a2,a2,384
    e887b76e:	03000993          	li	s3,48
    while(temp>=60)
    e887b772:	0284ca63          	blt	s1,s0,e887b7a6 <localtime+0x9e>
			temp%=minute_s;
		}
     }
     second = temp;

	 tm.tm_year = year-1900;
    e887b776:	00069517          	auipc	a0,0x69
    e887b77a:	88a50513          	addi	a0,a0,-1910 # e88e4000 <tm.6119>
    e887b77e:	8947879b          	addiw	a5,a5,-1900
	 tm.tm_mon = month-1;
    e887b782:	377d                	addiw	a4,a4,-1
	 tm.tm_year = year-1900;
    e887b784:	c95c                	sw	a5,20(a0)
	 tm.tm_mon = month-1;
    e887b786:	c918                	sw	a4,16(a0)
	 tm.tm_mday = day;
    e887b788:	01052623          	sw	a6,12(a0)
	 tm.tm_hour = hour;
    e887b78c:	01e52423          	sw	t5,8(a0)
	 tm.tm_min = minute;
    e887b790:	01d52223          	sw	t4,4(a0)
	 tm.tm_sec = second;
    e887b794:	c100                	sw	s0,0(a0)

	return &tm;
}
    e887b796:	60ea                	ld	ra,152(sp)
    e887b798:	644a                	ld	s0,144(sp)
    e887b79a:	64aa                	ld	s1,136(sp)
    e887b79c:	690a                	ld	s2,128(sp)
    e887b79e:	79e6                	ld	s3,120(sp)
    e887b7a0:	7a46                	ld	s4,112(sp)
    e887b7a2:	610d                	addi	sp,sp,160
    e887b7a4:	8082                	ret
		int flag= is_leap_year(year);
    e887b7a6:	0037fe13          	andi	t3,a5,3
    e887b7aa:	000e1663          	bnez	t3,e887b7b6 <localtime+0xae>
    e887b7ae:	0257e53b          	remw	a0,a5,t0
    e887b7b2:	4585                	li	a1,1
    e887b7b4:	e509                	bnez	a0,e887b7be <localtime+0xb6>
    e887b7b6:	03f7e5bb          	remw	a1,a5,t6
    e887b7ba:	0015b593          	seqz	a1,a1
		if(temp>=year_s[flag])
    e887b7be:	44b9458b          	lrw	a1,s2,a1,2
    e887b7c2:	00b44563          	blt	s0,a1,e887b7cc <localtime+0xc4>
			year++; temp-=year_s[flag];
    e887b7c6:	2785                	addiw	a5,a5,1
    e887b7c8:	9c0d                	subw	s0,s0,a1
    e887b7ca:	b765                	j	e887b772 <localtime+0x6a>
		else if(temp>=day_s)
    e887b7cc:	0488d863          	bge	a7,s0,e887b81c <localtime+0x114>
			int days = temp/day_s;
    e887b7d0:	02c445bb          	divw	a1,s0,a2
			temp=temp%day_s;
    e887b7d4:	02c4643b          	remw	s0,s0,a2
			int flag = is_leap_year(year);
    e887b7d8:	000e1763          	bnez	t3,e887b7e6 <localtime+0xde>
    e887b7dc:	4505                	li	a0,1
    e887b7de:	0257ee3b          	remw	t3,a5,t0
    e887b7e2:	000e1663          	bnez	t3,e887b7ee <localtime+0xe6>
    e887b7e6:	03f7e53b          	remw	a0,a5,t6
    e887b7ea:	00153513          	seqz	a0,a0
			while(days>=hh)
    e887b7ee:	01010e13          	addi	t3,sp,16
    e887b7f2:	21351e0b          	mula	t3,a0,s3
			int hh=31;
    e887b7f6:	4a7d                	li	s4,31
    e887b7f8:	8572                	mv	a0,t3
			int i=0;
    e887b7fa:	4e01                	li	t3,0
			while(days>=hh)
    e887b7fc:	0511                	addi	a0,a0,4
    e887b7fe:	0145d763          	bge	a1,s4,e887b80c <localtime+0x104>
			month+= i;
    e887b802:	01c7073b          	addw	a4,a4,t3
			day+=days;
    e887b806:	00b8083b          	addw	a6,a6,a1
    e887b80a:	b7a5                	j	e887b772 <localtime+0x6a>
				days-=month_s[flag][i++];
    e887b80c:	ffc52a03          	lw	s4,-4(a0)
    e887b810:	2e05                	addiw	t3,t3,1
    e887b812:	414585bb          	subw	a1,a1,s4
				hh=month_s[flag][i];
    e887b816:	00052a03          	lw	s4,0(a0)
    e887b81a:	b7cd                	j	e887b7fc <localtime+0xf4>
		else if(temp>=hour_s)
    e887b81c:	00835763          	bge	t1,s0,e887b82a <localtime+0x122>
			hour=temp/hour_s;
    e887b820:	02d44f3b          	divw	t5,s0,a3
			temp%=hour_s;
    e887b824:	02d4643b          	remw	s0,s0,a3
    e887b828:	b7a9                	j	e887b772 <localtime+0x6a>
			minute = temp/minute_s;
    e887b82a:	02744ebb          	divw	t4,s0,t2
			temp%=minute_s;
    e887b82e:	0274643b          	remw	s0,s0,t2
    e887b832:	b781                	j	e887b772 <localtime+0x6a>

00000000e887b834 <memchr>:
	tprintf("perror:%s\n",str);
}

void *memchr (const void *ptr, int value, size_t num)
{
	if (ptr == NULL)
    e887b834:	962a                	add	a2,a2,a0
		return NULL;
	}
	char * p = (char *)ptr;
	while (num--)
	{
		if (*p != (char)value)
    e887b836:	0ff5f593          	andi	a1,a1,255
	while (num--)
    e887b83a:	00c51463          	bne	a0,a2,e887b842 <memchr+0xe>
			p++;
		else
			return p;
	}

	return NULL;
    e887b83e:	4501                	li	a0,0
}
    e887b840:	8082                	ret
		if (*p != (char)value)
    e887b842:	00054783          	lbu	a5,0(a0)
    e887b846:	feb78de3          	beq	a5,a1,e887b840 <memchr+0xc>
			p++;
    e887b84a:	0505                	addi	a0,a0,1
    e887b84c:	b7fd                	j	e887b83a <memchr+0x6>

00000000e887b84e <my_malloc>:
	return s * (flag ? -1.0 : 1.0);
}

void *my_malloc(size_t size)
{
    return eLIBs_malloc(size+8);
    e887b84e:	0521                	addi	a0,a0,8
    e887b850:	2a70006f          	j	e887c2f6 <eLIBs_malloc>

00000000e887b854 <printf_backtrace>:
}

int backtrace(char *name, void *output[], int size, int offset, void* p);
void printf_backtrace(void)
{
    backtrace(NULL, NULL, 0, 0, printf);
    e887b854:	00001717          	auipc	a4,0x1
    e887b858:	a7270713          	addi	a4,a4,-1422 # e887c2c6 <eLIBs_printf>
    e887b85c:	4681                	li	a3,0
    e887b85e:	4601                	li	a2,0
    e887b860:	4581                	li	a1,0
    e887b862:	4501                	li	a0,0
    e887b864:	08b0006f          	j	e887c0ee <backtrace>

00000000e887b868 <CI2C_new>:

#include "dfs_posix.h"
#include <sunxi_hal_twi.h>

CI2C* CI2C_new(void)
{
    e887b868:	1141                	addi	sp,sp,-16
	CI2C *me = malloc(sizeof(CI2C));
    e887b86a:	4511                	li	a0,4
{
    e887b86c:	e406                	sd	ra,8(sp)
    e887b86e:	e022                	sd	s0,0(sp)
	CI2C *me = malloc(sizeof(CI2C));
    e887b870:	fdfff0ef          	jal	ra,e887b84e <my_malloc>
    e887b874:	842a                	mv	s0,a0
	
    memclr(me,sizeof(CI2C));
    e887b876:	4591                	li	a1,4
    e887b878:	30d000ef          	jal	ra,e887c384 <eLIBs_memclr>
	me->m_hI2C = 0;
    e887b87c:	00042023          	sw	zero,0(s0)

	return me;
}
    e887b880:	8522                	mv	a0,s0
    e887b882:	60a2                	ld	ra,8(sp)
    e887b884:	6402                	ld	s0,0(sp)
    e887b886:	0141                	addi	sp,sp,16
    e887b888:	8082                	ret

00000000e887b88a <CI2C_Open>:
	CI2C_Close(me);
	free(me);
}

BOOL CI2C_Open(CI2C *me,TCHAR *device)
{
    e887b88a:	1101                	addi	sp,sp,-32
    e887b88c:	f891540b          	sdd	s0,s1,(sp),0,4
    e887b890:	ec06                	sd	ra,24(sp)
    e887b892:	e84a                	sd	s2,16(sp)
    if(me->m_hI2C > 0)
    e887b894:	411c                	lw	a5,0(a0)
    e887b896:	00f05a63          	blez	a5,e887b8aa <CI2C_Open+0x20>
    {
        return TRUE;
    e887b89a:	4405                	li	s0,1
        int clk = 50*1000;
	    ioctl(me->m_hI2C, I2C_SET_CLOCK, (void *)&clk);	
    }
    //eLIBs_printf("%s iic open success %d\n",device,me->m_hI2C);
	return TRUE;
}
    e887b89c:	8522                	mv	a0,s0
    e887b89e:	60e2                	ld	ra,24(sp)
    e887b8a0:	f891440b          	ldd	s0,s1,(sp),0,4
    e887b8a4:	6942                	ld	s2,16(sp)
    e887b8a6:	6105                	addi	sp,sp,32
    e887b8a8:	8082                	ret
        return FALSE;
    e887b8aa:	4401                	li	s0,0
    if(device == NULL || device[0] == 0)
    e887b8ac:	d9e5                	beqz	a1,e887b89c <CI2C_Open+0x12>
    e887b8ae:	0005c783          	lbu	a5,0(a1)
    e887b8b2:	d7ed                	beqz	a5,e887b89c <CI2C_Open+0x12>
    e887b8b4:	84ae                	mv	s1,a1
    e887b8b6:	892a                	mv	s2,a0
    me->m_hI2C = open(device, O_RDWR);
    e887b8b8:	4589                	li	a1,2
    e887b8ba:	8526                	mv	a0,s1
    e887b8bc:	b75840ef          	jal	ra,e8800430 <open>
    e887b8c0:	00a92023          	sw	a0,0(s2)
    e887b8c4:	842a                	mv	s0,a0
	if(me->m_hI2C == 0)
    e887b8c6:	f971                	bnez	a0,e887b89a <CI2C_Open+0x10>
        printf(_T("iic open fail %s\r\n"),device);
    e887b8c8:	85a6                	mv	a1,s1
    e887b8ca:	00051517          	auipc	a0,0x51
    e887b8ce:	78e50513          	addi	a0,a0,1934 # e88cd058 <kCurve25519BasePoint+0x98>
    e887b8d2:	1f5000ef          	jal	ra,e887c2c6 <eLIBs_printf>
		return FALSE;
    e887b8d6:	b7d9                	j	e887b89c <CI2C_Open+0x12>

00000000e887b8d8 <CI2C_Close>:

void CI2C_Close(CI2C *me)
{
	if(me->m_hI2C > 0)
    e887b8d8:	411c                	lw	a5,0(a0)
    e887b8da:	00f05f63          	blez	a5,e887b8f8 <CI2C_Close+0x20>
{
    e887b8de:	1141                	addi	sp,sp,-16
    e887b8e0:	e022                	sd	s0,0(sp)
    e887b8e2:	842a                	mv	s0,a0
	{
		close(me->m_hI2C);
    e887b8e4:	853e                	mv	a0,a5
{
    e887b8e6:	e406                	sd	ra,8(sp)
		close(me->m_hI2C);
    e887b8e8:	b29840ef          	jal	ra,e8800410 <close>
		me->m_hI2C = 0;
    e887b8ec:	00042023          	sw	zero,0(s0)
	}
}
    e887b8f0:	60a2                	ld	ra,8(sp)
    e887b8f2:	6402                	ld	s0,0(sp)
    e887b8f4:	0141                	addi	sp,sp,16
    e887b8f6:	8082                	ret
    e887b8f8:	8082                	ret

00000000e887b8fa <CI2C_Read>:

BOOL CI2C_Read(CI2C *me,BYTE addr,BYTE* reg,int reglen,BYTE *data,int datalen)
{
    int ret;
    if(me->m_hI2C <= 0)
    e887b8fa:	00052803          	lw	a6,0(a0)
    e887b8fe:	01004463          	bgtz	a6,e887b906 <CI2C_Read+0xc>
    {
        return FALSE;
    e887b902:	4501                	li	a0,0
            return FALSE;
        }
    }

	return TRUE;
}
    e887b904:	8082                	ret
{
    e887b906:	7139                	addi	sp,sp,-64
    e887b908:	ec22                	sd	s0,24(sp)
    e887b90a:	f026                	sd	s1,32(sp)
    e887b90c:	f44a                	sd	s2,40(sp)
    e887b90e:	f84e                	sd	s3,48(sp)
    e887b910:	fc06                	sd	ra,56(sp)
    e887b912:	89be                	mv	s3,a5
    e887b914:	893a                	mv	s2,a4
    e887b916:	842e                	mv	s0,a1
    e887b918:	84aa                	mv	s1,a0
    if(reg != NULL && reglen > 0)
    e887b91a:	e61d                	bnez	a2,e887b948 <CI2C_Read+0x4e>
	return TRUE;
    e887b91c:	4505                	li	a0,1
    if(data != NULL && datalen > 0)
    e887b91e:	04090763          	beqz	s2,e887b96c <CI2C_Read+0x72>
    e887b922:	05305563          	blez	s3,e887b96c <CI2C_Read+0x72>
        msg.flags |= (TWI_M_RD);
    e887b926:	00a11123          	sh	a0,2(sp)
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b92a:	4088                	lw	a0,0(s1)
        msg.addr   =  (addr>>1);
    e887b92c:	4014340b          	extu	s0,s0,16,1
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b930:	860a                	mv	a2,sp
    e887b932:	458d                	li	a1,3
        msg.addr   =  (addr>>1);
    e887b934:	00811023          	sh	s0,0(sp)
        msg.len    = datalen;
    e887b938:	01311223          	sh	s3,4(sp)
        msg.buf    = data;
    e887b93c:	e44a                	sd	s2,8(sp)
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b93e:	0c3000ef          	jal	ra,e887c200 <ioctl>
        return FALSE;
    e887b942:	00153513          	seqz	a0,a0
    e887b946:	a01d                	j	e887b96c <CI2C_Read+0x72>
    if(reg != NULL && reglen > 0)
    e887b948:	fcd05ae3          	blez	a3,e887b91c <CI2C_Read+0x22>
        msg.addr   =  (addr>>1);
    e887b94c:	4015b78b          	extu	a5,a1,16,1
        msg.buf    = reg;
    e887b950:	e432                	sd	a2,8(sp)
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b952:	458d                	li	a1,3
    e887b954:	860a                	mv	a2,sp
    e887b956:	8542                	mv	a0,a6
        msg.flags  =  0;
    e887b958:	00011123          	sh	zero,2(sp)
        msg.addr   =  (addr>>1);
    e887b95c:	00f11023          	sh	a5,0(sp)
        msg.len    = reglen;
    e887b960:	00d11223          	sh	a3,4(sp)
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b964:	09d000ef          	jal	ra,e887c200 <ioctl>
    e887b968:	d955                	beqz	a0,e887b91c <CI2C_Read+0x22>
        return FALSE;
    e887b96a:	4501                	li	a0,0
}
    e887b96c:	70e2                	ld	ra,56(sp)
    e887b96e:	6462                	ld	s0,24(sp)
    e887b970:	7482                	ld	s1,32(sp)
    e887b972:	7922                	ld	s2,40(sp)
    e887b974:	79c2                	ld	s3,48(sp)
    e887b976:	6121                	addi	sp,sp,64
    e887b978:	8082                	ret

00000000e887b97a <CI2C_Write>:

BOOL CI2C_Write(CI2C *me,BYTE addr,BYTE* reg,int reglen,BYTE *data,int datalen)
{
    if(me->m_hI2C <= 0)
    e887b97a:	00052803          	lw	a6,0(a0)
    e887b97e:	01004463          	bgtz	a6,e887b986 <CI2C_Write+0xc>
    {
        return FALSE;
    e887b982:	4501                	li	a0,0
            return FALSE;
        }
    }
    
	return TRUE;
}
    e887b984:	8082                	ret
{
    e887b986:	7139                	addi	sp,sp,-64
    e887b988:	ec22                	sd	s0,24(sp)
    e887b98a:	f026                	sd	s1,32(sp)
    e887b98c:	f44a                	sd	s2,40(sp)
    e887b98e:	f84e                	sd	s3,48(sp)
    e887b990:	fc06                	sd	ra,56(sp)
    e887b992:	89be                	mv	s3,a5
    e887b994:	893a                	mv	s2,a4
    e887b996:	842e                	mv	s0,a1
    e887b998:	84aa                	mv	s1,a0
    if(reg != NULL && reglen > 0)
    e887b99a:	e61d                	bnez	a2,e887b9c8 <CI2C_Write+0x4e>
	return TRUE;
    e887b99c:	4505                	li	a0,1
    if(data != NULL && datalen > 0)
    e887b99e:	04090763          	beqz	s2,e887b9ec <CI2C_Write+0x72>
    e887b9a2:	05305563          	blez	s3,e887b9ec <CI2C_Write+0x72>
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b9a6:	4088                	lw	a0,0(s1)
        msg.addr   =  (addr>>1);
    e887b9a8:	4014340b          	extu	s0,s0,16,1
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b9ac:	860a                	mv	a2,sp
    e887b9ae:	458d                	li	a1,3
        msg.flags  = 0;
    e887b9b0:	00011123          	sh	zero,2(sp)
        msg.addr   =  (addr>>1);
    e887b9b4:	00811023          	sh	s0,0(sp)
        msg.len    = datalen;
    e887b9b8:	01311223          	sh	s3,4(sp)
        msg.buf    = data;
    e887b9bc:	e44a                	sd	s2,8(sp)
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b9be:	043000ef          	jal	ra,e887c200 <ioctl>
        return FALSE;
    e887b9c2:	00153513          	seqz	a0,a0
    e887b9c6:	a01d                	j	e887b9ec <CI2C_Write+0x72>
    if(reg != NULL && reglen > 0)
    e887b9c8:	fcd05ae3          	blez	a3,e887b99c <CI2C_Write+0x22>
        msg.addr   =  (addr>>1);
    e887b9cc:	4015b78b          	extu	a5,a1,16,1
        msg.buf    = reg;
    e887b9d0:	e432                	sd	a2,8(sp)
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b9d2:	458d                	li	a1,3
    e887b9d4:	860a                	mv	a2,sp
    e887b9d6:	8542                	mv	a0,a6
        msg.flags  =  0;
    e887b9d8:	00011123          	sh	zero,2(sp)
        msg.addr   =  (addr>>1);
    e887b9dc:	00f11023          	sh	a5,0(sp)
        msg.len    = reglen;
    e887b9e0:	00d11223          	sh	a3,4(sp)
        if(ioctl(me->m_hI2C, I2C_RDWR, &msg) != 0)
    e887b9e4:	01d000ef          	jal	ra,e887c200 <ioctl>
    e887b9e8:	d955                	beqz	a0,e887b99c <CI2C_Write+0x22>
        return FALSE;
    e887b9ea:	4501                	li	a0,0
}
    e887b9ec:	70e2                	ld	ra,56(sp)
    e887b9ee:	6462                	ld	s0,24(sp)
    e887b9f0:	7482                	ld	s1,32(sp)
    e887b9f2:	7922                	ld	s2,40(sp)
    e887b9f4:	79c2                	ld	s3,48(sp)
    e887b9f6:	6121                	addi	sp,sp,64
    e887b9f8:	8082                	ret

00000000e887b9fa <pthread_self>:
	pthread_t tid[MAX_PTHREAD_KEY];
	void* value[MAX_PTHREAD_KEY];
}S_PTHREAD_KEY;

pthread_t pthread_self(void)
{
    e887b9fa:	1141                	addi	sp,sp,-16
    e887b9fc:	e406                	sd	ra,8(sp)
	return esKRNL_GetTIDCur();
    e887b9fe:	482000ef          	jal	ra,e887be80 <esKRNL_GetTIDCur>
}
    e887ba02:	2501                	sext.w	a0,a0
    e887ba04:	60a2                	ld	ra,8(sp)
    e887ba06:	0141                	addi	sp,sp,16
    e887ba08:	8082                	ret

00000000e887ba0a <pthread_exit>:

void pthread_exit(void *value_ptr)
{
	esKRNL_TDel(EXEC_prioself);
    e887ba0a:	0ff00513          	li	a0,255
    e887ba0e:	5d20006f          	j	e887bfe0 <esKRNL_TDel>

00000000e887ba12 <pthread_attr_init>:
}

int pthread_attr_init(pthread_attr_t *attr)
{
	if(attr == NULL)
    e887ba12:	c901                	beqz	a0,e887ba22 <pthread_attr_init+0x10>
	{
		return -1;
	}
	attr->stack_size = 0x4000;
    e887ba14:	6791                	lui	a5,0x4
    e887ba16:	c11c                	sw	a5,0(a0)
	attr->priority = KRNL_priolevel5;
    e887ba18:	4795                	li	a5,5
    e887ba1a:	00f50223          	sb	a5,4(a0)
	return 0;
    e887ba1e:	4501                	li	a0,0
    e887ba20:	8082                	ret
		return -1;
    e887ba22:	557d                	li	a0,-1
}
    e887ba24:	8082                	ret

00000000e887ba26 <pthread_attr_destroy>:

int pthread_attr_destroy(pthread_attr_t *attr)
{
	return 0;
}
    e887ba26:	4501                	li	a0,0
    e887ba28:	8082                	ret

00000000e887ba2a <pthread_attr_setstacksize>:
	return 0;
}

int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stack_size)
{
	if(attr == NULL)
    e887ba2a:	c501                	beqz	a0,e887ba32 <pthread_attr_setstacksize+0x8>
	{
		return -1;
	}
	attr->stack_size = stack_size;
    e887ba2c:	c10c                	sw	a1,0(a0)
	return 0;
    e887ba2e:	4501                	li	a0,0
    e887ba30:	8082                	ret
		return -1;
    e887ba32:	557d                	li	a0,-1
}
    e887ba34:	8082                	ret

00000000e887ba36 <pthread_attr_setpriority>:
	return 0;
}

int pthread_attr_setpriority(pthread_attr_t *attr, uint8_t priority)
{
	if(attr == NULL)
    e887ba36:	c509                	beqz	a0,e887ba40 <pthread_attr_setpriority+0xa>
	{
		return -1;
	}
	attr->priority = priority;
    e887ba38:	00b50223          	sb	a1,4(a0)
	return 0;
    e887ba3c:	4501                	li	a0,0
    e887ba3e:	8082                	ret
		return -1;
    e887ba40:	557d                	li	a0,-1
}
    e887ba42:	8082                	ret

00000000e887ba44 <pthread_create>:

int pthread_create(pthread_t *tid, const pthread_attr_t *attr,
                   void *(*start)(void *), void *arg)
{
    e887ba44:	1141                	addi	sp,sp,-16
    e887ba46:	e022                	sd	s0,0(sp)
    e887ba48:	e406                	sd	ra,8(sp)
    e887ba4a:	87ae                	mv	a5,a1
    e887ba4c:	842a                	mv	s0,a0
    e887ba4e:	85b6                	mv	a1,a3
    e887ba50:	8532                	mv	a0,a2
	uint32_t stacksize = 0x2000;
	uint8_t priority = KRNL_priolevel5;
	
	if(attr != NULL)
    e887ba52:	c38d                	beqz	a5,e887ba74 <pthread_create+0x30>
	{
		stacksize = attr->stack_size;
    e887ba54:	4390                	lw	a2,0(a5)
		priority = attr->priority;
    e887ba56:	0047c683          	lbu	a3,4(a5) # 4004 <memcmp-0xe87fbffc>
	}
	pthread_t id = esKRNL_TCreate(start, (void*)arg, stacksize, priority);
    e887ba5a:	56a000ef          	jal	ra,e887bfc4 <esKRNL_TCreate>
    e887ba5e:	2501                	sext.w	a0,a0
	if(tid != NULL)
    e887ba60:	c011                	beqz	s0,e887ba64 <pthread_create+0x20>
	{
		*tid = id;
    e887ba62:	c008                	sw	a0,0(s0)
	if(id == 0)
	{
		return -1;
	}
	return 0;
}
    e887ba64:	60a2                	ld	ra,8(sp)
    e887ba66:	6402                	ld	s0,0(sp)
	if(id == 0)
    e887ba68:	00153513          	seqz	a0,a0
}
    e887ba6c:	40a00533          	neg	a0,a0
    e887ba70:	0141                	addi	sp,sp,16
    e887ba72:	8082                	ret
	uint8_t priority = KRNL_priolevel5;
    e887ba74:	4695                	li	a3,5
	uint32_t stacksize = 0x2000;
    e887ba76:	6609                	lui	a2,0x2
    e887ba78:	b7cd                	j	e887ba5a <pthread_create+0x16>

00000000e887ba7a <pthread_mutex_init>:
    pthread_mutex_unlock(&pthread_key->mutex);
}

int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
{
	if(mutex == NULL)
    e887ba7a:	c115                	beqz	a0,e887ba9e <pthread_mutex_init+0x24>
{
    e887ba7c:	1141                	addi	sp,sp,-16
    e887ba7e:	e022                	sd	s0,0(sp)
    e887ba80:	842a                	mv	s0,a0
	{
		return -1;
	}
	
	*mutex = esKRNL_SemCreate(1);
    e887ba82:	4505                	li	a0,1
{
    e887ba84:	e406                	sd	ra,8(sp)
	*mutex = esKRNL_SemCreate(1);
    e887ba86:	4c8000ef          	jal	ra,e887bf4e <esKRNL_SemCreate>
    e887ba8a:	2501                	sext.w	a0,a0
    e887ba8c:	c008                	sw	a0,0(s0)
	{
		return -1;
	}
	
	return 0;
}
    e887ba8e:	60a2                	ld	ra,8(sp)
    e887ba90:	6402                	ld	s0,0(sp)
	if(*mutex == 0)
    e887ba92:	00153513          	seqz	a0,a0
    e887ba96:	40a00533          	neg	a0,a0
}
    e887ba9a:	0141                	addi	sp,sp,16
    e887ba9c:	8082                	ret
		return -1;
    e887ba9e:	557d                	li	a0,-1
}
    e887baa0:	8082                	ret

00000000e887baa2 <pthread_key_create>:
{
    e887baa2:	1101                	addi	sp,sp,-32
    e887baa4:	e826                	sd	s1,16(sp)
    e887baa6:	84aa                	mv	s1,a0
	pthread_key = malloc( sizeof(S_PTHREAD_KEY));
    e887baa8:	0f800513          	li	a0,248
{
    e887baac:	ec06                	sd	ra,24(sp)
    e887baae:	e422                	sd	s0,8(sp)
	pthread_key = malloc( sizeof(S_PTHREAD_KEY));
    e887bab0:	d9fff0ef          	jal	ra,e887b84e <my_malloc>
    e887bab4:	842a                	mv	s0,a0
	memclr(pthread_key,sizeof(S_PTHREAD_KEY));
    e887bab6:	0f800593          	li	a1,248
    e887baba:	0cb000ef          	jal	ra,e887c384 <eLIBs_memclr>
    pthread_mutex_init(&pthread_key->mutex,NULL);
    e887babe:	8522                	mv	a0,s0
    e887bac0:	4581                	li	a1,0
    e887bac2:	fb9ff0ef          	jal	ra,e887ba7a <pthread_mutex_init>
	*key = pthread_key;
    e887bac6:	c080                	sw	s0,0(s1)
}
    e887bac8:	60e2                	ld	ra,24(sp)
    e887baca:	6422                	ld	s0,8(sp)
    e887bacc:	64c2                	ld	s1,16(sp)
    e887bace:	4501                	li	a0,0
    e887bad0:	6105                	addi	sp,sp,32
    e887bad2:	8082                	ret

00000000e887bad4 <pthread_mutex_destroy>:

int pthread_mutex_destroy(pthread_mutex_t *mutex)
{
	uint8_t err;
	if(mutex != NULL && *mutex != 0)
    e887bad4:	c10d                	beqz	a0,e887baf6 <pthread_mutex_destroy+0x22>
    e887bad6:	411c                	lw	a5,0(a0)
	{
		esKRNL_SemDel(*mutex, OS_DEL_ALWAYS, &err);
		return 0;
	}
	return -1;
    e887bad8:	557d                	li	a0,-1
	if(mutex != NULL && *mutex != 0)
    e887bada:	c385                	beqz	a5,e887bafa <pthread_mutex_destroy+0x26>
{
    e887badc:	1101                	addi	sp,sp,-32
		esKRNL_SemDel(*mutex, OS_DEL_ALWAYS, &err);
    e887bade:	00f10613          	addi	a2,sp,15
    e887bae2:	4585                	li	a1,1
    e887bae4:	7c07b50b          	extu	a0,a5,31,0
{
    e887bae8:	ec06                	sd	ra,24(sp)
		esKRNL_SemDel(*mutex, OS_DEL_ALWAYS, &err);
    e887baea:	47a000ef          	jal	ra,e887bf64 <esKRNL_SemDel>
}
    e887baee:	60e2                	ld	ra,24(sp)
		return 0;
    e887baf0:	4501                	li	a0,0
}
    e887baf2:	6105                	addi	sp,sp,32
    e887baf4:	8082                	ret
	return -1;
    e887baf6:	557d                	li	a0,-1
    e887baf8:	8082                	ret
}
    e887bafa:	8082                	ret

00000000e887bafc <pthread_key_delete>:
	if(pthread_key == 0)
    e887bafc:	cd19                	beqz	a0,e887bb1a <pthread_key_delete+0x1e>
{
    e887bafe:	1141                	addi	sp,sp,-16
    e887bb00:	e406                	sd	ra,8(sp)
    e887bb02:	e022                	sd	s0,0(sp)
    e887bb04:	842a                	mv	s0,a0
	pthread_mutex_destroy(&pthread_key->mutex);
    e887bb06:	fcfff0ef          	jal	ra,e887bad4 <pthread_mutex_destroy>
	free( pthread_key );
    e887bb0a:	8522                	mv	a0,s0
    e887bb0c:	7f4000ef          	jal	ra,e887c300 <eLIBs_free>
}
    e887bb10:	6402                	ld	s0,0(sp)
    e887bb12:	60a2                	ld	ra,8(sp)
	return 0;
    e887bb14:	4501                	li	a0,0
}
    e887bb16:	0141                	addi	sp,sp,16
    e887bb18:	8082                	ret
		return -1;
    e887bb1a:	557d                	li	a0,-1
}
    e887bb1c:	8082                	ret

00000000e887bb1e <pthread_mutex_lock>:

int pthread_mutex_lock(pthread_mutex_t *mutex)
{
	if(mutex != NULL)
    e887bb1e:	e901                	bnez	a0,e887bb2e <pthread_mutex_lock+0x10>
			{
				return 0;
			}
		}
	}
	return -1;
    e887bb20:	557d                	li	a0,-1
}
    e887bb22:	8082                	ret
	return -1;
    e887bb24:	557d                	li	a0,-1
}
    e887bb26:	60e2                	ld	ra,24(sp)
    e887bb28:	6442                	ld	s0,16(sp)
    e887bb2a:	6105                	addi	sp,sp,32
    e887bb2c:	8082                	ret
{
    e887bb2e:	1101                	addi	sp,sp,-32
    e887bb30:	e822                	sd	s0,16(sp)
    e887bb32:	ec06                	sd	ra,24(sp)
		if(*mutex == PTHREAD_MUTEX_INITIALIZER)
    e887bb34:	4118                	lw	a4,0(a0)
    e887bb36:	57fd                	li	a5,-1
    e887bb38:	842a                	mv	s0,a0
    e887bb3a:	00f71563          	bne	a4,a5,e887bb44 <pthread_mutex_lock+0x26>
			pthread_mutex_init(mutex,NULL);
    e887bb3e:	4581                	li	a1,0
    e887bb40:	f3bff0ef          	jal	ra,e887ba7a <pthread_mutex_init>
		if(*mutex != 0)
    e887bb44:	4008                	lw	a0,0(s0)
    e887bb46:	dd79                	beqz	a0,e887bb24 <pthread_mutex_lock+0x6>
			esKRNL_SemPend(*mutex, 0, &err);
    e887bb48:	7c05350b          	extu	a0,a0,31,0
    e887bb4c:	00f10613          	addi	a2,sp,15
    e887bb50:	4581                	li	a1,0
    e887bb52:	428000ef          	jal	ra,e887bf7a <esKRNL_SemPend>
			if(err == OS_NO_ERR)
    e887bb56:	00f14503          	lbu	a0,15(sp)
				return 0;
    e887bb5a:	00153513          	seqz	a0,a0
    e887bb5e:	157d                	addi	a0,a0,-1
    e887bb60:	b7d9                	j	e887bb26 <pthread_mutex_lock+0x8>

00000000e887bb62 <pthread_mutex_unlock>:

int pthread_mutex_unlock(pthread_mutex_t *mutex)
{
	if(mutex != NULL && *mutex != 0)
    e887bb62:	cd11                	beqz	a0,e887bb7e <pthread_mutex_unlock+0x1c>
    e887bb64:	411c                	lw	a5,0(a0)
	{
		esKRNL_SemPost(*mutex);
		return 0;
	}
	return -1;
    e887bb66:	557d                	li	a0,-1
	if(mutex != NULL && *mutex != 0)
    e887bb68:	cf89                	beqz	a5,e887bb82 <pthread_mutex_unlock+0x20>
{
    e887bb6a:	1141                	addi	sp,sp,-16
		esKRNL_SemPost(*mutex);
    e887bb6c:	7c07b50b          	extu	a0,a5,31,0
{
    e887bb70:	e406                	sd	ra,8(sp)
		esKRNL_SemPost(*mutex);
    e887bb72:	41e000ef          	jal	ra,e887bf90 <esKRNL_SemPost>
}
    e887bb76:	60a2                	ld	ra,8(sp)
		return 0;
    e887bb78:	4501                	li	a0,0
}
    e887bb7a:	0141                	addi	sp,sp,16
    e887bb7c:	8082                	ret
	return -1;
    e887bb7e:	557d                	li	a0,-1
    e887bb80:	8082                	ret
}
    e887bb82:	8082                	ret

00000000e887bb84 <pthread_setspecific>:
{
    e887bb84:	1101                	addi	sp,sp,-32
    e887bb86:	f891540b          	sdd	s0,s1,(sp),0,4
    e887bb8a:	842a                	mv	s0,a0
    e887bb8c:	e84a                	sd	s2,16(sp)
    e887bb8e:	ec06                	sd	ra,24(sp)
    e887bb90:	892e                	mv	s2,a1
	return esKRNL_GetTIDCur();
    e887bb92:	2ee000ef          	jal	ra,e887be80 <esKRNL_GetTIDCur>
	if(pthread_key == 0)
    e887bb96:	cc25                	beqz	s0,e887bc0e <pthread_setspecific+0x8a>
    e887bb98:	0005049b          	sext.w	s1,a0
    pthread_mutex_lock(&pthread_key->mutex);
    e887bb9c:	8522                	mv	a0,s0
    e887bb9e:	f81ff0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
    e887bba2:	4781                	li	a5,0
    e887bba4:	00440693          	addi	a3,s0,4
	for(i=0;i<MAX_PTHREAD_KEY;i++)
    e887bba8:	4651                	li	a2,20
		if(pthread_key->tid[i] == tid)
    e887bbaa:	44f6c58b          	lrw	a1,a3,a5,2
    e887bbae:	0007871b          	sext.w	a4,a5
    e887bbb2:	02959063          	bne	a1,s1,e887bbd2 <pthread_setspecific+0x4e>
			pthread_key->value[i] = value;
    e887bbb6:	06e4178b          	addsl	a5,s0,a4,3
    e887bbba:	0527bc23          	sd	s2,88(a5)
            pthread_mutex_unlock(&pthread_key->mutex);
    e887bbbe:	8522                	mv	a0,s0
    e887bbc0:	fa3ff0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
			return 0;
    e887bbc4:	4501                	li	a0,0
}
    e887bbc6:	60e2                	ld	ra,24(sp)
    e887bbc8:	f891440b          	ldd	s0,s1,(sp),0,4
    e887bbcc:	6942                	ld	s2,16(sp)
    e887bbce:	6105                	addi	sp,sp,32
    e887bbd0:	8082                	ret
	for(i=0;i<MAX_PTHREAD_KEY;i++)
    e887bbd2:	0785                	addi	a5,a5,1
    e887bbd4:	fcc79be3          	bne	a5,a2,e887bbaa <pthread_setspecific+0x26>
    e887bbd8:	4781                	li	a5,0
	for(i=0;i<MAX_PTHREAD_KEY;i++)
    e887bbda:	4651                	li	a2,20
		if(pthread_key->tid[i] == 0)
    e887bbdc:	44f6c58b          	lrw	a1,a3,a5,2
    e887bbe0:	0007871b          	sext.w	a4,a5
    e887bbe4:	e989                	bnez	a1,e887bbf6 <pthread_setspecific+0x72>
			pthread_key->tid[i] = tid;
    e887bbe6:	04e4178b          	addsl	a5,s0,a4,2
    e887bbea:	c3c4                	sw	s1,4(a5)
			pthread_key->value[i] = value;
    e887bbec:	06e4170b          	addsl	a4,s0,a4,3
    e887bbf0:	05273c23          	sd	s2,88(a4)
    e887bbf4:	b7e9                	j	e887bbbe <pthread_setspecific+0x3a>
	for(i=0;i<MAX_PTHREAD_KEY;i++)
    e887bbf6:	0785                	addi	a5,a5,1
    e887bbf8:	fec792e3          	bne	a5,a2,e887bbdc <pthread_setspecific+0x58>
    pthread_mutex_unlock(&pthread_key->mutex);
    e887bbfc:	8522                	mv	a0,s0
    e887bbfe:	f65ff0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
	printf("pthread_setspecific overflow\n");
    e887bc02:	00051517          	auipc	a0,0x51
    e887bc06:	46e50513          	addi	a0,a0,1134 # e88cd070 <kCurve25519BasePoint+0xb0>
    e887bc0a:	6bc000ef          	jal	ra,e887c2c6 <eLIBs_printf>
		return -1;
    e887bc0e:	557d                	li	a0,-1
    e887bc10:	bf5d                	j	e887bbc6 <pthread_setspecific+0x42>

00000000e887bc12 <pthread_getspecific>:
{
    e887bc12:	1101                	addi	sp,sp,-32
    e887bc14:	e422                	sd	s0,8(sp)
    e887bc16:	842a                	mv	s0,a0
    e887bc18:	e826                	sd	s1,16(sp)
    e887bc1a:	ec06                	sd	ra,24(sp)
		return 0;
    e887bc1c:	4481                	li	s1,0
	return esKRNL_GetTIDCur();
    e887bc1e:	262000ef          	jal	ra,e887be80 <esKRNL_GetTIDCur>
	if(pthread_key == 0)
    e887bc22:	c415                	beqz	s0,e887bc4e <pthread_getspecific+0x3c>
	return esKRNL_GetTIDCur();
    e887bc24:	0005049b          	sext.w	s1,a0
    pthread_mutex_lock(&pthread_key->mutex);
    e887bc28:	8522                	mv	a0,s0
    e887bc2a:	ef5ff0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
    e887bc2e:	4781                	li	a5,0
		if(pthread_key->tid[i] == tid)
    e887bc30:	00440613          	addi	a2,s0,4
	for(i=0;i<MAX_PTHREAD_KEY;i++)
    e887bc34:	46d1                	li	a3,20
		if(pthread_key->tid[i] == tid)
    e887bc36:	44f6458b          	lrw	a1,a2,a5,2
    e887bc3a:	0007871b          	sext.w	a4,a5
    e887bc3e:	00959e63          	bne	a1,s1,e887bc5a <pthread_getspecific+0x48>
			value = pthread_key->value[i];
    e887bc42:	06e4178b          	addsl	a5,s0,a4,3
    e887bc46:	6fa4                	ld	s1,88(a5)
    pthread_mutex_unlock(&pthread_key->mutex);
    e887bc48:	8522                	mv	a0,s0
    e887bc4a:	f19ff0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
}
    e887bc4e:	60e2                	ld	ra,24(sp)
    e887bc50:	6422                	ld	s0,8(sp)
    e887bc52:	8526                	mv	a0,s1
    e887bc54:	64c2                	ld	s1,16(sp)
    e887bc56:	6105                	addi	sp,sp,32
    e887bc58:	8082                	ret
	for(i=0;i<MAX_PTHREAD_KEY;i++)
    e887bc5a:	0785                	addi	a5,a5,1
    e887bc5c:	fcd79de3          	bne	a5,a3,e887bc36 <pthread_getspecific+0x24>
    void *value = 0;
    e887bc60:	4481                	li	s1,0
    e887bc62:	b7dd                	j	e887bc48 <pthread_getspecific+0x36>

00000000e887bc64 <pthread_clrspecific>:
{
    e887bc64:	1101                	addi	sp,sp,-32
    e887bc66:	e422                	sd	s0,8(sp)
    e887bc68:	842a                	mv	s0,a0
    e887bc6a:	ec06                	sd	ra,24(sp)
    e887bc6c:	e826                	sd	s1,16(sp)
	return esKRNL_GetTIDCur();
    e887bc6e:	212000ef          	jal	ra,e887be80 <esKRNL_GetTIDCur>
	if(pthread_key == 0)
    e887bc72:	cc05                	beqz	s0,e887bcaa <pthread_clrspecific+0x46>
	return esKRNL_GetTIDCur();
    e887bc74:	0005049b          	sext.w	s1,a0
    pthread_mutex_lock(&pthread_key->mutex);
    e887bc78:	8522                	mv	a0,s0
    e887bc7a:	ea5ff0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
    e887bc7e:	4785                	li	a5,1
			pthread_key->value[i] = 0;
    e887bc80:	05040693          	addi	a3,s0,80
	for(i=0;i<MAX_PTHREAD_KEY;i++)
    e887bc84:	4755                	li	a4,21
		if(pthread_key->tid[i] == tid)
    e887bc86:	44f4460b          	lrw	a2,s0,a5,2
    e887bc8a:	00961663          	bne	a2,s1,e887bc96 <pthread_clrspecific+0x32>
			pthread_key->tid[i] = 0;
    e887bc8e:	44f4500b          	srw	zero,s0,a5,2
			pthread_key->value[i] = 0;
    e887bc92:	66f6d00b          	srd	zero,a3,a5,3
	for(i=0;i<MAX_PTHREAD_KEY;i++)
    e887bc96:	0785                	addi	a5,a5,1
    e887bc98:	fee797e3          	bne	a5,a4,e887bc86 <pthread_clrspecific+0x22>
    pthread_mutex_unlock(&pthread_key->mutex);
    e887bc9c:	8522                	mv	a0,s0
}
    e887bc9e:	6422                	ld	s0,8(sp)
    e887bca0:	60e2                	ld	ra,24(sp)
    e887bca2:	64c2                	ld	s1,16(sp)
    e887bca4:	6105                	addi	sp,sp,32
    pthread_mutex_unlock(&pthread_key->mutex);
    e887bca6:	ebdff06f          	j	e887bb62 <pthread_mutex_unlock>
}
    e887bcaa:	60e2                	ld	ra,24(sp)
    e887bcac:	6422                	ld	s0,8(sp)
    e887bcae:	64c2                	ld	s1,16(sp)
    e887bcb0:	6105                	addi	sp,sp,32
    e887bcb2:	8082                	ret

00000000e887bcb4 <pthread_cond_init>:

int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr)
{
	if(cond == NULL)
    e887bcb4:	c115                	beqz	a0,e887bcd8 <pthread_cond_init+0x24>
{
    e887bcb6:	1141                	addi	sp,sp,-16
    e887bcb8:	e022                	sd	s0,0(sp)
    e887bcba:	842a                	mv	s0,a0
	{
		return -1;
	}
	
	*cond = esKRNL_SemCreate(0);
    e887bcbc:	4501                	li	a0,0
{
    e887bcbe:	e406                	sd	ra,8(sp)
	*cond = esKRNL_SemCreate(0);
    e887bcc0:	28e000ef          	jal	ra,e887bf4e <esKRNL_SemCreate>
    e887bcc4:	2501                	sext.w	a0,a0
    e887bcc6:	c008                	sw	a0,0(s0)
		return -1;
	}
	
	return 0;
	
}
    e887bcc8:	60a2                	ld	ra,8(sp)
    e887bcca:	6402                	ld	s0,0(sp)
	if(*cond == 0)
    e887bccc:	00153513          	seqz	a0,a0
    e887bcd0:	40a00533          	neg	a0,a0
}
    e887bcd4:	0141                	addi	sp,sp,16
    e887bcd6:	8082                	ret
		return -1;
    e887bcd8:	557d                	li	a0,-1
}
    e887bcda:	8082                	ret

00000000e887bcdc <pthread_cond_destroy>:

int pthread_cond_destroy(pthread_cond_t *cond)
{
	if(cond != NULL && *cond != 0)
    e887bcdc:	c10d                	beqz	a0,e887bcfe <pthread_cond_destroy+0x22>
    e887bcde:	411c                	lw	a5,0(a0)
	{
		uint8_t err;
		esKRNL_SemDel(*cond, OS_DEL_ALWAYS, &err);
		return 0;
	}
	return -1;
    e887bce0:	557d                	li	a0,-1
	if(cond != NULL && *cond != 0)
    e887bce2:	c385                	beqz	a5,e887bd02 <pthread_cond_destroy+0x26>
{
    e887bce4:	1101                	addi	sp,sp,-32
		esKRNL_SemDel(*cond, OS_DEL_ALWAYS, &err);
    e887bce6:	00f10613          	addi	a2,sp,15
    e887bcea:	4585                	li	a1,1
    e887bcec:	7c07b50b          	extu	a0,a5,31,0
{
    e887bcf0:	ec06                	sd	ra,24(sp)
		esKRNL_SemDel(*cond, OS_DEL_ALWAYS, &err);
    e887bcf2:	272000ef          	jal	ra,e887bf64 <esKRNL_SemDel>
}
    e887bcf6:	60e2                	ld	ra,24(sp)
		return 0;
    e887bcf8:	4501                	li	a0,0
}
    e887bcfa:	6105                	addi	sp,sp,32
    e887bcfc:	8082                	ret
	return -1;
    e887bcfe:	557d                	li	a0,-1
    e887bd00:	8082                	ret
}
    e887bd02:	8082                	ret

00000000e887bd04 <pthread_cond_signal>:
    e887bd04:	e5fff06f          	j	e887bb62 <pthread_mutex_unlock>

00000000e887bd08 <pthread_cond_wait>:
	return -1;
}

int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
	if(cond != NULL && *cond != 0)
    e887bd08:	c131                	beqz	a0,e887bd4c <pthread_cond_wait+0x44>
    e887bd0a:	4118                	lw	a4,0(a0)
		if(err == OS_NO_ERR)
		{
			return 0;
		}
	}
	return -1;
    e887bd0c:	57fd                	li	a5,-1
	if(cond != NULL && *cond != 0)
    e887bd0e:	c321                	beqz	a4,e887bd4e <pthread_cond_wait+0x46>
{
    e887bd10:	7179                	addi	sp,sp,-48
    e887bd12:	ec22                	sd	s0,24(sp)
    e887bd14:	842a                	mv	s0,a0
		pthread_mutex_unlock(mutex);
    e887bd16:	852e                	mv	a0,a1
{
    e887bd18:	f406                	sd	ra,40(sp)
    e887bd1a:	f026                	sd	s1,32(sp)
    e887bd1c:	84ae                	mv	s1,a1
		pthread_mutex_unlock(mutex);
    e887bd1e:	e45ff0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		esKRNL_SemPend(*cond, 0, &err);
    e887bd22:	00046503          	lwu	a0,0(s0)
    e887bd26:	00f10613          	addi	a2,sp,15
    e887bd2a:	4581                	li	a1,0
    e887bd2c:	24e000ef          	jal	ra,e887bf7a <esKRNL_SemPend>
		pthread_mutex_lock(mutex);
    e887bd30:	8526                	mv	a0,s1
    e887bd32:	dedff0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
}
    e887bd36:	6462                	ld	s0,24(sp)
		if(err == OS_NO_ERR)
    e887bd38:	00f14783          	lbu	a5,15(sp)
}
    e887bd3c:	70a2                	ld	ra,40(sp)
    e887bd3e:	7482                	ld	s1,32(sp)
			return 0;
    e887bd40:	0017b793          	seqz	a5,a5
    e887bd44:	17fd                	addi	a5,a5,-1
}
    e887bd46:	853e                	mv	a0,a5
    e887bd48:	6145                	addi	sp,sp,48
    e887bd4a:	8082                	ret
	return -1;
    e887bd4c:	57fd                	li	a5,-1
}
    e887bd4e:	853e                	mv	a0,a5
    e887bd50:	8082                	ret

00000000e887bd52 <pthread_cond_timedwait>:

int pthread_cond_timedwait(pthread_cond_t        *cond,
                                  pthread_mutex_t       *mutex,
                                  const struct timespec *abstime)
{
	if(cond != NULL && *cond != 0 && abstime != NULL)
    e887bd52:	cd35                	beqz	a0,e887bdce <pthread_cond_timedwait+0x7c>
    e887bd54:	4118                	lw	a4,0(a0)
		else if(err == OS_TIMEOUT)
		{
			return ETIMEDOUT_PTHREAD;
		}
	}
	return -1;
    e887bd56:	57fd                	li	a5,-1
	if(cond != NULL && *cond != 0 && abstime != NULL)
    e887bd58:	cf25                	beqz	a4,e887bdd0 <pthread_cond_timedwait+0x7e>
    e887bd5a:	ca3d                	beqz	a2,e887bdd0 <pthread_cond_timedwait+0x7e>
{
    e887bd5c:	7179                	addi	sp,sp,-48
    e887bd5e:	f406                	sd	ra,40(sp)
    e887bd60:	f04a                	sd	s2,32(sp)
    e887bd62:	fa91540b          	sdd	s0,s1,(sp),1,4
		timeout = abstime->tv_sec*100+abstime->tv_nsec/(1000*1000*10)-esKRNL_TimeGet();
    e887bd66:	f886470b          	ldd	a4,s0,(a2),0,4
    e887bd6a:	009897b7          	lui	a5,0x989
    e887bd6e:	68078793          	addi	a5,a5,1664 # 989680 <memcmp-0xe7e76980>
    e887bd72:	02f44433          	div	s0,s0,a5
    e887bd76:	06400793          	li	a5,100
    e887bd7a:	892e                	mv	s2,a1
    e887bd7c:	84aa                	mv	s1,a0
    e887bd7e:	24e7940b          	mulaw	s0,a5,a4
    e887bd82:	2aa000ef          	jal	ra,e887c02c <esKRNL_TimeGet>
    e887bd86:	9c09                	subw	s0,s0,a0
		pthread_mutex_unlock(mutex);
    e887bd88:	854a                	mv	a0,s2
    e887bd8a:	dd9ff0ef          	jal	ra,e887bb62 <pthread_mutex_unlock>
		esKRNL_SemPend(*cond, timeout, &err);
    e887bd8e:	8722                	mv	a4,s0
    e887bd90:	00e04363          	bgtz	a4,e887bd96 <pthread_cond_timedwait+0x44>
    e887bd94:	4405                	li	s0,1
    e887bd96:	0004e503          	lwu	a0,0(s1)
    e887bd9a:	00f10613          	addi	a2,sp,15
    e887bd9e:	3c04358b          	extu	a1,s0,15,0
    e887bda2:	1d8000ef          	jal	ra,e887bf7a <esKRNL_SemPend>
		pthread_mutex_lock(mutex);
    e887bda6:	854a                	mv	a0,s2
    e887bda8:	d77ff0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
		if(err == OS_NO_ERR)
    e887bdac:	00f14703          	lbu	a4,15(sp)
			return 0;
    e887bdb0:	4781                	li	a5,0
		if(err == OS_NO_ERR)
    e887bdb2:	c719                	beqz	a4,e887bdc0 <pthread_cond_timedwait+0x6e>
		else if(err == OS_TIMEOUT)
    e887bdb4:	46a9                	li	a3,10
			return ETIMEDOUT_PTHREAD;
    e887bdb6:	07400793          	li	a5,116
		else if(err == OS_TIMEOUT)
    e887bdba:	00d70363          	beq	a4,a3,e887bdc0 <pthread_cond_timedwait+0x6e>
	return -1;
    e887bdbe:	57fd                	li	a5,-1
}
    e887bdc0:	70a2                	ld	ra,40(sp)
    e887bdc2:	fa91440b          	ldd	s0,s1,(sp),1,4
    e887bdc6:	7902                	ld	s2,32(sp)
    e887bdc8:	853e                	mv	a0,a5
    e887bdca:	6145                	addi	sp,sp,48
    e887bdcc:	8082                	ret
	return -1;
    e887bdce:	57fd                	li	a5,-1
}
    e887bdd0:	853e                	mv	a0,a5
    e887bdd2:	8082                	ret

00000000e887bdd4 <pthread_setname_np>:

int pthread_setname_np(pthread_t thread, const char *name)
{
    e887bdd4:	1141                	addi	sp,sp,-16
    e887bdd6:	e406                	sd	ra,8(sp)
    esKRNL_TaskNameSet(thread, name);
    e887bdd8:	1d2000ef          	jal	ra,e887bfaa <esKRNL_TaskNameSet>
}
    e887bddc:	60a2                	ld	ra,8(sp)
    e887bdde:	0141                	addi	sp,sp,16
    e887bde0:	8082                	ret

00000000e887bde2 <esFSYS_fclose>:
    result = (int32_t)__syscall1((long)SYSCALL_FSYS(esFSYS_closedir), (long)hDir);
    return result;
}

int32_t esFSYS_fclose(void *hFile)
{
    e887bde2:	1141                	addi	sp,sp,-16
    __asm_syscall("r"(a7));
}

static inline long __syscall1(long n, long a)
{
    register long a7 __asm__("a7") = n;
    e887bde4:	100008b7          	lui	a7,0x10000
    e887bde8:	e406                	sd	ra,8(sp)
    e887bdea:	30288893          	addi	a7,a7,770 # 10000302 <memcmp-0xd87ffcfe>
    register long a0 __asm__("a0") = a;
    __asm_syscall("r"(a7), "0"(a0));
    e887bdee:	00000073          	ecall
    int32_t result ;
    result = (int32_t)__syscall1((long)SYSCALL_FSYS(esFSYS_fclose), (long)hFile);
    return result;
}
    e887bdf2:	60a2                	ld	ra,8(sp)
    e887bdf4:	2501                	sext.w	a0,a0
    e887bdf6:	0141                	addi	sp,sp,16
    e887bdf8:	8082                	ret

00000000e887bdfa <esFSYS_fopen>:
    result = (int32_t)__syscall4((long)SYSCALL_FSYS(esFSYS_fioctrl), (long)hFile, (long)Cmd, (long)Aux, (long)pBuffer);
    return result;
}

void *esFSYS_fopen(const char *pFileName, const char *pMode)
{
    e887bdfa:	1141                	addi	sp,sp,-16
}

static inline long __syscall2(long n, long a, long b)
{
    register long a7 __asm__("a7") = n;
    e887bdfc:	100008b7          	lui	a7,0x10000
    e887be00:	e406                	sd	ra,8(sp)
    e887be02:	30888893          	addi	a7,a7,776 # 10000308 <memcmp-0xd87ffcf8>
    register long a0 __asm__("a0") = a;
    register long a1 __asm__("a1") = b;
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887be06:	00000073          	ecall
    void *result ;
    result = (void *)__syscall2((long)SYSCALL_FSYS(esFSYS_fopen), (long)pFileName, (long)pMode);
    return result;
}
    e887be0a:	60a2                	ld	ra,8(sp)
    e887be0c:	0141                	addi	sp,sp,16
    e887be0e:	8082                	ret

00000000e887be10 <esFSYS_fread>:
    result = (int32_t)__syscall3((long)SYSCALL_FSYS(esFSYS_format), (long)partname, (long)fstype, (long)fmtpara);
    return result;
}

uint32_t esFSYS_fread(void *pData, uint32_t Size, uint32_t N, void *hFile)
{
    e887be10:	1141                	addi	sp,sp,-16
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
}

static inline long __syscall4(long n, long a, long b, long c, long d)
{
    register long a7 __asm__("a7") = n;
    e887be12:	100008b7          	lui	a7,0x10000
    e887be16:	e406                	sd	ra,8(sp)
    e887be18:	30a88893          	addi	a7,a7,778 # 1000030a <memcmp-0xd87ffcf6>
    register long a0 __asm__("a0") = a;
    register long a1 __asm__("a1") = b;
    e887be1c:	7c05b58b          	extu	a1,a1,31,0
    register long a2 __asm__("a2") = c;
    e887be20:	7c06360b          	extu	a2,a2,31,0
    register long a3 __asm__("a3") = d;
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3));
    e887be24:	00000073          	ecall
    uint32_t result ;
    result = (uint32_t)__syscall4((long)SYSCALL_FSYS(esFSYS_fread), (long)pData, (long)Size, (long)N, (long)hFile);
    return result;
}
    e887be28:	60a2                	ld	ra,8(sp)
    e887be2a:	2501                	sext.w	a0,a0
    e887be2c:	0141                	addi	sp,sp,16
    e887be2e:	8082                	ret

00000000e887be30 <esFSYS_fwrite>:
    result = (int32_t)__syscall2((long)SYSCALL_FSYS(esFSYS_ftruncate), (long)filehandle, (long)length);
    return result;
}

uint32_t esFSYS_fwrite(const void *pData, uint32_t Size, uint32_t N, void *hFile)
{
    e887be30:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887be32:	100008b7          	lui	a7,0x10000
    e887be36:	e406                	sd	ra,8(sp)
    e887be38:	31588893          	addi	a7,a7,789 # 10000315 <memcmp-0xd87ffceb>
    register long a1 __asm__("a1") = b;
    e887be3c:	7c05b58b          	extu	a1,a1,31,0
    register long a2 __asm__("a2") = c;
    e887be40:	7c06360b          	extu	a2,a2,31,0
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3));
    e887be44:	00000073          	ecall
    uint32_t result ;
    result = (uint32_t)__syscall4((long)SYSCALL_FSYS(esFSYS_fwrite), (long)pData, (long)Size, (long)N, (long)hFile);
    return result;
}
    e887be48:	60a2                	ld	ra,8(sp)
    e887be4a:	2501                	sext.w	a0,a0
    e887be4c:	0141                	addi	sp,sp,16
    e887be4e:	8082                	ret

00000000e887be50 <esFSYS_mkdir>:
    result = (int32_t)__syscall2((long)SYSCALL_FSYS(esFSYS_getfscharset), (long)partname, (long)pCharset);
    return result;
}

int32_t esFSYS_mkdir(const char *pDirName)
{
    e887be50:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887be52:	100008b7          	lui	a7,0x10000
    e887be56:	e406                	sd	ra,8(sp)
    e887be58:	31788893          	addi	a7,a7,791 # 10000317 <memcmp-0xd87ffce9>
    __asm_syscall("r"(a7), "0"(a0));
    e887be5c:	00000073          	ecall
    int32_t result ;
    result = (int32_t)__syscall1((long)SYSCALL_FSYS(esFSYS_mkdir), (long)pDirName);
    return result;
}
    e887be60:	60a2                	ld	ra,8(sp)
    e887be62:	2501                	sext.w	a0,a0
    e887be64:	0141                	addi	sp,sp,16
    e887be66:	8082                	ret

00000000e887be68 <esFSYS_remove>:
    result = (void *)__syscall1((long)SYSCALL_FSYS(esFSYS_readdir), (long)hDir);
    return result;
}

int32_t esFSYS_remove(const char *pFileName)
{
    e887be68:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887be6a:	100008b7          	lui	a7,0x10000
    e887be6e:	e406                	sd	ra,8(sp)
    e887be70:	32b88893          	addi	a7,a7,811 # 1000032b <memcmp-0xd87ffcd5>
    __asm_syscall("r"(a7), "0"(a0));
    e887be74:	00000073          	ecall
    int32_t result ;
    result = (int32_t)__syscall1((long)SYSCALL_FSYS(esFSYS_remove), (long)pFileName);
    return result;
}
    e887be78:	60a2                	ld	ra,8(sp)
    e887be7a:	2501                	sext.w	a0,a0
    e887be7c:	0141                	addi	sp,sp,16
    e887be7e:	8082                	ret

00000000e887be80 <esKRNL_GetTIDCur>:
    result = (__pCBK_t)__syscall1((long)SYSCALL_KRNL(esKRNL_GetCallBack), (long)cb);
    return result;
}

unsigned long esKRNL_GetTIDCur(void)
{
    e887be80:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887be82:	100008b7          	lui	a7,0x10000
    e887be86:	e406                	sd	ra,8(sp)
    e887be88:	14388893          	addi	a7,a7,323 # 10000143 <memcmp-0xd87ffebd>
    __asm_syscall("r"(a7));
    e887be8c:	00000073          	ecall
    unsigned long result ;
    result = (unsigned long)__syscall0((long)SYSCALL_KRNL(esKRNL_GetTIDCur));
    return result;
}
    e887be90:	60a2                	ld	ra,8(sp)
    e887be92:	0141                	addi	sp,sp,16
    e887be94:	8082                	ret

00000000e887be96 <esKRNL_MutexCreate>:
    result = (int32_t)__syscall1((long)SYSCALL_KRNL(esKRNL_MemLeakChk), (long)en);
}

//os Mutex element
void *esKRNL_MutexCreate(uint8_t prio, uint8_t *err)
{
    e887be96:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887be98:	100008b7          	lui	a7,0x10000
    e887be9c:	e406                	sd	ra,8(sp)
    e887be9e:	12088893          	addi	a7,a7,288 # 10000120 <memcmp-0xd87ffee0>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887bea2:	00000073          	ecall
    void *result ;
    result = (void *)__syscall2((long)SYSCALL_KRNL(esKRNL_MutexCreate), (long)prio, (long)err);
    return result;
}
    e887bea6:	60a2                	ld	ra,8(sp)
    e887bea8:	0141                	addi	sp,sp,16
    e887beaa:	8082                	ret

00000000e887beac <esKRNL_MutexPend>:
    result = (unsigned long)__syscall3((long)SYSCALL_KRNL(esKRNL_MutexDel), (long)pevent, (long)opt, (long)err);
    return result;
}

void esKRNL_MutexPend(void *pevent, uint16_t timeout, uint8_t *err)
{
    e887beac:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887beae:	100008b7          	lui	a7,0x10000
    e887beb2:	e406                	sd	ra,8(sp)
    e887beb4:	12288893          	addi	a7,a7,290 # 10000122 <memcmp-0xd87ffede>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887beb8:	00000073          	ecall
    uint32_t result ;
    result = __syscall3((long)SYSCALL_KRNL(esKRNL_MutexPend), (long)pevent, (long)timeout, (long)err);
}
    e887bebc:	60a2                	ld	ra,8(sp)
    e887bebe:	0141                	addi	sp,sp,16
    e887bec0:	8082                	ret

00000000e887bec2 <esKRNL_MutexPost>:

uint8_t esKRNL_MutexPost(void *pevent)
{
    e887bec2:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bec4:	100008b7          	lui	a7,0x10000
    e887bec8:	e406                	sd	ra,8(sp)
    e887beca:	12388893          	addi	a7,a7,291 # 10000123 <memcmp-0xd87ffedd>
    __asm_syscall("r"(a7), "0"(a0));
    e887bece:	00000073          	ecall
    uint8_t result ;
    result = (uint8_t)__syscall1((long)SYSCALL_KRNL(esKRNL_MutexPost), (long)pevent);
    return result;
}
    e887bed2:	60a2                	ld	ra,8(sp)
    e887bed4:	0ff57513          	andi	a0,a0,255
    e887bed8:	0141                	addi	sp,sp,16
    e887beda:	8082                	ret

00000000e887bedc <esKRNL_QAccept>:

//os Queue element
unsigned long esKRNL_QAccept(void *pevent, uint8_t *err)
{
    e887bedc:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bede:	100008b7          	lui	a7,0x10000
    e887bee2:	e406                	sd	ra,8(sp)
    e887bee4:	12588893          	addi	a7,a7,293 # 10000125 <memcmp-0xd87ffedb>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887bee8:	00000073          	ecall
    unsigned long result ;
    result = (unsigned long)__syscall2((long)SYSCALL_KRNL(esKRNL_QAccept), (long)pevent, (long)err);
    return result;
}
    e887beec:	60a2                	ld	ra,8(sp)
    e887beee:	0141                	addi	sp,sp,16
    e887bef0:	8082                	ret

00000000e887bef2 <esKRNL_QCreate>:

void *esKRNL_QCreate(uint16_t size)
{
    e887bef2:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bef4:	100008b7          	lui	a7,0x10000
    e887bef8:	e406                	sd	ra,8(sp)
    e887befa:	12688893          	addi	a7,a7,294 # 10000126 <memcmp-0xd87ffeda>
    __asm_syscall("r"(a7), "0"(a0));
    e887befe:	00000073          	ecall
    void *result ;
    result = (void *)__syscall1((long)SYSCALL_KRNL(esKRNL_QCreate), (long)size);
    return result;
}
    e887bf02:	60a2                	ld	ra,8(sp)
    e887bf04:	0141                	addi	sp,sp,16
    e887bf06:	8082                	ret

00000000e887bf08 <esKRNL_QDel>:

void *esKRNL_QDel(void *pevent, uint8_t opt, uint8_t *err)
{
    e887bf08:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bf0a:	100008b7          	lui	a7,0x10000
    e887bf0e:	e406                	sd	ra,8(sp)
    e887bf10:	12788893          	addi	a7,a7,295 # 10000127 <memcmp-0xd87ffed9>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887bf14:	00000073          	ecall
    void *result ;
    result = (void *)__syscall3((long)SYSCALL_KRNL(esKRNL_QDel), (long)pevent, (long)opt, (long)err);
    return result;
}
    e887bf18:	60a2                	ld	ra,8(sp)
    e887bf1a:	0141                	addi	sp,sp,16
    e887bf1c:	8082                	ret

00000000e887bf1e <esKRNL_QPend>:
    result = (uint8_t)__syscall1((long)SYSCALL_KRNL(esKRNL_QFlush), (long)pevent);
    return result;
}

unsigned long esKRNL_QPend(void *pevent, uint16_t timeout, uint8_t *err)
{
    e887bf1e:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bf20:	100008b7          	lui	a7,0x10000
    e887bf24:	e406                	sd	ra,8(sp)
    e887bf26:	12988893          	addi	a7,a7,297 # 10000129 <memcmp-0xd87ffed7>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887bf2a:	00000073          	ecall
    unsigned long result ;
    result = (unsigned long)__syscall3((long)SYSCALL_KRNL(esKRNL_QPend), (long)pevent, (long)timeout, (long)err);
    return result;
}
    e887bf2e:	60a2                	ld	ra,8(sp)
    e887bf30:	0141                	addi	sp,sp,16
    e887bf32:	8082                	ret

00000000e887bf34 <esKRNL_QPost>:

uint8_t esKRNL_QPost(void *pevent, unsigned long msg)
{
    e887bf34:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bf36:	100008b7          	lui	a7,0x10000
    e887bf3a:	e406                	sd	ra,8(sp)
    e887bf3c:	12a88893          	addi	a7,a7,298 # 1000012a <memcmp-0xd87ffed6>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887bf40:	00000073          	ecall
    uint8_t result ;
    result = (uint8_t)__syscall2((long)SYSCALL_KRNL(esKRNL_QPost), (long)pevent, (long)msg);
    return result;
}
    e887bf44:	60a2                	ld	ra,8(sp)
    e887bf46:	0ff57513          	andi	a0,a0,255
    e887bf4a:	0141                	addi	sp,sp,16
    e887bf4c:	8082                	ret

00000000e887bf4e <esKRNL_SemCreate>:
    result = (uint16_t)__syscall1((long)SYSCALL_KRNL(esKRNL_SemAccept), (long)psem);
    return result;
}

void *esKRNL_SemCreate(uint16_t cnt)
{
    e887bf4e:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bf50:	100008b7          	lui	a7,0x10000
    e887bf54:	e406                	sd	ra,8(sp)
    e887bf56:	11288893          	addi	a7,a7,274 # 10000112 <memcmp-0xd87ffeee>
    __asm_syscall("r"(a7), "0"(a0));
    e887bf5a:	00000073          	ecall
    void *result ;
    result = (void *)(__syscall1((long)SYSCALL_KRNL(esKRNL_SemCreate), (long)cnt));
    return result;
}
    e887bf5e:	60a2                	ld	ra,8(sp)
    e887bf60:	0141                	addi	sp,sp,16
    e887bf62:	8082                	ret

00000000e887bf64 <esKRNL_SemDel>:

void *esKRNL_SemDel(void *sem, uint8_t opt, uint8_t *err)
{
    e887bf64:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bf66:	100008b7          	lui	a7,0x10000
    e887bf6a:	e406                	sd	ra,8(sp)
    e887bf6c:	11388893          	addi	a7,a7,275 # 10000113 <memcmp-0xd87ffeed>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887bf70:	00000073          	ecall
    void *result ;
    result = (void *)__syscall3((long)SYSCALL_KRNL(esKRNL_SemDel), (long)sem, (long)opt, (long)err);
    return result;
}
    e887bf74:	60a2                	ld	ra,8(sp)
    e887bf76:	0141                	addi	sp,sp,16
    e887bf78:	8082                	ret

00000000e887bf7a <esKRNL_SemPend>:

void esKRNL_SemPend(void *sem, uint16_t timeout, uint8_t *err)
{
    e887bf7a:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bf7c:	100008b7          	lui	a7,0x10000
    e887bf80:	e406                	sd	ra,8(sp)
    e887bf82:	11488893          	addi	a7,a7,276 # 10000114 <memcmp-0xd87ffeec>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887bf86:	00000073          	ecall
    int32_t result ;
    result = __syscall3((long)SYSCALL_KRNL(esKRNL_SemPend), (long)sem, (long)timeout, (long)err);
    return;
}
    e887bf8a:	60a2                	ld	ra,8(sp)
    e887bf8c:	0141                	addi	sp,sp,16
    e887bf8e:	8082                	ret

00000000e887bf90 <esKRNL_SemPost>:

uint8_t esKRNL_SemPost(void *sem)
{
    e887bf90:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bf92:	100008b7          	lui	a7,0x10000
    e887bf96:	e406                	sd	ra,8(sp)
    e887bf98:	11588893          	addi	a7,a7,277 # 10000115 <memcmp-0xd87ffeeb>
    __asm_syscall("r"(a7), "0"(a0));
    e887bf9c:	00000073          	ecall
    uint8_t result ;
    result = (uint8_t)__syscall1((long)SYSCALL_KRNL(esKRNL_SemPost), (long)sem);
    return result;
}
    e887bfa0:	60a2                	ld	ra,8(sp)
    e887bfa2:	0ff57513          	andi	a0,a0,255
    e887bfa6:	0141                	addi	sp,sp,16
    e887bfa8:	8082                	ret

00000000e887bfaa <esKRNL_TaskNameSet>:
    result = (uint8_t)__syscall1((long)SYSCALL_KRNL(esKRNL_TaskResume), (long)prio);
    return result;
}

long esKRNL_TaskNameSet(uint32_t prio, char *name)
{
    e887bfaa:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bfac:	100008b7          	lui	a7,0x10000
    e887bfb0:	e406                	sd	ra,8(sp)
    e887bfb2:	10788893          	addi	a7,a7,263 # 10000107 <memcmp-0xd87ffef9>
    register long a0 __asm__("a0") = a;
    e887bfb6:	7c05350b          	extu	a0,a0,31,0
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887bfba:	00000073          	ecall
    long result ;
    result = (long)__syscall2((long)SYSCALL_KRNL(esKRNL_TaskNameSet), (long)prio, (long)name);
    return result;
}
    e887bfbe:	60a2                	ld	ra,8(sp)
    e887bfc0:	0141                	addi	sp,sp,16
    e887bfc2:	8082                	ret

00000000e887bfc4 <esKRNL_TCreate>:
    result = (uint8_t)__syscall1((long)SYSCALL_KRNL(esKRNL_TaskSuspend), (long)prio);
    return result;
}

uint32_t esKRNL_TCreate(void (*entry)(void *p_arg), void *p_arg, uint32_t stksize, uint16_t id_priolevel)
{
    e887bfc4:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bfc6:	100008b7          	lui	a7,0x10000
    e887bfca:	e406                	sd	ra,8(sp)
    e887bfcc:	10088893          	addi	a7,a7,256 # 10000100 <memcmp-0xd87fff00>
    register long a2 __asm__("a2") = c;
    e887bfd0:	7c06360b          	extu	a2,a2,31,0
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3));
    e887bfd4:	00000073          	ecall
    uint32_t result ;
    result = (uint32_t) __syscall4((long)SYSCALL_KRNL(esKRNL_TCreate), (long)entry, (long)p_arg, (long)stksize, (long)id_priolevel);
    return result;
}
    e887bfd8:	60a2                	ld	ra,8(sp)
    e887bfda:	2501                	sext.w	a0,a0
    e887bfdc:	0141                	addi	sp,sp,16
    e887bfde:	8082                	ret

00000000e887bfe0 <esKRNL_TDel>:

int8_t esKRNL_TDel(uint32_t prio)
{
    e887bfe0:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887bfe2:	100008b7          	lui	a7,0x10000
    e887bfe6:	e406                	sd	ra,8(sp)
    e887bfe8:	10188893          	addi	a7,a7,257 # 10000101 <memcmp-0xd87ffeff>
    register long a0 __asm__("a0") = a;
    e887bfec:	7c05350b          	extu	a0,a0,31,0
    __asm_syscall("r"(a7), "0"(a0));
    e887bff0:	00000073          	ecall
    int8_t result ;
    result = (int8_t)__syscall1((long)SYSCALL_KRNL(esKRNL_TDel), (long)prio);
    return result;
}
    e887bff4:	60a2                	ld	ra,8(sp)
    e887bff6:	1c05250b          	ext	a0,a0,7,0
    e887bffa:	0141                	addi	sp,sp,16
    e887bffc:	8082                	ret

00000000e887bffe <esKRNL_Time>:
    return result;
}

//os Tick operation
uint32_t esKRNL_Time(void)
{
    e887bffe:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c000:	100008b7          	lui	a7,0x10000
    e887c004:	e406                	sd	ra,8(sp)
    e887c006:	14b88893          	addi	a7,a7,331 # 1000014b <memcmp-0xd87ffeb5>
    __asm_syscall("r"(a7));
    e887c00a:	00000073          	ecall
    uint32_t result ;
    result = (uint32_t)__syscall0((long)SYSCALL_KRNL(esKRNL_Time));
    return result;
}
    e887c00e:	60a2                	ld	ra,8(sp)
    e887c010:	2501                	sext.w	a0,a0
    e887c012:	0141                	addi	sp,sp,16
    e887c014:	8082                	ret

00000000e887c016 <esKRNL_TimeDly>:

void esKRNL_TimeDly(uint16_t ticks)
{
    e887c016:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c018:	100008b7          	lui	a7,0x10000
    e887c01c:	e406                	sd	ra,8(sp)
    e887c01e:	10c88893          	addi	a7,a7,268 # 1000010c <memcmp-0xd87ffef4>
    __asm_syscall("r"(a7), "0"(a0));
    e887c022:	00000073          	ecall
    int8_t result ;
    result = __syscall1((long)SYSCALL_KRNL(esKRNL_TimeDly), (long)ticks);
    return;
}
    e887c026:	60a2                	ld	ra,8(sp)
    e887c028:	0141                	addi	sp,sp,16
    e887c02a:	8082                	ret

00000000e887c02c <esKRNL_TimeGet>:
    result = (uint8_t)__syscall1((long)SYSCALL_KRNL(esKRNL_TimeDlyResume), (long)prio_ex);
    return result;
}

uint32_t esKRNL_TimeGet(void)
{
    e887c02c:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c02e:	100008b7          	lui	a7,0x10000
    e887c032:	e406                	sd	ra,8(sp)
    e887c034:	10f88893          	addi	a7,a7,271 # 1000010f <memcmp-0xd87ffef1>
    __asm_syscall("r"(a7));
    e887c038:	00000073          	ecall
    uint32_t result ;
    result = (uint32_t)__syscall0((long)SYSCALL_KRNL(esKRNL_TimeGet));
    return result;
}
    e887c03c:	60a2                	ld	ra,8(sp)
    e887c03e:	2501                	sext.w	a0,a0
    e887c040:	0141                	addi	sp,sp,16
    e887c042:	8082                	ret

00000000e887c044 <esKSRV_Random>:
    result = (uint32_t)__syscall0((long)SYSCALL_KSRV(esKSRV_PowerOff));
    return;
}

uint32_t esKSRV_Random(uint32_t max)
{
    e887c044:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c046:	100018b7          	lui	a7,0x10001
    e887c04a:	e406                	sd	ra,8(sp)
    e887c04c:	f0688893          	addi	a7,a7,-250 # 10000f06 <memcmp-0xd87ff0fa>
    register long a0 __asm__("a0") = a;
    e887c050:	7c05350b          	extu	a0,a0,31,0
    __asm_syscall("r"(a7), "0"(a0));
    e887c054:	00000073          	ecall
    uint32_t result ;
    result = (uint32_t)__syscall1((long)SYSCALL_KSRV(esKSRV_Random), (long)max);
    return result;
}
    e887c058:	60a2                	ld	ra,8(sp)
    e887c05a:	2501                	sext.w	a0,a0
    e887c05c:	0141                	addi	sp,sp,16
    e887c05e:	8082                	ret

00000000e887c060 <esMEMS_Malloc>:
    result = (int32_t)__syscall0((long)SYSCALL_MEMS(esMEMS_Info));
    return result;
}

void *esMEMS_Malloc(void *heap, uint32_t size)
{
    e887c060:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c062:	100008b7          	lui	a7,0x10000
    e887c066:	e406                	sd	ra,8(sp)
    e887c068:	20788893          	addi	a7,a7,519 # 10000207 <memcmp-0xd87ffdf9>
    register long a1 __asm__("a1") = b;
    e887c06c:	7c05b58b          	extu	a1,a1,31,0
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887c070:	00000073          	ecall
    void *result ;
    result = (void *)__syscall2((long)SYSCALL_MEMS(esMEMS_Malloc), (long)heap, (long)size);
    return result;
}
    e887c074:	60a2                	ld	ra,8(sp)
    e887c076:	0141                	addi	sp,sp,16
    e887c078:	8082                	ret

00000000e887c07a <esMEMS_Mfree>:

void esMEMS_Mfree(void *heap, void *ptr)
{
    e887c07a:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c07c:	100008b7          	lui	a7,0x10000
    e887c080:	e406                	sd	ra,8(sp)
    e887c082:	20888893          	addi	a7,a7,520 # 10000208 <memcmp-0xd87ffdf8>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887c086:	00000073          	ecall
    int32_t result ;
    result = (int32_t)__syscall2((long)SYSCALL_MEMS(esMEMS_Mfree), (long)heap, (long)ptr);
}
    e887c08a:	60a2                	ld	ra,8(sp)
    e887c08c:	0141                	addi	sp,sp,16
    e887c08e:	8082                	ret

00000000e887c090 <esMEMS_Realloc>:
    uint32_t result ;
    result = (uint32_t)__syscall2((long)SYSCALL_MEMS(esMEMS_Pfree), (long)mblk, (long)npage);
}

void *esMEMS_Realloc(void *heap, void *f, uint32_t size)
{
    e887c090:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c092:	100008b7          	lui	a7,0x10000
    e887c096:	e406                	sd	ra,8(sp)
    e887c098:	20988893          	addi	a7,a7,521 # 10000209 <memcmp-0xd87ffdf7>
    register long a2 __asm__("a2") = c;
    e887c09c:	7c06360b          	extu	a2,a2,31,0
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887c0a0:	00000073          	ecall
    void *result ;
    result = (void *)__syscall3((long)SYSCALL_MEMS(esMEMS_Realloc), (long)heap, (long)f, (long)size);
    return result;
}
    e887c0a4:	60a2                	ld	ra,8(sp)
    e887c0a6:	0141                	addi	sp,sp,16
    e887c0a8:	8082                	ret

00000000e887c0aa <esSIOS_putstr>:
{
    __syscall2((long)SYSCALL_SIOS(esSIOS_putarg), (long)arg, (long)format);
}

void esSIOS_putstr(const char *str)
{
    e887c0aa:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c0ac:	100008b7          	lui	a7,0x10000
    e887c0b0:	e406                	sd	ra,8(sp)
    e887c0b2:	088d                	addi	a7,a7,3
    __asm_syscall("r"(a7), "0"(a0));
    e887c0b4:	00000073          	ecall
    __syscall1((long)SYSCALL_SIOS(esSIOS_putstr), (long)str);
}
    e887c0b8:	60a2                	ld	ra,8(sp)
    e887c0ba:	0141                	addi	sp,sp,16
    e887c0bc:	8082                	ret

00000000e887c0be <esTIME_GetDate>:
    result = (int32_t)__syscall1((long)SYSCALL_TIME(esTIME_ContiCntr), (long)hCntr);
    return result;
}

int32_t esTIME_GetDate(__awos_date_t *date)
{
    e887c0be:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c0c0:	100018b7          	lui	a7,0x10001
    e887c0c4:	e406                	sd	ra,8(sp)
    e887c0c6:	90788893          	addi	a7,a7,-1785 # 10000907 <memcmp-0xd87ff6f9>
    __asm_syscall("r"(a7), "0"(a0));
    e887c0ca:	00000073          	ecall
    int32_t result ;
    result = (int32_t)__syscall1((long)SYSCALL_TIME(esTIME_GetDate), (long)date);
    return result;
}
    e887c0ce:	60a2                	ld	ra,8(sp)
    e887c0d0:	2501                	sext.w	a0,a0
    e887c0d2:	0141                	addi	sp,sp,16
    e887c0d4:	8082                	ret

00000000e887c0d6 <esTIME_GetTime>:

int32_t esTIME_GetTime(__awos_time_t *time)
{
    e887c0d6:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c0d8:	100018b7          	lui	a7,0x10001
    e887c0dc:	e406                	sd	ra,8(sp)
    e887c0de:	90588893          	addi	a7,a7,-1787 # 10000905 <memcmp-0xd87ff6fb>
    __asm_syscall("r"(a7), "0"(a0));
    e887c0e2:	00000073          	ecall
    int32_t result ;
    result = (int32_t)__syscall1((long)SYSCALL_TIME(esTIME_GetTime), (long)time);
    return result;
}
    e887c0e6:	60a2                	ld	ra,8(sp)
    e887c0e8:	2501                	sext.w	a0,a0
    e887c0ea:	0141                	addi	sp,sp,16
    e887c0ec:	8082                	ret

00000000e887c0ee <backtrace>:
}
#endif

#ifdef CONFIG_DEBUG_BACKTRACE
int backtrace(char *name, void *output[], int size, int offset, print_function p)
{
    e887c0ee:	1141                	addi	sp,sp,-16
}

static inline long __syscall5(long n, long a, long b, long c, long d, long e)
{
    register long a7 __asm__("a7") = n;
    e887c0f0:	100008b7          	lui	a7,0x10000
    e887c0f4:	e406                	sd	ra,8(sp)
    e887c0f6:	15188893          	addi	a7,a7,337 # 10000151 <memcmp-0xd87ffeaf>
    register long a0 __asm__("a0") = a;
    register long a1 __asm__("a1") = b;
    register long a2 __asm__("a2") = c;
    register long a3 __asm__("a3") = d;
    register long a4 __asm__("a4") = e;
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4));
    e887c0fa:	00000073          	ecall
    int32_t result;
    result = (int32_t)__syscall5((long)SYSCALL_KRNL(backtrace), (unsigned long)name, (unsigned long)output,
                                 (unsigned long)size, (unsigned long)offset, (unsigned long)p);
    return result;
}
    e887c0fe:	60a2                	ld	ra,8(sp)
    e887c100:	2501                	sext.w	a0,a0
    e887c102:	0141                	addi	sp,sp,16
    e887c104:	8082                	ret

00000000e887c106 <_close_r>:
#include <kapi.h>
#include <syscall.h>
#include <aw_dirent.h>

int _close_r(struct _reent *ptr, int fd)
{
    e887c106:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c108:	100028b7          	lui	a7,0x10002
    e887c10c:	e406                	sd	ra,8(sp)
    e887c10e:	a0088893          	addi	a7,a7,-1536 # 10001a00 <memcmp-0xd87fe600>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887c112:	00000073          	ecall
    int  result = 0;
    result = (int)__syscall2((long)SYSCALL_NLIBOPS(_close_r), (unsigned long)ptr, (long)fd);
    return result;
}
    e887c116:	60a2                	ld	ra,8(sp)
    e887c118:	2501                	sext.w	a0,a0
    e887c11a:	0141                	addi	sp,sp,16
    e887c11c:	8082                	ret

00000000e887c11e <_fstat_r>:
    result = (int)__syscall3((long)SYSCALL_NLIBOPS(fioctrl), (long)fp, (long)Cmd, (long)args);
    return result;
}

int _fstat_r(struct _reent *ptr, int fd, struct stat *pstat)
{
    e887c11e:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c120:	100028b7          	lui	a7,0x10002
    e887c124:	e406                	sd	ra,8(sp)
    e887c126:	a1c88893          	addi	a7,a7,-1508 # 10001a1c <memcmp-0xd87fe5e4>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887c12a:	00000073          	ecall
    int result;
    result = (int)__syscall3((long)SYSCALL_NLIBOPS(_fstat_r), (unsigned long)ptr, (unsigned long)fd, (unsigned long)pstat);
    return result;
}
    e887c12e:	60a2                	ld	ra,8(sp)
    e887c130:	2501                	sext.w	a0,a0
    e887c132:	0141                	addi	sp,sp,16
    e887c134:	8082                	ret

00000000e887c136 <_lseek_r>:

_off_t _lseek_r(struct _reent *ptr, int fd, _off_t pos, int whence)
{
    e887c136:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c138:	100028b7          	lui	a7,0x10002
    e887c13c:	e406                	sd	ra,8(sp)
    e887c13e:	a0488893          	addi	a7,a7,-1532 # 10001a04 <memcmp-0xd87fe5fc>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3));
    e887c142:	00000073          	ecall
    int result;
    result = (int)__syscall4((long)SYSCALL_NLIBOPS(_lseek_r), (unsigned long)ptr, (unsigned long)fd, (unsigned long)pos, (unsigned long)whence);
    return result;
}
    e887c146:	60a2                	ld	ra,8(sp)
    e887c148:	2501                	sext.w	a0,a0
    e887c14a:	0141                	addi	sp,sp,16
    e887c14c:	8082                	ret

00000000e887c14e <_open_r>:
    result = (int)__syscall3((long)SYSCALL_NLIBOPS(_mkdir_r), (unsigned long)ptr, (unsigned long)name, (unsigned long)mode);
    return result;
}

int _open_r(struct _reent *ptr, const char *file, int flags, int mode)
{
    e887c14e:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c150:	100028b7          	lui	a7,0x10002
    e887c154:	e406                	sd	ra,8(sp)
    e887c156:	a0188893          	addi	a7,a7,-1535 # 10001a01 <memcmp-0xd87fe5ff>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3));
    e887c15a:	00000073          	ecall
    int result;
    result = (int)__syscall4((long)SYSCALL_NLIBOPS(_open_r), (unsigned long)ptr, (unsigned long)file, (unsigned long)flags, (unsigned long)mode);
    return result;
}
    e887c15e:	60a2                	ld	ra,8(sp)
    e887c160:	2501                	sext.w	a0,a0
    e887c162:	0141                	addi	sp,sp,16
    e887c164:	8082                	ret

00000000e887c166 <_read_r>:
    result = (int)__syscall2((long)SYSCALL_NLIBOPS(_unlink_r), (unsigned long)ptr, (unsigned long)file);
    return result;
}

_ssize_t _read_r(struct _reent *ptr, int fd, void *buf, size_t nbytes)
{
    e887c166:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c168:	100028b7          	lui	a7,0x10002
    e887c16c:	e406                	sd	ra,8(sp)
    e887c16e:	a0288893          	addi	a7,a7,-1534 # 10001a02 <memcmp-0xd87fe5fe>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3));
    e887c172:	00000073          	ecall
    _ssize_t result;
    result = (_ssize_t)__syscall4((long)SYSCALL_NLIBOPS(_read_r), (unsigned long)ptr, (unsigned long)fd, (unsigned long)buf, (unsigned long)nbytes);
    return result;
}
    e887c176:	60a2                	ld	ra,8(sp)
    e887c178:	0141                	addi	sp,sp,16
    e887c17a:	8082                	ret

00000000e887c17c <_write_r>:

_ssize_t _write_r(struct _reent *reent, int fd, const void *buf, size_t nbytes)
{
    e887c17c:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c17e:	100028b7          	lui	a7,0x10002
    e887c182:	e406                	sd	ra,8(sp)
    e887c184:	a0388893          	addi	a7,a7,-1533 # 10001a03 <memcmp-0xd87fe5fd>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3));
    e887c188:	00000073          	ecall
    _ssize_t result;
    result = (_ssize_t)__syscall4((long)SYSCALL_NLIBOPS(_write_r), (unsigned long)reent, (unsigned long)fd, (unsigned long)buf, (unsigned long)nbytes);
    return result;
}
    e887c18c:	60a2                	ld	ra,8(sp)
    e887c18e:	0141                	addi	sp,sp,16
    e887c190:	8082                	ret

00000000e887c192 <_malloc_r>:
    result = (int)__syscall2((long)SYSCALL_NLIBOPS(settimeofday), (unsigned long)tm_val, (unsigned long)tz);
    return result;
}

void *_malloc_r(struct _reent *ptr, size_t size)
{
    e887c192:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c194:	100028b7          	lui	a7,0x10002
    e887c198:	e406                	sd	ra,8(sp)
    e887c19a:	a0b88893          	addi	a7,a7,-1525 # 10001a0b <memcmp-0xd87fe5f5>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887c19e:	00000073          	ecall
    void *result;
    result = (void *)__syscall2((long)SYSCALL_NLIBOPS(_malloc_r), (unsigned long)ptr, (unsigned long)size);
    return result;
}
    e887c1a2:	60a2                	ld	ra,8(sp)
    e887c1a4:	0141                	addi	sp,sp,16
    e887c1a6:	8082                	ret

00000000e887c1a8 <_realloc_r>:

void *_realloc_r(struct _reent *ptr, void *old, size_t newlen)
{
    e887c1a8:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c1aa:	100028b7          	lui	a7,0x10002
    e887c1ae:	e406                	sd	ra,8(sp)
    e887c1b0:	a0c88893          	addi	a7,a7,-1524 # 10001a0c <memcmp-0xd87fe5f4>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887c1b4:	00000073          	ecall
    void *result;
    result = (void *)__syscall3((long)SYSCALL_NLIBOPS(_realloc_r), (unsigned long)ptr, (unsigned long)old, (unsigned long)newlen);
    return result;
}
    e887c1b8:	60a2                	ld	ra,8(sp)
    e887c1ba:	0141                	addi	sp,sp,16
    e887c1bc:	8082                	ret

00000000e887c1be <_calloc_r>:

void *_calloc_r(struct _reent *ptr, size_t size, size_t len)
{
    e887c1be:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c1c0:	100028b7          	lui	a7,0x10002
    e887c1c4:	e406                	sd	ra,8(sp)
    e887c1c6:	a0d88893          	addi	a7,a7,-1523 # 10001a0d <memcmp-0xd87fe5f3>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887c1ca:	00000073          	ecall
    void *result;
    result = (void *)__syscall3((long)SYSCALL_NLIBOPS(_calloc_r), (unsigned long)ptr, (unsigned long)size, (unsigned long)len);
    return result;
}
    e887c1ce:	60a2                	ld	ra,8(sp)
    e887c1d0:	0141                	addi	sp,sp,16
    e887c1d2:	8082                	ret

00000000e887c1d4 <_free_r>:

void _free_r(struct _reent *ptr, void *addr)
{
    e887c1d4:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c1d6:	100028b7          	lui	a7,0x10002
    e887c1da:	e406                	sd	ra,8(sp)
    e887c1dc:	a0e88893          	addi	a7,a7,-1522 # 10001a0e <memcmp-0xd87fe5f2>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887c1e0:	00000073          	ecall
    void *result;
    result = (void *)__syscall2((long)SYSCALL_NLIBOPS(_free_r), (unsigned long)ptr, (unsigned long)addr);
}
    e887c1e4:	60a2                	ld	ra,8(sp)
    e887c1e6:	0141                	addi	sp,sp,16
    e887c1e8:	8082                	ret

00000000e887c1ea <_isatty_r>:

void _isatty_r(struct _reent *ptr, void *addr)
{
    e887c1ea:	1141                	addi	sp,sp,-16
    register long a7 __asm__("a7") = n;
    e887c1ec:	100028b7          	lui	a7,0x10002
    e887c1f0:	e406                	sd	ra,8(sp)
    e887c1f2:	a0f88893          	addi	a7,a7,-1521 # 10001a0f <memcmp-0xd87fe5f1>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1));
    e887c1f6:	00000073          	ecall
    void *result;
    result = (void *)__syscall2((long)SYSCALL_NLIBOPS(_isatty_r), (unsigned long)ptr, (unsigned long)addr);
}
    e887c1fa:	60a2                	ld	ra,8(sp)
    e887c1fc:	0141                	addi	sp,sp,16
    e887c1fe:	8082                	ret

00000000e887c200 <ioctl>:
    result = (int)__syscall2((long)SYSCALL_NLIBOPS(ftruncate), (long)fd, (long)length);
    return result;
}

int ioctl(int fildes, int cmd, ...)
{
    e887c200:	715d                	addi	sp,sp,-80
    e887c202:	fef1570b          	sdd	a4,a5,(sp),3,4
    e887c206:	e4c6                	sd	a7,72(sp)
    int result = 0;
    void *arg;
    va_list ap;

    va_start(ap, cmd);
    e887c208:	101c                	addi	a5,sp,32
    register long a7 __asm__("a7") = n;
    e887c20a:	100028b7          	lui	a7,0x10002
{
    e887c20e:	ec06                	sd	ra,24(sp)
    e887c210:	fcd1560b          	sdd	a2,a3,(sp),2,4
    e887c214:	e0c2                	sd	a6,64(sp)
    va_start(ap, cmd);
    e887c216:	e43e                	sd	a5,8(sp)
    e887c218:	a1a88893          	addi	a7,a7,-1510 # 10001a1a <memcmp-0xd87fe5e6>
    __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2));
    e887c21c:	00000073          	ecall
    va_end(ap);

    result = (int)__syscall3((long)SYSCALL_NLIBOPS(ioctl), (long)fildes, (long)cmd, (long)arg);

    return result;
}
    e887c220:	60e2                	ld	ra,24(sp)
    e887c222:	2501                	sext.w	a0,a0
    e887c224:	6161                	addi	sp,sp,80
    e887c226:	8082                	ret

00000000e887c228 <eLIBs_vsnprintf>:
* Returns    : the number of bytes stored in buffer, not counting the terminating null character.
*********************************************************************************************************
*/
int eLIBs_vsnprintf(char *buffer, size_t size, const char *format, va_list arg)
{
    return SLIB_vsnprintf(buffer, size, format, arg);
    e887c228:	00e877b7          	lui	a5,0xe87
    e887c22c:	07a2                	slli	a5,a5,0x8
    e887c22e:	0c07b303          	ld	t1,192(a5) # e870c0 <memcmp-0xe7978f40>
    e887c232:	8302                	jr	t1

00000000e887c234 <eLIBs_vscnprintf>:
*
* Returns    : the number of bytes stored in buffer, not counting the terminating null character.
*********************************************************************************************************
*/
int eLIBs_vscnprintf(char *buffer, size_t size, const char *format, va_list args)
{
    e887c234:	1141                	addi	sp,sp,-16
    e887c236:	e022                	sd	s0,0(sp)
    e887c238:	e406                	sd	ra,8(sp)
    e887c23a:	842e                	mv	s0,a1
    int i;
    i = eLIBs_vsnprintf(buffer, size, format, args);
    e887c23c:	fedff0ef          	jal	ra,e887c228 <eLIBs_vsnprintf>
    return (i >= size) ? (size - 1) : i;
    e887c240:	00856463          	bltu	a0,s0,e887c248 <eLIBs_vscnprintf+0x14>
    e887c244:	fff4051b          	addiw	a0,s0,-1
}
    e887c248:	60a2                	ld	ra,8(sp)
    e887c24a:	6402                	ld	s0,0(sp)
    e887c24c:	0141                	addi	sp,sp,16
    e887c24e:	8082                	ret

00000000e887c250 <eLIBs_snprintf>:
*
* Returns    : the number of bytes stored in buffer, not counting the terminating null character.
*********************************************************************************************************
*/
int eLIBs_snprintf(char *buffer, size_t size, const char *format, ...)
{
    e887c250:	715d                	addi	sp,sp,-80
    e887c252:	f436                	sd	a3,40(sp)
    va_list args;
    int i;
    va_start(args, format);
    e887c254:	1034                	addi	a3,sp,40
{
    e887c256:	ec06                	sd	ra,24(sp)
    e887c258:	fef1570b          	sdd	a4,a5,(sp),3,4
    e887c25c:	e0c2                	sd	a6,64(sp)
    e887c25e:	e4c6                	sd	a7,72(sp)
    va_start(args, format);
    e887c260:	e436                	sd	a3,8(sp)
    i = eLIBs_vsnprintf(buffer, size, format, args);
    e887c262:	fc7ff0ef          	jal	ra,e887c228 <eLIBs_vsnprintf>
    va_end(args);
    return i;
}
    e887c266:	60e2                	ld	ra,24(sp)
    e887c268:	6161                	addi	sp,sp,80
    e887c26a:	8082                	ret

00000000e887c26c <eLIBs_remove>:
* Returns: zero if the operation succeeds, nonzero if it fails.
**********************************************************************************************************************
*/
int eLIBs_remove(const char *filename)
{
    return esFSYS_remove(filename);
    e887c26c:	bfdff06f          	j	e887be68 <esFSYS_remove>

00000000e887c270 <eLIBs_fopen>:
*           operation fails, fopen returns a null pointer.
**********************************************************************************************************************
*/
ES_FILE *eLIBs_fopen(const char *filename, const char *mode)
{
    return (ES_FILE *)esFSYS_fopen(filename, mode);
    e887c270:	b8bff06f          	j	e887bdfa <esFSYS_fopen>

00000000e887c274 <eLIBs_fclose>:
*          errors were detected or if the stream was already closed.
**********************************************************************************************************************
*/
int eLIBs_fclose(ES_FILE *stream)
{
    return esFSYS_fclose((__hdle)stream);
    e887c274:	b6fff06f          	j	e887bde2 <esFSYS_fclose>

00000000e887c278 <eLIBs_fread>:
**********************************************************************************************************************
*/

__size eLIBs_fread(void *ptr, __size size, __size nmemb, ES_FILE *stream)
{
    return esFSYS_fread(ptr, size, nmemb, (__hdle)stream);
    e887c278:	b99ff06f          	j	e887be10 <esFSYS_fread>

00000000e887c27c <eLIBs_fwrite>:
*          than nmemb only if a write error is encountered.
**********************************************************************************************************************
*/
__size eLIBs_fwrite(const void *ptr, __size size, __size nmemb, ES_FILE *stream)
{
    return esFSYS_fwrite(ptr, size, nmemb, (__hdle)stream);
    e887c27c:	bb5ff06f          	j	e887be30 <esFSYS_fwrite>

00000000e887c280 <eLIBs_mkdir>:
* Returns: zero if the operation succeeds, nonzero if it fails.
**********************************************************************************************************************
*/
int eLIBs_mkdir(const char *dirname)
{
    return esFSYS_mkdir(dirname);
    e887c280:	bd1ff06f          	j	e887be50 <esFSYS_mkdir>

00000000e887c284 <eLIBs_vprintf>:
 *}
 */

int printk(const char *fmt, ...) __attribute__((alias("eLIBs_printf")));
int eLIBs_vprintf(const char *format, va_list args)
{
    e887c284:	7179                	addi	sp,sp,-48
    e887c286:	ec22                	sd	s0,24(sp)
     */
    int log_level = 0;
    char *p;
    static char buffer[1024];
    int         rc;
    memset(buffer, 0x00, 1024);
    e887c288:	00068417          	auipc	s0,0x68
    e887c28c:	da040413          	addi	s0,s0,-608 # e88e4028 <buffer.6571>
{
    e887c290:	f026                	sd	s1,32(sp)
    e887c292:	e42e                	sd	a1,8(sp)
    e887c294:	84aa                	mv	s1,a0
    memset(buffer, 0x00, 1024);
    e887c296:	40000613          	li	a2,1024
    e887c29a:	4581                	li	a1,0
    e887c29c:	8522                	mv	a0,s0
{
    e887c29e:	f406                	sd	ra,40(sp)
    memset(buffer, 0x00, 1024);
    e887c2a0:	e99830ef          	jal	ra,e8800138 <memset>
    /* construct print format buffer */
    rc = eLIBs_vscnprintf(buffer, 1024, format, args);
    e887c2a4:	66a2                	ld	a3,8(sp)
    e887c2a6:	8626                	mv	a2,s1
    e887c2a8:	40000593          	li	a1,1024
    e887c2ac:	8522                	mv	a0,s0
    e887c2ae:	f87ff0ef          	jal	ra,e887c234 <eLIBs_vscnprintf>
    e887c2b2:	84aa                	mv	s1,a0
        {
            esSIOS_putstr(&buffer[3]);
        }
    }
#else
    esSIOS_putstr(buffer);
    e887c2b4:	8522                	mv	a0,s0
    e887c2b6:	df5ff0ef          	jal	ra,e887c0aa <esSIOS_putstr>
#endif

    return rc;
}
    e887c2ba:	6462                	ld	s0,24(sp)
    e887c2bc:	70a2                	ld	ra,40(sp)
    e887c2be:	8526                	mv	a0,s1
    e887c2c0:	7482                	ld	s1,32(sp)
    e887c2c2:	6145                	addi	sp,sp,48
    e887c2c4:	8082                	ret

00000000e887c2c6 <eLIBs_printf>:
{
    e887c2c6:	711d                	addi	sp,sp,-96
    e887c2c8:	f42e                	sd	a1,40(sp)
    va_start(args, fmt);
    e887c2ca:	102c                	addi	a1,sp,40
{
    e887c2cc:	ec06                	sd	ra,24(sp)
    e887c2ce:	fed1560b          	sdd	a2,a3,(sp),3,4
    e887c2d2:	e0ba                	sd	a4,64(sp)
    e887c2d4:	e4be                	sd	a5,72(sp)
    e887c2d6:	e8c2                	sd	a6,80(sp)
    e887c2d8:	ecc6                	sd	a7,88(sp)
    va_start(args, fmt);
    e887c2da:	e42e                	sd	a1,8(sp)
    rc = eLIBs_vprintf(fmt, args);
    e887c2dc:	fa9ff0ef          	jal	ra,e887c284 <eLIBs_vprintf>
}
    e887c2e0:	60e2                	ld	ra,24(sp)
    e887c2e2:	6125                	addi	sp,sp,96
    e887c2e4:	8082                	ret

00000000e887c2e6 <eLIBs_atoi>:
  0           - In case of any problem or if the converted value is zero.
  !=0         - Integer value of the converted string.
*/
int eLIBs_atoi(const char *s)
{
    return SLIB_atoi(s);
    e887c2e6:	00e877b7          	lui	a5,0xe87
    e887c2ea:	07a2                	slli	a5,a5,0x8
    e887c2ec:	0187b303          	ld	t1,24(a5) # e87018 <memcmp-0xe7978fe8>
    e887c2f0:	8302                	jr	t1

00000000e887c2f2 <eLIBs_ramdom>:
*
**********************************************************************************************************************
*/
int eLIBs_ramdom(int max)
{
    return esKSRV_Random(max);
    e887c2f2:	d53ff06f          	j	e887c044 <esKSRV_Random>

00000000e887c2f6 <eLIBs_malloc>:
*
**********************************************************************************************************************
*/
void *eLIBs_malloc(size_t size)
{
    return esMEMS_Malloc(0, size);
    e887c2f6:	0005059b          	sext.w	a1,a0
    e887c2fa:	4501                	li	a0,0
    e887c2fc:	d65ff06f          	j	e887c060 <esMEMS_Malloc>

00000000e887c300 <eLIBs_free>:
* Returns    : none.
*
**********************************************************************************************************************
*/
void eLIBs_free(void *ptr)
{
    e887c300:	85aa                	mv	a1,a0
    /* if ptr is NULL, the pointer is ignored and immediately returns. */
    if (NULL == ptr)
    e887c302:	c501                	beqz	a0,e887c30a <eLIBs_free+0xa>
    {
        return ;
    }

    esMEMS_Mfree(0, ptr);
    e887c304:	4501                	li	a0,0
    e887c306:	d75ff06f          	j	e887c07a <esMEMS_Mfree>
}
    e887c30a:	8082                	ret

00000000e887c30c <eLIBs_realloc>:
*
**********************************************************************************************************************
*/
void *eLIBs_realloc(void *ptr, size_t size)
{
    return esMEMS_Realloc(0, ptr, size);
    e887c30c:	0005861b          	sext.w	a2,a1
    e887c310:	85aa                	mv	a1,a0
    e887c312:	4501                	li	a0,0
    e887c314:	d7dff06f          	j	e887c090 <esMEMS_Realloc>

00000000e887c318 <eLIBs_strlen>:
#include <typedef.h>
#include <mod_slib.h>

__size eLIBs_strlen(const char  *pstr)
{
    return SLIB_strlen(pstr);
    e887c318:	00e877b7          	lui	a5,0xe87
    e887c31c:	07a2                	slli	a5,a5,0x8
    e887c31e:	0387b303          	ld	t1,56(a5) # e87038 <memcmp-0xe7978fc8>
    e887c322:	8302                	jr	t1

00000000e887c324 <eLIBs_strcpy>:
    return SLIB_strnlen(str, maxlen);
}

char *eLIBs_strcpy(char *pdest, const char *psrc)
{
    return SLIB_strcpy(pdest, psrc);
    e887c324:	00e877b7          	lui	a5,0xe87
    e887c328:	07a2                	slli	a5,a5,0x8
    e887c32a:	0407b303          	ld	t1,64(a5) # e87040 <memcmp-0xe7978fc0>
    e887c32e:	8302                	jr	t1

00000000e887c330 <eLIBs_strncpy>:
}

char *eLIBs_strncpy(char *pdest, const char *psrc, __size len_max)
{
    return SLIB_strncpy(pdest, psrc, len_max);
    e887c330:	00e877b7          	lui	a5,0xe87
    e887c334:	07a2                	slli	a5,a5,0x8
    e887c336:	0487b303          	ld	t1,72(a5) # e87048 <memcmp-0xe7978fb8>
    e887c33a:	8302                	jr	t1

00000000e887c33c <eLIBs_strcmp>:
    return SLIB_strncat(pdest, pstr_cat, len_max);
}

int eLIBs_strcmp(const char *p1_str, const char *p2_str)
{
    return SLIB_strcmp(p1_str, p2_str);
    e887c33c:	00e877b7          	lui	a5,0xe87
    e887c340:	07a2                	slli	a5,a5,0x8
    e887c342:	0607b303          	ld	t1,96(a5) # e87060 <memcmp-0xe7978fa0>
    e887c346:	8302                	jr	t1

00000000e887c348 <eLIBs_stricmp>:
}

int eLIBs_stricmp(const char *p1_str, const char *p2_str)
{
    return SLIB_stricmp(p1_str, p2_str);
    e887c348:	00e877b7          	lui	a5,0xe87
    e887c34c:	07a2                	slli	a5,a5,0x8
    e887c34e:	0687b303          	ld	t1,104(a5) # e87068 <memcmp-0xe7978f98>
    e887c352:	8302                	jr	t1

00000000e887c354 <eLIBs_strncmp>:
}

int eLIBs_strncmp(const char *p1_str, const char *p2_str, size_t len_max)
{
    return SLIB_strncmp(p1_str, p2_str, len_max);
    e887c354:	00e877b7          	lui	a5,0xe87
    e887c358:	07a2                	slli	a5,a5,0x8
    e887c35a:	0707b303          	ld	t1,112(a5) # e87070 <memcmp-0xe7978f90>
    e887c35e:	8302                	jr	t1

00000000e887c360 <eLIBs_strnicmp>:
}

int eLIBs_strnicmp(const char *p1_str, const char *p2_str, size_t len_max)
{
    return SLIB_strnicmp(p1_str, p2_str, len_max);
    e887c360:	00e877b7          	lui	a5,0xe87
    e887c364:	07a2                	slli	a5,a5,0x8
    e887c366:	0787b303          	ld	t1,120(a5) # e87078 <memcmp-0xe7978f88>
    e887c36a:	8302                	jr	t1

00000000e887c36c <eLIBs_strchr>:
}

char *eLIBs_strchr(char *pstr, char srch_char)
{
    return SLIB_strchr(pstr, srch_char);
    e887c36c:	00e877b7          	lui	a5,0xe87
    e887c370:	07a2                	slli	a5,a5,0x8
    e887c372:	0807b303          	ld	t1,128(a5) # e87080 <memcmp-0xe7978f80>
    e887c376:	8302                	jr	t1

00000000e887c378 <eLIBs_strchrlast>:
    return SLIB_strnchr(pstr, len_max, srch_char);
}

char *eLIBs_strchrlast(char *pstr, char srch_char)
{
    return SLIB_strchrlast(pstr, srch_char);
    e887c378:	00e877b7          	lui	a5,0xe87
    e887c37c:	07a2                	slli	a5,a5,0x8
    e887c37e:	0907b303          	ld	t1,144(a5) # e87090 <memcmp-0xe7978f70>
    e887c382:	8302                	jr	t1

00000000e887c384 <eLIBs_memclr>:
    return SLIB_strstr(pstr, psrch_str);
}

void eLIBs_memclr(void *pmem, size_t size)
{
    SLIB_memset((void *)pmem, (__u8)0, (size_t)size);
    e887c384:	00e877b7          	lui	a5,0xe87
    e887c388:	07a2                	slli	a5,a5,0x8
    e887c38a:	0a87b303          	ld	t1,168(a5) # e870a8 <memcmp-0xe7978f58>
    e887c38e:	862e                	mv	a2,a1
    e887c390:	4581                	li	a1,0
    e887c392:	8302                	jr	t1

00000000e887c394 <eLIBs_memset>:
}

void eLIBs_memset(void *pmem, __u8 data_val, size_t size)
{
    SLIB_memset(pmem, data_val, size);
    e887c394:	00e877b7          	lui	a5,0xe87
    e887c398:	07a2                	slli	a5,a5,0x8
    e887c39a:	0a87b303          	ld	t1,168(a5) # e870a8 <memcmp-0xe7978f58>
    e887c39e:	8302                	jr	t1

00000000e887c3a0 <eLIBs_memcpy>:
}

void *eLIBs_memcpy(void *pdest, const void *psrc, size_t size)
{
    return SLIB_memcpy(pdest, psrc, size);
    e887c3a0:	00e877b7          	lui	a5,0xe87
    e887c3a4:	07a2                	slli	a5,a5,0x8
    e887c3a6:	0b07b303          	ld	t1,176(a5) # e870b0 <memcmp-0xe7978f50>
    e887c3aa:	8302                	jr	t1

00000000e887c3ac <eLIBs_memmove>:

void *eLIBs_memmove(void *dest, const void *src, size_t n)
{
    char *tmp = (char *)dest, *s = (char *)src;

    if (s < tmp && tmp < s + n)
    e887c3ac:	02a5fc63          	bgeu	a1,a0,e887c3e4 <eLIBs_memmove+0x38>
    e887c3b0:	00c58733          	add	a4,a1,a2
    e887c3b4:	02e57863          	bgeu	a0,a4,e887c3e4 <eLIBs_memmove+0x38>
    {
        tmp += n;
    e887c3b8:	00c506b3          	add	a3,a0,a2
        s += n;

        while (n--)
    e887c3bc:	4781                	li	a5,0
    e887c3be:	fff64613          	not	a2,a2
    e887c3c2:	17fd                	addi	a5,a5,-1
    e887c3c4:	00f61363          	bne	a2,a5,e887c3ca <eLIBs_memmove+0x1e>
    e887c3c8:	8082                	ret
        {
            *(--tmp) = *(--s);
    e887c3ca:	80f7458b          	lrbu	a1,a4,a5,0
    e887c3ce:	00f6d58b          	srb	a1,a3,a5,0
    e887c3d2:	bfc5                	j	e887c3c2 <eLIBs_memmove+0x16>
    }
    else
    {
        while (n--)
        {
            *tmp++ = *s++;
    e887c3d4:	80f5c70b          	lrbu	a4,a1,a5,0
    e887c3d8:	00f5570b          	srb	a4,a0,a5,0
    e887c3dc:	0785                	addi	a5,a5,1
        while (n--)
    e887c3de:	fef61be3          	bne	a2,a5,e887c3d4 <eLIBs_memmove+0x28>
        }
    }

    return dest;
}
    e887c3e2:	8082                	ret
    e887c3e4:	4781                	li	a5,0
    e887c3e6:	bfe5                	j	e887c3de <eLIBs_memmove+0x32>

00000000e887c3e8 <WebRtcVad_Create>:
static const int kMaxFrameLengthMs = 30;

int WebRtcVad_Create(VadInst** handle) {
  VadInstT* self = NULL;

  if (handle == NULL) {
    e887c3e8:	e901                	bnez	a0,e887c3f8 <WebRtcVad_Create+0x10>
    return -1;
    e887c3ea:	557d                	li	a0,-1
  WebRtcSpl_Init();

  self->init_flag = 0;

  return 0;
}
    e887c3ec:	8082                	ret
    return -1;
    e887c3ee:	557d                	li	a0,-1
}
    e887c3f0:	60e2                	ld	ra,24(sp)
    e887c3f2:	6442                	ld	s0,16(sp)
    e887c3f4:	6105                	addi	sp,sp,32
    e887c3f6:	8082                	ret
int WebRtcVad_Create(VadInst** handle) {
    e887c3f8:	1101                	addi	sp,sp,-32
    e887c3fa:	e822                	sd	s0,16(sp)
    e887c3fc:	ec06                	sd	ra,24(sp)
    e887c3fe:	842a                	mv	s0,a0
  *handle = NULL;
    e887c400:	00053023          	sd	zero,0(a0)
  self = (VadInstT*) malloc(sizeof(VadInstT));
    e887c404:	2e000513          	li	a0,736
    e887c408:	c46ff0ef          	jal	ra,e887b84e <my_malloc>
  *handle = (VadInst*) self;
    e887c40c:	e008                	sd	a0,0(s0)
  if (self == NULL) {
    e887c40e:	e42a                	sd	a0,8(sp)
    e887c410:	dd79                	beqz	a0,e887c3ee <WebRtcVad_Create+0x6>
  WebRtcSpl_Init();
    e887c412:	0ce040ef          	jal	ra,e88804e0 <WebRtcSpl_Init>
  self->init_flag = 0;
    e887c416:	6522                	ld	a0,8(sp)
    e887c418:	2c052e23          	sw	zero,732(a0)
  return 0;
    e887c41c:	4501                	li	a0,0
    e887c41e:	bfc9                	j	e887c3f0 <WebRtcVad_Create+0x8>

00000000e887c420 <WebRtcVad_Free>:

int WebRtcVad_Free(VadInst* handle) {
  if (handle == NULL) {
    e887c420:	c909                	beqz	a0,e887c432 <WebRtcVad_Free+0x12>
int WebRtcVad_Free(VadInst* handle) {
    e887c422:	1141                	addi	sp,sp,-16
    e887c424:	e406                	sd	ra,8(sp)
    return -1;
  }

  free(handle);
    e887c426:	edbff0ef          	jal	ra,e887c300 <eLIBs_free>

  return 0;
}
    e887c42a:	60a2                	ld	ra,8(sp)
  return 0;
    e887c42c:	4501                	li	a0,0
}
    e887c42e:	0141                	addi	sp,sp,16
    e887c430:	8082                	ret
    return -1;
    e887c432:	557d                	li	a0,-1
}
    e887c434:	8082                	ret

00000000e887c436 <WebRtcVad_Init>:

// TODO(bjornv): Move WebRtcVad_InitCore() code here.
int WebRtcVad_Init(VadInst* handle) {
  // Initialize the core VAD component.
  return WebRtcVad_InitCore((VadInstT*) handle);
    e887c436:	3420406f          	j	e8880778 <WebRtcVad_InitCore>

00000000e887c43a <WebRtcVad_set_mode>:

// TODO(bjornv): Move WebRtcVad_set_mode_core() code here.
int WebRtcVad_set_mode(VadInst* handle, int mode) {
  VadInstT* self = (VadInstT*) handle;

  if (handle == NULL) {
    e887c43a:	c909                	beqz	a0,e887c44c <WebRtcVad_set_mode+0x12>
    return -1;
  }
  if (self->init_flag != kInitCheck) {
    e887c43c:	2dc52703          	lw	a4,732(a0)
    e887c440:	02a00793          	li	a5,42
    e887c444:	00f71463          	bne	a4,a5,e887c44c <WebRtcVad_set_mode+0x12>
    return -1;
  }

  return WebRtcVad_set_mode_core(self, mode);
    e887c448:	1e40406f          	j	e888062c <WebRtcVad_set_mode_core>
}
    e887c44c:	557d                	li	a0,-1
    e887c44e:	8082                	ret

00000000e887c450 <WebRtcAecm_Free>:

int32_t WebRtcAecm_Free(void *aecmInst)
{
    aecmob_t *aecm = aecmInst;

    if (aecm == NULL)
    e887c450:	c50d                	beqz	a0,e887c47a <WebRtcAecm_Free+0x2a>
{
    e887c452:	1141                	addi	sp,sp,-16
    e887c454:	e406                	sd	ra,8(sp)
    e887c456:	e022                	sd	s0,0(sp)
    e887c458:	842a                	mv	s0,a0
    fclose(aecm->bufFile);
    fclose(aecm->delayFile);
    fclose(aecm->preCompFile);
    fclose(aecm->postCompFile);
#endif // AEC_DEBUG
    WebRtcAecm_FreeCore(aecm->aecmCore);
    e887c45a:	18853503          	ld	a0,392(a0)
    e887c45e:	1c5040ef          	jal	ra,e8880e22 <WebRtcAecm_FreeCore>
    WebRtc_FreeBuffer(aecm->farendBuf);
    e887c462:	17843503          	ld	a0,376(s0)
    e887c466:	623030ef          	jal	ra,e8880288 <WebRtc_FreeBuffer>
    free(aecm);
    e887c46a:	8522                	mv	a0,s0
    e887c46c:	e95ff0ef          	jal	ra,e887c300 <eLIBs_free>

    return 0;
}
    e887c470:	6402                	ld	s0,0(sp)
    e887c472:	60a2                	ld	ra,8(sp)
    return 0;
    e887c474:	4501                	li	a0,0
}
    e887c476:	0141                	addi	sp,sp,16
    e887c478:	8082                	ret
        return -1;
    e887c47a:	557d                	li	a0,-1
}
    e887c47c:	8082                	ret

00000000e887c47e <WebRtcAecm_Create>:
{
    e887c47e:	1101                	addi	sp,sp,-32
    e887c480:	ec06                	sd	ra,24(sp)
    e887c482:	e422                	sd	s0,8(sp)
    e887c484:	e826                	sd	s1,16(sp)
    if (aecmInst == NULL)
    e887c486:	e119                	bnez	a0,e887c48c <WebRtcAecm_Create+0xe>
        return -1;
    e887c488:	54fd                	li	s1,-1
    e887c48a:	a035                	j	e887c4b6 <WebRtcAecm_Create+0x38>
    e887c48c:	84aa                	mv	s1,a0
    aecm = malloc(sizeof(aecmob_t));
    e887c48e:	19000513          	li	a0,400
    e887c492:	bbcff0ef          	jal	ra,e887b84e <my_malloc>
    *aecmInst = aecm;
    e887c496:	e088                	sd	a0,0(s1)
    aecm = malloc(sizeof(aecmob_t));
    e887c498:	842a                	mv	s0,a0
    if (aecm == NULL)
    e887c49a:	d57d                	beqz	a0,e887c488 <WebRtcAecm_Create+0xa>
    WebRtcSpl_Init();
    e887c49c:	044040ef          	jal	ra,e88804e0 <WebRtcSpl_Init>
    if (WebRtcAecm_CreateCore(&aecm->aecmCore) == -1)
    e887c4a0:	18840513          	addi	a0,s0,392
    e887c4a4:	1d9040ef          	jal	ra,e8880e7c <WebRtcAecm_CreateCore>
    e887c4a8:	84aa                	mv	s1,a0
    e887c4aa:	57fd                	li	a5,-1
    e887c4ac:	00f51b63          	bne	a0,a5,e887c4c2 <WebRtcAecm_Create+0x44>
        WebRtcAecm_Free(aecm);
    e887c4b0:	8522                	mv	a0,s0
    e887c4b2:	f9fff0ef          	jal	ra,e887c450 <WebRtcAecm_Free>
}
    e887c4b6:	60e2                	ld	ra,24(sp)
    e887c4b8:	6422                	ld	s0,8(sp)
    e887c4ba:	8526                	mv	a0,s1
    e887c4bc:	64c2                	ld	s1,16(sp)
    e887c4be:	6105                	addi	sp,sp,32
    e887c4c0:	8082                	ret
    aecm->farendBuf = WebRtc_CreateBuffer(kBufSizeSamp,
    e887c4c2:	6505                	lui	a0,0x1
    e887c4c4:	4589                	li	a1,2
    e887c4c6:	fa050513          	addi	a0,a0,-96 # fa0 <memcmp-0xe87ff060>
    e887c4ca:	549030ef          	jal	ra,e8880212 <WebRtc_CreateBuffer>
    e887c4ce:	16a43c23          	sd	a0,376(s0)
    if (!aecm->farendBuf)
    e887c4d2:	e509                	bnez	a0,e887c4dc <WebRtcAecm_Create+0x5e>
        WebRtcAecm_Free(aecm);
    e887c4d4:	8522                	mv	a0,s0
    e887c4d6:	f7bff0ef          	jal	ra,e887c450 <WebRtcAecm_Free>
    e887c4da:	b77d                	j	e887c488 <WebRtcAecm_Create+0xa>
    aecm->initFlag = 0;
    e887c4dc:	14041823          	sh	zero,336(s0)
    aecm->lastError = 0;
    e887c4e0:	18042023          	sw	zero,384(s0)
    return 0;
    e887c4e4:	4481                	li	s1,0
    e887c4e6:	bfc1                	j	e887c4b6 <WebRtcAecm_Create+0x38>

00000000e887c4e8 <WebRtcAecm_BufferFarend>:
                                int16_t nrOfSamples)
{
    aecmob_t *aecm = aecmInst;
    int32_t retVal = 0;

    if (aecm == NULL)
    e887c4e8:	c519                	beqz	a0,e887c4f6 <WebRtcAecm_BufferFarend+0xe>
    {
        return -1;
    }

    if (farend == NULL)
    e887c4ea:	e981                	bnez	a1,e887c4fa <WebRtcAecm_BufferFarend+0x12>
    {
        aecm->lastError = AECM_NULL_POINTER_ERROR;
    e887c4ec:	678d                	lui	a5,0x3
    e887c4ee:	ee37879b          	addiw	a5,a5,-285
        return -1;
    }

    if (nrOfSamples != 80 && nrOfSamples != 160)
    {
        aecm->lastError = AECM_BAD_PARAMETER_ERROR;
    e887c4f2:	18f52023          	sw	a5,384(a0)
        return -1;
    e887c4f6:	557d                	li	a0,-1
    }

    WebRtc_WriteBuffer(aecm->farendBuf, farend, (size_t) nrOfSamples);

    return retVal;
}
    e887c4f8:	8082                	ret
    if (aecm->initFlag != kInitCheck)
    e887c4fa:	15051703          	lh	a4,336(a0)
    e887c4fe:	02a00793          	li	a5,42
    e887c502:	00f70663          	beq	a4,a5,e887c50e <WebRtcAecm_BufferFarend+0x26>
        aecm->lastError = AECM_UNINITIALIZED_ERROR;
    e887c506:	678d                	lui	a5,0x3
    e887c508:	ee27879b          	addiw	a5,a5,-286
    e887c50c:	b7dd                	j	e887c4f2 <WebRtcAecm_BufferFarend+0xa>
    if (nrOfSamples != 80 && nrOfSamples != 160)
    e887c50e:	0006079b          	sext.w	a5,a2
    e887c512:	05000713          	li	a4,80
    e887c516:	00e78a63          	beq	a5,a4,e887c52a <WebRtcAecm_BufferFarend+0x42>
    e887c51a:	0a000713          	li	a4,160
    e887c51e:	00e78663          	beq	a5,a4,e887c52a <WebRtcAecm_BufferFarend+0x42>
        aecm->lastError = AECM_BAD_PARAMETER_ERROR;
    e887c522:	678d                	lui	a5,0x3
    e887c524:	ee47879b          	addiw	a5,a5,-284
    e887c528:	b7e9                	j	e887c4f2 <WebRtcAecm_BufferFarend+0xa>
{
    e887c52a:	1101                	addi	sp,sp,-32
    e887c52c:	f891540b          	sdd	s0,s1,(sp),0,4
    e887c530:	e84a                	sd	s2,16(sp)
    e887c532:	ec06                	sd	ra,24(sp)
    if (!aecm->ECstartup)
    e887c534:	16452783          	lw	a5,356(a0)
    e887c538:	8932                	mv	s2,a2
    e887c53a:	84ae                	mv	s1,a1
    e887c53c:	842a                	mv	s0,a0
    e887c53e:	eba5                	bnez	a5,e887c5ae <WebRtcAecm_BufferFarend+0xc6>
    return 0;
}

static int WebRtcAecm_DelayComp(aecmob_t *aecm)
{
    int nSampFar = (int) WebRtc_available_read(aecm->farendBuf);
    e887c540:	17853503          	ld	a0,376(a0)
    e887c544:	563030ef          	jal	ra,e88802a6 <WebRtc_available_read>
    e887c548:	2501                	sext.w	a0,a0
    int nSampSndCard, delayNew, nSampAdd;
    const int maxStuffSamp = 10 * FRAME_LEN;

    nSampSndCard = aecm->msInSndCardBuf * kSampMsNb * aecm->aecmCore->mult;
    e887c54a:	18843783          	ld	a5,392(s0)
    delayNew = nSampSndCard - nSampFar;

    if (delayNew > FAR_BUF_LEN - FRAME_LEN * aecm->aecmCore->mult)
    e887c54e:	fb000613          	li	a2,-80
    e887c552:	10000713          	li	a4,256
    nSampSndCard = aecm->msInSndCardBuf * kSampMsNb * aecm->aecmCore->mult;
    e887c556:	23879683          	lh	a3,568(a5) # 3238 <memcmp-0xe87fcdc8>
    e887c55a:	15a41783          	lh	a5,346(s0)
    if (delayNew > FAR_BUF_LEN - FRAME_LEN * aecm->aecmCore->mult)
    e887c55e:	28c6970b          	mulah	a4,a3,a2
    nSampSndCard = aecm->msInSndCardBuf * kSampMsNb * aecm->aecmCore->mult;
    e887c562:	02d787bb          	mulw	a5,a5,a3
    e887c566:	0037979b          	slliw	a5,a5,0x3
    if (delayNew > FAR_BUF_LEN - FRAME_LEN * aecm->aecmCore->mult)
    e887c56a:	40a786bb          	subw	a3,a5,a0
    e887c56e:	04d75063          	bge	a4,a3,e887c5ae <WebRtcAecm_BufferFarend+0xc6>
    {
        // The difference of the buffer sizes is larger than the maximum
        // allowed known delay. Compensate by stuffing the buffer.
        nSampAdd = (int)(WEBRTC_SPL_MAX(((nSampSndCard >> 1) - nSampFar),
    e887c572:	4017d79b          	sraiw	a5,a5,0x1
    e887c576:	40a786bb          	subw	a3,a5,a0
    e887c57a:	05000713          	li	a4,80
    e887c57e:	87b6                	mv	a5,a3
    e887c580:	00e6d463          	bge	a3,a4,e887c588 <WebRtcAecm_BufferFarend+0xa0>
    e887c584:	05000793          	li	a5,80
                FRAME_LEN));
        nSampAdd = WEBRTC_SPL_MIN(nSampAdd, maxStuffSamp);
    e887c588:	0007869b          	sext.w	a3,a5
    e887c58c:	32000713          	li	a4,800
    e887c590:	00d75463          	bge	a4,a3,e887c598 <WebRtcAecm_BufferFarend+0xb0>
    e887c594:	32000793          	li	a5,800

        WebRtc_MoveReadPtr(aecm->farendBuf, -nSampAdd);
    e887c598:	17843503          	ld	a0,376(s0)
    e887c59c:	40f007bb          	negw	a5,a5
    e887c5a0:	0007859b          	sext.w	a1,a5
    e887c5a4:	5db030ef          	jal	ra,e888037e <WebRtc_MoveReadPtr>
        aecm->delayChange = 1; // the delay needs to be updated
    e887c5a8:	4785                	li	a5,1
    e887c5aa:	16f42623          	sw	a5,364(s0)
    WebRtc_WriteBuffer(aecm->farendBuf, farend, (size_t) nrOfSamples);
    e887c5ae:	17843503          	ld	a0,376(s0)
    e887c5b2:	864a                	mv	a2,s2
    e887c5b4:	85a6                	mv	a1,s1
    e887c5b6:	52f030ef          	jal	ra,e88802e4 <WebRtc_WriteBuffer>
}
    e887c5ba:	f891440b          	ldd	s0,s1,(sp),0,4
    e887c5be:	60e2                	ld	ra,24(sp)
    e887c5c0:	6942                	ld	s2,16(sp)
    return retVal;
    e887c5c2:	4501                	li	a0,0
}
    e887c5c4:	6105                	addi	sp,sp,32
    e887c5c6:	8082                	ret

00000000e887c5c8 <WebRtcAecm_Process>:
{
    e887c5c8:	7169                	addi	sp,sp,-304
    e887c5ca:	f606                	sd	ra,296(sp)
    e887c5cc:	f222                	sd	s0,288(sp)
    e887c5ce:	ee26                	sd	s1,280(sp)
    e887c5d0:	ea4a                	sd	s2,272(sp)
    e887c5d2:	e64e                	sd	s3,264(sp)
    e887c5d4:	e252                	sd	s4,256(sp)
    e887c5d6:	fdd6                	sd	s5,248(sp)
    e887c5d8:	f9da                	sd	s6,240(sp)
    e887c5da:	f5de                	sd	s7,232(sp)
    e887c5dc:	f1e2                	sd	s8,224(sp)
    e887c5de:	ede6                	sd	s9,216(sp)
    e887c5e0:	e9ea                	sd	s10,208(sp)
    e887c5e2:	e5ee                	sd	s11,200(sp)
    if (aecm == NULL)
    e887c5e4:	c909                	beqz	a0,e887c5f6 <WebRtcAecm_Process+0x2e>
    e887c5e6:	8daa                	mv	s11,a0
    e887c5e8:	8b2e                	mv	s6,a1
    if (nearendNoisy == NULL)
    e887c5ea:	e981                	bnez	a1,e887c5fa <WebRtcAecm_Process+0x32>
        aecm->lastError = AECM_NULL_POINTER_ERROR;
    e887c5ec:	678d                	lui	a5,0x3
    e887c5ee:	ee37879b          	addiw	a5,a5,-285
        aecm->lastError = AECM_UNINITIALIZED_ERROR;
    e887c5f2:	18fda023          	sw	a5,384(s11)
        return -1;
    e887c5f6:	547d                	li	s0,-1
    e887c5f8:	ac09                	j	e887c80a <WebRtcAecm_Process+0x242>
    e887c5fa:	8a36                	mv	s4,a3
    if (out == NULL)
    e887c5fc:	dae5                	beqz	a3,e887c5ec <WebRtcAecm_Process+0x24>
    e887c5fe:	8ab2                	mv	s5,a2
    if (aecm->initFlag != kInitCheck)
    e887c600:	15051603          	lh	a2,336(a0)
    e887c604:	02a00693          	li	a3,42
    e887c608:	00d60663          	beq	a2,a3,e887c614 <WebRtcAecm_Process+0x4c>
        aecm->lastError = AECM_UNINITIALIZED_ERROR;
    e887c60c:	678d                	lui	a5,0x3
    e887c60e:	ee27879b          	addiw	a5,a5,-286
    e887c612:	b7c5                	j	e887c5f2 <WebRtcAecm_Process+0x2a>
    if (nrOfSamples != 80 && nrOfSamples != 160)
    e887c614:	0007069b          	sext.w	a3,a4
    e887c618:	05000613          	li	a2,80
    e887c61c:	00c68a63          	beq	a3,a2,e887c630 <WebRtcAecm_Process+0x68>
    e887c620:	0a000613          	li	a2,160
    e887c624:	00c68663          	beq	a3,a2,e887c630 <WebRtcAecm_Process+0x68>
        aecm->lastError = AECM_BAD_PARAMETER_ERROR;
    e887c628:	678d                	lui	a5,0x3
    e887c62a:	ee47879b          	addiw	a5,a5,-284
    e887c62e:	b7d1                	j	e887c5f2 <WebRtcAecm_Process+0x2a>
    if (msInSndCardBuf < 0)
    e887c630:	0007869b          	sext.w	a3,a5
    e887c634:	1806dd63          	bgez	a3,e887c7ce <WebRtcAecm_Process+0x206>
        aecm->lastError = AECM_BAD_PARAMETER_WARNING;
    e887c638:	678d                	lui	a5,0x3
    e887c63a:	f447879b          	addiw	a5,a5,-188
    e887c63e:	18fda023          	sw	a5,384(s11)
        retVal = -1;
    e887c642:	547d                	li	s0,-1
        msInSndCardBuf = 0;
    e887c644:	4781                	li	a5,0
    nFrames = nrOfSamples / FRAME_LEN;
    e887c646:	05000493          	li	s1,80
    e887c64a:	029744bb          	divw	s1,a4,s1
    msInSndCardBuf += 10;
    e887c64e:	27a9                	addiw	a5,a5,10
    aecm->msInSndCardBuf = msInSndCardBuf;
    e887c650:	14fd9d23          	sh	a5,346(s11)
    if (aecm->ECstartup)
    e887c654:	164da783          	lw	a5,356(s11)
    nFrames = nrOfSamples / FRAME_LEN;
    e887c658:	3c04a48b          	ext	s1,s1,15,0
    if (aecm->ECstartup)
    e887c65c:	32078c63          	beqz	a5,e887c994 <WebRtcAecm_Process+0x3cc>
    nBlocks10ms = nFrames / aecm->aecmCore->mult;
    e887c660:	188db783          	ld	a5,392(s11)
    e887c664:	23879903          	lh	s2,568(a5) # 3238 <memcmp-0xe87fcdc8>
        if (nearendClean == NULL)
    e887c668:	180a9163          	bnez	s5,e887c7ea <WebRtcAecm_Process+0x222>
            if (out != nearendNoisy)
    e887c66c:	014b0863          	beq	s6,s4,e887c67c <WebRtcAecm_Process+0xb4>
                memcpy(out, nearendNoisy, sizeof(short) * nrOfSamples);
    e887c670:	00171613          	slli	a2,a4,0x1
    e887c674:	85da                	mv	a1,s6
            memcpy(out, nearendClean, sizeof(short) * nrOfSamples);
    e887c676:	8552                	mv	a0,s4
    e887c678:	d29ff0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            (short) WebRtc_available_read(aecm->farendBuf) / FRAME_LEN;
    e887c67c:	178db503          	ld	a0,376(s11)
    e887c680:	427030ef          	jal	ra,e88802a6 <WebRtc_available_read>
        if (aecm->checkBuffSize)
    e887c684:	168da783          	lw	a5,360(s11)
    e887c688:	10078163          	beqz	a5,e887c78a <WebRtcAecm_Process+0x1c2>
            aecm->checkBufSizeCtr++;
    e887c68c:	158dd703          	lhu	a4,344(s11)
            if (aecm->counter == 0)
    e887c690:	152d9683          	lh	a3,338(s11)
    e887c694:	15ad9603          	lh	a2,346(s11)
            aecm->checkBufSizeCtr++;
    e887c698:	2705                	addiw	a4,a4,1
    e887c69a:	3c07270b          	ext	a4,a4,15,0
    e887c69e:	14ed9c23          	sh	a4,344(s11)
            if (aecm->counter == 0)
    e887c6a2:	e689                	bnez	a3,e887c6ac <WebRtcAecm_Process+0xe4>
                aecm->firstVal = aecm->msInSndCardBuf;
    e887c6a4:	14cd9b23          	sh	a2,342(s11)
                aecm->sum = 0;
    e887c6a8:	140d9a23          	sh	zero,340(s11)
            if (abs(aecm->firstVal - aecm->msInSndCardBuf)
    e887c6ac:	156d9583          	lh	a1,342(s11)
    e887c6b0:	0006079b          	sext.w	a5,a2
    e887c6b4:	40f588bb          	subw	a7,a1,a5
                    < WEBRTC_SPL_MAX(0.2 * aecm->msInSndCardBuf, kSampMsNb))
    e887c6b8:	02089813          	slli	a6,a7,0x20
    e887c6bc:	12084d63          	bltz	a6,e887c7f6 <WebRtcAecm_Process+0x22e>
    e887c6c0:	d20887d3          	fcvt.d.w	fa5,a7
    e887c6c4:	d2060753          	fcvt.d.w	fa4,a2
    e887c6c8:	0004c797          	auipc	a5,0x4c
    e887c6cc:	2807b687          	fld	fa3,640(a5) # e88c8948 <kScreenStreamClass+0x70>
    e887c6d0:	12d77753          	fmul.d	fa4,fa4,fa3
    e887c6d4:	00051797          	auipc	a5,0x51
    e887c6d8:	9bc7b687          	fld	fa3,-1604(a5) # e88cd090 <kCurve25519BasePoint+0xd0>
    e887c6dc:	a2e697d3          	flt.d	a5,fa3,fa4
    e887c6e0:	e399                	bnez	a5,e887c6e6 <WebRtcAecm_Process+0x11e>
    e887c6e2:	22d68753          	fmv.d	fa4,fa3
            if (abs(aecm->firstVal - aecm->msInSndCardBuf)
    e887c6e6:	a2e797d3          	flt.d	a5,fa5,fa4
    e887c6ea:	10078a63          	beqz	a5,e887c7fe <WebRtcAecm_Process+0x236>
                aecm->sum += aecm->msInSndCardBuf;
    e887c6ee:	154dd783          	lhu	a5,340(s11)
                aecm->counter++;
    e887c6f2:	2685                	addiw	a3,a3,1
    e887c6f4:	14dd9923          	sh	a3,338(s11)
                aecm->sum += aecm->msInSndCardBuf;
    e887c6f8:	9e3d                	addw	a2,a2,a5
    e887c6fa:	14cd9a23          	sh	a2,340(s11)
    nBlocks10ms = nFrames / aecm->aecmCore->mult;
    e887c6fe:	0324c4bb          	divw	s1,s1,s2
            if (aecm->counter * nBlocks10ms >= 6)
    e887c702:	152d9603          	lh	a2,338(s11)
    e887c706:	4795                	li	a5,5
    e887c708:	02c486bb          	mulw	a3,s1,a2
    e887c70c:	02d7de63          	bge	a5,a3,e887c748 <WebRtcAecm_Process+0x180>
                        = WEBRTC_SPL_MIN((3 * aecm->sum
    e887c710:	188db783          	ld	a5,392(s11)
    e887c714:	154d9683          	lh	a3,340(s11)
    e887c718:	23879783          	lh	a5,568(a5)
    e887c71c:	02d787bb          	mulw	a5,a5,a3
    e887c720:	468d                	li	a3,3
    e887c722:	02d787bb          	mulw	a5,a5,a3
    e887c726:	02800693          	li	a3,40
    e887c72a:	02c686bb          	mulw	a3,a3,a2
    e887c72e:	02d7c63b          	divw	a2,a5,a3
    e887c732:	03200693          	li	a3,50
    e887c736:	87b2                	mv	a5,a2
    e887c738:	00c6d463          	bge	a3,a2,e887c740 <WebRtcAecm_Process+0x178>
    e887c73c:	03200793          	li	a5,50
    e887c740:	00fd9423          	sh	a5,8(s11)
                aecm->checkBuffSize = 0;
    e887c744:	160da423          	sw	zero,360(s11)
            if (aecm->checkBufSizeCtr * nBlocks10ms > 50)
    e887c748:	02e484bb          	mulw	s1,s1,a4
    e887c74c:	03200793          	li	a5,50
    e887c750:	0a97da63          	bge	a5,s1,e887c804 <WebRtcAecm_Process+0x23c>
                aecm->bufSizeStart = WEBRTC_SPL_MIN((3 * aecm->msInSndCardBuf
    e887c754:	188db783          	ld	a5,392(s11)
    e887c758:	15ad9703          	lh	a4,346(s11)
    e887c75c:	7cf00693          	li	a3,1999
    e887c760:	23879783          	lh	a5,568(a5)
    e887c764:	02e787bb          	mulw	a5,a5,a4
    e887c768:	470d                	li	a4,3
    e887c76a:	02e7863b          	mulw	a2,a5,a4
    e887c76e:	03200713          	li	a4,50
    e887c772:	00c6c863          	blt	a3,a2,e887c782 <WebRtcAecm_Process+0x1ba>
    e887c776:	02800713          	li	a4,40
    e887c77a:	02e647bb          	divw	a5,a2,a4
    e887c77e:	3c07a70b          	ext	a4,a5,15,0
    e887c782:	00ed9423          	sh	a4,8(s11)
                aecm->checkBuffSize = 0;
    e887c786:	160da423          	sw	zero,360(s11)
        nmbrOfFilledBuffers =
    e887c78a:	0105151b          	slliw	a0,a0,0x10
    e887c78e:	05000793          	li	a5,80
    e887c792:	4105551b          	sraiw	a0,a0,0x10
    e887c796:	02f5453b          	divw	a0,a0,a5
            if (nmbrOfFilledBuffers == aecm->bufSizeStart)
    e887c79a:	008d9783          	lh	a5,8(s11)
    e887c79e:	3c05250b          	ext	a0,a0,15,0
    e887c7a2:	02a78363          	beq	a5,a0,e887c7c8 <WebRtcAecm_Process+0x200>
            } else if (nmbrOfFilledBuffers > aecm->bufSizeStart)
    e887c7a6:	06a7d263          	bge	a5,a0,e887c80a <WebRtcAecm_Process+0x242>
                WebRtc_MoveReadPtr(aecm->farendBuf,
    e887c7aa:	178db483          	ld	s1,376(s11)
                                   (int) WebRtc_available_read(aecm->farendBuf)
    e887c7ae:	8526                	mv	a0,s1
    e887c7b0:	2f7030ef          	jal	ra,e88802a6 <WebRtc_available_read>
                WebRtc_MoveReadPtr(aecm->farendBuf,
    e887c7b4:	85aa                	mv	a1,a0
    e887c7b6:	008dd703          	lhu	a4,8(s11)
    e887c7ba:	fb000793          	li	a5,-80
    e887c7be:	8526                	mv	a0,s1
    e887c7c0:	28f7158b          	mulah	a1,a4,a5
    e887c7c4:	3bb030ef          	jal	ra,e888037e <WebRtc_MoveReadPtr>
                aecm->ECstartup = 0;
    e887c7c8:	160da223          	sw	zero,356(s11)
    e887c7cc:	a83d                	j	e887c80a <WebRtcAecm_Process+0x242>
    } else if (msInSndCardBuf > 500)
    e887c7ce:	1f400613          	li	a2,500
    int32_t retVal = 0;
    e887c7d2:	4401                	li	s0,0
    } else if (msInSndCardBuf > 500)
    e887c7d4:	e6d659e3          	bge	a2,a3,e887c646 <WebRtcAecm_Process+0x7e>
        aecm->lastError = AECM_BAD_PARAMETER_WARNING;
    e887c7d8:	678d                	lui	a5,0x3
    e887c7da:	f447879b          	addiw	a5,a5,-188
    e887c7de:	18fda023          	sw	a5,384(s11)
        retVal = -1;
    e887c7e2:	547d                	li	s0,-1
        msInSndCardBuf = 500;
    e887c7e4:	1f400793          	li	a5,500
    e887c7e8:	bdb9                	j	e887c646 <WebRtcAecm_Process+0x7e>
        } else if (out != nearendClean)
    e887c7ea:	e95a09e3          	beq	s4,s5,e887c67c <WebRtcAecm_Process+0xb4>
            memcpy(out, nearendClean, sizeof(short) * nrOfSamples);
    e887c7ee:	00171613          	slli	a2,a4,0x1
    e887c7f2:	85d6                	mv	a1,s5
    e887c7f4:	b549                	j	e887c676 <WebRtcAecm_Process+0xae>
            if (abs(aecm->firstVal - aecm->msInSndCardBuf)
    e887c7f6:	9f8d                	subw	a5,a5,a1
                    < WEBRTC_SPL_MAX(0.2 * aecm->msInSndCardBuf, kSampMsNb))
    e887c7f8:	d20787d3          	fcvt.d.w	fa5,a5
    e887c7fc:	b5e1                	j	e887c6c4 <WebRtcAecm_Process+0xfc>
                aecm->counter = 0;
    e887c7fe:	140d9923          	sh	zero,338(s11)
    e887c802:	bdf5                	j	e887c6fe <WebRtcAecm_Process+0x136>
        if (!aecm->checkBuffSize)
    e887c804:	168da783          	lw	a5,360(s11)
    e887c808:	d3c9                	beqz	a5,e887c78a <WebRtcAecm_Process+0x1c2>
}
    e887c80a:	8522                	mv	a0,s0
    e887c80c:	70b2                	ld	ra,296(sp)
    e887c80e:	7412                	ld	s0,288(sp)
    e887c810:	64f2                	ld	s1,280(sp)
    e887c812:	6952                	ld	s2,272(sp)
    e887c814:	69b2                	ld	s3,264(sp)
    e887c816:	6a12                	ld	s4,256(sp)
    e887c818:	7aee                	ld	s5,248(sp)
    e887c81a:	7b4e                	ld	s6,240(sp)
    e887c81c:	7bae                	ld	s7,232(sp)
    e887c81e:	7c0e                	ld	s8,224(sp)
    e887c820:	6cee                	ld	s9,216(sp)
    e887c822:	6d4e                	ld	s10,208(sp)
    e887c824:	6dae                	ld	s11,200(sp)
    e887c826:	6155                	addi	sp,sp,304
    e887c828:	8082                	ret
                memcpy(farend, &(aecm->farendOld[i][0]), FRAME_LEN * sizeof(short));
    e887c82a:	0a000613          	li	a2,160
    e887c82e:	85be                	mv	a1,a5
    e887c830:	855e                	mv	a0,s7
    e887c832:	b6fff0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
                farend_ptr = farend;
    e887c836:	ec5e                	sd	s7,24(sp)
    e887c838:	a8bd                	j	e887c8b6 <WebRtcAecm_Process+0x2ee>
            if ((i == 0 && aecm->sampFreq == 8000) || (i == 1 && aecm->sampFreq == 16000))
    e887c83a:	4785                	li	a5,1
    e887c83c:	00fd1663          	bne	s10,a5,e887c848 <WebRtcAecm_Process+0x280>
    e887c840:	000da783          	lw	a5,0(s11)
    e887c844:	07878f63          	beq	a5,s8,e887c8c2 <WebRtcAecm_Process+0x2fa>
            if (nearendClean == NULL)
    e887c848:	013b0633          	add	a2,s6,s3
    e887c84c:	013a0733          	add	a4,s4,s3
    e887c850:	188db503          	ld	a0,392(s11)
    e887c854:	65e2                	ld	a1,24(sp)
                if (WebRtcAecm_ProcessFrame(aecm->aecmCore,
    e887c856:	013a86b3          	add	a3,s5,s3
            if (nearendClean == NULL)
    e887c85a:	000a9363          	bnez	s5,e887c860 <WebRtcAecm_Process+0x298>
                if (WebRtcAecm_ProcessFrame(aecm->aecmCore,
    e887c85e:	4681                	li	a3,0
    e887c860:	0b0050ef          	jal	ra,e8881910 <WebRtcAecm_ProcessFrame>
    e887c864:	57fd                	li	a5,-1
    e887c866:	d8f508e3          	beq	a0,a5,e887c5f6 <WebRtcAecm_Process+0x2e>
        for (i = 0; i < nFrames; i++)
    e887c86a:	2905                	addiw	s2,s2,1
    e887c86c:	3c09290b          	ext	s2,s2,15,0
    e887c870:	0a098993          	addi	s3,s3,160 # ffffffffffffe0a0 <__DRAM0_INF_BASE+0xffffffff0000e0a0>
    e887c874:	00090d1b          	sext.w	s10,s2
    e887c878:	f89d59e3          	bge	s10,s1,e887c80a <WebRtcAecm_Process+0x242>
                (short) WebRtc_available_read(aecm->farendBuf) / FRAME_LEN;
    e887c87c:	178db503          	ld	a0,376(s11)
            const int16_t* farend_ptr = NULL;
    e887c880:	ec02                	sd	zero,24(sp)
                (short) WebRtc_available_read(aecm->farendBuf) / FRAME_LEN;
    e887c882:	225030ef          	jal	ra,e88802a6 <WebRtc_available_read>
            if (nmbrOfFilledBuffers > 0)
    e887c886:	3c05250b          	ext	a0,a0,15,0
    e887c88a:	6782                	ld	a5,0(sp)
    e887c88c:	04f00713          	li	a4,79
    e887c890:	97ce                	add	a5,a5,s3
    e887c892:	f8a75ce3          	bge	a4,a0,e887c82a <WebRtcAecm_Process+0x262>
                WebRtc_ReadBuffer(aecm->farendBuf, (void**) &farend_ptr, farend,
    e887c896:	178db503          	ld	a0,376(s11)
    e887c89a:	865e                	mv	a2,s7
    e887c89c:	082c                	addi	a1,sp,24
    e887c89e:	05000693          	li	a3,80
    e887c8a2:	e43e                	sd	a5,8(sp)
    e887c8a4:	34b030ef          	jal	ra,e88803ee <WebRtc_ReadBuffer>
                memcpy(&(aecm->farendOld[i][0]), farend_ptr,
    e887c8a8:	67a2                	ld	a5,8(sp)
    e887c8aa:	65e2                	ld	a1,24(sp)
    e887c8ac:	0a000613          	li	a2,160
    e887c8b0:	853e                	mv	a0,a5
    e887c8b2:	aefff0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            if ((i == 0 && aecm->sampFreq == 8000) || (i == 1 && aecm->sampFreq == 16000))
    e887c8b6:	f80912e3          	bnez	s2,e887c83a <WebRtcAecm_Process+0x272>
    e887c8ba:	000da783          	lw	a5,0(s11)
    e887c8be:	f99795e3          	bne	a5,s9,e887c848 <WebRtcAecm_Process+0x280>
                WebRtcAecm_EstBufDelay(aecm, aecm->msInSndCardBuf);
    e887c8c2:	15ad9783          	lh	a5,346(s11)
    short nSampFar = (short) WebRtc_available_read(aecm->farendBuf);
    e887c8c6:	178db503          	ld	a0,376(s11)
                WebRtcAecm_EstBufDelay(aecm, aecm->msInSndCardBuf);
    e887c8ca:	e43e                	sd	a5,8(sp)
    short nSampFar = (short) WebRtc_available_read(aecm->farendBuf);
    e887c8cc:	1db030ef          	jal	ra,e88802a6 <WebRtc_available_read>
    nSampSndCard = msInSndCardBuf * kSampMsNb * aecm->aecmCore->mult;
    e887c8d0:	188db703          	ld	a4,392(s11)
    e887c8d4:	67a2                	ld	a5,8(sp)
    e887c8d6:	23875d03          	lhu	s10,568(a4)
    e887c8da:	02fd0d3b          	mulw	s10,s10,a5
    if (delayNew < FRAME_LEN)
    e887c8de:	04f00793          	li	a5,79
    nSampSndCard = msInSndCardBuf * kSampMsNb * aecm->aecmCore->mult;
    e887c8e2:	003d1d1b          	slliw	s10,s10,0x3
    delayNew = nSampSndCard - nSampFar;
    e887c8e6:	40ad0d3b          	subw	s10,s10,a0
    e887c8ea:	3c0d2d0b          	ext	s10,s10,15,0
    if (delayNew < FRAME_LEN)
    e887c8ee:	01a7cc63          	blt	a5,s10,e887c906 <WebRtcAecm_Process+0x33e>
        WebRtc_MoveReadPtr(aecm->farendBuf, FRAME_LEN);
    e887c8f2:	178db503          	ld	a0,376(s11)
    e887c8f6:	05000593          	li	a1,80
        delayNew += FRAME_LEN;
    e887c8fa:	050d0d1b          	addiw	s10,s10,80
        WebRtc_MoveReadPtr(aecm->farendBuf, FRAME_LEN);
    e887c8fe:	281030ef          	jal	ra,e888037e <WebRtc_MoveReadPtr>
        delayNew += FRAME_LEN;
    e887c902:	3c0d2d0b          	ext	s10,s10,15,0
    aecm->filtDelay = WEBRTC_SPL_MAX(0, (8 * aecm->filtDelay + 2 * delayNew) / 10);
    e887c906:	15cdd703          	lhu	a4,348(s11)
    e887c90a:	4791                	li	a5,4
    e887c90c:	28f71d0b          	mulah	s10,a4,a5
    e887c910:	575d                	li	a4,-9
    e887c912:	4781                	li	a5,0
    e887c914:	001d169b          	slliw	a3,s10,0x1
    e887c918:	00e6c763          	blt	a3,a4,e887c926 <WebRtcAecm_Process+0x35e>
    e887c91c:	47a9                	li	a5,10
    e887c91e:	02f6cd3b          	divw	s10,a3,a5
    e887c922:	3c0d278b          	ext	a5,s10,15,0
    diff = aecm->filtDelay - aecm->knownDelay;
    e887c926:	00cda603          	lw	a2,12(s11)
    aecm->filtDelay = WEBRTC_SPL_MAX(0, (8 * aecm->filtDelay + 2 * delayNew) / 10);
    e887c92a:	14fd9e23          	sh	a5,348(s11)
    if (diff > 224)
    e887c92e:	0e000693          	li	a3,224
    diff = aecm->filtDelay - aecm->knownDelay;
    e887c932:	40c7873b          	subw	a4,a5,a2
    e887c936:	3c07270b          	ext	a4,a4,15,0
    if (diff > 224)
    e887c93a:	0007059b          	sext.w	a1,a4
    e887c93e:	02b6db63          	bge	a3,a1,e887c974 <WebRtcAecm_Process+0x3ac>
        if (aecm->lastDelayDiff < 96)
    e887c942:	170d9603          	lh	a2,368(s11)
    e887c946:	05f00693          	li	a3,95
    e887c94a:	02c6cf63          	blt	a3,a2,e887c988 <WebRtcAecm_Process+0x3c0>
            aecm->timeForDelayChange = 0;
    e887c94e:	160da023          	sw	zero,352(s11)
    if (aecm->timeForDelayChange > 25)
    e887c952:	160da683          	lw	a3,352(s11)
    aecm->lastDelayDiff = diff;
    e887c956:	16ed9823          	sh	a4,368(s11)
    if (aecm->timeForDelayChange > 25)
    e887c95a:	4765                	li	a4,25
    e887c95c:	eed756e3          	bge	a4,a3,e887c848 <WebRtcAecm_Process+0x280>
        aecm->knownDelay = WEBRTC_SPL_MAX((int)aecm->filtDelay - 160, 0);
    e887c960:	f6078d1b          	addiw	s10,a5,-160
    e887c964:	020d1793          	slli	a5,s10,0x20
    e887c968:	0007d363          	bgez	a5,e887c96e <WebRtcAecm_Process+0x3a6>
    e887c96c:	4d01                	li	s10,0
    e887c96e:	01ada623          	sw	s10,12(s11)
    e887c972:	bdd9                	j	e887c848 <WebRtcAecm_Process+0x280>
    } else if (diff < 96 && aecm->knownDelay > 0)
    e887c974:	05f00513          	li	a0,95
    e887c978:	fcb54be3          	blt	a0,a1,e887c94e <WebRtcAecm_Process+0x386>
    e887c97c:	fcc059e3          	blez	a2,e887c94e <WebRtcAecm_Process+0x386>
        if (aecm->lastDelayDiff > 224)
    e887c980:	170d9603          	lh	a2,368(s11)
    e887c984:	fcc6c5e3          	blt	a3,a2,e887c94e <WebRtcAecm_Process+0x386>
            aecm->timeForDelayChange++;
    e887c988:	160da683          	lw	a3,352(s11)
    e887c98c:	2685                	addiw	a3,a3,1
    e887c98e:	16dda023          	sw	a3,352(s11)
    e887c992:	b7c1                	j	e887c952 <WebRtcAecm_Process+0x38a>
    e887c994:	010d8793          	addi	a5,s11,16
            if ((i == 0 && aecm->sampFreq == 8000) || (i == 1 && aecm->sampFreq == 16000))
    e887c998:	6c11                	lui	s8,0x4
    e887c99a:	6c89                	lui	s9,0x2
    e887c99c:	4981                	li	s3,0
        for (i = 0; i < nFrames; i++)
    e887c99e:	4901                	li	s2,0
    e887c9a0:	2481                	sext.w	s1,s1
    e887c9a2:	e03e                	sd	a5,0(sp)
    e887c9a4:	02010b93          	addi	s7,sp,32
            if ((i == 0 && aecm->sampFreq == 8000) || (i == 1 && aecm->sampFreq == 16000))
    e887c9a8:	e80c0c13          	addi	s8,s8,-384 # 3e80 <memcmp-0xe87fc180>
    e887c9ac:	f40c8c93          	addi	s9,s9,-192 # 1f40 <memcmp-0xe87fe0c0>
    e887c9b0:	b5d1                	j	e887c874 <WebRtcAecm_Process+0x2ac>

00000000e887c9b2 <WebRtcAecm_set_config>:
{
    e887c9b2:	3c05a80b          	ext	a6,a1,15,0
    e887c9b6:	7d05a58b          	ext	a1,a1,31,16
    e887c9ba:	3c05a68b          	ext	a3,a1,15,0
    if (aecm == NULL)
    e887c9be:	cd01                	beqz	a0,e887c9d6 <WebRtcAecm_set_config+0x24>
    if (aecm->initFlag != kInitCheck)
    e887c9c0:	15051703          	lh	a4,336(a0)
    e887c9c4:	02a00793          	li	a5,42
    e887c9c8:	00f70963          	beq	a4,a5,e887c9da <WebRtcAecm_set_config+0x28>
        aecm->lastError = AECM_UNINITIALIZED_ERROR;
    e887c9cc:	678d                	lui	a5,0x3
    e887c9ce:	ee27879b          	addiw	a5,a5,-286
        aecm->lastError = AECM_BAD_PARAMETER_ERROR;
    e887c9d2:	18f52023          	sw	a5,384(a0)
        return -1;
    e887c9d6:	557d                	li	a0,-1
}
    e887c9d8:	8082                	ret
    if (config.cngMode != AecmFalse && config.cngMode != AecmTrue)
    e887c9da:	3c08378b          	extu	a5,a6,15,0
    e887c9de:	4605                	li	a2,1
    e887c9e0:	00f67663          	bgeu	a2,a5,e887c9ec <WebRtcAecm_set_config+0x3a>
        aecm->lastError = AECM_BAD_PARAMETER_ERROR;
    e887c9e4:	678d                	lui	a5,0x3
    e887c9e6:	ee47879b          	addiw	a5,a5,-284
    e887c9ea:	b7e5                	j	e887c9d2 <WebRtcAecm_set_config+0x20>
    aecm->aecmCore->cngMode = config.cngMode;
    e887c9ec:	18853703          	ld	a4,392(a0)
    e887c9f0:	6791                	lui	a5,0x4
    e887c9f2:	973e                	add	a4,a4,a5
    e887c9f4:	35071723          	sh	a6,846(a4)
    if (config.echoMode < 0 || config.echoMode > 4)
    e887c9f8:	3c05b70b          	extu	a4,a1,15,0
    e887c9fc:	4811                	li	a6,4
    e887c9fe:	fee863e3          	bltu	a6,a4,e887c9e4 <WebRtcAecm_set_config+0x32>
    aecm->echoMode = config.echoMode;
    e887ca02:	18853703          	ld	a4,392(a0)
    e887ca06:	16b51923          	sh	a1,370(a0)
    if (aecm->echoMode == 0)
    e887ca0a:	973e                	add	a4,a4,a5
    e887ca0c:	e6b1                	bnez	a3,e887ca58 <WebRtcAecm_set_config+0xa6>
        aecm->aecmCore->supGain = SUPGAIN_DEFAULT >> 3;
    e887ca0e:	02000693          	li	a3,32
    e887ca12:	36d71923          	sh	a3,882(a4)
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT >> 3;
    e887ca16:	18853703          	ld	a4,392(a0)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A >> 3;
    e887ca1a:	18000613          	li	a2,384
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT >> 3;
    e887ca1e:	973e                	add	a4,a4,a5
    e887ca20:	36d71a23          	sh	a3,884(a4)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A >> 3;
    e887ca24:	18853703          	ld	a4,392(a0)
    e887ca28:	973e                	add	a4,a4,a5
    e887ca2a:	36c71b23          	sh	a2,886(a4)
        aecm->aecmCore->supGainErrParamD = SUPGAIN_ERROR_PARAM_D >> 3;
    e887ca2e:	18853703          	ld	a4,392(a0)
    e887ca32:	973e                	add	a4,a4,a5
    e887ca34:	36d71c23          	sh	a3,888(a4)
        aecm->aecmCore->supGainErrParamDiffAB = (SUPGAIN_ERROR_PARAM_A >> 3)
    e887ca38:	18853703          	ld	a4,392(a0)
    e887ca3c:	0c000693          	li	a3,192
    e887ca40:	973e                	add	a4,a4,a5
    e887ca42:	36d71d23          	sh	a3,890(a4)
        aecm->aecmCore->supGainErrParamDiffBD = (SUPGAIN_ERROR_PARAM_B >> 3)
    e887ca46:	18853703          	ld	a4,392(a0)
    e887ca4a:	97ba                	add	a5,a5,a4
    e887ca4c:	0a000713          	li	a4,160
        aecm->aecmCore->supGainErrParamDiffBD = (SUPGAIN_ERROR_PARAM_B << 1)
    e887ca50:	36e79e23          	sh	a4,892(a5) # 437c <memcmp-0xe87fbc84>
    return 0;
    e887ca54:	4501                	li	a0,0
    e887ca56:	8082                	ret
    } else if (aecm->echoMode == 1)
    e887ca58:	2681                	sext.w	a3,a3
    e887ca5a:	04c69463          	bne	a3,a2,e887caa2 <WebRtcAecm_set_config+0xf0>
        aecm->aecmCore->supGain = SUPGAIN_DEFAULT >> 2;
    e887ca5e:	04000693          	li	a3,64
    e887ca62:	36d71923          	sh	a3,882(a4)
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT >> 2;
    e887ca66:	18853703          	ld	a4,392(a0)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A >> 2;
    e887ca6a:	30000613          	li	a2,768
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT >> 2;
    e887ca6e:	973e                	add	a4,a4,a5
    e887ca70:	36d71a23          	sh	a3,884(a4)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A >> 2;
    e887ca74:	18853703          	ld	a4,392(a0)
    e887ca78:	973e                	add	a4,a4,a5
    e887ca7a:	36c71b23          	sh	a2,886(a4)
        aecm->aecmCore->supGainErrParamD = SUPGAIN_ERROR_PARAM_D >> 2;
    e887ca7e:	18853703          	ld	a4,392(a0)
    e887ca82:	973e                	add	a4,a4,a5
    e887ca84:	36d71c23          	sh	a3,888(a4)
        aecm->aecmCore->supGainErrParamDiffAB = (SUPGAIN_ERROR_PARAM_A >> 2)
    e887ca88:	18853703          	ld	a4,392(a0)
    e887ca8c:	18000693          	li	a3,384
    e887ca90:	973e                	add	a4,a4,a5
    e887ca92:	36d71d23          	sh	a3,890(a4)
        aecm->aecmCore->supGainErrParamDiffBD = (SUPGAIN_ERROR_PARAM_B >> 2)
    e887ca96:	18853703          	ld	a4,392(a0)
    e887ca9a:	97ba                	add	a5,a5,a4
    e887ca9c:	14000713          	li	a4,320
    e887caa0:	bf45                	j	e887ca50 <WebRtcAecm_set_config+0x9e>
    } else if (aecm->echoMode == 2)
    e887caa2:	4609                	li	a2,2
    e887caa4:	04c69463          	bne	a3,a2,e887caec <WebRtcAecm_set_config+0x13a>
        aecm->aecmCore->supGain = SUPGAIN_DEFAULT >> 1;
    e887caa8:	08000693          	li	a3,128
    e887caac:	36d71923          	sh	a3,882(a4)
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT >> 1;
    e887cab0:	18853703          	ld	a4,392(a0)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A >> 1;
    e887cab4:	60000613          	li	a2,1536
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT >> 1;
    e887cab8:	973e                	add	a4,a4,a5
    e887caba:	36d71a23          	sh	a3,884(a4)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A >> 1;
    e887cabe:	18853703          	ld	a4,392(a0)
    e887cac2:	973e                	add	a4,a4,a5
    e887cac4:	36c71b23          	sh	a2,886(a4)
        aecm->aecmCore->supGainErrParamD = SUPGAIN_ERROR_PARAM_D >> 1;
    e887cac8:	18853703          	ld	a4,392(a0)
    e887cacc:	973e                	add	a4,a4,a5
    e887cace:	36d71c23          	sh	a3,888(a4)
        aecm->aecmCore->supGainErrParamDiffAB = (SUPGAIN_ERROR_PARAM_A >> 1)
    e887cad2:	18853703          	ld	a4,392(a0)
    e887cad6:	30000693          	li	a3,768
    e887cada:	973e                	add	a4,a4,a5
    e887cadc:	36d71d23          	sh	a3,890(a4)
        aecm->aecmCore->supGainErrParamDiffBD = (SUPGAIN_ERROR_PARAM_B >> 1)
    e887cae0:	18853703          	ld	a4,392(a0)
    e887cae4:	97ba                	add	a5,a5,a4
    e887cae6:	28000713          	li	a4,640
    e887caea:	b79d                	j	e887ca50 <WebRtcAecm_set_config+0x9e>
    } else if (aecm->echoMode == 3)
    e887caec:	460d                	li	a2,3
    e887caee:	04c69563          	bne	a3,a2,e887cb38 <WebRtcAecm_set_config+0x186>
        aecm->aecmCore->supGain = SUPGAIN_DEFAULT;
    e887caf2:	10000693          	li	a3,256
    e887caf6:	36d71923          	sh	a3,882(a4)
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT;
    e887cafa:	18853703          	ld	a4,392(a0)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A;
    e887cafe:	6605                	lui	a2,0x1
    e887cb00:	c006061b          	addiw	a2,a2,-1024
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT;
    e887cb04:	973e                	add	a4,a4,a5
    e887cb06:	36d71a23          	sh	a3,884(a4)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A;
    e887cb0a:	18853703          	ld	a4,392(a0)
    e887cb0e:	973e                	add	a4,a4,a5
    e887cb10:	36c71b23          	sh	a2,886(a4)
        aecm->aecmCore->supGainErrParamD = SUPGAIN_ERROR_PARAM_D;
    e887cb14:	18853703          	ld	a4,392(a0)
    e887cb18:	973e                	add	a4,a4,a5
    e887cb1a:	36d71c23          	sh	a3,888(a4)
        aecm->aecmCore->supGainErrParamDiffAB = SUPGAIN_ERROR_PARAM_A - SUPGAIN_ERROR_PARAM_B;
    e887cb1e:	18853703          	ld	a4,392(a0)
    e887cb22:	60000693          	li	a3,1536
    e887cb26:	973e                	add	a4,a4,a5
    e887cb28:	36d71d23          	sh	a3,890(a4)
        aecm->aecmCore->supGainErrParamDiffBD = SUPGAIN_ERROR_PARAM_B - SUPGAIN_ERROR_PARAM_D;
    e887cb2c:	18853703          	ld	a4,392(a0)
    e887cb30:	97ba                	add	a5,a5,a4
    e887cb32:	50000713          	li	a4,1280
    e887cb36:	bf29                	j	e887ca50 <WebRtcAecm_set_config+0x9e>
        aecm->aecmCore->supGain = SUPGAIN_DEFAULT << 1;
    e887cb38:	20000693          	li	a3,512
    e887cb3c:	36d71923          	sh	a3,882(a4)
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT << 1;
    e887cb40:	18853703          	ld	a4,392(a0)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A << 1;
    e887cb44:	6609                	lui	a2,0x2
    e887cb46:	8006061b          	addiw	a2,a2,-2048
        aecm->aecmCore->supGainOld = SUPGAIN_DEFAULT << 1;
    e887cb4a:	973e                	add	a4,a4,a5
    e887cb4c:	36d71a23          	sh	a3,884(a4)
        aecm->aecmCore->supGainErrParamA = SUPGAIN_ERROR_PARAM_A << 1;
    e887cb50:	18853703          	ld	a4,392(a0)
    e887cb54:	973e                	add	a4,a4,a5
    e887cb56:	36c71b23          	sh	a2,886(a4)
        aecm->aecmCore->supGainErrParamD = SUPGAIN_ERROR_PARAM_D << 1;
    e887cb5a:	18853703          	ld	a4,392(a0)
    e887cb5e:	973e                	add	a4,a4,a5
    e887cb60:	36d71c23          	sh	a3,888(a4)
        aecm->aecmCore->supGainErrParamDiffAB = (SUPGAIN_ERROR_PARAM_A << 1)
    e887cb64:	18853683          	ld	a3,392(a0)
    e887cb68:	6705                	lui	a4,0x1
    e887cb6a:	c007061b          	addiw	a2,a4,-1024
    e887cb6e:	96be                	add	a3,a3,a5
    e887cb70:	36c69d23          	sh	a2,890(a3) # 137a <memcmp-0xe87fec86>
        aecm->aecmCore->supGainErrParamDiffBD = (SUPGAIN_ERROR_PARAM_B << 1)
    e887cb74:	18853683          	ld	a3,392(a0)
    e887cb78:	a007071b          	addiw	a4,a4,-1536
    e887cb7c:	97b6                	add	a5,a5,a3
    e887cb7e:	bdc9                	j	e887ca50 <WebRtcAecm_set_config+0x9e>

00000000e887cb80 <WebRtcAecm_Init>:
    if (aecm == NULL)
    e887cb80:	c105                	beqz	a0,e887cba0 <WebRtcAecm_Init+0x20>
    if (sampFreq != 8000 && sampFreq != 16000)
    e887cb82:	6789                	lui	a5,0x2
    e887cb84:	f4078793          	addi	a5,a5,-192 # 1f40 <memcmp-0xe87fe0c0>
    e887cb88:	00f58e63          	beq	a1,a5,e887cba4 <WebRtcAecm_Init+0x24>
    e887cb8c:	6791                	lui	a5,0x4
    e887cb8e:	e8078793          	addi	a5,a5,-384 # 3e80 <memcmp-0xe87fc180>
    e887cb92:	00f58963          	beq	a1,a5,e887cba4 <WebRtcAecm_Init+0x24>
        aecm->lastError = AECM_BAD_PARAMETER_ERROR;
    e887cb96:	678d                	lui	a5,0x3
    e887cb98:	ee47879b          	addiw	a5,a5,-284
    e887cb9c:	18f52023          	sw	a5,384(a0)
        return -1;
    e887cba0:	557d                	li	a0,-1
}
    e887cba2:	8082                	ret
{
    e887cba4:	1101                	addi	sp,sp,-32
    e887cba6:	e422                	sd	s0,8(sp)
    e887cba8:	e826                	sd	s1,16(sp)
    e887cbaa:	ec06                	sd	ra,24(sp)
    e887cbac:	842a                	mv	s0,a0
    aecm->sampFreq = sampFreq;
    e887cbae:	c10c                	sw	a1,0(a0)
    if (WebRtcAecm_InitCore(aecm->aecmCore, aecm->sampFreq) == -1)
    e887cbb0:	18853503          	ld	a0,392(a0)
    e887cbb4:	54fd                	li	s1,-1
    e887cbb6:	014040ef          	jal	ra,e8880bca <WebRtcAecm_InitCore>
    e887cbba:	00951d63          	bne	a0,s1,e887cbd4 <WebRtcAecm_Init+0x54>
        aecm->lastError = AECM_UNSPECIFIED_ERROR;
    e887cbbe:	678d                	lui	a5,0x3
    e887cbc0:	ee07879b          	addiw	a5,a5,-288
    e887cbc4:	18f42023          	sw	a5,384(s0)
        return -1;
    e887cbc8:	557d                	li	a0,-1
}
    e887cbca:	60e2                	ld	ra,24(sp)
    e887cbcc:	6422                	ld	s0,8(sp)
    e887cbce:	64c2                	ld	s1,16(sp)
    e887cbd0:	6105                	addi	sp,sp,32
    e887cbd2:	8082                	ret
    if (WebRtc_InitBuffer(aecm->farendBuf) == -1)
    e887cbd4:	17843503          	ld	a0,376(s0)
    e887cbd8:	682030ef          	jal	ra,e888025a <WebRtc_InitBuffer>
    e887cbdc:	fe9501e3          	beq	a0,s1,e887cbbe <WebRtcAecm_Init+0x3e>
    aecm->initFlag = kInitCheck; // indicates that initialization has been done
    e887cbe0:	02a00793          	li	a5,42
    e887cbe4:	14f43823          	sd	a5,336(s0)
    aecm->timeForDelayChange = 0;
    e887cbe8:	4785                	li	a5,1
    e887cbea:	1782                	slli	a5,a5,0x20
    e887cbec:	16f43023          	sd	a5,352(s0)
    aecm->checkBuffSize = 1;
    e887cbf0:	0785                	addi	a5,a5,1
    memset(&aecm->farendOld[0][0], 0, 160);
    e887cbf2:	4581                	li	a1,0
    e887cbf4:	01040513          	addi	a0,s0,16
    aecm->bufSizeStart = 0;
    e887cbf8:	00041423          	sh	zero,8(s0)
    aecm->checkBufSizeCtr = 0;
    e887cbfc:	14041c23          	sh	zero,344(s0)
    aecm->filtDelay = 0;
    e887cc00:	14041e23          	sh	zero,348(s0)
    aecm->knownDelay = 0;
    e887cc04:	00042623          	sw	zero,12(s0)
    aecm->checkBuffSize = 1;
    e887cc08:	16f43423          	sd	a5,360(s0)
    aecm->lastDelayDiff = 0;
    e887cc0c:	16041823          	sh	zero,368(s0)
    memset(&aecm->farendOld[0][0], 0, 160);
    e887cc10:	0a000613          	li	a2,160
    e887cc14:	f80ff0ef          	jal	ra,e887c394 <eLIBs_memset>
    if (WebRtcAecm_set_config(aecm, aecConfig) == -1)
    e887cc18:	000305b7          	lui	a1,0x30
    e887cc1c:	2585                	addiw	a1,a1,1
    e887cc1e:	8522                	mv	a0,s0
    e887cc20:	d93ff0ef          	jal	ra,e887c9b2 <WebRtcAecm_set_config>
    e887cc24:	f8950de3          	beq	a0,s1,e887cbbe <WebRtcAecm_Init+0x3e>
    return 0;
    e887cc28:	4501                	li	a0,0
    e887cc2a:	b745                	j	e887cbca <WebRtcAecm_Init+0x4a>

00000000e887cc2c <WebRtcAgc_UpdateAgcThresholds>:
    }
    return 0;
}

void WebRtcAgc_UpdateAgcThresholds(Agc_t *stt)
{
    e887cc2c:	1141                	addi	sp,sp,-16
    e887cc2e:	e022                	sd	s0,0(sp)
    e887cc30:	e406                	sd	ra,8(sp)
    e887cc32:	842a                	mv	s0,a0
        stt->targetIdxOffset = WEBRTC_SPL_RSHIFT_W16((3 * zeros) - stt->targetIdx - 2, 2);
    }
#endif

    /* Set analog target level in envelope dBOv scale */
    tmp16 = (DIFF_REF_TO_ANALOG * stt->compressionGaindB) + ANALOG_TARGET_LEVEL_2;
    e887cc34:	00455503          	lhu	a0,4(a0)
    e887cc38:	4795                	li	a5,5
    tmp16 = WebRtcSpl_DivW32W16ResW16((int32_t)tmp16, ANALOG_TARGET_LEVEL);
    e887cc3a:	45ad                	li	a1,11
    tmp16 = (DIFF_REF_TO_ANALOG * stt->compressionGaindB) + ANALOG_TARGET_LEVEL_2;
    e887cc3c:	2505                	addiw	a0,a0,1
    e887cc3e:	02f5053b          	mulw	a0,a0,a5
    tmp16 = WebRtcSpl_DivW32W16ResW16((int32_t)tmp16, ANALOG_TARGET_LEVEL);
    e887cc42:	3c05250b          	ext	a0,a0,15,0
    e887cc46:	089030ef          	jal	ra,e88804ce <WebRtcSpl_DivW32W16ResW16>
    stt->analogTarget = DIGITAL_REF_AT_0_COMP_GAIN + tmp16;
    e887cc4a:	2511                	addiw	a0,a0,4
    e887cc4c:	3c05250b          	ext	a0,a0,15,0
    if (stt->analogTarget < DIGITAL_REF_AT_0_COMP_GAIN)
    e887cc50:	478d                	li	a5,3
    e887cc52:	06a7d563          	bge	a5,a0,e887ccbc <WebRtcAgc_UpdateAgcThresholds+0x90>
    stt->analogTarget = DIGITAL_REF_AT_0_COMP_GAIN + tmp16;
    e887cc56:	02a41d23          	sh	a0,58(s0)
    {
        stt->analogTarget = DIGITAL_REF_AT_0_COMP_GAIN;
    }
    if (stt->agcMode == kAgcModeFixedDigital)
    e887cc5a:	00841703          	lh	a4,8(s0)
    e887cc5e:	478d                	li	a5,3
    e887cc60:	00f71663          	bne	a4,a5,e887cc6c <WebRtcAgc_UpdateAgcThresholds+0x40>
    {
        /* Adjust for different parameter interpretation in FixedDigital mode */
        stt->analogTarget = stt->compressionGaindB;
    e887cc64:	00445783          	lhu	a5,4(s0)
    e887cc68:	02f41d23          	sh	a5,58(s0)
#ifdef MIC_LEVEL_FEEDBACK
    stt->targetIdx += stt->targetIdxOffset;
#endif
    /* Analog adaptation limits */
    /* analogTargetLevel = round((32767*10^(-targetIdx/20))^2*16/2^7) */
    stt->analogTargetLevel = RXX_BUFFER_LEN * kTargetLevelTable[stt->targetIdx]; /* ex. -20 dBov */
    e887cc6c:	00050797          	auipc	a5,0x50
    e887cc70:	42c78793          	addi	a5,a5,1068 # e88cd098 <kCurve25519BasePoint+0xd8>
    e887cc74:	639c                	ld	a5,0(a5)
    stt->lowerPrimaryLimit = RXX_BUFFER_LEN * kTargetLevelTable[stt->targetIdx + 2];/* -22 dBov */
    stt->upperSecondaryLimit = RXX_BUFFER_LEN * kTargetLevelTable[stt->targetIdx - 5];/* -15 dBov */
    stt->lowerSecondaryLimit = RXX_BUFFER_LEN * kTargetLevelTable[stt->targetIdx + 5];/* -25 dBov */
    stt->upperLimit = stt->startUpperLimit;
    stt->lowerLimit = stt->startLowerLimit;
}
    e887cc76:	60a2                	ld	ra,8(sp)
    stt->analogTargetLevel = RXX_BUFFER_LEN * kTargetLevelTable[stt->targetIdx]; /* ex. -20 dBov */
    e887cc78:	00f43e23          	sd	a5,28(s0)
    stt->startLowerLimit = RXX_BUFFER_LEN * kTargetLevelTable[stt->targetIdx + 1];/* -21 dBov */
    e887cc7c:	00050797          	auipc	a5,0x50
    e887cc80:	42478793          	addi	a5,a5,1060 # e88cd0a0 <kCurve25519BasePoint+0xe0>
    e887cc84:	639c                	ld	a5,0(a5)
    e887cc86:	02f43223          	sd	a5,36(s0)
    stt->lowerPrimaryLimit = RXX_BUFFER_LEN * kTargetLevelTable[stt->targetIdx + 2];/* -22 dBov */
    e887cc8a:	00050797          	auipc	a5,0x50
    e887cc8e:	41e78793          	addi	a5,a5,1054 # e88cd0a8 <kCurve25519BasePoint+0xe8>
    e887cc92:	639c                	ld	a5,0(a5)
    e887cc94:	02f43623          	sd	a5,44(s0)
    stt->lowerSecondaryLimit = RXX_BUFFER_LEN * kTargetLevelTable[stt->targetIdx + 5];/* -25 dBov */
    e887cc98:	0040c7b7          	lui	a5,0x40c
    e887cc9c:	2707879b          	addiw	a5,a5,624
    e887cca0:	d85c                	sw	a5,52(s0)
    stt->targetIdx = ANALOG_TARGET_LEVEL + OFFSET_ENV_TO_RMS;
    e887cca2:	47d1                	li	a5,20
    e887cca4:	02f41c23          	sh	a5,56(s0)
    stt->upperLimit = stt->startUpperLimit;
    e887cca8:	00050797          	auipc	a5,0x50
    e887ccac:	40878793          	addi	a5,a5,1032 # e88cd0b0 <kCurve25519BasePoint+0xf0>
    e887ccb0:	639c                	ld	a5,0(a5)
    e887ccb2:	04f43e23          	sd	a5,92(s0)
}
    e887ccb6:	6402                	ld	s0,0(sp)
    e887ccb8:	0141                	addi	sp,sp,16
    e887ccba:	8082                	ret
        stt->analogTarget = DIGITAL_REF_AT_0_COMP_GAIN;
    e887ccbc:	4791                	li	a5,4
    e887ccbe:	02f41d23          	sh	a5,58(s0)
    e887ccc2:	bf61                	j	e887cc5a <WebRtcAgc_UpdateAgcThresholds+0x2e>

00000000e887ccc4 <WebRtcAgc_set_config>:

    return 0;
}

int WebRtcAgc_set_config(void *agcInst, WebRtcAgc_config_t agcConfig)
{
    e887ccc4:	7139                	addi	sp,sp,-64
    e887ccc6:	f44a                	sd	s2,40(sp)
    e887ccc8:	f84e                	sd	s3,48(sp)
    e887ccca:	fc06                	sd	ra,56(sp)
    e887cccc:	ec22                	sd	s0,24(sp)
    e887ccce:	f026                	sd	s1,32(sp)
    e887ccd0:	7d05a98b          	ext	s3,a1,31,16
    e887ccd4:	9e05b90b          	extu	s2,a1,39,32
    Agc_t *stt;
    stt = (Agc_t *)agcInst;

    if (stt == NULL)
    e887ccd8:	e909                	bnez	a0,e887ccea <WebRtcAgc_set_config+0x26>
    }

    if (stt->initFlag != kInitCheck)
    {
        stt->lastError = AGC_UNINITIALIZED_ERROR;
        return -1;
    e887ccda:	557d                	li	a0,-1
    stt->usedConfig.compressionGaindB = agcConfig.compressionGaindB;
    stt->usedConfig.limiterEnable = agcConfig.limiterEnable;
    stt->usedConfig.targetLevelDbfs = agcConfig.targetLevelDbfs;

    return 0;
}
    e887ccdc:	70e2                	ld	ra,56(sp)
    e887ccde:	6462                	ld	s0,24(sp)
    e887cce0:	7482                	ld	s1,32(sp)
    e887cce2:	7922                	ld	s2,40(sp)
    e887cce4:	79c2                	ld	s3,48(sp)
    e887cce6:	6121                	addi	sp,sp,64
    e887cce8:	8082                	ret
    if (stt->initFlag != kInitCheck)
    e887ccea:	01851703          	lh	a4,24(a0)
    e887ccee:	02a00793          	li	a5,42
    e887ccf2:	00f70863          	beq	a4,a5,e887cd02 <WebRtcAgc_set_config+0x3e>
        stt->lastError = AGC_UNINITIALIZED_ERROR;
    e887ccf6:	6791                	lui	a5,0x4
    e887ccf8:	6527879b          	addiw	a5,a5,1618
    e887ccfc:	00f51d23          	sh	a5,26(a0)
    e887cd00:	bfe9                	j	e887ccda <WebRtcAgc_set_config+0x16>
    if (agcConfig.limiterEnable != kAgcFalse && agcConfig.limiterEnable != kAgcTrue)
    e887cd02:	4785                	li	a5,1
    e887cd04:	0127f663          	bgeu	a5,s2,e887cd10 <WebRtcAgc_set_config+0x4c>
        stt->lastError = AGC_BAD_PARAMETER_ERROR;
    e887cd08:	6791                	lui	a5,0x4
    e887cd0a:	6547879b          	addiw	a5,a5,1620
    e887cd0e:	b7fd                	j	e887ccfc <WebRtcAgc_set_config+0x38>
    e887cd10:	3c05a48b          	ext	s1,a1,15,0
    stt->limiterEnable = agcConfig.limiterEnable;
    e887cd14:	01250523          	sb	s2,10(a0)
    stt->compressionGaindB = agcConfig.compressionGaindB;
    e887cd18:	01351223          	sh	s3,4(a0)
    if ((agcConfig.targetLevelDbfs < 0) || (agcConfig.targetLevelDbfs > 31))
    e887cd1c:	3c04b78b          	extu	a5,s1,15,0
    e887cd20:	477d                	li	a4,31
    e887cd22:	fef763e3          	bltu	a4,a5,e887cd08 <WebRtcAgc_set_config+0x44>
    if (stt->agcMode == kAgcModeFixedDigital)
    e887cd26:	00851703          	lh	a4,8(a0)
    stt->targetLevelDbfs = agcConfig.targetLevelDbfs;
    e887cd2a:	00951323          	sh	s1,6(a0)
    if (stt->agcMode == kAgcModeFixedDigital)
    e887cd2e:	478d                	li	a5,3
    e887cd30:	00f71663          	bne	a4,a5,e887cd3c <WebRtcAgc_set_config+0x78>
        stt->compressionGaindB += agcConfig.targetLevelDbfs;
    e887cd34:	013487bb          	addw	a5,s1,s3
    e887cd38:	00f51223          	sh	a5,4(a0)
    e887cd3c:	842a                	mv	s0,a0
    WebRtcAgc_UpdateAgcThresholds(stt);
    e887cd3e:	eefff0ef          	jal	ra,e887cc2c <WebRtcAgc_UpdateAgcThresholds>
    if (WebRtcAgc_CalculateGainTable(&(stt->digitalAgc.gainTable[0]), stt->compressionGaindB,
    e887cd42:	03a41703          	lh	a4,58(s0)
    e887cd46:	00a44683          	lbu	a3,10(s0)
    e887cd4a:	00641603          	lh	a2,6(s0)
    e887cd4e:	00441583          	lh	a1,4(s0)
    e887cd52:	1a040513          	addi	a0,s0,416
    e887cd56:	278000ef          	jal	ra,e887cfce <WebRtcAgc_CalculateGainTable>
    e887cd5a:	57fd                	li	a5,-1
    e887cd5c:	f6f50fe3          	beq	a0,a5,e887ccda <WebRtcAgc_set_config+0x16>
    stt->usedConfig.compressionGaindB = agcConfig.compressionGaindB;
    e887cd60:	01341a23          	sh	s3,20(s0)
    stt->usedConfig.limiterEnable = agcConfig.limiterEnable;
    e887cd64:	01240b23          	sb	s2,22(s0)
    stt->usedConfig.targetLevelDbfs = agcConfig.targetLevelDbfs;
    e887cd68:	00941923          	sh	s1,18(s0)
    return 0;
    e887cd6c:	4501                	li	a0,0
    e887cd6e:	b7bd                	j	e887ccdc <WebRtcAgc_set_config+0x18>

00000000e887cd70 <WebRtcAgc_Create>:
}

int WebRtcAgc_Create(void **agcInst)
{
    Agc_t *stt;
    if (agcInst == NULL)
    e887cd70:	e901                	bnez	a0,e887cd80 <WebRtcAgc_Create+0x10>
    {
        return -1;
    e887cd72:	557d                	li	a0,-1

    stt->initFlag = 0;
    stt->lastError = 0;

    return 0;
}
    e887cd74:	8082                	ret
        return -1;
    e887cd76:	557d                	li	a0,-1
}
    e887cd78:	60a2                	ld	ra,8(sp)
    e887cd7a:	6402                	ld	s0,0(sp)
    e887cd7c:	0141                	addi	sp,sp,16
    e887cd7e:	8082                	ret
{
    e887cd80:	1141                	addi	sp,sp,-16
    e887cd82:	e022                	sd	s0,0(sp)
    e887cd84:	842a                	mv	s0,a0
    stt = (Agc_t *)malloc(sizeof(Agc_t));
    e887cd86:	29800513          	li	a0,664
{
    e887cd8a:	e406                	sd	ra,8(sp)
    stt = (Agc_t *)malloc(sizeof(Agc_t));
    e887cd8c:	ac3fe0ef          	jal	ra,e887b84e <my_malloc>
    *agcInst = stt;
    e887cd90:	e008                	sd	a0,0(s0)
    if (stt == NULL)
    e887cd92:	d175                	beqz	a0,e887cd76 <WebRtcAgc_Create+0x6>
    stt->initFlag = 0;
    e887cd94:	00052c23          	sw	zero,24(a0)
    return 0;
    e887cd98:	4501                	li	a0,0
    e887cd9a:	bff9                	j	e887cd78 <WebRtcAgc_Create+0x8>

00000000e887cd9c <WebRtcAgc_Free>:

int WebRtcAgc_Free(void *state)
{
    e887cd9c:	1141                	addi	sp,sp,-16
    e887cd9e:	e406                	sd	ra,8(sp)
#ifdef AGC_DEBUG
    fclose(stt->fpt);
    fclose(stt->agcLog);
    fclose(stt->digitalAgc.logFile);
#endif
    free(stt);
    e887cda0:	d60ff0ef          	jal	ra,e887c300 <eLIBs_free>

    return 0;
}
    e887cda4:	60a2                	ld	ra,8(sp)
    e887cda6:	4501                	li	a0,0
    e887cda8:	0141                	addi	sp,sp,16
    e887cdaa:	8082                	ret

00000000e887cdac <WebRtcAgc_Init>:
/* minLevel     - Minimum volume level
 * maxLevel     - Maximum volume level
 */
int WebRtcAgc_Init(void *agcInst, int32_t minLevel, int32_t maxLevel,
                   int16_t agcMode, uint32_t fs)
{
    e887cdac:	7179                	addi	sp,sp,-48
    e887cdae:	fa91540b          	sdd	s0,s1,(sp),1,4
    e887cdb2:	f04a                	sd	s2,32(sp)
    e887cdb4:	842a                	mv	s0,a0
    e887cdb6:	892e                	mv	s2,a1
    Agc_t *stt;

    /* typecast state pointer */
    stt = (Agc_t *)agcInst;

    if (WebRtcAgc_InitDigital(&stt->digitalAgc, agcMode) != 0)
    e887cdb8:	19450513          	addi	a0,a0,404
    e887cdbc:	85b6                	mv	a1,a3
{
    e887cdbe:	e43a                	sd	a4,8(sp)
    if (WebRtcAgc_InitDigital(&stt->digitalAgc, agcMode) != 0)
    e887cdc0:	e036                	sd	a3,0(sp)
{
    e887cdc2:	f406                	sd	ra,40(sp)
    e887cdc4:	84b2                	mv	s1,a2
    if (WebRtcAgc_InitDigital(&stt->digitalAgc, agcMode) != 0)
    e887cdc6:	554000ef          	jal	ra,e887d31a <WebRtcAgc_InitDigital>
    e887cdca:	f8e1468b          	ldd	a3,a4,(sp),0,4
    e887cdce:	cd09                	beqz	a0,e887cde8 <WebRtcAgc_Init+0x3c>
    {
        stt->lastError = AGC_UNINITIALIZED_ERROR;
    e887cdd0:	6791                	lui	a5,0x4
    e887cdd2:	6527879b          	addiw	a5,a5,1618
    e887cdd6:	00f41d23          	sh	a5,26(s0)
    if (agcMode < kAgcModeUnchanged || agcMode > kAgcModeFixedDigital)
    {
#ifdef AGC_DEBUG//test log
        fprintf(stt->fpt, "AGC->Init: error, incorrect mode\n\n");
#endif
        return -1;
    e887cdda:	557d                	li	a0,-1
#ifdef AGC_DEBUG//test log
        fprintf(stt->fpt, "\n");
#endif
        return 0;
    }
}
    e887cddc:	70a2                	ld	ra,40(sp)
    e887cdde:	fa91440b          	ldd	s0,s1,(sp),1,4
    e887cde2:	7902                	ld	s2,32(sp)
    e887cde4:	6145                	addi	sp,sp,48
    e887cde6:	8082                	ret
    stt->envSum = 0;
    e887cde8:	10041b23          	sh	zero,278(s0)
    if (agcMode < kAgcModeUnchanged || agcMode > kAgcModeFixedDigital)
    e887cdec:	3c06b78b          	extu	a5,a3,15,0
    e887cdf0:	460d                	li	a2,3
    e887cdf2:	fef664e3          	bltu	a2,a5,e887cdda <WebRtcAgc_Init+0x2e>
    stt->fs = fs;
    e887cdf6:	c018                	sw	a4,0(s0)
    stt->agcMode = agcMode;
    e887cdf8:	00d41423          	sh	a3,8(s0)
    WebRtcAgc_InitVad(&stt->vadMic);
    e887cdfc:	15c40513          	addi	a0,s0,348
    e887ce00:	4e4000ef          	jal	ra,e887d2e4 <WebRtcAgc_InitVad>
    stt->scale = 0;
    e887ce04:	14041c23          	sh	zero,344(s0)
    if (stt->agcMode == kAgcModeAdaptiveDigital)
    e887ce08:	00841703          	lh	a4,8(s0)
    e887ce0c:	4789                	li	a5,2
    e887ce0e:	00f71563          	bne	a4,a5,e887ce18 <WebRtcAgc_Init+0x6c>
        minLevel = 0;
    e887ce12:	4901                	li	s2,0
        maxLevel = 255;
    e887ce14:	0ff00493          	li	s1,255
    max_add = WEBRTC_SPL_RSHIFT_W32(maxLevel - minLevel, 2);
    e887ce18:	412487bb          	subw	a5,s1,s2
    e887ce1c:	4027d79b          	sraiw	a5,a5,0x2
    stt->maxLevel = maxLevel + max_add;
    e887ce20:	9fa5                	addw	a5,a5,s1
    stt->minLevel = minLevel;
    e887ce22:	15242623          	sw	s2,332(s0)
    stt->maxAnalog = maxLevel;
    e887ce26:	14942223          	sw	s1,324(s0)
    stt->maxLevel = maxLevel + max_add;
    e887ce2a:	14f42023          	sw	a5,320(s0)
    stt->maxInit = stt->maxLevel;
    e887ce2e:	14f42423          	sw	a5,328(s0)
    stt->zeroCtrlMax = stt->maxAnalog;
    e887ce32:	14942a23          	sw	s1,340(s0)
    if (stt->agcMode == kAgcModeAdaptiveDigital)
    e887ce36:	4689                	li	a3,2
    e887ce38:	0ed70163          	beq	a4,a3,e887cf1a <WebRtcAgc_Init+0x16e>
    stt->micVol = stt->maxAnalog;
    e887ce3c:	12942e23          	sw	s1,316(s0)
    stt->micRef = stt->micVol;
    e887ce40:	13c42703          	lw	a4,316(s0)
    tmp32 = WEBRTC_SPL_RSHIFT_W32((stt->maxLevel - stt->minLevel) * (int32_t)10, 8);
    e887ce44:	412787bb          	subw	a5,a5,s2
    stt->gainTableIdx = 0;
    e887ce48:	12041a23          	sh	zero,308(s0)
    stt->micRef = stt->micVol;
    e887ce4c:	12e42823          	sw	a4,304(s0)
    stt->micGainIdx = 127;
    e887ce50:	07f00713          	li	a4,127
    e887ce54:	12e42c23          	sw	a4,312(s0)
    tmp32 = WEBRTC_SPL_RSHIFT_W32((stt->maxLevel - stt->minLevel) * (int32_t)10, 8);
    e887ce58:	4729                	li	a4,10
    e887ce5a:	02e787bb          	mulw	a5,a5,a4
    stt->Rxx16_LPw32Max = 0;
    e887ce5e:	06042823          	sw	zero,112(s0)
    stt->muteGuardMs = 0;
    e887ce62:	12041623          	sh	zero,300(s0)
    e887ce66:	09c40713          	addi	a4,s0,156
        stt->Rxx16_vectorw32[i] = (int32_t)1000; /* -54dBm0 */
    e887ce6a:	3e800693          	li	a3,1000
    tmp32 = WEBRTC_SPL_RSHIFT_W32((stt->maxLevel - stt->minLevel) * (int32_t)10, 8);
    e887ce6e:	4087d79b          	sraiw	a5,a5,0x8
    stt->minOutput = (stt->minLevel + tmp32);
    e887ce72:	012787bb          	addw	a5,a5,s2
    e887ce76:	14f42823          	sw	a5,336(s0)
    stt->vadThreshold = kNormalVadThreshold;
    e887ce7a:	19000793          	li	a5,400
    e887ce7e:	10f43c23          	sd	a5,280(s0)
    stt->changeToSlowMode = 0;
    e887ce82:	05500793          	li	a5,85
    e887ce86:	17ca                	slli	a5,a5,0x32
    e887ce88:	12f43023          	sd	a5,288(s0)
    stt->msecSpeechInnerChange = kMsecSpeechInner;
    e887ce8c:	20800793          	li	a5,520
    e887ce90:	12f42423          	sw	a5,296(s0)
    e887ce94:	07440793          	addi	a5,s0,116
        stt->Rxx16_vectorw32[i] = (int32_t)1000; /* -54dBm0 */
    e887ce98:	5847d68b          	swia	a3,(a5),4,0
    for (i = 0; i < RXX_BUFFER_LEN; i++)
    e887ce9c:	fee79ee3          	bne	a5,a4,e887ce98 <WebRtcAgc_Init+0xec>
    stt->Rxx160w32 = 125 * RXX_BUFFER_LEN; /* (stt->Rxx16_vectorw32[0]>>3) = 125 */
    e887cea0:	00fe77b7          	lui	a5,0xfe7
    e887cea4:	07da                	slli	a5,a5,0x16
    e887cea6:	4e278793          	addi	a5,a5,1250 # fe74e2 <memcmp-0xe7818b1e>
    e887ceaa:	06f43223          	sd	a5,100(s0)
    stt->Rxx16pos = 0;
    e887ceae:	10041a23          	sh	zero,276(s0)
        stt->Rxx16w32_array[0][i] = 0;
    e887ceb2:	08043e23          	sd	zero,156(s0)
    e887ceb6:	0a043223          	sd	zero,164(s0)
    e887ceba:	0a042623          	sw	zero,172(s0)
    for (i = 0; i < 10; i++)
    e887cebe:	0c440793          	addi	a5,s0,196
    e887cec2:	0ec40713          	addi	a4,s0,236
        stt->env[0][i] = 0;
    e887cec6:	0007a023          	sw	zero,0(a5)
        stt->env[1][i] = 0;
    e887ceca:	0207a423          	sw	zero,40(a5)
    for (i = 0; i < 10; i++)
    e887cece:	0791                	addi	a5,a5,4
    e887ced0:	fee79be3          	bne	a5,a4,e887cec6 <WebRtcAgc_Init+0x11a>
    WebRtcSpl_MemSetW32(stt->filterState, 0, 8);
    e887ced4:	4621                	li	a2,8
    e887ced6:	4581                	li	a1,0
    e887ced8:	03c40513          	addi	a0,s0,60
    stt->inQueue = 0;
    e887cedc:	12041723          	sh	zero,302(s0)
    WebRtcSpl_MemSetW32(stt->filterState, 0, 8);
    e887cee0:	5bc030ef          	jal	ra,e888049c <WebRtcSpl_MemSetW32>
    stt->initFlag = kInitCheck;
    e887cee4:	02a00793          	li	a5,42
    e887cee8:	00f41c23          	sh	a5,24(s0)
    stt->defaultConfig.targetLevelDbfs = AGC_DEFAULT_TARGET_LEVEL;
    e887ceec:	000907b7          	lui	a5,0x90
    e887cef0:	278d                	addiw	a5,a5,3
    e887cef2:	c45c                	sw	a5,12(s0)
    stt->defaultConfig.limiterEnable = kAgcTrue;
    e887cef4:	4785                	li	a5,1
    e887cef6:	00f40823          	sb	a5,16(s0)
    if (WebRtcAgc_set_config(stt, stt->defaultConfig) == -1)
    e887cefa:	00c43583          	ld	a1,12(s0)
    e887cefe:	8522                	mv	a0,s0
    e887cf00:	bc05b58b          	extu	a1,a1,47,0
    e887cf04:	dc1ff0ef          	jal	ra,e887ccc4 <WebRtcAgc_set_config>
    e887cf08:	57fd                	li	a5,-1
    e887cf0a:	00f51d63          	bne	a0,a5,e887cf24 <WebRtcAgc_Init+0x178>
        stt->lastError = AGC_UNSPECIFIED_ERROR;
    e887cf0e:	6791                	lui	a5,0x4
    e887cf10:	6507879b          	addiw	a5,a5,1616
    e887cf14:	00f41d23          	sh	a5,26(s0)
        return -1;
    e887cf18:	b5d1                	j	e887cddc <WebRtcAgc_Init+0x30>
        stt->micVol = 127; /* Mid-point of mic level */
    e887cf1a:	07f00713          	li	a4,127
    e887cf1e:	12e42e23          	sw	a4,316(s0)
    e887cf22:	bf39                	j	e887ce40 <WebRtcAgc_Init+0x94>
    stt->Rxx160_LPw32 = stt->analogTargetLevel; // Initialize rms value
    e887cf24:	4c5c                	lw	a5,28(s0)
    stt->lowLevelSignal = 0;
    e887cf26:	28041a23          	sh	zero,660(s0)
    stt->Rxx160_LPw32 = stt->analogTargetLevel; // Initialize rms value
    e887cf2a:	d47c                	sw	a5,108(s0)
    if ((minLevel >= maxLevel) || (maxLevel & 0xFC000000))
    e887cf2c:	ea9957e3          	bge	s2,s1,e887cdda <WebRtcAgc_Init+0x2e>
    e887cf30:	fc000537          	lui	a0,0xfc000
    e887cf34:	8d65                	and	a0,a0,s1
    e887cf36:	00a03533          	snez	a0,a0
    e887cf3a:	40a00533          	neg	a0,a0
    e887cf3e:	bd79                	j	e887cddc <WebRtcAgc_Init+0x30>

00000000e887cf40 <WebRtcSpl_NormW32.part.0>:

  if (a == 0) {
    return 0;
  }
  else if (a < 0) {
    a = ~a;
    e887cf40:	43f55793          	srai	a5,a0,0x3f
    e887cf44:	8d3d                	xor	a0,a0,a5
  }

  if (!(0xFFFF8000 & a)) {
    e887cf46:	77e1                	lui	a5,0xffff8
    e887cf48:	8fe9                	and	a5,a5,a0
    zeros = 16;
  } else {
    zeros = 0;
    e887cf4a:	0017b793          	seqz	a5,a5
    e887cf4e:	0792                	slli	a5,a5,0x4
  }
  if (!(0xFF800000 & (a << zeros))) zeros += 8;
    e887cf50:	00f5173b          	sllw	a4,a0,a5
    e887cf54:	ff8006b7          	lui	a3,0xff800
    e887cf58:	8f75                	and	a4,a4,a3
    e887cf5a:	e311                	bnez	a4,e887cf5e <WebRtcSpl_NormW32.part.0+0x1e>
    e887cf5c:	27a1                	addiw	a5,a5,8
  if (!(0xF8000000 & (a << zeros))) zeros += 4;
    e887cf5e:	00f5173b          	sllw	a4,a0,a5
    e887cf62:	f80006b7          	lui	a3,0xf8000
    e887cf66:	8f75                	and	a4,a4,a3
    e887cf68:	e311                	bnez	a4,e887cf6c <WebRtcSpl_NormW32.part.0+0x2c>
    e887cf6a:	2791                	addiw	a5,a5,4
  if (!(0xE0000000 & (a << zeros))) zeros += 2;
    e887cf6c:	00f5173b          	sllw	a4,a0,a5
    e887cf70:	e00006b7          	lui	a3,0xe0000
    e887cf74:	8f75                	and	a4,a4,a3
    e887cf76:	e311                	bnez	a4,e887cf7a <WebRtcSpl_NormW32.part.0+0x3a>
    e887cf78:	2789                	addiw	a5,a5,2
  if (!(0xC0000000 & (a << zeros))) zeros += 1;
    e887cf7a:	00f5153b          	sllw	a0,a0,a5
    e887cf7e:	c0000737          	lui	a4,0xc0000
    e887cf82:	8d79                	and	a0,a0,a4
    e887cf84:	e111                	bnez	a0,e887cf88 <WebRtcSpl_NormW32.part.0+0x48>
    e887cf86:	2785                	addiw	a5,a5,1

  return zeros;
}
    e887cf88:	853e                	mv	a0,a5
    e887cf8a:	8082                	ret

00000000e887cf8c <WebRtcSpl_NormU32.part.1>:
static __inline int WebRtcSpl_NormU32(uint32_t a) {
  int zeros;

  if (a == 0) return 0;

  if (!(0xFFFF0000 & a)) {
    e887cf8c:	77c1                	lui	a5,0xffff0
    e887cf8e:	8fe9                	and	a5,a5,a0
    zeros = 16;
  } else {
    zeros = 0;
    e887cf90:	0017b793          	seqz	a5,a5
    e887cf94:	0792                	slli	a5,a5,0x4
  }
  if (!(0xFF000000 & (a << zeros))) zeros += 8;
    e887cf96:	00f5173b          	sllw	a4,a0,a5
    e887cf9a:	ff0006b7          	lui	a3,0xff000
    e887cf9e:	8f75                	and	a4,a4,a3
    e887cfa0:	e311                	bnez	a4,e887cfa4 <WebRtcSpl_NormU32.part.1+0x18>
    e887cfa2:	27a1                	addiw	a5,a5,8
  if (!(0xF0000000 & (a << zeros))) zeros += 4;
    e887cfa4:	00f5173b          	sllw	a4,a0,a5
    e887cfa8:	f00006b7          	lui	a3,0xf0000
    e887cfac:	8f75                	and	a4,a4,a3
    e887cfae:	e311                	bnez	a4,e887cfb2 <WebRtcSpl_NormU32.part.1+0x26>
    e887cfb0:	2791                	addiw	a5,a5,4
  if (!(0xC0000000 & (a << zeros))) zeros += 2;
    e887cfb2:	00f5173b          	sllw	a4,a0,a5
    e887cfb6:	c00006b7          	lui	a3,0xc0000
    e887cfba:	8f75                	and	a4,a4,a3
    e887cfbc:	e311                	bnez	a4,e887cfc0 <WebRtcSpl_NormU32.part.1+0x34>
    e887cfbe:	2789                	addiw	a5,a5,2
  if (!(0x80000000 & (a << zeros))) zeros += 1;
    e887cfc0:	00f5153b          	sllw	a0,a0,a5
    e887cfc4:	00054363          	bltz	a0,e887cfca <WebRtcSpl_NormU32.part.1+0x3e>
    e887cfc8:	2785                	addiw	a5,a5,1

  return zeros;
}
    e887cfca:	853e                	mv	a0,a5
    e887cfcc:	8082                	ret

00000000e887cfce <WebRtcAgc_CalculateGainTable>:
int32_t WebRtcAgc_CalculateGainTable(int32_t *gainTable, // Q16
                                     int16_t digCompGaindB, // Q0
                                     int16_t targetLevelDbfs,// Q0
                                     uint8_t limiterEnable,
                                     int16_t analogTarget) // Q0
{
    e887cfce:	7171                	addi	sp,sp,-176
    e887cfd0:	e94a                	sd	s2,144(sp)
//    kLog10_2 = 49321; // 10*log10(2)  in Q14

    // Calculate maximum digital gain and zero gain level
    tmp32no1 = WEBRTC_SPL_MUL_16_16(digCompGaindB - analogTarget, kCompRatio - 1);
    tmp16no1 = analogTarget - targetLevelDbfs;
    tmp16no1 += WebRtcSpl_DivW32W16ResW16(tmp32no1 + (kCompRatio >> 1), kCompRatio);
    e887cfd2:	4905                	li	s2,1
    tmp32no1 = WEBRTC_SPL_MUL_16_16(digCompGaindB - analogTarget, kCompRatio - 1);
    e887cfd4:	40e587bb          	subw	a5,a1,a4
{
    e887cfd8:	e54e                	sd	s3,136(sp)
    e887cfda:	e8ea                	sd	s10,80(sp)
    tmp16no1 += WebRtcSpl_DivW32W16ResW16(tmp32no1 + (kCompRatio >> 1), kCompRatio);
    e887cfdc:	4989                	li	s3,2
{
    e887cfde:	8d2a                	mv	s10,a0
    tmp16no1 += WebRtcSpl_DivW32W16ResW16(tmp32no1 + (kCompRatio >> 1), kCompRatio);
    e887cfe0:	854a                	mv	a0,s2
    e887cfe2:	2937950b          	mulah	a0,a5,s3
{
    e887cfe6:	f122                	sd	s0,160(sp)
    e887cfe8:	fcd6                	sd	s5,120(sp)
    tmp16no1 = analogTarget - targetLevelDbfs;
    e887cfea:	40c7043b          	subw	s0,a4,a2
{
    e887cfee:	8aae                	mv	s5,a1
    tmp16no1 += WebRtcSpl_DivW32W16ResW16(tmp32no1 + (kCompRatio >> 1), kCompRatio);
    e887cff0:	458d                	li	a1,3
{
    e887cff2:	f506                	sd	ra,168(sp)
    e887cff4:	ed26                	sd	s1,152(sp)
    e887cff6:	e152                	sd	s4,128(sp)
    e887cff8:	84ba                	mv	s1,a4
    e887cffa:	8a32                	mv	s4,a2
    e887cffc:	f436                	sd	a3,40(sp)
    tmp16no1 = analogTarget - targetLevelDbfs;
    e887cffe:	3c04240b          	ext	s0,s0,15,0
{
    e887d002:	f8da                	sd	s6,112(sp)
    e887d004:	f4de                	sd	s7,104(sp)
    e887d006:	f0e2                	sd	s8,96(sp)
    e887d008:	ece6                	sd	s9,88(sp)
    e887d00a:	e4ee                	sd	s11,72(sp)
    tmp16no1 += WebRtcSpl_DivW32W16ResW16(tmp32no1 + (kCompRatio >> 1), kCompRatio);
    e887d00c:	4c2030ef          	jal	ra,e88804ce <WebRtcSpl_DivW32W16ResW16>
    e887d010:	9d21                	addw	a0,a0,s0
    maxGain = WEBRTC_SPL_MAX(tmp16no1, (analogTarget - targetLevelDbfs));
    e887d012:	2481                	sext.w	s1,s1
    e887d014:	2a01                	sext.w	s4,s4
    e887d016:	4144873b          	subw	a4,s1,s4
    e887d01a:	0105179b          	slliw	a5,a0,0x10
    e887d01e:	4107d69b          	sraiw	a3,a5,0x10
    e887d022:	853a                	mv	a0,a4
    e887d024:	00d52533          	slt	a0,a0,a3
    e887d028:	87b6                	mv	a5,a3
    e887d02a:	40a7178b          	mveqz	a5,a4,a0
    e887d02e:	3c07a50b          	ext	a0,a5,15,0
    tmp32no1 = WEBRTC_SPL_MUL_16_16(maxGain, kCompRatio);
    zeroGainLvl = digCompGaindB;
    zeroGainLvl -= WebRtcSpl_DivW32W16ResW16(tmp32no1 + ((kCompRatio - 1) >> 1),
    e887d032:	874a                	mv	a4,s2
    e887d034:	478d                	li	a5,3
    e887d036:	24f5170b          	mulaw	a4,a0,a5
    e887d03a:	4589                	li	a1,2
    tmp32no1 = WEBRTC_SPL_MUL_16_16(maxGain, kCompRatio);
    e887d03c:	0005041b          	sext.w	s0,a0
    zeroGainLvl -= WebRtcSpl_DivW32W16ResW16(tmp32no1 + ((kCompRatio - 1) >> 1),
    e887d040:	853a                	mv	a0,a4
    e887d042:	48c030ef          	jal	ra,e88804ce <WebRtcSpl_DivW32W16ResW16>

    // Calculate the difference between maximum gain and gain at 0dB0v:
    //  diffGain = maxGain + (compRatio-1)*zeroGainLvl/compRatio
    //           = (compRatio-1)*digCompGaindB/compRatio
    tmp32no1 = WEBRTC_SPL_MUL_16_16(digCompGaindB, kCompRatio - 1);
    diffGain = WebRtcSpl_DivW32W16ResW16(tmp32no1 + (kCompRatio >> 1), kCompRatio);
    e887d046:	854a                	mv	a0,s2
    e887d048:	253a950b          	mulaw	a0,s5,s3
    e887d04c:	458d                	li	a1,3
    e887d04e:	480030ef          	jal	ra,e88804ce <WebRtcSpl_DivW32W16ResW16>
    if (diffGain < 0 || diffGain >= kGenFuncTableSize)
    e887d052:	3c05370b          	extu	a4,a0,15,0
    e887d056:	07f00793          	li	a5,127
    e887d05a:	04e7f463          	bgeu	a5,a4,e887d0a2 <WebRtcAgc_CalculateGainTable+0xd4>
    {
        assert(0);
    e887d05e:	02f00593          	li	a1,47
    e887d062:	00050517          	auipc	a0,0x50
    e887d066:	05650513          	addi	a0,a0,86 # e88cd0b8 <kCurve25519BasePoint+0xf8>
    e887d06a:	b0eff0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e887d06e:	00150593          	addi	a1,a0,1
    e887d072:	06f00613          	li	a2,111
    e887d076:	00023517          	auipc	a0,0x23
    e887d07a:	13a50513          	addi	a0,a0,314 # e88a01b0 <TWO52+0x5b8>
    e887d07e:	a48ff0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        return -1;
    e887d082:	557d                	li	a0,-1
            gainTable[i] = 0;
        }
    }

    return 0;
}
    e887d084:	70aa                	ld	ra,168(sp)
    e887d086:	740a                	ld	s0,160(sp)
    e887d088:	64ea                	ld	s1,152(sp)
    e887d08a:	694a                	ld	s2,144(sp)
    e887d08c:	69aa                	ld	s3,136(sp)
    e887d08e:	6a0a                	ld	s4,128(sp)
    e887d090:	7ae6                	ld	s5,120(sp)
    e887d092:	7b46                	ld	s6,112(sp)
    e887d094:	7ba6                	ld	s7,104(sp)
    e887d096:	7c06                	ld	s8,96(sp)
    e887d098:	6ce6                	ld	s9,88(sp)
    e887d09a:	6d46                	ld	s10,80(sp)
    e887d09c:	6da6                	ld	s11,72(sp)
    e887d09e:	614d                	addi	sp,sp,176
    e887d0a0:	8082                	ret
            + WebRtcSpl_DivW32W16ResW16(WEBRTC_SPL_LSHIFT_W32((int32_t)limiterLvlX, 13),
    e887d0a2:	6599                	lui	a1,0x6
    e887d0a4:	892a                	mv	s2,a0
    e887d0a6:	05458593          	addi	a1,a1,84 # 6054 <memcmp-0xe87f9fac>
    e887d0aa:	00d49513          	slli	a0,s1,0xd
    e887d0ae:	420030ef          	jal	ra,e88804ce <WebRtcSpl_DivW32W16ResW16>
    limiterIdx = 2
    e887d0b2:	2509                	addiw	a0,a0,2
    e887d0b4:	3c05278b          	ext	a5,a0,15,0
    tmp16no1 = WebRtcSpl_DivW32W16ResW16(limiterOffset + (kCompRatio >> 1), kCompRatio);
    e887d0b8:	458d                	li	a1,3
    e887d0ba:	4505                	li	a0,1
    limiterIdx = 2
    e887d0bc:	ec3e                	sd	a5,24(sp)
    tmp16no1 = WebRtcSpl_DivW32W16ResW16(limiterOffset + (kCompRatio >> 1), kCompRatio);
    e887d0be:	410030ef          	jal	ra,e88804ce <WebRtcSpl_DivW32W16ResW16>
    constMaxGain = kGenFuncTable[diffGain]; // in Q8
    e887d0c2:	2901                	sext.w	s2,s2
    e887d0c4:	00050997          	auipc	s3,0x50
    e887d0c8:	0ac98993          	addi	s3,s3,172 # e88cd170 <kGenFuncTable>
    den = WEBRTC_SPL_MUL_16_U16(20, constMaxGain); // in Q8
    e887d0cc:	a329c70b          	lrhu	a4,s3,s2,1
    e887d0d0:	47d1                	li	a5,20
    limiterLvl = targetLevelDbfs + tmp16no1;
    e887d0d2:	0145053b          	addw	a0,a0,s4
    den = WEBRTC_SPL_MUL_16_U16(20, constMaxGain); // in Q8
    e887d0d6:	02e787bb          	mulw	a5,a5,a4
            tmp32 -= WEBRTC_SPL_LSHIFT_W32(limiterLvl, 14); // Q14
    e887d0da:	00e5151b          	slliw	a0,a0,0xe
            y32 = WebRtcSpl_DivW32W16(tmp32 + 10, 20);
    e887d0de:	7a51                	lui	s4,0xffff4
        inLevel = WEBRTC_SPL_LSHIFT_W32((int32_t)diffGain, 14) - inLevel; // Q14
    e887d0e0:	00e9169b          	slliw	a3,s2,0xe
        inLevel = WebRtcSpl_DivW32W16(tmp32, kCompRatio); // Q14
    e887d0e4:	6be1                	lui	s7,0x18
    e887d0e6:	7c21                	lui	s8,0xfffe8
                tmpU32no2 = WEBRTC_SPL_UMUL_32_16(tmpU32no2, kLogE_1); // Q(zeros+13)
    e887d0e8:	6b19                	lui	s6,0x6
            y32 = WebRtcSpl_DivW32W16(tmp32 + 10, 20);
    e887d0ea:	40aa0a3b          	subw	s4,s4,a0
        if (y32 > 39000)
    e887d0ee:	6ca9                	lui	s9,0xa
        inLevel = WEBRTC_SPL_LSHIFT_W32((int32_t)diffGain, 14) - inLevel; // Q14
    e887d0f0:	e436                	sd	a3,8(sp)
        numFIX = WEBRTC_SPL_LSHIFT_W32(WEBRTC_SPL_MUL_16_U16(maxGain, constMaxGain), 6); // Q14
    e887d0f2:	02e4043b          	mulw	s0,s0,a4
    den = WEBRTC_SPL_MUL_16_U16(20, constMaxGain); // in Q8
    e887d0f6:	8abe                	mv	s5,a5
        if (numFIX > (den >> 8))  // |den| is Q8.
    e887d0f8:	83a1                	srli	a5,a5,0x8
    e887d0fa:	e83e                	sd	a5,16(sp)
            tmp32 -= WEBRTC_SPL_LSHIFT_W32(limiterLvl, 14); // Q14
    e887d0fc:	4481                	li	s1,0
        inLevel = WebRtcSpl_DivW32W16(tmp32, kCompRatio); // Q14
    e887d0fe:	152b8b9b          	addiw	s7,s7,338
    e887d102:	eafc0c1b          	addiw	s8,s8,-337
                tmpU32no2 = WEBRTC_SPL_UMUL_32_16(tmpU32no2, kLogE_1); // Q(zeros+13)
    e887d106:	c55b0b1b          	addiw	s6,s6,-939
            y32 = WebRtcSpl_DivW32W16(tmp32 + 10, 20);
    e887d10a:	f61a0a1b          	addiw	s4,s4,-159
        if (y32 > 39000)
    e887d10e:	858c8c93          	addi	s9,s9,-1960 # 9858 <memcmp-0xe87f67a8>
        numFIX = WEBRTC_SPL_LSHIFT_W32(WEBRTC_SPL_MUL_16_U16(maxGain, constMaxGain), 6); // Q14
    e887d112:	0064171b          	slliw	a4,s0,0x6
    e887d116:	f03a                	sd	a4,32(sp)
        tmp32 = WEBRTC_SPL_MUL_16_U16(tmp16, kLog10_2) + 1; // Q14
    e887d118:	00048d9b          	sext.w	s11,s1
        inLevel = WebRtcSpl_DivW32W16(tmp32, kCompRatio); // Q14
    e887d11c:	8562                	mv	a0,s8
    e887d11e:	25bb950b          	mulaw	a0,s7,s11
    e887d122:	458d                	li	a1,3
    e887d124:	398030ef          	jal	ra,e88804bc <WebRtcSpl_DivW32W16>
        inLevel = WEBRTC_SPL_LSHIFT_W32((int32_t)diffGain, 14) - inLevel; // Q14
    e887d128:	67a2                	ld	a5,8(sp)
    e887d12a:	40a7863b          	subw	a2,a5,a0
        absInLevel = (uint32_t)WEBRTC_SPL_ABS_W32(inLevel); // Q14
    e887d12e:	41f6551b          	sraiw	a0,a2,0x1f
    e887d132:	00a647b3          	xor	a5,a2,a0
    e887d136:	9f89                	subw	a5,a5,a0
        tmpU16 = kGenFuncTable[intPart + 1] - kGenFuncTable[intPart]; // Q8
    e887d138:	74e7b70b          	extu	a4,a5,29,14
    e887d13c:	a2e9c40b          	lrhu	s0,s3,a4,1
    e887d140:	0705                	addi	a4,a4,1
    e887d142:	a2e9c68b          	lrhu	a3,s3,a4,1
        absInLevel = (uint32_t)WEBRTC_SPL_ABS_W32(inLevel); // Q14
    e887d146:	853e                	mv	a0,a5
        fracPart = (uint16_t)(absInLevel & 0x00003FFF); // extract the fractional part
    e887d148:	3405370b          	extu	a4,a0,13,0
        tmpU16 = kGenFuncTable[intPart + 1] - kGenFuncTable[intPart]; // Q8
    e887d14c:	9e81                	subw	a3,a3,s0
        tmpU32no1 = WEBRTC_SPL_UMUL_16_16(tmpU16, fracPart); // Q22
    e887d14e:	0106969b          	slliw	a3,a3,0x10
    e887d152:	0106d69b          	srliw	a3,a3,0x10
        tmpU32no1 += WEBRTC_SPL_LSHIFT_U32((uint32_t)kGenFuncTable[intPart], 14); // Q22
    e887d156:	00e4141b          	slliw	s0,s0,0xe
    e887d15a:	24e6940b          	mulaw	s0,a3,a4
    e887d15e:	86a2                	mv	a3,s0
        if (inLevel < 0)
    e887d160:	0c064d63          	bltz	a2,e887d23a <WebRtcAgc_CalculateGainTable+0x26c>
        logApprox = WEBRTC_SPL_RSHIFT_U32(tmpU32no1, 8); // Q14
    e887d164:	8021                	srli	s0,s0,0x8
        numFIX -= WEBRTC_SPL_MUL_32_16((int32_t)logApprox, diffGain); // Q14
    e887d166:	0324043b          	mulw	s0,s0,s2
    e887d16a:	7782                	ld	a5,32(sp)
    e887d16c:	4087853b          	subw	a0,a5,s0
        if (numFIX > (den >> 8))  // |den| is Q8.
    e887d170:	67c2                	ld	a5,16(sp)
        numFIX -= WEBRTC_SPL_MUL_32_16((int32_t)logApprox, diffGain); // Q14
    e887d172:	842a                	mv	s0,a0
        if (numFIX > (den >> 8))  // |den| is Q8.
    e887d174:	12a7d163          	bge	a5,a0,e887d296 <WebRtcAgc_CalculateGainTable+0x2c8>
  if (a == 0) {
    e887d178:	dc9ff0ef          	jal	ra,e887cf40 <WebRtcSpl_NormW32.part.0>
        numFIX = WEBRTC_SPL_LSHIFT_W32(numFIX, zeros); // Q(14+zeros)
    e887d17c:	00a4173b          	sllw	a4,s0,a0
        tmp32no1 = WEBRTC_SPL_SHIFT_W32(den, zeros - 8); // Q(zeros)
    e887d180:	ff85079b          	addiw	a5,a0,-8
        numFIX = WEBRTC_SPL_LSHIFT_W32(numFIX, zeros); // Q(14+zeros)
    e887d184:	843a                	mv	s0,a4
        tmp32no1 = WEBRTC_SPL_SHIFT_W32(den, zeros - 8); // Q(zeros)
    e887d186:	1207c063          	bltz	a5,e887d2a6 <WebRtcAgc_CalculateGainTable+0x2d8>
    e887d18a:	00fa953b          	sllw	a0,s5,a5
        if (numFIX < 0)
    e887d18e:	4015579b          	sraiw	a5,a0,0x1
    e887d192:	12075063          	bgez	a4,e887d2b2 <WebRtcAgc_CalculateGainTable+0x2e4>
            numFIX -= WEBRTC_SPL_RSHIFT_W32(tmp32no1, 1);
    e887d196:	9c1d                	subw	s0,s0,a5
        if (limiterEnable && (i < limiterIdx))
    e887d198:	77a2                	ld	a5,40(sp)
        y32 = WEBRTC_SPL_DIV(numFIX, tmp32no1); // in Q14
    e887d19a:	02a4453b          	divw	a0,s0,a0
        if (limiterEnable && (i < limiterIdx))
    e887d19e:	c38d                	beqz	a5,e887d1c0 <WebRtcAgc_CalculateGainTable+0x1f2>
    e887d1a0:	6762                	ld	a4,24(sp)
    e887d1a2:	0104979b          	slliw	a5,s1,0x10
    e887d1a6:	4107d79b          	sraiw	a5,a5,0x10
    e887d1aa:	00e7db63          	bge	a5,a4,e887d1c0 <WebRtcAgc_CalculateGainTable+0x1f2>
            y32 = WebRtcSpl_DivW32W16(tmp32 + 10, 20);
    e887d1ae:	67b1                	lui	a5,0xc
    e887d1b0:	0a97879b          	addiw	a5,a5,169
    e887d1b4:	8552                	mv	a0,s4
    e887d1b6:	45d1                	li	a1,20
    e887d1b8:	25b7950b          	mulaw	a0,a5,s11
    e887d1bc:	300030ef          	jal	ra,e88804bc <WebRtcSpl_DivW32W16>
        if (y32 > 39000)
    e887d1c0:	6735                	lui	a4,0xd
    e887d1c2:	49a7071b          	addiw	a4,a4,1178
    e887d1c6:	0eacd863          	bge	s9,a0,e887d2b6 <WebRtcAgc_CalculateGainTable+0x2e8>
            tmp32 = WEBRTC_SPL_MUL(y32 >> 1, kLog10) + 4096; // in Q27
    e887d1ca:	4015551b          	sraiw	a0,a0,0x1
    e887d1ce:	6785                	lui	a5,0x1
    e887d1d0:	24e5178b          	mulaw	a5,a0,a4
            tmp32 = WEBRTC_SPL_RSHIFT_W32(tmp32, 13); // in Q14
    e887d1d4:	40d7d79b          	sraiw	a5,a5,0xd
        tmp32 += WEBRTC_SPL_LSHIFT_W32(16, 14); // in Q14 (Make sure final output is in Q16)
    e887d1d8:	00040737          	lui	a4,0x40
    e887d1dc:	00f706bb          	addw	a3,a4,a5
        if (tmp32 > 0)
    e887d1e0:	0e068f63          	beqz	a3,e887d2de <WebRtcAgc_CalculateGainTable+0x310>
            intPart = (int16_t)WEBRTC_SPL_RSHIFT_W32(tmp32, 14);
    e887d1e4:	40e6d59b          	sraiw	a1,a3,0xe
            fracPart = (uint16_t)(tmp32 & 0x00003FFF); // in Q14
    e887d1e8:	3406b68b          	extu	a3,a3,13,0
    e887d1ec:	3c06b68b          	extu	a3,a3,15,0
            if (WEBRTC_SPL_RSHIFT_W32(fracPart, 13))
    e887d1f0:	fcd6b78b          	extu	a5,a3,63,13
            intPart = (int16_t)WEBRTC_SPL_RSHIFT_W32(tmp32, 14);
    e887d1f4:	862e                	mv	a2,a1
            if (WEBRTC_SPL_RSHIFT_W32(fracPart, 13))
    e887d1f6:	0006871b          	sext.w	a4,a3
    e887d1fa:	c7e1                	beqz	a5,e887d2c2 <WebRtcAgc_CalculateGainTable+0x2f4>
                tmp32no2 = WEBRTC_SPL_LSHIFT_W32(1, 14) - fracPart;
    e887d1fc:	6691                	lui	a3,0x4
    e887d1fe:	40e687bb          	subw	a5,a3,a4
                tmp32no2 = WEBRTC_SPL_MUL_32_16(tmp32no2, tmp16);
    e887d202:	6709                	lui	a4,0x2
    e887d204:	6df7071b          	addiw	a4,a4,1759
    e887d208:	02e787bb          	mulw	a5,a5,a4
                tmp32no2 = WEBRTC_SPL_RSHIFT_W32(tmp32no2, 13);
    e887d20c:	40d7d79b          	sraiw	a5,a5,0xd
                tmp32no2 = WEBRTC_SPL_LSHIFT_W32(1, 14) - tmp32no2;
    e887d210:	40f687bb          	subw	a5,a3,a5
            gainTable[i] = WEBRTC_SPL_LSHIFT_W32(1, intPart)
    e887d214:	4705                	li	a4,1
                    + WEBRTC_SPL_SHIFT_W32(fracPart, intPart - 14);
    e887d216:	ff26069b          	addiw	a3,a2,-14
            gainTable[i] = WEBRTC_SPL_LSHIFT_W32(1, intPart)
    e887d21a:	00b7173b          	sllw	a4,a4,a1
                    + WEBRTC_SPL_SHIFT_W32(fracPart, intPart - 14);
    e887d21e:	0a06ca63          	bltz	a3,e887d2d2 <WebRtcAgc_CalculateGainTable+0x304>
    e887d222:	00d797bb          	sllw	a5,a5,a3
    e887d226:	9fb9                	addw	a5,a5,a4
            gainTable[i] = WEBRTC_SPL_LSHIFT_W32(1, intPart)
    e887d228:	449d578b          	srw	a5,s10,s1,2
    for (i = 0; i < 32; i++)
    e887d22c:	0485                	addi	s1,s1,1
    e887d22e:	02000793          	li	a5,32
    e887d232:	eef493e3          	bne	s1,a5,e887d118 <WebRtcAgc_CalculateGainTable+0x14a>
    return 0;
    e887d236:	4501                	li	a0,0
    e887d238:	b5b1                	j	e887d084 <WebRtcAgc_CalculateGainTable+0xb6>
  if (a == 0) return 0;
    e887d23a:	c131                	beqz	a0,e887d27e <WebRtcAgc_CalculateGainTable+0x2b0>
    e887d23c:	fc3e                	sd	a5,56(sp)
    e887d23e:	f836                	sd	a3,48(sp)
    e887d240:	d4dff0ef          	jal	ra,e887cf8c <WebRtcSpl_NormU32.part.1>
            if (zeros < 15)
    e887d244:	4739                	li	a4,14
    e887d246:	fef1468b          	ldd	a3,a5,(sp),3,4
    e887d24a:	04a74163          	blt	a4,a0,e887d28c <WebRtcAgc_CalculateGainTable+0x2be>
                tmpU32no2 = WEBRTC_SPL_RSHIFT_U32(absInLevel, 15 - zeros); // Q(zeros-1)
    e887d24e:	473d                	li	a4,15
    e887d250:	9f09                	subw	a4,a4,a0
    e887d252:	00e7d73b          	srlw	a4,a5,a4
                if (zeros < 9)
    e887d256:	4621                	li	a2,8
                tmpU32no2 = WEBRTC_SPL_UMUL_32_16(tmpU32no2, kLogE_1); // Q(zeros+13)
    e887d258:	036707bb          	mulw	a5,a4,s6
                if (zeros < 9)
    e887d25c:	02a64363          	blt	a2,a0,e887d282 <WebRtcAgc_CalculateGainTable+0x2b4>
                    tmpU32no1 = WEBRTC_SPL_RSHIFT_U32(tmpU32no1, 9 - zeros); // Q(zeros+13)
    e887d260:	4725                	li	a4,9
    e887d262:	40a7053b          	subw	a0,a4,a0
    e887d266:	00a456bb          	srlw	a3,s0,a0
            logApprox = 0;
    e887d26a:	4401                	li	s0,0
            if (tmpU32no2 < tmpU32no1)
    e887d26c:	eed7fde3          	bgeu	a5,a3,e887d166 <WebRtcAgc_CalculateGainTable+0x198>
                logApprox = WEBRTC_SPL_RSHIFT_U32(tmpU32no1 - tmpU32no2, 8 - zerosScale); //Q14
    e887d270:	4421                	li	s0,8
    e887d272:	40f687bb          	subw	a5,a3,a5
    e887d276:	9c09                	subw	s0,s0,a0
    e887d278:	0087d43b          	srlw	s0,a5,s0
    e887d27c:	b5ed                	j	e887d166 <WebRtcAgc_CalculateGainTable+0x198>
    e887d27e:	4501                	li	a0,0
    e887d280:	b7f9                	j	e887d24e <WebRtcAgc_CalculateGainTable+0x280>
                    tmpU32no2 = WEBRTC_SPL_RSHIFT_U32(tmpU32no2, zeros - 9); // Q22
    e887d282:	355d                	addiw	a0,a0,-9
    e887d284:	00a7d7bb          	srlw	a5,a5,a0
            zerosScale = 0;
    e887d288:	4501                	li	a0,0
    e887d28a:	b7c5                	j	e887d26a <WebRtcAgc_CalculateGainTable+0x29c>
                tmpU32no2 = WEBRTC_SPL_UMUL_32_16(absInLevel, kLogE_1); // Q28
    e887d28c:	036787bb          	mulw	a5,a5,s6
                tmpU32no2 = WEBRTC_SPL_RSHIFT_U32(tmpU32no2, 6); // Q22
    e887d290:	7c67b78b          	extu	a5,a5,31,6
    e887d294:	bfd5                	j	e887d288 <WebRtcAgc_CalculateGainTable+0x2ba>
    return 0;
    e887d296:	4501                	li	a0,0
  if (a == 0) {
    e887d298:	000a8563          	beqz	s5,e887d2a2 <WebRtcAgc_CalculateGainTable+0x2d4>
    e887d29c:	8556                	mv	a0,s5
    e887d29e:	ca3ff0ef          	jal	ra,e887cf40 <WebRtcSpl_NormW32.part.0>
            zeros = WebRtcSpl_NormW32(den) + 8;
    e887d2a2:	2521                	addiw	a0,a0,8
    e887d2a4:	bde1                	j	e887d17c <WebRtcAgc_CalculateGainTable+0x1ae>
        tmp32no1 = WEBRTC_SPL_SHIFT_W32(den, zeros - 8); // Q(zeros)
    e887d2a6:	47a1                	li	a5,8
    e887d2a8:	40a7853b          	subw	a0,a5,a0
    e887d2ac:	40aad53b          	sraw	a0,s5,a0
    e887d2b0:	bdf9                	j	e887d18e <WebRtcAgc_CalculateGainTable+0x1c0>
            numFIX += WEBRTC_SPL_RSHIFT_W32(tmp32no1, 1);
    e887d2b2:	9c3d                	addw	s0,s0,a5
    e887d2b4:	b5d5                	j	e887d198 <WebRtcAgc_CalculateGainTable+0x1ca>
            tmp32 = WEBRTC_SPL_MUL(y32, kLog10) + 8192; // in Q28
    e887d2b6:	6789                	lui	a5,0x2
    e887d2b8:	24a7178b          	mulaw	a5,a4,a0
            tmp32 = WEBRTC_SPL_RSHIFT_W32(tmp32, 14); // in Q14
    e887d2bc:	40e7d79b          	sraiw	a5,a5,0xe
    e887d2c0:	bf21                	j	e887d1d8 <WebRtcAgc_CalculateGainTable+0x20a>
                tmp32no2 = WEBRTC_SPL_MUL_32_16(fracPart, tmp16);
    e887d2c2:	6789                	lui	a5,0x2
    e887d2c4:	9217879b          	addiw	a5,a5,-1759
    e887d2c8:	02f707bb          	mulw	a5,a4,a5
                tmp32no2 = WEBRTC_SPL_RSHIFT_W32(tmp32no2, 13);
    e887d2cc:	40d7d79b          	sraiw	a5,a5,0xd
    e887d2d0:	b791                	j	e887d214 <WebRtcAgc_CalculateGainTable+0x246>
                    + WEBRTC_SPL_SHIFT_W32(fracPart, intPart - 14);
    e887d2d2:	46b9                	li	a3,14
    e887d2d4:	40c6863b          	subw	a2,a3,a2
    e887d2d8:	40c7d7bb          	sraw	a5,a5,a2
    e887d2dc:	b7a9                	j	e887d226 <WebRtcAgc_CalculateGainTable+0x258>
            gainTable[i] = 0;
    e887d2de:	449d500b          	srw	zero,s10,s1,2
    e887d2e2:	b7a9                	j	e887d22c <WebRtcAgc_CalculateGainTable+0x25e>

00000000e887d2e4 <WebRtcAgc_InitVad>:

void WebRtcAgc_InitVad(AgcVad_t *state)
{
    int16_t k;

    state->HPstate = 0; // state of high pass filter
    e887d2e4:	00050797          	auipc	a5,0x50
    e887d2e8:	e7c78793          	addi	a5,a5,-388 # e88cd160 <kCurve25519BasePoint+0x1a0>
    e887d2ec:	639c                	ld	a5,0(a5)
    state->stdShortTerm = 0; // short-term standard deviation of input level in dB
    state->counter = 3; // counts updates
    for (k = 0; k < 8; k++)
    {
        // downsampling filter
        state->downState[k] = 0;
    e887d2ee:	00053023          	sd	zero,0(a0)
    e887d2f2:	00053423          	sd	zero,8(a0)
    state->HPstate = 0; // state of high pass filter
    e887d2f6:	f11c                	sd	a5,32(a0)
    state->varianceLongTerm = WEBRTC_SPL_LSHIFT_W32(500, 8);
    e887d2f8:	00050797          	auipc	a5,0x50
    e887d2fc:	e7078793          	addi	a5,a5,-400 # e88cd168 <kCurve25519BasePoint+0x1a8>
    e887d300:	639c                	ld	a5,0(a5)
        state->downState[k] = 0;
    e887d302:	00053823          	sd	zero,16(a0)
    e887d306:	00053c23          	sd	zero,24(a0)
    state->varianceLongTerm = WEBRTC_SPL_LSHIFT_W32(500, 8);
    e887d30a:	f51c                	sd	a5,40(a0)
    state->varianceShortTerm = WEBRTC_SPL_LSHIFT_W32(500, 8);
    e887d30c:	67fd                	lui	a5,0x1f
    e887d30e:	4007879b          	addiw	a5,a5,1024
    e887d312:	d91c                	sw	a5,48(a0)
    state->stdShortTerm = 0; // short-term standard deviation of input level in dB
    e887d314:	02051a23          	sh	zero,52(a0)
    }
}
    e887d318:	8082                	ret

00000000e887d31a <WebRtcAgc_InitDigital>:
{
    e887d31a:	1141                	addi	sp,sp,-16
    e887d31c:	e022                	sd	s0,0(sp)
    e887d31e:	e406                	sd	ra,8(sp)
    if (agcMode == kAgcModeFixedDigital)
    e887d320:	470d                	li	a4,3
{
    e887d322:	842a                	mv	s0,a0
        stt->capacitorSlow = 0;
    e887d324:	4781                	li	a5,0
    if (agcMode == kAgcModeFixedDigital)
    e887d326:	00e58463          	beq	a1,a4,e887d32e <WebRtcAgc_InitDigital+0x14>
    e887d32a:	080007b7          	lui	a5,0x8000
    e887d32e:	c01c                	sw	a5,0(s0)
    stt->capacitorFast = 0;
    e887d330:	4785                	li	a5,1
    e887d332:	17c2                	slli	a5,a5,0x30
    e887d334:	00f43223          	sd	a5,4(s0)
    stt->agcMode = agcMode;
    e887d338:	08b41723          	sh	a1,142(s0)
    WebRtcAgc_InitVad(&stt->vadNearend);
    e887d33c:	09040513          	addi	a0,s0,144
    stt->gatePrevious = 0;
    e887d340:	08041623          	sh	zero,140(s0)
    WebRtcAgc_InitVad(&stt->vadNearend);
    e887d344:	fa1ff0ef          	jal	ra,e887d2e4 <WebRtcAgc_InitVad>
    WebRtcAgc_InitVad(&stt->vadFarend);
    e887d348:	0c840513          	addi	a0,s0,200
    e887d34c:	f99ff0ef          	jal	ra,e887d2e4 <WebRtcAgc_InitVad>
}
    e887d350:	6402                	ld	s0,0(sp)
    e887d352:	60a2                	ld	ra,8(sp)
    e887d354:	4501                	li	a0,0
    e887d356:	0141                	addi	sp,sp,16
    e887d358:	8082                	ret

00000000e887d35a <WebRtcNs_Create>:
#include "modules/audio_processing/ns/include/noise_suppression.h"
#include "common_audio/signal_processing/include/signal_processing_library.h"
#include "modules/audio_processing/ns/defines.h"
#include "modules/audio_processing/ns/ns_core.h"

int WebRtcNs_Create(NsHandle** NS_inst) {
    e887d35a:	1141                	addi	sp,sp,-16
    e887d35c:	e022                	sd	s0,0(sp)
    e887d35e:	842a                	mv	s0,a0
  *NS_inst = (NsHandle*) malloc(sizeof(NSinst_t));
    e887d360:	6519                	lui	a0,0x6
    e887d362:	39850513          	addi	a0,a0,920 # 6398 <memcmp-0xe87f9c68>
int WebRtcNs_Create(NsHandle** NS_inst) {
    e887d366:	e406                	sd	ra,8(sp)
  *NS_inst = (NsHandle*) malloc(sizeof(NSinst_t));
    e887d368:	ce6fe0ef          	jal	ra,e887b84e <my_malloc>
    e887d36c:	e008                	sd	a0,0(s0)
  if (*NS_inst != NULL) {
    e887d36e:	c911                	beqz	a0,e887d382 <WebRtcNs_Create+0x28>
    (*(NSinst_t**)NS_inst)->initFlag = 0;
    e887d370:	6785                	lui	a5,0x1
    e887d372:	953e                	add	a0,a0,a5
    e887d374:	fa052423          	sw	zero,-88(a0)
    return 0;
    e887d378:	4501                	li	a0,0
  } else {
    return -1;
  }

}
    e887d37a:	60a2                	ld	ra,8(sp)
    e887d37c:	6402                	ld	s0,0(sp)
    e887d37e:	0141                	addi	sp,sp,16
    e887d380:	8082                	ret
    return -1;
    e887d382:	557d                	li	a0,-1
    e887d384:	bfdd                	j	e887d37a <WebRtcNs_Create+0x20>

00000000e887d386 <WebRtcNs_Free>:

int WebRtcNs_Free(NsHandle* NS_inst) {
    e887d386:	1141                	addi	sp,sp,-16
    e887d388:	e406                	sd	ra,8(sp)
  free(NS_inst);
    e887d38a:	f77fe0ef          	jal	ra,e887c300 <eLIBs_free>
  return 0;
}
    e887d38e:	60a2                	ld	ra,8(sp)
    e887d390:	4501                	li	a0,0
    e887d392:	0141                	addi	sp,sp,16
    e887d394:	8082                	ret

00000000e887d396 <WebRtcNs_Init>:


int WebRtcNs_Init(NsHandle* NS_inst, uint32_t fs) {
  return WebRtcNs_InitCore((NSinst_t*) NS_inst, fs);
    e887d396:	0b40006f          	j	e887d44a <WebRtcNs_InitCore>

00000000e887d39a <WebRtcNs_set_policy>:
}

int WebRtcNs_set_policy(NsHandle* NS_inst, int mode) {
  return WebRtcNs_set_policy_core((NSinst_t*) NS_inst, mode);
    e887d39a:	34c0006f          	j	e887d6e6 <WebRtcNs_set_policy_core>

00000000e887d39e <WebRtcNs_Process>:
}


int WebRtcNs_Process(NsHandle* NS_inst, short* spframe, short* spframe_H,
                     short* outframe, short* outframe_H) {
  return WebRtcNs_ProcessCore(
    e887d39e:	5f70006f          	j	e887e194 <WebRtcNs_ProcessCore>

00000000e887d3a2 <WebRtcNs_set_feature_extraction_parameters>:
#include "modules/audio_processing/utility/fft4g.h"

// Set Feature Extraction Parameters
void WebRtcNs_set_feature_extraction_parameters(NSinst_t* inst) {
  //bin size of histogram
  inst->featureExtractionParams.binSizeLrt      = (float)0.1;
    e887d3a2:	00050717          	auipc	a4,0x50
    e887d3a6:	f4670713          	addi	a4,a4,-186 # e88cd2e8 <kGenFuncTable+0x178>
    e887d3aa:	6318                	ld	a4,0(a4)
    e887d3ac:	678d                	lui	a5,0x3
    e887d3ae:	97aa                	add	a5,a5,a0
    e887d3b0:	e6e7b023          	sd	a4,-416(a5) # 2e60 <memcmp-0xe87fd1a0>
  inst->featureExtractionParams.binSizeSpecFlat = (float)0.05;
  inst->featureExtractionParams.binSizeSpecDiff = (float)0.1;
    e887d3b4:	00050717          	auipc	a4,0x50
    e887d3b8:	f3c70713          	addi	a4,a4,-196 # e88cd2f0 <kGenFuncTable+0x180>
    e887d3bc:	6318                	ld	a4,0(a4)
    e887d3be:	e6e7b423          	sd	a4,-408(a5)
  //range of histogram over which lrt threshold is computed
  inst->featureExtractionParams.rangeAvgHistLrt = (float)1.0;

  //scale parameters: multiply dominant peaks of the histograms by scale factor to obtain
  // thresholds for prior model
  inst->featureExtractionParams.factor1ModelPars = (float)1.20; //for lrt and spectral diff
    e887d3c2:	00050717          	auipc	a4,0x50
    e887d3c6:	f3670713          	addi	a4,a4,-202 # e88cd2f8 <kGenFuncTable+0x188>
    e887d3ca:	6318                	ld	a4,0(a4)
    e887d3cc:	e6e7b823          	sd	a4,-400(a5)
  inst->featureExtractionParams.factor2ModelPars = (float)0.9;  //for spectral_flatness:
  // used when noise is flatter than speech

  //peak limit for spectral flatness (varies between 0 and 1)
  inst->featureExtractionParams.thresPosSpecFlat = (float)0.6;
    e887d3d0:	00050717          	auipc	a4,0x50
    e887d3d4:	f3070713          	addi	a4,a4,-208 # e88cd300 <kGenFuncTable+0x190>
    e887d3d8:	6318                	ld	a4,0(a4)
    e887d3da:	e6e7bc23          	sd	a4,-392(a5)

  //limit on spacing of two highest peaks in histogram: spacing determined by bin size
  inst->featureExtractionParams.limitPeakSpacingSpecFlat = 
      2 * inst->featureExtractionParams.binSizeSpecFlat;
  inst->featureExtractionParams.limitPeakSpacingSpecDiff =
    e887d3de:	00050717          	auipc	a4,0x50
    e887d3e2:	f2a70713          	addi	a4,a4,-214 # e88cd308 <kGenFuncTable+0x198>
    e887d3e6:	6318                	ld	a4,0(a4)
    e887d3e8:	e8e7b023          	sd	a4,-384(a5)
      2 * inst->featureExtractionParams.binSizeSpecDiff;

  //limit on relevance of second peak:
  inst->featureExtractionParams.limitPeakWeightsSpecFlat = (float)0.5;
  inst->featureExtractionParams.limitPeakWeightsSpecDiff = (float)0.5;
    e887d3ec:	00050717          	auipc	a4,0x50
    e887d3f0:	f2470713          	addi	a4,a4,-220 # e88cd310 <kGenFuncTable+0x1a0>
    e887d3f4:	6318                	ld	a4,0(a4)
    e887d3f6:	e8e7b423          	sd	a4,-376(a5)

  // fluctuation limit of lrt feature
  inst->featureExtractionParams.thresFluctLrt = (float)0.05;

  //limit on the max and min values for the feature thresholds
  inst->featureExtractionParams.maxLrt = (float)1.0;
    e887d3fa:	00050717          	auipc	a4,0x50
    e887d3fe:	f1e70713          	addi	a4,a4,-226 # e88cd318 <kGenFuncTable+0x1a8>
    e887d402:	6318                	ld	a4,0(a4)
    e887d404:	e8e7b823          	sd	a4,-368(a5)
  inst->featureExtractionParams.minLrt = (float)0.20;

  inst->featureExtractionParams.maxSpecFlat = (float)0.95;
    e887d408:	00050717          	auipc	a4,0x50
    e887d40c:	f1870713          	addi	a4,a4,-232 # e88cd320 <kGenFuncTable+0x1b0>
    e887d410:	6318                	ld	a4,0(a4)
    e887d412:	e8e7bc23          	sd	a4,-360(a5)
  inst->featureExtractionParams.minSpecFlat = (float)0.10;

  inst->featureExtractionParams.maxSpecDiff = (float)1.0;
    e887d416:	00050717          	auipc	a4,0x50
    e887d41a:	f1270713          	addi	a4,a4,-238 # e88cd328 <kGenFuncTable+0x1b8>
    e887d41e:	6318                	ld	a4,0(a4)
    e887d420:	eae7b023          	sd	a4,-352(a5)
  inst->featureExtractionParams.minSpecDiff = (float)0.16;

  //criteria of weight of histogram peak  to accept/reject feature
  inst->featureExtractionParams.thresWeightSpecFlat = (int)(0.3
      * (inst->modelUpdatePars[1])); //for spectral flatness
    e887d424:	6709                	lui	a4,0x2
    e887d426:	953a                	add	a0,a0,a4
    e887d428:	3f052703          	lw	a4,1008(a0)
    e887d42c:	d20707d3          	fcvt.d.w	fa5,a4
    e887d430:	00050717          	auipc	a4,0x50
    e887d434:	f0073707          	fld	fa4,-256(a4) # e88cd330 <kGenFuncTable+0x1c0>
    e887d438:	12e7f7d3          	fmul.d	fa5,fa5,fa4
  inst->featureExtractionParams.thresWeightSpecFlat = (int)(0.3
    e887d43c:	c2079753          	fcvt.w.d	a4,fa5,rtz
    e887d440:	eae7a423          	sw	a4,-344(a5)
  inst->featureExtractionParams.thresWeightSpecDiff = (int)(0.3
    e887d444:	eae7a623          	sw	a4,-340(a5)
      * (inst->modelUpdatePars[1])); //for spectral difference
}
    e887d448:	8082                	ret

00000000e887d44a <WebRtcNs_InitCore>:
int WebRtcNs_InitCore(NSinst_t* inst, uint32_t fs) {
  int i;
  //We only support 10ms frames

  //check for valid pointer
  if (inst == NULL) {
    e887d44a:	28050c63          	beqz	a0,e887d6e2 <WebRtcNs_InitCore+0x298>
int WebRtcNs_InitCore(NSinst_t* inst, uint32_t fs) {
    e887d44e:	7179                	addi	sp,sp,-48
    e887d450:	e422                	sd	s0,8(sp)
    return -1;
  }

  // Initialization of struct
  if (fs == 8000 || fs == 16000 || fs == 32000) {
    e887d452:	6789                	lui	a5,0x2
int WebRtcNs_InitCore(NSinst_t* inst, uint32_t fs) {
    e887d454:	f406                	sd	ra,40(sp)
    e887d456:	e826                	sd	s1,16(sp)
    e887d458:	ec4a                	sd	s2,24(sp)
    e887d45a:	f04e                	sd	s3,32(sp)
  if (fs == 8000 || fs == 16000 || fs == 32000) {
    e887d45c:	f4078793          	addi	a5,a5,-192 # 1f40 <memcmp-0xe87fe0c0>
    e887d460:	842a                	mv	s0,a0
    e887d462:	00f58d63          	beq	a1,a5,e887d47c <WebRtcNs_InitCore+0x32>
    e887d466:	6791                	lui	a5,0x4
    e887d468:	e8078793          	addi	a5,a5,-384 # 3e80 <memcmp-0xe87fc180>
    e887d46c:	00f58863          	beq	a1,a5,e887d47c <WebRtcNs_InitCore+0x32>
    e887d470:	67a1                	lui	a5,0x8
    e887d472:	d0078793          	addi	a5,a5,-768 # 7d00 <memcmp-0xe87f8300>
    return -1;
    e887d476:	557d                	li	a0,-1
  if (fs == 8000 || fs == 16000 || fs == 32000) {
    e887d478:	22f59463          	bne	a1,a5,e887d6a0 <WebRtcNs_InitCore+0x256>
    inst->fs = fs;
  } else {
    return -1;
  }
  inst->windShift = 0;
  if (fs == 8000) {
    e887d47c:	6789                	lui	a5,0x2
    inst->fs = fs;
    e887d47e:	c00c                	sw	a1,0(s0)
  inst->windShift = 0;
    e887d480:	00042623          	sw	zero,12(s0)
  if (fs == 8000) {
    e887d484:	f4078793          	addi	a5,a5,-192 # 1f40 <memcmp-0xe87fe0c0>
    e887d488:	22f59363          	bne	a1,a5,e887d6ae <WebRtcNs_InitCore+0x264>
    // We only support 10ms frames
    inst->blockLen = 80;
    e887d48c:	05000793          	li	a5,80
    e887d490:	1782                	slli	a5,a5,0x20
    e887d492:	05078793          	addi	a5,a5,80
    e887d496:	00f43223          	sd	a5,4(s0)
    inst->blockLen10ms = 80;
    inst->anaLen = 128;
    inst->window = kBlocks80w128;
    e887d49a:	00050797          	auipc	a5,0x50
    e887d49e:	2a678793          	addi	a5,a5,678 # e88cd740 <kBlocks80w128>
    e887d4a2:	f01c                	sd	a5,32(s0)
    inst->outLen = 0;
    e887d4a4:	4785                	li	a5,1
    e887d4a6:	179e                	slli	a5,a5,0x27
    // We only support 10ms frames
    inst->blockLen = 160;
    inst->blockLen10ms = 160;
    inst->anaLen = 256;
    inst->window = kBlocks160w256;
    inst->outLen = 0;
    e887d4a8:	e81c                	sd	a5,16(s0)
    inst->blockLen10ms = 160;
    inst->anaLen = 256;
    inst->window = kBlocks160w256;
    inst->outLen = 0;
  }
  inst->magnLen = inst->anaLen / 2 + 1; // Number of frequency bins
    e887d4aa:	485c                	lw	a5,20(s0)
    e887d4ac:	4709                	li	a4,2

  // Initialize fft work arrays.
  inst->ip[0] = 0; // Setting this triggers initialization.
    e887d4ae:	6489                	lui	s1,0x2
  inst->magnLen = inst->anaLen / 2 + 1; // Number of frequency bins
    e887d4b0:	02e7c7bb          	divw	a5,a5,a4
  memset(inst->dataBuf, 0, sizeof(float) * ANAL_BLOCKL_MAX);
    e887d4b4:	02840913          	addi	s2,s0,40
    e887d4b8:	40000613          	li	a2,1024
    e887d4bc:	4581                	li	a1,0
    e887d4be:	854a                	mv	a0,s2
  inst->magnLen = inst->anaLen / 2 + 1; // Number of frequency bins
    e887d4c0:	2785                	addiw	a5,a5,1
    e887d4c2:	cc1c                	sw	a5,24(s0)
  inst->ip[0] = 0; // Setting this triggers initialization.
    e887d4c4:	009407b3          	add	a5,s0,s1
    e887d4c8:	fe07a423          	sw	zero,-24(a5)
  memset(inst->dataBuf, 0, sizeof(float) * ANAL_BLOCKL_MAX);
    e887d4cc:	ec9fe0ef          	jal	ra,e887c394 <eLIBs_memset>
  WebRtc_rdft(inst->anaLen, 1, inst->dataBuf, inst->ip, inst->wfft);
    e887d4d0:	4848                	lw	a0,20(s0)
    e887d4d2:	1e848713          	addi	a4,s1,488 # 21e8 <memcmp-0xe87fde18>
    e887d4d6:	fe848693          	addi	a3,s1,-24
    e887d4da:	96a2                	add	a3,a3,s0
    e887d4dc:	9722                	add	a4,a4,s0
    e887d4de:	864a                	mv	a2,s2
    e887d4e0:	4585                	li	a1,1
    e887d4e2:	203020ef          	jal	ra,e887fee4 <WebRtc_rdft>

  memset(inst->dataBuf, 0, sizeof(float) * ANAL_BLOCKL_MAX);
    e887d4e6:	40000613          	li	a2,1024
    e887d4ea:	4581                	li	a1,0
    e887d4ec:	854a                	mv	a0,s2
    e887d4ee:	ea7fe0ef          	jal	ra,e887c394 <eLIBs_memset>
  memset(inst->syntBuf, 0, sizeof(float) * ANAL_BLOCKL_MAX);
    e887d4f2:	40000613          	li	a2,1024
    e887d4f6:	4581                	li	a1,0
    e887d4f8:	42840513          	addi	a0,s0,1064
    e887d4fc:	e99fe0ef          	jal	ra,e887c394 <eLIBs_memset>

  //for HB processing
  memset(inst->dataBufHB, 0, sizeof(float) * ANAL_BLOCKL_MAX);
    e887d500:	6519                	lui	a0,0x6
    e887d502:	f9450513          	addi	a0,a0,-108 # 5f94 <memcmp-0xe87fa06c>
    e887d506:	40000613          	li	a2,1024
    e887d50a:	4581                	li	a1,0
    e887d50c:	9522                	add	a0,a0,s0
    e887d50e:	e87fe0ef          	jal	ra,e887c394 <eLIBs_memset>

  //for quantile noise estimation
  memset(inst->quantile, 0, sizeof(float) * HALF_ANAL_BLOCKL);
    e887d512:	bc448513          	addi	a0,s1,-1084
    e887d516:	20400613          	li	a2,516
    e887d51a:	4581                	li	a1,0
    e887d51c:	9522                	add	a0,a0,s0
    e887d51e:	e77fe0ef          	jal	ra,e887c394 <eLIBs_memset>
  for (i = 0; i < SIMULT * HALF_ANAL_BLOCKL; i++) {
    e887d522:	6705                	lui	a4,0x1
    e887d524:	fac70793          	addi	a5,a4,-84 # fac <memcmp-0xe87ff054>
    e887d528:	5b870713          	addi	a4,a4,1464
    e887d52c:	97a2                	add	a5,a5,s0
    e887d52e:	9722                	add	a4,a4,s0
    inst->lquantile[i] = (float)8.0;
    e887d530:	00050697          	auipc	a3,0x50
    e887d534:	d486a707          	flw	fa4,-696(a3) # e88cd278 <kGenFuncTable+0x108>
    inst->density[i] = (float)0.3;
    e887d538:	00050697          	auipc	a3,0x50
    e887d53c:	d446a787          	flw	fa5,-700(a3) # e88cd27c <kGenFuncTable+0x10c>
    inst->lquantile[i] = (float)8.0;
    e887d540:	60e7a627          	fsw	fa4,1548(a5)
    inst->density[i] = (float)0.3;
    e887d544:	00f7a027          	fsw	fa5,0(a5)
  for (i = 0; i < SIMULT * HALF_ANAL_BLOCKL; i++) {
    e887d548:	0791                	addi	a5,a5,4
    e887d54a:	fee79be3          	bne	a5,a4,e887d540 <WebRtcNs_InitCore+0xf6>
  }

  for (i = 0; i < SIMULT; i++) {
    inst->counter[i] = (int)floor((float)(END_STARTUP_LONG * (i + 1)) / (float)SIMULT);
    e887d54e:	08500713          	li	a4,133
    e887d552:	1702                	slli	a4,a4,0x20
    e887d554:	6789                	lui	a5,0x2
    e887d556:	04270713          	addi	a4,a4,66
    e887d55a:	00f406b3          	add	a3,s0,a5
    e887d55e:	dce6b423          	sd	a4,-568(a3)

  inst->updates = 0;

  // Wiener filter initialization
  for (i = 0; i < HALF_ANAL_BLOCKL; i++) {
    inst->smooth[i] = (float)1.0;
    e887d562:	00050917          	auipc	s2,0x50
    e887d566:	d1e90913          	addi	s2,s2,-738 # e88cd280 <kGenFuncTable+0x110>
    inst->counter[i] = (int)floor((float)(END_STARTUP_LONG * (i + 1)) / (float)SIMULT);
    e887d56a:	0c800713          	li	a4,200
    inst->smooth[i] = (float)1.0;
    e887d56e:	00092787          	flw	fa5,0(s2)
    inst->counter[i] = (int)floor((float)(END_STARTUP_LONG * (i + 1)) / (float)SIMULT);
    e887d572:	dce6b823          	sd	a4,-560(a3)
  for (i = 0; i < HALF_ANAL_BLOCKL; i++) {
    e887d576:	dd878713          	addi	a4,a5,-552 # 1dd8 <memcmp-0xe87fe228>
    e887d57a:	fdc78793          	addi	a5,a5,-36
    e887d57e:	9722                	add	a4,a4,s0
    e887d580:	97a2                	add	a5,a5,s0
    inst->smooth[i] = (float)1.0;
    e887d582:	00f72027          	fsw	fa5,0(a4)
  for (i = 0; i < HALF_ANAL_BLOCKL; i++) {
    e887d586:	0711                	addi	a4,a4,4
    e887d588:	fee79de3          	bne	a5,a4,e887d582 <WebRtcNs_InitCore+0x138>

  // Set the aggressiveness: default
  inst->aggrMode = 0;

  //initialize variables for new method
  inst->priorSpeechProb = (float)0.5; //prior prob for speech/noise
    e887d58c:	00050717          	auipc	a4,0x50
    e887d590:	cf872787          	flw	fa5,-776(a4) # e88cd284 <kGenFuncTable+0x114>
    e887d594:	678d                	lui	a5,0x3
    e887d596:	97a2                	add	a5,a5,s0
  inst->aggrMode = 0;
    e887d598:	00042e23          	sw	zero,28(s0)
  inst->priorSpeechProb = (float)0.5; //prior prob for speech/noise
    e887d59c:	6709                	lui	a4,0x2
    e887d59e:	a2f7a227          	fsw	fa5,-1500(a5) # 2a24 <memcmp-0xe87fd5dc>
  for (i = 0; i < HALF_ANAL_BLOCKL; i++) {
    e887d5a2:	41870793          	addi	a5,a4,1048 # 2418 <memcmp-0xe87fdbe8>
    e887d5a6:	61c70713          	addi	a4,a4,1564
    e887d5aa:	00e406b3          	add	a3,s0,a4
    e887d5ae:	97a2                	add	a5,a5,s0
    inst->magnPrev[i]      = (float)0.0; //previous mag spectrum
    inst->noisePrev[i]     = (float)0.0; //previous noise-spectrum
    inst->logLrtTimeAvg[i] = LRT_FEATURE_THR; //smooth LR ratio (same as threshold)
    inst->magnAvgPause[i]  = (float)0.0; //conservative noise spectrum estimate
    inst->speechProbHB[i]  = (float)0.0; //for estimation of HB in second pass
    e887d5b0:	6711                	lui	a4,0x4
    inst->initMagnEst[i]   = (float)0.0; //initial average mag spectrum
    e887d5b2:	6585                	lui	a1,0x1
    inst->magnPrev[i]      = (float)0.0; //previous mag spectrum
    e887d5b4:	2007a223          	sw	zero,516(a5)
    inst->noisePrev[i]     = (float)0.0; //previous noise-spectrum
    e887d5b8:	0007a023          	sw	zero,0(a5)
    inst->logLrtTimeAvg[i] = LRT_FEATURE_THR; //smooth LR ratio (same as threshold)
    e887d5bc:	40f7a427          	fsw	fa5,1032(a5)
    inst->magnAvgPause[i]  = (float)0.0; //conservative noise spectrum estimate
    e887d5c0:	6207a623          	sw	zero,1580(a5)
    inst->speechProbHB[i]  = (float)0.0; //for estimation of HB in second pass
    e887d5c4:	00e78633          	add	a2,a5,a4
    e887d5c8:	96062c23          	sw	zero,-1672(a2) # 1978 <memcmp-0xe87fe688>
    inst->initMagnEst[i]   = (float)0.0; //initial average mag spectrum
    e887d5cc:	00b78633          	add	a2,a5,a1
    e887d5d0:	82062e23          	sw	zero,-1988(a2)
  for (i = 0; i < HALF_ANAL_BLOCKL; i++) {
    e887d5d4:	0791                	addi	a5,a5,4
    e887d5d6:	fcf69fe3          	bne	a3,a5,e887d5b4 <WebRtcNs_InitCore+0x16a>
  }

  //feature quantities
  inst->featureData[0] = SF_FEATURE_THR;  //spectral flatness (start on threshold)
    e887d5da:	678d                	lui	a5,0x3
  inst->featureData[1] = (float)0.0;      //spectral entropy: not used in this version
  inst->featureData[2] = (float)0.0;      //spectral variance: not used in this version
    e887d5dc:	03f00613          	li	a2,63
  inst->featureData[0] = SF_FEATURE_THR;  //spectral flatness (start on threshold)
    e887d5e0:	00f406b3          	add	a3,s0,a5
    e887d5e4:	3f0005b7          	lui	a1,0x3f000
  inst->featureData[2] = (float)0.0;      //spectral variance: not used in this version
    e887d5e8:	1662                	slli	a2,a2,0x38
    e887d5ea:	eb078793          	addi	a5,a5,-336 # 2eb0 <memcmp-0xe87fd150>
    e887d5ee:	e5070713          	addi	a4,a4,-432 # 3e50 <memcmp-0xe87fc1b0>
  inst->featureData[0] = SF_FEATURE_THR;  //spectral flatness (start on threshold)
    e887d5f2:	a2b6b423          	sd	a1,-1496(a3)
  inst->featureData[2] = (float)0.0;      //spectral variance: not used in this version
    e887d5f6:	a2c6b823          	sd	a2,-1488(a3)
  inst->featureData[3] = LRT_FEATURE_THR; //average lrt factor (start on threshold)
  inst->featureData[4] = SF_FEATURE_THR;  //spectral template diff (start on threshold)
    e887d5fa:	a2b6bc23          	sd	a1,-1480(a3)
  inst->featureData[5] = (float)0.0;      //normalization for spectral-diff
  inst->featureData[6] = (float)0.0;      //window time-average of input magnitude spectrum
    e887d5fe:	a406a023          	sw	zero,-1472(a3)

  //histogram quantities: used to estimate/update thresholds for features
  for (i = 0; i < HIST_PAR_EST; i++) {
    e887d602:	97a2                	add	a5,a5,s0
    e887d604:	9722                	add	a4,a4,s0
    inst->histLrt[i] = 0;
    inst->histSpecFlat[i] = 0;
    e887d606:	6985                	lui	s3,0x1
    inst->histSpecDiff[i] = 0;
    e887d608:	6489                	lui	s1,0x2
    inst->histLrt[i] = 0;
    e887d60a:	0007a023          	sw	zero,0(a5)
    inst->histSpecFlat[i] = 0;
    e887d60e:	013786b3          	add	a3,a5,s3
    e887d612:	fa06a023          	sw	zero,-96(a3)
    inst->histSpecDiff[i] = 0;
    e887d616:	009786b3          	add	a3,a5,s1
    e887d61a:	f406a023          	sw	zero,-192(a3)
  for (i = 0; i < HIST_PAR_EST; i++) {
    e887d61e:	0791                	addi	a5,a5,4
    e887d620:	fee795e3          	bne	a5,a4,e887d60a <WebRtcNs_InitCore+0x1c0>
  }

  inst->blockInd = -1; //frame counter
    e887d624:	478d                	li	a5,3
    e887d626:	1782                	slli	a5,a5,0x20
    e887d628:	17fd                	addi	a5,a5,-1
    e887d62a:	94a2                	add	s1,s1,s0
    e887d62c:	3ef4b423          	sd	a5,1000(s1) # 23e8 <memcmp-0xe87fdc18>
  inst->priorModelPars[6] = (float)0.0;      //default weighting parameter for
  // spectral difference feature

  inst->modelUpdatePars[0] = 2;   //update flag for parameters:
  // 0 no update, 1=update once, 2=update every window
  inst->modelUpdatePars[1] = 500; //window for update
    e887d630:	1f400793          	li	a5,500
    e887d634:	3ef4b823          	sd	a5,1008(s1)
  inst->modelUpdatePars[2] = 0;   //counter for update of conservative noise spectrum
  //counter if the feature thresholds are updated during the sequence
  inst->modelUpdatePars[3] = inst->modelUpdatePars[1];
    e887d638:	03f00793          	li	a5,63
    e887d63c:	17e2                	slli	a5,a5,0x38
    e887d63e:	1f478793          	addi	a5,a5,500
    e887d642:	3ef4bc23          	sd	a5,1016(s1)
  inst->priorModelPars[1] = (float)0.5;      //threshold for spectral flatness:
    e887d646:	00050797          	auipc	a5,0x50
    e887d64a:	c4278793          	addi	a5,a5,-958 # e88cd288 <kGenFuncTable+0x118>
    e887d64e:	639c                	ld	a5,0(a5)
  inst->priorModelPars[5] = (float)0.0;      //default weighting parameter for
    e887d650:	4004b823          	sd	zero,1040(s1)
  inst->sumMagn = 0.0;
  inst->whiteNoiseLevel = 0.0;
  inst->pinkNoiseNumerator = 0.0;
  inst->pinkNoiseExp = 0.0;

  WebRtcNs_set_feature_extraction_parameters(inst); // Set feature configuration
    e887d654:	8522                	mv	a0,s0
  inst->priorModelPars[1] = (float)0.5;      //threshold for spectral flatness:
    e887d656:	40f4b023          	sd	a5,1024(s1)
  inst->priorModelPars[3] = (float)0.5;      //threshold for template-difference feature:
    e887d65a:	40f4b423          	sd	a5,1032(s1)
  inst->signalEnergy = 0.0;
    e887d65e:	678d                	lui	a5,0x3
    e887d660:	97a2                	add	a5,a5,s0
    e887d662:	c407b423          	sd	zero,-952(a5) # 2c48 <memcmp-0xe87fd3b8>
  inst->whiteNoiseLevel = 0.0;
    e887d666:	c407a823          	sw	zero,-944(a5)
  inst->pinkNoiseNumerator = 0.0;
    e887d66a:	e407bc23          	sd	zero,-424(a5)
  WebRtcNs_set_feature_extraction_parameters(inst); // Set feature configuration
    e887d66e:	d35ff0ef          	jal	ra,e887d3a2 <WebRtcNs_set_feature_extraction_parameters>
  // allow for modes:0,1,2,3
  if (mode < 0 || mode > 3) {
    return (-1);
  }

  inst->aggrMode = mode;
    e887d672:	00042e23          	sw	zero,28(s0)
  if (mode == 0) {
    inst->overdrive = (float)1.0;
    e887d676:	00092787          	flw	fa5,0(s2)
    inst->denoiseBound = (float)0.5;
    e887d67a:	3f0007b7          	lui	a5,0x3f000
  memset(inst->outBuf, 0, sizeof(float) * 3 * BLOCKL_MAX);
    e887d67e:	82898513          	addi	a0,s3,-2008 # 828 <memcmp-0xe87ff7d8>
    e887d682:	9522                	add	a0,a0,s0
    inst->denoiseBound = (float)0.5;
    e887d684:	fef4b023          	sd	a5,-32(s1)
    inst->overdrive = (float)1.0;
    e887d688:	fcf4ae27          	fsw	fa5,-36(s1)
  memset(inst->outBuf, 0, sizeof(float) * 3 * BLOCKL_MAX);
    e887d68c:	78000613          	li	a2,1920
    e887d690:	4581                	li	a1,0
    e887d692:	d03fe0ef          	jal	ra,e887c394 <eLIBs_memset>
  inst->initFlag = 1;
    e887d696:	944e                	add	s0,s0,s3
    e887d698:	4785                	li	a5,1
    e887d69a:	faf42423          	sw	a5,-88(s0)
  return 0;
    e887d69e:	4501                	li	a0,0
}
    e887d6a0:	70a2                	ld	ra,40(sp)
    e887d6a2:	6422                	ld	s0,8(sp)
    e887d6a4:	64c2                	ld	s1,16(sp)
    e887d6a6:	6962                	ld	s2,24(sp)
    e887d6a8:	7982                	ld	s3,32(sp)
    e887d6aa:	6145                	addi	sp,sp,48
    e887d6ac:	8082                	ret
  } else if (fs == 16000) {
    e887d6ae:	6791                	lui	a5,0x4
    e887d6b0:	e8078793          	addi	a5,a5,-384 # 3e80 <memcmp-0xe87fc180>
    e887d6b4:	02f59163          	bne	a1,a5,e887d6d6 <WebRtcNs_InitCore+0x28c>
    inst->blockLen = 160;
    e887d6b8:	0a000793          	li	a5,160
    e887d6bc:	1782                	slli	a5,a5,0x20
    e887d6be:	0a078793          	addi	a5,a5,160
    e887d6c2:	00f43223          	sd	a5,4(s0)
    inst->window = kBlocks160w256;
    e887d6c6:	00050797          	auipc	a5,0x50
    e887d6ca:	c7a78793          	addi	a5,a5,-902 # e88cd340 <kBlocks160w256>
    e887d6ce:	f01c                	sd	a5,32(s0)
    inst->outLen = 0;
    e887d6d0:	4785                	li	a5,1
    e887d6d2:	17a2                	slli	a5,a5,0x28
    e887d6d4:	bbd1                	j	e887d4a8 <WebRtcNs_InitCore+0x5e>
  } else if (fs == 32000) {
    e887d6d6:	67a1                	lui	a5,0x8
    e887d6d8:	d0078793          	addi	a5,a5,-768 # 7d00 <memcmp-0xe87f8300>
    e887d6dc:	dcf597e3          	bne	a1,a5,e887d4aa <WebRtcNs_InitCore+0x60>
    e887d6e0:	bfe1                	j	e887d6b8 <WebRtcNs_InitCore+0x26e>
    return -1;
    e887d6e2:	557d                	li	a0,-1
}
    e887d6e4:	8082                	ret

00000000e887d6e6 <WebRtcNs_set_policy_core>:
  if (mode < 0 || mode > 3) {
    e887d6e6:	470d                	li	a4,3
int WebRtcNs_set_policy_core(NSinst_t* inst, int mode) {
    e887d6e8:	87aa                	mv	a5,a0
  if (mode < 0 || mode > 3) {
    e887d6ea:	06b76f63          	bltu	a4,a1,e887d768 <WebRtcNs_set_policy_core+0x82>
  inst->aggrMode = mode;
    e887d6ee:	cd4c                	sw	a1,28(a0)
  if (mode == 0) {
    e887d6f0:	ed99                	bnez	a1,e887d70e <WebRtcNs_set_policy_core+0x28>
    inst->overdrive = (float)1.0;
    e887d6f2:	00050717          	auipc	a4,0x50
    e887d6f6:	b8e72787          	flw	fa5,-1138(a4) # e88cd280 <kGenFuncTable+0x110>
    e887d6fa:	6509                	lui	a0,0x2
    e887d6fc:	97aa                	add	a5,a5,a0
    inst->denoiseBound = (float)0.5;
    e887d6fe:	3f000737          	lui	a4,0x3f000
    inst->overdrive = (float)1.0;
    e887d702:	fcf7ae27          	fsw	fa5,-36(a5)
    inst->denoiseBound = (float)0.5;
    e887d706:	fee7b023          	sd	a4,-32(a5)
    inst->overdrive = (float)1.25;
    inst->denoiseBound = (float)0.09;
    inst->gainmap = 1;
  }
  return 0;
}
    e887d70a:	852e                	mv	a0,a1
    e887d70c:	8082                	ret
  } else if (mode == 1) {
    e887d70e:	4705                	li	a4,1
    e887d710:	02e59163          	bne	a1,a4,e887d732 <WebRtcNs_set_policy_core+0x4c>
    inst->overdrive = (float)1.0;
    e887d714:	00050717          	auipc	a4,0x50
    e887d718:	b6c72787          	flw	fa5,-1172(a4) # e88cd280 <kGenFuncTable+0x110>
    e887d71c:	6509                	lui	a0,0x2
    e887d71e:	97aa                	add	a5,a5,a0
    inst->denoiseBound = (float)0.25;
    e887d720:	27d00713          	li	a4,637
    inst->overdrive = (float)1.0;
    e887d724:	fcf7ae27          	fsw	fa5,-36(a5)
    inst->denoiseBound = (float)0.25;
    e887d728:	075e                	slli	a4,a4,0x17
    inst->denoiseBound = (float)0.125;
    e887d72a:	fee7b023          	sd	a4,-32(a5)
    e887d72e:	4581                	li	a1,0
    e887d730:	bfe9                	j	e887d70a <WebRtcNs_set_policy_core+0x24>
    inst->overdrive = (float)1.1;
    e887d732:	6509                	lui	a0,0x2
  } else if (mode == 2) {
    e887d734:	4709                	li	a4,2
    inst->overdrive = (float)1.1;
    e887d736:	97aa                	add	a5,a5,a0
  } else if (mode == 2) {
    e887d738:	00e59c63          	bne	a1,a4,e887d750 <WebRtcNs_set_policy_core+0x6a>
    inst->overdrive = (float)1.1;
    e887d73c:	00050717          	auipc	a4,0x50
    e887d740:	bfc72787          	flw	fa5,-1028(a4) # e88cd338 <kGenFuncTable+0x1c8>
    e887d744:	fcf7ae27          	fsw	fa5,-36(a5)
    inst->denoiseBound = (float)0.125;
    e887d748:	09f00713          	li	a4,159
    e887d74c:	0766                	slli	a4,a4,0x19
    e887d74e:	bff1                	j	e887d72a <WebRtcNs_set_policy_core+0x44>
    inst->overdrive = (float)1.25;
    e887d750:	00050717          	auipc	a4,0x50
    e887d754:	bec72787          	flw	fa5,-1044(a4) # e88cd33c <kGenFuncTable+0x1cc>
    e887d758:	fcf7ae27          	fsw	fa5,-36(a5)
    inst->denoiseBound = (float)0.09;
    e887d75c:	4f6e1737          	lui	a4,0x4f6e1
    e887d760:	47b70713          	addi	a4,a4,1147 # 4f6e147b <memcmp-0x9911eb85>
    e887d764:	070a                	slli	a4,a4,0x2
    e887d766:	b7d1                	j	e887d72a <WebRtcNs_set_policy_core+0x44>
    return (-1);
    e887d768:	55fd                	li	a1,-1
    e887d76a:	b745                	j	e887d70a <WebRtcNs_set_policy_core+0x24>

00000000e887d76c <WebRtcNs_NoiseEstimation>:

// Estimate noise
void WebRtcNs_NoiseEstimation(NSinst_t* inst, float* magn, float* noise) {
    e887d76c:	d8010113          	addi	sp,sp,-640
  int i, s, offset;
  float lmagn[HALF_ANAL_BLOCKL], delta;

  if (inst->updates < END_STARTUP_LONG) {
    e887d770:	6789                	lui	a5,0x2
void WebRtcNs_NoiseEstimation(NSinst_t* inst, float* magn, float* noise) {
    e887d772:	22813c27          	fsd	fs0,568(sp)
    e887d776:	22913827          	fsd	fs1,560(sp)
    e887d77a:	23213427          	fsd	fs2,552(sp)
    e887d77e:	23313027          	fsd	fs3,544(sp)
  if (inst->updates < END_STARTUP_LONG) {
    e887d782:	97aa                	add	a5,a5,a0
void WebRtcNs_NoiseEstimation(NSinst_t* inst, float* magn, float* noise) {
    e887d784:	26813823          	sd	s0,624(sp)
    e887d788:	27213023          	sd	s2,608(sp)
    e887d78c:	26113c23          	sd	ra,632(sp)
    e887d790:	26913423          	sd	s1,616(sp)
    e887d794:	25313c23          	sd	s3,600(sp)
    e887d798:	25413823          	sd	s4,592(sp)
    e887d79c:	25513423          	sd	s5,584(sp)
    e887d7a0:	25613023          	sd	s6,576(sp)
  if (inst->updates < END_STARTUP_LONG) {
    e887d7a4:	dd47a703          	lw	a4,-556(a5) # 1dd4 <memcmp-0xe87fe22c>
    e887d7a8:	0c700693          	li	a3,199
void WebRtcNs_NoiseEstimation(NSinst_t* inst, float* magn, float* noise) {
    e887d7ac:	842a                	mv	s0,a0
    e887d7ae:	8932                	mv	s2,a2
  if (inst->updates < END_STARTUP_LONG) {
    e887d7b0:	00e6c563          	blt	a3,a4,e887d7ba <WebRtcNs_NoiseEstimation+0x4e>
    inst->updates++;
    e887d7b4:	2705                	addiw	a4,a4,1
    e887d7b6:	dce7aa23          	sw	a4,-556(a5)
void WebRtcNs_NoiseEstimation(NSinst_t* inst, float* magn, float* noise) {
    e887d7ba:	4481                	li	s1,0
  }

  for (i = 0; i < inst->magnLen; i++) {
    lmagn[i] = (float)log(magn[i]);
    e887d7bc:	01810993          	addi	s3,sp,24
  for (i = 0; i < inst->magnLen; i++) {
    e887d7c0:	4c18                	lw	a4,24(s0)
    e887d7c2:	0004879b          	sext.w	a5,s1
    e887d7c6:	0ce7c463          	blt	a5,a4,e887d88e <WebRtcNs_NoiseEstimation+0x122>
    e887d7ca:	6489                	lui	s1,0x2
    e887d7cc:	dc848493          	addi	s1,s1,-568 # 1dc8 <memcmp-0xe87fe238>
    e887d7d0:	94a2                	add	s1,s1,s0
  }

  // loop over simultaneous estimates
  for (s = 0; s < SIMULT; s++) {
    e887d7d2:	4b01                	li	s6,0
    offset = s * inst->magnLen;

    // newquantest(...)
    for (i = 0; i < inst->magnLen; i++) {
      // compute delta
      if (inst->density[offset + i] > 1.0) {
    e887d7d4:	00050797          	auipc	a5,0x50
    e887d7d8:	aac7a487          	flw	fs1,-1364(a5) # e88cd280 <kGenFuncTable+0x110>
    e887d7dc:	00050797          	auipc	a5,0x50
    e887d7e0:	ab47a407          	flw	fs0,-1356(a5) # e88cd290 <kGenFuncTable+0x120>
        inst->lquantile[offset + i] -= ((float)1.0 - QUANTILE) * delta
                                       / (float)(inst->counter[s] + 1);
      }

      // update density estimate
      if (fabs(lmagn[i] - inst->lquantile[offset + i]) < WIDTH) {
    e887d7e4:	00050797          	auipc	a5,0x50
    e887d7e8:	ab87a907          	flw	fs2,-1352(a5) # e88cd29c <kGenFuncTable+0x12c>
        inst->density[offset + i] = ((float)inst->counter[s] * inst->density[offset
            + i] + (float)1.0 / ((float)2.0 * WIDTH)) / (float)(inst->counter[s] + 1);
    e887d7ec:	00050797          	auipc	a5,0x50
    e887d7f0:	ab47a987          	flw	fs3,-1356(a5) # e88cd2a0 <kGenFuncTable+0x130>
    offset = s * inst->magnLen;
    e887d7f4:	4c0c                	lw	a1,24(s0)
    for (i = 0; i < inst->magnLen; i++) {
    e887d7f6:	4681                	li	a3,0
      if (inst->density[offset + i] > 1.0) {
    e887d7f8:	6605                	lui	a2,0x1
    offset = s * inst->magnLen;
    e887d7fa:	03658a3b          	mulw	s4,a1,s6
      if (lmagn[i] > inst->lquantile[offset + i]) {
    e887d7fe:	0828                	addi	a0,sp,24
        inst->lquantile[offset + i] -= ((float)1.0 - QUANTILE) * delta
    e887d800:	00050797          	auipc	a5,0x50
    e887d804:	a987a007          	flw	ft0,-1384(a5) # e88cd298 <kGenFuncTable+0x128>
        inst->lquantile[offset + i] += QUANTILE * delta
    e887d808:	00050797          	auipc	a5,0x50
    e887d80c:	a8c7a087          	flw	ft1,-1396(a5) # e88cd294 <kGenFuncTable+0x124>
    for (i = 0; i < inst->magnLen; i++) {
    e887d810:	0006879b          	sext.w	a5,a3
    e887d814:	08b7cb63          	blt	a5,a1,e887d8aa <WebRtcNs_NoiseEstimation+0x13e>
      }
    }  // end loop over magnitude spectrum

    if (inst->counter[s] >= END_STARTUP_LONG) {
    e887d818:	409c                	lw	a5,0(s1)
    e887d81a:	0c700713          	li	a4,199
    e887d81e:	10f74563          	blt	a4,a5,e887d928 <WebRtcNs_NoiseEstimation+0x1bc>
          inst->quantile[i] = (float)exp(inst->lquantile[offset + i]);
        }
      }
    }

    inst->counter[s]++;
    e887d822:	409c                	lw	a5,0(s1)
  for (s = 0; s < SIMULT; s++) {
    e887d824:	2b05                	addiw	s6,s6,1
    inst->counter[s]++;
    e887d826:	2785                	addiw	a5,a5,1
    e887d828:	5844d78b          	swia	a5,(s1),4,0
  for (s = 0; s < SIMULT; s++) {
    e887d82c:	478d                	li	a5,3
    e887d82e:	fcfb13e3          	bne	s6,a5,e887d7f4 <WebRtcNs_NoiseEstimation+0x88>
  }  // end loop over simultaneous estimates

  // Sequentially update the noise during startup
  if (inst->updates < END_STARTUP_LONG) {
    e887d832:	6789                	lui	a5,0x2
    e887d834:	00f40733          	add	a4,s0,a5
    e887d838:	dd472683          	lw	a3,-556(a4)
    e887d83c:	0c700713          	li	a4,199
    e887d840:	16d75163          	bge	a4,a3,e887d9a2 <WebRtcNs_NoiseEstimation+0x236>
      inst->quantile[i] = (float)exp(inst->lquantile[offset + i]);
    }
  }

  for (i = 0; i < inst->magnLen; i++) {
    noise[i] = inst->quantile[i];
    e887d844:	6709                	lui	a4,0x2
    e887d846:	bc470713          	addi	a4,a4,-1084 # 1bc4 <memcmp-0xe87fe43c>
    e887d84a:	4781                	li	a5,0
    e887d84c:	9722                	add	a4,a4,s0
  for (i = 0; i < inst->magnLen; i++) {
    e887d84e:	4c10                	lw	a2,24(s0)
    e887d850:	0007869b          	sext.w	a3,a5
    e887d854:	14c6cd63          	blt	a3,a2,e887d9ae <WebRtcNs_NoiseEstimation+0x242>
  }
}
    e887d858:	27813083          	ld	ra,632(sp)
    e887d85c:	27013403          	ld	s0,624(sp)
    e887d860:	26813483          	ld	s1,616(sp)
    e887d864:	26013903          	ld	s2,608(sp)
    e887d868:	25813983          	ld	s3,600(sp)
    e887d86c:	25013a03          	ld	s4,592(sp)
    e887d870:	24813a83          	ld	s5,584(sp)
    e887d874:	24013b03          	ld	s6,576(sp)
    e887d878:	23813407          	fld	fs0,568(sp)
    e887d87c:	23013487          	fld	fs1,560(sp)
    e887d880:	22813907          	fld	fs2,552(sp)
    e887d884:	22013987          	fld	fs3,544(sp)
    e887d888:	28010113          	addi	sp,sp,640
    e887d88c:	8082                	ret
    lmagn[i] = (float)log(magn[i]);
    e887d88e:	4495e50b          	flrw	fa0,a1,s1,2
    e887d892:	e42e                	sd	a1,8(sp)
    e887d894:	42050553          	fcvt.d.s	fa0,fa0
    e887d898:	8998d0ef          	jal	ra,e880b130 <log>
    e887d89c:	40157553          	fcvt.s.d	fa0,fa0
    e887d8a0:	65a2                	ld	a1,8(sp)
    e887d8a2:	4499f50b          	fsrw	fa0,s3,s1,2
  for (i = 0; i < inst->magnLen; i++) {
    e887d8a6:	0485                	addi	s1,s1,1
    e887d8a8:	bf21                	j	e887d7c0 <WebRtcNs_NoiseEstimation+0x54>
      if (inst->density[offset + i] > 1.0) {
    e887d8aa:	00da07bb          	addw	a5,s4,a3
    e887d8ae:	04f4178b          	addsl	a5,s0,a5,2
    e887d8b2:	00c78733          	add	a4,a5,a2
    e887d8b6:	fac72607          	flw	fa2,-84(a4)
        delta = FACTOR;
    e887d8ba:	208407d3          	fmv.s	fa5,fs0
      if (inst->density[offset + i] > 1.0) {
    e887d8be:	a0c49753          	flt.s	a4,fs1,fa2
    e887d8c2:	c319                	beqz	a4,e887d8c8 <WebRtcNs_NoiseEstimation+0x15c>
        delta = FACTOR * (float)1.0 / inst->density[offset + i];
    e887d8c4:	18c477d3          	fdiv.s	fa5,fs0,fa2
      if (lmagn[i] > inst->lquantile[offset + i]) {
    e887d8c8:	0004a803          	lw	a6,0(s1)
    e887d8cc:	00c78733          	add	a4,a5,a2
    e887d8d0:	5b872587          	flw	fa1,1464(a4)
    e887d8d4:	44d5668b          	flrw	fa3,a0,a3,2
    e887d8d8:	0018071b          	addiw	a4,a6,1
    e887d8dc:	d0077553          	fcvt.s.w	fa0,a4
    e887d8e0:	a0d59753          	flt.s	a4,fa1,fa3
    e887d8e4:	cb1d                	beqz	a4,e887d91a <WebRtcNs_NoiseEstimation+0x1ae>
        inst->lquantile[offset + i] += QUANTILE * delta
    e887d8e6:	1017f7d3          	fmul.s	fa5,fa5,ft1
                                       / (float)(inst->counter[s] + 1);
    e887d8ea:	18a7f7d3          	fdiv.s	fa5,fa5,fa0
        inst->lquantile[offset + i] += QUANTILE * delta
    e887d8ee:	00b7f5d3          	fadd.s	fa1,fa5,fa1
      if (fabs(lmagn[i] - inst->lquantile[offset + i]) < WIDTH) {
    e887d8f2:	08b6f6d3          	fsub.s	fa3,fa3,fa1
    e887d8f6:	97b2                	add	a5,a5,a2
    e887d8f8:	5ab7ac27          	fsw	fa1,1464(a5) # 25b8 <memcmp-0xe87fda48>
    e887d8fc:	20d6a6d3          	fabs.s	fa3,fa3
    e887d900:	a1269753          	flt.s	a4,fa3,fs2
    e887d904:	cb09                	beqz	a4,e887d916 <WebRtcNs_NoiseEstimation+0x1aa>
        inst->density[offset + i] = ((float)inst->counter[s] * inst->density[offset
    e887d906:	d00877d3          	fcvt.s.w	fa5,a6
            + i] + (float)1.0 / ((float)2.0 * WIDTH)) / (float)(inst->counter[s] + 1);
    e887d90a:	98f67643          	fmadd.s	fa2,fa2,fa5,fs3
    e887d90e:	18a67653          	fdiv.s	fa2,fa2,fa0
        inst->density[offset + i] = ((float)inst->counter[s] * inst->density[offset
    e887d912:	fac7a627          	fsw	fa2,-84(a5)
    for (i = 0; i < inst->magnLen; i++) {
    e887d916:	0685                	addi	a3,a3,1
    e887d918:	bde5                	j	e887d810 <WebRtcNs_NoiseEstimation+0xa4>
        inst->lquantile[offset + i] -= ((float)1.0 - QUANTILE) * delta
    e887d91a:	1007f7d3          	fmul.s	fa5,fa5,ft0
                                       / (float)(inst->counter[s] + 1);
    e887d91e:	18a7f7d3          	fdiv.s	fa5,fa5,fa0
        inst->lquantile[offset + i] -= ((float)1.0 - QUANTILE) * delta
    e887d922:	08f5f5d3          	fsub.s	fa1,fa1,fa5
    e887d926:	b7f1                	j	e887d8f2 <WebRtcNs_NoiseEstimation+0x186>
    e887d928:	6789                	lui	a5,0x2
    e887d92a:	00f406b3          	add	a3,s0,a5
    e887d92e:	dd46a683          	lw	a3,-556(a3)
      inst->counter[s] = 0;
    e887d932:	0004a023          	sw	zero,0(s1)
      if (inst->updates >= END_STARTUP_LONG) {
    e887d936:	eed756e3          	bge	a4,a3,e887d822 <WebRtcNs_NoiseEstimation+0xb6>
          inst->quantile[i] = (float)exp(inst->lquantile[offset + i]);
    e887d93a:	bc478793          	addi	a5,a5,-1084 # 1bc4 <memcmp-0xe87fe43c>
    e887d93e:	4a81                	li	s5,0
    e887d940:	00f409b3          	add	s3,s0,a5
    e887d944:	a015                	j	e887d968 <WebRtcNs_NoiseEstimation+0x1fc>
    e887d946:	014a87bb          	addw	a5,s5,s4
    e887d94a:	56c78793          	addi	a5,a5,1388
    e887d94e:	04f4178b          	addsl	a5,s0,a5,2
    e887d952:	0087a507          	flw	fa0,8(a5)
    e887d956:	42050553          	fcvt.d.s	fa0,fa0
    e887d95a:	ee68d0ef          	jal	ra,e880b040 <exp>
    e887d95e:	40157553          	fcvt.s.d	fa0,fa0
    e887d962:	4559f50b          	fsrw	fa0,s3,s5,2
        for (i = 0; i < inst->magnLen; i++) {
    e887d966:	0a85                	addi	s5,s5,1
    e887d968:	4c18                	lw	a4,24(s0)
    e887d96a:	000a879b          	sext.w	a5,s5
    e887d96e:	fce7cce3          	blt	a5,a4,e887d946 <WebRtcNs_NoiseEstimation+0x1da>
    e887d972:	bd45                	j	e887d822 <WebRtcNs_NoiseEstimation+0xb6>
      inst->quantile[i] = (float)exp(inst->lquantile[offset + i]);
    e887d974:	014987bb          	addw	a5,s3,s4
    e887d978:	56c78793          	addi	a5,a5,1388
    e887d97c:	04f4178b          	addsl	a5,s0,a5,2
    e887d980:	0087a507          	flw	fa0,8(a5)
    e887d984:	42050553          	fcvt.d.s	fa0,fa0
    e887d988:	eb88d0ef          	jal	ra,e880b040 <exp>
    e887d98c:	40157553          	fcvt.s.d	fa0,fa0
    e887d990:	4534f50b          	fsrw	fa0,s1,s3,2
    for (i = 0; i < inst->magnLen; i++) {
    e887d994:	0985                	addi	s3,s3,1
    e887d996:	4c18                	lw	a4,24(s0)
    e887d998:	0009879b          	sext.w	a5,s3
    e887d99c:	fce7cce3          	blt	a5,a4,e887d974 <WebRtcNs_NoiseEstimation+0x208>
    e887d9a0:	b555                	j	e887d844 <WebRtcNs_NoiseEstimation+0xd8>
      inst->quantile[i] = (float)exp(inst->lquantile[offset + i]);
    e887d9a2:	bc478793          	addi	a5,a5,-1084
    e887d9a6:	4981                	li	s3,0
    e887d9a8:	00f404b3          	add	s1,s0,a5
    e887d9ac:	b7ed                	j	e887d996 <WebRtcNs_NoiseEstimation+0x22a>
    noise[i] = inst->quantile[i];
    e887d9ae:	44f7678b          	flrw	fa5,a4,a5,2
    e887d9b2:	44f9778b          	fsrw	fa5,s2,a5,2
  for (i = 0; i < inst->magnLen; i++) {
    e887d9b6:	0785                	addi	a5,a5,1
    e887d9b8:	bd59                	j	e887d84e <WebRtcNs_NoiseEstimation+0xe2>

00000000e887d9ba <WebRtcNs_FeatureParameterExtraction>:
  //lrt_feature = inst->featureData[3];
  //flat_feature = inst->featureData[0];
  //diff_feature = inst->featureData[4];

  //update histograms
  if (flag == 0) {
    e887d9ba:	e1f1                	bnez	a1,e887da7e <WebRtcNs_FeatureParameterExtraction+0xc4>
    // LRT
    if ((inst->featureData[3] < HIST_PAR_EST * inst->featureExtractionParams.binSizeLrt)
    e887d9bc:	668d                	lui	a3,0x3
    e887d9be:	00d507b3          	add	a5,a0,a3
    e887d9c2:	e607a607          	flw	fa2,-416(a5)
    e887d9c6:	a347a787          	flw	fa5,-1484(a5)
    e887d9ca:	00050797          	auipc	a5,0x50
    e887d9ce:	8aa7a707          	flw	fa4,-1878(a5) # e88cd274 <kGenFuncTable+0x104>
    e887d9d2:	10e676d3          	fmul.s	fa3,fa2,fa4
    e887d9d6:	a0d79753          	flt.s	a4,fa5,fa3
    e887d9da:	c31d                	beqz	a4,e887da00 <WebRtcNs_FeatureParameterExtraction+0x46>
        && (inst->featureData[3] >= 0.0)) {
    e887d9dc:	f00006d3          	fmv.w.x	fa3,zero
    e887d9e0:	a0f68753          	fle.s	a4,fa3,fa5
    e887d9e4:	cf11                	beqz	a4,e887da00 <WebRtcNs_FeatureParameterExtraction+0x46>
      i = (int)(inst->featureData[3] / inst->featureExtractionParams.binSizeLrt);
    e887d9e6:	18c7f7d3          	fdiv.s	fa5,fa5,fa2
    e887d9ea:	c00797d3          	fcvt.w.s	a5,fa5,rtz
    e887d9ee:	2781                	sext.w	a5,a5
    e887d9f0:	04f5178b          	addsl	a5,a0,a5,2
      inst->histLrt[i]++;
    e887d9f4:	97b6                	add	a5,a5,a3
    e887d9f6:	eb07a703          	lw	a4,-336(a5)
    e887d9fa:	2705                	addiw	a4,a4,1
    e887d9fc:	eae7a823          	sw	a4,-336(a5)
    }
    // Spectral flatness
    if ((inst->featureData[0] < HIST_PAR_EST
    e887da00:	678d                	lui	a5,0x3
    e887da02:	97aa                	add	a5,a5,a0
         * inst->featureExtractionParams.binSizeSpecFlat)
    e887da04:	e647a607          	flw	fa2,-412(a5) # 2e64 <memcmp-0xe87fd19c>
    if ((inst->featureData[0] < HIST_PAR_EST
    e887da08:	a287a787          	flw	fa5,-1496(a5)
         * inst->featureExtractionParams.binSizeSpecFlat)
    e887da0c:	10e676d3          	fmul.s	fa3,fa2,fa4
    if ((inst->featureData[0] < HIST_PAR_EST
    e887da10:	a0d79753          	flt.s	a4,fa5,fa3
    e887da14:	c705                	beqz	a4,e887da3c <WebRtcNs_FeatureParameterExtraction+0x82>
        && (inst->featureData[0] >= 0.0)) {
    e887da16:	f00006d3          	fmv.w.x	fa3,zero
    e887da1a:	a0f68753          	fle.s	a4,fa3,fa5
    e887da1e:	cf19                	beqz	a4,e887da3c <WebRtcNs_FeatureParameterExtraction+0x82>
      i = (int)(inst->featureData[0] / inst->featureExtractionParams.binSizeSpecFlat);
    e887da20:	18c7f7d3          	fdiv.s	fa5,fa5,fa2
      inst->histSpecFlat[i]++;
    e887da24:	6711                	lui	a4,0x4
      i = (int)(inst->featureData[0] / inst->featureExtractionParams.binSizeSpecFlat);
    e887da26:	c00797d3          	fcvt.w.s	a5,fa5,rtz
    e887da2a:	2781                	sext.w	a5,a5
    e887da2c:	04f5178b          	addsl	a5,a0,a5,2
      inst->histSpecFlat[i]++;
    e887da30:	97ba                	add	a5,a5,a4
    e887da32:	e507a703          	lw	a4,-432(a5)
    e887da36:	2705                	addiw	a4,a4,1
    e887da38:	e4e7a823          	sw	a4,-432(a5)
    }
    // Spectral difference
    if ((inst->featureData[4] < HIST_PAR_EST
    e887da3c:	678d                	lui	a5,0x3
    e887da3e:	97aa                	add	a5,a5,a0
         * inst->featureExtractionParams.binSizeSpecDiff)
    e887da40:	e687a687          	flw	fa3,-408(a5) # 2e68 <memcmp-0xe87fd198>
    if ((inst->featureData[4] < HIST_PAR_EST
    e887da44:	a387a787          	flw	fa5,-1480(a5)
         * inst->featureExtractionParams.binSizeSpecDiff)
    e887da48:	10e6f753          	fmul.s	fa4,fa3,fa4
    if ((inst->featureData[4] < HIST_PAR_EST
    e887da4c:	a0e79753          	flt.s	a4,fa5,fa4
    e887da50:	2e070563          	beqz	a4,e887dd3a <WebRtcNs_FeatureParameterExtraction+0x380>
        && (inst->featureData[4] >= 0.0)) {
    e887da54:	f0000753          	fmv.w.x	fa4,zero
    e887da58:	a0f70753          	fle.s	a4,fa4,fa5
    e887da5c:	2c070f63          	beqz	a4,e887dd3a <WebRtcNs_FeatureParameterExtraction+0x380>
      i = (int)(inst->featureData[4] / inst->featureExtractionParams.binSizeSpecDiff);
    e887da60:	18d7f7d3          	fdiv.s	fa5,fa5,fa3
    e887da64:	c00797d3          	fcvt.w.s	a5,fa5,rtz
    e887da68:	2781                	sext.w	a5,a5
    e887da6a:	04f5150b          	addsl	a0,a0,a5,2
      inst->histSpecDiff[i]++;
    e887da6e:	6795                	lui	a5,0x5
    e887da70:	953e                	add	a0,a0,a5
    e887da72:	df052783          	lw	a5,-528(a0) # 1df0 <memcmp-0xe87fe210>
    e887da76:	2785                	addiw	a5,a5,1
    e887da78:	def52823          	sw	a5,-528(a0)
    e887da7c:	8082                	ret
    }
  }

  // extract parameters for speech/noise probability
  if (flag == 1) {
    e887da7e:	4785                	li	a5,1
    e887da80:	2af59d63          	bne	a1,a5,e887dd3a <WebRtcNs_FeatureParameterExtraction+0x380>
    avgHistLrt = 0.0;
    avgHistLrtCompl = 0.0;
    avgSquareHistLrt = 0.0;
    numHistLrt = 0;
    for (i = 0; i < HIST_PAR_EST; i++) {
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeLrt;
    e887da84:	678d                	lui	a5,0x3
    avgHistLrtCompl = 0.0;
    e887da86:	f0000753          	fmv.w.x	fa4,zero
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeLrt;
    e887da8a:	00f50733          	add	a4,a0,a5
    e887da8e:	e6072007          	flw	ft0,-416(a4) # 3e60 <memcmp-0xe87fc1a0>
      if (binMid <= inst->featureExtractionParams.rangeAvgHistLrt) {
    e887da92:	e6c72087          	flw	ft1,-404(a4)
    avgSquareHistLrt = 0.0;
    e887da96:	20e705d3          	fmv.s	fa1,fa4
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeLrt;
    e887da9a:	0004f717          	auipc	a4,0x4f
    e887da9e:	7ea72507          	flw	fa0,2026(a4) # e88cd284 <kGenFuncTable+0x114>
    avgHistLrt = 0.0;
    e887daa2:	20e707d3          	fmv.s	fa5,fa4
    e887daa6:	eb078793          	addi	a5,a5,-336 # 2eb0 <memcmp-0xe87fd150>
      if (binMid <= inst->featureExtractionParams.rangeAvgHistLrt) {
    e887daaa:	4601                	li	a2,0
    numHistLrt = 0;
    e887daac:	4681                	li	a3,0
    e887daae:	00f50733          	add	a4,a0,a5
    for (i = 0; i < HIST_PAR_EST; i++) {
    e887dab2:	3e800813          	li	a6,1000
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeLrt;
    e887dab6:	d0067653          	fcvt.s.w	fa2,a2
    e887daba:	44c7478b          	lrw	a5,a4,a2,2
    e887dabe:	00a67653          	fadd.s	fa2,fa2,fa0
    e887dac2:	d007f6d3          	fcvt.s.w	fa3,a5
    e887dac6:	10067653          	fmul.s	fa2,fa2,ft0
      if (binMid <= inst->featureExtractionParams.rangeAvgHistLrt) {
    e887daca:	a01608d3          	fle.s	a7,fa2,ft1
    e887dace:	10c6f6d3          	fmul.s	fa3,fa3,fa2
    e887dad2:	00088563          	beqz	a7,e887dadc <WebRtcNs_FeatureParameterExtraction+0x122>
        avgHistLrt += inst->histLrt[i] * binMid;
    e887dad6:	00d7f7d3          	fadd.s	fa5,fa5,fa3
        numHistLrt += inst->histLrt[i];
    e887dada:	9ebd                	addw	a3,a3,a5
      }
      avgSquareHistLrt += inst->histLrt[i] * binMid * binMid;
    e887dadc:	0605                	addi	a2,a2,1
    e887dade:	58c6f5c3          	fmadd.s	fa1,fa3,fa2,fa1
      avgHistLrtCompl += inst->histLrt[i] * binMid;
    e887dae2:	00d77753          	fadd.s	fa4,fa4,fa3
    for (i = 0; i < HIST_PAR_EST; i++) {
    e887dae6:	fd0618e3          	bne	a2,a6,e887dab6 <WebRtcNs_FeatureParameterExtraction+0xfc>
    }
    if (numHistLrt > 0) {
    e887daea:	00d05663          	blez	a3,e887daf6 <WebRtcNs_FeatureParameterExtraction+0x13c>
      avgHistLrt = avgHistLrt / ((float)numHistLrt);
    e887daee:	d006f653          	fcvt.s.w	fa2,a3
    e887daf2:	18c7f7d3          	fdiv.s	fa5,fa5,fa2
    }
    avgHistLrtCompl = avgHistLrtCompl / ((float)inst->modelUpdatePars[1]);
    e887daf6:	6689                	lui	a3,0x2
    e887daf8:	96aa                	add	a3,a3,a0
    e887dafa:	3f06a783          	lw	a5,1008(a3) # 23f0 <memcmp-0xe87fdc10>
    e887dafe:	d007f6d3          	fcvt.s.w	fa3,a5
    avgSquareHistLrt = avgSquareHistLrt / ((float)inst->modelUpdatePars[1]);
    fluctLrt = avgSquareHistLrt - avgHistLrt * avgHistLrtCompl;
    // get threshold for lrt feature:
    if (fluctLrt < inst->featureExtractionParams.thresFluctLrt) {
    e887db02:	678d                	lui	a5,0x3
    e887db04:	97aa                	add	a5,a5,a0
    e887db06:	e907a607          	flw	fa2,-368(a5) # 2e90 <memcmp-0xe87fd170>
    avgHistLrtCompl = avgHistLrtCompl / ((float)inst->modelUpdatePars[1]);
    e887db0a:	18d77753          	fdiv.s	fa4,fa4,fa3
    avgSquareHistLrt = avgSquareHistLrt / ((float)inst->modelUpdatePars[1]);
    e887db0e:	18d5f5d3          	fdiv.s	fa1,fa1,fa3
    if (fluctLrt < inst->featureExtractionParams.thresFluctLrt) {
    e887db12:	e8c7a687          	flw	fa3,-372(a5)
    fluctLrt = avgSquareHistLrt - avgHistLrt * avgHistLrtCompl;
    e887db16:	58e7f5cb          	fnmsub.s	fa1,fa5,fa4,fa1
    if (fluctLrt < inst->featureExtractionParams.thresFluctLrt) {
    e887db1a:	e707a707          	flw	fa4,-400(a5)
    e887db1e:	a0d59853          	flt.s	a6,fa1,fa3
    e887db22:	20080d63          	beqz	a6,e887dd3c <WebRtcNs_FeatureParameterExtraction+0x382>
      //very low fluct, so likely noise
      inst->priorModelPars[0] = inst->featureExtractionParams.maxLrt;
    e887db26:	3ec6ae27          	fsw	fa2,1020(a3)
    //
    // for spectral flatness and spectral difference: compute the main peaks of histogram
    maxPeak1 = 0;
    maxPeak2 = 0;
    posPeak1SpecFlat = 0.0;
    posPeak2SpecFlat = 0.0;
    e887db2a:	f00000d3          	fmv.w.x	ft1,zero
    weightPeak1SpecFlat = 0;
    weightPeak2SpecFlat = 0;

    // peaks for flatness
    for (i = 0; i < HIST_PAR_EST; i++) {
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeSpecFlat;
    e887db2e:	678d                	lui	a5,0x3
    e887db30:	97aa                	add	a5,a5,a0
      if (inst->histSpecFlat[i] > maxPeak1) {
    e887db32:	6891                	lui	a7,0x4
    posPeak1SpecFlat = 0.0;
    e887db34:	201087d3          	fmv.s	fa5,ft1
      if (inst->histSpecFlat[i] > maxPeak1) {
    e887db38:	e5088893          	addi	a7,a7,-432 # 3e50 <memcmp-0xe87fc1b0>
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeSpecFlat;
    e887db3c:	e647a607          	flw	fa2,-412(a5) # 2e64 <memcmp-0xe87fd19c>
    e887db40:	4681                	li	a3,0
    weightPeak2SpecFlat = 0;
    e887db42:	4601                	li	a2,0
    weightPeak1SpecFlat = 0;
    e887db44:	4781                	li	a5,0
    maxPeak2 = 0;
    e887db46:	4e81                	li	t4,0
    maxPeak1 = 0;
    e887db48:	4e01                	li	t3,0
      if (inst->histSpecFlat[i] > maxPeak1) {
    e887db4a:	98aa                	add	a7,a7,a0
    for (i = 0; i < HIST_PAR_EST; i++) {
    e887db4c:	3e800f13          	li	t5,1000
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeSpecFlat;
    e887db50:	d006f6d3          	fcvt.s.w	fa3,a3
      if (inst->histSpecFlat[i] > maxPeak1) {
    e887db54:	44d8c30b          	lrw	t1,a7,a3,2
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeSpecFlat;
    e887db58:	00a6f6d3          	fadd.s	fa3,fa3,fa0
    e887db5c:	10c6f6d3          	fmul.s	fa3,fa3,fa2
      if (inst->histSpecFlat[i] > maxPeak1) {
    e887db60:	206e4463          	blt	t3,t1,e887dd68 <WebRtcNs_FeatureParameterExtraction+0x3ae>
        posPeak2SpecFlat = posPeak1SpecFlat;

        maxPeak1 = inst->histSpecFlat[i];
        weightPeak1SpecFlat = inst->histSpecFlat[i];
        posPeak1SpecFlat = binMid;
      } else if (inst->histSpecFlat[i] > maxPeak2) {
    e887db64:	006ed663          	bge	t4,t1,e887db70 <WebRtcNs_FeatureParameterExtraction+0x1b6>
        // Found new "second" peak
        maxPeak2 = inst->histSpecFlat[i];
        weightPeak2SpecFlat = inst->histSpecFlat[i];
        posPeak2SpecFlat = binMid;
    e887db68:	20d680d3          	fmv.s	ft1,fa3
      } else if (inst->histSpecFlat[i] > maxPeak2) {
    e887db6c:	861a                	mv	a2,t1
    e887db6e:	8e9a                	mv	t4,t1
    for (i = 0; i < HIST_PAR_EST; i++) {
    e887db70:	0685                	addi	a3,a3,1
    e887db72:	fde69fe3          	bne	a3,t5,e887db50 <WebRtcNs_FeatureParameterExtraction+0x196>

    //compute two peaks for spectral difference
    maxPeak1 = 0;
    maxPeak2 = 0;
    posPeak1SpecDiff = 0.0;
    posPeak2SpecDiff = 0.0;
    e887db76:	f0000653          	fmv.w.x	fa2,zero
    weightPeak1SpecDiff = 0;
    weightPeak2SpecDiff = 0;
    // peaks for spectral difference
    for (i = 0; i < HIST_PAR_EST; i++) {
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeSpecDiff;
    e887db7a:	668d                	lui	a3,0x3
    e887db7c:	96aa                	add	a3,a3,a0
      if (inst->histSpecDiff[i] > maxPeak1) {
    e887db7e:	6e15                	lui	t3,0x5
    posPeak1SpecDiff = 0.0;
    e887db80:	20c606d3          	fmv.s	fa3,fa2
      if (inst->histSpecDiff[i] > maxPeak1) {
    e887db84:	df0e0e13          	addi	t3,t3,-528 # 4df0 <memcmp-0xe87fb210>
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeSpecDiff;
    e887db88:	e686a007          	flw	ft0,-408(a3) # 2e68 <memcmp-0xe87fd198>
    e887db8c:	4301                	li	t1,0
    weightPeak2SpecDiff = 0;
    e887db8e:	4881                	li	a7,0
    weightPeak1SpecDiff = 0;
    e887db90:	4681                	li	a3,0
    maxPeak2 = 0;
    e887db92:	4f81                	li	t6,0
    maxPeak1 = 0;
    e887db94:	4f01                	li	t5,0
      if (inst->histSpecDiff[i] > maxPeak1) {
    e887db96:	9e2a                	add	t3,t3,a0
    for (i = 0; i < HIST_PAR_EST; i++) {
    e887db98:	3e800293          	li	t0,1000
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeSpecDiff;
    e887db9c:	d00375d3          	fcvt.s.w	fa1,t1
      if (inst->histSpecDiff[i] > maxPeak1) {
    e887dba0:	446e4e8b          	lrw	t4,t3,t1,2
      binMid = ((float)i + (float)0.5) * inst->featureExtractionParams.binSizeSpecDiff;
    e887dba4:	00a5f5d3          	fadd.s	fa1,fa1,fa0
    e887dba8:	1005f5d3          	fmul.s	fa1,fa1,ft0
      if (inst->histSpecDiff[i] > maxPeak1) {
    e887dbac:	1ddf4763          	blt	t5,t4,e887dd7a <WebRtcNs_FeatureParameterExtraction+0x3c0>
        posPeak2SpecDiff = posPeak1SpecDiff;

        maxPeak1 = inst->histSpecDiff[i];
        weightPeak1SpecDiff = inst->histSpecDiff[i];
        posPeak1SpecDiff = binMid;
      } else if (inst->histSpecDiff[i] > maxPeak2) {
    e887dbb0:	01dfd663          	bge	t6,t4,e887dbbc <WebRtcNs_FeatureParameterExtraction+0x202>
        // Found new "second" peak
        maxPeak2 = inst->histSpecDiff[i];
        weightPeak2SpecDiff = inst->histSpecDiff[i];
        posPeak2SpecDiff = binMid;
    e887dbb4:	20b58653          	fmv.s	fa2,fa1
      } else if (inst->histSpecDiff[i] > maxPeak2) {
    e887dbb8:	88f6                	mv	a7,t4
    e887dbba:	8ff6                	mv	t6,t4
    for (i = 0; i < HIST_PAR_EST; i++) {
    e887dbbc:	0305                	addi	t1,t1,1
    e887dbbe:	fc531fe3          	bne	t1,t0,e887db9c <WebRtcNs_FeatureParameterExtraction+0x1e2>
    }

    // for spectrum flatness feature
    useFeatureSpecFlat = 1;
    // merge the two peaks if they are close
    if ((fabs(posPeak2SpecFlat - posPeak1SpecFlat)
    e887dbc2:	08f0f5d3          	fsub.s	fa1,ft1,fa5
         < inst->featureExtractionParams.limitPeakSpacingSpecFlat)
    e887dbc6:	6e0d                	lui	t3,0x3
    e887dbc8:	9e2a                	add	t3,t3,a0
    if ((fabs(posPeak2SpecFlat - posPeak1SpecFlat)
    e887dbca:	e7ce2007          	flw	ft0,-388(t3) # 2e7c <memcmp-0xe87fd184>
    e887dbce:	20b5a5d3          	fabs.s	fa1,fa1
    e887dbd2:	a0059353          	flt.s	t1,fa1,ft0
    e887dbd6:	02030363          	beqz	t1,e887dbfc <WebRtcNs_FeatureParameterExtraction+0x242>
        && (weightPeak2SpecFlat
            > inst->featureExtractionParams.limitPeakWeightsSpecFlat
            * weightPeak1SpecFlat)) {
    e887dbda:	d007f053          	fcvt.s.w	ft0,a5
    e887dbde:	e84e2107          	flw	ft2,-380(t3)
            > inst->featureExtractionParams.limitPeakWeightsSpecFlat
    e887dbe2:	d00675d3          	fcvt.s.w	fa1,a2
            * weightPeak1SpecFlat)) {
    e887dbe6:	10207053          	fmul.s	ft0,ft0,ft2
        && (weightPeak2SpecFlat
    e887dbea:	a0b01353          	flt.s	t1,ft0,fa1
    e887dbee:	00030763          	beqz	t1,e887dbfc <WebRtcNs_FeatureParameterExtraction+0x242>
      weightPeak1SpecFlat += weightPeak2SpecFlat;
      posPeak1SpecFlat = (float)0.5 * (posPeak1SpecFlat + posPeak2SpecFlat);
    e887dbf2:	0017f7d3          	fadd.s	fa5,fa5,ft1
      weightPeak1SpecFlat += weightPeak2SpecFlat;
    e887dbf6:	9fb1                	addw	a5,a5,a2
      posPeak1SpecFlat = (float)0.5 * (posPeak1SpecFlat + posPeak2SpecFlat);
    e887dbf8:	10a7f7d3          	fmul.s	fa5,fa5,fa0
    }
    //reject if weight of peaks is not large enough, or peak value too small
    if (weightPeak1SpecFlat < inst->featureExtractionParams.thresWeightSpecFlat
    e887dbfc:	660d                	lui	a2,0x3
    e887dbfe:	962a                	add	a2,a2,a0
    e887dc00:	ea862303          	lw	t1,-344(a2) # 2ea8 <memcmp-0xe87fd158>
    e887dc04:	1867c463          	blt	a5,t1,e887dd8c <WebRtcNs_FeatureParameterExtraction+0x3d2>
        || posPeak1SpecFlat < inst->featureExtractionParams.thresPosSpecFlat) {
    e887dc08:	e7862587          	flw	fa1,-392(a2)
    e887dc0c:	a0b797d3          	flt.s	a5,fa5,fa1
    e887dc10:	16079e63          	bnez	a5,e887dd8c <WebRtcNs_FeatureParameterExtraction+0x3d2>
    }
    // if selected, get the threshold
    if (useFeatureSpecFlat == 1) {
      // compute the threshold
      inst->priorModelPars[1] = inst->featureExtractionParams.factor2ModelPars
                                * posPeak1SpecFlat;
    e887dc14:	e7462587          	flw	fa1,-396(a2)
      inst->priorModelPars[1] = inst->featureExtractionParams.factor2ModelPars
    e887dc18:	6309                	lui	t1,0x2
    e887dc1a:	932a                	add	t1,t1,a0
                                * posPeak1SpecFlat;
    e887dc1c:	10b7f7d3          	fmul.s	fa5,fa5,fa1
      inst->priorModelPars[1] = inst->featureExtractionParams.factor2ModelPars
    e887dc20:	40f32027          	fsw	fa5,1024(t1) # 2400 <memcmp-0xe87fdc00>
      //check if value is within min/max range
      if (inst->priorModelPars[1] < inst->featureExtractionParams.minSpecFlat) {
    e887dc24:	e9c62587          	flw	fa1,-356(a2)
    e887dc28:	a0b797d3          	flt.s	a5,fa5,fa1
    e887dc2c:	c399                	beqz	a5,e887dc32 <WebRtcNs_FeatureParameterExtraction+0x278>
        inst->priorModelPars[1] = inst->featureExtractionParams.minSpecFlat;
    e887dc2e:	40b32027          	fsw	fa1,1024(t1)
      }
      if (inst->priorModelPars[1] > inst->featureExtractionParams.maxSpecFlat) {
    e887dc32:	678d                	lui	a5,0x3
    e887dc34:	97aa                	add	a5,a5,a0
    e887dc36:	e987a587          	flw	fa1,-360(a5) # 2e98 <memcmp-0xe87fd168>
    e887dc3a:	6789                	lui	a5,0x2
    e887dc3c:	97aa                	add	a5,a5,a0
    e887dc3e:	4007a787          	flw	fa5,1024(a5) # 2400 <memcmp-0xe87fdc00>
    e887dc42:	a0f59653          	flt.s	a2,fa1,fa5
    e887dc46:	c219                	beqz	a2,e887dc4c <WebRtcNs_FeatureParameterExtraction+0x292>
        inst->priorModelPars[1] = inst->featureExtractionParams.maxSpecFlat;
    e887dc48:	40b7a027          	fsw	fa1,1024(a5)
    // done with flatness feature

    // for template feature
    useFeatureSpecDiff = 1;
    // merge the two peaks if they are close
    if ((fabs(posPeak2SpecDiff - posPeak1SpecDiff)
    e887dc4c:	08d677d3          	fsub.s	fa5,fa2,fa3
         < inst->featureExtractionParams.limitPeakSpacingSpecDiff)
    e887dc50:	660d                	lui	a2,0x3
    e887dc52:	962a                	add	a2,a2,a0
    if ((fabs(posPeak2SpecDiff - posPeak1SpecDiff)
    e887dc54:	e8062587          	flw	fa1,-384(a2) # 2e80 <memcmp-0xe87fd180>
    e887dc58:	20f7a7d3          	fabs.s	fa5,fa5
    e887dc5c:	a0b797d3          	flt.s	a5,fa5,fa1
    e887dc60:	c395                	beqz	a5,e887dc84 <WebRtcNs_FeatureParameterExtraction+0x2ca>
        && (weightPeak2SpecDiff
            > inst->featureExtractionParams.limitPeakWeightsSpecDiff
            * weightPeak1SpecDiff)) {
    e887dc62:	d006f5d3          	fcvt.s.w	fa1,a3
    e887dc66:	e8862007          	flw	ft0,-376(a2)
            > inst->featureExtractionParams.limitPeakWeightsSpecDiff
    e887dc6a:	d008f7d3          	fcvt.s.w	fa5,a7
            * weightPeak1SpecDiff)) {
    e887dc6e:	1005f5d3          	fmul.s	fa1,fa1,ft0
        && (weightPeak2SpecDiff
    e887dc72:	a0f597d3          	flt.s	a5,fa1,fa5
    e887dc76:	c799                	beqz	a5,e887dc84 <WebRtcNs_FeatureParameterExtraction+0x2ca>
      weightPeak1SpecDiff += weightPeak2SpecDiff;
      posPeak1SpecDiff = (float)0.5 * (posPeak1SpecDiff + posPeak2SpecDiff);
    e887dc78:	00c6f6d3          	fadd.s	fa3,fa3,fa2
      weightPeak1SpecDiff += weightPeak2SpecDiff;
    e887dc7c:	011686bb          	addw	a3,a3,a7
      posPeak1SpecDiff = (float)0.5 * (posPeak1SpecDiff + posPeak2SpecDiff);
    e887dc80:	10a6f6d3          	fmul.s	fa3,fa3,fa0
    }
    // get the threshold value
    inst->priorModelPars[3] = inst->featureExtractionParams.factor1ModelPars
                              * posPeak1SpecDiff;
    e887dc84:	10d776d3          	fmul.s	fa3,fa4,fa3
    inst->priorModelPars[3] = inst->featureExtractionParams.factor1ModelPars
    e887dc88:	6789                	lui	a5,0x2
    //reject if weight of peaks is not large enough
    if (weightPeak1SpecDiff < inst->featureExtractionParams.thresWeightSpecDiff) {
    e887dc8a:	660d                	lui	a2,0x3
    e887dc8c:	962a                	add	a2,a2,a0
    inst->priorModelPars[3] = inst->featureExtractionParams.factor1ModelPars
    e887dc8e:	97aa                	add	a5,a5,a0
    e887dc90:	40d7a427          	fsw	fa3,1032(a5) # 2408 <memcmp-0xe87fdbf8>
      useFeatureSpecDiff = 0;
    }
    //check if value is within min/max range
    if (inst->priorModelPars[3] < inst->featureExtractionParams.minSpecDiff) {
    e887dc94:	ea462707          	flw	fa4,-348(a2) # 2ea4 <memcmp-0xe87fd15c>
    if (weightPeak1SpecDiff < inst->featureExtractionParams.thresWeightSpecDiff) {
    e887dc98:	eac62883          	lw	a7,-340(a2)
    if (inst->priorModelPars[3] < inst->featureExtractionParams.minSpecDiff) {
    e887dc9c:	a0e69653          	flt.s	a2,fa3,fa4
    e887dca0:	c219                	beqz	a2,e887dca6 <WebRtcNs_FeatureParameterExtraction+0x2ec>
      inst->priorModelPars[3] = inst->featureExtractionParams.minSpecDiff;
    e887dca2:	40e7a427          	fsw	fa4,1032(a5)
    }
    if (inst->priorModelPars[3] > inst->featureExtractionParams.maxSpecDiff) {
    e887dca6:	678d                	lui	a5,0x3
    e887dca8:	97aa                	add	a5,a5,a0
    e887dcaa:	ea07a707          	flw	fa4,-352(a5) # 2ea0 <memcmp-0xe87fd160>
    e887dcae:	6789                	lui	a5,0x2
    e887dcb0:	97aa                	add	a5,a5,a0
    e887dcb2:	4087a787          	flw	fa5,1032(a5) # 2408 <memcmp-0xe87fdbf8>
    e887dcb6:	a0f71653          	flt.s	a2,fa4,fa5
    e887dcba:	c219                	beqz	a2,e887dcc0 <WebRtcNs_FeatureParameterExtraction+0x306>
      inst->priorModelPars[3] = inst->featureExtractionParams.maxSpecDiff;
    e887dcbc:	40e7a427          	fsw	fa4,1032(a5)
    }
    // done with spectral difference feature

    // don't use template feature if fluctuation of lrt feature is very low:
    //  most likely just noise state
    if (fluctLrt < inst->featureExtractionParams.thresFluctLrt) {
    e887dcc0:	4781                	li	a5,0
    e887dcc2:	00081863          	bnez	a6,e887dcd2 <WebRtcNs_FeatureParameterExtraction+0x318>
    if (weightPeak1SpecDiff < inst->featureExtractionParams.thresWeightSpecDiff) {
    e887dcc6:	0116a7b3          	slt	a5,a3,a7
    e887dcca:	0017c793          	xori	a5,a5,1
    e887dcce:	0ff7f793          	andi	a5,a5,255
    e887dcd2:	2781                	sext.w	a5,a5

    // select the weights between the features
    // inst->priorModelPars[4] is weight for lrt: always selected
    // inst->priorModelPars[5] is weight for spectral flatness
    // inst->priorModelPars[6] is weight for spectral difference
    featureSum = (float)(1 + useFeatureSpecFlat + useFeatureSpecDiff);
    e887dcd4:	0015869b          	addiw	a3,a1,1
    e887dcd8:	9ebd                	addw	a3,a3,a5
    e887dcda:	d006f753          	fcvt.s.w	fa4,a3
    inst->priorModelPars[4] = (float)1.0 / featureSum;
    e887dcde:	0004f617          	auipc	a2,0x4f
    e887dce2:	5a262787          	flw	fa5,1442(a2) # e88cd280 <kGenFuncTable+0x110>
    e887dce6:	6689                	lui	a3,0x2
    e887dce8:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
    e887dcec:	96aa                	add	a3,a3,a0
    e887dcee:	40f6a627          	fsw	fa5,1036(a3) # 240c <memcmp-0xe87fdbf4>
    inst->priorModelPars[5] = ((float)useFeatureSpecFlat) / featureSum;
    e887dcf2:	d005f7d3          	fcvt.s.w	fa5,a1
    e887dcf6:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
    e887dcfa:	40f6a827          	fsw	fa5,1040(a3)
    inst->priorModelPars[6] = ((float)useFeatureSpecDiff) / featureSum;
    e887dcfe:	d007f7d3          	fcvt.s.w	fa5,a5

    // set hists to zero for next update
    if (inst->modelUpdatePars[0] >= 1) {
    e887dd02:	3ec6a783          	lw	a5,1004(a3)
    inst->priorModelPars[6] = ((float)useFeatureSpecDiff) / featureSum;
    e887dd06:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
    e887dd0a:	40f6aa27          	fsw	fa5,1044(a3)
    if (inst->modelUpdatePars[0] >= 1) {
    e887dd0e:	02f05663          	blez	a5,e887dd3a <WebRtcNs_FeatureParameterExtraction+0x380>
    e887dd12:	87ba                	mv	a5,a4
    e887dd14:	6711                	lui	a4,0x4
    e887dd16:	e5070713          	addi	a4,a4,-432 # 3e50 <memcmp-0xe87fc1b0>
    e887dd1a:	953a                	add	a0,a0,a4
      for (i = 0; i < HIST_PAR_EST; i++) {
        inst->histLrt[i] = 0;
        inst->histSpecFlat[i] = 0;
    e887dd1c:	6605                	lui	a2,0x1
        inst->histSpecDiff[i] = 0;
    e887dd1e:	6689                	lui	a3,0x2
        inst->histLrt[i] = 0;
    e887dd20:	0007a023          	sw	zero,0(a5)
        inst->histSpecFlat[i] = 0;
    e887dd24:	00c78733          	add	a4,a5,a2
    e887dd28:	fa072023          	sw	zero,-96(a4)
        inst->histSpecDiff[i] = 0;
    e887dd2c:	00d78733          	add	a4,a5,a3
    e887dd30:	f4072023          	sw	zero,-192(a4)
      for (i = 0; i < HIST_PAR_EST; i++) {
    e887dd34:	0791                	addi	a5,a5,4
    e887dd36:	fef515e3          	bne	a0,a5,e887dd20 <WebRtcNs_FeatureParameterExtraction+0x366>
      }
    }
  }  // end of flag == 1
}
    e887dd3a:	8082                	ret
                                * avgHistLrt;
    e887dd3c:	10f777d3          	fmul.s	fa5,fa4,fa5
      inst->priorModelPars[0] = inst->featureExtractionParams.factor1ModelPars
    e887dd40:	3ef6ae27          	fsw	fa5,1020(a3) # 23fc <memcmp-0xe87fdc04>
      if (inst->priorModelPars[0] < inst->featureExtractionParams.minLrt) {
    e887dd44:	e947a687          	flw	fa3,-364(a5)
    e887dd48:	a0d797d3          	flt.s	a5,fa5,fa3
    e887dd4c:	c399                	beqz	a5,e887dd52 <WebRtcNs_FeatureParameterExtraction+0x398>
        inst->priorModelPars[0] = inst->featureExtractionParams.minLrt;
    e887dd4e:	3ed6ae27          	fsw	fa3,1020(a3)
      if (inst->priorModelPars[0] > inst->featureExtractionParams.maxLrt) {
    e887dd52:	6789                	lui	a5,0x2
    e887dd54:	97aa                	add	a5,a5,a0
    e887dd56:	3fc7a787          	flw	fa5,1020(a5) # 23fc <memcmp-0xe87fdc04>
    e887dd5a:	a0f616d3          	flt.s	a3,fa2,fa5
    e887dd5e:	dc0686e3          	beqz	a3,e887db2a <WebRtcNs_FeatureParameterExtraction+0x170>
        inst->priorModelPars[0] = inst->featureExtractionParams.maxLrt;
    e887dd62:	3ec7ae27          	fsw	fa2,1020(a5)
    e887dd66:	b3d1                	j	e887db2a <WebRtcNs_FeatureParameterExtraction+0x170>
    e887dd68:	20f780d3          	fmv.s	ft1,fa5
    e887dd6c:	863e                	mv	a2,a5
    e887dd6e:	8ef2                	mv	t4,t3
        posPeak1SpecFlat = binMid;
    e887dd70:	20d687d3          	fmv.s	fa5,fa3
    e887dd74:	879a                	mv	a5,t1
    e887dd76:	8e1a                	mv	t3,t1
    e887dd78:	bbe5                	j	e887db70 <WebRtcNs_FeatureParameterExtraction+0x1b6>
    e887dd7a:	20d68653          	fmv.s	fa2,fa3
    e887dd7e:	88b6                	mv	a7,a3
    e887dd80:	8ffa                	mv	t6,t5
        posPeak1SpecDiff = binMid;
    e887dd82:	20b586d3          	fmv.s	fa3,fa1
    e887dd86:	86f6                	mv	a3,t4
    e887dd88:	8f76                	mv	t5,t4
    e887dd8a:	bd0d                	j	e887dbbc <WebRtcNs_FeatureParameterExtraction+0x202>
      useFeatureSpecFlat = 0;
    e887dd8c:	4581                	li	a1,0
    e887dd8e:	bd7d                	j	e887dc4c <WebRtcNs_FeatureParameterExtraction+0x292>

00000000e887dd90 <WebRtcNs_ComputeSpectralFlatness>:

// Compute spectral flatness on input spectrum
// magnIn is the magnitude spectrum
// spectral flatness is returned in inst->featureData[0]
void WebRtcNs_ComputeSpectralFlatness(NSinst_t* inst, float* magnIn) {
    e887dd90:	715d                	addi	sp,sp,-80
    e887dd92:	ac4a                	fsd	fs2,24(sp)
  int shiftLP = 1; //option to remove first bin(s) from spectral measures
  float avgSpectralFlatnessNum, avgSpectralFlatnessDen, spectralTmp;

  // comute spectral measures
  // for flatness
  avgSpectralFlatnessNum = 0.0;
    e887dd94:	f0000953          	fmv.w.x	fs2,zero
  avgSpectralFlatnessDen = inst->sumMagn;
    e887dd98:	678d                	lui	a5,0x3
void WebRtcNs_ComputeSpectralFlatness(NSinst_t* inst, float* magnIn) {
    e887dd9a:	e0a2                	sd	s0,64(sp)
    e887dd9c:	fc26                	sd	s1,56(sp)
    e887dd9e:	e486                	sd	ra,72(sp)
  avgSpectralFlatnessDen = inst->sumMagn;
    e887dda0:	97aa                	add	a5,a5,a0
void WebRtcNs_ComputeSpectralFlatness(NSinst_t* inst, float* magnIn) {
    e887dda2:	b026                	fsd	fs1,32(sp)
    e887dda4:	b422                	fsd	fs0,40(sp)
    e887dda6:	a84e                	fsd	fs3,16(sp)
  for (i = 0; i < shiftLP; i++) {
    avgSpectralFlatnessDen -= magnIn[i];
  }
  // compute log of ratio of the geometric to arithmetic mean: check for log(0) case
  for (i = shiftLP; i < inst->magnLen; i++) {
    if (magnIn[i] > 0.0) {
    e887dda8:	212904d3          	fmv.s	fs1,fs2
  avgSpectralFlatnessDen = inst->sumMagn;
    e887ddac:	c4c7a407          	flw	fs0,-948(a5) # 2c4c <memcmp-0xe87fd3b4>
    avgSpectralFlatnessDen -= magnIn[i];
    e887ddb0:	0005a987          	flw	fs3,0(a1) # 3f000000 <memcmp-0xa9800000>
void WebRtcNs_ComputeSpectralFlatness(NSinst_t* inst, float* magnIn) {
    e887ddb4:	842a                	mv	s0,a0
  for (i = shiftLP; i < inst->magnLen; i++) {
    e887ddb6:	4485                	li	s1,1
    e887ddb8:	4c1c                	lw	a5,24(s0)
    e887ddba:	04f4c163          	blt	s1,a5,e887ddfc <WebRtcNs_ComputeSpectralFlatness+0x6c>
      inst->featureData[0] -= SPECT_FL_TAVG * inst->featureData[0];
      return;
    }
  }
  //normalize
  avgSpectralFlatnessDen = avgSpectralFlatnessDen / inst->magnLen;
    e887ddbe:	d007f4d3          	fcvt.s.w	fs1,a5
    avgSpectralFlatnessDen -= magnIn[i];
    e887ddc2:	09347453          	fsub.s	fs0,fs0,fs3
  avgSpectralFlatnessNum = avgSpectralFlatnessNum / inst->magnLen;
    e887ddc6:	18997553          	fdiv.s	fa0,fs2,fs1

  //ratio and inverse log: check for case of log(0)
  spectralTmp = (float)exp(avgSpectralFlatnessNum) / avgSpectralFlatnessDen;
    e887ddca:	42050553          	fcvt.d.s	fa0,fa0
    e887ddce:	a728d0ef          	jal	ra,e880b040 <exp>
  avgSpectralFlatnessDen = avgSpectralFlatnessDen / inst->magnLen;
    e887ddd2:	18947453          	fdiv.s	fs0,fs0,fs1
  spectralTmp = (float)exp(avgSpectralFlatnessNum) / avgSpectralFlatnessDen;
    e887ddd6:	40157553          	fcvt.s.d	fa0,fa0

  //time-avg update of spectral flatness feature
  inst->featureData[0] += SPECT_FL_TAVG * (spectralTmp - inst->featureData[0]);
    e887ddda:	650d                	lui	a0,0x3
    e887dddc:	942a                	add	s0,s0,a0
    e887ddde:	a2842787          	flw	fa5,-1496(s0)
    e887dde2:	0004f797          	auipc	a5,0x4f
    e887dde6:	49a7a707          	flw	fa4,1178(a5) # e88cd27c <kGenFuncTable+0x10c>
  spectralTmp = (float)exp(avgSpectralFlatnessNum) / avgSpectralFlatnessDen;
    e887ddea:	18857553          	fdiv.s	fa0,fa0,fs0
  inst->featureData[0] += SPECT_FL_TAVG * (spectralTmp - inst->featureData[0]);
    e887ddee:	08f57553          	fsub.s	fa0,fa0,fa5
    e887ddf2:	78e57543          	fmadd.s	fa0,fa0,fa4,fa5
    e887ddf6:	a2a42427          	fsw	fa0,-1496(s0)
    e887ddfa:	a835                	j	e887de36 <WebRtcNs_ComputeSpectralFlatness+0xa6>
    if (magnIn[i] > 0.0) {
    e887ddfc:	4495e50b          	flrw	fa0,a1,s1,2
    e887de00:	e42e                	sd	a1,8(sp)
    e887de02:	a0a497d3          	flt.s	a5,fs1,fa0
    e887de06:	cf81                	beqz	a5,e887de1e <WebRtcNs_ComputeSpectralFlatness+0x8e>
      avgSpectralFlatnessNum += (float)log(magnIn[i]);
    e887de08:	42050553          	fcvt.d.s	fa0,fa0
  for (i = shiftLP; i < inst->magnLen; i++) {
    e887de0c:	2485                	addiw	s1,s1,1
      avgSpectralFlatnessNum += (float)log(magnIn[i]);
    e887de0e:	b228d0ef          	jal	ra,e880b130 <log>
    e887de12:	40157553          	fcvt.s.d	fa0,fa0
    e887de16:	65a2                	ld	a1,8(sp)
    e887de18:	00a97953          	fadd.s	fs2,fs2,fa0
  for (i = shiftLP; i < inst->magnLen; i++) {
    e887de1c:	bf71                	j	e887ddb8 <WebRtcNs_ComputeSpectralFlatness+0x28>
      inst->featureData[0] -= SPECT_FL_TAVG * inst->featureData[0];
    e887de1e:	650d                	lui	a0,0x3
    e887de20:	942a                	add	s0,s0,a0
    e887de22:	a2842787          	flw	fa5,-1496(s0)
    e887de26:	0004f797          	auipc	a5,0x4f
    e887de2a:	4567a707          	flw	fa4,1110(a5) # e88cd27c <kGenFuncTable+0x10c>
    e887de2e:	78e7f7cb          	fnmsub.s	fa5,fa5,fa4,fa5
    e887de32:	a2f42427          	fsw	fa5,-1496(s0)
  // done with flatness feature
}
    e887de36:	60a6                	ld	ra,72(sp)
    e887de38:	6406                	ld	s0,64(sp)
    e887de3a:	74e2                	ld	s1,56(sp)
    e887de3c:	3422                	fld	fs0,40(sp)
    e887de3e:	3482                	fld	fs1,32(sp)
    e887de40:	2962                	fld	fs2,24(sp)
    e887de42:	29c2                	fld	fs3,16(sp)
    e887de44:	6161                	addi	sp,sp,80
    e887de46:	8082                	ret

00000000e887de48 <WebRtcNs_ComputeSpectralDifference>:
  // avgDiffNormMagn = var(magnIn) - cov(magnIn, magnAvgPause)^2 / var(magnAvgPause)
  int i;
  float avgPause, avgMagn, covMagnPause, varPause, varMagn, avgDiffNormMagn;

  avgPause = 0.0;
  avgMagn = inst->sumMagn;
    e887de48:	678d                	lui	a5,0x3
    e887de4a:	00f50733          	add	a4,a0,a5
  // compute average quantities
  for (i = 0; i < inst->magnLen; i++) {
    e887de4e:	4d14                	lw	a3,24(a0)
  avgPause = 0.0;
    e887de50:	f00005d3          	fmv.w.x	fa1,zero
    //conservative smooth noise spectrum from pause frames
    avgPause += inst->magnAvgPause[i];
    e887de54:	a4478793          	addi	a5,a5,-1468 # 2a44 <memcmp-0xe87fd5bc>
  avgMagn = inst->sumMagn;
    e887de58:	c4c72087          	flw	ft1,-948(a4)
    avgPause += inst->magnAvgPause[i];
    e887de5c:	97aa                	add	a5,a5,a0
  for (i = 0; i < inst->magnLen; i++) {
    e887de5e:	4701                	li	a4,0
    e887de60:	0007061b          	sext.w	a2,a4
    e887de64:	08d64663          	blt	a2,a3,e887def0 <WebRtcNs_ComputeSpectralDifference+0xa8>
  }
  avgPause = avgPause / ((float)inst->magnLen);
    e887de68:	d006f653          	fcvt.s.w	fa2,a3
  avgMagn = avgMagn / ((float)inst->magnLen);

  covMagnPause = 0.0;
  varPause = 0.0;
  varMagn = 0.0;
    e887de6c:	f00007d3          	fmv.w.x	fa5,zero
  // compute variance and covariance quantities
  for (i = 0; i < inst->magnLen; i++) {
    covMagnPause += (magnIn[i] - avgMagn) * (inst->magnAvgPause[i] - avgPause);
    e887de70:	670d                	lui	a4,0x3
  avgPause = avgPause / ((float)inst->magnLen);
    e887de72:	18c5f5d3          	fdiv.s	fa1,fa1,fa2
  varPause = 0.0;
    e887de76:	20f786d3          	fmv.s	fa3,fa5
  covMagnPause = 0.0;
    e887de7a:	20f78753          	fmv.s	fa4,fa5
    covMagnPause += (magnIn[i] - avgMagn) * (inst->magnAvgPause[i] - avgPause);
    e887de7e:	a4470713          	addi	a4,a4,-1468 # 2a44 <memcmp-0xe87fd5bc>
  for (i = 0; i < inst->magnLen; i++) {
    e887de82:	4781                	li	a5,0
    covMagnPause += (magnIn[i] - avgMagn) * (inst->magnAvgPause[i] - avgPause);
    e887de84:	972a                	add	a4,a4,a0
  avgMagn = avgMagn / ((float)inst->magnLen);
    e887de86:	18c0f0d3          	fdiv.s	ft1,ft1,fa2
  for (i = 0; i < inst->magnLen; i++) {
    e887de8a:	0007861b          	sext.w	a2,a5
    e887de8e:	06d64763          	blt	a2,a3,e887defc <WebRtcNs_ComputeSpectralDifference+0xb4>
  }
  covMagnPause = covMagnPause / ((float)inst->magnLen);
  varPause = varPause / ((float)inst->magnLen);
  varMagn = varMagn / ((float)inst->magnLen);
  // update of average magnitude spectrum
  inst->featureData[6] += inst->signalEnergy;
    e887de92:	678d                	lui	a5,0x3
    e887de94:	953e                	add	a0,a0,a5
    e887de96:	a4052587          	flw	fa1,-1472(a0) # 2a40 <memcmp-0xe87fd5c0>
    e887de9a:	c4852507          	flw	fa0,-952(a0)
    e887de9e:	00a5f5d3          	fadd.s	fa1,fa1,fa0
    e887dea2:	a4b52027          	fsw	fa1,-1472(a0)
  covMagnPause = covMagnPause / ((float)inst->magnLen);
    e887dea6:	18c77753          	fdiv.s	fa4,fa4,fa2
  varPause = varPause / ((float)inst->magnLen);
    e887deaa:	18c6f6d3          	fdiv.s	fa3,fa3,fa2

  avgDiffNormMagn = varMagn - (covMagnPause * covMagnPause) / (varPause + (float)0.0001);
    e887deae:	10e77753          	fmul.s	fa4,fa4,fa4
  varMagn = varMagn / ((float)inst->magnLen);
    e887deb2:	18c7f7d3          	fdiv.s	fa5,fa5,fa2
  avgDiffNormMagn = varMagn - (covMagnPause * covMagnPause) / (varPause + (float)0.0001);
    e887deb6:	0004f797          	auipc	a5,0x4f
    e887deba:	3ba7a607          	flw	fa2,954(a5) # e88cd270 <kGenFuncTable+0x100>
    e887debe:	00c6f6d3          	fadd.s	fa3,fa3,fa2
    e887dec2:	18d77753          	fdiv.s	fa4,fa4,fa3
  // normalize and compute time-avg update of difference feature
  avgDiffNormMagn = (float)(avgDiffNormMagn / (inst->featureData[5] + (float)0.0001));
  inst->featureData[4] += SPECT_DIFF_TAVG * (avgDiffNormMagn - inst->featureData[4]);
    e887dec6:	a3852687          	flw	fa3,-1480(a0)
  avgDiffNormMagn = varMagn - (covMagnPause * covMagnPause) / (varPause + (float)0.0001);
    e887deca:	08e7f7d3          	fsub.s	fa5,fa5,fa4
  avgDiffNormMagn = (float)(avgDiffNormMagn / (inst->featureData[5] + (float)0.0001));
    e887dece:	a3c52707          	flw	fa4,-1476(a0)
    e887ded2:	00c77753          	fadd.s	fa4,fa4,fa2
    e887ded6:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
  inst->featureData[4] += SPECT_DIFF_TAVG * (avgDiffNormMagn - inst->featureData[4]);
    e887deda:	0004f797          	auipc	a5,0x4f
    e887dede:	3a27a707          	flw	fa4,930(a5) # e88cd27c <kGenFuncTable+0x10c>
    e887dee2:	08d7f7d3          	fsub.s	fa5,fa5,fa3
    e887dee6:	68e7f7c3          	fmadd.s	fa5,fa5,fa4,fa3
    e887deea:	a2f52c27          	fsw	fa5,-1480(a0)
}
    e887deee:	8082                	ret
    avgPause += inst->magnAvgPause[i];
    e887def0:	44e7e70b          	flrw	fa4,a5,a4,2
    e887def4:	0705                	addi	a4,a4,1
    e887def6:	00e5f5d3          	fadd.s	fa1,fa1,fa4
  for (i = 0; i < inst->magnLen; i++) {
    e887defa:	b79d                	j	e887de60 <WebRtcNs_ComputeSpectralDifference+0x18>
    covMagnPause += (magnIn[i] - avgMagn) * (inst->magnAvgPause[i] - avgPause);
    e887defc:	44f5e50b          	flrw	fa0,a1,a5,2
    e887df00:	44f7600b          	flrw	ft0,a4,a5,2
    e887df04:	0785                	addi	a5,a5,1
    e887df06:	08157553          	fsub.s	fa0,fa0,ft1
    e887df0a:	08b07053          	fsub.s	ft0,ft0,fa1
    varMagn += (magnIn[i] - avgMagn) * (magnIn[i] - avgMagn);
    e887df0e:	78a577c3          	fmadd.s	fa5,fa0,fa0,fa5
    covMagnPause += (magnIn[i] - avgMagn) * (inst->magnAvgPause[i] - avgPause);
    e887df12:	70057743          	fmadd.s	fa4,fa0,ft0,fa4
    varPause += (inst->magnAvgPause[i] - avgPause) * (inst->magnAvgPause[i] - avgPause);
    e887df16:	680076c3          	fmadd.s	fa3,ft0,ft0,fa3
  for (i = 0; i < inst->magnLen; i++) {
    e887df1a:	bf85                	j	e887de8a <WebRtcNs_ComputeSpectralDifference+0x42>

00000000e887df1c <WebRtcNs_SpeechNoiseProb>:
//magn is the input magnitude spectrum
//noise is the noise spectrum
//snrLocPrior is the prior snr for each freq.
//snr loc_post is the post snr for each freq.
void WebRtcNs_SpeechNoiseProb(NSinst_t* inst, float* probSpeechFinal, float* snrLocPrior,
                              float* snrLocPost) {
    e887df1c:	7131                	addi	sp,sp,-192
  widthPrior1 = (float)2.0 * WIDTH_PR_MAP; //width for pause region:
  // lower range, so increase width in tanh map
  widthPrior2 = (float)2.0 * WIDTH_PR_MAP; //for spectral-difference measure

  //threshold parameters for features
  threshPrior0 = inst->priorModelPars[0];
    e887df1e:	6789                	lui	a5,0x2
    e887df20:	97aa                	add	a5,a5,a0
                              float* snrLocPost) {
    e887df22:	f922                	sd	s0,176(sp)
    e887df24:	f526                	sd	s1,168(sp)
    e887df26:	f14a                	sd	s2,160(sp)
    e887df28:	ed4e                	sd	s3,152(sp)
    e887df2a:	e952                	sd	s4,144(sp)
    e887df2c:	e556                	sd	s5,136(sp)
    e887df2e:	fd06                	sd	ra,184(sp)
    e887df30:	bca2                	fsd	fs0,120(sp)
    e887df32:	b8a6                	fsd	fs1,112(sp)
    e887df34:	a8d6                	fsd	fs5,80(sp)
    e887df36:	bc62                	fsd	fs8,56(sp)
    e887df38:	b4ca                	fsd	fs2,104(sp)
    e887df3a:	b0ce                	fsd	fs3,96(sp)
    e887df3c:	acd2                	fsd	fs4,88(sp)
    e887df3e:	a4da                	fsd	fs6,72(sp)
    e887df40:	a0de                	fsd	fs7,64(sp)
    e887df42:	b866                	fsd	fs9,48(sp)
    e887df44:	b46a                	fsd	fs10,40(sp)
    e887df46:	b06e                	fsd	fs11,32(sp)
  threshPrior1 = inst->priorModelPars[1];
  threshPrior2 = inst->priorModelPars[3];

  //sign for flatness feature
  sgnMap = (int)(inst->priorModelPars[2]);
    e887df48:	4047a707          	flw	fa4,1028(a5) # 2404 <memcmp-0xe87fdbfc>
    e887df4c:	6a8d                	lui	s5,0x3
  weightIndPrior1 = inst->priorModelPars[5];
  weightIndPrior2 = inst->priorModelPars[6];

  // compute feature based on average LR factor
  // this is the average over all frequencies of the smooth log lrt
  logLrtTimeAvgKsum = 0.0;
    e887df4e:	f0000453          	fmv.w.x	fs0,zero
  sgnMap = (int)(inst->priorModelPars[2]);
    e887df52:	c00714d3          	fcvt.w.s	s1,fa4,rtz
    e887df56:	820a8a93          	addi	s5,s5,-2016 # 2820 <memcmp-0xe87fd7e0>
  threshPrior0 = inst->priorModelPars[0];
    e887df5a:	3fc7a787          	flw	fa5,1020(a5)
  threshPrior1 = inst->priorModelPars[1];
    e887df5e:	4007ad87          	flw	fs11,1024(a5)
  threshPrior2 = inst->priorModelPars[3];
    e887df62:	4087ab87          	flw	fs7,1032(a5)
  weightIndPrior0 = inst->priorModelPars[4];
    e887df66:	40c7aa07          	flw	fs4,1036(a5)
  weightIndPrior1 = inst->priorModelPars[5];
    e887df6a:	4107ab07          	flw	fs6,1040(a5)
  weightIndPrior2 = inst->priorModelPars[6];
    e887df6e:	4147a987          	flw	fs3,1044(a5)
                              float* snrLocPost) {
    e887df72:	842a                	mv	s0,a0
    e887df74:	89ae                	mv	s3,a1
  sgnMap = (int)(inst->priorModelPars[2]);
    e887df76:	0004891b          	sext.w	s2,s1
  for (i = 0; i < inst->magnLen; i++) {
    e887df7a:	4a01                	li	s4,0
    e887df7c:	0004f797          	auipc	a5,0x4f
    e887df80:	3047a487          	flw	fs1,772(a5) # e88cd280 <kGenFuncTable+0x110>
    e887df84:	0004f797          	auipc	a5,0x4f
    e887df88:	2ec7aa87          	flw	fs5,748(a5) # e88cd270 <kGenFuncTable+0x100>
    e887df8c:	0004f797          	auipc	a5,0x4f
    e887df90:	2f87ac07          	flw	fs8,760(a5) # e88cd284 <kGenFuncTable+0x114>
    e887df94:	9aaa                	add	s5,s5,a0
    e887df96:	4c1c                	lw	a5,24(s0)
    e887df98:	000a071b          	sext.w	a4,s4
    e887df9c:	12f74c63          	blt	a4,a5,e887e0d4 <WebRtcNs_SpeechNoiseProb+0x1b8>
    besselTmp = (snrLocPost[i] + (float)1.0) * tmpFloat2;
    inst->logLrtTimeAvg[i] += LRT_TAVG * (besselTmp - (float)log(tmpFloat1)
                                          - inst->logLrtTimeAvg[i]);
    logLrtTimeAvgKsum += inst->logLrtTimeAvg[i];
  }
  logLrtTimeAvgKsum = (float)logLrtTimeAvgKsum / (inst->magnLen);
    e887dfa0:	d007f553          	fcvt.s.w	fa0,a5
  inst->featureData[3] = logLrtTimeAvgKsum;
    e887dfa4:	678d                	lui	a5,0x3
    e887dfa6:	97a2                	add	a5,a5,s0
  logLrtTimeAvgKsum = (float)logLrtTimeAvgKsum / (inst->magnLen);
    e887dfa8:	18a47453          	fdiv.s	fs0,fs0,fa0
  inst->featureData[3] = logLrtTimeAvgKsum;
    e887dfac:	a287aa27          	fsw	fs0,-1484(a5) # 2a34 <memcmp-0xe87fd5cc>
  //

  // average lrt feature
  widthPrior = widthPrior0;
  //use larger width in tanh map for pause regions
  if (logLrtTimeAvgKsum < threshPrior0) {
    e887dfb0:	a0f417d3          	flt.s	a5,fs0,fa5
    e887dfb4:	16078863          	beqz	a5,e887e124 <WebRtcNs_SpeechNoiseProb+0x208>
    widthPrior = widthPrior1;
    e887dfb8:	0004f797          	auipc	a5,0x4f
    e887dfbc:	2c07a507          	flw	fa0,704(a5) # e88cd278 <kGenFuncTable+0x108>
  }
  // compute indicator function: sigmoid map
  indicator0 = (float)0.5 * ((float)tanh(widthPrior *
      (logLrtTimeAvgKsum - threshPrior0)) + (float)1.0);
    e887dfc0:	08f47453          	fsub.s	fs0,fs0,fa5
  indicator0 = (float)0.5 * ((float)tanh(widthPrior *
    e887dfc4:	10a47553          	fmul.s	fa0,fs0,fa0
    e887dfc8:	42050553          	fcvt.d.s	fa0,fa0
    e887dfcc:	f858c0ef          	jal	ra,e880af50 <tanh>
    e887dfd0:	40157453          	fcvt.s.d	fs0,fa0

  //spectral flatness feature
  tmpFloat1 = inst->featureData[0];
    e887dfd4:	678d                	lui	a5,0x3
    e887dfd6:	97a2                	add	a5,a5,s0
      (logLrtTimeAvgKsum - threshPrior0)) + (float)1.0);
    e887dfd8:	00947453          	fadd.s	fs0,fs0,fs1
  tmpFloat1 = inst->featureData[0];
    e887dfdc:	a287a787          	flw	fa5,-1496(a5) # 2a28 <memcmp-0xe87fd5d8>
  widthPrior = widthPrior0;
  //use larger width in tanh map for pause regions
  if (sgnMap == 1 && (tmpFloat1 > threshPrior1)) {
    e887dfe0:	4785                	li	a5,1
  indicator0 = (float)0.5 * ((float)tanh(widthPrior *
    e887dfe2:	11847453          	fmul.s	fs0,fs0,fs8
  if (sgnMap == 1 && (tmpFloat1 > threshPrior1)) {
    e887dfe6:	14f91463          	bne	s2,a5,e887e12e <WebRtcNs_SpeechNoiseProb+0x212>
    e887dfea:	a0fd97d3          	flt.s	a5,fs11,fa5
    widthPrior = widthPrior1;
  }
  if (sgnMap == -1 && (tmpFloat1 < threshPrior1)) {
    e887dfee:	14078663          	beqz	a5,e887e13a <WebRtcNs_SpeechNoiseProb+0x21e>
    widthPrior = widthPrior1;
    e887dff2:	0004f797          	auipc	a5,0x4f
    e887dff6:	2867a707          	flw	fa4,646(a5) # e88cd278 <kGenFuncTable+0x108>
    widthPrior = widthPrior1;
  }
  // compute indicator function: sigmoid map
  indicator1 = (float)0.5 * ((float)tanh((float)sgnMap * 
    e887dffa:	d004f553          	fcvt.s.w	fa0,s1
      widthPrior * (threshPrior1 - tmpFloat1)) + (float)1.0);
    e887dffe:	08fdf7d3          	fsub.s	fa5,fs11,fa5
  indicator1 = (float)0.5 * ((float)tanh((float)sgnMap * 
    e887e002:	10e57553          	fmul.s	fa0,fa0,fa4
      widthPrior * (threshPrior1 - tmpFloat1)) + (float)1.0);
    e887e006:	10f57553          	fmul.s	fa0,fa0,fa5
  indicator1 = (float)0.5 * ((float)tanh((float)sgnMap * 
    e887e00a:	42050553          	fcvt.d.s	fa0,fa0
    e887e00e:	f438c0ef          	jal	ra,e880af50 <tanh>
    e887e012:	40157953          	fcvt.s.d	fs2,fa0

  //for template spectrum-difference
  tmpFloat1 = inst->featureData[4];
    e887e016:	678d                	lui	a5,0x3
    e887e018:	97a2                	add	a5,a5,s0
    e887e01a:	a387a707          	flw	fa4,-1480(a5) # 2a38 <memcmp-0xe87fd5c8>
      widthPrior * (threshPrior1 - tmpFloat1)) + (float)1.0);
    e887e01e:	00997953          	fadd.s	fs2,fs2,fs1
  widthPrior = widthPrior0;
  //use larger width in tanh map for pause regions
  if (tmpFloat1 < threshPrior2) {
    e887e022:	a17717d3          	flt.s	a5,fa4,fs7
  indicator1 = (float)0.5 * ((float)tanh((float)sgnMap * 
    e887e026:	11897953          	fmul.s	fs2,fs2,fs8
  if (tmpFloat1 < threshPrior2) {
    e887e02a:	10078d63          	beqz	a5,e887e144 <WebRtcNs_SpeechNoiseProb+0x228>
    widthPrior = widthPrior2;
    e887e02e:	0004f797          	auipc	a5,0x4f
    e887e032:	24a7a507          	flw	fa0,586(a5) # e88cd278 <kGenFuncTable+0x108>
  }
  // compute indicator function: sigmoid map
  indicator2 = (float)0.5 * ((float)tanh(widthPrior * (tmpFloat1 - threshPrior2))
    e887e036:	09777bd3          	fsub.s	fs7,fa4,fs7
                             + (float)1.0);

  //combine the indicator function with the feature weights
  indPrior = weightIndPrior0 * indicator0 + weightIndPrior1 * indicator1 + weightIndPrior2
    e887e03a:	112b7953          	fmul.s	fs2,fs6,fs2
  indicator2 = (float)0.5 * ((float)tanh(widthPrior * (tmpFloat1 - threshPrior2))
    e887e03e:	10abf553          	fmul.s	fa0,fs7,fa0
  indPrior = weightIndPrior0 * indicator0 + weightIndPrior1 * indicator1 + weightIndPrior2
    e887e042:	908a7a43          	fmadd.s	fs4,fs4,fs0,fs2
  indicator2 = (float)0.5 * ((float)tanh(widthPrior * (tmpFloat1 - threshPrior2))
    e887e046:	42050553          	fcvt.d.s	fa0,fa0
    e887e04a:	f078c0ef          	jal	ra,e880af50 <tanh>
    e887e04e:	401577d3          	fcvt.s.d	fa5,fa0
             * indicator2;
  // done with computing indicator function

  //compute the prior probability
  inst->priorSpeechProb += PRIOR_UPDATE * (indPrior - inst->priorSpeechProb);
    e887e052:	678d                	lui	a5,0x3
    e887e054:	97a2                	add	a5,a5,s0
                             + (float)1.0);
    e887e056:	0097f7d3          	fadd.s	fa5,fa5,fs1
  inst->priorSpeechProb += PRIOR_UPDATE * (indPrior - inst->priorSpeechProb);
    e887e05a:	a247a707          	flw	fa4,-1500(a5) # 2a24 <memcmp-0xe87fd5dc>
    e887e05e:	0004f717          	auipc	a4,0x4f
    e887e062:	27e72687          	flw	fa3,638(a4) # e88cd2dc <kGenFuncTable+0x16c>
  indicator2 = (float)0.5 * ((float)tanh(widthPrior * (tmpFloat1 - threshPrior2))
    e887e066:	1187f7d3          	fmul.s	fa5,fa5,fs8
  indPrior = weightIndPrior0 * indicator0 + weightIndPrior1 * indicator1 + weightIndPrior2
    e887e06a:	a0f9f7c3          	fmadd.s	fa5,fs3,fa5,fs4
  inst->priorSpeechProb += PRIOR_UPDATE * (indPrior - inst->priorSpeechProb);
    e887e06e:	08e7f7d3          	fsub.s	fa5,fa5,fa4
    e887e072:	70d7f7c3          	fmadd.s	fa5,fa5,fa3,fa4
  // make sure probabilities are within range: keep floor to 0.01
  if (inst->priorSpeechProb > 1.0) {
    e887e076:	a0f49753          	flt.s	a4,fs1,fa5
    e887e07a:	cb71                	beqz	a4,e887e14e <WebRtcNs_SpeechNoiseProb+0x232>
    inst->priorSpeechProb = (float)1.0;
    e887e07c:	a297a227          	fsw	fs1,-1500(a5)
  if (inst->priorSpeechProb < 0.01) {
    inst->priorSpeechProb = (float)0.01;
  }

  //final speech probability: combine prior model with LR factor:
  gainPrior = ((float)1.0 - inst->priorSpeechProb) / (inst->priorSpeechProb + (float)0.0001);
    e887e080:	678d                	lui	a5,0x3
    e887e082:	00f40733          	add	a4,s0,a5
    e887e086:	a2472787          	flw	fa5,-1500(a4)
  for (i = 0; i < inst->magnLen; i++) {
    invLrt = (float)exp(-inst->logLrtTimeAvg[i]);
    e887e08a:	82078793          	addi	a5,a5,-2016 # 2820 <memcmp-0xe87fd7e0>
  for (i = 0; i < inst->magnLen; i++) {
    e887e08e:	4901                	li	s2,0
  gainPrior = ((float)1.0 - inst->priorSpeechProb) / (inst->priorSpeechProb + (float)0.0001);
    e887e090:	08f4f753          	fsub.s	fa4,fs1,fa5
    e887e094:	0157fad3          	fadd.s	fs5,fa5,fs5
    invLrt = (float)exp(-inst->logLrtTimeAvg[i]);
    e887e098:	00f404b3          	add	s1,s0,a5
  gainPrior = ((float)1.0 - inst->priorSpeechProb) / (inst->priorSpeechProb + (float)0.0001);
    e887e09c:	19577ad3          	fdiv.s	fs5,fa4,fs5
  for (i = 0; i < inst->magnLen; i++) {
    e887e0a0:	4c18                	lw	a4,24(s0)
    e887e0a2:	0009079b          	sext.w	a5,s2
    e887e0a6:	0ce7c563          	blt	a5,a4,e887e170 <WebRtcNs_SpeechNoiseProb+0x254>
    invLrt = (float)gainPrior * invLrt;
    probSpeechFinal[i] = (float)1.0 / ((float)1.0 + invLrt);
  }
}
    e887e0aa:	70ea                	ld	ra,184(sp)
    e887e0ac:	744a                	ld	s0,176(sp)
    e887e0ae:	74aa                	ld	s1,168(sp)
    e887e0b0:	790a                	ld	s2,160(sp)
    e887e0b2:	69ea                	ld	s3,152(sp)
    e887e0b4:	6a4a                	ld	s4,144(sp)
    e887e0b6:	6aaa                	ld	s5,136(sp)
    e887e0b8:	3466                	fld	fs0,120(sp)
    e887e0ba:	34c6                	fld	fs1,112(sp)
    e887e0bc:	3926                	fld	fs2,104(sp)
    e887e0be:	3986                	fld	fs3,96(sp)
    e887e0c0:	2a66                	fld	fs4,88(sp)
    e887e0c2:	2ac6                	fld	fs5,80(sp)
    e887e0c4:	2b26                	fld	fs6,72(sp)
    e887e0c6:	2b86                	fld	fs7,64(sp)
    e887e0c8:	3c62                	fld	fs8,56(sp)
    e887e0ca:	3cc2                	fld	fs9,48(sp)
    e887e0cc:	3d22                	fld	fs10,40(sp)
    e887e0ce:	3d82                	fld	fs11,32(sp)
    e887e0d0:	6129                	addi	sp,sp,192
    e887e0d2:	8082                	ret
    tmpFloat1 = (float)1.0 + (float)2.0 * snrLocPrior[i];
    e887e0d4:	4546650b          	flrw	fa0,a2,s4,2
    e887e0d8:	ac3e                	fsd	fa5,24(sp)
    e887e0da:	e832                	sd	a2,16(sp)
    e887e0dc:	00a57cd3          	fadd.s	fs9,fa0,fa0
    besselTmp = (snrLocPost[i] + (float)1.0) * tmpFloat2;
    e887e0e0:	4546e50b          	flrw	fa0,a3,s4,2
    e887e0e4:	e436                	sd	a3,8(sp)
    e887e0e6:	00957953          	fadd.s	fs2,fa0,fs1
    tmpFloat1 = (float)1.0 + (float)2.0 * snrLocPrior[i];
    e887e0ea:	009cfd53          	fadd.s	fs10,fs9,fs1
    inst->logLrtTimeAvg[i] += LRT_TAVG * (besselTmp - (float)log(tmpFloat1)
    e887e0ee:	420d0553          	fcvt.d.s	fa0,fs10
    e887e0f2:	83e8d0ef          	jal	ra,e880b130 <log>
    e887e0f6:	401576d3          	fcvt.s.d	fa3,fa0
    tmpFloat2 = (float)2.0 * snrLocPrior[i] / (tmpFloat1 + (float)0.0001);
    e887e0fa:	015d7553          	fadd.s	fa0,fs10,fs5
                                          - inst->logLrtTimeAvg[i]);
    e887e0fe:	454ae70b          	flrw	fa4,s5,s4,2
    e887e102:	27e2                	fld	fa5,24(sp)
    e887e104:	6642                	ld	a2,16(sp)
    e887e106:	66a2                	ld	a3,8(sp)
    tmpFloat2 = (float)2.0 * snrLocPrior[i] / (tmpFloat1 + (float)0.0001);
    e887e108:	18acf553          	fdiv.s	fa0,fs9,fa0
    inst->logLrtTimeAvg[i] += LRT_TAVG * (besselTmp - (float)log(tmpFloat1)
    e887e10c:	68a97547          	fmsub.s	fa0,fs2,fa0,fa3
                                          - inst->logLrtTimeAvg[i]);
    e887e110:	08e57553          	fsub.s	fa0,fa0,fa4
    inst->logLrtTimeAvg[i] += LRT_TAVG * (besselTmp - (float)log(tmpFloat1)
    e887e114:	71857543          	fmadd.s	fa0,fa0,fs8,fa4
    e887e118:	454af50b          	fsrw	fa0,s5,s4,2
    logLrtTimeAvgKsum += inst->logLrtTimeAvg[i];
    e887e11c:	00a47453          	fadd.s	fs0,fs0,fa0
  for (i = 0; i < inst->magnLen; i++) {
    e887e120:	0a05                	addi	s4,s4,1
    e887e122:	bd95                	j	e887df96 <WebRtcNs_SpeechNoiseProb+0x7a>
  widthPrior = widthPrior0;
    e887e124:	0004f797          	auipc	a5,0x4f
    e887e128:	1b47a507          	flw	fa0,436(a5) # e88cd2d8 <kGenFuncTable+0x168>
    e887e12c:	bd51                	j	e887dfc0 <WebRtcNs_SpeechNoiseProb+0xa4>
  if (sgnMap == -1 && (tmpFloat1 < threshPrior1)) {
    e887e12e:	57fd                	li	a5,-1
    e887e130:	00f91563          	bne	s2,a5,e887e13a <WebRtcNs_SpeechNoiseProb+0x21e>
    e887e134:	a1b797d3          	flt.s	a5,fa5,fs11
    e887e138:	bd5d                	j	e887dfee <WebRtcNs_SpeechNoiseProb+0xd2>
  widthPrior = widthPrior0;
    e887e13a:	0004f797          	auipc	a5,0x4f
    e887e13e:	19e7a707          	flw	fa4,414(a5) # e88cd2d8 <kGenFuncTable+0x168>
    e887e142:	bd65                	j	e887dffa <WebRtcNs_SpeechNoiseProb+0xde>
  widthPrior = widthPrior0;
    e887e144:	0004f797          	auipc	a5,0x4f
    e887e148:	1947a507          	flw	fa0,404(a5) # e88cd2d8 <kGenFuncTable+0x168>
    e887e14c:	b5ed                	j	e887e036 <WebRtcNs_SpeechNoiseProb+0x11a>
  if (inst->priorSpeechProb < 0.01) {
    e887e14e:	42078753          	fcvt.d.s	fa4,fa5
    e887e152:	0004f717          	auipc	a4,0x4f
    e887e156:	18e73687          	fld	fa3,398(a4) # e88cd2e0 <kGenFuncTable+0x170>
    e887e15a:	a2d71753          	flt.d	a4,fa4,fa3
    e887e15e:	e701                	bnez	a4,e887e166 <WebRtcNs_SpeechNoiseProb+0x24a>
    inst->priorSpeechProb = (float)0.01;
    e887e160:	a2f7a227          	fsw	fa5,-1500(a5)
    e887e164:	bf31                	j	e887e080 <WebRtcNs_SpeechNoiseProb+0x164>
    e887e166:	0004f717          	auipc	a4,0x4f
    e887e16a:	13672787          	flw	fa5,310(a4) # e88cd29c <kGenFuncTable+0x12c>
    e887e16e:	bfcd                	j	e887e160 <WebRtcNs_SpeechNoiseProb+0x244>
    invLrt = (float)exp(-inst->logLrtTimeAvg[i]);
    e887e170:	4524e50b          	flrw	fa0,s1,s2,2
    e887e174:	20a51553          	fneg.s	fa0,fa0
    e887e178:	42050553          	fcvt.d.s	fa0,fa0
    e887e17c:	ec58c0ef          	jal	ra,e880b040 <exp>
    e887e180:	40157553          	fcvt.s.d	fa0,fa0
    probSpeechFinal[i] = (float)1.0 / ((float)1.0 + invLrt);
    e887e184:	48aaf543          	fmadd.s	fa0,fs5,fa0,fs1
    e887e188:	18a4f553          	fdiv.s	fa0,fs1,fa0
    e887e18c:	4529f50b          	fsrw	fa0,s3,s2,2
  for (i = 0; i < inst->magnLen; i++) {
    e887e190:	0905                	addi	s2,s2,1
    e887e192:	b739                	j	e887e0a0 <WebRtcNs_SpeechNoiseProb+0x184>

00000000e887e194 <WebRtcNs_ProcessCore>:

int WebRtcNs_ProcessCore(NSinst_t* inst,
                         short* speechFrame,
                         short* speechFrameHB,
                         short* outFrame,
                         short* outFrameHB) {
    e887e194:	7119                	addi	sp,sp,-128
    e887e196:	7379                	lui	t1,0xffffe
    e887e198:	a422                	fsd	fs0,8(sp)
    e887e19a:	05030313          	addi	t1,t1,80 # ffffffffffffe050 <__DRAM0_INF_BASE+0xffffffff0000e050>
    e887e19e:	f8a2                	sd	s0,112(sp)
    e887e1a0:	f4a6                	sd	s1,104(sp)
    e887e1a2:	f0ca                	sd	s2,96(sp)
    e887e1a4:	f862                	sd	s8,48(sp)
    e887e1a6:	a026                	fsd	fs1,0(sp)
    e887e1a8:	fc86                	sd	ra,120(sp)
    e887e1aa:	ecce                	sd	s3,88(sp)
    e887e1ac:	e8d2                	sd	s4,80(sp)
    e887e1ae:	e4d6                	sd	s5,72(sp)
    e887e1b0:	e0da                	sd	s6,64(sp)
    e887e1b2:	fc5e                	sd	s7,56(sp)
    e887e1b4:	f466                	sd	s9,40(sp)
    e887e1b6:	f06a                	sd	s10,32(sp)
    e887e1b8:	ec6e                	sd	s11,24(sp)
    e887e1ba:	ff213c27          	fsd	fs2,-8(sp)
    e887e1be:	ff313827          	fsd	fs3,-16(sp)
    e887e1c2:	ff413427          	fsd	fs4,-24(sp)
    e887e1c6:	ff513027          	fsd	fs5,-32(sp)
    e887e1ca:	fd613c27          	fsd	fs6,-40(sp)
    e887e1ce:	fd713827          	fsd	fs7,-48(sp)
    e887e1d2:	fd813427          	fsd	fs8,-56(sp)
  float   fin[BLOCKL_MAX], fout[BLOCKL_MAX];
  float   winData[ANAL_BLOCKL_MAX];
  float   magn[HALF_ANAL_BLOCKL], noise[HALF_ANAL_BLOCKL];
  float   theFilter[HALF_ANAL_BLOCKL], theFilterTmp[HALF_ANAL_BLOCKL];
  float   snrLocPost[HALF_ANAL_BLOCKL], snrLocPrior[HALF_ANAL_BLOCKL];
  float   probSpeechFinal[HALF_ANAL_BLOCKL] = { 0 };
    e887e1d6:	6789                	lui	a5,0x2
                         short* outFrameHB) {
    e887e1d8:	911a                	add	sp,sp,t1
    e887e1da:	e436                	sd	a3,8(sp)
  float   probSpeechFinal[HALF_ANAL_BLOCKL] = { 0 };
    e887e1dc:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e1e0:	1014                	addi	a3,sp,32
                         short* outFrameHB) {
    e887e1e2:	e83a                	sd	a4,16(sp)
  float   probSpeechFinal[HALF_ANAL_BLOCKL] = { 0 };
    e887e1e4:	97b6                	add	a5,a5,a3
    e887e1e6:	777d                	lui	a4,0xfffff
    e887e1e8:	97ba                	add	a5,a5,a4
                         short* outFrameHB) {
    e887e1ea:	8c2a                	mv	s8,a0
    e887e1ec:	84ae                	mv	s1,a1
    e887e1ee:	8932                	mv	s2,a2
  float   probSpeechFinal[HALF_ANAL_BLOCKL] = { 0 };
    e887e1f0:	4581                	li	a1,0
    e887e1f2:	20400613          	li	a2,516
    e887e1f6:	ce878513          	addi	a0,a5,-792
    e887e1fa:	e03e                	sd	a5,0(sp)
    e887e1fc:	f3d810ef          	jal	ra,e8800138 <memset>
  float   gainMapParHB = 1.0;
  float   gainTimeDomainHB = 1.0;
  float   avgProbSpeechHB, avgProbSpeechHBTmp, avgFilterGainHB, gainModHB;

  // Check that initiation has been done
  if (inst->initFlag != 1) {
    e887e200:	6705                	lui	a4,0x1
    e887e202:	9762                	add	a4,a4,s8
    e887e204:	fa872403          	lw	s0,-88(a4) # fa8 <memcmp-0xe87ff058>
    e887e208:	4705                	li	a4,1
    return (-1);
    e887e20a:	557d                	li	a0,-1
  if (inst->initFlag != 1) {
    e887e20c:	24e41d63          	bne	s0,a4,e887e466 <WebRtcNs_ProcessCore+0x2d2>
  }
  // Check for valid pointers based on sampling rate
  if (inst->fs == 32000) {
    e887e210:	000c2683          	lw	a3,0(s8) # fffffffffffe8000 <__DRAM0_INF_BASE+0xfffffffeffff8000>
    e887e214:	6721                	lui	a4,0x8
    e887e216:	d0070713          	addi	a4,a4,-768 # 7d00 <memcmp-0xe87f8300>
  int     flagHB = 0;
    e887e21a:	4a01                	li	s4,0
  if (inst->fs == 32000) {
    e887e21c:	00e69b63          	bne	a3,a4,e887e232 <WebRtcNs_ProcessCore+0x9e>
    return (-1);
    e887e220:	557d                	li	a0,-1
    if (speechFrameHB == NULL) {
    e887e222:	24090263          	beqz	s2,e887e466 <WebRtcNs_ProcessCore+0x2d2>
      return -1;
    }
    flagHB = 1;
    // range for averaging low band quantities for H band gain
    deltaBweHB = (int)inst->magnLen / 4;
    e887e226:	018c2403          	lw	s0,24(s8)
    e887e22a:	4711                	li	a4,4
    flagHB = 1;
    e887e22c:	4a05                	li	s4,1
    deltaBweHB = (int)inst->magnLen / 4;
    e887e22e:	02e4443b          	divw	s0,s0,a4
    deltaGainHB = deltaBweHB;
  }
  //
  updateParsFlag = inst->modelUpdatePars[0];
    e887e232:	6709                	lui	a4,0x2
  //

  //for LB do all processing
  // convert to float
  for (i = 0; i < inst->blockLen10ms; i++) {
    fin[i] = (float)speechFrame[i];
    e887e234:	6789                	lui	a5,0x2
  updateParsFlag = inst->modelUpdatePars[0];
    e887e236:	9762                	add	a4,a4,s8
    fin[i] = (float)speechFrame[i];
    e887e238:	76fd                	lui	a3,0xfffff
    e887e23a:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e23e:	1010                	addi	a2,sp,32
  for (i = 0; i < inst->blockLen10ms; i++) {
    e887e240:	008c2583          	lw	a1,8(s8)
    fin[i] = (float)speechFrame[i];
    e887e244:	30068693          	addi	a3,a3,768 # fffffffffffff300 <__DRAM0_INF_BASE+0xffffffff0000f300>
    e887e248:	97b2                	add	a5,a5,a2
  updateParsFlag = inst->modelUpdatePars[0];
    e887e24a:	3ec72d03          	lw	s10,1004(a4) # 23ec <memcmp-0xe87fdc14>
    fin[i] = (float)speechFrame[i];
    e887e24e:	96be                	add	a3,a3,a5
  for (i = 0; i < inst->blockLen10ms; i++) {
    e887e250:	4701                	li	a4,0
    e887e252:	0007061b          	sext.w	a2,a4
    e887e256:	10b64263          	blt	a2,a1,e887e35a <WebRtcNs_ProcessCore+0x1c6>
  }
  // update analysis buffer for L band
  memcpy(inst->dataBuf, inst->dataBuf + inst->blockLen10ms,
         sizeof(float) * (inst->anaLen - inst->blockLen10ms));
    e887e25a:	014c2603          	lw	a2,20(s8)
  memcpy(inst->dataBuf, inst->dataBuf + inst->blockLen10ms,
    e887e25e:	028c0993          	addi	s3,s8,40
    e887e262:	854e                	mv	a0,s3
         sizeof(float) * (inst->anaLen - inst->blockLen10ms));
    e887e264:	9e0d                	subw	a2,a2,a1
  memcpy(inst->dataBuf, inst->dataBuf + inst->blockLen10ms,
    e887e266:	060a                	slli	a2,a2,0x2
    e887e268:	04b9958b          	addsl	a1,s3,a1,2
    e887e26c:	934fe0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  memcpy(inst->dataBuf + inst->anaLen - inst->blockLen10ms, fin,
    e887e270:	74fd                	lui	s1,0xfffff
    e887e272:	008c2603          	lw	a2,8(s8)
    e887e276:	6789                	lui	a5,0x2
    e887e278:	014c2503          	lw	a0,20(s8)
    e887e27c:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e280:	1018                	addi	a4,sp,32
    e887e282:	30048493          	addi	s1,s1,768 # fffffffffffff300 <__DRAM0_INF_BASE+0xffffffff0000f300>
    e887e286:	97ba                	add	a5,a5,a4
    e887e288:	8d11                	sub	a0,a0,a2
    e887e28a:	94be                	add	s1,s1,a5
    e887e28c:	060a                	slli	a2,a2,0x2
    e887e28e:	85a6                	mv	a1,s1
    e887e290:	04a9950b          	addsl	a0,s3,a0,2
    e887e294:	90cfe0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
         sizeof(float) * inst->blockLen10ms);

  if (flagHB == 1) {
    e887e298:	040a0963          	beqz	s4,e887e2ea <WebRtcNs_ProcessCore+0x156>
    // convert to float
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887e29c:	008c2583          	lw	a1,8(s8)
    e887e2a0:	4701                	li	a4,0
    e887e2a2:	0007069b          	sext.w	a3,a4
    e887e2a6:	0cb6c263          	blt	a3,a1,e887e36a <WebRtcNs_ProcessCore+0x1d6>
      fin[i] = (float)speechFrameHB[i];
    }
    // update analysis buffer for H band
    memcpy(inst->dataBufHB, inst->dataBufHB + inst->blockLen10ms,
           sizeof(float) * (inst->anaLen - inst->blockLen10ms));
    e887e2aa:	014c2603          	lw	a2,20(s8)
    memcpy(inst->dataBufHB, inst->dataBufHB + inst->blockLen10ms,
    e887e2ae:	6499                	lui	s1,0x6
    e887e2b0:	f9448493          	addi	s1,s1,-108 # 5f94 <memcmp-0xe87fa06c>
    e887e2b4:	94e2                	add	s1,s1,s8
           sizeof(float) * (inst->anaLen - inst->blockLen10ms));
    e887e2b6:	9e0d                	subw	a2,a2,a1
    memcpy(inst->dataBufHB, inst->dataBufHB + inst->blockLen10ms,
    e887e2b8:	060a                	slli	a2,a2,0x2
    e887e2ba:	04b4958b          	addsl	a1,s1,a1,2
    e887e2be:	8526                	mv	a0,s1
    e887e2c0:	8e0fe0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    memcpy(inst->dataBufHB + inst->anaLen - inst->blockLen10ms, fin,
    e887e2c4:	008c2603          	lw	a2,8(s8)
    e887e2c8:	014c2503          	lw	a0,20(s8)
    e887e2cc:	6789                	lui	a5,0x2
    e887e2ce:	75fd                	lui	a1,0xfffff
    e887e2d0:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e2d4:	1018                	addi	a4,sp,32
    e887e2d6:	8d11                	sub	a0,a0,a2
    e887e2d8:	30058593          	addi	a1,a1,768 # fffffffffffff300 <__DRAM0_INF_BASE+0xffffffff0000f300>
    e887e2dc:	97ba                	add	a5,a5,a4
    e887e2de:	060a                	slli	a2,a2,0x2
    e887e2e0:	95be                	add	a1,a1,a5
    e887e2e2:	04a4950b          	addsl	a0,s1,a0,2
    e887e2e6:	8bafe0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
           sizeof(float) * inst->blockLen10ms);
  }

  // check if processing needed
  if (inst->outLen == 0) {
    e887e2ea:	010c2903          	lw	s2,16(s8)
    e887e2ee:	08090663          	beqz	s2,e887e37a <WebRtcNs_ProcessCore+0x1e6>
      }
    }
  }  // end of if out.len==0
  else {
    for (i = 0; i < inst->blockLen10ms; i++) {
      fout[i] = inst->outBuf[i];
    e887e2f2:	1010                	addi	a2,sp,32
    e887e2f4:	6789                	lui	a5,0x2
    e887e2f6:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e2fa:	97b2                	add	a5,a5,a2
    e887e2fc:	76fd                	lui	a3,0xfffff
    e887e2fe:	6605                	lui	a2,0x1
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887e300:	008c2583          	lw	a1,8(s8)
      fout[i] = inst->outBuf[i];
    e887e304:	58068693          	addi	a3,a3,1408 # fffffffffffff580 <__DRAM0_INF_BASE+0xffffffff0000f580>
    e887e308:	82860613          	addi	a2,a2,-2008 # 828 <memcmp-0xe87ff7d8>
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887e30c:	4701                	li	a4,0
      fout[i] = inst->outBuf[i];
    e887e30e:	96be                	add	a3,a3,a5
    e887e310:	9662                	add	a2,a2,s8
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887e312:	0007051b          	sext.w	a0,a4
    e887e316:	6ab54ae3          	blt	a0,a1,e887f1ca <WebRtcNs_ProcessCore+0x1036>
    }
    memcpy(inst->outBuf, inst->outBuf + inst->blockLen10ms,
    e887e31a:	6485                	lui	s1,0x1
    e887e31c:	82848493          	addi	s1,s1,-2008 # 828 <memcmp-0xe87ff7d8>
    e887e320:	94e2                	add	s1,s1,s8
           sizeof(float) * (inst->outLen - inst->blockLen10ms));
    e887e322:	40b9063b          	subw	a2,s2,a1
    memcpy(inst->outBuf, inst->outBuf + inst->blockLen10ms,
    e887e326:	060a                	slli	a2,a2,0x2
    e887e328:	04b4958b          	addsl	a1,s1,a1,2
    e887e32c:	8526                	mv	a0,s1
    e887e32e:	872fe0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    memset(inst->outBuf + inst->outLen - inst->blockLen10ms, 0,
    e887e332:	008c2603          	lw	a2,8(s8)
    e887e336:	010c2503          	lw	a0,16(s8)
    e887e33a:	4581                	li	a1,0
    e887e33c:	8d11                	sub	a0,a0,a2
    e887e33e:	04a4950b          	addsl	a0,s1,a0,2
    e887e342:	060a                	slli	a2,a2,0x2
    e887e344:	850fe0ef          	jal	ra,e887c394 <eLIBs_memset>
           sizeof(float) * inst->blockLen10ms);
    inst->outLen -= inst->blockLen10ms;
    e887e348:	010c2703          	lw	a4,16(s8)
    e887e34c:	008c2683          	lw	a3,8(s8)
    e887e350:	9f15                	subw	a4,a4,a3
    e887e352:	00ec2823          	sw	a4,16(s8)
    e887e356:	4bb0006f          	j	e887f010 <WebRtcNs_ProcessCore+0xe7c>
    fin[i] = (float)speechFrame[i];
    e887e35a:	22e4c60b          	lrh	a2,s1,a4,1
    e887e35e:	d00677d3          	fcvt.s.w	fa5,a2
    e887e362:	44e6f78b          	fsrw	fa5,a3,a4,2
  for (i = 0; i < inst->blockLen10ms; i++) {
    e887e366:	0705                	addi	a4,a4,1
    e887e368:	b5ed                	j	e887e252 <WebRtcNs_ProcessCore+0xbe>
      fin[i] = (float)speechFrameHB[i];
    e887e36a:	22e9468b          	lrh	a3,s2,a4,1
    e887e36e:	d006f7d3          	fcvt.s.w	fa5,a3
    e887e372:	44e4f78b          	fsrw	fa5,s1,a4,2
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887e376:	0705                	addi	a4,a4,1
    e887e378:	b72d                	j	e887e2a2 <WebRtcNs_ProcessCore+0x10e>
      winData[i] = inst->window[i] * inst->dataBuf[i];
    e887e37a:	6785                	lui	a5,0x1
    for (i = 0; i < inst->anaLen; i++) {
    e887e37c:	014c2503          	lw	a0,20(s8)
    energy1 = 0.0;
    e887e380:	f0000953          	fmv.w.x	fs2,zero
      winData[i] = inst->window[i] * inst->dataBuf[i];
    e887e384:	75078793          	addi	a5,a5,1872 # 1750 <memcmp-0xe87fe8b0>
    e887e388:	1014                	addi	a3,sp,32
    for (i = 0; i < inst->anaLen; i++) {
    e887e38a:	4701                	li	a4,0
      winData[i] = inst->window[i] * inst->dataBuf[i];
    e887e38c:	00f68633          	add	a2,a3,a5
    for (i = 0; i < inst->anaLen; i++) {
    e887e390:	0007069b          	sext.w	a3,a4
    e887e394:	10a6cc63          	blt	a3,a0,e887e4ac <WebRtcNs_ProcessCore+0x318>
    if (energy1 == 0.0) {
    e887e398:	f00007d3          	fmv.w.x	fa5,zero
    e887e39c:	a0f92753          	feq.s	a4,fs2,fa5
    e887e3a0:	1c070163          	beqz	a4,e887e562 <WebRtcNs_ProcessCore+0x3ce>
      for (i = inst->windShift; i < inst->blockLen + inst->windShift; i++) {
    e887e3a4:	00cc2603          	lw	a2,12(s8)
    e887e3a8:	004c2583          	lw	a1,4(s8)
        fout[i - inst->windShift] = inst->syntBuf[i];
    e887e3ac:	6789                	lui	a5,0x2
    e887e3ae:	76fd                	lui	a3,0xfffff
    e887e3b0:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e3b4:	1000                	addi	s0,sp,32
    e887e3b6:	04cc180b          	addsl	a6,s8,a2,2
    e887e3ba:	58068693          	addi	a3,a3,1408 # fffffffffffff580 <__DRAM0_INF_BASE+0xffffffff0000f580>
    e887e3be:	97a2                	add	a5,a5,s0
      for (i = inst->windShift; i < inst->blockLen + inst->windShift; i++) {
    e887e3c0:	00c5833b          	addw	t1,a1,a2
    e887e3c4:	42880813          	addi	a6,a6,1064
    e887e3c8:	4701                	li	a4,0
        fout[i - inst->windShift] = inst->syntBuf[i];
    e887e3ca:	96be                	add	a3,a3,a5
      for (i = inst->windShift; i < inst->blockLen + inst->windShift; i++) {
    e887e3cc:	00e608bb          	addw	a7,a2,a4
    e887e3d0:	0e68cc63          	blt	a7,t1,e887e4c8 <WebRtcNs_ProcessCore+0x334>
      memcpy(inst->syntBuf, inst->syntBuf + inst->blockLen,
    e887e3d4:	428c0413          	addi	s0,s8,1064
             sizeof(float) * (inst->anaLen - inst->blockLen));
    e887e3d8:	40b5063b          	subw	a2,a0,a1
      memcpy(inst->syntBuf, inst->syntBuf + inst->blockLen,
    e887e3dc:	060a                	slli	a2,a2,0x2
    e887e3de:	04b4158b          	addsl	a1,s0,a1,2
    e887e3e2:	8522                	mv	a0,s0
    e887e3e4:	fbdfd0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memset(inst->syntBuf + inst->anaLen - inst->blockLen, 0,
    e887e3e8:	004c2603          	lw	a2,4(s8)
    e887e3ec:	014c2503          	lw	a0,20(s8)
    e887e3f0:	4581                	li	a1,0
    e887e3f2:	8d11                	sub	a0,a0,a2
    e887e3f4:	04a4150b          	addsl	a0,s0,a0,2
    e887e3f8:	060a                	slli	a2,a2,0x2
    e887e3fa:	f9bfd0ef          	jal	ra,e887c394 <eLIBs_memset>
      inst->outLen = inst->blockLen - inst->blockLen10ms;
    e887e3fe:	004c2703          	lw	a4,4(s8)
    e887e402:	008c2603          	lw	a2,8(s8)
    e887e406:	40c7083b          	subw	a6,a4,a2
    e887e40a:	010c2823          	sw	a6,16(s8)
      if (inst->blockLen > inst->blockLen10ms) {
    e887e40e:	0ee64163          	blt	a2,a4,e887e4f0 <WebRtcNs_ProcessCore+0x35c>
        dTmp = fout[i];
    e887e412:	6789                	lui	a5,0x2
    e887e414:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e418:	1018                	addi	a4,sp,32
    e887e41a:	97ba                	add	a5,a5,a4
    e887e41c:	767d                	lui	a2,0xfffff
    e887e41e:	58060613          	addi	a2,a2,1408 # fffffffffffff580 <__DRAM0_INF_BASE+0xffffffff0000f580>
    e887e422:	963e                	add	a2,a2,a5
          dTmp = WEBRTC_SPL_WORD16_MAX;
    e887e424:	4681                	li	a3,0
        if (dTmp < WEBRTC_SPL_WORD16_MIN) {
    e887e426:	0004f797          	auipc	a5,0x4f
    e887e42a:	e7e7a707          	flw	fa4,-386(a5) # e88cd2a4 <kGenFuncTable+0x134>
        } else if (dTmp > WEBRTC_SPL_WORD16_MAX) {
    e887e42e:	0004f797          	auipc	a5,0x4f
    e887e432:	e7a7a687          	flw	fa3,-390(a5) # e88cd2a8 <kGenFuncTable+0x138>
      for (i = 0; i < inst->blockLen10ms; i++) {
    e887e436:	008c2583          	lw	a1,8(s8)
    e887e43a:	0006871b          	sext.w	a4,a3
    e887e43e:	0cb74663          	blt	a4,a1,e887e50a <WebRtcNs_ProcessCore+0x376>
      if (flagHB == 1) {
    e887e442:	020a0163          	beqz	s4,e887e464 <WebRtcNs_ProcessCore+0x2d0>
          dTmp = inst->dataBufHB[i];
    e887e446:	6685                	lui	a3,0x1
    e887e448:	7e468693          	addi	a3,a3,2020 # 17e4 <memcmp-0xe87fe81c>
          if (dTmp < WEBRTC_SPL_WORD16_MIN) {
    e887e44c:	0004f797          	auipc	a5,0x4f
    e887e450:	e587a707          	flw	fa4,-424(a5) # e88cd2a4 <kGenFuncTable+0x134>
          } else if (dTmp > WEBRTC_SPL_WORD16_MAX) {
    e887e454:	0004f797          	auipc	a5,0x4f
    e887e458:	e547a687          	flw	fa3,-428(a5) # e88cd2a8 <kGenFuncTable+0x138>
        for (i = 0; i < inst->blockLen10ms; i++) {
    e887e45c:	008c2703          	lw	a4,8(s8)
    e887e460:	0ce94963          	blt	s2,a4,e887e532 <WebRtcNs_ProcessCore+0x39e>
      return 0;
    e887e464:	4501                	li	a0,0
    }
  }  // end of H band gain computation
  //

  return 0;
}
    e887e466:	6309                	lui	t1,0x2
    e887e468:	fb030313          	addi	t1,t1,-80 # 1fb0 <memcmp-0xe87fe050>
    e887e46c:	911a                	add	sp,sp,t1
    e887e46e:	70e6                	ld	ra,120(sp)
    e887e470:	7446                	ld	s0,112(sp)
    e887e472:	74a6                	ld	s1,104(sp)
    e887e474:	7906                	ld	s2,96(sp)
    e887e476:	69e6                	ld	s3,88(sp)
    e887e478:	6a46                	ld	s4,80(sp)
    e887e47a:	6aa6                	ld	s5,72(sp)
    e887e47c:	6b06                	ld	s6,64(sp)
    e887e47e:	7be2                	ld	s7,56(sp)
    e887e480:	7c42                	ld	s8,48(sp)
    e887e482:	7ca2                	ld	s9,40(sp)
    e887e484:	7d02                	ld	s10,32(sp)
    e887e486:	6de2                	ld	s11,24(sp)
    e887e488:	2422                	fld	fs0,8(sp)
    e887e48a:	2482                	fld	fs1,0(sp)
    e887e48c:	ff813907          	fld	fs2,-8(sp)
    e887e490:	ff013987          	fld	fs3,-16(sp)
    e887e494:	fe813a07          	fld	fs4,-24(sp)
    e887e498:	fe013a87          	fld	fs5,-32(sp)
    e887e49c:	fd813b07          	fld	fs6,-40(sp)
    e887e4a0:	fd013b87          	fld	fs7,-48(sp)
    e887e4a4:	fc813c07          	fld	fs8,-56(sp)
    e887e4a8:	6109                	addi	sp,sp,128
    e887e4aa:	8082                	ret
      winData[i] = inst->window[i] * inst->dataBuf[i];
    e887e4ac:	020c3683          	ld	a3,32(s8)
    e887e4b0:	44e9e70b          	flrw	fa4,s3,a4,2
    e887e4b4:	44e6e78b          	flrw	fa5,a3,a4,2
    e887e4b8:	10e7f7d3          	fmul.s	fa5,fa5,fa4
    e887e4bc:	44e6778b          	fsrw	fa5,a2,a4,2
      energy1 += winData[i] * winData[i];
    e887e4c0:	90f7f943          	fmadd.s	fs2,fa5,fa5,fs2
    for (i = 0; i < inst->anaLen; i++) {
    e887e4c4:	0705                	addi	a4,a4,1
    e887e4c6:	b5e9                	j	e887e390 <WebRtcNs_ProcessCore+0x1fc>
        fout[i - inst->windShift] = inst->syntBuf[i];
    e887e4c8:	44e8678b          	flrw	fa5,a6,a4,2
    e887e4cc:	44e6f78b          	fsrw	fa5,a3,a4,2
      for (i = inst->windShift; i < inst->blockLen + inst->windShift; i++) {
    e887e4d0:	0705                	addi	a4,a4,1
    e887e4d2:	bded                	j	e887e3cc <WebRtcNs_ProcessCore+0x238>
          inst->outBuf[i] = fout[i + inst->blockLen10ms];
    e887e4d4:	00c7053b          	addw	a0,a4,a2
    e887e4d8:	04a6950b          	addsl	a0,a3,a0,2
    e887e4dc:	58052787          	flw	fa5,1408(a0)
    e887e4e0:	44e5f78b          	fsrw	fa5,a1,a4,2
        for (i = 0; i < inst->outLen; i++) {
    e887e4e4:	0705                	addi	a4,a4,1
    e887e4e6:	0007051b          	sext.w	a0,a4
    e887e4ea:	ff0545e3          	blt	a0,a6,e887e4d4 <WebRtcNs_ProcessCore+0x340>
    e887e4ee:	b715                	j	e887e412 <WebRtcNs_ProcessCore+0x27e>
          inst->outBuf[i] = fout[i + inst->blockLen10ms];
    e887e4f0:	6789                	lui	a5,0x2
    e887e4f2:	6685                	lui	a3,0x1
    e887e4f4:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e4f8:	1008                	addi	a0,sp,32
    e887e4fa:	82868593          	addi	a1,a3,-2008 # 828 <memcmp-0xe87ff7d8>
    e887e4fe:	97aa                	add	a5,a5,a0
    e887e500:	4701                	li	a4,0
    e887e502:	95e2                	add	a1,a1,s8
    e887e504:	40d786b3          	sub	a3,a5,a3
    e887e508:	bff9                	j	e887e4e6 <WebRtcNs_ProcessCore+0x352>
        dTmp = fout[i];
    e887e50a:	44d6678b          	flrw	fa5,a2,a3,2
        if (dTmp < WEBRTC_SPL_WORD16_MIN) {
    e887e50e:	a0e79753          	flt.s	a4,fa5,fa4
    e887e512:	ef09                	bnez	a4,e887e52c <WebRtcNs_ProcessCore+0x398>
        } else if (dTmp > WEBRTC_SPL_WORD16_MAX) {
    e887e514:	a0f69753          	flt.s	a4,fa3,fa5
    e887e518:	c319                	beqz	a4,e887e51e <WebRtcNs_ProcessCore+0x38a>
          dTmp = WEBRTC_SPL_WORD16_MAX;
    e887e51a:	20d687d3          	fmv.s	fa5,fa3
        outFrame[i] = (short)dTmp;
    e887e51e:	c0079753          	fcvt.w.s	a4,fa5,rtz
    e887e522:	67a2                	ld	a5,8(sp)
    e887e524:	22d7d70b          	srh	a4,a5,a3,1
      for (i = 0; i < inst->blockLen10ms; i++) {
    e887e528:	0685                	addi	a3,a3,1
    e887e52a:	b731                	j	e887e436 <WebRtcNs_ProcessCore+0x2a2>
          dTmp = WEBRTC_SPL_WORD16_MIN;
    e887e52c:	20e707d3          	fmv.s	fa5,fa4
    e887e530:	b7fd                	j	e887e51e <WebRtcNs_ProcessCore+0x38a>
          dTmp = inst->dataBufHB[i];
    e887e532:	00d90733          	add	a4,s2,a3
    e887e536:	04ec170b          	addsl	a4,s8,a4,2
    e887e53a:	00472787          	flw	fa5,4(a4)
          if (dTmp < WEBRTC_SPL_WORD16_MIN) {
    e887e53e:	a0e79753          	flt.s	a4,fa5,fa4
    e887e542:	ef09                	bnez	a4,e887e55c <WebRtcNs_ProcessCore+0x3c8>
          } else if (dTmp > WEBRTC_SPL_WORD16_MAX) {
    e887e544:	a0f69753          	flt.s	a4,fa3,fa5
    e887e548:	c319                	beqz	a4,e887e54e <WebRtcNs_ProcessCore+0x3ba>
            dTmp = WEBRTC_SPL_WORD16_MAX;
    e887e54a:	20d687d3          	fmv.s	fa5,fa3
          outFrameHB[i] = (short)dTmp;
    e887e54e:	c0079753          	fcvt.w.s	a4,fa5,rtz
    e887e552:	67c2                	ld	a5,16(sp)
    e887e554:	2327d70b          	srh	a4,a5,s2,1
        for (i = 0; i < inst->blockLen10ms; i++) {
    e887e558:	2905                	addiw	s2,s2,1
    e887e55a:	b709                	j	e887e45c <WebRtcNs_ProcessCore+0x2c8>
            dTmp = WEBRTC_SPL_WORD16_MIN;
    e887e55c:	20e707d3          	fmv.s	fa5,fa4
    e887e560:	b7fd                	j	e887e54e <WebRtcNs_ProcessCore+0x3ba>
    inst->blockInd++; // Update the block index only when we process a block.
    e887e562:	6489                	lui	s1,0x2
    e887e564:	009c0933          	add	s2,s8,s1
    e887e568:	3e892703          	lw	a4,1000(s2)
    WebRtc_rdft(inst->anaLen, 1, winData, inst->ip, inst->wfft);
    e887e56c:	6b85                	lui	s7,0x1
    e887e56e:	750b8793          	addi	a5,s7,1872 # 1750 <memcmp-0xe87fe8b0>
    inst->blockInd++; // Update the block index only when we process a block.
    e887e572:	2705                	addiw	a4,a4,1
    e887e574:	3ee92423          	sw	a4,1000(s2)
    WebRtc_rdft(inst->anaLen, 1, winData, inst->ip, inst->wfft);
    e887e578:	fe848a93          	addi	s5,s1,-24 # 1fe8 <memcmp-0xe87fe018>
    e887e57c:	1e848b13          	addi	s6,s1,488
    e887e580:	1018                	addi	a4,sp,32
    e887e582:	00f709b3          	add	s3,a4,a5
    e887e586:	9ae2                	add	s5,s5,s8
    e887e588:	9b62                	add	s6,s6,s8
    e887e58a:	875a                	mv	a4,s6
    e887e58c:	86d6                	mv	a3,s5
    e887e58e:	864e                	mv	a2,s3
    e887e590:	4585                	li	a1,1
    e887e592:	153010ef          	jal	ra,e887fee4 <WebRtc_rdft>
    imag[0] = 0;
    e887e596:	6789                	lui	a5,0x2
    e887e598:	1010                	addi	a2,sp,32
    e887e59a:	f5078713          	addi	a4,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e59e:	9732                	add	a4,a4,a2
    e887e5a0:	76fd                	lui	a3,0xfffff
    e887e5a2:	96ba                	add	a3,a3,a4
    real[0] = winData[0];
    e887e5a4:	750b8713          	addi	a4,s7,1872
    e887e5a8:	9732                	add	a4,a4,a2
    e887e5aa:	00072787          	flw	fa5,0(a4)
    e887e5ae:	b5078713          	addi	a4,a5,-1200
    e887e5b2:	9732                	add	a4,a4,a2
    e887e5b4:	00f72027          	fsw	fa5,0(a4)
    magn[0] = (float)(fabs(real[0]) + 1.0f);
    e887e5b8:	20f7a7d3          	fabs.s	fa5,fa5
    e887e5bc:	f5078713          	addi	a4,a5,-176
    e887e5c0:	9732                	add	a4,a4,a2
    e887e5c2:	8f05                	sub	a4,a4,s1
    e887e5c4:	420787d3          	fcvt.d.s	fa5,fa5
    e887e5c8:	e03a                	sd	a4,0(sp)
    e887e5ca:	00041717          	auipc	a4,0x41
    e887e5ce:	8ae73687          	fld	fa3,-1874(a4) # e88bee78 <kCFRunLoopTimerClass+0xd0>
    e887e5d2:	02d7f7d3          	fadd.d	fa5,fa5,fa3
    imag[inst->magnLen - 1] = 0;
    e887e5d6:	018c2603          	lw	a2,24(s8)
    magn[0] = (float)(fabs(real[0]) + 1.0f);
    e887e5da:	6702                	ld	a4,0(sp)
    imag[0] = 0;
    e887e5dc:	0e06ac23          	sw	zero,248(a3) # fffffffffffff0f8 <__DRAM0_INF_BASE+0xffffffff0000f0f8>
    imag[inst->magnLen - 1] = 0;
    e887e5e0:	fff6059b          	addiw	a1,a2,-1
    real[inst->magnLen - 1] = winData[1];
    e887e5e4:	1008                	addi	a0,sp,32
    imag[inst->magnLen - 1] = 0;
    e887e5e6:	862e                	mv	a2,a1
    magn[0] = (float)(fabs(real[0]) + 1.0f);
    e887e5e8:	4017f7d3          	fcvt.s.d	fa5,fa5
    e887e5ec:	0af72c27          	fsw	fa5,184(a4)
    imag[inst->magnLen - 1] = 0;
    e887e5f0:	00259713          	slli	a4,a1,0x2
    e887e5f4:	96ba                	add	a3,a3,a4
    e887e5f6:	0e06ac23          	sw	zero,248(a3)
    real[inst->magnLen - 1] = winData[1];
    e887e5fa:	754b8693          	addi	a3,s7,1876
    e887e5fe:	96aa                	add	a3,a3,a0
    e887e600:	0006a707          	flw	fa4,0(a3)
    e887e604:	b5078693          	addi	a3,a5,-1200
    e887e608:	00d504b3          	add	s1,a0,a3
    magn[inst->magnLen - 1] = (float)(fabs(real[inst->magnLen - 1]) + 1.0f);
    e887e60c:	20e727d3          	fabs.s	fa5,fa4
    e887e610:	6682                	ld	a3,0(sp)
    sumMagn = magn[0] + magn[inst->magnLen - 1];
    e887e612:	6782                	ld	a5,0(sp)
    magn[inst->magnLen - 1] = (float)(fabs(real[inst->magnLen - 1]) + 1.0f);
    e887e614:	420787d3          	fcvt.d.s	fa5,fa5
    real[inst->magnLen - 1] = winData[1];
    e887e618:	44b4f70b          	fsrw	fa4,s1,a1,2
                   (float)(real[inst->magnLen - 1] * real[inst->magnLen - 1]);
    e887e61c:	10e77753          	fmul.s	fa4,fa4,fa4
    magn[inst->magnLen - 1] = (float)(fabs(real[inst->magnLen - 1]) + 1.0f);
    e887e620:	02d7f7d3          	fadd.d	fa5,fa5,fa3
    e887e624:	96ba                	add	a3,a3,a4
    signalEnergy = (float)(real[0] * real[0]) + 
    e887e626:	0004a987          	flw	fs3,0(s1)
    if (inst->blockInd < END_STARTUP_SHORT) {
    e887e62a:	3e892583          	lw	a1,1000(s2)
    signalEnergy = (float)(real[0] * real[0]) + 
    e887e62e:	7139f9c3          	fmadd.s	fs3,fs3,fs3,fa4
    magn[inst->magnLen - 1] = (float)(fabs(real[inst->magnLen - 1]) + 1.0f);
    e887e632:	4017f7d3          	fcvt.s.d	fa5,fa5
    e887e636:	0af6ac27          	fsw	fa5,184(a3)
    sumMagn = magn[0] + magn[inst->magnLen - 1];
    e887e63a:	0b87a687          	flw	fa3,184(a5)
    if (inst->blockInd < END_STARTUP_SHORT) {
    e887e63e:	03100693          	li	a3,49
    sumMagn = magn[0] + magn[inst->magnLen - 1];
    e887e642:	00d7f4d3          	fadd.s	fs1,fa5,fa3
    if (inst->blockInd < END_STARTUP_SHORT) {
    e887e646:	40b6c263          	blt	a3,a1,e887ea4a <WebRtcNs_ProcessCore+0x8b6>
      inst->initMagnEst[0] += magn[0];
    e887e64a:	668d                	lui	a3,0x3
    e887e64c:	00dc05b3          	add	a1,s8,a3
    e887e650:	c545a707          	flw	fa4,-940(a1)
    e887e654:	9762                	add	a4,a4,s8
      inst->initMagnEst[inst->magnLen - 1] += magn[inst->magnLen - 1];
    e887e656:	9736                	add	a4,a4,a3
      inst->initMagnEst[0] += magn[0];
    e887e658:	00d77753          	fadd.s	fa4,fa4,fa3
      tmpFloat2 = log((float)(inst->magnLen - 1));
    e887e65c:	d0067553          	fcvt.s.w	fa0,a2
    e887e660:	42050553          	fcvt.d.s	fa0,fa0
      inst->initMagnEst[0] += magn[0];
    e887e664:	c4e5aa27          	fsw	fa4,-940(a1)
      inst->initMagnEst[inst->magnLen - 1] += magn[inst->magnLen - 1];
    e887e668:	c5472707          	flw	fa4,-940(a4)
    e887e66c:	00f777d3          	fadd.s	fa5,fa4,fa5
    e887e670:	c4f72a27          	fsw	fa5,-940(a4)
      tmpFloat2 = log((float)(inst->magnLen - 1));
    e887e674:	abd8c0ef          	jal	ra,e880b130 <log>
    e887e678:	40157453          	fcvt.s.d	fs0,fa0
      tmpFloat1 = log(magn[inst->magnLen - 1]);
    e887e67c:	018c2703          	lw	a4,24(s8)
    e887e680:	6782                	ld	a5,0(sp)
      sum_log_i_square = tmpFloat2 * tmpFloat2;
    e887e682:	10847ad3          	fmul.s	fs5,fs0,fs0
      tmpFloat1 = log(magn[inst->magnLen - 1]);
    e887e686:	377d                	addiw	a4,a4,-1
    e887e688:	04e7970b          	addsl	a4,a5,a4,2
    e887e68c:	0b872507          	flw	fa0,184(a4)
    e887e690:	42050553          	fcvt.d.s	fa0,fa0
    e887e694:	a9d8c0ef          	jal	ra,e880b130 <log>
    e887e698:	40157a53          	fcvt.s.d	fs4,fa0
      sum_log_i_log_magn = tmpFloat2 * tmpFloat1;
    e887e69c:	11447b53          	fmul.s	fs6,fs0,fs4
      imag[i] = winData[2 * i + 1];
    e887e6a0:	6709                	lui	a4,0x2
    e887e6a2:	1010                	addi	a2,sp,32
    e887e6a4:	76fd                	lui	a3,0xfffff
    e887e6a6:	f5070793          	addi	a5,a4,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e6aa:	0f868693          	addi	a3,a3,248 # fffffffffffff0f8 <__DRAM0_INF_BASE+0xffffffff0000f0f8>
    e887e6ae:	97b2                	add	a5,a5,a2
    e887e6b0:	97b6                	add	a5,a5,a3
    e887e6b2:	e03e                	sd	a5,0(sp)
      magn[i] = ((float)sqrt(fTmp)) + 1.0f;
    e887e6b4:	0004f797          	auipc	a5,0x4f
    e887e6b8:	bcc7ab87          	flw	fs7,-1076(a5) # e88cd280 <kGenFuncTable+0x110>
    e887e6bc:	7979                	lui	s2,0xffffe
    e887e6be:	f5070793          	addi	a5,a4,-176
    e887e6c2:	0b890913          	addi	s2,s2,184 # ffffffffffffe0b8 <__DRAM0_INF_BASE+0xffffffff0000e0b8>
    e887e6c6:	97b2                	add	a5,a5,a2
    e887e6c8:	8bce                	mv	s7,s3
  float   sum_log_i = 0.0;
    e887e6ca:	8cce                	mv	s9,s3
    e887e6cc:	4d85                	li	s11,1
      magn[i] = ((float)sqrt(fTmp)) + 1.0f;
    e887e6ce:	993e                	add	s2,s2,a5
    for (i = 1; i < inst->magnLen - 1; i++) {
    e887e6d0:	018c2683          	lw	a3,24(s8)
    e887e6d4:	000d861b          	sext.w	a2,s11
    e887e6d8:	fff6851b          	addiw	a0,a3,-1
    e887e6dc:	38a64063          	blt	a2,a0,e887ea5c <WebRtcNs_ProcessCore+0x8c8>
    signalEnergy = signalEnergy / ((float)inst->magnLen);
    e887e6e0:	d006f7d3          	fcvt.s.w	fa5,a3
    WebRtcNs_ComputeSpectralFlatness(inst, magn);
    e887e6e4:	6c89                	lui	s9,0x2
    e887e6e6:	7679                	lui	a2,0xffffe
    signalEnergy = signalEnergy / ((float)inst->magnLen);
    e887e6e8:	18f9f9d3          	fdiv.s	fs3,fs3,fa5
    WebRtcNs_ComputeSpectralFlatness(inst, magn);
    e887e6ec:	1018                	addi	a4,sp,32
    e887e6ee:	f50c8793          	addi	a5,s9,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e6f2:	97ba                	add	a5,a5,a4
    e887e6f4:	0b860d93          	addi	s11,a2,184 # ffffffffffffe0b8 <__DRAM0_INF_BASE+0xffffffff0000e0b8>
    inst->signalEnergy = signalEnergy;
    e887e6f8:	690d                	lui	s2,0x3
    WebRtcNs_ComputeSpectralFlatness(inst, magn);
    e887e6fa:	9dbe                	add	s11,s11,a5
    inst->signalEnergy = signalEnergy;
    e887e6fc:	9962                	add	s2,s2,s8
    WebRtcNs_ComputeSpectralFlatness(inst, magn);
    e887e6fe:	85ee                	mv	a1,s11
    e887e700:	8562                	mv	a0,s8
    inst->sumMagn = sumMagn;
    e887e702:	c4992627          	fsw	fs1,-948(s2) # 2c4c <memcmp-0xe87fd3b4>
    inst->signalEnergy = signalEnergy;
    e887e706:	c5392427          	fsw	fs3,-952(s2)
    WebRtcNs_ComputeSpectralFlatness(inst, magn);
    e887e70a:	e86ff0ef          	jal	ra,e887dd90 <WebRtcNs_ComputeSpectralFlatness>
    WebRtcNs_NoiseEstimation(inst, magn, noise);
    e887e70e:	1018                	addi	a4,sp,32
    e887e710:	7679                	lui	a2,0xffffe
    e887e712:	f50c8793          	addi	a5,s9,-176
    e887e716:	97ba                	add	a5,a5,a4
    e887e718:	2c060613          	addi	a2,a2,704 # ffffffffffffe2c0 <__DRAM0_INF_BASE+0xffffffff0000e2c0>
    e887e71c:	963e                	add	a2,a2,a5
    e887e71e:	85ee                	mv	a1,s11
    e887e720:	8562                	mv	a0,s8
    e887e722:	84aff0ef          	jal	ra,e887d76c <WebRtcNs_NoiseEstimation>
    if (inst->blockInd < END_STARTUP_SHORT) {
    e887e726:	6609                	lui	a2,0x2
    e887e728:	9662                	add	a2,a2,s8
    e887e72a:	3e862683          	lw	a3,1000(a2) # 23e8 <memcmp-0xe87fdc18>
    e887e72e:	03100713          	li	a4,49
    e887e732:	3cd75363          	bge	a4,a3,e887eaf8 <WebRtcNs_ProcessCore+0x964>
    if (inst->blockInd < END_STARTUP_LONG) {
    e887e736:	6709                	lui	a4,0x2
    e887e738:	9762                	add	a4,a4,s8
    e887e73a:	3e872703          	lw	a4,1000(a4) # 23e8 <memcmp-0xe87fdc18>
    e887e73e:	0c700693          	li	a3,199
    e887e742:	58e6d263          	bge	a3,a4,e887ecc6 <WebRtcNs_ProcessCore+0xb32>
    e887e746:	6789                	lui	a5,0x2
    e887e748:	100c                	addi	a1,sp,32
      if (magn[i] > noise[i]) {
    e887e74a:	f5078893          	addi	a7,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e74e:	02010e13          	addi	t3,sp,32
    e887e752:	f5078713          	addi	a4,a5,-176
    e887e756:	7579                	lui	a0,0xffffe
    e887e758:	98f2                	add	a7,a7,t3
    e887e75a:	972e                	add	a4,a4,a1
    e887e75c:	0b850593          	addi	a1,a0,184 # ffffffffffffe0b8 <__DRAM0_INF_BASE+0xffffffff0000e0b8>
    e887e760:	02010e93          	addi	t4,sp,32
    e887e764:	00b88e33          	add	t3,a7,a1
    e887e768:	f5078893          	addi	a7,a5,-176
    e887e76c:	98f6                	add	a7,a7,t4
    e887e76e:	2c050513          	addi	a0,a0,704
    e887e772:	9546                	add	a0,a0,a7
      previousEstimateStsa[i] = inst->magnPrev[i] / (inst->noisePrev[i] + (float)0.0001)
    e887e774:	f5078f13          	addi	t5,a5,-176
    e887e778:	02010f93          	addi	t6,sp,32
    e887e77c:	6909                	lui	s2,0x2
    e887e77e:	0004f897          	auipc	a7,0x4f
    e887e782:	af28a687          	flw	fa3,-1294(a7) # e88cd270 <kGenFuncTable+0x100>
        snrLocPost[i] = magn[i] / (noise[i] + (float)0.0001) - (float)1.0;
    e887e786:	0004f897          	auipc	a7,0x4f
    e887e78a:	afa8a607          	flw	fa2,-1286(a7) # e88cd280 <kGenFuncTable+0x110>
      snrLocPrior[i] = DD_PR_SNR * previousEstimateStsa[i] + ((float)1.0 - DD_PR_SNR)
    e887e78e:	f5078793          	addi	a5,a5,-176
    e887e792:	767d                	lui	a2,0xfffff
    e887e794:	97fe                	add	a5,a5,t6
    e887e796:	dd890913          	addi	s2,s2,-552 # 1dd8 <memcmp-0xe87fe228>
    for (i = 0; i < inst->magnLen; i++) {
    e887e79a:	018c2303          	lw	t1,24(s8)
    e887e79e:	8d860693          	addi	a3,a2,-1832 # ffffffffffffe8d8 <__DRAM0_INF_BASE+0xffffffff0000e8d8>
      previousEstimateStsa[i] = inst->magnPrev[i] / (inst->noisePrev[i] + (float)0.0001)
    e887e7a2:	ef060893          	addi	a7,a2,-272
    e887e7a6:	9962                	add	s2,s2,s8
    e887e7a8:	9f7e                	add	t5,t5,t6
      snrLocPrior[i] = DD_PR_SNR * previousEstimateStsa[i] + ((float)1.0 - DD_PR_SNR)
    e887e7aa:	ae060613          	addi	a2,a2,-1312
    e887e7ae:	963e                	add	a2,a2,a5
    e887e7b0:	96ba                	add	a3,a3,a4
    e887e7b2:	884a                	mv	a6,s2
    for (i = 0; i < inst->magnLen; i++) {
    e887e7b4:	4701                	li	a4,0
      previousEstimateStsa[i] = inst->magnPrev[i] / (inst->noisePrev[i] + (float)0.0001)
    e887e7b6:	6e85                	lui	t4,0x1
    e887e7b8:	98fa                	add	a7,a7,t5
                       * snrLocPost[i];
    e887e7ba:	0004f797          	auipc	a5,0x4f
    e887e7be:	afa7a587          	flw	fa1,-1286(a5) # e88cd2b4 <kGenFuncTable+0x144>
      snrLocPrior[i] = DD_PR_SNR * previousEstimateStsa[i] + ((float)1.0 - DD_PR_SNR)
    e887e7c2:	0004f797          	auipc	a5,0x4f
    e887e7c6:	af67a507          	flw	fa0,-1290(a5) # e88cd2b8 <kGenFuncTable+0x148>
    for (i = 0; i < inst->magnLen; i++) {
    e887e7ca:	00070f1b          	sext.w	t5,a4
    e887e7ce:	506f4c63          	blt	t5,t1,e887ece6 <WebRtcNs_ProcessCore+0xb52>
    WebRtcNs_ComputeSpectralDifference(inst, magn);
    e887e7d2:	6789                	lui	a5,0x2
    e887e7d4:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e7d8:	1018                	addi	a4,sp,32
    e887e7da:	97ba                	add	a5,a5,a4
    e887e7dc:	95be                	add	a1,a1,a5
    e887e7de:	8562                	mv	a0,s8
    e887e7e0:	e68ff0ef          	jal	ra,e887de48 <WebRtcNs_ComputeSpectralDifference>
    if (updateParsFlag >= 1) {
    e887e7e4:	05a05263          	blez	s10,e887e828 <WebRtcNs_ProcessCore+0x694>
      inst->modelUpdatePars[3]--;
    e887e7e8:	6709                	lui	a4,0x2
    e887e7ea:	9762                	add	a4,a4,s8
    e887e7ec:	3f872683          	lw	a3,1016(a4) # 23f8 <memcmp-0xe87fdc08>
    e887e7f0:	fff6861b          	addiw	a2,a3,-1
    e887e7f4:	3ec72c23          	sw	a2,1016(a4)
      if (inst->modelUpdatePars[3] > 0) {
    e887e7f8:	00c05663          	blez	a2,e887e804 <WebRtcNs_ProcessCore+0x670>
        WebRtcNs_FeatureParameterExtraction(inst, 0);
    e887e7fc:	4581                	li	a1,0
    e887e7fe:	8562                	mv	a0,s8
    e887e800:	9baff0ef          	jal	ra,e887d9ba <WebRtcNs_FeatureParameterExtraction>
      if (inst->modelUpdatePars[3] == 0) {
    e887e804:	6d89                	lui	s11,0x2
    e887e806:	9de2                	add	s11,s11,s8
    e887e808:	3f8da703          	lw	a4,1016(s11) # 23f8 <memcmp-0xe87fdc08>
    e887e80c:	ef11                	bnez	a4,e887e828 <WebRtcNs_ProcessCore+0x694>
        WebRtcNs_FeatureParameterExtraction(inst, 1);
    e887e80e:	4585                	li	a1,1
    e887e810:	8562                	mv	a0,s8
    e887e812:	9a8ff0ef          	jal	ra,e887d9ba <WebRtcNs_FeatureParameterExtraction>
        inst->modelUpdatePars[3] = inst->modelUpdatePars[1];
    e887e816:	3f0da683          	lw	a3,1008(s11)
        if (updateParsFlag == 1) {
    e887e81a:	4705                	li	a4,1
        inst->modelUpdatePars[3] = inst->modelUpdatePars[1];
    e887e81c:	3eddac23          	sw	a3,1016(s11)
        if (updateParsFlag == 1) {
    e887e820:	52ed1163          	bne	s10,a4,e887ed42 <WebRtcNs_ProcessCore+0xbae>
          inst->modelUpdatePars[0] = 0;
    e887e824:	3e0da623          	sw	zero,1004(s11)
    WebRtcNs_SpeechNoiseProb(inst, probSpeechFinal, snrLocPrior, snrLocPost);
    e887e828:	6c89                	lui	s9,0x2
    e887e82a:	1018                	addi	a4,sp,32
    e887e82c:	f50c8793          	addi	a5,s9,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e830:	97ba                	add	a5,a5,a4
    e887e832:	75fd                	lui	a1,0xfffff
    e887e834:	8d858693          	addi	a3,a1,-1832 # ffffffffffffe8d8 <__DRAM0_INF_BASE+0xffffffff0000e8d8>
    e887e838:	ae058613          	addi	a2,a1,-1312
    e887e83c:	ce858593          	addi	a1,a1,-792
    e887e840:	00b78d33          	add	s10,a5,a1
    e887e844:	f50c8793          	addi	a5,s9,-176
    e887e848:	97ba                	add	a5,a5,a4
    e887e84a:	96be                	add	a3,a3,a5
    e887e84c:	f50c8793          	addi	a5,s9,-176
    e887e850:	97ba                	add	a5,a5,a4
    e887e852:	963e                	add	a2,a2,a5
    e887e854:	85ea                	mv	a1,s10
    e887e856:	8562                	mv	a0,s8
    e887e858:	ec4ff0ef          	jal	ra,e887df1c <WebRtcNs_SpeechNoiseProb>
    gammaNoiseTmp = NOISE_UPDATE;
    e887e85c:	0004f797          	auipc	a5,0x4f
    e887e860:	a507a787          	flw	fa5,-1456(a5) # e88cd2ac <kGenFuncTable+0x13c>
                       * (probNonSpeech * magn[i] + probSpeech * inst->noisePrev[i]);
    e887e864:	02010893          	addi	a7,sp,32
    e887e868:	f50c8693          	addi	a3,s9,-176
    e887e86c:	96c6                	add	a3,a3,a7
    e887e86e:	7579                	lui	a0,0xffffe
    e887e870:	660d                	lui	a2,0x3
          noise[i] = noiseUpdateTmp;
    e887e872:	f50c8793          	addi	a5,s9,-176
    for (i = 0; i < inst->magnLen; i++) {
    e887e876:	018c2703          	lw	a4,24(s8)
      gammaNoiseTmp = NOISE_UPDATE;
    e887e87a:	20f781d3          	fmv.s	ft3,fa5
                       * (probNonSpeech * magn[i] + probSpeech * inst->noisePrev[i]);
    e887e87e:	0b850813          	addi	a6,a0,184 # ffffffffffffe0b8 <__DRAM0_INF_BASE+0xffffffff0000e0b8>
    e887e882:	a4460613          	addi	a2,a2,-1468 # 2a44 <memcmp-0xe87fd5bc>
    e887e886:	2c050513          	addi	a0,a0,704
          noise[i] = noiseUpdateTmp;
    e887e88a:	97c6                	add	a5,a5,a7
                       * (probNonSpeech * magn[i] + probSpeech * inst->noisePrev[i]);
    e887e88c:	9836                	add	a6,a6,a3
    e887e88e:	9662                	add	a2,a2,s8
    for (i = 0; i < inst->magnLen; i++) {
    e887e890:	4581                	li	a1,0
      probNonSpeech = (float)1.0 - probSpeech;
    e887e892:	0004f697          	auipc	a3,0x4f
    e887e896:	9ee6a087          	flw	ft1,-1554(a3) # e88cd280 <kGenFuncTable+0x110>
      if (probSpeech > PROB_RANGE) {
    e887e89a:	0004f697          	auipc	a3,0x4f
    e887e89e:	a226a107          	flw	ft2,-1502(a3) # e88cd2bc <kGenFuncTable+0x14c>
        gammaNoiseTmp = SPEECH_UPDATE;
    e887e8a2:	0004f697          	auipc	a3,0x4f
    e887e8a6:	a0e6a207          	flw	ft4,-1522(a3) # e88cd2b0 <kGenFuncTable+0x140>
        inst->magnAvgPause[i] += GAMMA_PAUSE * (magn[i] - inst->magnAvgPause[i]);
    e887e8aa:	0004f697          	auipc	a3,0x4f
    e887e8ae:	a166a287          	flw	ft5,-1514(a3) # e88cd2c0 <kGenFuncTable+0x150>
          noise[i] = noiseUpdateTmp;
    e887e8b2:	953e                	add	a0,a0,a5
    for (i = 0; i < inst->magnLen; i++) {
    e887e8b4:	0005869b          	sext.w	a3,a1
    e887e8b8:	4ae6cc63          	blt	a3,a4,e887ed70 <WebRtcNs_ProcessCore+0xbdc>
      if (magn[i] > noise[i]) {
    e887e8bc:	6789                	lui	a5,0x2
    e887e8be:	f5078593          	addi	a1,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e8c2:	02010813          	addi	a6,sp,32
    e887e8c6:	7679                	lui	a2,0xffffe
    e887e8c8:	95c2                	add	a1,a1,a6
    e887e8ca:	0b860513          	addi	a0,a2,184 # ffffffffffffe0b8 <__DRAM0_INF_BASE+0xffffffff0000e0b8>
    e887e8ce:	02010893          	addi	a7,sp,32
    e887e8d2:	952e                	add	a0,a0,a1
    e887e8d4:	f5078593          	addi	a1,a5,-176
    e887e8d8:	95c6                	add	a1,a1,a7
    e887e8da:	2c060813          	addi	a6,a2,704
    e887e8de:	982e                	add	a6,a6,a1
        currentEstimateStsa = magn[i] / (noise[i] + (float)0.0001) - (float)1.0;
    e887e8e0:	0004f597          	auipc	a1,0x4f
    e887e8e4:	9905a687          	flw	fa3,-1648(a1) # e88cd270 <kGenFuncTable+0x100>
    e887e8e8:	0004f597          	auipc	a1,0x4f
    e887e8ec:	9985a607          	flw	fa2,-1640(a1) # e88cd280 <kGenFuncTable+0x110>
      snrPrior = DD_PR_SNR * previousEstimateStsa[i] + ((float)1.0 - DD_PR_SNR)
    e887e8f0:	f5078893          	addi	a7,a5,-176
    e887e8f4:	02010313          	addi	t1,sp,32
    e887e8f8:	989a                	add	a7,a7,t1
    e887e8fa:	75fd                	lui	a1,0xfffff
    e887e8fc:	ef058593          	addi	a1,a1,-272 # ffffffffffffeef0 <__DRAM0_INF_BASE+0xffffffff0000eef0>
    e887e900:	95c6                	add	a1,a1,a7
                 * currentEstimateStsa;
    e887e902:	0004f897          	auipc	a7,0x4f
    e887e906:	9b28a587          	flw	fa1,-1614(a7) # e88cd2b4 <kGenFuncTable+0x144>
      snrPrior = DD_PR_SNR * previousEstimateStsa[i] + ((float)1.0 - DD_PR_SNR)
    e887e90a:	0004f897          	auipc	a7,0x4f
    e887e90e:	9ae8a507          	flw	fa0,-1618(a7) # e88cd2b8 <kGenFuncTable+0x148>
      theFilter[i] = (float)tmpFloat2;
    e887e912:	f5078793          	addi	a5,a5,-176
    e887e916:	4c860613          	addi	a2,a2,1224
    e887e91a:	979a                	add	a5,a5,t1
      tmpFloat1 = inst->overdrive + snrPrior;
    e887e91c:	6889                	lui	a7,0x2
    e887e91e:	4681                	li	a3,0
      theFilter[i] = (float)tmpFloat2;
    e887e920:	963e                	add	a2,a2,a5
      tmpFloat1 = inst->overdrive + snrPrior;
    e887e922:	98e2                	add	a7,a7,s8
    for (i = 0; i < inst->magnLen; i++) {
    e887e924:	0006831b          	sext.w	t1,a3
    e887e928:	4ae34e63          	blt	t1,a4,e887ede4 <WebRtcNs_ProcessCore+0xc50>
    e887e92c:	6789                	lui	a5,0x2
    e887e92e:	f5078693          	addi	a3,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e932:	1010                	addi	a2,sp,32
    e887e934:	96b2                	add	a3,a3,a2
    e887e936:	7579                	lui	a0,0xffffe
    e887e938:	4c850593          	addi	a1,a0,1224 # ffffffffffffe4c8 <__DRAM0_INF_BASE+0xffffffff0000e4c8>
    e887e93c:	95b6                	add	a1,a1,a3
      if (theFilter[i] > (float)1.0) {
    e887e93e:	0004f697          	auipc	a3,0x4f
    e887e942:	9426a607          	flw	fa2,-1726(a3) # e88cd280 <kGenFuncTable+0x110>
        if (theFilterTmp[i] < inst->denoiseBound) {
    e887e946:	02010813          	addi	a6,sp,32
    e887e94a:	f5078693          	addi	a3,a5,-176
    e887e94e:	96c2                	add	a3,a3,a6
    e887e950:	6d050513          	addi	a0,a0,1744
    e887e954:	9536                	add	a0,a0,a3
        theFilter[i] /= (END_STARTUP_SHORT);
    e887e956:	0004f697          	auipc	a3,0x4f
    e887e95a:	94a6a587          	flw	fa1,-1718(a3) # e88cd2a0 <kGenFuncTable+0x130>
      imag[i] *= inst->smooth[i];
    e887e95e:	787d                	lui	a6,0xfffff
    e887e960:	f5078793          	addi	a5,a5,-176
    e887e964:	1014                	addi	a3,sp,32
      if (theFilter[i] < inst->denoiseBound) {
    e887e966:	6889                	lui	a7,0x2
      imag[i] *= inst->smooth[i];
    e887e968:	0f880813          	addi	a6,a6,248 # fffffffffffff0f8 <__DRAM0_INF_BASE+0xffffffff0000f0f8>
    e887e96c:	97b6                	add	a5,a5,a3
    for (i = 0; i < inst->magnLen; i++) {
    e887e96e:	4601                	li	a2,0
      if (theFilter[i] < inst->denoiseBound) {
    e887e970:	98e2                	add	a7,a7,s8
      if (inst->blockInd < END_STARTUP_SHORT) {
    e887e972:	03100e13          	li	t3,49
        if (theFilterTmp[i] > (float)1.0) {
    e887e976:	832a                	mv	t1,a0
        theFilterTmp[i] *= (END_STARTUP_SHORT - inst->blockInd);
    e887e978:	03200e93          	li	t4,50
      imag[i] *= inst->smooth[i];
    e887e97c:	983e                	add	a6,a6,a5
    for (i = 0; i < inst->magnLen; i++) {
    e887e97e:	0006069b          	sext.w	a3,a2
    e887e982:	4ae6c263          	blt	a3,a4,e887ee26 <WebRtcNs_ProcessCore+0xc92>
      inst->noisePrev[i] = noise[i];
    e887e986:	6889                	lui	a7,0x2
    e887e988:	02010313          	addi	t1,sp,32
    e887e98c:	f5088793          	addi	a5,a7,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887e990:	75f9                	lui	a1,0xffffe
    e887e992:	979a                	add	a5,a5,t1
    e887e994:	2c058813          	addi	a6,a1,704 # ffffffffffffe2c0 <__DRAM0_INF_BASE+0xffffffff0000e2c0>
    e887e998:	6609                	lui	a2,0x2
    e887e99a:	983e                	add	a6,a6,a5
      inst->magnPrev[i] = magn[i];
    e887e99c:	f5088793          	addi	a5,a7,-176
      inst->noisePrev[i] = noise[i];
    e887e9a0:	41860513          	addi	a0,a2,1048 # 2418 <memcmp-0xe87fdbe8>
      inst->magnPrev[i] = magn[i];
    e887e9a4:	0b858593          	addi	a1,a1,184
    e887e9a8:	61c60613          	addi	a2,a2,1564
    e887e9ac:	979a                	add	a5,a5,t1
    e887e9ae:	4681                	li	a3,0
      inst->noisePrev[i] = noise[i];
    e887e9b0:	9562                	add	a0,a0,s8
      inst->magnPrev[i] = magn[i];
    e887e9b2:	9662                	add	a2,a2,s8
    e887e9b4:	95be                	add	a1,a1,a5
    for (i = 0; i < inst->magnLen; i++) {
    e887e9b6:	0006889b          	sext.w	a7,a3
    e887e9ba:	4ee8cf63          	blt	a7,a4,e887eeb8 <WebRtcNs_ProcessCore+0xd24>
    winData[0] = real[0];
    e887e9be:	6589                	lui	a1,0x2
    e887e9c0:	b5058793          	addi	a5,a1,-1200 # 1b50 <memcmp-0xe87fe4b0>
    e887e9c4:	1014                	addi	a3,sp,32
    e887e9c6:	97b6                	add	a5,a5,a3
    e887e9c8:	6685                	lui	a3,0x1
    e887e9ca:	0007a787          	flw	fa5,0(a5)
    e887e9ce:	1010                	addi	a2,sp,32
    e887e9d0:	75068793          	addi	a5,a3,1872 # 1750 <memcmp-0xe87fe8b0>
    e887e9d4:	97b2                	add	a5,a5,a2
    winData[1] = real[inst->magnLen - 1];
    e887e9d6:	377d                	addiw	a4,a4,-1
    winData[0] = real[0];
    e887e9d8:	00f7a027          	fsw	fa5,0(a5)
    winData[1] = real[inst->magnLen - 1];
    e887e9dc:	75468793          	addi	a5,a3,1876
    e887e9e0:	44e4e78b          	flrw	fa5,s1,a4,2
    e887e9e4:	97b2                	add	a5,a5,a2
      winData[2 * i + 1] = imag[i];
    e887e9e6:	767d                	lui	a2,0xfffff
    winData[1] = real[inst->magnLen - 1];
    e887e9e8:	00f7a027          	fsw	fa5,0(a5)
      winData[2 * i + 1] = imag[i];
    e887e9ec:	f5058793          	addi	a5,a1,-176
    e887e9f0:	100c                	addi	a1,sp,32
    e887e9f2:	0f860613          	addi	a2,a2,248 # fffffffffffff0f8 <__DRAM0_INF_BASE+0xffffffff0000f0f8>
    e887e9f6:	97ae                	add	a5,a5,a1
    for (i = 1; i < inst->magnLen - 1; i++) {
    e887e9f8:	4681                	li	a3,0
      winData[2 * i + 1] = imag[i];
    e887e9fa:	963e                	add	a2,a2,a5
    for (i = 1; i < inst->magnLen - 1; i++) {
    e887e9fc:	0685                	addi	a3,a3,1
    e887e9fe:	0006859b          	sext.w	a1,a3
    e887ea02:	0ba1                	addi	s7,s7,8
    e887ea04:	4ce5c463          	blt	a1,a4,e887eecc <WebRtcNs_ProcessCore+0xd38>
    WebRtc_rdft(inst->anaLen, -1, winData, inst->ip, inst->wfft);
    e887ea08:	014c2503          	lw	a0,20(s8)
    e887ea0c:	875a                	mv	a4,s6
    e887ea0e:	86d6                	mv	a3,s5
    e887ea10:	864e                	mv	a2,s3
    e887ea12:	55fd                	li	a1,-1
    e887ea14:	4d0010ef          	jal	ra,e887fee4 <WebRtc_rdft>
    for (i = 0; i < inst->anaLen; i++) {
    e887ea18:	014c2683          	lw	a3,20(s8)
    e887ea1c:	4701                	li	a4,0
    e887ea1e:	0007061b          	sext.w	a2,a4
    e887ea22:	4ad64e63          	blt	a2,a3,e887eede <WebRtcNs_ProcessCore+0xd4a>
    if (inst->gainmap == 1 && inst->blockInd > END_STARTUP_LONG) {
    e887ea26:	6709                	lui	a4,0x2
    e887ea28:	9762                	add	a4,a4,s8
    e887ea2a:	fe472583          	lw	a1,-28(a4) # 1fe4 <memcmp-0xe87fe01c>
    e887ea2e:	4605                	li	a2,1
    e887ea30:	00c59863          	bne	a1,a2,e887ea40 <WebRtcNs_ProcessCore+0x8ac>
    e887ea34:	3e872603          	lw	a2,1000(a4)
    e887ea38:	0c800713          	li	a4,200
    e887ea3c:	70c74f63          	blt	a4,a2,e887f15a <WebRtcNs_ProcessCore+0xfc6>
    factor = (float)1.0;
    e887ea40:	0004f797          	auipc	a5,0x4f
    e887ea44:	8407a407          	flw	fs0,-1984(a5) # e88cd280 <kGenFuncTable+0x110>
    e887ea48:	a3a9                	j	e887ef92 <WebRtcNs_ProcessCore+0xdfe>
  float   sum_log_i_log_magn = 0.0;
    e887ea4a:	f0000b53          	fmv.w.x	fs6,zero
  float   sum_log_magn = 0.0;
    e887ea4e:	216b0a53          	fmv.s	fs4,fs6
  float   sum_log_i_square = 0.0;
    e887ea52:	216b0ad3          	fmv.s	fs5,fs6
  float   sum_log_i = 0.0;
    e887ea56:	216b0453          	fmv.s	fs0,fs6
    e887ea5a:	b199                	j	e887e6a0 <WebRtcNs_ProcessCore+0x50c>
      imag[i] = winData[2 * i + 1];
    e887ea5c:	00cca787          	flw	fa5,12(s9)
    e887ea60:	6782                	ld	a5,0(sp)
      real[i] = winData[2 * i];
    e887ea62:	008ca507          	flw	fa0,8(s9)
    e887ea66:	ec32                	sd	a2,24(sp)
      imag[i] = winData[2 * i + 1];
    e887ea68:	45b7f78b          	fsrw	fa5,a5,s11,2
      fTmp += imag[i] * imag[i];
    e887ea6c:	10f7f7d3          	fmul.s	fa5,fa5,fa5
      real[i] = winData[2 * i];
    e887ea70:	45b4f50b          	fsrw	fa0,s1,s11,2
      fTmp += imag[i] * imag[i];
    e887ea74:	78a57543          	fmadd.s	fa0,fa0,fa0,fa5
      signalEnergy += fTmp;
    e887ea78:	00a9f9d3          	fadd.s	fs3,fs3,fa0
      magn[i] = ((float)sqrt(fTmp)) + 1.0f;
    e887ea7c:	42050553          	fcvt.d.s	fa0,fa0
    e887ea80:	9f18c0ef          	jal	ra,e880b470 <sqrt>
    e887ea84:	40157553          	fcvt.s.d	fa0,fa0
      if (inst->blockInd < END_STARTUP_SHORT) {
    e887ea88:	6789                	lui	a5,0x2
    e887ea8a:	00fc06b3          	add	a3,s8,a5
      magn[i] = ((float)sqrt(fTmp)) + 1.0f;
    e887ea8e:	01757553          	fadd.s	fa0,fa0,fs7
      if (inst->blockInd < END_STARTUP_SHORT) {
    e887ea92:	3e86a503          	lw	a0,1000(a3)
    e887ea96:	03100693          	li	a3,49
      magn[i] = ((float)sqrt(fTmp)) + 1.0f;
    e887ea9a:	45b9750b          	fsrw	fa0,s2,s11,2
      sumMagn += magn[i];
    e887ea9e:	00a4f4d3          	fadd.s	fs1,fs1,fa0
      if (inst->blockInd < END_STARTUP_SHORT) {
    e887eaa2:	04a6c863          	blt	a3,a0,e887eaf2 <WebRtcNs_ProcessCore+0x95e>
        inst->initMagnEst[i] += magn[i];
    e887eaa6:	668d                	lui	a3,0x3
    e887eaa8:	c5468693          	addi	a3,a3,-940 # 2c54 <memcmp-0xe87fd3ac>
    e887eaac:	96e2                	add	a3,a3,s8
    e887eaae:	45b6e78b          	flrw	fa5,a3,s11,2
        if (i >= kStartBand) {
    e887eab2:	6662                	ld	a2,24(sp)
        inst->initMagnEst[i] += magn[i];
    e887eab4:	00a7f553          	fadd.s	fa0,fa5,fa0
    e887eab8:	45b6f50b          	fsrw	fa0,a3,s11,2
        if (i >= kStartBand) {
    e887eabc:	4691                	li	a3,4
    e887eabe:	02c6da63          	bge	a3,a2,e887eaf2 <WebRtcNs_ProcessCore+0x95e>
          tmpFloat2 = log((float)i);
    e887eac2:	d0067553          	fcvt.s.w	fa0,a2
    e887eac6:	42050553          	fcvt.d.s	fa0,fa0
    e887eaca:	e668c0ef          	jal	ra,e880b130 <log>
    e887eace:	40157c53          	fcvt.s.d	fs8,fa0
          tmpFloat1 = log(magn[i]);
    e887ead2:	45b9650b          	flrw	fa0,s2,s11,2
          sum_log_i += tmpFloat2;
    e887ead6:	01847453          	fadd.s	fs0,fs0,fs8
          tmpFloat1 = log(magn[i]);
    e887eada:	42050553          	fcvt.d.s	fa0,fa0
          sum_log_i_square += tmpFloat2 * tmpFloat2;
    e887eade:	a98c7ac3          	fmadd.s	fs5,fs8,fs8,fs5
          tmpFloat1 = log(magn[i]);
    e887eae2:	e4e8c0ef          	jal	ra,e880b130 <log>
    e887eae6:	40157553          	fcvt.s.d	fa0,fa0
          sum_log_magn += tmpFloat1;
    e887eaea:	00aa7a53          	fadd.s	fs4,fs4,fa0
          sum_log_i_log_magn += tmpFloat2 * tmpFloat1;
    e887eaee:	b0ac7b43          	fmadd.s	fs6,fs8,fa0,fs6
    for (i = 1; i < inst->magnLen - 1; i++) {
    e887eaf2:	0d85                	addi	s11,s11,1
    e887eaf4:	0ca1                	addi	s9,s9,8
    e887eaf6:	bee9                	j	e887e6d0 <WebRtcNs_ProcessCore+0x53c>
      inst->whiteNoiseLevel += sumMagn / ((float)inst->magnLen) * inst->overdrive;
    e887eaf8:	018c2703          	lw	a4,24(s8)
    e887eafc:	fdc62707          	flw	fa4,-36(a2)
    e887eb00:	c5092787          	flw	fa5,-944(s2)
    e887eb04:	d0077553          	fcvt.s.w	fa0,a4
      tmpFloat1 -= (sum_log_i * sum_log_i);
    e887eb08:	108476d3          	fmul.s	fa3,fs0,fs0
      tmpFloat1 = sum_log_i_square * ((float)(inst->magnLen - kStartBand));
    e887eb0c:	376d                	addiw	a4,a4,-5
      inst->whiteNoiseLevel += sumMagn / ((float)inst->magnLen) * inst->overdrive;
    e887eb0e:	18a4f553          	fdiv.s	fa0,fs1,fa0
      if (tmpFloat3 < 0.0f) {
    e887eb12:	f0000653          	fmv.w.x	fa2,zero
      inst->whiteNoiseLevel += sumMagn / ((float)inst->magnLen) * inst->overdrive;
    e887eb16:	78e57543          	fmadd.s	fa0,fa0,fa4,fa5
      tmpFloat2 = (sum_log_i_square * sum_log_magn - sum_log_i * sum_log_i_log_magn);
    e887eb1a:	116477d3          	fmul.s	fa5,fs0,fs6
      tmpFloat1 = sum_log_i_square * ((float)(inst->magnLen - kStartBand));
    e887eb1e:	d0077753          	fcvt.s.w	fa4,a4
      tmpFloat1 -= (sum_log_i * sum_log_i);
    e887eb22:	695776c7          	fmsub.s	fa3,fa4,fs5,fa3
      tmpFloat2 = (sum_log_i_square * sum_log_magn - sum_log_i * sum_log_i_log_magn);
    e887eb26:	794af7c7          	fmsub.s	fa5,fs5,fs4,fa5
      inst->whiteNoiseLevel += sumMagn / ((float)inst->magnLen) * inst->overdrive;
    e887eb2a:	c4a92827          	fsw	fa0,-944(s2)
      tmpFloat3 = tmpFloat2 / tmpFloat1;
    e887eb2e:	18d7f7d3          	fdiv.s	fa5,fa5,fa3
      if (tmpFloat3 < 0.0f) {
    e887eb32:	a0c79753          	flt.s	a4,fa5,fa2
    e887eb36:	c319                	beqz	a4,e887eb3c <WebRtcNs_ProcessCore+0x9a8>
        tmpFloat3 = 0.0f;
    e887eb38:	20c607d3          	fmv.s	fa5,fa2
      tmpFloat2 -= ((float)(inst->magnLen - kStartBand)) * sum_log_i_log_magn;
    e887eb3c:	11677753          	fmul.s	fa4,fa4,fs6
      inst->pinkNoiseNumerator += tmpFloat3;
    e887eb40:	670d                	lui	a4,0x3
    e887eb42:	9762                	add	a4,a4,s8
    e887eb44:	e5872607          	flw	fa2,-424(a4) # 2e58 <memcmp-0xe87fd1a8>
      tmpFloat2 -= ((float)(inst->magnLen - kStartBand)) * sum_log_i_log_magn;
    e887eb48:	71447447          	fmsub.s	fs0,fs0,fs4,fa4
      inst->pinkNoiseNumerator += tmpFloat3;
    e887eb4c:	00c7f7d3          	fadd.s	fa5,fa5,fa2
      if (tmpFloat3 < 0.0f) {
    e887eb50:	f0000753          	fmv.w.x	fa4,zero
      tmpFloat3 = tmpFloat2 / tmpFloat1;
    e887eb54:	18d47453          	fdiv.s	fs0,fs0,fa3
      inst->pinkNoiseNumerator += tmpFloat3;
    e887eb58:	e4f72c27          	fsw	fa5,-424(a4)
      if (tmpFloat3 < 0.0f) {
    e887eb5c:	a0e41753          	flt.s	a4,fs0,fa4
    e887eb60:	14071b63          	bnez	a4,e887ecb6 <WebRtcNs_ProcessCore+0xb22>
      if (tmpFloat3 > 1.0f) {
    e887eb64:	0004e797          	auipc	a5,0x4e
    e887eb68:	71c7a707          	flw	fa4,1820(a5) # e88cd280 <kGenFuncTable+0x110>
    e887eb6c:	a0871753          	flt.s	a4,fa4,fs0
    e887eb70:	c319                	beqz	a4,e887eb76 <WebRtcNs_ProcessCore+0x9e2>
        tmpFloat3 = 1.0f;
    e887eb72:	20e70453          	fmv.s	fs0,fa4
      inst->pinkNoiseExp += tmpFloat3;
    e887eb76:	690d                	lui	s2,0x3
    e887eb78:	9962                	add	s2,s2,s8
    e887eb7a:	e5c92707          	flw	fa4,-420(s2) # 2e5c <memcmp-0xe87fd1a4>
    e887eb7e:	00e47453          	fadd.s	fs0,fs0,fa4
      if (inst->pinkNoiseExp == 0.0f) {
    e887eb82:	f0000753          	fmv.w.x	fa4,zero
    e887eb86:	a0e42753          	feq.s	a4,fs0,fa4
      inst->pinkNoiseExp += tmpFloat3;
    e887eb8a:	e4892e27          	fsw	fs0,-420(s2)
      if (inst->pinkNoiseExp == 0.0f) {
    e887eb8e:	12071763          	bnez	a4,e887ecbc <WebRtcNs_ProcessCore+0xb28>
        parametric_num = exp(inst->pinkNoiseNumerator / (float)(inst->blockInd + 1));
    e887eb92:	2685                	addiw	a3,a3,1
    e887eb94:	d006f553          	fcvt.s.w	fa0,a3
    e887eb98:	18a7f553          	fdiv.s	fa0,fa5,fa0
    e887eb9c:	42050553          	fcvt.d.s	fa0,fa0
    e887eba0:	ca08c0ef          	jal	ra,e880b040 <exp>
        parametric_exp = inst->pinkNoiseExp / (float)(inst->blockInd + 1);
    e887eba4:	e5c92407          	flw	fs0,-420(s2)
        parametric_num *= (float)(inst->blockInd + 1);
    e887eba8:	6709                	lui	a4,0x2
    e887ebaa:	9762                	add	a4,a4,s8
    e887ebac:	3e872703          	lw	a4,1000(a4) # 23e8 <memcmp-0xe87fdc18>
        parametric_num = exp(inst->pinkNoiseNumerator / (float)(inst->blockInd + 1));
    e887ebb0:	40157553          	fcvt.s.d	fa0,fa0
        parametric_num *= (float)(inst->blockInd + 1);
    e887ebb4:	2705                	addiw	a4,a4,1
    e887ebb6:	d00777d3          	fcvt.s.w	fa5,a4
        parametric_exp = inst->pinkNoiseExp / (float)(inst->blockInd + 1);
    e887ebba:	18f47453          	fdiv.s	fs0,fs0,fa5
        parametric_num *= (float)(inst->blockInd + 1);
    e887ebbe:	10a7f4d3          	fmul.s	fs1,fa5,fa0
        parametric_noise = parametric_num / pow((float)kStartBand, parametric_exp);
    e887ebc2:	0004e797          	auipc	a5,0x4e
    e887ebc6:	70e7b507          	fld	fa0,1806(a5) # e88cd2d0 <kGenFuncTable+0x160>
    e887ebca:	420405d3          	fcvt.d.s	fa1,fs0
    e887ebce:	e428c0ef          	jal	ra,e880b210 <pow>
    e887ebd2:	420487d3          	fcvt.d.s	fa5,fs1
    e887ebd6:	1aa7f553          	fdiv.d	fa0,fa5,fa0
    e887ebda:	40157553          	fcvt.s.d	fa0,fa0
        theFilterTmp[i] /= (inst->initMagnEst[i] + (float)0.0001);
    e887ebde:	6789                	lui	a5,0x2
    e887ebe0:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887ebe4:	1018                	addi	a4,sp,32
    e887ebe6:	97ba                	add	a5,a5,a4
        if ((inst->pinkNoiseExp > 0.0f) && (i >= kStartBand)) {
    e887ebe8:	660d                	lui	a2,0x3
        theFilterTmp[i] /= (inst->initMagnEst[i] + (float)0.0001);
    e887ebea:	75f9                	lui	a1,0xffffe
        theFilterTmp[i] = (inst->initMagnEst[i] - inst->overdrive * parametric_noise);
    e887ebec:	c5460d93          	addi	s11,a2,-940 # 2c54 <memcmp-0xe87fd3ac>
        theFilterTmp[i] /= (inst->initMagnEst[i] + (float)0.0001);
    e887ebf0:	6d058693          	addi	a3,a1,1744 # ffffffffffffe6d0 <__DRAM0_INF_BASE+0xffffffff0000e6d0>
    e887ebf4:	96be                	add	a3,a3,a5
      for (i = 0; i < inst->magnLen; i++) {
    e887ebf6:	4901                	li	s2,0
        theFilterTmp[i] = (inst->initMagnEst[i] - inst->overdrive * parametric_noise);
    e887ebf8:	9de2                	add	s11,s11,s8
        theFilterTmp[i] /= (inst->initMagnEst[i] + (float)0.0001);
    e887ebfa:	0004e797          	auipc	a5,0x4e
    e887ebfe:	6767aa07          	flw	fs4,1654(a5) # e88cd270 <kGenFuncTable+0x100>
        noise[i] /= END_STARTUP_SHORT;
    e887ec02:	0004e797          	auipc	a5,0x4e
    e887ec06:	69e7aa87          	flw	fs5,1694(a5) # e88cd2a0 <kGenFuncTable+0x130>
      for (i = 0; i < inst->magnLen; i++) {
    e887ec0a:	018c2503          	lw	a0,24(s8)
    e887ec0e:	0009071b          	sext.w	a4,s2
    e887ec12:	b2a752e3          	bge	a4,a0,e887e736 <WebRtcNs_ProcessCore+0x5a2>
        if ((inst->pinkNoiseExp > 0.0f) && (i >= kStartBand)) {
    e887ec16:	00cc0533          	add	a0,s8,a2
    e887ec1a:	e5c52787          	flw	fa5,-420(a0)
    e887ec1e:	f0000753          	fmv.w.x	fa4,zero
    e887ec22:	a0f71553          	flt.s	a0,fa4,fa5
    e887ec26:	c515                	beqz	a0,e887ec52 <WebRtcNs_ProcessCore+0xabe>
    e887ec28:	4511                	li	a0,4
    e887ec2a:	02e55463          	bge	a0,a4,e887ec52 <WebRtcNs_ProcessCore+0xabe>
          parametric_noise = parametric_num / pow((float)i, parametric_exp);
    e887ec2e:	d0077553          	fcvt.s.w	fa0,a4
    e887ec32:	420405d3          	fcvt.d.s	fa1,fs0
    e887ec36:	e036                	sd	a3,0(sp)
    e887ec38:	42050553          	fcvt.d.s	fa0,fa0
    e887ec3c:	dd48c0ef          	jal	ra,e880b210 <pow>
    e887ec40:	420487d3          	fcvt.d.s	fa5,fs1
    e887ec44:	6682                	ld	a3,0(sp)
    e887ec46:	75f9                	lui	a1,0xffffe
    e887ec48:	1aa7f553          	fdiv.d	fa0,fa5,fa0
    e887ec4c:	660d                	lui	a2,0x3
    e887ec4e:	40157553          	fcvt.s.d	fa0,fa0
        theFilterTmp[i] = (inst->initMagnEst[i] - inst->overdrive * parametric_noise);
    e887ec52:	6709                	lui	a4,0x2
    e887ec54:	9762                	add	a4,a4,s8
    e887ec56:	452de70b          	flrw	fa4,s11,s2,2
    e887ec5a:	fdc72787          	flw	fa5,-36(a4) # 1fdc <memcmp-0xe87fe024>
        noise[i] *= (inst->blockInd);
    e887ec5e:	3e872803          	lw	a6,1000(a4)
        noise[i] /= END_STARTUP_SHORT;
    e887ec62:	6789                	lui	a5,0x2
        theFilterTmp[i] = (inst->initMagnEst[i] - inst->overdrive * parametric_noise);
    e887ec64:	70a7f7cb          	fnmsub.s	fa5,fa5,fa0,fa4
        theFilterTmp[i] /= (inst->initMagnEst[i] + (float)0.0001);
    e887ec68:	01477753          	fadd.s	fa4,fa4,fs4
        noise[i] /= END_STARTUP_SHORT;
    e887ec6c:	1018                	addi	a4,sp,32
    e887ec6e:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887ec72:	97ba                	add	a5,a5,a4
        tmpFloat2 = parametric_noise * (END_STARTUP_SHORT - inst->blockInd);
    e887ec74:	03200713          	li	a4,50
        theFilterTmp[i] /= (inst->initMagnEst[i] + (float)0.0001);
    e887ec78:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
        tmpFloat2 = parametric_noise * (END_STARTUP_SHORT - inst->blockInd);
    e887ec7c:	4107073b          	subw	a4,a4,a6
        noise[i] /= END_STARTUP_SHORT;
    e887ec80:	2c058513          	addi	a0,a1,704 # ffffffffffffe2c0 <__DRAM0_INF_BASE+0xffffffff0000e2c0>
    e887ec84:	953e                	add	a0,a0,a5
        noise[i] *= (inst->blockInd);
    e887ec86:	d00876d3          	fcvt.s.w	fa3,a6
        theFilterTmp[i] /= (inst->initMagnEst[i] + (float)0.0001);
    e887ec8a:	4526f78b          	fsrw	fa5,a3,s2,2
        tmpFloat2 = parametric_noise * (END_STARTUP_SHORT - inst->blockInd);
    e887ec8e:	d00777d3          	fcvt.s.w	fa5,a4
        noise[i] += (tmpFloat2 / (float)(inst->blockInd + 1));
    e887ec92:	0018071b          	addiw	a4,a6,1
    e887ec96:	d0077753          	fcvt.s.w	fa4,a4
        tmpFloat2 = parametric_noise * (END_STARTUP_SHORT - inst->blockInd);
    e887ec9a:	10a7f7d3          	fmul.s	fa5,fa5,fa0
        noise[i] += (tmpFloat2 / (float)(inst->blockInd + 1));
    e887ec9e:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
    e887eca2:	4525670b          	flrw	fa4,a0,s2,2
    e887eca6:	78d777c3          	fmadd.s	fa5,fa4,fa3,fa5
        noise[i] /= END_STARTUP_SHORT;
    e887ecaa:	1957f7d3          	fdiv.s	fa5,fa5,fs5
    e887ecae:	4525778b          	fsrw	fa5,a0,s2,2
      for (i = 0; i < inst->magnLen; i++) {
    e887ecb2:	0905                	addi	s2,s2,1
    e887ecb4:	bf99                	j	e887ec0a <WebRtcNs_ProcessCore+0xa76>
        tmpFloat3 = 0.0f;
    e887ecb6:	f0000453          	fmv.w.x	fs0,zero
    e887ecba:	bd75                	j	e887eb76 <WebRtcNs_ProcessCore+0x9e2>
  float   parametric_num = 0.0;
    e887ecbc:	f00004d3          	fmv.w.x	fs1,zero
  float   parametric_exp = 0.0;
    e887ecc0:	20948453          	fmv.s	fs0,fs1
    e887ecc4:	bf29                	j	e887ebde <WebRtcNs_ProcessCore+0xa4a>
      inst->featureData[5] /= (inst->blockInd + 1);
    e887ecc6:	668d                	lui	a3,0x3
    e887ecc8:	96e2                	add	a3,a3,s8
      inst->featureData[5] += signalEnergy;
    e887ecca:	a3c6a787          	flw	fa5,-1476(a3) # 2a3c <memcmp-0xe87fd5c4>
      inst->featureData[5] *= inst->blockInd;
    e887ecce:	d0077753          	fcvt.s.w	fa4,a4
      inst->featureData[5] /= (inst->blockInd + 1);
    e887ecd2:	2705                	addiw	a4,a4,1
      inst->featureData[5] += signalEnergy;
    e887ecd4:	98e7f9c3          	fmadd.s	fs3,fa5,fa4,fs3
      inst->featureData[5] /= (inst->blockInd + 1);
    e887ecd8:	d00777d3          	fcvt.s.w	fa5,a4
    e887ecdc:	18f9f7d3          	fdiv.s	fa5,fs3,fa5
    e887ece0:	a2f6ae27          	fsw	fa5,-1476(a3)
    e887ece4:	b48d                	j	e887e746 <WebRtcNs_ProcessCore+0x5b2>
      if (magn[i] > noise[i]) {
    e887ece6:	44ee678b          	flrw	fa5,t3,a4,2
    e887ecea:	44e5670b          	flrw	fa4,a0,a4,2
      snrLocPost[i] = (float)0.0;
    e887ecee:	0006a023          	sw	zero,0(a3)
      if (magn[i] > noise[i]) {
    e887ecf2:	a0f71f53          	flt.s	t5,fa4,fa5
    e887ecf6:	000f0a63          	beqz	t5,e887ed0a <WebRtcNs_ProcessCore+0xb76>
        snrLocPost[i] = magn[i] / (noise[i] + (float)0.0001) - (float)1.0;
    e887ecfa:	00d77753          	fadd.s	fa4,fa4,fa3
    e887ecfe:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
    e887ed02:	08c7f7d3          	fsub.s	fa5,fa5,fa2
    e887ed06:	00f6a027          	fsw	fa5,0(a3)
      previousEstimateStsa[i] = inst->magnPrev[i] / (inst->noisePrev[i] + (float)0.0001)
    e887ed0a:	64082787          	flw	fa5,1600(a6)
    e887ed0e:	01d80f33          	add	t5,a6,t4
    e887ed12:	0691                	addi	a3,a3,4
    e887ed14:	00d7f753          	fadd.s	fa4,fa5,fa3
    e887ed18:	844f2787          	flw	fa5,-1980(t5)
    e887ed1c:	0811                	addi	a6,a6,4
    e887ed1e:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
                                * (inst->smooth[i]);
    e887ed22:	ffc82707          	flw	fa4,-4(a6)
    e887ed26:	10e7f7d3          	fmul.s	fa5,fa5,fa4
                       * snrLocPost[i];
    e887ed2a:	ffc6a707          	flw	fa4,-4(a3)
    e887ed2e:	10b77753          	fmul.s	fa4,fa4,fa1
      previousEstimateStsa[i] = inst->magnPrev[i] / (inst->noisePrev[i] + (float)0.0001)
    e887ed32:	44e8f78b          	fsrw	fa5,a7,a4,2
      snrLocPrior[i] = DD_PR_SNR * previousEstimateStsa[i] + ((float)1.0 - DD_PR_SNR)
    e887ed36:	70a7f7c3          	fmadd.s	fa5,fa5,fa0,fa4
    e887ed3a:	44e6778b          	fsrw	fa5,a2,a4,2
    for (i = 0; i < inst->magnLen; i++) {
    e887ed3e:	0705                	addi	a4,a4,1
    e887ed40:	b469                	j	e887e7ca <WebRtcNs_ProcessCore+0x636>
          inst->featureData[5] = (float)0.5 * (inst->featureData[6]
    e887ed42:	670d                	lui	a4,0x3
    e887ed44:	9762                	add	a4,a4,s8
                                 / ((float)inst->modelUpdatePars[1]);
    e887ed46:	d006f753          	fcvt.s.w	fa4,a3
    e887ed4a:	a4072787          	flw	fa5,-1472(a4) # 2a40 <memcmp-0xe87fd5c0>
          inst->featureData[6] = (float)0.0;
    e887ed4e:	a4072023          	sw	zero,-1472(a4)
                                 / ((float)inst->modelUpdatePars[1]);
    e887ed52:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
                                               + inst->featureData[5]);
    e887ed56:	a3c72707          	flw	fa4,-1476(a4)
    e887ed5a:	00e7f7d3          	fadd.s	fa5,fa5,fa4
          inst->featureData[5] = (float)0.5 * (inst->featureData[6]
    e887ed5e:	0004e797          	auipc	a5,0x4e
    e887ed62:	5267a707          	flw	fa4,1318(a5) # e88cd284 <kGenFuncTable+0x114>
    e887ed66:	10e7f7d3          	fmul.s	fa5,fa5,fa4
    e887ed6a:	a2f72e27          	fsw	fa5,-1476(a4)
          inst->featureData[6] = (float)0.0;
    e887ed6e:	bc6d                	j	e887e828 <WebRtcNs_ProcessCore+0x694>
      probSpeech = probSpeechFinal[i];
    e887ed70:	44bd600b          	flrw	ft0,s10,a1,2
      noiseUpdateTmp = gammaNoiseTmp * inst->noisePrev[i] + ((float)1.0 - gammaNoiseTmp)
    e887ed74:	9d462687          	flw	fa3,-1580(a2) # 29d4 <memcmp-0xe87fd62c>
                       * (probNonSpeech * magn[i] + probSpeech * inst->noisePrev[i]);
    e887ed78:	44b8660b          	flrw	fa2,a6,a1,2
      probNonSpeech = (float)1.0 - probSpeech;
    e887ed7c:	0800f553          	fsub.s	fa0,ft1,ft0
                       * (probNonSpeech * magn[i] + probSpeech * inst->noisePrev[i]);
    e887ed80:	1006f753          	fmul.s	fa4,fa3,ft0
      if (probSpeech > PROB_RANGE) {
    e887ed84:	a00116d3          	flt.s	a3,ft2,ft0
        gammaNoiseTmp = SPEECH_UPDATE;
    e887ed88:	204205d3          	fmv.s	fa1,ft4
                       * (probNonSpeech * magn[i] + probSpeech * inst->noisePrev[i]);
    e887ed8c:	70a67543          	fmadd.s	fa0,fa2,fa0,fa4
      noiseUpdateTmp = gammaNoiseTmp * inst->noisePrev[i] + ((float)1.0 - gammaNoiseTmp)
    e887ed90:	08f0f753          	fsub.s	fa4,ft1,fa5
                       * (probNonSpeech * magn[i] + probSpeech * inst->noisePrev[i]);
    e887ed94:	10a77753          	fmul.s	fa4,fa4,fa0
      noiseUpdateTmp = gammaNoiseTmp * inst->noisePrev[i] + ((float)1.0 - gammaNoiseTmp)
    e887ed98:	70f6f743          	fmadd.s	fa4,fa3,fa5,fa4
      if (probSpeech > PROB_RANGE) {
    e887ed9c:	e299                	bnez	a3,e887eda2 <WebRtcNs_ProcessCore+0xc0e>
      gammaNoiseTmp = NOISE_UPDATE;
    e887ed9e:	203185d3          	fmv.s	fa1,ft3
      if (probSpeech < PROB_RANGE) {
    e887eda2:	a02016d3          	flt.s	a3,ft0,ft2
    e887eda6:	ca89                	beqz	a3,e887edb8 <WebRtcNs_ProcessCore+0xc24>
        inst->magnAvgPause[i] += GAMMA_PAUSE * (magn[i] - inst->magnAvgPause[i]);
    e887eda8:	00062007          	flw	ft0,0(a2)
    e887edac:	08067653          	fsub.s	fa2,fa2,ft0
    e887edb0:	00567643          	fmadd.s	fa2,fa2,ft5,ft0
    e887edb4:	00c62027          	fsw	fa2,0(a2)
      if (gammaNoiseTmp == gammaNoiseOld) {
    e887edb8:	a0f5a6d3          	feq.s	a3,fa1,fa5
    e887edbc:	c681                	beqz	a3,e887edc4 <WebRtcNs_ProcessCore+0xc30>
          noise[i] = noiseUpdateTmp;
    e887edbe:	44b5770b          	fsrw	fa4,a0,a1,2
    e887edc2:	a821                	j	e887edda <WebRtcNs_ProcessCore+0xc46>
        noise[i] = gammaNoiseTmp * inst->noisePrev[i] + ((float)1.0 - gammaNoiseTmp)
    e887edc4:	08b0f7d3          	fsub.s	fa5,ft1,fa1
                   * (probNonSpeech * magn[i] + probSpeech * inst->noisePrev[i]);
    e887edc8:	10a7f553          	fmul.s	fa0,fa5,fa0
        noise[i] = gammaNoiseTmp * inst->noisePrev[i] + ((float)1.0 - gammaNoiseTmp)
    e887edcc:	50b6f6c3          	fmadd.s	fa3,fa3,fa1,fa0
        if (noiseUpdateTmp < noise[i]) {
    e887edd0:	a0d716d3          	flt.s	a3,fa4,fa3
    e887edd4:	f6ed                	bnez	a3,e887edbe <WebRtcNs_ProcessCore+0xc2a>
        noise[i] = gammaNoiseTmp * inst->noisePrev[i] + ((float)1.0 - gammaNoiseTmp)
    e887edd6:	44b5768b          	fsrw	fa3,a0,a1,2
    for (i = 0; i < inst->magnLen; i++) {
    e887edda:	0585                	addi	a1,a1,1
    e887eddc:	0611                	addi	a2,a2,4
    gammaNoiseTmp = NOISE_UPDATE;
    e887edde:	20b587d3          	fmv.s	fa5,fa1
    e887ede2:	bcc9                	j	e887e8b4 <WebRtcNs_ProcessCore+0x720>
      if (magn[i] > noise[i]) {
    e887ede4:	44d5678b          	flrw	fa5,a0,a3,2
    e887ede8:	44d8670b          	flrw	fa4,a6,a3,2
    e887edec:	a0f71353          	flt.s	t1,fa4,fa5
    e887edf0:	02030863          	beqz	t1,e887ee20 <WebRtcNs_ProcessCore+0xc8c>
        currentEstimateStsa = magn[i] / (noise[i] + (float)0.0001) - (float)1.0;
    e887edf4:	00d77753          	fadd.s	fa4,fa4,fa3
    e887edf8:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
    e887edfc:	08c7f7d3          	fsub.s	fa5,fa5,fa2
                 * currentEstimateStsa;
    e887ee00:	10b7f7d3          	fmul.s	fa5,fa5,fa1
      snrPrior = DD_PR_SNR * previousEstimateStsa[i] + ((float)1.0 - DD_PR_SNR)
    e887ee04:	44d5e70b          	flrw	fa4,a1,a3,2
    e887ee08:	78a777c3          	fmadd.s	fa5,fa4,fa0,fa5
      tmpFloat1 = inst->overdrive + snrPrior;
    e887ee0c:	fdc8a707          	flw	fa4,-36(a7)
    e887ee10:	00e7f753          	fadd.s	fa4,fa5,fa4
      tmpFloat2 = (float)snrPrior / tmpFloat1;
    e887ee14:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
      theFilter[i] = (float)tmpFloat2;
    e887ee18:	44d6778b          	fsrw	fa5,a2,a3,2
    for (i = 0; i < inst->magnLen; i++) {
    e887ee1c:	0685                	addi	a3,a3,1
    e887ee1e:	b619                	j	e887e924 <WebRtcNs_ProcessCore+0x790>
      currentEstimateStsa = (float)0.0;
    e887ee20:	f00007d3          	fmv.w.x	fa5,zero
    e887ee24:	bff1                	j	e887ee00 <WebRtcNs_ProcessCore+0xc6c>
      if (theFilter[i] < inst->denoiseBound) {
    e887ee26:	fe08a787          	flw	fa5,-32(a7)
    e887ee2a:	0005a707          	flw	fa4,0(a1)
    e887ee2e:	a0f716d3          	flt.s	a3,fa4,fa5
    e887ee32:	c299                	beqz	a3,e887ee38 <WebRtcNs_ProcessCore+0xca4>
        theFilter[i] = inst->denoiseBound;
    e887ee34:	00f5a027          	fsw	fa5,0(a1)
      if (theFilter[i] > (float)1.0) {
    e887ee38:	0005a707          	flw	fa4,0(a1)
    e887ee3c:	a0e616d3          	flt.s	a3,fa2,fa4
    e887ee40:	c299                	beqz	a3,e887ee46 <WebRtcNs_ProcessCore+0xcb2>
        theFilter[i] = 1.0;
    e887ee42:	00c5a027          	fsw	fa2,0(a1)
      if (inst->blockInd < END_STARTUP_SHORT) {
    e887ee46:	3e88af03          	lw	t5,1000(a7)
    e887ee4a:	05ee4463          	blt	t3,t5,e887ee92 <WebRtcNs_ProcessCore+0xcfe>
        if (theFilterTmp[i] < inst->denoiseBound) {
    e887ee4e:	44c5670b          	flrw	fa4,a0,a2,2
    e887ee52:	a0f716d3          	flt.s	a3,fa4,fa5
    e887ee56:	c299                	beqz	a3,e887ee5c <WebRtcNs_ProcessCore+0xcc8>
          theFilterTmp[i] = inst->denoiseBound;
    e887ee58:	44c5778b          	fsrw	fa5,a0,a2,2
        if (theFilterTmp[i] > (float)1.0) {
    e887ee5c:	44c3678b          	flrw	fa5,t1,a2,2
    e887ee60:	a0f616d3          	flt.s	a3,fa2,fa5
    e887ee64:	c299                	beqz	a3,e887ee6a <WebRtcNs_ProcessCore+0xcd6>
          theFilterTmp[i] = 1.0;
    e887ee66:	44c3760b          	fsrw	fa2,t1,a2,2
        theFilterTmp[i] *= (END_STARTUP_SHORT - inst->blockInd);
    e887ee6a:	41ee86bb          	subw	a3,t4,t5
    e887ee6e:	44c5668b          	flrw	fa3,a0,a2,2
    e887ee72:	d006f7d3          	fcvt.s.w	fa5,a3
        theFilter[i] *= (inst->blockInd);
    e887ee76:	0005a707          	flw	fa4,0(a1)
        theFilterTmp[i] *= (END_STARTUP_SHORT - inst->blockInd);
    e887ee7a:	10d7f7d3          	fmul.s	fa5,fa5,fa3
        theFilter[i] *= (inst->blockInd);
    e887ee7e:	d00f76d3          	fcvt.s.w	fa3,t5
        theFilterTmp[i] *= (END_STARTUP_SHORT - inst->blockInd);
    e887ee82:	44c5778b          	fsrw	fa5,a0,a2,2
        theFilter[i] += theFilterTmp[i];
    e887ee86:	78d777c3          	fmadd.s	fa5,fa4,fa3,fa5
        theFilter[i] /= (END_STARTUP_SHORT);
    e887ee8a:	18b7f7d3          	fdiv.s	fa5,fa5,fa1
    e887ee8e:	00f5a027          	fsw	fa5,0(a1)
      inst->smooth[i] = theFilter[i];
    e887ee92:	0005a707          	flw	fa4,0(a1)
    e887ee96:	0591                	addi	a1,a1,4
    e887ee98:	44c9770b          	fsrw	fa4,s2,a2,2
      real[i] *= inst->smooth[i];
    e887ee9c:	44c4e78b          	flrw	fa5,s1,a2,2
    e887eea0:	10e7f7d3          	fmul.s	fa5,fa5,fa4
    e887eea4:	44c4f78b          	fsrw	fa5,s1,a2,2
      imag[i] *= inst->smooth[i];
    e887eea8:	44c8678b          	flrw	fa5,a6,a2,2
    e887eeac:	10e7f7d3          	fmul.s	fa5,fa5,fa4
    e887eeb0:	44c8778b          	fsrw	fa5,a6,a2,2
    for (i = 0; i < inst->magnLen; i++) {
    e887eeb4:	0605                	addi	a2,a2,1
    e887eeb6:	b4e1                	j	e887e97e <WebRtcNs_ProcessCore+0x7ea>
      inst->noisePrev[i] = noise[i];
    e887eeb8:	44d8678b          	flrw	fa5,a6,a3,2
    e887eebc:	44d5778b          	fsrw	fa5,a0,a3,2
      inst->magnPrev[i] = magn[i];
    e887eec0:	44d5e78b          	flrw	fa5,a1,a3,2
    e887eec4:	44d6778b          	fsrw	fa5,a2,a3,2
    for (i = 0; i < inst->magnLen; i++) {
    e887eec8:	0685                	addi	a3,a3,1
    e887eeca:	b4f5                	j	e887e9b6 <WebRtcNs_ProcessCore+0x822>
      winData[2 * i] = real[i];
    e887eecc:	44d4e78b          	flrw	fa5,s1,a3,2
    e887eed0:	00fba027          	fsw	fa5,0(s7)
      winData[2 * i + 1] = imag[i];
    e887eed4:	44d6678b          	flrw	fa5,a2,a3,2
    e887eed8:	00fba227          	fsw	fa5,4(s7)
    for (i = 1; i < inst->magnLen - 1; i++) {
    e887eedc:	b605                	j	e887e9fc <WebRtcNs_ProcessCore+0x868>
      real[i] = 2.0f * winData[i] / inst->anaLen; // fft scaling
    e887eede:	44e9e78b          	flrw	fa5,s3,a4,2
    e887eee2:	d006f753          	fcvt.s.w	fa4,a3
    e887eee6:	00f7f7d3          	fadd.s	fa5,fa5,fa5
    e887eeea:	18e7f7d3          	fdiv.s	fa5,fa5,fa4
    e887eeee:	44e4f78b          	fsrw	fa5,s1,a4,2
    for (i = 0; i < inst->anaLen; i++) {
    e887eef2:	0705                	addi	a4,a4,1
    e887eef4:	b62d                	j	e887ea1e <WebRtcNs_ProcessCore+0x88a>
        energy2 += (float)real[i] * (float)real[i];
    e887eef6:	44e4e78b          	flrw	fa5,s1,a4,2
    e887eefa:	0705                	addi	a4,a4,1
    e887eefc:	50f7f543          	fmadd.s	fa0,fa5,fa5,fa0
      for (i = 0; i < inst->anaLen; i++) {
    e887ef00:	0007061b          	sext.w	a2,a4
    e887ef04:	fed649e3          	blt	a2,a3,e887eef6 <WebRtcNs_ProcessCore+0xd62>
      gain = (float)sqrt(energy2 / (energy1 + (float)1.0));
    e887ef08:	0004e797          	auipc	a5,0x4e
    e887ef0c:	3787a407          	flw	fs0,888(a5) # e88cd280 <kGenFuncTable+0x110>
    e887ef10:	00897953          	fadd.s	fs2,fs2,fs0
    e887ef14:	19257553          	fdiv.s	fa0,fa0,fs2
    e887ef18:	42050553          	fcvt.d.s	fa0,fa0
    e887ef1c:	d548c0ef          	jal	ra,e880b470 <sqrt>
    e887ef20:	40157553          	fcvt.s.d	fa0,fa0
      if (gain > B_LIM) {
    e887ef24:	0004e797          	auipc	a5,0x4e
    e887ef28:	3607a787          	flw	fa5,864(a5) # e88cd284 <kGenFuncTable+0x114>
      factor1 = (float)1.0;
    e887ef2c:	20840753          	fmv.s	fa4,fs0
      if (gain > B_LIM) {
    e887ef30:	a0a79753          	flt.s	a4,fa5,fa0
    e887ef34:	c305                	beqz	a4,e887ef54 <WebRtcNs_ProcessCore+0xdc0>
        factor1 = (float)1.0 + (float)1.3 * (gain - B_LIM);
    e887ef36:	08f57753          	fsub.s	fa4,fa0,fa5
    e887ef3a:	0004e797          	auipc	a5,0x4e
    e887ef3e:	38a7a687          	flw	fa3,906(a5) # e88cd2c4 <kGenFuncTable+0x154>
    e887ef42:	40d77743          	fmadd.s	fa4,fa4,fa3,fs0
        if (gain * factor1 > (float)1.0) {
    e887ef46:	10e576d3          	fmul.s	fa3,fa0,fa4
    e887ef4a:	a0d41753          	flt.s	a4,fs0,fa3
    e887ef4e:	c319                	beqz	a4,e887ef54 <WebRtcNs_ProcessCore+0xdc0>
          factor1 = (float)1.0 / gain;
    e887ef50:	18a47753          	fdiv.s	fa4,fs0,fa0
      if (gain < B_LIM) {
    e887ef54:	a0f51753          	flt.s	a4,fa0,fa5
    e887ef58:	20070563          	beqz	a4,e887f162 <WebRtcNs_ProcessCore+0xfce>
        if (gain <= inst->denoiseBound) {
    e887ef5c:	6709                	lui	a4,0x2
    e887ef5e:	9762                	add	a4,a4,s8
    e887ef60:	fe072687          	flw	fa3,-32(a4) # 1fe0 <memcmp-0xe87fe020>
    e887ef64:	a0d50753          	fle.s	a4,fa0,fa3
    e887ef68:	c319                	beqz	a4,e887ef6e <WebRtcNs_ProcessCore+0xdda>
          gain = inst->denoiseBound;
    e887ef6a:	20d68553          	fmv.s	fa0,fa3
        factor2 = (float)1.0 - (float)0.3 * (B_LIM - gain);
    e887ef6e:	08a7f7d3          	fsub.s	fa5,fa5,fa0
    e887ef72:	0004e797          	auipc	a5,0x4e
    e887ef76:	30a7a507          	flw	fa0,778(a5) # e88cd27c <kGenFuncTable+0x10c>
    e887ef7a:	40a7f7cb          	fnmsub.s	fa5,fa5,fa0,fs0
      factor = inst->priorSpeechProb * factor1 + ((float)1.0 - inst->priorSpeechProb)
    e887ef7e:	670d                	lui	a4,0x3
    e887ef80:	9762                	add	a4,a4,s8
    e887ef82:	a2472687          	flw	fa3,-1500(a4) # 2a24 <memcmp-0xe87fd5dc>
    e887ef86:	08d47453          	fsub.s	fs0,fs0,fa3
               * factor2;
    e887ef8a:	10f47453          	fmul.s	fs0,fs0,fa5
      factor = inst->priorSpeechProb * factor1 + ((float)1.0 - inst->priorSpeechProb)
    e887ef8e:	40e6f443          	fmadd.s	fs0,fa3,fa4,fs0
    for (i = 0; i < inst->anaLen; i++) {
    e887ef92:	014c2603          	lw	a2,20(s8)
    e887ef96:	4701                	li	a4,0
    e887ef98:	428c0693          	addi	a3,s8,1064
    e887ef9c:	0007059b          	sext.w	a1,a4
    e887efa0:	1cc5c463          	blt	a1,a2,e887f168 <WebRtcNs_ProcessCore+0xfd4>
    for (i = inst->windShift; i < inst->blockLen + inst->windShift; i++) {
    e887efa4:	00cc2503          	lw	a0,12(s8)
    e887efa8:	004c2583          	lw	a1,4(s8)
      fout[i - inst->windShift] = inst->syntBuf[i];
    e887efac:	6789                	lui	a5,0x2
    e887efae:	76fd                	lui	a3,0xfffff
    e887efb0:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887efb4:	1004                	addi	s1,sp,32
    e887efb6:	04ac180b          	addsl	a6,s8,a0,2
    e887efba:	58068693          	addi	a3,a3,1408 # fffffffffffff580 <__DRAM0_INF_BASE+0xffffffff0000f580>
    e887efbe:	97a6                	add	a5,a5,s1
    for (i = inst->windShift; i < inst->blockLen + inst->windShift; i++) {
    e887efc0:	00a5833b          	addw	t1,a1,a0
    e887efc4:	42880813          	addi	a6,a6,1064
    e887efc8:	4701                	li	a4,0
      fout[i - inst->windShift] = inst->syntBuf[i];
    e887efca:	96be                	add	a3,a3,a5
    for (i = inst->windShift; i < inst->blockLen + inst->windShift; i++) {
    e887efcc:	00e508bb          	addw	a7,a0,a4
    e887efd0:	1a68cc63          	blt	a7,t1,e887f188 <WebRtcNs_ProcessCore+0xff4>
    memcpy(inst->syntBuf, inst->syntBuf + inst->blockLen,
    e887efd4:	428c0493          	addi	s1,s8,1064
           sizeof(float) * (inst->anaLen - inst->blockLen));
    e887efd8:	9e0d                	subw	a2,a2,a1
    memcpy(inst->syntBuf, inst->syntBuf + inst->blockLen,
    e887efda:	060a                	slli	a2,a2,0x2
    e887efdc:	04b4958b          	addsl	a1,s1,a1,2
    e887efe0:	8526                	mv	a0,s1
    e887efe2:	bbefd0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    memset(inst->syntBuf + inst->anaLen - inst->blockLen, 0,
    e887efe6:	004c2603          	lw	a2,4(s8)
    e887efea:	014c2503          	lw	a0,20(s8)
    e887efee:	4581                	li	a1,0
    e887eff0:	8d11                	sub	a0,a0,a2
    e887eff2:	04a4950b          	addsl	a0,s1,a0,2
    e887eff6:	060a                	slli	a2,a2,0x2
    e887eff8:	b9cfd0ef          	jal	ra,e887c394 <eLIBs_memset>
    inst->outLen = inst->blockLen - inst->blockLen10ms;
    e887effc:	004c2703          	lw	a4,4(s8)
    e887f000:	008c2603          	lw	a2,8(s8)
    e887f004:	40c7083b          	subw	a6,a4,a2
    e887f008:	010c2823          	sw	a6,16(s8)
    if (inst->blockLen > inst->blockLen10ms) {
    e887f00c:	1ae64263          	blt	a2,a4,e887f1b0 <WebRtcNs_ProcessCore+0x101c>
    dTmp = fout[i];
    e887f010:	6789                	lui	a5,0x2
    e887f012:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887f016:	1018                	addi	a4,sp,32
    e887f018:	97ba                	add	a5,a5,a4
    e887f01a:	767d                	lui	a2,0xfffff
    e887f01c:	58060613          	addi	a2,a2,1408 # fffffffffffff580 <__DRAM0_INF_BASE+0xffffffff0000f580>
    e887f020:	963e                	add	a2,a2,a5
      dTmp = WEBRTC_SPL_WORD16_MAX;
    e887f022:	4681                	li	a3,0
    if (dTmp < WEBRTC_SPL_WORD16_MIN) {
    e887f024:	0004e797          	auipc	a5,0x4e
    e887f028:	2807a707          	flw	fa4,640(a5) # e88cd2a4 <kGenFuncTable+0x134>
    } else if (dTmp > WEBRTC_SPL_WORD16_MAX) {
    e887f02c:	0004e797          	auipc	a5,0x4e
    e887f030:	27c7a687          	flw	fa3,636(a5) # e88cd2a8 <kGenFuncTable+0x138>
  for (i = 0; i < inst->blockLen10ms; i++) {
    e887f034:	008c2583          	lw	a1,8(s8)
    e887f038:	0006871b          	sext.w	a4,a3
    e887f03c:	18b74e63          	blt	a4,a1,e887f1d8 <WebRtcNs_ProcessCore+0x1044>
  if (flagHB == 1) {
    e887f040:	c20a0263          	beqz	s4,e887e464 <WebRtcNs_ProcessCore+0x2d0>
      inst->speechProbHB[i] = probSpeechFinal[i];
    e887f044:	6789                	lui	a5,0x2
    e887f046:	6619                	lui	a2,0x6
    e887f048:	75fd                	lui	a1,0xfffff
    e887f04a:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887f04e:	1008                	addi	a0,sp,32
    for (i = 0; i < inst->magnLen; i++) {
    e887f050:	018c2703          	lw	a4,24(s8)
      inst->speechProbHB[i] = probSpeechFinal[i];
    e887f054:	d9060613          	addi	a2,a2,-624 # 5d90 <memcmp-0xe87fa270>
    e887f058:	ce858593          	addi	a1,a1,-792 # ffffffffffffece8 <__DRAM0_INF_BASE+0xffffffff0000ece8>
    e887f05c:	97aa                	add	a5,a5,a0
    for (i = 0; i < inst->magnLen; i++) {
    e887f05e:	4681                	li	a3,0
      inst->speechProbHB[i] = probSpeechFinal[i];
    e887f060:	9662                	add	a2,a2,s8
    e887f062:	95be                	add	a1,a1,a5
    for (i = 0; i < inst->magnLen; i++) {
    e887f064:	0006851b          	sext.w	a0,a3
    e887f068:	18e54c63          	blt	a0,a4,e887f200 <WebRtcNs_ProcessCore+0x106c>
    for (i = inst->magnLen - deltaBweHB - 1; i < inst->magnLen - 1; i++) {
    e887f06c:	fff7059b          	addiw	a1,a4,-1
    e887f070:	6685                	lui	a3,0x1
    e887f072:	4085873b          	subw	a4,a1,s0
    e887f076:	76468693          	addi	a3,a3,1892 # 1764 <memcmp-0xe87fe89c>
    avgProbSpeechHB = 0.0;
    e887f07a:	f00004d3          	fmv.w.x	fs1,zero
    e887f07e:	96ba                	add	a3,a3,a4
    e887f080:	04dc168b          	addsl	a3,s8,a3,2
    for (i = inst->magnLen - deltaBweHB - 1; i < inst->magnLen - 1; i++) {
    e887f084:	863a                	mv	a2,a4
    e887f086:	18b64363          	blt	a2,a1,e887f20c <WebRtcNs_ProcessCore+0x1078>
    avgProbSpeechHB = avgProbSpeechHB / ((float)deltaBweHB);
    e887f08a:	d0047453          	fcvt.s.w	fs0,s0
    avgFilterGainHB = 0.0;
    e887f08e:	f0000553          	fmv.w.x	fa0,zero
    e887f092:	77670693          	addi	a3,a4,1910
    avgProbSpeechHB = avgProbSpeechHB / ((float)deltaBweHB);
    e887f096:	1884f4d3          	fdiv.s	fs1,fs1,fs0
    for (i = inst->magnLen - deltaGainHB - 1; i < inst->magnLen - 1; i++) {
    e887f09a:	04dc168b          	addsl	a3,s8,a3,2
    e887f09e:	16b74e63          	blt	a4,a1,e887f21a <WebRtcNs_ProcessCore+0x1086>
    avgProbSpeechHBTmp = (float)2.0 * avgProbSpeechHB - (float)1.0;
    e887f0a2:	0004e797          	auipc	a5,0x4e
    e887f0a6:	22a7a787          	flw	fa5,554(a5) # e88cd2cc <kGenFuncTable+0x15c>
    avgFilterGainHB = avgFilterGainHB / ((float)(deltaGainHB));
    e887f0aa:	18857453          	fdiv.s	fs0,fa0,fs0
    avgProbSpeechHBTmp = (float)2.0 * avgProbSpeechHB - (float)1.0;
    e887f0ae:	0004e797          	auipc	a5,0x4e
    e887f0b2:	21a7a507          	flw	fa0,538(a5) # e88cd2c8 <kGenFuncTable+0x158>
    e887f0b6:	78a4f543          	fmadd.s	fa0,fs1,fa0,fa5
    gainModHB = (float)0.5 * ((float)1.0 + (float)tanh(gainMapParHB * avgProbSpeechHBTmp));
    e887f0ba:	42050553          	fcvt.d.s	fa0,fa0
    e887f0be:	e938b0ef          	jal	ra,e880af50 <tanh>
    e887f0c2:	40157553          	fcvt.s.d	fa0,fa0
    e887f0c6:	0004e797          	auipc	a5,0x4e
    e887f0ca:	1ba7a707          	flw	fa4,442(a5) # e88cd280 <kGenFuncTable+0x110>
    e887f0ce:	0004e797          	auipc	a5,0x4e
    e887f0d2:	1b67a787          	flw	fa5,438(a5) # e88cd284 <kGenFuncTable+0x114>
    e887f0d6:	00e57553          	fadd.s	fa0,fa0,fa4
    if (avgProbSpeechHB >= (float)0.5) {
    e887f0da:	a0978753          	fle.s	a4,fa5,fs1
    gainModHB = (float)0.5 * ((float)1.0 + (float)tanh(gainMapParHB * avgProbSpeechHBTmp));
    e887f0de:	10f57553          	fmul.s	fa0,fa0,fa5
    if (avgProbSpeechHB >= (float)0.5) {
    e887f0e2:	14071363          	bnez	a4,e887f228 <WebRtcNs_ProcessCore+0x1094>
    gainTimeDomainHB = (float)0.5 * gainModHB + (float)0.5 * avgFilterGainHB;
    e887f0e6:	10f57553          	fmul.s	fa0,fa0,fa5
    e887f0ea:	50f47543          	fmadd.s	fa0,fs0,fa5,fa0
    if (gainTimeDomainHB < inst->denoiseBound) {
    e887f0ee:	6709                	lui	a4,0x2
    e887f0f0:	9762                	add	a4,a4,s8
    e887f0f2:	fe072787          	flw	fa5,-32(a4) # 1fe0 <memcmp-0xe87fe020>
    e887f0f6:	a0f51753          	flt.s	a4,fa0,fa5
    e887f0fa:	c319                	beqz	a4,e887f100 <WebRtcNs_ProcessCore+0xf6c>
      gainTimeDomainHB = inst->denoiseBound;
    e887f0fc:	20f78553          	fmv.s	fa0,fa5
    if (gainTimeDomainHB > (float)1.0) {
    e887f100:	a0a71753          	flt.s	a4,fa4,fa0
    e887f104:	c319                	beqz	a4,e887f10a <WebRtcNs_ProcessCore+0xf76>
      gainTimeDomainHB = 1.0;
    e887f106:	20e70553          	fmv.s	fa0,fa4
      dTmp = gainTimeDomainHB * inst->dataBufHB[i];
    e887f10a:	6605                	lui	a2,0x1
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887f10c:	4681                	li	a3,0
      dTmp = gainTimeDomainHB * inst->dataBufHB[i];
    e887f10e:	7e460613          	addi	a2,a2,2020 # 17e4 <memcmp-0xe87fe81c>
      if (dTmp < WEBRTC_SPL_WORD16_MIN) {
    e887f112:	0004e797          	auipc	a5,0x4e
    e887f116:	1927a707          	flw	fa4,402(a5) # e88cd2a4 <kGenFuncTable+0x134>
      } else if (dTmp > WEBRTC_SPL_WORD16_MAX) {
    e887f11a:	0004e797          	auipc	a5,0x4e
    e887f11e:	18e7a687          	flw	fa3,398(a5) # e88cd2a8 <kGenFuncTable+0x138>
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887f122:	008c2703          	lw	a4,8(s8)
    e887f126:	b2e6df63          	bge	a3,a4,e887e464 <WebRtcNs_ProcessCore+0x2d0>
      dTmp = gainTimeDomainHB * inst->dataBufHB[i];
    e887f12a:	00c68733          	add	a4,a3,a2
    e887f12e:	04ec170b          	addsl	a4,s8,a4,2
    e887f132:	00472787          	flw	fa5,4(a4)
    e887f136:	10f577d3          	fmul.s	fa5,fa0,fa5
      if (dTmp < WEBRTC_SPL_WORD16_MIN) {
    e887f13a:	a0e79753          	flt.s	a4,fa5,fa4
    e887f13e:	10071263          	bnez	a4,e887f242 <WebRtcNs_ProcessCore+0x10ae>
      } else if (dTmp > WEBRTC_SPL_WORD16_MAX) {
    e887f142:	a0f69753          	flt.s	a4,fa3,fa5
    e887f146:	c319                	beqz	a4,e887f14c <WebRtcNs_ProcessCore+0xfb8>
        dTmp = WEBRTC_SPL_WORD16_MAX;
    e887f148:	20d687d3          	fmv.s	fa5,fa3
      outFrameHB[i] = (short)dTmp;
    e887f14c:	c0079753          	fcvt.w.s	a4,fa5,rtz
    e887f150:	67c2                	ld	a5,16(sp)
    e887f152:	22d7d70b          	srh	a4,a5,a3,1
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887f156:	2685                	addiw	a3,a3,1
    e887f158:	b7e9                	j	e887f122 <WebRtcNs_ProcessCore+0xf8e>
    e887f15a:	4701                	li	a4,0
      energy2 = 0.0;
    e887f15c:	f0000553          	fmv.w.x	fa0,zero
    e887f160:	b345                	j	e887ef00 <WebRtcNs_ProcessCore+0xd6c>
      factor2 = (float)1.0;
    e887f162:	208407d3          	fmv.s	fa5,fs0
    e887f166:	bd21                	j	e887ef7e <WebRtcNs_ProcessCore+0xdea>
      inst->syntBuf[i] += factor * inst->window[i] * (float)real[i];
    e887f168:	020c3583          	ld	a1,32(s8)
    e887f16c:	44e6e70b          	flrw	fa4,a3,a4,2
    e887f170:	44e4e68b          	flrw	fa3,s1,a4,2
    e887f174:	44e5e78b          	flrw	fa5,a1,a4,2
    e887f178:	10f477d3          	fmul.s	fa5,fs0,fa5
    e887f17c:	70d7f7c3          	fmadd.s	fa5,fa5,fa3,fa4
    e887f180:	44e6f78b          	fsrw	fa5,a3,a4,2
    for (i = 0; i < inst->anaLen; i++) {
    e887f184:	0705                	addi	a4,a4,1
    e887f186:	bd19                	j	e887ef9c <WebRtcNs_ProcessCore+0xe08>
      fout[i - inst->windShift] = inst->syntBuf[i];
    e887f188:	44e8678b          	flrw	fa5,a6,a4,2
    e887f18c:	44e6f78b          	fsrw	fa5,a3,a4,2
    for (i = inst->windShift; i < inst->blockLen + inst->windShift; i++) {
    e887f190:	0705                	addi	a4,a4,1
    e887f192:	bd2d                	j	e887efcc <WebRtcNs_ProcessCore+0xe38>
        inst->outBuf[i] = fout[i + inst->blockLen10ms];
    e887f194:	00c7053b          	addw	a0,a4,a2
    e887f198:	04a6950b          	addsl	a0,a3,a0,2
    e887f19c:	58052787          	flw	fa5,1408(a0)
    e887f1a0:	44e5f78b          	fsrw	fa5,a1,a4,2
      for (i = 0; i < inst->outLen; i++) {
    e887f1a4:	0705                	addi	a4,a4,1
    e887f1a6:	0007051b          	sext.w	a0,a4
    e887f1aa:	ff0545e3          	blt	a0,a6,e887f194 <WebRtcNs_ProcessCore+0x1000>
    e887f1ae:	b58d                	j	e887f010 <WebRtcNs_ProcessCore+0xe7c>
        inst->outBuf[i] = fout[i + inst->blockLen10ms];
    e887f1b0:	6789                	lui	a5,0x2
    e887f1b2:	6685                	lui	a3,0x1
    e887f1b4:	f5078793          	addi	a5,a5,-176 # 1f50 <memcmp-0xe87fe0b0>
    e887f1b8:	1008                	addi	a0,sp,32
    e887f1ba:	82868593          	addi	a1,a3,-2008 # 828 <memcmp-0xe87ff7d8>
    e887f1be:	97aa                	add	a5,a5,a0
    e887f1c0:	4701                	li	a4,0
    e887f1c2:	95e2                	add	a1,a1,s8
    e887f1c4:	40d786b3          	sub	a3,a5,a3
    e887f1c8:	bff9                	j	e887f1a6 <WebRtcNs_ProcessCore+0x1012>
      fout[i] = inst->outBuf[i];
    e887f1ca:	44e6678b          	flrw	fa5,a2,a4,2
    e887f1ce:	44e6f78b          	fsrw	fa5,a3,a4,2
    for (i = 0; i < inst->blockLen10ms; i++) {
    e887f1d2:	0705                	addi	a4,a4,1
    e887f1d4:	93eff06f          	j	e887e312 <WebRtcNs_ProcessCore+0x17e>
    dTmp = fout[i];
    e887f1d8:	44d6678b          	flrw	fa5,a2,a3,2
    if (dTmp < WEBRTC_SPL_WORD16_MIN) {
    e887f1dc:	a0e79753          	flt.s	a4,fa5,fa4
    e887f1e0:	ef09                	bnez	a4,e887f1fa <WebRtcNs_ProcessCore+0x1066>
    } else if (dTmp > WEBRTC_SPL_WORD16_MAX) {
    e887f1e2:	a0f69753          	flt.s	a4,fa3,fa5
    e887f1e6:	c319                	beqz	a4,e887f1ec <WebRtcNs_ProcessCore+0x1058>
      dTmp = WEBRTC_SPL_WORD16_MAX;
    e887f1e8:	20d687d3          	fmv.s	fa5,fa3
    outFrame[i] = (short)dTmp;
    e887f1ec:	c0079753          	fcvt.w.s	a4,fa5,rtz
    e887f1f0:	67a2                	ld	a5,8(sp)
    e887f1f2:	22d7d70b          	srh	a4,a5,a3,1
  for (i = 0; i < inst->blockLen10ms; i++) {
    e887f1f6:	0685                	addi	a3,a3,1
    e887f1f8:	bd35                	j	e887f034 <WebRtcNs_ProcessCore+0xea0>
      dTmp = WEBRTC_SPL_WORD16_MIN;
    e887f1fa:	20e707d3          	fmv.s	fa5,fa4
    e887f1fe:	b7fd                	j	e887f1ec <WebRtcNs_ProcessCore+0x1058>
      inst->speechProbHB[i] = probSpeechFinal[i];
    e887f200:	44d5e78b          	flrw	fa5,a1,a3,2
    e887f204:	44d6778b          	fsrw	fa5,a2,a3,2
    for (i = 0; i < inst->magnLen; i++) {
    e887f208:	0685                	addi	a3,a3,1
    e887f20a:	bda9                	j	e887f064 <WebRtcNs_ProcessCore+0xed0>
      avgProbSpeechHB += inst->speechProbHB[i];
    e887f20c:	0006a707          	flw	fa4,0(a3)
    for (i = inst->magnLen - deltaBweHB - 1; i < inst->magnLen - 1; i++) {
    e887f210:	2605                	addiw	a2,a2,1
    e887f212:	0691                	addi	a3,a3,4
      avgProbSpeechHB += inst->speechProbHB[i];
    e887f214:	00e4f4d3          	fadd.s	fs1,fs1,fa4
    for (i = inst->magnLen - deltaBweHB - 1; i < inst->magnLen - 1; i++) {
    e887f218:	b5bd                	j	e887f086 <WebRtcNs_ProcessCore+0xef2>
      avgFilterGainHB += inst->smooth[i];
    e887f21a:	0006a787          	flw	fa5,0(a3)
    for (i = inst->magnLen - deltaGainHB - 1; i < inst->magnLen - 1; i++) {
    e887f21e:	2705                	addiw	a4,a4,1
    e887f220:	0691                	addi	a3,a3,4
      avgFilterGainHB += inst->smooth[i];
    e887f222:	00f57553          	fadd.s	fa0,fa0,fa5
    for (i = inst->magnLen - deltaGainHB - 1; i < inst->magnLen - 1; i++) {
    e887f226:	bda5                	j	e887f09e <WebRtcNs_ProcessCore+0xf0a>
      gainTimeDomainHB = (float)0.25 * gainModHB + (float)0.75 * avgFilterGainHB;
    e887f228:	0004e797          	auipc	a5,0x4e
    e887f22c:	0707a787          	flw	fa5,112(a5) # e88cd298 <kGenFuncTable+0x128>
    e887f230:	10f47453          	fmul.s	fs0,fs0,fa5
    e887f234:	0004e797          	auipc	a5,0x4e
    e887f238:	0607a787          	flw	fa5,96(a5) # e88cd294 <kGenFuncTable+0x124>
    e887f23c:	40f57543          	fmadd.s	fa0,fa0,fa5,fs0
    e887f240:	b57d                	j	e887f0ee <WebRtcNs_ProcessCore+0xf5a>
        dTmp = WEBRTC_SPL_WORD16_MIN;
    e887f242:	20e707d3          	fmv.s	fa5,fa4
    e887f246:	b719                	j	e887f14c <WebRtcNs_ProcessCore+0xfb8>

00000000e887f248 <bitrv2>:
static void bitrv2(int n, int *ip, float *a)
{
    int j, j1, k, k1, l, m, m2;
    float xr, xi, yr, yi;

    ip[0] = 0;
    e887f248:	0005a023          	sw	zero,0(a1)
    l = n;
    m = 1;
    e887f24c:	4685                	li	a3,1
    while ((m << 3) < l) {
    e887f24e:	0036979b          	slliw	a5,a3,0x3
    e887f252:	00a7cc63          	blt	a5,a0,e887f26a <bitrv2+0x22>
        for (j = 0; j < m; j++) {
            ip[m + j] = ip[j] + l;
        }
        m <<= 1;
    }
    m2 = 2 * m;
    e887f256:	0016981b          	slliw	a6,a3,0x1
    if ((m << 3) == l) {
    e887f25a:	1ea78b63          	beq	a5,a0,e887f450 <bitrv2+0x208>
    e887f25e:	00458e93          	addi	t4,a1,4
            a[j1 + 1] = yi;
            a[k1] = xr;
            a[k1 + 1] = xi;
        }
    } else {
        for (k = 1; k < m; k++) {
    e887f262:	4505                	li	a0,1
    e887f264:	14d54e63          	blt	a0,a3,e887f3c0 <bitrv2+0x178>
    e887f268:	8082                	ret
        l >>= 1;
    e887f26a:	8505                	srai	a0,a0,0x1
        for (j = 0; j < m; j++) {
    e887f26c:	4781                	li	a5,0
    e887f26e:	0007871b          	sext.w	a4,a5
    e887f272:	00d74563          	blt	a4,a3,e887f27c <bitrv2+0x34>
        m <<= 1;
    e887f276:	0016969b          	slliw	a3,a3,0x1
    e887f27a:	bfd1                	j	e887f24e <bitrv2+0x6>
            ip[m + j] = ip[j] + l;
    e887f27c:	44f5c70b          	lrw	a4,a1,a5,2
    e887f280:	00d7883b          	addw	a6,a5,a3
    e887f284:	0785                	addi	a5,a5,1
    e887f286:	9f29                	addw	a4,a4,a0
    e887f288:	4505d70b          	srw	a4,a1,a6,2
        for (j = 0; j < m; j++) {
    e887f28c:	b7cd                	j	e887f26e <bitrv2+0x26>
                j1 = 2 * j + ip[k];
    e887f28e:	0018971b          	slliw	a4,a7,0x1
    e887f292:	00f7043b          	addw	s0,a4,a5
                k1 = 2 * k + ip[j];
    e887f296:	4515c78b          	lrw	a5,a1,a7,2
                xr = a[j1];
    e887f29a:	00241f13          	slli	t5,s0,0x2
                xi = a[j1 + 1];
    e887f29e:	0f11                	addi	t5,t5,4
                k1 = 2 * k + ip[j];
    e887f2a0:	005783bb          	addw	t2,a5,t0
                yr = a[k1];
    e887f2a4:	4476660b          	flrw	fa2,a2,t2,2
    e887f2a8:	00239e93          	slli	t4,t2,0x2
                yi = a[k1 + 1];
    e887f2ac:	0e91                	addi	t4,t4,4
    e887f2ae:	41d6668b          	flrw	fa3,a2,t4,0
                xr = a[j1];
    e887f2b2:	4486670b          	flrw	fa4,a2,s0,2
                xi = a[j1 + 1];
    e887f2b6:	41e6678b          	flrw	fa5,a2,t5,0
                a[j1] = yr;
    e887f2ba:	4486760b          	fsrw	fa2,a2,s0,2
                j1 += m2;
    e887f2be:	0088043b          	addw	s0,a6,s0
                a[j1 + 1] = yi;
    e887f2c2:	41e6768b          	fsrw	fa3,a2,t5,0
                xr = a[j1];
    e887f2c6:	00241f13          	slli	t5,s0,0x2
                a[k1] = xr;
    e887f2ca:	4476770b          	fsrw	fa4,a2,t2,2
                k1 += 2 * m2;
    e887f2ce:	007e03bb          	addw	t2,t3,t2
                a[k1 + 1] = xi;
    e887f2d2:	41d6778b          	fsrw	fa5,a2,t4,0
                yr = a[k1];
    e887f2d6:	00239e93          	slli	t4,t2,0x2
    e887f2da:	4476660b          	flrw	fa2,a2,t2,2
                yi = a[k1 + 1];
    e887f2de:	0e91                	addi	t4,t4,4
    e887f2e0:	41d6668b          	flrw	fa3,a2,t4,0
                xi = a[j1 + 1];
    e887f2e4:	0f11                	addi	t5,t5,4
                xr = a[j1];
    e887f2e6:	4486670b          	flrw	fa4,a2,s0,2
                xi = a[j1 + 1];
    e887f2ea:	41e6678b          	flrw	fa5,a2,t5,0
                a[j1] = yr;
    e887f2ee:	4486760b          	fsrw	fa2,a2,s0,2
                j1 += m2;
    e887f2f2:	0088043b          	addw	s0,a6,s0
                a[j1 + 1] = yi;
    e887f2f6:	41e6768b          	fsrw	fa3,a2,t5,0
                xr = a[j1];
    e887f2fa:	00241f13          	slli	t5,s0,0x2
                a[k1] = xr;
    e887f2fe:	4476770b          	fsrw	fa4,a2,t2,2
                k1 -= m2;
    e887f302:	410383bb          	subw	t2,t2,a6
                a[k1 + 1] = xi;
    e887f306:	41d6778b          	fsrw	fa5,a2,t4,0
                yr = a[k1];
    e887f30a:	00239e93          	slli	t4,t2,0x2
    e887f30e:	4476660b          	flrw	fa2,a2,t2,2
                yi = a[k1 + 1];
    e887f312:	0e91                	addi	t4,t4,4
    e887f314:	41d6668b          	flrw	fa3,a2,t4,0
                xi = a[j1 + 1];
    e887f318:	0f11                	addi	t5,t5,4
    e887f31a:	41e6678b          	flrw	fa5,a2,t5,0
                xr = a[j1];
    e887f31e:	4486670b          	flrw	fa4,a2,s0,2
                a[j1] = yr;
    e887f322:	4486760b          	fsrw	fa2,a2,s0,2
                yr = a[k1];
    e887f326:	01c387bb          	addw	a5,t2,t3
                a[j1 + 1] = yi;
    e887f32a:	41e6768b          	fsrw	fa3,a2,t5,0
                xr = a[j1];
    e887f32e:	0104073b          	addw	a4,s0,a6
                a[k1] = xr;
    e887f332:	4476770b          	fsrw	fa4,a2,t2,2
                xr = a[j1];
    e887f336:	00271f13          	slli	t5,a4,0x2
                a[k1 + 1] = xi;
    e887f33a:	41d6778b          	fsrw	fa5,a2,t4,0
                yr = a[k1];
    e887f33e:	00279e93          	slli	t4,a5,0x2
    e887f342:	44f6660b          	flrw	fa2,a2,a5,2
                yi = a[k1 + 1];
    e887f346:	0e91                	addi	t4,t4,4
    e887f348:	41d6668b          	flrw	fa3,a2,t4,0
                xi = a[j1 + 1];
    e887f34c:	0f11                	addi	t5,t5,4
                xr = a[j1];
    e887f34e:	44e6670b          	flrw	fa4,a2,a4,2
                xi = a[j1 + 1];
    e887f352:	41e6678b          	flrw	fa5,a2,t5,0
                a[j1] = yr;
    e887f356:	44e6760b          	fsrw	fa2,a2,a4,2
                a[j1 + 1] = yi;
    e887f35a:	0885                	addi	a7,a7,1
    e887f35c:	41e6768b          	fsrw	fa3,a2,t5,0
                a[k1] = xr;
    e887f360:	44f6770b          	fsrw	fa4,a2,a5,2
                a[k1 + 1] = xi;
    e887f364:	41d6778b          	fsrw	fa5,a2,t4,0
            for (j = 0; j < k; j++) {
    e887f368:	0008871b          	sext.w	a4,a7
    e887f36c:	4465c78b          	lrw	a5,a1,t1,2
    e887f370:	f1f74fe3          	blt	a4,t6,e887f28e <bitrv2+0x46>
            j1 = 2 * k + m2 + ip[k];
    e887f374:	00a8073b          	addw	a4,a6,a0
    e887f378:	00f708bb          	addw	a7,a4,a5
            yr = a[k1];
    e887f37c:	0108873b          	addw	a4,a7,a6
    e887f380:	44e6660b          	flrw	fa2,a2,a4,2
    e887f384:	00271793          	slli	a5,a4,0x2
            yi = a[k1 + 1];
    e887f388:	0791                	addi	a5,a5,4
            xr = a[j1];
    e887f38a:	00289513          	slli	a0,a7,0x2
            yi = a[k1 + 1];
    e887f38e:	40f6668b          	flrw	fa3,a2,a5,0
            xi = a[j1 + 1];
    e887f392:	0511                	addi	a0,a0,4
            xr = a[j1];
    e887f394:	4516670b          	flrw	fa4,a2,a7,2
            xi = a[j1 + 1];
    e887f398:	40a6678b          	flrw	fa5,a2,a0,0
            a[j1] = yr;
    e887f39c:	4516760b          	fsrw	fa2,a2,a7,2
            a[j1 + 1] = yi;
    e887f3a0:	0305                	addi	t1,t1,1
    e887f3a2:	40a6768b          	fsrw	fa3,a2,a0,0
            a[k1] = xr;
    e887f3a6:	00030f9b          	sext.w	t6,t1
    e887f3aa:	44e6770b          	fsrw	fa4,a2,a4,2
            a[k1 + 1] = xi;
    e887f3ae:	40f6778b          	fsrw	fa5,a2,a5,0
        for (k = 0; k < m; k++) {
    e887f3b2:	08dfdc63          	bge	t6,a3,e887f44a <bitrv2+0x202>
    e887f3b6:	0013129b          	slliw	t0,t1,0x1
    e887f3ba:	8516                	mv	a0,t0
                k1 = 2 * k + ip[j];
    e887f3bc:	4881                	li	a7,0
    e887f3be:	b76d                	j	e887f368 <bitrv2+0x120>
            for (j = 0; j < k; j++) {
                j1 = 2 * j + ip[k];
                k1 = 2 * k + ip[j];
    e887f3c0:	0015129b          	slliw	t0,a0,0x1
    e887f3c4:	4881                	li	a7,0
                j1 = 2 * j + ip[k];
    e887f3c6:	000ea783          	lw	a5,0(t4) # 1000 <memcmp-0xe87ff000>
    e887f3ca:	0018971b          	slliw	a4,a7,0x1
    e887f3ce:	00f70fbb          	addw	t6,a4,a5
                k1 = 2 * k + ip[j];
    e887f3d2:	4515c78b          	lrw	a5,a1,a7,2
                xr = a[j1];
    e887f3d6:	002f9e13          	slli	t3,t6,0x2
                xi = a[j1 + 1];
    e887f3da:	0e11                	addi	t3,t3,4
                k1 = 2 * k + ip[j];
    e887f3dc:	00578f3b          	addw	t5,a5,t0
                yr = a[k1];
    e887f3e0:	45e6660b          	flrw	fa2,a2,t5,2
    e887f3e4:	002f1313          	slli	t1,t5,0x2
                yi = a[k1 + 1];
    e887f3e8:	0311                	addi	t1,t1,4
    e887f3ea:	4066668b          	flrw	fa3,a2,t1,0
                xi = a[j1 + 1];
    e887f3ee:	41c6678b          	flrw	fa5,a2,t3,0
                xr = a[j1];
    e887f3f2:	45f6670b          	flrw	fa4,a2,t6,2
                a[j1] = yr;
    e887f3f6:	45f6760b          	fsrw	fa2,a2,t6,2
                a[k1 + 1] = xi;
                j1 += m2;
                k1 += m2;
                xr = a[j1];
                xi = a[j1 + 1];
                yr = a[k1];
    e887f3fa:	010f07bb          	addw	a5,t5,a6
                a[j1 + 1] = yi;
    e887f3fe:	41c6768b          	fsrw	fa3,a2,t3,0
                xr = a[j1];
    e887f402:	010f873b          	addw	a4,t6,a6
                a[k1] = xr;
    e887f406:	45e6770b          	fsrw	fa4,a2,t5,2
                xr = a[j1];
    e887f40a:	00271e13          	slli	t3,a4,0x2
                a[k1 + 1] = xi;
    e887f40e:	4066778b          	fsrw	fa5,a2,t1,0
                yr = a[k1];
    e887f412:	00279313          	slli	t1,a5,0x2
    e887f416:	44f6660b          	flrw	fa2,a2,a5,2
                yi = a[k1 + 1];
    e887f41a:	0311                	addi	t1,t1,4
    e887f41c:	4066668b          	flrw	fa3,a2,t1,0
                xi = a[j1 + 1];
    e887f420:	0e11                	addi	t3,t3,4
                xr = a[j1];
    e887f422:	44e6670b          	flrw	fa4,a2,a4,2
                xi = a[j1 + 1];
    e887f426:	41c6678b          	flrw	fa5,a2,t3,0
                a[j1] = yr;
    e887f42a:	44e6760b          	fsrw	fa2,a2,a4,2
                a[j1 + 1] = yi;
    e887f42e:	0885                	addi	a7,a7,1
    e887f430:	41c6768b          	fsrw	fa3,a2,t3,0
                a[k1] = xr;
    e887f434:	44f6770b          	fsrw	fa4,a2,a5,2
            for (j = 0; j < k; j++) {
    e887f438:	0008879b          	sext.w	a5,a7
                a[k1 + 1] = xi;
    e887f43c:	4066778b          	fsrw	fa5,a2,t1,0
            for (j = 0; j < k; j++) {
    e887f440:	f8a7c3e3          	blt	a5,a0,e887f3c6 <bitrv2+0x17e>
        for (k = 1; k < m; k++) {
    e887f444:	2505                	addiw	a0,a0,1
    e887f446:	0e91                	addi	t4,t4,4
    e887f448:	bd31                	j	e887f264 <bitrv2+0x1c>
            }
        }
    }
}
    e887f44a:	6422                	ld	s0,8(sp)
    e887f44c:	0141                	addi	sp,sp,16
    e887f44e:	8082                	ret
                k1 += 2 * m2;
    e887f450:	4301                	li	t1,0
        for (k = 0; k < m; k++) {
    e887f452:	00030f9b          	sext.w	t6,t1
                k1 += 2 * m2;
    e887f456:	00269e1b          	slliw	t3,a3,0x2
        for (k = 0; k < m; k++) {
    e887f45a:	00dfc363          	blt	t6,a3,e887f460 <bitrv2+0x218>
    e887f45e:	8082                	ret
{
    e887f460:	1141                	addi	sp,sp,-16
    e887f462:	e422                	sd	s0,8(sp)
    e887f464:	bf89                	j	e887f3b6 <bitrv2+0x16e>

00000000e887f466 <cft1st>:
    int j, k1, k2;
    float wk1r, wk1i, wk2r, wk2i, wk3r, wk3i;
    float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;

    x0r = a[0] + a[2];
    x0i = a[1] + a[3];
    e887f466:	00c5a687          	flw	fa3,12(a1)
    e887f46a:	0045a787          	flw	fa5,4(a1)
    x0r = a[0] + a[2];
    e887f46e:	0085a607          	flw	fa2,8(a1)
    x1r = a[0] - a[2];
    x1i = a[1] - a[3];
    x2r = a[4] + a[6];
    e887f472:	0185a187          	flw	ft3,24(a1)
    x0r = a[0] + a[2];
    e887f476:	0005a707          	flw	fa4,0(a1)
    x0i = a[1] + a[3];
    e887f47a:	00d7f5d3          	fadd.s	fa1,fa5,fa3
    x1i = a[1] - a[3];
    e887f47e:	08d7f7d3          	fsub.s	fa5,fa5,fa3
    x2r = a[4] + a[6];
    e887f482:	0105a687          	flw	fa3,16(a1)
    x0r = a[0] + a[2];
    e887f486:	00c77553          	fadd.s	fa0,fa4,fa2
    x2i = a[5] + a[7];
    e887f48a:	01c5a107          	flw	ft2,28(a1)
    x2r = a[4] + a[6];
    e887f48e:	0036f0d3          	fadd.s	ft1,fa3,ft3
    x1r = a[0] - a[2];
    e887f492:	08c77753          	fsub.s	fa4,fa4,fa2
    x2i = a[5] + a[7];
    e887f496:	0145a607          	flw	fa2,20(a1)
    x3r = a[4] - a[6];
    e887f49a:	0836f6d3          	fsub.s	fa3,fa3,ft3
    wk1r = w[2];
    x0r = a[8] + a[10];
    x0i = a[9] + a[11];
    x1r = a[8] - a[10];
    x1i = a[9] - a[11];
    x2r = a[12] + a[14];
    e887f49e:	0385a207          	flw	ft4,56(a1)
    x2i = a[5] + a[7];
    e887f4a2:	00267053          	fadd.s	ft0,fa2,ft2
    x3i = a[5] - a[7];
    e887f4a6:	08267653          	fsub.s	fa2,fa2,ft2
    a[0] = x0r + x2r;
    e887f4aa:	00157153          	fadd.s	ft2,fa0,ft1
    a[4] = x0r - x2r;
    e887f4ae:	08157553          	fsub.s	fa0,fa0,ft1
    x0r = x3i + x1r;
    x0i = x3r - x1i;
    a[14] = wk1r * (x0i - x0r);
    a[15] = wk1r * (x0i + x0r);
    k1 = 0;
    for (j = 16; j < n; j += 16) {
    e887f4b2:	4689                	li	a3,2
    a[0] = x0r + x2r;
    e887f4b4:	0025a027          	fsw	ft2,0(a1)
    a[1] = x0i + x2i;
    e887f4b8:	0005f153          	fadd.s	ft2,fa1,ft0
    a[5] = x0i - x2i;
    e887f4bc:	0805f5d3          	fsub.s	fa1,fa1,ft0
    a[4] = x0r - x2r;
    e887f4c0:	00a5a827          	fsw	fa0,16(a1)
    a[1] = x0i + x2i;
    e887f4c4:	0025a227          	fsw	ft2,4(a1)
    a[5] = x0i - x2i;
    e887f4c8:	00b5aa27          	fsw	fa1,20(a1)
    a[2] = x1r - x3i;
    e887f4cc:	08c775d3          	fsub.s	fa1,fa4,fa2
    a[6] = x1r + x3i;
    e887f4d0:	00c77753          	fadd.s	fa4,fa4,fa2
    x0i = a[9] + a[11];
    e887f4d4:	02c5a607          	flw	fa2,44(a1)
    a[2] = x1r - x3i;
    e887f4d8:	00b5a427          	fsw	fa1,8(a1)
    a[3] = x1i + x3r;
    e887f4dc:	00d7f5d3          	fadd.s	fa1,fa5,fa3
    a[7] = x1i - x3r;
    e887f4e0:	08d7f7d3          	fsub.s	fa5,fa5,fa3
    a[6] = x1r + x3i;
    e887f4e4:	00e5ac27          	fsw	fa4,24(a1)
    x0i = a[9] + a[11];
    e887f4e8:	0245a707          	flw	fa4,36(a1)
    x0r = a[8] + a[10];
    e887f4ec:	0285a687          	flw	fa3,40(a1)
    a[3] = x1i + x3r;
    e887f4f0:	00b5a627          	fsw	fa1,12(a1)
    x0i = a[9] + a[11];
    e887f4f4:	00c771d3          	fadd.s	ft3,fa4,fa2
    a[7] = x1i - x3r;
    e887f4f8:	00f5ae27          	fsw	fa5,28(a1)
    x1i = a[9] - a[11];
    e887f4fc:	08c77653          	fsub.s	fa2,fa4,fa2
    x0r = a[8] + a[10];
    e887f500:	0205a787          	flw	fa5,32(a1)
    x2r = a[12] + a[14];
    e887f504:	0305a707          	flw	fa4,48(a1)
    x2i = a[13] + a[15];
    e887f508:	03c5a587          	flw	fa1,60(a1)
    x0r = a[8] + a[10];
    e887f50c:	00d7f053          	fadd.s	ft0,fa5,fa3
    x2r = a[12] + a[14];
    e887f510:	00477153          	fadd.s	ft2,fa4,ft4
    x1r = a[8] - a[10];
    e887f514:	08d7f7d3          	fsub.s	fa5,fa5,fa3
    x2i = a[13] + a[15];
    e887f518:	0345a687          	flw	fa3,52(a1)
    wk1r = w[2];
    e887f51c:	00862507          	flw	fa0,8(a2)
    x3r = a[12] - a[14];
    e887f520:	08477753          	fsub.s	fa4,fa4,ft4
    x2i = a[13] + a[15];
    e887f524:	00b6f0d3          	fadd.s	ft1,fa3,fa1
    x3i = a[13] - a[15];
    e887f528:	08b6f5d3          	fsub.s	fa1,fa3,fa1
    a[8] = x0r + x2r;
    e887f52c:	002076d3          	fadd.s	fa3,ft0,ft2
    a[13] = x0r - x2r;
    e887f530:	08207053          	fsub.s	ft0,ft0,ft2
    a[8] = x0r + x2r;
    e887f534:	02d5a027          	fsw	fa3,32(a1)
    a[9] = x0i + x2i;
    e887f538:	0011f6d3          	fadd.s	fa3,ft3,ft1
    a[12] = x2i - x0i;
    e887f53c:	0830f0d3          	fsub.s	ft1,ft1,ft3
    a[13] = x0r - x2r;
    e887f540:	0205aa27          	fsw	ft0,52(a1)
    a[9] = x0i + x2i;
    e887f544:	02d5a227          	fsw	fa3,36(a1)
    a[12] = x2i - x0i;
    e887f548:	0215a827          	fsw	ft1,48(a1)
    x0r = x1r - x3i;
    e887f54c:	08b7f6d3          	fsub.s	fa3,fa5,fa1
    x0i = x1i + x3r;
    e887f550:	00e670d3          	fadd.s	ft1,fa2,fa4
    x0r = x3i + x1r;
    e887f554:	00b7f7d3          	fadd.s	fa5,fa5,fa1
    x0i = x3r - x1i;
    e887f558:	08c77753          	fsub.s	fa4,fa4,fa2
    a[10] = wk1r * (x0r - x0i);
    e887f55c:	0816f053          	fsub.s	ft0,fa3,ft1
    a[11] = wk1r * (x0r + x0i);
    e887f560:	0016f6d3          	fadd.s	fa3,fa3,ft1
    a[10] = wk1r * (x0r - x0i);
    e887f564:	10a07053          	fmul.s	ft0,ft0,fa0
    a[11] = wk1r * (x0r + x0i);
    e887f568:	10a6f6d3          	fmul.s	fa3,fa3,fa0
    a[10] = wk1r * (x0r - x0i);
    e887f56c:	0205a427          	fsw	ft0,40(a1)
    a[11] = wk1r * (x0r + x0i);
    e887f570:	02d5a627          	fsw	fa3,44(a1)
    a[14] = wk1r * (x0i - x0r);
    e887f574:	08f776d3          	fsub.s	fa3,fa4,fa5
    a[15] = wk1r * (x0i + x0r);
    e887f578:	00e7f7d3          	fadd.s	fa5,fa5,fa4
    a[14] = wk1r * (x0i - x0r);
    e887f57c:	10a6f6d3          	fmul.s	fa3,fa3,fa0
    a[15] = wk1r * (x0i + x0r);
    e887f580:	10a7f7d3          	fmul.s	fa5,fa5,fa0
    a[14] = wk1r * (x0i - x0r);
    e887f584:	02d5ac27          	fsw	fa3,56(a1)
    a[15] = wk1r * (x0i + x0r);
    e887f588:	02f5ae27          	fsw	fa5,60(a1)
    for (j = 16; j < n; j += 16) {
    e887f58c:	0036981b          	slliw	a6,a3,0x3
    e887f590:	00a84363          	blt	a6,a0,e887f596 <cft1st+0x130>
        x0r = x1r + x3i;
        x0i = x1i - x3r;
        a[j + 14] = wk3r * x0r - wk3i * x0i;
        a[j + 15] = wk3r * x0i + wk3i * x0r;
    }
}
    e887f594:	8082                	ret
        wk2r = w[k1];
    e887f596:	0006879b          	sext.w	a5,a3
    e887f59a:	44f6660b          	flrw	fa2,a2,a5,2
        wk2i = w[k1 + 1];
    e887f59e:	04f6178b          	addsl	a5,a2,a5,2
    e887f5a2:	0047a787          	flw	fa5,4(a5)
        x0r = a[j] + a[j + 2];
    e887f5a6:	00281793          	slli	a5,a6,0x2
        x0i = a[j + 1] + a[j + 3];
    e887f5aa:	00c78e13          	addi	t3,a5,12
    e887f5ae:	00478293          	addi	t0,a5,4
    e887f5b2:	41c5e18b          	flrw	ft3,a1,t3,0
    e887f5b6:	4055e70b          	flrw	fa4,a1,t0,0
        x0r = a[j] + a[j + 2];
    e887f5ba:	00878e93          	addi	t4,a5,8
        x2r = a[j + 4] + a[j + 6];
    e887f5be:	01878313          	addi	t1,a5,24
    e887f5c2:	01078f93          	addi	t6,a5,16
        x0r = a[j] + a[j + 2];
    e887f5c6:	41d5e20b          	flrw	ft4,a1,t4,0
        x2r = a[j + 4] + a[j + 6];
    e887f5ca:	4065e88b          	flrw	fa7,a1,t1,0
        x0r = a[j] + a[j + 2];
    e887f5ce:	4505e68b          	flrw	fa3,a1,a6,2
        x0i = a[j + 1] + a[j + 3];
    e887f5d2:	00377553          	fadd.s	fa0,fa4,ft3
        x1i = a[j + 1] - a[j + 3];
    e887f5d6:	08377753          	fsub.s	fa4,fa4,ft3
        x2r = a[j + 4] + a[j + 6];
    e887f5da:	41f5e18b          	flrw	ft3,a1,t6,0
        x0r = a[j] + a[j + 2];
    e887f5de:	0046f053          	fadd.s	ft0,fa3,ft4
        x2i = a[j + 5] + a[j + 7];
    e887f5e2:	01478f13          	addi	t5,a5,20
        x2r = a[j + 4] + a[j + 6];
    e887f5e6:	0111f3d3          	fadd.s	ft7,ft3,fa7
        x2i = a[j + 5] + a[j + 7];
    e887f5ea:	01c78893          	addi	a7,a5,28
    e887f5ee:	4115e80b          	flrw	fa6,a1,a7,0
        x1r = a[j] - a[j + 2];
    e887f5f2:	0846f6d3          	fsub.s	fa3,fa3,ft4
        x2i = a[j + 5] + a[j + 7];
    e887f5f6:	41e5e20b          	flrw	ft4,a1,t5,0
        k2 = 2 * k1;
    e887f5fa:	0016971b          	slliw	a4,a3,0x1
        wk1r = w[k2];
    e887f5fe:	44e6608b          	flrw	ft1,a2,a4,2
        x2i = a[j + 5] + a[j + 7];
    e887f602:	01027353          	fadd.s	ft6,ft4,fa6
        x3i = a[j + 5] - a[j + 7];
    e887f606:	09027253          	fsub.s	ft4,ft4,fa6
        a[j] = x0r + x2r;
    e887f60a:	00707853          	fadd.s	fa6,ft0,ft7
        wk1i = w[k2 + 1];
    e887f60e:	04e6170b          	addsl	a4,a2,a4,2
    e887f612:	00472107          	flw	ft2,4(a4)
        x0r -= x2r;
    e887f616:	08707053          	fsub.s	ft0,ft0,ft7
        x3r = a[j + 4] - a[j + 6];
    e887f61a:	0911f1d3          	fsub.s	ft3,ft3,fa7
        a[j] = x0r + x2r;
    e887f61e:	4505f80b          	fsrw	fa6,a1,a6,2
        a[j + 1] = x0i + x2i;
    e887f622:	00657853          	fadd.s	fa6,fa0,ft6
        x0i -= x2i;
    e887f626:	08657553          	fsub.s	fa0,fa0,ft6
        wk3r = wk1r - 2 * wk2i * wk1i;
    e887f62a:	00f7f5d3          	fadd.s	fa1,fa5,fa5
        x0i = a[j + 9] + a[j + 11];
    e887f62e:	02c78813          	addi	a6,a5,44
    e887f632:	2689                	addiw	a3,a3,2
        a[j + 1] = x0i + x2i;
    e887f634:	4055f80b          	fsrw	fa6,a1,t0,0
        a[j + 4] = wk2r * x0r - wk2i * x0i;
    e887f638:	10a7f353          	fmul.s	ft6,fa5,fa0
        wk3r = wk1r - 2 * wk2i * wk1i;
    e887f63c:	0825f2cb          	fnmsub.s	ft5,fa1,ft2,ft1
        wk3i = 2 * wk2i * wk1r - wk1i;
    e887f640:	1015f5c7          	fmsub.s	fa1,fa1,ft1,ft2
        a[j + 4] = wk2r * x0r - wk2i * x0i;
    e887f644:	30067347          	fmsub.s	ft6,fa2,ft0,ft6
        a[j + 5] = wk2r * x0i + wk2i * x0r;
    e887f648:	1007f053          	fmul.s	ft0,fa5,ft0
        a[j + 12] = -wk2i * x0r - wk2r * x0i;
    e887f64c:	20f797d3          	fneg.s	fa5,fa5
        a[j + 4] = wk2r * x0r - wk2i * x0i;
    e887f650:	41f5f30b          	fsrw	ft6,a1,t6,0
        a[j + 5] = wk2r * x0i + wk2i * x0r;
    e887f654:	00a67543          	fmadd.s	fa0,fa2,fa0,ft0
        x0i = x1i + x3r;
    e887f658:	00377053          	fadd.s	ft0,fa4,ft3
        x0r = x1r - x3i;
    e887f65c:	0846f353          	fsub.s	ft6,fa3,ft4
        x0i = x1i - x3r;
    e887f660:	08377753          	fsub.s	fa4,fa4,ft3
        x0r = x1r + x3i;
    e887f664:	0046f6d3          	fadd.s	fa3,fa3,ft4
        a[j + 5] = wk2r * x0i + wk2i * x0r;
    e887f668:	41e5f50b          	fsrw	fa0,a1,t5,0
        a[j + 2] = wk1r * x0r - wk1i * x0i;
    e887f66c:	10017553          	fmul.s	fa0,ft2,ft0
        a[j + 3] = wk1r * x0i + wk1i * x0r;
    e887f670:	10617153          	fmul.s	ft2,ft2,ft6
        x0r = a[j + 8] + a[j + 10];
    e887f674:	02078f13          	addi	t5,a5,32
        a[j + 2] = wk1r * x0r - wk1i * x0i;
    e887f678:	5060f547          	fmsub.s	fa0,ft1,ft6,fa0
        a[j + 3] = wk1r * x0i + wk1i * x0r;
    e887f67c:	1000f0c3          	fmadd.s	ft1,ft1,ft0,ft2
        a[j + 2] = wk1r * x0r - wk1i * x0i;
    e887f680:	41d5f50b          	fsrw	fa0,a1,t4,0
        a[j + 6] = wk3r * x0r - wk3i * x0i;
    e887f684:	10e5f553          	fmul.s	fa0,fa1,fa4
        a[j + 3] = wk1r * x0i + wk1i * x0r;
    e887f688:	41c5f08b          	fsrw	ft1,a1,t3,0
        x0i = a[j + 9] + a[j + 11];
    e887f68c:	02478e93          	addi	t4,a5,36
        x2r = a[j + 12] + a[j + 14];
    e887f690:	03078e13          	addi	t3,a5,48
        a[j + 6] = wk3r * x0r - wk3i * x0i;
    e887f694:	50d2f547          	fmsub.s	fa0,ft5,fa3,fa0
        a[j + 7] = wk3r * x0i + wk3i * x0r;
    e887f698:	10d5f6d3          	fmul.s	fa3,fa1,fa3
        wk3r = wk1r - 2 * wk2r * wk1i;
    e887f69c:	00c675d3          	fadd.s	fa1,fa2,fa2
        a[j + 6] = wk3r * x0r - wk3i * x0i;
    e887f6a0:	4065f50b          	fsrw	fa0,a1,t1,0
        a[j + 7] = wk3r * x0i + wk3i * x0r;
    e887f6a4:	68e2f6c3          	fmadd.s	fa3,ft5,fa4,fa3
        x2i = a[j + 13] + a[j + 15];
    e887f6a8:	03478313          	addi	t1,a5,52
        a[j + 7] = wk3r * x0i + wk3i * x0r;
    e887f6ac:	4115f68b          	fsrw	fa3,a1,a7,0
        x0i = a[j + 9] + a[j + 11];
    e887f6b0:	4105e08b          	flrw	ft1,a1,a6,0
    e887f6b4:	41d5e70b          	flrw	fa4,a1,t4,0
        wk1r = w[k2 + 2];
    e887f6b8:	00872507          	flw	fa0,8(a4)
        wk1i = w[k2 + 3];
    e887f6bc:	00c72007          	flw	ft0,12(a4)
        x0r = a[j + 8] + a[j + 10];
    e887f6c0:	02878893          	addi	a7,a5,40
        x2r = a[j + 12] + a[j + 14];
    e887f6c4:	03878713          	addi	a4,a5,56
        x0r = a[j + 8] + a[j + 10];
    e887f6c8:	4115e10b          	flrw	ft2,a1,a7,0
    e887f6cc:	41e5e68b          	flrw	fa3,a1,t5,0
        x2r = a[j + 12] + a[j + 14];
    e887f6d0:	40e5e88b          	flrw	fa7,a1,a4,0
        x0i = a[j + 9] + a[j + 11];
    e887f6d4:	001771d3          	fadd.s	ft3,fa4,ft1
        x1i = a[j + 9] - a[j + 11];
    e887f6d8:	08177753          	fsub.s	fa4,fa4,ft1
        x2r = a[j + 12] + a[j + 14];
    e887f6dc:	41c5e08b          	flrw	ft1,a1,t3,0
        x0r = a[j + 8] + a[j + 10];
    e887f6e0:	0026f253          	fadd.s	ft4,fa3,ft2
        x2i = a[j + 13] + a[j + 15];
    e887f6e4:	03c78793          	addi	a5,a5,60
        x2r = a[j + 12] + a[j + 14];
    e887f6e8:	0110f3d3          	fadd.s	ft7,ft1,fa7
        x2i = a[j + 13] + a[j + 15];
    e887f6ec:	40f5e80b          	flrw	fa6,a1,a5,0
        x1r = a[j + 8] - a[j + 10];
    e887f6f0:	0826f6d3          	fsub.s	fa3,fa3,ft2
        x2i = a[j + 13] + a[j + 15];
    e887f6f4:	4065e10b          	flrw	ft2,a1,t1,0
        x3r = a[j + 12] - a[j + 14];
    e887f6f8:	0910f0d3          	fsub.s	ft1,ft1,fa7
        wk3r = wk1r - 2 * wk2r * wk1i;
    e887f6fc:	5005f2cb          	fnmsub.s	ft5,fa1,ft0,fa0
        x2i = a[j + 13] + a[j + 15];
    e887f700:	01017353          	fadd.s	ft6,ft2,fa6
        x3i = a[j + 13] - a[j + 15];
    e887f704:	09017153          	fsub.s	ft2,ft2,fa6
        a[j + 8] = x0r + x2r;
    e887f708:	00727853          	fadd.s	fa6,ft4,ft7
        x0r -= x2r;
    e887f70c:	08727253          	fsub.s	ft4,ft4,ft7
        wk3i = 2 * wk2r * wk1r - wk1i;
    e887f710:	00a5f5c7          	fmsub.s	fa1,fa1,fa0,ft0
        a[j + 8] = x0r + x2r;
    e887f714:	41e5f80b          	fsrw	fa6,a1,t5,0
        a[j + 9] = x0i + x2i;
    e887f718:	0061f853          	fadd.s	fa6,ft3,ft6
        x0i -= x2i;
    e887f71c:	0861f1d3          	fsub.s	ft3,ft3,ft6
        a[j + 9] = x0i + x2i;
    e887f720:	41d5f80b          	fsrw	fa6,a1,t4,0
        a[j + 12] = -wk2i * x0r - wk2r * x0i;
    e887f724:	10367353          	fmul.s	ft6,fa2,ft3
        a[j + 13] = -wk2i * x0i + wk2r * x0r;
    e887f728:	10467653          	fmul.s	fa2,fa2,ft4
        a[j + 12] = -wk2i * x0r - wk2r * x0i;
    e887f72c:	3047f347          	fmsub.s	ft6,fa5,ft4,ft6
        a[j + 13] = -wk2i * x0i + wk2r * x0r;
    e887f730:	6037f7c3          	fmadd.s	fa5,fa5,ft3,fa2
        x0i = x1i + x3r;
    e887f734:	00177653          	fadd.s	fa2,fa4,ft1
        x0r = x1r - x3i;
    e887f738:	0826f1d3          	fsub.s	ft3,fa3,ft2
        x0i = x1i - x3r;
    e887f73c:	08177753          	fsub.s	fa4,fa4,ft1
        a[j + 12] = -wk2i * x0r - wk2r * x0i;
    e887f740:	41c5f30b          	fsrw	ft6,a1,t3,0
        a[j + 13] = -wk2i * x0i + wk2r * x0r;
    e887f744:	4065f78b          	fsrw	fa5,a1,t1,0
        a[j + 10] = wk1r * x0r - wk1i * x0i;
    e887f748:	10c077d3          	fmul.s	fa5,ft0,fa2
        x0r = x1r + x3i;
    e887f74c:	0026f6d3          	fadd.s	fa3,fa3,ft2
        a[j + 11] = wk1r * x0i + wk1i * x0r;
    e887f750:	10307053          	fmul.s	ft0,ft0,ft3
        a[j + 10] = wk1r * x0r - wk1i * x0i;
    e887f754:	783577c7          	fmsub.s	fa5,fa0,ft3,fa5
        a[j + 11] = wk1r * x0i + wk1i * x0r;
    e887f758:	00c57543          	fmadd.s	fa0,fa0,fa2,ft0
        a[j + 10] = wk1r * x0r - wk1i * x0i;
    e887f75c:	4115f78b          	fsrw	fa5,a1,a7,0
        a[j + 14] = wk3r * x0r - wk3i * x0i;
    e887f760:	10e5f7d3          	fmul.s	fa5,fa1,fa4
        a[j + 11] = wk1r * x0i + wk1i * x0r;
    e887f764:	4105f50b          	fsrw	fa0,a1,a6,0
        a[j + 14] = wk3r * x0r - wk3i * x0i;
    e887f768:	78d2f7c7          	fmsub.s	fa5,ft5,fa3,fa5
        a[j + 15] = wk3r * x0i + wk3i * x0r;
    e887f76c:	10d5f6d3          	fmul.s	fa3,fa1,fa3
        a[j + 14] = wk3r * x0r - wk3i * x0i;
    e887f770:	40e5f78b          	fsrw	fa5,a1,a4,0
        a[j + 15] = wk3r * x0i + wk3i * x0r;
    e887f774:	68e2f6c3          	fmadd.s	fa3,ft5,fa4,fa3
    e887f778:	40f5f68b          	fsrw	fa3,a1,a5,0
    for (j = 16; j < n; j += 16) {
    e887f77c:	bd01                	j	e887f58c <cft1st+0x126>

00000000e887f77e <cftmdl>:


static void cftmdl(int n, int l, float *a, float *w)
{
    e887f77e:	7139                	addi	sp,sp,-64
    int j, j1, j2, j3, k, k1, k2, m, m2;
    float wk1r, wk1i, wk2r, wk2i, wk3r, wk3i;
    float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;

    m = l << 2;
    e887f780:	0025931b          	slliw	t1,a1,0x2
    e887f784:	0015971b          	slliw	a4,a1,0x1
{
    e887f788:	fc5a                	sd	s6,56(sp)
    e887f78a:	e422                	sd	s0,8(sp)
    e887f78c:	e826                	sd	s1,16(sp)
    e887f78e:	ec4a                	sd	s2,24(sp)
    e887f790:	f04e                	sd	s3,32(sp)
    e887f792:	f452                	sd	s4,40(sp)
    e887f794:	f856                	sd	s5,48(sp)
    m = l << 2;
    e887f796:	8e9a                	mv	t4,t1
    for (j = 0; j < l; j += 2) {
    e887f798:	88ba                	mv	a7,a4
    e887f79a:	4781                	li	a5,0
    e887f79c:	0005881b          	sext.w	a6,a1
    e887f7a0:	02b7cf63          	blt	a5,a1,e887f7de <cftmdl+0x60>
        a[j1] = x1r - x3i;
        a[j1 + 1] = x1i + x3r;
        a[j3] = x1r + x3i;
        a[j3 + 1] = x1i - x3r;
    }
    wk1r = w[2];
    e887f7a4:	488d                	li	a7,3
    e887f7a6:	030888bb          	mulw	a7,a7,a6
    e887f7aa:	0086a507          	flw	fa0,8(a3)
    for (j = m; j < l + m; j += 2) {
    e887f7ae:	879a                	mv	a5,t1
    e887f7b0:	006585bb          	addw	a1,a1,t1
    e887f7b4:	0cb7c863          	blt	a5,a1,e887f884 <cftmdl+0x106>
        x0i = x3r - x1i;
        a[j3] = wk1r * (x0i - x0r);
        a[j3 + 1] = wk1r * (x0i + x0r);
    }
    k1 = 0;
    m2 = 2 * m;
    e887f7b8:	001e9f9b          	slliw	t6,t4,0x1
    for (k = m2; k < n; k += m2) {
    e887f7bc:	00bf8e3b          	addw	t3,t6,a1
    k1 = 0;
    e887f7c0:	4f01                	li	t5,0
    e887f7c2:	00be85bb          	addw	a1,t4,a1
    for (k = m2; k < n; k += m2) {
    e887f7c6:	8efe                	mv	t4,t6
    e887f7c8:	18aec263          	blt	t4,a0,e887f94c <cftmdl+0x1ce>
            x0i = x1i - x3r;
            a[j3] = wk3r * x0r - wk3i * x0i;
            a[j3 + 1] = wk3r * x0i + wk3i * x0r;
        }
    }
}
    e887f7cc:	6422                	ld	s0,8(sp)
    e887f7ce:	7b62                	ld	s6,56(sp)
    e887f7d0:	64c2                	ld	s1,16(sp)
    e887f7d2:	6962                	ld	s2,24(sp)
    e887f7d4:	7982                	ld	s3,32(sp)
    e887f7d6:	7a22                	ld	s4,40(sp)
    e887f7d8:	7ac2                	ld	s5,48(sp)
    e887f7da:	6121                	addi	sp,sp,64
    e887f7dc:	8082                	ret
        x0r = a[j] + a[j1];
    e887f7de:	0107843b          	addw	s0,a5,a6
    e887f7e2:	00279293          	slli	t0,a5,0x2
    e887f7e6:	00241f13          	slli	t5,s0,0x2
        x0i = a[j + 1] + a[j1 + 1];
    e887f7ea:	0291                	addi	t0,t0,4
    e887f7ec:	0f11                	addi	t5,t5,4
    e887f7ee:	41e6668b          	flrw	fa3,a2,t5,0
    e887f7f2:	4056678b          	flrw	fa5,a2,t0,0
        x2r = a[j2] + a[j3];
    e887f7f6:	010883bb          	addw	t2,a7,a6
        x0r = a[j] + a[j1];
    e887f7fa:	44f6670b          	flrw	fa4,a2,a5,2
    e887f7fe:	4486660b          	flrw	fa2,a2,s0,2
        x2r = a[j2] + a[j3];
    e887f802:	4476618b          	flrw	ft3,a2,t2,2
        x0i = a[j + 1] + a[j1 + 1];
    e887f806:	00d7f5d3          	fadd.s	fa1,fa5,fa3
        x1i = a[j + 1] - a[j1 + 1];
    e887f80a:	08d7f7d3          	fsub.s	fa5,fa5,fa3
        x2r = a[j2] + a[j3];
    e887f80e:	4516668b          	flrw	fa3,a2,a7,2
        x0r = a[j] + a[j1];
    e887f812:	00c77553          	fadd.s	fa0,fa4,fa2
        x2r = a[j2] + a[j3];
    e887f816:	00289f93          	slli	t6,a7,0x2
    e887f81a:	0036f0d3          	fadd.s	ft1,fa3,ft3
    e887f81e:	00239e13          	slli	t3,t2,0x2
        x2i = a[j2 + 1] + a[j3 + 1];
    e887f822:	0f91                	addi	t6,t6,4
    e887f824:	0e11                	addi	t3,t3,4
    e887f826:	41c6610b          	flrw	ft2,a2,t3,0
        x1r = a[j] - a[j1];
    e887f82a:	08c77753          	fsub.s	fa4,fa4,fa2
        x2i = a[j2 + 1] + a[j3 + 1];
    e887f82e:	41f6660b          	flrw	fa2,a2,t6,0
        x3r = a[j2] - a[j3];
    e887f832:	0836f6d3          	fsub.s	fa3,fa3,ft3
        x2i = a[j2 + 1] + a[j3 + 1];
    e887f836:	00267053          	fadd.s	ft0,fa2,ft2
        x3i = a[j2 + 1] - a[j3 + 1];
    e887f83a:	08267653          	fsub.s	fa2,fa2,ft2
        a[j] = x0r + x2r;
    e887f83e:	00157153          	fadd.s	ft2,fa0,ft1
        a[j2] = x0r - x2r;
    e887f842:	08157553          	fsub.s	fa0,fa0,ft1
        a[j] = x0r + x2r;
    e887f846:	44f6710b          	fsrw	ft2,a2,a5,2
        a[j + 1] = x0i + x2i;
    e887f84a:	0005f153          	fadd.s	ft2,fa1,ft0
        a[j2 + 1] = x0i - x2i;
    e887f84e:	0805f5d3          	fsub.s	fa1,fa1,ft0
    for (j = 0; j < l; j += 2) {
    e887f852:	2789                	addiw	a5,a5,2
        a[j + 1] = x0i + x2i;
    e887f854:	4056710b          	fsrw	ft2,a2,t0,0
        a[j2] = x0r - x2r;
    e887f858:	4516750b          	fsrw	fa0,a2,a7,2
        a[j2 + 1] = x0i - x2i;
    e887f85c:	2889                	addiw	a7,a7,2
    e887f85e:	41f6758b          	fsrw	fa1,a2,t6,0
        a[j1] = x1r - x3i;
    e887f862:	08c775d3          	fsub.s	fa1,fa4,fa2
        a[j3] = x1r + x3i;
    e887f866:	00c77753          	fadd.s	fa4,fa4,fa2
        a[j1] = x1r - x3i;
    e887f86a:	4486758b          	fsrw	fa1,a2,s0,2
        a[j1 + 1] = x1i + x3r;
    e887f86e:	00d7f5d3          	fadd.s	fa1,fa5,fa3
        a[j3 + 1] = x1i - x3r;
    e887f872:	08d7f7d3          	fsub.s	fa5,fa5,fa3
        a[j1 + 1] = x1i + x3r;
    e887f876:	41e6758b          	fsrw	fa1,a2,t5,0
        a[j3] = x1r + x3i;
    e887f87a:	4476770b          	fsrw	fa4,a2,t2,2
        a[j3 + 1] = x1i - x3r;
    e887f87e:	41c6778b          	fsrw	fa5,a2,t3,0
    for (j = 0; j < l; j += 2) {
    e887f882:	bf39                	j	e887f7a0 <cftmdl+0x22>
        x0r = a[j] + a[j1];
    e887f884:	0107843b          	addw	s0,a5,a6
    e887f888:	00279393          	slli	t2,a5,0x2
    e887f88c:	00241f93          	slli	t6,s0,0x2
        x0i = a[j + 1] + a[j1 + 1];
    e887f890:	0391                	addi	t2,t2,4
    e887f892:	0f91                	addi	t6,t6,4
    e887f894:	4076670b          	flrw	fa4,a2,t2,0
    e887f898:	41f6660b          	flrw	fa2,a2,t6,0
        x2r = a[j2] + a[j3];
    e887f89c:	00e784bb          	addw	s1,a5,a4
    e887f8a0:	01178e3b          	addw	t3,a5,a7
        x0r = a[j] + a[j1];
    e887f8a4:	44f6678b          	flrw	fa5,a2,a5,2
    e887f8a8:	4486668b          	flrw	fa3,a2,s0,2
        x2r = a[j2] + a[j3];
    e887f8ac:	45c6620b          	flrw	ft4,a2,t3,2
        x0i = a[j + 1] + a[j1 + 1];
    e887f8b0:	00c771d3          	fadd.s	ft3,fa4,fa2
        x1i = a[j + 1] - a[j1 + 1];
    e887f8b4:	08c77653          	fsub.s	fa2,fa4,fa2
        x2r = a[j2] + a[j3];
    e887f8b8:	4496670b          	flrw	fa4,a2,s1,2
        x0r = a[j] + a[j1];
    e887f8bc:	00d7f053          	fadd.s	ft0,fa5,fa3
        x2r = a[j2] + a[j3];
    e887f8c0:	00249293          	slli	t0,s1,0x2
    e887f8c4:	00477153          	fadd.s	ft2,fa4,ft4
    e887f8c8:	002e1f13          	slli	t5,t3,0x2
        x2i = a[j2 + 1] + a[j3 + 1];
    e887f8cc:	0291                	addi	t0,t0,4
    e887f8ce:	0f11                	addi	t5,t5,4
    e887f8d0:	41e6658b          	flrw	fa1,a2,t5,0
        x1r = a[j] - a[j1];
    e887f8d4:	08d7f7d3          	fsub.s	fa5,fa5,fa3
        x2i = a[j2 + 1] + a[j3 + 1];
    e887f8d8:	4056668b          	flrw	fa3,a2,t0,0
        x3r = a[j2] - a[j3];
    e887f8dc:	08477753          	fsub.s	fa4,fa4,ft4
        x2i = a[j2 + 1] + a[j3 + 1];
    e887f8e0:	00b6f0d3          	fadd.s	ft1,fa3,fa1
        x3i = a[j2 + 1] - a[j3 + 1];
    e887f8e4:	08b6f5d3          	fsub.s	fa1,fa3,fa1
        a[j] = x0r + x2r;
    e887f8e8:	002076d3          	fadd.s	fa3,ft0,ft2
        a[j2 + 1] = x0r - x2r;
    e887f8ec:	08207053          	fsub.s	ft0,ft0,ft2
        a[j] = x0r + x2r;
    e887f8f0:	44f6768b          	fsrw	fa3,a2,a5,2
        a[j + 1] = x0i + x2i;
    e887f8f4:	0011f6d3          	fadd.s	fa3,ft3,ft1
        a[j2] = x2i - x0i;
    e887f8f8:	0830f0d3          	fsub.s	ft1,ft1,ft3
    for (j = m; j < l + m; j += 2) {
    e887f8fc:	2789                	addiw	a5,a5,2
        a[j + 1] = x0i + x2i;
    e887f8fe:	4076768b          	fsrw	fa3,a2,t2,0
        x0r = x1r - x3i;
    e887f902:	08b7f6d3          	fsub.s	fa3,fa5,fa1
        a[j2] = x2i - x0i;
    e887f906:	4496708b          	fsrw	ft1,a2,s1,2
        x0i = x1i + x3r;
    e887f90a:	00e670d3          	fadd.s	ft1,fa2,fa4
        a[j2 + 1] = x0r - x2r;
    e887f90e:	4056700b          	fsrw	ft0,a2,t0,0
        x0r = x3i + x1r;
    e887f912:	00b7f7d3          	fadd.s	fa5,fa5,fa1
        x0i = x3r - x1i;
    e887f916:	08c77753          	fsub.s	fa4,fa4,fa2
        a[j1] = wk1r * (x0r - x0i);
    e887f91a:	0816f053          	fsub.s	ft0,fa3,ft1
        a[j1 + 1] = wk1r * (x0r + x0i);
    e887f91e:	0016f6d3          	fadd.s	fa3,fa3,ft1
        a[j1] = wk1r * (x0r - x0i);
    e887f922:	10a07053          	fmul.s	ft0,ft0,fa0
        a[j1 + 1] = wk1r * (x0r + x0i);
    e887f926:	10a6f6d3          	fmul.s	fa3,fa3,fa0
        a[j1] = wk1r * (x0r - x0i);
    e887f92a:	4486700b          	fsrw	ft0,a2,s0,2
        a[j1 + 1] = wk1r * (x0r + x0i);
    e887f92e:	41f6768b          	fsrw	fa3,a2,t6,0
        a[j3] = wk1r * (x0i - x0r);
    e887f932:	08f776d3          	fsub.s	fa3,fa4,fa5
        a[j3 + 1] = wk1r * (x0i + x0r);
    e887f936:	00e7f7d3          	fadd.s	fa5,fa5,fa4
        a[j3] = wk1r * (x0i - x0r);
    e887f93a:	10a6f6d3          	fmul.s	fa3,fa3,fa0
        a[j3 + 1] = wk1r * (x0i + x0r);
    e887f93e:	10a7f7d3          	fmul.s	fa5,fa5,fa0
        a[j3] = wk1r * (x0i - x0r);
    e887f942:	45c6768b          	fsrw	fa3,a2,t3,2
        a[j3 + 1] = wk1r * (x0i + x0r);
    e887f946:	41e6778b          	fsrw	fa5,a2,t5,0
    for (j = m; j < l + m; j += 2) {
    e887f94a:	b5ad                	j	e887f7b4 <cftmdl+0x36>
        k1 += 2;
    e887f94c:	2f09                	addiw	t5,t5,2
        wk2i = w[k1 + 1];
    e887f94e:	05e6928b          	addsl	t0,a3,t5,2
    e887f952:	0042a687          	flw	fa3,4(t0) # 6fa88004 <memcmp-0x78d77ffc>
        wk1r = w[k2];
    e887f956:	001f179b          	slliw	a5,t5,0x1
    e887f95a:	44f6e18b          	flrw	ft3,a3,a5,2
        wk3r = wk1r - 2 * wk2i * wk1i;
    e887f95e:	00d6f053          	fadd.s	ft0,fa3,fa3
        wk1i = w[k2 + 1];
    e887f962:	04f6978b          	addsl	a5,a3,a5,2
    e887f966:	0047a207          	flw	ft4,4(a5)
        wk2r = w[k1];
    e887f96a:	45e6e50b          	flrw	fa0,a3,t5,2
        for (j = k; j < l + k; j += 2) {
    e887f96e:	82f6                	mv	t0,t4
        wk3r = wk1r - 2 * wk2i * wk1i;
    e887f970:	1840734b          	fnmsub.s	ft6,ft0,ft4,ft3
        wk3i = 2 * wk2i * wk1r - wk1i;
    e887f974:	20307047          	fmsub.s	ft0,ft0,ft3,ft4
        for (j = k; j < l + k; j += 2) {
    e887f978:	84ae                	mv	s1,a1
    e887f97a:	0292ca63          	blt	t0,s1,e887f9ae <cftmdl+0x230>
        wk3r = wk1r - 2 * wk2r * wk1i;
    e887f97e:	00a57053          	fadd.s	ft0,fa0,fa0
        wk1r = w[k2 + 2];
    e887f982:	0087a187          	flw	ft3,8(a5)
        wk1i = w[k2 + 3];
    e887f986:	00c7a207          	flw	ft4,12(a5)
            a[j2] = -wk2i * x0r - wk2r * x0i;
    e887f98a:	20d696d3          	fneg.s	fa3,fa3
    e887f98e:	01d307bb          	addw	a5,t1,t4
        wk3r = wk1r - 2 * wk2r * wk1i;
    e887f992:	1840734b          	fnmsub.s	ft6,ft0,ft4,ft3
        wk3i = 2 * wk2r * wk1r - wk1i;
    e887f996:	20307047          	fmsub.s	ft0,ft0,ft3,ft4
        for (j = k + m; j < l + (k + m); j += 2) {
    e887f99a:	83f2                	mv	t2,t3
    e887f99c:	0e77c563          	blt	a5,t2,e887fa86 <cftmdl+0x308>
    for (k = m2; k < n; k += m2) {
    e887f9a0:	01fe8ebb          	addw	t4,t4,t6
    e887f9a4:	01fe0e3b          	addw	t3,t3,t6
    e887f9a8:	00bf85bb          	addw	a1,t6,a1
    e887f9ac:	bd31                	j	e887f7c8 <cftmdl+0x4a>
            x0r = a[j] + a[j1];
    e887f9ae:	01028a3b          	addw	s4,t0,a6
    e887f9b2:	00229b13          	slli	s6,t0,0x2
    e887f9b6:	002a1913          	slli	s2,s4,0x2
            x0i = a[j + 1] + a[j1 + 1];
    e887f9ba:	0b11                	addi	s6,s6,4
    e887f9bc:	0911                	addi	s2,s2,4
    e887f9be:	4126608b          	flrw	ft1,a2,s2,0
    e887f9c2:	4166678b          	flrw	fa5,a2,s6,0
            x2r = a[j2] + a[j3];
    e887f9c6:	00e28abb          	addw	s5,t0,a4
    e887f9ca:	011283bb          	addw	t2,t0,a7
            x0r = a[j] + a[j1];
    e887f9ce:	4456670b          	flrw	fa4,a2,t0,2
    e887f9d2:	4546610b          	flrw	ft2,a2,s4,2
            x2r = a[j2] + a[j3];
    e887f9d6:	4476688b          	flrw	fa7,a2,t2,2
            x0i = a[j + 1] + a[j1 + 1];
    e887f9da:	0017f653          	fadd.s	fa2,fa5,ft1
            x1i = a[j + 1] - a[j1 + 1];
    e887f9de:	0817f7d3          	fsub.s	fa5,fa5,ft1
            x2r = a[j2] + a[j3];
    e887f9e2:	4556608b          	flrw	ft1,a2,s5,2
            x0r = a[j] + a[j1];
    e887f9e6:	002775d3          	fadd.s	fa1,fa4,ft2
            x2r = a[j2] + a[j3];
    e887f9ea:	002a9993          	slli	s3,s5,0x2
    e887f9ee:	0110f3d3          	fadd.s	ft7,ft1,fa7
    e887f9f2:	00239413          	slli	s0,t2,0x2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887f9f6:	0991                	addi	s3,s3,4
    e887f9f8:	0411                	addi	s0,s0,4
    e887f9fa:	4086680b          	flrw	fa6,a2,s0,0
            x1r = a[j] - a[j1];
    e887f9fe:	08277753          	fsub.s	fa4,fa4,ft2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fa02:	4136610b          	flrw	ft2,a2,s3,0
            x3r = a[j2] - a[j3];
    e887fa06:	0910f0d3          	fsub.s	ft1,ft1,fa7
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fa0a:	010172d3          	fadd.s	ft5,ft2,fa6
            x3i = a[j2 + 1] - a[j3 + 1];
    e887fa0e:	09017153          	fsub.s	ft2,ft2,fa6
            a[j] = x0r + x2r;
    e887fa12:	0075f853          	fadd.s	fa6,fa1,ft7
            x0r -= x2r;
    e887fa16:	0875f5d3          	fsub.s	fa1,fa1,ft7
            a[j] = x0r + x2r;
    e887fa1a:	4456780b          	fsrw	fa6,a2,t0,2
            a[j + 1] = x0i + x2i;
    e887fa1e:	00567853          	fadd.s	fa6,fa2,ft5
            x0i -= x2i;
    e887fa22:	08567653          	fsub.s	fa2,fa2,ft5
        for (j = k; j < l + k; j += 2) {
    e887fa26:	2289                	addiw	t0,t0,2
            a[j + 1] = x0i + x2i;
    e887fa28:	4166780b          	fsrw	fa6,a2,s6,0
            a[j2] = wk2r * x0r - wk2i * x0i;
    e887fa2c:	10c6f2d3          	fmul.s	ft5,fa3,fa2
    e887fa30:	28b572c7          	fmsub.s	ft5,fa0,fa1,ft5
            a[j2 + 1] = wk2r * x0i + wk2i * x0r;
    e887fa34:	10b6f5d3          	fmul.s	fa1,fa3,fa1
            a[j2] = wk2r * x0r - wk2i * x0i;
    e887fa38:	4556728b          	fsrw	ft5,a2,s5,2
            a[j2 + 1] = wk2r * x0i + wk2i * x0r;
    e887fa3c:	58c57643          	fmadd.s	fa2,fa0,fa2,fa1
            x0r = x1r - x3i;
    e887fa40:	082775d3          	fsub.s	fa1,fa4,ft2
            x0r = x1r + x3i;
    e887fa44:	00277753          	fadd.s	fa4,fa4,ft2
            a[j2 + 1] = wk2r * x0i + wk2i * x0r;
    e887fa48:	4136760b          	fsrw	fa2,a2,s3,0
            x0i = x1i + x3r;
    e887fa4c:	0017f653          	fadd.s	fa2,fa5,ft1
            x0i = x1i - x3r;
    e887fa50:	0817f7d3          	fsub.s	fa5,fa5,ft1
            a[j1] = wk1r * x0r - wk1i * x0i;
    e887fa54:	10c272d3          	fmul.s	ft5,ft4,fa2
    e887fa58:	28b1f2c7          	fmsub.s	ft5,ft3,fa1,ft5
            a[j1 + 1] = wk1r * x0i + wk1i * x0r;
    e887fa5c:	10b275d3          	fmul.s	fa1,ft4,fa1
            a[j1] = wk1r * x0r - wk1i * x0i;
    e887fa60:	4546728b          	fsrw	ft5,a2,s4,2
            a[j1 + 1] = wk1r * x0i + wk1i * x0r;
    e887fa64:	58c1f643          	fmadd.s	fa2,ft3,fa2,fa1
    e887fa68:	4126760b          	fsrw	fa2,a2,s2,0
            a[j3] = wk3r * x0r - wk3i * x0i;
    e887fa6c:	10f07653          	fmul.s	fa2,ft0,fa5
    e887fa70:	60e37647          	fmsub.s	fa2,ft6,fa4,fa2
            a[j3 + 1] = wk3r * x0i + wk3i * x0r;
    e887fa74:	10e07753          	fmul.s	fa4,ft0,fa4
            a[j3] = wk3r * x0r - wk3i * x0i;
    e887fa78:	4476760b          	fsrw	fa2,a2,t2,2
            a[j3 + 1] = wk3r * x0i + wk3i * x0r;
    e887fa7c:	70f377c3          	fmadd.s	fa5,ft6,fa5,fa4
    e887fa80:	4086778b          	fsrw	fa5,a2,s0,0
        for (j = k; j < l + k; j += 2) {
    e887fa84:	bddd                	j	e887f97a <cftmdl+0x1fc>
            x0r = a[j] + a[j1];
    e887fa86:	010789bb          	addw	s3,a5,a6
    e887fa8a:	00279a93          	slli	s5,a5,0x2
    e887fa8e:	00299493          	slli	s1,s3,0x2
            x0i = a[j + 1] + a[j1 + 1];
    e887fa92:	0a91                	addi	s5,s5,4
    e887fa94:	0491                	addi	s1,s1,4
    e887fa96:	4096608b          	flrw	ft1,a2,s1,0
    e887fa9a:	4156678b          	flrw	fa5,a2,s5,0
            x2r = a[j2] + a[j3];
    e887fa9e:	00e78a3b          	addw	s4,a5,a4
    e887faa2:	011782bb          	addw	t0,a5,a7
            x0r = a[j] + a[j1];
    e887faa6:	44f6670b          	flrw	fa4,a2,a5,2
    e887faaa:	4536610b          	flrw	ft2,a2,s3,2
            x2r = a[j2] + a[j3];
    e887faae:	4456688b          	flrw	fa7,a2,t0,2
            x0i = a[j + 1] + a[j1 + 1];
    e887fab2:	0017f653          	fadd.s	fa2,fa5,ft1
            x1i = a[j + 1] - a[j1 + 1];
    e887fab6:	0817f7d3          	fsub.s	fa5,fa5,ft1
            x2r = a[j2] + a[j3];
    e887faba:	4546608b          	flrw	ft1,a2,s4,2
            x0r = a[j] + a[j1];
    e887fabe:	002775d3          	fadd.s	fa1,fa4,ft2
            x2r = a[j2] + a[j3];
    e887fac2:	002a1913          	slli	s2,s4,0x2
    e887fac6:	0110f3d3          	fadd.s	ft7,ft1,fa7
    e887faca:	00229413          	slli	s0,t0,0x2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887face:	0911                	addi	s2,s2,4
    e887fad0:	0411                	addi	s0,s0,4
    e887fad2:	4086680b          	flrw	fa6,a2,s0,0
            x1r = a[j] - a[j1];
    e887fad6:	08277753          	fsub.s	fa4,fa4,ft2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fada:	4126610b          	flrw	ft2,a2,s2,0
            x3r = a[j2] - a[j3];
    e887fade:	0910f0d3          	fsub.s	ft1,ft1,fa7
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fae2:	010172d3          	fadd.s	ft5,ft2,fa6
            x3i = a[j2 + 1] - a[j3 + 1];
    e887fae6:	09017153          	fsub.s	ft2,ft2,fa6
            a[j] = x0r + x2r;
    e887faea:	0075f853          	fadd.s	fa6,fa1,ft7
            x0r -= x2r;
    e887faee:	0875f5d3          	fsub.s	fa1,fa1,ft7
            a[j] = x0r + x2r;
    e887faf2:	44f6780b          	fsrw	fa6,a2,a5,2
            a[j + 1] = x0i + x2i;
    e887faf6:	00567853          	fadd.s	fa6,fa2,ft5
            x0i -= x2i;
    e887fafa:	08567653          	fsub.s	fa2,fa2,ft5
        for (j = k + m; j < l + (k + m); j += 2) {
    e887fafe:	2789                	addiw	a5,a5,2
            a[j + 1] = x0i + x2i;
    e887fb00:	4156780b          	fsrw	fa6,a2,s5,0
            a[j2] = -wk2i * x0r - wk2r * x0i;
    e887fb04:	10c572d3          	fmul.s	ft5,fa0,fa2
    e887fb08:	28b6f2c7          	fmsub.s	ft5,fa3,fa1,ft5
            a[j2 + 1] = -wk2i * x0i + wk2r * x0r;
    e887fb0c:	10b575d3          	fmul.s	fa1,fa0,fa1
            a[j2] = -wk2i * x0r - wk2r * x0i;
    e887fb10:	4546728b          	fsrw	ft5,a2,s4,2
            a[j2 + 1] = -wk2i * x0i + wk2r * x0r;
    e887fb14:	58c6f643          	fmadd.s	fa2,fa3,fa2,fa1
            x0r = x1r - x3i;
    e887fb18:	082775d3          	fsub.s	fa1,fa4,ft2
            x0r = x1r + x3i;
    e887fb1c:	00277753          	fadd.s	fa4,fa4,ft2
            a[j2 + 1] = -wk2i * x0i + wk2r * x0r;
    e887fb20:	4126760b          	fsrw	fa2,a2,s2,0
            x0i = x1i + x3r;
    e887fb24:	0017f653          	fadd.s	fa2,fa5,ft1
            x0i = x1i - x3r;
    e887fb28:	0817f7d3          	fsub.s	fa5,fa5,ft1
            a[j1] = wk1r * x0r - wk1i * x0i;
    e887fb2c:	10c272d3          	fmul.s	ft5,ft4,fa2
    e887fb30:	28b1f2c7          	fmsub.s	ft5,ft3,fa1,ft5
            a[j1 + 1] = wk1r * x0i + wk1i * x0r;
    e887fb34:	10b275d3          	fmul.s	fa1,ft4,fa1
            a[j1] = wk1r * x0r - wk1i * x0i;
    e887fb38:	4536728b          	fsrw	ft5,a2,s3,2
            a[j1 + 1] = wk1r * x0i + wk1i * x0r;
    e887fb3c:	58c1f643          	fmadd.s	fa2,ft3,fa2,fa1
    e887fb40:	4096760b          	fsrw	fa2,a2,s1,0
            a[j3] = wk3r * x0r - wk3i * x0i;
    e887fb44:	10f07653          	fmul.s	fa2,ft0,fa5
    e887fb48:	60e37647          	fmsub.s	fa2,ft6,fa4,fa2
            a[j3 + 1] = wk3r * x0i + wk3i * x0r;
    e887fb4c:	10e07753          	fmul.s	fa4,ft0,fa4
            a[j3] = wk3r * x0r - wk3i * x0i;
    e887fb50:	4456760b          	fsrw	fa2,a2,t0,2
            a[j3 + 1] = wk3r * x0i + wk3i * x0r;
    e887fb54:	70f377c3          	fmadd.s	fa5,ft6,fa5,fa4
    e887fb58:	4086778b          	fsrw	fa5,a2,s0,0
        for (j = k + m; j < l + (k + m); j += 2) {
    e887fb5c:	b581                	j	e887f99c <cftmdl+0x21e>

00000000e887fb5e <cftbsub>:
{
    e887fb5e:	7179                	addi	sp,sp,-48
    e887fb60:	e422                	sd	s0,8(sp)
    e887fb62:	e826                	sd	s1,16(sp)
    e887fb64:	f406                	sd	ra,40(sp)
    e887fb66:	ec4a                	sd	s2,24(sp)
    e887fb68:	f04e                	sd	s3,32(sp)
    if (n > 8) {
    e887fb6a:	4721                	li	a4,8
{
    e887fb6c:	84aa                	mv	s1,a0
    e887fb6e:	842e                	mv	s0,a1
    e887fb70:	4789                	li	a5,2
    if (n > 8) {
    e887fb72:	00a75a63          	bge	a4,a0,e887fb86 <cftbsub+0x28>
    e887fb76:	89b2                	mv	s3,a2
        cft1st(n, a, w);
    e887fb78:	8efff0ef          	jal	ra,e887f466 <cft1st>
        l = 8;
    e887fb7c:	47a1                	li	a5,8
        while ((l << 2) < n) {
    e887fb7e:	0027991b          	slliw	s2,a5,0x2
    e887fb82:	04994f63          	blt	s2,s1,e887fbe0 <cftbsub+0x82>
    if ((l << 2) == n) {
    e887fb86:	0027971b          	slliw	a4,a5,0x2
    e887fb8a:	06970363          	beq	a4,s1,e887fbf0 <cftbsub+0x92>
    e887fb8e:	00440713          	addi	a4,s0,4
        for (j = 0; j < l; j += 2) {
    e887fb92:	4601                	li	a2,0
    e887fb94:	06f65663          	bge	a2,a5,e887fc00 <cftbsub+0xa2>
            x0r = a[j] - a[j1];
    e887fb98:	00c785bb          	addw	a1,a5,a2
    e887fb9c:	ffc72707          	flw	fa4,-4(a4)
    e887fba0:	44b4660b          	flrw	fa2,s0,a1,2
    e887fba4:	00259693          	slli	a3,a1,0x2
            x0i = -a[j + 1] + a[j1 + 1];
    e887fba8:	0691                	addi	a3,a3,4
            a[j] += a[j1];
    e887fbaa:	00c775d3          	fadd.s	fa1,fa4,fa2
            x0i = -a[j + 1] + a[j1 + 1];
    e887fbae:	00072787          	flw	fa5,0(a4)
    e887fbb2:	40d4668b          	flrw	fa3,s0,a3,0
            x0r = a[j] - a[j1];
    e887fbb6:	08c77753          	fsub.s	fa4,fa4,fa2
        for (j = 0; j < l; j += 2) {
    e887fbba:	2609                	addiw	a2,a2,2
            a[j] += a[j1];
    e887fbbc:	feb72e27          	fsw	fa1,-4(a4)
            x0i = -a[j + 1] + a[j1 + 1];
    e887fbc0:	08f6f6d3          	fsub.s	fa3,fa3,fa5
            a[j + 1] = -a[j + 1] - a[j1 + 1];
    e887fbc4:	40d4658b          	flrw	fa1,s0,a3,0
    e887fbc8:	20f797d3          	fneg.s	fa5,fa5
    e887fbcc:	0721                	addi	a4,a4,8
    e887fbce:	08b7f7d3          	fsub.s	fa5,fa5,fa1
    e887fbd2:	fef72c27          	fsw	fa5,-8(a4)
            a[j1] = x0r;
    e887fbd6:	44b4770b          	fsrw	fa4,s0,a1,2
            a[j1 + 1] = x0i;
    e887fbda:	40d4768b          	fsrw	fa3,s0,a3,0
        for (j = 0; j < l; j += 2) {
    e887fbde:	bf5d                	j	e887fb94 <cftbsub+0x36>
            cftmdl(n, l, a, w);
    e887fbe0:	85be                	mv	a1,a5
    e887fbe2:	86ce                	mv	a3,s3
    e887fbe4:	8622                	mv	a2,s0
    e887fbe6:	8526                	mv	a0,s1
    e887fbe8:	b97ff0ef          	jal	ra,e887f77e <cftmdl>
    e887fbec:	87ca                	mv	a5,s2
    e887fbee:	bf41                	j	e887fb7e <cftbsub+0x20>
    e887fbf0:	86a2                	mv	a3,s0
    e887fbf2:	0017971b          	slliw	a4,a5,0x1
        for (j = 0; j < l; j += 2) {
    e887fbf6:	4601                	li	a2,0
    e887fbf8:	00078e9b          	sext.w	t4,a5
    e887fbfc:	00f64963          	blt	a2,a5,e887fc0e <cftbsub+0xb0>
}
    e887fc00:	70a2                	ld	ra,40(sp)
    e887fc02:	6422                	ld	s0,8(sp)
    e887fc04:	64c2                	ld	s1,16(sp)
    e887fc06:	6962                	ld	s2,24(sp)
    e887fc08:	7982                	ld	s3,32(sp)
    e887fc0a:	6145                	addi	sp,sp,48
    e887fc0c:	8082                	ret
            x0i = -a[j + 1] - a[j1 + 1];
    e887fc0e:	0046a607          	flw	fa2,4(a3)
            x0r = a[j] + a[j1];
    e887fc12:	01d6033b          	addw	t1,a2,t4
    e887fc16:	00231513          	slli	a0,t1,0x2
            x0i = -a[j + 1] - a[j1 + 1];
    e887fc1a:	0511                	addi	a0,a0,4
    e887fc1c:	40a4678b          	flrw	fa5,s0,a0,0
    e887fc20:	20c616d3          	fneg.s	fa3,fa2
            x2r = a[j2] + a[j3];
    e887fc24:	01d708bb          	addw	a7,a4,t4
            x0r = a[j] + a[j1];
    e887fc28:	4464658b          	flrw	fa1,s0,t1,2
    e887fc2c:	0006a707          	flw	fa4,0(a3)
            x2r = a[j2] + a[j3];
    e887fc30:	4514618b          	flrw	ft3,s0,a7,2
            x0i = -a[j + 1] - a[j1 + 1];
    e887fc34:	08f6f6d3          	fsub.s	fa3,fa3,fa5
            x1i = -a[j + 1] + a[j1 + 1];
    e887fc38:	08c7f7d3          	fsub.s	fa5,fa5,fa2
            x2r = a[j2] + a[j3];
    e887fc3c:	44e4660b          	flrw	fa2,s0,a4,2
            x0r = a[j] + a[j1];
    e887fc40:	00b77553          	fadd.s	fa0,fa4,fa1
            x2r = a[j2] + a[j3];
    e887fc44:	00271813          	slli	a6,a4,0x2
    e887fc48:	003670d3          	fadd.s	ft1,fa2,ft3
    e887fc4c:	00289593          	slli	a1,a7,0x2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fc50:	0811                	addi	a6,a6,4
    e887fc52:	0591                	addi	a1,a1,4
    e887fc54:	40b4610b          	flrw	ft2,s0,a1,0
            x1r = a[j] - a[j1];
    e887fc58:	08b77753          	fsub.s	fa4,fa4,fa1
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fc5c:	4104658b          	flrw	fa1,s0,a6,0
            x3r = a[j2] - a[j3];
    e887fc60:	08367653          	fsub.s	fa2,fa2,ft3
        for (j = 0; j < l; j += 2) {
    e887fc64:	2609                	addiw	a2,a2,2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fc66:	0025f053          	fadd.s	ft0,fa1,ft2
            x3i = a[j2 + 1] - a[j3 + 1];
    e887fc6a:	0825f5d3          	fsub.s	fa1,fa1,ft2
            a[j] = x0r + x2r;
    e887fc6e:	00157153          	fadd.s	ft2,fa0,ft1
            a[j2] = x0r - x2r;
    e887fc72:	08157553          	fsub.s	fa0,fa0,ft1
    e887fc76:	06a1                	addi	a3,a3,8
            a[j] = x0r + x2r;
    e887fc78:	fe26ac27          	fsw	ft2,-8(a3)
            a[j + 1] = x0i - x2i;
    e887fc7c:	0806f153          	fsub.s	ft2,fa3,ft0
            a[j2 + 1] = x0i + x2i;
    e887fc80:	0006f6d3          	fadd.s	fa3,fa3,ft0
            a[j + 1] = x0i - x2i;
    e887fc84:	fe26ae27          	fsw	ft2,-4(a3)
            a[j2] = x0r - x2r;
    e887fc88:	44e4750b          	fsrw	fa0,s0,a4,2
            a[j2 + 1] = x0i + x2i;
    e887fc8c:	2709                	addiw	a4,a4,2
    e887fc8e:	4104768b          	fsrw	fa3,s0,a6,0
            a[j1] = x1r - x3i;
    e887fc92:	08b776d3          	fsub.s	fa3,fa4,fa1
            a[j3] = x1r + x3i;
    e887fc96:	00b77753          	fadd.s	fa4,fa4,fa1
            a[j1] = x1r - x3i;
    e887fc9a:	4464768b          	fsrw	fa3,s0,t1,2
            a[j1 + 1] = x1i - x3r;
    e887fc9e:	08c7f6d3          	fsub.s	fa3,fa5,fa2
            a[j3 + 1] = x1i + x3r;
    e887fca2:	00c7f7d3          	fadd.s	fa5,fa5,fa2
            a[j1 + 1] = x1i - x3r;
    e887fca6:	40a4768b          	fsrw	fa3,s0,a0,0
            a[j3] = x1r + x3i;
    e887fcaa:	4514770b          	fsrw	fa4,s0,a7,2
            a[j3 + 1] = x1i + x3r;
    e887fcae:	40b4778b          	fsrw	fa5,s0,a1,0
        for (j = 0; j < l; j += 2) {
    e887fcb2:	b7a9                	j	e887fbfc <cftbsub+0x9e>

00000000e887fcb4 <cftfsub>:
{
    e887fcb4:	7179                	addi	sp,sp,-48
    e887fcb6:	e422                	sd	s0,8(sp)
    e887fcb8:	e826                	sd	s1,16(sp)
    e887fcba:	f406                	sd	ra,40(sp)
    e887fcbc:	ec4a                	sd	s2,24(sp)
    e887fcbe:	f04e                	sd	s3,32(sp)
    if (n > 8) {
    e887fcc0:	4721                	li	a4,8
{
    e887fcc2:	84aa                	mv	s1,a0
    e887fcc4:	842e                	mv	s0,a1
    e887fcc6:	4789                	li	a5,2
    if (n > 8) {
    e887fcc8:	00a75a63          	bge	a4,a0,e887fcdc <cftfsub+0x28>
    e887fccc:	89b2                	mv	s3,a2
        cft1st(n, a, w);
    e887fcce:	f98ff0ef          	jal	ra,e887f466 <cft1st>
        l = 8;
    e887fcd2:	47a1                	li	a5,8
        while ((l << 2) < n) {
    e887fcd4:	0027991b          	slliw	s2,a5,0x2
    e887fcd8:	04994d63          	blt	s2,s1,e887fd32 <cftfsub+0x7e>
    if ((l << 2) == n) {
    e887fcdc:	0027971b          	slliw	a4,a5,0x2
    e887fce0:	06970163          	beq	a4,s1,e887fd42 <cftfsub+0x8e>
    e887fce4:	00440713          	addi	a4,s0,4
        for (j = 0; j < l; j += 2) {
    e887fce8:	4601                	li	a2,0
    e887fcea:	06f65463          	bge	a2,a5,e887fd52 <cftfsub+0x9e>
            x0r = a[j] - a[j1];
    e887fcee:	00c785bb          	addw	a1,a5,a2
    e887fcf2:	ffc72787          	flw	fa5,-4(a4)
    e887fcf6:	44b4660b          	flrw	fa2,s0,a1,2
    e887fcfa:	00259693          	slli	a3,a1,0x2
            x0i = a[j + 1] - a[j1 + 1];
    e887fcfe:	0691                	addi	a3,a3,4
            a[j] += a[j1];
    e887fd00:	00c7f6d3          	fadd.s	fa3,fa5,fa2
            x0i = a[j + 1] - a[j1 + 1];
    e887fd04:	00072587          	flw	fa1,0(a4)
    e887fd08:	40d4670b          	flrw	fa4,s0,a3,0
            x0r = a[j] - a[j1];
    e887fd0c:	08c7f7d3          	fsub.s	fa5,fa5,fa2
        for (j = 0; j < l; j += 2) {
    e887fd10:	2609                	addiw	a2,a2,2
            a[j] += a[j1];
    e887fd12:	fed72e27          	fsw	fa3,-4(a4)
            a[j + 1] += a[j1 + 1];
    e887fd16:	40d4668b          	flrw	fa3,s0,a3,0
            x0i = a[j + 1] - a[j1 + 1];
    e887fd1a:	08e5f753          	fsub.s	fa4,fa1,fa4
            a[j + 1] += a[j1 + 1];
    e887fd1e:	0721                	addi	a4,a4,8
    e887fd20:	00b6f6d3          	fadd.s	fa3,fa3,fa1
    e887fd24:	fed72c27          	fsw	fa3,-8(a4)
            a[j1] = x0r;
    e887fd28:	44b4778b          	fsrw	fa5,s0,a1,2
            a[j1 + 1] = x0i;
    e887fd2c:	40d4770b          	fsrw	fa4,s0,a3,0
        for (j = 0; j < l; j += 2) {
    e887fd30:	bf6d                	j	e887fcea <cftfsub+0x36>
            cftmdl(n, l, a, w);
    e887fd32:	85be                	mv	a1,a5
    e887fd34:	86ce                	mv	a3,s3
    e887fd36:	8622                	mv	a2,s0
    e887fd38:	8526                	mv	a0,s1
    e887fd3a:	a45ff0ef          	jal	ra,e887f77e <cftmdl>
    e887fd3e:	87ca                	mv	a5,s2
    e887fd40:	bf51                	j	e887fcd4 <cftfsub+0x20>
    e887fd42:	86a2                	mv	a3,s0
    e887fd44:	0017971b          	slliw	a4,a5,0x1
        for (j = 0; j < l; j += 2) {
    e887fd48:	4601                	li	a2,0
    e887fd4a:	00078e9b          	sext.w	t4,a5
    e887fd4e:	00f64963          	blt	a2,a5,e887fd60 <cftfsub+0xac>
}
    e887fd52:	70a2                	ld	ra,40(sp)
    e887fd54:	6422                	ld	s0,8(sp)
    e887fd56:	64c2                	ld	s1,16(sp)
    e887fd58:	6962                	ld	s2,24(sp)
    e887fd5a:	7982                	ld	s3,32(sp)
    e887fd5c:	6145                	addi	sp,sp,48
    e887fd5e:	8082                	ret
            x0r = a[j] + a[j1];
    e887fd60:	01d6033b          	addw	t1,a2,t4
    e887fd64:	00231513          	slli	a0,t1,0x2
            x0i = a[j + 1] + a[j1 + 1];
    e887fd68:	0511                	addi	a0,a0,4
    e887fd6a:	40a4668b          	flrw	fa3,s0,a0,0
    e887fd6e:	0046a787          	flw	fa5,4(a3)
            x2r = a[j2] + a[j3];
    e887fd72:	01d708bb          	addw	a7,a4,t4
            x0r = a[j] + a[j1];
    e887fd76:	4464660b          	flrw	fa2,s0,t1,2
    e887fd7a:	0006a707          	flw	fa4,0(a3)
            x2r = a[j2] + a[j3];
    e887fd7e:	4514618b          	flrw	ft3,s0,a7,2
            x0i = a[j + 1] + a[j1 + 1];
    e887fd82:	00d7f5d3          	fadd.s	fa1,fa5,fa3
            x1i = a[j + 1] - a[j1 + 1];
    e887fd86:	08d7f7d3          	fsub.s	fa5,fa5,fa3
            x2r = a[j2] + a[j3];
    e887fd8a:	44e4668b          	flrw	fa3,s0,a4,2
            x0r = a[j] + a[j1];
    e887fd8e:	00c77553          	fadd.s	fa0,fa4,fa2
            x2r = a[j2] + a[j3];
    e887fd92:	00271813          	slli	a6,a4,0x2
    e887fd96:	0036f0d3          	fadd.s	ft1,fa3,ft3
    e887fd9a:	00289593          	slli	a1,a7,0x2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fd9e:	0811                	addi	a6,a6,4
    e887fda0:	0591                	addi	a1,a1,4
    e887fda2:	40b4610b          	flrw	ft2,s0,a1,0
            x1r = a[j] - a[j1];
    e887fda6:	08c77753          	fsub.s	fa4,fa4,fa2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fdaa:	4104660b          	flrw	fa2,s0,a6,0
            x3r = a[j2] - a[j3];
    e887fdae:	0836f6d3          	fsub.s	fa3,fa3,ft3
        for (j = 0; j < l; j += 2) {
    e887fdb2:	2609                	addiw	a2,a2,2
            x2i = a[j2 + 1] + a[j3 + 1];
    e887fdb4:	00267053          	fadd.s	ft0,fa2,ft2
            x3i = a[j2 + 1] - a[j3 + 1];
    e887fdb8:	08267653          	fsub.s	fa2,fa2,ft2
            a[j] = x0r + x2r;
    e887fdbc:	00157153          	fadd.s	ft2,fa0,ft1
            a[j2] = x0r - x2r;
    e887fdc0:	08157553          	fsub.s	fa0,fa0,ft1
    e887fdc4:	06a1                	addi	a3,a3,8
            a[j] = x0r + x2r;
    e887fdc6:	fe26ac27          	fsw	ft2,-8(a3)
            a[j + 1] = x0i + x2i;
    e887fdca:	0005f153          	fadd.s	ft2,fa1,ft0
            a[j2 + 1] = x0i - x2i;
    e887fdce:	0805f5d3          	fsub.s	fa1,fa1,ft0
            a[j + 1] = x0i + x2i;
    e887fdd2:	fe26ae27          	fsw	ft2,-4(a3)
            a[j2] = x0r - x2r;
    e887fdd6:	44e4750b          	fsrw	fa0,s0,a4,2
            a[j2 + 1] = x0i - x2i;
    e887fdda:	2709                	addiw	a4,a4,2
    e887fddc:	4104758b          	fsrw	fa1,s0,a6,0
            a[j1] = x1r - x3i;
    e887fde0:	08c775d3          	fsub.s	fa1,fa4,fa2
            a[j3] = x1r + x3i;
    e887fde4:	00c77753          	fadd.s	fa4,fa4,fa2
            a[j1] = x1r - x3i;
    e887fde8:	4464758b          	fsrw	fa1,s0,t1,2
            a[j1 + 1] = x1i + x3r;
    e887fdec:	00d7f5d3          	fadd.s	fa1,fa5,fa3
            a[j3 + 1] = x1i - x3r;
    e887fdf0:	08d7f7d3          	fsub.s	fa5,fa5,fa3
            a[j1 + 1] = x1i + x3r;
    e887fdf4:	40a4758b          	fsrw	fa1,s0,a0,0
            a[j3] = x1r + x3i;
    e887fdf8:	4514770b          	fsrw	fa4,s0,a7,2
            a[j3 + 1] = x1i - x3r;
    e887fdfc:	40b4778b          	fsrw	fa5,s0,a1,0
        for (j = 0; j < l; j += 2) {
    e887fe00:	b7b9                	j	e887fd4e <cftfsub+0x9a>

00000000e887fe02 <makewt.part.0>:
static void makewt(int nw, int *ip, float *w)
    e887fe02:	711d                	addi	sp,sp,-96
    e887fe04:	e0ca                	sd	s2,64(sp)
        nwh = nw >> 1;
    e887fe06:	4015591b          	sraiw	s2,a0,0x1
        delta = (float)atan(1.0f) / nwh;
    e887fe0a:	d0097553          	fcvt.s.w	fa0,s2
static void makewt(int nw, int *ip, float *w)
    e887fe0e:	b026                	fsd	fs1,32(sp)
        delta = (float)atan(1.0f) / nwh;
    e887fe10:	0004e797          	auipc	a5,0x4e
    e887fe14:	b307a487          	flw	fs1,-1232(a5) # e88cd940 <kBlocks80w128+0x200>
    e887fe18:	18a4f4d3          	fdiv.s	fs1,fs1,fa0
static void makewt(int nw, int *ip, float *w)
    e887fe1c:	fc4e                	sd	s3,56(sp)
    e887fe1e:	ec86                	sd	ra,88(sp)
    e887fe20:	e8a2                	sd	s0,80(sp)
    e887fe22:	e4a6                	sd	s1,72(sp)
    e887fe24:	f852                	sd	s4,48(sp)
    e887fe26:	b422                	fsd	fs0,40(sp)
    e887fe28:	ac4a                	fsd	fs2,24(sp)
        w[0] = 1;
    e887fe2a:	3f8007b7          	lui	a5,0x3f800
    e887fe2e:	e21c                	sd	a5,0(a2)
    e887fe30:	e032                	sd	a2,0(sp)
static void makewt(int nw, int *ip, float *w)
    e887fe32:	89ae                	mv	s3,a1
        nwh = nw >> 1;
    e887fe34:	e42a                	sd	a0,8(sp)
        w[nwh] = (float)cos(delta * nwh);
    e887fe36:	10957553          	fmul.s	fa0,fa0,fs1
    e887fe3a:	42050553          	fcvt.d.s	fa0,fa0
    e887fe3e:	ff38a0ef          	jal	ra,e880ae30 <cos>
    e887fe42:	40157553          	fcvt.s.d	fa0,fa0
    e887fe46:	6602                	ld	a2,0(sp)
    e887fe48:	4526750b          	fsrw	fa0,a2,s2,2
        w[nwh + 1] = w[nwh];
    e887fe4c:	0526178b          	addsl	a5,a2,s2,2
    e887fe50:	00a7a227          	fsw	fa0,4(a5) # 3f800004 <memcmp-0xa8fffffc>
        if (nwh > 2) {
    e887fe54:	4789                	li	a5,2
    e887fe56:	0727dc63          	bge	a5,s2,e887fece <makewt.part.0+0xcc>
    e887fe5a:	6522                	ld	a0,8(sp)
    e887fe5c:	4409                	li	s0,2
                w[j + 1] = y;
    e887fe5e:	00460a13          	addi	s4,a2,4
    e887fe62:	ffe5049b          	addiw	s1,a0,-2
    e887fe66:	0496148b          	addsl	s1,a2,s1,2
                x = (float)cos(delta * j);
    e887fe6a:	d0047453          	fcvt.s.w	fs0,s0
    e887fe6e:	e432                	sd	a2,8(sp)
    e887fe70:	e02a                	sd	a0,0(sp)
    e887fe72:	10947453          	fmul.s	fs0,fs0,fs1
    e887fe76:	14e1                	addi	s1,s1,-8
    e887fe78:	42040453          	fcvt.d.s	fs0,fs0
    e887fe7c:	22840553          	fmv.d	fa0,fs0
    e887fe80:	fb18a0ef          	jal	ra,e880ae30 <cos>
    e887fe84:	40157953          	fcvt.s.d	fs2,fa0
                y = (float)sin(delta * j);
    e887fe88:	22840553          	fmv.d	fa0,fs0
    e887fe8c:	8348b0ef          	jal	ra,e880aec0 <sin>
    e887fe90:	40157553          	fcvt.s.d	fa0,fa0
                w[j] = x;
    e887fe94:	6622                	ld	a2,8(sp)
            for (j = 2; j < nwh; j += 2) {
    e887fe96:	6502                	ld	a0,0(sp)
                w[j] = x;
    e887fe98:	4486790b          	fsrw	fs2,a2,s0,2
                w[j + 1] = y;
    e887fe9c:	448a750b          	fsrw	fa0,s4,s0,2
                w[nw - j] = y;
    e887fea0:	0409                	addi	s0,s0,2
    e887fea2:	00a4a427          	fsw	fa0,8(s1)
                w[nw - j + 1] = x;
    e887fea6:	0124a627          	fsw	fs2,12(s1)
            for (j = 2; j < nwh; j += 2) {
    e887feaa:	0004079b          	sext.w	a5,s0
    e887feae:	fb27cee3          	blt	a5,s2,e887fe6a <makewt.part.0+0x68>
}
    e887feb2:	6446                	ld	s0,80(sp)
    e887feb4:	60e6                	ld	ra,88(sp)
    e887feb6:	64a6                	ld	s1,72(sp)
    e887feb8:	6906                	ld	s2,64(sp)
    e887feba:	7a42                	ld	s4,48(sp)
    e887febc:	3422                	fld	fs0,40(sp)
    e887febe:	3482                	fld	fs1,32(sp)
    e887fec0:	2962                	fld	fs2,24(sp)
            bitrv2(nw, ip + 2, w);
    e887fec2:	00898593          	addi	a1,s3,8
}
    e887fec6:	79e2                	ld	s3,56(sp)
    e887fec8:	6125                	addi	sp,sp,96
            bitrv2(nw, ip + 2, w);
    e887feca:	b7eff06f          	j	e887f248 <bitrv2>
}
    e887fece:	60e6                	ld	ra,88(sp)
    e887fed0:	6446                	ld	s0,80(sp)
    e887fed2:	64a6                	ld	s1,72(sp)
    e887fed4:	6906                	ld	s2,64(sp)
    e887fed6:	79e2                	ld	s3,56(sp)
    e887fed8:	7a42                	ld	s4,48(sp)
    e887feda:	3422                	fld	fs0,40(sp)
    e887fedc:	3482                	fld	fs1,32(sp)
    e887fede:	2962                	fld	fs2,24(sp)
    e887fee0:	6125                	addi	sp,sp,96
    e887fee2:	8082                	ret

00000000e887fee4 <WebRtc_rdft>:
{
    e887fee4:	7119                	addi	sp,sp,-128
    e887fee6:	ac22                	fsd	fs0,24(sp)
    e887fee8:	a826                	fsd	fs1,16(sp)
    e887feea:	a44a                	fsd	fs2,8(sp)
    e887feec:	f8a2                	sd	s0,112(sp)
    e887feee:	f0ca                	sd	s2,96(sp)
    e887fef0:	ecce                	sd	s3,88(sp)
    e887fef2:	e0da                	sd	s6,64(sp)
    e887fef4:	f862                	sd	s8,48(sp)
    e887fef6:	fc86                	sd	ra,120(sp)
    e887fef8:	f4a6                	sd	s1,104(sp)
    e887fefa:	e8d2                	sd	s4,80(sp)
    e887fefc:	e4d6                	sd	s5,72(sp)
    e887fefe:	fc5e                	sd	s7,56(sp)
    e887ff00:	f466                	sd	s9,40(sp)
    e887ff02:	f06a                	sd	s10,32(sp)
    nw = ip[0];
    e887ff04:	4284                	lw	s1,0(a3)
{
    e887ff06:	842a                	mv	s0,a0
    e887ff08:	8b2e                	mv	s6,a1
    if (n > (nw << 2)) {
    e887ff0a:	0024979b          	slliw	a5,s1,0x2
{
    e887ff0e:	8932                	mv	s2,a2
    e887ff10:	8c36                	mv	s8,a3
    e887ff12:	89ba                	mv	s3,a4
    if (n > (nw << 2)) {
    e887ff14:	02a7d063          	bge	a5,a0,e887ff34 <WebRtc_rdft+0x50>
        nw = n >> 2;
    e887ff18:	4025549b          	sraiw	s1,a0,0x2
    ip[0] = nw;
    e887ff1c:	009c2023          	sw	s1,0(s8)
    ip[1] = 1;
    e887ff20:	4785                	li	a5,1
    e887ff22:	c2dc                	sw	a5,4(a3)
    if (nw > 2) {
    e887ff24:	4789                	li	a5,2
    e887ff26:	0097d763          	bge	a5,s1,e887ff34 <WebRtc_rdft+0x50>
    e887ff2a:	863a                	mv	a2,a4
    e887ff2c:	85b6                	mv	a1,a3
    e887ff2e:	8526                	mv	a0,s1
    e887ff30:	ed3ff0ef          	jal	ra,e887fe02 <makewt.part.0>
    nc = ip[1];
    e887ff34:	004c2c83          	lw	s9,4(s8)
    if (n > (nc << 2)) {
    e887ff38:	002c979b          	slliw	a5,s9,0x2
    e887ff3c:	1287df63          	bge	a5,s0,e888007a <WebRtc_rdft+0x196>
        nc = n >> 2;
    e887ff40:	40245c9b          	sraiw	s9,s0,0x2
    ip[1] = nc;
    e887ff44:	019c2223          	sw	s9,4(s8)
    if (nc > 1) {
    e887ff48:	4785                	li	a5,1
    e887ff4a:	1397d863          	bge	a5,s9,e888007a <WebRtc_rdft+0x196>
        nch = nc >> 1;
    e887ff4e:	40345b9b          	sraiw	s7,s0,0x3
        delta = (float)atan(1.0f) / nch;
    e887ff52:	d00bf553          	fcvt.s.w	fa0,s7
    e887ff56:	0004e797          	auipc	a5,0x4e
    e887ff5a:	9ea7a487          	flw	fs1,-1558(a5) # e88cd940 <kBlocks80w128+0x200>
        makect(nc, ip, w + nw);
    e887ff5e:	04999a8b          	addsl	s5,s3,s1,2
        delta = (float)atan(1.0f) / nch;
    e887ff62:	18a4f4d3          	fdiv.s	fs1,fs1,fa0
        c[0] = (float)cos(delta * nch);
    e887ff66:	fffc8a1b          	addiw	s4,s9,-1
    e887ff6a:	054a9a0b          	addsl	s4,s5,s4,2
        c[nch] = 0.5f * c[0];
    e887ff6e:	4d05                	li	s10,1
        c[0] = (float)cos(delta * nch);
    e887ff70:	10957553          	fmul.s	fa0,fa0,fs1
    e887ff74:	42050553          	fcvt.d.s	fa0,fa0
    e887ff78:	eb98a0ef          	jal	ra,e880ae30 <cos>
    e887ff7c:	40157553          	fcvt.s.d	fa0,fa0
        c[nch] = 0.5f * c[0];
    e887ff80:	0004d797          	auipc	a5,0x4d
    e887ff84:	3047a907          	flw	fs2,772(a5) # e88cd284 <kGenFuncTable+0x114>
        c[0] = (float)cos(delta * nch);
    e887ff88:	4499f50b          	fsrw	fa0,s3,s1,2
        c[nch] = 0.5f * c[0];
    e887ff8c:	11257553          	fmul.s	fa0,fa0,fs2
    e887ff90:	457af50b          	fsrw	fa0,s5,s7,2
        for (j = 1; j < nch; j++) {
    e887ff94:	000d079b          	sext.w	a5,s10
    e887ff98:	0b77c463          	blt	a5,s7,e8880040 <WebRtc_rdft+0x15c>
    if (isgn >= 0) {
    e887ff9c:	0e0b5463          	bgez	s6,e8880084 <WebRtc_rdft+0x1a0>
        a[1] = 0.5f * (a[0] - a[1]);
    e887ffa0:	00092707          	flw	fa4,0(s2)
    e887ffa4:	00492787          	flw	fa5,4(s2)
    e887ffa8:	0004d797          	auipc	a5,0x4d
    e887ffac:	2dc7a087          	flw	ft1,732(a5) # e88cd284 <kGenFuncTable+0x114>
    e887ffb0:	08f777d3          	fsub.s	fa5,fa4,fa5
        if (n > 4) {
    e887ffb4:	4791                	li	a5,4
        a[1] = 0.5f * (a[0] - a[1]);
    e887ffb6:	1017f7d3          	fmul.s	fa5,fa5,ft1
        a[0] -= a[1];
    e887ffba:	08f77753          	fsub.s	fa4,fa4,fa5
        a[1] = 0.5f * (a[0] - a[1]);
    e887ffbe:	00f92227          	fsw	fa5,4(s2)
        a[0] -= a[1];
    e887ffc2:	00e92027          	fsw	fa4,0(s2)
        if (n > 4) {
    e887ffc6:	2087df63          	bge	a5,s0,e88801e4 <WebRtc_rdft+0x300>
    int j, k, kk, ks, m;
    float wkr, wki, xr, xi, yr, yi;

    a[1] = -a[1];
    m = n >> 1;
    ks = 2 * nc / m;
    e887ffca:	001c969b          	slliw	a3,s9,0x1
    m = n >> 1;
    e887ffce:	4014559b          	sraiw	a1,s0,0x1
    ks = 2 * nc / m;
    e887ffd2:	02b6c73b          	divw	a4,a3,a1
    a[1] = -a[1];
    e887ffd6:	20f797d3          	fneg.s	fa5,fa5
    e887ffda:	ffe4079b          	addiw	a5,s0,-2
            rftbsub(n, a, nc, w + nw);
    e887ffde:	0499948b          	addsl	s1,s3,s1,2
    a[1] = -a[1];
    e887ffe2:	00f92227          	fsw	fa5,4(s2)
    kk = 0;
    for (j = 2; j < m; j += 2) {
    e887ffe6:	04f9178b          	addsl	a5,s2,a5,2
    e887ffea:	00c90613          	addi	a2,s2,12
    kk = 0;
    e887ffee:	4801                	li	a6,0
    for (j = 2; j < m; j += 2) {
    e887fff0:	4509                	li	a0,2
    e887fff2:	40ec86bb          	subw	a3,s9,a4
    e887fff6:	18b54263          	blt	a0,a1,e888017a <WebRtc_rdft+0x296>
        a[j] -= yr;
        a[j + 1] = yi - a[j + 1];
        a[k] += yr;
        a[k + 1] = yi - a[k + 1];
    }
    a[m + 1] = -a[m + 1];
    e887fffa:	00158793          	addi	a5,a1,1
    e887fffe:	44f9678b          	flrw	fa5,s2,a5,2
            bitrv2(n, ip + 2, a);
    e8880002:	864a                	mv	a2,s2
    e8880004:	008c0593          	addi	a1,s8,8
    a[m + 1] = -a[m + 1];
    e8880008:	20f797d3          	fneg.s	fa5,fa5
            bitrv2(n, ip + 2, a);
    e888000c:	8522                	mv	a0,s0
    a[m + 1] = -a[m + 1];
    e888000e:	44f9778b          	fsrw	fa5,s2,a5,2
            bitrv2(n, ip + 2, a);
    e8880012:	a36ff0ef          	jal	ra,e887f248 <bitrv2>
}
    e8880016:	74a6                	ld	s1,104(sp)
            cftbsub(n, a, w);
    e8880018:	8522                	mv	a0,s0
}
    e888001a:	7446                	ld	s0,112(sp)
    e888001c:	70e6                	ld	ra,120(sp)
    e888001e:	6a46                	ld	s4,80(sp)
    e8880020:	6aa6                	ld	s5,72(sp)
    e8880022:	6b06                	ld	s6,64(sp)
    e8880024:	7be2                	ld	s7,56(sp)
    e8880026:	7c42                	ld	s8,48(sp)
    e8880028:	7ca2                	ld	s9,40(sp)
    e888002a:	7d02                	ld	s10,32(sp)
    e888002c:	2462                	fld	fs0,24(sp)
    e888002e:	24c2                	fld	fs1,16(sp)
    e8880030:	2922                	fld	fs2,8(sp)
            cftbsub(n, a, w);
    e8880032:	864e                	mv	a2,s3
    e8880034:	85ca                	mv	a1,s2
}
    e8880036:	69e6                	ld	s3,88(sp)
    e8880038:	7906                	ld	s2,96(sp)
    e888003a:	6109                	addi	sp,sp,128
            cftbsub(n, a, w);
    e888003c:	b23ff06f          	j	e887fb5e <cftbsub>
            c[j] = 0.5f * (float)cos(delta * j);
    e8880040:	d007f453          	fcvt.s.w	fs0,a5
    e8880044:	1a71                	addi	s4,s4,-4
    e8880046:	10947453          	fmul.s	fs0,fs0,fs1
    e888004a:	42040453          	fcvt.d.s	fs0,fs0
    e888004e:	22840553          	fmv.d	fa0,fs0
    e8880052:	ddf8a0ef          	jal	ra,e880ae30 <cos>
    e8880056:	40157553          	fcvt.s.d	fa0,fa0
    e888005a:	11257553          	fmul.s	fa0,fa0,fs2
    e888005e:	45aaf50b          	fsrw	fa0,s5,s10,2
            c[nc - j] = 0.5f * (float)sin(delta * j);
    e8880062:	22840553          	fmv.d	fa0,fs0
    e8880066:	0d05                	addi	s10,s10,1
    e8880068:	e598a0ef          	jal	ra,e880aec0 <sin>
    e888006c:	40157553          	fcvt.s.d	fa0,fa0
    e8880070:	11257553          	fmul.s	fa0,fa0,fs2
    e8880074:	00aa2227          	fsw	fa0,4(s4) # ffffffffffff4004 <__DRAM0_INF_BASE+0xffffffff00004004>
        for (j = 1; j < nch; j++) {
    e8880078:	bf31                	j	e887ff94 <WebRtc_rdft+0xb0>
    if (isgn >= 0) {
    e888007a:	f20b43e3          	bltz	s6,e887ffa0 <WebRtc_rdft+0xbc>
        if (n > 4) {
    e888007e:	4791                	li	a5,4
    e8880080:	0e87d563          	bge	a5,s0,e888016a <WebRtc_rdft+0x286>
            bitrv2(n, ip + 2, a);
    e8880084:	8522                	mv	a0,s0
    e8880086:	864a                	mv	a2,s2
    e8880088:	008c0593          	addi	a1,s8,8
    e888008c:	9bcff0ef          	jal	ra,e887f248 <bitrv2>
            rftfsub(n, a, nc, w + nw);
    e8880090:	0499948b          	addsl	s1,s3,s1,2
            cftfsub(n, a, w);
    e8880094:	8522                	mv	a0,s0
    e8880096:	864e                	mv	a2,s3
    e8880098:	85ca                	mv	a1,s2
    e888009a:	c1bff0ef          	jal	ra,e887fcb4 <cftfsub>
    m = n >> 1;
    e888009e:	4014551b          	sraiw	a0,s0,0x1
    ks = 2 * nc / m;
    e88800a2:	001c969b          	slliw	a3,s9,0x1
    e88800a6:	02a6c73b          	divw	a4,a3,a0
    for (j = 2; j < m; j += 2) {
    e88800aa:	3479                	addiw	s0,s0,-2
    e88800ac:	0489140b          	addsl	s0,s2,s0,2
    e88800b0:	00c90793          	addi	a5,s2,12
    kk = 0;
    e88800b4:	4581                	li	a1,0
    for (j = 2; j < m; j += 2) {
    e88800b6:	4609                	li	a2,2
        wkr = 0.5f - c[nc - kk];
    e88800b8:	0004d817          	auipc	a6,0x4d
    e88800bc:	1cc82087          	flw	ft1,460(a6) # e88cd284 <kGenFuncTable+0x114>
    e88800c0:	40ec86bb          	subw	a3,s9,a4
    for (j = 2; j < m; j += 2) {
    e88800c4:	02a64f63          	blt	a2,a0,e8880102 <WebRtc_rdft+0x21e>
        xi = a[0] - a[1];
    e88800c8:	00092787          	flw	fa5,0(s2)
    e88800cc:	00492707          	flw	fa4,4(s2)
        a[0] += a[1];
    e88800d0:	00e7f6d3          	fadd.s	fa3,fa5,fa4
        xi = a[0] - a[1];
    e88800d4:	08e7f7d3          	fsub.s	fa5,fa5,fa4
        a[0] += a[1];
    e88800d8:	00d92027          	fsw	fa3,0(s2)
        a[1] = xi;
    e88800dc:	00f92227          	fsw	fa5,4(s2)
}
    e88800e0:	70e6                	ld	ra,120(sp)
    e88800e2:	7446                	ld	s0,112(sp)
    e88800e4:	74a6                	ld	s1,104(sp)
    e88800e6:	7906                	ld	s2,96(sp)
    e88800e8:	69e6                	ld	s3,88(sp)
    e88800ea:	6a46                	ld	s4,80(sp)
    e88800ec:	6aa6                	ld	s5,72(sp)
    e88800ee:	6b06                	ld	s6,64(sp)
    e88800f0:	7be2                	ld	s7,56(sp)
    e88800f2:	7c42                	ld	s8,48(sp)
    e88800f4:	7ca2                	ld	s9,40(sp)
    e88800f6:	7d02                	ld	s10,32(sp)
    e88800f8:	2462                	fld	fs0,24(sp)
    e88800fa:	24c2                	fld	fs1,16(sp)
    e88800fc:	2922                	fld	fs2,8(sp)
    e88800fe:	6109                	addi	sp,sp,128
    e8880100:	8082                	ret
        xi = a[j + 1] + a[k + 1];
    e8880102:	0007a607          	flw	fa2,0(a5)
    e8880106:	00442007          	flw	ft0,4(s0)
        wkr = 0.5f - c[nc - kk];
    e888010a:	44d4e78b          	flrw	fa5,s1,a3,2
        kk += ks;
    e888010e:	9db9                	addw	a1,a1,a4
        xi = a[j + 1] + a[k + 1];
    e8880110:	00067053          	fadd.s	ft0,fa2,ft0
        wki = c[kk];
    e8880114:	44b4e50b          	flrw	fa0,s1,a1,2
        xr = a[j] - a[k];
    e8880118:	ffc7a587          	flw	fa1,-4(a5)
        wkr = 0.5f - c[nc - kk];
    e888011c:	08f0f753          	fsub.s	fa4,ft1,fa5
        xr = a[j] - a[k];
    e8880120:	00042787          	flw	fa5,0(s0)
        yr = wkr * xr - wki * xi;
    e8880124:	100576d3          	fmul.s	fa3,fa0,ft0
    for (j = 2; j < m; j += 2) {
    e8880128:	2609                	addiw	a2,a2,2
        xr = a[j] - a[k];
    e888012a:	08f5f7d3          	fsub.s	fa5,fa1,fa5
        yr = wkr * xr - wki * xi;
    e888012e:	9e99                	subw	a3,a3,a4
    e8880130:	1461                	addi	s0,s0,-8
    e8880132:	07a1                	addi	a5,a5,8
    e8880134:	68f776c7          	fmsub.s	fa3,fa4,fa5,fa3
        yi = wkr * xi + wki * xr;
    e8880138:	10f577d3          	fmul.s	fa5,fa0,fa5
        a[j] -= yr;
    e888013c:	08d5f5d3          	fsub.s	fa1,fa1,fa3
        yi = wkr * xi + wki * xr;
    e8880140:	780777c3          	fmadd.s	fa5,fa4,ft0,fa5
        a[j] -= yr;
    e8880144:	feb7aa27          	fsw	fa1,-12(a5)
        a[j + 1] -= yi;
    e8880148:	08f67653          	fsub.s	fa2,fa2,fa5
    e888014c:	fec7ac27          	fsw	fa2,-8(a5)
        a[k] += yr;
    e8880150:	00842707          	flw	fa4,8(s0)
    e8880154:	00d776d3          	fadd.s	fa3,fa4,fa3
        a[k + 1] -= yi;
    e8880158:	00c42707          	flw	fa4,12(s0)
    e888015c:	08f777d3          	fsub.s	fa5,fa4,fa5
        a[k] += yr;
    e8880160:	00d42427          	fsw	fa3,8(s0)
        a[k + 1] -= yi;
    e8880164:	00f42627          	fsw	fa5,12(s0)
    for (j = 2; j < m; j += 2) {
    e8880168:	bfb1                	j	e88800c4 <WebRtc_rdft+0x1e0>
        } else if (n == 4) {
    e888016a:	f4f41fe3          	bne	s0,a5,e88800c8 <WebRtc_rdft+0x1e4>
            cftfsub(n, a, w);
    e888016e:	864e                	mv	a2,s3
    e8880170:	85ca                	mv	a1,s2
    e8880172:	4511                	li	a0,4
    e8880174:	b41ff0ef          	jal	ra,e887fcb4 <cftfsub>
    e8880178:	bf81                	j	e88800c8 <WebRtc_rdft+0x1e4>
        xi = a[j + 1] + a[k + 1];
    e888017a:	00062607          	flw	fa2,0(a2)
    e888017e:	0047a007          	flw	ft0,4(a5)
        wkr = 0.5f - c[nc - kk];
    e8880182:	44d4e78b          	flrw	fa5,s1,a3,2
        kk += ks;
    e8880186:	0107083b          	addw	a6,a4,a6
        xi = a[j + 1] + a[k + 1];
    e888018a:	00067053          	fadd.s	ft0,fa2,ft0
        wki = c[kk];
    e888018e:	4504e50b          	flrw	fa0,s1,a6,2
        xr = a[j] - a[k];
    e8880192:	ffc62587          	flw	fa1,-4(a2)
        wkr = 0.5f - c[nc - kk];
    e8880196:	08f0f753          	fsub.s	fa4,ft1,fa5
        xr = a[j] - a[k];
    e888019a:	0007a787          	flw	fa5,0(a5)
        yr = wkr * xr + wki * xi;
    e888019e:	100576d3          	fmul.s	fa3,fa0,ft0
    for (j = 2; j < m; j += 2) {
    e88801a2:	2509                	addiw	a0,a0,2
        xr = a[j] - a[k];
    e88801a4:	08f5f7d3          	fsub.s	fa5,fa1,fa5
        yr = wkr * xr + wki * xi;
    e88801a8:	9e99                	subw	a3,a3,a4
    e88801aa:	17e1                	addi	a5,a5,-8
    e88801ac:	0621                	addi	a2,a2,8
    e88801ae:	68f776c3          	fmadd.s	fa3,fa4,fa5,fa3
        yi = wkr * xi - wki * xr;
    e88801b2:	10f577d3          	fmul.s	fa5,fa0,fa5
        a[j] -= yr;
    e88801b6:	08d5f5d3          	fsub.s	fa1,fa1,fa3
        yi = wkr * xi - wki * xr;
    e88801ba:	780777c7          	fmsub.s	fa5,fa4,ft0,fa5
        a[j] -= yr;
    e88801be:	feb62a27          	fsw	fa1,-12(a2)
        a[j + 1] = yi - a[j + 1];
    e88801c2:	08c7f653          	fsub.s	fa2,fa5,fa2
    e88801c6:	fec62c27          	fsw	fa2,-8(a2)
        a[k] += yr;
    e88801ca:	0087a707          	flw	fa4,8(a5)
    e88801ce:	00d776d3          	fadd.s	fa3,fa4,fa3
        a[k + 1] = yi - a[k + 1];
    e88801d2:	00c7a707          	flw	fa4,12(a5)
    e88801d6:	08e7f7d3          	fsub.s	fa5,fa5,fa4
        a[k] += yr;
    e88801da:	00d7a427          	fsw	fa3,8(a5)
        a[k + 1] = yi - a[k + 1];
    e88801de:	00f7a627          	fsw	fa5,12(a5)
    for (j = 2; j < m; j += 2) {
    e88801e2:	bd11                	j	e887fff6 <WebRtc_rdft+0x112>
        } else if (n == 4) {
    e88801e4:	eef41ee3          	bne	s0,a5,e88800e0 <WebRtc_rdft+0x1fc>
}
    e88801e8:	7446                	ld	s0,112(sp)
    e88801ea:	70e6                	ld	ra,120(sp)
    e88801ec:	74a6                	ld	s1,104(sp)
    e88801ee:	6a46                	ld	s4,80(sp)
    e88801f0:	6aa6                	ld	s5,72(sp)
    e88801f2:	6b06                	ld	s6,64(sp)
    e88801f4:	7be2                	ld	s7,56(sp)
    e88801f6:	7c42                	ld	s8,48(sp)
    e88801f8:	7ca2                	ld	s9,40(sp)
    e88801fa:	7d02                	ld	s10,32(sp)
    e88801fc:	2462                	fld	fs0,24(sp)
    e88801fe:	24c2                	fld	fs1,16(sp)
    e8880200:	2922                	fld	fs2,8(sp)
            cftfsub(n, a, w);
    e8880202:	864e                	mv	a2,s3
    e8880204:	85ca                	mv	a1,s2
}
    e8880206:	69e6                	ld	s3,88(sp)
    e8880208:	7906                	ld	s2,96(sp)
            cftfsub(n, a, w);
    e888020a:	4511                	li	a0,4
}
    e888020c:	6109                	addi	sp,sp,128
            cftfsub(n, a, w);
    e888020e:	aa7ff06f          	j	e887fcb4 <cftfsub>

00000000e8880212 <WebRtc_CreateBuffer>:
  }

  return read_elements;
}

RingBuffer* WebRtc_CreateBuffer(size_t element_count, size_t element_size) {
    e8880212:	1101                	addi	sp,sp,-32
    e8880214:	ec06                	sd	ra,24(sp)
    e8880216:	e84a                	sd	s2,16(sp)
    e8880218:	f891540b          	sdd	s0,s1,(sp),0,4
  RingBuffer* self = NULL;
  if (element_count == 0 || element_size == 0) {
    e888021c:	e909                	bnez	a0,e888022e <WebRtc_CreateBuffer+0x1c>

  self->data = malloc(element_count * element_size);
  if (!self->data) {
    free(self);
    self = NULL;
    return NULL;
    e888021e:	4401                	li	s0,0

  self->element_count = element_count;
  self->element_size = element_size;

  return self;
}
    e8880220:	8522                	mv	a0,s0
    e8880222:	60e2                	ld	ra,24(sp)
    e8880224:	f891440b          	ldd	s0,s1,(sp),0,4
    e8880228:	6942                	ld	s2,16(sp)
    e888022a:	6105                	addi	sp,sp,32
    e888022c:	8082                	ret
  if (element_count == 0 || element_size == 0) {
    e888022e:	d9e5                	beqz	a1,e888021e <WebRtc_CreateBuffer+0xc>
    e8880230:	892a                	mv	s2,a0
  self = malloc(sizeof(RingBuffer));
    e8880232:	03000513          	li	a0,48
    e8880236:	84ae                	mv	s1,a1
    e8880238:	e16fb0ef          	jal	ra,e887b84e <my_malloc>
    e888023c:	842a                	mv	s0,a0
  if (!self) {
    e888023e:	d165                	beqz	a0,e888021e <WebRtc_CreateBuffer+0xc>
  self->data = malloc(element_count * element_size);
    e8880240:	02990533          	mul	a0,s2,s1
    e8880244:	e0afb0ef          	jal	ra,e887b84e <my_malloc>
    e8880248:	f408                	sd	a0,40(s0)
  if (!self->data) {
    e888024a:	e509                	bnez	a0,e8880254 <WebRtc_CreateBuffer+0x42>
    free(self);
    e888024c:	8522                	mv	a0,s0
    e888024e:	8b2fc0ef          	jal	ra,e887c300 <eLIBs_free>
    e8880252:	b7f1                	j	e888021e <WebRtc_CreateBuffer+0xc>
  self->element_size = element_size;
    e8880254:	fa94590b          	sdd	s2,s1,(s0),1,4
  return self;
    e8880258:	b7e1                	j	e8880220 <WebRtc_CreateBuffer+0xe>

00000000e888025a <WebRtc_InitBuffer>:

int WebRtc_InitBuffer(RingBuffer* self) {
  if (!self) {
    e888025a:	c50d                	beqz	a0,e8880284 <WebRtc_InitBuffer+0x2a>
int WebRtc_InitBuffer(RingBuffer* self) {
    e888025c:	1141                	addi	sp,sp,-16
    e888025e:	e406                	sd	ra,8(sp)
  self->read_pos = 0;
  self->write_pos = 0;
  self->rw_wrap = SAME_WRAP;

  // Initialize buffer to zeros
  memset(self->data, 0, self->element_count * self->element_size);
    e8880260:	faf5460b          	ldd	a2,a5,(a0),1,4
  self->read_pos = 0;
    e8880264:	00053023          	sd	zero,0(a0)
  self->write_pos = 0;
    e8880268:	00053423          	sd	zero,8(a0)
  memset(self->data, 0, self->element_count * self->element_size);
    e888026c:	02f60633          	mul	a2,a2,a5
  self->rw_wrap = SAME_WRAP;
    e8880270:	02050023          	sb	zero,32(a0)
  memset(self->data, 0, self->element_count * self->element_size);
    e8880274:	7508                	ld	a0,40(a0)
    e8880276:	4581                	li	a1,0
    e8880278:	91cfc0ef          	jal	ra,e887c394 <eLIBs_memset>

  return 0;
}
    e888027c:	60a2                	ld	ra,8(sp)
  return 0;
    e888027e:	4501                	li	a0,0
}
    e8880280:	0141                	addi	sp,sp,16
    e8880282:	8082                	ret
    return -1;
    e8880284:	557d                	li	a0,-1
}
    e8880286:	8082                	ret

00000000e8880288 <WebRtc_FreeBuffer>:

void WebRtc_FreeBuffer(void* handle) {
  RingBuffer* self = (RingBuffer*)handle;
  if (!self) {
    e8880288:	cd11                	beqz	a0,e88802a4 <WebRtc_FreeBuffer+0x1c>
void WebRtc_FreeBuffer(void* handle) {
    e888028a:	1141                	addi	sp,sp,-16
    e888028c:	e022                	sd	s0,0(sp)
    e888028e:	e406                	sd	ra,8(sp)
    e8880290:	842a                	mv	s0,a0
    return;
  }

  free(self->data);
    e8880292:	7508                	ld	a0,40(a0)
    e8880294:	86cfc0ef          	jal	ra,e887c300 <eLIBs_free>
  free(self);
    e8880298:	8522                	mv	a0,s0
}
    e888029a:	6402                	ld	s0,0(sp)
    e888029c:	60a2                	ld	ra,8(sp)
    e888029e:	0141                	addi	sp,sp,16
  free(self);
    e88802a0:	860fc06f          	j	e887c300 <eLIBs_free>
    e88802a4:	8082                	ret

00000000e88802a6 <WebRtc_available_read>:
    return element_count;
  }
}

size_t WebRtc_available_read(const RingBuffer* self) {
  if (!self) {
    e88802a6:	cd09                	beqz	a0,e88802c0 <WebRtc_available_read+0x1a>
    return 0;
  }

  if (self->rw_wrap == SAME_WRAP) {
    e88802a8:	02054683          	lbu	a3,32(a0)
    e88802ac:	f8e5478b          	ldd	a5,a4,(a0),0,4
    e88802b0:	e681                	bnez	a3,e88802b8 <WebRtc_available_read+0x12>
    return self->write_pos - self->read_pos;
    e88802b2:	40f70533          	sub	a0,a4,a5
    e88802b6:	8082                	ret
  } else {
    return self->element_count - self->read_pos + self->write_pos;
    e88802b8:	6908                	ld	a0,16(a0)
    e88802ba:	953a                	add	a0,a0,a4
    e88802bc:	8d1d                	sub	a0,a0,a5
    e88802be:	8082                	ret
    return 0;
    e88802c0:	4501                	li	a0,0
  }
}
    e88802c2:	8082                	ret

00000000e88802c4 <WebRtc_available_write>:

size_t WebRtc_available_write(const RingBuffer* self) {
  if (!self) {
    e88802c4:	cd11                	beqz	a0,e88802e0 <WebRtc_available_write+0x1c>
size_t WebRtc_available_write(const RingBuffer* self) {
    e88802c6:	1141                	addi	sp,sp,-16
    e88802c8:	e022                	sd	s0,0(sp)
    e88802ca:	e406                	sd	ra,8(sp)
    e88802cc:	842a                	mv	s0,a0
    return 0;
  }

  return self->element_count - WebRtc_available_read(self);
    e88802ce:	fd9ff0ef          	jal	ra,e88802a6 <WebRtc_available_read>
    e88802d2:	681c                	ld	a5,16(s0)
}
    e88802d4:	60a2                	ld	ra,8(sp)
    e88802d6:	6402                	ld	s0,0(sp)
  return self->element_count - WebRtc_available_read(self);
    e88802d8:	40a78533          	sub	a0,a5,a0
}
    e88802dc:	0141                	addi	sp,sp,16
    e88802de:	8082                	ret
    return 0;
    e88802e0:	4501                	li	a0,0
}
    e88802e2:	8082                	ret

00000000e88802e4 <WebRtc_WriteBuffer>:
                          size_t element_count) {
    e88802e4:	7139                	addi	sp,sp,-64
    e88802e6:	e826                	sd	s1,16(sp)
    e88802e8:	fc06                	sd	ra,56(sp)
    e88802ea:	e422                	sd	s0,8(sp)
    e88802ec:	ec4a                	sd	s2,24(sp)
    e88802ee:	f04e                	sd	s3,32(sp)
    e88802f0:	f452                	sd	s4,40(sp)
    e88802f2:	f856                	sd	s5,48(sp)
    return 0;
    e88802f4:	4481                	li	s1,0
  if (!self) {
    e88802f6:	c935                	beqz	a0,e888036a <WebRtc_WriteBuffer+0x86>
  if (!data) {
    e88802f8:	c9ad                	beqz	a1,e888036a <WebRtc_WriteBuffer+0x86>
    e88802fa:	89b2                	mv	s3,a2
    e88802fc:	842a                	mv	s0,a0
    e88802fe:	892e                	mv	s2,a1
    const size_t free_elements = WebRtc_available_write(self);
    e8880300:	fc5ff0ef          	jal	ra,e88802c4 <WebRtc_available_write>
    const size_t write_elements = (free_elements < element_count ? free_elements
    e8880304:	00a9b7b3          	sltu	a5,s3,a0
    const size_t free_elements = WebRtc_available_write(self);
    e8880308:	84aa                	mv	s1,a0
    const size_t write_elements = (free_elements < element_count ? free_elements
    e888030a:	42f9948b          	mvnez	s1,s3,a5
    const size_t margin = self->element_count - self->write_pos;
    e888030e:	01043a83          	ld	s5,16(s0)
    e8880312:	00843983          	ld	s3,8(s0)
    e8880316:	8a26                	mv	s4,s1
    e8880318:	413a8633          	sub	a2,s5,s3
    if (write_elements > margin) {
    e888031c:	02967463          	bgeu	a2,s1,e8880344 <WebRtc_WriteBuffer+0x60>
    e8880320:	6c1c                	ld	a5,24(s0)
      memcpy(self->data + self->write_pos * self->element_size,
    e8880322:	7408                	ld	a0,40(s0)
    e8880324:	85ca                	mv	a1,s2
    e8880326:	02f60633          	mul	a2,a2,a5
    e888032a:	20f9950b          	mula	a0,s3,a5
      n -= margin;
    e888032e:	415989b3          	sub	s3,s3,s5
    e8880332:	00998a33          	add	s4,s3,s1
      memcpy(self->data + self->write_pos * self->element_size,
    e8880336:	86afc0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      self->write_pos = 0;
    e888033a:	00043423          	sd	zero,8(s0)
      self->rw_wrap = DIFF_WRAP;
    e888033e:	4785                	li	a5,1
    e8880340:	02f40023          	sb	a5,32(s0)
    memcpy(self->data + self->write_pos * self->element_size,
    e8880344:	6c1c                	ld	a5,24(s0)
    e8880346:	6418                	ld	a4,8(s0)
    e8880348:	7408                	ld	a0,40(s0)
           ((const char*) data) + ((write_elements - n) * self->element_size),
    e888034a:	414486b3          	sub	a3,s1,s4
    memcpy(self->data + self->write_pos * self->element_size,
    e888034e:	85ca                	mv	a1,s2
    e8880350:	03478633          	mul	a2,a5,s4
    e8880354:	20f6958b          	mula	a1,a3,a5
    e8880358:	20e7950b          	mula	a0,a5,a4
    e888035c:	844fc0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    self->write_pos += n;
    e8880360:	00843983          	ld	s3,8(s0)
    e8880364:	99d2                	add	s3,s3,s4
    e8880366:	01343423          	sd	s3,8(s0)
}
    e888036a:	70e2                	ld	ra,56(sp)
    e888036c:	6422                	ld	s0,8(sp)
    e888036e:	8526                	mv	a0,s1
    e8880370:	6962                	ld	s2,24(sp)
    e8880372:	64c2                	ld	s1,16(sp)
    e8880374:	7982                	ld	s3,32(sp)
    e8880376:	7a22                	ld	s4,40(sp)
    e8880378:	7ac2                	ld	s5,48(sp)
    e888037a:	6121                	addi	sp,sp,64
    e888037c:	8082                	ret

00000000e888037e <WebRtc_MoveReadPtr>:
  if (!self) {
    e888037e:	c535                	beqz	a0,e88803ea <WebRtc_MoveReadPtr+0x6c>
int WebRtc_MoveReadPtr(RingBuffer* self, int element_count) {
    e8880380:	1101                	addi	sp,sp,-32
    e8880382:	f891540b          	sdd	s0,s1,(sp),0,4
    e8880386:	ec06                	sd	ra,24(sp)
    e8880388:	842a                	mv	s0,a0
    e888038a:	e84a                	sd	s2,16(sp)
    e888038c:	892e                	mv	s2,a1
    const int free_elements = (int) WebRtc_available_write(self);
    e888038e:	f37ff0ef          	jal	ra,e88802c4 <WebRtc_available_write>
    e8880392:	84aa                	mv	s1,a0
    const int readable_elements = (int) WebRtc_available_read(self);
    e8880394:	8522                	mv	a0,s0
    e8880396:	f11ff0ef          	jal	ra,e88802a6 <WebRtc_available_read>
    int read_pos = (int) self->read_pos;
    e888039a:	0005071b          	sext.w	a4,a0
    e888039e:	00e92733          	slt	a4,s2,a4
    e88803a2:	42e9150b          	mvnez	a0,s2,a4
    if (element_count < -free_elements) {
    e88803a6:	409007bb          	negw	a5,s1
    int read_pos = (int) self->read_pos;
    e88803aa:	4014                	lw	a3,0(s0)
    if (element_count < -free_elements) {
    e88803ac:	0007871b          	sext.w	a4,a5
    e88803b0:	0005061b          	sext.w	a2,a0
    e88803b4:	00c72733          	slt	a4,a4,a2
    e88803b8:	42e5178b          	mvnez	a5,a0,a4
    read_pos += element_count;
    e88803bc:	00f6873b          	addw	a4,a3,a5
    if (read_pos > (int) self->element_count) {
    e88803c0:	4814                	lw	a3,16(s0)
    e88803c2:	0007851b          	sext.w	a0,a5
    e88803c6:	00e6d563          	bge	a3,a4,e88803d0 <WebRtc_MoveReadPtr+0x52>
      read_pos -= (int) self->element_count;
    e88803ca:	9f15                	subw	a4,a4,a3
      self->rw_wrap = SAME_WRAP;
    e88803cc:	02040023          	sb	zero,32(s0)
    if (read_pos < 0) {
    e88803d0:	00075663          	bgez	a4,e88803dc <WebRtc_MoveReadPtr+0x5e>
      self->rw_wrap = DIFF_WRAP;
    e88803d4:	4785                	li	a5,1
      read_pos += (int) self->element_count;
    e88803d6:	9f35                	addw	a4,a4,a3
      self->rw_wrap = DIFF_WRAP;
    e88803d8:	02f40023          	sb	a5,32(s0)
    self->read_pos = (size_t) read_pos;
    e88803dc:	e018                	sd	a4,0(s0)
}
    e88803de:	f891440b          	ldd	s0,s1,(sp),0,4
    e88803e2:	60e2                	ld	ra,24(sp)
    e88803e4:	6942                	ld	s2,16(sp)
    e88803e6:	6105                	addi	sp,sp,32
    e88803e8:	8082                	ret
    return 0;
    e88803ea:	4501                	li	a0,0
}
    e88803ec:	8082                	ret

00000000e88803ee <WebRtc_ReadBuffer>:
                         size_t element_count) {
    e88803ee:	7139                	addi	sp,sp,-64
    e88803f0:	f891540b          	sdd	s0,s1,(sp),0,4
    e88803f4:	fc06                	sd	ra,56(sp)
    e88803f6:	f85a                	sd	s6,48(sp)
    e88803f8:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88803fc:	fd515a0b          	sdd	s4,s5,(sp),2,4
    return 0;
    e8880400:	4481                	li	s1,0
  if (self == NULL) {
    e8880402:	cd39                	beqz	a0,e8880460 <WebRtc_ReadBuffer+0x72>
  if (data == NULL) {
    e8880404:	ce31                	beqz	a2,e8880460 <WebRtc_ReadBuffer+0x72>
    e8880406:	892a                	mv	s2,a0
    e8880408:	8436                	mv	s0,a3
    e888040a:	8aae                	mv	s5,a1
  const size_t readable_elements = WebRtc_available_read(buf);
    e888040c:	89b2                	mv	s3,a2
    e888040e:	e99ff0ef          	jal	ra,e88802a6 <WebRtc_available_read>
  const size_t read_elements = (readable_elements < element_count ?
    e8880412:	008534b3          	sltu	s1,a0,s0
  const size_t margin = buf->element_count - buf->read_pos;
    e8880416:	00093783          	ld	a5,0(s2)
    e888041a:	01893703          	ld	a4,24(s2)
  const size_t read_elements = (readable_elements < element_count ?
    e888041e:	4094150b          	mveqz	a0,s0,s1
  const size_t margin = buf->element_count - buf->read_pos;
    e8880422:	01093403          	ld	s0,16(s2)
    e8880426:	02e785b3          	mul	a1,a5,a4
    e888042a:	02893b03          	ld	s6,40(s2)
    e888042e:	40f40a33          	sub	s4,s0,a5
  const size_t read_elements = (readable_elements < element_count ?
    e8880432:	84aa                	mv	s1,a0
    *data_ptr_1 = buf->data + buf->read_pos * buf->element_size;
    e8880434:	95da                	add	a1,a1,s6
  if (read_elements > margin) {
    e8880436:	04aa7063          	bgeu	s4,a0,e8880476 <WebRtc_ReadBuffer+0x88>
    *data_ptr_bytes_2 = (read_elements - margin) * buf->element_size;
    e888043a:	40878433          	sub	s0,a5,s0
    e888043e:	942a                	add	s0,s0,a0
    e8880440:	02e40433          	mul	s0,s0,a4
    *data_ptr_bytes_1 = margin * buf->element_size;
    e8880444:	02ea0a33          	mul	s4,s4,a4
    if (buf_ptr_bytes_2 > 0) {
    e8880448:	e815                	bnez	s0,e888047c <WebRtc_ReadBuffer+0x8e>
    } else if (!data_ptr) {
    e888044a:	040a9663          	bnez	s5,e8880496 <WebRtc_ReadBuffer+0xa8>
      memcpy(data, buf_ptr_1, buf_ptr_bytes_1);
    e888044e:	8652                	mv	a2,s4
    e8880450:	854e                	mv	a0,s3
    e8880452:	f4ffb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    WebRtc_MoveReadPtr(self, (int) read_count);
    e8880456:	0004859b          	sext.w	a1,s1
    e888045a:	854a                	mv	a0,s2
    e888045c:	f23ff0ef          	jal	ra,e888037e <WebRtc_MoveReadPtr>
}
    e8880460:	8526                	mv	a0,s1
    e8880462:	70e2                	ld	ra,56(sp)
    e8880464:	f891440b          	ldd	s0,s1,(sp),0,4
    e8880468:	7b42                	ld	s6,48(sp)
    e888046a:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888046e:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8880472:	6121                	addi	sp,sp,64
    e8880474:	8082                	ret
    *data_ptr_bytes_1 = read_elements * buf->element_size;
    e8880476:	02e50a33          	mul	s4,a0,a4
    if (buf_ptr_bytes_2 > 0) {
    e888047a:	bfc1                	j	e888044a <WebRtc_ReadBuffer+0x5c>
      memcpy(data, buf_ptr_1, buf_ptr_bytes_1);
    e888047c:	8652                	mv	a2,s4
    e888047e:	854e                	mv	a0,s3
    e8880480:	f21fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(((char*) data) + buf_ptr_bytes_1, buf_ptr_2, buf_ptr_bytes_2);
    e8880484:	8622                	mv	a2,s0
    e8880486:	85da                	mv	a1,s6
    e8880488:	01498533          	add	a0,s3,s4
    e888048c:	f15fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    if (data_ptr) {
    e8880490:	fc0a83e3          	beqz	s5,e8880456 <WebRtc_ReadBuffer+0x68>
    e8880494:	85ce                	mv	a1,s3
      *data_ptr = buf_ptr_1;
    e8880496:	00bab023          	sd	a1,0(s5)
    e888049a:	bf75                	j	e8880456 <WebRtc_ReadBuffer+0x68>

00000000e888049c <WebRtcSpl_MemSetW32>:
void WebRtcSpl_MemSetW32(int32_t *ptr, int32_t set_value, int length)
{
    int j;
    int32_t *arrptr = ptr;

    for (j = length; j > 0; j--)
    e888049c:	4781                	li	a5,0
    e888049e:	40f6073b          	subw	a4,a2,a5
    e88804a2:	00e04363          	bgtz	a4,e88804a8 <WebRtcSpl_MemSetW32+0xc>
    {
        *arrptr++ = set_value;
    }
}
    e88804a6:	8082                	ret
        *arrptr++ = set_value;
    e88804a8:	44f5558b          	srw	a1,a0,a5,2
    for (j = length; j > 0; j--)
    e88804ac:	0785                	addi	a5,a5,1
    e88804ae:	bfc5                	j	e888049e <WebRtcSpl_MemSetW32+0x2>

00000000e88804b0 <WebRtcSpl_DivU32U16>:
#include "common_audio/signal_processing/include/signal_processing_library.h"

uint32_t WebRtcSpl_DivU32U16(uint32_t num, uint16_t den)
{
    // Guard against division with 0
    if (den != 0)
    e88804b0:	c581                	beqz	a1,e88804b8 <WebRtcSpl_DivU32U16+0x8>
    {
        return (uint32_t)(num / den);
    e88804b2:	02b5553b          	divuw	a0,a0,a1
    e88804b6:	8082                	ret
    } else
    {
        return (uint32_t)0xFFFFFFFF;
    e88804b8:	557d                	li	a0,-1
    }
}
    e88804ba:	8082                	ret

00000000e88804bc <WebRtcSpl_DivW32W16>:

int32_t WebRtcSpl_DivW32W16(int32_t num, int16_t den)
{
    // Guard against division with 0
    if (den != 0)
    e88804bc:	c581                	beqz	a1,e88804c4 <WebRtcSpl_DivW32W16+0x8>
    {
        return (int32_t)(num / den);
    e88804be:	02b5453b          	divw	a0,a0,a1
    e88804c2:	8082                	ret
    } else
    {
        return (int32_t)0x7FFFFFFF;
    e88804c4:	80000537          	lui	a0,0x80000
    e88804c8:	fff54513          	not	a0,a0
    }
}
    e88804cc:	8082                	ret

00000000e88804ce <WebRtcSpl_DivW32W16ResW16>:

int16_t WebRtcSpl_DivW32W16ResW16(int32_t num, int16_t den)
{
    // Guard against division with 0
    if (den != 0)
    e88804ce:	c591                	beqz	a1,e88804da <WebRtcSpl_DivW32W16ResW16+0xc>
    {
        return (int16_t)(num / den);
    e88804d0:	02b5453b          	divw	a0,a0,a1
    e88804d4:	3c05250b          	ext	a0,a0,15,0
    e88804d8:	8082                	ret
    } else
    {
        return (int16_t)0x7FFF;
    e88804da:	6521                	lui	a0,0x8
    e88804dc:	157d                	addi	a0,a0,-1
    }
}
    e88804de:	8082                	ret

00000000e88804e0 <WebRtcSpl_Init>:
 * In case of neither pthread for WEBRTC_POSIX nor _WIN32 is present, build
 * system should pick it up.
 */
#endif  /* WEBRTC_POSIX */

void WebRtcSpl_Init(void) {
    e88804e0:	1141                	addi	sp,sp,-16
  pthread_mutex_lock(&mutex);
    e88804e2:	00055517          	auipc	a0,0x55
    e88804e6:	09650513          	addi	a0,a0,150 # e88d5578 <mutex.6660>
void WebRtcSpl_Init(void) {
    e88804ea:	e406                	sd	ra,8(sp)
  pthread_mutex_lock(&mutex);
    e88804ec:	e32fb0ef          	jal	ra,e887bb1e <pthread_mutex_lock>
  if (!done) {
    e88804f0:	00064797          	auipc	a5,0x64
    e88804f4:	fa078793          	addi	a5,a5,-96 # e88e4490 <done.6661>
    e88804f8:	4398                	lw	a4,0(a5)
    e88804fa:	eb79                	bnez	a4,e88805d0 <WebRtcSpl_Init+0xf0>
  WebRtcSpl_MaxAbsValueW16 = WebRtcSpl_MaxAbsValueW16C;
    e88804fc:	00002717          	auipc	a4,0x2
    e8880500:	5d870713          	addi	a4,a4,1496 # e8882ad4 <WebRtcSpl_MaxAbsValueW16C>
    e8880504:	00064697          	auipc	a3,0x64
    e8880508:	f4e6b223          	sd	a4,-188(a3) # e88e4448 <WebRtcSpl_MaxAbsValueW16>
  WebRtcSpl_MaxAbsValueW32 = WebRtcSpl_MaxAbsValueW32C;
    e888050c:	00002717          	auipc	a4,0x2
    e8880510:	63a70713          	addi	a4,a4,1594 # e8882b46 <WebRtcSpl_MaxAbsValueW32C>
    e8880514:	00064697          	auipc	a3,0x64
    e8880518:	f2e6be23          	sd	a4,-196(a3) # e88e4450 <WebRtcSpl_MaxAbsValueW32>
  WebRtcSpl_MaxValueW16 = WebRtcSpl_MaxValueW16C;
    e888051c:	00002717          	auipc	a4,0x2
    e8880520:	6a270713          	addi	a4,a4,1698 # e8882bbe <WebRtcSpl_MaxValueW16C>
    e8880524:	00064697          	auipc	a3,0x64
    e8880528:	f2e6ba23          	sd	a4,-204(a3) # e88e4458 <WebRtcSpl_MaxValueW16>
  WebRtcSpl_MaxValueW32 = WebRtcSpl_MaxValueW32C;
    e888052c:	00002717          	auipc	a4,0x2
    e8880530:	6ee70713          	addi	a4,a4,1774 # e8882c1a <WebRtcSpl_MaxValueW32C>
    e8880534:	00064697          	auipc	a3,0x64
    e8880538:	f2e6b623          	sd	a4,-212(a3) # e88e4460 <WebRtcSpl_MaxValueW32>
  WebRtcSpl_MinValueW16 = WebRtcSpl_MinValueW16C;
    e888053c:	00002717          	auipc	a4,0x2
    e8880540:	73a70713          	addi	a4,a4,1850 # e8882c76 <WebRtcSpl_MinValueW16C>
    e8880544:	00064697          	auipc	a3,0x64
    e8880548:	f2e6b223          	sd	a4,-220(a3) # e88e4468 <WebRtcSpl_MinValueW16>
  WebRtcSpl_MinValueW32 = WebRtcSpl_MinValueW32C;
    e888054c:	00002717          	auipc	a4,0x2
    e8880550:	78870713          	addi	a4,a4,1928 # e8882cd4 <WebRtcSpl_MinValueW32C>
    e8880554:	00064697          	auipc	a3,0x64
    e8880558:	f0e6be23          	sd	a4,-228(a3) # e88e4470 <WebRtcSpl_MinValueW32>
  WebRtcSpl_CrossCorrelation = WebRtcSpl_CrossCorrelationC;
    e888055c:	00002717          	auipc	a4,0x2
    e8880560:	4c270713          	addi	a4,a4,1218 # e8882a1e <WebRtcSpl_CrossCorrelationC>
    e8880564:	00064697          	auipc	a3,0x64
    e8880568:	ece6b623          	sd	a4,-308(a3) # e88e4430 <WebRtcSpl_CrossCorrelation>
  WebRtcSpl_DownsampleFast = WebRtcSpl_DownsampleFastC;
    e888056c:	00002717          	auipc	a4,0x2
    e8880570:	4f670713          	addi	a4,a4,1270 # e8882a62 <WebRtcSpl_DownsampleFastC>
    e8880574:	00064697          	auipc	a3,0x64
    e8880578:	ece6b223          	sd	a4,-316(a3) # e88e4438 <WebRtcSpl_DownsampleFast>
  WebRtcSpl_ScaleAndAddVectorsWithRound =
    e888057c:	00000717          	auipc	a4,0x0
    e8880580:	06470713          	addi	a4,a4,100 # e88805e0 <WebRtcSpl_ScaleAndAddVectorsWithRoundC>
    e8880584:	00064697          	auipc	a3,0x64
    e8880588:	f0e6b223          	sd	a4,-252(a3) # e88e4488 <WebRtcSpl_ScaleAndAddVectorsWithRound>
  WebRtcSpl_CreateRealFFT = WebRtcSpl_CreateRealFFTC;
    e888058c:	00003717          	auipc	a4,0x3
    e8880590:	81270713          	addi	a4,a4,-2030 # e8882d9e <WebRtcSpl_CreateRealFFTC>
    e8880594:	00064697          	auipc	a3,0x64
    e8880598:	e8e6ba23          	sd	a4,-364(a3) # e88e4428 <WebRtcSpl_CreateRealFFT>
  WebRtcSpl_FreeRealFFT = WebRtcSpl_FreeRealFFTC;
    e888059c:	00003717          	auipc	a4,0x3
    e88805a0:	82670713          	addi	a4,a4,-2010 # e8882dc2 <WebRtcSpl_FreeRealFFTC>
    e88805a4:	00064697          	auipc	a3,0x64
    e88805a8:	e8e6be23          	sd	a4,-356(a3) # e88e4440 <WebRtcSpl_FreeRealFFT>
  WebRtcSpl_RealForwardFFT = WebRtcSpl_RealForwardFFTC;
    e88805ac:	00003717          	auipc	a4,0x3
    e88805b0:	81e70713          	addi	a4,a4,-2018 # e8882dca <WebRtcSpl_RealForwardFFTC>
    e88805b4:	00064697          	auipc	a3,0x64
    e88805b8:	ece6b223          	sd	a4,-316(a3) # e88e4478 <WebRtcSpl_RealForwardFFT>
  WebRtcSpl_RealInverseFFT = WebRtcSpl_RealInverseFFTC;
    e88805bc:	00003717          	auipc	a4,0x3
    e88805c0:	89070713          	addi	a4,a4,-1904 # e8882e4c <WebRtcSpl_RealInverseFFTC>
    e88805c4:	00064697          	auipc	a3,0x64
    e88805c8:	eae6be23          	sd	a4,-324(a3) # e88e4480 <WebRtcSpl_RealInverseFFT>
    done = 1;
    e88805cc:	4705                	li	a4,1
    e88805ce:	c398                	sw	a4,0(a5)
  once(InitFunctionPointers);
}
    e88805d0:	60a2                	ld	ra,8(sp)
  pthread_mutex_unlock(&mutex);
    e88805d2:	00055517          	auipc	a0,0x55
    e88805d6:	fa650513          	addi	a0,a0,-90 # e88d5578 <mutex.6660>
}
    e88805da:	0141                	addi	sp,sp,16
  pthread_mutex_unlock(&mutex);
    e88805dc:	d86fb06f          	j	e887bb62 <pthread_mutex_unlock>

00000000e88805e0 <WebRtcSpl_ScaleAndAddVectorsWithRoundC>:
                                           int16_t in_vector2_scale,
                                           int right_shifts,
                                           int16_t* out_vector,
                                           int length) {
  int i = 0;
  int round_value = (1 << right_shifts) >> 1;
    e88805e0:	4e05                	li	t3,1
                                           int length) {
    e88805e2:	8eaa                	mv	t4,a0
  int round_value = (1 << right_shifts) >> 1;
    e88805e4:	00ee1e3b          	sllw	t3,t3,a4
    e88805e8:	401e5e1b          	sraiw	t3,t3,0x1

  if (in_vector1 == NULL || in_vector2 == NULL || out_vector == NULL ||
      length <= 0 || right_shifts < 0) {
    return -1;
    e88805ec:	557d                	li	a0,-1
  if (in_vector1 == NULL || in_vector2 == NULL || out_vector == NULL ||
    e88805ee:	020e8e63          	beqz	t4,e888062a <WebRtcSpl_ScaleAndAddVectorsWithRoundC+0x4a>
    e88805f2:	ce05                	beqz	a2,e888062a <WebRtcSpl_ScaleAndAddVectorsWithRoundC+0x4a>
    e88805f4:	cb9d                	beqz	a5,e888062a <WebRtcSpl_ScaleAndAddVectorsWithRoundC+0x4a>
    e88805f6:	03005a63          	blez	a6,e888062a <WebRtcSpl_ScaleAndAddVectorsWithRoundC+0x4a>
      length <= 0 || right_shifts < 0) {
    e88805fa:	02074863          	bltz	a4,e888062a <WebRtcSpl_ScaleAndAddVectorsWithRoundC+0x4a>
    e88805fe:	4301                	li	t1,0
  }

  for (i = 0; i < length; i++) {
    out_vector[i] = (int16_t)((
        WEBRTC_SPL_MUL_16_16(in_vector1[i], in_vector1_scale)
        + WEBRTC_SPL_MUL_16_16(in_vector2[i], in_vector2_scale)
    e8880600:	2266488b          	lrh	a7,a2,t1,1
    e8880604:	a26ec50b          	lrhu	a0,t4,t1,1
    e8880608:	02d888bb          	mulw	a7,a7,a3
    e888060c:	28b5188b          	mulah	a7,a0,a1
        + round_value) >> right_shifts);
    e8880610:	01c888bb          	addw	a7,a7,t3
    e8880614:	40e8d8bb          	sraw	a7,a7,a4
    out_vector[i] = (int16_t)((
    e8880618:	2267d88b          	srh	a7,a5,t1,1
  for (i = 0; i < length; i++) {
    e888061c:	0305                	addi	t1,t1,1
    e888061e:	0003051b          	sext.w	a0,t1
    e8880622:	fd054fe3          	blt	a0,a6,e8880600 <WebRtcSpl_ScaleAndAddVectorsWithRoundC+0x20>
  }

  return 0;
    e8880626:	4501                	li	a0,0
    e8880628:	8082                	ret
}
    e888062a:	8082                	ret

00000000e888062c <WebRtcVad_set_mode_core>:

  return 0;
}

// Set aggressiveness mode
int WebRtcVad_set_mode_core(VadInstT* self, int mode) {
    e888062c:	1101                	addi	sp,sp,-32
    e888062e:	e422                	sd	s0,8(sp)
    e8880630:	ec06                	sd	ra,24(sp)
    e8880632:	e826                	sd	s1,16(sp)
  int return_value = 0;

  switch (mode) {
    e8880634:	4785                	li	a5,1
int WebRtcVad_set_mode_core(VadInstT* self, int mode) {
    e8880636:	842a                	mv	s0,a0
  switch (mode) {
    e8880638:	0af58963          	beq	a1,a5,e88806ea <WebRtcVad_set_mode_core+0xbe>
    e888063c:	84ae                	mv	s1,a1
    e888063e:	00b7ca63          	blt	a5,a1,e8880652 <WebRtcVad_set_mode_core+0x26>
    e8880642:	cdb9                	beqz	a1,e88806a0 <WebRtcVad_set_mode_core+0x74>
             sizeof(self->individual));
      memcpy(self->total, kGlobalThresholdVAG,
             sizeof(self->total));
      break;
    default:
      return_value = -1;
    e8880644:	54fd                	li	s1,-1
      break;
  }

  return return_value;
}
    e8880646:	60e2                	ld	ra,24(sp)
    e8880648:	6422                	ld	s0,8(sp)
    e888064a:	8526                	mv	a0,s1
    e888064c:	64c2                	ld	s1,16(sp)
    e888064e:	6105                	addi	sp,sp,32
    e8880650:	8082                	ret
  switch (mode) {
    e8880652:	4789                	li	a5,2
    e8880654:	0ef58163          	beq	a1,a5,e8880736 <WebRtcVad_set_mode_core+0x10a>
    e8880658:	478d                	li	a5,3
    e888065a:	fef595e3          	bne	a1,a5,e8880644 <WebRtcVad_set_mode_core+0x18>
      memcpy(self->over_hang_max_1, kOverHangMax1VAG,
    e888065e:	4619                	li	a2,6
    e8880660:	0004d597          	auipc	a1,0x4d
    e8880664:	37858593          	addi	a1,a1,888 # e88cd9d8 <kOverHangMax1VAG>
    e8880668:	2c450513          	addi	a0,a0,708
    e888066c:	d35fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->over_hang_max_2, kOverHangMax2VAG,
    e8880670:	4619                	li	a2,6
    e8880672:	0004d597          	auipc	a1,0x4d
    e8880676:	38658593          	addi	a1,a1,902 # e88cd9f8 <kOverHangMax2VAG>
    e888067a:	2ca40513          	addi	a0,s0,714
    e888067e:	d23fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->individual, kLocalThresholdVAG,
    e8880682:	4619                	li	a2,6
    e8880684:	0004d597          	auipc	a1,0x4d
    e8880688:	30458593          	addi	a1,a1,772 # e88cd988 <kLocalThresholdVAG>
    e888068c:	2d040513          	addi	a0,s0,720
    e8880690:	d11fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->total, kGlobalThresholdVAG,
    e8880694:	4619                	li	a2,6
    e8880696:	0004d597          	auipc	a1,0x4d
    e888069a:	2d258593          	addi	a1,a1,722 # e88cd968 <kGlobalThresholdVAG>
    e888069e:	a071                	j	e888072a <WebRtcVad_set_mode_core+0xfe>
      memcpy(self->over_hang_max_1, kOverHangMax1Q,
    e88806a0:	4619                	li	a2,6
    e88806a2:	0004d597          	auipc	a1,0x4d
    e88806a6:	32e58593          	addi	a1,a1,814 # e88cd9d0 <kOverHangMax1Q>
    e88806aa:	2c450513          	addi	a0,a0,708
    e88806ae:	cf3fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->over_hang_max_2, kOverHangMax2Q,
    e88806b2:	4619                	li	a2,6
    e88806b4:	0004d597          	auipc	a1,0x4d
    e88806b8:	33c58593          	addi	a1,a1,828 # e88cd9f0 <kOverHangMax2Q>
    e88806bc:	2ca40513          	addi	a0,s0,714
    e88806c0:	ce1fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->individual, kLocalThresholdQ,
    e88806c4:	4619                	li	a2,6
    e88806c6:	0004d597          	auipc	a1,0x4d
    e88806ca:	2ba58593          	addi	a1,a1,698 # e88cd980 <kLocalThresholdQ>
    e88806ce:	2d040513          	addi	a0,s0,720
    e88806d2:	ccffb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->total, kGlobalThresholdQ,
    e88806d6:	4619                	li	a2,6
    e88806d8:	0004d597          	auipc	a1,0x4d
    e88806dc:	28858593          	addi	a1,a1,648 # e88cd960 <kGlobalThresholdQ>
    e88806e0:	2d640513          	addi	a0,s0,726
    e88806e4:	cbdfb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      break;
    e88806e8:	bfb9                	j	e8880646 <WebRtcVad_set_mode_core+0x1a>
      memcpy(self->over_hang_max_1, kOverHangMax1LBR,
    e88806ea:	4619                	li	a2,6
    e88806ec:	0004d597          	auipc	a1,0x4d
    e88806f0:	2dc58593          	addi	a1,a1,732 # e88cd9c8 <kOverHangMax1LBR>
    e88806f4:	2c450513          	addi	a0,a0,708
    e88806f8:	ca9fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->over_hang_max_2, kOverHangMax2LBR,
    e88806fc:	4619                	li	a2,6
    e88806fe:	0004d597          	auipc	a1,0x4d
    e8880702:	2ea58593          	addi	a1,a1,746 # e88cd9e8 <kOverHangMax2LBR>
    e8880706:	2ca40513          	addi	a0,s0,714
    e888070a:	c97fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->individual, kLocalThresholdLBR,
    e888070e:	4619                	li	a2,6
    e8880710:	0004d597          	auipc	a1,0x4d
    e8880714:	26858593          	addi	a1,a1,616 # e88cd978 <kLocalThresholdLBR>
    e8880718:	2d040513          	addi	a0,s0,720
    e888071c:	c85fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->total, kGlobalThresholdLBR,
    e8880720:	4619                	li	a2,6
    e8880722:	0004d597          	auipc	a1,0x4d
    e8880726:	23658593          	addi	a1,a1,566 # e88cd958 <kGlobalThresholdLBR>
      memcpy(self->total, kGlobalThresholdVAG,
    e888072a:	2d640513          	addi	a0,s0,726
    e888072e:	c73fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  int return_value = 0;
    e8880732:	4481                	li	s1,0
      break;
    e8880734:	bf09                	j	e8880646 <WebRtcVad_set_mode_core+0x1a>
      memcpy(self->over_hang_max_1, kOverHangMax1AGG,
    e8880736:	4619                	li	a2,6
    e8880738:	0004d597          	auipc	a1,0x4d
    e888073c:	28858593          	addi	a1,a1,648 # e88cd9c0 <kOverHangMax1AGG>
    e8880740:	2c450513          	addi	a0,a0,708
    e8880744:	c5dfb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->over_hang_max_2, kOverHangMax2AGG,
    e8880748:	4619                	li	a2,6
    e888074a:	0004d597          	auipc	a1,0x4d
    e888074e:	29658593          	addi	a1,a1,662 # e88cd9e0 <kOverHangMax2AGG>
    e8880752:	2ca40513          	addi	a0,s0,714
    e8880756:	c4bfb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->individual, kLocalThresholdAGG,
    e888075a:	4619                	li	a2,6
    e888075c:	0004d597          	auipc	a1,0x4d
    e8880760:	21458593          	addi	a1,a1,532 # e88cd970 <kLocalThresholdAGG>
    e8880764:	2d040513          	addi	a0,s0,720
    e8880768:	c39fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      memcpy(self->total, kGlobalThresholdAGG,
    e888076c:	4619                	li	a2,6
    e888076e:	0004d597          	auipc	a1,0x4d
    e8880772:	1e258593          	addi	a1,a1,482 # e88cd950 <kGlobalThresholdAGG>
    e8880776:	bf55                	j	e888072a <WebRtcVad_set_mode_core+0xfe>

00000000e8880778 <WebRtcVad_InitCore>:
  if (self == NULL) {
    e8880778:	e901                	bnez	a0,e8880788 <WebRtcVad_InitCore+0x10>
    return -1;
    e888077a:	557d                	li	a0,-1
}
    e888077c:	8082                	ret
    return -1;
    e888077e:	557d                	li	a0,-1
}
    e8880780:	60a2                	ld	ra,8(sp)
    e8880782:	6402                	ld	s0,0(sp)
    e8880784:	0141                	addi	sp,sp,16
    e8880786:	8082                	ret
int WebRtcVad_InitCore(VadInstT* self) {
    e8880788:	1141                	addi	sp,sp,-16
    e888078a:	e406                	sd	ra,8(sp)
    e888078c:	e022                	sd	s0,0(sp)
  self->vad = 1;  // Speech active (=1).
    e888078e:	4785                	li	a5,1
    e8880790:	c11c                	sw	a5,0(a0)
    e8880792:	842a                	mv	s0,a0
  self->frame_counter = 0;
    e8880794:	10053a23          	sd	zero,276(a0)
  memset(self->downsampling_filter_states, 0,
    e8880798:	4581                	li	a1,0
    e888079a:	4641                	li	a2,16
    e888079c:	0511                	addi	a0,a0,4
    e888079e:	bf7fb0ef          	jal	ra,e887c394 <eLIBs_memset>
  WebRtcSpl_ResetResample48khzTo8khz(&self->state_48_to_8);
    e88807a2:	01440513          	addi	a0,s0,20
    e88807a6:	760020ef          	jal	ra,e8882f06 <WebRtcSpl_ResetResample48khzTo8khz>
  for (i = 0; i < kTableSize; i++) {
    e88807aa:	0b440713          	addi	a4,s0,180
  WebRtcSpl_ResetResample48khzTo8khz(&self->state_48_to_8);
    e88807ae:	4781                	li	a5,0
    self->noise_means[i] = kNoiseDataMeans[i];
    e88807b0:	0004d897          	auipc	a7,0x4d
    e88807b4:	1e088893          	addi	a7,a7,480 # e88cd990 <kNoiseDataMeans>
    self->speech_means[i] = kSpeechDataMeans[i];
    e88807b8:	0004d817          	auipc	a6,0x4d
    e88807bc:	24880813          	addi	a6,a6,584 # e88cda00 <kSpeechDataMeans>
    self->noise_stds[i] = kNoiseDataStds[i];
    e88807c0:	0004d517          	auipc	a0,0x4d
    e88807c4:	1e850513          	addi	a0,a0,488 # e88cd9a8 <kNoiseDataStds>
    self->speech_stds[i] = kSpeechDataStds[i];
    e88807c8:	0004d597          	auipc	a1,0x4d
    e88807cc:	25058593          	addi	a1,a1,592 # e88cda18 <kSpeechDataStds>
  for (i = 0; i < kTableSize; i++) {
    e88807d0:	46e1                	li	a3,24
    self->noise_means[i] = kNoiseDataMeans[i];
    e88807d2:	a117c60b          	lrhu	a2,a5,a7,0
    e88807d6:	0709                	addi	a4,a4,2
    e88807d8:	fec71f23          	sh	a2,-2(a4)
    self->speech_means[i] = kSpeechDataMeans[i];
    e88807dc:	a107c60b          	lrhu	a2,a5,a6,0
    e88807e0:	00c71b23          	sh	a2,22(a4)
    self->noise_stds[i] = kNoiseDataStds[i];
    e88807e4:	a0a7c60b          	lrhu	a2,a5,a0,0
    e88807e8:	02c71723          	sh	a2,46(a4)
    self->speech_stds[i] = kSpeechDataStds[i];
    e88807ec:	a0b7c60b          	lrhu	a2,a5,a1,0
    e88807f0:	0789                	addi	a5,a5,2
    e88807f2:	04c71323          	sh	a2,70(a4)
  for (i = 0; i < kTableSize; i++) {
    e88807f6:	fcd79ee3          	bne	a5,a3,e88807d2 <WebRtcVad_InitCore+0x5a>
    self->low_value_vector[i] = 10000;
    e88807fa:	6709                	lui	a4,0x2
    e88807fc:	11c40793          	addi	a5,s0,284
    e8880800:	1dc40693          	addi	a3,s0,476
    e8880804:	7107071b          	addiw	a4,a4,1808
    e8880808:	0ce79023          	sh	a4,192(a5)
    self->index_vector[i] = 0;
    e888080c:	3827d00b          	shia	zero,(a5),2,0
  for (i = 0; i < 16 * kNumChannels; i++) {
    e8880810:	fed79ce3          	bne	a5,a3,e8880808 <WebRtcVad_InitCore+0x90>
  memset(self->upper_state, 0, sizeof(self->upper_state));
    e8880814:	4629                	li	a2,10
    e8880816:	4581                	li	a1,0
    e8880818:	2a840513          	addi	a0,s0,680
    e888081c:	b79fb0ef          	jal	ra,e887c394 <eLIBs_memset>
  memset(self->lower_state, 0, sizeof(self->lower_state));
    e8880820:	4629                	li	a2,10
    e8880822:	4581                	li	a1,0
    e8880824:	2b240513          	addi	a0,s0,690
    e8880828:	b6dfb0ef          	jal	ra,e887c394 <eLIBs_memset>
  memset(self->hp_filter_state, 0, sizeof(self->hp_filter_state));
    e888082c:	4581                	li	a1,0
    e888082e:	2bc40513          	addi	a0,s0,700
    e8880832:	4621                	li	a2,8
    e8880834:	b61fb0ef          	jal	ra,e887c394 <eLIBs_memset>
    self->mean_value[i] = 1600;
    e8880838:	0004d797          	auipc	a5,0x4d
    e888083c:	11078793          	addi	a5,a5,272 # e88cd948 <kBlocks80w128+0x208>
    e8880840:	639c                	ld	a5,0(a5)
  if (WebRtcVad_set_mode_core(self, kDefaultMode) != 0) {
    e8880842:	4581                	li	a1,0
    e8880844:	8522                	mv	a0,s0
    self->mean_value[i] = 1600;
    e8880846:	28f43e23          	sd	a5,668(s0)
    e888084a:	064007b7          	lui	a5,0x6400
    e888084e:	6407879b          	addiw	a5,a5,1600
    e8880852:	2af42223          	sw	a5,676(s0)
  if (WebRtcVad_set_mode_core(self, kDefaultMode) != 0) {
    e8880856:	dd7ff0ef          	jal	ra,e888062c <WebRtcVad_set_mode_core>
    e888085a:	f115                	bnez	a0,e888077e <WebRtcVad_InitCore+0x6>
  self->init_flag = kInitCheck;
    e888085c:	02a00793          	li	a5,42
    e8880860:	2cf42e23          	sw	a5,732(s0)
  return 0;
    e8880864:	bf31                	j	e8880780 <WebRtcVad_InitCore+0x8>

00000000e8880866 <CalcLinearEnergiesC>:

    // Get energy for the delayed far end signal and estimated
    // echo using both stored and adapted channels.
    for (i = 0; i < PART_LEN1; i++)
    {
        echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
    e8880866:	6891                	lui	a7,0x4
{
    e8880868:	4801                	li	a6,0
        echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
    e888086a:	9546                	add	a0,a0,a7
    for (i = 0; i < PART_LEN1; i++)
    e888086c:	08200313          	li	t1,130
        echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
    e8880870:	e8053883          	ld	a7,-384(a0)
    e8880874:	a105ce0b          	lrhu	t3,a1,a6,0
    e8880878:	2108c88b          	lrh	a7,a7,a6,0
    e888087c:	03c888bb          	mulw	a7,a7,t3
    e8880880:	4306588b          	srw	a7,a2,a6,1
                                           far_spectrum[i]);
        (*far_energy) += (uint32_t)(far_spectrum[i]);
    e8880884:	a105ce0b          	lrhu	t3,a1,a6,0
    e8880888:	0006a883          	lw	a7,0(a3)
    e888088c:	01c888bb          	addw	a7,a7,t3
    e8880890:	0116a023          	sw	a7,0(a3)
        (*echo_energy_adapt) += WEBRTC_SPL_UMUL_16_16(aecm->channelAdapt16[i],
    e8880894:	e8853883          	ld	a7,-376(a0)
    e8880898:	a105ce0b          	lrhu	t3,a1,a6,0
    e888089c:	a108ce8b          	lrhu	t4,a7,a6,0
    e88808a0:	00072883          	lw	a7,0(a4) # 2000 <memcmp-0xe87fe000>
    e88808a4:	25ce988b          	mulaw	a7,t4,t3
    e88808a8:	01172023          	sw	a7,0(a4)
                                          far_spectrum[i]);
        (*echo_energy_stored) += (uint32_t)echo_est[i];
    e88808ac:	43064e0b          	lrw	t3,a2,a6,1
    e88808b0:	0007a883          	lw	a7,0(a5) # 6400000 <memcmp-0xe2400000>
    e88808b4:	0809                	addi	a6,a6,2
    e88808b6:	01c888bb          	addw	a7,a7,t3
    e88808ba:	0117a023          	sw	a7,0(a5)
    for (i = 0; i < PART_LEN1; i++)
    e88808be:	fa6819e3          	bne	a6,t1,e8880870 <CalcLinearEnergiesC+0xa>
    }
}
    e88808c2:	8082                	ret

00000000e88808c4 <ResetAdaptiveChannelC>:
    echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
                                       far_spectrum[i]);
}

static void ResetAdaptiveChannelC(AecmCore_t* aecm)
{
    e88808c4:	1141                	addi	sp,sp,-16
    e88808c6:	e022                	sd	s0,0(sp)
    int i;

    // The stored channel has a significantly lower MSE than the adaptive one for
    // two consecutive calculations. Reset the adaptive channel.
    memcpy(aecm->channelAdapt16, aecm->channelStored,
    e88808c8:	6411                	lui	s0,0x4
    e88808ca:	942a                	add	s0,s0,a0
{
    e88808cc:	e406                	sd	ra,8(sp)
    memcpy(aecm->channelAdapt16, aecm->channelStored,
    e88808ce:	e8043583          	ld	a1,-384(s0) # 3e80 <memcmp-0xe87fc180>
    e88808d2:	e8843503          	ld	a0,-376(s0)
    e88808d6:	08200613          	li	a2,130
    e88808da:	ac7fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e88808de:	4701                	li	a4,0
    e88808e0:	4781                	li	a5,0
           sizeof(int16_t) * PART_LEN1);
    // Restore the W32 channel
    for (i = 0; i < PART_LEN; i += 4)
    {
        aecm->channelAdapt32[i] = WEBRTC_SPL_LSHIFT_W32(
    e88808e2:	8522                	mv	a0,s0
    for (i = 0; i < PART_LEN; i += 4)
    e88808e4:	08000593          	li	a1,128
        aecm->channelAdapt32[i] = WEBRTC_SPL_LSHIFT_W32(
    e88808e8:	e8053683          	ld	a3,-384(a0)
    e88808ec:	e9053603          	ld	a2,-368(a0)
    e88808f0:	20f6c68b          	lrh	a3,a3,a5,0
    e88808f4:	0106969b          	slliw	a3,a3,0x10
    e88808f8:	40e6568b          	srw	a3,a2,a4,0
                (int32_t)aecm->channelStored[i], 16);
        aecm->channelAdapt32[i + 1] = WEBRTC_SPL_LSHIFT_W32(
    e88808fc:	e8053603          	ld	a2,-384(a0)
    e8880900:	e9053683          	ld	a3,-368(a0)
    e8880904:	963e                	add	a2,a2,a5
    e8880906:	00261603          	lh	a2,2(a2)
    e888090a:	96ba                	add	a3,a3,a4
    e888090c:	0106161b          	slliw	a2,a2,0x10
    e8880910:	c2d0                	sw	a2,4(a3)
                (int32_t)aecm->channelStored[i + 1], 16);
        aecm->channelAdapt32[i + 2] = WEBRTC_SPL_LSHIFT_W32(
    e8880912:	e8053603          	ld	a2,-384(a0)
    e8880916:	e9053683          	ld	a3,-368(a0)
    e888091a:	963e                	add	a2,a2,a5
    e888091c:	00461603          	lh	a2,4(a2)
    e8880920:	96ba                	add	a3,a3,a4
    e8880922:	0106161b          	slliw	a2,a2,0x10
    e8880926:	c690                	sw	a2,8(a3)
                (int32_t)aecm->channelStored[i + 2], 16);
        aecm->channelAdapt32[i + 3] = WEBRTC_SPL_LSHIFT_W32(
    e8880928:	e8053603          	ld	a2,-384(a0)
    e888092c:	e9053683          	ld	a3,-368(a0)
    e8880930:	963e                	add	a2,a2,a5
    e8880932:	00661603          	lh	a2,6(a2)
    e8880936:	96ba                	add	a3,a3,a4
    e8880938:	07a1                	addi	a5,a5,8
    e888093a:	0106161b          	slliw	a2,a2,0x10
    e888093e:	c6d0                	sw	a2,12(a3)
    for (i = 0; i < PART_LEN; i += 4)
    e8880940:	0741                	addi	a4,a4,16
    e8880942:	fab793e3          	bne	a5,a1,e88808e8 <ResetAdaptiveChannelC+0x24>
                (int32_t)aecm->channelStored[i + 3], 16);
    }
    aecm->channelAdapt32[i] = WEBRTC_SPL_LSHIFT_W32((int32_t)aecm->channelStored[i], 16);
    e8880946:	e8053783          	ld	a5,-384(a0)
    e888094a:	e9053703          	ld	a4,-368(a0)
    e888094e:	08079783          	lh	a5,128(a5)
    e8880952:	0107979b          	slliw	a5,a5,0x10
    e8880956:	10f72023          	sw	a5,256(a4)
}
    e888095a:	60a2                	ld	ra,8(sp)
    e888095c:	6402                	ld	s0,0(sp)
    e888095e:	0141                	addi	sp,sp,16
    e8880960:	8082                	ret

00000000e8880962 <StoreAdaptiveChannelC>:
{
    e8880962:	1101                	addi	sp,sp,-32
    e8880964:	f891540b          	sdd	s0,s1,(sp),0,4
    memcpy(aecm->channelStored, aecm->channelAdapt16, sizeof(int16_t) * PART_LEN1);
    e8880968:	6411                	lui	s0,0x4
    e888096a:	942a                	add	s0,s0,a0
{
    e888096c:	e84a                	sd	s2,16(sp)
    e888096e:	ec06                	sd	ra,24(sp)
    e8880970:	892e                	mv	s2,a1
    memcpy(aecm->channelStored, aecm->channelAdapt16, sizeof(int16_t) * PART_LEN1);
    e8880972:	e8043503          	ld	a0,-384(s0) # 3e80 <memcmp-0xe87fc180>
    e8880976:	e8843583          	ld	a1,-376(s0)
{
    e888097a:	84b2                	mv	s1,a2
    memcpy(aecm->channelStored, aecm->channelAdapt16, sizeof(int16_t) * PART_LEN1);
    e888097c:	08200613          	li	a2,130
    e8880980:	a21fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    for (i = 0; i < PART_LEN; i += 4)
    e8880984:	86ca                	mv	a3,s2
    e8880986:	8726                	mv	a4,s1
    memcpy(aecm->channelStored, aecm->channelAdapt16, sizeof(int16_t) * PART_LEN1);
    e8880988:	4789                	li	a5,2
        echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
    e888098a:	8522                	mv	a0,s0
    for (i = 0; i < PART_LEN; i += 4)
    e888098c:	08200593          	li	a1,130
        echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
    e8880990:	e8053603          	ld	a2,-384(a0)
    e8880994:	0006d803          	lhu	a6,0(a3)
    e8880998:	0741                	addi	a4,a4,16
    e888099a:	963e                	add	a2,a2,a5
    e888099c:	ffe61603          	lh	a2,-2(a2)
    e88809a0:	06a1                	addi	a3,a3,8
    e88809a2:	0306063b          	mulw	a2,a2,a6
    e88809a6:	fec72823          	sw	a2,-16(a4)
        echo_est[i + 1] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i + 1],
    e88809aa:	e8053603          	ld	a2,-384(a0)
    e88809ae:	ffa6d803          	lhu	a6,-6(a3)
    e88809b2:	20f6460b          	lrh	a2,a2,a5,0
    e88809b6:	0306063b          	mulw	a2,a2,a6
    e88809ba:	fec72a23          	sw	a2,-12(a4)
        echo_est[i + 2] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i + 2],
    e88809be:	e8053603          	ld	a2,-384(a0)
    e88809c2:	ffc6d803          	lhu	a6,-4(a3)
    e88809c6:	963e                	add	a2,a2,a5
    e88809c8:	00261603          	lh	a2,2(a2)
    e88809cc:	0306063b          	mulw	a2,a2,a6
    e88809d0:	fec72c23          	sw	a2,-8(a4)
        echo_est[i + 3] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i + 3],
    e88809d4:	e8053603          	ld	a2,-384(a0)
    e88809d8:	ffe6d803          	lhu	a6,-2(a3)
    e88809dc:	963e                	add	a2,a2,a5
    e88809de:	00461603          	lh	a2,4(a2)
    e88809e2:	07a1                	addi	a5,a5,8
    e88809e4:	0306063b          	mulw	a2,a2,a6
    e88809e8:	fec72e23          	sw	a2,-4(a4)
    for (i = 0; i < PART_LEN; i += 4)
    e88809ec:	fab792e3          	bne	a5,a1,e8880990 <StoreAdaptiveChannelC+0x2e>
    echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
    e88809f0:	e8053783          	ld	a5,-384(a0)
    e88809f4:	08095703          	lhu	a4,128(s2)
}
    e88809f8:	60e2                	ld	ra,24(sp)
    echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
    e88809fa:	08079783          	lh	a5,128(a5)
}
    e88809fe:	6942                	ld	s2,16(sp)
    echo_est[i] = WEBRTC_SPL_MUL_16_U16(aecm->channelStored[i],
    e8880a00:	02e787bb          	mulw	a5,a5,a4
    e8880a04:	10f4a023          	sw	a5,256(s1)
}
    e8880a08:	f891440b          	ldd	s0,s1,(sp),0,4
    e8880a0c:	6105                	addi	sp,sp,32
    e8880a0e:	8082                	ret

00000000e8880a10 <WebRtcSpl_NormW32.part.0>:
    a = ~a;
    e8880a10:	43f55793          	srai	a5,a0,0x3f
    e8880a14:	8d3d                	xor	a0,a0,a5
  if (!(0xFFFF8000 & a)) {
    e8880a16:	77e1                	lui	a5,0xffff8
    e8880a18:	8fe9                	and	a5,a5,a0
    zeros = 0;
    e8880a1a:	0017b793          	seqz	a5,a5
    e8880a1e:	0792                	slli	a5,a5,0x4
  if (!(0xFF800000 & (a << zeros))) zeros += 8;
    e8880a20:	00f5173b          	sllw	a4,a0,a5
    e8880a24:	ff8006b7          	lui	a3,0xff800
    e8880a28:	8f75                	and	a4,a4,a3
    e8880a2a:	e311                	bnez	a4,e8880a2e <WebRtcSpl_NormW32.part.0+0x1e>
    e8880a2c:	27a1                	addiw	a5,a5,8
  if (!(0xF8000000 & (a << zeros))) zeros += 4;
    e8880a2e:	00f5173b          	sllw	a4,a0,a5
    e8880a32:	f80006b7          	lui	a3,0xf8000
    e8880a36:	8f75                	and	a4,a4,a3
    e8880a38:	e311                	bnez	a4,e8880a3c <WebRtcSpl_NormW32.part.0+0x2c>
    e8880a3a:	2791                	addiw	a5,a5,4
  if (!(0xE0000000 & (a << zeros))) zeros += 2;
    e8880a3c:	00f5173b          	sllw	a4,a0,a5
    e8880a40:	e00006b7          	lui	a3,0xe0000
    e8880a44:	8f75                	and	a4,a4,a3
    e8880a46:	e311                	bnez	a4,e8880a4a <WebRtcSpl_NormW32.part.0+0x3a>
    e8880a48:	2789                	addiw	a5,a5,2
  if (!(0xC0000000 & (a << zeros))) zeros += 1;
    e8880a4a:	00f5153b          	sllw	a0,a0,a5
    e8880a4e:	c0000737          	lui	a4,0xc0000
    e8880a52:	8d79                	and	a0,a0,a4
    e8880a54:	e111                	bnez	a0,e8880a58 <WebRtcSpl_NormW32.part.0+0x48>
    e8880a56:	2785                	addiw	a5,a5,1
}
    e8880a58:	853e                	mv	a0,a5
    e8880a5a:	8082                	ret

00000000e8880a5c <WebRtcSpl_NormU32>:
  if (a == 0) return 0;
    e8880a5c:	4781                	li	a5,0
    e8880a5e:	c121                	beqz	a0,e8880a9e <WebRtcSpl_NormU32+0x42>
  if (!(0xFFFF0000 & a)) {
    e8880a60:	77c1                	lui	a5,0xffff0
    e8880a62:	8fe9                	and	a5,a5,a0
    zeros = 0;
    e8880a64:	0017b793          	seqz	a5,a5
    e8880a68:	0792                	slli	a5,a5,0x4
  if (!(0xFF000000 & (a << zeros))) zeros += 8;
    e8880a6a:	00f5173b          	sllw	a4,a0,a5
    e8880a6e:	ff0006b7          	lui	a3,0xff000
    e8880a72:	8f75                	and	a4,a4,a3
    e8880a74:	e311                	bnez	a4,e8880a78 <WebRtcSpl_NormU32+0x1c>
    e8880a76:	27a1                	addiw	a5,a5,8
  if (!(0xF0000000 & (a << zeros))) zeros += 4;
    e8880a78:	00f5173b          	sllw	a4,a0,a5
    e8880a7c:	f00006b7          	lui	a3,0xf0000
    e8880a80:	8f75                	and	a4,a4,a3
    e8880a82:	e311                	bnez	a4,e8880a86 <WebRtcSpl_NormU32+0x2a>
    e8880a84:	2791                	addiw	a5,a5,4
  if (!(0xC0000000 & (a << zeros))) zeros += 2;
    e8880a86:	00f5173b          	sllw	a4,a0,a5
    e8880a8a:	c00006b7          	lui	a3,0xc0000
    e8880a8e:	8f75                	and	a4,a4,a3
    e8880a90:	e311                	bnez	a4,e8880a94 <WebRtcSpl_NormU32+0x38>
    e8880a92:	2789                	addiw	a5,a5,2
  if (!(0x80000000 & (a << zeros))) zeros += 1;
    e8880a94:	00f5153b          	sllw	a0,a0,a5
    e8880a98:	00054363          	bltz	a0,e8880a9e <WebRtcSpl_NormU32+0x42>
    e8880a9c:	2785                	addiw	a5,a5,1
}
    e8880a9e:	853e                	mv	a0,a5
    e8880aa0:	8082                	ret

00000000e8880aa2 <WebRtcAecm_UpdateFarHistory>:
  self->far_history_pos++;
    e8880aa2:	670d                	lui	a4,0x3
    e8880aa4:	972a                	add	a4,a4,a0
    e8880aa6:	51c72783          	lw	a5,1308(a4) # 351c <memcmp-0xe87fcae4>
  if (self->far_history_pos >= MAX_DELAY) {
    e8880aaa:	06300813          	li	a6,99
  self->far_history_pos++;
    e8880aae:	2785                	addiw	a5,a5,1
    e8880ab0:	86be                	mv	a3,a5
    e8880ab2:	00f827b3          	slt	a5,a6,a5
    e8880ab6:	42f0168b          	mvnez	a3,zero,a5
    e8880aba:	50d72e23          	sw	a3,1308(a4)
  self->far_q_domains[self->far_history_pos] = far_q;
    e8880abe:	6705                	lui	a4,0x1
  self->far_history_pos++;
    e8880ac0:	87b6                	mv	a5,a3
  self->far_q_domains[self->far_history_pos] = far_q;
    e8880ac2:	d4870713          	addi	a4,a4,-696 # d48 <memcmp-0xe87ff2b8>
    e8880ac6:	973e                	add	a4,a4,a5
    e8880ac8:	44e5560b          	srw	a2,a0,a4,2
  memcpy(&(self->far_history[self->far_history_pos * PART_LEN1]),
    e8880acc:	04100713          	li	a4,65
    e8880ad0:	02d707bb          	mulw	a5,a4,a3
    e8880ad4:	08200613          	li	a2,130
    e8880ad8:	12978793          	addi	a5,a5,297 # ffffffffffff0129 <__DRAM0_INF_BASE+0xffffffff00000129>
    e8880adc:	02f5150b          	addsl	a0,a0,a5,1
    e8880ae0:	8c1fb06f          	j	e887c3a0 <eLIBs_memcpy>

00000000e8880ae4 <WebRtcAecm_AlignedFarend>:
                                         int delay) {
    e8880ae4:	1101                	addi	sp,sp,-32
    e8880ae6:	f891540b          	sdd	s0,s1,(sp),0,4
    e8880aea:	e84a                	sd	s2,16(sp)
    e8880aec:	ec06                	sd	ra,24(sp)
    e8880aee:	842a                	mv	s0,a0
    e8880af0:	84ae                	mv	s1,a1
    e8880af2:	8932                	mv	s2,a2
  assert(self != NULL);
    e8880af4:	e11d                	bnez	a0,e8880b1a <WebRtcAecm_AlignedFarend+0x36>
    e8880af6:	02f00593          	li	a1,47
    e8880afa:	0004d517          	auipc	a0,0x4d
    e8880afe:	f3650513          	addi	a0,a0,-202 # e88cda30 <kSpeechDataStds+0x18>
    e8880b02:	877fb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8880b06:	00150593          	addi	a1,a0,1
    e8880b0a:	0c000613          	li	a2,192
    e8880b0e:	0001f517          	auipc	a0,0x1f
    e8880b12:	6a250513          	addi	a0,a0,1698 # e88a01b0 <TWO52+0x5b8>
    e8880b16:	fb0fb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  buffer_position = self->far_history_pos - delay;
    e8880b1a:	678d                	lui	a5,0x3
    e8880b1c:	97a2                	add	a5,a5,s0
    e8880b1e:	51c7a603          	lw	a2,1308(a5) # 351c <memcmp-0xe87fcae4>
    e8880b22:	4126073b          	subw	a4,a2,s2
  if (buffer_position < 0) {
    e8880b26:	00075463          	bgez	a4,e8880b2e <WebRtcAecm_AlignedFarend+0x4a>
    buffer_position += MAX_DELAY;
    e8880b2a:	0647071b          	addiw	a4,a4,100
  return &(self->far_history[buffer_position * PART_LEN1]);
    e8880b2e:	04100513          	li	a0,65
    e8880b32:	02e5053b          	mulw	a0,a0,a4
  *far_q = self->far_q_domains[buffer_position];
    e8880b36:	6785                	lui	a5,0x1
    e8880b38:	d4878793          	addi	a5,a5,-696 # d48 <memcmp-0xe87ff2b8>
    e8880b3c:	97ba                	add	a5,a5,a4
    e8880b3e:	44f4478b          	lrw	a5,s0,a5,2
}
    e8880b42:	60e2                	ld	ra,24(sp)
    e8880b44:	6942                	ld	s2,16(sp)
  *far_q = self->far_q_domains[buffer_position];
    e8880b46:	c09c                	sw	a5,0(s1)
  return &(self->far_history[buffer_position * PART_LEN1]);
    e8880b48:	12950513          	addi	a0,a0,297
}
    e8880b4c:	02a4150b          	addsl	a0,s0,a0,1
    e8880b50:	f891440b          	ldd	s0,s1,(sp),0,4
    e8880b54:	6105                	addi	sp,sp,32
    e8880b56:	8082                	ret

00000000e8880b58 <WebRtcAecm_InitEchoPathCore>:
{
    e8880b58:	1101                	addi	sp,sp,-32
    e8880b5a:	e422                	sd	s0,8(sp)
    memcpy(aecm->channelStored, echo_path, sizeof(int16_t) * PART_LEN1);
    e8880b5c:	6411                	lui	s0,0x4
    e8880b5e:	942a                	add	s0,s0,a0
{
    e8880b60:	ec06                	sd	ra,24(sp)
    e8880b62:	e826                	sd	s1,16(sp)
    memcpy(aecm->channelStored, echo_path, sizeof(int16_t) * PART_LEN1);
    e8880b64:	e8043503          	ld	a0,-384(s0) # 3e80 <memcmp-0xe87fc180>
    e8880b68:	08200613          	li	a2,130
{
    e8880b6c:	84ae                	mv	s1,a1
    memcpy(aecm->channelStored, echo_path, sizeof(int16_t) * PART_LEN1);
    e8880b6e:	833fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    memcpy(aecm->channelAdapt16, echo_path, sizeof(int16_t) * PART_LEN1);
    e8880b72:	e8843503          	ld	a0,-376(s0)
    e8880b76:	08200613          	li	a2,130
    e8880b7a:	85a6                	mv	a1,s1
    e8880b7c:	825fb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e8880b80:	4781                	li	a5,0
        aecm->channelAdapt32[i] = WEBRTC_SPL_LSHIFT_W32(
    e8880b82:	8522                	mv	a0,s0
    for (i = 0; i < PART_LEN1; i++)
    e8880b84:	08200693          	li	a3,130
        aecm->channelAdapt32[i] = WEBRTC_SPL_LSHIFT_W32(
    e8880b88:	e8853703          	ld	a4,-376(a0)
    e8880b8c:	e9053603          	ld	a2,-368(a0)
    e8880b90:	20f7470b          	lrh	a4,a4,a5,0
    e8880b94:	0107171b          	slliw	a4,a4,0x10
    e8880b98:	42f6570b          	srw	a4,a2,a5,1
    for (i = 0; i < PART_LEN1; i++)
    e8880b9c:	0789                	addi	a5,a5,2
    e8880b9e:	fed795e3          	bne	a5,a3,e8880b88 <WebRtcAecm_InitEchoPathCore+0x30>
    aecm->mseAdaptOld = 1000;
    e8880ba2:	3e800793          	li	a5,1000
    e8880ba6:	1782                	slli	a5,a5,0x20
    e8880ba8:	3e878793          	addi	a5,a5,1000
    e8880bac:	34f53823          	sd	a5,848(a0)
    aecm->mseThreshold = WEBRTC_SPL_WORD32_MAX;
    e8880bb0:	800007b7          	lui	a5,0x80000
    e8880bb4:	fff7c793          	not	a5,a5
    e8880bb8:	34f52c23          	sw	a5,856(a0)
    aecm->mseChannelCount = 0;
    e8880bbc:	36051823          	sh	zero,880(a0)
}
    e8880bc0:	60e2                	ld	ra,24(sp)
    e8880bc2:	6422                	ld	s0,8(sp)
    e8880bc4:	64c2                	ld	s1,16(sp)
    e8880bc6:	6105                	addi	sp,sp,32
    e8880bc8:	8082                	ret

00000000e8880bca <WebRtcAecm_InitCore>:
//
// Return value         :  0 - Ok
//                        -1 - Error
//
int WebRtcAecm_InitCore(AecmCore_t * const aecm, int samplingFreq)
{
    e8880bca:	7179                	addi	sp,sp,-48
    int i = 0;
    int32_t tmp32 = PART_LEN1 * PART_LEN1;
    int16_t tmp16 = PART_LEN1;

    if (samplingFreq != 8000 && samplingFreq != 16000)
    e8880bcc:	6789                	lui	a5,0x2
{
    e8880bce:	f406                	sd	ra,40(sp)
    e8880bd0:	f052                	sd	s4,32(sp)
    e8880bd2:	f891540b          	sdd	s0,s1,(sp),0,4
    e8880bd6:	fb31590b          	sdd	s2,s3,(sp),1,4
    if (samplingFreq != 8000 && samplingFreq != 16000)
    e8880bda:	f4078793          	addi	a5,a5,-192 # 1f40 <memcmp-0xe87fe0c0>
    e8880bde:	02f58163          	beq	a1,a5,e8880c00 <WebRtcAecm_InitCore+0x36>
    e8880be2:	6791                	lui	a5,0x4
    e8880be4:	e8078793          	addi	a5,a5,-384 # 3e80 <memcmp-0xe87fc180>
    e8880be8:	00f58c63          	beq	a1,a5,e8880c00 <WebRtcAecm_InitCore+0x36>
    {
        samplingFreq = 8000;
        return -1;
    e8880bec:	597d                	li	s2,-1

#if defined(MIPS32_LE)
    WebRtcAecm_InitMips();
#endif
    return 0;
}
    e8880bee:	70a2                	ld	ra,40(sp)
    e8880bf0:	f891440b          	ldd	s0,s1,(sp),0,4
    e8880bf4:	854a                	mv	a0,s2
    e8880bf6:	7a02                	ld	s4,32(sp)
    e8880bf8:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8880bfc:	6145                	addi	sp,sp,48
    e8880bfe:	8082                	ret
    aecm->mult = (int16_t)samplingFreq / 8000;
    e8880c00:	0105979b          	slliw	a5,a1,0x10
    e8880c04:	6709                	lui	a4,0x2
    e8880c06:	f407071b          	addiw	a4,a4,-192
    e8880c0a:	4107d79b          	sraiw	a5,a5,0x10
    e8880c0e:	02e7c7bb          	divw	a5,a5,a4
    e8880c12:	842a                	mv	s0,a0
    aecm->farBufWritePos = 0;
    e8880c14:	00053023          	sd	zero,0(a0)
    aecm->knownDelay = 0;
    e8880c18:	00053423          	sd	zero,8(a0)
    e8880c1c:	89ae                	mv	s3,a1
    memset(aecm->xBuf_buf, 0, sizeof(aecm->xBuf_buf));
    e8880c1e:	6491                	lui	s1,0x4
    aecm->mult = (int16_t)samplingFreq / 8000;
    e8880c20:	22f51c23          	sh	a5,568(a0)
    WebRtc_InitBuffer(aecm->farFrameBuf);
    e8880c24:	6d08                	ld	a0,24(a0)
    e8880c26:	e34ff0ef          	jal	ra,e888025a <WebRtc_InitBuffer>
    WebRtc_InitBuffer(aecm->nearNoisyFrameBuf);
    e8880c2a:	7008                	ld	a0,32(s0)
    e8880c2c:	e2eff0ef          	jal	ra,e888025a <WebRtc_InitBuffer>
    WebRtc_InitBuffer(aecm->nearCleanFrameBuf);
    e8880c30:	7408                	ld	a0,40(s0)
    e8880c32:	e28ff0ef          	jal	ra,e888025a <WebRtc_InitBuffer>
    WebRtc_InitBuffer(aecm->outFrameBuf);
    e8880c36:	7808                	ld	a0,48(s0)
    e8880c38:	e22ff0ef          	jal	ra,e888025a <WebRtc_InitBuffer>
    memset(aecm->xBuf_buf, 0, sizeof(aecm->xBuf_buf));
    e8880c3c:	a8c48513          	addi	a0,s1,-1396 # 3a8c <memcmp-0xe87fc574>
    e8880c40:	12000613          	li	a2,288
    e8880c44:	4581                	li	a1,0
    e8880c46:	9522                	add	a0,a0,s0
    e8880c48:	f4cfb0ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(aecm->dBufClean_buf, 0, sizeof(aecm->dBufClean_buf));
    e8880c4c:	bac48513          	addi	a0,s1,-1108
    e8880c50:	12000613          	li	a2,288
    e8880c54:	4581                	li	a1,0
    e8880c56:	9522                	add	a0,a0,s0
    e8880c58:	f3cfb0ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(aecm->dBufNoisy_buf, 0, sizeof(aecm->dBufNoisy_buf));
    e8880c5c:	ccc48513          	addi	a0,s1,-820
    e8880c60:	12000613          	li	a2,288
    e8880c64:	4581                	li	a1,0
    e8880c66:	9522                	add	a0,a0,s0
    e8880c68:	f2cfb0ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(aecm->outBuf_buf, 0, sizeof(aecm->outBuf_buf));
    e8880c6c:	dec48513          	addi	a0,s1,-532
    e8880c70:	9522                	add	a0,a0,s0
    e8880c72:	09000613          	li	a2,144
    e8880c76:	4581                	li	a1,0
    e8880c78:	f1cfb0ef          	jal	ra,e887c394 <eLIBs_memset>
    aecm->totCount = 0;
    e8880c7c:	648d                	lui	s1,0x3
    aecm->seed = 666;
    e8880c7e:	29a00793          	li	a5,666
    e8880c82:	22f42e23          	sw	a5,572(s0)
    aecm->totCount = 0;
    e8880c86:	00940a33          	add	s4,s0,s1
    e8880c8a:	6a0a2a23          	sw	zero,1716(s4)
    if (WebRtc_InitDelayEstimatorFarend(aecm->delay_estimator_farend) != 0) {
    e8880c8e:	24043503          	ld	a0,576(s0)
    e8880c92:	42f010ef          	jal	ra,e88828c0 <WebRtc_InitDelayEstimatorFarend>
    e8880c96:	f939                	bnez	a0,e8880bec <WebRtcAecm_InitCore+0x22>
    if (WebRtc_InitDelayEstimator(aecm->delay_estimator) != 0) {
    e8880c98:	24843503          	ld	a0,584(s0)
    e8880c9c:	511010ef          	jal	ra,e88829ac <WebRtc_InitDelayEstimator>
    e8880ca0:	892a                	mv	s2,a0
    e8880ca2:	f529                	bnez	a0,e8880bec <WebRtcAecm_InitCore+0x22>
    memset(aecm->far_history, 0, sizeof(uint16_t) * PART_LEN1 * MAX_DELAY);
    e8880ca4:	2c848613          	addi	a2,s1,712 # 32c8 <memcmp-0xe87fcd38>
    e8880ca8:	4581                	li	a1,0
    e8880caa:	25240513          	addi	a0,s0,594
    e8880cae:	ee6fb0ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(aecm->far_q_domains, 0, sizeof(int) * MAX_DELAY);
    e8880cb2:	52048513          	addi	a0,s1,1312
    e8880cb6:	19000613          	li	a2,400
    e8880cba:	4581                	li	a1,0
    e8880cbc:	9522                	add	a0,a0,s0
    e8880cbe:	ed6fb0ef          	jal	ra,e887c394 <eLIBs_memset>
    aecm->dfaCleanQDomain = 0;
    e8880cc2:	6a0a3c23          	sd	zero,1720(s4)
    aecm->far_history_pos = MAX_DELAY;
    e8880cc6:	06400793          	li	a5,100
    e8880cca:	50fa2e23          	sw	a5,1308(s4)
    aecm->nlpFlag = 1;
    e8880cce:	77c1                	lui	a5,0xffff0
    e8880cd0:	2785                	addiw	a5,a5,1
    memset(aecm->nearLogEnergy, 0, sizeof(aecm->nearLogEnergy));
    e8880cd2:	6c048513          	addi	a0,s1,1728
    aecm->nlpFlag = 1;
    e8880cd6:	6afa2823          	sw	a5,1712(s4)
    memset(aecm->nearLogEnergy, 0, sizeof(aecm->nearLogEnergy));
    e8880cda:	08000613          	li	a2,128
    e8880cde:	4581                	li	a1,0
    e8880ce0:	9522                	add	a0,a0,s0
    e8880ce2:	eb2fb0ef          	jal	ra,e887c394 <eLIBs_memset>
    aecm->farLogEnergy = 0;
    e8880ce6:	740a1023          	sh	zero,1856(s4)
    memset(aecm->echoAdaptLogEnergy, 0, sizeof(aecm->echoAdaptLogEnergy));
    e8880cea:	74248513          	addi	a0,s1,1858
    e8880cee:	08000613          	li	a2,128
    e8880cf2:	4581                	li	a1,0
    e8880cf4:	9522                	add	a0,a0,s0
    e8880cf6:	e9efb0ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(aecm->echoStoredLogEnergy, 0, sizeof(aecm->echoStoredLogEnergy));
    e8880cfa:	7c248513          	addi	a0,s1,1986
    e8880cfe:	4581                	li	a1,0
    e8880d00:	08000613          	li	a2,128
    e8880d04:	9522                	add	a0,a0,s0
    e8880d06:	e8efb0ef          	jal	ra,e887c394 <eLIBs_memset>
    if (samplingFreq == 8000)
    e8880d0a:	6789                	lui	a5,0x2
    e8880d0c:	f4078793          	addi	a5,a5,-192 # 1f40 <memcmp-0xe87fe0c0>
        WebRtcAecm_InitEchoPathCore(aecm, kChannelStored8kHz);
    e8880d10:	0004d597          	auipc	a1,0x4d
    e8880d14:	40058593          	addi	a1,a1,1024 # e88ce110 <kChannelStored8kHz>
    if (samplingFreq == 8000)
    e8880d18:	00f98663          	beq	s3,a5,e8880d24 <WebRtcAecm_InitCore+0x15a>
        WebRtcAecm_InitEchoPathCore(aecm, kChannelStored16kHz);
    e8880d1c:	0004d597          	auipc	a1,0x4d
    e8880d20:	36c58593          	addi	a1,a1,876 # e88ce088 <kChannelStored16kHz>
    e8880d24:	8522                	mv	a0,s0
    e8880d26:	e33ff0ef          	jal	ra,e8880b58 <WebRtcAecm_InitEchoPathCore>
    memset(aecm->echoFilt, 0, sizeof(aecm->echoFilt));
    e8880d2a:	6491                	lui	s1,0x4
    e8880d2c:	eb848513          	addi	a0,s1,-328 # 3eb8 <memcmp-0xe87fc148>
    e8880d30:	10400613          	li	a2,260
    e8880d34:	4581                	li	a1,0
    e8880d36:	9522                	add	a0,a0,s0
    e8880d38:	e5cfb0ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(aecm->nearFilt, 0, sizeof(aecm->nearFilt));
    e8880d3c:	fbc48513          	addi	a0,s1,-68
    e8880d40:	08200613          	li	a2,130
    e8880d44:	4581                	li	a1,0
    e8880d46:	9522                	add	a0,a0,s0
    e8880d48:	e4cfb0ef          	jal	ra,e887c394 <eLIBs_memset>
    aecm->noiseEstCtr = 0;
    e8880d4c:	009407b3          	add	a5,s0,s1
    e8880d50:	6741                	lui	a4,0x10
    memset(aecm->noiseEstTooLowCtr, 0, sizeof(aecm->noiseEstTooLowCtr));
    e8880d52:	14448513          	addi	a0,s1,324
    aecm->noiseEstCtr = 0;
    e8880d56:	34e7a623          	sw	a4,844(a5)
    memset(aecm->noiseEstTooLowCtr, 0, sizeof(aecm->noiseEstTooLowCtr));
    e8880d5a:	10400613          	li	a2,260
    e8880d5e:	4581                	li	a1,0
    e8880d60:	9522                	add	a0,a0,s0
    e8880d62:	e32fb0ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(aecm->noiseEstTooHighCtr, 0, sizeof(aecm->noiseEstTooHighCtr));
    e8880d66:	24848513          	addi	a0,s1,584
    e8880d6a:	10400613          	li	a2,260
    e8880d6e:	4581                	li	a1,0
    e8880d70:	9522                	add	a0,a0,s0
    e8880d72:	e22fb0ef          	jal	ra,e887c394 <eLIBs_memset>
    for (i = 0; i < (PART_LEN1 >> 1) - 1; i++)
    e8880d76:	04048493          	addi	s1,s1,64
    int32_t tmp32 = PART_LEN1 * PART_LEN1;
    e8880d7a:	6785                	lui	a5,0x1
    e8880d7c:	94a2                	add	s1,s1,s0
    memset(aecm->noiseEstTooHighCtr, 0, sizeof(aecm->noiseEstTooHighCtr));
    e8880d7e:	f7f00713          	li	a4,-129
    int32_t tmp32 = PART_LEN1 * PART_LEN1;
    e8880d82:	08178793          	addi	a5,a5,129 # 1081 <memcmp-0xe87fef7f>
    for (i = 0; i < (PART_LEN1 >> 1) - 1; i++)
    e8880d86:	fbd00693          	li	a3,-67
        aecm->noiseEst[i] = (tmp32 << 8);
    e8880d8a:	0087961b          	slliw	a2,a5,0x8
    e8880d8e:	5844d60b          	swia	a2,(s1),4,0
        tmp32 -= (int32_t)((tmp16 << 1) + 1);
    e8880d92:	9fb9                	addw	a5,a5,a4
    for (i = 0; i < (PART_LEN1 >> 1) - 1; i++)
    e8880d94:	2709                	addiw	a4,a4,2
    e8880d96:	fed71ae3          	bne	a4,a3,e8880d8a <WebRtcAecm_InitCore+0x1c0>
    e8880d9a:	6791                	lui	a5,0x4
    e8880d9c:	0bc78713          	addi	a4,a5,188 # 40bc <memcmp-0xe87fbf44>
        aecm->noiseEst[i] = (tmp32 << 8);
    e8880da0:	000486b7          	lui	a3,0x48
    e8880da4:	14478793          	addi	a5,a5,324
    e8880da8:	9722                	add	a4,a4,s0
    e8880daa:	97a2                	add	a5,a5,s0
    e8880dac:	4006869b          	addiw	a3,a3,1024
    e8880db0:	5847568b          	swia	a3,(a4),4,0
    for (; i < PART_LEN1; i++)
    e8880db4:	fef71ee3          	bne	a4,a5,e8880db0 <WebRtcAecm_InitCore+0x1e6>
    aecm->farEnergyMin = WEBRTC_SPL_WORD16_MAX;
    e8880db8:	0004d717          	auipc	a4,0x4d
    e8880dbc:	d2070713          	addi	a4,a4,-736 # e88cdad8 <kSpeechDataStds+0xc0>
    e8880dc0:	6318                	ld	a4,0(a4)
    e8880dc2:	6791                	lui	a5,0x4
    e8880dc4:	97a2                	add	a5,a5,s0
    e8880dc6:	34e7be23          	sd	a4,860(a5) # 435c <memcmp-0xe87fbca4>
    aecm->farEnergyMSE = 0;
    e8880dca:	36079223          	sh	zero,868(a5)
    aecm->firstVAD = 1;
    e8880dce:	4705                	li	a4,1
    e8880dd0:	c818                	sw	a4,16(s0)
    aecm->supGain = SUPGAIN_DEFAULT;
    e8880dd2:	0004d717          	auipc	a4,0x4d
    e8880dd6:	d0e70713          	addi	a4,a4,-754 # e88cdae0 <kSpeechDataStds+0xc8>
    e8880dda:	6318                	ld	a4,0(a4)
    aecm->currentVADValue = 0;
    e8880ddc:	3607b423          	sd	zero,872(a5)
    aecm->supGain = SUPGAIN_DEFAULT;
    e8880de0:	36e7b923          	sd	a4,882(a5)
    aecm->supGainErrParamDiffAB = SUPGAIN_ERROR_PARAM_A - SUPGAIN_ERROR_PARAM_B;
    e8880de4:	05000737          	lui	a4,0x5000
    e8880de8:	6007071b          	addiw	a4,a4,1536
    e8880dec:	36e7ad23          	sw	a4,890(a5)
    WebRtcAecm_CalcLinearEnergies = CalcLinearEnergiesC;
    e8880df0:	00000797          	auipc	a5,0x0
    e8880df4:	a7678793          	addi	a5,a5,-1418 # e8880866 <CalcLinearEnergiesC>
    e8880df8:	00063717          	auipc	a4,0x63
    e8880dfc:	6af73023          	sd	a5,1696(a4) # e88e4498 <WebRtcAecm_CalcLinearEnergies>
    WebRtcAecm_StoreAdaptiveChannel = StoreAdaptiveChannelC;
    e8880e00:	00000797          	auipc	a5,0x0
    e8880e04:	b6278793          	addi	a5,a5,-1182 # e8880962 <StoreAdaptiveChannelC>
    e8880e08:	00063717          	auipc	a4,0x63
    e8880e0c:	6af73023          	sd	a5,1696(a4) # e88e44a8 <WebRtcAecm_StoreAdaptiveChannel>
    WebRtcAecm_ResetAdaptiveChannel = ResetAdaptiveChannelC;
    e8880e10:	00000797          	auipc	a5,0x0
    e8880e14:	ab478793          	addi	a5,a5,-1356 # e88808c4 <ResetAdaptiveChannelC>
    e8880e18:	00063717          	auipc	a4,0x63
    e8880e1c:	68f73423          	sd	a5,1672(a4) # e88e44a0 <WebRtcAecm_ResetAdaptiveChannel>
    return 0;
    e8880e20:	b3f9                	j	e8880bee <WebRtcAecm_InitCore+0x24>

00000000e8880e22 <WebRtcAecm_FreeCore>:
    return 0;
}

int WebRtcAecm_FreeCore(AecmCore_t *aecm)
{
    if (aecm == NULL)
    e8880e22:	c939                	beqz	a0,e8880e78 <WebRtcAecm_FreeCore+0x56>
{
    e8880e24:	1141                	addi	sp,sp,-16
    e8880e26:	e406                	sd	ra,8(sp)
    e8880e28:	e022                	sd	s0,0(sp)
    e8880e2a:	842a                	mv	s0,a0
    {
        return -1;
    }

    WebRtc_FreeBuffer(aecm->farFrameBuf);
    e8880e2c:	6d08                	ld	a0,24(a0)
    e8880e2e:	c5aff0ef          	jal	ra,e8880288 <WebRtc_FreeBuffer>
    WebRtc_FreeBuffer(aecm->nearNoisyFrameBuf);
    e8880e32:	7008                	ld	a0,32(s0)
    e8880e34:	c54ff0ef          	jal	ra,e8880288 <WebRtc_FreeBuffer>
    WebRtc_FreeBuffer(aecm->nearCleanFrameBuf);
    e8880e38:	7408                	ld	a0,40(s0)
    e8880e3a:	c4eff0ef          	jal	ra,e8880288 <WebRtc_FreeBuffer>
    WebRtc_FreeBuffer(aecm->outFrameBuf);
    e8880e3e:	7808                	ld	a0,48(s0)
    e8880e40:	c48ff0ef          	jal	ra,e8880288 <WebRtc_FreeBuffer>

    WebRtc_FreeDelayEstimator(aecm->delay_estimator);
    e8880e44:	24843503          	ld	a0,584(s0)
    e8880e48:	2e7010ef          	jal	ra,e888292e <WebRtc_FreeDelayEstimator>
    WebRtc_FreeDelayEstimatorFarend(aecm->delay_estimator_farend);
    e8880e4c:	24043503          	ld	a0,576(s0)
    e8880e50:	1f1010ef          	jal	ra,e8882840 <WebRtc_FreeDelayEstimatorFarend>
    WebRtcSpl_FreeRealFFT(aecm->real_fft);
    e8880e54:	6791                	lui	a5,0x4
    e8880e56:	97a2                	add	a5,a5,s0
    e8880e58:	00063717          	auipc	a4,0x63
    e8880e5c:	5e870713          	addi	a4,a4,1512 # e88e4440 <WebRtcSpl_FreeRealFFT>
    e8880e60:	3807b503          	ld	a0,896(a5) # 4380 <memcmp-0xe87fbc80>
    e8880e64:	6318                	ld	a4,0(a4)
    e8880e66:	9702                	jalr	a4

    free(aecm);
    e8880e68:	8522                	mv	a0,s0
    e8880e6a:	c96fb0ef          	jal	ra,e887c300 <eLIBs_free>

    return 0;
}
    e8880e6e:	6402                	ld	s0,0(sp)
    e8880e70:	60a2                	ld	ra,8(sp)
    return 0;
    e8880e72:	4501                	li	a0,0
}
    e8880e74:	0141                	addi	sp,sp,16
    e8880e76:	8082                	ret
        return -1;
    e8880e78:	557d                	li	a0,-1
}
    e8880e7a:	8082                	ret

00000000e8880e7c <WebRtcAecm_CreateCore>:
{
    e8880e7c:	1101                	addi	sp,sp,-32
    e8880e7e:	f891540b          	sdd	s0,s1,(sp),0,4
    AecmCore_t *aecm = malloc(sizeof(AecmCore_t));
    e8880e82:	6491                	lui	s1,0x4
{
    e8880e84:	e84a                	sd	s2,16(sp)
    e8880e86:	892a                	mv	s2,a0
    AecmCore_t *aecm = malloc(sizeof(AecmCore_t));
    e8880e88:	38848513          	addi	a0,s1,904 # 4388 <memcmp-0xe87fbc78>
{
    e8880e8c:	ec06                	sd	ra,24(sp)
    AecmCore_t *aecm = malloc(sizeof(AecmCore_t));
    e8880e8e:	9c1fa0ef          	jal	ra,e887b84e <my_malloc>
    *aecmInst = aecm;
    e8880e92:	00a93023          	sd	a0,0(s2)
    if (aecm == NULL)
    e8880e96:	cd01                	beqz	a0,e8880eae <WebRtcAecm_CreateCore+0x32>
    e8880e98:	842a                	mv	s0,a0
    aecm->farFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN,
    e8880e9a:	4589                	li	a1,2
    e8880e9c:	09000513          	li	a0,144
    e8880ea0:	b72ff0ef          	jal	ra,e8880212 <WebRtc_CreateBuffer>
    e8880ea4:	ec08                	sd	a0,24(s0)
    if (!aecm->farFrameBuf)
    e8880ea6:	e511                	bnez	a0,e8880eb2 <WebRtcAecm_CreateCore+0x36>
      WebRtcAecm_FreeCore(aecm);
    e8880ea8:	8522                	mv	a0,s0
    e8880eaa:	f79ff0ef          	jal	ra,e8880e22 <WebRtcAecm_FreeCore>
        return -1;
    e8880eae:	557d                	li	a0,-1
    e8880eb0:	a0d1                	j	e8880f74 <WebRtcAecm_CreateCore+0xf8>
    aecm->nearNoisyFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN,
    e8880eb2:	4589                	li	a1,2
    e8880eb4:	09000513          	li	a0,144
    e8880eb8:	b5aff0ef          	jal	ra,e8880212 <WebRtc_CreateBuffer>
    e8880ebc:	f008                	sd	a0,32(s0)
    if (!aecm->nearNoisyFrameBuf)
    e8880ebe:	d56d                	beqz	a0,e8880ea8 <WebRtcAecm_CreateCore+0x2c>
    aecm->nearCleanFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN,
    e8880ec0:	4589                	li	a1,2
    e8880ec2:	09000513          	li	a0,144
    e8880ec6:	b4cff0ef          	jal	ra,e8880212 <WebRtc_CreateBuffer>
    e8880eca:	f408                	sd	a0,40(s0)
    if (!aecm->nearCleanFrameBuf)
    e8880ecc:	dd71                	beqz	a0,e8880ea8 <WebRtcAecm_CreateCore+0x2c>
    aecm->outFrameBuf = WebRtc_CreateBuffer(FRAME_LEN + PART_LEN,
    e8880ece:	4589                	li	a1,2
    e8880ed0:	09000513          	li	a0,144
    e8880ed4:	b3eff0ef          	jal	ra,e8880212 <WebRtc_CreateBuffer>
    e8880ed8:	f808                	sd	a0,48(s0)
    if (!aecm->outFrameBuf)
    e8880eda:	d579                	beqz	a0,e8880ea8 <WebRtcAecm_CreateCore+0x2c>
    aecm->delay_estimator_farend = WebRtc_CreateDelayEstimatorFarend(PART_LEN1,
    e8880edc:	06400593          	li	a1,100
    e8880ee0:	04100513          	li	a0,65
    e8880ee4:	189010ef          	jal	ra,e888286c <WebRtc_CreateDelayEstimatorFarend>
    e8880ee8:	24a43023          	sd	a0,576(s0)
    if (aecm->delay_estimator_farend == NULL) {
    e8880eec:	dd55                	beqz	a0,e8880ea8 <WebRtcAecm_CreateCore+0x2c>
        WebRtc_CreateDelayEstimator(aecm->delay_estimator_farend, 0);
    e8880eee:	4581                	li	a1,0
    e8880ef0:	26b010ef          	jal	ra,e888295a <WebRtc_CreateDelayEstimator>
    aecm->delay_estimator =
    e8880ef4:	24a43423          	sd	a0,584(s0)
    if (aecm->delay_estimator == NULL) {
    e8880ef8:	d945                	beqz	a0,e8880ea8 <WebRtcAecm_CreateCore+0x2c>
    aecm->real_fft = WebRtcSpl_CreateRealFFT(PART_LEN_SHIFT);
    e8880efa:	00063797          	auipc	a5,0x63
    e8880efe:	52e78793          	addi	a5,a5,1326 # e88e4428 <WebRtcSpl_CreateRealFFT>
    e8880f02:	639c                	ld	a5,0(a5)
    e8880f04:	451d                	li	a0,7
    e8880f06:	9782                	jalr	a5
    e8880f08:	009407b3          	add	a5,s0,s1
    e8880f0c:	38a7b023          	sd	a0,896(a5)
    if (aecm->real_fft == NULL) {
    e8880f10:	dd41                	beqz	a0,e8880ea8 <WebRtcAecm_CreateCore+0x2c>
    aecm->xBuf = (int16_t*) (((uintptr_t)aecm->xBuf_buf + 31) & ~ 31);
    e8880f12:	00940733          	add	a4,s0,s1
    e8880f16:	aab70713          	addi	a4,a4,-1365
    e8880f1a:	9b01                	andi	a4,a4,-32
    e8880f1c:	e8e7bc23          	sd	a4,-360(a5)
    aecm->dBufClean = (int16_t*) (((uintptr_t)aecm->dBufClean_buf + 31) & ~ 31);
    e8880f20:	00940733          	add	a4,s0,s1
    e8880f24:	bcb70713          	addi	a4,a4,-1077
    e8880f28:	9b01                	andi	a4,a4,-32
    e8880f2a:	eae7b023          	sd	a4,-352(a5)
    aecm->dBufNoisy = (int16_t*) (((uintptr_t)aecm->dBufNoisy_buf + 31) & ~ 31);
    e8880f2e:	00940733          	add	a4,s0,s1
    e8880f32:	ceb70713          	addi	a4,a4,-789
    e8880f36:	9b01                	andi	a4,a4,-32
    e8880f38:	eae7b423          	sd	a4,-344(a5)
    aecm->outBuf = (int16_t*) (((uintptr_t)aecm->outBuf_buf + 15) & ~ 15);
    e8880f3c:	00940733          	add	a4,s0,s1
    e8880f40:	dfb70713          	addi	a4,a4,-517
    e8880f44:	9b41                	andi	a4,a4,-16
    e8880f46:	eae7b823          	sd	a4,-336(a5)
                                             aecm->channelStored_buf + 15) & ~ 15);
    e8880f4a:	00940733          	add	a4,s0,s1
    e8880f4e:	85170713          	addi	a4,a4,-1967
    e8880f52:	9b41                	andi	a4,a4,-16
    aecm->channelStored = (int16_t*) (((uintptr_t)
    e8880f54:	e8e7b023          	sd	a4,-384(a5)
                                              aecm->channelAdapt16_buf + 15) & ~ 15);
    e8880f58:	00940733          	add	a4,s0,s1
                                              aecm->channelAdapt32_buf + 31) & ~ 31);
    e8880f5c:	9426                	add	s0,s0,s1
                                              aecm->channelAdapt16_buf + 15) & ~ 15);
    e8880f5e:	8e370713          	addi	a4,a4,-1821
                                              aecm->channelAdapt32_buf + 31) & ~ 31);
    e8880f62:	98740413          	addi	s0,s0,-1657
                                              aecm->channelAdapt16_buf + 15) & ~ 15);
    e8880f66:	9b41                	andi	a4,a4,-16
                                              aecm->channelAdapt32_buf + 31) & ~ 31);
    e8880f68:	9801                	andi	s0,s0,-32
    aecm->channelAdapt16 = (int16_t*) (((uintptr_t)
    e8880f6a:	e8e7b423          	sd	a4,-376(a5)
    aecm->channelAdapt32 = (int32_t*) (((uintptr_t)
    e8880f6e:	e887b823          	sd	s0,-368(a5)
    return 0;
    e8880f72:	4501                	li	a0,0
}
    e8880f74:	60e2                	ld	ra,24(sp)
    e8880f76:	f891440b          	ldd	s0,s1,(sp),0,4
    e8880f7a:	6942                	ld	s2,16(sp)
    e8880f7c:	6105                	addi	sp,sp,32
    e8880f7e:	8082                	ret

00000000e8880f80 <WebRtcAecm_AsymFilt>:
                            const int16_t stepSizePos,
                            const int16_t stepSizeNeg)
{
    int16_t retVal;

    if ((filtOld == WEBRTC_SPL_WORD16_MAX) | (filtOld == WEBRTC_SPL_WORD16_MIN))
    e8880f80:	6721                	lui	a4,0x8
    e8880f82:	0005079b          	sext.w	a5,a0
    e8880f86:	177d                	addi	a4,a4,-1
    e8880f88:	02e78063          	beq	a5,a4,e8880fa8 <WebRtcAecm_AsymFilt+0x28>
    e8880f8c:	7761                	lui	a4,0xffff8
    e8880f8e:	00e78d63          	beq	a5,a4,e8880fa8 <WebRtcAecm_AsymFilt+0x28>
    {
        return inVal;
    }
    retVal = filtOld;
    if (filtOld > inVal)
    e8880f92:	2581                	sext.w	a1,a1
    e8880f94:	00f5dc63          	bge	a1,a5,e8880fac <WebRtcAecm_AsymFilt+0x2c>
    {
        retVal -= WEBRTC_SPL_RSHIFT_W16(filtOld - inVal, stepSizeNeg);
    e8880f98:	40b785bb          	subw	a1,a5,a1
    e8880f9c:	40d5d5bb          	sraw	a1,a1,a3
    e8880fa0:	40b505bb          	subw	a1,a0,a1
    } else
    {
        retVal += WEBRTC_SPL_RSHIFT_W16(inVal - filtOld, stepSizePos);
    e8880fa4:	3c05a58b          	ext	a1,a1,15,0
    }

    return retVal;
}
    e8880fa8:	852e                	mv	a0,a1
    e8880faa:	8082                	ret
        retVal += WEBRTC_SPL_RSHIFT_W16(inVal - filtOld, stepSizePos);
    e8880fac:	9d9d                	subw	a1,a1,a5
    e8880fae:	40c5d5bb          	sraw	a1,a1,a2
    e8880fb2:	9da9                	addw	a1,a1,a0
    e8880fb4:	bfc5                	j	e8880fa4 <WebRtcAecm_AsymFilt+0x24>

00000000e8880fb6 <WebRtcAecm_CalcEnergies>:
void WebRtcAecm_CalcEnergies(AecmCore_t * aecm,
                             const uint16_t* far_spectrum,
                             const int16_t far_q,
                             const uint32_t nearEner,
                             int32_t * echoEst)
{
    e8880fb6:	711d                	addi	sp,sp,-96
    e8880fb8:	f456                	sd	s5,40(sp)
    int16_t kLogLowValue = WEBRTC_SPL_LSHIFT_W16(PART_LEN_SHIFT, 7);

    // Get log of near end energy and store in buffer

    // Shift buffer
    memmove(aecm->nearLogEnergy + 1, aecm->nearLogEnergy,
    e8880fba:	6a8d                	lui	s5,0x3
{
    e8880fbc:	e4a6                	sd	s1,72(sp)
    e8880fbe:	e0ca                	sd	s2,64(sp)
    e8880fc0:	84ae                	mv	s1,a1
    e8880fc2:	892a                	mv	s2,a0
    memmove(aecm->nearLogEnergy + 1, aecm->nearLogEnergy,
    e8880fc4:	6c0a8593          	addi	a1,s5,1728 # 36c0 <memcmp-0xe87fc940>
    e8880fc8:	6c2a8513          	addi	a0,s5,1730
{
    e8880fcc:	fc4e                	sd	s3,56(sp)
    memmove(aecm->nearLogEnergy + 1, aecm->nearLogEnergy,
    e8880fce:	95ca                	add	a1,a1,s2
{
    e8880fd0:	89b2                	mv	s3,a2
    memmove(aecm->nearLogEnergy + 1, aecm->nearLogEnergy,
    e8880fd2:	954a                	add	a0,a0,s2
    e8880fd4:	07e00613          	li	a2,126
{
    e8880fd8:	e8a2                	sd	s0,80(sp)
    e8880fda:	f852                	sd	s4,48(sp)
    e8880fdc:	ec86                	sd	ra,88(sp)
    e8880fde:	8a3a                	mv	s4,a4
    e8880fe0:	f05a                	sd	s6,32(sp)
    e8880fe2:	ec5e                	sd	s7,24(sp)
    e8880fe4:	8436                	mv	s0,a3
    uint32_t tmpAdapt = 0;
    e8880fe6:	c202                	sw	zero,4(sp)
    uint32_t tmpStored = 0;
    e8880fe8:	c402                	sw	zero,8(sp)
    uint32_t tmpFar = 0;
    e8880fea:	c602                	sw	zero,12(sp)
    memmove(aecm->nearLogEnergy + 1, aecm->nearLogEnergy,
    e8880fec:	bc0fb0ef          	jal	ra,e887c3ac <eLIBs_memmove>
            sizeof(int16_t) * (MAX_BUF_LEN - 1));

    // Logarithm of integrated magnitude spectrum (nearEner)
    tmp16 = kLogLowValue;
    if (nearEner)
    e8880ff0:	38000713          	li	a4,896
    e8880ff4:	cc05                	beqz	s0,e888102c <WebRtcAecm_CalcEnergies+0x76>
    {
        zeros = WebRtcSpl_NormU32(nearEner);
    e8880ff6:	8522                	mv	a0,s0
    e8880ff8:	a65ff0ef          	jal	ra,e8880a5c <WebRtcSpl_NormU32>
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32(
                              (WEBRTC_SPL_LSHIFT_U32(nearEner, zeros) & 0x7FFFFFFF),
                              23);
        // log2 in Q8
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(aecm->dfaNoisyQDomain, 8);
    e8880ffc:	9aca                	add	s5,s5,s2
    e8880ffe:	6bca9703          	lh	a4,1724(s5)
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32(
    e8881002:	0105151b          	slliw	a0,a0,0x10
    e8881006:	4105551b          	sraiw	a0,a0,0x10
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(aecm->dfaNoisyQDomain, 8);
    e888100a:	0087179b          	slliw	a5,a4,0x8
    e888100e:	38000713          	li	a4,896
    e8881012:	9f1d                	subw	a4,a4,a5
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
    e8881014:	47fd                	li	a5,31
    e8881016:	9f89                	subw	a5,a5,a0
    e8881018:	0087979b          	slliw	a5,a5,0x8
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32(
    e888101c:	00a4143b          	sllw	s0,s0,a0
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(aecm->dfaNoisyQDomain, 8);
    e8881020:	9f3d                	addw	a4,a4,a5
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32(
    e8881022:	7974340b          	extu	s0,s0,30,23
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(aecm->dfaNoisyQDomain, 8);
    e8881026:	9f21                	addw	a4,a4,s0
    e8881028:	3c07270b          	ext	a4,a4,15,0
    }
    aecm->nearLogEnergy[0] = tmp16;
    e888102c:	640d                	lui	s0,0x3
    e888102e:	008907b3          	add	a5,s2,s0
    e8881032:	6ce79023          	sh	a4,1728(a5)
    // END: Get log of near end energy

    WebRtcAecm_CalcLinearEnergies(aecm, far_spectrum, echoEst, &tmpFar, &tmpAdapt, &tmpStored);
    e8881036:	00063797          	auipc	a5,0x63
    e888103a:	46278793          	addi	a5,a5,1122 # e88e4498 <WebRtcAecm_CalcLinearEnergies>
    e888103e:	0007b803          	ld	a6,0(a5)
    e8881042:	0058                	addi	a4,sp,4
    e8881044:	003c                	addi	a5,sp,8
    e8881046:	0074                	addi	a3,sp,12
    e8881048:	85a6                	mv	a1,s1
    e888104a:	8652                	mv	a2,s4
    e888104c:	854a                	mv	a0,s2
    e888104e:	9802                	jalr	a6

    // Shift buffers
    memmove(aecm->echoAdaptLogEnergy + 1, aecm->echoAdaptLogEnergy,
    e8881050:	74240593          	addi	a1,s0,1858 # 3742 <memcmp-0xe87fc8be>
    e8881054:	74440513          	addi	a0,s0,1860
    e8881058:	07e00613          	li	a2,126
    e888105c:	95ca                	add	a1,a1,s2
    e888105e:	954a                	add	a0,a0,s2
    e8881060:	b4cfb0ef          	jal	ra,e887c3ac <eLIBs_memmove>
            sizeof(int16_t) * (MAX_BUF_LEN - 1));
    memmove(aecm->echoStoredLogEnergy + 1, aecm->echoStoredLogEnergy,
    e8881064:	7c240593          	addi	a1,s0,1986
    e8881068:	7c440513          	addi	a0,s0,1988
    e888106c:	07e00613          	li	a2,126
    e8881070:	95ca                	add	a1,a1,s2
    e8881072:	954a                	add	a0,a0,s2
    e8881074:	b38fb0ef          	jal	ra,e887c3ac <eLIBs_memmove>
            sizeof(int16_t) * (MAX_BUF_LEN - 1));

    // Logarithm of delayed far end energy
    tmp16 = kLogLowValue;
    if (tmpFar)
    e8881078:	44b2                	lw	s1,12(sp)
    tmp16 = kLogLowValue;
    e888107a:	38000413          	li	s0,896
    if (tmpFar)
    e888107e:	c885                	beqz	s1,e88810ae <WebRtcAecm_CalcEnergies+0xf8>
    {
        zeros = WebRtcSpl_NormU32(tmpFar);
    e8881080:	8526                	mv	a0,s1
    e8881082:	9dbff0ef          	jal	ra,e8880a5c <WebRtcSpl_NormU32>
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpFar, zeros)
    e8881086:	0105151b          	slliw	a0,a0,0x10
    e888108a:	4105551b          	sraiw	a0,a0,0x10
                        & 0x7FFFFFFF), 23);
        // log2 in Q8
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
    e888108e:	447d                	li	s0,31
    e8881090:	9c09                	subw	s0,s0,a0
    e8881092:	0084141b          	slliw	s0,s0,0x8
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(far_q, 8);
    e8881096:	0089979b          	slliw	a5,s3,0x8
    e888109a:	9c1d                	subw	s0,s0,a5
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpFar, zeros)
    e888109c:	00a494bb          	sllw	s1,s1,a0
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(far_q, 8);
    e88810a0:	3804041b          	addiw	s0,s0,896
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpFar, zeros)
    e88810a4:	7974b48b          	extu	s1,s1,30,23
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(far_q, 8);
    e88810a8:	9c25                	addw	s0,s0,s1
    e88810aa:	3c04240b          	ext	s0,s0,15,0
    }
    aecm->farLogEnergy = tmp16;
    e88810ae:	678d                	lui	a5,0x3
    e88810b0:	97ca                	add	a5,a5,s2

    // Logarithm of estimated echo energy through adapted channel
    tmp16 = kLogLowValue;
    if (tmpAdapt)
    e88810b2:	4a12                	lw	s4,4(sp)
    aecm->farLogEnergy = tmp16;
    e88810b4:	74879023          	sh	s0,1856(a5) # 3740 <memcmp-0xe87fc8c0>
    tmp16 = kLogLowValue;
    e88810b8:	38000493          	li	s1,896
    if (tmpAdapt)
    e88810bc:	020a0d63          	beqz	s4,e88810f6 <WebRtcAecm_CalcEnergies+0x140>
    {
        zeros = WebRtcSpl_NormU32(tmpAdapt);
    e88810c0:	8552                	mv	a0,s4
    e88810c2:	99bff0ef          	jal	ra,e8880a5c <WebRtcSpl_NormU32>
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpAdapt, zeros)
                        & 0x7FFFFFFF), 23);
        //log2 in Q8
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e88810c6:	00c9849b          	addiw	s1,s3,12
    e88810ca:	0084979b          	slliw	a5,s1,0x8
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpAdapt, zeros)
    e88810ce:	0105151b          	slliw	a0,a0,0x10
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e88810d2:	38000493          	li	s1,896
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpAdapt, zeros)
    e88810d6:	4105551b          	sraiw	a0,a0,0x10
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e88810da:	9c9d                	subw	s1,s1,a5
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
    e88810dc:	47fd                	li	a5,31
    e88810de:	9f89                	subw	a5,a5,a0
    e88810e0:	0087979b          	slliw	a5,a5,0x8
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpAdapt, zeros)
    e88810e4:	00aa1a3b          	sllw	s4,s4,a0
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e88810e8:	9cbd                	addw	s1,s1,a5
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpAdapt, zeros)
    e88810ea:	797a3a0b          	extu	s4,s4,30,23
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e88810ee:	014484bb          	addw	s1,s1,s4
    e88810f2:	3c04a48b          	ext	s1,s1,15,0
    }
    aecm->echoAdaptLogEnergy[0] = tmp16;
    e88810f6:	678d                	lui	a5,0x3
    e88810f8:	97ca                	add	a5,a5,s2

    // Logarithm of estimated echo energy through stored channel
    tmp16 = kLogLowValue;
    if (tmpStored)
    e88810fa:	4a22                	lw	s4,8(sp)
    aecm->echoAdaptLogEnergy[0] = tmp16;
    e88810fc:	74979123          	sh	s1,1858(a5) # 3742 <memcmp-0xe87fc8be>
    tmp16 = kLogLowValue;
    e8881100:	38000793          	li	a5,896
    if (tmpStored)
    e8881104:	020a0d63          	beqz	s4,e888113e <WebRtcAecm_CalcEnergies+0x188>
    {
        zeros = WebRtcSpl_NormU32(tmpStored);
    e8881108:	8552                	mv	a0,s4
    e888110a:	953ff0ef          	jal	ra,e8880a5c <WebRtcSpl_NormU32>
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpStored, zeros)
    e888110e:	0105151b          	slliw	a0,a0,0x10
    e8881112:	4105551b          	sraiw	a0,a0,0x10
                        & 0x7FFFFFFF), 23);
        //log2 in Q8
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e8881116:	29b1                	addiw	s3,s3,12
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
    e8881118:	477d                	li	a4,31
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e888111a:	0089999b          	slliw	s3,s3,0x8
    e888111e:	38000793          	li	a5,896
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
    e8881122:	9f09                	subw	a4,a4,a0
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e8881124:	413787bb          	subw	a5,a5,s3
        tmp16 += WEBRTC_SPL_LSHIFT_W16((31 - zeros), 8) + frac;
    e8881128:	0087171b          	slliw	a4,a4,0x8
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpStored, zeros)
    e888112c:	00aa1a3b          	sllw	s4,s4,a0
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e8881130:	9fb9                	addw	a5,a5,a4
        frac = (int16_t)WEBRTC_SPL_RSHIFT_U32((WEBRTC_SPL_LSHIFT_U32(tmpStored, zeros)
    e8881132:	797a3a0b          	extu	s4,s4,30,23
        tmp16 -= WEBRTC_SPL_LSHIFT_W16(RESOLUTION_CHANNEL16 + far_q, 8);
    e8881136:	014787bb          	addw	a5,a5,s4
    e888113a:	3c07a78b          	ext	a5,a5,15,0
    }
    aecm->echoStoredLogEnergy[0] = tmp16;
    e888113e:	670d                	lui	a4,0x3
    e8881140:	974a                	add	a4,a4,s2
    e8881142:	7cf71123          	sh	a5,1986(a4) # 37c2 <memcmp-0xe87fc83e>

    // Update farend energy levels (min, max, vad, mse)
    if (aecm->farLogEnergy > FAR_ENERGY_MIN)
    e8881146:	00040a9b          	sext.w	s5,s0
    e888114a:	40100793          	li	a5,1025
    e888114e:	0957de63          	bge	a5,s5,e88811ea <WebRtcAecm_CalcEnergies+0x234>
    {
        if (aecm->startupState == 0)
    e8881152:	6791                	lui	a5,0x4
    e8881154:	97ca                	add	a5,a5,s2
    e8881156:	36e79b03          	lh	s6,878(a5) # 436e <memcmp-0xe87fbc92>
    e888115a:	100b1363          	bnez	s6,e8881260 <WebRtcAecm_CalcEnergies+0x2aa>
        {
            increase_max_shifts = 2;
            decrease_min_shifts = 2;
    e888115e:	4689                	li	a3,2
            increase_min_shifts = 8;
    e8881160:	4621                	li	a2,8
            increase_max_shifts = 2;
    e8881162:	4b89                	li	s7,2
        }

        aecm->farEnergyMin = WebRtcAecm_AsymFilt(aecm->farEnergyMin, aecm->farLogEnergy,
    e8881164:	6991                	lui	s3,0x4
    e8881166:	99ca                	add	s3,s3,s2
    e8881168:	35c99503          	lh	a0,860(s3) # 435c <memcmp-0xe87fbca4>
    e888116c:	85a2                	mv	a1,s0
    e888116e:	e13ff0ef          	jal	ra,e8880f80 <WebRtcAecm_AsymFilt>
    e8881172:	8a2a                	mv	s4,a0
    e8881174:	34a99e23          	sh	a0,860(s3)
                                                 increase_min_shifts, decrease_min_shifts);
        aecm->farEnergyMax = WebRtcAecm_AsymFilt(aecm->farEnergyMax, aecm->farLogEnergy,
    e8881178:	35e99503          	lh	a0,862(s3)
    e888117c:	46ad                	li	a3,11
    e888117e:	865e                	mv	a2,s7
    e8881180:	85a2                	mv	a1,s0
    e8881182:	dffff0ef          	jal	ra,e8880f80 <WebRtcAecm_AsymFilt>
    e8881186:	34a99f23          	sh	a0,862(s3)
                                                 increase_max_shifts, decrease_max_shifts);
        aecm->farEnergyMaxMin = (aecm->farEnergyMax - aecm->farEnergyMin);

        // Dynamic VAD region size
        tmp16 = 2560 - aecm->farEnergyMin;
    e888118a:	6785                	lui	a5,0x1
        aecm->farEnergyMaxMin = (aecm->farEnergyMax - aecm->farEnergyMin);
    e888118c:	4145053b          	subw	a0,a0,s4
        tmp16 = 2560 - aecm->farEnergyMin;
    e8881190:	a007879b          	addiw	a5,a5,-1536
    e8881194:	414787bb          	subw	a5,a5,s4
        aecm->farEnergyMaxMin = (aecm->farEnergyMax - aecm->farEnergyMin);
    e8881198:	36a99023          	sh	a0,864(s3)
        tmp16 = 2560 - aecm->farEnergyMin;
    e888119c:	3c07a78b          	ext	a5,a5,15,0
        if (tmp16 > 0)
        {
            tmp16 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(tmp16, FAR_ENERGY_VAD_REGION, 9);
        } else
        {
            tmp16 = 0;
    e88811a0:	4701                	li	a4,0
        if (tmp16 > 0)
    e88811a2:	00f05863          	blez	a5,e88811b2 <WebRtcAecm_CalcEnergies+0x1fc>
            tmp16 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(tmp16, FAR_ENERGY_VAD_REGION, 9);
    e88811a6:	0e600713          	li	a4,230
    e88811aa:	02e787b3          	mul	a5,a5,a4
    e88811ae:	4097d713          	srai	a4,a5,0x9
        }
        tmp16 += FAR_ENERGY_VAD_REGION;
    e88811b2:	0e67079b          	addiw	a5,a4,230

        if ((aecm->startupState == 0) | (aecm->vadUpdateCount > 1024))
    e88811b6:	6711                	lui	a4,0x4
    e88811b8:	974a                	add	a4,a4,s2
        tmp16 += FAR_ENERGY_VAD_REGION;
    e88811ba:	3c07a78b          	ext	a5,a5,15,0
        if ((aecm->startupState == 0) | (aecm->vadUpdateCount > 1024))
    e88811be:	36c71683          	lh	a3,876(a4) # 436c <memcmp-0xe87fbc94>
    e88811c2:	000b0663          	beqz	s6,e88811ce <WebRtcAecm_CalcEnergies+0x218>
    e88811c6:	40000613          	li	a2,1024
    e88811ca:	08d65f63          	bge	a2,a3,e8881268 <WebRtcAecm_CalcEnergies+0x2b2>
        {
            // In startup phase or VAD update halted
            aecm->farEnergyVAD = aecm->farEnergyMin + tmp16;
    e88811ce:	6711                	lui	a4,0x4
    e88811d0:	974a                	add	a4,a4,s2
    e88811d2:	00fa043b          	addw	s0,s4,a5
    e88811d6:	36871123          	sh	s0,866(a4) # 4362 <memcmp-0xe87fbc9e>
            {
                aecm->vadUpdateCount++;
            }
        }
        // Put MSE threshold higher than VAD
        aecm->farEnergyMSE = aecm->farEnergyVAD + (1 << 8);
    e88811da:	6791                	lui	a5,0x4
    e88811dc:	97ca                	add	a5,a5,s2
    e88811de:	3627d703          	lhu	a4,866(a5) # 4362 <memcmp-0xe87fbc9e>
    e88811e2:	1007071b          	addiw	a4,a4,256
    e88811e6:	36e79223          	sh	a4,868(a5)
    }

    // Update VAD variables
    if (aecm->farLogEnergy > aecm->farEnergyVAD)
    e88811ea:	6791                	lui	a5,0x4
    e88811ec:	97ca                	add	a5,a5,s2
    e88811ee:	36279703          	lh	a4,866(a5) # 4362 <memcmp-0xe87fbc9e>
    e88811f2:	09575d63          	bge	a4,s5,e888128c <WebRtcAecm_CalcEnergies+0x2d6>
    {
        if ((aecm->startupState == 0) | (aecm->farEnergyMaxMin > FAR_ENERGY_DIFF))
    e88811f6:	36e79703          	lh	a4,878(a5)
    e88811fa:	c719                	beqz	a4,e8881208 <WebRtcAecm_CalcEnergies+0x252>
    e88811fc:	36079683          	lh	a3,864(a5)
    e8881200:	3a100713          	li	a4,929
    e8881204:	0ad75163          	bge	a4,a3,e88812a6 <WebRtcAecm_CalcEnergies+0x2f0>
        {
            // We are in startup or have significant dynamics in input speech level
            aecm->currentVADValue = 1;
    e8881208:	6791                	lui	a5,0x4
    e888120a:	97ca                	add	a5,a5,s2
    e888120c:	4705                	li	a4,1
    e888120e:	36e7a423          	sw	a4,872(a5) # 4368 <memcmp-0xe87fbc98>
        }
    } else
    {
        aecm->currentVADValue = 0;
    }
    if ((aecm->currentVADValue) && (aecm->firstVAD))
    e8881212:	01092783          	lw	a5,16(s2)
    e8881216:	cfad                	beqz	a5,e8881290 <WebRtcAecm_CalcEnergies+0x2da>
    {
        aecm->firstVAD = 0;
        if (aecm->echoAdaptLogEnergy[0] > aecm->nearLogEnergy[0])
    e8881218:	678d                	lui	a5,0x3
    e888121a:	97ca                	add	a5,a5,s2
        aecm->firstVAD = 0;
    e888121c:	00092823          	sw	zero,16(s2)
        if (aecm->echoAdaptLogEnergy[0] > aecm->nearLogEnergy[0])
    e8881220:	6c079783          	lh	a5,1728(a5) # 36c0 <memcmp-0xe87fc940>
    e8881224:	0697d663          	bge	a5,s1,e8881290 <WebRtcAecm_CalcEnergies+0x2da>
            // The estimated echo has higher energy than the near end signal.
            // This means that the initialization was too aggressive. Scale
            // down by a factor 8
            for (i = 0; i < PART_LEN1; i++)
            {
                aecm->channelAdapt16[i] >>= 3;
    e8881228:	6691                	lui	a3,0x4
    e888122a:	4781                	li	a5,0
    e888122c:	96ca                	add	a3,a3,s2
            for (i = 0; i < PART_LEN1; i++)
    e888122e:	08200593          	li	a1,130
                aecm->channelAdapt16[i] >>= 3;
    e8881232:	e886b603          	ld	a2,-376(a3) # 3e88 <memcmp-0xe87fc178>
    e8881236:	20f6470b          	lrh	a4,a2,a5,0
    e888123a:	4037571b          	sraiw	a4,a4,0x3
    e888123e:	20f6570b          	srh	a4,a2,a5,0
            for (i = 0; i < PART_LEN1; i++)
    e8881242:	0789                	addi	a5,a5,2
    e8881244:	feb797e3          	bne	a5,a1,e8881232 <WebRtcAecm_CalcEnergies+0x27c>
            }
            // Compensate the adapted echo energy level accordingly.
            aecm->echoAdaptLogEnergy[0] -= (3 << 8);
    e8881248:	678d                	lui	a5,0x3
    e888124a:	97ca                	add	a5,a5,s2
    e888124c:	7427d703          	lhu	a4,1858(a5) # 3742 <memcmp-0xe87fc8be>
    e8881250:	d007071b          	addiw	a4,a4,-768
    e8881254:	74e79123          	sh	a4,1858(a5)
            aecm->firstVAD = 1;
    e8881258:	4785                	li	a5,1
    e888125a:	00f92823          	sw	a5,16(s2)
        }
    }
}
    e888125e:	a80d                	j	e8881290 <WebRtcAecm_CalcEnergies+0x2da>
    int16_t decrease_min_shifts = 3;
    e8881260:	468d                	li	a3,3
    int16_t increase_min_shifts = 11;
    e8881262:	462d                	li	a2,11
    int16_t increase_max_shifts = 4;
    e8881264:	4b91                	li	s7,4
    e8881266:	bdfd                	j	e8881164 <WebRtcAecm_CalcEnergies+0x1ae>
            if (aecm->farEnergyVAD > aecm->farLogEnergy)
    e8881268:	36271603          	lh	a2,866(a4)
    e888126c:	00cadc63          	bge	s5,a2,e8881284 <WebRtcAecm_CalcEnergies+0x2ce>
                aecm->farEnergyVAD += WEBRTC_SPL_RSHIFT_W16(aecm->farLogEnergy +
    e8881270:	9c11                	subw	s0,s0,a2
    e8881272:	9c3d                	addw	s0,s0,a5
    e8881274:	4064541b          	sraiw	s0,s0,0x6
    e8881278:	9c31                	addw	s0,s0,a2
    e888127a:	36871123          	sh	s0,866(a4)
                aecm->vadUpdateCount = 0;
    e888127e:	36071623          	sh	zero,876(a4)
    e8881282:	bfa1                	j	e88811da <WebRtcAecm_CalcEnergies+0x224>
                aecm->vadUpdateCount++;
    e8881284:	2685                	addiw	a3,a3,1
    e8881286:	36d71623          	sh	a3,876(a4)
    e888128a:	bf81                	j	e88811da <WebRtcAecm_CalcEnergies+0x224>
        aecm->currentVADValue = 0;
    e888128c:	3607a423          	sw	zero,872(a5)
}
    e8881290:	60e6                	ld	ra,88(sp)
    e8881292:	6446                	ld	s0,80(sp)
    e8881294:	64a6                	ld	s1,72(sp)
    e8881296:	6906                	ld	s2,64(sp)
    e8881298:	79e2                	ld	s3,56(sp)
    e888129a:	7a42                	ld	s4,48(sp)
    e888129c:	7aa2                	ld	s5,40(sp)
    e888129e:	7b02                	ld	s6,32(sp)
    e88812a0:	6be2                	ld	s7,24(sp)
    e88812a2:	6125                	addi	sp,sp,96
    e88812a4:	8082                	ret
    if ((aecm->currentVADValue) && (aecm->firstVAD))
    e88812a6:	3687a783          	lw	a5,872(a5)
    e88812aa:	f7a5                	bnez	a5,e8881212 <WebRtcAecm_CalcEnergies+0x25c>
    e88812ac:	b7d5                	j	e8881290 <WebRtcAecm_CalcEnergies+0x2da>

00000000e88812ae <WebRtcAecm_CalcStepSize>:
    int16_t tmp16;
    int16_t mu = MU_MAX;

    // Here we calculate the step size mu used in the
    // following NLMS based Channel estimation algorithm
    if (!aecm->currentVADValue)
    e88812ae:	6711                	lui	a4,0x4
    e88812b0:	972a                	add	a4,a4,a0
    e88812b2:	36872783          	lw	a5,872(a4) # 4368 <memcmp-0xe87fbc98>
    e88812b6:	cfa9                	beqz	a5,e8881310 <WebRtcAecm_CalcStepSize+0x62>
    {
        // Far end energy level too low, no channel update
        mu = 0;
    } else if (aecm->startupState > 0)
    e88812b8:	36e71683          	lh	a3,878(a4)
    int16_t mu = MU_MAX;
    e88812bc:	4785                	li	a5,1
    } else if (aecm->startupState > 0)
    e88812be:	04d05a63          	blez	a3,e8881312 <WebRtcAecm_CalcStepSize+0x64>
    {
        if (aecm->farEnergyMin >= aecm->farEnergyMax)
    e88812c2:	35c71683          	lh	a3,860(a4)
    e88812c6:	35e71603          	lh	a2,862(a4)
        {
            mu = MU_MIN;
    e88812ca:	47a9                	li	a5,10
        if (aecm->farEnergyMin >= aecm->farEnergyMax)
    e88812cc:	04c6d363          	bge	a3,a2,e8881312 <WebRtcAecm_CalcStepSize+0x64>
        } else
        {
            tmp16 = (aecm->farLogEnergy - aecm->farEnergyMin);
    e88812d0:	678d                	lui	a5,0x3
{
    e88812d2:	1141                	addi	sp,sp,-16
            tmp16 = (aecm->farLogEnergy - aecm->farEnergyMin);
    e88812d4:	953e                	add	a0,a0,a5
{
    e88812d6:	e406                	sd	ra,8(sp)
            tmp16 = (aecm->farLogEnergy - aecm->farEnergyMin);
    e88812d8:	74055783          	lhu	a5,1856(a0)
            tmp32 = WEBRTC_SPL_MUL_16_16(tmp16, MU_DIFF);
            tmp32 = WebRtcSpl_DivW32W16(tmp32, aecm->farEnergyMaxMin);
    e88812dc:	4525                	li	a0,9
    e88812de:	36071583          	lh	a1,864(a4)
            tmp16 = (aecm->farLogEnergy - aecm->farEnergyMin);
    e88812e2:	9f95                	subw	a5,a5,a3
            tmp32 = WEBRTC_SPL_MUL_16_16(tmp16, MU_DIFF);
    e88812e4:	0107979b          	slliw	a5,a5,0x10
    e88812e8:	4107d79b          	sraiw	a5,a5,0x10
            tmp32 = WebRtcSpl_DivW32W16(tmp32, aecm->farEnergyMaxMin);
    e88812ec:	02a7853b          	mulw	a0,a5,a0
    e88812f0:	9ccff0ef          	jal	ra,e88804bc <WebRtcSpl_DivW32W16>
            mu = MU_MIN - 1 - (int16_t)(tmp32);
    e88812f4:	47a5                	li	a5,9
    e88812f6:	40a7853b          	subw	a0,a5,a0
    e88812fa:	3c05278b          	ext	a5,a0,15,0
    e88812fe:	3c05250b          	ext	a0,a0,15,0
    e8881302:	00a04363          	bgtz	a0,e8881308 <WebRtcAecm_CalcStepSize+0x5a>
    e8881306:	4785                	li	a5,1
            mu = MU_MAX; // Equivalent with maximum step size of 2^-MU_MAX
        }
    }

    return mu;
}
    e8881308:	60a2                	ld	ra,8(sp)
    e888130a:	853e                	mv	a0,a5
    e888130c:	0141                	addi	sp,sp,16
    e888130e:	8082                	ret
        mu = 0;
    e8881310:	4781                	li	a5,0
}
    e8881312:	853e                	mv	a0,a5
    e8881314:	8082                	ret

00000000e8881316 <WebRtcAecm_UpdateChannel>:
                              const uint16_t* far_spectrum,
                              const int16_t far_q,
                              const uint16_t * const dfa,
                              const int16_t mu,
                              int32_t * echoEst)
{
    e8881316:	7131                	addi	sp,sp,-192
    e8881318:	f526                	sd	s1,168(sp)
    e888131a:	fcde                	sd	s7,120(sp)
    e888131c:	fd06                	sd	ra,184(sp)
    e888131e:	f922                	sd	s0,176(sp)
    e8881320:	f14a                	sd	s2,160(sp)
    e8881322:	ed4e                	sd	s3,152(sp)
    e8881324:	e952                	sd	s4,144(sp)
    e8881326:	e556                	sd	s5,136(sp)
    e8881328:	e15a                	sd	s6,128(sp)
    e888132a:	f8e2                	sd	s8,112(sp)
    e888132c:	f4e6                	sd	s9,104(sp)
    e888132e:	f0ea                	sd	s10,96(sp)
    e8881330:	ecee                	sd	s11,88(sp)
    e8881332:	ec36                	sd	a3,24(sp)
    e8881334:	f8f1570b          	sdd	a4,a5,(sp),0,4
    e8881338:	84aa                	mv	s1,a0
    e888133a:	8bae                	mv	s7,a1
    int16_t tmp16no1;
    int16_t xfaQ, dfaQ;

    // This is the channel estimation algorithm. It is base on NLMS but has a variable step
    // length, which was calculated above.
    if (mu)
    e888133c:	e731                	bnez	a4,e8881388 <WebRtcAecm_UpdateChannel+0x72>
        }
    }
    // END: Adaptive channel update

    // Determine if we should store or restore the channel
    if ((aecm->startupState == 0) & (aecm->currentVADValue))
    e888133e:	6791                	lui	a5,0x4
    e8881340:	97a6                	add	a5,a5,s1
    e8881342:	36e79403          	lh	s0,878(a5) # 436e <memcmp-0xe87fbc92>
    e8881346:	3687a703          	lw	a4,872(a5)
    e888134a:	00143413          	seqz	s0,s0
    e888134e:	8c79                	and	s0,s0,a4
    e8881350:	26041c63          	bnez	s0,e88815c8 <WebRtcAecm_UpdateChannel+0x2b2>
        // During startup we store the channel every block,
        // and we recalculate echo estimate
        WebRtcAecm_StoreAdaptiveChannel(aecm, far_spectrum, echoEst);
    } else
    {
        if (aecm->farLogEnergy < aecm->farEnergyMSE)
    e8881354:	670d                	lui	a4,0x3
    e8881356:	00e486b3          	add	a3,s1,a4
    e888135a:	74069603          	lh	a2,1856(a3)
    e888135e:	36479683          	lh	a3,868(a5)
    e8881362:	28d65b63          	bge	a2,a3,e88815f8 <WebRtcAecm_UpdateChannel+0x2e2>
    e8881366:	36079823          	sh	zero,880(a5)
            aecm->mseStoredOld = mseStored;
            aecm->mseAdaptOld = mseAdapt;
        }
    }
    // END: Determine if we should store or reset channel estimate.
}
    e888136a:	70ea                	ld	ra,184(sp)
    e888136c:	744a                	ld	s0,176(sp)
    e888136e:	74aa                	ld	s1,168(sp)
    e8881370:	790a                	ld	s2,160(sp)
    e8881372:	69ea                	ld	s3,152(sp)
    e8881374:	6a4a                	ld	s4,144(sp)
    e8881376:	6aaa                	ld	s5,136(sp)
    e8881378:	6b0a                	ld	s6,128(sp)
    e888137a:	7be6                	ld	s7,120(sp)
    e888137c:	7c46                	ld	s8,112(sp)
    e888137e:	7ca6                	ld	s9,104(sp)
    e8881380:	7d06                	ld	s10,96(sp)
    e8881382:	6de6                	ld	s11,88(sp)
    e8881384:	6129                	addi	sp,sp,192
    e8881386:	8082                	ret
            if ((tmp32no1) && (far_spectrum[i] > (CHANNEL_VAD << far_q)))
    e8881388:	47c1                	li	a5,16
    e888138a:	00c797bb          	sllw	a5,a5,a2
    e888138e:	e83e                	sd	a5,16(sp)
            tmp16no1 = zerosDfa - 2 + aecm->dfaNoisyQDomain -
    e8881390:	678d                	lui	a5,0x3
    e8881392:	97aa                	add	a5,a5,a0
    e8881394:	f03e                	sd	a5,32(sp)
    e8881396:	5789                	li	a5,-30
    e8881398:	9f91                	subw	a5,a5,a2
            zerosCh = WebRtcSpl_NormU32(aecm->channelAdapt32[i]);
    e888139a:	6a11                	lui	s4,0x4
            tmp16no1 = zerosDfa - 2 + aecm->dfaNoisyQDomain -
    e888139c:	d43e                	sw	a5,40(sp)
    if ((l_var2 < 0) && (l_sum >= 0)) {
        l_sum = (int32_t)0x80000000;
    }
  } else {  // Check for overflow.
    if ((l_var2 > 0) && (l_sum < 0)) {
        l_sum = (int32_t)0x7FFFFFFF;
    e888139e:	80000b37          	lui	s6,0x80000
                dfaQ = RESOLUTION_CHANNEL32 + far_q - aecm->dfaNoisyQDomain -
    e88813a2:	01c6079b          	addiw	a5,a2,28
            if ((tmp32no1) && (far_spectrum[i] > (CHANNEL_VAD << far_q)))
    e88813a6:	4981                	li	s3,0
            zerosCh = WebRtcSpl_NormU32(aecm->channelAdapt32[i]);
    e88813a8:	9a2a                	add	s4,s4,a0
                dfaQ = RESOLUTION_CHANNEL32 + far_q - aecm->dfaNoisyQDomain -
    e88813aa:	d63e                	sw	a5,44(sp)
    e88813ac:	fffb4b13          	not	s6,s6
            zerosCh = WebRtcSpl_NormU32(aecm->channelAdapt32[i]);
    e88813b0:	e90a3783          	ld	a5,-368(s4) # 3e90 <memcmp-0xe87fc170>
    e88813b4:	00299a93          	slli	s5,s3,0x2
    e88813b8:	4537cc8b          	lrw	s9,a5,s3,2
    e88813bc:	8566                	mv	a0,s9
    e88813be:	e9eff0ef          	jal	ra,e8880a5c <WebRtcSpl_NormU32>
            zerosFar = WebRtcSpl_NormU32((uint32_t)far_spectrum[i]);
    e88813c2:	a33bcd0b          	lrhu	s10,s7,s3,1
    e88813c6:	00199793          	slli	a5,s3,0x1
            zerosCh = WebRtcSpl_NormU32(aecm->channelAdapt32[i]);
    e88813ca:	3c05240b          	ext	s0,a0,15,0
            zerosFar = WebRtcSpl_NormU32((uint32_t)far_spectrum[i]);
    e88813ce:	856a                	mv	a0,s10
    e88813d0:	f83e                	sd	a5,48(sp)
    e88813d2:	e8aff0ef          	jal	ra,e8880a5c <WebRtcSpl_NormU32>
    e88813d6:	3c05290b          	ext	s2,a0,15,0
            if (zerosCh + zerosFar > 31)
    e88813da:	00090c1b          	sext.w	s8,s2
    e88813de:	018406bb          	addw	a3,s0,s8
    e88813e2:	47fd                	li	a5,31
    e88813e4:	14d7d763          	bge	a5,a3,e8881532 <WebRtcAecm_UpdateChannel+0x21c>
                tmpU32no1 = WEBRTC_SPL_UMUL_32_16(aecm->channelAdapt32[i],
    e88813e8:	03ac8dbb          	mulw	s11,s9,s10
                shiftChFar = 0;
    e88813ec:	4401                	li	s0,0
            zerosNum = WebRtcSpl_NormU32(tmpU32no1);
    e88813ee:	856e                	mv	a0,s11
    e88813f0:	e6cff0ef          	jal	ra,e8880a5c <WebRtcSpl_NormU32>
    e88813f4:	3c05268b          	ext	a3,a0,15,0
            if (dfa[i])
    e88813f8:	67e2                	ld	a5,24(sp)
                zerosDfa = 32;
    e88813fa:	02000513          	li	a0,32
            if (dfa[i])
    e88813fe:	a337c78b          	lrhu	a5,a5,s3,1
    e8881402:	0007881b          	sext.w	a6,a5
    e8881406:	cb91                	beqz	a5,e888141a <WebRtcAecm_UpdateChannel+0x104>
                zerosDfa = WebRtcSpl_NormU32((uint32_t)dfa[i]);
    e8881408:	8542                	mv	a0,a6
    e888140a:	fc36                	sd	a3,56(sp)
    e888140c:	f842                	sd	a6,48(sp)
    e888140e:	e4eff0ef          	jal	ra,e8880a5c <WebRtcSpl_NormU32>
    e8881412:	3c05250b          	ext	a0,a0,15,0
    e8881416:	76e2                	ld	a3,56(sp)
    e8881418:	7842                	ld	a6,48(sp)
            tmp16no1 = zerosDfa - 2 + aecm->dfaNoisyQDomain -
    e888141a:	7782                	ld	a5,32(sp)
    e888141c:	6bc79603          	lh	a2,1724(a5) # 36bc <memcmp-0xe87fc944>
    e8881420:	57a2                	lw	a5,40(sp)
    e8881422:	9fb1                	addw	a5,a5,a2
    e8881424:	9fa1                	addw	a5,a5,s0
    e8881426:	9fa9                	addw	a5,a5,a0
    e8881428:	3c07ac8b          	ext	s9,a5,15,0
            if (zerosNum > tmp16no1 + 1)
    e888142c:	001c889b          	addiw	a7,s9,1
    e8881430:	10d8de63          	bge	a7,a3,e888154c <WebRtcAecm_UpdateChannel+0x236>
                dfaQ = zerosDfa - 2;
    e8881434:	ffe5069b          	addiw	a3,a0,-2
    e8881438:	000c851b          	sext.w	a0,s9
                dfaQ = RESOLUTION_CHANNEL32 + far_q - aecm->dfaNoisyQDomain -
    e888143c:	3c06a68b          	ext	a3,a3,15,0
            tmpU32no1 = WEBRTC_SPL_SHIFT_W32(tmpU32no1, xfaQ);
    e8881440:	12054163          	bltz	a0,e8881562 <WebRtcAecm_UpdateChannel+0x24c>
    e8881444:	00ad973b          	sllw	a4,s11,a0
            tmpU32no2 = WEBRTC_SPL_SHIFT_W32((uint32_t)dfa[i], dfaQ);
    e8881448:	2681                	sext.w	a3,a3
    e888144a:	1206c163          	bltz	a3,e888156c <WebRtcAecm_UpdateChannel+0x256>
    e888144e:	00d816bb          	sllw	a3,a6,a3
            tmp32no1 = (int32_t)tmpU32no2 - (int32_t)tmpU32no1;
    e8881452:	40e6863b          	subw	a2,a3,a4
    e8881456:	e4ba                	sd	a4,72(sp)
    e8881458:	e0b6                	sd	a3,64(sp)
    e888145a:	fc32                	sd	a2,56(sp)
    e888145c:	8832                	mv	a6,a2
  if (a == 0) {
    e888145e:	0c080463          	beqz	a6,e8881526 <WebRtcAecm_UpdateChannel+0x210>
    e8881462:	8542                	mv	a0,a6
    e8881464:	f842                	sd	a6,48(sp)
    e8881466:	daaff0ef          	jal	ra,e8880a10 <WebRtcSpl_NormW32.part.0>
            if ((tmp32no1) && (far_spectrum[i] > (CHANNEL_VAD << far_q)))
    e888146a:	67c2                	ld	a5,16(sp)
    e888146c:	0ba7dd63          	bge	a5,s10,e8881526 <WebRtcAecm_UpdateChannel+0x210>
            zerosNum = WebRtcSpl_NormW32(tmp32no1);
    e8881470:	3c05250b          	ext	a0,a0,15,0
                if (zerosNum + zerosFar > 31)
    e8881474:	018508bb          	addw	a7,a0,s8
    e8881478:	47fd                	li	a5,31
    e888147a:	fec1480b          	ldd	a6,a2,(sp),3,4
    e888147e:	6686                	ld	a3,64(sp)
    e8881480:	6726                	ld	a4,72(sp)
    e8881482:	0f17df63          	bge	a5,a7,e8881580 <WebRtcAecm_UpdateChannel+0x26a>
                    if (tmp32no1 > 0)
    e8881486:	0f005863          	blez	a6,e8881576 <WebRtcAecm_UpdateChannel+0x260>
                        tmp32no2 = (int32_t)WEBRTC_SPL_UMUL_32_16(tmp32no1,
    e888148a:	03a6053b          	mulw	a0,a2,s10
                    shiftNum = 0;
    e888148e:	4901                	li	s2,0
                tmp32no2 = WebRtcSpl_DivW32W16(tmp32no2, i + 1);
    e8881490:	0019859b          	addiw	a1,s3,1
    e8881494:	3c05a58b          	ext	a1,a1,15,0
    e8881498:	824ff0ef          	jal	ra,e88804bc <WebRtcSpl_DivW32W16>
    e888149c:	862a                	mv	a2,a0
                shift2ResChan = shiftNum + shiftChFar - xfaQ - mu - ((30 - zerosFar) << 1);
    e888149e:	4779                	li	a4,30
    e88814a0:	6782                	ld	a5,0(sp)
    e88814a2:	41870c3b          	subw	s8,a4,s8
    e88814a6:	001c1c1b          	slliw	s8,s8,0x1
    e88814aa:	00fc0c3b          	addw	s8,s8,a5
    e88814ae:	4184043b          	subw	s0,s0,s8
    e88814b2:	4194043b          	subw	s0,s0,s9
    e88814b6:	012407bb          	addw	a5,s0,s2
    e88814ba:	3c07a40b          	ext	s0,a5,15,0
    return 0;
    e88814be:	4701                	li	a4,0
  if (a == 0) {
    e88814c0:	c511                	beqz	a0,e88814cc <WebRtcAecm_UpdateChannel+0x1b6>
    e88814c2:	f82a                	sd	a0,48(sp)
    e88814c4:	d4cff0ef          	jal	ra,e8880a10 <WebRtcSpl_NormW32.part.0>
    e88814c8:	872a                	mv	a4,a0
    e88814ca:	7642                	ld	a2,48(sp)
                if (WebRtcSpl_NormW32(tmp32no2) < shift2ResChan)
    e88814cc:	0004079b          	sext.w	a5,s0
                    tmp32no2 = WEBRTC_SPL_WORD32_MAX;
    e88814d0:	86da                	mv	a3,s6
                if (WebRtcSpl_NormW32(tmp32no2) < shift2ResChan)
    e88814d2:	00f74663          	blt	a4,a5,e88814de <WebRtcAecm_UpdateChannel+0x1c8>
                    tmp32no2 = WEBRTC_SPL_SHIFT_W32(tmp32no2, shift2ResChan);
    e88814d6:	0c07ce63          	bltz	a5,e88815b2 <WebRtcAecm_UpdateChannel+0x29c>
    e88814da:	00f616bb          	sllw	a3,a2,a5
                aecm->channelAdapt32[i] = WEBRTC_SPL_ADD_SAT_W32(aecm->channelAdapt32[i],
    e88814de:	e90a3783          	ld	a5,-368(s4)
    e88814e2:	4157c60b          	lrw	a2,a5,s5,0
  l_sum = l_var1 + l_var2;
    e88814e6:	00d6073b          	addw	a4,a2,a3
  if (l_var1 < 0) {  // Check for underflow.
    e88814ea:	0c065963          	bgez	a2,e88815bc <WebRtcAecm_UpdateChannel+0x2a6>
    if ((l_var2 < 0) && (l_sum >= 0)) {
    e88814ee:	0006d663          	bgez	a3,e88814fa <WebRtcAecm_UpdateChannel+0x1e4>
    e88814f2:	00074463          	bltz	a4,e88814fa <WebRtcAecm_UpdateChannel+0x1e4>
        l_sum = (int32_t)0x80000000;
    e88814f6:	80000737          	lui	a4,0x80000
    e88814fa:	4157d70b          	srw	a4,a5,s5,0
                if (aecm->channelAdapt32[i] < 0)
    e88814fe:	e90a3783          	ld	a5,-368(s4)
    e8881502:	4157c70b          	lrw	a4,a5,s5,0
    e8881506:	00075463          	bgez	a4,e888150e <WebRtcAecm_UpdateChannel+0x1f8>
                    aecm->channelAdapt32[i] = 0;
    e888150a:	4157d00b          	srw	zero,a5,s5,0
                        = (int16_t)WEBRTC_SPL_RSHIFT_W32(aecm->channelAdapt32[i], 16);
    e888150e:	e90a3783          	ld	a5,-368(s4)
    e8881512:	e88a3703          	ld	a4,-376(s4)
    e8881516:	00199693          	slli	a3,s3,0x1
    e888151a:	4157c78b          	lrw	a5,a5,s5,0
    e888151e:	4107d79b          	sraiw	a5,a5,0x10
    e8881522:	20d7578b          	srh	a5,a4,a3,0
        for (i = 0; i < PART_LEN1; i++)
    e8881526:	0985                	addi	s3,s3,1
    e8881528:	04100793          	li	a5,65
    e888152c:	e8f992e3          	bne	s3,a5,e88813b0 <WebRtcAecm_UpdateChannel+0x9a>
    e8881530:	b539                	j	e888133e <WebRtcAecm_UpdateChannel+0x28>
                shiftChFar = 32 - zerosCh - zerosFar;
    e8881532:	0124043b          	addw	s0,s0,s2
    e8881536:	02000793          	li	a5,32
    e888153a:	4087843b          	subw	s0,a5,s0
    e888153e:	3c04240b          	ext	s0,s0,15,0
                tmpU32no1 = WEBRTC_SPL_UMUL_32_16(
    e8881542:	408cd73b          	sraw	a4,s9,s0
    e8881546:	03a70dbb          	mulw	s11,a4,s10
    e888154a:	b555                	j	e88813ee <WebRtcAecm_UpdateChannel+0xd8>
                xfaQ = zerosNum - 2;
    e888154c:	ffe6879b          	addiw	a5,a3,-2
    e8881550:	3c07ac8b          	ext	s9,a5,15,0
                dfaQ = RESOLUTION_CHANNEL32 + far_q - aecm->dfaNoisyQDomain -
    e8881554:	57b2                	lw	a5,44(sp)
    e8881556:	40c786bb          	subw	a3,a5,a2
    e888155a:	9e81                	subw	a3,a3,s0
    e888155c:	019686bb          	addw	a3,a3,s9
    e8881560:	bde1                	j	e8881438 <WebRtcAecm_UpdateChannel+0x122>
            tmpU32no1 = WEBRTC_SPL_SHIFT_W32(tmpU32no1, xfaQ);
    e8881562:	40a0053b          	negw	a0,a0
    e8881566:	00add73b          	srlw	a4,s11,a0
    e888156a:	bdf9                	j	e8881448 <WebRtcAecm_UpdateChannel+0x132>
            tmpU32no2 = WEBRTC_SPL_SHIFT_W32((uint32_t)dfa[i], dfaQ);
    e888156c:	40d006bb          	negw	a3,a3
    e8881570:	00d856bb          	srlw	a3,a6,a3
    e8881574:	bdf9                	j	e8881452 <WebRtcAecm_UpdateChannel+0x13c>
                        tmp32no2 = -(int32_t)WEBRTC_SPL_UMUL_32_16(-tmp32no1,
    e8881576:	40e6873b          	subw	a4,a3,a4
    e888157a:	03a7053b          	mulw	a0,a4,s10
    e888157e:	bf01                	j	e888148e <WebRtcAecm_UpdateChannel+0x178>
                    shiftNum = 32 - (zerosNum + zerosFar);
    e8881580:	02000793          	li	a5,32
    e8881584:	4127893b          	subw	s2,a5,s2
    e8881588:	40a9093b          	subw	s2,s2,a0
    e888158c:	3c09290b          	ext	s2,s2,15,0
                    if (tmp32no1 > 0)
    e8881590:	0009051b          	sext.w	a0,s2
    e8881594:	01005763          	blez	a6,e88815a2 <WebRtcAecm_UpdateChannel+0x28c>
                        tmp32no2 = (int32_t)WEBRTC_SPL_UMUL_32_16(
    e8881598:	40a6553b          	sraw	a0,a2,a0
    e888159c:	03a5053b          	mulw	a0,a0,s10
    e88815a0:	bdc5                	j	e8881490 <WebRtcAecm_UpdateChannel+0x17a>
                        tmp32no2 = -(int32_t)WEBRTC_SPL_UMUL_32_16(
    e88815a2:	9f15                	subw	a4,a4,a3
    e88815a4:	40a7573b          	sraw	a4,a4,a0
    e88815a8:	41a005bb          	negw	a1,s10
    e88815ac:	02e5853b          	mulw	a0,a1,a4
    e88815b0:	b5c5                	j	e8881490 <WebRtcAecm_UpdateChannel+0x17a>
                    tmp32no2 = WEBRTC_SPL_SHIFT_W32(tmp32no2, shift2ResChan);
    e88815b2:	40f007bb          	negw	a5,a5
    e88815b6:	40f656bb          	sraw	a3,a2,a5
    e88815ba:	b715                	j	e88814de <WebRtcAecm_UpdateChannel+0x1c8>
    if ((l_var2 > 0) && (l_sum < 0)) {
    e88815bc:	f2d05fe3          	blez	a3,e88814fa <WebRtcAecm_UpdateChannel+0x1e4>
    e88815c0:	f2075de3          	bgez	a4,e88814fa <WebRtcAecm_UpdateChannel+0x1e4>
        l_sum = (int32_t)0x7FFFFFFF;
    e88815c4:	875a                	mv	a4,s6
    e88815c6:	bf15                	j	e88814fa <WebRtcAecm_UpdateChannel+0x1e4>
}
    e88815c8:	744a                	ld	s0,176(sp)
        WebRtcAecm_StoreAdaptiveChannel(aecm, far_spectrum, echoEst);
    e88815ca:	00063797          	auipc	a5,0x63
    e88815ce:	ede78793          	addi	a5,a5,-290 # e88e44a8 <WebRtcAecm_StoreAdaptiveChannel>
    e88815d2:	6622                	ld	a2,8(sp)
}
    e88815d4:	70ea                	ld	ra,184(sp)
    e88815d6:	790a                	ld	s2,160(sp)
    e88815d8:	69ea                	ld	s3,152(sp)
    e88815da:	6a4a                	ld	s4,144(sp)
    e88815dc:	6aaa                	ld	s5,136(sp)
    e88815de:	6b0a                	ld	s6,128(sp)
    e88815e0:	7c46                	ld	s8,112(sp)
    e88815e2:	7ca6                	ld	s9,104(sp)
    e88815e4:	7d06                	ld	s10,96(sp)
    e88815e6:	6de6                	ld	s11,88(sp)
        WebRtcAecm_StoreAdaptiveChannel(aecm, far_spectrum, echoEst);
    e88815e8:	0007b303          	ld	t1,0(a5)
    e88815ec:	85de                	mv	a1,s7
    e88815ee:	8526                	mv	a0,s1
}
    e88815f0:	7be6                	ld	s7,120(sp)
    e88815f2:	74aa                	ld	s1,168(sp)
    e88815f4:	6129                	addi	sp,sp,192
        WebRtcAecm_StoreAdaptiveChannel(aecm, far_spectrum, echoEst);
    e88815f6:	8302                	jr	t1
            aecm->mseChannelCount++;
    e88815f8:	3707d683          	lhu	a3,880(a5)
    e88815fc:	2685                	addiw	a3,a3,1
    e88815fe:	3c06a68b          	ext	a3,a3,15,0
    e8881602:	36d79823          	sh	a3,880(a5)
        if (aecm->mseChannelCount >= (MIN_MSE_COUNT + 10))
    e8881606:	47f5                	li	a5,29
    e8881608:	d6d7d1e3          	bge	a5,a3,e888136a <WebRtcAecm_UpdateChannel+0x54>
    e888160c:	6c070793          	addi	a5,a4,1728 # ffffffff800006c0 <__DRAM0_INF_BASE+0xfffffffe800106c0>
    e8881610:	6e870713          	addi	a4,a4,1768
    e8881614:	97a6                	add	a5,a5,s1
    e8881616:	00e48633          	add	a2,s1,a4
            mseAdapt = 0;
    e888161a:	4901                	li	s2,0
                        - (int32_t)aecm->nearLogEnergy[i]);
    e888161c:	00079583          	lh	a1,0(a5)
                tmp32no1 = ((int32_t)aecm->echoStoredLogEnergy[i]
    e8881620:	10279683          	lh	a3,258(a5)
    e8881624:	0789                	addi	a5,a5,2
    e8881626:	9e8d                	subw	a3,a3,a1
                tmp32no2 = WEBRTC_SPL_ABS_W32(tmp32no1);
    e8881628:	41f6d71b          	sraiw	a4,a3,0x1f
    e888162c:	8eb9                	xor	a3,a3,a4
    e888162e:	9e99                	subw	a3,a3,a4
                tmp32no1 = ((int32_t)aecm->echoAdaptLogEnergy[i]
    e8881630:	08079703          	lh	a4,128(a5)
                mseStored += tmp32no2;
    e8881634:	9c35                	addw	s0,s0,a3
                tmp32no1 = ((int32_t)aecm->echoAdaptLogEnergy[i]
    e8881636:	9f0d                	subw	a4,a4,a1
                tmp32no2 = WEBRTC_SPL_ABS_W32(tmp32no1);
    e8881638:	41f7569b          	sraiw	a3,a4,0x1f
    e888163c:	8f35                	xor	a4,a4,a3
    e888163e:	9f15                	subw	a4,a4,a3
                mseAdapt += tmp32no2;
    e8881640:	0127093b          	addw	s2,a4,s2
            for (i = 0; i < MIN_MSE_COUNT; i++)
    e8881644:	fcf61ce3          	bne	a2,a5,e888161c <WebRtcAecm_UpdateChannel+0x306>
                            * aecm->mseAdaptOld)))
    e8881648:	6711                	lui	a4,0x4
    e888164a:	9726                	add	a4,a4,s1
    e888164c:	35072683          	lw	a3,848(a4) # 4350 <memcmp-0xe87fbcb0>
                    & ((aecm->mseStoredOld << MSE_RESOLUTION) < (MIN_MSE_DIFF
    e8881650:	35472783          	lw	a5,852(a4)
                            * aecm->mseAdaptOld)))
    e8881654:	4775                	li	a4,29
                    & ((aecm->mseStoredOld << MSE_RESOLUTION) < (MIN_MSE_DIFF
    e8881656:	02d7063b          	mulw	a2,a4,a3
    e888165a:	0057979b          	slliw	a5,a5,0x5
            if (((mseStored << MSE_RESOLUTION) < (MIN_MSE_DIFF * mseAdapt))
    e888165e:	02c7d863          	bge	a5,a2,e888168e <WebRtcAecm_UpdateChannel+0x378>
                    & ((aecm->mseStoredOld << MSE_RESOLUTION) < (MIN_MSE_DIFF
    e8881662:	0327073b          	mulw	a4,a4,s2
            if (((mseStored << MSE_RESOLUTION) < (MIN_MSE_DIFF * mseAdapt))
    e8881666:	0054179b          	slliw	a5,s0,0x5
    e888166a:	02e7d263          	bge	a5,a4,e888168e <WebRtcAecm_UpdateChannel+0x378>
                WebRtcAecm_ResetAdaptiveChannel(aecm);
    e888166e:	00063797          	auipc	a5,0x63
    e8881672:	e3278793          	addi	a5,a5,-462 # e88e44a0 <WebRtcAecm_ResetAdaptiveChannel>
    e8881676:	639c                	ld	a5,0(a5)
    e8881678:	8526                	mv	a0,s1
    e888167a:	9782                	jalr	a5
            aecm->mseChannelCount = 0;
    e888167c:	6791                	lui	a5,0x4
    e888167e:	94be                	add	s1,s1,a5
    e8881680:	36049823          	sh	zero,880(s1)
            aecm->mseStoredOld = mseStored;
    e8881684:	3484aa23          	sw	s0,852(s1)
            aecm->mseAdaptOld = mseAdapt;
    e8881688:	3524a823          	sw	s2,848(s1)
}
    e888168c:	b9f9                	j	e888136a <WebRtcAecm_UpdateChannel+0x54>
            } else if (((MIN_MSE_DIFF * mseStored) > (mseAdapt << MSE_RESOLUTION)) & (mseAdapt
    e888168e:	47f5                	li	a5,29
    e8881690:	028787bb          	mulw	a5,a5,s0
    e8881694:	0059171b          	slliw	a4,s2,0x5
    e8881698:	fef752e3          	bge	a4,a5,e888167c <WebRtcAecm_UpdateChannel+0x366>
    e888169c:	0126a7b3          	slt	a5,a3,s2
    e88816a0:	8736                	mv	a4,a3
    e88816a2:	42f9170b          	mvnez	a4,s2,a5
                    < aecm->mseThreshold) & (aecm->mseAdaptOld < aecm->mseThreshold))
    e88816a6:	6991                	lui	s3,0x4
    e88816a8:	99a6                	add	s3,s3,s1
            } else if (((MIN_MSE_DIFF * mseStored) > (mseAdapt << MSE_RESOLUTION)) & (mseAdapt
    e88816aa:	87ba                	mv	a5,a4
    e88816ac:	3589a703          	lw	a4,856(s3) # 4358 <memcmp-0xe87fbca8>
    e88816b0:	fce7d6e3          	bge	a5,a4,e888167c <WebRtcAecm_UpdateChannel+0x366>
                WebRtcAecm_StoreAdaptiveChannel(aecm, far_spectrum, echoEst);
    e88816b4:	00063797          	auipc	a5,0x63
    e88816b8:	df478793          	addi	a5,a5,-524 # e88e44a8 <WebRtcAecm_StoreAdaptiveChannel>
    e88816bc:	639c                	ld	a5,0(a5)
    e88816be:	6622                	ld	a2,8(sp)
    e88816c0:	85de                	mv	a1,s7
    e88816c2:	8526                	mv	a0,s1
    e88816c4:	9782                	jalr	a5
                if (aecm->mseThreshold == WEBRTC_SPL_WORD32_MAX)
    e88816c6:	3589a703          	lw	a4,856(s3)
    e88816ca:	800007b7          	lui	a5,0x80000
    e88816ce:	fff7c793          	not	a5,a5
    e88816d2:	00f71963          	bne	a4,a5,e88816e4 <WebRtcAecm_UpdateChannel+0x3ce>
                    aecm->mseThreshold = (mseAdapt + aecm->mseAdaptOld);
    e88816d6:	3509a783          	lw	a5,848(s3)
    e88816da:	012787bb          	addw	a5,a5,s2
                    aecm->mseThreshold += WEBRTC_SPL_MUL_16_16_RSFT(mseAdapt
    e88816de:	34f9ac23          	sw	a5,856(s3)
    e88816e2:	bf69                	j	e888167c <WebRtcAecm_UpdateChannel+0x366>
    e88816e4:	0107179b          	slliw	a5,a4,0x10
    e88816e8:	4695                	li	a3,5
    e88816ea:	4107d79b          	sraiw	a5,a5,0x10
    e88816ee:	02d787bb          	mulw	a5,a5,a3
    e88816f2:	0cd00693          	li	a3,205
    e88816f6:	4037d79b          	sraiw	a5,a5,0x3
    e88816fa:	40f907bb          	subw	a5,s2,a5
    e88816fe:	0107979b          	slliw	a5,a5,0x10
    e8881702:	4107d79b          	sraiw	a5,a5,0x10
    e8881706:	02d787bb          	mulw	a5,a5,a3
    e888170a:	4087d79b          	sraiw	a5,a5,0x8
    e888170e:	9fb9                	addw	a5,a5,a4
    e8881710:	b7f9                	j	e88816de <WebRtcAecm_UpdateChannel+0x3c8>

00000000e8881712 <WebRtcAecm_CalcSuppressionGain>:
// @param  supGain  [out]   (Return value) Suppression gain with which to scale the noise
//                          level (Q14).
//
//
int16_t WebRtcAecm_CalcSuppressionGain(AecmCore_t * const aecm)
{
    e8881712:	1101                	addi	sp,sp,-32
    e8881714:	e826                	sd	s1,16(sp)

    // Determine suppression gain used in the Wiener filter. The gain is based on a mix of far
    // end energy and echo estimation error.
    // Adjust for the far end signal level. A low signal level indicates no far end signal,
    // hence we set the suppression gain to 0
    if (!aecm->currentVADValue)
    e8881716:	6491                	lui	s1,0x4
    e8881718:	94aa                	add	s1,s1,a0
{
    e888171a:	e422                	sd	s0,8(sp)
    e888171c:	ec06                	sd	ra,24(sp)
    if (!aecm->currentVADValue)
    e888171e:	3684a783          	lw	a5,872(s1) # 4368 <memcmp-0xe87fbc98>
{
    e8881722:	842a                	mv	s0,a0
    {
        supGain = 0;
    e8881724:	4701                	li	a4,0
    if (!aecm->currentVADValue)
    e8881726:	cfa1                	beqz	a5,e888177e <WebRtcAecm_CalcSuppressionGain+0x6c>
    } else
    {
        // Adjust for possible double talk. If we have large variations in estimation error we
        // likely have double talk (or poor channel).
        tmp16no1 = (aecm->nearLogEnergy[0] - aecm->echoStoredLogEnergy[0] - ENERGY_DEV_OFFSET);
    e8881728:	678d                	lui	a5,0x3
    e888172a:	97aa                	add	a5,a5,a0
    e888172c:	6c07d703          	lhu	a4,1728(a5) # 36c0 <memcmp-0xe87fc940>
    e8881730:	7c27d783          	lhu	a5,1986(a5)
    e8881734:	9f1d                	subw	a4,a4,a5
        dE = WEBRTC_SPL_ABS_W16(tmp16no1);
    e8881736:	0107171b          	slliw	a4,a4,0x10
    e888173a:	4107571b          	sraiw	a4,a4,0x10
    e888173e:	41f7569b          	sraiw	a3,a4,0x1f
    e8881742:	00e6c7b3          	xor	a5,a3,a4
    e8881746:	9f95                	subw	a5,a5,a3
    e8881748:	3c07a78b          	ext	a5,a5,15,0

        if (dE < ENERGY_DEV_TOL)
    e888174c:	0007871b          	sext.w	a4,a5
    e8881750:	18f00693          	li	a3,399
    e8881754:	08e6c563          	blt	a3,a4,e88817de <WebRtcAecm_CalcSuppressionGain+0xcc>
        {
            // Likely no double talk. The better estimation, the more we can suppress signal.
            // Update counters
            if (dE < SUPGAIN_EPC_DT)
    e8881758:	0c700693          	li	a3,199
    e888175c:	04e6cf63          	blt	a3,a4,e88817ba <WebRtcAecm_CalcSuppressionGain+0xa8>
            {
                tmp32no1 = WEBRTC_SPL_MUL_16_16(aecm->supGainErrParamDiffAB, dE);
                tmp32no1 += (SUPGAIN_EPC_DT >> 1);
    e8881760:	37a4d703          	lhu	a4,890(s1)
    e8881764:	06400513          	li	a0,100
                tmp16no1 = (int16_t)WebRtcSpl_DivW32W16(tmp32no1, SUPGAIN_EPC_DT);
    e8881768:	0c800593          	li	a1,200
                tmp32no1 += (SUPGAIN_EPC_DT >> 1);
    e888176c:	28f7150b          	mulah	a0,a4,a5
                tmp16no1 = (int16_t)WebRtcSpl_DivW32W16(tmp32no1, SUPGAIN_EPC_DT);
    e8881770:	d4dfe0ef          	jal	ra,e88804bc <WebRtcSpl_DivW32W16>
                supGain = aecm->supGainErrParamA - tmp16no1;
    e8881774:	3764d703          	lhu	a4,886(s1)
    e8881778:	9f09                	subw	a4,a4,a0
                tmp32no1 = WEBRTC_SPL_MUL_16_16(aecm->supGainErrParamDiffBD,
                                                (ENERGY_DEV_TOL - dE));
                tmp32no1 += ((ENERGY_DEV_TOL - SUPGAIN_EPC_DT) >> 1);
                tmp16no1 = (int16_t)WebRtcSpl_DivW32W16(tmp32no1, (ENERGY_DEV_TOL
                        - SUPGAIN_EPC_DT));
                supGain = aecm->supGainErrParamD + tmp16no1;
    e888177a:	3c07270b          	ext	a4,a4,15,0
            // Likely in double talk. Use default value
            supGain = aecm->supGainErrParamD;
        }
    }

    if (supGain > aecm->supGainOld)
    e888177e:	6791                	lui	a5,0x4
    e8881780:	97a2                	add	a5,a5,s0
    e8881782:	3747d783          	lhu	a5,884(a5) # 4374 <memcmp-0xe87fbc8c>
    e8881786:	3c07a68b          	ext	a3,a5,15,0
    e888178a:	00e6d363          	bge	a3,a4,e8881790 <WebRtcAecm_CalcSuppressionGain+0x7e>
    e888178e:	87ba                	mv	a5,a4
    e8881790:	3c07a50b          	ext	a0,a5,15,0
        tmp16no1 = supGain;
    } else
    {
        tmp16no1 = aecm->supGainOld;
    }
    aecm->supGainOld = supGain;
    e8881794:	6791                	lui	a5,0x4
    e8881796:	943e                	add	s0,s0,a5
    if (tmp16no1 < aecm->supGain)
    e8881798:	37241783          	lh	a5,882(s0)
    aecm->supGainOld = supGain;
    e888179c:	36e41a23          	sh	a4,884(s0)
    if (tmp16no1 < aecm->supGain)
    e88817a0:	9d1d                	subw	a0,a0,a5
    e88817a2:	4045551b          	sraiw	a0,a0,0x4
    e88817a6:	9d3d                	addw	a0,a0,a5
    e88817a8:	3c05250b          	ext	a0,a0,15,0
    e88817ac:	36a41923          	sh	a0,882(s0)
    }

    // END: Update suppression gain

    return aecm->supGain;
}
    e88817b0:	60e2                	ld	ra,24(sp)
    e88817b2:	6422                	ld	s0,8(sp)
    e88817b4:	64c2                	ld	s1,16(sp)
    e88817b6:	6105                	addi	sp,sp,32
    e88817b8:	8082                	ret
                tmp32no1 = WEBRTC_SPL_MUL_16_16(aecm->supGainErrParamDiffBD,
    e88817ba:	19000713          	li	a4,400
    e88817be:	40f707bb          	subw	a5,a4,a5
                tmp32no1 += ((ENERGY_DEV_TOL - SUPGAIN_EPC_DT) >> 1);
    e88817c2:	37c4d703          	lhu	a4,892(s1)
                tmp16no1 = (int16_t)WebRtcSpl_DivW32W16(tmp32no1, (ENERGY_DEV_TOL
    e88817c6:	06400513          	li	a0,100
    e88817ca:	0c800593          	li	a1,200
    e88817ce:	28f7150b          	mulah	a0,a4,a5
    e88817d2:	cebfe0ef          	jal	ra,e88804bc <WebRtcSpl_DivW32W16>
                supGain = aecm->supGainErrParamD + tmp16no1;
    e88817d6:	3784d703          	lhu	a4,888(s1)
    e88817da:	9f29                	addw	a4,a4,a0
    e88817dc:	bf79                	j	e888177a <WebRtcAecm_CalcSuppressionGain+0x68>
            supGain = aecm->supGainErrParamD;
    e88817de:	37849703          	lh	a4,888(s1)
    e88817e2:	bf71                	j	e888177e <WebRtcAecm_CalcSuppressionGain+0x6c>

00000000e88817e4 <WebRtcAecm_BufferFarFrame>:

void WebRtcAecm_BufferFarFrame(AecmCore_t* const aecm,
                               const int16_t* const farend,
                               const int farLen)
{
    e88817e4:	715d                	addi	sp,sp,-80
    e88817e6:	fc26                	sd	s1,56(sp)
    e88817e8:	f84a                	sd	s2,48(sp)
    e88817ea:	f44e                	sd	s3,40(sp)
    e88817ec:	f052                	sd	s4,32(sp)
    e88817ee:	ec56                	sd	s5,24(sp)
    e88817f0:	e85a                	sd	s6,16(sp)
    e88817f2:	e45e                	sd	s7,8(sp)
    e88817f4:	e062                	sd	s8,0(sp)
    e88817f6:	e486                	sd	ra,72(sp)
    e88817f8:	e0a2                	sd	s0,64(sp)
    e88817fa:	84aa                	mv	s1,a0
    e88817fc:	8b2e                	mv	s6,a1
    e88817fe:	8a32                	mv	s4,a2
    int writeLen = farLen, writePos = 0;
    e8881800:	8932                	mv	s2,a2
    e8881802:	4981                	li	s3,0
    e8881804:	03850b93          	addi	s7,a0,56

    // Check if the write position must be wrapped
    while (aecm->farBufWritePos + writeLen > FAR_BUF_LEN)
    e8881808:	10000a93          	li	s5,256
    {
        // Write to remaining buffer space before wrapping
        writeLen = FAR_BUF_LEN - aecm->farBufWritePos;
    e888180c:	10000c13          	li	s8,256
    while (aecm->farBufWritePos + writeLen > FAR_BUF_LEN)
    e8881810:	4080                	lw	s0,0(s1)
    e8881812:	033b158b          	addsl	a1,s6,s3,1
    e8881816:	012407bb          	addw	a5,s0,s2
    e888181a:	028b950b          	addsl	a0,s7,s0,1
    e888181e:	02fac663          	blt	s5,a5,e888184a <WebRtcAecm_BufferFarFrame+0x66>
        aecm->farBufWritePos = 0;
        writePos = writeLen;
        writeLen = farLen - writeLen;
    }

    memcpy(aecm->farBuf + aecm->farBufWritePos, farend + writePos,
    e8881822:	00191613          	slli	a2,s2,0x1
    e8881826:	b7bfa0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
           sizeof(int16_t) * writeLen);
    aecm->farBufWritePos += writeLen;
    e888182a:	4080                	lw	s0,0(s1)
}
    e888182c:	60a6                	ld	ra,72(sp)
    e888182e:	79a2                	ld	s3,40(sp)
    aecm->farBufWritePos += writeLen;
    e8881830:	0124043b          	addw	s0,s0,s2
    e8881834:	c080                	sw	s0,0(s1)
}
    e8881836:	6406                	ld	s0,64(sp)
    e8881838:	74e2                	ld	s1,56(sp)
    e888183a:	7942                	ld	s2,48(sp)
    e888183c:	7a02                	ld	s4,32(sp)
    e888183e:	6ae2                	ld	s5,24(sp)
    e8881840:	6b42                	ld	s6,16(sp)
    e8881842:	6ba2                	ld	s7,8(sp)
    e8881844:	6c02                	ld	s8,0(sp)
    e8881846:	6161                	addi	sp,sp,80
    e8881848:	8082                	ret
        writeLen = FAR_BUF_LEN - aecm->farBufWritePos;
    e888184a:	408c09bb          	subw	s3,s8,s0
        memcpy(aecm->farBuf + aecm->farBufWritePos, farend + writePos,
    e888184e:	00199613          	slli	a2,s3,0x1
        writeLen = farLen - writeLen;
    e8881852:	f004041b          	addiw	s0,s0,-256
        memcpy(aecm->farBuf + aecm->farBufWritePos, farend + writePos,
    e8881856:	b4bfa0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        writeLen = farLen - writeLen;
    e888185a:	0144093b          	addw	s2,s0,s4
        aecm->farBufWritePos = 0;
    e888185e:	0004a023          	sw	zero,0(s1)
        writeLen = farLen - writeLen;
    e8881862:	b77d                	j	e8881810 <WebRtcAecm_BufferFarFrame+0x2c>

00000000e8881864 <WebRtcAecm_FetchFarFrame>:

void WebRtcAecm_FetchFarFrame(AecmCore_t * const aecm, int16_t * const farend,
                              const int farLen, const int knownDelay)
{
    e8881864:	715d                	addi	sp,sp,-80
    e8881866:	e0a2                	sd	s0,64(sp)
    e8881868:	f052                	sd	s4,32(sp)
    e888186a:	e45e                	sd	s7,8(sp)
    e888186c:	e486                	sd	ra,72(sp)
    e888186e:	fc26                	sd	s1,56(sp)
    e8881870:	f84a                	sd	s2,48(sp)
    e8881872:	f44e                	sd	s3,40(sp)
    e8881874:	ec56                	sd	s5,24(sp)
    e8881876:	e85a                	sd	s6,16(sp)
    e8881878:	e062                	sd	s8,0(sp)
    int readLen = farLen;
    int readPos = 0;
    int delayChange = knownDelay - aecm->lastKnownDelay;

    aecm->farBufReadPos -= delayChange;
    e888187a:	4158                	lw	a4,4(a0)
    e888187c:	455c                	lw	a5,12(a0)
{
    e888187e:	842a                	mv	s0,a0
    e8881880:	8bae                	mv	s7,a1
    aecm->farBufReadPos -= delayChange;
    e8881882:	9fb9                	addw	a5,a5,a4
    e8881884:	9f95                	subw	a5,a5,a3
{
    e8881886:	8a32                	mv	s4,a2
    aecm->farBufReadPos -= delayChange;
    e8881888:	c15c                	sw	a5,4(a0)

    // Check if delay forces a read position wrap
    while (aecm->farBufReadPos < 0)
    e888188a:	405c                	lw	a5,4(s0)
    e888188c:	0407cd63          	bltz	a5,e88818e6 <WebRtcAecm_FetchFarFrame+0x82>
    {
        aecm->farBufReadPos += FAR_BUF_LEN;
    }
    while (aecm->farBufReadPos > FAR_BUF_LEN - 1)
    e8881890:	0ff00713          	li	a4,255
    e8881894:	405c                	lw	a5,4(s0)
    e8881896:	04f74c63          	blt	a4,a5,e88818ee <WebRtcAecm_FetchFarFrame+0x8a>
    {
        aecm->farBufReadPos -= FAR_BUF_LEN;
    }

    aecm->lastKnownDelay = knownDelay;
    e888189a:	c454                	sw	a3,12(s0)
    int readLen = farLen;
    e888189c:	8952                	mv	s2,s4
    int readPos = 0;
    e888189e:	4981                	li	s3,0
    e88818a0:	03840b13          	addi	s6,s0,56

    // Check if read position must be wrapped
    while (aecm->farBufReadPos + readLen > FAR_BUF_LEN)
    e88818a4:	10000a93          	li	s5,256
    {

        // Read from remaining buffer space before wrapping
        readLen = FAR_BUF_LEN - aecm->farBufReadPos;
    e88818a8:	10000c13          	li	s8,256
    while (aecm->farBufReadPos + readLen > FAR_BUF_LEN)
    e88818ac:	4044                	lw	s1,4(s0)
    e88818ae:	033b950b          	addsl	a0,s7,s3,1
    e88818b2:	012487bb          	addw	a5,s1,s2
    e88818b6:	029b158b          	addsl	a1,s6,s1,1
    e88818ba:	02face63          	blt	s5,a5,e88818f6 <WebRtcAecm_FetchFarFrame+0x92>
               sizeof(int16_t) * readLen);
        aecm->farBufReadPos = 0;
        readPos = readLen;
        readLen = farLen - readLen;
    }
    memcpy(farend + readPos, aecm->farBuf + aecm->farBufReadPos,
    e88818be:	00191613          	slli	a2,s2,0x1
    e88818c2:	adffa0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
           sizeof(int16_t) * readLen);
    aecm->farBufReadPos += readLen;
    e88818c6:	4044                	lw	s1,4(s0)
}
    e88818c8:	60a6                	ld	ra,72(sp)
    e88818ca:	79a2                	ld	s3,40(sp)
    aecm->farBufReadPos += readLen;
    e88818cc:	012484bb          	addw	s1,s1,s2
    e88818d0:	c044                	sw	s1,4(s0)
}
    e88818d2:	6406                	ld	s0,64(sp)
    e88818d4:	74e2                	ld	s1,56(sp)
    e88818d6:	7942                	ld	s2,48(sp)
    e88818d8:	7a02                	ld	s4,32(sp)
    e88818da:	6ae2                	ld	s5,24(sp)
    e88818dc:	6b42                	ld	s6,16(sp)
    e88818de:	6ba2                	ld	s7,8(sp)
    e88818e0:	6c02                	ld	s8,0(sp)
    e88818e2:	6161                	addi	sp,sp,80
    e88818e4:	8082                	ret
        aecm->farBufReadPos += FAR_BUF_LEN;
    e88818e6:	1007879b          	addiw	a5,a5,256
    e88818ea:	c05c                	sw	a5,4(s0)
    e88818ec:	bf79                	j	e888188a <WebRtcAecm_FetchFarFrame+0x26>
        aecm->farBufReadPos -= FAR_BUF_LEN;
    e88818ee:	f007879b          	addiw	a5,a5,-256
    e88818f2:	c05c                	sw	a5,4(s0)
    e88818f4:	b745                	j	e8881894 <WebRtcAecm_FetchFarFrame+0x30>
        readLen = FAR_BUF_LEN - aecm->farBufReadPos;
    e88818f6:	409c09bb          	subw	s3,s8,s1
        memcpy(farend + readPos, aecm->farBuf + aecm->farBufReadPos,
    e88818fa:	00199613          	slli	a2,s3,0x1
        readLen = farLen - readLen;
    e88818fe:	f004849b          	addiw	s1,s1,-256
        memcpy(farend + readPos, aecm->farBuf + aecm->farBufReadPos,
    e8881902:	a9ffa0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        readLen = farLen - readLen;
    e8881906:	0144893b          	addw	s2,s1,s4
        aecm->farBufReadPos = 0;
    e888190a:	00042223          	sw	zero,4(s0)
        readLen = farLen - readLen;
    e888190e:	bf79                	j	e88818ac <WebRtcAecm_FetchFarFrame+0x48>

00000000e8881910 <WebRtcAecm_ProcessFrame>:
{
    e8881910:	d0010113          	addi	sp,sp,-768
    e8881914:	2d313c23          	sd	s3,728(sp)
    e8881918:	89b2                	mv	s3,a2
    WebRtcAecm_BufferFarFrame(aecm, farend, FRAME_LEN);
    e888191a:	05000613          	li	a2,80
{
    e888191e:	2e113c23          	sd	ra,760(sp)
    e8881922:	2e813823          	sd	s0,752(sp)
    e8881926:	2e913423          	sd	s1,744(sp)
    e888192a:	842a                	mv	s0,a0
    e888192c:	2f213023          	sd	s2,736(sp)
    e8881930:	84ba                	mv	s1,a4
    e8881932:	8936                	mv	s2,a3
    e8881934:	2d413823          	sd	s4,720(sp)
    const int16_t* out_ptr = NULL;
    e8881938:	e002                	sd	zero,0(sp)
    WebRtcAecm_BufferFarFrame(aecm, farend, FRAME_LEN);
    e888193a:	eabff0ef          	jal	ra,e88817e4 <WebRtcAecm_BufferFarFrame>
    WebRtcAecm_FetchFarFrame(aecm, farFrame, FRAME_LEN, aecm->knownDelay);
    e888193e:	4414                	lw	a3,8(s0)
    e8881940:	05000613          	li	a2,80
    e8881944:	1c0c                	addi	a1,sp,560
    e8881946:	8522                	mv	a0,s0
    e8881948:	f1dff0ef          	jal	ra,e8881864 <WebRtcAecm_FetchFarFrame>
    WebRtc_WriteBuffer(aecm->farFrameBuf, farFrame, FRAME_LEN);
    e888194c:	6c08                	ld	a0,24(s0)
    e888194e:	05000613          	li	a2,80
    e8881952:	1c0c                	addi	a1,sp,560
    e8881954:	991fe0ef          	jal	ra,e88802e4 <WebRtc_WriteBuffer>
    WebRtc_WriteBuffer(aecm->nearNoisyFrameBuf, nearendNoisy, FRAME_LEN);
    e8881958:	7008                	ld	a0,32(s0)
    e888195a:	05000613          	li	a2,80
    e888195e:	85ce                	mv	a1,s3
    e8881960:	985fe0ef          	jal	ra,e88802e4 <WebRtc_WriteBuffer>
    if (nearendClean != NULL)
    e8881964:	00090863          	beqz	s2,e8881974 <WebRtcAecm_ProcessFrame+0x64>
        WebRtc_WriteBuffer(aecm->nearCleanFrameBuf, nearendClean, FRAME_LEN);
    e8881968:	7408                	ld	a0,40(s0)
    e888196a:	05000613          	li	a2,80
    e888196e:	85ca                	mv	a1,s2
    e8881970:	975fe0ef          	jal	ra,e88802e4 <WebRtc_WriteBuffer>
    while (WebRtc_available_read(aecm->farFrameBuf) >= PART_LEN)
    e8881974:	03f00a13          	li	s4,63
            if (WebRtcAecm_ProcessBlock(aecm,
    e8881978:	59fd                	li	s3,-1
    while (WebRtc_available_read(aecm->farFrameBuf) >= PART_LEN)
    e888197a:	6c08                	ld	a0,24(s0)
    e888197c:	92bfe0ef          	jal	ra,e88802a6 <WebRtc_available_read>
    e8881980:	04aa6163          	bltu	s4,a0,e88819c2 <WebRtcAecm_ProcessFrame+0xb2>
    size = (int) WebRtc_available_read(aecm->outFrameBuf);
    e8881984:	7808                	ld	a0,48(s0)
    e8881986:	921fe0ef          	jal	ra,e88802a6 <WebRtc_available_read>
    e888198a:	0005059b          	sext.w	a1,a0
    if (size < FRAME_LEN)
    e888198e:	04f00793          	li	a5,79
    e8881992:	00b7c763          	blt	a5,a1,e88819a0 <WebRtcAecm_ProcessFrame+0x90>
        WebRtc_MoveReadPtr(aecm->outFrameBuf, size - FRAME_LEN);
    e8881996:	7808                	ld	a0,48(s0)
    e8881998:	fb05859b          	addiw	a1,a1,-80
    e888199c:	9e3fe0ef          	jal	ra,e888037e <WebRtc_MoveReadPtr>
    WebRtc_ReadBuffer(aecm->outFrameBuf, (void**) &out_ptr, out, FRAME_LEN);
    e88819a0:	7808                	ld	a0,48(s0)
    e88819a2:	858a                	mv	a1,sp
    e88819a4:	05000693          	li	a3,80
    e88819a8:	8626                	mv	a2,s1
    e88819aa:	a45fe0ef          	jal	ra,e88803ee <WebRtc_ReadBuffer>
    return 0;
    e88819ae:	4401                	li	s0,0
    if (out_ptr != out) {
    e88819b0:	6582                	ld	a1,0(sp)
    e88819b2:	06958663          	beq	a1,s1,e8881a1e <WebRtcAecm_ProcessFrame+0x10e>
      memcpy(out, out_ptr, FRAME_LEN * sizeof(int16_t));
    e88819b6:	0a000613          	li	a2,160
    e88819ba:	8526                	mv	a0,s1
    e88819bc:	9e5fa0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e88819c0:	a8b9                	j	e8881a1e <WebRtcAecm_ProcessFrame+0x10e>
        WebRtc_ReadBuffer(aecm->farFrameBuf, (void**) &far_block_ptr, far_block,
    e88819c2:	6c08                	ld	a0,24(s0)
    e88819c4:	04000693          	li	a3,64
    e88819c8:	1010                	addi	a2,sp,32
    e88819ca:	002c                	addi	a1,sp,8
        const int16_t* far_block_ptr = NULL;
    e88819cc:	e402                	sd	zero,8(sp)
        const int16_t* near_noisy_block_ptr = NULL;
    e88819ce:	e802                	sd	zero,16(sp)
        WebRtc_ReadBuffer(aecm->farFrameBuf, (void**) &far_block_ptr, far_block,
    e88819d0:	a1ffe0ef          	jal	ra,e88803ee <WebRtc_ReadBuffer>
        WebRtc_ReadBuffer(aecm->nearNoisyFrameBuf,
    e88819d4:	7008                	ld	a0,32(s0)
    e88819d6:	04000693          	li	a3,64
    e88819da:	1110                	addi	a2,sp,160
    e88819dc:	080c                	addi	a1,sp,16
    e88819de:	a11fe0ef          	jal	ra,e88803ee <WebRtc_ReadBuffer>
        if (nearendClean != NULL)
    e88819e2:	02090a63          	beqz	s2,e8881a16 <WebRtcAecm_ProcessFrame+0x106>
            WebRtc_ReadBuffer(aecm->nearCleanFrameBuf,
    e88819e6:	7408                	ld	a0,40(s0)
    e88819e8:	04000693          	li	a3,64
    e88819ec:	1210                	addi	a2,sp,288
    e88819ee:	082c                	addi	a1,sp,24
            const int16_t* near_clean_block_ptr = NULL;
    e88819f0:	ec02                	sd	zero,24(sp)
            WebRtc_ReadBuffer(aecm->nearCleanFrameBuf,
    e88819f2:	9fdfe0ef          	jal	ra,e88803ee <WebRtc_ReadBuffer>
            if (WebRtcAecm_ProcessBlock(aecm,
    e88819f6:	66e2                	ld	a3,24(sp)
    e88819f8:	1318                	addi	a4,sp,416
            if (WebRtcAecm_ProcessBlock(aecm,
    e88819fa:	6642                	ld	a2,16(sp)
    e88819fc:	65a2                	ld	a1,8(sp)
    e88819fe:	8522                	mv	a0,s0
    e8881a00:	278000ef          	jal	ra,e8881c78 <WebRtcAecm_ProcessBlock>
    e8881a04:	01350c63          	beq	a0,s3,e8881a1c <WebRtcAecm_ProcessFrame+0x10c>
        WebRtc_WriteBuffer(aecm->outFrameBuf, outBlock, PART_LEN);
    e8881a08:	7808                	ld	a0,48(s0)
    e8881a0a:	04000613          	li	a2,64
    e8881a0e:	130c                	addi	a1,sp,416
    e8881a10:	8d5fe0ef          	jal	ra,e88802e4 <WebRtc_WriteBuffer>
    e8881a14:	b79d                	j	e888197a <WebRtcAecm_ProcessFrame+0x6a>
            if (WebRtcAecm_ProcessBlock(aecm,
    e8881a16:	1318                	addi	a4,sp,416
    e8881a18:	4681                	li	a3,0
    e8881a1a:	b7c5                	j	e88819fa <WebRtcAecm_ProcessFrame+0xea>
    e8881a1c:	547d                	li	s0,-1
}
    e8881a1e:	8522                	mv	a0,s0
    e8881a20:	2f813083          	ld	ra,760(sp)
    e8881a24:	2f013403          	ld	s0,752(sp)
    e8881a28:	2e813483          	ld	s1,744(sp)
    e8881a2c:	2e013903          	ld	s2,736(sp)
    e8881a30:	2d813983          	ld	s3,728(sp)
    e8881a34:	2d013a03          	ld	s4,720(sp)
    e8881a38:	30010113          	addi	sp,sp,768
    e8881a3c:	8082                	ret

00000000e8881a3e <WebRtcSpl_NormW16.part.0>:
    a = ~a;
    e8881a3e:	43f55793          	srai	a5,a0,0x3f
    e8881a42:	8d3d                	xor	a0,a0,a5
  if (!(0xFF80 & a)) {
    e8881a44:	6741                	lui	a4,0x10
    e8881a46:	0005079b          	sext.w	a5,a0
    e8881a4a:	f8070513          	addi	a0,a4,-128 # ff80 <memcmp-0xe87f0080>
    e8881a4e:	8d7d                	and	a0,a0,a5
    zeros = 0;
    e8881a50:	00153513          	seqz	a0,a0
    e8881a54:	050e                	slli	a0,a0,0x3
  if (!(0xF800 & (a << zeros))) zeros += 4;
    e8881a56:	00a796bb          	sllw	a3,a5,a0
    e8881a5a:	8007071b          	addiw	a4,a4,-2048
    e8881a5e:	8f75                	and	a4,a4,a3
    e8881a60:	e311                	bnez	a4,e8881a64 <WebRtcSpl_NormW16.part.0+0x26>
    e8881a62:	2511                	addiw	a0,a0,4
  if (!(0xE000 & (a << zeros))) zeros += 2;
    e8881a64:	00a7973b          	sllw	a4,a5,a0
    e8881a68:	66b9                	lui	a3,0xe
    e8881a6a:	8f75                	and	a4,a4,a3
    e8881a6c:	e311                	bnez	a4,e8881a70 <WebRtcSpl_NormW16.part.0+0x32>
    e8881a6e:	2509                	addiw	a0,a0,2
  if (!(0xC000 & (a << zeros))) zeros += 1;
    e8881a70:	00a797bb          	sllw	a5,a5,a0
    e8881a74:	6731                	lui	a4,0xc
    e8881a76:	8ff9                	and	a5,a5,a4
    e8881a78:	e391                	bnez	a5,e8881a7c <WebRtcSpl_NormW16.part.0+0x3e>
    e8881a7a:	2505                	addiw	a0,a0,1
}
    e8881a7c:	8082                	ret

00000000e8881a7e <TimeToFrequencyDomain>:
static int TimeToFrequencyDomain(AecmCore_t* aecm,
                                 const int16_t* time_signal,
                                 complex16_t* freq_signal,
                                 uint16_t* freq_signal_abs,
                                 uint32_t* freq_signal_sum_abs)
{
    e8881a7e:	d9010113          	addi	sp,sp,-624
  uint16_t alpha = 0;
  uint16_t beta = 0;
#endif

#ifdef AECM_DYNAMIC_Q
  tmp16no1 = WebRtcSpl_MaxAbsValueW16(time_signal, PART_LEN2);
    e8881a82:	00063797          	auipc	a5,0x63
    e8881a86:	9c678793          	addi	a5,a5,-1594 # e88e4448 <WebRtcSpl_MaxAbsValueW16>
{
    e8881a8a:	26813023          	sd	s0,608(sp)
    e8881a8e:	24913c23          	sd	s1,600(sp)
    e8881a92:	25213823          	sd	s2,592(sp)
    e8881a96:	25313423          	sd	s3,584(sp)
    e8881a9a:	25413023          	sd	s4,576(sp)
    e8881a9e:	23513c23          	sd	s5,568(sp)
    e8881aa2:	23613823          	sd	s6,560(sp)
    e8881aa6:	26113423          	sd	ra,616(sp)
    e8881aaa:	23713423          	sd	s7,552(sp)
  tmp16no1 = WebRtcSpl_MaxAbsValueW16(time_signal, PART_LEN2);
    e8881aae:	639c                	ld	a5,0(a5)
{
    e8881ab0:	8b2e                	mv	s6,a1
    e8881ab2:	892a                	mv	s2,a0
  tmp16no1 = WebRtcSpl_MaxAbsValueW16(time_signal, PART_LEN2);
    e8881ab4:	08000593          	li	a1,128
    e8881ab8:	855a                	mv	a0,s6
{
    e8881aba:	89b2                	mv	s3,a2
    e8881abc:	84b6                	mv	s1,a3
    e8881abe:	843a                	mv	s0,a4
  int16_t *fft = (int16_t *) (((uintptr_t) fft_buf + 31) & ~31);
    e8881ac0:	01f10a93          	addi	s5,sp,31
  tmp16no1 = WebRtcSpl_MaxAbsValueW16(time_signal, PART_LEN2);
    e8881ac4:	9782                	jalr	a5
  int16_t *fft = (int16_t *) (((uintptr_t) fft_buf + 31) & ~31);
    e8881ac6:	fe0afa93          	andi	s5,s5,-32
  if (a == 0) {
    e8881aca:	4a01                	li	s4,0
    e8881acc:	c501                	beqz	a0,e8881ad4 <TimeToFrequencyDomain+0x56>
    e8881ace:	f71ff0ef          	jal	ra,e8881a3e <WebRtcSpl_NormW16.part.0>
    e8881ad2:	8a2a                	mv	s4,a0
  for (i = 0; i < PART_LEN; i++) {
    e8881ad4:	0004c697          	auipc	a3,0x4c
    e8881ad8:	76c68693          	addi	a3,a3,1900 # e88ce240 <WebRtcAecm_kSqrtHanning>
    return 0;
    e8881adc:	4701                	li	a4,0
    e8881ade:	88b6                	mv	a7,a3
    fft[PART_LEN + i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(
    e8881ae0:	080b0813          	addi	a6,s6,128 # ffffffff80000080 <__DRAM0_INF_BASE+0xfffffffe80010080>
  for (i = 0; i < PART_LEN; i++) {
    e8881ae4:	08000613          	li	a2,128
    fft[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(
    e8881ae8:	20eb478b          	lrh	a5,s6,a4,0
    e8881aec:	20e8c58b          	lrh	a1,a7,a4,0
    e8881af0:	16f9                	addi	a3,a3,-2
    e8881af2:	014797bb          	sllw	a5,a5,s4
    e8881af6:	0107979b          	slliw	a5,a5,0x10
    e8881afa:	4107d79b          	sraiw	a5,a5,0x10
    e8881afe:	02b787bb          	mulw	a5,a5,a1
    fft[PART_LEN + i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(
    e8881b02:	00ea85b3          	add	a1,s5,a4
    fft[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(
    e8881b06:	40e7d79b          	sraiw	a5,a5,0xe
    e8881b0a:	20ead78b          	srh	a5,s5,a4,0
    fft[PART_LEN + i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(
    e8881b0e:	20e8478b          	lrh	a5,a6,a4,0
    e8881b12:	08269503          	lh	a0,130(a3)
    e8881b16:	0709                	addi	a4,a4,2
    e8881b18:	014797bb          	sllw	a5,a5,s4
    e8881b1c:	0107979b          	slliw	a5,a5,0x10
    e8881b20:	4107d79b          	sraiw	a5,a5,0x10
    e8881b24:	02a787bb          	mulw	a5,a5,a0
    e8881b28:	40e7d79b          	sraiw	a5,a5,0xe
    e8881b2c:	08f59023          	sh	a5,128(a1)
  for (i = 0; i < PART_LEN; i++) {
    e8881b30:	fac71ce3          	bne	a4,a2,e8881ae8 <TimeToFrequencyDomain+0x6a>
  WebRtcSpl_RealForwardFFT(aecm->real_fft, fft, (int16_t*)freq_signal);
    e8881b34:	6791                	lui	a5,0x4
    e8881b36:	993e                	add	s2,s2,a5
    e8881b38:	00063797          	auipc	a5,0x63
    e8881b3c:	94078793          	addi	a5,a5,-1728 # e88e4478 <WebRtcSpl_RealForwardFFT>
    e8881b40:	639c                	ld	a5,0(a5)
    e8881b42:	38093503          	ld	a0,896(s2)
    e8881b46:	85d6                	mv	a1,s5
    e8881b48:	864e                	mv	a2,s3
    e8881b4a:	9782                	jalr	a5
  for (i = 0; i < PART_LEN; i++) {
    e8881b4c:	00298a93          	addi	s5,s3,2
    e8881b50:	87d6                	mv	a5,s5
    e8881b52:	10298693          	addi	a3,s3,258
    freq_signal[i].imag = -freq_signal[i].imag;
    e8881b56:	0007d703          	lhu	a4,0(a5)
    e8881b5a:	40e0073b          	negw	a4,a4
    e8881b5e:	3847d70b          	shia	a4,(a5),4,0
  for (i = 0; i < PART_LEN; i++) {
    e8881b62:	fef69ae3          	bne	a3,a5,e8881b56 <TimeToFrequencyDomain+0xd8>

  // Extract imaginary and real part, calculate the magnitude for
  // all frequency bins
  freq_signal[0].imag = 0;
  freq_signal[PART_LEN].imag = 0;
  freq_signal_abs[0] = (uint16_t)WEBRTC_SPL_ABS_W16(freq_signal[0].real);
    e8881b66:	00099783          	lh	a5,0(s3)
  freq_signal[0].imag = 0;
    e8881b6a:	00099123          	sh	zero,2(s3)
  freq_signal[PART_LEN].imag = 0;
    e8881b6e:	10099123          	sh	zero,258(s3)
  freq_signal_abs[0] = (uint16_t)WEBRTC_SPL_ABS_W16(freq_signal[0].real);
    e8881b72:	3c07b70b          	extu	a4,a5,15,0
    e8881b76:	0007d663          	bgez	a5,e8881b82 <TimeToFrequencyDomain+0x104>
    e8881b7a:	40e0073b          	negw	a4,a4
    e8881b7e:	3c07370b          	extu	a4,a4,15,0
    e8881b82:	00e49023          	sh	a4,0(s1)
  freq_signal_abs[PART_LEN] = (uint16_t)WEBRTC_SPL_ABS_W16(
    e8881b86:	10099783          	lh	a5,256(s3)
    e8881b8a:	0607cc63          	bltz	a5,e8881c02 <TimeToFrequencyDomain+0x184>
    e8881b8e:	3c07b78b          	extu	a5,a5,15,0
    e8881b92:	08f49023          	sh	a5,128(s1)
        l_sum = (int32_t)0x7FFFFFFF;
    e8881b96:	80000b37          	lui	s6,0x80000
                                freq_signal[PART_LEN].real);
  (*freq_signal_sum_abs) = (uint32_t)(freq_signal_abs[0]) +
    e8881b9a:	9fb9                	addw	a5,a5,a4
    e8881b9c:	c01c                	sw	a5,0(s0)
    e8881b9e:	4905                	li	s2,1
    e8881ba0:	fffb4b13          	not	s6,s6
                           (uint32_t)(freq_signal_abs[PART_LEN]);

  for (i = 1; i < PART_LEN; i++)
    e8881ba4:	04000b93          	li	s7,64
  {
    if (freq_signal[i].real == 0)
    e8881ba8:	2529c70b          	lrh	a4,s3,s2,2
    e8881bac:	252ac78b          	lrh	a5,s5,s2,2
    e8881bb0:	ef21                	bnez	a4,e8881c08 <TimeToFrequencyDomain+0x18a>
    {
      freq_signal_abs[i] = (uint16_t)WEBRTC_SPL_ABS_W16(freq_signal[i].imag);
    e8881bb2:	3c07b70b          	extu	a4,a5,15,0
    e8881bb6:	0007d663          	bgez	a5,e8881bc2 <TimeToFrequencyDomain+0x144>
    e8881bba:	40e0073b          	negw	a4,a4
    e8881bbe:	3c07370b          	extu	a4,a4,15,0
    e8881bc2:	2324d70b          	srh	a4,s1,s2,1
      tmp32no1 = WebRtcSpl_SqrtFloor(tmp32no2);

      freq_signal_abs[i] = (uint16_t)tmp32no1;
#endif // AECM_WITH_ABS_APPROX
    }
    (*freq_signal_sum_abs) += (uint32_t)freq_signal_abs[i];
    e8881bc6:	a324c70b          	lrhu	a4,s1,s2,1
    e8881bca:	401c                	lw	a5,0(s0)
    e8881bcc:	0905                	addi	s2,s2,1
    e8881bce:	9fb9                	addw	a5,a5,a4
    e8881bd0:	c01c                	sw	a5,0(s0)
  for (i = 1; i < PART_LEN; i++)
    e8881bd2:	fd791be3          	bne	s2,s7,e8881ba8 <TimeToFrequencyDomain+0x12a>
  }

  return time_signal_scaling;
}
    e8881bd6:	26813083          	ld	ra,616(sp)
    e8881bda:	26013403          	ld	s0,608(sp)
    e8881bde:	8552                	mv	a0,s4
    e8881be0:	25813483          	ld	s1,600(sp)
    e8881be4:	25013903          	ld	s2,592(sp)
    e8881be8:	24813983          	ld	s3,584(sp)
    e8881bec:	24013a03          	ld	s4,576(sp)
    e8881bf0:	23813a83          	ld	s5,568(sp)
    e8881bf4:	23013b03          	ld	s6,560(sp)
    e8881bf8:	22813b83          	ld	s7,552(sp)
    e8881bfc:	27010113          	addi	sp,sp,624
    e8881c00:	8082                	ret
  freq_signal_abs[PART_LEN] = (uint16_t)WEBRTC_SPL_ABS_W16(
    e8881c02:	40f007bb          	negw	a5,a5
    e8881c06:	b761                	j	e8881b8e <TimeToFrequencyDomain+0x110>
    else if (freq_signal[i].imag == 0)
    e8881c08:	ef81                	bnez	a5,e8881c20 <TimeToFrequencyDomain+0x1a2>
      freq_signal_abs[i] = (uint16_t)WEBRTC_SPL_ABS_W16(freq_signal[i].real);
    e8881c0a:	3c07378b          	extu	a5,a4,15,0
    e8881c0e:	00075663          	bgez	a4,e8881c1a <TimeToFrequencyDomain+0x19c>
    e8881c12:	40f007bb          	negw	a5,a5
    e8881c16:	3c07b78b          	extu	a5,a5,15,0
    e8881c1a:	2324d78b          	srh	a5,s1,s2,1
    e8881c1e:	b765                	j	e8881bc6 <TimeToFrequencyDomain+0x148>
      tmp16no1 = WEBRTC_SPL_ABS_W16(freq_signal[i].real);
    e8881c20:	41f7569b          	sraiw	a3,a4,0x1f
    e8881c24:	8f35                	xor	a4,a4,a3
    e8881c26:	9f15                	subw	a4,a4,a3
      tmp16no2 = WEBRTC_SPL_ABS_W16(freq_signal[i].imag);
    e8881c28:	41f7d69b          	sraiw	a3,a5,0x1f
    e8881c2c:	00d7c533          	xor	a0,a5,a3
    e8881c30:	9d15                	subw	a0,a0,a3
      tmp32no1 = WEBRTC_SPL_MUL_16_16(tmp16no1, tmp16no1);
    e8881c32:	0107171b          	slliw	a4,a4,0x10
    e8881c36:	4107571b          	sraiw	a4,a4,0x10
      tmp32no2 = WEBRTC_SPL_MUL_16_16(tmp16no2, tmp16no2);
    e8881c3a:	0105151b          	slliw	a0,a0,0x10
      tmp32no1 = WEBRTC_SPL_MUL_16_16(tmp16no1, tmp16no1);
    e8881c3e:	02e7073b          	mulw	a4,a4,a4
      tmp32no2 = WEBRTC_SPL_MUL_16_16(tmp16no2, tmp16no2);
    e8881c42:	4105551b          	sraiw	a0,a0,0x10
    e8881c46:	02a507bb          	mulw	a5,a0,a0
  if (l_var1 < 0) {  // Check for underflow.
    e8881c4a:	02071693          	slli	a3,a4,0x20
  l_sum = l_var1 + l_var2;
    e8881c4e:	00f7053b          	addw	a0,a4,a5
  if (l_var1 < 0) {  // Check for underflow.
    e8881c52:	0006dd63          	bgez	a3,e8881c6c <TimeToFrequencyDomain+0x1ee>
    if ((l_var2 < 0) && (l_sum >= 0)) {
    e8881c56:	0007d663          	bgez	a5,e8881c62 <TimeToFrequencyDomain+0x1e4>
    e8881c5a:	00054463          	bltz	a0,e8881c62 <TimeToFrequencyDomain+0x1e4>
        l_sum = (int32_t)0x80000000;
    e8881c5e:	80000537          	lui	a0,0x80000
      tmp32no1 = WebRtcSpl_SqrtFloor(tmp32no2);
    e8881c62:	2e6010ef          	jal	ra,e8882f48 <WebRtcSpl_SqrtFloor>
      freq_signal_abs[i] = (uint16_t)tmp32no1;
    e8881c66:	2324d50b          	srh	a0,s1,s2,1
    e8881c6a:	bfb1                	j	e8881bc6 <TimeToFrequencyDomain+0x148>
    if ((l_var2 > 0) && (l_sum < 0)) {
    e8881c6c:	fef05be3          	blez	a5,e8881c62 <TimeToFrequencyDomain+0x1e4>
    e8881c70:	fe0559e3          	bgez	a0,e8881c62 <TimeToFrequencyDomain+0x1e4>
        l_sum = (int32_t)0x7FFFFFFF;
    e8881c74:	855a                	mv	a0,s6
    e8881c76:	b7f5                	j	e8881c62 <TimeToFrequencyDomain+0x1e4>

00000000e8881c78 <WebRtcAecm_ProcessBlock>:
int WebRtcAecm_ProcessBlock(AecmCore_t * aecm,
                            const int16_t * farend,
                            const int16_t * nearendNoisy,
                            const int16_t * nearendClean,
                            int16_t * output)
{
    e8881c78:	81010113          	addi	sp,sp,-2032
    e8881c7c:	7e813023          	sd	s0,2016(sp)
    e8881c80:	7c913c23          	sd	s1,2008(sp)
    e8881c84:	7d313423          	sd	s3,1992(sp)
    e8881c88:	7d413023          	sd	s4,1984(sp)
    e8881c8c:	7b613823          	sd	s6,1968(sp)
    e8881c90:	7b713423          	sd	s7,1960(sp)
    e8881c94:	79a13823          	sd	s10,1936(sp)
    e8881c98:	7e113423          	sd	ra,2024(sp)
    e8881c9c:	7d213823          	sd	s2,2000(sp)
    e8881ca0:	7b513c23          	sd	s5,1976(sp)
    e8881ca4:	7b813023          	sd	s8,1952(sp)
    e8881ca8:	79913c23          	sd	s9,1944(sp)
    e8881cac:	79b13423          	sd	s11,1928(sp)
    e8881cb0:	b5010113          	addi	sp,sp,-1200
    e8881cb4:	f43a                	sd	a4,40(sp)
  int16_t fft_buf[PART_LEN4 + 2 + 16]; // +2 to make a loop safe.
  int32_t echoEst32_buf[PART_LEN1 + 8];
  int32_t dfw_buf[PART_LEN2 + 8];
  int32_t efw_buf[PART_LEN2 + 8];

  int16_t* fft = (int16_t*) (((uintptr_t) fft_buf + 31) & ~ 31);
    e8881cb6:	6785                	lui	a5,0x1
    e8881cb8:	0898                	addi	a4,sp,80
    e8881cba:	9d778793          	addi	a5,a5,-1577 # 9d7 <memcmp-0xe87ff629>
    e8881cbe:	00f70a33          	add	s4,a4,a5
  // Determine startup state. There are three states:
  // (0) the first CONV_LEN blocks
  // (1) another CONV_LEN blocks
  // (2) the rest

  if (aecm->startupState < 2)
    e8881cc2:	6711                	lui	a4,0x4
  complex16_t* efw = (complex16_t*) (((uintptr_t) efw_buf + 31) & ~ 31);
    e8881cc4:	6785                	lui	a5,0x1
  if (aecm->startupState < 2)
    e8881cc6:	972a                	add	a4,a4,a0
  complex16_t* efw = (complex16_t*) (((uintptr_t) efw_buf + 31) & ~ 31);
    e8881cc8:	80778793          	addi	a5,a5,-2041 # 807 <memcmp-0xe87ff7f9>
{
    e8881ccc:	8d36                	mv	s10,a3
  if (aecm->startupState < 2)
    e8881cce:	36e71683          	lh	a3,878(a4) # 436e <memcmp-0xe87fbc92>
  complex16_t* efw = (complex16_t*) (((uintptr_t) efw_buf + 31) & ~ 31);
    e8881cd2:	00f104b3          	add	s1,sp,a5
  int32_t* echoEst32 = (int32_t*) (((uintptr_t) echoEst32_buf + 31) & ~ 31);
    e8881cd6:	4bf10b93          	addi	s7,sp,1215
  complex16_t* dfw = (complex16_t*) (((uintptr_t) dfw_buf + 31) & ~ 31);
    e8881cda:	5e710b13          	addi	s6,sp,1511
  if (aecm->startupState < 2)
    e8881cde:	4785                	li	a5,1
{
    e8881ce0:	842a                	mv	s0,a0
    e8881ce2:	89b2                	mv	s3,a2
  int16_t* fft = (int16_t*) (((uintptr_t) fft_buf + 31) & ~ 31);
    e8881ce4:	fe0a7a13          	andi	s4,s4,-32
  int32_t* echoEst32 = (int32_t*) (((uintptr_t) echoEst32_buf + 31) & ~ 31);
    e8881ce8:	fe0bfb93          	andi	s7,s7,-32
  complex16_t* dfw = (complex16_t*) (((uintptr_t) dfw_buf + 31) & ~ 31);
    e8881cec:	fe0b7b13          	andi	s6,s6,-32
  complex16_t* efw = (complex16_t*) (((uintptr_t) efw_buf + 31) & ~ 31);
    e8881cf0:	9881                	andi	s1,s1,-32
  if (aecm->startupState < 2)
    e8881cf2:	02d7c163          	blt	a5,a3,e8881d14 <WebRtcAecm_ProcessBlock+0x9c>
  {
    aecm->startupState = (aecm->totCount >= CONV_LEN) +
    e8881cf6:	678d                	lui	a5,0x3
    e8881cf8:	97aa                	add	a5,a5,a0
    e8881cfa:	6b47a683          	lw	a3,1716(a5) # 36b4 <memcmp-0xe87fc94c>
                         (aecm->totCount >= CONV_LEN2);
    e8881cfe:	3ff00613          	li	a2,1023
    aecm->startupState = (aecm->totCount >= CONV_LEN) +
    e8881d02:	1ff00793          	li	a5,511
    e8881d06:	00d7b7b3          	sltu	a5,a5,a3
                         (aecm->totCount >= CONV_LEN2);
    e8881d0a:	00d636b3          	sltu	a3,a2,a3
    aecm->startupState = (aecm->totCount >= CONV_LEN) +
    e8881d0e:	9fb5                	addw	a5,a5,a3
    e8881d10:	36f71723          	sh	a5,878(a4)
  }
  // END: Determine startup state

  // Buffer near and far end signals
  memcpy(aecm->xBuf + PART_LEN, farend, sizeof(int16_t) * PART_LEN);
    e8881d14:	6911                	lui	s2,0x4
    e8881d16:	9922                	add	s2,s2,s0
    e8881d18:	e9893503          	ld	a0,-360(s2) # 3e98 <memcmp-0xe87fc168>
    e8881d1c:	08000613          	li	a2,128
    e8881d20:	08050513          	addi	a0,a0,128 # ffffffff80000080 <__DRAM0_INF_BASE+0xfffffffe80010080>
    e8881d24:	e7cfa0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  memcpy(aecm->dBufNoisy + PART_LEN, nearendNoisy, sizeof(int16_t) * PART_LEN);
    e8881d28:	ea893503          	ld	a0,-344(s2)
    e8881d2c:	08000613          	li	a2,128
    e8881d30:	85ce                	mv	a1,s3
    e8881d32:	08050513          	addi	a0,a0,128
    e8881d36:	e6afa0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  if (nearendClean != NULL)
    e8881d3a:	000d0b63          	beqz	s10,e8881d50 <WebRtcAecm_ProcessBlock+0xd8>
  {
    memcpy(aecm->dBufClean + PART_LEN,
    e8881d3e:	ea093503          	ld	a0,-352(s2)
    e8881d42:	08000613          	li	a2,128
    e8881d46:	85ea                	mv	a1,s10
    e8881d48:	08050513          	addi	a0,a0,128
    e8881d4c:	e54fa0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
           nearendClean,
           sizeof(int16_t) * PART_LEN);
  }

  // Transform far end signal from time domain to frequency domain.
  far_q = TimeToFrequencyDomain(aecm,
    e8881d50:	6a85                	lui	s5,0x1
    e8881d52:	0890                	addi	a2,sp,80
    e8881d54:	be0a8793          	addi	a5,s5,-1056 # be0 <memcmp-0xe87ff420>
    e8881d58:	79fd                	lui	s3,0xfffff
    e8881d5a:	97b2                	add	a5,a5,a2
                                aecm->xBuf,
    e8881d5c:	6c11                	lui	s8,0x4
    e8881d5e:	9c22                	add	s8,s8,s0
  far_q = TimeToFrequencyDomain(aecm,
    e8881d60:	42898713          	addi	a4,s3,1064 # fffffffffffff428 <__DRAM0_INF_BASE+0xffffffff0000f428>
    e8881d64:	973e                	add	a4,a4,a5
    e8881d66:	e98c3583          	ld	a1,-360(s8) # 3e98 <memcmp-0xe87fc168>
    e8881d6a:	be0a8793          	addi	a5,s5,-1056
    e8881d6e:	97b2                	add	a5,a5,a2
    e8881d70:	4b898693          	addi	a3,s3,1208
    e8881d74:	96be                	add	a3,a3,a5
    e8881d76:	865a                	mv	a2,s6
    e8881d78:	8522                	mv	a0,s0
    e8881d7a:	d05ff0ef          	jal	ra,e8881a7e <TimeToFrequencyDomain>
                                dfw,
                                xfa,
                                &xfaSum);

  // Transform noisy near end signal from time domain to frequency domain.
  zerosDBufNoisy = TimeToFrequencyDomain(aecm,
    e8881d7e:	54098913          	addi	s2,s3,1344
    e8881d82:	0890                	addi	a2,sp,80
    e8881d84:	be0a8693          	addi	a3,s5,-1056
    e8881d88:	96b2                	add	a3,a3,a2
    e8881d8a:	be0a8793          	addi	a5,s5,-1056
    e8881d8e:	ea8c3583          	ld	a1,-344(s8)
    e8881d92:	97b2                	add	a5,a5,a2
    e8881d94:	42c98713          	addi	a4,s3,1068
    e8881d98:	9936                	add	s2,s2,a3
  far_q = TimeToFrequencyDomain(aecm,
    e8881d9a:	d2aa                	sw	a0,100(sp)
  zerosDBufNoisy = TimeToFrequencyDomain(aecm,
    e8881d9c:	973e                	add	a4,a4,a5
    e8881d9e:	86ca                	mv	a3,s2
    e8881da0:	865a                	mv	a2,s6
    e8881da2:	8522                	mv	a0,s0
    e8881da4:	cdbff0ef          	jal	ra,e8881a7e <TimeToFrequencyDomain>
                                         aecm->dBufNoisy,
                                         dfw,
                                         dfaNoisy,
                                         &dfaNoisySum);
  aecm->dfaNoisyQDomainOld = aecm->dfaNoisyQDomain;
    e8881da8:	6a8d                	lui	s5,0x3
    e8881daa:	9aa2                	add	s5,s5,s0
    e8881dac:	6bca9783          	lh	a5,1724(s5) # 36bc <memcmp-0xe87fc944>
  zerosDBufNoisy = TimeToFrequencyDomain(aecm,
    e8881db0:	3c052c8b          	ext	s9,a0,15,0
  aecm->dfaNoisyQDomain = (int16_t)zerosDBufNoisy;
    e8881db4:	6b9a9e23          	sh	s9,1724(s5)
  aecm->dfaNoisyQDomainOld = aecm->dfaNoisyQDomain;
    e8881db8:	6afa9f23          	sh	a5,1726(s5)


  if (nearendClean == NULL)
    e8881dbc:	080d1263          	bnez	s10,e8881e40 <WebRtcAecm_ProcessBlock+0x1c8>
  {
    ptrDfaClean = dfaNoisy;
    aecm->dfaCleanQDomainOld = aecm->dfaNoisyQDomainOld;
    e8881dc0:	6afa9d23          	sh	a5,1722(s5)
    aecm->dfaCleanQDomain = aecm->dfaNoisyQDomain;
    dfaCleanSum = dfaNoisySum;
    e8881dc4:	47f6                	lw	a5,92(sp)
    aecm->dfaCleanQDomain = aecm->dfaNoisyQDomain;
    e8881dc6:	6b9a9c23          	sh	s9,1720(s5)
    dfaCleanSum = dfaNoisySum;
    e8881dca:	d0be                	sw	a5,96(sp)
    aecm->dfaCleanQDomain = (int16_t)zerosDBufClean;
  }

  // Get the delay
  // Save far-end history and estimate delay
  WebRtcAecm_UpdateFarHistory(aecm, xfa, far_q);
    e8881dcc:	6785                	lui	a5,0x1
    e8881dce:	0898                	addi	a4,sp,80
    e8881dd0:	79fd                	lui	s3,0xfffff
    e8881dd2:	be078793          	addi	a5,a5,-1056 # be0 <memcmp-0xe87ff420>
    e8881dd6:	97ba                	add	a5,a5,a4
    e8881dd8:	5616                	lw	a2,100(sp)
    e8881dda:	4b898a93          	addi	s5,s3,1208 # fffffffffffff4b8 <__DRAM0_INF_BASE+0xffffffff0000f4b8>
    e8881dde:	9abe                	add	s5,s5,a5
    e8881de0:	85d6                	mv	a1,s5
    e8881de2:	8522                	mv	a0,s0
    e8881de4:	cbffe0ef          	jal	ra,e8880aa2 <WebRtcAecm_UpdateFarHistory>
  if (WebRtc_AddFarSpectrumFix(aecm->delay_estimator_farend,
    e8881de8:	5696                	lw	a3,100(sp)
    e8881dea:	24043503          	ld	a0,576(s0)
    e8881dee:	85d6                	mv	a1,s5
    e8881df0:	04100613          	li	a2,65
    e8881df4:	2fb000ef          	jal	ra,e88828ee <WebRtc_AddFarSpectrumFix>
    e8881df8:	5afd                	li	s5,-1
    e8881dfa:	07551f63          	bne	a0,s5,e8881e78 <WebRtcAecm_ProcessBlock+0x200>
                               xfa,
                               PART_LEN1,
                               far_q) == -1) {
    return -1;
    e8881dfe:	547d                	li	s0,-1
  }

  InverseFFTAndWindow(aecm, fft, efw, output, nearendClean);

  return 0;
}
    e8881e00:	4b010113          	addi	sp,sp,1200
    e8881e04:	7e813083          	ld	ra,2024(sp)
    e8881e08:	8522                	mv	a0,s0
    e8881e0a:	7d813483          	ld	s1,2008(sp)
    e8881e0e:	7e013403          	ld	s0,2016(sp)
    e8881e12:	7d013903          	ld	s2,2000(sp)
    e8881e16:	7c813983          	ld	s3,1992(sp)
    e8881e1a:	7c013a03          	ld	s4,1984(sp)
    e8881e1e:	7b813a83          	ld	s5,1976(sp)
    e8881e22:	7b013b03          	ld	s6,1968(sp)
    e8881e26:	7a813b83          	ld	s7,1960(sp)
    e8881e2a:	7a013c03          	ld	s8,1952(sp)
    e8881e2e:	79813c83          	ld	s9,1944(sp)
    e8881e32:	79013d03          	ld	s10,1936(sp)
    e8881e36:	78813d83          	ld	s11,1928(sp)
    e8881e3a:	7f010113          	addi	sp,sp,2032
    e8881e3e:	8082                	ret
    zerosDBufClean = TimeToFrequencyDomain(aecm,
    e8881e40:	6685                	lui	a3,0x1
    e8881e42:	0890                	addi	a2,sp,80
    e8881e44:	be068793          	addi	a5,a3,-1056 # be0 <memcmp-0xe87ff420>
    e8881e48:	97b2                	add	a5,a5,a2
    e8881e4a:	5c898913          	addi	s2,s3,1480
    e8881e4e:	993e                	add	s2,s2,a5
    e8881e50:	ea0c3583          	ld	a1,-352(s8)
    e8881e54:	be068793          	addi	a5,a3,-1056
    e8881e58:	97b2                	add	a5,a5,a2
    e8881e5a:	43098713          	addi	a4,s3,1072
    e8881e5e:	973e                	add	a4,a4,a5
    e8881e60:	86ca                	mv	a3,s2
    e8881e62:	865a                	mv	a2,s6
    e8881e64:	8522                	mv	a0,s0
    e8881e66:	c19ff0ef          	jal	ra,e8881a7e <TimeToFrequencyDomain>
    aecm->dfaCleanQDomainOld = aecm->dfaCleanQDomain;
    e8881e6a:	6b8ad783          	lhu	a5,1720(s5)
    zerosDBufClean = TimeToFrequencyDomain(aecm,
    e8881e6e:	6aaa9c23          	sh	a0,1720(s5)
    aecm->dfaCleanQDomainOld = aecm->dfaCleanQDomain;
    e8881e72:	6afa9d23          	sh	a5,1722(s5)
    aecm->dfaCleanQDomain = (int16_t)zerosDBufClean;
    e8881e76:	bf99                	j	e8881dcc <WebRtcAecm_ProcessBlock+0x154>
  delay = WebRtc_DelayEstimatorProcessFix(aecm->delay_estimator,
    e8881e78:	6785                	lui	a5,0x1
    e8881e7a:	0898                	addi	a4,sp,80
    e8881e7c:	be078793          	addi	a5,a5,-1056 # be0 <memcmp-0xe87ff420>
    e8881e80:	24843503          	ld	a0,584(s0)
    e8881e84:	97ba                	add	a5,a5,a4
    e8881e86:	54098593          	addi	a1,s3,1344
    e8881e8a:	04100613          	li	a2,65
    e8881e8e:	86e6                	mv	a3,s9
    e8881e90:	95be                	add	a1,a1,a5
    e8881e92:	349000ef          	jal	ra,e88829da <WebRtc_DelayEstimatorProcessFix>
    e8881e96:	862a                	mv	a2,a0
  if (delay == -1)
    e8881e98:	f75503e3          	beq	a0,s5,e8881dfe <WebRtcAecm_ProcessBlock+0x186>
  else if (delay == -2)
    e8881e9c:	57f9                	li	a5,-2
    e8881e9e:	00f51363          	bne	a0,a5,e8881ea4 <WebRtcAecm_ProcessBlock+0x22c>
    delay = 0;
    e8881ea2:	4601                	li	a2,0
  if (aecm->fixedDelay >= 0)
    e8881ea4:	678d                	lui	a5,0x3
    e8881ea6:	97a2                	add	a5,a5,s0
    e8881ea8:	6b279783          	lh	a5,1714(a5) # 36b2 <memcmp-0xe87fc94e>
    e8881eac:	0007c363          	bltz	a5,e8881eb2 <WebRtcAecm_ProcessBlock+0x23a>
    delay = aecm->fixedDelay;
    e8881eb0:	863e                	mv	a2,a5
  far_spectrum_ptr = WebRtcAecm_AlignedFarend(aecm, &far_q, delay);
    e8881eb2:	6c85                	lui	s9,0x1
    e8881eb4:	0898                	addi	a4,sp,80
    e8881eb6:	79fd                	lui	s3,0xfffff
    e8881eb8:	be0c8793          	addi	a5,s9,-1056 # be0 <memcmp-0xe87ff420>
    e8881ebc:	97ba                	add	a5,a5,a4
    e8881ebe:	43498593          	addi	a1,s3,1076 # fffffffffffff434 <__DRAM0_INF_BASE+0xffffffff0000f434>
    e8881ec2:	95be                	add	a1,a1,a5
    e8881ec4:	8522                	mv	a0,s0
    e8881ec6:	c1ffe0ef          	jal	ra,e8880ae4 <WebRtcAecm_AlignedFarend>
    e8881eca:	8aaa                	mv	s5,a0
  zerosXBuf = (int16_t) far_q;
    e8881ecc:	06411c03          	lh	s8,100(sp)
  if (far_spectrum_ptr == NULL)
    e8881ed0:	d51d                	beqz	a0,e8881dfe <WebRtcAecm_ProcessBlock+0x186>
  WebRtcAecm_CalcEnergies(aecm,
    e8881ed2:	46f6                	lw	a3,92(sp)
    e8881ed4:	85aa                	mv	a1,a0
    e8881ed6:	875e                	mv	a4,s7
    e8881ed8:	8662                	mv	a2,s8
    e8881eda:	8522                	mv	a0,s0
    e8881edc:	8daff0ef          	jal	ra,e8880fb6 <WebRtcAecm_CalcEnergies>
  supGain = WebRtcAecm_CalcSuppressionGain(aecm);
    e8881ee0:	4d81                	li	s11,0
  mu = WebRtcAecm_CalcStepSize(aecm);
    e8881ee2:	8522                	mv	a0,s0
    e8881ee4:	bcaff0ef          	jal	ra,e88812ae <WebRtcAecm_CalcStepSize>
  WebRtcAecm_UpdateChannel(aecm,
    e8881ee8:	872a                	mv	a4,a0
  aecm->totCount++;
    e8881eea:	680d                	lui	a6,0x3
    e8881eec:	9822                	add	a6,a6,s0
    e8881eee:	6b482783          	lw	a5,1716(a6) # 36b4 <memcmp-0xe87fc94c>
  WebRtcAecm_UpdateChannel(aecm,
    e8881ef2:	be0c8613          	addi	a2,s9,-1056
    e8881ef6:	088c                	addi	a1,sp,80
    e8881ef8:	962e                	add	a2,a2,a1
  aecm->totCount++;
    e8881efa:	2785                	addiw	a5,a5,1
  WebRtcAecm_UpdateChannel(aecm,
    e8881efc:	54098693          	addi	a3,s3,1344
  aecm->totCount++;
    e8881f00:	6af82a23          	sw	a5,1716(a6)
  WebRtcAecm_UpdateChannel(aecm,
    e8881f04:	96b2                	add	a3,a3,a2
    e8881f06:	87de                	mv	a5,s7
    e8881f08:	85d6                	mv	a1,s5
    e8881f0a:	8662                	mv	a2,s8
    e8881f0c:	8522                	mv	a0,s0
  aecm->totCount++;
    e8881f0e:	e842                	sd	a6,16(sp)
  WebRtcAecm_UpdateChannel(aecm,
    e8881f10:	c06ff0ef          	jal	ra,e8881316 <WebRtcAecm_UpdateChannel>
  supGain = WebRtcAecm_CalcSuppressionGain(aecm);
    e8881f14:	6a91                	lui	s5,0x4
    e8881f16:	8522                	mv	a0,s0
    e8881f18:	ffaff0ef          	jal	ra,e8881712 <WebRtcAecm_CalcSuppressionGain>
    e8881f1c:	fbca8a93          	addi	s5,s5,-68 # 3fbc <memcmp-0xe87fc044>
    e8881f20:	6711                	lui	a4,0x4
    e8881f22:	eb870793          	addi	a5,a4,-328 # 3eb8 <memcmp-0xe87fc148>
    e8881f26:	00f40733          	add	a4,s0,a5
      resolutionDiff += (aecm->dfaCleanQDomain - zerosXBuf);
    e8881f2a:	47ad                	li	a5,11
    e8881f2c:	ec3a                	sd	a4,24(sp)
    e8881f2e:	4187873b          	subw	a4,a5,s8
    e8881f32:	da3a                	sw	a4,52(sp)
        echoEst32Gained = WEBRTC_SPL_UMUL_32_16((uint32_t)WEBRTC_SPL_RSHIFT_W32(
    e8881f34:	0105171b          	slliw	a4,a0,0x10
    e8881f38:	0107571b          	srliw	a4,a4,0x10
    e8881f3c:	6842                	ld	a6,16(sp)
        hnl[i] = ONE_Q14 - (int16_t)tmp32no1;
    e8881f3e:	6785                	lui	a5,0x1
        echoEst32Gained = WEBRTC_SPL_UMUL_32_16((uint32_t)WEBRTC_SPL_RSHIFT_W32(
    e8881f40:	d83a                	sw	a4,48(sp)
        hnl[i] = ONE_Q14 - (int16_t)tmp32no1;
    e8881f42:	be078793          	addi	a5,a5,-1056 # be0 <memcmp-0xe87ff420>
    e8881f46:	0898                	addi	a4,sp,80
    e8881f48:	65098993          	addi	s3,s3,1616
    e8881f4c:	97ba                	add	a5,a5,a4
  supGain = WebRtcAecm_CalcSuppressionGain(aecm);
    e8881f4e:	8caa                	mv	s9,a0
  for (i = 0; i < PART_LEN1; i++)
    e8881f50:	9aa2                	add	s5,s5,s0
  int16_t numPosCoef = 0;
    e8881f52:	e402                	sd	zero,8(sp)
    e8881f54:	f042                	sd	a6,32(sp)
        hnl[i] = ONE_Q14 - (int16_t)tmp32no1;
    e8881f56:	99be                	add	s3,s3,a5
    tmp32no1 = echoEst32[i] - aecm->echoFilt[i];
    e8881f58:	67e2                	ld	a5,24(sp)
    e8881f5a:	43bbc68b          	lrw	a3,s7,s11,1
    aecm->echoFilt[i] += WEBRTC_SPL_RSHIFT_W32(WEBRTC_SPL_MUL_32_16(tmp32no1,
    e8881f5e:	03200713          	li	a4,50
    tmp32no1 = echoEst32[i] - aecm->echoFilt[i];
    e8881f62:	43b7c78b          	lrw	a5,a5,s11,1
    e8881f66:	9e9d                	subw	a3,a3,a5
    aecm->echoFilt[i] += WEBRTC_SPL_RSHIFT_W32(WEBRTC_SPL_MUL_32_16(tmp32no1,
    e8881f68:	02e686bb          	mulw	a3,a3,a4
    e8881f6c:	4086d69b          	sraiw	a3,a3,0x8
    e8881f70:	9ebd                	addw	a3,a3,a5
    e8881f72:	67e2                	ld	a5,24(sp)
    e8881f74:	8636                	mv	a2,a3
    e8881f76:	43b7d68b          	srw	a3,a5,s11,1
    return 0;
    e8881f7a:	4781                	li	a5,0
  if (a == 0) {
    e8881f7c:	c639                	beqz	a2,e8881fca <WebRtcAecm_ProcessBlock+0x352>
  else if (a < 0) {
    e8881f7e:	00065563          	bgez	a2,e8881f88 <WebRtcAecm_ProcessBlock+0x310>
    a = ~a;
    e8881f82:	fff6c613          	not	a2,a3
    e8881f86:	2601                	sext.w	a2,a2
  if (!(0xFFFF8000 & a)) {
    e8881f88:	77e1                	lui	a5,0xffff8
    e8881f8a:	8ff1                	and	a5,a5,a2
    zeros = 0;
    e8881f8c:	0017b793          	seqz	a5,a5
    e8881f90:	0792                	slli	a5,a5,0x4
  if (!(0xFF800000 & (a << zeros))) zeros += 8;
    e8881f92:	00f615bb          	sllw	a1,a2,a5
    e8881f96:	ff800537          	lui	a0,0xff800
    e8881f9a:	8de9                	and	a1,a1,a0
    e8881f9c:	e191                	bnez	a1,e8881fa0 <WebRtcAecm_ProcessBlock+0x328>
    e8881f9e:	27a1                	addiw	a5,a5,8
  if (!(0xF8000000 & (a << zeros))) zeros += 4;
    e8881fa0:	00f615bb          	sllw	a1,a2,a5
    e8881fa4:	f8000537          	lui	a0,0xf8000
    e8881fa8:	8de9                	and	a1,a1,a0
    e8881faa:	e191                	bnez	a1,e8881fae <WebRtcAecm_ProcessBlock+0x336>
    e8881fac:	2791                	addiw	a5,a5,4
  if (!(0xE0000000 & (a << zeros))) zeros += 2;
    e8881fae:	00f615bb          	sllw	a1,a2,a5
    e8881fb2:	e0000537          	lui	a0,0xe0000
    e8881fb6:	8de9                	and	a1,a1,a0
    e8881fb8:	e191                	bnez	a1,e8881fbc <WebRtcAecm_ProcessBlock+0x344>
    e8881fba:	2789                	addiw	a5,a5,2
  if (!(0xC0000000 & (a << zeros))) zeros += 1;
    e8881fbc:	00f6163b          	sllw	a2,a2,a5
    e8881fc0:	c00005b7          	lui	a1,0xc0000
    e8881fc4:	8e6d                	and	a2,a2,a1
    e8881fc6:	e211                	bnez	a2,e8881fca <WebRtcAecm_ProcessBlock+0x352>
    e8881fc8:	2785                	addiw	a5,a5,1
    zeros32 = WebRtcSpl_NormW32(aecm->echoFilt[i]) + 1;
    e8881fca:	2785                	addiw	a5,a5,1
    e8881fcc:	3c07a78b          	ext	a5,a5,15,0
    return 0;
    e8881fd0:	4501                	li	a0,0
  if (a == 0) {
    e8881fd2:	000c8963          	beqz	s9,e8881fe4 <WebRtcAecm_ProcessBlock+0x36c>
    e8881fd6:	8566                	mv	a0,s9
    e8881fd8:	fc36                	sd	a3,56(sp)
    e8881fda:	e83e                	sd	a5,16(sp)
    e8881fdc:	a63ff0ef          	jal	ra,e8881a3e <WebRtcSpl_NormW16.part.0>
    e8881fe0:	76e2                	ld	a3,56(sp)
    e8881fe2:	67c2                	ld	a5,16(sp)
    zeros16 = WebRtcSpl_NormW16(supGain) + 1;
    e8881fe4:	0015061b          	addiw	a2,a0,1
    e8881fe8:	7702                	ld	a4,32(sp)
    e8881fea:	3c06260b          	ext	a2,a2,15,0
    if (zeros32 + zeros16 > 16)
    e8881fee:	00c7853b          	addw	a0,a5,a2
    e8881ff2:	45c1                	li	a1,16
    e8881ff4:	6b871803          	lh	a6,1720(a4)
    e8881ff8:	08a5d063          	bge	a1,a0,e8882078 <WebRtcAecm_ProcessBlock+0x400>
      echoEst32Gained = WEBRTC_SPL_UMUL_32_16((uint32_t)aecm->echoFilt[i],
    e8881ffc:	57c2                	lw	a5,48(sp)
      resolutionDiff += (aecm->dfaCleanQDomain - zerosXBuf);
    e8881ffe:	4188053b          	subw	a0,a6,s8
    e8882002:	3569                	addiw	a0,a0,-6
      echoEst32Gained = WEBRTC_SPL_UMUL_32_16((uint32_t)aecm->echoFilt[i],
    e8882004:	02d786bb          	mulw	a3,a5,a3
      resolutionDiff += (aecm->dfaCleanQDomain - zerosXBuf);
    e8882008:	3c05278b          	ext	a5,a0,15,0
    e888200c:	e83e                	sd	a5,16(sp)
    zeros16 = WebRtcSpl_NormW16(aecm->nearFilt[i]);
    e888200e:	000a9783          	lh	a5,0(s5)
    return 0;
    e8882012:	4501                	li	a0,0
  if (a == 0) {
    e8882014:	cb91                	beqz	a5,e8882028 <WebRtcAecm_ProcessBlock+0x3b0>
    e8882016:	853e                	mv	a0,a5
    e8882018:	e4c2                	sd	a6,72(sp)
    e888201a:	e0b6                	sd	a3,64(sp)
    e888201c:	fc3e                	sd	a5,56(sp)
    e888201e:	a21ff0ef          	jal	ra,e8881a3e <WebRtcSpl_NormW16.part.0>
    e8882022:	6826                	ld	a6,72(sp)
    e8882024:	6686                	ld	a3,64(sp)
    e8882026:	77e2                	ld	a5,56(sp)
    if ((zeros16 < (aecm->dfaCleanQDomain - aecm->dfaCleanQDomainOld))
    e8882028:	7702                	ld	a4,32(sp)
    zeros16 = WebRtcSpl_NormW16(aecm->nearFilt[i]);
    e888202a:	3c05250b          	ext	a0,a0,15,0
    if ((zeros16 < (aecm->dfaCleanQDomain - aecm->dfaCleanQDomainOld))
    e888202e:	00080e9b          	sext.w	t4,a6
    e8882032:	6ba71583          	lh	a1,1722(a4)
    e8882036:	0005061b          	sext.w	a2,a0
        & (aecm->nearFilt[i]))
    e888203a:	2781                	sext.w	a5,a5
    if ((zeros16 < (aecm->dfaCleanQDomain - aecm->dfaCleanQDomainOld))
    e888203c:	0005889b          	sext.w	a7,a1
    e8882040:	411e833b          	subw	t1,t4,a7
    e8882044:	00662e33          	slt	t3,a2,t1
    e8882048:	01c7fe33          	and	t3,a5,t3
    e888204c:	060e0863          	beqz	t3,e88820bc <WebRtcAecm_ProcessBlock+0x444>
      tmp16no1 = WEBRTC_SPL_SHIFT_W16(aecm->nearFilt[i], zeros16);
    e8882050:	06064163          	bltz	a2,e88820b2 <WebRtcAecm_ProcessBlock+0x43a>
    e8882054:	00c797bb          	sllw	a5,a5,a2
      qDomainDiff = zeros16 - aecm->dfaCleanQDomain + aecm->dfaCleanQDomainOld;
    e8882058:	410585bb          	subw	a1,a1,a6
    e888205c:	9da9                	addw	a1,a1,a0
    e888205e:	3c05a58b          	ext	a1,a1,15,0
      tmp16no1 = WEBRTC_SPL_SHIFT_W16(aecm->nearFilt[i], zeros16);
    e8882062:	3c07a78b          	ext	a5,a5,15,0
    tmp16no2 = WEBRTC_SPL_SHIFT_W16(ptrDfaClean[i], qDomainDiff);
    e8882066:	a1b9460b          	lrhu	a2,s2,s11,0
    e888206a:	0605d063          	bgez	a1,e88820ca <WebRtcAecm_ProcessBlock+0x452>
    e888206e:	40b0053b          	negw	a0,a1
    e8882072:	40a6563b          	sraw	a2,a2,a0
    e8882076:	a8b1                	j	e88820d2 <WebRtcAecm_ProcessBlock+0x45a>
      resolutionDiff += (aecm->dfaCleanQDomain - zerosXBuf);
    e8882078:	5752                	lw	a4,52(sp)
      tmp16no1 = 17 - zeros32 - zeros16;
    e888207a:	3c05260b          	ext	a2,a0,15,0
    e888207e:	45c5                	li	a1,17
      resolutionDiff += (aecm->dfaCleanQDomain - zerosXBuf);
    e8882080:	0107053b          	addw	a0,a4,a6
      tmp16no1 = 17 - zeros32 - zeros16;
    e8882084:	9d91                	subw	a1,a1,a2
      resolutionDiff += (aecm->dfaCleanQDomain - zerosXBuf);
    e8882086:	40c5063b          	subw	a2,a0,a2
    e888208a:	3c06270b          	ext	a4,a2,15,0
    e888208e:	e83a                	sd	a4,16(sp)
      if (zeros32 > tmp16no1)
    e8882090:	3c05a60b          	ext	a2,a1,15,0
    e8882094:	00f65963          	bge	a2,a5,e88820a6 <WebRtcAecm_ProcessBlock+0x42e>
        echoEst32Gained = WEBRTC_SPL_UMUL_32_16((uint32_t)aecm->echoFilt[i],
    e8882098:	40ccd63b          	sraw	a2,s9,a2
    e888209c:	3c06360b          	extu	a2,a2,15,0
    e88820a0:	02c686bb          	mulw	a3,a3,a2
    e88820a4:	b7ad                	j	e888200e <WebRtcAecm_ProcessBlock+0x396>
        echoEst32Gained = WEBRTC_SPL_UMUL_32_16((uint32_t)WEBRTC_SPL_RSHIFT_W32(
    e88820a6:	57c2                	lw	a5,48(sp)
    e88820a8:	40c6d6bb          	sraw	a3,a3,a2
    e88820ac:	02f686bb          	mulw	a3,a3,a5
    e88820b0:	bfb9                	j	e888200e <WebRtcAecm_ProcessBlock+0x396>
      tmp16no1 = WEBRTC_SPL_SHIFT_W16(aecm->nearFilt[i], zeros16);
    e88820b2:	40c0063b          	negw	a2,a2
    e88820b6:	40c7d7bb          	sraw	a5,a5,a2
    e88820ba:	bf79                	j	e8882058 <WebRtcAecm_ProcessBlock+0x3e0>
      tmp16no1 = WEBRTC_SPL_SHIFT_W16(aecm->nearFilt[i],
    e88820bc:	06034963          	bltz	t1,e888212e <WebRtcAecm_ProcessBlock+0x4b6>
    e88820c0:	006797bb          	sllw	a5,a5,t1
    e88820c4:	3c07a78b          	ext	a5,a5,15,0
      qDomainDiff = 0;
    e88820c8:	4581                	li	a1,0
    tmp16no2 = WEBRTC_SPL_SHIFT_W16(ptrDfaClean[i], qDomainDiff);
    e88820ca:	a1b9460b          	lrhu	a2,s2,s11,0
    e88820ce:	00b6163b          	sllw	a2,a2,a1
    e88820d2:	3c06260b          	ext	a2,a2,15,0
    tmp16no2 = (int16_t)WEBRTC_SPL_RSHIFT_W32(tmp32no1, 4);
    e88820d6:	8e1d                	sub	a2,a2,a5
    e88820d8:	8611                	srai	a2,a2,0x4
    tmp16no2 += tmp16no1;
    e88820da:	9fb1                	addw	a5,a5,a2
    e88820dc:	3c07a78b          	ext	a5,a5,15,0
    return 0;
    e88820e0:	4501                	li	a0,0
  if (a == 0) {
    e88820e2:	cb91                	beqz	a5,e88820f6 <WebRtcAecm_ProcessBlock+0x47e>
    e88820e4:	853e                	mv	a0,a5
    e88820e6:	e4ae                	sd	a1,72(sp)
    e88820e8:	e0b6                	sd	a3,64(sp)
    e88820ea:	fc3e                	sd	a5,56(sp)
    e88820ec:	953ff0ef          	jal	ra,e8881a3e <WebRtcSpl_NormW16.part.0>
    e88820f0:	65a6                	ld	a1,72(sp)
    e88820f2:	6686                	ld	a3,64(sp)
    e88820f4:	77e2                	ld	a5,56(sp)
    if ((tmp16no2) & (-qDomainDiff > zeros16))
    e88820f6:	2581                	sext.w	a1,a1
    e88820f8:	40b0083b          	negw	a6,a1
    e88820fc:	0105161b          	slliw	a2,a0,0x10
    e8882100:	2801                	sext.w	a6,a6
    e8882102:	4106561b          	sraiw	a2,a2,0x10
    e8882106:	2781                	sext.w	a5,a5
    e8882108:	01062633          	slt	a2,a2,a6
    e888210c:	8e7d                	and	a2,a2,a5
    e888210e:	c60d                	beqz	a2,e8882138 <WebRtcAecm_ProcessBlock+0x4c0>
      aecm->nearFilt[i] = WEBRTC_SPL_WORD16_MAX;
    e8882110:	77e1                	lui	a5,0xffff8
    e8882112:	fff7c793          	not	a5,a5
      aecm->nearFilt[i] = WEBRTC_SPL_SHIFT_W16(tmp16no2, -qDomainDiff);
    e8882116:	00fa9023          	sh	a5,0(s5)
    if (echoEst32Gained == 0)
    e888211a:	ea8d                	bnez	a3,e888214c <WebRtcAecm_ProcessBlock+0x4d4>
        hnl[i] = ONE_Q14;
    e888211c:	6791                	lui	a5,0x4
    e888211e:	213dd78b          	srh	a5,s11,s3,0
      numPosCoef++;
    e8882122:	67a2                	ld	a5,8(sp)
    e8882124:	2785                	addiw	a5,a5,1
    e8882126:	3c07a78b          	ext	a5,a5,15,0
    e888212a:	e43e                	sd	a5,8(sp)
    e888212c:	a02d                	j	e8882156 <WebRtcAecm_ProcessBlock+0x4de>
      tmp16no1 = WEBRTC_SPL_SHIFT_W16(aecm->nearFilt[i],
    e888212e:	41d888bb          	subw	a7,a7,t4
    e8882132:	4117d7bb          	sraw	a5,a5,a7
    e8882136:	b779                	j	e88820c4 <WebRtcAecm_ProcessBlock+0x44c>
      aecm->nearFilt[i] = WEBRTC_SPL_SHIFT_W16(tmp16no2, -qDomainDiff);
    e8882138:	00084763          	bltz	a6,e8882146 <WebRtcAecm_ProcessBlock+0x4ce>
    e888213c:	010797bb          	sllw	a5,a5,a6
    e8882140:	3c07a78b          	ext	a5,a5,15,0
    e8882144:	bfc9                	j	e8882116 <WebRtcAecm_ProcessBlock+0x49e>
    e8882146:	40b7d7bb          	sraw	a5,a5,a1
    e888214a:	bfdd                	j	e8882140 <WebRtcAecm_ProcessBlock+0x4c8>
    } else if (aecm->nearFilt[i] == 0)
    e888214c:	000a9583          	lh	a1,0(s5)
    e8882150:	edad                	bnez	a1,e88821ca <WebRtcAecm_ProcessBlock+0x552>
        hnl[i] = 0;
    e8882152:	213dd00b          	srh	zero,s11,s3,0
  for (i = 0; i < PART_LEN1; i++)
    e8882156:	0d89                	addi	s11,s11,2
    e8882158:	08200793          	li	a5,130
    e888215c:	0a89                	addi	s5,s5,2
    e888215e:	defd9de3          	bne	s11,a5,e8881f58 <WebRtcAecm_ProcessBlock+0x2e0>
  if (aecm->mult == 2)
    e8882162:	23841703          	lh	a4,568(s0)
    e8882166:	4789                	li	a5,2
    e8882168:	0af70163          	beq	a4,a5,e888220a <WebRtcAecm_ProcessBlock+0x592>
  if (aecm->nlpFlag)
    e888216c:	678d                	lui	a5,0x3
    e888216e:	97a2                	add	a5,a5,s0
    e8882170:	6b079783          	lh	a5,1712(a5) # 36b0 <memcmp-0xe87fc950>
    e8882174:	10079f63          	bnez	a5,e8882292 <WebRtcAecm_ProcessBlock+0x61a>
      efw[i].real = (int16_t)(WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(dfw[i].real,
    e8882178:	6685                	lui	a3,0x1
    e888217a:	777d                	lui	a4,0xfffff
    e888217c:	be068693          	addi	a3,a3,-1056 # be0 <memcmp-0xe87ff420>
    e8882180:	0890                	addi	a2,sp,80
    e8882182:	65070713          	addi	a4,a4,1616 # fffffffffffff650 <__DRAM0_INF_BASE+0xffffffff0000f650>
    e8882186:	96b2                	add	a3,a3,a2
    e8882188:	9736                	add	a4,a4,a3
    e888218a:	6589                	lui	a1,0x2
    for (i = 0; i < PART_LEN1; i++)
    e888218c:	04100813          	li	a6,65
      efw[i].real = (int16_t)(WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(dfw[i].real,
    e8882190:	a4fb460b          	lrhu	a2,s6,a5,2
    e8882194:	22f7450b          	lrh	a0,a4,a5,1
    e8882198:	832e                	mv	t1,a1
    e888219a:	00279693          	slli	a3,a5,0x2
    e888219e:	28a6130b          	mulah	t1,a2,a0
    e88821a2:	00db08b3          	add	a7,s6,a3
    e88821a6:	96a6                	add	a3,a3,s1
    e88821a8:	40e3561b          	sraiw	a2,t1,0xe
    e88821ac:	24f4d60b          	srh	a2,s1,a5,2
      efw[i].imag = (int16_t)(WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(dfw[i].imag,
    e88821b0:	0028d603          	lhu	a2,2(a7) # 4002 <memcmp-0xe87fbffe>
    e88821b4:	88ae                	mv	a7,a1
    e88821b6:	0785                	addi	a5,a5,1
    e88821b8:	28c5188b          	mulah	a7,a0,a2
    e88821bc:	40e8d61b          	sraiw	a2,a7,0xe
    e88821c0:	00c69123          	sh	a2,2(a3)
    for (i = 0; i < PART_LEN1; i++)
    e88821c4:	fd0796e3          	bne	a5,a6,e8882190 <WebRtcAecm_ProcessBlock+0x518>
    e88821c8:	aab9                	j	e8882326 <WebRtcAecm_ProcessBlock+0x6ae>
      echoEst32Gained += (uint32_t)(aecm->nearFilt[i] >> 1);
    e88821ca:	8015b50b          	extu	a0,a1,32,1
      tmpU32 = WebRtcSpl_DivU32U16(echoEst32Gained,
    e88821ce:	9d35                	addw	a0,a0,a3
    e88821d0:	3c05b58b          	extu	a1,a1,15,0
    e88821d4:	adcfe0ef          	jal	ra,e88804b0 <WebRtcSpl_DivU32U16>
    e88821d8:	2501                	sext.w	a0,a0
      tmp32no1 = (int32_t)WEBRTC_SPL_SHIFT_W32(tmpU32, resolutionDiff);
    e88821da:	47c2                	lw	a5,16(sp)
    e88821dc:	0207c263          	bltz	a5,e8882200 <WebRtcAecm_ProcessBlock+0x588>
    e88821e0:	00f517bb          	sllw	a5,a0,a5
      if (tmp32no1 > ONE_Q14)
    e88821e4:	6711                	lui	a4,0x4
    e88821e6:	f6f746e3          	blt	a4,a5,e8882152 <WebRtcAecm_ProcessBlock+0x4da>
      } else if (tmp32no1 < 0)
    e88821ea:	f207c9e3          	bltz	a5,e888211c <WebRtcAecm_ProcessBlock+0x4a4>
        hnl[i] = ONE_Q14 - (int16_t)tmp32no1;
    e88821ee:	6511                	lui	a0,0x4
    e88821f0:	40f507bb          	subw	a5,a0,a5
    e88821f4:	3c07a78b          	ext	a5,a5,15,0
    e88821f8:	213dd78b          	srh	a5,s11,s3,0
    if (hnl[i])
    e88821fc:	dfa9                	beqz	a5,e8882156 <WebRtcAecm_ProcessBlock+0x4de>
    e88821fe:	b715                	j	e8882122 <WebRtcAecm_ProcessBlock+0x4aa>
      tmp32no1 = (int32_t)WEBRTC_SPL_SHIFT_W32(tmpU32, resolutionDiff);
    e8882200:	40f007bb          	negw	a5,a5
    e8882204:	00f557bb          	srlw	a5,a0,a5
    e8882208:	bff1                	j	e88821e4 <WebRtcAecm_ProcessBlock+0x56c>
    e888220a:	6705                	lui	a4,0x1
    e888220c:	0894                	addi	a3,sp,80
    e888220e:	77fd                	lui	a5,0xfffff
    e8882210:	be070713          	addi	a4,a4,-1056 # be0 <memcmp-0xe87ff420>
    e8882214:	9736                	add	a4,a4,a3
    e8882216:	65078793          	addi	a5,a5,1616 # fffffffffffff650 <__DRAM0_INF_BASE+0xffffffff0000f650>
    e888221a:	97ba                	add	a5,a5,a4
    e888221c:	08278693          	addi	a3,a5,130
      hnl[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(hnl[i], hnl[i], 14);
    e8882220:	00079703          	lh	a4,0(a5)
    e8882224:	02e7073b          	mulw	a4,a4,a4
    e8882228:	40e7571b          	sraiw	a4,a4,0xe
    e888222c:	3827d70b          	shia	a4,(a5),2,0
    for (i = 0; i < PART_LEN1; i++)
    e8882230:	fef698e3          	bne	a3,a5,e8882220 <WebRtcAecm_ProcessBlock+0x5a8>
      avgHnl32 += (int32_t)hnl[i];
    e8882234:	6605                	lui	a2,0x1
    e8882236:	be060613          	addi	a2,a2,-1056 # be0 <memcmp-0xe87ff420>
    e888223a:	088c                	addi	a1,sp,80
    e888223c:	962e                	add	a2,a2,a1
    e888223e:	777d                	lui	a4,0xfffff
    e8882240:	65070713          	addi	a4,a4,1616 # fffffffffffff650 <__DRAM0_INF_BASE+0xffffffff0000f650>
    e8882244:	9732                	add	a4,a4,a2
    e8882246:	4691                	li	a3,4
  int32_t avgHnl32 = 0;
    e8882248:	4781                	li	a5,0
    for (i = kMinPrefBand; i <= kMaxPrefBand; i++)
    e888224a:	4665                	li	a2,25
      avgHnl32 += (int32_t)hnl[i];
    e888224c:	22d7458b          	lrh	a1,a4,a3,1
    e8882250:	0685                	addi	a3,a3,1
    e8882252:	9fad                	addw	a5,a5,a1
    for (i = kMinPrefBand; i <= kMaxPrefBand; i++)
    e8882254:	fec69ce3          	bne	a3,a2,e888224c <WebRtcAecm_ProcessBlock+0x5d4>
    avgHnl32 /= (kMaxPrefBand - kMinPrefBand + 1);
    e8882258:	4755                	li	a4,21
    e888225a:	02e7c7bb          	divw	a5,a5,a4
      if (hnl[i] > (int16_t)avgHnl32)
    e888225e:	6605                	lui	a2,0x1
    e8882260:	088c                	addi	a1,sp,80
    e8882262:	be060613          	addi	a2,a2,-1056 # be0 <memcmp-0xe87ff420>
    e8882266:	962e                	add	a2,a2,a1
    e8882268:	777d                	lui	a4,0xfffff
    e888226a:	65070713          	addi	a4,a4,1616 # fffffffffffff650 <__DRAM0_INF_BASE+0xffffffff0000f650>
    e888226e:	9732                	add	a4,a4,a2
    avgHnl32 /= (kMaxPrefBand - kMinPrefBand + 1);
    e8882270:	46e1                	li	a3,24
    for (i = kMaxPrefBand; i < PART_LEN1; i++)
    e8882272:	04100613          	li	a2,65
      if (hnl[i] > (int16_t)avgHnl32)
    e8882276:	3c07a78b          	ext	a5,a5,15,0
    e888227a:	0007859b          	sext.w	a1,a5
    e888227e:	22d7450b          	lrh	a0,a4,a3,1
    e8882282:	00a5d463          	bge	a1,a0,e888228a <WebRtcAecm_ProcessBlock+0x612>
        hnl[i] = (int16_t)avgHnl32;
    e8882286:	22d7578b          	srh	a5,a4,a3,1
    for (i = kMaxPrefBand; i < PART_LEN1; i++)
    e888228a:	0685                	addi	a3,a3,1
    e888228c:	fec699e3          	bne	a3,a2,e888227e <WebRtcAecm_ProcessBlock+0x606>
    e8882290:	bdf1                	j	e888216c <WebRtcAecm_ProcessBlock+0x4f4>
    e8882292:	66a2                	ld	a3,8(sp)
    e8882294:	4709                	li	a4,2
    e8882296:	6791                	lui	a5,0x4
    e8882298:	00d74363          	blt	a4,a3,e888229e <WebRtcAecm_ProcessBlock+0x626>
    e888229c:	4781                	li	a5,0
    e888229e:	0894                	addi	a3,sp,80
    e88822a0:	6705                	lui	a4,0x1
    e88822a2:	3c07a80b          	ext	a6,a5,15,0
    e88822a6:	be070713          	addi	a4,a4,-1056 # be0 <memcmp-0xe87ff420>
    e88822aa:	77fd                	lui	a5,0xfffff
    e88822ac:	9736                	add	a4,a4,a3
    e88822ae:	65078793          	addi	a5,a5,1616 # fffffffffffff650 <__DRAM0_INF_BASE+0xffffffff0000f650>
      } else if (hnl[i] < NLP_COMP_LOW)
    e88822b2:	6685                	lui	a3,0x1
        hnl[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(hnl[i], nlpGain, 14);
    e88822b4:	0008031b          	sext.w	t1,a6
    e88822b8:	00f705b3          	add	a1,a4,a5
    e88822bc:	4501                	li	a0,0
      if (hnl[i] > NLP_COMP_HIGH)
    e88822be:	6891                	lui	a7,0x4
      } else if (hnl[i] < NLP_COMP_LOW)
    e88822c0:	ccc68693          	addi	a3,a3,-820 # ccc <memcmp-0xe87ff334>
      efw[i].real = (int16_t)(WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(dfw[i].real,
    e88822c4:	6609                	lui	a2,0x2
    for (i = 0; i < PART_LEN1; i++)
    e88822c6:	10400e13          	li	t3,260
      if (hnl[i] > NLP_COMP_HIGH)
    e88822ca:	00059703          	lh	a4,0(a1) # 2000 <memcmp-0xe87fe000>
    e88822ce:	40e8dc63          	bge	a7,a4,e88826e6 <WebRtcAecm_ProcessBlock+0xa6e>
        hnl[i] = ONE_Q14;
    e88822d2:	01159023          	sh	a7,0(a1)
      if ((hnl[i] == ONE_Q14) && (nlpGain == ONE_Q14))
    e88822d6:	00059783          	lh	a5,0(a1)
    e88822da:	01179563          	bne	a5,a7,e88822e4 <WebRtcAecm_ProcessBlock+0x66c>
        hnl[i] = ONE_Q14;
    e88822de:	8742                	mv	a4,a6
      if ((hnl[i] == ONE_Q14) && (nlpGain == ONE_Q14))
    e88822e0:	01130863          	beq	t1,a7,e88822f0 <WebRtcAecm_ProcessBlock+0x678>
        hnl[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(hnl[i], nlpGain, 14);
    e88822e4:	026787bb          	mulw	a5,a5,t1
    e88822e8:	40e7d79b          	sraiw	a5,a5,0xe
    e88822ec:	3c07a70b          	ext	a4,a5,15,0
      efw[i].real = (int16_t)(WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(dfw[i].real,
    e88822f0:	a0ab478b          	lrhu	a5,s6,a0,0
    e88822f4:	8fb2                	mv	t6,a2
    e88822f6:	00ab0f33          	add	t5,s6,a0
    e88822fa:	28e79f8b          	mulah	t6,a5,a4
    e88822fe:	00a48eb3          	add	t4,s1,a0
    e8882302:	3825d70b          	shia	a4,(a1),2,0
    e8882306:	40efd79b          	sraiw	a5,t6,0xe
    e888230a:	20a4d78b          	srh	a5,s1,a0,0
      efw[i].imag = (int16_t)(WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(dfw[i].imag,
    e888230e:	002f5783          	lhu	a5,2(t5)
    e8882312:	8f32                	mv	t5,a2
    e8882314:	0511                	addi	a0,a0,4
    e8882316:	28f71f0b          	mulah	t5,a4,a5
    e888231a:	40ef579b          	sraiw	a5,t5,0xe
    e888231e:	00fe9123          	sh	a5,2(t4)
    for (i = 0; i < PART_LEN1; i++)
    e8882322:	fbc514e3          	bne	a0,t3,e88822ca <WebRtcAecm_ProcessBlock+0x652>
  if (aecm->cngMode == AecmTrue)
    e8882326:	6791                	lui	a5,0x4
    e8882328:	97a2                	add	a5,a5,s0
    e888232a:	34e79703          	lh	a4,846(a5) # 434e <memcmp-0xe87fbcb2>
    e888232e:	4785                	li	a5,1
    e8882330:	26f71163          	bne	a4,a5,e8882592 <WebRtcAecm_ProcessBlock+0x91a>
  int16_t uReal[PART_LEN1];
  int16_t uImag[PART_LEN1];
  int32_t outLShift32;
  int16_t noiseRShift16[PART_LEN1];

  int16_t shiftFromNearToNoise = kNoiseEstQDomain - aecm->dfaCleanQDomain;
    e8882334:	678d                	lui	a5,0x3
    e8882336:	97a2                	add	a5,a5,s0
    e8882338:	6b87d783          	lhu	a5,1720(a5) # 36b8 <memcmp-0xe87fc948>
    e888233c:	49bd                	li	s3,15
    e888233e:	40f989bb          	subw	s3,s3,a5
  int16_t minTrackShift;

  assert(shiftFromNearToNoise >= 0);
    e8882342:	3c09a98b          	ext	s3,s3,15,0
    e8882346:	3a09d563          	bgez	s3,e88826f0 <WebRtcAecm_ProcessBlock+0xa78>
    e888234a:	02f00593          	li	a1,47
    e888234e:	0004c517          	auipc	a0,0x4c
    e8882352:	e4a50513          	addi	a0,a0,-438 # e88ce198 <kChannelStored8kHz+0x88>
    e8882356:	822fa0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888235a:	2a200613          	li	a2,674
  assert(shiftFromNearToNoise < 16);
    e888235e:	00150593          	addi	a1,a0,1
    e8882362:	0001e517          	auipc	a0,0x1e
    e8882366:	e4e50513          	addi	a0,a0,-434 # e88a01b0 <TWO52+0x5b8>
    e888236a:	f5df90ef          	jal	ra,e887c2c6 <eLIBs_printf>

  if (aecm->noiseEstCtr < 100)
    e888236e:	6791                	lui	a5,0x4
    e8882370:	97a2                	add	a5,a5,s0
    e8882372:	34c79703          	lh	a4,844(a5) # 434c <memcmp-0xe87fbcb4>
    e8882376:	06300693          	li	a3,99
    // Track the minimum more quickly initially.
    aecm->noiseEstCtr++;
    minTrackShift = 6;
  } else
  {
    minTrackShift = 9;
    e888237a:	45a5                	li	a1,9
  if (aecm->noiseEstCtr < 100)
    e888237c:	00e6c663          	blt	a3,a4,e8882388 <WebRtcAecm_ProcessBlock+0x710>
    aecm->noiseEstCtr++;
    e8882380:	2705                	addiw	a4,a4,1
    e8882382:	34e79623          	sh	a4,844(a5)
    minTrackShift = 6;
    e8882386:	4599                	li	a1,6
  }

  // Estimate noise power.
  for (i = 0; i < PART_LEN1; i++)
    e8882388:	6611                	lui	a2,0x4
    e888238a:	04060613          	addi	a2,a2,64 # 4040 <memcmp-0xe87fbfc0>
    if (outLShift32 < aecm->noiseEst[i])
    {
      // Reset "too low" counter
      aecm->noiseEstTooLowCtr[i] = 0;
      // Track the minimum.
      if (aecm->noiseEst[i] < (1 << minTrackShift))
    e888238e:	2581                	sext.w	a1,a1
    e8882390:	4305                	li	t1,1
    e8882392:	9622                	add	a2,a2,s0
        aecm->noiseEst[i] *= 2049;
      }
      else if ((aecm->noiseEst[i] >> 11) > 0)
      {
        // Large enough for relative increase
        aecm->noiseEst[i] *= 2049;
    e8882394:	6805                	lui	a6,0x1
      if (aecm->noiseEst[i] < (1 << minTrackShift))
    e8882396:	00b3133b          	sllw	t1,t1,a1
    e888239a:	8732                	mv	a4,a2
    e888239c:	4501                	li	a0,0
      else
      {
        // Make incremental increases based on size every
        // |kNoiseEstIncCount| block
        aecm->noiseEstTooLowCtr[i]++;
        if (aecm->noiseEstTooLowCtr[i] >= kNoiseEstIncCount)
    e888239e:	4e11                	li	t3,4
        aecm->noiseEst[i] *= 2049;
    e88823a0:	8018081b          	addiw	a6,a6,-2047
  for (i = 0; i < PART_LEN1; i++)
    e88823a4:	04100e93          	li	t4,65
    tmp32 = (int32_t)dfa[i];
    e88823a8:	a2a9468b          	lrhu	a3,s2,a0,1
    if (outLShift32 < aecm->noiseEst[i])
    e88823ac:	431c                	lw	a5,0(a4)
    outLShift32 = WEBRTC_SPL_LSHIFT_W32(tmp32, shiftFromNearToNoise);
    e88823ae:	013698bb          	sllw	a7,a3,s3
    if (outLShift32 < aecm->noiseEst[i])
    e88823b2:	36f8d463          	bge	a7,a5,e888271a <WebRtcAecm_ProcessBlock+0xaa2>
      aecm->noiseEstTooLowCtr[i] = 0;
    e88823b6:	10072223          	sw	zero,260(a4)
      if (aecm->noiseEst[i] < (1 << minTrackShift))
    e88823ba:	3467d963          	bge	a5,t1,e888270c <WebRtcAecm_ProcessBlock+0xa94>
        aecm->noiseEstTooHighCtr[i]++;
    e88823be:	20872883          	lw	a7,520(a4)
    e88823c2:	0018869b          	addiw	a3,a7,1
    e88823c6:	20d72423          	sw	a3,520(a4)
        if (aecm->noiseEstTooHighCtr[i] >= kNoiseEstIncCount)
    e88823ca:	00de5663          	bge	t3,a3,e88823d6 <WebRtcAecm_ProcessBlock+0x75e>
          aecm->noiseEst[i]--;
    e88823ce:	37fd                	addiw	a5,a5,-1
    e88823d0:	c31c                	sw	a5,0(a4)
          aecm->noiseEstTooHighCtr[i] = 0; // Reset the counter
    e88823d2:	20072423          	sw	zero,520(a4)
  for (i = 0; i < PART_LEN1; i++)
    e88823d6:	0505                	addi	a0,a0,1
    e88823d8:	0711                	addi	a4,a4,4
    e88823da:	fdd517e3          	bne	a0,t4,e88823a8 <WebRtcAecm_ProcessBlock+0x730>
      aecm->noiseEst[i] = WEBRTC_SPL_LSHIFT_W32(tmp32, shiftFromNearToNoise);
    }
    noiseRShift16[i] = (int16_t)tmp32;

    tmp16 = ONE_Q14 - lambda[i];
    noiseRShift16[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(tmp16,
    e88823de:	6685                	lui	a3,0x1
    e88823e0:	be068793          	addi	a5,a3,-1056 # be0 <memcmp-0xe87ff420>
    e88823e4:	05010813          	addi	a6,sp,80
    e88823e8:	97c2                	add	a5,a5,a6
    e88823ea:	7afd                	lui	s5,0xfffff
    e88823ec:	7e8a8513          	addi	a0,s5,2024 # fffffffffffff7e8 <__DRAM0_INF_BASE+0xffffffff0000f7e8>
      aecm->noiseEst[i] = WEBRTC_SPL_LSHIFT_W32(tmp32, shiftFromNearToNoise);
    e88823f0:	65a1                	lui	a1,0x8
    noiseRShift16[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(tmp16,
    e88823f2:	953e                	add	a0,a0,a5
    tmp16 = ONE_Q14 - lambda[i];
    e88823f4:	be068793          	addi	a5,a3,-1056
    e88823f8:	0894                	addi	a3,sp,80
      aecm->noiseEst[i] = WEBRTC_SPL_LSHIFT_W32(tmp32, shiftFromNearToNoise);
    e88823fa:	35fd                	addiw	a1,a1,-1
    if (tmp32 > 32767)
    e88823fc:	68a1                	lui	a7,0x8
    tmp16 = ONE_Q14 - lambda[i];
    e88823fe:	650a8813          	addi	a6,s5,1616
    e8882402:	97b6                	add	a5,a5,a3
      aecm->noiseEst[i] = WEBRTC_SPL_LSHIFT_W32(tmp32, shiftFromNearToNoise);
    e8882404:	013595bb          	sllw	a1,a1,s3
    e8882408:	4701                	li	a4,0
      tmp32 = 32767;
    e888240a:	fff88e93          	addi	t4,a7,-1 # 7fff <memcmp-0xe87f8001>
    tmp16 = ONE_Q14 - lambda[i];
    e888240e:	983e                	add	a6,a6,a5
    e8882410:	6e11                	lui	t3,0x4
  for (i = 0; i < PART_LEN1; i++)
    e8882412:	08200313          	li	t1,130
    tmp32 = WEBRTC_SPL_RSHIFT_W32(aecm->noiseEst[i], shiftFromNearToNoise);
    e8882416:	42e6468b          	lrw	a3,a2,a4,1
    e888241a:	4136d6bb          	sraw	a3,a3,s3
    if (tmp32 > 32767)
    e888241e:	0116c563          	blt	a3,a7,e8882428 <WebRtcAecm_ProcessBlock+0x7b0>
      aecm->noiseEst[i] = WEBRTC_SPL_LSHIFT_W32(tmp32, shiftFromNearToNoise);
    e8882422:	42e6558b          	srw	a1,a2,a4,1
      tmp32 = 32767;
    e8882426:	86f6                	mv	a3,t4
    tmp16 = ONE_Q14 - lambda[i];
    e8882428:	a107478b          	lrhu	a5,a4,a6,0
    noiseRShift16[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(tmp16,
    e888242c:	0106969b          	slliw	a3,a3,0x10
    e8882430:	4106d69b          	sraiw	a3,a3,0x10
    tmp16 = ONE_Q14 - lambda[i];
    e8882434:	40fe07bb          	subw	a5,t3,a5
    noiseRShift16[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(tmp16,
    e8882438:	0107979b          	slliw	a5,a5,0x10
    e888243c:	4107d79b          	sraiw	a5,a5,0x10
    e8882440:	02d787bb          	mulw	a5,a5,a3
    e8882444:	40e7d79b          	sraiw	a5,a5,0xe
    e8882448:	20a7578b          	srh	a5,a4,a0,0
  for (i = 0; i < PART_LEN1; i++)
    e888244c:	0709                	addi	a4,a4,2
    e888244e:	fc6714e3          	bne	a4,t1,e8882416 <WebRtcAecm_ProcessBlock+0x79e>
                                                          noiseRShift16[i],
                                                          14);
  }

  // Generate a uniform random array on [0 2^15-1].
  WebRtcSpl_RandUArray(randW16, PART_LEN, &aecm->seed);
    e8882452:	6985                	lui	s3,0x1
    e8882454:	0898                	addi	a4,sp,80
    e8882456:	be098793          	addi	a5,s3,-1056 # be0 <memcmp-0xe87ff420>
    e888245a:	97ba                	add	a5,a5,a4
    e888245c:	438a8913          	addi	s2,s5,1080
    e8882460:	993e                	add	s2,s2,a5
    e8882462:	23c40613          	addi	a2,s0,572
    e8882466:	04000593          	li	a1,64
    e888246a:	854a                	mv	a0,s2
    e888246c:	0f5000ef          	jal	ra,e8882d60 <WebRtcSpl_RandUArray>

  // Generate noise according to estimated energy.
  uReal[0] = 0; // Reject LF noise.
    e8882470:	0894                	addi	a3,sp,80
    e8882472:	be098793          	addi	a5,s3,-1056
    e8882476:	97b6                	add	a5,a5,a3
    e8882478:	97d6                	add	a5,a5,s5
    e888247a:	6c079c23          	sh	zero,1752(a5)
  uImag[0] = 0;
    e888247e:	76079023          	sh	zero,1888(a5)
  {
    // Get a random index for the cos and sin tables over [0 359].
    tmp16 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(359, randW16[i - 1], 15);

    // Tables are in Q13.
    uReal[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(noiseRShift16[i],
    e8882482:	be098793          	addi	a5,s3,-1056
    tmp16 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(359, randW16[i - 1], 15);
    e8882486:	757d                	lui	a0,0xfffff
    uReal[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(noiseRShift16[i],
    e8882488:	97b6                	add	a5,a5,a3
    e888248a:	7e850893          	addi	a7,a0,2024 # fffffffffffff7e8 <__DRAM0_INF_BASE+0xffffffff0000f7e8>
    e888248e:	98be                	add	a7,a7,a5
    e8882490:	be098793          	addi	a5,s3,-1056
    e8882494:	97b6                	add	a5,a5,a3
    e8882496:	6d850813          	addi	a6,a0,1752
    e888249a:	983e                	add	a6,a6,a5
                                                  WebRtcAecm_kCosTable[tmp16],
                                                  13);
    uImag[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(-noiseRShift16[i],
    e888249c:	be098793          	addi	a5,s3,-1056
    e88824a0:	76050613          	addi	a2,a0,1888
    e88824a4:	97b6                	add	a5,a5,a3
  uImag[0] = 0;
    e88824a6:	4589                	li	a1,2
    tmp16 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(359, randW16[i - 1], 15);
    e88824a8:	16700f13          	li	t5,359
    uReal[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(noiseRShift16[i],
    e88824ac:	0004be97          	auipc	t4,0x4b
    e88824b0:	63ce8e93          	addi	t4,t4,1596 # e88cdae8 <WebRtcAecm_kCosTable>
    uImag[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(-noiseRShift16[i],
    e88824b4:	963e                	add	a2,a2,a5
    e88824b6:	0004ce17          	auipc	t3,0x4c
    e88824ba:	902e0e13          	addi	t3,t3,-1790 # e88cddb8 <WebRtcAecm_kSinTable>
  for (i = 1; i < PART_LEN1; i++)
    e88824be:	08200313          	li	t1,130
    tmp16 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(359, randW16[i - 1], 15);
    e88824c2:	012587b3          	add	a5,a1,s2
    e88824c6:	ffe79703          	lh	a4,-2(a5)
    uReal[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(noiseRShift16[i],
    e88824ca:	2115c78b          	lrh	a5,a1,a7,0
    tmp16 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(359, randW16[i - 1], 15);
    e88824ce:	03e7073b          	mulw	a4,a4,t5
    e88824d2:	40f7571b          	sraiw	a4,a4,0xf
    uReal[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(noiseRShift16[i],
    e88824d6:	22eec68b          	lrh	a3,t4,a4,1
    uImag[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(-noiseRShift16[i],
    e88824da:	22ee470b          	lrh	a4,t3,a4,1
    uReal[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(noiseRShift16[i],
    e88824de:	02f686bb          	mulw	a3,a3,a5
    uImag[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(-noiseRShift16[i],
    e88824e2:	40f007bb          	negw	a5,a5
    e88824e6:	0107979b          	slliw	a5,a5,0x10
    e88824ea:	4107d79b          	sraiw	a5,a5,0x10
    e88824ee:	02e787bb          	mulw	a5,a5,a4
    uReal[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(noiseRShift16[i],
    e88824f2:	40d6d69b          	sraiw	a3,a3,0xd
    e88824f6:	2105d68b          	srh	a3,a1,a6,0
    uImag[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(-noiseRShift16[i],
    e88824fa:	40d7d79b          	sraiw	a5,a5,0xd
    e88824fe:	20c5d78b          	srh	a5,a1,a2,0
  for (i = 1; i < PART_LEN1; i++)
    e8882502:	0589                	addi	a1,a1,2
    e8882504:	fa659fe3          	bne	a1,t1,e88824c2 <WebRtcAecm_ProcessBlock+0x84a>
                                                  WebRtcAecm_kSinTable[tmp16],
                                                  13);
  }
  uImag[PART_LEN] = 0;
    e8882508:	6685                	lui	a3,0x1
    e888250a:	be068793          	addi	a5,a3,-1056 # be0 <memcmp-0xe87ff420>
    e888250e:	0898                	addi	a4,sp,80
    e8882510:	97ba                	add	a5,a5,a4
    e8882512:	97aa                	add	a5,a5,a0

  for (i = 0; i < PART_LEN1; i++)
  {
    out[i].real = WEBRTC_SPL_ADD_SAT_W16(out[i].real, uReal[i]);
    e8882514:	be068613          	addi	a2,a3,-1056
    e8882518:	0888                	addi	a0,sp,80
    e888251a:	962a                	add	a2,a2,a0
    e888251c:	777d                	lui	a4,0xfffff
    e888251e:	6d870593          	addi	a1,a4,1752 # fffffffffffff6d8 <__DRAM0_INF_BASE+0xffffffff0000f6d8>
    e8882522:	95b2                	add	a1,a1,a2
    out[i].imag = WEBRTC_SPL_ADD_SAT_W16(out[i].imag, uImag[i]);
    e8882524:	be068693          	addi	a3,a3,-1056
    e8882528:	0890                	addi	a2,sp,80
  if (value32 > 32767)
    e888252a:	6521                	lui	a0,0x8
    e888252c:	76070713          	addi	a4,a4,1888
    e8882530:	96b2                	add	a3,a3,a2
  uImag[PART_LEN] = 0;
    e8882532:	7e079023          	sh	zero,2016(a5)
    out16 = 32767;
    e8882536:	fff50893          	addi	a7,a0,-1 # 7fff <memcmp-0xe87f8001>
    e888253a:	4781                	li	a5,0
  else if (value32 < -32768)
    e888253c:	7361                	lui	t1,0xffff8
    out[i].imag = WEBRTC_SPL_ADD_SAT_W16(out[i].imag, uImag[i]);
    e888253e:	9736                	add	a4,a4,a3
  for (i = 0; i < PART_LEN1; i++)
    e8882540:	08200f13          	li	t5,130
    out[i].real = WEBRTC_SPL_ADD_SAT_W16(out[i].real, uReal[i]);
    e8882544:	20b7c60b          	lrh	a2,a5,a1,0
    e8882548:	22f4c68b          	lrh	a3,s1,a5,1
    e888254c:	00179e13          	slli	t3,a5,0x1
    e8882550:	009e0833          	add	a6,t3,s1
  return WebRtcSpl_SatW32ToW16((int32_t) a + (int32_t) b);
    e8882554:	00c68ebb          	addw	t4,a3,a2
    out16 = 32767;
    e8882558:	8646                	mv	a2,a7
  if (value32 > 32767)
    e888255a:	00aed763          	bge	t4,a0,e8882568 <WebRtcAecm_ProcessBlock+0x8f0>
    out16 = -32768;
    e888255e:	7661                	lui	a2,0xffff8
  else if (value32 < -32768)
    e8882560:	006ec463          	blt	t4,t1,e8882568 <WebRtcAecm_ProcessBlock+0x8f0>
  int16_t out16 = (int16_t) value32;
    e8882564:	3c0ea60b          	ext	a2,t4,15,0
    e8882568:	209e560b          	srh	a2,t3,s1,0
    out[i].imag = WEBRTC_SPL_ADD_SAT_W16(out[i].imag, uImag[i]);
    e888256c:	20e7c60b          	lrh	a2,a5,a4,0
    e8882570:	00281683          	lh	a3,2(a6) # 1002 <memcmp-0xe87feffe>
  return WebRtcSpl_SatW32ToW16((int32_t) a + (int32_t) b);
    e8882574:	00c68e3b          	addw	t3,a3,a2
    out16 = 32767;
    e8882578:	8646                	mv	a2,a7
  if (value32 > 32767)
    e888257a:	00ae5763          	bge	t3,a0,e8882588 <WebRtcAecm_ProcessBlock+0x910>
    out16 = -32768;
    e888257e:	7661                	lui	a2,0xffff8
  else if (value32 < -32768)
    e8882580:	006e4463          	blt	t3,t1,e8882588 <WebRtcAecm_ProcessBlock+0x910>
  int16_t out16 = (int16_t) value32;
    e8882584:	3c0e260b          	ext	a2,t3,15,0
    e8882588:	00c81123          	sh	a2,2(a6)
  for (i = 0; i < PART_LEN1; i++)
    e888258c:	0789                	addi	a5,a5,2
    e888258e:	fbe79be3          	bne	a5,t5,e8882544 <WebRtcAecm_ProcessBlock+0x8cc>
    e8882592:	004a0793          	addi	a5,s4,4
    e8882596:	100a0613          	addi	a2,s4,256
    e888259a:	414486b3          	sub	a3,s1,s4
    fft[j] = efw[i].real;
    e888259e:	20f6c58b          	lrh	a1,a3,a5,0
    e88825a2:	00f68733          	add	a4,a3,a5
    e88825a6:	0791                	addi	a5,a5,4
    e88825a8:	feb79e23          	sh	a1,-4(a5)
    fft[j + 1] = -efw[i].imag;
    e88825ac:	00275703          	lhu	a4,2(a4)
    e88825b0:	40e0073b          	negw	a4,a4
    e88825b4:	fee79f23          	sh	a4,-2(a5)
  for (i = 1, j = 2; i < PART_LEN; i += 1, j += 2) {
    e88825b8:	fef613e3          	bne	a2,a5,e888259e <WebRtcAecm_ProcessBlock+0x926>
  fft[0] = efw[0].real;
    e88825bc:	00049783          	lh	a5,0(s1)
  outCFFT = WebRtcSpl_RealInverseFFT(aecm->real_fft, fft, ifft_out);
    e88825c0:	6911                	lui	s2,0x4
    e88825c2:	9922                	add	s2,s2,s0
  fft[0] = efw[0].real;
    e88825c4:	00fa1023          	sh	a5,0(s4)
  fft[1] = -efw[0].imag;
    e88825c8:	0024d783          	lhu	a5,2(s1)
  outCFFT = WebRtcSpl_RealInverseFFT(aecm->real_fft, fft, ifft_out);
    e88825cc:	85d2                	mv	a1,s4
    e88825ce:	8626                	mv	a2,s1
  fft[1] = -efw[0].imag;
    e88825d0:	40f007bb          	negw	a5,a5
    e88825d4:	00fa1123          	sh	a5,2(s4)
  fft[PART_LEN2] = efw[PART_LEN].real;
    e88825d8:	10049783          	lh	a5,256(s1)
    e88825dc:	10fa1023          	sh	a5,256(s4)
  fft[PART_LEN2 + 1] = -efw[PART_LEN].imag;
    e88825e0:	1024d783          	lhu	a5,258(s1)
    e88825e4:	40f007bb          	negw	a5,a5
    e88825e8:	10fa1123          	sh	a5,258(s4)
  outCFFT = WebRtcSpl_RealInverseFFT(aecm->real_fft, fft, ifft_out);
    e88825ec:	00062797          	auipc	a5,0x62
    e88825f0:	e9478793          	addi	a5,a5,-364 # e88e4480 <WebRtcSpl_RealInverseFFT>
    e88825f4:	639c                	ld	a5,0(a5)
    e88825f6:	38093503          	ld	a0,896(s2) # 4380 <memcmp-0xe87fbc80>
    e88825fa:	9782                	jalr	a5
  for (i = 0; i < PART_LEN; i++) {
    e88825fc:	0004c697          	auipc	a3,0x4c
    e8882600:	c4468693          	addi	a3,a3,-956 # e88ce240 <WebRtcAecm_kSqrtHanning>
    tmp32no1 = WEBRTC_SPL_SHIFT_W32((int32_t)ifft_out[i],
    e8882604:	678d                	lui	a5,0x3
    output[i] = (int16_t)WEBRTC_SPL_SAT(WEBRTC_SPL_WORD16_MAX,
    e8882606:	65a1                	lui	a1,0x8
  outCFFT = WebRtcSpl_RealInverseFFT(aecm->real_fft, fft, ifft_out);
    e8882608:	4701                	li	a4,0
    e888260a:	8e36                	mv	t3,a3
    ifft_out[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(
    e888260c:	6309                	lui	t1,0x2
    tmp32no1 = WEBRTC_SPL_SHIFT_W32((int32_t)ifft_out[i],
    e888260e:	943e                	add	s0,s0,a5
    output[i] = (int16_t)WEBRTC_SPL_SAT(WEBRTC_SPL_WORD16_MAX,
    e8882610:	fff58813          	addi	a6,a1,-1 # 7fff <memcmp-0xe87f8001>
    e8882614:	78e1                	lui	a7,0xffff8
  for (i = 0; i < PART_LEN; i++) {
    e8882616:	08000e93          	li	t4,128
    ifft_out[i] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(
    e888261a:	a0e4c60b          	lrhu	a2,s1,a4,0
    e888261e:	a0ee478b          	lrhu	a5,t3,a4,0
    e8882622:	8f1a                	mv	t5,t1
    e8882624:	00e48fb3          	add	t6,s1,a4
    e8882628:	28f61f0b          	mulah	t5,a2,a5
    e888262c:	40ef579b          	sraiw	a5,t5,0xe
    e8882630:	3c07a78b          	ext	a5,a5,15,0
    e8882634:	20e4d78b          	srh	a5,s1,a4,0
    tmp32no1 = WEBRTC_SPL_SHIFT_W32((int32_t)ifft_out[i],
    e8882638:	6b841603          	lh	a2,1720(s0)
    e888263c:	2781                	sext.w	a5,a5
    e888263e:	40c50f3b          	subw	t5,a0,a2
    e8882642:	120f4163          	bltz	t5,e8882764 <WebRtcAecm_ProcessBlock+0xaec>
    e8882646:	01e797bb          	sllw	a5,a5,t5
    output[i] = (int16_t)WEBRTC_SPL_SAT(WEBRTC_SPL_WORD16_MAX,
    e888264a:	eb093603          	ld	a2,-336(s2)
    e888264e:	20e6460b          	lrh	a2,a2,a4,0
    e8882652:	00f60f3b          	addw	t5,a2,a5
    e8882656:	8642                	mv	a2,a6
    e8882658:	00bf5763          	bge	t5,a1,e8882666 <WebRtcAecm_ProcessBlock+0x9ee>
    e888265c:	7661                	lui	a2,0xffff8
    e888265e:	011f4463          	blt	t5,a7,e8882666 <WebRtcAecm_ProcessBlock+0x9ee>
    e8882662:	3c0f260b          	ext	a2,t5,15,0
    e8882666:	77a2                	ld	a5,40(sp)
    e8882668:	20e7d60b          	srh	a2,a5,a4,0
    tmp32no1 = WEBRTC_SPL_MUL_16_16_RSFT(ifft_out[PART_LEN + i],
    e888266c:	08069603          	lh	a2,128(a3)
    e8882670:	080f9783          	lh	a5,128(t6) # 320080 <memcmp-0xe84dff80>
    e8882674:	02c787bb          	mulw	a5,a5,a2
    tmp32no1 = WEBRTC_SPL_SHIFT_W32(tmp32no1,
    e8882678:	6b841603          	lh	a2,1720(s0)
    e888267c:	40c50f3b          	subw	t5,a0,a2
    tmp32no1 = WEBRTC_SPL_MUL_16_16_RSFT(ifft_out[PART_LEN + i],
    e8882680:	40e7d79b          	sraiw	a5,a5,0xe
    tmp32no1 = WEBRTC_SPL_SHIFT_W32(tmp32no1,
    e8882684:	0e0f4463          	bltz	t5,e888276c <WebRtcAecm_ProcessBlock+0xaf4>
    e8882688:	01e797bb          	sllw	a5,a5,t5
    aecm->outBuf[i] = (int16_t)WEBRTC_SPL_SAT(WEBRTC_SPL_WORD16_MAX,
    e888268c:	8642                	mv	a2,a6
    e888268e:	00b7d763          	bge	a5,a1,e888269c <WebRtcAecm_ProcessBlock+0xa24>
    e8882692:	7661                	lui	a2,0xffff8
    e8882694:	0117c463          	blt	a5,a7,e888269c <WebRtcAecm_ProcessBlock+0xa24>
    e8882698:	3c07a60b          	ext	a2,a5,15,0
    e888269c:	eb093783          	ld	a5,-336(s2)
    e88826a0:	16f9                	addi	a3,a3,-2
    e88826a2:	20e7d60b          	srh	a2,a5,a4,0
  for (i = 0; i < PART_LEN; i++) {
    e88826a6:	0709                	addi	a4,a4,2
    e88826a8:	f7d719e3          	bne	a4,t4,e888261a <WebRtcAecm_ProcessBlock+0x9a2>
  memcpy(aecm->xBuf, aecm->xBuf + PART_LEN, sizeof(int16_t) * PART_LEN);
    e88826ac:	e9893503          	ld	a0,-360(s2)
    e88826b0:	08000613          	li	a2,128
  return 0;
    e88826b4:	4401                	li	s0,0
  memcpy(aecm->xBuf, aecm->xBuf + PART_LEN, sizeof(int16_t) * PART_LEN);
    e88826b6:	08050593          	addi	a1,a0,128
    e88826ba:	ce7f90ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  memcpy(aecm->dBufNoisy,
    e88826be:	ea893503          	ld	a0,-344(s2)
    e88826c2:	08000613          	li	a2,128
    e88826c6:	08050593          	addi	a1,a0,128
    e88826ca:	cd7f90ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  if (nearendClean != NULL)
    e88826ce:	f20d0963          	beqz	s10,e8881e00 <WebRtcAecm_ProcessBlock+0x188>
    memcpy(aecm->dBufClean,
    e88826d2:	ea093503          	ld	a0,-352(s2)
    e88826d6:	08000613          	li	a2,128
    e88826da:	08050593          	addi	a1,a0,128
    e88826de:	cc3f90ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e88826e2:	f1eff06f          	j	e8881e00 <WebRtcAecm_ProcessBlock+0x188>
      } else if (hnl[i] < NLP_COMP_LOW)
    e88826e6:	bee6c8e3          	blt	a3,a4,e88822d6 <WebRtcAecm_ProcessBlock+0x65e>
        hnl[i] = 0;
    e88826ea:	00059023          	sh	zero,0(a1)
    e88826ee:	b6e5                	j	e88822d6 <WebRtcAecm_ProcessBlock+0x65e>
  assert(shiftFromNearToNoise < 16);
    e88826f0:	47bd                	li	a5,15
    e88826f2:	c737dee3          	bge	a5,s3,e888236e <WebRtcAecm_ProcessBlock+0x6f6>
    e88826f6:	02f00593          	li	a1,47
    e88826fa:	0004c517          	auipc	a0,0x4c
    e88826fe:	a9e50513          	addi	a0,a0,-1378 # e88ce198 <kChannelStored8kHz+0x88>
    e8882702:	c77f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8882706:	2a300613          	li	a2,675
    e888270a:	b991                	j	e888235e <WebRtcAecm_ProcessBlock+0x6e6>
        aecm->noiseEst[i] -= ((aecm->noiseEst[i] - outLShift32)
    e888270c:	411786bb          	subw	a3,a5,a7
                              >> minTrackShift);
    e8882710:	40b6d6bb          	sraw	a3,a3,a1
        aecm->noiseEst[i] -= ((aecm->noiseEst[i] - outLShift32)
    e8882714:	9f95                	subw	a5,a5,a3
        aecm->noiseEst[i] >>= 11;
    e8882716:	c31c                	sw	a5,0(a4)
    e8882718:	b97d                	j	e88823d6 <WebRtcAecm_ProcessBlock+0x75e>
      aecm->noiseEstTooHighCtr[i] = 0;
    e888271a:	20072423          	sw	zero,520(a4)
      if ((aecm->noiseEst[i] >> 19) > 0)
    e888271e:	4137df13          	srai	t5,a5,0x13
    e8882722:	40b7d69b          	sraiw	a3,a5,0xb
    e8882726:	01e05763          	blez	t5,e8882734 <WebRtcAecm_ProcessBlock+0xabc>
        aecm->noiseEst[i] *= 2049;
    e888272a:	030688bb          	mulw	a7,a3,a6
    e888272e:	01172023          	sw	a7,0(a4)
    e8882732:	b155                	j	e88823d6 <WebRtcAecm_ProcessBlock+0x75e>
      else if ((aecm->noiseEst[i] >> 11) > 0)
    e8882734:	00d05763          	blez	a3,e8882742 <WebRtcAecm_ProcessBlock+0xaca>
        aecm->noiseEst[i] *= 2049;
    e8882738:	030787bb          	mulw	a5,a5,a6
        aecm->noiseEst[i] >>= 11;
    e888273c:	40b7d79b          	sraiw	a5,a5,0xb
    e8882740:	bfd9                	j	e8882716 <WebRtcAecm_ProcessBlock+0xa9e>
        aecm->noiseEstTooLowCtr[i]++;
    e8882742:	10472883          	lw	a7,260(a4)
    e8882746:	0018869b          	addiw	a3,a7,1
    e888274a:	10d72223          	sw	a3,260(a4)
        if (aecm->noiseEstTooLowCtr[i] >= kNoiseEstIncCount)
    e888274e:	c8de54e3          	bge	t3,a3,e88823d6 <WebRtcAecm_ProcessBlock+0x75e>
          aecm->noiseEst[i] += (aecm->noiseEst[i] >> 9) + 1;
    e8882752:	4097d89b          	sraiw	a7,a5,0x9
    e8882756:	2785                	addiw	a5,a5,1
    e8882758:	00f887bb          	addw	a5,a7,a5
    e888275c:	c31c                	sw	a5,0(a4)
          aecm->noiseEstTooLowCtr[i] = 0; // Reset counter
    e888275e:	10072223          	sw	zero,260(a4)
    e8882762:	b995                	j	e88823d6 <WebRtcAecm_ProcessBlock+0x75e>
    tmp32no1 = WEBRTC_SPL_SHIFT_W32((int32_t)ifft_out[i],
    e8882764:	9e09                	subw	a2,a2,a0
    e8882766:	40c7d7bb          	sraw	a5,a5,a2
    e888276a:	b5c5                	j	e888264a <WebRtcAecm_ProcessBlock+0x9d2>
    tmp32no1 = WEBRTC_SPL_SHIFT_W32(tmp32no1,
    e888276c:	9e09                	subw	a2,a2,a0
    e888276e:	40c7d7bb          	sraw	a5,a5,a2
    e8882772:	bf29                	j	e888268c <WebRtcAecm_ProcessBlock+0xa14>

00000000e8882774 <BinarySpectrumFix>:
//      - out                 : Binary spectrum.
//
static uint32_t BinarySpectrumFix(uint16_t* spectrum,
                                  SpectrumType* threshold_spectrum,
                                  int q_domain,
                                  int* threshold_initialized) {
    e8882774:	711d                	addi	sp,sp,-96
    e8882776:	e0ca                	sd	s2,64(sp)
    e8882778:	fc4e                	sd	s3,56(sp)
    e888277a:	f456                	sd	s5,40(sp)
    e888277c:	ec86                	sd	ra,88(sp)
    e888277e:	e8a2                	sd	s0,80(sp)
    e8882780:	e4a6                	sd	s1,72(sp)
    e8882782:	f852                	sd	s4,48(sp)
    e8882784:	f05a                	sd	s6,32(sp)
    e8882786:	ec5e                	sd	s7,24(sp)
  int i = kBandFirst;
  uint32_t out = 0;

  assert(q_domain < 16);
    e8882788:	47bd                	li	a5,15
                                  int* threshold_initialized) {
    e888278a:	8aaa                	mv	s5,a0
    e888278c:	89ae                	mv	s3,a1
    e888278e:	8932                	mv	s2,a2
  assert(q_domain < 16);
    e8882790:	02c7d663          	bge	a5,a2,e88827bc <BinarySpectrumFix+0x48>
    e8882794:	02f00593          	li	a1,47
    e8882798:	0004c517          	auipc	a0,0x4c
    e888279c:	b3050513          	addi	a0,a0,-1232 # e88ce2c8 <WebRtcAecm_kSqrtHanning+0x88>
    e88827a0:	e436                	sd	a3,8(sp)
    e88827a2:	bd7f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88827a6:	00150593          	addi	a1,a0,1
    e88827aa:	04400613          	li	a2,68
    e88827ae:	0001e517          	auipc	a0,0x1e
    e88827b2:	a0250513          	addi	a0,a0,-1534 # e88a01b0 <TWO52+0x5b8>
    e88827b6:	b11f90ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88827ba:	66a2                	ld	a3,8(sp)

  if (!(*threshold_initialized)) {
    e88827bc:	429c                	lw	a5,0(a3)
    e88827be:	cfa1                	beqz	a5,e8882816 <BinarySpectrumFix+0xa2>
      }
    }
  }
  for (i = kBandFirst; i <= kBandLast; i++) {
    // Convert input spectrum from Q(|q_domain|) to Q15.
    int32_t spectrum_q15 = ((int32_t) spectrum[i]) << (15 - q_domain);
    e88827c0:	4a3d                	li	s4,15
    e88827c2:	4431                	li	s0,12
    e88827c4:	4481                	li	s1,0
    e88827c6:	412a0a3b          	subw	s4,s4,s2
  uint32_t mask = (1 << pos);
    e88827ca:	4b85                	li	s7,1
  for (i = kBandFirst; i <= kBandLast; i++) {
    e88827cc:	02c00b13          	li	s6,44
    int32_t spectrum_q15 = ((int32_t) spectrum[i]) << (15 - q_domain);
    e88827d0:	a28ac90b          	lrhu	s2,s5,s0,1
    // Update the |threshold_spectrum|.
    WebRtc_MeanEstimatorFix(spectrum_q15, 6, &(threshold_spectrum[i].int32_));
    e88827d4:	0489960b          	addsl	a2,s3,s0,2
    e88827d8:	4599                	li	a1,6
    int32_t spectrum_q15 = ((int32_t) spectrum[i]) << (15 - q_domain);
    e88827da:	0149193b          	sllw	s2,s2,s4
    WebRtc_MeanEstimatorFix(spectrum_q15, 6, &(threshold_spectrum[i].int32_));
    e88827de:	854a                	mv	a0,s2
    e88827e0:	36b000ef          	jal	ra,e888334a <WebRtc_MeanEstimatorFix>
    // Convert |spectrum| at current frequency bin to a binary value.
    if (spectrum_q15 > threshold_spectrum[i].int32_) {
    e88827e4:	4489c78b          	lrw	a5,s3,s0,2
    e88827e8:	0127d863          	bge	a5,s2,e88827f8 <BinarySpectrumFix+0x84>
  uint32_t mask = (1 << pos);
    e88827ec:	ff44079b          	addiw	a5,s0,-12
    e88827f0:	00fb97bb          	sllw	a5,s7,a5
  uint32_t out = (in | mask);
    e88827f4:	8cdd                	or	s1,s1,a5
    e88827f6:	2481                	sext.w	s1,s1
  for (i = kBandFirst; i <= kBandLast; i++) {
    e88827f8:	0405                	addi	s0,s0,1
    e88827fa:	fd641be3          	bne	s0,s6,e88827d0 <BinarySpectrumFix+0x5c>
      out = SetBit(out, i - kBandFirst);
    }
  }

  return out;
}
    e88827fe:	60e6                	ld	ra,88(sp)
    e8882800:	6446                	ld	s0,80(sp)
    e8882802:	8526                	mv	a0,s1
    e8882804:	6906                	ld	s2,64(sp)
    e8882806:	64a6                	ld	s1,72(sp)
    e8882808:	79e2                	ld	s3,56(sp)
    e888280a:	7a42                	ld	s4,48(sp)
    e888280c:	7aa2                	ld	s5,40(sp)
    e888280e:	7b02                	ld	s6,32(sp)
    e8882810:	6be2                	ld	s7,24(sp)
    e8882812:	6125                	addi	sp,sp,96
    e8882814:	8082                	ret
        int32_t spectrum_q15 = ((int32_t) spectrum[i]) << (15 - q_domain);
    e8882816:	463d                	li	a2,15
    e8882818:	4731                	li	a4,12
    e888281a:	4126063b          	subw	a2,a2,s2
        *threshold_initialized = 1;
    e888281e:	4505                	li	a0,1
    for (i = kBandFirst; i <= kBandLast; i++) {
    e8882820:	02c00593          	li	a1,44
      if (spectrum[i] > 0) {
    e8882824:	a2eac78b          	lrhu	a5,s5,a4,1
    e8882828:	cb81                	beqz	a5,e8882838 <BinarySpectrumFix+0xc4>
        int32_t spectrum_q15 = ((int32_t) spectrum[i]) << (15 - q_domain);
    e888282a:	00c797bb          	sllw	a5,a5,a2
        threshold_spectrum[i].int32_ = (spectrum_q15 >> 1);
    e888282e:	4017d79b          	sraiw	a5,a5,0x1
    e8882832:	44e9d78b          	srw	a5,s3,a4,2
        *threshold_initialized = 1;
    e8882836:	c288                	sw	a0,0(a3)
    for (i = kBandFirst; i <= kBandLast; i++) {
    e8882838:	0705                	addi	a4,a4,1
    e888283a:	feb715e3          	bne	a4,a1,e8882824 <BinarySpectrumFix+0xb0>
    e888283e:	b749                	j	e88827c0 <BinarySpectrumFix+0x4c>

00000000e8882840 <WebRtc_FreeDelayEstimatorFarend>:
}

void WebRtc_FreeDelayEstimatorFarend(void* handle) {
  DelayEstimatorFarend* self = (DelayEstimatorFarend*) handle;

  if (handle == NULL) {
    e8882840:	c50d                	beqz	a0,e888286a <WebRtc_FreeDelayEstimatorFarend+0x2a>
void WebRtc_FreeDelayEstimatorFarend(void* handle) {
    e8882842:	1141                	addi	sp,sp,-16
    e8882844:	e406                	sd	ra,8(sp)
    e8882846:	e022                	sd	s0,0(sp)
    e8882848:	842a                	mv	s0,a0
    return;
  }

  free(self->mean_far_spectrum);
    e888284a:	6108                	ld	a0,0(a0)
    e888284c:	ab5f90ef          	jal	ra,e887c300 <eLIBs_free>
  self->mean_far_spectrum = NULL;
    e8882850:	00043023          	sd	zero,0(s0)

  WebRtc_FreeBinaryDelayEstimatorFarend(self->binary_farend);
    e8882854:	6808                	ld	a0,16(s0)
    e8882856:	061000ef          	jal	ra,e88830b6 <WebRtc_FreeBinaryDelayEstimatorFarend>
  self->binary_farend = NULL;
    e888285a:	00043823          	sd	zero,16(s0)

  free(self);
    e888285e:	8522                	mv	a0,s0
}
    e8882860:	6402                	ld	s0,0(sp)
    e8882862:	60a2                	ld	ra,8(sp)
    e8882864:	0141                	addi	sp,sp,16
  free(self);
    e8882866:	a9bf906f          	j	e887c300 <eLIBs_free>
    e888286a:	8082                	ret

00000000e888286c <WebRtc_CreateDelayEstimatorFarend>:

void* WebRtc_CreateDelayEstimatorFarend(int spectrum_size, int history_size) {
    e888286c:	1101                	addi	sp,sp,-32
    e888286e:	ec06                	sd	ra,24(sp)
    e8882870:	e84a                	sd	s2,16(sp)
    e8882872:	f891540b          	sdd	s0,s1,(sp),0,4

  // Check if the sub band used in the delay estimation is small enough to fit
  // the binary spectra in a uint32_t.
  COMPILE_ASSERT(kBandLast - kBandFirst < 32);

  if (spectrum_size >= kBandLast) {
    e8882876:	02a00793          	li	a5,42
    e888287a:	00a7ca63          	blt	a5,a0,e888288e <WebRtc_CreateDelayEstimatorFarend+0x22>

    self->spectrum_size = spectrum_size;

    if (memory_fail) {
      WebRtc_FreeDelayEstimatorFarend(self);
      self = NULL;
    e888287e:	4401                	li	s0,0
    }
  }

  return self;
}
    e8882880:	8522                	mv	a0,s0
    e8882882:	60e2                	ld	ra,24(sp)
    e8882884:	f891440b          	ldd	s0,s1,(sp),0,4
    e8882888:	6942                	ld	s2,16(sp)
    e888288a:	6105                	addi	sp,sp,32
    e888288c:	8082                	ret
    e888288e:	84aa                	mv	s1,a0
    self = malloc(sizeof(DelayEstimator));
    e8882890:	4561                	li	a0,24
    e8882892:	892e                	mv	s2,a1
    e8882894:	fbbf80ef          	jal	ra,e887b84e <my_malloc>
    e8882898:	842a                	mv	s0,a0
  if (self != NULL) {
    e888289a:	d175                	beqz	a0,e888287e <WebRtc_CreateDelayEstimatorFarend+0x12>
    self->binary_farend = WebRtc_CreateBinaryDelayEstimatorFarend(history_size);
    e888289c:	854a                	mv	a0,s2
    e888289e:	045000ef          	jal	ra,e88830e2 <WebRtc_CreateBinaryDelayEstimatorFarend>
    e88828a2:	e808                	sd	a0,16(s0)
    e88828a4:	892a                	mv	s2,a0
    self->mean_far_spectrum = malloc(spectrum_size * sizeof(SpectrumType));
    e88828a6:	00249513          	slli	a0,s1,0x2
    e88828aa:	fa5f80ef          	jal	ra,e887b84e <my_malloc>
    e88828ae:	e008                	sd	a0,0(s0)
    self->spectrum_size = spectrum_size;
    e88828b0:	c444                	sw	s1,12(s0)
    if (memory_fail) {
    e88828b2:	00090363          	beqz	s2,e88828b8 <WebRtc_CreateDelayEstimatorFarend+0x4c>
    e88828b6:	f569                	bnez	a0,e8882880 <WebRtc_CreateDelayEstimatorFarend+0x14>
      WebRtc_FreeDelayEstimatorFarend(self);
    e88828b8:	8522                	mv	a0,s0
    e88828ba:	f87ff0ef          	jal	ra,e8882840 <WebRtc_FreeDelayEstimatorFarend>
    e88828be:	b7c1                	j	e888287e <WebRtc_CreateDelayEstimatorFarend+0x12>

00000000e88828c0 <WebRtc_InitDelayEstimatorFarend>:

int WebRtc_InitDelayEstimatorFarend(void* handle) {
  DelayEstimatorFarend* self = (DelayEstimatorFarend*) handle;

  if (self == NULL) {
    e88828c0:	c50d                	beqz	a0,e88828ea <WebRtc_InitDelayEstimatorFarend+0x2a>
int WebRtc_InitDelayEstimatorFarend(void* handle) {
    e88828c2:	1141                	addi	sp,sp,-16
    e88828c4:	e406                	sd	ra,8(sp)
    e88828c6:	e022                	sd	s0,0(sp)
    e88828c8:	842a                	mv	s0,a0
    return -1;
  }

  // Initialize far-end part of binary delay estimator.
  WebRtc_InitBinaryDelayEstimatorFarend(self->binary_farend);
    e88828ca:	6908                	ld	a0,16(a0)
    e88828cc:	067000ef          	jal	ra,e8883132 <WebRtc_InitBinaryDelayEstimatorFarend>

  // Set averaged far and near end spectra to zero.
  memset(self->mean_far_spectrum, 0,
         sizeof(SpectrumType) * self->spectrum_size);
    e88828d0:	4450                	lw	a2,12(s0)
  memset(self->mean_far_spectrum, 0,
    e88828d2:	6008                	ld	a0,0(s0)
    e88828d4:	4581                	li	a1,0
    e88828d6:	060a                	slli	a2,a2,0x2
    e88828d8:	abdf90ef          	jal	ra,e887c394 <eLIBs_memset>
  // Reset initialization indicators.
  self->far_spectrum_initialized = 0;
    e88828dc:	00042423          	sw	zero,8(s0)

  return 0;
}
    e88828e0:	60a2                	ld	ra,8(sp)
    e88828e2:	6402                	ld	s0,0(sp)
  return 0;
    e88828e4:	4501                	li	a0,0
}
    e88828e6:	0141                	addi	sp,sp,16
    e88828e8:	8082                	ret
    return -1;
    e88828ea:	557d                	li	a0,-1
}
    e88828ec:	8082                	ret

00000000e88828ee <WebRtc_AddFarSpectrumFix>:
int WebRtc_AddFarSpectrumFix(void* handle, uint16_t* far_spectrum,
                             int spectrum_size, int far_q) {
  DelayEstimatorFarend* self = (DelayEstimatorFarend*) handle;
  uint32_t binary_spectrum = 0;

  if (self == NULL) {
    e88828ee:	cd15                	beqz	a0,e888292a <WebRtc_AddFarSpectrumFix+0x3c>
                             int spectrum_size, int far_q) {
    e88828f0:	1141                	addi	sp,sp,-16
    e88828f2:	e022                	sd	s0,0(sp)
    e88828f4:	e406                	sd	ra,8(sp)
    e88828f6:	842a                	mv	s0,a0
    return -1;
    e88828f8:	557d                	li	a0,-1
  }
  if (far_spectrum == NULL) {
    e88828fa:	c585                	beqz	a1,e8882922 <WebRtc_AddFarSpectrumFix+0x34>
    // Empty far end spectrum.
    return -1;
  }
  if (spectrum_size != self->spectrum_size) {
    e88828fc:	4458                	lw	a4,12(s0)
    e88828fe:	02c71263          	bne	a4,a2,e8882922 <WebRtc_AddFarSpectrumFix+0x34>
    // Data sizes don't match.
    return -1;
  }
  if (far_q > 15) {
    e8882902:	473d                	li	a4,15
    e8882904:	00d74f63          	blt	a4,a3,e8882922 <WebRtc_AddFarSpectrumFix+0x34>
    e8882908:	8636                	mv	a2,a3
    // If |far_q| is larger than 15 we cannot guarantee no wrap around.
    return -1;
  }

  // Get binary spectrum.
  binary_spectrum = BinarySpectrumFix(far_spectrum, self->mean_far_spectrum,
    e888290a:	86a2                	mv	a3,s0
    e888290c:	852e                	mv	a0,a1
    e888290e:	7886c58b          	ldia	a1,(a3),8,0
    e8882912:	e63ff0ef          	jal	ra,e8882774 <BinarySpectrumFix>
                                      far_q, &(self->far_spectrum_initialized));
  WebRtc_AddBinaryFarSpectrum(self->binary_farend, binary_spectrum);
    e8882916:	0005059b          	sext.w	a1,a0
    e888291a:	6808                	ld	a0,16(s0)
    e888291c:	063000ef          	jal	ra,e888317e <WebRtc_AddBinaryFarSpectrum>

  return 0;
    e8882920:	4501                	li	a0,0
}
    e8882922:	60a2                	ld	ra,8(sp)
    e8882924:	6402                	ld	s0,0(sp)
    e8882926:	0141                	addi	sp,sp,16
    e8882928:	8082                	ret
    return -1;
    e888292a:	557d                	li	a0,-1
}
    e888292c:	8082                	ret

00000000e888292e <WebRtc_FreeDelayEstimator>:
}

void WebRtc_FreeDelayEstimator(void* handle) {
  DelayEstimator* self = (DelayEstimator*) handle;

  if (handle == NULL) {
    e888292e:	c50d                	beqz	a0,e8882958 <WebRtc_FreeDelayEstimator+0x2a>
void WebRtc_FreeDelayEstimator(void* handle) {
    e8882930:	1141                	addi	sp,sp,-16
    e8882932:	e406                	sd	ra,8(sp)
    e8882934:	e022                	sd	s0,0(sp)
    e8882936:	842a                	mv	s0,a0
    return;
  }

  free(self->mean_near_spectrum);
    e8882938:	6108                	ld	a0,0(a0)
    e888293a:	9c7f90ef          	jal	ra,e887c300 <eLIBs_free>
  self->mean_near_spectrum = NULL;
    e888293e:	00043023          	sd	zero,0(s0)

  WebRtc_FreeBinaryDelayEstimator(self->binary_handle);
    e8882942:	6808                	ld	a0,16(s0)
    e8882944:	0a5000ef          	jal	ra,e88831e8 <WebRtc_FreeBinaryDelayEstimator>
  self->binary_handle = NULL;
    e8882948:	00043823          	sd	zero,16(s0)

  free(self);
    e888294c:	8522                	mv	a0,s0
}
    e888294e:	6402                	ld	s0,0(sp)
    e8882950:	60a2                	ld	ra,8(sp)
    e8882952:	0141                	addi	sp,sp,16
  free(self);
    e8882954:	9adf906f          	j	e887c300 <eLIBs_free>
    e8882958:	8082                	ret

00000000e888295a <WebRtc_CreateDelayEstimator>:

void* WebRtc_CreateDelayEstimator(void* farend_handle, int lookahead) {
    e888295a:	7179                	addi	sp,sp,-48
    e888295c:	f406                	sd	ra,40(sp)
    e888295e:	f04a                	sd	s2,32(sp)
    e8882960:	fa91540b          	sdd	s0,s1,(sp),1,4
  DelayEstimator* self = NULL;
  DelayEstimatorFarend* farend = (DelayEstimatorFarend*) farend_handle;

  if (farend_handle != NULL) {
    e8882964:	e909                	bnez	a0,e8882976 <WebRtc_CreateDelayEstimator+0x1c>

    self->spectrum_size = farend->spectrum_size;

    if (memory_fail) {
      WebRtc_FreeDelayEstimator(self);
      self = NULL;
    e8882966:	4401                	li	s0,0
    }
  }

  return self;
}
    e8882968:	8522                	mv	a0,s0
    e888296a:	70a2                	ld	ra,40(sp)
    e888296c:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8882970:	7902                	ld	s2,32(sp)
    e8882972:	6145                	addi	sp,sp,48
    e8882974:	8082                	ret
    e8882976:	84aa                	mv	s1,a0
    self = malloc(sizeof(DelayEstimator));
    e8882978:	4561                	li	a0,24
    e888297a:	e42e                	sd	a1,8(sp)
    e888297c:	ed3f80ef          	jal	ra,e887b84e <my_malloc>
    e8882980:	842a                	mv	s0,a0
  if (self != NULL) {
    e8882982:	d175                	beqz	a0,e8882966 <WebRtc_CreateDelayEstimator+0xc>
        WebRtc_CreateBinaryDelayEstimator(farend->binary_farend, lookahead);
    e8882984:	65a2                	ld	a1,8(sp)
    e8882986:	6888                	ld	a0,16(s1)
    e8882988:	0a5000ef          	jal	ra,e888322c <WebRtc_CreateBinaryDelayEstimator>
    self->binary_handle =
    e888298c:	e808                	sd	a0,16(s0)
        WebRtc_CreateBinaryDelayEstimator(farend->binary_farend, lookahead);
    e888298e:	892a                	mv	s2,a0
    self->mean_near_spectrum = malloc(farend->spectrum_size *
    e8882990:	44c8                	lw	a0,12(s1)
    e8882992:	050a                	slli	a0,a0,0x2
    e8882994:	ebbf80ef          	jal	ra,e887b84e <my_malloc>
    e8882998:	e008                	sd	a0,0(s0)
    self->spectrum_size = farend->spectrum_size;
    e888299a:	44dc                	lw	a5,12(s1)
    e888299c:	c45c                	sw	a5,12(s0)
    if (memory_fail) {
    e888299e:	00090363          	beqz	s2,e88829a4 <WebRtc_CreateDelayEstimator+0x4a>
    e88829a2:	f179                	bnez	a0,e8882968 <WebRtc_CreateDelayEstimator+0xe>
      WebRtc_FreeDelayEstimator(self);
    e88829a4:	8522                	mv	a0,s0
    e88829a6:	f89ff0ef          	jal	ra,e888292e <WebRtc_FreeDelayEstimator>
    e88829aa:	bf75                	j	e8882966 <WebRtc_CreateDelayEstimator+0xc>

00000000e88829ac <WebRtc_InitDelayEstimator>:

int WebRtc_InitDelayEstimator(void* handle) {
  DelayEstimator* self = (DelayEstimator*) handle;

  if (self == NULL) {
    e88829ac:	c50d                	beqz	a0,e88829d6 <WebRtc_InitDelayEstimator+0x2a>
int WebRtc_InitDelayEstimator(void* handle) {
    e88829ae:	1141                	addi	sp,sp,-16
    e88829b0:	e406                	sd	ra,8(sp)
    e88829b2:	e022                	sd	s0,0(sp)
    e88829b4:	842a                	mv	s0,a0
    return -1;
  }

  // Initialize binary delay estimator.
  WebRtc_InitBinaryDelayEstimator(self->binary_handle);
    e88829b6:	6908                	ld	a0,16(a0)
    e88829b8:	105000ef          	jal	ra,e88832bc <WebRtc_InitBinaryDelayEstimator>

  // Set averaged far and near end spectra to zero.
  memset(self->mean_near_spectrum, 0,
         sizeof(SpectrumType) * self->spectrum_size);
    e88829bc:	4450                	lw	a2,12(s0)
  memset(self->mean_near_spectrum, 0,
    e88829be:	6008                	ld	a0,0(s0)
    e88829c0:	4581                	li	a1,0
    e88829c2:	060a                	slli	a2,a2,0x2
    e88829c4:	9d1f90ef          	jal	ra,e887c394 <eLIBs_memset>
  // Reset initialization indicators.
  self->near_spectrum_initialized = 0;
    e88829c8:	00042423          	sw	zero,8(s0)

  return 0;
}
    e88829cc:	60a2                	ld	ra,8(sp)
    e88829ce:	6402                	ld	s0,0(sp)
  return 0;
    e88829d0:	4501                	li	a0,0
}
    e88829d2:	0141                	addi	sp,sp,16
    e88829d4:	8082                	ret
    return -1;
    e88829d6:	557d                	li	a0,-1
}
    e88829d8:	8082                	ret

00000000e88829da <WebRtc_DelayEstimatorProcessFix>:
                                    int spectrum_size,
                                    int near_q) {
  DelayEstimator* self = (DelayEstimator*) handle;
  uint32_t binary_spectrum = 0;

  if (self == NULL) {
    e88829da:	c121                	beqz	a0,e8882a1a <WebRtc_DelayEstimatorProcessFix+0x40>
    return -1;
  }
  if (near_spectrum == NULL) {
    e88829dc:	cd9d                	beqz	a1,e8882a1a <WebRtc_DelayEstimatorProcessFix+0x40>
                                    int near_q) {
    e88829de:	1141                	addi	sp,sp,-16
    e88829e0:	e022                	sd	s0,0(sp)
    e88829e2:	e406                	sd	ra,8(sp)
    // Empty near end spectrum.
    return -1;
  }
  if (spectrum_size != self->spectrum_size) {
    e88829e4:	4558                	lw	a4,12(a0)
    e88829e6:	842a                	mv	s0,a0
    e88829e8:	02c71463          	bne	a4,a2,e8882a10 <WebRtc_DelayEstimatorProcessFix+0x36>
    // Data sizes don't match.
    return -1;
  }
  if (near_q > 15) {
    e88829ec:	473d                	li	a4,15
    e88829ee:	02d74163          	blt	a4,a3,e8882a10 <WebRtc_DelayEstimatorProcessFix+0x36>
    e88829f2:	8636                	mv	a2,a3
    // If |near_q| is larger than 15 we cannot guarantee no wrap around.
    return -1;
  }

  // Get binary spectra.
  binary_spectrum = BinarySpectrumFix(near_spectrum,
    e88829f4:	86a2                	mv	a3,s0
    e88829f6:	852e                	mv	a0,a1
    e88829f8:	7886c58b          	ldia	a1,(a3),8,0
    e88829fc:	d79ff0ef          	jal	ra,e8882774 <BinarySpectrumFix>
                                      self->mean_near_spectrum,
                                      near_q,
                                      &(self->near_spectrum_initialized));

  return WebRtc_ProcessBinarySpectrum(self->binary_handle, binary_spectrum);
    e8882a00:	0005059b          	sext.w	a1,a0
    e8882a04:	6808                	ld	a0,16(s0)
}
    e8882a06:	6402                	ld	s0,0(sp)
    e8882a08:	60a2                	ld	ra,8(sp)
    e8882a0a:	0141                	addi	sp,sp,16
  return WebRtc_ProcessBinarySpectrum(self->binary_handle, binary_spectrum);
    e8882a0c:	1670006f          	j	e8883372 <WebRtc_ProcessBinarySpectrum>
}
    e8882a10:	60a2                	ld	ra,8(sp)
    e8882a12:	6402                	ld	s0,0(sp)
    e8882a14:	557d                	li	a0,-1
    e8882a16:	0141                	addi	sp,sp,16
    e8882a18:	8082                	ret
    e8882a1a:	557d                	li	a0,-1
    e8882a1c:	8082                	ret

00000000e8882a1e <WebRtcSpl_CrossCorrelationC>:
                                 int16_t dim_cross_correlation,
                                 int16_t right_shifts,
                                 int16_t step_seq2) {
  int i = 0, j = 0;

  for (i = 0; i < dim_cross_correlation; i++) {
    e8882a1e:	4e01                	li	t3,0
    e8882a20:	00ee4363          	blt	t3,a4,e8882a26 <WebRtcSpl_CrossCorrelationC+0x8>
    for (j = 0; j < dim_seq; j++) {
      *cross_correlation += (seq1[j] * seq2[step_seq2 * i + j]) >> right_shifts;
    }
    cross_correlation++;
  }
}
    e8882a24:	8082                	ret
    *cross_correlation = 0;
    e8882a26:	03c80ebb          	mulw	t4,a6,t3
    e8882a2a:	00052023          	sw	zero,0(a0)
    for (j = 0; j < dim_seq; j++) {
    e8882a2e:	4881                	li	a7,0
    e8882a30:	03d61e8b          	addsl	t4,a2,t4,1
    e8882a34:	0008831b          	sext.w	t1,a7
    e8882a38:	00d34563          	blt	t1,a3,e8882a42 <WebRtcSpl_CrossCorrelationC+0x24>
    cross_correlation++;
    e8882a3c:	0511                	addi	a0,a0,4
  for (i = 0; i < dim_cross_correlation; i++) {
    e8882a3e:	2e05                	addiw	t3,t3,1
    e8882a40:	b7c5                	j	e8882a20 <WebRtcSpl_CrossCorrelationC+0x2>
      *cross_correlation += (seq1[j] * seq2[step_seq2 * i + j]) >> right_shifts;
    e8882a42:	231ecf0b          	lrh	t5,t4,a7,1
    e8882a46:	2315c30b          	lrh	t1,a1,a7,1
    e8882a4a:	0885                	addi	a7,a7,1
    e8882a4c:	03e3033b          	mulw	t1,t1,t5
    e8882a50:	00052f03          	lw	t5,0(a0)
    e8882a54:	40f3533b          	sraw	t1,t1,a5
    e8882a58:	006f033b          	addw	t1,t5,t1
    e8882a5c:	00652023          	sw	t1,0(a0)
    for (j = 0; j < dim_seq; j++) {
    e8882a60:	bfd1                	j	e8882a34 <WebRtcSpl_CrossCorrelationC+0x16>

00000000e8882a62 <WebRtcSpl_DownsampleFastC>:
                              int factor,
                              int delay) {
  int i = 0;
  int j = 0;
  int32_t out_s32 = 0;
  int endpos = delay + factor * (data_out_length - 1) + 1;
    e8882a62:	fff68e1b          	addiw	t3,a3,-1
    e8882a66:	0018831b          	addiw	t1,a7,1
    e8882a6a:	250e130b          	mulaw	t1,t3,a6

  // Return error if any of the running conditions doesn't meet.
  if (data_out_length <= 0 || coefficients_length <= 0
    e8882a6e:	06d05163          	blez	a3,e8882ad0 <WebRtcSpl_DownsampleFastC+0x6e>
                           || data_in_length < endpos) {
    return -1;
    e8882a72:	56fd                	li	a3,-1
  if (data_out_length <= 0 || coefficients_length <= 0
    e8882a74:	00f05e63          	blez	a5,e8882a90 <WebRtcSpl_DownsampleFastC+0x2e>
                           || data_in_length < endpos) {
    e8882a78:	0065cc63          	blt	a1,t1,e8882a90 <WebRtcSpl_DownsampleFastC+0x2e>
  }

  for (i = delay; i < endpos; i += factor) {
    out_s32 = 2048;  // Round value, 0.5 in Q12.
    e8882a7c:	6e05                	lui	t3,0x1
  if (value32 > 32767)
    e8882a7e:	6ea1                	lui	t4,0x8
    e8882a80:	800e0e13          	addi	t3,t3,-2048 # 800 <memcmp-0xe87ff800>
    out16 = 32767;
    e8882a84:	fffe8f13          	addi	t5,t4,-1 # 7fff <memcmp-0xe87f8001>
  else if (value32 < -32768)
    e8882a88:	7fe1                	lui	t6,0xffff8
  for (i = delay; i < endpos; i += factor) {
    e8882a8a:	0068c563          	blt	a7,t1,e8882a94 <WebRtcSpl_DownsampleFastC+0x32>

    // Saturate and store the output.
    *data_out++ = WebRtcSpl_SatW32ToW16(out_s32);
  }

  return 0;
    e8882a8e:	4681                	li	a3,0
}
    e8882a90:	8536                	mv	a0,a3
    e8882a92:	8082                	ret
    e8882a94:	4581                	li	a1,0
    out_s32 = 2048;  // Round value, 0.5 in Q12.
    e8882a96:	86f2                	mv	a3,t3
      out_s32 += coefficients[j] * data_in[i - j];  // Q12.
    e8882a98:	40b882bb          	subw	t0,a7,a1
    e8882a9c:	a2b7438b          	lrhu	t2,a4,a1,1
    e8882aa0:	a255428b          	lrhu	t0,a0,t0,1
    e8882aa4:	0585                	addi	a1,a1,1
    e8882aa6:	2853968b          	mulah	a3,t2,t0
    for (j = 0; j < coefficients_length; j++) {
    e8882aaa:	0005829b          	sext.w	t0,a1
    e8882aae:	fef2c5e3          	blt	t0,a5,e8882a98 <WebRtcSpl_DownsampleFastC+0x36>
    out_s32 >>= 12;  // Q0.
    e8882ab2:	86b1                	srai	a3,a3,0xc
    *data_out++ = WebRtcSpl_SatW32ToW16(out_s32);
    e8882ab4:	0609                	addi	a2,a2,2
    out16 = 32767;
    e8882ab6:	85fa                	mv	a1,t5
  if (value32 > 32767)
    e8882ab8:	01d6d763          	bge	a3,t4,e8882ac6 <WebRtcSpl_DownsampleFastC+0x64>
    out16 = -32768;
    e8882abc:	75e1                	lui	a1,0xffff8
  else if (value32 < -32768)
    e8882abe:	01f6c463          	blt	a3,t6,e8882ac6 <WebRtcSpl_DownsampleFastC+0x64>
  int16_t out16 = (int16_t) value32;
    e8882ac2:	3c06a58b          	ext	a1,a3,15,0
    e8882ac6:	feb61f23          	sh	a1,-2(a2) # ffffffffffff7ffe <__DRAM0_INF_BASE+0xffffffff00007ffe>
  for (i = delay; i < endpos; i += factor) {
    e8882aca:	010888bb          	addw	a7,a7,a6
    e8882ace:	bf75                	j	e8882a8a <WebRtcSpl_DownsampleFastC+0x28>
    return -1;
    e8882ad0:	56fd                	li	a3,-1
    e8882ad2:	bf7d                	j	e8882a90 <WebRtcSpl_DownsampleFastC+0x2e>

00000000e8882ad4 <WebRtcSpl_MaxAbsValueW16C>:
// TODO(bjorn/kma): Consolidate function pairs (e.g. combine
//   WebRtcSpl_MaxAbsValueW16C and WebRtcSpl_MaxAbsIndexW16 into a single one.)
// TODO(kma): Move the next six functions into min_max_operations_c.c.

// Maximum absolute value of word16 vector. C version for generic platforms.
int16_t WebRtcSpl_MaxAbsValueW16C(const int16_t* vector, int length) {
    e8882ad4:	1101                	addi	sp,sp,-32
    e8882ad6:	e422                	sd	s0,8(sp)
    e8882ad8:	e826                	sd	s1,16(sp)
    e8882ada:	ec06                	sd	ra,24(sp)
    e8882adc:	84aa                	mv	s1,a0
    e8882ade:	842e                	mv	s0,a1
  size_t i = 0;
  int absolute = 0, maximum = 0;

  assert(length > 0);
    e8882ae0:	02b04463          	bgtz	a1,e8882b08 <WebRtcSpl_MaxAbsValueW16C+0x34>
    e8882ae4:	02f00593          	li	a1,47
    e8882ae8:	0004c517          	auipc	a0,0x4c
    e8882aec:	89850513          	addi	a0,a0,-1896 # e88ce380 <WebRtcAecm_kSqrtHanning+0x140>
    e8882af0:	889f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8882af4:	00150593          	addi	a1,a0,1
    e8882af8:	02900613          	li	a2,41
    e8882afc:	0001d517          	auipc	a0,0x1d
    e8882b00:	6b450513          	addi	a0,a0,1716 # e88a01b0 <TWO52+0x5b8>
    e8882b04:	fc2f90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  int absolute = 0, maximum = 0;
    e8882b08:	4501                	li	a0,0

  for (i = 0; i < length; i++) {
    e8882b0a:	4701                	li	a4,0
    e8882b0c:	00876d63          	bltu	a4,s0,e8882b26 <WebRtcSpl_MaxAbsValueW16C+0x52>
      maximum = absolute;
    }
  }

  // Guard the case for abs(-32768).
  if (maximum > WEBRTC_SPL_WORD16_MAX) {
    e8882b10:	67a1                	lui	a5,0x8
    e8882b12:	00f51363          	bne	a0,a5,e8882b18 <WebRtcSpl_MaxAbsValueW16C+0x44>
    maximum = WEBRTC_SPL_WORD16_MAX;
    e8882b16:	157d                	addi	a0,a0,-1
  }

  return (int16_t)maximum;
}
    e8882b18:	60e2                	ld	ra,24(sp)
    e8882b1a:	6422                	ld	s0,8(sp)
    e8882b1c:	64c2                	ld	s1,16(sp)
    e8882b1e:	3c05250b          	ext	a0,a0,15,0
    e8882b22:	6105                	addi	sp,sp,32
    e8882b24:	8082                	ret
    absolute = abs((int)vector[i]);
    e8882b26:	22e4c78b          	lrh	a5,s1,a4,1
  for (i = 0; i < length; i++) {
    e8882b2a:	0705                	addi	a4,a4,1
    absolute = abs((int)vector[i]);
    e8882b2c:	41f7d69b          	sraiw	a3,a5,0x1f
    e8882b30:	8fb5                	xor	a5,a5,a3
    e8882b32:	40d786bb          	subw	a3,a5,a3
    e8882b36:	87b6                	mv	a5,a3
    e8882b38:	00a6a6b3          	slt	a3,a3,a0
    e8882b3c:	42d5178b          	mvnez	a5,a0,a3
    e8882b40:	0007851b          	sext.w	a0,a5
  for (i = 0; i < length; i++) {
    e8882b44:	b7e1                	j	e8882b0c <WebRtcSpl_MaxAbsValueW16C+0x38>

00000000e8882b46 <WebRtcSpl_MaxAbsValueW32C>:

// Maximum absolute value of word32 vector. C version for generic platforms.
int32_t WebRtcSpl_MaxAbsValueW32C(const int32_t* vector, int length) {
    e8882b46:	1101                	addi	sp,sp,-32
    e8882b48:	e422                	sd	s0,8(sp)
    e8882b4a:	e826                	sd	s1,16(sp)
    e8882b4c:	ec06                	sd	ra,24(sp)
    e8882b4e:	84aa                	mv	s1,a0
    e8882b50:	842e                	mv	s0,a1
  // of abs(0x80000000), which is 0x80000000.

  uint32_t absolute = 0, maximum = 0;
  size_t i = 0;

  assert(length > 0);
    e8882b52:	02b04463          	bgtz	a1,e8882b7a <WebRtcSpl_MaxAbsValueW32C+0x34>
    e8882b56:	02f00593          	li	a1,47
    e8882b5a:	0004c517          	auipc	a0,0x4c
    e8882b5e:	82650513          	addi	a0,a0,-2010 # e88ce380 <WebRtcAecm_kSqrtHanning+0x140>
    e8882b62:	817f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8882b66:	00150593          	addi	a1,a0,1
    e8882b6a:	04300613          	li	a2,67
    e8882b6e:	0001d517          	auipc	a0,0x1d
    e8882b72:	64250513          	addi	a0,a0,1602 # e88a01b0 <TWO52+0x5b8>
    e8882b76:	f50f90ef          	jal	ra,e887c2c6 <eLIBs_printf>

  for (i = 0; i < length; i++) {
    e8882b7a:	4701                	li	a4,0
  uint32_t absolute = 0, maximum = 0;
    e8882b7c:	4501                	li	a0,0
  for (i = 0; i < length; i++) {
    e8882b7e:	02876063          	bltu	a4,s0,e8882b9e <WebRtcSpl_MaxAbsValueW32C+0x58>
    if (absolute > maximum) {
      maximum = absolute;
    }
  }

  maximum = WEBRTC_SPL_MIN(maximum, WEBRTC_SPL_WORD32_MAX);
    e8882b82:	800007b7          	lui	a5,0x80000
    e8882b86:	fff7c793          	not	a5,a5

  return (int32_t)maximum;
}
    e8882b8a:	60e2                	ld	ra,24(sp)
    e8882b8c:	6422                	ld	s0,8(sp)
  maximum = WEBRTC_SPL_MIN(maximum, WEBRTC_SPL_WORD32_MAX);
    e8882b8e:	00a7b733          	sltu	a4,a5,a0
    e8882b92:	42e7950b          	mvnez	a0,a5,a4
}
    e8882b96:	64c2                	ld	s1,16(sp)
    e8882b98:	2501                	sext.w	a0,a0
    e8882b9a:	6105                	addi	sp,sp,32
    e8882b9c:	8082                	ret
    absolute = abs((int)vector[i]);
    e8882b9e:	44e4c78b          	lrw	a5,s1,a4,2
  for (i = 0; i < length; i++) {
    e8882ba2:	0705                	addi	a4,a4,1
    absolute = abs((int)vector[i]);
    e8882ba4:	41f7d69b          	sraiw	a3,a5,0x1f
    e8882ba8:	8fb5                	xor	a5,a5,a3
    e8882baa:	40d786bb          	subw	a3,a5,a3
    e8882bae:	87b6                	mv	a5,a3
    e8882bb0:	00a6b6b3          	sltu	a3,a3,a0
    e8882bb4:	42d5178b          	mvnez	a5,a0,a3
    e8882bb8:	0007851b          	sext.w	a0,a5
  for (i = 0; i < length; i++) {
    e8882bbc:	b7c9                	j	e8882b7e <WebRtcSpl_MaxAbsValueW32C+0x38>

00000000e8882bbe <WebRtcSpl_MaxValueW16C>:

// Maximum value of word16 vector. C version for generic platforms.
int16_t WebRtcSpl_MaxValueW16C(const int16_t* vector, int length) {
    e8882bbe:	1101                	addi	sp,sp,-32
    e8882bc0:	e422                	sd	s0,8(sp)
    e8882bc2:	e826                	sd	s1,16(sp)
    e8882bc4:	ec06                	sd	ra,24(sp)
    e8882bc6:	84aa                	mv	s1,a0
    e8882bc8:	842e                	mv	s0,a1
  int16_t maximum = WEBRTC_SPL_WORD16_MIN;
  size_t i = 0;

  assert(length > 0);
    e8882bca:	02b04463          	bgtz	a1,e8882bf2 <WebRtcSpl_MaxValueW16C+0x34>
    e8882bce:	02f00593          	li	a1,47
    e8882bd2:	0004b517          	auipc	a0,0x4b
    e8882bd6:	7ae50513          	addi	a0,a0,1966 # e88ce380 <WebRtcAecm_kSqrtHanning+0x140>
    e8882bda:	f9ef90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8882bde:	00150593          	addi	a1,a0,1
    e8882be2:	05600613          	li	a2,86
    e8882be6:	0001d517          	auipc	a0,0x1d
    e8882bea:	5ca50513          	addi	a0,a0,1482 # e88a01b0 <TWO52+0x5b8>
    e8882bee:	ed8f90ef          	jal	ra,e887c2c6 <eLIBs_printf>

  for (i = 0; i < length; i++) {
    e8882bf2:	4781                	li	a5,0
  int16_t maximum = WEBRTC_SPL_WORD16_MIN;
    e8882bf4:	7561                	lui	a0,0xffff8
  for (i = 0; i < length; i++) {
    e8882bf6:	0087e763          	bltu	a5,s0,e8882c04 <WebRtcSpl_MaxValueW16C+0x46>
    if (vector[i] > maximum)
      maximum = vector[i];
  }
  return maximum;
}
    e8882bfa:	60e2                	ld	ra,24(sp)
    e8882bfc:	6422                	ld	s0,8(sp)
    e8882bfe:	64c2                	ld	s1,16(sp)
    e8882c00:	6105                	addi	sp,sp,32
    e8882c02:	8082                	ret
    if (vector[i] > maximum)
    e8882c04:	a2f4c70b          	lrhu	a4,s1,a5,1
    e8882c08:	3c07268b          	ext	a3,a4,15,0
    e8882c0c:	00a6d363          	bge	a3,a0,e8882c12 <WebRtcSpl_MaxValueW16C+0x54>
    e8882c10:	872a                	mv	a4,a0
    e8882c12:	3c07250b          	ext	a0,a4,15,0
  for (i = 0; i < length; i++) {
    e8882c16:	0785                	addi	a5,a5,1
    e8882c18:	bff9                	j	e8882bf6 <WebRtcSpl_MaxValueW16C+0x38>

00000000e8882c1a <WebRtcSpl_MaxValueW32C>:

// Maximum value of word32 vector. C version for generic platforms.
int32_t WebRtcSpl_MaxValueW32C(const int32_t* vector, int length) {
    e8882c1a:	1101                	addi	sp,sp,-32
    e8882c1c:	e422                	sd	s0,8(sp)
    e8882c1e:	e826                	sd	s1,16(sp)
    e8882c20:	ec06                	sd	ra,24(sp)
    e8882c22:	84aa                	mv	s1,a0
    e8882c24:	842e                	mv	s0,a1
  int32_t maximum = WEBRTC_SPL_WORD32_MIN;
  size_t i = 0;

  assert(length > 0);
    e8882c26:	02b04463          	bgtz	a1,e8882c4e <WebRtcSpl_MaxValueW32C+0x34>
    e8882c2a:	02f00593          	li	a1,47
    e8882c2e:	0004b517          	auipc	a0,0x4b
    e8882c32:	75250513          	addi	a0,a0,1874 # e88ce380 <WebRtcAecm_kSqrtHanning+0x140>
    e8882c36:	f42f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8882c3a:	00150593          	addi	a1,a0,1
    e8882c3e:	06400613          	li	a2,100
    e8882c42:	0001d517          	auipc	a0,0x1d
    e8882c46:	56e50513          	addi	a0,a0,1390 # e88a01b0 <TWO52+0x5b8>
    e8882c4a:	e7cf90ef          	jal	ra,e887c2c6 <eLIBs_printf>

  for (i = 0; i < length; i++) {
    e8882c4e:	4781                	li	a5,0
  int32_t maximum = WEBRTC_SPL_WORD32_MIN;
    e8882c50:	80000537          	lui	a0,0x80000
  for (i = 0; i < length; i++) {
    e8882c54:	0087e763          	bltu	a5,s0,e8882c62 <WebRtcSpl_MaxValueW32C+0x48>
    if (vector[i] > maximum)
      maximum = vector[i];
  }
  return maximum;
}
    e8882c58:	60e2                	ld	ra,24(sp)
    e8882c5a:	6422                	ld	s0,8(sp)
    e8882c5c:	64c2                	ld	s1,16(sp)
    e8882c5e:	6105                	addi	sp,sp,32
    e8882c60:	8082                	ret
    if (vector[i] > maximum)
    e8882c62:	44f4c70b          	lrw	a4,s1,a5,2
  for (i = 0; i < length; i++) {
    e8882c66:	0785                	addi	a5,a5,1
    e8882c68:	00a726b3          	slt	a3,a4,a0
    e8882c6c:	42d5170b          	mvnez	a4,a0,a3
    e8882c70:	0007051b          	sext.w	a0,a4
    e8882c74:	b7c5                	j	e8882c54 <WebRtcSpl_MaxValueW32C+0x3a>

00000000e8882c76 <WebRtcSpl_MinValueW16C>:

// Minimum value of word16 vector. C version for generic platforms.
int16_t WebRtcSpl_MinValueW16C(const int16_t* vector, int length) {
    e8882c76:	1101                	addi	sp,sp,-32
    e8882c78:	e422                	sd	s0,8(sp)
    e8882c7a:	e826                	sd	s1,16(sp)
    e8882c7c:	ec06                	sd	ra,24(sp)
    e8882c7e:	84aa                	mv	s1,a0
    e8882c80:	842e                	mv	s0,a1
  int16_t minimum = WEBRTC_SPL_WORD16_MAX;
  size_t i = 0;

  assert(length > 0);
    e8882c82:	02b04463          	bgtz	a1,e8882caa <WebRtcSpl_MinValueW16C+0x34>
    e8882c86:	02f00593          	li	a1,47
    e8882c8a:	0004b517          	auipc	a0,0x4b
    e8882c8e:	6f650513          	addi	a0,a0,1782 # e88ce380 <WebRtcAecm_kSqrtHanning+0x140>
    e8882c92:	ee6f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8882c96:	00150593          	addi	a1,a0,1
    e8882c9a:	07200613          	li	a2,114
    e8882c9e:	0001d517          	auipc	a0,0x1d
    e8882ca2:	51250513          	addi	a0,a0,1298 # e88a01b0 <TWO52+0x5b8>
    e8882ca6:	e20f90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  int16_t minimum = WEBRTC_SPL_WORD16_MAX;
    e8882caa:	6521                	lui	a0,0x8

  for (i = 0; i < length; i++) {
    e8882cac:	4781                	li	a5,0
  int16_t minimum = WEBRTC_SPL_WORD16_MAX;
    e8882cae:	157d                	addi	a0,a0,-1
  for (i = 0; i < length; i++) {
    e8882cb0:	0087e763          	bltu	a5,s0,e8882cbe <WebRtcSpl_MinValueW16C+0x48>
    if (vector[i] < minimum)
      minimum = vector[i];
  }
  return minimum;
}
    e8882cb4:	60e2                	ld	ra,24(sp)
    e8882cb6:	6422                	ld	s0,8(sp)
    e8882cb8:	64c2                	ld	s1,16(sp)
    e8882cba:	6105                	addi	sp,sp,32
    e8882cbc:	8082                	ret
    if (vector[i] < minimum)
    e8882cbe:	a2f4c70b          	lrhu	a4,s1,a5,1
    e8882cc2:	3c07268b          	ext	a3,a4,15,0
    e8882cc6:	00d55363          	bge	a0,a3,e8882ccc <WebRtcSpl_MinValueW16C+0x56>
    e8882cca:	872a                	mv	a4,a0
    e8882ccc:	3c07250b          	ext	a0,a4,15,0
  for (i = 0; i < length; i++) {
    e8882cd0:	0785                	addi	a5,a5,1
    e8882cd2:	bff9                	j	e8882cb0 <WebRtcSpl_MinValueW16C+0x3a>

00000000e8882cd4 <WebRtcSpl_MinValueW32C>:

// Minimum value of word32 vector. C version for generic platforms.
int32_t WebRtcSpl_MinValueW32C(const int32_t* vector, int length) {
    e8882cd4:	1101                	addi	sp,sp,-32
    e8882cd6:	e422                	sd	s0,8(sp)
    e8882cd8:	e826                	sd	s1,16(sp)
    e8882cda:	ec06                	sd	ra,24(sp)
    e8882cdc:	84aa                	mv	s1,a0
    e8882cde:	842e                	mv	s0,a1
  int32_t minimum = WEBRTC_SPL_WORD32_MAX;
  size_t i = 0;

  assert(length > 0);
    e8882ce0:	02b04463          	bgtz	a1,e8882d08 <WebRtcSpl_MinValueW32C+0x34>
    e8882ce4:	02f00593          	li	a1,47
    e8882ce8:	0004b517          	auipc	a0,0x4b
    e8882cec:	69850513          	addi	a0,a0,1688 # e88ce380 <WebRtcAecm_kSqrtHanning+0x140>
    e8882cf0:	e88f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8882cf4:	00150593          	addi	a1,a0,1
    e8882cf8:	08000613          	li	a2,128
    e8882cfc:	0001d517          	auipc	a0,0x1d
    e8882d00:	4b450513          	addi	a0,a0,1204 # e88a01b0 <TWO52+0x5b8>
    e8882d04:	dc2f90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  int32_t minimum = WEBRTC_SPL_WORD32_MAX;
    e8882d08:	80000537          	lui	a0,0x80000

  for (i = 0; i < length; i++) {
    e8882d0c:	4781                	li	a5,0
  int32_t minimum = WEBRTC_SPL_WORD32_MAX;
    e8882d0e:	fff54513          	not	a0,a0
  for (i = 0; i < length; i++) {
    e8882d12:	0087e763          	bltu	a5,s0,e8882d20 <WebRtcSpl_MinValueW32C+0x4c>
    if (vector[i] < minimum)
      minimum = vector[i];
  }
  return minimum;
}
    e8882d16:	60e2                	ld	ra,24(sp)
    e8882d18:	6422                	ld	s0,8(sp)
    e8882d1a:	64c2                	ld	s1,16(sp)
    e8882d1c:	6105                	addi	sp,sp,32
    e8882d1e:	8082                	ret
    if (vector[i] < minimum)
    e8882d20:	44f4c70b          	lrw	a4,s1,a5,2
  for (i = 0; i < length; i++) {
    e8882d24:	0785                	addi	a5,a5,1
    e8882d26:	00e526b3          	slt	a3,a0,a4
    e8882d2a:	42d5170b          	mvnez	a4,a0,a3
    e8882d2e:	0007051b          	sext.w	a0,a4
    e8882d32:	b7c5                	j	e8882d12 <WebRtcSpl_MinValueW32C+0x3e>

00000000e8882d34 <WebRtcSpl_IncreaseSeed>:
    2374,    -5797,    11839,     8940,   -11874,    18213,     2855,    10492
};

uint32_t WebRtcSpl_IncreaseSeed(uint32_t *seed)
{
    seed[0] = (seed[0] * ((int32_t)69069) + 1) & (WEBRTC_SPL_MAX_SEED_USED - 1);
    e8882d34:	411c                	lw	a5,0(a0)
    e8882d36:	6745                	lui	a4,0x11
    e8882d38:	dcd7071b          	addiw	a4,a4,-563
    e8882d3c:	02e787bb          	mulw	a5,a5,a4
    e8882d40:	2785                	addiw	a5,a5,1
    e8882d42:	7807b78b          	extu	a5,a5,30,0
    e8882d46:	2781                	sext.w	a5,a5
    e8882d48:	c11c                	sw	a5,0(a0)
    return seed[0];
}
    e8882d4a:	853e                	mv	a0,a5
    e8882d4c:	8082                	ret

00000000e8882d4e <WebRtcSpl_RandU>:

int16_t WebRtcSpl_RandU(uint32_t *seed)
{
    e8882d4e:	1141                	addi	sp,sp,-16
    e8882d50:	e406                	sd	ra,8(sp)
    return (int16_t)(WebRtcSpl_IncreaseSeed(seed) >> 16);
    e8882d52:	fe3ff0ef          	jal	ra,e8882d34 <WebRtcSpl_IncreaseSeed>
}
    e8882d56:	7d05250b          	ext	a0,a0,31,16
    e8882d5a:	60a2                	ld	ra,8(sp)
    e8882d5c:	0141                	addi	sp,sp,16
    e8882d5e:	8082                	ret

00000000e8882d60 <WebRtcSpl_RandUArray>:

// Creates an array of uniformly distributed variables
int16_t WebRtcSpl_RandUArray(int16_t* vector,
                             int16_t vector_length,
                             uint32_t* seed)
{
    e8882d60:	7179                	addi	sp,sp,-48
    e8882d62:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8882d66:	f04a                	sd	s2,32(sp)
    e8882d68:	f406                	sd	ra,40(sp)
    e8882d6a:	892a                	mv	s2,a0
    int i;
    for (i = 0; i < vector_length; i++)
    e8882d6c:	4401                	li	s0,0
    e8882d6e:	0005849b          	sext.w	s1,a1
    e8882d72:	0004079b          	sext.w	a5,s0
    e8882d76:	0097c963          	blt	a5,s1,e8882d88 <WebRtcSpl_RandUArray+0x28>
    {
        vector[i] = WebRtcSpl_RandU(seed);
    }
    return vector_length;
}
    e8882d7a:	70a2                	ld	ra,40(sp)
    e8882d7c:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8882d80:	7902                	ld	s2,32(sp)
    e8882d82:	852e                	mv	a0,a1
    e8882d84:	6145                	addi	sp,sp,48
    e8882d86:	8082                	ret
        vector[i] = WebRtcSpl_RandU(seed);
    e8882d88:	8532                	mv	a0,a2
    e8882d8a:	e42e                	sd	a1,8(sp)
    e8882d8c:	e032                	sd	a2,0(sp)
    e8882d8e:	fc1ff0ef          	jal	ra,e8882d4e <WebRtcSpl_RandU>
    e8882d92:	2289550b          	srh	a0,s2,s0,1
    for (i = 0; i < vector_length; i++)
    e8882d96:	65a2                	ld	a1,8(sp)
    e8882d98:	0405                	addi	s0,s0,1
    e8882d9a:	6602                	ld	a2,0(sp)
    e8882d9c:	bfd9                	j	e8882d72 <WebRtcSpl_RandUArray+0x12>

00000000e8882d9e <WebRtcSpl_CreateRealFFTC>:
};

struct RealFFT* WebRtcSpl_CreateRealFFTC(int order) {
  struct RealFFT* self = NULL;

  if (order > kMaxFFTOrder || order < 0) {
    e8882d9e:	47a9                	li	a5,10
    e8882da0:	00a7ef63          	bltu	a5,a0,e8882dbe <WebRtcSpl_CreateRealFFTC+0x20>
struct RealFFT* WebRtcSpl_CreateRealFFTC(int order) {
    e8882da4:	1141                	addi	sp,sp,-16
    e8882da6:	e022                	sd	s0,0(sp)
    e8882da8:	842a                	mv	s0,a0
    return NULL;
  }

  self = malloc(sizeof(struct RealFFT));
    e8882daa:	4511                	li	a0,4
struct RealFFT* WebRtcSpl_CreateRealFFTC(int order) {
    e8882dac:	e406                	sd	ra,8(sp)
  self = malloc(sizeof(struct RealFFT));
    e8882dae:	aa1f80ef          	jal	ra,e887b84e <my_malloc>
  if (self == NULL) {
    e8882db2:	c111                	beqz	a0,e8882db6 <WebRtcSpl_CreateRealFFTC+0x18>
    return NULL;
  }
  self->order = order;
    e8882db4:	c100                	sw	s0,0(a0)

  return self;
}
    e8882db6:	60a2                	ld	ra,8(sp)
    e8882db8:	6402                	ld	s0,0(sp)
    e8882dba:	0141                	addi	sp,sp,16
    e8882dbc:	8082                	ret
    return NULL;
    e8882dbe:	4501                	li	a0,0
}
    e8882dc0:	8082                	ret

00000000e8882dc2 <WebRtcSpl_FreeRealFFTC>:

void WebRtcSpl_FreeRealFFTC(struct RealFFT* self) {
  if (self != NULL) {
    e8882dc2:	c119                	beqz	a0,e8882dc8 <WebRtcSpl_FreeRealFFTC+0x6>
    free(self);
    e8882dc4:	d3cf906f          	j	e887c300 <eLIBs_free>
  }
}
    e8882dc8:	8082                	ret

00000000e8882dca <WebRtcSpl_RealForwardFFTC>:
// WebRtcSpl_RealInverseFFTC) are real-valued FFT wrappers for complex-valued
// FFT implementation in SPL.

int WebRtcSpl_RealForwardFFTC(struct RealFFT* self,
                              const int16_t* real_data_in,
                              int16_t* complex_data_out) {
    e8882dca:	7179                	addi	sp,sp,-48
    e8882dcc:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8882dd0:	737d                	lui	t1,0xfffff
    e8882dd2:	f04a                	sd	s2,32(sp)
    e8882dd4:	f406                	sd	ra,40(sp)
    e8882dd6:	911a                	add	sp,sp,t1
  int i = 0;
  int j = 0;
  int result = 0;
  int n = 1 << self->order;
    e8882dd8:	4114                	lw	a3,0(a0)
                              int16_t* complex_data_out) {
    e8882dda:	8932                	mv	s2,a2
    e8882ddc:	6705                	lui	a4,0x1
    e8882dde:	0810                	addi	a2,sp,16
  int n = 1 << self->order;
    e8882de0:	4405                	li	s0,1
    e8882de2:	9732                	add	a4,a4,a2
                              int16_t* complex_data_out) {
    e8882de4:	84aa                	mv	s1,a0
    e8882de6:	77fd                	lui	a5,0xfffff
  int n = 1 << self->order;
    e8882de8:	00d4153b          	sllw	a0,s0,a3
    e8882dec:	97ba                	add	a5,a5,a4
    e8882dee:	842a                	mv	s0,a0
  // The complex-value FFT implementation needs a buffer to hold 2^order
  // 16-bit COMPLEX numbers, for both time and frequency data.
  int16_t complex_buffer[2 << kMaxFFTOrder];

  // Insert zeros to the imaginary parts for complex forward FFT input.
  for (i = 0, j = 0; i < n; i += 1, j += 2) {
    e8882df0:	4701                	li	a4,0
    e8882df2:	0007061b          	sext.w	a2,a4
    e8882df6:	04a64263          	blt	a2,a0,e8882e3a <WebRtcSpl_RealForwardFFTC+0x70>
    complex_buffer[j] = real_data_in[i];
    complex_buffer[j + 1] = 0;
  };

  WebRtcSpl_ComplexBitReverse(complex_buffer, self->order);
    e8882dfa:	0810                	addi	a2,sp,16
    e8882dfc:	6705                	lui	a4,0x1
    e8882dfe:	9732                	add	a4,a4,a2
    e8882e00:	77fd                	lui	a5,0xfffff
    e8882e02:	97ba                	add	a5,a5,a4
    e8882e04:	85b6                	mv	a1,a3
    e8882e06:	853e                	mv	a0,a5
    e8882e08:	e43e                	sd	a5,8(sp)
    e8882e0a:	0c7000ef          	jal	ra,e88836d0 <WebRtcSpl_ComplexBitReverse>
  result = WebRtcSpl_ComplexFFT(complex_buffer, self->order, 1);
    e8882e0e:	408c                	lw	a1,0(s1)
    e8882e10:	6522                	ld	a0,8(sp)
    e8882e12:	4605                	li	a2,1
    e8882e14:	153000ef          	jal	ra,e8883766 <WebRtcSpl_ComplexFFT>
    e8882e18:	84aa                	mv	s1,a0

  // For real FFT output, use only the first N + 2 elements from
  // complex forward FFT.
  memcpy(complex_data_out, complex_buffer, sizeof(int16_t) * (n + 2));
    e8882e1a:	65a2                	ld	a1,8(sp)
    e8882e1c:	0024061b          	addiw	a2,s0,2
    e8882e20:	854a                	mv	a0,s2
    e8882e22:	0606                	slli	a2,a2,0x1
    e8882e24:	d7cf90ef          	jal	ra,e887c3a0 <eLIBs_memcpy>

  return result;
}
    e8882e28:	6305                	lui	t1,0x1
    e8882e2a:	911a                	add	sp,sp,t1
    e8882e2c:	70a2                	ld	ra,40(sp)
    e8882e2e:	8526                	mv	a0,s1
    e8882e30:	7902                	ld	s2,32(sp)
    e8882e32:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8882e36:	6145                	addi	sp,sp,48
    e8882e38:	8082                	ret
    complex_buffer[j] = real_data_in[i];
    e8882e3a:	a2e5c60b          	lrhu	a2,a1,a4,1
    complex_buffer[j + 1] = 0;
    e8882e3e:	00079123          	sh	zero,2(a5) # fffffffffffff002 <__DRAM0_INF_BASE+0xffffffff0000f002>
    e8882e42:	0705                	addi	a4,a4,1
    complex_buffer[j] = real_data_in[i];
    e8882e44:	00c79023          	sh	a2,0(a5)
  for (i = 0, j = 0; i < n; i += 1, j += 2) {
    e8882e48:	0791                	addi	a5,a5,4
    e8882e4a:	b765                	j	e8882df2 <WebRtcSpl_RealForwardFFTC+0x28>

00000000e8882e4c <WebRtcSpl_RealInverseFFTC>:

int WebRtcSpl_RealInverseFFTC(struct RealFFT* self,
                              const int16_t* complex_data_in,
                              int16_t* real_data_out) {
    e8882e4c:	715d                	addi	sp,sp,-80
    e8882e4e:	e0a2                	sd	s0,64(sp)
    e8882e50:	fc26                	sd	s1,56(sp)
    e8882e52:	f84a                	sd	s2,48(sp)
    e8882e54:	f44e                	sd	s3,40(sp)
    e8882e56:	f052                	sd	s4,32(sp)
    e8882e58:	ec56                	sd	s5,24(sp)
    e8882e5a:	e486                	sd	ra,72(sp)
    e8882e5c:	e85a                	sd	s6,16(sp)
    e8882e5e:	737d                	lui	t1,0xfffff
  int i = 0;
  int j = 0;
  int result = 0;
  int n = 1 << self->order;
    e8882e60:	00052b03          	lw	s6,0(a0) # ffffffff80000000 <__DRAM0_INF_BASE+0xfffffffe80010000>
                              int16_t* real_data_out) {
    e8882e64:	0341                	addi	t1,t1,16
    e8882e66:	911a                	add	sp,sp,t1
  int n = 1 << self->order;
    e8882e68:	4405                	li	s0,1
  int16_t complex_buffer[2 << kMaxFFTOrder];

  // For n-point FFT, first copy the first n + 2 elements into complex
  // FFT, then construct the remaining n - 2 elements by real FFT's
  // conjugate-symmetric properties.
  memcpy(complex_buffer, complex_data_in, sizeof(int16_t) * (n + 2));
    e8882e6a:	6785                	lui	a5,0x1
    e8882e6c:	978a                	add	a5,a5,sp
  int n = 1 << self->order;
    e8882e6e:	016419bb          	sllw	s3,s0,s6
  memcpy(complex_buffer, complex_data_in, sizeof(int16_t) * (n + 2));
    e8882e72:	74fd                	lui	s1,0xfffff
    e8882e74:	94be                	add	s1,s1,a5
    e8882e76:	0029841b          	addiw	s0,s3,2
                              int16_t* real_data_out) {
    e8882e7a:	8a2a                	mv	s4,a0
    e8882e7c:	8932                	mv	s2,a2
  memcpy(complex_buffer, complex_data_in, sizeof(int16_t) * (n + 2));
    e8882e7e:	8526                	mv	a0,s1
    e8882e80:	00141613          	slli	a2,s0,0x1
                              int16_t* real_data_out) {
    e8882e84:	8aae                	mv	s5,a1
  memcpy(complex_buffer, complex_data_in, sizeof(int16_t) * (n + 2));
    e8882e86:	d1af90ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  for (i = n + 2; i < 2 * n; i += 2) {
    e8882e8a:	4789                	li	a5,2
    e8882e8c:	016797bb          	sllw	a5,a5,s6
    e8882e90:	04f44363          	blt	s0,a5,e8882ed6 <WebRtcSpl_RealInverseFFTC+0x8a>
    complex_buffer[i] = complex_data_in[2 * n - i];
    complex_buffer[i + 1] = -complex_data_in[2 * n - i + 1];
  }

  WebRtcSpl_ComplexBitReverse(complex_buffer, self->order);
    e8882e94:	6785                	lui	a5,0x1
    e8882e96:	978a                	add	a5,a5,sp
    e8882e98:	000a2583          	lw	a1,0(s4)
    e8882e9c:	747d                	lui	s0,0xfffff
    e8882e9e:	943e                	add	s0,s0,a5
    e8882ea0:	8522                	mv	a0,s0
    e8882ea2:	02f000ef          	jal	ra,e88836d0 <WebRtcSpl_ComplexBitReverse>
  result = WebRtcSpl_ComplexIFFT(complex_buffer, self->order, 1);
    e8882ea6:	000a2583          	lw	a1,0(s4)
    e8882eaa:	4605                	li	a2,1
    e8882eac:	8522                	mv	a0,s0
    e8882eae:	273000ef          	jal	ra,e8883920 <WebRtcSpl_ComplexIFFT>

  // Strip out the imaginary parts of the complex inverse FFT output.
  for (i = 0, j = 0; i < n; i += 1, j += 2) {
    e8882eb2:	4781                	li	a5,0
    e8882eb4:	0007871b          	sext.w	a4,a5
    e8882eb8:	05374163          	blt	a4,s3,e8882efa <WebRtcSpl_RealInverseFFTC+0xae>
    real_data_out[i] = complex_buffer[j];
  }

  return result;
}
    e8882ebc:	6305                	lui	t1,0x1
    e8882ebe:	1341                	addi	t1,t1,-16
    e8882ec0:	911a                	add	sp,sp,t1
    e8882ec2:	60a6                	ld	ra,72(sp)
    e8882ec4:	6406                	ld	s0,64(sp)
    e8882ec6:	74e2                	ld	s1,56(sp)
    e8882ec8:	7942                	ld	s2,48(sp)
    e8882eca:	79a2                	ld	s3,40(sp)
    e8882ecc:	7a02                	ld	s4,32(sp)
    e8882ece:	6ae2                	ld	s5,24(sp)
    e8882ed0:	6b42                	ld	s6,16(sp)
    e8882ed2:	6161                	addi	sp,sp,80
    e8882ed4:	8082                	ret
    complex_buffer[i] = complex_data_in[2 * n - i];
    e8882ed6:	408786bb          	subw	a3,a5,s0
    e8882eda:	a2dac60b          	lrhu	a2,s5,a3,1
    complex_buffer[i + 1] = -complex_data_in[2 * n - i + 1];
    e8882ede:	02da968b          	addsl	a3,s5,a3,1
    e8882ee2:	0026d683          	lhu	a3,2(a3)
    complex_buffer[i] = complex_data_in[2 * n - i];
    e8882ee6:	2284d60b          	srh	a2,s1,s0,1
    complex_buffer[i + 1] = -complex_data_in[2 * n - i + 1];
    e8882eea:	0014071b          	addiw	a4,s0,1
    e8882eee:	40d006bb          	negw	a3,a3
    e8882ef2:	22e4d68b          	srh	a3,s1,a4,1
  for (i = n + 2; i < 2 * n; i += 2) {
    e8882ef6:	2409                	addiw	s0,s0,2
    e8882ef8:	bf61                	j	e8882e90 <WebRtcSpl_RealInverseFFTC+0x44>
    real_data_out[i] = complex_buffer[j];
    e8882efa:	a4f4470b          	lrhu	a4,s0,a5,2
    e8882efe:	22f9570b          	srh	a4,s2,a5,1
  for (i = 0, j = 0; i < n; i += 1, j += 2) {
    e8882f02:	0785                	addi	a5,a5,1
    e8882f04:	bf45                	j	e8882eb4 <WebRtcSpl_RealInverseFFTC+0x68>

00000000e8882f06 <WebRtcSpl_ResetResample48khzTo8khz>:
    WebRtcSpl_DownBy2IntToShort(tmpmem, 160, out, state->S_16_8);
}

// initialize state of 48 -> 8 resampler
void WebRtcSpl_ResetResample48khzTo8khz(WebRtcSpl_State48khzTo8khz* state)
{
    e8882f06:	1141                	addi	sp,sp,-16
    memset(state->S_48_24, 0, 8 * sizeof(int32_t));
    e8882f08:	02000613          	li	a2,32
    e8882f0c:	4581                	li	a1,0
{
    e8882f0e:	e406                	sd	ra,8(sp)
    e8882f10:	e022                	sd	s0,0(sp)
    e8882f12:	842a                	mv	s0,a0
    memset(state->S_48_24, 0, 8 * sizeof(int32_t));
    e8882f14:	c80f90ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(state->S_24_24, 0, 16 * sizeof(int32_t));
    e8882f18:	02040513          	addi	a0,s0,32 # fffffffffffff020 <__DRAM0_INF_BASE+0xffffffff0000f020>
    e8882f1c:	04000613          	li	a2,64
    e8882f20:	4581                	li	a1,0
    e8882f22:	c72f90ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(state->S_24_16, 0, 8 * sizeof(int32_t));
    e8882f26:	06040513          	addi	a0,s0,96
    e8882f2a:	02000613          	li	a2,32
    e8882f2e:	4581                	li	a1,0
    e8882f30:	c64f90ef          	jal	ra,e887c394 <eLIBs_memset>
    memset(state->S_16_8, 0, 8 * sizeof(int32_t));
    e8882f34:	08040513          	addi	a0,s0,128
}
    e8882f38:	6402                	ld	s0,0(sp)
    e8882f3a:	60a2                	ld	ra,8(sp)
    memset(state->S_16_8, 0, 8 * sizeof(int32_t));
    e8882f3c:	02000613          	li	a2,32
    e8882f40:	4581                	li	a1,0
}
    e8882f42:	0141                	addi	sp,sp,16
    memset(state->S_16_8, 0, 8 * sizeof(int32_t));
    e8882f44:	c50f906f          	j	e887c394 <eLIBs_memset>

00000000e8882f48 <WebRtcSpl_SqrtFloor>:

int32_t WebRtcSpl_SqrtFloor(int32_t value)
{
  int32_t root = 0, try1;

  WEBRTC_SPL_SQRT_ITER (15);
    e8882f48:	40000737          	lui	a4,0x40000
  int32_t root = 0, try1;
    e8882f4c:	4781                	li	a5,0
  WEBRTC_SPL_SQRT_ITER (15);
    e8882f4e:	00e54663          	blt	a0,a4,e8882f5a <WebRtcSpl_SqrtFloor+0x12>
    e8882f52:	c00007b7          	lui	a5,0xc0000
    e8882f56:	9d3d                	addw	a0,a0,a5
    e8882f58:	67c1                	lui	a5,0x10
  WEBRTC_SPL_SQRT_ITER (14);
    e8882f5a:	6711                	lui	a4,0x4
    e8882f5c:	9f3d                	addw	a4,a4,a5
    e8882f5e:	00e7169b          	slliw	a3,a4,0xe
    e8882f62:	00d54563          	blt	a0,a3,e8882f6c <WebRtcSpl_SqrtFloor+0x24>
    e8882f66:	6721                	lui	a4,0x8
    e8882f68:	9d15                	subw	a0,a0,a3
    e8882f6a:	8fd9                	or	a5,a5,a4
  WEBRTC_SPL_SQRT_ITER (13);
    e8882f6c:	6709                	lui	a4,0x2
    e8882f6e:	9f3d                	addw	a4,a4,a5
    e8882f70:	00d7169b          	slliw	a3,a4,0xd
    e8882f74:	00d54563          	blt	a0,a3,e8882f7e <WebRtcSpl_SqrtFloor+0x36>
    e8882f78:	6711                	lui	a4,0x4
    e8882f7a:	9d15                	subw	a0,a0,a3
    e8882f7c:	8fd9                	or	a5,a5,a4
  WEBRTC_SPL_SQRT_ITER (12);
    e8882f7e:	6705                	lui	a4,0x1
    e8882f80:	9f3d                	addw	a4,a4,a5
    e8882f82:	00c7169b          	slliw	a3,a4,0xc
    e8882f86:	00d54563          	blt	a0,a3,e8882f90 <WebRtcSpl_SqrtFloor+0x48>
    e8882f8a:	6709                	lui	a4,0x2
    e8882f8c:	9d15                	subw	a0,a0,a3
    e8882f8e:	8fd9                	or	a5,a5,a4
  WEBRTC_SPL_SQRT_ITER (11);
    e8882f90:	6685                	lui	a3,0x1
    e8882f92:	8006871b          	addiw	a4,a3,-2048
    e8882f96:	9f3d                	addw	a4,a4,a5
    e8882f98:	00b7161b          	slliw	a2,a4,0xb
    e8882f9c:	00c54463          	blt	a0,a2,e8882fa4 <WebRtcSpl_SqrtFloor+0x5c>
    e8882fa0:	9d11                	subw	a0,a0,a2
    e8882fa2:	8fd5                	or	a5,a5,a3
  WEBRTC_SPL_SQRT_ITER (10);
    e8882fa4:	4007871b          	addiw	a4,a5,1024
    e8882fa8:	00a7169b          	slliw	a3,a4,0xa
    e8882fac:	00d54763          	blt	a0,a3,e8882fba <WebRtcSpl_SqrtFloor+0x72>
    e8882fb0:	6705                	lui	a4,0x1
    e8882fb2:	80070713          	addi	a4,a4,-2048 # 800 <memcmp-0xe87ff800>
    e8882fb6:	9d15                	subw	a0,a0,a3
    e8882fb8:	8fd9                	or	a5,a5,a4
  WEBRTC_SPL_SQRT_ITER ( 9);
    e8882fba:	2007871b          	addiw	a4,a5,512
    e8882fbe:	0097169b          	slliw	a3,a4,0x9
    e8882fc2:	00d54563          	blt	a0,a3,e8882fcc <WebRtcSpl_SqrtFloor+0x84>
    e8882fc6:	9d15                	subw	a0,a0,a3
    e8882fc8:	4007e793          	ori	a5,a5,1024
  WEBRTC_SPL_SQRT_ITER ( 8);
    e8882fcc:	1007871b          	addiw	a4,a5,256
    e8882fd0:	0087169b          	slliw	a3,a4,0x8
    e8882fd4:	00d54563          	blt	a0,a3,e8882fde <WebRtcSpl_SqrtFloor+0x96>
    e8882fd8:	9d15                	subw	a0,a0,a3
    e8882fda:	2007e793          	ori	a5,a5,512
  WEBRTC_SPL_SQRT_ITER ( 7);
    e8882fde:	0807871b          	addiw	a4,a5,128
    e8882fe2:	0077169b          	slliw	a3,a4,0x7
    e8882fe6:	00d54563          	blt	a0,a3,e8882ff0 <WebRtcSpl_SqrtFloor+0xa8>
    e8882fea:	9d15                	subw	a0,a0,a3
    e8882fec:	1007e793          	ori	a5,a5,256
  WEBRTC_SPL_SQRT_ITER ( 6);
    e8882ff0:	0407871b          	addiw	a4,a5,64
    e8882ff4:	0067169b          	slliw	a3,a4,0x6
    e8882ff8:	00d54563          	blt	a0,a3,e8883002 <WebRtcSpl_SqrtFloor+0xba>
    e8882ffc:	9d15                	subw	a0,a0,a3
    e8882ffe:	0807e793          	ori	a5,a5,128
  WEBRTC_SPL_SQRT_ITER ( 5);
    e8883002:	0207871b          	addiw	a4,a5,32
    e8883006:	0057169b          	slliw	a3,a4,0x5
    e888300a:	00d54563          	blt	a0,a3,e8883014 <WebRtcSpl_SqrtFloor+0xcc>
    e888300e:	9d15                	subw	a0,a0,a3
    e8883010:	0407e793          	ori	a5,a5,64
  WEBRTC_SPL_SQRT_ITER ( 4);
    e8883014:	0107871b          	addiw	a4,a5,16
    e8883018:	0047169b          	slliw	a3,a4,0x4
    e888301c:	00d54563          	blt	a0,a3,e8883026 <WebRtcSpl_SqrtFloor+0xde>
    e8883020:	9d15                	subw	a0,a0,a3
    e8883022:	0207e793          	ori	a5,a5,32
  WEBRTC_SPL_SQRT_ITER ( 3);
    e8883026:	0087871b          	addiw	a4,a5,8
    e888302a:	0037169b          	slliw	a3,a4,0x3
    e888302e:	00d54563          	blt	a0,a3,e8883038 <WebRtcSpl_SqrtFloor+0xf0>
    e8883032:	9d15                	subw	a0,a0,a3
    e8883034:	0107e793          	ori	a5,a5,16
  WEBRTC_SPL_SQRT_ITER ( 2);
    e8883038:	0047871b          	addiw	a4,a5,4
    e888303c:	0027169b          	slliw	a3,a4,0x2
    e8883040:	00d54563          	blt	a0,a3,e888304a <WebRtcSpl_SqrtFloor+0x102>
    e8883044:	9d15                	subw	a0,a0,a3
    e8883046:	0087e793          	ori	a5,a5,8
  WEBRTC_SPL_SQRT_ITER ( 1);
    e888304a:	0027871b          	addiw	a4,a5,2
    e888304e:	0017169b          	slliw	a3,a4,0x1
    e8883052:	00d54563          	blt	a0,a3,e888305c <WebRtcSpl_SqrtFloor+0x114>
    e8883056:	9d15                	subw	a0,a0,a3
    e8883058:	0047e793          	ori	a5,a5,4
  WEBRTC_SPL_SQRT_ITER ( 0);
    e888305c:	0017871b          	addiw	a4,a5,1
    e8883060:	00e54463          	blt	a0,a4,e8883068 <WebRtcSpl_SqrtFloor+0x120>
    e8883064:	0027e793          	ori	a5,a5,2

  return root >> 1;
}
    e8883068:	4017d513          	srai	a0,a5,0x1
    e888306c:	8082                	ret

00000000e888306e <BitCount>:
static const float kMinFractionWhenPossiblyCausal = 0.5f;
static const float kMinFractionWhenPossiblyNonCausal = 0.25f;

// Counts and returns number of bits of a 32-bit word.
static int BitCount(uint32_t u32) {
  uint32_t tmp = u32 - ((u32 >> 1) & 033333333333) -
    e888306e:	db6db737          	lui	a4,0xdb6db
    e8883072:	6db70713          	addi	a4,a4,1755 # ffffffffdb6db6db <__DRAM0_INF_BASE+0xfffffffedb6eb6db>
    e8883076:	0015579b          	srliw	a5,a0,0x1
      ((u32 >> 2) & 011111111111);
    e888307a:	492496b7          	lui	a3,0x49249
  uint32_t tmp = u32 - ((u32 >> 1) & 033333333333) -
    e888307e:	8ff9                	and	a5,a5,a4
      ((u32 >> 2) & 011111111111);
    e8883080:	24968693          	addi	a3,a3,585 # 49249249 <memcmp-0x9f5b6db7>
    e8883084:	0025571b          	srliw	a4,a0,0x2
    e8883088:	8f75                	and	a4,a4,a3
  uint32_t tmp = u32 - ((u32 >> 1) & 033333333333) -
    e888308a:	9fb9                	addw	a5,a5,a4
    e888308c:	9d1d                	subw	a0,a0,a5
  tmp = ((tmp + (tmp >> 3)) & 030707070707);
    e888308e:	0035579b          	srliw	a5,a0,0x3
    e8883092:	9fa9                	addw	a5,a5,a0
    e8883094:	c71c7537          	lui	a0,0xc71c7
    e8883098:	1c75051b          	addiw	a0,a0,455
    e888309c:	8d7d                	and	a0,a0,a5
  tmp = (tmp + (tmp >> 6));
    e888309e:	0065579b          	srliw	a5,a0,0x6
    e88830a2:	9fa9                	addw	a5,a5,a0
  tmp = (tmp + (tmp >> 12) + (tmp >> 24)) & 077;
    e88830a4:	00c7d51b          	srliw	a0,a5,0xc
    e88830a8:	0187d71b          	srliw	a4,a5,0x18
    e88830ac:	9d39                	addw	a0,a0,a4
    e88830ae:	9d3d                	addw	a0,a0,a5

  return ((int) tmp);
}
    e88830b0:	03f57513          	andi	a0,a0,63
    e88830b4:	8082                	ret

00000000e88830b6 <WebRtc_FreeBinaryDelayEstimatorFarend>:
  return is_robust;
}

void WebRtc_FreeBinaryDelayEstimatorFarend(BinaryDelayEstimatorFarend* self) {

  if (self == NULL) {
    e88830b6:	c50d                	beqz	a0,e88830e0 <WebRtc_FreeBinaryDelayEstimatorFarend+0x2a>
void WebRtc_FreeBinaryDelayEstimatorFarend(BinaryDelayEstimatorFarend* self) {
    e88830b8:	1141                	addi	sp,sp,-16
    e88830ba:	e406                	sd	ra,8(sp)
    e88830bc:	e022                	sd	s0,0(sp)
    e88830be:	842a                	mv	s0,a0
    return;
  }

  free(self->binary_far_history);
    e88830c0:	6508                	ld	a0,8(a0)
    e88830c2:	a3ef90ef          	jal	ra,e887c300 <eLIBs_free>
  self->binary_far_history = NULL;
    e88830c6:	00043423          	sd	zero,8(s0)

  free(self->far_bit_counts);
    e88830ca:	6008                	ld	a0,0(s0)
    e88830cc:	a34f90ef          	jal	ra,e887c300 <eLIBs_free>
  self->far_bit_counts = NULL;
    e88830d0:	00043023          	sd	zero,0(s0)

  free(self);
    e88830d4:	8522                	mv	a0,s0
}
    e88830d6:	6402                	ld	s0,0(sp)
    e88830d8:	60a2                	ld	ra,8(sp)
    e88830da:	0141                	addi	sp,sp,16
  free(self);
    e88830dc:	a24f906f          	j	e887c300 <eLIBs_free>
    e88830e0:	8082                	ret

00000000e88830e2 <WebRtc_CreateBinaryDelayEstimatorFarend>:

BinaryDelayEstimatorFarend* WebRtc_CreateBinaryDelayEstimatorFarend(
    int history_size) {
    e88830e2:	1101                	addi	sp,sp,-32
    e88830e4:	ec06                	sd	ra,24(sp)
    e88830e6:	e84a                	sd	s2,16(sp)
    e88830e8:	f891540b          	sdd	s0,s1,(sp),0,4
  BinaryDelayEstimatorFarend* self = NULL;

  if (history_size > 1) {
    e88830ec:	4785                	li	a5,1
    e88830ee:	00a7ca63          	blt	a5,a0,e8883102 <WebRtc_CreateBinaryDelayEstimatorFarend+0x20>
    self->far_bit_counts = malloc(history_size * sizeof(int));
    malloc_fail |= (self->far_bit_counts == NULL);

    if (malloc_fail) {
      WebRtc_FreeBinaryDelayEstimatorFarend(self);
      self = NULL;
    e88830f2:	4401                	li	s0,0
    }
  }

  return self;
}
    e88830f4:	8522                	mv	a0,s0
    e88830f6:	60e2                	ld	ra,24(sp)
    e88830f8:	f891440b          	ldd	s0,s1,(sp),0,4
    e88830fc:	6942                	ld	s2,16(sp)
    e88830fe:	6105                	addi	sp,sp,32
    e8883100:	8082                	ret
    e8883102:	84aa                	mv	s1,a0
    self = malloc(sizeof(BinaryDelayEstimatorFarend));
    e8883104:	4561                	li	a0,24
    e8883106:	f48f80ef          	jal	ra,e887b84e <my_malloc>
    e888310a:	842a                	mv	s0,a0
  if (self != NULL) {
    e888310c:	d17d                	beqz	a0,e88830f2 <WebRtc_CreateBinaryDelayEstimatorFarend+0x10>
    self->history_size = history_size;
    e888310e:	c904                	sw	s1,16(a0)
    self->binary_far_history = malloc(history_size * sizeof(uint32_t));
    e8883110:	048a                	slli	s1,s1,0x2
    e8883112:	8526                	mv	a0,s1
    e8883114:	f3af80ef          	jal	ra,e887b84e <my_malloc>
    e8883118:	e408                	sd	a0,8(s0)
    e888311a:	892a                	mv	s2,a0
    self->far_bit_counts = malloc(history_size * sizeof(int));
    e888311c:	8526                	mv	a0,s1
    e888311e:	f30f80ef          	jal	ra,e887b84e <my_malloc>
    e8883122:	e008                	sd	a0,0(s0)
    if (malloc_fail) {
    e8883124:	00090363          	beqz	s2,e888312a <WebRtc_CreateBinaryDelayEstimatorFarend+0x48>
    e8883128:	f571                	bnez	a0,e88830f4 <WebRtc_CreateBinaryDelayEstimatorFarend+0x12>
      WebRtc_FreeBinaryDelayEstimatorFarend(self);
    e888312a:	8522                	mv	a0,s0
    e888312c:	f8bff0ef          	jal	ra,e88830b6 <WebRtc_FreeBinaryDelayEstimatorFarend>
    e8883130:	b7c9                	j	e88830f2 <WebRtc_CreateBinaryDelayEstimatorFarend+0x10>

00000000e8883132 <WebRtc_InitBinaryDelayEstimatorFarend>:

void WebRtc_InitBinaryDelayEstimatorFarend(BinaryDelayEstimatorFarend* self) {
    e8883132:	1141                	addi	sp,sp,-16
    e8883134:	e022                	sd	s0,0(sp)
    e8883136:	e406                	sd	ra,8(sp)
    e8883138:	842a                	mv	s0,a0
  assert(self != NULL);
    e888313a:	e11d                	bnez	a0,e8883160 <WebRtc_InitBinaryDelayEstimatorFarend+0x2e>
    e888313c:	02f00593          	li	a1,47
    e8883140:	0004b517          	auipc	a0,0x4b
    e8883144:	2f050513          	addi	a0,a0,752 # e88ce430 <WebRtcAecm_kSqrtHanning+0x1f0>
    e8883148:	a30f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888314c:	00150593          	addi	a1,a0,1
    e8883150:	13200613          	li	a2,306
    e8883154:	0001d517          	auipc	a0,0x1d
    e8883158:	05c50513          	addi	a0,a0,92 # e88a01b0 <TWO52+0x5b8>
    e888315c:	96af90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  memset(self->binary_far_history, 0, sizeof(uint32_t) * self->history_size);
    e8883160:	4810                	lw	a2,16(s0)
    e8883162:	6408                	ld	a0,8(s0)
    e8883164:	4581                	li	a1,0
    e8883166:	060a                	slli	a2,a2,0x2
    e8883168:	a2cf90ef          	jal	ra,e887c394 <eLIBs_memset>
  memset(self->far_bit_counts, 0, sizeof(int) * self->history_size);
    e888316c:	4810                	lw	a2,16(s0)
    e888316e:	6008                	ld	a0,0(s0)
}
    e8883170:	6402                	ld	s0,0(sp)
    e8883172:	60a2                	ld	ra,8(sp)
  memset(self->far_bit_counts, 0, sizeof(int) * self->history_size);
    e8883174:	060a                	slli	a2,a2,0x2
    e8883176:	4581                	li	a1,0
}
    e8883178:	0141                	addi	sp,sp,16
  memset(self->far_bit_counts, 0, sizeof(int) * self->history_size);
    e888317a:	a1af906f          	j	e887c394 <eLIBs_memset>

00000000e888317e <WebRtc_AddBinaryFarSpectrum>:

void WebRtc_AddBinaryFarSpectrum(BinaryDelayEstimatorFarend* handle,
                                 uint32_t binary_far_spectrum) {
    e888317e:	1101                	addi	sp,sp,-32
    e8883180:	e422                	sd	s0,8(sp)
    e8883182:	e826                	sd	s1,16(sp)
    e8883184:	ec06                	sd	ra,24(sp)
    e8883186:	842a                	mv	s0,a0
    e8883188:	84ae                	mv	s1,a1
  assert(handle != NULL);
    e888318a:	e11d                	bnez	a0,e88831b0 <WebRtc_AddBinaryFarSpectrum+0x32>
    e888318c:	02f00593          	li	a1,47
    e8883190:	0004b517          	auipc	a0,0x4b
    e8883194:	2a050513          	addi	a0,a0,672 # e88ce430 <WebRtcAecm_kSqrtHanning+0x1f0>
    e8883198:	9e0f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888319c:	00150593          	addi	a1,a0,1
    e88831a0:	13900613          	li	a2,313
    e88831a4:	0001d517          	auipc	a0,0x1d
    e88831a8:	00c50513          	addi	a0,a0,12 # e88a01b0 <TWO52+0x5b8>
    e88831ac:	91af90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  // Shift binary spectrum history and insert current |binary_far_spectrum|.
  memmove(&(handle->binary_far_history[1]), &(handle->binary_far_history[0]),
          (handle->history_size - 1) * sizeof(uint32_t));
    e88831b0:	4810                	lw	a2,16(s0)
  memmove(&(handle->binary_far_history[1]), &(handle->binary_far_history[0]),
    e88831b2:	640c                	ld	a1,8(s0)
          (handle->history_size - 1) * sizeof(uint32_t));
    e88831b4:	367d                	addiw	a2,a2,-1
  memmove(&(handle->binary_far_history[1]), &(handle->binary_far_history[0]),
    e88831b6:	060a                	slli	a2,a2,0x2
    e88831b8:	00458513          	addi	a0,a1,4 # ffffffffffff8004 <__DRAM0_INF_BASE+0xffffffff00008004>
    e88831bc:	9f0f90ef          	jal	ra,e887c3ac <eLIBs_memmove>
  handle->binary_far_history[0] = binary_far_spectrum;
    e88831c0:	641c                	ld	a5,8(s0)
    e88831c2:	c384                	sw	s1,0(a5)

  // Shift history of far-end binary spectrum bit counts and insert bit count
  // of current |binary_far_spectrum|.
  memmove(&(handle->far_bit_counts[1]), &(handle->far_bit_counts[0]),
          (handle->history_size - 1) * sizeof(int));
    e88831c4:	4810                	lw	a2,16(s0)
  memmove(&(handle->far_bit_counts[1]), &(handle->far_bit_counts[0]),
    e88831c6:	600c                	ld	a1,0(s0)
          (handle->history_size - 1) * sizeof(int));
    e88831c8:	367d                	addiw	a2,a2,-1
  memmove(&(handle->far_bit_counts[1]), &(handle->far_bit_counts[0]),
    e88831ca:	060a                	slli	a2,a2,0x2
    e88831cc:	00458513          	addi	a0,a1,4
    e88831d0:	9dcf90ef          	jal	ra,e887c3ac <eLIBs_memmove>
  handle->far_bit_counts[0] = BitCount(binary_far_spectrum);
    e88831d4:	6000                	ld	s0,0(s0)
    e88831d6:	8526                	mv	a0,s1
    e88831d8:	e97ff0ef          	jal	ra,e888306e <BitCount>
    e88831dc:	c008                	sw	a0,0(s0)
}
    e88831de:	60e2                	ld	ra,24(sp)
    e88831e0:	6422                	ld	s0,8(sp)
    e88831e2:	64c2                	ld	s1,16(sp)
    e88831e4:	6105                	addi	sp,sp,32
    e88831e6:	8082                	ret

00000000e88831e8 <WebRtc_FreeBinaryDelayEstimator>:

void WebRtc_FreeBinaryDelayEstimator(BinaryDelayEstimator* self) {

  if (self == NULL) {
    e88831e8:	c129                	beqz	a0,e888322a <WebRtc_FreeBinaryDelayEstimator+0x42>
void WebRtc_FreeBinaryDelayEstimator(BinaryDelayEstimator* self) {
    e88831ea:	1141                	addi	sp,sp,-16
    e88831ec:	e406                	sd	ra,8(sp)
    e88831ee:	e022                	sd	s0,0(sp)
    e88831f0:	842a                	mv	s0,a0
    return;
  }

  free(self->mean_bit_counts);
    e88831f2:	6108                	ld	a0,0(a0)
    e88831f4:	90cf90ef          	jal	ra,e887c300 <eLIBs_free>
  self->mean_bit_counts = NULL;
    e88831f8:	00043023          	sd	zero,0(s0)

  free(self->bit_counts);
    e88831fc:	6408                	ld	a0,8(s0)
    e88831fe:	902f90ef          	jal	ra,e887c300 <eLIBs_free>
  self->bit_counts = NULL;
    e8883202:	00043423          	sd	zero,8(s0)

  free(self->binary_near_history);
    e8883206:	6808                	ld	a0,16(s0)
    e8883208:	8f8f90ef          	jal	ra,e887c300 <eLIBs_free>
  self->binary_near_history = NULL;
    e888320c:	00043823          	sd	zero,16(s0)

  free(self->histogram);
    e8883210:	7c08                	ld	a0,56(s0)
    e8883212:	8eef90ef          	jal	ra,e887c300 <eLIBs_free>
  self->histogram = NULL;
    e8883216:	02043c23          	sd	zero,56(s0)

  // BinaryDelayEstimator does not have ownership of |farend|, hence we do not
  // free the memory here. That should be handled separately by the user.
  self->farend = NULL;
    e888321a:	04043423          	sd	zero,72(s0)

  free(self);
    e888321e:	8522                	mv	a0,s0
}
    e8883220:	6402                	ld	s0,0(sp)
    e8883222:	60a2                	ld	ra,8(sp)
    e8883224:	0141                	addi	sp,sp,16
  free(self);
    e8883226:	8daf906f          	j	e887c300 <eLIBs_free>
    e888322a:	8082                	ret

00000000e888322c <WebRtc_CreateBinaryDelayEstimator>:

BinaryDelayEstimator* WebRtc_CreateBinaryDelayEstimator(
    BinaryDelayEstimatorFarend* farend, int lookahead) {
    e888322c:	7179                	addi	sp,sp,-48
    e888322e:	f406                	sd	ra,40(sp)
    e8883230:	e422                	sd	s0,8(sp)
    e8883232:	e826                	sd	s1,16(sp)
    e8883234:	ec4a                	sd	s2,24(sp)
    e8883236:	f04e                	sd	s3,32(sp)
  BinaryDelayEstimator* self = NULL;

  if ((farend != NULL) && (lookahead >= 0)) {
    e8883238:	e911                	bnez	a0,e888324c <WebRtc_CreateBinaryDelayEstimator+0x20>
    self->histogram = malloc((farend->history_size + 1) * sizeof(float));
    malloc_fail |= (self->histogram == NULL);

    if (malloc_fail) {
      WebRtc_FreeBinaryDelayEstimator(self);
      self = NULL;
    e888323a:	4401                	li	s0,0
    }
  }

  return self;
}
    e888323c:	8522                	mv	a0,s0
    e888323e:	70a2                	ld	ra,40(sp)
    e8883240:	6422                	ld	s0,8(sp)
    e8883242:	64c2                	ld	s1,16(sp)
    e8883244:	6962                	ld	s2,24(sp)
    e8883246:	7982                	ld	s3,32(sp)
    e8883248:	6145                	addi	sp,sp,48
    e888324a:	8082                	ret
  if ((farend != NULL) && (lookahead >= 0)) {
    e888324c:	fe05c7e3          	bltz	a1,e888323a <WebRtc_CreateBinaryDelayEstimator+0xe>
    e8883250:	892a                	mv	s2,a0
    self = malloc(sizeof(BinaryDelayEstimator));
    e8883252:	05000513          	li	a0,80
    e8883256:	84ae                	mv	s1,a1
    e8883258:	df6f80ef          	jal	ra,e887b84e <my_malloc>
    e888325c:	842a                	mv	s0,a0
  if (self != NULL) {
    e888325e:	dd71                	beqz	a0,e888323a <WebRtc_CreateBinaryDelayEstimator+0xe>
    self->farend = farend;
    e8883260:	05253423          	sd	s2,72(a0)
    self->near_history_size = lookahead + 1;
    e8883264:	0014899b          	addiw	s3,s1,1
    e8883268:	01342c23          	sw	s3,24(s0)
        malloc((farend->history_size + 1) * sizeof(int32_t));
    e888326c:	01092503          	lw	a0,16(s2)
    e8883270:	2505                	addiw	a0,a0,1
    e8883272:	050a                	slli	a0,a0,0x2
    e8883274:	ddaf80ef          	jal	ra,e887b84e <my_malloc>
    e8883278:	84aa                	mv	s1,a0
    self->mean_bit_counts =
    e888327a:	e008                	sd	a0,0(s0)
    self->bit_counts = malloc(farend->history_size * sizeof(int32_t));
    e888327c:	01092503          	lw	a0,16(s2)
    malloc_fail |= (self->mean_bit_counts == NULL);
    e8883280:	0014b493          	seqz	s1,s1
    self->bit_counts = malloc(farend->history_size * sizeof(int32_t));
    e8883284:	050a                	slli	a0,a0,0x2
    e8883286:	dc8f80ef          	jal	ra,e887b84e <my_malloc>
    e888328a:	e408                	sd	a0,8(s0)
    malloc_fail |= (self->bit_counts == NULL);
    e888328c:	00153513          	seqz	a0,a0
    e8883290:	8cc9                	or	s1,s1,a0
    self->binary_near_history = malloc((lookahead + 1) * sizeof(uint32_t));
    e8883292:	00299513          	slli	a0,s3,0x2
    e8883296:	db8f80ef          	jal	ra,e887b84e <my_malloc>
    e888329a:	e808                	sd	a0,16(s0)
    malloc_fail |= (self->binary_near_history == NULL);
    e888329c:	00153513          	seqz	a0,a0
    e88832a0:	8cc9                	or	s1,s1,a0
    self->histogram = malloc((farend->history_size + 1) * sizeof(float));
    e88832a2:	01092503          	lw	a0,16(s2)
    e88832a6:	2505                	addiw	a0,a0,1
    e88832a8:	050a                	slli	a0,a0,0x2
    e88832aa:	da4f80ef          	jal	ra,e887b84e <my_malloc>
    e88832ae:	fc08                	sd	a0,56(s0)
    if (malloc_fail) {
    e88832b0:	c111                	beqz	a0,e88832b4 <WebRtc_CreateBinaryDelayEstimator+0x88>
    e88832b2:	d4c9                	beqz	s1,e888323c <WebRtc_CreateBinaryDelayEstimator+0x10>
      WebRtc_FreeBinaryDelayEstimator(self);
    e88832b4:	8522                	mv	a0,s0
    e88832b6:	f33ff0ef          	jal	ra,e88831e8 <WebRtc_FreeBinaryDelayEstimator>
    e88832ba:	b741                	j	e888323a <WebRtc_CreateBinaryDelayEstimator+0xe>

00000000e88832bc <WebRtc_InitBinaryDelayEstimator>:

void WebRtc_InitBinaryDelayEstimator(BinaryDelayEstimator* self) {
    e88832bc:	1141                	addi	sp,sp,-16
    e88832be:	e022                	sd	s0,0(sp)
    e88832c0:	e406                	sd	ra,8(sp)
    e88832c2:	842a                	mv	s0,a0
  int i = 0;
  assert(self != NULL);
    e88832c4:	e11d                	bnez	a0,e88832ea <WebRtc_InitBinaryDelayEstimator+0x2e>
    e88832c6:	02f00593          	li	a1,47
    e88832ca:	0004b517          	auipc	a0,0x4b
    e88832ce:	16650513          	addi	a0,a0,358 # e88ce430 <WebRtcAecm_kSqrtHanning+0x1f0>
    e88832d2:	8a6f90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88832d6:	00150593          	addi	a1,a0,1
    e88832da:	18a00613          	li	a2,394
    e88832de:	0001d517          	auipc	a0,0x1d
    e88832e2:	ed250513          	addi	a0,a0,-302 # e88a01b0 <TWO52+0x5b8>
    e88832e6:	fe1f80ef          	jal	ra,e887c2c6 <eLIBs_printf>

  memset(self->bit_counts, 0, sizeof(int32_t) * self->farend->history_size);
    e88832ea:	643c                	ld	a5,72(s0)
    e88832ec:	6408                	ld	a0,8(s0)
    e88832ee:	4581                	li	a1,0
    e88832f0:	4b90                	lw	a2,16(a5)
    e88832f2:	060a                	slli	a2,a2,0x2
    e88832f4:	8a0f90ef          	jal	ra,e887c394 <eLIBs_memset>
  memset(self->binary_near_history, 0,
         sizeof(uint32_t) * self->near_history_size);
    e88832f8:	4c10                	lw	a2,24(s0)
  memset(self->binary_near_history, 0,
    e88832fa:	6808                	ld	a0,16(s0)
    e88832fc:	4581                	li	a1,0
    e88832fe:	060a                	slli	a2,a2,0x2
    e8883300:	894f90ef          	jal	ra,e887c394 <eLIBs_memset>
  for (i = 0; i <= self->farend->history_size; ++i) {
    self->mean_bit_counts[i] = (20 << 9);  // 20 in Q9.
    e8883304:	670d                	lui	a4,0x3
  for (i = 0; i <= self->farend->history_size; ++i) {
    e8883306:	4781                	li	a5,0
    self->mean_bit_counts[i] = (20 << 9);  // 20 in Q9.
    e8883308:	8007071b          	addiw	a4,a4,-2048
  for (i = 0; i <= self->farend->history_size; ++i) {
    e888330c:	6434                	ld	a3,72(s0)
    e888330e:	4a90                	lw	a2,16(a3)
    e8883310:	02f65563          	bge	a2,a5,e888333a <WebRtc_InitBinaryDelayEstimator+0x7e>
    self->histogram[i] = 0.f;
  }
  self->minimum_probability = (32 << 9);  // 32 in Q9.
    e8883314:	6791                	lui	a5,0x4
    e8883316:	cc5c                	sw	a5,28(s0)
  self->last_delay_probability = (32 << 9);  // 32 in Q9.
    e8883318:	800017b7          	lui	a5,0x80001
    e888331c:	078a                	slli	a5,a5,0x2
    e888331e:	f01c                	sd	a5,32(s0)

  // Default return value if we're unable to estimate. -1 is used for errors.
  self->last_delay = -2;

  self->robust_validation_enabled = 0;  // Disabled by default.
    e8883320:	57fd                	li	a5,-1
    e8883322:	1786                	slli	a5,a5,0x21
    e8883324:	f41c                	sd	a5,40(s0)
  self->last_candidate_delay = -2;
  self->compare_delay = self->farend->history_size;
    e8883326:	4a9c                	lw	a5,16(a3)
  self->candidate_hits = 0;
  self->last_delay_histogram = 0.f;
}
    e8883328:	60a2                	ld	ra,8(sp)
  self->candidate_hits = 0;
    e888332a:	02042a23          	sw	zero,52(s0)
  self->compare_delay = self->farend->history_size;
    e888332e:	d81c                	sw	a5,48(s0)
  self->last_delay_histogram = 0.f;
    e8883330:	04042023          	sw	zero,64(s0)
}
    e8883334:	6402                	ld	s0,0(sp)
    e8883336:	0141                	addi	sp,sp,16
    e8883338:	8082                	ret
    self->mean_bit_counts[i] = (20 << 9);  // 20 in Q9.
    e888333a:	6014                	ld	a3,0(s0)
    e888333c:	44f6d70b          	srw	a4,a3,a5,2
    self->histogram[i] = 0.f;
    e8883340:	7c14                	ld	a3,56(s0)
    e8883342:	44f6d00b          	srw	zero,a3,a5,2
  for (i = 0; i <= self->farend->history_size; ++i) {
    e8883346:	2785                	addiw	a5,a5,1
    e8883348:	b7d1                	j	e888330c <WebRtc_InitBinaryDelayEstimator+0x50>

00000000e888334a <WebRtc_MeanEstimatorFix>:
}

void WebRtc_MeanEstimatorFix(int32_t new_value,
                             int factor,
                             int32_t* mean_value) {
  int32_t diff = new_value - *mean_value;
    e888334a:	421c                	lw	a5,0(a2)
    e888334c:	40f5073b          	subw	a4,a0,a5

  // mean_new = mean_value + ((new_value - mean_value) >> factor);
  if (diff < 0) {
    e8883350:	02071693          	slli	a3,a4,0x20
    e8883354:	0006dc63          	bgez	a3,e888336c <WebRtc_MeanEstimatorFix+0x22>
    diff = -((-diff) >> factor);
    e8883358:	40a7853b          	subw	a0,a5,a0
    e888335c:	40b5553b          	sraw	a0,a0,a1
    e8883360:	40a0053b          	negw	a0,a0
    e8883364:	2501                	sext.w	a0,a0
  } else {
    diff = (diff >> factor);
  }
  *mean_value += diff;
    e8883366:	9fa9                	addw	a5,a5,a0
    e8883368:	c21c                	sw	a5,0(a2)
}
    e888336a:	8082                	ret
    diff = (diff >> factor);
    e888336c:	40b7553b          	sraw	a0,a4,a1
    e8883370:	bfdd                	j	e8883366 <WebRtc_MeanEstimatorFix+0x1c>

00000000e8883372 <WebRtc_ProcessBinarySpectrum>:
                                 uint32_t binary_near_spectrum) {
    e8883372:	7139                	addi	sp,sp,-64
    e8883374:	e422                	sd	s0,8(sp)
    e8883376:	ec4a                	sd	s2,24(sp)
    e8883378:	fc06                	sd	ra,56(sp)
    e888337a:	e826                	sd	s1,16(sp)
    e888337c:	f04e                	sd	s3,32(sp)
    e888337e:	f452                	sd	s4,40(sp)
    e8883380:	f856                	sd	s5,48(sp)
    e8883382:	842a                	mv	s0,a0
    e8883384:	892e                	mv	s2,a1
  assert(self != NULL);
    e8883386:	e11d                	bnez	a0,e88833ac <WebRtc_ProcessBinarySpectrum+0x3a>
    e8883388:	02f00593          	li	a1,47
    e888338c:	0004b517          	auipc	a0,0x4b
    e8883390:	0a450513          	addi	a0,a0,164 # e88ce430 <WebRtcAecm_kSqrtHanning+0x1f0>
    e8883394:	fe5f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8883398:	00150593          	addi	a1,a0,1
    e888339c:	1aa00613          	li	a2,426
    e88833a0:	0001d517          	auipc	a0,0x1d
    e88833a4:	e1050513          	addi	a0,a0,-496 # e88a01b0 <TWO52+0x5b8>
    e88833a8:	f1ff80ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (self->near_history_size > 1) {
    e88833ac:	4c10                	lw	a2,24(s0)
    e88833ae:	4785                	li	a5,1
    e88833b0:	02c7d263          	bge	a5,a2,e88833d4 <WebRtc_ProcessBinarySpectrum+0x62>
    memmove(&(self->binary_near_history[1]), &(self->binary_near_history[0]),
    e88833b4:	680c                	ld	a1,16(s0)
            (self->near_history_size - 1) * sizeof(uint32_t));
    e88833b6:	367d                	addiw	a2,a2,-1
    memmove(&(self->binary_near_history[1]), &(self->binary_near_history[0]),
    e88833b8:	060a                	slli	a2,a2,0x2
    e88833ba:	00458513          	addi	a0,a1,4
    e88833be:	feff80ef          	jal	ra,e887c3ac <eLIBs_memmove>
    self->binary_near_history[0] = binary_near_spectrum;
    e88833c2:	681c                	ld	a5,16(s0)
    e88833c4:	0127a023          	sw	s2,0(a5) # ffffffff80001000 <__DRAM0_INF_BASE+0xfffffffe80011000>
        self->binary_near_history[self->near_history_size - 1];
    e88833c8:	4c18                	lw	a4,24(s0)
    binary_near_spectrum =
    e88833ca:	681c                	ld	a5,16(s0)
    e88833cc:	04e7978b          	addsl	a5,a5,a4,2
    e88833d0:	ffc7a903          	lw	s2,-4(a5)
  BitCountComparison(binary_near_spectrum, self->farend->binary_far_history,
    e88833d4:	643c                	ld	a5,72(s0)
    e88833d6:	00843a83          	ld	s5,8(s0)
    e88833da:	4481                	li	s1,0
    e88833dc:	0087ba03          	ld	s4,8(a5)
    e88833e0:	0107a983          	lw	s3,16(a5)
  for (; n < matrix_size; n++) {
    e88833e4:	0004879b          	sext.w	a5,s1
    e88833e8:	1f37c563          	blt	a5,s3,e88835d2 <WebRtc_ProcessBinarySpectrum+0x260>
  for (i = 0; i < self->farend->history_size; i++) {
    e88833ec:	4481                	li	s1,0
      shifts -= (kShiftsLinearSlope * self->farend->far_bit_counts[i]) >> 4;
    e88833ee:	490d                	li	s2,3
    e88833f0:	49b5                	li	s3,13
  for (i = 0; i < self->farend->history_size; i++) {
    e88833f2:	643c                	ld	a5,72(s0)
    e88833f4:	0107a803          	lw	a6,16(a5)
    e88833f8:	1f04c763          	blt	s1,a6,e88835e6 <WebRtc_ProcessBinarySpectrum+0x274>
    e88833fc:	4681                	li	a3,0
  int32_t value_worst_candidate = 0;
    e88833fe:	4701                	li	a4,0
  int32_t value_best_candidate = 32 << 9;  // 32 in Q9, (max |mean_bit_counts|).
    e8883400:	6591                	lui	a1,0x4
  int candidate_delay = -1;
    e8883402:	57fd                	li	a5,-1
    e8883404:	0006851b          	sext.w	a0,a3
  for (i = 0; i < self->farend->history_size; i++) {
    e8883408:	21054763          	blt	a0,a6,e8883616 <WebRtc_ProcessBinarySpectrum+0x2a4>
  if ((self->minimum_probability > kProbabilityLowerLimit) &&
    e888340c:	01c42883          	lw	a7,28(s0)
    e8883410:	6609                	lui	a2,0x2
  valley_depth = value_worst_candidate - value_best_candidate;
    e8883412:	40b7053b          	subw	a0,a4,a1
  if ((self->minimum_probability > kProbabilityLowerLimit) &&
    e8883416:	20060813          	addi	a6,a2,512 # 2200 <memcmp-0xe87fde00>
  valley_depth = value_worst_candidate - value_best_candidate;
    e888341a:	872a                	mv	a4,a0
  if ((self->minimum_probability > kProbabilityLowerLimit) &&
    e888341c:	03185063          	bge	a6,a7,e888343c <WebRtc_ProcessBinarySpectrum+0xca>
    e8883420:	6685                	lui	a3,0x1
    e8883422:	b0068693          	addi	a3,a3,-1280 # b00 <memcmp-0xe87ff500>
    e8883426:	00a6db63          	bge	a3,a0,e888343c <WebRtc_ProcessBinarySpectrum+0xca>
    int32_t threshold = value_best_candidate + kProbabilityOffset;
    e888342a:	4005869b          	addiw	a3,a1,1024
    if (threshold < kProbabilityLowerLimit) {
    e888342e:	1ff60613          	addi	a2,a2,511
    e8883432:	20d65063          	bge	a2,a3,e8883632 <WebRtc_ProcessBinarySpectrum+0x2c0>
    if (self->minimum_probability > threshold) {
    e8883436:	0116d363          	bge	a3,a7,e888343c <WebRtc_ProcessBinarySpectrum+0xca>
      self->minimum_probability = threshold;
    e888343a:	cc54                	sw	a3,28(s0)
  self->last_delay_probability++;
    e888343c:	5014                	lw	a3,32(s0)
  valid_candidate = ((valley_depth > kProbabilityOffset) &&
    e888343e:	4601                	li	a2,0
  self->last_delay_probability++;
    e8883440:	0016881b          	addiw	a6,a3,1
    e8883444:	03042023          	sw	a6,32(s0)
  valid_candidate = ((valley_depth > kProbabilityOffset) &&
    e8883448:	40000693          	li	a3,1024
    e888344c:	00a6d863          	bge	a3,a0,e888345c <WebRtc_ProcessBinarySpectrum+0xea>
    e8883450:	4c54                	lw	a3,28(s0)
    e8883452:	4605                	li	a2,1
    e8883454:	00d5c463          	blt	a1,a3,e888345c <WebRtc_ProcessBinarySpectrum+0xea>
    e8883458:	0105a633          	slt	a2,a1,a6
  if (self->robust_validation_enabled) {
    e888345c:	5414                	lw	a3,40(s0)
    e888345e:	10068c63          	beqz	a3,e8883576 <WebRtc_ProcessBinarySpectrum+0x204>
  const float valley_depth = valley_depth_q14 * kQ14Scaling;
    e8883462:	d00777d3          	fcvt.s.w	fa5,a4
    e8883466:	0004b717          	auipc	a4,0x4b
    e888346a:	07e72607          	flw	fa2,126(a4) # e88ce4e4 <WebRtcAecm_kSqrtHanning+0x2a4>
      kMaxHitsWhenPossiblyNonCausal : kMaxHitsWhenPossiblyCausal;
    e888346e:	46a9                	li	a3,10
    e8883470:	5058                	lw	a4,36(s0)
  const float valley_depth = valley_depth_q14 * kQ14Scaling;
    e8883472:	10c7f7d3          	fmul.s	fa5,fa5,fa2
      kMaxHitsWhenPossiblyNonCausal : kMaxHitsWhenPossiblyCausal;
    e8883476:	00e7c463          	blt	a5,a4,e888347e <WebRtc_ProcessBinarySpectrum+0x10c>
    e888347a:	3e800693          	li	a3,1000
  if (candidate_delay != self->last_candidate_delay) {
    e888347e:	5458                	lw	a4,44(s0)
    e8883480:	00f70563          	beq	a4,a5,e888348a <WebRtc_ProcessBinarySpectrum+0x118>
    self->candidate_hits = 0;
    e8883484:	02042a23          	sw	zero,52(s0)
    self->last_candidate_delay = candidate_delay;
    e8883488:	d45c                	sw	a5,44(s0)
  self->candidate_hits++;
    e888348a:	5858                	lw	a4,52(s0)
  self->histogram[candidate_delay] += valley_depth;
    e888348c:	00279813          	slli	a6,a5,0x2
  self->candidate_hits++;
    e8883490:	2705                	addiw	a4,a4,1
    e8883492:	d858                	sw	a4,52(s0)
  self->histogram[candidate_delay] += valley_depth;
    e8883494:	7c18                	ld	a4,56(s0)
    e8883496:	44f7670b          	flrw	fa4,a4,a5,2
    e888349a:	00f77753          	fadd.s	fa4,fa4,fa5
    e888349e:	44f7770b          	fsrw	fa4,a4,a5,2
  if (self->histogram[candidate_delay] > kHistogramMax) {
    e88834a2:	7c08                	ld	a0,56(s0)
    e88834a4:	0004b717          	auipc	a4,0x4b
    e88834a8:	04472687          	flw	fa3,68(a4) # e88ce4e8 <WebRtcAecm_kSqrtHanning+0x2a8>
    e88834ac:	44f5670b          	flrw	fa4,a0,a5,2
    e88834b0:	a0e69753          	flt.s	a4,fa3,fa4
    e88834b4:	c319                	beqz	a4,e88834ba <WebRtc_ProcessBinarySpectrum+0x148>
    self->histogram[candidate_delay] = kHistogramMax;
    e88834b6:	44f5768b          	fsrw	fa3,a0,a5,2
  if (self->candidate_hits < max_hits_for_slow_change) {
    e88834ba:	5858                	lw	a4,52(s0)
  float decrease_in_last_set = valley_depth;
    e88834bc:	20f786d3          	fmv.s	fa3,fa5
  if (self->candidate_hits < max_hits_for_slow_change) {
    e88834c0:	00d75b63          	bge	a4,a3,e88834d6 <WebRtc_ProcessBinarySpectrum+0x164>
    decrease_in_last_set = (self->mean_bit_counts[self->compare_delay] -
    e88834c4:	5814                	lw	a3,48(s0)
    e88834c6:	6018                	ld	a4,0(s0)
    e88834c8:	44d7470b          	lrw	a4,a4,a3,2
    e88834cc:	9f0d                	subw	a4,a4,a1
        valley_level_q14) * kQ14Scaling;
    e88834ce:	d00776d3          	fcvt.s.w	fa3,a4
    decrease_in_last_set = (self->mean_bit_counts[self->compare_delay] -
    e88834d2:	10c6f6d3          	fmul.s	fa3,fa3,fa2
    if (self->histogram[i] < 0) {
    e88834d6:	f00005d3          	fmv.w.x	fa1,zero
  for (i = 0; i < self->farend->history_size; ++i) {
    e88834da:	4681                	li	a3,0
    int is_in_candidate_set = (i >= candidate_delay - 2) &&
    e88834dc:	ffe78e1b          	addiw	t3,a5,-2
    e88834e0:	00178e9b          	addiw	t4,a5,1
  for (i = 0; i < self->farend->history_size; ++i) {
    e88834e4:	6438                	ld	a4,72(s0)
    e88834e6:	5048                	lw	a0,36(s0)
    e88834e8:	03843883          	ld	a7,56(s0)
    e88834ec:	4b18                	lw	a4,16(a4)
    e88834ee:	14e6c463          	blt	a3,a4,e8883636 <WebRtc_ProcessBinarySpectrum+0x2c4>
  float histogram_threshold = self->histogram[self->compare_delay];
    e88834f2:	5818                	lw	a4,48(s0)
  const int delay_difference = candidate_delay - self->last_delay;
    e88834f4:	40a786bb          	subw	a3,a5,a0
  if (delay_difference >= kMaxDelayDifference) {
    e88834f8:	437d                	li	t1,31
  float histogram_threshold = self->histogram[self->compare_delay];
    e88834fa:	44e8e68b          	flrw	fa3,a7,a4,2
  if (delay_difference >= kMaxDelayDifference) {
    e88834fe:	0004a497          	auipc	s1,0x4a
    e8883502:	d824a607          	flw	fa2,-638(s1) # e88cd280 <kGenFuncTable+0x110>
    e8883506:	18d35763          	bge	t1,a3,e8883694 <WebRtc_ProcessBinarySpectrum+0x322>
    fraction = 1.f - kFractionSlope * (delay_difference - kMaxDelayDifference);
    e888350a:	fe06871b          	addiw	a4,a3,-32
    e888350e:	d0077753          	fcvt.s.w	fa4,a4
    e8883512:	0004a717          	auipc	a4,0x4a
    e8883516:	dae72787          	flw	fa5,-594(a4) # e88cd2c0 <kGenFuncTable+0x150>
    e888351a:	60f777cb          	fnmsub.s	fa5,fa4,fa5,fa2
    fraction = (fraction > kMinFractionWhenPossiblyCausal ? fraction :
    e888351e:	0004a717          	auipc	a4,0x4a
    e8883522:	d6672707          	flw	fa4,-666(a4) # e88cd284 <kGenFuncTable+0x114>
    e8883526:	a0f71753          	flt.s	a4,fa4,fa5
    e888352a:	e319                	bnez	a4,e8883530 <WebRtc_ProcessBinarySpectrum+0x1be>
    e888352c:	20e707d3          	fmv.s	fa5,fa4
  histogram_threshold *= fraction;
    e8883530:	10f6f7d3          	fmul.s	fa5,fa3,fa5
      histogram_threshold : kMinHistogramThreshold);
    e8883534:	0004b717          	auipc	a4,0x4b
    e8883538:	fa872707          	flw	fa4,-88(a4) # e88ce4dc <WebRtcAecm_kSqrtHanning+0x29c>
    e888353c:	a0f71753          	flt.s	a4,fa4,fa5
    e8883540:	e319                	bnez	a4,e8883546 <WebRtc_ProcessBinarySpectrum+0x1d4>
    e8883542:	20e707d3          	fmv.s	fa5,fa4
      (self->histogram[candidate_delay] >= histogram_threshold) &&
    e8883546:	4108e70b          	flrw	fa4,a7,a6,0
    e888354a:	a0e78753          	fle.s	a4,fa5,fa4
    e888354e:	16070a63          	beqz	a4,e88836c2 <WebRtc_ProcessBinarySpectrum+0x350>
    e8883552:	5858                	lw	a4,52(s0)
    e8883554:	46a9                	li	a3,10
    e8883556:	00e6a733          	slt	a4,a3,a4
  is_robust = (self->last_delay < 0) &&
    e888355a:	16055663          	bgez	a0,e88836c6 <WebRtc_ProcessBinarySpectrum+0x354>
    e888355e:	86ba                	mv	a3,a4
    e8883560:	c219                	beqz	a2,e8883566 <WebRtc_ProcessBinarySpectrum+0x1f4>
    e8883562:	86b2                	mv	a3,a2
  is_robust |= is_instantaneous_valid && is_histogram_valid;
    e8883564:	863a                	mv	a2,a4
    e8883566:	8e55                	or	a2,a2,a3
    e8883568:	2601                	sext.w	a2,a2
  is_robust |= is_histogram_valid &&
    e888356a:	c709                	beqz	a4,e8883574 <WebRtc_ProcessBinarySpectrum+0x202>
    e888356c:	04042787          	flw	fa5,64(s0)
    e8883570:	a0e79753          	flt.s	a4,fa5,fa4
    e8883574:	8e59                	or	a2,a2,a4
  if (valid_candidate) {
    e8883576:	c621                	beqz	a2,e88835be <WebRtc_ProcessBinarySpectrum+0x24c>
    if (candidate_delay != self->last_delay) {
    e8883578:	5058                	lw	a4,36(s0)
    e888357a:	02f70c63          	beq	a4,a5,e88835b2 <WebRtc_ProcessBinarySpectrum+0x240>
          (self->histogram[candidate_delay] > kLastHistogramMax ?
    e888357e:	7c18                	ld	a4,56(s0)
              kLastHistogramMax : self->histogram[candidate_delay]);
    e8883580:	0004b617          	auipc	a2,0x4b
    e8883584:	f6062707          	flw	fa4,-160(a2) # e88ce4e0 <WebRtcAecm_kSqrtHanning+0x2a0>
          (self->histogram[candidate_delay] > kLastHistogramMax ?
    e8883588:	00279693          	slli	a3,a5,0x2
    e888358c:	44f7678b          	flrw	fa5,a4,a5,2
              kLastHistogramMax : self->histogram[candidate_delay]);
    e8883590:	a0f71653          	flt.s	a2,fa4,fa5
    e8883594:	c219                	beqz	a2,e888359a <WebRtc_ProcessBinarySpectrum+0x228>
    e8883596:	20e707d3          	fmv.s	fa5,fa4
          self->histogram[self->compare_delay]) {
    e888359a:	5810                	lw	a2,48(s0)
      self->last_delay_histogram =
    e888359c:	04f42027          	fsw	fa5,64(s0)
      if (self->histogram[candidate_delay] <
    e88835a0:	40d7670b          	flrw	fa4,a4,a3,0
    e88835a4:	44c7678b          	flrw	fa5,a4,a2,2
    e88835a8:	a0f716d3          	flt.s	a3,fa4,fa5
    e88835ac:	c299                	beqz	a3,e88835b2 <WebRtc_ProcessBinarySpectrum+0x240>
        self->histogram[self->compare_delay] = self->histogram[candidate_delay];
    e88835ae:	44c7770b          	fsrw	fa4,a4,a2,2
    if (value_best_candidate < self->last_delay_probability) {
    e88835b2:	5018                	lw	a4,32(s0)
    self->last_delay = candidate_delay;
    e88835b4:	d05c                	sw	a5,36(s0)
    if (value_best_candidate < self->last_delay_probability) {
    e88835b6:	00e5d363          	bge	a1,a4,e88835bc <WebRtc_ProcessBinarySpectrum+0x24a>
      self->last_delay_probability = value_best_candidate;
    e88835ba:	d00c                	sw	a1,32(s0)
    self->compare_delay = self->last_delay;
    e88835bc:	d81c                	sw	a5,48(s0)
}
    e88835be:	5048                	lw	a0,36(s0)
    e88835c0:	70e2                	ld	ra,56(sp)
    e88835c2:	6422                	ld	s0,8(sp)
    e88835c4:	64c2                	ld	s1,16(sp)
    e88835c6:	6962                	ld	s2,24(sp)
    e88835c8:	7982                	ld	s3,32(sp)
    e88835ca:	7a22                	ld	s4,40(sp)
    e88835cc:	7ac2                	ld	s5,48(sp)
    e88835ce:	6121                	addi	sp,sp,64
    e88835d0:	8082                	ret
    bit_counts[n] = (int32_t) BitCount(binary_vector ^ binary_matrix[n]);
    e88835d2:	449a450b          	lrw	a0,s4,s1,2
    e88835d6:	00a94533          	xor	a0,s2,a0
    e88835da:	a95ff0ef          	jal	ra,e888306e <BitCount>
    e88835de:	449ad50b          	srw	a0,s5,s1,2
  for (; n < matrix_size; n++) {
    e88835e2:	0485                	addi	s1,s1,1
    e88835e4:	b501                	j	e88833e4 <WebRtc_ProcessBinarySpectrum+0x72>
    if (self->farend->far_bit_counts[i] > 0) {
    e88835e6:	639c                	ld	a5,0(a5)
    int32_t bit_count = (self->bit_counts[i] << 9);  // Q9.
    e88835e8:	00249713          	slli	a4,s1,0x2
    if (self->farend->far_bit_counts[i] > 0) {
    e88835ec:	4497c58b          	lrw	a1,a5,s1,2
    e88835f0:	02b05163          	blez	a1,e8883612 <WebRtc_ProcessBinarySpectrum+0x2a0>
      shifts -= (kShiftsLinearSlope * self->farend->far_bit_counts[i]) >> 4;
    e88835f4:	02b905bb          	mulw	a1,s2,a1
    int32_t bit_count = (self->bit_counts[i] << 9);  // Q9.
    e88835f8:	641c                	ld	a5,8(s0)
      WebRtc_MeanEstimatorFix(bit_count, shifts, &(self->mean_bit_counts[i]));
    e88835fa:	6010                	ld	a2,0(s0)
    int32_t bit_count = (self->bit_counts[i] << 9);  // Q9.
    e88835fc:	4497c50b          	lrw	a0,a5,s1,2
      WebRtc_MeanEstimatorFix(bit_count, shifts, &(self->mean_bit_counts[i]));
    e8883600:	963a                	add	a2,a2,a4
    e8883602:	0095151b          	slliw	a0,a0,0x9
      shifts -= (kShiftsLinearSlope * self->farend->far_bit_counts[i]) >> 4;
    e8883606:	4045d59b          	sraiw	a1,a1,0x4
      WebRtc_MeanEstimatorFix(bit_count, shifts, &(self->mean_bit_counts[i]));
    e888360a:	40b985bb          	subw	a1,s3,a1
    e888360e:	d3dff0ef          	jal	ra,e888334a <WebRtc_MeanEstimatorFix>
  for (i = 0; i < self->farend->history_size; i++) {
    e8883612:	2485                	addiw	s1,s1,1
    e8883614:	bbf9                	j	e88833f2 <WebRtc_ProcessBinarySpectrum+0x80>
    if (self->mean_bit_counts[i] < value_best_candidate) {
    e8883616:	6010                	ld	a2,0(s0)
    e8883618:	44d6460b          	lrw	a2,a2,a3,2
    e888361c:	00b65463          	bge	a2,a1,e8883624 <WebRtc_ProcessBinarySpectrum+0x2b2>
    e8883620:	85b2                	mv	a1,a2
    e8883622:	87aa                	mv	a5,a0
    if (self->mean_bit_counts[i] > value_worst_candidate) {
    e8883624:	00e62533          	slt	a0,a2,a4
    e8883628:	40a6170b          	mveqz	a4,a2,a0
    e888362c:	2701                	sext.w	a4,a4
  for (i = 0; i < self->farend->history_size; i++) {
    e888362e:	0685                	addi	a3,a3,1
    e8883630:	bbd1                	j	e8883404 <WebRtc_ProcessBinarySpectrum+0x92>
      threshold = kProbabilityLowerLimit;
    e8883632:	86c2                	mv	a3,a6
    e8883634:	b519                	j	e888343a <WebRtc_ProcessBinarySpectrum+0xc8>
        (i <= self->last_delay + 1) && (i != candidate_delay);
    e8883636:	ffe5031b          	addiw	t1,a0,-2
    e888363a:	4701                	li	a4,0
    e888363c:	0066c963          	blt	a3,t1,e888364e <WebRtc_ProcessBinarySpectrum+0x2dc>
    int is_in_last_set = (i >= self->last_delay - 2) &&
    e8883640:	2505                	addiw	a0,a0,1
    e8883642:	00d54663          	blt	a0,a3,e888364e <WebRtc_ProcessBinarySpectrum+0x2dc>
        (i <= self->last_delay + 1) && (i != candidate_delay);
    e8883646:	40d78733          	sub	a4,a5,a3
    e888364a:	00e03733          	snez	a4,a4
    int is_in_candidate_set = (i >= candidate_delay - 2) &&
    e888364e:	4501                	li	a0,0
    e8883650:	01c6c763          	blt	a3,t3,e888365e <WebRtc_ProcessBinarySpectrum+0x2ec>
    e8883654:	00dea533          	slt	a0,t4,a3
    e8883658:	00154513          	xori	a0,a0,1
    e888365c:	2501                	sext.w	a0,a0
    self->histogram[i] -= decrease_in_last_set * is_in_last_set +
    e888365e:	d0077653          	fcvt.s.w	fa2,a4
        valley_depth * (!is_in_last_set && !is_in_candidate_set);
    e8883662:	8f49                	or	a4,a4,a0
    e8883664:	00174713          	xori	a4,a4,1
    e8883668:	d0077753          	fcvt.s.w	fa4,a4
    e888366c:	10f77753          	fmul.s	fa4,fa4,fa5
    self->histogram[i] -= decrease_in_last_set * is_in_last_set +
    e8883670:	70d67743          	fmadd.s	fa4,fa2,fa3,fa4
    e8883674:	44d8e60b          	flrw	fa2,a7,a3,2
    e8883678:	08e67653          	fsub.s	fa2,fa2,fa4
    e888367c:	44d8f60b          	fsrw	fa2,a7,a3,2
    if (self->histogram[i] < 0) {
    e8883680:	7c08                	ld	a0,56(s0)
    e8883682:	44d5670b          	flrw	fa4,a0,a3,2
    e8883686:	a0b71753          	flt.s	a4,fa4,fa1
    e888368a:	c319                	beqz	a4,e8883690 <WebRtc_ProcessBinarySpectrum+0x31e>
      self->histogram[i] = 0;
    e888368c:	44d5500b          	srw	zero,a0,a3,2
  for (i = 0; i < self->farend->history_size; ++i) {
    e8883690:	2685                	addiw	a3,a3,1
    e8883692:	bd89                	j	e88834e4 <WebRtc_ProcessBinarySpectrum+0x172>
    fraction = (fraction > 1.f ? 1.f : fraction);
    e8883694:	20c607d3          	fmv.s	fa5,fa2
  } else if (delay_difference < 0) {
    e8883698:	e806dce3          	bgez	a3,e8883530 <WebRtc_ProcessBinarySpectrum+0x1be>
        kFractionSlope * delay_difference;
    e888369c:	d006f753          	fcvt.s.w	fa4,a3
    fraction = kMinFractionWhenPossiblyNonCausal -
    e88836a0:	0004a717          	auipc	a4,0x4a
    e88836a4:	c2072787          	flw	fa5,-992(a4) # e88cd2c0 <kGenFuncTable+0x150>
    e88836a8:	0004a717          	auipc	a4,0x4a
    e88836ac:	bec72587          	flw	fa1,-1044(a4) # e88cd294 <kGenFuncTable+0x124>
    e88836b0:	58f777cb          	fnmsub.s	fa5,fa4,fa5,fa1
    fraction = (fraction > 1.f ? 1.f : fraction);
    e88836b4:	a0f61753          	flt.s	a4,fa2,fa5
    e88836b8:	e6070ce3          	beqz	a4,e8883530 <WebRtc_ProcessBinarySpectrum+0x1be>
    e88836bc:	20c607d3          	fmv.s	fa5,fa2
    e88836c0:	bd85                	j	e8883530 <WebRtc_ProcessBinarySpectrum+0x1be>
      (self->histogram[candidate_delay] >= histogram_threshold) &&
    e88836c2:	4701                	li	a4,0
    e88836c4:	bd59                	j	e888355a <WebRtc_ProcessBinarySpectrum+0x1e8>
  is_robust = (self->last_delay < 0) &&
    e88836c6:	4681                	li	a3,0
  is_robust |= is_instantaneous_valid && is_histogram_valid;
    e88836c8:	e8060fe3          	beqz	a2,e8883566 <WebRtc_ProcessBinarySpectrum+0x1f4>
  is_robust = (self->last_delay < 0) &&
    e88836cc:	4601                	li	a2,0
    e88836ce:	bd51                	j	e8883562 <WebRtc_ProcessBinarySpectrum+0x1f0>

00000000e88836d0 <WebRtcSpl_ComplexBitReverse>:
  /* For any specific value of stages, we know exactly the indexes that are
   * bit reversed. Currently (Feb. 2012) in WebRTC the only possible values of
   * stages are 7 and 8, so we use tables to save unnecessary iterations and
   * calculations for these two cases.
   */
  if (stages == 7 || stages == 8) {
    e88836d0:	ff95871b          	addiw	a4,a1,-7
    e88836d4:	4785                	li	a5,1
    e88836d6:	04e7e763          	bltu	a5,a4,e8883724 <WebRtcSpl_ComplexBitReverse+0x54>
    int m = 0;
    int length = 112;
    const int16_t* index = index_7;

    if (stages == 8) {
    e88836da:	47a1                	li	a5,8
    e88836dc:	02f59d63          	bne	a1,a5,e8883716 <WebRtcSpl_ComplexBitReverse+0x46>
      length = 240;
      index = index_8;
    e88836e0:	0004b717          	auipc	a4,0x4b
    e88836e4:	ef070713          	addi	a4,a4,-272 # e88ce5d0 <index_8>
      length = 240;
    e88836e8:	0f000693          	li	a3,240
    e88836ec:	4781                	li	a5,0
       */
      int32_t* complex_data_ptr = (int32_t*)complex_data;
      int32_t temp = 0;

      temp = complex_data_ptr[index[m]];  /* Real and imaginary */
      complex_data_ptr[index[m]] = complex_data_ptr[index[m + 1]];
    e88836ee:	00270313          	addi	t1,a4,2
    e88836f2:	22f3460b          	lrh	a2,t1,a5,1
      temp = complex_data_ptr[index[m]];  /* Real and imaginary */
    e88836f6:	22f7458b          	lrh	a1,a4,a5,1
    e88836fa:	0789                	addi	a5,a5,2
      complex_data_ptr[index[m]] = complex_data_ptr[index[m + 1]];
    e88836fc:	44c5488b          	lrw	a7,a0,a2,2
      temp = complex_data_ptr[index[m]];  /* Real and imaginary */
    e8883700:	44b5480b          	lrw	a6,a0,a1,2
      complex_data_ptr[index[m]] = complex_data_ptr[index[m + 1]];
    e8883704:	44b5588b          	srw	a7,a0,a1,2
      complex_data_ptr[index[m + 1]] = temp;
    e8883708:	44c5580b          	srw	a6,a0,a2,2
    for (m = 0; m < length; m += 2) {
    e888370c:	0007861b          	sext.w	a2,a5
    e8883710:	fed641e3          	blt	a2,a3,e88836f2 <WebRtcSpl_ComplexBitReverse+0x22>
    e8883714:	8082                	ret
    const int16_t* index = index_7;
    e8883716:	0004b717          	auipc	a4,0x4b
    e888371a:	dda70713          	addi	a4,a4,-550 # e88ce4f0 <index_7>
    int length = 112;
    e888371e:	07000693          	li	a3,112
    e8883722:	b7e9                	j	e88836ec <WebRtcSpl_ComplexBitReverse+0x1c>
    }
  }
  else {
    int m = 0, mr = 0, l = 0;
    int n = 1 << stages;
    e8883724:	4785                	li	a5,1
    e8883726:	00b7963b          	sllw	a2,a5,a1
    int nn = n - 1;
    e888372a:	fff6059b          	addiw	a1,a2,-1
    int m = 0, mr = 0, l = 0;
    e888372e:	4781                	li	a5,0

    /* Decimation in time - re-order data */
    for (m = 1; m <= nn; ++m) {
    e8883730:	4705                	li	a4,1
    e8883732:	00e5d363          	bge	a1,a4,e8883738 <WebRtcSpl_ComplexBitReverse+0x68>
      temp = complex_data_ptr[m];  /* Real and imaginary */
      complex_data_ptr[m] = complex_data_ptr[mr];
      complex_data_ptr[mr] = temp;
    }
  }
}
    e8883736:	8082                	ret
      l = n;
    e8883738:	86b2                	mv	a3,a2
      } while (l > nn - mr);
    e888373a:	40f5883b          	subw	a6,a1,a5
        l >>= 1;
    e888373e:	8685                	srai	a3,a3,0x1
      } while (l > nn - mr);
    e8883740:	fed84fe3          	blt	a6,a3,e888373e <WebRtcSpl_ComplexBitReverse+0x6e>
      mr = (mr & (l - 1)) + l;
    e8883744:	fff6881b          	addiw	a6,a3,-1
    e8883748:	0107f7b3          	and	a5,a5,a6
    e888374c:	9fb5                	addw	a5,a5,a3
      if (mr <= m) {
    e888374e:	00f75a63          	bge	a4,a5,e8883762 <WebRtcSpl_ComplexBitReverse+0x92>
      complex_data_ptr[m] = complex_data_ptr[mr];
    e8883752:	44f5480b          	lrw	a6,a0,a5,2
      temp = complex_data_ptr[m];  /* Real and imaginary */
    e8883756:	44e5468b          	lrw	a3,a0,a4,2
      complex_data_ptr[m] = complex_data_ptr[mr];
    e888375a:	44e5580b          	srw	a6,a0,a4,2
      complex_data_ptr[mr] = temp;
    e888375e:	44f5568b          	srw	a3,a0,a5,2
    for (m = 1; m <= nn; ++m) {
    e8883762:	2705                	addiw	a4,a4,1
    e8883764:	b7f9                	j	e8883732 <WebRtcSpl_ComplexBitReverse+0x62>

00000000e8883766 <WebRtcSpl_ComplexFFT>:
    int32_t tr32, ti32, qr32, qi32;

    /* The 1024-value is a constant given from the size of kSinTable1024[],
     * and should not be changed depending on the input parameter 'stages'
     */
    n = 1 << stages;
    e8883766:	4785                	li	a5,1
    e8883768:	00b795bb          	sllw	a1,a5,a1
    if (n > 1024)
    e888376c:	40000793          	li	a5,1024
    e8883770:	1ab7c663          	blt	a5,a1,e888391c <WebRtcSpl_ComplexFFT+0x1b6>
{
    e8883774:	7179                	addi	sp,sp,-48
    e8883776:	f891540b          	sdd	s0,s1,(sp),0,4
    e888377a:	fb31590b          	sdd	s2,s3,(sp),1,4
    e888377e:	fd515a0b          	sdd	s4,s5,(sp),2,4

    l = 1;
    k = 10 - 1; /* Constant for given kSinTable1024[]. Do not change
         depending on the input parameter 'stages' */

    if (mode == 0)
    e8883782:	10060163          	beqz	a2,e8883884 <WebRtcSpl_ComplexFFT+0x11e>
    k = 10 - 1; /* Constant for given kSinTable1024[]. Do not change
    e8883786:	43a5                	li	t2,9
    l = 1;
    e8883788:	4f05                	li	t5,1

                /* The 256-value is a constant given as 1/4 of the size of
                 * kSinTable1024[], and should not be changed depending on the input
                 * parameter 'stages'. It will result in 0 <= j < N_SINE_WAVE/2
                 */
                wr = kSinTable1024[j + 256];
    e888378a:	0004b417          	auipc	s0,0x4b
    e888378e:	02640413          	addi	s0,s0,38 # e88ce7b0 <kSinTable1024>
                       [wri]"r"(wri),
                       [cfftrnd]"r"(CFFTRND)
                    );
    
#else
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e8883792:	4485                	li	s1,1
    e8883794:	6911                	lui	s2,0x4
        while (l < n)
    e8883796:	06bf5363          	bge	t5,a1,e88837fc <WebRtcSpl_ComplexFFT+0x96>
            istep = l << 1;
    e888379a:	001f1e1b          	slliw	t3,t5,0x1
            for (m = 0; m < l; ++m)
    e888379e:	4e81                	li	t4,0
                j = m << k;
    e88837a0:	007e973b          	sllw	a4,t4,t2
                wi = -kSinTable1024[j];
    e88837a4:	a2e4460b          	lrhu	a2,s0,a4,1
                wr = kSinTable1024[j + 256];
    e88837a8:	1007079b          	addiw	a5,a4,256
    e88837ac:	22f4498b          	lrh	s3,s0,a5,1
                wi = -kSinTable1024[j];
    e88837b0:	40c0063b          	negw	a2,a2
    e88837b4:	3c06260b          	ext	a2,a2,15,0
                for (i = m; i < n; i += istep)
    e88837b8:	8ff6                	mv	t6,t4
    e88837ba:	0cbfcc63          	blt	t6,a1,e8883892 <WebRtcSpl_ComplexFFT+0x12c>
            for (m = 0; m < l; ++m)
    e88837be:	2e85                	addiw	t4,t4,1
    e88837c0:	ffdf10e3          	bne	t5,t4,e88837a0 <WebRtcSpl_ComplexFFT+0x3a>
                    frfi[2 * i + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(
                            (qi32 + ti32 + CFFTRND2), 1 + CFFTSFT);
                }
            }

            --k;
    e88837c4:	33fd                	addiw	t2,t2,-1
            l = istep;
    e88837c6:	8f72                	mv	t5,t3
    e88837c8:	b7f9                	j	e8883796 <WebRtcSpl_ComplexFFT+0x30>
            istep = l << 1;
    e88837ca:	001e189b          	slliw	a7,t3,0x1
            for (m = 0; m < l; ++m)
    e88837ce:	4301                	li	t1,0
                j = m << k;
    e88837d0:	01d3173b          	sllw	a4,t1,t4
                wi = -kSinTable1024[j];
    e88837d4:	a2ef480b          	lrhu	a6,t5,a4,1
                wr = kSinTable1024[j + 256];
    e88837d8:	1007079b          	addiw	a5,a4,256
    e88837dc:	22ff428b          	lrh	t0,t5,a5,1
                wi = -kSinTable1024[j];
    e88837e0:	4100083b          	negw	a6,a6
    e88837e4:	3c08280b          	ext	a6,a6,15,0
                for (i = m; i < n; i += istep)
    e88837e8:	8f9a                	mv	t6,t1
    e88837ea:	02bfc263          	blt	t6,a1,e888380e <WebRtcSpl_ComplexFFT+0xa8>
            for (m = 0; m < l; ++m)
    e88837ee:	2305                	addiw	t1,t1,1
    e88837f0:	fe6e10e3          	bne	t3,t1,e88837d0 <WebRtcSpl_ComplexFFT+0x6a>
            --k;
    e88837f4:	3efd                	addiw	t4,t4,-1
            l = istep;
    e88837f6:	8e46                	mv	t3,a7
        while (l < n)
    e88837f8:	fcbe49e3          	blt	t3,a1,e88837ca <WebRtcSpl_ComplexFFT+0x64>
        }
    }
    return 0;
}
    e88837fc:	f891440b          	ldd	s0,s1,(sp),0,4
    e8883800:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8883804:	fd514a0b          	ldd	s4,s5,(sp),2,4
    return 0;
    e8883808:	4501                	li	a0,0
}
    e888380a:	6145                	addi	sp,sp,48
    e888380c:	8082                	ret
                    tr32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e888380e:	001f939b          	slliw	t2,t6,0x1
    e8883812:	011384bb          	addw	s1,t2,a7
    e8883816:	3295478b          	lurh	a5,a0,s1,1
    e888381a:	7c04b40b          	extu	s0,s1,31,0
    e888381e:	0406                	slli	s0,s0,0x1
    e8883820:	02f2873b          	mulw	a4,t0,a5
    e8883824:	0409                	addi	s0,s0,2
    e8883826:	2085468b          	lrh	a3,a0,s0,0
                    qr32 = (int32_t)frfi[2 * i];
    e888382a:	3275498b          	lurh	s3,a0,t2,1
                for (i = m; i < n; i += istep)
    e888382e:	011f8fbb          	addw	t6,t6,a7
                    ti32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e8883832:	02f807bb          	mulw	a5,a6,a5
                    tr32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e8883836:	2ad8170b          	mulsh	a4,a6,a3
                    ti32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e888383a:	24d2978b          	mulaw	a5,t0,a3
                    qr32 = (int32_t)frfi[2 * i];
    e888383e:	7c03b68b          	extu	a3,t2,31,0
    e8883842:	0686                	slli	a3,a3,0x1
                    tr32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e8883844:	40f7571b          	sraiw	a4,a4,0xf
                    qi32 = (int32_t)frfi[2 * i + 1];
    e8883848:	0689                	addi	a3,a3,2
    e888384a:	20d5490b          	lrh	s2,a0,a3,0
                    frfi[2 * j] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qr32 - tr32, 1);
    e888384e:	40e9863b          	subw	a2,s3,a4
    e8883852:	4016561b          	sraiw	a2,a2,0x1
    e8883856:	3295560b          	surh	a2,a0,s1,1
                    frfi[2 * i] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qr32 + tr32, 1);
    e888385a:	0137073b          	addw	a4,a4,s3
                    ti32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e888385e:	40f7d79b          	sraiw	a5,a5,0xf
                    frfi[2 * j + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qi32 - ti32, 1);
    e8883862:	40f9063b          	subw	a2,s2,a5
    e8883866:	4016561b          	sraiw	a2,a2,0x1
    e888386a:	2085560b          	srh	a2,a0,s0,0
                    frfi[2 * i] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qr32 + tr32, 1);
    e888386e:	4017571b          	sraiw	a4,a4,0x1
    e8883872:	3275570b          	surh	a4,a0,t2,1
                    frfi[2 * i + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qi32 + ti32, 1);
    e8883876:	012787bb          	addw	a5,a5,s2
    e888387a:	4017d79b          	sraiw	a5,a5,0x1
    e888387e:	20d5578b          	srh	a5,a0,a3,0
                for (i = m; i < n; i += istep)
    e8883882:	b7a5                	j	e88837ea <WebRtcSpl_ComplexFFT+0x84>
    k = 10 - 1; /* Constant for given kSinTable1024[]. Do not change
    e8883884:	4ea5                	li	t4,9
    l = 1;
    e8883886:	4e05                	li	t3,1
                wr = kSinTable1024[j + 256];
    e8883888:	0004bf17          	auipc	t5,0x4b
    e888388c:	f28f0f13          	addi	t5,t5,-216 # e88ce7b0 <kSinTable1024>
    e8883890:	b7a5                	j	e88837f8 <WebRtcSpl_ComplexFFT+0x92>
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e8883892:	001f929b          	slliw	t0,t6,0x1
    e8883896:	01c28a3b          	addw	s4,t0,t3
    e888389a:	3345478b          	lurh	a5,a0,s4,1
                    ti32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e888389e:	8826                	mv	a6,s1
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e88838a0:	8726                	mv	a4,s1
                    ti32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e88838a2:	24c7980b          	mulaw	a6,a5,a2
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e88838a6:	7c0a330b          	extu	t1,s4,31,0
    e88838aa:	0306                	slli	t1,t1,0x1
                            - WEBRTC_SPL_MUL_16_16(wi, frfi[2 * j + 1]) + CFFTRND;
    e88838ac:	0309                	addi	t1,t1,2
    e88838ae:	2065468b          	lrh	a3,a0,t1,0
                for (i = m; i < n; i += istep)
    e88838b2:	01cf8fbb          	addw	t6,t6,t3
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e88838b6:	24f9970b          	mulaw	a4,s3,a5
                    ti32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e88838ba:	87c2                	mv	a5,a6
                    qr32 = ((int32_t)frfi[2 * i]) << CFFTSFT;
    e88838bc:	7c02b80b          	extu	a6,t0,31,0
    e88838c0:	0806                	slli	a6,a6,0x1
                    qi32 = ((int32_t)frfi[2 * i + 1]) << CFFTSFT;
    e88838c2:	0809                	addi	a6,a6,2
                    ti32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e88838c4:	24d9978b          	mulaw	a5,s3,a3
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e88838c8:	2ad6170b          	mulsh	a4,a2,a3
                    qr32 = ((int32_t)frfi[2 * i]) << CFFTSFT;
    e88838cc:	3255468b          	lurh	a3,a0,t0,1
                    ti32 = WEBRTC_SPL_RSHIFT_W32(ti32, 15 - CFFTSFT);
    e88838d0:	4017d89b          	sraiw	a7,a5,0x1
                    qi32 = ((int32_t)frfi[2 * i + 1]) << CFFTSFT;
    e88838d4:	2105478b          	lrh	a5,a0,a6,0
                    qr32 = ((int32_t)frfi[2 * i]) << CFFTSFT;
    e88838d8:	00e6969b          	slliw	a3,a3,0xe
    e88838dc:	012686bb          	addw	a3,a3,s2
                    qi32 = ((int32_t)frfi[2 * i + 1]) << CFFTSFT;
    e88838e0:	00e7979b          	slliw	a5,a5,0xe
    e88838e4:	00f907bb          	addw	a5,s2,a5
                    tr32 = WEBRTC_SPL_RSHIFT_W32(tr32, 15 - CFFTSFT);
    e88838e8:	4017571b          	sraiw	a4,a4,0x1
                    frfi[2 * j] = (int16_t)WEBRTC_SPL_RSHIFT_W32(
    e88838ec:	40e68abb          	subw	s5,a3,a4
    e88838f0:	40fada9b          	sraiw	s5,s5,0xf
    e88838f4:	33455a8b          	surh	s5,a0,s4,1
                    frfi[2 * j + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(
    e88838f8:	41178a3b          	subw	s4,a5,a7
    e88838fc:	40fa5a1b          	sraiw	s4,s4,0xf
    e8883900:	20655a0b          	srh	s4,a0,t1,0
                    frfi[2 * i] = (int16_t)WEBRTC_SPL_RSHIFT_W32(
    e8883904:	9f35                	addw	a4,a4,a3
    e8883906:	40f7571b          	sraiw	a4,a4,0xf
    e888390a:	3255570b          	surh	a4,a0,t0,1
                    frfi[2 * i + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(
    e888390e:	011787bb          	addw	a5,a5,a7
    e8883912:	40f7d79b          	sraiw	a5,a5,0xf
    e8883916:	2105578b          	srh	a5,a0,a6,0
                for (i = m; i < n; i += istep)
    e888391a:	b545                	j	e88837ba <WebRtcSpl_ComplexFFT+0x54>
        return -1;
    e888391c:	557d                	li	a0,-1
}
    e888391e:	8082                	ret

00000000e8883920 <WebRtcSpl_ComplexIFFT>:

int WebRtcSpl_ComplexIFFT(int16_t frfi[], int stages, int mode)
{
    e8883920:	7119                	addi	sp,sp,-128
    e8883922:	f4a6                	sd	s1,104(sp)
    e8883924:	f0ca                	sd	s2,96(sp)
    e8883926:	fc86                	sd	ra,120(sp)
    int32_t tmp32, round2;

    /* The 1024-value is a constant given from the size of kSinTable1024[],
     * and should not be changed depending on the input parameter 'stages'
     */
    n = 1 << stages;
    e8883928:	4905                	li	s2,1
{
    e888392a:	f8a2                	sd	s0,112(sp)
    e888392c:	ecce                	sd	s3,88(sp)
    e888392e:	e8d2                	sd	s4,80(sp)
    e8883930:	e4d6                	sd	s5,72(sp)
    e8883932:	e0da                	sd	s6,64(sp)
    e8883934:	fc5e                	sd	s7,56(sp)
    e8883936:	f862                	sd	s8,48(sp)
    e8883938:	f466                	sd	s9,40(sp)
    e888393a:	f06a                	sd	s10,32(sp)
    e888393c:	ec6e                	sd	s11,24(sp)
    n = 1 << stages;
    e888393e:	00b9193b          	sllw	s2,s2,a1
    if (n > 1024)
    e8883942:	40000793          	li	a5,1024
        return -1;
    e8883946:	54fd                	li	s1,-1
    if (n > 1024)
    e8883948:	0327c863          	blt	a5,s2,e8883978 <WebRtcSpl_ComplexIFFT+0x58>
    {
        // variable scaling, depending upon data
        shift = 0;
        round2 = 8192;

        tmp32 = (int32_t)WebRtcSpl_MaxAbsValueW16(frfi, 2 * n);
    e888394c:	4789                	li	a5,2
    e888394e:	00b797bb          	sllw	a5,a5,a1
        if (tmp32 > 13573)
    e8883952:	6a8d                	lui	s5,0x3
        {
            shift++;
            scale++;
            round2 <<= 1;
        }
        if (tmp32 > 27146)
    e8883954:	6b1d                	lui	s6,0x7
    e8883956:	8bb2                	mv	s7,a2
    e8883958:	842a                	mv	s0,a0
        tmp32 = (int32_t)WebRtcSpl_MaxAbsValueW16(frfi, 2 * n);
    e888395a:	e43e                	sd	a5,8(sp)
    scale = 0;
    e888395c:	4481                	li	s1,0
    k = 10 - 1; /* Constant for given kSinTable1024[]. Do not change
    e888395e:	4a25                	li	s4,9
    l = 1;
    e8883960:	4985                	li	s3,1
        tmp32 = (int32_t)WebRtcSpl_MaxAbsValueW16(frfi, 2 * n);
    e8883962:	00061c97          	auipc	s9,0x61
    e8883966:	ae6c8c93          	addi	s9,s9,-1306 # e88e4448 <WebRtcSpl_MaxAbsValueW16>
        if (tmp32 > 13573)
    e888396a:	505a8a93          	addi	s5,s5,1285 # 3505 <memcmp-0xe87fcafb>
        if (tmp32 > 27146)
    e888396e:	a0ab0b13          	addi	s6,s6,-1526 # 6a0a <memcmp-0xe87f95f6>
                       [wri]"r"(wri),
                       [cifftrnd]"r"(CIFFTRND)
                    );
#else

                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e8883972:	4c05                	li	s8,1
    while (l < n)
    e8883974:	0329c263          	blt	s3,s2,e8883998 <WebRtcSpl_ComplexIFFT+0x78>
        }
        --k;
        l = istep;
    }
    return scale;
}
    e8883978:	70e6                	ld	ra,120(sp)
    e888397a:	7446                	ld	s0,112(sp)
    e888397c:	8526                	mv	a0,s1
    e888397e:	7906                	ld	s2,96(sp)
    e8883980:	74a6                	ld	s1,104(sp)
    e8883982:	69e6                	ld	s3,88(sp)
    e8883984:	6a46                	ld	s4,80(sp)
    e8883986:	6aa6                	ld	s5,72(sp)
    e8883988:	6b06                	ld	s6,64(sp)
    e888398a:	7be2                	ld	s7,56(sp)
    e888398c:	7c42                	ld	s8,48(sp)
    e888398e:	7ca2                	ld	s9,40(sp)
    e8883990:	7d02                	ld	s10,32(sp)
    e8883992:	6de2                	ld	s11,24(sp)
    e8883994:	6109                	addi	sp,sp,128
    e8883996:	8082                	ret
        tmp32 = (int32_t)WebRtcSpl_MaxAbsValueW16(frfi, 2 * n);
    e8883998:	000cb783          	ld	a5,0(s9)
    e888399c:	65a2                	ld	a1,8(sp)
    e888399e:	8522                	mv	a0,s0
    e88839a0:	9782                	jalr	a5
    e88839a2:	2501                	sext.w	a0,a0
        if (tmp32 > 13573)
    e88839a4:	04aad563          	bge	s5,a0,e88839ee <WebRtcSpl_ComplexIFFT+0xce>
        if (tmp32 > 27146)
    e88839a8:	02ab4f63          	blt	s6,a0,e88839e6 <WebRtcSpl_ComplexIFFT+0xc6>
            scale++;
    e88839ac:	2485                	addiw	s1,s1,1
            round2 <<= 1;
    e88839ae:	6e91                	lui	t4,0x4
            shift++;
    e88839b0:	4785                	li	a5,1
        istep = l << 1;
    e88839b2:	0019959b          	slliw	a1,s3,0x1
        if (mode == 0)
    e88839b6:	0004bf17          	auipc	t5,0x4b
    e88839ba:	dfaf0f13          	addi	t5,t5,-518 # e88ce7b0 <kSinTable1024>
    e88839be:	0a0b9563          	bnez	s7,e8883a68 <WebRtcSpl_ComplexIFFT+0x148>
            for (m = 0; m < l; ++m)
    e88839c2:	4601                	li	a2,0
                j = m << k;
    e88839c4:	014616bb          	sllw	a3,a2,s4
                wr = kSinTable1024[j + 256];
    e88839c8:	1006871b          	addiw	a4,a3,256
    e88839cc:	22ef480b          	lrh	a6,t5,a4,1
                wi = kSinTable1024[j];
    e88839d0:	22df488b          	lrh	a7,t5,a3,1
                for (i = m; i < n; i += istep)
    e88839d4:	8532                	mv	a0,a2
    e88839d6:	01254f63          	blt	a0,s2,e88839f4 <WebRtcSpl_ComplexIFFT+0xd4>
            for (m = 0; m < l; ++m)
    e88839da:	2605                	addiw	a2,a2,1
    e88839dc:	fec994e3          	bne	s3,a2,e88839c4 <WebRtcSpl_ComplexIFFT+0xa4>
        --k;
    e88839e0:	3a7d                	addiw	s4,s4,-1
        l = istep;
    e88839e2:	89ae                	mv	s3,a1
    e88839e4:	bf41                	j	e8883974 <WebRtcSpl_ComplexIFFT+0x54>
            scale++;
    e88839e6:	2489                	addiw	s1,s1,2
            round2 <<= 1;
    e88839e8:	6ea1                	lui	t4,0x8
            shift++;
    e88839ea:	4789                	li	a5,2
    e88839ec:	b7d9                	j	e88839b2 <WebRtcSpl_ComplexIFFT+0x92>
        round2 = 8192;
    e88839ee:	6e89                	lui	t4,0x2
        shift = 0;
    e88839f0:	4781                	li	a5,0
    e88839f2:	b7c1                	j	e88839b2 <WebRtcSpl_ComplexIFFT+0x92>
                    tr32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16_RSFT(wr, frfi[2 * j], 0)
    e88839f4:	00151e1b          	slliw	t3,a0,0x1
    e88839f8:	00be0fbb          	addw	t6,t3,a1
    e88839fc:	33f4470b          	lurh	a4,s0,t6,1
    e8883a00:	7c0fbe8b          	extu	t4,t6,31,0
    e8883a04:	0e86                	slli	t4,t4,0x1
    e8883a06:	02e806bb          	mulw	a3,a6,a4
    e8883a0a:	0e89                	addi	t4,t4,2
    e8883a0c:	21d4430b          	lrh	t1,s0,t4,0
                    qr32 = (int32_t)frfi[2 * i];
    e8883a10:	33c4438b          	lurh	t2,s0,t3,1
                for (i = m; i < n; i += istep)
    e8883a14:	9d2d                	addw	a0,a0,a1
                    ti32 = WEBRTC_SPL_RSHIFT_W32(
    e8883a16:	02e8873b          	mulw	a4,a7,a4
                    tr32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16_RSFT(wr, frfi[2 * j], 0)
    e8883a1a:	2a68968b          	mulsh	a3,a7,t1
                    ti32 = WEBRTC_SPL_RSHIFT_W32(
    e8883a1e:	2468170b          	mulaw	a4,a6,t1
                    qr32 = (int32_t)frfi[2 * i];
    e8883a22:	7c0e330b          	extu	t1,t3,31,0
    e8883a26:	0306                	slli	t1,t1,0x1
                    qi32 = (int32_t)frfi[2 * i + 1];
    e8883a28:	0309                	addi	t1,t1,2
    e8883a2a:	2064428b          	lrh	t0,s0,t1,0
                    tr32 = WEBRTC_SPL_RSHIFT_W32((WEBRTC_SPL_MUL_16_16_RSFT(wr, frfi[2 * j], 0)
    e8883a2e:	40f6d69b          	sraiw	a3,a3,0xf
                    frfi[2 * j] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qr32 - tr32, shift);
    e8883a32:	40d38d3b          	subw	s10,t2,a3
    e8883a36:	40fd5d3b          	sraw	s10,s10,a5
    e8883a3a:	33f45d0b          	surh	s10,s0,t6,1
                    frfi[2 * i] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qr32 + tr32, shift);
    e8883a3e:	007686bb          	addw	a3,a3,t2
                    ti32 = WEBRTC_SPL_RSHIFT_W32(
    e8883a42:	40f7571b          	sraiw	a4,a4,0xf
                    frfi[2 * j + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qi32 - ti32, shift);
    e8883a46:	40e28fbb          	subw	t6,t0,a4
    e8883a4a:	40ffdfbb          	sraw	t6,t6,a5
    e8883a4e:	21d45f8b          	srh	t6,s0,t4,0
                    frfi[2 * i] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qr32 + tr32, shift);
    e8883a52:	40f6d6bb          	sraw	a3,a3,a5
    e8883a56:	33c4568b          	surh	a3,s0,t3,1
                    frfi[2 * i + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(qi32 + ti32, shift);
    e8883a5a:	0057073b          	addw	a4,a4,t0
    e8883a5e:	40f7573b          	sraw	a4,a4,a5
    e8883a62:	2064570b          	srh	a4,s0,t1,0
                for (i = m; i < n; i += istep)
    e8883a66:	bf85                	j	e88839d6 <WebRtcSpl_ComplexIFFT+0xb6>
            for (m = 0; m < l; ++m)
    e8883a68:	4e01                	li	t3,0
                    frfi[2 * j] = (int16_t)WEBRTC_SPL_RSHIFT_W32((qr32 - tr32+round2),
    e8883a6a:	07b9                	addi	a5,a5,14
                j = m << k;
    e8883a6c:	014e16bb          	sllw	a3,t3,s4
                wr = kSinTable1024[j + 256];
    e8883a70:	1006871b          	addiw	a4,a3,256
    e8883a74:	22ef4d0b          	lrh	s10,t5,a4,1
                wi = kSinTable1024[j];
    e8883a78:	22df4d8b          	lrh	s11,t5,a3,1
                for (i = m; i < n; i += istep)
    e8883a7c:	8ff2                	mv	t6,t3
    e8883a7e:	012fc663          	blt	t6,s2,e8883a8a <WebRtcSpl_ComplexIFFT+0x16a>
            for (m = 0; m < l; ++m)
    e8883a82:	2e05                	addiw	t3,t3,1
    e8883a84:	ffc994e3          	bne	s3,t3,e8883a6c <WebRtcSpl_ComplexIFFT+0x14c>
    e8883a88:	bfa1                	j	e88839e0 <WebRtcSpl_ComplexIFFT+0xc0>
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e8883a8a:	001f929b          	slliw	t0,t6,0x1
    e8883a8e:	00b2863b          	addw	a2,t0,a1
    e8883a92:	32c4470b          	lurh	a4,s0,a2,1
    e8883a96:	86e2                	mv	a3,s8
                    ti32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e8883a98:	8862                	mv	a6,s8
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e8883a9a:	24ed168b          	mulaw	a3,s10,a4
    e8883a9e:	7c06330b          	extu	t1,a2,31,0
    e8883aa2:	0306                	slli	t1,t1,0x1
                            - WEBRTC_SPL_MUL_16_16(wi, frfi[2 * j + 1]) + CIFFTRND;
    e8883aa4:	0309                	addi	t1,t1,2
    e8883aa6:	2064450b          	lrh	a0,s0,t1,0
                    qr32 = ((int32_t)frfi[2 * i]) << CIFFTSFT;
    e8883aaa:	3254488b          	lurh	a7,s0,t0,1
                for (i = m; i < n; i += istep)
    e8883aae:	00bf8fbb          	addw	t6,t6,a1
                    qr32 = ((int32_t)frfi[2 * i]) << CIFFTSFT;
    e8883ab2:	00e8989b          	slliw	a7,a7,0xe
    e8883ab6:	01d888bb          	addw	a7,a7,t4
                    ti32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e8883aba:	25b7180b          	mulaw	a6,a4,s11
                    tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
    e8883abe:	2aad968b          	mulsh	a3,s11,a0
                    ti32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j + 1])
    e8883ac2:	8742                	mv	a4,a6
    e8883ac4:	24ad170b          	mulaw	a4,s10,a0
                    qr32 = ((int32_t)frfi[2 * i]) << CIFFTSFT;
    e8883ac8:	7c02b50b          	extu	a0,t0,31,0
    e8883acc:	0506                	slli	a0,a0,0x1
                    qi32 = ((int32_t)frfi[2 * i + 1]) << CIFFTSFT;
    e8883ace:	0509                	addi	a0,a0,2
    e8883ad0:	20a4480b          	lrh	a6,s0,a0,0
                    tr32 = WEBRTC_SPL_RSHIFT_W32(tr32, 15 - CIFFTSFT);
    e8883ad4:	4016d69b          	sraiw	a3,a3,0x1
                    frfi[2 * j] = (int16_t)WEBRTC_SPL_RSHIFT_W32((qr32 - tr32+round2),
    e8883ad8:	40d883bb          	subw	t2,a7,a3
                    qi32 = ((int32_t)frfi[2 * i + 1]) << CIFFTSFT;
    e8883adc:	00e8181b          	slliw	a6,a6,0xe
    e8883ae0:	010e883b          	addw	a6,t4,a6
                    frfi[2 * j] = (int16_t)WEBRTC_SPL_RSHIFT_W32((qr32 - tr32+round2),
    e8883ae4:	40f3d3bb          	sraw	t2,t2,a5
                    ti32 = WEBRTC_SPL_RSHIFT_W32(ti32, 15 - CIFFTSFT);
    e8883ae8:	4017571b          	sraiw	a4,a4,0x1
                    frfi[2 * j] = (int16_t)WEBRTC_SPL_RSHIFT_W32((qr32 - tr32+round2),
    e8883aec:	32c4538b          	surh	t2,s0,a2,1
                    frfi[2 * j + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(
    e8883af0:	40e8063b          	subw	a2,a6,a4
    e8883af4:	40f6563b          	sraw	a2,a2,a5
    e8883af8:	2064560b          	srh	a2,s0,t1,0
                    frfi[2 * i] = (int16_t)WEBRTC_SPL_RSHIFT_W32((qr32 + tr32 + round2),
    e8883afc:	011686bb          	addw	a3,a3,a7
    e8883b00:	40f6d6bb          	sraw	a3,a3,a5
    e8883b04:	3254568b          	surh	a3,s0,t0,1
                    frfi[2 * i + 1] = (int16_t)WEBRTC_SPL_RSHIFT_W32(
    e8883b08:	0107073b          	addw	a4,a4,a6
    e8883b0c:	40f7573b          	sraw	a4,a4,a5
    e8883b10:	20a4570b          	srh	a4,s0,a0,0
                for (i = m; i < n; i += istep)
    e8883b14:	b7ad                	j	e8883a7e <WebRtcSpl_ComplexIFFT+0x15e>

00000000e8883b16 <low_level_output>:
	}
	return ret;
}

static err_t low_level_output(struct netif *netif, struct pbuf *p)
{
    e8883b16:	715d                	addi	sp,sp,-80
    e8883b18:	e0a2                	sd	s0,64(sp)
    e8883b1a:	e486                	sd	ra,72(sp)
    struct pbuf *q;
    unsigned int i = 0;  
	err_t err = 0;
    e8883b1c:	4501                	li	a0,0
	if(net_callback)
    e8883b1e:	00061417          	auipc	s0,0x61
    e8883b22:	99a40413          	addi	s0,s0,-1638 # e88e44b8 <net_callback>
        i = i + q->len;
  }
  err = ouput_data(lwipTxBuf,i);
  free( lwipTxBuf );
#else
  for(q = p; q != NULL; q = q->next) {
    e8883b26:	ed91                	bnez	a1,e8883b42 <low_level_output+0x2c>
#endif
#if ETH_PAD_SIZE
  pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */
#endif
 
  LINK_STATS_INC(link.xmit);
    e8883b28:	00063717          	auipc	a4,0x63
    e8883b2c:	92870713          	addi	a4,a4,-1752 # e88e6450 <lwip_stats>
    e8883b30:	00075783          	lhu	a5,0(a4)
    e8883b34:	2785                	addiw	a5,a5,1
    e8883b36:	00f71023          	sh	a5,0(a4)

  return err;
}
    e8883b3a:	60a6                	ld	ra,72(sp)
    e8883b3c:	6406                	ld	s0,64(sp)
    e8883b3e:	6161                	addi	sp,sp,80
    e8883b40:	8082                	ret
       err = ouput_data((u8_t*)q->payload,q->len);
    e8883b42:	0125d783          	lhu	a5,18(a1) # 4012 <memcmp-0xe87fbfee>
    e8883b46:	6598                	ld	a4,8(a1)
	data[0] = 0;
    e8883b48:	cc02                	sw	zero,24(sp)
	data[2] = len;
    e8883b4a:	d03e                	sw	a5,32(sp)
	if(net_callback)
    e8883b4c:	601c                	ld	a5,0(s0)
	data[1] = buf;
    e8883b4e:	ce3a                	sw	a4,28(sp)
	uint8_t ret = -1;
    e8883b50:	0ff00513          	li	a0,255
	if(net_callback)
    e8883b54:	c799                	beqz	a5,e8883b62 <low_level_output+0x4c>
		ret = net_callback(data);
    e8883b56:	0828                	addi	a0,sp,24
    e8883b58:	e42e                	sd	a1,8(sp)
    e8883b5a:	9782                	jalr	a5
    e8883b5c:	0ff57513          	andi	a0,a0,255
    e8883b60:	65a2                	ld	a1,8(sp)
       err = ouput_data((u8_t*)q->payload,q->len);
    e8883b62:	1c05250b          	ext	a0,a0,7,0
  for(q = p; q != NULL; q = q->next) {
    e8883b66:	618c                	ld	a1,0(a1)
    e8883b68:	bf7d                	j	e8883b26 <low_level_output+0x10>

00000000e8883b6a <on_init_tcpip>:
	netif_set_up(&net_if);
	netif_set_link_up(&net_if);
}

static void on_init_tcpip(void * arg)
{ /* remove compiler warning */
    e8883b6a:	7179                	addi	sp,sp,-48
    e8883b6c:	f022                	sd	s0,32(sp)
    e8883b6e:	f406                	sd	ra,40(sp)
    e8883b70:	842a                	mv	s0,a0
#if NO_SYS
	LWIP_UNUSED_ARG(arg);
#else /* NO_SYS */
	sys_sem_t *init_sem;
	LWIP_ASSERT("arg != NULL", arg != NULL);
    e8883b72:	e51d                	bnez	a0,e8883ba0 <on_init_tcpip+0x36>
    e8883b74:	02f00593          	li	a1,47
    e8883b78:	0004b517          	auipc	a0,0x4b
    e8883b7c:	49850513          	addi	a0,a0,1176 # e88cf010 <kSinTable1024+0x860>
    e8883b80:	ff8f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8883b84:	00150693          	addi	a3,a0,1
    e8883b88:	0a700613          	li	a2,167
    e8883b8c:	0004b597          	auipc	a1,0x4b
    e8883b90:	51458593          	addi	a1,a1,1300 # e88cf0a0 <kSinTable1024+0x8f0>
    e8883b94:	0004b517          	auipc	a0,0x4b
    e8883b98:	51c50513          	addi	a0,a0,1308 # e88cf0b0 <kSinTable1024+0x900>
    e8883b9c:	f2af80ef          	jal	ra,e887c2c6 <eLIBs_printf>
	IP4_ADDR(&addr, 192, 168, 31, 160);
    e8883ba0:	a01fb7b7          	lui	a5,0xa01fb
    e8883ba4:	8c07879b          	addiw	a5,a5,-1856
    e8883ba8:	c43e                	sw	a5,8(sp)
	IP4_ADDR(&gw, 192, 168, 31, 1);
    e8883baa:	011fb7b7          	lui	a5,0x11fb
    e8883bae:	8c07879b          	addiw	a5,a5,-1856
    e8883bb2:	cc3e                	sw	a5,24(sp)
	IP4_ADDR(&netmask, 255, 255, 255, 0);
    e8883bb4:	010007b7          	lui	a5,0x1000
    e8883bb8:	37fd                	addiw	a5,a5,-1
	netif_add(&net_if, &addr, &netmask, &gw, &net_if, low_level_init, tcpip_input);
    e8883bba:	00061717          	auipc	a4,0x61
    e8883bbe:	90670713          	addi	a4,a4,-1786 # e88e44c0 <net_if>
    e8883bc2:	0834                	addi	a3,sp,24
    e8883bc4:	0810                	addi	a2,sp,16
    e8883bc6:	002c                	addi	a1,sp,8
    e8883bc8:	00003817          	auipc	a6,0x3
    e8883bcc:	19e80813          	addi	a6,a6,414 # e8886d66 <tcpip_input>
    e8883bd0:	853a                	mv	a0,a4
	IP4_ADDR(&netmask, 255, 255, 255, 0);
    e8883bd2:	c83e                	sw	a5,16(sp)
	netif_add(&net_if, &addr, &netmask, &gw, &net_if, low_level_init, tcpip_input);
    e8883bd4:	00000797          	auipc	a5,0x0
    e8883bd8:	03278793          	addi	a5,a5,50 # e8883c06 <low_level_init>
    e8883bdc:	6630a0ef          	jal	ra,e888ea3e <netif_add>
	netif_set_up(&net_if);
    e8883be0:	00061517          	auipc	a0,0x61
    e8883be4:	8e050513          	addi	a0,a0,-1824 # e88e44c0 <net_if>
    e8883be8:	0e00b0ef          	jal	ra,e888ecc8 <netif_set_up>
	netif_set_link_up(&net_if);
    e8883bec:	00061517          	auipc	a0,0x61
    e8883bf0:	8d450513          	addi	a0,a0,-1836 # e88e44c0 <net_if>
    e8883bf4:	1520b0ef          	jal	ra,e888ed46 <netif_set_link_up>

	/* init network interfaces */
	init_netif();

#if !NO_SYS
	sys_sem_signal(init_sem);
    e8883bf8:	8522                	mv	a0,s0
    e8883bfa:	78d130ef          	jal	ra,e8897b86 <sys_sem_signal>
#endif /* !NO_SYS */
}
    e8883bfe:	7402                	ld	s0,32(sp)
    e8883c00:	70a2                	ld	ra,40(sp)
    e8883c02:	6145                	addi	sp,sp,48
    e8883c04:	8082                	ret

00000000e8883c06 <low_level_init>:
{
    e8883c06:	1141                	addi	sp,sp,-16
    e8883c08:	e022                	sd	s0,0(sp)
    e8883c0a:	e406                	sd	ra,8(sp)
  netif->output = etharp_output;
    e8883c0c:	00004797          	auipc	a5,0x4
    e8883c10:	79278793          	addi	a5,a5,1938 # e888839e <etharp_output>
    e8883c14:	e17c                	sd	a5,192(a0)
  netif->linkoutput = low_level_output;
    e8883c16:	00000797          	auipc	a5,0x0
    e8883c1a:	f0078793          	addi	a5,a5,-256 # e8883b16 <low_level_output>
    e8883c1e:	e57c                	sd	a5,200(a0)
  netif->mtu = 1500;
    e8883c20:	5dc00793          	li	a5,1500
    e8883c24:	10f51023          	sh	a5,256(a0)
  netif->hwaddr[0] = MacAddr[0];
    e8883c28:	002a07b7          	lui	a5,0x2a0
    e8883c2c:	60178793          	addi	a5,a5,1537 # 2a0601 <memcmp-0xe855f9ff>
    e8883c30:	17a2                	slli	a5,a5,0x28
    e8883c32:	10f53223          	sd	a5,260(a0)
  netif->name[0] = 'u';
    e8883c36:	679d                	lui	a5,0x7
    e8883c38:	3757879b          	addiw	a5,a5,885
    e8883c3c:	10f51623          	sh	a5,268(a0)
  netif->output_ip6 = ethip6_output;
    e8883c40:	00006797          	auipc	a5,0x6
    e8883c44:	53278793          	addi	a5,a5,1330 # e888a172 <ethip6_output>
    e8883c48:	e97c                	sd	a5,208(a0)
  netif->ip6_autoconfig_enabled = 1;
    e8883c4a:	4785                	li	a5,1
    e8883c4c:	10f507a3          	sb	a5,271(a0)
  netif_create_ip6_linklocal_address(netif, 1);
    e8883c50:	4585                	li	a1,1
{
    e8883c52:	842a                	mv	s0,a0
  netif_create_ip6_linklocal_address(netif, 1);
    e8883c54:	2d60b0ef          	jal	ra,e888ef2a <netif_create_ip6_linklocal_address>
  netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHERNET | NETIF_FLAG_MLD6;
    e8883c58:	05200793          	li	a5,82
    e8883c5c:	10f405a3          	sb	a5,267(s0)
}
    e8883c60:	60a2                	ld	ra,8(sp)
    e8883c62:	6402                	ld	s0,0(sp)
    e8883c64:	4501                	li	a0,0
    e8883c66:	0141                	addi	sp,sp,16
    e8883c68:	8082                	ret

00000000e8883c6a <input_thread>:

#ifdef USE_THREAD_INPUT
static void input_thread(void *arg)
{
    e8883c6a:	7159                	addi	sp,sp,-112
    e8883c6c:	e4ce                	sd	s3,72(sp)
    e8883c6e:	e0d2                	sd	s4,64(sp)
    e8883c70:	fc56                	sd	s5,56(sp)
    e8883c72:	f85a                	sd	s6,48(sp)
    e8883c74:	f45e                	sd	s7,40(sp)
    e8883c76:	f062                	sd	s8,32(sp)
    e8883c78:	ec66                	sd	s9,24(sp)
    e8883c7a:	f486                	sd	ra,104(sp)
    e8883c7c:	f0a2                	sd	s0,96(sp)
    e8883c7e:	eca6                	sd	s1,88(sp)
    e8883c80:	e8ca                	sd	s2,80(sp)
	while(1)
	{
		input_msg *msg = NULL;
		sys_mbox_fetch(&input_mbox,(void **)&msg);
    e8883c82:	00061a97          	auipc	s5,0x61
    e8883c86:	82ea8a93          	addi	s5,s5,-2002 # e88e44b0 <input_mbox>
	LWIP_ASSERT("pkt too big", len <= 0xFFFF);
    e8883c8a:	6b41                	lui	s6,0x10
	err = netif->input(p, netif);
    e8883c8c:	00061b97          	auipc	s7,0x61
    e8883c90:	834b8b93          	addi	s7,s7,-1996 # e88e44c0 <net_if>
	LWIP_ASSERT("alloc failed", p);
    e8883c94:	0004b997          	auipc	s3,0x4b
    e8883c98:	37c98993          	addi	s3,s3,892 # e88cf010 <kSinTable1024+0x860>
    e8883c9c:	0004bc17          	auipc	s8,0x4b
    e8883ca0:	324c0c13          	addi	s8,s8,804 # e88cefc0 <kSinTable1024+0x810>
    e8883ca4:	0004ba17          	auipc	s4,0x4b
    e8883ca8:	40ca0a13          	addi	s4,s4,1036 # e88cf0b0 <kSinTable1024+0x900>
	LWIP_ASSERT("pkt too big", len <= 0xFFFF);
    e8883cac:	0004bc97          	auipc	s9,0x4b
    e8883cb0:	304c8c93          	addi	s9,s9,772 # e88cefb0 <kSinTable1024+0x800>
		sys_mbox_fetch(&input_mbox,(void **)&msg);
    e8883cb4:	4601                	li	a2,0
    e8883cb6:	002c                	addi	a1,sp,8
    e8883cb8:	8556                	mv	a0,s5
		input_msg *msg = NULL;
    e8883cba:	e402                	sd	zero,8(sp)
		sys_mbox_fetch(&input_mbox,(void **)&msg);
    e8883cbc:	044140ef          	jal	ra,e8897d00 <sys_arch_mbox_fetch>
		if(msg != NULL)
    e8883cc0:	67a2                	ld	a5,8(sp)
    e8883cc2:	dbed                	beqz	a5,e8883cb4 <input_thread+0x4a>
		{
			if(msg->buf != NULL)
    e8883cc4:	0007b903          	ld	s2,0(a5)
    e8883cc8:	06090963          	beqz	s2,e8883d3a <input_thread+0xd0>
			{
				input_pkt(&net_if, msg->buf, msg->len);
    e8883ccc:	4780                	lw	s0,8(a5)
	LWIP_ASSERT("pkt too big", len <= 0xFFFF);
    e8883cce:	01646f63          	bltu	s0,s6,e8883cec <input_thread+0x82>
    e8883cd2:	02f00593          	li	a1,47
    e8883cd6:	854e                	mv	a0,s3
    e8883cd8:	ea0f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8883cdc:	00150693          	addi	a3,a0,1
    e8883ce0:	03200613          	li	a2,50
    e8883ce4:	85e6                	mv	a1,s9
    e8883ce6:	8552                	mv	a0,s4
    e8883ce8:	ddef80ef          	jal	ra,e887c2c6 <eLIBs_printf>
	p = pbuf_alloc(PBUF_RAW, (u16_t)len, PBUF_POOL);
    e8883cec:	3c04358b          	extu	a1,s0,15,0
    e8883cf0:	18200613          	li	a2,386
    e8883cf4:	4501                	li	a0,0
    e8883cf6:	69a0b0ef          	jal	ra,e888f390 <pbuf_alloc>
    e8883cfa:	84aa                	mv	s1,a0
	LWIP_ASSERT("alloc failed", p);
    e8883cfc:	842a                	mv	s0,a0
    e8883cfe:	e131                	bnez	a0,e8883d42 <input_thread+0xd8>
    e8883d00:	02f00593          	li	a1,47
    e8883d04:	854e                	mv	a0,s3
    e8883d06:	e72f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8883d0a:	00150693          	addi	a3,a0,1
    e8883d0e:	03400613          	li	a2,52
    e8883d12:	85e2                	mv	a1,s8
    e8883d14:	8552                	mv	a0,s4
    e8883d16:	db0f80ef          	jal	ra,e887c2c6 <eLIBs_printf>
	err = netif->input(p, netif);
    e8883d1a:	0b8bb783          	ld	a5,184(s7)
    e8883d1e:	00060597          	auipc	a1,0x60
    e8883d22:	7a258593          	addi	a1,a1,1954 # e88e44c0 <net_if>
    e8883d26:	8526                	mv	a0,s1
    e8883d28:	9782                	jalr	a5
	if (err != ERR_OK) {
    e8883d2a:	c501                	beqz	a0,e8883d32 <input_thread+0xc8>
		pbuf_free(p);
    e8883d2c:	8526                	mv	a0,s1
    e8883d2e:	51e0b0ef          	jal	ra,e888f24c <pbuf_free>
				free(msg->buf);
    e8883d32:	67a2                	ld	a5,8(sp)
    e8883d34:	6388                	ld	a0,0(a5)
    e8883d36:	dcaf80ef          	jal	ra,e887c300 <eLIBs_free>
			}
			free(msg);
    e8883d3a:	6522                	ld	a0,8(sp)
    e8883d3c:	dc4f80ef          	jal	ra,e887c300 <eLIBs_free>
	{
    e8883d40:	bf95                	j	e8883cb4 <input_thread+0x4a>
		memcpy(q->payload, data, q->len);
    e8883d42:	01245603          	lhu	a2,18(s0)
    e8883d46:	6408                	ld	a0,8(s0)
    e8883d48:	85ca                	mv	a1,s2
    e8883d4a:	e56f80ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
		data += q->len;
    e8883d4e:	01245783          	lhu	a5,18(s0)
	for(q = p; q != NULL; q = q->next) {
    e8883d52:	6000                	ld	s0,0(s0)
		data += q->len;
    e8883d54:	993e                	add	s2,s2,a5
	for(q = p; q != NULL; q = q->next) {
    e8883d56:	f475                	bnez	s0,e8883d42 <input_thread+0xd8>
    e8883d58:	b7c9                	j	e8883d1a <input_thread+0xb0>

00000000e8883d5a <lib_net_usb_input>:
    pthread_exit(0);
}
#endif

void lib_net_usb_input(uint8_t *buf,uint32_t len)
{
    e8883d5a:	7179                	addi	sp,sp,-48
    e8883d5c:	f026                	sd	s1,32(sp)
    e8883d5e:	84aa                	mv	s1,a0
	#ifdef USE_THREAD_INPUT
	input_msg *msg = malloc(sizeof(input_msg));
    e8883d60:	4541                	li	a0,16
{
    e8883d62:	f406                	sd	ra,40(sp)
    e8883d64:	ec22                	sd	s0,24(sp)
    e8883d66:	e42e                	sd	a1,8(sp)
	input_msg *msg = malloc(sizeof(input_msg));
    e8883d68:	ae7f70ef          	jal	ra,e887b84e <my_malloc>
    e8883d6c:	842a                	mv	s0,a0
	msg->len = len;
    e8883d6e:	65a2                	ld	a1,8(sp)
	msg->buf = malloc(len);
    e8883d70:	7c05b60b          	extu	a2,a1,31,0
	msg->len = len;
    e8883d74:	c50c                	sw	a1,8(a0)
	msg->buf = malloc(len);
    e8883d76:	8532                	mv	a0,a2
    e8883d78:	e432                	sd	a2,8(sp)
    e8883d7a:	ad5f70ef          	jal	ra,e887b84e <my_malloc>
    e8883d7e:	e008                	sd	a0,0(s0)
	memcpy(msg->buf,buf,len);
    e8883d80:	6622                	ld	a2,8(sp)
    e8883d82:	85a6                	mv	a1,s1
    e8883d84:	e1cf80ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
	sys_mbox_post(&input_mbox,msg);
	#else
	input_pkt(&net_if, buf, len);
	#endif
}
    e8883d88:	7482                	ld	s1,32(sp)
	sys_mbox_post(&input_mbox,msg);
    e8883d8a:	85a2                	mv	a1,s0
}
    e8883d8c:	6462                	ld	s0,24(sp)
    e8883d8e:	70a2                	ld	ra,40(sp)
	sys_mbox_post(&input_mbox,msg);
    e8883d90:	00060517          	auipc	a0,0x60
    e8883d94:	72050513          	addi	a0,a0,1824 # e88e44b0 <input_mbox>
}
    e8883d98:	6145                	addi	sp,sp,48
	sys_mbox_post(&input_mbox,msg);
    e8883d9a:	7231306f          	j	e8897cbc <sys_mbox_post>

00000000e8883d9e <lib_net_init>:

void lib_net_init(void *callback)
{
    e8883d9e:	1101                	addi	sp,sp,-32
    e8883da0:	e822                	sd	s0,16(sp)
    e8883da2:	842a                	mv	s0,a0
	err_t err;
	sys_sem_t init_sem;

	printf("lib_net_init\n");
    e8883da4:	0004b517          	auipc	a0,0x4b
    e8883da8:	22c50513          	addi	a0,a0,556 # e88cefd0 <kSinTable1024+0x820>
{
    e8883dac:	ec06                	sd	ra,24(sp)
	printf("lib_net_init\n");
    e8883dae:	d18f80ef          	jal	ra,e887c2c6 <eLIBs_printf>

	net_callback = (fun_callback)callback;
    e8883db2:	00060797          	auipc	a5,0x60
    e8883db6:	7087b323          	sd	s0,1798(a5) # e88e44b8 <net_callback>
	
	err = sys_sem_new(&init_sem, 0);
    e8883dba:	4581                	li	a1,0
    e8883dbc:	0028                	addi	a0,sp,8
    e8883dbe:	549130ef          	jal	ra,e8897b06 <sys_sem_new>
	LWIP_ASSERT("failed to create init_sem", err == ERR_OK);
    e8883dc2:	c51d                	beqz	a0,e8883df0 <lib_net_init+0x52>
    e8883dc4:	02f00593          	li	a1,47
    e8883dc8:	0004b517          	auipc	a0,0x4b
    e8883dcc:	24850513          	addi	a0,a0,584 # e88cf010 <kSinTable1024+0x860>
    e8883dd0:	da8f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8883dd4:	00150693          	addi	a3,a0,1
    e8883dd8:	0e000613          	li	a2,224
    e8883ddc:	0004b597          	auipc	a1,0x4b
    e8883de0:	20458593          	addi	a1,a1,516 # e88cefe0 <kSinTable1024+0x830>
    e8883de4:	0004b517          	auipc	a0,0x4b
    e8883de8:	2cc50513          	addi	a0,a0,716 # e88cf0b0 <kSinTable1024+0x900>
    e8883dec:	cdaf80ef          	jal	ra,e887c2c6 <eLIBs_printf>
	LWIP_UNUSED_ARG(err);
	tcpip_init(on_init_tcpip, &init_sem);
    e8883df0:	002c                	addi	a1,sp,8
    e8883df2:	00000517          	auipc	a0,0x0
    e8883df6:	d7850513          	addi	a0,a0,-648 # e8883b6a <on_init_tcpip>
    e8883dfa:	070030ef          	jal	ra,e8886e6a <tcpip_init>
	/* we have to wait for initialization to finish before
	 * calling update_adapter()! */
	#ifdef USE_THREAD_INPUT
	sys_mbox_new(&input_mbox, 0);
    e8883dfe:	4581                	li	a1,0
    e8883e00:	00060517          	auipc	a0,0x60
    e8883e04:	6b050513          	addi	a0,a0,1712 # e88e44b0 <input_mbox>
    e8883e08:	637130ef          	jal	ra,e8897c3e <sys_mbox_new>
	sys_thread_new("input_thread", input_thread, NULL, 0, 0);
    e8883e0c:	4701                	li	a4,0
    e8883e0e:	4681                	li	a3,0
    e8883e10:	4601                	li	a2,0
    e8883e12:	00000597          	auipc	a1,0x0
    e8883e16:	e5858593          	addi	a1,a1,-424 # e8883c6a <input_thread>
    e8883e1a:	0004b517          	auipc	a0,0x4b
    e8883e1e:	1e650513          	addi	a0,a0,486 # e88cf000 <kSinTable1024+0x850>
    e8883e22:	73f130ef          	jal	ra,e8897d60 <sys_thread_new>
	#endif
	
	sys_sem_wait(&init_sem);
    e8883e26:	4581                	li	a1,0
    e8883e28:	0028                	addi	a0,sp,8
    e8883e2a:	569130ef          	jal	ra,e8897b92 <sys_arch_sem_wait>
	sys_sem_free(&init_sem);
    e8883e2e:	0028                	addi	a0,sp,8
    e8883e30:	52f130ef          	jal	ra,e8897b5e <sys_sem_free>
}
    e8883e34:	6442                	ld	s0,16(sp)
    e8883e36:	60e2                	ld	ra,24(sp)
    e8883e38:	6105                	addi	sp,sp,32
    e8883e3a:	8082                	ret

00000000e8883e3c <err_to_errno>:
};

int
err_to_errno(err_t err)
{
  if ((err > 0) || (-err >= (err_t)LWIP_ARRAYSIZE(err_to_errno_table))) {
    e8883e3c:	02a04163          	bgtz	a0,e8883e5e <err_to_errno+0x22>
    e8883e40:	40a0053b          	negw	a0,a0
    e8883e44:	0005079b          	sext.w	a5,a0
    e8883e48:	4741                	li	a4,16
    return EIO;
    e8883e4a:	4515                	li	a0,5
  if ((err > 0) || (-err >= (err_t)LWIP_ARRAYSIZE(err_to_errno_table))) {
    e8883e4c:	00f74a63          	blt	a4,a5,e8883e60 <err_to_errno+0x24>
  }
  return err_to_errno_table[-err];
    e8883e50:	0004b717          	auipc	a4,0x4b
    e8883e54:	28870713          	addi	a4,a4,648 # e88cf0d8 <err_to_errno_table>
    e8883e58:	44f7450b          	lrw	a0,a4,a5,2
    e8883e5c:	8082                	ret
    return EIO;
    e8883e5e:	4515                	li	a0,5
}
    e8883e60:	8082                	ret

00000000e8883e62 <lwip_if_indextoname>:
 * value supplied in ifname, which points to a buffer now containing the interface name.
 * Otherwise, the function shall return a NULL pointer.
 */
char *
lwip_if_indextoname(unsigned int ifindex, char *ifname)
{
    e8883e62:	1141                	addi	sp,sp,-16
    e8883e64:	e406                	sd	ra,8(sp)
    e8883e66:	e022                	sd	s0,0(sp)
#if LWIP_NETIF_API
  if (ifindex <= 0xff) {
    e8883e68:	0ff00793          	li	a5,255
    e8883e6c:	00a7fd63          	bgeu	a5,a0,e8883e86 <lwip_if_indextoname+0x24>
  }
#else /* LWIP_NETIF_API */
  LWIP_UNUSED_ARG(ifindex);
  LWIP_UNUSED_ARG(ifname);
#endif /* LWIP_NETIF_API */
  set_errno(ENXIO);
    e8883e70:	4799                	li	a5,6
    e8883e72:	00060717          	auipc	a4,0x60
    e8883e76:	7af72b23          	sw	a5,1974(a4) # e88e4628 <lwip_errno>
  return NULL;
    e8883e7a:	4401                	li	s0,0
}
    e8883e7c:	8522                	mv	a0,s0
    e8883e7e:	60a2                	ld	ra,8(sp)
    e8883e80:	6402                	ld	s0,0(sp)
    e8883e82:	0141                	addi	sp,sp,16
    e8883e84:	8082                	ret
    err_t err = netifapi_netif_index_to_name((u8_t)ifindex, ifname);
    e8883e86:	0ff57513          	andi	a0,a0,255
    e8883e8a:	842e                	mv	s0,a1
    e8883e8c:	098000ef          	jal	ra,e8883f24 <netifapi_netif_index_to_name>
    if (!err && ifname[0] != '\0') {
    e8883e90:	f165                	bnez	a0,e8883e70 <lwip_if_indextoname+0xe>
    e8883e92:	00044783          	lbu	a5,0(s0)
    e8883e96:	f3fd                	bnez	a5,e8883e7c <lwip_if_indextoname+0x1a>
    e8883e98:	bfe1                	j	e8883e70 <lwip_if_indextoname+0xe>

00000000e8883e9a <lwip_if_nametoindex>:
 * @return The corresponding index if ifname is the name of an interface;
 * otherwise, zero.
 */
unsigned int
lwip_if_nametoindex(const char *ifname)
{
    e8883e9a:	1101                	addi	sp,sp,-32
#if LWIP_NETIF_API
  err_t err;
  u8_t idx;

  err = netifapi_netif_name_to_index(ifname, &idx);
    e8883e9c:	00f10593          	addi	a1,sp,15
{
    e8883ea0:	ec06                	sd	ra,24(sp)
  err = netifapi_netif_name_to_index(ifname, &idx);
    e8883ea2:	054000ef          	jal	ra,e8883ef6 <netifapi_netif_name_to_index>
  if (!err) {
    e8883ea6:	e511                	bnez	a0,e8883eb2 <lwip_if_nametoindex+0x18>
    return idx;
    e8883ea8:	00f14503          	lbu	a0,15(sp)
  }
#else /* LWIP_NETIF_API */
  LWIP_UNUSED_ARG(ifname);
#endif /* LWIP_NETIF_API */
  return 0; /* invalid index */
}
    e8883eac:	60e2                	ld	ra,24(sp)
    e8883eae:	6105                	addi	sp,sp,32
    e8883eb0:	8082                	ret
  return 0; /* invalid index */
    e8883eb2:	4501                	li	a0,0
    e8883eb4:	bfe5                	j	e8883eac <lwip_if_nametoindex+0x12>

00000000e8883eb6 <netifapi_do_name_to_index>:
/**
* Call netif_name_to_index() inside the tcpip_thread context.
*/
static err_t
netifapi_do_name_to_index(struct tcpip_api_call_data *m)
{
    e8883eb6:	1141                	addi	sp,sp,-16
    e8883eb8:	e022                	sd	s0,0(sp)
    e8883eba:	e406                	sd	ra,8(sp)
    e8883ebc:	842a                	mv	s0,a0
  /* cast through void* to silence alignment warnings.
   * We know it works because the structs have been instantiated as struct netifapi_msg */
  struct netifapi_msg *msg = (struct netifapi_msg *)(void *)m;

  msg->msg.ifs.index = netif_name_to_index(msg->msg.ifs.name);
    e8883ebe:	6908                	ld	a0,16(a0)
    e8883ec0:	2290a0ef          	jal	ra,e888e8e8 <netif_name_to_index>
    e8883ec4:	00a40c23          	sb	a0,24(s0)
  return ERR_OK;
}
    e8883ec8:	60a2                	ld	ra,8(sp)
    e8883eca:	6402                	ld	s0,0(sp)
    e8883ecc:	4501                	li	a0,0
    e8883ece:	0141                	addi	sp,sp,16
    e8883ed0:	8082                	ret

00000000e8883ed2 <netifapi_do_index_to_name>:
/**
* Call netif_index_to_name() inside the tcpip_thread context.
*/
static err_t
netifapi_do_index_to_name(struct tcpip_api_call_data *m)
{
    e8883ed2:	1141                	addi	sp,sp,-16
    e8883ed4:	e022                	sd	s0,0(sp)
    e8883ed6:	e406                	sd	ra,8(sp)
    e8883ed8:	842a                	mv	s0,a0
  /* cast through void* to silence alignment warnings.
   * We know it works because the structs have been instantiated as struct netifapi_msg */
  struct netifapi_msg *msg = (struct netifapi_msg *)(void *)m;

  if (!netif_index_to_name(msg->msg.ifs.index, msg->msg.ifs.name)) {
    e8883eda:	690c                	ld	a1,16(a0)
    e8883edc:	01854503          	lbu	a0,24(a0)
    e8883ee0:	17b0a0ef          	jal	ra,e888e85a <netif_index_to_name>
    e8883ee4:	e501                	bnez	a0,e8883eec <netifapi_do_index_to_name+0x1a>
    /* return failure via empty name */
    msg->msg.ifs.name[0] = '\0';
    e8883ee6:	681c                	ld	a5,16(s0)
    e8883ee8:	00078023          	sb	zero,0(a5)
  }
  return ERR_OK;
}
    e8883eec:	60a2                	ld	ra,8(sp)
    e8883eee:	6402                	ld	s0,0(sp)
    e8883ef0:	4501                	li	a0,0
    e8883ef2:	0141                	addi	sp,sp,16
    e8883ef4:	8082                	ret

00000000e8883ef6 <netifapi_netif_name_to_index>:
* @param name the interface name of the netif
* @param idx output index of the found netif
*/
err_t
netifapi_netif_name_to_index(const char *name, u8_t *idx)
{
    e8883ef6:	715d                	addi	sp,sp,-80
    e8883ef8:	e0a2                	sd	s0,64(sp)
    e8883efa:	e486                	sd	ra,72(sp)
    e8883efc:	842e                	mv	s0,a1
  err_t err;
  NETIFAPI_VAR_DECLARE(msg);
  NETIFAPI_VAR_ALLOC(msg);

  *idx = 0;
    e8883efe:	00058023          	sb	zero,0(a1)

#if LWIP_MPU_COMPATIBLE
  strncpy(NETIFAPI_VAR_REF(msg).msg.ifs.name, name, NETIF_NAMESIZE - 1);
  NETIFAPI_VAR_REF(msg).msg.ifs.name[NETIF_NAMESIZE - 1] = '\0';
#else
  NETIFAPI_VAR_REF(msg).msg.ifs.name = LWIP_CONST_CAST(char *, name);
    e8883f02:	e82a                	sd	a0,16(sp)
#endif /* LWIP_MPU_COMPATIBLE */
  err = tcpip_api_call(netifapi_do_name_to_index, &API_VAR_REF(msg).call);
    e8883f04:	858a                	mv	a1,sp
    e8883f06:	00000517          	auipc	a0,0x0
    e8883f0a:	fb050513          	addi	a0,a0,-80 # e8883eb6 <netifapi_do_name_to_index>
    e8883f0e:	729020ef          	jal	ra,e8886e36 <tcpip_api_call>
  if (!err) {
    e8883f12:	e509                	bnez	a0,e8883f1c <netifapi_netif_name_to_index+0x26>
    *idx = NETIFAPI_VAR_REF(msg).msg.ifs.index;
    e8883f14:	01814783          	lbu	a5,24(sp)
    e8883f18:	00f40023          	sb	a5,0(s0)
  }
  NETIFAPI_VAR_FREE(msg);
  return err;
}
    e8883f1c:	60a6                	ld	ra,72(sp)
    e8883f1e:	6406                	ld	s0,64(sp)
    e8883f20:	6161                	addi	sp,sp,80
    e8883f22:	8082                	ret

00000000e8883f24 <netifapi_netif_index_to_name>:
* @param name output name of the found netif, empty '\0' string if netif not found.
*             name should be of at least NETIF_NAMESIZE bytes
*/
err_t
netifapi_netif_index_to_name(u8_t idx, char *name)
{
    e8883f24:	715d                	addi	sp,sp,-80
  err_t err;
  NETIFAPI_VAR_DECLARE(msg);
  NETIFAPI_VAR_ALLOC(msg);

  NETIFAPI_VAR_REF(msg).msg.ifs.index = idx;
    e8883f26:	00a10c23          	sb	a0,24(sp)
#if !LWIP_MPU_COMPATIBLE
  NETIFAPI_VAR_REF(msg).msg.ifs.name = name;
    e8883f2a:	e82e                	sd	a1,16(sp)
#endif /* LWIP_MPU_COMPATIBLE */
  err = tcpip_api_call(netifapi_do_index_to_name, &API_VAR_REF(msg).call);
    e8883f2c:	00000517          	auipc	a0,0x0
    e8883f30:	fa650513          	addi	a0,a0,-90 # e8883ed2 <netifapi_do_index_to_name>
    e8883f34:	858a                	mv	a1,sp
{
    e8883f36:	e486                	sd	ra,72(sp)
  err = tcpip_api_call(netifapi_do_index_to_name, &API_VAR_REF(msg).call);
    e8883f38:	6ff020ef          	jal	ra,e8886e36 <tcpip_api_call>
    name[NETIF_NAMESIZE - 1] = '\0';
  }
#endif /* LWIP_MPU_COMPATIBLE */
  NETIFAPI_VAR_FREE(msg);
  return err;
}
    e8883f3c:	60a6                	ld	ra,72(sp)
    e8883f3e:	6161                	addi	sp,sp,80
    e8883f40:	8082                	ret

00000000e8883f42 <sock_inc_used>:

#if LWIP_NETCONN_FULLDUPLEX
/* Thread-safe increment of sock->fd_used, with overflow check */
static int
sock_inc_used(struct lwip_sock *sock)
{
    e8883f42:	1141                	addi	sp,sp,-16
    e8883f44:	e022                	sd	s0,0(sp)
    e8883f46:	e406                	sd	ra,8(sp)
  SYS_ARCH_DECL_PROTECT(lev);

  LWIP_ASSERT("sock != NULL", sock != NULL);

  SYS_ARCH_PROTECT(lev);
  if (sock->fd_free_pending) {
    e8883f48:	01854783          	lbu	a5,24(a0)
    /* prevent new usage of this socket if free is pending */
    ret = 0;
    e8883f4c:	4401                	li	s0,0
  if (sock->fd_free_pending) {
    e8883f4e:	e3a1                	bnez	a5,e8883f8e <sock_inc_used+0x4c>
  } else {
    ++sock->fd_used;
    e8883f50:	01754783          	lbu	a5,23(a0)
    ret = 1;
    e8883f54:	4405                	li	s0,1
    ++sock->fd_used;
    e8883f56:	2785                	addiw	a5,a5,1
    e8883f58:	0ff7f793          	andi	a5,a5,255
    e8883f5c:	00f50ba3          	sb	a5,23(a0)
    LWIP_ASSERT("sock->fd_used != 0", sock->fd_used != 0);
    e8883f60:	e79d                	bnez	a5,e8883f8e <sock_inc_used+0x4c>
    e8883f62:	02f00593          	li	a1,47
    e8883f66:	0004b517          	auipc	a0,0x4b
    e8883f6a:	5aa50513          	addi	a0,a0,1450 # e88cf510 <err_to_errno_table+0x438>
    e8883f6e:	c0af80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8883f72:	00150693          	addi	a3,a0,1
    e8883f76:	15d00613          	li	a2,349
    e8883f7a:	0004b597          	auipc	a1,0x4b
    e8883f7e:	61e58593          	addi	a1,a1,1566 # e88cf598 <err_to_errno_table+0x4c0>
    e8883f82:	0004b517          	auipc	a0,0x4b
    e8883f86:	12e50513          	addi	a0,a0,302 # e88cf0b0 <kSinTable1024+0x900>
    e8883f8a:	b3cf80ef          	jal	ra,e887c2c6 <eLIBs_printf>
  }
  SYS_ARCH_UNPROTECT(lev);
  return ret;
}
    e8883f8e:	8522                	mv	a0,s0
    e8883f90:	60a2                	ld	ra,8(sp)
    e8883f92:	6402                	ld	s0,0(sp)
    e8883f94:	0141                	addi	sp,sp,16
    e8883f96:	8082                	ret

00000000e8883f98 <alloc_socket>:
 *                 0 if socket has been created by socket()
 * @return the index of the new socket; -1 on error
 */
static int
alloc_socket(struct netconn *newconn, int accepted)
{
    e8883f98:	7179                	addi	sp,sp,-48
    e8883f9a:	00061797          	auipc	a5,0x61
    e8883f9e:	ffe78793          	addi	a5,a5,-2 # e88e4f98 <sockets>
    e8883fa2:	f891540b          	sdd	s0,s1,(sp),0,4
    e8883fa6:	f052                	sd	s4,32(sp)
    e8883fa8:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8883fac:	f406                	sd	ra,40(sp)
    e8883fae:	89aa                	mv	s3,a0
    e8883fb0:	8a2e                	mv	s4,a1
  int i;
  SYS_ARCH_DECL_PROTECT(lev);
  LWIP_UNUSED_ARG(accepted);

  /* allocate a new socket identifier */
  for (i = 0; i < NUM_SOCKETS; ++i) {
    e8883fb2:	4481                	li	s1,0
    e8883fb4:	843e                	mv	s0,a5
    e8883fb6:	03200713          	li	a4,50
    /* Protect socket array */
    SYS_ARCH_PROTECT(lev);
    if (!sockets[i].conn) {
    e8883fba:	6394                	ld	a3,0(a5)
    e8883fbc:	e2d1                	bnez	a3,e8884040 <alloc_socket+0xa8>
#if LWIP_NETCONN_FULLDUPLEX
      if (sockets[i].fd_used) {
    e8883fbe:	0177c683          	lbu	a3,23(a5)
    e8883fc2:	eebd                	bnez	a3,e8884040 <alloc_socket+0xa8>
        SYS_ARCH_UNPROTECT(lev);
        continue;
      }
      sockets[i].fd_used    = 1;
    e8883fc4:	00549913          	slli	s2,s1,0x5
    e8883fc8:	012407b3          	add	a5,s0,s2
    e8883fcc:	4705                	li	a4,1
    e8883fce:	00e79ba3          	sh	a4,23(a5)
#endif
      sockets[i].conn       = newconn;
      /* The socket is not yet known to anyone, so no need to protect
         after having marked it as used. */
      SYS_ARCH_UNPROTECT(lev);
      sockets[i].lastdata.pbuf = NULL;
    e8883fd2:	0007b423          	sd	zero,8(a5)
#if LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL
      LWIP_ASSERT("sockets[i].select_waiting == 0", sockets[i].select_waiting == 0);
    e8883fd6:	0167c783          	lbu	a5,22(a5)
      sockets[i].conn       = newconn;
    e8883fda:	6124598b          	srd	s3,s0,s2,0
      LWIP_ASSERT("sockets[i].select_waiting == 0", sockets[i].select_waiting == 0);
    e8883fde:	c79d                	beqz	a5,e888400c <alloc_socket+0x74>
    e8883fe0:	02f00593          	li	a1,47
    e8883fe4:	0004b517          	auipc	a0,0x4b
    e8883fe8:	52c50513          	addi	a0,a0,1324 # e88cf510 <err_to_errno_table+0x438>
    e8883fec:	b8cf80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8883ff0:	00150693          	addi	a3,a0,1
    e8883ff4:	20e00613          	li	a2,526
    e8883ff8:	0004b597          	auipc	a1,0x4b
    e8883ffc:	17858593          	addi	a1,a1,376 # e88cf170 <err_to_errno_table+0x98>
    e8884000:	0004b517          	auipc	a0,0x4b
    e8884004:	0b050513          	addi	a0,a0,176 # e88cf0b0 <kSinTable1024+0x900>
    e8884008:	abef80ef          	jal	ra,e887c2c6 <eLIBs_printf>
      sockets[i].rcvevent   = 0;
    e888400c:	012407b3          	add	a5,s0,s2
    e8884010:	00079823          	sh	zero,16(a5)
      /* TCP sendbuf is empty, but the socket is not yet writable until connected
       * (unless it has been created by accept()). */
      sockets[i].sendevent  = (NETCONNTYPE_GROUP(newconn->type) == NETCONN_TCP ? (accepted != 0) : 1);
    e8884014:	0009c783          	lbu	a5,0(s3)
    e8884018:	4741                	li	a4,16
    e888401a:	0f07f793          	andi	a5,a5,240
    e888401e:	00e78363          	beq	a5,a4,e8884024 <alloc_socket+0x8c>
    e8884022:	4a05                	li	s4,1
    e8884024:	944a                	add	s0,s0,s2
    e8884026:	01441923          	sh	s4,18(s0)
      sockets[i].errevent   = 0;
    e888402a:	00041a23          	sh	zero,20(s0)
      return i + LWIP_SOCKET_OFFSET;
    }
    SYS_ARCH_UNPROTECT(lev);
  }
  return -1;
}
    e888402e:	8526                	mv	a0,s1
    e8884030:	70a2                	ld	ra,40(sp)
    e8884032:	f891440b          	ldd	s0,s1,(sp),0,4
    e8884036:	7a02                	ld	s4,32(sp)
    e8884038:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888403c:	6145                	addi	sp,sp,48
    e888403e:	8082                	ret
  for (i = 0; i < NUM_SOCKETS; ++i) {
    e8884040:	2485                	addiw	s1,s1,1
    e8884042:	02078793          	addi	a5,a5,32
    e8884046:	f6e49ae3          	bne	s1,a4,e8883fba <alloc_socket+0x22>
  return -1;
    e888404a:	54fd                	li	s1,-1
    e888404c:	b7cd                	j	e888402e <alloc_socket+0x96>

00000000e888404e <tryget_socket_unconn_locked>:
{
    e888404e:	1141                	addi	sp,sp,-16
    e8884050:	e022                	sd	s0,0(sp)
    e8884052:	e406                	sd	ra,8(sp)
  if ((s < 0) || (s >= NUM_SOCKETS)) {
    e8884054:	03100793          	li	a5,49
    return NULL;
    e8884058:	4401                	li	s0,0
  if ((s < 0) || (s >= NUM_SOCKETS)) {
    e888405a:	04a7e563          	bltu	a5,a0,e88840a4 <tryget_socket_unconn_locked+0x56>
  return &sockets[s];
    e888405e:	0516                	slli	a0,a0,0x5
    e8884060:	00061417          	auipc	s0,0x61
    e8884064:	f3840413          	addi	s0,s0,-200 # e88e4f98 <sockets>
    e8884068:	942a                	add	s0,s0,a0
  if (sock->fd_free_pending) {
    e888406a:	01844703          	lbu	a4,24(s0)
    e888406e:	01744783          	lbu	a5,23(s0)
    e8884072:	cf15                	beqz	a4,e88840ae <tryget_socket_unconn_locked+0x60>
    return NULL;
    e8884074:	4401                	li	s0,0
    LWIP_ASSERT("sock->fd_used != 0", sock->fd_used != 0);
    e8884076:	e79d                	bnez	a5,e88840a4 <tryget_socket_unconn_locked+0x56>
    e8884078:	02f00593          	li	a1,47
    e888407c:	0004b517          	auipc	a0,0x4b
    e8884080:	49450513          	addi	a0,a0,1172 # e88cf510 <err_to_errno_table+0x438>
    e8884084:	af4f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884088:	00150693          	addi	a3,a0,1
    e888408c:	16a00613          	li	a2,362
  LWIP_ASSERT("sock->fd_used != 0", sock->fd_used != 0);
    e8884090:	0004b597          	auipc	a1,0x4b
    e8884094:	50858593          	addi	a1,a1,1288 # e88cf598 <err_to_errno_table+0x4c0>
    e8884098:	0004b517          	auipc	a0,0x4b
    e888409c:	01850513          	addi	a0,a0,24 # e88cf0b0 <kSinTable1024+0x900>
    e88840a0:	a26f80ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e88840a4:	8522                	mv	a0,s0
    e88840a6:	60a2                	ld	ra,8(sp)
    e88840a8:	6402                	ld	s0,0(sp)
    e88840aa:	0141                	addi	sp,sp,16
    e88840ac:	8082                	ret
  ++sock->fd_used;
    e88840ae:	2785                	addiw	a5,a5,1
    e88840b0:	0ff7f793          	andi	a5,a5,255
    e88840b4:	00f40ba3          	sb	a5,23(s0)
  LWIP_ASSERT("sock->fd_used != 0", sock->fd_used != 0);
    e88840b8:	f7f5                	bnez	a5,e88840a4 <tryget_socket_unconn_locked+0x56>
    e88840ba:	02f00593          	li	a1,47
    e88840be:	0004b517          	auipc	a0,0x4b
    e88840c2:	45250513          	addi	a0,a0,1106 # e88cf510 <err_to_errno_table+0x438>
    e88840c6:	ab2f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88840ca:	00150693          	addi	a3,a0,1
    e88840ce:	16f00613          	li	a2,367
    e88840d2:	bf7d                	j	e8884090 <tryget_socket_unconn_locked+0x42>

00000000e88840d4 <lwip_link_select_cb>:

#if LWIP_SOCKET_SELECT || LWIP_SOCKET_POLL
/* Add select_cb to select_cb_list. */
static void
lwip_link_select_cb(struct lwip_select_cb *select_cb)
{
    e88840d4:	1141                	addi	sp,sp,-16
    e88840d6:	e022                	sd	s0,0(sp)
    e88840d8:	842a                	mv	s0,a0
  LWIP_SOCKET_SELECT_DECL_PROTECT(lev);

  /* Protect the select_cb_list */
  LWIP_SOCKET_SELECT_PROTECT(lev);
    e88840da:	00061517          	auipc	a0,0x61
    e88840de:	4fe50513          	addi	a0,a0,1278 # e88e55d8 <lock_tcpip_core>
{
    e88840e2:	e406                	sd	ra,8(sp)
  LWIP_SOCKET_SELECT_PROTECT(lev);
    e88840e4:	33f130ef          	jal	ra,e8897c22 <sys_mutex_lock>

  /* Put this select_cb on top of list */
  select_cb->next = select_cb_list;
    e88840e8:	00060797          	auipc	a5,0x60
    e88840ec:	54878793          	addi	a5,a5,1352 # e88e4630 <select_cb_list>
    e88840f0:	6398                	ld	a4,0(a5)
    e88840f2:	e018                	sd	a4,0(s0)
  if (select_cb_list != NULL) {
    e88840f4:	c311                	beqz	a4,e88840f8 <lwip_link_select_cb+0x24>
    select_cb_list->prev = select_cb;
    e88840f6:	e700                	sd	s0,8(a4)
  }
  select_cb_list = select_cb;
    e88840f8:	e380                	sd	s0,0(a5)
  select_cb_ctr++;
#endif

  /* Now we can safely unprotect */
  LWIP_SOCKET_SELECT_UNPROTECT(lev);
}
    e88840fa:	6402                	ld	s0,0(sp)
    e88840fc:	60a2                	ld	ra,8(sp)
  LWIP_SOCKET_SELECT_UNPROTECT(lev);
    e88840fe:	00061517          	auipc	a0,0x61
    e8884102:	4da50513          	addi	a0,a0,1242 # e88e55d8 <lock_tcpip_core>
}
    e8884106:	0141                	addi	sp,sp,16
  LWIP_SOCKET_SELECT_UNPROTECT(lev);
    e8884108:	3311306f          	j	e8897c38 <sys_mutex_unlock>

00000000e888410c <lwip_unlink_select_cb>:

/* Remove select_cb from select_cb_list. */
static void
lwip_unlink_select_cb(struct lwip_select_cb *select_cb)
{
    e888410c:	1101                	addi	sp,sp,-32
    e888410e:	e422                	sd	s0,8(sp)
    e8884110:	842a                	mv	s0,a0
  LWIP_SOCKET_SELECT_DECL_PROTECT(lev);

  /* Take us off the list */
  LWIP_SOCKET_SELECT_PROTECT(lev);
    e8884112:	00061517          	auipc	a0,0x61
    e8884116:	4c650513          	addi	a0,a0,1222 # e88e55d8 <lock_tcpip_core>
{
    e888411a:	ec06                	sd	ra,24(sp)
    e888411c:	e826                	sd	s1,16(sp)
  LWIP_SOCKET_SELECT_PROTECT(lev);
    e888411e:	305130ef          	jal	ra,e8897c22 <sys_mutex_lock>
  if (select_cb->next != NULL) {
    e8884122:	601c                	ld	a5,0(s0)
    e8884124:	c399                	beqz	a5,e888412a <lwip_unlink_select_cb+0x1e>
    select_cb->next->prev = select_cb->prev;
    e8884126:	6418                	ld	a4,8(s0)
    e8884128:	e798                	sd	a4,8(a5)
  }
  if (select_cb_list == select_cb) {
    e888412a:	00060797          	auipc	a5,0x60
    e888412e:	50678793          	addi	a5,a5,1286 # e88e4630 <select_cb_list>
    e8884132:	6394                	ld	a3,0(a5)
    e8884134:	6418                	ld	a4,8(s0)
    e8884136:	84be                	mv	s1,a5
    e8884138:	04869563          	bne	a3,s0,e8884182 <lwip_unlink_select_cb+0x76>
    LWIP_ASSERT("select_cb->prev == NULL", select_cb->prev == NULL);
    e888413c:	c71d                	beqz	a4,e888416a <lwip_unlink_select_cb+0x5e>
    e888413e:	02f00593          	li	a1,47
    e8884142:	0004b517          	auipc	a0,0x4b
    e8884146:	3ce50513          	addi	a0,a0,974 # e88cf510 <err_to_errno_table+0x438>
    e888414a:	a2ef80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888414e:	00150693          	addi	a3,a0,1
    e8884152:	70d00613          	li	a2,1805
    e8884156:	0004b597          	auipc	a1,0x4b
    e888415a:	38a58593          	addi	a1,a1,906 # e88cf4e0 <err_to_errno_table+0x408>
    e888415e:	0004b517          	auipc	a0,0x4b
    e8884162:	f5250513          	addi	a0,a0,-174 # e88cf0b0 <kSinTable1024+0x900>
    e8884166:	960f80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    select_cb_list = select_cb->next;
    e888416a:	601c                	ld	a5,0(s0)
    e888416c:	e09c                	sd	a5,0(s1)
#if !LWIP_TCPIP_CORE_LOCKING
  /* Increasing this counter tells select_check_waiters that the list has changed. */
  select_cb_ctr++;
#endif
  LWIP_SOCKET_SELECT_UNPROTECT(lev);
}
    e888416e:	6422                	ld	s0,8(sp)
    e8884170:	60e2                	ld	ra,24(sp)
    e8884172:	64c2                	ld	s1,16(sp)
  LWIP_SOCKET_SELECT_UNPROTECT(lev);
    e8884174:	00061517          	auipc	a0,0x61
    e8884178:	46450513          	addi	a0,a0,1124 # e88e55d8 <lock_tcpip_core>
}
    e888417c:	6105                	addi	sp,sp,32
  LWIP_SOCKET_SELECT_UNPROTECT(lev);
    e888417e:	2bb1306f          	j	e8897c38 <sys_mutex_unlock>
    LWIP_ASSERT("select_cb->prev != NULL", select_cb->prev != NULL);
    e8884182:	e71d                	bnez	a4,e88841b0 <lwip_unlink_select_cb+0xa4>
    e8884184:	02f00593          	li	a1,47
    e8884188:	0004b517          	auipc	a0,0x4b
    e888418c:	38850513          	addi	a0,a0,904 # e88cf510 <err_to_errno_table+0x438>
    e8884190:	9e8f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884194:	00150693          	addi	a3,a0,1
    e8884198:	71000613          	li	a2,1808
    e888419c:	0004b597          	auipc	a1,0x4b
    e88841a0:	35c58593          	addi	a1,a1,860 # e88cf4f8 <err_to_errno_table+0x420>
    e88841a4:	0004b517          	auipc	a0,0x4b
    e88841a8:	f0c50513          	addi	a0,a0,-244 # e88cf0b0 <kSinTable1024+0x900>
    e88841ac:	91af80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    select_cb->prev->next = select_cb->next;
    e88841b0:	641c                	ld	a5,8(s0)
    e88841b2:	6018                	ld	a4,0(s0)
    e88841b4:	e398                	sd	a4,0(a5)
    e88841b6:	bf65                	j	e888416e <lwip_unlink_select_cb+0x62>

00000000e88841b8 <lwip_recv_tcp>:
  ssize_t recv_left = (len <= SSIZE_MAX) ? (ssize_t)len : SSIZE_MAX;
    e88841b8:	800007b7          	lui	a5,0x80000
{
    e88841bc:	7175                	addi	sp,sp,-144
    e88841be:	fff7c793          	not	a5,a5
    e88841c2:	fca6                	sd	s1,120(sp)
    e88841c4:	f8ca                	sd	s2,112(sp)
    e88841c6:	00c7b4b3          	sltu	s1,a5,a2
    e88841ca:	f0d2                	sd	s4,96(sp)
    e88841cc:	e506                	sd	ra,136(sp)
    e88841ce:	e122                	sd	s0,128(sp)
    e88841d0:	f4ce                	sd	s3,104(sp)
    e88841d2:	ecd6                	sd	s5,88(sp)
    e88841d4:	e8da                	sd	s6,80(sp)
    e88841d6:	e4de                	sd	s7,72(sp)
    e88841d8:	e0e2                	sd	s8,64(sp)
    e88841da:	fc66                	sd	s9,56(sp)
    e88841dc:	f86a                	sd	s10,48(sp)
    e88841de:	f46e                	sd	s11,40(sp)
    e88841e0:	e42e                	sd	a1,8(sp)
    e88841e2:	4096178b          	mveqz	a5,a2,s1
    e88841e6:	892a                	mv	s2,a0
    e88841e8:	8a36                	mv	s4,a3
    e88841ea:	0007849b          	sext.w	s1,a5
  LWIP_ASSERT("no socket given", sock != NULL);
    e88841ee:	e51d                	bnez	a0,e888421c <lwip_recv_tcp+0x64>
    e88841f0:	02f00593          	li	a1,47
    e88841f4:	0004b517          	auipc	a0,0x4b
    e88841f8:	31c50513          	addi	a0,a0,796 # e88cf510 <err_to_errno_table+0x438>
    e88841fc:	97cf80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884200:	00150693          	addi	a3,a0,1
    e8884204:	39e00613          	li	a2,926
    e8884208:	0004b597          	auipc	a1,0x4b
    e888420c:	06058593          	addi	a1,a1,96 # e88cf268 <err_to_errno_table+0x190>
    e8884210:	0004b517          	auipc	a0,0x4b
    e8884214:	ea050513          	addi	a0,a0,-352 # e88cf0b0 <kSinTable1024+0x900>
    e8884218:	8aef80ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("this should be checked internally", NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP);
    e888421c:	00093783          	ld	a5,0(s2) # 4000 <memcmp-0xe87fc000>
    e8884220:	4741                	li	a4,16
    e8884222:	0007c783          	lbu	a5,0(a5) # ffffffff80000000 <__DRAM0_INF_BASE+0xfffffffe80010000>
    e8884226:	0f07f793          	andi	a5,a5,240
    e888422a:	02e78863          	beq	a5,a4,e888425a <lwip_recv_tcp+0xa2>
    e888422e:	02f00593          	li	a1,47
    e8884232:	0004b517          	auipc	a0,0x4b
    e8884236:	2de50513          	addi	a0,a0,734 # e88cf510 <err_to_errno_table+0x438>
    e888423a:	93ef80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888423e:	00150693          	addi	a3,a0,1
    e8884242:	39f00613          	li	a2,927
    e8884246:	0004b597          	auipc	a1,0x4b
    e888424a:	03258593          	addi	a1,a1,50 # e88cf278 <err_to_errno_table+0x1a0>
    e888424e:	0004b517          	auipc	a0,0x4b
    e8884252:	e6250513          	addi	a0,a0,-414 # e88cf0b0 <kSinTable1024+0x900>
    e8884256:	870f80ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (flags & MSG_DONTWAIT) {
    e888425a:	008a7793          	andi	a5,s4,8
  u8_t apiflags = NETCONN_NOAUTORCVD;
    e888425e:	4621                	li	a2,8
  if (flags & MSG_DONTWAIT) {
    e8884260:	c391                	beqz	a5,e8884264 <lwip_recv_tcp+0xac>
    apiflags |= NETCONN_DONTBLOCK;
    e8884262:	4631                	li	a2,12
    e8884264:	4401                	li	s0,0
      LWIP_ASSERT("p != NULL", p != NULL);
    e8884266:	0004ba97          	auipc	s5,0x4b
    e888426a:	2aaa8a93          	addi	s5,s5,682 # e88cf510 <err_to_errno_table+0x438>
    e888426e:	00050c17          	auipc	s8,0x50
    e8884272:	882c0c13          	addi	s8,s8,-1918 # e88d3af0 <dhcp_discover_request_options+0x2e8>
    e8884276:	0004bb17          	auipc	s6,0x4b
    e888427a:	e3ab0b13          	addi	s6,s6,-454 # e88cf0b0 <kSinTable1024+0x900>
    LWIP_ASSERT("invalid copylen, len would underflow", recv_left >= copylen);
    e888427e:	0004bc97          	auipc	s9,0x4b
    e8884282:	022c8c93          	addi	s9,s9,34 # e88cf2a0 <err_to_errno_table+0x1c8>
    if ((flags & MSG_PEEK) == 0) {
    e8884286:	001a7d13          	andi	s10,s4,1
      LWIP_ASSERT("invalid copylen", p->tot_len >= copylen);
    e888428a:	0004bd97          	auipc	s11,0x4b
    e888428e:	03ed8d93          	addi	s11,s11,62 # e88cf2c8 <err_to_errno_table+0x1f0>
    if (sock->lastdata.pbuf) {
    e8884292:	00893783          	ld	a5,8(s2)
    e8884296:	cbc5                	beqz	a5,e8884346 <lwip_recv_tcp+0x18e>
      p = sock->lastdata.pbuf;
    e8884298:	ec3e                	sd	a5,24(sp)
    if (recv_left > p->tot_len) {
    e888429a:	6562                	ld	a0,24(sp)
    e888429c:	01055b83          	lhu	s7,16(a0)
    e88842a0:	009bc463          	blt	s7,s1,e88842a8 <lwip_recv_tcp+0xf0>
      copylen = (u16_t)recv_left;
    e88842a4:	3c04bb8b          	extu	s7,s1,15,0
    if (recvd + copylen < recvd) {
    e88842a8:	008b873b          	addw	a4,s7,s0
    e88842ac:	00875663          	bge	a4,s0,e88842b8 <lwip_recv_tcp+0x100>
      copylen = (u16_t)(SSIZE_MAX - recvd);
    e88842b0:	fff44793          	not	a5,s0
    e88842b4:	3c07bb8b          	extu	s7,a5,15,0
    pbuf_copy_partial(p, (u8_t *)mem + recvd, copylen, 0);
    e88842b8:	67a2                	ld	a5,8(sp)
    e88842ba:	4681                	li	a3,0
    e88842bc:	865e                	mv	a2,s7
    e88842be:	008785b3          	add	a1,a5,s0
    recvd += copylen;
    e88842c2:	000b899b          	sext.w	s3,s7
    pbuf_copy_partial(p, (u8_t *)mem + recvd, copylen, 0);
    e88842c6:	68c0b0ef          	jal	ra,e888f952 <pbuf_copy_partial>
    recvd += copylen;
    e88842ca:	0089843b          	addw	s0,s3,s0
    LWIP_ASSERT("invalid copylen, len would underflow", recv_left >= copylen);
    e88842ce:	0134df63          	bge	s1,s3,e88842ec <lwip_recv_tcp+0x134>
    e88842d2:	02f00593          	li	a1,47
    e88842d6:	8556                	mv	a0,s5
    e88842d8:	8a0f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88842dc:	00150693          	addi	a3,a0,1
    e88842e0:	3dd00613          	li	a2,989
    e88842e4:	85e6                	mv	a1,s9
    e88842e6:	855a                	mv	a0,s6
    e88842e8:	fdff70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if ((flags & MSG_PEEK) == 0) {
    e88842ec:	060d1a63          	bnez	s10,e8884360 <lwip_recv_tcp+0x1a8>
      LWIP_ASSERT("invalid copylen", p->tot_len >= copylen);
    e88842f0:	6762                	ld	a4,24(sp)
    e88842f2:	01075703          	lhu	a4,16(a4)
    e88842f6:	01377f63          	bgeu	a4,s3,e8884314 <lwip_recv_tcp+0x15c>
    e88842fa:	02f00593          	li	a1,47
    e88842fe:	8556                	mv	a0,s5
    e8884300:	878f80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884304:	00150693          	addi	a3,a0,1
    e8884308:	3e300613          	li	a2,995
    e888430c:	85ee                	mv	a1,s11
    e888430e:	855a                	mv	a0,s6
    e8884310:	fb7f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
      if (p->tot_len - copylen > 0) {
    e8884314:	6562                	ld	a0,24(sp)
    e8884316:	01055703          	lhu	a4,16(a0)
    e888431a:	4137073b          	subw	a4,a4,s3
    e888431e:	0ae05363          	blez	a4,e88843c4 <lwip_recv_tcp+0x20c>
        sock->lastdata.pbuf = pbuf_free_header(p, copylen);
    e8884322:	85de                	mv	a1,s7
    e8884324:	2ec0b0ef          	jal	ra,e888f610 <pbuf_free_header>
    e8884328:	00a93423          	sd	a0,8(s2)
    recv_left -= copylen;
    e888432c:	413484bb          	subw	s1,s1,s3
    apiflags |= NETCONN_DONTBLOCK | NETCONN_NOFIN;
    e8884330:	4671                	li	a2,28
  } while ((recv_left > 0) && !(flags & MSG_PEEK));
    e8884332:	f69040e3          	bgtz	s1,e8884292 <lwip_recv_tcp+0xda>
  if ((recvd > 0) && !(flags & MSG_PEEK)) {
    e8884336:	02805563          	blez	s0,e8884360 <lwip_recv_tcp+0x1a8>
    netconn_tcp_recvd(sock->conn, (size_t)recvd);
    e888433a:	00093503          	ld	a0,0(s2)
    e888433e:	85a2                	mv	a1,s0
    e8884340:	260140ef          	jal	ra,e88985a0 <netconn_tcp_recvd>
    e8884344:	a831                	j	e8884360 <lwip_recv_tcp+0x1a8>
      err = netconn_recv_tcp_pbuf_flags(sock->conn, &p, apiflags);
    e8884346:	00093503          	ld	a0,0(s2)
    e888434a:	082c                	addi	a1,sp,24
    e888434c:	2b0140ef          	jal	ra,e88985fc <netconn_recv_tcp_pbuf_flags>
    e8884350:	89aa                	mv	s3,a0
      if (err != ERR_OK) {
    e8884352:	c531                	beqz	a0,e888439e <lwip_recv_tcp+0x1e6>
        if (recvd > 0) {
    e8884354:	02805663          	blez	s0,e8884380 <lwip_recv_tcp+0x1c8>
  if ((recvd > 0) && !(flags & MSG_PEEK)) {
    e8884358:	001a7a13          	andi	s4,s4,1
    e888435c:	fc0a0fe3          	beqz	s4,e888433a <lwip_recv_tcp+0x182>
}
    e8884360:	8522                	mv	a0,s0
    e8884362:	60aa                	ld	ra,136(sp)
    e8884364:	640a                	ld	s0,128(sp)
    e8884366:	74e6                	ld	s1,120(sp)
    e8884368:	7946                	ld	s2,112(sp)
    e888436a:	79a6                	ld	s3,104(sp)
    e888436c:	7a06                	ld	s4,96(sp)
    e888436e:	6ae6                	ld	s5,88(sp)
    e8884370:	6b46                	ld	s6,80(sp)
    e8884372:	6ba6                	ld	s7,72(sp)
    e8884374:	6c06                	ld	s8,64(sp)
    e8884376:	7ce2                	ld	s9,56(sp)
    e8884378:	7d42                	ld	s10,48(sp)
    e888437a:	7da2                	ld	s11,40(sp)
    e888437c:	6149                	addi	sp,sp,144
    e888437e:	8082                	ret
        sock_set_errno(sock, err_to_errno(err));
    e8884380:	abdff0ef          	jal	ra,e8883e3c <err_to_errno>
    e8884384:	c509                	beqz	a0,e888438e <lwip_recv_tcp+0x1d6>
    e8884386:	00060797          	auipc	a5,0x60
    e888438a:	2aa7a123          	sw	a0,674(a5) # e88e4628 <lwip_errno>
        if (err == ERR_CLSD) {
    e888438e:	0009841b          	sext.w	s0,s3
    e8884392:	043d                	addi	s0,s0,15
    e8884394:	00803433          	snez	s0,s0
    e8884398:	40800433          	neg	s0,s0
    e888439c:	b7d1                	j	e8884360 <lwip_recv_tcp+0x1a8>
      LWIP_ASSERT("p != NULL", p != NULL);
    e888439e:	67e2                	ld	a5,24(sp)
    e88843a0:	ef91                	bnez	a5,e88843bc <lwip_recv_tcp+0x204>
    e88843a2:	02f00593          	li	a1,47
    e88843a6:	8556                	mv	a0,s5
    e88843a8:	fd1f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88843ac:	00150693          	addi	a3,a0,1
    e88843b0:	3c500613          	li	a2,965
    e88843b4:	85e2                	mv	a1,s8
    e88843b6:	855a                	mv	a0,s6
    e88843b8:	f0ff70ef          	jal	ra,e887c2c6 <eLIBs_printf>
      sock->lastdata.pbuf = p;
    e88843bc:	67e2                	ld	a5,24(sp)
    e88843be:	00f93423          	sd	a5,8(s2)
    e88843c2:	bde1                	j	e888429a <lwip_recv_tcp+0xe2>
        sock->lastdata.pbuf = NULL;
    e88843c4:	00093423          	sd	zero,8(s2)
        pbuf_free(p);
    e88843c8:	6850a0ef          	jal	ra,e888f24c <pbuf_free>
    e88843cc:	b785                	j	e888432c <lwip_recv_tcp+0x174>

00000000e88843ce <lwip_select_inc_sockets_used_set.part.2>:
/* Mark all of the set sockets in one of the three fdsets passed to select as used.
 * All sockets are marked (and later unmarked), whether they are open or not.
 * This is OK as lwip_selscan aborts select when non-open sockets are found.
 */
static void
lwip_select_inc_sockets_used_set(int maxfdp, fd_set *fdset, fd_set *used_sockets)
    e88843ce:	715d                	addi	sp,sp,-80
    e88843d0:	e0a2                	sd	s0,64(sp)
    e88843d2:	f44e                	sd	s3,40(sp)
    e88843d4:	f052                	sd	s4,32(sp)
    e88843d6:	ec56                	sd	s5,24(sp)
    e88843d8:	e486                	sd	ra,72(sp)
    e88843da:	fc26                	sd	s1,56(sp)
    e88843dc:	f84a                	sd	s2,48(sp)
    e88843de:	89aa                	mv	s3,a0
{
  SYS_ARCH_DECL_PROTECT(lev);
  if (fdset) {
    int i;
    for (i = LWIP_SOCKET_OFFSET; i < maxfdp; i++) {
    e88843e0:	4401                	li	s0,0
      /* if this FD is in the set, lock it (unless already done) */
      if (FD_ISSET(i, fdset) && !FD_ISSET(i, used_sockets)) {
    e88843e2:	03100a13          	li	s4,49
        struct lwip_sock *sock;
        SYS_ARCH_PROTECT(lev);
        sock = tryget_socket_unconn_locked(i);
        if (sock != NULL) {
          /* leave the socket used until released by lwip_select_dec_sockets_used */
          FD_SET(i, used_sockets);
    e88843e6:	4a85                	li	s5,1
    for (i = LWIP_SOCKET_OFFSET; i < maxfdp; i++) {
    e88843e8:	01344b63          	blt	s0,s3,e88843fe <lwip_select_inc_sockets_used_set.part.2+0x30>
        }
        SYS_ARCH_UNPROTECT(lev);
      }
    }
  }
}
    e88843ec:	60a6                	ld	ra,72(sp)
    e88843ee:	6406                	ld	s0,64(sp)
    e88843f0:	74e2                	ld	s1,56(sp)
    e88843f2:	7942                	ld	s2,48(sp)
    e88843f4:	79a2                	ld	s3,40(sp)
    e88843f6:	7a02                	ld	s4,32(sp)
    e88843f8:	6ae2                	ld	s5,24(sp)
    e88843fa:	6161                	addi	sp,sp,80
    e88843fc:	8082                	ret
      if (FD_ISSET(i, fdset) && !FD_ISSET(i, used_sockets)) {
    e88843fe:	048a6163          	bltu	s4,s0,e8884440 <lwip_select_inc_sockets_used_set.part.2+0x72>
    e8884402:	40345913          	srai	s2,s0,0x3
    e8884406:	8125c78b          	lrbu	a5,a1,s2,0
    e888440a:	00747493          	andi	s1,s0,7
    e888440e:	4097d7bb          	sraw	a5,a5,s1
    e8884412:	8b85                	andi	a5,a5,1
    e8884414:	c795                	beqz	a5,e8884440 <lwip_select_inc_sockets_used_set.part.2+0x72>
    e8884416:	8126478b          	lrbu	a5,a2,s2,0
    e888441a:	4097d7bb          	sraw	a5,a5,s1
    e888441e:	8b85                	andi	a5,a5,1
    e8884420:	e385                	bnez	a5,e8884440 <lwip_select_inc_sockets_used_set.part.2+0x72>
        sock = tryget_socket_unconn_locked(i);
    e8884422:	8522                	mv	a0,s0
    e8884424:	e432                	sd	a2,8(sp)
    e8884426:	e02e                	sd	a1,0(sp)
    e8884428:	c27ff0ef          	jal	ra,e888404e <tryget_socket_unconn_locked>
        if (sock != NULL) {
    e888442c:	f8c1458b          	ldd	a1,a2,(sp),0,4
    e8884430:	c901                	beqz	a0,e8884440 <lwip_select_inc_sockets_used_set.part.2+0x72>
          FD_SET(i, used_sockets);
    e8884432:	8126478b          	lrbu	a5,a2,s2,0
    e8884436:	009a94bb          	sllw	s1,s5,s1
    e888443a:	8cdd                	or	s1,s1,a5
    e888443c:	0126548b          	srb	s1,a2,s2,0
    for (i = LWIP_SOCKET_OFFSET; i < maxfdp; i++) {
    e8884440:	2405                	addiw	s0,s0,1
    e8884442:	b75d                	j	e88843e8 <lwip_select_inc_sockets_used_set.part.2+0x1a>

00000000e8884444 <lwip_sockopt_to_ipopt>:
{
  /* Map SO_* values to our internal SOF_* values
   * We should not rely on #defines in socket.h
   * being in sync with ip.h.
   */
  switch (optname) {
    e8884444:	47a1                	li	a5,8
    e8884446:	04f50663          	beq	a0,a5,e8884492 <lwip_sockopt_to_ipopt+0x4e>
    e888444a:	02000793          	li	a5,32
    e888444e:	04f50263          	beq	a0,a5,e8884492 <lwip_sockopt_to_ipopt+0x4e>
    e8884452:	4791                	li	a5,4
    e8884454:	02f50f63          	beq	a0,a5,e8884492 <lwip_sockopt_to_ipopt+0x4e>
{
    e8884458:	1141                	addi	sp,sp,-16
  case SO_KEEPALIVE:
    return SOF_KEEPALIVE;
  case SO_REUSEADDR:
    return SOF_REUSEADDR;
  default:
    LWIP_ASSERT("Unknown socket option", 0);
    e888445a:	02f00593          	li	a1,47
    e888445e:	0004b517          	auipc	a0,0x4b
    e8884462:	0b250513          	addi	a0,a0,178 # e88cf510 <err_to_errno_table+0x438>
{
    e8884466:	e406                	sd	ra,8(sp)
    LWIP_ASSERT("Unknown socket option", 0);
    e8884468:	f11f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888446c:	00150693          	addi	a3,a0,1
    e8884470:	6605                	lui	a2,0x1
    e8884472:	b3960613          	addi	a2,a2,-1223 # b39 <memcmp-0xe87ff4c7>
    e8884476:	0004b597          	auipc	a1,0x4b
    e888447a:	05258593          	addi	a1,a1,82 # e88cf4c8 <err_to_errno_table+0x3f0>
    e888447e:	0004b517          	auipc	a0,0x4b
    e8884482:	c3250513          	addi	a0,a0,-974 # e88cf0b0 <kSinTable1024+0x900>
    e8884486:	e41f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return 0;
  }
}
    e888448a:	60a2                	ld	ra,8(sp)
    LWIP_ASSERT("Unknown socket option", 0);
    e888448c:	4501                	li	a0,0
}
    e888448e:	0141                	addi	sp,sp,16
    e8884490:	8082                	ret
    e8884492:	8082                	ret

00000000e8884494 <sockaddr_to_ipaddr_port>:
{
    e8884494:	1101                	addi	sp,sp,-32
    e8884496:	e422                	sd	s0,8(sp)
    e8884498:	e826                	sd	s1,16(sp)
    e888449a:	ec06                	sd	ra,24(sp)
  if ((sockaddr->sa_family) == AF_INET6) {
    e888449c:	00154703          	lbu	a4,1(a0)
    e88844a0:	47a9                	li	a5,10
{
    e88844a2:	842e                	mv	s0,a1
    e88844a4:	84b2                	mv	s1,a2
  if ((sockaddr->sa_family) == AF_INET6) {
    e88844a6:	04f71f63          	bne	a4,a5,e8884504 <sockaddr_to_ipaddr_port+0x70>
    SOCKADDR6_TO_IP6ADDR_PORT((const struct sockaddr_in6 *)(const void *)(sockaddr), ipaddr, *port);
    e88844aa:	451c                	lw	a5,8(a0)
    e88844ac:	66a1                	lui	a3,0x8
    e88844ae:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e88844b2:	c19c                	sw	a5,0(a1)
    e88844b4:	4558                	lw	a4,12(a0)
    e88844b6:	c1d8                	sw	a4,4(a1)
    e88844b8:	4918                	lw	a4,16(a0)
    e88844ba:	c598                	sw	a4,8(a1)
    e88844bc:	4958                	lw	a4,20(a0)
    e88844be:	00058823          	sb	zero,16(a1)
    e88844c2:	c5d8                	sw	a4,12(a1)
    e88844c4:	6731                	lui	a4,0xc
    e88844c6:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e88844ca:	8f7d                	and	a4,a4,a5
    e88844cc:	00d70b63          	beq	a4,a3,e88844e2 <sockaddr_to_ipaddr_port+0x4e>
    e88844d0:	6725                	lui	a4,0x9
    e88844d2:	177d                	addi	a4,a4,-1
    e88844d4:	8ff9                	and	a5,a5,a4
    e88844d6:	e017879b          	addiw	a5,a5,-511
    e88844da:	eff7f793          	andi	a5,a5,-257
    e88844de:	2781                	sext.w	a5,a5
    e88844e0:	e781                	bnez	a5,e88844e8 <sockaddr_to_ipaddr_port+0x54>
    e88844e2:	4d1c                	lw	a5,24(a0)
    e88844e4:	00f40823          	sb	a5,16(s0)
    e88844e8:	00255503          	lhu	a0,2(a0)
    e88844ec:	233020ef          	jal	ra,e8886f1e <lwip_htons>
    e88844f0:	00a49023          	sh	a0,0(s1)
    ipaddr->type = IPADDR_TYPE_V6;
    e88844f4:	4799                	li	a5,6
    e88844f6:	00f40a23          	sb	a5,20(s0)
}
    e88844fa:	60e2                	ld	ra,24(sp)
    e88844fc:	6422                	ld	s0,8(sp)
    e88844fe:	64c2                	ld	s1,16(sp)
    e8884500:	6105                	addi	sp,sp,32
    e8884502:	8082                	ret
    SOCKADDR4_TO_IP4ADDR_PORT((const struct sockaddr_in *)(const void *)(sockaddr), ipaddr, *port);
    e8884504:	415c                	lw	a5,4(a0)
    e8884506:	c19c                	sw	a5,0(a1)
    e8884508:	00255503          	lhu	a0,2(a0)
    e888450c:	213020ef          	jal	ra,e8886f1e <lwip_htons>
    e8884510:	00a49023          	sh	a0,0(s1)
    ipaddr->type = IPADDR_TYPE_V4;
    e8884514:	00040a23          	sb	zero,20(s0)
}
    e8884518:	b7cd                	j	e88844fa <sockaddr_to_ipaddr_port+0x66>

00000000e888451a <lwip_sock_make_addr.isra.5>:
lwip_sock_make_addr(struct netconn *conn, ip_addr_t *fromaddr, u16_t port,
    e888451a:	715d                	addi	sp,sp,-80
    e888451c:	e0a2                	sd	s0,64(sp)
    e888451e:	fc26                	sd	s1,56(sp)
    e8884520:	f84a                	sd	s2,48(sp)
    e8884522:	f44e                	sd	s3,40(sp)
    e8884524:	f052                	sd	s4,32(sp)
    e8884526:	e486                	sd	ra,72(sp)
    e8884528:	8a2a                	mv	s4,a0
    e888452a:	842e                	mv	s0,a1
    e888452c:	89b2                	mv	s3,a2
    e888452e:	8936                	mv	s2,a3
    e8884530:	84ba                	mv	s1,a4
  LWIP_ASSERT("fromaddr != NULL", fromaddr != NULL);
    e8884532:	e59d                	bnez	a1,e8884560 <lwip_sock_make_addr.isra.5+0x46>
    e8884534:	02f00593          	li	a1,47
    e8884538:	0004b517          	auipc	a0,0x4b
    e888453c:	fd850513          	addi	a0,a0,-40 # e88cf510 <err_to_errno_table+0x438>
    e8884540:	e39f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884544:	00150693          	addi	a3,a0,1
    e8884548:	40700613          	li	a2,1031
    e888454c:	0004b597          	auipc	a1,0x4b
    e8884550:	f4458593          	addi	a1,a1,-188 # e88cf490 <err_to_errno_table+0x3b8>
    e8884554:	0004b517          	auipc	a0,0x4b
    e8884558:	b5c50513          	addi	a0,a0,-1188 # e88cf0b0 <kSinTable1024+0x900>
    e888455c:	d6bf70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("from != NULL", from != NULL);
    e8884560:	02091863          	bnez	s2,e8884590 <lwip_sock_make_addr.isra.5+0x76>
    e8884564:	02f00593          	li	a1,47
    e8884568:	0004b517          	auipc	a0,0x4b
    e888456c:	fa850513          	addi	a0,a0,-88 # e88cf510 <err_to_errno_table+0x438>
    e8884570:	e09f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884574:	00150693          	addi	a3,a0,1
    e8884578:	40800613          	li	a2,1032
    e888457c:	0004b597          	auipc	a1,0x4b
    e8884580:	f2c58593          	addi	a1,a1,-212 # e88cf4a8 <err_to_errno_table+0x3d0>
    e8884584:	0004b517          	auipc	a0,0x4b
    e8884588:	b2c50513          	addi	a0,a0,-1236 # e88cf0b0 <kSinTable1024+0x900>
    e888458c:	d3bf70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("fromlen != NULL", fromlen != NULL);
    e8884590:	e49d                	bnez	s1,e88845be <lwip_sock_make_addr.isra.5+0xa4>
    e8884592:	02f00593          	li	a1,47
    e8884596:	0004b517          	auipc	a0,0x4b
    e888459a:	f7a50513          	addi	a0,a0,-134 # e88cf510 <err_to_errno_table+0x438>
    e888459e:	ddbf70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88845a2:	00150693          	addi	a3,a0,1
    e88845a6:	40900613          	li	a2,1033
    e88845aa:	0004b597          	auipc	a1,0x4b
    e88845ae:	f0e58593          	addi	a1,a1,-242 # e88cf4b8 <err_to_errno_table+0x3e0>
    e88845b2:	0004b517          	auipc	a0,0x4b
    e88845b6:	afe50513          	addi	a0,a0,-1282 # e88cf0b0 <kSinTable1024+0x900>
    e88845ba:	d0df70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (NETCONNTYPE_ISIPV6(netconn_type(conn)) && IP_IS_V4(fromaddr)) {
    e88845be:	000a4783          	lbu	a5,0(s4)
    e88845c2:	8ba1                	andi	a5,a5,8
    e88845c4:	c38d                	beqz	a5,e88845e6 <lwip_sock_make_addr.isra.5+0xcc>
    e88845c6:	c401                	beqz	s0,e88845ce <lwip_sock_make_addr.isra.5+0xb4>
    e88845c8:	01444783          	lbu	a5,20(s0)
    e88845cc:	ef89                	bnez	a5,e88845e6 <lwip_sock_make_addr.isra.5+0xcc>
    ip4_2_ipv4_mapped_ipv6(ip_2_ip6(fromaddr), ip_2_ip4(fromaddr));
    e88845ce:	401c                	lw	a5,0(s0)
    e88845d0:	00040823          	sb	zero,16(s0)
    e88845d4:	00043023          	sd	zero,0(s0)
    e88845d8:	c45c                	sw	a5,12(s0)
    e88845da:	77c1                	lui	a5,0xffff0
    e88845dc:	c41c                	sw	a5,8(s0)
    IP_SET_TYPE(fromaddr, IPADDR_TYPE_V6);
    e88845de:	c401                	beqz	s0,e88845e6 <lwip_sock_make_addr.isra.5+0xcc>
    e88845e0:	4799                	li	a5,6
    e88845e2:	00f40a23          	sb	a5,20(s0)
  IPADDR_PORT_TO_SOCKADDR(&saddr, fromaddr, port);
    e88845e6:	01444783          	lbu	a5,20(s0)
    e88845ea:	02e00713          	li	a4,46
    e88845ee:	00e78563          	beq	a5,a4,e88845f8 <lwip_sock_make_addr.isra.5+0xde>
    e88845f2:	4719                	li	a4,6
    e88845f4:	04e79d63          	bne	a5,a4,e888464e <lwip_sock_make_addr.isra.5+0x134>
    e88845f8:	6785                	lui	a5,0x1
    e88845fa:	a1c7879b          	addiw	a5,a5,-1508
    e88845fe:	854e                	mv	a0,s3
    e8884600:	00f11023          	sh	a5,0(sp)
    e8884604:	11b020ef          	jal	ra,e8886f1e <lwip_htons>
    e8884608:	00a11123          	sh	a0,2(sp)
    e888460c:	601c                	ld	a5,0(s0)
    e888460e:	c202                	sw	zero,4(sp)
    e8884610:	e43e                	sd	a5,8(sp)
    e8884612:	641c                	ld	a5,8(s0)
    e8884614:	e83e                	sd	a5,16(sp)
    e8884616:	01044783          	lbu	a5,16(s0)
    e888461a:	cc3e                	sw	a5,24(sp)
  if (*fromlen < saddr.sa.sa_len) {
    e888461c:	4094                	lw	a3,0(s1)
    e888461e:	00014703          	lbu	a4,0(sp)
    truncated = 1;
    e8884622:	4405                	li	s0,1
  if (*fromlen < saddr.sa.sa_len) {
    e8884624:	00e6e663          	bltu	a3,a4,e8884630 <lwip_sock_make_addr.isra.5+0x116>
  int truncated = 0;
    e8884628:	4401                	li	s0,0
  } else if (*fromlen > saddr.sa.sa_len) {
    e888462a:	00d77363          	bgeu	a4,a3,e8884630 <lwip_sock_make_addr.isra.5+0x116>
    *fromlen = saddr.sa.sa_len;
    e888462e:	c098                	sw	a4,0(s1)
  MEMCPY(from, &saddr, *fromlen);
    e8884630:	0004e603          	lwu	a2,0(s1)
    e8884634:	858a                	mv	a1,sp
    e8884636:	854a                	mv	a0,s2
    e8884638:	d69f70ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
}
    e888463c:	74e2                	ld	s1,56(sp)
    e888463e:	8522                	mv	a0,s0
    e8884640:	60a6                	ld	ra,72(sp)
    e8884642:	6406                	ld	s0,64(sp)
    e8884644:	7942                	ld	s2,48(sp)
    e8884646:	79a2                	ld	s3,40(sp)
    e8884648:	7a02                	ld	s4,32(sp)
    e888464a:	6161                	addi	sp,sp,80
    e888464c:	8082                	ret
  IPADDR_PORT_TO_SOCKADDR(&saddr, fromaddr, port);
    e888464e:	21000793          	li	a5,528
    e8884652:	854e                	mv	a0,s3
    e8884654:	00f11023          	sh	a5,0(sp)
    e8884658:	0c7020ef          	jal	ra,e8886f1e <lwip_htons>
    e888465c:	00a11123          	sh	a0,2(sp)
    e8884660:	401c                	lw	a5,0(s0)
    e8884662:	4621                	li	a2,8
    e8884664:	4581                	li	a1,0
    e8884666:	0028                	addi	a0,sp,8
    e8884668:	c23e                	sw	a5,4(sp)
    e888466a:	d2bf70ef          	jal	ra,e887c394 <eLIBs_memset>
    e888466e:	b77d                	j	e888461c <lwip_sock_make_addr.isra.5+0x102>

00000000e8884670 <free_socket_free_elements.isra.7>:
free_socket_free_elements(int is_tcp, struct netconn *conn, union lwip_sock_lastdata *lastdata)
    e8884670:	1141                	addi	sp,sp,-16
    e8884672:	e022                	sd	s0,0(sp)
    e8884674:	e406                	sd	ra,8(sp)
    e8884676:	842e                	mv	s0,a1
  if (lastdata->pbuf != NULL) {
    e8884678:	c609                	beqz	a2,e8884682 <free_socket_free_elements.isra.7+0x12>
    if (is_tcp) {
    e888467a:	c919                	beqz	a0,e8884690 <free_socket_free_elements.isra.7+0x20>
      pbuf_free(lastdata->pbuf);
    e888467c:	8532                	mv	a0,a2
    e888467e:	3cf0a0ef          	jal	ra,e888f24c <pbuf_free>
  if (conn != NULL) {
    e8884682:	c819                	beqz	s0,e8884698 <free_socket_free_elements.isra.7+0x28>
    netconn_delete(conn);
    e8884684:	8522                	mv	a0,s0
}
    e8884686:	6402                	ld	s0,0(sp)
    e8884688:	60a2                	ld	ra,8(sp)
    e888468a:	0141                	addi	sp,sp,16
    netconn_delete(conn);
    e888468c:	3851306f          	j	e8898210 <netconn_delete>
      netbuf_delete(lastdata->netbuf);
    e8884690:	8532                	mv	a0,a2
    e8884692:	2b6160ef          	jal	ra,e889a948 <netbuf_delete>
    e8884696:	b7f5                	j	e8884682 <free_socket_free_elements.isra.7+0x12>
}
    e8884698:	60a2                	ld	ra,8(sp)
    e888469a:	6402                	ld	s0,0(sp)
    e888469c:	0141                	addi	sp,sp,16
    e888469e:	8082                	ret

00000000e88846a0 <lwip_recvfrom_udp_raw.isra.11>:
lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16_t *datagram_len, int dbg_s)
    e88846a0:	711d                	addi	sp,sp,-96
    e88846a2:	e8a2                	sd	s0,80(sp)
    e88846a4:	fc4e                	sd	s3,56(sp)
    e88846a6:	f852                	sd	s4,48(sp)
    e88846a8:	f05a                	sd	s6,32(sp)
    e88846aa:	ec86                	sd	ra,88(sp)
    e88846ac:	e4a6                	sd	s1,72(sp)
    e88846ae:	e0ca                	sd	s2,64(sp)
    e88846b0:	f456                	sd	s5,40(sp)
    e88846b2:	ec5e                	sd	s7,24(sp)
    e88846b4:	e862                	sd	s8,16(sp)
  LWIP_ERROR("lwip_recvfrom_udp_raw: invalid arguments", (msg->msg_iov != NULL) || (msg->msg_iovlen <= 0), return ERR_ARG;);
    e88846b6:	6a1c                	ld	a5,16(a2)
lwip_recvfrom_udp_raw(struct lwip_sock *sock, int flags, struct msghdr *msg, u16_t *datagram_len, int dbg_s)
    e88846b8:	89aa                	mv	s3,a0
    e88846ba:	8a2e                	mv	s4,a1
    e88846bc:	8432                	mv	s0,a2
    e88846be:	8b36                	mv	s6,a3
  LWIP_ERROR("lwip_recvfrom_udp_raw: invalid arguments", (msg->msg_iov != NULL) || (msg->msg_iovlen <= 0), return ERR_ARG;);
    e88846c0:	e7b9                	bnez	a5,e888470e <lwip_recvfrom_udp_raw.isra.11+0x6e>
    e88846c2:	4e1c                	lw	a5,24(a2)
    e88846c4:	04f05563          	blez	a5,e888470e <lwip_recvfrom_udp_raw.isra.11+0x6e>
    e88846c8:	02f00593          	li	a1,47
    e88846cc:	0004b517          	auipc	a0,0x4b
    e88846d0:	e4450513          	addi	a0,a0,-444 # e88cf510 <err_to_errno_table+0x438>
    e88846d4:	ca5f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88846d8:	00150693          	addi	a3,a0,1
    e88846dc:	44900613          	li	a2,1097
    e88846e0:	0004b597          	auipc	a1,0x4b
    e88846e4:	bf858593          	addi	a1,a1,-1032 # e88cf2d8 <err_to_errno_table+0x200>
    e88846e8:	0004b517          	auipc	a0,0x4b
    e88846ec:	9c850513          	addi	a0,a0,-1592 # e88cf0b0 <kSinTable1024+0x900>
    e88846f0:	bd7f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88846f4:	5541                	li	a0,-16
}
    e88846f6:	60e6                	ld	ra,88(sp)
    e88846f8:	6446                	ld	s0,80(sp)
    e88846fa:	64a6                	ld	s1,72(sp)
    e88846fc:	6906                	ld	s2,64(sp)
    e88846fe:	79e2                	ld	s3,56(sp)
    e8884700:	7a42                	ld	s4,48(sp)
    e8884702:	7aa2                	ld	s5,40(sp)
    e8884704:	7b02                	ld	s6,32(sp)
    e8884706:	6be2                	ld	s7,24(sp)
    e8884708:	6c42                	ld	s8,16(sp)
    e888470a:	6125                	addi	sp,sp,96
    e888470c:	8082                	ret
  buf = sock->lastdata.netbuf;
    e888470e:	0089b783          	ld	a5,8(s3)
    apiflags = 0;
    e8884712:	0c3a360b          	extu	a2,s4,3,3
    e8884716:	060a                	slli	a2,a2,0x2
  buf = sock->lastdata.netbuf;
    e8884718:	e43e                	sd	a5,8(sp)
  if (buf == NULL) {
    e888471a:	e3b1                	bnez	a5,e888475e <lwip_recvfrom_udp_raw.isra.11+0xbe>
    err = netconn_recv_udp_raw_netbuf_flags(sock->conn, &buf, apiflags);
    e888471c:	0009b503          	ld	a0,0(s3)
    e8884720:	002c                	addi	a1,sp,8
    e8884722:	727130ef          	jal	ra,e8898648 <netconn_recv_udp_raw_netbuf_flags>
    if (err != ERR_OK) {
    e8884726:	f961                	bnez	a0,e88846f6 <lwip_recvfrom_udp_raw.isra.11+0x56>
    LWIP_ASSERT("buf != NULL", buf != NULL);
    e8884728:	67a2                	ld	a5,8(sp)
    e888472a:	e79d                	bnez	a5,e8884758 <lwip_recvfrom_udp_raw.isra.11+0xb8>
    e888472c:	02f00593          	li	a1,47
    e8884730:	0004b517          	auipc	a0,0x4b
    e8884734:	de050513          	addi	a0,a0,-544 # e88cf510 <err_to_errno_table+0x438>
    e8884738:	c41f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888473c:	00150693          	addi	a3,a0,1
    e8884740:	45e00613          	li	a2,1118
    e8884744:	0004b597          	auipc	a1,0x4b
    e8884748:	bc458593          	addi	a1,a1,-1084 # e88cf308 <err_to_errno_table+0x230>
    e888474c:	0004b517          	auipc	a0,0x4b
    e8884750:	96450513          	addi	a0,a0,-1692 # e88cf0b0 <kSinTable1024+0x900>
    e8884754:	b73f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    sock->lastdata.netbuf = buf;
    e8884758:	67a2                	ld	a5,8(sp)
    e888475a:	00f9b423          	sd	a5,8(s3)
  buflen = buf->p->tot_len;
    e888475e:	67a2                	ld	a5,8(sp)
  for (i = 0; (i < msg->msg_iovlen) && (copied < buflen); i++) {
    e8884760:	4a81                	li	s5,0
  copied = 0;
    e8884762:	4481                	li	s1,0
  buflen = buf->p->tot_len;
    e8884764:	639c                	ld	a5,0(a5)
    e8884766:	0107db83          	lhu	s7,16(a5) # 1010 <memcmp-0xe87feff0>
  for (i = 0; (i < msg->msg_iovlen) && (copied < buflen); i++) {
    e888476a:	000b8c1b          	sext.w	s8,s7
    e888476e:	4c1c                	lw	a5,24(s0)
    e8884770:	00fad463          	bge	s5,a5,e8884778 <lwip_recvfrom_udp_raw.isra.11+0xd8>
    e8884774:	0784ec63          	bltu	s1,s8,e88847ec <lwip_recvfrom_udp_raw.isra.11+0x14c>
  if (msg->msg_name && msg->msg_namelen)
    e8884778:	6014                	ld	a3,0(s0)
    e888477a:	ce89                	beqz	a3,e8884794 <lwip_recvfrom_udp_raw.isra.11+0xf4>
    e888477c:	441c                	lw	a5,8(s0)
    e888477e:	cb99                	beqz	a5,e8884794 <lwip_recvfrom_udp_raw.isra.11+0xf4>
    ip_addr_debug_print_val(SOCKETS_DEBUG, *netbuf_fromaddr(buf));
    e8884780:	65a2                	ld	a1,8(sp)
      lwip_sock_make_addr(sock->conn, netbuf_fromaddr(buf), netbuf_fromport(buf),
    e8884782:	0009b503          	ld	a0,0(s3)
    e8884786:	00840713          	addi	a4,s0,8
    e888478a:	0285d603          	lhu	a2,40(a1)
    e888478e:	05c1                	addi	a1,a1,16
    e8884790:	d8bff0ef          	jal	ra,e888451a <lwip_sock_make_addr.isra.5>
  if (msg->msg_control) {
    e8884794:	701c                	ld	a5,32(s0)
  msg->msg_flags = 0;
    e8884796:	02042623          	sw	zero,44(s0)
  if (msg->msg_control) {
    e888479a:	cf85                	beqz	a5,e88847d2 <lwip_recvfrom_udp_raw.isra.11+0x132>
    if (buf->flags & NETBUF_FLAG_DESTADDR) {
    e888479c:	6722                	ld	a4,8(sp)
    e888479e:	02a74683          	lbu	a3,42(a4) # 902a <memcmp-0xe87f6fd6>
    e88847a2:	8a85                	andi	a3,a3,1
    e88847a4:	c2d1                	beqz	a3,e8884828 <lwip_recvfrom_udp_raw.isra.11+0x188>
      if (IP_IS_V4(&buf->toaddr)) {
    e88847a6:	03070693          	addi	a3,a4,48
    e88847aa:	c681                	beqz	a3,e88847b2 <lwip_recvfrom_udp_raw.isra.11+0x112>
    e88847ac:	04474703          	lbu	a4,68(a4)
    e88847b0:	ef25                	bnez	a4,e8884828 <lwip_recvfrom_udp_raw.isra.11+0x188>
        if (msg->msg_controllen >= CMSG_SPACE(sizeof(struct in_pktinfo))) {
    e88847b2:	5414                	lw	a3,40(s0)
    e88847b4:	475d                	li	a4,23
    e88847b6:	06d77763          	bgeu	a4,a3,e8884824 <lwip_recvfrom_udp_raw.isra.11+0x184>
          chdr->cmsg_type = IP_PKTINFO;
    e88847ba:	46a1                	li	a3,8
          chdr->cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo));
    e88847bc:	4761                	li	a4,24
    e88847be:	e398                	sd	a4,0(a5)
          chdr->cmsg_type = IP_PKTINFO;
    e88847c0:	c794                	sw	a3,8(a5)
          pkti->ipi_ifindex = buf->p->if_idx;
    e88847c2:	66a2                	ld	a3,8(sp)
    e88847c4:	6290                	ld	a2,0(a3)
    e88847c6:	01764603          	lbu	a2,23(a2)
    e88847ca:	cb90                	sw	a2,16(a5)
          inet_addr_from_ip4addr(&pkti->ipi_addr, ip_2_ip4(netbuf_destaddr(buf)));
    e88847cc:	5a94                	lw	a3,48(a3)
    e88847ce:	cbd4                	sw	a3,20(a5)
          msg->msg_controllen = CMSG_SPACE(sizeof(struct in_pktinfo));
    e88847d0:	d418                	sw	a4,40(s0)
  if ((flags & MSG_PEEK) == 0) {
    e88847d2:	001a7a13          	andi	s4,s4,1
    e88847d6:	000a1763          	bnez	s4,e88847e4 <lwip_recvfrom_udp_raw.isra.11+0x144>
    netbuf_delete(buf);
    e88847da:	6522                	ld	a0,8(sp)
    sock->lastdata.netbuf = NULL;
    e88847dc:	0009b423          	sd	zero,8(s3)
    netbuf_delete(buf);
    e88847e0:	168160ef          	jal	ra,e889a948 <netbuf_delete>
    *datagram_len = buflen;
    e88847e4:	017b1023          	sh	s7,0(s6)
  return ERR_OK;
    e88847e8:	4501                	li	a0,0
    e88847ea:	b731                	j	e88846f6 <lwip_recvfrom_udp_raw.isra.11+0x56>
    if (msg->msg_iov[i].iov_len > len_left) {
    e88847ec:	6818                	ld	a4,16(s0)
    e88847ee:	004a9793          	slli	a5,s5,0x4
    u16_t len_left = (u16_t)(buflen - copied);
    e88847f2:	409b893b          	subw	s2,s7,s1
    if (msg->msg_iov[i].iov_len > len_left) {
    e88847f6:	00f706b3          	add	a3,a4,a5
    e88847fa:	6694                	ld	a3,8(a3)
    u16_t len_left = (u16_t)(buflen - copied);
    e88847fc:	3c09390b          	extu	s2,s2,15,0
    if (msg->msg_iov[i].iov_len > len_left) {
    e8884800:	00d96463          	bltu	s2,a3,e8884808 <lwip_recvfrom_udp_raw.isra.11+0x168>
      copylen = (u16_t)msg->msg_iov[i].iov_len;
    e8884804:	3c06b90b          	extu	s2,a3,15,0
    pbuf_copy_partial(buf->p, (u8_t *)msg->msg_iov[i].iov_base, copylen, copied);
    e8884808:	60f7458b          	lrd	a1,a4,a5,0
    e888480c:	67a2                	ld	a5,8(sp)
    e888480e:	86a6                	mv	a3,s1
    e8884810:	864a                	mv	a2,s2
    e8884812:	6388                	ld	a0,0(a5)
    copied = (u16_t)(copied + copylen);
    e8884814:	012484bb          	addw	s1,s1,s2
    e8884818:	3c04b48b          	extu	s1,s1,15,0
    pbuf_copy_partial(buf->p, (u8_t *)msg->msg_iov[i].iov_base, copylen, copied);
    e888481c:	1360b0ef          	jal	ra,e888f952 <pbuf_copy_partial>
  for (i = 0; (i < msg->msg_iovlen) && (copied < buflen); i++) {
    e8884820:	2a85                	addiw	s5,s5,1
    e8884822:	b7b1                	j	e888476e <lwip_recvfrom_udp_raw.isra.11+0xce>
          msg->msg_flags |= MSG_CTRUNC;
    e8884824:	47a1                	li	a5,8
    e8884826:	d45c                	sw	a5,44(s0)
      msg->msg_controllen = 0;
    e8884828:	02042423          	sw	zero,40(s0)
    e888482c:	b75d                	j	e88847d2 <lwip_recvfrom_udp_raw.isra.11+0x132>

00000000e888482e <free_socket>:
{
    e888482e:	1101                	addi	sp,sp,-32
    e8884830:	e422                	sd	s0,8(sp)
    e8884832:	e826                	sd	s1,16(sp)
    e8884834:	ec06                	sd	ra,24(sp)
  LWIP_ASSERT("sock->fd_used > 0", sock->fd_used > 0);
    e8884836:	01754783          	lbu	a5,23(a0)
{
    e888483a:	842a                	mv	s0,a0
    e888483c:	84ae                	mv	s1,a1
  LWIP_ASSERT("sock->fd_used > 0", sock->fd_used > 0);
    e888483e:	e79d                	bnez	a5,e888486c <free_socket+0x3e>
    e8884840:	02f00593          	li	a1,47
    e8884844:	0004b517          	auipc	a0,0x4b
    e8884848:	ccc50513          	addi	a0,a0,-820 # e88cf510 <err_to_errno_table+0x438>
    e888484c:	b2df70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884850:	00150693          	addi	a3,a0,1
    e8884854:	22800613          	li	a2,552
    e8884858:	0004b597          	auipc	a1,0x4b
    e888485c:	95858593          	addi	a1,a1,-1704 # e88cf1b0 <err_to_errno_table+0xd8>
    e8884860:	0004b517          	auipc	a0,0x4b
    e8884864:	85050513          	addi	a0,a0,-1968 # e88cf0b0 <kSinTable1024+0x900>
    e8884868:	a5ff70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  sock->fd_used--;
    e888486c:	01744783          	lbu	a5,23(s0)
    e8884870:	37fd                	addiw	a5,a5,-1
    e8884872:	0ff7f793          	andi	a5,a5,255
    e8884876:	00f40ba3          	sb	a5,23(s0)
  if (sock->fd_used > 0) {
    e888487a:	cb99                	beqz	a5,e8884890 <free_socket+0x62>
    sock->fd_free_pending = LWIP_SOCK_FD_FREE_FREE | (is_tcp ? LWIP_SOCK_FD_FREE_TCP : 0);
    e888487c:	009035b3          	snez	a1,s1
    e8884880:	0589                	addi	a1,a1,2
    e8884882:	00b40c23          	sb	a1,24(s0)
}
    e8884886:	60e2                	ld	ra,24(sp)
    e8884888:	6422                	ld	s0,8(sp)
    e888488a:	64c2                	ld	s1,16(sp)
    e888488c:	6105                	addi	sp,sp,32
    e888488e:	8082                	ret
  *lastdata = sock->lastdata;
    e8884890:	6410                	ld	a2,8(s0)
  *conn = sock->conn;
    e8884892:	600c                	ld	a1,0(s0)
  sock->lastdata.pbuf = NULL;
    e8884894:	00043423          	sd	zero,8(s0)
  sock->conn = NULL;
    e8884898:	00043023          	sd	zero,0(s0)
}
    e888489c:	6422                	ld	s0,8(sp)
    e888489e:	60e2                	ld	ra,24(sp)
    free_socket_free_elements(is_tcp, conn, &lastdata);
    e88848a0:	8526                	mv	a0,s1
}
    e88848a2:	64c2                	ld	s1,16(sp)
    e88848a4:	6105                	addi	sp,sp,32
    free_socket_free_elements(is_tcp, conn, &lastdata);
    e88848a6:	dcbff06f          	j	e8884670 <free_socket_free_elements.isra.7>

00000000e88848aa <done_socket>:
{
    e88848aa:	1141                	addi	sp,sp,-16
    e88848ac:	e022                	sd	s0,0(sp)
    e88848ae:	e406                	sd	ra,8(sp)
    e88848b0:	842a                	mv	s0,a0
  LWIP_ASSERT("sock != NULL", sock != NULL);
    e88848b2:	e51d                	bnez	a0,e88848e0 <done_socket+0x36>
    e88848b4:	02f00593          	li	a1,47
    e88848b8:	0004b517          	auipc	a0,0x4b
    e88848bc:	c5850513          	addi	a0,a0,-936 # e88cf510 <err_to_errno_table+0x438>
    e88848c0:	ab9f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88848c4:	00150693          	addi	a3,a0,1
    e88848c8:	18000613          	li	a2,384
    e88848cc:	0004b597          	auipc	a1,0x4b
    e88848d0:	8c458593          	addi	a1,a1,-1852 # e88cf190 <err_to_errno_table+0xb8>
    e88848d4:	0004a517          	auipc	a0,0x4a
    e88848d8:	7dc50513          	addi	a0,a0,2012 # e88cf0b0 <kSinTable1024+0x900>
    e88848dc:	9ebf70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("sock->fd_used > 0", sock->fd_used > 0);
    e88848e0:	01744783          	lbu	a5,23(s0)
    e88848e4:	e79d                	bnez	a5,e8884912 <done_socket+0x68>
    e88848e6:	02f00593          	li	a1,47
    e88848ea:	0004b517          	auipc	a0,0x4b
    e88848ee:	c2650513          	addi	a0,a0,-986 # e88cf510 <err_to_errno_table+0x438>
    e88848f2:	a87f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88848f6:	00150693          	addi	a3,a0,1
    e88848fa:	18300613          	li	a2,387
    e88848fe:	0004b597          	auipc	a1,0x4b
    e8884902:	8b258593          	addi	a1,a1,-1870 # e88cf1b0 <err_to_errno_table+0xd8>
    e8884906:	0004a517          	auipc	a0,0x4a
    e888490a:	7aa50513          	addi	a0,a0,1962 # e88cf0b0 <kSinTable1024+0x900>
    e888490e:	9b9f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (--sock->fd_used == 0) {
    e8884912:	01744783          	lbu	a5,23(s0)
    e8884916:	37fd                	addiw	a5,a5,-1
    e8884918:	0ff7f793          	andi	a5,a5,255
    e888491c:	00f40ba3          	sb	a5,23(s0)
    e8884920:	e385                	bnez	a5,e8884940 <done_socket+0x96>
    if (sock->fd_free_pending) {
    e8884922:	01844503          	lbu	a0,24(s0)
    e8884926:	cd09                	beqz	a0,e8884940 <done_socket+0x96>
  *lastdata = sock->lastdata;
    e8884928:	6410                	ld	a2,8(s0)
  *conn = sock->conn;
    e888492a:	600c                	ld	a1,0(s0)
  sock->lastdata.pbuf = NULL;
    e888492c:	00043423          	sd	zero,8(s0)
  sock->conn = NULL;
    e8884930:	00043023          	sd	zero,0(s0)
}
    e8884934:	6402                	ld	s0,0(sp)
    e8884936:	60a2                	ld	ra,8(sp)
    free_socket_free_elements(is_tcp, conn, &lastdata);
    e8884938:	8905                	andi	a0,a0,1
}
    e888493a:	0141                	addi	sp,sp,16
    free_socket_free_elements(is_tcp, conn, &lastdata);
    e888493c:	d35ff06f          	j	e8884670 <free_socket_free_elements.isra.7>
}
    e8884940:	60a2                	ld	ra,8(sp)
    e8884942:	6402                	ld	s0,0(sp)
    e8884944:	0141                	addi	sp,sp,16
    e8884946:	8082                	ret

00000000e8884948 <tryget_socket>:
{
    e8884948:	1101                	addi	sp,sp,-32
    e888494a:	ec06                	sd	ra,24(sp)
    e888494c:	e84a                	sd	s2,16(sp)
    e888494e:	f891540b          	sdd	s0,s1,(sp),0,4
  if ((s < 0) || (s >= NUM_SOCKETS)) {
    e8884952:	03100793          	li	a5,49
    e8884956:	00a7fa63          	bgeu	a5,a0,e888496a <tryget_socket+0x22>
  return NULL;
    e888495a:	4481                	li	s1,0
}
    e888495c:	8526                	mv	a0,s1
    e888495e:	60e2                	ld	ra,24(sp)
    e8884960:	f891440b          	ldd	s0,s1,(sp),0,4
    e8884964:	6942                	ld	s2,16(sp)
    e8884966:	6105                	addi	sp,sp,32
    e8884968:	8082                	ret
  return &sockets[s];
    e888496a:	00551413          	slli	s0,a0,0x5
    e888496e:	00060917          	auipc	s2,0x60
    e8884972:	62a90913          	addi	s2,s2,1578 # e88e4f98 <sockets>
    e8884976:	008904b3          	add	s1,s2,s0
    if (!sock_inc_used(ret)) {
    e888497a:	8526                	mv	a0,s1
    e888497c:	dc6ff0ef          	jal	ra,e8883f42 <sock_inc_used>
    e8884980:	dd69                	beqz	a0,e888495a <tryget_socket+0x12>
    if (sock->conn) {
    e8884982:	6089478b          	lrd	a5,s2,s0,0
    e8884986:	fbf9                	bnez	a5,e888495c <tryget_socket+0x14>
    done_socket(sock);
    e8884988:	8526                	mv	a0,s1
    e888498a:	f21ff0ef          	jal	ra,e88848aa <done_socket>
    e888498e:	b7f1                	j	e888495a <tryget_socket+0x12>

00000000e8884990 <get_socket>:
{
    e8884990:	1141                	addi	sp,sp,-16
    e8884992:	e406                	sd	ra,8(sp)
  struct lwip_sock *sock = tryget_socket(fd);
    e8884994:	fb5ff0ef          	jal	ra,e8884948 <tryget_socket>
  if (!sock) {
    e8884998:	e511                	bnez	a0,e88849a4 <get_socket+0x14>
    set_errno(EBADF);
    e888499a:	47a5                	li	a5,9
    e888499c:	00060717          	auipc	a4,0x60
    e88849a0:	c8f72623          	sw	a5,-884(a4) # e88e4628 <lwip_errno>
}
    e88849a4:	60a2                	ld	ra,8(sp)
    e88849a6:	0141                	addi	sp,sp,16
    e88849a8:	8082                	ret

00000000e88849aa <lwip_selscan>:
{
    e88849aa:	7119                	addi	sp,sp,-128
    e88849ac:	f0ca                	sd	s2,96(sp)
    e88849ae:	e4d6                	sd	s5,72(sp)
    e88849b0:	f466                	sd	s9,40(sp)
    e88849b2:	8aae                	mv	s5,a1
    e88849b4:	8caa                	mv	s9,a0
  FD_ZERO(&lreadset);
    e88849b6:	4581                	li	a1,0
    e88849b8:	0028                	addi	a0,sp,8
{
    e88849ba:	8932                	mv	s2,a2
  FD_ZERO(&lreadset);
    e88849bc:	461d                	li	a2,7
{
    e88849be:	fc86                	sd	ra,120(sp)
    e88849c0:	f8a2                	sd	s0,112(sp)
    e88849c2:	f4a6                	sd	s1,104(sp)
    e88849c4:	ecce                	sd	s3,88(sp)
    e88849c6:	e8d2                	sd	s4,80(sp)
    e88849c8:	89b6                	mv	s3,a3
    e88849ca:	e0da                	sd	s6,64(sp)
    e88849cc:	fc5e                	sd	s7,56(sp)
    e88849ce:	8b3a                	mv	s6,a4
    e88849d0:	8bbe                	mv	s7,a5
    e88849d2:	f862                	sd	s8,48(sp)
    e88849d4:	f06a                	sd	s10,32(sp)
    e88849d6:	8c42                	mv	s8,a6
  FD_ZERO(&lreadset);
    e88849d8:	9bdf70ef          	jal	ra,e887c394 <eLIBs_memset>
  int i, nready = 0;
    e88849dc:	4481                	li	s1,0
  FD_ZERO(&lwriteset);
    e88849de:	461d                	li	a2,7
    e88849e0:	4581                	li	a1,0
    e88849e2:	0808                	addi	a0,sp,16
    e88849e4:	9b1f70ef          	jal	ra,e887c394 <eLIBs_memset>
  for (i = LWIP_SOCKET_OFFSET; i < maxfdp1; i++) {
    e88849e8:	4401                	li	s0,0
  FD_ZERO(&lexceptset);
    e88849ea:	461d                	li	a2,7
    e88849ec:	4581                	li	a1,0
    e88849ee:	0828                	addi	a0,sp,24
    e88849f0:	9a5f70ef          	jal	ra,e887c394 <eLIBs_memset>
        FD_SET(i, &lexceptset);
    e88849f4:	4d05                	li	s10,1
      if (exceptset_in && FD_ISSET(i, exceptset_in) && (errevent != 0)) {
    e88849f6:	03100a13          	li	s4,49
  for (i = LWIP_SOCKET_OFFSET; i < maxfdp1; i++) {
    e88849fa:	07944e63          	blt	s0,s9,e8884a76 <lwip_selscan+0xcc>
  *readset_out = lreadset;
    e88849fe:	47a2                	lw	a5,8(sp)
    e8884a00:	00fb2023          	sw	a5,0(s6)
    e8884a04:	00b12783          	lw	a5,11(sp)
    e8884a08:	00fb21a3          	sw	a5,3(s6)
  *writeset_out = lwriteset;
    e8884a0c:	47c2                	lw	a5,16(sp)
    e8884a0e:	00fba023          	sw	a5,0(s7)
    e8884a12:	01312783          	lw	a5,19(sp)
    e8884a16:	00fba1a3          	sw	a5,3(s7)
  *exceptset_out = lexceptset;
    e8884a1a:	47e2                	lw	a5,24(sp)
    e8884a1c:	00fc2023          	sw	a5,0(s8)
    e8884a20:	01b12783          	lw	a5,27(sp)
    e8884a24:	00fc21a3          	sw	a5,3(s8)
  LWIP_ASSERT("nready >= 0", nready >= 0);
    e8884a28:	0204d863          	bgez	s1,e8884a58 <lwip_selscan+0xae>
    e8884a2c:	02f00593          	li	a1,47
    e8884a30:	0004b517          	auipc	a0,0x4b
    e8884a34:	ae050513          	addi	a0,a0,-1312 # e88cf510 <err_to_errno_table+0x438>
    e8884a38:	941f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884a3c:	00150693          	addi	a3,a0,1
    e8884a40:	76900613          	li	a2,1897
    e8884a44:	0004b597          	auipc	a1,0x4b
    e8884a48:	91c58593          	addi	a1,a1,-1764 # e88cf360 <err_to_errno_table+0x288>
    e8884a4c:	0004a517          	auipc	a0,0x4a
    e8884a50:	66450513          	addi	a0,a0,1636 # e88cf0b0 <kSinTable1024+0x900>
    e8884a54:	873f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e8884a58:	70e6                	ld	ra,120(sp)
    e8884a5a:	7446                	ld	s0,112(sp)
    e8884a5c:	8526                	mv	a0,s1
    e8884a5e:	7906                	ld	s2,96(sp)
    e8884a60:	74a6                	ld	s1,104(sp)
    e8884a62:	69e6                	ld	s3,88(sp)
    e8884a64:	6a46                	ld	s4,80(sp)
    e8884a66:	6aa6                	ld	s5,72(sp)
    e8884a68:	6b06                	ld	s6,64(sp)
    e8884a6a:	7be2                	ld	s7,56(sp)
    e8884a6c:	7c42                	ld	s8,48(sp)
    e8884a6e:	7ca2                	ld	s9,40(sp)
    e8884a70:	7d02                	ld	s10,32(sp)
    e8884a72:	6109                	addi	sp,sp,128
    e8884a74:	8082                	ret
    if (!(readset_in && FD_ISSET(i, readset_in)) &&
    e8884a76:	060a8763          	beqz	s5,e8884ae4 <lwip_selscan+0x13a>
    e8884a7a:	108a6563          	bltu	s4,s0,e8884b84 <lwip_selscan+0x1da>
    e8884a7e:	40345793          	srai	a5,s0,0x3
    e8884a82:	80fac78b          	lrbu	a5,s5,a5,0
    e8884a86:	00747713          	andi	a4,s0,7
    e8884a8a:	40e7d7bb          	sraw	a5,a5,a4
    e8884a8e:	8b85                	andi	a5,a5,1
    e8884a90:	cbcd                	beqz	a5,e8884b42 <lwip_selscan+0x198>
    sock = tryget_socket_unconn_locked(i);
    e8884a92:	8522                	mv	a0,s0
    e8884a94:	dbaff0ef          	jal	ra,e888404e <tryget_socket_unconn_locked>
    if (sock != NULL) {
    e8884a98:	c15d                	beqz	a0,e8884b3e <lwip_selscan+0x194>
      u16_t sendevent = sock->sendevent;
    e8884a9a:	01255583          	lhu	a1,18(a0)
      u16_t errevent = sock->errevent;
    e8884a9e:	01455603          	lhu	a2,20(a0)
      if (readset_in && FD_ISSET(i, readset_in) && ((lastdata != NULL) || (rcvevent > 0))) {
    e8884aa2:	060a8263          	beqz	s5,e8884b06 <lwip_selscan+0x15c>
    e8884aa6:	0a8a6163          	bltu	s4,s0,e8884b48 <lwip_selscan+0x19e>
    e8884aaa:	40345693          	srai	a3,s0,0x3
    e8884aae:	80dac78b          	lrbu	a5,s5,a3,0
    e8884ab2:	00747713          	andi	a4,s0,7
    e8884ab6:	40e7d7bb          	sraw	a5,a5,a4
    e8884aba:	8b85                	andi	a5,a5,1
    e8884abc:	c38d                	beqz	a5,e8884ade <lwip_selscan+0x134>
    e8884abe:	651c                	ld	a5,8(a0)
    e8884ac0:	e789                	bnez	a5,e8884aca <lwip_selscan+0x120>
    e8884ac2:	01051783          	lh	a5,16(a0)
    e8884ac6:	00f05c63          	blez	a5,e8884ade <lwip_selscan+0x134>
        FD_SET(i, &lreadset);
    e8884aca:	003c                	addi	a5,sp,8
    e8884acc:	80d7c78b          	lrbu	a5,a5,a3,0
    e8884ad0:	00ed173b          	sllw	a4,s10,a4
        nready++;
    e8884ad4:	2485                	addiw	s1,s1,1
        FD_SET(i, &lreadset);
    e8884ad6:	8f5d                	or	a4,a4,a5
    e8884ad8:	003c                	addi	a5,sp,8
    e8884ada:	00d7d70b          	srb	a4,a5,a3,0
      if (writeset_in && FD_ISSET(i, writeset_in) && (sendevent != 0)) {
    e8884ade:	02091863          	bnez	s2,e8884b0e <lwip_selscan+0x164>
    e8884ae2:	a899                	j	e8884b38 <lwip_selscan+0x18e>
    if (!(readset_in && FD_ISSET(i, readset_in)) &&
    e8884ae4:	0a090263          	beqz	s2,e8884b88 <lwip_selscan+0x1de>
        !(writeset_in && FD_ISSET(i, writeset_in)) &&
    e8884ae8:	0a8a6f63          	bltu	s4,s0,e8884ba6 <lwip_selscan+0x1fc>
    e8884aec:	40345793          	srai	a5,s0,0x3
    e8884af0:	80f9478b          	lrbu	a5,s2,a5,0
    e8884af4:	00747713          	andi	a4,s0,7
    e8884af8:	40e7d7bb          	sraw	a5,a5,a4
    e8884afc:	8b85                	andi	a5,a5,1
    e8884afe:	fbd1                	bnez	a5,e8884a92 <lwip_selscan+0xe8>
    e8884b00:	08099863          	bnez	s3,e8884b90 <lwip_selscan+0x1e6>
    e8884b04:	a04d                	j	e8884ba6 <lwip_selscan+0x1fc>
      if (writeset_in && FD_ISSET(i, writeset_in) && (sendevent != 0)) {
    e8884b06:	04090363          	beqz	s2,e8884b4c <lwip_selscan+0x1a2>
    e8884b0a:	068a6a63          	bltu	s4,s0,e8884b7e <lwip_selscan+0x1d4>
    e8884b0e:	40345693          	srai	a3,s0,0x3
    e8884b12:	80d9478b          	lrbu	a5,s2,a3,0
    e8884b16:	00747713          	andi	a4,s0,7
    e8884b1a:	40e7d7bb          	sraw	a5,a5,a4
    e8884b1e:	8b85                	andi	a5,a5,1
    e8884b20:	cf81                	beqz	a5,e8884b38 <lwip_selscan+0x18e>
    e8884b22:	c999                	beqz	a1,e8884b38 <lwip_selscan+0x18e>
        FD_SET(i, &lwriteset);
    e8884b24:	081c                	addi	a5,sp,16
    e8884b26:	80d7c78b          	lrbu	a5,a5,a3,0
    e8884b2a:	00ed173b          	sllw	a4,s10,a4
        nready++;
    e8884b2e:	2485                	addiw	s1,s1,1
        FD_SET(i, &lwriteset);
    e8884b30:	8f5d                	or	a4,a4,a5
    e8884b32:	081c                	addi	a5,sp,16
    e8884b34:	00d7d70b          	srb	a4,a5,a3,0
      if (exceptset_in && FD_ISSET(i, exceptset_in) && (errevent != 0)) {
    e8884b38:	00099e63          	bnez	s3,e8884b54 <lwip_selscan+0x1aa>
    e8884b3c:	a089                	j	e8884b7e <lwip_selscan+0x1d4>
      return -1;
    e8884b3e:	54fd                	li	s1,-1
    e8884b40:	bf21                	j	e8884a58 <lwip_selscan+0xae>
    if (!(readset_in && FD_ISSET(i, readset_in)) &&
    e8884b42:	fa0915e3          	bnez	s2,e8884aec <lwip_selscan+0x142>
    e8884b46:	bf6d                	j	e8884b00 <lwip_selscan+0x156>
      if (writeset_in && FD_ISSET(i, writeset_in) && (sendevent != 0)) {
    e8884b48:	02091b63          	bnez	s2,e8884b7e <lwip_selscan+0x1d4>
      if (exceptset_in && FD_ISSET(i, exceptset_in) && (errevent != 0)) {
    e8884b4c:	02098963          	beqz	s3,e8884b7e <lwip_selscan+0x1d4>
    e8884b50:	028a6763          	bltu	s4,s0,e8884b7e <lwip_selscan+0x1d4>
    e8884b54:	40345693          	srai	a3,s0,0x3
    e8884b58:	80d9c78b          	lrbu	a5,s3,a3,0
    e8884b5c:	00747713          	andi	a4,s0,7
    e8884b60:	40e7d7bb          	sraw	a5,a5,a4
    e8884b64:	8b85                	andi	a5,a5,1
    e8884b66:	cf81                	beqz	a5,e8884b7e <lwip_selscan+0x1d4>
    e8884b68:	ca19                	beqz	a2,e8884b7e <lwip_selscan+0x1d4>
        FD_SET(i, &lexceptset);
    e8884b6a:	083c                	addi	a5,sp,24
    e8884b6c:	80d7c78b          	lrbu	a5,a5,a3,0
    e8884b70:	00ed173b          	sllw	a4,s10,a4
        nready++;
    e8884b74:	2485                	addiw	s1,s1,1
        FD_SET(i, &lexceptset);
    e8884b76:	8f5d                	or	a4,a4,a5
    e8884b78:	083c                	addi	a5,sp,24
    e8884b7a:	00d7d70b          	srb	a4,a5,a3,0
      done_socket(sock);
    e8884b7e:	d2dff0ef          	jal	ra,e88848aa <done_socket>
    e8884b82:	a015                	j	e8884ba6 <lwip_selscan+0x1fc>
    if (!(readset_in && FD_ISSET(i, readset_in)) &&
    e8884b84:	02091163          	bnez	s2,e8884ba6 <lwip_selscan+0x1fc>
        !(writeset_in && FD_ISSET(i, writeset_in)) &&
    e8884b88:	00098f63          	beqz	s3,e8884ba6 <lwip_selscan+0x1fc>
        !(exceptset_in && FD_ISSET(i, exceptset_in))) {
    e8884b8c:	008a6d63          	bltu	s4,s0,e8884ba6 <lwip_selscan+0x1fc>
    e8884b90:	40345793          	srai	a5,s0,0x3
    e8884b94:	80f9c78b          	lrbu	a5,s3,a5,0
    e8884b98:	00747713          	andi	a4,s0,7
    e8884b9c:	40e7d7bb          	sraw	a5,a5,a4
    e8884ba0:	8b85                	andi	a5,a5,1
    e8884ba2:	ee0798e3          	bnez	a5,e8884a92 <lwip_selscan+0xe8>
  for (i = LWIP_SOCKET_OFFSET; i < maxfdp1; i++) {
    e8884ba6:	2405                	addiw	s0,s0,1
    e8884ba8:	bd89                	j	e88849fa <lwip_selscan+0x50>

00000000e8884baa <lwip_select_dec_sockets_used>:
{
    e8884baa:	7139                	addi	sp,sp,-64
    e8884bac:	ec22                	sd	s0,24(sp)
    e8884bae:	f026                	sd	s1,32(sp)
    e8884bb0:	f44a                	sd	s2,40(sp)
    e8884bb2:	f84e                	sd	s3,48(sp)
    e8884bb4:	fc06                	sd	ra,56(sp)
    e8884bb6:	84aa                	mv	s1,a0
  for (i = LWIP_SOCKET_OFFSET; i < maxfdp; i++) {
    e8884bb8:	4401                	li	s0,0
    if (FD_ISSET(i, used_sockets)) {
    e8884bba:	03100913          	li	s2,49
        done_socket(sock);
    e8884bbe:	00060997          	auipc	s3,0x60
    e8884bc2:	3da98993          	addi	s3,s3,986 # e88e4f98 <sockets>
    e8884bc6:	0004079b          	sext.w	a5,s0
  for (i = LWIP_SOCKET_OFFSET; i < maxfdp; i++) {
    e8884bca:	0097c963          	blt	a5,s1,e8884bdc <lwip_select_dec_sockets_used+0x32>
}
    e8884bce:	70e2                	ld	ra,56(sp)
    e8884bd0:	6462                	ld	s0,24(sp)
    e8884bd2:	7482                	ld	s1,32(sp)
    e8884bd4:	7922                	ld	s2,40(sp)
    e8884bd6:	79c2                	ld	s3,48(sp)
    e8884bd8:	6121                	addi	sp,sp,64
    e8884bda:	8082                	ret
    if (FD_ISSET(i, used_sockets)) {
    e8884bdc:	02896263          	bltu	s2,s0,e8884c00 <lwip_select_dec_sockets_used+0x56>
    e8884be0:	4037d713          	srai	a4,a5,0x3
    e8884be4:	80e5c70b          	lrbu	a4,a1,a4,0
    e8884be8:	8b9d                	andi	a5,a5,7
    e8884bea:	40f757bb          	sraw	a5,a4,a5
    e8884bee:	8b85                	andi	a5,a5,1
    e8884bf0:	cb81                	beqz	a5,e8884c00 <lwip_select_dec_sockets_used+0x56>
        done_socket(sock);
    e8884bf2:	00541513          	slli	a0,s0,0x5
    e8884bf6:	954e                	add	a0,a0,s3
    e8884bf8:	e42e                	sd	a1,8(sp)
    e8884bfa:	cb1ff0ef          	jal	ra,e88848aa <done_socket>
    e8884bfe:	65a2                	ld	a1,8(sp)
  for (i = LWIP_SOCKET_OFFSET; i < maxfdp; i++) {
    e8884c00:	0405                	addi	s0,s0,1
    e8884c02:	b7d1                	j	e8884bc6 <lwip_select_dec_sockets_used+0x1c>

00000000e8884c04 <lwip_getaddrname>:
{
    e8884c04:	7159                	addi	sp,sp,-112
    e8884c06:	eca6                	sd	s1,88(sp)
    e8884c08:	e8ca                	sd	s2,80(sp)
    e8884c0a:	f486                	sd	ra,104(sp)
    e8884c0c:	f0a2                	sd	s0,96(sp)
    e8884c0e:	892e                	mv	s2,a1
    e8884c10:	84b2                	mv	s1,a2
    e8884c12:	e436                	sd	a3,8(sp)
  sock = get_socket(s);
    e8884c14:	d7dff0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8884c18:	c505                	beqz	a0,e8884c40 <lwip_getaddrname+0x3c>
    e8884c1a:	842a                	mv	s0,a0
  err = netconn_getaddr(sock->conn, &naddr, &port, local);
    e8884c1c:	66a2                	ld	a3,8(sp)
    e8884c1e:	6108                	ld	a0,0(a0)
    e8884c20:	01610613          	addi	a2,sp,22
    e8884c24:	082c                	addi	a1,sp,24
    e8884c26:	618130ef          	jal	ra,e889823e <netconn_getaddr>
  if (err != ERR_OK) {
    e8884c2a:	cd09                	beqz	a0,e8884c44 <lwip_getaddrname+0x40>
    sock_set_errno(sock, err_to_errno(err));
    e8884c2c:	a10ff0ef          	jal	ra,e8883e3c <err_to_errno>
    e8884c30:	c509                	beqz	a0,e8884c3a <lwip_getaddrname+0x36>
    e8884c32:	00060797          	auipc	a5,0x60
    e8884c36:	9ea7ab23          	sw	a0,-1546(a5) # e88e4628 <lwip_errno>
    done_socket(sock);
    e8884c3a:	8522                	mv	a0,s0
    e8884c3c:	c6fff0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e8884c40:	557d                	li	a0,-1
    e8884c42:	a8bd                	j	e8884cc0 <lwip_getaddrname+0xbc>
  if (NETCONNTYPE_ISIPV6(netconn_type(sock->conn)) &&
    e8884c44:	601c                	ld	a5,0(s0)
    e8884c46:	0007c783          	lbu	a5,0(a5)
    e8884c4a:	8ba1                	andi	a5,a5,8
    e8884c4c:	cf91                	beqz	a5,e8884c68 <lwip_getaddrname+0x64>
    e8884c4e:	02c14783          	lbu	a5,44(sp)
    e8884c52:	eb99                	bnez	a5,e8884c68 <lwip_getaddrname+0x64>
    ip4_2_ipv4_mapped_ipv6(ip_2_ip6(&naddr), ip_2_ip4(&naddr));
    e8884c54:	47e2                	lw	a5,24(sp)
    e8884c56:	02010423          	sb	zero,40(sp)
    e8884c5a:	ec02                	sd	zero,24(sp)
    e8884c5c:	d23e                	sw	a5,36(sp)
    e8884c5e:	77c1                	lui	a5,0xffff0
    e8884c60:	d03e                	sw	a5,32(sp)
    IP_SET_TYPE_VAL(naddr, IPADDR_TYPE_V6);
    e8884c62:	4799                	li	a5,6
    e8884c64:	02f10623          	sb	a5,44(sp)
  IPADDR_PORT_TO_SOCKADDR(&saddr, &naddr, port);
    e8884c68:	02c14783          	lbu	a5,44(sp)
    e8884c6c:	02e00713          	li	a4,46
    e8884c70:	01615503          	lhu	a0,22(sp)
    e8884c74:	00e78563          	beq	a5,a4,e8884c7e <lwip_getaddrname+0x7a>
    e8884c78:	4719                	li	a4,6
    e8884c7a:	04e79963          	bne	a5,a4,e8884ccc <lwip_getaddrname+0xc8>
    e8884c7e:	6785                	lui	a5,0x1
    e8884c80:	a1c7879b          	addiw	a5,a5,-1508
    e8884c84:	02f11823          	sh	a5,48(sp)
    e8884c88:	296020ef          	jal	ra,e8886f1e <lwip_htons>
    e8884c8c:	02a11923          	sh	a0,50(sp)
    e8884c90:	67e2                	ld	a5,24(sp)
    e8884c92:	da02                	sw	zero,52(sp)
    e8884c94:	fc3e                	sd	a5,56(sp)
    e8884c96:	7782                	ld	a5,32(sp)
    e8884c98:	e0be                	sd	a5,64(sp)
    e8884c9a:	02814783          	lbu	a5,40(sp)
    e8884c9e:	c4be                	sw	a5,72(sp)
  if (*namelen > saddr.sa.sa_len) {
    e8884ca0:	03014783          	lbu	a5,48(sp)
    e8884ca4:	4098                	lw	a4,0(s1)
    e8884ca6:	00e7f363          	bgeu	a5,a4,e8884cac <lwip_getaddrname+0xa8>
    *namelen = saddr.sa.sa_len;
    e8884caa:	c09c                	sw	a5,0(s1)
  MEMCPY(name, &saddr, *namelen);
    e8884cac:	0004e603          	lwu	a2,0(s1)
    e8884cb0:	180c                	addi	a1,sp,48
    e8884cb2:	854a                	mv	a0,s2
    e8884cb4:	eecf70ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  done_socket(sock);
    e8884cb8:	8522                	mv	a0,s0
    e8884cba:	bf1ff0ef          	jal	ra,e88848aa <done_socket>
  return 0;
    e8884cbe:	4501                	li	a0,0
}
    e8884cc0:	70a6                	ld	ra,104(sp)
    e8884cc2:	7406                	ld	s0,96(sp)
    e8884cc4:	64e6                	ld	s1,88(sp)
    e8884cc6:	6946                	ld	s2,80(sp)
    e8884cc8:	6165                	addi	sp,sp,112
    e8884cca:	8082                	ret
  IPADDR_PORT_TO_SOCKADDR(&saddr, &naddr, port);
    e8884ccc:	21000793          	li	a5,528
    e8884cd0:	02f11823          	sh	a5,48(sp)
    e8884cd4:	24a020ef          	jal	ra,e8886f1e <lwip_htons>
    e8884cd8:	02a11923          	sh	a0,50(sp)
    e8884cdc:	47e2                	lw	a5,24(sp)
    e8884cde:	4621                	li	a2,8
    e8884ce0:	4581                	li	a1,0
    e8884ce2:	1828                	addi	a0,sp,56
    e8884ce4:	da3e                	sw	a5,52(sp)
    e8884ce6:	eaef70ef          	jal	ra,e887c394 <eLIBs_memset>
    e8884cea:	bf5d                	j	e8884ca0 <lwip_getaddrname+0x9c>

00000000e8884cec <event_callback>:
  if (conn) {
    e8884cec:	1c050463          	beqz	a0,e8884eb4 <event_callback+0x1c8>
{
    e8884cf0:	711d                	addi	sp,sp,-96
    e8884cf2:	ec86                	sd	ra,88(sp)
    e8884cf4:	e8a2                	sd	s0,80(sp)
    e8884cf6:	e4a6                	sd	s1,72(sp)
    e8884cf8:	e0ca                	sd	s2,64(sp)
    e8884cfa:	fc4e                	sd	s3,56(sp)
    e8884cfc:	f852                	sd	s4,48(sp)
    e8884cfe:	f456                	sd	s5,40(sp)
    e8884d00:	f05a                	sd	s6,32(sp)
    e8884d02:	ec5e                	sd	s7,24(sp)
    e8884d04:	e862                	sd	s8,16(sp)
    e8884d06:	e466                	sd	s9,8(sp)
    s = conn->socket;
    e8884d08:	5944                	lw	s1,52(a0)
    if (s < 0) {
    e8884d0a:	0204d263          	bgez	s1,e8884d2e <event_callback+0x42>
        if (evt == NETCONN_EVT_RCVPLUS) {
    e8884d0e:	e199                	bnez	a1,e8884d14 <event_callback+0x28>
          conn->socket--;
    e8884d10:	34fd                	addiw	s1,s1,-1
    e8884d12:	d944                	sw	s1,52(a0)
}
    e8884d14:	60e6                	ld	ra,88(sp)
    e8884d16:	6446                	ld	s0,80(sp)
    e8884d18:	64a6                	ld	s1,72(sp)
    e8884d1a:	6906                	ld	s2,64(sp)
    e8884d1c:	79e2                	ld	s3,56(sp)
    e8884d1e:	7a42                	ld	s4,48(sp)
    e8884d20:	7aa2                	ld	s5,40(sp)
    e8884d22:	7b02                	ld	s6,32(sp)
    e8884d24:	6be2                	ld	s7,24(sp)
    e8884d26:	6c42                	ld	s8,16(sp)
    e8884d28:	6ca2                	ld	s9,8(sp)
    e8884d2a:	6125                	addi	sp,sp,96
    e8884d2c:	8082                	ret
    sock = get_socket(s);
    e8884d2e:	8526                	mv	a0,s1
    e8884d30:	892e                	mv	s2,a1
    e8884d32:	c5fff0ef          	jal	ra,e8884990 <get_socket>
    e8884d36:	842a                	mv	s0,a0
    if (!sock) {
    e8884d38:	dd71                	beqz	a0,e8884d14 <event_callback+0x28>
  switch (evt) {
    e8884d3a:	4791                	li	a5,4
    e8884d3c:	0727ec63          	bltu	a5,s2,e8884db4 <event_callback+0xc8>
    e8884d40:	0004a717          	auipc	a4,0x4a
    e8884d44:	3dc70713          	addi	a4,a4,988 # e88cf11c <err_to_errno_table+0x44>
    e8884d48:	4527478b          	lrw	a5,a4,s2,2
    e8884d4c:	97ba                	add	a5,a5,a4
    e8884d4e:	8782                	jr	a5
      sock->rcvevent++;
    e8884d50:	01055783          	lhu	a5,16(a0)
    e8884d54:	2785                	addiw	a5,a5,1
    e8884d56:	3c07a78b          	ext	a5,a5,15,0
    e8884d5a:	00f51823          	sh	a5,16(a0)
        check_waiters = 0;
    e8884d5e:	0027a793          	slti	a5,a5,2
  if (sock->select_waiting && check_waiters) {
    e8884d62:	01644703          	lbu	a4,22(s0)
    e8884d66:	ef3d                	bnez	a4,e8884de4 <event_callback+0xf8>
  done_socket(sock);
    e8884d68:	8522                	mv	a0,s0
}
    e8884d6a:	6446                	ld	s0,80(sp)
    e8884d6c:	60e6                	ld	ra,88(sp)
    e8884d6e:	64a6                	ld	s1,72(sp)
    e8884d70:	6906                	ld	s2,64(sp)
    e8884d72:	79e2                	ld	s3,56(sp)
    e8884d74:	7a42                	ld	s4,48(sp)
    e8884d76:	7aa2                	ld	s5,40(sp)
    e8884d78:	7b02                	ld	s6,32(sp)
    e8884d7a:	6be2                	ld	s7,24(sp)
    e8884d7c:	6c42                	ld	s8,16(sp)
    e8884d7e:	6ca2                	ld	s9,8(sp)
    e8884d80:	6125                	addi	sp,sp,96
  done_socket(sock);
    e8884d82:	b29ff06f          	j	e88848aa <done_socket>
      sock->rcvevent--;
    e8884d86:	01055783          	lhu	a5,16(a0)
    e8884d8a:	37fd                	addiw	a5,a5,-1
    e8884d8c:	00f51823          	sh	a5,16(a0)
      check_waiters = 0;
    e8884d90:	4781                	li	a5,0
      break;
    e8884d92:	bfc1                	j	e8884d62 <event_callback+0x76>
      if (sock->sendevent) {
    e8884d94:	01255783          	lhu	a5,18(a0)
      sock->sendevent = 1;
    e8884d98:	4705                	li	a4,1
    e8884d9a:	00e51923          	sh	a4,18(a0)
  check_waiters = 1;
    e8884d9e:	0017b793          	seqz	a5,a5
      break;
    e8884da2:	b7c1                	j	e8884d62 <event_callback+0x76>
      sock->sendevent = 0;
    e8884da4:	00051923          	sh	zero,18(a0)
    e8884da8:	b7e5                	j	e8884d90 <event_callback+0xa4>
      sock->errevent = 1;
    e8884daa:	4785                	li	a5,1
    e8884dac:	00f51a23          	sh	a5,20(a0)
  check_waiters = 1;
    e8884db0:	4785                	li	a5,1
      break;
    e8884db2:	bf45                	j	e8884d62 <event_callback+0x76>
      LWIP_ASSERT("unknown event", 0);
    e8884db4:	02f00593          	li	a1,47
    e8884db8:	0004a517          	auipc	a0,0x4a
    e8884dbc:	75850513          	addi	a0,a0,1880 # e88cf510 <err_to_errno_table+0x438>
    e8884dc0:	db8f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884dc4:	00150693          	addi	a3,a0,1
    e8884dc8:	6605                	lui	a2,0x1
    e8884dca:	9f060613          	addi	a2,a2,-1552 # 9f0 <memcmp-0xe87ff610>
    e8884dce:	0004a597          	auipc	a1,0x4a
    e8884dd2:	3d258593          	addi	a1,a1,978 # e88cf1a0 <err_to_errno_table+0xc8>
    e8884dd6:	0004a517          	auipc	a0,0x4a
    e8884dda:	2da50513          	addi	a0,a0,730 # e88cf0b0 <kSinTable1024+0x900>
    e8884dde:	ce8f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8884de2:	b7f9                	j	e8884db0 <event_callback+0xc4>
  if (sock->select_waiting && check_waiters) {
    e8884de4:	d3d1                	beqz	a5,e8884d68 <event_callback+0x7c>
  for (scb = select_cb_list; scb != NULL; scb = scb->next) {
    e8884de6:	00060797          	auipc	a5,0x60
    e8884dea:	84a78793          	addi	a5,a5,-1974 # e88e4630 <select_cb_list>
    has_sendevent = sock->sendevent != 0;
    e8884dee:	01245b83          	lhu	s7,18(s0)
    has_errevent = sock->errevent != 0;
    e8884df2:	01445a03          	lhu	s4,20(s0)
        if (has_recvevent) {
    e8884df6:	01041c03          	lh	s8,16(s0)
  for (scb = select_cb_list; scb != NULL; scb = scb->next) {
    e8884dfa:	0007b903          	ld	s2,0(a5)
          if (scb->readset && FD_ISSET(s, scb->readset)) {
    e8884dfe:	0074f993          	andi	s3,s1,7
    e8884e02:	4785                	li	a5,1
    e8884e04:	4034da93          	srai	s5,s1,0x3
    e8884e08:	013799bb          	sllw	s3,a5,s3
        scb->sem_signalled = 1;
    e8884e0c:	4c85                	li	s9,1
          if (!do_signal && scb->exceptset && FD_ISSET(s, scb->exceptset)) {
    e8884e0e:	03100b13          	li	s6,49
  for (scb = select_cb_list; scb != NULL; scb = scb->next) {
    e8884e12:	f4090be3          	beqz	s2,e8884d68 <event_callback+0x7c>
    if (scb->sem_signalled == 0) {
    e8884e16:	03492783          	lw	a5,52(s2)
    e8884e1a:	eb91                	bnez	a5,e8884e2e <event_callback+0x142>
      if (scb->poll_fds != NULL) {
    e8884e1c:	02893783          	ld	a5,40(s2)
    e8884e20:	cf9d                	beqz	a5,e8884e5e <event_callback+0x172>
  for (fdi = 0; fdi < scb->poll_nfds; fdi++) {
    e8884e22:	03092603          	lw	a2,48(s2)
    e8884e26:	0791                	addi	a5,a5,4
    e8884e28:	4701                	li	a4,0
    e8884e2a:	00c71563          	bne	a4,a2,e8884e34 <event_callback+0x148>
  for (scb = select_cb_list; scb != NULL; scb = scb->next) {
    e8884e2e:	00093903          	ld	s2,0(s2)
    e8884e32:	b7c5                	j	e8884e12 <event_callback+0x126>
    if (pollfd->fd == fd) {
    e8884e34:	ffc7a683          	lw	a3,-4(a5)
    e8884e38:	02969063          	bne	a3,s1,e8884e58 <event_callback+0x16c>
      if (has_recvevent && (pollfd->events & POLLIN) != 0) {
    e8884e3c:	01805663          	blez	s8,e8884e48 <event_callback+0x15c>
    e8884e40:	0007d683          	lhu	a3,0(a5)
    e8884e44:	8a85                	andi	a3,a3,1
    e8884e46:	e2a5                	bnez	a3,e8884ea6 <event_callback+0x1ba>
      if (has_sendevent && (pollfd->events & POLLOUT) != 0) {
    e8884e48:	000b8663          	beqz	s7,e8884e54 <event_callback+0x168>
    e8884e4c:	0007d683          	lhu	a3,0(a5)
    e8884e50:	8a89                	andi	a3,a3,2
    e8884e52:	eab1                	bnez	a3,e8884ea6 <event_callback+0x1ba>
      if (has_errevent) {
    e8884e54:	040a1963          	bnez	s4,e8884ea6 <event_callback+0x1ba>
  for (fdi = 0; fdi < scb->poll_nfds; fdi++) {
    e8884e58:	2705                	addiw	a4,a4,1
    e8884e5a:	07a1                	addi	a5,a5,8
    e8884e5c:	b7f9                	j	e8884e2a <event_callback+0x13e>
        if (has_recvevent) {
    e8884e5e:	01805c63          	blez	s8,e8884e76 <event_callback+0x18a>
          if (scb->readset && FD_ISSET(s, scb->readset)) {
    e8884e62:	01093783          	ld	a5,16(s2)
    e8884e66:	cb81                	beqz	a5,e8884e76 <event_callback+0x18a>
    e8884e68:	009b4763          	blt	s6,s1,e8884e76 <event_callback+0x18a>
    e8884e6c:	8157c78b          	lrbu	a5,a5,s5,0
    e8884e70:	00f9f7b3          	and	a5,s3,a5
    e8884e74:	eb8d                	bnez	a5,e8884ea6 <event_callback+0x1ba>
        if (has_sendevent) {
    e8884e76:	000b8c63          	beqz	s7,e8884e8e <event_callback+0x1a2>
          if (!do_signal && scb->writeset && FD_ISSET(s, scb->writeset)) {
    e8884e7a:	01893783          	ld	a5,24(s2)
    e8884e7e:	cb81                	beqz	a5,e8884e8e <event_callback+0x1a2>
    e8884e80:	009b4763          	blt	s6,s1,e8884e8e <event_callback+0x1a2>
    e8884e84:	8157c78b          	lrbu	a5,a5,s5,0
    e8884e88:	00f9f7b3          	and	a5,s3,a5
    e8884e8c:	ef89                	bnez	a5,e8884ea6 <event_callback+0x1ba>
        if (has_errevent) {
    e8884e8e:	fa0a00e3          	beqz	s4,e8884e2e <event_callback+0x142>
          if (!do_signal && scb->exceptset && FD_ISSET(s, scb->exceptset)) {
    e8884e92:	02093783          	ld	a5,32(s2)
    e8884e96:	dfc1                	beqz	a5,e8884e2e <event_callback+0x142>
    e8884e98:	f89b4be3          	blt	s6,s1,e8884e2e <event_callback+0x142>
    e8884e9c:	8157c78b          	lrbu	a5,a5,s5,0
    e8884ea0:	00f9f7b3          	and	a5,s3,a5
    e8884ea4:	d7c9                	beqz	a5,e8884e2e <event_callback+0x142>
        scb->sem_signalled = 1;
    e8884ea6:	03992a23          	sw	s9,52(s2)
        sys_sem_signal(SELECT_SEM_PTR(scb->sem));
    e8884eaa:	03890513          	addi	a0,s2,56
    e8884eae:	4d9120ef          	jal	ra,e8897b86 <sys_sem_signal>
    e8884eb2:	bfb5                	j	e8884e2e <event_callback+0x142>
    e8884eb4:	8082                	ret

00000000e8884eb6 <lwip_accept>:
{
    e8884eb6:	7175                	addi	sp,sp,-144
    e8884eb8:	f0d2                	sd	s4,96(sp)
    e8884eba:	ecd6                	sd	s5,88(sp)
    e8884ebc:	e506                	sd	ra,136(sp)
    e8884ebe:	e122                	sd	s0,128(sp)
    e8884ec0:	fca6                	sd	s1,120(sp)
    e8884ec2:	f8ca                	sd	s2,112(sp)
    e8884ec4:	f4ce                	sd	s3,104(sp)
    e8884ec6:	8aae                	mv	s5,a1
    e8884ec8:	8a32                	mv	s4,a2
  u16_t port = 0;
    e8884eca:	00011723          	sh	zero,14(sp)
  sock = get_socket(s);
    e8884ece:	ac3ff0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8884ed2:	c90d                	beqz	a0,e8884f04 <lwip_accept+0x4e>
    e8884ed4:	892a                	mv	s2,a0
  err = netconn_accept(sock->conn, &newconn);
    e8884ed6:	6108                	ld	a0,0(a0)
    e8884ed8:	080c                	addi	a1,sp,16
    e8884eda:	5c0130ef          	jal	ra,e889849a <netconn_accept>
  if (err != ERR_OK) {
    e8884ede:	c915                	beqz	a0,e8884f12 <lwip_accept+0x5c>
    if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) {
    e8884ee0:	00093783          	ld	a5,0(s2)
    e8884ee4:	46c1                	li	a3,16
    e8884ee6:	0007c783          	lbu	a5,0(a5)
    e8884eea:	0f07f793          	andi	a5,a5,240
    e8884eee:	00d78d63          	beq	a5,a3,e8884f08 <lwip_accept+0x52>
      sock_set_errno(sock, EOPNOTSUPP);
    e8884ef2:	05f00793          	li	a5,95
      sock_set_errno(sock, EINVAL);
    e8884ef6:	0005f717          	auipc	a4,0x5f
    e8884efa:	72f72923          	sw	a5,1842(a4) # e88e4628 <lwip_errno>
      done_socket(sock);
    e8884efe:	854a                	mv	a0,s2
    e8884f00:	9abff0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e8884f04:	54fd                	li	s1,-1
    e8884f06:	a08d                	j	e8884f68 <lwip_accept+0xb2>
    } else if (err == ERR_CLSD) {
    e8884f08:	57c5                	li	a5,-15
    e8884f0a:	10f51a63          	bne	a0,a5,e888501e <lwip_accept+0x168>
      sock_set_errno(sock, EINVAL);
    e8884f0e:	47d9                	li	a5,22
    e8884f10:	b7dd                	j	e8884ef6 <lwip_accept+0x40>
  LWIP_ASSERT("newconn != NULL", newconn != NULL);
    e8884f12:	67c2                	ld	a5,16(sp)
    e8884f14:	e79d                	bnez	a5,e8884f42 <lwip_accept+0x8c>
    e8884f16:	02f00593          	li	a1,47
    e8884f1a:	0004a517          	auipc	a0,0x4a
    e8884f1e:	5f650513          	addi	a0,a0,1526 # e88cf510 <err_to_errno_table+0x438>
    e8884f22:	c56f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884f26:	00150693          	addi	a3,a0,1
    e8884f2a:	28b00613          	li	a2,651
    e8884f2e:	0004a597          	auipc	a1,0x4a
    e8884f32:	29a58593          	addi	a1,a1,666 # e88cf1c8 <err_to_errno_table+0xf0>
    e8884f36:	0004a517          	auipc	a0,0x4a
    e8884f3a:	17a50513          	addi	a0,a0,378 # e88cf0b0 <kSinTable1024+0x900>
    e8884f3e:	b88f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  newsock = alloc_socket(newconn, 1);
    e8884f42:	6542                	ld	a0,16(sp)
    e8884f44:	4585                	li	a1,1
    e8884f46:	852ff0ef          	jal	ra,e8883f98 <alloc_socket>
    e8884f4a:	84aa                	mv	s1,a0
  if (newsock == -1) {
    e8884f4c:	57fd                	li	a5,-1
    e8884f4e:	02f51763          	bne	a0,a5,e8884f7c <lwip_accept+0xc6>
    netconn_delete(newconn);
    e8884f52:	6542                	ld	a0,16(sp)
    e8884f54:	2bc130ef          	jal	ra,e8898210 <netconn_delete>
    sock_set_errno(sock, ENFILE);
    e8884f58:	47dd                	li	a5,23
    e8884f5a:	0005f717          	auipc	a4,0x5f
    e8884f5e:	6cf72723          	sw	a5,1742(a4) # e88e4628 <lwip_errno>
    done_socket(sock);
    e8884f62:	854a                	mv	a0,s2
  done_socket(nsock);
    e8884f64:	947ff0ef          	jal	ra,e88848aa <done_socket>
}
    e8884f68:	60aa                	ld	ra,136(sp)
    e8884f6a:	640a                	ld	s0,128(sp)
    e8884f6c:	8526                	mv	a0,s1
    e8884f6e:	7946                	ld	s2,112(sp)
    e8884f70:	74e6                	ld	s1,120(sp)
    e8884f72:	79a6                	ld	s3,104(sp)
    e8884f74:	7a06                	ld	s4,96(sp)
    e8884f76:	6ae6                	ld	s5,88(sp)
    e8884f78:	6149                	addi	sp,sp,144
    e8884f7a:	8082                	ret
  LWIP_ASSERT("invalid socket index", (newsock >= LWIP_SOCKET_OFFSET) && (newsock < NUM_SOCKETS + LWIP_SOCKET_OFFSET));
    e8884f7c:	0005079b          	sext.w	a5,a0
    e8884f80:	03100713          	li	a4,49
    e8884f84:	02f77863          	bgeu	a4,a5,e8884fb4 <lwip_accept+0xfe>
    e8884f88:	02f00593          	li	a1,47
    e8884f8c:	0004a517          	auipc	a0,0x4a
    e8884f90:	58450513          	addi	a0,a0,1412 # e88cf510 <err_to_errno_table+0x438>
    e8884f94:	be4f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8884f98:	00150693          	addi	a3,a0,1
    e8884f9c:	29400613          	li	a2,660
    e8884fa0:	0004a597          	auipc	a1,0x4a
    e8884fa4:	23858593          	addi	a1,a1,568 # e88cf1d8 <err_to_errno_table+0x100>
    e8884fa8:	0004a517          	auipc	a0,0x4a
    e8884fac:	10850513          	addi	a0,a0,264 # e88cf0b0 <kSinTable1024+0x900>
    e8884fb0:	b16f70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  nsock = &sockets[newsock - LWIP_SOCKET_OFFSET];
    e8884fb4:	00549793          	slli	a5,s1,0x5
    e8884fb8:	00060997          	auipc	s3,0x60
    e8884fbc:	fe098993          	addi	s3,s3,-32 # e88e4f98 <sockets>
    e8884fc0:	99be                	add	s3,s3,a5
  recvevent = (s16_t)(-1 - newconn->socket);
    e8884fc2:	67c2                	ld	a5,16(sp)
    e8884fc4:	5bc0                	lw	s0,52(a5)
  newconn->socket = newsock;
    e8884fc6:	dbc4                	sw	s1,52(a5)
  if (newconn->callback) {
    e8884fc8:	6bbc                	ld	a5,80(a5)
    e8884fca:	c78d                	beqz	a5,e8884ff4 <lwip_accept+0x13e>
  recvevent = (s16_t)(-1 - newconn->socket);
    e8884fcc:	fff44413          	not	s0,s0
    e8884fd0:	0104141b          	slliw	s0,s0,0x10
    LOCK_TCPIP_CORE();
    e8884fd4:	00060517          	auipc	a0,0x60
    e8884fd8:	60450513          	addi	a0,a0,1540 # e88e55d8 <lock_tcpip_core>
  recvevent = (s16_t)(-1 - newconn->socket);
    e8884fdc:	4104541b          	sraiw	s0,s0,0x10
    LOCK_TCPIP_CORE();
    e8884fe0:	443120ef          	jal	ra,e8897c22 <sys_mutex_lock>
    while (recvevent > 0) {
    e8884fe4:	04804663          	bgtz	s0,e8885030 <lwip_accept+0x17a>
    UNLOCK_TCPIP_CORE();
    e8884fe8:	00060517          	auipc	a0,0x60
    e8884fec:	5f050513          	addi	a0,a0,1520 # e88e55d8 <lock_tcpip_core>
    e8884ff0:	449120ef          	jal	ra,e8897c38 <sys_mutex_unlock>
  if ((addr != NULL) && (addrlen != NULL)) {
    e8884ff4:	080a8f63          	beqz	s5,e8885092 <lwip_accept+0x1dc>
    e8884ff8:	080a0d63          	beqz	s4,e8885092 <lwip_accept+0x1dc>
    err = netconn_peer(newconn, &naddr, &port);
    e8884ffc:	6542                	ld	a0,16(sp)
    e8884ffe:	4681                	li	a3,0
    e8885000:	00e10613          	addi	a2,sp,14
    e8885004:	082c                	addi	a1,sp,24
    e8885006:	238130ef          	jal	ra,e889823e <netconn_getaddr>
    e888500a:	842a                	mv	s0,a0
    if (err != ERR_OK) {
    e888500c:	c90d                	beqz	a0,e888503e <lwip_accept+0x188>
      netconn_delete(newconn);
    e888500e:	6542                	ld	a0,16(sp)
    e8885010:	200130ef          	jal	ra,e8898210 <netconn_delete>
      free_socket(nsock, 1);
    e8885014:	854e                	mv	a0,s3
    e8885016:	4585                	li	a1,1
    e8885018:	817ff0ef          	jal	ra,e888482e <free_socket>
      sock_set_errno(sock, err_to_errno(err));
    e888501c:	8522                	mv	a0,s0
    e888501e:	e1ffe0ef          	jal	ra,e8883e3c <err_to_errno>
    e8885022:	ec050ee3          	beqz	a0,e8884efe <lwip_accept+0x48>
    e8885026:	0005f797          	auipc	a5,0x5f
    e888502a:	60a7a123          	sw	a0,1538(a5) # e88e4628 <lwip_errno>
    e888502e:	bdc1                	j	e8884efe <lwip_accept+0x48>
      newconn->callback(newconn, NETCONN_EVT_RCVPLUS, 0);
    e8885030:	6542                	ld	a0,16(sp)
    e8885032:	4601                	li	a2,0
    e8885034:	4581                	li	a1,0
    e8885036:	693c                	ld	a5,80(a0)
      recvevent--;
    e8885038:	347d                	addiw	s0,s0,-1
      newconn->callback(newconn, NETCONN_EVT_RCVPLUS, 0);
    e888503a:	9782                	jalr	a5
    e888503c:	b765                	j	e8884fe4 <lwip_accept+0x12e>
    IPADDR_PORT_TO_SOCKADDR(&tempaddr, &naddr, port);
    e888503e:	02c14783          	lbu	a5,44(sp)
    e8885042:	02e00713          	li	a4,46
    e8885046:	00e15503          	lhu	a0,14(sp)
    e888504a:	00e78563          	beq	a5,a4,e8885054 <lwip_accept+0x19e>
    e888504e:	4719                	li	a4,6
    e8885050:	04e79663          	bne	a5,a4,e888509c <lwip_accept+0x1e6>
    e8885054:	6785                	lui	a5,0x1
    e8885056:	a1c7879b          	addiw	a5,a5,-1508
    e888505a:	02f11823          	sh	a5,48(sp)
    e888505e:	6c1010ef          	jal	ra,e8886f1e <lwip_htons>
    e8885062:	02a11923          	sh	a0,50(sp)
    e8885066:	67e2                	ld	a5,24(sp)
    e8885068:	da02                	sw	zero,52(sp)
    e888506a:	fc3e                	sd	a5,56(sp)
    e888506c:	7782                	ld	a5,32(sp)
    e888506e:	e0be                	sd	a5,64(sp)
    e8885070:	02814783          	lbu	a5,40(sp)
    e8885074:	c4be                	sw	a5,72(sp)
    if (*addrlen > tempaddr.sa.sa_len) {
    e8885076:	03014783          	lbu	a5,48(sp)
    e888507a:	000a2703          	lw	a4,0(s4)
    e888507e:	00e7f463          	bgeu	a5,a4,e8885086 <lwip_accept+0x1d0>
      *addrlen = tempaddr.sa.sa_len;
    e8885082:	00fa2023          	sw	a5,0(s4)
    MEMCPY(addr, &tempaddr, *addrlen);
    e8885086:	000a6603          	lwu	a2,0(s4)
    e888508a:	180c                	addi	a1,sp,48
    e888508c:	8556                	mv	a0,s5
    e888508e:	b12f70ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  done_socket(sock);
    e8885092:	854a                	mv	a0,s2
    e8885094:	817ff0ef          	jal	ra,e88848aa <done_socket>
  done_socket(nsock);
    e8885098:	854e                	mv	a0,s3
    e888509a:	b5e9                	j	e8884f64 <lwip_accept+0xae>
    IPADDR_PORT_TO_SOCKADDR(&tempaddr, &naddr, port);
    e888509c:	21000793          	li	a5,528
    e88850a0:	02f11823          	sh	a5,48(sp)
    e88850a4:	67b010ef          	jal	ra,e8886f1e <lwip_htons>
    e88850a8:	02a11923          	sh	a0,50(sp)
    e88850ac:	47e2                	lw	a5,24(sp)
    e88850ae:	4621                	li	a2,8
    e88850b0:	4581                	li	a1,0
    e88850b2:	1828                	addi	a0,sp,56
    e88850b4:	da3e                	sw	a5,52(sp)
    e88850b6:	adef70ef          	jal	ra,e887c394 <eLIBs_memset>
    e88850ba:	bf75                	j	e8885076 <lwip_accept+0x1c0>

00000000e88850bc <lwip_bind>:
{
    e88850bc:	715d                	addi	sp,sp,-80
    e88850be:	fc26                	sd	s1,56(sp)
    e88850c0:	e486                	sd	ra,72(sp)
    e88850c2:	e0a2                	sd	s0,64(sp)
    e88850c4:	84ae                	mv	s1,a1
    e88850c6:	e432                	sd	a2,8(sp)
  sock = get_socket(s);
    e88850c8:	8c9ff0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e88850cc:	cd35                	beqz	a0,e8885148 <lwip_bind+0x8c>
  if (!SOCK_ADDR_TYPE_MATCH(name, sock)) {
    e88850ce:	0014c783          	lbu	a5,1(s1)
    e88850d2:	4709                	li	a4,2
    e88850d4:	842a                	mv	s0,a0
    e88850d6:	6622                	ld	a2,8(sp)
    e88850d8:	04e79563          	bne	a5,a4,e8885122 <lwip_bind+0x66>
    e88850dc:	611c                	ld	a5,0(a0)
    e88850de:	0007c783          	lbu	a5,0(a5) # 1000 <memcmp-0xe87ff000>
    e88850e2:	8ba1                	andi	a5,a5,8
    e88850e4:	e7b9                	bnez	a5,e8885132 <lwip_bind+0x76>
  LWIP_ERROR("lwip_bind: invalid address", (IS_SOCK_ADDR_LEN_VALID(namelen) &&
    e88850e6:	47c1                	li	a5,16
    e88850e8:	0af61963          	bne	a2,a5,e888519a <lwip_bind+0xde>
    e88850ec:	0034f793          	andi	a5,s1,3
    e88850f0:	cfb1                	beqz	a5,e888514c <lwip_bind+0x90>
    e88850f2:	02f00593          	li	a1,47
    e88850f6:	0004a517          	auipc	a0,0x4a
    e88850fa:	41a50513          	addi	a0,a0,1050 # e88cf510 <err_to_errno_table+0x438>
    e88850fe:	a7af70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8885102:	00150693          	addi	a3,a0,1
    e8885106:	2e400613          	li	a2,740
    e888510a:	0004a597          	auipc	a1,0x4a
    e888510e:	0e658593          	addi	a1,a1,230 # e88cf1f0 <err_to_errno_table+0x118>
    e8885112:	0004a517          	auipc	a0,0x4a
    e8885116:	f9e50513          	addi	a0,a0,-98 # e88cf0b0 <kSinTable1024+0x900>
    e888511a:	9acf70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888511e:	5541                	li	a0,-16
    e8885120:	a811                	j	e8885134 <lwip_bind+0x78>
  if (!SOCK_ADDR_TYPE_MATCH(name, sock)) {
    e8885122:	4729                	li	a4,10
    e8885124:	00e79763          	bne	a5,a4,e8885132 <lwip_bind+0x76>
    e8885128:	611c                	ld	a5,0(a0)
    e888512a:	0007c783          	lbu	a5,0(a5)
    e888512e:	8ba1                	andi	a5,a5,8
    e8885130:	fbdd                	bnez	a5,e88850e6 <lwip_bind+0x2a>
    sock_set_errno(sock, err_to_errno(ERR_VAL));
    e8885132:	5569                	li	a0,-6
    sock_set_errno(sock, err_to_errno(err));
    e8885134:	d09fe0ef          	jal	ra,e8883e3c <err_to_errno>
    e8885138:	c509                	beqz	a0,e8885142 <lwip_bind+0x86>
    e888513a:	0005f797          	auipc	a5,0x5f
    e888513e:	4ea7a723          	sw	a0,1262(a5) # e88e4628 <lwip_errno>
    done_socket(sock);
    e8885142:	8522                	mv	a0,s0
    e8885144:	f66ff0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e8885148:	557d                	li	a0,-1
    e888514a:	a099                	j	e8885190 <lwip_bind+0xd4>
  SOCKADDR_TO_IPADDR_PORT(name, &local_addr, local_port);
    e888514c:	01610613          	addi	a2,sp,22
    e8885150:	082c                	addi	a1,sp,24
    e8885152:	8526                	mv	a0,s1
    e8885154:	b40ff0ef          	jal	ra,e8884494 <sockaddr_to_ipaddr_port>
  if (IP_IS_V6_VAL(local_addr) && ip6_addr_isipv4mappedipv6(ip_2_ip6(&local_addr))) {
    e8885158:	02c14703          	lbu	a4,44(sp)
    e888515c:	4799                	li	a5,6
    e888515e:	00f71e63          	bne	a4,a5,e888517a <lwip_bind+0xbe>
    e8885162:	47e2                	lw	a5,24(sp)
    e8885164:	4772                	lw	a4,28(sp)
    e8885166:	8fd9                	or	a5,a5,a4
    e8885168:	eb89                	bnez	a5,e888517a <lwip_bind+0xbe>
    e888516a:	5702                	lw	a4,32(sp)
    e888516c:	77c1                	lui	a5,0xffff0
    e888516e:	00f71663          	bne	a4,a5,e888517a <lwip_bind+0xbe>
    unmap_ipv4_mapped_ipv6(ip_2_ip4(&local_addr), ip_2_ip6(&local_addr));
    e8885172:	5792                	lw	a5,36(sp)
    IP_SET_TYPE_VAL(local_addr, IPADDR_TYPE_V4);
    e8885174:	02010623          	sb	zero,44(sp)
    unmap_ipv4_mapped_ipv6(ip_2_ip4(&local_addr), ip_2_ip6(&local_addr));
    e8885178:	cc3e                	sw	a5,24(sp)
  err = netconn_bind(sock->conn, &local_addr, local_port);
    e888517a:	01615603          	lhu	a2,22(sp)
    e888517e:	6008                	ld	a0,0(s0)
    e8885180:	082c                	addi	a1,sp,24
    e8885182:	158130ef          	jal	ra,e88982da <netconn_bind>
  if (err != ERR_OK) {
    e8885186:	f55d                	bnez	a0,e8885134 <lwip_bind+0x78>
  done_socket(sock);
    e8885188:	8522                	mv	a0,s0
    e888518a:	f20ff0ef          	jal	ra,e88848aa <done_socket>
  return 0;
    e888518e:	4501                	li	a0,0
}
    e8885190:	60a6                	ld	ra,72(sp)
    e8885192:	6406                	ld	s0,64(sp)
    e8885194:	74e2                	ld	s1,56(sp)
    e8885196:	6161                	addi	sp,sp,80
    e8885198:	8082                	ret
  LWIP_ERROR("lwip_bind: invalid address", (IS_SOCK_ADDR_LEN_VALID(namelen) &&
    e888519a:	47f1                	li	a5,28
    e888519c:	f4f608e3          	beq	a2,a5,e88850ec <lwip_bind+0x30>
    e88851a0:	bf89                	j	e88850f2 <lwip_bind+0x36>

00000000e88851a2 <lwip_close>:
{
    e88851a2:	7159                	addi	sp,sp,-112
    e88851a4:	e0d2                	sd	s4,64(sp)
    e88851a6:	f486                	sd	ra,104(sp)
    e88851a8:	f0a2                	sd	s0,96(sp)
    e88851aa:	eca6                	sd	s1,88(sp)
    e88851ac:	e8ca                	sd	s2,80(sp)
    e88851ae:	e4ce                	sd	s3,72(sp)
    e88851b0:	fc56                	sd	s5,56(sp)
    e88851b2:	8a2a                	mv	s4,a0
  sock = get_socket(s);
    e88851b4:	fdcff0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e88851b8:	10050b63          	beqz	a0,e88852ce <lwip_close+0x12c>
  if (sock->conn != NULL) {
    e88851bc:	611c                	ld	a5,0(a0)
    e88851be:	892a                	mv	s2,a0
    e88851c0:	10078963          	beqz	a5,e88852d2 <lwip_close+0x130>
    is_tcp = NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP;
    e88851c4:	0007c483          	lbu	s1,0(a5) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    e88851c8:	0f04f493          	andi	s1,s1,240
    e88851cc:	14c1                	addi	s1,s1,-16
    e88851ce:	0014b493          	seqz	s1,s1
 * ATTENTION: this function is NOT called from tcpip_thread (or under CORE_LOCK).
 */
static void
lwip_socket_drop_registered_memberships(int s)
{
  struct lwip_sock *sock = get_socket(s);
    e88851d2:	8552                	mv	a0,s4
    e88851d4:	fbcff0ef          	jal	ra,e8884990 <get_socket>
    e88851d8:	89aa                	mv	s3,a0
  int i;

  if (!sock) {
    e88851da:	cd39                	beqz	a0,e8885238 <lwip_close+0x96>
    e88851dc:	0005f417          	auipc	s0,0x5f
    e88851e0:	45c40413          	addi	s0,s0,1116 # e88e4638 <socket_ipv4_multicast_memberships>
    e88851e4:	0005fa97          	auipc	s5,0x5f
    e88851e8:	774a8a93          	addi	s5,s5,1908 # e88e4958 <socket_ipv6_multicast_memberships>
    return;
  }

  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    if (socket_ipv4_multicast_memberships[i].sock == sock) {
    e88851ec:	601c                	ld	a5,0(s0)
    e88851ee:	02f99f63          	bne	s3,a5,e888522c <lwip_close+0x8a>
      ip_addr_t multi_addr, if_addr;
      ip_addr_copy_from_ip4(multi_addr, socket_ipv4_multicast_memberships[i].multi_addr);
    e88851f2:	445c                	lw	a5,12(s0)
    e88851f4:	00010a23          	sb	zero,20(sp)
    e88851f8:	c202                	sw	zero,4(sp)
    e88851fa:	c03e                	sw	a5,0(sp)
      ip_addr_copy_from_ip4(if_addr, socket_ipv4_multicast_memberships[i].if_addr);
    e88851fc:	441c                	lw	a5,8(s0)
      ip_addr_copy_from_ip4(multi_addr, socket_ipv4_multicast_memberships[i].multi_addr);
    e88851fe:	e402                	sd	zero,8(sp)
    e8885200:	00010823          	sb	zero,16(sp)
      ip_addr_copy_from_ip4(if_addr, socket_ipv4_multicast_memberships[i].if_addr);
    e8885204:	cc3e                	sw	a5,24(sp)
    e8885206:	02010623          	sb	zero,44(sp)
    e888520a:	ce02                	sw	zero,28(sp)
    e888520c:	f002                	sd	zero,32(sp)
    e888520e:	02010423          	sb	zero,40(sp)
      socket_ipv4_multicast_memberships[i].sock = NULL;
    e8885212:	00043023          	sd	zero,0(s0)
      ip4_addr_set_zero(&socket_ipv4_multicast_memberships[i].if_addr);
    e8885216:	00042423          	sw	zero,8(s0)
      ip4_addr_set_zero(&socket_ipv4_multicast_memberships[i].multi_addr);
    e888521a:	00042623          	sw	zero,12(s0)

      netconn_join_leave_group(sock->conn, &multi_addr, &if_addr, NETCONN_LEAVE);
    e888521e:	0009b503          	ld	a0,0(s3)
    e8885222:	4685                	li	a3,1
    e8885224:	0830                	addi	a2,sp,24
    e8885226:	858a                	mv	a1,sp
    e8885228:	60a130ef          	jal	ra,e8898832 <netconn_join_leave_group>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e888522c:	0441                	addi	s0,s0,16
    e888522e:	fb541fe3          	bne	s0,s5,e88851ec <lwip_close+0x4a>
    }
  }
  done_socket(sock);
    e8885232:	854e                	mv	a0,s3
    e8885234:	e76ff0ef          	jal	ra,e88848aa <done_socket>
 * ATTENTION: this function is NOT called from tcpip_thread (or under CORE_LOCK).
 */
static void
lwip_socket_drop_registered_mld6_memberships(int s)
{
  struct lwip_sock *sock = get_socket(s);
    e8885238:	8552                	mv	a0,s4
    e888523a:	f56ff0ef          	jal	ra,e8884990 <get_socket>
    e888523e:	89aa                	mv	s3,a0
  int i;

  if (!sock) {
    e8885240:	c925                	beqz	a0,e88852b0 <lwip_close+0x10e>
    e8885242:	0005f417          	auipc	s0,0x5f
    e8885246:	71640413          	addi	s0,s0,1814 # e88e4958 <socket_ipv6_multicast_memberships>
    e888524a:	00060a17          	auipc	s4,0x60
    e888524e:	d4ea0a13          	addi	s4,s4,-690 # e88e4f98 <sockets>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    if (socket_ipv6_multicast_memberships[i].sock == sock) {
      ip_addr_t multi_addr;
      u8_t if_idx;

      ip_addr_copy_from_ip6(multi_addr, socket_ipv6_multicast_memberships[i].multi_addr);
    e8885252:	4a99                	li	s5,6
    if (socket_ipv6_multicast_memberships[i].sock == sock) {
    e8885254:	601c                	ld	a5,0(s0)
    e8885256:	04f99663          	bne	s3,a5,e88852a2 <lwip_close+0x100>
      ip_addr_copy_from_ip6(multi_addr, socket_ipv6_multicast_memberships[i].multi_addr);
    e888525a:	445c                	lw	a5,12(s0)
    e888525c:	03510623          	sb	s5,44(sp)
      if_idx = socket_ipv6_multicast_memberships[i].if_idx;
    e8885260:	00844603          	lbu	a2,8(s0)
      ip_addr_copy_from_ip6(multi_addr, socket_ipv6_multicast_memberships[i].multi_addr);
    e8885264:	cc3e                	sw	a5,24(sp)
    e8885266:	481c                	lw	a5,16(s0)

      socket_ipv6_multicast_memberships[i].sock   = NULL;
    e8885268:	00043023          	sd	zero,0(s0)
      socket_ipv6_multicast_memberships[i].if_idx = NETIF_NO_INDEX;
    e888526c:	00040423          	sb	zero,8(s0)
      ip_addr_copy_from_ip6(multi_addr, socket_ipv6_multicast_memberships[i].multi_addr);
    e8885270:	ce3e                	sw	a5,28(sp)
    e8885272:	485c                	lw	a5,20(s0)
      ip6_addr_set_zero(&socket_ipv6_multicast_memberships[i].multi_addr);
    e8885274:	00042623          	sw	zero,12(s0)
    e8885278:	00042823          	sw	zero,16(s0)
      ip_addr_copy_from_ip6(multi_addr, socket_ipv6_multicast_memberships[i].multi_addr);
    e888527c:	d03e                	sw	a5,32(sp)
    e888527e:	4c1c                	lw	a5,24(s0)
      ip6_addr_set_zero(&socket_ipv6_multicast_memberships[i].multi_addr);
    e8885280:	00042a23          	sw	zero,20(s0)
    e8885284:	00042c23          	sw	zero,24(s0)
      ip_addr_copy_from_ip6(multi_addr, socket_ipv6_multicast_memberships[i].multi_addr);
    e8885288:	d23e                	sw	a5,36(sp)
    e888528a:	01c44783          	lbu	a5,28(s0)
      ip6_addr_set_zero(&socket_ipv6_multicast_memberships[i].multi_addr);
    e888528e:	00040e23          	sb	zero,28(s0)

      netconn_join_leave_group_netif(sock->conn, &multi_addr, if_idx, NETCONN_LEAVE);
    e8885292:	4685                	li	a3,1
      ip_addr_copy_from_ip6(multi_addr, socket_ipv6_multicast_memberships[i].multi_addr);
    e8885294:	02f10423          	sb	a5,40(sp)
      netconn_join_leave_group_netif(sock->conn, &multi_addr, if_idx, NETCONN_LEAVE);
    e8885298:	0009b503          	ld	a0,0(s3)
    e888529c:	082c                	addi	a1,sp,24
    e888529e:	5fc130ef          	jal	ra,e889889a <netconn_join_leave_group_netif>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e88852a2:	02040413          	addi	s0,s0,32
    e88852a6:	fb4417e3          	bne	s0,s4,e8885254 <lwip_close+0xb2>
    }
  }
  done_socket(sock);
    e88852aa:	854e                	mv	a0,s3
    e88852ac:	dfeff0ef          	jal	ra,e88848aa <done_socket>
  err = netconn_prepare_delete(sock->conn);
    e88852b0:	00093503          	ld	a0,0(s2)
    e88852b4:	735120ef          	jal	ra,e88981e8 <netconn_prepare_delete>
  if (err != ERR_OK) {
    e88852b8:	c921                	beqz	a0,e8885308 <lwip_close+0x166>
    sock_set_errno(sock, err_to_errno(err));
    e88852ba:	b83fe0ef          	jal	ra,e8883e3c <err_to_errno>
    e88852be:	c509                	beqz	a0,e88852c8 <lwip_close+0x126>
    e88852c0:	0005f797          	auipc	a5,0x5f
    e88852c4:	36a7a423          	sw	a0,872(a5) # e88e4628 <lwip_errno>
    done_socket(sock);
    e88852c8:	854a                	mv	a0,s2
    e88852ca:	de0ff0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e88852ce:	557d                	li	a0,-1
    e88852d0:	a089                	j	e8885312 <lwip_close+0x170>
    LWIP_ASSERT("sock->lastdata == NULL", sock->lastdata.pbuf == NULL);
    e88852d2:	651c                	ld	a5,8(a0)
  int is_tcp = 0;
    e88852d4:	4481                	li	s1,0
    LWIP_ASSERT("sock->lastdata == NULL", sock->lastdata.pbuf == NULL);
    e88852d6:	ee078ee3          	beqz	a5,e88851d2 <lwip_close+0x30>
    e88852da:	02f00593          	li	a1,47
    e88852de:	0004a517          	auipc	a0,0x4a
    e88852e2:	23250513          	addi	a0,a0,562 # e88cf510 <err_to_errno_table+0x438>
    e88852e6:	892f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88852ea:	00150693          	addi	a3,a0,1
    e88852ee:	31400613          	li	a2,788
    e88852f2:	0004a597          	auipc	a1,0x4a
    e88852f6:	f1e58593          	addi	a1,a1,-226 # e88cf210 <err_to_errno_table+0x138>
    e88852fa:	0004a517          	auipc	a0,0x4a
    e88852fe:	db650513          	addi	a0,a0,-586 # e88cf0b0 <kSinTable1024+0x900>
    e8885302:	fc5f60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8885306:	b5f1                	j	e88851d2 <lwip_close+0x30>
  free_socket(sock, is_tcp);
    e8885308:	854a                	mv	a0,s2
    e888530a:	85a6                	mv	a1,s1
    e888530c:	d22ff0ef          	jal	ra,e888482e <free_socket>
  return 0;
    e8885310:	4501                	li	a0,0
}
    e8885312:	70a6                	ld	ra,104(sp)
    e8885314:	7406                	ld	s0,96(sp)
    e8885316:	64e6                	ld	s1,88(sp)
    e8885318:	6946                	ld	s2,80(sp)
    e888531a:	69a6                	ld	s3,72(sp)
    e888531c:	6a06                	ld	s4,64(sp)
    e888531e:	7ae2                	ld	s5,56(sp)
    e8885320:	6165                	addi	sp,sp,112
    e8885322:	8082                	ret

00000000e8885324 <lwip_connect>:
{
    e8885324:	715d                	addi	sp,sp,-80
    e8885326:	fc26                	sd	s1,56(sp)
    e8885328:	e486                	sd	ra,72(sp)
    e888532a:	e0a2                	sd	s0,64(sp)
    e888532c:	84ae                	mv	s1,a1
    e888532e:	e432                	sd	a2,8(sp)
  sock = get_socket(s);
    e8885330:	e60ff0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8885334:	c559                	beqz	a0,e88853c2 <lwip_connect+0x9e>
  if (!SOCK_ADDR_TYPE_MATCH_OR_UNSPEC(name, sock)) {
    e8885336:	0014c783          	lbu	a5,1(s1)
    e888533a:	842a                	mv	s0,a0
    e888533c:	c7c9                	beqz	a5,e88853c6 <lwip_connect+0xa2>
    e888533e:	4709                	li	a4,2
    e8885340:	6622                	ld	a2,8(sp)
    e8885342:	04e79d63          	bne	a5,a4,e888539c <lwip_connect+0x78>
    e8885346:	6118                	ld	a4,0(a0)
    e8885348:	00074703          	lbu	a4,0(a4)
    e888534c:	8b21                	andi	a4,a4,8
    e888534e:	ef39                	bnez	a4,e88853ac <lwip_connect+0x88>
    LWIP_ERROR("lwip_connect: invalid address", IS_SOCK_ADDR_LEN_VALID(namelen) &&
    e8885350:	4741                	li	a4,16
    e8885352:	00e60a63          	beq	a2,a4,e8885366 <lwip_connect+0x42>
    e8885356:	4771                	li	a4,28
    e8885358:	00e61a63          	bne	a2,a4,e888536c <lwip_connect+0x48>
    e888535c:	0f77f793          	andi	a5,a5,247
    e8885360:	4709                	li	a4,2
    e8885362:	00e79563          	bne	a5,a4,e888536c <lwip_connect+0x48>
    e8885366:	0034f793          	andi	a5,s1,3
    e888536a:	cbbd                	beqz	a5,e88853e0 <lwip_connect+0xbc>
    e888536c:	02f00593          	li	a1,47
    e8885370:	0004a517          	auipc	a0,0x4a
    e8885374:	1a050513          	addi	a0,a0,416 # e88cf510 <err_to_errno_table+0x438>
    e8885378:	800f70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888537c:	00150693          	addi	a3,a0,1
    e8885380:	34900613          	li	a2,841
    e8885384:	0004a597          	auipc	a1,0x4a
    e8885388:	ea458593          	addi	a1,a1,-348 # e88cf228 <err_to_errno_table+0x150>
    e888538c:	0004a517          	auipc	a0,0x4a
    e8885390:	d2450513          	addi	a0,a0,-732 # e88cf0b0 <kSinTable1024+0x900>
    e8885394:	f33f60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8885398:	5541                	li	a0,-16
    e888539a:	a811                	j	e88853ae <lwip_connect+0x8a>
  if (!SOCK_ADDR_TYPE_MATCH_OR_UNSPEC(name, sock)) {
    e888539c:	4729                	li	a4,10
    e888539e:	00e79763          	bne	a5,a4,e88853ac <lwip_connect+0x88>
    e88853a2:	6118                	ld	a4,0(a0)
    e88853a4:	00074703          	lbu	a4,0(a4)
    e88853a8:	8b21                	andi	a4,a4,8
    e88853aa:	f35d                	bnez	a4,e8885350 <lwip_connect+0x2c>
    sock_set_errno(sock, err_to_errno(ERR_VAL));
    e88853ac:	5569                	li	a0,-6
    sock_set_errno(sock, err_to_errno(err));
    e88853ae:	a8ffe0ef          	jal	ra,e8883e3c <err_to_errno>
    e88853b2:	c509                	beqz	a0,e88853bc <lwip_connect+0x98>
    e88853b4:	0005f797          	auipc	a5,0x5f
    e88853b8:	26a7aa23          	sw	a0,628(a5) # e88e4628 <lwip_errno>
    done_socket(sock);
    e88853bc:	8522                	mv	a0,s0
    e88853be:	cecff0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e88853c2:	557d                	li	a0,-1
    e88853c4:	a809                	j	e88853d6 <lwip_connect+0xb2>
    err = netconn_disconnect(sock->conn);
    e88853c6:	6108                	ld	a0,0(a0)
    e88853c8:	03a130ef          	jal	ra,e8898402 <netconn_disconnect>
  if (err != ERR_OK) {
    e88853cc:	f16d                	bnez	a0,e88853ae <lwip_connect+0x8a>
  done_socket(sock);
    e88853ce:	8522                	mv	a0,s0
    e88853d0:	cdaff0ef          	jal	ra,e88848aa <done_socket>
  return 0;
    e88853d4:	4501                	li	a0,0
}
    e88853d6:	60a6                	ld	ra,72(sp)
    e88853d8:	6406                	ld	s0,64(sp)
    e88853da:	74e2                	ld	s1,56(sp)
    e88853dc:	6161                	addi	sp,sp,80
    e88853de:	8082                	ret
    SOCKADDR_TO_IPADDR_PORT(name, &remote_addr, remote_port);
    e88853e0:	01610613          	addi	a2,sp,22
    e88853e4:	082c                	addi	a1,sp,24
    e88853e6:	8526                	mv	a0,s1
    e88853e8:	8acff0ef          	jal	ra,e8884494 <sockaddr_to_ipaddr_port>
    if (IP_IS_V6_VAL(remote_addr) && ip6_addr_isipv4mappedipv6(ip_2_ip6(&remote_addr))) {
    e88853ec:	02c14703          	lbu	a4,44(sp)
    e88853f0:	4799                	li	a5,6
    e88853f2:	00f71e63          	bne	a4,a5,e888540e <lwip_connect+0xea>
    e88853f6:	47e2                	lw	a5,24(sp)
    e88853f8:	4772                	lw	a4,28(sp)
    e88853fa:	8fd9                	or	a5,a5,a4
    e88853fc:	eb89                	bnez	a5,e888540e <lwip_connect+0xea>
    e88853fe:	5702                	lw	a4,32(sp)
    e8885400:	77c1                	lui	a5,0xffff0
    e8885402:	00f71663          	bne	a4,a5,e888540e <lwip_connect+0xea>
      unmap_ipv4_mapped_ipv6(ip_2_ip4(&remote_addr), ip_2_ip6(&remote_addr));
    e8885406:	5792                	lw	a5,36(sp)
      IP_SET_TYPE_VAL(remote_addr, IPADDR_TYPE_V4);
    e8885408:	02010623          	sb	zero,44(sp)
      unmap_ipv4_mapped_ipv6(ip_2_ip4(&remote_addr), ip_2_ip6(&remote_addr));
    e888540c:	cc3e                	sw	a5,24(sp)
    err = netconn_connect(sock->conn, &remote_addr, remote_port);
    e888540e:	01615603          	lhu	a2,22(sp)
    e8885412:	6008                	ld	a0,0(s0)
    e8885414:	082c                	addi	a1,sp,24
    e8885416:	791120ef          	jal	ra,e88983a6 <netconn_connect>
    e888541a:	bf4d                	j	e88853cc <lwip_connect+0xa8>

00000000e888541c <lwip_listen>:
{
    e888541c:	1101                	addi	sp,sp,-32
    e888541e:	ec06                	sd	ra,24(sp)
    e8885420:	e822                	sd	s0,16(sp)
    e8885422:	e42e                	sd	a1,8(sp)
  sock = get_socket(s);
    e8885424:	d6cff0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8885428:	c531                	beqz	a0,e8885474 <lwip_listen+0x58>
  backlog = LWIP_MIN(LWIP_MAX(backlog, 0), 0xff);
    e888542a:	65a2                	ld	a1,8(sp)
    e888542c:	842a                	mv	s0,a0
    e888542e:	87ae                	mv	a5,a1
    e8885430:	0005d363          	bgez	a1,e8885436 <lwip_listen+0x1a>
    e8885434:	4781                	li	a5,0
  err = netconn_listen_with_backlog(sock->conn, (u8_t)backlog);
    e8885436:	0007871b          	sext.w	a4,a5
    e888543a:	0ff00693          	li	a3,255
    e888543e:	00e6d463          	bge	a3,a4,e8885446 <lwip_listen+0x2a>
    e8885442:	0ff00793          	li	a5,255
    e8885446:	6008                	ld	a0,0(s0)
    e8885448:	0ff7f593          	andi	a1,a5,255
    e888544c:	002130ef          	jal	ra,e889844e <netconn_listen_with_backlog>
  if (err != ERR_OK) {
    e8885450:	cd05                	beqz	a0,e8885488 <lwip_listen+0x6c>
    if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) {
    e8885452:	601c                	ld	a5,0(s0)
    e8885454:	4741                	li	a4,16
    e8885456:	0007c783          	lbu	a5,0(a5) # ffffffffffff0000 <__DRAM0_INF_BASE+0xffffffff00000000>
    e888545a:	0f07f793          	andi	a5,a5,240
    e888545e:	00e78d63          	beq	a5,a4,e8885478 <lwip_listen+0x5c>
      sock_set_errno(sock, EOPNOTSUPP);
    e8885462:	05f00793          	li	a5,95
    e8885466:	0005f717          	auipc	a4,0x5f
    e888546a:	1cf72123          	sw	a5,450(a4) # e88e4628 <lwip_errno>
    done_socket(sock);
    e888546e:	8522                	mv	a0,s0
    e8885470:	c3aff0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e8885474:	557d                	li	a0,-1
    e8885476:	a829                	j	e8885490 <lwip_listen+0x74>
      sock_set_errno(sock, err_to_errno(err));
    e8885478:	9c5fe0ef          	jal	ra,e8883e3c <err_to_errno>
    e888547c:	d96d                	beqz	a0,e888546e <lwip_listen+0x52>
    e888547e:	0005f797          	auipc	a5,0x5f
    e8885482:	1aa7a523          	sw	a0,426(a5) # e88e4628 <lwip_errno>
    e8885486:	b7e5                	j	e888546e <lwip_listen+0x52>
  done_socket(sock);
    e8885488:	8522                	mv	a0,s0
    e888548a:	c20ff0ef          	jal	ra,e88848aa <done_socket>
  return 0;
    e888548e:	4501                	li	a0,0
}
    e8885490:	60e2                	ld	ra,24(sp)
    e8885492:	6442                	ld	s0,16(sp)
    e8885494:	6105                	addi	sp,sp,32
    e8885496:	8082                	ret

00000000e8885498 <lwip_recvfrom>:
{
    e8885498:	7175                	addi	sp,sp,-144
    e888549a:	e122                	sd	s0,128(sp)
    e888549c:	f8ca                	sd	s2,112(sp)
    e888549e:	f4ce                	sd	s3,104(sp)
    e88854a0:	f0d2                	sd	s4,96(sp)
    e88854a2:	e506                	sd	ra,136(sp)
    e88854a4:	fca6                	sd	s1,120(sp)
    e88854a6:	e42e                	sd	a1,8(sp)
    e88854a8:	89b2                	mv	s3,a2
    e88854aa:	8436                	mv	s0,a3
    e88854ac:	8a3a                	mv	s4,a4
    e88854ae:	893e                	mv	s2,a5
  sock = get_socket(s);
    e88854b0:	ce0ff0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e88854b4:	c14d                	beqz	a0,e8885556 <lwip_recvfrom+0xbe>
  if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) {
    e88854b6:	611c                	ld	a5,0(a0)
    e88854b8:	4741                	li	a4,16
    e88854ba:	84aa                	mv	s1,a0
    e88854bc:	0007c783          	lbu	a5,0(a5)
    e88854c0:	65a2                	ld	a1,8(sp)
    e88854c2:	0f07f793          	andi	a5,a5,240
    e88854c6:	04e79563          	bne	a5,a4,e8885510 <lwip_recvfrom+0x78>
    ret = lwip_recv_tcp(sock, mem, len, flags);
    e88854ca:	86a2                	mv	a3,s0
    e88854cc:	864e                	mv	a2,s3
    e88854ce:	cebfe0ef          	jal	ra,e88841b8 <lwip_recv_tcp>
    e88854d2:	842a                	mv	s0,a0
  if (from && fromlen)
    e88854d4:	020a0263          	beqz	s4,e88854f8 <lwip_recvfrom+0x60>
    e88854d8:	02090063          	beqz	s2,e88854f8 <lwip_recvfrom+0x60>
    netconn_getaddr(sock->conn, &tmpaddr, &port, 0);
    e88854dc:	6088                	ld	a0,0(s1)
    e88854de:	4681                	li	a3,0
    e88854e0:	1010                	addi	a2,sp,32
    e88854e2:	180c                	addi	a1,sp,48
    e88854e4:	55b120ef          	jal	ra,e889823e <netconn_getaddr>
      return lwip_sock_make_addr(sock->conn, &tmpaddr, port, from, fromlen);
    e88854e8:	02015603          	lhu	a2,32(sp)
    e88854ec:	6088                	ld	a0,0(s1)
    e88854ee:	874a                	mv	a4,s2
    e88854f0:	86d2                	mv	a3,s4
    e88854f2:	180c                	addi	a1,sp,48
    e88854f4:	826ff0ef          	jal	ra,e888451a <lwip_sock_make_addr.isra.5>
  done_socket(sock);
    e88854f8:	8526                	mv	a0,s1
    e88854fa:	bb0ff0ef          	jal	ra,e88848aa <done_socket>
}
    e88854fe:	8522                	mv	a0,s0
    e8885500:	60aa                	ld	ra,136(sp)
    e8885502:	640a                	ld	s0,128(sp)
    e8885504:	74e6                	ld	s1,120(sp)
    e8885506:	7946                	ld	s2,112(sp)
    e8885508:	79a6                	ld	s3,104(sp)
    e888550a:	7a06                	ld	s4,96(sp)
    e888550c:	6149                	addi	sp,sp,144
    e888550e:	8082                	ret
    msg.msg_iov = &vec;
    e8885510:	101c                	addi	a5,sp,32
    e8885512:	e0be                	sd	a5,64(sp)
    msg.msg_iovlen = 1;
    e8885514:	4785                	li	a5,1
    e8885516:	c4be                	sw	a5,72(sp)
    u16_t datagram_len = 0;
    e8885518:	00011f23          	sh	zero,30(sp)
    vec.iov_len = len;
    e888551c:	fd31558b          	sdd	a1,s3,(sp),2,4
    msg.msg_control = NULL;
    e8885520:	e882                	sd	zero,80(sp)
    msg.msg_controllen = 0;
    e8885522:	ec82                	sd	zero,88(sp)
    msg.msg_name = from;
    e8885524:	f852                	sd	s4,48(sp)
    msg.msg_namelen = (fromlen ? *fromlen : 0);
    e8885526:	4781                	li	a5,0
    e8885528:	00090463          	beqz	s2,e8885530 <lwip_recvfrom+0x98>
    e888552c:	00092783          	lw	a5,0(s2)
    err = lwip_recvfrom_udp_raw(sock, flags, &msg, &datagram_len, s);
    e8885530:	01e10693          	addi	a3,sp,30
    e8885534:	1810                	addi	a2,sp,48
    e8885536:	85a2                	mv	a1,s0
    e8885538:	8526                	mv	a0,s1
    msg.msg_namelen = (fromlen ? *fromlen : 0);
    e888553a:	dc3e                	sw	a5,56(sp)
    err = lwip_recvfrom_udp_raw(sock, flags, &msg, &datagram_len, s);
    e888553c:	964ff0ef          	jal	ra,e88846a0 <lwip_recvfrom_udp_raw.isra.11>
    if (err != ERR_OK) {
    e8885540:	cd09                	beqz	a0,e888555a <lwip_recvfrom+0xc2>
      sock_set_errno(sock, err_to_errno(err));
    e8885542:	8fbfe0ef          	jal	ra,e8883e3c <err_to_errno>
    e8885546:	c509                	beqz	a0,e8885550 <lwip_recvfrom+0xb8>
    e8885548:	0005f797          	auipc	a5,0x5f
    e888554c:	0ea7a023          	sw	a0,224(a5) # e88e4628 <lwip_errno>
      done_socket(sock);
    e8885550:	8526                	mv	a0,s1
    e8885552:	b58ff0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e8885556:	547d                	li	s0,-1
    e8885558:	b75d                	j	e88854fe <lwip_recvfrom+0x66>
    ret = (ssize_t)LWIP_MIN(LWIP_MIN(len, datagram_len), SSIZE_MAX);
    e888555a:	01e15403          	lhu	s0,30(sp)
    e888555e:	0089b7b3          	sltu	a5,s3,s0
    e8885562:	42f9940b          	mvnez	s0,s3,a5
    e8885566:	2401                	sext.w	s0,s0
    if (fromlen) {
    e8885568:	f80908e3          	beqz	s2,e88854f8 <lwip_recvfrom+0x60>
      *fromlen = msg.msg_namelen;
    e888556c:	57e2                	lw	a5,56(sp)
    e888556e:	00f92023          	sw	a5,0(s2)
    e8885572:	b759                	j	e88854f8 <lwip_recvfrom+0x60>

00000000e8885574 <lwip_read>:
  return lwip_recvfrom(s, mem, len, 0, NULL, NULL);
    e8885574:	4781                	li	a5,0
    e8885576:	4701                	li	a4,0
    e8885578:	4681                	li	a3,0
    e888557a:	f1fff06f          	j	e8885498 <lwip_recvfrom>

00000000e888557e <lwip_recv>:
  return lwip_recvfrom(s, mem, len, flags, NULL, NULL);
    e888557e:	4781                	li	a5,0
    e8885580:	4701                	li	a4,0
    e8885582:	f17ff06f          	j	e8885498 <lwip_recvfrom>

00000000e8885586 <lwip_recvmsg>:
{
    e8885586:	715d                	addi	sp,sp,-80
    e8885588:	e486                	sd	ra,72(sp)
    e888558a:	e0a2                	sd	s0,64(sp)
    e888558c:	fc26                	sd	s1,56(sp)
    e888558e:	f84a                	sd	s2,48(sp)
    e8885590:	f44e                	sd	s3,40(sp)
    e8885592:	f052                	sd	s4,32(sp)
    e8885594:	ec56                	sd	s5,24(sp)
    e8885596:	e85a                	sd	s6,16(sp)
  LWIP_ERROR("lwip_recvmsg: invalid message pointer", message != NULL, return ERR_ARG;);
    e8885598:	e1b9                	bnez	a1,e88855de <lwip_recvmsg+0x58>
    e888559a:	02f00593          	li	a1,47
    e888559e:	0004a517          	auipc	a0,0x4a
    e88855a2:	f7250513          	addi	a0,a0,-142 # e88cf510 <err_to_errno_table+0x438>
    e88855a6:	dd3f60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88855aa:	00150693          	addi	a3,a0,1
    e88855ae:	50800613          	li	a2,1288
    e88855b2:	0004a597          	auipc	a1,0x4a
    e88855b6:	d6658593          	addi	a1,a1,-666 # e88cf318 <err_to_errno_table+0x240>
    e88855ba:	0004a517          	auipc	a0,0x4a
    e88855be:	af650513          	addi	a0,a0,-1290 # e88cf0b0 <kSinTable1024+0x900>
    e88855c2:	d05f60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88855c6:	5441                	li	s0,-16
}
    e88855c8:	8522                	mv	a0,s0
    e88855ca:	60a6                	ld	ra,72(sp)
    e88855cc:	6406                	ld	s0,64(sp)
    e88855ce:	74e2                	ld	s1,56(sp)
    e88855d0:	7942                	ld	s2,48(sp)
    e88855d2:	79a2                	ld	s3,40(sp)
    e88855d4:	7a02                	ld	s4,32(sp)
    e88855d6:	6ae2                	ld	s5,24(sp)
    e88855d8:	6b42                	ld	s6,16(sp)
    e88855da:	6161                	addi	sp,sp,80
    e88855dc:	8082                	ret
  LWIP_ERROR("lwip_recvmsg: unsupported flags", (flags & ~(MSG_PEEK|MSG_DONTWAIT)) == 0,
    e88855de:	ff667413          	andi	s0,a2,-10
    e88855e2:	89b2                	mv	s3,a2
    e88855e4:	cc1d                	beqz	s0,e8885622 <lwip_recvmsg+0x9c>
    e88855e6:	02f00593          	li	a1,47
    e88855ea:	0004a517          	auipc	a0,0x4a
    e88855ee:	f2650513          	addi	a0,a0,-218 # e88cf510 <err_to_errno_table+0x438>
    e88855f2:	d87f60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88855f6:	00150693          	addi	a3,a0,1
    e88855fa:	50a00613          	li	a2,1290
    e88855fe:	0004a597          	auipc	a1,0x4a
    e8885602:	d4258593          	addi	a1,a1,-702 # e88cf340 <err_to_errno_table+0x268>
    e8885606:	0004a517          	auipc	a0,0x4a
    e888560a:	aaa50513          	addi	a0,a0,-1366 # e88cf0b0 <kSinTable1024+0x900>
    e888560e:	cb9f60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8885612:	05f00793          	li	a5,95
    set_errno(EMSGSIZE);
    e8885616:	0005f717          	auipc	a4,0x5f
    e888561a:	00f72923          	sw	a5,18(a4) # e88e4628 <lwip_errno>
    return -1;
    e888561e:	547d                	li	s0,-1
    e8885620:	b765                	j	e88855c8 <lwip_recvmsg+0x42>
  if ((message->msg_iovlen <= 0) || (message->msg_iovlen > IOV_MAX)) {
    e8885622:	4d98                	lw	a4,24(a1)
    e8885624:	67c1                	lui	a5,0x10
    e8885626:	17f9                	addi	a5,a5,-2
    e8885628:	377d                	addiw	a4,a4,-1
    e888562a:	84ae                	mv	s1,a1
    e888562c:	00e7f563          	bgeu	a5,a4,e8885636 <lwip_recvmsg+0xb0>
    set_errno(EMSGSIZE);
    e8885630:	07a00793          	li	a5,122
    e8885634:	b7cd                	j	e8885616 <lwip_recvmsg+0x90>
  sock = get_socket(s);
    e8885636:	b5aff0ef          	jal	ra,e8884990 <get_socket>
    e888563a:	892a                	mv	s2,a0
  if (!sock) {
    e888563c:	d16d                	beqz	a0,e888561e <lwip_recvmsg+0x98>
  for (i = 0; i < message->msg_iovlen; i++) {
    e888563e:	4c90                	lw	a2,24(s1)
  buflen = 0;
    e8885640:	4a01                	li	s4,0
  for (i = 0; i < message->msg_iovlen; i++) {
    e8885642:	4781                	li	a5,0
    e8885644:	0007871b          	sext.w	a4,a5
    e8885648:	04c74d63          	blt	a4,a2,e88856a2 <lwip_recvmsg+0x11c>
  if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) {
    e888564c:	00093783          	ld	a5,0(s2)
    e8885650:	4741                	li	a4,16
    e8885652:	0007c783          	lbu	a5,0(a5) # 10000 <memcmp-0xe87f0000>
    e8885656:	0f07f793          	andi	a5,a5,240
    e888565a:	08e79c63          	bne	a5,a4,e88856f2 <lwip_recvmsg+0x16c>
    message->msg_flags = 0;
    e888565e:	0204a623          	sw	zero,44(s1)
    for (i = 0; i < message->msg_iovlen; i++) {
    e8885662:	4a01                	li	s4,0
      if ((recvd_local < 0) || (recvd_local < (int)message->msg_iov[i].iov_len) ||
    e8885664:	0019fb13          	andi	s6,s3,1
    for (i = 0; i < message->msg_iovlen; i++) {
    e8885668:	4c9c                	lw	a5,24(s1)
    e888566a:	08fa5063          	bge	s4,a5,e88856ea <lwip_recvmsg+0x164>
      ssize_t recvd_local = lwip_recv_tcp(sock, message->msg_iov[i].iov_base, message->msg_iov[i].iov_len, recv_flags);
    e888566e:	689c                	ld	a5,16(s1)
    e8885670:	004a1a93          	slli	s5,s4,0x4
    e8885674:	86ce                	mv	a3,s3
    e8885676:	01578733          	add	a4,a5,s5
    e888567a:	6710                	ld	a2,8(a4)
    e888567c:	6157c58b          	lrd	a1,a5,s5,0
    e8885680:	854a                	mv	a0,s2
    e8885682:	b37fe0ef          	jal	ra,e88841b8 <lwip_recv_tcp>
      if (recvd_local > 0) {
    e8885686:	04a05e63          	blez	a0,e88856e2 <lwip_recvmsg+0x15c>
        buflen += recvd_local;
    e888568a:	9c29                	addw	s0,s0,a0
      if ((recvd_local < 0) || (recvd_local < (int)message->msg_iov[i].iov_len) ||
    e888568c:	689c                	ld	a5,16(s1)
    e888568e:	97d6                	add	a5,a5,s5
    e8885690:	479c                	lw	a5,8(a5)
    e8885692:	04f54963          	blt	a0,a5,e88856e4 <lwip_recvmsg+0x15e>
    e8885696:	040b1763          	bnez	s6,e88856e4 <lwip_recvmsg+0x15e>
      recv_flags |= MSG_DONTWAIT;
    e888569a:	0089e993          	ori	s3,s3,8
    for (i = 0; i < message->msg_iovlen; i++) {
    e888569e:	2a05                	addiw	s4,s4,1
    e88856a0:	b7e1                	j	e8885668 <lwip_recvmsg+0xe2>
    if ((message->msg_iov[i].iov_base == NULL) || ((ssize_t)message->msg_iov[i].iov_len <= 0) ||
    e88856a2:	6894                	ld	a3,16(s1)
    e88856a4:	00479713          	slli	a4,a5,0x4
    e88856a8:	00e685b3          	add	a1,a3,a4
    e88856ac:	60e6c70b          	lrd	a4,a3,a4,0
    e88856b0:	cf09                	beqz	a4,e88856ca <lwip_recvmsg+0x144>
    e88856b2:	6598                	ld	a4,8(a1)
    e88856b4:	0007069b          	sext.w	a3,a4
    e88856b8:	00d05963          	blez	a3,e88856ca <lwip_recvmsg+0x144>
    e88856bc:	00d71763          	bne	a4,a3,e88856ca <lwip_recvmsg+0x144>
        ((ssize_t)(buflen + (ssize_t)message->msg_iov[i].iov_len) <= 0)) {
    e88856c0:	01470a3b          	addw	s4,a4,s4
    e88856c4:	0785                	addi	a5,a5,1
        ((size_t)(ssize_t)message->msg_iov[i].iov_len != message->msg_iov[i].iov_len) ||
    e88856c6:	f7404fe3          	bgtz	s4,e8885644 <lwip_recvmsg+0xbe>
      sock_set_errno(sock, err_to_errno(ERR_VAL));
    e88856ca:	5569                	li	a0,-6
      sock_set_errno(sock, err_to_errno(err));
    e88856cc:	f70fe0ef          	jal	ra,e8883e3c <err_to_errno>
    e88856d0:	c509                	beqz	a0,e88856da <lwip_recvmsg+0x154>
    e88856d2:	0005f797          	auipc	a5,0x5f
    e88856d6:	f4a7ab23          	sw	a0,-170(a5) # e88e4628 <lwip_errno>
      done_socket(sock);
    e88856da:	854a                	mv	a0,s2
    e88856dc:	9ceff0ef          	jal	ra,e88848aa <done_socket>
      return -1;
    e88856e0:	bf3d                	j	e888561e <lwip_recvmsg+0x98>
      if ((recvd_local < 0) || (recvd_local < (int)message->msg_iov[i].iov_len) ||
    e88856e2:	d54d                	beqz	a0,e888568c <lwip_recvmsg+0x106>
        if (buflen <= 0) {
    e88856e4:	00804363          	bgtz	s0,e88856ea <lwip_recvmsg+0x164>
    e88856e8:	842a                	mv	s0,a0
    done_socket(sock);
    e88856ea:	854a                	mv	a0,s2
    e88856ec:	9beff0ef          	jal	ra,e88848aa <done_socket>
    return buflen;
    e88856f0:	bde1                	j	e88855c8 <lwip_recvmsg+0x42>
    err = lwip_recvfrom_udp_raw(sock, flags, message, &datagram_len, s);
    e88856f2:	00e10693          	addi	a3,sp,14
    e88856f6:	8626                	mv	a2,s1
    e88856f8:	85ce                	mv	a1,s3
    e88856fa:	854a                	mv	a0,s2
    u16_t datagram_len = 0;
    e88856fc:	00011723          	sh	zero,14(sp)
    err = lwip_recvfrom_udp_raw(sock, flags, message, &datagram_len, s);
    e8885700:	fa1fe0ef          	jal	ra,e88846a0 <lwip_recvfrom_udp_raw.isra.11>
    if (err != ERR_OK) {
    e8885704:	f561                	bnez	a0,e88856cc <lwip_recvmsg+0x146>
    if (datagram_len > buflen) {
    e8885706:	00e15783          	lhu	a5,14(sp)
    e888570a:	00fa5663          	bge	s4,a5,e8885716 <lwip_recvmsg+0x190>
      message->msg_flags |= MSG_TRUNC;
    e888570e:	54dc                	lw	a5,44(s1)
    e8885710:	0047e793          	ori	a5,a5,4
    e8885714:	d4dc                	sw	a5,44(s1)
    done_socket(sock);
    e8885716:	854a                	mv	a0,s2
    e8885718:	992ff0ef          	jal	ra,e88848aa <done_socket>
    return (int)datagram_len;
    e888571c:	00e15403          	lhu	s0,14(sp)
    e8885720:	b565                	j	e88855c8 <lwip_recvmsg+0x42>

00000000e8885722 <lwip_sendmsg>:
{
    e8885722:	7175                	addi	sp,sp,-144
    e8885724:	e122                	sd	s0,128(sp)
    e8885726:	f8ca                	sd	s2,112(sp)
    e8885728:	e506                	sd	ra,136(sp)
    e888572a:	fca6                	sd	s1,120(sp)
    e888572c:	f4ce                	sd	s3,104(sp)
    e888572e:	f0d2                	sd	s4,96(sp)
    e8885730:	ecd6                	sd	s5,88(sp)
    e8885732:	892e                	mv	s2,a1
    e8885734:	8432                	mv	s0,a2
  sock = get_socket(s);
    e8885736:	a5aff0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e888573a:	e119                	bnez	a0,e8885740 <lwip_sendmsg+0x1e>
    return (err == ERR_OK ? size : -1);
    e888573c:	547d                	li	s0,-1
    e888573e:	a291                	j	e8885882 <lwip_sendmsg+0x160>
    e8885740:	84aa                	mv	s1,a0
  LWIP_ERROR("lwip_sendmsg: invalid msghdr", msg != NULL,
    e8885742:	04091163          	bnez	s2,e8885784 <lwip_sendmsg+0x62>
    e8885746:	02f00593          	li	a1,47
    e888574a:	0004a517          	auipc	a0,0x4a
    e888574e:	dc650513          	addi	a0,a0,-570 # e88cf510 <err_to_errno_table+0x438>
    e8885752:	c27f60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8885756:	00150693          	addi	a3,a0,1
    e888575a:	59d00613          	li	a2,1437
    e888575e:	0004a597          	auipc	a1,0x4a
    e8885762:	c1258593          	addi	a1,a1,-1006 # e88cf370 <err_to_errno_table+0x298>
    LWIP_ERROR("lwip_sendmsg: invalid msghdr name", (((msg->msg_name == NULL) && (msg->msg_namelen == 0)) ||
    e8885766:	0004a517          	auipc	a0,0x4a
    e888576a:	94a50513          	addi	a0,a0,-1718 # e88cf0b0 <kSinTable1024+0x900>
    e888576e:	b59f60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8885772:	5541                	li	a0,-16
    e8885774:	ec8fe0ef          	jal	ra,e8883e3c <err_to_errno>
    e8885778:	cd35                	beqz	a0,e88857f4 <lwip_sendmsg+0xd2>
    e888577a:	0005f797          	auipc	a5,0x5f
    e888577e:	eaa7a723          	sw	a0,-338(a5) # e88e4628 <lwip_errno>
    e8885782:	a88d                	j	e88857f4 <lwip_sendmsg+0xd2>
  LWIP_ERROR("lwip_sendmsg: invalid msghdr iov", msg->msg_iov != NULL,
    e8885784:	01093583          	ld	a1,16(s2)
    e8885788:	e195                	bnez	a1,e88857ac <lwip_sendmsg+0x8a>
    e888578a:	02f00593          	li	a1,47
    e888578e:	0004a517          	auipc	a0,0x4a
    e8885792:	d8250513          	addi	a0,a0,-638 # e88cf510 <err_to_errno_table+0x438>
    e8885796:	be3f60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888579a:	00150693          	addi	a3,a0,1
    e888579e:	59f00613          	li	a2,1439
    e88857a2:	0004a597          	auipc	a1,0x4a
    e88857a6:	bee58593          	addi	a1,a1,-1042 # e88cf390 <err_to_errno_table+0x2b8>
    e88857aa:	bf75                	j	e8885766 <lwip_sendmsg+0x44>
  LWIP_ERROR("lwip_sendmsg: maximum iovs exceeded", (msg->msg_iovlen > 0) && (msg->msg_iovlen <= IOV_MAX),
    e88857ac:	01892603          	lw	a2,24(s2)
    e88857b0:	67c1                	lui	a5,0x10
    e88857b2:	17f9                	addi	a5,a5,-2
    e88857b4:	fff6071b          	addiw	a4,a2,-1
    e88857b8:	04e7f263          	bgeu	a5,a4,e88857fc <lwip_sendmsg+0xda>
    e88857bc:	02f00593          	li	a1,47
    e88857c0:	0004a517          	auipc	a0,0x4a
    e88857c4:	d5050513          	addi	a0,a0,-688 # e88cf510 <err_to_errno_table+0x438>
    e88857c8:	bb1f60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88857cc:	00150693          	addi	a3,a0,1
    e88857d0:	5a100613          	li	a2,1441
    e88857d4:	0004a597          	auipc	a1,0x4a
    e88857d8:	be458593          	addi	a1,a1,-1052 # e88cf3b8 <err_to_errno_table+0x2e0>
    e88857dc:	0004a517          	auipc	a0,0x4a
    e88857e0:	8d450513          	addi	a0,a0,-1836 # e88cf0b0 <kSinTable1024+0x900>
    e88857e4:	ae3f60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88857e8:	07a00793          	li	a5,122
  LWIP_ERROR("lwip_sendmsg: unsupported flags", (flags & ~(MSG_DONTWAIT | MSG_MORE)) == 0,
    e88857ec:	0005f717          	auipc	a4,0x5f
    e88857f0:	e2f72e23          	sw	a5,-452(a4) # e88e4628 <lwip_errno>
    done_socket(sock);
    e88857f4:	8526                	mv	a0,s1
    e88857f6:	8b4ff0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e88857fa:	b789                	j	e888573c <lwip_sendmsg+0x1a>
  LWIP_ERROR("lwip_sendmsg: unsupported flags", (flags & ~(MSG_DONTWAIT | MSG_MORE)) == 0,
    e88857fc:	fe747993          	andi	s3,s0,-25
    e8885800:	02098b63          	beqz	s3,e8885836 <lwip_sendmsg+0x114>
    e8885804:	02f00593          	li	a1,47
    e8885808:	0004a517          	auipc	a0,0x4a
    e888580c:	d0850513          	addi	a0,a0,-760 # e88cf510 <err_to_errno_table+0x438>
    e8885810:	b69f60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8885814:	00150693          	addi	a3,a0,1
    e8885818:	5a300613          	li	a2,1443
    e888581c:	0004a597          	auipc	a1,0x4a
    e8885820:	bc458593          	addi	a1,a1,-1084 # e88cf3e0 <err_to_errno_table+0x308>
    e8885824:	0004a517          	auipc	a0,0x4a
    e8885828:	88c50513          	addi	a0,a0,-1908 # e88cf0b0 <kSinTable1024+0x900>
    e888582c:	a9bf60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8885830:	05f00793          	li	a5,95
    e8885834:	bf65                	j	e88857ec <lwip_sendmsg+0xca>
  if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) {
    e8885836:	611c                	ld	a5,0(a0)
    e8885838:	4741                	li	a4,16
    e888583a:	0007c783          	lbu	a5,0(a5) # 10000 <memcmp-0xe87f0000>
    e888583e:	0f07f793          	andi	a5,a5,240
    e8885842:	04e79a63          	bne	a5,a4,e8885896 <lwip_sendmsg+0x174>
                         ((flags & MSG_MORE)     ? NETCONN_MORE      : 0) |
    e8885846:	01047793          	andi	a5,s0,16
    write_flags = (u8_t)(NETCONN_COPY |
    e888584a:	468d                	li	a3,3
    e888584c:	e391                	bnez	a5,e8885850 <lwip_sendmsg+0x12e>
    e888584e:	4685                	li	a3,1
    written = 0;
    e8885850:	e402                	sd	zero,8(sp)
                         ((flags & MSG_MORE)     ? NETCONN_MORE      : 0) |
    e8885852:	2014340b          	extu	s0,s0,8,1
    err = netconn_write_vectors_partly(sock->conn, (struct netvector *)msg->msg_iov, (u16_t)msg->msg_iovlen, write_flags, &written);
    e8885856:	6088                	ld	a0,0(s1)
                         ((flags & MSG_MORE)     ? NETCONN_MORE      : 0) |
    e8885858:	8811                	andi	s0,s0,4
    err = netconn_write_vectors_partly(sock->conn, (struct netvector *)msg->msg_iov, (u16_t)msg->msg_iovlen, write_flags, &written);
    e888585a:	8ec1                	or	a3,a3,s0
    e888585c:	0038                	addi	a4,sp,8
    e888585e:	3c06360b          	extu	a2,a2,15,0
    e8885862:	657120ef          	jal	ra,e88986b8 <netconn_write_vectors_partly>
    e8885866:	842a                	mv	s0,a0
    sock_set_errno(sock, err_to_errno(err));
    e8885868:	dd4fe0ef          	jal	ra,e8883e3c <err_to_errno>
    e888586c:	c509                	beqz	a0,e8885876 <lwip_sendmsg+0x154>
    e888586e:	0005f797          	auipc	a5,0x5f
    e8885872:	daa7ad23          	sw	a0,-582(a5) # e88e4628 <lwip_errno>
    done_socket(sock);
    e8885876:	8526                	mv	a0,s1
    e8885878:	832ff0ef          	jal	ra,e88848aa <done_socket>
    return (err == ERR_OK ? (ssize_t)written : -1);
    e888587c:	ec0410e3          	bnez	s0,e888573c <lwip_sendmsg+0x1a>
    e8885880:	4422                	lw	s0,8(sp)
}
    e8885882:	8522                	mv	a0,s0
    e8885884:	60aa                	ld	ra,136(sp)
    e8885886:	640a                	ld	s0,128(sp)
    e8885888:	74e6                	ld	s1,120(sp)
    e888588a:	7946                	ld	s2,112(sp)
    e888588c:	79a6                	ld	s3,104(sp)
    e888588e:	7a06                	ld	s4,96(sp)
    e8885890:	6ae6                	ld	s5,88(sp)
    e8885892:	6149                	addi	sp,sp,144
    e8885894:	8082                	ret
    LWIP_ERROR("lwip_sendmsg: invalid msghdr name", (((msg->msg_name == NULL) && (msg->msg_namelen == 0)) ||
    e8885896:	00093703          	ld	a4,0(s2)
    e888589a:	00892783          	lw	a5,8(s2)
    e888589e:	e311                	bnez	a4,e88858a2 <lwip_sendmsg+0x180>
    e88858a0:	cb85                	beqz	a5,e88858d0 <lwip_sendmsg+0x1ae>
    e88858a2:	4741                	li	a4,16
    e88858a4:	02e78663          	beq	a5,a4,e88858d0 <lwip_sendmsg+0x1ae>
    e88858a8:	4771                	li	a4,28
    e88858aa:	02e78363          	beq	a5,a4,e88858d0 <lwip_sendmsg+0x1ae>
    e88858ae:	02f00593          	li	a1,47
    e88858b2:	0004a517          	auipc	a0,0x4a
    e88858b6:	c5e50513          	addi	a0,a0,-930 # e88cf510 <err_to_errno_table+0x438>
    e88858ba:	abff60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88858be:	00150693          	addi	a3,a0,1
    e88858c2:	5c500613          	li	a2,1477
    e88858c6:	0004a597          	auipc	a1,0x4a
    e88858ca:	b3a58593          	addi	a1,a1,-1222 # e88cf400 <err_to_errno_table+0x328>
    e88858ce:	bd61                	j	e8885766 <lwip_sendmsg+0x44>
    memset(&chain_buf, 0, sizeof(struct netbuf));
    e88858d0:	0028                	addi	a0,sp,8
    e88858d2:	04800613          	li	a2,72
    e88858d6:	4581                	li	a1,0
    e88858d8:	abdf60ef          	jal	ra,e887c394 <eLIBs_memset>
    if (msg->msg_name) {
    e88858dc:	00093503          	ld	a0,0(s2)
    e88858e0:	c911                	beqz	a0,e88858f4 <lwip_sendmsg+0x1d2>
      SOCKADDR_TO_IPADDR_PORT((const struct sockaddr *)msg->msg_name, &chain_buf.addr, remote_port);
    e88858e2:	00610613          	addi	a2,sp,6
    e88858e6:	082c                	addi	a1,sp,24
    e88858e8:	badfe0ef          	jal	ra,e8884494 <sockaddr_to_ipaddr_port>
      netbuf_fromport(&chain_buf) = remote_port;
    e88858ec:	00615783          	lhu	a5,6(sp)
    e88858f0:	02f11823          	sh	a5,48(sp)
    for (i = 0; i < msg->msg_iovlen; i++) {
    e88858f4:	01892603          	lw	a2,24(s2)
      if ((msg->msg_iov[i].iov_len > INT_MAX) || (size < (int)msg->msg_iov[i].iov_len)) {
    e88858f8:	800006b7          	lui	a3,0x80000
    ssize_t size = 0;
    e88858fc:	4401                	li	s0,0
    for (i = 0; i < msg->msg_iovlen; i++) {
    e88858fe:	4701                	li	a4,0
      if ((msg->msg_iov[i].iov_len > INT_MAX) || (size < (int)msg->msg_iov[i].iov_len)) {
    e8885900:	fff6c693          	not	a3,a3
    for (i = 0; i < msg->msg_iovlen; i++) {
    e8885904:	0007079b          	sext.w	a5,a4
    e8885908:	08c7c063          	blt	a5,a2,e8885988 <lwip_sendmsg+0x266>
    if (size > 0xFFFF) {
    e888590c:	67c1                	lui	a5,0x10
    e888590e:	08f45a63          	bge	s0,a5,e88859a2 <lwip_sendmsg+0x280>
    if (netbuf_alloc(&chain_buf, (u16_t)size) == NULL) {
    e8885912:	3c04358b          	extu	a1,s0,15,0
    e8885916:	0028                	addi	a0,sp,8
    e8885918:	05c150ef          	jal	ra,e889a974 <netbuf_alloc>
      err = ERR_MEM;
    e888591c:	5a7d                	li	s4,-1
    if (netbuf_alloc(&chain_buf, (u16_t)size) == NULL) {
    e888591e:	c521                	beqz	a0,e8885966 <lwip_sendmsg+0x244>
      size_t offset = 0;
    e8885920:	4a01                	li	s4,0
      for (i = 0; i < msg->msg_iovlen; i++) {
    e8885922:	01892783          	lw	a5,24(s2)
    e8885926:	6522                	ld	a0,8(sp)
    e8885928:	08f9c763          	blt	s3,a5,e88859b6 <lwip_sendmsg+0x294>
        u16_t chksum = ~inet_chksum_pbuf(chain_buf.p);
    e888592c:	010020ef          	jal	ra,e888793c <inet_chksum_pbuf>
    e8885930:	fff54513          	not	a0,a0
        netbuf_set_chksum(&chain_buf, chksum);
    e8885934:	4789                	li	a5,2
      if (IP_IS_V6_VAL(chain_buf.addr) && ip6_addr_isipv4mappedipv6(ip_2_ip6(&chain_buf.addr))) {
    e8885936:	02c14703          	lbu	a4,44(sp)
        netbuf_set_chksum(&chain_buf, chksum);
    e888593a:	02f10923          	sb	a5,50(sp)
    e888593e:	02a11a23          	sh	a0,52(sp)
      if (IP_IS_V6_VAL(chain_buf.addr) && ip6_addr_isipv4mappedipv6(ip_2_ip6(&chain_buf.addr))) {
    e8885942:	4799                	li	a5,6
    e8885944:	00f71c63          	bne	a4,a5,e888595c <lwip_sendmsg+0x23a>
    e8885948:	67e2                	ld	a5,24(sp)
    e888594a:	eb89                	bnez	a5,e888595c <lwip_sendmsg+0x23a>
    e888594c:	5702                	lw	a4,32(sp)
    e888594e:	77c1                	lui	a5,0xffff0
    e8885950:	00f71663          	bne	a4,a5,e888595c <lwip_sendmsg+0x23a>
        unmap_ipv4_mapped_ipv6(ip_2_ip4(&chain_buf.addr), ip_2_ip6(&chain_buf.addr));
    e8885954:	5792                	lw	a5,36(sp)
        IP_SET_TYPE_VAL(chain_buf.addr, IPADDR_TYPE_V4);
    e8885956:	02010623          	sb	zero,44(sp)
        unmap_ipv4_mapped_ipv6(ip_2_ip4(&chain_buf.addr), ip_2_ip6(&chain_buf.addr));
    e888595a:	cc3e                	sw	a5,24(sp)
      err = netconn_send(sock->conn, &chain_buf);
    e888595c:	6088                	ld	a0,0(s1)
    e888595e:	002c                	addi	a1,sp,8
    e8885960:	535120ef          	jal	ra,e8898694 <netconn_send>
    e8885964:	8a2a                	mv	s4,a0
    netbuf_free(&chain_buf);
    e8885966:	0028                	addi	a0,sp,8
    e8885968:	0a8150ef          	jal	ra,e889aa10 <netbuf_free>
    sock_set_errno(sock, err_to_errno(err));
    e888596c:	8552                	mv	a0,s4
    e888596e:	ccefe0ef          	jal	ra,e8883e3c <err_to_errno>
    e8885972:	c509                	beqz	a0,e888597c <lwip_sendmsg+0x25a>
    e8885974:	0005f797          	auipc	a5,0x5f
    e8885978:	caa7aa23          	sw	a0,-844(a5) # e88e4628 <lwip_errno>
    done_socket(sock);
    e888597c:	8526                	mv	a0,s1
    e888597e:	f2dfe0ef          	jal	ra,e88848aa <done_socket>
    return (err == ERR_OK ? size : -1);
    e8885982:	da0a1de3          	bnez	s4,e888573c <lwip_sendmsg+0x1a>
    e8885986:	bdf5                	j	e8885882 <lwip_sendmsg+0x160>
      size += msg->msg_iov[i].iov_len;
    e8885988:	01093783          	ld	a5,16(s2)
    e888598c:	00471593          	slli	a1,a4,0x4
    e8885990:	97ae                	add	a5,a5,a1
    e8885992:	679c                	ld	a5,8(a5)
    e8885994:	9c3d                	addw	s0,s0,a5
      if ((msg->msg_iov[i].iov_len > INT_MAX) || (size < (int)msg->msg_iov[i].iov_len)) {
    e8885996:	00f6e663          	bltu	a3,a5,e88859a2 <lwip_sendmsg+0x280>
    e888599a:	2781                	sext.w	a5,a5
    e888599c:	0705                	addi	a4,a4,1
    e888599e:	f6f453e3          	bge	s0,a5,e8885904 <lwip_sendmsg+0x1e2>
    sock_set_errno(sock, EMSGSIZE);
    e88859a2:	07a00793          	li	a5,122
    netbuf_free(&chain_buf);
    e88859a6:	0028                	addi	a0,sp,8
    sock_set_errno(sock, EMSGSIZE);
    e88859a8:	0005f717          	auipc	a4,0x5f
    e88859ac:	c8f72023          	sw	a5,-896(a4) # e88e4628 <lwip_errno>
    netbuf_free(&chain_buf);
    e88859b0:	060150ef          	jal	ra,e889aa10 <netbuf_free>
    e88859b4:	b581                	j	e88857f4 <lwip_sendmsg+0xd2>
        MEMCPY(&((u8_t *)chain_buf.p->payload)[offset], msg->msg_iov[i].iov_base, msg->msg_iov[i].iov_len);
    e88859b6:	01093783          	ld	a5,16(s2)
    e88859ba:	00499a93          	slli	s5,s3,0x4
    e88859be:	6508                	ld	a0,8(a0)
    e88859c0:	01578733          	add	a4,a5,s5
    e88859c4:	6157c58b          	lrd	a1,a5,s5,0
    e88859c8:	6710                	ld	a2,8(a4)
    e88859ca:	9552                	add	a0,a0,s4
      for (i = 0; i < msg->msg_iovlen; i++) {
    e88859cc:	2985                	addiw	s3,s3,1
        MEMCPY(&((u8_t *)chain_buf.p->payload)[offset], msg->msg_iov[i].iov_base, msg->msg_iov[i].iov_len);
    e88859ce:	9d3f60ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        offset += msg->msg_iov[i].iov_len;
    e88859d2:	01093783          	ld	a5,16(s2)
    e88859d6:	97d6                	add	a5,a5,s5
    e88859d8:	679c                	ld	a5,8(a5)
    e88859da:	9a3e                	add	s4,s4,a5
      for (i = 0; i < msg->msg_iovlen; i++) {
    e88859dc:	b799                	j	e8885922 <lwip_sendmsg+0x200>

00000000e88859de <lwip_sendto>:
{
    e88859de:	7135                	addi	sp,sp,-160
    e88859e0:	e922                	sd	s0,144(sp)
    e88859e2:	e14a                	sd	s2,128(sp)
    e88859e4:	fcce                	sd	s3,120(sp)
    e88859e6:	ec36                	sd	a3,24(sp)
    e88859e8:	e83a                	sd	a4,16(sp)
    e88859ea:	e43e                	sd	a5,8(sp)
    e88859ec:	ed06                	sd	ra,152(sp)
    e88859ee:	e526                	sd	s1,136(sp)
    e88859f0:	f8d2                	sd	s4,112(sp)
    e88859f2:	89aa                	mv	s3,a0
    e88859f4:	892e                	mv	s2,a1
    e88859f6:	8432                	mv	s0,a2
  sock = get_socket(s);
    e88859f8:	f99fe0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e88859fc:	67a2                	ld	a5,8(sp)
    e88859fe:	fad1470b          	ldd	a4,a3,(sp),1,4
    e8885a02:	e119                	bnez	a0,e8885a08 <lwip_sendto+0x2a>
  LWIP_ERROR("lwip_sendto: invalid address", (((to == NULL) && (tolen == 0)) ||
    e8885a04:	557d                	li	a0,-1
    e8885a06:	a01d                	j	e8885a2c <lwip_sendto+0x4e>
  if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) {
    e8885a08:	6110                	ld	a2,0(a0)
    e8885a0a:	45c1                	li	a1,16
    e8885a0c:	84aa                	mv	s1,a0
    e8885a0e:	00064603          	lbu	a2,0(a2)
    e8885a12:	0f067613          	andi	a2,a2,240
    e8885a16:	02b61363          	bne	a2,a1,e8885a3c <lwip_sendto+0x5e>
    e8885a1a:	e436                	sd	a3,8(sp)
    done_socket(sock);
    e8885a1c:	e8ffe0ef          	jal	ra,e88848aa <done_socket>
    return lwip_send(s, data, size, flags);
    e8885a20:	66a2                	ld	a3,8(sp)
    e8885a22:	8622                	mv	a2,s0
    e8885a24:	85ca                	mv	a1,s2
    e8885a26:	854e                	mv	a0,s3
    e8885a28:	16a000ef          	jal	ra,e8885b92 <lwip_send>
}
    e8885a2c:	60ea                	ld	ra,152(sp)
    e8885a2e:	644a                	ld	s0,144(sp)
    e8885a30:	64aa                	ld	s1,136(sp)
    e8885a32:	690a                	ld	s2,128(sp)
    e8885a34:	79e6                	ld	s3,120(sp)
    e8885a36:	7a46                	ld	s4,112(sp)
    e8885a38:	610d                	addi	sp,sp,160
    e8885a3a:	8082                	ret
  if (size > LWIP_MIN(0xFFFF, SSIZE_MAX)) {
    e8885a3c:	66c1                	lui	a3,0x10
    e8885a3e:	00d46b63          	bltu	s0,a3,e8885a54 <lwip_sendto+0x76>
    sock_set_errno(sock, EMSGSIZE);
    e8885a42:	07a00793          	li	a5,122
    e8885a46:	0005f717          	auipc	a4,0x5f
    e8885a4a:	bef72123          	sw	a5,-1054(a4) # e88e4628 <lwip_errno>
  LWIP_ERROR("lwip_sendto: invalid address", (((to == NULL) && (tolen == 0)) ||
    e8885a4e:	e5dfe0ef          	jal	ra,e88848aa <done_socket>
    e8885a52:	bf4d                	j	e8885a04 <lwip_sendto+0x26>
  short_size = (u16_t)size;
    e8885a54:	3c043a0b          	extu	s4,s0,15,0
  LWIP_ERROR("lwip_sendto: invalid address", (((to == NULL) && (tolen == 0)) ||
    e8885a58:	10071e63          	bnez	a4,e8885b74 <lwip_sendto+0x196>
    e8885a5c:	c3a9                	beqz	a5,e8885a9e <lwip_sendto+0xc0>
    e8885a5e:	02f00593          	li	a1,47
    e8885a62:	0004a517          	auipc	a0,0x4a
    e8885a66:	aae50513          	addi	a0,a0,-1362 # e88cf510 <err_to_errno_table+0x438>
    e8885a6a:	90ff60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8885a6e:	00150693          	addi	a3,a0,1
    e8885a72:	65500613          	li	a2,1621
    e8885a76:	0004a597          	auipc	a1,0x4a
    e8885a7a:	9b258593          	addi	a1,a1,-1614 # e88cf428 <err_to_errno_table+0x350>
    e8885a7e:	00049517          	auipc	a0,0x49
    e8885a82:	63250513          	addi	a0,a0,1586 # e88cf0b0 <kSinTable1024+0x900>
    e8885a86:	841f60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8885a8a:	5541                	li	a0,-16
    e8885a8c:	bb0fe0ef          	jal	ra,e8883e3c <err_to_errno>
    e8885a90:	c509                	beqz	a0,e8885a9a <lwip_sendto+0xbc>
    e8885a92:	0005f797          	auipc	a5,0x5f
    e8885a96:	b8a7ab23          	sw	a0,-1130(a5) # e88e4628 <lwip_errno>
    e8885a9a:	8526                	mv	a0,s1
    e8885a9c:	bf4d                	j	e8885a4e <lwip_sendto+0x70>
  buf.p = buf.ptr = NULL;
    e8885a9e:	f802                	sd	zero,48(sp)
    e8885aa0:	f402                	sd	zero,40(sp)
  buf.flags = 0;
    e8885aa2:	04010923          	sb	zero,82(sp)
  if (to) {
    e8885aa6:	cf41                	beqz	a4,e8885b3e <lwip_sendto+0x160>
    SOCKADDR_TO_IPADDR_PORT(to, &buf.addr, remote_port);
    e8885aa8:	02610613          	addi	a2,sp,38
    e8885aac:	182c                	addi	a1,sp,56
    e8885aae:	853a                	mv	a0,a4
    e8885ab0:	9e5fe0ef          	jal	ra,e8884494 <sockaddr_to_ipaddr_port>
  netbuf_fromport(&buf) = remote_port;
    e8885ab4:	02615783          	lhu	a5,38(sp)
  if (netbuf_alloc(&buf, short_size) == NULL) {
    e8885ab8:	85d2                	mv	a1,s4
    e8885aba:	1028                	addi	a0,sp,40
  netbuf_fromport(&buf) = remote_port;
    e8885abc:	04f11823          	sh	a5,80(sp)
  if (netbuf_alloc(&buf, short_size) == NULL) {
    e8885ac0:	6b5140ef          	jal	ra,e889a974 <netbuf_alloc>
    err = ERR_MEM;
    e8885ac4:	59fd                	li	s3,-1
  if (netbuf_alloc(&buf, short_size) == NULL) {
    e8885ac6:	c929                	beqz	a0,e8885b18 <lwip_sendto+0x13a>
    if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_RAW) {
    e8885ac8:	77a2                	ld	a5,40(sp)
    e8885aca:	04000713          	li	a4,64
    e8885ace:	6788                	ld	a0,8(a5)
    e8885ad0:	609c                	ld	a5,0(s1)
    e8885ad2:	0007c783          	lbu	a5,0(a5)
    e8885ad6:	0f07f793          	andi	a5,a5,240
    e8885ada:	08e78863          	beq	a5,a4,e8885b6a <lwip_sendto+0x18c>
      u16_t chksum = LWIP_CHKSUM_COPY(buf.p->payload, data, short_size);
    e8885ade:	8652                	mv	a2,s4
    e8885ae0:	85ca                	mv	a1,s2
    e8885ae2:	6c9010ef          	jal	ra,e88879aa <lwip_chksum_copy>
      netbuf_set_chksum(&buf, chksum);
    e8885ae6:	04a11a23          	sh	a0,84(sp)
    e8885aea:	4789                	li	a5,2
    e8885aec:	04f10923          	sb	a5,82(sp)
    if (IP_IS_V6_VAL(buf.addr) && ip6_addr_isipv4mappedipv6(ip_2_ip6(&buf.addr))) {
    e8885af0:	04c14703          	lbu	a4,76(sp)
    e8885af4:	4799                	li	a5,6
    e8885af6:	00f71c63          	bne	a4,a5,e8885b0e <lwip_sendto+0x130>
    e8885afa:	77e2                	ld	a5,56(sp)
    e8885afc:	eb89                	bnez	a5,e8885b0e <lwip_sendto+0x130>
    e8885afe:	4706                	lw	a4,64(sp)
    e8885b00:	77c1                	lui	a5,0xffff0
    e8885b02:	00f71663          	bne	a4,a5,e8885b0e <lwip_sendto+0x130>
      unmap_ipv4_mapped_ipv6(ip_2_ip4(&buf.addr), ip_2_ip6(&buf.addr));
    e8885b06:	4796                	lw	a5,68(sp)
      IP_SET_TYPE_VAL(buf.addr, IPADDR_TYPE_V4);
    e8885b08:	04010623          	sb	zero,76(sp)
      unmap_ipv4_mapped_ipv6(ip_2_ip4(&buf.addr), ip_2_ip6(&buf.addr));
    e8885b0c:	dc3e                	sw	a5,56(sp)
    err = netconn_send(sock->conn, &buf);
    e8885b0e:	6088                	ld	a0,0(s1)
    e8885b10:	102c                	addi	a1,sp,40
    e8885b12:	383120ef          	jal	ra,e8898694 <netconn_send>
    e8885b16:	89aa                	mv	s3,a0
  netbuf_free(&buf);
    e8885b18:	1028                	addi	a0,sp,40
    e8885b1a:	6f7140ef          	jal	ra,e889aa10 <netbuf_free>
  sock_set_errno(sock, err_to_errno(err));
    e8885b1e:	854e                	mv	a0,s3
    e8885b20:	b1cfe0ef          	jal	ra,e8883e3c <err_to_errno>
    e8885b24:	c509                	beqz	a0,e8885b2e <lwip_sendto+0x150>
    e8885b26:	0005f797          	auipc	a5,0x5f
    e8885b2a:	b0a7a123          	sw	a0,-1278(a5) # e88e4628 <lwip_errno>
  done_socket(sock);
    e8885b2e:	8526                	mv	a0,s1
    e8885b30:	d7bfe0ef          	jal	ra,e88848aa <done_socket>
  return (err == ERR_OK ? short_size : -1);
    e8885b34:	0004051b          	sext.w	a0,s0
    e8885b38:	ee098ae3          	beqz	s3,e8885a2c <lwip_sendto+0x4e>
    e8885b3c:	b5e1                	j	e8885a04 <lwip_sendto+0x26>
    remote_port = 0;
    e8885b3e:	02011323          	sh	zero,38(sp)
    ip_addr_set_any(NETCONNTYPE_ISIPV6(netconn_type(sock->conn)), &buf.addr);
    e8885b42:	609c                	ld	a5,0(s1)
    e8885b44:	0007c783          	lbu	a5,0(a5)
    e8885b48:	8ba1                	andi	a5,a5,8
    e8885b4a:	cb89                	beqz	a5,e8885b5c <lwip_sendto+0x17e>
    e8885b4c:	4799                	li	a5,6
    e8885b4e:	fc02                	sd	zero,56(sp)
    e8885b50:	e082                	sd	zero,64(sp)
    e8885b52:	04010423          	sb	zero,72(sp)
    e8885b56:	04f10623          	sb	a5,76(sp)
    e8885b5a:	bfa9                	j	e8885ab4 <lwip_sendto+0xd6>
    e8885b5c:	04010623          	sb	zero,76(sp)
    e8885b60:	fc02                	sd	zero,56(sp)
    e8885b62:	e082                	sd	zero,64(sp)
    e8885b64:	04010423          	sb	zero,72(sp)
    e8885b68:	b7b1                	j	e8885ab4 <lwip_sendto+0xd6>
      MEMCPY(buf.p->payload, data, short_size);
    e8885b6a:	8622                	mv	a2,s0
    e8885b6c:	85ca                	mv	a1,s2
    e8885b6e:	833f60ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e8885b72:	bfbd                	j	e8885af0 <lwip_sendto+0x112>
  LWIP_ERROR("lwip_sendto: invalid address", (((to == NULL) && (tolen == 0)) ||
    e8885b74:	00b78563          	beq	a5,a1,e8885b7e <lwip_sendto+0x1a0>
    e8885b78:	46f1                	li	a3,28
    e8885b7a:	eed792e3          	bne	a5,a3,e8885a5e <lwip_sendto+0x80>
    e8885b7e:	00174783          	lbu	a5,1(a4)
    e8885b82:	4689                	li	a3,2
    e8885b84:	0f77f793          	andi	a5,a5,247
    e8885b88:	ecd79be3          	bne	a5,a3,e8885a5e <lwip_sendto+0x80>
    e8885b8c:	00377793          	andi	a5,a4,3
    e8885b90:	b5f1                	j	e8885a5c <lwip_sendto+0x7e>

00000000e8885b92 <lwip_send>:
{
    e8885b92:	7139                	addi	sp,sp,-64
    e8885b94:	f84a                	sd	s2,48(sp)
    e8885b96:	fc91540b          	sdd	s0,s1,(sp),2,4
    e8885b9a:	e42e                	sd	a1,8(sp)
    e8885b9c:	e032                	sd	a2,0(sp)
    e8885b9e:	fc06                	sd	ra,56(sp)
    e8885ba0:	892a                	mv	s2,a0
    e8885ba2:	8436                	mv	s0,a3
  sock = get_socket(s);
    e8885ba4:	dedfe0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8885ba8:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e8885bac:	e901                	bnez	a0,e8885bbc <lwip_send+0x2a>
    return -1;
    e8885bae:	557d                	li	a0,-1
}
    e8885bb0:	70e2                	ld	ra,56(sp)
    e8885bb2:	fc91440b          	ldd	s0,s1,(sp),2,4
    e8885bb6:	7942                	ld	s2,48(sp)
    e8885bb8:	6121                	addi	sp,sp,64
    e8885bba:	8082                	ret
  if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) {
    e8885bbc:	611c                	ld	a5,0(a0)
    e8885bbe:	4741                	li	a4,16
    e8885bc0:	84aa                	mv	s1,a0
    e8885bc2:	0007c783          	lbu	a5,0(a5)
    e8885bc6:	0f07f793          	andi	a5,a5,240
    e8885bca:	00e78f63          	beq	a5,a4,e8885be8 <lwip_send+0x56>
    e8885bce:	e432                	sd	a2,8(sp)
    e8885bd0:	e02e                	sd	a1,0(sp)
    done_socket(sock);
    e8885bd2:	cd9fe0ef          	jal	ra,e88848aa <done_socket>
    return lwip_sendto(s, data, size, flags, NULL, 0);
    e8885bd6:	6622                	ld	a2,8(sp)
    e8885bd8:	6582                	ld	a1,0(sp)
    e8885bda:	4781                	li	a5,0
    e8885bdc:	4701                	li	a4,0
    e8885bde:	86a2                	mv	a3,s0
    e8885be0:	854a                	mv	a0,s2
    e8885be2:	dfdff0ef          	jal	ra,e88859de <lwip_sendto>
    e8885be6:	b7e9                	j	e8885bb0 <lwip_send+0x1e>
                       ((flags & MSG_MORE)     ? NETCONN_MORE      : 0) |
    e8885be8:	01047793          	andi	a5,s0,16
  write_flags = (u8_t)(NETCONN_COPY |
    e8885bec:	468d                	li	a3,3
    e8885bee:	e391                	bnez	a5,e8885bf2 <lwip_send+0x60>
    e8885bf0:	4685                	li	a3,1
  written = 0;
    e8885bf2:	ec02                	sd	zero,24(sp)
                       ((flags & MSG_MORE)     ? NETCONN_MORE      : 0) |
    e8885bf4:	2014340b          	extu	s0,s0,8,1
  err = netconn_write_partly(sock->conn, data, size, write_flags, &written);
    e8885bf8:	6088                	ld	a0,0(s1)
                       ((flags & MSG_MORE)     ? NETCONN_MORE      : 0) |
    e8885bfa:	8811                	andi	s0,s0,4
  err = netconn_write_partly(sock->conn, data, size, write_flags, &written);
    e8885bfc:	8ec1                	or	a3,a3,s0
    e8885bfe:	0838                	addi	a4,sp,24
    e8885c00:	3fb120ef          	jal	ra,e88987fa <netconn_write_partly>
    e8885c04:	842a                	mv	s0,a0
  sock_set_errno(sock, err_to_errno(err));
    e8885c06:	a36fe0ef          	jal	ra,e8883e3c <err_to_errno>
    e8885c0a:	c509                	beqz	a0,e8885c14 <lwip_send+0x82>
    e8885c0c:	0005f797          	auipc	a5,0x5f
    e8885c10:	a0a7ae23          	sw	a0,-1508(a5) # e88e4628 <lwip_errno>
  done_socket(sock);
    e8885c14:	8526                	mv	a0,s1
    e8885c16:	c95fe0ef          	jal	ra,e88848aa <done_socket>
  return (err == ERR_OK ? (ssize_t)written : -1);
    e8885c1a:	f851                	bnez	s0,e8885bae <lwip_send+0x1c>
    e8885c1c:	4562                	lw	a0,24(sp)
    e8885c1e:	bf49                	j	e8885bb0 <lwip_send+0x1e>

00000000e8885c20 <lwip_socket>:
{
    e8885c20:	1101                	addi	sp,sp,-32
    e8885c22:	ec06                	sd	ra,24(sp)
    e8885c24:	e422                	sd	s0,8(sp)
    e8885c26:	e826                	sd	s1,16(sp)
  switch (type) {
    e8885c28:	4789                	li	a5,2
{
    e8885c2a:	872a                	mv	a4,a0
    e8885c2c:	86b2                	mv	a3,a2
  switch (type) {
    e8885c2e:	04f58363          	beq	a1,a5,e8885c74 <lwip_socket+0x54>
    e8885c32:	460d                	li	a2,3
    e8885c34:	00c58f63          	beq	a1,a2,e8885c52 <lwip_socket+0x32>
    e8885c38:	4685                	li	a3,1
    e8885c3a:	0ad59b63          	bne	a1,a3,e8885cf0 <lwip_socket+0xd0>
      conn = netconn_new_with_callback(DOMAIN_TO_NETCONN_TYPE(domain, NETCONN_TCP), DEFAULT_SOCKET_EVENTCB);
    e8885c3e:	4541                	li	a0,16
    e8885c40:	00f70363          	beq	a4,a5,e8885c46 <lwip_socket+0x26>
    e8885c44:	4561                	li	a0,24
    e8885c46:	fffff617          	auipc	a2,0xfffff
    e8885c4a:	0a660613          	addi	a2,a2,166 # e8884cec <event_callback>
    e8885c4e:	4581                	li	a1,0
    e8885c50:	a829                	j	e8885c6a <lwip_socket+0x4a>
      conn = netconn_new_with_proto_and_callback(DOMAIN_TO_NETCONN_TYPE(domain, NETCONN_RAW),
    e8885c52:	04000513          	li	a0,64
    e8885c56:	00f70463          	beq	a4,a5,e8885c5e <lwip_socket+0x3e>
    e8885c5a:	04800513          	li	a0,72
    e8885c5e:	fffff617          	auipc	a2,0xfffff
    e8885c62:	08e60613          	addi	a2,a2,142 # e8884cec <event_callback>
    e8885c66:	0ff6f593          	andi	a1,a3,255
      conn = netconn_new_with_callback(DOMAIN_TO_NETCONN_TYPE(domain, NETCONN_TCP), DEFAULT_SOCKET_EVENTCB);
    e8885c6a:	46a120ef          	jal	ra,e88980d4 <netconn_new_with_proto_and_callback>
    e8885c6e:	842a                	mv	s0,a0
  if (!conn) {
    e8885c70:	ed39                	bnez	a0,e8885cce <lwip_socket+0xae>
    e8885c72:	a025                	j	e8885c9a <lwip_socket+0x7a>
      conn = netconn_new_with_callback(DOMAIN_TO_NETCONN_TYPE(domain,
    e8885c74:	08800793          	li	a5,136
    e8885c78:	02b51e63          	bne	a0,a1,e8885cb4 <lwip_socket+0x94>
    e8885c7c:	02100513          	li	a0,33
    e8885c80:	00f60463          	beq	a2,a5,e8885c88 <lwip_socket+0x68>
    e8885c84:	02000513          	li	a0,32
    e8885c88:	fffff617          	auipc	a2,0xfffff
    e8885c8c:	06460613          	addi	a2,a2,100 # e8884cec <event_callback>
    e8885c90:	4581                	li	a1,0
    e8885c92:	442120ef          	jal	ra,e88980d4 <netconn_new_with_proto_and_callback>
    e8885c96:	842a                	mv	s0,a0
      if (conn) {
    e8885c98:	e50d                	bnez	a0,e8885cc2 <lwip_socket+0xa2>
    set_errno(ENOBUFS);
    e8885c9a:	06900793          	li	a5,105
      set_errno(EINVAL);
    e8885c9e:	0005f717          	auipc	a4,0x5f
    e8885ca2:	98f72523          	sw	a5,-1654(a4) # e88e4628 <lwip_errno>
      return -1;
    e8885ca6:	54fd                	li	s1,-1
}
    e8885ca8:	60e2                	ld	ra,24(sp)
    e8885caa:	6422                	ld	s0,8(sp)
    e8885cac:	8526                	mv	a0,s1
    e8885cae:	64c2                	ld	s1,16(sp)
    e8885cb0:	6105                	addi	sp,sp,32
    e8885cb2:	8082                	ret
      conn = netconn_new_with_callback(DOMAIN_TO_NETCONN_TYPE(domain,
    e8885cb4:	02900513          	li	a0,41
    e8885cb8:	fcf608e3          	beq	a2,a5,e8885c88 <lwip_socket+0x68>
    e8885cbc:	02800513          	li	a0,40
    e8885cc0:	b7e1                	j	e8885c88 <lwip_socket+0x68>
        conn->flags &= ~NETCONN_FLAG_PKTINFO;
    e8885cc2:	04054783          	lbu	a5,64(a0)
    e8885cc6:	fbf7f793          	andi	a5,a5,-65
    e8885cca:	04f50023          	sb	a5,64(a0)
  i = alloc_socket(conn, 0);
    e8885cce:	4581                	li	a1,0
    e8885cd0:	8522                	mv	a0,s0
    e8885cd2:	ac6fe0ef          	jal	ra,e8883f98 <alloc_socket>
    e8885cd6:	84aa                	mv	s1,a0
  if (i == -1) {
    e8885cd8:	57fd                	li	a5,-1
    e8885cda:	00f51d63          	bne	a0,a5,e8885cf4 <lwip_socket+0xd4>
    netconn_delete(conn);
    e8885cde:	8522                	mv	a0,s0
    e8885ce0:	530120ef          	jal	ra,e8898210 <netconn_delete>
    set_errno(ENFILE);
    e8885ce4:	47dd                	li	a5,23
    e8885ce6:	0005f717          	auipc	a4,0x5f
    e8885cea:	94f72123          	sw	a5,-1726(a4) # e88e4628 <lwip_errno>
    return -1;
    e8885cee:	bf6d                	j	e8885ca8 <lwip_socket+0x88>
      set_errno(EINVAL);
    e8885cf0:	47d9                	li	a5,22
    e8885cf2:	b775                	j	e8885c9e <lwip_socket+0x7e>
  conn->socket = i;
    e8885cf4:	d848                	sw	a0,52(s0)
  done_socket(&sockets[i - LWIP_SOCKET_OFFSET]);
    e8885cf6:	0005f797          	auipc	a5,0x5f
    e8885cfa:	2a278793          	addi	a5,a5,674 # e88e4f98 <sockets>
    e8885cfe:	0516                	slli	a0,a0,0x5
    e8885d00:	953e                	add	a0,a0,a5
    e8885d02:	ba9fe0ef          	jal	ra,e88848aa <done_socket>
  return i;
    e8885d06:	b74d                	j	e8885ca8 <lwip_socket+0x88>

00000000e8885d08 <lwip_write>:
  return lwip_send(s, data, size, 0);
    e8885d08:	4681                	li	a3,0
    e8885d0a:	e89ff06f          	j	e8885b92 <lwip_send>

00000000e8885d0e <lwip_writev>:
{
    e8885d0e:	7139                	addi	sp,sp,-64
  msg.msg_iov = LWIP_CONST_CAST(struct iovec *, iov);
    e8885d10:	e82e                	sd	a1,16(sp)
  msg.msg_iovlen = iovcnt;
    e8885d12:	cc32                	sw	a2,24(sp)
  return lwip_sendmsg(s, &msg, 0);
    e8885d14:	858a                	mv	a1,sp
    e8885d16:	4601                	li	a2,0
{
    e8885d18:	fc06                	sd	ra,56(sp)
  msg.msg_name = NULL;
    e8885d1a:	e002                	sd	zero,0(sp)
  msg.msg_namelen = 0;
    e8885d1c:	c402                	sw	zero,8(sp)
  msg.msg_control = NULL;
    e8885d1e:	f002                	sd	zero,32(sp)
  msg.msg_controllen = 0;
    e8885d20:	f402                	sd	zero,40(sp)
  return lwip_sendmsg(s, &msg, 0);
    e8885d22:	a01ff0ef          	jal	ra,e8885722 <lwip_sendmsg>
}
    e8885d26:	70e2                	ld	ra,56(sp)
    e8885d28:	6121                	addi	sp,sp,64
    e8885d2a:	8082                	ret

00000000e8885d2c <lwip_select>:
{
    e8885d2c:	7115                	addi	sp,sp,-224
    e8885d2e:	ed86                	sd	ra,216(sp)
    e8885d30:	e9a2                	sd	s0,208(sp)
    e8885d32:	e5a6                	sd	s1,200(sp)
    e8885d34:	e1ca                	sd	s2,192(sp)
    e8885d36:	fd4e                	sd	s3,184(sp)
    e8885d38:	f952                	sd	s4,176(sp)
    e8885d3a:	f556                	sd	s5,168(sp)
    e8885d3c:	f15a                	sd	s6,160(sp)
    e8885d3e:	ed5e                	sd	s7,152(sp)
    e8885d40:	e962                	sd	s8,144(sp)
    e8885d42:	e566                	sd	s9,136(sp)
    e8885d44:	e16a                	sd	s10,128(sp)
    e8885d46:	fcee                	sd	s11,120(sp)
  if ((maxfdp1 < 0) || (maxfdp1 > LWIP_SELECT_MAXNFDS)) {
    e8885d48:	03200793          	li	a5,50
    e8885d4c:	02a7f863          	bgeu	a5,a0,e8885d7c <lwip_select+0x50>
    set_errno(EINVAL);
    e8885d50:	47d9                	li	a5,22
    e8885d52:	0005f717          	auipc	a4,0x5f
    e8885d56:	8cf72b23          	sw	a5,-1834(a4) # e88e4628 <lwip_errno>
    return -1;
    e8885d5a:	547d                	li	s0,-1
}
    e8885d5c:	8522                	mv	a0,s0
    e8885d5e:	60ee                	ld	ra,216(sp)
    e8885d60:	644e                	ld	s0,208(sp)
    e8885d62:	64ae                	ld	s1,200(sp)
    e8885d64:	690e                	ld	s2,192(sp)
    e8885d66:	79ea                	ld	s3,184(sp)
    e8885d68:	7a4a                	ld	s4,176(sp)
    e8885d6a:	7aaa                	ld	s5,168(sp)
    e8885d6c:	7b0a                	ld	s6,160(sp)
    e8885d6e:	6bea                	ld	s7,152(sp)
    e8885d70:	6c4a                	ld	s8,144(sp)
    e8885d72:	6caa                	ld	s9,136(sp)
    e8885d74:	6d0a                	ld	s10,128(sp)
    e8885d76:	7de6                	ld	s11,120(sp)
    e8885d78:	612d                	addi	sp,sp,224
    e8885d7a:	8082                	ret
    e8885d7c:	89ae                	mv	s3,a1
    e8885d7e:	8932                	mv	s2,a2
    e8885d80:	8a2a                	mv	s4,a0
  FD_ZERO(used_sockets);
    e8885d82:	461d                	li	a2,7
    e8885d84:	4581                	li	a1,0
    e8885d86:	1028                	addi	a0,sp,40
    e8885d88:	8c3a                	mv	s8,a4
    e8885d8a:	84b6                	mv	s1,a3
    e8885d8c:	e08f60ef          	jal	ra,e887c394 <eLIBs_memset>
  if (fdset) {
    e8885d90:	00098763          	beqz	s3,e8885d9e <lwip_select+0x72>
    e8885d94:	1030                	addi	a2,sp,40
    e8885d96:	85ce                	mv	a1,s3
    e8885d98:	8552                	mv	a0,s4
    e8885d9a:	e34fe0ef          	jal	ra,e88843ce <lwip_select_inc_sockets_used_set.part.2>
    e8885d9e:	00090763          	beqz	s2,e8885dac <lwip_select+0x80>
    e8885da2:	1030                	addi	a2,sp,40
    e8885da4:	85ca                	mv	a1,s2
    e8885da6:	8552                	mv	a0,s4
    e8885da8:	e26fe0ef          	jal	ra,e88843ce <lwip_select_inc_sockets_used_set.part.2>
    e8885dac:	c491                	beqz	s1,e8885db8 <lwip_select+0x8c>
    e8885dae:	1030                	addi	a2,sp,40
    e8885db0:	85a6                	mv	a1,s1
    e8885db2:	8552                	mv	a0,s4
    e8885db4:	e1afe0ef          	jal	ra,e88843ce <lwip_select_inc_sockets_used_set.part.2>
  nready = lwip_selscan(maxfdp1, readset, writeset, exceptset, &lreadset, &lwriteset, &lexceptset);
    e8885db8:	02010813          	addi	a6,sp,32
    e8885dbc:	083c                	addi	a5,sp,24
    e8885dbe:	0818                	addi	a4,sp,16
    e8885dc0:	86a6                	mv	a3,s1
    e8885dc2:	864a                	mv	a2,s2
    e8885dc4:	85ce                	mv	a1,s3
    e8885dc6:	8552                	mv	a0,s4
    e8885dc8:	be3fe0ef          	jal	ra,e88849aa <lwip_selscan>
    e8885dcc:	842a                	mv	s0,a0
  if (nready < 0) {
    e8885dce:	00055c63          	bgez	a0,e8885de6 <lwip_select+0xba>
    set_errno(EBADF);
    e8885dd2:	47a5                	li	a5,9
    e8885dd4:	0005f717          	auipc	a4,0x5f
    e8885dd8:	84f72a23          	sw	a5,-1964(a4) # e88e4628 <lwip_errno>
    lwip_select_dec_sockets_used(maxfdp1, &used_sockets);
    e8885ddc:	102c                	addi	a1,sp,40
    e8885dde:	8552                	mv	a0,s4
    e8885de0:	dcbfe0ef          	jal	ra,e8884baa <lwip_select_dec_sockets_used>
    e8885de4:	bf9d                	j	e8885d5a <lwip_select+0x2e>
  } else if (nready > 0) {
    e8885de6:	14051b63          	bnez	a0,e8885f3c <lwip_select+0x210>
    if (timeout && timeout->tv_sec == 0 && timeout->tv_usec == 0) {
    e8885dea:	000c0963          	beqz	s8,e8885dfc <lwip_select+0xd0>
    e8885dee:	000c3783          	ld	a5,0(s8)
    e8885df2:	e789                	bnez	a5,e8885dfc <lwip_select+0xd0>
    e8885df4:	008c3783          	ld	a5,8(s8)
    e8885df8:	14078263          	beqz	a5,e8885f3c <lwip_select+0x210>
      memset(&API_SELECT_CB_VAR_REF(select_cb), 0, sizeof(struct lwip_select_cb));
    e8885dfc:	04000613          	li	a2,64
    e8885e00:	4581                	li	a1,0
    e8885e02:	1808                	addi	a0,sp,48
    e8885e04:	d90f60ef          	jal	ra,e887c394 <eLIBs_memset>
      API_SELECT_CB_VAR_REF(select_cb).readset = readset;
    e8885e08:	e0ce                	sd	s3,64(sp)
      if (sys_sem_new(&API_SELECT_CB_VAR_REF(select_cb).sem, 0) != ERR_OK) {
    e8885e0a:	4581                	li	a1,0
    e8885e0c:	10a8                	addi	a0,sp,104
      API_SELECT_CB_VAR_REF(select_cb).writeset = writeset;
    e8885e0e:	e4ca                	sd	s2,72(sp)
      API_SELECT_CB_VAR_REF(select_cb).exceptset = exceptset;
    e8885e10:	e8a6                	sd	s1,80(sp)
      if (sys_sem_new(&API_SELECT_CB_VAR_REF(select_cb).sem, 0) != ERR_OK) {
    e8885e12:	4f5110ef          	jal	ra,e8897b06 <sys_sem_new>
        set_errno(ENOMEM);
    e8885e16:	47b1                	li	a5,12
      if (sys_sem_new(&API_SELECT_CB_VAR_REF(select_cb).sem, 0) != ERR_OK) {
    e8885e18:	fd55                	bnez	a0,e8885dd4 <lwip_select+0xa8>
      lwip_link_select_cb(&API_SELECT_CB_VAR_REF(select_cb));
    e8885e1a:	1808                	addi	a0,sp,48
    e8885e1c:	ab8fe0ef          	jal	ra,e88840d4 <lwip_link_select_cb>
      for (i = LWIP_SOCKET_OFFSET; i < maxfdp1; i++) {
    e8885e20:	4a81                	li	s5,0
    e8885e22:	054a9a63          	bne	s5,s4,e8885e76 <lwip_select+0x14a>
        nready = lwip_selscan(maxfdp1, readset, writeset, exceptset, &lreadset, &lwriteset, &lexceptset);
    e8885e26:	02010813          	addi	a6,sp,32
    e8885e2a:	083c                	addi	a5,sp,24
    e8885e2c:	0818                	addi	a4,sp,16
    e8885e2e:	86a6                	mv	a3,s1
    e8885e30:	864a                	mv	a2,s2
    e8885e32:	85ce                	mv	a1,s3
    e8885e34:	8552                	mv	a0,s4
    e8885e36:	b75fe0ef          	jal	ra,e88849aa <lwip_selscan>
    e8885e3a:	8b2a                	mv	s6,a0
  u32_t waitres = 0;
    e8885e3c:	4b81                	li	s7,0
        if (!nready) {
    e8885e3e:	e55d                	bnez	a0,e8885eec <lwip_select+0x1c0>
            msectimeout = 0;
    e8885e40:	4581                	li	a1,0
          if (timeout == 0) {
    e8885e42:	020c0363          	beqz	s8,e8885e68 <lwip_select+0x13c>
            long msecs_long = ((timeout->tv_sec * 1000) + ((timeout->tv_usec + 500) / 1000));
    e8885e46:	008c3783          	ld	a5,8(s8)
    e8885e4a:	3e800713          	li	a4,1000
    e8885e4e:	000c3683          	ld	a3,0(s8)
    e8885e52:	1f478793          	addi	a5,a5,500
    e8885e56:	02e7c7b3          	div	a5,a5,a4
              msectimeout = 1;
    e8885e5a:	4585                	li	a1,1
            long msecs_long = ((timeout->tv_sec * 1000) + ((timeout->tv_usec + 500) / 1000));
    e8885e5c:	20d7178b          	mula	a5,a4,a3
            if (msecs_long <= 0) {
    e8885e60:	00f05463          	blez	a5,e8885e68 <lwip_select+0x13c>
              msectimeout = (u32_t)msecs_long;
    e8885e64:	0007859b          	sext.w	a1,a5
          waitres = sys_arch_sem_wait(SELECT_SEM_PTR(API_SELECT_CB_VAR_REF(select_cb).sem), msectimeout);
    e8885e68:	10a8                	addi	a0,sp,104
    e8885e6a:	529110ef          	jal	ra,e8897b92 <sys_arch_sem_wait>
    e8885e6e:	00050b9b          	sext.w	s7,a0
    e8885e72:	8ad2                	mv	s5,s4
    e8885e74:	a8a5                	j	e8885eec <lwip_select+0x1c0>
        if ((readset && FD_ISSET(i, readset)) ||
    e8885e76:	00098c63          	beqz	s3,e8885e8e <lwip_select+0x162>
    e8885e7a:	403ad793          	srai	a5,s5,0x3
    e8885e7e:	80f9c78b          	lrbu	a5,s3,a5,0
    e8885e82:	007af713          	andi	a4,s5,7
    e8885e86:	40e7d7bb          	sraw	a5,a5,a4
    e8885e8a:	8b85                	andi	a5,a5,1
    e8885e8c:	eb85                	bnez	a5,e8885ebc <lwip_select+0x190>
    e8885e8e:	00090c63          	beqz	s2,e8885ea6 <lwip_select+0x17a>
            (writeset && FD_ISSET(i, writeset)) ||
    e8885e92:	403ad793          	srai	a5,s5,0x3
    e8885e96:	80f9478b          	lrbu	a5,s2,a5,0
    e8885e9a:	007af713          	andi	a4,s5,7
    e8885e9e:	40e7d7bb          	sraw	a5,a5,a4
    e8885ea2:	8b85                	andi	a5,a5,1
    e8885ea4:	ef81                	bnez	a5,e8885ebc <lwip_select+0x190>
    e8885ea6:	cce1                	beqz	s1,e8885f7e <lwip_select+0x252>
            (exceptset && FD_ISSET(i, exceptset))) {
    e8885ea8:	403ad793          	srai	a5,s5,0x3
    e8885eac:	80f4c78b          	lrbu	a5,s1,a5,0
    e8885eb0:	007af713          	andi	a4,s5,7
    e8885eb4:	40e7d7bb          	sraw	a5,a5,a4
    e8885eb8:	8b85                	andi	a5,a5,1
    e8885eba:	c3f1                	beqz	a5,e8885f7e <lwip_select+0x252>
          sock = tryget_socket_unconn_locked(i);
    e8885ebc:	8556                	mv	a0,s5
    e8885ebe:	990fe0ef          	jal	ra,e888404e <tryget_socket_unconn_locked>
          if (sock != NULL) {
    e8885ec2:	c161                	beqz	a0,e8885f82 <lwip_select+0x256>
            sock->select_waiting++;
    e8885ec4:	01654783          	lbu	a5,22(a0)
    e8885ec8:	2785                	addiw	a5,a5,1
    e8885eca:	0ff7f793          	andi	a5,a5,255
    e8885ece:	00f50b23          	sb	a5,22(a0)
            if (sock->select_waiting == 0) {
    e8885ed2:	e7c5                	bnez	a5,e8885f7a <lwip_select+0x24e>
              sock->select_waiting--;
    e8885ed4:	57fd                	li	a5,-1
    e8885ed6:	00f50b23          	sb	a5,22(a0)
              done_socket(sock);
    e8885eda:	9d1fe0ef          	jal	ra,e88848aa <done_socket>
              set_errno(EBUSY);
    e8885ede:	47c1                	li	a5,16
            set_errno(EBADF);
    e8885ee0:	0005e717          	auipc	a4,0x5e
    e8885ee4:	74f72423          	sw	a5,1864(a4) # e88e4628 <lwip_errno>
            nready = -1;
    e8885ee8:	5b7d                	li	s6,-1
  u32_t waitres = 0;
    e8885eea:	4b81                	li	s7,0
            LWIP_ASSERT("sock->select_waiting > 0", sock->select_waiting > 0);
    e8885eec:	6c05                	lui	s8,0x1
    e8885eee:	00049c97          	auipc	s9,0x49
    e8885ef2:	622c8c93          	addi	s9,s9,1570 # e88cf510 <err_to_errno_table+0x438>
    e8885ef6:	83cc0c13          	addi	s8,s8,-1988 # 83c <memcmp-0xe87ff7c4>
    e8885efa:	00049d17          	auipc	s10,0x49
    e8885efe:	34ed0d13          	addi	s10,s10,846 # e88cf248 <err_to_errno_table+0x170>
    e8885f02:	00049d97          	auipc	s11,0x49
    e8885f06:	1aed8d93          	addi	s11,s11,430 # e88cf0b0 <kSinTable1024+0x900>
      for (i = LWIP_SOCKET_OFFSET; i < maxfdp2; i++) {
    e8885f0a:	07541e63          	bne	s0,s5,e8885f86 <lwip_select+0x25a>
      lwip_unlink_select_cb(&API_SELECT_CB_VAR_REF(select_cb));
    e8885f0e:	1808                	addi	a0,sp,48
    e8885f10:	9fcfe0ef          	jal	ra,e888410c <lwip_unlink_select_cb>
      sys_sem_free(&API_SELECT_CB_VAR_REF(select_cb).sem);
    e8885f14:	10a8                	addi	a0,sp,104
    e8885f16:	449110ef          	jal	ra,e8897b5e <sys_sem_free>
      if (nready < 0) {
    e8885f1a:	ec0b41e3          	bltz	s6,e8885ddc <lwip_select+0xb0>
      if (waitres == SYS_ARCH_TIMEOUT) {
    e8885f1e:	57fd                	li	a5,-1
    e8885f20:	00fb8d63          	beq	s7,a5,e8885f3a <lwip_select+0x20e>
        nready = lwip_selscan(maxfdp1, readset, writeset, exceptset, &lreadset, &lwriteset, &lexceptset);
    e8885f24:	02010813          	addi	a6,sp,32
    e8885f28:	083c                	addi	a5,sp,24
    e8885f2a:	0818                	addi	a4,sp,16
    e8885f2c:	86a6                	mv	a3,s1
    e8885f2e:	864a                	mv	a2,s2
    e8885f30:	85ce                	mv	a1,s3
    e8885f32:	8552                	mv	a0,s4
    e8885f34:	a77fe0ef          	jal	ra,e88849aa <lwip_selscan>
    e8885f38:	8b2a                	mv	s6,a0
        LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_select: nready=%d\n", nready));
    e8885f3a:	845a                	mv	s0,s6
  lwip_select_dec_sockets_used(maxfdp1, &used_sockets);
    e8885f3c:	102c                	addi	a1,sp,40
    e8885f3e:	8552                	mv	a0,s4
    e8885f40:	c6bfe0ef          	jal	ra,e8884baa <lwip_select_dec_sockets_used>
  if (readset) {
    e8885f44:	00098963          	beqz	s3,e8885f56 <lwip_select+0x22a>
    *readset = lreadset;
    e8885f48:	47c2                	lw	a5,16(sp)
    e8885f4a:	00f9a023          	sw	a5,0(s3)
    e8885f4e:	01312783          	lw	a5,19(sp)
    e8885f52:	00f9a1a3          	sw	a5,3(s3)
  if (writeset) {
    e8885f56:	00090963          	beqz	s2,e8885f68 <lwip_select+0x23c>
    *writeset = lwriteset;
    e8885f5a:	47e2                	lw	a5,24(sp)
    e8885f5c:	00f92023          	sw	a5,0(s2)
    e8885f60:	01b12783          	lw	a5,27(sp)
    e8885f64:	00f921a3          	sw	a5,3(s2)
  if (exceptset) {
    e8885f68:	de048ae3          	beqz	s1,e8885d5c <lwip_select+0x30>
    *exceptset = lexceptset;
    e8885f6c:	5782                	lw	a5,32(sp)
    e8885f6e:	c09c                	sw	a5,0(s1)
    e8885f70:	02312783          	lw	a5,35(sp)
    e8885f74:	00f4a1a3          	sw	a5,3(s1)
    e8885f78:	b3d5                	j	e8885d5c <lwip_select+0x30>
            done_socket(sock);
    e8885f7a:	931fe0ef          	jal	ra,e88848aa <done_socket>
      for (i = LWIP_SOCKET_OFFSET; i < maxfdp1; i++) {
    e8885f7e:	2a85                	addiw	s5,s5,1
    e8885f80:	b54d                	j	e8885e22 <lwip_select+0xf6>
            set_errno(EBADF);
    e8885f82:	47a5                	li	a5,9
    e8885f84:	bfb1                	j	e8885ee0 <lwip_select+0x1b4>
        if ((readset && FD_ISSET(i, readset)) ||
    e8885f86:	00098c63          	beqz	s3,e8885f9e <lwip_select+0x272>
    e8885f8a:	4034579b          	sraiw	a5,s0,0x3
    e8885f8e:	80f9c78b          	lrbu	a5,s3,a5,0
    e8885f92:	00747713          	andi	a4,s0,7
    e8885f96:	40e7d7bb          	sraw	a5,a5,a4
    e8885f9a:	8b85                	andi	a5,a5,1
    e8885f9c:	eb85                	bnez	a5,e8885fcc <lwip_select+0x2a0>
    e8885f9e:	00090c63          	beqz	s2,e8885fb6 <lwip_select+0x28a>
            (writeset && FD_ISSET(i, writeset)) ||
    e8885fa2:	4034579b          	sraiw	a5,s0,0x3
    e8885fa6:	80f9478b          	lrbu	a5,s2,a5,0
    e8885faa:	00747713          	andi	a4,s0,7
    e8885fae:	40e7d7bb          	sraw	a5,a5,a4
    e8885fb2:	8b85                	andi	a5,a5,1
    e8885fb4:	ef81                	bnez	a5,e8885fcc <lwip_select+0x2a0>
    e8885fb6:	c8b1                	beqz	s1,e888600a <lwip_select+0x2de>
            (exceptset && FD_ISSET(i, exceptset))) {
    e8885fb8:	4034579b          	sraiw	a5,s0,0x3
    e8885fbc:	80f4c78b          	lrbu	a5,s1,a5,0
    e8885fc0:	00747713          	andi	a4,s0,7
    e8885fc4:	40e7d7bb          	sraw	a5,a5,a4
    e8885fc8:	8b85                	andi	a5,a5,1
    e8885fca:	c3a1                	beqz	a5,e888600a <lwip_select+0x2de>
          sock = tryget_socket_unconn_locked(i);
    e8885fcc:	8522                	mv	a0,s0
    e8885fce:	880fe0ef          	jal	ra,e888404e <tryget_socket_unconn_locked>
    e8885fd2:	87aa                	mv	a5,a0
          if (sock != NULL) {
    e8885fd4:	cd0d                	beqz	a0,e888600e <lwip_select+0x2e2>
            LWIP_ASSERT("sock->select_waiting > 0", sock->select_waiting > 0);
    e8885fd6:	01654703          	lbu	a4,22(a0)
    e8885fda:	ef19                	bnez	a4,e8885ff8 <lwip_select+0x2cc>
    e8885fdc:	e42a                	sd	a0,8(sp)
    e8885fde:	02f00593          	li	a1,47
    e8885fe2:	8566                	mv	a0,s9
    e8885fe4:	b94f60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8885fe8:	00150693          	addi	a3,a0,1
    e8885fec:	8662                	mv	a2,s8
    e8885fee:	85ea                	mv	a1,s10
    e8885ff0:	856e                	mv	a0,s11
    e8885ff2:	ad4f60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8885ff6:	67a2                	ld	a5,8(sp)
            if (sock->select_waiting > 0) {
    e8885ff8:	0167c703          	lbu	a4,22(a5)
    e8885ffc:	c701                	beqz	a4,e8886004 <lwip_select+0x2d8>
              sock->select_waiting--;
    e8885ffe:	377d                	addiw	a4,a4,-1
    e8886000:	00e78b23          	sb	a4,22(a5)
            done_socket(sock);
    e8886004:	853e                	mv	a0,a5
    e8886006:	8a5fe0ef          	jal	ra,e88848aa <done_socket>
      for (i = LWIP_SOCKET_OFFSET; i < maxfdp2; i++) {
    e888600a:	2405                	addiw	s0,s0,1
    e888600c:	bdfd                	j	e8885f0a <lwip_select+0x1de>
            set_errno(EBADF);
    e888600e:	0005e797          	auipc	a5,0x5e
    e8886012:	61a78793          	addi	a5,a5,1562 # e88e4628 <lwip_errno>
    e8886016:	4725                	li	a4,9
    e8886018:	c398                	sw	a4,0(a5)
            nready = -1;
    e888601a:	5b7d                	li	s6,-1
    e888601c:	b7fd                	j	e888600a <lwip_select+0x2de>

00000000e888601e <lwip_shutdown>:
{
    e888601e:	7179                	addi	sp,sp,-48
    e8886020:	f406                	sd	ra,40(sp)
    e8886022:	ec22                	sd	s0,24(sp)
    e8886024:	f026                	sd	s1,32(sp)
    e8886026:	e42e                	sd	a1,8(sp)
  sock = get_socket(s);
    e8886028:	969fe0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e888602c:	c505                	beqz	a0,e8886054 <lwip_shutdown+0x36>
  if (sock->conn != NULL) {
    e888602e:	611c                	ld	a5,0(a0)
    e8886030:	84aa                	mv	s1,a0
    e8886032:	c39d                	beqz	a5,e8886058 <lwip_shutdown+0x3a>
    if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) {
    e8886034:	0007c703          	lbu	a4,0(a5)
    e8886038:	46c1                	li	a3,16
    e888603a:	65a2                	ld	a1,8(sp)
    e888603c:	0f077713          	andi	a4,a4,240
    e8886040:	00d70f63          	beq	a4,a3,e888605e <lwip_shutdown+0x40>
      sock_set_errno(sock, EOPNOTSUPP);
    e8886044:	05f00793          	li	a5,95
    sock_set_errno(sock, EINVAL);
    e8886048:	0005e717          	auipc	a4,0x5e
    e888604c:	5ef72023          	sw	a5,1504(a4) # e88e4628 <lwip_errno>
    done_socket(sock);
    e8886050:	85bfe0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e8886054:	557d                	li	a0,-1
    e8886056:	a0a9                	j	e88860a0 <lwip_shutdown+0x82>
    sock_set_errno(sock, ENOTCONN);
    e8886058:	08000793          	li	a5,128
    e888605c:	b7f5                	j	e8886048 <lwip_shutdown+0x2a>
  if (how == SHUT_RD) {
    e888605e:	c991                	beqz	a1,e8886072 <lwip_shutdown+0x54>
  } else if (how == SHUT_WR) {
    e8886060:	4705                	li	a4,1
    e8886062:	04e58463          	beq	a1,a4,e88860aa <lwip_shutdown+0x8c>
  } else if (how == SHUT_RDWR) {
    e8886066:	4689                	li	a3,2
    shut_tx = 1;
    e8886068:	4605                	li	a2,1
  } else if (how == SHUT_RDWR) {
    e888606a:	00d58663          	beq	a1,a3,e8886076 <lwip_shutdown+0x58>
    sock_set_errno(sock, EINVAL);
    e888606e:	47d9                	li	a5,22
    e8886070:	bfe1                	j	e8886048 <lwip_shutdown+0x2a>
  u8_t shut_rx = 0, shut_tx = 0;
    e8886072:	4601                	li	a2,0
    shut_rx = 1;
    e8886074:	4705                	li	a4,1
  err = netconn_shutdown(sock->conn, shut_rx, shut_tx);
    e8886076:	85ba                	mv	a1,a4
    e8886078:	853e                	mv	a0,a5
    e888607a:	7a8120ef          	jal	ra,e8898822 <netconn_shutdown>
    e888607e:	842a                	mv	s0,a0
  sock_set_errno(sock, err_to_errno(err));
    e8886080:	dbdfd0ef          	jal	ra,e8883e3c <err_to_errno>
    e8886084:	c509                	beqz	a0,e888608e <lwip_shutdown+0x70>
    e8886086:	0005e797          	auipc	a5,0x5e
    e888608a:	5aa7a123          	sw	a0,1442(a5) # e88e4628 <lwip_errno>
  done_socket(sock);
    e888608e:	8526                	mv	a0,s1
    e8886090:	81bfe0ef          	jal	ra,e88848aa <done_socket>
  return (err == ERR_OK ? 0 : -1);
    e8886094:	0004051b          	sext.w	a0,s0
    e8886098:	00a03533          	snez	a0,a0
    e888609c:	40a00533          	neg	a0,a0
}
    e88860a0:	70a2                	ld	ra,40(sp)
    e88860a2:	6462                	ld	s0,24(sp)
    e88860a4:	7482                	ld	s1,32(sp)
    e88860a6:	6145                	addi	sp,sp,48
    e88860a8:	8082                	ret
    shut_tx = 1;
    e88860aa:	4605                	li	a2,1
  u8_t shut_rx = 0, shut_tx = 0;
    e88860ac:	4701                	li	a4,0
    e88860ae:	b7e1                	j	e8886076 <lwip_shutdown+0x58>

00000000e88860b0 <lwip_getpeername>:
  return lwip_getaddrname(s, name, namelen, 0);
    e88860b0:	4681                	li	a3,0
    e88860b2:	b53fe06f          	j	e8884c04 <lwip_getaddrname>

00000000e88860b6 <lwip_getsockname>:
  return lwip_getaddrname(s, name, namelen, 1);
    e88860b6:	4685                	li	a3,1
    e88860b8:	b4dfe06f          	j	e8884c04 <lwip_getaddrname>

00000000e88860bc <lwip_getsockopt>:
{
    e88860bc:	7139                	addi	sp,sp,-64
    e88860be:	e422                	sd	s0,8(sp)
    e88860c0:	e826                	sd	s1,16(sp)
    e88860c2:	ec4a                	sd	s2,24(sp)
    e88860c4:	f04e                	sd	s3,32(sp)
    e88860c6:	f452                	sd	s4,40(sp)
    e88860c8:	fc06                	sd	ra,56(sp)
    e88860ca:	f856                	sd	s5,48(sp)
    e88860cc:	84aa                	mv	s1,a0
    e88860ce:	842e                	mv	s0,a1
    e88860d0:	89b2                	mv	s3,a2
    e88860d2:	8936                	mv	s2,a3
    e88860d4:	8a3a                	mv	s4,a4
  struct lwip_sock *sock = get_socket(s);
    e88860d6:	8bbfe0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e88860da:	cd11                	beqz	a0,e88860f6 <lwip_getsockopt+0x3a>
    e88860dc:	8aaa                	mv	s5,a0
  if ((NULL == optval) || (NULL == optlen)) {
    e88860de:	00090463          	beqz	s2,e88860e6 <lwip_getsockopt+0x2a>
    e88860e2:	000a1c63          	bnez	s4,e88860fa <lwip_getsockopt+0x3e>
    sock_set_errno(sock, EFAULT);
    e88860e6:	47b9                	li	a5,14
    done_socket(sock);
    e88860e8:	8556                	mv	a0,s5
    sock_set_errno(sock, EFAULT);
    e88860ea:	0005e717          	auipc	a4,0x5e
    e88860ee:	52f72f23          	sw	a5,1342(a4) # e88e4628 <lwip_errno>
    done_socket(sock);
    e88860f2:	fb8fe0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e88860f6:	557d                	li	a0,-1
    e88860f8:	a46d                	j	e88863a2 <lwip_getsockopt+0x2e6>
  LOCK_TCPIP_CORE();
    e88860fa:	0005f517          	auipc	a0,0x5f
    e88860fe:	4de50513          	addi	a0,a0,1246 # e88e55d8 <lock_tcpip_core>
    e8886102:	321110ef          	jal	ra,e8897c22 <sys_mutex_lock>
  struct lwip_sock *sock = tryget_socket(s);
    e8886106:	8526                	mv	a0,s1
    e8886108:	841fe0ef          	jal	ra,e8884948 <tryget_socket>
    e888610c:	84aa                	mv	s1,a0
  if (!sock) {
    e888610e:	34050363          	beqz	a0,e8886454 <lwip_getsockopt+0x398>
  switch (level) {
    e8886112:	02900793          	li	a5,41
    e8886116:	2cf40e63          	beq	s0,a5,e88863f2 <lwip_getsockopt+0x336>
    e888611a:	0087ca63          	blt	a5,s0,e888612e <lwip_getsockopt+0x72>
    e888611e:	16040a63          	beqz	s0,e8886292 <lwip_getsockopt+0x1d6>
    e8886122:	4799                	li	a5,6
    e8886124:	24f40563          	beq	s0,a5,e888636e <lwip_getsockopt+0x2b2>
      err = ENOPROTOOPT;
    e8886128:	06d00413          	li	s0,109
    e888612c:	a245                	j	e88862cc <lwip_getsockopt+0x210>
  switch (level) {
    e888612e:	0ff00793          	li	a5,255
    e8886132:	2ef40163          	beq	s0,a5,e8886414 <lwip_getsockopt+0x358>
    e8886136:	6785                	lui	a5,0x1
    e8886138:	17fd                	addi	a5,a5,-1
    e888613a:	fef417e3          	bne	s0,a5,e8886128 <lwip_getsockopt+0x6c>
      switch (optname) {
    e888613e:	02000793          	li	a5,32
    e8886142:	0cf98063          	beq	s3,a5,e8886202 <lwip_getsockopt+0x146>
    e8886146:	0337c263          	blt	a5,s3,e888616a <lwip_getsockopt+0xae>
    e888614a:	4791                	li	a5,4
    e888614c:	0af98b63          	beq	s3,a5,e8886202 <lwip_getsockopt+0x146>
    e8886150:	47a1                	li	a5,8
    e8886152:	0af98863          	beq	s3,a5,e8886202 <lwip_getsockopt+0x146>
    e8886156:	4789                	li	a5,2
    e8886158:	fcf998e3          	bne	s3,a5,e8886128 <lwip_getsockopt+0x6c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int);
    e888615c:	000a2703          	lw	a4,0(s4)
    e8886160:	478d                	li	a5,3
    e8886162:	06e7e363          	bltu	a5,a4,e88861c8 <lwip_getsockopt+0x10c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_RAW);
    e8886166:	8526                	mv	a0,s1
    e8886168:	ac01                	j	e8886378 <lwip_getsockopt+0x2bc>
    e888616a:	6785                	lui	a5,0x1
    e888616c:	00778713          	addi	a4,a5,7 # 1007 <memcmp-0xe87feff9>
    e8886170:	10e98663          	beq	s3,a4,e888627c <lwip_getsockopt+0x1c0>
    e8886174:	01374e63          	blt	a4,s3,e8886190 <lwip_getsockopt+0xd4>
    e8886178:	0789                	addi	a5,a5,2
    e888617a:	faf997e3          	bne	s3,a5,e8886128 <lwip_getsockopt+0x6c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, int);
    e888617e:	000a2703          	lw	a4,0(s4)
    e8886182:	478d                	li	a5,3
    e8886184:	fee7f1e3          	bgeu	a5,a4,e8886166 <lwip_getsockopt+0xaa>
    e8886188:	611c                	ld	a5,0(a0)
    e888618a:	dff1                	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
          *(int *)optval = netconn_get_recvbufsize(sock->conn);
    e888618c:	5f9c                	lw	a5,56(a5)
    e888618e:	a09d                	j	e88861f4 <lwip_getsockopt+0x138>
    e8886190:	00878713          	addi	a4,a5,8
    e8886194:	0ae98463          	beq	s3,a4,e888623c <lwip_getsockopt+0x180>
    e8886198:	07a9                	addi	a5,a5,10
    e888619a:	f8f997e3          	bne	s3,a5,e8886128 <lwip_getsockopt+0x6c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_UDP);
    e888619e:	000a2703          	lw	a4,0(s4)
    e88861a2:	478d                	li	a5,3
    e88861a4:	fce7f1e3          	bgeu	a5,a4,e8886166 <lwip_getsockopt+0xaa>
    e88861a8:	611c                	ld	a5,0(a0)
    e88861aa:	dfd5                	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e88861ac:	6798                	ld	a4,8(a5)
    e88861ae:	df45                	beqz	a4,e8886166 <lwip_getsockopt+0xaa>
    e88861b0:	0007c783          	lbu	a5,0(a5)
    e88861b4:	02000693          	li	a3,32
    e88861b8:	0f07f793          	andi	a5,a5,240
    e88861bc:	02d79163          	bne	a5,a3,e88861de <lwip_getsockopt+0x122>
          *(int *)optval = udp_is_flag_set(sock->conn->pcb.udp, UDP_FLAGS_NOCHKSUM) ? 1 : 0;
    e88861c0:	04074783          	lbu	a5,64(a4)
    e88861c4:	8b85                	andi	a5,a5,1
    e88861c6:	a03d                	j	e88861f4 <lwip_getsockopt+0x138>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int);
    e88861c8:	611c                	ld	a5,0(a0)
    e88861ca:	dfd1                	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e88861cc:	6798                	ld	a4,8(a5)
    e88861ce:	df41                	beqz	a4,e8886166 <lwip_getsockopt+0xaa>
          if (NETCONNTYPE_GROUP(sock->conn->type) != NETCONN_TCP) {
    e88861d0:	0007c783          	lbu	a5,0(a5)
    e88861d4:	46c1                	li	a3,16
    e88861d6:	0f07f793          	andi	a5,a5,240
    e88861da:	00d78863          	beq	a5,a3,e88861ea <lwip_getsockopt+0x12e>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_RAW);
    e88861de:	8526                	mv	a0,s1
    e88861e0:	ecafe0ef          	jal	ra,e88848aa <done_socket>
    e88861e4:	06d00413          	li	s0,109
    e88861e8:	aa59                	j	e888637e <lwip_getsockopt+0x2c2>
          if ((sock->conn->pcb.tcp != NULL) && (sock->conn->pcb.tcp->state == LISTEN)) {
    e88861ea:	04874783          	lbu	a5,72(a4)
    e88861ee:	4705                	li	a4,1
    e88861f0:	00e79563          	bne	a5,a4,e88861fa <lwip_getsockopt+0x13e>
            *(int *)optval = sock->conn->pcb.raw->chksum_offset;
    e88861f4:	00f92023          	sw	a5,0(s2)
    e88861f8:	a019                	j	e88861fe <lwip_getsockopt+0x142>
            *(int *)optval = 0;
    e88861fa:	00092023          	sw	zero,0(s2)
  int err = 0;
    e88861fe:	4401                	li	s0,0
    e8886200:	a0f1                	j	e88862cc <lwip_getsockopt+0x210>
          if ((optname == SO_BROADCAST) &&
    e8886202:	02000793          	li	a5,32
    e8886206:	00f99963          	bne	s3,a5,e8886218 <lwip_getsockopt+0x15c>
              (NETCONNTYPE_GROUP(sock->conn->type) != NETCONN_UDP)) {
    e888620a:	609c                	ld	a5,0(s1)
          if ((optname == SO_BROADCAST) &&
    e888620c:	0007c783          	lbu	a5,0(a5)
    e8886210:	0f07f793          	andi	a5,a5,240
    e8886214:	fd3795e3          	bne	a5,s3,e88861de <lwip_getsockopt+0x122>
          optname = lwip_sockopt_to_ipopt(optname);
    e8886218:	854e                	mv	a0,s3
    e888621a:	a2afe0ef          	jal	ra,e8884444 <lwip_sockopt_to_ipopt>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int);
    e888621e:	000a2703          	lw	a4,0(s4)
    e8886222:	478d                	li	a5,3
    e8886224:	f4e7f1e3          	bgeu	a5,a4,e8886166 <lwip_getsockopt+0xaa>
    e8886228:	609c                	ld	a5,0(s1)
    e888622a:	df95                	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e888622c:	679c                	ld	a5,8(a5)
    e888622e:	df85                	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
          *(int *)optval = ip_get_option(sock->conn->pcb.ip, optname);
    e8886230:	0317c783          	lbu	a5,49(a5)
    e8886234:	8d7d                	and	a0,a0,a5
          *(int *)optval = err_to_errno(netconn_err(sock->conn));
    e8886236:	00a92023          	sw	a0,0(s2)
          break;
    e888623a:	b7d1                	j	e88861fe <lwip_getsockopt+0x142>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, int);
    e888623c:	000a2783          	lw	a5,0(s4)
    e8886240:	468d                	li	a3,3
    e8886242:	f2f6f2e3          	bgeu	a3,a5,e8886166 <lwip_getsockopt+0xaa>
    e8886246:	611c                	ld	a5,0(a0)
    e8886248:	df99                	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
          switch (NETCONNTYPE_GROUP(netconn_type(sock->conn))) {
    e888624a:	0007c703          	lbu	a4,0(a5)
    e888624e:	02000613          	li	a2,32
    e8886252:	0f077793          	andi	a5,a4,240
    e8886256:	00c78e63          	beq	a5,a2,e8886272 <lwip_getsockopt+0x1b6>
    e888625a:	04000613          	li	a2,64
    e888625e:	00c78763          	beq	a5,a2,e888626c <lwip_getsockopt+0x1b0>
    e8886262:	46c1                	li	a3,16
    e8886264:	00d79963          	bne	a5,a3,e8886276 <lwip_getsockopt+0x1ba>
              *(int *)optval = SOCK_STREAM;
    e8886268:	4785                	li	a5,1
    e888626a:	b769                	j	e88861f4 <lwip_getsockopt+0x138>
              *(int *)optval = SOCK_RAW;
    e888626c:	00d92023          	sw	a3,0(s2)
              break;
    e8886270:	b779                	j	e88861fe <lwip_getsockopt+0x142>
              *(int *)optval = SOCK_DGRAM;
    e8886272:	4789                	li	a5,2
    e8886274:	b741                	j	e88861f4 <lwip_getsockopt+0x138>
          switch (NETCONNTYPE_GROUP(netconn_type(sock->conn))) {
    e8886276:	00e92023          	sw	a4,0(s2)
    e888627a:	b751                	j	e88861fe <lwip_getsockopt+0x142>
          LWIP_SOCKOPT_CHECK_OPTLEN(sock, *optlen, int);
    e888627c:	000a2703          	lw	a4,0(s4)
    e8886280:	478d                	li	a5,3
    e8886282:	eee7f2e3          	bgeu	a5,a4,e8886166 <lwip_getsockopt+0xaa>
          *(int *)optval = err_to_errno(netconn_err(sock->conn));
    e8886286:	6108                	ld	a0,0(a0)
    e8886288:	588120ef          	jal	ra,e8898810 <netconn_err>
    e888628c:	bb1fd0ef          	jal	ra,e8883e3c <err_to_errno>
    e8886290:	b75d                	j	e8886236 <lwip_getsockopt+0x17a>
      switch (optname) {
    e8886292:	fff9871b          	addiw	a4,s3,-1
    e8886296:	4799                	li	a5,6
    e8886298:	89ba                	mv	s3,a4
    e888629a:	e8e7e7e3          	bltu	a5,a4,e8886128 <lwip_getsockopt+0x6c>
    e888629e:	00049717          	auipc	a4,0x49
    e88862a2:	e9270713          	addi	a4,a4,-366 # e88cf130 <err_to_errno_table+0x58>
    e88862a6:	5537478b          	lurw	a5,a4,s3,2
    e88862aa:	97ba                	add	a5,a5,a4
    e88862ac:	8782                	jr	a5
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int);
    e88862ae:	000a2703          	lw	a4,0(s4)
    e88862b2:	478d                	li	a5,3
    e88862b4:	eae7f9e3          	bgeu	a5,a4,e8886166 <lwip_getsockopt+0xaa>
    e88862b8:	611c                	ld	a5,0(a0)
    e88862ba:	ea0786e3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e88862be:	679c                	ld	a5,8(a5)
    e88862c0:	ea0783e3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
          *(int *)optval = sock->conn->pcb.ip->ttl;
    e88862c4:	0337c783          	lbu	a5,51(a5)
          inet_addr_from_ip4addr((struct in_addr *)optval, udp_get_multicast_netif_addr(sock->conn->pcb.udp));
    e88862c8:	00f92023          	sw	a5,0(s2)
  done_socket(sock);
    e88862cc:	8526                	mv	a0,s1
    e88862ce:	ddcfe0ef          	jal	ra,e88848aa <done_socket>
  return err;
    e88862d2:	a075                	j	e888637e <lwip_getsockopt+0x2c2>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, int);
    e88862d4:	000a2703          	lw	a4,0(s4)
    e88862d8:	478d                	li	a5,3
    e88862da:	e8e7f6e3          	bgeu	a5,a4,e8886166 <lwip_getsockopt+0xaa>
    e88862de:	611c                	ld	a5,0(a0)
    e88862e0:	e80783e3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e88862e4:	679c                	ld	a5,8(a5)
    e88862e6:	e80780e3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
          *(int *)optval = sock->conn->pcb.ip->tos;
    e88862ea:	0327c783          	lbu	a5,50(a5)
    e88862ee:	bfe9                	j	e88862c8 <lwip_getsockopt+0x20c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, u8_t);
    e88862f0:	000a2783          	lw	a5,0(s4)
    e88862f4:	e60789e3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e88862f8:	611c                	ld	a5,0(a0)
    e88862fa:	e60786e3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e88862fe:	6798                	ld	a4,8(a5)
    e8886300:	e60703e3          	beqz	a4,e8886166 <lwip_getsockopt+0xaa>
          if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) {
    e8886304:	0007c783          	lbu	a5,0(a5)
    e8886308:	02000693          	li	a3,32
    e888630c:	0f07f793          	andi	a5,a5,240
    e8886310:	ecd797e3          	bne	a5,a3,e88861de <lwip_getsockopt+0x122>
          *(u8_t *)optval = udp_get_multicast_ttl(sock->conn->pcb.udp);
    e8886314:	04d74783          	lbu	a5,77(a4)
            *(u8_t *)optval = 1;
    e8886318:	00f90023          	sb	a5,0(s2)
    e888631c:	bf45                	j	e88862cc <lwip_getsockopt+0x210>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, struct in_addr);
    e888631e:	000a2703          	lw	a4,0(s4)
    e8886322:	478d                	li	a5,3
    e8886324:	e4e7f1e3          	bgeu	a5,a4,e8886166 <lwip_getsockopt+0xaa>
    e8886328:	611c                	ld	a5,0(a0)
    e888632a:	e2078ee3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e888632e:	6798                	ld	a4,8(a5)
    e8886330:	e2070be3          	beqz	a4,e8886166 <lwip_getsockopt+0xaa>
          if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) {
    e8886334:	0007c783          	lbu	a5,0(a5)
    e8886338:	02000693          	li	a3,32
    e888633c:	0f07f793          	andi	a5,a5,240
    e8886340:	e8d79fe3          	bne	a5,a3,e88861de <lwip_getsockopt+0x122>
          inet_addr_from_ip4addr((struct in_addr *)optval, udp_get_multicast_netif_addr(sock->conn->pcb.udp));
    e8886344:	473c                	lw	a5,72(a4)
    e8886346:	b749                	j	e88862c8 <lwip_getsockopt+0x20c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, *optlen, u8_t);
    e8886348:	000a2783          	lw	a5,0(s4)
    e888634c:	e0078de3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e8886350:	611c                	ld	a5,0(a0)
    e8886352:	e0078ae3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e8886356:	679c                	ld	a5,8(a5)
    e8886358:	e00787e3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
          if ((sock->conn->pcb.udp->flags & UDP_FLAGS_MULTICAST_LOOP) != 0) {
    e888635c:	0407c783          	lbu	a5,64(a5)
    e8886360:	8ba1                	andi	a5,a5,8
    e8886362:	c399                	beqz	a5,e8886368 <lwip_getsockopt+0x2ac>
            *(u8_t *)optval = 1;
    e8886364:	4785                	li	a5,1
    e8886366:	bf4d                	j	e8886318 <lwip_getsockopt+0x25c>
            *(u8_t *)optval = 0;
    e8886368:	00090023          	sb	zero,0(s2)
    e888636c:	b785                	j	e88862cc <lwip_getsockopt+0x210>
      LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_TCP);
    e888636e:	000a2703          	lw	a4,0(s4)
    e8886372:	478d                	li	a5,3
    e8886374:	04e7e063          	bltu	a5,a4,e88863b4 <lwip_getsockopt+0x2f8>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_RAW);
    e8886378:	d32fe0ef          	jal	ra,e88848aa <done_socket>
    e888637c:	4459                	li	s0,22
  UNLOCK_TCPIP_CORE();
    e888637e:	0005f517          	auipc	a0,0x5f
    e8886382:	25a50513          	addi	a0,a0,602 # e88e55d8 <lock_tcpip_core>
    e8886386:	0b3110ef          	jal	ra,e8897c38 <sys_mutex_unlock>
  sock_set_errno(sock, err);
    e888638a:	c409                	beqz	s0,e8886394 <lwip_getsockopt+0x2d8>
    e888638c:	0005e797          	auipc	a5,0x5e
    e8886390:	2887ae23          	sw	s0,668(a5) # e88e4628 <lwip_errno>
  done_socket(sock);
    e8886394:	8556                	mv	a0,s5
    e8886396:	d14fe0ef          	jal	ra,e88848aa <done_socket>
  return err ? -1 : 0;
    e888639a:	00803533          	snez	a0,s0
    e888639e:	40a00533          	neg	a0,a0
}
    e88863a2:	70e2                	ld	ra,56(sp)
    e88863a4:	6422                	ld	s0,8(sp)
    e88863a6:	64c2                	ld	s1,16(sp)
    e88863a8:	6962                	ld	s2,24(sp)
    e88863aa:	7982                	ld	s3,32(sp)
    e88863ac:	7a22                	ld	s4,40(sp)
    e88863ae:	7ac2                	ld	s5,48(sp)
    e88863b0:	6121                	addi	sp,sp,64
    e88863b2:	8082                	ret
      LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_TCP);
    e88863b4:	6118                	ld	a4,0(a0)
    e88863b6:	da0708e3          	beqz	a4,e8886166 <lwip_getsockopt+0xaa>
    e88863ba:	671c                	ld	a5,8(a4)
    e88863bc:	da0785e3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e88863c0:	00074703          	lbu	a4,0(a4)
    e88863c4:	46c1                	li	a3,16
    e88863c6:	0f077713          	andi	a4,a4,240
    e88863ca:	e0d71ae3          	bne	a4,a3,e88861de <lwip_getsockopt+0x122>
      if (sock->conn->pcb.tcp->state == LISTEN) {
    e88863ce:	0487c683          	lbu	a3,72(a5)
    e88863d2:	4705                	li	a4,1
    e88863d4:	d8e689e3          	beq	a3,a4,e8886166 <lwip_getsockopt+0xaa>
      switch (optname) {
    e88863d8:	00e98863          	beq	s3,a4,e88863e8 <lwip_getsockopt+0x32c>
    e88863dc:	4709                	li	a4,2
    e88863de:	d4e995e3          	bne	s3,a4,e8886128 <lwip_getsockopt+0x6c>
          *(int *)optval = (int)sock->conn->pcb.tcp->keep_idle;
    e88863e2:	1007a783          	lw	a5,256(a5)
    e88863e6:	b539                	j	e88861f4 <lwip_getsockopt+0x138>
          *(int *)optval = tcp_nagle_disabled(sock->conn->pcb.tcp);
    e88863e8:	04e7d783          	lhu	a5,78(a5)
    e88863ec:	1867b78b          	extu	a5,a5,6,6
    e88863f0:	b511                	j	e88861f4 <lwip_getsockopt+0x138>
      switch (optname) {
    e88863f2:	47ed                	li	a5,27
          err = ENOPROTOOPT;
    e88863f4:	06d00413          	li	s0,109
    e88863f8:	ecf99ae3          	bne	s3,a5,e88862cc <lwip_getsockopt+0x210>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, *optlen, int);
    e88863fc:	000a2703          	lw	a4,0(s4)
    e8886400:	478d                	li	a5,3
    e8886402:	f6e7fbe3          	bgeu	a5,a4,e8886378 <lwip_getsockopt+0x2bc>
    e8886406:	611c                	ld	a5,0(a0)
    e8886408:	dba5                	beqz	a5,e8886378 <lwip_getsockopt+0x2bc>
          *(int *)optval = (netconn_get_ipv6only(sock->conn) ? 1 : 0);
    e888640a:	0407c783          	lbu	a5,64(a5)
    e888640e:	1457b78b          	extu	a5,a5,5,5
    e8886412:	b3cd                	j	e88861f4 <lwip_getsockopt+0x138>
      switch (optname) {
    e8886414:	479d                	li	a5,7
          err = ENOPROTOOPT;
    e8886416:	06d00413          	li	s0,109
    e888641a:	eaf999e3          	bne	s3,a5,e88862cc <lwip_getsockopt+0x210>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, int, NETCONN_RAW);
    e888641e:	000a2703          	lw	a4,0(s4)
    e8886422:	478d                	li	a5,3
    e8886424:	f4e7fae3          	bgeu	a5,a4,e8886378 <lwip_getsockopt+0x2bc>
    e8886428:	6118                	ld	a4,0(a0)
    e888642a:	d2070ee3          	beqz	a4,e8886166 <lwip_getsockopt+0xaa>
    e888642e:	671c                	ld	a5,8(a4)
    e8886430:	d2078be3          	beqz	a5,e8886166 <lwip_getsockopt+0xaa>
    e8886434:	00074703          	lbu	a4,0(a4)
    e8886438:	04000693          	li	a3,64
    e888643c:	0f077713          	andi	a4,a4,240
    e8886440:	d8d71fe3          	bne	a4,a3,e88861de <lwip_getsockopt+0x122>
          if (sock->conn->pcb.raw->chksum_reqd == 0) {
    e8886444:	05a7c703          	lbu	a4,90(a5)
    e8886448:	e319                	bnez	a4,e888644e <lwip_getsockopt+0x392>
            *(int *)optval = -1;
    e888644a:	57fd                	li	a5,-1
    e888644c:	b365                	j	e88861f4 <lwip_getsockopt+0x138>
            *(int *)optval = sock->conn->pcb.raw->chksum_offset;
    e888644e:	0587d783          	lhu	a5,88(a5)
    e8886452:	b34d                	j	e88861f4 <lwip_getsockopt+0x138>
    return EBADF;
    e8886454:	4425                	li	s0,9
    e8886456:	b725                	j	e888637e <lwip_getsockopt+0x2c2>

00000000e8886458 <lwip_setsockopt>:
{
    e8886458:	711d                	addi	sp,sp,-96
    e888645a:	e8a2                	sd	s0,80(sp)
    e888645c:	e0ca                	sd	s2,64(sp)
    e888645e:	fc4e                	sd	s3,56(sp)
    e8886460:	f852                	sd	s4,48(sp)
    e8886462:	f05a                	sd	s6,32(sp)
    e8886464:	ec86                	sd	ra,88(sp)
    e8886466:	e4a6                	sd	s1,72(sp)
    e8886468:	f456                	sd	s5,40(sp)
    e888646a:	8b2a                	mv	s6,a0
    e888646c:	842e                	mv	s0,a1
    e888646e:	89b2                	mv	s3,a2
    e8886470:	8936                	mv	s2,a3
    e8886472:	8a3a                	mv	s4,a4
  struct lwip_sock *sock = get_socket(s);
    e8886474:	d1cfe0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8886478:	c911                	beqz	a0,e888648c <lwip_setsockopt+0x34>
  if (NULL == optval) {
    e888647a:	00091b63          	bnez	s2,e8886490 <lwip_setsockopt+0x38>
    sock_set_errno(sock, EFAULT);
    e888647e:	47b9                	li	a5,14
    e8886480:	0005e717          	auipc	a4,0x5e
    e8886484:	1af72423          	sw	a5,424(a4) # e88e4628 <lwip_errno>
    done_socket(sock);
    e8886488:	c22fe0ef          	jal	ra,e88848aa <done_socket>
    return -1;
    e888648c:	557d                	li	a0,-1
    e888648e:	aa85                	j	e88865fe <lwip_setsockopt+0x1a6>
    e8886490:	8aaa                	mv	s5,a0
  LOCK_TCPIP_CORE();
    e8886492:	0005f517          	auipc	a0,0x5f
    e8886496:	14650513          	addi	a0,a0,326 # e88e55d8 <lock_tcpip_core>
    e888649a:	788110ef          	jal	ra,e8897c22 <sys_mutex_lock>
  struct lwip_sock *sock = tryget_socket(s);
    e888649e:	855a                	mv	a0,s6
    e88864a0:	ca8fe0ef          	jal	ra,e8884948 <tryget_socket>
    e88864a4:	84aa                	mv	s1,a0
  if (!sock) {
    e88864a6:	66050b63          	beqz	a0,e8886b1c <lwip_setsockopt+0x6c4>
  switch (level) {
    e88864aa:	02900793          	li	a5,41
    e88864ae:	42f40c63          	beq	s0,a5,e88868e6 <lwip_setsockopt+0x48e>
    e88864b2:	0087ca63          	blt	a5,s0,e88864c6 <lwip_setsockopt+0x6e>
    e88864b6:	1c040263          	beqz	s0,e888667a <lwip_setsockopt+0x222>
    e88864ba:	4799                	li	a5,6
    e88864bc:	3cf40363          	beq	s0,a5,e8886882 <lwip_setsockopt+0x42a>
      err = ENOPROTOOPT;
    e88864c0:	06d00413          	li	s0,109
    e88864c4:	a845                	j	e8886574 <lwip_setsockopt+0x11c>
  switch (level) {
    e88864c6:	0ff00793          	li	a5,255
    e88864ca:	5ef40963          	beq	s0,a5,e8886abc <lwip_setsockopt+0x664>
    e88864ce:	6785                	lui	a5,0x1
    e88864d0:	fff78713          	addi	a4,a5,-1 # fff <memcmp-0xe87ff001>
    e88864d4:	fee416e3          	bne	s0,a4,e88864c0 <lwip_setsockopt+0x68>
      switch (optname) {
    e88864d8:	02000713          	li	a4,32
    e88864dc:	00e98a63          	beq	s3,a4,e88864f0 <lwip_setsockopt+0x98>
    e88864e0:	03374963          	blt	a4,s3,e8886512 <lwip_setsockopt+0xba>
    e88864e4:	4791                	li	a5,4
    e88864e6:	00f98563          	beq	s3,a5,e88864f0 <lwip_setsockopt+0x98>
    e88864ea:	47a1                	li	a5,8
    e88864ec:	fcf99ae3          	bne	s3,a5,e88864c0 <lwip_setsockopt+0x68>
          if ((optname == SO_BROADCAST) &&
    e88864f0:	02000793          	li	a5,32
    e88864f4:	04f99363          	bne	s3,a5,e888653a <lwip_setsockopt+0xe2>
              (NETCONNTYPE_GROUP(sock->conn->type) != NETCONN_UDP)) {
    e88864f8:	609c                	ld	a5,0(s1)
          if ((optname == SO_BROADCAST) &&
    e88864fa:	0007c783          	lbu	a5,0(a5)
    e88864fe:	0f07f793          	andi	a5,a5,240
    e8886502:	03378c63          	beq	a5,s3,e888653a <lwip_setsockopt+0xe2>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_RAW);
    e8886506:	8526                	mv	a0,s1
    e8886508:	ba2fe0ef          	jal	ra,e88848aa <done_socket>
    e888650c:	06d00413          	li	s0,109
    e8886510:	a0e9                	j	e88865da <lwip_setsockopt+0x182>
    e8886512:	07a9                	addi	a5,a5,10
    e8886514:	06f98463          	beq	s3,a5,e888657c <lwip_setsockopt+0x124>
    e8886518:	6785                	lui	a5,0x1
    e888651a:	00b78713          	addi	a4,a5,11 # 100b <memcmp-0xe87feff5>
    e888651e:	08e98c63          	beq	s3,a4,e88865b6 <lwip_setsockopt+0x15e>
    e8886522:	0789                	addi	a5,a5,2
    e8886524:	f8f99ee3          	bne	s3,a5,e88864c0 <lwip_setsockopt+0x68>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, optlen, int);
    e8886528:	478d                	li	a5,3
    e888652a:	0147fe63          	bgeu	a5,s4,e8886546 <lwip_setsockopt+0xee>
    e888652e:	611c                	ld	a5,0(a0)
    e8886530:	cb99                	beqz	a5,e8886546 <lwip_setsockopt+0xee>
          netconn_set_recvbufsize(sock->conn, *(const int *)optval);
    e8886532:	00092703          	lw	a4,0(s2)
    e8886536:	df98                	sw	a4,56(a5)
    e8886538:	a03d                	j	e8886566 <lwip_setsockopt+0x10e>
          optname = lwip_sockopt_to_ipopt(optname);
    e888653a:	854e                	mv	a0,s3
    e888653c:	f09fd0ef          	jal	ra,e8884444 <lwip_sockopt_to_ipopt>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int);
    e8886540:	478d                	li	a5,3
    e8886542:	0147e463          	bltu	a5,s4,e888654a <lwip_setsockopt+0xf2>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, struct ipv6_mreq, NETCONN_UDP);
    e8886546:	8526                	mv	a0,s1
    e8886548:	a681                	j	e8886888 <lwip_setsockopt+0x430>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int);
    e888654a:	609c                	ld	a5,0(s1)
    e888654c:	dfed                	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e888654e:	679c                	ld	a5,8(a5)
    e8886550:	dbfd                	beqz	a5,e8886546 <lwip_setsockopt+0xee>
          if (*(const int *)optval) {
    e8886552:	00092403          	lw	s0,0(s2)
    e8886556:	03178703          	lb	a4,49(a5)
    e888655a:	1c05250b          	ext	a0,a0,7,0
    e888655e:	c411                	beqz	s0,e888656a <lwip_setsockopt+0x112>
            ip_set_option(sock->conn->pcb.ip, optname);
    e8886560:	8d59                	or	a0,a0,a4
    e8886562:	02a788a3          	sb	a0,49(a5)
  int err = 0;
    e8886566:	4401                	li	s0,0
    e8886568:	a031                	j	e8886574 <lwip_setsockopt+0x11c>
            ip_reset_option(sock->conn->pcb.ip, optname);
    e888656a:	fff54513          	not	a0,a0
    e888656e:	8d79                	and	a0,a0,a4
    e8886570:	02a788a3          	sb	a0,49(a5)
  done_socket(sock);
    e8886574:	8526                	mv	a0,s1
    e8886576:	b34fe0ef          	jal	ra,e88848aa <done_socket>
  return err;
    e888657a:	a085                	j	e88865da <lwip_setsockopt+0x182>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_UDP);
    e888657c:	478d                	li	a5,3
    e888657e:	fd47f4e3          	bgeu	a5,s4,e8886546 <lwip_setsockopt+0xee>
    e8886582:	611c                	ld	a5,0(a0)
    e8886584:	d3e9                	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e8886586:	6798                	ld	a4,8(a5)
    e8886588:	df5d                	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e888658a:	0007c783          	lbu	a5,0(a5)
    e888658e:	02000693          	li	a3,32
    e8886592:	0f07f793          	andi	a5,a5,240
    e8886596:	f6d798e3          	bne	a5,a3,e8886506 <lwip_setsockopt+0xae>
          if (*(const int *)optval) {
    e888659a:	00092403          	lw	s0,0(s2)
    e888659e:	04074783          	lbu	a5,64(a4)
    e88865a2:	c411                	beqz	s0,e88865ae <lwip_setsockopt+0x156>
            udp_set_flags(sock->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);
    e88865a4:	0017e793          	ori	a5,a5,1
            netconn_set_ipv6only(sock->conn, 1);
    e88865a8:	04f70023          	sb	a5,64(a4)
    e88865ac:	bf6d                	j	e8886566 <lwip_setsockopt+0x10e>
            udp_clear_flags(sock->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);
    e88865ae:	9bf9                	andi	a5,a5,-2
            udp_set_flags(sock->conn->pcb.udp, UDP_FLAGS_MULTICAST_LOOP);
    e88865b0:	04f70023          	sb	a5,64(a4)
    e88865b4:	b7c1                	j	e8886574 <lwip_setsockopt+0x11c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN(sock, optlen, struct ifreq);
    e88865b6:	47dd                	li	a5,23
    e88865b8:	f947f7e3          	bgeu	a5,s4,e8886546 <lwip_setsockopt+0xee>
    e88865bc:	611c                	ld	a5,0(a0)
    e88865be:	d7c1                	beqz	a5,e8886546 <lwip_setsockopt+0xee>
          if (iface->ifr_name[0] != 0) {
    e88865c0:	00094783          	lbu	a5,0(s2)
          struct netif *n = NULL;
    e88865c4:	4581                	li	a1,0
          if (iface->ifr_name[0] != 0) {
    e88865c6:	c7b1                	beqz	a5,e8886612 <lwip_setsockopt+0x1ba>
            n = netif_find(iface->ifr_name);
    e88865c8:	854a                	mv	a0,s2
    e88865ca:	2cc080ef          	jal	ra,e888e896 <netif_find>
    e88865ce:	85aa                	mv	a1,a0
            if (n == NULL) {
    e88865d0:	e129                	bnez	a0,e8886612 <lwip_setsockopt+0x1ba>
              done_socket(sock);
    e88865d2:	8526                	mv	a0,s1
    e88865d4:	ad6fe0ef          	jal	ra,e88848aa <done_socket>
              return ENODEV;
    e88865d8:	444d                	li	s0,19
  UNLOCK_TCPIP_CORE();
    e88865da:	0005f517          	auipc	a0,0x5f
    e88865de:	ffe50513          	addi	a0,a0,-2 # e88e55d8 <lock_tcpip_core>
    e88865e2:	656110ef          	jal	ra,e8897c38 <sys_mutex_unlock>
  sock_set_errno(sock, err);
    e88865e6:	c409                	beqz	s0,e88865f0 <lwip_setsockopt+0x198>
    e88865e8:	0005e797          	auipc	a5,0x5e
    e88865ec:	0487a023          	sw	s0,64(a5) # e88e4628 <lwip_errno>
  done_socket(sock);
    e88865f0:	8556                	mv	a0,s5
    e88865f2:	ab8fe0ef          	jal	ra,e88848aa <done_socket>
  return err ? -1 : 0;
    e88865f6:	00803533          	snez	a0,s0
    e88865fa:	40a00533          	neg	a0,a0
}
    e88865fe:	60e6                	ld	ra,88(sp)
    e8886600:	6446                	ld	s0,80(sp)
    e8886602:	64a6                	ld	s1,72(sp)
    e8886604:	6906                	ld	s2,64(sp)
    e8886606:	79e2                	ld	s3,56(sp)
    e8886608:	7a42                	ld	s4,48(sp)
    e888660a:	7aa2                	ld	s5,40(sp)
    e888660c:	7b02                	ld	s6,32(sp)
    e888660e:	6125                	addi	sp,sp,96
    e8886610:	8082                	ret
          switch (NETCONNTYPE_GROUP(netconn_type(sock->conn))) {
    e8886612:	6098                	ld	a4,0(s1)
    e8886614:	02000693          	li	a3,32
    e8886618:	00074783          	lbu	a5,0(a4)
    e888661c:	0f07f793          	andi	a5,a5,240
    e8886620:	00d78d63          	beq	a5,a3,e888663a <lwip_setsockopt+0x1e2>
    e8886624:	04000693          	li	a3,64
    e8886628:	00d78d63          	beq	a5,a3,e8886642 <lwip_setsockopt+0x1ea>
    e888662c:	46c1                	li	a3,16
    e888662e:	00d79e63          	bne	a5,a3,e888664a <lwip_setsockopt+0x1f2>
              tcp_bind_netif(sock->conn->pcb.tcp, n);
    e8886632:	6708                	ld	a0,8(a4)
    e8886634:	3ca0a0ef          	jal	ra,e88909fe <tcp_bind_netif>
              break;
    e8886638:	b73d                	j	e8886566 <lwip_setsockopt+0x10e>
              udp_bind_netif(sock->conn->pcb.udp, n);
    e888663a:	6708                	ld	a0,8(a4)
    e888663c:	687100ef          	jal	ra,e88974c2 <udp_bind_netif>
              break;
    e8886640:	b71d                	j	e8886566 <lwip_setsockopt+0x10e>
              raw_bind_netif(sock->conn->pcb.raw, n);
    e8886642:	6708                	ld	a0,8(a4)
    e8886644:	217090ef          	jal	ra,e889005a <raw_bind_netif>
              break;
    e8886648:	bf39                	j	e8886566 <lwip_setsockopt+0x10e>
              LWIP_ASSERT("Unhandled netconn type in SO_BINDTODEVICE", 0);
    e888664a:	02f00593          	li	a1,47
    e888664e:	00049517          	auipc	a0,0x49
    e8886652:	ec250513          	addi	a0,a0,-318 # e88cf510 <err_to_errno_table+0x438>
    e8886656:	d23f50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888665a:	00150693          	addi	a3,a0,1
    e888665e:	6605                	lui	a2,0x1
    e8886660:	d7d60613          	addi	a2,a2,-643 # d7d <memcmp-0xe87ff283>
    e8886664:	00049597          	auipc	a1,0x49
    e8886668:	de458593          	addi	a1,a1,-540 # e88cf448 <err_to_errno_table+0x370>
    e888666c:	00049517          	auipc	a0,0x49
    e8886670:	a4450513          	addi	a0,a0,-1468 # e88cf0b0 <kSinTable1024+0x900>
    e8886674:	c53f50ef          	jal	ra,e887c2c6 <eLIBs_printf>
              break;
    e8886678:	b5fd                	j	e8886566 <lwip_setsockopt+0x10e>
      switch (optname) {
    e888667a:	fff9869b          	addiw	a3,s3,-1
    e888667e:	471d                	li	a4,7
    e8886680:	e4d760e3          	bltu	a4,a3,e88864c0 <lwip_setsockopt+0x68>
    e8886684:	00049717          	auipc	a4,0x49
    e8886688:	ac870713          	addi	a4,a4,-1336 # e88cf14c <err_to_errno_table+0x74>
    e888668c:	54d7478b          	lurw	a5,a4,a3,2
    e8886690:	97ba                	add	a5,a5,a4
    e8886692:	8782                	jr	a5
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int);
    e8886694:	478d                	li	a5,3
    e8886696:	eb47f8e3          	bgeu	a5,s4,e8886546 <lwip_setsockopt+0xee>
    e888669a:	611c                	ld	a5,0(a0)
    e888669c:	ea0785e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e88866a0:	679c                	ld	a5,8(a5)
    e88866a2:	ea0782e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
          sock->conn->pcb.ip->ttl = (u8_t)(*(const int *)optval);
    e88866a6:	00092703          	lw	a4,0(s2)
    e88866aa:	02e789a3          	sb	a4,51(a5)
          break;
    e88866ae:	b5d9                	j	e8886574 <lwip_setsockopt+0x11c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int);
    e88866b0:	478d                	li	a5,3
    e88866b2:	e947fae3          	bgeu	a5,s4,e8886546 <lwip_setsockopt+0xee>
    e88866b6:	611c                	ld	a5,0(a0)
    e88866b8:	e80787e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e88866bc:	679c                	ld	a5,8(a5)
    e88866be:	e80784e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
          sock->conn->pcb.ip->tos = (u8_t)(*(const int *)optval);
    e88866c2:	00092703          	lw	a4,0(s2)
    e88866c6:	02e78923          	sb	a4,50(a5)
          break;
    e88866ca:	b56d                	j	e8886574 <lwip_setsockopt+0x11c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_UDP);
    e88866cc:	478d                	li	a5,3
    e88866ce:	e747fce3          	bgeu	a5,s4,e8886546 <lwip_setsockopt+0xee>
    e88866d2:	611c                	ld	a5,0(a0)
    e88866d4:	e60789e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e88866d8:	6798                	ld	a4,8(a5)
    e88866da:	e60706e3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e88866de:	0007c703          	lbu	a4,0(a5)
    e88866e2:	02000693          	li	a3,32
    e88866e6:	0f077713          	andi	a4,a4,240
    e88866ea:	e0d71ee3          	bne	a4,a3,e8886506 <lwip_setsockopt+0xae>
          if (*(const int *)optval) {
    e88866ee:	00092683          	lw	a3,0(s2)
    e88866f2:	0407c703          	lbu	a4,64(a5)
    e88866f6:	c691                	beqz	a3,e8886702 <lwip_setsockopt+0x2aa>
            sock->conn->flags |= NETCONN_FLAG_PKTINFO;
    e88866f8:	04076713          	ori	a4,a4,64
    e88866fc:	04e78023          	sb	a4,64(a5)
    e8886700:	bd95                	j	e8886574 <lwip_setsockopt+0x11c>
            sock->conn->flags &= ~NETCONN_FLAG_PKTINFO;
    e8886702:	fbf77713          	andi	a4,a4,-65
    e8886706:	04e78023          	sb	a4,64(a5)
    e888670a:	bdb1                	j	e8886566 <lwip_setsockopt+0x10e>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, u8_t, NETCONN_UDP);
    e888670c:	e20a0de3          	beqz	s4,e8886546 <lwip_setsockopt+0xee>
    e8886710:	611c                	ld	a5,0(a0)
    e8886712:	e2078ae3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e8886716:	6798                	ld	a4,8(a5)
    e8886718:	e20707e3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e888671c:	0007c783          	lbu	a5,0(a5)
    e8886720:	02000693          	li	a3,32
    e8886724:	0f07f793          	andi	a5,a5,240
    e8886728:	dcd79fe3          	bne	a5,a3,e8886506 <lwip_setsockopt+0xae>
          udp_set_multicast_ttl(sock->conn->pcb.udp, (u8_t)(*(const u8_t *)optval));
    e888672c:	00094783          	lbu	a5,0(s2)
    e8886730:	04f706a3          	sb	a5,77(a4)
          break;
    e8886734:	b581                	j	e8886574 <lwip_setsockopt+0x11c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, struct in_addr, NETCONN_UDP);
    e8886736:	478d                	li	a5,3
    e8886738:	e147f7e3          	bgeu	a5,s4,e8886546 <lwip_setsockopt+0xee>
    e888673c:	611c                	ld	a5,0(a0)
    e888673e:	e00784e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e8886742:	6798                	ld	a4,8(a5)
    e8886744:	e00701e3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e8886748:	0007c783          	lbu	a5,0(a5)
    e888674c:	02000693          	li	a3,32
    e8886750:	0f07f793          	andi	a5,a5,240
    e8886754:	dad799e3          	bne	a5,a3,e8886506 <lwip_setsockopt+0xae>
          inet_addr_to_ip4addr(&if_addr, (const struct in_addr *)optval);
    e8886758:	00092783          	lw	a5,0(s2)
          udp_set_multicast_netif_addr(sock->conn->pcb.udp, &if_addr);
    e888675c:	c73c                	sw	a5,72(a4)
        break;
    e888675e:	bd19                	j	e8886574 <lwip_setsockopt+0x11c>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, u8_t, NETCONN_UDP);
    e8886760:	de0a03e3          	beqz	s4,e8886546 <lwip_setsockopt+0xee>
    e8886764:	611c                	ld	a5,0(a0)
    e8886766:	de0780e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e888676a:	6798                	ld	a4,8(a5)
    e888676c:	dc070de3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e8886770:	0007c783          	lbu	a5,0(a5)
    e8886774:	02000693          	li	a3,32
    e8886778:	0f07f793          	andi	a5,a5,240
    e888677c:	d8d795e3          	bne	a5,a3,e8886506 <lwip_setsockopt+0xae>
          if (*(const u8_t *)optval) {
    e8886780:	00094683          	lbu	a3,0(s2)
    e8886784:	04074783          	lbu	a5,64(a4)
    e8886788:	c681                	beqz	a3,e8886790 <lwip_setsockopt+0x338>
            udp_set_flags(sock->conn->pcb.udp, UDP_FLAGS_MULTICAST_LOOP);
    e888678a:	0087e793          	ori	a5,a5,8
    e888678e:	b50d                	j	e88865b0 <lwip_setsockopt+0x158>
            udp_clear_flags(sock->conn->pcb.udp, UDP_FLAGS_MULTICAST_LOOP);
    e8886790:	9bdd                	andi	a5,a5,-9
    e8886792:	bd39                	j	e88865b0 <lwip_setsockopt+0x158>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, struct ip_mreq, NETCONN_UDP);
    e8886794:	479d                	li	a5,7
    e8886796:	db47f8e3          	bgeu	a5,s4,e8886546 <lwip_setsockopt+0xee>
    e888679a:	611c                	ld	a5,0(a0)
    e888679c:	da0785e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e88867a0:	6798                	ld	a4,8(a5)
    e88867a2:	da0702e3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e88867a6:	0007c783          	lbu	a5,0(a5)
    e88867aa:	02000713          	li	a4,32
    e88867ae:	0f07f793          	andi	a5,a5,240
    e88867b2:	d4e79ae3          	bne	a5,a4,e8886506 <lwip_setsockopt+0xae>
          inet_addr_to_ip4addr(&if_addr, &imr->imr_interface);
    e88867b6:	00492783          	lw	a5,4(s2)
    e88867ba:	c03e                	sw	a5,0(sp)
          inet_addr_to_ip4addr(&multi_addr, &imr->imr_multiaddr);
    e88867bc:	00092783          	lw	a5,0(s2)
    e88867c0:	c43e                	sw	a5,8(sp)
          if (optname == IP_ADD_MEMBERSHIP) {
    e88867c2:	478d                	li	a5,3
    e88867c4:	06f99163          	bne	s3,a5,e8886826 <lwip_setsockopt+0x3ce>
  struct lwip_sock *sock = get_socket(s);
    e88867c8:	855a                	mv	a0,s6
    e88867ca:	9c6fe0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e88867ce:	c931                	beqz	a0,e8886822 <lwip_setsockopt+0x3ca>
    e88867d0:	4781                	li	a5,0
    if (socket_ipv4_multicast_memberships[i].sock == NULL) {
    e88867d2:	0005e697          	auipc	a3,0x5e
    e88867d6:	e6668693          	addi	a3,a3,-410 # e88e4638 <socket_ipv4_multicast_memberships>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e88867da:	03200613          	li	a2,50
    if (socket_ipv4_multicast_memberships[i].sock == NULL) {
    e88867de:	00479593          	slli	a1,a5,0x4
    e88867e2:	60d5c58b          	lrd	a1,a1,a3,0
    e88867e6:	0007871b          	sext.w	a4,a5
    e88867ea:	e59d                	bnez	a1,e8886818 <lwip_setsockopt+0x3c0>
      socket_ipv4_multicast_memberships[i].sock = sock;
    e88867ec:	00471793          	slli	a5,a4,0x4
    e88867f0:	00f68733          	add	a4,a3,a5
    e88867f4:	60f6d50b          	srd	a0,a3,a5,0
      ip4_addr_copy(socket_ipv4_multicast_memberships[i].if_addr, *if_addr);
    e88867f8:	4782                	lw	a5,0(sp)
    e88867fa:	c71c                	sw	a5,8(a4)
      ip4_addr_copy(socket_ipv4_multicast_memberships[i].multi_addr, *multi_addr);
    e88867fc:	47a2                	lw	a5,8(sp)
    e88867fe:	c75c                	sw	a5,12(a4)
      done_socket(sock);
    e8886800:	8aafe0ef          	jal	ra,e88848aa <done_socket>
              igmp_err = igmp_joingroup(&if_addr, &multi_addr);
    e8886804:	002c                	addi	a1,sp,8
    e8886806:	850a                	mv	a0,sp
    e8886808:	2b6020ef          	jal	ra,e8888abe <igmp_joingroup>
    e888680c:	892a                	mv	s2,a0
          if (igmp_err != ERR_OK) {
    e888680e:	d60903e3          	beqz	s2,e8886574 <lwip_setsockopt+0x11c>
            err = EADDRNOTAVAIL;
    e8886812:	07d00413          	li	s0,125
    e8886816:	bbb9                	j	e8886574 <lwip_setsockopt+0x11c>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e8886818:	0785                	addi	a5,a5,1
    e888681a:	fcc792e3          	bne	a5,a2,e88867de <lwip_setsockopt+0x386>
  done_socket(sock);
    e888681e:	88cfe0ef          	jal	ra,e88848aa <done_socket>
              err = ENOMEM;
    e8886822:	4431                	li	s0,12
        break;
    e8886824:	bb81                	j	e8886574 <lwip_setsockopt+0x11c>
            igmp_err = igmp_leavegroup(&if_addr, &multi_addr);
    e8886826:	002c                	addi	a1,sp,8
    e8886828:	850a                	mv	a0,sp
    e888682a:	468020ef          	jal	ra,e8888c92 <igmp_leavegroup>
    e888682e:	892a                	mv	s2,a0
  struct lwip_sock *sock = get_socket(s);
    e8886830:	855a                	mv	a0,s6
    e8886832:	95efe0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8886836:	dd61                	beqz	a0,e888680e <lwip_setsockopt+0x3b6>
        ip4_addr_cmp(&socket_ipv4_multicast_memberships[i].if_addr, if_addr) &&
    e8886838:	4582                	lw	a1,0(sp)
        ip4_addr_cmp(&socket_ipv4_multicast_memberships[i].multi_addr, multi_addr)) {
    e888683a:	4822                	lw	a6,8(sp)
    e888683c:	0005e717          	auipc	a4,0x5e
    e8886840:	dfc70713          	addi	a4,a4,-516 # e88e4638 <socket_ipv4_multicast_memberships>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e8886844:	4781                	li	a5,0
    e8886846:	86ba                	mv	a3,a4
    e8886848:	03200613          	li	a2,50
    if ((socket_ipv4_multicast_memberships[i].sock == sock) &&
    e888684c:	00073883          	ld	a7,0(a4)
    e8886850:	03151463          	bne	a0,a7,e8886878 <lwip_setsockopt+0x420>
    e8886854:	00872883          	lw	a7,8(a4)
    e8886858:	02b89063          	bne	a7,a1,e8886878 <lwip_setsockopt+0x420>
        ip4_addr_cmp(&socket_ipv4_multicast_memberships[i].if_addr, if_addr) &&
    e888685c:	00c72883          	lw	a7,12(a4)
    e8886860:	01089c63          	bne	a7,a6,e8886878 <lwip_setsockopt+0x420>
      socket_ipv4_multicast_memberships[i].sock = NULL;
    e8886864:	0792                	slli	a5,a5,0x4
    e8886866:	60f6d00b          	srd	zero,a3,a5,0
    e888686a:	00f68733          	add	a4,a3,a5
      ip4_addr_set_zero(&socket_ipv4_multicast_memberships[i].if_addr);
    e888686e:	00073423          	sd	zero,8(a4)
  done_socket(sock);
    e8886872:	838fe0ef          	jal	ra,e88848aa <done_socket>
    e8886876:	bf61                	j	e888680e <lwip_setsockopt+0x3b6>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e8886878:	2785                	addiw	a5,a5,1
    e888687a:	0741                	addi	a4,a4,16
    e888687c:	fcc798e3          	bne	a5,a2,e888684c <lwip_setsockopt+0x3f4>
    e8886880:	bfcd                	j	e8886872 <lwip_setsockopt+0x41a>
      LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_TCP);
    e8886882:	478d                	li	a5,3
    e8886884:	0147e663          	bltu	a5,s4,e8886890 <lwip_setsockopt+0x438>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, struct ipv6_mreq, NETCONN_UDP);
    e8886888:	822fe0ef          	jal	ra,e88848aa <done_socket>
    e888688c:	4459                	li	s0,22
    e888688e:	b3b1                	j	e88865da <lwip_setsockopt+0x182>
      LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_TCP);
    e8886890:	6118                	ld	a4,0(a0)
    e8886892:	ca070ae3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e8886896:	671c                	ld	a5,8(a4)
    e8886898:	ca0787e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e888689c:	00074703          	lbu	a4,0(a4)
    e88868a0:	46c1                	li	a3,16
    e88868a2:	0f077713          	andi	a4,a4,240
    e88868a6:	c6d710e3          	bne	a4,a3,e8886506 <lwip_setsockopt+0xae>
      if (sock->conn->pcb.tcp->state == LISTEN) {
    e88868aa:	0487c683          	lbu	a3,72(a5)
    e88868ae:	4705                	li	a4,1
    e88868b0:	c8e68be3          	beq	a3,a4,e8886546 <lwip_setsockopt+0xee>
      switch (optname) {
    e88868b4:	00e98a63          	beq	s3,a4,e88868c8 <lwip_setsockopt+0x470>
    e88868b8:	4709                	li	a4,2
    e88868ba:	c0e993e3          	bne	s3,a4,e88864c0 <lwip_setsockopt+0x68>
          sock->conn->pcb.tcp->keep_idle = (u32_t)(*(const int *)optval);
    e88868be:	00092703          	lw	a4,0(s2)
    e88868c2:	10e7a023          	sw	a4,256(a5)
          break;
    e88868c6:	b145                	j	e8886566 <lwip_setsockopt+0x10e>
          if (*(const int *)optval) {
    e88868c8:	00092403          	lw	s0,0(s2)
    e88868cc:	04e7d703          	lhu	a4,78(a5)
    e88868d0:	c411                	beqz	s0,e88868dc <lwip_setsockopt+0x484>
            tcp_nagle_disable(sock->conn->pcb.tcp);
    e88868d2:	04076713          	ori	a4,a4,64
    e88868d6:	04e79723          	sh	a4,78(a5)
    e88868da:	b171                	j	e8886566 <lwip_setsockopt+0x10e>
            tcp_nagle_enable(sock->conn->pcb.tcp);
    e88868dc:	fbf77713          	andi	a4,a4,-65
    e88868e0:	04e79723          	sh	a4,78(a5)
    e88868e4:	b941                	j	e8886574 <lwip_setsockopt+0x11c>
      switch (optname) {
    e88868e6:	47b1                	li	a5,12
    e88868e8:	bcf9cce3          	blt	s3,a5,e88864c0 <lwip_setsockopt+0x68>
    e88868ec:	47b5                	li	a5,13
    e88868ee:	0337d963          	bge	a5,s3,e8886920 <lwip_setsockopt+0x4c8>
    e88868f2:	47ed                	li	a5,27
    e88868f4:	bcf996e3          	bne	s3,a5,e88864c0 <lwip_setsockopt+0x68>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB(sock, optlen, int);
    e88868f8:	478d                	li	a5,3
    e88868fa:	f947f7e3          	bgeu	a5,s4,e8886888 <lwip_setsockopt+0x430>
    e88868fe:	6118                	ld	a4,0(a0)
    e8886900:	c40703e3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e8886904:	671c                	ld	a5,8(a4)
    e8886906:	c40780e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
          if (*(const int *)optval) {
    e888690a:	00092403          	lw	s0,0(s2)
    e888690e:	04074783          	lbu	a5,64(a4)
    e8886912:	c401                	beqz	s0,e888691a <lwip_setsockopt+0x4c2>
            netconn_set_ipv6only(sock->conn, 1);
    e8886914:	0207e793          	ori	a5,a5,32
    e8886918:	b941                	j	e88865a8 <lwip_setsockopt+0x150>
            netconn_set_ipv6only(sock->conn, 0);
    e888691a:	fdf7f793          	andi	a5,a5,-33
    e888691e:	b949                	j	e88865b0 <lwip_setsockopt+0x158>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, struct ipv6_mreq, NETCONN_UDP);
    e8886920:	47cd                	li	a5,19
    e8886922:	f747f3e3          	bgeu	a5,s4,e8886888 <lwip_setsockopt+0x430>
    e8886926:	611c                	ld	a5,0(a0)
    e8886928:	c0078fe3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e888692c:	6798                	ld	a4,8(a5)
    e888692e:	c0070ce3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e8886932:	0007c783          	lbu	a5,0(a5)
    e8886936:	02000713          	li	a4,32
    e888693a:	0f07f793          	andi	a5,a5,240
    e888693e:	bce794e3          	bne	a5,a4,e8886506 <lwip_setsockopt+0xae>
          inet6_addr_to_ip6addr(&multi_addr, &imr->ipv6mr_multiaddr);
    e8886942:	00093783          	ld	a5,0(s2)
          LWIP_ASSERT("Invalid netif index", imr->ipv6mr_interface <= 0xFFu);
    e8886946:	01092703          	lw	a4,16(s2)
          inet6_addr_to_ip6addr(&multi_addr, &imr->ipv6mr_multiaddr);
    e888694a:	00010c23          	sb	zero,24(sp)
    e888694e:	e43e                	sd	a5,8(sp)
    e8886950:	00893783          	ld	a5,8(s2)
    e8886954:	e83e                	sd	a5,16(sp)
          LWIP_ASSERT("Invalid netif index", imr->ipv6mr_interface <= 0xFFu);
    e8886956:	0ff00793          	li	a5,255
    e888695a:	02e7f963          	bgeu	a5,a4,e888698c <lwip_setsockopt+0x534>
    e888695e:	02f00593          	li	a1,47
    e8886962:	00049517          	auipc	a0,0x49
    e8886966:	bae50513          	addi	a0,a0,-1106 # e88cf510 <err_to_errno_table+0x438>
    e888696a:	a0ff50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888696e:	00150693          	addi	a3,a0,1
    e8886972:	6605                	lui	a2,0x1
    e8886974:	e2860613          	addi	a2,a2,-472 # e28 <memcmp-0xe87ff1d8>
    e8886978:	00049597          	auipc	a1,0x49
    e888697c:	b0058593          	addi	a1,a1,-1280 # e88cf478 <err_to_errno_table+0x3a0>
    e8886980:	00048517          	auipc	a0,0x48
    e8886984:	73050513          	addi	a0,a0,1840 # e88cf0b0 <kSinTable1024+0x900>
    e8886988:	93ff50ef          	jal	ra,e887c2c6 <eLIBs_printf>
          netif = netif_get_by_index((u8_t)imr->ipv6mr_interface);
    e888698c:	01094503          	lbu	a0,16(s2)
    e8886990:	6a1070ef          	jal	ra,e888e830 <netif_get_by_index>
    e8886994:	842a                	mv	s0,a0
          if (netif == NULL) {
    e8886996:	e6050ee3          	beqz	a0,e8886812 <lwip_setsockopt+0x3ba>
          if (optname == IPV6_JOIN_GROUP) {
    e888699a:	47b1                	li	a5,12
    e888699c:	08f99263          	bne	s3,a5,e8886a20 <lwip_setsockopt+0x5c8>
  struct lwip_sock *sock = get_socket(s);
    e88869a0:	855a                	mv	a0,s6
            if (!lwip_socket_register_mld6_membership(s, imr->ipv6mr_interface, &multi_addr)) {
    e88869a2:	01092903          	lw	s2,16(s2)
  struct lwip_sock *sock = get_socket(s);
    e88869a6:	febfd0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e88869aa:	c92d                	beqz	a0,e8886a1c <lwip_setsockopt+0x5c4>
    e88869ac:	4781                	li	a5,0
    if (socket_ipv6_multicast_memberships[i].sock == NULL) {
    e88869ae:	0005e697          	auipc	a3,0x5e
    e88869b2:	faa68693          	addi	a3,a3,-86 # e88e4958 <socket_ipv6_multicast_memberships>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e88869b6:	03200613          	li	a2,50
    if (socket_ipv6_multicast_memberships[i].sock == NULL) {
    e88869ba:	00579593          	slli	a1,a5,0x5
    e88869be:	60d5c58b          	lrd	a1,a1,a3,0
    e88869c2:	0007871b          	sext.w	a4,a5
    e88869c6:	e5b1                	bnez	a1,e8886a12 <lwip_setsockopt+0x5ba>
      socket_ipv6_multicast_memberships[i].sock   = sock;
    e88869c8:	0716                	slli	a4,a4,0x5
    e88869ca:	00e687b3          	add	a5,a3,a4
    e88869ce:	60e6d50b          	srd	a0,a3,a4,0
      ip6_addr_copy(socket_ipv6_multicast_memberships[i].multi_addr, *multi_addr);
    e88869d2:	4722                	lw	a4,8(sp)
      socket_ipv6_multicast_memberships[i].if_idx = (u8_t)if_idx;
    e88869d4:	01278423          	sb	s2,8(a5)
      ip6_addr_copy(socket_ipv6_multicast_memberships[i].multi_addr, *multi_addr);
    e88869d8:	c7d8                	sw	a4,12(a5)
    e88869da:	4732                	lw	a4,12(sp)
    e88869dc:	cb98                	sw	a4,16(a5)
    e88869de:	4742                	lw	a4,16(sp)
    e88869e0:	cbd8                	sw	a4,20(a5)
    e88869e2:	4752                	lw	a4,20(sp)
    e88869e4:	cf98                	sw	a4,24(a5)
    e88869e6:	01814703          	lbu	a4,24(sp)
    e88869ea:	00e78e23          	sb	a4,28(a5)
      done_socket(sock);
    e88869ee:	ebdfd0ef          	jal	ra,e88848aa <done_socket>
              mld6_err = mld6_joingroup_netif(netif, &multi_addr);
    e88869f2:	002c                	addi	a1,sp,8
    e88869f4:	8522                	mv	a0,s0
    e88869f6:	306050ef          	jal	ra,e888bcfc <mld6_joingroup_netif>
    e88869fa:	8a2a                	mv	s4,a0
			  udp_bind_netif(sock->conn->pcb.udp,netif);
    e88869fc:	609c                	ld	a5,0(s1)
    e88869fe:	85a2                	mv	a1,s0
    e8886a00:	6788                	ld	a0,8(a5)
    e8886a02:	2c1100ef          	jal	ra,e88974c2 <udp_bind_netif>
          if (mld6_err != ERR_OK) {
    e8886a06:	4981                	li	s3,0
    e8886a08:	000a0a63          	beqz	s4,e8886a1c <lwip_setsockopt+0x5c4>
            err = EADDRNOTAVAIL;
    e8886a0c:	07d00993          	li	s3,125
    e8886a10:	a031                	j	e8886a1c <lwip_setsockopt+0x5c4>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e8886a12:	0785                	addi	a5,a5,1
    e8886a14:	fac793e3          	bne	a5,a2,e88869ba <lwip_setsockopt+0x562>
  done_socket(sock);
    e8886a18:	e93fd0ef          	jal	ra,e88848aa <done_socket>
        case IPV6_LEAVE_GROUP: {
    e8886a1c:	844e                	mv	s0,s3
    e8886a1e:	be99                	j	e8886574 <lwip_setsockopt+0x11c>
            mld6_err = mld6_leavegroup_netif(netif, &multi_addr);
    e8886a20:	002c                	addi	a1,sp,8
    e8886a22:	468050ef          	jal	ra,e888be8a <mld6_leavegroup_netif>
    e8886a26:	8a2a                	mv	s4,a0
  struct lwip_sock *sock = get_socket(s);
    e8886a28:	855a                	mv	a0,s6
            lwip_socket_unregister_mld6_membership(s, imr->ipv6mr_interface, &multi_addr);
    e8886a2a:	01092403          	lw	s0,16(s2)
  struct lwip_sock *sock = get_socket(s);
    e8886a2e:	f63fd0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8886a32:	d971                	beqz	a0,e8886a06 <lwip_setsockopt+0x5ae>
        ip6_addr_cmp(&socket_ipv6_multicast_memberships[i].multi_addr, multi_addr)) {
    e8886a34:	e301458b          	lwd	a1,a6,(sp),1,3
    e8886a38:	e461488b          	lwd	a7,t1,(sp),2,3
    e8886a3c:	01814e03          	lbu	t3,24(sp)
    e8886a40:	0005e797          	auipc	a5,0x5e
    e8886a44:	f1878793          	addi	a5,a5,-232 # e88e4958 <socket_ipv6_multicast_memberships>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e8886a48:	4701                	li	a4,0
    e8886a4a:	86be                	mv	a3,a5
    e8886a4c:	03200613          	li	a2,50
    if ((socket_ipv6_multicast_memberships[i].sock   == sock) &&
    e8886a50:	0007be83          	ld	t4,0(a5)
    e8886a54:	05d51e63          	bne	a0,t4,e8886ab0 <lwip_setsockopt+0x658>
    e8886a58:	0087ce83          	lbu	t4,8(a5)
    e8886a5c:	048e9a63          	bne	t4,s0,e8886ab0 <lwip_setsockopt+0x658>
        (socket_ipv6_multicast_memberships[i].if_idx == if_idx) &&
    e8886a60:	00c7ae83          	lw	t4,12(a5)
    e8886a64:	04be9663          	bne	t4,a1,e8886ab0 <lwip_setsockopt+0x658>
        ip6_addr_cmp(&socket_ipv6_multicast_memberships[i].multi_addr, multi_addr)) {
    e8886a68:	0107ae83          	lw	t4,16(a5)
    e8886a6c:	050e9263          	bne	t4,a6,e8886ab0 <lwip_setsockopt+0x658>
    e8886a70:	0147ae83          	lw	t4,20(a5)
    e8886a74:	031e9e63          	bne	t4,a7,e8886ab0 <lwip_setsockopt+0x658>
    e8886a78:	0187ae83          	lw	t4,24(a5)
    e8886a7c:	026e9a63          	bne	t4,t1,e8886ab0 <lwip_setsockopt+0x658>
    e8886a80:	01c7ce83          	lbu	t4,28(a5)
    e8886a84:	03ce9663          	bne	t4,t3,e8886ab0 <lwip_setsockopt+0x658>
      socket_ipv6_multicast_memberships[i].sock   = NULL;
    e8886a88:	0716                	slli	a4,a4,0x5
    e8886a8a:	00e687b3          	add	a5,a3,a4
    e8886a8e:	60e6d00b          	srd	zero,a3,a4,0
      socket_ipv6_multicast_memberships[i].if_idx = NETIF_NO_INDEX;
    e8886a92:	00078423          	sb	zero,8(a5)
      ip6_addr_set_zero(&socket_ipv6_multicast_memberships[i].multi_addr);
    e8886a96:	0007a623          	sw	zero,12(a5)
    e8886a9a:	0007a823          	sw	zero,16(a5)
    e8886a9e:	0007aa23          	sw	zero,20(a5)
    e8886aa2:	0007ac23          	sw	zero,24(a5)
    e8886aa6:	00078e23          	sb	zero,28(a5)
  done_socket(sock);
    e8886aaa:	e01fd0ef          	jal	ra,e88848aa <done_socket>
    e8886aae:	bfa1                	j	e8886a06 <lwip_setsockopt+0x5ae>
  for (i = 0; i < LWIP_SOCKET_MAX_MEMBERSHIPS; i++) {
    e8886ab0:	2705                	addiw	a4,a4,1
    e8886ab2:	02078793          	addi	a5,a5,32
    e8886ab6:	f8c71de3          	bne	a4,a2,e8886a50 <lwip_setsockopt+0x5f8>
    e8886aba:	bfc5                	j	e8886aaa <lwip_setsockopt+0x652>
      switch (optname) {
    e8886abc:	479d                	li	a5,7
          err = ENOPROTOOPT;
    e8886abe:	06d00413          	li	s0,109
    e8886ac2:	aaf999e3          	bne	s3,a5,e8886574 <lwip_setsockopt+0x11c>
          if (sock->conn->pcb.raw->protocol == IPPROTO_ICMPV6) {
    e8886ac6:	6118                	ld	a4,0(a0)
    e8886ac8:	03a00693          	li	a3,58
    e8886acc:	671c                	ld	a5,8(a4)
    e8886ace:	0407c603          	lbu	a2,64(a5)
    e8886ad2:	dad60be3          	beq	a2,a3,e8886888 <lwip_setsockopt+0x430>
          LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, int, NETCONN_RAW);
    e8886ad6:	468d                	li	a3,3
    e8886ad8:	db46f8e3          	bgeu	a3,s4,e8886888 <lwip_setsockopt+0x430>
    e8886adc:	a60705e3          	beqz	a4,e8886546 <lwip_setsockopt+0xee>
    e8886ae0:	a60783e3          	beqz	a5,e8886546 <lwip_setsockopt+0xee>
    e8886ae4:	00074703          	lbu	a4,0(a4)
    e8886ae8:	04000693          	li	a3,64
    e8886aec:	0f077713          	andi	a4,a4,240
    e8886af0:	a0d71be3          	bne	a4,a3,e8886506 <lwip_setsockopt+0xae>
          if (*(const int *)optval < 0) {
    e8886af4:	00092403          	lw	s0,0(s2)
    e8886af8:	00045563          	bgez	s0,e8886b02 <lwip_setsockopt+0x6aa>
            sock->conn->pcb.raw->chksum_reqd = 0;
    e8886afc:	04078d23          	sb	zero,90(a5)
    e8886b00:	b49d                	j	e8886566 <lwip_setsockopt+0x10e>
          } else if (*(const int *)optval & 1) {
    e8886b02:	8805                	andi	s0,s0,1
    e8886b04:	a40411e3          	bnez	s0,e8886546 <lwip_setsockopt+0xee>
            sock->conn->pcb.raw->chksum_reqd = 1;
    e8886b08:	4705                	li	a4,1
    e8886b0a:	04e78d23          	sb	a4,90(a5)
            sock->conn->pcb.raw->chksum_offset = (u16_t) * (const int *)optval;
    e8886b0e:	611c                	ld	a5,0(a0)
    e8886b10:	00092703          	lw	a4,0(s2)
    e8886b14:	679c                	ld	a5,8(a5)
    e8886b16:	04e79c23          	sh	a4,88(a5)
    e8886b1a:	bca9                	j	e8886574 <lwip_setsockopt+0x11c>
    return EBADF;
    e8886b1c:	4425                	li	s0,9
    e8886b1e:	bc75                	j	e88865da <lwip_setsockopt+0x182>

00000000e8886b20 <lwip_fcntl>:
{
    e8886b20:	7179                	addi	sp,sp,-48
    e8886b22:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8886b26:	f406                	sd	ra,40(sp)
    e8886b28:	f04a                	sd	s2,32(sp)
    e8886b2a:	e42e                	sd	a1,8(sp)
    e8886b2c:	8432                	mv	s0,a2
  struct lwip_sock *sock = get_socket(s);
    e8886b2e:	e63fd0ef          	jal	ra,e8884990 <get_socket>
  if (!sock) {
    e8886b32:	c94d                	beqz	a0,e8886be4 <lwip_fcntl+0xc4>
  switch (cmd) {
    e8886b34:	65a2                	ld	a1,8(sp)
    e8886b36:	478d                	li	a5,3
    e8886b38:	84aa                	mv	s1,a0
    e8886b3a:	00f58d63          	beq	a1,a5,e8886b54 <lwip_fcntl+0x34>
    e8886b3e:	4791                	li	a5,4
    e8886b40:	08f58063          	beq	a1,a5,e8886bc0 <lwip_fcntl+0xa0>
      sock_set_errno(sock, ENOSYS); /* not yet implemented */
    e8886b44:	05800793          	li	a5,88
    e8886b48:	0005e717          	auipc	a4,0x5e
    e8886b4c:	aef72023          	sw	a5,-1312(a4) # e88e4628 <lwip_errno>
  int ret = -1;
    e8886b50:	547d                	li	s0,-1
    e8886b52:	a8a9                	j	e8886bac <lwip_fcntl+0x8c>
      ret = netconn_is_nonblocking(sock->conn) ? O_NONBLOCK : 0;
    e8886b54:	611c                	ld	a5,0(a0)
      if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) {
    e8886b56:	4741                	li	a4,16
      ret = netconn_is_nonblocking(sock->conn) ? O_NONBLOCK : 0;
    e8886b58:	0407c403          	lbu	s0,64(a5)
      if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) {
    e8886b5c:	0007c783          	lbu	a5,0(a5)
      ret = netconn_is_nonblocking(sock->conn) ? O_NONBLOCK : 0;
    e8886b60:	0414390b          	extu	s2,s0,1,1
      if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) {
    e8886b64:	0f07f793          	andi	a5,a5,240
        op_mode |= O_RDWR;
    e8886b68:	4419                	li	s0,6
      if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) {
    e8886b6a:	02e79f63          	bne	a5,a4,e8886ba8 <lwip_fcntl+0x88>
        LOCK_TCPIP_CORE();
    e8886b6e:	0005f517          	auipc	a0,0x5f
    e8886b72:	a6a50513          	addi	a0,a0,-1430 # e88e55d8 <lock_tcpip_core>
    e8886b76:	0ac110ef          	jal	ra,e8897c22 <sys_mutex_lock>
  int op_mode = 0;
    e8886b7a:	4401                	li	s0,0
        if (sock->conn->pcb.tcp) {
    e8886b7c:	609c                	ld	a5,0(s1)
    e8886b7e:	679c                	ld	a5,8(a5)
    e8886b80:	cf91                	beqz	a5,e8886b9c <lwip_fcntl+0x7c>
          if (!(sock->conn->pcb.tcp->flags & TF_RXCLOSED)) {
    e8886b82:	04e7d783          	lhu	a5,78(a5)
    e8886b86:	0107f413          	andi	s0,a5,16
            op_mode |= O_RDONLY;
    e8886b8a:	00143413          	seqz	s0,s0
          if (!(sock->conn->pcb.tcp->flags & TF_FIN)) {
    e8886b8e:	0207f793          	andi	a5,a5,32
            op_mode |= O_RDONLY;
    e8886b92:	0406                	slli	s0,s0,0x1
          if (!(sock->conn->pcb.tcp->flags & TF_FIN)) {
    e8886b94:	e781                	bnez	a5,e8886b9c <lwip_fcntl+0x7c>
            op_mode |= O_WRONLY;
    e8886b96:	00446413          	ori	s0,s0,4
    e8886b9a:	2401                	sext.w	s0,s0
        UNLOCK_TCPIP_CORE();
    e8886b9c:	0005f517          	auipc	a0,0x5f
    e8886ba0:	a3c50513          	addi	a0,a0,-1476 # e88e55d8 <lock_tcpip_core>
    e8886ba4:	094110ef          	jal	ra,e8897c38 <sys_mutex_unlock>
      ret |= (op_mode == (O_RDONLY | O_WRONLY)) ? O_RDWR : op_mode;
    e8886ba8:	01246433          	or	s0,s0,s2
  done_socket(sock);
    e8886bac:	8526                	mv	a0,s1
    e8886bae:	cfdfd0ef          	jal	ra,e88848aa <done_socket>
}
    e8886bb2:	8522                	mv	a0,s0
    e8886bb4:	70a2                	ld	ra,40(sp)
    e8886bb6:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8886bba:	7902                	ld	s2,32(sp)
    e8886bbc:	6145                	addi	sp,sp,48
    e8886bbe:	8082                	ret
      if ((val & ~O_NONBLOCK) == 0) {
    e8886bc0:	ff847793          	andi	a5,s0,-8
    e8886bc4:	f3c1                	bnez	a5,e8886b44 <lwip_fcntl+0x24>
        netconn_set_nonblocking(sock->conn, val & O_NONBLOCK);
    e8886bc6:	6118                	ld	a4,0(a0)
    e8886bc8:	8805                	andi	s0,s0,1
    e8886bca:	04074783          	lbu	a5,64(a4)
    e8886bce:	c419                	beqz	s0,e8886bdc <lwip_fcntl+0xbc>
    e8886bd0:	0027e793          	ori	a5,a5,2
    e8886bd4:	04f70023          	sb	a5,64(a4)
        ret = 0;
    e8886bd8:	4401                	li	s0,0
    e8886bda:	bfc9                	j	e8886bac <lwip_fcntl+0x8c>
        netconn_set_nonblocking(sock->conn, val & O_NONBLOCK);
    e8886bdc:	9bf5                	andi	a5,a5,-3
    e8886bde:	04f70023          	sb	a5,64(a4)
    e8886be2:	b7e9                	j	e8886bac <lwip_fcntl+0x8c>
    return -1;
    e8886be4:	547d                	li	s0,-1
    e8886be6:	b7f1                	j	e8886bb2 <lwip_fcntl+0x92>

00000000e8886be8 <tcpip_thread_handle_msg>:
/* Handle a single tcpip_msg
 * This is in its own function for access by tests only.
 */
static void
tcpip_thread_handle_msg(struct tcpip_msg *msg)
{
    e8886be8:	1101                	addi	sp,sp,-32
    e8886bea:	ec06                	sd	ra,24(sp)
  switch (msg->type) {
    e8886bec:	00054783          	lbu	a5,0(a0)
{
    e8886bf0:	85aa                	mv	a1,a0
  switch (msg->type) {
    e8886bf2:	cf85                	beqz	a5,e8886c2a <tcpip_thread_handle_msg+0x42>
    e8886bf4:	4705                	li	a4,1
    e8886bf6:	04e78463          	beq	a5,a4,e8886c3e <tcpip_thread_handle_msg+0x56>
      msg->msg.cb.function(msg->msg.cb.ctx);
      break;

    default:
      LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: invalid message: %d\n", msg->type));
      LWIP_ASSERT("tcpip_thread: invalid message", 0);
    e8886bfa:	02f00593          	li	a1,47
    e8886bfe:	00049517          	auipc	a0,0x49
    e8886c02:	a2250513          	addi	a0,a0,-1502 # e88cf620 <err_to_errno_table+0x548>
    e8886c06:	f72f50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8886c0a:	00150693          	addi	a3,a0,1
      break;
  }
}
    e8886c0e:	60e2                	ld	ra,24(sp)
      LWIP_ASSERT("tcpip_thread: invalid message", 0);
    e8886c10:	0d200613          	li	a2,210
    e8886c14:	00049597          	auipc	a1,0x49
    e8886c18:	a9458593          	addi	a1,a1,-1388 # e88cf6a8 <err_to_errno_table+0x5d0>
    e8886c1c:	00048517          	auipc	a0,0x48
    e8886c20:	49450513          	addi	a0,a0,1172 # e88cf0b0 <kSinTable1024+0x900>
}
    e8886c24:	6105                	addi	sp,sp,32
      LWIP_ASSERT("tcpip_thread: invalid message", 0);
    e8886c26:	ea0f506f          	j	e887c2c6 <eLIBs_printf>
      msg->msg.cb.function(msg->msg.cb.ctx);
    e8886c2a:	651c                	ld	a5,8(a0)
    e8886c2c:	6908                	ld	a0,16(a0)
    e8886c2e:	e42e                	sd	a1,8(sp)
    e8886c30:	9782                	jalr	a5
      memp_free(MEMP_TCPIP_MSG_API, msg);
    e8886c32:	65a2                	ld	a1,8(sp)
}
    e8886c34:	60e2                	ld	ra,24(sp)
      memp_free(MEMP_TCPIP_MSG_API, msg);
    e8886c36:	4525                	li	a0,9
}
    e8886c38:	6105                	addi	sp,sp,32
      memp_free(MEMP_TCPIP_MSG_API, msg);
    e8886c3a:	5640706f          	j	e888e19e <memp_free>
      msg->msg.cb.function(msg->msg.cb.ctx);
    e8886c3e:	00853303          	ld	t1,8(a0)
}
    e8886c42:	60e2                	ld	ra,24(sp)
      msg->msg.cb.function(msg->msg.cb.ctx);
    e8886c44:	6908                	ld	a0,16(a0)
}
    e8886c46:	6105                	addi	sp,sp,32
      msg->msg.cb.function(msg->msg.cb.ctx);
    e8886c48:	8302                	jr	t1

00000000e8886c4a <tcpip_thread>:
{
    e8886c4a:	711d                	addi	sp,sp,-96
    e8886c4c:	ec86                	sd	ra,88(sp)
    e8886c4e:	e8a2                	sd	s0,80(sp)
    e8886c50:	e4a6                	sd	s1,72(sp)
    e8886c52:	e0ca                	sd	s2,64(sp)
    e8886c54:	fc4e                	sd	s3,56(sp)
    e8886c56:	f852                	sd	s4,48(sp)
    e8886c58:	f456                	sd	s5,40(sp)
    e8886c5a:	f05a                	sd	s6,32(sp)
  pthread_setname_np( pthread_self(), "tcpip_thread" );
    e8886c5c:	d9ff40ef          	jal	ra,e887b9fa <pthread_self>
    e8886c60:	2501                	sext.w	a0,a0
    e8886c62:	00049597          	auipc	a1,0x49
    e8886c66:	9ae58593          	addi	a1,a1,-1618 # e88cf610 <err_to_errno_table+0x538>
    e8886c6a:	96af50ef          	jal	ra,e887bdd4 <pthread_setname_np>
  LOCK_TCPIP_CORE();
    e8886c6e:	0005f517          	auipc	a0,0x5f
    e8886c72:	96a50513          	addi	a0,a0,-1686 # e88e55d8 <lock_tcpip_core>
    e8886c76:	7ad100ef          	jal	ra,e8897c22 <sys_mutex_lock>
  if (tcpip_init_done != NULL) {
    e8886c7a:	0005f797          	auipc	a5,0x5f
    e8886c7e:	96678793          	addi	a5,a5,-1690 # e88e55e0 <tcpip_init_done>
    e8886c82:	639c                	ld	a5,0(a5)
    e8886c84:	c799                	beqz	a5,e8886c92 <tcpip_thread+0x48>
    tcpip_init_done(tcpip_init_done_arg);
    e8886c86:	0005f717          	auipc	a4,0x5f
    e8886c8a:	96270713          	addi	a4,a4,-1694 # e88e55e8 <tcpip_init_done_arg>
    e8886c8e:	6308                	ld	a0,0(a4)
    e8886c90:	9782                	jalr	a5
  if (sleeptime == SYS_TIMEOUTS_SLEEPTIME_INFINITE) {
    e8886c92:	54fd                	li	s1,-1
  UNLOCK_TCPIP_CORE();
    e8886c94:	0005f417          	auipc	s0,0x5f
    e8886c98:	94440413          	addi	s0,s0,-1724 # e88e55d8 <lock_tcpip_core>
  res = sys_arch_mbox_fetch(mbox, msg, sleeptime);
    e8886c9c:	0005f917          	auipc	s2,0x5f
    e8886ca0:	95490913          	addi	s2,s2,-1708 # e88e55f0 <tcpip_mbox>
      LWIP_ASSERT("tcpip_thread: invalid message", 0);
    e8886ca4:	00049997          	auipc	s3,0x49
    e8886ca8:	97c98993          	addi	s3,s3,-1668 # e88cf620 <err_to_errno_table+0x548>
    e8886cac:	00049a17          	auipc	s4,0x49
    e8886cb0:	9fca0a13          	addi	s4,s4,-1540 # e88cf6a8 <err_to_errno_table+0x5d0>
    e8886cb4:	00048a97          	auipc	s5,0x48
    e8886cb8:	3fca8a93          	addi	s5,s5,1020 # e88cf0b0 <kSinTable1024+0x900>
  sleeptime = sys_timeouts_sleeptime();
    e8886cbc:	2c90f0ef          	jal	ra,e8896784 <sys_timeouts_sleeptime>
    e8886cc0:	0005061b          	sext.w	a2,a0
  if (sleeptime == SYS_TIMEOUTS_SLEEPTIME_INFINITE) {
    e8886cc4:	02961d63          	bne	a2,s1,e8886cfe <tcpip_thread+0xb4>
    UNLOCK_TCPIP_CORE();
    e8886cc8:	8522                	mv	a0,s0
    e8886cca:	76f100ef          	jal	ra,e8897c38 <sys_mutex_unlock>
    sys_arch_mbox_fetch(mbox, msg, 0);
    e8886cce:	4601                	li	a2,0
    e8886cd0:	082c                	addi	a1,sp,24
    e8886cd2:	854a                	mv	a0,s2
    e8886cd4:	02c110ef          	jal	ra,e8897d00 <sys_arch_mbox_fetch>
    LOCK_TCPIP_CORE();
    e8886cd8:	8522                	mv	a0,s0
    e8886cda:	749100ef          	jal	ra,e8897c22 <sys_mutex_lock>
    if (msg == NULL) {
    e8886cde:	6562                	ld	a0,24(sp)
    e8886ce0:	e521                	bnez	a0,e8886d28 <tcpip_thread+0xde>
      LWIP_ASSERT("tcpip_thread: invalid message", 0);
    e8886ce2:	02f00593          	li	a1,47
    e8886ce6:	854e                	mv	a0,s3
    e8886ce8:	e90f50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8886cec:	00150693          	addi	a3,a0,1
    e8886cf0:	09300613          	li	a2,147
    e8886cf4:	85d2                	mv	a1,s4
    e8886cf6:	8556                	mv	a0,s5
    e8886cf8:	dcef50ef          	jal	ra,e887c2c6 <eLIBs_printf>
      continue;
    e8886cfc:	b7c1                	j	e8886cbc <tcpip_thread+0x72>
  } else if (sleeptime == 0) {
    e8886cfe:	e601                	bnez	a2,e8886d06 <tcpip_thread+0xbc>
    sys_check_timeouts();
    e8886d00:	2250f0ef          	jal	ra,e8896724 <sys_check_timeouts>
    goto again;
    e8886d04:	bf65                	j	e8886cbc <tcpip_thread+0x72>
  UNLOCK_TCPIP_CORE();
    e8886d06:	8522                	mv	a0,s0
    e8886d08:	e432                	sd	a2,8(sp)
    e8886d0a:	72f100ef          	jal	ra,e8897c38 <sys_mutex_unlock>
  res = sys_arch_mbox_fetch(mbox, msg, sleeptime);
    e8886d0e:	6622                	ld	a2,8(sp)
    e8886d10:	082c                	addi	a1,sp,24
    e8886d12:	854a                	mv	a0,s2
    e8886d14:	7ed100ef          	jal	ra,e8897d00 <sys_arch_mbox_fetch>
    e8886d18:	00050b1b          	sext.w	s6,a0
  LOCK_TCPIP_CORE();
    e8886d1c:	8522                	mv	a0,s0
    e8886d1e:	705100ef          	jal	ra,e8897c22 <sys_mutex_lock>
  if (res == SYS_ARCH_TIMEOUT) {
    e8886d22:	fc9b0fe3          	beq	s6,s1,e8886d00 <tcpip_thread+0xb6>
    e8886d26:	bf65                	j	e8886cde <tcpip_thread+0x94>
    tcpip_thread_handle_msg(msg);
    e8886d28:	ec1ff0ef          	jal	ra,e8886be8 <tcpip_thread_handle_msg>
    TCPIP_MBOX_FETCH(&tcpip_mbox, (void **)&msg);
    e8886d2c:	bf41                	j	e8886cbc <tcpip_thread+0x72>

00000000e8886d2e <tcpip_inpkt>:
 * @param inp the network interface on which the packet was received
 * @param input_fn input function to call
 */
err_t
tcpip_inpkt(struct pbuf *p, struct netif *inp, netif_input_fn input_fn)
{
    e8886d2e:	7179                	addi	sp,sp,-48
    e8886d30:	ec22                	sd	s0,24(sp)
#if LWIP_TCPIP_CORE_LOCKING_INPUT
  err_t ret;
  LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_inpkt: PACKET %p/%p\n", (void *)p, (void *)inp));
  LOCK_TCPIP_CORE();
    e8886d32:	0005f417          	auipc	s0,0x5f
    e8886d36:	8a640413          	addi	s0,s0,-1882 # e88e55d8 <lock_tcpip_core>
{
    e8886d3a:	f026                	sd	s1,32(sp)
    e8886d3c:	84aa                	mv	s1,a0
  LOCK_TCPIP_CORE();
    e8886d3e:	8522                	mv	a0,s0
{
    e8886d40:	f406                	sd	ra,40(sp)
    e8886d42:	e42e                	sd	a1,8(sp)
    e8886d44:	e032                	sd	a2,0(sp)
  LOCK_TCPIP_CORE();
    e8886d46:	6dd100ef          	jal	ra,e8897c22 <sys_mutex_lock>
  ret = input_fn(p, inp);
    e8886d4a:	65a2                	ld	a1,8(sp)
    e8886d4c:	6602                	ld	a2,0(sp)
    e8886d4e:	8526                	mv	a0,s1
    e8886d50:	9602                	jalr	a2
    e8886d52:	84aa                	mv	s1,a0
  UNLOCK_TCPIP_CORE();
    e8886d54:	8522                	mv	a0,s0
    e8886d56:	6e3100ef          	jal	ra,e8897c38 <sys_mutex_unlock>
    memp_free(MEMP_TCPIP_MSG_INPKT, msg);
    return ERR_MEM;
  }
  return ERR_OK;
#endif /* LWIP_TCPIP_CORE_LOCKING_INPUT */
}
    e8886d5a:	6462                	ld	s0,24(sp)
    e8886d5c:	70a2                	ld	ra,40(sp)
    e8886d5e:	8526                	mv	a0,s1
    e8886d60:	7482                	ld	s1,32(sp)
    e8886d62:	6145                	addi	sp,sp,48
    e8886d64:	8082                	ret

00000000e8886d66 <tcpip_input>:
 */
err_t
tcpip_input(struct pbuf *p, struct netif *inp)
{
#if LWIP_ETHERNET
  if (inp->flags & (NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET)) {
    e8886d66:	10b5c783          	lbu	a5,267(a1)
    return tcpip_inpkt(p, inp, ethernet_input);
    e8886d6a:	00011617          	auipc	a2,0x11
    e8886d6e:	b5060613          	addi	a2,a2,-1200 # e88978ba <ethernet_input>
  if (inp->flags & (NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET)) {
    e8886d72:	8be1                	andi	a5,a5,24
    e8886d74:	e789                	bnez	a5,e8886d7e <tcpip_input+0x18>
  } else
#endif /* LWIP_ETHERNET */
    return tcpip_inpkt(p, inp, ip_input);
    e8886d76:	00001617          	auipc	a2,0x1
    e8886d7a:	c8460613          	addi	a2,a2,-892 # e88879fa <ip_input>
    e8886d7e:	fb1ff06f          	j	e8886d2e <tcpip_inpkt>

00000000e8886d82 <tcpip_try_callback>:
 *
 * @see tcpip_callback
 */
err_t
tcpip_try_callback(tcpip_callback_fn function, void *ctx)
{
    e8886d82:	1101                	addi	sp,sp,-32
    e8886d84:	f891540b          	sdd	s0,s1,(sp),0,4
  struct tcpip_msg *msg;

  LWIP_ASSERT("Invalid mbox", sys_mbox_valid_val(tcpip_mbox));
    e8886d88:	0005f797          	auipc	a5,0x5f
    e8886d8c:	86878793          	addi	a5,a5,-1944 # e88e55f0 <tcpip_mbox>
{
    e8886d90:	e84a                	sd	s2,16(sp)
    e8886d92:	ec06                	sd	ra,24(sp)
  LWIP_ASSERT("Invalid mbox", sys_mbox_valid_val(tcpip_mbox));
    e8886d94:	639c                	ld	a5,0(a5)
{
    e8886d96:	892a                	mv	s2,a0
    e8886d98:	84ae                	mv	s1,a1
  LWIP_ASSERT("Invalid mbox", sys_mbox_valid_val(tcpip_mbox));
    e8886d9a:	e79d                	bnez	a5,e8886dc8 <tcpip_try_callback+0x46>
    e8886d9c:	02f00593          	li	a1,47
    e8886da0:	00049517          	auipc	a0,0x49
    e8886da4:	88050513          	addi	a0,a0,-1920 # e88cf620 <err_to_errno_table+0x548>
    e8886da8:	dd0f50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8886dac:	00150693          	addi	a3,a0,1
    e8886db0:	16000613          	li	a2,352
    e8886db4:	00048597          	auipc	a1,0x48
    e8886db8:	7fc58593          	addi	a1,a1,2044 # e88cf5b0 <err_to_errno_table+0x4d8>
    e8886dbc:	00048517          	auipc	a0,0x48
    e8886dc0:	2f450513          	addi	a0,a0,756 # e88cf0b0 <kSinTable1024+0x900>
    e8886dc4:	d02f50ef          	jal	ra,e887c2c6 <eLIBs_printf>

  msg = (struct tcpip_msg *)memp_malloc(MEMP_TCPIP_MSG_API);
    e8886dc8:	4525                	li	a0,9
    e8886dca:	382070ef          	jal	ra,e888e14c <memp_malloc>
    e8886dce:	842a                	mv	s0,a0
  if (msg == NULL) {
    return ERR_MEM;
    e8886dd0:	557d                	li	a0,-1
  if (msg == NULL) {
    e8886dd2:	c01d                	beqz	s0,e8886df8 <tcpip_try_callback+0x76>
  }

  msg->type = TCPIP_MSG_CALLBACK;
    e8886dd4:	00040023          	sb	zero,0(s0)
  msg->msg.cb.function = function;
    e8886dd8:	01243423          	sd	s2,8(s0)
  msg->msg.cb.ctx = ctx;
    e8886ddc:	e804                	sd	s1,16(s0)

  if (sys_mbox_trypost(&tcpip_mbox, msg) != ERR_OK) {
    e8886dde:	85a2                	mv	a1,s0
    e8886de0:	0005f517          	auipc	a0,0x5f
    e8886de4:	81050513          	addi	a0,a0,-2032 # e88e55f0 <tcpip_mbox>
    e8886de8:	6df100ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
    e8886dec:	c511                	beqz	a0,e8886df8 <tcpip_try_callback+0x76>
    memp_free(MEMP_TCPIP_MSG_API, msg);
    e8886dee:	4525                	li	a0,9
    e8886df0:	85a2                	mv	a1,s0
    e8886df2:	3ac070ef          	jal	ra,e888e19e <memp_free>
    return ERR_MEM;
    e8886df6:	557d                	li	a0,-1
  }
  return ERR_OK;
}
    e8886df8:	60e2                	ld	ra,24(sp)
    e8886dfa:	f891440b          	ldd	s0,s1,(sp),0,4
    e8886dfe:	6942                	ld	s2,16(sp)
    e8886e00:	6105                	addi	sp,sp,32
    e8886e02:	8082                	ret

00000000e8886e04 <tcpip_send_msg_wait_sem>:
 * @param sem semaphore to wait on
 * @return ERR_OK if the function was called, another err_t if not
 */
err_t
tcpip_send_msg_wait_sem(tcpip_callback_fn fn, void *apimsg, sys_sem_t *sem)
{
    e8886e04:	7179                	addi	sp,sp,-48
    e8886e06:	ec22                	sd	s0,24(sp)
#if LWIP_TCPIP_CORE_LOCKING
  LWIP_UNUSED_ARG(sem);
  LOCK_TCPIP_CORE();
    e8886e08:	0005e417          	auipc	s0,0x5e
    e8886e0c:	7d040413          	addi	s0,s0,2000 # e88e55d8 <lock_tcpip_core>
{
    e8886e10:	f026                	sd	s1,32(sp)
    e8886e12:	84aa                	mv	s1,a0
  LOCK_TCPIP_CORE();
    e8886e14:	8522                	mv	a0,s0
{
    e8886e16:	f406                	sd	ra,40(sp)
    e8886e18:	e42e                	sd	a1,8(sp)
  LOCK_TCPIP_CORE();
    e8886e1a:	609100ef          	jal	ra,e8897c22 <sys_mutex_lock>
  fn(apimsg);
    e8886e1e:	65a2                	ld	a1,8(sp)
    e8886e20:	852e                	mv	a0,a1
    e8886e22:	9482                	jalr	s1
  UNLOCK_TCPIP_CORE();
    e8886e24:	8522                	mv	a0,s0
    e8886e26:	613100ef          	jal	ra,e8897c38 <sys_mutex_unlock>
  sys_mbox_post(&tcpip_mbox, &TCPIP_MSG_VAR_REF(msg));
  sys_arch_sem_wait(sem, 0);
  TCPIP_MSG_VAR_FREE(msg);
  return ERR_OK;
#endif /* LWIP_TCPIP_CORE_LOCKING */
}
    e8886e2a:	6462                	ld	s0,24(sp)
    e8886e2c:	70a2                	ld	ra,40(sp)
    e8886e2e:	7482                	ld	s1,32(sp)
    e8886e30:	4501                	li	a0,0
    e8886e32:	6145                	addi	sp,sp,48
    e8886e34:	8082                	ret

00000000e8886e36 <tcpip_api_call>:
 * @param call Call parameters
 * @return Return value from tcpip_api_call_fn
 */
err_t
tcpip_api_call(tcpip_api_call_fn fn, struct tcpip_api_call_data *call)
{
    e8886e36:	7179                	addi	sp,sp,-48
    e8886e38:	ec22                	sd	s0,24(sp)
#if LWIP_TCPIP_CORE_LOCKING
  err_t err;
  LOCK_TCPIP_CORE();
    e8886e3a:	0005e417          	auipc	s0,0x5e
    e8886e3e:	79e40413          	addi	s0,s0,1950 # e88e55d8 <lock_tcpip_core>
{
    e8886e42:	f026                	sd	s1,32(sp)
    e8886e44:	84aa                	mv	s1,a0
  LOCK_TCPIP_CORE();
    e8886e46:	8522                	mv	a0,s0
{
    e8886e48:	f406                	sd	ra,40(sp)
    e8886e4a:	e42e                	sd	a1,8(sp)
  LOCK_TCPIP_CORE();
    e8886e4c:	5d7100ef          	jal	ra,e8897c22 <sys_mutex_lock>
  err = fn(call);
    e8886e50:	65a2                	ld	a1,8(sp)
    e8886e52:	852e                	mv	a0,a1
    e8886e54:	9482                	jalr	s1
    e8886e56:	84aa                	mv	s1,a0
  UNLOCK_TCPIP_CORE();
    e8886e58:	8522                	mv	a0,s0
    e8886e5a:	5df100ef          	jal	ra,e8897c38 <sys_mutex_unlock>
  sys_sem_free(&call->sem);
#endif /* LWIP_NETCONN_SEM_PER_THREAD */

  return call->err;
#endif /* LWIP_TCPIP_CORE_LOCKING */
}
    e8886e5e:	6462                	ld	s0,24(sp)
    e8886e60:	70a2                	ld	ra,40(sp)
    e8886e62:	8526                	mv	a0,s1
    e8886e64:	7482                	ld	s1,32(sp)
    e8886e66:	6145                	addi	sp,sp,48
    e8886e68:	8082                	ret

00000000e8886e6a <tcpip_init>:
 * @param initfunc a function to call when tcpip_thread is running and finished initializing
 * @param arg argument to pass to initfunc
 */
void
tcpip_init(tcpip_init_done_fn initfunc, void *arg)
{
    e8886e6a:	1101                	addi	sp,sp,-32
    e8886e6c:	ec06                	sd	ra,24(sp)
    e8886e6e:	e42a                	sd	a0,8(sp)
    e8886e70:	e02e                	sd	a1,0(sp)
  lwip_init();
    e8886e72:	359000ef          	jal	ra,e88879ca <lwip_init>

  tcpip_init_done = initfunc;
    e8886e76:	6522                	ld	a0,8(sp)
  tcpip_init_done_arg = arg;
    e8886e78:	6582                	ld	a1,0(sp)
  tcpip_init_done = initfunc;
    e8886e7a:	0005e797          	auipc	a5,0x5e
    e8886e7e:	76a7b323          	sd	a0,1894(a5) # e88e55e0 <tcpip_init_done>
  tcpip_init_done_arg = arg;
    e8886e82:	0005e797          	auipc	a5,0x5e
    e8886e86:	76b7b323          	sd	a1,1894(a5) # e88e55e8 <tcpip_init_done_arg>
  if (sys_mbox_new(&tcpip_mbox, TCPIP_MBOX_SIZE) != ERR_OK) {
    e8886e8a:	0005e517          	auipc	a0,0x5e
    e8886e8e:	76650513          	addi	a0,a0,1894 # e88e55f0 <tcpip_mbox>
    e8886e92:	4581                	li	a1,0
    e8886e94:	5ab100ef          	jal	ra,e8897c3e <sys_mbox_new>
    e8886e98:	c51d                	beqz	a0,e8886ec6 <tcpip_init+0x5c>
    LWIP_ASSERT("failed to create tcpip_thread mbox", 0);
    e8886e9a:	02f00593          	li	a1,47
    e8886e9e:	00048517          	auipc	a0,0x48
    e8886ea2:	78250513          	addi	a0,a0,1922 # e88cf620 <err_to_errno_table+0x548>
    e8886ea6:	cd2f50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8886eaa:	00150693          	addi	a3,a0,1
    e8886eae:	26400613          	li	a2,612
    e8886eb2:	00048597          	auipc	a1,0x48
    e8886eb6:	70e58593          	addi	a1,a1,1806 # e88cf5c0 <err_to_errno_table+0x4e8>
    e8886eba:	00048517          	auipc	a0,0x48
    e8886ebe:	1f650513          	addi	a0,a0,502 # e88cf0b0 <kSinTable1024+0x900>
    e8886ec2:	c04f50ef          	jal	ra,e887c2c6 <eLIBs_printf>
  }
#if LWIP_TCPIP_CORE_LOCKING
  if (sys_mutex_new(&lock_tcpip_core) != ERR_OK) {
    e8886ec6:	0005e517          	auipc	a0,0x5e
    e8886eca:	71250513          	addi	a0,a0,1810 # e88e55d8 <lock_tcpip_core>
    e8886ece:	4f9100ef          	jal	ra,e8897bc6 <sys_mutex_new>
    e8886ed2:	c51d                	beqz	a0,e8886f00 <tcpip_init+0x96>
    LWIP_ASSERT("failed to create lock_tcpip_core", 0);
    e8886ed4:	02f00593          	li	a1,47
    e8886ed8:	00048517          	auipc	a0,0x48
    e8886edc:	74850513          	addi	a0,a0,1864 # e88cf620 <err_to_errno_table+0x548>
    e8886ee0:	c98f50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8886ee4:	00150693          	addi	a3,a0,1
    e8886ee8:	26800613          	li	a2,616
    e8886eec:	00048597          	auipc	a1,0x48
    e8886ef0:	6fc58593          	addi	a1,a1,1788 # e88cf5e8 <err_to_errno_table+0x510>
    e8886ef4:	00048517          	auipc	a0,0x48
    e8886ef8:	1bc50513          	addi	a0,a0,444 # e88cf0b0 <kSinTable1024+0x900>
    e8886efc:	bcaf50ef          	jal	ra,e887c2c6 <eLIBs_printf>
  }
#endif /* LWIP_TCPIP_CORE_LOCKING */

  sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO);
}
    e8886f00:	60e2                	ld	ra,24(sp)
  sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO);
    e8886f02:	4705                	li	a4,1
    e8886f04:	4681                	li	a3,0
    e8886f06:	4601                	li	a2,0
    e8886f08:	00000597          	auipc	a1,0x0
    e8886f0c:	d4258593          	addi	a1,a1,-702 # e8886c4a <tcpip_thread>
    e8886f10:	00048517          	auipc	a0,0x48
    e8886f14:	70050513          	addi	a0,a0,1792 # e88cf610 <err_to_errno_table+0x538>
}
    e8886f18:	6105                	addi	sp,sp,32
  sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO);
    e8886f1a:	6471006f          	j	e8897d60 <sys_thread_new>

00000000e8886f1e <lwip_htons>:
 * @return n in network byte order
 */
u16_t
lwip_htons(u16_t n)
{
  return PP_HTONS(n);
    e8886f1e:	00851793          	slli	a5,a0,0x8
    e8886f22:	5c85350b          	extu	a0,a0,23,8
    e8886f26:	8d5d                	or	a0,a0,a5
}
    e8886f28:	3c05350b          	extu	a0,a0,15,0
    e8886f2c:	8082                	ret

00000000e8886f2e <lwip_htonl>:
 * @return n in network byte order
 */
u32_t
lwip_htonl(u32_t n)
{
  return PP_HTONL(n);
    e8886f2e:	9005150b          	revw	a0,a0
}
    e8886f32:	8082                	ret

00000000e8886f34 <lwip_itoa>:
  char *res = result;
  char *tmp = result + bufsize - 1;
  int n = (number >= 0) ? number : -number;

  /* handle invalid bufsize */
  if (bufsize < 2) {
    e8886f34:	4705                	li	a4,1
{
    e8886f36:	87aa                	mv	a5,a0
  if (bufsize < 2) {
    e8886f38:	00b76763          	bltu	a4,a1,e8886f46 <lwip_itoa+0x12>
    if (bufsize == 1) {
    e8886f3c:	06e59263          	bne	a1,a4,e8886fa0 <lwip_itoa+0x6c>
      *result = 0;
    e8886f40:	00078023          	sb	zero,0(a5)
    e8886f44:	8082                	ret
    }
    return;
  }

  /* First, add sign */
  if (number < 0) {
    e8886f46:	00065663          	bgez	a2,e8886f52 <lwip_itoa+0x1e>
    *res++ = '-';
    e8886f4a:	02d00713          	li	a4,45
    e8886f4e:	1815570b          	sbia	a4,(a0),1,0
  int n = (number >= 0) ? number : -number;
    e8886f52:	41f6581b          	sraiw	a6,a2,0x1f
  char *tmp = result + bufsize - 1;
    e8886f56:	fff58693          	addi	a3,a1,-1
  int n = (number >= 0) ? number : -number;
    e8886f5a:	01064633          	xor	a2,a2,a6
    e8886f5e:	4106063b          	subw	a2,a2,a6
  char *tmp = result + bufsize - 1;
    e8886f62:	00d78733          	add	a4,a5,a3
  }
  /* Then create the string from the end and stop if buffer full,
     and ensure output string is zero terminated */
  *tmp = 0;
    e8886f66:	00d7d00b          	srb	zero,a5,a3,0
  while ((n != 0) && (tmp > res)) {
    char val = (char)('0' + (n % 10));
    e8886f6a:	4829                	li	a6,10
  while ((n != 0) && (tmp > res)) {
    e8886f6c:	c20d                	beqz	a2,e8886f8e <lwip_itoa+0x5a>
    e8886f6e:	fce579e3          	bgeu	a0,a4,e8886f40 <lwip_itoa+0xc>
    char val = (char)('0' + (n % 10));
    e8886f72:	030666bb          	remw	a3,a2,a6
    e8886f76:	0306869b          	addiw	a3,a3,48
    tmp--;
    *tmp = val;
    e8886f7a:	09f7568b          	sbib	a3,(a4),-1,0
    n = n / 10;
    e8886f7e:	0306463b          	divw	a2,a2,a6
    e8886f82:	b7ed                	j	e8886f6c <lwip_itoa+0x38>
    *result = 0;
    return;
  }
  if (*tmp == 0) {
    /* Nothing added? */
    *res++ = '0';
    e8886f84:	03000793          	li	a5,48
    e8886f88:	00f51023          	sh	a5,0(a0)
    *res++ = 0;
    return;
    e8886f8c:	8082                	ret
  if (*tmp == 0) {
    e8886f8e:	00074683          	lbu	a3,0(a4)
    e8886f92:	daed                	beqz	a3,e8886f84 <lwip_itoa+0x50>
  }
  /* move from temporary buffer to output buffer (sign is not moved) */
  memmove(res, tmp, (size_t)((result + bufsize) - tmp));
    e8886f94:	00b78633          	add	a2,a5,a1
    e8886f98:	8e19                	sub	a2,a2,a4
    e8886f9a:	85ba                	mv	a1,a4
    e8886f9c:	c10f506f          	j	e887c3ac <eLIBs_memmove>
}
    e8886fa0:	8082                	ret

00000000e8886fa2 <dns_call_found>:
 * @param idx dns table index of the entry that is resolved or removed
 * @param addr IP address for the hostname (or NULL on error or memory shortage)
 */
static void
dns_call_found(u8_t idx, ip_addr_t *addr)
{
    e8886fa2:	7139                	addi	sp,sp,-64
    e8886fa4:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8886fa8:	f891540b          	sdd	s0,s1,(sp),0,4
    e8886fac:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8886fb0:	fc06                	sd	ra,56(sp)
    e8886fb2:	f85a                	sd	s6,48(sp)
    e8886fb4:	89aa                	mv	s3,a0
    e8886fb6:	8aae                	mv	s5,a1
    e8886fb8:	0005091b          	sext.w	s2,a0
    e8886fbc:	0005e417          	auipc	s0,0x5e
    e8886fc0:	6ec40413          	addi	s0,s0,1772 # e88e56a8 <dns_table>
#if ((LWIP_DNS_SECURE & (LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING | LWIP_DNS_SECURE_RAND_SRC_PORT)) != 0)
  u8_t i;
#endif

#if LWIP_IPV4 && LWIP_IPV6
  if (addr != NULL) {
    e8886fc4:	c1ad                	beqz	a1,e8887026 <dns_call_found+0x84>
    /* check that address type matches the request and adapt the table entry */
    if (IP_IS_V6_VAL(*addr)) {
    e8886fc6:	12800793          	li	a5,296
    e8886fca:	8722                	mv	a4,s0
    e8886fcc:	20f9170b          	mula	a4,s2,a5
    e8886fd0:	0145c683          	lbu	a3,20(a1)
    e8886fd4:	12474783          	lbu	a5,292(a4)
    e8886fd8:	4719                	li	a4,6
    e8886fda:	0fd7f793          	andi	a5,a5,253
    e8886fde:	10e69063          	bne	a3,a4,e88870de <dns_call_found+0x13c>
      LWIP_ASSERT("invalid response", LWIP_DNS_ADDRTYPE_IS_IPV6(dns_table[idx].reqaddrtype));
    e8886fe2:	4705                	li	a4,1
    e8886fe4:	02e78863          	beq	a5,a4,e8887014 <dns_call_found+0x72>
    e8886fe8:	02f00593          	li	a1,47
    e8886fec:	00048517          	auipc	a0,0x48
    e8886ff0:	6dc50513          	addi	a0,a0,1756 # e88cf6c8 <err_to_errno_table+0x5f0>
    e8886ff4:	b84f50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8886ff8:	00150693          	addi	a3,a0,1
    e8886ffc:	3b800613          	li	a2,952
    e8887000:	00048597          	auipc	a1,0x48
    e8887004:	75058593          	addi	a1,a1,1872 # e88cf750 <err_to_errno_table+0x678>
    e8887008:	00048517          	auipc	a0,0x48
    e888700c:	0a850513          	addi	a0,a0,168 # e88cf0b0 <kSinTable1024+0x900>
    e8887010:	ab6f50ef          	jal	ra,e887c2c6 <eLIBs_printf>
      dns_table[idx].reqaddrtype = LWIP_DNS_ADDRTYPE_IPV6;
    e8887014:	12800793          	li	a5,296
    e8887018:	8722                	mv	a4,s0
    e888701a:	20f9170b          	mula	a4,s2,a5
    e888701e:	87ba                	mv	a5,a4
    e8887020:	4705                	li	a4,1
    e8887022:	12e78223          	sb	a4,292(a5)
#endif /* LWIP_IPV4 && LWIP_IPV6 */

#if ((LWIP_DNS_SECURE & LWIP_DNS_SECURE_NO_MULTIPLE_OUTSTANDING) != 0)
  for (i = 0; i < DNS_MAX_REQUESTS; i++) {
    if (dns_requests[i].found && (dns_requests[i].dns_table_idx == idx)) {
      (*dns_requests[i].found)(dns_table[idx].name, addr, dns_requests[i].arg);
    e8887026:	12800793          	li	a5,296
    e888702a:	8a22                	mv	s4,s0
    e888702c:	20f99a0b          	mula	s4,s3,a5
    e8887030:	0005e497          	auipc	s1,0x5e
    e8887034:	5e848493          	addi	s1,s1,1512 # e88e5618 <dns_requests>
    e8887038:	0005eb17          	auipc	s6,0x5e
    e888703c:	640b0b13          	addi	s6,s6,1600 # e88e5678 <dns_servers>
    e8887040:	024a0a13          	addi	s4,s4,36
    if (dns_requests[i].found && (dns_requests[i].dns_table_idx == idx)) {
    e8887044:	609c                	ld	a5,0(s1)
    e8887046:	cb99                	beqz	a5,e888705c <dns_call_found+0xba>
    e8887048:	0104c703          	lbu	a4,16(s1)
    e888704c:	01371863          	bne	a4,s3,e888705c <dns_call_found+0xba>
      (*dns_requests[i].found)(dns_table[idx].name, addr, dns_requests[i].arg);
    e8887050:	6490                	ld	a2,8(s1)
    e8887052:	85d6                	mv	a1,s5
    e8887054:	8552                	mv	a0,s4
    e8887056:	9782                	jalr	a5
      /* flush this entry */
      dns_requests[i].found = NULL;
    e8887058:	0004b023          	sd	zero,0(s1)
  for (i = 0; i < DNS_MAX_REQUESTS; i++) {
    e888705c:	04e1                	addi	s1,s1,24
    e888705e:	fe9b13e3          	bne	s6,s1,e8887044 <dns_call_found+0xa2>
  for (i = 0; i < DNS_MAX_REQUESTS; i++) {
    if (i == idx) {
      continue; /* only check other requests */
    }
    if (dns_table[i].state == DNS_STATE_ASKING) {
      if (dns_table[i].pcb_idx == dns_table[idx].pcb_idx) {
    e8887062:	12800693          	li	a3,296
    e8887066:	8622                	mv	a2,s0
    e8887068:	20d9160b          	mula	a2,s2,a3
    e888706c:	0005e717          	auipc	a4,0x5e
    e8887070:	63c70713          	addi	a4,a4,1596 # e88e56a8 <dns_table>
  for (i = 0; i < DNS_MAX_REQUESTS; i++) {
    e8887074:	4781                	li	a5,0
    if (dns_table[i].state == DNS_STATE_ASKING) {
    e8887076:	4589                	li	a1,2
      if (dns_table[i].pcb_idx == dns_table[idx].pcb_idx) {
    e8887078:	86b2                	mv	a3,a2
  for (i = 0; i < DNS_MAX_REQUESTS; i++) {
    e888707a:	4611                	li	a2,4
    if (i == idx) {
    e888707c:	0af98263          	beq	s3,a5,e8887120 <dns_call_found+0x17e>
    if (dns_table[i].state == DNS_STATE_ASKING) {
    e8887080:	01e74503          	lbu	a0,30(a4)
    e8887084:	08b51e63          	bne	a0,a1,e8887120 <dns_call_found+0x17e>
      if (dns_table[i].pcb_idx == dns_table[idx].pcb_idx) {
    e8887088:	02374803          	lbu	a6,35(a4)
    e888708c:	0236c503          	lbu	a0,35(a3)
    e8887090:	08a81863          	bne	a6,a0,e8887120 <dns_call_found+0x17e>
        /* another request is still using the same pcb */
        dns_table[idx].pcb_idx = DNS_MAX_SOURCE_PORTS;
    e8887094:	4791                	li	a5,4
    e8887096:	02f681a3          	sb	a5,35(a3)
        break;
      }
    }
  }
  if (dns_table[idx].pcb_idx < DNS_MAX_SOURCE_PORTS) {
    e888709a:	12800793          	li	a5,296
    e888709e:	20f9140b          	mula	s0,s2,a5
    e88870a2:	470d                	li	a4,3
    e88870a4:	02344783          	lbu	a5,35(s0)
    e88870a8:	02f76163          	bltu	a4,a5,e88870ca <dns_call_found+0x128>
    /* if we come here, the pcb is not used any more and can be removed */
    udp_remove(dns_pcbs[dns_table[idx].pcb_idx]);
    e88870ac:	0005e497          	auipc	s1,0x5e
    e88870b0:	54c48493          	addi	s1,s1,1356 # e88e55f8 <dns_pcbs>
    e88870b4:	66f4c50b          	lrd	a0,s1,a5,3
    e88870b8:	66a100ef          	jal	ra,e8897722 <udp_remove>
    dns_pcbs[dns_table[idx].pcb_idx] = NULL;
    e88870bc:	02344783          	lbu	a5,35(s0)
    e88870c0:	66f4d00b          	srd	zero,s1,a5,3
    dns_table[idx].pcb_idx = DNS_MAX_SOURCE_PORTS;
    e88870c4:	4791                	li	a5,4
    e88870c6:	02f401a3          	sb	a5,35(s0)
  }
#endif
}
    e88870ca:	70e2                	ld	ra,56(sp)
    e88870cc:	f891440b          	ldd	s0,s1,(sp),0,4
    e88870d0:	7b42                	ld	s6,48(sp)
    e88870d2:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88870d6:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88870da:	6121                	addi	sp,sp,64
    e88870dc:	8082                	ret
      LWIP_ASSERT("invalid response", !LWIP_DNS_ADDRTYPE_IS_IPV6(dns_table[idx].reqaddrtype));
    e88870de:	4705                	li	a4,1
    e88870e0:	02e79863          	bne	a5,a4,e8887110 <dns_call_found+0x16e>
    e88870e4:	02f00593          	li	a1,47
    e88870e8:	00048517          	auipc	a0,0x48
    e88870ec:	5e050513          	addi	a0,a0,1504 # e88cf6c8 <err_to_errno_table+0x5f0>
    e88870f0:	a88f50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88870f4:	00150693          	addi	a3,a0,1
    e88870f8:	3bb00613          	li	a2,955
    e88870fc:	00048597          	auipc	a1,0x48
    e8887100:	65458593          	addi	a1,a1,1620 # e88cf750 <err_to_errno_table+0x678>
    e8887104:	00048517          	auipc	a0,0x48
    e8887108:	fac50513          	addi	a0,a0,-84 # e88cf0b0 <kSinTable1024+0x900>
    e888710c:	9baf50ef          	jal	ra,e887c2c6 <eLIBs_printf>
      dns_table[idx].reqaddrtype = LWIP_DNS_ADDRTYPE_IPV4;
    e8887110:	12800793          	li	a5,296
    e8887114:	8722                	mv	a4,s0
    e8887116:	20f9170b          	mula	a4,s2,a5
    e888711a:	12070223          	sb	zero,292(a4)
    e888711e:	b721                	j	e8887026 <dns_call_found+0x84>
  for (i = 0; i < DNS_MAX_REQUESTS; i++) {
    e8887120:	2785                	addiw	a5,a5,1
    e8887122:	0ff7f793          	andi	a5,a5,255
    e8887126:	12870713          	addi	a4,a4,296
    e888712a:	f4c799e3          	bne	a5,a2,e888707c <dns_call_found+0xda>
    e888712e:	b7b5                	j	e888709a <dns_call_found+0xf8>

00000000e8887130 <dns_send>:
{
    e8887130:	7175                	addi	sp,sp,-144
    e8887132:	fca6                	sd	s1,120(sp)
  LWIP_ASSERT("dns server out of array", entry->server_idx < DNS_MAX_SERVERS);
    e8887134:	0005e497          	auipc	s1,0x5e
    e8887138:	57448493          	addi	s1,s1,1396 # e88e56a8 <dns_table>
{
    e888713c:	f4ce                	sd	s3,104(sp)
  LWIP_ASSERT("dns server out of array", entry->server_idx < DNS_MAX_SERVERS);
    e888713e:	12800793          	li	a5,296
  struct dns_table_entry *entry = &dns_table[idx];
    e8887142:	0005099b          	sext.w	s3,a0
  LWIP_ASSERT("dns server out of array", entry->server_idx < DNS_MAX_SERVERS);
    e8887146:	8726                	mv	a4,s1
    e8887148:	20f9970b          	mula	a4,s3,a5
{
    e888714c:	e122                	sd	s0,128(sp)
    e888714e:	e506                	sd	ra,136(sp)
    e8887150:	f8ca                	sd	s2,112(sp)
    e8887152:	f0d2                	sd	s4,96(sp)
    e8887154:	ecd6                	sd	s5,88(sp)
    e8887156:	e8da                	sd	s6,80(sp)
    e8887158:	e4de                	sd	s7,72(sp)
    e888715a:	e0e2                	sd	s8,64(sp)
    e888715c:	fc66                	sd	s9,56(sp)
    e888715e:	f86a                	sd	s10,48(sp)
    e8887160:	f46e                	sd	s11,40(sp)
  LWIP_ASSERT("dns server out of array", entry->server_idx < DNS_MAX_SERVERS);
    e8887162:	01f74703          	lbu	a4,31(a4)
    e8887166:	4785                	li	a5,1
{
    e8887168:	842a                	mv	s0,a0
  LWIP_ASSERT("dns server out of array", entry->server_idx < DNS_MAX_SERVERS);
    e888716a:	02e7f863          	bgeu	a5,a4,e888719a <dns_send+0x6a>
    e888716e:	02f00593          	li	a1,47
    e8887172:	00048517          	auipc	a0,0x48
    e8887176:	55650513          	addi	a0,a0,1366 # e88cf6c8 <err_to_errno_table+0x5f0>
    e888717a:	9fef50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888717e:	00150693          	addi	a3,a0,1
    e8887182:	2fa00613          	li	a2,762
    e8887186:	00048597          	auipc	a1,0x48
    e888718a:	62258593          	addi	a1,a1,1570 # e88cf7a8 <err_to_errno_table+0x6d0>
    e888718e:	00048517          	auipc	a0,0x48
    e8887192:	f2250513          	addi	a0,a0,-222 # e88cf0b0 <kSinTable1024+0x900>
    e8887196:	930f50ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (ip_addr_isany_val(dns_servers[entry->server_idx])
    e888719a:	12800793          	li	a5,296
    e888719e:	8726                	mv	a4,s1
    e88871a0:	20f9970b          	mula	a4,s3,a5
    e88871a4:	0005ea17          	auipc	s4,0x5e
    e88871a8:	4d4a0a13          	addi	s4,s4,1236 # e88e5678 <dns_servers>
    e88871ac:	4619                	li	a2,6
    e88871ae:	01f74783          	lbu	a5,31(a4)
    e88871b2:	4761                	li	a4,24
    e88871b4:	02e787b3          	mul	a5,a5,a4
    e88871b8:	00fa0733          	add	a4,s4,a5
    e88871bc:	40fa468b          	lrw	a3,s4,a5,0
    e88871c0:	01474583          	lbu	a1,20(a4)
    e88871c4:	0016b793          	seqz	a5,a3
    e88871c8:	00c59b63          	bne	a1,a2,e88871de <dns_send+0xae>
    e88871cc:	4781                	li	a5,0
    e88871ce:	ea81                	bnez	a3,e88871de <dns_send+0xae>
    e88871d0:	4354                	lw	a3,4(a4)
    e88871d2:	e691                	bnez	a3,e88871de <dns_send+0xae>
    e88871d4:	4714                	lw	a3,8(a4)
    e88871d6:	e681                	bnez	a3,e88871de <dns_send+0xae>
    e88871d8:	475c                	lw	a5,12(a4)
    e88871da:	0017b793          	seqz	a5,a5
    e88871de:	cf85                	beqz	a5,e8887216 <dns_send+0xe6>
    dns_call_found(idx, NULL);
    e88871e0:	8522                	mv	a0,s0
    e88871e2:	4581                	li	a1,0
    e88871e4:	dbfff0ef          	jal	ra,e8886fa2 <dns_call_found>
    return ERR_OK;
    e88871e8:	4401                	li	s0,0
    entry->state = DNS_STATE_UNUSED;
    e88871ea:	12800793          	li	a5,296
    e88871ee:	20f9948b          	mula	s1,s3,a5
    e88871f2:	00048f23          	sb	zero,30(s1)
}
    e88871f6:	8522                	mv	a0,s0
    e88871f8:	60aa                	ld	ra,136(sp)
    e88871fa:	640a                	ld	s0,128(sp)
    e88871fc:	74e6                	ld	s1,120(sp)
    e88871fe:	7946                	ld	s2,112(sp)
    e8887200:	79a6                	ld	s3,104(sp)
    e8887202:	7a06                	ld	s4,96(sp)
    e8887204:	6ae6                	ld	s5,88(sp)
    e8887206:	6b46                	ld	s6,80(sp)
    e8887208:	6ba6                	ld	s7,72(sp)
    e888720a:	6c06                	ld	s8,64(sp)
    e888720c:	7ce2                	ld	s9,56(sp)
    e888720e:	7d42                	ld	s10,48(sp)
    e8887210:	7da2                	ld	s11,40(sp)
    e8887212:	6149                	addi	sp,sp,144
    e8887214:	8082                	ret
  p = pbuf_alloc(PBUF_TRANSPORT, (u16_t)(SIZEOF_DNS_HDR + strlen(entry->name) + 2 +
    e8887216:	12800b13          	li	s6,296
    e888721a:	8926                	mv	s2,s1
    e888721c:	2164190b          	mula	s2,s0,s6
    err = ERR_MEM;
    e8887220:	547d                	li	s0,-1
  p = pbuf_alloc(PBUF_TRANSPORT, (u16_t)(SIZEOF_DNS_HDR + strlen(entry->name) + 2 +
    e8887222:	02490913          	addi	s2,s2,36
    e8887226:	854a                	mv	a0,s2
    e8887228:	8f0f50ef          	jal	ra,e887c318 <eLIBs_strlen>
    e888722c:	0125059b          	addiw	a1,a0,18
    e8887230:	28000613          	li	a2,640
    e8887234:	3c05b58b          	extu	a1,a1,15,0
    e8887238:	04a00513          	li	a0,74
    e888723c:	154080ef          	jal	ra,e888f390 <pbuf_alloc>
    e8887240:	8aaa                	mv	s5,a0
  if (p != NULL) {
    e8887242:	d955                	beqz	a0,e88871f6 <dns_send+0xc6>
    memset(&hdr, 0, SIZEOF_DNS_HDR);
    e8887244:	4631                	li	a2,12
    e8887246:	4581                	li	a1,0
    e8887248:	0808                	addi	a0,sp,16
    e888724a:	94af50ef          	jal	ra,e887c394 <eLIBs_memset>
    --hostname;
    e888724e:	197d                	addi	s2,s2,-1
    hdr.id = lwip_htons(entry->txid);
    e8887250:	87a6                	mv	a5,s1
    e8887252:	2169978b          	mula	a5,s3,s6
      for (n = 0; *hostname != '.' && *hostname != 0; ++hostname) {
    e8887256:	02e00d13          	li	s10,46
    query_idx = SIZEOF_DNS_HDR;
    e888725a:	4b31                	li	s6,12
      if (query_idx + n + 1 > 0xFFFF) {
    e888725c:	6dc1                	lui	s11,0x10
    hdr.id = lwip_htons(entry->txid);
    e888725e:	01c7d503          	lhu	a0,28(a5)
    e8887262:	cbdff0ef          	jal	ra,e8886f1e <lwip_htons>
    e8887266:	00a11823          	sh	a0,16(sp)
    hdr.flags1 = DNS_FLAG1_RD;
    e888726a:	4785                	li	a5,1
    e888726c:	00f10923          	sb	a5,18(sp)
    hdr.numquestions = PP_HTONS(1);
    e8887270:	10000793          	li	a5,256
    pbuf_take(p, &hdr, SIZEOF_DNS_HDR);
    e8887274:	4631                	li	a2,12
    e8887276:	080c                	addi	a1,sp,16
    e8887278:	8556                	mv	a0,s5
    hdr.numquestions = PP_HTONS(1);
    e888727a:	00f11a23          	sh	a5,20(sp)
    pbuf_take(p, &hdr, SIZEOF_DNS_HDR);
    e888727e:	085080ef          	jal	ra,e888fb02 <pbuf_take>
      ++hostname;
    e8887282:	0905                	addi	s2,s2,1
    e8887284:	8c4a                	mv	s8,s2
      for (n = 0; *hostname != '.' && *hostname != 0; ++hostname) {
    e8887286:	4401                	li	s0,0
    e8887288:	00094783          	lbu	a5,0(s2)
    e888728c:	01a78363          	beq	a5,s10,e8887292 <dns_send+0x162>
    e8887290:	e385                	bnez	a5,e88872b0 <dns_send+0x180>
      if (query_idx + n + 1 > 0xFFFF) {
    e8887292:	001b0c9b          	addiw	s9,s6,1
      copy_len = (u16_t)(hostname - hostname_part);
    e8887296:	41890bb3          	sub	s7,s2,s8
      if (query_idx + n + 1 > 0xFFFF) {
    e888729a:	019407b3          	add	a5,s0,s9
      copy_len = (u16_t)(hostname - hostname_part);
    e888729e:	3c0bbb8b          	extu	s7,s7,15,0
      if (query_idx + n + 1 > 0xFFFF) {
    e88872a2:	01b7cc63          	blt	a5,s11,e88872ba <dns_send+0x18a>
  pbuf_free(p);
    e88872a6:	8556                	mv	a0,s5
    e88872a8:	7a5070ef          	jal	ra,e888f24c <pbuf_free>
  return ERR_VAL;
    e88872ac:	5469                	li	s0,-6
    e88872ae:	b7a1                	j	e88871f6 <dns_send+0xc6>
        ++n;
    e88872b0:	2405                	addiw	s0,s0,1
    e88872b2:	0ff47413          	andi	s0,s0,255
      for (n = 0; *hostname != '.' && *hostname != 0; ++hostname) {
    e88872b6:	0905                	addi	s2,s2,1
    e88872b8:	bfc1                	j	e8887288 <dns_send+0x158>
      pbuf_put_at(p, query_idx, n);
    e88872ba:	8622                	mv	a2,s0
    e88872bc:	85da                	mv	a1,s6
    e88872be:	8556                	mv	a0,s5
    e88872c0:	2eb080ef          	jal	ra,e888fdaa <pbuf_put_at>
      query_idx = (u16_t)(query_idx + n + 1);
    e88872c4:	0164043b          	addw	s0,s0,s6
      pbuf_take_at(p, hostname_part, copy_len, (u16_t)(query_idx + 1));
    e88872c8:	3c0cb68b          	extu	a3,s9,15,0
    e88872cc:	865e                	mv	a2,s7
    e88872ce:	85e2                	mv	a1,s8
    e88872d0:	8556                	mv	a0,s5
    e88872d2:	185080ef          	jal	ra,e888fc56 <pbuf_take_at>
      query_idx = (u16_t)(query_idx + n + 1);
    e88872d6:	3c04340b          	extu	s0,s0,15,0
    } while (*hostname != 0);
    e88872da:	00094783          	lbu	a5,0(s2)
      query_idx = (u16_t)(query_idx + n + 1);
    e88872de:	00140b1b          	addiw	s6,s0,1
    e88872e2:	3c0b3b0b          	extu	s6,s6,15,0
    } while (*hostname != 0);
    e88872e6:	ffd1                	bnez	a5,e8887282 <dns_send+0x152>
    pbuf_put_at(p, query_idx, 0);
    e88872e8:	4601                	li	a2,0
    e88872ea:	85da                	mv	a1,s6
    e88872ec:	8556                	mv	a0,s5
    e88872ee:	2bd080ef          	jal	ra,e888fdaa <pbuf_put_at>
    query_idx++;
    e88872f2:	2409                	addiw	s0,s0,2
    if (LWIP_DNS_ADDRTYPE_IS_IPV6(entry->reqaddrtype)) {
    e88872f4:	12800793          	li	a5,296
    e88872f8:	8726                	mv	a4,s1
    e88872fa:	20f9970b          	mula	a4,s3,a5
    query_idx++;
    e88872fe:	3c04368b          	extu	a3,s0,15,0
    if (LWIP_DNS_ADDRTYPE_IS_IPV6(entry->reqaddrtype)) {
    e8887302:	12474783          	lbu	a5,292(a4)
    e8887306:	4705                	li	a4,1
    e8887308:	0fd7f793          	andi	a5,a5,253
    e888730c:	04e78b63          	beq	a5,a4,e8887362 <dns_send+0x232>
      qry.type = PP_HTONS(DNS_RRTYPE_A);
    e8887310:	10000793          	li	a5,256
    e8887314:	00f11423          	sh	a5,8(sp)
    qry.cls = PP_HTONS(DNS_RRCLASS_IN);
    e8887318:	10000793          	li	a5,256
    pbuf_take_at(p, &qry, SIZEOF_DNS_QUERY, query_idx);
    e888731c:	002c                	addi	a1,sp,8
    e888731e:	4611                	li	a2,4
    e8887320:	8556                	mv	a0,s5
    qry.cls = PP_HTONS(DNS_RRCLASS_IN);
    e8887322:	00f11523          	sh	a5,10(sp)
    pbuf_take_at(p, &qry, SIZEOF_DNS_QUERY, query_idx);
    e8887326:	131080ef          	jal	ra,e888fc56 <pbuf_take_at>
      dst = &dns_servers[entry->server_idx];
    e888732a:	12800793          	li	a5,296
    e888732e:	20f9948b          	mula	s1,s3,a5
    err = udp_sendto(dns_pcbs[pcb_idx], p, dst, dst_port);
    e8887332:	47e1                	li	a5,24
    e8887334:	03500693          	li	a3,53
    e8887338:	85d6                	mv	a1,s5
      dst = &dns_servers[entry->server_idx];
    e888733a:	01f4c603          	lbu	a2,31(s1)
    err = udp_sendto(dns_pcbs[pcb_idx], p, dst, dst_port);
    e888733e:	0234c703          	lbu	a4,35(s1)
    e8887342:	20f61a0b          	mula	s4,a2,a5
    e8887346:	0005e797          	auipc	a5,0x5e
    e888734a:	2b278793          	addi	a5,a5,690 # e88e55f8 <dns_pcbs>
    e888734e:	66e7c50b          	lrd	a0,a5,a4,3
    e8887352:	8652                	mv	a2,s4
    e8887354:	154100ef          	jal	ra,e88974a8 <udp_sendto>
    e8887358:	842a                	mv	s0,a0
    pbuf_free(p);
    e888735a:	8556                	mv	a0,s5
    e888735c:	6f1070ef          	jal	ra,e888f24c <pbuf_free>
    e8887360:	bd59                	j	e88871f6 <dns_send+0xc6>
      qry.type = PP_HTONS(DNS_RRTYPE_AAAA);
    e8887362:	6789                	lui	a5,0x2
    e8887364:	c0078793          	addi	a5,a5,-1024 # 1c00 <memcmp-0xe87fe400>
    e8887368:	b775                	j	e8887314 <dns_send+0x1e4>

00000000e888736a <dns_backupserver_available>:
dns_backupserver_available(struct dns_table_entry *pentry)
{
  u8_t ret = 0;

  if (pentry) {
    if ((pentry->server_idx + 1 < DNS_MAX_SERVERS) && !ip_addr_isany_val(dns_servers[pentry->server_idx + 1])) {
    e888736a:	01f54783          	lbu	a5,31(a0)
  u8_t ret = 0;
    e888736e:	4501                	li	a0,0
    if ((pentry->server_idx + 1 < DNS_MAX_SERVERS) && !ip_addr_isany_val(dns_servers[pentry->server_idx + 1])) {
    e8887370:	e79d                	bnez	a5,e888739e <dns_backupserver_available+0x34>
    e8887372:	0005e717          	auipc	a4,0x5e
    e8887376:	30670713          	addi	a4,a4,774 # e88e5678 <dns_servers>
    e888737a:	4f1c                	lw	a5,24(a4)
    e888737c:	02c74603          	lbu	a2,44(a4)
    e8887380:	4699                	li	a3,6
    e8887382:	00f03533          	snez	a0,a5
    e8887386:	00d61c63          	bne	a2,a3,e888739e <dns_backupserver_available+0x34>
    e888738a:	4f48                	lw	a0,28(a4)
    e888738c:	8d5d                	or	a0,a0,a5
    e888738e:	531c                	lw	a5,32(a4)
    e8887390:	8d5d                	or	a0,a0,a5
    e8887392:	535c                	lw	a5,36(a4)
    e8887394:	8d5d                	or	a0,a0,a5
    e8887396:	2501                	sext.w	a0,a0
    e8887398:	00a03533          	snez	a0,a0
    e888739c:	8082                	ret
      ret = 1;
    }
  }

  return ret;
}
    e888739e:	8082                	ret

00000000e88873a0 <dns_check_entry>:
 *
 * @param i index of the dns_table entry to check
 */
static void
dns_check_entry(u8_t i)
{
    e88873a0:	7139                	addi	sp,sp,-64
    e88873a2:	ec4a                	sd	s2,24(sp)
    e88873a4:	f04e                	sd	s3,32(sp)
    e88873a6:	fc06                	sd	ra,56(sp)
    e88873a8:	e422                	sd	s0,8(sp)
    e88873aa:	e826                	sd	s1,16(sp)
    e88873ac:	f452                	sd	s4,40(sp)
    e88873ae:	f856                	sd	s5,48(sp)
  err_t err;
  struct dns_table_entry *entry = &dns_table[i];

  LWIP_ASSERT("array index out of bounds", i < DNS_TABLE_SIZE);
    e88873b0:	478d                	li	a5,3
{
    e88873b2:	892a                	mv	s2,a0
  struct dns_table_entry *entry = &dns_table[i];
    e88873b4:	0005099b          	sext.w	s3,a0
  LWIP_ASSERT("array index out of bounds", i < DNS_TABLE_SIZE);
    e88873b8:	02a7f863          	bgeu	a5,a0,e88873e8 <dns_check_entry+0x48>
    e88873bc:	02f00593          	li	a1,47
    e88873c0:	00048517          	auipc	a0,0x48
    e88873c4:	30850513          	addi	a0,a0,776 # e88cf6c8 <err_to_errno_table+0x5f0>
    e88873c8:	fb1f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88873cc:	00150693          	addi	a3,a0,1
    e88873d0:	41c00613          	li	a2,1052
    e88873d4:	00048597          	auipc	a1,0x48
    e88873d8:	39458593          	addi	a1,a1,916 # e88cf768 <err_to_errno_table+0x690>
    e88873dc:	00048517          	auipc	a0,0x48
    e88873e0:	cd450513          	addi	a0,a0,-812 # e88cf0b0 <kSinTable1024+0x900>
    e88873e4:	ee3f40ef          	jal	ra,e887c2c6 <eLIBs_printf>

  switch (entry->state) {
    e88873e8:	12800693          	li	a3,296
    e88873ec:	02d98733          	mul	a4,s3,a3
    e88873f0:	0005e517          	auipc	a0,0x5e
    e88873f4:	2b850513          	addi	a0,a0,696 # e88e56a8 <dns_table>
    e88873f8:	4a05                	li	s4,1
    e88873fa:	842a                	mv	s0,a0
    e88873fc:	00e504b3          	add	s1,a0,a4
    e8887400:	01e4c783          	lbu	a5,30(s1)
    e8887404:	07479963          	bne	a5,s4,e8887476 <dns_check_entry+0xd6>
  txid = (u16_t)DNS_RAND_TXID();
    e8887408:	800004b7          	lui	s1,0x80000
    e888740c:	fff4c493          	not	s1,s1
    e8887410:	0005ea17          	auipc	s4,0x5e
    e8887414:	738a0a13          	addi	s4,s4,1848 # e88e5b48 <ip_data>
    if ((dns_table[i].state == DNS_STATE_ASKING) &&
    e8887418:	4a89                	li	s5,2
  txid = (u16_t)DNS_RAND_TXID();
    e888741a:	8526                	mv	a0,s1
    e888741c:	ed7f40ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e8887420:	3c05350b          	extu	a0,a0,15,0
  for (i = 0; i < DNS_TABLE_SIZE; i++) {
    e8887424:	0005e797          	auipc	a5,0x5e
    e8887428:	28478793          	addi	a5,a5,644 # e88e56a8 <dns_table>
    if ((dns_table[i].state == DNS_STATE_ASKING) &&
    e888742c:	0005071b          	sext.w	a4,a0
    e8887430:	01e7c683          	lbu	a3,30(a5)
    e8887434:	01569663          	bne	a3,s5,e8887440 <dns_check_entry+0xa0>
    e8887438:	01c7d683          	lhu	a3,28(a5)
    e888743c:	fce68fe3          	beq	a3,a4,e888741a <dns_check_entry+0x7a>
  for (i = 0; i < DNS_TABLE_SIZE; i++) {
    e8887440:	12878793          	addi	a5,a5,296
    e8887444:	ff4796e3          	bne	a5,s4,e8887430 <dns_check_entry+0x90>
    case DNS_STATE_NEW:
      /* initialize new entry */
      entry->txid = dns_create_txid();
    e8887448:	12800793          	li	a5,296
    e888744c:	20f9940b          	mula	s0,s3,a5
      entry->state = DNS_STATE_ASKING;
    e8887450:	4789                	li	a5,2
    e8887452:	00f41f23          	sh	a5,30(s0)
      entry->server_idx = 0;
      entry->tmr = 1;
    e8887456:	4785                	li	a5,1
      entry->txid = dns_create_txid();
    e8887458:	00a41e23          	sh	a0,28(s0)
      entry->tmr = 1;
    e888745c:	02f41023          	sh	a5,32(s0)
      break;
    default:
      LWIP_ASSERT("unknown dns_table entry state:", 0);
      break;
  }
}
    e8887460:	6422                	ld	s0,8(sp)
    e8887462:	70e2                	ld	ra,56(sp)
    e8887464:	64c2                	ld	s1,16(sp)
    e8887466:	7982                	ld	s3,32(sp)
    e8887468:	7a22                	ld	s4,40(sp)
    e888746a:	7ac2                	ld	s5,48(sp)
        err = dns_send(i);
    e888746c:	854a                	mv	a0,s2
}
    e888746e:	6962                	ld	s2,24(sp)
    e8887470:	6121                	addi	sp,sp,64
        err = dns_send(i);
    e8887472:	cbfff06f          	j	e8887130 <dns_send>
  switch (entry->state) {
    e8887476:	cbd1                	beqz	a5,e888750a <dns_check_entry+0x16a>
    e8887478:	4609                	li	a2,2
    e888747a:	04c78363          	beq	a5,a2,e88874c0 <dns_check_entry+0x120>
    e888747e:	468d                	li	a3,3
    e8887480:	0ad78163          	beq	a5,a3,e8887522 <dns_check_entry+0x182>
      LWIP_ASSERT("unknown dns_table entry state:", 0);
    e8887484:	02f00593          	li	a1,47
    e8887488:	00048517          	auipc	a0,0x48
    e888748c:	24050513          	addi	a0,a0,576 # e88cf6c8 <err_to_errno_table+0x5f0>
    e8887490:	ee9f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
}
    e8887494:	6422                	ld	s0,8(sp)
    e8887496:	70e2                	ld	ra,56(sp)
    e8887498:	64c2                	ld	s1,16(sp)
    e888749a:	6962                	ld	s2,24(sp)
    e888749c:	7982                	ld	s3,32(sp)
    e888749e:	7a22                	ld	s4,40(sp)
    e88874a0:	7ac2                	ld	s5,48(sp)
      LWIP_ASSERT("unknown dns_table entry state:", 0);
    e88874a2:	00150693          	addi	a3,a0,1
    e88874a6:	45b00613          	li	a2,1115
    e88874aa:	00048597          	auipc	a1,0x48
    e88874ae:	2de58593          	addi	a1,a1,734 # e88cf788 <err_to_errno_table+0x6b0>
    e88874b2:	00048517          	auipc	a0,0x48
    e88874b6:	bfe50513          	addi	a0,a0,-1026 # e88cf0b0 <kSinTable1024+0x900>
}
    e88874ba:	6121                	addi	sp,sp,64
      LWIP_ASSERT("unknown dns_table entry state:", 0);
    e88874bc:	e0bf406f          	j	e887c2c6 <eLIBs_printf>
      if (--entry->tmr == 0) {
    e88874c0:	0204c783          	lbu	a5,32(s1) # ffffffff80000020 <__DRAM0_INF_BASE+0xfffffffe80010020>
    e88874c4:	37fd                	addiw	a5,a5,-1
    e88874c6:	0ff7f793          	andi	a5,a5,255
    e88874ca:	02f48023          	sb	a5,32(s1)
    e88874ce:	ef95                	bnez	a5,e888750a <dns_check_entry+0x16a>
        if (++entry->retries == DNS_MAX_RETRIES) {
    e88874d0:	0214c783          	lbu	a5,33(s1)
    e88874d4:	4711                	li	a4,4
    e88874d6:	2785                	addiw	a5,a5,1
    e88874d8:	0ff7f793          	andi	a5,a5,255
    e88874dc:	02f480a3          	sb	a5,33(s1)
    e88874e0:	02e79e63          	bne	a5,a4,e888751c <dns_check_entry+0x17c>
          if (dns_backupserver_available(entry)
    e88874e4:	20d9150b          	mula	a0,s2,a3
    e88874e8:	e83ff0ef          	jal	ra,e888736a <dns_backupserver_available>
    e88874ec:	c909                	beqz	a0,e88874fe <dns_check_entry+0x15e>
            entry->server_idx++;
    e88874ee:	01f4c783          	lbu	a5,31(s1)
            entry->tmr = 1;
    e88874f2:	03449023          	sh	s4,32(s1)
            entry->server_idx++;
    e88874f6:	2785                	addiw	a5,a5,1
    e88874f8:	00f48fa3          	sb	a5,31(s1)
            entry->retries = 0;
    e88874fc:	b795                	j	e8887460 <dns_check_entry+0xc0>
            dns_call_found(i, NULL);
    e88874fe:	4581                	li	a1,0
    e8887500:	854a                	mv	a0,s2
    e8887502:	aa1ff0ef          	jal	ra,e8886fa2 <dns_call_found>
            entry->state = DNS_STATE_UNUSED;
    e8887506:	00048f23          	sb	zero,30(s1)
}
    e888750a:	70e2                	ld	ra,56(sp)
    e888750c:	6422                	ld	s0,8(sp)
    e888750e:	64c2                	ld	s1,16(sp)
    e8887510:	6962                	ld	s2,24(sp)
    e8887512:	7982                	ld	s3,32(sp)
    e8887514:	7a22                	ld	s4,40(sp)
    e8887516:	7ac2                	ld	s5,48(sp)
    e8887518:	6121                	addi	sp,sp,64
    e888751a:	8082                	ret
          entry->tmr = entry->retries;
    e888751c:	02f48023          	sb	a5,32(s1)
    e8887520:	b781                	j	e8887460 <dns_check_entry+0xc0>
      if ((entry->ttl == 0) || (--entry->ttl == 0)) {
    e8887522:	40e5478b          	lrw	a5,a0,a4,0
    e8887526:	eb81                	bnez	a5,e8887536 <dns_check_entry+0x196>
        entry->state = DNS_STATE_UNUSED;
    e8887528:	12800793          	li	a5,296
    e888752c:	20f9940b          	mula	s0,s3,a5
    e8887530:	00040f23          	sb	zero,30(s0)
    e8887534:	bfd9                	j	e888750a <dns_check_entry+0x16a>
      if ((entry->ttl == 0) || (--entry->ttl == 0)) {
    e8887536:	fff7869b          	addiw	a3,a5,-1
    e888753a:	40e4568b          	srw	a3,s0,a4,0
    e888753e:	d6ed                	beqz	a3,e8887528 <dns_check_entry+0x188>
    e8887540:	b7e9                	j	e888750a <dns_check_entry+0x16a>

00000000e8887542 <dns_init>:
}
    e8887542:	8082                	ret

00000000e8887544 <dns_setserver>:
  if (numdns < DNS_MAX_SERVERS) {
    e8887544:	4785                	li	a5,1
    e8887546:	04a7e263          	bltu	a5,a0,e888758a <dns_setserver+0x46>
    if (dnsserver != NULL) {
    e888754a:	2501                	sext.w	a0,a0
      dns_servers[numdns] = (*dnsserver);
    e888754c:	4761                	li	a4,24
    e888754e:	0005e797          	auipc	a5,0x5e
    e8887552:	12a78793          	addi	a5,a5,298 # e88e5678 <dns_servers>
    e8887556:	02e50533          	mul	a0,a0,a4
    if (dnsserver != NULL) {
    e888755a:	c999                	beqz	a1,e8887570 <dns_setserver+0x2c>
      dns_servers[numdns] = (*dnsserver);
    e888755c:	6194                	ld	a3,0(a1)
    e888755e:	00a78733          	add	a4,a5,a0
    e8887562:	60a7d68b          	srd	a3,a5,a0,0
    e8887566:	659c                	ld	a5,8(a1)
    e8887568:	e71c                	sd	a5,8(a4)
    e888756a:	699c                	ld	a5,16(a1)
    e888756c:	eb1c                	sd	a5,16(a4)
    e888756e:	8082                	ret
      dns_servers[numdns] = *IP_ADDR_ANY;
    e8887570:	00049717          	auipc	a4,0x49
    e8887574:	a5070713          	addi	a4,a4,-1456 # e88cffc0 <ip_addr_any>
    e8887578:	6310                	ld	a2,0(a4)
    e888757a:	00a786b3          	add	a3,a5,a0
    e888757e:	60a7d60b          	srd	a2,a5,a0,0
    e8887582:	671c                	ld	a5,8(a4)
    e8887584:	e69c                	sd	a5,8(a3)
    e8887586:	6b1c                	ld	a5,16(a4)
    e8887588:	ea9c                	sd	a5,16(a3)
}
    e888758a:	8082                	ret

00000000e888758c <dns_tmr>:
{
    e888758c:	1141                	addi	sp,sp,-16
dns_check_entries(void)
{
  u8_t i;

  for (i = 0; i < DNS_TABLE_SIZE; ++i) {
    dns_check_entry(i);
    e888758e:	4501                	li	a0,0
{
    e8887590:	e406                	sd	ra,8(sp)
    dns_check_entry(i);
    e8887592:	e0fff0ef          	jal	ra,e88873a0 <dns_check_entry>
    e8887596:	4505                	li	a0,1
    e8887598:	e09ff0ef          	jal	ra,e88873a0 <dns_check_entry>
    e888759c:	4509                	li	a0,2
    e888759e:	e03ff0ef          	jal	ra,e88873a0 <dns_check_entry>
}
    e88875a2:	60a2                	ld	ra,8(sp)
    dns_check_entry(i);
    e88875a4:	450d                	li	a0,3
}
    e88875a6:	0141                	addi	sp,sp,16
    dns_check_entry(i);
    e88875a8:	df9ff06f          	j	e88873a0 <dns_check_entry>

00000000e88875ac <lwip_standard_chksum>:
 * @param len length of data to be summed
 * @return host order (!) lwip checksum (non-inverted Internet sum)
 */
u16_t
lwip_standard_chksum(const void *dataptr, int len)
{
    e88875ac:	1141                	addi	sp,sp,-16
  const u8_t *pb = (const u8_t *)dataptr;
  const u16_t *ps;
  u16_t t = 0;
    e88875ae:	00011723          	sh	zero,14(sp)
  u32_t sum = 0;
  int odd = ((mem_ptr_t)pb & 1);
    e88875b2:	00157693          	andi	a3,a0,1

  /* Get aligned to u16_t */
  if (odd && len > 0) {
    e88875b6:	ca81                	beqz	a3,e88875c6 <lwip_standard_chksum+0x1a>
    e88875b8:	00b05763          	blez	a1,e88875c6 <lwip_standard_chksum+0x1a>
    ((u8_t *)&t)[1] = *pb++;
    e88875bc:	9815478b          	lbuia	a5,(a0),1,0
    len--;
    e88875c0:	35fd                	addiw	a1,a1,-1
    ((u8_t *)&t)[1] = *pb++;
    e88875c2:	00f107a3          	sb	a5,15(sp)
  u32_t sum = 0;
    e88875c6:	4701                	li	a4,0
  }

  /* Add the bulk of the data */
  ps = (const u16_t *)(const void *)pb;
  while (len > 1) {
    e88875c8:	4785                	li	a5,1
    e88875ca:	04b7c263          	blt	a5,a1,e888760e <lwip_standard_chksum+0x62>
    sum += *ps++;
    len -= 2;
  }

  /* Consume left-over byte, if any */
  if (len > 0) {
    e88875ce:	00f59663          	bne	a1,a5,e88875da <lwip_standard_chksum+0x2e>
    ((u8_t *)&t)[0] = *(const u8_t *)ps;
    e88875d2:	00054783          	lbu	a5,0(a0)
    e88875d6:	00f10723          	sb	a5,14(sp)
  }

  /* Add end bytes */
  sum += t;
    e88875da:	00e15783          	lhu	a5,14(sp)
    e88875de:	9fb9                	addw	a5,a5,a4

  /* Fold 32-bit sum to 16 bits
     calling this twice is probably faster than if statements... */
  sum = FOLD_U32T(sum);
    e88875e0:	0107d51b          	srliw	a0,a5,0x10
    e88875e4:	3c07b78b          	extu	a5,a5,15,0
    e88875e8:	9d3d                	addw	a0,a0,a5
  sum = FOLD_U32T(sum);
    e88875ea:	0105579b          	srliw	a5,a0,0x10
    e88875ee:	3c05350b          	extu	a0,a0,15,0
    e88875f2:	9fa9                	addw	a5,a5,a0
    e88875f4:	853e                	mv	a0,a5

  /* Swap if alignment was odd */
  if (odd) {
    e88875f6:	ca81                	beqz	a3,e8887606 <lwip_standard_chksum+0x5a>
    sum = SWAP_BYTES_IN_WORD(sum);
    e88875f8:	0087951b          	slliw	a0,a5,0x8
    e88875fc:	3c05350b          	extu	a0,a0,15,0
    e8887600:	3c87b78b          	extu	a5,a5,15,8
    e8887604:	8d5d                	or	a0,a0,a5
  }

  return (u16_t)sum;
}
    e8887606:	3c05350b          	extu	a0,a0,15,0
    e888760a:	0141                	addi	sp,sp,16
    e888760c:	8082                	ret
    sum += *ps++;
    e888760e:	b825460b          	lhuia	a2,(a0),2,0
    len -= 2;
    e8887612:	35f9                	addiw	a1,a1,-2
    sum += *ps++;
    e8887614:	9f31                	addw	a4,a4,a2
    len -= 2;
    e8887616:	bf55                	j	e88875ca <lwip_standard_chksum+0x1e>

00000000e8887618 <inet_cksum_pseudo_base>:
#endif

/** Parts of the pseudo checksum which are common to IPv4 and IPv6 */
static u16_t
inet_cksum_pseudo_base(struct pbuf *p, u8_t proto, u16_t proto_len, u32_t acc)
{
    e8887618:	7179                	addi	sp,sp,-48
    e888761a:	f891540b          	sdd	s0,s1,(sp),0,4
    e888761e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8887622:	f052                	sd	s4,32(sp)
    e8887624:	f406                	sd	ra,40(sp)
    e8887626:	84aa                	mv	s1,a0
    e8887628:	8a2e                	mv	s4,a1
    e888762a:	8932                	mv	s2,a2
    e888762c:	8436                	mv	s0,a3
  struct pbuf *q;
  int swapped = 0;
    e888762e:	4981                	li	s3,0

  /* iterate through all pbuf in chain */
  for (q = p; q != NULL; q = q->next) {
    e8887630:	e8a9                	bnez	s1,e8887682 <inet_cksum_pseudo_base+0x6a>
      acc = SWAP_BYTES_IN_WORD(acc);
    }
    /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/
  }

  if (swapped) {
    e8887632:	00098963          	beqz	s3,e8887644 <inet_cksum_pseudo_base+0x2c>
    acc = SWAP_BYTES_IN_WORD(acc);
    e8887636:	0084179b          	slliw	a5,s0,0x8
    e888763a:	3c07b78b          	extu	a5,a5,15,0
    e888763e:	3c84340b          	extu	s0,s0,15,8
    e8887642:	8c5d                	or	s0,s0,a5
  }

  acc += (u32_t)lwip_htons((u16_t)proto);
    e8887644:	8552                	mv	a0,s4
    e8887646:	8d9ff0ef          	jal	ra,e8886f1e <lwip_htons>
    e888764a:	84aa                	mv	s1,a0
  acc += (u32_t)lwip_htons(proto_len);
    e888764c:	854a                	mv	a0,s2
    e888764e:	8d1ff0ef          	jal	ra,e8886f1e <lwip_htons>
    e8887652:	9d25                	addw	a0,a0,s1
    e8887654:	9c29                	addw	s0,s0,a0

  /* Fold 32-bit sum to 16 bits
     calling this twice is probably faster than if statements... */
  acc = FOLD_U32T(acc);
    e8887656:	0104551b          	srliw	a0,s0,0x10
    e888765a:	3c04340b          	extu	s0,s0,15,0
    e888765e:	9c29                	addw	s0,s0,a0
  acc = FOLD_U32T(acc);
    e8887660:	0104551b          	srliw	a0,s0,0x10
    e8887664:	3c04340b          	extu	s0,s0,15,0
  LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc));
  return (u16_t)~(acc & 0xffffUL);
    e8887668:	9c29                	addw	s0,s0,a0
    e888766a:	fff44513          	not	a0,s0
}
    e888766e:	70a2                	ld	ra,40(sp)
    e8887670:	f891440b          	ldd	s0,s1,(sp),0,4
    e8887674:	7a02                	ld	s4,32(sp)
    e8887676:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888767a:	3c05350b          	extu	a0,a0,15,0
    e888767e:	6145                	addi	sp,sp,48
    e8887680:	8082                	ret
    acc += LWIP_CHKSUM(q->payload, q->len);
    e8887682:	0124d583          	lhu	a1,18(s1)
    e8887686:	6488                	ld	a0,8(s1)
    e8887688:	f25ff0ef          	jal	ra,e88875ac <lwip_standard_chksum>
    e888768c:	9d21                	addw	a0,a0,s0
    if (q->len % 2 != 0) {
    e888768e:	0124d783          	lhu	a5,18(s1)
    acc = FOLD_U32T(acc);
    e8887692:	0105541b          	srliw	s0,a0,0x10
    e8887696:	3c05350b          	extu	a0,a0,15,0
    e888769a:	9d21                	addw	a0,a0,s0
    if (q->len % 2 != 0) {
    e888769c:	8b85                	andi	a5,a5,1
    acc = FOLD_U32T(acc);
    e888769e:	842a                	mv	s0,a0
    if (q->len % 2 != 0) {
    e88876a0:	cb91                	beqz	a5,e88876b4 <inet_cksum_pseudo_base+0x9c>
      acc = SWAP_BYTES_IN_WORD(acc);
    e88876a2:	0085141b          	slliw	s0,a0,0x8
    e88876a6:	3c04340b          	extu	s0,s0,15,0
    e88876aa:	3c85350b          	extu	a0,a0,15,8
    e88876ae:	0019c993          	xori	s3,s3,1
    e88876b2:	8c49                	or	s0,s0,a0
  for (q = p; q != NULL; q = q->next) {
    e88876b4:	6084                	ld	s1,0(s1)
    e88876b6:	bfad                	j	e8887630 <inet_cksum_pseudo_base+0x18>

00000000e88876b8 <inet_cksum_pseudo_partial_base>:

/** Parts of the pseudo checksum which are common to IPv4 and IPv6 */
static u16_t
inet_cksum_pseudo_partial_base(struct pbuf *p, u8_t proto, u16_t proto_len,
                               u16_t chksum_len, u32_t acc)
{
    e88876b8:	711d                	addi	sp,sp,-96
    e88876ba:	e4a6                	sd	s1,72(sp)
    if (chklen > chksum_len) {
      chklen = chksum_len;
    }
    acc += LWIP_CHKSUM(q->payload, chklen);
    chksum_len = (u16_t)(chksum_len - chklen);
    LWIP_ASSERT("delete me", chksum_len < 0x7fff);
    e88876bc:	64a1                	lui	s1,0x8
{
    e88876be:	e8a2                	sd	s0,80(sp)
    e88876c0:	e0ca                	sd	s2,64(sp)
    e88876c2:	fc4e                	sd	s3,56(sp)
    e88876c4:	f852                	sd	s4,48(sp)
    e88876c6:	f456                	sd	s5,40(sp)
    e88876c8:	f05a                	sd	s6,32(sp)
    e88876ca:	e862                	sd	s8,16(sp)
    e88876cc:	e466                	sd	s9,8(sp)
    e88876ce:	e06a                	sd	s10,0(sp)
    e88876d0:	ec86                	sd	ra,88(sp)
    e88876d2:	ec5e                	sd	s7,24(sp)
    e88876d4:	8caa                	mv	s9,a0
    e88876d6:	89ae                	mv	s3,a1
    e88876d8:	8932                	mv	s2,a2
    e88876da:	8c36                	mv	s8,a3
    e88876dc:	843a                	mv	s0,a4
  int swapped = 0;
    e88876de:	4d01                	li	s10,0
    LWIP_ASSERT("delete me", chksum_len < 0x7fff);
    e88876e0:	14f9                	addi	s1,s1,-2
    e88876e2:	00048a17          	auipc	s4,0x48
    e88876e6:	0dea0a13          	addi	s4,s4,222 # e88cf7c0 <err_to_errno_table+0x6e8>
    e88876ea:	00048a97          	auipc	s5,0x48
    e88876ee:	166a8a93          	addi	s5,s5,358 # e88cf850 <err_to_errno_table+0x778>
    e88876f2:	00048b17          	auipc	s6,0x48
    e88876f6:	9beb0b13          	addi	s6,s6,-1602 # e88cf0b0 <kSinTable1024+0x900>
  for (q = p; (q != NULL) && (chksum_len > 0); q = q->next) {
    e88876fa:	040c9963          	bnez	s9,e888774c <inet_cksum_pseudo_partial_base+0x94>
      acc = SWAP_BYTES_IN_WORD(acc);
    }
    /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/
  }

  if (swapped) {
    e88876fe:	0c0d1063          	bnez	s10,e88877be <inet_cksum_pseudo_partial_base+0x106>
    acc = SWAP_BYTES_IN_WORD(acc);
  }

  acc += (u32_t)lwip_htons((u16_t)proto);
    e8887702:	854e                	mv	a0,s3
    e8887704:	81bff0ef          	jal	ra,e8886f1e <lwip_htons>
    e8887708:	84aa                	mv	s1,a0
  acc += (u32_t)lwip_htons(proto_len);
    e888770a:	854a                	mv	a0,s2
    e888770c:	813ff0ef          	jal	ra,e8886f1e <lwip_htons>
    e8887710:	9d25                	addw	a0,a0,s1
    e8887712:	9c29                	addw	s0,s0,a0

  /* Fold 32-bit sum to 16 bits
     calling this twice is probably faster than if statements... */
  acc = FOLD_U32T(acc);
    e8887714:	0104551b          	srliw	a0,s0,0x10
    e8887718:	3c04340b          	extu	s0,s0,15,0
    e888771c:	9c29                	addw	s0,s0,a0
  acc = FOLD_U32T(acc);
    e888771e:	0104551b          	srliw	a0,s0,0x10
    e8887722:	3c04340b          	extu	s0,s0,15,0
  LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc));
  return (u16_t)~(acc & 0xffffUL);
    e8887726:	9c29                	addw	s0,s0,a0
    e8887728:	fff44513          	not	a0,s0
}
    e888772c:	60e6                	ld	ra,88(sp)
    e888772e:	6446                	ld	s0,80(sp)
    e8887730:	64a6                	ld	s1,72(sp)
    e8887732:	6906                	ld	s2,64(sp)
    e8887734:	79e2                	ld	s3,56(sp)
    e8887736:	7a42                	ld	s4,48(sp)
    e8887738:	7aa2                	ld	s5,40(sp)
    e888773a:	7b02                	ld	s6,32(sp)
    e888773c:	6be2                	ld	s7,24(sp)
    e888773e:	6c42                	ld	s8,16(sp)
    e8887740:	6ca2                	ld	s9,8(sp)
    e8887742:	6d02                	ld	s10,0(sp)
    e8887744:	3c05350b          	extu	a0,a0,15,0
    e8887748:	6125                	addi	sp,sp,96
    e888774a:	8082                	ret
  for (q = p; (q != NULL) && (chksum_len > 0); q = q->next) {
    e888774c:	fa0c09e3          	beqz	s8,e88876fe <inet_cksum_pseudo_partial_base+0x46>
    chklen = q->len;
    e8887750:	012cd783          	lhu	a5,18(s9)
    if (chklen > chksum_len) {
    e8887754:	3c0c3b8b          	extu	s7,s8,15,0
    e8887758:	0187f463          	bgeu	a5,s8,e8887760 <inet_cksum_pseudo_partial_base+0xa8>
    e888775c:	3c07bb8b          	extu	s7,a5,15,0
    acc += LWIP_CHKSUM(q->payload, chklen);
    e8887760:	008cb503          	ld	a0,8(s9)
    e8887764:	85de                	mv	a1,s7
    chksum_len = (u16_t)(chksum_len - chklen);
    e8887766:	417c0bbb          	subw	s7,s8,s7
    acc += LWIP_CHKSUM(q->payload, chklen);
    e888776a:	e43ff0ef          	jal	ra,e88875ac <lwip_standard_chksum>
    chksum_len = (u16_t)(chksum_len - chklen);
    e888776e:	3c0bbc0b          	extu	s8,s7,15,0
    acc += LWIP_CHKSUM(q->payload, chklen);
    e8887772:	9c29                	addw	s0,s0,a0
    LWIP_ASSERT("delete me", chksum_len < 0x7fff);
    e8887774:	0184ff63          	bgeu	s1,s8,e8887792 <inet_cksum_pseudo_partial_base+0xda>
    e8887778:	02f00593          	li	a1,47
    e888777c:	8552                	mv	a0,s4
    e888777e:	bfbf40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8887782:	00150693          	addi	a3,a0,1
    e8887786:	1a000613          	li	a2,416
    e888778a:	85d6                	mv	a1,s5
    e888778c:	855a                	mv	a0,s6
    e888778e:	b39f40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (q->len % 2 != 0) {
    e8887792:	012cd783          	lhu	a5,18(s9)
    acc = FOLD_U32T(acc);
    e8887796:	0104571b          	srliw	a4,s0,0x10
    e888779a:	3c04340b          	extu	s0,s0,15,0
    e888779e:	9f21                	addw	a4,a4,s0
    if (q->len % 2 != 0) {
    e88877a0:	8b85                	andi	a5,a5,1
    acc = FOLD_U32T(acc);
    e88877a2:	843a                	mv	s0,a4
    if (q->len % 2 != 0) {
    e88877a4:	cb91                	beqz	a5,e88877b8 <inet_cksum_pseudo_partial_base+0x100>
      acc = SWAP_BYTES_IN_WORD(acc);
    e88877a6:	0087141b          	slliw	s0,a4,0x8
    e88877aa:	3c04340b          	extu	s0,s0,15,0
    e88877ae:	3c87370b          	extu	a4,a4,15,8
    e88877b2:	001d4d13          	xori	s10,s10,1
    e88877b6:	8c59                	or	s0,s0,a4
  for (q = p; (q != NULL) && (chksum_len > 0); q = q->next) {
    e88877b8:	000cbc83          	ld	s9,0(s9)
    e88877bc:	bf3d                	j	e88876fa <inet_cksum_pseudo_partial_base+0x42>
    acc = SWAP_BYTES_IN_WORD(acc);
    e88877be:	0084179b          	slliw	a5,s0,0x8
    e88877c2:	3c07b78b          	extu	a5,a5,15,0
    e88877c6:	3c84340b          	extu	s0,s0,15,8
    e88877ca:	8c5d                	or	s0,s0,a5
    e88877cc:	bf1d                	j	e8887702 <inet_cksum_pseudo_partial_base+0x4a>

00000000e88877ce <inet_chksum_pseudo>:
  addr = ip4_addr_get_u32(dest);
    e88877ce:	4318                	lw	a4,0(a4)
  addr = ip4_addr_get_u32(src);
    e88877d0:	429c                	lw	a5,0(a3)
  acc = (u32_t)(acc + (addr & 0xffffUL));
    e88877d2:	3c07368b          	extu	a3,a4,15,0
  acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e88877d6:	0107571b          	srliw	a4,a4,0x10
    e88877da:	9f35                	addw	a4,a4,a3
  acc = (addr & 0xffffUL);
    e88877dc:	3c07b68b          	extu	a3,a5,15,0
    e88877e0:	9f35                	addw	a4,a4,a3
  acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e88877e2:	0107d79b          	srliw	a5,a5,0x10
  acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e88877e6:	9fb9                	addw	a5,a5,a4
  acc = FOLD_U32T(acc);
    e88877e8:	0107d69b          	srliw	a3,a5,0x10
    e88877ec:	3c07b78b          	extu	a5,a5,15,0
    e88877f0:	9fb5                	addw	a5,a5,a3
  acc = FOLD_U32T(acc);
    e88877f2:	0107d69b          	srliw	a3,a5,0x10
    e88877f6:	3c07b78b          	extu	a5,a5,15,0
  return inet_cksum_pseudo_base(p, proto, proto_len, acc);
    e88877fa:	9ebd                	addw	a3,a3,a5
    e88877fc:	e1dff06f          	j	e8887618 <inet_cksum_pseudo_base>

00000000e8887800 <ip6_chksum_pseudo>:
{
    e8887800:	4881                	li	a7,0
  u32_t acc = 0;
    e8887802:	4801                	li	a6,0
  for (addr_part = 0; addr_part < 4; addr_part++) {
    e8887804:	4e41                	li	t3,16
    addr = src->addr[addr_part];
    e8887806:	4116c78b          	lrw	a5,a3,a7,0
    addr = dest->addr[addr_part];
    e888780a:	4117430b          	lrw	t1,a4,a7,0
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e888780e:	0891                	addi	a7,a7,4
    acc = (u32_t)(acc + (addr & 0xffffUL));
    e8887810:	3c07be8b          	extu	t4,a5,15,0
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e8887814:	0107d79b          	srliw	a5,a5,0x10
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e8887818:	01d787bb          	addw	a5,a5,t4
    acc = (u32_t)(acc + (addr & 0xffffUL));
    e888781c:	3c033e8b          	extu	t4,t1,15,0
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e8887820:	01d787bb          	addw	a5,a5,t4
    e8887824:	0103531b          	srliw	t1,t1,0x10
    e8887828:	006787bb          	addw	a5,a5,t1
    e888782c:	0107883b          	addw	a6,a5,a6
  for (addr_part = 0; addr_part < 4; addr_part++) {
    e8887830:	fdc89be3          	bne	a7,t3,e8887806 <ip6_chksum_pseudo+0x6>
  acc = FOLD_U32T(acc);
    e8887834:	0108579b          	srliw	a5,a6,0x10
    e8887838:	3c08380b          	extu	a6,a6,15,0
    e888783c:	010787bb          	addw	a5,a5,a6
  acc = FOLD_U32T(acc);
    e8887840:	0107d69b          	srliw	a3,a5,0x10
    e8887844:	3c07b78b          	extu	a5,a5,15,0
  return inet_cksum_pseudo_base(p, proto, proto_len, acc);
    e8887848:	9ebd                	addw	a3,a3,a5
    e888784a:	dcfff06f          	j	e8887618 <inet_cksum_pseudo_base>

00000000e888784e <ip_chksum_pseudo>:
{
    e888784e:	882a                	mv	a6,a0
    e8887850:	88ae                	mv	a7,a1
    e8887852:	8332                	mv	t1,a2
    e8887854:	8e36                	mv	t3,a3
    e8887856:	87ba                	mv	a5,a4
  if (IP_IS_V6(dest)) {
    e8887858:	cb01                	beqz	a4,e8887868 <ip_chksum_pseudo+0x1a>
    e888785a:	01474f03          	lbu	t5,20(a4)
    e888785e:	4e99                	li	t4,6
    e8887860:	01df1463          	bne	t5,t4,e8887868 <ip_chksum_pseudo+0x1a>
    return ip6_chksum_pseudo(p, proto, proto_len, ip_2_ip6(src), ip_2_ip6(dest));
    e8887864:	f9dff06f          	j	e8887800 <ip6_chksum_pseudo>
    return inet_chksum_pseudo(p, proto, proto_len, ip_2_ip4(src), ip_2_ip4(dest));
    e8887868:	873e                	mv	a4,a5
    e888786a:	86f2                	mv	a3,t3
    e888786c:	861a                	mv	a2,t1
    e888786e:	85c6                	mv	a1,a7
    e8887870:	8542                	mv	a0,a6
    e8887872:	f5dff06f          	j	e88877ce <inet_chksum_pseudo>

00000000e8887876 <inet_chksum_pseudo_partial>:
  u32_t addr;

  addr = ip4_addr_get_u32(src);
  acc = (addr & 0xffffUL);
  acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
  addr = ip4_addr_get_u32(dest);
    e8887876:	439c                	lw	a5,0(a5)
  addr = ip4_addr_get_u32(src);
    e8887878:	4318                	lw	a4,0(a4)
  acc = (u32_t)(acc + (addr & 0xffffUL));
    e888787a:	3c07b80b          	extu	a6,a5,15,0
  acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e888787e:	0107d79b          	srliw	a5,a5,0x10
    e8887882:	010787bb          	addw	a5,a5,a6
  acc = (addr & 0xffffUL);
    e8887886:	3c07380b          	extu	a6,a4,15,0
    e888788a:	010787bb          	addw	a5,a5,a6
  acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e888788e:	0107571b          	srliw	a4,a4,0x10
  acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e8887892:	9f3d                	addw	a4,a4,a5
  /* fold down to 16 bits */
  acc = FOLD_U32T(acc);
    e8887894:	0107579b          	srliw	a5,a4,0x10
    e8887898:	3c07370b          	extu	a4,a4,15,0
    e888789c:	9f3d                	addw	a4,a4,a5
  acc = FOLD_U32T(acc);
    e888789e:	0107579b          	srliw	a5,a4,0x10
    e88878a2:	3c07370b          	extu	a4,a4,15,0

  return inet_cksum_pseudo_partial_base(p, proto, proto_len, chksum_len, acc);
    e88878a6:	9f3d                	addw	a4,a4,a5
    e88878a8:	e11ff06f          	j	e88876b8 <inet_cksum_pseudo_partial_base>

00000000e88878ac <ip6_chksum_pseudo_partial>:
 * @return checksum (as u16_t) to be saved directly in the protocol header
 */
u16_t
ip6_chksum_pseudo_partial(struct pbuf *p, u8_t proto, u16_t proto_len,
                          u16_t chksum_len, const ip6_addr_t *src, const ip6_addr_t *dest)
{
    e88878ac:	4301                	li	t1,0
  u32_t acc = 0;
    e88878ae:	4881                	li	a7,0
  u32_t addr;
  u8_t addr_part;

  for (addr_part = 0; addr_part < 4; addr_part++) {
    e88878b0:	4ec1                	li	t4,16
    addr = src->addr[addr_part];
    e88878b2:	4067480b          	lrw	a6,a4,t1,0
    acc = (u32_t)(acc + (addr & 0xffffUL));
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    addr = dest->addr[addr_part];
    e88878b6:	4067ce0b          	lrw	t3,a5,t1,0
    acc = (u32_t)(acc + (addr & 0xffffUL));
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e88878ba:	0311                	addi	t1,t1,4
    acc = (u32_t)(acc + (addr & 0xffffUL));
    e88878bc:	3c083f0b          	extu	t5,a6,15,0
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e88878c0:	0108581b          	srliw	a6,a6,0x10
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e88878c4:	01e8083b          	addw	a6,a6,t5
    acc = (u32_t)(acc + (addr & 0xffffUL));
    e88878c8:	3c0e3f0b          	extu	t5,t3,15,0
    acc = (u32_t)(acc + ((addr >> 16) & 0xffffUL));
    e88878cc:	01e8083b          	addw	a6,a6,t5
    e88878d0:	010e5e1b          	srliw	t3,t3,0x10
    e88878d4:	01c8083b          	addw	a6,a6,t3
    e88878d8:	011808bb          	addw	a7,a6,a7
  for (addr_part = 0; addr_part < 4; addr_part++) {
    e88878dc:	fdd31be3          	bne	t1,t4,e88878b2 <ip6_chksum_pseudo_partial+0x6>
  }
  /* fold down to 16 bits */
  acc = FOLD_U32T(acc);
    e88878e0:	0108d79b          	srliw	a5,a7,0x10
    e88878e4:	3c08b88b          	extu	a7,a7,15,0
    e88878e8:	011787bb          	addw	a5,a5,a7
  acc = FOLD_U32T(acc);
    e88878ec:	0107d71b          	srliw	a4,a5,0x10
    e88878f0:	3c07b78b          	extu	a5,a5,15,0

  return inet_cksum_pseudo_partial_base(p, proto, proto_len, chksum_len, acc);
    e88878f4:	9f3d                	addw	a4,a4,a5
    e88878f6:	dc3ff06f          	j	e88876b8 <inet_cksum_pseudo_partial_base>

00000000e88878fa <ip_chksum_pseudo_partial>:
 * @return checksum (as u16_t) to be saved directly in the protocol header
 */
u16_t
ip_chksum_pseudo_partial(struct pbuf *p, u8_t proto, u16_t proto_len,
                         u16_t chksum_len, const ip_addr_t *src, const ip_addr_t *dest)
{
    e88878fa:	88aa                	mv	a7,a0
    e88878fc:	832e                	mv	t1,a1
    e88878fe:	8e32                	mv	t3,a2
    e8887900:	8eb6                	mv	t4,a3
    e8887902:	8f3a                	mv	t5,a4
    e8887904:	883e                	mv	a6,a5
#if LWIP_IPV6
  if (IP_IS_V6(dest)) {
    e8887906:	cb81                	beqz	a5,e8887916 <ip_chksum_pseudo_partial+0x1c>
    e8887908:	0147c283          	lbu	t0,20(a5)
    e888790c:	4f99                	li	t6,6
    e888790e:	01f29463          	bne	t0,t6,e8887916 <ip_chksum_pseudo_partial+0x1c>
    return ip6_chksum_pseudo_partial(p, proto, proto_len, chksum_len, ip_2_ip6(src), ip_2_ip6(dest));
    e8887912:	f9bff06f          	j	e88878ac <ip6_chksum_pseudo_partial>
#if LWIP_IPV4 && LWIP_IPV6
  else
#endif /* LWIP_IPV4 && LWIP_IPV6 */
#if LWIP_IPV4
  {
    return inet_chksum_pseudo_partial(p, proto, proto_len, chksum_len, ip_2_ip4(src), ip_2_ip4(dest));
    e8887916:	87c2                	mv	a5,a6
    e8887918:	877a                	mv	a4,t5
    e888791a:	86f6                	mv	a3,t4
    e888791c:	8672                	mv	a2,t3
    e888791e:	859a                	mv	a1,t1
    e8887920:	8546                	mv	a0,a7
    e8887922:	f55ff06f          	j	e8887876 <inet_chksum_pseudo_partial>

00000000e8887926 <inet_chksum>:
 * @return checksum (as u16_t) to be saved directly in the protocol header
 */

u16_t
inet_chksum(const void *dataptr, u16_t len)
{
    e8887926:	1141                	addi	sp,sp,-16
    e8887928:	e406                	sd	ra,8(sp)
  return (u16_t)~(unsigned int)LWIP_CHKSUM(dataptr, len);
    e888792a:	c83ff0ef          	jal	ra,e88875ac <lwip_standard_chksum>
    e888792e:	fff54513          	not	a0,a0
}
    e8887932:	60a2                	ld	ra,8(sp)
    e8887934:	3c05350b          	extu	a0,a0,15,0
    e8887938:	0141                	addi	sp,sp,16
    e888793a:	8082                	ret

00000000e888793c <inet_chksum_pbuf>:
 * @param p pbuf chain over that the checksum should be calculated
 * @return checksum (as u16_t) to be saved directly in the protocol header
 */
u16_t
inet_chksum_pbuf(struct pbuf *p)
{
    e888793c:	1101                	addi	sp,sp,-32
    e888793e:	f891540b          	sdd	s0,s1,(sp),0,4
    e8887942:	e84a                	sd	s2,16(sp)
    e8887944:	ec06                	sd	ra,24(sp)
    e8887946:	84aa                	mv	s1,a0
  u32_t acc;
  struct pbuf *q;
  int swapped = 0;
    e8887948:	4901                	li	s2,0

  acc = 0;
    e888794a:	4401                	li	s0,0
  for (q = p; q != NULL; q = q->next) {
    e888794c:	e485                	bnez	s1,e8887974 <inet_chksum_pbuf+0x38>
      swapped = !swapped;
      acc = SWAP_BYTES_IN_WORD(acc);
    }
  }

  if (swapped) {
    e888794e:	00090963          	beqz	s2,e8887960 <inet_chksum_pbuf+0x24>
    acc = SWAP_BYTES_IN_WORD(acc);
    e8887952:	0084179b          	slliw	a5,s0,0x8
    e8887956:	3c07b78b          	extu	a5,a5,15,0
    e888795a:	3c84340b          	extu	s0,s0,15,8
    e888795e:	8c5d                	or	s0,s0,a5
  }
  return (u16_t)~(acc & 0xffffUL);
    e8887960:	fff44513          	not	a0,s0
}
    e8887964:	60e2                	ld	ra,24(sp)
    e8887966:	f891440b          	ldd	s0,s1,(sp),0,4
    e888796a:	6942                	ld	s2,16(sp)
    e888796c:	3c05350b          	extu	a0,a0,15,0
    e8887970:	6105                	addi	sp,sp,32
    e8887972:	8082                	ret
    acc += LWIP_CHKSUM(q->payload, q->len);
    e8887974:	0124d583          	lhu	a1,18(s1) # 8012 <memcmp-0xe87f7fee>
    e8887978:	6488                	ld	a0,8(s1)
    e888797a:	c33ff0ef          	jal	ra,e88875ac <lwip_standard_chksum>
    e888797e:	9d21                	addw	a0,a0,s0
    if (q->len % 2 != 0) {
    e8887980:	0124d783          	lhu	a5,18(s1)
    acc = FOLD_U32T(acc);
    e8887984:	0105541b          	srliw	s0,a0,0x10
    e8887988:	3c05350b          	extu	a0,a0,15,0
    e888798c:	9d21                	addw	a0,a0,s0
    if (q->len % 2 != 0) {
    e888798e:	8b85                	andi	a5,a5,1
    acc = FOLD_U32T(acc);
    e8887990:	842a                	mv	s0,a0
    if (q->len % 2 != 0) {
    e8887992:	cb91                	beqz	a5,e88879a6 <inet_chksum_pbuf+0x6a>
      acc = SWAP_BYTES_IN_WORD(acc);
    e8887994:	0085141b          	slliw	s0,a0,0x8
    e8887998:	3c04340b          	extu	s0,s0,15,0
    e888799c:	3c85350b          	extu	a0,a0,15,8
    e88879a0:	00194913          	xori	s2,s2,1
    e88879a4:	8c49                	or	s0,s0,a0
  for (q = p; q != NULL; q = q->next) {
    e88879a6:	6084                	ld	s1,0(s1)
    e88879a8:	b755                	j	e888794c <inet_chksum_pbuf+0x10>

00000000e88879aa <lwip_chksum_copy>:
 * For architectures with big caches, data might still be in cache when
 * generating the checksum after copying.
 */
u16_t
lwip_chksum_copy(void *dst, const void *src, u16_t len)
{
    e88879aa:	1101                	addi	sp,sp,-32
    e88879ac:	e422                	sd	s0,8(sp)
    e88879ae:	e826                	sd	s1,16(sp)
    e88879b0:	ec06                	sd	ra,24(sp)
    e88879b2:	842a                	mv	s0,a0
    e88879b4:	84b2                	mv	s1,a2
  MEMCPY(dst, src, len);
    e88879b6:	9ebf40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  return LWIP_CHKSUM(dst, len);
    e88879ba:	8522                	mv	a0,s0
}
    e88879bc:	6422                	ld	s0,8(sp)
    e88879be:	60e2                	ld	ra,24(sp)
  return LWIP_CHKSUM(dst, len);
    e88879c0:	85a6                	mv	a1,s1
}
    e88879c2:	64c2                	ld	s1,16(sp)
    e88879c4:	6105                	addi	sp,sp,32
  return LWIP_CHKSUM(dst, len);
    e88879c6:	be7ff06f          	j	e88875ac <lwip_standard_chksum>

00000000e88879ca <lwip_init>:
 * Initialize all modules.
 * Use this in NO_SYS mode. Use tcpip_init() otherwise.
 */
void
lwip_init(void)
{
    e88879ca:	1141                	addi	sp,sp,-16
    e88879cc:	e406                	sd	ra,8(sp)
#ifndef LWIP_SKIP_PACKING_CHECK
  LWIP_ASSERT("Struct packing not implemented correctly. Check your lwIP port.", sizeof(struct packed_struct_test) == PACKED_STRUCT_TEST_EXPECTED_SIZE);
#endif

  /* Modules initialization */
  stats_init();
    e88879ce:	41d080ef          	jal	ra,e88905ea <stats_init>
#if !NO_SYS
  sys_init();
    e88879d2:	132100ef          	jal	ra,e8897b04 <sys_init>
#endif /* !NO_SYS */
  mem_init();
    e88879d6:	6e2060ef          	jal	ra,e888e0b8 <mem_init>
  memp_init();
    e88879da:	770060ef          	jal	ra,e888e14a <memp_init>
  pbuf_init();
  netif_init();
    e88879de:	3e2070ef          	jal	ra,e888edc0 <netif_init>
#endif /* LWIP_IPV4 */
#if LWIP_RAW
  raw_init();
#endif /* LWIP_RAW */
#if LWIP_UDP
  udp_init();
    e88879e2:	5d30e0ef          	jal	ra,e88967b4 <udp_init>
#endif /* LWIP_UDP */
#if LWIP_TCP
  tcp_init();
    e88879e6:	531080ef          	jal	ra,e8890716 <tcp_init>
#endif /* LWIP_TCP */
#if LWIP_IGMP
  igmp_init();
    e88879ea:	4df000ef          	jal	ra,e88886c8 <igmp_init>
#endif /* LWIP_IGMP */
#if LWIP_DNS
  dns_init();
    e88879ee:	b55ff0ef          	jal	ra,e8887542 <dns_init>
#endif

#if LWIP_TIMERS
  sys_timeouts_init();
#endif /* LWIP_TIMERS */
}
    e88879f2:	60a2                	ld	ra,8(sp)
    e88879f4:	0141                	addi	sp,sp,16
  sys_timeouts_init();
    e88879f6:	4f10e06f          	j	e88966e6 <sys_timeouts_init>

00000000e88879fa <ip_input>:
 * Don't call directly, pass to netif_add() and call netif->input().
 */
err_t
ip_input(struct pbuf *p, struct netif *inp)
{
  if (p != NULL) {
    e88879fa:	cd01                	beqz	a0,e8887a12 <ip_input+0x18>
    if (IP_HDR_GET_VERSION(p->payload) == 6) {
    e88879fc:	651c                	ld	a5,8(a0)
    e88879fe:	4719                	li	a4,6
    e8887a00:	0007c783          	lbu	a5,0(a5)
    e8887a04:	8391                	srli	a5,a5,0x4
    e8887a06:	00e79463          	bne	a5,a4,e8887a0e <ip_input+0x14>
      return ip6_input(p, inp);
    e8887a0a:	3db0206f          	j	e888a5e4 <ip6_input>
    }
    return ip4_input(p, inp);
    e8887a0e:	4c40106f          	j	e8888ed2 <ip4_input>
  }
  return ERR_VAL;
}
    e8887a12:	5569                	li	a0,-6
    e8887a14:	8082                	ret

00000000e8887a16 <etharp_free_entry>:
#endif /* ARP_QUEUEING */

/** Clean up ARP table entries */
static void
etharp_free_entry(int i)
{
    e8887a16:	1101                	addi	sp,sp,-32
    e8887a18:	f891540b          	sdd	s0,s1,(sp),0,4
  /* remove from SNMP ARP index tree */
  mib2_remove_arp_entry(arp_table[i].netif, &arp_table[i].ipaddr);
  /* and empty packet queue */
  if (arp_table[i].q != NULL) {
    e8887a1c:	02800493          	li	s1,40
    e8887a20:	029504b3          	mul	s1,a0,s1
    e8887a24:	0005e417          	auipc	s0,0x5e
    e8887a28:	17c40413          	addi	s0,s0,380 # e88e5ba0 <arp_table>
{
    e8887a2c:	e84a                	sd	s2,16(sp)
    e8887a2e:	ec06                	sd	ra,24(sp)
    e8887a30:	892a                	mv	s2,a0
  if (arp_table[i].q != NULL) {
    e8887a32:	6094450b          	lrd	a0,s0,s1,0
    e8887a36:	c509                	beqz	a0,e8887a40 <etharp_free_entry+0x2a>
    /* remove all queued packets */
    LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_free_entry: freeing entry %"U16_F", packet queue %p.\n", (u16_t)i, (void *)(arp_table[i].q)));
    free_etharp_q(arp_table[i].q);
    e8887a38:	015070ef          	jal	ra,e888f24c <pbuf_free>
    arp_table[i].q = NULL;
    e8887a3c:	6094500b          	srd	zero,s0,s1,0
  }
  /* recycle entry for re-use */
  arp_table[i].state = ETHARP_STATE_EMPTY;
    e8887a40:	02800793          	li	a5,40
    e8887a44:	20f9140b          	mula	s0,s2,a5
    e8887a48:	02040023          	sb	zero,32(s0)
  arp_table[i].ctime = 0;
  arp_table[i].netif = NULL;
  ip4_addr_set_zero(&arp_table[i].ipaddr);
  arp_table[i].ethaddr = ethzero;
#endif /* LWIP_DEBUG */
}
    e8887a4c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8887a50:	60e2                	ld	ra,24(sp)
    e8887a52:	6942                	ld	s2,16(sp)
    e8887a54:	6105                	addi	sp,sp,32
    e8887a56:	8082                	ret

00000000e8887a58 <etharp_find_entry>:
 * @return The ARP entry index that matched or is created, ERR_MEM if no
 * entry is found or could be recycled.
 */
static s16_t
etharp_find_entry(const ip4_addr_t *ipaddr, u8_t flags, struct netif *netif)
{
    e8887a58:	7179                	addi	sp,sp,-48
    e8887a5a:	0005e717          	auipc	a4,0x5e
    e8887a5e:	14670713          	addi	a4,a4,326 # e88e5ba0 <arp_table>
    e8887a62:	f891540b          	sdd	s0,s1,(sp),0,4
    e8887a66:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8887a6a:	f406                	sd	ra,40(sp)
    e8887a6c:	f052                	sd	s4,32(sp)
  s16_t empty = ARP_TABLE_SIZE;
  s16_t i = 0;
  /* oldest entry with packets on queue */
  s16_t old_queue = ARP_TABLE_SIZE;
  /* its age */
  u16_t age_queue = 0, age_pending = 0, age_stable = 0;
    e8887a6e:	4f01                	li	t5,0
    e8887a70:	4e81                	li	t4,0
    e8887a72:	4e01                	li	t3,0
  s16_t old_queue = ARP_TABLE_SIZE;
    e8887a74:	4329                	li	t1,10
   * 4) remember the oldest pending entry with queued packets (if any)
   * 5) search for a matching IP entry, either pending or stable
   *    until 5 matches, or all entries are searched for.
   */

  for (i = 0; i < ARP_TABLE_SIZE; ++i) {
    e8887a76:	4781                	li	a5,0
  s16_t empty = ARP_TABLE_SIZE;
    e8887a78:	4929                	li	s2,10
  s16_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE;
    e8887a7a:	4429                	li	s0,10
    e8887a7c:	48a9                	li	a7,10
    e8887a7e:	84ba                	mv	s1,a4
    u8_t state = arp_table[i].state;
    /* no empty entry found yet and now we do find one? */
    if ((empty == ARP_TABLE_SIZE) && (state == ETHARP_STATE_EMPTY)) {
    e8887a80:	4829                	li	a6,10
        LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: found matching entry %d\n", (int)i));
        /* found exact IP address match, simply bail out */
        return i;
      }
      /* pending entry? */
      if (state == ETHARP_STATE_PENDING) {
    e8887a82:	4385                	li	t2,1
        }
        /* stable entry? */
      } else if (state >= ETHARP_STATE_STABLE) {
#if ETHARP_SUPPORT_STATIC_ENTRIES
        /* don't record old_stable for static entries since they never expire */
        if (state < ETHARP_STATE_STATIC)
    e8887a84:	4991                	li	s3,4
    if ((empty == ARP_TABLE_SIZE) && (state == ETHARP_STATE_EMPTY)) {
    e8887a86:	00090f9b          	sext.w	t6,s2
    u8_t state = arp_table[i].state;
    e8887a8a:	02074683          	lbu	a3,32(a4)
    if ((empty == ARP_TABLE_SIZE) && (state == ETHARP_STATE_EMPTY)) {
    e8887a8e:	050f9463          	bne	t6,a6,e8887ad6 <etharp_find_entry+0x7e>
    e8887a92:	14068b63          	beqz	a3,e8887be8 <etharp_find_entry+0x190>
      if (ipaddr && ip4_addr_cmp(ipaddr, &arp_table[i].ipaddr)
    e8887a96:	cd09                	beqz	a0,e8887ab0 <etharp_find_entry+0x58>
    e8887a98:	00052283          	lw	t0,0(a0)
    e8887a9c:	00872f83          	lw	t6,8(a4)
    e8887aa0:	01f29863          	bne	t0,t6,e8887ab0 <etharp_find_entry+0x58>
          && ((netif == NULL) || (netif == arp_table[i].netif))
    e8887aa4:	14060e63          	beqz	a2,e8887c00 <etharp_find_entry+0x1a8>
    e8887aa8:	01073f83          	ld	t6,16(a4)
    e8887aac:	14cf8a63          	beq	t6,a2,e8887c00 <etharp_find_entry+0x1a8>
      if (state == ETHARP_STATE_PENDING) {
    e8887ab0:	10769d63          	bne	a3,t2,e8887bca <etharp_find_entry+0x172>
        if (arp_table[i].q != NULL) {
    e8887ab4:	01e75f83          	lhu	t6,30(a4)
    e8887ab8:	00073283          	ld	t0,0(a4)
    e8887abc:	000f869b          	sext.w	a3,t6
    e8887ac0:	0e028c63          	beqz	t0,e8887bb8 <etharp_find_entry+0x160>
          if (arp_table[i].ctime >= age_queue) {
    e8887ac4:	000e029b          	sext.w	t0,t3
    e8887ac8:	0056ba33          	sltu	s4,a3,t0
    e8887acc:	414f9e0b          	mveqz	t3,t6,s4
    e8887ad0:	4147930b          	mveqz	t1,a5,s4
    e8887ad4:	a011                	j	e8887ad8 <etharp_find_entry+0x80>
    } else if (state != ETHARP_STATE_EMPTY) {
    e8887ad6:	f2e1                	bnez	a3,e8887a96 <etharp_find_entry+0x3e>
  for (i = 0; i < ARP_TABLE_SIZE; ++i) {
    e8887ad8:	2785                	addiw	a5,a5,1
    e8887ada:	3c07a78b          	ext	a5,a5,15,0
    e8887ade:	02870713          	addi	a4,a4,40
    e8887ae2:	fb0792e3          	bne	a5,a6,e8887a86 <etharp_find_entry+0x2e>
    }
  }
  /* { we have no match } => try to create a new entry */

  /* don't create new entry, only search? */
  if (((flags & ETHARP_FLAG_FIND_ONLY) != 0) ||
    e8887ae6:	0025f713          	andi	a4,a1,2
      /* or no empty entry found and not allowed to recycle? */
      ((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_FLAG_TRY_HARD) == 0))) {
    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: no empty entry found and not allowed to recycle\n"));
    return (s16_t)ERR_MEM;
    e8887aea:	57fd                	li	a5,-1
  if (((flags & ETHARP_FLAG_FIND_ONLY) != 0) ||
    e8887aec:	10071a63          	bnez	a4,e8887c00 <etharp_find_entry+0x1a8>
    e8887af0:	0009079b          	sext.w	a5,s2
    e8887af4:	8a32                	mv	s4,a2
    e8887af6:	89aa                	mv	s3,a0
    e8887af8:	05079c63          	bne	a5,a6,e8887b50 <etharp_find_entry+0xf8>
      ((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_FLAG_TRY_HARD) == 0))) {
    e8887afc:	8985                	andi	a1,a1,1
    return (s16_t)ERR_MEM;
    e8887afe:	57fd                	li	a5,-1
      ((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_FLAG_TRY_HARD) == 0))) {
    e8887b00:	10058063          	beqz	a1,e8887c00 <etharp_find_entry+0x1a8>
  if (empty < ARP_TABLE_SIZE) {
    i = empty;
    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting empty entry %d\n", (int)i));
  } else {
    /* 2) found recyclable stable entry? */
    if (old_stable < ARP_TABLE_SIZE) {
    e8887b04:	0004079b          	sext.w	a5,s0
    e8887b08:	0f078263          	beq	a5,a6,e8887bec <etharp_find_entry+0x194>
      /* recycle oldest stable*/
      i = old_stable;
      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest stable entry %d\n", (int)i));
      /* no queued packets should exist on stable entries */
      LWIP_ASSERT("arp_table[i].q == NULL", arp_table[i].q == NULL);
    e8887b0c:	02800713          	li	a4,40
    e8887b10:	02e787b3          	mul	a5,a5,a4
    e8887b14:	60f4c78b          	lrd	a5,s1,a5,0
    e8887b18:	c79d                	beqz	a5,e8887b46 <etharp_find_entry+0xee>
    e8887b1a:	02f00593          	li	a1,47
    e8887b1e:	00048517          	auipc	a0,0x48
    e8887b22:	d5a50513          	addi	a0,a0,-678 # e88cf878 <ip_addr_any_type+0x18>
    e8887b26:	853f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8887b2a:	00150693          	addi	a3,a0,1
    e8887b2e:	16d00613          	li	a2,365
    e8887b32:	00048597          	auipc	a1,0x48
    e8887b36:	dd658593          	addi	a1,a1,-554 # e88cf908 <ip_addr_any_type+0xa8>
    e8887b3a:	00047517          	auipc	a0,0x47
    e8887b3e:	57650513          	addi	a0,a0,1398 # e88cf0b0 <kSinTable1024+0x900>
    e8887b42:	f84f40ef          	jal	ra,e887c2c6 <eLIBs_printf>
      return (s16_t)ERR_MEM;
    }

    /* { empty or recyclable entry found } */
    LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE);
    etharp_free_entry(i);
    e8887b46:	0004051b          	sext.w	a0,s0
    e8887b4a:	ecdff0ef          	jal	ra,e8887a16 <etharp_free_entry>
    e8887b4e:	8922                	mv	s2,s0
  }

  LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE);
  LWIP_ASSERT("arp_table[i].state == ETHARP_STATE_EMPTY",
    e8887b50:	02800793          	li	a5,40
    e8887b54:	0009041b          	sext.w	s0,s2
    e8887b58:	8726                	mv	a4,s1
    e8887b5a:	20f4170b          	mula	a4,s0,a5
    e8887b5e:	02074783          	lbu	a5,32(a4)
    e8887b62:	c79d                	beqz	a5,e8887b90 <etharp_find_entry+0x138>
    e8887b64:	02f00593          	li	a1,47
    e8887b68:	00048517          	auipc	a0,0x48
    e8887b6c:	d1050513          	addi	a0,a0,-752 # e88cf878 <ip_addr_any_type+0x18>
    e8887b70:	809f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8887b74:	00150693          	addi	a3,a0,1
    e8887b78:	18500613          	li	a2,389
    e8887b7c:	00048597          	auipc	a1,0x48
    e8887b80:	da458593          	addi	a1,a1,-604 # e88cf920 <ip_addr_any_type+0xc0>
    e8887b84:	00047517          	auipc	a0,0x47
    e8887b88:	52c50513          	addi	a0,a0,1324 # e88cf0b0 <kSinTable1024+0x900>
    e8887b8c:	f3af40ef          	jal	ra,e887c2c6 <eLIBs_printf>
              arp_table[i].state == ETHARP_STATE_EMPTY);

  /* IP address given? */
  if (ipaddr != NULL) {
    e8887b90:	00098a63          	beqz	s3,e8887ba4 <etharp_find_entry+0x14c>
    /* set IP address */
    ip4_addr_copy(arp_table[i].ipaddr, *ipaddr);
    e8887b94:	02800793          	li	a5,40
    e8887b98:	86a6                	mv	a3,s1
    e8887b9a:	20f4168b          	mula	a3,s0,a5
    e8887b9e:	0009a703          	lw	a4,0(s3)
    e8887ba2:	c698                	sw	a4,8(a3)
  }
  arp_table[i].ctime = 0;
    e8887ba4:	02800793          	li	a5,40
    e8887ba8:	20f4148b          	mula	s1,s0,a5
#if ETHARP_TABLE_MATCH_NETIF
  arp_table[i].netif = netif;
#endif /* ETHARP_TABLE_MATCH_NETIF */
  return (s16_t)i;
    e8887bac:	87ca                	mv	a5,s2
  arp_table[i].ctime = 0;
    e8887bae:	00049f23          	sh	zero,30(s1)
  arp_table[i].netif = netif;
    e8887bb2:	0144b823          	sd	s4,16(s1)
  return (s16_t)i;
    e8887bb6:	a0a9                	j	e8887c00 <etharp_find_entry+0x1a8>
          if (arp_table[i].ctime >= age_pending) {
    e8887bb8:	000e829b          	sext.w	t0,t4
    e8887bbc:	0056ba33          	sltu	s4,a3,t0
    e8887bc0:	414f9e8b          	mveqz	t4,t6,s4
    e8887bc4:	4147988b          	mveqz	a7,a5,s4
    e8887bc8:	bf01                	j	e8887ad8 <etharp_find_entry+0x80>
        if (state < ETHARP_STATE_STATIC)
    e8887bca:	f0d9e7e3          	bltu	s3,a3,e8887ad8 <etharp_find_entry+0x80>
          if (arp_table[i].ctime >= age_stable) {
    e8887bce:	01e75283          	lhu	t0,30(a4)
    e8887bd2:	000f0f9b          	sext.w	t6,t5
    e8887bd6:	0002869b          	sext.w	a3,t0
    e8887bda:	01f6ba33          	sltu	s4,a3,t6
    e8887bde:	41429f0b          	mveqz	t5,t0,s4
    e8887be2:	4147940b          	mveqz	s0,a5,s4
    e8887be6:	bdcd                	j	e8887ad8 <etharp_find_entry+0x80>
    e8887be8:	893e                	mv	s2,a5
    e8887bea:	b5fd                	j	e8887ad8 <etharp_find_entry+0x80>
    } else if (old_pending < ARP_TABLE_SIZE) {
    e8887bec:	0008879b          	sext.w	a5,a7
    e8887bf0:	03079163          	bne	a5,a6,e8887c12 <etharp_find_entry+0x1ba>
    } else if (old_queue < ARP_TABLE_SIZE) {
    e8887bf4:	0003079b          	sext.w	a5,t1
    e8887bf8:	841a                	mv	s0,t1
    e8887bfa:	f50796e3          	bne	a5,a6,e8887b46 <etharp_find_entry+0xee>
    return (s16_t)ERR_MEM;
    e8887bfe:	57fd                	li	a5,-1
}
    e8887c00:	70a2                	ld	ra,40(sp)
    e8887c02:	f891440b          	ldd	s0,s1,(sp),0,4
    e8887c06:	7a02                	ld	s4,32(sp)
    e8887c08:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8887c0c:	853e                	mv	a0,a5
    e8887c0e:	6145                	addi	sp,sp,48
    e8887c10:	8082                	ret
    e8887c12:	8446                	mv	s0,a7
    e8887c14:	bf0d                	j	e8887b46 <etharp_find_entry+0xee>

00000000e8887c16 <etharp_update_arp_entry>:
 *
 * @see pbuf_free()
 */
static err_t
etharp_update_arp_entry(struct netif *netif, const ip4_addr_t *ipaddr, struct eth_addr *ethaddr, u8_t flags)
{
    e8887c16:	7139                	addi	sp,sp,-64
    e8887c18:	e422                	sd	s0,8(sp)
    e8887c1a:	e826                	sd	s1,16(sp)
    e8887c1c:	ec4a                	sd	s2,24(sp)
    e8887c1e:	f856                	sd	s5,48(sp)
    e8887c20:	fc06                	sd	ra,56(sp)
    e8887c22:	f04e                	sd	s3,32(sp)
    e8887c24:	f452                	sd	s4,40(sp)
  s16_t i;
  LWIP_ASSERT("netif->hwaddr_len == ETH_HWADDR_LEN", netif->hwaddr_len == ETH_HWADDR_LEN);
    e8887c26:	10a54703          	lbu	a4,266(a0)
    e8887c2a:	4799                	li	a5,6
{
    e8887c2c:	84aa                	mv	s1,a0
    e8887c2e:	892e                	mv	s2,a1
    e8887c30:	8ab2                	mv	s5,a2
    e8887c32:	8436                	mv	s0,a3
  LWIP_ASSERT("netif->hwaddr_len == ETH_HWADDR_LEN", netif->hwaddr_len == ETH_HWADDR_LEN);
    e8887c34:	02f70863          	beq	a4,a5,e8887c64 <etharp_update_arp_entry+0x4e>
    e8887c38:	02f00593          	li	a1,47
    e8887c3c:	00048517          	auipc	a0,0x48
    e8887c40:	c3c50513          	addi	a0,a0,-964 # e88cf878 <ip_addr_any_type+0x18>
    e8887c44:	f34f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8887c48:	00150693          	addi	a3,a0,1
    e8887c4c:	1a900613          	li	a2,425
    e8887c50:	00048597          	auipc	a1,0x48
    e8887c54:	e2058593          	addi	a1,a1,-480 # e88cfa70 <ip_addr_any_type+0x210>
    e8887c58:	00047517          	auipc	a0,0x47
    e8887c5c:	45850513          	addi	a0,a0,1112 # e88cf0b0 <kSinTable1024+0x900>
    e8887c60:	e66f40ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n",
              ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr),
              (u16_t)ethaddr->addr[0], (u16_t)ethaddr->addr[1], (u16_t)ethaddr->addr[2],
              (u16_t)ethaddr->addr[3], (u16_t)ethaddr->addr[4], (u16_t)ethaddr->addr[5]));
  /* non-unicast address? */
  if (ip4_addr_isany(ipaddr) ||
    e8887c64:	00091d63          	bnez	s2,e8887c7e <etharp_update_arp_entry+0x68>
      ip4_addr_isbroadcast(ipaddr, netif) ||
      ip4_addr_ismulticast(ipaddr)) {
    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: will not add non-unicast IP address to ARP cache\n"));
    return ERR_ARG;
    e8887c68:	59c1                	li	s3,-16
    ethernet_output(netif, p, (struct eth_addr *)(netif->hwaddr), ethaddr, ETHTYPE_IP);
    /* free the queued IP packet */
    pbuf_free(p);
  }
  return ERR_OK;
}
    e8887c6a:	70e2                	ld	ra,56(sp)
    e8887c6c:	6422                	ld	s0,8(sp)
    e8887c6e:	854e                	mv	a0,s3
    e8887c70:	64c2                	ld	s1,16(sp)
    e8887c72:	6962                	ld	s2,24(sp)
    e8887c74:	7982                	ld	s3,32(sp)
    e8887c76:	7a22                	ld	s4,40(sp)
    e8887c78:	7ac2                	ld	s5,48(sp)
    e8887c7a:	6121                	addi	sp,sp,64
    e8887c7c:	8082                	ret
  if (ip4_addr_isany(ipaddr) ||
    e8887c7e:	00092503          	lw	a0,0(s2)
    e8887c82:	d17d                	beqz	a0,e8887c68 <etharp_update_arp_entry+0x52>
      ip4_addr_isbroadcast(ipaddr, netif) ||
    e8887c84:	85a6                	mv	a1,s1
    e8887c86:	137010ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
  if (ip4_addr_isany(ipaddr) ||
    e8887c8a:	fd79                	bnez	a0,e8887c68 <etharp_update_arp_entry+0x52>
      ip4_addr_isbroadcast(ipaddr, netif) ||
    e8887c8c:	00092783          	lw	a5,0(s2)
    e8887c90:	0e000713          	li	a4,224
    e8887c94:	0f07f793          	andi	a5,a5,240
    e8887c98:	fce788e3          	beq	a5,a4,e8887c68 <etharp_update_arp_entry+0x52>
  i = etharp_find_entry(ipaddr, flags, netif);
    e8887c9c:	8626                	mv	a2,s1
    e8887c9e:	85a2                	mv	a1,s0
    e8887ca0:	854a                	mv	a0,s2
    e8887ca2:	db7ff0ef          	jal	ra,e8887a58 <etharp_find_entry>
  if (i < 0) {
    e8887ca6:	0005079b          	sext.w	a5,a0
    e8887caa:	0007d563          	bgez	a5,e8887cb4 <etharp_update_arp_entry+0x9e>
    return (err_t)i;
    e8887cae:	1c05298b          	ext	s3,a0,7,0
    e8887cb2:	bf65                	j	e8887c6a <etharp_update_arp_entry+0x54>
  if (flags & ETHARP_FLAG_STATIC_ENTRY) {
    e8887cb4:	0005e917          	auipc	s2,0x5e
    e8887cb8:	eec90913          	addi	s2,s2,-276 # e88e5ba0 <arp_table>
    arp_table[i].state = ETHARP_STATE_STATIC;
    e8887cbc:	02800713          	li	a4,40
    e8887cc0:	86ca                	mv	a3,s2
    e8887cc2:	20e7968b          	mula	a3,a5,a4
  if (flags & ETHARP_FLAG_STATIC_ENTRY) {
    e8887cc6:	8811                	andi	s0,s0,4
    arp_table[i].state = ETHARP_STATE_STATIC;
    e8887cc8:	8736                	mv	a4,a3
    e8887cca:	4695                	li	a3,5
  if (flags & ETHARP_FLAG_STATIC_ENTRY) {
    e8887ccc:	e801                	bnez	s0,e8887cdc <etharp_update_arp_entry+0xc6>
  } else if (arp_table[i].state == ETHARP_STATE_STATIC) {
    e8887cce:	02074603          	lbu	a2,32(a4)
    e8887cd2:	4695                	li	a3,5
    return ERR_VAL;
    e8887cd4:	59e9                	li	s3,-6
  } else if (arp_table[i].state == ETHARP_STATE_STATIC) {
    e8887cd6:	f8d60ae3          	beq	a2,a3,e8887c6a <etharp_update_arp_entry+0x54>
    arp_table[i].state = ETHARP_STATE_STABLE;
    e8887cda:	4689                	li	a3,2
    e8887cdc:	02d70023          	sb	a3,32(a4)
  arp_table[i].netif = netif;
    e8887ce0:	02800713          	li	a4,40
    e8887ce4:	02e78433          	mul	s0,a5,a4
  SMEMCPY(&arp_table[i].ethaddr, ethaddr, ETH_HWADDR_LEN);
    e8887ce8:	87ca                	mv	a5,s2
    e8887cea:	4619                	li	a2,6
    e8887cec:	85d6                	mv	a1,s5
    e8887cee:	20e5178b          	mula	a5,a0,a4
  arp_table[i].netif = netif;
    e8887cf2:	008909b3          	add	s3,s2,s0
    e8887cf6:	0099b823          	sd	s1,16(s3)
  SMEMCPY(&arp_table[i].ethaddr, ethaddr, ETH_HWADDR_LEN);
    e8887cfa:	01878513          	addi	a0,a5,24
    e8887cfe:	ea2f40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  if (arp_table[i].q != NULL) {
    e8887d02:	60894a0b          	lrd	s4,s2,s0,0
  arp_table[i].ctime = 0;
    e8887d06:	00099f23          	sh	zero,30(s3)
  return ERR_OK;
    e8887d0a:	4981                	li	s3,0
  if (arp_table[i].q != NULL) {
    e8887d0c:	f40a0fe3          	beqz	s4,e8887c6a <etharp_update_arp_entry+0x54>
    ethernet_output(netif, p, (struct eth_addr *)(netif->hwaddr), ethaddr, ETHTYPE_IP);
    e8887d10:	6705                	lui	a4,0x1
    arp_table[i].q = NULL;
    e8887d12:	6089500b          	srd	zero,s2,s0,0
    ethernet_output(netif, p, (struct eth_addr *)(netif->hwaddr), ethaddr, ETHTYPE_IP);
    e8887d16:	80070713          	addi	a4,a4,-2048 # 800 <memcmp-0xe87ff800>
    e8887d1a:	86d6                	mv	a3,s5
    e8887d1c:	10448613          	addi	a2,s1,260
    e8887d20:	85d2                	mv	a1,s4
    e8887d22:	8526                	mv	a0,s1
    e8887d24:	5130f0ef          	jal	ra,e8897a36 <ethernet_output>
    pbuf_free(p);
    e8887d28:	8552                	mv	a0,s4
    e8887d2a:	522070ef          	jal	ra,e888f24c <pbuf_free>
    e8887d2e:	bf35                	j	e8887c6a <etharp_update_arp_entry+0x54>

00000000e8887d30 <etharp_raw>:
etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr,
           const struct eth_addr *ethdst_addr,
           const struct eth_addr *hwsrc_addr, const ip4_addr_t *ipsrc_addr,
           const struct eth_addr *hwdst_addr, const ip4_addr_t *ipdst_addr,
           const u16_t opcode)
{
    e8887d30:	711d                	addi	sp,sp,-96
    e8887d32:	fc4e                	sd	s3,56(sp)
    e8887d34:	f852                	sd	s4,48(sp)
    e8887d36:	f456                	sd	s5,40(sp)
    e8887d38:	f05a                	sd	s6,32(sp)
    e8887d3a:	ec5e                	sd	s7,24(sp)
    e8887d3c:	e862                	sd	s8,16(sp)
    e8887d3e:	e466                	sd	s9,8(sp)
    e8887d40:	e06a                	sd	s10,0(sp)
    e8887d42:	ec86                	sd	ra,88(sp)
    e8887d44:	e8a2                	sd	s0,80(sp)
    e8887d46:	e4a6                	sd	s1,72(sp)
    e8887d48:	e0ca                	sd	s2,64(sp)
    e8887d4a:	89aa                	mv	s3,a0
    e8887d4c:	8a2e                	mv	s4,a1
    e8887d4e:	8b32                	mv	s6,a2
    e8887d50:	8cb6                	mv	s9,a3
    e8887d52:	8aba                	mv	s5,a4
    e8887d54:	8c3e                	mv	s8,a5
    e8887d56:	8bc2                	mv	s7,a6
    e8887d58:	8d46                	mv	s10,a7
  struct pbuf *p;
  err_t result = ERR_OK;
  struct etharp_hdr *hdr;

  LWIP_ASSERT("netif != NULL", netif != NULL);
    e8887d5a:	e51d                	bnez	a0,e8887d88 <etharp_raw+0x58>
    e8887d5c:	02f00593          	li	a1,47
    e8887d60:	00048517          	auipc	a0,0x48
    e8887d64:	b1850513          	addi	a0,a0,-1256 # e88cf878 <ip_addr_any_type+0x18>
    e8887d68:	e10f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8887d6c:	00150693          	addi	a3,a0,1
    e8887d70:	45700613          	li	a2,1111
    e8887d74:	00048597          	auipc	a1,0x48
    e8887d78:	c6c58593          	addi	a1,a1,-916 # e88cf9e0 <ip_addr_any_type+0x180>
    e8887d7c:	00047517          	auipc	a0,0x47
    e8887d80:	33450513          	addi	a0,a0,820 # e88cf0b0 <kSinTable1024+0x900>
    e8887d84:	d42f40ef          	jal	ra,e887c2c6 <eLIBs_printf>

  /* allocate a pbuf for the outgoing ARP request packet */
  p = pbuf_alloc(PBUF_LINK, SIZEOF_ETHARP_HDR, PBUF_RAM);
    e8887d88:	28000613          	li	a2,640
    e8887d8c:	45f1                	li	a1,28
    e8887d8e:	4539                	li	a0,14
    e8887d90:	600070ef          	jal	ra,e888f390 <pbuf_alloc>
    e8887d94:	84aa                	mv	s1,a0
  /* could allocate a pbuf for an ARP request? */
  if (p == NULL) {
    e8887d96:	0005e917          	auipc	s2,0x5e
    e8887d9a:	6ba90913          	addi	s2,s2,1722 # e88e6450 <lwip_stats>
    e8887d9e:	e50d                	bnez	a0,e8887dc8 <etharp_raw+0x98>
    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
                ("etharp_raw: could not allocate pbuf for ARP request.\n"));
    ETHARP_STATS_INC(etharp.memerr);
    e8887da0:	02495783          	lhu	a5,36(s2)
    return ERR_MEM;
    e8887da4:	557d                	li	a0,-1
    ETHARP_STATS_INC(etharp.memerr);
    e8887da6:	2785                	addiw	a5,a5,1
    e8887da8:	02f91223          	sh	a5,36(s2)
  pbuf_free(p);
  p = NULL;
  /* could not allocate pbuf for ARP request */

  return result;
}
    e8887dac:	60e6                	ld	ra,88(sp)
    e8887dae:	6446                	ld	s0,80(sp)
    e8887db0:	64a6                	ld	s1,72(sp)
    e8887db2:	6906                	ld	s2,64(sp)
    e8887db4:	79e2                	ld	s3,56(sp)
    e8887db6:	7a42                	ld	s4,48(sp)
    e8887db8:	7aa2                	ld	s5,40(sp)
    e8887dba:	7b02                	ld	s6,32(sp)
    e8887dbc:	6be2                	ld	s7,24(sp)
    e8887dbe:	6c42                	ld	s8,16(sp)
    e8887dc0:	6ca2                	ld	s9,8(sp)
    e8887dc2:	6d02                	ld	s10,0(sp)
    e8887dc4:	6125                	addi	sp,sp,96
    e8887dc6:	8082                	ret
  LWIP_ASSERT("check that first pbuf can hold struct etharp_hdr",
    e8887dc8:	01255703          	lhu	a4,18(a0)
    e8887dcc:	47ed                	li	a5,27
    e8887dce:	02e7e863          	bltu	a5,a4,e8887dfe <etharp_raw+0xce>
    e8887dd2:	02f00593          	li	a1,47
    e8887dd6:	00048517          	auipc	a0,0x48
    e8887dda:	aa250513          	addi	a0,a0,-1374 # e88cf878 <ip_addr_any_type+0x18>
    e8887dde:	d9af40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8887de2:	00150693          	addi	a3,a0,1
    e8887de6:	46300613          	li	a2,1123
    e8887dea:	00048597          	auipc	a1,0x48
    e8887dee:	c0658593          	addi	a1,a1,-1018 # e88cf9f0 <ip_addr_any_type+0x190>
    e8887df2:	00047517          	auipc	a0,0x47
    e8887df6:	2be50513          	addi	a0,a0,702 # e88cf0b0 <kSinTable1024+0x900>
    e8887dfa:	cccf40ef          	jal	ra,e887c2c6 <eLIBs_printf>
  hdr = (struct etharp_hdr *)p->payload;
    e8887dfe:	6480                	ld	s0,8(s1)
  hdr->opcode = lwip_htons(opcode);
    e8887e00:	856a                	mv	a0,s10
    e8887e02:	91cff0ef          	jal	ra,e8886f1e <lwip_htons>
    e8887e06:	00a41323          	sh	a0,6(s0)
  LWIP_ASSERT("netif->hwaddr_len must be the same as ETH_HWADDR_LEN for etharp!",
    e8887e0a:	10a9c703          	lbu	a4,266(s3)
    e8887e0e:	4799                	li	a5,6
    e8887e10:	02f70863          	beq	a4,a5,e8887e40 <etharp_raw+0x110>
    e8887e14:	02f00593          	li	a1,47
    e8887e18:	00048517          	auipc	a0,0x48
    e8887e1c:	a6050513          	addi	a0,a0,-1440 # e88cf878 <ip_addr_any_type+0x18>
    e8887e20:	d58f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8887e24:	00150693          	addi	a3,a0,1
    e8887e28:	46a00613          	li	a2,1130
    e8887e2c:	00048597          	auipc	a1,0x48
    e8887e30:	bfc58593          	addi	a1,a1,-1028 # e88cfa28 <ip_addr_any_type+0x1c8>
    e8887e34:	00047517          	auipc	a0,0x47
    e8887e38:	27c50513          	addi	a0,a0,636 # e88cf0b0 <kSinTable1024+0x900>
    e8887e3c:	c8af40ef          	jal	ra,e887c2c6 <eLIBs_printf>
  SMEMCPY(&hdr->shwaddr, hwsrc_addr, ETH_HWADDR_LEN);
    e8887e40:	4619                	li	a2,6
    e8887e42:	85e6                	mv	a1,s9
    e8887e44:	00840513          	addi	a0,s0,8
    e8887e48:	d58f40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  SMEMCPY(&hdr->dhwaddr, hwdst_addr, ETH_HWADDR_LEN);
    e8887e4c:	4619                	li	a2,6
    e8887e4e:	85e2                	mv	a1,s8
    e8887e50:	01240513          	addi	a0,s0,18
    e8887e54:	d4cf40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  IPADDR_WORDALIGNED_COPY_FROM_IP4_ADDR_T(&hdr->sipaddr, ipsrc_addr);
    e8887e58:	4611                	li	a2,4
    e8887e5a:	85d6                	mv	a1,s5
    e8887e5c:	00e40513          	addi	a0,s0,14
    e8887e60:	d40f40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  IPADDR_WORDALIGNED_COPY_FROM_IP4_ADDR_T(&hdr->dipaddr, ipdst_addr);
    e8887e64:	4611                	li	a2,4
    e8887e66:	85de                	mv	a1,s7
    e8887e68:	01840513          	addi	a0,s0,24
    e8887e6c:	d34f40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  hdr->hwtype = PP_HTONS(LWIP_IANA_HWTYPE_ETHERNET);
    e8887e70:	000807b7          	lui	a5,0x80
    e8887e74:	1007879b          	addiw	a5,a5,256
    e8887e78:	c01c                	sw	a5,0(s0)
  hdr->hwlen = ETH_HWADDR_LEN;
    e8887e7a:	40600793          	li	a5,1030
    e8887e7e:	00f41223          	sh	a5,4(s0)
  if (ip4_addr_islinklocal(ipsrc_addr)) {
    e8887e82:	000ad703          	lhu	a4,0(s5)
    e8887e86:	67c1                	lui	a5,0x10
    e8887e88:	ea978793          	addi	a5,a5,-343 # fea9 <memcmp-0xe87f0157>
    e8887e8c:	02f71863          	bne	a4,a5,e8887ebc <etharp_raw+0x18c>
    ethernet_output(netif, p, ethsrc_addr, &ethbroadcast, ETHTYPE_ARP);
    e8887e90:	6705                	lui	a4,0x1
    e8887e92:	80670713          	addi	a4,a4,-2042 # 806 <memcmp-0xe87ff7fa>
    e8887e96:	0004b697          	auipc	a3,0x4b
    e8887e9a:	bda68693          	addi	a3,a3,-1062 # e88d2a70 <ethbroadcast>
    ethernet_output(netif, p, ethsrc_addr, ethdst_addr, ETHTYPE_ARP);
    e8887e9e:	8652                	mv	a2,s4
    e8887ea0:	85a6                	mv	a1,s1
    e8887ea2:	854e                	mv	a0,s3
    e8887ea4:	3930f0ef          	jal	ra,e8897a36 <ethernet_output>
  ETHARP_STATS_INC(etharp.xmit);
    e8887ea8:	01895783          	lhu	a5,24(s2)
  pbuf_free(p);
    e8887eac:	8526                	mv	a0,s1
  ETHARP_STATS_INC(etharp.xmit);
    e8887eae:	2785                	addiw	a5,a5,1
    e8887eb0:	00f91c23          	sh	a5,24(s2)
  pbuf_free(p);
    e8887eb4:	398070ef          	jal	ra,e888f24c <pbuf_free>
  return result;
    e8887eb8:	4501                	li	a0,0
    e8887eba:	bdcd                	j	e8887dac <etharp_raw+0x7c>
    ethernet_output(netif, p, ethsrc_addr, ethdst_addr, ETHTYPE_ARP);
    e8887ebc:	6705                	lui	a4,0x1
    e8887ebe:	80670713          	addi	a4,a4,-2042 # 806 <memcmp-0xe87ff7fa>
    e8887ec2:	86da                	mv	a3,s6
    e8887ec4:	bfe9                	j	e8887e9e <etharp_raw+0x16e>

00000000e8887ec6 <etharp_input>:
{
    e8887ec6:	715d                	addi	sp,sp,-80
    e8887ec8:	e486                	sd	ra,72(sp)
    e8887eca:	e0a2                	sd	s0,64(sp)
    e8887ecc:	fc26                	sd	s1,56(sp)
    e8887ece:	f84a                	sd	s2,48(sp)
    e8887ed0:	f44e                	sd	s3,40(sp)
    e8887ed2:	f052                	sd	s4,32(sp)
  LWIP_ERROR("netif != NULL", (netif != NULL), return;);
    e8887ed4:	ed9d                	bnez	a1,e8887f12 <etharp_input+0x4c>
    e8887ed6:	02f00593          	li	a1,47
    e8887eda:	00048517          	auipc	a0,0x48
    e8887ede:	99e50513          	addi	a0,a0,-1634 # e88cf878 <ip_addr_any_type+0x18>
    e8887ee2:	c96f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8887ee6:	00150693          	addi	a3,a0,1
    e8887eea:	28a00613          	li	a2,650
    e8887eee:	00048597          	auipc	a1,0x48
    e8887ef2:	af258593          	addi	a1,a1,-1294 # e88cf9e0 <ip_addr_any_type+0x180>
    e8887ef6:	00047517          	auipc	a0,0x47
    e8887efa:	1ba50513          	addi	a0,a0,442 # e88cf0b0 <kSinTable1024+0x900>
    e8887efe:	bc8f40ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e8887f02:	60a6                	ld	ra,72(sp)
    e8887f04:	6406                	ld	s0,64(sp)
    e8887f06:	74e2                	ld	s1,56(sp)
    e8887f08:	7942                	ld	s2,48(sp)
    e8887f0a:	79a2                	ld	s3,40(sp)
    e8887f0c:	7a02                	ld	s4,32(sp)
    e8887f0e:	6161                	addi	sp,sp,80
    e8887f10:	8082                	ret
  hdr = (struct etharp_hdr *)p->payload;
    e8887f12:	6500                	ld	s0,8(a0)
  if ((hdr->hwtype != PP_HTONS(LWIP_IANA_HWTYPE_ETHERNET)) ||
    e8887f14:	10000793          	li	a5,256
    e8887f18:	89aa                	mv	s3,a0
    e8887f1a:	00045703          	lhu	a4,0(s0)
    e8887f1e:	0005e497          	auipc	s1,0x5e
    e8887f22:	53248493          	addi	s1,s1,1330 # e88e6450 <lwip_stats>
    e8887f26:	02f71163          	bne	a4,a5,e8887f48 <etharp_input+0x82>
    e8887f2a:	00444703          	lbu	a4,4(s0)
    e8887f2e:	4799                	li	a5,6
    e8887f30:	00f71c63          	bne	a4,a5,e8887f48 <etharp_input+0x82>
      (hdr->hwlen != ETH_HWADDR_LEN) ||
    e8887f34:	00544703          	lbu	a4,5(s0)
    e8887f38:	4791                	li	a5,4
    e8887f3a:	00f71763          	bne	a4,a5,e8887f48 <etharp_input+0x82>
      (hdr->protolen != sizeof(ip4_addr_t)) ||
    e8887f3e:	00245703          	lhu	a4,2(s0)
    e8887f42:	47a1                	li	a5,8
    e8887f44:	02f70063          	beq	a4,a5,e8887f64 <etharp_input+0x9e>
    ETHARP_STATS_INC(etharp.proterr);
    e8887f48:	0284d783          	lhu	a5,40(s1)
    e8887f4c:	2785                	addiw	a5,a5,1
    e8887f4e:	02f49423          	sh	a5,40(s1)
    ETHARP_STATS_INC(etharp.drop);
    e8887f52:	01e4d783          	lhu	a5,30(s1)
    e8887f56:	2785                	addiw	a5,a5,1
    e8887f58:	00f49f23          	sh	a5,30(s1)
  pbuf_free(p);
    e8887f5c:	854e                	mv	a0,s3
    e8887f5e:	2ee070ef          	jal	ra,e888f24c <pbuf_free>
    e8887f62:	b745                	j	e8887f02 <etharp_input+0x3c>
  ETHARP_STATS_INC(etharp.recv);
    e8887f64:	01a4d783          	lhu	a5,26(s1)
    e8887f68:	892e                	mv	s2,a1
  autoip_arp_reply(netif, hdr);
    e8887f6a:	854a                	mv	a0,s2
  ETHARP_STATS_INC(etharp.recv);
    e8887f6c:	2785                	addiw	a5,a5,1
  autoip_arp_reply(netif, hdr);
    e8887f6e:	85a2                	mv	a1,s0
  ETHARP_STATS_INC(etharp.recv);
    e8887f70:	00f49d23          	sh	a5,26(s1)
  autoip_arp_reply(netif, hdr);
    e8887f74:	569120ef          	jal	ra,e889acdc <autoip_arp_reply>
  IPADDR_WORDALIGNED_COPY_TO_IP4_ADDR_T(&sipaddr, &hdr->sipaddr);
    e8887f78:	4611                	li	a2,4
    e8887f7a:	00e40593          	addi	a1,s0,14
    e8887f7e:	0808                	addi	a0,sp,16
    e8887f80:	c20f40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  IPADDR_WORDALIGNED_COPY_TO_IP4_ADDR_T(&dipaddr, &hdr->dipaddr);
    e8887f84:	4611                	li	a2,4
    e8887f86:	01840593          	addi	a1,s0,24
    e8887f8a:	0828                	addi	a0,sp,24
    e8887f8c:	c14f40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  if (ip4_addr_isany_val(*netif_ip4_addr(netif))) {
    e8887f90:	00892703          	lw	a4,8(s2)
    e8887f94:	00840793          	addi	a5,s0,8
    e8887f98:	c701                	beqz	a4,e8887fa0 <etharp_input+0xda>
  etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr),
    e8887f9a:	46e2                	lw	a3,24(sp)
    e8887f9c:	02e68b63          	beq	a3,a4,e8887fd2 <etharp_input+0x10c>
    for_us = 0;
    e8887fa0:	4a01                	li	s4,0
  etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr),
    e8887fa2:	4689                	li	a3,2
    e8887fa4:	863e                	mv	a2,a5
    e8887fa6:	080c                	addi	a1,sp,16
    e8887fa8:	854a                	mv	a0,s2
    e8887faa:	e43e                	sd	a5,8(sp)
    e8887fac:	c6bff0ef          	jal	ra,e8887c16 <etharp_update_arp_entry>
  switch (hdr->opcode) {
    e8887fb0:	00645703          	lhu	a4,6(s0)
    e8887fb4:	10000693          	li	a3,256
    e8887fb8:	67a2                	ld	a5,8(sp)
    e8887fba:	00d70f63          	beq	a4,a3,e8887fd8 <etharp_input+0x112>
    e8887fbe:	20000793          	li	a5,512
    e8887fc2:	02f70a63          	beq	a4,a5,e8887ff6 <etharp_input+0x130>
      ETHARP_STATS_INC(etharp.err);
    e8887fc6:	02c4d783          	lhu	a5,44(s1)
    e8887fca:	2785                	addiw	a5,a5,1
    e8887fcc:	02f49623          	sh	a5,44(s1)
      break;
    e8887fd0:	b771                	j	e8887f5c <etharp_input+0x96>
    for_us = (u8_t)ip4_addr_cmp(&dipaddr, netif_ip4_addr(netif));
    e8887fd2:	4a05                	li	s4,1
  etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr),
    e8887fd4:	4685                	li	a3,1
    e8887fd6:	b7f9                	j	e8887fa4 <etharp_input+0xde>
      if (for_us) {
    e8887fd8:	f80a02e3          	beqz	s4,e8887f5c <etharp_input+0x96>
                   (struct eth_addr *)netif->hwaddr, &hdr->shwaddr,
    e8887fdc:	10490693          	addi	a3,s2,260
        etharp_raw(netif,
    e8887fe0:	4889                	li	a7,2
    e8887fe2:	01010813          	addi	a6,sp,16
    e8887fe6:	00890713          	addi	a4,s2,8
    e8887fea:	863e                	mv	a2,a5
    e8887fec:	85b6                	mv	a1,a3
    e8887fee:	854a                	mv	a0,s2
    e8887ff0:	d41ff0ef          	jal	ra,e8887d30 <etharp_raw>
    e8887ff4:	b7a5                	j	e8887f5c <etharp_input+0x96>
      dhcp_arp_reply(netif, &sipaddr);
    e8887ff6:	080c                	addi	a1,sp,16
    e8887ff8:	854a                	mv	a0,s2
    e8887ffa:	0c6140ef          	jal	ra,e889c0c0 <dhcp_arp_reply>
      break;
    e8887ffe:	bfb9                	j	e8887f5c <etharp_input+0x96>

00000000e8888000 <etharp_request>:
 *         any other err_t on failure
 */
static err_t
etharp_request_dst(struct netif *netif, const ip4_addr_t *ipaddr, const struct eth_addr *hw_dst_addr)
{
  return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, hw_dst_addr,
    e8888000:	10450693          	addi	a3,a0,260
    e8888004:	882e                	mv	a6,a1
    e8888006:	4885                	li	a7,1
    e8888008:	0004b797          	auipc	a5,0x4b
    e888800c:	b3878793          	addi	a5,a5,-1224 # e88d2b40 <ethzero>
    e8888010:	00850713          	addi	a4,a0,8
    e8888014:	0004b617          	auipc	a2,0x4b
    e8888018:	a5c60613          	addi	a2,a2,-1444 # e88d2a70 <ethbroadcast>
    e888801c:	85b6                	mv	a1,a3
    e888801e:	d13ff06f          	j	e8887d30 <etharp_raw>

00000000e8888022 <etharp_tmr>:
{
    e8888022:	711d                	addi	sp,sp,-96
    e8888024:	e8a2                	sd	s0,80(sp)
    e8888026:	e4a6                	sd	s1,72(sp)
    e8888028:	e0ca                	sd	s2,64(sp)
    e888802a:	fc4e                	sd	s3,56(sp)
    e888802c:	f852                	sd	s4,48(sp)
    e888802e:	f456                	sd	s5,40(sp)
    e8888030:	f05a                	sd	s6,32(sp)
    e8888032:	ec5e                	sd	s7,24(sp)
    e8888034:	e862                	sd	s8,16(sp)
    e8888036:	e466                	sd	s9,8(sp)
    e8888038:	ec86                	sd	ra,88(sp)
    e888803a:	0005e417          	auipc	s0,0x5e
    e888803e:	b6640413          	addi	s0,s0,-1178 # e88e5ba0 <arp_table>
  for (i = 0; i < ARP_TABLE_SIZE; ++i) {
    e8888042:	4c81                	li	s9,0
        && (state != ETHARP_STATE_STATIC)
    e8888044:	4995                	li	s3,5
      if ((arp_table[i].ctime >= ARP_MAXAGE) ||
    e8888046:	12b00a13          	li	s4,299
    e888804a:	4a85                	li	s5,1
      } else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING_1) {
    e888804c:	4b0d                	li	s6,3
      } else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING_2) {
    e888804e:	4491                	li	s1,4
        arp_table[i].state = ETHARP_STATE_STABLE;
    e8888050:	4b89                	li	s7,2
        arp_table[i].state = ETHARP_STATE_STABLE_REREQUESTING_2;
    e8888052:	4c11                	li	s8,4
  for (i = 0; i < ARP_TABLE_SIZE; ++i) {
    e8888054:	4929                	li	s2,10
    u8_t state = arp_table[i].state;
    e8888056:	02044703          	lbu	a4,32(s0)
    if (state != ETHARP_STATE_EMPTY
    e888805a:	c705                	beqz	a4,e8888082 <etharp_tmr+0x60>
        && (state != ETHARP_STATE_STATIC)
    e888805c:	03370363          	beq	a4,s3,e8888082 <etharp_tmr+0x60>
      arp_table[i].ctime++;
    e8888060:	01e45783          	lhu	a5,30(s0)
    e8888064:	2785                	addiw	a5,a5,1
    e8888066:	3c07b78b          	extu	a5,a5,15,0
    e888806a:	00f41f23          	sh	a5,30(s0)
      if ((arp_table[i].ctime >= ARP_MAXAGE) ||
    e888806e:	2781                	sext.w	a5,a5
    e8888070:	00fa6663          	bltu	s4,a5,e888807c <etharp_tmr+0x5a>
    e8888074:	03571963          	bne	a4,s5,e88880a6 <etharp_tmr+0x84>
          ((arp_table[i].state == ETHARP_STATE_PENDING)  &&
    e8888078:	04f4f163          	bgeu	s1,a5,e88880ba <etharp_tmr+0x98>
        etharp_free_entry(i);
    e888807c:	8566                	mv	a0,s9
    e888807e:	999ff0ef          	jal	ra,e8887a16 <etharp_free_entry>
  for (i = 0; i < ARP_TABLE_SIZE; ++i) {
    e8888082:	2c85                	addiw	s9,s9,1
    e8888084:	02840413          	addi	s0,s0,40
    e8888088:	fd2c97e3          	bne	s9,s2,e8888056 <etharp_tmr+0x34>
}
    e888808c:	60e6                	ld	ra,88(sp)
    e888808e:	6446                	ld	s0,80(sp)
    e8888090:	64a6                	ld	s1,72(sp)
    e8888092:	6906                	ld	s2,64(sp)
    e8888094:	79e2                	ld	s3,56(sp)
    e8888096:	7a42                	ld	s4,48(sp)
    e8888098:	7aa2                	ld	s5,40(sp)
    e888809a:	7b02                	ld	s6,32(sp)
    e888809c:	6be2                	ld	s7,24(sp)
    e888809e:	6c42                	ld	s8,16(sp)
    e88880a0:	6ca2                	ld	s9,8(sp)
    e88880a2:	6125                	addi	sp,sp,96
    e88880a4:	8082                	ret
      } else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING_1) {
    e88880a6:	01671563          	bne	a4,s6,e88880b0 <etharp_tmr+0x8e>
        arp_table[i].state = ETHARP_STATE_STABLE_REREQUESTING_2;
    e88880aa:	03840023          	sb	s8,32(s0)
    e88880ae:	bfd1                	j	e8888082 <etharp_tmr+0x60>
      } else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING_2) {
    e88880b0:	fc9719e3          	bne	a4,s1,e8888082 <etharp_tmr+0x60>
        arp_table[i].state = ETHARP_STATE_STABLE;
    e88880b4:	03740023          	sb	s7,32(s0)
    e88880b8:	b7e9                	j	e8888082 <etharp_tmr+0x60>
        etharp_request(arp_table[i].netif, &arp_table[i].ipaddr);
    e88880ba:	6808                	ld	a0,16(s0)
    e88880bc:	00840593          	addi	a1,s0,8
    e88880c0:	f41ff0ef          	jal	ra,e8888000 <etharp_request>
    e88880c4:	bf7d                	j	e8888082 <etharp_tmr+0x60>

00000000e88880c6 <etharp_output_to_arp_index>:
{
    e88880c6:	7139                	addi	sp,sp,-64
    e88880c8:	e826                	sd	s1,16(sp)
  LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE",
    e88880ca:	0005e497          	auipc	s1,0x5e
    e88880ce:	ad648493          	addi	s1,s1,-1322 # e88e5ba0 <arp_table>
{
    e88880d2:	f04e                	sd	s3,32(sp)
  LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE",
    e88880d4:	02800793          	li	a5,40
    e88880d8:	0006099b          	sext.w	s3,a2
    e88880dc:	8726                	mv	a4,s1
    e88880de:	20f9970b          	mula	a4,s3,a5
{
    e88880e2:	e422                	sd	s0,8(sp)
    e88880e4:	ec4a                	sd	s2,24(sp)
    e88880e6:	f856                	sd	s5,48(sp)
    e88880e8:	fc06                	sd	ra,56(sp)
    e88880ea:	f452                	sd	s4,40(sp)
  LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE",
    e88880ec:	4785                	li	a5,1
{
    e88880ee:	892a                	mv	s2,a0
    e88880f0:	8aae                	mv	s5,a1
    e88880f2:	8432                	mv	s0,a2
  LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE",
    e88880f4:	02074703          	lbu	a4,32(a4)
    e88880f8:	02e7e863          	bltu	a5,a4,e8888128 <etharp_output_to_arp_index+0x62>
    e88880fc:	02f00593          	li	a1,47
    e8888100:	00047517          	auipc	a0,0x47
    e8888104:	77850513          	addi	a0,a0,1912 # e88cf878 <ip_addr_any_type+0x18>
    e8888108:	a70f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888810c:	00150693          	addi	a3,a0,1
    e8888110:	2ef00613          	li	a2,751
    e8888114:	00048597          	auipc	a1,0x48
    e8888118:	86c58593          	addi	a1,a1,-1940 # e88cf980 <ip_addr_any_type+0x120>
    e888811c:	00047517          	auipc	a0,0x47
    e8888120:	f9450513          	addi	a0,a0,-108 # e88cf0b0 <kSinTable1024+0x900>
    e8888124:	9a2f40ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (arp_table[arp_idx].state == ETHARP_STATE_STABLE) {
    e8888128:	02800793          	li	a5,40
    e888812c:	8726                	mv	a4,s1
    e888812e:	20f9970b          	mula	a4,s3,a5
    e8888132:	10490a13          	addi	s4,s2,260
    e8888136:	02f405b3          	mul	a1,s0,a5
    e888813a:	89ba                	mv	s3,a4
    e888813c:	02074703          	lbu	a4,32(a4)
    e8888140:	4789                	li	a5,2
    e8888142:	01858413          	addi	s0,a1,24
    e8888146:	9426                	add	s0,s0,s1
    e8888148:	02f71163          	bne	a4,a5,e888816a <etharp_output_to_arp_index+0xa4>
    if (arp_table[arp_idx].ctime >= ARP_AGE_REREQUEST_USED_BROADCAST) {
    e888814c:	01e9d783          	lhu	a5,30(s3)
    e8888150:	11c00713          	li	a4,284
    e8888154:	02f77c63          	bgeu	a4,a5,e888818c <etharp_output_to_arp_index+0xc6>
      if (etharp_request(netif, &arp_table[arp_idx].ipaddr) == ERR_OK) {
    e8888158:	05a1                	addi	a1,a1,8
    e888815a:	95a6                	add	a1,a1,s1
    e888815c:	854a                	mv	a0,s2
    e888815e:	ea3ff0ef          	jal	ra,e8888000 <etharp_request>
      if (etharp_request_dst(netif, &arp_table[arp_idx].ipaddr, &arp_table[arp_idx].ethaddr) == ERR_OK) {
    e8888162:	e501                	bnez	a0,e888816a <etharp_output_to_arp_index+0xa4>
        arp_table[arp_idx].state = ETHARP_STATE_STABLE_REREQUESTING_1;
    e8888164:	478d                	li	a5,3
    e8888166:	02f98023          	sb	a5,32(s3)
  return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), &arp_table[arp_idx].ethaddr, ETHTYPE_IP);
    e888816a:	86a2                	mv	a3,s0
}
    e888816c:	6422                	ld	s0,8(sp)
    e888816e:	70e2                	ld	ra,56(sp)
    e8888170:	64c2                	ld	s1,16(sp)
    e8888172:	7982                	ld	s3,32(sp)
  return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), &arp_table[arp_idx].ethaddr, ETHTYPE_IP);
    e8888174:	8652                	mv	a2,s4
    e8888176:	85d6                	mv	a1,s5
}
    e8888178:	7a22                	ld	s4,40(sp)
    e888817a:	7ac2                	ld	s5,48(sp)
  return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), &arp_table[arp_idx].ethaddr, ETHTYPE_IP);
    e888817c:	854a                	mv	a0,s2
}
    e888817e:	6962                	ld	s2,24(sp)
  return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), &arp_table[arp_idx].ethaddr, ETHTYPE_IP);
    e8888180:	6705                	lui	a4,0x1
    e8888182:	80070713          	addi	a4,a4,-2048 # 800 <memcmp-0xe87ff800>
}
    e8888186:	6121                	addi	sp,sp,64
  return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), &arp_table[arp_idx].ethaddr, ETHTYPE_IP);
    e8888188:	0af0f06f          	j	e8897a36 <ethernet_output>
    } else if (arp_table[arp_idx].ctime >= ARP_AGE_REREQUEST_USED_UNICAST) {
    e888818c:	10d00713          	li	a4,269
    e8888190:	fcf77de3          	bgeu	a4,a5,e888816a <etharp_output_to_arp_index+0xa4>
      if (etharp_request_dst(netif, &arp_table[arp_idx].ipaddr, &arp_table[arp_idx].ethaddr) == ERR_OK) {
    e8888194:	05a1                	addi	a1,a1,8
  return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, hw_dst_addr,
    e8888196:	00b48833          	add	a6,s1,a1
    e888819a:	4885                	li	a7,1
    e888819c:	0004b797          	auipc	a5,0x4b
    e88881a0:	9a478793          	addi	a5,a5,-1628 # e88d2b40 <ethzero>
    e88881a4:	00890713          	addi	a4,s2,8
    e88881a8:	86d2                	mv	a3,s4
    e88881aa:	8622                	mv	a2,s0
    e88881ac:	85d2                	mv	a1,s4
    e88881ae:	854a                	mv	a0,s2
    e88881b0:	b81ff0ef          	jal	ra,e8887d30 <etharp_raw>
    e88881b4:	b77d                	j	e8888162 <etharp_output_to_arp_index+0x9c>

00000000e88881b6 <etharp_query>:
{
    e88881b6:	7139                	addi	sp,sp,-64
    e88881b8:	f891540b          	sdd	s0,s1,(sp),0,4
    e88881bc:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88881c0:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e88881c4:	8a2e                	mv	s4,a1
    e88881c6:	fc06                	sd	ra,56(sp)
    e88881c8:	f85a                	sd	s6,48(sp)
    e88881ca:	89aa                	mv	s3,a0
  if (ip4_addr_isbroadcast(ipaddr, netif) ||
    e88881cc:	85aa                	mv	a1,a0
    e88881ce:	000a2503          	lw	a0,0(s4)
{
    e88881d2:	8432                	mv	s0,a2
  if (ip4_addr_isbroadcast(ipaddr, netif) ||
    e88881d4:	3e8010ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
    e88881d8:	18051a63          	bnez	a0,e888836c <etharp_query+0x1b6>
      ip4_addr_ismulticast(ipaddr) ||
    e88881dc:	000a2783          	lw	a5,0(s4)
  if (ip4_addr_isbroadcast(ipaddr, netif) ||
    e88881e0:	0e000713          	li	a4,224
    e88881e4:	0f07f693          	andi	a3,a5,240
    e88881e8:	18e68263          	beq	a3,a4,e888836c <etharp_query+0x1b6>
      ip4_addr_ismulticast(ipaddr) ||
    e88881ec:	180a0063          	beqz	s4,e888836c <etharp_query+0x1b6>
      ip4_addr_isany(ipaddr)) {
    e88881f0:	16078e63          	beqz	a5,e888836c <etharp_query+0x1b6>
  i_err = etharp_find_entry(ipaddr, ETHARP_FLAG_TRY_HARD, netif);
    e88881f4:	864e                	mv	a2,s3
    e88881f6:	4585                	li	a1,1
    e88881f8:	8552                	mv	a0,s4
    e88881fa:	85fff0ef          	jal	ra,e8887a58 <etharp_find_entry>
  if (i_err < 0) {
    e88881fe:	0005079b          	sext.w	a5,a0
  i_err = etharp_find_entry(ipaddr, ETHARP_FLAG_TRY_HARD, netif);
    e8888202:	892a                	mv	s2,a0
  if (i_err < 0) {
    e8888204:	0207d863          	bgez	a5,e8888234 <etharp_query+0x7e>
    if (q) {
    e8888208:	c811                	beqz	s0,e888821c <etharp_query+0x66>
      ETHARP_STATS_INC(etharp.memerr);
    e888820a:	0005e717          	auipc	a4,0x5e
    e888820e:	24670713          	addi	a4,a4,582 # e88e6450 <lwip_stats>
    e8888212:	02475783          	lhu	a5,36(a4)
    e8888216:	2785                	addiw	a5,a5,1
    e8888218:	02f71223          	sh	a5,36(a4)
    return (err_t)i_err;
    e888821c:	1c09250b          	ext	a0,s2,7,0
}
    e8888220:	70e2                	ld	ra,56(sp)
    e8888222:	f891440b          	ldd	s0,s1,(sp),0,4
    e8888226:	7b42                	ld	s6,48(sp)
    e8888228:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888822c:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8888230:	6121                	addi	sp,sp,64
    e8888232:	8082                	ret
  LWIP_ASSERT("type overflow", (size_t)i_err < NETIF_ADDR_IDX_MAX);
    e8888234:	07e00713          	li	a4,126
    e8888238:	02f75863          	bge	a4,a5,e8888268 <etharp_query+0xb2>
    e888823c:	02f00593          	li	a1,47
    e8888240:	00047517          	auipc	a0,0x47
    e8888244:	63850513          	addi	a0,a0,1592 # e88cf878 <ip_addr_any_type+0x18>
    e8888248:	930f40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888824c:	00150693          	addi	a3,a0,1
    e8888250:	3c100613          	li	a2,961
    e8888254:	00047597          	auipc	a1,0x47
    e8888258:	75c58593          	addi	a1,a1,1884 # e88cf9b0 <ip_addr_any_type+0x150>
    e888825c:	00047517          	auipc	a0,0x47
    e8888260:	e5450513          	addi	a0,a0,-428 # e88cf0b0 <kSinTable1024+0x900>
    e8888264:	862f40ef          	jal	ra,e887c2c6 <eLIBs_printf>
  i = (netif_addr_idx_t)i_err;
    e8888268:	0ff97913          	andi	s2,s2,255
  if (arp_table[i].state == ETHARP_STATE_EMPTY) {
    e888826c:	0005e497          	auipc	s1,0x5e
    e8888270:	93448493          	addi	s1,s1,-1740 # e88e5ba0 <arp_table>
    e8888274:	02800793          	li	a5,40
    e8888278:	00090a9b          	sext.w	s5,s2
    e888827c:	8726                	mv	a4,s1
    e888827e:	20fa970b          	mula	a4,s5,a5
    e8888282:	87ba                	mv	a5,a4
    e8888284:	02074703          	lbu	a4,32(a4)
    e8888288:	10071763          	bnez	a4,e8888396 <etharp_query+0x1e0>
    arp_table[i].state = ETHARP_STATE_PENDING;
    e888828c:	4705                	li	a4,1
    e888828e:	02e78023          	sb	a4,32(a5)
    arp_table[i].netif = netif;
    e8888292:	0137b823          	sd	s3,16(a5)
    result = etharp_request(netif, ipaddr);
    e8888296:	85d2                	mv	a1,s4
    e8888298:	854e                	mv	a0,s3
    e888829a:	d67ff0ef          	jal	ra,e8888000 <etharp_request>
    if (q == NULL) {
    e888829e:	d049                	beqz	s0,e8888220 <etharp_query+0x6a>
  if (arp_table[i].state >= ETHARP_STATE_STABLE) {
    e88882a0:	02800793          	li	a5,40
    e88882a4:	8726                	mv	a4,s1
    e88882a6:	20fa970b          	mula	a4,s5,a5
    e88882aa:	02074683          	lbu	a3,32(a4)
    e88882ae:	4705                	li	a4,1
    e88882b0:	02d77c63          	bgeu	a4,a3,e88882e8 <etharp_query+0x132>
    result = ethernet_output(netif, q, srcaddr, &(arp_table[i].ethaddr), ETHTYPE_IP);
    e88882b4:	20f9148b          	mula	s1,s2,a5
    ETHARP_SET_ADDRHINT(netif, i);
    e88882b8:	0005e717          	auipc	a4,0x5e
    e88882bc:	a7270c23          	sb	s2,-1416(a4) # e88e5d30 <etharp_cached_entry>
    result = ethernet_output(netif, q, srcaddr, &(arp_table[i].ethaddr), ETHTYPE_IP);
    e88882c0:	85a2                	mv	a1,s0
}
    e88882c2:	70e2                	ld	ra,56(sp)
    e88882c4:	7b42                	ld	s6,48(sp)
    e88882c6:	fd514a0b          	ldd	s4,s5,(sp),2,4
    result = ethernet_output(netif, q, srcaddr, &(arp_table[i].ethaddr), ETHTYPE_IP);
    e88882ca:	10498613          	addi	a2,s3,260
    e88882ce:	854e                	mv	a0,s3
}
    e88882d0:	fb31490b          	ldd	s2,s3,(sp),1,4
    result = ethernet_output(netif, q, srcaddr, &(arp_table[i].ethaddr), ETHTYPE_IP);
    e88882d4:	6705                	lui	a4,0x1
    e88882d6:	01848693          	addi	a3,s1,24
}
    e88882da:	f891440b          	ldd	s0,s1,(sp),0,4
    result = ethernet_output(netif, q, srcaddr, &(arp_table[i].ethaddr), ETHTYPE_IP);
    e88882de:	80070713          	addi	a4,a4,-2048 # 800 <memcmp-0xe87ff800>
}
    e88882e2:	6121                	addi	sp,sp,64
    result = ethernet_output(netif, q, srcaddr, &(arp_table[i].ethaddr), ETHTYPE_IP);
    e88882e4:	7520f06f          	j	e8897a36 <ethernet_output>
  } else if (arp_table[i].state == ETHARP_STATE_PENDING) {
    e88882e8:	f2e69ce3          	bne	a3,a4,e8888220 <etharp_query+0x6a>
    e88882ec:	8922                	mv	s2,s0
      LWIP_ASSERT("no packet queues allowed!", (p->len != p->tot_len) || (p->next == 0));
    e88882ee:	00047997          	auipc	s3,0x47
    e88882f2:	58a98993          	addi	s3,s3,1418 # e88cf878 <ip_addr_any_type+0x18>
    e88882f6:	00047a17          	auipc	s4,0x47
    e88882fa:	6caa0a13          	addi	s4,s4,1738 # e88cf9c0 <ip_addr_any_type+0x160>
    e88882fe:	00047b17          	auipc	s6,0x47
    e8888302:	db2b0b13          	addi	s6,s6,-590 # e88cf0b0 <kSinTable1024+0x900>
    e8888306:	01295703          	lhu	a4,18(s2)
    e888830a:	01095783          	lhu	a5,16(s2)
    e888830e:	02f71263          	bne	a4,a5,e8888332 <etharp_query+0x17c>
    e8888312:	00093783          	ld	a5,0(s2)
    e8888316:	cf91                	beqz	a5,e8888332 <etharp_query+0x17c>
    e8888318:	02f00593          	li	a1,47
    e888831c:	854e                	mv	a0,s3
    e888831e:	85af40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888322:	00150693          	addi	a3,a0,1
    e8888326:	3f100613          	li	a2,1009
    e888832a:	85d2                	mv	a1,s4
    e888832c:	855a                	mv	a0,s6
    e888832e:	f99f30ef          	jal	ra,e887c2c6 <eLIBs_printf>
      if (PBUF_NEEDS_COPY(p)) {
    e8888332:	01494783          	lbu	a5,20(s2)
    e8888336:	0407f793          	andi	a5,a5,64
    e888833a:	eb9d                	bnez	a5,e8888370 <etharp_query+0x1ba>
      p = p->next;
    e888833c:	00093903          	ld	s2,0(s2)
    while (p) {
    e8888340:	fc0913e3          	bnez	s2,e8888306 <etharp_query+0x150>
      pbuf_ref(p);
    e8888344:	8522                	mv	a0,s0
    e8888346:	31e070ef          	jal	ra,e888f664 <pbuf_ref>
      if (arp_table[i].q != NULL) {
    e888834a:	02800793          	li	a5,40
    e888834e:	02fa87b3          	mul	a5,s5,a5
    e8888352:	60f4c50b          	lrd	a0,s1,a5,0
    e8888356:	c119                	beqz	a0,e888835c <etharp_query+0x1a6>
        pbuf_free(arp_table[i].q);
    e8888358:	6f5060ef          	jal	ra,e888f24c <pbuf_free>
      arp_table[i].q = p;
    e888835c:	02800793          	li	a5,40
    e8888360:	02fa8ab3          	mul	s5,s5,a5
      result = ERR_OK;
    e8888364:	4501                	li	a0,0
      arp_table[i].q = p;
    e8888366:	6154d40b          	srd	s0,s1,s5,0
      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"U16_F"\n", (void *)q, (u16_t)i));
    e888836a:	bd5d                	j	e8888220 <etharp_query+0x6a>
    return ERR_ARG;
    e888836c:	5541                	li	a0,-16
    e888836e:	bd4d                	j	e8888220 <etharp_query+0x6a>
      p = pbuf_clone(PBUF_LINK, PBUF_RAM, q);
    e8888370:	8622                	mv	a2,s0
    e8888372:	28000593          	li	a1,640
    e8888376:	4539                	li	a0,14
    e8888378:	195070ef          	jal	ra,e888fd0c <pbuf_clone>
    e888837c:	842a                	mv	s0,a0
    if (p != NULL) {
    e888837e:	f571                	bnez	a0,e888834a <etharp_query+0x194>
      ETHARP_STATS_INC(etharp.memerr);
    e8888380:	0005e717          	auipc	a4,0x5e
    e8888384:	0d070713          	addi	a4,a4,208 # e88e6450 <lwip_stats>
    e8888388:	02475783          	lhu	a5,36(a4)
      result = ERR_MEM;
    e888838c:	557d                	li	a0,-1
      ETHARP_STATS_INC(etharp.memerr);
    e888838e:	2785                	addiw	a5,a5,1
    e8888390:	02f71223          	sh	a5,36(a4)
      result = ERR_MEM;
    e8888394:	b571                	j	e8888220 <etharp_query+0x6a>
  err_t result = ERR_MEM;
    e8888396:	557d                	li	a0,-1
  if (is_new_entry || (q == NULL)) {
    e8888398:	f00414e3          	bnez	s0,e88882a0 <etharp_query+0xea>
    e888839c:	bded                	j	e8888296 <etharp_query+0xe0>

00000000e888839e <etharp_output>:
{
    e888839e:	7179                	addi	sp,sp,-48
    e88883a0:	fa91540b          	sdd	s0,s1,(sp),1,4
    e88883a4:	f04a                	sd	s2,32(sp)
    e88883a6:	f406                	sd	ra,40(sp)
    e88883a8:	842a                	mv	s0,a0
    e88883aa:	892e                	mv	s2,a1
    e88883ac:	84b2                	mv	s1,a2
  LWIP_ASSERT("netif != NULL", netif != NULL);
    e88883ae:	e51d                	bnez	a0,e88883dc <etharp_output+0x3e>
    e88883b0:	02f00593          	li	a1,47
    e88883b4:	00047517          	auipc	a0,0x47
    e88883b8:	4c450513          	addi	a0,a0,1220 # e88cf878 <ip_addr_any_type+0x18>
    e88883bc:	fbdf30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88883c0:	00150693          	addi	a3,a0,1
    e88883c4:	31e00613          	li	a2,798
    e88883c8:	00047597          	auipc	a1,0x47
    e88883cc:	61858593          	addi	a1,a1,1560 # e88cf9e0 <ip_addr_any_type+0x180>
    e88883d0:	00047517          	auipc	a0,0x47
    e88883d4:	ce050513          	addi	a0,a0,-800 # e88cf0b0 <kSinTable1024+0x900>
    e88883d8:	eeff30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("q != NULL", q != NULL);
    e88883dc:	02091863          	bnez	s2,e888840c <etharp_output+0x6e>
    e88883e0:	02f00593          	li	a1,47
    e88883e4:	00047517          	auipc	a0,0x47
    e88883e8:	49450513          	addi	a0,a0,1172 # e88cf878 <ip_addr_any_type+0x18>
    e88883ec:	f8df30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88883f0:	00150693          	addi	a3,a0,1
    e88883f4:	31f00613          	li	a2,799
    e88883f8:	00047597          	auipc	a1,0x47
    e88883fc:	57858593          	addi	a1,a1,1400 # e88cf970 <ip_addr_any_type+0x110>
    e8888400:	00047517          	auipc	a0,0x47
    e8888404:	cb050513          	addi	a0,a0,-848 # e88cf0b0 <kSinTable1024+0x900>
    e8888408:	ebff30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("ipaddr != NULL", ipaddr != NULL);
    e888840c:	e49d                	bnez	s1,e888843a <etharp_output+0x9c>
    e888840e:	02f00593          	li	a1,47
    e8888412:	00047517          	auipc	a0,0x47
    e8888416:	46650513          	addi	a0,a0,1126 # e88cf878 <ip_addr_any_type+0x18>
    e888841a:	f5ff30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888841e:	00150693          	addi	a3,a0,1
    e8888422:	32000613          	li	a2,800
    e8888426:	00047597          	auipc	a1,0x47
    e888842a:	52a58593          	addi	a1,a1,1322 # e88cf950 <ip_addr_any_type+0xf0>
    e888842e:	00047517          	auipc	a0,0x47
    e8888432:	c8250513          	addi	a0,a0,-894 # e88cf0b0 <kSinTable1024+0x900>
    e8888436:	e91f30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (ip4_addr_isbroadcast(ipaddr, netif)) {
    e888843a:	4088                	lw	a0,0(s1)
    e888843c:	85a2                	mv	a1,s0
    e888843e:	17e010ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
    e8888442:	87aa                	mv	a5,a0
    e8888444:	10051d63          	bnez	a0,e888855e <etharp_output+0x1c0>
  } else if (ip4_addr_ismulticast(ipaddr)) {
    e8888448:	4094                	lw	a3,0(s1)
    e888844a:	0e000713          	li	a4,224
    e888844e:	0f06f613          	andi	a2,a3,240
    e8888452:	02e61e63          	bne	a2,a4,e888848e <etharp_output+0xf0>
    mcastaddr.addr[0] = LL_IP4_MULTICAST_ADDR_0;
    e8888456:	4785                	li	a5,1
    e8888458:	00f11423          	sh	a5,8(sp)
    mcastaddr.addr[2] = LL_IP4_MULTICAST_ADDR_2;
    e888845c:	05e00793          	li	a5,94
    e8888460:	00f10523          	sb	a5,10(sp)
    mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f;
    e8888464:	0014c783          	lbu	a5,1(s1)
    dest = &mcastaddr;
    e8888468:	0034                	addi	a3,sp,8
    mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f;
    e888846a:	07f7f793          	andi	a5,a5,127
    e888846e:	00f105a3          	sb	a5,11(sp)
    mcastaddr.addr[4] = ip4_addr3(ipaddr);
    e8888472:	0024d783          	lhu	a5,2(s1)
    e8888476:	00f11623          	sh	a5,12(sp)
  return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), dest, ETHTYPE_IP);
    e888847a:	6705                	lui	a4,0x1
    e888847c:	80070713          	addi	a4,a4,-2048 # 800 <memcmp-0xe87ff800>
    e8888480:	10440613          	addi	a2,s0,260
    e8888484:	85ca                	mv	a1,s2
    e8888486:	8522                	mv	a0,s0
    e8888488:	5ae0f0ef          	jal	ra,e8897a36 <ethernet_output>
    e888848c:	a041                	j	e888850c <etharp_output+0x16e>
    if (!ip4_addr_netcmp(ipaddr, netif_ip4_addr(netif), netif_ip4_netmask(netif)) &&
    e888848e:	4418                	lw	a4,8(s0)
    e8888490:	5010                	lw	a2,32(s0)
    e8888492:	8f35                	xor	a4,a4,a3
    e8888494:	8f71                	and	a4,a4,a2
    e8888496:	2701                	sext.w	a4,a4
    e8888498:	c31d                	beqz	a4,e88884be <etharp_output+0x120>
    e888849a:	6741                	lui	a4,0x10
    e888849c:	3c06b68b          	extu	a3,a3,15,0
    e88884a0:	ea970713          	addi	a4,a4,-343 # fea9 <memcmp-0xe87f0157>
    e88884a4:	00e68d63          	beq	a3,a4,e88884be <etharp_output+0x120>
      if (!ip4_addr_islinklocal(&iphdr->src))
    e88884a8:	00893683          	ld	a3,8(s2)
    e88884ac:	00c6d683          	lhu	a3,12(a3)
    e88884b0:	00e68763          	beq	a3,a4,e88884be <etharp_output+0x120>
          if (!ip4_addr_isany_val(*netif_ip4_gw(netif))) {
    e88884b4:	5c18                	lw	a4,56(s0)
            return ERR_RTE;
    e88884b6:	5571                	li	a0,-4
          if (!ip4_addr_isany_val(*netif_ip4_gw(netif))) {
    e88884b8:	cb31                	beqz	a4,e888850c <etharp_output+0x16e>
            dst_addr = netif_ip4_gw(netif);
    e88884ba:	03840493          	addi	s1,s0,56
        if ((arp_table[etharp_cached_entry].state >= ETHARP_STATE_STABLE) &&
    e88884be:	0005e697          	auipc	a3,0x5e
    e88884c2:	87268693          	addi	a3,a3,-1934 # e88e5d30 <etharp_cached_entry>
    e88884c6:	0006c603          	lbu	a2,0(a3)
    e88884ca:	02800593          	li	a1,40
    e88884ce:	0005d717          	auipc	a4,0x5d
    e88884d2:	6d270713          	addi	a4,a4,1746 # e88e5ba0 <arp_table>
    e88884d6:	20b6170b          	mula	a4,a2,a1
    e88884da:	4585                	li	a1,1
    e88884dc:	02074503          	lbu	a0,32(a4)
    e88884e0:	02a5fc63          	bgeu	a1,a0,e8888518 <etharp_output+0x17a>
    e88884e4:	6b0c                	ld	a1,16(a4)
    e88884e6:	02859963          	bne	a1,s0,e8888518 <etharp_output+0x17a>
            (arp_table[etharp_cached_entry].netif == netif) &&
    e88884ea:	408c                	lw	a1,0(s1)
    e88884ec:	4718                	lw	a4,8(a4)
    e88884ee:	02e59563          	bne	a1,a4,e8888518 <etharp_output+0x17a>
          ETHARP_STATS_INC(etharp.cachehit);
    e88884f2:	0005e717          	auipc	a4,0x5e
    e88884f6:	f5e70713          	addi	a4,a4,-162 # e88e6450 <lwip_stats>
    e88884fa:	02e75783          	lhu	a5,46(a4)
    e88884fe:	2785                	addiw	a5,a5,1
    e8888500:	02f71723          	sh	a5,46(a4)
        return etharp_output_to_arp_index(netif, q, i);
    e8888504:	85ca                	mv	a1,s2
    e8888506:	8522                	mv	a0,s0
    e8888508:	bbfff0ef          	jal	ra,e88880c6 <etharp_output_to_arp_index>
}
    e888850c:	70a2                	ld	ra,40(sp)
    e888850e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8888512:	7902                	ld	s2,32(sp)
    e8888514:	6145                	addi	sp,sp,48
    e8888516:	8082                	ret
    e8888518:	0005d717          	auipc	a4,0x5d
    e888851c:	68870713          	addi	a4,a4,1672 # e88e5ba0 <arp_table>
      if ((arp_table[i].state >= ETHARP_STATE_STABLE) &&
    e8888520:	4605                	li	a2,1
    for (i = 0; i < ARP_TABLE_SIZE; i++) {
    e8888522:	45a9                	li	a1,10
      if ((arp_table[i].state >= ETHARP_STATE_STABLE) &&
    e8888524:	02074503          	lbu	a0,32(a4)
    e8888528:	00a67e63          	bgeu	a2,a0,e8888544 <etharp_output+0x1a6>
    e888852c:	6b08                	ld	a0,16(a4)
    e888852e:	00851b63          	bne	a0,s0,e8888544 <etharp_output+0x1a6>
          (arp_table[i].netif == netif) &&
    e8888532:	0004a803          	lw	a6,0(s1)
    e8888536:	4708                	lw	a0,8(a4)
    e8888538:	00a81663          	bne	a6,a0,e8888544 <etharp_output+0x1a6>
        ETHARP_SET_ADDRHINT(netif, i);
    e888853c:	00f68023          	sb	a5,0(a3)
        return etharp_output_to_arp_index(netif, q, i);
    e8888540:	863e                	mv	a2,a5
    e8888542:	b7c9                	j	e8888504 <etharp_output+0x166>
    for (i = 0; i < ARP_TABLE_SIZE; i++) {
    e8888544:	2785                	addiw	a5,a5,1
    e8888546:	0ff7f793          	andi	a5,a5,255
    e888854a:	02870713          	addi	a4,a4,40
    e888854e:	fcb79be3          	bne	a5,a1,e8888524 <etharp_output+0x186>
    return etharp_query(netif, dst_addr, q);
    e8888552:	864a                	mv	a2,s2
    e8888554:	85a6                	mv	a1,s1
    e8888556:	8522                	mv	a0,s0
    e8888558:	c5fff0ef          	jal	ra,e88881b6 <etharp_query>
    e888855c:	bf45                	j	e888850c <etharp_output+0x16e>
    dest = (const struct eth_addr *)&ethbroadcast;
    e888855e:	0004a697          	auipc	a3,0x4a
    e8888562:	51268693          	addi	a3,a3,1298 # e88d2a70 <ethbroadcast>
    e8888566:	bf11                	j	e888847a <etharp_output+0xdc>

00000000e8888568 <igmp_send>:
static void
igmp_send(struct netif *netif, struct igmp_group *group, u8_t type)
{
  struct pbuf     *p    = NULL;
  struct igmp_msg *igmp = NULL;
  ip4_addr_t   src  = *IP4_ADDR_ANY4;
    e8888568:	00048797          	auipc	a5,0x48
    e888856c:	a5878793          	addi	a5,a5,-1448 # e88cffc0 <ip_addr_any>
    e8888570:	439c                	lw	a5,0(a5)
{
    e8888572:	7159                	addi	sp,sp,-112
    e8888574:	e4ce                	sd	s3,72(sp)
    e8888576:	e0d2                	sd	s4,64(sp)
    e8888578:	fc56                	sd	s5,56(sp)
    e888857a:	8a2a                	mv	s4,a0
    e888857c:	89ae                	mv	s3,a1
    e888857e:	8ab2                	mv	s5,a2
  ip4_addr_t  *dest = NULL;

  /* IP header + "router alert" option + IGMP header */
  p = pbuf_alloc(PBUF_TRANSPORT, IGMP_MINLEN, PBUF_RAM);
    e8888580:	45a1                	li	a1,8
    e8888582:	28000613          	li	a2,640
    e8888586:	04a00513          	li	a0,74
{
    e888858a:	e8ca                	sd	s2,80(sp)
    e888858c:	f486                	sd	ra,104(sp)
    e888858e:	f0a2                	sd	s0,96(sp)
    e8888590:	eca6                	sd	s1,88(sp)
  ip4_addr_t   src  = *IP4_ADDR_ANY4;
    e8888592:	d03e                	sw	a5,32(sp)
  p = pbuf_alloc(PBUF_TRANSPORT, IGMP_MINLEN, PBUF_RAM);
    e8888594:	5fd060ef          	jal	ra,e888f390 <pbuf_alloc>

  if (p) {
    e8888598:	0005e917          	auipc	s2,0x5e
    e888859c:	eb890913          	addi	s2,s2,-328 # e88e6450 <lwip_stats>
    e88885a0:	c161                	beqz	a0,e8888660 <igmp_send+0xf8>
    igmp = (struct igmp_msg *)p->payload;
    LWIP_ASSERT("igmp_send: check that first pbuf can hold struct igmp_msg",
    e88885a2:	01255703          	lhu	a4,18(a0)
    e88885a6:	479d                	li	a5,7
    e88885a8:	84aa                	mv	s1,a0
    igmp = (struct igmp_msg *)p->payload;
    e88885aa:	6500                	ld	s0,8(a0)
    LWIP_ASSERT("igmp_send: check that first pbuf can hold struct igmp_msg",
    e88885ac:	02e7e863          	bltu	a5,a4,e88885dc <igmp_send+0x74>
    e88885b0:	02f00593          	li	a1,47
    e88885b4:	00047517          	auipc	a0,0x47
    e88885b8:	7bc50513          	addi	a0,a0,1980 # e88cfd70 <ip_addr_any_type+0x510>
    e88885bc:	dbdf30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88885c0:	00150693          	addi	a3,a0,1
    e88885c4:	30300613          	li	a2,771
    e88885c8:	00048597          	auipc	a1,0x48
    e88885cc:	83858593          	addi	a1,a1,-1992 # e88cfe00 <ip_addr_any_type+0x5a0>
    e88885d0:	00047517          	auipc	a0,0x47
    e88885d4:	ae050513          	addi	a0,a0,-1312 # e88cf0b0 <kSinTable1024+0x900>
    e88885d8:	ceff30ef          	jal	ra,e887c2c6 <eLIBs_printf>
                (p->len >= sizeof(struct igmp_msg)));
    ip4_addr_copy(src, *netif_ip4_addr(netif));
    e88885dc:	008a2783          	lw	a5,8(s4)

    if (type == IGMP_V2_MEMB_REPORT) {
    e88885e0:	4759                	li	a4,22
    ip4_addr_copy(src, *netif_ip4_addr(netif));
    e88885e2:	d03e                	sw	a5,32(sp)
    if (type == IGMP_V2_MEMB_REPORT) {
    e88885e4:	0089a783          	lw	a5,8(s3)
    e88885e8:	06ea9663          	bne	s5,a4,e8888654 <igmp_send+0xec>
      dest = &(group->group_address);
      ip4_addr_copy(igmp->igmp_group_address, group->group_address);
    e88885ec:	c05c                	sw	a5,4(s0)
      group->last_reporter_flag = 1; /* Remember we were the last to report */
    e88885ee:	4785                	li	a5,1
      dest = &(group->group_address);
    e88885f0:	00898613          	addi	a2,s3,8
      group->last_reporter_flag = 1; /* Remember we were the last to report */
    e88885f4:	00f98623          	sb	a5,12(s3)

    if ((type == IGMP_V2_MEMB_REPORT) || (type == IGMP_LEAVE_GROUP)) {
      igmp->igmp_msgtype  = type;
      igmp->igmp_maxresp  = 0;
      igmp->igmp_checksum = 0;
      igmp->igmp_checksum = inet_chksum(igmp, IGMP_MINLEN);
    e88885f8:	45a1                	li	a1,8
      igmp->igmp_msgtype  = type;
    e88885fa:	01540023          	sb	s5,0(s0)
      igmp->igmp_maxresp  = 0;
    e88885fe:	000400a3          	sb	zero,1(s0)
      igmp->igmp_checksum = 0;
    e8888602:	00041123          	sh	zero,2(s0)
      igmp->igmp_checksum = inet_chksum(igmp, IGMP_MINLEN);
    e8888606:	8522                	mv	a0,s0
    e8888608:	ec32                	sd	a2,24(sp)
    e888860a:	b1cff0ef          	jal	ra,e8887926 <inet_chksum>
    e888860e:	00a41123          	sh	a0,2(s0)
  ra[0] = PP_HTONS(ROUTER_ALERT);
    e8888612:	49400793          	li	a5,1172
    e8888616:	d43e                	sw	a5,40(sp)
  IGMP_STATS_INC(igmp.xmit);
    e8888618:	07895783          	lhu	a5,120(s2)
  return ip4_output_if_opt(p, src, dest, IGMP_TTL, 0, IP_PROTO_IGMP, netif, ra, ROUTER_ALERTLEN);
    e888861c:	6662                	ld	a2,24(sp)
    e888861e:	02810893          	addi	a7,sp,40
  IGMP_STATS_INC(igmp.xmit);
    e8888622:	2785                	addiw	a5,a5,1
    e8888624:	06f91c23          	sh	a5,120(s2)
  return ip4_output_if_opt(p, src, dest, IGMP_TTL, 0, IP_PROTO_IGMP, netif, ra, ROUTER_ALERTLEN);
    e8888628:	4791                	li	a5,4
    e888862a:	e03e                	sd	a5,0(sp)
    e888862c:	8852                	mv	a6,s4
    e888862e:	4789                	li	a5,2
    e8888630:	4701                	li	a4,0
    e8888632:	4685                	li	a3,1
    e8888634:	100c                	addi	a1,sp,32
    e8888636:	8526                	mv	a0,s1
    e8888638:	747000ef          	jal	ra,e888957e <ip4_output_if_opt>

      igmp_ip_output_if(p, &src, dest, netif);
    }

    pbuf_free(p);
    e888863c:	8526                	mv	a0,s1
    e888863e:	40f060ef          	jal	ra,e888f24c <pbuf_free>
  } else {
    LWIP_DEBUGF(IGMP_DEBUG, ("igmp_send: not enough memory for igmp_send\n"));
    IGMP_STATS_INC(igmp.memerr);
  }
}
    e8888642:	70a6                	ld	ra,104(sp)
    e8888644:	7406                	ld	s0,96(sp)
    e8888646:	64e6                	ld	s1,88(sp)
    e8888648:	6946                	ld	s2,80(sp)
    e888864a:	69a6                	ld	s3,72(sp)
    e888864c:	6a06                	ld	s4,64(sp)
    e888864e:	7ae2                	ld	s5,56(sp)
    e8888650:	6165                	addi	sp,sp,112
    e8888652:	8082                	ret
        ip4_addr_copy(igmp->igmp_group_address, group->group_address);
    e8888654:	c05c                	sw	a5,4(s0)
        dest = &allrouters;
    e8888656:	0005d617          	auipc	a2,0x5d
    e888865a:	6e260613          	addi	a2,a2,1762 # e88e5d38 <allrouters>
    e888865e:	bf69                	j	e88885f8 <igmp_send+0x90>
    IGMP_STATS_INC(igmp.memerr);
    e8888660:	08295783          	lhu	a5,130(s2)
    e8888664:	2785                	addiw	a5,a5,1
    e8888666:	08f91123          	sh	a5,130(s2)
}
    e888866a:	bfe1                	j	e8888642 <igmp_send+0xda>

00000000e888866c <igmp_delaying_member>:
  if ((group->group_state == IGMP_GROUP_IDLE_MEMBER) ||
    e888866c:	00d54783          	lbu	a5,13(a0)
    e8888670:	4709                	li	a4,2
    e8888672:	00e78a63          	beq	a5,a4,e8888686 <igmp_delaying_member+0x1a>
    e8888676:	4705                	li	a4,1
    e8888678:	04e79763          	bne	a5,a4,e88886c6 <igmp_delaying_member+0x5a>
       ((group->timer == 0) || (maxresp < group->timer)))) {
    e888867c:	00e55783          	lhu	a5,14(a0)
      ((group->group_state == IGMP_GROUP_DELAYING_MEMBER) &&
    e8888680:	c399                	beqz	a5,e8888686 <igmp_delaying_member+0x1a>
       ((group->timer == 0) || (maxresp < group->timer)))) {
    e8888682:	04f5f263          	bgeu	a1,a5,e88886c6 <igmp_delaying_member+0x5a>
{
    e8888686:	1101                	addi	sp,sp,-32
    e8888688:	e422                	sd	s0,8(sp)
    e888868a:	e826                	sd	s1,16(sp)
    e888868c:	ec06                	sd	ra,24(sp)
  group->timer = (u16_t)(max_time > 2 ? (LWIP_RAND() % max_time) : 1);
    e888868e:	4789                	li	a5,2
    e8888690:	842e                	mv	s0,a1
    e8888692:	84aa                	mv	s1,a0
    e8888694:	00b7ed63          	bltu	a5,a1,e88886ae <igmp_delaying_member+0x42>
    e8888698:	4785                	li	a5,1
    e888869a:	00f49723          	sh	a5,14(s1)
    group->group_state = IGMP_GROUP_DELAYING_MEMBER;
    e888869e:	4785                	li	a5,1
    e88886a0:	00f486a3          	sb	a5,13(s1)
}
    e88886a4:	60e2                	ld	ra,24(sp)
    e88886a6:	6422                	ld	s0,8(sp)
    e88886a8:	64c2                	ld	s1,16(sp)
    e88886aa:	6105                	addi	sp,sp,32
    e88886ac:	8082                	ret
  group->timer = (u16_t)(max_time > 2 ? (LWIP_RAND() % max_time) : 1);
    e88886ae:	80000537          	lui	a0,0x80000
    e88886b2:	fff54513          	not	a0,a0
    e88886b6:	c3df30ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e88886ba:	0285743b          	remuw	s0,a0,s0
    e88886be:	00849723          	sh	s0,14(s1)
  if (group->timer == 0) {
    e88886c2:	d879                	beqz	s0,e8888698 <igmp_delaying_member+0x2c>
    e88886c4:	bfe9                	j	e888869e <igmp_delaying_member+0x32>
    e88886c6:	8082                	ret

00000000e88886c8 <igmp_init>:
  IP4_ADDR(&allsystems, 224, 0, 0, 1);
    e88886c8:	010007b7          	lui	a5,0x1000
    e88886cc:	0e07879b          	addiw	a5,a5,224
    e88886d0:	0005d717          	auipc	a4,0x5d
    e88886d4:	66f72823          	sw	a5,1648(a4) # e88e5d40 <allsystems>
  IP4_ADDR(&allrouters, 224, 0, 0, 2);
    e88886d8:	020007b7          	lui	a5,0x2000
    e88886dc:	0e07879b          	addiw	a5,a5,224
    e88886e0:	0005d717          	auipc	a4,0x5d
    e88886e4:	64f72c23          	sw	a5,1624(a4) # e88e5d38 <allrouters>
}
    e88886e8:	8082                	ret

00000000e88886ea <igmp_report_groups>:
  struct igmp_group *group = netif_igmp_data(netif);
    e88886ea:	797c                	ld	a5,240(a0)
  if (group != NULL) {
    e88886ec:	c385                	beqz	a5,e888870c <igmp_report_groups+0x22>
{
    e88886ee:	1141                	addi	sp,sp,-16
    e88886f0:	e406                	sd	ra,8(sp)
    e88886f2:	e022                	sd	s0,0(sp)
    group = group->next;
    e88886f4:	6380                	ld	s0,0(a5)
  while (group != NULL) {
    e88886f6:	e409                	bnez	s0,e8888700 <igmp_report_groups+0x16>
}
    e88886f8:	60a2                	ld	ra,8(sp)
    e88886fa:	6402                	ld	s0,0(sp)
    e88886fc:	0141                	addi	sp,sp,16
    e88886fe:	8082                	ret
    igmp_delaying_member(group, IGMP_JOIN_DELAYING_MEMBER_TMR);
    e8888700:	8522                	mv	a0,s0
    e8888702:	4595                	li	a1,5
    e8888704:	f69ff0ef          	jal	ra,e888866c <igmp_delaying_member>
    group = group->next;
    e8888708:	6000                	ld	s0,0(s0)
    e888870a:	b7f5                	j	e88886f6 <igmp_report_groups+0xc>
    e888870c:	8082                	ret

00000000e888870e <igmp_lookfor_group>:
  struct igmp_group *group = netif_igmp_data(ifp);
    e888870e:	7968                	ld	a0,240(a0)
  while (group != NULL) {
    e8888710:	e111                	bnez	a0,e8888714 <igmp_lookfor_group+0x6>
}
    e8888712:	8082                	ret
    if (ip4_addr_cmp(&(group->group_address), addr)) {
    e8888714:	4518                	lw	a4,8(a0)
    e8888716:	419c                	lw	a5,0(a1)
    e8888718:	fef70de3          	beq	a4,a5,e8888712 <igmp_lookfor_group+0x4>
    group = group->next;
    e888871c:	6108                	ld	a0,0(a0)
    e888871e:	bfcd                	j	e8888710 <igmp_lookfor_group+0x2>

00000000e8888720 <igmp_lookup_group>:
{
    e8888720:	7179                	addi	sp,sp,-48
    e8888722:	e422                	sd	s0,8(sp)
    e8888724:	ec4a                	sd	s2,24(sp)
    e8888726:	f04e                	sd	s3,32(sp)
    e8888728:	f406                	sd	ra,40(sp)
    e888872a:	e826                	sd	s1,16(sp)
    e888872c:	89aa                	mv	s3,a0
    e888872e:	892e                	mv	s2,a1
  group = igmp_lookfor_group(ifp, addr);
    e8888730:	fdfff0ef          	jal	ra,e888870e <igmp_lookfor_group>
    e8888734:	842a                	mv	s0,a0
  if (group != NULL) {
    e8888736:	e535                	bnez	a0,e88887a2 <igmp_lookup_group+0x82>
  group = (struct igmp_group *)memp_malloc(MEMP_IGMP_GROUP);
    e8888738:	4529                	li	a0,10
  struct igmp_group *list_head = netif_igmp_data(ifp);
    e888873a:	0f09b483          	ld	s1,240(s3)
  group = (struct igmp_group *)memp_malloc(MEMP_IGMP_GROUP);
    e888873e:	20f050ef          	jal	ra,e888e14c <memp_malloc>
    e8888742:	842a                	mv	s0,a0
  if (group != NULL) {
    e8888744:	cd39                	beqz	a0,e88887a2 <igmp_lookup_group+0x82>
    ip4_addr_set(&(group->group_address), addr);
    e8888746:	4781                	li	a5,0
    e8888748:	00090463          	beqz	s2,e8888750 <igmp_lookup_group+0x30>
    e888874c:	00092783          	lw	a5,0(s2)
    e8888750:	c41c                	sw	a5,8(s0)
    group->last_reporter_flag = 0;
    e8888752:	00042623          	sw	zero,12(s0)
    e8888756:	0005d797          	auipc	a5,0x5d
    e888875a:	5ea78793          	addi	a5,a5,1514 # e88e5d40 <allsystems>
    group->use                = 0;
    e888875e:	00040823          	sb	zero,16(s0)
    if (list_head == NULL) {
    e8888762:	4398                	lw	a4,0(a5)
    e8888764:	00092783          	lw	a5,0(s2)
    e8888768:	e4a9                	bnez	s1,e88887b2 <igmp_lookup_group+0x92>
      LWIP_ASSERT("igmp_lookup_group: first group must be allsystems",
    e888876a:	02e78863          	beq	a5,a4,e888879a <igmp_lookup_group+0x7a>
    e888876e:	02f00593          	li	a1,47
    e8888772:	00047517          	auipc	a0,0x47
    e8888776:	5fe50513          	addi	a0,a0,1534 # e88cfd70 <ip_addr_any_type+0x510>
    e888877a:	bfff30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888877e:	00150693          	addi	a3,a0,1
    e8888782:	10d00613          	li	a2,269
    e8888786:	00047597          	auipc	a1,0x47
    e888878a:	56a58593          	addi	a1,a1,1386 # e88cfcf0 <ip_addr_any_type+0x490>
    e888878e:	00047517          	auipc	a0,0x47
    e8888792:	92250513          	addi	a0,a0,-1758 # e88cf0b0 <kSinTable1024+0x900>
    e8888796:	b31f30ef          	jal	ra,e887c2c6 <eLIBs_printf>
      group->next = NULL;
    e888879a:	00043023          	sd	zero,0(s0)
      netif_set_client_data(ifp, LWIP_NETIF_CLIENT_DATA_INDEX_IGMP, group);
    e888879e:	0e89b823          	sd	s0,240(s3)
}
    e88887a2:	8522                	mv	a0,s0
    e88887a4:	70a2                	ld	ra,40(sp)
    e88887a6:	6422                	ld	s0,8(sp)
    e88887a8:	64c2                	ld	s1,16(sp)
    e88887aa:	6962                	ld	s2,24(sp)
    e88887ac:	7982                	ld	s3,32(sp)
    e88887ae:	6145                	addi	sp,sp,48
    e88887b0:	8082                	ret
      LWIP_ASSERT("igmp_lookup_group: all except first group must not be allsystems",
    e88887b2:	02e79863          	bne	a5,a4,e88887e2 <igmp_lookup_group+0xc2>
    e88887b6:	02f00593          	li	a1,47
    e88887ba:	00047517          	auipc	a0,0x47
    e88887be:	5b650513          	addi	a0,a0,1462 # e88cfd70 <ip_addr_any_type+0x510>
    e88887c2:	bb7f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88887c6:	00150693          	addi	a3,a0,1
    e88887ca:	11300613          	li	a2,275
    e88887ce:	00047597          	auipc	a1,0x47
    e88887d2:	55a58593          	addi	a1,a1,1370 # e88cfd28 <ip_addr_any_type+0x4c8>
    e88887d6:	00047517          	auipc	a0,0x47
    e88887da:	8da50513          	addi	a0,a0,-1830 # e88cf0b0 <kSinTable1024+0x900>
    e88887de:	ae9f30ef          	jal	ra,e887c2c6 <eLIBs_printf>
      group->next = list_head->next;
    e88887e2:	609c                	ld	a5,0(s1)
    e88887e4:	e01c                	sd	a5,0(s0)
      list_head->next = group;
    e88887e6:	e080                	sd	s0,0(s1)
    e88887e8:	bf6d                	j	e88887a2 <igmp_lookup_group+0x82>

00000000e88887ea <igmp_start>:
{
    e88887ea:	1141                	addi	sp,sp,-16
  group = igmp_lookup_group(netif, &allsystems);
    e88887ec:	0005d597          	auipc	a1,0x5d
    e88887f0:	55458593          	addi	a1,a1,1364 # e88e5d40 <allsystems>
{
    e88887f4:	e022                	sd	s0,0(sp)
    e88887f6:	e406                	sd	ra,8(sp)
    e88887f8:	842a                	mv	s0,a0
  group = igmp_lookup_group(netif, &allsystems);
    e88887fa:	f27ff0ef          	jal	ra,e8888720 <igmp_lookup_group>
  if (group != NULL) {
    e88887fe:	c90d                	beqz	a0,e8888830 <igmp_start+0x46>
    group->group_state = IGMP_GROUP_IDLE_MEMBER;
    e8888800:	4789                	li	a5,2
    e8888802:	00f506a3          	sb	a5,13(a0)
    group->use++;
    e8888806:	01054783          	lbu	a5,16(a0)
    e888880a:	2785                	addiw	a5,a5,1
    e888880c:	00f50823          	sb	a5,16(a0)
    if (netif->igmp_mac_filter != NULL) {
    e8888810:	14843783          	ld	a5,328(s0)
    return ERR_OK;
    e8888814:	4501                	li	a0,0
    if (netif->igmp_mac_filter != NULL) {
    e8888816:	cb89                	beqz	a5,e8888828 <igmp_start+0x3e>
      netif->igmp_mac_filter(netif, &allsystems, NETIF_ADD_MAC_FILTER);
    e8888818:	4605                	li	a2,1
    e888881a:	0005d597          	auipc	a1,0x5d
    e888881e:	52658593          	addi	a1,a1,1318 # e88e5d40 <allsystems>
    e8888822:	8522                	mv	a0,s0
    e8888824:	9782                	jalr	a5
    return ERR_OK;
    e8888826:	4501                	li	a0,0
}
    e8888828:	60a2                	ld	ra,8(sp)
    e888882a:	6402                	ld	s0,0(sp)
    e888882c:	0141                	addi	sp,sp,16
    e888882e:	8082                	ret
  return ERR_MEM;
    e8888830:	557d                	li	a0,-1
    e8888832:	bfdd                	j	e8888828 <igmp_start+0x3e>

00000000e8888834 <igmp_input>:
{
    e8888834:	715d                	addi	sp,sp,-80
    e8888836:	e0a2                	sd	s0,64(sp)
  IGMP_STATS_INC(igmp.recv);
    e8888838:	0005e417          	auipc	s0,0x5e
    e888883c:	c1840413          	addi	s0,s0,-1000 # e88e6450 <lwip_stats>
{
    e8888840:	f052                	sd	s4,32(sp)
    e8888842:	e486                	sd	ra,72(sp)
    e8888844:	fc26                	sd	s1,56(sp)
    e8888846:	f84a                	sd	s2,48(sp)
    e8888848:	f44e                	sd	s3,40(sp)
    e888884a:	ec56                	sd	s5,24(sp)
  IGMP_STATS_INC(igmp.recv);
    e888884c:	07a45783          	lhu	a5,122(s0)
{
    e8888850:	8a2e                	mv	s4,a1
  IGMP_STATS_INC(igmp.recv);
    e8888852:	2785                	addiw	a5,a5,1
    e8888854:	06f41d23          	sh	a5,122(s0)
  if (p->len < IGMP_MINLEN) {
    e8888858:	01255583          	lhu	a1,18(a0)
    e888885c:	479d                	li	a5,7
    e888885e:	02b7e263          	bltu	a5,a1,e8888882 <igmp_input+0x4e>
    pbuf_free(p);
    e8888862:	1eb060ef          	jal	ra,e888f24c <pbuf_free>
    IGMP_STATS_INC(igmp.lenerr);
    e8888866:	08045783          	lhu	a5,128(s0)
    e888886a:	2785                	addiw	a5,a5,1
    e888886c:	08f41023          	sh	a5,128(s0)
}
    e8888870:	60a6                	ld	ra,72(sp)
    e8888872:	6406                	ld	s0,64(sp)
    e8888874:	74e2                	ld	s1,56(sp)
    e8888876:	7942                	ld	s2,48(sp)
    e8888878:	79a2                	ld	s3,40(sp)
    e888887a:	7a02                	ld	s4,32(sp)
    e888887c:	6ae2                	ld	s5,24(sp)
    e888887e:	6161                	addi	sp,sp,80
    e8888880:	8082                	ret
  igmp = (struct igmp_msg *)p->payload;
    e8888882:	00853903          	ld	s2,8(a0)
    e8888886:	89aa                	mv	s3,a0
    e8888888:	8ab2                	mv	s5,a2
  if (inet_chksum(igmp, p->len)) {
    e888888a:	854a                	mv	a0,s2
    e888888c:	89aff0ef          	jal	ra,e8887926 <inet_chksum>
    e8888890:	c911                	beqz	a0,e88888a4 <igmp_input+0x70>
    pbuf_free(p);
    e8888892:	854e                	mv	a0,s3
    e8888894:	1b9060ef          	jal	ra,e888f24c <pbuf_free>
    IGMP_STATS_INC(igmp.chkerr);
    e8888898:	07e45783          	lhu	a5,126(s0)
    e888889c:	2785                	addiw	a5,a5,1
    e888889e:	06f41f23          	sh	a5,126(s0)
    return;
    e88888a2:	b7f9                	j	e8888870 <igmp_input+0x3c>
  group = igmp_lookfor_group(inp, dest); /* use the destination IP address of incoming packet */
    e88888a4:	85d6                	mv	a1,s5
    e88888a6:	8552                	mv	a0,s4
    e88888a8:	e67ff0ef          	jal	ra,e888870e <igmp_lookfor_group>
  if (!group) {
    e88888ac:	e911                	bnez	a0,e88888c0 <igmp_input+0x8c>
    pbuf_free(p);
    e88888ae:	854e                	mv	a0,s3
    e88888b0:	19d060ef          	jal	ra,e888f24c <pbuf_free>
    IGMP_STATS_INC(igmp.drop);
    e88888b4:	07c45783          	lhu	a5,124(s0)
    e88888b8:	2785                	addiw	a5,a5,1
    e88888ba:	06f41e23          	sh	a5,124(s0)
    return;
    e88888be:	bf4d                	j	e8888870 <igmp_input+0x3c>
  switch (igmp->igmp_msgtype) {
    e88888c0:	00094783          	lbu	a5,0(s2)
    e88888c4:	4745                	li	a4,17
    e88888c6:	00e78b63          	beq	a5,a4,e88888dc <igmp_input+0xa8>
    e88888ca:	4759                	li	a4,22
    e88888cc:	0ae78b63          	beq	a5,a4,e8888982 <igmp_input+0x14e>
      IGMP_STATS_INC(igmp.proterr);
    e88888d0:	08445783          	lhu	a5,132(s0)
    e88888d4:	2785                	addiw	a5,a5,1
    e88888d6:	08f41223          	sh	a5,132(s0)
      break;
    e88888da:	a089                	j	e888891c <igmp_input+0xe8>
      if ((ip4_addr_cmp(dest, &allsystems)) && ip4_addr_isany(&igmp->igmp_group_address)) {
    e88888dc:	0005d797          	auipc	a5,0x5d
    e88888e0:	46478793          	addi	a5,a5,1124 # e88e5d40 <allsystems>
    e88888e4:	4398                	lw	a4,0(a5)
    e88888e6:	000aa683          	lw	a3,0(s5)
    e88888ea:	84a2                	mv	s1,s0
    e88888ec:	00490793          	addi	a5,s2,4
    e88888f0:	04e69763          	bne	a3,a4,e888893e <igmp_input+0x10a>
    e88888f4:	c781                	beqz	a5,e88888fc <igmp_input+0xc8>
    e88888f6:	00492783          	lw	a5,4(s2)
    e88888fa:	e3b9                	bnez	a5,e8888940 <igmp_input+0x10c>
        if (igmp->igmp_maxresp == 0) {
    e88888fc:	00194783          	lbu	a5,1(s2)
    e8888900:	e395                	bnez	a5,e8888924 <igmp_input+0xf0>
          IGMP_STATS_INC(igmp.rx_v1);
    e8888902:	0864d783          	lhu	a5,134(s1)
    e8888906:	2785                	addiw	a5,a5,1
    e8888908:	08f49323          	sh	a5,134(s1)
          igmp->igmp_maxresp = IGMP_V1_DELAYING_MEMBER_TMR;
    e888890c:	47a9                	li	a5,10
    e888890e:	00f900a3          	sb	a5,1(s2)
        groupref = netif_igmp_data(inp);
    e8888912:	0f0a3783          	ld	a5,240(s4)
        if (groupref != NULL) {
    e8888916:	c399                	beqz	a5,e888891c <igmp_input+0xe8>
          groupref = groupref->next;
    e8888918:	6380                	ld	s0,0(a5)
        while (groupref) {
    e888891a:	e819                	bnez	s0,e8888930 <igmp_input+0xfc>
  pbuf_free(p);
    e888891c:	854e                	mv	a0,s3
    e888891e:	12f060ef          	jal	ra,e888f24c <pbuf_free>
  return;
    e8888922:	b7b9                	j	e8888870 <igmp_input+0x3c>
          IGMP_STATS_INC(igmp.rx_general);
    e8888924:	08a4d783          	lhu	a5,138(s1)
    e8888928:	2785                	addiw	a5,a5,1
    e888892a:	08f49523          	sh	a5,138(s1)
    e888892e:	b7d5                	j	e8888912 <igmp_input+0xde>
          igmp_delaying_member(groupref, igmp->igmp_maxresp);
    e8888930:	00194583          	lbu	a1,1(s2)
    e8888934:	8522                	mv	a0,s0
    e8888936:	d37ff0ef          	jal	ra,e888866c <igmp_delaying_member>
          groupref = groupref->next;
    e888893a:	6000                	ld	s0,0(s0)
    e888893c:	bff9                	j	e888891a <igmp_input+0xe6>
        if (!ip4_addr_isany(&igmp->igmp_group_address)) {
    e888893e:	cf85                	beqz	a5,e8888976 <igmp_input+0x142>
    e8888940:	00492783          	lw	a5,4(s2)
    e8888944:	cb8d                	beqz	a5,e8888976 <igmp_input+0x142>
          if (ip4_addr_cmp(dest, &allsystems)) {
    e8888946:	00e69863          	bne	a3,a4,e8888956 <igmp_input+0x122>
            group = igmp_lookfor_group(inp, &groupaddr);
    e888894a:	002c                	addi	a1,sp,8
    e888894c:	8552                	mv	a0,s4
            ip4_addr_copy(groupaddr, igmp->igmp_group_address);
    e888894e:	c43e                	sw	a5,8(sp)
            group = igmp_lookfor_group(inp, &groupaddr);
    e8888950:	dbfff0ef          	jal	ra,e888870e <igmp_lookfor_group>
          if (group != NULL) {
    e8888954:	c919                	beqz	a0,e888896a <igmp_input+0x136>
            IGMP_STATS_INC(igmp.rx_group);
    e8888956:	0884d783          	lhu	a5,136(s1)
    e888895a:	2785                	addiw	a5,a5,1
    e888895c:	08f49423          	sh	a5,136(s1)
            igmp_delaying_member(group, igmp->igmp_maxresp);
    e8888960:	00194583          	lbu	a1,1(s2)
    e8888964:	d09ff0ef          	jal	ra,e888866c <igmp_delaying_member>
    e8888968:	bf55                	j	e888891c <igmp_input+0xe8>
            IGMP_STATS_INC(igmp.drop);
    e888896a:	07c4d783          	lhu	a5,124(s1)
    e888896e:	2785                	addiw	a5,a5,1
    e8888970:	06f49e23          	sh	a5,124(s1)
    e8888974:	b765                	j	e888891c <igmp_input+0xe8>
          IGMP_STATS_INC(igmp.proterr);
    e8888976:	0844d783          	lhu	a5,132(s1)
    e888897a:	2785                	addiw	a5,a5,1
    e888897c:	08f49223          	sh	a5,132(s1)
    e8888980:	bf71                	j	e888891c <igmp_input+0xe8>
      IGMP_STATS_INC(igmp.rx_report);
    e8888982:	08c45783          	lhu	a5,140(s0)
    e8888986:	2785                	addiw	a5,a5,1
    e8888988:	08f41623          	sh	a5,140(s0)
      if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) {
    e888898c:	00d54703          	lbu	a4,13(a0)
    e8888990:	4785                	li	a5,1
    e8888992:	f8f715e3          	bne	a4,a5,e888891c <igmp_input+0xe8>
        group->last_reporter_flag = 0;
    e8888996:	20000793          	li	a5,512
    e888899a:	c55c                	sw	a5,12(a0)
    e888899c:	b741                	j	e888891c <igmp_input+0xe8>

00000000e888899e <igmp_joingroup_netif>:
{
    e888899e:	1101                	addi	sp,sp,-32
    e88889a0:	f891540b          	sdd	s0,s1,(sp),0,4
    e88889a4:	ec06                	sd	ra,24(sp)
    e88889a6:	e84a                	sd	s2,16(sp)
  LWIP_ERROR("igmp_joingroup_netif: attempt to join non-multicast address", ip4_addr_ismulticast(groupaddr), return ERR_VAL;);
    e88889a8:	419c                	lw	a5,0(a1)
    e88889aa:	0e000713          	li	a4,224
    e88889ae:	0f07f693          	andi	a3,a5,240
    e88889b2:	02e68f63          	beq	a3,a4,e88889f0 <igmp_joingroup_netif+0x52>
    e88889b6:	02f00593          	li	a1,47
    e88889ba:	00047517          	auipc	a0,0x47
    e88889be:	3b650513          	addi	a0,a0,950 # e88cfd70 <ip_addr_any_type+0x510>
    e88889c2:	9b7f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88889c6:	00150693          	addi	a3,a0,1
    e88889ca:	1ec00613          	li	a2,492
    e88889ce:	00047597          	auipc	a1,0x47
    e88889d2:	13a58593          	addi	a1,a1,314 # e88cfb08 <ip_addr_any_type+0x2a8>
  LWIP_ERROR("igmp_joingroup_netif: attempt to join allsystems address", (!ip4_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
    e88889d6:	00046517          	auipc	a0,0x46
    e88889da:	6da50513          	addi	a0,a0,1754 # e88cf0b0 <kSinTable1024+0x900>
    e88889de:	8e9f30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88889e2:	5569                	li	a0,-6
}
    e88889e4:	60e2                	ld	ra,24(sp)
    e88889e6:	f891440b          	ldd	s0,s1,(sp),0,4
    e88889ea:	6942                	ld	s2,16(sp)
    e88889ec:	6105                	addi	sp,sp,32
    e88889ee:	8082                	ret
  LWIP_ERROR("igmp_joingroup_netif: attempt to join allsystems address", (!ip4_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
    e88889f0:	0005d717          	auipc	a4,0x5d
    e88889f4:	35070713          	addi	a4,a4,848 # e88e5d40 <allsystems>
    e88889f8:	4318                	lw	a4,0(a4)
    e88889fa:	02f71363          	bne	a4,a5,e8888a20 <igmp_joingroup_netif+0x82>
    e88889fe:	02f00593          	li	a1,47
    e8888a02:	00047517          	auipc	a0,0x47
    e8888a06:	36e50513          	addi	a0,a0,878 # e88cfd70 <ip_addr_any_type+0x510>
    e8888a0a:	96ff30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888a0e:	00150693          	addi	a3,a0,1
    e8888a12:	1ed00613          	li	a2,493
    e8888a16:	00047597          	auipc	a1,0x47
    e8888a1a:	13258593          	addi	a1,a1,306 # e88cfb48 <ip_addr_any_type+0x2e8>
    e8888a1e:	bf65                	j	e88889d6 <igmp_joingroup_netif+0x38>
  LWIP_ERROR("igmp_joingroup_netif: attempt to join on non-IGMP netif", netif->flags & NETIF_FLAG_IGMP, return ERR_VAL;);
    e8888a20:	10b54783          	lbu	a5,267(a0)
    e8888a24:	84aa                	mv	s1,a0
    e8888a26:	0207f793          	andi	a5,a5,32
    e8888a2a:	e395                	bnez	a5,e8888a4e <igmp_joingroup_netif+0xb0>
    e8888a2c:	02f00593          	li	a1,47
    e8888a30:	00047517          	auipc	a0,0x47
    e8888a34:	34050513          	addi	a0,a0,832 # e88cfd70 <ip_addr_any_type+0x510>
    e8888a38:	941f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888a3c:	00150693          	addi	a3,a0,1
    e8888a40:	1f000613          	li	a2,496
    e8888a44:	00047597          	auipc	a1,0x47
    e8888a48:	14458593          	addi	a1,a1,324 # e88cfb88 <ip_addr_any_type+0x328>
    e8888a4c:	b769                	j	e88889d6 <igmp_joingroup_netif+0x38>
    e8888a4e:	892e                	mv	s2,a1
  group = igmp_lookup_group(netif, groupaddr);
    e8888a50:	cd1ff0ef          	jal	ra,e8888720 <igmp_lookup_group>
    e8888a54:	842a                	mv	s0,a0
    return ERR_MEM;
    e8888a56:	557d                	li	a0,-1
  if (group != NULL) {
    e8888a58:	d451                	beqz	s0,e88889e4 <igmp_joingroup_netif+0x46>
    if (group->group_state != IGMP_GROUP_NON_MEMBER) {
    e8888a5a:	00d44783          	lbu	a5,13(s0)
    e8888a5e:	eba9                	bnez	a5,e8888ab0 <igmp_joingroup_netif+0x112>
      if ((group->use == 0) && (netif->igmp_mac_filter != NULL)) {
    e8888a60:	01044783          	lbu	a5,16(s0)
    e8888a64:	eb81                	bnez	a5,e8888a74 <igmp_joingroup_netif+0xd6>
    e8888a66:	1484b783          	ld	a5,328(s1)
    e8888a6a:	c789                	beqz	a5,e8888a74 <igmp_joingroup_netif+0xd6>
        netif->igmp_mac_filter(netif, groupaddr, NETIF_ADD_MAC_FILTER);
    e8888a6c:	4605                	li	a2,1
    e8888a6e:	85ca                	mv	a1,s2
    e8888a70:	8526                	mv	a0,s1
    e8888a72:	9782                	jalr	a5
      IGMP_STATS_INC(igmp.tx_join);
    e8888a74:	0005e717          	auipc	a4,0x5e
    e8888a78:	9dc70713          	addi	a4,a4,-1572 # e88e6450 <lwip_stats>
    e8888a7c:	08e75783          	lhu	a5,142(a4)
      igmp_send(netif, group, IGMP_V2_MEMB_REPORT);
    e8888a80:	4659                	li	a2,22
    e8888a82:	85a2                	mv	a1,s0
      IGMP_STATS_INC(igmp.tx_join);
    e8888a84:	2785                	addiw	a5,a5,1
      igmp_send(netif, group, IGMP_V2_MEMB_REPORT);
    e8888a86:	8526                	mv	a0,s1
      IGMP_STATS_INC(igmp.tx_join);
    e8888a88:	08f71723          	sh	a5,142(a4)
      igmp_send(netif, group, IGMP_V2_MEMB_REPORT);
    e8888a8c:	addff0ef          	jal	ra,e8888568 <igmp_send>
  group->timer = (u16_t)(max_time > 2 ? (LWIP_RAND() % max_time) : 1);
    e8888a90:	80000537          	lui	a0,0x80000
    e8888a94:	fff54513          	not	a0,a0
    e8888a98:	85bf30ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e8888a9c:	4795                	li	a5,5
    e8888a9e:	02f5753b          	remuw	a0,a0,a5
  if (group->timer == 0) {
    e8888aa2:	e111                	bnez	a0,e8888aa6 <igmp_joingroup_netif+0x108>
    e8888aa4:	4505                	li	a0,1
      group->group_state = IGMP_GROUP_DELAYING_MEMBER;
    e8888aa6:	4785                	li	a5,1
    e8888aa8:	00a41723          	sh	a0,14(s0)
    e8888aac:	00f406a3          	sb	a5,13(s0)
    group->use++;
    e8888ab0:	01044783          	lbu	a5,16(s0)
    return ERR_OK;
    e8888ab4:	4501                	li	a0,0
    group->use++;
    e8888ab6:	2785                	addiw	a5,a5,1
    e8888ab8:	00f40823          	sb	a5,16(s0)
    return ERR_OK;
    e8888abc:	b725                	j	e88889e4 <igmp_joingroup_netif+0x46>

00000000e8888abe <igmp_joingroup>:
{
    e8888abe:	1101                	addi	sp,sp,-32
    e8888ac0:	f891540b          	sdd	s0,s1,(sp),0,4
    e8888ac4:	ec06                	sd	ra,24(sp)
    e8888ac6:	e84a                	sd	s2,16(sp)
  LWIP_ERROR("igmp_joingroup: attempt to join non-multicast address", ip4_addr_ismulticast(groupaddr), return ERR_VAL;);
    e8888ac8:	419c                	lw	a5,0(a1)
    e8888aca:	0e000713          	li	a4,224
    e8888ace:	0f07f693          	andi	a3,a5,240
    e8888ad2:	02e68f63          	beq	a3,a4,e8888b10 <igmp_joingroup+0x52>
    e8888ad6:	02f00593          	li	a1,47
    e8888ada:	00047517          	auipc	a0,0x47
    e8888ade:	29650513          	addi	a0,a0,662 # e88cfd70 <ip_addr_any_type+0x510>
    e8888ae2:	897f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888ae6:	00150693          	addi	a3,a0,1
    e8888aea:	1c900613          	li	a2,457
    e8888aee:	00047597          	auipc	a1,0x47
    e8888af2:	faa58593          	addi	a1,a1,-86 # e88cfa98 <ip_addr_any_type+0x238>
  LWIP_ERROR("igmp_joingroup: attempt to join allsystems address", (!ip4_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
    e8888af6:	00046517          	auipc	a0,0x46
    e8888afa:	5ba50513          	addi	a0,a0,1466 # e88cf0b0 <kSinTable1024+0x900>
    e8888afe:	fc8f30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8888b02:	5569                	li	a0,-6
}
    e8888b04:	60e2                	ld	ra,24(sp)
    e8888b06:	f891440b          	ldd	s0,s1,(sp),0,4
    e8888b0a:	6942                	ld	s2,16(sp)
    e8888b0c:	6105                	addi	sp,sp,32
    e8888b0e:	8082                	ret
  LWIP_ERROR("igmp_joingroup: attempt to join allsystems address", (!ip4_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
    e8888b10:	0005d717          	auipc	a4,0x5d
    e8888b14:	23070713          	addi	a4,a4,560 # e88e5d40 <allsystems>
    e8888b18:	4318                	lw	a4,0(a4)
    e8888b1a:	02f71363          	bne	a4,a5,e8888b40 <igmp_joingroup+0x82>
    e8888b1e:	02f00593          	li	a1,47
    e8888b22:	00047517          	auipc	a0,0x47
    e8888b26:	24e50513          	addi	a0,a0,590 # e88cfd70 <ip_addr_any_type+0x510>
    e8888b2a:	84ff30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888b2e:	00150693          	addi	a3,a0,1
    e8888b32:	1ca00613          	li	a2,458
    e8888b36:	00047597          	auipc	a1,0x47
    e8888b3a:	f9a58593          	addi	a1,a1,-102 # e88cfad0 <ip_addr_any_type+0x270>
    e8888b3e:	bf65                	j	e8888af6 <igmp_joingroup+0x38>
  NETIF_FOREACH(netif) {
    e8888b40:	0005e797          	auipc	a5,0x5e
    e8888b44:	8f878793          	addi	a5,a5,-1800 # e88e6438 <netif_list>
    e8888b48:	6380                	ld	s0,0(a5)
    e8888b4a:	84aa                	mv	s1,a0
    e8888b4c:	892e                	mv	s2,a1
  err_t err = ERR_VAL; /* no matching interface */
    e8888b4e:	5569                	li	a0,-6
  NETIF_FOREACH(netif) {
    e8888b50:	d855                	beqz	s0,e8888b04 <igmp_joingroup+0x46>
    if ((netif->flags & NETIF_FLAG_IGMP) && ((ip4_addr_isany(ifaddr) || ip4_addr_cmp(netif_ip4_addr(netif), ifaddr)))) {
    e8888b52:	10b44783          	lbu	a5,267(s0)
    e8888b56:	0207f793          	andi	a5,a5,32
    e8888b5a:	cf81                	beqz	a5,e8888b72 <igmp_joingroup+0xb4>
    e8888b5c:	c491                	beqz	s1,e8888b68 <igmp_joingroup+0xaa>
    e8888b5e:	409c                	lw	a5,0(s1)
    e8888b60:	c781                	beqz	a5,e8888b68 <igmp_joingroup+0xaa>
    e8888b62:	4418                	lw	a4,8(s0)
    e8888b64:	00f71763          	bne	a4,a5,e8888b72 <igmp_joingroup+0xb4>
      err = igmp_joingroup_netif(netif, groupaddr);
    e8888b68:	85ca                	mv	a1,s2
    e8888b6a:	8522                	mv	a0,s0
    e8888b6c:	e33ff0ef          	jal	ra,e888899e <igmp_joingroup_netif>
      if (err != ERR_OK) {
    e8888b70:	f951                	bnez	a0,e8888b04 <igmp_joingroup+0x46>
  NETIF_FOREACH(netif) {
    e8888b72:	6000                	ld	s0,0(s0)
    e8888b74:	bff1                	j	e8888b50 <igmp_joingroup+0x92>

00000000e8888b76 <igmp_leavegroup_netif>:
{
    e8888b76:	1101                	addi	sp,sp,-32
    e8888b78:	f891540b          	sdd	s0,s1,(sp),0,4
    e8888b7c:	ec06                	sd	ra,24(sp)
    e8888b7e:	e84a                	sd	s2,16(sp)
  LWIP_ERROR("igmp_leavegroup_netif: attempt to leave non-multicast address", ip4_addr_ismulticast(groupaddr), return ERR_VAL;);
    e8888b80:	419c                	lw	a5,0(a1)
    e8888b82:	0e000713          	li	a4,224
    e8888b86:	0f07f693          	andi	a3,a5,240
    e8888b8a:	02e68f63          	beq	a3,a4,e8888bc8 <igmp_leavegroup_netif+0x52>
    e8888b8e:	02f00593          	li	a1,47
    e8888b92:	00047517          	auipc	a0,0x47
    e8888b96:	1de50513          	addi	a0,a0,478 # e88cfd70 <ip_addr_any_type+0x510>
    e8888b9a:	fdef30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888b9e:	00150693          	addi	a3,a0,1
    e8888ba2:	24c00613          	li	a2,588
    e8888ba6:	00047597          	auipc	a1,0x47
    e8888baa:	08a58593          	addi	a1,a1,138 # e88cfc30 <ip_addr_any_type+0x3d0>
  LWIP_ERROR("igmp_leavegroup_netif: attempt to leave allsystems address", (!ip4_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
    e8888bae:	00046517          	auipc	a0,0x46
    e8888bb2:	50250513          	addi	a0,a0,1282 # e88cf0b0 <kSinTable1024+0x900>
    e8888bb6:	f10f30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8888bba:	5569                	li	a0,-6
}
    e8888bbc:	60e2                	ld	ra,24(sp)
    e8888bbe:	f891440b          	ldd	s0,s1,(sp),0,4
    e8888bc2:	6942                	ld	s2,16(sp)
    e8888bc4:	6105                	addi	sp,sp,32
    e8888bc6:	8082                	ret
  LWIP_ERROR("igmp_leavegroup_netif: attempt to leave allsystems address", (!ip4_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
    e8888bc8:	0005d717          	auipc	a4,0x5d
    e8888bcc:	17870713          	addi	a4,a4,376 # e88e5d40 <allsystems>
    e8888bd0:	4318                	lw	a4,0(a4)
    e8888bd2:	02f71363          	bne	a4,a5,e8888bf8 <igmp_leavegroup_netif+0x82>
    e8888bd6:	02f00593          	li	a1,47
    e8888bda:	00047517          	auipc	a0,0x47
    e8888bde:	19650513          	addi	a0,a0,406 # e88cfd70 <ip_addr_any_type+0x510>
    e8888be2:	f96f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888be6:	00150693          	addi	a3,a0,1
    e8888bea:	24d00613          	li	a2,589
    e8888bee:	00047597          	auipc	a1,0x47
    e8888bf2:	08258593          	addi	a1,a1,130 # e88cfc70 <ip_addr_any_type+0x410>
    e8888bf6:	bf65                	j	e8888bae <igmp_leavegroup_netif+0x38>
  LWIP_ERROR("igmp_leavegroup_netif: attempt to leave on non-IGMP netif", netif->flags & NETIF_FLAG_IGMP, return ERR_VAL;);
    e8888bf8:	10b54783          	lbu	a5,267(a0)
    e8888bfc:	84aa                	mv	s1,a0
    e8888bfe:	0207f793          	andi	a5,a5,32
    e8888c02:	e395                	bnez	a5,e8888c26 <igmp_leavegroup_netif+0xb0>
    e8888c04:	02f00593          	li	a1,47
    e8888c08:	00047517          	auipc	a0,0x47
    e8888c0c:	16850513          	addi	a0,a0,360 # e88cfd70 <ip_addr_any_type+0x510>
    e8888c10:	f68f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888c14:	00150693          	addi	a3,a0,1
    e8888c18:	25000613          	li	a2,592
    e8888c1c:	00047597          	auipc	a1,0x47
    e8888c20:	09458593          	addi	a1,a1,148 # e88cfcb0 <ip_addr_any_type+0x450>
    e8888c24:	b769                	j	e8888bae <igmp_leavegroup_netif+0x38>
    e8888c26:	892e                	mv	s2,a1
  group = igmp_lookfor_group(netif, groupaddr);
    e8888c28:	ae7ff0ef          	jal	ra,e888870e <igmp_lookfor_group>
    e8888c2c:	842a                	mv	s0,a0
    return ERR_VAL;
    e8888c2e:	5569                	li	a0,-6
  if (group != NULL) {
    e8888c30:	d451                	beqz	s0,e8888bbc <igmp_leavegroup_netif+0x46>
    if (group->use <= 1) {
    e8888c32:	01044783          	lbu	a5,16(s0)
    e8888c36:	4705                	li	a4,1
    e8888c38:	04f76963          	bltu	a4,a5,e8888c8a <igmp_leavegroup_netif+0x114>
      igmp_remove_group(netif, group);
    e8888c3c:	78fc                	ld	a5,240(s1)
  for (tmp_group = netif_igmp_data(netif); tmp_group != NULL; tmp_group = tmp_group->next) {
    e8888c3e:	c791                	beqz	a5,e8888c4a <igmp_leavegroup_netif+0xd4>
    if (tmp_group->next == group) {
    e8888c40:	6398                	ld	a4,0(a5)
    e8888c42:	04e41263          	bne	s0,a4,e8888c86 <igmp_leavegroup_netif+0x110>
      tmp_group->next = group->next;
    e8888c46:	6018                	ld	a4,0(s0)
    e8888c48:	e398                	sd	a4,0(a5)
      if (group->last_reporter_flag) {
    e8888c4a:	00c44783          	lbu	a5,12(s0)
    e8888c4e:	cf99                	beqz	a5,e8888c6c <igmp_leavegroup_netif+0xf6>
        IGMP_STATS_INC(igmp.tx_leave);
    e8888c50:	0005e717          	auipc	a4,0x5e
    e8888c54:	80070713          	addi	a4,a4,-2048 # e88e6450 <lwip_stats>
    e8888c58:	09075783          	lhu	a5,144(a4)
        igmp_send(netif, group, IGMP_LEAVE_GROUP);
    e8888c5c:	465d                	li	a2,23
    e8888c5e:	85a2                	mv	a1,s0
        IGMP_STATS_INC(igmp.tx_leave);
    e8888c60:	2785                	addiw	a5,a5,1
        igmp_send(netif, group, IGMP_LEAVE_GROUP);
    e8888c62:	8526                	mv	a0,s1
        IGMP_STATS_INC(igmp.tx_leave);
    e8888c64:	08f71823          	sh	a5,144(a4)
        igmp_send(netif, group, IGMP_LEAVE_GROUP);
    e8888c68:	901ff0ef          	jal	ra,e8888568 <igmp_send>
      if (netif->igmp_mac_filter != NULL) {
    e8888c6c:	1484b783          	ld	a5,328(s1)
    e8888c70:	c789                	beqz	a5,e8888c7a <igmp_leavegroup_netif+0x104>
        netif->igmp_mac_filter(netif, groupaddr, NETIF_DEL_MAC_FILTER);
    e8888c72:	4601                	li	a2,0
    e8888c74:	85ca                	mv	a1,s2
    e8888c76:	8526                	mv	a0,s1
    e8888c78:	9782                	jalr	a5
      memp_free(MEMP_IGMP_GROUP, group);
    e8888c7a:	85a2                	mv	a1,s0
    e8888c7c:	4529                	li	a0,10
    e8888c7e:	520050ef          	jal	ra,e888e19e <memp_free>
    return ERR_OK;
    e8888c82:	4501                	li	a0,0
    e8888c84:	bf25                	j	e8888bbc <igmp_leavegroup_netif+0x46>
    if (tmp_group->next == group) {
    e8888c86:	87ba                	mv	a5,a4
    e8888c88:	bf5d                	j	e8888c3e <igmp_leavegroup_netif+0xc8>
      group->use--;
    e8888c8a:	37fd                	addiw	a5,a5,-1
    e8888c8c:	00f40823          	sb	a5,16(s0)
    e8888c90:	bfcd                	j	e8888c82 <igmp_leavegroup_netif+0x10c>

00000000e8888c92 <igmp_leavegroup>:
{
    e8888c92:	7179                	addi	sp,sp,-48
    e8888c94:	f406                	sd	ra,40(sp)
    e8888c96:	e422                	sd	s0,8(sp)
    e8888c98:	e826                	sd	s1,16(sp)
    e8888c9a:	ec4a                	sd	s2,24(sp)
    e8888c9c:	f04e                	sd	s3,32(sp)
  LWIP_ERROR("igmp_leavegroup: attempt to leave non-multicast address", ip4_addr_ismulticast(groupaddr), return ERR_VAL;);
    e8888c9e:	419c                	lw	a5,0(a1)
    e8888ca0:	0e000713          	li	a4,224
    e8888ca4:	0f07f693          	andi	a3,a5,240
    e8888ca8:	04e68163          	beq	a3,a4,e8888cea <igmp_leavegroup+0x58>
    e8888cac:	02f00593          	li	a1,47
    e8888cb0:	00047517          	auipc	a0,0x47
    e8888cb4:	0c050513          	addi	a0,a0,192 # e88cfd70 <ip_addr_any_type+0x510>
    e8888cb8:	ec0f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888cbc:	00150693          	addi	a3,a0,1
    e8888cc0:	22a00613          	li	a2,554
    e8888cc4:	00047597          	auipc	a1,0x47
    e8888cc8:	efc58593          	addi	a1,a1,-260 # e88cfbc0 <ip_addr_any_type+0x360>
  LWIP_ERROR("igmp_leavegroup: attempt to leave allsystems address", (!ip4_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
    e8888ccc:	00046517          	auipc	a0,0x46
    e8888cd0:	3e450513          	addi	a0,a0,996 # e88cf0b0 <kSinTable1024+0x900>
    e8888cd4:	df2f30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8888cd8:	5469                	li	s0,-6
}
    e8888cda:	8522                	mv	a0,s0
    e8888cdc:	70a2                	ld	ra,40(sp)
    e8888cde:	6422                	ld	s0,8(sp)
    e8888ce0:	64c2                	ld	s1,16(sp)
    e8888ce2:	6962                	ld	s2,24(sp)
    e8888ce4:	7982                	ld	s3,32(sp)
    e8888ce6:	6145                	addi	sp,sp,48
    e8888ce8:	8082                	ret
  LWIP_ERROR("igmp_leavegroup: attempt to leave allsystems address", (!ip4_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;);
    e8888cea:	0005d717          	auipc	a4,0x5d
    e8888cee:	05670713          	addi	a4,a4,86 # e88e5d40 <allsystems>
    e8888cf2:	4318                	lw	a4,0(a4)
    e8888cf4:	02f71363          	bne	a4,a5,e8888d1a <igmp_leavegroup+0x88>
    e8888cf8:	02f00593          	li	a1,47
    e8888cfc:	00047517          	auipc	a0,0x47
    e8888d00:	07450513          	addi	a0,a0,116 # e88cfd70 <ip_addr_any_type+0x510>
    e8888d04:	e74f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8888d08:	00150693          	addi	a3,a0,1
    e8888d0c:	22b00613          	li	a2,555
    e8888d10:	00047597          	auipc	a1,0x47
    e8888d14:	ee858593          	addi	a1,a1,-280 # e88cfbf8 <ip_addr_any_type+0x398>
    e8888d18:	bf55                	j	e8888ccc <igmp_leavegroup+0x3a>
  NETIF_FOREACH(netif) {
    e8888d1a:	0005d797          	auipc	a5,0x5d
    e8888d1e:	71e78793          	addi	a5,a5,1822 # e88e6438 <netif_list>
    e8888d22:	6384                	ld	s1,0(a5)
    e8888d24:	892a                	mv	s2,a0
    e8888d26:	89ae                	mv	s3,a1
  err_t err = ERR_VAL; /* no matching interface */
    e8888d28:	5469                	li	s0,-6
  NETIF_FOREACH(netif) {
    e8888d2a:	d8c5                	beqz	s1,e8888cda <igmp_leavegroup+0x48>
    if ((netif->flags & NETIF_FLAG_IGMP) && ((ip4_addr_isany(ifaddr) || ip4_addr_cmp(netif_ip4_addr(netif), ifaddr)))) {
    e8888d2c:	10b4c783          	lbu	a5,267(s1)
    e8888d30:	0207f793          	andi	a5,a5,32
    e8888d34:	cf99                	beqz	a5,e8888d52 <igmp_leavegroup+0xc0>
    e8888d36:	00090863          	beqz	s2,e8888d46 <igmp_leavegroup+0xb4>
    e8888d3a:	00092783          	lw	a5,0(s2)
    e8888d3e:	c781                	beqz	a5,e8888d46 <igmp_leavegroup+0xb4>
    e8888d40:	4498                	lw	a4,8(s1)
    e8888d42:	00f71863          	bne	a4,a5,e8888d52 <igmp_leavegroup+0xc0>
      err_t res = igmp_leavegroup_netif(netif, groupaddr);
    e8888d46:	85ce                	mv	a1,s3
    e8888d48:	8526                	mv	a0,s1
    e8888d4a:	e2dff0ef          	jal	ra,e8888b76 <igmp_leavegroup_netif>
        err = res;
    e8888d4e:	4285140b          	mvnez	s0,a0,s0
  NETIF_FOREACH(netif) {
    e8888d52:	6084                	ld	s1,0(s1)
    e8888d54:	bfd9                	j	e8888d2a <igmp_leavegroup+0x98>

00000000e8888d56 <igmp_tmr>:
{
    e8888d56:	7139                	addi	sp,sp,-64
  NETIF_FOREACH(netif) {
    e8888d58:	0005d797          	auipc	a5,0x5d
    e8888d5c:	6e078793          	addi	a5,a5,1760 # e88e6438 <netif_list>
{
    e8888d60:	ec4a                	sd	s2,24(sp)
    e8888d62:	f04e                	sd	s3,32(sp)
    e8888d64:	f452                	sd	s4,40(sp)
    e8888d66:	f856                	sd	s5,48(sp)
    e8888d68:	fc06                	sd	ra,56(sp)
    e8888d6a:	e422                	sd	s0,8(sp)
    e8888d6c:	e826                	sd	s1,16(sp)
  NETIF_FOREACH(netif) {
    e8888d6e:	6384                	ld	s1,0(a5)
  if ((group->group_state == IGMP_GROUP_DELAYING_MEMBER) &&
    e8888d70:	4985                	li	s3,1
      (!(ip4_addr_cmp(&(group->group_address), &allsystems)))) {
    e8888d72:	0005da17          	auipc	s4,0x5d
    e8888d76:	fcea0a13          	addi	s4,s4,-50 # e88e5d40 <allsystems>
    group->group_state = IGMP_GROUP_IDLE_MEMBER;
    e8888d7a:	4a89                	li	s5,2
    IGMP_STATS_INC(igmp.tx_report);
    e8888d7c:	0005d917          	auipc	s2,0x5d
    e8888d80:	6d490913          	addi	s2,s2,1748 # e88e6450 <lwip_stats>
  NETIF_FOREACH(netif) {
    e8888d84:	e891                	bnez	s1,e8888d98 <igmp_tmr+0x42>
}
    e8888d86:	70e2                	ld	ra,56(sp)
    e8888d88:	6422                	ld	s0,8(sp)
    e8888d8a:	64c2                	ld	s1,16(sp)
    e8888d8c:	6962                	ld	s2,24(sp)
    e8888d8e:	7982                	ld	s3,32(sp)
    e8888d90:	7a22                	ld	s4,40(sp)
    e8888d92:	7ac2                	ld	s5,48(sp)
    e8888d94:	6121                	addi	sp,sp,64
    e8888d96:	8082                	ret
    struct igmp_group *group = netif_igmp_data(netif);
    e8888d98:	78e0                	ld	s0,240(s1)
    while (group != NULL) {
    e8888d9a:	e019                	bnez	s0,e8888da0 <igmp_tmr+0x4a>
  NETIF_FOREACH(netif) {
    e8888d9c:	6084                	ld	s1,0(s1)
    e8888d9e:	b7dd                	j	e8888d84 <igmp_tmr+0x2e>
      if (group->timer > 0) {
    e8888da0:	00e45783          	lhu	a5,14(s0)
    e8888da4:	cf85                	beqz	a5,e8888ddc <igmp_tmr+0x86>
        group->timer--;
    e8888da6:	37fd                	addiw	a5,a5,-1
    e8888da8:	3c07b78b          	extu	a5,a5,15,0
    e8888dac:	00f41723          	sh	a5,14(s0)
        if (group->timer == 0) {
    e8888db0:	e795                	bnez	a5,e8888ddc <igmp_tmr+0x86>
  if ((group->group_state == IGMP_GROUP_DELAYING_MEMBER) &&
    e8888db2:	00d44783          	lbu	a5,13(s0)
    e8888db6:	03379363          	bne	a5,s3,e8888ddc <igmp_tmr+0x86>
    e8888dba:	4418                	lw	a4,8(s0)
    e8888dbc:	000a2783          	lw	a5,0(s4)
    e8888dc0:	00f70e63          	beq	a4,a5,e8888ddc <igmp_tmr+0x86>
    group->group_state = IGMP_GROUP_IDLE_MEMBER;
    e8888dc4:	015406a3          	sb	s5,13(s0)
    IGMP_STATS_INC(igmp.tx_report);
    e8888dc8:	09295783          	lhu	a5,146(s2)
    igmp_send(netif, group, IGMP_V2_MEMB_REPORT);
    e8888dcc:	4659                	li	a2,22
    e8888dce:	85a2                	mv	a1,s0
    IGMP_STATS_INC(igmp.tx_report);
    e8888dd0:	2785                	addiw	a5,a5,1
    igmp_send(netif, group, IGMP_V2_MEMB_REPORT);
    e8888dd2:	8526                	mv	a0,s1
    IGMP_STATS_INC(igmp.tx_report);
    e8888dd4:	08f91923          	sh	a5,146(s2)
    igmp_send(netif, group, IGMP_V2_MEMB_REPORT);
    e8888dd8:	f90ff0ef          	jal	ra,e8888568 <igmp_send>
      group = group->next;
    e8888ddc:	6000                	ld	s0,0(s0)
    e8888dde:	bf75                	j	e8888d9a <igmp_tmr+0x44>

00000000e8888de0 <ip4_input_accept>:
                         ip4_addr_get_u32(ip4_current_dest_addr()) & ip4_addr_get_u32(netif_ip4_netmask(netif)),
                         ip4_addr_get_u32(netif_ip4_addr(netif)) & ip4_addr_get_u32(netif_ip4_netmask(netif)),
                         ip4_addr_get_u32(ip4_current_dest_addr()) & ~ip4_addr_get_u32(netif_ip4_netmask(netif))));

  /* interface is up and configured? */
  if ((netif_is_up(netif)) && (!ip4_addr_isany_val(*netif_ip4_addr(netif)))) {
    e8888de0:	10b54783          	lbu	a5,267(a0)
    e8888de4:	8b85                	andi	a5,a5,1
    e8888de6:	c7b1                	beqz	a5,e8888e32 <ip4_input_accept+0x52>
    e8888de8:	4518                	lw	a4,8(a0)
      /* accept on this netif */
      return 1;
    }
#endif /* LWIP_AUTOIP */
  }
  return 0;
    e8888dea:	4781                	li	a5,0
  if ((netif_is_up(netif)) && (!ip4_addr_isany_val(*netif_ip4_addr(netif)))) {
    e8888dec:	c721                	beqz	a4,e8888e34 <ip4_input_accept+0x54>
    if (ip4_addr_cmp(ip4_current_dest_addr(), netif_ip4_addr(netif)) ||
    e8888dee:	0005d797          	auipc	a5,0x5d
    e8888df2:	d5a78793          	addi	a5,a5,-678 # e88e5b48 <ip_data>
    e8888df6:	5fdc                	lw	a5,60(a5)
    e8888df8:	00f71463          	bne	a4,a5,e8888e00 <ip4_input_accept+0x20>
      return 1;
    e8888dfc:	4785                	li	a5,1
    e8888dfe:	a81d                	j	e8888e34 <ip4_input_accept+0x54>
{
    e8888e00:	1141                	addi	sp,sp,-16
    e8888e02:	e022                	sd	s0,0(sp)
        ip4_addr_isbroadcast(ip4_current_dest_addr(), netif)
    e8888e04:	85aa                	mv	a1,a0
    e8888e06:	842a                	mv	s0,a0
    e8888e08:	853e                	mv	a0,a5
{
    e8888e0a:	e406                	sd	ra,8(sp)
        ip4_addr_isbroadcast(ip4_current_dest_addr(), netif)
    e8888e0c:	7b0000ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
      return 1;
    e8888e10:	4785                	li	a5,1
    if (ip4_addr_cmp(ip4_current_dest_addr(), netif_ip4_addr(netif)) ||
    e8888e12:	e919                	bnez	a0,e8888e28 <ip4_input_accept+0x48>
    if (autoip_accept_packet(netif, ip4_current_dest_addr())) {
    e8888e14:	0005d597          	auipc	a1,0x5d
    e8888e18:	d7058593          	addi	a1,a1,-656 # e88e5b84 <ip_data+0x3c>
    e8888e1c:	8522                	mv	a0,s0
    e8888e1e:	7a3110ef          	jal	ra,e889adc0 <autoip_accept_packet>
    e8888e22:	2501                	sext.w	a0,a0
      return 1;
    e8888e24:	00a037b3          	snez	a5,a0
}
    e8888e28:	60a2                	ld	ra,8(sp)
    e8888e2a:	6402                	ld	s0,0(sp)
    e8888e2c:	853e                	mv	a0,a5
    e8888e2e:	0141                	addi	sp,sp,16
    e8888e30:	8082                	ret
  return 0;
    e8888e32:	4781                	li	a5,0
}
    e8888e34:	853e                	mv	a0,a5
    e8888e36:	8082                	ret

00000000e8888e38 <ip4_route>:
  if (ip4_addr_ismulticast(dest) && ip4_default_multicast_netif) {
    e8888e38:	411c                	lw	a5,0(a0)
    e8888e3a:	0e000713          	li	a4,224
    e8888e3e:	0f07f693          	andi	a3,a5,240
    e8888e42:	00e69863          	bne	a3,a4,e8888e52 <ip4_route+0x1a>
    e8888e46:	0005d717          	auipc	a4,0x5d
    e8888e4a:	f0270713          	addi	a4,a4,-254 # e88e5d48 <ip4_default_multicast_netif>
    e8888e4e:	6308                	ld	a0,0(a4)
    e8888e50:	e141                	bnez	a0,e8888ed0 <ip4_route+0x98>
  NETIF_FOREACH(netif) {
    e8888e52:	0005d717          	auipc	a4,0x5d
    e8888e56:	5e670713          	addi	a4,a4,1510 # e88e6438 <netif_list>
    e8888e5a:	6308                	ld	a0,0(a4)
    e8888e5c:	e521                	bnez	a0,e8888ea4 <ip4_route+0x6c>
  if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default) ||
    e8888e5e:	0005d717          	auipc	a4,0x5d
    e8888e62:	5d270713          	addi	a4,a4,1490 # e88e6430 <netif_default>
    e8888e66:	6318                	ld	a4,0(a4)
    e8888e68:	cf19                	beqz	a4,e8888e86 <ip4_route+0x4e>
    e8888e6a:	10b74683          	lbu	a3,267(a4)
    e8888e6e:	4615                	li	a2,5
    e8888e70:	8a95                	andi	a3,a3,5
    e8888e72:	00c69a63          	bne	a3,a2,e8888e86 <ip4_route+0x4e>
    e8888e76:	4714                	lw	a3,8(a4)
    e8888e78:	c699                	beqz	a3,e8888e86 <ip4_route+0x4e>
      ip4_addr_isany_val(*netif_ip4_addr(netif_default)) || ip4_addr_isloopback(dest)) {
    e8888e7a:	0ff7f793          	andi	a5,a5,255
    e8888e7e:	07f00693          	li	a3,127
    e8888e82:	04d79663          	bne	a5,a3,e8888ece <ip4_route+0x96>
    IP_STATS_INC(ip.rterr);
    e8888e86:	0005d797          	auipc	a5,0x5d
    e8888e8a:	5ca78793          	addi	a5,a5,1482 # e88e6450 <lwip_stats>
    e8888e8e:	0567d703          	lhu	a4,86(a5)
    e8888e92:	2705                	addiw	a4,a4,1
    e8888e94:	04e79b23          	sh	a4,86(a5)
    MIB2_STATS_INC(mib2.ipoutnoroutes);
    e8888e98:	1707a703          	lw	a4,368(a5)
    e8888e9c:	2705                	addiw	a4,a4,1
    e8888e9e:	16e7a823          	sw	a4,368(a5)
    return NULL;
    e8888ea2:	8082                	ret
    if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) {
    e8888ea4:	10b54683          	lbu	a3,267(a0)
    e8888ea8:	0016f713          	andi	a4,a3,1
    e8888eac:	cf19                	beqz	a4,e8888eca <ip4_route+0x92>
    e8888eae:	0826b70b          	extu	a4,a3,2,2
    e8888eb2:	cf01                	beqz	a4,e8888eca <ip4_route+0x92>
    e8888eb4:	4518                	lw	a4,8(a0)
    e8888eb6:	cb11                	beqz	a4,e8888eca <ip4_route+0x92>
      if (ip4_addr_netcmp(dest, netif_ip4_addr(netif), netif_ip4_netmask(netif))) {
    e8888eb8:	5110                	lw	a2,32(a0)
    e8888eba:	8f3d                	xor	a4,a4,a5
    e8888ebc:	8f71                	and	a4,a4,a2
    e8888ebe:	cb09                	beqz	a4,e8888ed0 <ip4_route+0x98>
      if (((netif->flags & NETIF_FLAG_BROADCAST) == 0) && ip4_addr_cmp(dest, netif_ip4_gw(netif))) {
    e8888ec0:	8a89                	andi	a3,a3,2
    e8888ec2:	e681                	bnez	a3,e8888eca <ip4_route+0x92>
    e8888ec4:	5d18                	lw	a4,56(a0)
    e8888ec6:	00f70563          	beq	a4,a5,e8888ed0 <ip4_route+0x98>
  NETIF_FOREACH(netif) {
    e8888eca:	6108                	ld	a0,0(a0)
    e8888ecc:	bf41                	j	e8888e5c <ip4_route+0x24>
    e8888ece:	853a                	mv	a0,a4
}
    e8888ed0:	8082                	ret

00000000e8888ed2 <ip4_input>:
 * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't
 *         processed, but currently always returns ERR_OK)
 */
err_t
ip4_input(struct pbuf *p, struct netif *inp)
{
    e8888ed2:	715d                	addi	sp,sp,-80
    e8888ed4:	f44e                	sd	s3,40(sp)
  raw_input_state_t raw_status;
#endif /* LWIP_RAW */

  LWIP_ASSERT_CORE_LOCKED();

  IP_STATS_INC(ip.recv);
    e8888ed6:	0005d997          	auipc	s3,0x5d
    e8888eda:	57a98993          	addi	s3,s3,1402 # e88e6450 <lwip_stats>
{
    e8888ede:	e486                	sd	ra,72(sp)
    e8888ee0:	e0a2                	sd	s0,64(sp)
    e8888ee2:	fc26                	sd	s1,56(sp)
    e8888ee4:	f84a                	sd	s2,48(sp)
    e8888ee6:	f052                	sd	s4,32(sp)
    e8888ee8:	ec56                	sd	s5,24(sp)
    e8888eea:	e85a                	sd	s6,16(sp)
    e8888eec:	e45e                	sd	s7,8(sp)
    e8888eee:	e062                	sd	s8,0(sp)
  IP_STATS_INC(ip.recv);
    e8888ef0:	04a9d783          	lhu	a5,74(s3)
    e8888ef4:	2785                	addiw	a5,a5,1
    e8888ef6:	04f99523          	sh	a5,74(s3)
  MIB2_STATS_INC(mib2.ipinreceives);
    e8888efa:	1909a783          	lw	a5,400(s3)
    e8888efe:	2785                	addiw	a5,a5,1
    e8888f00:	18f9a823          	sw	a5,400(s3)

  /* identify the IP header */
  iphdr = (struct ip_hdr *)p->payload;
    e8888f04:	00853a03          	ld	s4,8(a0)
  if (IPH_V(iphdr) != 4) {
    e8888f08:	4791                	li	a5,4
    e8888f0a:	000a4b03          	lbu	s6,0(s4)
    e8888f0e:	004b5713          	srli	a4,s6,0x4
    e8888f12:	04f70063          	beq	a4,a5,e8888f52 <ip4_input+0x80>
    LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", (u16_t)IPH_V(iphdr)));
    ip4_debug_print(p);
    pbuf_free(p);
    e8888f16:	336060ef          	jal	ra,e888f24c <pbuf_free>
    IP_STATS_INC(ip.err);
    e8888f1a:	05c9d783          	lhu	a5,92(s3)
    e8888f1e:	2785                	addiw	a5,a5,1
    e8888f20:	04f99e23          	sh	a5,92(s3)
    IP_STATS_INC(ip.drop);
    e8888f24:	04e9d783          	lhu	a5,78(s3)
    e8888f28:	2785                	addiw	a5,a5,1
    e8888f2a:	04f99723          	sh	a5,78(s3)
    MIB2_STATS_INC(mib2.ipinhdrerrors);
    e8888f2e:	1549a783          	lw	a5,340(s3)
    e8888f32:	2785                	addiw	a5,a5,1
    e8888f34:	14f9aa23          	sw	a5,340(s3)
  ip_data.current_ip_header_tot_len = 0;
  ip4_addr_set_any(ip4_current_src_addr());
  ip4_addr_set_any(ip4_current_dest_addr());

  return ERR_OK;
}
    e8888f38:	60a6                	ld	ra,72(sp)
    e8888f3a:	6406                	ld	s0,64(sp)
    e8888f3c:	74e2                	ld	s1,56(sp)
    e8888f3e:	7942                	ld	s2,48(sp)
    e8888f40:	79a2                	ld	s3,40(sp)
    e8888f42:	7a02                	ld	s4,32(sp)
    e8888f44:	6ae2                	ld	s5,24(sp)
    e8888f46:	6b42                	ld	s6,16(sp)
    e8888f48:	6ba2                	ld	s7,8(sp)
    e8888f4a:	6c02                	ld	s8,0(sp)
    e8888f4c:	4501                	li	a0,0
    e8888f4e:	6161                	addi	sp,sp,80
    e8888f50:	8082                	ret
    e8888f52:	84aa                	mv	s1,a0
  iphdr_len = lwip_ntohs(IPH_LEN(iphdr));
    e8888f54:	002a5503          	lhu	a0,2(s4)
    e8888f58:	892e                	mv	s2,a1
  iphdr_hlen = IPH_HL_BYTES(iphdr);
    e8888f5a:	00fb7b13          	andi	s6,s6,15
  iphdr_len = lwip_ntohs(IPH_LEN(iphdr));
    e8888f5e:	fc1fd0ef          	jal	ra,e8886f1e <lwip_htons>
  iphdr_hlen = IPH_HL_BYTES(iphdr);
    e8888f62:	0b0a                	slli	s6,s6,0x2
  if (iphdr_len < p->tot_len) {
    e8888f64:	0104d783          	lhu	a5,16(s1)
    e8888f68:	00050a9b          	sext.w	s5,a0
    e8888f6c:	844e                	mv	s0,s3
  iphdr_len = lwip_ntohs(IPH_LEN(iphdr));
    e8888f6e:	85aa                	mv	a1,a0
  iphdr_hlen = IPH_HL_BYTES(iphdr);
    e8888f70:	3c0b398b          	extu	s3,s6,15,0
  if (iphdr_len < p->tot_len) {
    e8888f74:	00faf563          	bgeu	s5,a5,e8888f7e <ip4_input+0xac>
    pbuf_realloc(p, iphdr_len);
    e8888f78:	8526                	mv	a0,s1
    e8888f7a:	578060ef          	jal	ra,e888f4f2 <pbuf_realloc>
  if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len) || (iphdr_hlen < IP_HLEN)) {
    e8888f7e:	0124d703          	lhu	a4,18(s1)
    e8888f82:	0009879b          	sext.w	a5,s3
    e8888f86:	00f76963          	bltu	a4,a5,e8888f98 <ip4_input+0xc6>
    e8888f8a:	0104d703          	lhu	a4,16(s1)
    e8888f8e:	01576563          	bltu	a4,s5,e8888f98 <ip4_input+0xc6>
    e8888f92:	474d                	li	a4,19
    e8888f94:	02f76563          	bltu	a4,a5,e8888fbe <ip4_input+0xec>
    pbuf_free(p);
    e8888f98:	8526                	mv	a0,s1
    e8888f9a:	2b2060ef          	jal	ra,e888f24c <pbuf_free>
    IP_STATS_INC(ip.lenerr);
    e8888f9e:	05245783          	lhu	a5,82(s0)
    e8888fa2:	2785                	addiw	a5,a5,1
    e8888fa4:	04f41923          	sh	a5,82(s0)
    IP_STATS_INC(ip.drop);
    e8888fa8:	04e45783          	lhu	a5,78(s0)
    e8888fac:	2785                	addiw	a5,a5,1
    e8888fae:	04f41723          	sh	a5,78(s0)
      MIB2_STATS_INC(mib2.ipindiscards);
    e8888fb2:	16042783          	lw	a5,352(s0)
    e8888fb6:	2785                	addiw	a5,a5,1
    e8888fb8:	16f42023          	sw	a5,352(s0)
      return ERR_OK;
    e8888fbc:	bfb5                	j	e8888f38 <ip4_input+0x66>
    if (inet_chksum(iphdr, iphdr_hlen) != 0) {
    e8888fbe:	85ce                	mv	a1,s3
    e8888fc0:	8552                	mv	a0,s4
    e8888fc2:	965fe0ef          	jal	ra,e8887926 <inet_chksum>
    e8888fc6:	c505                	beqz	a0,e8888fee <ip4_input+0x11c>
      pbuf_free(p);
    e8888fc8:	8526                	mv	a0,s1
    e8888fca:	282060ef          	jal	ra,e888f24c <pbuf_free>
      IP_STATS_INC(ip.chkerr);
    e8888fce:	05045783          	lhu	a5,80(s0)
    e8888fd2:	2785                	addiw	a5,a5,1
    e8888fd4:	04f41823          	sh	a5,80(s0)
      IP_STATS_INC(ip.drop);
    e8888fd8:	04e45783          	lhu	a5,78(s0)
    e8888fdc:	2785                	addiw	a5,a5,1
    e8888fde:	04f41723          	sh	a5,78(s0)
      MIB2_STATS_INC(mib2.ipinhdrerrors);
    e8888fe2:	15442783          	lw	a5,340(s0)
    e8888fe6:	2785                	addiw	a5,a5,1
    e8888fe8:	14f42a23          	sw	a5,340(s0)
      return ERR_OK;
    e8888fec:	b7b1                	j	e8888f38 <ip4_input+0x66>
  ip_addr_copy_from_ip4(ip_data.current_iphdr_dest, iphdr->dest);
    e8888fee:	010a2783          	lw	a5,16(s4)
    e8888ff2:	0005d997          	auipc	s3,0x5d
    e8888ff6:	b5698993          	addi	s3,s3,-1194 # e88e5b48 <ip_data>
    e8888ffa:	0005d717          	auipc	a4,0x5d
    e8888ffe:	b8070f23          	sb	zero,-1122(a4) # e88e5b98 <ip_data+0x50>
    e8889002:	0005d717          	auipc	a4,0x5d
    e8889006:	b8073323          	sd	zero,-1146(a4) # e88e5b88 <ip_data+0x40>
    e888900a:	0005d717          	auipc	a4,0x5d
    e888900e:	b8072323          	sw	zero,-1146(a4) # e88e5b90 <ip_data+0x48>
    e8889012:	0005d717          	auipc	a4,0x5d
    e8889016:	b8070123          	sb	zero,-1150(a4) # e88e5b94 <ip_data+0x4c>
    e888901a:	02f9ae23          	sw	a5,60(s3)
  ip_addr_copy_from_ip4(ip_data.current_iphdr_src, iphdr->src);
    e888901e:	00ca2703          	lw	a4,12(s4)
  if (ip4_addr_ismulticast(ip4_current_dest_addr())) {
    e8889022:	0f07f793          	andi	a5,a5,240
  ip_addr_copy_from_ip4(ip_data.current_iphdr_src, iphdr->src);
    e8889026:	02e9a223          	sw	a4,36(s3)
    e888902a:	0005d717          	auipc	a4,0x5d
    e888902e:	b4070b23          	sb	zero,-1194(a4) # e88e5b80 <ip_data+0x38>
    e8889032:	0005d717          	auipc	a4,0x5d
    e8889036:	b2073f23          	sd	zero,-1218(a4) # e88e5b70 <ip_data+0x28>
    e888903a:	0005d717          	auipc	a4,0x5d
    e888903e:	b2072f23          	sw	zero,-1218(a4) # e88e5b78 <ip_data+0x30>
    e8889042:	0005d717          	auipc	a4,0x5d
    e8889046:	b2070d23          	sb	zero,-1222(a4) # e88e5b7c <ip_data+0x34>
  if (ip4_addr_ismulticast(ip4_current_dest_addr())) {
    e888904a:	0e000713          	li	a4,224
    e888904e:	08e79163          	bne	a5,a4,e88890d0 <ip4_input+0x1fe>
    if ((inp->flags & NETIF_FLAG_IGMP) && (igmp_lookfor_group(inp, ip4_current_dest_addr()))) {
    e8889052:	10b94783          	lbu	a5,267(s2)
    e8889056:	0207f793          	andi	a5,a5,32
    e888905a:	cfd1                	beqz	a5,e88890f6 <ip4_input+0x224>
    e888905c:	0005d597          	auipc	a1,0x5d
    e8889060:	b2858593          	addi	a1,a1,-1240 # e88e5b84 <ip_data+0x3c>
    e8889064:	854a                	mv	a0,s2
    e8889066:	ea8ff0ef          	jal	ra,e888870e <igmp_lookfor_group>
    e888906a:	c551                	beqz	a0,e88890f6 <ip4_input+0x224>
      if (ip4_addr_cmp(ip4_current_dest_addr(), &allsystems) &&
    e888906c:	03c9a703          	lw	a4,60(s3)
    e8889070:	010007b7          	lui	a5,0x1000
    e8889074:	0e078793          	addi	a5,a5,224 # 10000e0 <memcmp-0xe77fff20>
    e8889078:	22f71263          	bne	a4,a5,e888929c <ip4_input+0x3ca>
          ip4_addr_isany(ip4_current_src_addr())) {
    e888907c:	0249a783          	lw	a5,36(s3)
  if (netif == NULL) {
    e8889080:	0c091363          	bnez	s2,e8889146 <ip4_input+0x274>
  int check_ip_src = 1;
    e8889084:	00f037b3          	snez	a5,a5
    if (IPH_PROTO(iphdr) == IP_PROTO_UDP) {
    e8889088:	009a4683          	lbu	a3,9(s4)
    e888908c:	4745                	li	a4,17
    e888908e:	20e69363          	bne	a3,a4,e8889294 <ip4_input+0x3c2>
      if (IP_ACCEPT_LINK_LAYER_ADDRESSED_PORT(udphdr->dest)) {
    e8889092:	016a0733          	add	a4,s4,s6
    e8889096:	00275683          	lhu	a3,2(a4)
    e888909a:	6711                	lui	a4,0x4
    e888909c:	40070713          	addi	a4,a4,1024 # 4400 <memcmp-0xe87fbc00>
    e88890a0:	1ee69a63          	bne	a3,a4,e8889294 <ip4_input+0x3c2>
    e88890a4:	8aca                	mv	s5,s2
  if (netif == NULL) {
    e88890a6:	0a0a9463          	bnez	s5,e888914e <ip4_input+0x27c>
      IP_STATS_INC(ip.drop);
    e88890aa:	04e45783          	lhu	a5,78(s0)
    pbuf_free(p);
    e88890ae:	8526                	mv	a0,s1
      IP_STATS_INC(ip.drop);
    e88890b0:	2785                	addiw	a5,a5,1
    e88890b2:	04f41723          	sh	a5,78(s0)
      MIB2_STATS_INC(mib2.ipinaddrerrors);
    e88890b6:	15842783          	lw	a5,344(s0)
    e88890ba:	2785                	addiw	a5,a5,1
    e88890bc:	14f42c23          	sw	a5,344(s0)
      MIB2_STATS_INC(mib2.ipindiscards);
    e88890c0:	16042783          	lw	a5,352(s0)
    e88890c4:	2785                	addiw	a5,a5,1
    e88890c6:	16f42023          	sw	a5,352(s0)
    pbuf_free(p);
    e88890ca:	182060ef          	jal	ra,e888f24c <pbuf_free>
    return ERR_OK;
    e88890ce:	b5ad                	j	e8888f38 <ip4_input+0x66>
    if (ip4_input_accept(inp)) {
    e88890d0:	854a                	mv	a0,s2
    e88890d2:	d0fff0ef          	jal	ra,e8888de0 <ip4_input_accept>
    e88890d6:	1c051363          	bnez	a0,e888929c <ip4_input+0x3ca>
      if (!ip4_addr_isloopback(ip4_current_dest_addr()))
    e88890da:	03c9c703          	lbu	a4,60(s3)
    e88890de:	07f00793          	li	a5,127
    e88890e2:	00f70a63          	beq	a4,a5,e88890f6 <ip4_input+0x224>
        NETIF_FOREACH(netif) {
    e88890e6:	0005d797          	auipc	a5,0x5d
    e88890ea:	35278793          	addi	a5,a5,850 # e88e6438 <netif_list>
    e88890ee:	0007ba83          	ld	s5,0(a5)
    e88890f2:	000a9463          	bnez	s5,e88890fa <ip4_input+0x228>
  int check_ip_src = 1;
    e88890f6:	4785                	li	a5,1
    e88890f8:	bf41                	j	e8889088 <ip4_input+0x1b6>
          if (netif == inp) {
    e88890fa:	012a9563          	bne	s5,s2,e8889104 <ip4_input+0x232>
        NETIF_FOREACH(netif) {
    e88890fe:	000aba83          	ld	s5,0(s5)
    e8889102:	bfc5                	j	e88890f2 <ip4_input+0x220>
          if (ip4_input_accept(netif)) {
    e8889104:	8556                	mv	a0,s5
    e8889106:	cdbff0ef          	jal	ra,e8888de0 <ip4_input_accept>
    e888910a:	d975                	beqz	a0,e88890fe <ip4_input+0x22c>
      && !ip4_addr_isany_val(*ip4_current_src_addr())
    e888910c:	0249a503          	lw	a0,36(s3)
    e8889110:	d959                	beqz	a0,e88890a6 <ip4_input+0x1d4>
    if ((ip4_addr_isbroadcast(ip4_current_src_addr(), inp)) ||
    e8889112:	85ca                	mv	a1,s2
    e8889114:	4a8000ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
    e8889118:	e909                	bnez	a0,e888912a <ip4_input+0x258>
    e888911a:	0249a783          	lw	a5,36(s3)
    e888911e:	0e000713          	li	a4,224
    e8889122:	0f07f793          	andi	a5,a5,240
    e8889126:	f8e790e3          	bne	a5,a4,e88890a6 <ip4_input+0x1d4>
      pbuf_free(p);
    e888912a:	8526                	mv	a0,s1
    e888912c:	120060ef          	jal	ra,e888f24c <pbuf_free>
      IP_STATS_INC(ip.drop);
    e8889130:	04e45783          	lhu	a5,78(s0)
    e8889134:	2785                	addiw	a5,a5,1
    e8889136:	04f41723          	sh	a5,78(s0)
      MIB2_STATS_INC(mib2.ipinaddrerrors);
    e888913a:	15842783          	lw	a5,344(s0)
    e888913e:	2785                	addiw	a5,a5,1
    e8889140:	14f42c23          	sw	a5,344(s0)
    e8889144:	b5bd                	j	e8888fb2 <ip4_input+0xe0>
  if (check_ip_src
    e8889146:	8aca                	mv	s5,s2
    e8889148:	c399                	beqz	a5,e888914e <ip4_input+0x27c>
  int check_ip_src = 1;
    e888914a:	8aca                	mv	s5,s2
    e888914c:	b7c1                	j	e888910c <ip4_input+0x23a>
  if ((IPH_OFFSET(iphdr) & PP_HTONS(IP_OFFMASK | IP_MF)) != 0) {
    e888914e:	006a5783          	lhu	a5,6(s4)
    e8889152:	f3f7f793          	andi	a5,a5,-193
    e8889156:	cb89                	beqz	a5,e8889168 <ip4_input+0x296>
    p = ip4_reass(p);
    e8889158:	8526                	mv	a0,s1
    e888915a:	14d000ef          	jal	ra,e8889aa6 <ip4_reass>
    e888915e:	84aa                	mv	s1,a0
    if (p == NULL) {
    e8889160:	dc050ce3          	beqz	a0,e8888f38 <ip4_input+0x66>
    iphdr = (const struct ip_hdr *)p->payload;
    e8889164:	00853a03          	ld	s4,8(a0)
  ip_data.current_input_netif = inp;
    e8889168:	f929da8b          	sdd	s5,s2,(s3),0,4
  ip_data.current_ip4_header = iphdr;
    e888916c:	0149b823          	sd	s4,16(s3)
  ip_data.current_ip_header_tot_len = IPH_HL_BYTES(iphdr);
    e8889170:	000a4783          	lbu	a5,0(s4)
  raw_status = raw_input(p, inp);
    e8889174:	85ca                	mv	a1,s2
    e8889176:	8526                	mv	a0,s1
  ip_data.current_ip_header_tot_len = IPH_HL_BYTES(iphdr);
    e8889178:	8bbd                	andi	a5,a5,15
    e888917a:	078a                	slli	a5,a5,0x2
    e888917c:	02f99023          	sh	a5,32(s3)
  if (raw_status != RAW_INPUT_EATEN)
    e8889180:	4c05                	li	s8,1
  raw_status = raw_input(p, inp);
    e8889182:	455060ef          	jal	ra,e888fdd6 <raw_input>
    e8889186:	8baa                	mv	s7,a0
  if (raw_status != RAW_INPUT_EATEN)
    e8889188:	05850a63          	beq	a0,s8,e88891dc <ip4_input+0x30a>
    pbuf_remove_header(p, iphdr_hlen); /* Move to payload, no check necessary. */
    e888918c:	85da                	mv	a1,s6
    e888918e:	8526                	mv	a0,s1
    e8889190:	018060ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    switch (IPH_PROTO(iphdr)) {
    e8889194:	009a4783          	lbu	a5,9(s4)
    e8889198:	4709                	li	a4,2
    e888919a:	08e78e63          	beq	a5,a4,e8889236 <ip4_input+0x364>
    e888919e:	02f76063          	bltu	a4,a5,e88891be <ip4_input+0x2ec>
    e88891a2:	09878063          	beq	a5,s8,e8889222 <ip4_input+0x350>
        if (raw_status == RAW_INPUT_DELIVERED) {
    e88891a6:	4789                	li	a5,2
    e88891a8:	0afb9063          	bne	s7,a5,e8889248 <ip4_input+0x376>
          MIB2_STATS_INC(mib2.ipindelivers);
    e88891ac:	16442783          	lw	a5,356(s0)
    e88891b0:	2785                	addiw	a5,a5,1
    e88891b2:	16f42223          	sw	a5,356(s0)
        pbuf_free(p);
    e88891b6:	8526                	mv	a0,s1
    e88891b8:	094060ef          	jal	ra,e888f24c <pbuf_free>
        break;
    e88891bc:	a005                	j	e88891dc <ip4_input+0x30a>
    switch (IPH_PROTO(iphdr)) {
    e88891be:	4719                	li	a4,6
    e88891c0:	04e78763          	beq	a5,a4,e888920e <ip4_input+0x33c>
    e88891c4:	4745                	li	a4,17
    e88891c6:	fee790e3          	bne	a5,a4,e88891a6 <ip4_input+0x2d4>
        MIB2_STATS_INC(mib2.ipindelivers);
    e88891ca:	16442783          	lw	a5,356(s0)
        udp_input(p, inp);
    e88891ce:	85ca                	mv	a1,s2
    e88891d0:	8526                	mv	a0,s1
        MIB2_STATS_INC(mib2.ipindelivers);
    e88891d2:	2785                	addiw	a5,a5,1
    e88891d4:	16f42223          	sw	a5,356(s0)
        udp_input(p, inp);
    e88891d8:	6020d0ef          	jal	ra,e88967da <udp_input>
  ip_data.current_netif = NULL;
    e88891dc:	0005d797          	auipc	a5,0x5d
    e88891e0:	9607b623          	sd	zero,-1684(a5) # e88e5b48 <ip_data>
  ip_data.current_input_netif = NULL;
    e88891e4:	0005d797          	auipc	a5,0x5d
    e88891e8:	9607b623          	sd	zero,-1684(a5) # e88e5b50 <ip_data+0x8>
  ip_data.current_ip4_header = NULL;
    e88891ec:	0005d797          	auipc	a5,0x5d
    e88891f0:	9607b623          	sd	zero,-1684(a5) # e88e5b58 <ip_data+0x10>
  ip_data.current_ip_header_tot_len = 0;
    e88891f4:	0005d797          	auipc	a5,0x5d
    e88891f8:	96079a23          	sh	zero,-1676(a5) # e88e5b68 <ip_data+0x20>
  ip4_addr_set_any(ip4_current_src_addr());
    e88891fc:	0005d797          	auipc	a5,0x5d
    e8889200:	9607a823          	sw	zero,-1680(a5) # e88e5b6c <ip_data+0x24>
  ip4_addr_set_any(ip4_current_dest_addr());
    e8889204:	0005d797          	auipc	a5,0x5d
    e8889208:	9807a023          	sw	zero,-1664(a5) # e88e5b84 <ip_data+0x3c>
  return ERR_OK;
    e888920c:	b335                	j	e8888f38 <ip4_input+0x66>
        MIB2_STATS_INC(mib2.ipindelivers);
    e888920e:	16442783          	lw	a5,356(s0)
        tcp_input(p, inp);
    e8889212:	85ca                	mv	a1,s2
    e8889214:	8526                	mv	a0,s1
        MIB2_STATS_INC(mib2.ipindelivers);
    e8889216:	2785                	addiw	a5,a5,1
    e8889218:	16f42223          	sw	a5,356(s0)
        tcp_input(p, inp);
    e888921c:	4720a0ef          	jal	ra,e889368e <tcp_input>
        break;
    e8889220:	bf75                	j	e88891dc <ip4_input+0x30a>
        MIB2_STATS_INC(mib2.ipindelivers);
    e8889222:	16442783          	lw	a5,356(s0)
        icmp_input(p, inp);
    e8889226:	85ca                	mv	a1,s2
    e8889228:	8526                	mv	a0,s1
        MIB2_STATS_INC(mib2.ipindelivers);
    e888922a:	2785                	addiw	a5,a5,1
    e888922c:	16f42223          	sw	a5,356(s0)
        icmp_input(p, inp);
    e8889230:	670130ef          	jal	ra,e889c8a0 <icmp_input>
        break;
    e8889234:	b765                	j	e88891dc <ip4_input+0x30a>
        igmp_input(p, inp, ip4_current_dest_addr());
    e8889236:	0005d617          	auipc	a2,0x5d
    e888923a:	94e60613          	addi	a2,a2,-1714 # e88e5b84 <ip_data+0x3c>
    e888923e:	85ca                	mv	a1,s2
    e8889240:	8526                	mv	a0,s1
    e8889242:	df2ff0ef          	jal	ra,e8888834 <igmp_input>
        break;
    e8889246:	bf59                	j	e88891dc <ip4_input+0x30a>
          if (!ip4_addr_isbroadcast(ip4_current_dest_addr(), netif) &&
    e8889248:	03c9a503          	lw	a0,60(s3)
    e888924c:	85d6                	mv	a1,s5
    e888924e:	36e000ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
    e8889252:	e10d                	bnez	a0,e8889274 <ip4_input+0x3a2>
    e8889254:	03c9a783          	lw	a5,60(s3)
    e8889258:	0e000713          	li	a4,224
    e888925c:	0f07f793          	andi	a5,a5,240
    e8889260:	00e78a63          	beq	a5,a4,e8889274 <ip4_input+0x3a2>
            pbuf_header_force(p, (s16_t)iphdr_hlen); /* Move to ip header, no check necessary. */
    e8889264:	85da                	mv	a1,s6
    e8889266:	8526                	mv	a0,s1
    e8889268:	7d1050ef          	jal	ra,e888f238 <pbuf_header_force>
            icmp_dest_unreach(p, ICMP_DUR_PROTO);
    e888926c:	4589                	li	a1,2
    e888926e:	8526                	mv	a0,s1
    e8889270:	167130ef          	jal	ra,e889cbd6 <icmp_dest_unreach>
          IP_STATS_INC(ip.proterr);
    e8889274:	05845783          	lhu	a5,88(s0)
    e8889278:	2785                	addiw	a5,a5,1
    e888927a:	04f41c23          	sh	a5,88(s0)
          IP_STATS_INC(ip.drop);
    e888927e:	04e45783          	lhu	a5,78(s0)
    e8889282:	2785                	addiw	a5,a5,1
    e8889284:	04f41723          	sh	a5,78(s0)
          MIB2_STATS_INC(mib2.ipinunknownprotos);
    e8889288:	15c42783          	lw	a5,348(s0)
    e888928c:	2785                	addiw	a5,a5,1
    e888928e:	14f42e23          	sw	a5,348(s0)
    e8889292:	b715                	j	e88891b6 <ip4_input+0x2e4>
  if (check_ip_src
    e8889294:	4a81                	li	s5,0
    e8889296:	e6079be3          	bnez	a5,e888910c <ip4_input+0x23a>
    e888929a:	bd01                	j	e88890aa <ip4_input+0x1d8>
  if (netif == NULL) {
    e888929c:	e4090de3          	beqz	s2,e88890f6 <ip4_input+0x224>
    e88892a0:	b56d                	j	e888914a <ip4_input+0x278>

00000000e88892a2 <ip4_output_if_opt_src>:
 */
err_t
ip4_output_if_opt_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest,
                      u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options,
                      u16_t optlen)
{
    e88892a2:	7175                	addi	sp,sp,-144
    e88892a4:	e122                	sd	s0,128(sp)
    e88892a6:	f0d2                	sd	s4,96(sp)
    e88892a8:	ecd6                	sd	s5,88(sp)
    e88892aa:	e8da                	sd	s6,80(sp)
    e88892ac:	e0e2                	sd	s8,64(sp)
    e88892ae:	fc66                	sd	s9,56(sp)
    e88892b0:	f86a                	sd	s10,48(sp)
    e88892b2:	e506                	sd	ra,136(sp)
    e88892b4:	fca6                	sd	s1,120(sp)
    e88892b6:	f8ca                	sd	s2,112(sp)
    e88892b8:	f4ce                	sd	s3,104(sp)
    e88892ba:	e4de                	sd	s7,72(sp)
    e88892bc:	f46e                	sd	s11,40(sp)
    e88892be:	8cb6                	mv	s9,a3
#if CHECKSUM_GEN_IP_INLINE
  u32_t chk_sum = 0;
#endif /* CHECKSUM_GEN_IP_INLINE */

  LWIP_ASSERT_CORE_LOCKED();
  LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p);
    e88892c0:	01654683          	lbu	a3,22(a0)
{
    e88892c4:	e02e                	sd	a1,0(sp)
    e88892c6:	8aba                	mv	s5,a4
  LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p);
    e88892c8:	4705                	li	a4,1
{
    e88892ca:	842a                	mv	s0,a0
    e88892cc:	8b32                	mv	s6,a2
    e88892ce:	8c3e                	mv	s8,a5
    e88892d0:	8a42                	mv	s4,a6
    e88892d2:	09015d03          	lhu	s10,144(sp)
  LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p);
    e88892d6:	02e68a63          	beq	a3,a4,e888930a <ip4_output_if_opt_src+0x68>
    e88892da:	02f00593          	li	a1,47
    e88892de:	00047517          	auipc	a0,0x47
    e88892e2:	b6250513          	addi	a0,a0,-1182 # e88cfe40 <ip_addr_any_type+0x5e0>
    e88892e6:	e446                	sd	a7,8(sp)
    e88892e8:	890f30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88892ec:	00150693          	addi	a3,a0,1
    e88892f0:	35400613          	li	a2,852
    e88892f4:	00047597          	auipc	a1,0x47
    e88892f8:	bd458593          	addi	a1,a1,-1068 # e88cfec8 <ip_addr_any_type+0x668>
    e88892fc:	00046517          	auipc	a0,0x46
    e8889300:	db450513          	addi	a0,a0,-588 # e88cf0b0 <kSinTable1024+0x900>
    e8889304:	fc3f20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8889308:	68a2                	ld	a7,8(sp)

  MIB2_STATS_INC(mib2.ipoutrequests);
    e888930a:	0005d497          	auipc	s1,0x5d
    e888930e:	14648493          	addi	s1,s1,326 # e88e6450 <lwip_stats>
    e8889312:	1684a703          	lw	a4,360(s1)
    e8889316:	8ba6                	mv	s7,s1
    e8889318:	2705                	addiw	a4,a4,1
    e888931a:	16e4a423          	sw	a4,360(s1)

  /* Should the IP header be generated or is it already included in p? */
  if (dest != LWIP_IP_HDRINCL) {
    e888931e:	200b0963          	beqz	s6,e8889530 <ip4_output_if_opt_src+0x28e>
    u16_t ip_hlen = IP_HLEN;
#if IP_OPTIONS_SEND
    u16_t optlen_aligned = 0;
    if (optlen != 0) {
    e8889322:	0c0d0b63          	beqz	s10,e88893f8 <ip4_output_if_opt_src+0x156>
#if CHECKSUM_GEN_IP_INLINE
      int i;
#endif /* CHECKSUM_GEN_IP_INLINE */
      if (optlen > (IP_HLEN_MAX - IP_HLEN)) {
    e8889326:	000d0d9b          	sext.w	s11,s10
    e888932a:	02800713          	li	a4,40
    e888932e:	03b77c63          	bgeu	a4,s11,e8889366 <ip4_output_if_opt_src+0xc4>
        /* optlen too long */
        LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip4_output_if_opt: optlen too long\n"));
        IP_STATS_INC(ip.err);
    e8889332:	05c4d783          	lhu	a5,92(s1)
        MIB2_STATS_INC(mib2.ipoutdiscards);
        return ERR_VAL;
    e8889336:	5569                	li	a0,-6
        IP_STATS_INC(ip.err);
    e8889338:	2785                	addiw	a5,a5,1
    e888933a:	04f49e23          	sh	a5,92(s1)
        MIB2_STATS_INC(mib2.ipoutdiscards);
    e888933e:	16c4a783          	lw	a5,364(s1)
    e8889342:	2785                	addiw	a5,a5,1
    e8889344:	16f4a623          	sw	a5,364(s1)
  }
#endif /* IP_FRAG */

  LWIP_DEBUGF(IP_DEBUG, ("ip4_output_if: call netif->output()\n"));
  return netif->output(netif, p, dest);
}
    e8889348:	60aa                	ld	ra,136(sp)
    e888934a:	640a                	ld	s0,128(sp)
    e888934c:	74e6                	ld	s1,120(sp)
    e888934e:	7946                	ld	s2,112(sp)
    e8889350:	79a6                	ld	s3,104(sp)
    e8889352:	7a06                	ld	s4,96(sp)
    e8889354:	6ae6                	ld	s5,88(sp)
    e8889356:	6b46                	ld	s6,80(sp)
    e8889358:	6ba6                	ld	s7,72(sp)
    e888935a:	6c06                	ld	s8,64(sp)
    e888935c:	7ce2                	ld	s9,56(sp)
    e888935e:	7d42                	ld	s10,48(sp)
    e8889360:	7da2                	ld	s11,40(sp)
    e8889362:	6149                	addi	sp,sp,144
    e8889364:	8082                	ret
      optlen_aligned = (u16_t)((optlen + 3) & ~3);
    e8889366:	003d099b          	addiw	s3,s10,3
    e888936a:	ffc9f993          	andi	s3,s3,-4
    e888936e:	3c09b98b          	extu	s3,s3,15,0
      if (pbuf_add_header(p, optlen_aligned)) {
    e8889372:	85ce                	mv	a1,s3
    e8889374:	8522                	mv	a0,s0
    e8889376:	e446                	sd	a7,8(sp)
    e8889378:	625050ef          	jal	ra,e888f19c <pbuf_add_header>
      ip_hlen = (u16_t)(ip_hlen + optlen_aligned);
    e888937c:	0149891b          	addiw	s2,s3,20
    e8889380:	3c09390b          	extu	s2,s2,15,0
      if (pbuf_add_header(p, optlen_aligned)) {
    e8889384:	68a2                	ld	a7,8(sp)
    e8889386:	cd01                	beqz	a0,e888939e <ip4_output_if_opt_src+0xfc>
      IP_STATS_INC(ip.err);
    e8889388:	05c4d783          	lhu	a5,92(s1)
    e888938c:	2785                	addiw	a5,a5,1
    e888938e:	04f49e23          	sh	a5,92(s1)
      MIB2_STATS_INC(mib2.ipoutdiscards);
    e8889392:	16c4a783          	lw	a5,364(s1)
    e8889396:	2785                	addiw	a5,a5,1
    e8889398:	16f4a623          	sw	a5,364(s1)
      return ERR_BUF;
    e888939c:	a8a1                	j	e88893f4 <ip4_output_if_opt_src+0x152>
      MEMCPY(p->payload, ip_options, optlen);
    e888939e:	6408                	ld	a0,8(s0)
    e88893a0:	866a                	mv	a2,s10
    e88893a2:	85c6                	mv	a1,a7
    e88893a4:	ffdf20ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      if (optlen < optlen_aligned) {
    e88893a8:	013df963          	bgeu	s11,s3,e88893ba <ip4_output_if_opt_src+0x118>
        memset(((char *)p->payload) + optlen, 0, (size_t)(optlen_aligned - optlen));
    e88893ac:	6408                	ld	a0,8(s0)
    e88893ae:	41a9863b          	subw	a2,s3,s10
    e88893b2:	4581                	li	a1,0
    e88893b4:	956a                	add	a0,a0,s10
    e88893b6:	fdff20ef          	jal	ra,e887c394 <eLIBs_memset>
        chk_sum += ((u16_t *)p->payload)[i];
    e88893ba:	6414                	ld	a3,8(s0)
      for (i = 0; i < optlen_aligned / 2; i++) {
    e88893bc:	0019d993          	srli	s3,s3,0x1
    e88893c0:	4781                	li	a5,0
  u32_t chk_sum = 0;
    e88893c2:	4d81                	li	s11,0
        chk_sum += ((u16_t *)p->payload)[i];
    e88893c4:	a2f6c70b          	lrhu	a4,a3,a5,1
    e88893c8:	0785                	addi	a5,a5,1
    e88893ca:	01b70dbb          	addw	s11,a4,s11
      for (i = 0; i < optlen_aligned / 2; i++) {
    e88893ce:	0007871b          	sext.w	a4,a5
    e88893d2:	ff3749e3          	blt	a4,s3,e88893c4 <ip4_output_if_opt_src+0x122>
    if (pbuf_add_header(p, IP_HLEN)) {
    e88893d6:	45d1                	li	a1,20
    e88893d8:	8522                	mv	a0,s0
    e88893da:	5c3050ef          	jal	ra,e888f19c <pbuf_add_header>
    e88893de:	c105                	beqz	a0,e88893fe <ip4_output_if_opt_src+0x15c>
      IP_STATS_INC(ip.err);
    e88893e0:	05cbd783          	lhu	a5,92(s7)
    e88893e4:	2785                	addiw	a5,a5,1
    e88893e6:	04fb9e23          	sh	a5,92(s7)
      MIB2_STATS_INC(mib2.ipoutdiscards);
    e88893ea:	16cba783          	lw	a5,364(s7)
    e88893ee:	2785                	addiw	a5,a5,1
    e88893f0:	16fba623          	sw	a5,364(s7)
      return ERR_BUF;
    e88893f4:	5579                	li	a0,-2
    e88893f6:	bf89                	j	e8889348 <ip4_output_if_opt_src+0xa6>
    u16_t ip_hlen = IP_HLEN;
    e88893f8:	4951                	li	s2,20
  u32_t chk_sum = 0;
    e88893fa:	4d81                	li	s11,0
    e88893fc:	bfe9                	j	e88893d6 <ip4_output_if_opt_src+0x134>
    LWIP_ASSERT("check that first pbuf can hold struct ip_hdr",
    e88893fe:	01245703          	lhu	a4,18(s0)
    e8889402:	47cd                	li	a5,19
    iphdr = (struct ip_hdr *)p->payload;
    e8889404:	6404                	ld	s1,8(s0)
    LWIP_ASSERT("check that first pbuf can hold struct ip_hdr",
    e8889406:	02e7e863          	bltu	a5,a4,e8889436 <ip4_output_if_opt_src+0x194>
    e888940a:	02f00593          	li	a1,47
    e888940e:	00047517          	auipc	a0,0x47
    e8889412:	a3250513          	addi	a0,a0,-1486 # e88cfe40 <ip_addr_any_type+0x5e0>
    e8889416:	f63f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888941a:	00150693          	addi	a3,a0,1
    e888941e:	38900613          	li	a2,905
    e8889422:	00047597          	auipc	a1,0x47
    e8889426:	ab658593          	addi	a1,a1,-1354 # e88cfed8 <ip_addr_any_type+0x678>
    e888942a:	00046517          	auipc	a0,0x46
    e888942e:	c8650513          	addi	a0,a0,-890 # e88cf0b0 <kSinTable1024+0x900>
    e8889432:	e95f20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    IPH_TTL_SET(iphdr, ttl);
    e8889436:	01948423          	sb	s9,8(s1)
    chk_sum += PP_NTOHS(proto | (ttl << 8));
    e888943a:	008c9c9b          	slliw	s9,s9,0x8
    IPH_PROTO_SET(iphdr, proto);
    e888943e:	018484a3          	sb	s8,9(s1)
    IPH_VHL_SET(iphdr, 4, ip_hlen / 4);
    e8889442:	2429390b          	extu	s2,s2,9,2
    ip4_addr_copy(iphdr->dest, *dest);
    e8889446:	000b2783          	lw	a5,0(s6)
    chk_sum += PP_NTOHS(proto | (ttl << 8));
    e888944a:	019c6c33          	or	s8,s8,s9
    e888944e:	008c1513          	slli	a0,s8,0x8
    IPH_VHL_SET(iphdr, 4, ip_hlen / 4);
    e8889452:	04096913          	ori	s2,s2,64
    chk_sum += PP_NTOHS(proto | (ttl << 8));
    e8889456:	5c8c3c0b          	extu	s8,s8,23,8
    IPH_VHL_SET(iphdr, 4, ip_hlen / 4);
    e888945a:	01248023          	sb	s2,0(s1)
    chk_sum += PP_NTOHS(proto | (ttl << 8));
    e888945e:	01856533          	or	a0,a0,s8
    chk_sum += PP_NTOHS(tos | (iphdr->_v_hl << 8));
    e8889462:	0089191b          	slliw	s2,s2,0x8
    chk_sum += ip4_addr_get_u32(&iphdr->dest) & 0xFFFF;
    e8889466:	3c07b70b          	extu	a4,a5,15,0
    ip4_addr_copy(iphdr->dest, *dest);
    e888946a:	c89c                	sw	a5,16(s1)
    IPH_TOS_SET(iphdr, tos);
    e888946c:	015480a3          	sb	s5,1(s1)
    chk_sum += PP_NTOHS(proto | (ttl << 8));
    e8889470:	0105151b          	slliw	a0,a0,0x10
    chk_sum += PP_NTOHS(tos | (iphdr->_v_hl << 8));
    e8889474:	012aeab3          	or	s5,s5,s2
    chk_sum += ip4_addr_get_u32(&iphdr->dest) >> 16;
    e8889478:	0107d79b          	srliw	a5,a5,0x10
    e888947c:	9fb9                	addw	a5,a5,a4
    chk_sum += PP_NTOHS(tos | (iphdr->_v_hl << 8));
    e888947e:	008a9913          	slli	s2,s5,0x8
    chk_sum += PP_NTOHS(proto | (ttl << 8));
    e8889482:	0105551b          	srliw	a0,a0,0x10
    chk_sum += PP_NTOHS(tos | (iphdr->_v_hl << 8));
    e8889486:	5c8aba8b          	extu	s5,s5,23,8
    chk_sum += ip4_addr_get_u32(&iphdr->dest) >> 16;
    e888948a:	9d3d                	addw	a0,a0,a5
    chk_sum += PP_NTOHS(tos | (iphdr->_v_hl << 8));
    e888948c:	01596933          	or	s2,s2,s5
    chk_sum += ip4_addr_get_u32(&iphdr->dest) >> 16;
    e8889490:	01b5053b          	addw	a0,a0,s11
    chk_sum += PP_NTOHS(tos | (iphdr->_v_hl << 8));
    e8889494:	0109191b          	slliw	s2,s2,0x10
    e8889498:	0109591b          	srliw	s2,s2,0x10
    e888949c:	00a9093b          	addw	s2,s2,a0
    IPH_LEN_SET(iphdr, lwip_htons(p->tot_len));
    e88894a0:	01045503          	lhu	a0,16(s0)
    IPH_ID_SET(iphdr, lwip_htons(ip_id));
    e88894a4:	0005d997          	auipc	s3,0x5d
    e88894a8:	8ac98993          	addi	s3,s3,-1876 # e88e5d50 <ip_id>
    IPH_LEN_SET(iphdr, lwip_htons(p->tot_len));
    e88894ac:	a73fd0ef          	jal	ra,e8886f1e <lwip_htons>
    e88894b0:	00a49123          	sh	a0,2(s1)
    chk_sum += iphdr->_len;
    e88894b4:	0125093b          	addw	s2,a0,s2
    IPH_ID_SET(iphdr, lwip_htons(ip_id));
    e88894b8:	0009d503          	lhu	a0,0(s3)
    IPH_OFFSET_SET(iphdr, 0);
    e88894bc:	00049323          	sh	zero,6(s1)
    IPH_ID_SET(iphdr, lwip_htons(ip_id));
    e88894c0:	a5ffd0ef          	jal	ra,e8886f1e <lwip_htons>
    e88894c4:	00a49223          	sh	a0,4(s1)
    ++ip_id;
    e88894c8:	0009d783          	lhu	a5,0(s3)
    chk_sum += iphdr->_id;
    e88894cc:	0125053b          	addw	a0,a0,s2
    ++ip_id;
    e88894d0:	2785                	addiw	a5,a5,1
    e88894d2:	00f99023          	sh	a5,0(s3)
    if (src == NULL) {
    e88894d6:	6782                	ld	a5,0(sp)
    e88894d8:	ebb1                	bnez	a5,e888952c <ip4_output_if_opt_src+0x28a>
      ip4_addr_copy(iphdr->src, *IP4_ADDR_ANY4);
    e88894da:	00047797          	auipc	a5,0x47
    e88894de:	ae678793          	addi	a5,a5,-1306 # e88cffc0 <ip_addr_any>
      ip4_addr_copy(iphdr->src, *src);
    e88894e2:	439c                	lw	a5,0(a5)
    chk_sum += ip4_addr_get_u32(&iphdr->src) & 0xFFFF;
    e88894e4:	3c07b90b          	extu	s2,a5,15,0
    e88894e8:	c4dc                	sw	a5,12(s1)
    e88894ea:	00a9053b          	addw	a0,s2,a0
    chk_sum += ip4_addr_get_u32(&iphdr->src) >> 16;
    e88894ee:	0107d79b          	srliw	a5,a5,0x10
    e88894f2:	9fa9                	addw	a5,a5,a0
    chk_sum = (chk_sum >> 16) + (chk_sum & 0xFFFF);
    e88894f4:	0107d71b          	srliw	a4,a5,0x10
    e88894f8:	3c07b78b          	extu	a5,a5,15,0
    e88894fc:	9f3d                	addw	a4,a4,a5
    chk_sum = (chk_sum >> 16) + chk_sum;
    e88894fe:	0107579b          	srliw	a5,a4,0x10
    e8889502:	9fb9                	addw	a5,a5,a4
    chk_sum = ~chk_sum;
    e8889504:	fff7c793          	not	a5,a5
      iphdr->_chksum = (u16_t)chk_sum; /* network order */
    e8889508:	00f49523          	sh	a5,10(s1)
  IP_STATS_INC(ip.xmit);
    e888950c:	048bd783          	lhu	a5,72(s7)
    e8889510:	2785                	addiw	a5,a5,1
    e8889512:	04fb9423          	sh	a5,72(s7)
  if (ip4_addr_cmp(dest, netif_ip4_addr(netif))
    e8889516:	000b2703          	lw	a4,0(s6)
    e888951a:	008a2783          	lw	a5,8(s4)
    e888951e:	02f71463          	bne	a4,a5,e8889546 <ip4_output_if_opt_src+0x2a4>
    return netif_loop_output(netif, p);
    e8889522:	85a2                	mv	a1,s0
    e8889524:	8552                	mv	a0,s4
    e8889526:	098050ef          	jal	ra,e888e5be <netif_loop_output>
    e888952a:	bd39                	j	e8889348 <ip4_output_if_opt_src+0xa6>
      ip4_addr_copy(iphdr->src, *src);
    e888952c:	6782                	ld	a5,0(sp)
    e888952e:	bf55                	j	e88894e2 <ip4_output_if_opt_src+0x240>
    if (p->len < IP_HLEN) {
    e8889530:	01245703          	lhu	a4,18(s0)
    e8889534:	47cd                	li	a5,19
    e8889536:	e4e7f9e3          	bgeu	a5,a4,e8889388 <ip4_output_if_opt_src+0xe6>
    ip4_addr_copy(dest_addr, iphdr->dest);
    e888953a:	641c                	ld	a5,8(s0)
    dest = &dest_addr;
    e888953c:	01810b13          	addi	s6,sp,24
    ip4_addr_copy(dest_addr, iphdr->dest);
    e8889540:	4b9c                	lw	a5,16(a5)
    e8889542:	cc3e                	sw	a5,24(sp)
    dest = &dest_addr;
    e8889544:	b7e1                	j	e888950c <ip4_output_if_opt_src+0x26a>
  if ((p->flags & PBUF_FLAG_MCASTLOOP) != 0) {
    e8889546:	01544783          	lbu	a5,21(s0)
    e888954a:	8b91                	andi	a5,a5,4
    e888954c:	c789                	beqz	a5,e8889556 <ip4_output_if_opt_src+0x2b4>
    netif_loop_output(netif, p);
    e888954e:	85a2                	mv	a1,s0
    e8889550:	8552                	mv	a0,s4
    e8889552:	06c050ef          	jal	ra,e888e5be <netif_loop_output>
  if (netif->mtu && (p->tot_len > netif->mtu)) {
    e8889556:	100a5783          	lhu	a5,256(s4)
    e888955a:	cb99                	beqz	a5,e8889570 <ip4_output_if_opt_src+0x2ce>
    e888955c:	01045703          	lhu	a4,16(s0)
    e8889560:	00e7f863          	bgeu	a5,a4,e8889570 <ip4_output_if_opt_src+0x2ce>
    return ip4_frag(p, netif, dest);
    e8889564:	865a                	mv	a2,s6
    e8889566:	85d2                	mv	a1,s4
    e8889568:	8522                	mv	a0,s0
    e888956a:	211000ef          	jal	ra,e8889f7a <ip4_frag>
    e888956e:	bbe9                	j	e8889348 <ip4_output_if_opt_src+0xa6>
  return netif->output(netif, p, dest);
    e8889570:	0c0a3783          	ld	a5,192(s4)
    e8889574:	865a                	mv	a2,s6
    e8889576:	85a2                	mv	a1,s0
    e8889578:	8552                	mv	a0,s4
    e888957a:	9782                	jalr	a5
    e888957c:	b3f1                	j	e8889348 <ip4_output_if_opt_src+0xa6>

00000000e888957e <ip4_output_if_opt>:
{
    e888957e:	00015303          	lhu	t1,0(sp)
  if (dest != LWIP_IP_HDRINCL) {
    e8889582:	ca01                	beqz	a2,e8889592 <ip4_output_if_opt+0x14>
    if (ip4_addr_isany(src)) {
    e8889584:	c589                	beqz	a1,e888958e <ip4_output_if_opt+0x10>
    e8889586:	0005ae03          	lw	t3,0(a1)
    e888958a:	000e1463          	bnez	t3,e8889592 <ip4_output_if_opt+0x14>
      src_used = netif_ip4_addr(netif);
    e888958e:	00880593          	addi	a1,a6,8
  return ip4_output_if_opt_src(p, src_used, dest, ttl, tos, proto, netif,
    e8889592:	e01a                	sd	t1,0(sp)
    e8889594:	d0fff06f          	j	e88892a2 <ip4_output_if_opt_src>

00000000e8889598 <ip4_output_if>:
{
    e8889598:	1101                	addi	sp,sp,-32
  return ip4_output_if_opt(p, src, dest, ttl, tos, proto, netif, NULL, 0);
    e888959a:	e002                	sd	zero,0(sp)
    e888959c:	4881                	li	a7,0
{
    e888959e:	ec06                	sd	ra,24(sp)
  return ip4_output_if_opt(p, src, dest, ttl, tos, proto, netif, NULL, 0);
    e88895a0:	fdfff0ef          	jal	ra,e888957e <ip4_output_if_opt>
}
    e88895a4:	60e2                	ld	ra,24(sp)
    e88895a6:	6105                	addi	sp,sp,32
    e88895a8:	8082                	ret

00000000e88895aa <ip4_output_if_src>:
{
    e88895aa:	1101                	addi	sp,sp,-32
  return ip4_output_if_opt_src(p, src, dest, ttl, tos, proto, netif, NULL, 0);
    e88895ac:	e002                	sd	zero,0(sp)
    e88895ae:	4881                	li	a7,0
{
    e88895b0:	ec06                	sd	ra,24(sp)
  return ip4_output_if_opt_src(p, src, dest, ttl, tos, proto, netif, NULL, 0);
    e88895b2:	cf1ff0ef          	jal	ra,e88892a2 <ip4_output_if_opt_src>
}
    e88895b6:	60e2                	ld	ra,24(sp)
    e88895b8:	6105                	addi	sp,sp,32
    e88895ba:	8082                	ret

00000000e88895bc <ip4_addr_isbroadcast_u32>:
{
  ip4_addr_t ipaddr;
  ip4_addr_set_u32(&ipaddr, addr);

  /* all ones (broadcast) or all zeroes (old skool broadcast) */
  if ((~addr == IPADDR_ANY) ||
    e88895bc:	fff5069b          	addiw	a3,a0,-1
    e88895c0:	57f5                	li	a5,-3
{
    e88895c2:	872a                	mv	a4,a0
  if ((~addr == IPADDR_ANY) ||
    e88895c4:	02d7e763          	bltu	a5,a3,e88895f2 <ip4_addr_isbroadcast_u32+0x36>
      (addr == IPADDR_ANY)) {
    return 1;
    /* no broadcast support on this network interface? */
  } else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) {
    e88895c8:	10b5c783          	lbu	a5,267(a1)
    e88895cc:	0027f513          	andi	a0,a5,2
    e88895d0:	c115                	beqz	a0,e88895f4 <ip4_addr_isbroadcast_u32+0x38>
    /* the given address cannot be a broadcast address
     * nor can we check against any broadcast addresses */
    return 0;
    /* address matches network interface address exactly? => no broadcast */
  } else if (addr == ip4_addr_get_u32(netif_ip4_addr(netif))) {
    e88895d2:	459c                	lw	a5,8(a1)
             && ((addr & ~ip4_addr_get_u32(netif_ip4_netmask(netif))) ==
                 (IPADDR_BROADCAST & ~ip4_addr_get_u32(netif_ip4_netmask(netif))))) {
    /* => network broadcast address */
    return 1;
  } else {
    return 0;
    e88895d4:	4501                	li	a0,0
  } else if (addr == ip4_addr_get_u32(netif_ip4_addr(netif))) {
    e88895d6:	00e78f63          	beq	a5,a4,e88895f4 <ip4_addr_isbroadcast_u32+0x38>
  } else if (ip4_addr_netcmp(&ipaddr, netif_ip4_addr(netif), netif_ip4_netmask(netif))
    e88895da:	5194                	lw	a3,32(a1)
    e88895dc:	8fb9                	xor	a5,a5,a4
    e88895de:	8ff5                	and	a5,a5,a3
    e88895e0:	eb91                	bnez	a5,e88895f4 <ip4_addr_isbroadcast_u32+0x38>
             && ((addr & ~ip4_addr_get_u32(netif_ip4_netmask(netif))) ==
    e88895e2:	fff6c693          	not	a3,a3
    e88895e6:	00d77533          	and	a0,a4,a3
    e88895ea:	8d15                	sub	a0,a0,a3
    return 0;
    e88895ec:	00153513          	seqz	a0,a0
    e88895f0:	8082                	ret
    return 1;
    e88895f2:	4505                	li	a0,1
  }
}
    e88895f4:	8082                	ret

00000000e88895f6 <ip4addr_aton>:
 * @param addr pointer to which to save the ip address in network order
 * @return 1 if cp could be converted to addr, 0 on failure
 */
int
ip4addr_aton(const char *cp, ip4_addr_t *addr)
{
    e88895f6:	7139                	addi	sp,sp,-64
    e88895f8:	ec22                	sd	s0,24(sp)
    e88895fa:	f026                	sd	s1,32(sp)
    e88895fc:	fc06                	sd	ra,56(sp)
    e88895fe:	f44a                	sd	s2,40(sp)
    e8889600:	f84e                	sd	s3,48(sp)
  u8_t base;
  char c;
  u32_t parts[4];
  u32_t *pp = parts;

  c = *cp;
    e8889602:	00054783          	lbu	a5,0(a0)
  u32_t *pp = parts;
    e8889606:	870a                	mv	a4,sp
{
    e8889608:	84ae                	mv	s1,a1
    e888960a:	833a                	mv	t1,a4
    /*
     * Collect number up to ``.''.
     * Values are specified as for C:
     * 0x=hex, 0=octal, 1-9=decimal.
     */
    if (!lwip_isdigit(c)) {
    e888960c:	48a5                	li	a7,9
      return 0;
    }
    val = 0;
    base = 10;
    if (c == '0') {
    e888960e:	03000e13          	li	t3,48
      c = *++cp;
      if (c == 'x' || c == 'X') {
    e8889612:	05800e93          	li	t4,88
        base = 16;
    e8889616:	4f41                	li	t5,16
    }
    for (;;) {
      if (lwip_isdigit(c)) {
        val = (val * base) + (u32_t)(c - '0');
        c = *++cp;
      } else if (base == 16 && lwip_isxdigit(c)) {
    e8889618:	4f95                	li	t6,5
        val = (val << 4) | (u32_t)(c + 10 - (lwip_islower(c) ? 'a' : 'A'));
    e888961a:	42e5                	li	t0,25
        c = *++cp;
      } else {
        break;
      }
    }
    if (c == '.') {
    e888961c:	02e00393          	li	t2,46
       * Internet format:
       *  a.b.c.d
       *  a.b.c   (with c treated as 16 bits)
       *  a.b (with b treated as 24 bits)
       */
      if (pp >= parts + 3) {
    e8889620:	0060                	addi	s0,sp,12
    if (!lwip_isdigit(c)) {
    e8889622:	fd07869b          	addiw	a3,a5,-48
    e8889626:	0ff6f693          	andi	a3,a3,255
    e888962a:	18d8e363          	bltu	a7,a3,e88897b0 <ip4addr_aton+0x1ba>
    base = 10;
    e888962e:	4829                	li	a6,10
    if (c == '0') {
    e8889630:	01c79a63          	bne	a5,t3,e8889644 <ip4addr_aton+0x4e>
      c = *++cp;
    e8889634:	00154783          	lbu	a5,1(a0)
      if (c == 'x' || c == 'X') {
    e8889638:	0df7f693          	andi	a3,a5,223
    e888963c:	03d68463          	beq	a3,t4,e8889664 <ip4addr_aton+0x6e>
      c = *++cp;
    e8889640:	0505                	addi	a0,a0,1
        base = 8;
    e8889642:	4821                	li	a6,8
    e8889644:	85aa                	mv	a1,a0
    base = 10;
    e8889646:	4901                	li	s2,0
      if (lwip_isdigit(c)) {
    e8889648:	fd07869b          	addiw	a3,a5,-48
    e888964c:	0ff6f693          	andi	a3,a3,255
    e8889650:	00d8ef63          	bltu	a7,a3,e888966e <ip4addr_aton+0x78>
        val = (val * base) + (u32_t)(c - '0');
    e8889654:	2528178b          	mulaw	a5,a6,s2
    e8889658:	fd07891b          	addiw	s2,a5,-48
        c = *++cp;
    e888965c:	0015c783          	lbu	a5,1(a1)
    e8889660:	0585                	addi	a1,a1,1
    e8889662:	b7dd                	j	e8889648 <ip4addr_aton+0x52>
        c = *++cp;
    e8889664:	00254783          	lbu	a5,2(a0)
        base = 16;
    e8889668:	4841                	li	a6,16
        c = *++cp;
    e888966a:	0509                	addi	a0,a0,2
    e888966c:	bfe1                	j	e8889644 <ip4addr_aton+0x4e>
      } else if (base == 16 && lwip_isxdigit(c)) {
    e888966e:	03e81d63          	bne	a6,t5,e88896a8 <ip4addr_aton+0xb2>
    e8889672:	fdf7f693          	andi	a3,a5,-33
    e8889676:	fbf6869b          	addiw	a3,a3,-65
    e888967a:	f9f7851b          	addiw	a0,a5,-97
    e888967e:	0ff6f693          	andi	a3,a3,255
    e8889682:	0ff57513          	andi	a0,a0,255
    e8889686:	02dfe163          	bltu	t6,a3,e88896a8 <ip4addr_aton+0xb2>
        val = (val << 4) | (u32_t)(c + 10 - (lwip_islower(c) ? 'a' : 'A'));
    e888968a:	0049191b          	slliw	s2,s2,0x4
    e888968e:	863e                	mv	a2,a5
    e8889690:	06100993          	li	s3,97
    e8889694:	00a2f463          	bgeu	t0,a0,e888969c <ip4addr_aton+0xa6>
    e8889698:	04100993          	li	s3,65
    e888969c:	2629                	addiw	a2,a2,10
    e888969e:	4136063b          	subw	a2,a2,s3
    e88896a2:	01266933          	or	s2,a2,s2
    e88896a6:	bf5d                	j	e888965c <ip4addr_aton+0x66>
    if (c == '.') {
    e88896a8:	00779b63          	bne	a5,t2,e88896be <ip4addr_aton+0xc8>
      if (pp >= parts + 3) {
    e88896ac:	10870263          	beq	a4,s0,e88897b0 <ip4addr_aton+0x1ba>
        return 0;
      }
      *pp++ = val;
    e88896b0:	5847590b          	swia	s2,(a4),4,0
      c = *++cp;
    e88896b4:	00158513          	addi	a0,a1,1
    e88896b8:	0015c783          	lbu	a5,1(a1)
    if (!lwip_isdigit(c)) {
    e88896bc:	b79d                	j	e8889622 <ip4addr_aton+0x2c>
    }
  }
  /*
   * Check for trailing characters.
   */
  if (c != '\0' && !lwip_isspace(c)) {
    e88896be:	0df7f693          	andi	a3,a5,223
    e88896c2:	ca81                	beqz	a3,e88896d2 <ip4addr_aton+0xdc>
    e88896c4:	37dd                	addiw	a5,a5,-9
    e88896c6:	0ff7f793          	andi	a5,a5,255
    e88896ca:	4691                	li	a3,4
      return 0;
    e88896cc:	4401                	li	s0,0
  if (c != '\0' && !lwip_isspace(c)) {
    e88896ce:	04f6e763          	bltu	a3,a5,e888971c <ip4addr_aton+0x126>
  }
  /*
   * Concoct the address according to
   * the number of parts specified.
   */
  switch (pp - parts + 1) {
    e88896d2:	40670733          	sub	a4,a4,t1
    e88896d6:	8709                	srai	a4,a4,0x2
    e88896d8:	0705                	addi	a4,a4,1
    e88896da:	4791                	li	a5,4
    e88896dc:	0ae7e363          	bltu	a5,a4,e8889782 <ip4addr_aton+0x18c>
    e88896e0:	00047697          	auipc	a3,0x47
    e88896e4:	82868693          	addi	a3,a3,-2008 # e88cff08 <ip_addr_any_type+0x6a8>
    e88896e8:	44e6c78b          	lrw	a5,a3,a4,2
    e88896ec:	97b6                	add	a5,a5,a3
    e88896ee:	8782                	jr	a5

    case 1:             /* a -- 32 bits */
      break;

    case 2:             /* a.b -- 8.24 bits */
      if (val > 0xffffffUL) {
    e88896f0:	010007b7          	lui	a5,0x1000
      return 0;
    e88896f4:	4401                	li	s0,0
      if (val > 0xffffffUL) {
    e88896f6:	02f97363          	bgeu	s2,a5,e888971c <ip4addr_aton+0x126>
        return 0;
      }
      if (parts[0] > 0xff) {
    e88896fa:	4682                	lw	a3,0(sp)
    e88896fc:	0ff00793          	li	a5,255
    e8889700:	00d7ee63          	bltu	a5,a3,e888971c <ip4addr_aton+0x126>
        return 0;
      }
      val |= parts[0] << 24;
    e8889704:	0186969b          	slliw	a3,a3,0x18
        return 0;
      }
      if ((parts[0] > 0xff) || (parts[1] > 0xff)) {
        return 0;
      }
      val |= (parts[0] << 24) | (parts[1] << 16);
    e8889708:	0126e7b3          	or	a5,a3,s2
    e888970c:	0007891b          	sext.w	s2,a5
      break;
  }
  if (addr) {
    ip4_addr_set_u32(addr, lwip_htonl(val));
  }
  return 1;
    e8889710:	4405                	li	s0,1
  if (addr) {
    e8889712:	c489                	beqz	s1,e888971c <ip4addr_aton+0x126>
    ip4_addr_set_u32(addr, lwip_htonl(val));
    e8889714:	854a                	mv	a0,s2
    e8889716:	819fd0ef          	jal	ra,e8886f2e <lwip_htonl>
    e888971a:	c088                	sw	a0,0(s1)
}
    e888971c:	8522                	mv	a0,s0
    e888971e:	70e2                	ld	ra,56(sp)
    e8889720:	6462                	ld	s0,24(sp)
    e8889722:	7482                	ld	s1,32(sp)
    e8889724:	7922                	ld	s2,40(sp)
    e8889726:	79c2                	ld	s3,48(sp)
    e8889728:	6121                	addi	sp,sp,64
    e888972a:	8082                	ret
      if (val > 0xffff) {
    e888972c:	67c1                	lui	a5,0x10
      return 0;
    e888972e:	4401                	li	s0,0
      if (val > 0xffff) {
    e8889730:	fef976e3          	bgeu	s2,a5,e888971c <ip4addr_aton+0x126>
      if ((parts[0] > 0xff) || (parts[1] > 0xff)) {
    e8889734:	4682                	lw	a3,0(sp)
    e8889736:	0ff00713          	li	a4,255
    e888973a:	fed761e3          	bltu	a4,a3,e888971c <ip4addr_aton+0x126>
    e888973e:	4792                	lw	a5,4(sp)
    e8889740:	fcf76ee3          	bltu	a4,a5,e888971c <ip4addr_aton+0x126>
      val |= (parts[0] << 24) | (parts[1] << 16);
    e8889744:	0186969b          	slliw	a3,a3,0x18
    e8889748:	0107979b          	slliw	a5,a5,0x10
    e888974c:	8edd                	or	a3,a3,a5
    e888974e:	bf6d                	j	e8889708 <ip4addr_aton+0x112>
      if (val > 0xff) {
    e8889750:	0ff00613          	li	a2,255
      return 0;
    e8889754:	4401                	li	s0,0
      if (val > 0xff) {
    e8889756:	fd2663e3          	bltu	a2,s2,e888971c <ip4addr_aton+0x126>
      if ((parts[0] > 0xff) || (parts[1] > 0xff) || (parts[2] > 0xff)) {
    e888975a:	4702                	lw	a4,0(sp)
    e888975c:	fce660e3          	bltu	a2,a4,e888971c <ip4addr_aton+0x126>
    e8889760:	4792                	lw	a5,4(sp)
    e8889762:	faf66de3          	bltu	a2,a5,e888971c <ip4addr_aton+0x126>
    e8889766:	46a2                	lw	a3,8(sp)
    e8889768:	fad66ae3          	bltu	a2,a3,e888971c <ip4addr_aton+0x126>
      val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
    e888976c:	0187171b          	slliw	a4,a4,0x18
    e8889770:	0107979b          	slliw	a5,a5,0x10
    e8889774:	8fd9                	or	a5,a5,a4
    e8889776:	0086969b          	slliw	a3,a3,0x8
    e888977a:	8fd5                	or	a5,a5,a3
    e888977c:	0127e7b3          	or	a5,a5,s2
    e8889780:	b771                	j	e888970c <ip4addr_aton+0x116>
      LWIP_ASSERT("unhandled", 0);
    e8889782:	02f00593          	li	a1,47
    e8889786:	00046517          	auipc	a0,0x46
    e888978a:	79a50513          	addi	a0,a0,1946 # e88cff20 <ip_addr_any_type+0x6c0>
    e888978e:	bebf20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889792:	00150693          	addi	a3,a0,1
    e8889796:	0f900613          	li	a2,249
    e888979a:	00047597          	auipc	a1,0x47
    e888979e:	81658593          	addi	a1,a1,-2026 # e88cffb0 <ip_addr_any_type+0x750>
    e88897a2:	00046517          	auipc	a0,0x46
    e88897a6:	90e50513          	addi	a0,a0,-1778 # e88cf0b0 <kSinTable1024+0x900>
    e88897aa:	b1df20ef          	jal	ra,e887c2c6 <eLIBs_printf>
      break;
    e88897ae:	b78d                	j	e8889710 <ip4addr_aton+0x11a>
      return 0;       /* initial nondigit */
    e88897b0:	4401                	li	s0,0
    e88897b2:	b7ad                	j	e888971c <ip4addr_aton+0x126>

00000000e88897b4 <ipaddr_addr>:
{
    e88897b4:	1101                	addi	sp,sp,-32
  if (ip4addr_aton(cp, &val)) {
    e88897b6:	002c                	addi	a1,sp,8
{
    e88897b8:	ec06                	sd	ra,24(sp)
  if (ip4addr_aton(cp, &val)) {
    e88897ba:	e3dff0ef          	jal	ra,e88895f6 <ip4addr_aton>
    e88897be:	c509                	beqz	a0,e88897c8 <ipaddr_addr+0x14>
    return ip4_addr_get_u32(&val);
    e88897c0:	4522                	lw	a0,8(sp)
}
    e88897c2:	60e2                	ld	ra,24(sp)
    e88897c4:	6105                	addi	sp,sp,32
    e88897c6:	8082                	ret
  return (IPADDR_NONE);
    e88897c8:	557d                	li	a0,-1
    e88897ca:	bfe5                	j	e88897c2 <ipaddr_addr+0xe>

00000000e88897cc <ip_reass_dequeue_datagram>:
 * Dequeues a datagram from the datagram queue. Doesn't deallocate the pbufs.
 * @param ipr points to the queue entry to dequeue
 */
static void
ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev)
{
    e88897cc:	1101                	addi	sp,sp,-32
  /* dequeue the reass struct  */
  if (reassdatagrams == ipr) {
    e88897ce:	0005c797          	auipc	a5,0x5c
    e88897d2:	58a78793          	addi	a5,a5,1418 # e88e5d58 <reassdatagrams>
{
    e88897d6:	e422                	sd	s0,8(sp)
    e88897d8:	ec06                	sd	ra,24(sp)
    e88897da:	e826                	sd	s1,16(sp)
  if (reassdatagrams == ipr) {
    e88897dc:	6398                	ld	a4,0(a5)
{
    e88897de:	842a                	mv	s0,a0
  if (reassdatagrams == ipr) {
    e88897e0:	00a71c63          	bne	a4,a0,e88897f8 <ip_reass_dequeue_datagram+0x2c>
    /* it was the first in the list */
    reassdatagrams = ipr->next;
    e88897e4:	6118                	ld	a4,0(a0)
    e88897e6:	e398                	sd	a4,0(a5)
    LWIP_ASSERT("sanity check linked list", prev != NULL);
    prev->next = ipr->next;
  }

  /* now we can free the ip_reassdata struct */
  memp_free(MEMP_REASSDATA, ipr);
    e88897e8:	85a2                	mv	a1,s0
}
    e88897ea:	6422                	ld	s0,8(sp)
    e88897ec:	60e2                	ld	ra,24(sp)
    e88897ee:	64c2                	ld	s1,16(sp)
  memp_free(MEMP_REASSDATA, ipr);
    e88897f0:	4515                	li	a0,5
}
    e88897f2:	6105                	addi	sp,sp,32
  memp_free(MEMP_REASSDATA, ipr);
    e88897f4:	1ab0406f          	j	e888e19e <memp_free>
    e88897f8:	84ae                	mv	s1,a1
    LWIP_ASSERT("sanity check linked list", prev != NULL);
    e88897fa:	e59d                	bnez	a1,e8889828 <ip_reass_dequeue_datagram+0x5c>
    e88897fc:	02f00593          	li	a1,47
    e8889800:	00047517          	auipc	a0,0x47
    e8889804:	90050513          	addi	a0,a0,-1792 # e88d0100 <ip_addr_broadcast+0x128>
    e8889808:	b71f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888980c:	00150693          	addi	a3,a0,1
    e8889810:	14500613          	li	a2,325
    e8889814:	00047597          	auipc	a1,0x47
    e8889818:	97c58593          	addi	a1,a1,-1668 # e88d0190 <ip_addr_broadcast+0x1b8>
    e888981c:	00046517          	auipc	a0,0x46
    e8889820:	89450513          	addi	a0,a0,-1900 # e88cf0b0 <kSinTable1024+0x900>
    e8889824:	aa3f20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    prev->next = ipr->next;
    e8889828:	601c                	ld	a5,0(s0)
    e888982a:	e09c                	sd	a5,0(s1)
    e888982c:	bf75                	j	e88897e8 <ip_reass_dequeue_datagram+0x1c>

00000000e888982e <ip_reass_free_complete_datagram>:
{
    e888982e:	711d                	addi	sp,sp,-96
    e8889830:	e8a2                	sd	s0,80(sp)
    e8889832:	f852                	sd	s4,48(sp)
    e8889834:	ec86                	sd	ra,88(sp)
    e8889836:	e4a6                	sd	s1,72(sp)
    e8889838:	e0ca                	sd	s2,64(sp)
    e888983a:	fc4e                	sd	s3,56(sp)
    e888983c:	f456                	sd	s5,40(sp)
    e888983e:	f05a                	sd	s6,32(sp)
    e8889840:	ec5e                	sd	s7,24(sp)
    e8889842:	e862                	sd	s8,16(sp)
    e8889844:	e466                	sd	s9,8(sp)
    e8889846:	e06a                	sd	s10,0(sp)
    e8889848:	842a                	mv	s0,a0
    e888984a:	8a2e                	mv	s4,a1
  LWIP_ASSERT("prev != ipr", prev != ipr);
    e888984c:	02a59863          	bne	a1,a0,e888987c <ip_reass_free_complete_datagram+0x4e>
    e8889850:	02f00593          	li	a1,47
    e8889854:	00047517          	auipc	a0,0x47
    e8889858:	8ac50513          	addi	a0,a0,-1876 # e88d0100 <ip_addr_broadcast+0x128>
    e888985c:	b1df20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889860:	00150693          	addi	a3,a0,1
    e8889864:	0ab00613          	li	a2,171
    e8889868:	00047597          	auipc	a1,0x47
    e888986c:	94858593          	addi	a1,a1,-1720 # e88d01b0 <ip_addr_broadcast+0x1d8>
    e8889870:	00046517          	auipc	a0,0x46
    e8889874:	84050513          	addi	a0,a0,-1984 # e88cf0b0 <kSinTable1024+0x900>
    e8889878:	a4ff20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (prev != NULL) {
    e888987c:	020a0c63          	beqz	s4,e88898b4 <ip_reass_free_complete_datagram+0x86>
    LWIP_ASSERT("prev->next == ipr", prev->next == ipr);
    e8889880:	000a3783          	ld	a5,0(s4)
    e8889884:	02878863          	beq	a5,s0,e88898b4 <ip_reass_free_complete_datagram+0x86>
    e8889888:	02f00593          	li	a1,47
    e888988c:	00047517          	auipc	a0,0x47
    e8889890:	87450513          	addi	a0,a0,-1932 # e88d0100 <ip_addr_broadcast+0x128>
    e8889894:	ae5f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889898:	00150693          	addi	a3,a0,1
    e888989c:	0ad00613          	li	a2,173
    e88898a0:	00047597          	auipc	a1,0x47
    e88898a4:	92058593          	addi	a1,a1,-1760 # e88d01c0 <ip_addr_broadcast+0x1e8>
    e88898a8:	00046517          	auipc	a0,0x46
    e88898ac:	80850513          	addi	a0,a0,-2040 # e88cf0b0 <kSinTable1024+0x900>
    e88898b0:	a17f20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  MIB2_STATS_INC(mib2.ipreasmfails);
    e88898b4:	0005d717          	auipc	a4,0x5d
    e88898b8:	b9c70713          	addi	a4,a4,-1124 # e88e6450 <lwip_stats>
    e88898bc:	17872783          	lw	a5,376(a4)
  u16_t pbufs_freed = 0;
    e88898c0:	4901                	li	s2,0
  MIB2_STATS_INC(mib2.ipreasmfails);
    e88898c2:	2785                	addiw	a5,a5,1
    e88898c4:	16f72c23          	sw	a5,376(a4)
  iprh = (struct ip_reass_helper *)ipr->p->payload;
    e88898c8:	6404                	ld	s1,8(s0)
    e88898ca:	649c                	ld	a5,8(s1)
  if (iprh->start == 0) {
    e88898cc:	0087d703          	lhu	a4,8(a5)
    e88898d0:	e705                	bnez	a4,e88898f8 <ip_reass_free_complete_datagram+0xca>
    ipr->p = iprh->next_pbuf;
    e88898d2:	639c                	ld	a5,0(a5)
    SMEMCPY(p->payload, &ipr->iphdr, IP_HLEN);
    e88898d4:	4651                	li	a2,20
    e88898d6:	01040593          	addi	a1,s0,16
    ipr->p = iprh->next_pbuf;
    e88898da:	e41c                	sd	a5,8(s0)
    SMEMCPY(p->payload, &ipr->iphdr, IP_HLEN);
    e88898dc:	6488                	ld	a0,8(s1)
    e88898de:	ac3f20ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    icmp_time_exceeded(p, ICMP_TE_FRAG);
    e88898e2:	4585                	li	a1,1
    e88898e4:	8526                	mv	a0,s1
    e88898e6:	30c130ef          	jal	ra,e889cbf2 <icmp_time_exceeded>
    clen = pbuf_clen(p);
    e88898ea:	8526                	mv	a0,s1
    e88898ec:	567050ef          	jal	ra,e888f652 <pbuf_clen>
    e88898f0:	892a                	mv	s2,a0
    pbuf_free(p);
    e88898f2:	8526                	mv	a0,s1
    e88898f4:	159050ef          	jal	ra,e888f24c <pbuf_free>
  p = ipr->p;
    e88898f8:	00843983          	ld	s3,8(s0)
    LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff);
    e88898fc:	6b41                	lui	s6,0x10
    e88898fe:	00047b97          	auipc	s7,0x47
    e8889902:	802b8b93          	addi	s7,s7,-2046 # e88d0100 <ip_addr_broadcast+0x128>
    e8889906:	00047c17          	auipc	s8,0x47
    e888990a:	8d2c0c13          	addi	s8,s8,-1838 # e88d01d8 <ip_addr_broadcast+0x200>
    e888990e:	00045c97          	auipc	s9,0x45
    e8889912:	7a2c8c93          	addi	s9,s9,1954 # e88cf0b0 <kSinTable1024+0x900>
  while (p != NULL) {
    e8889916:	0009049b          	sext.w	s1,s2
    e888991a:	06099963          	bnez	s3,e888998c <ip_reass_free_complete_datagram+0x15e>
  ip_reass_dequeue_datagram(ipr, prev);
    e888991e:	8522                	mv	a0,s0
    e8889920:	85d2                	mv	a1,s4
    e8889922:	eabff0ef          	jal	ra,e88897cc <ip_reass_dequeue_datagram>
  LWIP_ASSERT("ip_reass_pbufcount >= pbufs_freed", ip_reass_pbufcount >= pbufs_freed);
    e8889926:	0005c417          	auipc	s0,0x5c
    e888992a:	42c40413          	addi	s0,s0,1068 # e88e5d52 <ip_reass_pbufcount>
    e888992e:	00045783          	lhu	a5,0(s0)
    e8889932:	0297f863          	bgeu	a5,s1,e8889962 <ip_reass_free_complete_datagram+0x134>
    e8889936:	02f00593          	li	a1,47
    e888993a:	00046517          	auipc	a0,0x46
    e888993e:	7c650513          	addi	a0,a0,1990 # e88d0100 <ip_addr_broadcast+0x128>
    e8889942:	a37f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889946:	00150693          	addi	a3,a0,1
    e888994a:	0d200613          	li	a2,210
    e888994e:	00047597          	auipc	a1,0x47
    e8889952:	8aa58593          	addi	a1,a1,-1878 # e88d01f8 <ip_addr_broadcast+0x220>
    e8889956:	00045517          	auipc	a0,0x45
    e888995a:	75a50513          	addi	a0,a0,1882 # e88cf0b0 <kSinTable1024+0x900>
    e888995e:	969f20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - pbufs_freed);
    e8889962:	00045783          	lhu	a5,0(s0)
}
    e8889966:	8526                	mv	a0,s1
  ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - pbufs_freed);
    e8889968:	4127893b          	subw	s2,a5,s2
    e888996c:	01241023          	sh	s2,0(s0)
}
    e8889970:	60e6                	ld	ra,88(sp)
    e8889972:	6446                	ld	s0,80(sp)
    e8889974:	64a6                	ld	s1,72(sp)
    e8889976:	6906                	ld	s2,64(sp)
    e8889978:	79e2                	ld	s3,56(sp)
    e888997a:	7a42                	ld	s4,48(sp)
    e888997c:	7aa2                	ld	s5,40(sp)
    e888997e:	7b02                	ld	s6,32(sp)
    e8889980:	6be2                	ld	s7,24(sp)
    e8889982:	6c42                	ld	s8,16(sp)
    e8889984:	6ca2                	ld	s9,8(sp)
    e8889986:	6d02                	ld	s10,0(sp)
    e8889988:	6125                	addi	sp,sp,96
    e888998a:	8082                	ret
    iprh = (struct ip_reass_helper *)p->payload;
    e888998c:	0089b783          	ld	a5,8(s3)
    clen = pbuf_clen(pcur);
    e8889990:	854e                	mv	a0,s3
    p = iprh->next_pbuf;
    e8889992:	0007bd03          	ld	s10,0(a5)
    clen = pbuf_clen(pcur);
    e8889996:	4bd050ef          	jal	ra,e888f652 <pbuf_clen>
    LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff);
    e888999a:	9ca9                	addw	s1,s1,a0
    clen = pbuf_clen(pcur);
    e888999c:	8aaa                	mv	s5,a0
    LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff);
    e888999e:	0164cf63          	blt	s1,s6,e88899bc <ip_reass_free_complete_datagram+0x18e>
    e88899a2:	02f00593          	li	a1,47
    e88899a6:	855e                	mv	a0,s7
    e88899a8:	9d1f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88899ac:	00150693          	addi	a3,a0,1
    e88899b0:	0cc00613          	li	a2,204
    e88899b4:	85e2                	mv	a1,s8
    e88899b6:	8566                	mv	a0,s9
    e88899b8:	90ff20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pbuf_free(pcur);
    e88899bc:	854e                	mv	a0,s3
    pbufs_freed = (u16_t)(pbufs_freed + clen);
    e88899be:	0159093b          	addw	s2,s2,s5
    e88899c2:	3c09390b          	extu	s2,s2,15,0
    pbuf_free(pcur);
    e88899c6:	087050ef          	jal	ra,e888f24c <pbuf_free>
    p = iprh->next_pbuf;
    e88899ca:	89ea                	mv	s3,s10
    e88899cc:	b7a9                	j	e8889916 <ip_reass_free_complete_datagram+0xe8>

00000000e88899ce <ip_reass_remove_oldest_datagram>:
{
    e88899ce:	7139                	addi	sp,sp,-64
    e88899d0:	e422                	sd	s0,8(sp)
    e88899d2:	ec4a                	sd	s2,24(sp)
    e88899d4:	f04e                	sd	s3,32(sp)
    e88899d6:	f452                	sd	s4,40(sp)
    e88899d8:	f856                	sd	s5,48(sp)
    e88899da:	fc06                	sd	ra,56(sp)
    e88899dc:	e826                	sd	s1,16(sp)
    e88899de:	892a                	mv	s2,a0
    e88899e0:	8a2e                	mv	s4,a1
  int pbufs_freed = 0, pbufs_freed_current;
    e88899e2:	4401                	li	s0,0
    r = reassdatagrams;
    e88899e4:	0005ca97          	auipc	s5,0x5c
    e88899e8:	374a8a93          	addi	s5,s5,884 # e88e5d58 <reassdatagrams>
  } while ((pbufs_freed < pbufs_needed) && (other_datagrams > 1));
    e88899ec:	4985                	li	s3,1
    r = reassdatagrams;
    e88899ee:	000ab783          	ld	a5,0(s5)
    other_datagrams = 0;
    e88899f2:	4481                	li	s1,0
    oldest_prev = NULL;
    e88899f4:	4581                	li	a1,0
    prev = NULL;
    e88899f6:	4701                	li	a4,0
    oldest = NULL;
    e88899f8:	4501                	li	a0,0
    while (r != NULL) {
    e88899fa:	e39d                	bnez	a5,e8889a20 <ip_reass_remove_oldest_datagram+0x52>
    if (oldest != NULL) {
    e88899fc:	c501                	beqz	a0,e8889a04 <ip_reass_remove_oldest_datagram+0x36>
      pbufs_freed_current = ip_reass_free_complete_datagram(oldest, oldest_prev);
    e88899fe:	e31ff0ef          	jal	ra,e888982e <ip_reass_free_complete_datagram>
      pbufs_freed += pbufs_freed_current;
    e8889a02:	9c29                	addw	s0,s0,a0
  } while ((pbufs_freed < pbufs_needed) && (other_datagrams > 1));
    e8889a04:	01445463          	bge	s0,s4,e8889a0c <ip_reass_remove_oldest_datagram+0x3e>
    e8889a08:	fe99c3e3          	blt	s3,s1,e88899ee <ip_reass_remove_oldest_datagram+0x20>
}
    e8889a0c:	8522                	mv	a0,s0
    e8889a0e:	70e2                	ld	ra,56(sp)
    e8889a10:	6422                	ld	s0,8(sp)
    e8889a12:	64c2                	ld	s1,16(sp)
    e8889a14:	6962                	ld	s2,24(sp)
    e8889a16:	7982                	ld	s3,32(sp)
    e8889a18:	7a22                	ld	s4,40(sp)
    e8889a1a:	7ac2                	ld	s5,48(sp)
    e8889a1c:	6121                	addi	sp,sp,64
    e8889a1e:	8082                	ret
      if (!IP_ADDRESSES_AND_ID_MATCH(&r->iphdr, fraghdr)) {
    e8889a20:	4fd0                	lw	a2,28(a5)
    e8889a22:	00c92683          	lw	a3,12(s2)
    e8889a26:	00d61d63          	bne	a2,a3,e8889a40 <ip_reass_remove_oldest_datagram+0x72>
    e8889a2a:	5390                	lw	a2,32(a5)
    e8889a2c:	01092683          	lw	a3,16(s2)
    e8889a30:	00d61863          	bne	a2,a3,e8889a40 <ip_reass_remove_oldest_datagram+0x72>
    e8889a34:	0147d603          	lhu	a2,20(a5)
    e8889a38:	00495683          	lhu	a3,4(s2)
    e8889a3c:	00d60e63          	beq	a2,a3,e8889a58 <ip_reass_remove_oldest_datagram+0x8a>
        other_datagrams++;
    e8889a40:	2485                	addiw	s1,s1,1
        if (oldest == NULL) {
    e8889a42:	c105                	beqz	a0,e8889a62 <ip_reass_remove_oldest_datagram+0x94>
        } else if (r->timer <= oldest->timer) {
    e8889a44:	02754603          	lbu	a2,39(a0)
    e8889a48:	0277c683          	lbu	a3,39(a5)
          oldest_prev = prev;
    e8889a4c:	00d63833          	sltu	a6,a2,a3
    e8889a50:	4107158b          	mveqz	a1,a4,a6
    e8889a54:	4107950b          	mveqz	a0,a5,a6
      if (r->next != NULL) {
    e8889a58:	6394                	ld	a3,0(a5)
    e8889a5a:	42d7970b          	mvnez	a4,a5,a3
    e8889a5e:	87b6                	mv	a5,a3
    e8889a60:	bf69                	j	e88899fa <ip_reass_remove_oldest_datagram+0x2c>
          oldest_prev = prev;
    e8889a62:	85ba                	mv	a1,a4
    e8889a64:	853e                	mv	a0,a5
    e8889a66:	bfcd                	j	e8889a58 <ip_reass_remove_oldest_datagram+0x8a>

00000000e8889a68 <ip_reass_tmr>:
{
    e8889a68:	1101                	addi	sp,sp,-32
  r = reassdatagrams;
    e8889a6a:	0005c797          	auipc	a5,0x5c
    e8889a6e:	2ee78793          	addi	a5,a5,750 # e88e5d58 <reassdatagrams>
{
    e8889a72:	e422                	sd	s0,8(sp)
    e8889a74:	ec06                	sd	ra,24(sp)
    e8889a76:	e826                	sd	s1,16(sp)
  r = reassdatagrams;
    e8889a78:	6388                	ld	a0,0(a5)
  struct ip_reassdata *r, *prev = NULL;
    e8889a7a:	4401                	li	s0,0
  while (r != NULL) {
    e8889a7c:	e511                	bnez	a0,e8889a88 <ip_reass_tmr+0x20>
}
    e8889a7e:	60e2                	ld	ra,24(sp)
    e8889a80:	6422                	ld	s0,8(sp)
    e8889a82:	64c2                	ld	s1,16(sp)
    e8889a84:	6105                	addi	sp,sp,32
    e8889a86:	8082                	ret
    if (r->timer > 0) {
    e8889a88:	02754783          	lbu	a5,39(a0)
    e8889a8c:	6104                	ld	s1,0(a0)
    e8889a8e:	c799                	beqz	a5,e8889a9c <ip_reass_tmr+0x34>
      r->timer--;
    e8889a90:	37fd                	addiw	a5,a5,-1
    e8889a92:	02f503a3          	sb	a5,39(a0)
      ip_reass_free_complete_datagram(tmp, prev);
    e8889a96:	842a                	mv	s0,a0
    e8889a98:	8526                	mv	a0,s1
    e8889a9a:	b7cd                	j	e8889a7c <ip_reass_tmr+0x14>
    e8889a9c:	85a2                	mv	a1,s0
    e8889a9e:	d91ff0ef          	jal	ra,e888982e <ip_reass_free_complete_datagram>
    e8889aa2:	8522                	mv	a0,s0
    e8889aa4:	bfcd                	j	e8889a96 <ip_reass_tmr+0x2e>

00000000e8889aa6 <ip4_reass>:
 * @param p points to a pbuf chain of the fragment
 * @return NULL if reassembly is incomplete, ? otherwise
 */
struct pbuf *
ip4_reass(struct pbuf *p)
{
    e8889aa6:	7159                	addi	sp,sp,-112
    e8889aa8:	eca6                	sd	s1,88(sp)
  u16_t offset, len, clen;
  u8_t hlen;
  int valid;
  int is_last;

  IPFRAG_STATS_INC(ip_frag.recv);
    e8889aaa:	0005d497          	auipc	s1,0x5d
    e8889aae:	9a648493          	addi	s1,s1,-1626 # e88e6450 <lwip_stats>
    e8889ab2:	0324d783          	lhu	a5,50(s1)
{
    e8889ab6:	e0d2                	sd	s4,64(sp)
    e8889ab8:	f486                	sd	ra,104(sp)
  IPFRAG_STATS_INC(ip_frag.recv);
    e8889aba:	2785                	addiw	a5,a5,1
    e8889abc:	02f49923          	sh	a5,50(s1)
  MIB2_STATS_INC(mib2.ipreasmreqds);
    e8889ac0:	1884a783          	lw	a5,392(s1)
{
    e8889ac4:	f0a2                	sd	s0,96(sp)
    e8889ac6:	e8ca                	sd	s2,80(sp)
  MIB2_STATS_INC(mib2.ipreasmreqds);
    e8889ac8:	2785                	addiw	a5,a5,1
{
    e8889aca:	e4ce                	sd	s3,72(sp)
    e8889acc:	fc56                	sd	s5,56(sp)
    e8889ace:	f85a                	sd	s6,48(sp)
    e8889ad0:	f45e                	sd	s7,40(sp)
    e8889ad2:	f062                	sd	s8,32(sp)
    e8889ad4:	ec66                	sd	s9,24(sp)
    e8889ad6:	e86a                	sd	s10,16(sp)
    e8889ad8:	e46e                	sd	s11,8(sp)
  MIB2_STATS_INC(mib2.ipreasmreqds);
    e8889ada:	18f4a423          	sw	a5,392(s1)

  fraghdr = (struct ip_hdr *)p->payload;
    e8889ade:	00853b83          	ld	s7,8(a0)

  if (IPH_HL_BYTES(fraghdr) != IP_HLEN) {
    e8889ae2:	4751                	li	a4,20
{
    e8889ae4:	8a2a                	mv	s4,a0
  if (IPH_HL_BYTES(fraghdr) != IP_HLEN) {
    e8889ae6:	000bc783          	lbu	a5,0(s7)
    e8889aea:	8bbd                	andi	a5,a5,15
    e8889aec:	078a                	slli	a5,a5,0x2
    e8889aee:	02e78163          	beq	a5,a4,e8889b10 <ip4_reass+0x6a>
    LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: IP options currently not supported!\n"));
    IPFRAG_STATS_INC(ip_frag.err);
    e8889af2:	0444d783          	lhu	a5,68(s1)
    e8889af6:	2785                	addiw	a5,a5,1
    e8889af8:	04f49223          	sh	a5,68(s1)
    ip_reass_dequeue_datagram(ipr, NULL);
  }

nullreturn:
  LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: nullreturn\n"));
  IPFRAG_STATS_INC(ip_frag.drop);
    e8889afc:	0364d783          	lhu	a5,54(s1)
  pbuf_free(p);
    e8889b00:	8552                	mv	a0,s4
  return NULL;
    e8889b02:	4a01                	li	s4,0
  IPFRAG_STATS_INC(ip_frag.drop);
    e8889b04:	2785                	addiw	a5,a5,1
    e8889b06:	02f49b23          	sh	a5,54(s1)
  pbuf_free(p);
    e8889b0a:	742050ef          	jal	ra,e888f24c <pbuf_free>
  return NULL;
    e8889b0e:	aed1                	j	e8889ee2 <ip4_reass+0x43c>
  offset = IPH_OFFSET_BYTES(fraghdr);
    e8889b10:	006bd503          	lhu	a0,6(s7)
    e8889b14:	c0afd0ef          	jal	ra,e8886f1e <lwip_htons>
    e8889b18:	8caa                	mv	s9,a0
  len = lwip_ntohs(IPH_LEN(fraghdr));
    e8889b1a:	002bd503          	lhu	a0,2(s7)
    e8889b1e:	c00fd0ef          	jal	ra,e8886f1e <lwip_htons>
  if (hlen > len) {
    e8889b22:	0005071b          	sext.w	a4,a0
  hlen = IPH_HL_BYTES(fraghdr);
    e8889b26:	000bc783          	lbu	a5,0(s7)
    e8889b2a:	8bbd                	andi	a5,a5,15
  if (hlen > len) {
    e8889b2c:	078a                	slli	a5,a5,0x2
    e8889b2e:	fcf767e3          	bltu	a4,a5,e8889afc <ip4_reass+0x56>
  len = (u16_t)(len - hlen);
    e8889b32:	40f50abb          	subw	s5,a0,a5
  clen = pbuf_clen(p);
    e8889b36:	8552                	mv	a0,s4
    e8889b38:	31b050ef          	jal	ra,e888f652 <pbuf_clen>
  if ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) {
    e8889b3c:	0005c997          	auipc	s3,0x5c
    e8889b40:	21698993          	addi	s3,s3,534 # e88e5d52 <ip_reass_pbufcount>
    e8889b44:	0009d783          	lhu	a5,0(s3)
    e8889b48:	0005091b          	sext.w	s2,a0
    e8889b4c:	4429                	li	s0,10
    e8889b4e:	012787bb          	addw	a5,a5,s2
  len = (u16_t)(len - hlen);
    e8889b52:	3c0aba8b          	extu	s5,s5,15,0
  clen = pbuf_clen(p);
    e8889b56:	8c2a                	mv	s8,a0
  if ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) {
    e8889b58:	02f45363          	bge	s0,a5,e8889b7e <ip4_reass+0xd8>
    if (!ip_reass_remove_oldest_datagram(fraghdr, clen) ||
    e8889b5c:	85ca                	mv	a1,s2
    e8889b5e:	855e                	mv	a0,s7
    e8889b60:	e6fff0ef          	jal	ra,e88899ce <ip_reass_remove_oldest_datagram>
    e8889b64:	c519                	beqz	a0,e8889b72 <ip4_reass+0xcc>
        ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS))
    e8889b66:	0009d783          	lhu	a5,0(s3)
    if (!ip_reass_remove_oldest_datagram(fraghdr, clen) ||
    e8889b6a:	012787bb          	addw	a5,a5,s2
    e8889b6e:	00f45863          	bge	s0,a5,e8889b7e <ip4_reass+0xd8>
      IPFRAG_STATS_INC(ip_frag.memerr);
    e8889b72:	03c4d783          	lhu	a5,60(s1)
    e8889b76:	2785                	addiw	a5,a5,1
    e8889b78:	02f49e23          	sh	a5,60(s1)
    if (ipr == NULL) {
    e8889b7c:	b741                	j	e8889afc <ip4_reass+0x56>
  for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) {
    e8889b7e:	0005cb17          	auipc	s6,0x5c
    e8889b82:	1dab0b13          	addi	s6,s6,474 # e88e5d58 <reassdatagrams>
    e8889b86:	000b3403          	ld	s0,0(s6)
    e8889b8a:	e431                	bnez	s0,e8889bd6 <ip4_reass+0x130>
  ipr = (struct ip_reassdata *)memp_malloc(MEMP_REASSDATA);
    e8889b8c:	4515                	li	a0,5
    e8889b8e:	5be040ef          	jal	ra,e888e14c <memp_malloc>
    e8889b92:	842a                	mv	s0,a0
  if (ipr == NULL) {
    e8889b94:	ed01                	bnez	a0,e8889bac <ip4_reass+0x106>
    if (ip_reass_remove_oldest_datagram(fraghdr, clen) >= clen) {
    e8889b96:	85ca                	mv	a1,s2
    e8889b98:	855e                	mv	a0,s7
    e8889b9a:	e35ff0ef          	jal	ra,e88899ce <ip_reass_remove_oldest_datagram>
    e8889b9e:	fd254ae3          	blt	a0,s2,e8889b72 <ip4_reass+0xcc>
      ipr = (struct ip_reassdata *)memp_malloc(MEMP_REASSDATA);
    e8889ba2:	4515                	li	a0,5
    e8889ba4:	5a8040ef          	jal	ra,e888e14c <memp_malloc>
    e8889ba8:	842a                	mv	s0,a0
    if (ipr == NULL)
    e8889baa:	d561                	beqz	a0,e8889b72 <ip4_reass+0xcc>
  memset(ipr, 0, sizeof(struct ip_reassdata));
    e8889bac:	02800613          	li	a2,40
    e8889bb0:	4581                	li	a1,0
    e8889bb2:	8522                	mv	a0,s0
    e8889bb4:	fe0f20ef          	jal	ra,e887c394 <eLIBs_memset>
  ipr->timer = IP_REASS_MAXAGE;
    e8889bb8:	47bd                	li	a5,15
    e8889bba:	02f403a3          	sb	a5,39(s0)
  ipr->next = reassdatagrams;
    e8889bbe:	000b3783          	ld	a5,0(s6)
  reassdatagrams = ipr;
    e8889bc2:	008b3023          	sd	s0,0(s6)
  ipr->next = reassdatagrams;
    e8889bc6:	e01c                	sd	a5,0(s0)
      SMEMCPY(&ipr->iphdr, fraghdr, IP_HLEN);
    e8889bc8:	4651                	li	a2,20
    e8889bca:	85de                	mv	a1,s7
    e8889bcc:	01040513          	addi	a0,s0,16
    e8889bd0:	fd0f20ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e8889bd4:	a0a1                	j	e8889c1c <ip4_reass+0x176>
    if (IP_ADDRESSES_AND_ID_MATCH(&ipr->iphdr, fraghdr)) {
    e8889bd6:	4c58                	lw	a4,28(s0)
    e8889bd8:	00cba783          	lw	a5,12(s7)
    e8889bdc:	0ef71c63          	bne	a4,a5,e8889cd4 <ip4_reass+0x22e>
    e8889be0:	5018                	lw	a4,32(s0)
    e8889be2:	010ba783          	lw	a5,16(s7)
    e8889be6:	0ef71763          	bne	a4,a5,e8889cd4 <ip4_reass+0x22e>
    e8889bea:	01445703          	lhu	a4,20(s0)
    e8889bee:	004bd783          	lhu	a5,4(s7)
    e8889bf2:	0ef71163          	bne	a4,a5,e8889cd4 <ip4_reass+0x22e>
      IPFRAG_STATS_INC(ip_frag.cachehit);
    e8889bf6:	0464d783          	lhu	a5,70(s1)
    e8889bfa:	2785                	addiw	a5,a5,1
    e8889bfc:	04f49323          	sh	a5,70(s1)
    if (((lwip_ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) &&
    e8889c00:	006bd503          	lhu	a0,6(s7)
    e8889c04:	b1afd0ef          	jal	ra,e8886f1e <lwip_htons>
    e8889c08:	03351793          	slli	a5,a0,0x33
    e8889c0c:	eb81                	bnez	a5,e8889c1c <ip4_reass+0x176>
        ((lwip_ntohs(IPH_OFFSET(&ipr->iphdr)) & IP_OFFMASK) != 0)) {
    e8889c0e:	01645503          	lhu	a0,22(s0)
    e8889c12:	b0cfd0ef          	jal	ra,e8886f1e <lwip_htons>
    if (((lwip_ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) &&
    e8889c16:	03351793          	slli	a5,a0,0x33
    e8889c1a:	f7dd                	bnez	a5,e8889bc8 <ip4_reass+0x122>
    e8889c1c:	006bdb83          	lhu	s7,6(s7)
  offset = IPH_OFFSET_BYTES(fraghdr);
    e8889c20:	300cb90b          	extu	s2,s9,12,0
    e8889c24:	090e                	slli	s2,s2,0x3
  is_last = (IPH_OFFSET(fraghdr) & PP_NTOHS(IP_MF)) == 0;
    e8889c26:	020bfb93          	andi	s7,s7,32
  if (is_last) {
    e8889c2a:	000b9c63          	bnez	s7,e8889c42 <ip4_reass+0x19c>
    u16_t datagram_len = (u16_t)(offset + len);
    e8889c2e:	015907bb          	addw	a5,s2,s5
    if ((datagram_len < offset) || (datagram_len > (0xFFFF - IP_HLEN))) {
    e8889c32:	3c07b78b          	extu	a5,a5,15,0
    e8889c36:	3127e063          	bltu	a5,s2,e8889f36 <ip4_reass+0x490>
    e8889c3a:	6741                	lui	a4,0x10
    e8889c3c:	172d                	addi	a4,a4,-21
    e8889c3e:	2ef76c63          	bltu	a4,a5,e8889f36 <ip4_reass+0x490>
  fraghdr = (struct ip_hdr *)new_p->payload;
    e8889c42:	008a3d03          	ld	s10,8(s4)
  len = lwip_ntohs(IPH_LEN(fraghdr));
    e8889c46:	002d5503          	lhu	a0,2(s10)
    e8889c4a:	ad4fd0ef          	jal	ra,e8886f1e <lwip_htons>
  hlen = IPH_HL_BYTES(fraghdr);
    e8889c4e:	000d4c83          	lbu	s9,0(s10)
  if (hlen > len) {
    e8889c52:	0005079b          	sext.w	a5,a0
  hlen = IPH_HL_BYTES(fraghdr);
    e8889c56:	00fcfc93          	andi	s9,s9,15
  if (hlen > len) {
    e8889c5a:	0c8a                	slli	s9,s9,0x2
    e8889c5c:	2d97ed63          	bltu	a5,s9,e8889f36 <ip4_reass+0x490>
  len = (u16_t)(len - hlen);
    e8889c60:	4195053b          	subw	a0,a0,s9
    e8889c64:	3c053c8b          	extu	s9,a0,15,0
  offset = IPH_OFFSET_BYTES(fraghdr);
    e8889c68:	006d5503          	lhu	a0,6(s10)
    e8889c6c:	ab2fd0ef          	jal	ra,e8886f1e <lwip_htons>
    e8889c70:	3005350b          	extu	a0,a0,12,0
    e8889c74:	050e                	slli	a0,a0,0x3
  iprh = (struct ip_reass_helper *)new_p->payload;
    e8889c76:	008a3d03          	ld	s10,8(s4)
  iprh->end = (u16_t)(offset + len);
    e8889c7a:	00ac87bb          	addw	a5,s9,a0
    e8889c7e:	3c07b78b          	extu	a5,a5,15,0
  iprh->start = offset;
    e8889c82:	00ad1423          	sh	a0,8(s10)
  iprh->end = (u16_t)(offset + len);
    e8889c86:	00fd1523          	sh	a5,10(s10)
  iprh->next_pbuf = NULL;
    e8889c8a:	000d3023          	sd	zero,0(s10)
  if (iprh->end < offset) {
    e8889c8e:	2501                	sext.w	a0,a0
    e8889c90:	2781                	sext.w	a5,a5
    e8889c92:	2aa7e263          	bltu	a5,a0,e8889f36 <ip4_reass+0x490>
  for (q = ipr->p; q != NULL;) {
    e8889c96:	640c                	ld	a1,8(s0)
  int valid = 1;
    e8889c98:	4c85                	li	s9,1
  struct ip_reass_helper *iprh, *iprh_tmp, *iprh_prev = NULL;
    e8889c9a:	4d81                	li	s11,0
  for (q = ipr->p; q != NULL;) {
    e8889c9c:	86ae                	mv	a3,a1
    e8889c9e:	ee8d                	bnez	a3,e8889cd8 <ip4_reass+0x232>
    if (iprh_prev != NULL) {
    e8889ca0:	0a0d9463          	bnez	s11,e8889d48 <ip4_reass+0x2a2>
      LWIP_ASSERT("no previous fragment, this must be the first fragment!",
    e8889ca4:	cdbd                	beqz	a1,e8889d22 <ip4_reass+0x27c>
    e8889ca6:	02f00593          	li	a1,47
    e8889caa:	00046517          	auipc	a0,0x46
    e8889cae:	45650513          	addi	a0,a0,1110 # e88d0100 <ip_addr_broadcast+0x128>
    e8889cb2:	ec6f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889cb6:	00150693          	addi	a3,a0,1
    e8889cba:	1bf00613          	li	a2,447
    e8889cbe:	00046597          	auipc	a1,0x46
    e8889cc2:	39258593          	addi	a1,a1,914 # e88d0050 <ip_addr_broadcast+0x78>
    e8889cc6:	00045517          	auipc	a0,0x45
    e8889cca:	3ea50513          	addi	a0,a0,1002 # e88cf0b0 <kSinTable1024+0x900>
    e8889cce:	df8f20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8889cd2:	a881                	j	e8889d22 <ip4_reass+0x27c>
  for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) {
    e8889cd4:	6000                	ld	s0,0(s0)
    e8889cd6:	bd55                	j	e8889b8a <ip4_reass+0xe4>
    iprh_tmp = (struct ip_reass_helper *)q->payload;
    e8889cd8:	6698                	ld	a4,8(a3)
    if (iprh->start < iprh_tmp->start) {
    e8889cda:	00875603          	lhu	a2,8(a4) # 10008 <memcmp-0xe87efff8>
    e8889cde:	04c57563          	bgeu	a0,a2,e8889d28 <ip4_reass+0x282>
      iprh->next_pbuf = q;
    e8889ce2:	00dd3023          	sd	a3,0(s10)
      if (iprh_prev != NULL) {
    e8889ce6:	020d8a63          	beqz	s11,e8889d1a <ip4_reass+0x274>
        if ((iprh->start < iprh_prev->end) || (iprh->end > iprh_tmp->start)) {
    e8889cea:	00add683          	lhu	a3,10(s11) # 1000a <memcmp-0xe87efff6>
    e8889cee:	24d56463          	bltu	a0,a3,e8889f36 <ip4_reass+0x490>
    e8889cf2:	00875703          	lhu	a4,8(a4)
    e8889cf6:	24f76063          	bltu	a4,a5,e8889f36 <ip4_reass+0x490>
        iprh_prev->next_pbuf = new_p;
    e8889cfa:	014db023          	sd	s4,0(s11)
        if (iprh_prev->end != iprh->start) {
    e8889cfe:	008d5783          	lhu	a5,8(s10)
    e8889d02:	08d79563          	bne	a5,a3,e8889d8c <ip4_reass+0x2e6>
  if (is_last || ((ipr->flags & IP_REASS_FLAG_LASTFRAG) != 0)) {
    e8889d06:	000b8663          	beqz	s7,e8889d12 <ip4_reass+0x26c>
    e8889d0a:	02644783          	lbu	a5,38(s0)
    e8889d0e:	8b85                	andi	a5,a5,1
    e8889d10:	c399                	beqz	a5,e8889d16 <ip4_reass+0x270>
    if (valid) {
    e8889d12:	080c9163          	bnez	s9,e8889d94 <ip4_reass+0x2ee>
  return IP_REASS_VALIDATE_PBUF_QUEUED; /* not yet valid! */
    e8889d16:	4c81                	li	s9,0
    e8889d18:	a8cd                	j	e8889e0a <ip4_reass+0x364>
        if (iprh->end > iprh_tmp->start) {
    e8889d1a:	00875703          	lhu	a4,8(a4)
    e8889d1e:	20f76c63          	bltu	a4,a5,e8889f36 <ip4_reass+0x490>
      ipr->p = new_p;
    e8889d22:	01443423          	sd	s4,8(s0)
    e8889d26:	b7c5                	j	e8889d06 <ip4_reass+0x260>
    } else if (iprh->start == iprh_tmp->start) {
    e8889d28:	20c50763          	beq	a0,a2,e8889f36 <ip4_reass+0x490>
    } else if (iprh->start < iprh_tmp->end) {
    e8889d2c:	00a75683          	lhu	a3,10(a4)
    e8889d30:	20d56363          	bltu	a0,a3,e8889f36 <ip4_reass+0x490>
      if (iprh_prev != NULL) {
    e8889d34:	000d8763          	beqz	s11,e8889d42 <ip4_reass+0x29c>
        if (iprh_prev->end != iprh_tmp->start) {
    e8889d38:	00add683          	lhu	a3,10(s11)
    e8889d3c:	00c68363          	beq	a3,a2,e8889d42 <ip4_reass+0x29c>
          valid = 0;
    e8889d40:	4c81                	li	s9,0
    q = iprh_tmp->next_pbuf;
    e8889d42:	6314                	ld	a3,0(a4)
    iprh_tmp = (struct ip_reass_helper *)q->payload;
    e8889d44:	8dba                	mv	s11,a4
    e8889d46:	bfa1                	j	e8889c9e <ip4_reass+0x1f8>
      LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= iprh->start);
    e8889d48:	00add783          	lhu	a5,10(s11)
    e8889d4c:	02f57863          	bgeu	a0,a5,e8889d7c <ip4_reass+0x2d6>
    e8889d50:	02f00593          	li	a1,47
    e8889d54:	00046517          	auipc	a0,0x46
    e8889d58:	3ac50513          	addi	a0,a0,940 # e88d0100 <ip_addr_broadcast+0x128>
    e8889d5c:	e1cf20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889d60:	00150693          	addi	a3,a0,1
    e8889d64:	1b600613          	li	a2,438
    e8889d68:	00046597          	auipc	a1,0x46
    e8889d6c:	2c858593          	addi	a1,a1,712 # e88d0030 <ip_addr_broadcast+0x58>
    e8889d70:	00045517          	auipc	a0,0x45
    e8889d74:	34050513          	addi	a0,a0,832 # e88cf0b0 <kSinTable1024+0x900>
    e8889d78:	d4ef20ef          	jal	ra,e887c2c6 <eLIBs_printf>
      iprh_prev->next_pbuf = new_p;
    e8889d7c:	014db023          	sd	s4,0(s11)
      if (iprh_prev->end != iprh->start) {
    e8889d80:	00add703          	lhu	a4,10(s11)
    e8889d84:	008d5783          	lhu	a5,8(s10)
    e8889d88:	f6f70fe3          	beq	a4,a5,e8889d06 <ip4_reass+0x260>
  if (is_last || ((ipr->flags & IP_REASS_FLAG_LASTFRAG) != 0)) {
    e8889d8c:	4c81                	li	s9,0
    e8889d8e:	f60b9ee3          	bnez	s7,e8889d0a <ip4_reass+0x264>
    e8889d92:	b751                	j	e8889d16 <ip4_reass+0x270>
      if ((ipr->p == NULL) || (((struct ip_reass_helper *)ipr->p->payload)->start != 0)) {
    e8889d94:	641c                	ld	a5,8(s0)
    e8889d96:	d3c1                	beqz	a5,e8889d16 <ip4_reass+0x270>
    e8889d98:	6794                	ld	a3,8(a5)
    e8889d9a:	0086d783          	lhu	a5,8(a3)
    e8889d9e:	ffa5                	bnez	a5,e8889d16 <ip4_reass+0x270>
        q = iprh->next_pbuf;
    e8889da0:	000d3783          	ld	a5,0(s10)
        while (q != NULL) {
    e8889da4:	14079f63          	bnez	a5,e8889f02 <ip4_reass+0x45c>
          LWIP_ASSERT("sanity check",
    e8889da8:	03a69863          	bne	a3,s10,e8889dd8 <ip4_reass+0x332>
    e8889dac:	02f00593          	li	a1,47
    e8889db0:	00046517          	auipc	a0,0x46
    e8889db4:	35050513          	addi	a0,a0,848 # e88d0100 <ip_addr_broadcast+0x128>
    e8889db8:	dc0f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889dbc:	00150693          	addi	a3,a0,1
    e8889dc0:	1e100613          	li	a2,481
    e8889dc4:	00046597          	auipc	a1,0x46
    e8889dc8:	2c458593          	addi	a1,a1,708 # e88d0088 <ip_addr_broadcast+0xb0>
    e8889dcc:	00045517          	auipc	a0,0x45
    e8889dd0:	2e450513          	addi	a0,a0,740 # e88cf0b0 <kSinTable1024+0x900>
    e8889dd4:	cf2f20ef          	jal	ra,e887c2c6 <eLIBs_printf>
          LWIP_ASSERT("validate_datagram:next_pbuf!=NULL",
    e8889dd8:	000d3783          	ld	a5,0(s10)
    e8889ddc:	c79d                	beqz	a5,e8889e0a <ip4_reass+0x364>
    e8889dde:	02f00593          	li	a1,47
    e8889de2:	00046517          	auipc	a0,0x46
    e8889de6:	31e50513          	addi	a0,a0,798 # e88d0100 <ip_addr_broadcast+0x128>
    e8889dea:	d8ef20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889dee:	00150693          	addi	a3,a0,1
    e8889df2:	1e300613          	li	a2,483
    e8889df6:	00046597          	auipc	a1,0x46
    e8889dfa:	2a258593          	addi	a1,a1,674 # e88d0098 <ip_addr_broadcast+0xc0>
    e8889dfe:	00045517          	auipc	a0,0x45
    e8889e02:	2b250513          	addi	a0,a0,690 # e88cf0b0 <kSinTable1024+0x900>
    e8889e06:	cc0f20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount + clen);
    e8889e0a:	0009d783          	lhu	a5,0(s3)
    e8889e0e:	01878c3b          	addw	s8,a5,s8
    e8889e12:	01899023          	sh	s8,0(s3)
  if (is_last) {
    e8889e16:	000b9c63          	bnez	s7,e8889e2e <ip4_reass+0x388>
    ipr->flags |= IP_REASS_FLAG_LASTFRAG;
    e8889e1a:	02644783          	lbu	a5,38(s0)
    u16_t datagram_len = (u16_t)(offset + len);
    e8889e1e:	0159093b          	addw	s2,s2,s5
    ipr->datagram_len = datagram_len;
    e8889e22:	03241223          	sh	s2,36(s0)
    ipr->flags |= IP_REASS_FLAG_LASTFRAG;
    e8889e26:	0017e793          	ori	a5,a5,1
    e8889e2a:	02f40323          	sb	a5,38(s0)
  return NULL;
    e8889e2e:	4a01                	li	s4,0
  if (valid == IP_REASS_VALIDATE_TELEGRAM_FINISHED) {
    e8889e30:	0a0c8963          	beqz	s9,e8889ee2 <ip4_reass+0x43c>
    r = ((struct ip_reass_helper *)ipr->p->payload)->next_pbuf;
    e8889e34:	641c                	ld	a5,8(s0)
    u16_t datagram_len = (u16_t)(ipr->datagram_len + IP_HLEN);
    e8889e36:	02445a83          	lhu	s5,36(s0)
    SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN);
    e8889e3a:	4651                	li	a2,20
    r = ((struct ip_reass_helper *)ipr->p->payload)->next_pbuf;
    e8889e3c:	0087ba03          	ld	s4,8(a5)
    SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN);
    e8889e40:	01040593          	addi	a1,s0,16
    u16_t datagram_len = (u16_t)(ipr->datagram_len + IP_HLEN);
    e8889e44:	2ad1                	addiw	s5,s5,20
    SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN);
    e8889e46:	8552                	mv	a0,s4
    r = ((struct ip_reass_helper *)ipr->p->payload)->next_pbuf;
    e8889e48:	000a3903          	ld	s2,0(s4)
    SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN);
    e8889e4c:	d54f20ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    u16_t datagram_len = (u16_t)(ipr->datagram_len + IP_HLEN);
    e8889e50:	3c0aba8b          	extu	s5,s5,15,0
    IPH_LEN_SET(fraghdr, lwip_htons(datagram_len));
    e8889e54:	8556                	mv	a0,s5
    e8889e56:	8c8fd0ef          	jal	ra,e8886f1e <lwip_htons>
    e8889e5a:	00aa1123          	sh	a0,2(s4)
    IPH_OFFSET_SET(fraghdr, 0);
    e8889e5e:	000a1323          	sh	zero,6(s4)
    IPH_CHKSUM_SET(fraghdr, 0);
    e8889e62:	000a1523          	sh	zero,10(s4)
      IPH_CHKSUM_SET(fraghdr, inet_chksum(fraghdr, IP_HLEN));
    e8889e66:	8552                	mv	a0,s4
    e8889e68:	45d1                	li	a1,20
    e8889e6a:	abdfd0ef          	jal	ra,e8887926 <inet_chksum>
    e8889e6e:	00aa1523          	sh	a0,10(s4)
    p = ipr->p;
    e8889e72:	00843a03          	ld	s4,8(s0)
    while (r != NULL) {
    e8889e76:	0a091063          	bnez	s2,e8889f16 <ip4_reass+0x470>
    if (ipr == reassdatagrams) {
    e8889e7a:	000b3783          	ld	a5,0(s6)
        if (ipr_prev->next == ipr) {
    e8889e7e:	00878463          	beq	a5,s0,e8889e86 <ip4_reass+0x3e0>
    e8889e82:	893e                	mv	s2,a5
      for (ipr_prev = reassdatagrams; ipr_prev != NULL; ipr_prev = ipr_prev->next) {
    e8889e84:	e7d5                	bnez	a5,e8889f30 <ip4_reass+0x48a>
    ip_reass_dequeue_datagram(ipr, ipr_prev);
    e8889e86:	8522                	mv	a0,s0
    e8889e88:	85ca                	mv	a1,s2
    e8889e8a:	943ff0ef          	jal	ra,e88897cc <ip_reass_dequeue_datagram>
    clen = pbuf_clen(p);
    e8889e8e:	8552                	mv	a0,s4
    e8889e90:	7c2050ef          	jal	ra,e888f652 <pbuf_clen>
    LWIP_ASSERT("ip_reass_pbufcount >= clen", ip_reass_pbufcount >= clen);
    e8889e94:	0005079b          	sext.w	a5,a0
    e8889e98:	0009d703          	lhu	a4,0(s3)
    clen = pbuf_clen(p);
    e8889e9c:	842a                	mv	s0,a0
    LWIP_ASSERT("ip_reass_pbufcount >= clen", ip_reass_pbufcount >= clen);
    e8889e9e:	02f77863          	bgeu	a4,a5,e8889ece <ip4_reass+0x428>
    e8889ea2:	02f00593          	li	a1,47
    e8889ea6:	00046517          	auipc	a0,0x46
    e8889eaa:	25a50513          	addi	a0,a0,602 # e88d0100 <ip_addr_broadcast+0x128>
    e8889eae:	ccaf20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889eb2:	00150693          	addi	a3,a0,1
    e8889eb6:	29b00613          	li	a2,667
    e8889eba:	00046597          	auipc	a1,0x46
    e8889ebe:	20658593          	addi	a1,a1,518 # e88d00c0 <ip_addr_broadcast+0xe8>
    e8889ec2:	00045517          	auipc	a0,0x45
    e8889ec6:	1ee50513          	addi	a0,a0,494 # e88cf0b0 <kSinTable1024+0x900>
    e8889eca:	bfcf20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - clen);
    e8889ece:	0009d503          	lhu	a0,0(s3)
    MIB2_STATS_INC(mib2.ipreasmoks);
    e8889ed2:	1744a783          	lw	a5,372(s1)
    ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - clen);
    e8889ed6:	9d01                	subw	a0,a0,s0
    MIB2_STATS_INC(mib2.ipreasmoks);
    e8889ed8:	2785                	addiw	a5,a5,1
    ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - clen);
    e8889eda:	00a99023          	sh	a0,0(s3)
    MIB2_STATS_INC(mib2.ipreasmoks);
    e8889ede:	16f4aa23          	sw	a5,372(s1)
}
    e8889ee2:	70a6                	ld	ra,104(sp)
    e8889ee4:	7406                	ld	s0,96(sp)
    e8889ee6:	8552                	mv	a0,s4
    e8889ee8:	64e6                	ld	s1,88(sp)
    e8889eea:	6946                	ld	s2,80(sp)
    e8889eec:	69a6                	ld	s3,72(sp)
    e8889eee:	6a06                	ld	s4,64(sp)
    e8889ef0:	7ae2                	ld	s5,56(sp)
    e8889ef2:	7b42                	ld	s6,48(sp)
    e8889ef4:	7ba2                	ld	s7,40(sp)
    e8889ef6:	7c02                	ld	s8,32(sp)
    e8889ef8:	6ce2                	ld	s9,24(sp)
    e8889efa:	6d42                	ld	s10,16(sp)
    e8889efc:	6da2                	ld	s11,8(sp)
    e8889efe:	6165                	addi	sp,sp,112
    e8889f00:	8082                	ret
          iprh = (struct ip_reass_helper *)q->payload;
    e8889f02:	6798                	ld	a4,8(a5)
          if (iprh_prev->end != iprh->start) {
    e8889f04:	00ad5603          	lhu	a2,10(s10)
    e8889f08:	00875783          	lhu	a5,8(a4)
    e8889f0c:	e0f615e3          	bne	a2,a5,e8889d16 <ip4_reass+0x270>
          q = iprh->next_pbuf;
    e8889f10:	631c                	ld	a5,0(a4)
          iprh = (struct ip_reass_helper *)q->payload;
    e8889f12:	8d3a                	mv	s10,a4
    e8889f14:	bd41                	j	e8889da4 <ip4_reass+0x2fe>
      pbuf_remove_header(r, IP_HLEN);
    e8889f16:	45d1                	li	a1,20
    e8889f18:	854a                	mv	a0,s2
      iprh = (struct ip_reass_helper *)r->payload;
    e8889f1a:	00893a83          	ld	s5,8(s2)
      pbuf_remove_header(r, IP_HLEN);
    e8889f1e:	28a050ef          	jal	ra,e888f1a8 <pbuf_remove_header>
      pbuf_cat(p, r);
    e8889f22:	85ca                	mv	a1,s2
    e8889f24:	8552                	mv	a0,s4
    e8889f26:	786050ef          	jal	ra,e888f6ac <pbuf_cat>
      r = iprh->next_pbuf;
    e8889f2a:	000ab903          	ld	s2,0(s5)
    e8889f2e:	b7a1                	j	e8889e76 <ip4_reass+0x3d0>
        if (ipr_prev->next == ipr) {
    e8889f30:	00093783          	ld	a5,0(s2)
    e8889f34:	b7a9                	j	e8889e7e <ip4_reass+0x3d8>
  if (ipr->p == NULL) {
    e8889f36:	641c                	ld	a5,8(s0)
    e8889f38:	bc0792e3          	bnez	a5,e8889afc <ip4_reass+0x56>
    LWIP_ASSERT("not firstalthough just enqueued", ipr == reassdatagrams);
    e8889f3c:	000b3783          	ld	a5,0(s6)
    e8889f40:	02878863          	beq	a5,s0,e8889f70 <ip4_reass+0x4ca>
    e8889f44:	02f00593          	li	a1,47
    e8889f48:	00046517          	auipc	a0,0x46
    e8889f4c:	1b850513          	addi	a0,a0,440 # e88d0100 <ip_addr_broadcast+0x128>
    e8889f50:	c28f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889f54:	00150693          	addi	a3,a0,1
    e8889f58:	2ab00613          	li	a2,683
    e8889f5c:	00046597          	auipc	a1,0x46
    e8889f60:	18458593          	addi	a1,a1,388 # e88d00e0 <ip_addr_broadcast+0x108>
    e8889f64:	00045517          	auipc	a0,0x45
    e8889f68:	14c50513          	addi	a0,a0,332 # e88cf0b0 <kSinTable1024+0x900>
    e8889f6c:	b5af20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    ip_reass_dequeue_datagram(ipr, NULL);
    e8889f70:	4581                	li	a1,0
    e8889f72:	8522                	mv	a0,s0
    e8889f74:	859ff0ef          	jal	ra,e88897cc <ip_reass_dequeue_datagram>
    e8889f78:	b651                	j	e8889afc <ip4_reass+0x56>

00000000e8889f7a <ip4_frag>:
 *
 * @return ERR_OK if sent successfully, err_t otherwise
 */
err_t
ip4_frag(struct pbuf *p, struct netif *netif, const ip4_addr_t *dest)
{
    e8889f7a:	7175                	addi	sp,sp,-144
    e8889f7c:	e506                	sd	ra,136(sp)
    e8889f7e:	e122                	sd	s0,128(sp)
    e8889f80:	fca6                	sd	s1,120(sp)
    e8889f82:	f8ca                	sd	s2,112(sp)
    e8889f84:	f4ce                	sd	s3,104(sp)
    e8889f86:	f0d2                	sd	s4,96(sp)
    e8889f88:	ecd6                	sd	s5,88(sp)
    e8889f8a:	e8da                	sd	s6,80(sp)
    e8889f8c:	e4de                	sd	s7,72(sp)
    e8889f8e:	e0e2                	sd	s8,64(sp)
    e8889f90:	fc66                	sd	s9,56(sp)
    e8889f92:	f86a                	sd	s10,48(sp)
    e8889f94:	f46e                	sd	s11,40(sp)
  u16_t newpbuflen = 0;
  u16_t left_to_copy;
#endif
  struct ip_hdr *original_iphdr;
  struct ip_hdr *iphdr;
  const u16_t nfb = (u16_t)((netif->mtu - IP_HLEN) / 8);
    e8889f96:	1005d903          	lhu	s2,256(a1)
  int last;
  u16_t poff = IP_HLEN;
  u16_t tmp;
  int mf_set;

  original_iphdr = (struct ip_hdr *)p->payload;
    e8889f9a:	00853c03          	ld	s8,8(a0)
  const u16_t nfb = (u16_t)((netif->mtu - IP_HLEN) / 8);
    e8889f9e:	47a1                	li	a5,8
    e8889fa0:	3931                	addiw	s2,s2,-20
    e8889fa2:	02f9493b          	divw	s2,s2,a5
  iphdr = original_iphdr;
  if (IPH_HL_BYTES(iphdr) != IP_HLEN) {
    e8889fa6:	000c4783          	lbu	a5,0(s8)
    e8889faa:	4751                	li	a4,20
    e8889fac:	8bbd                	andi	a5,a5,15
    e8889fae:	078a                	slli	a5,a5,0x2
    e8889fb0:	04e79063          	bne	a5,a4,e8889ff0 <ip4_frag+0x76>
    /* ip4_frag() does not support IP options */
    return ERR_VAL;
  }
  LWIP_ERROR("ip4_frag(): pbuf too short", p->len >= IP_HLEN, return ERR_VAL);
    e8889fb4:	01255703          	lhu	a4,18(a0)
    e8889fb8:	ec32                	sd	a2,24(sp)
    e8889fba:	47cd                	li	a5,19
    e8889fbc:	8b2e                	mv	s6,a1
    e8889fbe:	8aaa                	mv	s5,a0
    e8889fc0:	02e7ea63          	bltu	a5,a4,e8889ff4 <ip4_frag+0x7a>
    e8889fc4:	02f00593          	li	a1,47
    e8889fc8:	00046517          	auipc	a0,0x46
    e8889fcc:	13850513          	addi	a0,a0,312 # e88d0100 <ip_addr_broadcast+0x128>
    e8889fd0:	ba8f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8889fd4:	00150693          	addi	a3,a0,1
    e8889fd8:	2fc00613          	li	a2,764
    e8889fdc:	00046597          	auipc	a1,0x46
    e8889fe0:	01458593          	addi	a1,a1,20 # e88cfff0 <ip_addr_broadcast+0x18>
    e8889fe4:	00045517          	auipc	a0,0x45
    e8889fe8:	0cc50513          	addi	a0,a0,204 # e88cf0b0 <kSinTable1024+0x900>
    e8889fec:	adaf20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return ERR_VAL;
    e8889ff0:	5569                	li	a0,-6
    e8889ff2:	a0b9                	j	e888a040 <ip4_frag+0xc6>

  /* Save original offset */
  tmp = lwip_ntohs(IPH_OFFSET(iphdr));
    e8889ff4:	006c5503          	lhu	a0,6(s8)
    e8889ff8:	3c09390b          	extu	s2,s2,15,0
  u16_t poff = IP_HLEN;
    e8889ffc:	4bd1                	li	s7,20
  tmp = lwip_ntohs(IPH_OFFSET(iphdr));
    e8889ffe:	f21fc0ef          	jal	ra,e8886f1e <lwip_htons>
  ofo = tmp & IP_OFFMASK;
  /* already fragmented? if so, the last fragment we create must have MF, too */
  mf_set = tmp & IP_MF;

  left = (u16_t)(p->tot_len - IP_HLEN);
    e888a002:	010ad403          	lhu	s0,16(s5)
    e888a006:	6789                	lui	a5,0x2
    e888a008:	8fe9                	and	a5,a5,a0
    e888a00a:	e03e                	sd	a5,0(sp)

  while (left) {
    /* Fill this fragment */
    fragsize = LWIP_MIN(left, (u16_t)(nfb * 8));
    e888a00c:	0039179b          	slliw	a5,s2,0x3
    e888a010:	3c07b78b          	extu	a5,a5,15,0
  ofo = tmp & IP_OFFMASK;
    e888a014:	3005398b          	extu	s3,a0,12,0
  left = (u16_t)(p->tot_len - IP_HLEN);
    e888a018:	3431                	addiw	s0,s0,-20
    fragsize = LWIP_MIN(left, (u16_t)(nfb * 8));
    e888a01a:	00f11723          	sh	a5,14(sp)
    e888a01e:	2781                	sext.w	a5,a5
  ofo = tmp & IP_OFFMASK;
    e888a020:	3c09b98b          	extu	s3,s3,15,0
  left = (u16_t)(p->tot_len - IP_HLEN);
    e888a024:	3c04340b          	extu	s0,s0,15,0
  while (left) {
    e888a028:	0005ca17          	auipc	s4,0x5c
    e888a02c:	428a0a13          	addi	s4,s4,1064 # e88e6450 <lwip_stats>
    fragsize = LWIP_MIN(left, (u16_t)(nfb * 8));
    e888a030:	e83e                	sd	a5,16(sp)
  while (left) {
    e888a032:	e415                	bnez	s0,e888a05e <ip4_frag+0xe4>

    pbuf_free(rambuf);
    left = (u16_t)(left - fragsize);
    ofo = (u16_t)(ofo + nfb);
  }
  MIB2_STATS_INC(mib2.ipfragoks);
    e888a034:	17ca2783          	lw	a5,380(s4)
  return ERR_OK;
    e888a038:	4501                	li	a0,0
  MIB2_STATS_INC(mib2.ipfragoks);
    e888a03a:	2785                	addiw	a5,a5,1
    e888a03c:	16fa2e23          	sw	a5,380(s4)
memerr:
  MIB2_STATS_INC(mib2.ipfragfails);
  return ERR_MEM;
}
    e888a040:	60aa                	ld	ra,136(sp)
    e888a042:	640a                	ld	s0,128(sp)
    e888a044:	74e6                	ld	s1,120(sp)
    e888a046:	7946                	ld	s2,112(sp)
    e888a048:	79a6                	ld	s3,104(sp)
    e888a04a:	7a06                	ld	s4,96(sp)
    e888a04c:	6ae6                	ld	s5,88(sp)
    e888a04e:	6b46                	ld	s6,80(sp)
    e888a050:	6ba6                	ld	s7,72(sp)
    e888a052:	6c06                	ld	s8,64(sp)
    e888a054:	7ce2                	ld	s9,56(sp)
    e888a056:	7d42                	ld	s10,48(sp)
    e888a058:	7da2                	ld	s11,40(sp)
    e888a05a:	6149                	addi	sp,sp,144
    e888a05c:	8082                	ret
    fragsize = LWIP_MIN(left, (u16_t)(nfb * 8));
    e888a05e:	67c2                	ld	a5,16(sp)
    e888a060:	00040d1b          	sext.w	s10,s0
    e888a064:	00e15483          	lhu	s1,14(sp)
    e888a068:	00fd7363          	bgeu	s10,a5,e888a06e <ip4_frag+0xf4>
    e888a06c:	84a2                	mv	s1,s0
    e888a06e:	3c04b48b          	extu	s1,s1,15,0
    rambuf = pbuf_alloc(PBUF_IP, fragsize, PBUF_RAM);
    e888a072:	28000613          	li	a2,640
    e888a076:	85a6                	mv	a1,s1
    e888a078:	03600513          	li	a0,54
    e888a07c:	314050ef          	jal	ra,e888f390 <pbuf_alloc>
    e888a080:	8caa                	mv	s9,a0
    if (rambuf == NULL) {
    e888a082:	c135                	beqz	a0,e888a0e6 <ip4_frag+0x16c>
    LWIP_ASSERT("this needs a pbuf in one piece!",
    e888a084:	01255683          	lhu	a3,18(a0)
    e888a088:	01055703          	lhu	a4,16(a0)
    e888a08c:	00e69463          	bne	a3,a4,e888a094 <ip4_frag+0x11a>
    e888a090:	6118                	ld	a4,0(a0)
    e888a092:	c71d                	beqz	a4,e888a0c0 <ip4_frag+0x146>
    e888a094:	02f00593          	li	a1,47
    e888a098:	00046517          	auipc	a0,0x46
    e888a09c:	06850513          	addi	a0,a0,104 # e88d0100 <ip_addr_broadcast+0x128>
    e888a0a0:	ad8f20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888a0a4:	00150693          	addi	a3,a0,1
    e888a0a8:	31000613          	li	a2,784
    e888a0ac:	00046597          	auipc	a1,0x46
    e888a0b0:	f6458593          	addi	a1,a1,-156 # e88d0010 <ip_addr_broadcast+0x38>
    e888a0b4:	00045517          	auipc	a0,0x45
    e888a0b8:	ffc50513          	addi	a0,a0,-4 # e88cf0b0 <kSinTable1024+0x900>
    e888a0bc:	a0af20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    poff += pbuf_copy_partial(p, rambuf->payload, fragsize, poff);
    e888a0c0:	008cb583          	ld	a1,8(s9)
    e888a0c4:	86de                	mv	a3,s7
    e888a0c6:	8626                	mv	a2,s1
    e888a0c8:	8556                	mv	a0,s5
    e888a0ca:	089050ef          	jal	ra,e888f952 <pbuf_copy_partial>
    e888a0ce:	01750bbb          	addw	s7,a0,s7
    if (pbuf_add_header(rambuf, IP_HLEN)) {
    e888a0d2:	45d1                	li	a1,20
    e888a0d4:	8566                	mv	a0,s9
    poff += pbuf_copy_partial(p, rambuf->payload, fragsize, poff);
    e888a0d6:	3c0bbb8b          	extu	s7,s7,15,0
    if (pbuf_add_header(rambuf, IP_HLEN)) {
    e888a0da:	0c2050ef          	jal	ra,e888f19c <pbuf_add_header>
    e888a0de:	c919                	beqz	a0,e888a0f4 <ip4_frag+0x17a>
      pbuf_free(rambuf);
    e888a0e0:	8566                	mv	a0,s9
    e888a0e2:	16a050ef          	jal	ra,e888f24c <pbuf_free>
  MIB2_STATS_INC(mib2.ipfragfails);
    e888a0e6:	180a2783          	lw	a5,384(s4)
  return ERR_MEM;
    e888a0ea:	557d                	li	a0,-1
  MIB2_STATS_INC(mib2.ipfragfails);
    e888a0ec:	2785                	addiw	a5,a5,1
    e888a0ee:	18fa2023          	sw	a5,384(s4)
  return ERR_MEM;
    e888a0f2:	b7b9                	j	e888a040 <ip4_frag+0xc6>
    SMEMCPY(rambuf->payload, original_iphdr, IP_HLEN);
    e888a0f4:	008cb503          	ld	a0,8(s9)
    e888a0f8:	4651                	li	a2,20
    e888a0fa:	85e2                	mv	a1,s8
    e888a0fc:	aa4f20ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    iphdr = (struct ip_hdr *)rambuf->payload;
    e888a100:	008cbd83          	ld	s11,8(s9)
    last = (left <= netif->mtu - IP_HLEN);
    e888a104:	100b5683          	lhu	a3,256(s6)
    tmp = (IP_OFFMASK & (ofo));
    e888a108:	3009b50b          	extu	a0,s3,12,0
    e888a10c:	3c05350b          	extu	a0,a0,15,0
    if (!last || mf_set) {
    e888a110:	36b1                	addiw	a3,a3,-20
    e888a112:	01a6c463          	blt	a3,s10,e888a11a <ip4_frag+0x1a0>
    e888a116:	6782                	ld	a5,0(sp)
    e888a118:	c399                	beqz	a5,e888a11e <ip4_frag+0x1a4>
      tmp = tmp | IP_MF;
    e888a11a:	6789                	lui	a5,0x2
    e888a11c:	8d5d                	or	a0,a0,a5
    IPH_OFFSET_SET(iphdr, lwip_htons(tmp));
    e888a11e:	e01fc0ef          	jal	ra,e8886f1e <lwip_htons>
    e888a122:	00ad9323          	sh	a0,6(s11)
    IPH_LEN_SET(iphdr, lwip_htons((u16_t)(fragsize + IP_HLEN)));
    e888a126:	0144851b          	addiw	a0,s1,20
    e888a12a:	3c05350b          	extu	a0,a0,15,0
    e888a12e:	df1fc0ef          	jal	ra,e8886f1e <lwip_htons>
    e888a132:	00ad9123          	sh	a0,2(s11)
      IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN));
    e888a136:	45d1                	li	a1,20
    IPH_CHKSUM_SET(iphdr, 0);
    e888a138:	000d9523          	sh	zero,10(s11)
      IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN));
    e888a13c:	856e                	mv	a0,s11
    e888a13e:	fe8fd0ef          	jal	ra,e8887926 <inet_chksum>
    e888a142:	00ad9523          	sh	a0,10(s11)
    netif->output(netif, rambuf, dest);
    e888a146:	6662                	ld	a2,24(sp)
    e888a148:	0c0b3703          	ld	a4,192(s6)
    e888a14c:	85e6                	mv	a1,s9
    e888a14e:	855a                	mv	a0,s6
    e888a150:	9702                	jalr	a4
    left = (u16_t)(left - fragsize);
    e888a152:	9c05                	subw	s0,s0,s1
    IPFRAG_STATS_INC(ip_frag.xmit);
    e888a154:	030a5703          	lhu	a4,48(s4)
    pbuf_free(rambuf);
    e888a158:	8566                	mv	a0,s9
    ofo = (u16_t)(ofo + nfb);
    e888a15a:	012989bb          	addw	s3,s3,s2
    IPFRAG_STATS_INC(ip_frag.xmit);
    e888a15e:	2705                	addiw	a4,a4,1
    e888a160:	02ea1823          	sh	a4,48(s4)
    left = (u16_t)(left - fragsize);
    e888a164:	3c04340b          	extu	s0,s0,15,0
    pbuf_free(rambuf);
    e888a168:	0e4050ef          	jal	ra,e888f24c <pbuf_free>
    ofo = (u16_t)(ofo + nfb);
    e888a16c:	3c09b98b          	extu	s3,s3,15,0
    e888a170:	b5c9                	j	e888a032 <ip4_frag+0xb8>

00000000e888a172 <ethip6_output>:
 * @return
 * - ERR_OK or the return value of @ref nd6_get_next_hop_addr_or_queue.
 */
err_t
ethip6_output(struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr)
{
    e888a172:	7179                	addi	sp,sp,-48
    e888a174:	ec22                	sd	s0,24(sp)
    e888a176:	f406                	sd	ra,40(sp)
    e888a178:	f026                	sd	s1,32(sp)

  /* The destination IP address must be properly zoned from here on down. */
  IP6_ADDR_ZONECHECK_NETIF(ip6addr, netif);

  /* multicast destination IP address? */
  if (ip6_addr_ismulticast(ip6addr)) {
    e888a17a:	00064683          	lbu	a3,0(a2)
    e888a17e:	0ff00793          	li	a5,255
{
    e888a182:	842a                	mv	s0,a0
  if (ip6_addr_ismulticast(ip6addr)) {
    e888a184:	02f69763          	bne	a3,a5,e888a1b2 <ethip6_output+0x40>
    /* Hash IP multicast address to MAC address.*/
    dest.addr[0] = 0x33;
    e888a188:	678d                	lui	a5,0x3
    e888a18a:	3337879b          	addiw	a5,a5,819
    e888a18e:	00f11023          	sh	a5,0(sp)
    dest.addr[1] = 0x33;
    dest.addr[2] = ((const u8_t *)(&(ip6addr->addr[3])))[0];
    e888a192:	465c                	lw	a5,12(a2)
    dest.addr[3] = ((const u8_t *)(&(ip6addr->addr[3])))[1];
    dest.addr[4] = ((const u8_t *)(&(ip6addr->addr[3])))[2];
    dest.addr[5] = ((const u8_t *)(&(ip6addr->addr[3])))[3];

    /* Send out. */
    return ethernet_output(netif, q, (const struct eth_addr*)(netif->hwaddr), &dest, ETHTYPE_IPV6);
    e888a194:	6721                	lui	a4,0x8
    e888a196:	6dd70713          	addi	a4,a4,1757 # 86dd <memcmp-0xe87f7923>
    dest.addr[2] = ((const u8_t *)(&(ip6addr->addr[3])))[0];
    e888a19a:	00f12123          	sw	a5,2(sp)
    return ethernet_output(netif, q, (const struct eth_addr*)(netif->hwaddr), &dest, ETHTYPE_IPV6);
    e888a19e:	868a                	mv	a3,sp
    e888a1a0:	10450613          	addi	a2,a0,260
    return ERR_OK;
  }

  /* Send out the packet using the returned hardware address. */
  SMEMCPY(dest.addr, hwaddr, 6);
  return ethernet_output(netif, q, (const struct eth_addr*)(netif->hwaddr), &dest, ETHTYPE_IPV6);
    e888a1a4:	0930d0ef          	jal	ra,e8897a36 <ethernet_output>
}
    e888a1a8:	70a2                	ld	ra,40(sp)
    e888a1aa:	6462                	ld	s0,24(sp)
    e888a1ac:	7482                	ld	s1,32(sp)
    e888a1ae:	6145                	addi	sp,sp,48
    e888a1b0:	8082                	ret
  result = nd6_get_next_hop_addr_or_queue(netif, q, ip6addr, &hwaddr);
    e888a1b2:	0034                	addi	a3,sp,8
    e888a1b4:	84ae                	mv	s1,a1
    e888a1b6:	031030ef          	jal	ra,e888d9e6 <nd6_get_next_hop_addr_or_queue>
  if (result != ERR_OK) {
    e888a1ba:	f57d                	bnez	a0,e888a1a8 <ethip6_output+0x36>
  if (hwaddr == NULL) {
    e888a1bc:	65a2                	ld	a1,8(sp)
    e888a1be:	d5ed                	beqz	a1,e888a1a8 <ethip6_output+0x36>
  SMEMCPY(dest.addr, hwaddr, 6);
    e888a1c0:	4619                	li	a2,6
    e888a1c2:	850a                	mv	a0,sp
    e888a1c4:	9dcf20ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  return ethernet_output(netif, q, (const struct eth_addr*)(netif->hwaddr), &dest, ETHTYPE_IPV6);
    e888a1c8:	6721                	lui	a4,0x8
    e888a1ca:	6dd70713          	addi	a4,a4,1757 # 86dd <memcmp-0xe87f7923>
    e888a1ce:	868a                	mv	a3,sp
    e888a1d0:	10440613          	addi	a2,s0,260
    e888a1d4:	85a6                	mv	a1,s1
    e888a1d6:	8522                	mv	a0,s0
    e888a1d8:	b7f1                	j	e888a1a4 <ethip6_output+0x32>

00000000e888a1da <ip6_input_accept>:
/** Return true if the current input packet should be accepted on this netif */
static int
ip6_input_accept(struct netif *netif)
{
  /* interface is up? */
  if (netif_is_up(netif)) {
    e888a1da:	10b54783          	lbu	a5,267(a0)
    e888a1de:	8b85                	andi	a5,a5,1
    e888a1e0:	cbb1                	beqz	a5,e888a234 <ip6_input_accept+0x5a>
    /* If custom scopes are used, the destination zone will be tested as
      * part of the local-address comparison, but we need to test the source
      * scope as well (e.g., is this interface on the same link?). */
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
      if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
          ip6_addr_cmp(ip6_current_dest_addr(), netif_ip6_addr(netif, i))
    e888a1e2:	0005c797          	auipc	a5,0x5c
    e888a1e6:	96678793          	addi	a5,a5,-1690 # e88e5b48 <ip_data>
    e888a1ea:	5fd0                	lw	a2,60(a5)
    e888a1ec:	43ac                	lw	a1,64(a5)
    e888a1ee:	0447a803          	lw	a6,68(a5)
    e888a1f2:	0487a883          	lw	a7,72(a5)
    e888a1f6:	04c7c303          	lbu	t1,76(a5)
    e888a1fa:	09850793          	addi	a5,a0,152
    e888a1fe:	86be                	mv	a3,a5
    e888a200:	05050513          	addi	a0,a0,80
      if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
    e888a204:	0007c703          	lbu	a4,0(a5)
    e888a208:	8b41                	andi	a4,a4,16
    e888a20a:	c30d                	beqz	a4,e888a22c <ip6_input_accept+0x52>
    e888a20c:	4118                	lw	a4,0(a0)
    e888a20e:	00c71f63          	bne	a4,a2,e888a22c <ip6_input_accept+0x52>
          ip6_addr_cmp(ip6_current_dest_addr(), netif_ip6_addr(netif, i))
    e888a212:	4158                	lw	a4,4(a0)
    e888a214:	00b71c63          	bne	a4,a1,e888a22c <ip6_input_accept+0x52>
    e888a218:	4518                	lw	a4,8(a0)
    e888a21a:	01071963          	bne	a4,a6,e888a22c <ip6_input_accept+0x52>
    e888a21e:	4558                	lw	a4,12(a0)
    e888a220:	01171663          	bne	a4,a7,e888a22c <ip6_input_accept+0x52>
    e888a224:	01054703          	lbu	a4,16(a0)
    e888a228:	00670863          	beq	a4,t1,e888a238 <ip6_input_accept+0x5e>
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888a22c:	0561                	addi	a0,a0,24
    e888a22e:	0785                	addi	a5,a5,1
    e888a230:	fcd51ae3          	bne	a0,a3,e888a204 <ip6_input_accept+0x2a>
        /* accept on this netif */
        return 1;
      }
    }
  }
  return 0;
    e888a234:	4501                	li	a0,0
    e888a236:	8082                	ret
        return 1;
    e888a238:	4505                	li	a0,1
}
    e888a23a:	8082                	ret

00000000e888a23c <ip6_route>:
{
    e888a23c:	1101                	addi	sp,sp,-32
    e888a23e:	e826                	sd	s1,16(sp)
  if ((netif_list != NULL) && (netif_list->next == NULL)) {
    e888a240:	0005c497          	auipc	s1,0x5c
    e888a244:	1f848493          	addi	s1,s1,504 # e88e6438 <netif_list>
{
    e888a248:	e422                	sd	s0,8(sp)
    e888a24a:	842a                	mv	s0,a0
  if ((netif_list != NULL) && (netif_list->next == NULL)) {
    e888a24c:	6088                	ld	a0,0(s1)
{
    e888a24e:	ec06                	sd	ra,24(sp)
  if ((netif_list != NULL) && (netif_list->next == NULL)) {
    e888a250:	c905                	beqz	a0,e888a280 <ip6_route+0x44>
    e888a252:	6118                	ld	a4,0(a0)
    e888a254:	e715                	bnez	a4,e888a280 <ip6_route+0x44>
    if (!netif_is_up(netif_list) || !netif_is_link_up(netif_list) ||
    e888a256:	10b54783          	lbu	a5,267(a0)
    e888a25a:	4715                	li	a4,5
    e888a25c:	8b95                	andi	a5,a5,5
    e888a25e:	0ce79263          	bne	a5,a4,e888a322 <ip6_route+0xe6>
        (ip6_addr_has_zone(dest) && !ip6_addr_test_zone(dest, netif_list))) {
    e888a262:	0105c703          	lbu	a4,16(a1)
    if (!netif_is_up(netif_list) || !netif_is_link_up(netif_list) ||
    e888a266:	cb01                	beqz	a4,e888a276 <ip6_route+0x3a>
        (ip6_addr_has_zone(dest) && !ip6_addr_test_zone(dest, netif_list))) {
    e888a268:	10e54783          	lbu	a5,270(a0)
    e888a26c:	2785                	addiw	a5,a5,1
    e888a26e:	0ff7f793          	andi	a5,a5,255
  if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default)) {
    e888a272:	0ae79863          	bne	a5,a4,e888a322 <ip6_route+0xe6>
}
    e888a276:	60e2                	ld	ra,24(sp)
    e888a278:	6422                	ld	s0,8(sp)
    e888a27a:	64c2                	ld	s1,16(sp)
    e888a27c:	6105                	addi	sp,sp,32
    e888a27e:	8082                	ret
  if (ip6_addr_has_zone(dest)) {
    e888a280:	0105c703          	lbu	a4,16(a1)
    e888a284:	ef51                	bnez	a4,e888a320 <ip6_route+0xe4>
  if (ip6_addr_has_scope(dest, IP6_UNKNOWN) ||
    e888a286:	0005a803          	lw	a6,0(a1)
    e888a28a:	66b1                	lui	a3,0xc
    e888a28c:	0ff68693          	addi	a3,a3,255 # c0ff <memcmp-0xe87f3f01>
    e888a290:	6621                	lui	a2,0x8
    e888a292:	00d87733          	and	a4,a6,a3
    e888a296:	0fe60613          	addi	a2,a2,254 # 80fe <memcmp-0xe87f7f02>
    e888a29a:	02c70d63          	beq	a4,a2,e888a2d4 <ip6_route+0x98>
    e888a29e:	6725                	lui	a4,0x9
    e888a2a0:	177d                	addi	a4,a4,-1
    e888a2a2:	00e87733          	and	a4,a6,a4
    e888a2a6:	e017071b          	addiw	a4,a4,-511
    e888a2aa:	eff77713          	andi	a4,a4,-257
    e888a2ae:	2701                	sext.w	a4,a4
    e888a2b0:	c315                	beqz	a4,e888a2d4 <ip6_route+0x98>
      ip6_addr_has_scope(src, IP6_UNICAST) ||
    e888a2b2:	4018                	lw	a4,0(s0)
  if (ip6_addr_has_scope(dest, IP6_UNKNOWN) ||
    e888a2b4:	8ef9                	and	a3,a3,a4
    e888a2b6:	00c68f63          	beq	a3,a2,e888a2d4 <ip6_route+0x98>
      ip6_addr_has_scope(src, IP6_UNICAST) ||
    e888a2ba:	14071a63          	bnez	a4,e888a40e <ip6_route+0x1d2>
      ip6_addr_isloopback(src)) {
    e888a2be:	4058                	lw	a4,4(s0)
    e888a2c0:	14071763          	bnez	a4,e888a40e <ip6_route+0x1d2>
    e888a2c4:	4418                	lw	a4,8(s0)
    e888a2c6:	14071463          	bnez	a4,e888a40e <ip6_route+0x1d2>
    e888a2ca:	4454                	lw	a3,12(s0)
    e888a2cc:	01000737          	lui	a4,0x1000
    e888a2d0:	12e69f63          	bne	a3,a4,e888a40e <ip6_route+0x1d2>
    if (ip6_addr_has_zone(src)) {
    e888a2d4:	01044703          	lbu	a4,16(s0)
        if (!netif_is_up(netif) || !netif_is_link_up(netif)) {
    e888a2d8:	4595                	li	a1,5
    if (ip6_addr_has_zone(src)) {
    e888a2da:	cf49                	beqz	a4,e888a374 <ip6_route+0x138>
      NETIF_FOREACH(netif) {
    e888a2dc:	c139                	beqz	a0,e888a322 <ip6_route+0xe6>
        if (netif_is_up(netif) && netif_is_link_up(netif) &&
    e888a2de:	10b54783          	lbu	a5,267(a0)
    e888a2e2:	0017f693          	andi	a3,a5,1
    e888a2e6:	ca99                	beqz	a3,e888a2fc <ip6_route+0xc0>
    e888a2e8:	0827b78b          	extu	a5,a5,2,2
    e888a2ec:	cb81                	beqz	a5,e888a2fc <ip6_route+0xc0>
            ip6_addr_test_zone(src, netif)) {
    e888a2ee:	10e54783          	lbu	a5,270(a0)
    e888a2f2:	2785                	addiw	a5,a5,1
        if (netif_is_up(netif) && netif_is_link_up(netif) &&
    e888a2f4:	0ff7f793          	andi	a5,a5,255
    e888a2f8:	f6f70fe3          	beq	a4,a5,e888a276 <ip6_route+0x3a>
      NETIF_FOREACH(netif) {
    e888a2fc:	6108                	ld	a0,0(a0)
    e888a2fe:	bff9                	j	e888a2dc <ip6_route+0xa0>
      if (ip6_addr_test_zone(dest, netif) &&
    e888a300:	10e54783          	lbu	a5,270(a0)
    e888a304:	2785                	addiw	a5,a5,1
    e888a306:	0ff7f793          	andi	a5,a5,255
    e888a30a:	00f71a63          	bne	a4,a5,e888a31e <ip6_route+0xe2>
          netif_is_up(netif) && netif_is_link_up(netif)) {
    e888a30e:	10b54783          	lbu	a5,267(a0)
      if (ip6_addr_test_zone(dest, netif) &&
    e888a312:	0017f693          	andi	a3,a5,1
    e888a316:	c681                	beqz	a3,e888a31e <ip6_route+0xe2>
          netif_is_up(netif) && netif_is_link_up(netif)) {
    e888a318:	0827b78b          	extu	a5,a5,2,2
    e888a31c:	ffa9                	bnez	a5,e888a276 <ip6_route+0x3a>
    NETIF_FOREACH(netif) {
    e888a31e:	6108                	ld	a0,0(a0)
    e888a320:	f165                	bnez	a0,e888a300 <ip6_route+0xc4>
    return NULL;
    e888a322:	4501                	li	a0,0
    e888a324:	bf89                	j	e888a276 <ip6_route+0x3a>
        if (!netif_is_up(netif) || !netif_is_link_up(netif)) {
    e888a326:	10b54703          	lbu	a4,267(a0)
    e888a32a:	8b15                	andi	a4,a4,5
    e888a32c:	04b71363          	bne	a4,a1,e888a372 <ip6_route+0x136>
    e888a330:	09850693          	addi	a3,a0,152
    e888a334:	05050713          	addi	a4,a0,80
    e888a338:	8836                	mv	a6,a3
          if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
    e888a33a:	0006c603          	lbu	a2,0(a3)
    e888a33e:	8a41                	andi	a2,a2,16
    e888a340:	c60d                	beqz	a2,e888a36a <ip6_route+0x12e>
    e888a342:	00042883          	lw	a7,0(s0)
    e888a346:	4310                	lw	a2,0(a4)
    e888a348:	02c89163          	bne	a7,a2,e888a36a <ip6_route+0x12e>
              ip6_addr_cmp_zoneless(src, netif_ip6_addr(netif, i))) {
    e888a34c:	00442883          	lw	a7,4(s0)
    e888a350:	4350                	lw	a2,4(a4)
    e888a352:	00c89c63          	bne	a7,a2,e888a36a <ip6_route+0x12e>
    e888a356:	00842883          	lw	a7,8(s0)
    e888a35a:	4710                	lw	a2,8(a4)
    e888a35c:	00c89763          	bne	a7,a2,e888a36a <ip6_route+0x12e>
    e888a360:	00c42883          	lw	a7,12(s0)
    e888a364:	4750                	lw	a2,12(a4)
    e888a366:	f0c888e3          	beq	a7,a2,e888a276 <ip6_route+0x3a>
        for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888a36a:	0761                	addi	a4,a4,24
    e888a36c:	0685                	addi	a3,a3,1
    e888a36e:	fce816e3          	bne	a6,a4,e888a33a <ip6_route+0xfe>
      NETIF_FOREACH(netif) {
    e888a372:	6108                	ld	a0,0(a0)
    e888a374:	f94d                	bnez	a0,e888a326 <ip6_route+0xea>
    e888a376:	b775                	j	e888a322 <ip6_route+0xe6>
    if (!netif_is_up(netif) || !netif_is_link_up(netif)) {
    e888a378:	10b54703          	lbu	a4,267(a0)
    e888a37c:	8b15                	andi	a4,a4,5
    e888a37e:	05171a63          	bne	a4,a7,e888a3d2 <ip6_route+0x196>
    e888a382:	05050713          	addi	a4,a0,80
    e888a386:	4681                	li	a3,0
      if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
    e888a388:	09850e13          	addi	t3,a0,152
          (netif_ip6_addr_isstatic(netif, i) ||
    e888a38c:	09c50e93          	addi	t4,a0,156
      if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
    e888a390:	80de460b          	lrbu	a2,t3,a3,0
    e888a394:	8a41                	andi	a2,a2,16
    e888a396:	ca15                	beqz	a2,e888a3ca <ip6_route+0x18e>
    e888a398:	4310                	lw	a2,0(a4)
    e888a39a:	03061863          	bne	a2,a6,e888a3ca <ip6_route+0x18e>
          ip6_addr_netcmp(dest, netif_ip6_addr(netif, i)) &&
    e888a39e:	0045af03          	lw	t5,4(a1)
    e888a3a2:	4350                	lw	a2,4(a4)
    e888a3a4:	02cf1363          	bne	t5,a2,e888a3ca <ip6_route+0x18e>
    e888a3a8:	01074603          	lbu	a2,16(a4) # 1000010 <memcmp-0xe77ffff0>
    e888a3ac:	ee19                	bnez	a2,e888a3ca <ip6_route+0x18e>
          (netif_ip6_addr_isstatic(netif, i) ||
    e888a3ae:	44dec60b          	lrw	a2,t4,a3,2
    e888a3b2:	ec0602e3          	beqz	a2,e888a276 <ip6_route+0x3a>
    e888a3b6:	0085af03          	lw	t5,8(a1)
    e888a3ba:	4710                	lw	a2,8(a4)
    e888a3bc:	00cf1763          	bne	t5,a2,e888a3ca <ip6_route+0x18e>
          ip6_addr_nethostcmp(dest, netif_ip6_addr(netif, i)))) {
    e888a3c0:	00c5af03          	lw	t5,12(a1)
    e888a3c4:	4750                	lw	a2,12(a4)
    e888a3c6:	eacf08e3          	beq	t5,a2,e888a276 <ip6_route+0x3a>
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888a3ca:	0685                	addi	a3,a3,1
    e888a3cc:	0761                	addi	a4,a4,24
    e888a3ce:	fc6691e3          	bne	a3,t1,e888a390 <ip6_route+0x154>
  NETIF_FOREACH(netif) {
    e888a3d2:	6108                	ld	a0,0(a0)
    e888a3d4:	f155                	bnez	a0,e888a378 <ip6_route+0x13c>
    e888a3d6:	852e                	mv	a0,a1
  netif = nd6_find_route(dest);
    e888a3d8:	55a030ef          	jal	ra,e888d932 <nd6_find_route>
  if (netif != NULL) {
    e888a3dc:	e8051de3          	bnez	a0,e888a276 <ip6_route+0x3a>
  if (!ip6_addr_isany(src)) {
    e888a3e0:	cc01                	beqz	s0,e888a3f8 <ip6_route+0x1bc>
    e888a3e2:	4010                	lw	a2,0(s0)
    e888a3e4:	e619                	bnez	a2,e888a3f2 <ip6_route+0x1b6>
    e888a3e6:	405c                	lw	a5,4(s0)
    e888a3e8:	e789                	bnez	a5,e888a3f2 <ip6_route+0x1b6>
    e888a3ea:	441c                	lw	a5,8(s0)
    e888a3ec:	e399                	bnez	a5,e888a3f2 <ip6_route+0x1b6>
    e888a3ee:	445c                	lw	a5,12(s0)
    e888a3f0:	c781                	beqz	a5,e888a3f8 <ip6_route+0x1bc>
    NETIF_FOREACH(netif) {
    e888a3f2:	6088                	ld	a0,0(s1)
      if (!netif_is_up(netif) || !netif_is_link_up(netif)) {
    e888a3f4:	4595                	li	a1,5
    NETIF_FOREACH(netif) {
    e888a3f6:	ed19                	bnez	a0,e888a414 <ip6_route+0x1d8>
  if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default)) {
    e888a3f8:	0005c797          	auipc	a5,0x5c
    e888a3fc:	03878793          	addi	a5,a5,56 # e88e6430 <netif_default>
    e888a400:	6388                	ld	a0,0(a5)
    e888a402:	d105                	beqz	a0,e888a322 <ip6_route+0xe6>
    e888a404:	10b54783          	lbu	a5,267(a0)
    e888a408:	4715                	li	a4,5
    e888a40a:	8b95                	andi	a5,a5,5
    e888a40c:	b59d                	j	e888a272 <ip6_route+0x36>
    if (!netif_is_up(netif) || !netif_is_link_up(netif)) {
    e888a40e:	4895                	li	a7,5
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888a410:	430d                	li	t1,3
    e888a412:	b7c9                	j	e888a3d4 <ip6_route+0x198>
      if (!netif_is_up(netif) || !netif_is_link_up(netif)) {
    e888a414:	10b54783          	lbu	a5,267(a0)
    e888a418:	8b95                	andi	a5,a5,5
    e888a41a:	04b79763          	bne	a5,a1,e888a468 <ip6_route+0x22c>
    e888a41e:	09850713          	addi	a4,a0,152
    e888a422:	05050793          	addi	a5,a0,80
    e888a426:	883a                	mv	a6,a4
        if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
    e888a428:	00074683          	lbu	a3,0(a4)
    e888a42c:	8ac1                	andi	a3,a3,16
    e888a42e:	ca8d                	beqz	a3,e888a460 <ip6_route+0x224>
    e888a430:	4394                	lw	a3,0(a5)
    e888a432:	02c69763          	bne	a3,a2,e888a460 <ip6_route+0x224>
            ip6_addr_cmp(src, netif_ip6_addr(netif, i))) {
    e888a436:	00442883          	lw	a7,4(s0)
    e888a43a:	43d4                	lw	a3,4(a5)
    e888a43c:	02d89263          	bne	a7,a3,e888a460 <ip6_route+0x224>
    e888a440:	00842883          	lw	a7,8(s0)
    e888a444:	4794                	lw	a3,8(a5)
    e888a446:	00d89d63          	bne	a7,a3,e888a460 <ip6_route+0x224>
    e888a44a:	00c42883          	lw	a7,12(s0)
    e888a44e:	47d4                	lw	a3,12(a5)
    e888a450:	00d89863          	bne	a7,a3,e888a460 <ip6_route+0x224>
    e888a454:	01044883          	lbu	a7,16(s0)
    e888a458:	0107c683          	lbu	a3,16(a5)
    e888a45c:	e0d88de3          	beq	a7,a3,e888a276 <ip6_route+0x3a>
      for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888a460:	07e1                	addi	a5,a5,24
    e888a462:	0705                	addi	a4,a4,1
    e888a464:	fd0792e3          	bne	a5,a6,e888a428 <ip6_route+0x1ec>
    NETIF_FOREACH(netif) {
    e888a468:	6108                	ld	a0,0(a0)
    e888a46a:	b771                	j	e888a3f6 <ip6_route+0x1ba>

00000000e888a46c <ip6_select_source_address>:
{
    e888a46c:	715d                	addi	sp,sp,-80
    e888a46e:	e0a2                	sd	s0,64(sp)
    e888a470:	e486                	sd	ra,72(sp)
    e888a472:	fc26                	sd	s1,56(sp)
    e888a474:	f84a                	sd	s2,48(sp)
    e888a476:	f44e                	sd	s3,40(sp)
    e888a478:	f052                	sd	s4,32(sp)
    e888a47a:	ec56                	sd	s5,24(sp)
    e888a47c:	e85a                	sd	s6,16(sp)
    e888a47e:	842a                	mv	s0,a0
  if (ip6_addr_isglobal(dest)) {
    e888a480:	4188                	lw	a0,0(a1)
    e888a482:	02000793          	li	a5,32
    dest_scope = IP6_MULTICAST_SCOPE_GLOBAL;
    e888a486:	4eb9                	li	t4,14
  if (ip6_addr_isglobal(dest)) {
    e888a488:	0e057713          	andi	a4,a0,224
    e888a48c:	04f70c63          	beq	a4,a5,e888a4e4 <ip6_select_source_address+0x78>
  } else if (ip6_addr_islinklocal(dest) || ip6_addr_isloopback(dest)) {
    e888a490:	67b1                	lui	a5,0xc
    e888a492:	0ff78713          	addi	a4,a5,255 # c0ff <memcmp-0xe87f3f01>
    e888a496:	66a1                	lui	a3,0x8
    e888a498:	8f69                	and	a4,a4,a0
    e888a49a:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    dest_scope = IP6_MULTICAST_SCOPE_LINK_LOCAL;
    e888a49e:	4e89                	li	t4,2
  } else if (ip6_addr_islinklocal(dest) || ip6_addr_isloopback(dest)) {
    e888a4a0:	04d70263          	beq	a4,a3,e888a4e4 <ip6_select_source_address+0x78>
    e888a4a4:	ed09                	bnez	a0,e888a4be <ip6_select_source_address+0x52>
    e888a4a6:	41dc                	lw	a5,4(a1)
    dest_scope = IP6_MULTICAST_SCOPE_GLOBAL;
    e888a4a8:	4eb9                	li	t4,14
  } else if (ip6_addr_islinklocal(dest) || ip6_addr_isloopback(dest)) {
    e888a4aa:	ef8d                	bnez	a5,e888a4e4 <ip6_select_source_address+0x78>
    e888a4ac:	459c                	lw	a5,8(a1)
    e888a4ae:	eb9d                	bnez	a5,e888a4e4 <ip6_select_source_address+0x78>
    e888a4b0:	45d8                	lw	a4,12(a1)
    e888a4b2:	010007b7          	lui	a5,0x1000
    e888a4b6:	02f71763          	bne	a4,a5,e888a4e4 <ip6_select_source_address+0x78>
    dest_scope = IP6_MULTICAST_SCOPE_LINK_LOCAL;
    e888a4ba:	4e89                	li	t4,2
    e888a4bc:	a025                	j	e888a4e4 <ip6_select_source_address+0x78>
  } else if (ip6_addr_isuniquelocal(dest)) {
    e888a4be:	0fe57693          	andi	a3,a0,254
    e888a4c2:	0fc00613          	li	a2,252
    dest_scope = IP6_MULTICAST_SCOPE_ORGANIZATION_LOCAL;
    e888a4c6:	4ea1                	li	t4,8
  } else if (ip6_addr_isuniquelocal(dest)) {
    e888a4c8:	00c68e63          	beq	a3,a2,e888a4e4 <ip6_select_source_address+0x78>
  } else if (ip6_addr_ismulticast(dest)) {
    e888a4cc:	0ff57693          	andi	a3,a0,255
    e888a4d0:	0ff00613          	li	a2,255
    e888a4d4:	0cc69163          	bne	a3,a2,e888a596 <ip6_select_source_address+0x12a>
    e888a4d8:	e42e                	sd	a1,8(sp)
    dest_scope = ip6_addr_multicast_scope(dest);
    e888a4da:	a55fc0ef          	jal	ra,e8886f2e <lwip_htonl>
    e888a4de:	4d053e8b          	extu	t4,a0,19,16
    e888a4e2:	65a2                	ld	a1,8(sp)
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888a4e4:	6731                	lui	a4,0xc
    } else if (ip6_addr_islinklocal(cand_addr)) {
    e888a4e6:	64a1                	lui	s1,0x8
    e888a4e8:	05040793          	addi	a5,s0,80
    dest_scope = IP6_MULTICAST_SCOPE_GLOBAL;
    e888a4ec:	4381                	li	t2,0
  u8_t best_bits = 0;
    e888a4ee:	4281                	li	t0,0
  u8_t best_pref = 0;
    e888a4f0:	4f81                	li	t6,0
  s8_t best_scope = IP6_MULTICAST_SCOPE_RESERVED;
    e888a4f2:	4f01                	li	t5,0
  best_addr = NULL;
    e888a4f4:	4501                	li	a0,0
    if (!ip6_addr_isvalid(netif_ip6_addr_state(netif, i))) {
    e888a4f6:	09840913          	addi	s2,s0,152
    if (ip6_addr_isglobal(cand_addr)) {
    e888a4fa:	02000993          	li	s3,32
    e888a4fe:	0ff70a13          	addi	s4,a4,255 # c0ff <memcmp-0xe87f3f01>
    } else if (ip6_addr_islinklocal(cand_addr)) {
    e888a502:	0fe48493          	addi	s1,s1,254 # 80fe <memcmp-0xe87f7f02>
    } else if (ip6_addr_isuniquelocal(cand_addr)) {
    e888a506:	0fc00a93          	li	s5,252
    } else if (ip6_addr_issitelocal(cand_addr)) {
    e888a50a:	0fe70313          	addi	t1,a4,254
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888a50e:	4e0d                	li	t3,3
    if (!ip6_addr_isvalid(netif_ip6_addr_state(netif, i))) {
    e888a510:	8079470b          	lrbu	a4,s2,t2,0
    e888a514:	00038b1b          	sext.w	s6,t2
    e888a518:	01077693          	andi	a3,a4,16
    e888a51c:	cac9                	beqz	a3,e888a5ae <ip6_select_source_address+0x142>
    if (ip6_addr_isglobal(cand_addr)) {
    e888a51e:	4390                	lw	a2,0(a5)
      cand_scope = IP6_MULTICAST_SCOPE_GLOBAL;
    e888a520:	4839                	li	a6,14
    if (ip6_addr_isglobal(cand_addr)) {
    e888a522:	0e067693          	andi	a3,a2,224
    e888a526:	03368063          	beq	a3,s3,e888a546 <ip6_select_source_address+0xda>
    } else if (ip6_addr_islinklocal(cand_addr)) {
    e888a52a:	014678b3          	and	a7,a2,s4
      cand_scope = IP6_MULTICAST_SCOPE_LINK_LOCAL;
    e888a52e:	4809                	li	a6,2
    } else if (ip6_addr_islinklocal(cand_addr)) {
    e888a530:	00988b63          	beq	a7,s1,e888a546 <ip6_select_source_address+0xda>
    } else if (ip6_addr_isuniquelocal(cand_addr)) {
    e888a534:	0fe67693          	andi	a3,a2,254
      cand_scope = IP6_MULTICAST_SCOPE_ORGANIZATION_LOCAL;
    e888a538:	4821                	li	a6,8
    } else if (ip6_addr_isuniquelocal(cand_addr)) {
    e888a53a:	01568663          	beq	a3,s5,e888a546 <ip6_select_source_address+0xda>
      cand_scope = IP6_MULTICAST_SCOPE_SITE_LOCAL;
    e888a53e:	4815                	li	a6,5
    } else if (ip6_addr_issitelocal(cand_addr)) {
    e888a540:	00688363          	beq	a7,t1,e888a546 <ip6_select_source_address+0xda>
      cand_scope = IP6_MULTICAST_SCOPE_RESERVEDF;
    e888a544:	483d                	li	a6,15
    cand_bits = ip6_addr_netcmp_zoneless(cand_addr, dest); /* just 1 or 0 for now */
    e888a546:	0005a883          	lw	a7,0(a1)
    cand_pref = ip6_addr_ispreferred(netif_ip6_addr_state(netif, i));
    e888a54a:	fd070713          	addi	a4,a4,-48
    e888a54e:	00173713          	seqz	a4,a4
    cand_bits = ip6_addr_netcmp_zoneless(cand_addr, dest); /* just 1 or 0 for now */
    e888a552:	4681                	li	a3,0
    e888a554:	04c89863          	bne	a7,a2,e888a5a4 <ip6_select_source_address+0x138>
    e888a558:	0047a883          	lw	a7,4(a5) # 1000004 <memcmp-0xe77ffffc>
    e888a55c:	41d0                	lw	a2,4(a1)
    e888a55e:	04c89363          	bne	a7,a2,e888a5a4 <ip6_select_source_address+0x138>
    if (cand_bits && ip6_addr_nethostcmp(cand_addr, dest)) {
    e888a562:	0087a883          	lw	a7,8(a5)
    e888a566:	4590                	lw	a2,8(a1)
    cand_bits = ip6_addr_netcmp_zoneless(cand_addr, dest); /* just 1 or 0 for now */
    e888a568:	4685                	li	a3,1
    if (cand_bits && ip6_addr_nethostcmp(cand_addr, dest)) {
    e888a56a:	02c89d63          	bne	a7,a2,e888a5a4 <ip6_select_source_address+0x138>
    e888a56e:	00c7a883          	lw	a7,12(a5)
    e888a572:	45d0                	lw	a2,12(a1)
    e888a574:	02c89863          	bne	a7,a2,e888a5a4 <ip6_select_source_address+0x138>
      return netif_ip_addr6(netif, i); /* Rule 1 */
    e888a578:	47e1                	li	a5,24
    e888a57a:	20fb140b          	mula	s0,s6,a5
    e888a57e:	05040513          	addi	a0,s0,80
}
    e888a582:	60a6                	ld	ra,72(sp)
    e888a584:	6406                	ld	s0,64(sp)
    e888a586:	74e2                	ld	s1,56(sp)
    e888a588:	7942                	ld	s2,48(sp)
    e888a58a:	79a2                	ld	s3,40(sp)
    e888a58c:	7a02                	ld	s4,32(sp)
    e888a58e:	6ae2                	ld	s5,24(sp)
    e888a590:	6b42                	ld	s6,16(sp)
    e888a592:	6161                	addi	sp,sp,80
    e888a594:	8082                	ret
  } else if (ip6_addr_issitelocal(dest)) {
    e888a596:	0fe78793          	addi	a5,a5,254
    dest_scope = IP6_MULTICAST_SCOPE_GLOBAL;
    e888a59a:	4eb9                	li	t4,14
  } else if (ip6_addr_issitelocal(dest)) {
    e888a59c:	f4f714e3          	bne	a4,a5,e888a4e4 <ip6_select_source_address+0x78>
    dest_scope = IP6_MULTICAST_SCOPE_SITE_LOCAL;
    e888a5a0:	4e95                	li	t4,5
    e888a5a2:	b789                	j	e888a4e4 <ip6_select_source_address+0x78>
    if ((best_addr == NULL) || /* no alternative yet */
    e888a5a4:	cd11                	beqz	a0,e888a5c0 <ip6_select_source_address+0x154>
    e888a5a6:	01e85963          	bge	a6,t5,e888a5b8 <ip6_select_source_address+0x14c>
        ((cand_scope < best_scope) && (cand_scope >= dest_scope)) ||
    e888a5aa:	01d85b63          	bge	a6,t4,e888a5c0 <ip6_select_source_address+0x154>
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888a5ae:	0385                	addi	t2,t2,1
    e888a5b0:	07e1                	addi	a5,a5,24
    e888a5b2:	f5c39fe3          	bne	t2,t3,e888a510 <ip6_select_source_address+0xa4>
    e888a5b6:	b7f1                	j	e888a582 <ip6_select_source_address+0x116>
        ((cand_scope < best_scope) && (cand_scope >= dest_scope)) ||
    e888a5b8:	010f5963          	bge	t5,a6,e888a5ca <ip6_select_source_address+0x15e>
        ((cand_scope > best_scope) && (best_scope < dest_scope)) || /* Rule 2 */
    e888a5bc:	ffdf59e3          	bge	t5,t4,e888a5ae <ip6_select_source_address+0x142>
    e888a5c0:	82b6                	mv	t0,a3
    cand_pref = ip6_addr_ispreferred(netif_ip6_addr_state(netif, i));
    e888a5c2:	8fba                	mv	t6,a4
    e888a5c4:	8f42                	mv	t5,a6
      best_addr = netif_ip_addr6(netif, i);
    e888a5c6:	853e                	mv	a0,a5
    e888a5c8:	b7dd                	j	e888a5ae <ip6_select_source_address+0x142>
        ((cand_scope > best_scope) && (best_scope < dest_scope)) || /* Rule 2 */
    e888a5ca:	ffe812e3          	bne	a6,t5,e888a5ae <ip6_select_source_address+0x142>
        ((cand_scope == best_scope) && ((cand_pref > best_pref) || /* Rule 3 */
    e888a5ce:	00efe863          	bltu	t6,a4,e888a5de <ip6_select_source_address+0x172>
    e888a5d2:	fdf71ee3          	bne	a4,t6,e888a5ae <ip6_select_source_address+0x142>
        ((cand_pref == best_pref) && (cand_bits > best_bits))))) { /* Rule 8 */
    e888a5d6:	fcd2fce3          	bgeu	t0,a3,e888a5ae <ip6_select_source_address+0x142>
    e888a5da:	82b6                	mv	t0,a3
    e888a5dc:	b7ed                	j	e888a5c6 <ip6_select_source_address+0x15a>
    e888a5de:	82b6                	mv	t0,a3
    cand_pref = ip6_addr_ispreferred(netif_ip6_addr_state(netif, i));
    e888a5e0:	8fba                	mv	t6,a4
    e888a5e2:	b7d5                	j	e888a5c6 <ip6_select_source_address+0x15a>

00000000e888a5e4 <ip6_input>:
 * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't
 *         processed, but currently always returns ERR_OK)
 */
err_t
ip6_input(struct pbuf *p, struct netif *inp)
{
    e888a5e4:	711d                	addi	sp,sp,-96
    e888a5e6:	e0ca                	sd	s2,64(sp)
  raw_input_state_t raw_status;
#endif /* LWIP_RAW */

  LWIP_ASSERT_CORE_LOCKED();

  IP6_STATS_INC(ip6.recv);
    e888a5e8:	0005c917          	auipc	s2,0x5c
    e888a5ec:	e6890913          	addi	s2,s2,-408 # e88e6450 <lwip_stats>
{
    e888a5f0:	e8a2                	sd	s0,80(sp)
    e888a5f2:	f852                	sd	s4,48(sp)
    e888a5f4:	f05a                	sd	s6,32(sp)
    e888a5f6:	ec86                	sd	ra,88(sp)
    e888a5f8:	e4a6                	sd	s1,72(sp)
    e888a5fa:	fc4e                	sd	s3,56(sp)
    e888a5fc:	f456                	sd	s5,40(sp)
    e888a5fe:	ec5e                	sd	s7,24(sp)
    e888a600:	e862                	sd	s8,16(sp)
    e888a602:	e466                	sd	s9,8(sp)
    e888a604:	e06a                	sd	s10,0(sp)
  IP6_STATS_INC(ip6.recv);
    e888a606:	0d895783          	lhu	a5,216(s2)
{
    e888a60a:	842a                	mv	s0,a0
    e888a60c:	8b2e                	mv	s6,a1
  IP6_STATS_INC(ip6.recv);
    e888a60e:	2785                	addiw	a5,a5,1
    e888a610:	0cf91c23          	sh	a5,216(s2)

  /* identify the IP header */
  ip6hdr = (struct ip6_hdr *)p->payload;
    e888a614:	00853a83          	ld	s5,8(a0)
  if (IP6H_V(ip6hdr) != 6) {
    e888a618:	000aa503          	lw	a0,0(s5)
    e888a61c:	913fc0ef          	jal	ra,e8886f2e <lwip_htonl>
    e888a620:	7dc53a0b          	extu	s4,a0,31,28
    e888a624:	4799                	li	a5,6
    e888a626:	02fa0e63          	beq	s4,a5,e888a662 <ip6_input+0x7e>
    LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IPv6 packet dropped due to bad version number %"U32_F"\n",
        IP6H_V(ip6hdr)));
    pbuf_free(p);
    e888a62a:	8522                	mv	a0,s0
    e888a62c:	421040ef          	jal	ra,e888f24c <pbuf_free>
    IP6_STATS_INC(ip6.err);
    e888a630:	0ea95783          	lhu	a5,234(s2)
    e888a634:	2785                	addiw	a5,a5,1
    e888a636:	0ef91523          	sh	a5,234(s2)
    IP6_STATS_INC(ip6.drop);
    e888a63a:	0dc95783          	lhu	a5,220(s2)
    e888a63e:	2785                	addiw	a5,a5,1
    e888a640:	0cf91e23          	sh	a5,220(s2)
  ip_data.current_ip_header_tot_len = 0;
  ip6_addr_set_zero(ip6_current_src_addr());
  ip6_addr_set_zero(ip6_current_dest_addr());

  return ERR_OK;
}
    e888a644:	60e6                	ld	ra,88(sp)
    e888a646:	6446                	ld	s0,80(sp)
    e888a648:	64a6                	ld	s1,72(sp)
    e888a64a:	6906                	ld	s2,64(sp)
    e888a64c:	79e2                	ld	s3,56(sp)
    e888a64e:	7a42                	ld	s4,48(sp)
    e888a650:	7aa2                	ld	s5,40(sp)
    e888a652:	7b02                	ld	s6,32(sp)
    e888a654:	6be2                	ld	s7,24(sp)
    e888a656:	6c42                	ld	s8,16(sp)
    e888a658:	6ca2                	ld	s9,8(sp)
    e888a65a:	6d02                	ld	s10,0(sp)
    e888a65c:	4501                	li	a0,0
    e888a65e:	6125                	addi	sp,sp,96
    e888a660:	8082                	ret
  if ((IP6_HLEN > p->len) || (IP6H_PLEN(ip6hdr) > (p->tot_len - IP6_HLEN))) {
    e888a662:	01245703          	lhu	a4,18(s0)
    e888a666:	02700793          	li	a5,39
    e888a66a:	84ca                	mv	s1,s2
    e888a66c:	02e7e463          	bltu	a5,a4,e888a694 <ip6_input+0xb0>
    if ((IP6H_PLEN(ip6hdr) + IP6_HLEN) > p->tot_len) {
    e888a670:	004ad503          	lhu	a0,4(s5)
    e888a674:	8abfc0ef          	jal	ra,e8886f1e <lwip_htons>
    pbuf_free(p);
    e888a678:	8522                	mv	a0,s0
    e888a67a:	3d3040ef          	jal	ra,e888f24c <pbuf_free>
    IP6_STATS_INC(ip6.lenerr);
    e888a67e:	0e04d783          	lhu	a5,224(s1)
    e888a682:	2785                	addiw	a5,a5,1
    e888a684:	0ef49023          	sh	a5,224(s1)
    IP6_STATS_INC(ip6.drop);
    e888a688:	0dc4d783          	lhu	a5,220(s1)
    e888a68c:	2785                	addiw	a5,a5,1
    e888a68e:	0cf49e23          	sh	a5,220(s1)
    return ERR_OK;
    e888a692:	bf4d                	j	e888a644 <ip6_input+0x60>
  if ((IP6_HLEN > p->len) || (IP6H_PLEN(ip6hdr) > (p->tot_len - IP6_HLEN))) {
    e888a694:	004ad503          	lhu	a0,4(s5)
    e888a698:	887fc0ef          	jal	ra,e8886f1e <lwip_htons>
    e888a69c:	2501                	sext.w	a0,a0
    e888a69e:	01045783          	lhu	a5,16(s0)
    e888a6a2:	fd87879b          	addiw	a5,a5,-40
    e888a6a6:	fca7c5e3          	blt	a5,a0,e888a670 <ip6_input+0x8c>
  pbuf_realloc(p, (u16_t)(IP6_HLEN + IP6H_PLEN(ip6hdr)));
    e888a6aa:	004ad503          	lhu	a0,4(s5)
  ip_addr_copy_from_ip6_packed(ip_data.current_iphdr_dest, ip6hdr->dest);
    e888a6ae:	0005b917          	auipc	s2,0x5b
    e888a6b2:	49a90913          	addi	s2,s2,1178 # e88e5b48 <ip_data>
  pbuf_realloc(p, (u16_t)(IP6_HLEN + IP6H_PLEN(ip6hdr)));
    e888a6b6:	869fc0ef          	jal	ra,e8886f1e <lwip_htons>
    e888a6ba:	0285059b          	addiw	a1,a0,40
    e888a6be:	3c05b58b          	extu	a1,a1,15,0
    e888a6c2:	8522                	mv	a0,s0
    e888a6c4:	62f040ef          	jal	ra,e888f4f2 <pbuf_realloc>
  ip_addr_copy_from_ip6_packed(ip_data.current_iphdr_dest, ip6hdr->dest);
    e888a6c8:	018aa983          	lw	s3,24(s5)
    e888a6cc:	03392e23          	sw	s3,60(s2)
    e888a6d0:	01caa783          	lw	a5,28(s5)
    e888a6d4:	04f92023          	sw	a5,64(s2)
    e888a6d8:	020aa783          	lw	a5,32(s5)
    e888a6dc:	04f92223          	sw	a5,68(s2)
    e888a6e0:	024aac83          	lw	s9,36(s5)
    e888a6e4:	0005b797          	auipc	a5,0x5b
    e888a6e8:	4a078823          	sb	zero,1200(a5) # e88e5b94 <ip_data+0x4c>
    e888a6ec:	05490823          	sb	s4,80(s2)
    e888a6f0:	05992423          	sw	s9,72(s2)
  ip_addr_copy_from_ip6_packed(ip_data.current_iphdr_src, ip6hdr->src);
    e888a6f4:	008aac03          	lw	s8,8(s5)
    e888a6f8:	03892223          	sw	s8,36(s2)
    e888a6fc:	00caa783          	lw	a5,12(s5)
    e888a700:	02f92423          	sw	a5,40(s2)
    e888a704:	010aa783          	lw	a5,16(s5)
    e888a708:	02f92623          	sw	a5,44(s2)
    e888a70c:	014aad03          	lw	s10,20(s5)
    e888a710:	0005b797          	auipc	a5,0x5b
    e888a714:	46078623          	sb	zero,1132(a5) # e88e5b7c <ip_data+0x34>
    e888a718:	03490c23          	sb	s4,56(s2)
    e888a71c:	03a92823          	sw	s10,48(s2)
  if (ip6_addr_isipv4mappedipv6(ip_2_ip6(&ip_data.current_iphdr_dest)) ||
    e888a720:	00099863          	bnez	s3,e888a730 <ip6_input+0x14c>
    e888a724:	04093703          	ld	a4,64(s2)
    e888a728:	57fd                	li	a5,-1
    e888a72a:	17c2                	slli	a5,a5,0x30
    e888a72c:	00f70a63          	beq	a4,a5,e888a740 <ip6_input+0x15c>
    e888a730:	020c1163          	bnez	s8,e888a752 <ip6_input+0x16e>
     ip6_addr_isipv4mappedipv6(ip_2_ip6(&ip_data.current_iphdr_src)) ||
    e888a734:	02893703          	ld	a4,40(s2)
    e888a738:	57fd                	li	a5,-1
    e888a73a:	17c2                	slli	a5,a5,0x30
    e888a73c:	02e79063          	bne	a5,a4,e888a75c <ip6_input+0x178>
    pbuf_free(p);
    e888a740:	8522                	mv	a0,s0
    e888a742:	30b040ef          	jal	ra,e888f24c <pbuf_free>
    IP6_STATS_INC(ip6.err);
    e888a746:	0ea4d783          	lhu	a5,234(s1)
    e888a74a:	2785                	addiw	a5,a5,1
    e888a74c:	0ef49523          	sh	a5,234(s1)
    e888a750:	bf25                	j	e888a688 <ip6_input+0xa4>
     ip6_addr_isipv4mappedipv6(ip_2_ip6(&ip_data.current_iphdr_src)) ||
    e888a752:	0ffc7793          	andi	a5,s8,255
    e888a756:	0ff00713          	li	a4,255
    e888a75a:	b7cd                	j	e888a73c <ip6_input+0x158>
  ip6_addr_assign_zone(ip_2_ip6(&ip_data.current_iphdr_dest), IP6_UNKNOWN, inp);
    e888a75c:	6bb1                	lui	s7,0xc
    e888a75e:	0ffb8b93          	addi	s7,s7,255 # c0ff <memcmp-0xe87f3f01>
    e888a762:	67a1                	lui	a5,0x8
    e888a764:	0179fbb3          	and	s7,s3,s7
    e888a768:	0fe78793          	addi	a5,a5,254 # 80fe <memcmp-0xe87f7f02>
    e888a76c:	00fb8d63          	beq	s7,a5,e888a786 <ip6_input+0x1a2>
    e888a770:	67a5                	lui	a5,0x9
    e888a772:	17fd                	addi	a5,a5,-1
    e888a774:	00f9f7b3          	and	a5,s3,a5
    e888a778:	e017879b          	addiw	a5,a5,-511
    e888a77c:	eff7f793          	andi	a5,a5,-257
    e888a780:	2781                	sext.w	a5,a5
    e888a782:	4701                	li	a4,0
    e888a784:	e791                	bnez	a5,e888a790 <ip6_input+0x1ac>
    e888a786:	10eb4703          	lbu	a4,270(s6)
    e888a78a:	2705                	addiw	a4,a4,1
    e888a78c:	0ff77713          	andi	a4,a4,255
    e888a790:	6a31                	lui	s4,0xc
    e888a792:	04e90623          	sb	a4,76(s2)
  ip6_addr_assign_zone(ip_2_ip6(&ip_data.current_iphdr_src), IP6_UNICAST, inp);
    e888a796:	0ffa0a13          	addi	s4,s4,255 # c0ff <memcmp-0xe87f3f01>
    e888a79a:	6721                	lui	a4,0x8
    e888a79c:	014c7a33          	and	s4,s8,s4
    e888a7a0:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e888a7a4:	4781                	li	a5,0
    e888a7a6:	00ea1763          	bne	s4,a4,e888a7b4 <ip6_input+0x1d0>
    e888a7aa:	10eb4783          	lbu	a5,270(s6)
    e888a7ae:	2785                	addiw	a5,a5,1
    e888a7b0:	0ff7f793          	andi	a5,a5,255
    e888a7b4:	02f90a23          	sb	a5,52(s2)
  ip_data.current_ip6_header = ip6hdr;
    e888a7b8:	01593c23          	sd	s5,24(s2)
  ip_data.current_input_netif = inp;
    e888a7bc:	f9695b0b          	sdd	s6,s6,(s2),0,4
  if (ip6_addr_ismulticast(ip6_current_dest_addr())) {
    e888a7c0:	0ff9f793          	andi	a5,s3,255
    e888a7c4:	0ff00713          	li	a4,255
    e888a7c8:	06e79a63          	bne	a5,a4,e888a83c <ip6_input+0x258>
    if (ip6_addr_isallnodes_iflocal(ip6_current_dest_addr()) ||
    e888a7cc:	e019899b          	addiw	s3,s3,-511
    e888a7d0:	eff9f993          	andi	s3,s3,-257
    e888a7d4:	2981                	sext.w	s3,s3
    e888a7d6:	00099963          	bnez	s3,e888a7e8 <ip6_input+0x204>
    e888a7da:	04093783          	ld	a5,64(s2)
    e888a7de:	e789                	bnez	a5,e888a7e8 <ip6_input+0x204>
    e888a7e0:	010007b7          	lui	a5,0x1000
    e888a7e4:	04fc8a63          	beq	s9,a5,e888a838 <ip6_input+0x254>
    else if (mld6_lookfor_group(inp, ip6_current_dest_addr())) {
    e888a7e8:	0005b597          	auipc	a1,0x5b
    e888a7ec:	39c58593          	addi	a1,a1,924 # e88e5b84 <ip_data+0x3c>
    e888a7f0:	855a                	mv	a0,s6
    e888a7f2:	360010ef          	jal	ra,e888bb52 <mld6_lookfor_group>
    e888a7f6:	e129                	bnez	a0,e888a838 <ip6_input+0x254>
      netif = NULL;
    e888a7f8:	4981                	li	s3,0
  if (ip6_addr_isany(ip6_current_src_addr()) &&
    e888a7fa:	02893783          	ld	a5,40(s2)
    e888a7fe:	efc9                	bnez	a5,e888a898 <ip6_input+0x2b4>
    e888a800:	02492783          	lw	a5,36(s2)
    e888a804:	03092703          	lw	a4,48(s2)
    e888a808:	8fd9                	or	a5,a5,a4
    e888a80a:	e7d9                	bnez	a5,e888a898 <ip6_input+0x2b4>
    e888a80c:	03c92703          	lw	a4,60(s2)
    e888a810:	2ff00793          	li	a5,767
    e888a814:	00f71e63          	bne	a4,a5,e888a830 <ip6_input+0x24c>
      (!ip6_addr_issolicitednode(ip6_current_dest_addr()))) {
    e888a818:	04492703          	lw	a4,68(s2)
    e888a81c:	010007b7          	lui	a5,0x1000
    e888a820:	00f71863          	bne	a4,a5,e888a830 <ip6_input+0x24c>
    e888a824:	04894703          	lbu	a4,72(s2)
    e888a828:	0ff00793          	li	a5,255
    e888a82c:	06f70663          	beq	a4,a5,e888a898 <ip6_input+0x2b4>
            pbuf_free(p);
    e888a830:	8522                	mv	a0,s0
    e888a832:	21b040ef          	jal	ra,e888f24c <pbuf_free>
            IP6_STATS_INC(ip6.drop);
    e888a836:	aa4d                	j	e888a9e8 <ip6_input+0x404>
      netif = NULL;
    e888a838:	89da                	mv	s3,s6
    e888a83a:	b7c1                	j	e888a7fa <ip6_input+0x216>
    if (ip6_input_accept(inp)) {
    e888a83c:	855a                	mv	a0,s6
    e888a83e:	99dff0ef          	jal	ra,e888a1da <ip6_input_accept>
    e888a842:	f97d                	bnez	a0,e888a838 <ip6_input+0x254>
      if (ip6_addr_islinklocal(ip6_current_dest_addr()) ||
    e888a844:	67a1                	lui	a5,0x8
    e888a846:	0fe78793          	addi	a5,a5,254 # 80fe <memcmp-0xe87f7f02>
    e888a84a:	fafb87e3          	beq	s7,a5,e888a7f8 <ip6_input+0x214>
    e888a84e:	fafa05e3          	beq	s4,a5,e888a7f8 <ip6_input+0x214>
      if (ip6_addr_isloopback(ip6_current_dest_addr()) ||
    e888a852:	00099963          	bnez	s3,e888a864 <ip6_input+0x280>
    e888a856:	04093783          	ld	a5,64(s2)
    e888a85a:	e789                	bnez	a5,e888a864 <ip6_input+0x280>
    e888a85c:	010007b7          	lui	a5,0x1000
    e888a860:	f8fc8ce3          	beq	s9,a5,e888a7f8 <ip6_input+0x214>
    e888a864:	000c1963          	bnez	s8,e888a876 <ip6_input+0x292>
          ip6_addr_isloopback(ip6_current_src_addr())) {
    e888a868:	02893783          	ld	a5,40(s2)
    e888a86c:	e789                	bnez	a5,e888a876 <ip6_input+0x292>
    e888a86e:	010007b7          	lui	a5,0x1000
    e888a872:	f8fd03e3          	beq	s10,a5,e888a7f8 <ip6_input+0x214>
      NETIF_FOREACH(netif) {
    e888a876:	0005c797          	auipc	a5,0x5c
    e888a87a:	bc278793          	addi	a5,a5,-1086 # e88e6438 <netif_list>
    e888a87e:	0007b983          	ld	s3,0(a5)
    e888a882:	f6098be3          	beqz	s3,e888a7f8 <ip6_input+0x214>
        if (netif == inp) {
    e888a886:	01698663          	beq	s3,s6,e888a892 <ip6_input+0x2ae>
        if (ip6_input_accept(netif)) {
    e888a88a:	854e                	mv	a0,s3
    e888a88c:	94fff0ef          	jal	ra,e888a1da <ip6_input_accept>
    e888a890:	f52d                	bnez	a0,e888a7fa <ip6_input+0x216>
      NETIF_FOREACH(netif) {
    e888a892:	0009b983          	ld	s3,0(s3)
    e888a896:	b7f5                	j	e888a882 <ip6_input+0x29e>
  if (netif == NULL) {
    e888a898:	00099663          	bnez	s3,e888a8a4 <ip6_input+0x2c0>
      pbuf_free(p);
    e888a89c:	8522                	mv	a0,s0
    e888a89e:	1af040ef          	jal	ra,e888f24c <pbuf_free>
      break;
    e888a8a2:	aa81                	j	e888a9f2 <ip6_input+0x40e>
  pbuf_remove_header(p, IP6_HLEN);
    e888a8a4:	02800593          	li	a1,40
    e888a8a8:	8522                	mv	a0,s0
  ip_data.current_netif = netif;
    e888a8aa:	01393023          	sd	s3,0(s2)
  hlen = hlen_tot = IP6_HLEN;
    e888a8ae:	02800a13          	li	s4,40
  nexth = &IP6H_NEXTH(ip6hdr);
    e888a8b2:	006a8993          	addi	s3,s5,6
  pbuf_remove_header(p, IP6_HLEN);
    e888a8b6:	0f3040ef          	jal	ra,e888f1a8 <pbuf_remove_header>
  while (*nexth != IP6_NEXTH_NONE)
    e888a8ba:	4b85                	li	s7,1
      opt_offset = IP6_DEST_HLEN;
    e888a8bc:	4c09                	li	s8,2
    e888a8be:	4c8d                	li	s9,3
    e888a8c0:	0c200d13          	li	s10,194
  while (*nexth != IP6_NEXTH_NONE)
    e888a8c4:	0009c783          	lbu	a5,0(s3)
    e888a8c8:	03b00713          	li	a4,59
    e888a8cc:	00e78963          	beq	a5,a4,e888a8de <ip6_input+0x2fa>
    switch (*nexth) {
    e888a8d0:	02b00713          	li	a4,43
    e888a8d4:	1ee78b63          	beq	a5,a4,e888aaca <ip6_input+0x4e6>
    e888a8d8:	08f76263          	bltu	a4,a5,e888a95c <ip6_input+0x378>
    e888a8dc:	cff9                	beqz	a5,e888a9ba <ip6_input+0x3d6>
  pbuf_add_header_force(p, hlen_tot);
    e888a8de:	85d2                	mv	a1,s4
    e888a8e0:	8522                	mv	a0,s0
  ip_data.current_ip_header_tot_len = hlen_tot;
    e888a8e2:	03491023          	sh	s4,32(s2)
  pbuf_add_header_force(p, hlen_tot);
    e888a8e6:	0bd040ef          	jal	ra,e888f1a2 <pbuf_add_header_force>
  raw_status = raw_input(p, inp);
    e888a8ea:	85da                	mv	a1,s6
    e888a8ec:	8522                	mv	a0,s0
    e888a8ee:	4e8050ef          	jal	ra,e888fdd6 <raw_input>
    e888a8f2:	8baa                	mv	s7,a0
  if (raw_status != RAW_INPUT_EATEN)
    e888a8f4:	4785                	li	a5,1
    e888a8f6:	0ef50e63          	beq	a0,a5,e888a9f2 <ip6_input+0x40e>
    pbuf_remove_header(p, hlen_tot);
    e888a8fa:	85d2                	mv	a1,s4
    e888a8fc:	8522                	mv	a0,s0
    e888a8fe:	0ab040ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    switch (*nexth) {
    e888a902:	0009c783          	lbu	a5,0(s3)
    e888a906:	4745                	li	a4,17
    e888a908:	28e78e63          	beq	a5,a4,e888aba4 <ip6_input+0x5c0>
    e888a90c:	28f76363          	bltu	a4,a5,e888ab92 <ip6_input+0x5ae>
    e888a910:	4719                	li	a4,6
    e888a912:	28e78e63          	beq	a5,a4,e888abae <ip6_input+0x5ca>
        if (raw_status == RAW_INPUT_DELIVERED) {
    e888a916:	4789                	li	a5,2
    e888a918:	f8fb82e3          	beq	s7,a5,e888a89c <ip6_input+0x2b8>
        pbuf_add_header_force(p, hlen_tot);
    e888a91c:	85d2                	mv	a1,s4
    e888a91e:	8522                	mv	a0,s0
    e888a920:	083040ef          	jal	ra,e888f1a2 <pbuf_add_header_force>
        if ((!ip6_addr_ismulticast(ip6_current_dest_addr())) &&
    e888a924:	03c94703          	lbu	a4,60(s2)
    e888a928:	0ff00793          	li	a5,255
    e888a92c:	00f70d63          	beq	a4,a5,e888a946 <ip6_input+0x362>
    e888a930:	006ac703          	lbu	a4,6(s5)
    e888a934:	03a00793          	li	a5,58
    e888a938:	00f70763          	beq	a4,a5,e888a946 <ip6_input+0x362>
          icmp6_param_problem(p, ICMP6_PP_HEADER, nexth);
    e888a93c:	864e                	mv	a2,s3
    e888a93e:	4585                	li	a1,1
    e888a940:	8522                	mv	a0,s0
    e888a942:	72c120ef          	jal	ra,e889d06e <icmp6_param_problem>
        IP6_STATS_INC(ip6.proterr);
    e888a946:	0e64d783          	lhu	a5,230(s1)
    e888a94a:	2785                	addiw	a5,a5,1
    e888a94c:	0ef49323          	sh	a5,230(s1)
        IP6_STATS_INC(ip6.drop);
    e888a950:	0dc4d783          	lhu	a5,220(s1)
    e888a954:	2785                	addiw	a5,a5,1
    e888a956:	0cf49e23          	sh	a5,220(s1)
    e888a95a:	b789                	j	e888a89c <ip6_input+0x2b8>
    switch (*nexth) {
    e888a95c:	02c00713          	li	a4,44
    e888a960:	1ae78863          	beq	a5,a4,e888ab10 <ip6_input+0x52c>
    e888a964:	03c00713          	li	a4,60
    e888a968:	f6e79be3          	bne	a5,a4,e888a8de <ip6_input+0x2fa>
      dest_hdr = (struct ip6_dest_hdr *)p->payload;
    e888a96c:	00843983          	ld	s3,8(s0)
      if ((p->len < 8) || (hlen > p->len)) {
    e888a970:	01245783          	lhu	a5,18(s0)
    e888a974:	471d                	li	a4,7
      hlen = 8 * (1 + dest_hdr->_hlen);
    e888a976:	0019c583          	lbu	a1,1(s3)
    e888a97a:	2585                	addiw	a1,a1,1
    e888a97c:	058e                	slli	a1,a1,0x3
      if ((p->len < 8) || (hlen > p->len)) {
    e888a97e:	04f77d63          	bgeu	a4,a5,e888a9d8 <ip6_input+0x3f4>
    e888a982:	0005869b          	sext.w	a3,a1
    e888a986:	04d7e963          	bltu	a5,a3,e888a9d8 <ip6_input+0x3f4>
      opt_offset = IP6_DEST_HLEN;
    e888a98a:	4709                	li	a4,2
    e888a98c:	4515                	li	a0,5
    e888a98e:	0c900813          	li	a6,201
        switch (IP6_OPT_TYPE(opt_hdr))
    e888a992:	80e9c78b          	lrbu	a5,s3,a4,0
        opt_hdr = (struct ip6_opt_hdr *)((u8_t *)dest_hdr + opt_offset);
    e888a996:	00e98633          	add	a2,s3,a4
        switch (IP6_OPT_TYPE(opt_hdr))
    e888a99a:	10a78463          	beq	a5,a0,e888aaa2 <ip6_input+0x4be>
    e888a99e:	0ef56e63          	bltu	a0,a5,e888aa9a <ip6_input+0x4b6>
    e888a9a2:	12078263          	beqz	a5,e888aac6 <ip6_input+0x4e2>
    e888a9a6:	0f778e63          	beq	a5,s7,e888aaa2 <ip6_input+0x4be>
          switch (IP6_OPT_TYPE_ACTION(opt_hdr))
    e888a9aa:	8399                	srli	a5,a5,0x6
    e888a9ac:	11878863          	beq	a5,s8,e888aabc <ip6_input+0x4d8>
    e888a9b0:	11978063          	beq	a5,s9,e888aab0 <ip6_input+0x4cc>
    e888a9b4:	0f779763          	bne	a5,s7,e888aaa2 <ip6_input+0x4be>
    e888a9b8:	bda5                	j	e888a830 <ip6_input+0x24c>
      hbh_hdr = (struct ip6_hbh_hdr *)p->payload;
    e888a9ba:	00843983          	ld	s3,8(s0)
      if ((p->len < 8) || (hlen > p->len)) {
    e888a9be:	01245783          	lhu	a5,18(s0)
    e888a9c2:	471d                	li	a4,7
      hlen = (u16_t)(8 * (1 + hbh_hdr->_hlen));
    e888a9c4:	0019c583          	lbu	a1,1(s3)
    e888a9c8:	2585                	addiw	a1,a1,1
    e888a9ca:	058e                	slli	a1,a1,0x3
      if ((p->len < 8) || (hlen > p->len)) {
    e888a9cc:	00f77663          	bgeu	a4,a5,e888a9d8 <ip6_input+0x3f4>
    e888a9d0:	0005869b          	sext.w	a3,a1
    e888a9d4:	06d7f863          	bgeu	a5,a3,e888aa44 <ip6_input+0x460>
        pbuf_free(p);
    e888a9d8:	8522                	mv	a0,s0
    e888a9da:	073040ef          	jal	ra,e888f24c <pbuf_free>
        IP6_STATS_INC(ip6.lenerr);
    e888a9de:	0e04d783          	lhu	a5,224(s1)
    e888a9e2:	2785                	addiw	a5,a5,1
    e888a9e4:	0ef49023          	sh	a5,224(s1)
        IP6_STATS_INC(ip6.drop);
    e888a9e8:	0dc4d783          	lhu	a5,220(s1)
    e888a9ec:	2785                	addiw	a5,a5,1
    e888a9ee:	0cf49e23          	sh	a5,220(s1)
  ip_data.current_netif = NULL;
    e888a9f2:	0005b797          	auipc	a5,0x5b
    e888a9f6:	1407bb23          	sd	zero,342(a5) # e88e5b48 <ip_data>
  ip_data.current_input_netif = NULL;
    e888a9fa:	0005b797          	auipc	a5,0x5b
    e888a9fe:	1407bb23          	sd	zero,342(a5) # e88e5b50 <ip_data+0x8>
  ip_data.current_ip6_header = NULL;
    e888aa02:	0005b797          	auipc	a5,0x5b
    e888aa06:	1407bf23          	sd	zero,350(a5) # e88e5b60 <ip_data+0x18>
  ip_data.current_ip_header_tot_len = 0;
    e888aa0a:	0005b797          	auipc	a5,0x5b
    e888aa0e:	14079f23          	sh	zero,350(a5) # e88e5b68 <ip_data+0x20>
  ip6_addr_set_zero(ip6_current_src_addr());
    e888aa12:	0005b797          	auipc	a5,0x5b
    e888aa16:	1407bd23          	sd	zero,346(a5) # e88e5b6c <ip_data+0x24>
    e888aa1a:	0005b797          	auipc	a5,0x5b
    e888aa1e:	1407bd23          	sd	zero,346(a5) # e88e5b74 <ip_data+0x2c>
    e888aa22:	0005b797          	auipc	a5,0x5b
    e888aa26:	14078d23          	sb	zero,346(a5) # e88e5b7c <ip_data+0x34>
  ip6_addr_set_zero(ip6_current_dest_addr());
    e888aa2a:	0005b797          	auipc	a5,0x5b
    e888aa2e:	1407bd23          	sd	zero,346(a5) # e88e5b84 <ip_data+0x3c>
    e888aa32:	0005b797          	auipc	a5,0x5b
    e888aa36:	1407bd23          	sd	zero,346(a5) # e88e5b8c <ip_data+0x44>
    e888aa3a:	0005b797          	auipc	a5,0x5b
    e888aa3e:	14078d23          	sb	zero,346(a5) # e88e5b94 <ip_data+0x4c>
  return ERR_OK;
    e888aa42:	b109                	j	e888a644 <ip6_input+0x60>
      opt_offset = IP6_HBH_HLEN;
    e888aa44:	4709                	li	a4,2
    e888aa46:	4515                	li	a0,5
        switch (IP6_OPT_TYPE(opt_hdr)) {
    e888aa48:	80e9c78b          	lrbu	a5,s3,a4,0
        opt_hdr = (struct ip6_opt_hdr *)((u8_t *)hbh_hdr + opt_offset);
    e888aa4c:	00e98633          	add	a2,s3,a4
        switch (IP6_OPT_TYPE(opt_hdr)) {
    e888aa50:	01778763          	beq	a5,s7,e888aa5e <ip6_input+0x47a>
    e888aa54:	c3a9                	beqz	a5,e888aa96 <ip6_input+0x4b2>
    e888aa56:	00a78463          	beq	a5,a0,e888aa5e <ip6_input+0x47a>
    e888aa5a:	03a79663          	bne	a5,s10,e888aa86 <ip6_input+0x4a2>
            opt_dlen = IP6_OPT_DLEN(opt_hdr);
    e888aa5e:	00164783          	lbu	a5,1(a2)
        opt_offset = opt_offset + IP6_OPT_HLEN + opt_dlen;
    e888aa62:	2789                	addiw	a5,a5,2
    e888aa64:	9f3d                	addw	a4,a4,a5
      while (opt_offset < hlen)
    e888aa66:	fed741e3          	blt	a4,a3,e888aa48 <ip6_input+0x464>
      hlen_tot = (u16_t)(hlen_tot + hlen);
    e888aa6a:	00ba0a3b          	addw	s4,s4,a1
    e888aa6e:	3c0a3a0b          	extu	s4,s4,15,0
        pbuf_remove_header(p, hlen);
    e888aa72:	8522                	mv	a0,s0
    e888aa74:	734040ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    if (*nexth == IP6_NEXTH_HOPBYHOP) {
    e888aa78:	0009c783          	lbu	a5,0(s3)
    e888aa7c:	e40794e3          	bnez	a5,e888a8c4 <ip6_input+0x2e0>
      icmp6_param_problem(p, ICMP6_PP_HEADER, nexth);
    e888aa80:	864e                	mv	a2,s3
    e888aa82:	4585                	li	a1,1
    e888aa84:	a82d                	j	e888aabe <ip6_input+0x4da>
          switch (IP6_OPT_TYPE_ACTION(opt_hdr)) {
    e888aa86:	8399                	srli	a5,a5,0x6
    e888aa88:	03878a63          	beq	a5,s8,e888aabc <ip6_input+0x4d8>
    e888aa8c:	03978263          	beq	a5,s9,e888aab0 <ip6_input+0x4cc>
    e888aa90:	fd7797e3          	bne	a5,s7,e888aa5e <ip6_input+0x47a>
    e888aa94:	bb71                	j	e888a830 <ip6_input+0x24c>
          opt_dlen = -1;
    e888aa96:	57fd                	li	a5,-1
    e888aa98:	b7e9                	j	e888aa62 <ip6_input+0x47e>
    e888aa9a:	01a78463          	beq	a5,s10,e888aaa2 <ip6_input+0x4be>
    e888aa9e:	f10796e3          	bne	a5,a6,e888a9aa <ip6_input+0x3c6>
            opt_dlen = IP6_OPT_DLEN(opt_hdr);
    e888aaa2:	00164783          	lbu	a5,1(a2)
        opt_offset = opt_offset + IP6_OPT_HLEN + opt_dlen;
    e888aaa6:	2789                	addiw	a5,a5,2
    e888aaa8:	9f3d                	addw	a4,a4,a5
      while (opt_offset < hlen)
    e888aaaa:	eed744e3          	blt	a4,a3,e888a992 <ip6_input+0x3ae>
    e888aaae:	bf75                	j	e888aa6a <ip6_input+0x486>
            if (!ip6_addr_ismulticast(ip6_current_dest_addr())) {
    e888aab0:	03c94703          	lbu	a4,60(s2)
    e888aab4:	0ff00793          	li	a5,255
    e888aab8:	d6f70ce3          	beq	a4,a5,e888a830 <ip6_input+0x24c>
              icmp6_param_problem(p, ICMP6_PP_OPTION, opt_hdr);
    e888aabc:	4589                	li	a1,2
    e888aabe:	8522                	mv	a0,s0
    e888aac0:	5ae120ef          	jal	ra,e889d06e <icmp6_param_problem>
    e888aac4:	b3b5                	j	e888a830 <ip6_input+0x24c>
          opt_dlen = -1;
    e888aac6:	57fd                	li	a5,-1
    e888aac8:	bff9                	j	e888aaa6 <ip6_input+0x4c2>
      rout_hdr = (struct ip6_rout_hdr *)p->payload;
    e888aaca:	00843983          	ld	s3,8(s0)
      if ((p->len < 8) || (hlen > p->len)) {
    e888aace:	01245703          	lhu	a4,18(s0)
    e888aad2:	469d                	li	a3,7
      hlen = 8 * (1 + rout_hdr->_hlen);
    e888aad4:	0019c783          	lbu	a5,1(s3)
    e888aad8:	0017859b          	addiw	a1,a5,1
    e888aadc:	058e                	slli	a1,a1,0x3
      if ((p->len < 8) || (hlen > p->len)) {
    e888aade:	eee6fde3          	bgeu	a3,a4,e888a9d8 <ip6_input+0x3f4>
    e888aae2:	eeb76be3          	bltu	a4,a1,e888a9d8 <ip6_input+0x3f4>
      if (IP6_ROUT_SEG_LEFT(rout_hdr)) {
    e888aae6:	0039c703          	lbu	a4,3(s3)
      hlen_tot = (u16_t)(hlen_tot + hlen);
    e888aaea:	00ba0a3b          	addw	s4,s4,a1
    e888aaee:	3c0a3a0b          	extu	s4,s4,15,0
      if (IP6_ROUT_SEG_LEFT(rout_hdr)) {
    e888aaf2:	d341                	beqz	a4,e888aa72 <ip6_input+0x48e>
        if (rout_hdr->_hlen & 0x1) {
    e888aaf4:	8b85                	andi	a5,a5,1
    e888aaf6:	c789                	beqz	a5,e888ab00 <ip6_input+0x51c>
          icmp6_param_problem(p, ICMP6_PP_FIELD, &rout_hdr->_hlen);
    e888aaf8:	00198613          	addi	a2,s3,1
          icmp6_param_problem(p, ICMP6_PP_FIELD, &IP6_ROUT_TYPE(rout_hdr));
    e888aafc:	4581                	li	a1,0
    e888aafe:	b7c1                	j	e888aabe <ip6_input+0x4da>
        switch (IP6_ROUT_TYPE(rout_hdr))
    e888ab00:	0029c783          	lbu	a5,2(s3)
    e888ab04:	37f9                	addiw	a5,a5,-2
    e888ab06:	f6fbf6e3          	bgeu	s7,a5,e888aa72 <ip6_input+0x48e>
          icmp6_param_problem(p, ICMP6_PP_FIELD, &IP6_ROUT_TYPE(rout_hdr));
    e888ab0a:	00298613          	addi	a2,s3,2
    e888ab0e:	b7fd                	j	e888aafc <ip6_input+0x518>
      if (hlen > p->len) {
    e888ab10:	01245703          	lhu	a4,18(s0)
    e888ab14:	479d                	li	a5,7
      frag_hdr = (struct ip6_frag_hdr *)p->payload;
    e888ab16:	00843983          	ld	s3,8(s0)
      if (hlen > p->len) {
    e888ab1a:	02e7e063          	bltu	a5,a4,e888ab3a <ip6_input+0x556>
        pbuf_free(p);
    e888ab1e:	8522                	mv	a0,s0
    e888ab20:	72c040ef          	jal	ra,e888f24c <pbuf_free>
        IP6_FRAG_STATS_INC(ip6_frag.lenerr);
    e888ab24:	1104d783          	lhu	a5,272(s1)
    e888ab28:	2785                	addiw	a5,a5,1
    e888ab2a:	10f49823          	sh	a5,272(s1)
        IP6_FRAG_STATS_INC(ip6_frag.drop);
    e888ab2e:	10c4d783          	lhu	a5,268(s1)
    e888ab32:	2785                	addiw	a5,a5,1
    e888ab34:	10f49623          	sh	a5,268(s1)
        goto ip6_input_cleanup;
    e888ab38:	bd6d                	j	e888a9f2 <ip6_input+0x40e>
      if (IP6_FRAG_MBIT(frag_hdr) && (IP6H_PLEN(ip6hdr) & 0x7)) {
    e888ab3a:	0029d503          	lhu	a0,2(s3)
      hlen_tot = (u16_t)(hlen_tot + hlen);
    e888ab3e:	2a21                	addiw	s4,s4,8
    e888ab40:	3c0a3a0b          	extu	s4,s4,15,0
      if (IP6_FRAG_MBIT(frag_hdr) && (IP6H_PLEN(ip6hdr) & 0x7)) {
    e888ab44:	bdafc0ef          	jal	ra,e8886f1e <lwip_htons>
    e888ab48:	8905                	andi	a0,a0,1
    e888ab4a:	c911                	beqz	a0,e888ab5e <ip6_input+0x57a>
    e888ab4c:	004ad503          	lhu	a0,4(s5)
    e888ab50:	bcefc0ef          	jal	ra,e8886f1e <lwip_htons>
    e888ab54:	891d                	andi	a0,a0,7
    e888ab56:	c501                	beqz	a0,e888ab5e <ip6_input+0x57a>
        icmp6_param_problem(p, ICMP6_PP_FIELD, LWIP_PACKED_CAST(const void *, &ip6hdr->_plen));
    e888ab58:	004a8613          	addi	a2,s5,4
    e888ab5c:	b745                	j	e888aafc <ip6_input+0x518>
      if ((frag_hdr->_fragment_offset &
    e888ab5e:	0029d783          	lhu	a5,2(s3)
    e888ab62:	9ff7f793          	andi	a5,a5,-1537
    e888ab66:	e399                	bnez	a5,e888ab6c <ip6_input+0x588>
        pbuf_remove_header(p, hlen);
    e888ab68:	45a1                	li	a1,8
    e888ab6a:	b721                	j	e888aa72 <ip6_input+0x48e>
        p = ip6_reass(p);
    e888ab6c:	8522                	mv	a0,s0
        ip_data.current_ip_header_tot_len = hlen_tot;
    e888ab6e:	03491023          	sh	s4,32(s2)
        p = ip6_reass(p);
    e888ab72:	5f4000ef          	jal	ra,e888b166 <ip6_reass>
    e888ab76:	842a                	mv	s0,a0
        if (p == NULL) {
    e888ab78:	e6050de3          	beqz	a0,e888a9f2 <ip6_input+0x40e>
        ip6hdr = (struct ip6_hdr *)p->payload;
    e888ab7c:	00853a83          	ld	s5,8(a0)
        pbuf_remove_header(p, IP6_HLEN);
    e888ab80:	02800593          	li	a1,40
    e888ab84:	624040ef          	jal	ra,e888f1a8 <pbuf_remove_header>
        nexth = &IP6H_NEXTH(ip6hdr);
    e888ab88:	006a8993          	addi	s3,s5,6
        hlen = hlen_tot = IP6_HLEN;
    e888ab8c:	02800a13          	li	s4,40
    e888ab90:	b5e5                	j	e888aa78 <ip6_input+0x494>
    switch (*nexth) {
    e888ab92:	03a00713          	li	a4,58
    e888ab96:	02e78163          	beq	a5,a4,e888abb8 <ip6_input+0x5d4>
    e888ab9a:	03b00713          	li	a4,59
    e888ab9e:	cee78fe3          	beq	a5,a4,e888a89c <ip6_input+0x2b8>
    e888aba2:	bb95                	j	e888a916 <ip6_input+0x332>
      udp_input(p, inp);
    e888aba4:	85da                	mv	a1,s6
    e888aba6:	8522                	mv	a0,s0
    e888aba8:	4330b0ef          	jal	ra,e88967da <udp_input>
      break;
    e888abac:	b599                	j	e888a9f2 <ip6_input+0x40e>
      tcp_input(p, inp);
    e888abae:	85da                	mv	a1,s6
    e888abb0:	8522                	mv	a0,s0
    e888abb2:	2dd080ef          	jal	ra,e889368e <tcp_input>
      break;
    e888abb6:	bd35                	j	e888a9f2 <ip6_input+0x40e>
      icmp6_input(p, inp);
    e888abb8:	85da                	mv	a1,s6
    e888abba:	8522                	mv	a0,s0
    e888abbc:	212120ef          	jal	ra,e889cdce <icmp6_input>
      break;
    e888abc0:	bd0d                	j	e888a9f2 <ip6_input+0x40e>

00000000e888abc2 <ip6_output_if_src>:
 */
err_t
ip6_output_if_src(struct pbuf *p, const ip6_addr_t *src, const ip6_addr_t *dest,
             u8_t hl, u8_t tc,
             u8_t nexth, struct netif *netif)
{
    e888abc2:	7159                	addi	sp,sp,-112
    e888abc4:	f0a2                	sd	s0,96(sp)
    e888abc6:	eca6                	sd	s1,88(sp)
    e888abc8:	e4ce                	sd	s3,72(sp)
    e888abca:	e0d2                	sd	s4,64(sp)
    e888abcc:	f85a                	sd	s6,48(sp)
    e888abce:	f45e                	sd	s7,40(sp)
    e888abd0:	f062                	sd	s8,32(sp)
    e888abd2:	f486                	sd	ra,104(sp)
    e888abd4:	e8ca                	sd	s2,80(sp)
    e888abd6:	fc56                	sd	s5,56(sp)
    e888abd8:	8b3a                	mv	s6,a4
  struct ip6_hdr *ip6hdr;
  ip6_addr_t dest_addr;

  LWIP_ASSERT_CORE_LOCKED();
  LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p);
    e888abda:	01654703          	lbu	a4,22(a0)
{
    e888abde:	8bbe                	mv	s7,a5
  LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p);
    e888abe0:	4785                	li	a5,1
{
    e888abe2:	84aa                	mv	s1,a0
    e888abe4:	8a2e                	mv	s4,a1
    e888abe6:	8432                	mv	s0,a2
    e888abe8:	8c36                	mv	s8,a3
    e888abea:	89c2                	mv	s3,a6
  LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p);
    e888abec:	02f70863          	beq	a4,a5,e888ac1c <ip6_output_if_src+0x5a>
    e888abf0:	02f00593          	li	a1,47
    e888abf4:	00045517          	auipc	a0,0x45
    e888abf8:	63c50513          	addi	a0,a0,1596 # e88d0230 <in6addr_any+0x10>
    e888abfc:	f7cf10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ac00:	00150693          	addi	a3,a0,1
    e888ac04:	49d00613          	li	a2,1181
    e888ac08:	00045597          	auipc	a1,0x45
    e888ac0c:	2c058593          	addi	a1,a1,704 # e88cfec8 <ip_addr_any_type+0x668>
    e888ac10:	00044517          	auipc	a0,0x44
    e888ac14:	4a050513          	addi	a0,a0,1184 # e88cf0b0 <kSinTable1024+0x900>
    e888ac18:	eaef10ef          	jal	ra,e887c2c6 <eLIBs_printf>

  /* Should the IPv6 header be generated or is it already included in p? */
  if (dest != LWIP_IP_HDRINCL) {
    e888ac1c:	0005ca97          	auipc	s5,0x5c
    e888ac20:	834a8a93          	addi	s5,s5,-1996 # e88e6450 <lwip_stats>
    e888ac24:	18040b63          	beqz	s0,e888adba <ip6_output_if_src+0x1f8>
     * based on the outgoing interface. The lower layers (e.g., nd6) absolutely
     * require addresses to be properly zoned for correctness. In some cases,
     * earlier attempts will have been made to add a zone to the destination,
     * but this function is the only one that is called in all (other) cases,
     * so we must do this here. */
    if (ip6_addr_lacks_zone(dest, IP6_UNKNOWN)) {
    e888ac28:	01044683          	lbu	a3,16(s0)
    e888ac2c:	eeb1                	bnez	a3,e888ac88 <ip6_output_if_src+0xc6>
    e888ac2e:	401c                	lw	a5,0(s0)
    e888ac30:	6631                	lui	a2,0xc
    e888ac32:	0ff60613          	addi	a2,a2,255 # c0ff <memcmp-0xe87f3f01>
    e888ac36:	6721                	lui	a4,0x8
    e888ac38:	8e7d                	and	a2,a2,a5
    e888ac3a:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e888ac3e:	00e60b63          	beq	a2,a4,e888ac54 <ip6_output_if_src+0x92>
    e888ac42:	6725                	lui	a4,0x9
    e888ac44:	177d                	addi	a4,a4,-1
    e888ac46:	8f7d                	and	a4,a4,a5
    e888ac48:	e017071b          	addiw	a4,a4,-511
    e888ac4c:	eff77713          	andi	a4,a4,-257
    e888ac50:	2701                	sext.w	a4,a4
    e888ac52:	eb1d                	bnez	a4,e888ac88 <ip6_output_if_src+0xc6>
      ip6_addr_copy(dest_addr, *dest);
    e888ac54:	6018                	ld	a4,0(s0)
    e888ac56:	e43a                	sd	a4,8(sp)
    e888ac58:	6418                	ld	a4,8(s0)
    e888ac5a:	e83a                	sd	a4,16(sp)
      ip6_addr_assign_zone(&dest_addr, IP6_UNKNOWN, netif);
    e888ac5c:	6721                	lui	a4,0x8
    e888ac5e:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e888ac62:	00e60b63          	beq	a2,a4,e888ac78 <ip6_output_if_src+0xb6>
    e888ac66:	6725                	lui	a4,0x9
    e888ac68:	177d                	addi	a4,a4,-1
    e888ac6a:	8ff9                	and	a5,a5,a4
    e888ac6c:	e017879b          	addiw	a5,a5,-511
    e888ac70:	eff7f793          	andi	a5,a5,-257
    e888ac74:	2781                	sext.w	a5,a5
    e888ac76:	e791                	bnez	a5,e888ac82 <ip6_output_if_src+0xc0>
    e888ac78:	10e9c683          	lbu	a3,270(s3)
    e888ac7c:	2685                	addiw	a3,a3,1
    e888ac7e:	0ff6f693          	andi	a3,a3,255
    e888ac82:	00d10c23          	sb	a3,24(sp)
      dest = &dest_addr;
    e888ac86:	0020                	addi	s0,sp,8
    }
#endif /* LWIP_IPV6_SCOPES */

    /* generate IPv6 header */
    if (pbuf_add_header(p, IP6_HLEN)) {
    e888ac88:	02800593          	li	a1,40
    e888ac8c:	8526                	mv	a0,s1
    e888ac8e:	50e040ef          	jal	ra,e888f19c <pbuf_add_header>
    e888ac92:	c11d                	beqz	a0,e888acb8 <ip6_output_if_src+0xf6>
      LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip6_output: not enough room for IPv6 header in pbuf\n"));
      IP6_STATS_INC(ip6.err);
    e888ac94:	0eaad783          	lhu	a5,234(s5)
      return ERR_BUF;
    e888ac98:	5579                	li	a0,-2
      IP6_STATS_INC(ip6.err);
    e888ac9a:	2785                	addiw	a5,a5,1
    e888ac9c:	0efa9523          	sh	a5,234(s5)
  }
#endif /* LWIP_IPV6_FRAG */

  LWIP_DEBUGF(IP6_DEBUG, ("netif->output_ip6()\n"));
  return netif->output_ip6(netif, p, dest);
}
    e888aca0:	70a6                	ld	ra,104(sp)
    e888aca2:	7406                	ld	s0,96(sp)
    e888aca4:	64e6                	ld	s1,88(sp)
    e888aca6:	6946                	ld	s2,80(sp)
    e888aca8:	69a6                	ld	s3,72(sp)
    e888acaa:	6a06                	ld	s4,64(sp)
    e888acac:	7ae2                	ld	s5,56(sp)
    e888acae:	7b42                	ld	s6,48(sp)
    e888acb0:	7ba2                	ld	s7,40(sp)
    e888acb2:	7c02                	ld	s8,32(sp)
    e888acb4:	6165                	addi	sp,sp,112
    e888acb6:	8082                	ret
    LWIP_ASSERT("check that first pbuf can hold struct ip6_hdr",
    e888acb8:	0124d703          	lhu	a4,18(s1)
    e888acbc:	02700793          	li	a5,39
    ip6hdr = (struct ip6_hdr *)p->payload;
    e888acc0:	0084b903          	ld	s2,8(s1)
    LWIP_ASSERT("check that first pbuf can hold struct ip6_hdr",
    e888acc4:	02e7e863          	bltu	a5,a4,e888acf4 <ip6_output_if_src+0x132>
    e888acc8:	02f00593          	li	a1,47
    e888accc:	00045517          	auipc	a0,0x45
    e888acd0:	56450513          	addi	a0,a0,1380 # e88d0230 <in6addr_any+0x10>
    e888acd4:	ea4f10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888acd8:	00150693          	addi	a3,a0,1
    e888acdc:	4b800613          	li	a2,1208
    e888ace0:	00045597          	auipc	a1,0x45
    e888ace4:	5d858593          	addi	a1,a1,1496 # e88d02b8 <in6addr_any+0x98>
    e888ace8:	00044517          	auipc	a0,0x44
    e888acec:	3c850513          	addi	a0,a0,968 # e88cf0b0 <kSinTable1024+0x900>
    e888acf0:	dd6f10ef          	jal	ra,e887c2c6 <eLIBs_printf>
    IP6H_HOPLIM_SET(ip6hdr, hl);
    e888acf4:	018903a3          	sb	s8,7(s2)
    IP6H_NEXTH_SET(ip6hdr, nexth);
    e888acf8:	01790323          	sb	s7,6(s2)
    ip6_addr_copy_to_packed(ip6hdr->dest, *dest);
    e888acfc:	401c                	lw	a5,0(s0)
    IP6H_VTCFL_SET(ip6hdr, 6, tc, 0);
    e888acfe:	014b1b1b          	slliw	s6,s6,0x14
    e888ad02:	60000537          	lui	a0,0x60000
    ip6_addr_copy_to_packed(ip6hdr->dest, *dest);
    e888ad06:	00f92c23          	sw	a5,24(s2)
    e888ad0a:	405c                	lw	a5,4(s0)
    IP6H_VTCFL_SET(ip6hdr, 6, tc, 0);
    e888ad0c:	00ab6533          	or	a0,s6,a0
    ip6_addr_copy_to_packed(ip6hdr->dest, *dest);
    e888ad10:	00f92e23          	sw	a5,28(s2)
    e888ad14:	441c                	lw	a5,8(s0)
    e888ad16:	02f92023          	sw	a5,32(s2)
    e888ad1a:	445c                	lw	a5,12(s0)
    e888ad1c:	02f92223          	sw	a5,36(s2)
    IP6H_VTCFL_SET(ip6hdr, 6, tc, 0);
    e888ad20:	a0efc0ef          	jal	ra,e8886f2e <lwip_htonl>
    e888ad24:	00a92023          	sw	a0,0(s2)
    IP6H_PLEN_SET(ip6hdr, (u16_t)(p->tot_len - IP6_HLEN));
    e888ad28:	0104d503          	lhu	a0,16(s1)
    e888ad2c:	fd85051b          	addiw	a0,a0,-40
    e888ad30:	3c05350b          	extu	a0,a0,15,0
    e888ad34:	9eafc0ef          	jal	ra,e8886f1e <lwip_htons>
    e888ad38:	00a91223          	sh	a0,4(s2)
    if (src == NULL) {
    e888ad3c:	000a1663          	bnez	s4,e888ad48 <ip6_output_if_src+0x186>
      src = IP6_ADDR_ANY6;
    e888ad40:	00045a17          	auipc	s4,0x45
    e888ad44:	5a8a0a13          	addi	s4,s4,1448 # e88d02e8 <ip6_addr_any>
    ip6_addr_copy_to_packed(ip6hdr->src, *src);
    e888ad48:	000a2783          	lw	a5,0(s4)
    e888ad4c:	00f92423          	sw	a5,8(s2)
    e888ad50:	004a2783          	lw	a5,4(s4)
    e888ad54:	00f92623          	sw	a5,12(s2)
    e888ad58:	008a2783          	lw	a5,8(s4)
    e888ad5c:	00f92823          	sw	a5,16(s2)
    e888ad60:	00ca2783          	lw	a5,12(s4)
    e888ad64:	00f92a23          	sw	a5,20(s2)
  IP6_STATS_INC(ip6.xmit);
    e888ad68:	0d6ad783          	lhu	a5,214(s5)
    e888ad6c:	09898713          	addi	a4,s3,152
    e888ad70:	863a                	mv	a2,a4
    e888ad72:	2785                	addiw	a5,a5,1
    e888ad74:	0cfa9b23          	sh	a5,214(s5)
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888ad78:	05098793          	addi	a5,s3,80
      if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
    e888ad7c:	00074683          	lbu	a3,0(a4) # 9000 <memcmp-0xe87f7000>
    e888ad80:	8ac1                	andi	a3,a3,16
    e888ad82:	ceb5                	beqz	a3,e888adfe <ip6_output_if_src+0x23c>
    e888ad84:	400c                	lw	a1,0(s0)
    e888ad86:	4394                	lw	a3,0(a5)
    e888ad88:	06d59b63          	bne	a1,a3,e888adfe <ip6_output_if_src+0x23c>
          ip6_addr_cmp(dest, netif_ip6_addr(netif, i))) {
    e888ad8c:	404c                	lw	a1,4(s0)
    e888ad8e:	43d4                	lw	a3,4(a5)
    e888ad90:	06d59763          	bne	a1,a3,e888adfe <ip6_output_if_src+0x23c>
    e888ad94:	440c                	lw	a1,8(s0)
    e888ad96:	4794                	lw	a3,8(a5)
    e888ad98:	06d59363          	bne	a1,a3,e888adfe <ip6_output_if_src+0x23c>
    e888ad9c:	444c                	lw	a1,12(s0)
    e888ad9e:	47d4                	lw	a3,12(a5)
    e888ada0:	04d59f63          	bne	a1,a3,e888adfe <ip6_output_if_src+0x23c>
    e888ada4:	01044583          	lbu	a1,16(s0)
    e888ada8:	0107c683          	lbu	a3,16(a5)
    e888adac:	04d59963          	bne	a1,a3,e888adfe <ip6_output_if_src+0x23c>
        return netif_loop_output(netif, p);
    e888adb0:	85a6                	mv	a1,s1
    e888adb2:	854e                	mv	a0,s3
    e888adb4:	00b030ef          	jal	ra,e888e5be <netif_loop_output>
    e888adb8:	b5e5                	j	e888aca0 <ip6_output_if_src+0xde>
    ip6hdr = (struct ip6_hdr *)p->payload;
    e888adba:	6498                	ld	a4,8(s1)
    ip6_addr_copy_from_packed(dest_addr, ip6hdr->dest);
    e888adbc:	6f14                	ld	a3,24(a4)
    e888adbe:	4f1c                	lw	a5,24(a4)
    e888adc0:	7318                	ld	a4,32(a4)
    e888adc2:	e436                	sd	a3,8(sp)
    ip6_addr_assign_zone(&dest_addr, IP6_UNKNOWN, netif);
    e888adc4:	66a1                	lui	a3,0x8
    ip6_addr_copy_from_packed(dest_addr, ip6hdr->dest);
    e888adc6:	e83a                	sd	a4,16(sp)
    ip6_addr_assign_zone(&dest_addr, IP6_UNKNOWN, netif);
    e888adc8:	6731                	lui	a4,0xc
    e888adca:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888adce:	8f7d                	and	a4,a4,a5
    e888add0:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e888add4:	00d70c63          	beq	a4,a3,e888adec <ip6_output_if_src+0x22a>
    e888add8:	6725                	lui	a4,0x9
    e888adda:	177d                	addi	a4,a4,-1
    e888addc:	8ff9                	and	a5,a5,a4
    e888adde:	e017879b          	addiw	a5,a5,-511
    e888ade2:	eff7f793          	andi	a5,a5,-257
    e888ade6:	2781                	sext.w	a5,a5
    e888ade8:	4701                	li	a4,0
    e888adea:	e791                	bnez	a5,e888adf6 <ip6_output_if_src+0x234>
    e888adec:	10e9c703          	lbu	a4,270(s3)
    e888adf0:	2705                	addiw	a4,a4,1
    e888adf2:	0ff77713          	andi	a4,a4,255
    e888adf6:	00e10c23          	sb	a4,24(sp)
    dest = &dest_addr;
    e888adfa:	0020                	addi	s0,sp,8
    e888adfc:	b7b5                	j	e888ad68 <ip6_output_if_src+0x1a6>
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888adfe:	07e1                	addi	a5,a5,24
    e888ae00:	0705                	addi	a4,a4,1
    e888ae02:	f6c79de3          	bne	a5,a2,e888ad7c <ip6_output_if_src+0x1ba>
  if ((p->flags & PBUF_FLAG_MCASTLOOP) != 0) {
    e888ae06:	0154c783          	lbu	a5,21(s1)
    e888ae0a:	8b91                	andi	a5,a5,4
    e888ae0c:	c789                	beqz	a5,e888ae16 <ip6_output_if_src+0x254>
    netif_loop_output(netif, p);
    e888ae0e:	85a6                	mv	a1,s1
    e888ae10:	854e                	mv	a0,s3
    e888ae12:	7ac030ef          	jal	ra,e888e5be <netif_loop_output>
  if (netif_mtu6(netif) && (p->tot_len > nd6_get_destination_mtu(dest, netif))) {
    e888ae16:	1029d783          	lhu	a5,258(s3)
    e888ae1a:	c385                	beqz	a5,e888ae3a <ip6_output_if_src+0x278>
    e888ae1c:	0104d903          	lhu	s2,16(s1)
    e888ae20:	85ce                	mv	a1,s3
    e888ae22:	8522                	mv	a0,s0
    e888ae24:	0aa030ef          	jal	ra,e888dece <nd6_get_destination_mtu>
    e888ae28:	2501                	sext.w	a0,a0
    e888ae2a:	01257863          	bgeu	a0,s2,e888ae3a <ip6_output_if_src+0x278>
    return ip6_frag(p, netif, dest);
    e888ae2e:	8622                	mv	a2,s0
    e888ae30:	85ce                	mv	a1,s3
    e888ae32:	8526                	mv	a0,s1
    e888ae34:	187000ef          	jal	ra,e888b7ba <ip6_frag>
    e888ae38:	b5a5                	j	e888aca0 <ip6_output_if_src+0xde>
  return netif->output_ip6(netif, p, dest);
    e888ae3a:	0d09b783          	ld	a5,208(s3)
    e888ae3e:	8622                	mv	a2,s0
    e888ae40:	85a6                	mv	a1,s1
    e888ae42:	854e                	mv	a0,s3
    e888ae44:	9782                	jalr	a5
    e888ae46:	bda9                	j	e888aca0 <ip6_output_if_src+0xde>

00000000e888ae48 <ip6_output_if>:
{
    e888ae48:	7139                	addi	sp,sp,-64
    e888ae4a:	f822                	sd	s0,48(sp)
    e888ae4c:	fc06                	sd	ra,56(sp)
    e888ae4e:	842a                	mv	s0,a0
  if (dest != LWIP_IP_HDRINCL) {
    e888ae50:	ca21                	beqz	a2,e888aea0 <ip6_output_if+0x58>
    if (src != NULL && ip6_addr_isany(src)) {
    e888ae52:	c5b9                	beqz	a1,e888aea0 <ip6_output_if+0x58>
    e888ae54:	4188                	lw	a0,0(a1)
    e888ae56:	e529                	bnez	a0,e888aea0 <ip6_output_if+0x58>
    e888ae58:	41c8                	lw	a0,4(a1)
    e888ae5a:	e139                	bnez	a0,e888aea0 <ip6_output_if+0x58>
    e888ae5c:	4588                	lw	a0,8(a1)
    e888ae5e:	e129                	bnez	a0,e888aea0 <ip6_output_if+0x58>
    e888ae60:	45c8                	lw	a0,12(a1)
    e888ae62:	ed1d                	bnez	a0,e888aea0 <ip6_output_if+0x58>
      src_used = ip_2_ip6(ip6_select_source_address(netif, dest));
    e888ae64:	85b2                	mv	a1,a2
    e888ae66:	8542                	mv	a0,a6
    e888ae68:	f43e                	sd	a5,40(sp)
    e888ae6a:	f03a                	sd	a4,32(sp)
    e888ae6c:	ec36                	sd	a3,24(sp)
    e888ae6e:	e832                	sd	a2,16(sp)
    e888ae70:	e442                	sd	a6,8(sp)
    e888ae72:	dfaff0ef          	jal	ra,e888a46c <ip6_select_source_address>
    e888ae76:	85aa                	mv	a1,a0
      if ((src_used == NULL) || ip6_addr_isany(src_used)) {
    e888ae78:	c915                	beqz	a0,e888aeac <ip6_output_if+0x64>
    e888ae7a:	00052883          	lw	a7,0(a0) # 60000000 <memcmp-0x88800000>
    e888ae7e:	6822                	ld	a6,8(sp)
    e888ae80:	fad1460b          	ldd	a2,a3,(sp),1,4
    e888ae84:	fcf1470b          	ldd	a4,a5,(sp),2,4
    e888ae88:	00089c63          	bnez	a7,e888aea0 <ip6_output_if+0x58>
    e888ae8c:	00452883          	lw	a7,4(a0)
    e888ae90:	00089863          	bnez	a7,e888aea0 <ip6_output_if+0x58>
    e888ae94:	00852883          	lw	a7,8(a0)
    e888ae98:	00089463          	bnez	a7,e888aea0 <ip6_output_if+0x58>
    e888ae9c:	4548                	lw	a0,12(a0)
    e888ae9e:	c519                	beqz	a0,e888aeac <ip6_output_if+0x64>
  return ip6_output_if_src(p, src_used, dest, hl, tc, nexth, netif);
    e888aea0:	8522                	mv	a0,s0
}
    e888aea2:	7442                	ld	s0,48(sp)
    e888aea4:	70e2                	ld	ra,56(sp)
    e888aea6:	6121                	addi	sp,sp,64
  return ip6_output_if_src(p, src_used, dest, hl, tc, nexth, netif);
    e888aea8:	d1bff06f          	j	e888abc2 <ip6_output_if_src>
        IP6_STATS_INC(ip6.rterr);
    e888aeac:	0005b717          	auipc	a4,0x5b
    e888aeb0:	5a470713          	addi	a4,a4,1444 # e88e6450 <lwip_stats>
    e888aeb4:	0e475783          	lhu	a5,228(a4)
}
    e888aeb8:	5571                	li	a0,-4
        IP6_STATS_INC(ip6.rterr);
    e888aeba:	2785                	addiw	a5,a5,1
    e888aebc:	0ef71223          	sh	a5,228(a4)
}
    e888aec0:	70e2                	ld	ra,56(sp)
    e888aec2:	7442                	ld	s0,48(sp)
    e888aec4:	6121                	addi	sp,sp,64
    e888aec6:	8082                	ret

00000000e888aec8 <ip6_options_add_hbh_ra>:
 * @param value the value of the router alert option data (e.g. IP6_ROUTER_ALERT_VALUE_MLD)
 * @return ERR_OK if hop-by-hop header was added, ERR_* otherwise
 */
err_t
ip6_options_add_hbh_ra(struct pbuf *p, u8_t nexth, u8_t value)
{
    e888aec8:	7179                	addi	sp,sp,-48
    e888aeca:	ec22                	sd	s0,24(sp)
    e888aecc:	842e                	mv	s0,a1
  struct ip6_opt_hdr *opt_hdr;

  /* fixed 4 bytes for router alert option and 2 bytes padding */
  const u8_t hlen = (sizeof(struct ip6_opt_hdr) * 2) + IP6_ROUTER_ALERT_DLEN;
  /* Move pointer to make room for hop-by-hop options header. */
  if (pbuf_add_header(p, sizeof(struct ip6_hbh_hdr) + hlen)) {
    e888aece:	45a1                	li	a1,8
{
    e888aed0:	f026                	sd	s1,32(sp)
    e888aed2:	e432                	sd	a2,8(sp)
    e888aed4:	f406                	sd	ra,40(sp)
    e888aed6:	84aa                	mv	s1,a0
  if (pbuf_add_header(p, sizeof(struct ip6_hbh_hdr) + hlen)) {
    e888aed8:	2c4040ef          	jal	ra,e888f19c <pbuf_add_header>
    e888aedc:	6622                	ld	a2,8(sp)
    e888aede:	c105                	beqz	a0,e888aefe <ip6_options_add_hbh_ra+0x36>
    LWIP_DEBUGF(IP6_DEBUG, ("ip6_options: no space for options header\n"));
    IP6_STATS_INC(ip6.err);
    e888aee0:	0005b717          	auipc	a4,0x5b
    e888aee4:	57070713          	addi	a4,a4,1392 # e88e6450 <lwip_stats>
    e888aee8:	0ea75783          	lhu	a5,234(a4)
    return ERR_BUF;
    e888aeec:	5579                	li	a0,-2
    IP6_STATS_INC(ip6.err);
    e888aeee:	2785                	addiw	a5,a5,1
    e888aef0:	0ef71523          	sh	a5,234(a4)
  opt_hdr = (struct ip6_opt_hdr *)((u8_t *)hbh_hdr + offset);
  IP6_OPT_TYPE(opt_hdr) = IP6_PADN_OPTION;
  IP6_OPT_DLEN(opt_hdr) = 0;

  return ERR_OK;
}
    e888aef4:	70a2                	ld	ra,40(sp)
    e888aef6:	6462                	ld	s0,24(sp)
    e888aef8:	7482                	ld	s1,32(sp)
    e888aefa:	6145                	addi	sp,sp,48
    e888aefc:	8082                	ret
  hbh_hdr = (struct ip6_hbh_hdr *)p->payload;
    e888aefe:	649c                	ld	a5,8(s1)
  hbh_hdr->_hlen = 0;
    e888af00:	50000713          	li	a4,1280
  return ERR_OK;
    e888af04:	4501                	li	a0,0
  hbh_hdr->_hlen = 0;
    e888af06:	00e790a3          	sh	a4,1(a5)
  IP6_OPT_DLEN(opt_hdr) = IP6_ROUTER_ALERT_DLEN;
    e888af0a:	4709                	li	a4,2
    e888af0c:	00e781a3          	sb	a4,3(a5)
  opt_data[1] = 0;
    e888af10:	10000713          	li	a4,256
  IP6_HBH_NEXTH(hbh_hdr) = nexth;
    e888af14:	00878023          	sb	s0,0(a5)
  opt_data[0] = value;
    e888af18:	00c78223          	sb	a2,4(a5)
  opt_data[1] = 0;
    e888af1c:	00e792a3          	sh	a4,5(a5)
  IP6_OPT_DLEN(opt_hdr) = 0;
    e888af20:	000783a3          	sb	zero,7(a5)
  return ERR_OK;
    e888af24:	bfc1                	j	e888aef4 <ip6_options_add_hbh_ra+0x2c>

00000000e888af26 <ip6_reass_free_complete_datagram>:
 *
 * @param ipr datagram to free
 */
static void
ip6_reass_free_complete_datagram(struct ip6_reassdata *ipr)
{
    e888af26:	7119                	addi	sp,sp,-128
    e888af28:	f8a2                	sd	s0,112(sp)
    e888af2a:	f4a6                	sd	s1,104(sp)
    e888af2c:	fc86                	sd	ra,120(sp)
    e888af2e:	f0ca                	sd	s2,96(sp)
    e888af30:	ecce                	sd	s3,88(sp)
    e888af32:	e8d2                	sd	s4,80(sp)
    e888af34:	e4d6                	sd	s5,72(sp)
    e888af36:	e0da                	sd	s6,64(sp)
    e888af38:	fc5e                	sd	s7,56(sp)
  u16_t clen;
  struct pbuf *p;
  struct ip6_reass_helper *iprh;

#if LWIP_ICMP6
  iprh = (struct ip6_reass_helper *)ipr->p->payload;
    e888af3a:	00853903          	ld	s2,8(a0)
{
    e888af3e:	842a                	mv	s0,a0
    e888af40:	4481                	li	s1,0
  iprh = (struct ip6_reass_helper *)ipr->p->payload;
    e888af42:	00893783          	ld	a5,8(s2)
  if (iprh->start == 0) {
    e888af46:	0087d703          	lhu	a4,8(a5)
    e888af4a:	e32d                	bnez	a4,e888afac <ip6_reass_free_complete_datagram+0x86>
    /* The first fragment was received, send ICMP time exceeded. */
    /* First, de-queue the first pbuf from r->p. */
    p = ipr->p;
    ipr->p = iprh->next_pbuf;
    e888af4c:	639c                	ld	a5,0(a5)
    /* Restore the part that we've overwritten with our helper structure, or we
     * might send garbage (and disclose a pointer) in the ICMPv6 reply. */
    MEMCPY(p->payload, ipr->orig_hdr, sizeof(iprh));
    e888af4e:	03850593          	addi	a1,a0,56
    e888af52:	4621                	li	a2,8
    ipr->p = iprh->next_pbuf;
    e888af54:	e51c                	sd	a5,8(a0)
    MEMCPY(p->payload, ipr->orig_hdr, sizeof(iprh));
    e888af56:	00893503          	ld	a0,8(s2)
    e888af5a:	c46f10ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    /* Then, move back to the original ipv6 header (we are now pointing to Fragment header).
       This cannot fail since we already checked when receiving this fragment. */
    if (pbuf_header_force(p, (s16_t)((u8_t*)p->payload - (u8_t*)ipr->iphdr))) {
    e888af5e:	00893583          	ld	a1,8(s2)
    e888af62:	681c                	ld	a5,16(s0)
    e888af64:	854a                	mv	a0,s2
    e888af66:	8d9d                	sub	a1,a1,a5
    e888af68:	3c05a58b          	ext	a1,a1,15,0
    e888af6c:	2cc040ef          	jal	ra,e888f238 <pbuf_header_force>
    e888af70:	cd69                	beqz	a0,e888b04a <ip6_reass_free_complete_datagram+0x124>
      LWIP_ASSERT("ip6_reass_free: moving p->payload to ip6 header failed\n", 0);
    e888af72:	02f00593          	li	a1,47
    e888af76:	00045517          	auipc	a0,0x45
    e888af7a:	48250513          	addi	a0,a0,1154 # e88d03f8 <ip6_addr_any+0x110>
    e888af7e:	bfaf10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888af82:	00150693          	addi	a3,a0,1
    e888af86:	0a900613          	li	a2,169
    e888af8a:	00045597          	auipc	a1,0x45
    e888af8e:	4fe58593          	addi	a1,a1,1278 # e88d0488 <ip6_addr_any+0x1a0>
    e888af92:	00044517          	auipc	a0,0x44
    e888af96:	11e50513          	addi	a0,a0,286 # e88cf0b0 <kSinTable1024+0x900>
    e888af9a:	b2cf10ef          	jal	ra,e887c2c6 <eLIBs_printf>
      ip6_addr_copy_from_packed(dest_addr, IPV6_FRAG_DEST(ipr));
      ip6_addr_set_zone(&dest_addr, ipr->dest_zone);
      /* Send the actual ICMP response. */
      icmp6_time_exceeded_with_addrs(p, ICMP6_TE_FRAG, &src_addr, &dest_addr);
    }
    clen = pbuf_clen(p);
    e888af9e:	854a                	mv	a0,s2
    e888afa0:	6b2040ef          	jal	ra,e888f652 <pbuf_clen>
    e888afa4:	84aa                	mv	s1,a0
    LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff);
    pbufs_freed = (u16_t)(pbufs_freed + clen);
    pbuf_free(p);
    e888afa6:	854a                	mv	a0,s2
    e888afa8:	2a4040ef          	jal	ra,e888f24c <pbuf_free>
  }
#endif /* LWIP_ICMP6 */

  /* First, free all received pbufs.  The individual pbufs need to be released
     separately as they have not yet been chained */
  p = ipr->p;
    e888afac:	00843903          	ld	s2,8(s0)
    iprh = (struct ip6_reass_helper *)p->payload;
    pcur = p;
    /* get the next pointer before freeing */
    p = iprh->next_pbuf;
    clen = pbuf_clen(pcur);
    LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff);
    e888afb0:	69c1                	lui	s3,0x10
    e888afb2:	00045a17          	auipc	s4,0x45
    e888afb6:	446a0a13          	addi	s4,s4,1094 # e88d03f8 <ip6_addr_any+0x110>
    e888afba:	00045a97          	auipc	s5,0x45
    e888afbe:	21ea8a93          	addi	s5,s5,542 # e88d01d8 <ip_addr_broadcast+0x200>
    e888afc2:	00044b17          	auipc	s6,0x44
    e888afc6:	0eeb0b13          	addi	s6,s6,238 # e88cf0b0 <kSinTable1024+0x900>
  while (p != NULL) {
    e888afca:	0a091763          	bnez	s2,e888b078 <ip6_reass_free_complete_datagram+0x152>
    pbufs_freed = (u16_t)(pbufs_freed + clen);
    pbuf_free(pcur);
  }

  /* Then, unchain the struct ip6_reassdata from the list and free it. */
  if (ipr == reassdatagrams) {
    e888afce:	0005b717          	auipc	a4,0x5b
    e888afd2:	d9a70713          	addi	a4,a4,-614 # e88e5d68 <reassdatagrams>
    e888afd6:	631c                	ld	a5,0(a4)
    e888afd8:	0e879463          	bne	a5,s0,e888b0c0 <ip6_reass_free_complete_datagram+0x19a>
    reassdatagrams = ipr->next;
    e888afdc:	601c                	ld	a5,0(s0)
    e888afde:	e31c                	sd	a5,0(a4)
    }
    if (prev != NULL) {
      prev->next = ipr->next;
    }
  }
  memp_free(MEMP_IP6_REASSDATA, ipr);
    e888afe0:	85a2                	mv	a1,s0
    e888afe2:	4539                	li	a0,14
    e888afe4:	1ba030ef          	jal	ra,e888e19e <memp_free>

  /* Finally, update number of pbufs in reassembly queue */
  LWIP_ASSERT("ip_reass_pbufcount >= clen", ip6_reass_pbufcount >= pbufs_freed);
    e888afe8:	0005b417          	auipc	s0,0x5b
    e888afec:	d7c40413          	addi	s0,s0,-644 # e88e5d64 <ip6_reass_pbufcount>
    e888aff0:	00045703          	lhu	a4,0(s0)
    e888aff4:	0004879b          	sext.w	a5,s1
    e888aff8:	02f77863          	bgeu	a4,a5,e888b028 <ip6_reass_free_complete_datagram+0x102>
    e888affc:	02f00593          	li	a1,47
    e888b000:	00045517          	auipc	a0,0x45
    e888b004:	3f850513          	addi	a0,a0,1016 # e88d03f8 <ip6_addr_any+0x110>
    e888b008:	b70f10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b00c:	00150693          	addi	a3,a0,1
    e888b010:	0de00613          	li	a2,222
    e888b014:	00045597          	auipc	a1,0x45
    e888b018:	0ac58593          	addi	a1,a1,172 # e88d00c0 <ip_addr_broadcast+0xe8>
    e888b01c:	00044517          	auipc	a0,0x44
    e888b020:	09450513          	addi	a0,a0,148 # e88cf0b0 <kSinTable1024+0x900>
    e888b024:	aa2f10ef          	jal	ra,e887c2c6 <eLIBs_printf>
  ip6_reass_pbufcount = (u16_t)(ip6_reass_pbufcount - pbufs_freed);
    e888b028:	00045783          	lhu	a5,0(s0)
    e888b02c:	409784bb          	subw	s1,a5,s1
    e888b030:	00941023          	sh	s1,0(s0)
}
    e888b034:	70e6                	ld	ra,120(sp)
    e888b036:	7446                	ld	s0,112(sp)
    e888b038:	74a6                	ld	s1,104(sp)
    e888b03a:	7906                	ld	s2,96(sp)
    e888b03c:	69e6                	ld	s3,88(sp)
    e888b03e:	6a46                	ld	s4,80(sp)
    e888b040:	6aa6                	ld	s5,72(sp)
    e888b042:	6b06                	ld	s6,64(sp)
    e888b044:	7be2                	ld	s7,56(sp)
    e888b046:	6109                	addi	sp,sp,128
    e888b048:	8082                	ret
      ip6_addr_copy_from_packed(src_addr, IPV6_FRAG_SRC(ipr));
    e888b04a:	6c1c                	ld	a5,24(s0)
      icmp6_time_exceeded_with_addrs(p, ICMP6_TE_FRAG, &src_addr, &dest_addr);
    e888b04c:	0834                	addi	a3,sp,24
    e888b04e:	860a                	mv	a2,sp
      ip6_addr_copy_from_packed(src_addr, IPV6_FRAG_SRC(ipr));
    e888b050:	e03e                	sd	a5,0(sp)
    e888b052:	701c                	ld	a5,32(s0)
      icmp6_time_exceeded_with_addrs(p, ICMP6_TE_FRAG, &src_addr, &dest_addr);
    e888b054:	4585                	li	a1,1
    e888b056:	854a                	mv	a0,s2
      ip6_addr_copy_from_packed(src_addr, IPV6_FRAG_SRC(ipr));
    e888b058:	e43e                	sd	a5,8(sp)
      ip6_addr_set_zone(&src_addr, ipr->src_zone);
    e888b05a:	05044783          	lbu	a5,80(s0)
    e888b05e:	00f10823          	sb	a5,16(sp)
      ip6_addr_copy_from_packed(dest_addr, IPV6_FRAG_DEST(ipr));
    e888b062:	741c                	ld	a5,40(s0)
    e888b064:	ec3e                	sd	a5,24(sp)
    e888b066:	781c                	ld	a5,48(s0)
    e888b068:	f03e                	sd	a5,32(sp)
      ip6_addr_set_zone(&dest_addr, ipr->dest_zone);
    e888b06a:	05144783          	lbu	a5,81(s0)
    e888b06e:	02f10423          	sb	a5,40(sp)
      icmp6_time_exceeded_with_addrs(p, ICMP6_TE_FRAG, &src_addr, &dest_addr);
    e888b072:	743110ef          	jal	ra,e889cfb4 <icmp6_time_exceeded_with_addrs>
    e888b076:	b725                	j	e888af9e <ip6_reass_free_complete_datagram+0x78>
    iprh = (struct ip6_reass_helper *)p->payload;
    e888b078:	00893783          	ld	a5,8(s2)
    clen = pbuf_clen(pcur);
    e888b07c:	854a                	mv	a0,s2
    p = iprh->next_pbuf;
    e888b07e:	0007bb83          	ld	s7,0(a5)
    clen = pbuf_clen(pcur);
    e888b082:	5d0040ef          	jal	ra,e888f652 <pbuf_clen>
    LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff);
    e888b086:	009507bb          	addw	a5,a0,s1
    e888b08a:	84be                	mv	s1,a5
    e888b08c:	0137cf63          	blt	a5,s3,e888b0aa <ip6_reass_free_complete_datagram+0x184>
    e888b090:	02f00593          	li	a1,47
    e888b094:	8552                	mv	a0,s4
    e888b096:	ae2f10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b09a:	00150693          	addi	a3,a0,1
    e888b09e:	0c700613          	li	a2,199
    e888b0a2:	85d6                	mv	a1,s5
    e888b0a4:	855a                	mv	a0,s6
    e888b0a6:	a20f10ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pbuf_free(pcur);
    e888b0aa:	854a                	mv	a0,s2
    pbufs_freed = (u16_t)(pbufs_freed + clen);
    e888b0ac:	3c04b48b          	extu	s1,s1,15,0
    pbuf_free(pcur);
    e888b0b0:	19c040ef          	jal	ra,e888f24c <pbuf_free>
    p = iprh->next_pbuf;
    e888b0b4:	895e                	mv	s2,s7
    e888b0b6:	bf11                	j	e888afca <ip6_reass_free_complete_datagram+0xa4>
      if (prev->next == ipr) {
    e888b0b8:	6398                	ld	a4,0(a5)
    e888b0ba:	00870563          	beq	a4,s0,e888b0c4 <ip6_reass_free_complete_datagram+0x19e>
    e888b0be:	87ba                	mv	a5,a4
    while (prev != NULL) {
    e888b0c0:	ffe5                	bnez	a5,e888b0b8 <ip6_reass_free_complete_datagram+0x192>
    e888b0c2:	bf39                	j	e888afe0 <ip6_reass_free_complete_datagram+0xba>
      prev->next = ipr->next;
    e888b0c4:	6018                	ld	a4,0(s0)
    e888b0c6:	e398                	sd	a4,0(a5)
    e888b0c8:	bf21                	j	e888afe0 <ip6_reass_free_complete_datagram+0xba>

00000000e888b0ca <ip6_reass_remove_oldest_datagram>:
 * @param pbufs_needed number of pbufs needed to enqueue
 *        (used for freeing other datagrams if not enough space)
 */
static void
ip6_reass_remove_oldest_datagram(struct ip6_reassdata *ipr, int pbufs_needed)
{
    e888b0ca:	7139                	addi	sp,sp,-64
    e888b0cc:	ec22                	sd	s0,24(sp)
    e888b0ce:	f026                	sd	s1,32(sp)
    e888b0d0:	f44a                	sd	s2,40(sp)
    e888b0d2:	f84e                	sd	s3,48(sp)
    e888b0d4:	fc06                	sd	ra,56(sp)
    e888b0d6:	84aa                	mv	s1,a0
  struct ip6_reassdata *r, *oldest;

  /* Free datagrams until being allowed to enqueue 'pbufs_needed' pbufs,
   * but don't free the current datagram! */
  do {
    r = oldest = reassdatagrams;
    e888b0d8:	0005b417          	auipc	s0,0x5b
    e888b0dc:	c9040413          	addi	s0,s0,-880 # e88e5d68 <reassdatagrams>
      return;
    }
    if (oldest != NULL) {
      ip6_reass_free_complete_datagram(oldest);
    }
  } while (((ip6_reass_pbufcount + pbufs_needed) > IP_REASS_MAX_PBUFS) && (reassdatagrams != NULL));
    e888b0e0:	0005b917          	auipc	s2,0x5b
    e888b0e4:	c8490913          	addi	s2,s2,-892 # e88e5d64 <ip6_reass_pbufcount>
    e888b0e8:	49a9                	li	s3,10
    r = oldest = reassdatagrams;
    e888b0ea:	6008                	ld	a0,0(s0)
    e888b0ec:	87aa                	mv	a5,a0
    while (r != NULL) {
    e888b0ee:	e795                	bnez	a5,e888b11a <ip6_reass_remove_oldest_datagram+0x50>
    if (oldest == ipr) {
    e888b0f0:	00950e63          	beq	a0,s1,e888b10c <ip6_reass_remove_oldest_datagram+0x42>
    if (oldest != NULL) {
    e888b0f4:	c509                	beqz	a0,e888b0fe <ip6_reass_remove_oldest_datagram+0x34>
    e888b0f6:	e42e                	sd	a1,8(sp)
      ip6_reass_free_complete_datagram(oldest);
    e888b0f8:	e2fff0ef          	jal	ra,e888af26 <ip6_reass_free_complete_datagram>
    e888b0fc:	65a2                	ld	a1,8(sp)
  } while (((ip6_reass_pbufcount + pbufs_needed) > IP_REASS_MAX_PBUFS) && (reassdatagrams != NULL));
    e888b0fe:	00095783          	lhu	a5,0(s2)
    e888b102:	9fad                	addw	a5,a5,a1
    e888b104:	00f9d463          	bge	s3,a5,e888b10c <ip6_reass_remove_oldest_datagram+0x42>
    e888b108:	601c                	ld	a5,0(s0)
    e888b10a:	f3e5                	bnez	a5,e888b0ea <ip6_reass_remove_oldest_datagram+0x20>
}
    e888b10c:	70e2                	ld	ra,56(sp)
    e888b10e:	6462                	ld	s0,24(sp)
    e888b110:	7482                	ld	s1,32(sp)
    e888b112:	7922                	ld	s2,40(sp)
    e888b114:	79c2                	ld	s3,48(sp)
    e888b116:	6121                	addi	sp,sp,64
    e888b118:	8082                	ret
      if (r != ipr) {
    e888b11a:	00978a63          	beq	a5,s1,e888b12e <ip6_reass_remove_oldest_datagram+0x64>
        if (r->timer <= oldest->timer) {
    e888b11e:	04f54683          	lbu	a3,79(a0)
    e888b122:	04f7c703          	lbu	a4,79(a5)
    e888b126:	00e6b733          	sltu	a4,a3,a4
    e888b12a:	40e7950b          	mveqz	a0,a5,a4
      r = r->next;
    e888b12e:	639c                	ld	a5,0(a5)
    e888b130:	bf7d                	j	e888b0ee <ip6_reass_remove_oldest_datagram+0x24>

00000000e888b132 <ip6_reass_tmr>:
  r = reassdatagrams;
    e888b132:	0005b797          	auipc	a5,0x5b
    e888b136:	c3678793          	addi	a5,a5,-970 # e88e5d68 <reassdatagrams>
    e888b13a:	6388                	ld	a0,0(a5)
  while (r != NULL) {
    e888b13c:	e509                	bnez	a0,e888b146 <ip6_reass_tmr+0x14>
    e888b13e:	8082                	ret
      ip6_reass_free_complete_datagram(tmp);
    e888b140:	de7ff0ef          	jal	ra,e888af26 <ip6_reass_free_complete_datagram>
    e888b144:	a819                	j	e888b15a <ip6_reass_tmr+0x28>
{
    e888b146:	1141                	addi	sp,sp,-16
    e888b148:	e406                	sd	ra,8(sp)
    e888b14a:	e022                	sd	s0,0(sp)
    if (r->timer > 0) {
    e888b14c:	04f54783          	lbu	a5,79(a0)
    e888b150:	6100                	ld	s0,0(a0)
    e888b152:	d7fd                	beqz	a5,e888b140 <ip6_reass_tmr+0xe>
      r->timer--;
    e888b154:	37fd                	addiw	a5,a5,-1
    e888b156:	04f507a3          	sb	a5,79(a0)
{
    e888b15a:	8522                	mv	a0,s0
  while (r != NULL) {
    e888b15c:	f865                	bnez	s0,e888b14c <ip6_reass_tmr+0x1a>
}
    e888b15e:	60a2                	ld	ra,8(sp)
    e888b160:	6402                	ld	s0,0(sp)
    e888b162:	0141                	addi	sp,sp,16
    e888b164:	8082                	ret

00000000e888b166 <ip6_reass>:
 * @return NULL if reassembly is incomplete, pbuf pointing to
 *         IPv6 Header if reassembly is complete
 */
struct pbuf *
ip6_reass(struct pbuf *p)
{
    e888b166:	7175                	addi	sp,sp,-144
    e888b168:	f8ca                	sd	s2,112(sp)
  ptrdiff_t hdrdiff;
  u16_t clen;
  u8_t valid = 1;
  struct pbuf *q, *next_pbuf;

  IP6_FRAG_STATS_INC(ip6_frag.recv);
    e888b16a:	0005b917          	auipc	s2,0x5b
    e888b16e:	2e690913          	addi	s2,s2,742 # e88e6450 <lwip_stats>
{
    e888b172:	f0d2                	sd	s4,96(sp)
    e888b174:	e506                	sd	ra,136(sp)
    e888b176:	e122                	sd	s0,128(sp)
    e888b178:	fca6                	sd	s1,120(sp)
    e888b17a:	f4ce                	sd	s3,104(sp)
    e888b17c:	ecd6                	sd	s5,88(sp)
    e888b17e:	e8da                	sd	s6,80(sp)
    e888b180:	e4de                	sd	s7,72(sp)
    e888b182:	e0e2                	sd	s8,64(sp)
    e888b184:	fc66                	sd	s9,56(sp)
    e888b186:	f86a                	sd	s10,48(sp)
    e888b188:	f46e                	sd	s11,40(sp)
  IP6_FRAG_STATS_INC(ip6_frag.recv);
    e888b18a:	10895783          	lhu	a5,264(s2)
{
    e888b18e:	8a2a                	mv	s4,a0
  IP6_FRAG_STATS_INC(ip6_frag.recv);
    e888b190:	2785                	addiw	a5,a5,1
    e888b192:	10f91423          	sh	a5,264(s2)

  /* ip6_frag_hdr must be in the first pbuf, not chained. Checked by caller. */
  LWIP_ASSERT("IPv6 fragment header does not fit in first pbuf",
    e888b196:	01255703          	lhu	a4,18(a0)
    e888b19a:	479d                	li	a5,7
    e888b19c:	02e7e863          	bltu	a5,a4,e888b1cc <ip6_reass+0x66>
    e888b1a0:	02f00593          	li	a1,47
    e888b1a4:	00045517          	auipc	a0,0x45
    e888b1a8:	25450513          	addi	a0,a0,596 # e88d03f8 <ip6_addr_any+0x110>
    e888b1ac:	9ccf10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b1b0:	00150693          	addi	a3,a0,1
    e888b1b4:	11f00613          	li	a2,287
    e888b1b8:	00045597          	auipc	a1,0x45
    e888b1bc:	16058593          	addi	a1,a1,352 # e88d0318 <ip6_addr_any+0x30>
    e888b1c0:	00044517          	auipc	a0,0x44
    e888b1c4:	ef050513          	addi	a0,a0,-272 # e88cf0b0 <kSinTable1024+0x900>
    e888b1c8:	8fef10ef          	jal	ra,e887c2c6 <eLIBs_printf>
    p->len >= sizeof(struct ip6_frag_hdr));

  frag_hdr = (struct ip6_frag_hdr *) p->payload;
    e888b1cc:	008a3b83          	ld	s7,8(s4)

  clen = pbuf_clen(p);
    e888b1d0:	8552                	mv	a0,s4
    e888b1d2:	480040ef          	jal	ra,e888f652 <pbuf_clen>
    e888b1d6:	8daa                	mv	s11,a0

  offset = lwip_ntohs(frag_hdr->_fragment_offset);
    e888b1d8:	002bd503          	lhu	a0,2(s7)

  /* Calculate fragment length from IPv6 payload length.
   * Adjust for headers before Fragment Header.
   * And finally adjust by Fragment Header length. */
  len = lwip_ntohs(ip6_current_header()->_plen);
    e888b1dc:	0005b497          	auipc	s1,0x5b
    e888b1e0:	96c48493          	addi	s1,s1,-1684 # e88e5b48 <ip_data>
  offset = lwip_ntohs(frag_hdr->_fragment_offset);
    e888b1e4:	d3bfb0ef          	jal	ra,e8886f1e <lwip_htons>
    e888b1e8:	e42a                	sd	a0,8(sp)
  len = lwip_ntohs(ip6_current_header()->_plen);
    e888b1ea:	6c9c                	ld	a5,24(s1)
    e888b1ec:	0047d503          	lhu	a0,4(a5)
    e888b1f0:	d2ffb0ef          	jal	ra,e8886f1e <lwip_htons>
  hdrdiff = (u8_t*)p->payload - (const u8_t*)ip6_current_header();
    e888b1f4:	008a3403          	ld	s0,8(s4)
    e888b1f8:	6c9c                	ld	a5,24(s1)
  len = lwip_ntohs(ip6_current_header()->_plen);
    e888b1fa:	89aa                	mv	s3,a0
  hdrdiff = (u8_t*)p->payload - (const u8_t*)ip6_current_header();
    e888b1fc:	8c1d                	sub	s0,s0,a5
  LWIP_ASSERT("not a valid pbuf (ip6_input check missing?)", hdrdiff <= 0xFFFF);
    e888b1fe:	67c1                	lui	a5,0x10
    e888b200:	04f44163          	blt	s0,a5,e888b242 <ip6_reass+0xdc>
    e888b204:	02f00593          	li	a1,47
    e888b208:	00045517          	auipc	a0,0x45
    e888b20c:	1f050513          	addi	a0,a0,496 # e88d03f8 <ip6_addr_any+0x110>
    e888b210:	968f10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b214:	00150693          	addi	a3,a0,1
    e888b218:	12c00613          	li	a2,300
  LWIP_ASSERT("not a valid pbuf (ip6_input check missing?)", hdrdiff >= IP6_HLEN);
    e888b21c:	00045597          	auipc	a1,0x45
    e888b220:	12c58593          	addi	a1,a1,300 # e88d0348 <ip6_addr_any+0x60>
    e888b224:	00044517          	auipc	a0,0x44
    e888b228:	e8c50513          	addi	a0,a0,-372 # e88cf0b0 <kSinTable1024+0x900>
    e888b22c:	89af10ef          	jal	ra,e887c2c6 <eLIBs_printf>
  hdrdiff -= IP6_HLEN;
  hdrdiff += IP6_FRAG_HLEN;
    e888b230:	1401                	addi	s0,s0,-32
  if (hdrdiff > len) {
    e888b232:	0289d963          	bge	s3,s0,e888b264 <ip6_reass+0xfe>
    iprh_tmp = (struct ip6_reass_helper*)q->payload;
    if (start < iprh_tmp->start) {
#if IP_REASS_CHECK_OVERLAP
      if (end > iprh_tmp->start) {
        /* fragment overlaps with following, throw away */
        IP6_FRAG_STATS_INC(ip6_frag.proterr);
    e888b236:	11695783          	lhu	a5,278(s2)
    e888b23a:	2785                	addiw	a5,a5,1
    e888b23c:	10f91b23          	sh	a5,278(s2)
        goto nullreturn;
    e888b240:	a499                	j	e888b486 <ip6_reass+0x320>
  LWIP_ASSERT("not a valid pbuf (ip6_input check missing?)", hdrdiff >= IP6_HLEN);
    e888b242:	02700793          	li	a5,39
    e888b246:	fe87c5e3          	blt	a5,s0,e888b230 <ip6_reass+0xca>
    e888b24a:	02f00593          	li	a1,47
    e888b24e:	00045517          	auipc	a0,0x45
    e888b252:	1aa50513          	addi	a0,a0,426 # e88d03f8 <ip6_addr_any+0x110>
    e888b256:	922f10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b25a:	00150693          	addi	a3,a0,1
    e888b25e:	12d00613          	li	a2,301
    e888b262:	bf6d                	j	e888b21c <ip6_reass+0xb6>
  start = (offset & IP6_FRAG_OFFSET_MASK);
    e888b264:	67a2                	ld	a5,8(sp)
  len = (u16_t)(len - hdrdiff);
    e888b266:	408989bb          	subw	s3,s3,s0
    e888b26a:	3c09b98b          	extu	s3,s3,15,0
  start = (offset & IP6_FRAG_OFFSET_MASK);
    e888b26e:	ff87fc93          	andi	s9,a5,-8
    e888b272:	3c0cb78b          	extu	a5,s9,15,0
    e888b276:	e03e                	sd	a5,0(sp)
  if (start > (0xFFFF - len)) {
    e888b278:	67c1                	lui	a5,0x10
    e888b27a:	4c02                	lw	s8,0(sp)
    e888b27c:	37fd                	addiw	a5,a5,-1
    e888b27e:	413787bb          	subw	a5,a5,s3
    e888b282:	fb87cae3          	blt	a5,s8,e888b236 <ip6_reass+0xd0>
  for (ipr = reassdatagrams, ipr_prev = NULL; ipr != NULL; ipr = ipr->next) {
    e888b286:	0005bb17          	auipc	s6,0x5b
    e888b28a:	ae2b0b13          	addi	s6,s6,-1310 # e88e5d68 <reassdatagrams>
    e888b28e:	000b3403          	ld	s0,0(s6)
        ip6_addr_cmp_packed(ip6_current_src_addr(), &(IPV6_FRAG_SRC(ipr)), ipr->src_zone) &&
    e888b292:	50dc                	lw	a5,36(s1)
    e888b294:	5498                	lw	a4,40(s1)
    e888b296:	54d4                	lw	a3,44(s1)
    e888b298:	5890                	lw	a2,48(s1)
    e888b29a:	0344c583          	lbu	a1,52(s1)
        ip6_addr_cmp_packed(ip6_current_dest_addr(), &(IPV6_FRAG_DEST(ipr)), ipr->dest_zone)) {
    e888b29e:	5cc8                	lw	a0,60(s1)
    e888b2a0:	0404a803          	lw	a6,64(s1)
    e888b2a4:	0444a883          	lw	a7,68(s1)
    e888b2a8:	0484a303          	lw	t1,72(s1)
    e888b2ac:	04c4ce03          	lbu	t3,76(s1)
  for (ipr = reassdatagrams, ipr_prev = NULL; ipr != NULL; ipr = ipr->next) {
    e888b2b0:	4a81                	li	s5,0
    e888b2b2:	e059                	bnez	s0,e888b338 <ip6_reass+0x1d2>
    ipr = (struct ip6_reassdata *)memp_malloc(MEMP_IP6_REASSDATA);
    e888b2b4:	4539                	li	a0,14
    e888b2b6:	697020ef          	jal	ra,e888e14c <memp_malloc>
    e888b2ba:	842a                	mv	s0,a0
    if (ipr == NULL) {
    e888b2bc:	ed19                	bnez	a0,e888b2da <ip6_reass+0x174>
      ip6_reass_remove_oldest_datagram(ipr, clen);
    e888b2be:	000d859b          	sext.w	a1,s11
    e888b2c2:	e09ff0ef          	jal	ra,e888b0ca <ip6_reass_remove_oldest_datagram>
      ipr = (struct ip6_reassdata *)memp_malloc(MEMP_IP6_REASSDATA);
    e888b2c6:	4539                	li	a0,14
    e888b2c8:	685020ef          	jal	ra,e888e14c <memp_malloc>
    e888b2cc:	842a                	mv	s0,a0
      if (ipr != NULL) {
    e888b2ce:	1a050763          	beqz	a0,e888b47c <ip6_reass+0x316>
        for (ipr_prev = reassdatagrams; ipr_prev != NULL; ipr_prev = ipr_prev->next) {
    e888b2d2:	000b3a83          	ld	s5,0(s6)
    e888b2d6:	180a9763          	bnez	s5,e888b464 <ip6_reass+0x2fe>
    memset(ipr, 0, sizeof(struct ip6_reassdata));
    e888b2da:	05800613          	li	a2,88
    e888b2de:	4581                	li	a1,0
    e888b2e0:	8522                	mv	a0,s0
    e888b2e2:	8b2f10ef          	jal	ra,e887c394 <eLIBs_memset>
    ipr->timer = IPV6_REASS_MAXAGE;
    e888b2e6:	03c00793          	li	a5,60
    e888b2ea:	04f407a3          	sb	a5,79(s0)
    ipr->next = reassdatagrams;
    e888b2ee:	000b3783          	ld	a5,0(s6)
    MEMCPY(&ipr->src, &ip6_current_header()->src, sizeof(ipr->src));
    e888b2f2:	4641                	li	a2,16
    e888b2f4:	01840513          	addi	a0,s0,24
    ipr->next = reassdatagrams;
    e888b2f8:	e01c                	sd	a5,0(s0)
    ipr->iphdr = ip_data.current_ip6_header;
    e888b2fa:	6c9c                	ld	a5,24(s1)
    reassdatagrams = ipr;
    e888b2fc:	008b3023          	sd	s0,0(s6)
    ipr->iphdr = ip_data.current_ip6_header;
    e888b300:	e81c                	sd	a5,16(s0)
    MEMCPY(&ipr->src, &ip6_current_header()->src, sizeof(ipr->src));
    e888b302:	6c8c                	ld	a1,24(s1)
    e888b304:	05a1                	addi	a1,a1,8
    e888b306:	89af10ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    MEMCPY(&ipr->dest, &ip6_current_header()->dest, sizeof(ipr->dest));
    e888b30a:	6c8c                	ld	a1,24(s1)
    e888b30c:	4641                	li	a2,16
    e888b30e:	02840513          	addi	a0,s0,40
    e888b312:	05e1                	addi	a1,a1,24
    e888b314:	88cf10ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    ipr->src_zone = ip6_addr_zone(ip6_current_src_addr());
    e888b318:	0344c783          	lbu	a5,52(s1)
    e888b31c:	04f40823          	sb	a5,80(s0)
    ipr->dest_zone = ip6_addr_zone(ip6_current_dest_addr());
    e888b320:	04c4c783          	lbu	a5,76(s1)
    e888b324:	04f408a3          	sb	a5,81(s0)
    ipr->identification = frag_hdr->_identification;
    e888b328:	004ba783          	lw	a5,4(s7)
    e888b32c:	c43c                	sw	a5,72(s0)
    ipr->nexth = frag_hdr->_nexth;
    e888b32e:	000bc783          	lbu	a5,0(s7)
    e888b332:	04f40723          	sb	a5,78(s0)
    e888b336:	a0a5                	j	e888b39e <ip6_reass+0x238>
    if ((frag_hdr->_identification == ipr->identification) &&
    e888b338:	004baf03          	lw	t5,4(s7)
    e888b33c:	04842e83          	lw	t4,72(s0)
    e888b340:	11df1f63          	bne	t5,t4,e888b45e <ip6_reass+0x2f8>
    e888b344:	01842e83          	lw	t4,24(s0)
    e888b348:	10fe9b63          	bne	t4,a5,e888b45e <ip6_reass+0x2f8>
        ip6_addr_cmp_packed(ip6_current_src_addr(), &(IPV6_FRAG_SRC(ipr)), ipr->src_zone) &&
    e888b34c:	01c42e83          	lw	t4,28(s0)
    e888b350:	10ee9763          	bne	t4,a4,e888b45e <ip6_reass+0x2f8>
    e888b354:	02042e83          	lw	t4,32(s0)
    e888b358:	10de9363          	bne	t4,a3,e888b45e <ip6_reass+0x2f8>
    e888b35c:	02442e83          	lw	t4,36(s0)
    e888b360:	0ece9f63          	bne	t4,a2,e888b45e <ip6_reass+0x2f8>
    e888b364:	05044e83          	lbu	t4,80(s0)
    e888b368:	0ebe9b63          	bne	t4,a1,e888b45e <ip6_reass+0x2f8>
    e888b36c:	02842e83          	lw	t4,40(s0)
    e888b370:	0eae9763          	bne	t4,a0,e888b45e <ip6_reass+0x2f8>
        ip6_addr_cmp_packed(ip6_current_dest_addr(), &(IPV6_FRAG_DEST(ipr)), ipr->dest_zone)) {
    e888b374:	02c42e83          	lw	t4,44(s0)
    e888b378:	0f0e9363          	bne	t4,a6,e888b45e <ip6_reass+0x2f8>
    e888b37c:	03042e83          	lw	t4,48(s0)
    e888b380:	0d1e9f63          	bne	t4,a7,e888b45e <ip6_reass+0x2f8>
    e888b384:	03442e83          	lw	t4,52(s0)
    e888b388:	0c6e9b63          	bne	t4,t1,e888b45e <ip6_reass+0x2f8>
    e888b38c:	05144e83          	lbu	t4,81(s0)
    e888b390:	0dce9763          	bne	t4,t3,e888b45e <ip6_reass+0x2f8>
      IP6_FRAG_STATS_INC(ip6_frag.cachehit);
    e888b394:	11c95783          	lhu	a5,284(s2)
    e888b398:	2785                	addiw	a5,a5,1
    e888b39a:	10f91e23          	sh	a5,284(s2)
  if ((ip6_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) {
    e888b39e:	0005bb97          	auipc	s7,0x5b
    e888b3a2:	9c6b8b93          	addi	s7,s7,-1594 # e88e5d64 <ip6_reass_pbufcount>
    e888b3a6:	000bd703          	lhu	a4,0(s7)
    e888b3aa:	000d8d1b          	sext.w	s10,s11
    e888b3ae:	4ca9                	li	s9,10
    e888b3b0:	01a7073b          	addw	a4,a4,s10
    e888b3b4:	02ecd063          	bge	s9,a4,e888b3d4 <ip6_reass+0x26e>
    ip6_reass_remove_oldest_datagram(ipr, clen);
    e888b3b8:	85ea                	mv	a1,s10
    e888b3ba:	8522                	mv	a0,s0
    e888b3bc:	d0fff0ef          	jal	ra,e888b0ca <ip6_reass_remove_oldest_datagram>
    if ((ip6_reass_pbufcount + clen) <= IP_REASS_MAX_PBUFS) {
    e888b3c0:	000bd583          	lhu	a1,0(s7)
    e888b3c4:	01a585bb          	addw	a1,a1,s10
    e888b3c8:	0abcca63          	blt	s9,a1,e888b47c <ip6_reass+0x316>
      for (ipr_prev = reassdatagrams; ipr_prev != NULL; ipr_prev = ipr_prev->next) {
    e888b3cc:	000b3a83          	ld	s5,0(s6)
    e888b3d0:	0a0a9063          	bnez	s5,e888b470 <ip6_reass+0x30a>
    u8_t hdrerr = pbuf_header_force(p, IPV6_FRAG_REQROOM);
    e888b3d4:	4591                	li	a1,4
    e888b3d6:	8552                	mv	a0,s4
    e888b3d8:	661030ef          	jal	ra,e888f238 <pbuf_header_force>
    LWIP_ASSERT("no room for struct ip6_reass_helper", hdrerr == 0);
    e888b3dc:	c51d                	beqz	a0,e888b40a <ip6_reass+0x2a4>
    e888b3de:	02f00593          	li	a1,47
    e888b3e2:	00045517          	auipc	a0,0x45
    e888b3e6:	01650513          	addi	a0,a0,22 # e88d03f8 <ip6_addr_any+0x110>
    e888b3ea:	f8ff00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b3ee:	00150693          	addi	a3,a0,1
    e888b3f2:	19f00613          	li	a2,415
    e888b3f6:	00045597          	auipc	a1,0x45
    e888b3fa:	f8258593          	addi	a1,a1,-126 # e88d0378 <ip6_addr_any+0x90>
    e888b3fe:	00044517          	auipc	a0,0x44
    e888b402:	cb250513          	addi	a0,a0,-846 # e88cf0b0 <kSinTable1024+0x900>
    e888b406:	ec1f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
  end = (u16_t)(start + len);
    e888b40a:	6782                	ld	a5,0(sp)
  for (q = ipr->p; q != NULL;) {
    e888b40c:	640c                	ld	a1,8(s0)
  iprh = (struct ip6_reass_helper *)p->payload;
    e888b40e:	008a3c83          	ld	s9,8(s4)
  end = (u16_t)(start + len);
    e888b412:	00f989bb          	addw	s3,s3,a5
    e888b416:	3c09b98b          	extu	s3,s3,15,0
  for (q = ipr->p; q != NULL;) {
    e888b41a:	88ae                	mv	a7,a1
  u8_t valid = 1;
    e888b41c:	4d05                	li	s10,1
  struct ip6_reass_helper *iprh, *iprh_tmp, *iprh_prev=NULL;
    e888b41e:	4781                	li	a5,0
  for (q = ipr->p; q != NULL;) {
    e888b420:	06089c63          	bnez	a7,e888b498 <ip6_reass+0x332>
    iprh_prev = iprh_tmp;
  }

  /* If q is NULL, then we made it to the end of the list. Determine what to do now */
  if (q == NULL) {
    if (iprh_prev != NULL) {
    e888b424:	10079e63          	bnez	a5,e888b540 <ip6_reass+0x3da>
      if (iprh_prev->end != start) {
        valid = 0;
      }
    } else {
#if IP_REASS_CHECK_OVERLAP
      LWIP_ASSERT("no previous fragment, this must be the first fragment!",
    e888b428:	c59d                	beqz	a1,e888b456 <ip6_reass+0x2f0>
    e888b42a:	02f00593          	li	a1,47
    e888b42e:	00045517          	auipc	a0,0x45
    e888b432:	fca50513          	addi	a0,a0,-54 # e88d03f8 <ip6_addr_any+0x110>
    e888b436:	f43f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b43a:	00150693          	addi	a3,a0,1
    e888b43e:	1f200613          	li	a2,498
    e888b442:	00045597          	auipc	a1,0x45
    e888b446:	c0e58593          	addi	a1,a1,-1010 # e88d0050 <ip_addr_broadcast+0x78>
    e888b44a:	00044517          	auipc	a0,0x44
    e888b44e:	c6650513          	addi	a0,a0,-922 # e88cf0b0 <kSinTable1024+0x900>
    e888b452:	e75f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
        ipr->p == NULL);
#endif /* IP_REASS_CHECK_OVERLAP */
      /* this is the first fragment we ever received for this ip datagram */
      ipr->p = p;
    e888b456:	01443423          	sd	s4,8(s0)
  next_pbuf = NULL;
    e888b45a:	4881                	li	a7,0
    e888b45c:	a8a9                	j	e888b4b6 <ip6_reass+0x350>
  for (ipr = reassdatagrams, ipr_prev = NULL; ipr != NULL; ipr = ipr->next) {
    e888b45e:	8aa2                	mv	s5,s0
    e888b460:	6000                	ld	s0,0(s0)
    e888b462:	bd81                	j	e888b2b2 <ip6_reass+0x14c>
          if (ipr_prev->next == ipr) {
    e888b464:	000ab783          	ld	a5,0(s5)
    e888b468:	e68789e3          	beq	a5,s0,e888b2da <ip6_reass+0x174>
    e888b46c:	8abe                	mv	s5,a5
    e888b46e:	b5a5                	j	e888b2d6 <ip6_reass+0x170>
        if (ipr_prev->next == ipr) {
    e888b470:	000ab783          	ld	a5,0(s5)
    e888b474:	f68780e3          	beq	a5,s0,e888b3d4 <ip6_reass+0x26e>
    e888b478:	8abe                	mv	s5,a5
    e888b47a:	bf99                	j	e888b3d0 <ip6_reass+0x26a>
      IP6_FRAG_STATS_INC(ip6_frag.memerr);
    e888b47c:	11295783          	lhu	a5,274(s2)
    e888b480:	2785                	addiw	a5,a5,1
    e888b482:	10f91923          	sh	a5,274(s2)
  }
  /* the datagram is not (yet?) reassembled completely */
  return NULL;

nullreturn:
  IP6_FRAG_STATS_INC(ip6_frag.drop);
    e888b486:	10c95783          	lhu	a5,268(s2)
  pbuf_free(p);
    e888b48a:	8552                	mv	a0,s4
  IP6_FRAG_STATS_INC(ip6_frag.drop);
    e888b48c:	2785                	addiw	a5,a5,1
    e888b48e:	10f91623          	sh	a5,268(s2)
  pbuf_free(p);
    e888b492:	5bb030ef          	jal	ra,e888f24c <pbuf_free>
  return NULL;
    e888b496:	a041                	j	e888b516 <ip6_reass+0x3b0>
    iprh_tmp = (struct ip6_reass_helper*)q->payload;
    e888b498:	0088b683          	ld	a3,8(a7) # ffffffffffff8008 <__DRAM0_INF_BASE+0xffffffff00008008>
    if (start < iprh_tmp->start) {
    e888b49c:	0086d603          	lhu	a2,8(a3)
    e888b4a0:	08cc7063          	bgeu	s8,a2,e888b520 <ip6_reass+0x3ba>
      if (end > iprh_tmp->start) {
    e888b4a4:	d93669e3          	bltu	a2,s3,e888b236 <ip6_reass+0xd0>
      if (iprh_prev != NULL) {
    e888b4a8:	cbad                	beqz	a5,e888b51a <ip6_reass+0x3b4>
        if (start < iprh_prev->end) {
    e888b4aa:	00a7d683          	lhu	a3,10(a5) # 1000a <memcmp-0xe87efff6>
    e888b4ae:	d8dc64e3          	bltu	s8,a3,e888b236 <ip6_reass+0xd0>
        iprh_prev->next_pbuf = p;
    e888b4b2:	0147b023          	sd	s4,0(a5)
  ip6_reass_pbufcount = (u16_t)(ip6_reass_pbufcount + clen);
    e888b4b6:	000bd783          	lhu	a5,0(s7)
    e888b4ba:	01b78dbb          	addw	s11,a5,s11
  if (start == 0) {
    e888b4be:	6782                	ld	a5,0(sp)
  ip6_reass_pbufcount = (u16_t)(ip6_reass_pbufcount + clen);
    e888b4c0:	01bb9023          	sh	s11,0(s7)
  if (start == 0) {
    e888b4c4:	ef81                	bnez	a5,e888b4dc <ip6_reass+0x376>
    ipr->iphdr = ip_data.current_ip6_header;
    e888b4c6:	6c9c                	ld	a5,24(s1)
    MEMCPY(ipr->orig_hdr, p->payload, sizeof(*iprh));
    e888b4c8:	4631                	li	a2,12
    e888b4ca:	03840513          	addi	a0,s0,56
    ipr->iphdr = ip_data.current_ip6_header;
    e888b4ce:	e81c                	sd	a5,16(s0)
    MEMCPY(ipr->orig_hdr, p->payload, sizeof(*iprh));
    e888b4d0:	008a3583          	ld	a1,8(s4)
    e888b4d4:	e846                	sd	a7,16(sp)
    e888b4d6:	ecbf00ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e888b4da:	68c2                	ld	a7,16(sp)
  iprh->start = start;
    e888b4dc:	6782                	ld	a5,0(sp)
  iprh->next_pbuf = next_pbuf;
    e888b4de:	011cb023          	sd	a7,0(s9)
  iprh->end = end;
    e888b4e2:	013c9523          	sh	s3,10(s9)
  iprh->start = start;
    e888b4e6:	00fc9423          	sh	a5,8(s9)
  if ((offset & IP6_FRAG_MORE_FLAG) == 0) {
    e888b4ea:	67a2                	ld	a5,8(sp)
    e888b4ec:	8b85                	andi	a5,a5,1
    e888b4ee:	e399                	bnez	a5,e888b4f4 <ip6_reass+0x38e>
    ipr->datagram_len = iprh->end;
    e888b4f0:	05341623          	sh	s3,76(s0)
  iprh_tmp = (struct ip6_reass_helper*)ipr->p->payload;
    e888b4f4:	641c                	ld	a5,8(s0)
    e888b4f6:	0087b983          	ld	s3,8(a5)
  if (iprh_tmp->start != 0) {
    e888b4fa:	0089d783          	lhu	a5,8(s3) # 10008 <memcmp-0xe87efff8>
    e888b4fe:	c391                	beqz	a5,e888b502 <ip6_reass+0x39c>
    valid = 0;
    e888b500:	4d01                	li	s10,0
  if (ipr->datagram_len == 0) {
    e888b502:	04c45783          	lhu	a5,76(s0)
    e888b506:	e391                	bnez	a5,e888b50a <ip6_reass+0x3a4>
    valid = 0;
    e888b508:	4d01                	li	s10,0
  q = iprh->next_pbuf;
    e888b50a:	000cb903          	ld	s2,0(s9)
  while ((q != NULL) && valid) {
    e888b50e:	08090b63          	beqz	s2,e888b5a4 <ip6_reass+0x43e>
    e888b512:	060d1d63          	bnez	s10,e888b58c <ip6_reass+0x426>
  return NULL;
    e888b516:	4901                	li	s2,0
    e888b518:	a2e5                	j	e888b700 <ip6_reass+0x59a>
        ipr->p = p;
    e888b51a:	01443423          	sd	s4,8(s0)
    e888b51e:	bf61                	j	e888b4b6 <ip6_reass+0x350>
    } else if (start == iprh_tmp->start) {
    e888b520:	f78603e3          	beq	a2,s8,e888b486 <ip6_reass+0x320>
    } else if (start < iprh_tmp->end) {
    e888b524:	00a6d503          	lhu	a0,10(a3)
    e888b528:	d0ac67e3          	bltu	s8,a0,e888b236 <ip6_reass+0xd0>
      if (iprh_prev != NULL) {
    e888b52c:	c791                	beqz	a5,e888b538 <ip6_reass+0x3d2>
        if (iprh_prev->end != iprh_tmp->start) {
    e888b52e:	00a7d783          	lhu	a5,10(a5)
    e888b532:	00c78363          	beq	a5,a2,e888b538 <ip6_reass+0x3d2>
          valid = 0;
    e888b536:	4d01                	li	s10,0
    q = iprh_tmp->next_pbuf;
    e888b538:	0006b883          	ld	a7,0(a3)
    iprh_prev = iprh_tmp;
    e888b53c:	87b6                	mv	a5,a3
    e888b53e:	b5cd                	j	e888b420 <ip6_reass+0x2ba>
      LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= start);
    e888b540:	00a7d683          	lhu	a3,10(a5)
    e888b544:	02dc7c63          	bgeu	s8,a3,e888b57c <ip6_reass+0x416>
    e888b548:	02f00593          	li	a1,47
    e888b54c:	00045517          	auipc	a0,0x45
    e888b550:	eac50513          	addi	a0,a0,-340 # e88d03f8 <ip6_addr_any+0x110>
    e888b554:	ec46                	sd	a7,24(sp)
    e888b556:	e83e                	sd	a5,16(sp)
    e888b558:	e21f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b55c:	00150693          	addi	a3,a0,1
    e888b560:	1e900613          	li	a2,489
    e888b564:	00045597          	auipc	a1,0x45
    e888b568:	acc58593          	addi	a1,a1,-1332 # e88d0030 <ip_addr_broadcast+0x58>
    e888b56c:	00044517          	auipc	a0,0x44
    e888b570:	b4450513          	addi	a0,a0,-1212 # e88cf0b0 <kSinTable1024+0x900>
    e888b574:	d53f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888b578:	68e2                	ld	a7,24(sp)
    e888b57a:	67c2                	ld	a5,16(sp)
      iprh_prev->next_pbuf = p;
    e888b57c:	0147b023          	sd	s4,0(a5)
      if (iprh_prev->end != start) {
    e888b580:	00a7d783          	lhu	a5,10(a5)
    e888b584:	f38789e3          	beq	a5,s8,e888b4b6 <ip6_reass+0x350>
        valid = 0;
    e888b588:	4d01                	li	s10,0
    e888b58a:	b735                	j	e888b4b6 <ip6_reass+0x350>
    iprh = (struct ip6_reass_helper*)q->payload;
    e888b58c:	00893783          	ld	a5,8(s2)
    if (iprh_prev->end != iprh->start) {
    e888b590:	00acd683          	lhu	a3,10(s9)
    e888b594:	0087d703          	lhu	a4,8(a5)
    e888b598:	f6e69fe3          	bne	a3,a4,e888b516 <ip6_reass+0x3b0>
    q = iprh->next_pbuf;
    e888b59c:	0007b903          	ld	s2,0(a5)
    iprh_prev = iprh;
    e888b5a0:	8cbe                	mv	s9,a5
    e888b5a2:	b7b5                	j	e888b50e <ip6_reass+0x3a8>
  if (valid) {
    e888b5a4:	140d0e63          	beqz	s10,e888b700 <ip6_reass+0x59a>
          LWIP_ASSERT("no room for struct ip6_reass_helper", hdrerr == 0);
    e888b5a8:	00045a17          	auipc	s4,0x45
    e888b5ac:	e50a0a13          	addi	s4,s4,-432 # e88d03f8 <ip6_addr_any+0x110>
    e888b5b0:	00045c17          	auipc	s8,0x45
    e888b5b4:	dc8c0c13          	addi	s8,s8,-568 # e88d0378 <ip6_addr_any+0x90>
    e888b5b8:	00044c97          	auipc	s9,0x44
    e888b5bc:	af8c8c93          	addi	s9,s9,-1288 # e88cf0b0 <kSinTable1024+0x900>
    while (iprh != NULL) {
    e888b5c0:	16099063          	bnez	s3,e888b720 <ip6_reass+0x5ba>
    p = ipr->p;
    e888b5c4:	6404                	ld	s1,8(s0)
      MEMCPY(p->payload, ipr->orig_hdr, IPV6_FRAG_REQROOM);
    e888b5c6:	03840593          	addi	a1,s0,56
    e888b5ca:	4611                	li	a2,4
    e888b5cc:	6488                	ld	a0,8(s1)
    e888b5ce:	dd3f00ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      hdrerr = pbuf_remove_header(p, IPV6_FRAG_REQROOM);
    e888b5d2:	4591                	li	a1,4
    e888b5d4:	8526                	mv	a0,s1
    e888b5d6:	3d3030ef          	jal	ra,e888f1a8 <pbuf_remove_header>
      LWIP_ASSERT("no room for struct ip6_reass_helper", hdrerr == 0);
    e888b5da:	c51d                	beqz	a0,e888b608 <ip6_reass+0x4a2>
    e888b5dc:	02f00593          	li	a1,47
    e888b5e0:	00045517          	auipc	a0,0x45
    e888b5e4:	e1850513          	addi	a0,a0,-488 # e88d03f8 <ip6_addr_any+0x110>
    e888b5e8:	d91f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b5ec:	00150693          	addi	a3,a0,1
    e888b5f0:	25400613          	li	a2,596
    e888b5f4:	00045597          	auipc	a1,0x45
    e888b5f8:	d8458593          	addi	a1,a1,-636 # e88d0378 <ip6_addr_any+0x90>
    e888b5fc:	00044517          	auipc	a0,0x44
    e888b600:	ab450513          	addi	a0,a0,-1356 # e88cf0b0 <kSinTable1024+0x900>
    e888b604:	cc3f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    MEMMOVE((u8_t*)ipr->iphdr + sizeof(struct ip6_frag_hdr), ipr->iphdr,
    e888b608:	680c                	ld	a1,16(s0)
    e888b60a:	6490                	ld	a2,8(s1)
    e888b60c:	00858513          	addi	a0,a1,8
    e888b610:	8e0d                	sub	a2,a2,a1
    e888b612:	d9bf00ef          	jal	ra,e887c3ac <eLIBs_memmove>
    iphdr_ptr = (struct ip6_hdr*)((u8_t*)ipr->iphdr +
    e888b616:	01043a03          	ld	s4,16(s0)
    ipr->datagram_len = (u16_t)(ipr->datagram_len + ((u8_t*)p->payload - (u8_t*)iphdr_ptr)
    e888b61a:	6488                	ld	a0,8(s1)
    iphdr_ptr = (struct ip6_hdr*)((u8_t*)ipr->iphdr +
    e888b61c:	008a0993          	addi	s3,s4,8
    ipr->datagram_len = (u16_t)(ipr->datagram_len + ((u8_t*)p->payload - (u8_t*)iphdr_ptr)
    e888b620:	413507b3          	sub	a5,a0,s3
                         - IP6_HLEN);
    e888b624:	04c45503          	lhu	a0,76(s0)
    e888b628:	fd85051b          	addiw	a0,a0,-40
    e888b62c:	9d3d                	addw	a0,a0,a5
    ipr->datagram_len = (u16_t)(ipr->datagram_len + ((u8_t*)p->payload - (u8_t*)iphdr_ptr)
    e888b62e:	3c05350b          	extu	a0,a0,15,0
    e888b632:	04a41623          	sh	a0,76(s0)
    iphdr_ptr->_plen = lwip_htons(ipr->datagram_len);
    e888b636:	8e9fb0ef          	jal	ra,e8886f1e <lwip_htons>
    e888b63a:	00aa1623          	sh	a0,12(s4)
    if (IP6H_NEXTH(iphdr_ptr) == IP6_NEXTH_FRAGMENT) {
    e888b63e:	00ea4603          	lbu	a2,14(s4)
    e888b642:	02c00713          	li	a4,44
      u8_t *ptr = (u8_t *)iphdr_ptr + IP6_HLEN;
    e888b646:	030a0793          	addi	a5,s4,48
      while (*ptr != IP6_NEXTH_FRAGMENT) {
    e888b64a:	02c00693          	li	a3,44
    if (IP6H_NEXTH(iphdr_ptr) == IP6_NEXTH_FRAGMENT) {
    e888b64e:	10e61f63          	bne	a2,a4,e888b76c <ip6_reass+0x606>
      iphdr_ptr->_nexth = ipr->nexth;
    e888b652:	04e44783          	lbu	a5,78(s0)
    e888b656:	00fa0723          	sb	a5,14(s4)
    if (reassdatagrams == ipr) {
    e888b65a:	000b3783          	ld	a5,0(s6)
    e888b65e:	12879063          	bne	a5,s0,e888b77e <ip6_reass+0x618>
      reassdatagrams = ipr->next;
    e888b662:	601c                	ld	a5,0(s0)
    e888b664:	00fb3023          	sd	a5,0(s6)
    memp_free(MEMP_IP6_REASSDATA, ipr);
    e888b668:	85a2                	mv	a1,s0
    e888b66a:	4539                	li	a0,14
    e888b66c:	333020ef          	jal	ra,e888e19e <memp_free>
    clen = pbuf_clen(p);
    e888b670:	8526                	mv	a0,s1
    e888b672:	7e1030ef          	jal	ra,e888f652 <pbuf_clen>
    LWIP_ASSERT("ip6_reass_pbufcount >= clen", ip6_reass_pbufcount >= clen);
    e888b676:	0005079b          	sext.w	a5,a0
    e888b67a:	000bd703          	lhu	a4,0(s7)
    clen = pbuf_clen(p);
    e888b67e:	842a                	mv	s0,a0
    LWIP_ASSERT("ip6_reass_pbufcount >= clen", ip6_reass_pbufcount >= clen);
    e888b680:	02f77863          	bgeu	a4,a5,e888b6b0 <ip6_reass+0x54a>
    e888b684:	02f00593          	li	a1,47
    e888b688:	00045517          	auipc	a0,0x45
    e888b68c:	d7050513          	addi	a0,a0,-656 # e88d03f8 <ip6_addr_any+0x110>
    e888b690:	ce9f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b694:	00150693          	addi	a3,a0,1
    e888b698:	28a00613          	li	a2,650
    e888b69c:	00045597          	auipc	a1,0x45
    e888b6a0:	d0458593          	addi	a1,a1,-764 # e88d03a0 <ip6_addr_any+0xb8>
    e888b6a4:	00044517          	auipc	a0,0x44
    e888b6a8:	a0c50513          	addi	a0,a0,-1524 # e88cf0b0 <kSinTable1024+0x900>
    e888b6ac:	c1bf00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    ip6_reass_pbufcount = (u16_t)(ip6_reass_pbufcount - clen);
    e888b6b0:	000bd503          	lhu	a0,0(s7)
    if (pbuf_header_force(p, (s16_t)((u8_t*)p->payload - (u8_t*)iphdr_ptr))) {
    e888b6b4:	648c                	ld	a1,8(s1)
    ip6_reass_pbufcount = (u16_t)(ip6_reass_pbufcount - clen);
    e888b6b6:	9d01                	subw	a0,a0,s0
    if (pbuf_header_force(p, (s16_t)((u8_t*)p->payload - (u8_t*)iphdr_ptr))) {
    e888b6b8:	413585b3          	sub	a1,a1,s3
    ip6_reass_pbufcount = (u16_t)(ip6_reass_pbufcount - clen);
    e888b6bc:	00ab9023          	sh	a0,0(s7)
    if (pbuf_header_force(p, (s16_t)((u8_t*)p->payload - (u8_t*)iphdr_ptr))) {
    e888b6c0:	3c05a58b          	ext	a1,a1,15,0
    e888b6c4:	8526                	mv	a0,s1
    e888b6c6:	373030ef          	jal	ra,e888f238 <pbuf_header_force>
    e888b6ca:	0e050663          	beqz	a0,e888b7b6 <ip6_reass+0x650>
      LWIP_ASSERT("ip6_reass: moving p->payload to ip6 header failed\n", 0);
    e888b6ce:	02f00593          	li	a1,47
    e888b6d2:	00045517          	auipc	a0,0x45
    e888b6d6:	d2650513          	addi	a0,a0,-730 # e88d03f8 <ip6_addr_any+0x110>
    e888b6da:	c9ff00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b6de:	00150693          	addi	a3,a0,1
    e888b6e2:	28f00613          	li	a2,655
    e888b6e6:	00045597          	auipc	a1,0x45
    e888b6ea:	cda58593          	addi	a1,a1,-806 # e88d03c0 <ip6_addr_any+0xd8>
    e888b6ee:	00044517          	auipc	a0,0x44
    e888b6f2:	9c250513          	addi	a0,a0,-1598 # e88cf0b0 <kSinTable1024+0x900>
    e888b6f6:	bd1f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
      pbuf_free(p);
    e888b6fa:	8526                	mv	a0,s1
    e888b6fc:	351030ef          	jal	ra,e888f24c <pbuf_free>
}
    e888b700:	60aa                	ld	ra,136(sp)
    e888b702:	640a                	ld	s0,128(sp)
    e888b704:	854a                	mv	a0,s2
    e888b706:	74e6                	ld	s1,120(sp)
    e888b708:	7946                	ld	s2,112(sp)
    e888b70a:	79a6                	ld	s3,104(sp)
    e888b70c:	7a06                	ld	s4,96(sp)
    e888b70e:	6ae6                	ld	s5,88(sp)
    e888b710:	6b46                	ld	s6,80(sp)
    e888b712:	6ba6                	ld	s7,72(sp)
    e888b714:	6c06                	ld	s8,64(sp)
    e888b716:	7ce2                	ld	s9,56(sp)
    e888b718:	7d42                	ld	s10,48(sp)
    e888b71a:	7da2                	ld	s11,40(sp)
    e888b71c:	6149                	addi	sp,sp,144
    e888b71e:	8082                	ret
      next_pbuf = iprh->next_pbuf;
    e888b720:	0009b483          	ld	s1,0(s3)
      if (next_pbuf != NULL) {
    e888b724:	ea0480e3          	beqz	s1,e888b5c4 <ip6_reass+0x45e>
        pbuf_remove_header(next_pbuf, IP6_FRAG_HLEN);
    e888b728:	45a1                	li	a1,8
    e888b72a:	8526                	mv	a0,s1
        iprh_tmp = (struct ip6_reass_helper*)next_pbuf->payload;
    e888b72c:	0084b983          	ld	s3,8(s1)
        pbuf_remove_header(next_pbuf, IP6_FRAG_HLEN);
    e888b730:	279030ef          	jal	ra,e888f1a8 <pbuf_remove_header>
          u8_t hdrerr = pbuf_remove_header(next_pbuf, IPV6_FRAG_REQROOM);
    e888b734:	4591                	li	a1,4
    e888b736:	8526                	mv	a0,s1
    e888b738:	271030ef          	jal	ra,e888f1a8 <pbuf_remove_header>
          LWIP_ASSERT("no room for struct ip6_reass_helper", hdrerr == 0);
    e888b73c:	cd11                	beqz	a0,e888b758 <ip6_reass+0x5f2>
    e888b73e:	02f00593          	li	a1,47
    e888b742:	8552                	mv	a0,s4
    e888b744:	c35f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b748:	00150693          	addi	a3,a0,1
    e888b74c:	23b00613          	li	a2,571
    e888b750:	85e2                	mv	a1,s8
    e888b752:	8566                	mv	a0,s9
    e888b754:	b73f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
        pbuf_cat(ipr->p, next_pbuf);
    e888b758:	6408                	ld	a0,8(s0)
    e888b75a:	85a6                	mv	a1,s1
    e888b75c:	751030ef          	jal	ra,e888f6ac <pbuf_cat>
      iprh = iprh_tmp;
    e888b760:	b585                	j	e888b5c0 <ip6_reass+0x45a>
        ptr += 8 * (1 + ptr[1]);
    e888b762:	0017c703          	lbu	a4,1(a5)
    e888b766:	2705                	addiw	a4,a4,1
    e888b768:	06e7978b          	addsl	a5,a5,a4,3
      while (*ptr != IP6_NEXTH_FRAGMENT) {
    e888b76c:	0007c703          	lbu	a4,0(a5)
    e888b770:	fed719e3          	bne	a4,a3,e888b762 <ip6_reass+0x5fc>
      *ptr = ipr->nexth;
    e888b774:	04e44703          	lbu	a4,78(s0)
    e888b778:	00e78023          	sb	a4,0(a5)
    e888b77c:	bdf9                	j	e888b65a <ip6_reass+0x4f4>
      LWIP_ASSERT("sanity check linked list", ipr_prev != NULL);
    e888b77e:	020a9863          	bnez	s5,e888b7ae <ip6_reass+0x648>
    e888b782:	02f00593          	li	a1,47
    e888b786:	00045517          	auipc	a0,0x45
    e888b78a:	c7250513          	addi	a0,a0,-910 # e88d03f8 <ip6_addr_any+0x110>
    e888b78e:	bebf00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b792:	00150693          	addi	a3,a0,1
    e888b796:	28300613          	li	a2,643
    e888b79a:	00045597          	auipc	a1,0x45
    e888b79e:	9f658593          	addi	a1,a1,-1546 # e88d0190 <ip_addr_broadcast+0x1b8>
    e888b7a2:	00044517          	auipc	a0,0x44
    e888b7a6:	90e50513          	addi	a0,a0,-1778 # e88cf0b0 <kSinTable1024+0x900>
    e888b7aa:	b1df00ef          	jal	ra,e887c2c6 <eLIBs_printf>
      ipr_prev->next = ipr->next;
    e888b7ae:	601c                	ld	a5,0(s0)
    e888b7b0:	00fab023          	sd	a5,0(s5)
    e888b7b4:	bd55                	j	e888b668 <ip6_reass+0x502>
    return p;
    e888b7b6:	8926                	mv	s2,s1
    e888b7b8:	b7a1                	j	e888b700 <ip6_reass+0x59a>

00000000e888b7ba <ip6_frag>:
 *
 * @return ERR_OK if sent successfully, err_t otherwise
 */
err_t
ip6_frag(struct pbuf *p, struct netif *netif, const ip6_addr_t *dest)
{
    e888b7ba:	7175                	addi	sp,sp,-144
    e888b7bc:	ecd6                	sd	s5,88(sp)
    e888b7be:	8aaa                	mv	s5,a0
  u16_t newpbuflen = 0;
  u16_t left_to_copy;
#endif
  static u32_t identification;
  u16_t left, cop;
  const u16_t mtu = nd6_get_destination_mtu(dest, netif);
    e888b7c0:	8532                	mv	a0,a2
{
    e888b7c2:	fca6                	sd	s1,120(sp)
    e888b7c4:	fc66                	sd	s9,56(sp)
    e888b7c6:	e506                	sd	ra,136(sp)
    e888b7c8:	e122                	sd	s0,128(sp)
    e888b7ca:	f8ca                	sd	s2,112(sp)
    e888b7cc:	f4ce                	sd	s3,104(sp)
    e888b7ce:	f0d2                	sd	s4,96(sp)
    e888b7d0:	e8da                	sd	s6,80(sp)
    e888b7d2:	e4de                	sd	s7,72(sp)
    e888b7d4:	e0e2                	sd	s8,64(sp)
    e888b7d6:	f86a                	sd	s10,48(sp)
    e888b7d8:	f46e                	sd	s11,40(sp)
    e888b7da:	8cae                	mv	s9,a1
    e888b7dc:	e432                	sd	a2,8(sp)
  const u16_t mtu = nd6_get_destination_mtu(dest, netif);
    e888b7de:	6f0020ef          	jal	ra,e888dece <nd6_get_destination_mtu>
  const u16_t nfb = (u16_t)((mtu - (IP6_HLEN + IP6_FRAG_HLEN)) & IP6_FRAG_OFFSET_MASK);
    e888b7e2:	fd05049b          	addiw	s1,a0,-48
  u16_t fragment_offset = 0;
  u16_t last;
  u16_t poff = IP6_HLEN;

  identification++;
    e888b7e6:	0005a797          	auipc	a5,0x5a
    e888b7ea:	57a78793          	addi	a5,a5,1402 # e88e5d60 <identification.7160>
    e888b7ee:	4398                	lw	a4,0(a5)

  original_ip6hdr = (struct ip6_hdr *)p->payload;

  /* @todo we assume there are no options in the unfragmentable part (IPv6 header). */
  LWIP_ASSERT("p->tot_len >= IP6_HLEN", p->tot_len >= IP6_HLEN);
    e888b7f0:	010ad683          	lhu	a3,16(s5)
    e888b7f4:	e83e                	sd	a5,16(sp)
  identification++;
    e888b7f6:	2705                	addiw	a4,a4,1
    e888b7f8:	c398                	sw	a4,0(a5)
  original_ip6hdr = (struct ip6_hdr *)p->payload;
    e888b7fa:	008ab703          	ld	a4,8(s5)
  const u16_t nfb = (u16_t)((mtu - (IP6_HLEN + IP6_FRAG_HLEN)) & IP6_FRAG_OFFSET_MASK);
    e888b7fe:	98e1                	andi	s1,s1,-8
    e888b800:	3c04b48b          	extu	s1,s1,15,0
  original_ip6hdr = (struct ip6_hdr *)p->payload;
    e888b804:	e03a                	sd	a4,0(sp)
  LWIP_ASSERT("p->tot_len >= IP6_HLEN", p->tot_len >= IP6_HLEN);
    e888b806:	02700713          	li	a4,39
    e888b80a:	02d76863          	bltu	a4,a3,e888b83a <ip6_frag+0x80>
    e888b80e:	02f00593          	li	a1,47
    e888b812:	00045517          	auipc	a0,0x45
    e888b816:	be650513          	addi	a0,a0,-1050 # e88d03f8 <ip6_addr_any+0x110>
    e888b81a:	b5ff00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b81e:	00150693          	addi	a3,a0,1
    e888b822:	2e800613          	li	a2,744
    e888b826:	00045597          	auipc	a1,0x45
    e888b82a:	ada58593          	addi	a1,a1,-1318 # e88d0300 <ip6_addr_any+0x18>
    e888b82e:	00044517          	auipc	a0,0x44
    e888b832:	88250513          	addi	a0,a0,-1918 # e88cf0b0 <kSinTable1024+0x900>
    e888b836:	a91f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
  left = (u16_t)(p->tot_len - IP6_HLEN);
    e888b83a:	010ad403          	lhu	s0,16(s5)
  u16_t poff = IP6_HLEN;
    e888b83e:	02800993          	li	s3,40
  u16_t fragment_offset = 0;
    e888b842:	4b81                	li	s7,0
  left = (u16_t)(p->tot_len - IP6_HLEN);
    e888b844:	fd84041b          	addiw	s0,s0,-40
    e888b848:	3c04340b          	extu	s0,s0,15,0

  while (left) {
    e888b84c:	00048d9b          	sext.w	s11,s1
    e888b850:	00911f23          	sh	s1,30(sp)
    e888b854:	0005b917          	auipc	s2,0x5b
    e888b858:	bfc90913          	addi	s2,s2,-1028 # e88e6450 <lwip_stats>
    e888b85c:	e019                	bnez	s0,e888b862 <ip6_frag+0xa8>

    pbuf_free(rambuf);
    left = (u16_t)(left - cop);
    fragment_offset = (u16_t)(fragment_offset + cop);
  }
  return ERR_OK;
    e888b85e:	4501                	li	a0,0
    e888b860:	a825                	j	e888b898 <ip6_frag+0xde>
    cop = last ? left : nfb;
    e888b862:	00040b1b          	sext.w	s6,s0
    e888b866:	84a2                	mv	s1,s0
    e888b868:	016df463          	bgeu	s11,s6,e888b870 <ip6_frag+0xb6>
    e888b86c:	01e15483          	lhu	s1,30(sp)
    e888b870:	3c04ba0b          	extu	s4,s1,15,0
    rambuf = pbuf_alloc(PBUF_IP, cop + IP6_FRAG_HLEN, PBUF_RAM);
    e888b874:	24a1                	addiw	s1,s1,8
    e888b876:	3c04b48b          	extu	s1,s1,15,0
    e888b87a:	28000613          	li	a2,640
    e888b87e:	85a6                	mv	a1,s1
    e888b880:	03600513          	li	a0,54
    e888b884:	30d030ef          	jal	ra,e888f390 <pbuf_alloc>
    e888b888:	8c2a                	mv	s8,a0
    if (rambuf == NULL) {
    e888b88a:	e515                	bnez	a0,e888b8b6 <ip6_frag+0xfc>
      IP6_FRAG_STATS_INC(ip6_frag.memerr);
    e888b88c:	11295783          	lhu	a5,274(s2)
      return ERR_MEM;
    e888b890:	557d                	li	a0,-1
      IP6_FRAG_STATS_INC(ip6_frag.memerr);
    e888b892:	2785                	addiw	a5,a5,1
    e888b894:	10f91923          	sh	a5,274(s2)
}
    e888b898:	60aa                	ld	ra,136(sp)
    e888b89a:	640a                	ld	s0,128(sp)
    e888b89c:	74e6                	ld	s1,120(sp)
    e888b89e:	7946                	ld	s2,112(sp)
    e888b8a0:	79a6                	ld	s3,104(sp)
    e888b8a2:	7a06                	ld	s4,96(sp)
    e888b8a4:	6ae6                	ld	s5,88(sp)
    e888b8a6:	6b46                	ld	s6,80(sp)
    e888b8a8:	6ba6                	ld	s7,72(sp)
    e888b8aa:	6c06                	ld	s8,64(sp)
    e888b8ac:	7ce2                	ld	s9,56(sp)
    e888b8ae:	7d42                	ld	s10,48(sp)
    e888b8b0:	7da2                	ld	s11,40(sp)
    e888b8b2:	6149                	addi	sp,sp,144
    e888b8b4:	8082                	ret
    LWIP_ASSERT("this needs a pbuf in one piece!",
    e888b8b6:	01255683          	lhu	a3,18(a0)
    e888b8ba:	01055703          	lhu	a4,16(a0)
    e888b8be:	00e69463          	bne	a3,a4,e888b8c6 <ip6_frag+0x10c>
    e888b8c2:	6118                	ld	a4,0(a0)
    e888b8c4:	c71d                	beqz	a4,e888b8f2 <ip6_frag+0x138>
    e888b8c6:	02f00593          	li	a1,47
    e888b8ca:	00045517          	auipc	a0,0x45
    e888b8ce:	b2e50513          	addi	a0,a0,-1234 # e88d03f8 <ip6_addr_any+0x110>
    e888b8d2:	aa7f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888b8d6:	00150693          	addi	a3,a0,1
    e888b8da:	2f800613          	li	a2,760
    e888b8de:	00044597          	auipc	a1,0x44
    e888b8e2:	73258593          	addi	a1,a1,1842 # e88d0010 <ip_addr_broadcast+0x38>
    e888b8e6:	00043517          	auipc	a0,0x43
    e888b8ea:	7ca50513          	addi	a0,a0,1994 # e88cf0b0 <kSinTable1024+0x900>
    e888b8ee:	9d9f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    poff += pbuf_copy_partial(p, (u8_t*)rambuf->payload + IP6_FRAG_HLEN, cop, poff);
    e888b8f2:	008c3583          	ld	a1,8(s8)
    e888b8f6:	86ce                	mv	a3,s3
    e888b8f8:	8652                	mv	a2,s4
    e888b8fa:	05a1                	addi	a1,a1,8
    e888b8fc:	8556                	mv	a0,s5
    e888b8fe:	054040ef          	jal	ra,e888f952 <pbuf_copy_partial>
    e888b902:	013509bb          	addw	s3,a0,s3
    if (pbuf_add_header(rambuf, IP6_HLEN)) {
    e888b906:	02800593          	li	a1,40
    e888b90a:	8562                	mv	a0,s8
    poff += pbuf_copy_partial(p, (u8_t*)rambuf->payload + IP6_FRAG_HLEN, cop, poff);
    e888b90c:	3c09b98b          	extu	s3,s3,15,0
    if (pbuf_add_header(rambuf, IP6_HLEN)) {
    e888b910:	08d030ef          	jal	ra,e888f19c <pbuf_add_header>
    e888b914:	c509                	beqz	a0,e888b91e <ip6_frag+0x164>
      pbuf_free(rambuf);
    e888b916:	8562                	mv	a0,s8
    e888b918:	135030ef          	jal	ra,e888f24c <pbuf_free>
    e888b91c:	bf85                	j	e888b88c <ip6_frag+0xd2>
    SMEMCPY(rambuf->payload, original_ip6hdr, IP6_HLEN);
    e888b91e:	6582                	ld	a1,0(sp)
    e888b920:	008c3503          	ld	a0,8(s8)
    e888b924:	02800613          	li	a2,40
    frag_hdr->_fragment_offset = lwip_htons((u16_t)((fragment_offset & IP6_FRAG_OFFSET_MASK) | (last ? 0 : IP6_FRAG_MORE_FLAG)));
    e888b928:	016dbb33          	sltu	s6,s11,s6
    SMEMCPY(rambuf->payload, original_ip6hdr, IP6_HLEN);
    e888b92c:	a75f00ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    ip6hdr = (struct ip6_hdr *)rambuf->payload;
    e888b930:	008c3d03          	ld	s10,8(s8)
    frag_hdr->_nexth = original_ip6hdr->_nexth;
    e888b934:	6782                	ld	a5,0(sp)
    frag_hdr->_fragment_offset = lwip_htons((u16_t)((fragment_offset & IP6_FRAG_OFFSET_MASK) | (last ? 0 : IP6_FRAG_MORE_FLAG)));
    e888b936:	ff8bf513          	andi	a0,s7,-8
    e888b93a:	01656533          	or	a0,a0,s6
    frag_hdr->_nexth = original_ip6hdr->_nexth;
    e888b93e:	0067c683          	lbu	a3,6(a5)
    frag_hdr->reserved = 0;
    e888b942:	020d04a3          	sb	zero,41(s10)
    left = (u16_t)(left - cop);
    e888b946:	4144043b          	subw	s0,s0,s4
    frag_hdr->_nexth = original_ip6hdr->_nexth;
    e888b94a:	02dd0423          	sb	a3,40(s10)
    frag_hdr->_fragment_offset = lwip_htons((u16_t)((fragment_offset & IP6_FRAG_OFFSET_MASK) | (last ? 0 : IP6_FRAG_MORE_FLAG)));
    e888b94e:	dd0fb0ef          	jal	ra,e8886f1e <lwip_htons>
    e888b952:	02ad1523          	sh	a0,42(s10)
    frag_hdr->_identification = lwip_htonl(identification);
    e888b956:	67c2                	ld	a5,16(sp)
    fragment_offset = (u16_t)(fragment_offset + cop);
    e888b958:	014b8bbb          	addw	s7,s7,s4
    left = (u16_t)(left - cop);
    e888b95c:	3c04340b          	extu	s0,s0,15,0
    frag_hdr->_identification = lwip_htonl(identification);
    e888b960:	4388                	lw	a0,0(a5)
    fragment_offset = (u16_t)(fragment_offset + cop);
    e888b962:	3c0bbb8b          	extu	s7,s7,15,0
    frag_hdr->_identification = lwip_htonl(identification);
    e888b966:	dc8fb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e888b96a:	02ad2623          	sw	a0,44(s10)
    IP6H_NEXTH_SET(ip6hdr, IP6_NEXTH_FRAGMENT);
    e888b96e:	02c00793          	li	a5,44
    e888b972:	00fd0323          	sb	a5,6(s10)
    IP6H_PLEN_SET(ip6hdr, (u16_t)(cop + IP6_FRAG_HLEN));
    e888b976:	8526                	mv	a0,s1
    e888b978:	da6fb0ef          	jal	ra,e8886f1e <lwip_htons>
    e888b97c:	00ad1223          	sh	a0,4(s10)
    IP6_FRAG_STATS_INC(ip6_frag.xmit);
    e888b980:	10695703          	lhu	a4,262(s2)
    netif->output_ip6(netif, rambuf, dest);
    e888b984:	6622                	ld	a2,8(sp)
    e888b986:	85e2                	mv	a1,s8
    IP6_FRAG_STATS_INC(ip6_frag.xmit);
    e888b988:	2705                	addiw	a4,a4,1
    e888b98a:	10e91323          	sh	a4,262(s2)
    netif->output_ip6(netif, rambuf, dest);
    e888b98e:	0d0cb703          	ld	a4,208(s9)
    e888b992:	8566                	mv	a0,s9
    e888b994:	9702                	jalr	a4
    pbuf_free(rambuf);
    e888b996:	8562                	mv	a0,s8
    e888b998:	0b5030ef          	jal	ra,e888f24c <pbuf_free>
    fragment_offset = (u16_t)(fragment_offset + cop);
    e888b99c:	b5c1                	j	e888b85c <ip6_frag+0xa2>

00000000e888b99e <mld6_delayed_report>:
 *              should be sent
 * @param maxresp_in the max resp delay provided in the query
 */
static void
mld6_delayed_report(struct mld_group *group, u16_t maxresp_in)
{
    e888b99e:	1101                	addi	sp,sp,-32
    e888b9a0:	e422                	sd	s0,8(sp)
    e888b9a2:	e826                	sd	s1,16(sp)
    e888b9a4:	ec06                	sd	ra,24(sp)
  /* Convert maxresp from milliseconds to tmr ticks */
  u16_t maxresp = maxresp_in / MLD6_TMR_INTERVAL;
  if (maxresp == 0) {
    e888b9a6:	06300793          	li	a5,99
{
    e888b9aa:	84aa                	mv	s1,a0
    e888b9ac:	4405                	li	s0,1
  if (maxresp == 0) {
    e888b9ae:	00b7f863          	bgeu	a5,a1,e888b9be <mld6_delayed_report+0x20>
  u16_t maxresp = maxresp_in / MLD6_TMR_INTERVAL;
    e888b9b2:	06400513          	li	a0,100
    e888b9b6:	02a5d53b          	divuw	a0,a1,a0
    e888b9ba:	3c05340b          	extu	s0,a0,15,0
    maxresp = 1;
  }

#ifdef LWIP_RAND
  /* Randomize maxresp. (if LWIP_RAND is supported) */
  maxresp = (u16_t)(LWIP_RAND() % maxresp);
    e888b9be:	80000537          	lui	a0,0x80000
    e888b9c2:	fff54513          	not	a0,a0
    e888b9c6:	92df00ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e888b9ca:	0285753b          	remuw	a0,a0,s0
  if (maxresp == 0) {
    e888b9ce:	e111                	bnez	a0,e888b9d2 <mld6_delayed_report+0x34>
    e888b9d0:	4505                	li	a0,1
    maxresp = 1;
  }
#endif /* LWIP_RAND */

  /* Apply timer value if no report has been scheduled already. */
  if ((group->group_state == MLD6_GROUP_IDLE_MEMBER) ||
    e888b9d2:	01d4c783          	lbu	a5,29(s1)
    e888b9d6:	4709                	li	a4,2
    e888b9d8:	3c05350b          	extu	a0,a0,15,0
    e888b9dc:	00e78a63          	beq	a5,a4,e888b9f0 <mld6_delayed_report+0x52>
    e888b9e0:	4705                	li	a4,1
    e888b9e2:	00e79c63          	bne	a5,a4,e888b9fa <mld6_delayed_report+0x5c>
     ((group->group_state == MLD6_GROUP_DELAYING_MEMBER) &&
      ((group->timer == 0) || (maxresp < group->timer)))) {
    e888b9e6:	01e4d783          	lhu	a5,30(s1)
     ((group->group_state == MLD6_GROUP_DELAYING_MEMBER) &&
    e888b9ea:	c399                	beqz	a5,e888b9f0 <mld6_delayed_report+0x52>
      ((group->timer == 0) || (maxresp < group->timer)))) {
    e888b9ec:	00f57763          	bgeu	a0,a5,e888b9fa <mld6_delayed_report+0x5c>
    group->timer = maxresp;
    group->group_state = MLD6_GROUP_DELAYING_MEMBER;
    e888b9f0:	4785                	li	a5,1
    group->timer = maxresp;
    e888b9f2:	00a49f23          	sh	a0,30(s1)
    group->group_state = MLD6_GROUP_DELAYING_MEMBER;
    e888b9f6:	00f48ea3          	sb	a5,29(s1)
  }
}
    e888b9fa:	60e2                	ld	ra,24(sp)
    e888b9fc:	6422                	ld	s0,8(sp)
    e888b9fe:	64c2                	ld	s1,16(sp)
    e888ba00:	6105                	addi	sp,sp,32
    e888ba02:	8082                	ret

00000000e888ba04 <mld6_send>:
 * @param group the group to report or quit
 * @param type ICMP6_TYPE_MLR (report) or ICMP6_TYPE_MLD (done)
 */
static void
mld6_send(struct netif *netif, struct mld_group *group, u8_t type)
{
    e888ba04:	715d                	addi	sp,sp,-80
    e888ba06:	f052                	sd	s4,32(sp)
    e888ba08:	ec56                	sd	s5,24(sp)
    e888ba0a:	e45e                	sd	s7,8(sp)
    e888ba0c:	8aaa                	mv	s5,a0
    e888ba0e:	8a2e                	mv	s4,a1
    e888ba10:	8bb2                	mv	s7,a2
  struct mld_header *mld_hdr;
  struct pbuf *p;
  const ip6_addr_t *src_addr;

  /* Allocate a packet. Size is MLD header + IPv6 Hop-by-hop options header. */
  p = pbuf_alloc(PBUF_IP, sizeof(struct mld_header) + MLD6_HBH_HLEN, PBUF_RAM);
    e888ba12:	02000593          	li	a1,32
    e888ba16:	28000613          	li	a2,640
    e888ba1a:	03600513          	li	a0,54
{
    e888ba1e:	f44e                	sd	s3,40(sp)
    e888ba20:	e486                	sd	ra,72(sp)
    e888ba22:	e0a2                	sd	s0,64(sp)
    e888ba24:	fc26                	sd	s1,56(sp)
    e888ba26:	f84a                	sd	s2,48(sp)
    e888ba28:	e85a                	sd	s6,16(sp)
  p = pbuf_alloc(PBUF_IP, sizeof(struct mld_header) + MLD6_HBH_HLEN, PBUF_RAM);
    e888ba2a:	167030ef          	jal	ra,e888f390 <pbuf_alloc>
  if (p == NULL) {
    e888ba2e:	0005b997          	auipc	s3,0x5b
    e888ba32:	a2298993          	addi	s3,s3,-1502 # e88e6450 <lwip_stats>
    e888ba36:	e10d                	bnez	a0,e888ba58 <mld6_send+0x54>
    MLD6_STATS_INC(mld6.memerr);
    e888ba38:	1289d783          	lhu	a5,296(s3)
    e888ba3c:	2785                	addiw	a5,a5,1
    e888ba3e:	12f99423          	sh	a5,296(s3)
  /* Send the packet out. */
  MLD6_STATS_INC(mld6.xmit);
  ip6_output_if(p, (ip6_addr_isany(src_addr)) ? NULL : src_addr, &(group->group_address),
      MLD6_HL, 0, IP6_NEXTH_HOPBYHOP, netif);
  pbuf_free(p);
}
    e888ba42:	60a6                	ld	ra,72(sp)
    e888ba44:	6406                	ld	s0,64(sp)
    e888ba46:	74e2                	ld	s1,56(sp)
    e888ba48:	7942                	ld	s2,48(sp)
    e888ba4a:	79a2                	ld	s3,40(sp)
    e888ba4c:	7a02                	ld	s4,32(sp)
    e888ba4e:	6ae2                	ld	s5,24(sp)
    e888ba50:	6b42                	ld	s6,16(sp)
    e888ba52:	6ba2                	ld	s7,8(sp)
    e888ba54:	6161                	addi	sp,sp,80
    e888ba56:	8082                	ret
  if (pbuf_remove_header(p, MLD6_HBH_HLEN)) {
    e888ba58:	45a1                	li	a1,8
    e888ba5a:	892a                	mv	s2,a0
    e888ba5c:	74c030ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    e888ba60:	c911                	beqz	a0,e888ba74 <mld6_send+0x70>
    pbuf_free(p);
    e888ba62:	854a                	mv	a0,s2
    e888ba64:	7e8030ef          	jal	ra,e888f24c <pbuf_free>
    MLD6_STATS_INC(mld6.lenerr);
    e888ba68:	1269d783          	lhu	a5,294(s3)
    e888ba6c:	2785                	addiw	a5,a5,1
    e888ba6e:	12f99323          	sh	a5,294(s3)
    return;
    e888ba72:	bfc1                	j	e888ba42 <mld6_send+0x3e>
  if (!ip6_addr_isvalid(netif_ip6_addr_state(netif, 0))) {
    e888ba74:	098ac783          	lbu	a5,152(s5)
    src_addr = IP6_ADDR_ANY6;
    e888ba78:	00045417          	auipc	s0,0x45
    e888ba7c:	87040413          	addi	s0,s0,-1936 # e88d02e8 <ip6_addr_any>
  if (!ip6_addr_isvalid(netif_ip6_addr_state(netif, 0))) {
    e888ba80:	8bc1                	andi	a5,a5,16
    e888ba82:	c399                	beqz	a5,e888ba88 <mld6_send+0x84>
    src_addr = netif_ip6_addr(netif, 0);
    e888ba84:	050a8413          	addi	s0,s5,80
  mld_hdr = (struct mld_header *)p->payload;
    e888ba88:	00893483          	ld	s1,8(s2)
      src_addr, &(group->group_address));
    e888ba8c:	008a0b13          	addi	s6,s4,8
    mld_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len,
    e888ba90:	875a                	mv	a4,s6
  mld_hdr->type = type;
    e888ba92:	01748023          	sb	s7,0(s1)
  mld_hdr->code = 0;
    e888ba96:	0004a0a3          	sw	zero,1(s1)
  mld_hdr->max_resp_delay = 0;
    e888ba9a:	000492a3          	sh	zero,5(s1)
  mld_hdr->reserved = 0;
    e888ba9e:	000483a3          	sb	zero,7(s1)
  ip6_addr_copy_to_packed(mld_hdr->multicast_address, group->group_address);
    e888baa2:	008a2783          	lw	a5,8(s4)
    mld_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len,
    e888baa6:	86a2                	mv	a3,s0
    e888baa8:	03a00593          	li	a1,58
  ip6_addr_copy_to_packed(mld_hdr->multicast_address, group->group_address);
    e888baac:	c49c                	sw	a5,8(s1)
    e888baae:	00ca2783          	lw	a5,12(s4)
    mld_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len,
    e888bab2:	854a                	mv	a0,s2
  ip6_addr_copy_to_packed(mld_hdr->multicast_address, group->group_address);
    e888bab4:	c4dc                	sw	a5,12(s1)
    e888bab6:	010a2783          	lw	a5,16(s4)
    e888baba:	c89c                	sw	a5,16(s1)
    e888babc:	014a2783          	lw	a5,20(s4)
    e888bac0:	c8dc                	sw	a5,20(s1)
    mld_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len,
    e888bac2:	01295603          	lhu	a2,18(s2)
    e888bac6:	d3bfb0ef          	jal	ra,e8887800 <ip6_chksum_pseudo>
    e888baca:	00a49123          	sh	a0,2(s1)
  ip6_options_add_hbh_ra(p, IP6_NEXTH_ICMP6, IP6_ROUTER_ALERT_VALUE_MLD);
    e888bace:	4601                	li	a2,0
    e888bad0:	03a00593          	li	a1,58
    e888bad4:	854a                	mv	a0,s2
    e888bad6:	bf2ff0ef          	jal	ra,e888aec8 <ip6_options_add_hbh_ra>
  if (type == ICMP6_TYPE_MLR) {
    e888bada:	08300793          	li	a5,131
    e888bade:	00fb9563          	bne	s7,a5,e888bae8 <mld6_send+0xe4>
    group->last_reporter_flag = 1;
    e888bae2:	4785                	li	a5,1
    e888bae4:	00fa0e23          	sb	a5,28(s4)
  MLD6_STATS_INC(mld6.xmit);
    e888bae8:	11e9d783          	lhu	a5,286(s3)
    e888baec:	2785                	addiw	a5,a5,1
    e888baee:	10f99f23          	sh	a5,286(s3)
  ip6_output_if(p, (ip6_addr_isany(src_addr)) ? NULL : src_addr, &(group->group_address),
    e888baf2:	c811                	beqz	s0,e888bb06 <mld6_send+0x102>
    e888baf4:	401c                	lw	a5,0(s0)
    e888baf6:	eb81                	bnez	a5,e888bb06 <mld6_send+0x102>
    e888baf8:	405c                	lw	a5,4(s0)
    e888bafa:	e791                	bnez	a5,e888bb06 <mld6_send+0x102>
    e888bafc:	441c                	lw	a5,8(s0)
    e888bafe:	e781                	bnez	a5,e888bb06 <mld6_send+0x102>
    e888bb00:	445c                	lw	a5,12(s0)
    e888bb02:	e391                	bnez	a5,e888bb06 <mld6_send+0x102>
    e888bb04:	4401                	li	s0,0
    e888bb06:	8856                	mv	a6,s5
    e888bb08:	865a                	mv	a2,s6
    e888bb0a:	85a2                	mv	a1,s0
    e888bb0c:	854a                	mv	a0,s2
    e888bb0e:	4781                	li	a5,0
    e888bb10:	4701                	li	a4,0
    e888bb12:	4685                	li	a3,1
    e888bb14:	b34ff0ef          	jal	ra,e888ae48 <ip6_output_if>
}
    e888bb18:	6406                	ld	s0,64(sp)
    e888bb1a:	60a6                	ld	ra,72(sp)
    e888bb1c:	74e2                	ld	s1,56(sp)
    e888bb1e:	79a2                	ld	s3,40(sp)
    e888bb20:	7a02                	ld	s4,32(sp)
    e888bb22:	6ae2                	ld	s5,24(sp)
    e888bb24:	6b42                	ld	s6,16(sp)
    e888bb26:	6ba2                	ld	s7,8(sp)
  pbuf_free(p);
    e888bb28:	854a                	mv	a0,s2
}
    e888bb2a:	7942                	ld	s2,48(sp)
    e888bb2c:	6161                	addi	sp,sp,80
  pbuf_free(p);
    e888bb2e:	71e0306f          	j	e888f24c <pbuf_free>

00000000e888bb32 <mld6_report_groups>:
{
    e888bb32:	1141                	addi	sp,sp,-16
    e888bb34:	e406                	sd	ra,8(sp)
    e888bb36:	e022                	sd	s0,0(sp)
  struct mld_group *group = netif_mld6_data(netif);
    e888bb38:	7d60                	ld	s0,248(a0)
  while (group != NULL) {
    e888bb3a:	e409                	bnez	s0,e888bb44 <mld6_report_groups+0x12>
}
    e888bb3c:	60a2                	ld	ra,8(sp)
    e888bb3e:	6402                	ld	s0,0(sp)
    e888bb40:	0141                	addi	sp,sp,16
    e888bb42:	8082                	ret
    mld6_delayed_report(group, MLD6_JOIN_DELAYING_MEMBER_TMR_MS);
    e888bb44:	8522                	mv	a0,s0
    e888bb46:	1f400593          	li	a1,500
    e888bb4a:	e55ff0ef          	jal	ra,e888b99e <mld6_delayed_report>
    group = group->next;
    e888bb4e:	6000                	ld	s0,0(s0)
    e888bb50:	b7ed                	j	e888bb3a <mld6_report_groups+0x8>

00000000e888bb52 <mld6_lookfor_group>:
  struct mld_group *group = netif_mld6_data(ifp);
    e888bb52:	7d68                	ld	a0,248(a0)
  while (group != NULL) {
    e888bb54:	e111                	bnez	a0,e888bb58 <mld6_lookfor_group+0x6>
}
    e888bb56:	8082                	ret
    if (ip6_addr_cmp(&(group->group_address), addr)) {
    e888bb58:	4518                	lw	a4,8(a0)
    e888bb5a:	419c                	lw	a5,0(a1)
    e888bb5c:	02f71463          	bne	a4,a5,e888bb84 <mld6_lookfor_group+0x32>
    e888bb60:	4558                	lw	a4,12(a0)
    e888bb62:	41dc                	lw	a5,4(a1)
    e888bb64:	02f71063          	bne	a4,a5,e888bb84 <mld6_lookfor_group+0x32>
    e888bb68:	4918                	lw	a4,16(a0)
    e888bb6a:	459c                	lw	a5,8(a1)
    e888bb6c:	00f71c63          	bne	a4,a5,e888bb84 <mld6_lookfor_group+0x32>
    e888bb70:	4958                	lw	a4,20(a0)
    e888bb72:	45dc                	lw	a5,12(a1)
    e888bb74:	00f71863          	bne	a4,a5,e888bb84 <mld6_lookfor_group+0x32>
    e888bb78:	01854703          	lbu	a4,24(a0) # ffffffff80000018 <__DRAM0_INF_BASE+0xfffffffe80010018>
    e888bb7c:	0105c783          	lbu	a5,16(a1)
    e888bb80:	fcf70be3          	beq	a4,a5,e888bb56 <mld6_lookfor_group+0x4>
    group = group->next;
    e888bb84:	6108                	ld	a0,0(a0)
    e888bb86:	b7f9                	j	e888bb54 <mld6_lookfor_group+0x2>

00000000e888bb88 <mld6_input>:
{
    e888bb88:	7139                	addi	sp,sp,-64
    e888bb8a:	f891540b          	sdd	s0,s1,(sp),0,4
    e888bb8e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e888bb92:	fd515a0b          	sdd	s4,s5,(sp),2,4
  MLD6_STATS_INC(mld6.recv);
    e888bb96:	0005b417          	auipc	s0,0x5b
    e888bb9a:	8ba40413          	addi	s0,s0,-1862 # e88e6450 <lwip_stats>
{
    e888bb9e:	fc06                	sd	ra,56(sp)
    e888bba0:	f85a                	sd	s6,48(sp)
  MLD6_STATS_INC(mld6.recv);
    e888bba2:	12045783          	lhu	a5,288(s0)
  if (p->len < sizeof(struct mld_header)) {
    e888bba6:	46dd                	li	a3,23
  MLD6_STATS_INC(mld6.recv);
    e888bba8:	2785                	addiw	a5,a5,1
    e888bbaa:	12f41023          	sh	a5,288(s0)
  if (p->len < sizeof(struct mld_header)) {
    e888bbae:	01255603          	lhu	a2,18(a0)
    e888bbb2:	02c6e863          	bltu	a3,a2,e888bbe2 <mld6_input+0x5a>
    pbuf_free(p);
    e888bbb6:	696030ef          	jal	ra,e888f24c <pbuf_free>
    MLD6_STATS_INC(mld6.lenerr);
    e888bbba:	12645783          	lhu	a5,294(s0)
    e888bbbe:	2785                	addiw	a5,a5,1
    e888bbc0:	12f41323          	sh	a5,294(s0)
    MLD6_STATS_INC(mld6.drop);
    e888bbc4:	12245783          	lhu	a5,290(s0)
    e888bbc8:	2785                	addiw	a5,a5,1
    e888bbca:	12f41123          	sh	a5,290(s0)
}
    e888bbce:	f891440b          	ldd	s0,s1,(sp),0,4
    e888bbd2:	70e2                	ld	ra,56(sp)
    e888bbd4:	7b42                	ld	s6,48(sp)
    e888bbd6:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888bbda:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e888bbde:	6121                	addi	sp,sp,64
    e888bbe0:	8082                	ret
  mld_hdr = (struct mld_header *)p->payload;
    e888bbe2:	6504                	ld	s1,8(a0)
  switch (mld_hdr->type) {
    e888bbe4:	08300613          	li	a2,131
    e888bbe8:	892a                	mv	s2,a0
    e888bbea:	0004c683          	lbu	a3,0(s1)
    e888bbee:	872e                	mv	a4,a1
    e888bbf0:	0cc68563          	beq	a3,a2,e888bcba <mld6_input+0x132>
    e888bbf4:	08400613          	li	a2,132
    e888bbf8:	06c68163          	beq	a3,a2,e888bc5a <mld6_input+0xd2>
    e888bbfc:	08200613          	li	a2,130
    e888bc00:	0ec69363          	bne	a3,a2,e888bce6 <mld6_input+0x15e>
    if (ip6_addr_isallnodes_linklocal(ip6_current_dest_addr()) &&
    e888bc04:	0005a697          	auipc	a3,0x5a
    e888bc08:	f4468693          	addi	a3,a3,-188 # e88e5b48 <ip_data>
    e888bc0c:	5ecc                	lw	a1,60(a3)
    e888bc0e:	2ff00613          	li	a2,767
    e888bc12:	87a2                	mv	a5,s0
    e888bc14:	08c59163          	bne	a1,a2,e888bc96 <mld6_input+0x10e>
    e888bc18:	62b0                	ld	a2,64(a3)
    e888bc1a:	ee35                	bnez	a2,e888bc96 <mld6_input+0x10e>
    e888bc1c:	46b0                	lw	a2,72(a3)
    e888bc1e:	010006b7          	lui	a3,0x1000
    e888bc22:	06d61a63          	bne	a2,a3,e888bc96 <mld6_input+0x10e>
        ip6_addr_isany(&(mld_hdr->multicast_address))) {
    e888bc26:	00848693          	addi	a3,s1,8
    if (ip6_addr_isallnodes_linklocal(ip6_current_dest_addr()) &&
    e888bc2a:	ca89                	beqz	a3,e888bc3c <mld6_input+0xb4>
        ip6_addr_isany(&(mld_hdr->multicast_address))) {
    e888bc2c:	4494                	lw	a3,8(s1)
    e888bc2e:	e6a5                	bnez	a3,e888bc96 <mld6_input+0x10e>
    e888bc30:	44d4                	lw	a3,12(s1)
    e888bc32:	e2b5                	bnez	a3,e888bc96 <mld6_input+0x10e>
    e888bc34:	4894                	lw	a3,16(s1)
    e888bc36:	e2a5                	bnez	a3,e888bc96 <mld6_input+0x10e>
    e888bc38:	48d4                	lw	a3,20(s1)
    e888bc3a:	eeb1                	bnez	a3,e888bc96 <mld6_input+0x10e>
      MLD6_STATS_INC(mld6.rx_general);
    e888bc3c:	1307d683          	lhu	a3,304(a5)
        if ((!(ip6_addr_ismulticast_iflocal(&(group->group_address)))) &&
    e888bc40:	69a5                	lui	s3,0x9
            (!(ip6_addr_isallnodes_linklocal(&(group->group_address))))) {
    e888bc42:	4a05                	li	s4,1
      MLD6_STATS_INC(mld6.rx_general);
    e888bc44:	2685                	addiw	a3,a3,1
    e888bc46:	12d79823          	sh	a3,304(a5)
      group = netif_mld6_data(inp);
    e888bc4a:	7f60                	ld	s0,248(a4)
        if ((!(ip6_addr_ismulticast_iflocal(&(group->group_address)))) &&
    e888bc4c:	19fd                	addi	s3,s3,-1
    e888bc4e:	1ff00a93          	li	s5,511
    e888bc52:	2ff00b13          	li	s6,767
            (!(ip6_addr_isallnodes_linklocal(&(group->group_address))))) {
    e888bc56:	1a62                	slli	s4,s4,0x38
      while (group != NULL) {
    e888bc58:	ec09                	bnez	s0,e888bc72 <mld6_input+0xea>
}
    e888bc5a:	f891440b          	ldd	s0,s1,(sp),0,4
    e888bc5e:	70e2                	ld	ra,56(sp)
    e888bc60:	7b42                	ld	s6,48(sp)
    e888bc62:	fd514a0b          	ldd	s4,s5,(sp),2,4
  pbuf_free(p);
    e888bc66:	854a                	mv	a0,s2
}
    e888bc68:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888bc6c:	6121                	addi	sp,sp,64
  pbuf_free(p);
    e888bc6e:	5de0306f          	j	e888f24c <pbuf_free>
        if ((!(ip6_addr_ismulticast_iflocal(&(group->group_address)))) &&
    e888bc72:	441c                	lw	a5,8(s0)
    e888bc74:	00f9f7b3          	and	a5,s3,a5
    e888bc78:	01578d63          	beq	a5,s5,e888bc92 <mld6_input+0x10a>
    e888bc7c:	641c                	ld	a5,8(s0)
    e888bc7e:	01679563          	bne	a5,s6,e888bc88 <mld6_input+0x100>
            (!(ip6_addr_isallnodes_linklocal(&(group->group_address))))) {
    e888bc82:	681c                	ld	a5,16(s0)
    e888bc84:	01478763          	beq	a5,s4,e888bc92 <mld6_input+0x10a>
          mld6_delayed_report(group, mld_hdr->max_resp_delay);
    e888bc88:	0044d583          	lhu	a1,4(s1)
    e888bc8c:	8522                	mv	a0,s0
    e888bc8e:	d11ff0ef          	jal	ra,e888b99e <mld6_delayed_report>
        group = group->next;
    e888bc92:	6000                	ld	s0,0(s0)
    e888bc94:	b7d1                	j	e888bc58 <mld6_input+0xd0>
      MLD6_STATS_INC(mld6.rx_group);
    e888bc96:	12e7d683          	lhu	a3,302(a5)
      group = mld6_lookfor_group(inp, ip6_current_dest_addr());
    e888bc9a:	0005a597          	auipc	a1,0x5a
    e888bc9e:	eea58593          	addi	a1,a1,-278 # e88e5b84 <ip_data+0x3c>
    e888bca2:	853a                	mv	a0,a4
      MLD6_STATS_INC(mld6.rx_group);
    e888bca4:	2685                	addiw	a3,a3,1
    e888bca6:	12d79723          	sh	a3,302(a5)
      group = mld6_lookfor_group(inp, ip6_current_dest_addr());
    e888bcaa:	ea9ff0ef          	jal	ra,e888bb52 <mld6_lookfor_group>
      if (group != NULL) {
    e888bcae:	d555                	beqz	a0,e888bc5a <mld6_input+0xd2>
        mld6_delayed_report(group, mld_hdr->max_resp_delay);
    e888bcb0:	0044d583          	lhu	a1,4(s1)
    e888bcb4:	cebff0ef          	jal	ra,e888b99e <mld6_delayed_report>
    e888bcb8:	b74d                	j	e888bc5a <mld6_input+0xd2>
    MLD6_STATS_INC(mld6.rx_report);
    e888bcba:	13245783          	lhu	a5,306(s0)
    group = mld6_lookfor_group(inp, ip6_current_dest_addr());
    e888bcbe:	0005a597          	auipc	a1,0x5a
    e888bcc2:	ec658593          	addi	a1,a1,-314 # e88e5b84 <ip_data+0x3c>
    e888bcc6:	853a                	mv	a0,a4
    MLD6_STATS_INC(mld6.rx_report);
    e888bcc8:	2785                	addiw	a5,a5,1
    e888bcca:	12f41923          	sh	a5,306(s0)
    group = mld6_lookfor_group(inp, ip6_current_dest_addr());
    e888bcce:	e85ff0ef          	jal	ra,e888bb52 <mld6_lookfor_group>
    if (group != NULL) {
    e888bcd2:	d541                	beqz	a0,e888bc5a <mld6_input+0xd2>
      if (group->group_state == MLD6_GROUP_DELAYING_MEMBER) {
    e888bcd4:	01d54703          	lbu	a4,29(a0)
    e888bcd8:	4785                	li	a5,1
    e888bcda:	f8f710e3          	bne	a4,a5,e888bc5a <mld6_input+0xd2>
        group->last_reporter_flag = 0;
    e888bcde:	20000793          	li	a5,512
    e888bce2:	cd5c                	sw	a5,28(a0)
    e888bce4:	bf9d                	j	e888bc5a <mld6_input+0xd2>
    MLD6_STATS_INC(mld6.proterr);
    e888bce6:	12a45783          	lhu	a5,298(s0)
    e888bcea:	2785                	addiw	a5,a5,1
    e888bcec:	12f41523          	sh	a5,298(s0)
    MLD6_STATS_INC(mld6.drop);
    e888bcf0:	12245783          	lhu	a5,290(s0)
    e888bcf4:	2785                	addiw	a5,a5,1
    e888bcf6:	12f41123          	sh	a5,290(s0)
    break;
    e888bcfa:	b785                	j	e888bc5a <mld6_input+0xd2>

00000000e888bcfc <mld6_joingroup_netif>:
{
    e888bcfc:	7139                	addi	sp,sp,-64
    e888bcfe:	fc91540b          	sdd	s0,s1,(sp),2,4
    e888bd02:	f84a                	sd	s2,48(sp)
    e888bd04:	fc06                	sd	ra,56(sp)
  if (ip6_addr_lacks_zone(groupaddr, IP6_MULTICAST)) {
    e888bd06:	0105c683          	lbu	a3,16(a1)
{
    e888bd0a:	892a                	mv	s2,a0
    e888bd0c:	842e                	mv	s0,a1
  if (ip6_addr_lacks_zone(groupaddr, IP6_MULTICAST)) {
    e888bd0e:	eead                	bnez	a3,e888bd88 <mld6_joingroup_netif+0x8c>
    e888bd10:	419c                	lw	a5,0(a1)
    e888bd12:	6731                	lui	a4,0xc
    e888bd14:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888bd18:	6621                	lui	a2,0x8
    e888bd1a:	8f7d                	and	a4,a4,a5
    e888bd1c:	0fe60613          	addi	a2,a2,254 # 80fe <memcmp-0xe87f7f02>
    e888bd20:	00c70b63          	beq	a4,a2,e888bd36 <mld6_joingroup_netif+0x3a>
    e888bd24:	6725                	lui	a4,0x9
    e888bd26:	177d                	addi	a4,a4,-1
    e888bd28:	8f7d                	and	a4,a4,a5
    e888bd2a:	e017071b          	addiw	a4,a4,-511
    e888bd2e:	eff77713          	andi	a4,a4,-257
    e888bd32:	2701                	sext.w	a4,a4
    e888bd34:	eb31                	bnez	a4,e888bd88 <mld6_joingroup_netif+0x8c>
    ip6_addr_set(&ip6addr, groupaddr);
    e888bd36:	e011                	bnez	s0,e888bd3a <mld6_joingroup_netif+0x3e>
    e888bd38:	4781                	li	a5,0
    e888bd3a:	c43e                	sw	a5,8(sp)
    e888bd3c:	4701                	li	a4,0
    e888bd3e:	c011                	beqz	s0,e888bd42 <mld6_joingroup_netif+0x46>
    e888bd40:	4058                	lw	a4,4(s0)
    e888bd42:	c63a                	sw	a4,12(sp)
    e888bd44:	4701                	li	a4,0
    e888bd46:	c011                	beqz	s0,e888bd4a <mld6_joingroup_netif+0x4e>
    e888bd48:	4418                	lw	a4,8(s0)
    e888bd4a:	c83a                	sw	a4,16(sp)
    e888bd4c:	4701                	li	a4,0
    e888bd4e:	c011                	beqz	s0,e888bd52 <mld6_joingroup_netif+0x56>
    e888bd50:	4458                	lw	a4,12(s0)
    e888bd52:	ca3a                	sw	a4,20(sp)
    ip6_addr_assign_zone(&ip6addr, IP6_MULTICAST, netif);
    e888bd54:	6731                	lui	a4,0xc
    e888bd56:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888bd5a:	6621                	lui	a2,0x8
    e888bd5c:	8f7d                	and	a4,a4,a5
    e888bd5e:	0fe60613          	addi	a2,a2,254 # 80fe <memcmp-0xe87f7f02>
    e888bd62:	00c70b63          	beq	a4,a2,e888bd78 <mld6_joingroup_netif+0x7c>
    e888bd66:	6725                	lui	a4,0x9
    e888bd68:	177d                	addi	a4,a4,-1
    e888bd6a:	8ff9                	and	a5,a5,a4
    e888bd6c:	e017879b          	addiw	a5,a5,-511
    e888bd70:	eff7f793          	andi	a5,a5,-257
    e888bd74:	2781                	sext.w	a5,a5
    e888bd76:	e791                	bnez	a5,e888bd82 <mld6_joingroup_netif+0x86>
    e888bd78:	10e94683          	lbu	a3,270(s2)
    e888bd7c:	2685                	addiw	a3,a3,1
    e888bd7e:	0ff6f693          	andi	a3,a3,255
    e888bd82:	00d10c23          	sb	a3,24(sp)
    groupaddr = &ip6addr;
    e888bd86:	0020                	addi	s0,sp,8
  group = mld6_lookfor_group(netif, groupaddr);
    e888bd88:	85a2                	mv	a1,s0
    e888bd8a:	854a                	mv	a0,s2
    e888bd8c:	dc7ff0ef          	jal	ra,e888bb52 <mld6_lookfor_group>
    e888bd90:	84aa                	mv	s1,a0
  if (group == NULL) {
    e888bd92:	e151                	bnez	a0,e888be16 <mld6_joingroup_netif+0x11a>
  group = (struct mld_group *)memp_malloc(MEMP_MLD6_GROUP);
    e888bd94:	453d                	li	a0,15
    e888bd96:	3b6020ef          	jal	ra,e888e14c <memp_malloc>
    e888bd9a:	84aa                	mv	s1,a0
      return ERR_MEM;
    e888bd9c:	557d                	li	a0,-1
  if (group != NULL) {
    e888bd9e:	c0d1                	beqz	s1,e888be22 <mld6_joingroup_netif+0x126>
    ip6_addr_set(&(group->group_address), addr);
    e888bda0:	4781                	li	a5,0
    e888bda2:	c011                	beqz	s0,e888bda6 <mld6_joingroup_netif+0xaa>
    e888bda4:	401c                	lw	a5,0(s0)
    e888bda6:	c49c                	sw	a5,8(s1)
    e888bda8:	4781                	li	a5,0
    e888bdaa:	c011                	beqz	s0,e888bdae <mld6_joingroup_netif+0xb2>
    e888bdac:	405c                	lw	a5,4(s0)
    e888bdae:	c4dc                	sw	a5,12(s1)
    e888bdb0:	4781                	li	a5,0
    e888bdb2:	c011                	beqz	s0,e888bdb6 <mld6_joingroup_netif+0xba>
    e888bdb4:	441c                	lw	a5,8(s0)
    e888bdb6:	c89c                	sw	a5,16(s1)
    e888bdb8:	4781                	li	a5,0
    e888bdba:	c011                	beqz	s0,e888bdbe <mld6_joingroup_netif+0xc2>
    e888bdbc:	445c                	lw	a5,12(s0)
    e888bdbe:	c8dc                	sw	a5,20(s1)
    e888bdc0:	4781                	li	a5,0
    e888bdc2:	c019                	beqz	s0,e888bdc8 <mld6_joingroup_netif+0xcc>
    e888bdc4:	01044783          	lbu	a5,16(s0)
    e888bdc8:	00f48c23          	sb	a5,24(s1)
    group->last_reporter_flag = 0;
    e888bdcc:	20000793          	li	a5,512
    e888bdd0:	ccdc                	sw	a5,28(s1)
    group->use                = 0;
    e888bdd2:	02048023          	sb	zero,32(s1)
    group->next               = netif_mld6_data(ifp);
    e888bdd6:	0f893783          	ld	a5,248(s2)
    e888bdda:	e09c                	sd	a5,0(s1)
    if (netif->mld_mac_filter != NULL) {
    e888bddc:	15093783          	ld	a5,336(s2)
    netif_set_client_data(ifp, LWIP_NETIF_CLIENT_DATA_INDEX_MLD6, group);
    e888bde0:	0e993c23          	sd	s1,248(s2)
    if (netif->mld_mac_filter != NULL) {
    e888bde4:	c789                	beqz	a5,e888bdee <mld6_joingroup_netif+0xf2>
      netif->mld_mac_filter(netif, groupaddr, NETIF_ADD_MAC_FILTER);
    e888bde6:	4605                	li	a2,1
    e888bde8:	85a2                	mv	a1,s0
    e888bdea:	854a                	mv	a0,s2
    e888bdec:	9782                	jalr	a5
    MLD6_STATS_INC(mld6.tx_report);
    e888bdee:	0005a717          	auipc	a4,0x5a
    e888bdf2:	66270713          	addi	a4,a4,1634 # e88e6450 <lwip_stats>
    e888bdf6:	13875783          	lhu	a5,312(a4)
    mld6_send(netif, group, ICMP6_TYPE_MLR);
    e888bdfa:	85a6                	mv	a1,s1
    e888bdfc:	854a                	mv	a0,s2
    MLD6_STATS_INC(mld6.tx_report);
    e888bdfe:	2785                	addiw	a5,a5,1
    mld6_send(netif, group, ICMP6_TYPE_MLR);
    e888be00:	08300613          	li	a2,131
    MLD6_STATS_INC(mld6.tx_report);
    e888be04:	12f71c23          	sh	a5,312(a4)
    mld6_send(netif, group, ICMP6_TYPE_MLR);
    e888be08:	bfdff0ef          	jal	ra,e888ba04 <mld6_send>
    mld6_delayed_report(group, MLD6_JOIN_DELAYING_MEMBER_TMR_MS);
    e888be0c:	1f400593          	li	a1,500
    e888be10:	8526                	mv	a0,s1
    e888be12:	b8dff0ef          	jal	ra,e888b99e <mld6_delayed_report>
  group->use++;
    e888be16:	0204c783          	lbu	a5,32(s1)
  return ERR_OK;
    e888be1a:	4501                	li	a0,0
  group->use++;
    e888be1c:	2785                	addiw	a5,a5,1
    e888be1e:	02f48023          	sb	a5,32(s1)
}
    e888be22:	70e2                	ld	ra,56(sp)
    e888be24:	fc91440b          	ldd	s0,s1,(sp),2,4
    e888be28:	7942                	ld	s2,48(sp)
    e888be2a:	6121                	addi	sp,sp,64
    e888be2c:	8082                	ret

00000000e888be2e <mld6_joingroup>:
{
    e888be2e:	7179                	addi	sp,sp,-48
  NETIF_FOREACH(netif) {
    e888be30:	0005a797          	auipc	a5,0x5a
    e888be34:	60878793          	addi	a5,a5,1544 # e88e6438 <netif_list>
{
    e888be38:	e422                	sd	s0,8(sp)
    e888be3a:	ec4a                	sd	s2,24(sp)
    e888be3c:	f04e                	sd	s3,32(sp)
    e888be3e:	f406                	sd	ra,40(sp)
    e888be40:	e826                	sd	s1,16(sp)
  NETIF_FOREACH(netif) {
    e888be42:	6384                	ld	s1,0(a5)
{
    e888be44:	842a                	mv	s0,a0
    e888be46:	89ae                	mv	s3,a1
  err_t         err = ERR_VAL; /* no matching interface */
    e888be48:	5969                	li	s2,-6
  NETIF_FOREACH(netif) {
    e888be4a:	c881                	beqz	s1,e888be5a <mld6_joingroup+0x2c>
    if (ip6_addr_isany(srcaddr) ||
    e888be4c:	ec19                	bnez	s0,e888be6a <mld6_joingroup+0x3c>
      err = mld6_joingroup_netif(netif, groupaddr);
    e888be4e:	85ce                	mv	a1,s3
    e888be50:	8526                	mv	a0,s1
    e888be52:	eabff0ef          	jal	ra,e888bcfc <mld6_joingroup_netif>
    e888be56:	892a                	mv	s2,a0
      if (err != ERR_OK) {
    e888be58:	c51d                	beqz	a0,e888be86 <mld6_joingroup+0x58>
}
    e888be5a:	70a2                	ld	ra,40(sp)
    e888be5c:	6422                	ld	s0,8(sp)
    e888be5e:	854a                	mv	a0,s2
    e888be60:	64c2                	ld	s1,16(sp)
    e888be62:	6962                	ld	s2,24(sp)
    e888be64:	7982                	ld	s3,32(sp)
    e888be66:	6145                	addi	sp,sp,48
    e888be68:	8082                	ret
    if (ip6_addr_isany(srcaddr) ||
    e888be6a:	401c                	lw	a5,0(s0)
    e888be6c:	e799                	bnez	a5,e888be7a <mld6_joingroup+0x4c>
    e888be6e:	405c                	lw	a5,4(s0)
    e888be70:	e789                	bnez	a5,e888be7a <mld6_joingroup+0x4c>
    e888be72:	441c                	lw	a5,8(s0)
    e888be74:	e399                	bnez	a5,e888be7a <mld6_joingroup+0x4c>
    e888be76:	445c                	lw	a5,12(s0)
    e888be78:	dbf9                	beqz	a5,e888be4e <mld6_joingroup+0x20>
        netif_get_ip6_addr_match(netif, srcaddr) >= 0) {
    e888be7a:	85a2                	mv	a1,s0
    e888be7c:	8526                	mv	a0,s1
    e888be7e:	0eb020ef          	jal	ra,e888e768 <netif_get_ip6_addr_match>
    if (ip6_addr_isany(srcaddr) ||
    e888be82:	fc0556e3          	bgez	a0,e888be4e <mld6_joingroup+0x20>
  NETIF_FOREACH(netif) {
    e888be86:	6084                	ld	s1,0(s1)
    e888be88:	b7c9                	j	e888be4a <mld6_joingroup+0x1c>

00000000e888be8a <mld6_leavegroup_netif>:
{
    e888be8a:	7139                	addi	sp,sp,-64
    e888be8c:	fc91540b          	sdd	s0,s1,(sp),2,4
    e888be90:	f84a                	sd	s2,48(sp)
    e888be92:	fc06                	sd	ra,56(sp)
  if (ip6_addr_lacks_zone(groupaddr, IP6_MULTICAST)) {
    e888be94:	0105c683          	lbu	a3,16(a1)
{
    e888be98:	892a                	mv	s2,a0
    e888be9a:	842e                	mv	s0,a1
  if (ip6_addr_lacks_zone(groupaddr, IP6_MULTICAST)) {
    e888be9c:	eead                	bnez	a3,e888bf16 <mld6_leavegroup_netif+0x8c>
    e888be9e:	419c                	lw	a5,0(a1)
    e888bea0:	6731                	lui	a4,0xc
    e888bea2:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888bea6:	6621                	lui	a2,0x8
    e888bea8:	8f7d                	and	a4,a4,a5
    e888beaa:	0fe60613          	addi	a2,a2,254 # 80fe <memcmp-0xe87f7f02>
    e888beae:	00c70b63          	beq	a4,a2,e888bec4 <mld6_leavegroup_netif+0x3a>
    e888beb2:	6725                	lui	a4,0x9
    e888beb4:	177d                	addi	a4,a4,-1
    e888beb6:	8f7d                	and	a4,a4,a5
    e888beb8:	e017071b          	addiw	a4,a4,-511
    e888bebc:	eff77713          	andi	a4,a4,-257
    e888bec0:	2701                	sext.w	a4,a4
    e888bec2:	eb31                	bnez	a4,e888bf16 <mld6_leavegroup_netif+0x8c>
    ip6_addr_set(&ip6addr, groupaddr);
    e888bec4:	e011                	bnez	s0,e888bec8 <mld6_leavegroup_netif+0x3e>
    e888bec6:	4781                	li	a5,0
    e888bec8:	c43e                	sw	a5,8(sp)
    e888beca:	4701                	li	a4,0
    e888becc:	c011                	beqz	s0,e888bed0 <mld6_leavegroup_netif+0x46>
    e888bece:	4058                	lw	a4,4(s0)
    e888bed0:	c63a                	sw	a4,12(sp)
    e888bed2:	4701                	li	a4,0
    e888bed4:	c011                	beqz	s0,e888bed8 <mld6_leavegroup_netif+0x4e>
    e888bed6:	4418                	lw	a4,8(s0)
    e888bed8:	c83a                	sw	a4,16(sp)
    e888beda:	4701                	li	a4,0
    e888bedc:	c011                	beqz	s0,e888bee0 <mld6_leavegroup_netif+0x56>
    e888bede:	4458                	lw	a4,12(s0)
    e888bee0:	ca3a                	sw	a4,20(sp)
    ip6_addr_assign_zone(&ip6addr, IP6_MULTICAST, netif);
    e888bee2:	6731                	lui	a4,0xc
    e888bee4:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888bee8:	6621                	lui	a2,0x8
    e888beea:	8f7d                	and	a4,a4,a5
    e888beec:	0fe60613          	addi	a2,a2,254 # 80fe <memcmp-0xe87f7f02>
    e888bef0:	00c70b63          	beq	a4,a2,e888bf06 <mld6_leavegroup_netif+0x7c>
    e888bef4:	6725                	lui	a4,0x9
    e888bef6:	177d                	addi	a4,a4,-1
    e888bef8:	8ff9                	and	a5,a5,a4
    e888befa:	e017879b          	addiw	a5,a5,-511
    e888befe:	eff7f793          	andi	a5,a5,-257
    e888bf02:	2781                	sext.w	a5,a5
    e888bf04:	e791                	bnez	a5,e888bf10 <mld6_leavegroup_netif+0x86>
    e888bf06:	10e94683          	lbu	a3,270(s2)
    e888bf0a:	2685                	addiw	a3,a3,1
    e888bf0c:	0ff6f693          	andi	a3,a3,255
    e888bf10:	00d10c23          	sb	a3,24(sp)
    groupaddr = &ip6addr;
    e888bf14:	0020                	addi	s0,sp,8
  group = mld6_lookfor_group(netif, groupaddr);
    e888bf16:	85a2                	mv	a1,s0
    e888bf18:	854a                	mv	a0,s2
    e888bf1a:	c39ff0ef          	jal	ra,e888bb52 <mld6_lookfor_group>
    e888bf1e:	84aa                	mv	s1,a0
  return ERR_VAL;
    e888bf20:	5569                	li	a0,-6
  if (group != NULL) {
    e888bf22:	c8b9                	beqz	s1,e888bf78 <mld6_leavegroup_netif+0xee>
    if (group->use <= 1) {
    e888bf24:	0204c783          	lbu	a5,32(s1)
    e888bf28:	4705                	li	a4,1
    e888bf2a:	06f76563          	bltu	a4,a5,e888bf94 <mld6_leavegroup_netif+0x10a>
  if (netif_mld6_data(netif) == group) {
    e888bf2e:	0f893783          	ld	a5,248(s2)
    e888bf32:	04f49a63          	bne	s1,a5,e888bf86 <mld6_leavegroup_netif+0xfc>
    netif_set_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_MLD6, group->next);
    e888bf36:	609c                	ld	a5,0(s1)
    e888bf38:	0ef93c23          	sd	a5,248(s2)
      if (group->last_reporter_flag) {
    e888bf3c:	01c4c783          	lbu	a5,28(s1)
    e888bf40:	c385                	beqz	a5,e888bf60 <mld6_leavegroup_netif+0xd6>
        MLD6_STATS_INC(mld6.tx_leave);
    e888bf42:	0005a717          	auipc	a4,0x5a
    e888bf46:	50e70713          	addi	a4,a4,1294 # e88e6450 <lwip_stats>
    e888bf4a:	13675783          	lhu	a5,310(a4)
        mld6_send(netif, group, ICMP6_TYPE_MLD);
    e888bf4e:	08400613          	li	a2,132
    e888bf52:	85a6                	mv	a1,s1
        MLD6_STATS_INC(mld6.tx_leave);
    e888bf54:	2785                	addiw	a5,a5,1
        mld6_send(netif, group, ICMP6_TYPE_MLD);
    e888bf56:	854a                	mv	a0,s2
        MLD6_STATS_INC(mld6.tx_leave);
    e888bf58:	12f71b23          	sh	a5,310(a4)
        mld6_send(netif, group, ICMP6_TYPE_MLD);
    e888bf5c:	aa9ff0ef          	jal	ra,e888ba04 <mld6_send>
      if (netif->mld_mac_filter != NULL) {
    e888bf60:	15093783          	ld	a5,336(s2)
    e888bf64:	c789                	beqz	a5,e888bf6e <mld6_leavegroup_netif+0xe4>
        netif->mld_mac_filter(netif, groupaddr, NETIF_DEL_MAC_FILTER);
    e888bf66:	4601                	li	a2,0
    e888bf68:	85a2                	mv	a1,s0
    e888bf6a:	854a                	mv	a0,s2
    e888bf6c:	9782                	jalr	a5
      memp_free(MEMP_MLD6_GROUP, group);
    e888bf6e:	85a6                	mv	a1,s1
    e888bf70:	453d                	li	a0,15
    e888bf72:	22c020ef          	jal	ra,e888e19e <memp_free>
    return ERR_OK;
    e888bf76:	4501                	li	a0,0
}
    e888bf78:	70e2                	ld	ra,56(sp)
    e888bf7a:	fc91440b          	ldd	s0,s1,(sp),2,4
    e888bf7e:	7942                	ld	s2,48(sp)
    e888bf80:	6121                	addi	sp,sp,64
    e888bf82:	8082                	ret
      if (tmpGroup->next == group) {
    e888bf84:	87ba                	mv	a5,a4
    for (tmpGroup = netif_mld6_data(netif); tmpGroup != NULL; tmpGroup = tmpGroup->next) {
    e888bf86:	dbdd                	beqz	a5,e888bf3c <mld6_leavegroup_netif+0xb2>
      if (tmpGroup->next == group) {
    e888bf88:	6398                	ld	a4,0(a5)
    e888bf8a:	fee49de3          	bne	s1,a4,e888bf84 <mld6_leavegroup_netif+0xfa>
        tmpGroup->next = group->next;
    e888bf8e:	6098                	ld	a4,0(s1)
    e888bf90:	e398                	sd	a4,0(a5)
    if (tmpGroup == NULL) {
    e888bf92:	b76d                	j	e888bf3c <mld6_leavegroup_netif+0xb2>
      group->use--;
    e888bf94:	37fd                	addiw	a5,a5,-1
    e888bf96:	02f48023          	sb	a5,32(s1)
    e888bf9a:	bff1                	j	e888bf76 <mld6_leavegroup_netif+0xec>

00000000e888bf9c <mld6_leavegroup>:
{
    e888bf9c:	7179                	addi	sp,sp,-48
  NETIF_FOREACH(netif) {
    e888bf9e:	0005a797          	auipc	a5,0x5a
    e888bfa2:	49a78793          	addi	a5,a5,1178 # e88e6438 <netif_list>
{
    e888bfa6:	e422                	sd	s0,8(sp)
    e888bfa8:	ec4a                	sd	s2,24(sp)
    e888bfaa:	f04e                	sd	s3,32(sp)
    e888bfac:	f406                	sd	ra,40(sp)
    e888bfae:	e826                	sd	s1,16(sp)
  NETIF_FOREACH(netif) {
    e888bfb0:	6384                	ld	s1,0(a5)
{
    e888bfb2:	842a                	mv	s0,a0
    e888bfb4:	89ae                	mv	s3,a1
  err_t         err = ERR_VAL; /* no matching interface */
    e888bfb6:	5969                	li	s2,-6
  NETIF_FOREACH(netif) {
    e888bfb8:	e889                	bnez	s1,e888bfca <mld6_leavegroup+0x2e>
}
    e888bfba:	70a2                	ld	ra,40(sp)
    e888bfbc:	6422                	ld	s0,8(sp)
    e888bfbe:	854a                	mv	a0,s2
    e888bfc0:	64c2                	ld	s1,16(sp)
    e888bfc2:	6962                	ld	s2,24(sp)
    e888bfc4:	7982                	ld	s3,32(sp)
    e888bfc6:	6145                	addi	sp,sp,48
    e888bfc8:	8082                	ret
    if (ip6_addr_isany(srcaddr) ||
    e888bfca:	e809                	bnez	s0,e888bfdc <mld6_leavegroup+0x40>
      err_t res = mld6_leavegroup_netif(netif, groupaddr);
    e888bfcc:	85ce                	mv	a1,s3
    e888bfce:	8526                	mv	a0,s1
    e888bfd0:	ebbff0ef          	jal	ra,e888be8a <mld6_leavegroup_netif>
        err = res;
    e888bfd4:	4325190b          	mvnez	s2,a0,s2
  NETIF_FOREACH(netif) {
    e888bfd8:	6084                	ld	s1,0(s1)
    e888bfda:	bff9                	j	e888bfb8 <mld6_leavegroup+0x1c>
    if (ip6_addr_isany(srcaddr) ||
    e888bfdc:	401c                	lw	a5,0(s0)
    e888bfde:	e799                	bnez	a5,e888bfec <mld6_leavegroup+0x50>
    e888bfe0:	405c                	lw	a5,4(s0)
    e888bfe2:	e789                	bnez	a5,e888bfec <mld6_leavegroup+0x50>
    e888bfe4:	441c                	lw	a5,8(s0)
    e888bfe6:	e399                	bnez	a5,e888bfec <mld6_leavegroup+0x50>
    e888bfe8:	445c                	lw	a5,12(s0)
    e888bfea:	d3ed                	beqz	a5,e888bfcc <mld6_leavegroup+0x30>
        netif_get_ip6_addr_match(netif, srcaddr) >= 0) {
    e888bfec:	85a2                	mv	a1,s0
    e888bfee:	8526                	mv	a0,s1
    e888bff0:	778020ef          	jal	ra,e888e768 <netif_get_ip6_addr_match>
    if (ip6_addr_isany(srcaddr) ||
    e888bff4:	fc055ce3          	bgez	a0,e888bfcc <mld6_leavegroup+0x30>
    e888bff8:	b7c5                	j	e888bfd8 <mld6_leavegroup+0x3c>

00000000e888bffa <mld6_tmr>:
{
    e888bffa:	7179                	addi	sp,sp,-48
    e888bffc:	fb31590b          	sdd	s2,s3,(sp),1,4
    e888c000:	f891540b          	sdd	s0,s1,(sp),0,4
  NETIF_FOREACH(netif) {
    e888c004:	0005a797          	auipc	a5,0x5a
    e888c008:	43478793          	addi	a5,a5,1076 # e88e6438 <netif_list>
{
    e888c00c:	f052                	sd	s4,32(sp)
    e888c00e:	f406                	sd	ra,40(sp)
  NETIF_FOREACH(netif) {
    e888c010:	6384                	ld	s1,0(a5)
          if (group->group_state == MLD6_GROUP_DELAYING_MEMBER) {
    e888c012:	4985                	li	s3,1
            MLD6_STATS_INC(mld6.tx_report);
    e888c014:	0005a917          	auipc	s2,0x5a
    e888c018:	43c90913          	addi	s2,s2,1084 # e88e6450 <lwip_stats>
            group->group_state = MLD6_GROUP_IDLE_MEMBER;
    e888c01c:	4a09                	li	s4,2
  NETIF_FOREACH(netif) {
    e888c01e:	e889                	bnez	s1,e888c030 <mld6_tmr+0x36>
}
    e888c020:	70a2                	ld	ra,40(sp)
    e888c022:	f891440b          	ldd	s0,s1,(sp),0,4
    e888c026:	7a02                	ld	s4,32(sp)
    e888c028:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888c02c:	6145                	addi	sp,sp,48
    e888c02e:	8082                	ret
    struct mld_group *group = netif_mld6_data(netif);
    e888c030:	7ce0                	ld	s0,248(s1)
    while (group != NULL) {
    e888c032:	e019                	bnez	s0,e888c038 <mld6_tmr+0x3e>
  NETIF_FOREACH(netif) {
    e888c034:	6084                	ld	s1,0(s1)
    e888c036:	b7e5                	j	e888c01e <mld6_tmr+0x24>
      if (group->timer > 0) {
    e888c038:	01e45783          	lhu	a5,30(s0)
    e888c03c:	cb85                	beqz	a5,e888c06c <mld6_tmr+0x72>
        group->timer--;
    e888c03e:	37fd                	addiw	a5,a5,-1
    e888c040:	3c07b78b          	extu	a5,a5,15,0
    e888c044:	00f41f23          	sh	a5,30(s0)
        if (group->timer == 0) {
    e888c048:	e395                	bnez	a5,e888c06c <mld6_tmr+0x72>
          if (group->group_state == MLD6_GROUP_DELAYING_MEMBER) {
    e888c04a:	01d44783          	lbu	a5,29(s0)
    e888c04e:	01379f63          	bne	a5,s3,e888c06c <mld6_tmr+0x72>
            MLD6_STATS_INC(mld6.tx_report);
    e888c052:	13895783          	lhu	a5,312(s2)
            mld6_send(netif, group, ICMP6_TYPE_MLR);
    e888c056:	08300613          	li	a2,131
    e888c05a:	85a2                	mv	a1,s0
            MLD6_STATS_INC(mld6.tx_report);
    e888c05c:	2785                	addiw	a5,a5,1
            mld6_send(netif, group, ICMP6_TYPE_MLR);
    e888c05e:	8526                	mv	a0,s1
            MLD6_STATS_INC(mld6.tx_report);
    e888c060:	12f91c23          	sh	a5,312(s2)
            mld6_send(netif, group, ICMP6_TYPE_MLR);
    e888c064:	9a1ff0ef          	jal	ra,e888ba04 <mld6_send>
            group->group_state = MLD6_GROUP_IDLE_MEMBER;
    e888c068:	01440ea3          	sb	s4,29(s0)
      group = group->next;
    e888c06c:	6000                	ld	s0,0(s0)
    e888c06e:	b7d1                	j	e888c032 <mld6_tmr+0x38>

00000000e888c070 <nd6_find_neighbor_cache_entry>:
static s8_t
nd6_find_neighbor_cache_entry(const ip6_addr_t *ip6addr)
{
  s8_t i;
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    if (ip6_addr_cmp(ip6addr, &(neighbor_cache[i].next_hop_address))) {
    e888c070:	4110                	lw	a2,0(a0)
    e888c072:	0005a717          	auipc	a4,0x5a
    e888c076:	f5670713          	addi	a4,a4,-170 # e88e5fc8 <neighbor_cache>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c07a:	4781                	li	a5,0
    e888c07c:	46a9                	li	a3,10
    if (ip6_addr_cmp(ip6addr, &(neighbor_cache[i].next_hop_address))) {
    e888c07e:	430c                	lw	a1,0(a4)
    e888c080:	02c59763          	bne	a1,a2,e888c0ae <nd6_find_neighbor_cache_entry+0x3e>
    e888c084:	00452803          	lw	a6,4(a0)
    e888c088:	434c                	lw	a1,4(a4)
    e888c08a:	02b81263          	bne	a6,a1,e888c0ae <nd6_find_neighbor_cache_entry+0x3e>
    e888c08e:	00852803          	lw	a6,8(a0)
    e888c092:	470c                	lw	a1,8(a4)
    e888c094:	00b81d63          	bne	a6,a1,e888c0ae <nd6_find_neighbor_cache_entry+0x3e>
    e888c098:	00c52803          	lw	a6,12(a0)
    e888c09c:	474c                	lw	a1,12(a4)
    e888c09e:	00b81863          	bne	a6,a1,e888c0ae <nd6_find_neighbor_cache_entry+0x3e>
    e888c0a2:	01054803          	lbu	a6,16(a0)
    e888c0a6:	01074583          	lbu	a1,16(a4)
    e888c0aa:	00b80a63          	beq	a6,a1,e888c0be <nd6_find_neighbor_cache_entry+0x4e>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c0ae:	2785                	addiw	a5,a5,1
    e888c0b0:	1c07a78b          	ext	a5,a5,7,0
    e888c0b4:	03870713          	addi	a4,a4,56
    e888c0b8:	fcd793e3          	bne	a5,a3,e888c07e <nd6_find_neighbor_cache_entry+0xe>
      return i;
    }
  }
  return -1;
    e888c0bc:	57fd                	li	a5,-1
}
    e888c0be:	853e                	mv	a0,a5
    e888c0c0:	8082                	ret

00000000e888c0c2 <nd6_find_destination_cache_entry>:
  s16_t i;

  IP6_ADDR_ZONECHECK(ip6addr);

  for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) {
    if (ip6_addr_cmp(ip6addr, &(destination_cache[i].destination_addr))) {
    e888c0c2:	4110                	lw	a2,0(a0)
    e888c0c4:	0005a717          	auipc	a4,0x5a
    e888c0c8:	cdc70713          	addi	a4,a4,-804 # e88e5da0 <destination_cache>
  for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) {
    e888c0cc:	4781                	li	a5,0
    e888c0ce:	46a9                	li	a3,10
    if (ip6_addr_cmp(ip6addr, &(destination_cache[i].destination_addr))) {
    e888c0d0:	430c                	lw	a1,0(a4)
    e888c0d2:	02c59763          	bne	a1,a2,e888c100 <nd6_find_destination_cache_entry+0x3e>
    e888c0d6:	00452803          	lw	a6,4(a0)
    e888c0da:	434c                	lw	a1,4(a4)
    e888c0dc:	02b81263          	bne	a6,a1,e888c100 <nd6_find_destination_cache_entry+0x3e>
    e888c0e0:	00852803          	lw	a6,8(a0)
    e888c0e4:	470c                	lw	a1,8(a4)
    e888c0e6:	00b81d63          	bne	a6,a1,e888c100 <nd6_find_destination_cache_entry+0x3e>
    e888c0ea:	00c52803          	lw	a6,12(a0)
    e888c0ee:	474c                	lw	a1,12(a4)
    e888c0f0:	00b81863          	bne	a6,a1,e888c100 <nd6_find_destination_cache_entry+0x3e>
    e888c0f4:	01054803          	lbu	a6,16(a0)
    e888c0f8:	01074583          	lbu	a1,16(a4)
    e888c0fc:	00b80a63          	beq	a6,a1,e888c110 <nd6_find_destination_cache_entry+0x4e>
  for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) {
    e888c100:	2785                	addiw	a5,a5,1
    e888c102:	3c07a78b          	ext	a5,a5,15,0
    e888c106:	03070713          	addi	a4,a4,48
    e888c10a:	fcd793e3          	bne	a5,a3,e888c0d0 <nd6_find_destination_cache_entry+0xe>
      return i;
    }
  }
  return -1;
    e888c10e:	57fd                	li	a5,-1
}
    e888c110:	853e                	mv	a0,a5
    e888c112:	8082                	ret

00000000e888c114 <nd6_free_q>:
 *
 * @param q a queue of nd6_q_entry to free
 */
static void
nd6_free_q(struct nd6_q_entry *q)
{
    e888c114:	7139                	addi	sp,sp,-64
    e888c116:	e422                	sd	s0,8(sp)
    e888c118:	fc06                	sd	ra,56(sp)
    e888c11a:	e826                	sd	s1,16(sp)
    e888c11c:	ec4a                	sd	s2,24(sp)
    e888c11e:	f04e                	sd	s3,32(sp)
    e888c120:	f452                	sd	s4,40(sp)
    e888c122:	f856                	sd	s5,48(sp)
    e888c124:	842a                	mv	s0,a0
  struct nd6_q_entry *r;
  LWIP_ASSERT("q != NULL", q != NULL);
    e888c126:	e905                	bnez	a0,e888c156 <nd6_free_q+0x42>
    e888c128:	02f00593          	li	a1,47
    e888c12c:	00044517          	auipc	a0,0x44
    e888c130:	3dc50513          	addi	a0,a0,988 # e88d0508 <ip6_addr_any+0x220>
    e888c134:	a44f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888c138:	00150693          	addi	a3,a0,1
    e888c13c:	6605                	lui	a2,0x1
    e888c13e:	86e60613          	addi	a2,a2,-1938 # 86e <memcmp-0xe87ff792>
    e888c142:	00044597          	auipc	a1,0x44
    e888c146:	82e58593          	addi	a1,a1,-2002 # e88cf970 <ip_addr_any_type+0x110>
    e888c14a:	00043517          	auipc	a0,0x43
    e888c14e:	f6650513          	addi	a0,a0,-154 # e88cf0b0 <kSinTable1024+0x900>
    e888c152:	974f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("q->p != NULL", q->p != NULL);
    e888c156:	641c                	ld	a5,8(s0)
    e888c158:	eb85                	bnez	a5,e888c188 <nd6_free_q+0x74>
    e888c15a:	02f00593          	li	a1,47
    e888c15e:	00044517          	auipc	a0,0x44
    e888c162:	3aa50513          	addi	a0,a0,938 # e88d0508 <ip6_addr_any+0x220>
    e888c166:	a12f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888c16a:	00150693          	addi	a3,a0,1
    e888c16e:	6605                	lui	a2,0x1
    e888c170:	86f60613          	addi	a2,a2,-1937 # 86f <memcmp-0xe87ff791>
    e888c174:	00044597          	auipc	a1,0x44
    e888c178:	41c58593          	addi	a1,a1,1052 # e88d0590 <ip6_addr_any+0x2a8>
    e888c17c:	00043517          	auipc	a0,0x43
    e888c180:	f3450513          	addi	a0,a0,-204 # e88cf0b0 <kSinTable1024+0x900>
    e888c184:	942f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
  while (q) {
    r = q;
    q = q->next;
    LWIP_ASSERT("r->p != NULL", (r->p != NULL));
    e888c188:	6485                	lui	s1,0x1
    e888c18a:	00044917          	auipc	s2,0x44
    e888c18e:	37e90913          	addi	s2,s2,894 # e88d0508 <ip6_addr_any+0x220>
    e888c192:	87348493          	addi	s1,s1,-1933 # 873 <memcmp-0xe87ff78d>
    e888c196:	00044997          	auipc	s3,0x44
    e888c19a:	40a98993          	addi	s3,s3,1034 # e88d05a0 <ip6_addr_any+0x2b8>
    e888c19e:	00043a17          	auipc	s4,0x43
    e888c1a2:	f12a0a13          	addi	s4,s4,-238 # e88cf0b0 <kSinTable1024+0x900>
  while (q) {
    e888c1a6:	e811                	bnez	s0,e888c1ba <nd6_free_q+0xa6>
    pbuf_free(r->p);
    memp_free(MEMP_ND6_QUEUE, r);
  }
}
    e888c1a8:	70e2                	ld	ra,56(sp)
    e888c1aa:	6422                	ld	s0,8(sp)
    e888c1ac:	64c2                	ld	s1,16(sp)
    e888c1ae:	6962                	ld	s2,24(sp)
    e888c1b0:	7982                	ld	s3,32(sp)
    e888c1b2:	7a22                	ld	s4,40(sp)
    e888c1b4:	7ac2                	ld	s5,48(sp)
    e888c1b6:	6121                	addi	sp,sp,64
    e888c1b8:	8082                	ret
    LWIP_ASSERT("r->p != NULL", (r->p != NULL));
    e888c1ba:	f8f44a8b          	ldd	s5,a5,(s0),0,4
    e888c1be:	ef89                	bnez	a5,e888c1d8 <nd6_free_q+0xc4>
    e888c1c0:	02f00593          	li	a1,47
    e888c1c4:	854a                	mv	a0,s2
    e888c1c6:	9b2f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888c1ca:	00150693          	addi	a3,a0,1
    e888c1ce:	8626                	mv	a2,s1
    e888c1d0:	85ce                	mv	a1,s3
    e888c1d2:	8552                	mv	a0,s4
    e888c1d4:	8f2f00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pbuf_free(r->p);
    e888c1d8:	6408                	ld	a0,8(s0)
    e888c1da:	072030ef          	jal	ra,e888f24c <pbuf_free>
    memp_free(MEMP_ND6_QUEUE, r);
    e888c1de:	85a2                	mv	a1,s0
    e888c1e0:	4535                	li	a0,13
    e888c1e2:	7bd010ef          	jal	ra,e888e19e <memp_free>
    q = q->next;
    e888c1e6:	8456                	mv	s0,s5
    e888c1e8:	bf7d                	j	e888c1a6 <nd6_free_q+0x92>

00000000e888c1ea <nd6_send_na>:
{
    e888c1ea:	7139                	addi	sp,sp,-64
    e888c1ec:	f85a                	sd	s6,48(sp)
    e888c1ee:	fb31590b          	sdd	s2,s3,(sp),1,4
    e888c1f2:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e888c1f6:	fc06                	sd	ra,56(sp)
    e888c1f8:	f891540b          	sdd	s0,s1,(sp),0,4
    e888c1fc:	8a2a                	mv	s4,a0
    e888c1fe:	892e                	mv	s2,a1
    e888c200:	8b32                	mv	s6,a2
  LWIP_ASSERT("target address is required", target_addr != NULL);
    e888c202:	e59d                	bnez	a1,e888c230 <nd6_send_na+0x46>
    e888c204:	02f00593          	li	a1,47
    e888c208:	00044517          	auipc	a0,0x44
    e888c20c:	30050513          	addi	a0,a0,768 # e88d0508 <ip6_addr_any+0x220>
    e888c210:	968f00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888c214:	00150693          	addi	a3,a0,1
    e888c218:	4ef00613          	li	a2,1263
    e888c21c:	00044597          	auipc	a1,0x44
    e888c220:	3ac58593          	addi	a1,a1,940 # e88d05c8 <ip6_addr_any+0x2e0>
    e888c224:	00043517          	auipc	a0,0x43
    e888c228:	e8c50513          	addi	a0,a0,-372 # e88cf0b0 <kSinTable1024+0x900>
    e888c22c:	89af00ef          	jal	ra,e887c2c6 <eLIBs_printf>
  lladdr_opt_len = ((netif->hwaddr_len + 2) >> 3) + (((netif->hwaddr_len + 2) & 0x07) ? 1 : 0);
    e888c230:	10aa4783          	lbu	a5,266(s4)
  p = pbuf_alloc(PBUF_IP, sizeof(struct na_header) + (lladdr_opt_len << 3), PBUF_RAM);
    e888c234:	28000613          	li	a2,640
    e888c238:	03600513          	li	a0,54
  lladdr_opt_len = ((netif->hwaddr_len + 2) >> 3) + (((netif->hwaddr_len + 2) & 0x07) ? 1 : 0);
    e888c23c:	2789                	addiw	a5,a5,2
    e888c23e:	0077f493          	andi	s1,a5,7
    e888c242:	009034b3          	snez	s1,s1
    e888c246:	4037d79b          	sraiw	a5,a5,0x3
    e888c24a:	94be                	add	s1,s1,a5
  p = pbuf_alloc(PBUF_IP, sizeof(struct na_header) + (lladdr_opt_len << 3), PBUF_RAM);
    e888c24c:	0034959b          	slliw	a1,s1,0x3
    e888c250:	05e1                	addi	a1,a1,24
    e888c252:	13e030ef          	jal	ra,e888f390 <pbuf_alloc>
    e888c256:	89aa                	mv	s3,a0
  if (p == NULL) {
    e888c258:	0005aa97          	auipc	s5,0x5a
    e888c25c:	1f8a8a93          	addi	s5,s5,504 # e88e6450 <lwip_stats>
    e888c260:	e105                	bnez	a0,e888c280 <nd6_send_na+0x96>
    ND6_STATS_INC(nd6.memerr);
    e888c262:	146ad783          	lhu	a5,326(s5)
}
    e888c266:	70e2                	ld	ra,56(sp)
    e888c268:	f891440b          	ldd	s0,s1,(sp),0,4
    ND6_STATS_INC(nd6.memerr);
    e888c26c:	2785                	addiw	a5,a5,1
    e888c26e:	14fa9323          	sh	a5,326(s5)
}
    e888c272:	7b42                	ld	s6,48(sp)
    e888c274:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888c278:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e888c27c:	6121                	addi	sp,sp,64
    e888c27e:	8082                	ret
  na_hdr = (struct na_header *)p->payload;
    e888c280:	6500                	ld	s0,8(a0)
  na_hdr->type = ICMP6_TYPE_NA;
    e888c282:	08800793          	li	a5,136
  SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len);
    e888c286:	104a0593          	addi	a1,s4,260
  na_hdr->type = ICMP6_TYPE_NA;
    e888c28a:	c01c                	sw	a5,0(s0)
  na_hdr->flags = flags & 0xf0;
    e888c28c:	ff0b7793          	andi	a5,s6,-16
    e888c290:	00f40223          	sb	a5,4(s0)
  na_hdr->reserved[0] = 0;
    e888c294:	000412a3          	sh	zero,5(s0)
  na_hdr->reserved[2] = 0;
    e888c298:	000403a3          	sb	zero,7(s0)
  ip6_addr_copy_to_packed(na_hdr->target_address, *target_addr);
    e888c29c:	00092783          	lw	a5,0(s2)
  SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len);
    e888c2a0:	01a40513          	addi	a0,s0,26
  } else if (flags & ND6_SEND_FLAG_ALLNODES_DEST) {
    e888c2a4:	002b7b13          	andi	s6,s6,2
  ip6_addr_copy_to_packed(na_hdr->target_address, *target_addr);
    e888c2a8:	c41c                	sw	a5,8(s0)
    e888c2aa:	00492783          	lw	a5,4(s2)
    e888c2ae:	c45c                	sw	a5,12(s0)
    e888c2b0:	00892783          	lw	a5,8(s2)
    e888c2b4:	c81c                	sw	a5,16(s0)
    e888c2b6:	00c92783          	lw	a5,12(s2)
  lladdr_opt->length = (u8_t)lladdr_opt_len;
    e888c2ba:	00940ca3          	sb	s1,25(s0)
    dest_addr = ip6_current_src_addr();
    e888c2be:	0005a497          	auipc	s1,0x5a
    e888c2c2:	8ae48493          	addi	s1,s1,-1874 # e88e5b6c <ip_data+0x24>
  ip6_addr_copy_to_packed(na_hdr->target_address, *target_addr);
    e888c2c6:	c85c                	sw	a5,20(s0)
  lladdr_opt->type = ND6_OPTION_TYPE_TARGET_LLADDR;
    e888c2c8:	4789                	li	a5,2
    e888c2ca:	00f40c23          	sb	a5,24(s0)
  SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len);
    e888c2ce:	10aa4603          	lbu	a2,266(s4)
    e888c2d2:	8cef00ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  } else if (flags & ND6_SEND_FLAG_ALLNODES_DEST) {
    e888c2d6:	020b0263          	beqz	s6,e888c2fa <nd6_send_na+0x110>
    ip6_addr_set_allnodes_linklocal(&multicast_address);
    e888c2da:	2ff00793          	li	a5,767
    e888c2de:	0005a617          	auipc	a2,0x5a
    e888c2e2:	caa60613          	addi	a2,a2,-854 # e88e5f88 <multicast_address>
    e888c2e6:	e21c                	sd	a5,0(a2)
    e888c2e8:	4785                	li	a5,1
    e888c2ea:	17e2                	slli	a5,a5,0x38
    e888c2ec:	e61c                	sd	a5,8(a2)
    ip6_addr_assign_zone(&multicast_address, IP6_MULTICAST, netif);
    e888c2ee:	10ea4783          	lbu	a5,270(s4)
    dest_addr = &multicast_address;
    e888c2f2:	84b2                	mv	s1,a2
    ip6_addr_assign_zone(&multicast_address, IP6_MULTICAST, netif);
    e888c2f4:	2785                	addiw	a5,a5,1
    e888c2f6:	00f60823          	sb	a5,16(a2)
    na_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len, src_addr,
    e888c2fa:	0129d603          	lhu	a2,18(s3)
    e888c2fe:	8726                	mv	a4,s1
    e888c300:	86ca                	mv	a3,s2
    e888c302:	03a00593          	li	a1,58
    e888c306:	854e                	mv	a0,s3
    e888c308:	cf8fb0ef          	jal	ra,e8887800 <ip6_chksum_pseudo>
    e888c30c:	00a41123          	sh	a0,2(s0)
  ND6_STATS_INC(nd6.xmit);
    e888c310:	13aad783          	lhu	a5,314(s5)
  ip6_output_if(p, src_addr, dest_addr,
    e888c314:	8852                	mv	a6,s4
    e888c316:	8626                	mv	a2,s1
  ND6_STATS_INC(nd6.xmit);
    e888c318:	2785                	addiw	a5,a5,1
    e888c31a:	12fa9d23          	sh	a5,314(s5)
  ip6_output_if(p, src_addr, dest_addr,
    e888c31e:	85ca                	mv	a1,s2
    e888c320:	854e                	mv	a0,s3
    e888c322:	03a00793          	li	a5,58
    e888c326:	4701                	li	a4,0
    e888c328:	0ff00693          	li	a3,255
    e888c32c:	b1dfe0ef          	jal	ra,e888ae48 <ip6_output_if>
}
    e888c330:	f891440b          	ldd	s0,s1,(sp),0,4
    e888c334:	70e2                	ld	ra,56(sp)
    e888c336:	7b42                	ld	s6,48(sp)
    e888c338:	fd514a0b          	ldd	s4,s5,(sp),2,4
  pbuf_free(p);
    e888c33c:	854e                	mv	a0,s3
}
    e888c33e:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888c342:	6121                	addi	sp,sp,64
  pbuf_free(p);
    e888c344:	7090206f          	j	e888f24c <pbuf_free>

00000000e888c348 <nd6_send_rs>:
{
    e888c348:	7139                	addi	sp,sp,-64
    e888c34a:	f891540b          	sdd	s0,s1,(sp),0,4
    e888c34e:	fb31590b          	sdd	s2,s3,(sp),1,4
    e888c352:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e888c356:	fc06                	sd	ra,56(sp)
    e888c358:	f85a                	sd	s6,48(sp)
  if (ip6_addr_isvalid(netif_ip6_addr_state(netif, 0))) {
    e888c35a:	09854783          	lbu	a5,152(a0)
{
    e888c35e:	892a                	mv	s2,a0
    e888c360:	00044a17          	auipc	s4,0x44
    e888c364:	f88a0a13          	addi	s4,s4,-120 # e88d02e8 <ip6_addr_any>
  if (ip6_addr_isvalid(netif_ip6_addr_state(netif, 0))) {
    e888c368:	8bc1                	andi	a5,a5,16
    src_addr = netif_ip6_addr(netif, 0);
    e888c36a:	05050493          	addi	s1,a0,80
  if (ip6_addr_isvalid(netif_ip6_addr_state(netif, 0))) {
    e888c36e:	e391                	bnez	a5,e888c372 <nd6_send_rs+0x2a>
    e888c370:	84d2                	mv	s1,s4
  ip6_addr_set_allrouters_linklocal(&multicast_address);
    e888c372:	2ff00713          	li	a4,767
    e888c376:	0005a797          	auipc	a5,0x5a
    e888c37a:	c1278793          	addi	a5,a5,-1006 # e88e5f88 <multicast_address>
    e888c37e:	e398                	sd	a4,0(a5)
    e888c380:	4705                	li	a4,1
    e888c382:	1766                	slli	a4,a4,0x39
    e888c384:	e798                	sd	a4,8(a5)
  ip6_addr_assign_zone(&multicast_address, IP6_MULTICAST, netif);
    e888c386:	10e94703          	lbu	a4,270(s2)
  u16_t lladdr_opt_len = 0;
    e888c38a:	4981                	li	s3,0
  ip6_addr_assign_zone(&multicast_address, IP6_MULTICAST, netif);
    e888c38c:	2705                	addiw	a4,a4,1
    e888c38e:	00e78823          	sb	a4,16(a5)
  if (src_addr != IP6_ADDR_ANY6) {
    e888c392:	01448c63          	beq	s1,s4,e888c3aa <nd6_send_rs+0x62>
    lladdr_opt_len = ((netif->hwaddr_len + 2) >> 3) + (((netif->hwaddr_len + 2) & 0x07) ? 1 : 0);
    e888c396:	10a94783          	lbu	a5,266(s2)
    e888c39a:	2789                	addiw	a5,a5,2
    e888c39c:	0077f993          	andi	s3,a5,7
    e888c3a0:	013039b3          	snez	s3,s3
    e888c3a4:	4037d79b          	sraiw	a5,a5,0x3
    e888c3a8:	99be                	add	s3,s3,a5
  p = pbuf_alloc(PBUF_IP, sizeof(struct rs_header) + (lladdr_opt_len << 3), PBUF_RAM);
    e888c3aa:	0039959b          	slliw	a1,s3,0x3
    e888c3ae:	28000613          	li	a2,640
    e888c3b2:	05a1                	addi	a1,a1,8
    e888c3b4:	03600513          	li	a0,54
    e888c3b8:	7d9020ef          	jal	ra,e888f390 <pbuf_alloc>
    e888c3bc:	842a                	mv	s0,a0
  if (p == NULL) {
    e888c3be:	0005aa97          	auipc	s5,0x5a
    e888c3c2:	092a8a93          	addi	s5,s5,146 # e88e6450 <lwip_stats>
    e888c3c6:	e115                	bnez	a0,e888c3ea <nd6_send_rs+0xa2>
    ND6_STATS_INC(nd6.memerr);
    e888c3c8:	146ad783          	lhu	a5,326(s5)
    return ERR_BUF;
    e888c3cc:	54f9                	li	s1,-2
    ND6_STATS_INC(nd6.memerr);
    e888c3ce:	2785                	addiw	a5,a5,1
    e888c3d0:	14fa9323          	sh	a5,326(s5)
}
    e888c3d4:	8526                	mv	a0,s1
    e888c3d6:	70e2                	ld	ra,56(sp)
    e888c3d8:	f891440b          	ldd	s0,s1,(sp),0,4
    e888c3dc:	7b42                	ld	s6,48(sp)
    e888c3de:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888c3e2:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e888c3e6:	6121                	addi	sp,sp,64
    e888c3e8:	8082                	ret
  rs_hdr = (struct rs_header *)p->payload;
    e888c3ea:	00853b03          	ld	s6,8(a0)
  rs_hdr->type = ICMP6_TYPE_RS;
    e888c3ee:	08500793          	li	a5,133
    e888c3f2:	00fb3023          	sd	a5,0(s6)
  if (src_addr != IP6_ADDR_ANY6) {
    e888c3f6:	01448f63          	beq	s1,s4,e888c414 <nd6_send_rs+0xcc>
    lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct rs_header));
    e888c3fa:	6508                	ld	a0,8(a0)
    lladdr_opt->type = ND6_OPTION_TYPE_SOURCE_LLADDR;
    e888c3fc:	4785                	li	a5,1
    SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len);
    e888c3fe:	10490593          	addi	a1,s2,260
    lladdr_opt->type = ND6_OPTION_TYPE_SOURCE_LLADDR;
    e888c402:	00f50423          	sb	a5,8(a0)
    lladdr_opt->length = (u8_t)lladdr_opt_len;
    e888c406:	013504a3          	sb	s3,9(a0)
    SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len);
    e888c40a:	10a94603          	lbu	a2,266(s2)
    e888c40e:	0529                	addi	a0,a0,10
    e888c410:	f91ef0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    rs_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len, src_addr,
    e888c414:	01245603          	lhu	a2,18(s0)
    e888c418:	0005a717          	auipc	a4,0x5a
    e888c41c:	b7070713          	addi	a4,a4,-1168 # e88e5f88 <multicast_address>
    e888c420:	86a6                	mv	a3,s1
    e888c422:	03a00593          	li	a1,58
    e888c426:	8522                	mv	a0,s0
    e888c428:	bd8fb0ef          	jal	ra,e8887800 <ip6_chksum_pseudo>
    e888c42c:	00ab1123          	sh	a0,2(s6)
  ND6_STATS_INC(nd6.xmit);
    e888c430:	13aad783          	lhu	a5,314(s5)
    e888c434:	2785                	addiw	a5,a5,1
    e888c436:	12fa9d23          	sh	a5,314(s5)
  err = ip6_output_if(p, (src_addr == IP6_ADDR_ANY6) ? NULL : src_addr, &multicast_address,
    e888c43a:	01449363          	bne	s1,s4,e888c440 <nd6_send_rs+0xf8>
    e888c43e:	4481                	li	s1,0
    e888c440:	85a6                	mv	a1,s1
    e888c442:	884a                	mv	a6,s2
    e888c444:	03a00793          	li	a5,58
    e888c448:	4701                	li	a4,0
    e888c44a:	0ff00693          	li	a3,255
    e888c44e:	0005a617          	auipc	a2,0x5a
    e888c452:	b3a60613          	addi	a2,a2,-1222 # e88e5f88 <multicast_address>
    e888c456:	8522                	mv	a0,s0
    e888c458:	9f1fe0ef          	jal	ra,e888ae48 <ip6_output_if>
    e888c45c:	84aa                	mv	s1,a0
  pbuf_free(p);
    e888c45e:	8522                	mv	a0,s0
    e888c460:	5ed020ef          	jal	ra,e888f24c <pbuf_free>
  return err;
    e888c464:	bf85                	j	e888c3d4 <nd6_send_rs+0x8c>

00000000e888c466 <nd6_send_ns>:
{
    e888c466:	715d                	addi	sp,sp,-80
    e888c468:	e0a2                	sd	s0,64(sp)
    e888c46a:	f44e                	sd	s3,40(sp)
    e888c46c:	e45e                	sd	s7,8(sp)
    e888c46e:	e486                	sd	ra,72(sp)
    e888c470:	fc26                	sd	s1,56(sp)
    e888c472:	f84a                	sd	s2,48(sp)
    e888c474:	f052                	sd	s4,32(sp)
    e888c476:	ec56                	sd	s5,24(sp)
    e888c478:	e85a                	sd	s6,16(sp)
    e888c47a:	89aa                	mv	s3,a0
    e888c47c:	842e                	mv	s0,a1
    e888c47e:	8bb2                	mv	s7,a2
  LWIP_ASSERT("target address is required", target_addr != NULL);
    e888c480:	e59d                	bnez	a1,e888c4ae <nd6_send_ns+0x48>
    e888c482:	02f00593          	li	a1,47
    e888c486:	00044517          	auipc	a0,0x44
    e888c48a:	08250513          	addi	a0,a0,130 # e88d0508 <ip6_addr_any+0x220>
    e888c48e:	eebef0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888c492:	00150693          	addi	a3,a0,1
    e888c496:	4a400613          	li	a2,1188
    e888c49a:	00044597          	auipc	a1,0x44
    e888c49e:	12e58593          	addi	a1,a1,302 # e88d05c8 <ip6_addr_any+0x2e0>
    e888c4a2:	00043517          	auipc	a0,0x43
    e888c4a6:	c0e50513          	addi	a0,a0,-1010 # e88cf0b0 <kSinTable1024+0x900>
    e888c4aa:	e1def0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (!(flags & ND6_SEND_FLAG_ANY_SRC) &&
    e888c4ae:	004bf793          	andi	a5,s7,4
    e888c4b2:	ebb1                	bnez	a5,e888c506 <nd6_send_ns+0xa0>
    e888c4b4:	0989c783          	lbu	a5,152(s3)
    e888c4b8:	8bc1                	andi	a5,a5,16
    e888c4ba:	c7b1                	beqz	a5,e888c506 <nd6_send_ns+0xa0>
    lladdr_opt_len = ((netif->hwaddr_len + 2) + 7) >> 3;
    e888c4bc:	10a9c483          	lbu	s1,266(s3)
    src_addr = netif_ip6_addr(netif, 0);
    e888c4c0:	05098a13          	addi	s4,s3,80
    lladdr_opt_len = ((netif->hwaddr_len + 2) + 7) >> 3;
    e888c4c4:	24a5                	addiw	s1,s1,9
    e888c4c6:	808d                	srli	s1,s1,0x3
  p = pbuf_alloc(PBUF_IP, sizeof(struct ns_header) + (lladdr_opt_len << 3), PBUF_RAM);
    e888c4c8:	0034959b          	slliw	a1,s1,0x3
    e888c4cc:	28000613          	li	a2,640
    e888c4d0:	05e1                	addi	a1,a1,24
    e888c4d2:	03600513          	li	a0,54
    e888c4d6:	6bb020ef          	jal	ra,e888f390 <pbuf_alloc>
    e888c4da:	892a                	mv	s2,a0
  if (p == NULL) {
    e888c4dc:	0005ab17          	auipc	s6,0x5a
    e888c4e0:	f74b0b13          	addi	s6,s6,-140 # e88e6450 <lwip_stats>
    e888c4e4:	e51d                	bnez	a0,e888c512 <nd6_send_ns+0xac>
    ND6_STATS_INC(nd6.memerr);
    e888c4e6:	146b5783          	lhu	a5,326(s6)
}
    e888c4ea:	60a6                	ld	ra,72(sp)
    e888c4ec:	6406                	ld	s0,64(sp)
    ND6_STATS_INC(nd6.memerr);
    e888c4ee:	2785                	addiw	a5,a5,1
    e888c4f0:	14fb1323          	sh	a5,326(s6)
}
    e888c4f4:	74e2                	ld	s1,56(sp)
    e888c4f6:	7942                	ld	s2,48(sp)
    e888c4f8:	79a2                	ld	s3,40(sp)
    e888c4fa:	7a02                	ld	s4,32(sp)
    e888c4fc:	6ae2                	ld	s5,24(sp)
    e888c4fe:	6b42                	ld	s6,16(sp)
    e888c500:	6ba2                	ld	s7,8(sp)
    e888c502:	6161                	addi	sp,sp,80
    e888c504:	8082                	ret
    lladdr_opt_len = 0;
    e888c506:	4481                	li	s1,0
    src_addr = IP6_ADDR_ANY6;
    e888c508:	00044a17          	auipc	s4,0x44
    e888c50c:	de0a0a13          	addi	s4,s4,-544 # e88d02e8 <ip6_addr_any>
    e888c510:	bf65                	j	e888c4c8 <nd6_send_ns+0x62>
  ns_hdr = (struct ns_header *)p->payload;
    e888c512:	00853a83          	ld	s5,8(a0)
  ns_hdr->type = ICMP6_TYPE_NS;
    e888c516:	08700793          	li	a5,135
    e888c51a:	00fab023          	sd	a5,0(s5)
  ip6_addr_copy_to_packed(ns_hdr->target_address, *target_addr);
    e888c51e:	401c                	lw	a5,0(s0)
    e888c520:	00faa423          	sw	a5,8(s5)
    e888c524:	405c                	lw	a5,4(s0)
    e888c526:	00faa623          	sw	a5,12(s5)
    e888c52a:	441c                	lw	a5,8(s0)
    e888c52c:	00faa823          	sw	a5,16(s5)
    e888c530:	445c                	lw	a5,12(s0)
    e888c532:	00faaa23          	sw	a5,20(s5)
  if (lladdr_opt_len != 0) {
    e888c536:	cc91                	beqz	s1,e888c552 <nd6_send_ns+0xec>
    struct lladdr_option *lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct ns_header));
    e888c538:	6508                	ld	a0,8(a0)
    lladdr_opt->type = ND6_OPTION_TYPE_SOURCE_LLADDR;
    e888c53a:	4785                	li	a5,1
    SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len);
    e888c53c:	10498593          	addi	a1,s3,260
    lladdr_opt->type = ND6_OPTION_TYPE_SOURCE_LLADDR;
    e888c540:	00f50c23          	sb	a5,24(a0)
    lladdr_opt->length = (u8_t)lladdr_opt_len;
    e888c544:	00950ca3          	sb	s1,25(a0)
    SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len);
    e888c548:	10a9c603          	lbu	a2,266(s3)
    e888c54c:	0569                	addi	a0,a0,26
    e888c54e:	e53ef0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  if (flags & ND6_SEND_FLAG_MULTICAST_DEST) {
    e888c552:	001bfb93          	andi	s7,s7,1
    e888c556:	020b8663          	beqz	s7,e888c582 <nd6_send_ns+0x11c>
    ip6_addr_set_solicitednode(&multicast_address, target_addr->addr[3]);
    e888c55a:	2ff00713          	li	a4,767
    e888c55e:	0005a797          	auipc	a5,0x5a
    e888c562:	a2a78793          	addi	a5,a5,-1494 # e88e5f88 <multicast_address>
    e888c566:	e398                	sd	a4,0(a5)
    e888c568:	01000737          	lui	a4,0x1000
    e888c56c:	c798                	sw	a4,8(a5)
    e888c56e:	4458                	lw	a4,12(s0)
    target_addr = &multicast_address;
    e888c570:	843e                	mv	s0,a5
    ip6_addr_set_solicitednode(&multicast_address, target_addr->addr[3]);
    e888c572:	0ff76713          	ori	a4,a4,255
    e888c576:	c7d8                	sw	a4,12(a5)
    ip6_addr_assign_zone(&multicast_address, IP6_MULTICAST, netif);
    e888c578:	10e9c703          	lbu	a4,270(s3)
    e888c57c:	2705                	addiw	a4,a4,1
    e888c57e:	00e78823          	sb	a4,16(a5)
    ns_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len, src_addr,
    e888c582:	01295603          	lhu	a2,18(s2)
    e888c586:	8722                	mv	a4,s0
    e888c588:	86d2                	mv	a3,s4
    e888c58a:	03a00593          	li	a1,58
    e888c58e:	854a                	mv	a0,s2
    e888c590:	a70fb0ef          	jal	ra,e8887800 <ip6_chksum_pseudo>
    e888c594:	00aa9123          	sh	a0,2(s5)
  ND6_STATS_INC(nd6.xmit);
    e888c598:	13ab5783          	lhu	a5,314(s6)
    e888c59c:	2785                	addiw	a5,a5,1
    e888c59e:	12fb1d23          	sh	a5,314(s6)
  ip6_output_if(p, (src_addr == IP6_ADDR_ANY6) ? NULL : src_addr, target_addr,
    e888c5a2:	00044797          	auipc	a5,0x44
    e888c5a6:	d4678793          	addi	a5,a5,-698 # e88d02e8 <ip6_addr_any>
    e888c5aa:	00fa1363          	bne	s4,a5,e888c5b0 <nd6_send_ns+0x14a>
    e888c5ae:	4a01                	li	s4,0
    e888c5b0:	884e                	mv	a6,s3
    e888c5b2:	8622                	mv	a2,s0
    e888c5b4:	85d2                	mv	a1,s4
    e888c5b6:	854a                	mv	a0,s2
    e888c5b8:	03a00793          	li	a5,58
    e888c5bc:	4701                	li	a4,0
    e888c5be:	0ff00693          	li	a3,255
    e888c5c2:	887fe0ef          	jal	ra,e888ae48 <ip6_output_if>
}
    e888c5c6:	6406                	ld	s0,64(sp)
    e888c5c8:	60a6                	ld	ra,72(sp)
    e888c5ca:	74e2                	ld	s1,56(sp)
    e888c5cc:	79a2                	ld	s3,40(sp)
    e888c5ce:	7a02                	ld	s4,32(sp)
    e888c5d0:	6ae2                	ld	s5,24(sp)
    e888c5d2:	6b42                	ld	s6,16(sp)
    e888c5d4:	6ba2                	ld	s7,8(sp)
  pbuf_free(p);
    e888c5d6:	854a                	mv	a0,s2
}
    e888c5d8:	7942                	ld	s2,48(sp)
    e888c5da:	6161                	addi	sp,sp,80
  pbuf_free(p);
    e888c5dc:	4710206f          	j	e888f24c <pbuf_free>

00000000e888c5e0 <nd6_select_router.isra.0>:
    if (default_router_list[i].neighbor_entry != NULL) {
    e888c5e0:	00059817          	auipc	a6,0x59
    e888c5e4:	79080813          	addi	a6,a6,1936 # e88e5d70 <default_router_list>
nd6_select_router(const ip6_addr_t *ip6addr, struct netif *netif)
    e888c5e8:	4701                	li	a4,0
  valid_router = -1;
    e888c5ea:	56fd                	li	a3,-1
    e888c5ec:	88c2                	mv	a7,a6
        if (default_router_list[i].neighbor_entry->state != ND6_INCOMPLETE) {
    e888c5ee:	4e85                	li	t4,1
          if (default_router_list[i].neighbor_entry->state == ND6_REACHABLE) {
    e888c5f0:	4f09                	li	t5,2
          } else if (valid_router < 0) {
    e888c5f2:	5ffd                	li	t6,-1
  for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) {
    e888c5f4:	4e0d                	li	t3,3
    if (default_router_list[i].neighbor_entry != NULL) {
    e888c5f6:	00471793          	slli	a5,a4,0x4
    e888c5fa:	6107c60b          	lrd	a2,a5,a6,0
    e888c5fe:	1c07258b          	ext	a1,a4,7,0
    e888c602:	c605                	beqz	a2,e888c62a <nd6_select_router.isra.0+0x4a>
      router_netif = default_router_list[i].neighbor_entry->netif;
    e888c604:	6e1c                	ld	a5,24(a2)
      if ((router_netif != NULL) && (netif != NULL ? netif == router_netif :
    e888c606:	c395                	beqz	a5,e888c62a <nd6_select_router.isra.0+0x4a>
    e888c608:	c159                	beqz	a0,e888c68e <nd6_select_router.isra.0+0xae>
    e888c60a:	8f89                	sub	a5,a5,a0
    e888c60c:	0017b793          	seqz	a5,a5
    e888c610:	cf89                	beqz	a5,e888c62a <nd6_select_router.isra.0+0x4a>
        if (default_router_list[i].neighbor_entry->state != ND6_INCOMPLETE) {
    e888c612:	03064783          	lbu	a5,48(a2)
    e888c616:	01d78a63          	beq	a5,t4,e888c62a <nd6_select_router.isra.0+0x4a>
          if (default_router_list[i].neighbor_entry->state == ND6_REACHABLE) {
    e888c61a:	0be78363          	beq	a5,t5,e888c6c0 <nd6_select_router.isra.0+0xe0>
          } else if (valid_router < 0) {
    e888c61e:	41f687b3          	sub	a5,a3,t6
    e888c622:	00f037b3          	snez	a5,a5
    e888c626:	40f5968b          	mveqz	a3,a1,a5
  for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) {
    e888c62a:	0705                	addi	a4,a4,1
    e888c62c:	fdc715e3          	bne	a4,t3,e888c5f6 <nd6_select_router.isra.0+0x16>
  if (valid_router >= 0) {
    e888c630:	57fd                	li	a5,-1
    e888c632:	04f69c63          	bne	a3,a5,e888c68a <nd6_select_router.isra.0+0xaa>
  if ((netif == NULL) && (++last_router >= LWIP_ND6_NUM_ROUTERS)) {
    e888c636:	0005a717          	auipc	a4,0x5a
    e888c63a:	94a70713          	addi	a4,a4,-1718 # e88e5f80 <last_router.7561>
    e888c63e:	e919                	bnez	a0,e888c654 <nd6_select_router.isra.0+0x74>
    e888c640:	00074783          	lbu	a5,0(a4)
    e888c644:	4609                	li	a2,2
    e888c646:	2785                	addiw	a5,a5,1
    e888c648:	1c07a78b          	ext	a5,a5,7,0
    e888c64c:	04f64b63          	blt	a2,a5,e888c6a2 <nd6_select_router.isra.0+0xc2>
    e888c650:	00f70023          	sb	a5,0(a4)
  i = last_router;
    e888c654:	00070703          	lb	a4,0(a4)
    e888c658:	460d                	li	a2,3
    if (++i >= LWIP_ND6_NUM_ROUTERS) {
    e888c65a:	4809                	li	a6,2
    if (default_router_list[i].neighbor_entry != NULL) {
    e888c65c:	00471793          	slli	a5,a4,0x4
    e888c660:	60f8c78b          	lrd	a5,a7,a5,0
    e888c664:	cb89                	beqz	a5,e888c676 <nd6_select_router.isra.0+0x96>
      router_netif = default_router_list[i].neighbor_entry->netif;
    e888c666:	6f9c                	ld	a5,24(a5)
      if ((router_netif != NULL) && (netif != NULL ? netif == router_netif :
    e888c668:	c799                	beqz	a5,e888c676 <nd6_select_router.isra.0+0x96>
    e888c66a:	c129                	beqz	a0,e888c6ac <nd6_select_router.isra.0+0xcc>
    e888c66c:	40f507b3          	sub	a5,a0,a5
    e888c670:	0017b793          	seqz	a5,a5
    e888c674:	eba1                	bnez	a5,e888c6c4 <nd6_select_router.isra.0+0xe4>
    if (++i >= LWIP_ND6_NUM_ROUTERS) {
    e888c676:	2705                	addiw	a4,a4,1
    e888c678:	1c07270b          	ext	a4,a4,7,0
    e888c67c:	00e85363          	bge	a6,a4,e888c682 <nd6_select_router.isra.0+0xa2>
      i = 0;
    e888c680:	4701                	li	a4,0
  for (j = 0; j < LWIP_ND6_NUM_ROUTERS; j++) {
    e888c682:	367d                	addiw	a2,a2,-1
    e888c684:	0ff67613          	andi	a2,a2,255
    e888c688:	fa71                	bnez	a2,e888c65c <nd6_select_router.isra.0+0x7c>
}
    e888c68a:	8536                	mv	a0,a3
    e888c68c:	8082                	ret
          (netif_is_up(router_netif) && netif_is_link_up(router_netif)))) {
    e888c68e:	10b7c303          	lbu	t1,267(a5)
    e888c692:	4781                	li	a5,0
    e888c694:	00137293          	andi	t0,t1,1
    e888c698:	f6028ce3          	beqz	t0,e888c610 <nd6_select_router.isra.0+0x30>
    e888c69c:	0823378b          	extu	a5,t1,2,2
    e888c6a0:	bf85                	j	e888c610 <nd6_select_router.isra.0+0x30>
    last_router = 0;
    e888c6a2:	0005a797          	auipc	a5,0x5a
    e888c6a6:	8c078f23          	sb	zero,-1826(a5) # e88e5f80 <last_router.7561>
    e888c6aa:	b76d                	j	e888c654 <nd6_select_router.isra.0+0x74>
          (netif_is_up(router_netif) && netif_is_link_up(router_netif)))) {
    e888c6ac:	10b7c583          	lbu	a1,267(a5)
    e888c6b0:	4781                	li	a5,0
    e888c6b2:	0015f313          	andi	t1,a1,1
    e888c6b6:	fa030fe3          	beqz	t1,e888c674 <nd6_select_router.isra.0+0x94>
    e888c6ba:	0825b78b          	extu	a5,a1,2,2
    e888c6be:	bf5d                	j	e888c674 <nd6_select_router.isra.0+0x94>
          if (default_router_list[i].neighbor_entry->state == ND6_REACHABLE) {
    e888c6c0:	86ae                	mv	a3,a1
    e888c6c2:	b7e1                	j	e888c68a <nd6_select_router.isra.0+0xaa>
      if ((router_netif != NULL) && (netif != NULL ? netif == router_netif :
    e888c6c4:	86ba                	mv	a3,a4
    e888c6c6:	b7d1                	j	e888c68a <nd6_select_router.isra.0+0xaa>

00000000e888c6c8 <nd6_send_q.part.2>:
 * Send queued packets for a neighbor
 *
 * @param i the neighbor to send packets to
 */
static void
nd6_send_q(s8_t i)
    e888c6c8:	715d                	addi	sp,sp,-80
    e888c6ca:	fc26                	sd	s1,56(sp)
  if ((i < 0) || (i >= LWIP_ND6_NUM_NEIGHBORS)) {
    return;
  }

#if LWIP_ND6_QUEUEING
  while (neighbor_cache[i].q != NULL) {
    e888c6cc:	03800793          	li	a5,56
    e888c6d0:	0005a497          	auipc	s1,0x5a
    e888c6d4:	8f848493          	addi	s1,s1,-1800 # e88e5fc8 <neighbor_cache>
    e888c6d8:	20f5148b          	mula	s1,a0,a5
nd6_send_q(s8_t i)
    e888c6dc:	f84a                	sd	s2,48(sp)
    /* Get ipv6 header. */
    ip6hdr = (struct ip6_hdr *)(q->p->payload);
    /* Create an aligned copy. */
    ip6_addr_copy_from_packed(dest, ip6hdr->dest);
    /* Restore the zone, if applicable. */
    ip6_addr_assign_zone(&dest, IP6_UNKNOWN, neighbor_cache[i].netif);
    e888c6de:	6931                	lui	s2,0xc
nd6_send_q(s8_t i)
    e888c6e0:	f44e                	sd	s3,40(sp)
    e888c6e2:	e486                	sd	ra,72(sp)
    e888c6e4:	e0a2                	sd	s0,64(sp)
    ip6_addr_assign_zone(&dest, IP6_UNKNOWN, neighbor_cache[i].netif);
    e888c6e6:	0ff90913          	addi	s2,s2,255 # c0ff <memcmp-0xe87f3f01>
    e888c6ea:	89a6                	mv	s3,s1
  while (neighbor_cache[i].q != NULL) {
    e888c6ec:	7480                	ld	s0,40(s1)
    e888c6ee:	e801                	bnez	s0,e888c6fe <nd6_send_q.part.2+0x36>
    /* free the queued IP packet */
    pbuf_free(neighbor_cache[i].q);
    neighbor_cache[i].q = NULL;
  }
#endif /* LWIP_ND6_QUEUEING */
}
    e888c6f0:	60a6                	ld	ra,72(sp)
    e888c6f2:	6406                	ld	s0,64(sp)
    e888c6f4:	74e2                	ld	s1,56(sp)
    e888c6f6:	7942                	ld	s2,48(sp)
    e888c6f8:	79a2                	ld	s3,40(sp)
    e888c6fa:	6161                	addi	sp,sp,80
    e888c6fc:	8082                	ret
    neighbor_cache[i].q = q->next;
    e888c6fe:	601c                	ld	a5,0(s0)
    e888c700:	f49c                	sd	a5,40(s1)
    ip6hdr = (struct ip6_hdr *)(q->p->payload);
    e888c702:	641c                	ld	a5,8(s0)
    e888c704:	6798                	ld	a4,8(a5)
    ip6_addr_copy_from_packed(dest, ip6hdr->dest);
    e888c706:	6f14                	ld	a3,24(a4)
    e888c708:	4f1c                	lw	a5,24(a4)
    e888c70a:	7318                	ld	a4,32(a4)
    e888c70c:	e436                	sd	a3,8(sp)
    ip6_addr_assign_zone(&dest, IP6_UNKNOWN, neighbor_cache[i].netif);
    e888c70e:	0127f6b3          	and	a3,a5,s2
    ip6_addr_copy_from_packed(dest, ip6hdr->dest);
    e888c712:	e83a                	sd	a4,16(sp)
    ip6_addr_assign_zone(&dest, IP6_UNKNOWN, neighbor_cache[i].netif);
    e888c714:	6721                	lui	a4,0x8
    e888c716:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e888c71a:	00e68c63          	beq	a3,a4,e888c732 <nd6_send_q.part.2+0x6a>
    e888c71e:	6725                	lui	a4,0x9
    e888c720:	177d                	addi	a4,a4,-1
    e888c722:	8ff9                	and	a5,a5,a4
    e888c724:	e017879b          	addiw	a5,a5,-511
    e888c728:	eff7f793          	andi	a5,a5,-257
    e888c72c:	2781                	sext.w	a5,a5
    e888c72e:	4701                	li	a4,0
    e888c730:	eb81                	bnez	a5,e888c740 <nd6_send_q.part.2+0x78>
    e888c732:	0189b783          	ld	a5,24(s3)
    e888c736:	10e7c703          	lbu	a4,270(a5)
    e888c73a:	2705                	addiw	a4,a4,1
    e888c73c:	0ff77713          	andi	a4,a4,255
    (neighbor_cache[i].netif)->output_ip6(neighbor_cache[i].netif, q->p, &dest);
    e888c740:	0189b503          	ld	a0,24(s3)
    ip6_addr_assign_zone(&dest, IP6_UNKNOWN, neighbor_cache[i].netif);
    e888c744:	00e10c23          	sb	a4,24(sp)
    (neighbor_cache[i].netif)->output_ip6(neighbor_cache[i].netif, q->p, &dest);
    e888c748:	640c                	ld	a1,8(s0)
    e888c74a:	697c                	ld	a5,208(a0)
    e888c74c:	0030                	addi	a2,sp,8
    e888c74e:	9782                	jalr	a5
    pbuf_free(q->p);
    e888c750:	6408                	ld	a0,8(s0)
    e888c752:	2fb020ef          	jal	ra,e888f24c <pbuf_free>
    memp_free(MEMP_ND6_QUEUE, q);
    e888c756:	85a2                	mv	a1,s0
    e888c758:	4535                	li	a0,13
    e888c75a:	245010ef          	jal	ra,e888e19e <memp_free>
    e888c75e:	b779                	j	e888c6ec <nd6_send_q.part.2+0x24>

00000000e888c760 <nd6_duplicate_addr_detected>:
{
    e888c760:	1101                	addi	sp,sp,-32
    e888c762:	e826                	sd	s1,16(sp)
  netif_ip6_addr_set_state(netif, addr_idx, IP6_ADDR_DUPLICATED);
    e888c764:	04000613          	li	a2,64
{
    e888c768:	84ae                	mv	s1,a1
    e888c76a:	e422                	sd	s0,8(sp)
    e888c76c:	ec06                	sd	ra,24(sp)
    e888c76e:	842a                	mv	s0,a0
  netif_ip6_addr_set_state(netif, addr_idx, IP6_ADDR_DUPLICATED);
    e888c770:	6bc020ef          	jal	ra,e888ee2c <netif_ip6_addr_set_state>
  if (addr_idx == 0) {
    e888c774:	ec9d                	bnez	s1,e888c7b2 <nd6_duplicate_addr_detected+0x52>
      if (!ip6_addr_isinvalid(netif_ip6_addr_state(netif, i)) &&
    e888c776:	09944783          	lbu	a5,153(s0)
    e888c77a:	cb99                	beqz	a5,e888c790 <nd6_duplicate_addr_detected+0x30>
    e888c77c:	c811                	beqz	s0,e888c790 <nd6_duplicate_addr_detected+0x30>
          !netif_ip6_addr_isstatic(netif, i)) {
    e888c77e:	0a042783          	lw	a5,160(s0)
    e888c782:	c799                	beqz	a5,e888c790 <nd6_duplicate_addr_detected+0x30>
        netif_ip6_addr_set_state(netif, i, IP6_ADDR_DUPLICATED);
    e888c784:	04000613          	li	a2,64
    e888c788:	4585                	li	a1,1
    e888c78a:	8522                	mv	a0,s0
    e888c78c:	6a0020ef          	jal	ra,e888ee2c <netif_ip6_addr_set_state>
      if (!ip6_addr_isinvalid(netif_ip6_addr_state(netif, i)) &&
    e888c790:	09a44783          	lbu	a5,154(s0)
    e888c794:	cf99                	beqz	a5,e888c7b2 <nd6_duplicate_addr_detected+0x52>
    e888c796:	cc11                	beqz	s0,e888c7b2 <nd6_duplicate_addr_detected+0x52>
          !netif_ip6_addr_isstatic(netif, i)) {
    e888c798:	0a442783          	lw	a5,164(s0)
    e888c79c:	cb99                	beqz	a5,e888c7b2 <nd6_duplicate_addr_detected+0x52>
        netif_ip6_addr_set_state(netif, i, IP6_ADDR_DUPLICATED);
    e888c79e:	8522                	mv	a0,s0
}
    e888c7a0:	6422                	ld	s0,8(sp)
    e888c7a2:	60e2                	ld	ra,24(sp)
    e888c7a4:	64c2                	ld	s1,16(sp)
        netif_ip6_addr_set_state(netif, i, IP6_ADDR_DUPLICATED);
    e888c7a6:	04000613          	li	a2,64
    e888c7aa:	4589                	li	a1,2
}
    e888c7ac:	6105                	addi	sp,sp,32
        netif_ip6_addr_set_state(netif, i, IP6_ADDR_DUPLICATED);
    e888c7ae:	67e0206f          	j	e888ee2c <netif_ip6_addr_set_state>
}
    e888c7b2:	60e2                	ld	ra,24(sp)
    e888c7b4:	6422                	ld	s0,8(sp)
    e888c7b6:	64c2                	ld	s1,16(sp)
    e888c7b8:	6105                	addi	sp,sp,32
    e888c7ba:	8082                	ret

00000000e888c7bc <nd6_free_neighbor_cache_entry>:
  if ((i < 0) || (i >= LWIP_ND6_NUM_NEIGHBORS)) {
    e888c7bc:	0ff57713          	andi	a4,a0,255
    e888c7c0:	47a5                	li	a5,9
    e888c7c2:	06e7e863          	bltu	a5,a4,e888c832 <nd6_free_neighbor_cache_entry+0x76>
{
    e888c7c6:	1101                	addi	sp,sp,-32
    e888c7c8:	f891540b          	sdd	s0,s1,(sp),0,4
  if (neighbor_cache[i].isrouter) {
    e888c7cc:	00059497          	auipc	s1,0x59
    e888c7d0:	7fc48493          	addi	s1,s1,2044 # e88e5fc8 <neighbor_cache>
{
    e888c7d4:	e84a                	sd	s2,16(sp)
  if (neighbor_cache[i].isrouter) {
    e888c7d6:	03800793          	li	a5,56
    e888c7da:	0005041b          	sext.w	s0,a0
    e888c7de:	8926                	mv	s2,s1
    e888c7e0:	20f4190b          	mula	s2,s0,a5
{
    e888c7e4:	ec06                	sd	ra,24(sp)
  if (neighbor_cache[i].isrouter) {
    e888c7e6:	03194783          	lbu	a5,49(s2)
    e888c7ea:	ef95                	bnez	a5,e888c826 <nd6_free_neighbor_cache_entry+0x6a>
  if (neighbor_cache[i].q != NULL) {
    e888c7ec:	02893503          	ld	a0,40(s2)
    e888c7f0:	c509                	beqz	a0,e888c7fa <nd6_free_neighbor_cache_entry+0x3e>
    nd6_free_q(neighbor_cache[i].q);
    e888c7f2:	923ff0ef          	jal	ra,e888c114 <nd6_free_q>
    neighbor_cache[i].q = NULL;
    e888c7f6:	02093423          	sd	zero,40(s2)
  neighbor_cache[i].state = ND6_NO_ENTRY;
    e888c7fa:	03800513          	li	a0,56
    e888c7fe:	02a40433          	mul	s0,s0,a0
    e888c802:	008487b3          	add	a5,s1,s0
    e888c806:	02079823          	sh	zero,48(a5)
  neighbor_cache[i].netif = NULL;
    e888c80a:	0007bc23          	sd	zero,24(a5)
  ip6_addr_set_zero(&(neighbor_cache[i].next_hop_address));
    e888c80e:	4084d00b          	srw	zero,s1,s0,0
  neighbor_cache[i].counter.reachable_time = 0;
    e888c812:	0207aa23          	sw	zero,52(a5)
  ip6_addr_set_zero(&(neighbor_cache[i].next_hop_address));
    e888c816:	0007a223          	sw	zero,4(a5)
    e888c81a:	0007a423          	sw	zero,8(a5)
    e888c81e:	0007a623          	sw	zero,12(a5)
    e888c822:	00078823          	sb	zero,16(a5)
}
    e888c826:	60e2                	ld	ra,24(sp)
    e888c828:	f891440b          	ldd	s0,s1,(sp),0,4
    e888c82c:	6942                	ld	s2,16(sp)
    e888c82e:	6105                	addi	sp,sp,32
    e888c830:	8082                	ret
    e888c832:	8082                	ret

00000000e888c834 <nd6_new_neighbor_cache_entry>:
{
    e888c834:	1141                	addi	sp,sp,-16
    e888c836:	00059717          	auipc	a4,0x59
    e888c83a:	79270713          	addi	a4,a4,1938 # e88e5fc8 <neighbor_cache>
    e888c83e:	e022                	sd	s0,0(sp)
    e888c840:	e406                	sd	ra,8(sp)
    e888c842:	87ba                	mv	a5,a4
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c844:	4401                	li	s0,0
    e888c846:	46a9                	li	a3,10
    if (neighbor_cache[i].state == ND6_NO_ENTRY) {
    e888c848:	0307c603          	lbu	a2,48(a5)
    e888c84c:	14060563          	beqz	a2,e888c996 <nd6_new_neighbor_cache_entry+0x162>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c850:	2405                	addiw	s0,s0,1
    e888c852:	1c04240b          	ext	s0,s0,7,0
    e888c856:	03878793          	addi	a5,a5,56
    e888c85a:	fed417e3          	bne	s0,a3,e888c848 <nd6_new_neighbor_cache_entry+0x14>
    e888c85e:	00059797          	auipc	a5,0x59
    e888c862:	76a78793          	addi	a5,a5,1898 # e88e5fc8 <neighbor_cache>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c866:	4401                	li	s0,0
    if ((neighbor_cache[i].state == ND6_STALE) &&
    e888c868:	460d                	li	a2,3
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c86a:	46a9                	li	a3,10
    if ((neighbor_cache[i].state == ND6_STALE) &&
    e888c86c:	0307c583          	lbu	a1,48(a5)
    e888c870:	00c59963          	bne	a1,a2,e888c882 <nd6_new_neighbor_cache_entry+0x4e>
    e888c874:	0317c583          	lbu	a1,49(a5)
    e888c878:	e589                	bnez	a1,e888c882 <nd6_new_neighbor_cache_entry+0x4e>
    nd6_free_neighbor_cache_entry(j);
    e888c87a:	8522                	mv	a0,s0
    e888c87c:	f41ff0ef          	jal	ra,e888c7bc <nd6_free_neighbor_cache_entry>
    return j;
    e888c880:	aa19                	j	e888c996 <nd6_new_neighbor_cache_entry+0x162>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c882:	2405                	addiw	s0,s0,1
    e888c884:	1c04240b          	ext	s0,s0,7,0
    e888c888:	03878793          	addi	a5,a5,56
    e888c88c:	fed410e3          	bne	s0,a3,e888c86c <nd6_new_neighbor_cache_entry+0x38>
    e888c890:	00059797          	auipc	a5,0x59
    e888c894:	73878793          	addi	a5,a5,1848 # e88e5fc8 <neighbor_cache>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c898:	4401                	li	s0,0
    if ((neighbor_cache[i].state == ND6_PROBE) &&
    e888c89a:	4615                	li	a2,5
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c89c:	46a9                	li	a3,10
    if ((neighbor_cache[i].state == ND6_PROBE) &&
    e888c89e:	0307c583          	lbu	a1,48(a5)
    e888c8a2:	00c59563          	bne	a1,a2,e888c8ac <nd6_new_neighbor_cache_entry+0x78>
    e888c8a6:	0317c583          	lbu	a1,49(a5)
    e888c8aa:	d9e1                	beqz	a1,e888c87a <nd6_new_neighbor_cache_entry+0x46>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c8ac:	2405                	addiw	s0,s0,1
    e888c8ae:	1c04240b          	ext	s0,s0,7,0
    e888c8b2:	03878793          	addi	a5,a5,56
    e888c8b6:	fed414e3          	bne	s0,a3,e888c89e <nd6_new_neighbor_cache_entry+0x6a>
    e888c8ba:	00059797          	auipc	a5,0x59
    e888c8be:	70e78793          	addi	a5,a5,1806 # e88e5fc8 <neighbor_cache>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c8c2:	4401                	li	s0,0
    if ((neighbor_cache[i].state == ND6_DELAY) &&
    e888c8c4:	4611                	li	a2,4
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c8c6:	46a9                	li	a3,10
    if ((neighbor_cache[i].state == ND6_DELAY) &&
    e888c8c8:	0307c583          	lbu	a1,48(a5)
    e888c8cc:	00c59563          	bne	a1,a2,e888c8d6 <nd6_new_neighbor_cache_entry+0xa2>
    e888c8d0:	0317c583          	lbu	a1,49(a5)
    e888c8d4:	d1dd                	beqz	a1,e888c87a <nd6_new_neighbor_cache_entry+0x46>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c8d6:	2405                	addiw	s0,s0,1
    e888c8d8:	1c04240b          	ext	s0,s0,7,0
    e888c8dc:	03878793          	addi	a5,a5,56
    e888c8e0:	fed414e3          	bne	s0,a3,e888c8c8 <nd6_new_neighbor_cache_entry+0x94>
    e888c8e4:	00059697          	auipc	a3,0x59
    e888c8e8:	6e468693          	addi	a3,a3,1764 # e88e5fc8 <neighbor_cache>
  j = -1;
    e888c8ec:	547d                	li	s0,-1
  time = 0xfffffffful;
    e888c8ee:	567d                	li	a2,-1
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c8f0:	4781                	li	a5,0
    if ((neighbor_cache[i].state == ND6_REACHABLE) &&
    e888c8f2:	4809                	li	a6,2
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c8f4:	4529                	li	a0,10
    if ((neighbor_cache[i].state == ND6_REACHABLE) &&
    e888c8f6:	0306c583          	lbu	a1,48(a3)
    e888c8fa:	01059a63          	bne	a1,a6,e888c90e <nd6_new_neighbor_cache_entry+0xda>
    e888c8fe:	0316c583          	lbu	a1,49(a3)
    e888c902:	e591                	bnez	a1,e888c90e <nd6_new_neighbor_cache_entry+0xda>
      if (neighbor_cache[i].counter.reachable_time < time) {
    e888c904:	5acc                	lw	a1,52(a3)
    e888c906:	00c5f463          	bgeu	a1,a2,e888c90e <nd6_new_neighbor_cache_entry+0xda>
    e888c90a:	862e                	mv	a2,a1
    e888c90c:	843e                	mv	s0,a5
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c90e:	2785                	addiw	a5,a5,1
    e888c910:	1c07a78b          	ext	a5,a5,7,0
    e888c914:	03868693          	addi	a3,a3,56
    e888c918:	fca79fe3          	bne	a5,a0,e888c8f6 <nd6_new_neighbor_cache_entry+0xc2>
  if (j >= 0) {
    e888c91c:	57fd                	li	a5,-1
    e888c91e:	f4f41ee3          	bne	s0,a5,e888c87a <nd6_new_neighbor_cache_entry+0x46>
    e888c922:	00059697          	auipc	a3,0x59
    e888c926:	6a668693          	addi	a3,a3,1702 # e88e5fc8 <neighbor_cache>
  time = 0;
    e888c92a:	4601                	li	a2,0
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c92c:	4781                	li	a5,0
        (neighbor_cache[i].q == NULL) &&
    e888c92e:	4805                	li	a6,1
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c930:	4529                	li	a0,10
    if (
    e888c932:	768c                	ld	a1,40(a3)
    e888c934:	ed89                	bnez	a1,e888c94e <nd6_new_neighbor_cache_entry+0x11a>
        (neighbor_cache[i].q == NULL) &&
    e888c936:	0306c583          	lbu	a1,48(a3)
    e888c93a:	01059a63          	bne	a1,a6,e888c94e <nd6_new_neighbor_cache_entry+0x11a>
        (neighbor_cache[i].state == ND6_INCOMPLETE) &&
    e888c93e:	0316c583          	lbu	a1,49(a3)
    e888c942:	e591                	bnez	a1,e888c94e <nd6_new_neighbor_cache_entry+0x11a>
      if (neighbor_cache[i].counter.probes_sent >= time) {
    e888c944:	5acc                	lw	a1,52(a3)
    e888c946:	00c5e463          	bltu	a1,a2,e888c94e <nd6_new_neighbor_cache_entry+0x11a>
    e888c94a:	862e                	mv	a2,a1
    e888c94c:	843e                	mv	s0,a5
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c94e:	2785                	addiw	a5,a5,1
    e888c950:	1c07a78b          	ext	a5,a5,7,0
    e888c954:	03868693          	addi	a3,a3,56
    e888c958:	fca79de3          	bne	a5,a0,e888c932 <nd6_new_neighbor_cache_entry+0xfe>
  if (j >= 0) {
    e888c95c:	57fd                	li	a5,-1
    e888c95e:	f0f41ee3          	bne	s0,a5,e888c87a <nd6_new_neighbor_cache_entry+0x46>
  time = 0;
    e888c962:	4681                	li	a3,0
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c964:	4781                	li	a5,0
    if ((neighbor_cache[i].state == ND6_INCOMPLETE) &&
    e888c966:	4505                	li	a0,1
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c968:	45a9                	li	a1,10
    if ((neighbor_cache[i].state == ND6_INCOMPLETE) &&
    e888c96a:	03074603          	lbu	a2,48(a4)
    e888c96e:	00a61a63          	bne	a2,a0,e888c982 <nd6_new_neighbor_cache_entry+0x14e>
    e888c972:	03174603          	lbu	a2,49(a4)
    e888c976:	e611                	bnez	a2,e888c982 <nd6_new_neighbor_cache_entry+0x14e>
      if (neighbor_cache[i].counter.probes_sent >= time) {
    e888c978:	5b50                	lw	a2,52(a4)
    e888c97a:	00d66463          	bltu	a2,a3,e888c982 <nd6_new_neighbor_cache_entry+0x14e>
    e888c97e:	86b2                	mv	a3,a2
    e888c980:	843e                	mv	s0,a5
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888c982:	2785                	addiw	a5,a5,1
    e888c984:	1c07a78b          	ext	a5,a5,7,0
    e888c988:	03870713          	addi	a4,a4,56
    e888c98c:	fcb79fe3          	bne	a5,a1,e888c96a <nd6_new_neighbor_cache_entry+0x136>
  if (j >= 0) {
    e888c990:	57fd                	li	a5,-1
    e888c992:	eef414e3          	bne	s0,a5,e888c87a <nd6_new_neighbor_cache_entry+0x46>
}
    e888c996:	8522                	mv	a0,s0
    e888c998:	60a2                	ld	ra,8(sp)
    e888c99a:	6402                	ld	s0,0(sp)
    e888c99c:	0141                	addi	sp,sp,16
    e888c99e:	8082                	ret

00000000e888c9a0 <nd6_input>:
{
    e888c9a0:	7155                	addi	sp,sp,-208
    e888c9a2:	f152                	sd	s4,160(sp)
  ND6_STATS_INC(nd6.recv);
    e888c9a4:	0005aa17          	auipc	s4,0x5a
    e888c9a8:	aaca0a13          	addi	s4,s4,-1364 # e88e6450 <lwip_stats>
{
    e888c9ac:	e1a2                	sd	s0,192(sp)
    e888c9ae:	f94a                	sd	s2,176(sp)
    e888c9b0:	f54e                	sd	s3,168(sp)
    e888c9b2:	e586                	sd	ra,200(sp)
    e888c9b4:	fd26                	sd	s1,184(sp)
    e888c9b6:	ed56                	sd	s5,152(sp)
    e888c9b8:	e95a                	sd	s6,144(sp)
    e888c9ba:	e55e                	sd	s7,136(sp)
    e888c9bc:	e162                	sd	s8,128(sp)
    e888c9be:	fce6                	sd	s9,120(sp)
    e888c9c0:	f8ea                	sd	s10,112(sp)
    e888c9c2:	f4ee                	sd	s11,104(sp)
  ND6_STATS_INC(nd6.recv);
    e888c9c4:	13ca5783          	lhu	a5,316(s4)
  switch (msg_type) {
    e888c9c8:	08700713          	li	a4,135
{
    e888c9cc:	89aa                	mv	s3,a0
  ND6_STATS_INC(nd6.recv);
    e888c9ce:	2785                	addiw	a5,a5,1
    e888c9d0:	12fa1e23          	sh	a5,316(s4)
  msg_type = *((u8_t *)p->payload);
    e888c9d4:	6504                	ld	s1,8(a0)
{
    e888c9d6:	842e                	mv	s0,a1
    e888c9d8:	8952                	mv	s2,s4
  msg_type = *((u8_t *)p->payload);
    e888c9da:	0004c783          	lbu	a5,0(s1)
  switch (msg_type) {
    e888c9de:	3ee78163          	beq	a5,a4,e888cdc0 <nd6_input+0x420>
    e888c9e2:	02f76463          	bltu	a4,a5,e888ca0a <nd6_input+0x6a>
    e888c9e6:	4689                	li	a3,2
    e888c9e8:	34d783e3          	beq	a5,a3,e888d52e <nd6_input+0xb8e>
    e888c9ec:	08600713          	li	a4,134
    e888c9f0:	58e78d63          	beq	a5,a4,e888cf8a <nd6_input+0x5ea>
    ND6_STATS_INC(nd6.proterr);
    e888c9f4:	14a95783          	lhu	a5,330(s2)
    e888c9f8:	2785                	addiw	a5,a5,1
    e888c9fa:	14f91523          	sh	a5,330(s2)
    ND6_STATS_INC(nd6.drop);
    e888c9fe:	14095783          	lhu	a5,320(s2)
    e888ca02:	2785                	addiw	a5,a5,1
    e888ca04:	14f91023          	sh	a5,320(s2)
    break; /* default */
    e888ca08:	a44d                	j	e888ccaa <nd6_input+0x30a>
  switch (msg_type) {
    e888ca0a:	08800713          	li	a4,136
    e888ca0e:	1ae78f63          	beq	a5,a4,e888cbcc <nd6_input+0x22c>
    e888ca12:	08900713          	li	a4,137
    e888ca16:	fce79fe3          	bne	a5,a4,e888c9f4 <nd6_input+0x54>
    if (p->len < sizeof(struct redirect_header)) {
    e888ca1a:	01255583          	lhu	a1,18(a0)
    e888ca1e:	02700793          	li	a5,39
    e888ca22:	0005881b          	sext.w	a6,a1
    e888ca26:	1b07fa63          	bgeu	a5,a6,e888cbda <nd6_input+0x23a>
    ip6_addr_copy_from_packed(destination_address, redir_hdr->destination_address);
    e888ca2a:	6c9c                	ld	a5,24(s1)
    e888ca2c:	4c94                	lw	a3,24(s1)
    ip6_addr_assign_zone(&destination_address, IP6_UNICAST, inp);
    e888ca2e:	6731                	lui	a4,0xc
    ip6_addr_copy_from_packed(destination_address, redir_hdr->destination_address);
    e888ca30:	f83e                	sd	a5,48(sp)
    e888ca32:	709c                	ld	a5,32(s1)
    ip6_addr_assign_zone(&destination_address, IP6_UNICAST, inp);
    e888ca34:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888ca38:	6621                	lui	a2,0x8
    ip6_addr_copy_from_packed(destination_address, redir_hdr->destination_address);
    e888ca3a:	fc3e                	sd	a5,56(sp)
    ip6_addr_assign_zone(&destination_address, IP6_UNICAST, inp);
    e888ca3c:	8f75                	and	a4,a4,a3
    e888ca3e:	0fe60613          	addi	a2,a2,254 # 80fe <memcmp-0xe87f7f02>
    e888ca42:	4781                	li	a5,0
    e888ca44:	00c71763          	bne	a4,a2,e888ca52 <nd6_input+0xb2>
    e888ca48:	10e44783          	lbu	a5,270(s0)
    e888ca4c:	2785                	addiw	a5,a5,1
    e888ca4e:	0ff7f793          	andi	a5,a5,255
    if (!ip6_addr_islinklocal(ip6_current_src_addr()) ||
    e888ca52:	00059617          	auipc	a2,0x59
    e888ca56:	0f660613          	addi	a2,a2,246 # e88e5b48 <ip_data>
    e888ca5a:	5258                	lw	a4,36(a2)
    ip6_addr_assign_zone(&destination_address, IP6_UNICAST, inp);
    e888ca5c:	04f10023          	sb	a5,64(sp)
    if (!ip6_addr_islinklocal(ip6_current_src_addr()) ||
    e888ca60:	67b1                	lui	a5,0xc
    e888ca62:	0ff78793          	addi	a5,a5,255 # c0ff <memcmp-0xe87f3f01>
    e888ca66:	8ff9                	and	a5,a5,a4
    e888ca68:	6721                	lui	a4,0x8
    e888ca6a:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e888ca6e:	1ee79163          	bne	a5,a4,e888cc50 <nd6_input+0x2b0>
        IP6H_HOPLIM(ip6_current_header()) != ND6_HOPLIM ||
    e888ca72:	6e1c                	ld	a5,24(a2)
    if (!ip6_addr_islinklocal(ip6_current_src_addr()) ||
    e888ca74:	0ff00713          	li	a4,255
    e888ca78:	0077c783          	lbu	a5,7(a5)
    e888ca7c:	1ce79a63          	bne	a5,a4,e888cc50 <nd6_input+0x2b0>
        redir_hdr->code != 0 || ip6_addr_ismulticast(&destination_address)) {
    e888ca80:	0014ca03          	lbu	s4,1(s1)
        IP6H_HOPLIM(ip6_current_header()) != ND6_HOPLIM ||
    e888ca84:	1c0a1663          	bnez	s4,e888cc50 <nd6_input+0x2b0>
        redir_hdr->code != 0 || ip6_addr_ismulticast(&destination_address)) {
    e888ca88:	0ff6f693          	andi	a3,a3,255
    e888ca8c:	1cf68263          	beq	a3,a5,e888cc50 <nd6_input+0x2b0>
    if (p->len >= (sizeof(struct redirect_header) + 2)) {
    e888ca90:	02900793          	li	a5,41
      lladdr_opt = NULL;
    e888ca94:	4a81                	li	s5,0
    if (p->len >= (sizeof(struct redirect_header) + 2)) {
    e888ca96:	0107fc63          	bgeu	a5,a6,e888caae <nd6_input+0x10e>
      if (p->len < (sizeof(struct redirect_header) + (lladdr_opt->length << 3))) {
    e888ca9a:	0294c783          	lbu	a5,41(s1)
      lladdr_opt = NULL;
    e888ca9e:	8ad2                	mv	s5,s4
      if (p->len < (sizeof(struct redirect_header) + (lladdr_opt->length << 3))) {
    e888caa0:	078e                	slli	a5,a5,0x3
    e888caa2:	02878793          	addi	a5,a5,40
    e888caa6:	00f5e463          	bltu	a1,a5,e888caae <nd6_input+0x10e>
      lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct redirect_header));
    e888caaa:	02848a93          	addi	s5,s1,40
    dest_idx = nd6_find_destination_cache_entry(&destination_address);
    e888caae:	1808                	addi	a0,sp,48
    e888cab0:	e12ff0ef          	jal	ra,e888c0c2 <nd6_find_destination_cache_entry>
    if (dest_idx < 0) {
    e888cab4:	2501                	sext.w	a0,a0
    e888cab6:	1e054a63          	bltz	a0,e888ccaa <nd6_input+0x30a>
    ip6_addr_copy_from_packed(target_address, redir_hdr->target_address);
    e888caba:	0084ab03          	lw	s6,8(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cabe:	67b1                	lui	a5,0xc
    e888cac0:	0ff78793          	addi	a5,a5,255 # c0ff <memcmp-0xe87f3f01>
    ip6_addr_copy_from_packed(target_address, redir_hdr->target_address);
    e888cac4:	c4da                	sw	s6,72(sp)
    e888cac6:	00c4ac03          	lw	s8,12(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888caca:	6721                	lui	a4,0x8
    e888cacc:	00fb77b3          	and	a5,s6,a5
    ip6_addr_copy_from_packed(target_address, redir_hdr->target_address);
    e888cad0:	c6e2                	sw	s8,76(sp)
    e888cad2:	0104ab83          	lw	s7,16(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cad6:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    ip6_addr_copy_from_packed(target_address, redir_hdr->target_address);
    e888cada:	c8de                	sw	s7,80(sp)
    e888cadc:	0144ac83          	lw	s9,20(s1)
    e888cae0:	cae6                	sw	s9,84(sp)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cae2:	00e79763          	bne	a5,a4,e888caf0 <nd6_input+0x150>
    e888cae6:	10e44a03          	lbu	s4,270(s0)
    e888caea:	2a05                	addiw	s4,s4,1
    e888caec:	0ffa7a13          	andi	s4,s4,255
    ip6_addr_copy(destination_cache[dest_idx].next_hop_addr, target_address);
    e888caf0:	00059797          	auipc	a5,0x59
    e888caf4:	2b078793          	addi	a5,a5,688 # e88e5da0 <destination_cache>
    e888caf8:	03000713          	li	a4,48
    e888cafc:	20e5178b          	mula	a5,a0,a4
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cb00:	05410c23          	sb	s4,88(sp)
    ip6_addr_copy(destination_cache[dest_idx].next_hop_addr, target_address);
    e888cb04:	0167aa23          	sw	s6,20(a5)
    e888cb08:	0187ac23          	sw	s8,24(a5)
    e888cb0c:	0177ae23          	sw	s7,28(a5)
    e888cb10:	0397a023          	sw	s9,32(a5)
    e888cb14:	03478223          	sb	s4,36(a5)
    if (lladdr_opt != NULL) {
    e888cb18:	180a8963          	beqz	s5,e888ccaa <nd6_input+0x30a>
      if (lladdr_opt->type == ND6_OPTION_TYPE_TARGET_LLADDR) {
    e888cb1c:	000ac703          	lbu	a4,0(s5)
    e888cb20:	4789                	li	a5,2
    e888cb22:	18f71463          	bne	a4,a5,e888ccaa <nd6_input+0x30a>
        i = nd6_find_neighbor_cache_entry(&target_address);
    e888cb26:	00a8                	addi	a0,sp,72
    e888cb28:	d48ff0ef          	jal	ra,e888c070 <nd6_find_neighbor_cache_entry>
    e888cb2c:	84aa                	mv	s1,a0
        if (i < 0) {
    e888cb2e:	04055e63          	bgez	a0,e888cb8a <nd6_input+0x1ea>
          i = nd6_new_neighbor_cache_entry();
    e888cb32:	d03ff0ef          	jal	ra,e888c834 <nd6_new_neighbor_cache_entry>
    e888cb36:	84aa                	mv	s1,a0
          if (i >= 0) {
    e888cb38:	16054963          	bltz	a0,e888ccaa <nd6_input+0x30a>
            neighbor_cache[i].netif = inp;
    e888cb3c:	03800793          	li	a5,56
    e888cb40:	00050d1b          	sext.w	s10,a0
    e888cb44:	02fd0d33          	mul	s10,s10,a5
    e888cb48:	00059d97          	auipc	s11,0x59
    e888cb4c:	480d8d93          	addi	s11,s11,1152 # e88e5fc8 <neighbor_cache>
            MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888cb50:	856e                	mv	a0,s11
    e888cb52:	002a8593          	addi	a1,s5,2
    e888cb56:	20f4950b          	mula	a0,s1,a5
            neighbor_cache[i].netif = inp;
    e888cb5a:	01ad8933          	add	s2,s11,s10
    e888cb5e:	00893c23          	sd	s0,24(s2)
            MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888cb62:	10a44603          	lbu	a2,266(s0)
    e888cb66:	02050513          	addi	a0,a0,32
    e888cb6a:	837ef0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            ip6_addr_copy(neighbor_cache[i].next_hop_address, target_address);
    e888cb6e:	41addb0b          	srw	s6,s11,s10,0
            neighbor_cache[i].state = ND6_DELAY;
    e888cb72:	4791                	li	a5,4
    e888cb74:	02f90823          	sb	a5,48(s2)
            neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME / ND6_TMR_INTERVAL;
    e888cb78:	4795                	li	a5,5
            ip6_addr_copy(neighbor_cache[i].next_hop_address, target_address);
    e888cb7a:	01892223          	sw	s8,4(s2)
    e888cb7e:	e3995b8b          	swd	s7,s9,(s2),1,3
    e888cb82:	01490823          	sb	s4,16(s2)
            neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME / ND6_TMR_INTERVAL;
    e888cb86:	02f92a23          	sw	a5,52(s2)
          if (neighbor_cache[i].state == ND6_INCOMPLETE) {
    e888cb8a:	00059517          	auipc	a0,0x59
    e888cb8e:	43e50513          	addi	a0,a0,1086 # e88e5fc8 <neighbor_cache>
    e888cb92:	0004879b          	sext.w	a5,s1
    e888cb96:	03800713          	li	a4,56
    e888cb9a:	892a                	mv	s2,a0
    e888cb9c:	20e7990b          	mula	s2,a5,a4
    e888cba0:	4785                	li	a5,1
    e888cba2:	03094683          	lbu	a3,48(s2)
    e888cba6:	10f69263          	bne	a3,a5,e888ccaa <nd6_input+0x30a>
            MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888cbaa:	20e4950b          	mula	a0,s1,a4
    e888cbae:	10a44603          	lbu	a2,266(s0)
    e888cbb2:	002a8593          	addi	a1,s5,2
    e888cbb6:	02050513          	addi	a0,a0,32
    e888cbba:	fe6ef0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
            neighbor_cache[i].state = ND6_DELAY;
    e888cbbe:	4791                	li	a5,4
    e888cbc0:	02f90823          	sb	a5,48(s2)
            neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME / ND6_TMR_INTERVAL;
    e888cbc4:	4795                	li	a5,5
    e888cbc6:	02f92a23          	sw	a5,52(s2)
    e888cbca:	a0c5                	j	e888ccaa <nd6_input+0x30a>
    if (p->len < (sizeof(struct na_header))) {
    e888cbcc:	01255a83          	lhu	s5,18(a0)
    e888cbd0:	47dd                	li	a5,23
    e888cbd2:	000a8b1b          	sext.w	s6,s5
    e888cbd6:	0167ef63          	bltu	a5,s6,e888cbf4 <nd6_input+0x254>
      pbuf_free(p);
    e888cbda:	672020ef          	jal	ra,e888f24c <pbuf_free>
      ND6_STATS_INC(nd6.lenerr);
    e888cbde:	144a5783          	lhu	a5,324(s4)
    e888cbe2:	2785                	addiw	a5,a5,1
    e888cbe4:	14fa1223          	sh	a5,324(s4)
      ND6_STATS_INC(nd6.drop);
    e888cbe8:	140a5783          	lhu	a5,320(s4)
    e888cbec:	2785                	addiw	a5,a5,1
    e888cbee:	14fa1023          	sh	a5,320(s4)
      return;
    e888cbf2:	a61d                	j	e888cf18 <nd6_input+0x578>
    ip6_addr_copy_from_packed(target_address, na_hdr->target_address);
    e888cbf4:	4488                	lw	a0,8(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cbf6:	67b1                	lui	a5,0xc
    e888cbf8:	0ff78793          	addi	a5,a5,255 # c0ff <memcmp-0xe87f3f01>
    ip6_addr_copy_from_packed(target_address, na_hdr->target_address);
    e888cbfc:	c4aa                	sw	a0,72(sp)
    e888cbfe:	00c4a803          	lw	a6,12(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cc02:	66a1                	lui	a3,0x8
    e888cc04:	8fe9                	and	a5,a5,a0
    ip6_addr_copy_from_packed(target_address, na_hdr->target_address);
    e888cc06:	c6c2                	sw	a6,76(sp)
    e888cc08:	0104a883          	lw	a7,16(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cc0c:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e888cc10:	4701                	li	a4,0
    ip6_addr_copy_from_packed(target_address, na_hdr->target_address);
    e888cc12:	c8c6                	sw	a7,80(sp)
    e888cc14:	0144a303          	lw	t1,20(s1)
    e888cc18:	ca9a                	sw	t1,84(sp)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cc1a:	00d79763          	bne	a5,a3,e888cc28 <nd6_input+0x288>
    e888cc1e:	10e5c703          	lbu	a4,270(a1)
    e888cc22:	2705                	addiw	a4,a4,1
    e888cc24:	0ff77713          	andi	a4,a4,255
    if (IP6H_HOPLIM(ip6_current_header()) != ND6_HOPLIM || na_hdr->code != 0 ||
    e888cc28:	00059697          	auipc	a3,0x59
    e888cc2c:	f2068693          	addi	a3,a3,-224 # e88e5b48 <ip_data>
    e888cc30:	6e9c                	ld	a5,24(a3)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cc32:	04e10c23          	sb	a4,88(sp)
    if (IP6H_HOPLIM(ip6_current_header()) != ND6_HOPLIM || na_hdr->code != 0 ||
    e888cc36:	0ff00613          	li	a2,255
    e888cc3a:	0077c783          	lbu	a5,7(a5)
    e888cc3e:	00c79963          	bne	a5,a2,e888cc50 <nd6_input+0x2b0>
    e888cc42:	0014c603          	lbu	a2,1(s1)
    e888cc46:	e609                	bnez	a2,e888cc50 <nd6_input+0x2b0>
    e888cc48:	0ff57613          	andi	a2,a0,255
    e888cc4c:	00f61b63          	bne	a2,a5,e888cc62 <nd6_input+0x2c2>
      pbuf_free(p);
    e888cc50:	854e                	mv	a0,s3
    e888cc52:	5fa020ef          	jal	ra,e888f24c <pbuf_free>
      ND6_STATS_INC(nd6.proterr);
    e888cc56:	14a95783          	lhu	a5,330(s2)
    e888cc5a:	2785                	addiw	a5,a5,1
    e888cc5c:	14f91523          	sh	a5,330(s2)
    e888cc60:	a885                	j	e888ccd0 <nd6_input+0x330>
    if (ip6_addr_ismulticast(ip6_current_dest_addr())) {
    e888cc62:	03c6c683          	lbu	a3,60(a3)
    e888cc66:	0af69c63          	bne	a3,a5,e888cd1e <nd6_input+0x37e>
    e888cc6a:	05040793          	addi	a5,s0,80
    e888cc6e:	4681                	li	a3,0
        if (!ip6_addr_isinvalid(netif_ip6_addr_state(inp, i)) &&
    e888cc70:	09840e93          	addi	t4,s0,152
      for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888cc74:	4e0d                	li	t3,3
        if (!ip6_addr_isinvalid(netif_ip6_addr_state(inp, i)) &&
    e888cc76:	80dec60b          	lrbu	a2,t4,a3,0
    e888cc7a:	1c06a58b          	ext	a1,a3,7,0
    e888cc7e:	0bf67613          	andi	a2,a2,191
    e888cc82:	ca05                	beqz	a2,e888ccb2 <nd6_input+0x312>
            !ip6_addr_isduplicated(netif_ip6_addr_state(inp, i)) &&
    e888cc84:	4390                	lw	a2,0(a5)
    e888cc86:	02a61663          	bne	a2,a0,e888ccb2 <nd6_input+0x312>
            ip6_addr_cmp(&target_address, netif_ip6_addr(inp, i))) {
    e888cc8a:	43d0                	lw	a2,4(a5)
    e888cc8c:	03061363          	bne	a2,a6,e888ccb2 <nd6_input+0x312>
    e888cc90:	4790                	lw	a2,8(a5)
    e888cc92:	03161063          	bne	a2,a7,e888ccb2 <nd6_input+0x312>
    e888cc96:	47d0                	lw	a2,12(a5)
    e888cc98:	00661d63          	bne	a2,t1,e888ccb2 <nd6_input+0x312>
    e888cc9c:	0107c603          	lbu	a2,16(a5)
    e888cca0:	00e61963          	bne	a2,a4,e888ccb2 <nd6_input+0x312>
          nd6_duplicate_addr_detected(inp, i);
    e888cca4:	8522                	mv	a0,s0
    e888cca6:	abbff0ef          	jal	ra,e888c760 <nd6_duplicate_addr_detected>
      pbuf_free(p);
    e888ccaa:	854e                	mv	a0,s3
    e888ccac:	5a0020ef          	jal	ra,e888f24c <pbuf_free>
      return;
    e888ccb0:	a4a5                	j	e888cf18 <nd6_input+0x578>
      for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888ccb2:	0685                	addi	a3,a3,1
    e888ccb4:	07e1                	addi	a5,a5,24
    e888ccb6:	fdc690e3          	bne	a3,t3,e888cc76 <nd6_input+0x2d6>
      if (p->len < (sizeof(struct na_header) + 2)) {
    e888ccba:	47e5                	li	a5,25
    e888ccbc:	0367e063          	bltu	a5,s6,e888ccdc <nd6_input+0x33c>
        pbuf_free(p);
    e888ccc0:	854e                	mv	a0,s3
    e888ccc2:	58a020ef          	jal	ra,e888f24c <pbuf_free>
        ND6_STATS_INC(nd6.lenerr);
    e888ccc6:	14495783          	lhu	a5,324(s2)
    e888ccca:	2785                	addiw	a5,a5,1
    e888cccc:	14f91223          	sh	a5,324(s2)
      ND6_STATS_INC(nd6.drop);
    e888ccd0:	14095783          	lhu	a5,320(s2)
    e888ccd4:	2785                	addiw	a5,a5,1
    e888ccd6:	14f91023          	sh	a5,320(s2)
      return;
    e888ccda:	ac3d                	j	e888cf18 <nd6_input+0x578>
      if (p->len < (sizeof(struct na_header) + (lladdr_opt->length << 3))) {
    e888ccdc:	0194c783          	lbu	a5,25(s1)
    e888cce0:	078e                	slli	a5,a5,0x3
    e888cce2:	07e1                	addi	a5,a5,24
    e888cce4:	fcfaeee3          	bltu	s5,a5,e888ccc0 <nd6_input+0x320>
      i = nd6_find_neighbor_cache_entry(&target_address);
    e888cce8:	00a8                	addi	a0,sp,72
    e888ccea:	b86ff0ef          	jal	ra,e888c070 <nd6_find_neighbor_cache_entry>
      if (i >= 0) {
    e888ccee:	fa054ee3          	bltz	a0,e888ccaa <nd6_input+0x30a>
        if (na_hdr->flags & ND6_FLAG_OVERRIDE) {
    e888ccf2:	0044c783          	lbu	a5,4(s1)
    e888ccf6:	0207f793          	andi	a5,a5,32
    e888ccfa:	dbc5                	beqz	a5,e888ccaa <nd6_input+0x30a>
          MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888ccfc:	03800713          	li	a4,56
    e888cd00:	00059797          	auipc	a5,0x59
    e888cd04:	2c878793          	addi	a5,a5,712 # e88e5fc8 <neighbor_cache>
    e888cd08:	20e5178b          	mula	a5,a0,a4
    e888cd0c:	10a44603          	lbu	a2,266(s0)
    e888cd10:	01a48593          	addi	a1,s1,26
    e888cd14:	02078513          	addi	a0,a5,32
    e888cd18:	e88ef0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e888cd1c:	b779                	j	e888ccaa <nd6_input+0x30a>
      i = nd6_find_neighbor_cache_entry(&target_address);
    e888cd1e:	00a8                	addi	a0,sp,72
    e888cd20:	b50ff0ef          	jal	ra,e888c070 <nd6_find_neighbor_cache_entry>
    e888cd24:	8a2a                	mv	s4,a0
      if (i < 0) {
    e888cd26:	f80542e3          	bltz	a0,e888ccaa <nd6_input+0x30a>
      if ((na_hdr->flags & ND6_FLAG_OVERRIDE) ||
    e888cd2a:	0044c783          	lbu	a5,4(s1)
    e888cd2e:	0207f793          	andi	a5,a5,32
    e888cd32:	e385                	bnez	a5,e888cd52 <nd6_input+0x3b2>
          (neighbor_cache[i].state == ND6_INCOMPLETE)) {
    e888cd34:	0005071b          	sext.w	a4,a0
    e888cd38:	00059797          	auipc	a5,0x59
    e888cd3c:	29078793          	addi	a5,a5,656 # e88e5fc8 <neighbor_cache>
    e888cd40:	03800693          	li	a3,56
    e888cd44:	20d7178b          	mula	a5,a4,a3
      if ((na_hdr->flags & ND6_FLAG_OVERRIDE) ||
    e888cd48:	0307c703          	lbu	a4,48(a5)
    e888cd4c:	4785                	li	a5,1
    e888cd4e:	02f71b63          	bne	a4,a5,e888cd84 <nd6_input+0x3e4>
        if (p->len < (sizeof(struct na_header) + 2)) {
    e888cd52:	47e5                	li	a5,25
    e888cd54:	f767f6e3          	bgeu	a5,s6,e888ccc0 <nd6_input+0x320>
        if (p->len < (sizeof(struct na_header) + (lladdr_opt->length << 3))) {
    e888cd58:	0194c783          	lbu	a5,25(s1)
    e888cd5c:	078e                	slli	a5,a5,0x3
    e888cd5e:	07e1                	addi	a5,a5,24
    e888cd60:	f6fae0e3          	bltu	s5,a5,e888ccc0 <nd6_input+0x320>
        MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888cd64:	00059517          	auipc	a0,0x59
    e888cd68:	26450513          	addi	a0,a0,612 # e88e5fc8 <neighbor_cache>
    e888cd6c:	03800793          	li	a5,56
    e888cd70:	20fa150b          	mula	a0,s4,a5
    e888cd74:	10a44603          	lbu	a2,266(s0)
    e888cd78:	01a48593          	addi	a1,s1,26
    e888cd7c:	02050513          	addi	a0,a0,32
    e888cd80:	e20ef0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      neighbor_cache[i].netif = inp;
    e888cd84:	000a071b          	sext.w	a4,s4
    e888cd88:	00059797          	auipc	a5,0x59
    e888cd8c:	24078793          	addi	a5,a5,576 # e88e5fc8 <neighbor_cache>
    e888cd90:	03800693          	li	a3,56
    e888cd94:	20d7178b          	mula	a5,a4,a3
      neighbor_cache[i].state = ND6_REACHABLE;
    e888cd98:	4709                	li	a4,2
    e888cd9a:	02e78823          	sb	a4,48(a5)
      neighbor_cache[i].counter.reachable_time = reachable_time;
    e888cd9e:	00048717          	auipc	a4,0x48
    e888cda2:	7de70713          	addi	a4,a4,2014 # e88d557c <reachable_time>
    e888cda6:	4318                	lw	a4,0(a4)
      neighbor_cache[i].netif = inp;
    e888cda8:	ef80                	sd	s0,24(a5)
      neighbor_cache[i].counter.reachable_time = reachable_time;
    e888cdaa:	dbd8                	sw	a4,52(a5)
      if (neighbor_cache[i].q != NULL) {
    e888cdac:	779c                	ld	a5,40(a5)
    e888cdae:	ee078ee3          	beqz	a5,e888ccaa <nd6_input+0x30a>
  if ((i < 0) || (i >= LWIP_ND6_NUM_NEIGHBORS)) {
    e888cdb2:	47a5                	li	a5,9
    e888cdb4:	ef47cbe3          	blt	a5,s4,e888ccaa <nd6_input+0x30a>
    e888cdb8:	8552                	mv	a0,s4
    e888cdba:	90fff0ef          	jal	ra,e888c6c8 <nd6_send_q.part.2>
    e888cdbe:	b5f5                	j	e888ccaa <nd6_input+0x30a>
    if (p->len < sizeof(struct ns_header)) {
    e888cdc0:	01255683          	lhu	a3,18(a0)
    e888cdc4:	47dd                	li	a5,23
    e888cdc6:	0006861b          	sext.w	a2,a3
    e888cdca:	e0c7f8e3          	bgeu	a5,a2,e888cbda <nd6_input+0x23a>
    ip6_addr_copy_from_packed(target_address, ns_hdr->target_address);
    e888cdce:	448c                	lw	a1,8(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cdd0:	67b1                	lui	a5,0xc
    e888cdd2:	0ff78793          	addi	a5,a5,255 # c0ff <memcmp-0xe87f3f01>
    ip6_addr_copy_from_packed(target_address, ns_hdr->target_address);
    e888cdd6:	c4ae                	sw	a1,72(sp)
    e888cdd8:	44c8                	lw	a0,12(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cdda:	6721                	lui	a4,0x8
    e888cddc:	8fed                	and	a5,a5,a1
    ip6_addr_copy_from_packed(target_address, ns_hdr->target_address);
    e888cdde:	c6aa                	sw	a0,76(sp)
    e888cde0:	0104a803          	lw	a6,16(s1)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cde4:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e888cde8:	4301                	li	t1,0
    ip6_addr_copy_from_packed(target_address, ns_hdr->target_address);
    e888cdea:	c8c2                	sw	a6,80(sp)
    e888cdec:	0144a883          	lw	a7,20(s1)
    e888cdf0:	cac6                	sw	a7,84(sp)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888cdf2:	00e79763          	bne	a5,a4,e888ce00 <nd6_input+0x460>
    e888cdf6:	10e44783          	lbu	a5,270(s0)
    e888cdfa:	2785                	addiw	a5,a5,1
    e888cdfc:	0ff7f313          	andi	t1,a5,255
    if (IP6H_HOPLIM(ip6_current_header()) != ND6_HOPLIM || ns_hdr->code != 0 ||
    e888ce00:	00059a17          	auipc	s4,0x59
    e888ce04:	d48a0a13          	addi	s4,s4,-696 # e88e5b48 <ip_data>
    e888ce08:	018a3783          	ld	a5,24(s4)
    ip6_addr_assign_zone(&target_address, IP6_UNICAST, inp);
    e888ce0c:	04610c23          	sb	t1,88(sp)
    if (IP6H_HOPLIM(ip6_current_header()) != ND6_HOPLIM || ns_hdr->code != 0 ||
    e888ce10:	0ff00713          	li	a4,255
    e888ce14:	0077c783          	lbu	a5,7(a5)
    e888ce18:	e2e79ce3          	bne	a5,a4,e888cc50 <nd6_input+0x2b0>
    e888ce1c:	0014c703          	lbu	a4,1(s1)
    e888ce20:	e20718e3          	bnez	a4,e888cc50 <nd6_input+0x2b0>
    e888ce24:	0ff5f713          	andi	a4,a1,255
    e888ce28:	e2f704e3          	beq	a4,a5,e888cc50 <nd6_input+0x2b0>
    if (p->len >= (sizeof(struct ns_header) + 2)) {
    e888ce2c:	47e5                	li	a5,25
      lladdr_opt = NULL;
    e888ce2e:	4b01                	li	s6,0
    if (p->len >= (sizeof(struct ns_header) + 2)) {
    e888ce30:	00c7fa63          	bgeu	a5,a2,e888ce44 <nd6_input+0x4a4>
      if (p->len < (sizeof(struct ns_header) + (lladdr_opt->length << 3))) {
    e888ce34:	0194c783          	lbu	a5,25(s1)
    e888ce38:	078e                	slli	a5,a5,0x3
    e888ce3a:	07e1                	addi	a5,a5,24
    e888ce3c:	00f6e463          	bltu	a3,a5,e888ce44 <nd6_input+0x4a4>
      lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct ns_header));
    e888ce40:	01848b13          	addi	s6,s1,24
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
    e888ce44:	030a2783          	lw	a5,48(s4)
    e888ce48:	024a2703          	lw	a4,36(s4)
            ip6_addr_isany(ip6_current_src_addr()))) &&
    e888ce4c:	028a3a83          	ld	s5,40(s4)
    e888ce50:	09840b93          	addi	s7,s0,152
    e888ce54:	05040493          	addi	s1,s0,80
    e888ce58:	8f5d                	or	a4,a4,a5
    e888ce5a:	865e                	mv	a2,s7
    e888ce5c:	87a6                	mv	a5,s1
      if ((ip6_addr_isvalid(netif_ip6_addr_state(inp, i)) ||
    e888ce5e:	00064683          	lbu	a3,0(a2)
    e888ce62:	0106fe13          	andi	t3,a3,16
    e888ce66:	000e1763          	bnez	t3,e888ce74 <nd6_input+0x4d4>
    e888ce6a:	8aa1                	andi	a3,a3,8
    e888ce6c:	c685                	beqz	a3,e888ce94 <nd6_input+0x4f4>
            ip6_addr_isany(ip6_current_src_addr()))) &&
    e888ce6e:	020a9363          	bnez	s5,e888ce94 <nd6_input+0x4f4>
    e888ce72:	e30d                	bnez	a4,e888ce94 <nd6_input+0x4f4>
    e888ce74:	4394                	lw	a3,0(a5)
    e888ce76:	00b69f63          	bne	a3,a1,e888ce94 <nd6_input+0x4f4>
          ip6_addr_cmp(&target_address, netif_ip6_addr(inp, i))) {
    e888ce7a:	43d4                	lw	a3,4(a5)
    e888ce7c:	00a69c63          	bne	a3,a0,e888ce94 <nd6_input+0x4f4>
    e888ce80:	4794                	lw	a3,8(a5)
    e888ce82:	01069963          	bne	a3,a6,e888ce94 <nd6_input+0x4f4>
    e888ce86:	47d4                	lw	a3,12(a5)
    e888ce88:	01169663          	bne	a3,a7,e888ce94 <nd6_input+0x4f4>
    e888ce8c:	0107c683          	lbu	a3,16(a5)
    e888ce90:	72668963          	beq	a3,t1,e888d5c2 <nd6_input+0xc22>
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
    e888ce94:	07e1                	addi	a5,a5,24
    e888ce96:	0605                	addi	a2,a2,1
    e888ce98:	fcfb93e3          	bne	s7,a5,e888ce5e <nd6_input+0x4be>
    e888ce9c:	b539                	j	e888ccaa <nd6_input+0x30a>
    if (ip6_addr_isany(ip6_current_src_addr())) {
    e888ce9e:	72071463          	bnez	a4,e888d5c6 <nd6_input+0xc26>
      for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
    e888cea2:	490d                	li	s2,3
        if (!ip6_addr_isinvalid(netif_ip6_addr_state(inp, i)) &&
    e888cea4:	815bc78b          	lrbu	a5,s7,s5,0
    e888cea8:	1c0aaa0b          	ext	s4,s5,7,0
    e888ceac:	c7a9                	beqz	a5,e888cef6 <nd6_input+0x556>
    e888ceae:	4726                	lw	a4,72(sp)
    e888ceb0:	409c                	lw	a5,0(s1)
    e888ceb2:	04f71263          	bne	a4,a5,e888cef6 <nd6_input+0x556>
            ip6_addr_cmp(&target_address, netif_ip6_addr(inp, i))) {
    e888ceb6:	4736                	lw	a4,76(sp)
    e888ceb8:	40dc                	lw	a5,4(s1)
    e888ceba:	02f71e63          	bne	a4,a5,e888cef6 <nd6_input+0x556>
    e888cebe:	4746                	lw	a4,80(sp)
    e888cec0:	449c                	lw	a5,8(s1)
    e888cec2:	02f71a63          	bne	a4,a5,e888cef6 <nd6_input+0x556>
    e888cec6:	4756                	lw	a4,84(sp)
    e888cec8:	44dc                	lw	a5,12(s1)
    e888ceca:	02f71663          	bne	a4,a5,e888cef6 <nd6_input+0x556>
    e888cece:	05814703          	lbu	a4,88(sp)
    e888ced2:	0104c783          	lbu	a5,16(s1)
    e888ced6:	02f71063          	bne	a4,a5,e888cef6 <nd6_input+0x556>
          nd6_send_na(inp, netif_ip6_addr(inp, i), ND6_FLAG_OVERRIDE | ND6_SEND_FLAG_ALLNODES_DEST);
    e888ceda:	02200613          	li	a2,34
    e888cede:	85a6                	mv	a1,s1
    e888cee0:	8522                	mv	a0,s0
    e888cee2:	b08ff0ef          	jal	ra,e888c1ea <nd6_send_na>
          if (ip6_addr_istentative(netif_ip6_addr_state(inp, i))) {
    e888cee6:	815bc78b          	lrbu	a5,s7,s5,0
    e888ceea:	8ba1                	andi	a5,a5,8
    e888ceec:	c789                	beqz	a5,e888cef6 <nd6_input+0x556>
            nd6_duplicate_addr_detected(inp, i);
    e888ceee:	85d2                	mv	a1,s4
    e888cef0:	8522                	mv	a0,s0
    e888cef2:	86fff0ef          	jal	ra,e888c760 <nd6_duplicate_addr_detected>
      for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
    e888cef6:	0a85                	addi	s5,s5,1
    e888cef8:	04e1                	addi	s1,s1,24
    e888cefa:	fb2a95e3          	bne	s5,s2,e888cea4 <nd6_input+0x504>
    e888cefe:	b375                	j	e888ccaa <nd6_input+0x30a>
        i = nd6_new_neighbor_cache_entry();
    e888cf00:	935ff0ef          	jal	ra,e888c834 <nd6_new_neighbor_cache_entry>
        if (i < 0) {
    e888cf04:	02055963          	bgez	a0,e888cf36 <nd6_input+0x596>
      pbuf_free(p);
    e888cf08:	854e                	mv	a0,s3
    e888cf0a:	342020ef          	jal	ra,e888f24c <pbuf_free>
      ND6_STATS_INC(nd6.memerr);
    e888cf0e:	14695783          	lhu	a5,326(s2)
    e888cf12:	2785                	addiw	a5,a5,1
    e888cf14:	14f91323          	sh	a5,326(s2)
}
    e888cf18:	60ae                	ld	ra,200(sp)
    e888cf1a:	640e                	ld	s0,192(sp)
    e888cf1c:	74ea                	ld	s1,184(sp)
    e888cf1e:	794a                	ld	s2,176(sp)
    e888cf20:	79aa                	ld	s3,168(sp)
    e888cf22:	7a0a                	ld	s4,160(sp)
    e888cf24:	6aea                	ld	s5,152(sp)
    e888cf26:	6b4a                	ld	s6,144(sp)
    e888cf28:	6baa                	ld	s7,136(sp)
    e888cf2a:	6c0a                	ld	s8,128(sp)
    e888cf2c:	7ce6                	ld	s9,120(sp)
    e888cf2e:	7d46                	ld	s10,112(sp)
    e888cf30:	7da6                	ld	s11,104(sp)
    e888cf32:	6169                	addi	sp,sp,208
    e888cf34:	8082                	ret
        neighbor_cache[i].netif = inp;
    e888cf36:	03800793          	li	a5,56
    e888cf3a:	0005091b          	sext.w	s2,a0
    e888cf3e:	02f90933          	mul	s2,s2,a5
    e888cf42:	00059a97          	auipc	s5,0x59
    e888cf46:	086a8a93          	addi	s5,s5,134 # e88e5fc8 <neighbor_cache>
        MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888cf4a:	8756                	mv	a4,s5
    e888cf4c:	002b0593          	addi	a1,s6,2
    e888cf50:	20f5170b          	mula	a4,a0,a5
        neighbor_cache[i].netif = inp;
    e888cf54:	012a84b3          	add	s1,s5,s2
    e888cf58:	ec80                	sd	s0,24(s1)
        MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888cf5a:	10a44603          	lbu	a2,266(s0)
    e888cf5e:	02070513          	addi	a0,a4,32
    e888cf62:	c3eef0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        ip6_addr_set(&(neighbor_cache[i].next_hop_address), ip6_current_src_addr());
    e888cf66:	024a2783          	lw	a5,36(s4)
    e888cf6a:	412ad78b          	srw	a5,s5,s2,0
    e888cf6e:	028a2783          	lw	a5,40(s4)
    e888cf72:	c0dc                	sw	a5,4(s1)
    e888cf74:	02ca2783          	lw	a5,44(s4)
    e888cf78:	c49c                	sw	a5,8(s1)
    e888cf7a:	030a2783          	lw	a5,48(s4)
    e888cf7e:	c4dc                	sw	a5,12(s1)
    e888cf80:	034a4783          	lbu	a5,52(s4)
    e888cf84:	00f48823          	sb	a5,16(s1)
    e888cf88:	a561                	j	e888d610 <nd6_input+0xc70>
    if (p->len < sizeof(struct ra_header)) {
    e888cf8a:	01255703          	lhu	a4,18(a0)
    e888cf8e:	47bd                	li	a5,15
    e888cf90:	c4e7f5e3          	bgeu	a5,a4,e888cbda <nd6_input+0x23a>
    if (!ip6_addr_islinklocal(ip6_current_src_addr()) ||
    e888cf94:	00059a97          	auipc	s5,0x59
    e888cf98:	bb4a8a93          	addi	s5,s5,-1100 # e88e5b48 <ip_data>
    e888cf9c:	024aa703          	lw	a4,36(s5)
    e888cfa0:	67b1                	lui	a5,0xc
    e888cfa2:	0ff78793          	addi	a5,a5,255 # c0ff <memcmp-0xe87f3f01>
    e888cfa6:	8ff9                	and	a5,a5,a4
    e888cfa8:	6721                	lui	a4,0x8
    e888cfaa:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e888cfae:	cae791e3          	bne	a5,a4,e888cc50 <nd6_input+0x2b0>
        IP6H_HOPLIM(ip6_current_header()) != ND6_HOPLIM || ra_hdr->code != 0) {
    e888cfb2:	018ab783          	ld	a5,24(s5)
    if (!ip6_addr_islinklocal(ip6_current_src_addr()) ||
    e888cfb6:	0077c703          	lbu	a4,7(a5)
    e888cfba:	0ff00793          	li	a5,255
    e888cfbe:	c8f719e3          	bne	a4,a5,e888cc50 <nd6_input+0x2b0>
        IP6H_HOPLIM(ip6_current_header()) != ND6_HOPLIM || ra_hdr->code != 0) {
    e888cfc2:	0014c503          	lbu	a0,1(s1)
    e888cfc6:	c80515e3          	bnez	a0,e888cc50 <nd6_input+0x2b0>
    if ((inp->rs_count < LWIP_ND6_MAX_MULTICAST_SOLICIT) ||
    e888cfca:	1105c783          	lbu	a5,272(a1)
    e888cfce:	00f6f863          	bgeu	a3,a5,e888cfde <nd6_input+0x63e>
        (nd6_send_rs(inp) == ERR_OK)) {
    e888cfd2:	852e                	mv	a0,a1
    e888cfd4:	b74ff0ef          	jal	ra,e888c348 <nd6_send_rs>
    if ((inp->rs_count < LWIP_ND6_MAX_MULTICAST_SOLICIT) ||
    e888cfd8:	2501                	sext.w	a0,a0
      inp->rs_count = 0;
    e888cfda:	00a03533          	snez	a0,a0
    e888cfde:	10a40823          	sb	a0,272(s0)
        ip6_addr_cmp(router_addr, &(default_router_list[i].neighbor_entry->next_hop_address))) {
    e888cfe2:	024aa583          	lw	a1,36(s5)
    e888cfe6:	028aa503          	lw	a0,40(s5)
    e888cfea:	02caa803          	lw	a6,44(s5)
    e888cfee:	030aa883          	lw	a7,48(s5)
    e888cff2:	034ac303          	lbu	t1,52(s5)
    if ((default_router_list[i].neighbor_entry != NULL) &&
    e888cff6:	00059697          	auipc	a3,0x59
    e888cffa:	d7a68693          	addi	a3,a3,-646 # e88e5d70 <default_router_list>
        ip6_addr_cmp(router_addr, &(default_router_list[i].neighbor_entry->next_hop_address))) {
    e888cffe:	4701                	li	a4,0
    e888d000:	8b36                	mv	s6,a3
  for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) {
    e888d002:	460d                	li	a2,3
    if ((default_router_list[i].neighbor_entry != NULL) &&
    e888d004:	00471793          	slli	a5,a4,0x4
    e888d008:	60d7c78b          	lrd	a5,a5,a3,0
    e888d00c:	1c072a0b          	ext	s4,a4,7,0
    e888d010:	cb95                	beqz	a5,e888d044 <nd6_input+0x6a4>
    e888d012:	c409                	beqz	s0,e888d01c <nd6_input+0x67c>
    e888d014:	0187be03          	ld	t3,24(a5)
    e888d018:	03c41663          	bne	s0,t3,e888d044 <nd6_input+0x6a4>
        ((netif != NULL) ? netif == default_router_list[i].neighbor_entry->netif : 1) &&
    e888d01c:	0007ae03          	lw	t3,0(a5)
    e888d020:	02be1263          	bne	t3,a1,e888d044 <nd6_input+0x6a4>
        ip6_addr_cmp(router_addr, &(default_router_list[i].neighbor_entry->next_hop_address))) {
    e888d024:	0047ae03          	lw	t3,4(a5)
    e888d028:	00ae1e63          	bne	t3,a0,e888d044 <nd6_input+0x6a4>
    e888d02c:	0087ae03          	lw	t3,8(a5)
    e888d030:	010e1a63          	bne	t3,a6,e888d044 <nd6_input+0x6a4>
    e888d034:	00c7ae03          	lw	t3,12(a5)
    e888d038:	011e1663          	bne	t3,a7,e888d044 <nd6_input+0x6a4>
    e888d03c:	0107c783          	lbu	a5,16(a5)
    e888d040:	0c678963          	beq	a5,t1,e888d112 <nd6_input+0x772>
  for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) {
    e888d044:	0705                	addi	a4,a4,1
    e888d046:	fac71fe3          	bne	a4,a2,e888d004 <nd6_input+0x664>
  neighbor_index = nd6_find_neighbor_cache_entry(router_addr);
    e888d04a:	00059517          	auipc	a0,0x59
    e888d04e:	b2250513          	addi	a0,a0,-1246 # e88e5b6c <ip_data+0x24>
    e888d052:	81eff0ef          	jal	ra,e888c070 <nd6_find_neighbor_cache_entry>
    e888d056:	8a2a                	mv	s4,a0
  if (neighbor_index < 0) {
    e888d058:	06055263          	bgez	a0,e888d0bc <nd6_input+0x71c>
    neighbor_index = nd6_new_neighbor_cache_entry();
    e888d05c:	fd8ff0ef          	jal	ra,e888c834 <nd6_new_neighbor_cache_entry>
    e888d060:	8a2a                	mv	s4,a0
    if (neighbor_index < 0) {
    e888d062:	ea0543e3          	bltz	a0,e888cf08 <nd6_input+0x568>
    ip6_addr_set(&(neighbor_cache[neighbor_index].next_hop_address), router_addr);
    e888d066:	0005071b          	sext.w	a4,a0
    e888d06a:	03800693          	li	a3,56
    e888d06e:	02d70733          	mul	a4,a4,a3
    e888d072:	024aa603          	lw	a2,36(s5)
    e888d076:	00059597          	auipc	a1,0x59
    e888d07a:	f5258593          	addi	a1,a1,-174 # e88e5fc8 <neighbor_cache>
    e888d07e:	00e587b3          	add	a5,a1,a4
    e888d082:	40e5d60b          	srw	a2,a1,a4,0
    e888d086:	028aa703          	lw	a4,40(s5)
  nd6_send_ns(entry->netif, &entry->next_hop_address, flags);
    e888d08a:	20d5158b          	mula	a1,a0,a3
    neighbor_cache[neighbor_index].netif = netif;
    e888d08e:	ef80                	sd	s0,24(a5)
    ip6_addr_set(&(neighbor_cache[neighbor_index].next_hop_address), router_addr);
    e888d090:	c3d8                	sw	a4,4(a5)
    e888d092:	02caa703          	lw	a4,44(s5)
    neighbor_cache[neighbor_index].q = NULL;
    e888d096:	0207b423          	sd	zero,40(a5)
  nd6_send_ns(entry->netif, &entry->next_hop_address, flags);
    e888d09a:	4605                	li	a2,1
    ip6_addr_set(&(neighbor_cache[neighbor_index].next_hop_address), router_addr);
    e888d09c:	c798                	sw	a4,8(a5)
    e888d09e:	030aa703          	lw	a4,48(s5)
  nd6_send_ns(entry->netif, &entry->next_hop_address, flags);
    e888d0a2:	8522                	mv	a0,s0
    ip6_addr_set(&(neighbor_cache[neighbor_index].next_hop_address), router_addr);
    e888d0a4:	c7d8                	sw	a4,12(a5)
    e888d0a6:	034ac703          	lbu	a4,52(s5)
    e888d0aa:	00e78823          	sb	a4,16(a5)
    neighbor_cache[neighbor_index].state = ND6_INCOMPLETE;
    e888d0ae:	4705                	li	a4,1
    e888d0b0:	02e78823          	sb	a4,48(a5)
    neighbor_cache[neighbor_index].counter.probes_sent = 1;
    e888d0b4:	4705                	li	a4,1
    e888d0b6:	dbd8                	sw	a4,52(a5)
  nd6_send_ns(entry->netif, &entry->next_hop_address, flags);
    e888d0b8:	baeff0ef          	jal	ra,e888c466 <nd6_send_ns>
  neighbor_cache[neighbor_index].isrouter = 1;
    e888d0bc:	00059797          	auipc	a5,0x59
    e888d0c0:	f0c78793          	addi	a5,a5,-244 # e88e5fc8 <neighbor_cache>
    e888d0c4:	03800713          	li	a4,56
    e888d0c8:	000a061b          	sext.w	a2,s4
    e888d0cc:	86be                	mv	a3,a5
    e888d0ce:	20e6168b          	mula	a3,a2,a4
    e888d0d2:	4585                	li	a1,1
  for (router_index = LWIP_ND6_NUM_ROUTERS - 1; router_index >= 0; router_index--) {
    e888d0d4:	587d                	li	a6,-1
  neighbor_cache[neighbor_index].isrouter = 1;
    e888d0d6:	02b688a3          	sb	a1,49(a3)
    if(default_router_list[router_index].neighbor_entry == &(neighbor_cache[neighbor_index])){ 
    e888d0da:	85be                	mv	a1,a5
    e888d0dc:	20ea158b          	mula	a1,s4,a4
    e888d0e0:	4709                	li	a4,2
  free_router_index = LWIP_ND6_NUM_ROUTERS;
    e888d0e2:	4a0d                	li	s4,3
    if(default_router_list[router_index].neighbor_entry == &(neighbor_cache[neighbor_index])){ 
    e888d0e4:	00471513          	slli	a0,a4,0x4
    e888d0e8:	60ab450b          	lrd	a0,s6,a0,0
    e888d0ec:	1c07268b          	ext	a3,a4,7,0
    e888d0f0:	0eb50e63          	beq	a0,a1,e888d1ec <nd6_input+0x84c>
    if (default_router_list[router_index].neighbor_entry == NULL) {
    e888d0f4:	177d                	addi	a4,a4,-1
    e888d0f6:	40a69a0b          	mveqz	s4,a3,a0
  for (router_index = LWIP_ND6_NUM_ROUTERS - 1; router_index >= 0; router_index--) {
    e888d0fa:	ff0715e3          	bne	a4,a6,e888d0e4 <nd6_input+0x744>
  if (free_router_index < LWIP_ND6_NUM_ROUTERS) {
    e888d0fe:	470d                	li	a4,3
    e888d100:	0cea0f63          	beq	s4,a4,e888d1de <nd6_input+0x83e>
    default_router_list[free_router_index].neighbor_entry = &(neighbor_cache[neighbor_index]);
    e888d104:	000a079b          	sext.w	a5,s4
    e888d108:	0792                	slli	a5,a5,0x4
    e888d10a:	60fb558b          	srd	a1,s6,a5,0
    if (i < 0) {
    e888d10e:	de0a4de3          	bltz	s4,e888cf08 <nd6_input+0x568>
    default_router_list[i].invalidation_timer = lwip_htons(ra_hdr->router_lifetime);
    e888d112:	0064d503          	lhu	a0,6(s1)
    e888d116:	2a01                	sext.w	s4,s4
    e888d118:	0a12                	slli	s4,s4,0x4
    e888d11a:	e05f90ef          	jal	ra,e8886f1e <lwip_htons>
    e888d11e:	014b07b3          	add	a5,s6,s4
    e888d122:	c788                	sw	a0,8(a5)
    if (ra_hdr->retrans_timer > 0) {
    e888d124:	44c8                	lw	a0,12(s1)
    e888d126:	c519                	beqz	a0,e888d134 <nd6_input+0x794>
      retrans_timer = lwip_htonl(ra_hdr->retrans_timer);
    e888d128:	e07f90ef          	jal	ra,e8886f2e <lwip_htonl>
    e888d12c:	00048797          	auipc	a5,0x48
    e888d130:	44a7aa23          	sw	a0,1108(a5) # e88d5580 <retrans_timer>
    if (ra_hdr->reachable_time > 0) {
    e888d134:	4488                	lw	a0,8(s1)
    e888d136:	c519                	beqz	a0,e888d144 <nd6_input+0x7a4>
      reachable_time = lwip_htonl(ra_hdr->reachable_time);
    e888d138:	df7f90ef          	jal	ra,e8886f2e <lwip_htonl>
    e888d13c:	00048797          	auipc	a5,0x48
    e888d140:	44a7a023          	sw	a0,1088(a5) # e88d557c <reachable_time>
    default_router_list[i].flags = ra_hdr->flags;
    e888d144:	0054c703          	lbu	a4,5(s1)
    e888d148:	014b07b3          	add	a5,s6,s4
        ip6_addr_assign_zone(&prefix_addr, IP6_UNICAST, inp);
    e888d14c:	6c31                	lui	s8,0xc
    default_router_list[i].flags = ra_hdr->flags;
    e888d14e:	00e78623          	sb	a4,12(a5)
        ip6_addr_assign_zone(&prefix_addr, IP6_UNICAST, inp);
    e888d152:	0ffc0793          	addi	a5,s8,255 # c0ff <memcmp-0xe87f3f01>
    e888d156:	6ca1                	lui	s9,0x8
    e888d158:	e43e                	sd	a5,8(sp)
    e888d15a:	0fec8793          	addi	a5,s9,254 # 80fe <memcmp-0xe87f7f02>
    e888d15e:	e83e                	sd	a5,16(sp)
      if (valid_life > ND6_2HRS || valid_life > remaining_life) {
    e888d160:	6b89                	lui	s7,0x2
    if (!ip6_addr_isinvalid(addr_state) && !netif_ip6_addr_isstatic(netif, i) &&
    e888d162:	09c40793          	addi	a5,s0,156
    offset = sizeof(struct ra_header);
    e888d166:	4dc1                	li	s11,16
    if (!ip6_addr_isinvalid(addr_state) && !netif_ip6_addr_isstatic(netif, i) &&
    e888d168:	ec3e                	sd	a5,24(sp)
      if (valid_life > ND6_2HRS || valid_life > remaining_life) {
    e888d16a:	c20b8b93          	addi	s7,s7,-992 # 1c20 <memcmp-0xe87fe3e0>
    while ((p->tot_len - offset) >= 2) {
    e888d16e:	0109d783          	lhu	a5,16(s3)
    e888d172:	000d849b          	sext.w	s1,s11
    e888d176:	4705                	li	a4,1
    e888d178:	9f85                	subw	a5,a5,s1
    e888d17a:	b2f758e3          	bge	a4,a5,e888ccaa <nd6_input+0x30a>
      int option_len8 = pbuf_try_get_at(p, offset + 1);
    e888d17e:	3c0dad0b          	ext	s10,s11,15,0
    e888d182:	001d059b          	addiw	a1,s10,1
    e888d186:	3c05b58b          	extu	a1,a1,15,0
    e888d18a:	854e                	mv	a0,s3
    e888d18c:	3d9020ef          	jal	ra,e888fd64 <pbuf_try_get_at>
      if (option_len8 <= 0) {
    e888d190:	42a05263          	blez	a0,e888d5b4 <nd6_input+0xc14>
      option_len = ((u8_t)option_len8) << 3;
    e888d194:	0ff57513          	andi	a0,a0,255
      if (option_len > p->tot_len - offset) {
    e888d198:	0109d703          	lhu	a4,16(s3)
      option_len = ((u8_t)option_len8) << 3;
    e888d19c:	00351a9b          	slliw	s5,a0,0x3
    e888d1a0:	3c0ab60b          	extu	a2,s5,15,0
      if (option_len > p->tot_len - offset) {
    e888d1a4:	409704bb          	subw	s1,a4,s1
    e888d1a8:	0006079b          	sext.w	a5,a2
    e888d1ac:	40f4c463          	blt	s1,a5,e888d5b4 <nd6_input+0xc14>
      if (p->len == p->tot_len) {
    e888d1b0:	0129d583          	lhu	a1,18(s3)
    e888d1b4:	02e59e63          	bne	a1,a4,e888d1f0 <nd6_input+0x850>
        buffer = &((u8_t*)p->payload)[offset];
    e888d1b8:	0089b483          	ld	s1,8(s3)
    e888d1bc:	94ee                	add	s1,s1,s11
      option_type = buffer[0];
    e888d1be:	0004c783          	lbu	a5,0(s1)
      switch (option_type) {
    e888d1c2:	470d                	li	a4,3
    e888d1c4:	0ee78963          	beq	a5,a4,e888d2b6 <nd6_input+0x916>
    e888d1c8:	04f76f63          	bltu	a4,a5,e888d226 <nd6_input+0x886>
    e888d1cc:	4705                	li	a4,1
    e888d1ce:	06e78763          	beq	a5,a4,e888d23c <nd6_input+0x89c>
        ND6_STATS_INC(nd6.proterr);
    e888d1d2:	14a95783          	lhu	a5,330(s2)
    e888d1d6:	2785                	addiw	a5,a5,1
    e888d1d8:	14f91523          	sh	a5,330(s2)
        break;
    e888d1dc:	a899                	j	e888d232 <nd6_input+0x892>
  neighbor_cache[neighbor_index].isrouter = 0;
    e888d1de:	03800713          	li	a4,56
    e888d1e2:	20e6178b          	mula	a5,a2,a4
    e888d1e6:	020788a3          	sb	zero,49(a5)
    if (i < 0) {
    e888d1ea:	bb39                	j	e888cf08 <nd6_input+0x568>
    if(default_router_list[router_index].neighbor_entry == &(neighbor_cache[neighbor_index])){ 
    e888d1ec:	8a36                	mv	s4,a3
    e888d1ee:	b715                	j	e888d112 <nd6_input+0x772>
        if (option_len > sizeof(nd6_ra_buffer)) {
    e888d1f0:	02000713          	li	a4,32
    e888d1f4:	00f77b63          	bgeu	a4,a5,e888d20a <nd6_input+0x86a>
          option_type = pbuf_get_at(p, offset);
    e888d1f8:	85ee                	mv	a1,s11
    e888d1fa:	854e                	mv	a0,s3
    e888d1fc:	395020ef          	jal	ra,e888fd90 <pbuf_get_at>
          if (option_type != ND6_OPTION_TYPE_RDNSS) {
    e888d200:	47e5                	li	a5,25
    e888d202:	3af51963          	bne	a0,a5,e888d5b4 <nd6_input+0xc14>
          option_len = sizeof(nd6_ra_buffer);
    e888d206:	02000613          	li	a2,32
        option_len = pbuf_copy_partial(p, &nd6_ra_buffer, option_len, offset);
    e888d20a:	86ee                	mv	a3,s11
    e888d20c:	00059597          	auipc	a1,0x59
    e888d210:	d9458593          	addi	a1,a1,-620 # e88e5fa0 <nd6_ra_buffer>
    e888d214:	854e                	mv	a0,s3
    e888d216:	73c020ef          	jal	ra,e888f952 <pbuf_copy_partial>
    e888d21a:	862a                	mv	a2,a0
        buffer = (u8_t*)&nd6_ra_buffer;
    e888d21c:	00059497          	auipc	s1,0x59
    e888d220:	d8448493          	addi	s1,s1,-636 # e88e5fa0 <nd6_ra_buffer>
    e888d224:	bf69                	j	e888d1be <nd6_input+0x81e>
    e888d226:	4715                	li	a4,5
    e888d228:	04e78963          	beq	a5,a4,e888d27a <nd6_input+0x8da>
    e888d22c:	4761                	li	a4,24
    e888d22e:	fae792e3          	bne	a5,a4,e888d1d2 <nd6_input+0x832>
      offset += 8 * (u8_t)option_len8;
    e888d232:	01aa8abb          	addw	s5,s5,s10
    e888d236:	3c0abd8b          	extu	s11,s5,15,0
    e888d23a:	bf15                	j	e888d16e <nd6_input+0x7ce>
        if (option_len < sizeof(struct lladdr_option)) {
    e888d23c:	2601                	sext.w	a2,a2
    e888d23e:	471d                	li	a4,7
    e888d240:	36c77a63          	bgeu	a4,a2,e888d5b4 <nd6_input+0xc14>
        if ((default_router_list[i].neighbor_entry != NULL) &&
    e888d244:	614b450b          	lrd	a0,s6,s4,0
    e888d248:	d56d                	beqz	a0,e888d232 <nd6_input+0x892>
    e888d24a:	03054703          	lbu	a4,48(a0)
    e888d24e:	fef712e3          	bne	a4,a5,e888d232 <nd6_input+0x892>
          SMEMCPY(default_router_list[i].neighbor_entry->lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888d252:	10a44603          	lbu	a2,266(s0)
    e888d256:	00248593          	addi	a1,s1,2
    e888d25a:	02050513          	addi	a0,a0,32
    e888d25e:	942ef0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
          default_router_list[i].neighbor_entry->state = ND6_REACHABLE;
    e888d262:	614b478b          	lrd	a5,s6,s4,0
    e888d266:	4709                	li	a4,2
    e888d268:	02e78823          	sb	a4,48(a5)
          default_router_list[i].neighbor_entry->counter.reachable_time = reachable_time;
    e888d26c:	00048717          	auipc	a4,0x48
    e888d270:	31070713          	addi	a4,a4,784 # e88d557c <reachable_time>
    e888d274:	4318                	lw	a4,0(a4)
    e888d276:	dbd8                	sw	a4,52(a5)
    e888d278:	bf6d                	j	e888d232 <nd6_input+0x892>
        if (option_len < sizeof(struct mtu_option)) {
    e888d27a:	2601                	sext.w	a2,a2
    e888d27c:	479d                	li	a5,7
    e888d27e:	32c7fb63          	bgeu	a5,a2,e888d5b4 <nd6_input+0xc14>
        mtu32 = lwip_htonl(mtu_opt->mtu);
    e888d282:	40c8                	lw	a0,4(s1)
    e888d284:	cabf90ef          	jal	ra,e8886f2e <lwip_htonl>
    e888d288:	2501                	sext.w	a0,a0
        if ((mtu32 >= 1280) && (mtu32 <= 0xffff)) {
    e888d28a:	67c1                	lui	a5,0x10
    e888d28c:	b005071b          	addiw	a4,a0,-1280
    e888d290:	aff78793          	addi	a5,a5,-1281 # faff <memcmp-0xe87f0501>
    e888d294:	f8e7efe3          	bltu	a5,a4,e888d232 <nd6_input+0x892>
          if (inp->mtu) {
    e888d298:	10045783          	lhu	a5,256(s0)
    e888d29c:	3c05350b          	extu	a0,a0,15,0
    e888d2a0:	cb81                	beqz	a5,e888d2b0 <nd6_input+0x910>
            inp->mtu6 = LWIP_MIN(inp->mtu, (u16_t)mtu32);
    e888d2a2:	873e                	mv	a4,a5
    e888d2a4:	00f57363          	bgeu	a0,a5,e888d2aa <nd6_input+0x90a>
    e888d2a8:	872a                	mv	a4,a0
    e888d2aa:	10e41123          	sh	a4,258(s0)
    e888d2ae:	b751                	j	e888d232 <nd6_input+0x892>
            inp->mtu6 = (u16_t)mtu32;
    e888d2b0:	10a41123          	sh	a0,258(s0)
    e888d2b4:	bfbd                	j	e888d232 <nd6_input+0x892>
        if (option_len < sizeof(struct prefix_option)) {
    e888d2b6:	2601                	sext.w	a2,a2
    e888d2b8:	47fd                	li	a5,31
    e888d2ba:	2ec7fd63          	bgeu	a5,a2,e888d5b4 <nd6_input+0xc14>
        ip6_addr_assign_zone(&prefix_addr, IP6_UNICAST, inp);
    e888d2be:	67a2                	ld	a5,8(sp)
        ip6_addr_copy_from_packed(prefix_addr, prefix_opt->prefix);
    e888d2c0:	0104ad83          	lw	s11,16(s1)
        ip6_addr_assign_zone(&prefix_addr, IP6_UNICAST, inp);
    e888d2c4:	00fdf733          	and	a4,s11,a5
    e888d2c8:	67c2                	ld	a5,16(sp)
    e888d2ca:	f6f704e3          	beq	a4,a5,e888d232 <nd6_input+0x892>
          if ((prefix_opt->flags & ND6_PREFIX_FLAG_ON_LINK) &&
    e888d2ce:	00348703          	lb	a4,3(s1)
        ip6_addr_copy_from_packed(prefix_addr, prefix_opt->prefix);
    e888d2d2:	0144ac03          	lw	s8,20(s1)
          if ((prefix_opt->flags & ND6_PREFIX_FLAG_ON_LINK) &&
    e888d2d6:	0a075d63          	bgez	a4,e888d390 <nd6_input+0x9f0>
    e888d2da:	0024c603          	lbu	a2,2(s1)
    e888d2de:	04000713          	li	a4,64
    e888d2e2:	0ae61763          	bne	a2,a4,e888d390 <nd6_input+0x9f0>
        ip6_addr_copy_from_packed(prefix_addr, prefix_opt->prefix);
    e888d2e6:	0184a303          	lw	t1,24(s1)
    e888d2ea:	01c4ae03          	lw	t3,28(s1)
            valid_life = lwip_htonl(prefix_opt->valid_lifetime);
    e888d2ee:	40c8                	lw	a0,4(s1)
        ip6_addr_copy_from_packed(prefix_addr, prefix_opt->prefix);
    e888d2f0:	f41a                	sd	t1,40(sp)
    e888d2f2:	f072                	sd	t3,32(sp)
            valid_life = lwip_htonl(prefix_opt->valid_lifetime);
    e888d2f4:	c3bf90ef          	jal	ra,e8886f2e <lwip_htonl>
    e888d2f8:	2501                	sext.w	a0,a0
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) {
    e888d2fa:	7322                	ld	t1,40(sp)
    e888d2fc:	7e02                	ld	t3,32(sp)
    e888d2fe:	00059817          	auipc	a6,0x59
    e888d302:	efa80813          	addi	a6,a6,-262 # e88e61f8 <prefix_list>
            valid_life = lwip_htonl(prefix_opt->valid_lifetime);
    e888d306:	8742                	mv	a4,a6
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) {
    e888d308:	4581                	li	a1,0
    e888d30a:	88c2                	mv	a7,a6
    e888d30c:	4615                	li	a2,5
    if ((ip6_addr_netcmp(&(prefix_list[i].prefix), prefix)) &&
    e888d30e:	00072e83          	lw	t4,0(a4)
    e888d312:	01be9e63          	bne	t4,s11,e888d32e <nd6_input+0x98e>
    e888d316:	00472e83          	lw	t4,4(a4)
    e888d31a:	018e9a63          	bne	t4,s8,e888d32e <nd6_input+0x98e>
    e888d31e:	01074e83          	lbu	t4,16(a4)
    e888d322:	000e9663          	bnez	t4,e888d32e <nd6_input+0x98e>
    e888d326:	01873e83          	ld	t4,24(a4)
    e888d32a:	05d40763          	beq	s0,t4,e888d378 <nd6_input+0x9d8>
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) {
    e888d32e:	2585                	addiw	a1,a1,1
    e888d330:	1c05a58b          	ext	a1,a1,7,0
    e888d334:	02870713          	addi	a4,a4,40
    e888d338:	fcc59be3          	bne	a1,a2,e888d30e <nd6_input+0x96e>
            if (prefix < 0 && valid_life > 0) {
    e888d33c:	c931                	beqz	a0,e888d390 <nd6_input+0x9f0>
    e888d33e:	4701                	li	a4,0
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) {
    e888d340:	4e95                	li	t4,5
    if ((prefix_list[i].netif == NULL) ||
    e888d342:	01883f03          	ld	t5,24(a6)
    e888d346:	1c07258b          	ext	a1,a4,7,0
    e888d34a:	0007061b          	sext.w	a2,a4
    e888d34e:	000f0663          	beqz	t5,e888d35a <nd6_input+0x9ba>
    e888d352:	02082f03          	lw	t5,32(a6)
    e888d356:	020f1863          	bnez	t5,e888d386 <nd6_input+0x9e6>
      prefix_list[i].netif = netif;
    e888d35a:	02800713          	li	a4,40
    e888d35e:	02e60633          	mul	a2,a2,a4
      ip6_addr_set(&(prefix_list[i].prefix), prefix);
    e888d362:	40c8dd8b          	srw	s11,a7,a2,0
      prefix_list[i].netif = netif;
    e888d366:	00c88733          	add	a4,a7,a2
    e888d36a:	ef00                	sd	s0,24(a4)
      ip6_addr_set(&(prefix_list[i].prefix), prefix);
    e888d36c:	01872223          	sw	s8,4(a4)
    e888d370:	e3c7530b          	swd	t1,t3,(a4),1,3
    e888d374:	00070823          	sb	zero,16(a4)
              prefix_list[prefix].invalidation_timer = valid_life;
    e888d378:	02800613          	li	a2,40
    e888d37c:	8746                	mv	a4,a7
    e888d37e:	20c5970b          	mula	a4,a1,a2
    e888d382:	d308                	sw	a0,32(a4)
    e888d384:	a031                	j	e888d390 <nd6_input+0x9f0>
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) {
    e888d386:	2705                	addiw	a4,a4,1
    e888d388:	02880813          	addi	a6,a6,40
    e888d38c:	fbd71be3          	bne	a4,t4,e888d342 <nd6_input+0x9a2>
          if (prefix_opt->flags & ND6_PREFIX_FLAG_AUTONOMOUS) {
    e888d390:	0034c703          	lbu	a4,3(s1)
    e888d394:	04077713          	andi	a4,a4,64
    e888d398:	e8070de3          	beqz	a4,e888d232 <nd6_input+0x892>
  valid_life = lwip_htonl(prefix_opt->valid_lifetime);
    e888d39c:	40c8                	lw	a0,4(s1)
    e888d39e:	b91f90ef          	jal	ra,e8886f2e <lwip_htonl>
    e888d3a2:	0005089b          	sext.w	a7,a0
  pref_life = lwip_htonl(prefix_opt->preferred_lifetime);
    e888d3a6:	4488                	lw	a0,8(s1)
  valid_life = lwip_htonl(prefix_opt->valid_lifetime);
    e888d3a8:	f046                	sd	a7,32(sp)
  pref_life = lwip_htonl(prefix_opt->preferred_lifetime);
    e888d3aa:	b85f90ef          	jal	ra,e8886f2e <lwip_htonl>
    e888d3ae:	00050c9b          	sext.w	s9,a0
  if (pref_life > valid_life || prefix_opt->prefix_length != 64) {
    e888d3b2:	7882                	ld	a7,32(sp)
    e888d3b4:	e798efe3          	bltu	a7,s9,e888d232 <nd6_input+0x892>
    e888d3b8:	0024c603          	lbu	a2,2(s1)
    e888d3bc:	04000713          	li	a4,64
    e888d3c0:	e6e619e3          	bne	a2,a4,e888d232 <nd6_input+0x892>
    e888d3c4:	06840513          	addi	a0,s0,104
    e888d3c8:	872a                	mv	a4,a0
    e888d3ca:	4305                	li	t1,1
    e888d3cc:	09840e93          	addi	t4,s0,152
    e888d3d0:	4589                	li	a1,2
    addr_state = netif_ip6_addr_state(netif, i);
    e888d3d2:	806ece0b          	lrbu	t3,t4,t1,0
    e888d3d6:	1c032f0b          	ext	t5,t1,7,0
    e888d3da:	0003049b          	sext.w	s1,t1
    if (!ip6_addr_isinvalid(addr_state) && !netif_ip6_addr_isstatic(netif, i) &&
    e888d3de:	0a0e0063          	beqz	t3,e888d47e <nd6_input+0xade>
    e888d3e2:	cc51                	beqz	s0,e888d47e <nd6_input+0xade>
    e888d3e4:	67e2                	ld	a5,24(sp)
    e888d3e6:	4467c60b          	lrw	a2,a5,t1,2
    e888d3ea:	ca51                	beqz	a2,e888d47e <nd6_input+0xade>
    e888d3ec:	00072f83          	lw	t6,0(a4)
    e888d3f0:	09bf9763          	bne	t6,s11,e888d47e <nd6_input+0xade>
        ip6_addr_netcmp(prefix_addr, netif_ip6_addr(netif, i))) {
    e888d3f4:	00472f83          	lw	t6,4(a4)
    e888d3f8:	098f9363          	bne	t6,s8,e888d47e <nd6_input+0xade>
    e888d3fc:	01074f83          	lbu	t6,16(a4)
    e888d400:	060f9f63          	bnez	t6,e888d47e <nd6_input+0xade>
      if (valid_life > ND6_2HRS || valid_life > remaining_life) {
    e888d404:	011be463          	bltu	s7,a7,e888d40c <nd6_input+0xa6c>
    e888d408:	05167563          	bgeu	a2,a7,e888d452 <nd6_input+0xab2>
        netif_ip6_addr_set_valid_life(netif, i, valid_life);
    e888d40c:	0494178b          	addsl	a5,s0,s1,2
    e888d410:	0917ae23          	sw	a7,156(a5)
      LWIP_ASSERT("bad valid lifetime", !netif_ip6_addr_isstatic(netif, i));
    e888d414:	04089563          	bnez	a7,e888d45e <nd6_input+0xabe>
    e888d418:	02f00593          	li	a1,47
    e888d41c:	00043517          	auipc	a0,0x43
    e888d420:	0ec50513          	addi	a0,a0,236 # e88d0508 <ip6_addr_any+0x220>
    e888d424:	f47a                	sd	t5,40(sp)
    e888d426:	f072                	sd	t3,32(sp)
    e888d428:	f51ee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888d42c:	00150693          	addi	a3,a0,1
    e888d430:	0de00613          	li	a2,222
    e888d434:	00043597          	auipc	a1,0x43
    e888d438:	17c58593          	addi	a1,a1,380 # e88d05b0 <ip6_addr_any+0x2c8>
    e888d43c:	00042517          	auipc	a0,0x42
    e888d440:	c7450513          	addi	a0,a0,-908 # e88cf0b0 <kSinTable1024+0x900>
    e888d444:	e83ee0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888d448:	7f22                	ld	t5,40(sp)
    e888d44a:	7e02                	ld	t3,32(sp)
    e888d44c:	a809                	j	e888d45e <nd6_input+0xabe>
  for (i = 1; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888d44e:	4309                	li	t1,2
    e888d450:	b749                	j	e888d3d2 <nd6_input+0xa32>
      } else if (remaining_life > ND6_2HRS) {
    e888d452:	00cbf663          	bgeu	s7,a2,e888d45e <nd6_input+0xabe>
        netif_ip6_addr_set_valid_life(netif, i, ND6_2HRS);
    e888d456:	0494178b          	addsl	a5,s0,s1,2
    e888d45a:	0977ae23          	sw	s7,156(a5)
      if (pref_life > 0 && addr_state == IP6_ADDR_DEPRECATED) {
    e888d45e:	000c8b63          	beqz	s9,e888d474 <nd6_input+0xad4>
    e888d462:	47c1                	li	a5,16
    e888d464:	00fe1863          	bne	t3,a5,e888d474 <nd6_input+0xad4>
        netif_ip6_addr_set_state(netif, i, IP6_ADDR_PREFERRED);
    e888d468:	03000613          	li	a2,48
    e888d46c:	85fa                	mv	a1,t5
    e888d46e:	8522                	mv	a0,s0
    e888d470:	1bd010ef          	jal	ra,e888ee2c <netif_ip6_addr_set_state>
      netif_ip6_addr_set_pref_life(netif, i, pref_life);
    e888d474:	0494178b          	addsl	a5,s0,s1,2
    e888d478:	0b97a423          	sw	s9,168(a5)
      return; /* there should be at most one matching address */
    e888d47c:	bb5d                	j	e888d232 <nd6_input+0x892>
  for (i = 1; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888d47e:	0761                	addi	a4,a4,24
    e888d480:	fcb317e3          	bne	t1,a1,e888d44e <nd6_input+0xaae>
  if (!netif->ip6_autoconfig_enabled || valid_life == IP6_ADDR_LIFE_STATIC ||
    e888d484:	10f44703          	lbu	a4,271(s0)
    e888d488:	da0705e3          	beqz	a4,e888d232 <nd6_input+0x892>
    e888d48c:	da0883e3          	beqz	a7,e888d232 <nd6_input+0x892>
    e888d490:	09844703          	lbu	a4,152(s0)
    e888d494:	0bf77713          	andi	a4,a4,191
    e888d498:	d8070de3          	beqz	a4,e888d232 <nd6_input+0x892>
  IP6_ADDR(&ip6addr, prefix_addr->addr[0], prefix_addr->addr[1],
    e888d49c:	05842e03          	lw	t3,88(s0)
    e888d4a0:	4c70                	lw	a2,92(s0)
    e888d4a2:	4705                	li	a4,1
  free_idx = 0;
    e888d4a4:	4581                	li	a1,0
  for (i = 1; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888d4a6:	4f09                	li	t5,2
    if (!ip6_addr_isinvalid(netif_ip6_addr_state(netif, i))) {
    e888d4a8:	80eec28b          	lrbu	t0,t4,a4,0
    e888d4ac:	1c072f8b          	ext	t6,a4,7,0
    e888d4b0:	06028c63          	beqz	t0,e888d528 <nd6_input+0xb88>
      if (ip6_addr_cmp(&ip6addr, netif_ip6_addr(netif, i))) {
    e888d4b4:	00052f83          	lw	t6,0(a0)
    e888d4b8:	03bf9263          	bne	t6,s11,e888d4dc <nd6_input+0xb3c>
    e888d4bc:	00452f83          	lw	t6,4(a0)
    e888d4c0:	018f9e63          	bne	t6,s8,e888d4dc <nd6_input+0xb3c>
    e888d4c4:	00852f83          	lw	t6,8(a0)
    e888d4c8:	01cf9a63          	bne	t6,t3,e888d4dc <nd6_input+0xb3c>
    e888d4cc:	00c52f83          	lw	t6,12(a0)
    e888d4d0:	00cf9663          	bne	t6,a2,e888d4dc <nd6_input+0xb3c>
    e888d4d4:	01054f83          	lbu	t6,16(a0)
    e888d4d8:	d40f8de3          	beqz	t6,e888d232 <nd6_input+0x892>
  for (i = 1; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888d4dc:	0561                	addi	a0,a0,24
    e888d4de:	05e71363          	bne	a4,t5,e888d524 <nd6_input+0xb84>
  if (free_idx == 0) {
    e888d4e2:	d40588e3          	beqz	a1,e888d232 <nd6_input+0x892>
  ip_addr_copy_from_ip6(netif->ip6_addr[free_idx], ip6addr);
    e888d4e6:	0005871b          	sext.w	a4,a1
    e888d4ea:	4561                	li	a0,24
    e888d4ec:	87a2                	mv	a5,s0
    e888d4ee:	20a7178b          	mula	a5,a4,a0
    e888d4f2:	05b7a823          	sw	s11,80(a5)
    e888d4f6:	0587aa23          	sw	s8,84(a5)
    e888d4fa:	05c7ac23          	sw	t3,88(a5)
    e888d4fe:	cff0                	sw	a2,92(a5)
    e888d500:	06078023          	sb	zero,96(a5)
    e888d504:	873e                	mv	a4,a5
    e888d506:	4799                	li	a5,6
    e888d508:	06f70223          	sb	a5,100(a4)
  netif_ip6_addr_set_valid_life(netif, free_idx, valid_life);
    e888d50c:	c419                	beqz	s0,e888d51a <nd6_input+0xb7a>
    e888d50e:	04b4178b          	addsl	a5,s0,a1,2
    e888d512:	0917ae23          	sw	a7,156(a5)
  netif_ip6_addr_set_pref_life(netif, free_idx, pref_life);
    e888d516:	0b97a423          	sw	s9,168(a5)
  netif_ip6_addr_set_state(netif, free_idx, IP6_ADDR_TENTATIVE);
    e888d51a:	4621                	li	a2,8
    e888d51c:	8522                	mv	a0,s0
    e888d51e:	10f010ef          	jal	ra,e888ee2c <netif_ip6_addr_set_state>
        break;
    e888d522:	bb01                	j	e888d232 <nd6_input+0x892>
  for (i = 1; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888d524:	871a                	mv	a4,t1
    e888d526:	b749                	j	e888d4a8 <nd6_input+0xb08>
    } else if (free_idx == 0) {
    e888d528:	40bf958b          	mveqz	a1,t6,a1
    e888d52c:	bf45                	j	e888d4dc <nd6_input+0xb3c>
    if (p->len < (sizeof(struct icmp6_hdr) + IP6_HLEN)) {
    e888d52e:	01255703          	lhu	a4,18(a0)
    e888d532:	02f00793          	li	a5,47
    e888d536:	eae7f263          	bgeu	a5,a4,e888cbda <nd6_input+0x23a>
    ip6_addr_copy_from_packed(destination_address, ip6hdr->dest);
    e888d53a:	7098                	ld	a4,32(s1)
    e888d53c:	509c                	lw	a5,32(s1)
    ip6_addr_assign_zone(&destination_address, IP6_UNKNOWN, inp);
    e888d53e:	66a1                	lui	a3,0x8
    ip6_addr_copy_from_packed(destination_address, ip6hdr->dest);
    e888d540:	e4ba                	sd	a4,72(sp)
    e888d542:	7498                	ld	a4,40(s1)
    ip6_addr_assign_zone(&destination_address, IP6_UNKNOWN, inp);
    e888d544:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    ip6_addr_copy_from_packed(destination_address, ip6hdr->dest);
    e888d548:	e8ba                	sd	a4,80(sp)
    ip6_addr_assign_zone(&destination_address, IP6_UNKNOWN, inp);
    e888d54a:	6731                	lui	a4,0xc
    e888d54c:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888d550:	8f7d                	and	a4,a4,a5
    e888d552:	00d70c63          	beq	a4,a3,e888d56a <nd6_input+0xbca>
    e888d556:	6725                	lui	a4,0x9
    e888d558:	177d                	addi	a4,a4,-1
    e888d55a:	8ff9                	and	a5,a5,a4
    e888d55c:	e017879b          	addiw	a5,a5,-511
    e888d560:	eff7f793          	andi	a5,a5,-257
    e888d564:	2781                	sext.w	a5,a5
    e888d566:	4701                	li	a4,0
    e888d568:	e791                	bnez	a5,e888d574 <nd6_input+0xbd4>
    e888d56a:	10e44703          	lbu	a4,270(s0)
    e888d56e:	2705                	addiw	a4,a4,1
    e888d570:	0ff77713          	andi	a4,a4,255
    dest_idx = nd6_find_destination_cache_entry(&destination_address);
    e888d574:	00a8                	addi	a0,sp,72
    ip6_addr_assign_zone(&destination_address, IP6_UNKNOWN, inp);
    e888d576:	04e10c23          	sb	a4,88(sp)
    dest_idx = nd6_find_destination_cache_entry(&destination_address);
    e888d57a:	b49fe0ef          	jal	ra,e888c0c2 <nd6_find_destination_cache_entry>
    if (dest_idx < 0) {
    e888d57e:	0005041b          	sext.w	s0,a0
    e888d582:	f2044463          	bltz	s0,e888ccaa <nd6_input+0x30a>
    pmtu = lwip_htonl(icmp6hdr->data);
    e888d586:	40c8                	lw	a0,4(s1)
    e888d588:	9a7f90ef          	jal	ra,e8886f2e <lwip_htonl>
    e888d58c:	2501                	sext.w	a0,a0
    destination_cache[dest_idx].pmtu = (u16_t)LWIP_MIN(pmtu, 0xFFFF);
    e888d58e:	67c1                	lui	a5,0x10
    e888d590:	ffe78713          	addi	a4,a5,-2 # fffe <memcmp-0xe87f0002>
    e888d594:	00a77463          	bgeu	a4,a0,e888d59c <nd6_input+0xbfc>
    e888d598:	fff78513          	addi	a0,a5,-1
    e888d59c:	00059797          	auipc	a5,0x59
    e888d5a0:	80478793          	addi	a5,a5,-2044 # e88e5da0 <destination_cache>
    e888d5a4:	03000713          	li	a4,48
    e888d5a8:	20e4178b          	mula	a5,s0,a4
    e888d5ac:	02a79423          	sh	a0,40(a5)
    break; /* ICMP6_TYPE_PTB */
    e888d5b0:	efaff06f          	j	e888ccaa <nd6_input+0x30a>
  ND6_STATS_INC(nd6.lenerr);
    e888d5b4:	14495783          	lhu	a5,324(s2)
    e888d5b8:	2785                	addiw	a5,a5,1
    e888d5ba:	14f91223          	sh	a5,324(s2)
  ND6_STATS_INC(nd6.drop);
    e888d5be:	c40ff06f          	j	e888c9fe <nd6_input+0x5e>
    if (ip6_addr_isany(ip6_current_src_addr())) {
    e888d5c2:	8c0a8ee3          	beqz	s5,e888ce9e <nd6_input+0x4fe>
      if (lladdr_opt == NULL) {
    e888d5c6:	e80b0563          	beqz	s6,e888cc50 <nd6_input+0x2b0>
      i = nd6_find_neighbor_cache_entry(ip6_current_src_addr());
    e888d5ca:	00058517          	auipc	a0,0x58
    e888d5ce:	5a250513          	addi	a0,a0,1442 # e88e5b6c <ip_data+0x24>
    e888d5d2:	a9ffe0ef          	jal	ra,e888c070 <nd6_find_neighbor_cache_entry>
      if (i>= 0) {
    e888d5d6:	920545e3          	bltz	a0,e888cf00 <nd6_input+0x560>
        if (neighbor_cache[i].state == ND6_INCOMPLETE) {
    e888d5da:	00059797          	auipc	a5,0x59
    e888d5de:	9ee78793          	addi	a5,a5,-1554 # e88e5fc8 <neighbor_cache>
    e888d5e2:	0005071b          	sext.w	a4,a0
    e888d5e6:	03800693          	li	a3,56
    e888d5ea:	84be                	mv	s1,a5
    e888d5ec:	20d7148b          	mula	s1,a4,a3
    e888d5f0:	4705                	li	a4,1
    e888d5f2:	0304c603          	lbu	a2,48(s1)
    e888d5f6:	02e61263          	bne	a2,a4,e888d61a <nd6_input+0xc7a>
          MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888d5fa:	20d5178b          	mula	a5,a0,a3
          neighbor_cache[i].netif = inp;
    e888d5fe:	ec80                	sd	s0,24(s1)
          MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len);
    e888d600:	10a44603          	lbu	a2,266(s0)
    e888d604:	002b0593          	addi	a1,s6,2
    e888d608:	02078513          	addi	a0,a5,32
    e888d60c:	d95ee0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        neighbor_cache[i].state = ND6_DELAY;
    e888d610:	4791                	li	a5,4
    e888d612:	02f48823          	sb	a5,48(s1)
        neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME / ND6_TMR_INTERVAL;
    e888d616:	4795                	li	a5,5
    e888d618:	d8dc                	sw	a5,52(s1)
      nd6_send_na(inp, &target_address, ND6_FLAG_SOLICITED | ND6_FLAG_OVERRIDE);
    e888d61a:	06000613          	li	a2,96
    e888d61e:	00ac                	addi	a1,sp,72
    e888d620:	8522                	mv	a0,s0
    e888d622:	bc9fe0ef          	jal	ra,e888c1ea <nd6_send_na>
    e888d626:	e84ff06f          	j	e888ccaa <nd6_input+0x30a>

00000000e888d62a <nd6_tmr>:
{
    e888d62a:	7159                	addi	sp,sp,-112
    e888d62c:	f0a2                	sd	s0,96(sp)
    e888d62e:	eca6                	sd	s1,88(sp)
    e888d630:	e8ca                	sd	s2,80(sp)
    e888d632:	e4ce                	sd	s3,72(sp)
    e888d634:	e0d2                	sd	s4,64(sp)
    e888d636:	fc56                	sd	s5,56(sp)
    e888d638:	f85a                	sd	s6,48(sp)
    e888d63a:	f45e                	sd	s7,40(sp)
    e888d63c:	f062                	sd	s8,32(sp)
    e888d63e:	ec66                	sd	s9,24(sp)
    e888d640:	f486                	sd	ra,104(sp)
    e888d642:	e86a                	sd	s10,16(sp)
    e888d644:	e46e                	sd	s11,8(sp)
    e888d646:	00059417          	auipc	s0,0x59
    e888d64a:	98240413          	addi	s0,s0,-1662 # e88e5fc8 <neighbor_cache>
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888d64e:	4481                	li	s1,0
    switch (neighbor_cache[i].state) {
    e888d650:	4a91                	li	s5,4
    e888d652:	00043917          	auipc	s2,0x43
    e888d656:	e6e90913          	addi	s2,s2,-402 # e88d04c0 <ip6_addr_any+0x1d8>
      if ((neighbor_cache[i].counter.probes_sent >= LWIP_ND6_MAX_MULTICAST_SOLICIT) &&
    e888d65a:	4989                	li	s3,2
      if (neighbor_cache[i].counter.delay_time <= 1) {
    e888d65c:	4b05                	li	s6,1
        neighbor_cache[i].state = ND6_PROBE;
    e888d65e:	4b95                	li	s7,5
      if (neighbor_cache[i].counter.reachable_time <= ND6_TMR_INTERVAL) {
    e888d660:	3e800c13          	li	s8,1000
        neighbor_cache[i].state = ND6_STALE;
    e888d664:	4c8d                	li	s9,3
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888d666:	4a29                	li	s4,10
    switch (neighbor_cache[i].state) {
    e888d668:	03044783          	lbu	a5,48(s0)
    e888d66c:	37fd                	addiw	a5,a5,-1
    e888d66e:	0ff7f793          	andi	a5,a5,255
    e888d672:	04fae463          	bltu	s5,a5,e888d6ba <nd6_tmr+0x90>
    e888d676:	44f9478b          	lrw	a5,s2,a5,2
    e888d67a:	97ca                	add	a5,a5,s2
    e888d67c:	8782                	jr	a5
      if ((neighbor_cache[i].counter.probes_sent >= LWIP_ND6_MAX_MULTICAST_SOLICIT) &&
    e888d67e:	585c                	lw	a5,52(s0)
    e888d680:	00f9f963          	bgeu	s3,a5,e888d692 <nd6_tmr+0x68>
    e888d684:	03144703          	lbu	a4,49(s0)
    e888d688:	e709                	bnez	a4,e888d692 <nd6_tmr+0x68>
        nd6_free_neighbor_cache_entry(i);
    e888d68a:	8526                	mv	a0,s1
    e888d68c:	930ff0ef          	jal	ra,e888c7bc <nd6_free_neighbor_cache_entry>
    e888d690:	a02d                	j	e888d6ba <nd6_tmr+0x90>
        neighbor_cache[i].counter.probes_sent++;
    e888d692:	2785                	addiw	a5,a5,1
    e888d694:	d85c                	sw	a5,52(s0)
  nd6_send_ns(entry->netif, &entry->next_hop_address, flags);
    e888d696:	4605                	li	a2,1
    e888d698:	6c08                	ld	a0,24(s0)
    e888d69a:	85a2                	mv	a1,s0
    e888d69c:	dcbfe0ef          	jal	ra,e888c466 <nd6_send_ns>
    e888d6a0:	a829                	j	e888d6ba <nd6_tmr+0x90>
      if (neighbor_cache[i].q != NULL) {
    e888d6a2:	741c                	ld	a5,40(s0)
    e888d6a4:	c781                	beqz	a5,e888d6ac <nd6_tmr+0x82>
  if ((i < 0) || (i >= LWIP_ND6_NUM_NEIGHBORS)) {
    e888d6a6:	8526                	mv	a0,s1
    e888d6a8:	820ff0ef          	jal	ra,e888c6c8 <nd6_send_q.part.2>
      if (neighbor_cache[i].counter.reachable_time <= ND6_TMR_INTERVAL) {
    e888d6ac:	585c                	lw	a5,52(s0)
    e888d6ae:	14fc6463          	bltu	s8,a5,e888d7f6 <nd6_tmr+0x1cc>
        neighbor_cache[i].state = ND6_STALE;
    e888d6b2:	03940823          	sb	s9,48(s0)
        neighbor_cache[i].counter.probes_sent = 0;
    e888d6b6:	02042a23          	sw	zero,52(s0)
  for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) {
    e888d6ba:	2485                	addiw	s1,s1,1
    e888d6bc:	1c04a48b          	ext	s1,s1,7,0
    e888d6c0:	03840413          	addi	s0,s0,56
    e888d6c4:	fb4492e3          	bne	s1,s4,e888d668 <nd6_tmr+0x3e>
    e888d6c8:	00058617          	auipc	a2,0x58
    e888d6cc:	6d860613          	addi	a2,a2,1752 # e88e5da0 <destination_cache>
    e888d6d0:	00059597          	auipc	a1,0x59
    e888d6d4:	8b058593          	addi	a1,a1,-1872 # e88e5f80 <last_router.7561>
    e888d6d8:	87b2                	mv	a5,a2
    destination_cache[i].age++;
    e888d6da:	57d8                	lw	a4,44(a5)
    e888d6dc:	03078793          	addi	a5,a5,48
    e888d6e0:	2705                	addiw	a4,a4,1
    e888d6e2:	fee7ae23          	sw	a4,-4(a5)
  for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) {
    e888d6e6:	feb79ae3          	bne	a5,a1,e888d6da <nd6_tmr+0xb0>
    e888d6ea:	00058717          	auipc	a4,0x58
    e888d6ee:	68670713          	addi	a4,a4,1670 # e88e5d70 <default_router_list>
    e888d6f2:	00058517          	auipc	a0,0x58
    e888d6f6:	6ae50513          	addi	a0,a0,1710 # e88e5da0 <destination_cache>
      if (default_router_list[i].invalidation_timer <= ND6_TMR_INTERVAL / 1000) {
    e888d6fa:	4805                	li	a6,1
    if (default_router_list[i].neighbor_entry != NULL) {
    e888d6fc:	6314                	ld	a3,0(a4)
    e888d6fe:	caad                	beqz	a3,e888d770 <nd6_tmr+0x146>
      if (default_router_list[i].invalidation_timer <= ND6_TMR_INTERVAL / 1000) {
    e888d700:	471c                	lw	a5,8(a4)
    e888d702:	12f86463          	bltu	a6,a5,e888d82a <nd6_tmr+0x200>
    e888d706:	87b2                	mv	a5,a2
          if (ip6_addr_cmp(&destination_cache[j].next_hop_addr,
    e888d708:	0147a303          	lw	t1,20(a5)
    e888d70c:	0006a883          	lw	a7,0(a3)
    e888d710:	05131463          	bne	t1,a7,e888d758 <nd6_tmr+0x12e>
    e888d714:	0187a303          	lw	t1,24(a5)
    e888d718:	0046a883          	lw	a7,4(a3)
    e888d71c:	03131e63          	bne	t1,a7,e888d758 <nd6_tmr+0x12e>
    e888d720:	01c7a303          	lw	t1,28(a5)
    e888d724:	0086a883          	lw	a7,8(a3)
    e888d728:	03131863          	bne	t1,a7,e888d758 <nd6_tmr+0x12e>
    e888d72c:	0207a303          	lw	t1,32(a5)
    e888d730:	00c6a883          	lw	a7,12(a3)
    e888d734:	03131263          	bne	t1,a7,e888d758 <nd6_tmr+0x12e>
    e888d738:	0247c303          	lbu	t1,36(a5)
    e888d73c:	0106c883          	lbu	a7,16(a3)
    e888d740:	01131c63          	bne	t1,a7,e888d758 <nd6_tmr+0x12e>
             ip6_addr_set_any(&destination_cache[j].destination_addr);
    e888d744:	0007a023          	sw	zero,0(a5)
    e888d748:	0007a223          	sw	zero,4(a5)
    e888d74c:	0007a423          	sw	zero,8(a5)
    e888d750:	0007a623          	sw	zero,12(a5)
    e888d754:	00078823          	sb	zero,16(a5)
        for (j = 0; j < LWIP_ND6_NUM_DESTINATIONS; j++) {
    e888d758:	03078793          	addi	a5,a5,48
    e888d75c:	fab796e3          	bne	a5,a1,e888d708 <nd6_tmr+0xde>
        default_router_list[i].neighbor_entry->isrouter = 0;
    e888d760:	020688a3          	sb	zero,49(a3)
        default_router_list[i].neighbor_entry = NULL;
    e888d764:	00073023          	sd	zero,0(a4)
        default_router_list[i].invalidation_timer = 0;
    e888d768:	00072423          	sw	zero,8(a4)
        default_router_list[i].flags = 0;
    e888d76c:	00070623          	sb	zero,12(a4)
  for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) {
    e888d770:	0741                	addi	a4,a4,16
    e888d772:	f8a715e3          	bne	a4,a0,e888d6fc <nd6_tmr+0xd2>
    e888d776:	00059797          	auipc	a5,0x59
    e888d77a:	a8278793          	addi	a5,a5,-1406 # e88e61f8 <prefix_list>
    e888d77e:	00059697          	auipc	a3,0x59
    e888d782:	b4268693          	addi	a3,a3,-1214 # e88e62c0 <ext_callback>
      if (prefix_list[i].invalidation_timer <= ND6_TMR_INTERVAL / 1000) {
    e888d786:	4605                	li	a2,1
    if (prefix_list[i].netif != NULL) {
    e888d788:	6f98                	ld	a4,24(a5)
    e888d78a:	cb01                	beqz	a4,e888d79a <nd6_tmr+0x170>
      if (prefix_list[i].invalidation_timer <= ND6_TMR_INTERVAL / 1000) {
    e888d78c:	5398                	lw	a4,32(a5)
    e888d78e:	0ae66163          	bltu	a2,a4,e888d830 <nd6_tmr+0x206>
        prefix_list[i].invalidation_timer = 0;
    e888d792:	0207a023          	sw	zero,32(a5)
        prefix_list[i].netif = NULL;
    e888d796:	0007bc23          	sd	zero,24(a5)
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; i++) {
    e888d79a:	02878793          	addi	a5,a5,40
    e888d79e:	fef695e3          	bne	a3,a5,e888d788 <nd6_tmr+0x15e>
  NETIF_FOREACH(netif) {
    e888d7a2:	00059997          	auipc	s3,0x59
    e888d7a6:	c9698993          	addi	s3,s3,-874 # e88e6438 <netif_list>
    e888d7aa:	0009b403          	ld	s0,0(s3)
        if (life <= ND6_TMR_INTERVAL / 1000) {
    e888d7ae:	4a05                	li	s4,1
          if (!ip6_addr_life_isinfinite(life)) {
    e888d7b0:	5afd                	li	s5,-1
            if (addr_state == IP6_ADDR_PREFERRED)
    e888d7b2:	03000b93          	li	s7,48
          nd6_send_ns(netif, netif_ip6_addr(netif, i),
    e888d7b6:	4c61                	li	s8,24
  NETIF_FOREACH(netif) {
    e888d7b8:	ec3d                	bnez	s0,e888d836 <nd6_tmr+0x20c>
  if (!nd6_tmr_rs_reduction) {
    e888d7ba:	00059717          	auipc	a4,0x59
    e888d7be:	80670713          	addi	a4,a4,-2042 # e88e5fc0 <nd6_tmr_rs_reduction>
    e888d7c2:	00074783          	lbu	a5,0(a4)
    e888d7c6:	16079263          	bnez	a5,e888d92a <nd6_tmr+0x300>
    NETIF_FOREACH(netif) {
    e888d7ca:	0009b403          	ld	s0,0(s3)
    nd6_tmr_rs_reduction = (ND6_RTR_SOLICITATION_INTERVAL / ND6_TMR_INTERVAL) - 1;
    e888d7ce:	478d                	li	a5,3
    e888d7d0:	00f70023          	sb	a5,0(a4)
    NETIF_FOREACH(netif) {
    e888d7d4:	12041063          	bnez	s0,e888d8f4 <nd6_tmr+0x2ca>
}
    e888d7d8:	70a6                	ld	ra,104(sp)
    e888d7da:	7406                	ld	s0,96(sp)
    e888d7dc:	64e6                	ld	s1,88(sp)
    e888d7de:	6946                	ld	s2,80(sp)
    e888d7e0:	69a6                	ld	s3,72(sp)
    e888d7e2:	6a06                	ld	s4,64(sp)
    e888d7e4:	7ae2                	ld	s5,56(sp)
    e888d7e6:	7b42                	ld	s6,48(sp)
    e888d7e8:	7ba2                	ld	s7,40(sp)
    e888d7ea:	7c02                	ld	s8,32(sp)
    e888d7ec:	6ce2                	ld	s9,24(sp)
    e888d7ee:	6d42                	ld	s10,16(sp)
    e888d7f0:	6da2                	ld	s11,8(sp)
    e888d7f2:	6165                	addi	sp,sp,112
    e888d7f4:	8082                	ret
        neighbor_cache[i].counter.reachable_time -= ND6_TMR_INTERVAL;
    e888d7f6:	c187879b          	addiw	a5,a5,-1000
        neighbor_cache[i].counter.delay_time--;
    e888d7fa:	d85c                	sw	a5,52(s0)
    e888d7fc:	bd7d                	j	e888d6ba <nd6_tmr+0x90>
      neighbor_cache[i].counter.stale_time++;
    e888d7fe:	585c                	lw	a5,52(s0)
    e888d800:	2785                	addiw	a5,a5,1
    e888d802:	bfe5                	j	e888d7fa <nd6_tmr+0x1d0>
      if (neighbor_cache[i].counter.delay_time <= 1) {
    e888d804:	585c                	lw	a5,52(s0)
    e888d806:	00fb6563          	bltu	s6,a5,e888d810 <nd6_tmr+0x1e6>
        neighbor_cache[i].state = ND6_PROBE;
    e888d80a:	03740823          	sb	s7,48(s0)
    e888d80e:	b565                	j	e888d6b6 <nd6_tmr+0x8c>
        neighbor_cache[i].counter.delay_time--;
    e888d810:	37fd                	addiw	a5,a5,-1
    e888d812:	b7e5                	j	e888d7fa <nd6_tmr+0x1d0>
      if ((neighbor_cache[i].counter.probes_sent >= LWIP_ND6_MAX_MULTICAST_SOLICIT) &&
    e888d814:	585c                	lw	a5,52(s0)
    e888d816:	00f9f663          	bgeu	s3,a5,e888d822 <nd6_tmr+0x1f8>
    e888d81a:	03144703          	lbu	a4,49(s0)
    e888d81e:	e60706e3          	beqz	a4,e888d68a <nd6_tmr+0x60>
        neighbor_cache[i].counter.probes_sent++;
    e888d822:	2785                	addiw	a5,a5,1
    e888d824:	d85c                	sw	a5,52(s0)
  nd6_send_ns(entry->netif, &entry->next_hop_address, flags);
    e888d826:	4601                	li	a2,0
    e888d828:	bd85                	j	e888d698 <nd6_tmr+0x6e>
        default_router_list[i].invalidation_timer -= ND6_TMR_INTERVAL / 1000;
    e888d82a:	37fd                	addiw	a5,a5,-1
    e888d82c:	c71c                	sw	a5,8(a4)
    e888d82e:	b789                	j	e888d770 <nd6_tmr+0x146>
        prefix_list[i].invalidation_timer -= ND6_TMR_INTERVAL / 1000;
    e888d830:	377d                	addiw	a4,a4,-1
    e888d832:	d398                	sw	a4,32(a5)
    e888d834:	b79d                	j	e888d79a <nd6_tmr+0x170>
    e888d836:	0a840493          	addi	s1,s0,168
  NETIF_FOREACH(netif) {
    e888d83a:	4901                	li	s2,0
    e888d83c:	09840b13          	addi	s6,s0,152
          nd6_send_ns(netif, netif_ip6_addr(netif, i),
    e888d840:	05040d13          	addi	s10,s0,80
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
    e888d844:	4c8d                	li	s9,3
      addr_state = netif_ip6_addr_state(netif, i);
    e888d846:	812b470b          	lrbu	a4,s6,s2,0
    e888d84a:	1c092d8b          	ext	s11,s2,7,0
      if (!ip6_addr_isinvalid(addr_state) &&
    e888d84e:	cf19                	beqz	a4,e888d86c <nd6_tmr+0x242>
          !netif_ip6_addr_isstatic(netif, i)) {
    e888d850:	ff44a783          	lw	a5,-12(s1)
    e888d854:	cf81                	beqz	a5,e888d86c <nd6_tmr+0x242>
        if (life <= ND6_TMR_INTERVAL / 1000) {
    e888d856:	04fa6563          	bltu	s4,a5,e888d8a0 <nd6_tmr+0x276>
          netif_ip6_addr_set_valid_life(netif, i, 0);
    e888d85a:	fe04aa23          	sw	zero,-12(s1)
          netif_ip6_addr_set_pref_life(netif, i, 0);
    e888d85e:	0004a023          	sw	zero,0(s1)
          netif_ip6_addr_set_state(netif, i, IP6_ADDR_INVALID);
    e888d862:	4601                	li	a2,0
              netif_ip6_addr_set_state(netif, i, IP6_ADDR_DEPRECATED);
    e888d864:	85ee                	mv	a1,s11
    e888d866:	8522                	mv	a0,s0
    e888d868:	5c4010ef          	jal	ra,e888ee2c <netif_ip6_addr_set_state>
      addr_state = netif_ip6_addr_state(netif, i);
    e888d86c:	812b460b          	lrbu	a2,s6,s2,0
      if (ip6_addr_istentative(addr_state)) {
    e888d870:	00867793          	andi	a5,a2,8
    e888d874:	c385                	beqz	a5,e888d894 <nd6_tmr+0x26a>
        if ((addr_state & IP6_ADDR_TENTATIVE_COUNT_MASK) >= LWIP_IPV6_DUP_DETECT_ATTEMPTS) {
    e888d876:	00767793          	andi	a5,a2,7
    e888d87a:	c7b1                	beqz	a5,e888d8c6 <nd6_tmr+0x29c>
          if (!netif_ip6_addr_isstatic(netif, i) &&
    e888d87c:	ff44a783          	lw	a5,-12(s1)
          addr_state = IP6_ADDR_PREFERRED;
    e888d880:	03000613          	li	a2,48
          if (!netif_ip6_addr_isstatic(netif, i) &&
    e888d884:	c781                	beqz	a5,e888d88c <nd6_tmr+0x262>
              netif_ip6_addr_pref_life(netif, i) == 0) {
    e888d886:	409c                	lw	a5,0(s1)
    e888d888:	e391                	bnez	a5,e888d88c <nd6_tmr+0x262>
            addr_state = IP6_ADDR_DEPRECATED;
    e888d88a:	4641                	li	a2,16
          netif_ip6_addr_set_state(netif, i, addr_state);
    e888d88c:	85ee                	mv	a1,s11
    e888d88e:	8522                	mv	a0,s0
    e888d890:	59c010ef          	jal	ra,e888ee2c <netif_ip6_addr_set_state>
    for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) {
    e888d894:	0905                	addi	s2,s2,1
    e888d896:	0491                	addi	s1,s1,4
    e888d898:	fb9917e3          	bne	s2,s9,e888d846 <nd6_tmr+0x21c>
  NETIF_FOREACH(netif) {
    e888d89c:	6000                	ld	s0,0(s0)
    e888d89e:	bf29                	j	e888d7b8 <nd6_tmr+0x18e>
          if (!ip6_addr_life_isinfinite(life)) {
    e888d8a0:	01578563          	beq	a5,s5,e888d8aa <nd6_tmr+0x280>
            life -= ND6_TMR_INTERVAL / 1000;
    e888d8a4:	37fd                	addiw	a5,a5,-1
            netif_ip6_addr_set_valid_life(netif, i, life);
    e888d8a6:	fef4aa23          	sw	a5,-12(s1)
          life = netif_ip6_addr_pref_life(netif, i);
    e888d8aa:	409c                	lw	a5,0(s1)
          if (life <= ND6_TMR_INTERVAL / 1000) {
    e888d8ac:	00fa6863          	bltu	s4,a5,e888d8bc <nd6_tmr+0x292>
            netif_ip6_addr_set_pref_life(netif, i, 0);
    e888d8b0:	0004a023          	sw	zero,0(s1)
            if (addr_state == IP6_ADDR_PREFERRED)
    e888d8b4:	fb771ce3          	bne	a4,s7,e888d86c <nd6_tmr+0x242>
              netif_ip6_addr_set_state(netif, i, IP6_ADDR_DEPRECATED);
    e888d8b8:	4641                	li	a2,16
    e888d8ba:	b76d                	j	e888d864 <nd6_tmr+0x23a>
          } else if (!ip6_addr_life_isinfinite(life)) {
    e888d8bc:	fb5788e3          	beq	a5,s5,e888d86c <nd6_tmr+0x242>
            life -= ND6_TMR_INTERVAL / 1000;
    e888d8c0:	37fd                	addiw	a5,a5,-1
            netif_ip6_addr_set_pref_life(netif, i, life);
    e888d8c2:	c09c                	sw	a5,0(s1)
    e888d8c4:	b765                	j	e888d86c <nd6_tmr+0x242>
        } else if (netif_is_up(netif) && netif_is_link_up(netif)) {
    e888d8c6:	10b44783          	lbu	a5,267(s0)
    e888d8ca:	0017f713          	andi	a4,a5,1
    e888d8ce:	d379                	beqz	a4,e888d894 <nd6_tmr+0x26a>
    e888d8d0:	0827b78b          	extu	a5,a5,2,2
    e888d8d4:	d3e1                	beqz	a5,e888d894 <nd6_tmr+0x26a>
          netif_ip6_addr_set_state(netif, i, addr_state + 1);
    e888d8d6:	2605                	addiw	a2,a2,1
    e888d8d8:	85ee                	mv	a1,s11
    e888d8da:	8522                	mv	a0,s0
    e888d8dc:	0ff67613          	andi	a2,a2,255
    e888d8e0:	54c010ef          	jal	ra,e888ee2c <netif_ip6_addr_set_state>
          nd6_send_ns(netif, netif_ip6_addr(netif, i),
    e888d8e4:	85ea                	mv	a1,s10
    e888d8e6:	2189158b          	mula	a1,s2,s8
    e888d8ea:	4615                	li	a2,5
    e888d8ec:	8522                	mv	a0,s0
    e888d8ee:	b79fe0ef          	jal	ra,e888c466 <nd6_send_ns>
    e888d8f2:	b74d                	j	e888d894 <nd6_tmr+0x26a>
      if ((netif->rs_count > 0) && netif_is_up(netif) &&
    e888d8f4:	11044783          	lbu	a5,272(s0)
    e888d8f8:	c79d                	beqz	a5,e888d926 <nd6_tmr+0x2fc>
    e888d8fa:	10b44783          	lbu	a5,267(s0)
    e888d8fe:	0017f713          	andi	a4,a5,1
    e888d902:	c315                	beqz	a4,e888d926 <nd6_tmr+0x2fc>
    e888d904:	0827b78b          	extu	a5,a5,2,2
    e888d908:	cf99                	beqz	a5,e888d926 <nd6_tmr+0x2fc>
          netif_is_link_up(netif) &&
    e888d90a:	09844783          	lbu	a5,152(s0)
    e888d90e:	0bf7f793          	andi	a5,a5,191
    e888d912:	cb91                	beqz	a5,e888d926 <nd6_tmr+0x2fc>
        if (nd6_send_rs(netif) == ERR_OK) {
    e888d914:	8522                	mv	a0,s0
    e888d916:	a33fe0ef          	jal	ra,e888c348 <nd6_send_rs>
    e888d91a:	e511                	bnez	a0,e888d926 <nd6_tmr+0x2fc>
          netif->rs_count--;
    e888d91c:	11044783          	lbu	a5,272(s0)
    e888d920:	37fd                	addiw	a5,a5,-1
    e888d922:	10f40823          	sb	a5,272(s0)
    NETIF_FOREACH(netif) {
    e888d926:	6000                	ld	s0,0(s0)
    e888d928:	b575                	j	e888d7d4 <nd6_tmr+0x1aa>
    nd6_tmr_rs_reduction--;
    e888d92a:	37fd                	addiw	a5,a5,-1
    e888d92c:	00f70023          	sb	a5,0(a4)
}
    e888d930:	b565                	j	e888d7d8 <nd6_tmr+0x1ae>

00000000e888d932 <nd6_find_route>:
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) {
    e888d932:	00059797          	auipc	a5,0x59
    e888d936:	8c678793          	addi	a5,a5,-1850 # e88e61f8 <prefix_list>
    e888d93a:	00059617          	auipc	a2,0x59
    e888d93e:	98660613          	addi	a2,a2,-1658 # e88e62c0 <ext_callback>
    netif = prefix_list[i].netif;
    e888d942:	6f98                	ld	a4,24(a5)
    if ((netif != NULL) && ip6_addr_netcmp(&prefix_list[i].prefix, ip6addr) &&
    e888d944:	c71d                	beqz	a4,e888d972 <nd6_find_route+0x40>
    e888d946:	438c                	lw	a1,0(a5)
    e888d948:	4114                	lw	a3,0(a0)
    e888d94a:	02d59463          	bne	a1,a3,e888d972 <nd6_find_route+0x40>
    e888d94e:	43cc                	lw	a1,4(a5)
    e888d950:	4154                	lw	a3,4(a0)
    e888d952:	02d59063          	bne	a1,a3,e888d972 <nd6_find_route+0x40>
    e888d956:	0107c583          	lbu	a1,16(a5)
    e888d95a:	01054683          	lbu	a3,16(a0)
    e888d95e:	00d59a63          	bne	a1,a3,e888d972 <nd6_find_route+0x40>
        netif_is_up(netif) && netif_is_link_up(netif)) {
    e888d962:	10b74683          	lbu	a3,267(a4)
    if ((netif != NULL) && ip6_addr_netcmp(&prefix_list[i].prefix, ip6addr) &&
    e888d966:	0016f593          	andi	a1,a3,1
    e888d96a:	c581                	beqz	a1,e888d972 <nd6_find_route+0x40>
        netif_is_up(netif) && netif_is_link_up(netif)) {
    e888d96c:	0826b68b          	extu	a3,a3,2,2
    e888d970:	eaad                	bnez	a3,e888d9e2 <nd6_find_route+0xb0>
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) {
    e888d972:	02878793          	addi	a5,a5,40
    e888d976:	fcc796e3          	bne	a5,a2,e888d942 <nd6_find_route+0x10>
{
    e888d97a:	1101                	addi	sp,sp,-32
  i = nd6_select_router(ip6addr, NULL);
    e888d97c:	4501                	li	a0,0
{
    e888d97e:	ec06                	sd	ra,24(sp)
    e888d980:	e422                	sd	s0,8(sp)
    e888d982:	e826                	sd	s1,16(sp)
  i = nd6_select_router(ip6addr, NULL);
    e888d984:	c5dfe0ef          	jal	ra,e888c5e0 <nd6_select_router.isra.0>
  return NULL;
    e888d988:	4701                	li	a4,0
  if (i >= 0) {
    e888d98a:	04054663          	bltz	a0,e888d9d6 <nd6_find_route+0xa4>
    LWIP_ASSERT("selected router must have a neighbor entry",
    e888d98e:	0005041b          	sext.w	s0,a0
    e888d992:	00058797          	auipc	a5,0x58
    e888d996:	3de78793          	addi	a5,a5,990 # e88e5d70 <default_router_list>
    e888d99a:	0412                	slli	s0,s0,0x4
    e888d99c:	6087c70b          	lrd	a4,a5,s0,0
    e888d9a0:	84be                	mv	s1,a5
    e888d9a2:	e71d                	bnez	a4,e888d9d0 <nd6_find_route+0x9e>
    e888d9a4:	02f00593          	li	a1,47
    e888d9a8:	00043517          	auipc	a0,0x43
    e888d9ac:	b6050513          	addi	a0,a0,-1184 # e88d0508 <ip6_addr_any+0x220>
    e888d9b0:	9c9ee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888d9b4:	00150693          	addi	a3,a0,1
    e888d9b8:	6e300613          	li	a2,1763
    e888d9bc:	00043597          	auipc	a1,0x43
    e888d9c0:	b1c58593          	addi	a1,a1,-1252 # e88d04d8 <ip6_addr_any+0x1f0>
    e888d9c4:	00041517          	auipc	a0,0x41
    e888d9c8:	6ec50513          	addi	a0,a0,1772 # e88cf0b0 <kSinTable1024+0x900>
    e888d9cc:	8fbee0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return default_router_list[i].neighbor_entry->netif;
    e888d9d0:	6084c78b          	lrd	a5,s1,s0,0
    e888d9d4:	6f98                	ld	a4,24(a5)
}
    e888d9d6:	60e2                	ld	ra,24(sp)
    e888d9d8:	6422                	ld	s0,8(sp)
    e888d9da:	64c2                	ld	s1,16(sp)
    e888d9dc:	853a                	mv	a0,a4
    e888d9de:	6105                	addi	sp,sp,32
    e888d9e0:	8082                	ret
    e888d9e2:	853a                	mv	a0,a4
    e888d9e4:	8082                	ret

00000000e888d9e6 <nd6_get_next_hop_addr_or_queue>:
 * - ERR_OK on success, ERR_RTE if no route was found for the packet,
 * or ERR_MEM if low memory conditions prohibit sending the packet at all.
 */
err_t
nd6_get_next_hop_addr_or_queue(struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr, const u8_t **hwaddrp)
{
    e888d9e6:	711d                	addi	sp,sp,-96
    e888d9e8:	fc4e                	sd	s3,56(sp)
  if (ip6_addr_cmp(ip6addr, &(destination_cache[nd6_cached_destination_index].destination_addr))) {
    e888d9ea:	00058997          	auipc	s3,0x58
    e888d9ee:	5b298993          	addi	s3,s3,1458 # e88e5f9c <nd6_cached_destination_index>
{
    e888d9f2:	e8a2                	sd	s0,80(sp)
    e888d9f4:	e0ca                	sd	s2,64(sp)
    e888d9f6:	f852                	sd	s4,48(sp)
    e888d9f8:	f456                	sd	s5,40(sp)
    e888d9fa:	ec86                	sd	ra,88(sp)
    e888d9fc:	e4a6                	sd	s1,72(sp)
    e888d9fe:	f05a                	sd	s6,32(sp)
    e888da00:	ec5e                	sd	s7,24(sp)
  if (ip6_addr_cmp(ip6addr, &(destination_cache[nd6_cached_destination_index].destination_addr))) {
    e888da02:	0009c703          	lbu	a4,0(s3)
    e888da06:	03000793          	li	a5,48
    e888da0a:	00058417          	auipc	s0,0x58
    e888da0e:	39640413          	addi	s0,s0,918 # e88e5da0 <destination_cache>
    e888da12:	02f70733          	mul	a4,a4,a5
    e888da16:	00062b03          	lw	s6,0(a2)
{
    e888da1a:	892a                	mv	s2,a0
    e888da1c:	8a2e                	mv	s4,a1
    e888da1e:	8ab6                	mv	s5,a3
  if (ip6_addr_cmp(ip6addr, &(destination_cache[nd6_cached_destination_index].destination_addr))) {
    e888da20:	00e407b3          	add	a5,s0,a4
    e888da24:	40e4470b          	lrw	a4,s0,a4,0
    e888da28:	11671d63          	bne	a4,s6,e888db42 <nd6_get_next_hop_addr_or_queue+0x15c>
    e888da2c:	4254                	lw	a3,4(a2)
    e888da2e:	43d8                	lw	a4,4(a5)
    e888da30:	10e69963          	bne	a3,a4,e888db42 <nd6_get_next_hop_addr_or_queue+0x15c>
    e888da34:	4614                	lw	a3,8(a2)
    e888da36:	4798                	lw	a4,8(a5)
    e888da38:	10e69563          	bne	a3,a4,e888db42 <nd6_get_next_hop_addr_or_queue+0x15c>
    e888da3c:	4654                	lw	a3,12(a2)
    e888da3e:	47d8                	lw	a4,12(a5)
    e888da40:	10e69163          	bne	a3,a4,e888db42 <nd6_get_next_hop_addr_or_queue+0x15c>
    e888da44:	01064703          	lbu	a4,16(a2)
    e888da48:	0107c783          	lbu	a5,16(a5)
    e888da4c:	0ef71b63          	bne	a4,a5,e888db42 <nd6_get_next_hop_addr_or_queue+0x15c>
    ND6_STATS_INC(nd6.cachehit);
    e888da50:	00059717          	auipc	a4,0x59
    e888da54:	a0070713          	addi	a4,a4,-1536 # e88e6450 <lwip_stats>
    e888da58:	15075783          	lhu	a5,336(a4)
    e888da5c:	2785                	addiw	a5,a5,1
    e888da5e:	14f71823          	sh	a5,336(a4)
  if (ip6_addr_cmp(&(destination_cache[nd6_cached_destination_index].next_hop_addr),
    e888da62:	0009c603          	lbu	a2,0(s3)
    e888da66:	03000793          	li	a5,48
    e888da6a:	8722                	mv	a4,s0
    e888da6c:	20f6170b          	mula	a4,a2,a5
    e888da70:	00058b17          	auipc	s6,0x58
    e888da74:	52db0b13          	addi	s6,s6,1325 # e88e5f9d <nd6_cached_neighbor_index>
    e888da78:	000b4683          	lbu	a3,0(s6)
    e888da7c:	00058497          	auipc	s1,0x58
    e888da80:	54c48493          	addi	s1,s1,1356 # e88e5fc8 <neighbor_cache>
    e888da84:	87ba                	mv	a5,a4
    e888da86:	03800713          	li	a4,56
    e888da8a:	02e686b3          	mul	a3,a3,a4
    e888da8e:	4bcc                	lw	a1,20(a5)
    e888da90:	00d48733          	add	a4,s1,a3
    e888da94:	40d4c68b          	lrw	a3,s1,a3,0
    e888da98:	2ed59b63          	bne	a1,a3,e888dd8e <nd6_get_next_hop_addr_or_queue+0x3a8>
    e888da9c:	4f8c                	lw	a1,24(a5)
    e888da9e:	4354                	lw	a3,4(a4)
    e888daa0:	2ed59763          	bne	a1,a3,e888dd8e <nd6_get_next_hop_addr_or_queue+0x3a8>
    e888daa4:	4fcc                	lw	a1,28(a5)
    e888daa6:	4714                	lw	a3,8(a4)
    e888daa8:	2ed59363          	bne	a1,a3,e888dd8e <nd6_get_next_hop_addr_or_queue+0x3a8>
    e888daac:	538c                	lw	a1,32(a5)
    e888daae:	4754                	lw	a3,12(a4)
    e888dab0:	2cd59f63          	bne	a1,a3,e888dd8e <nd6_get_next_hop_addr_or_queue+0x3a8>
    e888dab4:	0247c683          	lbu	a3,36(a5)
    e888dab8:	01074783          	lbu	a5,16(a4)
    e888dabc:	2cf69963          	bne	a3,a5,e888dd8e <nd6_get_next_hop_addr_or_queue+0x3a8>
    ND6_STATS_INC(nd6.cachehit);
    e888dac0:	00059717          	auipc	a4,0x59
    e888dac4:	99070713          	addi	a4,a4,-1648 # e88e6450 <lwip_stats>
    e888dac8:	15075783          	lhu	a5,336(a4)
    e888dacc:	2785                	addiw	a5,a5,1
    e888dace:	14f71823          	sh	a5,336(a4)
  destination_cache[nd6_cached_destination_index].age = 0;
    e888dad2:	0009c703          	lbu	a4,0(s3)
    e888dad6:	03000793          	li	a5,48
  return nd6_cached_neighbor_index;
    e888dada:	000b0503          	lb	a0,0(s6)
  destination_cache[nd6_cached_destination_index].age = 0;
    e888dade:	20f7140b          	mula	s0,a4,a5
    e888dae2:	02042623          	sw	zero,44(s0)
  s8_t i;

  /* Get next hop record. */
  i = nd6_get_next_hop_entry(ip6addr, netif);
  if (i < 0) {
    e888dae6:	22054563          	bltz	a0,e888dd10 <nd6_get_next_hop_addr_or_queue+0x32a>
    /* failed to get a next hop neighbor record. */
    return i;
  }

  /* Now that we have a destination record, send or queue the packet. */
  if (neighbor_cache[i].state == ND6_STALE) {
    e888daea:	03800793          	li	a5,56
    e888daee:	0005091b          	sext.w	s2,a0
    e888daf2:	8726                	mv	a4,s1
    e888daf4:	20f9170b          	mula	a4,s2,a5
    e888daf8:	03074683          	lbu	a3,48(a4)
    e888dafc:	87ba                	mv	a5,a4
    e888dafe:	470d                	li	a4,3
    e888db00:	00e69763          	bne	a3,a4,e888db0e <nd6_get_next_hop_addr_or_queue+0x128>
    /* Switch to delay state. */
    neighbor_cache[i].state = ND6_DELAY;
    e888db04:	4711                	li	a4,4
    e888db06:	02e78823          	sb	a4,48(a5)
    neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME / ND6_TMR_INTERVAL;
    e888db0a:	4715                	li	a4,5
    e888db0c:	dbd8                	sw	a4,52(a5)
  }
  /* @todo should we send or queue if PROBE? send for now, to let unicast NS pass. */
  if ((neighbor_cache[i].state == ND6_REACHABLE) ||
    e888db0e:	03800793          	li	a5,56
    e888db12:	8726                	mv	a4,s1
    e888db14:	20f9170b          	mula	a4,s2,a5
    e888db18:	03074783          	lbu	a5,48(a4)
    e888db1c:	4709                	li	a4,2
    e888db1e:	00e78863          	beq	a5,a4,e888db2e <nd6_get_next_hop_addr_or_queue+0x148>
    e888db22:	37f1                	addiw	a5,a5,-4
    e888db24:	0ff7f793          	andi	a5,a5,255
    e888db28:	4705                	li	a4,1
    e888db2a:	2ef76263          	bltu	a4,a5,e888de0e <nd6_get_next_hop_addr_or_queue+0x428>
      (neighbor_cache[i].state == ND6_DELAY) ||
      (neighbor_cache[i].state == ND6_PROBE)) {

    /* Tell the caller to send out the packet now. */
    *hwaddrp = neighbor_cache[i].lladdr;
    e888db2e:	03800793          	li	a5,56
    e888db32:	20f5148b          	mula	s1,a0,a5
    e888db36:	02048493          	addi	s1,s1,32
    e888db3a:	009ab023          	sd	s1,0(s5)
      result = ERR_OK;
    e888db3e:	4501                	li	a0,0
    e888db40:	aac1                	j	e888dd10 <nd6_get_next_hop_addr_or_queue+0x32a>
    dst_idx = nd6_find_destination_cache_entry(ip6addr);
    e888db42:	8532                	mv	a0,a2
    e888db44:	e432                	sd	a2,8(sp)
    e888db46:	d7cfe0ef          	jal	ra,e888c0c2 <nd6_find_destination_cache_entry>
    if (dst_idx >= 0) {
    e888db4a:	0005079b          	sext.w	a5,a0
    dst_idx = nd6_find_destination_cache_entry(ip6addr);
    e888db4e:	84aa                	mv	s1,a0
    if (dst_idx >= 0) {
    e888db50:	6622                	ld	a2,8(sp)
    e888db52:	0207cf63          	bltz	a5,e888db90 <nd6_get_next_hop_addr_or_queue+0x1aa>
      LWIP_ASSERT("type overflow", (size_t)dst_idx < NETIF_ADDR_IDX_MAX);
    e888db56:	07e00713          	li	a4,126
    e888db5a:	02f75863          	bge	a4,a5,e888db8a <nd6_get_next_hop_addr_or_queue+0x1a4>
    e888db5e:	02f00593          	li	a1,47
    e888db62:	00043517          	auipc	a0,0x43
    e888db66:	9a650513          	addi	a0,a0,-1626 # e88d0508 <ip6_addr_any+0x220>
    e888db6a:	80fee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888db6e:	00150693          	addi	a3,a0,1
    e888db72:	7a200613          	li	a2,1954
    e888db76:	00042597          	auipc	a1,0x42
    e888db7a:	e3a58593          	addi	a1,a1,-454 # e88cf9b0 <ip_addr_any_type+0x150>
    e888db7e:	00041517          	auipc	a0,0x41
    e888db82:	53250513          	addi	a0,a0,1330 # e88cf0b0 <kSinTable1024+0x900>
    e888db86:	f40ee0ef          	jal	ra,e887c2c6 <eLIBs_printf>
      nd6_cached_destination_index = (netif_addr_idx_t)dst_idx;
    e888db8a:	00998023          	sb	s1,0(s3)
    e888db8e:	bdd1                	j	e888da62 <nd6_get_next_hop_addr_or_queue+0x7c>
    e888db90:	00058717          	auipc	a4,0x58
    e888db94:	21070713          	addi	a4,a4,528 # e88e5da0 <destination_cache>
    if (dst_idx >= 0) {
    e888db98:	87ba                	mv	a5,a4
  for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) {
    e888db9a:	4481                	li	s1,0
    e888db9c:	46a9                	li	a3,10
    if (ip6_addr_isany(&(destination_cache[i].destination_addr))) {
    e888db9e:	438c                	lw	a1,0(a5)
    e888dba0:	e599                	bnez	a1,e888dbae <nd6_get_next_hop_addr_or_queue+0x1c8>
    e888dba2:	43cc                	lw	a1,4(a5)
    e888dba4:	e589                	bnez	a1,e888dbae <nd6_get_next_hop_addr_or_queue+0x1c8>
    e888dba6:	478c                	lw	a1,8(a5)
    e888dba8:	e199                	bnez	a1,e888dbae <nd6_get_next_hop_addr_or_queue+0x1c8>
    e888dbaa:	47cc                	lw	a1,12(a5)
    e888dbac:	c58d                	beqz	a1,e888dbd6 <nd6_get_next_hop_addr_or_queue+0x1f0>
  for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) {
    e888dbae:	2485                	addiw	s1,s1,1
    e888dbb0:	3c04a48b          	ext	s1,s1,15,0
    e888dbb4:	03078793          	addi	a5,a5,48
    e888dbb8:	fed493e3          	bne	s1,a3,e888db9e <nd6_get_next_hop_addr_or_queue+0x1b8>
  j = LWIP_ND6_NUM_DESTINATIONS - 1;
    e888dbbc:	44a5                	li	s1,9
  for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) {
    e888dbbe:	4781                	li	a5,0
    e888dbc0:	46a9                	li	a3,10
    if (destination_cache[i].age > age) {
    e888dbc2:	574c                	lw	a1,44(a4)
    e888dbc4:	03070713          	addi	a4,a4,48
    e888dbc8:	42b7948b          	mvnez	s1,a5,a1
  for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) {
    e888dbcc:	2785                	addiw	a5,a5,1
    e888dbce:	3c07a78b          	ext	a5,a5,15,0
    e888dbd2:	fed798e3          	bne	a5,a3,e888dbc2 <nd6_get_next_hop_addr_or_queue+0x1dc>
        nd6_cached_destination_index = (netif_addr_idx_t)dst_idx;
    e888dbd6:	00998023          	sb	s1,0(s3)
      ip6_addr_set(&(destination_cache[nd6_cached_destination_index].destination_addr), ip6addr);
    e888dbda:	e211                	bnez	a2,e888dbde <nd6_get_next_hop_addr_or_queue+0x1f8>
    e888dbdc:	4b01                	li	s6,0
    e888dbde:	2481                	sext.w	s1,s1
    e888dbe0:	03000793          	li	a5,48
    e888dbe4:	02f487b3          	mul	a5,s1,a5
    e888dbe8:	40f45b0b          	srw	s6,s0,a5,0
    e888dbec:	4781                	li	a5,0
    e888dbee:	c211                	beqz	a2,e888dbf2 <nd6_get_next_hop_addr_or_queue+0x20c>
    e888dbf0:	425c                	lw	a5,4(a2)
    e888dbf2:	03000713          	li	a4,48
    e888dbf6:	86a2                	mv	a3,s0
    e888dbf8:	20e4968b          	mula	a3,s1,a4
    e888dbfc:	c2dc                	sw	a5,4(a3)
    e888dbfe:	4781                	li	a5,0
    e888dc00:	c211                	beqz	a2,e888dc04 <nd6_get_next_hop_addr_or_queue+0x21e>
    e888dc02:	461c                	lw	a5,8(a2)
    e888dc04:	03000713          	li	a4,48
    e888dc08:	86a2                	mv	a3,s0
    e888dc0a:	20e4968b          	mula	a3,s1,a4
    e888dc0e:	4581                	li	a1,0
    e888dc10:	c69c                	sw	a5,8(a3)
    e888dc12:	c211                	beqz	a2,e888dc16 <nd6_get_next_hop_addr_or_queue+0x230>
    e888dc14:	464c                	lw	a1,12(a2)
    e888dc16:	03000793          	li	a5,48
    e888dc1a:	8722                	mv	a4,s0
    e888dc1c:	20f4970b          	mula	a4,s1,a5
    e888dc20:	4681                	li	a3,0
    e888dc22:	c74c                	sw	a1,12(a4)
    e888dc24:	c219                	beqz	a2,e888dc2a <nd6_get_next_hop_addr_or_queue+0x244>
    e888dc26:	01064683          	lbu	a3,16(a2)
    e888dc2a:	03000793          	li	a5,48
    e888dc2e:	8722                	mv	a4,s0
    e888dc30:	20f4970b          	mula	a4,s1,a5
      if (ip6_addr_islinklocal(ip6addr) ||
    e888dc34:	67b1                	lui	a5,0xc
    e888dc36:	0ff78793          	addi	a5,a5,255 # c0ff <memcmp-0xe87f3f01>
      ip6_addr_set(&(destination_cache[nd6_cached_destination_index].destination_addr), ip6addr);
    e888dc3a:	00d70823          	sb	a3,16(a4)
      if (ip6_addr_islinklocal(ip6addr) ||
    e888dc3e:	4208                	lw	a0,0(a2)
    e888dc40:	6721                	lui	a4,0x8
    e888dc42:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e888dc46:	8fe9                	and	a5,a5,a0
    e888dc48:	0ce78f63          	beq	a5,a4,e888dd26 <nd6_get_next_hop_addr_or_queue+0x340>
    e888dc4c:	00058797          	auipc	a5,0x58
    e888dc50:	5ac78793          	addi	a5,a5,1452 # e88e61f8 <prefix_list>
    e888dc54:	00058717          	auipc	a4,0x58
    e888dc58:	66c70713          	addi	a4,a4,1644 # e88e62c0 <ext_callback>
    if ((prefix_list[i].netif == netif) &&
    e888dc5c:	0187b803          	ld	a6,24(a5)
    e888dc60:	03091663          	bne	s2,a6,e888dc8c <nd6_get_next_hop_addr_or_queue+0x2a6>
    e888dc64:	0207a803          	lw	a6,32(a5)
    e888dc68:	02080263          	beqz	a6,e888dc8c <nd6_get_next_hop_addr_or_queue+0x2a6>
        (prefix_list[i].invalidation_timer > 0) &&
    e888dc6c:	0007a803          	lw	a6,0(a5)
    e888dc70:	00a81e63          	bne	a6,a0,e888dc8c <nd6_get_next_hop_addr_or_queue+0x2a6>
        ip6_addr_netcmp(ip6addr, &(prefix_list[i].prefix))) {
    e888dc74:	00462883          	lw	a7,4(a2)
    e888dc78:	0047a803          	lw	a6,4(a5)
    e888dc7c:	01089863          	bne	a7,a6,e888dc8c <nd6_get_next_hop_addr_or_queue+0x2a6>
    e888dc80:	01064883          	lbu	a7,16(a2)
    e888dc84:	0107c803          	lbu	a6,16(a5)
    e888dc88:	09088f63          	beq	a7,a6,e888dd26 <nd6_get_next_hop_addr_or_queue+0x340>
  for (i = 0; i < LWIP_ND6_NUM_PREFIXES; i++) {
    e888dc8c:	02878793          	addi	a5,a5,40
    e888dc90:	fce796e3          	bne	a5,a4,e888dc5c <nd6_get_next_hop_addr_or_queue+0x276>
    e888dc94:	05090713          	addi	a4,s2,80
    e888dc98:	4781                	li	a5,0
    if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
    e888dc9a:	09890313          	addi	t1,s2,152
        netif_ip6_addr_isstatic(netif, i) &&
    e888dc9e:	09c90e13          	addi	t3,s2,156
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888dca2:	488d                	li	a7,3
    if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) &&
    e888dca4:	80f3480b          	lrbu	a6,t1,a5,0
    e888dca8:	01087813          	andi	a6,a6,16
    e888dcac:	02080863          	beqz	a6,e888dcdc <nd6_get_next_hop_addr_or_queue+0x2f6>
    e888dcb0:	00090663          	beqz	s2,e888dcbc <nd6_get_next_hop_addr_or_queue+0x2d6>
        netif_ip6_addr_isstatic(netif, i) &&
    e888dcb4:	44fe480b          	lrw	a6,t3,a5,2
    e888dcb8:	02081263          	bnez	a6,e888dcdc <nd6_get_next_hop_addr_or_queue+0x2f6>
    e888dcbc:	00072803          	lw	a6,0(a4)
    e888dcc0:	00a81e63          	bne	a6,a0,e888dcdc <nd6_get_next_hop_addr_or_queue+0x2f6>
        ip6_addr_netcmp(ip6addr, netif_ip6_addr(netif, i))) {
    e888dcc4:	00462e83          	lw	t4,4(a2)
    e888dcc8:	00472803          	lw	a6,4(a4)
    e888dccc:	010e9863          	bne	t4,a6,e888dcdc <nd6_get_next_hop_addr_or_queue+0x2f6>
    e888dcd0:	01064e83          	lbu	t4,16(a2)
    e888dcd4:	01074803          	lbu	a6,16(a4)
    e888dcd8:	050e8763          	beq	t4,a6,e888dd26 <nd6_get_next_hop_addr_or_queue+0x340>
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888dcdc:	0785                	addi	a5,a5,1
    e888dcde:	0761                	addi	a4,a4,24
    e888dce0:	fd1792e3          	bne	a5,a7,e888dca4 <nd6_get_next_hop_addr_or_queue+0x2be>
        i = nd6_select_router(ip6addr, netif);
    e888dce4:	854a                	mv	a0,s2
    e888dce6:	8fbfe0ef          	jal	ra,e888c5e0 <nd6_select_router.isra.0>
        if (i < 0) {
    e888dcea:	06055363          	bgez	a0,e888dd50 <nd6_get_next_hop_addr_or_queue+0x36a>
          ip6_addr_set_any(&(destination_cache[nd6_cached_destination_index].destination_addr));
    e888dcee:	03000793          	li	a5,48
    e888dcf2:	02f484b3          	mul	s1,s1,a5
          return ERR_RTE;
    e888dcf6:	5571                	li	a0,-4
          ip6_addr_set_any(&(destination_cache[nd6_cached_destination_index].destination_addr));
    e888dcf8:	4094500b          	srw	zero,s0,s1,0
    e888dcfc:	009407b3          	add	a5,s0,s1
    e888dd00:	0007a223          	sw	zero,4(a5)
    e888dd04:	0007a423          	sw	zero,8(a5)
    e888dd08:	0007a623          	sw	zero,12(a5)
    e888dd0c:	00078823          	sb	zero,16(a5)
  }

  /* We should queue packet on this interface. */
  *hwaddrp = NULL;
  return nd6_queue_packet(i, q);
}
    e888dd10:	60e6                	ld	ra,88(sp)
    e888dd12:	6446                	ld	s0,80(sp)
    e888dd14:	64a6                	ld	s1,72(sp)
    e888dd16:	6906                	ld	s2,64(sp)
    e888dd18:	79e2                	ld	s3,56(sp)
    e888dd1a:	7a42                	ld	s4,48(sp)
    e888dd1c:	7aa2                	ld	s5,40(sp)
    e888dd1e:	7b02                	ld	s6,32(sp)
    e888dd20:	6be2                	ld	s7,24(sp)
    e888dd22:	6125                	addi	sp,sp,96
    e888dd24:	8082                	ret
        destination_cache[nd6_cached_destination_index].pmtu = netif_mtu6(netif);
    e888dd26:	03000793          	li	a5,48
    e888dd2a:	02f484b3          	mul	s1,s1,a5
    e888dd2e:	10295703          	lhu	a4,258(s2)
    e888dd32:	009407b3          	add	a5,s0,s1
    e888dd36:	02e79423          	sh	a4,40(a5)
        ip6_addr_copy(destination_cache[nd6_cached_destination_index].next_hop_addr, destination_cache[nd6_cached_destination_index].destination_addr);
    e888dd3a:	4094470b          	lrw	a4,s0,s1,0
    e888dd3e:	d38c                	sw	a1,32(a5)
    e888dd40:	02d78223          	sb	a3,36(a5)
    e888dd44:	cbd8                	sw	a4,20(a5)
    e888dd46:	43d8                	lw	a4,4(a5)
    e888dd48:	cf98                	sw	a4,24(a5)
    e888dd4a:	4798                	lw	a4,8(a5)
    e888dd4c:	cfd8                	sw	a4,28(a5)
    e888dd4e:	bb11                	j	e888da62 <nd6_get_next_hop_addr_or_queue+0x7c>
        destination_cache[nd6_cached_destination_index].pmtu = netif_mtu6(netif); /* Start with netif mtu, correct through ICMPv6 if necessary */
    e888dd50:	03000793          	li	a5,48
    e888dd54:	86a2                	mv	a3,s0
    e888dd56:	20f4968b          	mula	a3,s1,a5
    e888dd5a:	10295703          	lhu	a4,258(s2)
        ip6_addr_copy(destination_cache[nd6_cached_destination_index].next_hop_addr, default_router_list[i].neighbor_entry->next_hop_address);
    e888dd5e:	2501                	sext.w	a0,a0
    e888dd60:	0512                	slli	a0,a0,0x4
        destination_cache[nd6_cached_destination_index].pmtu = netif_mtu6(netif); /* Start with netif mtu, correct through ICMPv6 if necessary */
    e888dd62:	02e69423          	sh	a4,40(a3)
        ip6_addr_copy(destination_cache[nd6_cached_destination_index].next_hop_addr, default_router_list[i].neighbor_entry->next_hop_address);
    e888dd66:	00058717          	auipc	a4,0x58
    e888dd6a:	00a70713          	addi	a4,a4,10 # e88e5d70 <default_router_list>
    e888dd6e:	60a7470b          	lrd	a4,a4,a0,0
        destination_cache[nd6_cached_destination_index].pmtu = netif_mtu6(netif); /* Start with netif mtu, correct through ICMPv6 if necessary */
    e888dd72:	87b6                	mv	a5,a3
        ip6_addr_copy(destination_cache[nd6_cached_destination_index].next_hop_addr, default_router_list[i].neighbor_entry->next_hop_address);
    e888dd74:	4314                	lw	a3,0(a4)
    e888dd76:	cbd4                	sw	a3,20(a5)
    e888dd78:	4354                	lw	a3,4(a4)
    e888dd7a:	cf94                	sw	a3,24(a5)
    e888dd7c:	4714                	lw	a3,8(a4)
    e888dd7e:	cfd4                	sw	a3,28(a5)
    e888dd80:	4754                	lw	a3,12(a4)
    e888dd82:	d394                	sw	a3,32(a5)
    e888dd84:	01074703          	lbu	a4,16(a4)
    e888dd88:	02e78223          	sb	a4,36(a5)
    e888dd8c:	b9d9                	j	e888da62 <nd6_get_next_hop_addr_or_queue+0x7c>
    i = nd6_find_neighbor_cache_entry(&(destination_cache[nd6_cached_destination_index].next_hop_addr));
    e888dd8e:	03000b93          	li	s7,48
    e888dd92:	8522                	mv	a0,s0
    e888dd94:	2176150b          	mula	a0,a2,s7
    e888dd98:	0551                	addi	a0,a0,20
    e888dd9a:	ad6fe0ef          	jal	ra,e888c070 <nd6_find_neighbor_cache_entry>
    if (i >= 0) {
    e888dd9e:	00054563          	bltz	a0,e888dda8 <nd6_get_next_hop_addr_or_queue+0x3c2>
      nd6_cached_neighbor_index = i;
    e888dda2:	00ab0023          	sb	a0,0(s6)
    e888dda6:	b335                	j	e888dad2 <nd6_get_next_hop_addr_or_queue+0xec>
      i = nd6_new_neighbor_cache_entry();
    e888dda8:	a8dfe0ef          	jal	ra,e888c834 <nd6_new_neighbor_cache_entry>
      if (i >= 0) {
    e888ddac:	00055463          	bgez	a0,e888ddb4 <nd6_get_next_hop_addr_or_queue+0x3ce>
  err_t result = ERR_MEM;
    e888ddb0:	557d                	li	a0,-1
    e888ddb2:	bfb9                	j	e888dd10 <nd6_get_next_hop_addr_or_queue+0x32a>
      ip6_addr_copy(neighbor_cache[i].next_hop_address,
    e888ddb4:	0009c703          	lbu	a4,0(s3)
    e888ddb8:	8622                	mv	a2,s0
    e888ddba:	03800593          	li	a1,56
    e888ddbe:	2177160b          	mula	a2,a4,s7
    e888ddc2:	0005069b          	sext.w	a3,a0
        nd6_cached_neighbor_index = i;
    e888ddc6:	00ab0023          	sb	a0,0(s6)
      ip6_addr_copy(neighbor_cache[i].next_hop_address,
    e888ddca:	02b686b3          	mul	a3,a3,a1
    e888ddce:	8732                	mv	a4,a2
    e888ddd0:	4a50                	lw	a2,20(a2)
    e888ddd2:	00d487b3          	add	a5,s1,a3
    e888ddd6:	40d4d60b          	srw	a2,s1,a3,0
    e888ddda:	4f14                	lw	a3,24(a4)
      neighbor_cache[i].netif = netif;
    e888dddc:	0127bc23          	sd	s2,24(a5)
  nd6_send_ns(entry->netif, &entry->next_hop_address, flags);
    e888dde0:	4605                	li	a2,1
      ip6_addr_copy(neighbor_cache[i].next_hop_address,
    e888dde2:	c3d4                	sw	a3,4(a5)
    e888dde4:	4f54                	lw	a3,28(a4)
    e888dde6:	c794                	sw	a3,8(a5)
    e888dde8:	5314                	lw	a3,32(a4)
    e888ddea:	02474703          	lbu	a4,36(a4)
    e888ddee:	c7d4                	sw	a3,12(a5)
    e888ddf0:	00e78823          	sb	a4,16(a5)
      neighbor_cache[i].state = ND6_INCOMPLETE;
    e888ddf4:	4705                	li	a4,1
    e888ddf6:	02e79823          	sh	a4,48(a5)
      neighbor_cache[i].counter.probes_sent = 1;
    e888ddfa:	4705                	li	a4,1
    e888ddfc:	dbd8                	sw	a4,52(a5)
  nd6_send_ns(entry->netif, &entry->next_hop_address, flags);
    e888ddfe:	87a6                	mv	a5,s1
    e888de00:	20b5178b          	mula	a5,a0,a1
    e888de04:	854a                	mv	a0,s2
    e888de06:	85be                	mv	a1,a5
    e888de08:	e5efe0ef          	jal	ra,e888c466 <nd6_send_ns>
    e888de0c:	b1d9                	j	e888dad2 <nd6_get_next_hop_addr_or_queue+0xec>
  *hwaddrp = NULL;
    e888de0e:	000ab023          	sd	zero,0(s5)
  if ((neighbor_index < 0) || (neighbor_index >= LWIP_ND6_NUM_NEIGHBORS)) {
    e888de12:	47a5                	li	a5,9
    e888de14:	08a7ce63          	blt	a5,a0,e888deb0 <nd6_get_next_hop_addr_or_queue+0x4ca>
    e888de18:	87d2                	mv	a5,s4
  while (p) {
    e888de1a:	eba1                	bnez	a5,e888de6a <nd6_get_next_hop_addr_or_queue+0x484>
    pbuf_ref(p);
    e888de1c:	8552                	mv	a0,s4
    e888de1e:	047010ef          	jal	ra,e888f664 <pbuf_ref>
  if (p != NULL) {
    e888de22:	8452                	mv	s0,s4
    e888de24:	f80a06e3          	beqz	s4,e888ddb0 <nd6_get_next_hop_addr_or_queue+0x3ca>
    new_entry = (struct nd6_q_entry *)memp_malloc(MEMP_ND6_QUEUE);
    e888de28:	4535                	li	a0,13
    e888de2a:	322000ef          	jal	ra,e888e14c <memp_malloc>
    if ((new_entry == NULL) && (neighbor_cache[neighbor_index].q != NULL)) {
    e888de2e:	e11d                	bnez	a0,e888de54 <nd6_get_next_hop_addr_or_queue+0x46e>
    e888de30:	03800793          	li	a5,56
    e888de34:	8726                	mv	a4,s1
    e888de36:	20f9170b          	mula	a4,s2,a5
    e888de3a:	7708                	ld	a0,40(a4)
    e888de3c:	87ba                	mv	a5,a4
    e888de3e:	c52d                	beqz	a0,e888dea8 <nd6_get_next_hop_addr_or_queue+0x4c2>
      neighbor_cache[neighbor_index].q = r->next;
    e888de40:	6118                	ld	a4,0(a0)
    e888de42:	f798                	sd	a4,40(a5)
      r->next = NULL;
    e888de44:	00053023          	sd	zero,0(a0)
      nd6_free_q(r);
    e888de48:	accfe0ef          	jal	ra,e888c114 <nd6_free_q>
      new_entry = (struct nd6_q_entry *)memp_malloc(MEMP_ND6_QUEUE);
    e888de4c:	4535                	li	a0,13
    e888de4e:	2fe000ef          	jal	ra,e888e14c <memp_malloc>
    if (new_entry != NULL) {
    e888de52:	c939                	beqz	a0,e888dea8 <nd6_get_next_hop_addr_or_queue+0x4c2>
      if (neighbor_cache[neighbor_index].q != NULL) {
    e888de54:	03800793          	li	a5,56
    e888de58:	20f9148b          	mula	s1,s2,a5
      new_entry->next = NULL;
    e888de5c:	00053023          	sd	zero,0(a0)
      new_entry->p = p;
    e888de60:	e500                	sd	s0,8(a0)
      if (neighbor_cache[neighbor_index].q != NULL) {
    e888de62:	749c                	ld	a5,40(s1)
    e888de64:	ef95                	bnez	a5,e888dea0 <nd6_get_next_hop_addr_or_queue+0x4ba>
        neighbor_cache[neighbor_index].q = new_entry;
    e888de66:	f488                	sd	a0,40(s1)
    e888de68:	b9d9                	j	e888db3e <nd6_get_next_hop_addr_or_queue+0x158>
    if (PBUF_NEEDS_COPY(p)) {
    e888de6a:	0147c703          	lbu	a4,20(a5)
    e888de6e:	04077713          	andi	a4,a4,64
    e888de72:	e329                	bnez	a4,e888deb4 <nd6_get_next_hop_addr_or_queue+0x4ce>
    p = p->next;
    e888de74:	639c                	ld	a5,0(a5)
    e888de76:	b755                	j	e888de1a <nd6_get_next_hop_addr_or_queue+0x434>
      neighbor_cache[neighbor_index].q = r->next;
    e888de78:	611c                	ld	a5,0(a0)
    e888de7a:	02f9b423          	sd	a5,40(s3)
      r->next = NULL;
    e888de7e:	00053023          	sd	zero,0(a0)
      nd6_free_q(r);
    e888de82:	a92fe0ef          	jal	ra,e888c114 <nd6_free_q>
      p = pbuf_clone(PBUF_LINK, PBUF_RAM, q);
    e888de86:	8652                	mv	a2,s4
    e888de88:	28000593          	li	a1,640
    e888de8c:	4539                	li	a0,14
    e888de8e:	67f010ef          	jal	ra,e888fd0c <pbuf_clone>
    e888de92:	842a                	mv	s0,a0
    while ((p == NULL) && (neighbor_cache[neighbor_index].q != NULL)) {
    e888de94:	f851                	bnez	s0,e888de28 <nd6_get_next_hop_addr_or_queue+0x442>
    e888de96:	0289b503          	ld	a0,40(s3)
    e888de9a:	fd79                	bnez	a0,e888de78 <nd6_get_next_hop_addr_or_queue+0x492>
    e888de9c:	bf11                	j	e888ddb0 <nd6_get_next_hop_addr_or_queue+0x3ca>
        while (r->next != NULL) {
    e888de9e:	87ba                	mv	a5,a4
    e888dea0:	6398                	ld	a4,0(a5)
    e888dea2:	ff75                	bnez	a4,e888de9e <nd6_get_next_hop_addr_or_queue+0x4b8>
        r->next = new_entry;
    e888dea4:	e388                	sd	a0,0(a5)
    e888dea6:	b961                	j	e888db3e <nd6_get_next_hop_addr_or_queue+0x158>
      pbuf_free(p);
    e888dea8:	8522                	mv	a0,s0
    e888deaa:	3a2010ef          	jal	ra,e888f24c <pbuf_free>
    e888deae:	b709                	j	e888ddb0 <nd6_get_next_hop_addr_or_queue+0x3ca>
    return ERR_ARG;
    e888deb0:	5541                	li	a0,-16
    e888deb2:	bdb9                	j	e888dd10 <nd6_get_next_hop_addr_or_queue+0x32a>
    p = pbuf_clone(PBUF_LINK, PBUF_RAM, q);
    e888deb4:	8652                	mv	a2,s4
    e888deb6:	28000593          	li	a1,640
    e888deba:	4539                	li	a0,14
    e888debc:	651010ef          	jal	ra,e888fd0c <pbuf_clone>
    while ((p == NULL) && (neighbor_cache[neighbor_index].q != NULL)) {
    e888dec0:	89a6                	mv	s3,s1
    e888dec2:	03800793          	li	a5,56
    p = pbuf_clone(PBUF_LINK, PBUF_RAM, q);
    e888dec6:	842a                	mv	s0,a0
    while ((p == NULL) && (neighbor_cache[neighbor_index].q != NULL)) {
    e888dec8:	20f9198b          	mula	s3,s2,a5
    e888decc:	b7e1                	j	e888de94 <nd6_get_next_hop_addr_or_queue+0x4ae>

00000000e888dece <nd6_get_destination_mtu>:
 * @param netif the netif on which the packet will be sent
 * @return the Path MTU, if known, or the netif default MTU
 */
u16_t
nd6_get_destination_mtu(const ip6_addr_t *ip6addr, struct netif *netif)
{
    e888dece:	1101                	addi	sp,sp,-32
    e888ded0:	e42e                	sd	a1,8(sp)
    e888ded2:	ec06                	sd	ra,24(sp)
  s16_t i;

  i = nd6_find_destination_cache_entry(ip6addr);
    e888ded4:	9eefe0ef          	jal	ra,e888c0c2 <nd6_find_destination_cache_entry>
  if (i >= 0) {
    e888ded8:	2501                	sext.w	a0,a0
    e888deda:	65a2                	ld	a1,8(sp)
    e888dedc:	00054d63          	bltz	a0,e888def6 <nd6_get_destination_mtu+0x28>
    if (destination_cache[i].pmtu > 0) {
    e888dee0:	00058797          	auipc	a5,0x58
    e888dee4:	ec078793          	addi	a5,a5,-320 # e88e5da0 <destination_cache>
    e888dee8:	03000713          	li	a4,48
    e888deec:	20e5178b          	mula	a5,a0,a4
    e888def0:	0287d503          	lhu	a0,40(a5)
    e888def4:	e511                	bnez	a0,e888df00 <nd6_get_destination_mtu+0x32>

  if (netif != NULL) {
    return netif_mtu6(netif);
  }

  return 1280; /* Minimum MTU */
    e888def6:	50000513          	li	a0,1280
  if (netif != NULL) {
    e888defa:	c199                	beqz	a1,e888df00 <nd6_get_destination_mtu+0x32>
    return netif_mtu6(netif);
    e888defc:	1025d503          	lhu	a0,258(a1)
}
    e888df00:	60e2                	ld	ra,24(sp)
    e888df02:	6105                	addi	sp,sp,32
    e888df04:	8082                	ret

00000000e888df06 <nd6_reachability_hint>:
{
  s8_t i;
  s16_t dst_idx;

  /* Find destination in cache. */
  if (ip6_addr_cmp(ip6addr, &(destination_cache[nd6_cached_destination_index].destination_addr))) {
    e888df06:	00058797          	auipc	a5,0x58
    e888df0a:	0967c783          	lbu	a5,150(a5) # e88e5f9c <nd6_cached_destination_index>
    e888df0e:	03000693          	li	a3,48
    e888df12:	02d786b3          	mul	a3,a5,a3
    e888df16:	00058617          	auipc	a2,0x58
    e888df1a:	e8a60613          	addi	a2,a2,-374 # e88e5da0 <destination_cache>
{
    e888df1e:	1141                	addi	sp,sp,-16
    e888df20:	e022                	sd	s0,0(sp)
    e888df22:	e406                	sd	ra,8(sp)
  if (ip6_addr_cmp(ip6addr, &(destination_cache[nd6_cached_destination_index].destination_addr))) {
    e888df24:	410c                	lw	a1,0(a0)
    e888df26:	8432                	mv	s0,a2
    e888df28:	00d60733          	add	a4,a2,a3
    e888df2c:	40d6468b          	lrw	a3,a2,a3,0
    e888df30:	0ed59163          	bne	a1,a3,e888e012 <nd6_reachability_hint+0x10c>
    e888df34:	4150                	lw	a2,4(a0)
    e888df36:	4354                	lw	a3,4(a4)
    e888df38:	0cd61d63          	bne	a2,a3,e888e012 <nd6_reachability_hint+0x10c>
    e888df3c:	4510                	lw	a2,8(a0)
    e888df3e:	4714                	lw	a3,8(a4)
    e888df40:	0cd61963          	bne	a2,a3,e888e012 <nd6_reachability_hint+0x10c>
    e888df44:	4550                	lw	a2,12(a0)
    e888df46:	4754                	lw	a3,12(a4)
    e888df48:	0cd61563          	bne	a2,a3,e888e012 <nd6_reachability_hint+0x10c>
    e888df4c:	01054683          	lbu	a3,16(a0)
    e888df50:	01074703          	lbu	a4,16(a4)
    e888df54:	0ae69f63          	bne	a3,a4,e888e012 <nd6_reachability_hint+0x10c>
    dst_idx = nd6_cached_destination_index;
    ND6_STATS_INC(nd6.cachehit);
    e888df58:	00058717          	auipc	a4,0x58
    e888df5c:	4f870713          	addi	a4,a4,1272 # e88e6450 <lwip_stats>
    dst_idx = nd6_cached_destination_index;
    e888df60:	3c07a50b          	ext	a0,a5,15,0
    ND6_STATS_INC(nd6.cachehit);
    e888df64:	15075783          	lhu	a5,336(a4)
    e888df68:	2785                	addiw	a5,a5,1
    e888df6a:	14f71823          	sh	a5,336(a4)
  if (dst_idx < 0) {
    return;
  }

  /* Find next hop neighbor in cache. */
  if (ip6_addr_cmp(&(destination_cache[dst_idx].next_hop_addr), &(neighbor_cache[nd6_cached_neighbor_index].next_hop_address))) {
    e888df6e:	0005079b          	sext.w	a5,a0
    e888df72:	03000693          	li	a3,48
    e888df76:	8622                	mv	a2,s0
    e888df78:	20d7960b          	mula	a2,a5,a3
    e888df7c:	00058717          	auipc	a4,0x58
    e888df80:	02174703          	lbu	a4,33(a4) # e88e5f9d <nd6_cached_neighbor_index>
    e888df84:	03800593          	li	a1,56
    e888df88:	00058797          	auipc	a5,0x58
    e888df8c:	04078793          	addi	a5,a5,64 # e88e5fc8 <neighbor_cache>
    e888df90:	02b705b3          	mul	a1,a4,a1
    e888df94:	86b2                	mv	a3,a2
    e888df96:	0146a803          	lw	a6,20(a3)
    e888df9a:	00b78633          	add	a2,a5,a1
    e888df9e:	40b7c58b          	lrw	a1,a5,a1,0
    e888dfa2:	08b81263          	bne	a6,a1,e888e026 <nd6_reachability_hint+0x120>
    e888dfa6:	0186a803          	lw	a6,24(a3)
    e888dfaa:	424c                	lw	a1,4(a2)
    e888dfac:	06b81d63          	bne	a6,a1,e888e026 <nd6_reachability_hint+0x120>
    e888dfb0:	01c6a803          	lw	a6,28(a3)
    e888dfb4:	460c                	lw	a1,8(a2)
    e888dfb6:	06b81863          	bne	a6,a1,e888e026 <nd6_reachability_hint+0x120>
    e888dfba:	0206a803          	lw	a6,32(a3)
    e888dfbe:	464c                	lw	a1,12(a2)
    e888dfc0:	06b81363          	bne	a6,a1,e888e026 <nd6_reachability_hint+0x120>
    e888dfc4:	0246c583          	lbu	a1,36(a3)
    e888dfc8:	01064683          	lbu	a3,16(a2)
    e888dfcc:	04d59d63          	bne	a1,a3,e888e026 <nd6_reachability_hint+0x120>
    i = nd6_cached_neighbor_index;
    ND6_STATS_INC(nd6.cachehit);
    e888dfd0:	00058697          	auipc	a3,0x58
    e888dfd4:	48068693          	addi	a3,a3,1152 # e88e6450 <lwip_stats>
    i = nd6_cached_neighbor_index;
    e888dfd8:	1c07250b          	ext	a0,a4,7,0
    ND6_STATS_INC(nd6.cachehit);
    e888dfdc:	1506d703          	lhu	a4,336(a3)
    e888dfe0:	2705                	addiw	a4,a4,1
    e888dfe2:	14e69823          	sh	a4,336(a3)
  } else {
    i = nd6_find_neighbor_cache_entry(&(destination_cache[dst_idx].next_hop_addr));
  }
  if (i < 0) {
    e888dfe6:	02054c63          	bltz	a0,e888e01e <nd6_reachability_hint+0x118>
    return;
  }

  /* For safety: don't set as reachable if we don't have a LL address yet. Misuse protection. */
  if (neighbor_cache[i].state == ND6_INCOMPLETE || neighbor_cache[i].state == ND6_NO_ENTRY) {
    e888dfea:	03800713          	li	a4,56
    e888dfee:	2501                	sext.w	a0,a0
    e888dff0:	20e5178b          	mula	a5,a0,a4
    e888dff4:	4705                	li	a4,1
    e888dff6:	0307c683          	lbu	a3,48(a5)
    e888dffa:	02d77263          	bgeu	a4,a3,e888e01e <nd6_reachability_hint+0x118>
    return;
  }

  /* Set reachability state. */
  neighbor_cache[i].state = ND6_REACHABLE;
    e888dffe:	4709                	li	a4,2
    e888e000:	02e78823          	sb	a4,48(a5)
  neighbor_cache[i].counter.reachable_time = reachable_time;
    e888e004:	00047717          	auipc	a4,0x47
    e888e008:	57870713          	addi	a4,a4,1400 # e88d557c <reachable_time>
    e888e00c:	4318                	lw	a4,0(a4)
    e888e00e:	dbd8                	sw	a4,52(a5)
    e888e010:	a039                	j	e888e01e <nd6_reachability_hint+0x118>
    dst_idx = nd6_find_destination_cache_entry(ip6addr);
    e888e012:	8b0fe0ef          	jal	ra,e888c0c2 <nd6_find_destination_cache_entry>
  if (dst_idx < 0) {
    e888e016:	02051793          	slli	a5,a0,0x20
    e888e01a:	f407dae3          	bgez	a5,e888df6e <nd6_reachability_hint+0x68>
}
    e888e01e:	60a2                	ld	ra,8(sp)
    e888e020:	6402                	ld	s0,0(sp)
    e888e022:	0141                	addi	sp,sp,16
    e888e024:	8082                	ret
    i = nd6_find_neighbor_cache_entry(&(destination_cache[dst_idx].next_hop_addr));
    e888e026:	03000713          	li	a4,48
    e888e02a:	20e5140b          	mula	s0,a0,a4
    e888e02e:	01440513          	addi	a0,s0,20
    e888e032:	83efe0ef          	jal	ra,e888c070 <nd6_find_neighbor_cache_entry>
    e888e036:	00058797          	auipc	a5,0x58
    e888e03a:	f9278793          	addi	a5,a5,-110 # e88e5fc8 <neighbor_cache>
    e888e03e:	b765                	j	e888dfe6 <nd6_reachability_hint+0xe0>

00000000e888e040 <nd6_adjust_mld_membership>:
void
nd6_adjust_mld_membership(struct netif *netif, s8_t addr_idx, u8_t new_state)
{
  u8_t old_state, old_member, new_member;

  old_state = netif_ip6_addr_state(netif, addr_idx);
    e888e040:	00b507b3          	add	a5,a0,a1
    e888e044:	0987c783          	lbu	a5,152(a5)
    e888e048:	882e                	mv	a6,a1

  /* Determine whether we were, and should be, a member of the solicited-node
   * multicast group for this address. For tentative addresses, the group is
   * not joined until the address enters the TENTATIVE_1 (or VALID) state. */
  old_member = (old_state != IP6_ADDR_INVALID && old_state != IP6_ADDR_DUPLICATED && old_state != IP6_ADDR_TENTATIVE);
    e888e04a:	4701                	li	a4,0
    e888e04c:	0f77f693          	andi	a3,a5,247
    e888e050:	c689                	beqz	a3,e888e05a <nd6_adjust_mld_membership+0x1a>
    e888e052:	fc078713          	addi	a4,a5,-64
    e888e056:	00e03733          	snez	a4,a4
  new_member = (new_state != IP6_ADDR_INVALID && new_state != IP6_ADDR_DUPLICATED && new_state != IP6_ADDR_TENTATIVE);
    e888e05a:	0f767693          	andi	a3,a2,247
  old_member = (old_state != IP6_ADDR_INVALID && old_state != IP6_ADDR_DUPLICATED && old_state != IP6_ADDR_TENTATIVE);
    e888e05e:	0ff77713          	andi	a4,a4,255
  new_member = (new_state != IP6_ADDR_INVALID && new_state != IP6_ADDR_DUPLICATED && new_state != IP6_ADDR_TENTATIVE);
    e888e062:	4781                	li	a5,0
    e888e064:	c689                	beqz	a3,e888e06e <nd6_adjust_mld_membership+0x2e>
    e888e066:	fc060613          	addi	a2,a2,-64
    e888e06a:	00c037b3          	snez	a5,a2
    e888e06e:	0ff7f613          	andi	a2,a5,255

  if (old_member != new_member) {
    e888e072:	02c70e63          	beq	a4,a2,e888e0ae <nd6_adjust_mld_membership+0x6e>
    ip6_addr_set_solicitednode(&multicast_address, netif_ip6_addr(netif, addr_idx)->addr[3]);
    e888e076:	2ff00793          	li	a5,767
    e888e07a:	00058597          	auipc	a1,0x58
    e888e07e:	f0e58593          	addi	a1,a1,-242 # e88e5f88 <multicast_address>
    e888e082:	e19c                	sd	a5,0(a1)
    e888e084:	010007b7          	lui	a5,0x1000
    e888e088:	c59c                	sw	a5,8(a1)
    e888e08a:	872a                	mv	a4,a0
    e888e08c:	47e1                	li	a5,24
    e888e08e:	20f8170b          	mula	a4,a6,a5
    e888e092:	4f7c                	lw	a5,92(a4)
    e888e094:	0ff7e793          	ori	a5,a5,255
    e888e098:	c5dc                	sw	a5,12(a1)
    ip6_addr_assign_zone(&multicast_address, IP6_MULTICAST, netif);
    e888e09a:	10e54783          	lbu	a5,270(a0)
    e888e09e:	2785                	addiw	a5,a5,1
    e888e0a0:	00f58823          	sb	a5,16(a1)

    if (new_member) {
    e888e0a4:	c219                	beqz	a2,e888e0aa <nd6_adjust_mld_membership+0x6a>
      mld6_joingroup_netif(netif, &multicast_address);
    e888e0a6:	c57fd06f          	j	e888bcfc <mld6_joingroup_netif>
    } else {
      mld6_leavegroup_netif(netif, &multicast_address);
    e888e0aa:	de1fd06f          	j	e888be8a <mld6_leavegroup_netif>
    }
  }
}
    e888e0ae:	8082                	ret

00000000e888e0b0 <nd6_restart_netif>:
void
nd6_restart_netif(struct netif *netif)
{
#if LWIP_IPV6_SEND_ROUTER_SOLICIT
  /* Send Router Solicitation messages (see RFC 4861, ch. 6.3.7). */
  netif->rs_count = LWIP_ND6_MAX_MULTICAST_SOLICIT;
    e888e0b0:	478d                	li	a5,3
    e888e0b2:	10f50823          	sb	a5,272(a0)
#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */
}
    e888e0b6:	8082                	ret

00000000e888e0b8 <mem_init>:
 * C library malloc().
 */
void
mem_init(void)
{
}
    e888e0b8:	8082                	ret

00000000e888e0ba <mem_trim>:
void *
mem_trim(void *mem, mem_size_t size)
{
  LWIP_UNUSED_ARG(size);
  return mem;
}
    e888e0ba:	8082                	ret

00000000e888e0bc <mem_malloc>:

static inline void *calloc(size_t nitems, size_t size)
{
    void *p;
    int len = nitems*size;
    p = malloc(len);
    e888e0bc:	0005061b          	sext.w	a2,a0
 *
 * Note that the returned value must always be aligned (as defined by MEM_ALIGNMENT).
 */
void *
mem_malloc(mem_size_t size)
{
    e888e0c0:	1101                	addi	sp,sp,-32
    e888e0c2:	8532                	mv	a0,a2
    e888e0c4:	ec06                	sd	ra,24(sp)
    e888e0c6:	e822                	sd	s0,16(sp)
    e888e0c8:	e432                	sd	a2,8(sp)
    e888e0ca:	f84ed0ef          	jal	ra,e887b84e <my_malloc>
    e888e0ce:	842a                	mv	s0,a0
    memset(p,0,len);
    e888e0d0:	6622                	ld	a2,8(sp)
    e888e0d2:	4581                	li	a1,0
    e888e0d4:	ac0ee0ef          	jal	ra,e887c394 <eLIBs_memset>
    ret = (u8_t *)ret + MEM_LIBC_STATSHELPER_SIZE;
    MEM_STATS_INC_USED_LOCKED(used, size);
#endif
  }
  return ret;
}
    e888e0d8:	8522                	mv	a0,s0
    e888e0da:	60e2                	ld	ra,24(sp)
    e888e0dc:	6442                	ld	s0,16(sp)
    e888e0de:	6105                	addi	sp,sp,32
    e888e0e0:	8082                	ret

00000000e888e0e2 <mem_free>:
 *
 * @param rmem is the pointer as returned by a previous call to mem_malloc()
 */
void
mem_free(void *rmem)
{
    e888e0e2:	1141                	addi	sp,sp,-16
    e888e0e4:	e022                	sd	s0,0(sp)
    e888e0e6:	e406                	sd	ra,8(sp)
    e888e0e8:	842a                	mv	s0,a0
  LWIP_ASSERT("rmem != NULL", (rmem != NULL));
    e888e0ea:	e51d                	bnez	a0,e888e118 <mem_free+0x36>
    e888e0ec:	02f00593          	li	a1,47
    e888e0f0:	00042517          	auipc	a0,0x42
    e888e0f4:	4f850513          	addi	a0,a0,1272 # e88d05e8 <ip6_addr_any+0x300>
    e888e0f8:	a80ee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e0fc:	00150693          	addi	a3,a0,1
    e888e100:	0e600613          	li	a2,230
    e888e104:	00042597          	auipc	a1,0x42
    e888e108:	56c58593          	addi	a1,a1,1388 # e88d0670 <ip6_addr_any+0x388>
    e888e10c:	00041517          	auipc	a0,0x41
    e888e110:	fa450513          	addi	a0,a0,-92 # e88cf0b0 <kSinTable1024+0x900>
    e888e114:	9b2ee0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("rmem == MEM_ALIGN(rmem)", (rmem == LWIP_MEM_ALIGN(rmem)));
#if LWIP_STATS && MEM_STATS
  rmem = (u8_t *)rmem - MEM_LIBC_STATSHELPER_SIZE;
  MEM_STATS_DEC_USED_LOCKED(used, *(mem_size_t *)rmem);
#endif
  mem_clib_free(rmem);
    e888e118:	8522                	mv	a0,s0
}
    e888e11a:	6402                	ld	s0,0(sp)
    e888e11c:	60a2                	ld	ra,8(sp)
    e888e11e:	0141                	addi	sp,sp,16
  mem_clib_free(rmem);
    e888e120:	9e0ee06f          	j	e887c300 <eLIBs_free>

00000000e888e124 <mem_calloc>:
    p = malloc(len);
    e888e124:	02b5063b          	mulw	a2,a0,a1
#endif /* MEM_USE_POOLS */

#if MEM_LIBC_MALLOC && (!LWIP_STATS || !MEM_STATS)
void *
mem_calloc(mem_size_t count, mem_size_t size)
{
    e888e128:	1101                	addi	sp,sp,-32
    e888e12a:	ec06                	sd	ra,24(sp)
    e888e12c:	e822                	sd	s0,16(sp)
    e888e12e:	8532                	mv	a0,a2
    e888e130:	e432                	sd	a2,8(sp)
    e888e132:	f1ced0ef          	jal	ra,e887b84e <my_malloc>
    e888e136:	842a                	mv	s0,a0
    memset(p,0,len);
    e888e138:	6622                	ld	a2,8(sp)
    e888e13a:	4581                	li	a1,0
    e888e13c:	a58ee0ef          	jal	ra,e887c394 <eLIBs_memset>
  return mem_clib_calloc(count, size);
}
    e888e140:	8522                	mv	a0,s0
    e888e142:	60e2                	ld	ra,24(sp)
    e888e144:	6442                	ld	s0,16(sp)
    e888e146:	6105                	addi	sp,sp,32
    e888e148:	8082                	ret

00000000e888e14a <memp_init>:

#if MEMP_OVERFLOW_CHECK >= 2
  /* check everything a first time to see if it worked */
  memp_overflow_check_all();
#endif /* MEMP_OVERFLOW_CHECK >= 2 */
}
    e888e14a:	8082                	ret

00000000e888e14c <memp_malloc>:
#else
memp_malloc_fn(memp_t type, const char *file, const int line)
#endif
{
  void *memp;
  LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;);
    e888e14c:	47c5                	li	a5,17
    e888e14e:	00a7ec63          	bltu	a5,a0,e888e166 <memp_malloc+0x1a>
#if MEMP_OVERFLOW_CHECK >= 2
  memp_overflow_check_all();
#endif /* MEMP_OVERFLOW_CHECK >= 2 */

#if !MEMP_OVERFLOW_CHECK
  memp = do_memp_malloc_pool(memp_pools[type]);
    e888e152:	00042797          	auipc	a5,0x42
    e888e156:	69e78793          	addi	a5,a5,1694 # e88d07f0 <memp_pools>
    e888e15a:	66a7c78b          	lrd	a5,a5,a0,3
  memp = (struct memp *)mem_malloc(MEMP_SIZE + MEMP_ALIGN_SIZE(desc->size));
    e888e15e:	0007d503          	lhu	a0,0(a5)
    e888e162:	f5bff06f          	j	e888e0bc <mem_malloc>
{
    e888e166:	1141                	addi	sp,sp,-16
  LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;);
    e888e168:	02f00593          	li	a1,47
    e888e16c:	00042517          	auipc	a0,0x42
    e888e170:	5e450513          	addi	a0,a0,1508 # e88d0750 <memp_UDP_PCB+0x48>
{
    e888e174:	e406                	sd	ra,8(sp)
  LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;);
    e888e176:	a02ee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e17a:	00150693          	addi	a3,a0,1
    e888e17e:	15700613          	li	a2,343
    e888e182:	00042597          	auipc	a1,0x42
    e888e186:	5ae58593          	addi	a1,a1,1454 # e88d0730 <memp_UDP_PCB+0x28>
    e888e18a:	00041517          	auipc	a0,0x41
    e888e18e:	f2650513          	addi	a0,a0,-218 # e88cf0b0 <kSinTable1024+0x900>
    e888e192:	934ee0ef          	jal	ra,e887c2c6 <eLIBs_printf>
#else
  memp = do_memp_malloc_pool_fn(memp_pools[type], file, line);
#endif

  return memp;
}
    e888e196:	60a2                	ld	ra,8(sp)
    e888e198:	4501                	li	a0,0
    e888e19a:	0141                	addi	sp,sp,16
    e888e19c:	8082                	ret

00000000e888e19e <memp_free>:
{
#ifdef LWIP_HOOK_MEMP_AVAILABLE
  struct memp *old_first;
#endif

  LWIP_ERROR("memp_free: type < MEMP_MAX", (type < MEMP_MAX), return;);
    e888e19e:	47c5                	li	a5,17
    e888e1a0:	02a7fc63          	bgeu	a5,a0,e888e1d8 <memp_free+0x3a>
{
    e888e1a4:	1141                	addi	sp,sp,-16
  LWIP_ERROR("memp_free: type < MEMP_MAX", (type < MEMP_MAX), return;);
    e888e1a6:	02f00593          	li	a1,47
    e888e1aa:	00042517          	auipc	a0,0x42
    e888e1ae:	5a650513          	addi	a0,a0,1446 # e88d0750 <memp_UDP_PCB+0x48>
{
    e888e1b2:	e406                	sd	ra,8(sp)
  LWIP_ERROR("memp_free: type < MEMP_MAX", (type < MEMP_MAX), return;);
    e888e1b4:	9c4ee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e1b8:	00150693          	addi	a3,a0,1
#ifdef LWIP_HOOK_MEMP_AVAILABLE
  if (old_first == NULL) {
    LWIP_HOOK_MEMP_AVAILABLE(type);
  }
#endif
}
    e888e1bc:	60a2                	ld	ra,8(sp)
  LWIP_ERROR("memp_free: type < MEMP_MAX", (type < MEMP_MAX), return;);
    e888e1be:	1aa00613          	li	a2,426
    e888e1c2:	00042597          	auipc	a1,0x42
    e888e1c6:	54e58593          	addi	a1,a1,1358 # e88d0710 <memp_UDP_PCB+0x8>
    e888e1ca:	00041517          	auipc	a0,0x41
    e888e1ce:	ee650513          	addi	a0,a0,-282 # e88cf0b0 <kSinTable1024+0x900>
}
    e888e1d2:	0141                	addi	sp,sp,16
  LWIP_ERROR("memp_free: type < MEMP_MAX", (type < MEMP_MAX), return;);
    e888e1d4:	8f2ee06f          	j	e887c2c6 <eLIBs_printf>
  if (mem == NULL) {
    e888e1d8:	c581                	beqz	a1,e888e1e0 <memp_free+0x42>
  mem_free(memp);
    e888e1da:	852e                	mv	a0,a1
    e888e1dc:	f07ff06f          	j	e888e0e2 <mem_free>
    e888e1e0:	8082                	ret

00000000e888e1e2 <netif_null_output_ip6>:
  LWIP_UNUSED_ARG(netif);
  LWIP_UNUSED_ARG(p);
  LWIP_UNUSED_ARG(ipaddr);

  return ERR_IF;
}
    e888e1e2:	5551                	li	a0,-12
    e888e1e4:	8082                	ret

00000000e888e1e6 <netif_loopif_init>:
{
    e888e1e6:	1141                	addi	sp,sp,-16
    e888e1e8:	e022                	sd	s0,0(sp)
    e888e1ea:	e406                	sd	ra,8(sp)
    e888e1ec:	842a                	mv	s0,a0
  LWIP_ASSERT("netif_loopif_init: invalid netif", netif != NULL);
    e888e1ee:	e51d                	bnez	a0,e888e21c <netif_loopif_init+0x36>
    e888e1f0:	02f00593          	li	a1,47
    e888e1f4:	00043517          	auipc	a0,0x43
    e888e1f8:	87450513          	addi	a0,a0,-1932 # e88d0a68 <memp_pools+0x278>
    e888e1fc:	97cee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e200:	00150693          	addi	a3,a0,1
    e888e204:	09900613          	li	a2,153
    e888e208:	00043597          	auipc	a1,0x43
    e888e20c:	8e858593          	addi	a1,a1,-1816 # e88d0af0 <memp_pools+0x300>
    e888e210:	00041517          	auipc	a0,0x41
    e888e214:	ea050513          	addi	a0,a0,-352 # e88cf0b0 <kSinTable1024+0x900>
    e888e218:	8aeee0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  MIB2_INIT_NETIF(netif, snmp_ifType_softwareLoopback, 0);
    e888e21c:	47e1                	li	a5,24
    e888e21e:	10f408a3          	sb	a5,273(s0)
  netif->name[0] = 'l';
    e888e222:	679d                	lui	a5,0x7
    e888e224:	f6c7879b          	addiw	a5,a5,-148
    e888e228:	10f41623          	sh	a5,268(s0)
  netif->output = netif_loop_output_ipv4;
    e888e22c:	00000797          	auipc	a5,0x0
    e888e230:	53478793          	addi	a5,a5,1332 # e888e760 <netif_loop_output_ipv4>
    e888e234:	e07c                	sd	a5,192(s0)
  netif->output_ip6 = netif_loop_output_ipv6;
    e888e236:	00000797          	auipc	a5,0x0
    e888e23a:	52e78793          	addi	a5,a5,1326 # e888e764 <netif_loop_output_ipv6>
  MIB2_INIT_NETIF(netif, snmp_ifType_softwareLoopback, 0);
    e888e23e:	10042a23          	sw	zero,276(s0)
    e888e242:	10043c23          	sd	zero,280(s0)
    e888e246:	12043023          	sd	zero,288(s0)
    e888e24a:	12043423          	sd	zero,296(s0)
    e888e24e:	12043823          	sd	zero,304(s0)
    e888e252:	12043c23          	sd	zero,312(s0)
    e888e256:	14043023          	sd	zero,320(s0)
  netif->output_ip6 = netif_loop_output_ipv6;
    e888e25a:	e87c                	sd	a5,208(s0)
}
    e888e25c:	60a2                	ld	ra,8(sp)
    e888e25e:	6402                	ld	s0,0(sp)
    e888e260:	4501                	li	a0,0
    e888e262:	0141                	addi	sp,sp,16
    e888e264:	8082                	ret

00000000e888e266 <netif_do_ip_addr_changed>:
{
    e888e266:	1101                	addi	sp,sp,-32
    e888e268:	ec06                	sd	ra,24(sp)
    e888e26a:	e422                	sd	s0,8(sp)
    e888e26c:	e826                	sd	s1,16(sp)
    e888e26e:	842a                	mv	s0,a0
    e888e270:	84ae                	mv	s1,a1
  tcp_netif_ip_addr_changed(old_addr, new_addr);
    e888e272:	60e030ef          	jal	ra,e8891880 <tcp_netif_ip_addr_changed>
  udp_netif_ip_addr_changed(old_addr, new_addr);
    e888e276:	85a6                	mv	a1,s1
    e888e278:	8522                	mv	a0,s0
    e888e27a:	556090ef          	jal	ra,e88977d0 <udp_netif_ip_addr_changed>
  raw_netif_ip_addr_changed(old_addr, new_addr);
    e888e27e:	8522                	mv	a0,s0
}
    e888e280:	6422                	ld	s0,8(sp)
    e888e282:	60e2                	ld	ra,24(sp)
  raw_netif_ip_addr_changed(old_addr, new_addr);
    e888e284:	85a6                	mv	a1,s1
}
    e888e286:	64c2                	ld	s1,16(sp)
    e888e288:	6105                	addi	sp,sp,32
  raw_netif_ip_addr_changed(old_addr, new_addr);
    e888e28a:	2760206f          	j	e8890500 <raw_netif_ip_addr_changed>

00000000e888e28e <netif_poll>:
{
    e888e28e:	715d                	addi	sp,sp,-80
    e888e290:	e0a2                	sd	s0,64(sp)
    e888e292:	e486                	sd	ra,72(sp)
    e888e294:	fc26                	sd	s1,56(sp)
    e888e296:	f84a                	sd	s2,48(sp)
    e888e298:	f44e                	sd	s3,40(sp)
    e888e29a:	f052                	sd	s4,32(sp)
    e888e29c:	ec56                	sd	s5,24(sp)
    e888e29e:	e85a                	sd	s6,16(sp)
    e888e2a0:	e45e                	sd	s7,8(sp)
    e888e2a2:	e062                	sd	s8,0(sp)
    e888e2a4:	842a                	mv	s0,a0
  LWIP_ASSERT("netif_poll: invalid netif", netif != NULL);
    e888e2a6:	e51d                	bnez	a0,e888e2d4 <netif_poll+0x46>
    e888e2a8:	02f00593          	li	a1,47
    e888e2ac:	00042517          	auipc	a0,0x42
    e888e2b0:	7bc50513          	addi	a0,a0,1980 # e88d0a68 <memp_pools+0x278>
    e888e2b4:	8c4ee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e2b8:	00150693          	addi	a3,a0,1
    e888e2bc:	4bb00613          	li	a2,1211
    e888e2c0:	00043597          	auipc	a1,0x43
    e888e2c4:	85858593          	addi	a1,a1,-1960 # e88d0b18 <memp_pools+0x328>
    e888e2c8:	00041517          	auipc	a0,0x41
    e888e2cc:	de850513          	addi	a0,a0,-536 # e88cf0b0 <kSinTable1024+0x900>
    e888e2d0:	ff7ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
      LWIP_ASSERT("bogus pbuf: len != tot_len but next == NULL!", in_end->next != NULL);
    e888e2d4:	00042a17          	auipc	s4,0x42
    e888e2d8:	794a0a13          	addi	s4,s4,1940 # e88d0a68 <memp_pools+0x278>
    e888e2dc:	00043b97          	auipc	s7,0x43
    e888e2e0:	85cb8b93          	addi	s7,s7,-1956 # e88d0b38 <memp_pools+0x348>
    e888e2e4:	00041a97          	auipc	s5,0x41
    e888e2e8:	dcca8a93          	addi	s5,s5,-564 # e88cf0b0 <kSinTable1024+0x900>
    LINK_STATS_INC(link.recv);
    e888e2ec:	00058b17          	auipc	s6,0x58
    e888e2f0:	164b0b13          	addi	s6,s6,356 # e88e6450 <lwip_stats>
      LWIP_ASSERT("should not be null since first != last!", netif->loop_first != NULL);
    e888e2f4:	00043c17          	auipc	s8,0x43
    e888e2f8:	874c0c13          	addi	s8,s8,-1932 # e88d0b68 <memp_pools+0x378>
    MIB2_STATS_NETIF_ADD(stats_if, ifinoctets, in->tot_len);
    e888e2fc:	00058997          	auipc	s3,0x58
    e888e300:	fcc98993          	addi	s3,s3,-52 # e88e62c8 <loop_netif>
  while (netif->loop_first != NULL) {
    e888e304:	15843903          	ld	s2,344(s0)
    e888e308:	08091d63          	bnez	s2,e888e3a2 <netif_poll+0x114>
}
    e888e30c:	60a6                	ld	ra,72(sp)
    e888e30e:	6406                	ld	s0,64(sp)
    e888e310:	74e2                	ld	s1,56(sp)
    e888e312:	7942                	ld	s2,48(sp)
    e888e314:	79a2                	ld	s3,40(sp)
    e888e316:	7a02                	ld	s4,32(sp)
    e888e318:	6ae2                	ld	s5,24(sp)
    e888e31a:	6b42                	ld	s6,16(sp)
    e888e31c:	6ba2                	ld	s7,8(sp)
    e888e31e:	6c02                	ld	s8,0(sp)
    e888e320:	6161                	addi	sp,sp,80
    e888e322:	8082                	ret
      LWIP_ASSERT("bogus pbuf: len != tot_len but next == NULL!", in_end->next != NULL);
    e888e324:	609c                	ld	a5,0(s1)
    e888e326:	ef91                	bnez	a5,e888e342 <netif_poll+0xb4>
    e888e328:	02f00593          	li	a1,47
    e888e32c:	8552                	mv	a0,s4
    e888e32e:	84aee0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e332:	00150693          	addi	a3,a0,1
    e888e336:	4c700613          	li	a2,1223
    e888e33a:	85de                	mv	a1,s7
    e888e33c:	8556                	mv	a0,s5
    e888e33e:	f89ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
      in_end = in_end->next;
    e888e342:	6084                	ld	s1,0(s1)
    while (in_end->len != in_end->tot_len) {
    e888e344:	0124d703          	lhu	a4,18(s1)
    e888e348:	0104d783          	lhu	a5,16(s1)
    e888e34c:	fcf71ce3          	bne	a4,a5,e888e324 <netif_poll+0x96>
    if (in_end == netif->loop_last) {
    e888e350:	16043783          	ld	a5,352(s0)
    e888e354:	04979963          	bne	a5,s1,e888e3a6 <netif_poll+0x118>
      netif->loop_first = netif->loop_last = NULL;
    e888e358:	16043023          	sd	zero,352(s0)
    e888e35c:	14043c23          	sd	zero,344(s0)
    in_end->next = NULL;
    e888e360:	0004b023          	sd	zero,0(s1)
    in->if_idx = netif_get_index(netif);
    e888e364:	10e44783          	lbu	a5,270(s0)
    MIB2_STATS_NETIF_ADD(stats_if, ifinoctets, in->tot_len);
    e888e368:	01095703          	lhu	a4,16(s2)
    if (ip_input(in, netif) != ERR_OK) {
    e888e36c:	85a2                	mv	a1,s0
    in->if_idx = netif_get_index(netif);
    e888e36e:	2785                	addiw	a5,a5,1
    e888e370:	00f90ba3          	sb	a5,23(s2)
    LINK_STATS_INC(link.recv);
    e888e374:	002b5783          	lhu	a5,2(s6)
    if (ip_input(in, netif) != ERR_OK) {
    e888e378:	854a                	mv	a0,s2
    LINK_STATS_INC(link.recv);
    e888e37a:	2785                	addiw	a5,a5,1
    e888e37c:	00fb1123          	sh	a5,2(s6)
    MIB2_STATS_NETIF_ADD(stats_if, ifinoctets, in->tot_len);
    e888e380:	11c9a783          	lw	a5,284(s3)
    e888e384:	9fb9                	addw	a5,a5,a4
    e888e386:	10f9ae23          	sw	a5,284(s3)
    MIB2_STATS_NETIF_INC(stats_if, ifinucastpkts);
    e888e38a:	1209a783          	lw	a5,288(s3)
    e888e38e:	2785                	addiw	a5,a5,1
    e888e390:	12f9a023          	sw	a5,288(s3)
    if (ip_input(in, netif) != ERR_OK) {
    e888e394:	e66f90ef          	jal	ra,e88879fa <ip_input>
    e888e398:	d535                	beqz	a0,e888e304 <netif_poll+0x76>
      pbuf_free(in);
    e888e39a:	854a                	mv	a0,s2
    e888e39c:	6b1000ef          	jal	ra,e888f24c <pbuf_free>
    e888e3a0:	bf91                	j	e888e2f4 <netif_poll+0x66>
    e888e3a2:	84ca                	mv	s1,s2
    e888e3a4:	b745                	j	e888e344 <netif_poll+0xb6>
      netif->loop_first = in_end->next;
    e888e3a6:	609c                	ld	a5,0(s1)
    e888e3a8:	14f43c23          	sd	a5,344(s0)
      LWIP_ASSERT("should not be null since first != last!", netif->loop_first != NULL);
    e888e3ac:	fbd5                	bnez	a5,e888e360 <netif_poll+0xd2>
    e888e3ae:	02f00593          	li	a1,47
    e888e3b2:	8552                	mv	a0,s4
    e888e3b4:	fc5ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e3b8:	00150693          	addi	a3,a0,1
    e888e3bc:	4db00613          	li	a2,1243
    e888e3c0:	85e2                	mv	a1,s8
    e888e3c2:	8556                	mv	a0,s5
    e888e3c4:	f03ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888e3c8:	bf61                	j	e888e360 <netif_poll+0xd2>

00000000e888e3ca <netif_do_set_netmask>:
  if (ip4_addr_cmp(netmask, netif_ip4_netmask(netif)) == 0) {
    e888e3ca:	4198                	lw	a4,0(a1)
    e888e3cc:	511c                	lw	a5,32(a0)
    e888e3ce:	04f70663          	beq	a4,a5,e888e41a <netif_do_set_netmask+0x50>
    ip_addr_copy(*old_nm, *netif_ip_netmask4(netif));
    e888e3d2:	03454783          	lbu	a5,52(a0)
    e888e3d6:	4719                	li	a4,6
    e888e3d8:	00f60a23          	sb	a5,20(a2)
    e888e3dc:	02e79663          	bne	a5,a4,e888e408 <netif_do_set_netmask+0x3e>
    e888e3e0:	511c                	lw	a5,32(a0)
    e888e3e2:	c21c                	sw	a5,0(a2)
    e888e3e4:	515c                	lw	a5,36(a0)
    e888e3e6:	c25c                	sw	a5,4(a2)
    e888e3e8:	551c                	lw	a5,40(a0)
    e888e3ea:	c61c                	sw	a5,8(a2)
    e888e3ec:	555c                	lw	a5,44(a0)
    e888e3ee:	c65c                	sw	a5,12(a2)
    e888e3f0:	03054783          	lbu	a5,48(a0)
    e888e3f4:	00f60823          	sb	a5,16(a2)
    ip4_addr_set(ip_2_ip4(&netif->netmask), netmask);
    e888e3f8:	4781                	li	a5,0
    e888e3fa:	c191                	beqz	a1,e888e3fe <netif_do_set_netmask+0x34>
    e888e3fc:	419c                	lw	a5,0(a1)
    e888e3fe:	d11c                	sw	a5,32(a0)
    IP_SET_TYPE_VAL(netif->netmask, IPADDR_TYPE_V4);
    e888e400:	02050a23          	sb	zero,52(a0)
    e888e404:	4505                	li	a0,1
    e888e406:	8082                	ret
    ip_addr_copy(*old_nm, *netif_ip_netmask4(netif));
    e888e408:	511c                	lw	a5,32(a0)
    e888e40a:	00062223          	sw	zero,4(a2)
    e888e40e:	00063423          	sd	zero,8(a2)
    e888e412:	c21c                	sw	a5,0(a2)
    e888e414:	00060823          	sb	zero,16(a2)
    e888e418:	b7c5                	j	e888e3f8 <netif_do_set_netmask+0x2e>
  return 0; /* netmask unchanged */
    e888e41a:	4501                	li	a0,0
}
    e888e41c:	8082                	ret

00000000e888e41e <netif_do_set_gw>:
  if (ip4_addr_cmp(gw, netif_ip4_gw(netif)) == 0) {
    e888e41e:	4198                	lw	a4,0(a1)
    e888e420:	5d1c                	lw	a5,56(a0)
    e888e422:	04f70663          	beq	a4,a5,e888e46e <netif_do_set_gw+0x50>
    ip_addr_copy(*old_gw, *netif_ip_gw4(netif));
    e888e426:	04c54783          	lbu	a5,76(a0)
    e888e42a:	4719                	li	a4,6
    e888e42c:	00f60a23          	sb	a5,20(a2)
    e888e430:	02e79663          	bne	a5,a4,e888e45c <netif_do_set_gw+0x3e>
    e888e434:	5d1c                	lw	a5,56(a0)
    e888e436:	c21c                	sw	a5,0(a2)
    e888e438:	5d5c                	lw	a5,60(a0)
    e888e43a:	c25c                	sw	a5,4(a2)
    e888e43c:	413c                	lw	a5,64(a0)
    e888e43e:	c61c                	sw	a5,8(a2)
    e888e440:	417c                	lw	a5,68(a0)
    e888e442:	c65c                	sw	a5,12(a2)
    e888e444:	04854783          	lbu	a5,72(a0)
    e888e448:	00f60823          	sb	a5,16(a2)
    ip4_addr_set(ip_2_ip4(&netif->gw), gw);
    e888e44c:	4781                	li	a5,0
    e888e44e:	c191                	beqz	a1,e888e452 <netif_do_set_gw+0x34>
    e888e450:	419c                	lw	a5,0(a1)
    e888e452:	dd1c                	sw	a5,56(a0)
    IP_SET_TYPE_VAL(netif->gw, IPADDR_TYPE_V4);
    e888e454:	04050623          	sb	zero,76(a0)
    e888e458:	4505                	li	a0,1
    e888e45a:	8082                	ret
    ip_addr_copy(*old_gw, *netif_ip_gw4(netif));
    e888e45c:	5d1c                	lw	a5,56(a0)
    e888e45e:	00062223          	sw	zero,4(a2)
    e888e462:	00063423          	sd	zero,8(a2)
    e888e466:	c21c                	sw	a5,0(a2)
    e888e468:	00060823          	sb	zero,16(a2)
    e888e46c:	b7c5                	j	e888e44c <netif_do_set_gw+0x2e>
  return 0; /* gateway unchanged */
    e888e46e:	4501                	li	a0,0
}
    e888e470:	8082                	ret

00000000e888e472 <netif_issue_reports>:
{
    e888e472:	1101                	addi	sp,sp,-32
    e888e474:	e422                	sd	s0,8(sp)
    e888e476:	e826                	sd	s1,16(sp)
    e888e478:	ec06                	sd	ra,24(sp)
    e888e47a:	842a                	mv	s0,a0
    e888e47c:	84ae                	mv	s1,a1
  LWIP_ASSERT("netif_issue_reports: invalid netif", netif != NULL);
    e888e47e:	e51d                	bnez	a0,e888e4ac <netif_issue_reports+0x3a>
    e888e480:	02f00593          	li	a1,47
    e888e484:	00042517          	auipc	a0,0x42
    e888e488:	5e450513          	addi	a0,a0,1508 # e88d0a68 <memp_pools+0x278>
    e888e48c:	eeded0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e490:	00150693          	addi	a3,a0,1
    e888e494:	36d00613          	li	a2,877
    e888e498:	00042597          	auipc	a1,0x42
    e888e49c:	53058593          	addi	a1,a1,1328 # e88d09c8 <memp_pools+0x1d8>
    e888e4a0:	00041517          	auipc	a0,0x41
    e888e4a4:	c1050513          	addi	a0,a0,-1008 # e88cf0b0 <kSinTable1024+0x900>
    e888e4a8:	e1fed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (!(netif->flags & NETIF_FLAG_LINK_UP) ||
    e888e4ac:	10b44783          	lbu	a5,267(s0)
    e888e4b0:	4715                	li	a4,5
    e888e4b2:	0057f693          	andi	a3,a5,5
    e888e4b6:	02e69f63          	bne	a3,a4,e888e4f4 <netif_issue_reports+0x82>
  if ((report_type & NETIF_REPORT_TYPE_IPV4) &&
    e888e4ba:	0014f713          	andi	a4,s1,1
    e888e4be:	c315                	beqz	a4,e888e4e2 <netif_issue_reports+0x70>
    e888e4c0:	4418                	lw	a4,8(s0)
    e888e4c2:	c305                	beqz	a4,e888e4e2 <netif_issue_reports+0x70>
    if (netif->flags & (NETIF_FLAG_ETHARP)) {
    e888e4c4:	8ba1                	andi	a5,a5,8
    e888e4c6:	c791                	beqz	a5,e888e4d2 <netif_issue_reports+0x60>
      etharp_gratuitous(netif);
    e888e4c8:	00840593          	addi	a1,s0,8
    e888e4cc:	8522                	mv	a0,s0
    e888e4ce:	b33f90ef          	jal	ra,e8888000 <etharp_request>
    if (netif->flags & NETIF_FLAG_IGMP) {
    e888e4d2:	10b44783          	lbu	a5,267(s0)
    e888e4d6:	0207f793          	andi	a5,a5,32
    e888e4da:	c781                	beqz	a5,e888e4e2 <netif_issue_reports+0x70>
      igmp_report_groups(netif);
    e888e4dc:	8522                	mv	a0,s0
    e888e4de:	a0cfa0ef          	jal	ra,e88886ea <igmp_report_groups>
  if (report_type & NETIF_REPORT_TYPE_IPV6) {
    e888e4e2:	8889                	andi	s1,s1,2
    e888e4e4:	c881                	beqz	s1,e888e4f4 <netif_issue_reports+0x82>
    mld6_report_groups(netif);
    e888e4e6:	8522                	mv	a0,s0
}
    e888e4e8:	6422                	ld	s0,8(sp)
    e888e4ea:	60e2                	ld	ra,24(sp)
    e888e4ec:	64c2                	ld	s1,16(sp)
    e888e4ee:	6105                	addi	sp,sp,32
    mld6_report_groups(netif);
    e888e4f0:	e42fd06f          	j	e888bb32 <mld6_report_groups>
}
    e888e4f4:	60e2                	ld	ra,24(sp)
    e888e4f6:	6422                	ld	s0,8(sp)
    e888e4f8:	64c2                	ld	s1,16(sp)
    e888e4fa:	6105                	addi	sp,sp,32
    e888e4fc:	8082                	ret

00000000e888e4fe <netif_do_set_ipaddr>:
{
    e888e4fe:	7139                	addi	sp,sp,-64
    e888e500:	fc91540b          	sdd	s0,s1,(sp),2,4
    e888e504:	f84a                	sd	s2,48(sp)
    e888e506:	fc06                	sd	ra,56(sp)
    e888e508:	842a                	mv	s0,a0
    e888e50a:	892e                	mv	s2,a1
    e888e50c:	84b2                	mv	s1,a2
  LWIP_ASSERT("invalid pointer", ipaddr != NULL);
    e888e50e:	e59d                	bnez	a1,e888e53c <netif_do_set_ipaddr+0x3e>
    e888e510:	02f00593          	li	a1,47
    e888e514:	00042517          	auipc	a0,0x42
    e888e518:	55450513          	addi	a0,a0,1364 # e88d0a68 <memp_pools+0x278>
    e888e51c:	e5ded0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e520:	00150693          	addi	a3,a0,1
    e888e524:	1cb00613          	li	a2,459
    e888e528:	00044597          	auipc	a1,0x44
    e888e52c:	69058593          	addi	a1,a1,1680 # e88d2bb8 <ethzero+0x78>
    e888e530:	00041517          	auipc	a0,0x41
    e888e534:	b8050513          	addi	a0,a0,-1152 # e88cf0b0 <kSinTable1024+0x900>
    e888e538:	d8fed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (ip4_addr_cmp(ipaddr, netif_ip4_addr(netif)) == 0) {
    e888e53c:	00092783          	lw	a5,0(s2)
    e888e540:	4418                	lw	a4,8(s0)
    e888e542:	00e79463          	bne	a5,a4,e888e54a <netif_do_set_ipaddr+0x4c>
  return 0; /* address unchanged */
    e888e546:	4501                	li	a0,0
    e888e548:	a891                	j	e888e59c <netif_do_set_ipaddr+0x9e>
    *ip_2_ip4(&new_addr) = *ipaddr;
    e888e54a:	c43e                	sw	a5,8(sp)
    ip_addr_copy(*old_addr, *netif_ip_addr4(netif));
    e888e54c:	01c44783          	lbu	a5,28(s0)
    IP_SET_TYPE_VAL(new_addr, IPADDR_TYPE_V4);
    e888e550:	00010e23          	sb	zero,28(sp)
    ip_addr_copy(*old_addr, *netif_ip_addr4(netif));
    e888e554:	00f48a23          	sb	a5,20(s1)
    e888e558:	01c44703          	lbu	a4,28(s0)
    e888e55c:	4799                	li	a5,6
    e888e55e:	04f71563          	bne	a4,a5,e888e5a8 <netif_do_set_ipaddr+0xaa>
    e888e562:	441c                	lw	a5,8(s0)
    e888e564:	c09c                	sw	a5,0(s1)
    e888e566:	445c                	lw	a5,12(s0)
    e888e568:	c0dc                	sw	a5,4(s1)
    e888e56a:	481c                	lw	a5,16(s0)
    e888e56c:	c49c                	sw	a5,8(s1)
    e888e56e:	485c                	lw	a5,20(s0)
    e888e570:	c4dc                	sw	a5,12(s1)
    e888e572:	01844783          	lbu	a5,24(s0)
    e888e576:	00f48823          	sb	a5,16(s1)
    netif_do_ip_addr_changed(old_addr, &new_addr);
    e888e57a:	002c                	addi	a1,sp,8
    e888e57c:	8526                	mv	a0,s1
    e888e57e:	ce9ff0ef          	jal	ra,e888e266 <netif_do_ip_addr_changed>
    ip4_addr_set(ip_2_ip4(&netif->ip_addr), ipaddr);
    e888e582:	4781                	li	a5,0
    e888e584:	00090463          	beqz	s2,e888e58c <netif_do_set_ipaddr+0x8e>
    e888e588:	00092783          	lw	a5,0(s2)
    netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4);
    e888e58c:	8522                	mv	a0,s0
    ip4_addr_set(ip_2_ip4(&netif->ip_addr), ipaddr);
    e888e58e:	c41c                	sw	a5,8(s0)
    IP_SET_TYPE_VAL(netif->ip_addr, IPADDR_TYPE_V4);
    e888e590:	00040e23          	sb	zero,28(s0)
    netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4);
    e888e594:	4585                	li	a1,1
    e888e596:	eddff0ef          	jal	ra,e888e472 <netif_issue_reports>
    return 1; /* address changed */
    e888e59a:	4505                	li	a0,1
}
    e888e59c:	70e2                	ld	ra,56(sp)
    e888e59e:	fc91440b          	ldd	s0,s1,(sp),2,4
    e888e5a2:	7942                	ld	s2,48(sp)
    e888e5a4:	6121                	addi	sp,sp,64
    e888e5a6:	8082                	ret
    ip_addr_copy(*old_addr, *netif_ip_addr4(netif));
    e888e5a8:	441c                	lw	a5,8(s0)
    e888e5aa:	0004a223          	sw	zero,4(s1)
    e888e5ae:	0004b423          	sd	zero,8(s1)
    e888e5b2:	c09c                	sw	a5,0(s1)
    e888e5b4:	00048823          	sb	zero,16(s1)
    e888e5b8:	b7c9                	j	e888e57a <netif_do_set_ipaddr+0x7c>

00000000e888e5ba <netif_null_output_ip4>:
    e888e5ba:	5551                	li	a0,-12
    e888e5bc:	8082                	ret

00000000e888e5be <netif_loop_output>:
{
    e888e5be:	7179                	addi	sp,sp,-48
    e888e5c0:	f891540b          	sdd	s0,s1,(sp),0,4
    e888e5c4:	fb31590b          	sdd	s2,s3,(sp),1,4
    e888e5c8:	f406                	sd	ra,40(sp)
    e888e5ca:	f052                	sd	s4,32(sp)
    e888e5cc:	842a                	mv	s0,a0
    e888e5ce:	892e                	mv	s2,a1
  LWIP_ASSERT("netif_loop_output: invalid netif", netif != NULL);
    e888e5d0:	e51d                	bnez	a0,e888e5fe <netif_loop_output+0x40>
    e888e5d2:	02f00593          	li	a1,47
    e888e5d6:	00042517          	auipc	a0,0x42
    e888e5da:	49250513          	addi	a0,a0,1170 # e88d0a68 <memp_pools+0x278>
    e888e5de:	d9bed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e5e2:	00150693          	addi	a3,a0,1
    e888e5e6:	44b00613          	li	a2,1099
    e888e5ea:	00042597          	auipc	a1,0x42
    e888e5ee:	40658593          	addi	a1,a1,1030 # e88d09f0 <memp_pools+0x200>
    e888e5f2:	00041517          	auipc	a0,0x41
    e888e5f6:	abe50513          	addi	a0,a0,-1346 # e88cf0b0 <kSinTable1024+0x900>
    e888e5fa:	ccded0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("netif_loop_output: invalid pbuf", p != NULL);
    e888e5fe:	02091863          	bnez	s2,e888e62e <netif_loop_output+0x70>
    e888e602:	02f00593          	li	a1,47
    e888e606:	00042517          	auipc	a0,0x42
    e888e60a:	46250513          	addi	a0,a0,1122 # e88d0a68 <memp_pools+0x278>
    e888e60e:	d6bed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e612:	00150693          	addi	a3,a0,1
    e888e616:	44c00613          	li	a2,1100
    e888e61a:	00042597          	auipc	a1,0x42
    e888e61e:	3fe58593          	addi	a1,a1,1022 # e88d0a18 <memp_pools+0x228>
    e888e622:	00041517          	auipc	a0,0x41
    e888e626:	a8e50513          	addi	a0,a0,-1394 # e88cf0b0 <kSinTable1024+0x900>
    e888e62a:	c9ded0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM);
    e888e62e:	01095583          	lhu	a1,16(s2)
    e888e632:	28000613          	li	a2,640
    e888e636:	4539                	li	a0,14
    e888e638:	559000ef          	jal	ra,e888f390 <pbuf_alloc>
    e888e63c:	84aa                	mv	s1,a0
  if (r == NULL) {
    e888e63e:	e131                	bnez	a0,e888e682 <netif_loop_output+0xc4>
    LINK_STATS_INC(link.memerr);
    e888e640:	00058797          	auipc	a5,0x58
    e888e644:	e1078793          	addi	a5,a5,-496 # e88e6450 <lwip_stats>
    e888e648:	00c7d703          	lhu	a4,12(a5)
    return ERR_MEM;
    e888e64c:	5a7d                	li	s4,-1
    LINK_STATS_INC(link.memerr);
    e888e64e:	2705                	addiw	a4,a4,1
    e888e650:	00e79623          	sh	a4,12(a5)
    LINK_STATS_INC(link.drop);
    e888e654:	0067d703          	lhu	a4,6(a5)
    e888e658:	2705                	addiw	a4,a4,1
    e888e65a:	00e79323          	sh	a4,6(a5)
    MIB2_STATS_NETIF_INC(stats_if, ifoutdiscards);
    e888e65e:	00058717          	auipc	a4,0x58
    e888e662:	c6a70713          	addi	a4,a4,-918 # e88e62c8 <loop_netif>
    e888e666:	14072783          	lw	a5,320(a4)
    e888e66a:	2785                	addiw	a5,a5,1
    e888e66c:	14f72023          	sw	a5,320(a4)
}
    e888e670:	70a2                	ld	ra,40(sp)
    e888e672:	f891440b          	ldd	s0,s1,(sp),0,4
    e888e676:	8552                	mv	a0,s4
    e888e678:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888e67c:	7a02                	ld	s4,32(sp)
    e888e67e:	6145                	addi	sp,sp,48
    e888e680:	8082                	ret
  if ((err = pbuf_copy(r, p)) != ERR_OK) {
    e888e682:	85ca                	mv	a1,s2
    e888e684:	116010ef          	jal	ra,e888f79a <pbuf_copy>
    e888e688:	8a2a                	mv	s4,a0
    e888e68a:	89a6                	mv	s3,s1
    e888e68c:	cd0d                	beqz	a0,e888e6c6 <netif_loop_output+0x108>
    pbuf_free(r);
    e888e68e:	8526                	mv	a0,s1
    e888e690:	3bd000ef          	jal	ra,e888f24c <pbuf_free>
    LINK_STATS_INC(link.memerr);
    e888e694:	00058797          	auipc	a5,0x58
    e888e698:	dbc78793          	addi	a5,a5,-580 # e88e6450 <lwip_stats>
    e888e69c:	00c7d703          	lhu	a4,12(a5)
    e888e6a0:	2705                	addiw	a4,a4,1
    e888e6a2:	00e79623          	sh	a4,12(a5)
    LINK_STATS_INC(link.drop);
    e888e6a6:	0067d703          	lhu	a4,6(a5)
    e888e6aa:	2705                	addiw	a4,a4,1
    e888e6ac:	00e79323          	sh	a4,6(a5)
    MIB2_STATS_NETIF_INC(stats_if, ifoutdiscards);
    e888e6b0:	00058717          	auipc	a4,0x58
    e888e6b4:	c1870713          	addi	a4,a4,-1000 # e88e62c8 <loop_netif>
    e888e6b8:	14072783          	lw	a5,320(a4)
    e888e6bc:	2785                	addiw	a5,a5,1
    e888e6be:	14f72023          	sw	a5,320(a4)
    return err;
    e888e6c2:	b77d                	j	e888e670 <netif_loop_output+0xb2>
    e888e6c4:	89be                	mv	s3,a5
  for (last = r; last->next != NULL; last = last->next) {
    e888e6c6:	0009b783          	ld	a5,0(s3)
    e888e6ca:	ffed                	bnez	a5,e888e6c4 <netif_loop_output+0x106>
  if (netif->loop_first != NULL) {
    e888e6cc:	15843783          	ld	a5,344(s0)
    e888e6d0:	c3d1                	beqz	a5,e888e754 <netif_loop_output+0x196>
    LWIP_ASSERT("if first != NULL, last must also be != NULL", netif->loop_last != NULL);
    e888e6d2:	16043783          	ld	a5,352(s0)
    e888e6d6:	e79d                	bnez	a5,e888e704 <netif_loop_output+0x146>
    e888e6d8:	02f00593          	li	a1,47
    e888e6dc:	00042517          	auipc	a0,0x42
    e888e6e0:	38c50513          	addi	a0,a0,908 # e88d0a68 <memp_pools+0x278>
    e888e6e4:	c95ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e6e8:	00150693          	addi	a3,a0,1
    e888e6ec:	47700613          	li	a2,1143
    e888e6f0:	00042597          	auipc	a1,0x42
    e888e6f4:	34858593          	addi	a1,a1,840 # e88d0a38 <memp_pools+0x248>
    e888e6f8:	00041517          	auipc	a0,0x41
    e888e6fc:	9b850513          	addi	a0,a0,-1608 # e88cf0b0 <kSinTable1024+0x900>
    e888e700:	bc7ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    netif->loop_last->next = r;
    e888e704:	16043783          	ld	a5,352(s0)
  u8_t schedule_poll = 0;
    e888e708:	4681                	li	a3,0
    netif->loop_last->next = r;
    e888e70a:	e384                	sd	s1,0(a5)
    netif->loop_last = last;
    e888e70c:	17343023          	sd	s3,352(s0)
  LINK_STATS_INC(link.xmit);
    e888e710:	00058717          	auipc	a4,0x58
    e888e714:	d4070713          	addi	a4,a4,-704 # e88e6450 <lwip_stats>
    e888e718:	00075783          	lhu	a5,0(a4)
  MIB2_STATS_NETIF_ADD(stats_if, ifoutoctets, p->tot_len);
    e888e71c:	01095603          	lhu	a2,16(s2)
  LINK_STATS_INC(link.xmit);
    e888e720:	2785                	addiw	a5,a5,1
    e888e722:	00f71023          	sh	a5,0(a4)
  MIB2_STATS_NETIF_ADD(stats_if, ifoutoctets, p->tot_len);
    e888e726:	00058797          	auipc	a5,0x58
    e888e72a:	ba278793          	addi	a5,a5,-1118 # e88e62c8 <loop_netif>
    e888e72e:	1347a703          	lw	a4,308(a5)
    e888e732:	9f31                	addw	a4,a4,a2
    e888e734:	12e7aa23          	sw	a4,308(a5)
  MIB2_STATS_NETIF_INC(stats_if, ifoutucastpkts);
    e888e738:	1387a703          	lw	a4,312(a5)
    e888e73c:	2705                	addiw	a4,a4,1
    e888e73e:	12e7ac23          	sw	a4,312(a5)
  if (schedule_poll) {
    e888e742:	d69d                	beqz	a3,e888e670 <netif_loop_output+0xb2>
    tcpip_try_callback((tcpip_callback_fn)netif_poll, netif);
    e888e744:	85a2                	mv	a1,s0
    e888e746:	00000517          	auipc	a0,0x0
    e888e74a:	b4850513          	addi	a0,a0,-1208 # e888e28e <netif_poll>
    e888e74e:	e34f80ef          	jal	ra,e8886d82 <tcpip_try_callback>
    e888e752:	bf39                	j	e888e670 <netif_loop_output+0xb2>
    netif->loop_first = r;
    e888e754:	14943c23          	sd	s1,344(s0)
    netif->loop_last = last;
    e888e758:	17343023          	sd	s3,352(s0)
    schedule_poll = 1;
    e888e75c:	4685                	li	a3,1
    e888e75e:	bf4d                	j	e888e710 <netif_loop_output+0x152>

00000000e888e760 <netif_loop_output_ipv4>:
  return netif_loop_output(netif, p);
    e888e760:	e5fff06f          	j	e888e5be <netif_loop_output>

00000000e888e764 <netif_loop_output_ipv6>:
    e888e764:	e5bff06f          	j	e888e5be <netif_loop_output>

00000000e888e768 <netif_get_ip6_addr_match>:
{
    e888e768:	1101                	addi	sp,sp,-32
    e888e76a:	e422                	sd	s0,8(sp)
    e888e76c:	e826                	sd	s1,16(sp)
    e888e76e:	ec06                	sd	ra,24(sp)
    e888e770:	84aa                	mv	s1,a0
    e888e772:	842e                	mv	s0,a1
  LWIP_ASSERT("netif_get_ip6_addr_match: invalid netif", netif != NULL);
    e888e774:	e51d                	bnez	a0,e888e7a2 <netif_get_ip6_addr_match+0x3a>
    e888e776:	02f00593          	li	a1,47
    e888e77a:	00042517          	auipc	a0,0x42
    e888e77e:	2ee50513          	addi	a0,a0,750 # e88d0a68 <memp_pools+0x278>
    e888e782:	bf7ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e786:	00150693          	addi	a3,a0,1
    e888e78a:	5be00613          	li	a2,1470
    e888e78e:	00042597          	auipc	a1,0x42
    e888e792:	1ba58593          	addi	a1,a1,442 # e88d0948 <memp_pools+0x158>
    e888e796:	00041517          	auipc	a0,0x41
    e888e79a:	91a50513          	addi	a0,a0,-1766 # e88cf0b0 <kSinTable1024+0x900>
    e888e79e:	b29ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("netif_get_ip6_addr_match: invalid ip6addr", ip6addr != NULL);
    e888e7a2:	e41d                	bnez	s0,e888e7d0 <netif_get_ip6_addr_match+0x68>
    e888e7a4:	02f00593          	li	a1,47
    e888e7a8:	00042517          	auipc	a0,0x42
    e888e7ac:	2c050513          	addi	a0,a0,704 # e88d0a68 <memp_pools+0x278>
    e888e7b0:	bc9ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e7b4:	00150693          	addi	a3,a0,1
    e888e7b8:	5bf00613          	li	a2,1471
    e888e7bc:	00042597          	auipc	a1,0x42
    e888e7c0:	1b458593          	addi	a1,a1,436 # e88d0970 <memp_pools+0x180>
    e888e7c4:	00041517          	auipc	a0,0x41
    e888e7c8:	8ec50513          	addi	a0,a0,-1812 # e88cf0b0 <kSinTable1024+0x900>
    e888e7cc:	afbed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (ip6_addr_has_zone(ip6addr) && !ip6_addr_test_zone(ip6addr, netif)) {
    e888e7d0:	01044703          	lbu	a4,16(s0)
    e888e7d4:	cb09                	beqz	a4,e888e7e6 <netif_get_ip6_addr_match+0x7e>
    e888e7d6:	10e4c783          	lbu	a5,270(s1)
    return -1; /* wrong zone, no match */
    e888e7da:	557d                	li	a0,-1
  if (ip6_addr_has_zone(ip6addr) && !ip6_addr_test_zone(ip6addr, netif)) {
    e888e7dc:	2785                	addiw	a5,a5,1
    e888e7de:	0ff7f793          	andi	a5,a5,255
    e888e7e2:	04f71263          	bne	a4,a5,e888e826 <netif_get_ip6_addr_match+0xbe>
    e888e7e6:	05048793          	addi	a5,s1,80
{
    e888e7ea:	4701                	li	a4,0
    if (!ip6_addr_isinvalid(netif_ip6_addr_state(netif, i)) &&
    e888e7ec:	09848493          	addi	s1,s1,152
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888e7f0:	468d                	li	a3,3
    if (!ip6_addr_isinvalid(netif_ip6_addr_state(netif, i)) &&
    e888e7f2:	80e4c60b          	lrbu	a2,s1,a4,0
    e888e7f6:	1c07250b          	ext	a0,a4,7,0
    e888e7fa:	c20d                	beqz	a2,e888e81c <netif_get_ip6_addr_match+0xb4>
    e888e7fc:	438c                	lw	a1,0(a5)
    e888e7fe:	4010                	lw	a2,0(s0)
    e888e800:	00c59e63          	bne	a1,a2,e888e81c <netif_get_ip6_addr_match+0xb4>
        ip6_addr_cmp_zoneless(netif_ip6_addr(netif, i), ip6addr)) {
    e888e804:	43cc                	lw	a1,4(a5)
    e888e806:	4050                	lw	a2,4(s0)
    e888e808:	00c59a63          	bne	a1,a2,e888e81c <netif_get_ip6_addr_match+0xb4>
    e888e80c:	478c                	lw	a1,8(a5)
    e888e80e:	4410                	lw	a2,8(s0)
    e888e810:	00c59663          	bne	a1,a2,e888e81c <netif_get_ip6_addr_match+0xb4>
    e888e814:	47cc                	lw	a1,12(a5)
    e888e816:	4450                	lw	a2,12(s0)
    e888e818:	00c58763          	beq	a1,a2,e888e826 <netif_get_ip6_addr_match+0xbe>
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888e81c:	0705                	addi	a4,a4,1
    e888e81e:	07e1                	addi	a5,a5,24
    e888e820:	fcd719e3          	bne	a4,a3,e888e7f2 <netif_get_ip6_addr_match+0x8a>
    return -1; /* wrong zone, no match */
    e888e824:	557d                	li	a0,-1
}
    e888e826:	60e2                	ld	ra,24(sp)
    e888e828:	6422                	ld	s0,8(sp)
    e888e82a:	64c2                	ld	s1,16(sp)
    e888e82c:	6105                	addi	sp,sp,32
    e888e82e:	8082                	ret

00000000e888e830 <netif_get_by_index>:
        return netif; /* found! */
      }
    }
  }

  return NULL;
    e888e830:	4781                	li	a5,0
  if (idx != NETIF_NO_INDEX) {
    e888e832:	c909                	beqz	a0,e888e844 <netif_get_by_index+0x14>
    NETIF_FOREACH(netif) {
    e888e834:	00058797          	auipc	a5,0x58
    e888e838:	c0478793          	addi	a5,a5,-1020 # e88e6438 <netif_list>
    e888e83c:	639c                	ld	a5,0(a5)
      if (idx == netif_get_index(netif)) {
    e888e83e:	0ff57513          	andi	a0,a0,255
    NETIF_FOREACH(netif) {
    e888e842:	e399                	bnez	a5,e888e848 <netif_get_by_index+0x18>
}
    e888e844:	853e                	mv	a0,a5
    e888e846:	8082                	ret
      if (idx == netif_get_index(netif)) {
    e888e848:	10e7c703          	lbu	a4,270(a5)
    e888e84c:	2705                	addiw	a4,a4,1
    e888e84e:	0ff77713          	andi	a4,a4,255
    e888e852:	fea709e3          	beq	a4,a0,e888e844 <netif_get_by_index+0x14>
    NETIF_FOREACH(netif) {
    e888e856:	639c                	ld	a5,0(a5)
    e888e858:	b7ed                	j	e888e842 <netif_get_by_index+0x12>

00000000e888e85a <netif_index_to_name>:
{
    e888e85a:	1101                	addi	sp,sp,-32
    e888e85c:	e422                	sd	s0,8(sp)
    e888e85e:	e826                	sd	s1,16(sp)
    e888e860:	ec06                	sd	ra,24(sp)
    e888e862:	84aa                	mv	s1,a0
    e888e864:	842e                	mv	s0,a1
  struct netif *netif = netif_get_by_index(idx);
    e888e866:	fcbff0ef          	jal	ra,e888e830 <netif_get_by_index>
  if (netif != NULL) {
    e888e86a:	c10d                	beqz	a0,e888e88c <netif_index_to_name+0x32>
    name[0] = netif->name[0];
    e888e86c:	10c54783          	lbu	a5,268(a0)
    lwip_itoa(&name[2], NETIF_NAMESIZE - 2, netif_index_to_num(idx));
    e888e870:	fff4861b          	addiw	a2,s1,-1
    e888e874:	4591                	li	a1,4
    name[0] = netif->name[0];
    e888e876:	00f40023          	sb	a5,0(s0)
    name[1] = netif->name[1];
    e888e87a:	10d54783          	lbu	a5,269(a0)
    lwip_itoa(&name[2], NETIF_NAMESIZE - 2, netif_index_to_num(idx));
    e888e87e:	00240513          	addi	a0,s0,2
    name[1] = netif->name[1];
    e888e882:	00f400a3          	sb	a5,1(s0)
    lwip_itoa(&name[2], NETIF_NAMESIZE - 2, netif_index_to_num(idx));
    e888e886:	eaef80ef          	jal	ra,e8886f34 <lwip_itoa>
    return name;
    e888e88a:	8522                	mv	a0,s0
}
    e888e88c:	60e2                	ld	ra,24(sp)
    e888e88e:	6422                	ld	s0,8(sp)
    e888e890:	64c2                	ld	s1,16(sp)
    e888e892:	6105                	addi	sp,sp,32
    e888e894:	8082                	ret

00000000e888e896 <netif_find>:
  struct netif *netif;
  u8_t num;

  LWIP_ASSERT_CORE_LOCKED();

  if (name == NULL) {
    e888e896:	e119                	bnez	a0,e888e89c <netif_find+0x6>
    return NULL;
    e888e898:	4501                	li	a0,0
      return netif;
    }
  }
  LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: didn't find %c%c\n", name[0], name[1]));
  return NULL;
}
    e888e89a:	8082                	ret
{
    e888e89c:	1141                	addi	sp,sp,-16
    e888e89e:	e022                	sd	s0,0(sp)
    e888e8a0:	842a                	mv	s0,a0
  num = (u8_t)atoi(&name[2]);
    e888e8a2:	0509                	addi	a0,a0,2
{
    e888e8a4:	e406                	sd	ra,8(sp)
  num = (u8_t)atoi(&name[2]);
    e888e8a6:	a41ed0ef          	jal	ra,e887c2e6 <eLIBs_atoi>
    e888e8aa:	0ff57793          	andi	a5,a0,255
  NETIF_FOREACH(netif) {
    e888e8ae:	00058717          	auipc	a4,0x58
    e888e8b2:	b8a70713          	addi	a4,a4,-1142 # e88e6438 <netif_list>
    e888e8b6:	6308                	ld	a0,0(a4)
    e888e8b8:	e511                	bnez	a0,e888e8c4 <netif_find+0x2e>
    return NULL;
    e888e8ba:	4501                	li	a0,0
}
    e888e8bc:	60a2                	ld	ra,8(sp)
    e888e8be:	6402                	ld	s0,0(sp)
    e888e8c0:	0141                	addi	sp,sp,16
    e888e8c2:	8082                	ret
    if (num == netif->num &&
    e888e8c4:	10e54703          	lbu	a4,270(a0)
    e888e8c8:	00f71e63          	bne	a4,a5,e888e8e4 <netif_find+0x4e>
    e888e8cc:	00044683          	lbu	a3,0(s0)
    e888e8d0:	10c54703          	lbu	a4,268(a0)
    e888e8d4:	00e69863          	bne	a3,a4,e888e8e4 <netif_find+0x4e>
        name[0] == netif->name[0] &&
    e888e8d8:	00144683          	lbu	a3,1(s0)
    e888e8dc:	10d54703          	lbu	a4,269(a0)
    e888e8e0:	fce68ee3          	beq	a3,a4,e888e8bc <netif_find+0x26>
  NETIF_FOREACH(netif) {
    e888e8e4:	6108                	ld	a0,0(a0)
    e888e8e6:	bfc9                	j	e888e8b8 <netif_find+0x22>

00000000e888e8e8 <netif_name_to_index>:
{
    e888e8e8:	1141                	addi	sp,sp,-16
    e888e8ea:	e406                	sd	ra,8(sp)
  struct netif *netif = netif_find(name);
    e888e8ec:	fabff0ef          	jal	ra,e888e896 <netif_find>
  if (netif != NULL) {
    e888e8f0:	c909                	beqz	a0,e888e902 <netif_name_to_index+0x1a>
    return netif_get_index(netif);
    e888e8f2:	10e54503          	lbu	a0,270(a0)
    e888e8f6:	2505                	addiw	a0,a0,1
    e888e8f8:	0ff57513          	andi	a0,a0,255
}
    e888e8fc:	60a2                	ld	ra,8(sp)
    e888e8fe:	0141                	addi	sp,sp,16
    e888e900:	8082                	ret
  return NETIF_NO_INDEX;
    e888e902:	4501                	li	a0,0
    e888e904:	bfe5                	j	e888e8fc <netif_name_to_index+0x14>

00000000e888e906 <netif_invoke_ext_callback>:
 * @param reason change reason
 * @param args depends on reason, see reason description
 */
void
netif_invoke_ext_callback(struct netif *netif, netif_nsc_reason_t reason, const netif_ext_callback_args_t *args)
{
    e888e906:	7179                	addi	sp,sp,-48
    e888e908:	e826                	sd	s1,16(sp)
    e888e90a:	ec4a                	sd	s2,24(sp)
    e888e90c:	f04e                	sd	s3,32(sp)
    e888e90e:	f406                	sd	ra,40(sp)
    e888e910:	e422                	sd	s0,8(sp)
  netif_ext_callback_t *callback = ext_callback;
    e888e912:	00058797          	auipc	a5,0x58
    e888e916:	9ae78793          	addi	a5,a5,-1618 # e88e62c0 <ext_callback>
{
    e888e91a:	84aa                	mv	s1,a0
    e888e91c:	892e                	mv	s2,a1
    e888e91e:	89b2                	mv	s3,a2
  netif_ext_callback_t *callback = ext_callback;
    e888e920:	6380                	ld	s0,0(a5)

  LWIP_ASSERT("netif must be != NULL", netif != NULL);
    e888e922:	e51d                	bnez	a0,e888e950 <netif_invoke_ext_callback+0x4a>
    e888e924:	02f00593          	li	a1,47
    e888e928:	00042517          	auipc	a0,0x42
    e888e92c:	14050513          	addi	a0,a0,320 # e88d0a68 <memp_pools+0x278>
    e888e930:	a49ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888e934:	00150693          	addi	a3,a0,1
    e888e938:	6fc00613          	li	a2,1788
    e888e93c:	00042597          	auipc	a1,0x42
    e888e940:	06458593          	addi	a1,a1,100 # e88d09a0 <memp_pools+0x1b0>
    e888e944:	00040517          	auipc	a0,0x40
    e888e948:	76c50513          	addi	a0,a0,1900 # e88cf0b0 <kSinTable1024+0x900>
    e888e94c:	97bed0ef          	jal	ra,e887c2c6 <eLIBs_printf>

  while (callback != NULL) {
    e888e950:	e801                	bnez	s0,e888e960 <netif_invoke_ext_callback+0x5a>
    callback->callback_fn(netif, reason, args);
    callback = callback->next;
  }
}
    e888e952:	70a2                	ld	ra,40(sp)
    e888e954:	6422                	ld	s0,8(sp)
    e888e956:	64c2                	ld	s1,16(sp)
    e888e958:	6962                	ld	s2,24(sp)
    e888e95a:	7982                	ld	s3,32(sp)
    e888e95c:	6145                	addi	sp,sp,48
    e888e95e:	8082                	ret
    callback->callback_fn(netif, reason, args);
    e888e960:	601c                	ld	a5,0(s0)
    e888e962:	864e                	mv	a2,s3
    e888e964:	85ca                	mv	a1,s2
    e888e966:	8526                	mv	a0,s1
    e888e968:	9782                	jalr	a5
    callback = callback->next;
    e888e96a:	6400                	ld	s0,8(s0)
    e888e96c:	b7d5                	j	e888e950 <netif_invoke_ext_callback+0x4a>

00000000e888e96e <netif_set_addr>:
{
    e888e96e:	7135                	addi	sp,sp,-160
    e888e970:	e526                	sd	s1,136(sp)
    e888e972:	e14a                	sd	s2,128(sp)
    e888e974:	f8d2                	sd	s4,112(sp)
    e888e976:	f4d6                	sd	s5,104(sp)
    e888e978:	ed06                	sd	ra,152(sp)
    e888e97a:	e922                	sd	s0,144(sp)
    e888e97c:	fcce                	sd	s3,120(sp)
    e888e97e:	f0da                	sd	s6,96(sp)
    e888e980:	892a                	mv	s2,a0
    e888e982:	8ab2                	mv	s5,a2
    e888e984:	8a36                	mv	s4,a3
    ipaddr = IP4_ADDR_ANY4;
    e888e986:	00041497          	auipc	s1,0x41
    e888e98a:	63a48493          	addi	s1,s1,1594 # e88cffc0 <ip_addr_any>
  if (ipaddr == NULL) {
    e888e98e:	c191                	beqz	a1,e888e992 <netif_set_addr+0x24>
    e888e990:	84ae                	mv	s1,a1
  if (netmask == NULL) {
    e888e992:	000a9663          	bnez	s5,e888e99e <netif_set_addr+0x30>
    netmask = IP4_ADDR_ANY4;
    e888e996:	00041a97          	auipc	s5,0x41
    e888e99a:	62aa8a93          	addi	s5,s5,1578 # e88cffc0 <ip_addr_any>
  if (gw == NULL) {
    e888e99e:	000a1663          	bnez	s4,e888e9aa <netif_set_addr+0x3c>
    gw = IP4_ADDR_ANY4;
    e888e9a2:	00041a17          	auipc	s4,0x41
    e888e9a6:	61ea0a13          	addi	s4,s4,1566 # e88cffc0 <ip_addr_any>
  remove = ip4_addr_isany(ipaddr);
    e888e9aa:	c099                	beqz	s1,e888e9b0 <netif_set_addr+0x42>
    e888e9ac:	409c                	lw	a5,0(s1)
    e888e9ae:	ebb1                	bnez	a5,e888ea02 <netif_set_addr+0x94>
    if (netif_do_set_ipaddr(netif, ipaddr, &old_addr)) {
    e888e9b0:	00a0                	addi	s0,sp,72
    e888e9b2:	8622                	mv	a2,s0
    e888e9b4:	85a6                	mv	a1,s1
    e888e9b6:	854a                	mv	a0,s2
    e888e9b8:	b47ff0ef          	jal	ra,e888e4fe <netif_do_set_ipaddr>
    e888e9bc:	c531                	beqz	a0,e888ea08 <netif_set_addr+0x9a>
      cb_args.ipv4_changed.old_address = &old_addr;
    e888e9be:	e022                	sd	s0,0(sp)
    e888e9c0:	4985                	li	s3,1
      change_reason |= LWIP_NSC_IPV4_ADDRESS_CHANGED;
    e888e9c2:	4441                	li	s0,16
  if (netif_do_set_netmask(netif, netmask, old_nm)) {
    e888e9c4:	01810b13          	addi	s6,sp,24
    e888e9c8:	865a                	mv	a2,s6
    e888e9ca:	85d6                	mv	a1,s5
    e888e9cc:	854a                	mv	a0,s2
    e888e9ce:	9fdff0ef          	jal	ra,e888e3ca <netif_do_set_netmask>
    e888e9d2:	c501                	beqz	a0,e888e9da <netif_set_addr+0x6c>
    change_reason |= LWIP_NSC_IPV4_NETMASK_CHANGED;
    e888e9d4:	04046413          	ori	s0,s0,64
    cb_args.ipv4_changed.old_netmask = old_nm;
    e888e9d8:	e45a                	sd	s6,8(sp)
  if (netif_do_set_gw(netif, gw, old_gw)) {
    e888e9da:	03010a93          	addi	s5,sp,48
    e888e9de:	8656                	mv	a2,s5
    e888e9e0:	85d2                	mv	a1,s4
    e888e9e2:	854a                	mv	a0,s2
    e888e9e4:	a3bff0ef          	jal	ra,e888e41e <netif_do_set_gw>
    e888e9e8:	c115                	beqz	a0,e888ea0c <netif_set_addr+0x9e>
    cb_args.ipv4_changed.old_gw = old_gw;
    e888e9ea:	e856                	sd	s5,16(sp)
    change_reason |= LWIP_NSC_IPV4_GATEWAY_CHANGED;
    e888e9ec:	02046413          	ori	s0,s0,32
  if (!remove) {
    e888e9f0:	02098063          	beqz	s3,e888ea10 <netif_set_addr+0xa2>
    netif_invoke_ext_callback(netif, change_reason, &cb_args);
    e888e9f4:	860a                	mv	a2,sp
    e888e9f6:	08046593          	ori	a1,s0,128
    e888e9fa:	854a                	mv	a0,s2
    e888e9fc:	f0bff0ef          	jal	ra,e888e906 <netif_invoke_ext_callback>
}
    e888ea00:	a02d                	j	e888ea2a <netif_set_addr+0xbc>
  remove = ip4_addr_isany(ipaddr);
    e888ea02:	4981                	li	s3,0
  netif_nsc_reason_t change_reason = LWIP_NSC_NONE;
    e888ea04:	4401                	li	s0,0
    e888ea06:	bf7d                	j	e888e9c4 <netif_set_addr+0x56>
    e888ea08:	4985                	li	s3,1
    e888ea0a:	bfed                	j	e888ea04 <netif_set_addr+0x96>
  if (!remove) {
    e888ea0c:	00099e63          	bnez	s3,e888ea28 <netif_set_addr+0xba>
    if (netif_do_set_ipaddr(netif, ipaddr, &old_addr)) {
    e888ea10:	04810993          	addi	s3,sp,72
    e888ea14:	864e                	mv	a2,s3
    e888ea16:	85a6                	mv	a1,s1
    e888ea18:	854a                	mv	a0,s2
    e888ea1a:	ae5ff0ef          	jal	ra,e888e4fe <netif_do_set_ipaddr>
    e888ea1e:	c509                	beqz	a0,e888ea28 <netif_set_addr+0xba>
      change_reason |= LWIP_NSC_IPV4_ADDRESS_CHANGED;
    e888ea20:	01046413          	ori	s0,s0,16
      cb_args.ipv4_changed.old_address = &old_addr;
    e888ea24:	e04e                	sd	s3,0(sp)
  if (change_reason != LWIP_NSC_NONE) {
    e888ea26:	b7f9                	j	e888e9f4 <netif_set_addr+0x86>
    e888ea28:	f471                	bnez	s0,e888e9f4 <netif_set_addr+0x86>
}
    e888ea2a:	60ea                	ld	ra,152(sp)
    e888ea2c:	644a                	ld	s0,144(sp)
    e888ea2e:	64aa                	ld	s1,136(sp)
    e888ea30:	690a                	ld	s2,128(sp)
    e888ea32:	79e6                	ld	s3,120(sp)
    e888ea34:	7a46                	ld	s4,112(sp)
    e888ea36:	7aa6                	ld	s5,104(sp)
    e888ea38:	7b06                	ld	s6,96(sp)
    e888ea3a:	610d                	addi	sp,sp,160
    e888ea3c:	8082                	ret

00000000e888ea3e <netif_add>:
{
    e888ea3e:	7119                	addi	sp,sp,-128
    e888ea40:	f8a2                	sd	s0,112(sp)
    e888ea42:	fc86                	sd	ra,120(sp)
    e888ea44:	f4a6                	sd	s1,104(sp)
    e888ea46:	f0ca                	sd	s2,96(sp)
    e888ea48:	ecce                	sd	s3,88(sp)
    e888ea4a:	e8d2                	sd	s4,80(sp)
    e888ea4c:	e4d6                	sd	s5,72(sp)
    e888ea4e:	e0da                	sd	s6,64(sp)
    e888ea50:	fc5e                	sd	s7,56(sp)
    e888ea52:	f862                	sd	s8,48(sp)
    e888ea54:	f466                	sd	s9,40(sp)
    e888ea56:	f06a                	sd	s10,32(sp)
    e888ea58:	842a                	mv	s0,a0
  LWIP_ERROR("netif_add: invalid netif", netif != NULL, return NULL);
    e888ea5a:	e531                	bnez	a0,e888eaa6 <netif_add+0x68>
    e888ea5c:	02f00593          	li	a1,47
    e888ea60:	00042517          	auipc	a0,0x42
    e888ea64:	00850513          	addi	a0,a0,8 # e88d0a68 <memp_pools+0x278>
    e888ea68:	911ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ea6c:	00150693          	addi	a3,a0,1
    e888ea70:	12700613          	li	a2,295
    e888ea74:	00042597          	auipc	a1,0x42
    e888ea78:	e0c58593          	addi	a1,a1,-500 # e88d0880 <memp_pools+0x90>
    e888ea7c:	00040517          	auipc	a0,0x40
    e888ea80:	63450513          	addi	a0,a0,1588 # e88cf0b0 <kSinTable1024+0x900>
    e888ea84:	843ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e888ea88:	8522                	mv	a0,s0
    e888ea8a:	70e6                	ld	ra,120(sp)
    e888ea8c:	7446                	ld	s0,112(sp)
    e888ea8e:	74a6                	ld	s1,104(sp)
    e888ea90:	7906                	ld	s2,96(sp)
    e888ea92:	69e6                	ld	s3,88(sp)
    e888ea94:	6a46                	ld	s4,80(sp)
    e888ea96:	6aa6                	ld	s5,72(sp)
    e888ea98:	6b06                	ld	s6,64(sp)
    e888ea9a:	7be2                	ld	s7,56(sp)
    e888ea9c:	7c42                	ld	s8,48(sp)
    e888ea9e:	7ca2                	ld	s9,40(sp)
    e888eaa0:	7d02                	ld	s10,32(sp)
    e888eaa2:	6109                	addi	sp,sp,128
    e888eaa4:	8082                	ret
  LWIP_ERROR("netif_add: No init function given", init != NULL, return NULL);
    e888eaa6:	eb8d                	bnez	a5,e888ead8 <netif_add+0x9a>
    e888eaa8:	02f00593          	li	a1,47
    e888eaac:	00042517          	auipc	a0,0x42
    e888eab0:	fbc50513          	addi	a0,a0,-68 # e88d0a68 <memp_pools+0x278>
    e888eab4:	8c5ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888eab8:	00150693          	addi	a3,a0,1
    e888eabc:	12800613          	li	a2,296
    e888eac0:	00042597          	auipc	a1,0x42
    e888eac4:	de058593          	addi	a1,a1,-544 # e88d08a0 <memp_pools+0xb0>
    e888eac8:	00040517          	auipc	a0,0x40
    e888eacc:	5e850513          	addi	a0,a0,1512 # e88cf0b0 <kSinTable1024+0x900>
    e888ead0:	ff6ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return NULL;
    e888ead4:	4401                	li	s0,0
    e888ead6:	bf4d                	j	e888ea88 <netif_add+0x4a>
    e888ead8:	84ae                	mv	s1,a1
    e888eada:	89b2                	mv	s3,a2
  if (ipaddr == NULL) {
    e888eadc:	e589                	bnez	a1,e888eae6 <netif_add+0xa8>
    ipaddr = ip_2_ip4(IP4_ADDR_ANY);
    e888eade:	00041497          	auipc	s1,0x41
    e888eae2:	4e248493          	addi	s1,s1,1250 # e88cffc0 <ip_addr_any>
  if (netmask == NULL) {
    e888eae6:	00099663          	bnez	s3,e888eaf2 <netif_add+0xb4>
    netmask = ip_2_ip4(IP4_ADDR_ANY);
    e888eaea:	00041997          	auipc	s3,0x41
    e888eaee:	4d698993          	addi	s3,s3,1238 # e88cffc0 <ip_addr_any>
  if (gw == NULL) {
    e888eaf2:	e689                	bnez	a3,e888eafc <netif_add+0xbe>
    gw = ip_2_ip4(IP4_ADDR_ANY);
    e888eaf4:	00041697          	auipc	a3,0x41
    e888eaf8:	4cc68693          	addi	a3,a3,1228 # e88cffc0 <ip_addr_any>
  netif->output = netif_null_output_ip4;
    e888eafc:	00000617          	auipc	a2,0x0
    e888eb00:	abe60613          	addi	a2,a2,-1346 # e888e5ba <netif_null_output_ip4>
    e888eb04:	e070                	sd	a2,192(s0)
  ip_addr_set_zero_ip4(&netif->ip_addr);
    e888eb06:	00043423          	sd	zero,8(s0)
    e888eb0a:	00043823          	sd	zero,16(s0)
    e888eb0e:	00040c23          	sb	zero,24(s0)
    e888eb12:	00040e23          	sb	zero,28(s0)
  ip_addr_set_zero_ip4(&netif->netmask);
    e888eb16:	02043023          	sd	zero,32(s0)
    e888eb1a:	02043423          	sd	zero,40(s0)
    e888eb1e:	02040823          	sb	zero,48(s0)
    e888eb22:	02040a23          	sb	zero,52(s0)
  ip_addr_set_zero_ip4(&netif->gw);
    e888eb26:	02043c23          	sd	zero,56(s0)
    e888eb2a:	04043023          	sd	zero,64(s0)
    e888eb2e:	04040423          	sb	zero,72(s0)
    e888eb32:	04040623          	sb	zero,76(s0)
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888eb36:	05040613          	addi	a2,s0,80
  netif->output = netif_null_output_ip4;
    e888eb3a:	4581                	li	a1,0
    ip_addr_set_zero_ip6(&netif->ip6_addr[i]);
    e888eb3c:	4e99                	li	t4,6
    netif->ip6_addr_state[i] = IP6_ADDR_INVALID;
    e888eb3e:	09840e13          	addi	t3,s0,152
    netif->ip6_addr_valid_life[i] = IP6_ADDR_LIFE_STATIC;
    e888eb42:	09c40313          	addi	t1,s0,156
    netif->ip6_addr_pref_life[i] = IP6_ADDR_LIFE_STATIC;
    e888eb46:	0a840893          	addi	a7,s0,168
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888eb4a:	450d                	li	a0,3
    ip_addr_set_zero_ip6(&netif->ip6_addr[i]);
    e888eb4c:	00062023          	sw	zero,0(a2)
    e888eb50:	00062223          	sw	zero,4(a2)
    e888eb54:	00062423          	sw	zero,8(a2)
    e888eb58:	00062623          	sw	zero,12(a2)
    e888eb5c:	00060823          	sb	zero,16(a2)
    e888eb60:	01d60a23          	sb	t4,20(a2)
    netif->ip6_addr_state[i] = IP6_ADDR_INVALID;
    e888eb64:	0661                	addi	a2,a2,24
    e888eb66:	00be500b          	srb	zero,t3,a1,0
    netif->ip6_addr_valid_life[i] = IP6_ADDR_LIFE_STATIC;
    e888eb6a:	44b3500b          	srw	zero,t1,a1,2
    netif->ip6_addr_pref_life[i] = IP6_ADDR_LIFE_STATIC;
    e888eb6e:	44b8d00b          	srw	zero,a7,a1,2
  for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) {
    e888eb72:	0585                	addi	a1,a1,1
    e888eb74:	fca59ce3          	bne	a1,a0,e888eb4c <netif_add+0x10e>
  netif->output_ip6 = netif_null_output_ip6;
    e888eb78:	fffff617          	auipc	a2,0xfffff
    e888eb7c:	66a60613          	addi	a2,a2,1642 # e888e1e2 <netif_null_output_ip6>
  memset(netif->client_data, 0, sizeof(netif->client_data));
    e888eb80:	4581                	li	a1,0
  netif->output_ip6 = netif_null_output_ip6;
    e888eb82:	e870                	sd	a2,208(s0)
  memset(netif->client_data, 0, sizeof(netif->client_data));
    e888eb84:	0e040513          	addi	a0,s0,224
    e888eb88:	02000613          	li	a2,32
  netif->mtu = 0;
    e888eb8c:	10041023          	sh	zero,256(s0)
  netif->flags = 0;
    e888eb90:	100405a3          	sb	zero,267(s0)
    e888eb94:	e83e                	sd	a5,16(sp)
    e888eb96:	ec42                	sd	a6,24(sp)
    e888eb98:	e43a                	sd	a4,8(sp)
    e888eb9a:	e036                	sd	a3,0(sp)
  memset(netif->client_data, 0, sizeof(netif->client_data));
    e888eb9c:	ff8ed0ef          	jal	ra,e887c394 <eLIBs_memset>
  netif->ip6_autoconfig_enabled = 0;
    e888eba0:	100407a3          	sb	zero,271(s0)
  nd6_restart_netif(netif);
    e888eba4:	8522                	mv	a0,s0
    e888eba6:	d0aff0ef          	jal	ra,e888e0b0 <nd6_restart_netif>
  netif->num = netif_num;
    e888ebaa:	00058917          	auipc	s2,0x58
    e888ebae:	89690913          	addi	s2,s2,-1898 # e88e6440 <netif_num>
  netif->state = state;
    e888ebb2:	6722                	ld	a4,8(sp)
  netif->input = input;
    e888ebb4:	6862                	ld	a6,24(sp)
  netif_set_addr(netif, ipaddr, netmask, gw);
    e888ebb6:	6682                	ld	a3,0(sp)
  netif->state = state;
    e888ebb8:	ec78                	sd	a4,216(s0)
  netif->num = netif_num;
    e888ebba:	00094703          	lbu	a4,0(s2)
  netif_set_addr(netif, ipaddr, netmask, gw);
    e888ebbe:	8522                	mv	a0,s0
  netif->igmp_mac_filter = NULL;
    e888ebc0:	14043423          	sd	zero,328(s0)
  netif->mld_mac_filter = NULL;
    e888ebc4:	14043823          	sd	zero,336(s0)
  netif->loop_first = NULL;
    e888ebc8:	14043c23          	sd	zero,344(s0)
  netif->loop_last = NULL;
    e888ebcc:	16043023          	sd	zero,352(s0)
  netif->num = netif_num;
    e888ebd0:	10e40723          	sb	a4,270(s0)
  netif->input = input;
    e888ebd4:	0b043c23          	sd	a6,184(s0)
  netif_set_addr(netif, ipaddr, netmask, gw);
    e888ebd8:	864e                	mv	a2,s3
    e888ebda:	85a6                	mv	a1,s1
    e888ebdc:	d93ff0ef          	jal	ra,e888e96e <netif_set_addr>
  if (init(netif) != ERR_OK) {
    e888ebe0:	67c2                	ld	a5,16(sp)
    e888ebe2:	8522                	mv	a0,s0
    e888ebe4:	9782                	jalr	a5
    e888ebe6:	ee0517e3          	bnez	a0,e888ead4 <netif_add+0x96>
  netif->mtu6 = netif->mtu;
    e888ebea:	10045783          	lhu	a5,256(s0)
      for (netif2 = netif_list; netif2 != NULL; netif2 = netif2->next) {
    e888ebee:	00058a97          	auipc	s5,0x58
    e888ebf2:	84aa8a93          	addi	s5,s5,-1974 # e88e6438 <netif_list>
      if (netif->num == 255) {
    e888ebf6:	0ff00a13          	li	s4,255
  netif->mtu6 = netif->mtu;
    e888ebfa:	10f41123          	sh	a5,258(s0)
    e888ebfe:	8d56                	mv	s10,s5
        LWIP_ASSERT("netif already added", netif2 != netif);
    e888ec00:	00042b17          	auipc	s6,0x42
    e888ec04:	e68b0b13          	addi	s6,s6,-408 # e88d0a68 <memp_pools+0x278>
    e888ec08:	00042c17          	auipc	s8,0x42
    e888ec0c:	cc0c0c13          	addi	s8,s8,-832 # e88d08c8 <memp_pools+0xd8>
    e888ec10:	00040b97          	auipc	s7,0x40
    e888ec14:	4a0b8b93          	addi	s7,s7,1184 # e88cf0b0 <kSinTable1024+0x900>
        LWIP_ASSERT("too many netifs, max. supported number is 255", num_netifs <= 255);
    e888ec18:	00042c97          	auipc	s9,0x42
    e888ec1c:	cc8c8c93          	addi	s9,s9,-824 # e88d08e0 <memp_pools+0xf0>
      if (netif->num == 255) {
    e888ec20:	10e44783          	lbu	a5,270(s0)
    e888ec24:	01479463          	bne	a5,s4,e888ec2c <netif_add+0x1ee>
        netif->num = 0;
    e888ec28:	10040723          	sb	zero,270(s0)
      for (netif2 = netif_list; netif2 != NULL; netif2 = netif2->next) {
    e888ec2c:	000ab483          	ld	s1,0(s5)
      num_netifs = 0;
    e888ec30:	4981                	li	s3,0
      for (netif2 = netif_list; netif2 != NULL; netif2 = netif2->next) {
    e888ec32:	e0a1                	bnez	s1,e888ec72 <netif_add+0x234>
  if (netif->num == 254) {
    e888ec34:	10e44783          	lbu	a5,270(s0)
    e888ec38:	0fe00693          	li	a3,254
    netif_num = 0;
    e888ec3c:	4701                	li	a4,0
  if (netif->num == 254) {
    e888ec3e:	00d78563          	beq	a5,a3,e888ec48 <netif_add+0x20a>
    netif_num = (u8_t)(netif->num + 1);
    e888ec42:	2785                	addiw	a5,a5,1
    e888ec44:	0ff7f713          	andi	a4,a5,255
  netif->next = netif_list;
    e888ec48:	000d3783          	ld	a5,0(s10)
    e888ec4c:	00e90023          	sb	a4,0(s2)
    e888ec50:	e01c                	sd	a5,0(s0)
  if (netif->flags & NETIF_FLAG_IGMP) {
    e888ec52:	10b44783          	lbu	a5,267(s0)
  netif_list = netif;
    e888ec56:	008d3023          	sd	s0,0(s10)
  if (netif->flags & NETIF_FLAG_IGMP) {
    e888ec5a:	0207f793          	andi	a5,a5,32
    e888ec5e:	c781                	beqz	a5,e888ec66 <netif_add+0x228>
    igmp_start(netif);
    e888ec60:	8522                	mv	a0,s0
    e888ec62:	b89f90ef          	jal	ra,e88887ea <igmp_start>
  netif_invoke_ext_callback(netif, LWIP_NSC_NETIF_ADDED, NULL);
    e888ec66:	4601                	li	a2,0
    e888ec68:	4585                	li	a1,1
    e888ec6a:	8522                	mv	a0,s0
    e888ec6c:	c9bff0ef          	jal	ra,e888e906 <netif_invoke_ext_callback>
  return netif;
    e888ec70:	bd21                	j	e888ea88 <netif_add+0x4a>
        LWIP_ASSERT("netif already added", netif2 != netif);
    e888ec72:	00849f63          	bne	s1,s0,e888ec90 <netif_add+0x252>
    e888ec76:	02f00593          	li	a1,47
    e888ec7a:	855a                	mv	a0,s6
    e888ec7c:	efced0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ec80:	00150693          	addi	a3,a0,1
    e888ec84:	18b00613          	li	a2,395
    e888ec88:	85e2                	mv	a1,s8
    e888ec8a:	855e                	mv	a0,s7
    e888ec8c:	e3aed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        num_netifs++;
    e888ec90:	2985                	addiw	s3,s3,1
        LWIP_ASSERT("too many netifs, max. supported number is 255", num_netifs <= 255);
    e888ec92:	013a5f63          	bge	s4,s3,e888ecb0 <netif_add+0x272>
    e888ec96:	02f00593          	li	a1,47
    e888ec9a:	855a                	mv	a0,s6
    e888ec9c:	edced0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888eca0:	00150693          	addi	a3,a0,1
    e888eca4:	18d00613          	li	a2,397
    e888eca8:	85e6                	mv	a1,s9
    e888ecaa:	855e                	mv	a0,s7
    e888ecac:	e1aed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (netif2->num == netif->num) {
    e888ecb0:	10e44703          	lbu	a4,270(s0)
    e888ecb4:	10e4c783          	lbu	a5,270(s1)
    e888ecb8:	00e79663          	bne	a5,a4,e888ecc4 <netif_add+0x286>
          netif->num++;
    e888ecbc:	2785                	addiw	a5,a5,1
    e888ecbe:	10f40723          	sb	a5,270(s0)
    } while (netif2 != NULL);
    e888ecc2:	bfb9                	j	e888ec20 <netif_add+0x1e2>
      for (netif2 = netif_list; netif2 != NULL; netif2 = netif2->next) {
    e888ecc4:	6084                	ld	s1,0(s1)
    e888ecc6:	b7b5                	j	e888ec32 <netif_add+0x1f4>

00000000e888ecc8 <netif_set_up>:
{
    e888ecc8:	7179                	addi	sp,sp,-48
    e888ecca:	f406                	sd	ra,40(sp)
    e888eccc:	f022                	sd	s0,32(sp)
  LWIP_ERROR("netif_set_up: invalid netif", netif != NULL, return);
    e888ecce:	e91d                	bnez	a0,e888ed04 <netif_set_up+0x3c>
    e888ecd0:	02f00593          	li	a1,47
    e888ecd4:	00042517          	auipc	a0,0x42
    e888ecd8:	d9450513          	addi	a0,a0,-620 # e88d0a68 <memp_pools+0x278>
    e888ecdc:	e9ced0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ece0:	00150693          	addi	a3,a0,1
    e888ece4:	35000613          	li	a2,848
    e888ece8:	00042597          	auipc	a1,0x42
    e888ecec:	ed058593          	addi	a1,a1,-304 # e88d0bb8 <memp_pools+0x3c8>
    e888ecf0:	00040517          	auipc	a0,0x40
    e888ecf4:	3c050513          	addi	a0,a0,960 # e88cf0b0 <kSinTable1024+0x900>
    e888ecf8:	dceed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e888ecfc:	70a2                	ld	ra,40(sp)
    e888ecfe:	7402                	ld	s0,32(sp)
    e888ed00:	6145                	addi	sp,sp,48
    e888ed02:	8082                	ret
  if (!(netif->flags & NETIF_FLAG_UP)) {
    e888ed04:	10b54783          	lbu	a5,267(a0)
    e888ed08:	842a                	mv	s0,a0
    e888ed0a:	0017f713          	andi	a4,a5,1
    e888ed0e:	f77d                	bnez	a4,e888ecfc <netif_set_up+0x34>
    netif_set_flags(netif, NETIF_FLAG_UP);
    e888ed10:	0017e793          	ori	a5,a5,1
    e888ed14:	10f505a3          	sb	a5,267(a0)
    MIB2_COPY_SYSUPTIME_TO(&netif->ts);
    e888ed18:	5d9080ef          	jal	ra,e8897af0 <sys_now>
    e888ed1c:	47a9                	li	a5,10
    e888ed1e:	02f5553b          	divuw	a0,a0,a5
      args.status_changed.state = 1;
    e888ed22:	4785                	li	a5,1
      netif_invoke_ext_callback(netif, LWIP_NSC_STATUS_CHANGED, &args);
    e888ed24:	0030                	addi	a2,sp,8
    e888ed26:	45a1                	li	a1,8
      args.status_changed.state = 1;
    e888ed28:	00f10423          	sb	a5,8(sp)
    MIB2_COPY_SYSUPTIME_TO(&netif->ts);
    e888ed2c:	10a42c23          	sw	a0,280(s0)
      netif_invoke_ext_callback(netif, LWIP_NSC_STATUS_CHANGED, &args);
    e888ed30:	8522                	mv	a0,s0
    e888ed32:	bd5ff0ef          	jal	ra,e888e906 <netif_invoke_ext_callback>
    netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6);
    e888ed36:	8522                	mv	a0,s0
    e888ed38:	458d                	li	a1,3
    e888ed3a:	f38ff0ef          	jal	ra,e888e472 <netif_issue_reports>
    nd6_restart_netif(netif);
    e888ed3e:	8522                	mv	a0,s0
    e888ed40:	b70ff0ef          	jal	ra,e888e0b0 <nd6_restart_netif>
    e888ed44:	bf65                	j	e888ecfc <netif_set_up+0x34>

00000000e888ed46 <netif_set_link_up>:
{
    e888ed46:	7179                	addi	sp,sp,-48
    e888ed48:	f406                	sd	ra,40(sp)
    e888ed4a:	f022                	sd	s0,32(sp)
  LWIP_ERROR("netif_set_link_up: invalid netif", netif != NULL, return);
    e888ed4c:	e91d                	bnez	a0,e888ed82 <netif_set_link_up+0x3c>
    e888ed4e:	02f00593          	li	a1,47
    e888ed52:	00042517          	auipc	a0,0x42
    e888ed56:	d1650513          	addi	a0,a0,-746 # e88d0a68 <memp_pools+0x278>
    e888ed5a:	e1eed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ed5e:	00150693          	addi	a3,a0,1
    e888ed62:	3e000613          	li	a2,992
    e888ed66:	00042597          	auipc	a1,0x42
    e888ed6a:	e2a58593          	addi	a1,a1,-470 # e88d0b90 <memp_pools+0x3a0>
    e888ed6e:	00040517          	auipc	a0,0x40
    e888ed72:	34250513          	addi	a0,a0,834 # e88cf0b0 <kSinTable1024+0x900>
    e888ed76:	d50ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e888ed7a:	70a2                	ld	ra,40(sp)
    e888ed7c:	7402                	ld	s0,32(sp)
    e888ed7e:	6145                	addi	sp,sp,48
    e888ed80:	8082                	ret
  if (!(netif->flags & NETIF_FLAG_LINK_UP)) {
    e888ed82:	10b54783          	lbu	a5,267(a0)
    e888ed86:	842a                	mv	s0,a0
    e888ed88:	0047f713          	andi	a4,a5,4
    e888ed8c:	f77d                	bnez	a4,e888ed7a <netif_set_link_up+0x34>
    netif_set_flags(netif, NETIF_FLAG_LINK_UP);
    e888ed8e:	0047e793          	ori	a5,a5,4
    e888ed92:	10f505a3          	sb	a5,267(a0)
    dhcp_network_changed(netif);
    e888ed96:	2a60d0ef          	jal	ra,e889c03c <dhcp_network_changed>
    autoip_network_changed(netif);
    e888ed9a:	8522                	mv	a0,s0
    e888ed9c:	60b0b0ef          	jal	ra,e889aba6 <autoip_network_changed>
    netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6);
    e888eda0:	458d                	li	a1,3
    e888eda2:	8522                	mv	a0,s0
    e888eda4:	eceff0ef          	jal	ra,e888e472 <netif_issue_reports>
    nd6_restart_netif(netif);
    e888eda8:	8522                	mv	a0,s0
    e888edaa:	b06ff0ef          	jal	ra,e888e0b0 <nd6_restart_netif>
      args.link_changed.state = 1;
    e888edae:	4785                	li	a5,1
      netif_invoke_ext_callback(netif, LWIP_NSC_LINK_CHANGED, &args);
    e888edb0:	0030                	addi	a2,sp,8
    e888edb2:	4591                	li	a1,4
    e888edb4:	8522                	mv	a0,s0
      args.link_changed.state = 1;
    e888edb6:	00f10423          	sb	a5,8(sp)
      netif_invoke_ext_callback(netif, LWIP_NSC_LINK_CHANGED, &args);
    e888edba:	b4dff0ef          	jal	ra,e888e906 <netif_invoke_ext_callback>
    e888edbe:	bf75                	j	e888ed7a <netif_set_link_up+0x34>

00000000e888edc0 <netif_init>:
  IP4_ADDR(&loop_gw, 127, 0, 0, 1);
    e888edc0:	010007b7          	lui	a5,0x1000
    e888edc4:	07f7879b          	addiw	a5,a5,127
{
    e888edc8:	7179                	addi	sp,sp,-48
  IP4_ADDR(&loop_gw, 127, 0, 0, 1);
    e888edca:	cc3e                	sw	a5,24(sp)
  IP4_ADDR(&loop_ipaddr, 127, 0, 0, 1);
    e888edcc:	c43e                	sw	a5,8(sp)
  IP4_ADDR(&loop_netmask, 255, 0, 0, 0);
    e888edce:	0ff00793          	li	a5,255
{
    e888edd2:	f022                	sd	s0,32(sp)
  netif_add(&loop_netif, LOOPIF_ADDRINIT NULL, netif_loopif_init, tcpip_input);
    e888edd4:	00057417          	auipc	s0,0x57
    e888edd8:	4f440413          	addi	s0,s0,1268 # e88e62c8 <loop_netif>
    e888eddc:	0834                	addi	a3,sp,24
    e888edde:	0810                	addi	a2,sp,16
    e888ede0:	002c                	addi	a1,sp,8
  IP4_ADDR(&loop_netmask, 255, 0, 0, 0);
    e888ede2:	c83e                	sw	a5,16(sp)
  netif_add(&loop_netif, LOOPIF_ADDRINIT NULL, netif_loopif_init, tcpip_input);
    e888ede4:	ffff8817          	auipc	a6,0xffff8
    e888ede8:	f8280813          	addi	a6,a6,-126 # e8886d66 <tcpip_input>
    e888edec:	4701                	li	a4,0
    e888edee:	fffff797          	auipc	a5,0xfffff
    e888edf2:	3f878793          	addi	a5,a5,1016 # e888e1e6 <netif_loopif_init>
    e888edf6:	8522                	mv	a0,s0
{
    e888edf8:	f406                	sd	ra,40(sp)
  netif_add(&loop_netif, LOOPIF_ADDRINIT NULL, netif_loopif_init, tcpip_input);
    e888edfa:	c45ff0ef          	jal	ra,e888ea3e <netif_add>
  IP_ADDR6_HOST(loop_netif.ip6_addr, 0, 0, 0, 0x00000001UL);
    e888edfe:	04043823          	sd	zero,80(s0)
    e888ee02:	4785                	li	a5,1
    e888ee04:	17e2                	slli	a5,a5,0x38
    e888ee06:	ec3c                	sd	a5,88(s0)
    e888ee08:	4799                	li	a5,6
    e888ee0a:	06f40223          	sb	a5,100(s0)
  loop_netif.ip6_addr_state[0] = IP6_ADDR_VALID;
    e888ee0e:	47c1                	li	a5,16
  netif_set_link_up(&loop_netif);
    e888ee10:	8522                	mv	a0,s0
  loop_netif.ip6_addr_state[0] = IP6_ADDR_VALID;
    e888ee12:	08f40c23          	sb	a5,152(s0)
  IP_ADDR6_HOST(loop_netif.ip6_addr, 0, 0, 0, 0x00000001UL);
    e888ee16:	06040023          	sb	zero,96(s0)
  netif_set_link_up(&loop_netif);
    e888ee1a:	f2dff0ef          	jal	ra,e888ed46 <netif_set_link_up>
  netif_set_up(&loop_netif);
    e888ee1e:	8522                	mv	a0,s0
    e888ee20:	ea9ff0ef          	jal	ra,e888ecc8 <netif_set_up>
}
    e888ee24:	7402                	ld	s0,32(sp)
    e888ee26:	70a2                	ld	ra,40(sp)
    e888ee28:	6145                	addi	sp,sp,48
    e888ee2a:	8082                	ret

00000000e888ee2c <netif_ip6_addr_set_state>:
{
    e888ee2c:	7159                	addi	sp,sp,-112
    e888ee2e:	f0a2                	sd	s0,96(sp)
    e888ee30:	eca6                	sd	s1,88(sp)
    e888ee32:	e4ce                	sd	s3,72(sp)
    e888ee34:	f486                	sd	ra,104(sp)
    e888ee36:	e8ca                	sd	s2,80(sp)
    e888ee38:	e0d2                	sd	s4,64(sp)
    e888ee3a:	fc56                	sd	s5,56(sp)
    e888ee3c:	f85a                	sd	s6,48(sp)
    e888ee3e:	f45e                	sd	s7,40(sp)
    e888ee40:	842a                	mv	s0,a0
    e888ee42:	84ae                	mv	s1,a1
    e888ee44:	89b2                	mv	s3,a2
  LWIP_ASSERT("netif != NULL", netif != NULL);
    e888ee46:	e51d                	bnez	a0,e888ee74 <netif_ip6_addr_set_state+0x48>
    e888ee48:	02f00593          	li	a1,47
    e888ee4c:	00042517          	auipc	a0,0x42
    e888ee50:	c1c50513          	addi	a0,a0,-996 # e88d0a68 <memp_pools+0x278>
    e888ee54:	d24ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ee58:	00150693          	addi	a3,a0,1
    e888ee5c:	57500613          	li	a2,1397
    e888ee60:	00041597          	auipc	a1,0x41
    e888ee64:	b8058593          	addi	a1,a1,-1152 # e88cf9e0 <ip_addr_any_type+0x180>
    e888ee68:	00040517          	auipc	a0,0x40
    e888ee6c:	24850513          	addi	a0,a0,584 # e88cf0b0 <kSinTable1024+0x900>
    e888ee70:	c56ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("invalid index", addr_idx < LWIP_IPV6_NUM_ADDRESSES);
    e888ee74:	4789                	li	a5,2
    e888ee76:	0297d863          	bge	a5,s1,e888eea6 <netif_ip6_addr_set_state+0x7a>
    e888ee7a:	02f00593          	li	a1,47
    e888ee7e:	00042517          	auipc	a0,0x42
    e888ee82:	bea50513          	addi	a0,a0,-1046 # e88d0a68 <memp_pools+0x278>
    e888ee86:	cf2ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ee8a:	00150693          	addi	a3,a0,1
    e888ee8e:	57600613          	li	a2,1398
    e888ee92:	00042597          	auipc	a1,0x42
    e888ee96:	b2658593          	addi	a1,a1,-1242 # e88d09b8 <memp_pools+0x1c8>
    e888ee9a:	00040517          	auipc	a0,0x40
    e888ee9e:	21650513          	addi	a0,a0,534 # e88cf0b0 <kSinTable1024+0x900>
    e888eea2:	c24ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  old_state = netif_ip6_addr_state(netif, addr_idx);
    e888eea6:	00940bb3          	add	s7,s0,s1
    e888eeaa:	098bca03          	lbu	s4,152(s7)
  if (old_state != state) {
    e888eeae:	073a0363          	beq	s4,s3,e888ef14 <netif_ip6_addr_set_state+0xe8>
    if (netif->flags & NETIF_FLAG_MLD6) {
    e888eeb2:	10b44783          	lbu	a5,267(s0)
    u8_t old_valid = old_state & IP6_ADDR_VALID;
    e888eeb6:	010a7b13          	andi	s6,s4,16
    u8_t new_valid = state & IP6_ADDR_VALID;
    e888eeba:	0109fa93          	andi	s5,s3,16
    if (netif->flags & NETIF_FLAG_MLD6) {
    e888eebe:	0407f793          	andi	a5,a5,64
    e888eec2:	c791                	beqz	a5,e888eece <netif_ip6_addr_set_state+0xa2>
      nd6_adjust_mld_membership(netif, addr_idx, state);
    e888eec4:	864e                	mv	a2,s3
    e888eec6:	85a6                	mv	a1,s1
    e888eec8:	8522                	mv	a0,s0
    e888eeca:	976ff0ef          	jal	ra,e888e040 <nd6_adjust_mld_membership>
    if (old_valid && !new_valid) {
    e888eece:	47e1                	li	a5,24
    e888eed0:	8922                	mv	s2,s0
    e888eed2:	20f4990b          	mula	s2,s1,a5
    e888eed6:	05090913          	addi	s2,s2,80
    e888eeda:	000b0863          	beqz	s6,e888eeea <netif_ip6_addr_set_state+0xbe>
    e888eede:	000a9663          	bnez	s5,e888eeea <netif_ip6_addr_set_state+0xbe>
      netif_do_ip_addr_changed(netif_ip_addr6(netif, addr_idx), NULL);
    e888eee2:	4581                	li	a1,0
    e888eee4:	854a                	mv	a0,s2
    e888eee6:	b80ff0ef          	jal	ra,e888e266 <netif_do_ip_addr_changed>
    netif->ip6_addr_state[addr_idx] = state;
    e888eeea:	093b8c23          	sb	s3,152(s7)
    if (!old_valid && new_valid) {
    e888eeee:	000b1863          	bnez	s6,e888eefe <netif_ip6_addr_set_state+0xd2>
    e888eef2:	000a8663          	beqz	s5,e888eefe <netif_ip6_addr_set_state+0xd2>
      netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV6);
    e888eef6:	4589                	li	a1,2
    e888eef8:	8522                	mv	a0,s0
    e888eefa:	d78ff0ef          	jal	ra,e888e472 <netif_issue_reports>
      netif_invoke_ext_callback(netif, LWIP_NSC_IPV6_ADDR_STATE_CHANGED, &args);
    e888eefe:	0030                	addi	a2,sp,8
    e888ef00:	20000593          	li	a1,512
    e888ef04:	8522                	mv	a0,s0
      args.ipv6_addr_state_changed.addr_index = addr_idx;
    e888ef06:	00910423          	sb	s1,8(sp)
      args.ipv6_addr_state_changed.old_state  = old_state;
    e888ef0a:	014104a3          	sb	s4,9(sp)
      args.ipv6_addr_state_changed.address    = netif_ip_addr6(netif, addr_idx);
    e888ef0e:	e84a                	sd	s2,16(sp)
      netif_invoke_ext_callback(netif, LWIP_NSC_IPV6_ADDR_STATE_CHANGED, &args);
    e888ef10:	9f7ff0ef          	jal	ra,e888e906 <netif_invoke_ext_callback>
}
    e888ef14:	70a6                	ld	ra,104(sp)
    e888ef16:	7406                	ld	s0,96(sp)
    e888ef18:	64e6                	ld	s1,88(sp)
    e888ef1a:	6946                	ld	s2,80(sp)
    e888ef1c:	69a6                	ld	s3,72(sp)
    e888ef1e:	6a06                	ld	s4,64(sp)
    e888ef20:	7ae2                	ld	s5,56(sp)
    e888ef22:	7b42                	ld	s6,48(sp)
    e888ef24:	7ba2                	ld	s7,40(sp)
    e888ef26:	6165                	addi	sp,sp,112
    e888ef28:	8082                	ret

00000000e888ef2a <netif_create_ip6_linklocal_address>:
{
    e888ef2a:	7179                	addi	sp,sp,-48
    e888ef2c:	f891540b          	sdd	s0,s1,(sp),0,4
    e888ef30:	f406                	sd	ra,40(sp)
    e888ef32:	f052                	sd	s4,32(sp)
    e888ef34:	fb31590b          	sdd	s2,s3,(sp),1,4
    e888ef38:	842a                	mv	s0,a0
    e888ef3a:	84ae                	mv	s1,a1
  LWIP_ASSERT("netif_create_ip6_linklocal_address: invalid netif", netif != NULL);
    e888ef3c:	e51d                	bnez	a0,e888ef6a <netif_create_ip6_linklocal_address+0x40>
    e888ef3e:	02f00593          	li	a1,47
    e888ef42:	00042517          	auipc	a0,0x42
    e888ef46:	b2650513          	addi	a0,a0,-1242 # e88d0a68 <memp_pools+0x278>
    e888ef4a:	c2eed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ef4e:	00150693          	addi	a3,a0,1
    e888ef52:	5df00613          	li	a2,1503
    e888ef56:	00042597          	auipc	a1,0x42
    e888ef5a:	9ba58593          	addi	a1,a1,-1606 # e88d0910 <memp_pools+0x120>
    e888ef5e:	00040517          	auipc	a0,0x40
    e888ef62:	15250513          	addi	a0,a0,338 # e88cf0b0 <kSinTable1024+0x900>
    e888ef66:	b60ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  ip_2_ip6(&netif->ip6_addr[0])->addr[0] = PP_HTONL(0xfe800000ul);
    e888ef6a:	67a1                	lui	a5,0x8
    e888ef6c:	0fe78793          	addi	a5,a5,254 # 80fe <memcmp-0xe87f7f02>
    e888ef70:	e83c                	sd	a5,80(s0)
  if (from_mac_48bit) {
    e888ef72:	c4d9                	beqz	s1,e888f000 <netif_create_ip6_linklocal_address+0xd6>
        ((u32_t)(netif->hwaddr[2]) << 8) |
    e888ef74:	10644783          	lbu	a5,262(s0)
        ((u32_t)(netif->hwaddr[1]) << 16) |
    e888ef78:	10544503          	lbu	a0,261(s0)
        ((u32_t)(netif->hwaddr[2]) << 8) |
    e888ef7c:	0087979b          	slliw	a5,a5,0x8
        ((u32_t)(netif->hwaddr[1]) << 16) |
    e888ef80:	0105151b          	slliw	a0,a0,0x10
    e888ef84:	8d5d                	or	a0,a0,a5
    ip_2_ip6(&netif->ip6_addr[0])->addr[2] = lwip_htonl((((u32_t)(netif->hwaddr[0] ^ 0x02)) << 24) |
    e888ef86:	10444783          	lbu	a5,260(s0)
    e888ef8a:	0027c793          	xori	a5,a5,2
    e888ef8e:	0187979b          	slliw	a5,a5,0x18
        ((u32_t)(netif->hwaddr[1]) << 16) |
    e888ef92:	8d5d                	or	a0,a0,a5
    ip_2_ip6(&netif->ip6_addr[0])->addr[2] = lwip_htonl((((u32_t)(netif->hwaddr[0] ^ 0x02)) << 24) |
    e888ef94:	0ff56513          	ori	a0,a0,255
    e888ef98:	2501                	sext.w	a0,a0
    e888ef9a:	f95f70ef          	jal	ra,e8886f2e <lwip_htonl>
    e888ef9e:	cc28                	sw	a0,88(s0)
        ((u32_t)(netif->hwaddr[4]) << 8) |
    e888efa0:	10844503          	lbu	a0,264(s0)
        ((u32_t)(netif->hwaddr[3]) << 16) |
    e888efa4:	10744783          	lbu	a5,263(s0)
        ((u32_t)(netif->hwaddr[4]) << 8) |
    e888efa8:	0085151b          	slliw	a0,a0,0x8
        ((u32_t)(netif->hwaddr[3]) << 16) |
    e888efac:	0107979b          	slliw	a5,a5,0x10
    e888efb0:	8fc9                	or	a5,a5,a0
        (netif->hwaddr[5]));
    e888efb2:	10944503          	lbu	a0,265(s0)
        ((u32_t)(netif->hwaddr[4]) << 8) |
    e888efb6:	8fc9                	or	a5,a5,a0
    ip_2_ip6(&netif->ip6_addr[0])->addr[3] = lwip_htonl((u32_t)(0xfeul << 24) |
    e888efb8:	fe000537          	lui	a0,0xfe000
    e888efbc:	8d5d                	or	a0,a0,a5
    e888efbe:	f71f70ef          	jal	ra,e8886f2e <lwip_htonl>
    e888efc2:	cc68                	sw	a0,92(s0)
  ip6_addr_assign_zone(ip_2_ip6(&netif->ip6_addr[0]), IP6_UNICAST, netif);
    e888efc4:	483c                	lw	a5,80(s0)
    e888efc6:	6731                	lui	a4,0xc
    e888efc8:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888efcc:	66a1                	lui	a3,0x8
    e888efce:	8f7d                	and	a4,a4,a5
    e888efd0:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e888efd4:	4781                	li	a5,0
    e888efd6:	00d71763          	bne	a4,a3,e888efe4 <netif_create_ip6_linklocal_address+0xba>
    e888efda:	10e44783          	lbu	a5,270(s0)
    e888efde:	2785                	addiw	a5,a5,1
    e888efe0:	0ff7f793          	andi	a5,a5,255
    e888efe4:	06f40023          	sb	a5,96(s0)
  netif_ip6_addr_set_state(netif, 0, IP6_ADDR_TENTATIVE);
    e888efe8:	8522                	mv	a0,s0
}
    e888efea:	f891440b          	ldd	s0,s1,(sp),0,4
    e888efee:	70a2                	ld	ra,40(sp)
    e888eff0:	7a02                	ld	s4,32(sp)
    e888eff2:	fb31490b          	ldd	s2,s3,(sp),1,4
  netif_ip6_addr_set_state(netif, 0, IP6_ADDR_TENTATIVE);
    e888eff6:	4621                	li	a2,8
    e888eff8:	4581                	li	a1,0
}
    e888effa:	6145                	addi	sp,sp,48
  netif_ip6_addr_set_state(netif, 0, IP6_ADDR_TENTATIVE);
    e888effc:	e31ff06f          	j	e888ee2c <netif_ip6_addr_set_state>
    ip_2_ip6(&netif->ip6_addr[0])->addr[2] = 0;
    e888f000:	04043c23          	sd	zero,88(s0)
    e888f004:	4481                	li	s1,0
    addr_index = 3;
    e888f006:	490d                	li	s2,3
      if (i == 4) {
    e888f008:	4991                	li	s3,4
    for (i = 0; (i < 8) && (i < netif->hwaddr_len); i++) {
    e888f00a:	4a21                	li	s4,8
    e888f00c:	10a44783          	lbu	a5,266(s0)
    e888f010:	0ff4f713          	andi	a4,s1,255
    e888f014:	faf778e3          	bgeu	a4,a5,e888efc4 <netif_create_ip6_linklocal_address+0x9a>
      if (i == 4) {
    e888f018:	01371563          	bne	a4,s3,e888f022 <netif_create_ip6_linklocal_address+0xf8>
        addr_index--;
    e888f01c:	397d                	addiw	s2,s2,-1
    e888f01e:	0ff97913          	andi	s2,s2,255
      ip_2_ip6(&netif->ip6_addr[0])->addr[addr_index] |= lwip_htonl(((u32_t)(netif->hwaddr[netif->hwaddr_len - i - 1])) << (8 * (i & 0x03)));
    e888f022:	37fd                	addiw	a5,a5,-1
    e888f024:	9f85                	subw	a5,a5,s1
    e888f026:	97a2                	add	a5,a5,s0
    e888f028:	1047c503          	lbu	a0,260(a5)
    e888f02c:	8b0d                	andi	a4,a4,3
    e888f02e:	0037171b          	slliw	a4,a4,0x3
    e888f032:	00e5153b          	sllw	a0,a0,a4
    e888f036:	ef9f70ef          	jal	ra,e8886f2e <lwip_htonl>
    e888f03a:	2485                	addiw	s1,s1,1
    e888f03c:	0524170b          	addsl	a4,s0,s2,2
    e888f040:	4b3c                	lw	a5,80(a4)
    e888f042:	8d5d                	or	a0,a0,a5
    e888f044:	cb28                	sw	a0,80(a4)
    for (i = 0; (i < 8) && (i < netif->hwaddr_len); i++) {
    e888f046:	fd4493e3          	bne	s1,s4,e888f00c <netif_create_ip6_linklocal_address+0xe2>
    e888f04a:	bfad                	j	e888efc4 <netif_create_ip6_linklocal_address+0x9a>

00000000e888f04c <pbuf_skip_const>:
{
  u16_t offset_left = in_offset;
  const struct pbuf *q = in;

  /* get the correct pbuf */
  while ((q != NULL) && (q->len <= offset_left)) {
    e888f04c:	c509                	beqz	a0,e888f056 <pbuf_skip_const+0xa>
    e888f04e:	01255783          	lhu	a5,18(a0) # fffffffffe000012 <__DRAM0_INF_BASE+0xfffffffefe010012>
    e888f052:	00f5f663          	bgeu	a1,a5,e888f05e <pbuf_skip_const+0x12>
    offset_left = (u16_t)(offset_left - q->len);
    q = q->next;
  }
  if (out_offset != NULL) {
    e888f056:	c219                	beqz	a2,e888f05c <pbuf_skip_const+0x10>
    *out_offset = offset_left;
    e888f058:	00b61023          	sh	a1,0(a2)
  }
  return q;
}
    e888f05c:	8082                	ret
    offset_left = (u16_t)(offset_left - q->len);
    e888f05e:	9d9d                	subw	a1,a1,a5
    e888f060:	3c05b58b          	extu	a1,a1,15,0
    q = q->next;
    e888f064:	6108                	ld	a0,0(a0)
    e888f066:	b7dd                	j	e888f04c <pbuf_skip_const>

00000000e888f068 <pbuf_free_ooseq_callback>:
  SYS_ARCH_SET(pbuf_free_ooseq_pending, 0);
    e888f068:	00057797          	auipc	a5,0x57
    e888f06c:	3c078ca3          	sb	zero,985(a5) # e88e6441 <pbuf_free_ooseq_pending>
  for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) {
    e888f070:	00057797          	auipc	a5,0x57
    e888f074:	5f878793          	addi	a5,a5,1528 # e88e6668 <tcp_active_pcbs>
    e888f078:	6388                	ld	a0,0(a5)
    e888f07a:	e111                	bnez	a0,e888f07e <pbuf_free_ooseq_callback+0x16>
}
    e888f07c:	8082                	ret
    if (pcb->ooseq != NULL) {
    e888f07e:	617c                	ld	a5,192(a0)
    e888f080:	c399                	beqz	a5,e888f086 <pbuf_free_ooseq_callback+0x1e>
      tcp_free_ooseq(pcb);
    e888f082:	3620206f          	j	e88913e4 <tcp_free_ooseq>
  for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) {
    e888f086:	7d08                	ld	a0,56(a0)
    e888f088:	bfcd                	j	e888f07a <pbuf_free_ooseq_callback+0x12>

00000000e888f08a <pbuf_add_header_impl>:
  LWIP_ASSERT("p != NULL", p != NULL);
    e888f08a:	e551                	bnez	a0,e888f116 <pbuf_add_header_impl+0x8c>
{
    e888f08c:	1141                	addi	sp,sp,-16
  LWIP_ASSERT("p != NULL", p != NULL);
    e888f08e:	02f00593          	li	a1,47
    e888f092:	00042517          	auipc	a0,0x42
    e888f096:	b4650513          	addi	a0,a0,-1210 # e88d0bd8 <memp_pools+0x3e8>
{
    e888f09a:	e406                	sd	ra,8(sp)
  LWIP_ASSERT("p != NULL", p != NULL);
    e888f09c:	adced0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f0a0:	00150693          	addi	a3,a0,1
    e888f0a4:	1df00613          	li	a2,479
    e888f0a8:	00045597          	auipc	a1,0x45
    e888f0ac:	a4858593          	addi	a1,a1,-1464 # e88d3af0 <dhcp_discover_request_options+0x2e8>
    e888f0b0:	00040517          	auipc	a0,0x40
    e888f0b4:	00050513          	mv	a0,a0
    e888f0b8:	a0eed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e888f0bc:	60a2                	ld	ra,8(sp)
    return 1;
    e888f0be:	4505                	li	a0,1
}
    e888f0c0:	0141                	addi	sp,sp,16
    e888f0c2:	8082                	ret
    return 0;
    e888f0c4:	4501                	li	a0,0
  if (header_size_increment == 0) {
    e888f0c6:	cdb1                	beqz	a1,e888f122 <pbuf_add_header_impl+0x98>
  if ((u16_t)(increment_magnitude + p->tot_len) < increment_magnitude) {
    e888f0c8:	0107d703          	lhu	a4,16(a5)
  increment_magnitude = (u16_t)header_size_increment;
    e888f0cc:	3c05b80b          	extu	a6,a1,15,0
    return 1;
    e888f0d0:	4505                	li	a0,1
  if ((u16_t)(increment_magnitude + p->tot_len) < increment_magnitude) {
    e888f0d2:	0107073b          	addw	a4,a4,a6
    e888f0d6:	3c07370b          	extu	a4,a4,15,0
    e888f0da:	05076463          	bltu	a4,a6,e888f122 <pbuf_add_header_impl+0x98>
  if (type_internal & PBUF_TYPE_FLAG_STRUCT_DATA_CONTIGUOUS) {
    e888f0de:	01478683          	lb	a3,20(a5)
    e888f0e2:	0006da63          	bgez	a3,e888f0f6 <pbuf_add_header_impl+0x6c>
    payload = (u8_t *)p->payload - header_size_increment;
    e888f0e6:	6794                	ld	a3,8(a5)
    e888f0e8:	40b685b3          	sub	a1,a3,a1
    if ((u8_t *)payload < (u8_t *)p + SIZEOF_STRUCT_PBUF) {
    e888f0ec:	01878693          	addi	a3,a5,24
    e888f0f0:	00d5f863          	bgeu	a1,a3,e888f100 <pbuf_add_header_impl+0x76>
    e888f0f4:	8082                	ret
    return 1;
    e888f0f6:	4505                	li	a0,1
    if (force) {
    e888f0f8:	c60d                	beqz	a2,e888f122 <pbuf_add_header_impl+0x98>
      payload = (u8_t *)p->payload - header_size_increment;
    e888f0fa:	6794                	ld	a3,8(a5)
    e888f0fc:	40b685b3          	sub	a1,a3,a1
  p->len = (u16_t)(p->len + increment_magnitude);
    e888f100:	0127d683          	lhu	a3,18(a5)
  p->payload = payload;
    e888f104:	e78c                	sd	a1,8(a5)
  p->tot_len = (u16_t)(p->tot_len + increment_magnitude);
    e888f106:	00e79823          	sh	a4,16(a5)
  p->len = (u16_t)(p->len + increment_magnitude);
    e888f10a:	010686bb          	addw	a3,a3,a6
    e888f10e:	00d79923          	sh	a3,18(a5)
  return 0;
    e888f112:	4501                	li	a0,0
    e888f114:	8082                	ret
  if ((p == NULL) || (header_size_increment > 0xFFFF)) {
    e888f116:	6741                	lui	a4,0x10
    e888f118:	87aa                	mv	a5,a0
    return 1;
    e888f11a:	4505                	li	a0,1
  if ((p == NULL) || (header_size_increment > 0xFFFF)) {
    e888f11c:	fae5e4e3          	bltu	a1,a4,e888f0c4 <pbuf_add_header_impl+0x3a>
    e888f120:	8082                	ret
}
    e888f122:	8082                	ret

00000000e888f124 <pbuf_alloc_reference>:
{
    e888f124:	1101                	addi	sp,sp,-32
    e888f126:	f891540b          	sdd	s0,s1,(sp),0,4
    e888f12a:	e84a                	sd	s2,16(sp)
    e888f12c:	ec06                	sd	ra,24(sp)
  LWIP_ASSERT("invalid pbuf_type", (type == PBUF_REF) || (type == PBUF_ROM));
    e888f12e:	fbf67713          	andi	a4,a2,-65
    e888f132:	4785                	li	a5,1
{
    e888f134:	892a                	mv	s2,a0
    e888f136:	84ae                	mv	s1,a1
    e888f138:	8432                	mv	s0,a2
  LWIP_ASSERT("invalid pbuf_type", (type == PBUF_REF) || (type == PBUF_ROM));
    e888f13a:	02f70863          	beq	a4,a5,e888f16a <pbuf_alloc_reference+0x46>
    e888f13e:	02f00593          	li	a1,47
    e888f142:	00042517          	auipc	a0,0x42
    e888f146:	a9650513          	addi	a0,a0,-1386 # e88d0bd8 <memp_pools+0x3e8>
    e888f14a:	a2eed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f14e:	00150693          	addi	a3,a0,1
    e888f152:	14a00613          	li	a2,330
    e888f156:	00042597          	auipc	a1,0x42
    e888f15a:	b2a58593          	addi	a1,a1,-1238 # e88d0c80 <memp_pools+0x490>
    e888f15e:	00040517          	auipc	a0,0x40
    e888f162:	f5250513          	addi	a0,a0,-174 # e88cf0b0 <kSinTable1024+0x900>
    e888f166:	960ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  p = (struct pbuf *)memp_malloc(MEMP_PBUF);
    e888f16a:	4541                	li	a0,16
    e888f16c:	fe1fe0ef          	jal	ra,e888e14c <memp_malloc>
  if (p == NULL) {
    e888f170:	c105                	beqz	a0,e888f190 <pbuf_alloc_reference+0x6c>
  p->ref = 1;
    e888f172:	4785                	li	a5,1
  p->next = NULL;
    e888f174:	00053023          	sd	zero,0(a0)
  p->payload = payload;
    e888f178:	01253423          	sd	s2,8(a0)
  p->tot_len = tot_len;
    e888f17c:	00951823          	sh	s1,16(a0)
  p->len = len;
    e888f180:	00951923          	sh	s1,18(a0)
  p->type_internal = (u8_t)type;
    e888f184:	00850a23          	sb	s0,20(a0)
  p->flags = flags;
    e888f188:	00050aa3          	sb	zero,21(a0)
  p->ref = 1;
    e888f18c:	00f51b23          	sh	a5,22(a0)
}
    e888f190:	60e2                	ld	ra,24(sp)
    e888f192:	f891440b          	ldd	s0,s1,(sp),0,4
    e888f196:	6942                	ld	s2,16(sp)
    e888f198:	6105                	addi	sp,sp,32
    e888f19a:	8082                	ret

00000000e888f19c <pbuf_add_header>:
  return pbuf_add_header_impl(p, header_size_increment, 0);
    e888f19c:	4601                	li	a2,0
    e888f19e:	eedff06f          	j	e888f08a <pbuf_add_header_impl>

00000000e888f1a2 <pbuf_add_header_force>:
  return pbuf_add_header_impl(p, header_size_increment, 1);
    e888f1a2:	4605                	li	a2,1
    e888f1a4:	ee7ff06f          	j	e888f08a <pbuf_add_header_impl>

00000000e888f1a8 <pbuf_remove_header>:
{
    e888f1a8:	1141                	addi	sp,sp,-16
    e888f1aa:	e406                	sd	ra,8(sp)
  LWIP_ASSERT("p != NULL", p != NULL);
    e888f1ac:	e921                	bnez	a0,e888f1fc <pbuf_remove_header+0x54>
    e888f1ae:	02f00593          	li	a1,47
    e888f1b2:	00042517          	auipc	a0,0x42
    e888f1b6:	a2650513          	addi	a0,a0,-1498 # e88d0bd8 <memp_pools+0x3e8>
    e888f1ba:	9beed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f1be:	00150693          	addi	a3,a0,1
    e888f1c2:	24b00613          	li	a2,587
    e888f1c6:	00045597          	auipc	a1,0x45
    e888f1ca:	92a58593          	addi	a1,a1,-1750 # e88d3af0 <dhcp_discover_request_options+0x2e8>
  LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;);
    e888f1ce:	00040517          	auipc	a0,0x40
    e888f1d2:	ee250513          	addi	a0,a0,-286 # e88cf0b0 <kSinTable1024+0x900>
    e888f1d6:	8f0ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888f1da:	4505                	li	a0,1
}
    e888f1dc:	60a2                	ld	ra,8(sp)
    e888f1de:	0141                	addi	sp,sp,16
    e888f1e0:	8082                	ret
  p->len = (u16_t)(p->len - increment_magnitude);
    e888f1e2:	9f15                	subw	a4,a4,a3
  p->payload = (u8_t *)p->payload + header_size_decrement;
    e888f1e4:	6790                	ld	a2,8(a5)
  p->len = (u16_t)(p->len - increment_magnitude);
    e888f1e6:	00e79923          	sh	a4,18(a5)
  p->tot_len = (u16_t)(p->tot_len - increment_magnitude);
    e888f1ea:	0107d703          	lhu	a4,16(a5)
  p->payload = (u8_t *)p->payload + header_size_decrement;
    e888f1ee:	95b2                	add	a1,a1,a2
    e888f1f0:	e78c                	sd	a1,8(a5)
  p->tot_len = (u16_t)(p->tot_len - increment_magnitude);
    e888f1f2:	9f15                	subw	a4,a4,a3
    e888f1f4:	00e79823          	sh	a4,16(a5)
  return 0;
    e888f1f8:	4501                	li	a0,0
    e888f1fa:	b7cd                	j	e888f1dc <pbuf_remove_header+0x34>
  if ((p == NULL) || (header_size_decrement > 0xFFFF)) {
    e888f1fc:	6741                	lui	a4,0x10
    e888f1fe:	87aa                	mv	a5,a0
    return 1;
    e888f200:	4505                	li	a0,1
  if ((p == NULL) || (header_size_decrement > 0xFFFF)) {
    e888f202:	fce5fde3          	bgeu	a1,a4,e888f1dc <pbuf_remove_header+0x34>
    return 0;
    e888f206:	4501                	li	a0,0
  if (header_size_decrement == 0) {
    e888f208:	d9f1                	beqz	a1,e888f1dc <pbuf_remove_header+0x34>
  LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;);
    e888f20a:	0127d703          	lhu	a4,18(a5)
  increment_magnitude = (u16_t)header_size_decrement;
    e888f20e:	3c05b68b          	extu	a3,a1,15,0
  LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;);
    e888f212:	fcd778e3          	bgeu	a4,a3,e888f1e2 <pbuf_remove_header+0x3a>
    e888f216:	02f00593          	li	a1,47
    e888f21a:	00042517          	auipc	a0,0x42
    e888f21e:	9be50513          	addi	a0,a0,-1602 # e88d0bd8 <memp_pools+0x3e8>
    e888f222:	956ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f226:	00150693          	addi	a3,a0,1
    e888f22a:	25500613          	li	a2,597
    e888f22e:	00042597          	auipc	a1,0x42
    e888f232:	caa58593          	addi	a1,a1,-854 # e88d0ed8 <memp_pools+0x6e8>
    e888f236:	bf61                	j	e888f1ce <pbuf_remove_header+0x26>

00000000e888f238 <pbuf_header_force>:
  if (header_size_increment < 0) {
    e888f238:	0005d763          	bgez	a1,e888f246 <pbuf_header_force+0xe>
    return pbuf_remove_header(p, (size_t) - header_size_increment);
    e888f23c:	40b005bb          	negw	a1,a1
    e888f240:	2581                	sext.w	a1,a1
    e888f242:	f67ff06f          	j	e888f1a8 <pbuf_remove_header>
    return pbuf_add_header_impl(p, (size_t)header_size_increment, force);
    e888f246:	4605                	li	a2,1
    e888f248:	e43ff06f          	j	e888f08a <pbuf_add_header_impl>

00000000e888f24c <pbuf_free>:
{
    e888f24c:	711d                	addi	sp,sp,-96
    e888f24e:	e4a6                	sd	s1,72(sp)
    e888f250:	ec86                	sd	ra,88(sp)
    e888f252:	e8a2                	sd	s0,80(sp)
    e888f254:	e0ca                	sd	s2,64(sp)
    e888f256:	fc4e                	sd	s3,56(sp)
    e888f258:	f852                	sd	s4,48(sp)
    e888f25a:	f456                	sd	s5,40(sp)
    e888f25c:	f05a                	sd	s6,32(sp)
    e888f25e:	ec5e                	sd	s7,24(sp)
    e888f260:	e862                	sd	s8,16(sp)
    e888f262:	e466                	sd	s9,8(sp)
  count = 0;
    e888f264:	4481                	li	s1,0
  if (p == NULL) {
    e888f266:	cd59                	beqz	a0,e888f304 <pbuf_free+0xb8>
    e888f268:	842a                	mv	s0,a0
    LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0);
    e888f26a:	00042917          	auipc	s2,0x42
    e888f26e:	96e90913          	addi	s2,s2,-1682 # e88d0bd8 <memp_pools+0x3e8>
    e888f272:	00042a17          	auipc	s4,0x42
    e888f276:	ba6a0a13          	addi	s4,s4,-1114 # e88d0e18 <memp_pools+0x628>
    e888f27a:	00040997          	auipc	s3,0x40
    e888f27e:	e3698993          	addi	s3,s3,-458 # e88cf0b0 <kSinTable1024+0x900>
        if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_MEMP_PBUF_POOL) {
    e888f282:	4a89                	li	s5,2
        } else if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_MEMP_PBUF) {
    e888f284:	4b05                	li	s6,1
          LWIP_ASSERT("invalid pbuf type", 0);
    e888f286:	00042b97          	auipc	s7,0x42
    e888f28a:	bd2b8b93          	addi	s7,s7,-1070 # e88d0e58 <memp_pools+0x668>
        LWIP_ASSERT("pc->custom_free_function != NULL", pc->custom_free_function != NULL);
    e888f28e:	00042c17          	auipc	s8,0x42
    e888f292:	ba2c0c13          	addi	s8,s8,-1118 # e88d0e30 <memp_pools+0x640>
    LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0);
    e888f296:	01644783          	lbu	a5,22(s0)
    e888f29a:	ef91                	bnez	a5,e888f2b6 <pbuf_free+0x6a>
    e888f29c:	02f00593          	li	a1,47
    e888f2a0:	854a                	mv	a0,s2
    e888f2a2:	8d6ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f2a6:	00150693          	addi	a3,a0,1
    e888f2aa:	2f100613          	li	a2,753
    e888f2ae:	85d2                	mv	a1,s4
    e888f2b0:	854e                	mv	a0,s3
    e888f2b2:	814ed0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    ref = --(p->ref);
    e888f2b6:	01644783          	lbu	a5,22(s0)
    e888f2ba:	37fd                	addiw	a5,a5,-1
    e888f2bc:	0ff7f793          	andi	a5,a5,255
    e888f2c0:	00f40b23          	sb	a5,22(s0)
    if (ref == 0) {
    e888f2c4:	e7b5                	bnez	a5,e888f330 <pbuf_free+0xe4>
      if ((p->flags & PBUF_FLAG_IS_CUSTOM) != 0) {
    e888f2c6:	01544783          	lbu	a5,21(s0)
      q = p->next;
    e888f2ca:	00043c83          	ld	s9,0(s0)
      if ((p->flags & PBUF_FLAG_IS_CUSTOM) != 0) {
    e888f2ce:	8b89                	andi	a5,a5,2
    e888f2d0:	cfb5                	beqz	a5,e888f34c <pbuf_free+0x100>
        LWIP_ASSERT("pc->custom_free_function != NULL", pc->custom_free_function != NULL);
    e888f2d2:	6c1c                	ld	a5,24(s0)
    e888f2d4:	ef91                	bnez	a5,e888f2f0 <pbuf_free+0xa4>
    e888f2d6:	02f00593          	li	a1,47
    e888f2da:	854a                	mv	a0,s2
    e888f2dc:	89ced0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f2e0:	00150693          	addi	a3,a0,1
    e888f2e4:	2ff00613          	li	a2,767
    e888f2e8:	85e2                	mv	a1,s8
    e888f2ea:	854e                	mv	a0,s3
    e888f2ec:	fdbec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        pc->custom_free_function(p);
    e888f2f0:	6c1c                	ld	a5,24(s0)
    e888f2f2:	8522                	mv	a0,s0
    e888f2f4:	9782                	jalr	a5
      count++;
    e888f2f6:	2485                	addiw	s1,s1,1
    e888f2f8:	0ff4f493          	andi	s1,s1,255
  while (p != NULL) {
    e888f2fc:	8466                	mv	s0,s9
    e888f2fe:	f80c9ce3          	bnez	s9,e888f296 <pbuf_free+0x4a>
    e888f302:	a03d                	j	e888f330 <pbuf_free+0xe4>
    LWIP_ASSERT("p != NULL", p != NULL);
    e888f304:	02f00593          	li	a1,47
    e888f308:	00042517          	auipc	a0,0x42
    e888f30c:	8d050513          	addi	a0,a0,-1840 # e88d0bd8 <memp_pools+0x3e8>
    e888f310:	868ed0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f314:	00150693          	addi	a3,a0,1
    e888f318:	2dc00613          	li	a2,732
    e888f31c:	00044597          	auipc	a1,0x44
    e888f320:	7d458593          	addi	a1,a1,2004 # e88d3af0 <dhcp_discover_request_options+0x2e8>
    e888f324:	00040517          	auipc	a0,0x40
    e888f328:	d8c50513          	addi	a0,a0,-628 # e88cf0b0 <kSinTable1024+0x900>
    e888f32c:	f9bec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e888f330:	60e6                	ld	ra,88(sp)
    e888f332:	6446                	ld	s0,80(sp)
    e888f334:	8526                	mv	a0,s1
    e888f336:	6906                	ld	s2,64(sp)
    e888f338:	64a6                	ld	s1,72(sp)
    e888f33a:	79e2                	ld	s3,56(sp)
    e888f33c:	7a42                	ld	s4,48(sp)
    e888f33e:	7aa2                	ld	s5,40(sp)
    e888f340:	7b02                	ld	s6,32(sp)
    e888f342:	6be2                	ld	s7,24(sp)
    e888f344:	6c42                	ld	s8,16(sp)
    e888f346:	6ca2                	ld	s9,8(sp)
    e888f348:	6125                	addi	sp,sp,96
    e888f34a:	8082                	ret
      alloc_src = pbuf_get_allocsrc(p);
    e888f34c:	01444783          	lbu	a5,20(s0)
    e888f350:	8bbd                	andi	a5,a5,15
        if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_MEMP_PBUF_POOL) {
    e888f352:	01579763          	bne	a5,s5,e888f360 <pbuf_free+0x114>
          memp_free(MEMP_PBUF_POOL, p);
    e888f356:	85a2                	mv	a1,s0
    e888f358:	4545                	li	a0,17
          memp_free(MEMP_PBUF, p);
    e888f35a:	e45fe0ef          	jal	ra,e888e19e <memp_free>
    e888f35e:	bf61                	j	e888f2f6 <pbuf_free+0xaa>
        } else if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_MEMP_PBUF) {
    e888f360:	01679563          	bne	a5,s6,e888f36a <pbuf_free+0x11e>
          memp_free(MEMP_PBUF, p);
    e888f364:	85a2                	mv	a1,s0
    e888f366:	4541                	li	a0,16
    e888f368:	bfcd                	j	e888f35a <pbuf_free+0x10e>
        } else if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_HEAP) {
    e888f36a:	e789                	bnez	a5,e888f374 <pbuf_free+0x128>
          mem_free(p);
    e888f36c:	8522                	mv	a0,s0
    e888f36e:	d75fe0ef          	jal	ra,e888e0e2 <mem_free>
    e888f372:	b751                	j	e888f2f6 <pbuf_free+0xaa>
          LWIP_ASSERT("invalid pbuf type", 0);
    e888f374:	02f00593          	li	a1,47
    e888f378:	854a                	mv	a0,s2
    e888f37a:	fffec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f37e:	00150693          	addi	a3,a0,1
    e888f382:	30f00613          	li	a2,783
    e888f386:	85de                	mv	a1,s7
    e888f388:	854e                	mv	a0,s3
    e888f38a:	f3dec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888f38e:	b7a5                	j	e888f2f6 <pbuf_free+0xaa>

00000000e888f390 <pbuf_alloc>:
  switch (type) {
    e888f390:	0006079b          	sext.w	a5,a2
    e888f394:	04100713          	li	a4,65
    e888f398:	14e78b63          	beq	a5,a4,e888f4ee <pbuf_alloc+0x15e>
{
    e888f39c:	7139                	addi	sp,sp,-64
    e888f39e:	fc06                	sd	ra,56(sp)
    e888f3a0:	f852                	sd	s4,48(sp)
    e888f3a2:	fa91540b          	sdd	s0,s1,(sp),1,4
    e888f3a6:	fd31590b          	sdd	s2,s3,(sp),2,4
  switch (type) {
    e888f3aa:	02f76c63          	bltu	a4,a5,e888f3e2 <pbuf_alloc+0x52>
    e888f3ae:	4705                	li	a4,1
    e888f3b0:	08e78263          	beq	a5,a4,e888f434 <pbuf_alloc+0xa4>
      LWIP_ASSERT("pbuf_alloc: erroneous type", 0);
    e888f3b4:	02f00593          	li	a1,47
    e888f3b8:	00042517          	auipc	a0,0x42
    e888f3bc:	82050513          	addi	a0,a0,-2016 # e88d0bd8 <memp_pools+0x3e8>
    e888f3c0:	fb9ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f3c4:	00150693          	addi	a3,a0,1
    e888f3c8:	12700613          	li	a2,295
    e888f3cc:	00042597          	auipc	a1,0x42
    e888f3d0:	89458593          	addi	a1,a1,-1900 # e88d0c60 <memp_pools+0x470>
    e888f3d4:	00040517          	auipc	a0,0x40
    e888f3d8:	cdc50513          	addi	a0,a0,-804 # e88cf0b0 <kSinTable1024+0x900>
    e888f3dc:	eebec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888f3e0:	a845                	j	e888f490 <pbuf_alloc+0x100>
  switch (type) {
    e888f3e2:	18200713          	li	a4,386
    e888f3e6:	3c05348b          	extu	s1,a0,15,0
    e888f3ea:	04e78f63          	beq	a5,a4,e888f448 <pbuf_alloc+0xb8>
    e888f3ee:	28000713          	li	a4,640
    e888f3f2:	fce791e3          	bne	a5,a4,e888f3b4 <pbuf_alloc+0x24>
      u16_t payload_len = (u16_t)(LWIP_MEM_ALIGN_SIZE(offset) + LWIP_MEM_ALIGN_SIZE(length));
    e888f3f6:	9cad                	addw	s1,s1,a1
    e888f3f8:	3c04b48b          	extu	s1,s1,15,0
    e888f3fc:	892a                	mv	s2,a0
      mem_size_t alloc_len = (mem_size_t)(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF) + payload_len);
    e888f3fe:	01848513          	addi	a0,s1,24
      if ((payload_len < LWIP_MEM_ALIGN_SIZE(length)) ||
    e888f402:	08b4e763          	bltu	s1,a1,e888f490 <pbuf_alloc+0x100>
    e888f406:	e42e                	sd	a1,8(sp)
    e888f408:	08b56463          	bltu	a0,a1,e888f490 <pbuf_alloc+0x100>
      p = (struct pbuf *)mem_malloc(alloc_len);
    e888f40c:	cb1fe0ef          	jal	ra,e888e0bc <mem_malloc>
    e888f410:	842a                	mv	s0,a0
      if (p == NULL) {
    e888f412:	c179                	beqz	a0,e888f4d8 <pbuf_alloc+0x148>
  p->tot_len = tot_len;
    e888f414:	65a2                	ld	a1,8(sp)
      pbuf_init_alloced_pbuf(p, LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)),
    e888f416:	0961                	addi	s2,s2,24
  p->type_internal = (u8_t)type;
    e888f418:	67c1                	lui	a5,0x10
      pbuf_init_alloced_pbuf(p, LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)),
    e888f41a:	992a                	add	s2,s2,a0
  p->type_internal = (u8_t)type;
    e888f41c:	0807879b          	addiw	a5,a5,128
  p->next = NULL;
    e888f420:	00053023          	sd	zero,0(a0)
  p->payload = payload;
    e888f424:	01253423          	sd	s2,8(a0)
  p->tot_len = tot_len;
    e888f428:	00b51823          	sh	a1,16(a0)
  p->len = len;
    e888f42c:	00b51923          	sh	a1,18(a0)
  p->type_internal = (u8_t)type;
    e888f430:	c95c                	sw	a5,20(a0)
    e888f432:	a05d                	j	e888f4d8 <pbuf_alloc+0x148>
}
    e888f434:	fa91440b          	ldd	s0,s1,(sp),1,4
    e888f438:	70e2                	ld	ra,56(sp)
    e888f43a:	7a42                	ld	s4,48(sp)
    e888f43c:	fd31490b          	ldd	s2,s3,(sp),2,4
      p = pbuf_alloc_reference(NULL, length, type);
    e888f440:	4501                	li	a0,0
}
    e888f442:	6121                	addi	sp,sp,64
      p = pbuf_alloc_reference(NULL, length, type);
    e888f444:	ce1ff06f          	j	e888f124 <pbuf_alloc_reference>
  p->type_internal = (u8_t)type;
    e888f448:	6941                	lui	s2,0x10
      last = NULL;
    e888f44a:	4981                	li	s3,0
      p = NULL;
    e888f44c:	4401                	li	s0,0
        qlen = LWIP_MIN(rem_len, (u16_t)(PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)));
    e888f44e:	5d600a13          	li	s4,1494
  p->type_internal = (u8_t)type;
    e888f452:	0829091b          	addiw	s2,s2,130
        q = (struct pbuf *)memp_malloc(MEMP_PBUF_POOL);
    e888f456:	4545                	li	a0,17
    e888f458:	e42e                	sd	a1,8(sp)
    e888f45a:	cf3fe0ef          	jal	ra,e888e14c <memp_malloc>
        if (q == NULL) {
    e888f45e:	65a2                	ld	a1,8(sp)
    e888f460:	ed15                	bnez	a0,e888f49c <pbuf_alloc+0x10c>
  pbuf_free_ooseq_pending = 1;
    e888f462:	4705                	li	a4,1
  queued = pbuf_free_ooseq_pending;
    e888f464:	00057797          	auipc	a5,0x57
    e888f468:	fdd7c783          	lbu	a5,-35(a5) # e88e6441 <pbuf_free_ooseq_pending>
  pbuf_free_ooseq_pending = 1;
    e888f46c:	00057697          	auipc	a3,0x57
    e888f470:	fce68aa3          	sb	a4,-43(a3) # e88e6441 <pbuf_free_ooseq_pending>
  if (!queued) {
    e888f474:	ef89                	bnez	a5,e888f48e <pbuf_alloc+0xfe>
    PBUF_POOL_FREE_OOSEQ_QUEUE_CALL();
    e888f476:	4581                	li	a1,0
    e888f478:	00000517          	auipc	a0,0x0
    e888f47c:	bf050513          	addi	a0,a0,-1040 # e888f068 <pbuf_free_ooseq_callback>
    e888f480:	903f70ef          	jal	ra,e8886d82 <tcpip_try_callback>
    e888f484:	c509                	beqz	a0,e888f48e <pbuf_alloc+0xfe>
    e888f486:	00057797          	auipc	a5,0x57
    e888f48a:	fa078da3          	sb	zero,-69(a5) # e88e6441 <pbuf_free_ooseq_pending>
          if (p) {
    e888f48e:	e019                	bnez	s0,e888f494 <pbuf_alloc+0x104>
      return NULL;
    e888f490:	4401                	li	s0,0
    e888f492:	a099                	j	e888f4d8 <pbuf_alloc+0x148>
            pbuf_free(p);
    e888f494:	8522                	mv	a0,s0
    e888f496:	db7ff0ef          	jal	ra,e888f24c <pbuf_free>
    e888f49a:	bfdd                	j	e888f490 <pbuf_alloc+0x100>
        qlen = LWIP_MIN(rem_len, (u16_t)(PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)));
    e888f49c:	409a07bb          	subw	a5,s4,s1
    e888f4a0:	873e                	mv	a4,a5
    e888f4a2:	3c07b78b          	extu	a5,a5,15,0
    e888f4a6:	00f5f363          	bgeu	a1,a5,e888f4ac <pbuf_alloc+0x11c>
    e888f4aa:	872e                	mv	a4,a1
        pbuf_init_alloced_pbuf(q, LWIP_MEM_ALIGN((void *)((u8_t *)q + SIZEOF_STRUCT_PBUF + offset)),
    e888f4ac:	04e1                	addi	s1,s1,24
    e888f4ae:	94aa                	add	s1,s1,a0
  p->next = NULL;
    e888f4b0:	00053023          	sd	zero,0(a0)
  p->payload = payload;
    e888f4b4:	e504                	sd	s1,8(a0)
  p->tot_len = tot_len;
    e888f4b6:	00b51823          	sh	a1,16(a0)
  p->len = len;
    e888f4ba:	00e51923          	sh	a4,18(a0)
  p->type_internal = (u8_t)type;
    e888f4be:	01252a23          	sw	s2,20(a0)
        qlen = LWIP_MIN(rem_len, (u16_t)(PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)));
    e888f4c2:	3c07378b          	extu	a5,a4,15,0
        if (p == NULL) {
    e888f4c6:	c015                	beqz	s0,e888f4ea <pbuf_alloc+0x15a>
          last->next = q;
    e888f4c8:	00a9b023          	sd	a0,0(s3)
        rem_len = (u16_t)(rem_len - qlen);
    e888f4cc:	9d9d                	subw	a1,a1,a5
    e888f4ce:	3c05b58b          	extu	a1,a1,15,0
        offset = 0;
    e888f4d2:	4481                	li	s1,0
    e888f4d4:	89aa                	mv	s3,a0
      } while (rem_len > 0);
    e888f4d6:	f1c1                	bnez	a1,e888f456 <pbuf_alloc+0xc6>
}
    e888f4d8:	8522                	mv	a0,s0
    e888f4da:	70e2                	ld	ra,56(sp)
    e888f4dc:	fa91440b          	ldd	s0,s1,(sp),1,4
    e888f4e0:	7a42                	ld	s4,48(sp)
    e888f4e2:	fd31490b          	ldd	s2,s3,(sp),2,4
    e888f4e6:	6121                	addi	sp,sp,64
    e888f4e8:	8082                	ret
    e888f4ea:	842a                	mv	s0,a0
    e888f4ec:	b7c5                	j	e888f4cc <pbuf_alloc+0x13c>
      p = pbuf_alloc_reference(NULL, length, type);
    e888f4ee:	4501                	li	a0,0
    e888f4f0:	bf91                	j	e888f444 <pbuf_alloc+0xb4>

00000000e888f4f2 <pbuf_realloc>:
{
    e888f4f2:	7139                	addi	sp,sp,-64
    e888f4f4:	e422                	sd	s0,8(sp)
    e888f4f6:	e826                	sd	s1,16(sp)
    e888f4f8:	fc06                	sd	ra,56(sp)
    e888f4fa:	ec4a                	sd	s2,24(sp)
    e888f4fc:	f04e                	sd	s3,32(sp)
    e888f4fe:	f452                	sd	s4,40(sp)
    e888f500:	f856                	sd	s5,48(sp)
    e888f502:	842a                	mv	s0,a0
    e888f504:	84ae                	mv	s1,a1
  LWIP_ASSERT("pbuf_realloc: p != NULL", p != NULL);
    e888f506:	e51d                	bnez	a0,e888f534 <pbuf_realloc+0x42>
    e888f508:	02f00593          	li	a1,47
    e888f50c:	00041517          	auipc	a0,0x41
    e888f510:	6cc50513          	addi	a0,a0,1740 # e88d0bd8 <memp_pools+0x3e8>
    e888f514:	e65ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f518:	00150693          	addi	a3,a0,1
    e888f51c:	19800613          	li	a2,408
    e888f520:	00042597          	auipc	a1,0x42
    e888f524:	95058593          	addi	a1,a1,-1712 # e88d0e70 <memp_pools+0x680>
    e888f528:	00040517          	auipc	a0,0x40
    e888f52c:	b8850513          	addi	a0,a0,-1144 # e88cf0b0 <kSinTable1024+0x900>
    e888f530:	d97ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (new_len >= p->tot_len) {
    e888f534:	01045783          	lhu	a5,16(s0)
    e888f538:	08f4fa63          	bgeu	s1,a5,e888f5cc <pbuf_realloc+0xda>
    q->tot_len = (u16_t)(q->tot_len - shrink);
    e888f53c:	40f4893b          	subw	s2,s1,a5
    LWIP_ASSERT("pbuf_realloc: q != NULL", q != NULL);
    e888f540:	00041997          	auipc	s3,0x41
    e888f544:	69898993          	addi	s3,s3,1688 # e88d0bd8 <memp_pools+0x3e8>
    e888f548:	00042a17          	auipc	s4,0x42
    e888f54c:	940a0a13          	addi	s4,s4,-1728 # e88d0e88 <memp_pools+0x698>
    e888f550:	00040a97          	auipc	s5,0x40
    e888f554:	b60a8a93          	addi	s5,s5,-1184 # e88cf0b0 <kSinTable1024+0x900>
  while (rem_len > q->len) {
    e888f558:	01245783          	lhu	a5,18(s0)
    e888f55c:	0004871b          	sext.w	a4,s1
    e888f560:	0007869b          	sext.w	a3,a5
    e888f564:	06e6ed63          	bltu	a3,a4,e888f5de <pbuf_realloc+0xec>
  if (pbuf_match_allocsrc(q, PBUF_TYPE_ALLOC_SRC_MASK_STD_HEAP) && (rem_len != q->len)
    e888f568:	01444783          	lbu	a5,20(s0)
    e888f56c:	8bbd                	andi	a5,a5,15
    e888f56e:	e7a9                	bnez	a5,e888f5b8 <pbuf_realloc+0xc6>
    e888f570:	04e68463          	beq	a3,a4,e888f5b8 <pbuf_realloc+0xc6>
      && ((q->flags & PBUF_FLAG_IS_CUSTOM) == 0)
    e888f574:	01544783          	lbu	a5,21(s0)
    e888f578:	8b89                	andi	a5,a5,2
    e888f57a:	ef9d                	bnez	a5,e888f5b8 <pbuf_realloc+0xc6>
    q = (struct pbuf *)mem_trim(q, (mem_size_t)(((u8_t *)q->payload - (u8_t *)q) + rem_len));
    e888f57c:	640c                	ld	a1,8(s0)
    e888f57e:	8522                	mv	a0,s0
    e888f580:	8d81                	sub	a1,a1,s0
    e888f582:	95a6                	add	a1,a1,s1
    e888f584:	b37fe0ef          	jal	ra,e888e0ba <mem_trim>
    e888f588:	842a                	mv	s0,a0
    LWIP_ASSERT("mem_trim returned q == NULL", q != NULL);
    e888f58a:	e51d                	bnez	a0,e888f5b8 <pbuf_realloc+0xc6>
    e888f58c:	02f00593          	li	a1,47
    e888f590:	00041517          	auipc	a0,0x41
    e888f594:	64850513          	addi	a0,a0,1608 # e88d0bd8 <memp_pools+0x3e8>
    e888f598:	de1ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f59c:	00150693          	addi	a3,a0,1
    e888f5a0:	1bd00613          	li	a2,445
    e888f5a4:	00042597          	auipc	a1,0x42
    e888f5a8:	8fc58593          	addi	a1,a1,-1796 # e88d0ea0 <memp_pools+0x6b0>
    e888f5ac:	00040517          	auipc	a0,0x40
    e888f5b0:	b0450513          	addi	a0,a0,-1276 # e88cf0b0 <kSinTable1024+0x900>
    e888f5b4:	d13ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (q->next != NULL) {
    e888f5b8:	6008                	ld	a0,0(s0)
  q->len = rem_len;
    e888f5ba:	00941923          	sh	s1,18(s0)
  q->tot_len = q->len;
    e888f5be:	00941823          	sh	s1,16(s0)
  if (q->next != NULL) {
    e888f5c2:	c119                	beqz	a0,e888f5c8 <pbuf_realloc+0xd6>
    pbuf_free(q->next);
    e888f5c4:	c89ff0ef          	jal	ra,e888f24c <pbuf_free>
  q->next = NULL;
    e888f5c8:	00043023          	sd	zero,0(s0)
}
    e888f5cc:	70e2                	ld	ra,56(sp)
    e888f5ce:	6422                	ld	s0,8(sp)
    e888f5d0:	64c2                	ld	s1,16(sp)
    e888f5d2:	6962                	ld	s2,24(sp)
    e888f5d4:	7982                	ld	s3,32(sp)
    e888f5d6:	7a22                	ld	s4,40(sp)
    e888f5d8:	7ac2                	ld	s5,48(sp)
    e888f5da:	6121                	addi	sp,sp,64
    e888f5dc:	8082                	ret
    rem_len = (u16_t)(rem_len - q->len);
    e888f5de:	9c9d                	subw	s1,s1,a5
    q->tot_len = (u16_t)(q->tot_len - shrink);
    e888f5e0:	01045783          	lhu	a5,16(s0)
    rem_len = (u16_t)(rem_len - q->len);
    e888f5e4:	3c04b48b          	extu	s1,s1,15,0
    q->tot_len = (u16_t)(q->tot_len - shrink);
    e888f5e8:	00f907bb          	addw	a5,s2,a5
    e888f5ec:	00f41823          	sh	a5,16(s0)
    q = q->next;
    e888f5f0:	6000                	ld	s0,0(s0)
    LWIP_ASSERT("pbuf_realloc: q != NULL", q != NULL);
    e888f5f2:	f03d                	bnez	s0,e888f558 <pbuf_realloc+0x66>
    e888f5f4:	02f00593          	li	a1,47
    e888f5f8:	854e                	mv	a0,s3
    e888f5fa:	d7fec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f5fe:	00150693          	addi	a3,a0,1
    e888f602:	1af00613          	li	a2,431
    e888f606:	85d2                	mv	a1,s4
    e888f608:	8556                	mv	a0,s5
    e888f60a:	cbdec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888f60e:	b7a9                	j	e888f558 <pbuf_realloc+0x66>

00000000e888f610 <pbuf_free_header>:
{
    e888f610:	7179                	addi	sp,sp,-48
    e888f612:	ec22                	sd	s0,24(sp)
    e888f614:	f406                	sd	ra,40(sp)
    e888f616:	f026                	sd	s1,32(sp)
  struct pbuf *p = q;
    e888f618:	842a                	mv	s0,a0
  while (free_left && p) {
    e888f61a:	c595                	beqz	a1,e888f646 <pbuf_free_header+0x36>
    e888f61c:	c40d                	beqz	s0,e888f646 <pbuf_free_header+0x36>
    if (free_left >= p->len) {
    e888f61e:	01245783          	lhu	a5,18(s0)
    e888f622:	00f5ef63          	bltu	a1,a5,e888f640 <pbuf_free_header+0x30>
      free_left = (u16_t)(free_left - p->len);
    e888f626:	9d9d                	subw	a1,a1,a5
    e888f628:	3c05b58b          	extu	a1,a1,15,0
      p = p->next;
    e888f62c:	6004                	ld	s1,0(s0)
      pbuf_free(f);
    e888f62e:	8522                	mv	a0,s0
      f->next = 0;
    e888f630:	00043023          	sd	zero,0(s0)
      free_left = (u16_t)(free_left - p->len);
    e888f634:	e42e                	sd	a1,8(sp)
      pbuf_free(f);
    e888f636:	c17ff0ef          	jal	ra,e888f24c <pbuf_free>
      p = p->next;
    e888f63a:	8426                	mv	s0,s1
    e888f63c:	65a2                	ld	a1,8(sp)
    e888f63e:	bff1                	j	e888f61a <pbuf_free_header+0xa>
      pbuf_remove_header(p, free_left);
    e888f640:	8522                	mv	a0,s0
    e888f642:	b67ff0ef          	jal	ra,e888f1a8 <pbuf_remove_header>
}
    e888f646:	8522                	mv	a0,s0
    e888f648:	70a2                	ld	ra,40(sp)
    e888f64a:	6462                	ld	s0,24(sp)
    e888f64c:	7482                	ld	s1,32(sp)
    e888f64e:	6145                	addi	sp,sp,48
    e888f650:	8082                	ret

00000000e888f652 <pbuf_clen>:
  len = 0;
    e888f652:	4781                	li	a5,0
  while (p != NULL) {
    e888f654:	e119                	bnez	a0,e888f65a <pbuf_clen+0x8>
}
    e888f656:	853e                	mv	a0,a5
    e888f658:	8082                	ret
    ++len;
    e888f65a:	2785                	addiw	a5,a5,1
    e888f65c:	3c07b78b          	extu	a5,a5,15,0
    p = p->next;
    e888f660:	6108                	ld	a0,0(a0)
    e888f662:	bfcd                	j	e888f654 <pbuf_clen+0x2>

00000000e888f664 <pbuf_ref>:
  if (p != NULL) {
    e888f664:	c139                	beqz	a0,e888f6aa <pbuf_ref+0x46>
    SYS_ARCH_SET(p->ref, (LWIP_PBUF_REF_T)(p->ref + 1));
    e888f666:	01654783          	lbu	a5,22(a0)
    e888f66a:	2785                	addiw	a5,a5,1
    e888f66c:	0ff7f793          	andi	a5,a5,255
    e888f670:	00f50b23          	sb	a5,22(a0)
    LWIP_ASSERT("pbuf ref overflow", p->ref > 0);
    e888f674:	eb9d                	bnez	a5,e888f6aa <pbuf_ref+0x46>
{
    e888f676:	1141                	addi	sp,sp,-16
    LWIP_ASSERT("pbuf ref overflow", p->ref > 0);
    e888f678:	02f00593          	li	a1,47
    e888f67c:	00041517          	auipc	a0,0x41
    e888f680:	55c50513          	addi	a0,a0,1372 # e88d0bd8 <memp_pools+0x3e8>
{
    e888f684:	e406                	sd	ra,8(sp)
    LWIP_ASSERT("pbuf ref overflow", p->ref > 0);
    e888f686:	cf3ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f68a:	00150693          	addi	a3,a0,1
}
    e888f68e:	60a2                	ld	ra,8(sp)
    LWIP_ASSERT("pbuf ref overflow", p->ref > 0);
    e888f690:	34200613          	li	a2,834
    e888f694:	00042597          	auipc	a1,0x42
    e888f698:	82c58593          	addi	a1,a1,-2004 # e88d0ec0 <memp_pools+0x6d0>
    e888f69c:	00040517          	auipc	a0,0x40
    e888f6a0:	a1450513          	addi	a0,a0,-1516 # e88cf0b0 <kSinTable1024+0x900>
}
    e888f6a4:	0141                	addi	sp,sp,16
    LWIP_ASSERT("pbuf ref overflow", p->ref > 0);
    e888f6a6:	c21ec06f          	j	e887c2c6 <eLIBs_printf>
    e888f6aa:	8082                	ret

00000000e888f6ac <pbuf_cat>:
{
    e888f6ac:	1101                	addi	sp,sp,-32
    e888f6ae:	ec06                	sd	ra,24(sp)
    e888f6b0:	e422                	sd	s0,8(sp)
    e888f6b2:	e826                	sd	s1,16(sp)
  LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)",
    e888f6b4:	c501                	beqz	a0,e888f6bc <pbuf_cat+0x10>
    e888f6b6:	842a                	mv	s0,a0
    e888f6b8:	84ae                	mv	s1,a1
    e888f6ba:	e1a9                	bnez	a1,e888f6fc <pbuf_cat+0x50>
    e888f6bc:	02f00593          	li	a1,47
    e888f6c0:	00041517          	auipc	a0,0x41
    e888f6c4:	51850513          	addi	a0,a0,1304 # e88d0bd8 <memp_pools+0x3e8>
    e888f6c8:	cb1ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
}
    e888f6cc:	6422                	ld	s0,8(sp)
    e888f6ce:	60e2                	ld	ra,24(sp)
    e888f6d0:	64c2                	ld	s1,16(sp)
  LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)",
    e888f6d2:	00150693          	addi	a3,a0,1
    e888f6d6:	35a00613          	li	a2,858
    e888f6da:	00041597          	auipc	a1,0x41
    e888f6de:	5be58593          	addi	a1,a1,1470 # e88d0c98 <memp_pools+0x4a8>
    e888f6e2:	00040517          	auipc	a0,0x40
    e888f6e6:	9ce50513          	addi	a0,a0,-1586 # e88cf0b0 <kSinTable1024+0x900>
}
    e888f6ea:	6105                	addi	sp,sp,32
  LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)",
    e888f6ec:	bdbec06f          	j	e887c2c6 <eLIBs_printf>
    p->tot_len = (u16_t)(p->tot_len + t->tot_len);
    e888f6f0:	0104d783          	lhu	a5,16(s1)
    e888f6f4:	9fb9                	addw	a5,a5,a4
    e888f6f6:	00f41823          	sh	a5,16(s0)
    e888f6fa:	8436                	mv	s0,a3
  for (p = h; p->next != NULL; p = p->next) {
    e888f6fc:	6014                	ld	a3,0(s0)
    e888f6fe:	01045703          	lhu	a4,16(s0)
    e888f702:	f6fd                	bnez	a3,e888f6f0 <pbuf_cat+0x44>
  LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len);
    e888f704:	01245783          	lhu	a5,18(s0)
    e888f708:	06e78063          	beq	a5,a4,e888f768 <pbuf_cat+0xbc>
    e888f70c:	02f00593          	li	a1,47
    e888f710:	00041517          	auipc	a0,0x41
    e888f714:	4c850513          	addi	a0,a0,1224 # e88d0bd8 <memp_pools+0x3e8>
    e888f718:	c61ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f71c:	00150693          	addi	a3,a0,1
    e888f720:	36200613          	li	a2,866
    e888f724:	00041597          	auipc	a1,0x41
    e888f728:	5ac58593          	addi	a1,a1,1452 # e88d0cd0 <memp_pools+0x4e0>
    e888f72c:	00040517          	auipc	a0,0x40
    e888f730:	98450513          	addi	a0,a0,-1660 # e88cf0b0 <kSinTable1024+0x900>
    e888f734:	b93ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("p->next == NULL", p->next == NULL);
    e888f738:	601c                	ld	a5,0(s0)
    e888f73a:	c79d                	beqz	a5,e888f768 <pbuf_cat+0xbc>
    e888f73c:	02f00593          	li	a1,47
    e888f740:	00041517          	auipc	a0,0x41
    e888f744:	49850513          	addi	a0,a0,1176 # e88d0bd8 <memp_pools+0x3e8>
    e888f748:	c31ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f74c:	00150693          	addi	a3,a0,1
    e888f750:	36300613          	li	a2,867
    e888f754:	00041597          	auipc	a1,0x41
    e888f758:	5ac58593          	addi	a1,a1,1452 # e88d0d00 <memp_pools+0x510>
    e888f75c:	00040517          	auipc	a0,0x40
    e888f760:	95450513          	addi	a0,a0,-1708 # e88cf0b0 <kSinTable1024+0x900>
    e888f764:	b63ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  p->tot_len = (u16_t)(p->tot_len + t->tot_len);
    e888f768:	0104d703          	lhu	a4,16(s1)
    e888f76c:	01045783          	lhu	a5,16(s0)
  p->next = t;
    e888f770:	e004                	sd	s1,0(s0)
  p->tot_len = (u16_t)(p->tot_len + t->tot_len);
    e888f772:	9fb9                	addw	a5,a5,a4
    e888f774:	00f41823          	sh	a5,16(s0)
}
    e888f778:	60e2                	ld	ra,24(sp)
    e888f77a:	6422                	ld	s0,8(sp)
    e888f77c:	64c2                	ld	s1,16(sp)
    e888f77e:	6105                	addi	sp,sp,32
    e888f780:	8082                	ret

00000000e888f782 <pbuf_chain>:
{
    e888f782:	1141                	addi	sp,sp,-16
    e888f784:	e022                	sd	s0,0(sp)
    e888f786:	e406                	sd	ra,8(sp)
    e888f788:	842e                	mv	s0,a1
  pbuf_cat(h, t);
    e888f78a:	f23ff0ef          	jal	ra,e888f6ac <pbuf_cat>
  pbuf_ref(t);
    e888f78e:	8522                	mv	a0,s0
}
    e888f790:	6402                	ld	s0,0(sp)
    e888f792:	60a2                	ld	ra,8(sp)
    e888f794:	0141                	addi	sp,sp,16
  pbuf_ref(t);
    e888f796:	ecfff06f          	j	e888f664 <pbuf_ref>

00000000e888f79a <pbuf_copy>:
{
    e888f79a:	715d                	addi	sp,sp,-80
    e888f79c:	e486                	sd	ra,72(sp)
    e888f79e:	e0a2                	sd	s0,64(sp)
    e888f7a0:	fc26                	sd	s1,56(sp)
    e888f7a2:	f84a                	sd	s2,48(sp)
    e888f7a4:	f44e                	sd	s3,40(sp)
    e888f7a6:	f052                	sd	s4,32(sp)
    e888f7a8:	ec56                	sd	s5,24(sp)
    e888f7aa:	e85a                	sd	s6,16(sp)
    e888f7ac:	e45e                	sd	s7,8(sp)
    e888f7ae:	e062                	sd	s8,0(sp)
  LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) &&
    e888f7b0:	c17d                	beqz	a0,e888f896 <pbuf_copy+0xfc>
    e888f7b2:	842e                	mv	s0,a1
    e888f7b4:	c1ed                	beqz	a1,e888f896 <pbuf_copy+0xfc>
    e888f7b6:	01055703          	lhu	a4,16(a0)
    e888f7ba:	0105d783          	lhu	a5,16(a1)
    e888f7be:	84aa                	mv	s1,a0
  size_t offset_to = 0, offset_from = 0, len;
    e888f7c0:	4981                	li	s3,0
    e888f7c2:	4901                	li	s2,0
  LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) &&
    e888f7c4:	0cf76963          	bltu	a4,a5,e888f896 <pbuf_copy+0xfc>
    LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len);
    e888f7c8:	00041a97          	auipc	s5,0x41
    e888f7cc:	410a8a93          	addi	s5,s5,1040 # e88d0bd8 <memp_pools+0x3e8>
    e888f7d0:	00041b97          	auipc	s7,0x41
    e888f7d4:	588b8b93          	addi	s7,s7,1416 # e88d0d58 <memp_pools+0x568>
    e888f7d8:	00040b17          	auipc	s6,0x40
    e888f7dc:	8d8b0b13          	addi	s6,s6,-1832 # e88cf0b0 <kSinTable1024+0x900>
    LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len);
    e888f7e0:	00041c17          	auipc	s8,0x41
    e888f7e4:	590c0c13          	addi	s8,s8,1424 # e88d0d70 <memp_pools+0x580>
    if ((p_to->len - offset_to) >= (p_from->len - offset_from)) {
    e888f7e8:	0124da03          	lhu	s4,18(s1)
    e888f7ec:	01245783          	lhu	a5,18(s0)
    MEMCPY((u8_t *)p_to->payload + offset_to, (u8_t *)p_from->payload + offset_from, len);
    e888f7f0:	640c                	ld	a1,8(s0)
    if ((p_to->len - offset_to) >= (p_from->len - offset_from)) {
    e888f7f2:	412a0733          	sub	a4,s4,s2
    e888f7f6:	413787b3          	sub	a5,a5,s3
    MEMCPY((u8_t *)p_to->payload + offset_to, (u8_t *)p_from->payload + offset_from, len);
    e888f7fa:	6488                	ld	a0,8(s1)
    e888f7fc:	00e7ba33          	sltu	s4,a5,a4
    e888f800:	4147178b          	mveqz	a5,a4,s4
    e888f804:	863e                	mv	a2,a5
    e888f806:	95ce                	add	a1,a1,s3
    e888f808:	954a                	add	a0,a0,s2
    e888f80a:	8a3e                	mv	s4,a5
    e888f80c:	b95ec0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    offset_to += len;
    e888f810:	9952                	add	s2,s2,s4
    LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len);
    e888f812:	0124d783          	lhu	a5,18(s1)
    offset_from += len;
    e888f816:	99d2                	add	s3,s3,s4
    LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len);
    e888f818:	0127ff63          	bgeu	a5,s2,e888f836 <pbuf_copy+0x9c>
    e888f81c:	02f00593          	li	a1,47
    e888f820:	8556                	mv	a0,s5
    e888f822:	b57ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f826:	00150693          	addi	a3,a0,1
    e888f82a:	3d900613          	li	a2,985
    e888f82e:	85de                	mv	a1,s7
    e888f830:	855a                	mv	a0,s6
    e888f832:	a95ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len);
    e888f836:	01245783          	lhu	a5,18(s0)
    e888f83a:	0137ff63          	bgeu	a5,s3,e888f858 <pbuf_copy+0xbe>
    e888f83e:	02f00593          	li	a1,47
    e888f842:	8556                	mv	a0,s5
    e888f844:	b35ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f848:	00150693          	addi	a3,a0,1
    e888f84c:	3da00613          	li	a2,986
    e888f850:	85e2                	mv	a1,s8
    e888f852:	855a                	mv	a0,s6
    e888f854:	a73ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (offset_from >= p_from->len) {
    e888f858:	01245783          	lhu	a5,18(s0)
    e888f85c:	00f9e463          	bltu	s3,a5,e888f864 <pbuf_copy+0xca>
      p_from = p_from->next;
    e888f860:	6000                	ld	s0,0(s0)
      offset_from = 0;
    e888f862:	4981                	li	s3,0
    if (offset_to == p_to->len) {
    e888f864:	0124d783          	lhu	a5,18(s1)
    e888f868:	06f91b63          	bne	s2,a5,e888f8de <pbuf_copy+0x144>
      p_to = p_to->next;
    e888f86c:	6084                	ld	s1,0(s1)
      LWIP_ERROR("p_to != NULL", (p_to != NULL) || (p_from == NULL), return ERR_ARG;);
    e888f86e:	e4bd                	bnez	s1,e888f8dc <pbuf_copy+0x142>
  return ERR_OK;
    e888f870:	4501                	li	a0,0
      LWIP_ERROR("p_to != NULL", (p_to != NULL) || (p_from == NULL), return ERR_ARG;);
    e888f872:	c829                	beqz	s0,e888f8c4 <pbuf_copy+0x12a>
    e888f874:	02f00593          	li	a1,47
    e888f878:	00041517          	auipc	a0,0x41
    e888f87c:	36050513          	addi	a0,a0,864 # e88d0bd8 <memp_pools+0x3e8>
    e888f880:	af9ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f884:	00150693          	addi	a3,a0,1
    e888f888:	3e400613          	li	a2,996
    e888f88c:	00041597          	auipc	a1,0x41
    e888f890:	50458593          	addi	a1,a1,1284 # e88d0d90 <memp_pools+0x5a0>
    e888f894:	a00d                	j	e888f8b6 <pbuf_copy+0x11c>
  LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) &&
    e888f896:	02f00593          	li	a1,47
    e888f89a:	00041517          	auipc	a0,0x41
    e888f89e:	33e50513          	addi	a0,a0,830 # e88d0bd8 <memp_pools+0x3e8>
    e888f8a2:	ad7ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f8a6:	00150693          	addi	a3,a0,1
    e888f8aa:	3ca00613          	li	a2,970
    e888f8ae:	00041597          	auipc	a1,0x41
    e888f8b2:	47a58593          	addi	a1,a1,1146 # e88d0d28 <memp_pools+0x538>
      LWIP_ERROR("p_to != NULL", (p_to != NULL) || (p_from == NULL), return ERR_ARG;);
    e888f8b6:	0003f517          	auipc	a0,0x3f
    e888f8ba:	7fa50513          	addi	a0,a0,2042 # e88cf0b0 <kSinTable1024+0x900>
    e888f8be:	a09ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888f8c2:	5541                	li	a0,-16
}
    e888f8c4:	60a6                	ld	ra,72(sp)
    e888f8c6:	6406                	ld	s0,64(sp)
    e888f8c8:	74e2                	ld	s1,56(sp)
    e888f8ca:	7942                	ld	s2,48(sp)
    e888f8cc:	79a2                	ld	s3,40(sp)
    e888f8ce:	7a02                	ld	s4,32(sp)
    e888f8d0:	6ae2                	ld	s5,24(sp)
    e888f8d2:	6b42                	ld	s6,16(sp)
    e888f8d4:	6ba2                	ld	s7,8(sp)
    e888f8d6:	6c02                	ld	s8,0(sp)
    e888f8d8:	6161                	addi	sp,sp,80
    e888f8da:	8082                	ret
      offset_to = 0;
    e888f8dc:	4901                	li	s2,0
    if ((p_from != NULL) && (p_from->len == p_from->tot_len)) {
    e888f8de:	c029                	beqz	s0,e888f920 <pbuf_copy+0x186>
    e888f8e0:	01245703          	lhu	a4,18(s0)
    e888f8e4:	01045783          	lhu	a5,16(s0)
    e888f8e8:	02f71c63          	bne	a4,a5,e888f920 <pbuf_copy+0x186>
      LWIP_ERROR("pbuf_copy() does not allow packet queues!",
    e888f8ec:	601c                	ld	a5,0(s0)
    e888f8ee:	cb8d                	beqz	a5,e888f920 <pbuf_copy+0x186>
    e888f8f0:	02f00593          	li	a1,47
    e888f8f4:	00041517          	auipc	a0,0x41
    e888f8f8:	2e450513          	addi	a0,a0,740 # e88d0bd8 <memp_pools+0x3e8>
    e888f8fc:	a7dec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f900:	00150693          	addi	a3,a0,1
    e888f904:	3ea00613          	li	a2,1002
      LWIP_ERROR("pbuf_copy() does not allow packet queues!",
    e888f908:	00041597          	auipc	a1,0x41
    e888f90c:	49858593          	addi	a1,a1,1176 # e88d0da0 <memp_pools+0x5b0>
    e888f910:	0003f517          	auipc	a0,0x3f
    e888f914:	7a050513          	addi	a0,a0,1952 # e88cf0b0 <kSinTable1024+0x900>
    e888f918:	9afec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888f91c:	5569                	li	a0,-6
    e888f91e:	b75d                	j	e888f8c4 <pbuf_copy+0x12a>
    if ((p_to != NULL) && (p_to->len == p_to->tot_len)) {
    e888f920:	0124d703          	lhu	a4,18(s1)
    e888f924:	0104d783          	lhu	a5,16(s1)
    e888f928:	02f71163          	bne	a4,a5,e888f94a <pbuf_copy+0x1b0>
      LWIP_ERROR("pbuf_copy() does not allow packet queues!",
    e888f92c:	609c                	ld	a5,0(s1)
    e888f92e:	cf91                	beqz	a5,e888f94a <pbuf_copy+0x1b0>
    e888f930:	02f00593          	li	a1,47
    e888f934:	00041517          	auipc	a0,0x41
    e888f938:	2a450513          	addi	a0,a0,676 # e88d0bd8 <memp_pools+0x3e8>
    e888f93c:	a3dec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f940:	00150693          	addi	a3,a0,1
    e888f944:	3ef00613          	li	a2,1007
    e888f948:	b7c1                	j	e888f908 <pbuf_copy+0x16e>
  } while (p_from);
    e888f94a:	e8041fe3          	bnez	s0,e888f7e8 <pbuf_copy+0x4e>
  return ERR_OK;
    e888f94e:	4501                	li	a0,0
    e888f950:	bf95                	j	e888f8c4 <pbuf_copy+0x12a>

00000000e888f952 <pbuf_copy_partial>:
{
    e888f952:	7179                	addi	sp,sp,-48
    e888f954:	f406                	sd	ra,40(sp)
    e888f956:	f052                	sd	s4,32(sp)
    e888f958:	f891540b          	sdd	s0,s1,(sp),0,4
    e888f95c:	fb31590b          	sdd	s2,s3,(sp),1,4
  LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;);
    e888f960:	e129                	bnez	a0,e888f9a2 <pbuf_copy_partial+0x50>
    e888f962:	02f00593          	li	a1,47
    e888f966:	00041517          	auipc	a0,0x41
    e888f96a:	27250513          	addi	a0,a0,626 # e88d0bd8 <memp_pools+0x3e8>
    e888f96e:	a0bec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f972:	00150693          	addi	a3,a0,1
    e888f976:	40a00613          	li	a2,1034
    e888f97a:	00041597          	auipc	a1,0x41
    e888f97e:	45658593          	addi	a1,a1,1110 # e88d0dd0 <memp_pools+0x5e0>
    e888f982:	0003f517          	auipc	a0,0x3f
    e888f986:	72e50513          	addi	a0,a0,1838 # e88cf0b0 <kSinTable1024+0x900>
    e888f98a:	93dec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888f98e:	4401                	li	s0,0
}
    e888f990:	8522                	mv	a0,s0
    e888f992:	70a2                	ld	ra,40(sp)
    e888f994:	f891440b          	ldd	s0,s1,(sp),0,4
    e888f998:	7a02                	ld	s4,32(sp)
    e888f99a:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888f99e:	6145                	addi	sp,sp,48
    e888f9a0:	8082                	ret
    e888f9a2:	892a                	mv	s2,a0
    e888f9a4:	8a2e                	mv	s4,a1
    e888f9a6:	84b2                	mv	s1,a2
  u16_t left = 0;
    e888f9a8:	4401                	li	s0,0
  LWIP_ERROR("pbuf_copy_partial: invalid dataptr", (dataptr != NULL), return 0;);
    e888f9aa:	e1b1                	bnez	a1,e888f9ee <pbuf_copy_partial+0x9c>
    e888f9ac:	02f00593          	li	a1,47
    e888f9b0:	00041517          	auipc	a0,0x41
    e888f9b4:	22850513          	addi	a0,a0,552 # e88d0bd8 <memp_pools+0x3e8>
    e888f9b8:	9c1ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888f9bc:	00150693          	addi	a3,a0,1
    e888f9c0:	40b00613          	li	a2,1035
    e888f9c4:	00041597          	auipc	a1,0x41
    e888f9c8:	42c58593          	addi	a1,a1,1068 # e88d0df0 <memp_pools+0x600>
    e888f9cc:	0003f517          	auipc	a0,0x3f
    e888f9d0:	6e450513          	addi	a0,a0,1764 # e88cf0b0 <kSinTable1024+0x900>
    e888f9d4:	8f3ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888f9d8:	bf65                	j	e888f990 <pbuf_copy_partial+0x3e>
    if ((offset != 0) && (offset >= p->len)) {
    e888f9da:	01295583          	lhu	a1,18(s2) # 10012 <memcmp-0xe87effee>
    e888f9de:	ce81                	beqz	a3,e888f9f6 <pbuf_copy_partial+0xa4>
    e888f9e0:	00b6eb63          	bltu	a3,a1,e888f9f6 <pbuf_copy_partial+0xa4>
      offset = (u16_t)(offset - p->len);
    e888f9e4:	9e8d                	subw	a3,a3,a1
    e888f9e6:	3c06b68b          	extu	a3,a3,15,0
  for (p = buf; len != 0 && p != NULL; p = p->next) {
    e888f9ea:	00093903          	ld	s2,0(s2)
    e888f9ee:	d0cd                	beqz	s1,e888f990 <pbuf_copy_partial+0x3e>
    e888f9f0:	fe0915e3          	bnez	s2,e888f9da <pbuf_copy_partial+0x88>
    e888f9f4:	bf71                	j	e888f990 <pbuf_copy_partial+0x3e>
      buf_copy_len = (u16_t)(p->len - offset);
    e888f9f6:	9d95                	subw	a1,a1,a3
    e888f9f8:	3c05b58b          	extu	a1,a1,15,0
      if (buf_copy_len > len) {
    e888f9fc:	3c05b98b          	extu	s3,a1,15,0
    e888fa00:	00b4f463          	bgeu	s1,a1,e888fa08 <pbuf_copy_partial+0xb6>
    e888fa04:	3c04b98b          	extu	s3,s1,15,0
      MEMCPY(&((char *)dataptr)[left], &((char *)p->payload)[offset], buf_copy_len);
    e888fa08:	00893583          	ld	a1,8(s2)
    e888fa0c:	008a0533          	add	a0,s4,s0
    e888fa10:	864e                	mv	a2,s3
    e888fa12:	95b6                	add	a1,a1,a3
    e888fa14:	98dec0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
      copied_total = (u16_t)(copied_total + buf_copy_len);
    e888fa18:	0134043b          	addw	s0,s0,s3
      len = (u16_t)(len - buf_copy_len);
    e888fa1c:	413484bb          	subw	s1,s1,s3
      copied_total = (u16_t)(copied_total + buf_copy_len);
    e888fa20:	3c04340b          	extu	s0,s0,15,0
      len = (u16_t)(len - buf_copy_len);
    e888fa24:	3c04b48b          	extu	s1,s1,15,0
      offset = 0;
    e888fa28:	4681                	li	a3,0
    e888fa2a:	b7c1                	j	e888f9ea <pbuf_copy_partial+0x98>

00000000e888fa2c <pbuf_split_64k>:
  *rest = NULL;
    e888fa2c:	0005b023          	sd	zero,0(a1)
  if ((p != NULL) && (p->next != NULL)) {
    e888fa30:	c961                	beqz	a0,e888fb00 <pbuf_split_64k+0xd4>
    e888fa32:	611c                	ld	a5,0(a0)
    e888fa34:	c7f1                	beqz	a5,e888fb00 <pbuf_split_64k+0xd4>
{
    e888fa36:	7139                	addi	sp,sp,-64
    e888fa38:	f891540b          	sdd	s0,s1,(sp),0,4
    e888fa3c:	fb31590b          	sdd	s2,s3,(sp),1,4
    e888fa40:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e888fa44:	fc06                	sd	ra,56(sp)
    e888fa46:	f85a                	sd	s6,48(sp)
    u16_t tot_len_front = p->len;
    e888fa48:	01255683          	lhu	a3,18(a0)
    e888fa4c:	862a                	mv	a2,a0
    while ((r != NULL) && ((u16_t)(tot_len_front + r->len) >= tot_len_front)) {
    e888fa4e:	0127d703          	lhu	a4,18(a5)
    e888fa52:	9f35                	addw	a4,a4,a3
    e888fa54:	3c07370b          	extu	a4,a4,15,0
    e888fa58:	2681                	sext.w	a3,a3
    e888fa5a:	08d77d63          	bgeu	a4,a3,e888faf4 <pbuf_split_64k+0xc8>
    e888fa5e:	843e                	mv	s0,a5
    i->next = NULL;
    e888fa60:	00063023          	sd	zero,0(a2)
    if (r != NULL) {
    e888fa64:	cc35                	beqz	s0,e888fae0 <pbuf_split_64k+0xb4>
    e888fa66:	89ae                	mv	s3,a1
    e888fa68:	84aa                	mv	s1,a0
    e888fa6a:	892a                	mv	s2,a0
        LWIP_ASSERT("tot_len/len mismatch in last pbuf",
    e888fa6c:	00041a17          	auipc	s4,0x41
    e888fa70:	16ca0a13          	addi	s4,s4,364 # e88d0bd8 <memp_pools+0x3e8>
    e888fa74:	00041a97          	auipc	s5,0x41
    e888fa78:	484a8a93          	addi	s5,s5,1156 # e88d0ef8 <memp_pools+0x708>
    e888fa7c:	0003fb17          	auipc	s6,0x3f
    e888fa80:	634b0b13          	addi	s6,s6,1588 # e88cf0b0 <kSinTable1024+0x900>
        i->tot_len = (u16_t)(i->tot_len - r->tot_len);
    e888fa84:	01045703          	lhu	a4,16(s0)
    e888fa88:	01095783          	lhu	a5,16(s2)
    e888fa8c:	9f99                	subw	a5,a5,a4
    e888fa8e:	3c07b78b          	extu	a5,a5,15,0
        LWIP_ASSERT("tot_len/len mismatch in last pbuf",
    e888fa92:	00093703          	ld	a4,0(s2)
        i->tot_len = (u16_t)(i->tot_len - r->tot_len);
    e888fa96:	00f91823          	sh	a5,16(s2)
        LWIP_ASSERT("tot_len/len mismatch in last pbuf",
    e888fa9a:	e315                	bnez	a4,e888fabe <pbuf_split_64k+0x92>
    e888fa9c:	01295703          	lhu	a4,18(s2)
    e888faa0:	00f70f63          	beq	a4,a5,e888fabe <pbuf_split_64k+0x92>
    e888faa4:	02f00593          	li	a1,47
    e888faa8:	8552                	mv	a0,s4
    e888faaa:	8cfec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888faae:	00150693          	addi	a3,a0,1
    e888fab2:	47000613          	li	a2,1136
    e888fab6:	85d6                	mv	a1,s5
    e888fab8:	855a                	mv	a0,s6
    e888faba:	80dec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
      for (i = p; i != NULL; i = i->next) {
    e888fabe:	00093903          	ld	s2,0(s2)
    e888fac2:	fc0911e3          	bnez	s2,e888fa84 <pbuf_split_64k+0x58>
      if (p->flags & PBUF_FLAG_TCP_FIN) {
    e888fac6:	0154c783          	lbu	a5,21(s1)
    e888faca:	0207f793          	andi	a5,a5,32
    e888face:	c799                	beqz	a5,e888fadc <pbuf_split_64k+0xb0>
        r->flags |= PBUF_FLAG_TCP_FIN;
    e888fad0:	01544783          	lbu	a5,21(s0)
    e888fad4:	0207e793          	ori	a5,a5,32
    e888fad8:	00f40aa3          	sb	a5,21(s0)
      *rest = r;
    e888fadc:	0089b023          	sd	s0,0(s3)
}
    e888fae0:	70e2                	ld	ra,56(sp)
    e888fae2:	f891440b          	ldd	s0,s1,(sp),0,4
    e888fae6:	7b42                	ld	s6,48(sp)
    e888fae8:	fb31490b          	ldd	s2,s3,(sp),1,4
    e888faec:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e888faf0:	6121                	addi	sp,sp,64
    e888faf2:	8082                	ret
      r = r->next;
    e888faf4:	6380                	ld	s0,0(a5)
    while ((r != NULL) && ((u16_t)(tot_len_front + r->len) >= tot_len_front)) {
    e888faf6:	86ba                	mv	a3,a4
    e888faf8:	863e                	mv	a2,a5
    e888fafa:	d03d                	beqz	s0,e888fa60 <pbuf_split_64k+0x34>
    e888fafc:	87a2                	mv	a5,s0
    e888fafe:	bf81                	j	e888fa4e <pbuf_split_64k+0x22>
    e888fb00:	8082                	ret

00000000e888fb02 <pbuf_take>:
 *
 * @return ERR_OK if successful, ERR_MEM if the pbuf is not big enough
 */
err_t
pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len)
{
    e888fb02:	715d                	addi	sp,sp,-80
    e888fb04:	e486                	sd	ra,72(sp)
    e888fb06:	e0a2                	sd	s0,64(sp)
    e888fb08:	fc26                	sd	s1,56(sp)
    e888fb0a:	f84a                	sd	s2,48(sp)
    e888fb0c:	f44e                	sd	s3,40(sp)
    e888fb0e:	f052                	sd	s4,32(sp)
    e888fb10:	ec56                	sd	s5,24(sp)
    e888fb12:	e85a                	sd	s6,16(sp)
    e888fb14:	e45e                	sd	s7,8(sp)
    e888fb16:	e062                	sd	s8,0(sp)
  struct pbuf *p;
  size_t buf_copy_len;
  size_t total_copy_len = len;
  size_t copied_total = 0;

  LWIP_ERROR("pbuf_take: invalid buf", (buf != NULL), return ERR_ARG;);
    e888fb18:	e529                	bnez	a0,e888fb62 <pbuf_take+0x60>
    e888fb1a:	02f00593          	li	a1,47
    e888fb1e:	00041517          	auipc	a0,0x41
    e888fb22:	0ba50513          	addi	a0,a0,186 # e88d0bd8 <memp_pools+0x3e8>
    e888fb26:	853ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888fb2a:	00150693          	addi	a3,a0,1
    e888fb2e:	4b300613          	li	a2,1203
    e888fb32:	00041597          	auipc	a1,0x41
    e888fb36:	3ee58593          	addi	a1,a1,1006 # e88d0f20 <memp_pools+0x730>
  LWIP_ERROR("pbuf_take: invalid dataptr", (dataptr != NULL), return ERR_ARG;);
    e888fb3a:	0003f517          	auipc	a0,0x3f
    e888fb3e:	57650513          	addi	a0,a0,1398 # e88cf0b0 <kSinTable1024+0x900>
    e888fb42:	f84ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888fb46:	5441                	li	s0,-16
    total_copy_len -= buf_copy_len;
    copied_total += buf_copy_len;
  }
  LWIP_ASSERT("did not copy all data", total_copy_len == 0 && copied_total == len);
  return ERR_OK;
}
    e888fb48:	8522                	mv	a0,s0
    e888fb4a:	60a6                	ld	ra,72(sp)
    e888fb4c:	6406                	ld	s0,64(sp)
    e888fb4e:	74e2                	ld	s1,56(sp)
    e888fb50:	7942                	ld	s2,48(sp)
    e888fb52:	79a2                	ld	s3,40(sp)
    e888fb54:	7a02                	ld	s4,32(sp)
    e888fb56:	6ae2                	ld	s5,24(sp)
    e888fb58:	6b42                	ld	s6,16(sp)
    e888fb5a:	6ba2                	ld	s7,8(sp)
    e888fb5c:	6c02                	ld	s8,0(sp)
    e888fb5e:	6161                	addi	sp,sp,80
    e888fb60:	8082                	ret
    e888fb62:	8aae                	mv	s5,a1
  LWIP_ERROR("pbuf_take: invalid dataptr", (dataptr != NULL), return ERR_ARG;);
    e888fb64:	e195                	bnez	a1,e888fb88 <pbuf_take+0x86>
    e888fb66:	02f00593          	li	a1,47
    e888fb6a:	00041517          	auipc	a0,0x41
    e888fb6e:	06e50513          	addi	a0,a0,110 # e88d0bd8 <memp_pools+0x3e8>
    e888fb72:	807ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888fb76:	00150693          	addi	a3,a0,1
    e888fb7a:	4b400613          	li	a2,1204
    e888fb7e:	00041597          	auipc	a1,0x41
    e888fb82:	3ba58593          	addi	a1,a1,954 # e88d0f38 <memp_pools+0x748>
    e888fb86:	bf55                	j	e888fb3a <pbuf_take+0x38>
  LWIP_ERROR("pbuf_take: buf not large enough", (buf->tot_len >= len), return ERR_MEM;);
    e888fb88:	01055783          	lhu	a5,16(a0)
    e888fb8c:	842a                	mv	s0,a0
    e888fb8e:	8a32                	mv	s4,a2
  size_t total_copy_len = len;
    e888fb90:	8932                	mv	s2,a2
  size_t copied_total = 0;
    e888fb92:	4981                	li	s3,0
  LWIP_ERROR("pbuf_take: buf not large enough", (buf->tot_len >= len), return ERR_MEM;);
    e888fb94:	04c7ea63          	bltu	a5,a2,e888fbe8 <pbuf_take+0xe6>
    LWIP_ASSERT("pbuf_take: invalid pbuf", p != NULL);
    e888fb98:	00041b17          	auipc	s6,0x41
    e888fb9c:	040b0b13          	addi	s6,s6,64 # e88d0bd8 <memp_pools+0x3e8>
    e888fba0:	00041b97          	auipc	s7,0x41
    e888fba4:	3d8b8b93          	addi	s7,s7,984 # e88d0f78 <memp_pools+0x788>
    e888fba8:	0003fc17          	auipc	s8,0x3f
    e888fbac:	508c0c13          	addi	s8,s8,1288 # e88cf0b0 <kSinTable1024+0x900>
  for (p = buf; total_copy_len != 0; p = p->next) {
    e888fbb0:	06091463          	bnez	s2,e888fc18 <pbuf_take+0x116>
  return ERR_OK;
    e888fbb4:	4401                	li	s0,0
  LWIP_ASSERT("did not copy all data", total_copy_len == 0 && copied_total == len);
    e888fbb6:	f94989e3          	beq	s3,s4,e888fb48 <pbuf_take+0x46>
    e888fbba:	02f00593          	li	a1,47
    e888fbbe:	00041517          	auipc	a0,0x41
    e888fbc2:	01a50513          	addi	a0,a0,26 # e88d0bd8 <memp_pools+0x3e8>
    e888fbc6:	fb2ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888fbca:	00150693          	addi	a3,a0,1
    e888fbce:	4c800613          	li	a2,1224
    e888fbd2:	00041597          	auipc	a1,0x41
    e888fbd6:	3be58593          	addi	a1,a1,958 # e88d0f90 <memp_pools+0x7a0>
    e888fbda:	0003f517          	auipc	a0,0x3f
    e888fbde:	4d650513          	addi	a0,a0,1238 # e88cf0b0 <kSinTable1024+0x900>
    e888fbe2:	ee4ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888fbe6:	b78d                	j	e888fb48 <pbuf_take+0x46>
  LWIP_ERROR("pbuf_take: buf not large enough", (buf->tot_len >= len), return ERR_MEM;);
    e888fbe8:	02f00593          	li	a1,47
    e888fbec:	00041517          	auipc	a0,0x41
    e888fbf0:	fec50513          	addi	a0,a0,-20 # e88d0bd8 <memp_pools+0x3e8>
    e888fbf4:	f84ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888fbf8:	00150693          	addi	a3,a0,1
    e888fbfc:	4b500613          	li	a2,1205
    e888fc00:	00041597          	auipc	a1,0x41
    e888fc04:	35858593          	addi	a1,a1,856 # e88d0f58 <memp_pools+0x768>
    e888fc08:	0003f517          	auipc	a0,0x3f
    e888fc0c:	4a850513          	addi	a0,a0,1192 # e88cf0b0 <kSinTable1024+0x900>
    e888fc10:	eb6ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888fc14:	547d                	li	s0,-1
    e888fc16:	bf0d                	j	e888fb48 <pbuf_take+0x46>
    LWIP_ASSERT("pbuf_take: invalid pbuf", p != NULL);
    e888fc18:	ec11                	bnez	s0,e888fc34 <pbuf_take+0x132>
    e888fc1a:	02f00593          	li	a1,47
    e888fc1e:	855a                	mv	a0,s6
    e888fc20:	f58ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888fc24:	00150693          	addi	a3,a0,1
    e888fc28:	4bd00613          	li	a2,1213
    e888fc2c:	85de                	mv	a1,s7
    e888fc2e:	8562                	mv	a0,s8
    e888fc30:	e96ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (buf_copy_len > p->len) {
    e888fc34:	01245483          	lhu	s1,18(s0)
    MEMCPY(p->payload, &((const char *)dataptr)[copied_total], buf_copy_len);
    e888fc38:	6408                	ld	a0,8(s0)
    e888fc3a:	013a85b3          	add	a1,s5,s3
    e888fc3e:	009937b3          	sltu	a5,s2,s1
    e888fc42:	42f9148b          	mvnez	s1,s2,a5
    e888fc46:	8626                	mv	a2,s1
    e888fc48:	f58ec0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    total_copy_len -= buf_copy_len;
    e888fc4c:	40990933          	sub	s2,s2,s1
    copied_total += buf_copy_len;
    e888fc50:	99a6                	add	s3,s3,s1
  for (p = buf; total_copy_len != 0; p = p->next) {
    e888fc52:	6000                	ld	s0,0(s0)
    e888fc54:	bfb1                	j	e888fbb0 <pbuf_take+0xae>

00000000e888fc56 <pbuf_take_at>:
 *
 * @return ERR_OK if successful, ERR_MEM if the pbuf is not big enough
 */
err_t
pbuf_take_at(struct pbuf *buf, const void *dataptr, u16_t len, u16_t offset)
{
    e888fc56:	7139                	addi	sp,sp,-64
    e888fc58:	fa91540b          	sdd	s0,s1,(sp),1,4
    e888fc5c:	fd31590b          	sdd	s2,s3,(sp),2,4
    e888fc60:	8432                	mv	s0,a2
    e888fc62:	89ae                	mv	s3,a1
  const struct pbuf *out = pbuf_skip_const(in, in_offset, out_offset);
    e888fc64:	00e10613          	addi	a2,sp,14
    e888fc68:	85b6                	mv	a1,a3
{
    e888fc6a:	fc06                	sd	ra,56(sp)
    e888fc6c:	f852                	sd	s4,48(sp)
  const struct pbuf *out = pbuf_skip_const(in, in_offset, out_offset);
    e888fc6e:	bdeff0ef          	jal	ra,e888f04c <pbuf_skip_const>
  u16_t target_offset;
  struct pbuf *q = pbuf_skip(buf, offset, &target_offset);

  /* return requested data if pbuf is OK */
  if ((q != NULL) && (q->tot_len >= target_offset + len)) {
    e888fc72:	c959                	beqz	a0,e888fd08 <pbuf_take_at+0xb2>
    e888fc74:	00e15783          	lhu	a5,14(sp)
    e888fc78:	01055683          	lhu	a3,16(a0)
    e888fc7c:	00040a1b          	sext.w	s4,s0
    e888fc80:	01478733          	add	a4,a5,s4
    e888fc84:	84aa                	mv	s1,a0
    if (remaining_len > 0) {
      return pbuf_take(q->next, src_ptr, remaining_len);
    }
    return ERR_OK;
  }
  return ERR_MEM;
    e888fc86:	557d                	li	a0,-1
  if ((q != NULL) && (q->tot_len >= target_offset + len)) {
    e888fc88:	06e6c863          	blt	a3,a4,e888fcf8 <pbuf_take_at+0xa2>
    LWIP_ASSERT("check pbuf_skip result", target_offset < q->len);
    e888fc8c:	0124d703          	lhu	a4,18(s1)
    e888fc90:	02e7e863          	bltu	a5,a4,e888fcc0 <pbuf_take_at+0x6a>
    e888fc94:	02f00593          	li	a1,47
    e888fc98:	00041517          	auipc	a0,0x41
    e888fc9c:	f4050513          	addi	a0,a0,-192 # e88d0bd8 <memp_pools+0x3e8>
    e888fca0:	ed8ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888fca4:	00150693          	addi	a3,a0,1
    e888fca8:	4e300613          	li	a2,1251
    e888fcac:	00041597          	auipc	a1,0x41
    e888fcb0:	2fc58593          	addi	a1,a1,764 # e88d0fa8 <memp_pools+0x7b8>
    e888fcb4:	0003f517          	auipc	a0,0x3f
    e888fcb8:	3fc50513          	addi	a0,a0,1020 # e88cf0b0 <kSinTable1024+0x900>
    e888fcbc:	e0aec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    first_copy_len = (u16_t)LWIP_MIN(q->len - target_offset, len);
    e888fcc0:	0124d783          	lhu	a5,18(s1)
    e888fcc4:	00e15703          	lhu	a4,14(sp)
    e888fcc8:	8922                	mv	s2,s0
    e888fcca:	40e786bb          	subw	a3,a5,a4
    e888fcce:	0146d463          	bge	a3,s4,e888fcd6 <pbuf_take_at+0x80>
    e888fcd2:	3c06b90b          	extu	s2,a3,15,0
    MEMCPY(((u8_t *)q->payload) + target_offset, dataptr, first_copy_len);
    e888fcd6:	6488                	ld	a0,8(s1)
    e888fcd8:	864a                	mv	a2,s2
    e888fcda:	85ce                	mv	a1,s3
    e888fcdc:	953a                	add	a0,a0,a4
    e888fcde:	ec2ec0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    remaining_len = (u16_t)(remaining_len - first_copy_len);
    e888fce2:	4124063b          	subw	a2,s0,s2
    e888fce6:	3c06360b          	extu	a2,a2,15,0
    return ERR_OK;
    e888fcea:	4501                	li	a0,0
    if (remaining_len > 0) {
    e888fcec:	c611                	beqz	a2,e888fcf8 <pbuf_take_at+0xa2>
      return pbuf_take(q->next, src_ptr, remaining_len);
    e888fcee:	6088                	ld	a0,0(s1)
    e888fcf0:	012985b3          	add	a1,s3,s2
    e888fcf4:	e0fff0ef          	jal	ra,e888fb02 <pbuf_take>
}
    e888fcf8:	70e2                	ld	ra,56(sp)
    e888fcfa:	fa91440b          	ldd	s0,s1,(sp),1,4
    e888fcfe:	7a42                	ld	s4,48(sp)
    e888fd00:	fd31490b          	ldd	s2,s3,(sp),2,4
    e888fd04:	6121                	addi	sp,sp,64
    e888fd06:	8082                	ret
  return ERR_MEM;
    e888fd08:	557d                	li	a0,-1
    e888fd0a:	b7fd                	j	e888fcf8 <pbuf_take_at+0xa2>

00000000e888fd0c <pbuf_clone>:
 *
 * @return a new pbuf or NULL if allocation fails
 */
struct pbuf *
pbuf_clone(pbuf_layer layer, pbuf_type type, struct pbuf *p)
{
    e888fd0c:	1101                	addi	sp,sp,-32
    e888fd0e:	e826                	sd	s1,16(sp)
    e888fd10:	84b2                	mv	s1,a2
  struct pbuf *q;
  err_t err;
  q = pbuf_alloc(layer, p->tot_len, type);
    e888fd12:	862e                	mv	a2,a1
    e888fd14:	0104d583          	lhu	a1,16(s1)
{
    e888fd18:	e422                	sd	s0,8(sp)
    e888fd1a:	ec06                	sd	ra,24(sp)
  q = pbuf_alloc(layer, p->tot_len, type);
    e888fd1c:	e74ff0ef          	jal	ra,e888f390 <pbuf_alloc>
    e888fd20:	842a                	mv	s0,a0
  if (q == NULL) {
    e888fd22:	c91d                	beqz	a0,e888fd58 <pbuf_clone+0x4c>
    return NULL;
  }
  err = pbuf_copy(q, p);
    e888fd24:	85a6                	mv	a1,s1
    e888fd26:	a75ff0ef          	jal	ra,e888f79a <pbuf_copy>
  LWIP_UNUSED_ARG(err); /* in case of LWIP_NOASSERT */
  LWIP_ASSERT("pbuf_copy failed", err == ERR_OK);
    e888fd2a:	c51d                	beqz	a0,e888fd58 <pbuf_clone+0x4c>
    e888fd2c:	02f00593          	li	a1,47
    e888fd30:	00041517          	auipc	a0,0x41
    e888fd34:	ea850513          	addi	a0,a0,-344 # e88d0bd8 <memp_pools+0x3e8>
    e888fd38:	e40ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888fd3c:	00150693          	addi	a3,a0,1
    e888fd40:	52400613          	li	a2,1316
    e888fd44:	00041597          	auipc	a1,0x41
    e888fd48:	fcc58593          	addi	a1,a1,-52 # e88d0d10 <memp_pools+0x520>
    e888fd4c:	0003f517          	auipc	a0,0x3f
    e888fd50:	36450513          	addi	a0,a0,868 # e88cf0b0 <kSinTable1024+0x900>
    e888fd54:	d72ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  return q;
}
    e888fd58:	8522                	mv	a0,s0
    e888fd5a:	60e2                	ld	ra,24(sp)
    e888fd5c:	6422                	ld	s0,8(sp)
    e888fd5e:	64c2                	ld	s1,16(sp)
    e888fd60:	6105                	addi	sp,sp,32
    e888fd62:	8082                	ret

00000000e888fd64 <pbuf_try_get_at>:
 * @param offset offset into p of the byte to return
 * @return byte at an offset into p [0..0xFF] OR negative if 'offset' >= p->tot_len
 */
int
pbuf_try_get_at(const struct pbuf *p, u16_t offset)
{
    e888fd64:	1101                	addi	sp,sp,-32
  u16_t q_idx;
  const struct pbuf *q = pbuf_skip_const(p, offset, &q_idx);
    e888fd66:	00e10613          	addi	a2,sp,14
{
    e888fd6a:	ec06                	sd	ra,24(sp)
  const struct pbuf *q = pbuf_skip_const(p, offset, &q_idx);
    e888fd6c:	ae0ff0ef          	jal	ra,e888f04c <pbuf_skip_const>

  /* return requested data if pbuf is OK */
  if ((q != NULL) && (q->len > q_idx)) {
    return ((u8_t *)q->payload)[q_idx];
  }
  return -1;
    e888fd70:	57fd                	li	a5,-1
  if ((q != NULL) && (q->len > q_idx)) {
    e888fd72:	c919                	beqz	a0,e888fd88 <pbuf_try_get_at+0x24>
    e888fd74:	00e15703          	lhu	a4,14(sp)
    e888fd78:	01255683          	lhu	a3,18(a0)
  return -1;
    e888fd7c:	57fd                	li	a5,-1
  if ((q != NULL) && (q->len > q_idx)) {
    e888fd7e:	00d77563          	bgeu	a4,a3,e888fd88 <pbuf_try_get_at+0x24>
    return ((u8_t *)q->payload)[q_idx];
    e888fd82:	651c                	ld	a5,8(a0)
    e888fd84:	80e7c78b          	lrbu	a5,a5,a4,0
}
    e888fd88:	60e2                	ld	ra,24(sp)
    e888fd8a:	853e                	mv	a0,a5
    e888fd8c:	6105                	addi	sp,sp,32
    e888fd8e:	8082                	ret

00000000e888fd90 <pbuf_get_at>:
{
    e888fd90:	1141                	addi	sp,sp,-16
    e888fd92:	e406                	sd	ra,8(sp)
  int ret = pbuf_try_get_at(p, offset);
    e888fd94:	fd1ff0ef          	jal	ra,e888fd64 <pbuf_try_get_at>
  if (ret >= 0) {
    e888fd98:	4781                	li	a5,0
    e888fd9a:	00054363          	bltz	a0,e888fda0 <pbuf_get_at+0x10>
    e888fd9e:	87aa                	mv	a5,a0
}
    e888fda0:	60a2                	ld	ra,8(sp)
    e888fda2:	0ff7f513          	andi	a0,a5,255
    e888fda6:	0141                	addi	sp,sp,16
    e888fda8:	8082                	ret

00000000e888fdaa <pbuf_put_at>:
 * @param offset offset into p of the byte to write
 * @param data byte to write at an offset into p
 */
void
pbuf_put_at(struct pbuf *p, u16_t offset, u8_t data)
{
    e888fdaa:	1101                	addi	sp,sp,-32
    e888fdac:	e822                	sd	s0,16(sp)
    e888fdae:	8432                	mv	s0,a2
  const struct pbuf *out = pbuf_skip_const(in, in_offset, out_offset);
    e888fdb0:	00e10613          	addi	a2,sp,14
{
    e888fdb4:	ec06                	sd	ra,24(sp)
  const struct pbuf *out = pbuf_skip_const(in, in_offset, out_offset);
    e888fdb6:	a96ff0ef          	jal	ra,e888f04c <pbuf_skip_const>
  u16_t q_idx;
  struct pbuf *q = pbuf_skip(p, offset, &q_idx);

  /* write requested data if pbuf is OK */
  if ((q != NULL) && (q->len > q_idx)) {
    e888fdba:	c911                	beqz	a0,e888fdce <pbuf_put_at+0x24>
    e888fdbc:	00e15783          	lhu	a5,14(sp)
    e888fdc0:	01255703          	lhu	a4,18(a0)
    e888fdc4:	00e7f563          	bgeu	a5,a4,e888fdce <pbuf_put_at+0x24>
    ((u8_t *)q->payload)[q_idx] = data;
    e888fdc8:	6518                	ld	a4,8(a0)
    e888fdca:	00f7540b          	srb	s0,a4,a5,0
  }
}
    e888fdce:	60e2                	ld	ra,24(sp)
    e888fdd0:	6442                	ld	s0,16(sp)
    e888fdd2:	6105                	addi	sp,sp,32
    e888fdd4:	8082                	ret

00000000e888fdd6 <raw_input>:
 *           caller).
 *
 */
raw_input_state_t
raw_input(struct pbuf *p, struct netif *inp)
{
    e888fdd6:	7119                	addi	sp,sp,-128
    e888fdd8:	f4a6                	sd	s1,104(sp)
  struct raw_pcb *pcb, *prev;
  s16_t proto;
  raw_input_state_t ret = RAW_INPUT_NONE;
  u8_t broadcast = ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif());
    e888fdda:	00056497          	auipc	s1,0x56
    e888fdde:	d6e48493          	addi	s1,s1,-658 # e88e5b48 <ip_data>
    e888fde2:	0504c683          	lbu	a3,80(s1)
{
    e888fde6:	e8d2                	sd	s4,80(sp)
    e888fde8:	e0da                	sd	s6,64(sp)
    e888fdea:	fc86                	sd	ra,120(sp)
    e888fdec:	f8a2                	sd	s0,112(sp)
    e888fdee:	f0ca                	sd	s2,96(sp)
    e888fdf0:	ecce                	sd	s3,88(sp)
    e888fdf2:	e4d6                	sd	s5,72(sp)
    e888fdf4:	fc5e                	sd	s7,56(sp)
    e888fdf6:	f862                	sd	s8,48(sp)
    e888fdf8:	f466                	sd	s9,40(sp)
    e888fdfa:	f06a                	sd	s10,32(sp)
    e888fdfc:	ec6e                	sd	s11,24(sp)
  u8_t broadcast = ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif());
    e888fdfe:	4799                	li	a5,6
{
    e888fe00:	8b2a                	mv	s6,a0
    e888fe02:	4a01                	li	s4,0
  u8_t broadcast = ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif());
    e888fe04:	00f68763          	beq	a3,a5,e888fe12 <raw_input+0x3c>
    e888fe08:	608c                	ld	a1,0(s1)
    e888fe0a:	5cc8                	lw	a0,60(s1)
    e888fe0c:	fb0f90ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
    e888fe10:	8a2a                	mv	s4,a0

  LWIP_UNUSED_ARG(inp);

#if LWIP_IPV6
#if LWIP_IPV4
  if (IP_HDR_GET_VERSION(p->payload) == 6)
    e888fe12:	008b3783          	ld	a5,8(s6)
    e888fe16:	4619                	li	a2,6
    e888fe18:	0007c683          	lbu	a3,0(a5)
    e888fe1c:	8291                	srli	a3,a3,0x4
    e888fe1e:	10c69663          	bne	a3,a2,e888ff2a <raw_input+0x154>
#endif /* LWIP_IPV4 */
  {
    struct ip6_hdr *ip6hdr = (struct ip6_hdr *)p->payload;
    proto = IP6H_NEXTH(ip6hdr);
    e888fe22:	0067c983          	lbu	s3,6(a5)
    proto = IPH_PROTO((struct ip_hdr *)p->payload);
  }
#endif /* LWIP_IPV4 */

  prev = NULL;
  pcb = raw_pcbs;
    e888fe26:	00056917          	auipc	s2,0x56
    e888fe2a:	62290913          	addi	s2,s2,1570 # e88e6448 <raw_pcbs>
    e888fe2e:	00093403          	ld	s0,0(s2)
  raw_input_state_t ret = RAW_INPUT_NONE;
    e888fe32:	4d81                	li	s11,0
  prev = NULL;
    e888fe34:	4801                	li	a6,0
#ifndef LWIP_NOASSERT
        void *old_payload = p->payload;
#endif
        ret = RAW_INPUT_DELIVERED;
        /* the receive callback function did not eat the packet? */
        eaten = pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr());
    e888fe36:	00056b97          	auipc	s7,0x56
    e888fe3a:	d36b8b93          	addi	s7,s7,-714 # e88e5b6c <ip_data+0x24>
            raw_pcbs = pcb;
          }
          return RAW_INPUT_EATEN;
        } else {
          /* sanity-check that the receive callback did not alter the pbuf */
          LWIP_ASSERT("raw pcb recv callback altered pbuf payload pointer without eating packet",
    e888fe3e:	00041c17          	auipc	s8,0x41
    e888fe42:	182c0c13          	addi	s8,s8,386 # e88d0fc0 <memp_pools+0x7d0>
    e888fe46:	00041c97          	auipc	s9,0x41
    e888fe4a:	202c8c93          	addi	s9,s9,514 # e88d1048 <memp_pools+0x858>
    e888fe4e:	0003fd17          	auipc	s10,0x3f
    e888fe52:	262d0d13          	addi	s10,s10,610 # e88cf0b0 <kSinTable1024+0x900>
    if ((pcb->protocol == proto) && raw_input_local_match(pcb, broadcast) &&
    e888fe56:	4a99                	li	s5,6
  while (pcb != NULL) {
    e888fe58:	c84d                	beqz	s0,e888ff0a <raw_input+0x134>
    if ((pcb->protocol == proto) && raw_input_local_match(pcb, broadcast) &&
    e888fe5a:	04044783          	lbu	a5,64(s0)
    e888fe5e:	11379563          	bne	a5,s3,e888ff68 <raw_input+0x192>
  if ((pcb->netif_idx != NETIF_NO_INDEX) &&
    e888fe62:	03044683          	lbu	a3,48(s0)
    e888fe66:	ca89                	beqz	a3,e888fe78 <raw_input+0xa2>
      (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) {
    e888fe68:	649c                	ld	a5,8(s1)
    e888fe6a:	10e7c783          	lbu	a5,270(a5)
    e888fe6e:	2785                	addiw	a5,a5,1
  if ((pcb->netif_idx != NETIF_NO_INDEX) &&
    e888fe70:	0ff7f793          	andi	a5,a5,255
    e888fe74:	0ef69a63          	bne	a3,a5,e888ff68 <raw_input+0x192>
  if (IP_IS_ANY_TYPE_VAL(pcb->local_ip)) {
    e888fe78:	01444683          	lbu	a3,20(s0)
    e888fe7c:	02e00793          	li	a5,46
    e888fe80:	00f68a63          	beq	a3,a5,e888fe94 <raw_input+0xbe>
  if (IP_ADDR_PCB_VERSION_MATCH_EXACT(pcb, ip_current_dest_addr())) {
    e888fe84:	0504c783          	lbu	a5,80(s1)
    e888fe88:	0ed79063          	bne	a5,a3,e888ff68 <raw_input+0x192>
    if (broadcast != 0) {
    e888fe8c:	0a0a0263          	beqz	s4,e888ff30 <raw_input+0x15a>
        if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip))) {
    e888fe90:	401c                	lw	a5,0(s0)
    e888fe92:	ebf9                	bnez	a5,e888ff68 <raw_input+0x192>
    if ((pcb->protocol == proto) && raw_input_local_match(pcb, broadcast) &&
    e888fe94:	04144783          	lbu	a5,65(s0)
    e888fe98:	8b85                	andi	a5,a5,1
    e888fe9a:	cf9d                	beqz	a5,e888fed8 <raw_input+0x102>
         ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()))) {
    e888fe9c:	02c44783          	lbu	a5,44(s0)
    if ((pcb->protocol == proto) && raw_input_local_match(pcb, broadcast) &&
    e888fea0:	0384c603          	lbu	a2,56(s1)
    e888fea4:	0cf61263          	bne	a2,a5,e888ff68 <raw_input+0x192>
    e888fea8:	4c14                	lw	a3,24(s0)
    e888feaa:	50dc                	lw	a5,36(s1)
    e888feac:	03561463          	bne	a2,s5,e888fed4 <raw_input+0xfe>
         ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()))) {
    e888feb0:	0af69c63          	bne	a3,a5,e888ff68 <raw_input+0x192>
    e888feb4:	4c54                	lw	a3,28(s0)
    e888feb6:	549c                	lw	a5,40(s1)
    e888feb8:	0af69863          	bne	a3,a5,e888ff68 <raw_input+0x192>
    e888febc:	5014                	lw	a3,32(s0)
    e888febe:	54dc                	lw	a5,44(s1)
    e888fec0:	0af69463          	bne	a3,a5,e888ff68 <raw_input+0x192>
    e888fec4:	5054                	lw	a3,36(s0)
    e888fec6:	589c                	lw	a5,48(s1)
    e888fec8:	0af69063          	bne	a3,a5,e888ff68 <raw_input+0x192>
    e888fecc:	02844683          	lbu	a3,40(s0)
    e888fed0:	0344c783          	lbu	a5,52(s1)
        (((pcb->flags & RAW_FLAGS_CONNECTED) == 0) ||
    e888fed4:	08f69a63          	bne	a3,a5,e888ff68 <raw_input+0x192>
      if (pcb->recv != NULL) {
    e888fed8:	643c                	ld	a5,72(s0)
    e888feda:	e442                	sd	a6,8(sp)
    e888fedc:	c7d1                	beqz	a5,e888ff68 <raw_input+0x192>
        void *old_payload = p->payload;
    e888fede:	008b3883          	ld	a7,8(s6)
        eaten = pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr());
    e888fee2:	6828                	ld	a0,80(s0)
    e888fee4:	86de                	mv	a3,s7
    e888fee6:	865a                	mv	a2,s6
    e888fee8:	85a2                	mv	a1,s0
        void *old_payload = p->payload;
    e888feea:	e046                	sd	a7,0(sp)
        eaten = pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr());
    e888feec:	9782                	jalr	a5
        if (eaten != 0) {
    e888feee:	f901488b          	ldd	a7,a6,(sp),0,4
    e888fef2:	c151                	beqz	a0,e888ff76 <raw_input+0x1a0>
          return RAW_INPUT_EATEN;
    e888fef4:	4d85                	li	s11,1
          if (prev != NULL) {
    e888fef6:	00080a63          	beqz	a6,e888ff0a <raw_input+0x134>
            prev->next = pcb->next;
    e888fefa:	7c1c                	ld	a5,56(s0)
    e888fefc:	02f83c23          	sd	a5,56(a6)
            pcb->next = raw_pcbs;
    e888ff00:	00093783          	ld	a5,0(s2)
            raw_pcbs = pcb;
    e888ff04:	00893023          	sd	s0,0(s2)
            pcb->next = raw_pcbs;
    e888ff08:	fc1c                	sd	a5,56(s0)
    /* drop the packet */
    prev = pcb;
    pcb = pcb->next;
  }
  return ret;
}
    e888ff0a:	70e6                	ld	ra,120(sp)
    e888ff0c:	7446                	ld	s0,112(sp)
    e888ff0e:	856e                	mv	a0,s11
    e888ff10:	74a6                	ld	s1,104(sp)
    e888ff12:	7906                	ld	s2,96(sp)
    e888ff14:	69e6                	ld	s3,88(sp)
    e888ff16:	6a46                	ld	s4,80(sp)
    e888ff18:	6aa6                	ld	s5,72(sp)
    e888ff1a:	6b06                	ld	s6,64(sp)
    e888ff1c:	7be2                	ld	s7,56(sp)
    e888ff1e:	7c42                	ld	s8,48(sp)
    e888ff20:	7ca2                	ld	s9,40(sp)
    e888ff22:	7d02                	ld	s10,32(sp)
    e888ff24:	6de2                	ld	s11,24(sp)
    e888ff26:	6109                	addi	sp,sp,128
    e888ff28:	8082                	ret
    proto = IPH_PROTO((struct ip_hdr *)p->payload);
    e888ff2a:	0097c983          	lbu	s3,9(a5)
    e888ff2e:	bde5                	j	e888fe26 <raw_input+0x50>
      if (ip_addr_isany(&pcb->local_ip) ||
    e888ff30:	03579f63          	bne	a5,s5,e888ff6e <raw_input+0x198>
    e888ff34:	601c                	ld	a5,0(s0)
    e888ff36:	e399                	bnez	a5,e888ff3c <raw_input+0x166>
    e888ff38:	641c                	ld	a5,8(s0)
    e888ff3a:	dfa9                	beqz	a5,e888fe94 <raw_input+0xbe>
          ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) {
    e888ff3c:	4014                	lw	a3,0(s0)
    e888ff3e:	5cdc                	lw	a5,60(s1)
    e888ff40:	02f69463          	bne	a3,a5,e888ff68 <raw_input+0x192>
    e888ff44:	4054                	lw	a3,4(s0)
    e888ff46:	40bc                	lw	a5,64(s1)
    e888ff48:	02f69063          	bne	a3,a5,e888ff68 <raw_input+0x192>
    e888ff4c:	4414                	lw	a3,8(s0)
    e888ff4e:	40fc                	lw	a5,68(s1)
    e888ff50:	00f69c63          	bne	a3,a5,e888ff68 <raw_input+0x192>
    e888ff54:	4454                	lw	a3,12(s0)
    e888ff56:	44bc                	lw	a5,72(s1)
    e888ff58:	00f69863          	bne	a3,a5,e888ff68 <raw_input+0x192>
    e888ff5c:	01044683          	lbu	a3,16(s0)
    e888ff60:	04c4c783          	lbu	a5,76(s1)
      if (ip_addr_isany(&pcb->local_ip) ||
    e888ff64:	f2f688e3          	beq	a3,a5,e888fe94 <raw_input+0xbe>
    pcb = pcb->next;
    e888ff68:	8822                	mv	a6,s0
    e888ff6a:	7c00                	ld	s0,56(s0)
    e888ff6c:	b5f5                	j	e888fe58 <raw_input+0x82>
      if (ip_addr_isany(&pcb->local_ip) ||
    e888ff6e:	401c                	lw	a5,0(s0)
    e888ff70:	d395                	beqz	a5,e888fe94 <raw_input+0xbe>
    e888ff72:	5cd4                	lw	a3,60(s1)
    e888ff74:	bfc5                	j	e888ff64 <raw_input+0x18e>
          LWIP_ASSERT("raw pcb recv callback altered pbuf payload pointer without eating packet",
    e888ff76:	008b3783          	ld	a5,8(s6)
        ret = RAW_INPUT_DELIVERED;
    e888ff7a:	4d89                	li	s11,2
          LWIP_ASSERT("raw pcb recv callback altered pbuf payload pointer without eating packet",
    e888ff7c:	ff1786e3          	beq	a5,a7,e888ff68 <raw_input+0x192>
    e888ff80:	02f00593          	li	a1,47
    e888ff84:	8562                	mv	a0,s8
    e888ff86:	bf2ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e888ff8a:	00150693          	addi	a3,a0,1
    e888ff8e:	0c100613          	li	a2,193
    e888ff92:	85e6                	mv	a1,s9
    e888ff94:	856a                	mv	a0,s10
    e888ff96:	b30ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e888ff9a:	b7f9                	j	e888ff68 <raw_input+0x192>

00000000e888ff9c <raw_bind>:
err_t
raw_bind(struct raw_pcb *pcb, const ip_addr_t *ipaddr)
{
  LWIP_ASSERT_CORE_LOCKED();
  if ((pcb == NULL) || (ipaddr == NULL)) {
    return ERR_VAL;
    e888ff9c:	57e9                	li	a5,-6
  if ((pcb == NULL) || (ipaddr == NULL)) {
    e888ff9e:	c931                	beqz	a0,e888fff2 <raw_bind+0x56>
    e888ffa0:	c9a9                	beqz	a1,e888fff2 <raw_bind+0x56>
  }
  ip_addr_set_ipaddr(&pcb->local_ip, ipaddr);
    e888ffa2:	0145c783          	lbu	a5,20(a1)
    e888ffa6:	4719                	li	a4,6
    e888ffa8:	00f50a23          	sb	a5,20(a0)
    e888ffac:	02e79a63          	bne	a5,a4,e888ffe0 <raw_bind+0x44>
{
    e888ffb0:	1101                	addi	sp,sp,-32
    e888ffb2:	ec06                	sd	ra,24(sp)
    e888ffb4:	e422                	sd	s0,8(sp)
    e888ffb6:	e826                	sd	s1,16(sp)
  ip_addr_set_ipaddr(&pcb->local_ip, ipaddr);
    e888ffb8:	419c                	lw	a5,0(a1)
    e888ffba:	c11c                	sw	a5,0(a0)
    e888ffbc:	41d8                	lw	a4,4(a1)
    e888ffbe:	c158                	sw	a4,4(a0)
    e888ffc0:	4598                	lw	a4,8(a1)
    e888ffc2:	c518                	sw	a4,8(a0)
    e888ffc4:	45d8                	lw	a4,12(a1)
    e888ffc6:	c558                	sw	a4,12(a0)
    e888ffc8:	0105c483          	lbu	s1,16(a1)
    e888ffcc:	00950823          	sb	s1,16(a0)
#if LWIP_IPV6 && LWIP_IPV6_SCOPES
  /* If the given IP address should have a zone but doesn't, assign one now.
   * This is legacy support: scope-aware callers should always provide properly
   * zoned source addresses. */
  if (IP_IS_V6(&pcb->local_ip) &&
    e888ffd0:	c09d                	beqz	s1,e888fff6 <raw_bind+0x5a>
      ip6_addr_lacks_zone(ip_2_ip6(&pcb->local_ip), IP6_UNKNOWN)) {
    ip6_addr_select_zone(ip_2_ip6(&pcb->local_ip), ip_2_ip6(&pcb->local_ip));
  }
#endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */
  return ERR_OK;
}
    e888ffd2:	60e2                	ld	ra,24(sp)
    e888ffd4:	6422                	ld	s0,8(sp)
  return ERR_OK;
    e888ffd6:	4781                	li	a5,0
}
    e888ffd8:	64c2                	ld	s1,16(sp)
    e888ffda:	853e                	mv	a0,a5
    e888ffdc:	6105                	addi	sp,sp,32
    e888ffde:	8082                	ret
  ip_addr_set_ipaddr(&pcb->local_ip, ipaddr);
    e888ffe0:	419c                	lw	a5,0(a1)
    e888ffe2:	00052223          	sw	zero,4(a0)
    e888ffe6:	00053423          	sd	zero,8(a0)
    e888ffea:	c11c                	sw	a5,0(a0)
    e888ffec:	00050823          	sb	zero,16(a0)
  return ERR_OK;
    e888fff0:	4781                	li	a5,0
}
    e888fff2:	853e                	mv	a0,a5
    e888fff4:	8082                	ret
      ip6_addr_lacks_zone(ip_2_ip6(&pcb->local_ip), IP6_UNKNOWN)) {
    e888fff6:	6731                	lui	a4,0xc
    e888fff8:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e888fffc:	66a1                	lui	a3,0x8
    e888fffe:	8f7d                	and	a4,a4,a5
    e8890000:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e8890004:	00d70b63          	beq	a4,a3,e889001a <raw_bind+0x7e>
    e8890008:	6725                	lui	a4,0x9
    e889000a:	177d                	addi	a4,a4,-1
    e889000c:	8ff9                	and	a5,a5,a4
    e889000e:	e017879b          	addiw	a5,a5,-511
    e8890012:	eff7f793          	andi	a5,a5,-257
    e8890016:	2781                	sext.w	a5,a5
    e8890018:	ffcd                	bnez	a5,e888ffd2 <raw_bind+0x36>
    ip6_addr_select_zone(ip_2_ip6(&pcb->local_ip), ip_2_ip6(&pcb->local_ip));
    e889001a:	85aa                	mv	a1,a0
    e889001c:	842a                	mv	s0,a0
    e889001e:	a1efa0ef          	jal	ra,e888a23c <ip6_route>
    e8890022:	d945                	beqz	a0,e888ffd2 <raw_bind+0x36>
    e8890024:	401c                	lw	a5,0(s0)
    e8890026:	6731                	lui	a4,0xc
    e8890028:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e889002c:	66a1                	lui	a3,0x8
    e889002e:	8f7d                	and	a4,a4,a5
    e8890030:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e8890034:	00d70b63          	beq	a4,a3,e889004a <raw_bind+0xae>
    e8890038:	6725                	lui	a4,0x9
    e889003a:	177d                	addi	a4,a4,-1
    e889003c:	8ff9                	and	a5,a5,a4
    e889003e:	e017879b          	addiw	a5,a5,-511
    e8890042:	eff7f793          	andi	a5,a5,-257
    e8890046:	2781                	sext.w	a5,a5
    e8890048:	e791                	bnez	a5,e8890054 <raw_bind+0xb8>
    e889004a:	10e54483          	lbu	s1,270(a0)
    e889004e:	2485                	addiw	s1,s1,1
    e8890050:	0ff4f493          	andi	s1,s1,255
    e8890054:	00940823          	sb	s1,16(s0)
    e8890058:	bfad                	j	e888ffd2 <raw_bind+0x36>

00000000e889005a <raw_bind_netif>:
{
  LWIP_ASSERT_CORE_LOCKED();
  if (netif != NULL) {
    pcb->netif_idx = netif_get_index(netif);
  } else {
    pcb->netif_idx = NETIF_NO_INDEX;
    e889005a:	4781                	li	a5,0
  if (netif != NULL) {
    e889005c:	c591                	beqz	a1,e8890068 <raw_bind_netif+0xe>
    pcb->netif_idx = netif_get_index(netif);
    e889005e:	10e5c783          	lbu	a5,270(a1)
    e8890062:	2785                	addiw	a5,a5,1
    e8890064:	0ff7f793          	andi	a5,a5,255
    e8890068:	02f50823          	sb	a5,48(a0)
  }
}
    e889006c:	8082                	ret

00000000e889006e <raw_connect>:
err_t
raw_connect(struct raw_pcb *pcb, const ip_addr_t *ipaddr)
{
  LWIP_ASSERT_CORE_LOCKED();
  if ((pcb == NULL) || (ipaddr == NULL)) {
    return ERR_VAL;
    e889006e:	57e9                	li	a5,-6
  if ((pcb == NULL) || (ipaddr == NULL)) {
    e8890070:	c561                	beqz	a0,e8890138 <raw_connect+0xca>
    e8890072:	c1f9                	beqz	a1,e8890138 <raw_connect+0xca>
{
    e8890074:	1101                	addi	sp,sp,-32
    e8890076:	e422                	sd	s0,8(sp)
    e8890078:	ec06                	sd	ra,24(sp)
    e889007a:	e826                	sd	s1,16(sp)
  }
  ip_addr_set_ipaddr(&pcb->remote_ip, ipaddr);
    e889007c:	0145c783          	lbu	a5,20(a1)
    e8890080:	4719                	li	a4,6
    e8890082:	842a                	mv	s0,a0
    e8890084:	02f50623          	sb	a5,44(a0)
    e8890088:	02e79c63          	bne	a5,a4,e88900c0 <raw_connect+0x52>
    e889008c:	419c                	lw	a5,0(a1)
    e889008e:	cd1c                	sw	a5,24(a0)
    e8890090:	41d8                	lw	a4,4(a1)
    e8890092:	cd58                	sw	a4,28(a0)
    e8890094:	4598                	lw	a4,8(a1)
    e8890096:	d118                	sw	a4,32(a0)
    e8890098:	45d8                	lw	a4,12(a1)
    e889009a:	d158                	sw	a4,36(a0)
    e889009c:	0105c483          	lbu	s1,16(a1)
    e88900a0:	02950423          	sb	s1,40(a0)
#if LWIP_IPV6 && LWIP_IPV6_SCOPES
  /* If the given IP address should have a zone but doesn't, assign one now,
   * using the bound address to make a more informed decision when possible. */
  if (IP_IS_V6(&pcb->remote_ip) &&
    e88900a4:	c49d                	beqz	s1,e88900d2 <raw_connect+0x64>
      ip6_addr_lacks_zone(ip_2_ip6(&pcb->remote_ip), IP6_UNKNOWN)) {
    ip6_addr_select_zone(ip_2_ip6(&pcb->remote_ip), ip_2_ip6(&pcb->local_ip));
  }
#endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */
  raw_set_flags(pcb, RAW_FLAGS_CONNECTED);
    e88900a6:	04144783          	lbu	a5,65(s0)
    e88900aa:	0017e793          	ori	a5,a5,1
    e88900ae:	04f400a3          	sb	a5,65(s0)
  return ERR_OK;
}
    e88900b2:	60e2                	ld	ra,24(sp)
    e88900b4:	6422                	ld	s0,8(sp)
  return ERR_OK;
    e88900b6:	4781                	li	a5,0
}
    e88900b8:	64c2                	ld	s1,16(sp)
    e88900ba:	853e                	mv	a0,a5
    e88900bc:	6105                	addi	sp,sp,32
    e88900be:	8082                	ret
  ip_addr_set_ipaddr(&pcb->remote_ip, ipaddr);
    e88900c0:	419c                	lw	a5,0(a1)
    e88900c2:	00052e23          	sw	zero,28(a0)
    e88900c6:	02053023          	sd	zero,32(a0)
    e88900ca:	cd1c                	sw	a5,24(a0)
    e88900cc:	02050423          	sb	zero,40(a0)
  if (IP_IS_V6(&pcb->remote_ip) &&
    e88900d0:	bfd9                	j	e88900a6 <raw_connect+0x38>
      ip6_addr_lacks_zone(ip_2_ip6(&pcb->remote_ip), IP6_UNKNOWN)) {
    e88900d2:	6731                	lui	a4,0xc
    e88900d4:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e88900d8:	66a1                	lui	a3,0x8
    e88900da:	8f7d                	and	a4,a4,a5
    e88900dc:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e88900e0:	00d70b63          	beq	a4,a3,e88900f6 <raw_connect+0x88>
    e88900e4:	6725                	lui	a4,0x9
    e88900e6:	177d                	addi	a4,a4,-1
    e88900e8:	8ff9                	and	a5,a5,a4
    e88900ea:	e017879b          	addiw	a5,a5,-511
    e88900ee:	eff7f793          	andi	a5,a5,-257
    e88900f2:	2781                	sext.w	a5,a5
    e88900f4:	fbcd                	bnez	a5,e88900a6 <raw_connect+0x38>
    ip6_addr_select_zone(ip_2_ip6(&pcb->remote_ip), ip_2_ip6(&pcb->local_ip));
    e88900f6:	01840593          	addi	a1,s0,24
    e88900fa:	8522                	mv	a0,s0
    e88900fc:	940fa0ef          	jal	ra,e888a23c <ip6_route>
    e8890100:	d15d                	beqz	a0,e88900a6 <raw_connect+0x38>
    e8890102:	4c1c                	lw	a5,24(s0)
    e8890104:	6731                	lui	a4,0xc
    e8890106:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e889010a:	66a1                	lui	a3,0x8
    e889010c:	8f7d                	and	a4,a4,a5
    e889010e:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e8890112:	00d70b63          	beq	a4,a3,e8890128 <raw_connect+0xba>
    e8890116:	6725                	lui	a4,0x9
    e8890118:	177d                	addi	a4,a4,-1
    e889011a:	8ff9                	and	a5,a5,a4
    e889011c:	e017879b          	addiw	a5,a5,-511
    e8890120:	eff7f793          	andi	a5,a5,-257
    e8890124:	2781                	sext.w	a5,a5
    e8890126:	e791                	bnez	a5,e8890132 <raw_connect+0xc4>
    e8890128:	10e54483          	lbu	s1,270(a0)
    e889012c:	2485                	addiw	s1,s1,1
    e889012e:	0ff4f493          	andi	s1,s1,255
    e8890132:	02940423          	sb	s1,40(s0)
    e8890136:	bf85                	j	e88900a6 <raw_connect+0x38>
}
    e8890138:	853e                	mv	a0,a5
    e889013a:	8082                	ret

00000000e889013c <raw_recv>:
void
raw_recv(struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg)
{
  LWIP_ASSERT_CORE_LOCKED();
  /* remember recv() callback and user data */
  pcb->recv = recv;
    e889013c:	e52c                	sd	a1,72(a0)
  pcb->recv_arg = recv_arg;
    e889013e:	e930                	sd	a2,80(a0)
}
    e8890140:	8082                	ret

00000000e8890142 <raw_sendto_if_src>:
 * @param src_ip source IP address
 */
err_t
raw_sendto_if_src(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip,
                  struct netif *netif, const ip_addr_t *src_ip)
{
    e8890142:	715d                	addi	sp,sp,-80
    e8890144:	f84a                	sd	s2,48(sp)
    e8890146:	e486                	sd	ra,72(sp)
    e8890148:	e0a2                	sd	s0,64(sp)
    e889014a:	fc26                	sd	s1,56(sp)
    e889014c:	f44e                	sd	s3,40(sp)
    e889014e:	f052                	sd	s4,32(sp)
    e8890150:	ec56                	sd	s5,24(sp)

  LWIP_ASSERT_CORE_LOCKED();

  if ((pcb == NULL) || (dst_ip == NULL) || (netif == NULL) || (src_ip == NULL) ||
      !IP_ADDR_PCB_VERSION_MATCH(pcb, src_ip) || !IP_ADDR_PCB_VERSION_MATCH(pcb, dst_ip)) {
    return ERR_VAL;
    e8890152:	5969                	li	s2,-6
  if ((pcb == NULL) || (dst_ip == NULL) || (netif == NULL) || (src_ip == NULL) ||
    e8890154:	c52d                	beqz	a0,e88901be <raw_sendto_if_src+0x7c>
    e8890156:	c625                	beqz	a2,e88901be <raw_sendto_if_src+0x7c>
    e8890158:	c2bd                	beqz	a3,e88901be <raw_sendto_if_src+0x7c>
    e889015a:	c335                	beqz	a4,e88901be <raw_sendto_if_src+0x7c>
      !IP_ADDR_PCB_VERSION_MATCH(pcb, src_ip) || !IP_ADDR_PCB_VERSION_MATCH(pcb, dst_ip)) {
    e889015c:	01454803          	lbu	a6,20(a0)
  if ((pcb == NULL) || (dst_ip == NULL) || (netif == NULL) || (src_ip == NULL) ||
    e8890160:	02e00793          	li	a5,46
    e8890164:	00f80a63          	beq	a6,a5,e8890178 <raw_sendto_if_src+0x36>
      !IP_ADDR_PCB_VERSION_MATCH(pcb, src_ip) || !IP_ADDR_PCB_VERSION_MATCH(pcb, dst_ip)) {
    e8890168:	01474783          	lbu	a5,20(a4) # 9014 <memcmp-0xe87f6fec>
    e889016c:	05079963          	bne	a5,a6,e88901be <raw_sendto_if_src+0x7c>
    e8890170:	01464803          	lbu	a6,20(a2)
    e8890174:	04f81563          	bne	a6,a5,e88901be <raw_sendto_if_src+0x7c>
  }

  header_size = (
#if LWIP_IPV4 && LWIP_IPV6
                  IP_IS_V6(dst_ip) ? IP6_HLEN : IP_HLEN);
    e8890178:	01464803          	lbu	a6,20(a2)
    e889017c:	4799                	li	a5,6
  header_size = (
    e889017e:	02800a13          	li	s4,40
                  IP_IS_V6(dst_ip) ? IP6_HLEN : IP_HLEN);
    e8890182:	00f80363          	beq	a6,a5,e8890188 <raw_sendto_if_src+0x46>
  header_size = (
    e8890186:	4a51                	li	s4,20
                  IP6_HLEN);
#endif

  /* Handle the HDRINCL option as an exception: none of the code below applies
   * to this case, and sending the packet needs to be done differently too. */
  if (pcb->flags & RAW_FLAGS_HDRINCL) {
    e8890188:	04154783          	lbu	a5,65(a0)
    e889018c:	89ba                	mv	s3,a4
    e889018e:	8ab6                	mv	s5,a3
    e8890190:	8b89                	andi	a5,a5,2
    e8890192:	8932                	mv	s2,a2
    e8890194:	842e                	mv	s0,a1
    e8890196:	84aa                	mv	s1,a0
    e8890198:	c7b9                	beqz	a5,e88901e6 <raw_sendto_if_src+0xa4>
    /* A full header *must* be present in the first pbuf of the chain, as the
     * output routines may access its fields directly. */
    if (p->len < header_size) {
    e889019a:	0125d783          	lhu	a5,18(a1)
    return ERR_VAL;
    e889019e:	5969                	li	s2,-6
    if (p->len < header_size) {
    e88901a0:	0147ef63          	bltu	a5,s4,e88901be <raw_sendto_if_src+0x7c>
      return ERR_VAL;
    }
    /* @todo multicast loop support, if at all desired for this scenario.. */
    NETIF_SET_HINTS(netif, &pcb->netif_hints);
    err = ip_output_if_hdrincl(p, src_ip, dst_ip, netif);
    e88901a4:	4799                	li	a5,6
    e88901a6:	02f81663          	bne	a6,a5,e88901d2 <raw_sendto_if_src+0x90>
    e88901aa:	8836                	mv	a6,a3
    e88901ac:	4781                	li	a5,0
    e88901ae:	4701                	li	a4,0
    e88901b0:	4681                	li	a3,0
    e88901b2:	4601                	li	a2,0
    e88901b4:	85ce                	mv	a1,s3
    e88901b6:	8522                	mv	a0,s0
    e88901b8:	c91fa0ef          	jal	ra,e888ae48 <ip6_output_if>
    e88901bc:	892a                	mv	s2,a0
  if (q != p) {
    /* free the header */
    pbuf_free(q);
  }
  return err;
}
    e88901be:	60a6                	ld	ra,72(sp)
    e88901c0:	6406                	ld	s0,64(sp)
    e88901c2:	854a                	mv	a0,s2
    e88901c4:	74e2                	ld	s1,56(sp)
    e88901c6:	7942                	ld	s2,48(sp)
    e88901c8:	79a2                	ld	s3,40(sp)
    e88901ca:	7a02                	ld	s4,32(sp)
    e88901cc:	6ae2                	ld	s5,24(sp)
    e88901ce:	6161                	addi	sp,sp,80
    e88901d0:	8082                	ret
    err = ip_output_if_hdrincl(p, src_ip, dst_ip, netif);
    e88901d2:	8836                	mv	a6,a3
    e88901d4:	4781                	li	a5,0
    e88901d6:	4701                	li	a4,0
    e88901d8:	4681                	li	a3,0
    e88901da:	4601                	li	a2,0
    e88901dc:	85ce                	mv	a1,s3
    e88901de:	8522                	mv	a0,s0
    e88901e0:	bb8f90ef          	jal	ra,e8889598 <ip4_output_if>
    e88901e4:	bfe1                	j	e88901bc <raw_sendto_if_src+0x7a>
  if ((u16_t)(p->tot_len + header_size) < p->tot_len) {
    e88901e6:	0105d703          	lhu	a4,16(a1)
    e88901ea:	014707bb          	addw	a5,a4,s4
    e88901ee:	3c07b78b          	extu	a5,a5,15,0
    e88901f2:	00e7f463          	bgeu	a5,a4,e88901fa <raw_sendto_if_src+0xb8>
      return ERR_MEM;
    e88901f6:	597d                	li	s2,-1
    e88901f8:	b7d9                	j	e88901be <raw_sendto_if_src+0x7c>
  if (pbuf_add_header(p, header_size)) {
    e88901fa:	85d2                	mv	a1,s4
    e88901fc:	8522                	mv	a0,s0
    e88901fe:	f9ffe0ef          	jal	ra,e888f19c <pbuf_add_header>
    e8890202:	c555                	beqz	a0,e88902ae <raw_sendto_if_src+0x16c>
    q = pbuf_alloc(PBUF_IP, 0, PBUF_RAM);
    e8890204:	28000613          	li	a2,640
    e8890208:	4581                	li	a1,0
    e889020a:	03600513          	li	a0,54
    e889020e:	982ff0ef          	jal	ra,e888f390 <pbuf_alloc>
    e8890212:	8a2a                	mv	s4,a0
    if (q == NULL) {
    e8890214:	d16d                	beqz	a0,e88901f6 <raw_sendto_if_src+0xb4>
    if (p->tot_len != 0) {
    e8890216:	01045783          	lhu	a5,16(s0)
    e889021a:	c781                	beqz	a5,e8890222 <raw_sendto_if_src+0xe0>
      pbuf_chain(q, p);
    e889021c:	85a2                	mv	a1,s0
    e889021e:	d64ff0ef          	jal	ra,e888f782 <pbuf_chain>
  if (((pcb->flags & RAW_FLAGS_MULTICAST_LOOP) != 0) && ip_addr_ismulticast(dst_ip)) {
    e8890222:	0414c783          	lbu	a5,65(s1)
    e8890226:	8b91                	andi	a5,a5,4
    e8890228:	cfe1                	beqz	a5,e8890300 <raw_sendto_if_src+0x1be>
    e889022a:	01494683          	lbu	a3,20(s2)
    e889022e:	4719                	li	a4,6
    e8890230:	00092783          	lw	a5,0(s2)
    e8890234:	0ae69a63          	bne	a3,a4,e88902e8 <raw_sendto_if_src+0x1a6>
    e8890238:	0ff7f793          	andi	a5,a5,255
    e889023c:	0ff00713          	li	a4,255
    e8890240:	0ae78a63          	beq	a5,a4,e88902f4 <raw_sendto_if_src+0x1b2>
  if (IP_IS_V6(dst_ip) && pcb->chksum_reqd) {
    e8890244:	05a4c783          	lbu	a5,90(s1)
    e8890248:	c3e9                	beqz	a5,e889030a <raw_sendto_if_src+0x1c8>
    u16_t chksum = ip6_chksum_pseudo(p, pcb->protocol, p->tot_len, ip_2_ip6(src_ip), ip_2_ip6(dst_ip));
    e889024a:	01045603          	lhu	a2,16(s0)
    e889024e:	0404c583          	lbu	a1,64(s1)
    e8890252:	874a                	mv	a4,s2
    e8890254:	86ce                	mv	a3,s3
    e8890256:	8522                	mv	a0,s0
    e8890258:	da8f70ef          	jal	ra,e8887800 <ip6_chksum_pseudo>
    e889025c:	00a11723          	sh	a0,14(sp)
    LWIP_ASSERT("Checksum must fit into first pbuf", p->len >= (pcb->chksum_offset + 2));
    e8890260:	0584d783          	lhu	a5,88(s1)
    e8890264:	01245703          	lhu	a4,18(s0)
    e8890268:	0789                	addi	a5,a5,2
    e889026a:	02f75863          	bge	a4,a5,e889029a <raw_sendto_if_src+0x158>
    e889026e:	02f00593          	li	a1,47
    e8890272:	00041517          	auipc	a0,0x41
    e8890276:	d4e50513          	addi	a0,a0,-690 # e88d0fc0 <memp_pools+0x7d0>
    e889027a:	8feec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889027e:	00150693          	addi	a3,a0,1
    e8890282:	20100613          	li	a2,513
    e8890286:	00041597          	auipc	a1,0x41
    e889028a:	e3a58593          	addi	a1,a1,-454 # e88d10c0 <memp_pools+0x8d0>
    e889028e:	0003f517          	auipc	a0,0x3f
    e8890292:	e2250513          	addi	a0,a0,-478 # e88cf0b0 <kSinTable1024+0x900>
    e8890296:	830ec0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    SMEMCPY(((u8_t *)p->payload) + pcb->chksum_offset, &chksum, sizeof(u16_t));
    e889029a:	0584d783          	lhu	a5,88(s1)
    e889029e:	6408                	ld	a0,8(s0)
    e88902a0:	4609                	li	a2,2
    e88902a2:	00e10593          	addi	a1,sp,14
    e88902a6:	953e                	add	a0,a0,a5
    e88902a8:	8f8ec0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    e88902ac:	a8b9                	j	e889030a <raw_sendto_if_src+0x1c8>
    if (pbuf_remove_header(q, header_size)) {
    e88902ae:	85d2                	mv	a1,s4
    e88902b0:	8522                	mv	a0,s0
    e88902b2:	ef7fe0ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    q = p;
    e88902b6:	8a22                	mv	s4,s0
    if (pbuf_remove_header(q, header_size)) {
    e88902b8:	d52d                	beqz	a0,e8890222 <raw_sendto_if_src+0xe0>
      LWIP_ASSERT("Can't restore header we just removed!", 0);
    e88902ba:	02f00593          	li	a1,47
    e88902be:	00041517          	auipc	a0,0x41
    e88902c2:	d0250513          	addi	a0,a0,-766 # e88d0fc0 <memp_pools+0x7d0>
    e88902c6:	8b2ec0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88902ca:	00150693          	addi	a3,a0,1
    e88902ce:	1e200613          	li	a2,482
    e88902d2:	00041597          	auipc	a1,0x41
    e88902d6:	dc658593          	addi	a1,a1,-570 # e88d1098 <memp_pools+0x8a8>
    e88902da:	0003f517          	auipc	a0,0x3f
    e88902de:	dd650513          	addi	a0,a0,-554 # e88cf0b0 <kSinTable1024+0x900>
    e88902e2:	fe5eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88902e6:	bf01                	j	e88901f6 <raw_sendto_if_src+0xb4>
  if (((pcb->flags & RAW_FLAGS_MULTICAST_LOOP) != 0) && ip_addr_ismulticast(dst_ip)) {
    e88902e8:	0f07f793          	andi	a5,a5,240
    e88902ec:	0e000713          	li	a4,224
    e88902f0:	00e79d63          	bne	a5,a4,e889030a <raw_sendto_if_src+0x1c8>
    q->flags |= PBUF_FLAG_MCASTLOOP;
    e88902f4:	015a4783          	lbu	a5,21(s4)
    e88902f8:	0047e793          	ori	a5,a5,4
    e88902fc:	00fa0aa3          	sb	a5,21(s4)
  if (IP_IS_V6(dst_ip) && pcb->chksum_reqd) {
    e8890300:	01494703          	lbu	a4,20(s2)
    e8890304:	4799                	li	a5,6
    e8890306:	f2f70fe3          	beq	a4,a5,e8890244 <raw_sendto_if_src+0x102>
  ttl = (ip_addr_ismulticast(dst_ip) ? raw_get_multicast_ttl(pcb) : pcb->ttl);
    e889030a:	01494603          	lbu	a2,20(s2)
    e889030e:	4719                	li	a4,6
    e8890310:	00092783          	lw	a5,0(s2)
    e8890314:	02e61f63          	bne	a2,a4,e8890352 <raw_sendto_if_src+0x210>
    e8890318:	0ff7f793          	andi	a5,a5,255
    e889031c:	f0178793          	addi	a5,a5,-255
    e8890320:	0017b793          	seqz	a5,a5
    e8890324:	cf85                	beqz	a5,e889035c <raw_sendto_if_src+0x21a>
    e8890326:	0434c683          	lbu	a3,67(s1)
  err = ip_output_if(q, src_ip, dst_ip, ttl, pcb->tos, pcb->protocol, netif);
    e889032a:	4599                	li	a1,6
    e889032c:	0324c703          	lbu	a4,50(s1)
    e8890330:	0404c783          	lbu	a5,64(s1)
    e8890334:	8856                	mv	a6,s5
    e8890336:	02b61663          	bne	a2,a1,e8890362 <raw_sendto_if_src+0x220>
    e889033a:	864a                	mv	a2,s2
    e889033c:	85ce                	mv	a1,s3
    e889033e:	8552                	mv	a0,s4
    e8890340:	b09fa0ef          	jal	ra,e888ae48 <ip6_output_if>
    e8890344:	892a                	mv	s2,a0
  if (q != p) {
    e8890346:	e68a0ce3          	beq	s4,s0,e88901be <raw_sendto_if_src+0x7c>
    pbuf_free(q);
    e889034a:	8552                	mv	a0,s4
    e889034c:	f01fe0ef          	jal	ra,e888f24c <pbuf_free>
    e8890350:	b5bd                	j	e88901be <raw_sendto_if_src+0x7c>
  ttl = (ip_addr_ismulticast(dst_ip) ? raw_get_multicast_ttl(pcb) : pcb->ttl);
    e8890352:	0f07f793          	andi	a5,a5,240
    e8890356:	f2078793          	addi	a5,a5,-224
    e889035a:	b7d9                	j	e8890320 <raw_sendto_if_src+0x1de>
    e889035c:	0334c683          	lbu	a3,51(s1)
    e8890360:	b7e9                	j	e889032a <raw_sendto_if_src+0x1e8>
  err = ip_output_if(q, src_ip, dst_ip, ttl, pcb->tos, pcb->protocol, netif);
    e8890362:	864a                	mv	a2,s2
    e8890364:	85ce                	mv	a1,s3
    e8890366:	8552                	mv	a0,s4
    e8890368:	a30f90ef          	jal	ra,e8889598 <ip4_output_if>
    e889036c:	bfe1                	j	e8890344 <raw_sendto_if_src+0x202>

00000000e889036e <raw_sendto>:
  if ((pcb == NULL) || (ipaddr == NULL) || !IP_ADDR_PCB_VERSION_MATCH(pcb, ipaddr)) {
    e889036e:	0e050a63          	beqz	a0,e8890462 <raw_sendto+0xf4>
    e8890372:	0e060863          	beqz	a2,e8890462 <raw_sendto+0xf4>
    e8890376:	01454783          	lbu	a5,20(a0)
    e889037a:	02e00713          	li	a4,46
    e889037e:	00e78663          	beq	a5,a4,e889038a <raw_sendto+0x1c>
    e8890382:	01464703          	lbu	a4,20(a2)
    e8890386:	0cf71e63          	bne	a4,a5,e8890462 <raw_sendto+0xf4>
{
    e889038a:	7179                	addi	sp,sp,-48
    e889038c:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8890390:	f04a                	sd	s2,32(sp)
    e8890392:	f406                	sd	ra,40(sp)
    e8890394:	842a                	mv	s0,a0
  if (pcb->netif_idx != NETIF_NO_INDEX) {
    e8890396:	03054503          	lbu	a0,48(a0)
    e889039a:	84b2                	mv	s1,a2
    e889039c:	892e                	mv	s2,a1
    e889039e:	cd01                	beqz	a0,e88903b6 <raw_sendto+0x48>
    netif = netif_get_by_index(pcb->netif_idx);
    e88903a0:	c90fe0ef          	jal	ra,e888e830 <netif_get_by_index>
      netif = ip_route(&pcb->local_ip, ipaddr);
    e88903a4:	86aa                	mv	a3,a0
  if (netif == NULL) {
    e88903a6:	ed31                	bnez	a0,e8890402 <raw_sendto+0x94>
}
    e88903a8:	70a2                	ld	ra,40(sp)
    e88903aa:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88903ae:	7902                	ld	s2,32(sp)
    return ERR_RTE;
    e88903b0:	5571                	li	a0,-4
}
    e88903b2:	6145                	addi	sp,sp,48
    e88903b4:	8082                	ret
    if (ip_addr_ismulticast(ipaddr)) {
    e88903b6:	01464683          	lbu	a3,20(a2)
    e88903ba:	4719                	li	a4,6
    e88903bc:	421c                	lw	a5,0(a2)
    e88903be:	00e69d63          	bne	a3,a4,e88903d8 <raw_sendto+0x6a>
    e88903c2:	0ff7f793          	andi	a5,a5,255
    e88903c6:	0ff00713          	li	a4,255
    e88903ca:	00e78d63          	beq	a5,a4,e88903e4 <raw_sendto+0x76>
      netif = ip_route(&pcb->local_ip, ipaddr);
    e88903ce:	85a6                	mv	a1,s1
    e88903d0:	8522                	mv	a0,s0
    e88903d2:	e6bf90ef          	jal	ra,e888a23c <ip6_route>
    e88903d6:	b7f9                	j	e88903a4 <raw_sendto+0x36>
    if (ip_addr_ismulticast(ipaddr)) {
    e88903d8:	0f07f793          	andi	a5,a5,240
    e88903dc:	0e000713          	li	a4,224
    e88903e0:	00e79d63          	bne	a5,a4,e88903fa <raw_sendto+0x8c>
      netif = netif_get_by_index(pcb->mcast_ifindex);
    e88903e4:	04244503          	lbu	a0,66(s0)
    e88903e8:	c48fe0ef          	jal	ra,e888e830 <netif_get_by_index>
    e88903ec:	86aa                	mv	a3,a0
    if (netif == NULL)
    e88903ee:	e911                	bnez	a0,e8890402 <raw_sendto+0x94>
      netif = ip_route(&pcb->local_ip, ipaddr);
    e88903f0:	0144c703          	lbu	a4,20(s1)
    e88903f4:	4799                	li	a5,6
    e88903f6:	fcf70ce3          	beq	a4,a5,e88903ce <raw_sendto+0x60>
    e88903fa:	8526                	mv	a0,s1
    e88903fc:	a3df80ef          	jal	ra,e8888e38 <ip4_route>
    e8890400:	b755                	j	e88903a4 <raw_sendto+0x36>
  if (ip_addr_isany(&pcb->local_ip) || ip_addr_ismulticast(&pcb->local_ip)) {
    e8890402:	01444603          	lbu	a2,20(s0)
    e8890406:	4799                	li	a5,6
    e8890408:	8722                	mv	a4,s0
    e889040a:	04f61563          	bne	a2,a5,e8890454 <raw_sendto+0xe6>
    e889040e:	601c                	ld	a5,0(s0)
    e8890410:	e399                	bnez	a5,e8890416 <raw_sendto+0xa8>
    e8890412:	641c                	ld	a5,8(s0)
    e8890414:	c799                	beqz	a5,e8890422 <raw_sendto+0xb4>
    e8890416:	00044603          	lbu	a2,0(s0)
    e889041a:	0ff00793          	li	a5,255
    e889041e:	02c79163          	bne	a5,a2,e8890440 <raw_sendto+0xd2>
    src_ip = ip_netif_get_local_ip(netif, ipaddr);
    e8890422:	0144c603          	lbu	a2,20(s1)
    e8890426:	4799                	li	a5,6
    e8890428:	00868713          	addi	a4,a3,8
    e889042c:	00f61a63          	bne	a2,a5,e8890440 <raw_sendto+0xd2>
    e8890430:	8536                	mv	a0,a3
    e8890432:	85a6                	mv	a1,s1
    e8890434:	e436                	sd	a3,8(sp)
    e8890436:	836fa0ef          	jal	ra,e888a46c <ip6_select_source_address>
    e889043a:	872a                	mv	a4,a0
    if (src_ip == NULL) {
    e889043c:	66a2                	ld	a3,8(sp)
    e889043e:	d52d                	beqz	a0,e88903a8 <raw_sendto+0x3a>
  return raw_sendto_if_src(pcb, p, ipaddr, netif, src_ip);
    e8890440:	8626                	mv	a2,s1
    e8890442:	8522                	mv	a0,s0
}
    e8890444:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8890448:	70a2                	ld	ra,40(sp)
  return raw_sendto_if_src(pcb, p, ipaddr, netif, src_ip);
    e889044a:	85ca                	mv	a1,s2
}
    e889044c:	7902                	ld	s2,32(sp)
    e889044e:	6145                	addi	sp,sp,48
  return raw_sendto_if_src(pcb, p, ipaddr, netif, src_ip);
    e8890450:	cf3ff06f          	j	e8890142 <raw_sendto_if_src>
  if (ip_addr_isany(&pcb->local_ip) || ip_addr_ismulticast(&pcb->local_ip)) {
    e8890454:	401c                	lw	a5,0(s0)
    e8890456:	d7f1                	beqz	a5,e8890422 <raw_sendto+0xb4>
    e8890458:	0f07f793          	andi	a5,a5,240
    e889045c:	0e000613          	li	a2,224
    e8890460:	bf7d                	j	e889041e <raw_sendto+0xb0>
    return ERR_VAL;
    e8890462:	5569                	li	a0,-6
}
    e8890464:	8082                	ret

00000000e8890466 <raw_send>:
 *
 */
err_t
raw_send(struct raw_pcb *pcb, struct pbuf *p)
{
  return raw_sendto(pcb, p, &pcb->remote_ip);
    e8890466:	01850613          	addi	a2,a0,24
    e889046a:	f05ff06f          	j	e889036e <raw_sendto>

00000000e889046e <raw_remove>:
raw_remove(struct raw_pcb *pcb)
{
  struct raw_pcb *pcb2;
  LWIP_ASSERT_CORE_LOCKED();
  /* pcb to be removed is first in list? */
  if (raw_pcbs == pcb) {
    e889046e:	00056717          	auipc	a4,0x56
    e8890472:	fda70713          	addi	a4,a4,-38 # e88e6448 <raw_pcbs>
    e8890476:	631c                	ld	a5,0(a4)
{
    e8890478:	85aa                	mv	a1,a0
  if (raw_pcbs == pcb) {
    e889047a:	00a79863          	bne	a5,a0,e889048a <raw_remove+0x1c>
    /* make list start at 2nd pcb */
    raw_pcbs = raw_pcbs->next;
    e889047e:	7d1c                	ld	a5,56(a0)
    e8890480:	e31c                	sd	a5,0(a4)
        pcb2->next = pcb->next;
        break;
      }
    }
  }
  memp_free(MEMP_RAW_PCB, pcb);
    e8890482:	4501                	li	a0,0
    e8890484:	d1bfd06f          	j	e888e19e <memp_free>
    e8890488:	87ba                	mv	a5,a4
    for (pcb2 = raw_pcbs; pcb2 != NULL; pcb2 = pcb2->next) {
    e889048a:	dfe5                	beqz	a5,e8890482 <raw_remove+0x14>
      if (pcb2->next != NULL && pcb2->next == pcb) {
    e889048c:	7f98                	ld	a4,56(a5)
    e889048e:	db75                	beqz	a4,e8890482 <raw_remove+0x14>
    e8890490:	feb71ce3          	bne	a4,a1,e8890488 <raw_remove+0x1a>
        pcb2->next = pcb->next;
    e8890494:	7d98                	ld	a4,56(a1)
    e8890496:	ff98                	sd	a4,56(a5)
        break;
    e8890498:	b7ed                	j	e8890482 <raw_remove+0x14>

00000000e889049a <raw_new>:
 *
 * @see raw_remove()
 */
struct raw_pcb *
raw_new(u8_t proto)
{
    e889049a:	1101                	addi	sp,sp,-32
    e889049c:	e826                	sd	s1,16(sp)
    e889049e:	84aa                	mv	s1,a0
  struct raw_pcb *pcb;

  LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_new\n"));
  LWIP_ASSERT_CORE_LOCKED();

  pcb = (struct raw_pcb *)memp_malloc(MEMP_RAW_PCB);
    e88904a0:	4501                	li	a0,0
{
    e88904a2:	e422                	sd	s0,8(sp)
    e88904a4:	ec06                	sd	ra,24(sp)
  pcb = (struct raw_pcb *)memp_malloc(MEMP_RAW_PCB);
    e88904a6:	ca7fd0ef          	jal	ra,e888e14c <memp_malloc>
    e88904aa:	842a                	mv	s0,a0
  /* could allocate RAW PCB? */
  if (pcb != NULL) {
    e88904ac:	c505                	beqz	a0,e88904d4 <raw_new+0x3a>
    /* initialize PCB to all zeroes */
    memset(pcb, 0, sizeof(struct raw_pcb));
    e88904ae:	06000613          	li	a2,96
    e88904b2:	4581                	li	a1,0
    e88904b4:	ee1eb0ef          	jal	ra,e887c394 <eLIBs_memset>
    pcb->protocol = proto;
    e88904b8:	04940023          	sb	s1,64(s0)
    pcb->ttl = RAW_TTL;
    e88904bc:	57fd                	li	a5,-1
    e88904be:	02f409a3          	sb	a5,51(s0)
#if LWIP_MULTICAST_TX_OPTIONS
    raw_set_multicast_ttl(pcb, RAW_TTL);
    e88904c2:	04f401a3          	sb	a5,67(s0)
#endif /* LWIP_MULTICAST_TX_OPTIONS */
    pcb->next = raw_pcbs;
    e88904c6:	00056797          	auipc	a5,0x56
    e88904ca:	f8278793          	addi	a5,a5,-126 # e88e6448 <raw_pcbs>
    e88904ce:	6398                	ld	a4,0(a5)
    raw_pcbs = pcb;
    e88904d0:	e380                	sd	s0,0(a5)
    pcb->next = raw_pcbs;
    e88904d2:	fc18                	sd	a4,56(s0)
  }
  return pcb;
}
    e88904d4:	8522                	mv	a0,s0
    e88904d6:	60e2                	ld	ra,24(sp)
    e88904d8:	6422                	ld	s0,8(sp)
    e88904da:	64c2                	ld	s1,16(sp)
    e88904dc:	6105                	addi	sp,sp,32
    e88904de:	8082                	ret

00000000e88904e0 <raw_new_ip_type>:
 *
 * @see raw_remove()
 */
struct raw_pcb *
raw_new_ip_type(u8_t type, u8_t proto)
{
    e88904e0:	1141                	addi	sp,sp,-16
    e88904e2:	e022                	sd	s0,0(sp)
    e88904e4:	842a                	mv	s0,a0
  struct raw_pcb *pcb;
  LWIP_ASSERT_CORE_LOCKED();
  pcb = raw_new(proto);
    e88904e6:	852e                	mv	a0,a1
{
    e88904e8:	e406                	sd	ra,8(sp)
  pcb = raw_new(proto);
    e88904ea:	fb1ff0ef          	jal	ra,e889049a <raw_new>
#if LWIP_IPV4 && LWIP_IPV6
  if (pcb != NULL) {
    e88904ee:	c509                	beqz	a0,e88904f8 <raw_new_ip_type+0x18>
    IP_SET_TYPE_VAL(pcb->local_ip,  type);
    e88904f0:	00850a23          	sb	s0,20(a0)
    IP_SET_TYPE_VAL(pcb->remote_ip, type);
    e88904f4:	02850623          	sb	s0,44(a0)
  }
#else /* LWIP_IPV4 && LWIP_IPV6 */
  LWIP_UNUSED_ARG(type);
#endif /* LWIP_IPV4 && LWIP_IPV6 */
  return pcb;
}
    e88904f8:	60a2                	ld	ra,8(sp)
    e88904fa:	6402                	ld	s0,0(sp)
    e88904fc:	0141                	addi	sp,sp,16
    e88904fe:	8082                	ret

00000000e8890500 <raw_netif_ip_addr_changed>:
 */
void raw_netif_ip_addr_changed(const ip_addr_t *old_addr, const ip_addr_t *new_addr)
{
  struct raw_pcb *rpcb;

  if (!ip_addr_isany(old_addr) && !ip_addr_isany(new_addr)) {
    e8890500:	cd29                	beqz	a0,e889055a <raw_netif_ip_addr_changed+0x5a>
    e8890502:	4118                	lw	a4,0(a0)
    e8890504:	01454603          	lbu	a2,20(a0)
    e8890508:	4699                	li	a3,6
    e889050a:	00e037b3          	snez	a5,a4
    e889050e:	00d61b63          	bne	a2,a3,e8890524 <raw_netif_ip_addr_changed+0x24>
    e8890512:	4785                	li	a5,1
    e8890514:	eb01                	bnez	a4,e8890524 <raw_netif_ip_addr_changed+0x24>
    e8890516:	4158                	lw	a4,4(a0)
    e8890518:	e711                	bnez	a4,e8890524 <raw_netif_ip_addr_changed+0x24>
    e889051a:	4518                	lw	a4,8(a0)
    e889051c:	e701                	bnez	a4,e8890524 <raw_netif_ip_addr_changed+0x24>
    e889051e:	455c                	lw	a5,12(a0)
    e8890520:	00f037b3          	snez	a5,a5
    e8890524:	cb9d                	beqz	a5,e889055a <raw_netif_ip_addr_changed+0x5a>
    e8890526:	c995                	beqz	a1,e889055a <raw_netif_ip_addr_changed+0x5a>
    e8890528:	4198                	lw	a4,0(a1)
    e889052a:	0145c603          	lbu	a2,20(a1)
    e889052e:	4699                	li	a3,6
    e8890530:	00e037b3          	snez	a5,a4
    e8890534:	00d61b63          	bne	a2,a3,e889054a <raw_netif_ip_addr_changed+0x4a>
    e8890538:	4785                	li	a5,1
    e889053a:	eb01                	bnez	a4,e889054a <raw_netif_ip_addr_changed+0x4a>
    e889053c:	41d8                	lw	a4,4(a1)
    e889053e:	e711                	bnez	a4,e889054a <raw_netif_ip_addr_changed+0x4a>
    e8890540:	4598                	lw	a4,8(a1)
    e8890542:	e701                	bnez	a4,e889054a <raw_netif_ip_addr_changed+0x4a>
    e8890544:	45dc                	lw	a5,12(a1)
    e8890546:	00f037b3          	snez	a5,a5
    e889054a:	cb81                	beqz	a5,e889055a <raw_netif_ip_addr_changed+0x5a>
    for (rpcb = raw_pcbs; rpcb != NULL; rpcb = rpcb->next) {
    e889054c:	00056797          	auipc	a5,0x56
    e8890550:	efc78793          	addi	a5,a5,-260 # e88e6448 <raw_pcbs>
    e8890554:	639c                	ld	a5,0(a5)
      /* PCB bound to current local interface address? */
      if (ip_addr_cmp(&rpcb->local_ip, old_addr)) {
    e8890556:	4619                	li	a2,6
    for (rpcb = raw_pcbs; rpcb != NULL; rpcb = rpcb->next) {
    e8890558:	e391                	bnez	a5,e889055c <raw_netif_ip_addr_changed+0x5c>
         * is set to bound to the new one instead */
        ip_addr_copy(rpcb->local_ip, *new_addr);
      }
    }
  }
}
    e889055a:	8082                	ret
      if (ip_addr_cmp(&rpcb->local_ip, old_addr)) {
    e889055c:	0147c683          	lbu	a3,20(a5)
    e8890560:	01454703          	lbu	a4,20(a0)
    e8890564:	06d71363          	bne	a4,a3,e88905ca <raw_netif_ip_addr_changed+0xca>
    e8890568:	0007a803          	lw	a6,0(a5)
    e889056c:	4114                	lw	a3,0(a0)
    e889056e:	06c71063          	bne	a4,a2,e88905ce <raw_netif_ip_addr_changed+0xce>
    e8890572:	4701                	li	a4,0
    e8890574:	03069863          	bne	a3,a6,e88905a4 <raw_netif_ip_addr_changed+0xa4>
    e8890578:	0047a803          	lw	a6,4(a5)
    e889057c:	4154                	lw	a3,4(a0)
    e889057e:	02d81363          	bne	a6,a3,e88905a4 <raw_netif_ip_addr_changed+0xa4>
    e8890582:	0087a803          	lw	a6,8(a5)
    e8890586:	4514                	lw	a3,8(a0)
    e8890588:	00d81e63          	bne	a6,a3,e88905a4 <raw_netif_ip_addr_changed+0xa4>
    e889058c:	00c7a803          	lw	a6,12(a5)
    e8890590:	4554                	lw	a3,12(a0)
    e8890592:	00d81963          	bne	a6,a3,e88905a4 <raw_netif_ip_addr_changed+0xa4>
    e8890596:	0107c703          	lbu	a4,16(a5)
    e889059a:	01054683          	lbu	a3,16(a0)
    e889059e:	8f15                	sub	a4,a4,a3
    e88905a0:	00173713          	seqz	a4,a4
    e88905a4:	c31d                	beqz	a4,e88905ca <raw_netif_ip_addr_changed+0xca>
        ip_addr_copy(rpcb->local_ip, *new_addr);
    e88905a6:	0145c703          	lbu	a4,20(a1)
    e88905aa:	00e78a23          	sb	a4,20(a5)
    e88905ae:	02c71563          	bne	a4,a2,e88905d8 <raw_netif_ip_addr_changed+0xd8>
    e88905b2:	4198                	lw	a4,0(a1)
    e88905b4:	c398                	sw	a4,0(a5)
    e88905b6:	41d8                	lw	a4,4(a1)
    e88905b8:	c3d8                	sw	a4,4(a5)
    e88905ba:	4598                	lw	a4,8(a1)
    e88905bc:	c798                	sw	a4,8(a5)
    e88905be:	45d8                	lw	a4,12(a1)
    e88905c0:	c7d8                	sw	a4,12(a5)
    e88905c2:	0105c703          	lbu	a4,16(a1)
    e88905c6:	00e78823          	sb	a4,16(a5)
    for (rpcb = raw_pcbs; rpcb != NULL; rpcb = rpcb->next) {
    e88905ca:	7f9c                	ld	a5,56(a5)
    e88905cc:	b771                	j	e8890558 <raw_netif_ip_addr_changed+0x58>
      if (ip_addr_cmp(&rpcb->local_ip, old_addr)) {
    e88905ce:	41068733          	sub	a4,a3,a6
    e88905d2:	00173713          	seqz	a4,a4
    e88905d6:	b7f9                	j	e88905a4 <raw_netif_ip_addr_changed+0xa4>
        ip_addr_copy(rpcb->local_ip, *new_addr);
    e88905d8:	4198                	lw	a4,0(a1)
    e88905da:	0007a223          	sw	zero,4(a5)
    e88905de:	0007b423          	sd	zero,8(a5)
    e88905e2:	c398                	sw	a4,0(a5)
    e88905e4:	00078823          	sb	zero,16(a5)
    e88905e8:	b7cd                	j	e88905ca <raw_netif_ip_addr_changed+0xca>

00000000e88905ea <stats_init>:
#ifdef LWIP_DEBUG
#if MEM_STATS
  lwip_stats.mem.name = "MEM";
#endif /* MEM_STATS */
#endif /* LWIP_DEBUG */
}
    e88905ea:	8082                	ret

00000000e88905ec <tcp_new_port>:
 */
static u16_t
tcp_new_port(void)
{
  u8_t i;
  u16_t n = 0;
    e88905ec:	00045717          	auipc	a4,0x45
    e88905f0:	f9c70713          	addi	a4,a4,-100 # e88d5588 <tcp_port>
    e88905f4:	00075783          	lhu	a5,0(a4)
  struct tcp_pcb *pcb;

again:
  tcp_port++;
  if (tcp_port == TCP_LOCAL_PORT_RANGE_END) {
    e88905f8:	65c1                	lui	a1,0x10
{
    e88905fa:	6511                	lui	a0,0x4
  if (tcp_port == TCP_LOCAL_PORT_RANGE_END) {
    e88905fc:	15fd                	addi	a1,a1,-1
    tcp_port = TCP_LOCAL_PORT_RANGE_START;
  }
  /* Check all PCB lists. */
  for (i = 0; i < NUM_TCP_PCB_LISTS; i++) {
    for (pcb = *tcp_pcb_lists[i]; pcb != NULL; pcb = pcb->next) {
    e88905fe:	00041897          	auipc	a7,0x41
    e8890602:	ea288893          	addi	a7,a7,-350 # e88d14a0 <tcp_pcb_lists>
  for (i = 0; i < NUM_TCP_PCB_LISTS; i++) {
    e8890606:	4811                	li	a6,4
  tcp_port++;
    e8890608:	2785                	addiw	a5,a5,1
    e889060a:	3c07b78b          	extu	a5,a5,15,0
  if (tcp_port == TCP_LOCAL_PORT_RANGE_END) {
    e889060e:	00b79363          	bne	a5,a1,e8890614 <tcp_new_port+0x28>
    tcp_port = TCP_LOCAL_PORT_RANGE_START;
    e8890612:	67b1                	lui	a5,0xc
    e8890614:	4681                	li	a3,0
      if (pcb->local_port == tcp_port) {
    e8890616:	0007831b          	sext.w	t1,a5
    for (pcb = *tcp_pcb_lists[i]; pcb != NULL; pcb = pcb->next) {
    e889061a:	66d8c60b          	lrd	a2,a7,a3,3
    e889061e:	6210                	ld	a2,0(a2)
    e8890620:	ea01                	bnez	a2,e8890630 <tcp_new_port+0x44>
  for (i = 0; i < NUM_TCP_PCB_LISTS; i++) {
    e8890622:	0685                	addi	a3,a3,1
    e8890624:	ff069be3          	bne	a3,a6,e889061a <tcp_new_port+0x2e>
    e8890628:	00f71023          	sh	a5,0(a4)
        }
        goto again;
      }
    }
  }
  return tcp_port;
    e889062c:	853e                	mv	a0,a5
}
    e889062e:	8082                	ret
      if (pcb->local_port == tcp_port) {
    e8890630:	04a65e03          	lhu	t3,74(a2)
    e8890634:	006e1963          	bne	t3,t1,e8890646 <tcp_new_port+0x5a>
        if (n > (TCP_LOCAL_PORT_RANGE_END - TCP_LOCAL_PORT_RANGE_START)) {
    e8890638:	357d                	addiw	a0,a0,-1
    e889063a:	3c05350b          	extu	a0,a0,15,0
    e889063e:	f569                	bnez	a0,e8890608 <tcp_new_port+0x1c>
    e8890640:	00f71023          	sh	a5,0(a4)
    e8890644:	8082                	ret
    for (pcb = *tcp_pcb_lists[i]; pcb != NULL; pcb = pcb->next) {
    e8890646:	7e10                	ld	a2,56(a2)
    e8890648:	bfe1                	j	e8890620 <tcp_new_port+0x34>

00000000e889064a <tcp_close_shutdown_fin>:
{
    e889064a:	1141                	addi	sp,sp,-16
    e889064c:	e022                	sd	s0,0(sp)
    e889064e:	e406                	sd	ra,8(sp)
    e8890650:	842a                	mv	s0,a0
  LWIP_ASSERT("pcb != NULL", pcb != NULL);
    e8890652:	e51d                	bnez	a0,e8890680 <tcp_close_shutdown_fin+0x36>
    e8890654:	02f00593          	li	a1,47
    e8890658:	00041517          	auipc	a0,0x41
    e889065c:	c1850513          	addi	a0,a0,-1000 # e88d1270 <tcp_backoff+0x108>
    e8890660:	d19eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890664:	00150693          	addi	a3,a0,1
    e8890668:	19c00613          	li	a2,412
    e889066c:	00041597          	auipc	a1,0x41
    e8890670:	c8c58593          	addi	a1,a1,-884 # e88d12f8 <tcp_backoff+0x190>
    e8890674:	0003f517          	auipc	a0,0x3f
    e8890678:	a3c50513          	addi	a0,a0,-1476 # e88cf0b0 <kSinTable1024+0x900>
    e889067c:	c4beb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  switch (pcb->state) {
    e8890680:	04844783          	lbu	a5,72(s0)
    e8890684:	4711                	li	a4,4
    e8890686:	04e78163          	beq	a5,a4,e88906c8 <tcp_close_shutdown_fin+0x7e>
    e889068a:	471d                	li	a4,7
    e889068c:	04e78c63          	beq	a5,a4,e88906e4 <tcp_close_shutdown_fin+0x9a>
    e8890690:	470d                	li	a4,3
      return ERR_OK;
    e8890692:	4501                	li	a0,0
  switch (pcb->state) {
    e8890694:	02e79663          	bne	a5,a4,e88906c0 <tcp_close_shutdown_fin+0x76>
      err = tcp_send_fin(pcb);
    e8890698:	8522                	mv	a0,s0
    e889069a:	15c050ef          	jal	ra,e88957f6 <tcp_send_fin>
      if (err == ERR_OK) {
    e889069e:	e135                	bnez	a0,e8890702 <tcp_close_shutdown_fin+0xb8>
        MIB2_STATS_INC(mib2.tcpattemptfails);
    e88906a0:	00056717          	auipc	a4,0x56
    e88906a4:	db070713          	addi	a4,a4,-592 # e88e6450 <lwip_stats>
    e88906a8:	19c72783          	lw	a5,412(a4)
    e88906ac:	2785                	addiw	a5,a5,1
    e88906ae:	18f72e23          	sw	a5,412(a4)
        pcb->state = FIN_WAIT_1;
    e88906b2:	4795                	li	a5,5
        pcb->state = LAST_ACK;
    e88906b4:	04f40423          	sb	a5,72(s0)
    tcp_output(pcb);
    e88906b8:	8522                	mv	a0,s0
    e88906ba:	556050ef          	jal	ra,e8895c10 <tcp_output>
    return ERR_OK;
    e88906be:	4501                	li	a0,0
}
    e88906c0:	60a2                	ld	ra,8(sp)
    e88906c2:	6402                	ld	s0,0(sp)
    e88906c4:	0141                	addi	sp,sp,16
    e88906c6:	8082                	ret
      err = tcp_send_fin(pcb);
    e88906c8:	8522                	mv	a0,s0
    e88906ca:	12c050ef          	jal	ra,e88957f6 <tcp_send_fin>
      if (err == ERR_OK) {
    e88906ce:	e915                	bnez	a0,e8890702 <tcp_close_shutdown_fin+0xb8>
        MIB2_STATS_INC(mib2.tcpestabresets);
    e88906d0:	00056717          	auipc	a4,0x56
    e88906d4:	d8070713          	addi	a4,a4,-640 # e88e6450 <lwip_stats>
    e88906d8:	1a072783          	lw	a5,416(a4)
    e88906dc:	2785                	addiw	a5,a5,1
    e88906de:	1af72023          	sw	a5,416(a4)
    e88906e2:	bfc1                	j	e88906b2 <tcp_close_shutdown_fin+0x68>
      err = tcp_send_fin(pcb);
    e88906e4:	8522                	mv	a0,s0
    e88906e6:	110050ef          	jal	ra,e88957f6 <tcp_send_fin>
      if (err == ERR_OK) {
    e88906ea:	ed01                	bnez	a0,e8890702 <tcp_close_shutdown_fin+0xb8>
        MIB2_STATS_INC(mib2.tcpestabresets);
    e88906ec:	00056717          	auipc	a4,0x56
    e88906f0:	d6470713          	addi	a4,a4,-668 # e88e6450 <lwip_stats>
    e88906f4:	1a072783          	lw	a5,416(a4)
    e88906f8:	2785                	addiw	a5,a5,1
    e88906fa:	1af72023          	sw	a5,416(a4)
        pcb->state = LAST_ACK;
    e88906fe:	47a5                	li	a5,9
    e8890700:	bf55                	j	e88906b4 <tcp_close_shutdown_fin+0x6a>
  } else if (err == ERR_MEM) {
    e8890702:	57fd                	li	a5,-1
    e8890704:	faf51ee3          	bne	a0,a5,e88906c0 <tcp_close_shutdown_fin+0x76>
    tcp_set_flags(pcb, TF_CLOSEPEND);
    e8890708:	04e45783          	lhu	a5,78(s0)
    e889070c:	0087e793          	ori	a5,a5,8
    e8890710:	04f41723          	sh	a5,78(s0)
    e8890714:	b76d                	j	e88906be <tcp_close_shutdown_fin+0x74>

00000000e8890716 <tcp_init>:
  tcp_port = TCP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND());
    e8890716:	80000537          	lui	a0,0x80000
{
    e889071a:	1141                	addi	sp,sp,-16
  tcp_port = TCP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND());
    e889071c:	fff54513          	not	a0,a0
{
    e8890720:	e406                	sd	ra,8(sp)
  tcp_port = TCP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND());
    e8890722:	bd1eb0ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e8890726:	3405350b          	extu	a0,a0,13,0
    e889072a:	77f1                	lui	a5,0xffffc
}
    e889072c:	60a2                	ld	ra,8(sp)
  tcp_port = TCP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND());
    e889072e:	9d3d                	addw	a0,a0,a5
    e8890730:	00045797          	auipc	a5,0x45
    e8890734:	e4a79c23          	sh	a0,-424(a5) # e88d5588 <tcp_port>
}
    e8890738:	0141                	addi	sp,sp,16
    e889073a:	8082                	ret

00000000e889073c <tcp_free>:
{
    e889073c:	1141                	addi	sp,sp,-16
    e889073e:	e022                	sd	s0,0(sp)
    e8890740:	e406                	sd	ra,8(sp)
  LWIP_ASSERT("tcp_free: LISTEN", pcb->state != LISTEN);
    e8890742:	04854703          	lbu	a4,72(a0) # ffffffff80000048 <__DRAM0_INF_BASE+0xfffffffe80010048>
    e8890746:	4785                	li	a5,1
{
    e8890748:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_free: LISTEN", pcb->state != LISTEN);
    e889074a:	02f71863          	bne	a4,a5,e889077a <tcp_free+0x3e>
    e889074e:	02f00593          	li	a1,47
    e8890752:	00041517          	auipc	a0,0x41
    e8890756:	b1e50513          	addi	a0,a0,-1250 # e88d1270 <tcp_backoff+0x108>
    e889075a:	c1feb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889075e:	00150693          	addi	a3,a0,1
    e8890762:	0d400613          	li	a2,212
    e8890766:	00041597          	auipc	a1,0x41
    e889076a:	c6258593          	addi	a1,a1,-926 # e88d13c8 <tcp_backoff+0x260>
    e889076e:	0003f517          	auipc	a0,0x3f
    e8890772:	94250513          	addi	a0,a0,-1726 # e88cf0b0 <kSinTable1024+0x900>
    e8890776:	b51eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  memp_free(MEMP_TCP_PCB, pcb);
    e889077a:	85a2                	mv	a1,s0
}
    e889077c:	6402                	ld	s0,0(sp)
    e889077e:	60a2                	ld	ra,8(sp)
  memp_free(MEMP_TCP_PCB, pcb);
    e8890780:	4509                	li	a0,2
}
    e8890782:	0141                	addi	sp,sp,16
  memp_free(MEMP_TCP_PCB, pcb);
    e8890784:	a1bfd06f          	j	e888e19e <memp_free>

00000000e8890788 <tcp_bind>:
{
    e8890788:	711d                	addi	sp,sp,-96
    e889078a:	e8a2                	sd	s0,80(sp)
    e889078c:	ec86                	sd	ra,88(sp)
    e889078e:	e4a6                	sd	s1,72(sp)
    e8890790:	e0ca                	sd	s2,64(sp)
    e8890792:	fc4e                	sd	s3,56(sp)
    e8890794:	f852                	sd	s4,48(sp)
    e8890796:	842a                	mv	s0,a0
  if (ipaddr == NULL) {
    e8890798:	e589                	bnez	a1,e88907a2 <tcp_bind+0x1a>
    ipaddr = IP4_ADDR_ANY;
    e889079a:	00040597          	auipc	a1,0x40
    e889079e:	82658593          	addi	a1,a1,-2010 # e88cffc0 <ip_addr_any>
  LWIP_ERROR("tcp_bind: invalid pcb", pcb != NULL, return ERR_ARG);
    e88907a2:	e021                	bnez	s0,e88907e2 <tcp_bind+0x5a>
    e88907a4:	02f00593          	li	a1,47
    e88907a8:	00041517          	auipc	a0,0x41
    e88907ac:	ac850513          	addi	a0,a0,-1336 # e88d1270 <tcp_backoff+0x108>
    e88907b0:	bc9eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88907b4:	00150693          	addi	a3,a0,1
    e88907b8:	2a900613          	li	a2,681
    e88907bc:	00041597          	auipc	a1,0x41
    e88907c0:	9bc58593          	addi	a1,a1,-1604 # e88d1178 <tcp_backoff+0x10>
    e88907c4:	0003f517          	auipc	a0,0x3f
    e88907c8:	8ec50513          	addi	a0,a0,-1812 # e88cf0b0 <kSinTable1024+0x900>
    e88907cc:	afbeb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88907d0:	5541                	li	a0,-16
}
    e88907d2:	60e6                	ld	ra,88(sp)
    e88907d4:	6446                	ld	s0,80(sp)
    e88907d6:	64a6                	ld	s1,72(sp)
    e88907d8:	6906                	ld	s2,64(sp)
    e88907da:	79e2                	ld	s3,56(sp)
    e88907dc:	7a42                	ld	s4,48(sp)
    e88907de:	6125                	addi	sp,sp,96
    e88907e0:	8082                	ret
  LWIP_ERROR("tcp_bind: can only bind in state CLOSED", pcb->state == CLOSED, return ERR_VAL);
    e88907e2:	04844783          	lbu	a5,72(s0)
    e88907e6:	cb8d                	beqz	a5,e8890818 <tcp_bind+0x90>
    e88907e8:	02f00593          	li	a1,47
    e88907ec:	00041517          	auipc	a0,0x41
    e88907f0:	a8450513          	addi	a0,a0,-1404 # e88d1270 <tcp_backoff+0x108>
    e88907f4:	b85eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88907f8:	00150693          	addi	a3,a0,1
    e88907fc:	2ab00613          	li	a2,683
    e8890800:	00041597          	auipc	a1,0x41
    e8890804:	99058593          	addi	a1,a1,-1648 # e88d1190 <tcp_backoff+0x28>
    e8890808:	0003f517          	auipc	a0,0x3f
    e889080c:	8a850513          	addi	a0,a0,-1880 # e88cf0b0 <kSinTable1024+0x900>
    e8890810:	ab7eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8890814:	5569                	li	a0,-6
    e8890816:	bf75                	j	e88907d2 <tcp_bind+0x4a>
  if (ip_get_option(pcb, SOF_REUSEADDR)) {
    e8890818:	03144483          	lbu	s1,49(s0)
    e889081c:	8891                	andi	s1,s1,4
    max_pcb_list = NUM_TCP_PCB_LISTS_NO_TIME_WAIT;
    e889081e:	0014b493          	seqz	s1,s1
    e8890822:	048d                	addi	s1,s1,3
  if (IP_IS_V6(ipaddr) && ip6_addr_lacks_zone(ip_2_ip6(ipaddr), IP6_UNICAST)) {
    e8890824:	cda5                	beqz	a1,e889089c <tcp_bind+0x114>
    e8890826:	0145c683          	lbu	a3,20(a1)
    e889082a:	4799                	li	a5,6
    e889082c:	06f69863          	bne	a3,a5,e889089c <tcp_bind+0x114>
    e8890830:	0105c903          	lbu	s2,16(a1)
    e8890834:	06091463          	bnez	s2,e889089c <tcp_bind+0x114>
    e8890838:	4198                	lw	a4,0(a1)
    e889083a:	69b1                	lui	s3,0xc
    e889083c:	0ff98993          	addi	s3,s3,255 # c0ff <memcmp-0xe87f3f01>
    e8890840:	67a1                	lui	a5,0x8
    e8890842:	01377a33          	and	s4,a4,s3
    e8890846:	0fe78793          	addi	a5,a5,254 # 80fe <memcmp-0xe87f7f02>
    e889084a:	04fa1963          	bne	s4,a5,e889089c <tcp_bind+0x114>
    ip_addr_copy(zoned_ipaddr, *ipaddr);
    e889084e:	41dc                	lw	a5,4(a1)
    e8890850:	e432                	sd	a2,8(sp)
    e8890852:	02d10623          	sb	a3,44(sp)
    e8890856:	ce3e                	sw	a5,28(sp)
    e8890858:	659c                	ld	a5,8(a1)
    ip6_addr_select_zone(ip_2_ip6(&zoned_ipaddr), ip_2_ip6(&zoned_ipaddr));
    e889085a:	082c                	addi	a1,sp,24
    e889085c:	852e                	mv	a0,a1
    ip_addr_copy(zoned_ipaddr, *ipaddr);
    e889085e:	cc3a                	sw	a4,24(sp)
    e8890860:	f03e                	sd	a5,32(sp)
    e8890862:	02010423          	sb	zero,40(sp)
    ip6_addr_select_zone(ip_2_ip6(&zoned_ipaddr), ip_2_ip6(&zoned_ipaddr));
    e8890866:	9d7f90ef          	jal	ra,e888a23c <ip6_route>
    ipaddr = &zoned_ipaddr;
    e889086a:	082c                	addi	a1,sp,24
    ip6_addr_select_zone(ip_2_ip6(&zoned_ipaddr), ip_2_ip6(&zoned_ipaddr));
    e889086c:	6622                	ld	a2,8(sp)
    e889086e:	c51d                	beqz	a0,e889089c <tcp_bind+0x114>
    e8890870:	47e2                	lw	a5,24(sp)
    e8890872:	0137f9b3          	and	s3,a5,s3
    e8890876:	01498b63          	beq	s3,s4,e889088c <tcp_bind+0x104>
    e889087a:	6725                	lui	a4,0x9
    e889087c:	177d                	addi	a4,a4,-1
    e889087e:	8ff9                	and	a5,a5,a4
    e8890880:	e017879b          	addiw	a5,a5,-511
    e8890884:	eff7f793          	andi	a5,a5,-257
    e8890888:	2781                	sext.w	a5,a5
    e889088a:	e791                	bnez	a5,e8890896 <tcp_bind+0x10e>
    e889088c:	10e54903          	lbu	s2,270(a0)
    e8890890:	2905                	addiw	s2,s2,1
    e8890892:	0ff97913          	andi	s2,s2,255
    e8890896:	03210423          	sb	s2,40(sp)
    ipaddr = &zoned_ipaddr;
    e889089a:	082c                	addi	a1,sp,24
  if (port == 0) {
    e889089c:	4681                	li	a3,0
    e889089e:	c215                	beqz	a2,e88908c2 <tcp_bind+0x13a>
      for (cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) {
    e88908a0:	00041317          	auipc	t1,0x41
    e88908a4:	c0030313          	addi	t1,t1,-1024 # e88d14a0 <tcp_pcb_lists>
        if (cpcb->local_port == port) {
    e88908a8:	00060e1b          	sext.w	t3,a2
            if ((IP_IS_V6(ipaddr) == IP_IS_V6_VAL(cpcb->local_ip)) &&
    e88908ac:	4819                	li	a6,6
      for (cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) {
    e88908ae:	66d3478b          	lrd	a5,t1,a3,3
    e88908b2:	639c                	ld	a5,0(a5)
    e88908b4:	e3d1                	bnez	a5,e8890938 <tcp_bind+0x1b0>
    for (i = 0; i < max_pcb_list; i++) {
    e88908b6:	0685                	addi	a3,a3,1
    e88908b8:	0006879b          	sext.w	a5,a3
    e88908bc:	fe97c9e3          	blt	a5,s1,e88908ae <tcp_bind+0x126>
    e88908c0:	a809                	j	e88908d2 <tcp_bind+0x14a>
    e88908c2:	e42e                	sd	a1,8(sp)
    port = tcp_new_port();
    e88908c4:	d29ff0ef          	jal	ra,e88905ec <tcp_new_port>
    e88908c8:	862a                	mv	a2,a0
    if (port == 0) {
    e88908ca:	65a2                	ld	a1,8(sp)
      return ERR_BUF;
    e88908cc:	5579                	li	a0,-2
    if (port == 0) {
    e88908ce:	f00602e3          	beqz	a2,e88907d2 <tcp_bind+0x4a>
  if (!ip_addr_isany(ipaddr)
    e88908d2:	0145c783          	lbu	a5,20(a1)
    e88908d6:	cd81                	beqz	a1,e88908ee <tcp_bind+0x166>
    e88908d8:	4699                	li	a3,6
    e88908da:	4198                	lw	a4,0(a1)
    e88908dc:	00d79863          	bne	a5,a3,e88908ec <tcp_bind+0x164>
    e88908e0:	eb19                	bnez	a4,e88908f6 <tcp_bind+0x16e>
    e88908e2:	41d8                	lw	a4,4(a1)
    e88908e4:	eb09                	bnez	a4,e88908f6 <tcp_bind+0x16e>
    e88908e6:	4598                	lw	a4,8(a1)
    e88908e8:	e719                	bnez	a4,e88908f6 <tcp_bind+0x16e>
    e88908ea:	45d8                	lw	a4,12(a1)
      || (IP_GET_TYPE(ipaddr) != IP_GET_TYPE(&pcb->local_ip))
    e88908ec:	e709                	bnez	a4,e88908f6 <tcp_bind+0x16e>
    e88908ee:	01444703          	lbu	a4,20(s0)
    e88908f2:	02f70663          	beq	a4,a5,e889091e <tcp_bind+0x196>
    ip_addr_set(&pcb->local_ip, ipaddr);
    e88908f6:	00f40a23          	sb	a5,20(s0)
    e88908fa:	c5fd                	beqz	a1,e88909e8 <tcp_bind+0x260>
    e88908fc:	0145c703          	lbu	a4,20(a1)
    e8890900:	4799                	li	a5,6
    e8890902:	0ef71c63          	bne	a4,a5,e88909fa <tcp_bind+0x272>
    e8890906:	419c                	lw	a5,0(a1)
    e8890908:	c01c                	sw	a5,0(s0)
    e889090a:	41dc                	lw	a5,4(a1)
    e889090c:	c05c                	sw	a5,4(s0)
    e889090e:	459c                	lw	a5,8(a1)
    e8890910:	c41c                	sw	a5,8(s0)
    e8890912:	45dc                	lw	a5,12(a1)
    e8890914:	c45c                	sw	a5,12(s0)
    e8890916:	0105c783          	lbu	a5,16(a1)
    e889091a:	00f40823          	sb	a5,16(s0)
  TCP_REG(&tcp_bound_pcbs, pcb);
    e889091e:	00056797          	auipc	a5,0x56
    e8890922:	d5a78793          	addi	a5,a5,-678 # e88e6678 <tcp_bound_pcbs>
    e8890926:	6398                	ld	a4,0(a5)
  pcb->local_port = port;
    e8890928:	04c41523          	sh	a2,74(s0)
  TCP_REG(&tcp_bound_pcbs, pcb);
    e889092c:	e380                	sd	s0,0(a5)
    e889092e:	fc18                	sd	a4,56(s0)
    e8890930:	537050ef          	jal	ra,e8896666 <tcp_timer_needed>
  return ERR_OK;
    e8890934:	4501                	li	a0,0
    e8890936:	bd71                	j	e88907d2 <tcp_bind+0x4a>
        if (cpcb->local_port == port) {
    e8890938:	04a7d703          	lhu	a4,74(a5)
    e889093c:	09c71c63          	bne	a4,t3,e88909d4 <tcp_bind+0x24c>
          if (!ip_get_option(pcb, SOF_REUSEADDR) ||
    e8890940:	03144703          	lbu	a4,49(s0)
    e8890944:	8b11                	andi	a4,a4,4
    e8890946:	c709                	beqz	a4,e8890950 <tcp_bind+0x1c8>
    e8890948:	0317c703          	lbu	a4,49(a5)
    e889094c:	8b11                	andi	a4,a4,4
    e889094e:	e359                	bnez	a4,e88909d4 <tcp_bind+0x24c>
            if ((IP_IS_V6(ipaddr) == IP_IS_V6_VAL(cpcb->local_ip)) &&
    e8890950:	4701                	li	a4,0
    e8890952:	c591                	beqz	a1,e889095e <tcp_bind+0x1d6>
    e8890954:	0145c703          	lbu	a4,20(a1)
    e8890958:	1769                	addi	a4,a4,-6
    e889095a:	00173713          	seqz	a4,a4
    e889095e:	0147c503          	lbu	a0,20(a5)
    e8890962:	ffa50893          	addi	a7,a0,-6
    e8890966:	0018b893          	seqz	a7,a7
    e889096a:	06e89563          	bne	a7,a4,e88909d4 <tcp_bind+0x24c>
                (ip_addr_isany(&cpcb->local_ip) ||
    e889096e:	07051563          	bne	a0,a6,e88909d8 <tcp_bind+0x250>
    e8890972:	6398                	ld	a4,0(a5)
    e8890974:	e319                	bnez	a4,e889097a <tcp_bind+0x1f2>
    e8890976:	6798                	ld	a4,8(a5)
    e8890978:	c33d                	beqz	a4,e88909de <tcp_bind+0x256>
            if ((IP_IS_V6(ipaddr) == IP_IS_V6_VAL(cpcb->local_ip)) &&
    e889097a:	c1b5                	beqz	a1,e88909de <tcp_bind+0x256>
                 ip_addr_isany(ipaddr) ||
    e889097c:	0145c883          	lbu	a7,20(a1)
    e8890980:	4198                	lw	a4,0(a1)
    e8890982:	05089d63          	bne	a7,a6,e88909dc <tcp_bind+0x254>
    e8890986:	ef09                	bnez	a4,e88909a0 <tcp_bind+0x218>
    e8890988:	0045ae83          	lw	t4,4(a1)
    e889098c:	000e9a63          	bnez	t4,e88909a0 <tcp_bind+0x218>
    e8890990:	0085ae83          	lw	t4,8(a1)
    e8890994:	000e9663          	bnez	t4,e88909a0 <tcp_bind+0x218>
    e8890998:	00c5ae83          	lw	t4,12(a1)
    e889099c:	040e8163          	beqz	t4,e88909de <tcp_bind+0x256>
            if ((IP_IS_V6(ipaddr) == IP_IS_V6_VAL(cpcb->local_ip)) &&
    e88909a0:	03151a63          	bne	a0,a7,e88909d4 <tcp_bind+0x24c>
    e88909a4:	0007a883          	lw	a7,0(a5)
    e88909a8:	03051d63          	bne	a0,a6,e88909e2 <tcp_bind+0x25a>
                 ip_addr_cmp(&cpcb->local_ip, ipaddr))) {
    e88909ac:	02e89463          	bne	a7,a4,e88909d4 <tcp_bind+0x24c>
    e88909b0:	43c8                	lw	a0,4(a5)
    e88909b2:	41d8                	lw	a4,4(a1)
    e88909b4:	02e51063          	bne	a0,a4,e88909d4 <tcp_bind+0x24c>
    e88909b8:	4788                	lw	a0,8(a5)
    e88909ba:	4598                	lw	a4,8(a1)
    e88909bc:	00e51c63          	bne	a0,a4,e88909d4 <tcp_bind+0x24c>
    e88909c0:	47c8                	lw	a0,12(a5)
    e88909c2:	45d8                	lw	a4,12(a1)
    e88909c4:	00e51863          	bne	a0,a4,e88909d4 <tcp_bind+0x24c>
    e88909c8:	0107c503          	lbu	a0,16(a5)
    e88909cc:	0105c703          	lbu	a4,16(a1)
    e88909d0:	00e50763          	beq	a0,a4,e88909de <tcp_bind+0x256>
      for (cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) {
    e88909d4:	7f9c                	ld	a5,56(a5)
    e88909d6:	bdf9                	j	e88908b4 <tcp_bind+0x12c>
                (ip_addr_isany(&cpcb->local_ip) ||
    e88909d8:	4398                	lw	a4,0(a5)
    e88909da:	bf79                	j	e8890978 <tcp_bind+0x1f0>
    e88909dc:	f371                	bnez	a4,e88909a0 <tcp_bind+0x218>
              return ERR_USE;
    e88909de:	5561                	li	a0,-8
    e88909e0:	bbcd                	j	e88907d2 <tcp_bind+0x4a>
                 ip_addr_isany(ipaddr) ||
    e88909e2:	fee899e3          	bne	a7,a4,e88909d4 <tcp_bind+0x24c>
    e88909e6:	bfe5                	j	e88909de <tcp_bind+0x256>
    ip_addr_set(&pcb->local_ip, ipaddr);
    e88909e8:	4781                	li	a5,0
    e88909ea:	c01c                	sw	a5,0(s0)
    e88909ec:	00042223          	sw	zero,4(s0)
    e88909f0:	00043423          	sd	zero,8(s0)
    e88909f4:	00040823          	sb	zero,16(s0)
    e88909f8:	b71d                	j	e889091e <tcp_bind+0x196>
    e88909fa:	419c                	lw	a5,0(a1)
    e88909fc:	b7fd                	j	e88909ea <tcp_bind+0x262>

00000000e88909fe <tcp_bind_netif>:
    pcb->netif_idx = NETIF_NO_INDEX;
    e88909fe:	4781                	li	a5,0
  if (netif != NULL) {
    e8890a00:	c591                	beqz	a1,e8890a0c <tcp_bind_netif+0xe>
    pcb->netif_idx = netif_get_index(netif);
    e8890a02:	10e5c783          	lbu	a5,270(a1)
    e8890a06:	2785                	addiw	a5,a5,1
    e8890a08:	0ff7f793          	andi	a5,a5,255
    e8890a0c:	02f50823          	sb	a5,48(a0)
}
    e8890a10:	8082                	ret

00000000e8890a12 <tcp_listen_with_backlog_and_err>:
{
    e8890a12:	1101                	addi	sp,sp,-32
    e8890a14:	e84a                	sd	s2,16(sp)
    e8890a16:	ec06                	sd	ra,24(sp)
    e8890a18:	f891540b          	sdd	s0,s1,(sp),0,4
    e8890a1c:	8932                	mv	s2,a2
  LWIP_ERROR("tcp_listen_with_backlog_and_err: invalid pcb", pcb != NULL, res = ERR_ARG; goto done);
    e8890a1e:	e521                	bnez	a0,e8890a66 <tcp_listen_with_backlog_and_err+0x54>
    e8890a20:	02f00593          	li	a1,47
    e8890a24:	00041517          	auipc	a0,0x41
    e8890a28:	84c50513          	addi	a0,a0,-1972 # e88d1270 <tcp_backoff+0x108>
    e8890a2c:	94deb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890a30:	00150693          	addi	a3,a0,1
    e8890a34:	35900613          	li	a2,857
    e8890a38:	00041597          	auipc	a1,0x41
    e8890a3c:	9a858593          	addi	a1,a1,-1624 # e88d13e0 <tcp_backoff+0x278>
    e8890a40:	0003e517          	auipc	a0,0x3e
    e8890a44:	67050513          	addi	a0,a0,1648 # e88cf0b0 <kSinTable1024+0x900>
    e8890a48:	87feb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  struct tcp_pcb_listen *lpcb = NULL;
    e8890a4c:	4481                	li	s1,0
  LWIP_ERROR("tcp_listen_with_backlog_and_err: invalid pcb", pcb != NULL, res = ERR_ARG; goto done);
    e8890a4e:	57c1                	li	a5,-16
  if (err != NULL) {
    e8890a50:	00090463          	beqz	s2,e8890a58 <tcp_listen_with_backlog_and_err+0x46>
    *err = res;
    e8890a54:	00f90023          	sb	a5,0(s2)
}
    e8890a58:	8526                	mv	a0,s1
    e8890a5a:	60e2                	ld	ra,24(sp)
    e8890a5c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8890a60:	6942                	ld	s2,16(sp)
    e8890a62:	6105                	addi	sp,sp,32
    e8890a64:	8082                	ret
  LWIP_ERROR("tcp_listen_with_backlog_and_err: pcb already connected", pcb->state == CLOSED, res = ERR_CLSD; goto done);
    e8890a66:	04854783          	lbu	a5,72(a0)
    e8890a6a:	842a                	mv	s0,a0
    e8890a6c:	cb95                	beqz	a5,e8890aa0 <tcp_listen_with_backlog_and_err+0x8e>
    e8890a6e:	02f00593          	li	a1,47
    e8890a72:	00040517          	auipc	a0,0x40
    e8890a76:	7fe50513          	addi	a0,a0,2046 # e88d1270 <tcp_backoff+0x108>
    e8890a7a:	8ffeb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890a7e:	00150693          	addi	a3,a0,1
    e8890a82:	35a00613          	li	a2,858
    e8890a86:	00041597          	auipc	a1,0x41
    e8890a8a:	98a58593          	addi	a1,a1,-1654 # e88d1410 <tcp_backoff+0x2a8>
    e8890a8e:	0003e517          	auipc	a0,0x3e
    e8890a92:	62250513          	addi	a0,a0,1570 # e88cf0b0 <kSinTable1024+0x900>
    e8890a96:	831eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8890a9a:	57c5                	li	a5,-15
        lpcb = NULL;
    e8890a9c:	4481                	li	s1,0
    e8890a9e:	bf4d                	j	e8890a50 <tcp_listen_with_backlog_and_err+0x3e>
  if (ip_get_option(pcb, SOF_REUSEADDR)) {
    e8890aa0:	03154783          	lbu	a5,49(a0)
    e8890aa4:	8b91                	andi	a5,a5,4
    e8890aa6:	cb81                	beqz	a5,e8890ab6 <tcp_listen_with_backlog_and_err+0xa4>
    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8890aa8:	00056797          	auipc	a5,0x56
    e8890aac:	bd878793          	addi	a5,a5,-1064 # e88e6680 <tcp_listen_pcbs>
    e8890ab0:	6398                	ld	a4,0(a5)
      if ((lpcb->local_port == pcb->local_port) &&
    e8890ab2:	4699                	li	a3,6
    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8890ab4:	eb55                	bnez	a4,e8890b68 <tcp_listen_with_backlog_and_err+0x156>
  lpcb = (struct tcp_pcb_listen *)memp_malloc(MEMP_TCP_PCB_LISTEN);
    e8890ab6:	450d                	li	a0,3
    e8890ab8:	e94fd0ef          	jal	ra,e888e14c <memp_malloc>
    e8890abc:	84aa                	mv	s1,a0
    res = ERR_MEM;
    e8890abe:	57fd                	li	a5,-1
  if (lpcb == NULL) {
    e8890ac0:	d941                	beqz	a0,e8890a50 <tcp_listen_with_backlog_and_err+0x3e>
  lpcb->callback_arg = pcb->callback_arg;
    e8890ac2:	603c                	ld	a5,64(s0)
    e8890ac4:	e13c                	sd	a5,64(a0)
  lpcb->local_port = pcb->local_port;
    e8890ac6:	04a45783          	lhu	a5,74(s0)
    e8890aca:	04f51523          	sh	a5,74(a0)
  lpcb->state = LISTEN;
    e8890ace:	4785                	li	a5,1
    e8890ad0:	04f50423          	sb	a5,72(a0)
  lpcb->prio = pcb->prio;
    e8890ad4:	04944783          	lbu	a5,73(s0)
    e8890ad8:	04f504a3          	sb	a5,73(a0)
  lpcb->so_options = pcb->so_options;
    e8890adc:	03144783          	lbu	a5,49(s0)
  lpcb->netif_idx = NETIF_NO_INDEX;
    e8890ae0:	02050823          	sb	zero,48(a0)
  lpcb->so_options = pcb->so_options;
    e8890ae4:	02f508a3          	sb	a5,49(a0)
  lpcb->ttl = pcb->ttl;
    e8890ae8:	03344783          	lbu	a5,51(s0)
    e8890aec:	02f509a3          	sb	a5,51(a0)
  lpcb->tos = pcb->tos;
    e8890af0:	03244783          	lbu	a5,50(s0)
    e8890af4:	02f50923          	sb	a5,50(a0)
  IP_SET_TYPE_VAL(lpcb->remote_ip, pcb->local_ip.type);
    e8890af8:	01444783          	lbu	a5,20(s0)
    e8890afc:	02f50623          	sb	a5,44(a0)
  ip_addr_copy(lpcb->local_ip, pcb->local_ip);
    e8890b00:	00f50a23          	sb	a5,20(a0)
    e8890b04:	01444703          	lbu	a4,20(s0)
    e8890b08:	4799                	li	a5,6
    e8890b0a:	0af71663          	bne	a4,a5,e8890bb6 <tcp_listen_with_backlog_and_err+0x1a4>
    e8890b0e:	401c                	lw	a5,0(s0)
    e8890b10:	c11c                	sw	a5,0(a0)
    e8890b12:	405c                	lw	a5,4(s0)
    e8890b14:	c15c                	sw	a5,4(a0)
    e8890b16:	441c                	lw	a5,8(s0)
    e8890b18:	c51c                	sw	a5,8(a0)
    e8890b1a:	445c                	lw	a5,12(s0)
    e8890b1c:	c55c                	sw	a5,12(a0)
    e8890b1e:	01044783          	lbu	a5,16(s0)
    e8890b22:	00f50823          	sb	a5,16(a0)
  if (pcb->local_port != 0) {
    e8890b26:	04a45783          	lhu	a5,74(s0)
    e8890b2a:	cf81                	beqz	a5,e8890b42 <tcp_listen_with_backlog_and_err+0x130>
    TCP_RMV(&tcp_bound_pcbs, pcb);
    e8890b2c:	00056717          	auipc	a4,0x56
    e8890b30:	b4c70713          	addi	a4,a4,-1204 # e88e6678 <tcp_bound_pcbs>
    e8890b34:	631c                	ld	a5,0(a4)
    e8890b36:	08879a63          	bne	a5,s0,e8890bca <tcp_listen_with_backlog_and_err+0x1b8>
    e8890b3a:	7c1c                	ld	a5,56(s0)
    e8890b3c:	e31c                	sd	a5,0(a4)
    e8890b3e:	02043c23          	sd	zero,56(s0)
  tcp_free(pcb);
    e8890b42:	8522                	mv	a0,s0
    e8890b44:	bf9ff0ef          	jal	ra,e889073c <tcp_free>
  lpcb->accept = tcp_accept_null;
    e8890b48:	00001797          	auipc	a5,0x1
    e8890b4c:	c3c78793          	addi	a5,a5,-964 # e8891784 <tcp_accept_null>
    e8890b50:	e8bc                	sd	a5,80(s1)
  TCP_REG(&tcp_listen_pcbs.pcbs, (struct tcp_pcb *)lpcb);
    e8890b52:	00056797          	auipc	a5,0x56
    e8890b56:	b2e78793          	addi	a5,a5,-1234 # e88e6680 <tcp_listen_pcbs>
    e8890b5a:	6398                	ld	a4,0(a5)
    e8890b5c:	e384                	sd	s1,0(a5)
    e8890b5e:	fc98                	sd	a4,56(s1)
    e8890b60:	307050ef          	jal	ra,e8896666 <tcp_timer_needed>
  res = ERR_OK;
    e8890b64:	4781                	li	a5,0
    e8890b66:	b5ed                	j	e8890a50 <tcp_listen_with_backlog_and_err+0x3e>
      if ((lpcb->local_port == pcb->local_port) &&
    e8890b68:	04a75603          	lhu	a2,74(a4)
    e8890b6c:	04a45783          	lhu	a5,74(s0)
    e8890b70:	02f61b63          	bne	a2,a5,e8890ba6 <tcp_listen_with_backlog_and_err+0x194>
          ip_addr_cmp(&lpcb->local_ip, &pcb->local_ip)) {
    e8890b74:	01474603          	lbu	a2,20(a4)
      if ((lpcb->local_port == pcb->local_port) &&
    e8890b78:	01444783          	lbu	a5,20(s0)
    e8890b7c:	02c79563          	bne	a5,a2,e8890ba6 <tcp_listen_with_backlog_and_err+0x194>
    e8890b80:	02d79563          	bne	a5,a3,e8890baa <tcp_listen_with_backlog_and_err+0x198>
          ip_addr_cmp(&lpcb->local_ip, &pcb->local_ip)) {
    e8890b84:	630c                	ld	a1,0(a4)
    e8890b86:	6010                	ld	a2,0(s0)
    e8890b88:	4781                	li	a5,0
    e8890b8a:	00c59d63          	bne	a1,a2,e8890ba4 <tcp_listen_with_backlog_and_err+0x192>
    e8890b8e:	670c                	ld	a1,8(a4)
    e8890b90:	6410                	ld	a2,8(s0)
    e8890b92:	00c59963          	bne	a1,a2,e8890ba4 <tcp_listen_with_backlog_and_err+0x192>
    e8890b96:	01074783          	lbu	a5,16(a4)
    e8890b9a:	01044603          	lbu	a2,16(s0)
    e8890b9e:	8f91                	sub	a5,a5,a2
    e8890ba0:	0017b793          	seqz	a5,a5
      if ((lpcb->local_port == pcb->local_port) &&
    e8890ba4:	eb95                	bnez	a5,e8890bd8 <tcp_listen_with_backlog_and_err+0x1c6>
    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8890ba6:	7f18                	ld	a4,56(a4)
    e8890ba8:	b731                	j	e8890ab4 <tcp_listen_with_backlog_and_err+0xa2>
      if ((lpcb->local_port == pcb->local_port) &&
    e8890baa:	431c                	lw	a5,0(a4)
    e8890bac:	4010                	lw	a2,0(s0)
    e8890bae:	8f91                	sub	a5,a5,a2
    e8890bb0:	0017b793          	seqz	a5,a5
    e8890bb4:	bfc5                	j	e8890ba4 <tcp_listen_with_backlog_and_err+0x192>
  ip_addr_copy(lpcb->local_ip, pcb->local_ip);
    e8890bb6:	401c                	lw	a5,0(s0)
    e8890bb8:	00052223          	sw	zero,4(a0)
    e8890bbc:	00053423          	sd	zero,8(a0)
    e8890bc0:	c11c                	sw	a5,0(a0)
    e8890bc2:	00050823          	sb	zero,16(a0)
    e8890bc6:	b785                	j	e8890b26 <tcp_listen_with_backlog_and_err+0x114>
    e8890bc8:	87ba                	mv	a5,a4
    TCP_RMV(&tcp_bound_pcbs, pcb);
    e8890bca:	dbb5                	beqz	a5,e8890b3e <tcp_listen_with_backlog_and_err+0x12c>
    e8890bcc:	7f98                	ld	a4,56(a5)
    e8890bce:	fe871de3          	bne	a4,s0,e8890bc8 <tcp_listen_with_backlog_and_err+0x1b6>
    e8890bd2:	7c18                	ld	a4,56(s0)
    e8890bd4:	ff98                	sd	a4,56(a5)
    e8890bd6:	b7a5                	j	e8890b3e <tcp_listen_with_backlog_and_err+0x12c>
        res = ERR_USE;
    e8890bd8:	57e1                	li	a5,-8
    e8890bda:	b5c9                	j	e8890a9c <tcp_listen_with_backlog_and_err+0x8a>

00000000e8890bdc <tcp_update_rcv_ann_wnd>:
{
    e8890bdc:	1141                	addi	sp,sp,-16
    e8890bde:	e022                	sd	s0,0(sp)
    e8890be0:	e406                	sd	ra,8(sp)
    e8890be2:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_update_rcv_ann_wnd: invalid pcb", pcb != NULL);
    e8890be4:	e51d                	bnez	a0,e8890c12 <tcp_update_rcv_ann_wnd+0x36>
    e8890be6:	02f00593          	li	a1,47
    e8890bea:	00040517          	auipc	a0,0x40
    e8890bee:	68650513          	addi	a0,a0,1670 # e88d1270 <tcp_backoff+0x108>
    e8890bf2:	f86eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890bf6:	00150693          	addi	a3,a0,1
    e8890bfa:	3a600613          	li	a2,934
    e8890bfe:	00041597          	auipc	a1,0x41
    e8890c02:	caa58593          	addi	a1,a1,-854 # e88d18a8 <tcp_persist_backoff+0x338>
    e8890c06:	0003e517          	auipc	a0,0x3e
    e8890c0a:	4aa50513          	addi	a0,a0,1194 # e88cf0b0 <kSinTable1024+0x900>
    e8890c0e:	eb8eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd;
    e8890c12:	4c2c                	lw	a1,88(s0)
    e8890c14:	05c42803          	lw	a6,92(s0)
  if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) {
    e8890c18:	5078                	lw	a4,100(s0)
    e8890c1a:	06a45683          	lhu	a3,106(s0)
  new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd;
    e8890c1e:	010587bb          	addw	a5,a1,a6
  if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) {
    e8890c22:	660d                	lui	a2,0x3
    e8890c24:	40e7853b          	subw	a0,a5,a4
    e8890c28:	d0060613          	addi	a2,a2,-768 # 2d00 <memcmp-0xe87fd300>
    e8890c2c:	87aa                	mv	a5,a0
    e8890c2e:	00d67363          	bgeu	a2,a3,e8890c34 <tcp_update_rcv_ann_wnd+0x58>
    e8890c32:	86b2                	mv	a3,a2
    e8890c34:	0106969b          	slliw	a3,a3,0x10
    e8890c38:	0106d69b          	srliw	a3,a3,0x10
    e8890c3c:	9f95                	subw	a5,a5,a3
    e8890c3e:	0007c863          	bltz	a5,e8890c4e <tcp_update_rcv_ann_wnd+0x72>
    pcb->rcv_ann_wnd = pcb->rcv_wnd;
    e8890c42:	07042023          	sw	a6,96(s0)
}
    e8890c46:	60a2                	ld	ra,8(sp)
    e8890c48:	6402                	ld	s0,0(sp)
    e8890c4a:	0141                	addi	sp,sp,16
    e8890c4c:	8082                	ret
    if (TCP_SEQ_GT(pcb->rcv_nxt, pcb->rcv_ann_right_edge)) {
    e8890c4e:	40e587bb          	subw	a5,a1,a4
    e8890c52:	00f05663          	blez	a5,e8890c5e <tcp_update_rcv_ann_wnd+0x82>
      pcb->rcv_ann_wnd = 0;
    e8890c56:	06042023          	sw	zero,96(s0)
    return 0;
    e8890c5a:	4501                	li	a0,0
    e8890c5c:	b7ed                	j	e8890c46 <tcp_update_rcv_ann_wnd+0x6a>
      u32_t new_rcv_ann_wnd = pcb->rcv_ann_right_edge - pcb->rcv_nxt;
    e8890c5e:	9f0d                	subw	a4,a4,a1
      pcb->rcv_ann_wnd = (tcpwnd_size_t)new_rcv_ann_wnd;
    e8890c60:	d038                	sw	a4,96(s0)
    e8890c62:	bfe5                	j	e8890c5a <tcp_update_rcv_ann_wnd+0x7e>

00000000e8890c64 <tcp_recved>:
{
    e8890c64:	1101                	addi	sp,sp,-32
    e8890c66:	ec06                	sd	ra,24(sp)
    e8890c68:	e422                	sd	s0,8(sp)
    e8890c6a:	e826                	sd	s1,16(sp)
  LWIP_ERROR("tcp_recved: invalid pcb", pcb != NULL, return);
    e8890c6c:	e91d                	bnez	a0,e8890ca2 <tcp_recved+0x3e>
    e8890c6e:	02f00593          	li	a1,47
    e8890c72:	00040517          	auipc	a0,0x40
    e8890c76:	5fe50513          	addi	a0,a0,1534 # e88d1270 <tcp_backoff+0x108>
    e8890c7a:	efeeb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
}
    e8890c7e:	6422                	ld	s0,8(sp)
    e8890c80:	60e2                	ld	ra,24(sp)
    e8890c82:	64c2                	ld	s1,16(sp)
  LWIP_ERROR("tcp_recved: invalid pcb", pcb != NULL, return);
    e8890c84:	00150693          	addi	a3,a0,1
    e8890c88:	3cf00613          	li	a2,975
    e8890c8c:	00041597          	auipc	a1,0x41
    e8890c90:	99458593          	addi	a1,a1,-1644 # e88d1620 <tcp_persist_backoff+0xb0>
    e8890c94:	0003e517          	auipc	a0,0x3e
    e8890c98:	41c50513          	addi	a0,a0,1052 # e88cf0b0 <kSinTable1024+0x900>
}
    e8890c9c:	6105                	addi	sp,sp,32
  LWIP_ERROR("tcp_recved: invalid pcb", pcb != NULL, return);
    e8890c9e:	e28eb06f          	j	e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("don't call tcp_recved for listen-pcbs",
    e8890ca2:	04854703          	lbu	a4,72(a0)
    e8890ca6:	4785                	li	a5,1
    e8890ca8:	842a                	mv	s0,a0
    e8890caa:	84ae                	mv	s1,a1
    e8890cac:	02f71863          	bne	a4,a5,e8890cdc <tcp_recved+0x78>
    e8890cb0:	02f00593          	li	a1,47
    e8890cb4:	00040517          	auipc	a0,0x40
    e8890cb8:	5bc50513          	addi	a0,a0,1468 # e88d1270 <tcp_backoff+0x108>
    e8890cbc:	ebceb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890cc0:	00150693          	addi	a3,a0,1
    e8890cc4:	3d300613          	li	a2,979
    e8890cc8:	00041597          	auipc	a1,0x41
    e8890ccc:	97058593          	addi	a1,a1,-1680 # e88d1638 <tcp_persist_backoff+0xc8>
    e8890cd0:	0003e517          	auipc	a0,0x3e
    e8890cd4:	3e050513          	addi	a0,a0,992 # e88cf0b0 <kSinTable1024+0x900>
    e8890cd8:	deeeb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  rcv_wnd = (tcpwnd_size_t)(pcb->rcv_wnd + len);
    e8890cdc:	4c78                	lw	a4,92(s0)
  if ((rcv_wnd > TCP_WND_MAX(pcb)) || (rcv_wnd < pcb->rcv_wnd)) {
    e8890cde:	6799                	lui	a5,0x6
    e8890ce0:	a0078793          	addi	a5,a5,-1536 # 5a00 <memcmp-0xe87fa600>
  rcv_wnd = (tcpwnd_size_t)(pcb->rcv_wnd + len);
    e8890ce4:	00e485bb          	addw	a1,s1,a4
  if ((rcv_wnd > TCP_WND_MAX(pcb)) || (rcv_wnd < pcb->rcv_wnd)) {
    e8890ce8:	02b7ed63          	bltu	a5,a1,e8890d22 <tcp_recved+0xbe>
    pcb->rcv_wnd = TCP_WND_MAX(pcb);
    e8890cec:	00e5b733          	sltu	a4,a1,a4
    e8890cf0:	42e7958b          	mvnez	a1,a5,a4
    e8890cf4:	cc6c                	sw	a1,92(s0)
  wnd_inflation = tcp_update_rcv_ann_wnd(pcb);
    e8890cf6:	8522                	mv	a0,s0
    e8890cf8:	ee5ff0ef          	jal	ra,e8890bdc <tcp_update_rcv_ann_wnd>
    e8890cfc:	2501                	sext.w	a0,a0
  if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) {
    e8890cfe:	6785                	lui	a5,0x1
    e8890d00:	67f78793          	addi	a5,a5,1663 # 167f <memcmp-0xe87fe981>
    e8890d04:	02a7f163          	bgeu	a5,a0,e8890d26 <tcp_recved+0xc2>
    tcp_ack_now(pcb);
    e8890d08:	04e45783          	lhu	a5,78(s0)
    tcp_output(pcb);
    e8890d0c:	8522                	mv	a0,s0
    tcp_ack_now(pcb);
    e8890d0e:	0027e793          	ori	a5,a5,2
    e8890d12:	04f41723          	sh	a5,78(s0)
}
    e8890d16:	6422                	ld	s0,8(sp)
    e8890d18:	60e2                	ld	ra,24(sp)
    e8890d1a:	64c2                	ld	s1,16(sp)
    e8890d1c:	6105                	addi	sp,sp,32
    tcp_output(pcb);
    e8890d1e:	6f30406f          	j	e8895c10 <tcp_output>
    pcb->rcv_wnd = TCP_WND_MAX(pcb);
    e8890d22:	85be                	mv	a1,a5
    e8890d24:	bfc1                	j	e8890cf4 <tcp_recved+0x90>
}
    e8890d26:	60e2                	ld	ra,24(sp)
    e8890d28:	6422                	ld	s0,8(sp)
    e8890d2a:	64c2                	ld	s1,16(sp)
    e8890d2c:	6105                	addi	sp,sp,32
    e8890d2e:	8082                	ret

00000000e8890d30 <tcp_seg_free>:
 * @param seg single tcp_seg to free
 */
void
tcp_seg_free(struct tcp_seg *seg)
{
  if (seg != NULL) {
    e8890d30:	cd19                	beqz	a0,e8890d4e <tcp_seg_free+0x1e>
    e8890d32:	85aa                	mv	a1,a0
    if (seg->p != NULL) {
    e8890d34:	6508                	ld	a0,8(a0)
    e8890d36:	cd09                	beqz	a0,e8890d50 <tcp_seg_free+0x20>
{
    e8890d38:	1101                	addi	sp,sp,-32
    e8890d3a:	ec06                	sd	ra,24(sp)
    e8890d3c:	e42e                	sd	a1,8(sp)
      pbuf_free(seg->p);
    e8890d3e:	d0efe0ef          	jal	ra,e888f24c <pbuf_free>
    e8890d42:	65a2                	ld	a1,8(sp)
      seg->p = NULL;
#endif /* TCP_DEBUG */
    }
    memp_free(MEMP_TCP_SEG, seg);
  }
}
    e8890d44:	60e2                	ld	ra,24(sp)
    memp_free(MEMP_TCP_SEG, seg);
    e8890d46:	4511                	li	a0,4
}
    e8890d48:	6105                	addi	sp,sp,32
    memp_free(MEMP_TCP_SEG, seg);
    e8890d4a:	c54fd06f          	j	e888e19e <memp_free>
    e8890d4e:	8082                	ret
    e8890d50:	4511                	li	a0,4
    e8890d52:	bfe5                	j	e8890d4a <tcp_seg_free+0x1a>

00000000e8890d54 <tcp_segs_free>:
  while (seg != NULL) {
    e8890d54:	e111                	bnez	a0,e8890d58 <tcp_segs_free+0x4>
    e8890d56:	8082                	ret
{
    e8890d58:	1141                	addi	sp,sp,-16
    e8890d5a:	e406                	sd	ra,8(sp)
    e8890d5c:	e022                	sd	s0,0(sp)
    struct tcp_seg *next = seg->next;
    e8890d5e:	6100                	ld	s0,0(a0)
    tcp_seg_free(seg);
    e8890d60:	fd1ff0ef          	jal	ra,e8890d30 <tcp_seg_free>
    seg = next;
    e8890d64:	8522                	mv	a0,s0
  while (seg != NULL) {
    e8890d66:	fc65                	bnez	s0,e8890d5e <tcp_segs_free+0xa>
}
    e8890d68:	60a2                	ld	ra,8(sp)
    e8890d6a:	6402                	ld	s0,0(sp)
    e8890d6c:	0141                	addi	sp,sp,16
    e8890d6e:	8082                	ret

00000000e8890d70 <tcp_seg_copy>:
 * @param seg the old tcp_seg
 * @return a copy of seg
 */
struct tcp_seg *
tcp_seg_copy(struct tcp_seg *seg)
{
    e8890d70:	1101                	addi	sp,sp,-32
    e8890d72:	e826                	sd	s1,16(sp)
    e8890d74:	ec06                	sd	ra,24(sp)
    e8890d76:	e422                	sd	s0,8(sp)
    e8890d78:	84aa                	mv	s1,a0
  struct tcp_seg *cseg;

  LWIP_ASSERT("tcp_seg_copy: invalid seg", seg != NULL);
    e8890d7a:	e51d                	bnez	a0,e8890da8 <tcp_seg_copy+0x38>
    e8890d7c:	02f00593          	li	a1,47
    e8890d80:	00040517          	auipc	a0,0x40
    e8890d84:	4f050513          	addi	a0,a0,1264 # e88d1270 <tcp_backoff+0x108>
    e8890d88:	df0eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890d8c:	00150693          	addi	a3,a0,1
    e8890d90:	68200613          	li	a2,1666
    e8890d94:	00041597          	auipc	a1,0x41
    e8890d98:	8cc58593          	addi	a1,a1,-1844 # e88d1660 <tcp_persist_backoff+0xf0>
    e8890d9c:	0003e517          	auipc	a0,0x3e
    e8890da0:	31450513          	addi	a0,a0,788 # e88cf0b0 <kSinTable1024+0x900>
    e8890da4:	d22eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>

  cseg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG);
    e8890da8:	4511                	li	a0,4
    e8890daa:	ba2fd0ef          	jal	ra,e888e14c <memp_malloc>
    e8890dae:	842a                	mv	s0,a0
  if (cseg == NULL) {
    e8890db0:	c909                	beqz	a0,e8890dc2 <tcp_seg_copy+0x52>
    return NULL;
  }
  SMEMCPY((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg));
    e8890db2:	02000613          	li	a2,32
    e8890db6:	85a6                	mv	a1,s1
    e8890db8:	de8eb0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  pbuf_ref(cseg->p);
    e8890dbc:	6408                	ld	a0,8(s0)
    e8890dbe:	8a7fe0ef          	jal	ra,e888f664 <pbuf_ref>
  return cseg;
}
    e8890dc2:	8522                	mv	a0,s0
    e8890dc4:	60e2                	ld	ra,24(sp)
    e8890dc6:	6422                	ld	s0,8(sp)
    e8890dc8:	64c2                	ld	s1,16(sp)
    e8890dca:	6105                	addi	sp,sp,32
    e8890dcc:	8082                	ret

00000000e8890dce <tcp_arg>:
tcp_arg(struct tcp_pcb *pcb, void *arg)
{
  LWIP_ASSERT_CORE_LOCKED();
  /* This function is allowed to be called for both listen pcbs and
     connection pcbs. */
  if (pcb != NULL) {
    e8890dce:	c111                	beqz	a0,e8890dd2 <tcp_arg+0x4>
    pcb->callback_arg = arg;
    e8890dd0:	e12c                	sd	a1,64(a0)
  }
}
    e8890dd2:	8082                	ret

00000000e8890dd4 <tcp_recv>:
 */
void
tcp_recv(struct tcp_pcb *pcb, tcp_recv_fn recv)
{
  LWIP_ASSERT_CORE_LOCKED();
  if (pcb != NULL) {
    e8890dd4:	c921                	beqz	a0,e8890e24 <tcp_recv+0x50>
{
    e8890dd6:	1101                	addi	sp,sp,-32
    e8890dd8:	e422                	sd	s0,8(sp)
    e8890dda:	e826                	sd	s1,16(sp)
    e8890ddc:	ec06                	sd	ra,24(sp)
    LWIP_ASSERT("invalid socket state for recv callback", pcb->state != LISTEN);
    e8890dde:	04854703          	lbu	a4,72(a0)
    e8890de2:	4785                	li	a5,1
    e8890de4:	84ae                	mv	s1,a1
    e8890de6:	842a                	mv	s0,a0
    e8890de8:	02f71863          	bne	a4,a5,e8890e18 <tcp_recv+0x44>
    e8890dec:	02f00593          	li	a1,47
    e8890df0:	00040517          	auipc	a0,0x40
    e8890df4:	48050513          	addi	a0,a0,1152 # e88d1270 <tcp_backoff+0x108>
    e8890df8:	d80eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890dfc:	00150693          	addi	a3,a0,1
    e8890e00:	7df00613          	li	a2,2015
    e8890e04:	00040597          	auipc	a1,0x40
    e8890e08:	7d458593          	addi	a1,a1,2004 # e88d15d8 <tcp_persist_backoff+0x68>
    e8890e0c:	0003e517          	auipc	a0,0x3e
    e8890e10:	2a450513          	addi	a0,a0,676 # e88cf0b0 <kSinTable1024+0x900>
    e8890e14:	cb2eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pcb->recv = recv;
    e8890e18:	f064                	sd	s1,224(s0)
  }
}
    e8890e1a:	60e2                	ld	ra,24(sp)
    e8890e1c:	6422                	ld	s0,8(sp)
    e8890e1e:	64c2                	ld	s1,16(sp)
    e8890e20:	6105                	addi	sp,sp,32
    e8890e22:	8082                	ret
    e8890e24:	8082                	ret

00000000e8890e26 <tcp_sent>:
 */
void
tcp_sent(struct tcp_pcb *pcb, tcp_sent_fn sent)
{
  LWIP_ASSERT_CORE_LOCKED();
  if (pcb != NULL) {
    e8890e26:	c921                	beqz	a0,e8890e76 <tcp_sent+0x50>
{
    e8890e28:	1101                	addi	sp,sp,-32
    e8890e2a:	e422                	sd	s0,8(sp)
    e8890e2c:	e826                	sd	s1,16(sp)
    e8890e2e:	ec06                	sd	ra,24(sp)
    LWIP_ASSERT("invalid socket state for sent callback", pcb->state != LISTEN);
    e8890e30:	04854703          	lbu	a4,72(a0)
    e8890e34:	4785                	li	a5,1
    e8890e36:	84ae                	mv	s1,a1
    e8890e38:	842a                	mv	s0,a0
    e8890e3a:	02f71863          	bne	a4,a5,e8890e6a <tcp_sent+0x44>
    e8890e3e:	02f00593          	li	a1,47
    e8890e42:	00040517          	auipc	a0,0x40
    e8890e46:	42e50513          	addi	a0,a0,1070 # e88d1270 <tcp_backoff+0x108>
    e8890e4a:	d2eeb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890e4e:	00150693          	addi	a3,a0,1
    e8890e52:	7f300613          	li	a2,2035
    e8890e56:	00041597          	auipc	a1,0x41
    e8890e5a:	82a58593          	addi	a1,a1,-2006 # e88d1680 <tcp_persist_backoff+0x110>
    e8890e5e:	0003e517          	auipc	a0,0x3e
    e8890e62:	25250513          	addi	a0,a0,594 # e88cf0b0 <kSinTable1024+0x900>
    e8890e66:	c60eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pcb->sent = sent;
    e8890e6a:	ec64                	sd	s1,216(s0)
  }
}
    e8890e6c:	60e2                	ld	ra,24(sp)
    e8890e6e:	6422                	ld	s0,8(sp)
    e8890e70:	64c2                	ld	s1,16(sp)
    e8890e72:	6105                	addi	sp,sp,32
    e8890e74:	8082                	ret
    e8890e76:	8082                	ret

00000000e8890e78 <tcp_err>:
 */
void
tcp_err(struct tcp_pcb *pcb, tcp_err_fn err)
{
  LWIP_ASSERT_CORE_LOCKED();
  if (pcb != NULL) {
    e8890e78:	c929                	beqz	a0,e8890eca <tcp_err+0x52>
{
    e8890e7a:	1101                	addi	sp,sp,-32
    e8890e7c:	e422                	sd	s0,8(sp)
    e8890e7e:	e826                	sd	s1,16(sp)
    e8890e80:	ec06                	sd	ra,24(sp)
    LWIP_ASSERT("invalid socket state for err callback", pcb->state != LISTEN);
    e8890e82:	04854703          	lbu	a4,72(a0)
    e8890e86:	4785                	li	a5,1
    e8890e88:	84ae                	mv	s1,a1
    e8890e8a:	842a                	mv	s0,a0
    e8890e8c:	02f71963          	bne	a4,a5,e8890ebe <tcp_err+0x46>
    e8890e90:	02f00593          	li	a1,47
    e8890e94:	00040517          	auipc	a0,0x40
    e8890e98:	3dc50513          	addi	a0,a0,988 # e88d1270 <tcp_backoff+0x108>
    e8890e9c:	cdceb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890ea0:	00150693          	addi	a3,a0,1
    e8890ea4:	6605                	lui	a2,0x1
    e8890ea6:	80d60613          	addi	a2,a2,-2035 # 80d <memcmp-0xe87ff7f3>
    e8890eaa:	00040597          	auipc	a1,0x40
    e8890eae:	4f658593          	addi	a1,a1,1270 # e88d13a0 <tcp_backoff+0x238>
    e8890eb2:	0003e517          	auipc	a0,0x3e
    e8890eb6:	1fe50513          	addi	a0,a0,510 # e88cf0b0 <kSinTable1024+0x900>
    e8890eba:	c0ceb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pcb->errf = err;
    e8890ebe:	fc64                	sd	s1,248(s0)
  }
}
    e8890ec0:	60e2                	ld	ra,24(sp)
    e8890ec2:	6422                	ld	s0,8(sp)
    e8890ec4:	64c2                	ld	s1,16(sp)
    e8890ec6:	6105                	addi	sp,sp,32
    e8890ec8:	8082                	ret
    e8890eca:	8082                	ret

00000000e8890ecc <tcp_accept>:
 */
void
tcp_accept(struct tcp_pcb *pcb, tcp_accept_fn accept)
{
  LWIP_ASSERT_CORE_LOCKED();
  if ((pcb != NULL) && (pcb->state == LISTEN)) {
    e8890ecc:	c519                	beqz	a0,e8890eda <tcp_accept+0xe>
    e8890ece:	04854703          	lbu	a4,72(a0)
    e8890ed2:	4785                	li	a5,1
    e8890ed4:	00f71363          	bne	a4,a5,e8890eda <tcp_accept+0xe>
    struct tcp_pcb_listen *lpcb = (struct tcp_pcb_listen *)pcb;
    lpcb->accept = accept;
    e8890ed8:	e92c                	sd	a1,80(a0)
  }
}
    e8890eda:	8082                	ret

00000000e8890edc <tcp_poll>:
 * the application may use the polling functionality to call tcp_write()
 * again when the connection has been idle for a while.
 */
void
tcp_poll(struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval)
{
    e8890edc:	1101                	addi	sp,sp,-32
    e8890ede:	ec06                	sd	ra,24(sp)
    e8890ee0:	e84a                	sd	s2,16(sp)
    e8890ee2:	f891540b          	sdd	s0,s1,(sp),0,4
  LWIP_ASSERT_CORE_LOCKED();

  LWIP_ERROR("tcp_poll: invalid pcb", pcb != NULL, return);
    e8890ee6:	ed0d                	bnez	a0,e8890f20 <tcp_poll+0x44>
    e8890ee8:	02f00593          	li	a1,47
    e8890eec:	00040517          	auipc	a0,0x40
    e8890ef0:	38450513          	addi	a0,a0,900 # e88d1270 <tcp_backoff+0x108>
    e8890ef4:	c84eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
  pcb->poll = poll;
#else /* LWIP_CALLBACK_API */
  LWIP_UNUSED_ARG(poll);
#endif /* LWIP_CALLBACK_API */
  pcb->pollinterval = interval;
}
    e8890ef8:	f891440b          	ldd	s0,s1,(sp),0,4
    e8890efc:	60e2                	ld	ra,24(sp)
    e8890efe:	6942                	ld	s2,16(sp)
  LWIP_ERROR("tcp_poll: invalid pcb", pcb != NULL, return);
    e8890f00:	6605                	lui	a2,0x1
    e8890f02:	00150693          	addi	a3,a0,1
    e8890f06:	83d60613          	addi	a2,a2,-1987 # 83d <memcmp-0xe87ff7c3>
    e8890f0a:	00040597          	auipc	a1,0x40
    e8890f0e:	66e58593          	addi	a1,a1,1646 # e88d1578 <tcp_persist_backoff+0x8>
    e8890f12:	0003e517          	auipc	a0,0x3e
    e8890f16:	19e50513          	addi	a0,a0,414 # e88cf0b0 <kSinTable1024+0x900>
}
    e8890f1a:	6105                	addi	sp,sp,32
  LWIP_ERROR("tcp_poll: invalid pcb", pcb != NULL, return);
    e8890f1c:	baaeb06f          	j	e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("invalid socket state for poll", pcb->state != LISTEN);
    e8890f20:	04854703          	lbu	a4,72(a0)
    e8890f24:	4785                	li	a5,1
    e8890f26:	842a                	mv	s0,a0
    e8890f28:	892e                	mv	s2,a1
    e8890f2a:	84b2                	mv	s1,a2
    e8890f2c:	02f71963          	bne	a4,a5,e8890f5e <tcp_poll+0x82>
    e8890f30:	02f00593          	li	a1,47
    e8890f34:	00040517          	auipc	a0,0x40
    e8890f38:	33c50513          	addi	a0,a0,828 # e88d1270 <tcp_backoff+0x108>
    e8890f3c:	c3ceb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890f40:	00150693          	addi	a3,a0,1
    e8890f44:	6605                	lui	a2,0x1
    e8890f46:	83e60613          	addi	a2,a2,-1986 # 83e <memcmp-0xe87ff7c2>
    e8890f4a:	00040597          	auipc	a1,0x40
    e8890f4e:	64658593          	addi	a1,a1,1606 # e88d1590 <tcp_persist_backoff+0x20>
    e8890f52:	0003e517          	auipc	a0,0x3e
    e8890f56:	15e50513          	addi	a0,a0,350 # e88cf0b0 <kSinTable1024+0x900>
    e8890f5a:	b6ceb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  pcb->poll = poll;
    e8890f5e:	0f243823          	sd	s2,240(s0)
  pcb->pollinterval = interval;
    e8890f62:	049408a3          	sb	s1,81(s0)
}
    e8890f66:	f891440b          	ldd	s0,s1,(sp),0,4
    e8890f6a:	60e2                	ld	ra,24(sp)
    e8890f6c:	6942                	ld	s2,16(sp)
    e8890f6e:	6105                	addi	sp,sp,32
    e8890f70:	8082                	ret

00000000e8890f72 <tcp_next_iss>:
  LWIP_ASSERT("tcp_next_iss: invalid pcb", pcb != NULL);
  return LWIP_HOOK_TCP_ISN(&pcb->local_ip, pcb->local_port, &pcb->remote_ip, pcb->remote_port);
#else /* LWIP_HOOK_TCP_ISN */
  static u32_t iss = 6510;

  LWIP_ASSERT("tcp_next_iss: invalid pcb", pcb != NULL);
    e8890f72:	e929                	bnez	a0,e8890fc4 <tcp_next_iss+0x52>
{
    e8890f74:	1141                	addi	sp,sp,-16
  LWIP_ASSERT("tcp_next_iss: invalid pcb", pcb != NULL);
    e8890f76:	02f00593          	li	a1,47
    e8890f7a:	00040517          	auipc	a0,0x40
    e8890f7e:	2f650513          	addi	a0,a0,758 # e88d1270 <tcp_backoff+0x108>
{
    e8890f82:	e406                	sd	ra,8(sp)
  LWIP_ASSERT("tcp_next_iss: invalid pcb", pcb != NULL);
    e8890f84:	bf4eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8890f88:	00150693          	addi	a3,a0,1
    e8890f8c:	6605                	lui	a2,0x1
    e8890f8e:	8af60613          	addi	a2,a2,-1873 # 8af <memcmp-0xe87ff751>
    e8890f92:	00040597          	auipc	a1,0x40
    e8890f96:	4ee58593          	addi	a1,a1,1262 # e88d1480 <tcp_backoff+0x318>
    e8890f9a:	0003e517          	auipc	a0,0x3e
    e8890f9e:	11650513          	addi	a0,a0,278 # e88cf0b0 <kSinTable1024+0x900>
    e8890fa2:	b24eb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_UNUSED_ARG(pcb);

  iss += tcp_ticks;       /* XXX */
    e8890fa6:	00044797          	auipc	a5,0x44
    e8890faa:	5de78793          	addi	a5,a5,1502 # e88d5584 <iss.7725>
    e8890fae:	00055717          	auipc	a4,0x55
    e8890fb2:	6da70713          	addi	a4,a4,1754 # e88e6688 <tcp_ticks>
    e8890fb6:	4388                	lw	a0,0(a5)
    e8890fb8:	4318                	lw	a4,0(a4)
    e8890fba:	9d39                	addw	a0,a0,a4
    e8890fbc:	c388                	sw	a0,0(a5)
  return iss;
#endif /* LWIP_HOOK_TCP_ISN */
}
    e8890fbe:	60a2                	ld	ra,8(sp)
    e8890fc0:	0141                	addi	sp,sp,16
    e8890fc2:	8082                	ret
  iss += tcp_ticks;       /* XXX */
    e8890fc4:	00044797          	auipc	a5,0x44
    e8890fc8:	5c078793          	addi	a5,a5,1472 # e88d5584 <iss.7725>
    e8890fcc:	00055717          	auipc	a4,0x55
    e8890fd0:	6bc70713          	addi	a4,a4,1724 # e88e6688 <tcp_ticks>
    e8890fd4:	4388                	lw	a0,0(a5)
    e8890fd6:	4318                	lw	a4,0(a4)
    e8890fd8:	9d39                	addw	a0,a0,a4
    e8890fda:	c388                	sw	a0,0(a5)
}
    e8890fdc:	8082                	ret

00000000e8890fde <tcp_eff_send_mss_netif>:
 * by calculating the minimum of TCP_MSS and the mtu (if set) of the target
 * netif (if not NULL).
 */
u16_t
tcp_eff_send_mss_netif(u16_t sendmss, struct netif *outif, const ip_addr_t *dest)
{
    e8890fde:	1101                	addi	sp,sp,-32
    e8890fe0:	f891540b          	sdd	s0,s1,(sp),0,4
    e8890fe4:	e84a                	sd	s2,16(sp)
    e8890fe6:	ec06                	sd	ra,24(sp)
    e8890fe8:	84aa                	mv	s1,a0
    e8890fea:	892e                	mv	s2,a1
    e8890fec:	8432                	mv	s0,a2
  u16_t mss_s;
  u16_t mtu;

  LWIP_UNUSED_ARG(dest); /* in case IPv6 is disabled */

  LWIP_ASSERT("tcp_eff_send_mss_netif: invalid dst_ip", dest != NULL);
    e8890fee:	ea25                	bnez	a2,e889105e <tcp_eff_send_mss_netif+0x80>
    e8890ff0:	02f00593          	li	a1,47
    e8890ff4:	00040517          	auipc	a0,0x40
    e8890ff8:	27c50513          	addi	a0,a0,636 # e88d1270 <tcp_backoff+0x108>
    e8890ffc:	b7ceb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891000:	00150693          	addi	a3,a0,1
    e8891004:	6605                	lui	a2,0x1
    e8891006:	8c560613          	addi	a2,a2,-1851 # 8c5 <memcmp-0xe87ff73b>
    e889100a:	00040597          	auipc	a1,0x40
    e889100e:	36e58593          	addi	a1,a1,878 # e88d1378 <tcp_backoff+0x210>
    e8891012:	0003e517          	auipc	a0,0x3e
    e8891016:	09e50513          	addi	a0,a0,158 # e88cf0b0 <kSinTable1024+0x900>
    e889101a:	aaceb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  else
#endif /* LWIP_IPV4 */
#endif /* LWIP_IPV6 */
#if LWIP_IPV4
  {
    if (outif == NULL) {
    e889101e:	04090963          	beqz	s2,e8891070 <tcp_eff_send_mss_netif+0x92>
      return sendmss;
    }
    mtu = outif->mtu;
    e8891022:	10095503          	lhu	a0,256(s2)
  }
#endif /* LWIP_IPV4 */

  if (mtu != 0) {
    e8891026:	c529                	beqz	a0,e8891070 <tcp_eff_send_mss_netif+0x92>
    else
#endif /* LWIP_IPV4 */
#endif /* LWIP_IPV6 */
#if LWIP_IPV4
    {
      offset = IP_HLEN + TCP_HLEN;
    e8891028:	02800793          	li	a5,40
    if (IP_IS_V6(dest))
    e889102c:	c811                	beqz	s0,e8891040 <tcp_eff_send_mss_netif+0x62>
    e889102e:	01444683          	lbu	a3,20(s0)
    e8891032:	4719                	li	a4,6
      offset = IP6_HLEN + TCP_HLEN;
    e8891034:	03c00793          	li	a5,60
    if (IP_IS_V6(dest))
    e8891038:	00e68463          	beq	a3,a4,e8891040 <tcp_eff_send_mss_netif+0x62>
      offset = IP_HLEN + TCP_HLEN;
    e889103c:	02800793          	li	a5,40
    }
#endif /* LWIP_IPV4 */
    mss_s = (mtu > offset) ? (u16_t)(mtu - offset) : 0;
    e8891040:	0005069b          	sext.w	a3,a0
    e8891044:	4701                	li	a4,0
    e8891046:	00d7f563          	bgeu	a5,a3,e8891050 <tcp_eff_send_mss_netif+0x72>
    e889104a:	9d1d                	subw	a0,a0,a5
    e889104c:	3c05370b          	extu	a4,a0,15,0
    /* RFC 1122, chap 4.2.2.6:
     * Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize
     * We correct for TCP options in tcp_write(), and don't support IP options.
     */
    sendmss = LWIP_MIN(sendmss, mss_s);
    e8891050:	87ba                	mv	a5,a4
    e8891052:	00e4f363          	bgeu	s1,a4,e8891058 <tcp_eff_send_mss_netif+0x7a>
    e8891056:	87a6                	mv	a5,s1
    e8891058:	3c07b48b          	extu	s1,a5,15,0
    e889105c:	a811                	j	e8891070 <tcp_eff_send_mss_netif+0x92>
  if (IP_IS_V6(dest))
    e889105e:	01464703          	lbu	a4,20(a2)
    e8891062:	4799                	li	a5,6
    e8891064:	faf71de3          	bne	a4,a5,e889101e <tcp_eff_send_mss_netif+0x40>
    mtu = nd6_get_destination_mtu(ip_2_ip6(dest), outif);
    e8891068:	8522                	mv	a0,s0
    e889106a:	e65fc0ef          	jal	ra,e888dece <nd6_get_destination_mtu>
  if (mtu != 0) {
    e889106e:	f161                	bnez	a0,e889102e <tcp_eff_send_mss_netif+0x50>
  }
  return sendmss;
}
    e8891070:	8526                	mv	a0,s1
    e8891072:	60e2                	ld	ra,24(sp)
    e8891074:	f891440b          	ldd	s0,s1,(sp),0,4
    e8891078:	6942                	ld	s2,16(sp)
    e889107a:	6105                	addi	sp,sp,32
    e889107c:	8082                	ret

00000000e889107e <tcp_connect>:
{
    e889107e:	7139                	addi	sp,sp,-64
    e8891080:	fc06                	sd	ra,56(sp)
    e8891082:	f85a                	sd	s6,48(sp)
    e8891084:	f891540b          	sdd	s0,s1,(sp),0,4
    e8891088:	fb31590b          	sdd	s2,s3,(sp),1,4
    e889108c:	fd515a0b          	sdd	s4,s5,(sp),2,4
  LWIP_ERROR("tcp_connect: invalid pcb", pcb != NULL, return ERR_ARG);
    e8891090:	e139                	bnez	a0,e88910d6 <tcp_connect+0x58>
    e8891092:	02f00593          	li	a1,47
    e8891096:	00040517          	auipc	a0,0x40
    e889109a:	1da50513          	addi	a0,a0,474 # e88d1270 <tcp_backoff+0x108>
    e889109e:	adaeb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88910a2:	00150693          	addi	a3,a0,1
    e88910a6:	43500613          	li	a2,1077
    e88910aa:	00040597          	auipc	a1,0x40
    e88910ae:	25e58593          	addi	a1,a1,606 # e88d1308 <tcp_backoff+0x1a0>
  LWIP_ERROR("tcp_connect: invalid ipaddr", ipaddr != NULL, return ERR_ARG);
    e88910b2:	0003e517          	auipc	a0,0x3e
    e88910b6:	ffe50513          	addi	a0,a0,-2 # e88cf0b0 <kSinTable1024+0x900>
    e88910ba:	a0ceb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88910be:	54c1                	li	s1,-16
}
    e88910c0:	8526                	mv	a0,s1
    e88910c2:	70e2                	ld	ra,56(sp)
    e88910c4:	f891440b          	ldd	s0,s1,(sp),0,4
    e88910c8:	7b42                	ld	s6,48(sp)
    e88910ca:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88910ce:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88910d2:	6121                	addi	sp,sp,64
    e88910d4:	8082                	ret
    e88910d6:	84ae                	mv	s1,a1
  LWIP_ERROR("tcp_connect: invalid ipaddr", ipaddr != NULL, return ERR_ARG);
    e88910d8:	e195                	bnez	a1,e88910fc <tcp_connect+0x7e>
    e88910da:	02f00593          	li	a1,47
    e88910de:	00040517          	auipc	a0,0x40
    e88910e2:	19250513          	addi	a0,a0,402 # e88d1270 <tcp_backoff+0x108>
    e88910e6:	a92eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88910ea:	00150693          	addi	a3,a0,1
    e88910ee:	43600613          	li	a2,1078
    e88910f2:	00040597          	auipc	a1,0x40
    e88910f6:	23658593          	addi	a1,a1,566 # e88d1328 <tcp_backoff+0x1c0>
    e88910fa:	bf65                	j	e88910b2 <tcp_connect+0x34>
  LWIP_ERROR("tcp_connect: can only connect from state CLOSED", pcb->state == CLOSED, return ERR_ISCONN);
    e88910fc:	04854783          	lbu	a5,72(a0)
    e8891100:	842a                	mv	s0,a0
    e8891102:	cb8d                	beqz	a5,e8891134 <tcp_connect+0xb6>
    e8891104:	02f00593          	li	a1,47
    e8891108:	00040517          	auipc	a0,0x40
    e889110c:	16850513          	addi	a0,a0,360 # e88d1270 <tcp_backoff+0x108>
    e8891110:	a68eb0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891114:	00150693          	addi	a3,a0,1
    e8891118:	43800613          	li	a2,1080
    e889111c:	00040597          	auipc	a1,0x40
    e8891120:	22c58593          	addi	a1,a1,556 # e88d1348 <tcp_backoff+0x1e0>
    e8891124:	0003e517          	auipc	a0,0x3e
    e8891128:	f8c50513          	addi	a0,a0,-116 # e88cf0b0 <kSinTable1024+0x900>
    e889112c:	99aeb0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8891130:	54d9                	li	s1,-10
    e8891132:	b779                	j	e88910c0 <tcp_connect+0x42>
  ip_addr_set(&pcb->remote_ip, ipaddr);
    e8891134:	0145c783          	lbu	a5,20(a1)
    e8891138:	4719                	li	a4,6
    e889113a:	8ab2                	mv	s5,a2
    e889113c:	02f50623          	sb	a5,44(a0)
    e8891140:	89b6                	mv	s3,a3
    e8891142:	01850913          	addi	s2,a0,24
    e8891146:	02e79963          	bne	a5,a4,e8891178 <tcp_connect+0xfa>
    e889114a:	4198                	lw	a4,0(a1)
    e889114c:	cd18                	sw	a4,24(a0)
    e889114e:	41d8                	lw	a4,4(a1)
    e8891150:	cd58                	sw	a4,28(a0)
    e8891152:	4598                	lw	a4,8(a1)
    e8891154:	d118                	sw	a4,32(a0)
    e8891156:	45d8                	lw	a4,12(a1)
    e8891158:	d158                	sw	a4,36(a0)
    e889115a:	0105c703          	lbu	a4,16(a1)
    e889115e:	02e50423          	sb	a4,40(a0)
  if (pcb->netif_idx != NETIF_NO_INDEX) {
    e8891162:	03044503          	lbu	a0,48(s0)
  pcb->remote_port = port;
    e8891166:	05541623          	sh	s5,76(s0)
  if (pcb->netif_idx != NETIF_NO_INDEX) {
    e889116a:	c105                	beqz	a0,e889118a <tcp_connect+0x10c>
    netif = netif_get_by_index(pcb->netif_idx);
    e889116c:	ec4fd0ef          	jal	ra,e888e830 <netif_get_by_index>
    netif = ip_route(&pcb->local_ip, &pcb->remote_ip);
    e8891170:	8a2a                	mv	s4,a0
  if (netif == NULL) {
    e8891172:	e905                	bnez	a0,e88911a2 <tcp_connect+0x124>
    return ERR_RTE;
    e8891174:	54f1                	li	s1,-4
    e8891176:	b7a9                	j	e88910c0 <tcp_connect+0x42>
  ip_addr_set(&pcb->remote_ip, ipaddr);
    e8891178:	4198                	lw	a4,0(a1)
    e889117a:	00052e23          	sw	zero,28(a0)
    e889117e:	02053023          	sd	zero,32(a0)
    e8891182:	cd18                	sw	a4,24(a0)
    e8891184:	02050423          	sb	zero,40(a0)
    e8891188:	bfe9                	j	e8891162 <tcp_connect+0xe4>
    netif = ip_route(&pcb->local_ip, &pcb->remote_ip);
    e889118a:	4719                	li	a4,6
    e889118c:	00e79763          	bne	a5,a4,e889119a <tcp_connect+0x11c>
    e8891190:	85ca                	mv	a1,s2
    e8891192:	8522                	mv	a0,s0
    e8891194:	8a8f90ef          	jal	ra,e888a23c <ip6_route>
    e8891198:	bfe1                	j	e8891170 <tcp_connect+0xf2>
    e889119a:	854a                	mv	a0,s2
    e889119c:	c9df70ef          	jal	ra,e8888e38 <ip4_route>
    e88911a0:	bfc1                	j	e8891170 <tcp_connect+0xf2>
  if (ip_addr_isany(&pcb->local_ip)) {
    e88911a2:	01444703          	lbu	a4,20(s0)
    e88911a6:	4799                	li	a5,6
    e88911a8:	14f71163          	bne	a4,a5,e88912ea <tcp_connect+0x26c>
    e88911ac:	6018                	ld	a4,0(s0)
    e88911ae:	4781                	li	a5,0
    e88911b0:	e701                	bnez	a4,e88911b8 <tcp_connect+0x13a>
    e88911b2:	641c                	ld	a5,8(s0)
    e88911b4:	0017b793          	seqz	a5,a5
    e88911b8:	c3a1                	beqz	a5,e88911f8 <tcp_connect+0x17a>
    const ip_addr_t *local_ip = ip_netif_get_local_ip(netif, ipaddr);
    e88911ba:	0144c703          	lbu	a4,20(s1)
    e88911be:	4799                	li	a5,6
    e88911c0:	008a0513          	addi	a0,s4,8
    e88911c4:	00f71763          	bne	a4,a5,e88911d2 <tcp_connect+0x154>
    e88911c8:	85a6                	mv	a1,s1
    e88911ca:	8552                	mv	a0,s4
    e88911cc:	aa0f90ef          	jal	ra,e888a46c <ip6_select_source_address>
    if (local_ip == NULL) {
    e88911d0:	d155                	beqz	a0,e8891174 <tcp_connect+0xf6>
    ip_addr_copy(pcb->local_ip, *local_ip);
    e88911d2:	01454783          	lbu	a5,20(a0)
    e88911d6:	4719                	li	a4,6
    e88911d8:	00f40a23          	sb	a5,20(s0)
    e88911dc:	10e79b63          	bne	a5,a4,e88912f2 <tcp_connect+0x274>
    e88911e0:	411c                	lw	a5,0(a0)
    e88911e2:	c01c                	sw	a5,0(s0)
    e88911e4:	415c                	lw	a5,4(a0)
    e88911e6:	c05c                	sw	a5,4(s0)
    e88911e8:	451c                	lw	a5,8(a0)
    e88911ea:	c41c                	sw	a5,8(s0)
    e88911ec:	455c                	lw	a5,12(a0)
    e88911ee:	c45c                	sw	a5,12(s0)
    e88911f0:	01054783          	lbu	a5,16(a0)
    e88911f4:	00f40823          	sb	a5,16(s0)
  if (IP_IS_V6(&pcb->remote_ip) &&
    e88911f8:	02c44703          	lbu	a4,44(s0)
    e88911fc:	4799                	li	a5,6
    e88911fe:	02f71463          	bne	a4,a5,e8891226 <tcp_connect+0x1a8>
    e8891202:	02844783          	lbu	a5,40(s0)
    e8891206:	e385                	bnez	a5,e8891226 <tcp_connect+0x1a8>
      ip6_addr_lacks_zone(ip_2_ip6(&pcb->remote_ip), IP6_UNICAST)) {
    e8891208:	4c18                	lw	a4,24(s0)
    e889120a:	67b1                	lui	a5,0xc
    e889120c:	0ff78793          	addi	a5,a5,255 # c0ff <memcmp-0xe87f3f01>
    e8891210:	8ff9                	and	a5,a5,a4
    e8891212:	6721                	lui	a4,0x8
    e8891214:	0fe70713          	addi	a4,a4,254 # 80fe <memcmp-0xe87f7f02>
    e8891218:	00e79763          	bne	a5,a4,e8891226 <tcp_connect+0x1a8>
    ip6_addr_assign_zone(ip_2_ip6(&pcb->remote_ip), IP6_UNICAST, netif);
    e889121c:	10ea4783          	lbu	a5,270(s4)
    e8891220:	2785                	addiw	a5,a5,1
    e8891222:	02f40423          	sb	a5,40(s0)
  old_local_port = pcb->local_port;
    e8891226:	04a45b03          	lhu	s6,74(s0)
  if (pcb->local_port == 0) {
    e889122a:	0c0b1d63          	bnez	s6,e8891304 <tcp_connect+0x286>
    pcb->local_port = tcp_new_port();
    e889122e:	bbeff0ef          	jal	ra,e88905ec <tcp_new_port>
    e8891232:	04a41523          	sh	a0,74(s0)
      return ERR_BUF;
    e8891236:	54f9                	li	s1,-2
    if (pcb->local_port == 0) {
    e8891238:	e80504e3          	beqz	a0,e88910c0 <tcp_connect+0x42>
  iss = tcp_next_iss(pcb);
    e889123c:	8522                	mv	a0,s0
    e889123e:	d35ff0ef          	jal	ra,e8890f72 <tcp_next_iss>
    e8891242:	2501                	sext.w	a0,a0
  pcb->rcv_nxt = 0;
    e8891244:	02d00793          	li	a5,45
    e8891248:	17a6                	slli	a5,a5,0x29
    e889124a:	ec3c                	sd	a5,88(s0)
  pcb->rcv_wnd = pcb->rcv_ann_wnd = TCPWND_MIN16(TCP_WND);
    e889124c:	6799                	lui	a5,0x6
    e889124e:	a0078793          	addi	a5,a5,-1536 # 5a00 <memcmp-0xe87fa600>
  pcb->snd_nxt = iss;
    e8891252:	08a42623          	sw	a0,140(s0)
  pcb->lastack = iss - 1;
    e8891256:	357d                	addiw	a0,a0,-1
  pcb->rcv_wnd = pcb->rcv_ann_wnd = TCPWND_MIN16(TCP_WND);
    e8891258:	f03c                	sd	a5,96(s0)
  pcb->snd_wnd = TCP_WND;
    e889125a:	08f42e23          	sw	a5,156(s0)
  pcb->mss = INITIAL_MSS;
    e889125e:	21800793          	li	a5,536
  pcb->lastack = iss - 1;
    e8891262:	dc68                	sw	a0,124(s0)
  pcb->snd_wl2 = iss - 1;
    e8891264:	08a42a23          	sw	a0,148(s0)
  pcb->snd_lbb = iss - 1;
    e8891268:	08a42c23          	sw	a0,152(s0)
  pcb->mss = INITIAL_MSS;
    e889126c:	06f41523          	sh	a5,106(s0)
  pcb->mss = tcp_eff_send_mss_netif(pcb->mss, netif, &pcb->remote_ip);
    e8891270:	864a                	mv	a2,s2
    e8891272:	85d2                	mv	a1,s4
    e8891274:	21800513          	li	a0,536
    e8891278:	d67ff0ef          	jal	ra,e8890fde <tcp_eff_send_mss_netif>
    e889127c:	06a41523          	sh	a0,106(s0)
  pcb->cwnd = 1;
    e8891280:	4785                	li	a5,1
    e8891282:	08f42023          	sw	a5,128(s0)
  pcb->connected = connected;
    e8891286:	0f343423          	sd	s3,232(s0)
  ret = tcp_enqueue_flags(pcb, TCP_SYN);
    e889128a:	4589                	li	a1,2
    e889128c:	8522                	mv	a0,s0
    e889128e:	37a040ef          	jal	ra,e8895608 <tcp_enqueue_flags>
    e8891292:	84aa                	mv	s1,a0
  if (ret == ERR_OK) {
    e8891294:	e20516e3          	bnez	a0,e88910c0 <tcp_connect+0x42>
    pcb->state = SYN_SENT;
    e8891298:	4789                	li	a5,2
    e889129a:	04f40423          	sb	a5,72(s0)
    if (old_local_port != 0) {
    e889129e:	000b0b63          	beqz	s6,e88912b4 <tcp_connect+0x236>
      TCP_RMV(&tcp_bound_pcbs, pcb);
    e88912a2:	00055717          	auipc	a4,0x55
    e88912a6:	3d670713          	addi	a4,a4,982 # e88e6678 <tcp_bound_pcbs>
    e88912aa:	631c                	ld	a5,0(a4)
    e88912ac:	12879263          	bne	a5,s0,e88913d0 <tcp_connect+0x352>
    e88912b0:	7c1c                	ld	a5,56(s0)
    e88912b2:	e31c                	sd	a5,0(a4)
    TCP_REG_ACTIVE(pcb);
    e88912b4:	00055797          	auipc	a5,0x55
    e88912b8:	3b478793          	addi	a5,a5,948 # e88e6668 <tcp_active_pcbs>
    e88912bc:	6398                	ld	a4,0(a5)
    e88912be:	e380                	sd	s0,0(a5)
    e88912c0:	fc18                	sd	a4,56(s0)
    e88912c2:	3a4050ef          	jal	ra,e8896666 <tcp_timer_needed>
    e88912c6:	4785                	li	a5,1
    e88912c8:	00055717          	auipc	a4,0x55
    e88912cc:	3af70423          	sb	a5,936(a4) # e88e6670 <tcp_active_pcbs_changed>
    tcp_output(pcb);
    e88912d0:	8522                	mv	a0,s0
    MIB2_STATS_INC(mib2.tcpactiveopens);
    e88912d2:	00055717          	auipc	a4,0x55
    e88912d6:	17e70713          	addi	a4,a4,382 # e88e6450 <lwip_stats>
    e88912da:	19472783          	lw	a5,404(a4)
    e88912de:	2785                	addiw	a5,a5,1
    e88912e0:	18f72a23          	sw	a5,404(a4)
    tcp_output(pcb);
    e88912e4:	12d040ef          	jal	ra,e8895c10 <tcp_output>
    e88912e8:	bbe1                	j	e88910c0 <tcp_connect+0x42>
  if (ip_addr_isany(&pcb->local_ip)) {
    e88912ea:	401c                	lw	a5,0(s0)
    e88912ec:	0017b793          	seqz	a5,a5
    e88912f0:	b5e1                	j	e88911b8 <tcp_connect+0x13a>
    ip_addr_copy(pcb->local_ip, *local_ip);
    e88912f2:	411c                	lw	a5,0(a0)
    e88912f4:	00042223          	sw	zero,4(s0)
    e88912f8:	00043423          	sd	zero,8(s0)
    e88912fc:	c01c                	sw	a5,0(s0)
    e88912fe:	00040823          	sb	zero,16(s0)
    e8891302:	bddd                	j	e88911f8 <tcp_connect+0x17a>
    if (ip_get_option(pcb, SOF_REUSEADDR)) {
    e8891304:	03144783          	lbu	a5,49(s0)
    e8891308:	8b91                	andi	a5,a5,4
    e889130a:	db8d                	beqz	a5,e889123c <tcp_connect+0x1be>
    e889130c:	4609                	li	a2,2
        for (cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) {
    e889130e:	00040817          	auipc	a6,0x40
    e8891312:	19280813          	addi	a6,a6,402 # e88d14a0 <tcp_pcb_lists>
          if ((cpcb->local_port == pcb->local_port) &&
    e8891316:	000b089b          	sext.w	a7,s6
    e889131a:	2a81                	sext.w	s5,s5
              (cpcb->remote_port == port) &&
    e889131c:	4599                	li	a1,6
    e889131e:	430d                	li	t1,3
        for (cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) {
    e8891320:	66c8478b          	lrd	a5,a6,a2,3
    e8891324:	639c                	ld	a5,0(a5)
    e8891326:	e789                	bnez	a5,e8891330 <tcp_connect+0x2b2>
      for (i = 2; i < NUM_TCP_PCB_LISTS; i++) {
    e8891328:	f0660ae3          	beq	a2,t1,e889123c <tcp_connect+0x1be>
    e889132c:	460d                	li	a2,3
    e889132e:	bfcd                	j	e8891320 <tcp_connect+0x2a2>
          if ((cpcb->local_port == pcb->local_port) &&
    e8891330:	04a7d703          	lhu	a4,74(a5)
    e8891334:	09171063          	bne	a4,a7,e88913b4 <tcp_connect+0x336>
    e8891338:	04c7d703          	lhu	a4,76(a5)
    e889133c:	07571c63          	bne	a4,s5,e88913b4 <tcp_connect+0x336>
              ip_addr_cmp(&cpcb->local_ip, &pcb->local_ip) &&
    e8891340:	0147c683          	lbu	a3,20(a5)
              (cpcb->remote_port == port) &&
    e8891344:	01444703          	lbu	a4,20(s0)
    e8891348:	06d71663          	bne	a4,a3,e88913b4 <tcp_connect+0x336>
    e889134c:	06b71663          	bne	a4,a1,e88913b8 <tcp_connect+0x33a>
              ip_addr_cmp(&cpcb->local_ip, &pcb->local_ip) &&
    e8891350:	6388                	ld	a0,0(a5)
    e8891352:	6014                	ld	a3,0(s0)
    e8891354:	4701                	li	a4,0
    e8891356:	00d51d63          	bne	a0,a3,e8891370 <tcp_connect+0x2f2>
    e889135a:	6788                	ld	a0,8(a5)
    e889135c:	6414                	ld	a3,8(s0)
    e889135e:	00d51963          	bne	a0,a3,e8891370 <tcp_connect+0x2f2>
    e8891362:	0107c703          	lbu	a4,16(a5)
    e8891366:	01044683          	lbu	a3,16(s0)
    e889136a:	8f15                	sub	a4,a4,a3
    e889136c:	00173713          	seqz	a4,a4
              (cpcb->remote_port == port) &&
    e8891370:	c331                	beqz	a4,e88913b4 <tcp_connect+0x336>
              ip_addr_cmp(&cpcb->remote_ip, ipaddr)) {
    e8891372:	02c7c683          	lbu	a3,44(a5)
              ip_addr_cmp(&cpcb->local_ip, &pcb->local_ip) &&
    e8891376:	0144c703          	lbu	a4,20(s1)
    e889137a:	02d71d63          	bne	a4,a3,e88913b4 <tcp_connect+0x336>
    e889137e:	4f88                	lw	a0,24(a5)
    e8891380:	4094                	lw	a3,0(s1)
    e8891382:	04b71163          	bne	a4,a1,e88913c4 <tcp_connect+0x346>
              ip_addr_cmp(&cpcb->remote_ip, ipaddr)) {
    e8891386:	4701                	li	a4,0
    e8891388:	02a69563          	bne	a3,a0,e88913b2 <tcp_connect+0x334>
    e889138c:	4fc8                	lw	a0,28(a5)
    e889138e:	40d4                	lw	a3,4(s1)
    e8891390:	02d51163          	bne	a0,a3,e88913b2 <tcp_connect+0x334>
    e8891394:	5388                	lw	a0,32(a5)
    e8891396:	4494                	lw	a3,8(s1)
    e8891398:	00d51d63          	bne	a0,a3,e88913b2 <tcp_connect+0x334>
    e889139c:	53c8                	lw	a0,36(a5)
    e889139e:	44d4                	lw	a3,12(s1)
    e88913a0:	00d51963          	bne	a0,a3,e88913b2 <tcp_connect+0x334>
    e88913a4:	0287c703          	lbu	a4,40(a5)
    e88913a8:	0104c683          	lbu	a3,16(s1)
    e88913ac:	8f15                	sub	a4,a4,a3
    e88913ae:	00173713          	seqz	a4,a4
              ip_addr_cmp(&cpcb->local_ip, &pcb->local_ip) &&
    e88913b2:	e71d                	bnez	a4,e88913e0 <tcp_connect+0x362>
        for (cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) {
    e88913b4:	7f9c                	ld	a5,56(a5)
    e88913b6:	bf85                	j	e8891326 <tcp_connect+0x2a8>
              (cpcb->remote_port == port) &&
    e88913b8:	4398                	lw	a4,0(a5)
    e88913ba:	4014                	lw	a3,0(s0)
    e88913bc:	8f15                	sub	a4,a4,a3
    e88913be:	00173713          	seqz	a4,a4
    e88913c2:	b77d                	j	e8891370 <tcp_connect+0x2f2>
              ip_addr_cmp(&cpcb->local_ip, &pcb->local_ip) &&
    e88913c4:	40a68733          	sub	a4,a3,a0
    e88913c8:	00173713          	seqz	a4,a4
    e88913cc:	b7dd                	j	e88913b2 <tcp_connect+0x334>
    e88913ce:	87ba                	mv	a5,a4
      TCP_RMV(&tcp_bound_pcbs, pcb);
    e88913d0:	ee0782e3          	beqz	a5,e88912b4 <tcp_connect+0x236>
    e88913d4:	7f98                	ld	a4,56(a5)
    e88913d6:	fe871ce3          	bne	a4,s0,e88913ce <tcp_connect+0x350>
    e88913da:	7c18                	ld	a4,56(s0)
    e88913dc:	ff98                	sd	a4,56(a5)
    e88913de:	bdd9                	j	e88912b4 <tcp_connect+0x236>
            return ERR_USE;
    e88913e0:	54e1                	li	s1,-8
    e88913e2:	b9f9                	j	e88910c0 <tcp_connect+0x42>

00000000e88913e4 <tcp_free_ooseq>:
#if TCP_QUEUE_OOSEQ
/* Free all ooseq pbufs (and possibly reset SACK state) */
void
tcp_free_ooseq(struct tcp_pcb *pcb)
{
  if (pcb->ooseq) {
    e88913e4:	617c                	ld	a5,192(a0)
    e88913e6:	cf91                	beqz	a5,e8891402 <tcp_free_ooseq+0x1e>
{
    e88913e8:	1141                	addi	sp,sp,-16
    e88913ea:	e022                	sd	s0,0(sp)
    e88913ec:	842a                	mv	s0,a0
    tcp_segs_free(pcb->ooseq);
    e88913ee:	853e                	mv	a0,a5
{
    e88913f0:	e406                	sd	ra,8(sp)
    tcp_segs_free(pcb->ooseq);
    e88913f2:	963ff0ef          	jal	ra,e8890d54 <tcp_segs_free>
    pcb->ooseq = NULL;
    e88913f6:	0c043023          	sd	zero,192(s0)
#if LWIP_TCP_SACK_OUT
    memset(pcb->rcv_sacks, 0, sizeof(pcb->rcv_sacks));
#endif /* LWIP_TCP_SACK_OUT */
  }
}
    e88913fa:	60a2                	ld	ra,8(sp)
    e88913fc:	6402                	ld	s0,0(sp)
    e88913fe:	0141                	addi	sp,sp,16
    e8891400:	8082                	ret
    e8891402:	8082                	ret

00000000e8891404 <tcp_pcb_purge>:
{
    e8891404:	1141                	addi	sp,sp,-16
    e8891406:	e406                	sd	ra,8(sp)
    e8891408:	e022                	sd	s0,0(sp)
  LWIP_ERROR("tcp_pcb_purge: invalid pcb", pcb != NULL, return);
    e889140a:	e91d                	bnez	a0,e8891440 <tcp_pcb_purge+0x3c>
    e889140c:	02f00593          	li	a1,47
    e8891410:	00040517          	auipc	a0,0x40
    e8891414:	e6050513          	addi	a0,a0,-416 # e88d1270 <tcp_backoff+0x108>
    e8891418:	f61ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
}
    e889141c:	6402                	ld	s0,0(sp)
    e889141e:	60a2                	ld	ra,8(sp)
  LWIP_ERROR("tcp_pcb_purge: invalid pcb", pcb != NULL, return);
    e8891420:	6605                	lui	a2,0x1
    e8891422:	00150693          	addi	a3,a0,1
    e8891426:	85160613          	addi	a2,a2,-1967 # 851 <memcmp-0xe87ff7af>
    e889142a:	00040597          	auipc	a1,0x40
    e889142e:	09658593          	addi	a1,a1,150 # e88d14c0 <tcp_pcb_lists+0x20>
    e8891432:	0003e517          	auipc	a0,0x3e
    e8891436:	c7e50513          	addi	a0,a0,-898 # e88cf0b0 <kSinTable1024+0x900>
}
    e889143a:	0141                	addi	sp,sp,16
  LWIP_ERROR("tcp_pcb_purge: invalid pcb", pcb != NULL, return);
    e889143c:	e8bea06f          	j	e887c2c6 <eLIBs_printf>
  if (pcb->state != CLOSED &&
    e8891440:	04854783          	lbu	a5,72(a0)
    e8891444:	4705                	li	a4,1
    e8891446:	842a                	mv	s0,a0
    e8891448:	02f77f63          	bgeu	a4,a5,e8891486 <tcp_pcb_purge+0x82>
    e889144c:	4729                	li	a4,10
    e889144e:	02e78c63          	beq	a5,a4,e8891486 <tcp_pcb_purge+0x82>
    if (pcb->refused_data != NULL) {
    e8891452:	6568                	ld	a0,200(a0)
    e8891454:	c509                	beqz	a0,e889145e <tcp_pcb_purge+0x5a>
      pbuf_free(pcb->refused_data);
    e8891456:	df7fd0ef          	jal	ra,e888f24c <pbuf_free>
      pcb->refused_data = NULL;
    e889145a:	0c043423          	sd	zero,200(s0)
    if (pcb->ooseq != NULL) {
    e889145e:	607c                	ld	a5,192(s0)
    e8891460:	c781                	beqz	a5,e8891468 <tcp_pcb_purge+0x64>
      tcp_free_ooseq(pcb);
    e8891462:	8522                	mv	a0,s0
    e8891464:	f81ff0ef          	jal	ra,e88913e4 <tcp_free_ooseq>
    tcp_segs_free(pcb->unsent);
    e8891468:	7848                	ld	a0,176(s0)
    pcb->rtime = -1;
    e889146a:	57fd                	li	a5,-1
    e889146c:	06f41423          	sh	a5,104(s0)
    tcp_segs_free(pcb->unsent);
    e8891470:	8e5ff0ef          	jal	ra,e8890d54 <tcp_segs_free>
    tcp_segs_free(pcb->unacked);
    e8891474:	7c48                	ld	a0,184(s0)
    e8891476:	8dfff0ef          	jal	ra,e8890d54 <tcp_segs_free>
    pcb->unacked = pcb->unsent = NULL;
    e889147a:	0a043823          	sd	zero,176(s0)
    e889147e:	0a043c23          	sd	zero,184(s0)
    pcb->unsent_oversize = 0;
    e8891482:	0a041523          	sh	zero,170(s0)
}
    e8891486:	60a2                	ld	ra,8(sp)
    e8891488:	6402                	ld	s0,0(sp)
    e889148a:	0141                	addi	sp,sp,16
    e889148c:	8082                	ret

00000000e889148e <tcp_pcb_remove>:
{
    e889148e:	1101                	addi	sp,sp,-32
    e8891490:	e422                	sd	s0,8(sp)
    e8891492:	e826                	sd	s1,16(sp)
    e8891494:	ec06                	sd	ra,24(sp)
    e8891496:	84aa                	mv	s1,a0
    e8891498:	842e                	mv	s0,a1
  LWIP_ASSERT("tcp_pcb_remove: invalid pcb", pcb != NULL);
    e889149a:	e985                	bnez	a1,e88914ca <tcp_pcb_remove+0x3c>
    e889149c:	02f00593          	li	a1,47
    e88914a0:	00040517          	auipc	a0,0x40
    e88914a4:	dd050513          	addi	a0,a0,-560 # e88d1270 <tcp_backoff+0x108>
    e88914a8:	ed1ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88914ac:	00150693          	addi	a3,a0,1
    e88914b0:	6605                	lui	a2,0x1
    e88914b2:	88360613          	addi	a2,a2,-1917 # 883 <memcmp-0xe87ff77d>
    e88914b6:	00040597          	auipc	a1,0x40
    e88914ba:	02a58593          	addi	a1,a1,42 # e88d14e0 <tcp_pcb_lists+0x40>
    e88914be:	0003e517          	auipc	a0,0x3e
    e88914c2:	bf250513          	addi	a0,a0,-1038 # e88cf0b0 <kSinTable1024+0x900>
    e88914c6:	e01ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("tcp_pcb_remove: invalid pcblist", pcblist != NULL);
    e88914ca:	e885                	bnez	s1,e88914fa <tcp_pcb_remove+0x6c>
    e88914cc:	02f00593          	li	a1,47
    e88914d0:	00040517          	auipc	a0,0x40
    e88914d4:	da050513          	addi	a0,a0,-608 # e88d1270 <tcp_backoff+0x108>
    e88914d8:	ea1ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88914dc:	00150693          	addi	a3,a0,1
    e88914e0:	6605                	lui	a2,0x1
    e88914e2:	88460613          	addi	a2,a2,-1916 # 884 <memcmp-0xe87ff77c>
    e88914e6:	00040597          	auipc	a1,0x40
    e88914ea:	01a58593          	addi	a1,a1,26 # e88d1500 <tcp_pcb_lists+0x60>
    e88914ee:	0003e517          	auipc	a0,0x3e
    e88914f2:	bc250513          	addi	a0,a0,-1086 # e88cf0b0 <kSinTable1024+0x900>
    e88914f6:	dd1ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  TCP_RMV(pcblist, pcb);
    e88914fa:	609c                	ld	a5,0(s1)
    e88914fc:	08879463          	bne	a5,s0,e8891584 <tcp_pcb_remove+0xf6>
    e8891500:	7c1c                	ld	a5,56(s0)
    e8891502:	e09c                	sd	a5,0(s1)
    e8891504:	02043c23          	sd	zero,56(s0)
  tcp_pcb_purge(pcb);
    e8891508:	8522                	mv	a0,s0
    e889150a:	efbff0ef          	jal	ra,e8891404 <tcp_pcb_purge>
  if ((pcb->state != TIME_WAIT) &&
    e889150e:	04844783          	lbu	a5,72(s0)
    e8891512:	4729                	li	a4,10
    e8891514:	06e79f63          	bne	a5,a4,e8891592 <tcp_pcb_remove+0x104>
    LWIP_ASSERT("unsent segments leaking", pcb->unsent == NULL);
    e8891518:	785c                	ld	a5,176(s0)
    e889151a:	ebc5                	bnez	a5,e88915ca <tcp_pcb_remove+0x13c>
    LWIP_ASSERT("unacked segments leaking", pcb->unacked == NULL);
    e889151c:	7c5c                	ld	a5,184(s0)
    e889151e:	cb85                	beqz	a5,e889154e <tcp_pcb_remove+0xc0>
    e8891520:	02f00593          	li	a1,47
    e8891524:	00040517          	auipc	a0,0x40
    e8891528:	d4c50513          	addi	a0,a0,-692 # e88d1270 <tcp_backoff+0x108>
    e889152c:	e4dea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891530:	00150693          	addi	a3,a0,1
    e8891534:	6605                	lui	a2,0x1
    e8891536:	89460613          	addi	a2,a2,-1900 # 894 <memcmp-0xe87ff76c>
    e889153a:	00040597          	auipc	a1,0x40
    e889153e:	ffe58593          	addi	a1,a1,-2 # e88d1538 <tcp_pcb_lists+0x98>
    e8891542:	0003e517          	auipc	a0,0x3e
    e8891546:	b6e50513          	addi	a0,a0,-1170 # e88cf0b0 <kSinTable1024+0x900>
    e889154a:	d7dea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    LWIP_ASSERT("ooseq segments leaking", pcb->ooseq == NULL);
    e889154e:	607c                	ld	a5,192(s0)
    e8891550:	c7a5                	beqz	a5,e88915b8 <tcp_pcb_remove+0x12a>
    e8891552:	02f00593          	li	a1,47
    e8891556:	00040517          	auipc	a0,0x40
    e889155a:	d1a50513          	addi	a0,a0,-742 # e88d1270 <tcp_backoff+0x108>
    e889155e:	e1bea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891562:	00150693          	addi	a3,a0,1
    e8891566:	6605                	lui	a2,0x1
    e8891568:	89660613          	addi	a2,a2,-1898 # 896 <memcmp-0xe87ff76a>
    e889156c:	00040597          	auipc	a1,0x40
    e8891570:	fec58593          	addi	a1,a1,-20 # e88d1558 <tcp_pcb_lists+0xb8>
    e8891574:	0003e517          	auipc	a0,0x3e
    e8891578:	b3c50513          	addi	a0,a0,-1220 # e88cf0b0 <kSinTable1024+0x900>
    e889157c:	d4bea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8891580:	a825                	j	e88915b8 <tcp_pcb_remove+0x12a>
    e8891582:	87ba                	mv	a5,a4
  TCP_RMV(pcblist, pcb);
    e8891584:	d3c1                	beqz	a5,e8891504 <tcp_pcb_remove+0x76>
    e8891586:	7f98                	ld	a4,56(a5)
    e8891588:	fe871de3          	bne	a4,s0,e8891582 <tcp_pcb_remove+0xf4>
    e889158c:	7c18                	ld	a4,56(s0)
    e889158e:	ff98                	sd	a4,56(a5)
    e8891590:	bf95                	j	e8891504 <tcp_pcb_remove+0x76>
  if ((pcb->state != TIME_WAIT) &&
    e8891592:	4485                	li	s1,1
    e8891594:	02978263          	beq	a5,s1,e88915b8 <tcp_pcb_remove+0x12a>
      (pcb->flags & TF_ACK_DELAY)) {
    e8891598:	04e45783          	lhu	a5,78(s0)
      (pcb->state != LISTEN) &&
    e889159c:	0017f713          	andi	a4,a5,1
    e88915a0:	df25                	beqz	a4,e8891518 <tcp_pcb_remove+0x8a>
    tcp_ack_now(pcb);
    e88915a2:	0027e793          	ori	a5,a5,2
    e88915a6:	04f41723          	sh	a5,78(s0)
    tcp_output(pcb);
    e88915aa:	8522                	mv	a0,s0
    e88915ac:	664040ef          	jal	ra,e8895c10 <tcp_output>
  if (pcb->state != LISTEN) {
    e88915b0:	04844783          	lbu	a5,72(s0)
    e88915b4:	f69792e3          	bne	a5,s1,e8891518 <tcp_pcb_remove+0x8a>
  pcb->state = CLOSED;
    e88915b8:	04040423          	sb	zero,72(s0)
  pcb->local_port = 0;
    e88915bc:	04041523          	sh	zero,74(s0)
}
    e88915c0:	60e2                	ld	ra,24(sp)
    e88915c2:	6422                	ld	s0,8(sp)
    e88915c4:	64c2                	ld	s1,16(sp)
    e88915c6:	6105                	addi	sp,sp,32
    e88915c8:	8082                	ret
    LWIP_ASSERT("unsent segments leaking", pcb->unsent == NULL);
    e88915ca:	02f00593          	li	a1,47
    e88915ce:	00040517          	auipc	a0,0x40
    e88915d2:	ca250513          	addi	a0,a0,-862 # e88d1270 <tcp_backoff+0x108>
    e88915d6:	da3ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88915da:	00150693          	addi	a3,a0,1
    e88915de:	6605                	lui	a2,0x1
    e88915e0:	89360613          	addi	a2,a2,-1901 # 893 <memcmp-0xe87ff76d>
    e88915e4:	00040597          	auipc	a1,0x40
    e88915e8:	f3c58593          	addi	a1,a1,-196 # e88d1520 <tcp_pcb_lists+0x80>
    e88915ec:	0003e517          	auipc	a0,0x3e
    e88915f0:	ac450513          	addi	a0,a0,-1340 # e88cf0b0 <kSinTable1024+0x900>
    e88915f4:	cd3ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88915f8:	b715                	j	e889151c <tcp_pcb_remove+0x8e>

00000000e88915fa <tcp_abandon>:
{
    e88915fa:	7139                	addi	sp,sp,-64
    e88915fc:	fc06                	sd	ra,56(sp)
    e88915fe:	f85a                	sd	s6,48(sp)
    e8891600:	f891540b          	sdd	s0,s1,(sp),0,4
    e8891604:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8891608:	fd515a0b          	sdd	s4,s5,(sp),2,4
  LWIP_ERROR("tcp_abandon: invalid pcb", pcb != NULL, return);
    e889160c:	e121                	bnez	a0,e889164c <tcp_abandon+0x52>
    e889160e:	02f00593          	li	a1,47
    e8891612:	00040517          	auipc	a0,0x40
    e8891616:	c5e50513          	addi	a0,a0,-930 # e88d1270 <tcp_backoff+0x108>
    e889161a:	d5fea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
}
    e889161e:	f891440b          	ldd	s0,s1,(sp),0,4
    e8891622:	70e2                	ld	ra,56(sp)
    e8891624:	7b42                	ld	s6,48(sp)
    e8891626:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889162a:	fd514a0b          	ldd	s4,s5,(sp),2,4
  LWIP_ERROR("tcp_abandon: invalid pcb", pcb != NULL, return);
    e889162e:	00150693          	addi	a3,a0,1
    e8891632:	23d00613          	li	a2,573
    e8891636:	00040597          	auipc	a1,0x40
    e889163a:	ab258593          	addi	a1,a1,-1358 # e88d10e8 <memp_pools+0x8f8>
    e889163e:	0003e517          	auipc	a0,0x3e
    e8891642:	a7250513          	addi	a0,a0,-1422 # e88cf0b0 <kSinTable1024+0x900>
}
    e8891646:	6121                	addi	sp,sp,64
  LWIP_ERROR("tcp_abandon: invalid pcb", pcb != NULL, return);
    e8891648:	c7fea06f          	j	e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("don't call tcp_abort/tcp_abandon for listen-pcbs",
    e889164c:	04854703          	lbu	a4,72(a0)
    e8891650:	4785                	li	a5,1
    e8891652:	842a                	mv	s0,a0
    e8891654:	892e                	mv	s2,a1
    e8891656:	02f71863          	bne	a4,a5,e8891686 <tcp_abandon+0x8c>
    e889165a:	02f00593          	li	a1,47
    e889165e:	00040517          	auipc	a0,0x40
    e8891662:	c1250513          	addi	a0,a0,-1006 # e88d1270 <tcp_backoff+0x108>
    e8891666:	d13ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889166a:	00150693          	addi	a3,a0,1
    e889166e:	24100613          	li	a2,577
    e8891672:	00040597          	auipc	a1,0x40
    e8891676:	a9658593          	addi	a1,a1,-1386 # e88d1108 <memp_pools+0x918>
    e889167a:	0003e517          	auipc	a0,0x3e
    e889167e:	a3650513          	addi	a0,a0,-1482 # e88cf0b0 <kSinTable1024+0x900>
    e8891682:	c45ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (pcb->state == TIME_WAIT) {
    e8891686:	04844783          	lbu	a5,72(s0)
    e889168a:	4729                	li	a4,10
    e889168c:	02e79563          	bne	a5,a4,e88916b6 <tcp_abandon+0xbc>
    tcp_pcb_remove(&tcp_tw_pcbs, pcb);
    e8891690:	85a2                	mv	a1,s0
    e8891692:	00055517          	auipc	a0,0x55
    e8891696:	ffe50513          	addi	a0,a0,-2 # e88e6690 <tcp_tw_pcbs>
    e889169a:	df5ff0ef          	jal	ra,e889148e <tcp_pcb_remove>
}
    e889169e:	7b42                	ld	s6,48(sp)
    tcp_free(pcb);
    e88916a0:	8522                	mv	a0,s0
}
    e88916a2:	f891440b          	ldd	s0,s1,(sp),0,4
    e88916a6:	70e2                	ld	ra,56(sp)
    e88916a8:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88916ac:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e88916b0:	6121                	addi	sp,sp,64
    tcp_free(pcb);
    e88916b2:	88aff06f          	j	e889073c <tcp_free>
    seqno = pcb->snd_nxt;
    e88916b6:	08c42a83          	lw	s5,140(s0)
    ackno = pcb->rcv_nxt;
    e88916ba:	05842b03          	lw	s6,88(s0)
    errf = pcb->errf;
    e88916be:	0f843983          	ld	s3,248(s0)
    errf_arg = pcb->callback_arg;
    e88916c2:	04043a03          	ld	s4,64(s0)
    if (pcb->state == CLOSED) {
    e88916c6:	04a45483          	lhu	s1,74(s0)
    e88916ca:	e3d9                	bnez	a5,e8891750 <tcp_abandon+0x156>
    int send_rst = 0;
    e88916cc:	4901                	li	s2,0
      if (pcb->local_port != 0) {
    e88916ce:	cc91                	beqz	s1,e88916ea <tcp_abandon+0xf0>
        TCP_RMV(&tcp_bound_pcbs, pcb);
    e88916d0:	00055717          	auipc	a4,0x55
    e88916d4:	fa870713          	addi	a4,a4,-88 # e88e6678 <tcp_bound_pcbs>
    e88916d8:	631c                	ld	a5,0(a4)
    e88916da:	06879463          	bne	a5,s0,e8891742 <tcp_abandon+0x148>
    e88916de:	7c1c                	ld	a5,56(s0)
    e88916e0:	e31c                	sd	a5,0(a4)
    e88916e2:	02043c23          	sd	zero,56(s0)
    u16_t local_port = 0;
    e88916e6:	4481                	li	s1,0
    int send_rst = 0;
    e88916e8:	4901                	li	s2,0
    if (pcb->unacked != NULL) {
    e88916ea:	7c48                	ld	a0,184(s0)
    e88916ec:	c119                	beqz	a0,e88916f2 <tcp_abandon+0xf8>
      tcp_segs_free(pcb->unacked);
    e88916ee:	e66ff0ef          	jal	ra,e8890d54 <tcp_segs_free>
    if (pcb->unsent != NULL) {
    e88916f2:	7848                	ld	a0,176(s0)
    e88916f4:	c119                	beqz	a0,e88916fa <tcp_abandon+0x100>
      tcp_segs_free(pcb->unsent);
    e88916f6:	e5eff0ef          	jal	ra,e8890d54 <tcp_segs_free>
    if (pcb->ooseq != NULL) {
    e88916fa:	6068                	ld	a0,192(s0)
    e88916fc:	c119                	beqz	a0,e8891702 <tcp_abandon+0x108>
      tcp_segs_free(pcb->ooseq);
    e88916fe:	e56ff0ef          	jal	ra,e8890d54 <tcp_segs_free>
    if (send_rst) {
    e8891702:	00090d63          	beqz	s2,e889171c <tcp_abandon+0x122>
      tcp_rst(pcb, seqno, ackno, &pcb->local_ip, &pcb->remote_ip, local_port, pcb->remote_port);
    e8891706:	04c45803          	lhu	a6,76(s0)
    e889170a:	87a6                	mv	a5,s1
    e889170c:	01840713          	addi	a4,s0,24
    e8891710:	86a2                	mv	a3,s0
    e8891712:	865a                	mv	a2,s6
    e8891714:	85d6                	mv	a1,s5
    e8891716:	8522                	mv	a0,s0
    e8891718:	38a040ef          	jal	ra,e8895aa2 <tcp_rst>
    tcp_free(pcb);
    e889171c:	8522                	mv	a0,s0
    e889171e:	81eff0ef          	jal	ra,e889073c <tcp_free>
    TCP_EVENT_ERR(last_state, errf, errf_arg, ERR_ABRT);
    e8891722:	04098463          	beqz	s3,e889176a <tcp_abandon+0x170>
}
    e8891726:	f891440b          	ldd	s0,s1,(sp),0,4
    e889172a:	70e2                	ld	ra,56(sp)
    e889172c:	7b42                	ld	s6,48(sp)
    TCP_EVENT_ERR(last_state, errf, errf_arg, ERR_ABRT);
    e889172e:	8552                	mv	a0,s4
    e8891730:	834e                	mv	t1,s3
}
    e8891732:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8891736:	fb31490b          	ldd	s2,s3,(sp),1,4
    TCP_EVENT_ERR(last_state, errf, errf_arg, ERR_ABRT);
    e889173a:	55cd                	li	a1,-13
}
    e889173c:	6121                	addi	sp,sp,64
    TCP_EVENT_ERR(last_state, errf, errf_arg, ERR_ABRT);
    e889173e:	8302                	jr	t1
    e8891740:	87ba                	mv	a5,a4
        TCP_RMV(&tcp_bound_pcbs, pcb);
    e8891742:	d3c5                	beqz	a5,e88916e2 <tcp_abandon+0xe8>
    e8891744:	7f98                	ld	a4,56(a5)
    e8891746:	fe871de3          	bne	a4,s0,e8891740 <tcp_abandon+0x146>
    e889174a:	7c18                	ld	a4,56(s0)
    e889174c:	ff98                	sd	a4,56(a5)
    e889174e:	bf51                	j	e88916e2 <tcp_abandon+0xe8>
      TCP_PCB_REMOVE_ACTIVE(pcb);
    e8891750:	85a2                	mv	a1,s0
    e8891752:	00055517          	auipc	a0,0x55
    e8891756:	f1650513          	addi	a0,a0,-234 # e88e6668 <tcp_active_pcbs>
    e889175a:	d35ff0ef          	jal	ra,e889148e <tcp_pcb_remove>
    e889175e:	4785                	li	a5,1
    e8891760:	00055717          	auipc	a4,0x55
    e8891764:	f0f70823          	sb	a5,-240(a4) # e88e6670 <tcp_active_pcbs_changed>
    e8891768:	b749                	j	e88916ea <tcp_abandon+0xf0>
}
    e889176a:	70e2                	ld	ra,56(sp)
    e889176c:	f891440b          	ldd	s0,s1,(sp),0,4
    e8891770:	7b42                	ld	s6,48(sp)
    e8891772:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8891776:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e889177a:	6121                	addi	sp,sp,64
    e889177c:	8082                	ret

00000000e889177e <tcp_abort>:
  tcp_abandon(pcb, 1);
    e889177e:	4585                	li	a1,1
    e8891780:	e7bff06f          	j	e88915fa <tcp_abandon>

00000000e8891784 <tcp_accept_null>:
{
    e8891784:	1141                	addi	sp,sp,-16
    e8891786:	e022                	sd	s0,0(sp)
    e8891788:	e406                	sd	ra,8(sp)
    e889178a:	842e                	mv	s0,a1
  LWIP_ASSERT("tcp_accept_null: invalid pcb", pcb != NULL);
    e889178c:	e59d                	bnez	a1,e88917ba <tcp_accept_null+0x36>
    e889178e:	02f00593          	li	a1,47
    e8891792:	00040517          	auipc	a0,0x40
    e8891796:	ade50513          	addi	a0,a0,-1314 # e88d1270 <tcp_backoff+0x108>
    e889179a:	bdfea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889179e:	00150693          	addi	a3,a0,1
    e88917a2:	30f00613          	li	a2,783
    e88917a6:	00040597          	auipc	a1,0x40
    e88917aa:	99a58593          	addi	a1,a1,-1638 # e88d1140 <memp_pools+0x950>
    e88917ae:	0003e517          	auipc	a0,0x3e
    e88917b2:	90250513          	addi	a0,a0,-1790 # e88cf0b0 <kSinTable1024+0x900>
    e88917b6:	b11ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  tcp_abort(pcb);
    e88917ba:	8522                	mv	a0,s0
    e88917bc:	fc3ff0ef          	jal	ra,e889177e <tcp_abort>
}
    e88917c0:	6402                	ld	s0,0(sp)
    e88917c2:	60a2                	ld	ra,8(sp)
    e88917c4:	554d                	li	a0,-13
    e88917c6:	0141                	addi	sp,sp,16
    e88917c8:	8082                	ret

00000000e88917ca <tcp_netif_ip_addr_changed_pcblist>:
{
    e88917ca:	7179                	addi	sp,sp,-48
    e88917cc:	f891540b          	sdd	s0,s1,(sp),0,4
    e88917d0:	f406                	sd	ra,40(sp)
    e88917d2:	f052                	sd	s4,32(sp)
    e88917d4:	fb31590b          	sdd	s2,s3,(sp),1,4
    e88917d8:	84aa                	mv	s1,a0
    e88917da:	842e                	mv	s0,a1
  LWIP_ASSERT("tcp_netif_ip_addr_changed_pcblist: invalid old_addr", old_addr != NULL);
    e88917dc:	e905                	bnez	a0,e889180c <tcp_netif_ip_addr_changed_pcblist+0x42>
    e88917de:	02f00593          	li	a1,47
    e88917e2:	00040517          	auipc	a0,0x40
    e88917e6:	a8e50513          	addi	a0,a0,-1394 # e88d1270 <tcp_backoff+0x108>
    e88917ea:	b8fea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88917ee:	00150693          	addi	a3,a0,1
    e88917f2:	6605                	lui	a2,0x1
    e88917f4:	90060613          	addi	a2,a2,-1792 # 900 <memcmp-0xe87ff700>
    e88917f8:	00040597          	auipc	a1,0x40
    e88917fc:	c5058593          	addi	a1,a1,-944 # e88d1448 <tcp_backoff+0x2e0>
    e8891800:	0003e517          	auipc	a0,0x3e
    e8891804:	8b050513          	addi	a0,a0,-1872 # e88cf0b0 <kSinTable1024+0x900>
    e8891808:	abfea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
        && (!IP_IS_V4_VAL(pcb->local_ip) || !ip4_addr_islinklocal(ip_2_ip4(&pcb->local_ip)))
    e889180c:	6941                	lui	s2,0x10
    if (ip_addr_cmp(&pcb->local_ip, old_addr)
    e889180e:	4a19                	li	s4,6
        && (!IP_IS_V4_VAL(pcb->local_ip) || !ip4_addr_islinklocal(ip_2_ip4(&pcb->local_ip)))
    e8891810:	ea990913          	addi	s2,s2,-343 # fea9 <memcmp-0xe87f0157>
  while (pcb != NULL) {
    e8891814:	e809                	bnez	s0,e8891826 <tcp_netif_ip_addr_changed_pcblist+0x5c>
}
    e8891816:	70a2                	ld	ra,40(sp)
    e8891818:	f891440b          	ldd	s0,s1,(sp),0,4
    e889181c:	7a02                	ld	s4,32(sp)
    e889181e:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8891822:	6145                	addi	sp,sp,48
    e8891824:	8082                	ret
    if (ip_addr_cmp(&pcb->local_ip, old_addr)
    e8891826:	01444783          	lbu	a5,20(s0)
    e889182a:	0144c703          	lbu	a4,20(s1)
    e889182e:	03843983          	ld	s3,56(s0)
    e8891832:	04f71563          	bne	a4,a5,e889187c <tcp_netif_ip_addr_changed_pcblist+0xb2>
    e8891836:	401c                	lw	a5,0(s0)
    e8891838:	4094                	lw	a3,0(s1)
    e889183a:	03471a63          	bne	a4,s4,e889186e <tcp_netif_ip_addr_changed_pcblist+0xa4>
    e889183e:	02d79f63          	bne	a5,a3,e889187c <tcp_netif_ip_addr_changed_pcblist+0xb2>
    e8891842:	4058                	lw	a4,4(s0)
    e8891844:	40dc                	lw	a5,4(s1)
    e8891846:	02f71b63          	bne	a4,a5,e889187c <tcp_netif_ip_addr_changed_pcblist+0xb2>
    e889184a:	4418                	lw	a4,8(s0)
    e889184c:	449c                	lw	a5,8(s1)
    e889184e:	02f71763          	bne	a4,a5,e889187c <tcp_netif_ip_addr_changed_pcblist+0xb2>
    e8891852:	4458                	lw	a4,12(s0)
    e8891854:	44dc                	lw	a5,12(s1)
    e8891856:	02f71363          	bne	a4,a5,e889187c <tcp_netif_ip_addr_changed_pcblist+0xb2>
    e889185a:	01044703          	lbu	a4,16(s0)
    e889185e:	0104c783          	lbu	a5,16(s1)
    e8891862:	00f71d63          	bne	a4,a5,e889187c <tcp_netif_ip_addr_changed_pcblist+0xb2>
      tcp_abort(pcb);
    e8891866:	8522                	mv	a0,s0
    e8891868:	f17ff0ef          	jal	ra,e889177e <tcp_abort>
      pcb = next;
    e889186c:	a801                	j	e889187c <tcp_netif_ip_addr_changed_pcblist+0xb2>
        && (!IP_IS_V4_VAL(pcb->local_ip) || !ip4_addr_islinklocal(ip_2_ip4(&pcb->local_ip)))
    e889186e:	00d79763          	bne	a5,a3,e889187c <tcp_netif_ip_addr_changed_pcblist+0xb2>
    e8891872:	fb75                	bnez	a4,e8891866 <tcp_netif_ip_addr_changed_pcblist+0x9c>
    e8891874:	3c07b78b          	extu	a5,a5,15,0
    e8891878:	ff2797e3          	bne	a5,s2,e8891866 <tcp_netif_ip_addr_changed_pcblist+0x9c>
      pcb = pcb->next;
    e889187c:	844e                	mv	s0,s3
    e889187e:	bf59                	j	e8891814 <tcp_netif_ip_addr_changed_pcblist+0x4a>

00000000e8891880 <tcp_netif_ip_addr_changed>:
  if (!ip_addr_isany(old_addr)) {
    e8891880:	10050b63          	beqz	a0,e8891996 <tcp_netif_ip_addr_changed+0x116>
    e8891884:	4118                	lw	a4,0(a0)
    e8891886:	01454603          	lbu	a2,20(a0)
    e889188a:	4699                	li	a3,6
    e889188c:	00e037b3          	snez	a5,a4
    e8891890:	00d61b63          	bne	a2,a3,e88918a6 <tcp_netif_ip_addr_changed+0x26>
    e8891894:	4785                	li	a5,1
    e8891896:	eb01                	bnez	a4,e88918a6 <tcp_netif_ip_addr_changed+0x26>
    e8891898:	4158                	lw	a4,4(a0)
    e889189a:	e711                	bnez	a4,e88918a6 <tcp_netif_ip_addr_changed+0x26>
    e889189c:	4518                	lw	a4,8(a0)
    e889189e:	e701                	bnez	a4,e88918a6 <tcp_netif_ip_addr_changed+0x26>
    e88918a0:	455c                	lw	a5,12(a0)
    e88918a2:	00f037b3          	snez	a5,a5
    e88918a6:	cbe5                	beqz	a5,e8891996 <tcp_netif_ip_addr_changed+0x116>
{
    e88918a8:	1101                	addi	sp,sp,-32
    tcp_netif_ip_addr_changed_pcblist(old_addr, tcp_active_pcbs);
    e88918aa:	00055797          	auipc	a5,0x55
    e88918ae:	dbe78793          	addi	a5,a5,-578 # e88e6668 <tcp_active_pcbs>
{
    e88918b2:	e422                	sd	s0,8(sp)
    e88918b4:	e826                	sd	s1,16(sp)
    e88918b6:	ec06                	sd	ra,24(sp)
    e88918b8:	84ae                	mv	s1,a1
    tcp_netif_ip_addr_changed_pcblist(old_addr, tcp_active_pcbs);
    e88918ba:	638c                	ld	a1,0(a5)
    e88918bc:	842a                	mv	s0,a0
    e88918be:	f0dff0ef          	jal	ra,e88917ca <tcp_netif_ip_addr_changed_pcblist>
    tcp_netif_ip_addr_changed_pcblist(old_addr, tcp_bound_pcbs);
    e88918c2:	00055797          	auipc	a5,0x55
    e88918c6:	db678793          	addi	a5,a5,-586 # e88e6678 <tcp_bound_pcbs>
    e88918ca:	638c                	ld	a1,0(a5)
    e88918cc:	8522                	mv	a0,s0
    e88918ce:	efdff0ef          	jal	ra,e88917ca <tcp_netif_ip_addr_changed_pcblist>
    if (!ip_addr_isany(new_addr)) {
    e88918d2:	c895                	beqz	s1,e8891906 <tcp_netif_ip_addr_changed+0x86>
    e88918d4:	4098                	lw	a4,0(s1)
    e88918d6:	0144c603          	lbu	a2,20(s1)
    e88918da:	4699                	li	a3,6
    e88918dc:	00e037b3          	snez	a5,a4
    e88918e0:	00d61b63          	bne	a2,a3,e88918f6 <tcp_netif_ip_addr_changed+0x76>
    e88918e4:	4785                	li	a5,1
    e88918e6:	eb01                	bnez	a4,e88918f6 <tcp_netif_ip_addr_changed+0x76>
    e88918e8:	40d8                	lw	a4,4(s1)
    e88918ea:	e711                	bnez	a4,e88918f6 <tcp_netif_ip_addr_changed+0x76>
    e88918ec:	4498                	lw	a4,8(s1)
    e88918ee:	e701                	bnez	a4,e88918f6 <tcp_netif_ip_addr_changed+0x76>
    e88918f0:	44dc                	lw	a5,12(s1)
    e88918f2:	00f037b3          	snez	a5,a5
    e88918f6:	cb81                	beqz	a5,e8891906 <tcp_netif_ip_addr_changed+0x86>
      for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e88918f8:	00055797          	auipc	a5,0x55
    e88918fc:	d8878793          	addi	a5,a5,-632 # e88e6680 <tcp_listen_pcbs>
    e8891900:	639c                	ld	a5,0(a5)
        if (ip_addr_cmp(&lpcb->local_ip, old_addr)) {
    e8891902:	4619                	li	a2,6
      for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8891904:	e791                	bnez	a5,e8891910 <tcp_netif_ip_addr_changed+0x90>
}
    e8891906:	60e2                	ld	ra,24(sp)
    e8891908:	6422                	ld	s0,8(sp)
    e889190a:	64c2                	ld	s1,16(sp)
    e889190c:	6105                	addi	sp,sp,32
    e889190e:	8082                	ret
        if (ip_addr_cmp(&lpcb->local_ip, old_addr)) {
    e8891910:	0147c683          	lbu	a3,20(a5)
    e8891914:	01444703          	lbu	a4,20(s0)
    e8891918:	04d71f63          	bne	a4,a3,e8891976 <tcp_netif_ip_addr_changed+0xf6>
    e889191c:	438c                	lw	a1,0(a5)
    e889191e:	4014                	lw	a3,0(s0)
    e8891920:	04c71d63          	bne	a4,a2,e889197a <tcp_netif_ip_addr_changed+0xfa>
    e8891924:	4701                	li	a4,0
    e8891926:	02b69563          	bne	a3,a1,e8891950 <tcp_netif_ip_addr_changed+0xd0>
    e889192a:	43cc                	lw	a1,4(a5)
    e889192c:	4054                	lw	a3,4(s0)
    e889192e:	02d59163          	bne	a1,a3,e8891950 <tcp_netif_ip_addr_changed+0xd0>
    e8891932:	478c                	lw	a1,8(a5)
    e8891934:	4414                	lw	a3,8(s0)
    e8891936:	00d59d63          	bne	a1,a3,e8891950 <tcp_netif_ip_addr_changed+0xd0>
    e889193a:	47cc                	lw	a1,12(a5)
    e889193c:	4454                	lw	a3,12(s0)
    e889193e:	00d59963          	bne	a1,a3,e8891950 <tcp_netif_ip_addr_changed+0xd0>
    e8891942:	0107c703          	lbu	a4,16(a5)
    e8891946:	01044683          	lbu	a3,16(s0)
    e889194a:	8f15                	sub	a4,a4,a3
    e889194c:	00173713          	seqz	a4,a4
    e8891950:	c31d                	beqz	a4,e8891976 <tcp_netif_ip_addr_changed+0xf6>
          ip_addr_copy(lpcb->local_ip, *new_addr);
    e8891952:	0144c703          	lbu	a4,20(s1)
    e8891956:	00e78a23          	sb	a4,20(a5)
    e889195a:	02c71563          	bne	a4,a2,e8891984 <tcp_netif_ip_addr_changed+0x104>
    e889195e:	4098                	lw	a4,0(s1)
    e8891960:	c398                	sw	a4,0(a5)
    e8891962:	40d8                	lw	a4,4(s1)
    e8891964:	c3d8                	sw	a4,4(a5)
    e8891966:	4498                	lw	a4,8(s1)
    e8891968:	c798                	sw	a4,8(a5)
    e889196a:	44d8                	lw	a4,12(s1)
    e889196c:	c7d8                	sw	a4,12(a5)
    e889196e:	0104c703          	lbu	a4,16(s1)
    e8891972:	00e78823          	sb	a4,16(a5)
      for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8891976:	7f9c                	ld	a5,56(a5)
    e8891978:	b771                	j	e8891904 <tcp_netif_ip_addr_changed+0x84>
        if (ip_addr_cmp(&lpcb->local_ip, old_addr)) {
    e889197a:	40b68733          	sub	a4,a3,a1
    e889197e:	00173713          	seqz	a4,a4
    e8891982:	b7f9                	j	e8891950 <tcp_netif_ip_addr_changed+0xd0>
          ip_addr_copy(lpcb->local_ip, *new_addr);
    e8891984:	4098                	lw	a4,0(s1)
    e8891986:	0007a223          	sw	zero,4(a5)
    e889198a:	0007b423          	sd	zero,8(a5)
    e889198e:	c398                	sw	a4,0(a5)
    e8891990:	00078823          	sb	zero,16(a5)
    e8891994:	b7cd                	j	e8891976 <tcp_netif_ip_addr_changed+0xf6>
    e8891996:	8082                	ret

00000000e8891998 <tcp_kill_state>:
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e8891998:	00055797          	auipc	a5,0x55
    e889199c:	cd078793          	addi	a5,a5,-816 # e88e6668 <tcp_active_pcbs>
      if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {
    e88919a0:	00055717          	auipc	a4,0x55
    e88919a4:	ce870713          	addi	a4,a4,-792 # e88e6688 <tcp_ticks>
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e88919a8:	639c                	ld	a5,0(a5)
      if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {
    e88919aa:	430c                	lw	a1,0(a4)
  inactivity = 0;
    e88919ac:	4601                	li	a2,0
  inactive = NULL;
    e88919ae:	4681                	li	a3,0
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e88919b0:	e791                	bnez	a5,e88919bc <tcp_kill_state+0x24>
  if (inactive != NULL) {
    e88919b2:	c295                	beqz	a3,e88919d6 <tcp_kill_state+0x3e>
    tcp_abandon(inactive, 0);
    e88919b4:	4581                	li	a1,0
    e88919b6:	8536                	mv	a0,a3
    e88919b8:	c43ff06f          	j	e88915fa <tcp_abandon>
    if (pcb->state == state) {
    e88919bc:	0487c703          	lbu	a4,72(a5)
    e88919c0:	00a71963          	bne	a4,a0,e88919d2 <tcp_kill_state+0x3a>
      if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {
    e88919c4:	4bf8                	lw	a4,84(a5)
    e88919c6:	40e5873b          	subw	a4,a1,a4
    e88919ca:	00c76463          	bltu	a4,a2,e88919d2 <tcp_kill_state+0x3a>
    e88919ce:	863a                	mv	a2,a4
    e88919d0:	86be                	mv	a3,a5
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e88919d2:	7f9c                	ld	a5,56(a5)
    e88919d4:	bff1                	j	e88919b0 <tcp_kill_state+0x18>
}
    e88919d6:	8082                	ret

00000000e88919d8 <tcp_alloc>:
{
    e88919d8:	7179                	addi	sp,sp,-48
    e88919da:	e826                	sd	s1,16(sp)
    e88919dc:	84aa                	mv	s1,a0
  pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB);
    e88919de:	4509                	li	a0,2
{
    e88919e0:	e422                	sd	s0,8(sp)
    e88919e2:	f406                	sd	ra,40(sp)
    e88919e4:	ec4a                	sd	s2,24(sp)
    e88919e6:	f04e                	sd	s3,32(sp)
  pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB);
    e88919e8:	f64fc0ef          	jal	ra,e888e14c <memp_malloc>
    e88919ec:	842a                	mv	s0,a0
  if (pcb == NULL) {
    e88919ee:	e92d                	bnez	a0,e8891a60 <tcp_alloc+0x88>
  struct tcp_pcb *pcb = tcp_active_pcbs;
    e88919f0:	00055997          	auipc	s3,0x55
    e88919f4:	c7898993          	addi	s3,s3,-904 # e88e6668 <tcp_active_pcbs>
    e88919f8:	0009b503          	ld	a0,0(s3)
  while (pcb != NULL) {
    e88919fc:	0e051863          	bnez	a0,e8891aec <tcp_alloc+0x114>
  for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
    e8891a00:	00055797          	auipc	a5,0x55
    e8891a04:	c9078793          	addi	a5,a5,-880 # e88e6690 <tcp_tw_pcbs>
    if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {
    e8891a08:	00055917          	auipc	s2,0x55
    e8891a0c:	c8090913          	addi	s2,s2,-896 # e88e6688 <tcp_ticks>
  for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
    e8891a10:	639c                	ld	a5,0(a5)
    if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {
    e8891a12:	00092603          	lw	a2,0(s2)
  inactivity = 0;
    e8891a16:	4681                	li	a3,0
  for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
    e8891a18:	0e079763          	bnez	a5,e8891b06 <tcp_alloc+0x12e>
  if (inactive != NULL) {
    e8891a1c:	c119                	beqz	a0,e8891a22 <tcp_alloc+0x4a>
    tcp_abort(inactive);
    e8891a1e:	d61ff0ef          	jal	ra,e889177e <tcp_abort>
    pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB);
    e8891a22:	4509                	li	a0,2
    e8891a24:	f28fc0ef          	jal	ra,e888e14c <memp_malloc>
    e8891a28:	842a                	mv	s0,a0
    if (pcb == NULL) {
    e8891a2a:	e91d                	bnez	a0,e8891a60 <tcp_alloc+0x88>
      tcp_kill_state(LAST_ACK);
    e8891a2c:	4525                	li	a0,9
    e8891a2e:	f6bff0ef          	jal	ra,e8891998 <tcp_kill_state>
      pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB);
    e8891a32:	4509                	li	a0,2
    e8891a34:	f18fc0ef          	jal	ra,e888e14c <memp_malloc>
    e8891a38:	842a                	mv	s0,a0
      if (pcb == NULL) {
    e8891a3a:	e11d                	bnez	a0,e8891a60 <tcp_alloc+0x88>
        tcp_kill_state(CLOSING);
    e8891a3c:	4521                	li	a0,8
    e8891a3e:	f5bff0ef          	jal	ra,e8891998 <tcp_kill_state>
        pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB);
    e8891a42:	4509                	li	a0,2
    e8891a44:	f08fc0ef          	jal	ra,e888e14c <memp_malloc>
    e8891a48:	842a                	mv	s0,a0
        if (pcb == NULL) {
    e8891a4a:	e919                	bnez	a0,e8891a60 <tcp_alloc+0x88>
  mprio = LWIP_MIN(TCP_PRIO_MAX, prio);
    e8891a4c:	fc74b78b          	extu	a5,s1,63,7
    e8891a50:	e7e1                	bnez	a5,e8891b18 <tcp_alloc+0x140>
  if (mprio == 0) {
    e8891a52:	87a6                	mv	a5,s1
    e8891a54:	e4e1                	bnez	s1,e8891b1c <tcp_alloc+0x144>
          pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB);
    e8891a56:	4509                	li	a0,2
    e8891a58:	ef4fc0ef          	jal	ra,e888e14c <memp_malloc>
    e8891a5c:	842a                	mv	s0,a0
  if (pcb != NULL) {
    e8891a5e:	cd3d                	beqz	a0,e8891adc <tcp_alloc+0x104>
    memset(pcb, 0, sizeof(struct tcp_pcb));
    e8891a60:	11000613          	li	a2,272
    e8891a64:	4581                	li	a1,0
    e8891a66:	8522                	mv	a0,s0
    e8891a68:	92dea0ef          	jal	ra,e887c394 <eLIBs_memset>
    pcb->prio = prio;
    e8891a6c:	049404a3          	sb	s1,73(s0)
    pcb->snd_buf = TCP_SND_BUF;
    e8891a70:	678d                	lui	a5,0x3
    e8891a72:	d007879b          	addiw	a5,a5,-768
    e8891a76:	0af42223          	sw	a5,164(s0)
    pcb->rcv_wnd = pcb->rcv_ann_wnd = TCPWND_MIN16(TCP_WND);
    e8891a7a:	0003f797          	auipc	a5,0x3f
    e8891a7e:	6e678793          	addi	a5,a5,1766 # e88d1160 <memp_pools+0x970>
    e8891a82:	639c                	ld	a5,0(a5)
    e8891a84:	04f43e23          	sd	a5,92(s0)
    pcb->ttl = TCP_TTL;
    e8891a88:	57fd                	li	a5,-1
    e8891a8a:	02f409a3          	sb	a5,51(s0)
    pcb->sv = 3000 / TCP_SLOW_INTERVAL;
    e8891a8e:	000607b7          	lui	a5,0x60
    e8891a92:	2799                	addiw	a5,a5,6
    e8891a94:	06f42b23          	sw	a5,118(s0)
    pcb->rtime = -1;
    e8891a98:	021907b7          	lui	a5,0x2190
    e8891a9c:	37fd                	addiw	a5,a5,-1
    e8891a9e:	d43c                	sw	a5,104(s0)
    pcb->tmr = tcp_ticks;
    e8891aa0:	00055797          	auipc	a5,0x55
    e8891aa4:	be878793          	addi	a5,a5,-1048 # e88e6688 <tcp_ticks>
    e8891aa8:	439c                	lw	a5,0(a5)
    e8891aaa:	c87c                	sw	a5,84(s0)
    pcb->last_timer = tcp_timer_ctr;
    e8891aac:	00055797          	auipc	a5,0x55
    e8891ab0:	be178793          	addi	a5,a5,-1055 # e88e668d <tcp_timer_ctr>
    e8891ab4:	0007c783          	lbu	a5,0(a5)
    e8891ab8:	04f40923          	sb	a5,82(s0)
    pcb->cwnd = 1;
    e8891abc:	02d00793          	li	a5,45
    e8891ac0:	17a2                	slli	a5,a5,0x28
    e8891ac2:	0785                	addi	a5,a5,1
    e8891ac4:	e05c                	sd	a5,128(s0)
    pcb->recv = tcp_recv_null;
    e8891ac6:	00000797          	auipc	a5,0x0
    e8891aca:	3be78793          	addi	a5,a5,958 # e8891e84 <tcp_recv_null>
    e8891ace:	f07c                	sd	a5,224(s0)
    pcb->keep_idle  = TCP_KEEPIDLE_DEFAULT;
    e8891ad0:	006de7b7          	lui	a5,0x6de
    e8891ad4:	d007879b          	addiw	a5,a5,-768
    e8891ad8:	10f42023          	sw	a5,256(s0)
}
    e8891adc:	8522                	mv	a0,s0
    e8891ade:	70a2                	ld	ra,40(sp)
    e8891ae0:	6422                	ld	s0,8(sp)
    e8891ae2:	64c2                	ld	s1,16(sp)
    e8891ae4:	6962                	ld	s2,24(sp)
    e8891ae6:	7982                	ld	s3,32(sp)
    e8891ae8:	6145                	addi	sp,sp,48
    e8891aea:	8082                	ret
    if (pcb->flags & TF_CLOSEPEND) {
    e8891aec:	04e55783          	lhu	a5,78(a0)
    struct tcp_pcb *next = pcb->next;
    e8891af0:	7d00                	ld	s0,56(a0)
    if (pcb->flags & TF_CLOSEPEND) {
    e8891af2:	0087f713          	andi	a4,a5,8
    e8891af6:	c711                	beqz	a4,e8891b02 <tcp_alloc+0x12a>
      tcp_clear_flags(pcb, TF_CLOSEPEND);
    e8891af8:	9bdd                	andi	a5,a5,-9
    e8891afa:	04f51723          	sh	a5,78(a0)
      tcp_close_shutdown_fin(pcb);
    e8891afe:	b4dfe0ef          	jal	ra,e889064a <tcp_close_shutdown_fin>
{
    e8891b02:	8522                	mv	a0,s0
    e8891b04:	bde5                	j	e88919fc <tcp_alloc+0x24>
    if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) {
    e8891b06:	4bf8                	lw	a4,84(a5)
    e8891b08:	40e6073b          	subw	a4,a2,a4
    e8891b0c:	00d76463          	bltu	a4,a3,e8891b14 <tcp_alloc+0x13c>
    e8891b10:	86ba                	mv	a3,a4
    e8891b12:	853e                	mv	a0,a5
  for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
    e8891b14:	7f9c                	ld	a5,56(a5)
    e8891b16:	b709                	j	e8891a18 <tcp_alloc+0x40>
  mprio = LWIP_MIN(TCP_PRIO_MAX, prio);
    e8891b18:	07f00793          	li	a5,127
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e8891b1c:	0009b703          	ld	a4,0(s3)
        ((pcb->prio == mprio) && ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity))) {
    e8891b20:	00092503          	lw	a0,0(s2)
  mprio--;
    e8891b24:	37fd                	addiw	a5,a5,-1
    e8891b26:	0ff7f793          	andi	a5,a5,255
  inactivity = 0;
    e8891b2a:	4681                	li	a3,0
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e8891b2c:	e711                	bnez	a4,e8891b38 <tcp_alloc+0x160>
  if (inactive != NULL) {
    e8891b2e:	d405                	beqz	s0,e8891a56 <tcp_alloc+0x7e>
    tcp_abort(inactive);
    e8891b30:	8522                	mv	a0,s0
    e8891b32:	c4dff0ef          	jal	ra,e889177e <tcp_abort>
    e8891b36:	b705                	j	e8891a56 <tcp_alloc+0x7e>
    if ((pcb->prio < mprio) ||
    e8891b38:	04974603          	lbu	a2,73(a4)
    e8891b3c:	00f66963          	bltu	a2,a5,e8891b4e <tcp_alloc+0x176>
    e8891b40:	00f61c63          	bne	a2,a5,e8891b58 <tcp_alloc+0x180>
        ((pcb->prio == mprio) && ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity))) {
    e8891b44:	4b6c                	lw	a1,84(a4)
    e8891b46:	40b505bb          	subw	a1,a0,a1
    e8891b4a:	00d5e763          	bltu	a1,a3,e8891b58 <tcp_alloc+0x180>
      inactivity = tcp_ticks - pcb->tmr;
    e8891b4e:	4b74                	lw	a3,84(a4)
    if ((pcb->prio < mprio) ||
    e8891b50:	87b2                	mv	a5,a2
      inactivity = tcp_ticks - pcb->tmr;
    e8891b52:	843a                	mv	s0,a4
    e8891b54:	40d506bb          	subw	a3,a0,a3
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e8891b58:	7f18                	ld	a4,56(a4)
    e8891b5a:	bfc9                	j	e8891b2c <tcp_alloc+0x154>

00000000e8891b5c <tcp_new_ip_type>:
{
    e8891b5c:	1141                	addi	sp,sp,-16
    e8891b5e:	e022                	sd	s0,0(sp)
    e8891b60:	842a                	mv	s0,a0
  pcb = tcp_alloc(TCP_PRIO_NORMAL);
    e8891b62:	04000513          	li	a0,64
{
    e8891b66:	e406                	sd	ra,8(sp)
  pcb = tcp_alloc(TCP_PRIO_NORMAL);
    e8891b68:	e71ff0ef          	jal	ra,e88919d8 <tcp_alloc>
  if (pcb != NULL) {
    e8891b6c:	c509                	beqz	a0,e8891b76 <tcp_new_ip_type+0x1a>
    IP_SET_TYPE_VAL(pcb->local_ip, type);
    e8891b6e:	00850a23          	sb	s0,20(a0)
    IP_SET_TYPE_VAL(pcb->remote_ip, type);
    e8891b72:	02850623          	sb	s0,44(a0)
}
    e8891b76:	60a2                	ld	ra,8(sp)
    e8891b78:	6402                	ld	s0,0(sp)
    e8891b7a:	0141                	addi	sp,sp,16
    e8891b7c:	8082                	ret

00000000e8891b7e <tcp_close_shutdown>:
{
    e8891b7e:	715d                	addi	sp,sp,-80
    e8891b80:	e0a2                	sd	s0,64(sp)
    e8891b82:	f84a                	sd	s2,48(sp)
    e8891b84:	e486                	sd	ra,72(sp)
    e8891b86:	fc26                	sd	s1,56(sp)
    e8891b88:	f44e                	sd	s3,40(sp)
    e8891b8a:	f052                	sd	s4,32(sp)
    e8891b8c:	ec56                	sd	s5,24(sp)
    e8891b8e:	e85a                	sd	s6,16(sp)
    e8891b90:	e45e                	sd	s7,8(sp)
    e8891b92:	842a                	mv	s0,a0
    e8891b94:	892e                	mv	s2,a1
  LWIP_ASSERT("tcp_close_shutdown: invalid pcb", pcb != NULL);
    e8891b96:	e51d                	bnez	a0,e8891bc4 <tcp_close_shutdown+0x46>
    e8891b98:	02f00593          	li	a1,47
    e8891b9c:	0003f517          	auipc	a0,0x3f
    e8891ba0:	6d450513          	addi	a0,a0,1748 # e88d1270 <tcp_backoff+0x108>
    e8891ba4:	fd4ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891ba8:	00150693          	addi	a3,a0,1
    e8891bac:	15e00613          	li	a2,350
    e8891bb0:	0003f597          	auipc	a1,0x3f
    e8891bb4:	62058593          	addi	a1,a1,1568 # e88d11d0 <tcp_backoff+0x68>
    e8891bb8:	0003d517          	auipc	a0,0x3d
    e8891bbc:	4f850513          	addi	a0,a0,1272 # e88cf0b0 <kSinTable1024+0x900>
    e8891bc0:	f06ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (rst_on_unacked_data && ((pcb->state == ESTABLISHED) || (pcb->state == CLOSE_WAIT))) {
    e8891bc4:	04844483          	lbu	s1,72(s0)
    e8891bc8:	0c090763          	beqz	s2,e8891c96 <tcp_close_shutdown+0x118>
    e8891bcc:	4791                	li	a5,4
    e8891bce:	00f48563          	beq	s1,a5,e8891bd8 <tcp_close_shutdown+0x5a>
    e8891bd2:	479d                	li	a5,7
    e8891bd4:	0cf49163          	bne	s1,a5,e8891c96 <tcp_close_shutdown+0x118>
    if ((pcb->refused_data != NULL) || (pcb->rcv_wnd != TCP_WND_MAX(pcb))) {
    e8891bd8:	647c                	ld	a5,200(s0)
    e8891bda:	e799                	bnez	a5,e8891be8 <tcp_close_shutdown+0x6a>
    e8891bdc:	4c78                	lw	a4,92(s0)
    e8891bde:	6799                	lui	a5,0x6
    e8891be0:	a0078793          	addi	a5,a5,-1536 # 5a00 <memcmp-0xe87fa600>
    e8891be4:	0af70963          	beq	a4,a5,e8891c96 <tcp_close_shutdown+0x118>
      LWIP_ASSERT("pcb->flags & TF_RXCLOSED", pcb->flags & TF_RXCLOSED);
    e8891be8:	04e45783          	lhu	a5,78(s0)
    e8891bec:	8bc1                	andi	a5,a5,16
    e8891bee:	e79d                	bnez	a5,e8891c1c <tcp_close_shutdown+0x9e>
    e8891bf0:	02f00593          	li	a1,47
    e8891bf4:	0003f517          	auipc	a0,0x3f
    e8891bf8:	67c50513          	addi	a0,a0,1660 # e88d1270 <tcp_backoff+0x108>
    e8891bfc:	f7cea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891c00:	00150693          	addi	a3,a0,1
    e8891c04:	16400613          	li	a2,356
    e8891c08:	0003f597          	auipc	a1,0x3f
    e8891c0c:	5e858593          	addi	a1,a1,1512 # e88d11f0 <tcp_backoff+0x88>
    e8891c10:	0003d517          	auipc	a0,0x3d
    e8891c14:	4a050513          	addi	a0,a0,1184 # e88cf0b0 <kSinTable1024+0x900>
    e8891c18:	eaeea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
      tcp_rst(pcb, pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip,
    e8891c1c:	04a45783          	lhu	a5,74(s0)
    e8891c20:	04c45803          	lhu	a6,76(s0)
    e8891c24:	4c30                	lw	a2,88(s0)
    e8891c26:	08c42583          	lw	a1,140(s0)
    e8891c2a:	01840713          	addi	a4,s0,24
    e8891c2e:	86a2                	mv	a3,s0
    e8891c30:	8522                	mv	a0,s0
    e8891c32:	671030ef          	jal	ra,e8895aa2 <tcp_rst>
      tcp_pcb_purge(pcb);
    e8891c36:	8522                	mv	a0,s0
    e8891c38:	fccff0ef          	jal	ra,e8891404 <tcp_pcb_purge>
      TCP_RMV_ACTIVE(pcb);
    e8891c3c:	00055717          	auipc	a4,0x55
    e8891c40:	a2c70713          	addi	a4,a4,-1492 # e88e6668 <tcp_active_pcbs>
    e8891c44:	631c                	ld	a5,0(a4)
    e8891c46:	04879163          	bne	a5,s0,e8891c88 <tcp_close_shutdown+0x10a>
    e8891c4a:	7c1c                	ld	a5,56(s0)
    e8891c4c:	e31c                	sd	a5,0(a4)
    e8891c4e:	4785                	li	a5,1
    e8891c50:	00055717          	auipc	a4,0x55
    e8891c54:	a2f70023          	sb	a5,-1504(a4) # e88e6670 <tcp_active_pcbs_changed>
      if (tcp_input_pcb == pcb) {
    e8891c58:	00055797          	auipc	a5,0x55
    e8891c5c:	a8078793          	addi	a5,a5,-1408 # e88e66d8 <tcp_input_pcb>
    e8891c60:	639c                	ld	a5,0(a5)
      TCP_RMV_ACTIVE(pcb);
    e8891c62:	02043c23          	sd	zero,56(s0)
      if (tcp_input_pcb == pcb) {
    e8891c66:	06879a63          	bne	a5,s0,e8891cda <tcp_close_shutdown+0x15c>
        tcp_trigger_input_pcb_close();
    e8891c6a:	421020ef          	jal	ra,e889488a <tcp_trigger_input_pcb_close>
}
    e8891c6e:	60a6                	ld	ra,72(sp)
    e8891c70:	6406                	ld	s0,64(sp)
    e8891c72:	74e2                	ld	s1,56(sp)
    e8891c74:	7942                	ld	s2,48(sp)
    e8891c76:	79a2                	ld	s3,40(sp)
    e8891c78:	7a02                	ld	s4,32(sp)
    e8891c7a:	6ae2                	ld	s5,24(sp)
    e8891c7c:	6b42                	ld	s6,16(sp)
    e8891c7e:	6ba2                	ld	s7,8(sp)
    e8891c80:	4501                	li	a0,0
    e8891c82:	6161                	addi	sp,sp,80
    e8891c84:	8082                	ret
    e8891c86:	87ba                	mv	a5,a4
      TCP_RMV_ACTIVE(pcb);
    e8891c88:	d3f9                	beqz	a5,e8891c4e <tcp_close_shutdown+0xd0>
    e8891c8a:	7f98                	ld	a4,56(a5)
    e8891c8c:	fe871de3          	bne	a4,s0,e8891c86 <tcp_close_shutdown+0x108>
    e8891c90:	7c18                	ld	a4,56(s0)
    e8891c92:	ff98                	sd	a4,56(a5)
    e8891c94:	bf6d                	j	e8891c4e <tcp_close_shutdown+0xd0>
  switch (pcb->state) {
    e8891c96:	4905                	li	s2,1
    e8891c98:	05248d63          	beq	s1,s2,e8891cf2 <tcp_close_shutdown+0x174>
    e8891c9c:	c08d                	beqz	s1,e8891cbe <tcp_close_shutdown+0x140>
    e8891c9e:	4789                	li	a5,2
    e8891ca0:	14f48f63          	beq	s1,a5,e8891dfe <tcp_close_shutdown+0x280>
      return tcp_close_shutdown_fin(pcb);
    e8891ca4:	8522                	mv	a0,s0
}
    e8891ca6:	6406                	ld	s0,64(sp)
    e8891ca8:	60a6                	ld	ra,72(sp)
    e8891caa:	74e2                	ld	s1,56(sp)
    e8891cac:	7942                	ld	s2,48(sp)
    e8891cae:	79a2                	ld	s3,40(sp)
    e8891cb0:	7a02                	ld	s4,32(sp)
    e8891cb2:	6ae2                	ld	s5,24(sp)
    e8891cb4:	6b42                	ld	s6,16(sp)
    e8891cb6:	6ba2                	ld	s7,8(sp)
    e8891cb8:	6161                	addi	sp,sp,80
      return tcp_close_shutdown_fin(pcb);
    e8891cba:	991fe06f          	j	e889064a <tcp_close_shutdown_fin>
      if (pcb->local_port != 0) {
    e8891cbe:	04a45783          	lhu	a5,74(s0)
    e8891cc2:	cf81                	beqz	a5,e8891cda <tcp_close_shutdown+0x15c>
        TCP_RMV(&tcp_bound_pcbs, pcb);
    e8891cc4:	00055717          	auipc	a4,0x55
    e8891cc8:	9b470713          	addi	a4,a4,-1612 # e88e6678 <tcp_bound_pcbs>
    e8891ccc:	631c                	ld	a5,0(a4)
    e8891cce:	00879b63          	bne	a5,s0,e8891ce4 <tcp_close_shutdown+0x166>
    e8891cd2:	7c1c                	ld	a5,56(s0)
    e8891cd4:	e31c                	sd	a5,0(a4)
    e8891cd6:	02043c23          	sd	zero,56(s0)
        tcp_free(pcb);
    e8891cda:	8522                	mv	a0,s0
    e8891cdc:	a61fe0ef          	jal	ra,e889073c <tcp_free>
    e8891ce0:	b779                	j	e8891c6e <tcp_close_shutdown+0xf0>
    e8891ce2:	87ba                	mv	a5,a4
        TCP_RMV(&tcp_bound_pcbs, pcb);
    e8891ce4:	dbed                	beqz	a5,e8891cd6 <tcp_close_shutdown+0x158>
    e8891ce6:	7f98                	ld	a4,56(a5)
    e8891ce8:	fe871de3          	bne	a4,s0,e8891ce2 <tcp_close_shutdown+0x164>
    e8891cec:	7c18                	ld	a4,56(s0)
    e8891cee:	ff98                	sd	a4,56(a5)
    e8891cf0:	b7dd                	j	e8891cd6 <tcp_close_shutdown+0x158>
  LWIP_ASSERT("pcb != NULL", pcb != NULL);
    e8891cf2:	e02d                	bnez	s0,e8891d54 <tcp_close_shutdown+0x1d6>
    e8891cf4:	02f00593          	li	a1,47
    e8891cf8:	0003f517          	auipc	a0,0x3f
    e8891cfc:	57850513          	addi	a0,a0,1400 # e88d1270 <tcp_backoff+0x108>
    e8891d00:	e78ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891d04:	00150693          	addi	a3,a0,1
    e8891d08:	11100613          	li	a2,273
    e8891d0c:	0003f597          	auipc	a1,0x3f
    e8891d10:	5ec58593          	addi	a1,a1,1516 # e88d12f8 <tcp_backoff+0x190>
    e8891d14:	0003d517          	auipc	a0,0x3d
    e8891d18:	39c50513          	addi	a0,a0,924 # e88cf0b0 <kSinTable1024+0x900>
    e8891d1c:	daaea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("pcb->state == LISTEN", pcb->state == LISTEN);
    e8891d20:	04804783          	lbu	a5,72(zero) # 48 <memcmp-0xe87fffb8>
    e8891d24:	02978863          	beq	a5,s1,e8891d54 <tcp_close_shutdown+0x1d6>
    e8891d28:	02f00593          	li	a1,47
    e8891d2c:	0003f517          	auipc	a0,0x3f
    e8891d30:	54450513          	addi	a0,a0,1348 # e88d1270 <tcp_backoff+0x108>
    e8891d34:	e44ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891d38:	00150693          	addi	a3,a0,1
    e8891d3c:	11200613          	li	a2,274
    e8891d40:	0003f597          	auipc	a1,0x3f
    e8891d44:	4d058593          	addi	a1,a1,1232 # e88d1210 <tcp_backoff+0xa8>
    e8891d48:	0003d517          	auipc	a0,0x3d
    e8891d4c:	36850513          	addi	a0,a0,872 # e88cf0b0 <kSinTable1024+0x900>
    e8891d50:	d76ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8891d54:	4905                	li	s2,1
    tcp_remove_listener(*tcp_pcb_lists[i], (struct tcp_pcb_listen *)pcb);
    e8891d56:	0003fa17          	auipc	s4,0x3f
    e8891d5a:	74aa0a13          	addi	s4,s4,1866 # e88d14a0 <tcp_pcb_lists>
  LWIP_ASSERT("tcp_remove_listener: invalid listener", lpcb != NULL);
    e8891d5e:	0003fa97          	auipc	s5,0x3f
    e8891d62:	512a8a93          	addi	s5,s5,1298 # e88d1270 <tcp_backoff+0x108>
    e8891d66:	0003fb17          	auipc	s6,0x3f
    e8891d6a:	4c2b0b13          	addi	s6,s6,1218 # e88d1228 <tcp_backoff+0xc0>
    e8891d6e:	0003db97          	auipc	s7,0x3d
    e8891d72:	342b8b93          	addi	s7,s7,834 # e88cf0b0 <kSinTable1024+0x900>
  for (i = 1; i < LWIP_ARRAYSIZE(tcp_pcb_lists); i++) {
    e8891d76:	4991                	li	s3,4
    tcp_remove_listener(*tcp_pcb_lists[i], (struct tcp_pcb_listen *)pcb);
    e8891d78:	672a478b          	lrd	a5,s4,s2,3
    e8891d7c:	6384                	ld	s1,0(a5)
  LWIP_ASSERT("tcp_remove_listener: invalid listener", lpcb != NULL);
    e8891d7e:	ec11                	bnez	s0,e8891d9a <tcp_close_shutdown+0x21c>
    e8891d80:	02f00593          	li	a1,47
    e8891d84:	8556                	mv	a0,s5
    e8891d86:	df2ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891d8a:	00150693          	addi	a3,a0,1
    e8891d8e:	0ff00613          	li	a2,255
    e8891d92:	85da                	mv	a1,s6
    e8891d94:	855e                	mv	a0,s7
    e8891d96:	d30ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  for (pcb = list; pcb != NULL; pcb = pcb->next) {
    e8891d9a:	e8b9                	bnez	s1,e8891df0 <tcp_close_shutdown+0x272>
  for (i = 1; i < LWIP_ARRAYSIZE(tcp_pcb_lists); i++) {
    e8891d9c:	0905                	addi	s2,s2,1
    e8891d9e:	fd391de3          	bne	s2,s3,e8891d78 <tcp_close_shutdown+0x1fa>
      tcp_pcb_remove(&tcp_listen_pcbs.pcbs, pcb);
    e8891da2:	85a2                	mv	a1,s0
    e8891da4:	00055517          	auipc	a0,0x55
    e8891da8:	8dc50513          	addi	a0,a0,-1828 # e88e6680 <tcp_listen_pcbs>
    e8891dac:	ee2ff0ef          	jal	ra,e889148e <tcp_pcb_remove>
  LWIP_ASSERT("tcp_free_listen: !LISTEN", pcb->state != LISTEN);
    e8891db0:	04844703          	lbu	a4,72(s0)
    e8891db4:	4785                	li	a5,1
    e8891db6:	02f71863          	bne	a4,a5,e8891de6 <tcp_close_shutdown+0x268>
    e8891dba:	02f00593          	li	a1,47
    e8891dbe:	0003f517          	auipc	a0,0x3f
    e8891dc2:	4b250513          	addi	a0,a0,1202 # e88d1270 <tcp_backoff+0x108>
    e8891dc6:	db2ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891dca:	00150693          	addi	a3,a0,1
    e8891dce:	0df00613          	li	a2,223
    e8891dd2:	0003f597          	auipc	a1,0x3f
    e8891dd6:	47e58593          	addi	a1,a1,1150 # e88d1250 <tcp_backoff+0xe8>
    e8891dda:	0003d517          	auipc	a0,0x3d
    e8891dde:	2d650513          	addi	a0,a0,726 # e88cf0b0 <kSinTable1024+0x900>
    e8891de2:	ce4ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  memp_free(MEMP_TCP_PCB_LISTEN, pcb);
    e8891de6:	85a2                	mv	a1,s0
    e8891de8:	450d                	li	a0,3
    e8891dea:	bb4fc0ef          	jal	ra,e888e19e <memp_free>
    e8891dee:	b541                	j	e8891c6e <tcp_close_shutdown+0xf0>
    if (pcb->listener == lpcb) {
    e8891df0:	68fc                	ld	a5,208(s1)
    e8891df2:	00f41463          	bne	s0,a5,e8891dfa <tcp_close_shutdown+0x27c>
      pcb->listener = NULL;
    e8891df6:	0c04b823          	sd	zero,208(s1)
  for (pcb = list; pcb != NULL; pcb = pcb->next) {
    e8891dfa:	7c84                	ld	s1,56(s1)
    e8891dfc:	bf79                	j	e8891d9a <tcp_close_shutdown+0x21c>
      TCP_PCB_REMOVE_ACTIVE(pcb);
    e8891dfe:	85a2                	mv	a1,s0
    e8891e00:	00055517          	auipc	a0,0x55
    e8891e04:	86850513          	addi	a0,a0,-1944 # e88e6668 <tcp_active_pcbs>
    e8891e08:	e86ff0ef          	jal	ra,e889148e <tcp_pcb_remove>
    e8891e0c:	00055797          	auipc	a5,0x55
    e8891e10:	87278223          	sb	s2,-1948(a5) # e88e6670 <tcp_active_pcbs_changed>
      tcp_free(pcb);
    e8891e14:	8522                	mv	a0,s0
    e8891e16:	927fe0ef          	jal	ra,e889073c <tcp_free>
      MIB2_STATS_INC(mib2.tcpattemptfails);
    e8891e1a:	00054717          	auipc	a4,0x54
    e8891e1e:	63670713          	addi	a4,a4,1590 # e88e6450 <lwip_stats>
    e8891e22:	19c72783          	lw	a5,412(a4)
    e8891e26:	2785                	addiw	a5,a5,1
    e8891e28:	18f72e23          	sw	a5,412(a4)
      break;
    e8891e2c:	b589                	j	e8891c6e <tcp_close_shutdown+0xf0>

00000000e8891e2e <tcp_close>:
  LWIP_ERROR("tcp_close: invalid pcb", pcb != NULL, return ERR_ARG);
    e8891e2e:	cd19                	beqz	a0,e8891e4c <tcp_close+0x1e>
  if (pcb->state != LISTEN) {
    e8891e30:	04854703          	lbu	a4,72(a0)
    e8891e34:	4785                	li	a5,1
    e8891e36:	00f70863          	beq	a4,a5,e8891e46 <tcp_close+0x18>
    tcp_set_flags(pcb, TF_RXCLOSED);
    e8891e3a:	04e55783          	lhu	a5,78(a0)
    e8891e3e:	0107e793          	ori	a5,a5,16
    e8891e42:	04f51723          	sh	a5,78(a0)
  return tcp_close_shutdown(pcb, 1);
    e8891e46:	4585                	li	a1,1
    e8891e48:	d37ff06f          	j	e8891b7e <tcp_close_shutdown>
{
    e8891e4c:	1141                	addi	sp,sp,-16
  LWIP_ERROR("tcp_close: invalid pcb", pcb != NULL, return ERR_ARG);
    e8891e4e:	02f00593          	li	a1,47
    e8891e52:	0003f517          	auipc	a0,0x3f
    e8891e56:	41e50513          	addi	a0,a0,1054 # e88d1270 <tcp_backoff+0x108>
{
    e8891e5a:	e406                	sd	ra,8(sp)
  LWIP_ERROR("tcp_close: invalid pcb", pcb != NULL, return ERR_ARG);
    e8891e5c:	d1cea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891e60:	00150693          	addi	a3,a0,1
    e8891e64:	1e800613          	li	a2,488
    e8891e68:	0003f597          	auipc	a1,0x3f
    e8891e6c:	35058593          	addi	a1,a1,848 # e88d11b8 <tcp_backoff+0x50>
    e8891e70:	0003d517          	auipc	a0,0x3d
    e8891e74:	24050513          	addi	a0,a0,576 # e88cf0b0 <kSinTable1024+0x900>
    e8891e78:	c4eea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e8891e7c:	60a2                	ld	ra,8(sp)
    e8891e7e:	5541                	li	a0,-16
    e8891e80:	0141                	addi	sp,sp,16
    e8891e82:	8082                	ret

00000000e8891e84 <tcp_recv_null>:
{
    e8891e84:	1101                	addi	sp,sp,-32
    e8891e86:	ec06                	sd	ra,24(sp)
  LWIP_ERROR("tcp_recv_null: invalid pcb", pcb != NULL, return ERR_ARG);
    e8891e88:	ed85                	bnez	a1,e8891ec0 <tcp_recv_null+0x3c>
    e8891e8a:	02f00593          	li	a1,47
    e8891e8e:	0003f517          	auipc	a0,0x3f
    e8891e92:	3e250513          	addi	a0,a0,994 # e88d1270 <tcp_backoff+0x108>
    e8891e96:	ce2ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891e9a:	00150693          	addi	a3,a0,1
    e8891e9e:	69800613          	li	a2,1688
    e8891ea2:	0003f597          	auipc	a1,0x3f
    e8891ea6:	75e58593          	addi	a1,a1,1886 # e88d1600 <tcp_persist_backoff+0x90>
    e8891eaa:	0003d517          	auipc	a0,0x3d
    e8891eae:	20650513          	addi	a0,a0,518 # e88cf0b0 <kSinTable1024+0x900>
    e8891eb2:	c14ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8891eb6:	57c1                	li	a5,-16
}
    e8891eb8:	60e2                	ld	ra,24(sp)
    e8891eba:	853e                	mv	a0,a5
    e8891ebc:	6105                	addi	sp,sp,32
    e8891ebe:	8082                	ret
    e8891ec0:	852e                	mv	a0,a1
  if (p != NULL) {
    e8891ec2:	ce01                	beqz	a2,e8891eda <tcp_recv_null+0x56>
    tcp_recved(pcb, p->tot_len);
    e8891ec4:	01065583          	lhu	a1,16(a2)
    e8891ec8:	e432                	sd	a2,8(sp)
    e8891eca:	d9bfe0ef          	jal	ra,e8890c64 <tcp_recved>
    pbuf_free(p);
    e8891ece:	6622                	ld	a2,8(sp)
    e8891ed0:	8532                	mv	a0,a2
    e8891ed2:	b7afd0ef          	jal	ra,e888f24c <pbuf_free>
  return ERR_OK;
    e8891ed6:	4781                	li	a5,0
    e8891ed8:	b7c5                	j	e8891eb8 <tcp_recv_null+0x34>
    e8891eda:	4781                	li	a5,0
  } else if (err == ERR_OK) {
    e8891edc:	fef1                	bnez	a3,e8891eb8 <tcp_recv_null+0x34>
}
    e8891ede:	60e2                	ld	ra,24(sp)
    e8891ee0:	6105                	addi	sp,sp,32
    return tcp_close(pcb);
    e8891ee2:	f4dff06f          	j	e8891e2e <tcp_close>

00000000e8891ee6 <tcp_process_refused_data>:
{
    e8891ee6:	7139                	addi	sp,sp,-64
    e8891ee8:	fc06                	sd	ra,56(sp)
    e8891eea:	f852                	sd	s4,48(sp)
    e8891eec:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8891ef0:	fd31590b          	sdd	s2,s3,(sp),2,4
  LWIP_ERROR("tcp_process_refused_data: invalid pcb", pcb != NULL, return ERR_ARG);
    e8891ef4:	c911                	beqz	a0,e8891f08 <tcp_process_refused_data+0x22>
        if (pcb->rcv_wnd != TCP_WND_MAX(pcb)) {
    e8891ef6:	6919                	lui	s2,0x6
    e8891ef8:	842a                	mv	s0,a0
    e8891efa:	a0090913          	addi	s2,s2,-1536 # 5a00 <memcmp-0xe87fa600>
        if (err == ERR_ABRT) {
    e8891efe:	5a4d                	li	s4,-13
  while (pcb->refused_data != NULL)
    e8891f00:	6464                	ld	s1,200(s0)
    e8891f02:	e0b1                	bnez	s1,e8891f46 <tcp_process_refused_data+0x60>
  return ERR_OK;
    e8891f04:	4501                	li	a0,0
    e8891f06:	a805                	j	e8891f36 <tcp_process_refused_data+0x50>
  LWIP_ERROR("tcp_process_refused_data: invalid pcb", pcb != NULL, return ERR_ARG);
    e8891f08:	02f00593          	li	a1,47
    e8891f0c:	0003f517          	auipc	a0,0x3f
    e8891f10:	36450513          	addi	a0,a0,868 # e88d1270 <tcp_backoff+0x108>
    e8891f14:	c64ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8891f18:	00150693          	addi	a3,a0,1
    e8891f1c:	60900613          	li	a2,1545
    e8891f20:	0003f597          	auipc	a1,0x3f
    e8891f24:	69058593          	addi	a1,a1,1680 # e88d15b0 <tcp_persist_backoff+0x40>
    e8891f28:	0003d517          	auipc	a0,0x3d
    e8891f2c:	18850513          	addi	a0,a0,392 # e88cf0b0 <kSinTable1024+0x900>
    e8891f30:	b96ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8891f34:	5541                	li	a0,-16
}
    e8891f36:	70e2                	ld	ra,56(sp)
    e8891f38:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8891f3c:	7a42                	ld	s4,48(sp)
    e8891f3e:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8891f42:	6121                	addi	sp,sp,64
    e8891f44:	8082                	ret
    pbuf_split_64k(refused_data, &rest);
    e8891f46:	002c                	addi	a1,sp,8
    e8891f48:	8526                	mv	a0,s1
    u8_t refused_flags = pcb->refused_data->flags;
    e8891f4a:	0154c983          	lbu	s3,21(s1)
    pbuf_split_64k(refused_data, &rest);
    e8891f4e:	adffd0ef          	jal	ra,e888fa2c <pbuf_split_64k>
    pcb->refused_data = rest;
    e8891f52:	67a2                	ld	a5,8(sp)
    TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err);
    e8891f54:	4681                	li	a3,0
    e8891f56:	8626                	mv	a2,s1
    pcb->refused_data = rest;
    e8891f58:	e47c                	sd	a5,200(s0)
    TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err);
    e8891f5a:	707c                	ld	a5,224(s0)
    e8891f5c:	85a2                	mv	a1,s0
    e8891f5e:	cb95                	beqz	a5,e8891f92 <tcp_process_refused_data+0xac>
    e8891f60:	6028                	ld	a0,64(s0)
    e8891f62:	9782                	jalr	a5
    if (err == ERR_OK) {
    e8891f64:	e91d                	bnez	a0,e8891f9a <tcp_process_refused_data+0xb4>
      if ((refused_flags & PBUF_FLAG_TCP_FIN)
    e8891f66:	0209f993          	andi	s3,s3,32
    e8891f6a:	f8098be3          	beqz	s3,e8891f00 <tcp_process_refused_data+0x1a>
          && (rest == NULL)
    e8891f6e:	67a2                	ld	a5,8(sp)
    e8891f70:	fbc1                	bnez	a5,e8891f00 <tcp_process_refused_data+0x1a>
        if (pcb->rcv_wnd != TCP_WND_MAX(pcb)) {
    e8891f72:	4c7c                	lw	a5,92(s0)
    e8891f74:	01278463          	beq	a5,s2,e8891f7c <tcp_process_refused_data+0x96>
          pcb->rcv_wnd++;
    e8891f78:	2785                	addiw	a5,a5,1
    e8891f7a:	cc7c                	sw	a5,92(s0)
        TCP_EVENT_CLOSED(pcb, err);
    e8891f7c:	707c                	ld	a5,224(s0)
    e8891f7e:	d3c9                	beqz	a5,e8891f00 <tcp_process_refused_data+0x1a>
    e8891f80:	6028                	ld	a0,64(s0)
    e8891f82:	4681                	li	a3,0
    e8891f84:	4601                	li	a2,0
    e8891f86:	85a2                	mv	a1,s0
    e8891f88:	9782                	jalr	a5
        if (err == ERR_ABRT) {
    e8891f8a:	f7451be3          	bne	a0,s4,e8891f00 <tcp_process_refused_data+0x1a>
          return ERR_ABRT;
    e8891f8e:	554d                	li	a0,-13
    e8891f90:	b75d                	j	e8891f36 <tcp_process_refused_data+0x50>
    TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err);
    e8891f92:	4501                	li	a0,0
    e8891f94:	ef1ff0ef          	jal	ra,e8891e84 <tcp_recv_null>
    e8891f98:	b7f1                	j	e8891f64 <tcp_process_refused_data+0x7e>
    } else if (err == ERR_ABRT) {
    e8891f9a:	57cd                	li	a5,-13
    e8891f9c:	fef509e3          	beq	a0,a5,e8891f8e <tcp_process_refused_data+0xa8>
      if (rest != NULL) {
    e8891fa0:	65a2                	ld	a1,8(sp)
    e8891fa2:	c581                	beqz	a1,e8891faa <tcp_process_refused_data+0xc4>
        pbuf_cat(refused_data, rest);
    e8891fa4:	8526                	mv	a0,s1
    e8891fa6:	f06fd0ef          	jal	ra,e888f6ac <pbuf_cat>
      pcb->refused_data = refused_data;
    e8891faa:	e464                	sd	s1,200(s0)
      return ERR_INPROGRESS;
    e8891fac:	556d                	li	a0,-5
    e8891fae:	b761                	j	e8891f36 <tcp_process_refused_data+0x50>

00000000e8891fb0 <tcp_fasttmr>:
{
    e8891fb0:	7179                	addi	sp,sp,-48
    e8891fb2:	f891540b          	sdd	s0,s1,(sp),0,4
    e8891fb6:	fb31590b          	sdd	s2,s3,(sp),1,4
  ++tcp_timer_ctr;
    e8891fba:	00054797          	auipc	a5,0x54
    e8891fbe:	6d378793          	addi	a5,a5,1747 # e88e668d <tcp_timer_ctr>
{
    e8891fc2:	f052                	sd	s4,32(sp)
    e8891fc4:	f406                	sd	ra,40(sp)
  ++tcp_timer_ctr;
    e8891fc6:	0007c703          	lbu	a4,0(a5)
    e8891fca:	84be                	mv	s1,a5
  pcb = tcp_active_pcbs;
    e8891fcc:	00054997          	auipc	s3,0x54
    e8891fd0:	69c98993          	addi	s3,s3,1692 # e88e6668 <tcp_active_pcbs>
  ++tcp_timer_ctr;
    e8891fd4:	2705                	addiw	a4,a4,1
    e8891fd6:	00e78023          	sb	a4,0(a5)
        tcp_active_pcbs_changed = 0;
    e8891fda:	00054a17          	auipc	s4,0x54
    e8891fde:	696a0a13          	addi	s4,s4,1686 # e88e6670 <tcp_active_pcbs_changed>
  pcb = tcp_active_pcbs;
    e8891fe2:	0009b403          	ld	s0,0(s3)
  while (pcb != NULL) {
    e8891fe6:	e809                	bnez	s0,e8891ff8 <tcp_fasttmr+0x48>
}
    e8891fe8:	70a2                	ld	ra,40(sp)
    e8891fea:	f891440b          	ldd	s0,s1,(sp),0,4
    e8891fee:	7a02                	ld	s4,32(sp)
    e8891ff0:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8891ff4:	6145                	addi	sp,sp,48
    e8891ff6:	8082                	ret
    if (pcb->last_timer != tcp_timer_ctr) {
    e8891ff8:	0004c783          	lbu	a5,0(s1)
    e8891ffc:	05244703          	lbu	a4,82(s0)
    e8892000:	06f70063          	beq	a4,a5,e8892060 <tcp_fasttmr+0xb0>
      pcb->last_timer = tcp_timer_ctr;
    e8892004:	04f40923          	sb	a5,82(s0)
      if (pcb->flags & TF_ACK_DELAY) {
    e8892008:	04e45783          	lhu	a5,78(s0)
    e889200c:	0017f713          	andi	a4,a5,1
    e8892010:	cf09                	beqz	a4,e889202a <tcp_fasttmr+0x7a>
        tcp_ack_now(pcb);
    e8892012:	0027e793          	ori	a5,a5,2
    e8892016:	04f41723          	sh	a5,78(s0)
        tcp_output(pcb);
    e889201a:	8522                	mv	a0,s0
    e889201c:	3f5030ef          	jal	ra,e8895c10 <tcp_output>
        tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW);
    e8892020:	04e45783          	lhu	a5,78(s0)
    e8892024:	9bf1                	andi	a5,a5,-4
    e8892026:	04f41723          	sh	a5,78(s0)
      if (pcb->flags & TF_CLOSEPEND) {
    e889202a:	04e45783          	lhu	a5,78(s0)
    e889202e:	0087f713          	andi	a4,a5,8
    e8892032:	c719                	beqz	a4,e8892040 <tcp_fasttmr+0x90>
        tcp_clear_flags(pcb, TF_CLOSEPEND);
    e8892034:	9bdd                	andi	a5,a5,-9
    e8892036:	04f41723          	sh	a5,78(s0)
        tcp_close_shutdown_fin(pcb);
    e889203a:	8522                	mv	a0,s0
    e889203c:	e0efe0ef          	jal	ra,e889064a <tcp_close_shutdown_fin>
      if (pcb->refused_data != NULL) {
    e8892040:	647c                	ld	a5,200(s0)
      next = pcb->next;
    e8892042:	03843903          	ld	s2,56(s0)
      if (pcb->refused_data != NULL) {
    e8892046:	cb99                	beqz	a5,e889205c <tcp_fasttmr+0xac>
        tcp_process_refused_data(pcb);
    e8892048:	8522                	mv	a0,s0
        tcp_active_pcbs_changed = 0;
    e889204a:	00054797          	auipc	a5,0x54
    e889204e:	62078323          	sb	zero,1574(a5) # e88e6670 <tcp_active_pcbs_changed>
        tcp_process_refused_data(pcb);
    e8892052:	e95ff0ef          	jal	ra,e8891ee6 <tcp_process_refused_data>
        if (tcp_active_pcbs_changed) {
    e8892056:	000a4783          	lbu	a5,0(s4)
    e889205a:	f7c1                	bnez	a5,e8891fe2 <tcp_fasttmr+0x32>
{
    e889205c:	844a                	mv	s0,s2
    e889205e:	b761                	j	e8891fe6 <tcp_fasttmr+0x36>
      pcb = pcb->next;
    e8892060:	03843903          	ld	s2,56(s0)
    e8892064:	bfe5                	j	e889205c <tcp_fasttmr+0xac>

00000000e8892066 <tcp_shutdown>:
{
    e8892066:	1141                	addi	sp,sp,-16
    e8892068:	e406                	sd	ra,8(sp)
    e889206a:	e022                	sd	s0,0(sp)
  LWIP_ERROR("tcp_shutdown: invalid pcb", pcb != NULL, return ERR_ARG);
    e889206c:	ed05                	bnez	a0,e88920a4 <tcp_shutdown+0x3e>
    e889206e:	02f00593          	li	a1,47
    e8892072:	0003f517          	auipc	a0,0x3f
    e8892076:	1fe50513          	addi	a0,a0,510 # e88d1270 <tcp_backoff+0x108>
    e889207a:	afeea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889207e:	00150693          	addi	a3,a0,1
    e8892082:	20700613          	li	a2,519
    e8892086:	0003f597          	auipc	a1,0x3f
    e889208a:	62258593          	addi	a1,a1,1570 # e88d16a8 <tcp_persist_backoff+0x138>
    e889208e:	0003d517          	auipc	a0,0x3d
    e8892092:	02250513          	addi	a0,a0,34 # e88cf0b0 <kSinTable1024+0x900>
    e8892096:	a30ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889209a:	5541                	li	a0,-16
}
    e889209c:	60a2                	ld	ra,8(sp)
    e889209e:	6402                	ld	s0,0(sp)
    e88920a0:	0141                	addi	sp,sp,16
    e88920a2:	8082                	ret
  if (pcb->state == LISTEN) {
    e88920a4:	04854703          	lbu	a4,72(a0)
    e88920a8:	4785                	li	a5,1
    e88920aa:	842a                	mv	s0,a0
    e88920ac:	04f70263          	beq	a4,a5,e88920f0 <tcp_shutdown+0x8a>
  if (shut_rx) {
    e88920b0:	c195                	beqz	a1,e88920d4 <tcp_shutdown+0x6e>
    tcp_set_flags(pcb, TF_RXCLOSED);
    e88920b2:	04e55783          	lhu	a5,78(a0)
      return tcp_close_shutdown(pcb, 1);
    e88920b6:	4585                	li	a1,1
    tcp_set_flags(pcb, TF_RXCLOSED);
    e88920b8:	0107e793          	ori	a5,a5,16
    e88920bc:	04f51723          	sh	a5,78(a0)
    if (shut_tx) {
    e88920c0:	e21d                	bnez	a2,e88920e6 <tcp_shutdown+0x80>
    if (pcb->refused_data != NULL) {
    e88920c2:	6568                	ld	a0,200(a0)
    e88920c4:	e119                	bnez	a0,e88920ca <tcp_shutdown+0x64>
  return ERR_OK;
    e88920c6:	4501                	li	a0,0
    e88920c8:	bfd1                	j	e889209c <tcp_shutdown+0x36>
      pbuf_free(pcb->refused_data);
    e88920ca:	982fd0ef          	jal	ra,e888f24c <pbuf_free>
      pcb->refused_data = NULL;
    e88920ce:	0c043423          	sd	zero,200(s0)
    e88920d2:	bfd5                	j	e88920c6 <tcp_shutdown+0x60>
  if (shut_tx) {
    e88920d4:	da6d                	beqz	a2,e88920c6 <tcp_shutdown+0x60>
    switch (pcb->state) {
    e88920d6:	469d                	li	a3,7
    e88920d8:	00e6ec63          	bltu	a3,a4,e88920f0 <tcp_shutdown+0x8a>
    e88920dc:	00e797b3          	sll	a5,a5,a4
    e88920e0:	0987f793          	andi	a5,a5,152
    e88920e4:	c791                	beqz	a5,e88920f0 <tcp_shutdown+0x8a>
}
    e88920e6:	6402                	ld	s0,0(sp)
    e88920e8:	60a2                	ld	ra,8(sp)
    e88920ea:	0141                	addi	sp,sp,16
        return tcp_close_shutdown(pcb, (u8_t)shut_rx);
    e88920ec:	a93ff06f          	j	e8891b7e <tcp_close_shutdown>
    return ERR_CONN;
    e88920f0:	5555                	li	a0,-11
    e88920f2:	b76d                	j	e889209c <tcp_shutdown+0x36>

00000000e88920f4 <tcp_slowtmr>:
{
    e88920f4:	7119                	addi	sp,sp,-128
    e88920f6:	f8a2                	sd	s0,112(sp)
  ++tcp_ticks;
    e88920f8:	00054417          	auipc	s0,0x54
    e88920fc:	59040413          	addi	s0,s0,1424 # e88e6688 <tcp_ticks>
    e8892100:	401c                	lw	a5,0(s0)
{
    e8892102:	e8d2                	sd	s4,80(sp)
  ++tcp_timer_ctr;
    e8892104:	00054a17          	auipc	s4,0x54
    e8892108:	589a0a13          	addi	s4,s4,1417 # e88e668d <tcp_timer_ctr>
  ++tcp_ticks;
    e889210c:	2785                	addiw	a5,a5,1
{
    e889210e:	e4d6                	sd	s5,72(sp)
    e8892110:	e0da                	sd	s6,64(sp)
    e8892112:	fc5e                	sd	s7,56(sp)
    e8892114:	fc86                	sd	ra,120(sp)
    e8892116:	f4a6                	sd	s1,104(sp)
    e8892118:	f0ca                	sd	s2,96(sp)
    e889211a:	ecce                	sd	s3,88(sp)
    e889211c:	f862                	sd	s8,48(sp)
    e889211e:	f466                	sd	s9,40(sp)
    e8892120:	f06a                	sd	s10,32(sp)
    e8892122:	ec6e                	sd	s11,24(sp)
  ++tcp_ticks;
    e8892124:	c01c                	sw	a5,0(s0)
  ++tcp_timer_ctr;
    e8892126:	000a4783          	lbu	a5,0(s4)
          (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) {
    e889212a:	000a5ab7          	lui	s5,0xa5
                 (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEP_INTVL(pcb))
    e889212e:	6b49                	lui	s6,0x12
  ++tcp_timer_ctr;
    e8892130:	2785                	addiw	a5,a5,1
    e8892132:	00fa0023          	sb	a5,0(s4)
          (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) {
    e8892136:	cb8a8a93          	addi	s5,s5,-840 # a4cb8 <memcmp-0xe875b348>
                 (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEP_INTVL(pcb))
    e889213a:	4f8b0b13          	addi	s6,s6,1272 # 124f8 <memcmp-0xe87edb08>
              pcb->rto = (s16_t)LWIP_MIN(calc_rto, 0x7FFF);
    e889213e:	6ba1                	lui	s7,0x8
  pcb = tcp_active_pcbs;
    e8892140:	00054917          	auipc	s2,0x54
    e8892144:	52890913          	addi	s2,s2,1320 # e88e6668 <tcp_active_pcbs>
    e8892148:	00093d83          	ld	s11,0(s2)
  prev = NULL;
    e889214c:	4981                	li	s3,0
      tcp_active_pcbs_changed = 0;
    e889214e:	00054c17          	auipc	s8,0x54
    e8892152:	522c0c13          	addi	s8,s8,1314 # e88e6670 <tcp_active_pcbs_changed>
              int calc_rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[backoff_idx];
    e8892156:	0003fd17          	auipc	s10,0x3f
    e889215a:	012d0d13          	addi	s10,s10,18 # e88d1168 <tcp_backoff>
  while (pcb != NULL) {
    e889215e:	060d9063          	bnez	s11,e88921be <tcp_slowtmr+0xca>
  pcb = tcp_tw_pcbs;
    e8892162:	00054917          	auipc	s2,0x54
    e8892166:	52e90913          	addi	s2,s2,1326 # e88e6690 <tcp_tw_pcbs>
    e889216a:	00093483          	ld	s1,0(s2)
    LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
    e889216e:	4aa9                	li	s5,10
    e8892170:	0003f997          	auipc	s3,0x3f
    e8892174:	10098993          	addi	s3,s3,256 # e88d1270 <tcp_backoff+0x108>
    e8892178:	0003fb17          	auipc	s6,0x3f
    e889217c:	6b0b0b13          	addi	s6,s6,1712 # e88d1828 <tcp_persist_backoff+0x2b8>
    e8892180:	0003da17          	auipc	s4,0x3d
    e8892184:	f30a0a13          	addi	s4,s4,-208 # e88cf0b0 <kSinTable1024+0x900>
    if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {
    e8892188:	0f000b93          	li	s7,240
        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);
    e889218c:	0003fc17          	auipc	s8,0x3f
    e8892190:	6f4c0c13          	addi	s8,s8,1780 # e88d1880 <tcp_persist_backoff+0x310>
        LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs);
    e8892194:	0003fc97          	auipc	s9,0x3f
    e8892198:	6c4c8c93          	addi	s9,s9,1732 # e88d1858 <tcp_persist_backoff+0x2e8>
  while (pcb != NULL) {
    e889219c:	48049863          	bnez	s1,e889262c <tcp_slowtmr+0x538>
}
    e88921a0:	70e6                	ld	ra,120(sp)
    e88921a2:	7446                	ld	s0,112(sp)
    e88921a4:	74a6                	ld	s1,104(sp)
    e88921a6:	7906                	ld	s2,96(sp)
    e88921a8:	69e6                	ld	s3,88(sp)
    e88921aa:	6a46                	ld	s4,80(sp)
    e88921ac:	6aa6                	ld	s5,72(sp)
    e88921ae:	6b06                	ld	s6,64(sp)
    e88921b0:	7be2                	ld	s7,56(sp)
    e88921b2:	7c42                	ld	s8,48(sp)
    e88921b4:	7ca2                	ld	s9,40(sp)
    e88921b6:	7d02                	ld	s10,32(sp)
    e88921b8:	6de2                	ld	s11,24(sp)
    e88921ba:	6109                	addi	sp,sp,128
    e88921bc:	8082                	ret
    LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED);
    e88921be:	048dc783          	lbu	a5,72(s11)
    e88921c2:	e79d                	bnez	a5,e88921f0 <tcp_slowtmr+0xfc>
    e88921c4:	02f00593          	li	a1,47
    e88921c8:	0003f517          	auipc	a0,0x3f
    e88921cc:	0a850513          	addi	a0,a0,168 # e88d1270 <tcp_backoff+0x108>
    e88921d0:	9a8ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88921d4:	00150693          	addi	a3,a0,1
    e88921d8:	4be00613          	li	a2,1214
    e88921dc:	0003f597          	auipc	a1,0x3f
    e88921e0:	4ec58593          	addi	a1,a1,1260 # e88d16c8 <tcp_persist_backoff+0x158>
    e88921e4:	0003d517          	auipc	a0,0x3d
    e88921e8:	ecc50513          	addi	a0,a0,-308 # e88cf0b0 <kSinTable1024+0x900>
    e88921ec:	8daea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN);
    e88921f0:	048dc703          	lbu	a4,72(s11)
    e88921f4:	4785                	li	a5,1
    e88921f6:	02f71863          	bne	a4,a5,e8892226 <tcp_slowtmr+0x132>
    e88921fa:	02f00593          	li	a1,47
    e88921fe:	0003f517          	auipc	a0,0x3f
    e8892202:	07250513          	addi	a0,a0,114 # e88d1270 <tcp_backoff+0x108>
    e8892206:	972ea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889220a:	00150693          	addi	a3,a0,1
    e889220e:	4bf00613          	li	a2,1215
    e8892212:	0003f597          	auipc	a1,0x3f
    e8892216:	4e658593          	addi	a1,a1,1254 # e88d16f8 <tcp_persist_backoff+0x188>
    e889221a:	0003d517          	auipc	a0,0x3d
    e889221e:	e9650513          	addi	a0,a0,-362 # e88cf0b0 <kSinTable1024+0x900>
    e8892222:	8a4ea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT);
    e8892226:	048dc703          	lbu	a4,72(s11)
    e889222a:	47a9                	li	a5,10
    e889222c:	02f71863          	bne	a4,a5,e889225c <tcp_slowtmr+0x168>
    e8892230:	02f00593          	li	a1,47
    e8892234:	0003f517          	auipc	a0,0x3f
    e8892238:	03c50513          	addi	a0,a0,60 # e88d1270 <tcp_backoff+0x108>
    e889223c:	93cea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892240:	00150693          	addi	a3,a0,1
    e8892244:	4c000613          	li	a2,1216
    e8892248:	0003f597          	auipc	a1,0x3f
    e889224c:	4e058593          	addi	a1,a1,1248 # e88d1728 <tcp_persist_backoff+0x1b8>
    e8892250:	0003d517          	auipc	a0,0x3d
    e8892254:	e6050513          	addi	a0,a0,-416 # e88cf0b0 <kSinTable1024+0x900>
    e8892258:	86eea0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (pcb->last_timer == tcp_timer_ctr) {
    e889225c:	000a4783          	lbu	a5,0(s4)
    e8892260:	052dc703          	lbu	a4,82(s11)
    e8892264:	00f71763          	bne	a4,a5,e8892272 <tcp_slowtmr+0x17e>
      pcb = pcb->next;
    e8892268:	038db483          	ld	s1,56(s11)
      continue;
    e889226c:	89ee                	mv	s3,s11
    e889226e:	8da6                	mv	s11,s1
    e8892270:	b5fd                	j	e889215e <tcp_slowtmr+0x6a>
    if (pcb->state == SYN_SENT && pcb->nrtx >= TCP_SYNMAXRTX) {
    e8892272:	048dc683          	lbu	a3,72(s11)
    pcb->last_timer = tcp_timer_ctr;
    e8892276:	04fd8923          	sb	a5,82(s11)
    if (pcb->state == SYN_SENT && pcb->nrtx >= TCP_SYNMAXRTX) {
    e889227a:	4709                	li	a4,2
    e889227c:	07adc783          	lbu	a5,122(s11)
    e8892280:	14e69963          	bne	a3,a4,e88923d2 <tcp_slowtmr+0x2de>
    e8892284:	4715                	li	a4,5
    e8892286:	14f77863          	bgeu	a4,a5,e88923d6 <tcp_slowtmr+0x2e2>
      ++pcb_remove;
    e889228a:	4c85                	li	s9,1
    if (pcb->state == FIN_WAIT_2 || pcb->state == FIN_WAIT_1) {
    e889228c:	048dc783          	lbu	a5,72(s11)
    e8892290:	4685                	li	a3,1
    e8892292:	ffb7871b          	addiw	a4,a5,-5
    e8892296:	0ff77713          	andi	a4,a4,255
    e889229a:	02e6e163          	bltu	a3,a4,e88922bc <tcp_slowtmr+0x1c8>
      if (pcb->flags & TF_RXCLOSED) {
    e889229e:	04edd703          	lhu	a4,78(s11)
    e88922a2:	8b41                	andi	a4,a4,16
    e88922a4:	cf01                	beqz	a4,e88922bc <tcp_slowtmr+0x1c8>
        if ((u32_t)(tcp_ticks - pcb->tmr) >
    e88922a6:	054da683          	lw	a3,84(s11)
    e88922aa:	4018                	lw	a4,0(s0)
    e88922ac:	9f15                	subw	a4,a4,a3
    e88922ae:	02800693          	li	a3,40
    e88922b2:	00e6f563          	bgeu	a3,a4,e88922bc <tcp_slowtmr+0x1c8>
          ++pcb_remove;
    e88922b6:	2c85                	addiw	s9,s9,1
    e88922b8:	0ffcfc93          	andi	s9,s9,255
    if (ip_get_option(pcb, SOF_KEEPALIVE) &&
    e88922bc:	031dc483          	lbu	s1,49(s11)
    e88922c0:	88a1                	andi	s1,s1,8
    e88922c2:	cc85                	beqz	s1,e88922fa <tcp_slowtmr+0x206>
    e88922c4:	4711                	li	a4,4
    e88922c6:	00e78663          	beq	a5,a4,e88922d2 <tcp_slowtmr+0x1de>
        ((pcb->state == ESTABLISHED) ||
    e88922ca:	471d                	li	a4,7
    pcb_reset = 0;
    e88922cc:	4481                	li	s1,0
        ((pcb->state == ESTABLISHED) ||
    e88922ce:	02e79663          	bne	a5,a4,e88922fa <tcp_slowtmr+0x206>
      if ((u32_t)(tcp_ticks - pcb->tmr) >
    e88922d2:	054da783          	lw	a5,84(s11)
    e88922d6:	4018                	lw	a4,0(s0)
          (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) {
    e88922d8:	1f400613          	li	a2,500
      if ((u32_t)(tcp_ticks - pcb->tmr) >
    e88922dc:	9f1d                	subw	a4,a4,a5
          (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) {
    e88922de:	100de783          	lwu	a5,256(s11)
      if ((u32_t)(tcp_ticks - pcb->tmr) >
    e88922e2:	7c07370b          	extu	a4,a4,31,0
          (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) {
    e88922e6:	015786b3          	add	a3,a5,s5
    e88922ea:	02c6d6b3          	divu	a3,a3,a2
      if ((u32_t)(tcp_ticks - pcb->tmr) >
    e88922ee:	26e6ff63          	bgeu	a3,a4,e889256c <tcp_slowtmr+0x478>
        ++pcb_remove;
    e88922f2:	2c85                	addiw	s9,s9,1
    e88922f4:	0ffcfc93          	andi	s9,s9,255
        ++pcb_reset;
    e88922f8:	4485                	li	s1,1
    if (pcb->ooseq != NULL &&
    e88922fa:	0c0db783          	ld	a5,192(s11)
    e88922fe:	cf99                	beqz	a5,e889231c <tcp_slowtmr+0x228>
        (tcp_ticks - pcb->tmr >= (u32_t)pcb->rto * TCP_OOSEQ_TIMEOUT)) {
    e8892300:	054da683          	lw	a3,84(s11)
    e8892304:	4018                	lw	a4,0(s0)
    e8892306:	078d9783          	lh	a5,120(s11)
    if (pcb->ooseq != NULL &&
    e889230a:	9f15                	subw	a4,a4,a3
    e889230c:	4699                	li	a3,6
    e889230e:	02d787bb          	mulw	a5,a5,a3
    e8892312:	00f76563          	bltu	a4,a5,e889231c <tcp_slowtmr+0x228>
      tcp_free_ooseq(pcb);
    e8892316:	856e                	mv	a0,s11
    e8892318:	8ccff0ef          	jal	ra,e88913e4 <tcp_free_ooseq>
    if (pcb->state == SYN_RCVD) {
    e889231c:	048dc783          	lbu	a5,72(s11)
    e8892320:	470d                	li	a4,3
    e8892322:	26e79963          	bne	a5,a4,e8892594 <tcp_slowtmr+0x4a0>
      if ((u32_t)(tcp_ticks - pcb->tmr) >
    e8892326:	054da703          	lw	a4,84(s11)
    e889232a:	401c                	lw	a5,0(s0)
    e889232c:	9f99                	subw	a5,a5,a4
    e889232e:	02800713          	li	a4,40
      if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {
    e8892332:	00f76463          	bltu	a4,a5,e889233a <tcp_slowtmr+0x246>
    if (pcb_remove) {
    e8892336:	2a0c8663          	beqz	s9,e88925e2 <tcp_slowtmr+0x4ee>
      tcp_pcb_purge(pcb);
    e889233a:	856e                	mv	a0,s11
      tcp_err_fn err_fn = pcb->errf;
    e889233c:	0f8dbc83          	ld	s9,248(s11)
      tcp_pcb_purge(pcb);
    e8892340:	8c4ff0ef          	jal	ra,e8891404 <tcp_pcb_purge>
        LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs);
    e8892344:	00093783          	ld	a5,0(s2)
      if (prev != NULL) {
    e8892348:	26098063          	beqz	s3,e88925a8 <tcp_slowtmr+0x4b4>
        LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs);
    e889234c:	03b79863          	bne	a5,s11,e889237c <tcp_slowtmr+0x288>
    e8892350:	02f00593          	li	a1,47
    e8892354:	0003f517          	auipc	a0,0x3f
    e8892358:	f1c50513          	addi	a0,a0,-228 # e88d1270 <tcp_backoff+0x108>
    e889235c:	81cea0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892360:	00150693          	addi	a3,a0,1
    e8892364:	56d00613          	li	a2,1389
    e8892368:	0003f597          	auipc	a1,0x3f
    e889236c:	46058593          	addi	a1,a1,1120 # e88d17c8 <tcp_persist_backoff+0x258>
    e8892370:	0003d517          	auipc	a0,0x3d
    e8892374:	d4050513          	addi	a0,a0,-704 # e88cf0b0 <kSinTable1024+0x900>
    e8892378:	f4fe90ef          	jal	ra,e887c2c6 <eLIBs_printf>
        prev->next = pcb->next;
    e889237c:	038db783          	ld	a5,56(s11)
    e8892380:	02f9bc23          	sd	a5,56(s3)
      if (pcb_reset) {
    e8892384:	cc99                	beqz	s1,e88923a2 <tcp_slowtmr+0x2ae>
        tcp_rst(pcb, pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip,
    e8892386:	04cdd803          	lhu	a6,76(s11)
    e889238a:	04add783          	lhu	a5,74(s11)
    e889238e:	058da603          	lw	a2,88(s11)
    e8892392:	08cda583          	lw	a1,140(s11)
    e8892396:	018d8713          	addi	a4,s11,24
    e889239a:	86ee                	mv	a3,s11
    e889239c:	856e                	mv	a0,s11
    e889239e:	704030ef          	jal	ra,e8895aa2 <tcp_rst>
      err_arg = pcb->callback_arg;
    e88923a2:	040db783          	ld	a5,64(s11)
      tcp_free(pcb2);
    e88923a6:	856e                	mv	a0,s11
      pcb = pcb->next;
    e88923a8:	038db483          	ld	s1,56(s11)
      err_arg = pcb->callback_arg;
    e88923ac:	e43e                	sd	a5,8(sp)
      tcp_free(pcb2);
    e88923ae:	b8efe0ef          	jal	ra,e889073c <tcp_free>
      tcp_active_pcbs_changed = 0;
    e88923b2:	00054797          	auipc	a5,0x54
    e88923b6:	2a078f23          	sb	zero,702(a5) # e88e6670 <tcp_active_pcbs_changed>
      TCP_EVENT_ERR(last_state, err_fn, err_arg, ERR_ABRT);
    e88923ba:	000c8a63          	beqz	s9,e88923ce <tcp_slowtmr+0x2da>
    e88923be:	67a2                	ld	a5,8(sp)
    e88923c0:	55cd                	li	a1,-13
    e88923c2:	853e                	mv	a0,a5
    e88923c4:	9c82                	jalr	s9
      if (tcp_active_pcbs_changed) {
    e88923c6:	000c4783          	lbu	a5,0(s8)
    e88923ca:	d6079be3          	bnez	a5,e8892140 <tcp_slowtmr+0x4c>
    e88923ce:	8dce                	mv	s11,s3
    e88923d0:	bd71                	j	e889226c <tcp_slowtmr+0x178>
    } else if (pcb->nrtx >= TCP_MAXRTX) {
    e88923d2:	472d                	li	a4,11
    e88923d4:	bd4d                	j	e8892286 <tcp_slowtmr+0x192>
      if (pcb->persist_backoff > 0) {
    e88923d6:	105dcc83          	lbu	s9,261(s11)
    e88923da:	0c0c8c63          	beqz	s9,e88924b2 <tcp_slowtmr+0x3be>
        LWIP_ASSERT("tcp_slowtimr: persist ticking with in-flight data", pcb->unacked == NULL);
    e88923de:	0b8db783          	ld	a5,184(s11)
    e88923e2:	c79d                	beqz	a5,e8892410 <tcp_slowtmr+0x31c>
    e88923e4:	02f00593          	li	a1,47
    e88923e8:	0003f517          	auipc	a0,0x3f
    e88923ec:	e8850513          	addi	a0,a0,-376 # e88d1270 <tcp_backoff+0x108>
    e88923f0:	f89e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88923f4:	00150693          	addi	a3,a0,1
    e88923f8:	4d400613          	li	a2,1236
    e88923fc:	0003f597          	auipc	a1,0x3f
    e8892400:	35c58593          	addi	a1,a1,860 # e88d1758 <tcp_persist_backoff+0x1e8>
    e8892404:	0003d517          	auipc	a0,0x3d
    e8892408:	cac50513          	addi	a0,a0,-852 # e88cf0b0 <kSinTable1024+0x900>
    e889240c:	ebbe90ef          	jal	ra,e887c2c6 <eLIBs_printf>
        LWIP_ASSERT("tcp_slowtimr: persist ticking with empty send buffer", pcb->unsent != NULL);
    e8892410:	0b0db783          	ld	a5,176(s11)
    e8892414:	e79d                	bnez	a5,e8892442 <tcp_slowtmr+0x34e>
    e8892416:	02f00593          	li	a1,47
    e889241a:	0003f517          	auipc	a0,0x3f
    e889241e:	e5650513          	addi	a0,a0,-426 # e88d1270 <tcp_backoff+0x108>
    e8892422:	f57e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892426:	00150693          	addi	a3,a0,1
    e889242a:	4d500613          	li	a2,1237
    e889242e:	0003f597          	auipc	a1,0x3f
    e8892432:	36258593          	addi	a1,a1,866 # e88d1790 <tcp_persist_backoff+0x220>
    e8892436:	0003d517          	auipc	a0,0x3d
    e889243a:	c7a50513          	addi	a0,a0,-902 # e88cf0b0 <kSinTable1024+0x900>
    e889243e:	e89e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (pcb->persist_probe >= TCP_MAXRTX) {
    e8892442:	106dc703          	lbu	a4,262(s11)
    e8892446:	47ad                	li	a5,11
    e8892448:	e4e7e1e3          	bltu	a5,a4,e889228a <tcp_slowtmr+0x196>
          u8_t backoff_cnt = tcp_persist_backoff[pcb->persist_backoff - 1];
    e889244c:	105dc783          	lbu	a5,261(s11)
    e8892450:	0003f717          	auipc	a4,0x3f
    e8892454:	12070713          	addi	a4,a4,288 # e88d1570 <tcp_persist_backoff>
    e8892458:	37fd                	addiw	a5,a5,-1
    e889245a:	80f7470b          	lrbu	a4,a4,a5,0
          if (pcb->persist_cnt < backoff_cnt) {
    e889245e:	104dc783          	lbu	a5,260(s11)
    e8892462:	02e7e063          	bltu	a5,a4,e8892482 <tcp_slowtmr+0x38e>
            if (pcb->snd_wnd == 0) {
    e8892466:	09cda583          	lw	a1,156(s11)
    e889246a:	c58d                	beqz	a1,e8892494 <tcp_slowtmr+0x3a0>
              if (tcp_split_unsent_seg(pcb, (u16_t)pcb->snd_wnd) == ERR_OK) {
    e889246c:	3c05b58b          	extu	a1,a1,15,0
    e8892470:	856e                	mv	a0,s11
    e8892472:	64f020ef          	jal	ra,e88952c0 <tcp_split_unsent_seg>
    e8892476:	e11d                	bnez	a0,e889249c <tcp_slowtmr+0x3a8>
                if (tcp_output(pcb) == ERR_OK) {
    e8892478:	856e                	mv	a0,s11
    e889247a:	796030ef          	jal	ra,e8895c10 <tcp_output>
    e889247e:	c909                	beqz	a0,e8892490 <tcp_slowtmr+0x39c>
    e8892480:	a831                	j	e889249c <tcp_slowtmr+0x3a8>
            pcb->persist_cnt++;
    e8892482:	2785                	addiw	a5,a5,1
    e8892484:	0ff7f793          	andi	a5,a5,255
    e8892488:	10fd8223          	sb	a5,260(s11)
          if (pcb->persist_cnt >= backoff_cnt) {
    e889248c:	fce7fde3          	bgeu	a5,a4,e8892466 <tcp_slowtmr+0x372>
    pcb_remove = 0;
    e8892490:	4c81                	li	s9,0
    e8892492:	bbed                	j	e889228c <tcp_slowtmr+0x198>
              if (tcp_zero_window_probe(pcb) != ERR_OK) {
    e8892494:	856e                	mv	a0,s11
    e8892496:	78d030ef          	jal	ra,e8896422 <tcp_zero_window_probe>
    e889249a:	f97d                	bnez	a0,e8892490 <tcp_slowtmr+0x39c>
              if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) {
    e889249c:	105dc783          	lbu	a5,261(s11)
              pcb->persist_cnt = 0;
    e88924a0:	100d8223          	sb	zero,260(s11)
              if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) {
    e88924a4:	4719                	li	a4,6
    e88924a6:	fef765e3          	bltu	a4,a5,e8892490 <tcp_slowtmr+0x39c>
                pcb->persist_backoff++;
    e88924aa:	2785                	addiw	a5,a5,1
    e88924ac:	10fd82a3          	sb	a5,261(s11)
    e88924b0:	b7c5                	j	e8892490 <tcp_slowtmr+0x39c>
        if ((pcb->rtime >= 0) && (pcb->rtime < 0x7FFF)) {
    e88924b2:	068d9783          	lh	a5,104(s11)
    e88924b6:	0007871b          	sext.w	a4,a5
    e88924ba:	0a074263          	bltz	a4,e889255e <tcp_slowtmr+0x46a>
    e88924be:	fffb8693          	addi	a3,s7,-1 # 7fff <memcmp-0xe87f8001>
    e88924c2:	08d71b63          	bne	a4,a3,e8892558 <tcp_slowtmr+0x464>
          if ((tcp_rexmit_rto_prepare(pcb) == ERR_OK) || ((pcb->unacked == NULL) && (pcb->unsent != NULL))) {
    e88924c6:	856e                	mv	a0,s11
    e88924c8:	3c2030ef          	jal	ra,e889588a <tcp_rexmit_rto_prepare>
    e88924cc:	c519                	beqz	a0,e88924da <tcp_slowtmr+0x3e6>
    e88924ce:	0b8db783          	ld	a5,184(s11)
    e88924d2:	ffdd                	bnez	a5,e8892490 <tcp_slowtmr+0x39c>
    e88924d4:	0b0db783          	ld	a5,176(s11)
    e88924d8:	dfc5                	beqz	a5,e8892490 <tcp_slowtmr+0x39c>
            if (pcb->state != SYN_SENT) {
    e88924da:	048dc703          	lbu	a4,72(s11)
    e88924de:	4789                	li	a5,2
    e88924e0:	02f70d63          	beq	a4,a5,e889251a <tcp_slowtmr+0x426>
              int calc_rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[backoff_idx];
    e88924e4:	074d9783          	lh	a5,116(s11)
    e88924e8:	076d9703          	lh	a4,118(s11)
              u8_t backoff_idx = LWIP_MIN(pcb->nrtx, sizeof(tcp_backoff) - 1);
    e88924ec:	46b1                	li	a3,12
              int calc_rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[backoff_idx];
    e88924ee:	4037d79b          	sraiw	a5,a5,0x3
    e88924f2:	9fb9                	addw	a5,a5,a4
              u8_t backoff_idx = LWIP_MIN(pcb->nrtx, sizeof(tcp_backoff) - 1);
    e88924f4:	07adc703          	lbu	a4,122(s11)
    e88924f8:	00e6f363          	bgeu	a3,a4,e88924fe <tcp_slowtmr+0x40a>
    e88924fc:	4731                	li	a4,12
              int calc_rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[backoff_idx];
    e88924fe:	0ff77713          	andi	a4,a4,255
    e8892502:	80ed470b          	lrbu	a4,s10,a4,0
    e8892506:	00e797bb          	sllw	a5,a5,a4
              pcb->rto = (s16_t)LWIP_MIN(calc_rto, 0x7FFF);
    e889250a:	6721                	lui	a4,0x8
    e889250c:	1779                	addi	a4,a4,-2
    e889250e:	00f75463          	bge	a4,a5,e8892516 <tcp_slowtmr+0x422>
    e8892512:	fffb8793          	addi	a5,s7,-1
    e8892516:	06fd9c23          	sh	a5,120(s11)
            eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd);
    e889251a:	080da683          	lw	a3,128(s11)
    e889251e:	09cda783          	lw	a5,156(s11)
            pcb->rtime = 0;
    e8892522:	060d9423          	sh	zero,104(s11)
            pcb->bytes_acked = 0;
    e8892526:	0a0da623          	sw	zero,172(s11)
            eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd);
    e889252a:	00f6b733          	sltu	a4,a3,a5
    e889252e:	42e6978b          	mvnez	a5,a3,a4
            if (pcb->ssthresh < (tcpwnd_size_t)(pcb->mss << 1)) {
    e8892532:	06add683          	lhu	a3,106(s11)
            pcb->ssthresh = eff_wnd >> 1;
    e8892536:	0017d71b          	srliw	a4,a5,0x1
    e889253a:	87ba                	mv	a5,a4
            if (pcb->ssthresh < (tcpwnd_size_t)(pcb->mss << 1)) {
    e889253c:	0016961b          	slliw	a2,a3,0x1
              pcb->ssthresh = (tcpwnd_size_t)(pcb->mss << 1);
    e8892540:	00c73733          	sltu	a4,a4,a2
    e8892544:	42e6178b          	mvnez	a5,a2,a4
    e8892548:	08fda223          	sw	a5,132(s11)
            pcb->cwnd = pcb->mss;
    e889254c:	08dda023          	sw	a3,128(s11)
            tcp_rexmit_rto_commit(pcb);
    e8892550:	856e                	mv	a0,s11
    e8892552:	5b7030ef          	jal	ra,e8896308 <tcp_rexmit_rto_commit>
    e8892556:	bb1d                	j	e889228c <tcp_slowtmr+0x198>
          ++pcb->rtime;
    e8892558:	2785                	addiw	a5,a5,1
    e889255a:	06fd9423          	sh	a5,104(s11)
        if (pcb->rtime >= pcb->rto) {
    e889255e:	068d9703          	lh	a4,104(s11)
    e8892562:	078d9783          	lh	a5,120(s11)
    e8892566:	f2f745e3          	blt	a4,a5,e8892490 <tcp_slowtmr+0x39c>
    e889256a:	bfb1                	j	e88924c6 <tcp_slowtmr+0x3d2>
                 (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEP_INTVL(pcb))
    e889256c:	107dc683          	lbu	a3,263(s11)
    pcb_reset = 0;
    e8892570:	4481                	li	s1,0
                 (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEP_INTVL(pcb))
    e8892572:	2166978b          	mula	a5,a3,s6
                 / TCP_SLOW_INTERVAL) {
    e8892576:	02c7d7b3          	divu	a5,a5,a2
      } else if ((u32_t)(tcp_ticks - pcb->tmr) >
    e889257a:	d8e7f0e3          	bgeu	a5,a4,e88922fa <tcp_slowtmr+0x206>
        err = tcp_keepalive(pcb);
    e889257e:	856e                	mv	a0,s11
    e8892580:	62f030ef          	jal	ra,e88963ae <tcp_keepalive>
        if (err == ERR_OK) {
    e8892584:	d6051be3          	bnez	a0,e88922fa <tcp_slowtmr+0x206>
          pcb->keep_cnt_sent++;
    e8892588:	107dc783          	lbu	a5,263(s11)
    e889258c:	2785                	addiw	a5,a5,1
    e889258e:	10fd83a3          	sb	a5,263(s11)
    e8892592:	b3a5                	j	e88922fa <tcp_slowtmr+0x206>
    if (pcb->state == LAST_ACK) {
    e8892594:	4725                	li	a4,9
    e8892596:	dae790e3          	bne	a5,a4,e8892336 <tcp_slowtmr+0x242>
      if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {
    e889259a:	054da703          	lw	a4,84(s11)
    e889259e:	401c                	lw	a5,0(s0)
    e88925a0:	9f99                	subw	a5,a5,a4
    e88925a2:	0f000713          	li	a4,240
    e88925a6:	b371                	j	e8892332 <tcp_slowtmr+0x23e>
        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb);
    e88925a8:	03b78863          	beq	a5,s11,e88925d8 <tcp_slowtmr+0x4e4>
    e88925ac:	02f00593          	li	a1,47
    e88925b0:	0003f517          	auipc	a0,0x3f
    e88925b4:	cc050513          	addi	a0,a0,-832 # e88d1270 <tcp_backoff+0x108>
    e88925b8:	dc1e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88925bc:	00150693          	addi	a3,a0,1
    e88925c0:	57100613          	li	a2,1393
    e88925c4:	0003f597          	auipc	a1,0x3f
    e88925c8:	23458593          	addi	a1,a1,564 # e88d17f8 <tcp_persist_backoff+0x288>
    e88925cc:	0003d517          	auipc	a0,0x3d
    e88925d0:	ae450513          	addi	a0,a0,-1308 # e88cf0b0 <kSinTable1024+0x900>
    e88925d4:	cf3e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
        tcp_active_pcbs = pcb->next;
    e88925d8:	038db783          	ld	a5,56(s11)
    e88925dc:	00f93023          	sd	a5,0(s2)
    e88925e0:	b355                	j	e8892384 <tcp_slowtmr+0x290>
      ++prev->polltmr;
    e88925e2:	050dc783          	lbu	a5,80(s11)
      if (prev->polltmr >= prev->pollinterval) {
    e88925e6:	051dc703          	lbu	a4,81(s11)
      pcb = pcb->next;
    e88925ea:	038db483          	ld	s1,56(s11)
      ++prev->polltmr;
    e88925ee:	2785                	addiw	a5,a5,1
    e88925f0:	0ff7f793          	andi	a5,a5,255
    e88925f4:	04fd8823          	sb	a5,80(s11)
      if (prev->polltmr >= prev->pollinterval) {
    e88925f8:	c6e7eae3          	bltu	a5,a4,e889226c <tcp_slowtmr+0x178>
        tcp_active_pcbs_changed = 0;
    e88925fc:	00054797          	auipc	a5,0x54
    e8892600:	06078a23          	sb	zero,116(a5) # e88e6670 <tcp_active_pcbs_changed>
        prev->polltmr = 0;
    e8892604:	040d8823          	sb	zero,80(s11)
        TCP_EVENT_POLL(prev, err);
    e8892608:	0f0db783          	ld	a5,240(s11)
    e889260c:	e789                	bnez	a5,e8892616 <tcp_slowtmr+0x522>
          tcp_output(prev);
    e889260e:	856e                	mv	a0,s11
    e8892610:	600030ef          	jal	ra,e8895c10 <tcp_output>
    e8892614:	b9a1                	j	e889226c <tcp_slowtmr+0x178>
        TCP_EVENT_POLL(prev, err);
    e8892616:	040db503          	ld	a0,64(s11)
    e889261a:	85ee                	mv	a1,s11
    e889261c:	9782                	jalr	a5
        if (tcp_active_pcbs_changed) {
    e889261e:	000c4783          	lbu	a5,0(s8)
    e8892622:	b0079fe3          	bnez	a5,e8892140 <tcp_slowtmr+0x4c>
        if (err == ERR_OK) {
    e8892626:	c40513e3          	bnez	a0,e889226c <tcp_slowtmr+0x178>
    e889262a:	b7d5                	j	e889260e <tcp_slowtmr+0x51a>
    LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
    e889262c:	0484c783          	lbu	a5,72(s1)
    e8892630:	01578f63          	beq	a5,s5,e889264e <tcp_slowtmr+0x55a>
    e8892634:	02f00593          	li	a1,47
    e8892638:	854e                	mv	a0,s3
    e889263a:	d3fe90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889263e:	00150693          	addi	a3,a0,1
    e8892642:	5a100613          	li	a2,1441
    e8892646:	85da                	mv	a1,s6
    e8892648:	8552                	mv	a0,s4
    e889264a:	c7de90ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) {
    e889264e:	401c                	lw	a5,0(s0)
    e8892650:	48f8                	lw	a4,84(s1)
    e8892652:	9f99                	subw	a5,a5,a4
    e8892654:	02fbfc63          	bgeu	s7,a5,e889268c <tcp_slowtmr+0x598>
      tcp_pcb_purge(pcb);
    e8892658:	8526                	mv	a0,s1
    e889265a:	dabfe0ef          	jal	ra,e8891404 <tcp_pcb_purge>
      if (prev != NULL) {
    e889265e:	020d9a63          	bnez	s11,e8892692 <tcp_slowtmr+0x59e>
        LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb);
    e8892662:	00093783          	ld	a5,0(s2)
    e8892666:	00978f63          	beq	a5,s1,e8892684 <tcp_slowtmr+0x590>
    e889266a:	02f00593          	li	a1,47
    e889266e:	854e                	mv	a0,s3
    e8892670:	d09e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892674:	00150693          	addi	a3,a0,1
    e8892678:	5b300613          	li	a2,1459
    e889267c:	85e2                	mv	a1,s8
    e889267e:	8552                	mv	a0,s4
    e8892680:	c47e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
        tcp_tw_pcbs = pcb->next;
    e8892684:	7c9c                	ld	a5,56(s1)
    e8892686:	00f93023          	sd	a5,0(s2)
    e889268a:	a805                	j	e88926ba <tcp_slowtmr+0x5c6>
      pcb = pcb->next;
    e889268c:	8da6                	mv	s11,s1
    e889268e:	7c84                	ld	s1,56(s1)
    e8892690:	b631                	j	e889219c <tcp_slowtmr+0xa8>
        LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs);
    e8892692:	00093783          	ld	a5,0(s2)
    e8892696:	00979f63          	bne	a5,s1,e88926b4 <tcp_slowtmr+0x5c0>
    e889269a:	02f00593          	li	a1,47
    e889269e:	854e                	mv	a0,s3
    e88926a0:	cd9e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88926a4:	00150693          	addi	a3,a0,1
    e88926a8:	5af00613          	li	a2,1455
    e88926ac:	85e6                	mv	a1,s9
    e88926ae:	8552                	mv	a0,s4
    e88926b0:	c17e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
        prev->next = pcb->next;
    e88926b4:	7c9c                	ld	a5,56(s1)
    e88926b6:	02fdbc23          	sd	a5,56(s11)
      pcb = pcb->next;
    e88926ba:	0384bd03          	ld	s10,56(s1)
      tcp_free(pcb2);
    e88926be:	8526                	mv	a0,s1
    e88926c0:	87cfe0ef          	jal	ra,e889073c <tcp_free>
      pcb = pcb->next;
    e88926c4:	84ea                	mv	s1,s10
    e88926c6:	bcd9                	j	e889219c <tcp_slowtmr+0xa8>

00000000e88926c8 <tcp_tmr>:
{
    e88926c8:	1141                	addi	sp,sp,-16
    e88926ca:	e406                	sd	ra,8(sp)
  tcp_fasttmr();
    e88926cc:	8e5ff0ef          	jal	ra,e8891fb0 <tcp_fasttmr>
  if (++tcp_timer & 1) {
    e88926d0:	00054717          	auipc	a4,0x54
    e88926d4:	fbc70713          	addi	a4,a4,-68 # e88e668c <tcp_timer>
    e88926d8:	00074783          	lbu	a5,0(a4)
    e88926dc:	2785                	addiw	a5,a5,1
    e88926de:	0ff7f793          	andi	a5,a5,255
    e88926e2:	00f70023          	sb	a5,0(a4)
    e88926e6:	8b85                	andi	a5,a5,1
    e88926e8:	c789                	beqz	a5,e88926f2 <tcp_tmr+0x2a>
}
    e88926ea:	60a2                	ld	ra,8(sp)
    e88926ec:	0141                	addi	sp,sp,16
    tcp_slowtmr();
    e88926ee:	a07ff06f          	j	e88920f4 <tcp_slowtmr>
}
    e88926f2:	60a2                	ld	ra,8(sp)
    e88926f4:	0141                	addi	sp,sp,16
    e88926f6:	8082                	ret

00000000e88926f8 <tcp_get_next_optbyte>:
}

static u8_t
tcp_get_next_optbyte(void)
{
  u16_t optidx = tcp_optidx++;
    e88926f8:	00054717          	auipc	a4,0x54
    e88926fc:	fe870713          	addi	a4,a4,-24 # e88e66e0 <tcp_optidx>
    e8892700:	00075783          	lhu	a5,0(a4)
    e8892704:	0017869b          	addiw	a3,a5,1
    e8892708:	00d71023          	sh	a3,0(a4)
  if ((tcphdr_opt2 == NULL) || (optidx < tcphdr_opt1len)) {
    e889270c:	00054717          	auipc	a4,0x54
    e8892710:	fec70713          	addi	a4,a4,-20 # e88e66f8 <tcphdr_opt2>
    e8892714:	6318                	ld	a4,0(a4)
    e8892716:	c719                	beqz	a4,e8892724 <tcp_get_next_optbyte+0x2c>
    e8892718:	00054697          	auipc	a3,0x54
    e889271c:	fd86d683          	lhu	a3,-40(a3) # e88e66f0 <tcphdr_opt1len>
    e8892720:	00d7fb63          	bgeu	a5,a3,e8892736 <tcp_get_next_optbyte+0x3e>
    u8_t *opts = (u8_t *)tcphdr + TCP_HLEN;
    e8892724:	00054717          	auipc	a4,0x54
    e8892728:	fc470713          	addi	a4,a4,-60 # e88e66e8 <tcphdr>
    return opts[optidx];
    e889272c:	6318                	ld	a4,0(a4)
    e889272e:	97ba                	add	a5,a5,a4
    e8892730:	0147c503          	lbu	a0,20(a5)
    e8892734:	8082                	ret
  } else {
    u8_t idx = (u8_t)(optidx - tcphdr_opt1len);
    e8892736:	9f95                	subw	a5,a5,a3
    return tcphdr_opt2[idx];
    e8892738:	0ff7f793          	andi	a5,a5,255
    e889273c:	80f7450b          	lrbu	a0,a4,a5,0
  }
}
    e8892740:	8082                	ret

00000000e8892742 <tcp_oos_insert_segment>:
{
    e8892742:	7179                	addi	sp,sp,-48
    e8892744:	e422                	sd	s0,8(sp)
    e8892746:	e826                	sd	s1,16(sp)
    e8892748:	f406                	sd	ra,40(sp)
    e889274a:	ec4a                	sd	s2,24(sp)
    e889274c:	f04e                	sd	s3,32(sp)
    e889274e:	84aa                	mv	s1,a0
    e8892750:	842e                	mv	s0,a1
  LWIP_ASSERT("tcp_oos_insert_segment: invalid cseg", cseg != NULL);
    e8892752:	e51d                	bnez	a0,e8892780 <tcp_oos_insert_segment+0x3e>
    e8892754:	02f00593          	li	a1,47
    e8892758:	0003f517          	auipc	a0,0x3f
    e889275c:	40050513          	addi	a0,a0,1024 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892760:	c19e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892764:	00150693          	addi	a3,a0,1
    e8892768:	41f00613          	li	a2,1055
    e889276c:	0003f597          	auipc	a1,0x3f
    e8892770:	47458593          	addi	a1,a1,1140 # e88d1be0 <tcp_persist_backoff+0x670>
    e8892774:	0003d517          	auipc	a0,0x3d
    e8892778:	93c50513          	addi	a0,a0,-1732 # e88cf0b0 <kSinTable1024+0x900>
    e889277c:	b4be90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) {
    e8892780:	6c9c                	ld	a5,24(s1)
           TCP_SEQ_GEQ((seqno + cseg->len),
    e8892782:	00054997          	auipc	s3,0x54
    e8892786:	f5298993          	addi	s3,s3,-174 # e88e66d4 <seqno>
  if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) {
    e889278a:	00c7d503          	lhu	a0,12(a5)
    e889278e:	f90f40ef          	jal	ra,e8886f1e <lwip_htons>
    e8892792:	8905                	andi	a0,a0,1
    e8892794:	cd1d                	beqz	a0,e88927d2 <tcp_oos_insert_segment+0x90>
    tcp_segs_free(next);
    e8892796:	8522                	mv	a0,s0
    e8892798:	dbcfe0ef          	jal	ra,e8890d54 <tcp_segs_free>
    next = NULL;
    e889279c:	4401                	li	s0,0
    e889279e:	a0ad                	j	e8892808 <tcp_oos_insert_segment+0xc6>
      if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) {
    e88927a0:	00c55503          	lhu	a0,12(a0)
    e88927a4:	f7af40ef          	jal	ra,e8886f1e <lwip_htons>
    e88927a8:	8905                	andi	a0,a0,1
    e88927aa:	cd01                	beqz	a0,e88927c2 <tcp_oos_insert_segment+0x80>
        TCPH_SET_FLAG(cseg->tcphdr, TCP_FIN);
    e88927ac:	6c9c                	ld	a5,24(s1)
    e88927ae:	4505                	li	a0,1
    e88927b0:	00c7d903          	lhu	s2,12(a5)
    e88927b4:	f6af40ef          	jal	ra,e8886f1e <lwip_htons>
    e88927b8:	6c9c                	ld	a5,24(s1)
    e88927ba:	00a96533          	or	a0,s2,a0
    e88927be:	00a79623          	sh	a0,12(a5)
      next = next->next;
    e88927c2:	00043903          	ld	s2,0(s0)
      tcp_seg_free(old_seg);
    e88927c6:	8522                	mv	a0,s0
    e88927c8:	d68fe0ef          	jal	ra,e8890d30 <tcp_seg_free>
    while (next &&
    e88927cc:	fc0908e3          	beqz	s2,e889279c <tcp_oos_insert_segment+0x5a>
    e88927d0:	844a                	mv	s0,s2
           TCP_SEQ_GEQ((seqno + cseg->len),
    e88927d2:	6c08                	ld	a0,24(s0)
    e88927d4:	0104d783          	lhu	a5,16(s1)
    e88927d8:	0009a603          	lw	a2,0(s3)
    e88927dc:	414c                	lw	a1,4(a0)
    e88927de:	01045683          	lhu	a3,16(s0)
    e88927e2:	00c7873b          	addw	a4,a5,a2
    e88927e6:	9ead                	addw	a3,a3,a1
    while (next &&
    e88927e8:	40d707bb          	subw	a5,a4,a3
    e88927ec:	fa07dae3          	bgez	a5,e88927a0 <tcp_oos_insert_segment+0x5e>
    if (next &&
    e88927f0:	40b707bb          	subw	a5,a4,a1
    e88927f4:	00f05a63          	blez	a5,e8892808 <tcp_oos_insert_segment+0xc6>
      cseg->len = (u16_t)(next->tcphdr->seqno - seqno);
    e88927f8:	9d91                	subw	a1,a1,a2
      pbuf_realloc(cseg->p, cseg->len);
    e88927fa:	6488                	ld	a0,8(s1)
      cseg->len = (u16_t)(next->tcphdr->seqno - seqno);
    e88927fc:	3c05b58b          	extu	a1,a1,15,0
    e8892800:	00b49823          	sh	a1,16(s1)
      pbuf_realloc(cseg->p, cseg->len);
    e8892804:	ceffc0ef          	jal	ra,e888f4f2 <pbuf_realloc>
  cseg->next = next;
    e8892808:	e080                	sd	s0,0(s1)
}
    e889280a:	70a2                	ld	ra,40(sp)
    e889280c:	6422                	ld	s0,8(sp)
    e889280e:	64c2                	ld	s1,16(sp)
    e8892810:	6962                	ld	s2,24(sp)
    e8892812:	7982                	ld	s3,32(sp)
    e8892814:	6145                	addi	sp,sp,48
    e8892816:	8082                	ret

00000000e8892818 <tcp_parseopt>:
 *
 * @param pcb the tcp_pcb for which a segment arrived
 */
static void
tcp_parseopt(struct tcp_pcb *pcb)
{
    e8892818:	711d                	addi	sp,sp,-96
    e889281a:	e8a2                	sd	s0,80(sp)
    e889281c:	ec86                	sd	ra,88(sp)
    e889281e:	e4a6                	sd	s1,72(sp)
    e8892820:	e0ca                	sd	s2,64(sp)
    e8892822:	fc4e                	sd	s3,56(sp)
    e8892824:	f852                	sd	s4,48(sp)
    e8892826:	f456                	sd	s5,40(sp)
    e8892828:	f05a                	sd	s6,32(sp)
    e889282a:	ec5e                	sd	s7,24(sp)
    e889282c:	e862                	sd	s8,16(sp)
    e889282e:	e466                	sd	s9,8(sp)
    e8892830:	e06a                	sd	s10,0(sp)
    e8892832:	842a                	mv	s0,a0
  u16_t mss;
#if LWIP_TCP_TIMESTAMPS
  u32_t tsval;
#endif

  LWIP_ASSERT("tcp_parseopt: invalid pcb", pcb != NULL);
    e8892834:	e51d                	bnez	a0,e8892862 <tcp_parseopt+0x4a>
    e8892836:	02f00593          	li	a1,47
    e889283a:	0003f517          	auipc	a0,0x3f
    e889283e:	31e50513          	addi	a0,a0,798 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892842:	b37e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892846:	00150693          	addi	a3,a0,1
    e889284a:	77d00613          	li	a2,1917
    e889284e:	0003f597          	auipc	a1,0x3f
    e8892852:	3ba58593          	addi	a1,a1,954 # e88d1c08 <tcp_persist_backoff+0x698>
    e8892856:	0003d517          	auipc	a0,0x3d
    e889285a:	85a50513          	addi	a0,a0,-1958 # e88cf0b0 <kSinTable1024+0x900>
    e889285e:	a69e90ef          	jal	ra,e887c2c6 <eLIBs_printf>

  /* Parse the TCP MSS option, if present. */
  if (tcphdr_optlen != 0) {
    e8892862:	00054997          	auipc	s3,0x54
    e8892866:	e9e98993          	addi	s3,s3,-354 # e88e6700 <tcphdr_optlen>
    e889286a:	0009d783          	lhu	a5,0(s3)
    e889286e:	cf8d                	beqz	a5,e88928a8 <tcp_parseopt+0x90>
              pcb->snd_scale = 14U;
            }
            pcb->rcv_scale = TCP_RCV_SCALE;
            tcp_set_flags(pcb, TF_WND_SCALE);
            /* window scaling is enabled, we can use the full receive window */
            LWIP_ASSERT("window not at default value", pcb->rcv_wnd == TCPWND_MIN16(TCP_WND));
    e8892870:	6a19                	lui	s4,0x6
    for (tcp_optidx = 0; tcp_optidx < tcphdr_optlen; ) {
    e8892872:	00054797          	auipc	a5,0x54
    e8892876:	e6079723          	sh	zero,-402(a5) # e88e66e0 <tcp_optidx>
    e889287a:	00054917          	auipc	s2,0x54
    e889287e:	e6690913          	addi	s2,s2,-410 # e88e66e0 <tcp_optidx>
      switch (opt) {
    e8892882:	4a85                	li	s5,1
    e8892884:	4b05                	li	s6,1
    e8892886:	4b89                	li	s7,2
          if ((flags & TCP_SYN) && !(pcb->flags & TF_WND_SCALE)) {
    e8892888:	00054c17          	auipc	s8,0x54
    e889288c:	e14c0c13          	addi	s8,s8,-492 # e88e669c <flags>
            LWIP_ASSERT("window not at default value", pcb->rcv_wnd == TCPWND_MIN16(TCP_WND));
    e8892890:	a00a0a13          	addi	s4,s4,-1536 # 5a00 <memcmp-0xe87fa600>
            LWIP_ASSERT("window not at default value", pcb->rcv_ann_wnd == TCPWND_MIN16(TCP_WND));
            pcb->rcv_wnd = pcb->rcv_ann_wnd = TCP_WND;
    e8892894:	0003fc97          	auipc	s9,0x3f
    e8892898:	8ccc8c93          	addi	s9,s9,-1844 # e88d1160 <memp_pools+0x970>
    for (tcp_optidx = 0; tcp_optidx < tcphdr_optlen; ) {
    e889289c:	00095783          	lhu	a5,0(s2)
    e88928a0:	0009dd03          	lhu	s10,0(s3)
    e88928a4:	03a7e063          	bltu	a5,s10,e88928c4 <tcp_parseopt+0xac>
             can skip past them. */
          tcp_optidx += data - 2;
      }
    }
  }
}
    e88928a8:	60e6                	ld	ra,88(sp)
    e88928aa:	6446                	ld	s0,80(sp)
    e88928ac:	64a6                	ld	s1,72(sp)
    e88928ae:	6906                	ld	s2,64(sp)
    e88928b0:	79e2                	ld	s3,56(sp)
    e88928b2:	7a42                	ld	s4,48(sp)
    e88928b4:	7aa2                	ld	s5,40(sp)
    e88928b6:	7b02                	ld	s6,32(sp)
    e88928b8:	6be2                	ld	s7,24(sp)
    e88928ba:	6c42                	ld	s8,16(sp)
    e88928bc:	6ca2                	ld	s9,8(sp)
    e88928be:	6d02                	ld	s10,0(sp)
    e88928c0:	6125                	addi	sp,sp,96
    e88928c2:	8082                	ret
      u8_t opt = tcp_get_next_optbyte();
    e88928c4:	e35ff0ef          	jal	ra,e88926f8 <tcp_get_next_optbyte>
    e88928c8:	84aa                	mv	s1,a0
      switch (opt) {
    e88928ca:	fd5509e3          	beq	a0,s5,e889289c <tcp_parseopt+0x84>
    e88928ce:	dd69                	beqz	a0,e88928a8 <tcp_parseopt+0x90>
    e88928d0:	03750063          	beq	a0,s7,e88928f0 <tcp_parseopt+0xd8>
    e88928d4:	478d                	li	a5,3
    e88928d6:	04f50f63          	beq	a0,a5,e8892934 <tcp_parseopt+0x11c>
          data = tcp_get_next_optbyte();
    e88928da:	e1fff0ef          	jal	ra,e88926f8 <tcp_get_next_optbyte>
          if (data < 2) {
    e88928de:	fcab75e3          	bgeu	s6,a0,e88928a8 <tcp_parseopt+0x90>
          tcp_optidx += data - 2;
    e88928e2:	00095783          	lhu	a5,0(s2)
    e88928e6:	9fa9                	addw	a5,a5,a0
    e88928e8:	37f9                	addiw	a5,a5,-2
    e88928ea:	00f91023          	sh	a5,0(s2)
    e88928ee:	b77d                	j	e889289c <tcp_parseopt+0x84>
          if (tcp_get_next_optbyte() != LWIP_TCP_OPT_LEN_MSS || (tcp_optidx - 2 + LWIP_TCP_OPT_LEN_MSS) > tcphdr_optlen) {
    e88928f0:	e09ff0ef          	jal	ra,e88926f8 <tcp_get_next_optbyte>
    e88928f4:	4791                	li	a5,4
    e88928f6:	faf519e3          	bne	a0,a5,e88928a8 <tcp_parseopt+0x90>
    e88928fa:	00095783          	lhu	a5,0(s2)
    e88928fe:	0789                	addi	a5,a5,2
    e8892900:	fafd44e3          	blt	s10,a5,e88928a8 <tcp_parseopt+0x90>
          mss = (u16_t)(tcp_get_next_optbyte() << 8);
    e8892904:	df5ff0ef          	jal	ra,e88926f8 <tcp_get_next_optbyte>
    e8892908:	0085151b          	slliw	a0,a0,0x8
    e889290c:	3c05348b          	extu	s1,a0,15,0
          mss |= tcp_get_next_optbyte();
    e8892910:	de9ff0ef          	jal	ra,e88926f8 <tcp_get_next_optbyte>
    e8892914:	8d45                	or	a0,a0,s1
    e8892916:	3c05350b          	extu	a0,a0,15,0
          pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss;
    e889291a:	fff5079b          	addiw	a5,a0,-1
    e889291e:	3c07b78b          	extu	a5,a5,15,0
    e8892922:	59f00713          	li	a4,1439
    e8892926:	00f77463          	bgeu	a4,a5,e889292e <tcp_parseopt+0x116>
    e889292a:	5a000513          	li	a0,1440
    e889292e:	06a41523          	sh	a0,106(s0)
          break;
    e8892932:	b7ad                	j	e889289c <tcp_parseopt+0x84>
          if (tcp_get_next_optbyte() != LWIP_TCP_OPT_LEN_WS || (tcp_optidx - 2 + LWIP_TCP_OPT_LEN_WS) > tcphdr_optlen) {
    e8892934:	dc5ff0ef          	jal	ra,e88926f8 <tcp_get_next_optbyte>
    e8892938:	f69518e3          	bne	a0,s1,e88928a8 <tcp_parseopt+0x90>
    e889293c:	00095783          	lhu	a5,0(s2)
    e8892940:	0785                	addi	a5,a5,1
    e8892942:	f6fd43e3          	blt	s10,a5,e88928a8 <tcp_parseopt+0x90>
          data = tcp_get_next_optbyte();
    e8892946:	db3ff0ef          	jal	ra,e88926f8 <tcp_get_next_optbyte>
          if ((flags & TCP_SYN) && !(pcb->flags & TF_WND_SCALE)) {
    e889294a:	000c4783          	lbu	a5,0(s8)
    e889294e:	8b89                	andi	a5,a5,2
    e8892950:	d7b1                	beqz	a5,e889289c <tcp_parseopt+0x84>
    e8892952:	04e45783          	lhu	a5,78(s0)
    e8892956:	1007f713          	andi	a4,a5,256
    e889295a:	f329                	bnez	a4,e889289c <tcp_parseopt+0x84>
            if (pcb->snd_scale > 14U) {
    e889295c:	4739                	li	a4,14
    e889295e:	08a76263          	bltu	a4,a0,e88929e2 <tcp_parseopt+0x1ca>
            pcb->snd_scale = data;
    e8892962:	10a40423          	sb	a0,264(s0)
            tcp_set_flags(pcb, TF_WND_SCALE);
    e8892966:	1007e793          	ori	a5,a5,256
            pcb->rcv_scale = TCP_RCV_SCALE;
    e889296a:	4705                	li	a4,1
            tcp_set_flags(pcb, TF_WND_SCALE);
    e889296c:	04f41723          	sh	a5,78(s0)
            LWIP_ASSERT("window not at default value", pcb->rcv_wnd == TCPWND_MIN16(TCP_WND));
    e8892970:	4c7c                	lw	a5,92(s0)
            pcb->rcv_scale = TCP_RCV_SCALE;
    e8892972:	10e404a3          	sb	a4,265(s0)
            LWIP_ASSERT("window not at default value", pcb->rcv_wnd == TCPWND_MIN16(TCP_WND));
    e8892976:	03478863          	beq	a5,s4,e88929a6 <tcp_parseopt+0x18e>
    e889297a:	02f00593          	li	a1,47
    e889297e:	0003f517          	auipc	a0,0x3f
    e8892982:	1da50513          	addi	a0,a0,474 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892986:	9f3e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889298a:	00150693          	addi	a3,a0,1
    e889298e:	7ad00613          	li	a2,1965
    e8892992:	0003f597          	auipc	a1,0x3f
    e8892996:	29658593          	addi	a1,a1,662 # e88d1c28 <tcp_persist_backoff+0x6b8>
    e889299a:	0003c517          	auipc	a0,0x3c
    e889299e:	71650513          	addi	a0,a0,1814 # e88cf0b0 <kSinTable1024+0x900>
    e88929a2:	925e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
            LWIP_ASSERT("window not at default value", pcb->rcv_ann_wnd == TCPWND_MIN16(TCP_WND));
    e88929a6:	503c                	lw	a5,96(s0)
    e88929a8:	03478863          	beq	a5,s4,e88929d8 <tcp_parseopt+0x1c0>
    e88929ac:	02f00593          	li	a1,47
    e88929b0:	0003f517          	auipc	a0,0x3f
    e88929b4:	1a850513          	addi	a0,a0,424 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e88929b8:	9c1e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88929bc:	00150693          	addi	a3,a0,1
    e88929c0:	7ae00613          	li	a2,1966
    e88929c4:	0003f597          	auipc	a1,0x3f
    e88929c8:	26458593          	addi	a1,a1,612 # e88d1c28 <tcp_persist_backoff+0x6b8>
    e88929cc:	0003c517          	auipc	a0,0x3c
    e88929d0:	6e450513          	addi	a0,a0,1764 # e88cf0b0 <kSinTable1024+0x900>
    e88929d4:	8f3e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
            pcb->rcv_wnd = pcb->rcv_ann_wnd = TCP_WND;
    e88929d8:	000cb783          	ld	a5,0(s9)
    e88929dc:	04f43e23          	sd	a5,92(s0)
    e88929e0:	bd75                	j	e889289c <tcp_parseopt+0x84>
              pcb->snd_scale = 14U;
    e88929e2:	4739                	li	a4,14
    e88929e4:	10e40423          	sb	a4,264(s0)
    e88929e8:	bfbd                	j	e8892966 <tcp_parseopt+0x14e>

00000000e88929ea <tcp_input_delayed_close>:
{
    e88929ea:	1141                	addi	sp,sp,-16
    e88929ec:	e022                	sd	s0,0(sp)
    e88929ee:	e406                	sd	ra,8(sp)
    e88929f0:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_input_delayed_close: invalid pcb", pcb != NULL);
    e88929f2:	e51d                	bnez	a0,e8892a20 <tcp_input_delayed_close+0x36>
    e88929f4:	02f00593          	li	a1,47
    e88929f8:	0003f517          	auipc	a0,0x3f
    e88929fc:	16050513          	addi	a0,a0,352 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892a00:	979e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892a04:	00150693          	addi	a3,a0,1
    e8892a08:	25a00613          	li	a2,602
    e8892a0c:	0003f597          	auipc	a1,0x3f
    e8892a10:	12458593          	addi	a1,a1,292 # e88d1b30 <tcp_persist_backoff+0x5c0>
    e8892a14:	0003c517          	auipc	a0,0x3c
    e8892a18:	69c50513          	addi	a0,a0,1692 # e88cf0b0 <kSinTable1024+0x900>
    e8892a1c:	8abe90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (recv_flags & TF_CLOSED) {
    e8892a20:	00054797          	auipc	a5,0x54
    e8892a24:	cb07c783          	lbu	a5,-848(a5) # e88e66d0 <recv_flags>
    e8892a28:	8bc1                	andi	a5,a5,16
  return 0;
    e8892a2a:	4501                	li	a0,0
  if (recv_flags & TF_CLOSED) {
    e8892a2c:	c78d                	beqz	a5,e8892a56 <tcp_input_delayed_close+0x6c>
    if (!(pcb->flags & TF_RXCLOSED)) {
    e8892a2e:	04e45783          	lhu	a5,78(s0)
    e8892a32:	8bc1                	andi	a5,a5,16
    e8892a34:	e791                	bnez	a5,e8892a40 <tcp_input_delayed_close+0x56>
      TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_CLSD);
    e8892a36:	7c7c                	ld	a5,248(s0)
    e8892a38:	c781                	beqz	a5,e8892a40 <tcp_input_delayed_close+0x56>
    e8892a3a:	6028                	ld	a0,64(s0)
    e8892a3c:	55c5                	li	a1,-15
    e8892a3e:	9782                	jalr	a5
    tcp_pcb_remove(&tcp_active_pcbs, pcb);
    e8892a40:	85a2                	mv	a1,s0
    e8892a42:	00054517          	auipc	a0,0x54
    e8892a46:	c2650513          	addi	a0,a0,-986 # e88e6668 <tcp_active_pcbs>
    e8892a4a:	a45fe0ef          	jal	ra,e889148e <tcp_pcb_remove>
    tcp_free(pcb);
    e8892a4e:	8522                	mv	a0,s0
    e8892a50:	cedfd0ef          	jal	ra,e889073c <tcp_free>
    e8892a54:	4505                	li	a0,1
}
    e8892a56:	60a2                	ld	ra,8(sp)
    e8892a58:	6402                	ld	s0,0(sp)
    e8892a5a:	0141                	addi	sp,sp,16
    e8892a5c:	8082                	ret

00000000e8892a5e <tcp_free_acked_segments.isra.2>:
tcp_free_acked_segments(struct tcp_pcb *pcb, struct tcp_seg *seg_list, const char *dbg_list_name,
    e8892a5e:	711d                	addi	sp,sp,-96
    e8892a60:	e8a2                	sd	s0,80(sp)
    e8892a62:	e0ca                	sd	s2,64(sp)
    e8892a64:	fc4e                	sd	s3,56(sp)
    e8892a66:	f852                	sd	s4,48(sp)
    e8892a68:	f456                	sd	s5,40(sp)
    e8892a6a:	f05a                	sd	s6,32(sp)
    e8892a6c:	ec5e                	sd	s7,24(sp)
    e8892a6e:	e862                	sd	s8,16(sp)
    e8892a70:	ec86                	sd	ra,88(sp)
    e8892a72:	e4a6                	sd	s1,72(sp)
    e8892a74:	e466                	sd	s9,8(sp)
    e8892a76:	892a                	mv	s2,a0
    e8892a78:	8ab2                	mv	s5,a2
    e8892a7a:	842e                	mv	s0,a1
         TCP_SEQ_LEQ(lwip_ntohl(seg_list->tcphdr->seqno) +
    e8892a7c:	00054a17          	auipc	s4,0x54
    e8892a80:	c1ca0a13          	addi	s4,s4,-996 # e88e6698 <ackno>
    LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= clen));
    e8892a84:	0003fb17          	auipc	s6,0x3f
    e8892a88:	0d4b0b13          	addi	s6,s6,212 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892a8c:	0003fb97          	auipc	s7,0x3f
    e8892a90:	e64b8b93          	addi	s7,s7,-412 # e88d18f0 <tcp_persist_backoff+0x380>
    e8892a94:	0003cc17          	auipc	s8,0x3c
    e8892a98:	61cc0c13          	addi	s8,s8,1564 # e88cf0b0 <kSinTable1024+0x900>
    recv_acked = (tcpwnd_size_t)(recv_acked + next->len);
    e8892a9c:	00054997          	auipc	s3,0x54
    e8892aa0:	c2498993          	addi	s3,s3,-988 # e88e66c0 <recv_acked>
  while (seg_list != NULL &&
    e8892aa4:	c841                	beqz	s0,e8892b34 <tcp_free_acked_segments.isra.2+0xd6>
         TCP_SEQ_LEQ(lwip_ntohl(seg_list->tcphdr->seqno) +
    e8892aa6:	6c1c                	ld	a5,24(s0)
    e8892aa8:	43c8                	lw	a0,4(a5)
    e8892aaa:	c84f40ef          	jal	ra,e8886f2e <lwip_htonl>
    e8892aae:	00050c9b          	sext.w	s9,a0
    e8892ab2:	6c1c                	ld	a5,24(s0)
    e8892ab4:	01045483          	lhu	s1,16(s0)
    e8892ab8:	00c7d503          	lhu	a0,12(a5)
    e8892abc:	c62f40ef          	jal	ra,e8886f1e <lwip_htons>
    e8892ac0:	890d                	andi	a0,a0,3
    e8892ac2:	000a2783          	lw	a5,0(s4)
    e8892ac6:	00a03533          	snez	a0,a0
    e8892aca:	40f487bb          	subw	a5,s1,a5
    e8892ace:	019787bb          	addw	a5,a5,s9
  while (seg_list != NULL &&
    e8892ad2:	9fa9                	addw	a5,a5,a0
    e8892ad4:	06f04163          	bgtz	a5,e8892b36 <tcp_free_acked_segments.isra.2+0xd8>
    clen = pbuf_clen(next->p);
    e8892ad8:	f8a4448b          	ldd	s1,a0,(s0),0,4
    e8892adc:	b77fc0ef          	jal	ra,e888f652 <pbuf_clen>
    LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= clen));
    e8892ae0:	0005079b          	sext.w	a5,a0
    e8892ae4:	00095703          	lhu	a4,0(s2)
    clen = pbuf_clen(next->p);
    e8892ae8:	8caa                	mv	s9,a0
    LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= clen));
    e8892aea:	00f77f63          	bgeu	a4,a5,e8892b08 <tcp_free_acked_segments.isra.2+0xaa>
    e8892aee:	02f00593          	li	a1,47
    e8892af2:	855a                	mv	a0,s6
    e8892af4:	885e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892af8:	00150693          	addi	a3,a0,1
    e8892afc:	45700613          	li	a2,1111
    e8892b00:	85de                	mv	a1,s7
    e8892b02:	8562                	mv	a0,s8
    e8892b04:	fc2e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pcb->snd_queuelen = (u16_t)(pcb->snd_queuelen - clen);
    e8892b08:	00095503          	lhu	a0,0(s2)
    recv_acked = (tcpwnd_size_t)(recv_acked + next->len);
    e8892b0c:	0009a703          	lw	a4,0(s3)
    pcb->snd_queuelen = (u16_t)(pcb->snd_queuelen - clen);
    e8892b10:	4195053b          	subw	a0,a0,s9
    e8892b14:	00a91023          	sh	a0,0(s2)
    recv_acked = (tcpwnd_size_t)(recv_acked + next->len);
    e8892b18:	01045783          	lhu	a5,16(s0)
    tcp_seg_free(next);
    e8892b1c:	8522                	mv	a0,s0
    recv_acked = (tcpwnd_size_t)(recv_acked + next->len);
    e8892b1e:	9fb9                	addw	a5,a5,a4
    e8892b20:	00f9a023          	sw	a5,0(s3)
    tcp_seg_free(next);
    e8892b24:	a0cfe0ef          	jal	ra,e8890d30 <tcp_seg_free>
    if (pcb->snd_queuelen != 0) {
    e8892b28:	00095783          	lhu	a5,0(s2)
    e8892b2c:	cbb1                	beqz	a5,e8892b80 <tcp_free_acked_segments.isra.2+0x122>
      LWIP_ASSERT("tcp_receive: valid queue length",
    e8892b2e:	e8a9                	bnez	s1,e8892b80 <tcp_free_acked_segments.isra.2+0x122>
    e8892b30:	020a8163          	beqz	s5,e8892b52 <tcp_free_acked_segments.isra.2+0xf4>
    seg_list = seg_list->next;
    e8892b34:	4401                	li	s0,0
}
    e8892b36:	8522                	mv	a0,s0
    e8892b38:	60e6                	ld	ra,88(sp)
    e8892b3a:	6446                	ld	s0,80(sp)
    e8892b3c:	64a6                	ld	s1,72(sp)
    e8892b3e:	6906                	ld	s2,64(sp)
    e8892b40:	79e2                	ld	s3,56(sp)
    e8892b42:	7a42                	ld	s4,48(sp)
    e8892b44:	7aa2                	ld	s5,40(sp)
    e8892b46:	7b02                	ld	s6,32(sp)
    e8892b48:	6be2                	ld	s7,24(sp)
    e8892b4a:	6c42                	ld	s8,16(sp)
    e8892b4c:	6ca2                	ld	s9,8(sp)
    e8892b4e:	6125                	addi	sp,sp,96
    e8892b50:	8082                	ret
      LWIP_ASSERT("tcp_receive: valid queue length",
    e8892b52:	02f00593          	li	a1,47
    e8892b56:	0003f517          	auipc	a0,0x3f
    e8892b5a:	00250513          	addi	a0,a0,2 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892b5e:	81be90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892b62:	00150693          	addi	a3,a0,1
    e8892b66:	46200613          	li	a2,1122
    e8892b6a:	0003f597          	auipc	a1,0x3f
    e8892b6e:	dae58593          	addi	a1,a1,-594 # e88d1918 <tcp_persist_backoff+0x3a8>
    e8892b72:	0003c517          	auipc	a0,0x3c
    e8892b76:	53e50513          	addi	a0,a0,1342 # e88cf0b0 <kSinTable1024+0x900>
    e8892b7a:	f4ce90ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8892b7e:	bf5d                	j	e8892b34 <tcp_free_acked_segments.isra.2+0xd6>
tcp_free_acked_segments(struct tcp_pcb *pcb, struct tcp_seg *seg_list, const char *dbg_list_name,
    e8892b80:	8426                	mv	s0,s1
    e8892b82:	b70d                	j	e8892aa4 <tcp_free_acked_segments.isra.2+0x46>

00000000e8892b84 <tcp_receive>:
{
    e8892b84:	7159                	addi	sp,sp,-112
    e8892b86:	f0a2                	sd	s0,96(sp)
    e8892b88:	f486                	sd	ra,104(sp)
    e8892b8a:	eca6                	sd	s1,88(sp)
    e8892b8c:	e8ca                	sd	s2,80(sp)
    e8892b8e:	e4ce                	sd	s3,72(sp)
    e8892b90:	e0d2                	sd	s4,64(sp)
    e8892b92:	fc56                	sd	s5,56(sp)
    e8892b94:	f85a                	sd	s6,48(sp)
    e8892b96:	f45e                	sd	s7,40(sp)
    e8892b98:	f062                	sd	s8,32(sp)
    e8892b9a:	ec66                	sd	s9,24(sp)
    e8892b9c:	e86a                	sd	s10,16(sp)
    e8892b9e:	e46e                	sd	s11,8(sp)
    e8892ba0:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_receive: invalid pcb", pcb != NULL);
    e8892ba2:	e51d                	bnez	a0,e8892bd0 <tcp_receive+0x4c>
    e8892ba4:	02f00593          	li	a1,47
    e8892ba8:	0003f517          	auipc	a0,0x3f
    e8892bac:	fb050513          	addi	a0,a0,-80 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892bb0:	fc8e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892bb4:	00150693          	addi	a3,a0,1
    e8892bb8:	47b00613          	li	a2,1147
    e8892bbc:	0003f597          	auipc	a1,0x3f
    e8892bc0:	08c58593          	addi	a1,a1,140 # e88d1c48 <tcp_persist_backoff+0x6d8>
    e8892bc4:	0003c517          	auipc	a0,0x3c
    e8892bc8:	4ec50513          	addi	a0,a0,1260 # e88cf0b0 <kSinTable1024+0x900>
    e8892bcc:	efae90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED);
    e8892bd0:	04844703          	lbu	a4,72(s0)
    e8892bd4:	478d                	li	a5,3
    e8892bd6:	02e7e863          	bltu	a5,a4,e8892c06 <tcp_receive+0x82>
    e8892bda:	02f00593          	li	a1,47
    e8892bde:	0003f517          	auipc	a0,0x3f
    e8892be2:	f7a50513          	addi	a0,a0,-134 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892be6:	f92e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892bea:	00150693          	addi	a3,a0,1
    e8892bee:	47c00613          	li	a2,1148
    e8892bf2:	0003f597          	auipc	a1,0x3f
    e8892bf6:	07658593          	addi	a1,a1,118 # e88d1c68 <tcp_persist_backoff+0x6f8>
    e8892bfa:	0003c517          	auipc	a0,0x3c
    e8892bfe:	4b650513          	addi	a0,a0,1206 # e88cf0b0 <kSinTable1024+0x900>
    e8892c02:	ec4e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (flags & TCP_ACK) {
    e8892c06:	00054797          	auipc	a5,0x54
    e8892c0a:	a967c783          	lbu	a5,-1386(a5) # e88e669c <flags>
    e8892c0e:	8bc1                	andi	a5,a5,16
    e8892c10:	00054917          	auipc	s2,0x54
    e8892c14:	ac490913          	addi	s2,s2,-1340 # e88e66d4 <seqno>
    e8892c18:	00054997          	auipc	s3,0x54
    e8892c1c:	aea98993          	addi	s3,s3,-1302 # e88e6702 <tcplen>
    e8892c20:	14078763          	beqz	a5,e8892d6e <tcp_receive+0x1ea>
    e8892c24:	00092603          	lw	a2,0(s2)
    if (TCP_SEQ_LT(pcb->snd_wl1, seqno) ||
    e8892c28:	09042703          	lw	a4,144(s0)
    e8892c2c:	00054497          	auipc	s1,0x54
    e8892c30:	a6c48493          	addi	s1,s1,-1428 # e88e6698 <ackno>
    right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2;
    e8892c34:	09c42683          	lw	a3,156(s0)
    if (TCP_SEQ_LT(pcb->snd_wl1, seqno) ||
    e8892c38:	40c705bb          	subw	a1,a4,a2
    right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2;
    e8892c3c:	09442503          	lw	a0,148(s0)
    if (TCP_SEQ_LT(pcb->snd_wl1, seqno) ||
    e8892c40:	409c                	lw	a5,0(s1)
    e8892c42:	0205c763          	bltz	a1,e8892c70 <tcp_receive+0xec>
    e8892c46:	00c71663          	bne	a4,a2,e8892c52 <tcp_receive+0xce>
        (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) ||
    e8892c4a:	40f5073b          	subw	a4,a0,a5
    e8892c4e:	02074163          	bltz	a4,e8892c70 <tcp_receive+0xec>
    e8892c52:	04f51663          	bne	a0,a5,e8892c9e <tcp_receive+0x11a>
        (pcb->snd_wl2 == ackno && (u32_t)SND_WND_SCALE(pcb, tcphdr->wnd) > pcb->snd_wnd)) {
    e8892c56:	00054717          	auipc	a4,0x54
    e8892c5a:	a9270713          	addi	a4,a4,-1390 # e88e66e8 <tcphdr>
    e8892c5e:	6318                	ld	a4,0(a4)
    e8892c60:	10844583          	lbu	a1,264(s0)
    e8892c64:	00e75703          	lhu	a4,14(a4)
    e8892c68:	00b7173b          	sllw	a4,a4,a1
    e8892c6c:	02e6f963          	bgeu	a3,a4,e8892c9e <tcp_receive+0x11a>
      pcb->snd_wnd = SND_WND_SCALE(pcb, tcphdr->wnd);
    e8892c70:	00054717          	auipc	a4,0x54
    e8892c74:	a7870713          	addi	a4,a4,-1416 # e88e66e8 <tcphdr>
    e8892c78:	6318                	ld	a4,0(a4)
    e8892c7a:	10844583          	lbu	a1,264(s0)
      if (pcb->snd_wnd_max < pcb->snd_wnd) {
    e8892c7e:	0a042803          	lw	a6,160(s0)
      pcb->snd_wnd = SND_WND_SCALE(pcb, tcphdr->wnd);
    e8892c82:	00e75703          	lhu	a4,14(a4)
    e8892c86:	00b715bb          	sllw	a1,a4,a1
    e8892c8a:	08b42e23          	sw	a1,156(s0)
      if (pcb->snd_wnd_max < pcb->snd_wnd) {
    e8892c8e:	00b87463          	bgeu	a6,a1,e8892c96 <tcp_receive+0x112>
        pcb->snd_wnd_max = pcb->snd_wnd;
    e8892c92:	0ab42023          	sw	a1,160(s0)
      pcb->snd_wl1 = seqno;
    e8892c96:	08c42823          	sw	a2,144(s0)
      pcb->snd_wl2 = ackno;
    e8892c9a:	08f42a23          	sw	a5,148(s0)
    if (TCP_SEQ_LEQ(ackno, pcb->lastack)) {
    e8892c9e:	07c42803          	lw	a6,124(s0)
    e8892ca2:	410785bb          	subw	a1,a5,a6
    e8892ca6:	862e                	mv	a2,a1
    e8892ca8:	3eb04563          	bgtz	a1,e8893092 <tcp_receive+0x50e>
      if (tcplen == 0) {
    e8892cac:	0009d703          	lhu	a4,0(s3)
    e8892cb0:	3c071e63          	bnez	a4,e889308c <tcp_receive+0x508>
        if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge) {
    e8892cb4:	09442703          	lw	a4,148(s0)
    e8892cb8:	09c42603          	lw	a2,156(s0)
    e8892cbc:	9ea9                	addw	a3,a3,a0
    e8892cbe:	9f31                	addw	a4,a4,a2
    e8892cc0:	3cd71663          	bne	a4,a3,e889308c <tcp_receive+0x508>
          if (pcb->rtime >= 0) {
    e8892cc4:	06841703          	lh	a4,104(s0)
    e8892cc8:	3c074263          	bltz	a4,e889308c <tcp_receive+0x508>
            if (pcb->lastack == ackno) {
    e8892ccc:	3cf81063          	bne	a6,a5,e889308c <tcp_receive+0x508>
              if ((u8_t)(pcb->dupacks + 1) > pcb->dupacks) {
    e8892cd0:	07b44703          	lbu	a4,123(s0)
    e8892cd4:	0017079b          	addiw	a5,a4,1
    e8892cd8:	0ff7f693          	andi	a3,a5,255
    e8892cdc:	00d77463          	bgeu	a4,a3,e8892ce4 <tcp_receive+0x160>
                ++pcb->dupacks;
    e8892ce0:	06f40da3          	sb	a5,123(s0)
              if (pcb->dupacks > 3) {
    e8892ce4:	07b44703          	lbu	a4,123(s0)
    e8892ce8:	478d                	li	a5,3
    e8892cea:	00e7fd63          	bgeu	a5,a4,e8892d04 <tcp_receive+0x180>
                TCP_WND_INC(pcb->cwnd, pcb->mss);
    e8892cee:	08042703          	lw	a4,128(s0)
    e8892cf2:	06a45783          	lhu	a5,106(s0)
    e8892cf6:	9fb9                	addw	a5,a5,a4
    e8892cf8:	00e7f363          	bgeu	a5,a4,e8892cfe <tcp_receive+0x17a>
    e8892cfc:	57fd                	li	a5,-1
    e8892cfe:	08f42023          	sw	a5,128(s0)
              if (pcb->dupacks >= 3) {
    e8892d02:	a019                	j	e8892d08 <tcp_receive+0x184>
    e8892d04:	00f71563          	bne	a4,a5,e8892d0e <tcp_receive+0x18a>
                tcp_rexmit_fast(pcb);
    e8892d08:	8522                	mv	a0,s0
    e8892d0a:	4fb020ef          	jal	ra,e8895a04 <tcp_rexmit_fast>
    if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) {
    e8892d0e:	5474                	lw	a3,108(s0)
    e8892d10:	ceb9                	beqz	a3,e8892d6e <tcp_receive+0x1ea>
    e8892d12:	5838                	lw	a4,112(s0)
    e8892d14:	409c                	lw	a5,0(s1)
    e8892d16:	9f1d                	subw	a4,a4,a5
    e8892d18:	04075b63          	bgez	a4,e8892d6e <tcp_receive+0x1ea>
      m = (s16_t)(tcp_ticks - pcb->rttest);
    e8892d1c:	00054797          	auipc	a5,0x54
    e8892d20:	96c78793          	addi	a5,a5,-1684 # e88e6688 <tcp_ticks>
      m = (s16_t)(m - (pcb->sa >> 3));
    e8892d24:	07441703          	lh	a4,116(s0)
      m = (s16_t)(tcp_ticks - pcb->rttest);
    e8892d28:	439c                	lw	a5,0(a5)
    e8892d2a:	9f95                	subw	a5,a5,a3
      m = (s16_t)(m - (pcb->sa >> 3));
    e8892d2c:	4037569b          	sraiw	a3,a4,0x3
    e8892d30:	9f95                	subw	a5,a5,a3
    e8892d32:	3c07a78b          	ext	a5,a5,15,0
      pcb->sa = (s16_t)(pcb->sa + m);
    e8892d36:	9f3d                	addw	a4,a4,a5
    e8892d38:	3c07270b          	ext	a4,a4,15,0
    e8892d3c:	06e41a23          	sh	a4,116(s0)
      if (m < 0) {
    e8892d40:	0007d663          	bgez	a5,e8892d4c <tcp_receive+0x1c8>
        m = (s16_t) - m;
    e8892d44:	40f007bb          	negw	a5,a5
    e8892d48:	3c07a78b          	ext	a5,a5,15,0
      m = (s16_t)(m - (pcb->sv >> 2));
    e8892d4c:	07641683          	lh	a3,118(s0)
      pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv);
    e8892d50:	4037571b          	sraiw	a4,a4,0x3
      pcb->rttest = 0;
    e8892d54:	06042623          	sw	zero,108(s0)
      m = (s16_t)(m - (pcb->sv >> 2));
    e8892d58:	4026d61b          	sraiw	a2,a3,0x2
      pcb->sv = (s16_t)(pcb->sv + m);
    e8892d5c:	9e91                	subw	a3,a3,a2
    e8892d5e:	9fb5                	addw	a5,a5,a3
    e8892d60:	3c07a78b          	ext	a5,a5,15,0
      pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv);
    e8892d64:	9f3d                	addw	a4,a4,a5
      pcb->sv = (s16_t)(pcb->sv + m);
    e8892d66:	06f41b23          	sh	a5,118(s0)
      pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv);
    e8892d6a:	06e41c23          	sh	a4,120(s0)
  if ((tcplen > 0) && (pcb->state < CLOSE_WAIT)) {
    e8892d6e:	0009d583          	lhu	a1,0(s3)
    e8892d72:	4c34                	lw	a3,88(s0)
    e8892d74:	00092783          	lw	a5,0(s2)
    e8892d78:	0c058ce3          	beqz	a1,e8893650 <tcp_receive+0xacc>
    e8892d7c:	04844603          	lbu	a2,72(s0)
    e8892d80:	4719                	li	a4,6
    e8892d82:	0cc767e3          	bltu	a4,a2,e8893650 <tcp_receive+0xacc>
    if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)) {
    e8892d86:	40f684bb          	subw	s1,a3,a5
    e8892d8a:	fff4861b          	addiw	a2,s1,-1
    e8892d8e:	46064463          	bltz	a2,e88931f6 <tcp_receive+0x672>
    e8892d92:	4705                	li	a4,1
    e8892d94:	9f1d                	subw	a4,a4,a5
    e8892d96:	9f0d                	subw	a4,a4,a1
    e8892d98:	9f35                	addw	a4,a4,a3
    e8892d9a:	44e04e63          	bgtz	a4,e88931f6 <tcp_receive+0x672>
      struct pbuf *p = inseg.p;
    e8892d9e:	00054a17          	auipc	s4,0x54
    e8892da2:	902a0a13          	addi	s4,s4,-1790 # e88e66a0 <inseg>
    e8892da6:	008a3a83          	ld	s5,8(s4)
      LWIP_ASSERT("inseg.p != NULL", inseg.p);
    e8892daa:	020a9863          	bnez	s5,e8892dda <tcp_receive+0x256>
    e8892dae:	02f00593          	li	a1,47
    e8892db2:	0003f517          	auipc	a0,0x3f
    e8892db6:	da650513          	addi	a0,a0,-602 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892dba:	dbee90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892dbe:	00150693          	addi	a3,a0,1
    e8892dc2:	59400613          	li	a2,1428
    e8892dc6:	0003f597          	auipc	a1,0x3f
    e8892dca:	ec258593          	addi	a1,a1,-318 # e88d1c88 <tcp_persist_backoff+0x718>
    e8892dce:	0003c517          	auipc	a0,0x3c
    e8892dd2:	2e250513          	addi	a0,a0,738 # e88cf0b0 <kSinTable1024+0x900>
    e8892dd6:	cf0e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
      LWIP_ASSERT("insane offset!", (off32 < 0xffff));
    e8892dda:	67c1                	lui	a5,0x10
    e8892ddc:	17f9                	addi	a5,a5,-2
    e8892dde:	0297f863          	bgeu	a5,s1,e8892e0e <tcp_receive+0x28a>
    e8892de2:	02f00593          	li	a1,47
    e8892de6:	0003f517          	auipc	a0,0x3f
    e8892dea:	d7250513          	addi	a0,a0,-654 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892dee:	d8ae90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892df2:	00150693          	addi	a3,a0,1
    e8892df6:	59500613          	li	a2,1429
    e8892dfa:	0003f597          	auipc	a1,0x3f
    e8892dfe:	e9e58593          	addi	a1,a1,-354 # e88d1c98 <tcp_persist_backoff+0x728>
    e8892e02:	0003c517          	auipc	a0,0x3c
    e8892e06:	2ae50513          	addi	a0,a0,686 # e88cf0b0 <kSinTable1024+0x900>
    e8892e0a:	cbce90ef          	jal	ra,e887c2c6 <eLIBs_printf>
      LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off));
    e8892e0e:	008a3783          	ld	a5,8(s4)
      off = (u16_t)off32;
    e8892e12:	3c04b48b          	extu	s1,s1,15,0
      LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off));
    e8892e16:	0107d783          	lhu	a5,16(a5) # 10010 <memcmp-0xe87efff0>
    e8892e1a:	0297f863          	bgeu	a5,s1,e8892e4a <tcp_receive+0x2c6>
    e8892e1e:	02f00593          	li	a1,47
    e8892e22:	0003f517          	auipc	a0,0x3f
    e8892e26:	d3650513          	addi	a0,a0,-714 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892e2a:	d4ee90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892e2e:	00150693          	addi	a3,a0,1
    e8892e32:	59700613          	li	a2,1431
    e8892e36:	0003f597          	auipc	a1,0x3f
    e8892e3a:	e7258593          	addi	a1,a1,-398 # e88d1ca8 <tcp_persist_backoff+0x738>
    e8892e3e:	0003c517          	auipc	a0,0x3c
    e8892e42:	27250513          	addi	a0,a0,626 # e88cf0b0 <kSinTable1024+0x900>
    e8892e46:	c80e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
      inseg.len -= off;
    e8892e4a:	010a5783          	lhu	a5,16(s4)
    e8892e4e:	9f85                	subw	a5,a5,s1
    e8892e50:	00fa1823          	sh	a5,16(s4)
      new_tot_len = (u16_t)(inseg.p->tot_len - off);
    e8892e54:	008a3783          	ld	a5,8(s4)
    e8892e58:	0107d783          	lhu	a5,16(a5)
    e8892e5c:	9f85                	subw	a5,a5,s1
    e8892e5e:	3c07b78b          	extu	a5,a5,15,0
      while (p->len < off) {
    e8892e62:	012ad703          	lhu	a4,18(s5)
    e8892e66:	36976e63          	bltu	a4,s1,e88931e2 <tcp_receive+0x65e>
      pbuf_remove_header(p, off);
    e8892e6a:	85a6                	mv	a1,s1
    e8892e6c:	8556                	mv	a0,s5
    e8892e6e:	b3afc0ef          	jal	ra,e888f1a8 <pbuf_remove_header>
      inseg.tcphdr->seqno = seqno = pcb->rcv_nxt;
    e8892e72:	4c3c                	lw	a5,88(s0)
    e8892e74:	018a3703          	ld	a4,24(s4)
    e8892e78:	00f92023          	sw	a5,0(s2)
    e8892e7c:	c35c                	sw	a5,4(a4)
    if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,
    e8892e7e:	00092783          	lw	a5,0(s2)
    e8892e82:	4c34                	lw	a3,88(s0)
    e8892e84:	40d7873b          	subw	a4,a5,a3
    e8892e88:	5c074d63          	bltz	a4,e8893462 <tcp_receive+0x8de>
    e8892e8c:	4c70                	lw	a2,92(s0)
    e8892e8e:	0017859b          	addiw	a1,a5,1
    e8892e92:	9e35                	addw	a2,a2,a3
    e8892e94:	40c5873b          	subw	a4,a1,a2
    e8892e98:	5ce04563          	bgtz	a4,e8893462 <tcp_receive+0x8de>
      if (pcb->rcv_nxt == seqno) {
    e8892e9c:	5ad79763          	bne	a5,a3,e889344a <tcp_receive+0x8c6>
        tcplen = TCP_TCPLEN(&inseg);
    e8892ea0:	00054497          	auipc	s1,0x54
    e8892ea4:	80048493          	addi	s1,s1,-2048 # e88e66a0 <inseg>
    e8892ea8:	6c9c                	ld	a5,24(s1)
    e8892eaa:	0104da03          	lhu	s4,16(s1)
    e8892eae:	00c7d503          	lhu	a0,12(a5)
    e8892eb2:	86cf40ef          	jal	ra,e8886f1e <lwip_htons>
    e8892eb6:	890d                	andi	a0,a0,3
    e8892eb8:	00a03533          	snez	a0,a0
    e8892ebc:	0145053b          	addw	a0,a0,s4
    e8892ec0:	3c05350b          	extu	a0,a0,15,0
        if (tcplen > pcb->rcv_wnd) {
    e8892ec4:	4c7c                	lw	a5,92(s0)
        tcplen = TCP_TCPLEN(&inseg);
    e8892ec6:	00a99023          	sh	a0,0(s3)
        if (tcplen > pcb->rcv_wnd) {
    e8892eca:	0ea7f963          	bgeu	a5,a0,e8892fbc <tcp_receive+0x438>
          if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) {
    e8892ece:	6c9c                	ld	a5,24(s1)
    e8892ed0:	00c7d503          	lhu	a0,12(a5)
    e8892ed4:	84af40ef          	jal	ra,e8886f1e <lwip_htons>
    e8892ed8:	8905                	andi	a0,a0,1
    e8892eda:	c50d                	beqz	a0,e8892f04 <tcp_receive+0x380>
            TCPH_FLAGS_SET(inseg.tcphdr, TCPH_FLAGS(inseg.tcphdr) & ~(unsigned int)TCP_FIN);
    e8892edc:	6c9c                	ld	a5,24(s1)
    e8892ede:	00c7da03          	lhu	s4,12(a5)
    e8892ee2:	8552                	mv	a0,s4
    e8892ee4:	83af40ef          	jal	ra,e8886f1e <lwip_htons>
    e8892ee8:	03e57513          	andi	a0,a0,62
    e8892eec:	832f40ef          	jal	ra,e8886f1e <lwip_htons>
    e8892ef0:	77f1                	lui	a5,0xffffc
    e8892ef2:	6c98                	ld	a4,24(s1)
    e8892ef4:	0ff78793          	addi	a5,a5,255 # ffffffffffffc0ff <__DRAM0_INF_BASE+0xffffffff0000c0ff>
    e8892ef8:	00fa7a33          	and	s4,s4,a5
    e8892efc:	00aa6a33          	or	s4,s4,a0
    e8892f00:	01471623          	sh	s4,12(a4)
          TCPWND_CHECK16(pcb->rcv_wnd);
    e8892f04:	4c78                	lw	a4,92(s0)
    e8892f06:	67c1                	lui	a5,0x10
    e8892f08:	02f76863          	bltu	a4,a5,e8892f38 <tcp_receive+0x3b4>
    e8892f0c:	02f00593          	li	a1,47
    e8892f10:	0003f517          	auipc	a0,0x3f
    e8892f14:	c4850513          	addi	a0,a0,-952 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892f18:	c60e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892f1c:	00150693          	addi	a3,a0,1
    e8892f20:	5c400613          	li	a2,1476
    e8892f24:	0003f597          	auipc	a1,0x3f
    e8892f28:	d9458593          	addi	a1,a1,-620 # e88d1cb8 <tcp_persist_backoff+0x748>
    e8892f2c:	0003c517          	auipc	a0,0x3c
    e8892f30:	18450513          	addi	a0,a0,388 # e88cf0b0 <kSinTable1024+0x900>
    e8892f34:	b92e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
          inseg.len = (u16_t)pcb->rcv_wnd;
    e8892f38:	4c7c                	lw	a5,92(s0)
    e8892f3a:	00f49823          	sh	a5,16(s1)
          if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) {
    e8892f3e:	6c9c                	ld	a5,24(s1)
    e8892f40:	00c7d503          	lhu	a0,12(a5) # 1000c <memcmp-0xe87efff4>
    e8892f44:	fdbf30ef          	jal	ra,e8886f1e <lwip_htons>
    e8892f48:	8909                	andi	a0,a0,2
    e8892f4a:	c511                	beqz	a0,e8892f56 <tcp_receive+0x3d2>
            inseg.len -= 1;
    e8892f4c:	0104d783          	lhu	a5,16(s1)
    e8892f50:	37fd                	addiw	a5,a5,-1
    e8892f52:	00f49823          	sh	a5,16(s1)
          pbuf_realloc(inseg.p, inseg.len);
    e8892f56:	0104d583          	lhu	a1,16(s1)
    e8892f5a:	6488                	ld	a0,8(s1)
    e8892f5c:	d96fc0ef          	jal	ra,e888f4f2 <pbuf_realloc>
          tcplen = TCP_TCPLEN(&inseg);
    e8892f60:	0104da03          	lhu	s4,16(s1)
    e8892f64:	6c9c                	ld	a5,24(s1)
    e8892f66:	00c7d503          	lhu	a0,12(a5)
    e8892f6a:	fb5f30ef          	jal	ra,e8886f1e <lwip_htons>
    e8892f6e:	890d                	andi	a0,a0,3
    e8892f70:	00a03533          	snez	a0,a0
    e8892f74:	0145053b          	addw	a0,a0,s4
          LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n",
    e8892f78:	00092703          	lw	a4,0(s2)
    e8892f7c:	4c3c                	lw	a5,88(s0)
    e8892f7e:	4c74                	lw	a3,92(s0)
          tcplen = TCP_TCPLEN(&inseg);
    e8892f80:	3c05350b          	extu	a0,a0,15,0
    e8892f84:	00a99023          	sh	a0,0(s3)
          LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n",
    e8892f88:	9fb5                	addw	a5,a5,a3
    e8892f8a:	9d39                	addw	a0,a0,a4
    e8892f8c:	02f50863          	beq	a0,a5,e8892fbc <tcp_receive+0x438>
    e8892f90:	02f00593          	li	a1,47
    e8892f94:	0003f517          	auipc	a0,0x3f
    e8892f98:	bc450513          	addi	a0,a0,-1084 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8892f9c:	bdce90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8892fa0:	00150693          	addi	a3,a0,1
    e8892fa4:	5cc00613          	li	a2,1484
    e8892fa8:	0003f597          	auipc	a1,0x3f
    e8892fac:	d2858593          	addi	a1,a1,-728 # e88d1cd0 <tcp_persist_backoff+0x760>
    e8892fb0:	0003c517          	auipc	a0,0x3c
    e8892fb4:	10050513          	addi	a0,a0,256 # e88cf0b0 <kSinTable1024+0x900>
    e8892fb8:	b0ee90ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (pcb->ooseq != NULL) {
    e8892fbc:	607c                	ld	a5,192(s0)
    e8892fbe:	24078c63          	beqz	a5,e8893216 <tcp_receive+0x692>
          if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) {
    e8892fc2:	6c9c                	ld	a5,24(s1)
    e8892fc4:	00c7d503          	lhu	a0,12(a5)
    e8892fc8:	f57f30ef          	jal	ra,e8886f1e <lwip_htons>
    e8892fcc:	8905                	andi	a0,a0,1
    e8892fce:	24051263          	bnez	a0,e8893212 <tcp_receive+0x68e>
            struct tcp_seg *next = pcb->ooseq;
    e8892fd2:	0c043a03          	ld	s4,192(s0)
            while (next &&
    e8892fd6:	00092583          	lw	a1,0(s2)
    e8892fda:	0009d783          	lhu	a5,0(s3)
    e8892fde:	00b786bb          	addw	a3,a5,a1
    e8892fe2:	0a0a0263          	beqz	s4,e8893086 <tcp_receive+0x502>
                   TCP_SEQ_GEQ(seqno + tcplen,
    e8892fe6:	018a3503          	ld	a0,24(s4)
    e8892fea:	010a5603          	lhu	a2,16(s4)
    e8892fee:	4158                	lw	a4,4(a0)
    e8892ff0:	9e39                	addw	a2,a2,a4
            while (next &&
    e8892ff2:	40c687bb          	subw	a5,a3,a2
    e8892ff6:	2c07db63          	bgez	a5,e88932cc <tcp_receive+0x748>
            if (next &&
    e8892ffa:	40e687bb          	subw	a5,a3,a4
    e8892ffe:	08f05463          	blez	a5,e8893086 <tcp_receive+0x502>
              if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) {
    e8893002:	6c9c                	ld	a5,24(s1)
              inseg.len = (u16_t)(next->tcphdr->seqno - seqno);
    e8893004:	9f0d                	subw	a4,a4,a1
    e8893006:	00e49823          	sh	a4,16(s1)
              if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) {
    e889300a:	00c7d503          	lhu	a0,12(a5)
    e889300e:	f11f30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893012:	8909                	andi	a0,a0,2
    e8893014:	c511                	beqz	a0,e8893020 <tcp_receive+0x49c>
                inseg.len -= 1;
    e8893016:	0104d783          	lhu	a5,16(s1)
    e889301a:	37fd                	addiw	a5,a5,-1
    e889301c:	00f49823          	sh	a5,16(s1)
              pbuf_realloc(inseg.p, inseg.len);
    e8893020:	0104d583          	lhu	a1,16(s1)
    e8893024:	6488                	ld	a0,8(s1)
    e8893026:	cccfc0ef          	jal	ra,e888f4f2 <pbuf_realloc>
              tcplen = TCP_TCPLEN(&inseg);
    e889302a:	0104da83          	lhu	s5,16(s1)
    e889302e:	6c9c                	ld	a5,24(s1)
    e8893030:	00c7d503          	lhu	a0,12(a5)
    e8893034:	eebf30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893038:	890d                	andi	a0,a0,3
              LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n",
    e889303a:	00092783          	lw	a5,0(s2)
              tcplen = TCP_TCPLEN(&inseg);
    e889303e:	00a03533          	snez	a0,a0
              LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n",
    e8893042:	018a3703          	ld	a4,24(s4)
              tcplen = TCP_TCPLEN(&inseg);
    e8893046:	0155053b          	addw	a0,a0,s5
    e889304a:	3c05350b          	extu	a0,a0,15,0
    e889304e:	00a99023          	sh	a0,0(s3)
              LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n",
    e8893052:	9d3d                	addw	a0,a0,a5
    e8893054:	435c                	lw	a5,4(a4)
    e8893056:	02f50863          	beq	a0,a5,e8893086 <tcp_receive+0x502>
    e889305a:	02f00593          	li	a1,47
    e889305e:	0003f517          	auipc	a0,0x3f
    e8893062:	afa50513          	addi	a0,a0,-1286 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8893066:	b12e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889306a:	00150693          	addi	a3,a0,1
    e889306e:	5fd00613          	li	a2,1533
    e8893072:	0003f597          	auipc	a1,0x3f
    e8893076:	c9658593          	addi	a1,a1,-874 # e88d1d08 <tcp_persist_backoff+0x798>
    e889307a:	0003c517          	auipc	a0,0x3c
    e889307e:	03650513          	addi	a0,a0,54 # e88cf0b0 <kSinTable1024+0x900>
    e8893082:	a44e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
            pcb->ooseq = next;
    e8893086:	0d443023          	sd	s4,192(s0)
    e889308a:	a271                	j	e8893216 <tcp_receive+0x692>
        pcb->dupacks = 0;
    e889308c:	06040da3          	sb	zero,123(s0)
    e8893090:	b9bd                	j	e8892d0e <tcp_receive+0x18a>
    } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) {
    e8893092:	08c42703          	lw	a4,140(s0)
    e8893096:	40e7873b          	subw	a4,a5,a4
    e889309a:	14e04063          	bgtz	a4,e88931da <tcp_receive+0x656>
      if (pcb->flags & TF_INFR) {
    e889309e:	04e45703          	lhu	a4,78(s0)
    e88930a2:	00477693          	andi	a3,a4,4
    e88930a6:	ca91                	beqz	a3,e88930ba <tcp_receive+0x536>
        tcp_clear_flags(pcb, TF_INFR);
    e88930a8:	9b6d                	andi	a4,a4,-5
    e88930aa:	04e41723          	sh	a4,78(s0)
        pcb->cwnd = pcb->ssthresh;
    e88930ae:	08442703          	lw	a4,132(s0)
        pcb->bytes_acked = 0;
    e88930b2:	0a042623          	sw	zero,172(s0)
        pcb->cwnd = pcb->ssthresh;
    e88930b6:	08e42023          	sw	a4,128(s0)
      pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv);
    e88930ba:	07441703          	lh	a4,116(s0)
    e88930be:	07645683          	lhu	a3,118(s0)
      pcb->lastack = ackno;
    e88930c2:	dc7c                	sw	a5,124(s0)
      pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv);
    e88930c4:	4037571b          	sraiw	a4,a4,0x3
    e88930c8:	9f35                	addw	a4,a4,a3
    e88930ca:	06e41c23          	sh	a4,120(s0)
      if (pcb->state >= ESTABLISHED) {
    e88930ce:	04844703          	lbu	a4,72(s0)
      pcb->nrtx = 0;
    e88930d2:	06041d23          	sh	zero,122(s0)
      if (pcb->state >= ESTABLISHED) {
    e88930d6:	478d                	li	a5,3
    e88930d8:	04e7fc63          	bgeu	a5,a4,e8893130 <tcp_receive+0x5ac>
        if (pcb->cwnd < pcb->ssthresh) {
    e88930dc:	08042703          	lw	a4,128(s0)
    e88930e0:	08442783          	lw	a5,132(s0)
    e88930e4:	02f77c63          	bgeu	a4,a5,e889311c <tcp_receive+0x598>
          u8_t num_seg = (pcb->flags & TF_RTO) ? 1 : 2;
    e88930e8:	04e45783          	lhu	a5,78(s0)
    e88930ec:	6685                	lui	a3,0x1
    e88930ee:	80068693          	addi	a3,a3,-2048 # 800 <memcmp-0xe87ff800>
    e88930f2:	8fb5                	xor	a5,a5,a3
    e88930f4:	2cb7b68b          	extu	a3,a5,11,11
          increase = LWIP_MIN(acked, (tcpwnd_size_t)(num_seg * pcb->mss));
    e88930f8:	06a45783          	lhu	a5,106(s0)
          u8_t num_seg = (pcb->flags & TF_RTO) ? 1 : 2;
    e88930fc:	0685                	addi	a3,a3,1
          increase = LWIP_MIN(acked, (tcpwnd_size_t)(num_seg * pcb->mss));
    e88930fe:	02d787bb          	mulw	a5,a5,a3
    e8893102:	00f5b5b3          	sltu	a1,a1,a5
    e8893106:	42b6178b          	mvnez	a5,a2,a1
            TCP_WND_INC(pcb->cwnd, pcb->mss);
    e889310a:	00e786bb          	addw	a3,a5,a4
    e889310e:	87b6                	mv	a5,a3
    e8893110:	00e6f363          	bgeu	a3,a4,e8893116 <tcp_receive+0x592>
          TCP_WND_INC(pcb->cwnd, increase);
    e8893114:	57fd                	li	a5,-1
            TCP_WND_INC(pcb->cwnd, pcb->mss);
    e8893116:	08f42023          	sw	a5,128(s0)
    e889311a:	a819                	j	e8893130 <tcp_receive+0x5ac>
          TCP_WND_INC(pcb->bytes_acked, acked);
    e889311c:	0ac42683          	lw	a3,172(s0)
    e8893120:	00d607bb          	addw	a5,a2,a3
    e8893124:	08d7e963          	bltu	a5,a3,e88931b6 <tcp_receive+0x632>
          if (pcb->bytes_acked >= pcb->cwnd) {
    e8893128:	08e7f863          	bgeu	a5,a4,e88931b8 <tcp_receive+0x634>
    e889312c:	0af42623          	sw	a5,172(s0)
      pcb->unacked = tcp_free_acked_segments(pcb, pcb->unacked, "unacked", pcb->unsent);
    e8893130:	7850                	ld	a2,176(s0)
    e8893132:	7c4c                	ld	a1,184(s0)
    e8893134:	0a840a13          	addi	s4,s0,168
    e8893138:	8552                	mv	a0,s4
    e889313a:	925ff0ef          	jal	ra,e8892a5e <tcp_free_acked_segments.isra.2>
    e889313e:	862a                	mv	a2,a0
      pcb->unsent = tcp_free_acked_segments(pcb, pcb->unsent, "unsent", pcb->unacked);
    e8893140:	784c                	ld	a1,176(s0)
      pcb->unacked = tcp_free_acked_segments(pcb, pcb->unacked, "unacked", pcb->unsent);
    e8893142:	fc48                	sd	a0,184(s0)
      pcb->unsent = tcp_free_acked_segments(pcb, pcb->unsent, "unsent", pcb->unacked);
    e8893144:	8552                	mv	a0,s4
    e8893146:	919ff0ef          	jal	ra,e8892a5e <tcp_free_acked_segments.isra.2>
    e889314a:	f848                	sd	a0,176(s0)
      if (pcb->unacked == NULL) {
    e889314c:	7c5c                	ld	a5,184(s0)
      pcb->polltmr = 0;
    e889314e:	04040823          	sb	zero,80(s0)
      if (pcb->unacked == NULL) {
    e8893152:	0017b793          	seqz	a5,a5
    e8893156:	40f007bb          	negw	a5,a5
    e889315a:	06f41423          	sh	a5,104(s0)
      if (pcb->unsent == NULL) {
    e889315e:	e119                	bnez	a0,e8893164 <tcp_receive+0x5e0>
        pcb->unsent_oversize = 0;
    e8893160:	0a041523          	sh	zero,170(s0)
      if (ip_current_is_v6()) {
    e8893164:	00053797          	auipc	a5,0x53
    e8893168:	9e478793          	addi	a5,a5,-1564 # e88e5b48 <ip_data>
    e889316c:	6f9c                	ld	a5,24(a5)
    e889316e:	c799                	beqz	a5,e889317c <tcp_receive+0x5f8>
        nd6_reachability_hint(ip6_current_src_addr());
    e8893170:	00053517          	auipc	a0,0x53
    e8893174:	9fc50513          	addi	a0,a0,-1540 # e88e5b6c <ip_data+0x24>
    e8893178:	d8ffa0ef          	jal	ra,e888df06 <nd6_reachability_hint>
      pcb->snd_buf = (tcpwnd_size_t)(pcb->snd_buf + recv_acked);
    e889317c:	00053717          	auipc	a4,0x53
    e8893180:	54470713          	addi	a4,a4,1348 # e88e66c0 <recv_acked>
    e8893184:	0a442783          	lw	a5,164(s0)
    e8893188:	4318                	lw	a4,0(a4)
    e889318a:	9fb9                	addw	a5,a5,a4
    e889318c:	0af42223          	sw	a5,164(s0)
      if (pcb->flags & TF_RTO) {
    e8893190:	04e45783          	lhu	a5,78(s0)
    e8893194:	03479713          	slli	a4,a5,0x34
    e8893198:	b6075be3          	bgez	a4,e8892d0e <tcp_receive+0x18a>
        if (pcb->unacked == NULL) {
    e889319c:	7c5c                	ld	a5,184(s0)
    e889319e:	e39d                	bnez	a5,e88931c4 <tcp_receive+0x640>
          if ((pcb->unsent == NULL) ||
    e88931a0:	785c                	ld	a5,176(s0)
    e88931a2:	e38d                	bnez	a5,e88931c4 <tcp_receive+0x640>
          tcp_clear_flags(pcb, TF_RTO);
    e88931a4:	04e45783          	lhu	a5,78(s0)
    e88931a8:	777d                	lui	a4,0xfffff
    e88931aa:	7ff70713          	addi	a4,a4,2047 # fffffffffffff7ff <__DRAM0_INF_BASE+0xffffffff0000f7ff>
    e88931ae:	8ff9                	and	a5,a5,a4
    e88931b0:	04f41723          	sh	a5,78(s0)
    e88931b4:	bea9                	j	e8892d0e <tcp_receive+0x18a>
          TCP_WND_INC(pcb->bytes_acked, acked);
    e88931b6:	57fd                	li	a5,-1
            pcb->bytes_acked = (tcpwnd_size_t)(pcb->bytes_acked - pcb->cwnd);
    e88931b8:	9f99                	subw	a5,a5,a4
    e88931ba:	0af42623          	sw	a5,172(s0)
            TCP_WND_INC(pcb->cwnd, pcb->mss);
    e88931be:	06a45783          	lhu	a5,106(s0)
    e88931c2:	b7a1                	j	e889310a <tcp_receive+0x586>
        } else if (TCP_SEQ_LEQ(pcb->rto_end, lwip_ntohl(pcb->unacked->tcphdr->seqno))) {
    e88931c4:	6f9c                	ld	a5,24(a5)
    e88931c6:	08842a03          	lw	s4,136(s0)
    e88931ca:	43c8                	lw	a0,4(a5)
    e88931cc:	d63f30ef          	jal	ra,e8886f2e <lwip_htonl>
    e88931d0:	40aa053b          	subw	a0,s4,a0
    e88931d4:	b2a04de3          	bgtz	a0,e8892d0e <tcp_receive+0x18a>
    e88931d8:	b7f1                	j	e88931a4 <tcp_receive+0x620>
      tcp_send_empty_ack(pcb);
    e88931da:	8522                	mv	a0,s0
    e88931dc:	1ab020ef          	jal	ra,e8895b86 <tcp_send_empty_ack>
    e88931e0:	b63d                	j	e8892d0e <tcp_receive+0x18a>
        off -= p->len;
    e88931e2:	9c99                	subw	s1,s1,a4
        p->tot_len = new_tot_len;
    e88931e4:	00fa9823          	sh	a5,16(s5)
        p->len = 0;
    e88931e8:	000a9923          	sh	zero,18(s5)
        off -= p->len;
    e88931ec:	3c04b48b          	extu	s1,s1,15,0
        p = p->next;
    e88931f0:	000aba83          	ld	s5,0(s5)
    e88931f4:	b1bd                	j	e8892e62 <tcp_receive+0x2de>
      if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)) {
    e88931f6:	9f95                	subw	a5,a5,a3
    e88931f8:	c807d3e3          	bgez	a5,e8892e7e <tcp_receive+0x2fa>
        tcp_ack_now(pcb);
    e88931fc:	04e45783          	lhu	a5,78(s0)
    e8893200:	0027e793          	ori	a5,a5,2
    e8893204:	04f41723          	sh	a5,78(s0)
    e8893208:	b99d                	j	e8892e7e <tcp_receive+0x2fa>
              pcb->ooseq = pcb->ooseq->next;
    e889320a:	611c                	ld	a5,0(a0)
    e889320c:	e07c                	sd	a5,192(s0)
              tcp_seg_free(old_ooseq);
    e889320e:	b23fd0ef          	jal	ra,e8890d30 <tcp_seg_free>
            while (pcb->ooseq != NULL) {
    e8893212:	6068                	ld	a0,192(s0)
    e8893214:	f97d                	bnez	a0,e889320a <tcp_receive+0x686>
        pcb->rcv_nxt = seqno + tcplen;
    e8893216:	0009d703          	lhu	a4,0(s3)
    e889321a:	00092783          	lw	a5,0(s2)
    e889321e:	9fb9                	addw	a5,a5,a4
    e8893220:	cc3c                	sw	a5,88(s0)
        LWIP_ASSERT("tcp_receive: tcplen > rcv_wnd\n", pcb->rcv_wnd >= tcplen);
    e8893222:	4c7c                	lw	a5,92(s0)
    e8893224:	02e7f863          	bgeu	a5,a4,e8893254 <tcp_receive+0x6d0>
    e8893228:	02f00593          	li	a1,47
    e889322c:	0003f517          	auipc	a0,0x3f
    e8893230:	92c50513          	addi	a0,a0,-1748 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8893234:	944e90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893238:	00150693          	addi	a3,a0,1
    e889323c:	60700613          	li	a2,1543
    e8893240:	0003f597          	auipc	a1,0x3f
    e8893244:	b0858593          	addi	a1,a1,-1272 # e88d1d48 <tcp_persist_backoff+0x7d8>
    e8893248:	0003c517          	auipc	a0,0x3c
    e889324c:	e6850513          	addi	a0,a0,-408 # e88cf0b0 <kSinTable1024+0x900>
    e8893250:	876e90ef          	jal	ra,e887c2c6 <eLIBs_printf>
        pcb->rcv_wnd -= tcplen;
    e8893254:	0009d703          	lhu	a4,0(s3)
    e8893258:	4c7c                	lw	a5,92(s0)
        tcp_update_rcv_ann_wnd(pcb);
    e889325a:	8522                	mv	a0,s0
        pcb->rcv_wnd -= tcplen;
    e889325c:	9f99                	subw	a5,a5,a4
    e889325e:	cc7c                	sw	a5,92(s0)
        tcp_update_rcv_ann_wnd(pcb);
    e8893260:	97dfd0ef          	jal	ra,e8890bdc <tcp_update_rcv_ann_wnd>
        if (inseg.p->tot_len > 0) {
    e8893264:	649c                	ld	a5,8(s1)
    e8893266:	0107d703          	lhu	a4,16(a5)
    e889326a:	cb09                	beqz	a4,e889327c <tcp_receive+0x6f8>
          recv_data = inseg.p;
    e889326c:	00053717          	auipc	a4,0x53
    e8893270:	44f73e23          	sd	a5,1116(a4) # e88e66c8 <recv_data>
          inseg.p = NULL;
    e8893274:	00053797          	auipc	a5,0x53
    e8893278:	4207ba23          	sd	zero,1076(a5) # e88e66a8 <inseg+0x8>
        if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) {
    e889327c:	6c9c                	ld	a5,24(s1)
    e889327e:	00c7d503          	lhu	a0,12(a5)
    e8893282:	c9df30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893286:	8905                	andi	a0,a0,1
    e8893288:	c919                	beqz	a0,e889329e <tcp_receive+0x71a>
          recv_flags |= TF_GOT_FIN;
    e889328a:	00053717          	auipc	a4,0x53
    e889328e:	44670713          	addi	a4,a4,1094 # e88e66d0 <recv_flags>
    e8893292:	00074783          	lbu	a5,0(a4)
    e8893296:	0207e793          	ori	a5,a5,32
    e889329a:	00f70023          	sb	a5,0(a4)
          LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n",
    e889329e:	0003fa97          	auipc	s5,0x3f
    e88932a2:	8baa8a93          	addi	s5,s5,-1862 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e88932a6:	0003fb17          	auipc	s6,0x3f
    e88932aa:	ac2b0b13          	addi	s6,s6,-1342 # e88d1d68 <tcp_persist_backoff+0x7f8>
    e88932ae:	0003cb97          	auipc	s7,0x3c
    e88932b2:	e02b8b93          	addi	s7,s7,-510 # e88cf0b0 <kSinTable1024+0x900>
            if (recv_data) {
    e88932b6:	00053997          	auipc	s3,0x53
    e88932ba:	41298993          	addi	s3,s3,1042 # e88e66c8 <recv_data>
            recv_flags |= TF_GOT_FIN;
    e88932be:	00053a17          	auipc	s4,0x53
    e88932c2:	412a0a13          	addi	s4,s4,1042 # e88e66d0 <recv_flags>
            if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */
    e88932c6:	4c11                	li	s8,4
              pcb->state = CLOSE_WAIT;
    e88932c8:	4c9d                	li	s9,7
    e88932ca:	aa39                	j	e88933e8 <tcp_receive+0x864>
              if ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0 &&
    e88932cc:	00c55503          	lhu	a0,12(a0)
    e88932d0:	c4ff30ef          	jal	ra,e8886f1e <lwip_htons>
    e88932d4:	8905                	andi	a0,a0,1
    e88932d6:	c129                	beqz	a0,e8893318 <tcp_receive+0x794>
                  (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) == 0) {
    e88932d8:	6c9c                	ld	a5,24(s1)
    e88932da:	00c7d503          	lhu	a0,12(a5)
    e88932de:	c41f30ef          	jal	ra,e8886f1e <lwip_htons>
              if ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0 &&
    e88932e2:	8909                	andi	a0,a0,2
    e88932e4:	e915                	bnez	a0,e8893318 <tcp_receive+0x794>
                TCPH_SET_FLAG(inseg.tcphdr, TCP_FIN);
    e88932e6:	6c9c                	ld	a5,24(s1)
    e88932e8:	4505                	li	a0,1
    e88932ea:	00c7da83          	lhu	s5,12(a5)
    e88932ee:	c31f30ef          	jal	ra,e8886f1e <lwip_htons>
    e88932f2:	6c9c                	ld	a5,24(s1)
    e88932f4:	00aae533          	or	a0,s5,a0
    e88932f8:	00a79623          	sh	a0,12(a5)
                tcplen = TCP_TCPLEN(&inseg);
    e88932fc:	6c9c                	ld	a5,24(s1)
    e88932fe:	0104da83          	lhu	s5,16(s1)
    e8893302:	00c7d503          	lhu	a0,12(a5)
    e8893306:	c19f30ef          	jal	ra,e8886f1e <lwip_htons>
    e889330a:	890d                	andi	a0,a0,3
    e889330c:	00a03533          	snez	a0,a0
    e8893310:	0155053b          	addw	a0,a0,s5
    e8893314:	00a99023          	sh	a0,0(s3)
              next = next->next;
    e8893318:	000a3a83          	ld	s5,0(s4)
              tcp_seg_free(tmp);
    e889331c:	8552                	mv	a0,s4
    e889331e:	a13fd0ef          	jal	ra,e8890d30 <tcp_seg_free>
              next = next->next;
    e8893322:	8a56                	mv	s4,s5
    e8893324:	b94d                	j	e8892fd6 <tcp_receive+0x452>
          pcb->rcv_nxt += TCP_TCPLEN(cseg);
    e8893326:	00c75503          	lhu	a0,12(a4)
    e889332a:	0104dd03          	lhu	s10,16(s1)
          seqno = pcb->ooseq->tcphdr->seqno;
    e889332e:	00f92023          	sw	a5,0(s2)
          pcb->rcv_nxt += TCP_TCPLEN(cseg);
    e8893332:	bedf30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893336:	890d                	andi	a0,a0,3
    e8893338:	4c3c                	lw	a5,88(s0)
    e889333a:	00a03533          	snez	a0,a0
    e889333e:	01a787bb          	addw	a5,a5,s10
    e8893342:	9d3d                	addw	a0,a0,a5
    e8893344:	cc28                	sw	a0,88(s0)
          LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n",
    e8893346:	6c9c                	ld	a5,24(s1)
    e8893348:	0104dd83          	lhu	s11,16(s1)
    e889334c:	05c42d03          	lw	s10,92(s0)
    e8893350:	00c7d503          	lhu	a0,12(a5)
    e8893354:	bcbf30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893358:	890d                	andi	a0,a0,3
    e889335a:	00a03533          	snez	a0,a0
    e889335e:	956e                	add	a0,a0,s11
    e8893360:	00ad7f63          	bgeu	s10,a0,e889337e <tcp_receive+0x7fa>
    e8893364:	02f00593          	li	a1,47
    e8893368:	8556                	mv	a0,s5
    e889336a:	80ee90ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889336e:	00150693          	addi	a3,a0,1
    e8893372:	62c00613          	li	a2,1580
    e8893376:	85da                	mv	a1,s6
    e8893378:	855e                	mv	a0,s7
    e889337a:	f4de80ef          	jal	ra,e887c2c6 <eLIBs_printf>
          pcb->rcv_wnd -= TCP_TCPLEN(cseg);
    e889337e:	6c9c                	ld	a5,24(s1)
    e8893380:	0104dd03          	lhu	s10,16(s1)
    e8893384:	00c7d503          	lhu	a0,12(a5)
    e8893388:	b97f30ef          	jal	ra,e8886f1e <lwip_htons>
    e889338c:	890d                	andi	a0,a0,3
    e889338e:	4c7c                	lw	a5,92(s0)
    e8893390:	00a03533          	snez	a0,a0
    e8893394:	41a787bb          	subw	a5,a5,s10
    e8893398:	9f89                	subw	a5,a5,a0
    e889339a:	cc7c                	sw	a5,92(s0)
          tcp_update_rcv_ann_wnd(pcb);
    e889339c:	8522                	mv	a0,s0
    e889339e:	83ffd0ef          	jal	ra,e8890bdc <tcp_update_rcv_ann_wnd>
          if (cseg->p->tot_len > 0) {
    e88933a2:	648c                	ld	a1,8(s1)
    e88933a4:	0105d783          	lhu	a5,16(a1)
    e88933a8:	cb81                	beqz	a5,e88933b8 <tcp_receive+0x834>
            if (recv_data) {
    e88933aa:	0009b503          	ld	a0,0(s3)
    e88933ae:	c959                	beqz	a0,e8893444 <tcp_receive+0x8c0>
              pbuf_cat(recv_data, cseg->p);
    e88933b0:	afcfc0ef          	jal	ra,e888f6ac <pbuf_cat>
            cseg->p = NULL;
    e88933b4:	0004b423          	sd	zero,8(s1)
          if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) {
    e88933b8:	6c9c                	ld	a5,24(s1)
    e88933ba:	00c7d503          	lhu	a0,12(a5)
    e88933be:	b61f30ef          	jal	ra,e8886f1e <lwip_htons>
    e88933c2:	8905                	andi	a0,a0,1
    e88933c4:	cd09                	beqz	a0,e88933de <tcp_receive+0x85a>
            recv_flags |= TF_GOT_FIN;
    e88933c6:	000a4783          	lbu	a5,0(s4)
    e88933ca:	0207e793          	ori	a5,a5,32
    e88933ce:	00fa0023          	sb	a5,0(s4)
            if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */
    e88933d2:	04844783          	lbu	a5,72(s0)
    e88933d6:	01879463          	bne	a5,s8,e88933de <tcp_receive+0x85a>
              pcb->state = CLOSE_WAIT;
    e88933da:	05940423          	sb	s9,72(s0)
          pcb->ooseq = cseg->next;
    e88933de:	609c                	ld	a5,0(s1)
          tcp_seg_free(cseg);
    e88933e0:	8526                	mv	a0,s1
          pcb->ooseq = cseg->next;
    e88933e2:	e07c                	sd	a5,192(s0)
          tcp_seg_free(cseg);
    e88933e4:	94dfd0ef          	jal	ra,e8890d30 <tcp_seg_free>
        while (pcb->ooseq != NULL &&
    e88933e8:	6064                	ld	s1,192(s0)
    e88933ea:	c491                	beqz	s1,e88933f6 <tcp_receive+0x872>
               pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) {
    e88933ec:	6c98                	ld	a4,24(s1)
        while (pcb->ooseq != NULL &&
    e88933ee:	4c3c                	lw	a5,88(s0)
               pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) {
    e88933f0:	4354                	lw	a3,4(a4)
        while (pcb->ooseq != NULL &&
    e88933f2:	f2d78ae3          	beq	a5,a3,e8893326 <tcp_receive+0x7a2>
        tcp_ack(pcb);
    e88933f6:	04e45783          	lhu	a5,78(s0)
    e88933fa:	0017f693          	andi	a3,a5,1
    e88933fe:	0017e713          	ori	a4,a5,1
    e8893402:	c681                	beqz	a3,e889340a <tcp_receive+0x886>
    e8893404:	9bf9                	andi	a5,a5,-2
    e8893406:	0027e713          	ori	a4,a5,2
        if (ip_current_is_v6()) {
    e889340a:	00052797          	auipc	a5,0x52
    e889340e:	73e78793          	addi	a5,a5,1854 # e88e5b48 <ip_data>
    e8893412:	6f9c                	ld	a5,24(a5)
    e8893414:	04e41723          	sh	a4,78(s0)
    e8893418:	24078c63          	beqz	a5,e8893670 <tcp_receive+0xaec>
}
    e889341c:	7406                	ld	s0,96(sp)
    e889341e:	70a6                	ld	ra,104(sp)
    e8893420:	64e6                	ld	s1,88(sp)
    e8893422:	6946                	ld	s2,80(sp)
    e8893424:	69a6                	ld	s3,72(sp)
    e8893426:	6a06                	ld	s4,64(sp)
    e8893428:	7ae2                	ld	s5,56(sp)
    e889342a:	7b42                	ld	s6,48(sp)
    e889342c:	7ba2                	ld	s7,40(sp)
    e889342e:	7c02                	ld	s8,32(sp)
    e8893430:	6ce2                	ld	s9,24(sp)
    e8893432:	6d42                	ld	s10,16(sp)
    e8893434:	6da2                	ld	s11,8(sp)
          nd6_reachability_hint(ip6_current_src_addr());
    e8893436:	00052517          	auipc	a0,0x52
    e889343a:	73650513          	addi	a0,a0,1846 # e88e5b6c <ip_data+0x24>
}
    e889343e:	6165                	addi	sp,sp,112
          nd6_reachability_hint(ip6_current_src_addr());
    e8893440:	ac7fa06f          	j	e888df06 <nd6_reachability_hint>
              recv_data = cseg->p;
    e8893444:	00b9b023          	sd	a1,0(s3)
    e8893448:	b7b5                	j	e88933b4 <tcp_receive+0x830>
        if (pcb->ooseq == NULL) {
    e889344a:	6064                	ld	s1,192(s0)
          struct tcp_seg *next, *prev = NULL;
    e889344c:	4a01                	li	s4,0
                if (TCP_SEQ_BETWEEN(seqno, prev->tcphdr->seqno + 1, next->tcphdr->seqno - 1)) {
    e889344e:	fff7851b          	addiw	a0,a5,-1
        if (pcb->ooseq == NULL) {
    e8893452:	e895                	bnez	s1,e8893486 <tcp_receive+0x902>
          pcb->ooseq = tcp_seg_copy(&inseg);
    e8893454:	00053517          	auipc	a0,0x53
    e8893458:	24c50513          	addi	a0,a0,588 # e88e66a0 <inseg>
    e889345c:	915fd0ef          	jal	ra,e8890d70 <tcp_seg_copy>
    e8893460:	e068                	sd	a0,192(s0)
        tcp_send_empty_ack(pcb);
    e8893462:	8522                	mv	a0,s0
}
    e8893464:	7406                	ld	s0,96(sp)
    e8893466:	70a6                	ld	ra,104(sp)
    e8893468:	64e6                	ld	s1,88(sp)
    e889346a:	6946                	ld	s2,80(sp)
    e889346c:	69a6                	ld	s3,72(sp)
    e889346e:	6a06                	ld	s4,64(sp)
    e8893470:	7ae2                	ld	s5,56(sp)
    e8893472:	7b42                	ld	s6,48(sp)
    e8893474:	7ba2                	ld	s7,40(sp)
    e8893476:	7c02                	ld	s8,32(sp)
    e8893478:	6ce2                	ld	s9,24(sp)
    e889347a:	6d42                	ld	s10,16(sp)
    e889347c:	6da2                	ld	s11,8(sp)
    e889347e:	6165                	addi	sp,sp,112
        tcp_send_empty_ack(pcb);
    e8893480:	7060206f          	j	e8895b86 <tcp_send_empty_ack>
    e8893484:	84b6                	mv	s1,a3
            if (seqno == next->tcphdr->seqno) {
    e8893486:	6c90                	ld	a2,24(s1)
    e8893488:	4258                	lw	a4,4(a2)
    e889348a:	02e79963          	bne	a5,a4,e88934bc <tcp_receive+0x938>
              if (inseg.len > next->len) {
    e889348e:	00053517          	auipc	a0,0x53
    e8893492:	21250513          	addi	a0,a0,530 # e88e66a0 <inseg>
    e8893496:	01055703          	lhu	a4,16(a0)
    e889349a:	0104d783          	lhu	a5,16(s1)
    e889349e:	fce7f2e3          	bgeu	a5,a4,e8893462 <tcp_receive+0x8de>
                struct tcp_seg *cseg = tcp_seg_copy(&inseg);
    e88934a2:	8cffd0ef          	jal	ra,e8890d70 <tcp_seg_copy>
                if (cseg != NULL) {
    e88934a6:	dd55                	beqz	a0,e8893462 <tcp_receive+0x8de>
                  if (prev != NULL) {
    e88934a8:	000a0863          	beqz	s4,e88934b8 <tcp_receive+0x934>
                    prev->next = cseg;
    e88934ac:	00aa3023          	sd	a0,0(s4)
                    tcp_oos_insert_segment(cseg, next);
    e88934b0:	85a6                	mv	a1,s1
    e88934b2:	a90ff0ef          	jal	ra,e8892742 <tcp_oos_insert_segment>
    e88934b6:	b775                	j	e8893462 <tcp_receive+0x8de>
                    pcb->ooseq = cseg;
    e88934b8:	e068                	sd	a0,192(s0)
                  tcp_oos_insert_segment(cseg, next);
    e88934ba:	bfdd                	j	e88934b0 <tcp_receive+0x92c>
              if (prev == NULL) {
    e88934bc:	000a1f63          	bnez	s4,e88934da <tcp_receive+0x956>
                if (TCP_SEQ_LT(seqno, next->tcphdr->seqno)) {
    e88934c0:	40e786bb          	subw	a3,a5,a4
    e88934c4:	0606d763          	bgez	a3,e8893532 <tcp_receive+0x9ae>
                  struct tcp_seg *cseg = tcp_seg_copy(&inseg);
    e88934c8:	00053517          	auipc	a0,0x53
    e88934cc:	1d850513          	addi	a0,a0,472 # e88e66a0 <inseg>
    e88934d0:	8a1fd0ef          	jal	ra,e8890d70 <tcp_seg_copy>
                  if (cseg != NULL) {
    e88934d4:	d559                	beqz	a0,e8893462 <tcp_receive+0x8de>
                    pcb->ooseq = cseg;
    e88934d6:	e068                	sd	a0,192(s0)
    e88934d8:	bfe1                	j	e88934b0 <tcp_receive+0x92c>
                if (TCP_SEQ_BETWEEN(seqno, prev->tcphdr->seqno + 1, next->tcphdr->seqno - 1)) {
    e88934da:	018a3683          	ld	a3,24(s4)
    e88934de:	42d4                	lw	a3,4(a3)
    e88934e0:	40d506bb          	subw	a3,a0,a3
    e88934e4:	0406c763          	bltz	a3,e8893532 <tcp_receive+0x9ae>
    e88934e8:	40e586bb          	subw	a3,a1,a4
    e88934ec:	04d04363          	bgtz	a3,e8893532 <tcp_receive+0x9ae>
                  struct tcp_seg *cseg = tcp_seg_copy(&inseg);
    e88934f0:	00053517          	auipc	a0,0x53
    e88934f4:	1b050513          	addi	a0,a0,432 # e88e66a0 <inseg>
    e88934f8:	879fd0ef          	jal	ra,e8890d70 <tcp_seg_copy>
    e88934fc:	89aa                	mv	s3,a0
                  if (cseg != NULL) {
    e88934fe:	d135                	beqz	a0,e8893462 <tcp_receive+0x8de>
                    if (TCP_SEQ_GT(prev->tcphdr->seqno + prev->len, seqno)) {
    e8893500:	018a3783          	ld	a5,24(s4)
    e8893504:	00092583          	lw	a1,0(s2)
    e8893508:	43d8                	lw	a4,4(a5)
    e889350a:	010a5783          	lhu	a5,16(s4)
    e889350e:	9fb9                	addw	a5,a5,a4
    e8893510:	9f8d                	subw	a5,a5,a1
    e8893512:	00f05b63          	blez	a5,e8893528 <tcp_receive+0x9a4>
                      prev->len = (u16_t)(seqno - prev->tcphdr->seqno);
    e8893516:	9d99                	subw	a1,a1,a4
                      pbuf_realloc(prev->p, prev->len);
    e8893518:	008a3503          	ld	a0,8(s4)
                      prev->len = (u16_t)(seqno - prev->tcphdr->seqno);
    e889351c:	3c05b58b          	extu	a1,a1,15,0
    e8893520:	00ba1823          	sh	a1,16(s4)
                      pbuf_realloc(prev->p, prev->len);
    e8893524:	fcffb0ef          	jal	ra,e888f4f2 <pbuf_realloc>
                    prev->next = cseg;
    e8893528:	013a3023          	sd	s3,0(s4)
                    tcp_oos_insert_segment(cseg, next);
    e889352c:	85a6                	mv	a1,s1
    e889352e:	854e                	mv	a0,s3
    e8893530:	b749                	j	e88934b2 <tcp_receive+0x92e>
              if (next->next == NULL &&
    e8893532:	6094                	ld	a3,0(s1)
    e8893534:	8a26                	mv	s4,s1
    e8893536:	f6b9                	bnez	a3,e8893484 <tcp_receive+0x900>
    e8893538:	9f99                	subw	a5,a5,a4
    e889353a:	f2f054e3          	blez	a5,e8893462 <tcp_receive+0x8de>
                if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) {
    e889353e:	00c65503          	lhu	a0,12(a2)
    e8893542:	9ddf30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893546:	8905                	andi	a0,a0,1
    e8893548:	f0051de3          	bnez	a0,e8893462 <tcp_receive+0x8de>
                next->next = tcp_seg_copy(&inseg);
    e889354c:	00053517          	auipc	a0,0x53
    e8893550:	15450513          	addi	a0,a0,340 # e88e66a0 <inseg>
    e8893554:	81dfd0ef          	jal	ra,e8890d70 <tcp_seg_copy>
    e8893558:	e088                	sd	a0,0(s1)
                if (next->next != NULL) {
    e889355a:	f00504e3          	beqz	a0,e8893462 <tcp_receive+0x8de>
                  if (TCP_SEQ_GT(next->tcphdr->seqno + next->len, seqno)) {
    e889355e:	6c9c                	ld	a5,24(s1)
    e8893560:	00092583          	lw	a1,0(s2)
    e8893564:	43d8                	lw	a4,4(a5)
    e8893566:	0104d783          	lhu	a5,16(s1)
    e889356a:	9fb9                	addw	a5,a5,a4
    e889356c:	9f8d                	subw	a5,a5,a1
    e889356e:	00f05a63          	blez	a5,e8893582 <tcp_receive+0x9fe>
                    next->len = (u16_t)(seqno - next->tcphdr->seqno);
    e8893572:	9d99                	subw	a1,a1,a4
                    pbuf_realloc(next->p, next->len);
    e8893574:	6488                	ld	a0,8(s1)
                    next->len = (u16_t)(seqno - next->tcphdr->seqno);
    e8893576:	3c05b58b          	extu	a1,a1,15,0
    e889357a:	00b49823          	sh	a1,16(s1)
                    pbuf_realloc(next->p, next->len);
    e889357e:	f75fb0ef          	jal	ra,e888f4f2 <pbuf_realloc>
                  if (TCP_SEQ_GT((u32_t)tcplen + seqno, pcb->rcv_nxt + (u32_t)pcb->rcv_wnd)) {
    e8893582:	00092703          	lw	a4,0(s2)
    e8893586:	0009d783          	lhu	a5,0(s3)
    e889358a:	9fb9                	addw	a5,a5,a4
    e889358c:	4c38                	lw	a4,88(s0)
    e889358e:	9f99                	subw	a5,a5,a4
    e8893590:	4c78                	lw	a4,92(s0)
    e8893592:	9f99                	subw	a5,a5,a4
    e8893594:	ecf057e3          	blez	a5,e8893462 <tcp_receive+0x8de>
                    if (TCPH_FLAGS(next->next->tcphdr) & TCP_FIN) {
    e8893598:	609c                	ld	a5,0(s1)
    e889359a:	6f9c                	ld	a5,24(a5)
    e889359c:	00c7d503          	lhu	a0,12(a5)
    e88935a0:	97ff30ef          	jal	ra,e8886f1e <lwip_htons>
    e88935a4:	8905                	andi	a0,a0,1
    e88935a6:	c51d                	beqz	a0,e88935d4 <tcp_receive+0xa50>
                      TCPH_FLAGS_SET(next->next->tcphdr, TCPH_FLAGS(next->next->tcphdr) & ~TCP_FIN);
    e88935a8:	609c                	ld	a5,0(s1)
    e88935aa:	6f9c                	ld	a5,24(a5)
    e88935ac:	00c7da03          	lhu	s4,12(a5)
    e88935b0:	8552                	mv	a0,s4
    e88935b2:	96df30ef          	jal	ra,e8886f1e <lwip_htons>
    e88935b6:	03e57513          	andi	a0,a0,62
    e88935ba:	965f30ef          	jal	ra,e8886f1e <lwip_htons>
    e88935be:	609c                	ld	a5,0(s1)
    e88935c0:	6f98                	ld	a4,24(a5)
    e88935c2:	77f1                	lui	a5,0xffffc
    e88935c4:	0ff78793          	addi	a5,a5,255 # ffffffffffffc0ff <__DRAM0_INF_BASE+0xffffffff0000c0ff>
    e88935c8:	00fa7a33          	and	s4,s4,a5
    e88935cc:	00aa6a33          	or	s4,s4,a0
    e88935d0:	01471623          	sh	s4,12(a4)
                    next->next->len = (u16_t)(pcb->rcv_nxt + pcb->rcv_wnd - seqno);
    e88935d4:	4c74                	lw	a3,92(s0)
    e88935d6:	4c3c                	lw	a5,88(s0)
    e88935d8:	6098                	ld	a4,0(s1)
    e88935da:	9fb5                	addw	a5,a5,a3
    e88935dc:	00092683          	lw	a3,0(s2)
    e88935e0:	9f95                	subw	a5,a5,a3
    e88935e2:	00f71823          	sh	a5,16(a4)
                    pbuf_realloc(next->next->p, next->next->len);
    e88935e6:	609c                	ld	a5,0(s1)
    e88935e8:	0107d583          	lhu	a1,16(a5)
    e88935ec:	6788                	ld	a0,8(a5)
    e88935ee:	f05fb0ef          	jal	ra,e888f4f2 <pbuf_realloc>
                    tcplen = TCP_TCPLEN(next->next);
    e88935f2:	609c                	ld	a5,0(s1)
    e88935f4:	0107d483          	lhu	s1,16(a5)
    e88935f8:	6f9c                	ld	a5,24(a5)
    e88935fa:	00c7d503          	lhu	a0,12(a5)
    e88935fe:	921f30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893602:	890d                	andi	a0,a0,3
    e8893604:	00a03533          	snez	a0,a0
    e8893608:	9d25                	addw	a0,a0,s1
                    LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n",
    e889360a:	00092703          	lw	a4,0(s2)
    e889360e:	4c3c                	lw	a5,88(s0)
    e8893610:	4c74                	lw	a3,92(s0)
                    tcplen = TCP_TCPLEN(next->next);
    e8893612:	3c05350b          	extu	a0,a0,15,0
    e8893616:	00a99023          	sh	a0,0(s3)
                    LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n",
    e889361a:	9fb5                	addw	a5,a5,a3
    e889361c:	9d39                	addw	a0,a0,a4
    e889361e:	e4f502e3          	beq	a0,a5,e8893462 <tcp_receive+0x8de>
    e8893622:	02f00593          	li	a1,47
    e8893626:	0003e517          	auipc	a0,0x3e
    e889362a:	53250513          	addi	a0,a0,1330 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e889362e:	d4be80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893632:	00150693          	addi	a3,a0,1
    e8893636:	6f900613          	li	a2,1785
    e889363a:	0003e597          	auipc	a1,0x3e
    e889363e:	69658593          	addi	a1,a1,1686 # e88d1cd0 <tcp_persist_backoff+0x760>
    e8893642:	0003c517          	auipc	a0,0x3c
    e8893646:	a6e50513          	addi	a0,a0,-1426 # e88cf0b0 <kSinTable1024+0x900>
    e889364a:	c7de80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889364e:	bd11                	j	e8893462 <tcp_receive+0x8de>
    if (!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd - 1)) {
    e8893650:	40d7873b          	subw	a4,a5,a3
    e8893654:	00074863          	bltz	a4,e8893664 <tcp_receive+0xae0>
    e8893658:	4c78                	lw	a4,92(s0)
    e889365a:	2785                	addiw	a5,a5,1
    e889365c:	9f95                	subw	a5,a5,a3
    e889365e:	9f99                	subw	a5,a5,a4
    e8893660:	00f05863          	blez	a5,e8893670 <tcp_receive+0xaec>
      tcp_ack_now(pcb);
    e8893664:	04e45783          	lhu	a5,78(s0)
    e8893668:	0027e793          	ori	a5,a5,2
    e889366c:	04f41723          	sh	a5,78(s0)
}
    e8893670:	70a6                	ld	ra,104(sp)
    e8893672:	7406                	ld	s0,96(sp)
    e8893674:	64e6                	ld	s1,88(sp)
    e8893676:	6946                	ld	s2,80(sp)
    e8893678:	69a6                	ld	s3,72(sp)
    e889367a:	6a06                	ld	s4,64(sp)
    e889367c:	7ae2                	ld	s5,56(sp)
    e889367e:	7b42                	ld	s6,48(sp)
    e8893680:	7ba2                	ld	s7,40(sp)
    e8893682:	7c02                	ld	s8,32(sp)
    e8893684:	6ce2                	ld	s9,24(sp)
    e8893686:	6d42                	ld	s10,16(sp)
    e8893688:	6da2                	ld	s11,8(sp)
    e889368a:	6165                	addi	sp,sp,112
    e889368c:	8082                	ret

00000000e889368e <tcp_input>:
{
    e889368e:	7119                	addi	sp,sp,-128
    e8893690:	f4a6                	sd	s1,104(sp)
    e8893692:	fc86                	sd	ra,120(sp)
    e8893694:	f8a2                	sd	s0,112(sp)
    e8893696:	f0ca                	sd	s2,96(sp)
    e8893698:	ecce                	sd	s3,88(sp)
    e889369a:	e8d2                	sd	s4,80(sp)
    e889369c:	e4d6                	sd	s5,72(sp)
    e889369e:	e0da                	sd	s6,64(sp)
    e88936a0:	fc5e                	sd	s7,56(sp)
    e88936a2:	f862                	sd	s8,48(sp)
    e88936a4:	f466                	sd	s9,40(sp)
    e88936a6:	f06a                	sd	s10,32(sp)
    e88936a8:	ec6e                	sd	s11,24(sp)
    e88936aa:	84aa                	mv	s1,a0
  LWIP_ASSERT("tcp_input: invalid pbuf", p != NULL);
    e88936ac:	e51d                	bnez	a0,e88936da <tcp_input+0x4c>
    e88936ae:	02f00593          	li	a1,47
    e88936b2:	0003e517          	auipc	a0,0x3e
    e88936b6:	4a650513          	addi	a0,a0,1190 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e88936ba:	cbfe80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88936be:	00150693          	addi	a3,a0,1
    e88936c2:	08300613          	li	a2,131
    e88936c6:	0003e597          	auipc	a1,0x3e
    e88936ca:	27258593          	addi	a1,a1,626 # e88d1938 <tcp_persist_backoff+0x3c8>
    e88936ce:	0003c517          	auipc	a0,0x3c
    e88936d2:	9e250513          	addi	a0,a0,-1566 # e88cf0b0 <kSinTable1024+0x900>
    e88936d6:	bf1e80ef          	jal	ra,e887c2c6 <eLIBs_printf>
  TCP_STATS_INC(tcp.recv);
    e88936da:	00053417          	auipc	s0,0x53
    e88936de:	d7640413          	addi	s0,s0,-650 # e88e6450 <lwip_stats>
    e88936e2:	0ae45783          	lhu	a5,174(s0)
  tcphdr = (struct tcp_hdr *)p->payload;
    e88936e6:	00053917          	auipc	s2,0x53
    e88936ea:	00290913          	addi	s2,s2,2 # e88e66e8 <tcphdr>
  TCP_STATS_INC(tcp.recv);
    e88936ee:	2785                	addiw	a5,a5,1
    e88936f0:	0af41723          	sh	a5,174(s0)
  MIB2_STATS_INC(mib2.tcpinsegs);
    e88936f4:	1ac42783          	lw	a5,428(s0)
    e88936f8:	2785                	addiw	a5,a5,1
    e88936fa:	1af42623          	sw	a5,428(s0)
  tcphdr = (struct tcp_hdr *)p->payload;
    e88936fe:	649c                	ld	a5,8(s1)
  if (p->len < TCP_HLEN) {
    e8893700:	0124d703          	lhu	a4,18(s1)
  tcphdr = (struct tcp_hdr *)p->payload;
    e8893704:	00f93023          	sd	a5,0(s2)
  if (p->len < TCP_HLEN) {
    e8893708:	47cd                	li	a5,19
    e889370a:	00e7e863          	bltu	a5,a4,e889371a <tcp_input+0x8c>
      TCP_STATS_INC(tcp.lenerr);
    e889370e:	0b645783          	lhu	a5,182(s0)
    e8893712:	2785                	addiw	a5,a5,1
    e8893714:	0af41b23          	sh	a5,182(s0)
      goto dropped;
    e8893718:	a095                	j	e889377c <tcp_input+0xee>
  if (ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()) ||
    e889371a:	00052317          	auipc	t1,0x52
    e889371e:	42e30313          	addi	t1,t1,1070 # e88e5b48 <ip_data>
    e8893722:	05034783          	lbu	a5,80(t1)
    e8893726:	4999                	li	s3,6
    e8893728:	8d1a                	mv	s10,t1
    e889372a:	03379d63          	bne	a5,s3,e8893764 <tcp_input+0xd6>
    e889372e:	03cd4703          	lbu	a4,60(s10)
    e8893732:	0ff00793          	li	a5,255
    e8893736:	02e78e63          	beq	a5,a4,e8893772 <tcp_input+0xe4>
    u16_t chksum = ip_chksum_pseudo(p, IP_PROTO_TCP, p->tot_len,
    e889373a:	0104d603          	lhu	a2,16(s1)
    e889373e:	00052717          	auipc	a4,0x52
    e8893742:	44670713          	addi	a4,a4,1094 # e88e5b84 <ip_data+0x3c>
    e8893746:	00052697          	auipc	a3,0x52
    e889374a:	42668693          	addi	a3,a3,1062 # e88e5b6c <ip_data+0x24>
    e889374e:	4599                	li	a1,6
    e8893750:	8526                	mv	a0,s1
    e8893752:	8fcf40ef          	jal	ra,e888784e <ip_chksum_pseudo>
    if (chksum != 0) {
    e8893756:	c929                	beqz	a0,e88937a8 <tcp_input+0x11a>
      TCP_STATS_INC(tcp.chkerr);
    e8893758:	0b445783          	lhu	a5,180(s0)
    e889375c:	2785                	addiw	a5,a5,1
    e889375e:	0af41a23          	sh	a5,180(s0)
      goto dropped;
    e8893762:	a829                	j	e889377c <tcp_input+0xee>
  if (ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()) ||
    e8893764:	00033583          	ld	a1,0(t1)
    e8893768:	03c32503          	lw	a0,60(t1)
    e889376c:	e51f50ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
    e8893770:	c10d                	beqz	a0,e8893792 <tcp_input+0x104>
    TCP_STATS_INC(tcp.proterr);
    e8893772:	0bc45783          	lhu	a5,188(s0)
    e8893776:	2785                	addiw	a5,a5,1
    e8893778:	0af41e23          	sh	a5,188(s0)
  TCP_STATS_INC(tcp.drop);
    e889377c:	0b245783          	lhu	a5,178(s0)
    e8893780:	2785                	addiw	a5,a5,1
    e8893782:	0af41923          	sh	a5,178(s0)
  MIB2_STATS_INC(mib2.tcpinerrs);
    e8893786:	1b042783          	lw	a5,432(s0)
    e889378a:	2785                	addiw	a5,a5,1
    e889378c:	1af42823          	sw	a5,432(s0)
    e8893790:	a5e9                	j	e8893e5a <tcp_input+0x7cc>
      ip_addr_ismulticast(ip_current_dest_addr())) {
    e8893792:	050d4703          	lbu	a4,80(s10)
    e8893796:	03cd2783          	lw	a5,60(s10)
    e889379a:	f9370ae3          	beq	a4,s3,e889372e <tcp_input+0xa0>
  if (ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()) ||
    e889379e:	0f07f793          	andi	a5,a5,240
    e88937a2:	0e000713          	li	a4,224
    e88937a6:	bf41                	j	e8893736 <tcp_input+0xa8>
  hdrlen_bytes = TCPH_HDRLEN_BYTES(tcphdr);
    e88937a8:	00093783          	ld	a5,0(s2)
    e88937ac:	00c7d503          	lhu	a0,12(a5)
    e88937b0:	f6ef30ef          	jal	ra,e8886f1e <lwip_htons>
    e88937b4:	00c5559b          	srliw	a1,a0,0xc
    e88937b8:	0025959b          	slliw	a1,a1,0x2
    e88937bc:	0ff5f593          	andi	a1,a1,255
  if ((hdrlen_bytes < TCP_HLEN) || (hdrlen_bytes > p->tot_len)) {
    e88937c0:	47cd                	li	a5,19
    e88937c2:	f4b7f6e3          	bgeu	a5,a1,e889370e <tcp_input+0x80>
    e88937c6:	0104d783          	lhu	a5,16(s1)
    e88937ca:	f4b7e2e3          	bltu	a5,a1,e889370e <tcp_input+0x80>
  tcphdr_opt2 = NULL;
    e88937ce:	00053617          	auipc	a2,0x53
    e88937d2:	f2063523          	sd	zero,-214(a2) # e88e66f8 <tcphdr_opt2>
  tcphdr_optlen = (u16_t)(hdrlen_bytes - TCP_HLEN);
    e88937d6:	fec5871b          	addiw	a4,a1,-20
    e88937da:	00053797          	auipc	a5,0x53
    e88937de:	f2678793          	addi	a5,a5,-218 # e88e6700 <tcphdr_optlen>
    e88937e2:	3c07370b          	extu	a4,a4,15,0
  if (p->len >= hdrlen_bytes) {
    e88937e6:	0124d603          	lhu	a2,18(s1)
  tcphdr_optlen = (u16_t)(hdrlen_bytes - TCP_HLEN);
    e88937ea:	00e79023          	sh	a4,0(a5)
  if (p->len >= hdrlen_bytes) {
    e88937ee:	8a3e                	mv	s4,a5
    e88937f0:	00053a97          	auipc	s5,0x53
    e88937f4:	f00a8a93          	addi	s5,s5,-256 # e88e66f0 <tcphdr_opt1len>
    e88937f8:	0eb66c63          	bltu	a2,a1,e88938f0 <tcp_input+0x262>
    pbuf_remove_header(p, hdrlen_bytes); /* cannot fail */
    e88937fc:	8526                	mv	a0,s1
    tcphdr_opt1len = tcphdr_optlen;
    e88937fe:	00ea9023          	sh	a4,0(s5)
    pbuf_remove_header(p, hdrlen_bytes); /* cannot fail */
    e8893802:	9a7fb0ef          	jal	ra,e888f1a8 <pbuf_remove_header>
  tcphdr->src = lwip_ntohs(tcphdr->src);
    e8893806:	00093983          	ld	s3,0(s2)
  seqno = tcphdr->seqno = lwip_ntohl(tcphdr->seqno);
    e889380a:	00053a17          	auipc	s4,0x53
    e889380e:	ecaa0a13          	addi	s4,s4,-310 # e88e66d4 <seqno>
    e8893812:	00053b97          	auipc	s7,0x53
    e8893816:	ef0b8b93          	addi	s7,s7,-272 # e88e6702 <tcplen>
  tcphdr->src = lwip_ntohs(tcphdr->src);
    e889381a:	0009d503          	lhu	a0,0(s3)
    e889381e:	f00f30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893822:	00a99023          	sh	a0,0(s3)
  tcphdr->dest = lwip_ntohs(tcphdr->dest);
    e8893826:	00093983          	ld	s3,0(s2)
    e889382a:	0029d503          	lhu	a0,2(s3)
    e889382e:	ef0f30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893832:	00a99123          	sh	a0,2(s3)
  seqno = tcphdr->seqno = lwip_ntohl(tcphdr->seqno);
    e8893836:	00093983          	ld	s3,0(s2)
    e889383a:	0049a503          	lw	a0,4(s3)
    e889383e:	ef0f30ef          	jal	ra,e8886f2e <lwip_htonl>
    e8893842:	2501                	sext.w	a0,a0
    e8893844:	00a9a223          	sw	a0,4(s3)
  ackno = tcphdr->ackno = lwip_ntohl(tcphdr->ackno);
    e8893848:	00093983          	ld	s3,0(s2)
  seqno = tcphdr->seqno = lwip_ntohl(tcphdr->seqno);
    e889384c:	00aa2023          	sw	a0,0(s4)
  ackno = tcphdr->ackno = lwip_ntohl(tcphdr->ackno);
    e8893850:	0089a503          	lw	a0,8(s3)
    e8893854:	edaf30ef          	jal	ra,e8886f2e <lwip_htonl>
  tcphdr->wnd = lwip_ntohs(tcphdr->wnd);
    e8893858:	00093a83          	ld	s5,0(s2)
  ackno = tcphdr->ackno = lwip_ntohl(tcphdr->ackno);
    e889385c:	2501                	sext.w	a0,a0
    e889385e:	00a9a423          	sw	a0,8(s3)
    e8893862:	00053997          	auipc	s3,0x53
    e8893866:	e3698993          	addi	s3,s3,-458 # e88e6698 <ackno>
    e889386a:	00a9a023          	sw	a0,0(s3)
  tcphdr->wnd = lwip_ntohs(tcphdr->wnd);
    e889386e:	00ead503          	lhu	a0,14(s5)
    e8893872:	eacf30ef          	jal	ra,e8886f1e <lwip_htons>
    e8893876:	00aa9723          	sh	a0,14(s5)
  flags = TCPH_FLAGS(tcphdr);
    e889387a:	00093783          	ld	a5,0(s2)
    e889387e:	00053a97          	auipc	s5,0x53
    e8893882:	e1ea8a93          	addi	s5,s5,-482 # e88e669c <flags>
    e8893886:	00c7d503          	lhu	a0,12(a5)
    e889388a:	e94f30ef          	jal	ra,e8886f1e <lwip_htons>
    e889388e:	0ff57513          	andi	a0,a0,255
    e8893892:	03f57793          	andi	a5,a0,63
    e8893896:	00fa8023          	sb	a5,0(s5)
  if (flags & (TCP_FIN | TCP_SYN)) {
    e889389a:	890d                	andi	a0,a0,3
  tcplen = p->tot_len;
    e889389c:	0104d703          	lhu	a4,16(s1)
  if (flags & (TCP_FIN | TCP_SYN)) {
    e88938a0:	12050e63          	beqz	a0,e88939dc <tcp_input+0x34e>
    tcplen++;
    e88938a4:	0017079b          	addiw	a5,a4,1
    e88938a8:	3c07b78b          	extu	a5,a5,15,0
    e88938ac:	00fb9023          	sh	a5,0(s7)
    if (tcplen < p->tot_len) {
    e88938b0:	e4e7efe3          	bltu	a5,a4,e889370e <tcp_input+0x80>
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e88938b4:	00053b17          	auipc	s6,0x53
    e88938b8:	db4b0b13          	addi	s6,s6,-588 # e88e6668 <tcp_active_pcbs>
    e88938bc:	000b3d83          	ld	s11,0(s6)
  prev = NULL;
    e88938c0:	4c01                	li	s8,0
    LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED);
    e88938c2:	0003ec97          	auipc	s9,0x3e
    e88938c6:	296c8c93          	addi	s9,s9,662 # e88d1b58 <tcp_persist_backoff+0x5e8>
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e88938ca:	100d9c63          	bnez	s11,e88939e2 <tcp_input+0x354>
    for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
    e88938ce:	00053797          	auipc	a5,0x53
    e88938d2:	dc278793          	addi	a5,a5,-574 # e88e6690 <tcp_tw_pcbs>
    e88938d6:	0007bc03          	ld	s8,0(a5)
      LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
    e88938da:	4e29                	li	t3,10
    e88938dc:	0003e897          	auipc	a7,0x3e
    e88938e0:	27c88893          	addi	a7,a7,636 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e88938e4:	0003bc97          	auipc	s9,0x3b
    e88938e8:	7ccc8c93          	addi	s9,s9,1996 # e88cf0b0 <kSinTable1024+0x900>
          pcb->local_port == tcphdr->dest &&
    e88938ec:	4d99                	li	s11,6
    for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
    e88938ee:	aba5                	j	e8893e66 <tcp_input+0x7d8>
    LWIP_ASSERT("p->next != NULL", p->next != NULL);
    e88938f0:	609c                	ld	a5,0(s1)
    e88938f2:	e79d                	bnez	a5,e8893920 <tcp_input+0x292>
    e88938f4:	02f00593          	li	a1,47
    e88938f8:	0003e517          	auipc	a0,0x3e
    e88938fc:	26050513          	addi	a0,a0,608 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8893900:	a79e80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893904:	00150693          	addi	a3,a0,1
    e8893908:	0c200613          	li	a2,194
    e889390c:	0003e597          	auipc	a1,0x3e
    e8893910:	04458593          	addi	a1,a1,68 # e88d1950 <tcp_persist_backoff+0x3e0>
    e8893914:	0003b517          	auipc	a0,0x3b
    e8893918:	79c50513          	addi	a0,a0,1948 # e88cf0b0 <kSinTable1024+0x900>
    e889391c:	9abe80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    pbuf_remove_header(p, TCP_HLEN);
    e8893920:	45d1                	li	a1,20
    e8893922:	8526                	mv	a0,s1
    e8893924:	885fb0ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    tcphdr_opt1len = p->len;
    e8893928:	0124d983          	lhu	s3,18(s1)
    pbuf_remove_header(p, tcphdr_opt1len);
    e889392c:	8526                	mv	a0,s1
    e889392e:	85ce                	mv	a1,s3
    tcphdr_opt1len = p->len;
    e8893930:	013a9023          	sh	s3,0(s5)
    opt2len = (u16_t)(tcphdr_optlen - tcphdr_opt1len);
    e8893934:	000a5a83          	lhu	s5,0(s4)
    pbuf_remove_header(p, tcphdr_opt1len);
    e8893938:	871fb0ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    if (opt2len > p->next->len) {
    e889393c:	6088                	ld	a0,0(s1)
    opt2len = (u16_t)(tcphdr_optlen - tcphdr_opt1len);
    e889393e:	413a8a3b          	subw	s4,s5,s3
    e8893942:	3c0a3a0b          	extu	s4,s4,15,0
    if (opt2len > p->next->len) {
    e8893946:	01255783          	lhu	a5,18(a0)
    e889394a:	dd47e2e3          	bltu	a5,s4,e889370e <tcp_input+0x80>
    tcphdr_opt2 = (u8_t *)p->next->payload;
    e889394e:	651c                	ld	a5,8(a0)
    pbuf_remove_header(p->next, opt2len);
    e8893950:	85d2                	mv	a1,s4
    tcphdr_opt2 = (u8_t *)p->next->payload;
    e8893952:	00053717          	auipc	a4,0x53
    e8893956:	daf73323          	sd	a5,-602(a4) # e88e66f8 <tcphdr_opt2>
    pbuf_remove_header(p->next, opt2len);
    e889395a:	84ffb0ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    p->tot_len = (u16_t)(p->tot_len - opt2len);
    e889395e:	0104d583          	lhu	a1,16(s1)
    LWIP_ASSERT("p->len == 0", p->len == 0);
    e8893962:	0124d783          	lhu	a5,18(s1)
    p->tot_len = (u16_t)(p->tot_len - opt2len);
    e8893966:	013585bb          	addw	a1,a1,s3
    e889396a:	415585bb          	subw	a1,a1,s5
    e889396e:	00b49823          	sh	a1,16(s1)
    LWIP_ASSERT("p->len == 0", p->len == 0);
    e8893972:	c79d                	beqz	a5,e88939a0 <tcp_input+0x312>
    e8893974:	02f00593          	li	a1,47
    e8893978:	0003e517          	auipc	a0,0x3e
    e889397c:	1e050513          	addi	a0,a0,480 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8893980:	9f9e80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893984:	00150693          	addi	a3,a0,1
    e8893988:	0df00613          	li	a2,223
    e889398c:	0003e597          	auipc	a1,0x3e
    e8893990:	fd458593          	addi	a1,a1,-44 # e88d1960 <tcp_persist_backoff+0x3f0>
    e8893994:	0003b517          	auipc	a0,0x3b
    e8893998:	71c50513          	addi	a0,a0,1820 # e88cf0b0 <kSinTable1024+0x900>
    e889399c:	92be80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    LWIP_ASSERT("p->tot_len == p->next->tot_len", p->tot_len == p->next->tot_len);
    e88939a0:	609c                	ld	a5,0(s1)
    e88939a2:	0104d703          	lhu	a4,16(s1)
    e88939a6:	0107d783          	lhu	a5,16(a5)
    e88939aa:	e4f70ee3          	beq	a4,a5,e8893806 <tcp_input+0x178>
    e88939ae:	02f00593          	li	a1,47
    e88939b2:	0003e517          	auipc	a0,0x3e
    e88939b6:	1a650513          	addi	a0,a0,422 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e88939ba:	9bfe80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88939be:	00150693          	addi	a3,a0,1
    e88939c2:	0e000613          	li	a2,224
    e88939c6:	0003e597          	auipc	a1,0x3e
    e88939ca:	faa58593          	addi	a1,a1,-86 # e88d1970 <tcp_persist_backoff+0x400>
    e88939ce:	0003b517          	auipc	a0,0x3b
    e88939d2:	6e250513          	addi	a0,a0,1762 # e88cf0b0 <kSinTable1024+0x900>
    e88939d6:	8f1e80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88939da:	b535                	j	e8893806 <tcp_input+0x178>
  tcplen = p->tot_len;
    e88939dc:	00eb9023          	sh	a4,0(s7)
    e88939e0:	bdd1                	j	e88938b4 <tcp_input+0x226>
    LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED);
    e88939e2:	048dc783          	lbu	a5,72(s11)
    e88939e6:	e785                	bnez	a5,e8893a0e <tcp_input+0x380>
    e88939e8:	02f00593          	li	a1,47
    e88939ec:	8566                	mv	a0,s9
    e88939ee:	98be80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88939f2:	00150693          	addi	a3,a0,1
    e88939f6:	0fb00613          	li	a2,251
    e88939fa:	0003e597          	auipc	a1,0x3e
    e88939fe:	f9658593          	addi	a1,a1,-106 # e88d1990 <tcp_persist_backoff+0x420>
    e8893a02:	0003b517          	auipc	a0,0x3b
    e8893a06:	6ae50513          	addi	a0,a0,1710 # e88cf0b0 <kSinTable1024+0x900>
    e8893a0a:	8bde80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT);
    e8893a0e:	048dc783          	lbu	a5,72(s11)
    e8893a12:	4729                	li	a4,10
    e8893a14:	02e79563          	bne	a5,a4,e8893a3e <tcp_input+0x3b0>
    e8893a18:	02f00593          	li	a1,47
    e8893a1c:	8566                	mv	a0,s9
    e8893a1e:	95be80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893a22:	00150693          	addi	a3,a0,1
    e8893a26:	0fc00613          	li	a2,252
    e8893a2a:	0003e597          	auipc	a1,0x3e
    e8893a2e:	f8e58593          	addi	a1,a1,-114 # e88d19b8 <tcp_persist_backoff+0x448>
    e8893a32:	0003b517          	auipc	a0,0x3b
    e8893a36:	67e50513          	addi	a0,a0,1662 # e88cf0b0 <kSinTable1024+0x900>
    e8893a3a:	88de80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN);
    e8893a3e:	048dc783          	lbu	a5,72(s11)
    e8893a42:	4705                	li	a4,1
    e8893a44:	02e79563          	bne	a5,a4,e8893a6e <tcp_input+0x3e0>
    e8893a48:	02f00593          	li	a1,47
    e8893a4c:	8566                	mv	a0,s9
    e8893a4e:	92be80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893a52:	00150693          	addi	a3,a0,1
    e8893a56:	0fd00613          	li	a2,253
    e8893a5a:	0003e597          	auipc	a1,0x3e
    e8893a5e:	f8e58593          	addi	a1,a1,-114 # e88d19e8 <tcp_persist_backoff+0x478>
    e8893a62:	0003b517          	auipc	a0,0x3b
    e8893a66:	64e50513          	addi	a0,a0,1614 # e88cf0b0 <kSinTable1024+0x900>
    e8893a6a:	85de80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if ((pcb->netif_idx != NETIF_NO_INDEX) &&
    e8893a6e:	030dc703          	lbu	a4,48(s11)
    e8893a72:	038db683          	ld	a3,56(s11)
    e8893a76:	cb11                	beqz	a4,e8893a8a <tcp_input+0x3fc>
        (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) {
    e8893a78:	008d3783          	ld	a5,8(s10)
    e8893a7c:	10e7c783          	lbu	a5,270(a5)
    e8893a80:	2785                	addiw	a5,a5,1
    if ((pcb->netif_idx != NETIF_NO_INDEX) &&
    e8893a82:	0ff7f793          	andi	a5,a5,255
    e8893a86:	22f71d63          	bne	a4,a5,e8893cc0 <tcp_input+0x632>
    if (pcb->remote_port == tcphdr->src &&
    e8893a8a:	00093783          	ld	a5,0(s2)
    e8893a8e:	04cdd603          	lhu	a2,76(s11)
    e8893a92:	0007d703          	lhu	a4,0(a5)
    e8893a96:	22e61563          	bne	a2,a4,e8893cc0 <tcp_input+0x632>
    e8893a9a:	04add703          	lhu	a4,74(s11)
    e8893a9e:	0027d783          	lhu	a5,2(a5)
    e8893aa2:	20f71f63          	bne	a4,a5,e8893cc0 <tcp_input+0x632>
        ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893aa6:	02cdc703          	lbu	a4,44(s11)
        pcb->local_port == tcphdr->dest &&
    e8893aaa:	038d4783          	lbu	a5,56(s10)
    e8893aae:	20e79963          	bne	a5,a4,e8893cc0 <tcp_input+0x632>
    e8893ab2:	4599                	li	a1,6
    e8893ab4:	018da703          	lw	a4,24(s11)
    e8893ab8:	024d2603          	lw	a2,36(s10)
    e8893abc:	1eb79263          	bne	a5,a1,e8893ca0 <tcp_input+0x612>
        ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893ac0:	4781                	li	a5,0
    e8893ac2:	02c71b63          	bne	a4,a2,e8893af8 <tcp_input+0x46a>
    e8893ac6:	01cda603          	lw	a2,28(s11)
    e8893aca:	028d2703          	lw	a4,40(s10)
    e8893ace:	02e61563          	bne	a2,a4,e8893af8 <tcp_input+0x46a>
    e8893ad2:	020da603          	lw	a2,32(s11)
    e8893ad6:	02cd2703          	lw	a4,44(s10)
    e8893ada:	00e61f63          	bne	a2,a4,e8893af8 <tcp_input+0x46a>
    e8893ade:	024da603          	lw	a2,36(s11)
    e8893ae2:	030d2703          	lw	a4,48(s10)
    e8893ae6:	00e61963          	bne	a2,a4,e8893af8 <tcp_input+0x46a>
    e8893aea:	028dc783          	lbu	a5,40(s11)
    e8893aee:	034d4703          	lbu	a4,52(s10)
    e8893af2:	8f99                	sub	a5,a5,a4
    e8893af4:	0017b793          	seqz	a5,a5
        pcb->local_port == tcphdr->dest &&
    e8893af8:	1c078463          	beqz	a5,e8893cc0 <tcp_input+0x632>
        ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) {
    e8893afc:	014dc703          	lbu	a4,20(s11)
        ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893b00:	050d4783          	lbu	a5,80(s10)
    e8893b04:	1ae79e63          	bne	a5,a4,e8893cc0 <tcp_input+0x632>
    e8893b08:	4599                	li	a1,6
    e8893b0a:	000da603          	lw	a2,0(s11)
    e8893b0e:	03cd2703          	lw	a4,60(s10)
    e8893b12:	18b79c63          	bne	a5,a1,e8893caa <tcp_input+0x61c>
        ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) {
    e8893b16:	4781                	li	a5,0
    e8893b18:	02c71b63          	bne	a4,a2,e8893b4e <tcp_input+0x4c0>
    e8893b1c:	004da603          	lw	a2,4(s11)
    e8893b20:	040d2703          	lw	a4,64(s10)
    e8893b24:	02e61563          	bne	a2,a4,e8893b4e <tcp_input+0x4c0>
    e8893b28:	008da603          	lw	a2,8(s11)
    e8893b2c:	044d2703          	lw	a4,68(s10)
    e8893b30:	00e61f63          	bne	a2,a4,e8893b4e <tcp_input+0x4c0>
    e8893b34:	00cda603          	lw	a2,12(s11)
    e8893b38:	048d2703          	lw	a4,72(s10)
    e8893b3c:	00e61963          	bne	a2,a4,e8893b4e <tcp_input+0x4c0>
    e8893b40:	010dc783          	lbu	a5,16(s11)
    e8893b44:	04cd4703          	lbu	a4,76(s10)
    e8893b48:	8f99                	sub	a5,a5,a4
    e8893b4a:	0017b793          	seqz	a5,a5
        ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893b4e:	16078963          	beqz	a5,e8893cc0 <tcp_input+0x632>
      LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb);
    e8893b52:	03b69863          	bne	a3,s11,e8893b82 <tcp_input+0x4f4>
    e8893b56:	02f00593          	li	a1,47
    e8893b5a:	0003e517          	auipc	a0,0x3e
    e8893b5e:	ffe50513          	addi	a0,a0,-2 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8893b62:	817e80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893b66:	00150693          	addi	a3,a0,1
    e8893b6a:	10d00613          	li	a2,269
    e8893b6e:	0003e597          	auipc	a1,0x3e
    e8893b72:	ea258593          	addi	a1,a1,-350 # e88d1a10 <tcp_persist_backoff+0x4a0>
    e8893b76:	0003b517          	auipc	a0,0x3b
    e8893b7a:	53a50513          	addi	a0,a0,1338 # e88cf0b0 <kSinTable1024+0x900>
    e8893b7e:	f48e80ef          	jal	ra,e887c2c6 <eLIBs_printf>
      if (prev != NULL) {
    e8893b82:	120c0963          	beqz	s8,e8893cb4 <tcp_input+0x626>
        prev->next = pcb->next;
    e8893b86:	038db783          	ld	a5,56(s11)
    e8893b8a:	02fc3c23          	sd	a5,56(s8)
        pcb->next = tcp_active_pcbs;
    e8893b8e:	000b3783          	ld	a5,0(s6)
        tcp_active_pcbs = pcb;
    e8893b92:	01bb3023          	sd	s11,0(s6)
        pcb->next = tcp_active_pcbs;
    e8893b96:	02fdbc23          	sd	a5,56(s11)
      LWIP_ASSERT("tcp_input: pcb->next != pcb (after cache)", pcb->next != pcb);
    e8893b9a:	038db783          	ld	a5,56(s11)
    e8893b9e:	03b79863          	bne	a5,s11,e8893bce <tcp_input+0x540>
    e8893ba2:	02f00593          	li	a1,47
    e8893ba6:	0003e517          	auipc	a0,0x3e
    e8893baa:	fb250513          	addi	a0,a0,-78 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8893bae:	fcae80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893bb2:	00150693          	addi	a3,a0,1
    e8893bb6:	11500613          	li	a2,277
    e8893bba:	0003e597          	auipc	a1,0x3e
    e8893bbe:	e8658593          	addi	a1,a1,-378 # e88d1a40 <tcp_persist_backoff+0x4d0>
    e8893bc2:	0003b517          	auipc	a0,0x3b
    e8893bc6:	4ee50513          	addi	a0,a0,1262 # e88cf0b0 <kSinTable1024+0x900>
    e8893bca:	efce80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    inseg.next = NULL;
    e8893bce:	00053717          	auipc	a4,0x53
    e8893bd2:	ac073923          	sd	zero,-1326(a4) # e88e66a0 <inseg>
    e8893bd6:	00053797          	auipc	a5,0x53
    e8893bda:	aca78793          	addi	a5,a5,-1334 # e88e66a0 <inseg>
    inseg.len = p->tot_len;
    e8893bde:	0104d703          	lhu	a4,16(s1)
    inseg.p = p;
    e8893be2:	e784                	sd	s1,8(a5)
    inseg.len = p->tot_len;
    e8893be4:	00e79823          	sh	a4,16(a5)
    inseg.tcphdr = tcphdr;
    e8893be8:	00093703          	ld	a4,0(s2)
    e8893bec:	893e                	mv	s2,a5
    e8893bee:	ef98                	sd	a4,24(a5)
    recv_data = NULL;
    e8893bf0:	00053717          	auipc	a4,0x53
    e8893bf4:	ac073c23          	sd	zero,-1320(a4) # e88e66c8 <recv_data>
    recv_flags = 0;
    e8893bf8:	00053717          	auipc	a4,0x53
    e8893bfc:	ac070c23          	sb	zero,-1320(a4) # e88e66d0 <recv_flags>
    recv_acked = 0;
    e8893c00:	00053717          	auipc	a4,0x53
    e8893c04:	ac072023          	sw	zero,-1344(a4) # e88e66c0 <recv_acked>
    if (flags & TCP_PSH) {
    e8893c08:	000ac703          	lbu	a4,0(s5)
    e8893c0c:	8b21                	andi	a4,a4,8
    e8893c0e:	c719                	beqz	a4,e8893c1c <tcp_input+0x58e>
      p->flags |= PBUF_FLAG_PUSH;
    e8893c10:	0154c783          	lbu	a5,21(s1)
    e8893c14:	0017e793          	ori	a5,a5,1
    e8893c18:	00f48aa3          	sb	a5,21(s1)
    if (pcb->refused_data != NULL) {
    e8893c1c:	0c8db783          	ld	a5,200(s11)
    e8893c20:	56078063          	beqz	a5,e8894180 <tcp_input+0xaf2>
      if ((tcp_process_refused_data(pcb) == ERR_ABRT) ||
    e8893c24:	856e                	mv	a0,s11
    e8893c26:	ac0fe0ef          	jal	ra,e8891ee6 <tcp_process_refused_data>
    e8893c2a:	57cd                	li	a5,-13
    e8893c2c:	00f50a63          	beq	a0,a5,e8893c40 <tcp_input+0x5b2>
    e8893c30:	0c8db783          	ld	a5,200(s11)
    e8893c34:	54078663          	beqz	a5,e8894180 <tcp_input+0xaf2>
          ((pcb->refused_data != NULL) && (tcplen > 0))) {
    e8893c38:	000bd783          	lhu	a5,0(s7)
    e8893c3c:	54078263          	beqz	a5,e8894180 <tcp_input+0xaf2>
        if (pcb->rcv_ann_wnd == 0) {
    e8893c40:	060da783          	lw	a5,96(s11)
    e8893c44:	e781                	bnez	a5,e8893c4c <tcp_input+0x5be>
          tcp_send_empty_ack(pcb);
    e8893c46:	856e                	mv	a0,s11
    e8893c48:	73f010ef          	jal	ra,e8895b86 <tcp_send_empty_ack>
        TCP_STATS_INC(tcp.drop);
    e8893c4c:	0b245783          	lhu	a5,178(s0)
    e8893c50:	2785                	addiw	a5,a5,1
    e8893c52:	0af41923          	sh	a5,178(s0)
        MIB2_STATS_INC(mib2.tcpinerrs);
    e8893c56:	1b042783          	lw	a5,432(s0)
    e8893c5a:	2785                	addiw	a5,a5,1
    e8893c5c:	1af42823          	sw	a5,432(s0)
    if (inseg.p != NULL) {
    e8893c60:	00893503          	ld	a0,8(s2)
    tcp_input_pcb = NULL;
    e8893c64:	00053797          	auipc	a5,0x53
    e8893c68:	a607ba23          	sd	zero,-1420(a5) # e88e66d8 <tcp_input_pcb>
    recv_data = NULL;
    e8893c6c:	00053797          	auipc	a5,0x53
    e8893c70:	a407be23          	sd	zero,-1444(a5) # e88e66c8 <recv_data>
    if (inseg.p != NULL) {
    e8893c74:	c519                	beqz	a0,e8893c82 <tcp_input+0x5f4>
      pbuf_free(inseg.p);
    e8893c76:	dd6fb0ef          	jal	ra,e888f24c <pbuf_free>
      inseg.p = NULL;
    e8893c7a:	00053797          	auipc	a5,0x53
    e8893c7e:	a207b723          	sd	zero,-1490(a5) # e88e66a8 <inseg+0x8>
}
    e8893c82:	70e6                	ld	ra,120(sp)
    e8893c84:	7446                	ld	s0,112(sp)
    e8893c86:	74a6                	ld	s1,104(sp)
    e8893c88:	7906                	ld	s2,96(sp)
    e8893c8a:	69e6                	ld	s3,88(sp)
    e8893c8c:	6a46                	ld	s4,80(sp)
    e8893c8e:	6aa6                	ld	s5,72(sp)
    e8893c90:	6b06                	ld	s6,64(sp)
    e8893c92:	7be2                	ld	s7,56(sp)
    e8893c94:	7c42                	ld	s8,48(sp)
    e8893c96:	7ca2                	ld	s9,40(sp)
    e8893c98:	7d02                	ld	s10,32(sp)
    e8893c9a:	6de2                	ld	s11,24(sp)
    e8893c9c:	6109                	addi	sp,sp,128
    e8893c9e:	8082                	ret
        pcb->local_port == tcphdr->dest &&
    e8893ca0:	40c707b3          	sub	a5,a4,a2
    e8893ca4:	0017b793          	seqz	a5,a5
    e8893ca8:	bd81                	j	e8893af8 <tcp_input+0x46a>
        ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893caa:	40c707b3          	sub	a5,a4,a2
    e8893cae:	0017b793          	seqz	a5,a5
    e8893cb2:	bd71                	j	e8893b4e <tcp_input+0x4c0>
        TCP_STATS_INC(tcp.cachehit);
    e8893cb4:	0c245783          	lhu	a5,194(s0)
    e8893cb8:	2785                	addiw	a5,a5,1
    e8893cba:	0cf41123          	sh	a5,194(s0)
    e8893cbe:	bdf1                	j	e8893b9a <tcp_input+0x50c>
  for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
    e8893cc0:	8c6e                	mv	s8,s11
    e8893cc2:	8db6                	mv	s11,a3
    e8893cc4:	b119                	j	e88938ca <tcp_input+0x23c>
      LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT);
    e8893cc6:	048c4783          	lbu	a5,72(s8)
    e8893cca:	03c78763          	beq	a5,t3,e8893cf8 <tcp_input+0x66a>
    e8893cce:	8546                	mv	a0,a7
    e8893cd0:	02f00593          	li	a1,47
    e8893cd4:	ea4e80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8893cd8:	00150693          	addi	a3,a0,1
    e8893cdc:	11f00613          	li	a2,287
    e8893ce0:	0003e597          	auipc	a1,0x3e
    e8893ce4:	d9058593          	addi	a1,a1,-624 # e88d1a70 <tcp_persist_backoff+0x500>
    e8893ce8:	8566                	mv	a0,s9
    e8893cea:	ddce80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8893cee:	4e29                	li	t3,10
    e8893cf0:	0003e897          	auipc	a7,0x3e
    e8893cf4:	e6888893          	addi	a7,a7,-408 # e88d1b58 <tcp_persist_backoff+0x5e8>
      if ((pcb->netif_idx != NETIF_NO_INDEX) &&
    e8893cf8:	030c4703          	lbu	a4,48(s8)
    e8893cfc:	cb11                	beqz	a4,e8893d10 <tcp_input+0x682>
          (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) {
    e8893cfe:	008d3783          	ld	a5,8(s10)
    e8893d02:	10e7c783          	lbu	a5,270(a5)
    e8893d06:	2785                	addiw	a5,a5,1
      if ((pcb->netif_idx != NETIF_NO_INDEX) &&
    e8893d08:	0ff7f793          	andi	a5,a5,255
    e8893d0c:	14f71b63          	bne	a4,a5,e8893e62 <tcp_input+0x7d4>
      if (pcb->remote_port == tcphdr->src &&
    e8893d10:	00093783          	ld	a5,0(s2)
    e8893d14:	04cc5703          	lhu	a4,76(s8)
    e8893d18:	0007d803          	lhu	a6,0(a5)
    e8893d1c:	15071363          	bne	a4,a6,e8893e62 <tcp_input+0x7d4>
          pcb->local_port == tcphdr->dest &&
    e8893d20:	0027d783          	lhu	a5,2(a5)
      if (pcb->remote_port == tcphdr->src &&
    e8893d24:	04ac5703          	lhu	a4,74(s8)
    e8893d28:	12f71d63          	bne	a4,a5,e8893e62 <tcp_input+0x7d4>
          ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893d2c:	02cc4683          	lbu	a3,44(s8)
          pcb->local_port == tcphdr->dest &&
    e8893d30:	038d4703          	lbu	a4,56(s10)
    e8893d34:	12d71763          	bne	a4,a3,e8893e62 <tcp_input+0x7d4>
    e8893d38:	018c2603          	lw	a2,24(s8)
    e8893d3c:	024d2683          	lw	a3,36(s10)
    e8893d40:	0fb71063          	bne	a4,s11,e8893e20 <tcp_input+0x792>
          ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893d44:	4701                	li	a4,0
    e8893d46:	02c69b63          	bne	a3,a2,e8893d7c <tcp_input+0x6ee>
    e8893d4a:	01cc2603          	lw	a2,28(s8)
    e8893d4e:	028d2683          	lw	a3,40(s10)
    e8893d52:	02d61563          	bne	a2,a3,e8893d7c <tcp_input+0x6ee>
    e8893d56:	020c2603          	lw	a2,32(s8)
    e8893d5a:	02cd2683          	lw	a3,44(s10)
    e8893d5e:	00d61f63          	bne	a2,a3,e8893d7c <tcp_input+0x6ee>
    e8893d62:	024c2603          	lw	a2,36(s8)
    e8893d66:	030d2683          	lw	a3,48(s10)
    e8893d6a:	00d61963          	bne	a2,a3,e8893d7c <tcp_input+0x6ee>
    e8893d6e:	028c4703          	lbu	a4,40(s8)
    e8893d72:	034d4683          	lbu	a3,52(s10)
    e8893d76:	8f15                	sub	a4,a4,a3
    e8893d78:	00173713          	seqz	a4,a4
          pcb->local_port == tcphdr->dest &&
    e8893d7c:	c37d                	beqz	a4,e8893e62 <tcp_input+0x7d4>
          ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) {
    e8893d7e:	014c4683          	lbu	a3,20(s8)
          ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893d82:	050d4703          	lbu	a4,80(s10)
    e8893d86:	0cd71e63          	bne	a4,a3,e8893e62 <tcp_input+0x7d4>
    e8893d8a:	000c2603          	lw	a2,0(s8)
    e8893d8e:	03cd2683          	lw	a3,60(s10)
    e8893d92:	09b71c63          	bne	a4,s11,e8893e2a <tcp_input+0x79c>
          ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) {
    e8893d96:	4701                	li	a4,0
    e8893d98:	02c69b63          	bne	a3,a2,e8893dce <tcp_input+0x740>
    e8893d9c:	004c2603          	lw	a2,4(s8)
    e8893da0:	040d2683          	lw	a3,64(s10)
    e8893da4:	02d61563          	bne	a2,a3,e8893dce <tcp_input+0x740>
    e8893da8:	008c2603          	lw	a2,8(s8)
    e8893dac:	044d2683          	lw	a3,68(s10)
    e8893db0:	00d61f63          	bne	a2,a3,e8893dce <tcp_input+0x740>
    e8893db4:	00cc2603          	lw	a2,12(s8)
    e8893db8:	048d2683          	lw	a3,72(s10)
    e8893dbc:	00d61963          	bne	a2,a3,e8893dce <tcp_input+0x740>
    e8893dc0:	010c4703          	lbu	a4,16(s8)
    e8893dc4:	04cd4683          	lbu	a3,76(s10)
    e8893dc8:	8f15                	sub	a4,a4,a3
    e8893dca:	00173713          	seqz	a4,a4
          ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893dce:	cb51                	beqz	a4,e8893e62 <tcp_input+0x7d4>
  if (flags & TCP_RST) {
    e8893dd0:	000ac703          	lbu	a4,0(s5)
    e8893dd4:	00477693          	andi	a3,a4,4
    e8893dd8:	e2c9                	bnez	a3,e8893e5a <tcp_input+0x7cc>
  if (flags & TCP_SYN) {
    e8893dda:	00277693          	andi	a3,a4,2
    e8893dde:	000bd583          	lhu	a1,0(s7)
    e8893de2:	caa9                	beqz	a3,e8893e34 <tcp_input+0x7a6>
    if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd)) {
    e8893de4:	000a2603          	lw	a2,0(s4)
    e8893de8:	058c2683          	lw	a3,88(s8)
    e8893dec:	40d6073b          	subw	a4,a2,a3
    e8893df0:	04074b63          	bltz	a4,e8893e46 <tcp_input+0x7b8>
    e8893df4:	05cc2703          	lw	a4,92(s8)
    e8893df8:	9f35                	addw	a4,a4,a3
    e8893dfa:	40e6073b          	subw	a4,a2,a4
    e8893dfe:	04e04463          	bgtz	a4,e8893e46 <tcp_input+0x7b8>
      tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(),
    e8893e02:	9e2d                	addw	a2,a2,a1
    e8893e04:	0009a583          	lw	a1,0(s3)
    e8893e08:	00052717          	auipc	a4,0x52
    e8893e0c:	d6470713          	addi	a4,a4,-668 # e88e5b6c <ip_data+0x24>
    e8893e10:	00052697          	auipc	a3,0x52
    e8893e14:	d7468693          	addi	a3,a3,-652 # e88e5b84 <ip_data+0x3c>
    e8893e18:	8562                	mv	a0,s8
    tcp_rst((const struct tcp_pcb *)pcb, ackno, seqno + tcplen, ip_current_dest_addr(),
    e8893e1a:	489010ef          	jal	ra,e8895aa2 <tcp_rst>
    e8893e1e:	a835                	j	e8893e5a <tcp_input+0x7cc>
          pcb->local_port == tcphdr->dest &&
    e8893e20:	40c68733          	sub	a4,a3,a2
    e8893e24:	00173713          	seqz	a4,a4
    e8893e28:	bf91                	j	e8893d7c <tcp_input+0x6ee>
          ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) &&
    e8893e2a:	40c68733          	sub	a4,a3,a2
    e8893e2e:	00173713          	seqz	a4,a4
    e8893e32:	bf71                	j	e8893dce <tcp_input+0x740>
  } else if (flags & TCP_FIN) {
    e8893e34:	8b05                	andi	a4,a4,1
    e8893e36:	cb01                	beqz	a4,e8893e46 <tcp_input+0x7b8>
    pcb->tmr = tcp_ticks;
    e8893e38:	00053797          	auipc	a5,0x53
    e8893e3c:	85078793          	addi	a5,a5,-1968 # e88e6688 <tcp_ticks>
    e8893e40:	439c                	lw	a5,0(a5)
    e8893e42:	04fc2a23          	sw	a5,84(s8)
  if ((tcplen > 0)) {
    e8893e46:	c991                	beqz	a1,e8893e5a <tcp_input+0x7cc>
    tcp_ack_now(pcb);
    e8893e48:	04ec5783          	lhu	a5,78(s8)
    tcp_output(pcb);
    e8893e4c:	8562                	mv	a0,s8
    tcp_ack_now(pcb);
    e8893e4e:	0027e793          	ori	a5,a5,2
    e8893e52:	04fc1723          	sh	a5,78(s8)
    tcp_output(pcb);
    e8893e56:	5bb010ef          	jal	ra,e8895c10 <tcp_output>
  pbuf_free(p);
    e8893e5a:	8526                	mv	a0,s1
    e8893e5c:	bf0fb0ef          	jal	ra,e888f24c <pbuf_free>
    e8893e60:	b50d                	j	e8893c82 <tcp_input+0x5f4>
    for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
    e8893e62:	038c3c03          	ld	s8,56(s8)
    e8893e66:	e60c10e3          	bnez	s8,e8893cc6 <tcp_input+0x638>
    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8893e6a:	00053617          	auipc	a2,0x53
    e8893e6e:	81660613          	addi	a2,a2,-2026 # e88e6680 <tcp_listen_pcbs>
    e8893e72:	00063883          	ld	a7,0(a2)
          (lpcb->netif_idx != netif_get_index(ip_data.current_input_netif))) {
    e8893e76:	008d3e03          	ld	t3,8(s10)
      if (lpcb->local_port == tcphdr->dest) {
    e8893e7a:	00093583          	ld	a1,0(s2)
        } else if (IP_ADDR_PCB_VERSION_MATCH_EXACT(lpcb, ip_current_dest_addr())) {
    e8893e7e:	050d4503          	lbu	a0,80(s10)
          if (ip_addr_cmp(&lpcb->local_ip, ip_current_dest_addr())) {
    e8893e82:	03cd2803          	lw	a6,60(s10)
    e8893e86:	040d2e83          	lw	t4,64(s10)
    e8893e8a:	044d2f03          	lw	t5,68(s10)
    e8893e8e:	048d2f83          	lw	t6,72(s10)
    e8893e92:	04cd4283          	lbu	t0,76(s10)
  struct tcp_pcb_listen *lpcb_any = NULL;
    e8893e96:	4701                	li	a4,0
  struct tcp_pcb *lpcb_prev = NULL;
    e8893e98:	4681                	li	a3,0
    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8893e9a:	8cc6                	mv	s9,a7
        if (IP_IS_ANY_TYPE_VAL(lpcb->local_ip)) {
    e8893e9c:	02e00393          	li	t2,46
          if (ip_addr_cmp(&lpcb->local_ip, ip_current_dest_addr())) {
    e8893ea0:	4319                	li	t1,6
    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8893ea2:	000c9763          	bnez	s9,e8893eb0 <tcp_input+0x822>
    if (lpcb != NULL) {
    e8893ea6:	28070563          	beqz	a4,e8894130 <tcp_input+0xaa2>
    e8893eaa:	8cba                	mv	s9,a4
    e8893eac:	8c36                	mv	s8,a3
    e8893eae:	a8b1                	j	e8893f0a <tcp_input+0x87c>
      if ((lpcb->netif_idx != NETIF_NO_INDEX) &&
    e8893eb0:	030ccd83          	lbu	s11,48(s9)
    e8893eb4:	000d8963          	beqz	s11,e8893ec6 <tcp_input+0x838>
          (lpcb->netif_idx != netif_get_index(ip_data.current_input_netif))) {
    e8893eb8:	10ee4783          	lbu	a5,270(t3)
    e8893ebc:	2785                	addiw	a5,a5,1
      if ((lpcb->netif_idx != NETIF_NO_INDEX) &&
    e8893ebe:	0ff7f793          	andi	a5,a5,255
    e8893ec2:	0afd9a63          	bne	s11,a5,e8893f76 <tcp_input+0x8e8>
      if (lpcb->local_port == tcphdr->dest) {
    e8893ec6:	04acdd83          	lhu	s11,74(s9)
    e8893eca:	0025d783          	lhu	a5,2(a1)
    e8893ece:	0afd9463          	bne	s11,a5,e8893f76 <tcp_input+0x8e8>
        if (IP_IS_ANY_TYPE_VAL(lpcb->local_ip)) {
    e8893ed2:	014cc783          	lbu	a5,20(s9)
    e8893ed6:	0a778463          	beq	a5,t2,e8893f7e <tcp_input+0x8f0>
        } else if (IP_ADDR_PCB_VERSION_MATCH_EXACT(lpcb, ip_current_dest_addr())) {
    e8893eda:	08a79e63          	bne	a5,a0,e8893f76 <tcp_input+0x8e8>
          if (ip_addr_cmp(&lpcb->local_ip, ip_current_dest_addr())) {
    e8893ede:	000ca783          	lw	a5,0(s9)
    e8893ee2:	06651d63          	bne	a0,t1,e8893f5c <tcp_input+0x8ce>
    e8893ee6:	18f81be3          	bne	a6,a5,e889487c <tcp_input+0x11ee>
    e8893eea:	004ca783          	lw	a5,4(s9)
    e8893eee:	19d797e3          	bne	a5,t4,e889487c <tcp_input+0x11ee>
    e8893ef2:	008ca783          	lw	a5,8(s9)
    e8893ef6:	19e793e3          	bne	a5,t5,e889487c <tcp_input+0x11ee>
    e8893efa:	00cca783          	lw	a5,12(s9)
    e8893efe:	17f79fe3          	bne	a5,t6,e889487c <tcp_input+0x11ee>
    e8893f02:	010cc783          	lbu	a5,16(s9)
    e8893f06:	16579be3          	bne	a5,t0,e889487c <tcp_input+0x11ee>
      if (prev != NULL) {
    e8893f0a:	060c0d63          	beqz	s8,e8893f84 <tcp_input+0x8f6>
        ((struct tcp_pcb_listen *)prev)->next = lpcb->next;
    e8893f0e:	038cb783          	ld	a5,56(s9)
        tcp_listen_pcbs.listen_pcbs = lpcb;
    e8893f12:	01963023          	sd	s9,0(a2)
        ((struct tcp_pcb_listen *)prev)->next = lpcb->next;
    e8893f16:	02fc3c23          	sd	a5,56(s8)
        lpcb->next = tcp_listen_pcbs.listen_pcbs;
    e8893f1a:	031cbc23          	sd	a7,56(s9)
  if (flags & TCP_RST) {
    e8893f1e:	000ac783          	lbu	a5,0(s5)
    e8893f22:	0047f713          	andi	a4,a5,4
    e8893f26:	fb15                	bnez	a4,e8893e5a <tcp_input+0x7cc>
  if (flags & TCP_ACK) {
    e8893f28:	0107f713          	andi	a4,a5,16
    e8893f2c:	c335                	beqz	a4,e8893f90 <tcp_input+0x902>
            ip_current_src_addr(), tcphdr->dest, tcphdr->src);
    e8893f2e:	00093783          	ld	a5,0(s2)
    tcp_rst((const struct tcp_pcb *)pcb, ackno, seqno + tcplen, ip_current_dest_addr(),
    e8893f32:	000bd583          	lhu	a1,0(s7)
    e8893f36:	000a2603          	lw	a2,0(s4)
    e8893f3a:	0007d803          	lhu	a6,0(a5)
    e8893f3e:	00052717          	auipc	a4,0x52
    e8893f42:	c2e70713          	addi	a4,a4,-978 # e88e5b6c <ip_data+0x24>
    e8893f46:	9e2d                	addw	a2,a2,a1
    e8893f48:	0027d783          	lhu	a5,2(a5)
    e8893f4c:	00052697          	auipc	a3,0x52
    e8893f50:	c3868693          	addi	a3,a3,-968 # e88e5b84 <ip_data+0x3c>
    e8893f54:	0009a583          	lw	a1,0(s3)
    e8893f58:	8566                	mv	a0,s9
    e8893f5a:	b5c1                	j	e8893e1a <tcp_input+0x78c>
          if (ip_addr_cmp(&lpcb->local_ip, ip_current_dest_addr())) {
    e8893f5c:	faf807e3          	beq	a6,a5,e8893f0a <tcp_input+0x87c>
          } else if (ip_addr_isany(&lpcb->local_ip)) {
    e8893f60:	0017b793          	seqz	a5,a5
    e8893f64:	a029                	j	e8893f6e <tcp_input+0x8e0>
    e8893f66:	008cb783          	ld	a5,8(s9)
    e8893f6a:	0017b793          	seqz	a5,a5
    e8893f6e:	42fc970b          	mvnez	a4,s9,a5
    e8893f72:	42fc168b          	mvnez	a3,s8,a5
    for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
    e8893f76:	8c66                	mv	s8,s9
    e8893f78:	038cbc83          	ld	s9,56(s9)
    e8893f7c:	b71d                	j	e8893ea2 <tcp_input+0x814>
    e8893f7e:	8766                	mv	a4,s9
    e8893f80:	86e2                	mv	a3,s8
    e8893f82:	bfd5                	j	e8893f76 <tcp_input+0x8e8>
        TCP_STATS_INC(tcp.cachehit);
    e8893f84:	0c245783          	lhu	a5,194(s0)
    e8893f88:	2785                	addiw	a5,a5,1
    e8893f8a:	0cf41123          	sh	a5,194(s0)
    e8893f8e:	bf41                	j	e8893f1e <tcp_input+0x890>
  } else if (flags & TCP_SYN) {
    e8893f90:	8b89                	andi	a5,a5,2
    e8893f92:	ec0784e3          	beqz	a5,e8893e5a <tcp_input+0x7cc>
    npcb = tcp_alloc(pcb->prio);
    e8893f96:	049cc503          	lbu	a0,73(s9)
    e8893f9a:	a3ffd0ef          	jal	ra,e88919d8 <tcp_alloc>
    e8893f9e:	89aa                	mv	s3,a0
    if (npcb == NULL) {
    e8893fa0:	e105                	bnez	a0,e8893fc0 <tcp_input+0x932>
      TCP_STATS_INC(tcp.memerr);
    e8893fa2:	0b845783          	lhu	a5,184(s0)
    e8893fa6:	2785                	addiw	a5,a5,1
    e8893fa8:	0af41c23          	sh	a5,184(s0)
      TCP_EVENT_ACCEPT(pcb, NULL, pcb->callback_arg, ERR_MEM, err);
    e8893fac:	050cb783          	ld	a5,80(s9)
    e8893fb0:	ea0785e3          	beqz	a5,e8893e5a <tcp_input+0x7cc>
    e8893fb4:	040cb503          	ld	a0,64(s9)
    e8893fb8:	567d                	li	a2,-1
    e8893fba:	4581                	li	a1,0
    e8893fbc:	9782                	jalr	a5
    e8893fbe:	bd71                	j	e8893e5a <tcp_input+0x7cc>
    ip_addr_copy(npcb->local_ip, *ip_current_dest_addr());
    e8893fc0:	050d4783          	lbu	a5,80(s10)
    e8893fc4:	4719                	li	a4,6
    e8893fc6:	00f50a23          	sb	a5,20(a0)
    e8893fca:	12e79c63          	bne	a5,a4,e8894102 <tcp_input+0xa74>
    e8893fce:	03cd2783          	lw	a5,60(s10)
    e8893fd2:	c11c                	sw	a5,0(a0)
    e8893fd4:	040d2783          	lw	a5,64(s10)
    e8893fd8:	c15c                	sw	a5,4(a0)
    e8893fda:	044d2783          	lw	a5,68(s10)
    e8893fde:	c51c                	sw	a5,8(a0)
    e8893fe0:	048d2783          	lw	a5,72(s10)
    e8893fe4:	c55c                	sw	a5,12(a0)
    e8893fe6:	04cd4783          	lbu	a5,76(s10)
    e8893fea:	00f50823          	sb	a5,16(a0)
    ip_addr_copy(npcb->remote_ip, *ip_current_src_addr());
    e8893fee:	038d4703          	lbu	a4,56(s10)
    e8893ff2:	024d2783          	lw	a5,36(s10)
    e8893ff6:	4699                	li	a3,6
    e8893ff8:	02e98623          	sb	a4,44(s3)
    e8893ffc:	00f9ac23          	sw	a5,24(s3)
    e8894000:	10d71b63          	bne	a4,a3,e8894116 <tcp_input+0xa88>
    e8894004:	028d2783          	lw	a5,40(s10)
    e8894008:	00f9ae23          	sw	a5,28(s3)
    e889400c:	02cd2783          	lw	a5,44(s10)
    e8894010:	02f9a023          	sw	a5,32(s3)
    e8894014:	030d2783          	lw	a5,48(s10)
    e8894018:	02f9a223          	sw	a5,36(s3)
    e889401c:	034d4783          	lbu	a5,52(s10)
    e8894020:	02f98423          	sb	a5,40(s3)
    npcb->local_port = pcb->local_port;
    e8894024:	04acd783          	lhu	a5,74(s9)
    iss = tcp_next_iss(npcb);
    e8894028:	854e                	mv	a0,s3
    npcb->local_port = pcb->local_port;
    e889402a:	04f99523          	sh	a5,74(s3)
    npcb->remote_port = tcphdr->src;
    e889402e:	00093783          	ld	a5,0(s2)
    e8894032:	0007d783          	lhu	a5,0(a5)
    e8894036:	04f99623          	sh	a5,76(s3)
    npcb->state = SYN_RCVD;
    e889403a:	478d                	li	a5,3
    e889403c:	04f98423          	sb	a5,72(s3)
    npcb->rcv_nxt = seqno + 1;
    e8894040:	000a2783          	lw	a5,0(s4)
    e8894044:	2785                	addiw	a5,a5,1
    e8894046:	04f9ac23          	sw	a5,88(s3)
    npcb->rcv_ann_right_edge = npcb->rcv_nxt;
    e889404a:	06f9a223          	sw	a5,100(s3)
    iss = tcp_next_iss(npcb);
    e889404e:	f25fc0ef          	jal	ra,e8890f72 <tcp_next_iss>
    e8894052:	2501                	sext.w	a0,a0
    npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */
    e8894054:	000a2783          	lw	a5,0(s4)
    npcb->snd_wl2 = iss;
    e8894058:	08a9aa23          	sw	a0,148(s3)
    npcb->snd_nxt = iss;
    e889405c:	08a9a623          	sw	a0,140(s3)
    npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */
    e8894060:	37fd                	addiw	a5,a5,-1
    npcb->lastack = iss;
    e8894062:	06a9ae23          	sw	a0,124(s3)
    npcb->snd_lbb = iss;
    e8894066:	08a9ac23          	sw	a0,152(s3)
    npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */
    e889406a:	08f9a823          	sw	a5,144(s3)
    npcb->callback_arg = pcb->callback_arg;
    e889406e:	040cb783          	ld	a5,64(s9)
    npcb->listener = pcb;
    e8894072:	0d99b823          	sd	s9,208(s3)
    npcb->callback_arg = pcb->callback_arg;
    e8894076:	04f9b023          	sd	a5,64(s3)
    npcb->so_options = pcb->so_options & SOF_INHERITED;
    e889407a:	031cc783          	lbu	a5,49(s9)
    e889407e:	8bb1                	andi	a5,a5,12
    e8894080:	02f988a3          	sb	a5,49(s3)
    npcb->netif_idx = pcb->netif_idx;
    e8894084:	030cc783          	lbu	a5,48(s9)
    e8894088:	02f98823          	sb	a5,48(s3)
    TCP_REG_ACTIVE(npcb);
    e889408c:	000b3783          	ld	a5,0(s6)
    e8894090:	013b3023          	sd	s3,0(s6)
    e8894094:	02f9bc23          	sd	a5,56(s3)
    e8894098:	5ce020ef          	jal	ra,e8896666 <tcp_timer_needed>
    e889409c:	4785                	li	a5,1
    tcp_parseopt(npcb);
    e889409e:	854e                	mv	a0,s3
    TCP_REG_ACTIVE(npcb);
    e88940a0:	00052717          	auipc	a4,0x52
    e88940a4:	5cf70823          	sb	a5,1488(a4) # e88e6670 <tcp_active_pcbs_changed>
    tcp_parseopt(npcb);
    e88940a8:	f70fe0ef          	jal	ra,e8892818 <tcp_parseopt>
    npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, &npcb->remote_ip);
    e88940ac:	06a9da03          	lhu	s4,106(s3)
    npcb->snd_wnd = tcphdr->wnd;
    e88940b0:	00093783          	ld	a5,0(s2)
    npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, &npcb->remote_ip);
    e88940b4:	02c9c703          	lbu	a4,44(s3)
    e88940b8:	01898913          	addi	s2,s3,24
    npcb->snd_wnd = tcphdr->wnd;
    e88940bc:	00e7d783          	lhu	a5,14(a5)
    e88940c0:	08f9ae23          	sw	a5,156(s3)
    npcb->snd_wnd_max = npcb->snd_wnd;
    e88940c4:	0af9a023          	sw	a5,160(s3)
    npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, &npcb->remote_ip);
    e88940c8:	4799                	li	a5,6
    e88940ca:	04f71d63          	bne	a4,a5,e8894124 <tcp_input+0xa96>
    e88940ce:	85ca                	mv	a1,s2
    e88940d0:	854e                	mv	a0,s3
    e88940d2:	96af60ef          	jal	ra,e888a23c <ip6_route>
    e88940d6:	85aa                	mv	a1,a0
    e88940d8:	864a                	mv	a2,s2
    e88940da:	8552                	mv	a0,s4
    e88940dc:	f03fc0ef          	jal	ra,e8890fde <tcp_eff_send_mss_netif>
    e88940e0:	06a99523          	sh	a0,106(s3)
    MIB2_STATS_INC(mib2.tcppassiveopens);
    e88940e4:	19842783          	lw	a5,408(s0)
    rc = tcp_enqueue_flags(npcb, TCP_SYN | TCP_ACK);
    e88940e8:	45c9                	li	a1,18
    e88940ea:	854e                	mv	a0,s3
    MIB2_STATS_INC(mib2.tcppassiveopens);
    e88940ec:	2785                	addiw	a5,a5,1
    e88940ee:	18f42c23          	sw	a5,408(s0)
    rc = tcp_enqueue_flags(npcb, TCP_SYN | TCP_ACK);
    e88940f2:	516010ef          	jal	ra,e8895608 <tcp_enqueue_flags>
    if (rc != ERR_OK) {
    e88940f6:	c91d                	beqz	a0,e889412c <tcp_input+0xa9e>
      tcp_abandon(npcb, 0);
    e88940f8:	4581                	li	a1,0
    e88940fa:	854e                	mv	a0,s3
    e88940fc:	cfefd0ef          	jal	ra,e88915fa <tcp_abandon>
      return;
    e8894100:	bba9                	j	e8893e5a <tcp_input+0x7cc>
    ip_addr_copy(npcb->local_ip, *ip_current_dest_addr());
    e8894102:	03cd2783          	lw	a5,60(s10)
    e8894106:	00052223          	sw	zero,4(a0)
    e889410a:	00053423          	sd	zero,8(a0)
    e889410e:	c11c                	sw	a5,0(a0)
    e8894110:	00050823          	sb	zero,16(a0)
    e8894114:	bde9                	j	e8893fee <tcp_input+0x960>
    ip_addr_copy(npcb->remote_ip, *ip_current_src_addr());
    e8894116:	0009ae23          	sw	zero,28(s3)
    e889411a:	0209b023          	sd	zero,32(s3)
    e889411e:	02098423          	sb	zero,40(s3)
    e8894122:	b709                	j	e8894024 <tcp_input+0x996>
    npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, &npcb->remote_ip);
    e8894124:	854a                	mv	a0,s2
    e8894126:	d13f40ef          	jal	ra,e8888e38 <ip4_route>
    e889412a:	b775                	j	e88940d6 <tcp_input+0xa48>
    tcp_output(npcb);
    e889412c:	854e                	mv	a0,s3
    e889412e:	b325                	j	e8893e56 <tcp_input+0x7c8>
    if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) {
    e8894130:	00c5d503          	lhu	a0,12(a1)
    e8894134:	debf20ef          	jal	ra,e8886f1e <lwip_htons>
    e8894138:	8911                	andi	a0,a0,4
    e889413a:	d20510e3          	bnez	a0,e8893e5a <tcp_input+0x7cc>
      TCP_STATS_INC(tcp.proterr);
    e889413e:	0bc45783          	lhu	a5,188(s0)
      tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(),
    e8894142:	000bd583          	lhu	a1,0(s7)
    e8894146:	000a2603          	lw	a2,0(s4)
      TCP_STATS_INC(tcp.proterr);
    e889414a:	2785                	addiw	a5,a5,1
    e889414c:	0af41e23          	sh	a5,188(s0)
      TCP_STATS_INC(tcp.drop);
    e8894150:	0b245783          	lhu	a5,178(s0)
      tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(),
    e8894154:	9e2d                	addw	a2,a2,a1
    e8894156:	00052717          	auipc	a4,0x52
    e889415a:	a1670713          	addi	a4,a4,-1514 # e88e5b6c <ip_data+0x24>
      TCP_STATS_INC(tcp.drop);
    e889415e:	2785                	addiw	a5,a5,1
    e8894160:	0af41923          	sh	a5,178(s0)
              ip_current_src_addr(), tcphdr->dest, tcphdr->src);
    e8894164:	00093783          	ld	a5,0(s2)
      tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(),
    e8894168:	00052697          	auipc	a3,0x52
    e889416c:	a1c68693          	addi	a3,a3,-1508 # e88e5b84 <ip_data+0x3c>
    e8894170:	0009a583          	lw	a1,0(s3)
    e8894174:	0007d803          	lhu	a6,0(a5)
    e8894178:	4501                	li	a0,0
    e889417a:	0027d783          	lhu	a5,2(a5)
    e889417e:	b971                	j	e8893e1a <tcp_input+0x78c>
  if (flags & TCP_RST) {
    e8894180:	000ac703          	lbu	a4,0(s5)
    tcp_input_pcb = pcb;
    e8894184:	00052797          	auipc	a5,0x52
    e8894188:	55b7ba23          	sd	s11,1364(a5) # e88e66d8 <tcp_input_pcb>
  if (flags & TCP_RST) {
    e889418c:	00477793          	andi	a5,a4,4
    e8894190:	c3e9                	beqz	a5,e8894252 <tcp_input+0xbc4>
    if (pcb->state == SYN_SENT) {
    e8894192:	048dc703          	lbu	a4,72(s11)
    e8894196:	4789                	li	a5,2
    e8894198:	06f71263          	bne	a4,a5,e88941fc <tcp_input+0xb6e>
      if (ackno == pcb->snd_nxt) {
    e889419c:	08cda703          	lw	a4,140(s11)
    e88941a0:	0009a783          	lw	a5,0(s3)
    e88941a4:	02f71163          	bne	a4,a5,e88941c6 <tcp_input+0xb38>
      recv_flags |= TF_RESET;
    e88941a8:	00052717          	auipc	a4,0x52
    e88941ac:	52870713          	addi	a4,a4,1320 # e88e66d0 <recv_flags>
    e88941b0:	00074783          	lbu	a5,0(a4)
    e88941b4:	0087e793          	ori	a5,a5,8
    e88941b8:	00f70023          	sb	a5,0(a4)
      tcp_clear_flags(pcb, TF_ACK_DELAY);
    e88941bc:	04edd783          	lhu	a5,78(s11)
    e88941c0:	9bf9                	andi	a5,a5,-2
        tcp_ack_now(pcb);
    e88941c2:	04fd9723          	sh	a5,78(s11)
      if (recv_flags & TF_RESET) {
    e88941c6:	00052497          	auipc	s1,0x52
    e88941ca:	50a48493          	addi	s1,s1,1290 # e88e66d0 <recv_flags>
    e88941ce:	0004c783          	lbu	a5,0(s1)
    e88941d2:	8ba1                	andi	a5,a5,8
    e88941d4:	54078163          	beqz	a5,e8894716 <tcp_input+0x1088>
        TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_RST);
    e88941d8:	0f8db783          	ld	a5,248(s11)
    e88941dc:	c789                	beqz	a5,e88941e6 <tcp_input+0xb58>
    e88941de:	040db503          	ld	a0,64(s11)
    e88941e2:	55c9                	li	a1,-14
    e88941e4:	9782                	jalr	a5
        tcp_pcb_remove(&tcp_active_pcbs, pcb);
    e88941e6:	85ee                	mv	a1,s11
    e88941e8:	00052517          	auipc	a0,0x52
    e88941ec:	48050513          	addi	a0,a0,1152 # e88e6668 <tcp_active_pcbs>
    e88941f0:	a9efd0ef          	jal	ra,e889148e <tcp_pcb_remove>
        tcp_free(pcb);
    e88941f4:	856e                	mv	a0,s11
    e88941f6:	d46fc0ef          	jal	ra,e889073c <tcp_free>
    e88941fa:	b49d                	j	e8893c60 <tcp_input+0x5d2>
      if (seqno == pcb->rcv_nxt) {
    e88941fc:	058da683          	lw	a3,88(s11)
    e8894200:	000a2783          	lw	a5,0(s4)
    e8894204:	00f68f63          	beq	a3,a5,e8894222 <tcp_input+0xb94>
      } else  if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,
    e8894208:	40d7873b          	subw	a4,a5,a3
    e889420c:	fa074de3          	bltz	a4,e88941c6 <tcp_input+0xb38>
    e8894210:	05cda703          	lw	a4,92(s11)
    e8894214:	9f35                	addw	a4,a4,a3
    e8894216:	9f99                	subw	a5,a5,a4
    e8894218:	faf047e3          	bgtz	a5,e88941c6 <tcp_input+0xb38>
        tcp_ack_now(pcb);
    e889421c:	04edd783          	lhu	a5,78(s11)
    e8894220:	a0a9                	j	e889426a <tcp_input+0xbdc>
      LWIP_ASSERT("tcp_input: pcb->state != CLOSED", pcb->state != CLOSED);
    e8894222:	f359                	bnez	a4,e88941a8 <tcp_input+0xb1a>
    e8894224:	02f00593          	li	a1,47
    e8894228:	0003e517          	auipc	a0,0x3e
    e889422c:	93050513          	addi	a0,a0,-1744 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8894230:	948e80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894234:	00150693          	addi	a3,a0,1
    e8894238:	33800613          	li	a2,824
    e889423c:	0003e597          	auipc	a1,0x3e
    e8894240:	86458593          	addi	a1,a1,-1948 # e88d1aa0 <tcp_persist_backoff+0x530>
    e8894244:	0003b517          	auipc	a0,0x3b
    e8894248:	e6c50513          	addi	a0,a0,-404 # e88cf0b0 <kSinTable1024+0x900>
    e889424c:	87ae80ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8894250:	bfa1                	j	e88941a8 <tcp_input+0xb1a>
  if ((flags & TCP_SYN) && (pcb->state != SYN_SENT && pcb->state != SYN_RCVD)) {
    e8894252:	8b09                	andi	a4,a4,2
    e8894254:	04edd783          	lhu	a5,78(s11)
    e8894258:	cf01                	beqz	a4,e8894270 <tcp_input+0xbe2>
    e889425a:	048dc703          	lbu	a4,72(s11)
    e889425e:	4685                	li	a3,1
    e8894260:	3779                	addiw	a4,a4,-2
    e8894262:	0ff77713          	andi	a4,a4,255
    e8894266:	00e6f563          	bgeu	a3,a4,e8894270 <tcp_input+0xbe2>
        tcp_ack_now(pcb);
    e889426a:	0027e793          	ori	a5,a5,2
    e889426e:	bf91                	j	e88941c2 <tcp_input+0xb34>
  if ((pcb->flags & TF_RXCLOSED) == 0) {
    e8894270:	8bc1                	andi	a5,a5,16
    e8894272:	eb81                	bnez	a5,e8894282 <tcp_input+0xbf4>
    pcb->tmr = tcp_ticks;
    e8894274:	00052797          	auipc	a5,0x52
    e8894278:	41478793          	addi	a5,a5,1044 # e88e6688 <tcp_ticks>
    e889427c:	439c                	lw	a5,0(a5)
    e889427e:	04fdaa23          	sw	a5,84(s11)
  pcb->persist_probe = 0;
    e8894282:	100d9323          	sh	zero,262(s11)
  tcp_parseopt(pcb);
    e8894286:	856e                	mv	a0,s11
    e8894288:	d90fe0ef          	jal	ra,e8892818 <tcp_parseopt>
  switch (pcb->state) {
    e889428c:	048dc783          	lbu	a5,72(s11)
    e8894290:	471d                	li	a4,7
    e8894292:	37f9                	addiw	a5,a5,-2
    e8894294:	0ff7f793          	andi	a5,a5,255
    e8894298:	f2f767e3          	bltu	a4,a5,e88941c6 <tcp_input+0xb38>
    e889429c:	0003d717          	auipc	a4,0x3d
    e88942a0:	63070713          	addi	a4,a4,1584 # e88d18cc <tcp_persist_backoff+0x35c>
    e88942a4:	44f7478b          	lrw	a5,a4,a5,2
    e88942a8:	97ba                	add	a5,a5,a4
    e88942aa:	8782                	jr	a5
      if ((flags & TCP_ACK) && (flags & TCP_SYN)
    e88942ac:	000ac783          	lbu	a5,0(s5)
    e88942b0:	4749                	li	a4,18
    e88942b2:	0127f693          	andi	a3,a5,18
    e88942b6:	14e69d63          	bne	a3,a4,e8894410 <tcp_input+0xd82>
          && (ackno == pcb->lastack + 1)) {
    e88942ba:	07cda703          	lw	a4,124(s11)
    e88942be:	0009a683          	lw	a3,0(s3)
    e88942c2:	0017061b          	addiw	a2,a4,1
    e88942c6:	14d61563          	bne	a2,a3,e8894410 <tcp_input+0xd82>
        pcb->rcv_nxt = seqno + 1;
    e88942ca:	000a2783          	lw	a5,0(s4)
        pcb->snd_wnd = tcphdr->wnd;
    e88942ce:	00052717          	auipc	a4,0x52
    e88942d2:	41a70713          	addi	a4,a4,1050 # e88e66e8 <tcphdr>
    e88942d6:	6318                	ld	a4,0(a4)
        pcb->rcv_nxt = seqno + 1;
    e88942d8:	0017869b          	addiw	a3,a5,1
    e88942dc:	04ddac23          	sw	a3,88(s11)
        pcb->rcv_ann_right_edge = pcb->rcv_nxt;
    e88942e0:	06dda223          	sw	a3,100(s11)
        pcb->lastack = ackno;
    e88942e4:	06cdae23          	sw	a2,124(s11)
        pcb->snd_wnd = tcphdr->wnd;
    e88942e8:	00e75703          	lhu	a4,14(a4)
        pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */
    e88942ec:	37fd                	addiw	a5,a5,-1
    e88942ee:	08fda823          	sw	a5,144(s11)
        pcb->snd_wnd = tcphdr->wnd;
    e88942f2:	08edae23          	sw	a4,156(s11)
        pcb->state = ESTABLISHED;
    e88942f6:	4791                	li	a5,4
        pcb->snd_wnd_max = pcb->snd_wnd;
    e88942f8:	0aeda023          	sw	a4,160(s11)
        pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip);
    e88942fc:	02cdc703          	lbu	a4,44(s11)
        pcb->state = ESTABLISHED;
    e8894300:	04fd8423          	sb	a5,72(s11)
        pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip);
    e8894304:	4799                	li	a5,6
    e8894306:	06add483          	lhu	s1,106(s11)
    e889430a:	018d8413          	addi	s0,s11,24
    e889430e:	0ef71463          	bne	a4,a5,e88943f6 <tcp_input+0xd68>
    e8894312:	85a2                	mv	a1,s0
    e8894314:	856e                	mv	a0,s11
    e8894316:	f27f50ef          	jal	ra,e888a23c <ip6_route>
    e889431a:	85aa                	mv	a1,a0
    e889431c:	8622                	mv	a2,s0
    e889431e:	8526                	mv	a0,s1
    e8894320:	cbffc0ef          	jal	ra,e8890fde <tcp_eff_send_mss_netif>
    e8894324:	06ad9523          	sh	a0,106(s11)
        pcb->cwnd = LWIP_TCP_CALC_INITIAL_CWND(pcb->mss);
    e8894328:	6785                	lui	a5,0x1
    e889432a:	2501                	sext.w	a0,a0
    e889432c:	0015171b          	slliw	a4,a0,0x1
    e8894330:	11c78793          	addi	a5,a5,284 # 111c <memcmp-0xe87feee4>
    e8894334:	00f736b3          	sltu	a3,a4,a5
    e8894338:	0025151b          	slliw	a0,a0,0x2
    e889433c:	42d7970b          	mvnez	a4,a5,a3
    e8894340:	87aa                	mv	a5,a0
    e8894342:	00e7b7b3          	sltu	a5,a5,a4
    e8894346:	40f7150b          	mveqz	a0,a4,a5
        LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0));
    e889434a:	0a8dd783          	lhu	a5,168(s11)
        pcb->cwnd = LWIP_TCP_CALC_INITIAL_CWND(pcb->mss);
    e889434e:	08ada023          	sw	a0,128(s11)
        LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0));
    e8894352:	e79d                	bnez	a5,e8894380 <tcp_input+0xcf2>
    e8894354:	02f00593          	li	a1,47
    e8894358:	0003e517          	auipc	a0,0x3e
    e889435c:	80050513          	addi	a0,a0,-2048 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8894360:	818e80ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894364:	00150693          	addi	a3,a0,1
    e8894368:	36c00613          	li	a2,876
    e889436c:	0003d597          	auipc	a1,0x3d
    e8894370:	75458593          	addi	a1,a1,1876 # e88d1ac0 <tcp_persist_backoff+0x550>
    e8894374:	0003b517          	auipc	a0,0x3b
    e8894378:	d3c50513          	addi	a0,a0,-708 # e88cf0b0 <kSinTable1024+0x900>
    e889437c:	f4be70ef          	jal	ra,e887c2c6 <eLIBs_printf>
        --pcb->snd_queuelen;
    e8894380:	0a8dd783          	lhu	a5,168(s11)
        rseg = pcb->unacked;
    e8894384:	0b8db403          	ld	s0,184(s11)
        --pcb->snd_queuelen;
    e8894388:	37fd                	addiw	a5,a5,-1
    e889438a:	0afd9423          	sh	a5,168(s11)
        if (rseg == NULL) {
    e889438e:	e825                	bnez	s0,e88943fe <tcp_input+0xd70>
          rseg = pcb->unsent;
    e8894390:	0b0db403          	ld	s0,176(s11)
          LWIP_ASSERT("no segment to free", rseg != NULL);
    e8894394:	e41d                	bnez	s0,e88943c2 <tcp_input+0xd34>
    e8894396:	02f00593          	li	a1,47
    e889439a:	0003d517          	auipc	a0,0x3d
    e889439e:	7be50513          	addi	a0,a0,1982 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e88943a2:	fd7e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88943a6:	00150693          	addi	a3,a0,1
    e88943aa:	37400613          	li	a2,884
    e88943ae:	0003d597          	auipc	a1,0x3d
    e88943b2:	72a58593          	addi	a1,a1,1834 # e88d1ad8 <tcp_persist_backoff+0x568>
    e88943b6:	0003b517          	auipc	a0,0x3b
    e88943ba:	cfa50513          	addi	a0,a0,-774 # e88cf0b0 <kSinTable1024+0x900>
    e88943be:	f09e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
          pcb->unsent = rseg->next;
    e88943c2:	601c                	ld	a5,0(s0)
    e88943c4:	0afdb823          	sd	a5,176(s11)
        tcp_seg_free(rseg);
    e88943c8:	8522                	mv	a0,s0
    e88943ca:	967fc0ef          	jal	ra,e8890d30 <tcp_seg_free>
        if (pcb->unacked == NULL) {
    e88943ce:	0b8db783          	ld	a5,184(s11)
    e88943d2:	eb95                	bnez	a5,e8894406 <tcp_input+0xd78>
          pcb->rtime = -1;
    e88943d4:	57fd                	li	a5,-1
    e88943d6:	06fd9423          	sh	a5,104(s11)
        TCP_EVENT_CONNECTED(pcb, ERR_OK, err);
    e88943da:	0e8db783          	ld	a5,232(s11)
    e88943de:	e2078fe3          	beqz	a5,e889421c <tcp_input+0xb8e>
    e88943e2:	040db503          	ld	a0,64(s11)
    e88943e6:	4601                	li	a2,0
    e88943e8:	85ee                	mv	a1,s11
    e88943ea:	9782                	jalr	a5
        if (err == ERR_ABRT) {
    e88943ec:	57cd                	li	a5,-13
    e88943ee:	e2f517e3          	bne	a0,a5,e889421c <tcp_input+0xb8e>
    e88943f2:	86fff06f          	j	e8893c60 <tcp_input+0x5d2>
        pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip);
    e88943f6:	8522                	mv	a0,s0
    e88943f8:	a41f40ef          	jal	ra,e8888e38 <ip4_route>
    e88943fc:	bf39                	j	e889431a <tcp_input+0xc8c>
          pcb->unacked = rseg->next;
    e88943fe:	601c                	ld	a5,0(s0)
    e8894400:	0afdbc23          	sd	a5,184(s11)
    e8894404:	b7d1                	j	e88943c8 <tcp_input+0xd3a>
          pcb->rtime = 0;
    e8894406:	060d9423          	sh	zero,104(s11)
          pcb->nrtx = 0;
    e889440a:	060d8d23          	sb	zero,122(s11)
    e889440e:	b7f1                	j	e88943da <tcp_input+0xd4c>
      else if (flags & TCP_ACK) {
    e8894410:	8bc1                	andi	a5,a5,16
    e8894412:	da078ae3          	beqz	a5,e88941c6 <tcp_input+0xb38>
                ip_current_src_addr(), tcphdr->dest, tcphdr->src);
    e8894416:	00052797          	auipc	a5,0x52
    e889441a:	2d278793          	addi	a5,a5,722 # e88e66e8 <tcphdr>
    e889441e:	639c                	ld	a5,0(a5)
        tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(),
    e8894420:	000bd583          	lhu	a1,0(s7)
    e8894424:	000a2603          	lw	a2,0(s4)
    e8894428:	0007d803          	lhu	a6,0(a5)
    e889442c:	0027d783          	lhu	a5,2(a5)
    e8894430:	9e2d                	addw	a2,a2,a1
    e8894432:	0009a583          	lw	a1,0(s3)
    e8894436:	00051717          	auipc	a4,0x51
    e889443a:	73670713          	addi	a4,a4,1846 # e88e5b6c <ip_data+0x24>
    e889443e:	00051697          	auipc	a3,0x51
    e8894442:	74668693          	addi	a3,a3,1862 # e88e5b84 <ip_data+0x3c>
    e8894446:	856e                	mv	a0,s11
    e8894448:	65a010ef          	jal	ra,e8895aa2 <tcp_rst>
        if (pcb->nrtx < TCP_SYNMAXRTX) {
    e889444c:	07adc703          	lbu	a4,122(s11)
    e8894450:	4795                	li	a5,5
    e8894452:	d6e7eae3          	bltu	a5,a4,e88941c6 <tcp_input+0xb38>
          pcb->rtime = 0;
    e8894456:	060d9423          	sh	zero,104(s11)
          tcp_rexmit_rto(pcb);
    e889445a:	856e                	mv	a0,s11
    e889445c:	701010ef          	jal	ra,e889635c <tcp_rexmit_rto>
    if (err != ERR_ABRT) {
    e8894460:	b39d                	j	e88941c6 <tcp_input+0xb38>
      if (flags & TCP_ACK) {
    e8894462:	000ac783          	lbu	a5,0(s5)
    e8894466:	0107f713          	andi	a4,a5,16
    e889446a:	10070d63          	beqz	a4,e8894584 <tcp_input+0xef6>
        if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) {
    e889446e:	0009a583          	lw	a1,0(s3)
    e8894472:	07cda703          	lw	a4,124(s11)
    e8894476:	fff5879b          	addiw	a5,a1,-1
    e889447a:	9f99                	subw	a5,a5,a4
    e889447c:	0c07ca63          	bltz	a5,e8894550 <tcp_input+0xec2>
    e8894480:	08cda783          	lw	a5,140(s11)
    e8894484:	40f587bb          	subw	a5,a1,a5
    e8894488:	0cf04463          	bgtz	a5,e8894550 <tcp_input+0xec2>
          pcb->state = ESTABLISHED;
    e889448c:	4791                	li	a5,4
    e889448e:	04fd8423          	sb	a5,72(s11)
          if (pcb->listener == NULL) {
    e8894492:	0d0db783          	ld	a5,208(s11)
    e8894496:	e791                	bnez	a5,e88944a2 <tcp_input+0xe14>
            tcp_abort(pcb);
    e8894498:	856e                	mv	a0,s11
    e889449a:	ae4fd0ef          	jal	ra,e889177e <tcp_abort>
            goto aborted;
    e889449e:	fc2ff06f          	j	e8893c60 <tcp_input+0x5d2>
            LWIP_ASSERT("pcb->listener->accept != NULL", pcb->listener->accept != NULL);
    e88944a2:	6bbc                	ld	a5,80(a5)
    e88944a4:	e79d                	bnez	a5,e88944d2 <tcp_input+0xe44>
    e88944a6:	02f00593          	li	a1,47
    e88944aa:	0003d517          	auipc	a0,0x3d
    e88944ae:	6ae50513          	addi	a0,a0,1710 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e88944b2:	ec7e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88944b6:	00150693          	addi	a3,a0,1
    e88944ba:	3a800613          	li	a2,936
    e88944be:	0003d597          	auipc	a1,0x3d
    e88944c2:	63258593          	addi	a1,a1,1586 # e88d1af0 <tcp_persist_backoff+0x580>
    e88944c6:	0003b517          	auipc	a0,0x3b
    e88944ca:	bea50513          	addi	a0,a0,-1046 # e88cf0b0 <kSinTable1024+0x900>
    e88944ce:	df9e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
            TCP_EVENT_ACCEPT(pcb->listener, pcb, pcb->callback_arg, ERR_OK, err);
    e88944d2:	0d0db783          	ld	a5,208(s11)
    e88944d6:	6bbc                	ld	a5,80(a5)
    e88944d8:	d3e1                	beqz	a5,e8894498 <tcp_input+0xe0a>
    e88944da:	040db503          	ld	a0,64(s11)
    e88944de:	4601                	li	a2,0
    e88944e0:	85ee                	mv	a1,s11
    e88944e2:	9782                	jalr	a5
          if (err != ERR_OK) {
    e88944e4:	c509                	beqz	a0,e88944ee <tcp_input+0xe60>
            if (err != ERR_ABRT) {
    e88944e6:	57cd                	li	a5,-13
    e88944e8:	f6f50c63          	beq	a0,a5,e8893c60 <tcp_input+0x5d2>
    e88944ec:	b775                	j	e8894498 <tcp_input+0xe0a>
          tcp_receive(pcb);
    e88944ee:	856e                	mv	a0,s11
    e88944f0:	e94fe0ef          	jal	ra,e8892b84 <tcp_receive>
          if (recv_acked != 0) {
    e88944f4:	00052717          	auipc	a4,0x52
    e88944f8:	1cc70713          	addi	a4,a4,460 # e88e66c0 <recv_acked>
    e88944fc:	431c                	lw	a5,0(a4)
    e88944fe:	c399                	beqz	a5,e8894504 <tcp_input+0xe76>
            recv_acked--;
    e8894500:	37fd                	addiw	a5,a5,-1
    e8894502:	c31c                	sw	a5,0(a4)
          pcb->cwnd = LWIP_TCP_CALC_INITIAL_CWND(pcb->mss);
    e8894504:	06add783          	lhu	a5,106(s11)
    e8894508:	6705                	lui	a4,0x1
    e889450a:	11c70713          	addi	a4,a4,284 # 111c <memcmp-0xe87feee4>
    e889450e:	0017969b          	slliw	a3,a5,0x1
    e8894512:	00e6b633          	sltu	a2,a3,a4
    e8894516:	42c7168b          	mvnez	a3,a4,a2
    e889451a:	0027971b          	slliw	a4,a5,0x2
    e889451e:	87ba                	mv	a5,a4
    e8894520:	00d7b7b3          	sltu	a5,a5,a3
    e8894524:	40f6970b          	mveqz	a4,a3,a5
    e8894528:	08eda023          	sw	a4,128(s11)
      if (recv_flags & TF_GOT_FIN) { /* passive close */
    e889452c:	00052797          	auipc	a5,0x52
    e8894530:	1a47c783          	lbu	a5,420(a5) # e88e66d0 <recv_flags>
    e8894534:	0207f793          	andi	a5,a5,32
    e8894538:	c80787e3          	beqz	a5,e88941c6 <tcp_input+0xb38>
        tcp_ack_now(pcb);
    e889453c:	04edd783          	lhu	a5,78(s11)
    e8894540:	0027e793          	ori	a5,a5,2
    e8894544:	04fd9723          	sh	a5,78(s11)
        pcb->state = CLOSE_WAIT;
    e8894548:	479d                	li	a5,7
        pcb->state = FIN_WAIT_2;
    e889454a:	04fd8423          	sb	a5,72(s11)
    if (err != ERR_ABRT) {
    e889454e:	b9a5                	j	e88941c6 <tcp_input+0xb38>
                  ip_current_src_addr(), tcphdr->dest, tcphdr->src);
    e8894550:	00052797          	auipc	a5,0x52
    e8894554:	19878793          	addi	a5,a5,408 # e88e66e8 <tcphdr>
    e8894558:	639c                	ld	a5,0(a5)
          tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(),
    e889455a:	000bd503          	lhu	a0,0(s7)
    e889455e:	000a2603          	lw	a2,0(s4)
    e8894562:	0007d803          	lhu	a6,0(a5)
    e8894566:	0027d783          	lhu	a5,2(a5)
    e889456a:	9e29                	addw	a2,a2,a0
    e889456c:	00051717          	auipc	a4,0x51
    e8894570:	60070713          	addi	a4,a4,1536 # e88e5b6c <ip_data+0x24>
    e8894574:	00051697          	auipc	a3,0x51
    e8894578:	61068693          	addi	a3,a3,1552 # e88e5b84 <ip_data+0x3c>
    e889457c:	856e                	mv	a0,s11
    e889457e:	524010ef          	jal	ra,e8895aa2 <tcp_rst>
    if (err != ERR_ABRT) {
    e8894582:	b191                	j	e88941c6 <tcp_input+0xb38>
      } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) {
    e8894584:	8b89                	andi	a5,a5,2
    e8894586:	c40780e3          	beqz	a5,e88941c6 <tcp_input+0xb38>
    e889458a:	058da783          	lw	a5,88(s11)
    e889458e:	000a2703          	lw	a4,0(s4)
    e8894592:	37fd                	addiw	a5,a5,-1
    e8894594:	c2e799e3          	bne	a5,a4,e88941c6 <tcp_input+0xb38>
        tcp_rexmit(pcb);
    e8894598:	856e                	mv	a0,s11
    e889459a:	3a4010ef          	jal	ra,e889593e <tcp_rexmit>
    if (err != ERR_ABRT) {
    e889459e:	b125                	j	e88941c6 <tcp_input+0xb38>
      tcp_receive(pcb);
    e88945a0:	856e                	mv	a0,s11
    e88945a2:	de2fe0ef          	jal	ra,e8892b84 <tcp_receive>
    e88945a6:	b759                	j	e889452c <tcp_input+0xe9e>
      tcp_receive(pcb);
    e88945a8:	856e                	mv	a0,s11
    e88945aa:	ddafe0ef          	jal	ra,e8892b84 <tcp_receive>
      if (recv_flags & TF_GOT_FIN) {
    e88945ae:	00052797          	auipc	a5,0x52
    e88945b2:	1227c783          	lbu	a5,290(a5) # e88e66d0 <recv_flags>
    e88945b6:	0207f793          	andi	a5,a5,32
    e88945ba:	c3d9                	beqz	a5,e8894640 <tcp_input+0xfb2>
        if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) &&
    e88945bc:	000ac703          	lbu	a4,0(s5)
    e88945c0:	04edd783          	lhu	a5,78(s11)
    e88945c4:	8b41                	andi	a4,a4,16
    e88945c6:	c73d                	beqz	a4,e8894634 <tcp_input+0xfa6>
    e88945c8:	08cda683          	lw	a3,140(s11)
    e88945cc:	0009a703          	lw	a4,0(s3)
    e88945d0:	06e69263          	bne	a3,a4,e8894634 <tcp_input+0xfa6>
    e88945d4:	0b0db703          	ld	a4,176(s11)
    e88945d8:	ef31                	bnez	a4,e8894634 <tcp_input+0xfa6>
          tcp_ack_now(pcb);
    e88945da:	0027e793          	ori	a5,a5,2
    e88945de:	04fd9723          	sh	a5,78(s11)
          tcp_pcb_purge(pcb);
    e88945e2:	856e                	mv	a0,s11
    e88945e4:	e21fc0ef          	jal	ra,e8891404 <tcp_pcb_purge>
          TCP_RMV_ACTIVE(pcb);
    e88945e8:	000b3783          	ld	a5,0(s6)
    e88945ec:	00fd9f63          	bne	s11,a5,e889460a <tcp_input+0xf7c>
        TCP_RMV_ACTIVE(pcb);
    e88945f0:	038db783          	ld	a5,56(s11)
    e88945f4:	00fb3023          	sd	a5,0(s6)
    e88945f8:	a811                	j	e889460c <tcp_input+0xf7e>
          TCP_RMV_ACTIVE(pcb);
    e88945fa:	7f98                	ld	a4,56(a5)
    e88945fc:	00ed9663          	bne	s11,a4,e8894608 <tcp_input+0xf7a>
        TCP_RMV_ACTIVE(pcb);
    e8894600:	038db703          	ld	a4,56(s11)
    e8894604:	ff98                	sd	a4,56(a5)
    e8894606:	a019                	j	e889460c <tcp_input+0xf7e>
          TCP_RMV_ACTIVE(pcb);
    e8894608:	87ba                	mv	a5,a4
    e889460a:	fbe5                	bnez	a5,e88945fa <tcp_input+0xf6c>
        TCP_RMV_ACTIVE(pcb);
    e889460c:	4785                	li	a5,1
    e889460e:	00052717          	auipc	a4,0x52
    e8894612:	06f70123          	sb	a5,98(a4) # e88e6670 <tcp_active_pcbs_changed>
        pcb->state = TIME_WAIT;
    e8894616:	47a9                	li	a5,10
    e8894618:	04fd8423          	sb	a5,72(s11)
        TCP_REG(&tcp_tw_pcbs, pcb);
    e889461c:	00052797          	auipc	a5,0x52
    e8894620:	07478793          	addi	a5,a5,116 # e88e6690 <tcp_tw_pcbs>
    e8894624:	6398                	ld	a4,0(a5)
    e8894626:	01b7b023          	sd	s11,0(a5)
    e889462a:	02edbc23          	sd	a4,56(s11)
    e889462e:	038020ef          	jal	ra,e8896666 <tcp_timer_needed>
    if (err != ERR_ABRT) {
    e8894632:	be51                	j	e88941c6 <tcp_input+0xb38>
          tcp_ack_now(pcb);
    e8894634:	0027e793          	ori	a5,a5,2
    e8894638:	04fd9723          	sh	a5,78(s11)
          pcb->state = CLOSING;
    e889463c:	47a1                	li	a5,8
    e889463e:	b731                	j	e889454a <tcp_input+0xebc>
      } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) &&
    e8894640:	000ac783          	lbu	a5,0(s5)
    e8894644:	8bc1                	andi	a5,a5,16
    e8894646:	b80780e3          	beqz	a5,e88941c6 <tcp_input+0xb38>
    e889464a:	08cda703          	lw	a4,140(s11)
    e889464e:	0009a783          	lw	a5,0(s3)
    e8894652:	b6f71ae3          	bne	a4,a5,e88941c6 <tcp_input+0xb38>
    e8894656:	0b0db783          	ld	a5,176(s11)
    e889465a:	b60796e3          	bnez	a5,e88941c6 <tcp_input+0xb38>
        pcb->state = FIN_WAIT_2;
    e889465e:	4799                	li	a5,6
    e8894660:	b5ed                	j	e889454a <tcp_input+0xebc>
      tcp_receive(pcb);
    e8894662:	856e                	mv	a0,s11
    e8894664:	d20fe0ef          	jal	ra,e8892b84 <tcp_receive>
      if (recv_flags & TF_GOT_FIN) {
    e8894668:	00052797          	auipc	a5,0x52
    e889466c:	0687c783          	lbu	a5,104(a5) # e88e66d0 <recv_flags>
    e8894670:	0207f793          	andi	a5,a5,32
    e8894674:	b40789e3          	beqz	a5,e88941c6 <tcp_input+0xb38>
        tcp_ack_now(pcb);
    e8894678:	04edd783          	lhu	a5,78(s11)
        tcp_pcb_purge(pcb);
    e889467c:	856e                	mv	a0,s11
        tcp_ack_now(pcb);
    e889467e:	0027e793          	ori	a5,a5,2
    e8894682:	04fd9723          	sh	a5,78(s11)
        tcp_pcb_purge(pcb);
    e8894686:	d7ffc0ef          	jal	ra,e8891404 <tcp_pcb_purge>
        TCP_RMV_ACTIVE(pcb);
    e889468a:	000b3783          	ld	a5,0(s6)
    e889468e:	f6fd81e3          	beq	s11,a5,e88945f0 <tcp_input+0xf62>
    e8894692:	dfad                	beqz	a5,e889460c <tcp_input+0xf7e>
    e8894694:	7f98                	ld	a4,56(a5)
    e8894696:	f6ed85e3          	beq	s11,a4,e8894600 <tcp_input+0xf72>
    e889469a:	87ba                	mv	a5,a4
    e889469c:	bfdd                	j	e8894692 <tcp_input+0x1004>
      tcp_receive(pcb);
    e889469e:	856e                	mv	a0,s11
    e88946a0:	ce4fe0ef          	jal	ra,e8892b84 <tcp_receive>
      if ((flags & TCP_ACK) && ackno == pcb->snd_nxt && pcb->unsent == NULL) {
    e88946a4:	000ac783          	lbu	a5,0(s5)
    e88946a8:	8bc1                	andi	a5,a5,16
    e88946aa:	b0078ee3          	beqz	a5,e88941c6 <tcp_input+0xb38>
    e88946ae:	08cda703          	lw	a4,140(s11)
    e88946b2:	0009a783          	lw	a5,0(s3)
    e88946b6:	b0f718e3          	bne	a4,a5,e88941c6 <tcp_input+0xb38>
    e88946ba:	0b0db783          	ld	a5,176(s11)
    e88946be:	b00794e3          	bnez	a5,e88941c6 <tcp_input+0xb38>
        tcp_pcb_purge(pcb);
    e88946c2:	856e                	mv	a0,s11
    e88946c4:	d41fc0ef          	jal	ra,e8891404 <tcp_pcb_purge>
        TCP_RMV_ACTIVE(pcb);
    e88946c8:	000b3783          	ld	a5,0(s6)
    e88946cc:	f2fd82e3          	beq	s11,a5,e88945f0 <tcp_input+0xf62>
    e88946d0:	df95                	beqz	a5,e889460c <tcp_input+0xf7e>
    e88946d2:	7f98                	ld	a4,56(a5)
    e88946d4:	f2ed86e3          	beq	s11,a4,e8894600 <tcp_input+0xf72>
    e88946d8:	87ba                	mv	a5,a4
    e88946da:	bfdd                	j	e88946d0 <tcp_input+0x1042>
      tcp_receive(pcb);
    e88946dc:	856e                	mv	a0,s11
    e88946de:	ca6fe0ef          	jal	ra,e8892b84 <tcp_receive>
      if ((flags & TCP_ACK) && ackno == pcb->snd_nxt && pcb->unsent == NULL) {
    e88946e2:	000ac783          	lbu	a5,0(s5)
    e88946e6:	8bc1                	andi	a5,a5,16
    e88946e8:	ac078fe3          	beqz	a5,e88941c6 <tcp_input+0xb38>
    e88946ec:	08cda703          	lw	a4,140(s11)
    e88946f0:	0009a783          	lw	a5,0(s3)
    e88946f4:	acf719e3          	bne	a4,a5,e88941c6 <tcp_input+0xb38>
    e88946f8:	0b0db783          	ld	a5,176(s11)
    e88946fc:	ac0795e3          	bnez	a5,e88941c6 <tcp_input+0xb38>
        recv_flags |= TF_CLOSED;
    e8894700:	00052717          	auipc	a4,0x52
    e8894704:	fd070713          	addi	a4,a4,-48 # e88e66d0 <recv_flags>
    e8894708:	00074783          	lbu	a5,0(a4)
    e889470c:	0107e793          	ori	a5,a5,16
    e8894710:	00f70023          	sb	a5,0(a4)
    if (err != ERR_ABRT) {
    e8894714:	bc4d                	j	e88941c6 <tcp_input+0xb38>
        if (recv_acked > 0) {
    e8894716:	00052797          	auipc	a5,0x52
    e889471a:	faa78793          	addi	a5,a5,-86 # e88e66c0 <recv_acked>
    e889471e:	4380                	lw	s0,0(a5)
    e8894720:	c415                	beqz	s0,e889474c <tcp_input+0x10be>
            acked16 = (u16_t)LWIP_MIN(acked, 0xffffu);
    e8894722:	67c1                	lui	a5,0x10
    e8894724:	ffe78a93          	addi	s5,a5,-2 # fffe <memcmp-0xe87f0002>
    e8894728:	fff78993          	addi	s3,a5,-1
            if (err == ERR_ABRT) {
    e889472c:	5a4d                	li	s4,-13
            acked16 = (u16_t)LWIP_MIN(acked, 0xffffu);
    e889472e:	008ab633          	sltu	a2,s5,s0
    e8894732:	87ce                	mv	a5,s3
    e8894734:	40c4178b          	mveqz	a5,s0,a2
    e8894738:	863e                	mv	a2,a5
            acked -= acked16;
    e889473a:	9c1d                	subw	s0,s0,a5
            TCP_EVENT_SENT(pcb, (u16_t)acked16, err);
    e889473c:	0d8db783          	ld	a5,216(s11)
    e8894740:	e3c1                	bnez	a5,e88947c0 <tcp_input+0x1132>
          while (acked > 0) {
    e8894742:	f475                	bnez	s0,e889472e <tcp_input+0x10a0>
          recv_acked = 0;
    e8894744:	00052797          	auipc	a5,0x52
    e8894748:	f607ae23          	sw	zero,-132(a5) # e88e66c0 <recv_acked>
        if (tcp_input_delayed_close(pcb)) {
    e889474c:	856e                	mv	a0,s11
    e889474e:	a9cfe0ef          	jal	ra,e88929ea <tcp_input_delayed_close>
    e8894752:	d0051763          	bnez	a0,e8893c60 <tcp_input+0x5d2>
        while (recv_data != NULL) {
    e8894756:	00052417          	auipc	s0,0x52
    e889475a:	f7240413          	addi	s0,s0,-142 # e88e66c8 <recv_data>
          LWIP_ASSERT("pcb->refused_data == NULL", pcb->refused_data == NULL);
    e889475e:	0003d997          	auipc	s3,0x3d
    e8894762:	3fa98993          	addi	s3,s3,1018 # e88d1b58 <tcp_persist_backoff+0x5e8>
    e8894766:	0003da17          	auipc	s4,0x3d
    e889476a:	3aaa0a13          	addi	s4,s4,938 # e88d1b10 <tcp_persist_backoff+0x5a0>
    e889476e:	0003ba97          	auipc	s5,0x3b
    e8894772:	942a8a93          	addi	s5,s5,-1726 # e88cf0b0 <kSinTable1024+0x900>
          if (err == ERR_ABRT) {
    e8894776:	5b4d                	li	s6,-13
        while (recv_data != NULL) {
    e8894778:	6008                	ld	a0,0(s0)
    e889477a:	c959                	beqz	a0,e8894810 <tcp_input+0x1182>
          pbuf_split_64k(recv_data, &rest);
    e889477c:	002c                	addi	a1,sp,8
          struct pbuf *rest = NULL;
    e889477e:	e402                	sd	zero,8(sp)
          pbuf_split_64k(recv_data, &rest);
    e8894780:	aacfb0ef          	jal	ra,e888fa2c <pbuf_split_64k>
          LWIP_ASSERT("pcb->refused_data == NULL", pcb->refused_data == NULL);
    e8894784:	0c8db783          	ld	a5,200(s11)
    e8894788:	cf91                	beqz	a5,e88947a4 <tcp_input+0x1116>
    e889478a:	02f00593          	li	a1,47
    e889478e:	854e                	mv	a0,s3
    e8894790:	be9e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894794:	00150693          	addi	a3,a0,1
    e8894798:	1e600613          	li	a2,486
    e889479c:	85d2                	mv	a1,s4
    e889479e:	8556                	mv	a0,s5
    e88947a0:	b27e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
          if (pcb->flags & TF_RXCLOSED) {
    e88947a4:	04edd783          	lhu	a5,78(s11)
    e88947a8:	6010                	ld	a2,0(s0)
    e88947aa:	8bc1                	andi	a5,a5,16
    e88947ac:	c785                	beqz	a5,e88947d4 <tcp_input+0x1146>
            pbuf_free(recv_data);
    e88947ae:	8532                	mv	a0,a2
    e88947b0:	a9dfa0ef          	jal	ra,e888f24c <pbuf_free>
            if (rest != NULL) {
    e88947b4:	6522                	ld	a0,8(sp)
    e88947b6:	ce0501e3          	beqz	a0,e8894498 <tcp_input+0xe0a>
              pbuf_free(rest);
    e88947ba:	a93fa0ef          	jal	ra,e888f24c <pbuf_free>
    e88947be:	b9e9                	j	e8894498 <tcp_input+0xe0a>
            TCP_EVENT_SENT(pcb, (u16_t)acked16, err);
    e88947c0:	040db503          	ld	a0,64(s11)
    e88947c4:	3c06360b          	extu	a2,a2,15,0
    e88947c8:	85ee                	mv	a1,s11
    e88947ca:	9782                	jalr	a5
            if (err == ERR_ABRT) {
    e88947cc:	f7451be3          	bne	a0,s4,e8894742 <tcp_input+0x10b4>
    e88947d0:	c90ff06f          	j	e8893c60 <tcp_input+0x5d2>
          TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);
    e88947d4:	0e0db783          	ld	a5,224(s11)
    e88947d8:	4681                	li	a3,0
    e88947da:	85ee                	mv	a1,s11
    e88947dc:	cf91                	beqz	a5,e88947f8 <tcp_input+0x116a>
    e88947de:	040db503          	ld	a0,64(s11)
    e88947e2:	9782                	jalr	a5
          if (err == ERR_ABRT) {
    e88947e4:	65a2                	ld	a1,8(sp)
    e88947e6:	01651d63          	bne	a0,s6,e8894800 <tcp_input+0x1172>
            if (rest != NULL) {
    e88947ea:	c6058b63          	beqz	a1,e8893c60 <tcp_input+0x5d2>
              pbuf_free(rest);
    e88947ee:	852e                	mv	a0,a1
    e88947f0:	a5dfa0ef          	jal	ra,e888f24c <pbuf_free>
    e88947f4:	c6cff06f          	j	e8893c60 <tcp_input+0x5d2>
          TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err);
    e88947f8:	4501                	li	a0,0
    e88947fa:	e8afd0ef          	jal	ra,e8891e84 <tcp_recv_null>
    e88947fe:	b7dd                	j	e88947e4 <tcp_input+0x1156>
          if (err != ERR_OK) {
    e8894800:	c521                	beqz	a0,e8894848 <tcp_input+0x11ba>
            if (rest != NULL) {
    e8894802:	c581                	beqz	a1,e889480a <tcp_input+0x117c>
              pbuf_cat(recv_data, rest);
    e8894804:	6008                	ld	a0,0(s0)
    e8894806:	ea7fa0ef          	jal	ra,e888f6ac <pbuf_cat>
            pcb->refused_data = recv_data;
    e889480a:	601c                	ld	a5,0(s0)
    e889480c:	0cfdb423          	sd	a5,200(s11)
        if (recv_flags & TF_GOT_FIN) {
    e8894810:	0004c783          	lbu	a5,0(s1)
    e8894814:	0207f793          	andi	a5,a5,32
    e8894818:	cb91                	beqz	a5,e889482c <tcp_input+0x119e>
          if (pcb->refused_data != NULL) {
    e889481a:	0c8db783          	ld	a5,200(s11)
    e889481e:	c79d                	beqz	a5,e889484c <tcp_input+0x11be>
            pcb->refused_data->flags |= PBUF_FLAG_TCP_FIN;
    e8894820:	0157c703          	lbu	a4,21(a5)
    e8894824:	02076713          	ori	a4,a4,32
    e8894828:	00e78aa3          	sb	a4,21(a5)
        if (tcp_input_delayed_close(pcb)) {
    e889482c:	856e                	mv	a0,s11
        tcp_input_pcb = NULL;
    e889482e:	00052797          	auipc	a5,0x52
    e8894832:	ea07b523          	sd	zero,-342(a5) # e88e66d8 <tcp_input_pcb>
        if (tcp_input_delayed_close(pcb)) {
    e8894836:	9b4fe0ef          	jal	ra,e88929ea <tcp_input_delayed_close>
    e889483a:	c2051363          	bnez	a0,e8893c60 <tcp_input+0x5d2>
        tcp_output(pcb);
    e889483e:	856e                	mv	a0,s11
    e8894840:	3d0010ef          	jal	ra,e8895c10 <tcp_output>
    e8894844:	c1cff06f          	j	e8893c60 <tcp_input+0x5d2>
            recv_data = rest;
    e8894848:	e00c                	sd	a1,0(s0)
    e889484a:	b73d                	j	e8894778 <tcp_input+0x10ea>
            if (pcb->rcv_wnd != TCP_WND_MAX(pcb)) {
    e889484c:	05cda783          	lw	a5,92(s11)
    e8894850:	6719                	lui	a4,0x6
    e8894852:	a0070713          	addi	a4,a4,-1536 # 5a00 <memcmp-0xe87fa600>
    e8894856:	00e78563          	beq	a5,a4,e8894860 <tcp_input+0x11d2>
              pcb->rcv_wnd++;
    e889485a:	2785                	addiw	a5,a5,1
    e889485c:	04fdae23          	sw	a5,92(s11)
            TCP_EVENT_CLOSED(pcb, err);
    e8894860:	0e0db783          	ld	a5,224(s11)
    e8894864:	d7e1                	beqz	a5,e889482c <tcp_input+0x119e>
    e8894866:	040db503          	ld	a0,64(s11)
    e889486a:	4681                	li	a3,0
    e889486c:	4601                	li	a2,0
    e889486e:	85ee                	mv	a1,s11
    e8894870:	9782                	jalr	a5
            if (err == ERR_ABRT) {
    e8894872:	57cd                	li	a5,-13
    e8894874:	faf51ce3          	bne	a0,a5,e889482c <tcp_input+0x119e>
    e8894878:	be8ff06f          	j	e8893c60 <tcp_input+0x5d2>
          } else if (ip_addr_isany(&lpcb->local_ip)) {
    e889487c:	000cb783          	ld	a5,0(s9)
    e8894880:	ee078363          	beqz	a5,e8893f66 <tcp_input+0x8d8>
    e8894884:	4781                	li	a5,0
    e8894886:	ee8ff06f          	j	e8893f6e <tcp_input+0x8e0>

00000000e889488a <tcp_trigger_input_pcb_close>:

void
tcp_trigger_input_pcb_close(void)
{
  recv_flags |= TF_CLOSED;
    e889488a:	00052717          	auipc	a4,0x52
    e889488e:	e4670713          	addi	a4,a4,-442 # e88e66d0 <recv_flags>
    e8894892:	00074783          	lbu	a5,0(a4)
    e8894896:	0107e793          	ori	a5,a5,16
    e889489a:	00f70023          	sb	a5,0(a4)
}
    e889489e:	8082                	ret

00000000e88948a0 <tcp_seg_add_chksum>:
tcp_seg_add_chksum(u16_t chksum, u16_t len, u16_t *seg_chksum,
                   u8_t *seg_chksum_swapped)
{
  u32_t helper;
  /* add chksum to old chksum and fold to u16_t */
  helper = chksum + *seg_chksum;
    e88948a0:	00065783          	lhu	a5,0(a2)
  chksum = FOLD_U32T(helper);
  if ((len & 1) != 0) {
    e88948a4:	8985                	andi	a1,a1,1
  helper = chksum + *seg_chksum;
    e88948a6:	9d3d                	addw	a0,a0,a5
  chksum = FOLD_U32T(helper);
    e88948a8:	01055793          	srli	a5,a0,0x10
    e88948ac:	953e                	add	a0,a0,a5
    e88948ae:	3c05350b          	extu	a0,a0,15,0
  if ((len & 1) != 0) {
    e88948b2:	cd91                	beqz	a1,e88948ce <tcp_seg_add_chksum+0x2e>
    *seg_chksum_swapped = 1 - *seg_chksum_swapped;
    e88948b4:	0006c703          	lbu	a4,0(a3)
    e88948b8:	4785                	li	a5,1
    e88948ba:	9f99                	subw	a5,a5,a4
    e88948bc:	00f68023          	sb	a5,0(a3)
    chksum = SWAP_BYTES_IN_WORD(chksum);
    e88948c0:	00851793          	slli	a5,a0,0x8
    e88948c4:	5c85350b          	extu	a0,a0,23,8
    e88948c8:	8d5d                	or	a0,a0,a5
    e88948ca:	3c05350b          	extu	a0,a0,15,0
  }
  *seg_chksum = chksum;
    e88948ce:	00a61023          	sh	a0,0(a2)
}
    e88948d2:	8082                	ret

00000000e88948d4 <tcp_output_segment_busy>:
 * @arg seg the tcp segment to check
 * @return 1 if ref != 1, 0 if ref == 1
 */
static int
tcp_output_segment_busy(const struct tcp_seg *seg)
{
    e88948d4:	1141                	addi	sp,sp,-16
    e88948d6:	e022                	sd	s0,0(sp)
    e88948d8:	e406                	sd	ra,8(sp)
    e88948da:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_output_segment_busy: invalid seg", seg != NULL);
    e88948dc:	e51d                	bnez	a0,e889490a <tcp_output_segment_busy+0x36>
    e88948de:	02f00593          	li	a1,47
    e88948e2:	0003d517          	auipc	a0,0x3d
    e88948e6:	7fe50513          	addi	a0,a0,2046 # e88d20e0 <tcp_persist_backoff+0xb70>
    e88948ea:	a8fe70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88948ee:	00150693          	addi	a3,a0,1
    e88948f2:	59a00613          	li	a2,1434
    e88948f6:	0003e597          	auipc	a1,0x3e
    e88948fa:	87258593          	addi	a1,a1,-1934 # e88d2168 <tcp_persist_backoff+0xbf8>
    e88948fe:	0003a517          	auipc	a0,0x3a
    e8894902:	7b250513          	addi	a0,a0,1970 # e88cf0b0 <kSinTable1024+0x900>
    e8894906:	9c1e70ef          	jal	ra,e887c2c6 <eLIBs_printf>

  /* We only need to check the first pbuf here:
     If a pbuf is queued for transmission, a driver calls pbuf_ref(),
     which only changes the ref count of the first pbuf */
  if (seg->p->ref != 1) {
    e889490a:	641c                	ld	a5,8(s0)
    /* other reference found */
    return 1;
  }
  /* no other references found */
  return 0;
}
    e889490c:	60a2                	ld	ra,8(sp)
    e889490e:	6402                	ld	s0,0(sp)
  if (seg->p->ref != 1) {
    e8894910:	0167c503          	lbu	a0,22(a5)
    e8894914:	157d                	addi	a0,a0,-1
}
    e8894916:	00a03533          	snez	a0,a0
    e889491a:	0141                	addi	sp,sp,16
    e889491c:	8082                	ret

00000000e889491e <tcp_create_segment>:
{
    e889491e:	715d                	addi	sp,sp,-80
    e8894920:	f44e                	sd	s3,40(sp)
    e8894922:	f052                	sd	s4,32(sp)
    e8894924:	ec56                	sd	s5,24(sp)
    e8894926:	e85a                	sd	s6,16(sp)
    e8894928:	e45e                	sd	s7,8(sp)
    e889492a:	e486                	sd	ra,72(sp)
    e889492c:	e0a2                	sd	s0,64(sp)
    e889492e:	fc26                	sd	s1,56(sp)
    e8894930:	f84a                	sd	s2,48(sp)
    e8894932:	8aaa                	mv	s5,a0
    e8894934:	89ae                	mv	s3,a1
    e8894936:	8a32                	mv	s4,a2
    e8894938:	8b36                	mv	s6,a3
    e889493a:	8bba                	mv	s7,a4
  LWIP_ASSERT("tcp_create_segment: invalid pcb", pcb != NULL);
    e889493c:	e51d                	bnez	a0,e889496a <tcp_create_segment+0x4c>
    e889493e:	02f00593          	li	a1,47
    e8894942:	0003d517          	auipc	a0,0x3d
    e8894946:	79e50513          	addi	a0,a0,1950 # e88d20e0 <tcp_persist_backoff+0xb70>
    e889494a:	a2fe70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889494e:	00150693          	addi	a3,a0,1
    e8894952:	0a300613          	li	a2,163
    e8894956:	0003d597          	auipc	a1,0x3d
    e889495a:	43a58593          	addi	a1,a1,1082 # e88d1d90 <tcp_persist_backoff+0x820>
    e889495e:	0003a517          	auipc	a0,0x3a
    e8894962:	75250513          	addi	a0,a0,1874 # e88cf0b0 <kSinTable1024+0x900>
    e8894966:	961e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("tcp_create_segment: invalid pbuf", p != NULL);
    e889496a:	02099863          	bnez	s3,e889499a <tcp_create_segment+0x7c>
    e889496e:	02f00593          	li	a1,47
    e8894972:	0003d517          	auipc	a0,0x3d
    e8894976:	76e50513          	addi	a0,a0,1902 # e88d20e0 <tcp_persist_backoff+0xb70>
    e889497a:	9ffe70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889497e:	00150693          	addi	a3,a0,1
    e8894982:	0a400613          	li	a2,164
    e8894986:	0003d597          	auipc	a1,0x3d
    e889498a:	42a58593          	addi	a1,a1,1066 # e88d1db0 <tcp_persist_backoff+0x840>
    e889498e:	0003a517          	auipc	a0,0x3a
    e8894992:	72250513          	addi	a0,a0,1826 # e88cf0b0 <kSinTable1024+0x900>
    e8894996:	931e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb);
    e889499a:	000b879b          	sext.w	a5,s7
    e889499e:	00279913          	slli	s2,a5,0x2
    e88949a2:	2017b78b          	extu	a5,a5,8,1
    e88949a6:	8b91                	andi	a5,a5,4
    e88949a8:	00497913          	andi	s2,s2,4
  if ((seg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG)) == NULL) {
    e88949ac:	4511                	li	a0,4
  optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb);
    e88949ae:	993e                	add	s2,s2,a5
  if ((seg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG)) == NULL) {
    e88949b0:	f9cf90ef          	jal	ra,e888e14c <memp_malloc>
  optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb);
    e88949b4:	0ff97493          	andi	s1,s2,255
  if ((seg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG)) == NULL) {
    e88949b8:	842a                	mv	s0,a0
    e88949ba:	e105                	bnez	a0,e88949da <tcp_create_segment+0xbc>
    pbuf_free(p);
    e88949bc:	854e                	mv	a0,s3
    e88949be:	88ffa0ef          	jal	ra,e888f24c <pbuf_free>
}
    e88949c2:	8522                	mv	a0,s0
    e88949c4:	60a6                	ld	ra,72(sp)
    e88949c6:	6406                	ld	s0,64(sp)
    e88949c8:	74e2                	ld	s1,56(sp)
    e88949ca:	7942                	ld	s2,48(sp)
    e88949cc:	79a2                	ld	s3,40(sp)
    e88949ce:	7a02                	ld	s4,32(sp)
    e88949d0:	6ae2                	ld	s5,24(sp)
    e88949d2:	6b42                	ld	s6,16(sp)
    e88949d4:	6ba2                	ld	s7,8(sp)
    e88949d6:	6161                	addi	sp,sp,80
    e88949d8:	8082                	ret
  seg->flags = optflags;
    e88949da:	01750aa3          	sb	s7,21(a0)
  seg->next = NULL;
    e88949de:	00053023          	sd	zero,0(a0)
  seg->p = p;
    e88949e2:	01353423          	sd	s3,8(a0)
  LWIP_ASSERT("p->tot_len >= optlen", p->tot_len >= optlen);
    e88949e6:	0109d783          	lhu	a5,16(s3)
    e88949ea:	3c09390b          	extu	s2,s2,15,0
    e88949ee:	0327f863          	bgeu	a5,s2,e8894a1e <tcp_create_segment+0x100>
    e88949f2:	02f00593          	li	a1,47
    e88949f6:	0003d517          	auipc	a0,0x3d
    e88949fa:	6ea50513          	addi	a0,a0,1770 # e88d20e0 <tcp_persist_backoff+0xb70>
    e88949fe:	97be70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894a02:	00150693          	addi	a3,a0,1
    e8894a06:	0b000613          	li	a2,176
    e8894a0a:	0003d597          	auipc	a1,0x3d
    e8894a0e:	3ce58593          	addi	a1,a1,974 # e88d1dd8 <tcp_persist_backoff+0x868>
    e8894a12:	0003a517          	auipc	a0,0x3a
    e8894a16:	69e50513          	addi	a0,a0,1694 # e88cf0b0 <kSinTable1024+0x900>
    e8894a1a:	8ade70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  seg->len = p->tot_len - optlen;
    e8894a1e:	0109d783          	lhu	a5,16(s3)
  if (pbuf_add_header(p, TCP_HLEN)) {
    e8894a22:	45d1                	li	a1,20
  seg->chksum = 0;
    e8894a24:	00041923          	sh	zero,18(s0)
  seg->len = p->tot_len - optlen;
    e8894a28:	4127893b          	subw	s2,a5,s2
    e8894a2c:	01241823          	sh	s2,16(s0)
  seg->chksum_swapped = 0;
    e8894a30:	00040a23          	sb	zero,20(s0)
  if (pbuf_add_header(p, TCP_HLEN)) {
    e8894a34:	854e                	mv	a0,s3
    e8894a36:	f66fa0ef          	jal	ra,e888f19c <pbuf_add_header>
    e8894a3a:	cd19                	beqz	a0,e8894a58 <tcp_create_segment+0x13a>
    TCP_STATS_INC(tcp.err);
    e8894a3c:	00052717          	auipc	a4,0x52
    e8894a40:	a1470713          	addi	a4,a4,-1516 # e88e6450 <lwip_stats>
    e8894a44:	0c075783          	lhu	a5,192(a4)
    tcp_seg_free(seg);
    e8894a48:	8522                	mv	a0,s0
    return NULL;
    e8894a4a:	4401                	li	s0,0
    TCP_STATS_INC(tcp.err);
    e8894a4c:	2785                	addiw	a5,a5,1
    e8894a4e:	0cf71023          	sh	a5,192(a4)
    tcp_seg_free(seg);
    e8894a52:	adefc0ef          	jal	ra,e8890d30 <tcp_seg_free>
    return NULL;
    e8894a56:	b7b5                	j	e88949c2 <tcp_create_segment+0xa4>
  seg->tcphdr = (struct tcp_hdr *)seg->p->payload;
    e8894a58:	641c                	ld	a5,8(s0)
    e8894a5a:	0087b903          	ld	s2,8(a5)
    e8894a5e:	01243c23          	sd	s2,24(s0)
  seg->tcphdr->src = lwip_htons(pcb->local_port);
    e8894a62:	04aad503          	lhu	a0,74(s5)
    e8894a66:	cb8f20ef          	jal	ra,e8886f1e <lwip_htons>
    e8894a6a:	00a91023          	sh	a0,0(s2)
  seg->tcphdr->dest = lwip_htons(pcb->remote_port);
    e8894a6e:	04cad503          	lhu	a0,76(s5)
    e8894a72:	01843903          	ld	s2,24(s0)
    e8894a76:	ca8f20ef          	jal	ra,e8886f1e <lwip_htons>
    e8894a7a:	00a91123          	sh	a0,2(s2)
  seg->tcphdr->seqno = lwip_htonl(seqno);
    e8894a7e:	855a                	mv	a0,s6
    e8894a80:	01843903          	ld	s2,24(s0)
    e8894a84:	caaf20ef          	jal	ra,e8886f2e <lwip_htonl>
    e8894a88:	00a92223          	sw	a0,4(s2)
  TCPH_HDRLEN_FLAGS_SET(seg->tcphdr, (5 + optlen / 4), hdrflags);
    e8894a8c:	4424b50b          	extu	a0,s1,17,2
    e8894a90:	2515                	addiw	a0,a0,5
    e8894a92:	00c5151b          	slliw	a0,a0,0xc
    e8894a96:	3c05350b          	extu	a0,a0,15,0
    e8894a9a:	01843903          	ld	s2,24(s0)
    e8894a9e:	01456533          	or	a0,a0,s4
    e8894aa2:	c7cf20ef          	jal	ra,e8886f1e <lwip_htons>
    e8894aa6:	00a91623          	sh	a0,12(s2)
  seg->tcphdr->urgp = 0;
    e8894aaa:	6c1c                	ld	a5,24(s0)
    e8894aac:	00079923          	sh	zero,18(a5)
  return seg;
    e8894ab0:	bf09                	j	e88949c2 <tcp_create_segment+0xa4>

00000000e8894ab2 <tcp_route>:
{
    e8894ab2:	87aa                	mv	a5,a0
    e8894ab4:	852e                	mv	a0,a1
  if ((pcb != NULL) && (pcb->netif_idx != NETIF_NO_INDEX)) {
    e8894ab6:	c799                	beqz	a5,e8894ac4 <tcp_route+0x12>
    e8894ab8:	0307c783          	lbu	a5,48(a5)
    e8894abc:	c781                	beqz	a5,e8894ac4 <tcp_route+0x12>
    return netif_get_by_index(pcb->netif_idx);
    e8894abe:	853e                	mv	a0,a5
    e8894ac0:	d71f906f          	j	e888e830 <netif_get_by_index>
    return ip_route(src, dst);
    e8894ac4:	ca09                	beqz	a2,e8894ad6 <tcp_route+0x24>
    e8894ac6:	01464703          	lbu	a4,20(a2)
    e8894aca:	4799                	li	a5,6
    e8894acc:	00f71563          	bne	a4,a5,e8894ad6 <tcp_route+0x24>
    e8894ad0:	85b2                	mv	a1,a2
    e8894ad2:	f6af506f          	j	e888a23c <ip6_route>
    e8894ad6:	8532                	mv	a0,a2
    e8894ad8:	b60f406f          	j	e8888e38 <ip4_route>

00000000e8894adc <tcp_output_control_segment>:
 * header checksum and calling ip_output_if while handling netif hints and stats.
 */
static err_t
tcp_output_control_segment(const struct tcp_pcb *pcb, struct pbuf *p,
                           const ip_addr_t *src, const ip_addr_t *dst)
{
    e8894adc:	7139                	addi	sp,sp,-64
    e8894ade:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8894ae2:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8894ae6:	fc06                	sd	ra,56(sp)
    e8894ae8:	f852                	sd	s4,48(sp)
    e8894aea:	89aa                	mv	s3,a0
    e8894aec:	842e                	mv	s0,a1
    e8894aee:	8932                	mv	s2,a2
    e8894af0:	84b6                	mv	s1,a3
  err_t err;
  struct netif *netif;

  LWIP_ASSERT("tcp_output_control_segment: invalid pbuf", p != NULL);
    e8894af2:	e59d                	bnez	a1,e8894b20 <tcp_output_control_segment+0x44>
    e8894af4:	02f00593          	li	a1,47
    e8894af8:	0003d517          	auipc	a0,0x3d
    e8894afc:	5e850513          	addi	a0,a0,1512 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894b00:	879e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894b04:	00150693          	addi	a3,a0,1
    e8894b08:	78700613          	li	a2,1927
    e8894b0c:	0003d597          	auipc	a1,0x3d
    e8894b10:	57c58593          	addi	a1,a1,1404 # e88d2088 <tcp_persist_backoff+0xb18>
    e8894b14:	0003a517          	auipc	a0,0x3a
    e8894b18:	59c50513          	addi	a0,a0,1436 # e88cf0b0 <kSinTable1024+0x900>
    e8894b1c:	faae70ef          	jal	ra,e887c2c6 <eLIBs_printf>

  netif = tcp_route(pcb, src, dst);
    e8894b20:	8626                	mv	a2,s1
    e8894b22:	85ca                	mv	a1,s2
    e8894b24:	854e                	mv	a0,s3
    e8894b26:	f8dff0ef          	jal	ra,e8894ab2 <tcp_route>
  if (netif == NULL) {
    e8894b2a:	e42a                	sd	a0,8(sp)
    err = ERR_RTE;
    e8894b2c:	5a71                	li	s4,-4
  if (netif == NULL) {
    e8894b2e:	c929                	beqz	a0,e8894b80 <tcp_output_control_segment+0xa4>
  } else {
    u8_t ttl, tos;
#if CHECKSUM_GEN_TCP
    IF__NETIF_CHECKSUM_ENABLED(netif, NETIF_CHECKSUM_GEN_TCP) {
      struct tcp_hdr *tcphdr = (struct tcp_hdr *)p->payload;
      tcphdr->chksum = ip_chksum_pseudo(p, IP_PROTO_TCP, p->tot_len,
    e8894b30:	01045603          	lhu	a2,16(s0)
      struct tcp_hdr *tcphdr = (struct tcp_hdr *)p->payload;
    e8894b34:	00843a03          	ld	s4,8(s0)
      tcphdr->chksum = ip_chksum_pseudo(p, IP_PROTO_TCP, p->tot_len,
    e8894b38:	8726                	mv	a4,s1
    e8894b3a:	86ca                	mv	a3,s2
    e8894b3c:	4599                	li	a1,6
    e8894b3e:	8522                	mv	a0,s0
    e8894b40:	d0ff20ef          	jal	ra,e888784e <ip_chksum_pseudo>
    e8894b44:	00aa1823          	sh	a0,16(s4)
                                        src, dst);
    }
#endif
    if (pcb != NULL) {
    e8894b48:	6822                	ld	a6,8(sp)
    e8894b4a:	04098763          	beqz	s3,e8894b98 <tcp_output_control_segment+0xbc>
      NETIF_SET_HINTS(netif, LWIP_CONST_CAST(struct netif_hint*, &(pcb->netif_hints)));
      ttl = pcb->ttl;
    e8894b4e:	0339c683          	lbu	a3,51(s3)
      tos = pcb->tos;
    e8894b52:	0329c703          	lbu	a4,50(s3)
    } else {
      /* Send output with hardcoded TTL/HL since we have no access to the pcb */
      ttl = TCP_TTL;
      tos = 0;
    }
    TCP_STATS_INC(tcp.xmit);
    e8894b56:	00052617          	auipc	a2,0x52
    e8894b5a:	8fa60613          	addi	a2,a2,-1798 # e88e6450 <lwip_stats>
    e8894b5e:	0ac65783          	lhu	a5,172(a2)
    e8894b62:	2785                	addiw	a5,a5,1
    e8894b64:	0af61623          	sh	a5,172(a2)
    err = ip_output_if(p, src, dst, ttl, tos, IP_PROTO_TCP, netif);
    e8894b68:	cc85                	beqz	s1,e8894ba0 <tcp_output_control_segment+0xc4>
    e8894b6a:	0144c603          	lbu	a2,20(s1)
    e8894b6e:	4799                	li	a5,6
    e8894b70:	02f61863          	bne	a2,a5,e8894ba0 <tcp_output_control_segment+0xc4>
    e8894b74:	8626                	mv	a2,s1
    e8894b76:	85ca                	mv	a1,s2
    e8894b78:	8522                	mv	a0,s0
    e8894b7a:	acef60ef          	jal	ra,e888ae48 <ip6_output_if>
    e8894b7e:	8a2a                	mv	s4,a0
    NETIF_RESET_HINTS(netif);
  }
  pbuf_free(p);
    e8894b80:	8522                	mv	a0,s0
    e8894b82:	ecafa0ef          	jal	ra,e888f24c <pbuf_free>
  return err;
}
    e8894b86:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8894b8a:	70e2                	ld	ra,56(sp)
    e8894b8c:	8552                	mv	a0,s4
    e8894b8e:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8894b92:	7a42                	ld	s4,48(sp)
    e8894b94:	6121                	addi	sp,sp,64
    e8894b96:	8082                	ret
      tos = 0;
    e8894b98:	4701                	li	a4,0
      ttl = TCP_TTL;
    e8894b9a:	0ff00693          	li	a3,255
    e8894b9e:	bf65                	j	e8894b56 <tcp_output_control_segment+0x7a>
    err = ip_output_if(p, src, dst, ttl, tos, IP_PROTO_TCP, netif);
    e8894ba0:	4799                	li	a5,6
    e8894ba2:	8626                	mv	a2,s1
    e8894ba4:	85ca                	mv	a1,s2
    e8894ba6:	8522                	mv	a0,s0
    e8894ba8:	9f1f40ef          	jal	ra,e8889598 <ip4_output_if>
    e8894bac:	bfc9                	j	e8894b7e <tcp_output_control_segment+0xa2>

00000000e8894bae <tcp_output_alloc_header_common.constprop.4>:
tcp_output_alloc_header_common(u32_t ackno, u16_t optlen, u16_t datalen,
    e8894bae:	715d                	addi	sp,sp,-80
  p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM);
    e8894bb0:	25d1                	addiw	a1,a1,20
tcp_output_alloc_header_common(u32_t ackno, u16_t optlen, u16_t datalen,
    e8894bb2:	f052                	sd	s4,32(sp)
    e8894bb4:	ec56                	sd	s5,24(sp)
    e8894bb6:	8a2a                	mv	s4,a0
    e8894bb8:	8ab2                	mv	s5,a2
  p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM);
    e8894bba:	3c05b58b          	extu	a1,a1,15,0
    e8894bbe:	28000613          	li	a2,640
    e8894bc2:	03600513          	li	a0,54
tcp_output_alloc_header_common(u32_t ackno, u16_t optlen, u16_t datalen,
    e8894bc6:	fc26                	sd	s1,56(sp)
    e8894bc8:	f84a                	sd	s2,48(sp)
    e8894bca:	f44e                	sd	s3,40(sp)
    e8894bcc:	e85a                	sd	s6,16(sp)
    e8894bce:	e45e                	sd	s7,8(sp)
    e8894bd0:	e486                	sd	ra,72(sp)
    e8894bd2:	e0a2                	sd	s0,64(sp)
    e8894bd4:	8bb6                	mv	s7,a3
    e8894bd6:	8b3a                	mv	s6,a4
    e8894bd8:	89be                	mv	s3,a5
    e8894bda:	8942                	mv	s2,a6
  p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM);
    e8894bdc:	fb4fa0ef          	jal	ra,e888f390 <pbuf_alloc>
    e8894be0:	84aa                	mv	s1,a0
  if (p != NULL) {
    e8894be2:	c93d                	beqz	a0,e8894c58 <tcp_output_alloc_header_common.constprop.4+0xaa>
    LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr",
    e8894be4:	01255703          	lhu	a4,18(a0)
    e8894be8:	47cd                	li	a5,19
    e8894bea:	02e7e863          	bltu	a5,a4,e8894c1a <tcp_output_alloc_header_common.constprop.4+0x6c>
    e8894bee:	02f00593          	li	a1,47
    e8894bf2:	0003d517          	auipc	a0,0x3d
    e8894bf6:	4ee50513          	addi	a0,a0,1262 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894bfa:	f7ee70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894bfe:	00150693          	addi	a3,a0,1
    e8894c02:	72400613          	li	a2,1828
    e8894c06:	0003d597          	auipc	a1,0x3d
    e8894c0a:	45258593          	addi	a1,a1,1106 # e88d2058 <tcp_persist_backoff+0xae8>
    e8894c0e:	0003a517          	auipc	a0,0x3a
    e8894c12:	4a250513          	addi	a0,a0,1186 # e88cf0b0 <kSinTable1024+0x900>
    e8894c16:	eb0e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    tcphdr = (struct tcp_hdr *)p->payload;
    e8894c1a:	6480                	ld	s0,8(s1)
    tcphdr->src = lwip_htons(src_port);
    e8894c1c:	855e                	mv	a0,s7
    e8894c1e:	b00f20ef          	jal	ra,e8886f1e <lwip_htons>
    e8894c22:	00a41023          	sh	a0,0(s0)
    tcphdr->dest = lwip_htons(dst_port);
    e8894c26:	855a                	mv	a0,s6
    e8894c28:	af6f20ef          	jal	ra,e8886f1e <lwip_htons>
    e8894c2c:	00a41123          	sh	a0,2(s0)
    tcphdr->seqno = seqno_be;
    e8894c30:	01542223          	sw	s5,4(s0)
    tcphdr->ackno = lwip_htonl(ackno);
    e8894c34:	8552                	mv	a0,s4
    e8894c36:	af8f20ef          	jal	ra,e8886f2e <lwip_htonl>
    e8894c3a:	c408                	sw	a0,8(s0)
    TCPH_HDRLEN_FLAGS_SET(tcphdr, (5 + optlen / 4), flags);
    e8894c3c:	6515                	lui	a0,0x5
    e8894c3e:	00a9e533          	or	a0,s3,a0
    e8894c42:	adcf20ef          	jal	ra,e8886f1e <lwip_htons>
    e8894c46:	00a41623          	sh	a0,12(s0)
    tcphdr->wnd = lwip_htons(wnd);
    e8894c4a:	854a                	mv	a0,s2
    e8894c4c:	ad2f20ef          	jal	ra,e8886f1e <lwip_htons>
    e8894c50:	00a41723          	sh	a0,14(s0)
    tcphdr->chksum = 0;
    e8894c54:	00042823          	sw	zero,16(s0)
}
    e8894c58:	60a6                	ld	ra,72(sp)
    e8894c5a:	6406                	ld	s0,64(sp)
    e8894c5c:	8526                	mv	a0,s1
    e8894c5e:	7942                	ld	s2,48(sp)
    e8894c60:	74e2                	ld	s1,56(sp)
    e8894c62:	79a2                	ld	s3,40(sp)
    e8894c64:	7a02                	ld	s4,32(sp)
    e8894c66:	6ae2                	ld	s5,24(sp)
    e8894c68:	6b42                	ld	s6,16(sp)
    e8894c6a:	6ba2                	ld	s7,8(sp)
    e8894c6c:	6161                	addi	sp,sp,80
    e8894c6e:	8082                	ret

00000000e8894c70 <tcp_output_alloc_header.constprop.3>:
tcp_output_alloc_header(struct tcp_pcb *pcb, u16_t optlen, u16_t datalen,
    e8894c70:	1101                	addi	sp,sp,-32
    e8894c72:	f891540b          	sdd	s0,s1,(sp),0,4
    e8894c76:	e84a                	sd	s2,16(sp)
    e8894c78:	ec06                	sd	ra,24(sp)
    e8894c7a:	842a                	mv	s0,a0
    e8894c7c:	84ae                	mv	s1,a1
    e8894c7e:	8932                	mv	s2,a2
  LWIP_ASSERT("tcp_output_alloc_header: invalid pcb", pcb != NULL);
    e8894c80:	e51d                	bnez	a0,e8894cae <tcp_output_alloc_header.constprop.3+0x3e>
    e8894c82:	02f00593          	li	a1,47
    e8894c86:	0003d517          	auipc	a0,0x3d
    e8894c8a:	45a50513          	addi	a0,a0,1114 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894c8e:	eeae70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894c92:	00150693          	addi	a3,a0,1
    e8894c96:	74200613          	li	a2,1858
    e8894c9a:	0003d597          	auipc	a1,0x3d
    e8894c9e:	39658593          	addi	a1,a1,918 # e88d2030 <tcp_persist_backoff+0xac0>
    e8894ca2:	0003a517          	auipc	a0,0x3a
    e8894ca6:	40e50513          	addi	a0,a0,1038 # e88cf0b0 <kSinTable1024+0x900>
    e8894caa:	e1ce70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd)));
    e8894cae:	10944783          	lbu	a5,265(s0)
    e8894cb2:	06042803          	lw	a6,96(s0)
  p = tcp_output_alloc_header_common(pcb->rcv_nxt, optlen, datalen,
    e8894cb6:	4c28                	lw	a0,88(s0)
    e8894cb8:	04a45683          	lhu	a3,74(s0)
    TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd)));
    e8894cbc:	00f8583b          	srlw	a6,a6,a5
  p = tcp_output_alloc_header_common(pcb->rcv_nxt, optlen, datalen,
    e8894cc0:	67c1                	lui	a5,0x10
    e8894cc2:	ffe78613          	addi	a2,a5,-2 # fffe <memcmp-0xe87f0002>
    e8894cc6:	04c45703          	lhu	a4,76(s0)
    e8894cca:	01067463          	bgeu	a2,a6,e8894cd2 <tcp_output_alloc_header.constprop.3+0x62>
    e8894cce:	fff78813          	addi	a6,a5,-1
    e8894cd2:	3c08380b          	extu	a6,a6,15,0
    e8894cd6:	47c1                	li	a5,16
    e8894cd8:	864a                	mv	a2,s2
    e8894cda:	85a6                	mv	a1,s1
    e8894cdc:	ed3ff0ef          	jal	ra,e8894bae <tcp_output_alloc_header_common.constprop.4>
  if (p != NULL) {
    e8894ce0:	c509                	beqz	a0,e8894cea <tcp_output_alloc_header.constprop.3+0x7a>
    pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd;
    e8894ce2:	4c3c                	lw	a5,88(s0)
    e8894ce4:	5038                	lw	a4,96(s0)
    e8894ce6:	9fb9                	addw	a5,a5,a4
    e8894ce8:	d07c                	sw	a5,100(s0)
}
    e8894cea:	60e2                	ld	ra,24(sp)
    e8894cec:	f891440b          	ldd	s0,s1,(sp),0,4
    e8894cf0:	6942                	ld	s2,16(sp)
    e8894cf2:	6105                	addi	sp,sp,32
    e8894cf4:	8082                	ret

00000000e8894cf6 <tcp_output_fill_options.isra.0.constprop.6>:
  LWIP_ASSERT("tcp_output_fill_options: invalid pbuf", p != NULL);
    e8894cf6:	e91d                	bnez	a0,e8894d2c <tcp_output_fill_options.isra.0.constprop.6+0x36>
tcp_output_fill_options(const struct tcp_pcb *pcb, struct pbuf *p, u8_t optflags, u8_t num_sacks)
    e8894cf8:	1141                	addi	sp,sp,-16
  LWIP_ASSERT("tcp_output_fill_options: invalid pbuf", p != NULL);
    e8894cfa:	02f00593          	li	a1,47
    e8894cfe:	0003d517          	auipc	a0,0x3d
    e8894d02:	3e250513          	addi	a0,a0,994 # e88d20e0 <tcp_persist_backoff+0xb70>
tcp_output_fill_options(const struct tcp_pcb *pcb, struct pbuf *p, u8_t optflags, u8_t num_sacks)
    e8894d06:	e406                	sd	ra,8(sp)
  LWIP_ASSERT("tcp_output_fill_options: invalid pbuf", p != NULL);
    e8894d08:	e70e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894d0c:	00150693          	addi	a3,a0,1
}
    e8894d10:	60a2                	ld	ra,8(sp)
  LWIP_ASSERT("tcp_output_fill_options: invalid pbuf", p != NULL);
    e8894d12:	75600613          	li	a2,1878
    e8894d16:	0003d597          	auipc	a1,0x3d
    e8894d1a:	3a258593          	addi	a1,a1,930 # e88d20b8 <tcp_persist_backoff+0xb48>
    e8894d1e:	0003a517          	auipc	a0,0x3a
    e8894d22:	39250513          	addi	a0,a0,914 # e88cf0b0 <kSinTable1024+0x900>
}
    e8894d26:	0141                	addi	sp,sp,16
  LWIP_ASSERT("tcp_output_fill_options: invalid pbuf", p != NULL);
    e8894d28:	d9ee706f          	j	e887c2c6 <eLIBs_printf>
    e8894d2c:	8082                	ret

00000000e8894d2e <tcp_write>:
{
    e8894d2e:	7171                	addi	sp,sp,-176
    e8894d30:	f506                	sd	ra,168(sp)
    e8894d32:	f122                	sd	s0,160(sp)
    e8894d34:	ed26                	sd	s1,152(sp)
    e8894d36:	e94a                	sd	s2,144(sp)
    e8894d38:	e54e                	sd	s3,136(sp)
    e8894d3a:	e152                	sd	s4,128(sp)
    e8894d3c:	fcd6                	sd	s5,120(sp)
    e8894d3e:	f8da                	sd	s6,112(sp)
    e8894d40:	f4de                	sd	s7,104(sp)
    e8894d42:	f0e2                	sd	s8,96(sp)
    e8894d44:	ece6                	sd	s9,88(sp)
    e8894d46:	e8ea                	sd	s10,80(sp)
    e8894d48:	e4ee                	sd	s11,72(sp)
    e8894d4a:	f8d1558b          	sdd	a1,a3,(sp),0,4
  LWIP_ERROR("tcp_write: invalid pcb", pcb != NULL, return ERR_ARG);
    e8894d4e:	e921                	bnez	a0,e8894d9e <tcp_write+0x70>
    e8894d50:	02f00593          	li	a1,47
    e8894d54:	0003d517          	auipc	a0,0x3d
    e8894d58:	38c50513          	addi	a0,a0,908 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894d5c:	e1ce70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894d60:	00150693          	addi	a3,a0,1
    e8894d64:	19e00613          	li	a2,414
    e8894d68:	0003d597          	auipc	a1,0x3d
    e8894d6c:	5e058593          	addi	a1,a1,1504 # e88d2348 <tcp_persist_backoff+0xdd8>
  LWIP_ERROR("tcp_write: arg == NULL (programmer violates API)",
    e8894d70:	0003a517          	auipc	a0,0x3a
    e8894d74:	34050513          	addi	a0,a0,832 # e88cf0b0 <kSinTable1024+0x900>
    e8894d78:	d4ee70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8894d7c:	5441                	li	s0,-16
}
    e8894d7e:	8522                	mv	a0,s0
    e8894d80:	70aa                	ld	ra,168(sp)
    e8894d82:	740a                	ld	s0,160(sp)
    e8894d84:	64ea                	ld	s1,152(sp)
    e8894d86:	694a                	ld	s2,144(sp)
    e8894d88:	69aa                	ld	s3,136(sp)
    e8894d8a:	6a0a                	ld	s4,128(sp)
    e8894d8c:	7ae6                	ld	s5,120(sp)
    e8894d8e:	7b46                	ld	s6,112(sp)
    e8894d90:	7ba6                	ld	s7,104(sp)
    e8894d92:	7c06                	ld	s8,96(sp)
    e8894d94:	6ce6                	ld	s9,88(sp)
    e8894d96:	6d46                	ld	s10,80(sp)
    e8894d98:	6da6                	ld	s11,72(sp)
    e8894d9a:	614d                	addi	sp,sp,176
    e8894d9c:	8082                	ret
  mss_local = LWIP_MIN(pcb->mss, TCPWND_MIN16(pcb->snd_wnd_max / 2));
    e8894d9e:	0a052703          	lw	a4,160(a0)
    e8894da2:	000206b7          	lui	a3,0x20
    e8894da6:	16f5                	addi	a3,a3,-3
    e8894da8:	8c2a                	mv	s8,a0
    e8894daa:	8a32                	mv	s4,a2
    e8894dac:	04e6e163          	bltu	a3,a4,e8894dee <tcp_write+0xc0>
    e8894db0:	7c17370b          	extu	a4,a4,31,1
    e8894db4:	06ac5a83          	lhu	s5,106(s8)
    e8894db8:	015726b3          	slt	a3,a4,s5
    e8894dbc:	40da970b          	mveqz	a4,s5,a3
    e8894dc0:	2701                	sext.w	a4,a4
  mss_local = mss_local ? mss_local : pcb->mss;
    e8894dc2:	c319                	beqz	a4,e8894dc8 <tcp_write+0x9a>
  mss_local = LWIP_MIN(pcb->mss, TCPWND_MIN16(pcb->snd_wnd_max / 2));
    e8894dc4:	3c073a8b          	extu	s5,a4,15,0
  LWIP_ERROR("tcp_write: arg == NULL (programmer violates API)",
    e8894dc8:	6782                	ld	a5,0(sp)
    e8894dca:	e78d                	bnez	a5,e8894df4 <tcp_write+0xc6>
    e8894dcc:	02f00593          	li	a1,47
    e8894dd0:	0003d517          	auipc	a0,0x3d
    e8894dd4:	31050513          	addi	a0,a0,784 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894dd8:	da0e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894ddc:	00150693          	addi	a3,a0,1
    e8894de0:	1ae00613          	li	a2,430
    e8894de4:	0003d597          	auipc	a1,0x3d
    e8894de8:	57c58593          	addi	a1,a1,1404 # e88d2360 <tcp_persist_backoff+0xdf0>
    e8894dec:	b751                	j	e8894d70 <tcp_write+0x42>
  mss_local = LWIP_MIN(pcb->mss, TCPWND_MIN16(pcb->snd_wnd_max / 2));
    e8894dee:	6741                	lui	a4,0x10
    e8894df0:	177d                	addi	a4,a4,-1
    e8894df2:	b7c9                	j	e8894db4 <tcp_write+0x86>
  if ((pcb->state != ESTABLISHED) &&
    e8894df4:	048c4703          	lbu	a4,72(s8)
    e8894df8:	469d                	li	a3,7
    e8894dfa:	00d70963          	beq	a4,a3,e8894e0c <tcp_write+0xde>
      (pcb->state != CLOSE_WAIT) &&
    e8894dfe:	3779                	addiw	a4,a4,-2
    e8894e00:	0ff77713          	andi	a4,a4,255
    e8894e04:	4689                	li	a3,2
    return ERR_CONN;
    e8894e06:	5455                	li	s0,-11
      (pcb->state != CLOSE_WAIT) &&
    e8894e08:	f6e6ebe3          	bltu	a3,a4,e8894d7e <tcp_write+0x50>
  } else if (len == 0) {
    e8894e0c:	060a0c63          	beqz	s4,e8894e84 <tcp_write+0x156>
  if (len > pcb->snd_buf) {
    e8894e10:	0a4c2703          	lw	a4,164(s8)
    e8894e14:	01477a63          	bgeu	a4,s4,e8894e28 <tcp_write+0xfa>
    tcp_set_flags(pcb, TF_NAGLEMEMERR);
    e8894e18:	04ec5703          	lhu	a4,78(s8)
    return ERR_MEM;
    e8894e1c:	547d                	li	s0,-1
    tcp_set_flags(pcb, TF_NAGLEMEMERR);
    e8894e1e:	08076713          	ori	a4,a4,128
    e8894e22:	04ec1723          	sh	a4,78(s8)
  if (err != ERR_OK) {
    e8894e26:	bfa1                	j	e8894d7e <tcp_write+0x50>
  if (pcb->snd_queuelen >= LWIP_MIN(TCP_SND_QUEUELEN, (TCP_SNDQUEUELEN_OVERFLOW + 1))) {
    e8894e28:	0a8c5683          	lhu	a3,168(s8)
    e8894e2c:	03f00713          	li	a4,63
    e8894e30:	00d77c63          	bgeu	a4,a3,e8894e48 <tcp_write+0x11a>
    TCP_STATS_INC(tcp.memerr);
    e8894e34:	00051697          	auipc	a3,0x51
    e8894e38:	61c68693          	addi	a3,a3,1564 # e88e6450 <lwip_stats>
    e8894e3c:	0b86d703          	lhu	a4,184(a3)
    e8894e40:	2705                	addiw	a4,a4,1
    e8894e42:	0ae69c23          	sh	a4,184(a3)
    e8894e46:	bfc9                	j	e8894e18 <tcp_write+0xea>
  if (pcb->snd_queuelen != 0) {
    e8894e48:	0b8c3703          	ld	a4,184(s8)
    e8894e4c:	14068163          	beqz	a3,e8894f8e <tcp_write+0x260>
    LWIP_ASSERT("tcp_write: pbufs on queue => at least one queue non-empty",
    e8894e50:	eb15                	bnez	a4,e8894e84 <tcp_write+0x156>
    e8894e52:	0b0c3703          	ld	a4,176(s8)
    e8894e56:	e71d                	bnez	a4,e8894e84 <tcp_write+0x156>
    e8894e58:	02f00593          	li	a1,47
    e8894e5c:	0003d517          	auipc	a0,0x3d
    e8894e60:	28450513          	addi	a0,a0,644 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894e64:	d14e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894e68:	00150693          	addi	a3,a0,1
    e8894e6c:	15600613          	li	a2,342
    e8894e70:	0003d597          	auipc	a1,0x3d
    e8894e74:	52858593          	addi	a1,a1,1320 # e88d2398 <tcp_persist_backoff+0xe28>
    LWIP_ASSERT("tcp_write: no pbufs on queue => both queues empty",
    e8894e78:	0003a517          	auipc	a0,0x3a
    e8894e7c:	23850513          	addi	a0,a0,568 # e88cf0b0 <kSinTable1024+0x900>
    e8894e80:	c46e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (pcb->unsent != NULL) {
    e8894e84:	0b0c3483          	ld	s1,176(s8)
  queuelen = pcb->snd_queuelen;
    e8894e88:	0a8c5b03          	lhu	s6,168(s8)
  if (pcb->unsent != NULL) {
    e8894e8c:	12048763          	beqz	s1,e8894fba <tcp_write+0x28c>
    e8894e90:	8926                	mv	s2,s1
    for (last_unsent = pcb->unsent; last_unsent->next != NULL;
    e8894e92:	6084                	ld	s1,0(s1)
    e8894e94:	fcf5                	bnez	s1,e8894e90 <tcp_write+0x162>
    unsent_optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(last_unsent->flags, pcb);
    e8894e96:	01594403          	lbu	s0,21(s2)
    LWIP_ASSERT("mss_local is too small", mss_local >= last_unsent->len + unsent_optlen);
    e8894e9a:	01095703          	lhu	a4,16(s2)
    unsent_optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(last_unsent->flags, pcb);
    e8894e9e:	0024199b          	slliw	s3,s0,0x2
    e8894ea2:	4014340b          	extu	s0,s0,16,1
    e8894ea6:	0049f993          	andi	s3,s3,4
    e8894eaa:	8811                	andi	s0,s0,4
    e8894eac:	944e                	add	s0,s0,s3
    LWIP_ASSERT("mss_local is too small", mss_local >= last_unsent->len + unsent_optlen);
    e8894eae:	9722                	add	a4,a4,s0
    e8894eb0:	02ead863          	bge	s5,a4,e8894ee0 <tcp_write+0x1b2>
    e8894eb4:	02f00593          	li	a1,47
    e8894eb8:	0003d517          	auipc	a0,0x3d
    e8894ebc:	22850513          	addi	a0,a0,552 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894ec0:	cb8e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894ec4:	00150693          	addi	a3,a0,1
    e8894ec8:	1e600613          	li	a2,486
    e8894ecc:	0003d597          	auipc	a1,0x3d
    e8894ed0:	54458593          	addi	a1,a1,1348 # e88d2410 <tcp_persist_backoff+0xea0>
    e8894ed4:	0003a517          	auipc	a0,0x3a
    e8894ed8:	1dc50513          	addi	a0,a0,476 # e88cf0b0 <kSinTable1024+0x900>
    e8894edc:	beae70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    oversize = pcb->unsent_oversize;
    e8894ee0:	0aac5d83          	lhu	s11,170(s8)
    if (oversize > 0) {
    e8894ee4:	100d8763          	beqz	s11,e8894ff2 <tcp_write+0x2c4>
    space = mss_local - (last_unsent->len + unsent_optlen);
    e8894ee8:	01095983          	lhu	s3,16(s2)
      LWIP_ASSERT("inconsistent oversize vs. space", oversize <= space);
    e8894eec:	000d8d1b          	sext.w	s10,s11
    space = mss_local - (last_unsent->len + unsent_optlen);
    e8894ef0:	008989bb          	addw	s3,s3,s0
    e8894ef4:	413a89bb          	subw	s3,s5,s3
    e8894ef8:	3c09b98b          	extu	s3,s3,15,0
      LWIP_ASSERT("inconsistent oversize vs. space", oversize <= space);
    e8894efc:	00098b9b          	sext.w	s7,s3
    e8894f00:	03abf863          	bgeu	s7,s10,e8894f30 <tcp_write+0x202>
    e8894f04:	02f00593          	li	a1,47
    e8894f08:	0003d517          	auipc	a0,0x3d
    e8894f0c:	1d850513          	addi	a0,a0,472 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894f10:	c68e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894f14:	00150693          	addi	a3,a0,1
    e8894f18:	1f800613          	li	a2,504
    e8894f1c:	0003d597          	auipc	a1,0x3d
    e8894f20:	50c58593          	addi	a1,a1,1292 # e88d2428 <tcp_persist_backoff+0xeb8>
    e8894f24:	0003a517          	auipc	a0,0x3a
    e8894f28:	18c50513          	addi	a0,a0,396 # e88cf0b0 <kSinTable1024+0x900>
    e8894f2c:	b9ae70ef          	jal	ra,e887c2c6 <eLIBs_printf>
      oversize_used = LWIP_MIN(space, LWIP_MIN(oversize, len));
    e8894f30:	000a071b          	sext.w	a4,s4
    e8894f34:	3c0db40b          	extu	s0,s11,15,0
    e8894f38:	01a77463          	bgeu	a4,s10,e8894f40 <tcp_write+0x212>
    e8894f3c:	3c0a340b          	extu	s0,s4,15,0
    e8894f40:	3c04368b          	extu	a3,s0,15,0
    e8894f44:	00dbf463          	bgeu	s7,a3,e8894f4c <tcp_write+0x21e>
    e8894f48:	3c09b40b          	extu	s0,s3,15,0
      oversize -= oversize_used;
    e8894f4c:	408d883b          	subw	a6,s11,s0
    e8894f50:	3c083d8b          	extu	s11,a6,15,0
    LWIP_ASSERT("inconsistent oversize vs. len", (oversize == 0) || (pos == len));
    e8894f54:	020d8b63          	beqz	s11,e8894f8a <tcp_write+0x25c>
    e8894f58:	89ca                	mv	s3,s2
    e8894f5a:	24870b63          	beq	a4,s0,e88951b0 <tcp_write+0x482>
    e8894f5e:	02f00593          	li	a1,47
    e8894f62:	0003d517          	auipc	a0,0x3d
    e8894f66:	17e50513          	addi	a0,a0,382 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894f6a:	c0ee70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894f6e:	00150693          	addi	a3,a0,1
    e8894f72:	20000613          	li	a2,512
    e8894f76:	0003d597          	auipc	a1,0x3d
    e8894f7a:	4d258593          	addi	a1,a1,1234 # e88d2448 <tcp_persist_backoff+0xed8>
    e8894f7e:	0003a517          	auipc	a0,0x3a
    e8894f82:	13250513          	addi	a0,a0,306 # e88cf0b0 <kSinTable1024+0x900>
    e8894f86:	b40e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8894f8a:	84ca                	mv	s1,s2
    e8894f8c:	a0a5                	j	e8894ff4 <tcp_write+0x2c6>
    LWIP_ASSERT("tcp_write: no pbufs on queue => both queues empty",
    e8894f8e:	e709                	bnez	a4,e8894f98 <tcp_write+0x26a>
    e8894f90:	0b0c3703          	ld	a4,176(s8)
    e8894f94:	ee0708e3          	beqz	a4,e8894e84 <tcp_write+0x156>
    e8894f98:	02f00593          	li	a1,47
    e8894f9c:	0003d517          	auipc	a0,0x3d
    e8894fa0:	14450513          	addi	a0,a0,324 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894fa4:	bd4e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894fa8:	00150693          	addi	a3,a0,1
    e8894fac:	15900613          	li	a2,345
    e8894fb0:	0003d597          	auipc	a1,0x3d
    e8894fb4:	42858593          	addi	a1,a1,1064 # e88d23d8 <tcp_persist_backoff+0xe68>
    e8894fb8:	b5c1                	j	e8894e78 <tcp_write+0x14a>
    LWIP_ASSERT("unsent_oversize mismatch (pcb->unsent is NULL)",
    e8894fba:	0aac5d83          	lhu	s11,170(s8)
    e8894fbe:	2a0d8363          	beqz	s11,e8895264 <tcp_write+0x536>
    e8894fc2:	02f00593          	li	a1,47
    e8894fc6:	0003d517          	auipc	a0,0x3d
    e8894fca:	11a50513          	addi	a0,a0,282 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8894fce:	baae70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8894fd2:	00150693          	addi	a3,a0,1
    e8894fd6:	24b00613          	li	a2,587
    e8894fda:	0003d597          	auipc	a1,0x3d
    e8894fde:	48e58593          	addi	a1,a1,1166 # e88d2468 <tcp_persist_backoff+0xef8>
    e8894fe2:	0003a517          	auipc	a0,0x3a
    e8894fe6:	0ce50513          	addi	a0,a0,206 # e88cf0b0 <kSinTable1024+0x900>
    e8894fea:	adce70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL;
    e8894fee:	4901                	li	s2,0
  u16_t oversize = 0;
    e8894ff0:	4d81                	li	s11,0
  u16_t pos = 0; /* position in 'arg' data */
    e8894ff2:	4401                	li	s0,0
  while (pos < len) {
    e8894ff4:	000a079b          	sext.w	a5,s4
    e8894ff8:	e83e                	sd	a5,16(sp)
    u16_t seglen = LWIP_MIN(left, max_len);
    e8894ffa:	000a879b          	sext.w	a5,s5
  struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL;
    e8894ffe:	8726                	mv	a4,s1
    e8895000:	8ba2                	mv	s7,s0
    e8895002:	4481                	li	s1,0
    e8895004:	4d01                	li	s10,0
    u16_t seglen = LWIP_MIN(left, max_len);
    e8895006:	ec3e                	sd	a5,24(sp)
    e8895008:	03511323          	sh	s5,38(sp)
    e889500c:	aa59                	j	e88951a2 <tcp_write+0x474>
    e889500e:	67e2                	ld	a5,24(sp)
    u16_t left = len - pos;
    e8895010:	417a073b          	subw	a4,s4,s7
    u16_t seglen = LWIP_MIN(left, max_len);
    e8895014:	89ba                	mv	s3,a4
    e8895016:	3c07370b          	extu	a4,a4,15,0
    e889501a:	00e7f463          	bgeu	a5,a4,e8895022 <tcp_write+0x2f4>
    e889501e:	02615983          	lhu	s3,38(sp)
  p = pbuf_alloc(layer, alloc, PBUF_RAM);
    e8895022:	28000613          	li	a2,640
    e8895026:	85d6                	mv	a1,s5
    e8895028:	04a00513          	li	a0,74
    u16_t chksum = 0;
    e889502c:	02011f23          	sh	zero,62(sp)
    u8_t chksum_swapped = 0;
    e8895030:	02010ea3          	sb	zero,61(sp)
  p = pbuf_alloc(layer, alloc, PBUF_RAM);
    e8895034:	b5cfa0ef          	jal	ra,e888f390 <pbuf_alloc>
    u16_t seglen = LWIP_MIN(left, max_len);
    e8895038:	3c09b98b          	extu	s3,s3,15,0
  p = pbuf_alloc(layer, alloc, PBUF_RAM);
    e889503c:	8caa                	mv	s9,a0
  if (p == NULL) {
    e889503e:	c141                	beqz	a0,e88950be <tcp_write+0x390>
  LWIP_ASSERT("need unchained pbuf", p->next == NULL);
    e8895040:	6118                	ld	a4,0(a0)
    e8895042:	c71d                	beqz	a4,e8895070 <tcp_write+0x342>
    e8895044:	02f00593          	li	a1,47
    e8895048:	0003d517          	auipc	a0,0x3d
    e889504c:	09850513          	addi	a0,a0,152 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895050:	b28e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895054:	00150693          	addi	a3,a0,1
    e8895058:	10b00613          	li	a2,267
    e889505c:	0003d597          	auipc	a1,0x3d
    e8895060:	43c58593          	addi	a1,a1,1084 # e88d2498 <tcp_persist_backoff+0xf28>
    e8895064:	0003a517          	auipc	a0,0x3a
    e8895068:	04c50513          	addi	a0,a0,76 # e88cf0b0 <kSinTable1024+0x900>
    e889506c:	a5ae70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  *oversize = p->len - length;
    e8895070:	012cd803          	lhu	a6,18(s9)
      TCP_DATA_COPY2((char *)p->payload + optlen, (const u8_t *)arg + pos, seglen, &chksum, &chksum_swapped);
    e8895074:	6782                	ld	a5,0(sp)
    e8895076:	008cb503          	ld	a0,8(s9)
  *oversize = p->len - length;
    e889507a:	4138083b          	subw	a6,a6,s3
      TCP_DATA_COPY2((char *)p->payload + optlen, (const u8_t *)arg + pos, seglen, &chksum, &chksum_swapped);
    e889507e:	017785b3          	add	a1,a5,s7
    e8895082:	864e                	mv	a2,s3
  p->len = p->tot_len = length;
    e8895084:	013c9823          	sh	s3,16(s9)
    e8895088:	013c9923          	sh	s3,18(s9)
  *oversize = p->len - length;
    e889508c:	3c083d8b          	extu	s11,a6,15,0
      TCP_DATA_COPY2((char *)p->payload + optlen, (const u8_t *)arg + pos, seglen, &chksum, &chksum_swapped);
    e8895090:	91bf20ef          	jal	ra,e88879aa <lwip_chksum_copy>
    e8895094:	03d10693          	addi	a3,sp,61
    e8895098:	03e10613          	addi	a2,sp,62
    e889509c:	85ce                	mv	a1,s3
    e889509e:	803ff0ef          	jal	ra,e88948a0 <tcp_seg_add_chksum>
    queuelen += pbuf_clen(p);
    e88950a2:	8566                	mv	a0,s9
    e88950a4:	daefa0ef          	jal	ra,e888f652 <pbuf_clen>
    e88950a8:	01650b3b          	addw	s6,a0,s6
    e88950ac:	3c0b3b0b          	extu	s6,s6,15,0
    if (queuelen > LWIP_MIN(TCP_SND_QUEUELEN, TCP_SNDQUEUELEN_OVERFLOW)) {
    e88950b0:	04000713          	li	a4,64
    e88950b4:	07677a63          	bgeu	a4,s6,e8895128 <tcp_write+0x3fa>
      pbuf_free(p);
    e88950b8:	8566                	mv	a0,s9
    e88950ba:	992fa0ef          	jal	ra,e888f24c <pbuf_free>
  tcp_set_flags(pcb, TF_NAGLEMEMERR);
    e88950be:	04ec5703          	lhu	a4,78(s8)
  TCP_STATS_INC(tcp.memerr);
    e88950c2:	00051697          	auipc	a3,0x51
    e88950c6:	38e68693          	addi	a3,a3,910 # e88e6450 <lwip_stats>
  tcp_set_flags(pcb, TF_NAGLEMEMERR);
    e88950ca:	08076713          	ori	a4,a4,128
    e88950ce:	04ec1723          	sh	a4,78(s8)
  TCP_STATS_INC(tcp.memerr);
    e88950d2:	0b86d703          	lhu	a4,184(a3)
    e88950d6:	2705                	addiw	a4,a4,1
    e88950d8:	0ae69c23          	sh	a4,184(a3)
  if (queue != NULL) {
    e88950dc:	1c049e63          	bnez	s1,e88952b8 <tcp_write+0x58a>
  if (pcb->snd_queuelen != 0) {
    e88950e0:	0a8c5703          	lhu	a4,168(s8)
  return ERR_MEM;
    e88950e4:	547d                	li	s0,-1
  if (pcb->snd_queuelen != 0) {
    e88950e6:	c8070ce3          	beqz	a4,e8894d7e <tcp_write+0x50>
    LWIP_ASSERT("tcp_write: valid queue length", pcb->unacked != NULL ||
    e88950ea:	0b8c3703          	ld	a4,184(s8)
    e88950ee:	c80718e3          	bnez	a4,e8894d7e <tcp_write+0x50>
    e88950f2:	0b0c3783          	ld	a5,176(s8)
    e88950f6:	c80794e3          	bnez	a5,e8894d7e <tcp_write+0x50>
    e88950fa:	02f00593          	li	a1,47
    e88950fe:	0003d517          	auipc	a0,0x3d
    e8895102:	fe250513          	addi	a0,a0,-30 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895106:	a72e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889510a:	00150693          	addi	a3,a0,1
    e889510e:	32800613          	li	a2,808
    e8895112:	0003d597          	auipc	a1,0x3d
    e8895116:	3b658593          	addi	a1,a1,950 # e88d24c8 <tcp_persist_backoff+0xf58>
    e889511a:	0003a517          	auipc	a0,0x3a
    e889511e:	f9650513          	addi	a0,a0,-106 # e88cf0b0 <kSinTable1024+0x900>
    e8895122:	9a4e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8895126:	b9a1                	j	e8894d7e <tcp_write+0x50>
    if ((seg = tcp_create_segment(pcb, p, 0, pcb->snd_lbb + pos, optflags)) == NULL) {
    e8895128:	098c2683          	lw	a3,152(s8)
    e889512c:	4701                	li	a4,0
    e889512e:	4601                	li	a2,0
    e8895130:	017686bb          	addw	a3,a3,s7
    e8895134:	85e6                	mv	a1,s9
    e8895136:	8562                	mv	a0,s8
    e8895138:	fe6ff0ef          	jal	ra,e889491e <tcp_create_segment>
    e889513c:	872a                	mv	a4,a0
    e889513e:	d141                	beqz	a0,e88950be <tcp_write+0x390>
    seg->chksum = chksum;
    e8895140:	03e15683          	lhu	a3,62(sp)
    e8895144:	00d51923          	sh	a3,18(a0)
    seg->chksum_swapped = chksum_swapped;
    e8895148:	03d14683          	lbu	a3,61(sp)
    e889514c:	00d50a23          	sb	a3,20(a0)
    seg->flags |= TF_SEG_DATA_CHECKSUMMED;
    e8895150:	01554683          	lbu	a3,21(a0)
    e8895154:	0046e693          	ori	a3,a3,4
    e8895158:	00d50aa3          	sb	a3,21(a0)
    if (queue == NULL) {
    e889515c:	10048263          	beqz	s1,e8895260 <tcp_write+0x532>
      LWIP_ASSERT("prev_seg != NULL", prev_seg != NULL);
    e8895160:	020d1a63          	bnez	s10,e8895194 <tcp_write+0x466>
    e8895164:	f42a                	sd	a0,40(sp)
    e8895166:	02f00593          	li	a1,47
    e889516a:	0003d517          	auipc	a0,0x3d
    e889516e:	f7650513          	addi	a0,a0,-138 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895172:	a06e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895176:	00150693          	addi	a3,a0,1
    e889517a:	2ab00613          	li	a2,683
    e889517e:	0003d597          	auipc	a1,0x3d
    e8895182:	33258593          	addi	a1,a1,818 # e88d24b0 <tcp_persist_backoff+0xf40>
    e8895186:	0003a517          	auipc	a0,0x3a
    e889518a:	f2a50513          	addi	a0,a0,-214 # e88cf0b0 <kSinTable1024+0x900>
    e889518e:	938e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8895192:	7722                	ld	a4,40(sp)
      prev_seg->next = seg;
    e8895194:	00ed3023          	sd	a4,0(s10)
    pos += seglen;
    e8895198:	013b8bbb          	addw	s7,s7,s3
    e889519c:	3c0bbb8b          	extu	s7,s7,15,0
    e88951a0:	8d3a                	mv	s10,a4
  while (pos < len) {
    e88951a2:	67c2                	ld	a5,16(sp)
    e88951a4:	000b869b          	sext.w	a3,s7
    e88951a8:	e6f6e3e3          	bltu	a3,a5,e889500e <tcp_write+0x2e0>
    e88951ac:	89ca                	mv	s3,s2
    e88951ae:	893a                	mv	s2,a4
  if (oversize_used > 0) {
    e88951b0:	cc11                	beqz	s0,e88951cc <tcp_write+0x49e>
    for (p = last_unsent->p; p; p = p->next) {
    e88951b2:	0089bd03          	ld	s10,8(s3)
        TCP_DATA_COPY((char *)p->payload + p->len, arg, oversize_used, last_unsent);
    e88951b6:	01498a93          	addi	s5,s3,20
    e88951ba:	01298b93          	addi	s7,s3,18
    for (p = last_unsent->p; p; p = p->next) {
    e88951be:	0a0d1663          	bnez	s10,e889526a <tcp_write+0x53c>
    last_unsent->len += oversize_used;
    e88951c2:	0109d703          	lhu	a4,16(s3)
    e88951c6:	9c39                	addw	s0,s0,a4
    e88951c8:	00899823          	sh	s0,16(s3)
  pcb->unsent_oversize = oversize;
    e88951cc:	0bbc1523          	sh	s11,170(s8)
  if (last_unsent == NULL) {
    e88951d0:	0e099163          	bnez	s3,e88952b2 <tcp_write+0x584>
    pcb->unsent = queue;
    e88951d4:	0a9c3823          	sd	s1,176(s8)
  pcb->snd_lbb += len;
    e88951d8:	098c2703          	lw	a4,152(s8)
    e88951dc:	2a01                	sext.w	s4,s4
  pcb->snd_queuelen = queuelen;
    e88951de:	0b6c1423          	sh	s6,168(s8)
  pcb->snd_lbb += len;
    e88951e2:	0147073b          	addw	a4,a4,s4
    e88951e6:	08ec2c23          	sw	a4,152(s8)
  pcb->snd_buf -= len;
    e88951ea:	0a4c2703          	lw	a4,164(s8)
    e88951ee:	41470a3b          	subw	s4,a4,s4
    e88951f2:	0b4c2223          	sw	s4,164(s8)
  if (pcb->snd_queuelen != 0) {
    e88951f6:	020b0e63          	beqz	s6,e8895232 <tcp_write+0x504>
    LWIP_ASSERT("tcp_write: valid queue length",
    e88951fa:	0b8c3703          	ld	a4,184(s8)
    e88951fe:	eb15                	bnez	a4,e8895232 <tcp_write+0x504>
    e8895200:	0b0c3783          	ld	a5,176(s8)
    e8895204:	e79d                	bnez	a5,e8895232 <tcp_write+0x504>
    e8895206:	02f00593          	li	a1,47
    e889520a:	0003d517          	auipc	a0,0x3d
    e889520e:	ed650513          	addi	a0,a0,-298 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895212:	966e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895216:	00150693          	addi	a3,a0,1
    e889521a:	31300613          	li	a2,787
    e889521e:	0003d597          	auipc	a1,0x3d
    e8895222:	2aa58593          	addi	a1,a1,682 # e88d24c8 <tcp_persist_backoff+0xf58>
    e8895226:	0003a517          	auipc	a0,0x3a
    e889522a:	e8a50513          	addi	a0,a0,-374 # e88cf0b0 <kSinTable1024+0x900>
    e889522e:	898e70ef          	jal	ra,e887c2c6 <eLIBs_printf>
  return ERR_OK;
    e8895232:	4401                	li	s0,0
  if (seg != NULL && seg->tcphdr != NULL && ((apiflags & TCP_WRITE_FLAG_MORE) == 0)) {
    e8895234:	b40905e3          	beqz	s2,e8894d7e <tcp_write+0x50>
    e8895238:	01893783          	ld	a5,24(s2)
    e889523c:	b40781e3          	beqz	a5,e8894d7e <tcp_write+0x50>
    e8895240:	6722                	ld	a4,8(sp)
    e8895242:	00277c13          	andi	s8,a4,2
    e8895246:	b20c1ce3          	bnez	s8,e8894d7e <tcp_write+0x50>
    TCPH_SET_FLAG(seg->tcphdr, TCP_PSH);
    e889524a:	4521                	li	a0,8
    e889524c:	00c7d483          	lhu	s1,12(a5)
    e8895250:	ccff10ef          	jal	ra,e8886f1e <lwip_htons>
    e8895254:	01893783          	ld	a5,24(s2)
    e8895258:	8d45                	or	a0,a0,s1
    e889525a:	00a79623          	sh	a0,12(a5)
    e889525e:	b605                	j	e8894d7e <tcp_write+0x50>
    e8895260:	84aa                	mv	s1,a0
    e8895262:	bf1d                	j	e8895198 <tcp_write+0x46a>
  u16_t pos = 0; /* position in 'arg' data */
    e8895264:	4401                	li	s0,0
  struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL;
    e8895266:	4901                	li	s2,0
    e8895268:	b371                	j	e8894ff4 <tcp_write+0x2c6>
      p->tot_len += oversize_used;
    e889526a:	010d5703          	lhu	a4,16(s10)
    e889526e:	9f21                	addw	a4,a4,s0
    e8895270:	00ed1823          	sh	a4,16(s10)
      if (p->next == NULL) {
    e8895274:	000d3703          	ld	a4,0(s10)
    e8895278:	eb15                	bnez	a4,e88952ac <tcp_write+0x57e>
        TCP_DATA_COPY((char *)p->payload + p->len, arg, oversize_used, last_unsent);
    e889527a:	012d5703          	lhu	a4,18(s10)
    e889527e:	008d3503          	ld	a0,8(s10)
    e8895282:	6582                	ld	a1,0(sp)
    e8895284:	8622                	mv	a2,s0
    e8895286:	953a                	add	a0,a0,a4
    e8895288:	f22f20ef          	jal	ra,e88879aa <lwip_chksum_copy>
    e889528c:	86d6                	mv	a3,s5
    e889528e:	865e                	mv	a2,s7
    e8895290:	85a2                	mv	a1,s0
    e8895292:	e0eff0ef          	jal	ra,e88948a0 <tcp_seg_add_chksum>
    e8895296:	0159c703          	lbu	a4,21(s3)
    e889529a:	00476713          	ori	a4,a4,4
    e889529e:	00e98aa3          	sb	a4,21(s3)
        p->len += oversize_used;
    e88952a2:	012d5703          	lhu	a4,18(s10)
    e88952a6:	9f21                	addw	a4,a4,s0
    e88952a8:	00ed1923          	sh	a4,18(s10)
    for (p = last_unsent->p; p; p = p->next) {
    e88952ac:	000d3d03          	ld	s10,0(s10)
    e88952b0:	b739                	j	e88951be <tcp_write+0x490>
    last_unsent->next = queue;
    e88952b2:	0099b023          	sd	s1,0(s3)
    e88952b6:	b70d                	j	e88951d8 <tcp_write+0x4aa>
    tcp_segs_free(queue);
    e88952b8:	8526                	mv	a0,s1
    e88952ba:	a9bfb0ef          	jal	ra,e8890d54 <tcp_segs_free>
    e88952be:	b50d                	j	e88950e0 <tcp_write+0x3b2>

00000000e88952c0 <tcp_split_unsent_seg>:
{
    e88952c0:	7159                	addi	sp,sp,-112
    e88952c2:	eca6                	sd	s1,88(sp)
    e88952c4:	e8ca                	sd	s2,80(sp)
    e88952c6:	f486                	sd	ra,104(sp)
    e88952c8:	f0a2                	sd	s0,96(sp)
    e88952ca:	e4ce                	sd	s3,72(sp)
    e88952cc:	e0d2                	sd	s4,64(sp)
    e88952ce:	fc56                	sd	s5,56(sp)
    e88952d0:	f85a                	sd	s6,48(sp)
    e88952d2:	f45e                	sd	s7,40(sp)
  u16_t chksum = 0;
    e88952d4:	00011f23          	sh	zero,30(sp)
  u8_t chksum_swapped = 0;
    e88952d8:	00010ea3          	sb	zero,29(sp)
{
    e88952dc:	892a                	mv	s2,a0
    e88952de:	84ae                	mv	s1,a1
  LWIP_ASSERT("tcp_split_unsent_seg: invalid pcb", pcb != NULL);
    e88952e0:	e51d                	bnez	a0,e889530e <tcp_split_unsent_seg+0x4e>
    e88952e2:	02f00593          	li	a1,47
    e88952e6:	0003d517          	auipc	a0,0x3d
    e88952ea:	dfa50513          	addi	a0,a0,-518 # e88d20e0 <tcp_persist_backoff+0xb70>
    e88952ee:	88ae70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88952f2:	00150693          	addi	a3,a0,1
    e88952f6:	34b00613          	li	a2,843
    e88952fa:	0003d597          	auipc	a1,0x3d
    e88952fe:	fbe58593          	addi	a1,a1,-66 # e88d22b8 <tcp_persist_backoff+0xd48>
    e8895302:	0003a517          	auipc	a0,0x3a
    e8895306:	dae50513          	addi	a0,a0,-594 # e88cf0b0 <kSinTable1024+0x900>
    e889530a:	fbde60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  useg = pcb->unsent;
    e889530e:	0b093403          	ld	s0,176(s2)
  if (useg == NULL) {
    e8895312:	e019                	bnez	s0,e8895318 <tcp_split_unsent_seg+0x58>
  return ERR_MEM;
    e8895314:	557d                	li	a0,-1
    e8895316:	a80d                	j	e8895348 <tcp_split_unsent_seg+0x88>
  if (split == 0) {
    e8895318:	e0b9                	bnez	s1,e889535e <tcp_split_unsent_seg+0x9e>
    LWIP_ASSERT("Can't split segment into length 0", 0);
    e889531a:	02f00593          	li	a1,47
    e889531e:	0003d517          	auipc	a0,0x3d
    e8895322:	dc250513          	addi	a0,a0,-574 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895326:	852e70ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889532a:	00150693          	addi	a3,a0,1
    e889532e:	35300613          	li	a2,851
    e8895332:	0003d597          	auipc	a1,0x3d
    e8895336:	fae58593          	addi	a1,a1,-82 # e88d22e0 <tcp_persist_backoff+0xd70>
    e889533a:	0003a517          	auipc	a0,0x3a
    e889533e:	d7650513          	addi	a0,a0,-650 # e88cf0b0 <kSinTable1024+0x900>
    e8895342:	f85e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return ERR_VAL;
    e8895346:	5569                	li	a0,-6
}
    e8895348:	70a6                	ld	ra,104(sp)
    e889534a:	7406                	ld	s0,96(sp)
    e889534c:	64e6                	ld	s1,88(sp)
    e889534e:	6946                	ld	s2,80(sp)
    e8895350:	69a6                	ld	s3,72(sp)
    e8895352:	6a06                	ld	s4,64(sp)
    e8895354:	7ae2                	ld	s5,56(sp)
    e8895356:	7b42                	ld	s6,48(sp)
    e8895358:	7ba2                	ld	s7,40(sp)
    e889535a:	6165                	addi	sp,sp,112
    e889535c:	8082                	ret
  if (useg->len <= split) {
    e889535e:	01045703          	lhu	a4,16(s0)
    e8895362:	0004879b          	sext.w	a5,s1
    e8895366:	00e7e463          	bltu	a5,a4,e889536e <tcp_split_unsent_seg+0xae>
  return ERR_OK;
    e889536a:	4501                	li	a0,0
    e889536c:	bff1                	j	e8895348 <tcp_split_unsent_seg+0x88>
  LWIP_ASSERT("split <= mss", split <= pcb->mss);
    e889536e:	06a95703          	lhu	a4,106(s2)
    e8895372:	02f77863          	bgeu	a4,a5,e88953a2 <tcp_split_unsent_seg+0xe2>
    e8895376:	02f00593          	li	a1,47
    e889537a:	0003d517          	auipc	a0,0x3d
    e889537e:	d6650513          	addi	a0,a0,-666 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895382:	ff7e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895386:	00150693          	addi	a3,a0,1
    e889538a:	35b00613          	li	a2,859
    e889538e:	0003d597          	auipc	a1,0x3d
    e8895392:	f7a58593          	addi	a1,a1,-134 # e88d2308 <tcp_persist_backoff+0xd98>
    e8895396:	0003a517          	auipc	a0,0x3a
    e889539a:	d1a50513          	addi	a0,a0,-742 # e88cf0b0 <kSinTable1024+0x900>
    e889539e:	f29e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("useg->len > 0", useg->len > 0);
    e88953a2:	01045783          	lhu	a5,16(s0)
    e88953a6:	e79d                	bnez	a5,e88953d4 <tcp_split_unsent_seg+0x114>
    e88953a8:	02f00593          	li	a1,47
    e88953ac:	0003d517          	auipc	a0,0x3d
    e88953b0:	d3450513          	addi	a0,a0,-716 # e88d20e0 <tcp_persist_backoff+0xb70>
    e88953b4:	fc5e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88953b8:	00150693          	addi	a3,a0,1
    e88953bc:	35c00613          	li	a2,860
    e88953c0:	0003d597          	auipc	a1,0x3d
    e88953c4:	f5858593          	addi	a1,a1,-168 # e88d2318 <tcp_persist_backoff+0xda8>
    e88953c8:	0003a517          	auipc	a0,0x3a
    e88953cc:	ce850513          	addi	a0,a0,-792 # e88cf0b0 <kSinTable1024+0x900>
    e88953d0:	ef7e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  optflags = useg->flags;
    e88953d4:	01544b03          	lbu	s6,21(s0)
  remainder = useg->len - split;
    e88953d8:	01045b83          	lhu	s7,16(s0)
  p = pbuf_alloc(PBUF_TRANSPORT, remainder + optlen, PBUF_RAM);
    e88953dc:	28000613          	li	a2,640
  optflags &= ~TF_SEG_DATA_CHECKSUMMED;
    e88953e0:	0fbb7b13          	andi	s6,s6,251
  optlen = LWIP_TCP_OPT_LENGTH(optflags);
    e88953e4:	000b079b          	sext.w	a5,s6
    e88953e8:	00279a13          	slli	s4,a5,0x2
    e88953ec:	2017b78b          	extu	a5,a5,8,1
    e88953f0:	8b91                	andi	a5,a5,4
    e88953f2:	004a7a13          	andi	s4,s4,4
  remainder = useg->len - split;
    e88953f6:	409b89bb          	subw	s3,s7,s1
  optlen = LWIP_TCP_OPT_LENGTH(optflags);
    e88953fa:	9a3e                	add	s4,s4,a5
  remainder = useg->len - split;
    e88953fc:	3c09b98b          	extu	s3,s3,15,0
  p = pbuf_alloc(PBUF_TRANSPORT, remainder + optlen, PBUF_RAM);
    e8895400:	013a05bb          	addw	a1,s4,s3
    e8895404:	3c05b58b          	extu	a1,a1,15,0
    e8895408:	04a00513          	li	a0,74
    e889540c:	f85f90ef          	jal	ra,e888f390 <pbuf_alloc>
    e8895410:	8aaa                	mv	s5,a0
  if (p == NULL) {
    e8895412:	1a050563          	beqz	a0,e88955bc <tcp_split_unsent_seg+0x2fc>
  offset = useg->p->tot_len - useg->len + split;
    e8895416:	6408                	ld	a0,8(s0)
    e8895418:	01045783          	lhu	a5,16(s0)
  if (pbuf_copy_partial(useg->p, (u8_t *)p->payload + optlen, remainder, offset ) != remainder) {
    e889541c:	008ab583          	ld	a1,8(s5)
  offset = useg->p->tot_len - useg->len + split;
    e8895420:	01055683          	lhu	a3,16(a0)
  if (pbuf_copy_partial(useg->p, (u8_t *)p->payload + optlen, remainder, offset ) != remainder) {
    e8895424:	864e                	mv	a2,s3
    e8895426:	95d2                	add	a1,a1,s4
  offset = useg->p->tot_len - useg->len + split;
    e8895428:	9e9d                	subw	a3,a3,a5
    e889542a:	9ea5                	addw	a3,a3,s1
  if (pbuf_copy_partial(useg->p, (u8_t *)p->payload + optlen, remainder, offset ) != remainder) {
    e889542c:	3c06b68b          	extu	a3,a3,15,0
    e8895430:	d22fa0ef          	jal	ra,e888f952 <pbuf_copy_partial>
    e8895434:	2501                	sext.w	a0,a0
    e8895436:	19351363          	bne	a0,s3,e88955bc <tcp_split_unsent_seg+0x2fc>
  tcp_seg_add_chksum(~inet_chksum((const u8_t *)p->payload + optlen, remainder), remainder,
    e889543a:	008ab503          	ld	a0,8(s5)
    e889543e:	85ce                	mv	a1,s3
    e8895440:	9552                	add	a0,a0,s4
    e8895442:	ce4f20ef          	jal	ra,e8887926 <inet_chksum>
    e8895446:	fff54513          	not	a0,a0
    e889544a:	01e10613          	addi	a2,sp,30
    e889544e:	85ce                	mv	a1,s3
    e8895450:	01d10693          	addi	a3,sp,29
    e8895454:	3c05350b          	extu	a0,a0,15,0
    e8895458:	c48ff0ef          	jal	ra,e88948a0 <tcp_seg_add_chksum>
  split_flags = TCPH_FLAGS(useg->tcphdr);
    e889545c:	6c1c                	ld	a5,24(s0)
    e889545e:	00c7d503          	lhu	a0,12(a5)
    e8895462:	abdf10ef          	jal	ra,e8886f1e <lwip_htons>
    e8895466:	0ff57993          	andi	s3,a0,255
  if (split_flags & TCP_PSH) {
    e889546a:	0089f613          	andi	a2,s3,8
    e889546e:	12061d63          	bnez	a2,e88955a8 <tcp_split_unsent_seg+0x2e8>
  split_flags = TCPH_FLAGS(useg->tcphdr);
    e8895472:	03f9f993          	andi	s3,s3,63
  if (split_flags & TCP_FIN) {
    e8895476:	0019f793          	andi	a5,s3,1
    e889547a:	c789                	beqz	a5,e8895484 <tcp_split_unsent_seg+0x1c4>
    split_flags &= ~TCP_FIN;
    e889547c:	0fe9f993          	andi	s3,s3,254
    remainder_flags |= TCP_FIN;
    e8895480:	00166613          	ori	a2,a2,1
  seg = tcp_create_segment(pcb, p, remainder_flags, lwip_ntohl(useg->tcphdr->seqno) + split, optflags);
    e8895484:	6c1c                	ld	a5,24(s0)
    e8895486:	e432                	sd	a2,8(sp)
    e8895488:	43c8                	lw	a0,4(a5)
    e889548a:	aa5f10ef          	jal	ra,e8886f2e <lwip_htonl>
    e889548e:	009506bb          	addw	a3,a0,s1
    e8895492:	6622                	ld	a2,8(sp)
    e8895494:	875a                	mv	a4,s6
    e8895496:	85d6                	mv	a1,s5
    e8895498:	854a                	mv	a0,s2
    e889549a:	c84ff0ef          	jal	ra,e889491e <tcp_create_segment>
    e889549e:	8a2a                	mv	s4,a0
  if (seg == NULL) {
    e88954a0:	10050e63          	beqz	a0,e88955bc <tcp_split_unsent_seg+0x2fc>
  seg->chksum = chksum;
    e88954a4:	01e15783          	lhu	a5,30(sp)
    e88954a8:	417484bb          	subw	s1,s1,s7
    e88954ac:	3c04b48b          	extu	s1,s1,15,0
    e88954b0:	00f51923          	sh	a5,18(a0)
  seg->chksum_swapped = chksum_swapped;
    e88954b4:	01d14783          	lbu	a5,29(sp)
    e88954b8:	00f50a23          	sb	a5,20(a0)
  seg->flags |= TF_SEG_DATA_CHECKSUMMED;
    e88954bc:	01554783          	lbu	a5,21(a0)
    e88954c0:	0047e793          	ori	a5,a5,4
    e88954c4:	00f50aa3          	sb	a5,21(a0)
  pcb->snd_queuelen -= pbuf_clen(useg->p);
    e88954c8:	6408                	ld	a0,8(s0)
    e88954ca:	988fa0ef          	jal	ra,e888f652 <pbuf_clen>
    e88954ce:	0a895783          	lhu	a5,168(s2)
    e88954d2:	40a7853b          	subw	a0,a5,a0
    e88954d6:	0aa91423          	sh	a0,168(s2)
  pbuf_realloc(useg->p, useg->p->tot_len - remainder);
    e88954da:	6408                	ld	a0,8(s0)
    e88954dc:	01055583          	lhu	a1,16(a0)
    e88954e0:	9da5                	addw	a1,a1,s1
    e88954e2:	3c05b58b          	extu	a1,a1,15,0
    e88954e6:	80cfa0ef          	jal	ra,e888f4f2 <pbuf_realloc>
  useg->len -= remainder;
    e88954ea:	01045783          	lhu	a5,16(s0)
  TCPH_SET_FLAG(useg->tcphdr, split_flags);
    e88954ee:	854e                	mv	a0,s3
  useg->len -= remainder;
    e88954f0:	9cbd                	addw	s1,s1,a5
  TCPH_SET_FLAG(useg->tcphdr, split_flags);
    e88954f2:	6c1c                	ld	a5,24(s0)
  useg->len -= remainder;
    e88954f4:	00941823          	sh	s1,16(s0)
  TCPH_SET_FLAG(useg->tcphdr, split_flags);
    e88954f8:	00c7d483          	lhu	s1,12(a5)
    e88954fc:	a23f10ef          	jal	ra,e8886f1e <lwip_htons>
    e8895500:	6c1c                	ld	a5,24(s0)
    e8895502:	8d45                	or	a0,a0,s1
    e8895504:	00a79623          	sh	a0,12(a5)
  pcb->snd_queuelen += pbuf_clen(useg->p);
    e8895508:	6408                	ld	a0,8(s0)
    e889550a:	948fa0ef          	jal	ra,e888f652 <pbuf_clen>
    e889550e:	0a895783          	lhu	a5,168(s2)
    e8895512:	9d3d                	addw	a0,a0,a5
    e8895514:	0aa91423          	sh	a0,168(s2)
  q = useg->p;
    e8895518:	00843983          	ld	s3,8(s0)
  useg->chksum = 0;
    e889551c:	00041923          	sh	zero,18(s0)
  useg->chksum_swapped = 0;
    e8895520:	00040a23          	sb	zero,20(s0)
  offset = q->tot_len - useg->len; /* Offset due to exposed headers */
    e8895524:	01045583          	lhu	a1,16(s0)
    e8895528:	0109d483          	lhu	s1,16(s3)
    e889552c:	9c8d                	subw	s1,s1,a1
    e889552e:	3c04b48b          	extu	s1,s1,15,0
  while (q != NULL && offset > q->len) {
    e8895532:	0a098463          	beqz	s3,e88955da <tcp_split_unsent_seg+0x31a>
    e8895536:	0129d583          	lhu	a1,18(s3)
    e889553a:	0695eb63          	bltu	a1,s1,e88955b0 <tcp_split_unsent_seg+0x2f0>
    tcp_seg_add_chksum(~inet_chksum((const u8_t *)q->payload + offset, q->len - offset), q->len - offset,
    e889553e:	01440b13          	addi	s6,s0,20
    e8895542:	01240a93          	addi	s5,s0,18
    e8895546:	0129d583          	lhu	a1,18(s3)
    e889554a:	0089b503          	ld	a0,8(s3)
    e889554e:	9d85                	subw	a1,a1,s1
    e8895550:	3c05b58b          	extu	a1,a1,15,0
    e8895554:	9526                	add	a0,a0,s1
    e8895556:	bd0f20ef          	jal	ra,e8887926 <inet_chksum>
    e889555a:	fff54513          	not	a0,a0
    e889555e:	0129d583          	lhu	a1,18(s3)
    e8895562:	86da                	mv	a3,s6
    e8895564:	8656                	mv	a2,s5
    e8895566:	9d85                	subw	a1,a1,s1
    e8895568:	3c05b58b          	extu	a1,a1,15,0
    e889556c:	3c05350b          	extu	a0,a0,15,0
    e8895570:	b30ff0ef          	jal	ra,e88948a0 <tcp_seg_add_chksum>
  for (; q != NULL; offset = 0, q = q->next) {
    e8895574:	0009b983          	ld	s3,0(s3)
    e8895578:	4481                	li	s1,0
    e889557a:	fc0996e3          	bnez	s3,e8895546 <tcp_split_unsent_seg+0x286>
  pcb->snd_queuelen += pbuf_clen(seg->p);
    e889557e:	008a3503          	ld	a0,8(s4)
    e8895582:	8d0fa0ef          	jal	ra,e888f652 <pbuf_clen>
    e8895586:	0a895783          	lhu	a5,168(s2)
    e889558a:	9d3d                	addw	a0,a0,a5
    e889558c:	0aa91423          	sh	a0,168(s2)
  seg->next = useg->next;
    e8895590:	601c                	ld	a5,0(s0)
    e8895592:	00fa3023          	sd	a5,0(s4)
  useg->next = seg;
    e8895596:	01443023          	sd	s4,0(s0)
  if (seg->next == NULL) {
    e889559a:	000a3783          	ld	a5,0(s4)
    e889559e:	dc0796e3          	bnez	a5,e889536a <tcp_split_unsent_seg+0xaa>
    pcb->unsent_oversize = 0;
    e88955a2:	0a091523          	sh	zero,170(s2)
    e88955a6:	b3d1                	j	e889536a <tcp_split_unsent_seg+0xaa>
    split_flags &= ~TCP_PSH;
    e88955a8:	0379f993          	andi	s3,s3,55
    remainder_flags |= TCP_PSH;
    e88955ac:	4621                	li	a2,8
    e88955ae:	b5e1                	j	e8895476 <tcp_split_unsent_seg+0x1b6>
    offset -= q->len;
    e88955b0:	9c8d                	subw	s1,s1,a1
    e88955b2:	3c04b48b          	extu	s1,s1,15,0
    q = q->next;
    e88955b6:	0009b983          	ld	s3,0(s3)
    e88955ba:	bfa5                	j	e8895532 <tcp_split_unsent_seg+0x272>
  TCP_STATS_INC(tcp.memerr);
    e88955bc:	00051717          	auipc	a4,0x51
    e88955c0:	e9470713          	addi	a4,a4,-364 # e88e6450 <lwip_stats>
    e88955c4:	0b875783          	lhu	a5,184(a4)
    e88955c8:	2785                	addiw	a5,a5,1
    e88955ca:	0af71c23          	sh	a5,184(a4)
  if (p != NULL) {
    e88955ce:	d40a83e3          	beqz	s5,e8895314 <tcp_split_unsent_seg+0x54>
    pbuf_free(p);
    e88955d2:	8556                	mv	a0,s5
    e88955d4:	c79f90ef          	jal	ra,e888f24c <pbuf_free>
    e88955d8:	bb35                	j	e8895314 <tcp_split_unsent_seg+0x54>
  LWIP_ASSERT("Found start of payload pbuf", q != NULL);
    e88955da:	02f00593          	li	a1,47
    e88955de:	0003d517          	auipc	a0,0x3d
    e88955e2:	b0250513          	addi	a0,a0,-1278 # e88d20e0 <tcp_persist_backoff+0xb70>
    e88955e6:	d93e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88955ea:	00150693          	addi	a3,a0,1
    e88955ee:	3bb00613          	li	a2,955
    e88955f2:	0003d597          	auipc	a1,0x3d
    e88955f6:	d3658593          	addi	a1,a1,-714 # e88d2328 <tcp_persist_backoff+0xdb8>
    e88955fa:	0003a517          	auipc	a0,0x3a
    e88955fe:	ab650513          	addi	a0,a0,-1354 # e88cf0b0 <kSinTable1024+0x900>
    e8895602:	cc5e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  for (; q != NULL; offset = 0, q = q->next) {
    e8895606:	bfa5                	j	e889557e <tcp_split_unsent_seg+0x2be>

00000000e8895608 <tcp_enqueue_flags>:
{
    e8895608:	7139                	addi	sp,sp,-64
    e889560a:	e422                	sd	s0,8(sp)
    e889560c:	e826                	sd	s1,16(sp)
    e889560e:	f856                	sd	s5,48(sp)
    e8895610:	fc06                	sd	ra,56(sp)
    e8895612:	ec4a                	sd	s2,24(sp)
    e8895614:	f04e                	sd	s3,32(sp)
    e8895616:	f452                	sd	s4,40(sp)
    e8895618:	0035fa93          	andi	s5,a1,3
    e889561c:	842a                	mv	s0,a0
    e889561e:	84ae                	mv	s1,a1
  LWIP_ASSERT("tcp_enqueue_flags: need either TCP_SYN or TCP_FIN in flags (programmer violates API)",
    e8895620:	020a9863          	bnez	s5,e8895650 <tcp_enqueue_flags+0x48>
    e8895624:	02f00593          	li	a1,47
    e8895628:	0003d517          	auipc	a0,0x3d
    e889562c:	ab850513          	addi	a0,a0,-1352 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895630:	d49e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895634:	00150693          	addi	a3,a0,1
    e8895638:	41200613          	li	a2,1042
    e889563c:	0003c597          	auipc	a1,0x3c
    e8895640:	7b458593          	addi	a1,a1,1972 # e88d1df0 <tcp_persist_backoff+0x880>
    e8895644:	0003a517          	auipc	a0,0x3a
    e8895648:	a6c50513          	addi	a0,a0,-1428 # e88cf0b0 <kSinTable1024+0x900>
    e889564c:	c7be60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("tcp_enqueue_flags: invalid pcb", pcb != NULL);
    e8895650:	e41d                	bnez	s0,e889567e <tcp_enqueue_flags+0x76>
    e8895652:	02f00593          	li	a1,47
    e8895656:	0003d517          	auipc	a0,0x3d
    e889565a:	a8a50513          	addi	a0,a0,-1398 # e88d20e0 <tcp_persist_backoff+0xb70>
    e889565e:	d1be60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895662:	00150693          	addi	a3,a0,1
    e8895666:	41300613          	li	a2,1043
    e889566a:	0003c597          	auipc	a1,0x3c
    e889566e:	7de58593          	addi	a1,a1,2014 # e88d1e48 <tcp_persist_backoff+0x8d8>
    e8895672:	0003a517          	auipc	a0,0x3a
    e8895676:	a3e50513          	addi	a0,a0,-1474 # e88cf0b0 <kSinTable1024+0x900>
    e889567a:	c4de60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (flags & TCP_SYN) {
    e889567e:	0024f993          	andi	s3,s1,2
    e8895682:	00098e63          	beqz	s3,e889569e <tcp_enqueue_flags+0x96>
    if ((pcb->state != SYN_RCVD) || (pcb->flags & TF_WND_SCALE)) {
    e8895686:	04844703          	lbu	a4,72(s0)
    e889568a:	478d                	li	a5,3
      optflags |= TF_SEG_OPTS_WND_SCALE;
    e889568c:	49a5                	li	s3,9
    if ((pcb->state != SYN_RCVD) || (pcb->flags & TF_WND_SCALE)) {
    e889568e:	00f71863          	bne	a4,a5,e889569e <tcp_enqueue_flags+0x96>
    e8895692:	04e45783          	lhu	a5,78(s0)
    e8895696:	1007f793          	andi	a5,a5,256
    e889569a:	e391                	bnez	a5,e889569e <tcp_enqueue_flags+0x96>
    optflags = TF_SEG_OPTS_MSS;
    e889569c:	4985                	li	s3,1
  optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb);
    e889569e:	0009879b          	sext.w	a5,s3
    e88956a2:	00279913          	slli	s2,a5,0x2
    e88956a6:	00497913          	andi	s2,s2,4
    e88956aa:	4017d79b          	sraiw	a5,a5,0x1
  if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) {
    e88956ae:	993e                	add	s2,s2,a5
    e88956b0:	28000613          	li	a2,640
    e88956b4:	85ca                	mv	a1,s2
    e88956b6:	04a00513          	li	a0,74
    e88956ba:	cd7f90ef          	jal	ra,e888f390 <pbuf_alloc>
    e88956be:	8a2a                	mv	s4,a0
    e88956c0:	e91d                	bnez	a0,e88956f6 <tcp_enqueue_flags+0xee>
    tcp_set_flags(pcb, TF_NAGLEMEMERR);
    e88956c2:	04e45783          	lhu	a5,78(s0)
    TCP_STATS_INC(tcp.memerr);
    e88956c6:	00051717          	auipc	a4,0x51
    e88956ca:	d8a70713          	addi	a4,a4,-630 # e88e6450 <lwip_stats>
    return ERR_MEM;
    e88956ce:	54fd                	li	s1,-1
    tcp_set_flags(pcb, TF_NAGLEMEMERR);
    e88956d0:	0807e793          	ori	a5,a5,128
    e88956d4:	04f41723          	sh	a5,78(s0)
    TCP_STATS_INC(tcp.memerr);
    e88956d8:	0b875783          	lhu	a5,184(a4)
    e88956dc:	2785                	addiw	a5,a5,1
    e88956de:	0af71c23          	sh	a5,184(a4)
}
    e88956e2:	70e2                	ld	ra,56(sp)
    e88956e4:	6422                	ld	s0,8(sp)
    e88956e6:	8526                	mv	a0,s1
    e88956e8:	6962                	ld	s2,24(sp)
    e88956ea:	64c2                	ld	s1,16(sp)
    e88956ec:	7982                	ld	s3,32(sp)
    e88956ee:	7a22                	ld	s4,40(sp)
    e88956f0:	7ac2                	ld	s5,48(sp)
    e88956f2:	6121                	addi	sp,sp,64
    e88956f4:	8082                	ret
  LWIP_ASSERT("tcp_enqueue_flags: check that first pbuf can hold optlen",
    e88956f6:	01255783          	lhu	a5,18(a0)
    e88956fa:	0327f863          	bgeu	a5,s2,e889572a <tcp_enqueue_flags+0x122>
    e88956fe:	02f00593          	li	a1,47
    e8895702:	0003d517          	auipc	a0,0x3d
    e8895706:	9de50513          	addi	a0,a0,-1570 # e88d20e0 <tcp_persist_backoff+0xb70>
    e889570a:	c6fe60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889570e:	00150693          	addi	a3,a0,1
    e8895712:	43a00613          	li	a2,1082
    e8895716:	0003c597          	auipc	a1,0x3c
    e889571a:	75258593          	addi	a1,a1,1874 # e88d1e68 <tcp_persist_backoff+0x8f8>
    e889571e:	0003a517          	auipc	a0,0x3a
    e8895722:	99250513          	addi	a0,a0,-1646 # e88cf0b0 <kSinTable1024+0x900>
    e8895726:	ba1e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if ((seg = tcp_create_segment(pcb, p, flags, pcb->snd_lbb, optflags)) == NULL) {
    e889572a:	09842683          	lw	a3,152(s0)
    e889572e:	874e                	mv	a4,s3
    e8895730:	8626                	mv	a2,s1
    e8895732:	85d2                	mv	a1,s4
    e8895734:	8522                	mv	a0,s0
    e8895736:	9e8ff0ef          	jal	ra,e889491e <tcp_create_segment>
    e889573a:	892a                	mv	s2,a0
    e889573c:	d159                	beqz	a0,e88956c2 <tcp_enqueue_flags+0xba>
  LWIP_ASSERT("tcp_enqueue_flags: invalid segment length", seg->len == 0);
    e889573e:	01055783          	lhu	a5,16(a0)
    e8895742:	c79d                	beqz	a5,e8895770 <tcp_enqueue_flags+0x168>
    e8895744:	02f00593          	li	a1,47
    e8895748:	0003d517          	auipc	a0,0x3d
    e889574c:	99850513          	addi	a0,a0,-1640 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895750:	c29e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895754:	00150693          	addi	a3,a0,1
    e8895758:	44300613          	li	a2,1091
    e889575c:	0003c597          	auipc	a1,0x3c
    e8895760:	74c58593          	addi	a1,a1,1868 # e88d1ea8 <tcp_persist_backoff+0x938>
    e8895764:	0003a517          	auipc	a0,0x3a
    e8895768:	94c50513          	addi	a0,a0,-1716 # e88cf0b0 <kSinTable1024+0x900>
    e889576c:	b5be60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (pcb->unsent == NULL) {
    e8895770:	785c                	ld	a5,176(s0)
    e8895772:	efad                	bnez	a5,e88957ec <tcp_enqueue_flags+0x1e4>
    pcb->unsent = seg;
    e8895774:	0b243823          	sd	s2,176(s0)
  pcb->unsent_oversize = 0;
    e8895778:	0a041523          	sh	zero,170(s0)
  if ((flags & TCP_SYN) || (flags & TCP_FIN)) {
    e889577c:	000a8763          	beqz	s5,e889578a <tcp_enqueue_flags+0x182>
    pcb->snd_lbb++;
    e8895780:	09842783          	lw	a5,152(s0)
    e8895784:	2785                	addiw	a5,a5,1
    e8895786:	08f42c23          	sw	a5,152(s0)
  if (flags & TCP_FIN) {
    e889578a:	8885                	andi	s1,s1,1
    e889578c:	c499                	beqz	s1,e889579a <tcp_enqueue_flags+0x192>
    tcp_set_flags(pcb, TF_FIN);
    e889578e:	04e45783          	lhu	a5,78(s0)
    e8895792:	0207e793          	ori	a5,a5,32
    e8895796:	04f41723          	sh	a5,78(s0)
  pcb->snd_queuelen += pbuf_clen(seg->p);
    e889579a:	00893503          	ld	a0,8(s2)
  return ERR_OK;
    e889579e:	4481                	li	s1,0
  pcb->snd_queuelen += pbuf_clen(seg->p);
    e88957a0:	eb3f90ef          	jal	ra,e888f652 <pbuf_clen>
    e88957a4:	0a845783          	lhu	a5,168(s0)
    e88957a8:	9d3d                	addw	a0,a0,a5
    e88957aa:	3c05350b          	extu	a0,a0,15,0
    e88957ae:	0aa41423          	sh	a0,168(s0)
  if (pcb->snd_queuelen != 0) {
    e88957b2:	d905                	beqz	a0,e88956e2 <tcp_enqueue_flags+0xda>
    LWIP_ASSERT("tcp_enqueue_flags: invalid queue length",
    e88957b4:	7c5c                	ld	a5,184(s0)
    e88957b6:	f795                	bnez	a5,e88956e2 <tcp_enqueue_flags+0xda>
    e88957b8:	785c                	ld	a5,176(s0)
    e88957ba:	f785                	bnez	a5,e88956e2 <tcp_enqueue_flags+0xda>
    e88957bc:	02f00593          	li	a1,47
    e88957c0:	0003d517          	auipc	a0,0x3d
    e88957c4:	92050513          	addi	a0,a0,-1760 # e88d20e0 <tcp_persist_backoff+0xb70>
    e88957c8:	bb1e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88957cc:	00150693          	addi	a3,a0,1
    e88957d0:	46600613          	li	a2,1126
    e88957d4:	0003c597          	auipc	a1,0x3c
    e88957d8:	70458593          	addi	a1,a1,1796 # e88d1ed8 <tcp_persist_backoff+0x968>
    e88957dc:	0003a517          	auipc	a0,0x3a
    e88957e0:	8d450513          	addi	a0,a0,-1836 # e88cf0b0 <kSinTable1024+0x900>
    e88957e4:	ae3e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88957e8:	bded                	j	e88956e2 <tcp_enqueue_flags+0xda>
    e88957ea:	87ba                	mv	a5,a4
    for (useg = pcb->unsent; useg->next != NULL; useg = useg->next);
    e88957ec:	6398                	ld	a4,0(a5)
    e88957ee:	ff75                	bnez	a4,e88957ea <tcp_enqueue_flags+0x1e2>
    useg->next = seg;
    e88957f0:	0127b023          	sd	s2,0(a5)
    e88957f4:	b751                	j	e8895778 <tcp_enqueue_flags+0x170>

00000000e88957f6 <tcp_send_fin>:
{
    e88957f6:	1101                	addi	sp,sp,-32
    e88957f8:	f891540b          	sdd	s0,s1,(sp),0,4
    e88957fc:	ec06                	sd	ra,24(sp)
    e88957fe:	e84a                	sd	s2,16(sp)
    e8895800:	84aa                	mv	s1,a0
  LWIP_ASSERT("tcp_send_fin: invalid pcb", pcb != NULL);
    e8895802:	e51d                	bnez	a0,e8895830 <tcp_send_fin+0x3a>
    e8895804:	02f00593          	li	a1,47
    e8895808:	0003d517          	auipc	a0,0x3d
    e889580c:	8d850513          	addi	a0,a0,-1832 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895810:	b69e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895814:	00150693          	addi	a3,a0,1
    e8895818:	3eb00613          	li	a2,1003
    e889581c:	0003d597          	auipc	a1,0x3d
    e8895820:	a7c58593          	addi	a1,a1,-1412 # e88d2298 <tcp_persist_backoff+0xd28>
    e8895824:	0003a517          	auipc	a0,0x3a
    e8895828:	88c50513          	addi	a0,a0,-1908 # e88cf0b0 <kSinTable1024+0x900>
    e889582c:	a9be60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (pcb->unsent != NULL) {
    e8895830:	78c0                	ld	s0,176(s1)
    e8895832:	e819                	bnez	s0,e8895848 <tcp_send_fin+0x52>
  return tcp_enqueue_flags(pcb, TCP_FIN);
    e8895834:	8526                	mv	a0,s1
}
    e8895836:	f891440b          	ldd	s0,s1,(sp),0,4
    e889583a:	60e2                	ld	ra,24(sp)
    e889583c:	6942                	ld	s2,16(sp)
  return tcp_enqueue_flags(pcb, TCP_FIN);
    e889583e:	4585                	li	a1,1
}
    e8895840:	6105                	addi	sp,sp,32
  return tcp_enqueue_flags(pcb, TCP_FIN);
    e8895842:	dc7ff06f          	j	e8895608 <tcp_enqueue_flags>
    e8895846:	843e                	mv	s0,a5
    for (last_unsent = pcb->unsent; last_unsent->next != NULL;
    e8895848:	601c                	ld	a5,0(s0)
    e889584a:	fff5                	bnez	a5,e8895846 <tcp_send_fin+0x50>
    if ((TCPH_FLAGS(last_unsent->tcphdr) & (TCP_SYN | TCP_FIN | TCP_RST)) == 0) {
    e889584c:	6c1c                	ld	a5,24(s0)
    e889584e:	00c7d503          	lhu	a0,12(a5)
    e8895852:	eccf10ef          	jal	ra,e8886f1e <lwip_htons>
    e8895856:	891d                	andi	a0,a0,7
    e8895858:	fd71                	bnez	a0,e8895834 <tcp_send_fin+0x3e>
      TCPH_SET_FLAG(last_unsent->tcphdr, TCP_FIN);
    e889585a:	6c1c                	ld	a5,24(s0)
    e889585c:	4505                	li	a0,1
    e889585e:	00c7d903          	lhu	s2,12(a5)
    e8895862:	ebcf10ef          	jal	ra,e8886f1e <lwip_htons>
    e8895866:	6c1c                	ld	a5,24(s0)
    e8895868:	00a96533          	or	a0,s2,a0
    e889586c:	00a79623          	sh	a0,12(a5)
      tcp_set_flags(pcb, TF_FIN);
    e8895870:	04e4d783          	lhu	a5,78(s1)
}
    e8895874:	60e2                	ld	ra,24(sp)
    e8895876:	6942                	ld	s2,16(sp)
      tcp_set_flags(pcb, TF_FIN);
    e8895878:	0207e793          	ori	a5,a5,32
    e889587c:	04f49723          	sh	a5,78(s1)
}
    e8895880:	f891440b          	ldd	s0,s1,(sp),0,4
    e8895884:	4501                	li	a0,0
    e8895886:	6105                	addi	sp,sp,32
    e8895888:	8082                	ret

00000000e889588a <tcp_rexmit_rto_prepare>:
{
    e889588a:	7179                	addi	sp,sp,-48
    e889588c:	e422                	sd	s0,8(sp)
    e889588e:	f406                	sd	ra,40(sp)
    e8895890:	e826                	sd	s1,16(sp)
    e8895892:	ec4a                	sd	s2,24(sp)
    e8895894:	f04e                	sd	s3,32(sp)
    e8895896:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_rexmit_rto_prepare: invalid pcb", pcb != NULL);
    e8895898:	e51d                	bnez	a0,e88958c6 <tcp_rexmit_rto_prepare+0x3c>
    e889589a:	02f00593          	li	a1,47
    e889589e:	0003d517          	auipc	a0,0x3d
    e88958a2:	84250513          	addi	a0,a0,-1982 # e88d20e0 <tcp_persist_backoff+0xb70>
    e88958a6:	ad3e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88958aa:	00150693          	addi	a3,a0,1
    e88958ae:	66300613          	li	a2,1635
    e88958b2:	0003d597          	auipc	a1,0x3d
    e88958b6:	95e58593          	addi	a1,a1,-1698 # e88d2210 <tcp_persist_backoff+0xca0>
    e88958ba:	00039517          	auipc	a0,0x39
    e88958be:	7f650513          	addi	a0,a0,2038 # e88cf0b0 <kSinTable1024+0x900>
    e88958c2:	a05e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (pcb->unacked == NULL) {
    e88958c6:	7c44                	ld	s1,184(s0)
    e88958c8:	ec89                	bnez	s1,e88958e2 <tcp_rexmit_rto_prepare+0x58>
    return ERR_VAL;
    e88958ca:	5569                	li	a0,-6
}
    e88958cc:	70a2                	ld	ra,40(sp)
    e88958ce:	6422                	ld	s0,8(sp)
    e88958d0:	64c2                	ld	s1,16(sp)
    e88958d2:	6962                	ld	s2,24(sp)
    e88958d4:	7982                	ld	s3,32(sp)
    e88958d6:	6145                	addi	sp,sp,48
    e88958d8:	8082                	ret
    if (tcp_output_segment_busy(seg)) {
    e88958da:	ffbfe0ef          	jal	ra,e88948d4 <tcp_output_segment_busy>
    e88958de:	f575                	bnez	a0,e88958ca <tcp_rexmit_rto_prepare+0x40>
  for (seg = pcb->unacked; seg->next != NULL; seg = seg->next) {
    e88958e0:	6084                	ld	s1,0(s1)
    e88958e2:	609c                	ld	a5,0(s1)
    if (tcp_output_segment_busy(seg)) {
    e88958e4:	8526                	mv	a0,s1
  for (seg = pcb->unacked; seg->next != NULL; seg = seg->next) {
    e88958e6:	fbf5                	bnez	a5,e88958da <tcp_rexmit_rto_prepare+0x50>
  if (tcp_output_segment_busy(seg)) {
    e88958e8:	fedfe0ef          	jal	ra,e88948d4 <tcp_output_segment_busy>
    e88958ec:	fd79                	bnez	a0,e88958ca <tcp_rexmit_rto_prepare+0x40>
  seg->next = pcb->unsent;
    e88958ee:	785c                	ld	a5,176(s0)
  tcp_set_flags(pcb, TF_RTO);
    e88958f0:	6705                	lui	a4,0x1
    e88958f2:	80070713          	addi	a4,a4,-2048 # 800 <memcmp-0xe87ff800>
  seg->next = pcb->unsent;
    e88958f6:	e09c                	sd	a5,0(s1)
  pcb->unsent = pcb->unacked;
    e88958f8:	7c5c                	ld	a5,184(s0)
  pcb->unacked = NULL;
    e88958fa:	0a043c23          	sd	zero,184(s0)
  pcb->unsent = pcb->unacked;
    e88958fe:	f85c                	sd	a5,176(s0)
  tcp_set_flags(pcb, TF_RTO);
    e8895900:	04e45783          	lhu	a5,78(s0)
    e8895904:	8fd9                	or	a5,a5,a4
    e8895906:	04f41723          	sh	a5,78(s0)
  pcb->rto_end = lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg);
    e889590a:	6c9c                	ld	a5,24(s1)
    e889590c:	43c8                	lw	a0,4(a5)
    e889590e:	e20f10ef          	jal	ra,e8886f2e <lwip_htonl>
    e8895912:	0005091b          	sext.w	s2,a0
    e8895916:	6c9c                	ld	a5,24(s1)
    e8895918:	0104d983          	lhu	s3,16(s1)
    e889591c:	00c7d503          	lhu	a0,12(a5)
    e8895920:	0139093b          	addw	s2,s2,s3
    e8895924:	dfaf10ef          	jal	ra,e8886f1e <lwip_htons>
    e8895928:	890d                	andi	a0,a0,3
    e889592a:	00a03533          	snez	a0,a0
    e889592e:	0125053b          	addw	a0,a0,s2
    e8895932:	08a42423          	sw	a0,136(s0)
  pcb->rttest = 0;
    e8895936:	06042623          	sw	zero,108(s0)
  return ERR_OK;
    e889593a:	4501                	li	a0,0
    e889593c:	bf41                	j	e88958cc <tcp_rexmit_rto_prepare+0x42>

00000000e889593e <tcp_rexmit>:
{
    e889593e:	7179                	addi	sp,sp,-48
    e8895940:	e422                	sd	s0,8(sp)
    e8895942:	f406                	sd	ra,40(sp)
    e8895944:	e826                	sd	s1,16(sp)
    e8895946:	ec4a                	sd	s2,24(sp)
    e8895948:	f04e                	sd	s3,32(sp)
    e889594a:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_rexmit: invalid pcb", pcb != NULL);
    e889594c:	e51d                	bnez	a0,e889597a <tcp_rexmit+0x3c>
    e889594e:	02f00593          	li	a1,47
    e8895952:	0003c517          	auipc	a0,0x3c
    e8895956:	78e50513          	addi	a0,a0,1934 # e88d20e0 <tcp_persist_backoff+0xb70>
    e889595a:	a1fe60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889595e:	00150693          	addi	a3,a0,1
    e8895962:	6c100613          	li	a2,1729
    e8895966:	0003d597          	auipc	a1,0x3d
    e889596a:	82a58593          	addi	a1,a1,-2006 # e88d2190 <tcp_persist_backoff+0xc20>
    e889596e:	00039517          	auipc	a0,0x39
    e8895972:	74250513          	addi	a0,a0,1858 # e88cf0b0 <kSinTable1024+0x900>
    e8895976:	951e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (pcb->unacked == NULL) {
    e889597a:	7c44                	ld	s1,184(s0)
    e889597c:	e889                	bnez	s1,e889598e <tcp_rexmit+0x50>
    return ERR_VAL;
    e889597e:	5569                	li	a0,-6
}
    e8895980:	70a2                	ld	ra,40(sp)
    e8895982:	6422                	ld	s0,8(sp)
    e8895984:	64c2                	ld	s1,16(sp)
    e8895986:	6962                	ld	s2,24(sp)
    e8895988:	7982                	ld	s3,32(sp)
    e889598a:	6145                	addi	sp,sp,48
    e889598c:	8082                	ret
  if (tcp_output_segment_busy(seg)) {
    e889598e:	8526                	mv	a0,s1
    e8895990:	f45fe0ef          	jal	ra,e88948d4 <tcp_output_segment_busy>
    e8895994:	f56d                	bnez	a0,e889597e <tcp_rexmit+0x40>
  pcb->unacked = seg->next;
    e8895996:	609c                	ld	a5,0(s1)
  cur_seg = &(pcb->unsent);
    e8895998:	0b040913          	addi	s2,s0,176
  pcb->unacked = seg->next;
    e889599c:	fc5c                	sd	a5,184(s0)
  while (*cur_seg &&
    e889599e:	00093783          	ld	a5,0(s2)
    e88959a2:	e3a1                	bnez	a5,e88959e2 <tcp_rexmit+0xa4>
  seg->next = *cur_seg;
    e88959a4:	00093783          	ld	a5,0(s2)
    e88959a8:	e09c                	sd	a5,0(s1)
  *cur_seg = seg;
    e88959aa:	00993023          	sd	s1,0(s2)
  if (seg->next == NULL) {
    e88959ae:	609c                	ld	a5,0(s1)
    e88959b0:	e399                	bnez	a5,e88959b6 <tcp_rexmit+0x78>
    pcb->unsent_oversize = 0;
    e88959b2:	0a041523          	sh	zero,170(s0)
  if (pcb->nrtx < 0xFF) {
    e88959b6:	07a44783          	lbu	a5,122(s0)
    e88959ba:	0ff00713          	li	a4,255
    e88959be:	00e78563          	beq	a5,a4,e88959c8 <tcp_rexmit+0x8a>
    ++pcb->nrtx;
    e88959c2:	2785                	addiw	a5,a5,1
    e88959c4:	06f40d23          	sb	a5,122(s0)
  MIB2_STATS_INC(mib2.tcpretranssegs);
    e88959c8:	00051717          	auipc	a4,0x51
    e88959cc:	a8870713          	addi	a4,a4,-1400 # e88e6450 <lwip_stats>
  pcb->rttest = 0;
    e88959d0:	06042623          	sw	zero,108(s0)
  MIB2_STATS_INC(mib2.tcpretranssegs);
    e88959d4:	1a872783          	lw	a5,424(a4)
  return ERR_OK;
    e88959d8:	4501                	li	a0,0
  MIB2_STATS_INC(mib2.tcpretranssegs);
    e88959da:	2785                	addiw	a5,a5,1
    e88959dc:	1af72423          	sw	a5,424(a4)
  return ERR_OK;
    e88959e0:	b745                	j	e8895980 <tcp_rexmit+0x42>
         TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) {
    e88959e2:	6f9c                	ld	a5,24(a5)
    e88959e4:	43c8                	lw	a0,4(a5)
    e88959e6:	d48f10ef          	jal	ra,e8886f2e <lwip_htonl>
    e88959ea:	0005099b          	sext.w	s3,a0
    e88959ee:	6c9c                	ld	a5,24(s1)
    e88959f0:	43c8                	lw	a0,4(a5)
    e88959f2:	d3cf10ef          	jal	ra,e8886f2e <lwip_htonl>
  while (*cur_seg &&
    e88959f6:	40a9853b          	subw	a0,s3,a0
    e88959fa:	fa0555e3          	bgez	a0,e88959a4 <tcp_rexmit+0x66>
    cur_seg = &((*cur_seg)->next );
    e88959fe:	00093903          	ld	s2,0(s2)
    e8895a02:	bf71                	j	e889599e <tcp_rexmit+0x60>

00000000e8895a04 <tcp_rexmit_fast>:
{
    e8895a04:	1141                	addi	sp,sp,-16
    e8895a06:	e022                	sd	s0,0(sp)
    e8895a08:	e406                	sd	ra,8(sp)
    e8895a0a:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_rexmit_fast: invalid pcb", pcb != NULL);
    e8895a0c:	e51d                	bnez	a0,e8895a3a <tcp_rexmit_fast+0x36>
    e8895a0e:	02f00593          	li	a1,47
    e8895a12:	0003c517          	auipc	a0,0x3c
    e8895a16:	6ce50513          	addi	a0,a0,1742 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895a1a:	95fe60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895a1e:	00150693          	addi	a3,a0,1
    e8895a22:	6f900613          	li	a2,1785
    e8895a26:	0003c597          	auipc	a1,0x3c
    e8895a2a:	78258593          	addi	a1,a1,1922 # e88d21a8 <tcp_persist_backoff+0xc38>
    e8895a2e:	00039517          	auipc	a0,0x39
    e8895a32:	68250513          	addi	a0,a0,1666 # e88cf0b0 <kSinTable1024+0x900>
    e8895a36:	891e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) {
    e8895a3a:	7c5c                	ld	a5,184(s0)
    e8895a3c:	cfb9                	beqz	a5,e8895a9a <tcp_rexmit_fast+0x96>
    e8895a3e:	04e45783          	lhu	a5,78(s0)
    e8895a42:	8b91                	andi	a5,a5,4
    e8895a44:	ebb9                	bnez	a5,e8895a9a <tcp_rexmit_fast+0x96>
    if (tcp_rexmit(pcb) == ERR_OK) {
    e8895a46:	8522                	mv	a0,s0
    e8895a48:	ef7ff0ef          	jal	ra,e889593e <tcp_rexmit>
    e8895a4c:	e539                	bnez	a0,e8895a9a <tcp_rexmit_fast+0x96>
      pcb->ssthresh = LWIP_MIN(pcb->cwnd, pcb->snd_wnd) / 2;
    e8895a4e:	08042683          	lw	a3,128(s0)
    e8895a52:	09c42783          	lw	a5,156(s0)
    e8895a56:	00f6b733          	sltu	a4,a3,a5
    e8895a5a:	42e6978b          	mvnez	a5,a3,a4
    e8895a5e:	0017d69b          	srliw	a3,a5,0x1
      if (pcb->ssthresh < (2U * pcb->mss)) {
    e8895a62:	06a45783          	lhu	a5,106(s0)
      pcb->ssthresh = LWIP_MIN(pcb->cwnd, pcb->snd_wnd) / 2;
    e8895a66:	08d42223          	sw	a3,132(s0)
      if (pcb->ssthresh < (2U * pcb->mss)) {
    e8895a6a:	0007871b          	sext.w	a4,a5
    e8895a6e:	0786                	slli	a5,a5,0x1
    e8895a70:	00f6f663          	bgeu	a3,a5,e8895a7c <tcp_rexmit_fast+0x78>
        pcb->ssthresh = 2 * pcb->mss;
    e8895a74:	0017179b          	slliw	a5,a4,0x1
    e8895a78:	08f42223          	sw	a5,132(s0)
      pcb->cwnd = pcb->ssthresh + 3 * pcb->mss;
    e8895a7c:	08442783          	lw	a5,132(s0)
    e8895a80:	468d                	li	a3,3
      pcb->rtime = 0;
    e8895a82:	06041423          	sh	zero,104(s0)
      pcb->cwnd = pcb->ssthresh + 3 * pcb->mss;
    e8895a86:	24e6978b          	mulaw	a5,a3,a4
    e8895a8a:	08f42023          	sw	a5,128(s0)
      tcp_set_flags(pcb, TF_INFR);
    e8895a8e:	04e45783          	lhu	a5,78(s0)
    e8895a92:	0047e793          	ori	a5,a5,4
    e8895a96:	04f41723          	sh	a5,78(s0)
}
    e8895a9a:	60a2                	ld	ra,8(sp)
    e8895a9c:	6402                	ld	s0,0(sp)
    e8895a9e:	0141                	addi	sp,sp,16
    e8895aa0:	8082                	ret

00000000e8895aa2 <tcp_rst>:
 */
void
tcp_rst(const struct tcp_pcb *pcb, u32_t seqno, u32_t ackno,
        const ip_addr_t *local_ip, const ip_addr_t *remote_ip,
        u16_t local_port, u16_t remote_port)
{
    e8895aa2:	715d                	addi	sp,sp,-80
    e8895aa4:	e0a2                	sd	s0,64(sp)
    e8895aa6:	fc26                	sd	s1,56(sp)
    e8895aa8:	f84a                	sd	s2,48(sp)
    e8895aaa:	f44e                	sd	s3,40(sp)
    e8895aac:	f052                	sd	s4,32(sp)
    e8895aae:	ec56                	sd	s5,24(sp)
    e8895ab0:	e85a                	sd	s6,16(sp)
    e8895ab2:	e486                	sd	ra,72(sp)
    e8895ab4:	892a                	mv	s2,a0
    e8895ab6:	8b2e                	mv	s6,a1
    e8895ab8:	89b2                	mv	s3,a2
    e8895aba:	8436                	mv	s0,a3
    e8895abc:	84ba                	mv	s1,a4
    e8895abe:	8a3e                	mv	s4,a5
    e8895ac0:	8ac2                	mv	s5,a6
  struct pbuf *p;
  u16_t wnd;
  u8_t optlen;

  LWIP_ASSERT("tcp_rst: invalid local_ip", local_ip != NULL);
    e8895ac2:	e69d                	bnez	a3,e8895af0 <tcp_rst+0x4e>
    e8895ac4:	02f00593          	li	a1,47
    e8895ac8:	0003c517          	auipc	a0,0x3c
    e8895acc:	61850513          	addi	a0,a0,1560 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895ad0:	8a9e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895ad4:	00150693          	addi	a3,a0,1
    e8895ad8:	7c400613          	li	a2,1988
    e8895adc:	0003c597          	auipc	a1,0x3c
    e8895ae0:	75c58593          	addi	a1,a1,1884 # e88d2238 <tcp_persist_backoff+0xcc8>
    e8895ae4:	00039517          	auipc	a0,0x39
    e8895ae8:	5cc50513          	addi	a0,a0,1484 # e88cf0b0 <kSinTable1024+0x900>
    e8895aec:	fdae60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("tcp_rst: invalid remote_ip", remote_ip != NULL);
    e8895af0:	e49d                	bnez	s1,e8895b1e <tcp_rst+0x7c>
    e8895af2:	02f00593          	li	a1,47
    e8895af6:	0003c517          	auipc	a0,0x3c
    e8895afa:	5ea50513          	addi	a0,a0,1514 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895afe:	87be60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895b02:	00150693          	addi	a3,a0,1
    e8895b06:	7c500613          	li	a2,1989
    e8895b0a:	0003c597          	auipc	a1,0x3c
    e8895b0e:	74e58593          	addi	a1,a1,1870 # e88d2258 <tcp_persist_backoff+0xce8>
    e8895b12:	00039517          	auipc	a0,0x39
    e8895b16:	59e50513          	addi	a0,a0,1438 # e88cf0b0 <kSinTable1024+0x900>
    e8895b1a:	face60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  wnd = PP_HTONS(((TCP_WND >> TCP_RCV_SCALE) & 0xFFFF));
#else
  wnd = PP_HTONS(TCP_WND);
#endif

  p = tcp_output_alloc_header_common(ackno, optlen, 0, lwip_htonl(seqno), local_port,
    e8895b1e:	855a                	mv	a0,s6
    e8895b20:	c0ef10ef          	jal	ra,e8886f2e <lwip_htonl>
    e8895b24:	0005061b          	sext.w	a2,a0
    e8895b28:	02d00813          	li	a6,45
    e8895b2c:	47d1                	li	a5,20
    e8895b2e:	8756                	mv	a4,s5
    e8895b30:	86d2                	mv	a3,s4
    e8895b32:	4581                	li	a1,0
    e8895b34:	854e                	mv	a0,s3
    e8895b36:	878ff0ef          	jal	ra,e8894bae <tcp_output_alloc_header_common.constprop.4>
    remote_port, TCP_RST | TCP_ACK, wnd);
  if (p == NULL) {
    e8895b3a:	e42a                	sd	a0,8(sp)
    e8895b3c:	c91d                	beqz	a0,e8895b72 <tcp_rst+0xd0>
    LWIP_DEBUGF(TCP_DEBUG, ("tcp_rst: could not allocate memory for pbuf\n"));
    return;
  }
  tcp_output_fill_options(pcb, p, 0, optlen);
    e8895b3e:	9b8ff0ef          	jal	ra,e8894cf6 <tcp_output_fill_options.isra.0.constprop.6>

  MIB2_STATS_INC(mib2.tcpoutrsts);
    e8895b42:	00051717          	auipc	a4,0x51
    e8895b46:	90e70713          	addi	a4,a4,-1778 # e88e6450 <lwip_stats>
    e8895b4a:	1b472783          	lw	a5,436(a4)

  tcp_output_control_segment(pcb, p, local_ip, remote_ip);
    e8895b4e:	8622                	mv	a2,s0
    e8895b50:	65a2                	ld	a1,8(sp)
  MIB2_STATS_INC(mib2.tcpoutrsts);
    e8895b52:	2785                	addiw	a5,a5,1
    e8895b54:	1af72a23          	sw	a5,436(a4)
  LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno));
}
    e8895b58:	6406                	ld	s0,64(sp)
    e8895b5a:	60a6                	ld	ra,72(sp)
    e8895b5c:	79a2                	ld	s3,40(sp)
    e8895b5e:	7a02                	ld	s4,32(sp)
    e8895b60:	6ae2                	ld	s5,24(sp)
    e8895b62:	6b42                	ld	s6,16(sp)
  tcp_output_control_segment(pcb, p, local_ip, remote_ip);
    e8895b64:	86a6                	mv	a3,s1
    e8895b66:	854a                	mv	a0,s2
}
    e8895b68:	74e2                	ld	s1,56(sp)
    e8895b6a:	7942                	ld	s2,48(sp)
    e8895b6c:	6161                	addi	sp,sp,80
  tcp_output_control_segment(pcb, p, local_ip, remote_ip);
    e8895b6e:	f6ffe06f          	j	e8894adc <tcp_output_control_segment>
}
    e8895b72:	60a6                	ld	ra,72(sp)
    e8895b74:	6406                	ld	s0,64(sp)
    e8895b76:	74e2                	ld	s1,56(sp)
    e8895b78:	7942                	ld	s2,48(sp)
    e8895b7a:	79a2                	ld	s3,40(sp)
    e8895b7c:	7a02                	ld	s4,32(sp)
    e8895b7e:	6ae2                	ld	s5,24(sp)
    e8895b80:	6b42                	ld	s6,16(sp)
    e8895b82:	6161                	addi	sp,sp,80
    e8895b84:	8082                	ret

00000000e8895b86 <tcp_send_empty_ack>:
 *
 * @param pcb Protocol control block for the TCP connection to send the ACK
 */
err_t
tcp_send_empty_ack(struct tcp_pcb *pcb)
{
    e8895b86:	1101                	addi	sp,sp,-32
    e8895b88:	e822                	sd	s0,16(sp)
    e8895b8a:	ec06                	sd	ra,24(sp)
    e8895b8c:	842a                	mv	s0,a0
  err_t err;
  struct pbuf *p;
  u8_t optlen, optflags = 0;
  u8_t num_sacks = 0;

  LWIP_ASSERT("tcp_send_empty_ack: invalid pcb", pcb != NULL);
    e8895b8e:	e51d                	bnez	a0,e8895bbc <tcp_send_empty_ack+0x36>
    e8895b90:	02f00593          	li	a1,47
    e8895b94:	0003c517          	auipc	a0,0x3c
    e8895b98:	54c50513          	addi	a0,a0,1356 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895b9c:	fdce60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895ba0:	00150693          	addi	a3,a0,1
    e8895ba4:	7ea00613          	li	a2,2026
    e8895ba8:	0003c597          	auipc	a1,0x3c
    e8895bac:	6d058593          	addi	a1,a1,1744 # e88d2278 <tcp_persist_backoff+0xd08>
    e8895bb0:	00039517          	auipc	a0,0x39
    e8895bb4:	50050513          	addi	a0,a0,1280 # e88cf0b0 <kSinTable1024+0x900>
    e8895bb8:	f0ee60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if ((num_sacks = tcp_get_num_sacks(pcb, optlen)) > 0) {
    optlen += 4 + num_sacks * 8; /* 4 bytes for header (including 2*NOP), plus 8B for each SACK */
  }
#endif

  p = tcp_output_alloc_header(pcb, optlen, 0, lwip_htonl(pcb->snd_nxt));
    e8895bbc:	08c42503          	lw	a0,140(s0)
    e8895bc0:	b6ef10ef          	jal	ra,e8886f2e <lwip_htonl>
    e8895bc4:	0005061b          	sext.w	a2,a0
    e8895bc8:	4581                	li	a1,0
    e8895bca:	8522                	mv	a0,s0
    e8895bcc:	8a4ff0ef          	jal	ra,e8894c70 <tcp_output_alloc_header.constprop.3>
  if (p == NULL) {
    e8895bd0:	ed01                	bnez	a0,e8895be8 <tcp_send_empty_ack+0x62>
    /* let tcp_fasttmr retry sending this ACK */
    tcp_set_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW);
    e8895bd2:	04e45783          	lhu	a5,78(s0)
    LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: (ACK) could not allocate pbuf\n"));
    return ERR_BUF;
    e8895bd6:	5579                	li	a0,-2
    tcp_set_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW);
    e8895bd8:	0037e793          	ori	a5,a5,3
    e8895bdc:	04f41723          	sh	a5,78(s0)
    /* remove ACK flags from the PCB, as we sent an empty ACK now */
    tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW);
  }

  return err;
}
    e8895be0:	60e2                	ld	ra,24(sp)
    e8895be2:	6442                	ld	s0,16(sp)
    e8895be4:	6105                	addi	sp,sp,32
    e8895be6:	8082                	ret
    e8895be8:	e42a                	sd	a0,8(sp)
  tcp_output_fill_options(pcb, p, optflags, num_sacks);
    e8895bea:	90cff0ef          	jal	ra,e8894cf6 <tcp_output_fill_options.isra.0.constprop.6>
  err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip);
    e8895bee:	65a2                	ld	a1,8(sp)
    e8895bf0:	01840693          	addi	a3,s0,24
    e8895bf4:	8622                	mv	a2,s0
    e8895bf6:	8522                	mv	a0,s0
    e8895bf8:	ee5fe0ef          	jal	ra,e8894adc <tcp_output_control_segment>
  if (err != ERR_OK) {
    e8895bfc:	04e45783          	lhu	a5,78(s0)
    e8895c00:	c511                	beqz	a0,e8895c0c <tcp_send_empty_ack+0x86>
    tcp_set_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW);
    e8895c02:	0037e793          	ori	a5,a5,3
    tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW);
    e8895c06:	04f41723          	sh	a5,78(s0)
    e8895c0a:	bfd9                	j	e8895be0 <tcp_send_empty_ack+0x5a>
    e8895c0c:	9bf1                	andi	a5,a5,-4
    e8895c0e:	bfe5                	j	e8895c06 <tcp_send_empty_ack+0x80>

00000000e8895c10 <tcp_output>:
{
    e8895c10:	7175                	addi	sp,sp,-144
    e8895c12:	fc66                	sd	s9,56(sp)
    e8895c14:	e506                	sd	ra,136(sp)
    e8895c16:	e122                	sd	s0,128(sp)
    e8895c18:	fca6                	sd	s1,120(sp)
    e8895c1a:	f8ca                	sd	s2,112(sp)
    e8895c1c:	f4ce                	sd	s3,104(sp)
    e8895c1e:	f0d2                	sd	s4,96(sp)
    e8895c20:	ecd6                	sd	s5,88(sp)
    e8895c22:	e8da                	sd	s6,80(sp)
    e8895c24:	e4de                	sd	s7,72(sp)
    e8895c26:	e0e2                	sd	s8,64(sp)
    e8895c28:	f86a                	sd	s10,48(sp)
    e8895c2a:	f46e                	sd	s11,40(sp)
    e8895c2c:	8caa                	mv	s9,a0
  LWIP_ASSERT("tcp_output: invalid pcb", pcb != NULL);
    e8895c2e:	e51d                	bnez	a0,e8895c5c <tcp_output+0x4c>
    e8895c30:	02f00593          	li	a1,47
    e8895c34:	0003c517          	auipc	a0,0x3c
    e8895c38:	4ac50513          	addi	a0,a0,1196 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895c3c:	f3ce60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895c40:	00150693          	addi	a3,a0,1
    e8895c44:	4e100613          	li	a2,1249
    e8895c48:	0003c597          	auipc	a1,0x3c
    e8895c4c:	2d858593          	addi	a1,a1,728 # e88d1f20 <tcp_persist_backoff+0x9b0>
    e8895c50:	00039517          	auipc	a0,0x39
    e8895c54:	46050513          	addi	a0,a0,1120 # e88cf0b0 <kSinTable1024+0x900>
    e8895c58:	e6ee60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("don't call tcp_output for listen-pcbs",
    e8895c5c:	048cc703          	lbu	a4,72(s9)
    e8895c60:	4785                	li	a5,1
    e8895c62:	02f71863          	bne	a4,a5,e8895c92 <tcp_output+0x82>
    e8895c66:	02f00593          	li	a1,47
    e8895c6a:	0003c517          	auipc	a0,0x3c
    e8895c6e:	47650513          	addi	a0,a0,1142 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895c72:	f06e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895c76:	00150693          	addi	a3,a0,1
    e8895c7a:	4e400613          	li	a2,1252
    e8895c7e:	0003c597          	auipc	a1,0x3c
    e8895c82:	2ba58593          	addi	a1,a1,698 # e88d1f38 <tcp_persist_backoff+0x9c8>
    e8895c86:	00039517          	auipc	a0,0x39
    e8895c8a:	42a50513          	addi	a0,a0,1066 # e88cf0b0 <kSinTable1024+0x900>
    e8895c8e:	e38e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (tcp_input_pcb == pcb) {
    e8895c92:	00051797          	auipc	a5,0x51
    e8895c96:	a4678793          	addi	a5,a5,-1466 # e88e66d8 <tcp_input_pcb>
    e8895c9a:	639c                	ld	a5,0(a5)
    e8895c9c:	67978063          	beq	a5,s9,e88962fc <tcp_output+0x6ec>
  seg = pcb->unsent;
    e8895ca0:	0b0cbd83          	ld	s11,176(s9)
  if (seg == NULL) {
    e8895ca4:	020d9863          	bnez	s11,e8895cd4 <tcp_output+0xc4>
    if (pcb->flags & TF_ACK_NOW) {
    e8895ca8:	04ecd783          	lhu	a5,78(s9)
    e8895cac:	8b89                	andi	a5,a5,2
    e8895cae:	64078163          	beqz	a5,e88962f0 <tcp_output+0x6e0>
}
    e8895cb2:	640a                	ld	s0,128(sp)
    e8895cb4:	60aa                	ld	ra,136(sp)
    e8895cb6:	74e6                	ld	s1,120(sp)
    e8895cb8:	7946                	ld	s2,112(sp)
    e8895cba:	79a6                	ld	s3,104(sp)
    e8895cbc:	7a06                	ld	s4,96(sp)
    e8895cbe:	6ae6                	ld	s5,88(sp)
    e8895cc0:	6b46                	ld	s6,80(sp)
    e8895cc2:	6ba6                	ld	s7,72(sp)
    e8895cc4:	6c06                	ld	s8,64(sp)
    e8895cc6:	7d42                	ld	s10,48(sp)
    e8895cc8:	7da2                	ld	s11,40(sp)
      return tcp_send_empty_ack(pcb);
    e8895cca:	8566                	mv	a0,s9
}
    e8895ccc:	7ce2                	ld	s9,56(sp)
    e8895cce:	6149                	addi	sp,sp,144
      return tcp_send_empty_ack(pcb);
    e8895cd0:	eb7ff06f          	j	e8895b86 <tcp_send_empty_ack>
  netif = tcp_route(pcb, &pcb->local_ip, &pcb->remote_ip);
    e8895cd4:	018c8413          	addi	s0,s9,24
    e8895cd8:	8622                	mv	a2,s0
    e8895cda:	85e6                	mv	a1,s9
    e8895cdc:	8566                	mv	a0,s9
  wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd);
    e8895cde:	080caa03          	lw	s4,128(s9)
    e8895ce2:	09cca903          	lw	s2,156(s9)
  netif = tcp_route(pcb, &pcb->local_ip, &pcb->remote_ip);
    e8895ce6:	dcdfe0ef          	jal	ra,e8894ab2 <tcp_route>
    e8895cea:	89aa                	mv	s3,a0
  if (netif == NULL) {
    e8895cec:	e10d                	bnez	a0,e8895d0e <tcp_output+0xfe>
    return ERR_RTE;
    e8895cee:	5571                	li	a0,-4
}
    e8895cf0:	60aa                	ld	ra,136(sp)
    e8895cf2:	640a                	ld	s0,128(sp)
    e8895cf4:	74e6                	ld	s1,120(sp)
    e8895cf6:	7946                	ld	s2,112(sp)
    e8895cf8:	79a6                	ld	s3,104(sp)
    e8895cfa:	7a06                	ld	s4,96(sp)
    e8895cfc:	6ae6                	ld	s5,88(sp)
    e8895cfe:	6b46                	ld	s6,80(sp)
    e8895d00:	6ba6                	ld	s7,72(sp)
    e8895d02:	6c06                	ld	s8,64(sp)
    e8895d04:	7ce2                	ld	s9,56(sp)
    e8895d06:	7d42                	ld	s10,48(sp)
    e8895d08:	7da2                	ld	s11,40(sp)
    e8895d0a:	6149                	addi	sp,sp,144
    e8895d0c:	8082                	ret
  if (ip_addr_isany(&pcb->local_ip)) {
    e8895d0e:	020c8063          	beqz	s9,e8895d2e <tcp_output+0x11e>
    e8895d12:	014cc703          	lbu	a4,20(s9)
    e8895d16:	4799                	li	a5,6
    e8895d18:	0af71363          	bne	a4,a5,e8895dbe <tcp_output+0x1ae>
    e8895d1c:	000cb703          	ld	a4,0(s9)
    e8895d20:	4781                	li	a5,0
    e8895d22:	e709                	bnez	a4,e8895d2c <tcp_output+0x11c>
    e8895d24:	008cb783          	ld	a5,8(s9)
    e8895d28:	0017b793          	seqz	a5,a5
    e8895d2c:	c3b9                	beqz	a5,e8895d72 <tcp_output+0x162>
    const ip_addr_t *local_ip = ip_netif_get_local_ip(netif, &pcb->remote_ip);
    e8895d2e:	cc49                	beqz	s0,e8895dc8 <tcp_output+0x1b8>
    e8895d30:	02ccc703          	lbu	a4,44(s9)
    e8895d34:	4799                	li	a5,6
    e8895d36:	08f71963          	bne	a4,a5,e8895dc8 <tcp_output+0x1b8>
    e8895d3a:	85a2                	mv	a1,s0
    e8895d3c:	854e                	mv	a0,s3
    e8895d3e:	f2ef40ef          	jal	ra,e888a46c <ip6_select_source_address>
    if (local_ip == NULL) {
    e8895d42:	d555                	beqz	a0,e8895cee <tcp_output+0xde>
    ip_addr_copy(pcb->local_ip, *local_ip);
    e8895d44:	01454783          	lbu	a5,20(a0)
    e8895d48:	4719                	li	a4,6
    e8895d4a:	00fc8a23          	sb	a5,20(s9)
    e8895d4e:	08e79063          	bne	a5,a4,e8895dce <tcp_output+0x1be>
    e8895d52:	411c                	lw	a5,0(a0)
    e8895d54:	00fca023          	sw	a5,0(s9)
    e8895d58:	415c                	lw	a5,4(a0)
    e8895d5a:	00fca223          	sw	a5,4(s9)
    e8895d5e:	451c                	lw	a5,8(a0)
    e8895d60:	00fca423          	sw	a5,8(s9)
    e8895d64:	455c                	lw	a5,12(a0)
    e8895d66:	00fca623          	sw	a5,12(s9)
    e8895d6a:	01054783          	lbu	a5,16(a0)
    e8895d6e:	00fc8823          	sb	a5,16(s9)
  wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd);
    e8895d72:	014934b3          	sltu	s1,s2,s4
    e8895d76:	87ca                	mv	a5,s2
    e8895d78:	409a178b          	mveqz	a5,s4,s1
    e8895d7c:	84be                	mv	s1,a5
  if (lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd) {
    e8895d7e:	018db783          	ld	a5,24(s11)
    e8895d82:	43c8                	lw	a0,4(a5)
    e8895d84:	9aaf10ef          	jal	ra,e8886f2e <lwip_htonl>
    e8895d88:	010dd783          	lhu	a5,16(s11)
    e8895d8c:	07cca703          	lw	a4,124(s9)
    e8895d90:	9f99                	subw	a5,a5,a4
    e8895d92:	9d3d                	addw	a0,a0,a5
    e8895d94:	04a4f763          	bgeu	s1,a0,e8895de2 <tcp_output+0x1d2>
    if (wnd == pcb->snd_wnd && pcb->unacked == NULL && pcb->persist_backoff == 0) {
    e8895d98:	09cca783          	lw	a5,156(s9)
    e8895d9c:	f09796e3          	bne	a5,s1,e8895ca8 <tcp_output+0x98>
    e8895da0:	0b8cb783          	ld	a5,184(s9)
    e8895da4:	f00792e3          	bnez	a5,e8895ca8 <tcp_output+0x98>
    e8895da8:	105cc783          	lbu	a5,261(s9)
    e8895dac:	ee079ee3          	bnez	a5,e8895ca8 <tcp_output+0x98>
      pcb->persist_cnt = 0;
    e8895db0:	10000793          	li	a5,256
    e8895db4:	10fc9223          	sh	a5,260(s9)
      pcb->persist_probe = 0;
    e8895db8:	100c8323          	sb	zero,262(s9)
    e8895dbc:	b5f5                	j	e8895ca8 <tcp_output+0x98>
  if (ip_addr_isany(&pcb->local_ip)) {
    e8895dbe:	000ca783          	lw	a5,0(s9)
    e8895dc2:	0017b793          	seqz	a5,a5
    e8895dc6:	b79d                	j	e8895d2c <tcp_output+0x11c>
    const ip_addr_t *local_ip = ip_netif_get_local_ip(netif, &pcb->remote_ip);
    e8895dc8:	00898513          	addi	a0,s3,8
    if (local_ip == NULL) {
    e8895dcc:	bfa5                	j	e8895d44 <tcp_output+0x134>
    ip_addr_copy(pcb->local_ip, *local_ip);
    e8895dce:	411c                	lw	a5,0(a0)
    e8895dd0:	000ca223          	sw	zero,4(s9)
    e8895dd4:	000cb423          	sd	zero,8(s9)
    e8895dd8:	00fca023          	sw	a5,0(s9)
    e8895ddc:	000c8823          	sb	zero,16(s9)
    e8895de0:	bf49                	j	e8895d72 <tcp_output+0x162>
  useg = pcb->unacked;
    e8895de2:	0b8cb903          	ld	s2,184(s9)
  pcb->persist_backoff = 0;
    e8895de6:	100c82a3          	sb	zero,261(s9)
  if (useg != NULL) {
    e8895dea:	02091563          	bnez	s2,e8895e14 <tcp_output+0x204>
  opts[0] = PP_HTONL(0x01030300 | TCP_RCV_SCALE);
    e8895dee:	01030bb7          	lui	s7,0x1030
    e8895df2:	301b879b          	addiw	a5,s7,769
    seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd)));
    e8895df6:	6ac1                	lui	s5,0x10
    e8895df8:	ffea8b93          	addi	s7,s5,-2 # fffe <memcmp-0xe87f0002>
    LWIP_ASSERT("RST not expected here!",
    e8895dfc:	0003ca17          	auipc	s4,0x3c
    e8895e00:	2e4a0a13          	addi	s4,s4,740 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8895e04:	00050b17          	auipc	s6,0x50
    e8895e08:	64cb0b13          	addi	s6,s6,1612 # e88e6450 <lwip_stats>
  opts[0] = PP_HTONL(0x01030300 | TCP_RCV_SCALE);
    e8895e0c:	c63e                	sw	a5,12(sp)
    seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd)));
    e8895e0e:	1afd                	addi	s5,s5,-1
    e8895e10:	a93d                	j	e889624e <tcp_output+0x63e>
    e8895e12:	893e                	mv	s2,a5
    for (; useg->next != NULL; useg = useg->next);
    e8895e14:	00093783          	ld	a5,0(s2)
    e8895e18:	ffed                	bnez	a5,e8895e12 <tcp_output+0x202>
    e8895e1a:	bfd1                	j	e8895dee <tcp_output+0x1de>
    if (pcb->state != SYN_SENT) {
    e8895e1c:	048cc703          	lbu	a4,72(s9)
    e8895e20:	4789                	li	a5,2
    e8895e22:	00f70f63          	beq	a4,a5,e8895e40 <tcp_output+0x230>
      TCPH_SET_FLAG(seg->tcphdr, TCP_ACK);
    e8895e26:	018db783          	ld	a5,24(s11)
    e8895e2a:	4541                	li	a0,16
    e8895e2c:	00c7dc03          	lhu	s8,12(a5)
    e8895e30:	8eef10ef          	jal	ra,e8886f1e <lwip_htons>
    e8895e34:	018db783          	ld	a5,24(s11)
    e8895e38:	00ac6533          	or	a0,s8,a0
    e8895e3c:	00a79623          	sh	a0,12(a5)
  LWIP_ASSERT("tcp_output_segment: invalid pcb", pcb != NULL);
    e8895e40:	020c9563          	bnez	s9,e8895e6a <tcp_output+0x25a>
    e8895e44:	02f00593          	li	a1,47
    e8895e48:	8552                	mv	a0,s4
    e8895e4a:	d2ee60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895e4e:	00150693          	addi	a3,a0,1
    e8895e52:	5b900613          	li	a2,1465
    e8895e56:	0003c597          	auipc	a1,0x3c
    e8895e5a:	12258593          	addi	a1,a1,290 # e88d1f78 <tcp_persist_backoff+0xa08>
    e8895e5e:	00039517          	auipc	a0,0x39
    e8895e62:	25250513          	addi	a0,a0,594 # e88cf0b0 <kSinTable1024+0x900>
    e8895e66:	c60e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (tcp_output_segment_busy(seg)) {
    e8895e6a:	856e                	mv	a0,s11
    e8895e6c:	a69fe0ef          	jal	ra,e88948d4 <tcp_output_segment_busy>
    e8895e70:	8c2a                	mv	s8,a0
    e8895e72:	2e051963          	bnez	a0,e8896164 <tcp_output+0x554>
  seg->tcphdr->ackno = lwip_htonl(pcb->rcv_nxt);
    e8895e76:	058ca503          	lw	a0,88(s9)
    e8895e7a:	018dbd03          	ld	s10,24(s11)
    e8895e7e:	8b0f10ef          	jal	ra,e8886f2e <lwip_htonl>
    e8895e82:	00ad2423          	sw	a0,8(s10)
  if (seg->flags & TF_SEG_OPTS_WND_SCALE) {
    e8895e86:	015dc783          	lbu	a5,21(s11)
    e8895e8a:	018dbd03          	ld	s10,24(s11)
    e8895e8e:	8ba1                	andi	a5,a5,8
    e8895e90:	28078d63          	beqz	a5,e889612a <tcp_output+0x51a>
    seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(pcb->rcv_ann_wnd));
    e8895e94:	060ca503          	lw	a0,96(s9)
    seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd)));
    e8895e98:	00abb7b3          	sltu	a5,s7,a0
    e8895e9c:	42fa950b          	mvnez	a0,s5,a5
    e8895ea0:	3c05350b          	extu	a0,a0,15,0
    e8895ea4:	87af10ef          	jal	ra,e8886f1e <lwip_htons>
    e8895ea8:	00ad1723          	sh	a0,14(s10)
  pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd;
    e8895eac:	058ca783          	lw	a5,88(s9)
    e8895eb0:	060ca703          	lw	a4,96(s9)
    e8895eb4:	9fb9                	addw	a5,a5,a4
    e8895eb6:	06fca223          	sw	a5,100(s9)
  if (seg->flags & TF_SEG_OPTS_MSS) {
    e8895eba:	015dc783          	lbu	a5,21(s11)
  opts = (u32_t *)(void *)(seg->tcphdr + 1);
    e8895ebe:	018dbd03          	ld	s10,24(s11)
  if (seg->flags & TF_SEG_OPTS_MSS) {
    e8895ec2:	8b85                	andi	a5,a5,1
    e8895ec4:	26079a63          	bnez	a5,e8896138 <tcp_output+0x528>
  opts = (u32_t *)(void *)(seg->tcphdr + 1);
    e8895ec8:	0d51                	addi	s10,s10,20
  if (seg->flags & TF_SEG_OPTS_WND_SCALE) {
    e8895eca:	015dc783          	lbu	a5,21(s11)
    e8895ece:	8ba1                	andi	a5,a5,8
    e8895ed0:	cb8d                	beqz	a5,e8895f02 <tcp_output+0x2f2>
  LWIP_ASSERT("tcp_build_wnd_scale_option: invalid opts", opts != NULL);
    e8895ed2:	020d1563          	bnez	s10,e8895efc <tcp_output+0x2ec>
    e8895ed6:	02f00593          	li	a1,47
    e8895eda:	8552                	mv	a0,s4
    e8895edc:	c9ce60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895ee0:	00150693          	addi	a3,a0,1
    e8895ee4:	4c500613          	li	a2,1221
    e8895ee8:	0003c597          	auipc	a1,0x3c
    e8895eec:	0b058593          	addi	a1,a1,176 # e88d1f98 <tcp_persist_backoff+0xa28>
    e8895ef0:	00039517          	auipc	a0,0x39
    e8895ef4:	1c050513          	addi	a0,a0,448 # e88cf0b0 <kSinTable1024+0x900>
    e8895ef8:	bcee60ef          	jal	ra,e887c2c6 <eLIBs_printf>
  opts[0] = PP_HTONL(0x01030300 | TCP_RCV_SCALE);
    e8895efc:	47b2                	lw	a5,12(sp)
    e8895efe:	584d578b          	swia	a5,(s10),4,0
  if (pcb->rtime < 0) {
    e8895f02:	068c9783          	lh	a5,104(s9)
    e8895f06:	0007d463          	bgez	a5,e8895f0e <tcp_output+0x2fe>
    pcb->rtime = 0;
    e8895f0a:	060c9423          	sh	zero,104(s9)
  if (pcb->rttest == 0) {
    e8895f0e:	06cca783          	lw	a5,108(s9)
    e8895f12:	ef99                	bnez	a5,e8895f30 <tcp_output+0x320>
    pcb->rttest = tcp_ticks;
    e8895f14:	00050797          	auipc	a5,0x50
    e8895f18:	77478793          	addi	a5,a5,1908 # e88e6688 <tcp_ticks>
    e8895f1c:	439c                	lw	a5,0(a5)
    e8895f1e:	06fca623          	sw	a5,108(s9)
    pcb->rtseq = lwip_ntohl(seg->tcphdr->seqno);
    e8895f22:	018db783          	ld	a5,24(s11)
    e8895f26:	43c8                	lw	a0,4(a5)
    e8895f28:	806f10ef          	jal	ra,e8886f2e <lwip_htonl>
    e8895f2c:	06aca823          	sw	a0,112(s9)
  len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload);
    e8895f30:	008db703          	ld	a4,8(s11)
    e8895f34:	018db783          	ld	a5,24(s11)
    e8895f38:	6718                	ld	a4,8(a4)
    e8895f3a:	8f99                	sub	a5,a5,a4
    e8895f3c:	3c07b78b          	extu	a5,a5,15,0
  if (len == 0) {
    e8895f40:	e791                	bnez	a5,e8895f4c <tcp_output+0x33c>
    MIB2_STATS_INC(mib2.tcpoutsegs);
    e8895f42:	1a4b2703          	lw	a4,420(s6)
    e8895f46:	2705                	addiw	a4,a4,1
    e8895f48:	1aeb2223          	sw	a4,420(s6)
  seg->p->len -= len;
    e8895f4c:	008db683          	ld	a3,8(s11)
    e8895f50:	0126d703          	lhu	a4,18(a3)
    e8895f54:	9f1d                	subw	a4,a4,a5
    e8895f56:	00e69923          	sh	a4,18(a3)
  seg->p->tot_len -= len;
    e8895f5a:	008db683          	ld	a3,8(s11)
    e8895f5e:	0106d703          	lhu	a4,16(a3)
    e8895f62:	40f707bb          	subw	a5,a4,a5
    e8895f66:	00f69823          	sh	a5,16(a3)
  seg->p->payload = seg->tcphdr;
    e8895f6a:	008db703          	ld	a4,8(s11)
    e8895f6e:	018db783          	ld	a5,24(s11)
    e8895f72:	e71c                	sd	a5,8(a4)
  seg->tcphdr->chksum = 0;
    e8895f74:	00079823          	sh	zero,16(a5)
  LWIP_ASSERT("options not filled", (u8_t *)opts == ((u8_t *)(seg->tcphdr + 1)) + LWIP_TCP_OPT_LENGTH_SEGMENT(seg->flags, pcb));
    e8895f78:	015dc703          	lbu	a4,21(s11)
    e8895f7c:	00271793          	slli	a5,a4,0x2
    e8895f80:	4017571b          	sraiw	a4,a4,0x1
    e8895f84:	8b11                	andi	a4,a4,4
    e8895f86:	8b91                	andi	a5,a5,4
    e8895f88:	07d1                	addi	a5,a5,20
    e8895f8a:	97ba                	add	a5,a5,a4
    e8895f8c:	018db703          	ld	a4,24(s11)
    e8895f90:	97ba                	add	a5,a5,a4
    e8895f92:	02fd0563          	beq	s10,a5,e8895fbc <tcp_output+0x3ac>
    e8895f96:	02f00593          	li	a1,47
    e8895f9a:	8552                	mv	a0,s4
    e8895f9c:	bdce60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8895fa0:	00150693          	addi	a3,a0,1
    e8895fa4:	61c00613          	li	a2,1564
    e8895fa8:	0003c597          	auipc	a1,0x3c
    e8895fac:	02058593          	addi	a1,a1,32 # e88d1fc8 <tcp_persist_backoff+0xa58>
    e8895fb0:	00039517          	auipc	a0,0x39
    e8895fb4:	10050513          	addi	a0,a0,256 # e88cf0b0 <kSinTable1024+0x900>
    e8895fb8:	b0ee60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    u16_t chksum_slow = ip_chksum_pseudo(seg->p, IP_PROTO_TCP,
    e8895fbc:	008db503          	ld	a0,8(s11)
    e8895fc0:	8722                	mv	a4,s0
    e8895fc2:	86e6                	mv	a3,s9
    e8895fc4:	01055603          	lhu	a2,16(a0)
    e8895fc8:	4599                	li	a1,6
    e8895fca:	885f10ef          	jal	ra,e888784e <ip_chksum_pseudo>
    e8895fce:	8d2a                	mv	s10,a0
    if ((seg->flags & TF_SEG_DATA_CHECKSUMMED) == 0) {
    e8895fd0:	015dc783          	lbu	a5,21(s11)
    e8895fd4:	8b91                	andi	a5,a5,4
    e8895fd6:	e7b1                	bnez	a5,e8896022 <tcp_output+0x412>
      LWIP_ASSERT("data included but not checksummed",
    e8895fd8:	008db783          	ld	a5,8(s11)
    e8895fdc:	018db703          	ld	a4,24(s11)
    e8895fe0:	0107d783          	lhu	a5,16(a5)
    e8895fe4:	00c75503          	lhu	a0,12(a4)
    e8895fe8:	e83e                	sd	a5,16(sp)
    e8895fea:	f35f00ef          	jal	ra,e8886f1e <lwip_htons>
    e8895fee:	00a5551b          	srliw	a0,a0,0xa
    e8895ff2:	67c2                	ld	a5,16(sp)
    e8895ff4:	0fc57513          	andi	a0,a0,252
    e8895ff8:	02f50563          	beq	a0,a5,e8896022 <tcp_output+0x412>
    e8895ffc:	02f00593          	li	a1,47
    e8896000:	8552                	mv	a0,s4
    e8896002:	b76e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896006:	00150693          	addi	a3,a0,1
    e889600a:	62800613          	li	a2,1576
    e889600e:	0003c597          	auipc	a1,0x3c
    e8896012:	fd258593          	addi	a1,a1,-46 # e88d1fe0 <tcp_persist_backoff+0xa70>
    e8896016:	00039517          	auipc	a0,0x39
    e889601a:	09a50513          	addi	a0,a0,154 # e88cf0b0 <kSinTable1024+0x900>
    e889601e:	aa8e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    acc = ip_chksum_pseudo_partial(seg->p, IP_PROTO_TCP,
    e8896022:	008db803          	ld	a6,8(s11)
                                   seg->p->tot_len, TCPH_HDRLEN_BYTES(seg->tcphdr), &pcb->local_ip, &pcb->remote_ip);
    e8896026:	018db783          	ld	a5,24(s11)
    acc = ip_chksum_pseudo_partial(seg->p, IP_PROTO_TCP,
    e889602a:	01085603          	lhu	a2,16(a6)
                                   seg->p->tot_len, TCPH_HDRLEN_BYTES(seg->tcphdr), &pcb->local_ip, &pcb->remote_ip);
    e889602e:	00c7d503          	lhu	a0,12(a5)
    acc = ip_chksum_pseudo_partial(seg->p, IP_PROTO_TCP,
    e8896032:	ec42                	sd	a6,24(sp)
    e8896034:	e832                	sd	a2,16(sp)
                                   seg->p->tot_len, TCPH_HDRLEN_BYTES(seg->tcphdr), &pcb->local_ip, &pcb->remote_ip);
    e8896036:	ee9f00ef          	jal	ra,e8886f1e <lwip_htons>
    e889603a:	00c5569b          	srliw	a3,a0,0xc
    acc = ip_chksum_pseudo_partial(seg->p, IP_PROTO_TCP,
    e889603e:	6862                	ld	a6,24(sp)
    e8896040:	6642                	ld	a2,16(sp)
                                   seg->p->tot_len, TCPH_HDRLEN_BYTES(seg->tcphdr), &pcb->local_ip, &pcb->remote_ip);
    e8896042:	0026969b          	slliw	a3,a3,0x2
    acc = ip_chksum_pseudo_partial(seg->p, IP_PROTO_TCP,
    e8896046:	87a2                	mv	a5,s0
    e8896048:	8766                	mv	a4,s9
    e889604a:	0fc6f693          	andi	a3,a3,252
    e889604e:	4599                	li	a1,6
    e8896050:	8542                	mv	a0,a6
    e8896052:	8a9f10ef          	jal	ra,e88878fa <ip_chksum_pseudo_partial>
    if (seg->chksum_swapped) {
    e8896056:	014dc783          	lbu	a5,20(s11)
    e889605a:	cf89                	beqz	a5,e8896074 <tcp_output+0x464>
      seg->chksum = SWAP_BYTES_IN_WORD(seg->chksum);
    e889605c:	012dd783          	lhu	a5,18(s11)
      seg->chksum_swapped = 0;
    e8896060:	000d8a23          	sb	zero,20(s11)
      seg_chksum_was_swapped = 1;
    e8896064:	4c05                	li	s8,1
      seg->chksum = SWAP_BYTES_IN_WORD(seg->chksum);
    e8896066:	00879713          	slli	a4,a5,0x8
    e889606a:	5c87b78b          	extu	a5,a5,23,8
    e889606e:	8fd9                	or	a5,a5,a4
    e8896070:	00fd9923          	sh	a5,18(s11)
    acc = (u16_t)~acc + seg->chksum;
    e8896074:	012dd783          	lhu	a5,18(s11)
    e8896078:	fff54513          	not	a0,a0
    e889607c:	3c05350b          	extu	a0,a0,15,0
    e8896080:	9d3d                	addw	a0,a0,a5
    seg->tcphdr->chksum = (u16_t)~FOLD_U32T(acc);
    e8896082:	018db703          	ld	a4,24(s11)
    e8896086:	0105579b          	srliw	a5,a0,0x10
    e889608a:	9d3d                	addw	a0,a0,a5
    e889608c:	fff54513          	not	a0,a0
    e8896090:	00a71823          	sh	a0,16(a4)
    if (chksum_slow != seg->tcphdr->chksum) {
    e8896094:	018db783          	ld	a5,24(s11)
    e8896098:	0107d703          	lhu	a4,16(a5)
    e889609c:	000d079b          	sext.w	a5,s10
    e88960a0:	02f70963          	beq	a4,a5,e88960d2 <tcp_output+0x4c2>
      TCP_CHECKSUM_ON_COPY_SANITY_CHECK_FAIL(
    e88960a4:	02f00593          	li	a1,47
    e88960a8:	8552                	mv	a0,s4
    e88960aa:	acee60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88960ae:	00150693          	addi	a3,a0,1
    e88960b2:	63a00613          	li	a2,1594
    e88960b6:	0003c597          	auipc	a1,0x3c
    e88960ba:	f5258593          	addi	a1,a1,-174 # e88d2008 <tcp_persist_backoff+0xa98>
    e88960be:	00039517          	auipc	a0,0x39
    e88960c2:	ff250513          	addi	a0,a0,-14 # e88cf0b0 <kSinTable1024+0x900>
    e88960c6:	a00e60ef          	jal	ra,e887c2c6 <eLIBs_printf>
      seg->tcphdr->chksum = chksum_slow;
    e88960ca:	018db783          	ld	a5,24(s11)
    e88960ce:	01a79823          	sh	s10,16(a5)
  TCP_STATS_INC(tcp.xmit);
    e88960d2:	0acb5783          	lhu	a5,172(s6)
  err = ip_output_if(seg->p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl,
    e88960d6:	884e                	mv	a6,s3
  TCP_STATS_INC(tcp.xmit);
    e88960d8:	2785                	addiw	a5,a5,1
    e88960da:	0afb1623          	sh	a5,172(s6)
  err = ip_output_if(seg->p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl,
    e88960de:	008db503          	ld	a0,8(s11)
    e88960e2:	032cc703          	lbu	a4,50(s9)
    e88960e6:	033cc683          	lbu	a3,51(s9)
    e88960ea:	c43d                	beqz	s0,e8896158 <tcp_output+0x548>
    e88960ec:	02ccc603          	lbu	a2,44(s9)
    e88960f0:	4799                	li	a5,6
    e88960f2:	06f61363          	bne	a2,a5,e8896158 <tcp_output+0x548>
    e88960f6:	8622                	mv	a2,s0
    e88960f8:	85e6                	mv	a1,s9
    e88960fa:	d4ff40ef          	jal	ra,e888ae48 <ip6_output_if>
  if (seg_chksum_was_swapped) {
    e88960fe:	000c0e63          	beqz	s8,e889611a <tcp_output+0x50a>
    seg->chksum = SWAP_BYTES_IN_WORD(seg->chksum);
    e8896102:	012dd783          	lhu	a5,18(s11)
    e8896106:	00879713          	slli	a4,a5,0x8
    e889610a:	5c87b78b          	extu	a5,a5,23,8
    e889610e:	8fd9                	or	a5,a5,a4
    e8896110:	00fd9923          	sh	a5,18(s11)
    seg->chksum_swapped = 1;
    e8896114:	4785                	li	a5,1
    e8896116:	00fd8a23          	sb	a5,20(s11)
    if (err != ERR_OK) {
    e889611a:	c529                	beqz	a0,e8896164 <tcp_output+0x554>
      tcp_set_flags(pcb, TF_NAGLEMEMERR);
    e889611c:	04ecd783          	lhu	a5,78(s9)
    e8896120:	0807e793          	ori	a5,a5,128
    e8896124:	04fc9723          	sh	a5,78(s9)
      return err;
    e8896128:	b6e1                	j	e8895cf0 <tcp_output+0xe0>
    seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd)));
    e889612a:	109cc783          	lbu	a5,265(s9)
    e889612e:	060ca503          	lw	a0,96(s9)
    e8896132:	00f5553b          	srlw	a0,a0,a5
    e8896136:	b38d                	j	e8895e98 <tcp_output+0x288>
    mss = tcp_eff_send_mss_netif(TCP_MSS, netif, &pcb->remote_ip);
    e8896138:	8622                	mv	a2,s0
    e889613a:	85ce                	mv	a1,s3
    e889613c:	5a000513          	li	a0,1440
    e8896140:	e9ffa0ef          	jal	ra,e8890fde <tcp_eff_send_mss_netif>
    opts += 1;
    e8896144:	0d61                	addi	s10,s10,24
    *opts = TCP_BUILD_MSS_OPTION(mss);
    e8896146:	020407b7          	lui	a5,0x2040
    e889614a:	8d5d                	or	a0,a0,a5
    e889614c:	2501                	sext.w	a0,a0
    e889614e:	de1f00ef          	jal	ra,e8886f2e <lwip_htonl>
    e8896152:	fead2e23          	sw	a0,-4(s10)
    opts += 1;
    e8896156:	bb95                	j	e8895eca <tcp_output+0x2ba>
  err = ip_output_if(seg->p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl,
    e8896158:	4799                	li	a5,6
    e889615a:	8622                	mv	a2,s0
    e889615c:	85e6                	mv	a1,s9
    e889615e:	c3af30ef          	jal	ra,e8889598 <ip4_output_if>
    e8896162:	bf71                	j	e88960fe <tcp_output+0x4ee>
    pcb->unsent = seg->next;
    e8896164:	000db783          	ld	a5,0(s11)
    if (pcb->state != SYN_SENT) {
    e8896168:	048cc703          	lbu	a4,72(s9)
    pcb->unsent = seg->next;
    e889616c:	0afcb823          	sd	a5,176(s9)
    if (pcb->state != SYN_SENT) {
    e8896170:	4789                	li	a5,2
    e8896172:	00f70763          	beq	a4,a5,e8896180 <tcp_output+0x570>
      tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW);
    e8896176:	04ecd783          	lhu	a5,78(s9)
    e889617a:	9bf1                	andi	a5,a5,-4
    e889617c:	04fc9723          	sh	a5,78(s9)
    snd_nxt = lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg);
    e8896180:	018db783          	ld	a5,24(s11)
    e8896184:	43c8                	lw	a0,4(a5)
    e8896186:	da9f00ef          	jal	ra,e8886f2e <lwip_htonl>
    e889618a:	00050c1b          	sext.w	s8,a0
    e889618e:	018db783          	ld	a5,24(s11)
    e8896192:	010ddd03          	lhu	s10,16(s11)
    e8896196:	00c7d503          	lhu	a0,12(a5) # 204000c <memcmp-0xe67bfff4>
    e889619a:	01ac0c3b          	addw	s8,s8,s10
    e889619e:	d81f00ef          	jal	ra,e8886f1e <lwip_htons>
    e88961a2:	890d                	andi	a0,a0,3
    if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) {
    e88961a4:	08cca783          	lw	a5,140(s9)
    snd_nxt = lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg);
    e88961a8:	00a03533          	snez	a0,a0
    e88961ac:	0185053b          	addw	a0,a0,s8
    if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) {
    e88961b0:	9f89                	subw	a5,a5,a0
    e88961b2:	0007d463          	bgez	a5,e88961ba <tcp_output+0x5aa>
      pcb->snd_nxt = snd_nxt;
    e88961b6:	08aca623          	sw	a0,140(s9)
    if (TCP_TCPLEN(seg) > 0) {
    e88961ba:	018db783          	ld	a5,24(s11)
    e88961be:	010ddc03          	lhu	s8,16(s11)
    e88961c2:	00c7d503          	lhu	a0,12(a5)
    e88961c6:	d59f00ef          	jal	ra,e8886f1e <lwip_htons>
    e88961ca:	890d                	andi	a0,a0,3
    e88961cc:	00a03533          	snez	a0,a0
    e88961d0:	9562                	add	a0,a0,s8
    e88961d2:	12050763          	beqz	a0,e8896300 <tcp_output+0x6f0>
      seg->next = NULL;
    e88961d6:	000db023          	sd	zero,0(s11)
      if (pcb->unacked == NULL) {
    e88961da:	0b8cb783          	ld	a5,184(s9)
    e88961de:	e789                	bnez	a5,e88961e8 <tcp_output+0x5d8>
        pcb->unacked = seg;
    e88961e0:	0bbcbc23          	sd	s11,184(s9)
          useg->next = seg;
    e88961e4:	896e                	mv	s2,s11
    e88961e6:	a085                	j	e8896246 <tcp_output+0x636>
        if (TCP_SEQ_LT(lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(useg->tcphdr->seqno))) {
    e88961e8:	018db783          	ld	a5,24(s11)
    e88961ec:	43c8                	lw	a0,4(a5)
    e88961ee:	d41f00ef          	jal	ra,e8886f2e <lwip_htonl>
    e88961f2:	00050c1b          	sext.w	s8,a0
    e88961f6:	01893783          	ld	a5,24(s2)
    e88961fa:	43c8                	lw	a0,4(a5)
    e88961fc:	d33f00ef          	jal	ra,e8886f2e <lwip_htonl>
    e8896200:	40ac053b          	subw	a0,s8,a0
          struct tcp_seg **cur_seg = &(pcb->unacked);
    e8896204:	0b8c8c13          	addi	s8,s9,184
        if (TCP_SEQ_LT(lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(useg->tcphdr->seqno))) {
    e8896208:	02054663          	bltz	a0,e8896234 <tcp_output+0x624>
          useg->next = seg;
    e889620c:	01b93023          	sd	s11,0(s2)
    e8896210:	bfd1                	j	e88961e4 <tcp_output+0x5d4>
                 TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) {
    e8896212:	6f9c                	ld	a5,24(a5)
    e8896214:	43c8                	lw	a0,4(a5)
    e8896216:	d19f00ef          	jal	ra,e8886f2e <lwip_htonl>
    e889621a:	00050d1b          	sext.w	s10,a0
    e889621e:	018db783          	ld	a5,24(s11)
    e8896222:	43c8                	lw	a0,4(a5)
    e8896224:	d0bf00ef          	jal	ra,e8886f2e <lwip_htonl>
          while (*cur_seg &&
    e8896228:	40ad053b          	subw	a0,s10,a0
    e889622c:	00055763          	bgez	a0,e889623a <tcp_output+0x62a>
            cur_seg = &((*cur_seg)->next );
    e8896230:	000c3c03          	ld	s8,0(s8)
          while (*cur_seg &&
    e8896234:	000c3783          	ld	a5,0(s8)
    e8896238:	ffe9                	bnez	a5,e8896212 <tcp_output+0x602>
          seg->next = (*cur_seg);
    e889623a:	000c3783          	ld	a5,0(s8)
    e889623e:	00fdb023          	sd	a5,0(s11)
          (*cur_seg) = seg;
    e8896242:	01bc3023          	sd	s11,0(s8)
    seg = pcb->unsent;
    e8896246:	0b0cbd83          	ld	s11,176(s9)
  while (seg != NULL &&
    e889624a:	0a0d8163          	beqz	s11,e88962ec <tcp_output+0x6dc>
         lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) {
    e889624e:	018db783          	ld	a5,24(s11)
    e8896252:	43c8                	lw	a0,4(a5)
    e8896254:	cdbf00ef          	jal	ra,e8886f2e <lwip_htonl>
    e8896258:	07cca783          	lw	a5,124(s9)
    e889625c:	9d1d                	subw	a0,a0,a5
    e889625e:	010dd783          	lhu	a5,16(s11)
  while (seg != NULL &&
    e8896262:	9d3d                	addw	a0,a0,a5
    e8896264:	08a4e163          	bltu	s1,a0,e88962e6 <tcp_output+0x6d6>
    LWIP_ASSERT("RST not expected here!",
    e8896268:	018db783          	ld	a5,24(s11)
    e889626c:	00c7d503          	lhu	a0,12(a5)
    e8896270:	caff00ef          	jal	ra,e8886f1e <lwip_htons>
    e8896274:	8911                	andi	a0,a0,4
    e8896276:	c505                	beqz	a0,e889629e <tcp_output+0x68e>
    e8896278:	02f00593          	li	a1,47
    e889627c:	8552                	mv	a0,s4
    e889627e:	8fae60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896282:	00150693          	addi	a3,a0,1
    e8896286:	53700613          	li	a2,1335
    e889628a:	0003c597          	auipc	a1,0x3c
    e889628e:	cd658593          	addi	a1,a1,-810 # e88d1f60 <tcp_persist_backoff+0x9f0>
    e8896292:	00039517          	auipc	a0,0x39
    e8896296:	e1e50513          	addi	a0,a0,-482 # e88cf0b0 <kSinTable1024+0x900>
    e889629a:	82ce60ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if ((tcp_do_output_nagle(pcb) == 0) &&
    e889629e:	0b8cb783          	ld	a5,184(s9)
    e88962a2:	b6078de3          	beqz	a5,e8895e1c <tcp_output+0x20c>
    e88962a6:	04ecd783          	lhu	a5,78(s9)
    e88962aa:	0447f713          	andi	a4,a5,68
    e88962ae:	b60717e3          	bnez	a4,e8895e1c <tcp_output+0x20c>
    e88962b2:	0b0cb703          	ld	a4,176(s9)
    e88962b6:	cb11                	beqz	a4,e88962ca <tcp_output+0x6ba>
    e88962b8:	6314                	ld	a3,0(a4)
    e88962ba:	b60691e3          	bnez	a3,e8895e1c <tcp_output+0x20c>
    e88962be:	01075683          	lhu	a3,16(a4)
    e88962c2:	06acd703          	lhu	a4,106(s9)
    e88962c6:	b4e6fbe3          	bgeu	a3,a4,e8895e1c <tcp_output+0x20c>
    e88962ca:	0a4ca703          	lw	a4,164(s9)
    e88962ce:	b40707e3          	beqz	a4,e8895e1c <tcp_output+0x20c>
    e88962d2:	0a8cd683          	lhu	a3,168(s9)
    e88962d6:	03f00713          	li	a4,63
    e88962da:	b4d761e3          	bltu	a4,a3,e8895e1c <tcp_output+0x20c>
    e88962de:	0a07f793          	andi	a5,a5,160
    e88962e2:	b2079de3          	bnez	a5,e8895e1c <tcp_output+0x20c>
  if (pcb->unsent == NULL) {
    e88962e6:	0b0cb783          	ld	a5,176(s9)
    e88962ea:	e399                	bnez	a5,e88962f0 <tcp_output+0x6e0>
    pcb->unsent_oversize = 0;
    e88962ec:	0a0c9523          	sh	zero,170(s9)
  tcp_clear_flags(pcb, TF_NAGLEMEMERR);
    e88962f0:	04ecd783          	lhu	a5,78(s9)
    e88962f4:	f7f7f793          	andi	a5,a5,-129
    e88962f8:	04fc9723          	sh	a5,78(s9)
    return ERR_OK;
    e88962fc:	4501                	li	a0,0
    e88962fe:	bacd                	j	e8895cf0 <tcp_output+0xe0>
      tcp_seg_free(seg);
    e8896300:	856e                	mv	a0,s11
    e8896302:	a2ffa0ef          	jal	ra,e8890d30 <tcp_seg_free>
    e8896306:	b781                	j	e8896246 <tcp_output+0x636>

00000000e8896308 <tcp_rexmit_rto_commit>:
{
    e8896308:	1141                	addi	sp,sp,-16
    e889630a:	e022                	sd	s0,0(sp)
    e889630c:	e406                	sd	ra,8(sp)
    e889630e:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_rexmit_rto_commit: invalid pcb", pcb != NULL);
    e8896310:	e51d                	bnez	a0,e889633e <tcp_rexmit_rto_commit+0x36>
    e8896312:	02f00593          	li	a1,47
    e8896316:	0003c517          	auipc	a0,0x3c
    e889631a:	dca50513          	addi	a0,a0,-566 # e88d20e0 <tcp_persist_backoff+0xb70>
    e889631e:	85ae60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896322:	00150693          	addi	a3,a0,1
    e8896326:	69800613          	li	a2,1688
    e889632a:	0003c597          	auipc	a1,0x3c
    e889632e:	ebe58593          	addi	a1,a1,-322 # e88d21e8 <tcp_persist_backoff+0xc78>
    e8896332:	00039517          	auipc	a0,0x39
    e8896336:	d7e50513          	addi	a0,a0,-642 # e88cf0b0 <kSinTable1024+0x900>
    e889633a:	f8de50ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (pcb->nrtx < 0xFF) {
    e889633e:	07a44783          	lbu	a5,122(s0)
    e8896342:	0ff00713          	li	a4,255
    e8896346:	00e78563          	beq	a5,a4,e8896350 <tcp_rexmit_rto_commit+0x48>
    ++pcb->nrtx;
    e889634a:	2785                	addiw	a5,a5,1
    e889634c:	06f40d23          	sb	a5,122(s0)
  tcp_output(pcb);
    e8896350:	8522                	mv	a0,s0
}
    e8896352:	6402                	ld	s0,0(sp)
    e8896354:	60a2                	ld	ra,8(sp)
    e8896356:	0141                	addi	sp,sp,16
  tcp_output(pcb);
    e8896358:	8b9ff06f          	j	e8895c10 <tcp_output>

00000000e889635c <tcp_rexmit_rto>:
{
    e889635c:	1141                	addi	sp,sp,-16
    e889635e:	e022                	sd	s0,0(sp)
    e8896360:	e406                	sd	ra,8(sp)
    e8896362:	842a                	mv	s0,a0
  LWIP_ASSERT("tcp_rexmit_rto: invalid pcb", pcb != NULL);
    e8896364:	e51d                	bnez	a0,e8896392 <tcp_rexmit_rto+0x36>
    e8896366:	02f00593          	li	a1,47
    e889636a:	0003c517          	auipc	a0,0x3c
    e889636e:	d7650513          	addi	a0,a0,-650 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8896372:	806e60ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896376:	00150693          	addi	a3,a0,1
    e889637a:	6ad00613          	li	a2,1709
    e889637e:	0003c597          	auipc	a1,0x3c
    e8896382:	e4a58593          	addi	a1,a1,-438 # e88d21c8 <tcp_persist_backoff+0xc58>
    e8896386:	00039517          	auipc	a0,0x39
    e889638a:	d2a50513          	addi	a0,a0,-726 # e88cf0b0 <kSinTable1024+0x900>
    e889638e:	f39e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (tcp_rexmit_rto_prepare(pcb) == ERR_OK) {
    e8896392:	8522                	mv	a0,s0
    e8896394:	cf6ff0ef          	jal	ra,e889588a <tcp_rexmit_rto_prepare>
    e8896398:	e519                	bnez	a0,e88963a6 <tcp_rexmit_rto+0x4a>
    tcp_rexmit_rto_commit(pcb);
    e889639a:	8522                	mv	a0,s0
}
    e889639c:	6402                	ld	s0,0(sp)
    e889639e:	60a2                	ld	ra,8(sp)
    e88963a0:	0141                	addi	sp,sp,16
    tcp_rexmit_rto_commit(pcb);
    e88963a2:	f67ff06f          	j	e8896308 <tcp_rexmit_rto_commit>
}
    e88963a6:	60a2                	ld	ra,8(sp)
    e88963a8:	6402                	ld	s0,0(sp)
    e88963aa:	0141                	addi	sp,sp,16
    e88963ac:	8082                	ret

00000000e88963ae <tcp_keepalive>:
 *
 * @param pcb the tcp_pcb for which to send a keepalive packet
 */
err_t
tcp_keepalive(struct tcp_pcb *pcb)
{
    e88963ae:	1101                	addi	sp,sp,-32
    e88963b0:	e822                	sd	s0,16(sp)
    e88963b2:	ec06                	sd	ra,24(sp)
    e88963b4:	842a                	mv	s0,a0
  err_t err;
  struct pbuf *p;
  u8_t optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb);

  LWIP_ASSERT("tcp_keepalive: invalid pcb", pcb != NULL);
    e88963b6:	e905                	bnez	a0,e88963e6 <tcp_keepalive+0x38>
    e88963b8:	02f00593          	li	a1,47
    e88963bc:	0003c517          	auipc	a0,0x3c
    e88963c0:	d2450513          	addi	a0,a0,-732 # e88d20e0 <tcp_persist_backoff+0xb70>
    e88963c4:	fb5e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88963c8:	00150693          	addi	a3,a0,1
    e88963cc:	6605                	lui	a2,0x1
    e88963ce:	82460613          	addi	a2,a2,-2012 # 824 <memcmp-0xe87ff7dc>
    e88963d2:	0003c597          	auipc	a1,0x3c
    e88963d6:	b2e58593          	addi	a1,a1,-1234 # e88d1f00 <tcp_persist_backoff+0x990>
    e88963da:	00039517          	auipc	a0,0x39
    e88963de:	cd650513          	addi	a0,a0,-810 # e88cf0b0 <kSinTable1024+0x900>
    e88963e2:	ee5e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_DEBUGF(TCP_DEBUG, ("\n"));

  LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %"U32_F"   pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n",
                          tcp_ticks, pcb->tmr, (u16_t)pcb->keep_cnt_sent));

  p = tcp_output_alloc_header(pcb, optlen, 0, lwip_htonl(pcb->snd_nxt - 1));
    e88963e6:	08c42503          	lw	a0,140(s0)
    e88963ea:	357d                	addiw	a0,a0,-1
    e88963ec:	b43f00ef          	jal	ra,e8886f2e <lwip_htonl>
    e88963f0:	0005061b          	sext.w	a2,a0
    e88963f4:	4581                	li	a1,0
    e88963f6:	8522                	mv	a0,s0
    e88963f8:	879fe0ef          	jal	ra,e8894c70 <tcp_output_alloc_header.constprop.3>
  if (p == NULL) {
    e88963fc:	e42a                	sd	a0,8(sp)
    e88963fe:	cd09                	beqz	a0,e8896418 <tcp_keepalive+0x6a>
    LWIP_DEBUGF(TCP_DEBUG,
                ("tcp_keepalive: could not allocate memory for pbuf\n"));
    return ERR_MEM;
  }
  tcp_output_fill_options(pcb, p, 0, optlen);
    e8896400:	8f7fe0ef          	jal	ra,e8894cf6 <tcp_output_fill_options.isra.0.constprop.6>
  err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip);
    e8896404:	01840693          	addi	a3,s0,24
    e8896408:	8622                	mv	a2,s0
    e889640a:	8522                	mv	a0,s0

  LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F" err %d.\n",
                          pcb->snd_nxt - 1, pcb->rcv_nxt, (int)err));
  return err;
}
    e889640c:	6442                	ld	s0,16(sp)
  err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip);
    e889640e:	65a2                	ld	a1,8(sp)
}
    e8896410:	60e2                	ld	ra,24(sp)
    e8896412:	6105                	addi	sp,sp,32
  err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip);
    e8896414:	ec8fe06f          	j	e8894adc <tcp_output_control_segment>
}
    e8896418:	60e2                	ld	ra,24(sp)
    e889641a:	6442                	ld	s0,16(sp)
    e889641c:	557d                	li	a0,-1
    e889641e:	6105                	addi	sp,sp,32
    e8896420:	8082                	ret

00000000e8896422 <tcp_zero_window_probe>:
 *
 * @param pcb the tcp_pcb for which to send a zero-window probe packet
 */
err_t
tcp_zero_window_probe(struct tcp_pcb *pcb)
{
    e8896422:	7179                	addi	sp,sp,-48
    e8896424:	f891540b          	sdd	s0,s1,(sp),0,4
    e8896428:	f406                	sd	ra,40(sp)
    e889642a:	f052                	sd	s4,32(sp)
    e889642c:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8896430:	842a                	mv	s0,a0
  u16_t len;
  u8_t is_fin;
  u32_t snd_nxt;
  u8_t optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb);

  LWIP_ASSERT("tcp_zero_window_probe: invalid pcb", pcb != NULL);
    e8896432:	e905                	bnez	a0,e8896462 <tcp_zero_window_probe+0x40>
    e8896434:	02f00593          	li	a1,47
    e8896438:	0003c517          	auipc	a0,0x3c
    e889643c:	ca850513          	addi	a0,a0,-856 # e88d20e0 <tcp_persist_backoff+0xb70>
    e8896440:	f39e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896444:	00150693          	addi	a3,a0,1
    e8896448:	6605                	lui	a2,0x1
    e889644a:	84f60613          	addi	a2,a2,-1969 # 84f <memcmp-0xe87ff7b1>
    e889644e:	0003c597          	auipc	a1,0x3c
    e8896452:	09a58593          	addi	a1,a1,154 # e88d24e8 <tcp_persist_backoff+0xf78>
    e8896456:	00039517          	auipc	a0,0x39
    e889645a:	c5a50513          	addi	a0,a0,-934 # e88cf0b0 <kSinTable1024+0x900>
    e889645e:	e69e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
              ("tcp_zero_window_probe: tcp_ticks %"U32_F
               "   pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n",
               tcp_ticks, pcb->tmr, (u16_t)pcb->keep_cnt_sent));

  /* Only consider unsent, persist timer should be off when there is data in-flight */
  seg = pcb->unsent;
    e8896462:	7844                	ld	s1,176(s0)
  if (seg == NULL) {
    e8896464:	ccd5                	beqz	s1,e8896520 <tcp_zero_window_probe+0xfe>

  /* increment probe count. NOTE: we record probe even if it fails
     to actually transmit due to an error. This ensures memory exhaustion/
     routing problem doesn't leave a zero-window pcb as an indefinite zombie.
     RTO mechanism has similar behavior, see pcb->nrtx */
  if (pcb->persist_probe < 0xFF) {
    e8896466:	10644783          	lbu	a5,262(s0)
    e889646a:	0ff00713          	li	a4,255
    e889646e:	00e78563          	beq	a5,a4,e8896478 <tcp_zero_window_probe+0x56>
    ++pcb->persist_probe;
    e8896472:	2785                	addiw	a5,a5,1
    e8896474:	10f40323          	sb	a5,262(s0)
  }

  is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0);
    e8896478:	6c9c                	ld	a5,24(s1)
    e889647a:	4901                	li	s2,0
    e889647c:	00c7d503          	lhu	a0,12(a5)
    e8896480:	a9ff00ef          	jal	ra,e8886f1e <lwip_htons>
    e8896484:	8905                	andi	a0,a0,1
    e8896486:	c509                	beqz	a0,e8896490 <tcp_zero_window_probe+0x6e>
    e8896488:	0104d903          	lhu	s2,16(s1)
    e889648c:	00193913          	seqz	s2,s2
  /* we want to send one seqno: either FIN or data (no options) */
  len = is_fin ? 0 : 1;

  p = tcp_output_alloc_header(pcb, optlen, len, seg->tcphdr->seqno);
    e8896490:	6c9c                	ld	a5,24(s1)
    e8896492:	00194593          	xori	a1,s2,1
    e8896496:	8522                	mv	a0,s0
    e8896498:	43d0                	lw	a2,4(a5)
    e889649a:	fd6fe0ef          	jal	ra,e8894c70 <tcp_output_alloc_header.constprop.3>
    e889649e:	89aa                	mv	s3,a0
  if (p == NULL) {
    e88964a0:	c949                	beqz	a0,e8896532 <tcp_zero_window_probe+0x110>
    LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: no memory for pbuf\n"));
    return ERR_MEM;
  }
  tcphdr = (struct tcp_hdr *)p->payload;
    e88964a2:	00853a03          	ld	s4,8(a0)

  if (is_fin) {
    e88964a6:	04090f63          	beqz	s2,e8896504 <tcp_zero_window_probe+0xe2>
    /* FIN segment, no data */
    TCPH_FLAGS_SET(tcphdr, TCP_ACK | TCP_FIN);
    e88964aa:	00ca5903          	lhu	s2,12(s4)
    e88964ae:	7571                	lui	a0,0xffffc
    e88964b0:	0ff50513          	addi	a0,a0,255 # ffffffffffffc0ff <__DRAM0_INF_BASE+0xffffffff0000c0ff>
    e88964b4:	00a97933          	and	s2,s2,a0
    e88964b8:	4545                	li	a0,17
    e88964ba:	a65f00ef          	jal	ra,e8886f1e <lwip_htons>
    e88964be:	3c09290b          	ext	s2,s2,15,0
    e88964c2:	00a96533          	or	a0,s2,a0
    e88964c6:	00aa1623          	sh	a0,12(s4)
       Ensure we copy the first TCP data byte: */
    pbuf_copy_partial(seg->p, d, 1, seg->p->tot_len - seg->len);
  }

  /* The byte may be acknowledged without the window being opened. */
  snd_nxt = lwip_ntohl(seg->tcphdr->seqno) + 1;
    e88964ca:	6c9c                	ld	a5,24(s1)
    e88964cc:	43c8                	lw	a0,4(a5)
    e88964ce:	a61f00ef          	jal	ra,e8886f2e <lwip_htonl>
    e88964d2:	2505                	addiw	a0,a0,1
  if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) {
    e88964d4:	08c42783          	lw	a5,140(s0)
    e88964d8:	9f89                	subw	a5,a5,a0
    e88964da:	0007d463          	bgez	a5,e88964e2 <tcp_zero_window_probe+0xc0>
    pcb->snd_nxt = snd_nxt;
    e88964de:	08a42623          	sw	a0,140(s0)
  }
  tcp_output_fill_options(pcb, p, 0, optlen);
    e88964e2:	854e                	mv	a0,s3
    e88964e4:	813fe0ef          	jal	ra,e8894cf6 <tcp_output_fill_options.isra.0.constprop.6>

  LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F
                          " ackno %"U32_F" err %d.\n",
                          pcb->snd_nxt - 1, pcb->rcv_nxt, (int)err));
  return err;
}
    e88964e8:	7a02                	ld	s4,32(sp)
  err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip);
    e88964ea:	01840693          	addi	a3,s0,24
    e88964ee:	8622                	mv	a2,s0
    e88964f0:	8522                	mv	a0,s0
}
    e88964f2:	f891440b          	ldd	s0,s1,(sp),0,4
    e88964f6:	70a2                	ld	ra,40(sp)
  err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip);
    e88964f8:	85ce                	mv	a1,s3
}
    e88964fa:	fb31490b          	ldd	s2,s3,(sp),1,4
    e88964fe:	6145                	addi	sp,sp,48
  err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip);
    e8896500:	ddcfe06f          	j	e8894adc <tcp_output_control_segment>
    pbuf_copy_partial(seg->p, d, 1, seg->p->tot_len - seg->len);
    e8896504:	6488                	ld	a0,8(s1)
    e8896506:	0104d783          	lhu	a5,16(s1)
    e889650a:	4605                	li	a2,1
    e889650c:	01055683          	lhu	a3,16(a0)
    e8896510:	014a0593          	addi	a1,s4,20
    e8896514:	9e9d                	subw	a3,a3,a5
    e8896516:	3c06b68b          	extu	a3,a3,15,0
    e889651a:	c38f90ef          	jal	ra,e888f952 <pbuf_copy_partial>
    e889651e:	b775                	j	e88964ca <tcp_zero_window_probe+0xa8>
    return ERR_OK;
    e8896520:	4501                	li	a0,0
}
    e8896522:	70a2                	ld	ra,40(sp)
    e8896524:	f891440b          	ldd	s0,s1,(sp),0,4
    e8896528:	7a02                	ld	s4,32(sp)
    e889652a:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889652e:	6145                	addi	sp,sp,48
    e8896530:	8082                	ret
    return ERR_MEM;
    e8896532:	557d                	li	a0,-1
    e8896534:	b7fd                	j	e8896522 <tcp_zero_window_probe+0x100>

00000000e8896536 <sys_timeout_abs>:
#if LWIP_DEBUG_TIMERNAMES
sys_timeout_abs(u32_t abs_time, sys_timeout_handler handler, void *arg, const char *handler_name)
#else /* LWIP_DEBUG_TIMERNAMES */
sys_timeout_abs(u32_t abs_time, sys_timeout_handler handler, void *arg)
#endif
{
    e8896536:	1101                	addi	sp,sp,-32
    e8896538:	e822                	sd	s0,16(sp)
    e889653a:	842a                	mv	s0,a0
  struct sys_timeo *timeout, *t;

  timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT);
    e889653c:	452d                	li	a0,11
{
    e889653e:	e42e                	sd	a1,8(sp)
    e8896540:	e032                	sd	a2,0(sp)
    e8896542:	ec06                	sd	ra,24(sp)
  timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT);
    e8896544:	c09f70ef          	jal	ra,e888e14c <memp_malloc>
  if (timeout == NULL) {
    e8896548:	f8b1460b          	ldd	a2,a1,(sp),0,4
    e889654c:	e915                	bnez	a0,e8896580 <sys_timeout_abs+0x4a>
    LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL);
    e889654e:	02f00593          	li	a1,47
    e8896552:	0003c517          	auipc	a0,0x3c
    e8896556:	0a650513          	addi	a0,a0,166 # e88d25f8 <lwip_cyclic_timers+0xe8>
    e889655a:	e1fe50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
        t->next = timeout;
        break;
      }
    }
  }
}
    e889655e:	6442                	ld	s0,16(sp)
    e8896560:	60e2                	ld	ra,24(sp)
    LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL);
    e8896562:	00150693          	addi	a3,a0,1
    e8896566:	0be00613          	li	a2,190
    e889656a:	0003c597          	auipc	a1,0x3c
    e889656e:	11658593          	addi	a1,a1,278 # e88d2680 <lwip_cyclic_timers+0x170>
    e8896572:	00039517          	auipc	a0,0x39
    e8896576:	b3e50513          	addi	a0,a0,-1218 # e88cf0b0 <kSinTable1024+0x900>
}
    e889657a:	6105                	addi	sp,sp,32
    LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL);
    e889657c:	d4be506f          	j	e887c2c6 <eLIBs_printf>
  if (next_timeout == NULL) {
    e8896580:	00050697          	auipc	a3,0x50
    e8896584:	18868693          	addi	a3,a3,392 # e88e6708 <next_timeout>
  timeout->next = NULL;
    e8896588:	00053023          	sd	zero,0(a0)
  if (next_timeout == NULL) {
    e889658c:	629c                	ld	a5,0(a3)
  timeout->arg = arg;
    e889658e:	fac5558b          	sdd	a1,a2,(a0),1,4
  timeout->time = abs_time;
    e8896592:	c500                	sw	s0,8(a0)
  if (next_timeout == NULL) {
    e8896594:	e791                	bnez	a5,e88965a0 <sys_timeout_abs+0x6a>
    next_timeout = timeout;
    e8896596:	e288                	sd	a0,0(a3)
}
    e8896598:	60e2                	ld	ra,24(sp)
    e889659a:	6442                	ld	s0,16(sp)
    e889659c:	6105                	addi	sp,sp,32
    e889659e:	8082                	ret
  if (TIME_LESS_THAN(timeout->time, next_timeout->time)) {
    e88965a0:	4798                	lw	a4,8(a5)
    e88965a2:	40e4073b          	subw	a4,s0,a4
    e88965a6:	01f7571b          	srliw	a4,a4,0x1f
    e88965aa:	c701                	beqz	a4,e88965b2 <sys_timeout_abs+0x7c>
    timeout->next = next_timeout;
    e88965ac:	e11c                	sd	a5,0(a0)
    e88965ae:	b7e5                	j	e8896596 <sys_timeout_abs+0x60>
    e88965b0:	87b6                	mv	a5,a3
      if ((t->next == NULL) || TIME_LESS_THAN(timeout->time, t->next->time)) {
    e88965b2:	6394                	ld	a3,0(a5)
    e88965b4:	c699                	beqz	a3,e88965c2 <sys_timeout_abs+0x8c>
    e88965b6:	4698                	lw	a4,8(a3)
    e88965b8:	40e4073b          	subw	a4,s0,a4
    e88965bc:	01f7571b          	srliw	a4,a4,0x1f
    e88965c0:	db65                	beqz	a4,e88965b0 <sys_timeout_abs+0x7a>
        timeout->next = t->next;
    e88965c2:	e114                	sd	a3,0(a0)
        t->next = timeout;
    e88965c4:	e388                	sd	a0,0(a5)
        break;
    e88965c6:	bfc9                	j	e8896598 <sys_timeout_abs+0x62>

00000000e88965c8 <lwip_cyclic_timer>:
#if !LWIP_TESTMODE
static
#endif
void
lwip_cyclic_timer(void *arg)
{
    e88965c8:	1101                	addi	sp,sp,-32
    e88965ca:	ec06                	sd	ra,24(sp)
  const struct lwip_cyclic_timer *cyclic = (const struct lwip_cyclic_timer *)arg;

#if LWIP_DEBUG_TIMERNAMES
  LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: %s()\n", cyclic->handler_name));
#endif
  cyclic->handler();
    e88965cc:	651c                	ld	a5,8(a0)
    e88965ce:	e42a                	sd	a0,8(sp)
    e88965d0:	9782                	jalr	a5

  now = sys_now();
    e88965d2:	51e010ef          	jal	ra,e8897af0 <sys_now>
    e88965d6:	0005071b          	sext.w	a4,a0
  next_timeout_time = (u32_t)(current_timeout_due_time + cyclic->interval_ms);  /* overflow handled by TIME_LESS_THAN macro */ 
    e88965da:	6622                	ld	a2,8(sp)
    e88965dc:	00050797          	auipc	a5,0x50
    e88965e0:	12878793          	addi	a5,a5,296 # e88e6704 <current_timeout_due_time>
    e88965e4:	439c                	lw	a5,0(a5)
    e88965e6:	4214                	lw	a3,0(a2)
  if (TIME_LESS_THAN(next_timeout_time, now)) {
    /* timer would immediately expire again -> "overload" -> restart without any correction */
#if LWIP_DEBUG_TIMERNAMES
    sys_timeout_abs((u32_t)(now + cyclic->interval_ms), lwip_cyclic_timer, arg, cyclic->handler_name);
#else
    sys_timeout_abs((u32_t)(now + cyclic->interval_ms), lwip_cyclic_timer, arg);
    e88965e8:	00000597          	auipc	a1,0x0
    e88965ec:	fe058593          	addi	a1,a1,-32 # e88965c8 <lwip_cyclic_timer>
  next_timeout_time = (u32_t)(current_timeout_due_time + cyclic->interval_ms);  /* overflow handled by TIME_LESS_THAN macro */ 
    e88965f0:	00d7853b          	addw	a0,a5,a3
  if (TIME_LESS_THAN(next_timeout_time, now)) {
    e88965f4:	40e507bb          	subw	a5,a0,a4
    e88965f8:	01f7d79b          	srliw	a5,a5,0x1f
    e88965fc:	c399                	beqz	a5,e8896602 <lwip_cyclic_timer+0x3a>
    sys_timeout_abs((u32_t)(now + cyclic->interval_ms), lwip_cyclic_timer, arg);
    e88965fe:	00e6853b          	addw	a0,a3,a4
    sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg, cyclic->handler_name);
#else
    sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg);
#endif
  }
}
    e8896602:	60e2                	ld	ra,24(sp)
    e8896604:	6105                	addi	sp,sp,32
    sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg);
    e8896606:	f31ff06f          	j	e8896536 <sys_timeout_abs>

00000000e889660a <sys_timeout>:
sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char *handler_name)
#else /* LWIP_DEBUG_TIMERNAMES */
void
sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg)
#endif /* LWIP_DEBUG_TIMERNAMES */
{
    e889660a:	1101                	addi	sp,sp,-32
    e889660c:	f891540b          	sdd	s0,s1,(sp),0,4
    e8896610:	e84a                	sd	s2,16(sp)
    e8896612:	ec06                	sd	ra,24(sp)
  u32_t next_timeout_time;

  LWIP_ASSERT_CORE_LOCKED();

  LWIP_ASSERT("Timeout time too long, max is LWIP_UINT32_MAX/4 msecs", msecs <= (LWIP_UINT32_MAX / 4));
    e8896614:	400007b7          	lui	a5,0x40000
{
    e8896618:	842a                	mv	s0,a0
    e889661a:	84ae                	mv	s1,a1
    e889661c:	8932                	mv	s2,a2
  LWIP_ASSERT("Timeout time too long, max is LWIP_UINT32_MAX/4 msecs", msecs <= (LWIP_UINT32_MAX / 4));
    e889661e:	02f56863          	bltu	a0,a5,e889664e <sys_timeout+0x44>
    e8896622:	02f00593          	li	a1,47
    e8896626:	0003c517          	auipc	a0,0x3c
    e889662a:	fd250513          	addi	a0,a0,-46 # e88d25f8 <lwip_cyclic_timers+0xe8>
    e889662e:	d4be50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896632:	00150693          	addi	a3,a0,1
    e8896636:	12900613          	li	a2,297
    e889663a:	0003c597          	auipc	a1,0x3c
    e889663e:	f8658593          	addi	a1,a1,-122 # e88d25c0 <lwip_cyclic_timers+0xb0>
    e8896642:	00039517          	auipc	a0,0x39
    e8896646:	a6e50513          	addi	a0,a0,-1426 # e88cf0b0 <kSinTable1024+0x900>
    e889664a:	c7de50ef          	jal	ra,e887c2c6 <eLIBs_printf>

  next_timeout_time = (u32_t)(sys_now() + msecs); /* overflow handled by TIME_LESS_THAN macro */ 
    e889664e:	4a2010ef          	jal	ra,e8897af0 <sys_now>

#if LWIP_DEBUG_TIMERNAMES
  sys_timeout_abs(next_timeout_time, handler, arg, handler_name);
#else
  sys_timeout_abs(next_timeout_time, handler, arg);
    e8896652:	9d21                	addw	a0,a0,s0
    e8896654:	85a6                	mv	a1,s1
#endif
}
    e8896656:	f891440b          	ldd	s0,s1,(sp),0,4
    e889665a:	60e2                	ld	ra,24(sp)
  sys_timeout_abs(next_timeout_time, handler, arg);
    e889665c:	864a                	mv	a2,s2
}
    e889665e:	6942                	ld	s2,16(sp)
    e8896660:	6105                	addi	sp,sp,32
  sys_timeout_abs(next_timeout_time, handler, arg);
    e8896662:	ed5ff06f          	j	e8896536 <sys_timeout_abs>

00000000e8896666 <tcp_timer_needed>:
  if (!tcpip_tcp_timer_active && (tcp_active_pcbs || tcp_tw_pcbs)) {
    e8896666:	00050797          	auipc	a5,0x50
    e889666a:	0aa78793          	addi	a5,a5,170 # e88e6710 <tcpip_tcp_timer_active>
    e889666e:	4398                	lw	a4,0(a5)
    e8896670:	eb05                	bnez	a4,e88966a0 <tcp_timer_needed+0x3a>
    e8896672:	00050717          	auipc	a4,0x50
    e8896676:	ff670713          	addi	a4,a4,-10 # e88e6668 <tcp_active_pcbs>
    e889667a:	6318                	ld	a4,0(a4)
    e889667c:	e719                	bnez	a4,e889668a <tcp_timer_needed+0x24>
    e889667e:	00050717          	auipc	a4,0x50
    e8896682:	01270713          	addi	a4,a4,18 # e88e6690 <tcp_tw_pcbs>
    e8896686:	6318                	ld	a4,0(a4)
    e8896688:	cf01                	beqz	a4,e88966a0 <tcp_timer_needed+0x3a>
    tcpip_tcp_timer_active = 1;
    e889668a:	4705                	li	a4,1
    sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL);
    e889668c:	4601                	li	a2,0
    e889668e:	00000597          	auipc	a1,0x0
    e8896692:	01458593          	addi	a1,a1,20 # e88966a2 <tcpip_tcp_timer>
    e8896696:	0fa00513          	li	a0,250
    tcpip_tcp_timer_active = 1;
    e889669a:	c398                	sw	a4,0(a5)
    sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL);
    e889669c:	f6fff06f          	j	e889660a <sys_timeout>
}
    e88966a0:	8082                	ret

00000000e88966a2 <tcpip_tcp_timer>:
{
    e88966a2:	1141                	addi	sp,sp,-16
    e88966a4:	e406                	sd	ra,8(sp)
  tcp_tmr();
    e88966a6:	822fc0ef          	jal	ra,e88926c8 <tcp_tmr>
  if (tcp_active_pcbs || tcp_tw_pcbs) {
    e88966aa:	00050797          	auipc	a5,0x50
    e88966ae:	fbe78793          	addi	a5,a5,-66 # e88e6668 <tcp_active_pcbs>
    e88966b2:	639c                	ld	a5,0(a5)
    e88966b4:	e799                	bnez	a5,e88966c2 <tcpip_tcp_timer+0x20>
    e88966b6:	00050797          	auipc	a5,0x50
    e88966ba:	fda78793          	addi	a5,a5,-38 # e88e6690 <tcp_tw_pcbs>
    e88966be:	639c                	ld	a5,0(a5)
    e88966c0:	cf81                	beqz	a5,e88966d8 <tcpip_tcp_timer+0x36>
}
    e88966c2:	60a2                	ld	ra,8(sp)
    sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL);
    e88966c4:	4601                	li	a2,0
    e88966c6:	00000597          	auipc	a1,0x0
    e88966ca:	fdc58593          	addi	a1,a1,-36 # e88966a2 <tcpip_tcp_timer>
    e88966ce:	0fa00513          	li	a0,250
}
    e88966d2:	0141                	addi	sp,sp,16
    sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL);
    e88966d4:	f37ff06f          	j	e889660a <sys_timeout>
}
    e88966d8:	60a2                	ld	ra,8(sp)
    tcpip_tcp_timer_active = 0;
    e88966da:	00050797          	auipc	a5,0x50
    e88966de:	0207ab23          	sw	zero,54(a5) # e88e6710 <tcpip_tcp_timer_active>
}
    e88966e2:	0141                	addi	sp,sp,16
    e88966e4:	8082                	ret

00000000e88966e6 <sys_timeouts_init>:
{
    e88966e6:	1101                	addi	sp,sp,-32
    e88966e8:	f891540b          	sdd	s0,s1,(sp),0,4
    e88966ec:	e84a                	sd	s2,16(sp)
    e88966ee:	ec06                	sd	ra,24(sp)
    e88966f0:	0003c417          	auipc	s0,0x3c
    e88966f4:	e3040413          	addi	s0,s0,-464 # e88d2520 <lwip_cyclic_timers+0x10>
    e88966f8:	0003c497          	auipc	s1,0x3c
    e88966fc:	ec848493          	addi	s1,s1,-312 # e88d25c0 <lwip_cyclic_timers+0xb0>
    sys_timeout(lwip_cyclic_timers[i].interval_ms, lwip_cyclic_timer, LWIP_CONST_CAST(void *, &lwip_cyclic_timers[i]));
    e8896700:	00000917          	auipc	s2,0x0
    e8896704:	ec890913          	addi	s2,s2,-312 # e88965c8 <lwip_cyclic_timer>
    e8896708:	4008                	lw	a0,0(s0)
    e889670a:	8622                	mv	a2,s0
    e889670c:	85ca                	mv	a1,s2
    e889670e:	0441                	addi	s0,s0,16
    e8896710:	efbff0ef          	jal	ra,e889660a <sys_timeout>
  for (i = (LWIP_TCP ? 1 : 0); i < LWIP_ARRAYSIZE(lwip_cyclic_timers); i++) {
    e8896714:	fe941ae3          	bne	s0,s1,e8896708 <sys_timeouts_init+0x22>
}
    e8896718:	60e2                	ld	ra,24(sp)
    e889671a:	f891440b          	ldd	s0,s1,(sp),0,4
    e889671e:	6942                	ld	s2,16(sp)
    e8896720:	6105                	addi	sp,sp,32
    e8896722:	8082                	ret

00000000e8896724 <sys_check_timeouts>:
 *
 * Must be called periodically from your main loop.
 */
void
sys_check_timeouts(void)
{
    e8896724:	7179                	addi	sp,sp,-48
    e8896726:	f052                	sd	s4,32(sp)
    e8896728:	f891540b          	sdd	s0,s1,(sp),0,4
    e889672c:	fb31590b          	sdd	s2,s3,(sp),1,4
    e8896730:	f406                	sd	ra,40(sp)
  u32_t now;

  LWIP_ASSERT_CORE_LOCKED();

  /* Process only timers expired at the start of the function. */
  now = sys_now();
    e8896732:	3be010ef          	jal	ra,e8897af0 <sys_now>
    e8896736:	0005099b          	sext.w	s3,a0
    sys_timeout_handler handler;
    void *arg;

    PBUF_CHECK_FREE_OOSEQ();

    tmptimeout = next_timeout;
    e889673a:	00050497          	auipc	s1,0x50
    e889673e:	fce48493          	addi	s1,s1,-50 # e88e6708 <next_timeout>

    /* Timeout has expired */
    next_timeout = tmptimeout->next;
    handler = tmptimeout->h;
    arg = tmptimeout->arg;
    current_timeout_due_time = tmptimeout->time;
    e8896742:	00050a17          	auipc	s4,0x50
    e8896746:	fc2a0a13          	addi	s4,s4,-62 # e88e6704 <current_timeout_due_time>
    tmptimeout = next_timeout;
    e889674a:	608c                	ld	a1,0(s1)
    if (tmptimeout == NULL) {
    e889674c:	c585                	beqz	a1,e8896774 <sys_check_timeouts+0x50>
    if (TIME_LESS_THAN(now, tmptimeout->time)) {
    e889674e:	4598                	lw	a4,8(a1)
    e8896750:	40e987bb          	subw	a5,s3,a4
    e8896754:	01f7d79b          	srliw	a5,a5,0x1f
    e8896758:	ef91                	bnez	a5,e8896774 <sys_check_timeouts+0x50>
    next_timeout = tmptimeout->next;
    e889675a:	619c                	ld	a5,0(a1)
    arg = tmptimeout->arg;
    e889675c:	fb25c40b          	ldd	s0,s2,(a1),1,4
    if (handler != NULL) {
      LWIP_DEBUGF(TIMERS_DEBUG, ("sct calling h=%s t=%"U32_F" arg=%p\n",
                                 tmptimeout->handler_name, sys_now() - tmptimeout->time, arg));
    }
#endif /* LWIP_DEBUG_TIMERNAMES */
    memp_free(MEMP_SYS_TIMEOUT, tmptimeout);
    e8896760:	452d                	li	a0,11
    next_timeout = tmptimeout->next;
    e8896762:	e09c                	sd	a5,0(s1)
    current_timeout_due_time = tmptimeout->time;
    e8896764:	00ea2023          	sw	a4,0(s4)
    memp_free(MEMP_SYS_TIMEOUT, tmptimeout);
    e8896768:	a37f70ef          	jal	ra,e888e19e <memp_free>
    if (handler != NULL) {
    e889676c:	dc79                	beqz	s0,e889674a <sys_check_timeouts+0x26>
      handler(arg);
    e889676e:	854a                	mv	a0,s2
    e8896770:	9402                	jalr	s0
    e8896772:	bfe1                	j	e889674a <sys_check_timeouts+0x26>
    }
    LWIP_TCPIP_THREAD_ALIVE();

    /* Repeat until all expired timers have been called */
  } while (1);
}
    e8896774:	70a2                	ld	ra,40(sp)
    e8896776:	f891440b          	ldd	s0,s1,(sp),0,4
    e889677a:	7a02                	ld	s4,32(sp)
    e889677c:	fb31490b          	ldd	s2,s3,(sp),1,4
    e8896780:	6145                	addi	sp,sp,48
    e8896782:	8082                	ret

00000000e8896784 <sys_timeouts_sleeptime>:
/** Return the time left before the next timeout is due. If no timeouts are
 * enqueued, returns 0xffffffff
 */
u32_t
sys_timeouts_sleeptime(void)
{
    e8896784:	1141                	addi	sp,sp,-16
    e8896786:	e022                	sd	s0,0(sp)
  u32_t now;

  LWIP_ASSERT_CORE_LOCKED();

  if (next_timeout == NULL) {
    e8896788:	00050417          	auipc	s0,0x50
    e889678c:	f8040413          	addi	s0,s0,-128 # e88e6708 <next_timeout>
    e8896790:	601c                	ld	a5,0(s0)
{
    e8896792:	e406                	sd	ra,8(sp)
    return SYS_TIMEOUTS_SLEEPTIME_INFINITE;
    e8896794:	557d                	li	a0,-1
  if (next_timeout == NULL) {
    e8896796:	cb99                	beqz	a5,e88967ac <sys_timeouts_sleeptime+0x28>
  }
  now = sys_now();
    e8896798:	358010ef          	jal	ra,e8897af0 <sys_now>
  if (TIME_LESS_THAN(next_timeout->time, now)) {
    e889679c:	601c                	ld	a5,0(s0)
    e889679e:	479c                	lw	a5,8(a5)
    e88967a0:	40a7853b          	subw	a0,a5,a0
    e88967a4:	01f5579b          	srliw	a5,a0,0x1f
    e88967a8:	c391                	beqz	a5,e88967ac <sys_timeouts_sleeptime+0x28>
    return 0;
    e88967aa:	4501                	li	a0,0
  } else {
    u32_t ret = (u32_t)(next_timeout->time - now);
    LWIP_ASSERT("invalid sleeptime", ret <= LWIP_MAX_TIMEOUT);
    return ret;
  }
}
    e88967ac:	60a2                	ld	ra,8(sp)
    e88967ae:	6402                	ld	s0,0(sp)
    e88967b0:	0141                	addi	sp,sp,16
    e88967b2:	8082                	ret

00000000e88967b4 <udp_init>:
 */
void
udp_init(void)
{
#ifdef LWIP_RAND
  udp_port = UDP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND());
    e88967b4:	80000537          	lui	a0,0x80000
{
    e88967b8:	1141                	addi	sp,sp,-16
  udp_port = UDP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND());
    e88967ba:	fff54513          	not	a0,a0
{
    e88967be:	e406                	sd	ra,8(sp)
  udp_port = UDP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND());
    e88967c0:	b33e50ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e88967c4:	3405350b          	extu	a0,a0,13,0
    e88967c8:	77f1                	lui	a5,0xffffc
#endif /* LWIP_RAND */
}
    e88967ca:	60a2                	ld	ra,8(sp)
  udp_port = UDP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND());
    e88967cc:	9d3d                	addw	a0,a0,a5
    e88967ce:	0003f797          	auipc	a5,0x3f
    e88967d2:	daa79e23          	sh	a0,-580(a5) # e88d558a <udp_port>
}
    e88967d6:	0141                	addi	sp,sp,16
    e88967d8:	8082                	ret

00000000e88967da <udp_input>:
 * @param inp network interface on which the datagram was received.
 *
 */
void
udp_input(struct pbuf *p, struct netif *inp)
{
    e88967da:	7175                	addi	sp,sp,-144
    e88967dc:	f4ce                	sd	s3,104(sp)
    e88967de:	e0e2                	sd	s8,64(sp)
    e88967e0:	e506                	sd	ra,136(sp)
    e88967e2:	e122                	sd	s0,128(sp)
    e88967e4:	fca6                	sd	s1,120(sp)
    e88967e6:	f8ca                	sd	s2,112(sp)
    e88967e8:	f0d2                	sd	s4,96(sp)
    e88967ea:	ecd6                	sd	s5,88(sp)
    e88967ec:	e8da                	sd	s6,80(sp)
    e88967ee:	e4de                	sd	s7,72(sp)
    e88967f0:	fc66                	sd	s9,56(sp)
    e88967f2:	f86a                	sd	s10,48(sp)
    e88967f4:	f46e                	sd	s11,40(sp)
    e88967f6:	89aa                	mv	s3,a0
    e88967f8:	8c2e                	mv	s8,a1

  LWIP_UNUSED_ARG(inp);

  LWIP_ASSERT_CORE_LOCKED();

  LWIP_ASSERT("udp_input: invalid pbuf", p != NULL);
    e88967fa:	e51d                	bnez	a0,e8896828 <udp_input+0x4e>
    e88967fc:	02f00593          	li	a1,47
    e8896800:	0003c517          	auipc	a0,0x3c
    e8896804:	f3850513          	addi	a0,a0,-200 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896808:	b71e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889680c:	00150693          	addi	a3,a0,1
    e8896810:	0cf00613          	li	a2,207
    e8896814:	0003c597          	auipc	a1,0x3c
    e8896818:	fac58593          	addi	a1,a1,-84 # e88d27c0 <lwip_cyclic_timers+0x2b0>
    e889681c:	00039517          	auipc	a0,0x39
    e8896820:	89450513          	addi	a0,a0,-1900 # e88cf0b0 <kSinTable1024+0x900>
    e8896824:	aa3e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("udp_input: invalid netif", inp != NULL);
    e8896828:	020c1863          	bnez	s8,e8896858 <udp_input+0x7e>
    e889682c:	02f00593          	li	a1,47
    e8896830:	0003c517          	auipc	a0,0x3c
    e8896834:	f0850513          	addi	a0,a0,-248 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896838:	b41e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889683c:	00150693          	addi	a3,a0,1
    e8896840:	0d000613          	li	a2,208
    e8896844:	0003c597          	auipc	a1,0x3c
    e8896848:	f9458593          	addi	a1,a1,-108 # e88d27d8 <lwip_cyclic_timers+0x2c8>
    e889684c:	00039517          	auipc	a0,0x39
    e8896850:	86450513          	addi	a0,a0,-1948 # e88cf0b0 <kSinTable1024+0x900>
    e8896854:	a73e50ef          	jal	ra,e887c2c6 <eLIBs_printf>

  PERF_START;

  UDP_STATS_INC(udp.recv);
    e8896858:	00050797          	auipc	a5,0x50
    e889685c:	bf878793          	addi	a5,a5,-1032 # e88e6450 <lwip_stats>
    e8896860:	0967d703          	lhu	a4,150(a5)
    e8896864:	893e                	mv	s2,a5
    e8896866:	2705                	addiw	a4,a4,1
    e8896868:	08e79b23          	sh	a4,150(a5)

  /* Check minimum length (UDP header) */
  if (p->len < UDP_HLEN) {
    e889686c:	0129d683          	lhu	a3,18(s3)
    e8896870:	471d                	li	a4,7
    e8896872:	04d76263          	bltu	a4,a3,e88968b6 <udp_input+0xdc>
    /* drop short packets */
    LWIP_DEBUGF(UDP_DEBUG,
                ("udp_input: short UDP datagram (%"U16_F" bytes) discarded\n", p->tot_len));
    UDP_STATS_INC(udp.lenerr);
    e8896876:	09e7d703          	lhu	a4,158(a5)
    e889687a:	2705                	addiw	a4,a4,1
    e889687c:	08e79f23          	sh	a4,158(a5)
    UDP_STATS_INC(udp.drop);
    e8896880:	09a7d703          	lhu	a4,154(a5)
    e8896884:	2705                	addiw	a4,a4,1
    e8896886:	08e79d23          	sh	a4,154(a5)
    MIB2_STATS_INC(mib2.udpinerrors);
    e889688a:	1c07a703          	lw	a4,448(a5)
    e889688e:	2705                	addiw	a4,a4,1
    e8896890:	1ce7a023          	sw	a4,448(a5)
  UDP_STATS_INC(udp.drop);
  MIB2_STATS_INC(mib2.udpinerrors);
  pbuf_free(p);
  PERF_STOP("udp_input");
#endif /* CHECKSUM_CHECK_UDP */
}
    e8896894:	640a                	ld	s0,128(sp)
    e8896896:	60aa                	ld	ra,136(sp)
    e8896898:	74e6                	ld	s1,120(sp)
    e889689a:	7946                	ld	s2,112(sp)
    e889689c:	7a06                	ld	s4,96(sp)
    e889689e:	6ae6                	ld	s5,88(sp)
    e88968a0:	6b46                	ld	s6,80(sp)
    e88968a2:	6ba6                	ld	s7,72(sp)
    e88968a4:	6c06                	ld	s8,64(sp)
    e88968a6:	7ce2                	ld	s9,56(sp)
    e88968a8:	7d42                	ld	s10,48(sp)
    e88968aa:	7da2                	ld	s11,40(sp)
      pbuf_free(p);
    e88968ac:	854e                	mv	a0,s3
}
    e88968ae:	79a6                	ld	s3,104(sp)
    e88968b0:	6149                	addi	sp,sp,144
      pbuf_free(p);
    e88968b2:	99bf806f          	j	e888f24c <pbuf_free>
  broadcast = ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif());
    e88968b6:	0004f497          	auipc	s1,0x4f
    e88968ba:	29248493          	addi	s1,s1,658 # e88e5b48 <ip_data>
    e88968be:	0504c703          	lbu	a4,80(s1)
    e88968c2:	4799                	li	a5,6
  udphdr = (struct udp_hdr *)p->payload;
    e88968c4:	0089bb03          	ld	s6,8(s3)
  broadcast = ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif());
    e88968c8:	4a81                	li	s5,0
    e88968ca:	00f70763          	beq	a4,a5,e88968d8 <udp_input+0xfe>
    e88968ce:	608c                	ld	a1,0(s1)
    e88968d0:	5cc8                	lw	a0,60(s1)
    e88968d2:	cebf20ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
    e88968d6:	8aaa                	mv	s5,a0
  src = lwip_ntohs(udphdr->src);
    e88968d8:	000b5503          	lhu	a0,0(s6)
  for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
    e88968dc:	00050d17          	auipc	s10,0x50
    e88968e0:	e3cd0d13          	addi	s10,s10,-452 # e88e6718 <udp_pcbs>
  uncon_pcb = NULL;
    e88968e4:	4a01                	li	s4,0
  src = lwip_ntohs(udphdr->src);
    e88968e6:	e38f00ef          	jal	ra,e8886f1e <lwip_htons>
    e88968ea:	8baa                	mv	s7,a0
  dest = lwip_ntohs(udphdr->dest);
    e88968ec:	002b5503          	lhu	a0,2(s6)
      if ((pcb->remote_port == src) &&
    e88968f0:	4d99                	li	s11,6
  LWIP_ASSERT("udp_input_local_match: invalid netif", inp != NULL);
    e88968f2:	0003cc97          	auipc	s9,0x3c
    e88968f6:	f06c8c93          	addi	s9,s9,-250 # e88d27f8 <lwip_cyclic_timers+0x2e8>
  dest = lwip_ntohs(udphdr->dest);
    e88968fa:	e24f00ef          	jal	ra,e8886f1e <lwip_htons>
  for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
    e88968fe:	000d3403          	ld	s0,0(s10)
  prev = NULL;
    e8896902:	4701                	li	a4,0
    if ((pcb->local_port == dest) &&
    e8896904:	0005089b          	sext.w	a7,a0
  if (IP_IS_ANY_TYPE_VAL(pcb->local_ip)) {
    e8896908:	02e00313          	li	t1,46
      if ((pcb->remote_port == src) &&
    e889690c:	000b8e1b          	sext.w	t3,s7
        } else if (broadcast && ip4_current_dest_addr()->addr == IPADDR_BROADCAST) {
    e8896910:	587d                	li	a6,-1
  LWIP_ASSERT("udp_input_local_match: invalid netif", inp != NULL);
    e8896912:	0003ce97          	auipc	t4,0x3c
    e8896916:	e26e8e93          	addi	t4,t4,-474 # e88d2738 <lwip_cyclic_timers+0x228>
  for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
    e889691a:	ec19                	bnez	s0,e8896938 <udp_input+0x15e>
  if (pcb != NULL) {
    e889691c:	120a1f63          	bnez	s4,e8896a5a <udp_input+0x280>
    if (ip_current_is_v6()) {
    e8896920:	6c9c                	ld	a5,24(s1)
    e8896922:	1e079e63          	bnez	a5,e8896b1e <udp_input+0x344>
      for_us = ip4_addr_cmp(netif_ip4_addr(inp), ip4_current_dest_addr());
    e8896926:	008c2503          	lw	a0,8(s8)
    e889692a:	5cdc                	lw	a5,60(s1)
    e889692c:	8d1d                	sub	a0,a0,a5
    e889692e:	00153513          	seqz	a0,a0
  if (for_us) {
    e8896932:	12051463          	bnez	a0,e8896a5a <udp_input+0x280>
    e8896936:	bfb9                	j	e8896894 <udp_input+0xba>
    if ((pcb->local_port == dest) &&
    e8896938:	04245783          	lhu	a5,66(s0)
    e889693c:	19179d63          	bne	a5,a7,e8896ad6 <udp_input+0x2fc>
  LWIP_ASSERT("udp_input_local_match: invalid netif", inp != NULL);
    e8896940:	020c1f63          	bnez	s8,e889697e <udp_input+0x1a4>
    e8896944:	8576                	mv	a0,t4
    e8896946:	02f00593          	li	a1,47
    e889694a:	ec72                	sd	t3,24(sp)
    e889694c:	e846                	sd	a7,16(sp)
    e889694e:	e43a                	sd	a4,8(sp)
    e8896950:	a29e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896954:	00150693          	addi	a3,a0,1
    e8896958:	08800613          	li	a2,136
    e889695c:	85e6                	mv	a1,s9
    e889695e:	00038517          	auipc	a0,0x38
    e8896962:	75250513          	addi	a0,a0,1874 # e88cf0b0 <kSinTable1024+0x900>
    e8896966:	961e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889696a:	6e62                	ld	t3,24(sp)
    e889696c:	68c2                	ld	a7,16(sp)
    e889696e:	6722                	ld	a4,8(sp)
    e8896970:	587d                	li	a6,-1
    e8896972:	02e00313          	li	t1,46
    e8896976:	0003ce97          	auipc	t4,0x3c
    e889697a:	dc2e8e93          	addi	t4,t4,-574 # e88d2738 <lwip_cyclic_timers+0x228>
  if ((pcb->netif_idx != NETIF_NO_INDEX) &&
    e889697e:	03044683          	lbu	a3,48(s0)
    e8896982:	ca89                	beqz	a3,e8896994 <udp_input+0x1ba>
      (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) {
    e8896984:	649c                	ld	a5,8(s1)
    e8896986:	10e7c783          	lbu	a5,270(a5)
    e889698a:	2785                	addiw	a5,a5,1
  if ((pcb->netif_idx != NETIF_NO_INDEX) &&
    e889698c:	0ff7f793          	andi	a5,a5,255
    e8896990:	14f69363          	bne	a3,a5,e8896ad6 <udp_input+0x2fc>
  if (IP_IS_ANY_TYPE_VAL(pcb->local_ip)) {
    e8896994:	01444683          	lbu	a3,20(s0)
    e8896998:	02668363          	beq	a3,t1,e88969be <udp_input+0x1e4>
  if (IP_ADDR_PCB_VERSION_MATCH_EXACT(pcb, ip_current_dest_addr())) {
    e889699c:	0504c783          	lbu	a5,80(s1)
    e88969a0:	12d79b63          	bne	a5,a3,e8896ad6 <udp_input+0x2fc>
    if (broadcast != 0) {
    e88969a4:	0e0a8d63          	beqz	s5,e8896a9e <udp_input+0x2c4>
        if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) ||
    e88969a8:	401c                	lw	a5,0(s0)
    e88969aa:	cb91                	beqz	a5,e88969be <udp_input+0x1e4>
            ((ip4_current_dest_addr()->addr == IPADDR_BROADCAST)) ||
    e88969ac:	5cd0                	lw	a2,60(s1)
        if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) ||
    e88969ae:	01060863          	beq	a2,a6,e88969be <udp_input+0x1e4>
            ip4_addr_netcmp(ip_2_ip4(&pcb->local_ip), ip4_current_dest_addr(), netif_ip4_netmask(inp))) {
    e88969b2:	8fb1                	xor	a5,a5,a2
    e88969b4:	020c2603          	lw	a2,32(s8)
            ((ip4_current_dest_addr()->addr == IPADDR_BROADCAST)) ||
    e88969b8:	8ff1                	and	a5,a5,a2
    e88969ba:	10079e63          	bnez	a5,e8896ad6 <udp_input+0x2fc>
      if ((pcb->flags & UDP_FLAGS_CONNECTED) == 0) {
    e88969be:	04044783          	lbu	a5,64(s0)
    e88969c2:	8b91                	andi	a5,a5,4
    e88969c4:	eb95                	bnez	a5,e88969f8 <udp_input+0x21e>
        if (uncon_pcb == NULL) {
    e88969c6:	120a0f63          	beqz	s4,e8896b04 <udp_input+0x32a>
        } else if (broadcast && ip4_current_dest_addr()->addr == IPADDR_BROADCAST) {
    e88969ca:	100a8e63          	beqz	s5,e8896ae6 <udp_input+0x30c>
    e88969ce:	5cdc                	lw	a5,60(s1)
    e88969d0:	11079b63          	bne	a5,a6,e8896ae6 <udp_input+0x30c>
          if (!IP_IS_V4_VAL(uncon_pcb->local_ip) || !ip4_addr_cmp(ip_2_ip4(&uncon_pcb->local_ip), netif_ip4_addr(inp))) {
    e88969d4:	014a4783          	lbu	a5,20(s4)
    e88969d8:	e799                	bnez	a5,e88969e6 <udp_input+0x20c>
    e88969da:	000a2603          	lw	a2,0(s4)
    e88969de:	008c2783          	lw	a5,8(s8)
    e88969e2:	00f60b63          	beq	a2,a5,e88969f8 <udp_input+0x21e>
            if (IP_IS_V4_VAL(pcb->local_ip) && ip4_addr_cmp(ip_2_ip4(&pcb->local_ip), netif_ip4_addr(inp))) {
    e88969e6:	ea89                	bnez	a3,e88969f8 <udp_input+0x21e>
    e88969e8:	401c                	lw	a5,0(s0)
    e88969ea:	008c2683          	lw	a3,8(s8)
    e88969ee:	8f95                	sub	a5,a5,a3
    e88969f0:	00f037b3          	snez	a5,a5
    e88969f4:	40f41a0b          	mveqz	s4,s0,a5
      if ((pcb->remote_port == src) &&
    e88969f8:	04445783          	lhu	a5,68(s0)
    e88969fc:	0dc79d63          	bne	a5,t3,e8896ad6 <udp_input+0x2fc>
          (ip_addr_isany_val(pcb->remote_ip) ||
    e8896a00:	02c44783          	lbu	a5,44(s0)
      if ((pcb->remote_port == src) &&
    e8896a04:	11b79263          	bne	a5,s11,e8896b08 <udp_input+0x32e>
          (ip_addr_isany_val(pcb->remote_ip) ||
    e8896a08:	6c14                	ld	a3,24(s0)
    e8896a0a:	e299                	bnez	a3,e8896a10 <udp_input+0x236>
    e8896a0c:	7014                	ld	a3,32(s0)
    e8896a0e:	ce8d                	beqz	a3,e8896a48 <udp_input+0x26e>
      if ((pcb->remote_port == src) &&
    e8896a10:	0384c683          	lbu	a3,56(s1)
    e8896a14:	0cf69163          	bne	a3,a5,e8896ad6 <udp_input+0x2fc>
    e8896a18:	4c14                	lw	a3,24(s0)
    e8896a1a:	50d0                	lw	a2,36(s1)
    e8896a1c:	0fb79863          	bne	a5,s11,e8896b0c <udp_input+0x332>
           ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()))) {
    e8896a20:	0ad61b63          	bne	a2,a3,e8896ad6 <udp_input+0x2fc>
    e8896a24:	4c54                	lw	a3,28(s0)
    e8896a26:	549c                	lw	a5,40(s1)
    e8896a28:	0af69763          	bne	a3,a5,e8896ad6 <udp_input+0x2fc>
    e8896a2c:	5014                	lw	a3,32(s0)
    e8896a2e:	54dc                	lw	a5,44(s1)
    e8896a30:	0af69363          	bne	a3,a5,e8896ad6 <udp_input+0x2fc>
    e8896a34:	5054                	lw	a3,36(s0)
    e8896a36:	589c                	lw	a5,48(s1)
    e8896a38:	08f69f63          	bne	a3,a5,e8896ad6 <udp_input+0x2fc>
    e8896a3c:	02844683          	lbu	a3,40(s0)
    e8896a40:	0344c783          	lbu	a5,52(s1)
    e8896a44:	08f69963          	bne	a3,a5,e8896ad6 <udp_input+0x2fc>
        if (prev != NULL) {
    e8896a48:	c769                	beqz	a4,e8896b12 <udp_input+0x338>
          prev->next = pcb->next;
    e8896a4a:	7c1c                	ld	a5,56(s0)
    e8896a4c:	ff1c                	sd	a5,56(a4)
          pcb->next = udp_pcbs;
    e8896a4e:	000d3783          	ld	a5,0(s10)
          udp_pcbs = pcb;
    e8896a52:	008d3023          	sd	s0,0(s10)
          pcb->next = udp_pcbs;
    e8896a56:	fc1c                	sd	a5,56(s0)
          UDP_STATS_INC(udp.cachehit);
    e8896a58:	8a22                	mv	s4,s0
        if (udphdr->chksum != 0) {
    e8896a5a:	006b5783          	lhu	a5,6(s6)
    e8896a5e:	c3ed                	beqz	a5,e8896b40 <udp_input+0x366>
          if (ip_chksum_pseudo(p, IP_PROTO_UDP, p->tot_len,
    e8896a60:	0109d603          	lhu	a2,16(s3)
    e8896a64:	0004f717          	auipc	a4,0x4f
    e8896a68:	12070713          	addi	a4,a4,288 # e88e5b84 <ip_data+0x3c>
    e8896a6c:	0004f697          	auipc	a3,0x4f
    e8896a70:	10068693          	addi	a3,a3,256 # e88e5b6c <ip_data+0x24>
    e8896a74:	45c5                	li	a1,17
    e8896a76:	854e                	mv	a0,s3
    e8896a78:	dd7f00ef          	jal	ra,e888784e <ip_chksum_pseudo>
    e8896a7c:	c171                	beqz	a0,e8896b40 <udp_input+0x366>
  UDP_STATS_INC(udp.chkerr);
    e8896a7e:	09c95783          	lhu	a5,156(s2)
    e8896a82:	2785                	addiw	a5,a5,1
    e8896a84:	08f91e23          	sh	a5,156(s2)
      UDP_STATS_INC(udp.drop);
    e8896a88:	09a95783          	lhu	a5,154(s2)
    e8896a8c:	2785                	addiw	a5,a5,1
    e8896a8e:	08f91d23          	sh	a5,154(s2)
      MIB2_STATS_INC(mib2.udpinerrors);
    e8896a92:	1c092783          	lw	a5,448(s2)
    e8896a96:	2785                	addiw	a5,a5,1
    e8896a98:	1cf92023          	sw	a5,448(s2)
      pbuf_free(p);
    e8896a9c:	bbe5                	j	e8896894 <udp_input+0xba>
      if (ip_addr_isany(&pcb->local_ip) || ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) {
    e8896a9e:	03b69f63          	bne	a3,s11,e8896adc <udp_input+0x302>
    e8896aa2:	601c                	ld	a5,0(s0)
    e8896aa4:	e399                	bnez	a5,e8896aaa <udp_input+0x2d0>
    e8896aa6:	641c                	ld	a5,8(s0)
    e8896aa8:	db99                	beqz	a5,e88969be <udp_input+0x1e4>
    e8896aaa:	4010                	lw	a2,0(s0)
    e8896aac:	5cdc                	lw	a5,60(s1)
    e8896aae:	02f61463          	bne	a2,a5,e8896ad6 <udp_input+0x2fc>
    e8896ab2:	4050                	lw	a2,4(s0)
    e8896ab4:	40bc                	lw	a5,64(s1)
    e8896ab6:	02f61063          	bne	a2,a5,e8896ad6 <udp_input+0x2fc>
    e8896aba:	4410                	lw	a2,8(s0)
    e8896abc:	40fc                	lw	a5,68(s1)
    e8896abe:	00f61c63          	bne	a2,a5,e8896ad6 <udp_input+0x2fc>
    e8896ac2:	4450                	lw	a2,12(s0)
    e8896ac4:	44bc                	lw	a5,72(s1)
    e8896ac6:	00f61863          	bne	a2,a5,e8896ad6 <udp_input+0x2fc>
    e8896aca:	01044603          	lbu	a2,16(s0)
    e8896ace:	04c4c783          	lbu	a5,76(s1)
    e8896ad2:	eef606e3          	beq	a2,a5,e88969be <udp_input+0x1e4>
  for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
    e8896ad6:	8722                	mv	a4,s0
    e8896ad8:	7c00                	ld	s0,56(s0)
    e8896ada:	b581                	j	e889691a <udp_input+0x140>
      if (ip_addr_isany(&pcb->local_ip) || ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) {
    e8896adc:	401c                	lw	a5,0(s0)
    e8896ade:	ee0780e3          	beqz	a5,e88969be <udp_input+0x1e4>
    e8896ae2:	5cd0                	lw	a2,60(s1)
    e8896ae4:	b7fd                	j	e8896ad2 <udp_input+0x2f8>
        else if (!ip_addr_isany(&pcb->local_ip)) {
    e8896ae6:	01b69b63          	bne	a3,s11,e8896afc <udp_input+0x322>
    e8896aea:	6014                	ld	a3,0(s0)
    e8896aec:	4785                	li	a5,1
    e8896aee:	e681                	bnez	a3,e8896af6 <udp_input+0x31c>
    e8896af0:	641c                	ld	a5,8(s0)
    e8896af2:	00f037b3          	snez	a5,a5
    e8896af6:	42f41a0b          	mvnez	s4,s0,a5
    e8896afa:	bdfd                	j	e88969f8 <udp_input+0x21e>
    e8896afc:	401c                	lw	a5,0(s0)
    e8896afe:	00f037b3          	snez	a5,a5
    e8896b02:	bfd5                	j	e8896af6 <udp_input+0x31c>
    e8896b04:	8a22                	mv	s4,s0
    e8896b06:	bdcd                	j	e88969f8 <udp_input+0x21e>
          (ip_addr_isany_val(pcb->remote_ip) ||
    e8896b08:	4c14                	lw	a3,24(s0)
    e8896b0a:	b711                	j	e8896a0e <udp_input+0x234>
    e8896b0c:	fcd615e3          	bne	a2,a3,e8896ad6 <udp_input+0x2fc>
    e8896b10:	bf25                	j	e8896a48 <udp_input+0x26e>
          UDP_STATS_INC(udp.cachehit);
    e8896b12:	0aa95783          	lhu	a5,170(s2)
    e8896b16:	2785                	addiw	a5,a5,1
    e8896b18:	0af91523          	sh	a5,170(s2)
    e8896b1c:	bf35                	j	e8896a58 <udp_input+0x27e>
      for_us = netif_get_ip6_addr_match(inp, ip6_current_dest_addr()) >= 0;
    e8896b1e:	0004f597          	auipc	a1,0x4f
    e8896b22:	06658593          	addi	a1,a1,102 # e88e5b84 <ip_data+0x3c>
    e8896b26:	8562                	mv	a0,s8
    e8896b28:	c41f70ef          	jal	ra,e888e768 <netif_get_ip6_addr_match>
    e8896b2c:	08054513          	xori	a0,a0,128
    if (!ip_current_is_v6()) {
    e8896b30:	6c9c                	ld	a5,24(s1)
      for_us = netif_get_ip6_addr_match(inp, ip6_current_dest_addr()) >= 0;
    e8896b32:	1c75350b          	extu	a0,a0,7,7
    e8896b36:	0ff57513          	andi	a0,a0,255
    if (!ip_current_is_v6()) {
    e8896b3a:	de079ce3          	bnez	a5,e8896932 <udp_input+0x158>
    e8896b3e:	b3e5                	j	e8896926 <udp_input+0x14c>
    if (pbuf_remove_header(p, UDP_HLEN)) {
    e8896b40:	45a1                	li	a1,8
    e8896b42:	854e                	mv	a0,s3
    e8896b44:	e64f80ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    e8896b48:	c905                	beqz	a0,e8896b78 <udp_input+0x39e>
      LWIP_ASSERT("pbuf_remove_header failed\n", 0);
    e8896b4a:	02f00593          	li	a1,47
    e8896b4e:	0003c517          	auipc	a0,0x3c
    e8896b52:	bea50513          	addi	a0,a0,-1046 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896b56:	823e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896b5a:	00150693          	addi	a3,a0,1
    e8896b5e:	17000613          	li	a2,368
    e8896b62:	0003c597          	auipc	a1,0x3c
    e8896b66:	cbe58593          	addi	a1,a1,-834 # e88d2820 <lwip_cyclic_timers+0x310>
    e8896b6a:	00038517          	auipc	a0,0x38
    e8896b6e:	54650513          	addi	a0,a0,1350 # e88cf0b0 <kSinTable1024+0x900>
    e8896b72:	f54e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8896b76:	bf09                	j	e8896a88 <udp_input+0x2ae>
    if (pcb != NULL) {
    e8896b78:	040a0363          	beqz	s4,e8896bbe <udp_input+0x3e4>
      MIB2_STATS_INC(mib2.udpindatagrams);
    e8896b7c:	1b892783          	lw	a5,440(s2)
    e8896b80:	2785                	addiw	a5,a5,1
    e8896b82:	1af92c23          	sw	a5,440(s2)
      if (pcb->recv != NULL) {
    e8896b86:	050a3303          	ld	t1,80(s4)
    e8896b8a:	d00305e3          	beqz	t1,e8896894 <udp_input+0xba>
}
    e8896b8e:	640a                	ld	s0,128(sp)
        pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src);
    e8896b90:	058a3503          	ld	a0,88(s4)
}
    e8896b94:	60aa                	ld	ra,136(sp)
    e8896b96:	74e6                	ld	s1,120(sp)
    e8896b98:	7946                	ld	s2,112(sp)
    e8896b9a:	6ae6                	ld	s5,88(sp)
    e8896b9c:	6b46                	ld	s6,80(sp)
    e8896b9e:	6c06                	ld	s8,64(sp)
    e8896ba0:	7ce2                	ld	s9,56(sp)
    e8896ba2:	7d42                	ld	s10,48(sp)
    e8896ba4:	7da2                	ld	s11,40(sp)
        pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src);
    e8896ba6:	875e                	mv	a4,s7
    e8896ba8:	864e                	mv	a2,s3
}
    e8896baa:	6ba6                	ld	s7,72(sp)
    e8896bac:	79a6                	ld	s3,104(sp)
        pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src);
    e8896bae:	85d2                	mv	a1,s4
}
    e8896bb0:	7a06                	ld	s4,96(sp)
        pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src);
    e8896bb2:	0004f697          	auipc	a3,0x4f
    e8896bb6:	fba68693          	addi	a3,a3,-70 # e88e5b6c <ip_data+0x24>
}
    e8896bba:	6149                	addi	sp,sp,144
        pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src);
    e8896bbc:	8302                	jr	t1
      if (!broadcast && !ip_addr_ismulticast(ip_current_dest_addr())) {
    e8896bbe:	020a9d63          	bnez	s5,e8896bf8 <udp_input+0x41e>
    e8896bc2:	0504c683          	lbu	a3,80(s1)
    e8896bc6:	4719                	li	a4,6
    e8896bc8:	5cdc                	lw	a5,60(s1)
    e8896bca:	04e69763          	bne	a3,a4,e8896c18 <udp_input+0x43e>
    e8896bce:	0ff7f793          	andi	a5,a5,255
    e8896bd2:	f0178793          	addi	a5,a5,-255
    e8896bd6:	00f037b3          	snez	a5,a5
    e8896bda:	cf99                	beqz	a5,e8896bf8 <udp_input+0x41e>
        pbuf_header_force(p, (s16_t)(ip_current_header_tot_len() + UDP_HLEN));
    e8896bdc:	0204d583          	lhu	a1,32(s1)
    e8896be0:	854e                	mv	a0,s3
    e8896be2:	25a1                	addiw	a1,a1,8
    e8896be4:	3c05a58b          	ext	a1,a1,15,0
    e8896be8:	e50f80ef          	jal	ra,e888f238 <pbuf_header_force>
        icmp_port_unreach(ip_current_is_v6(), p);
    e8896bec:	6c9c                	ld	a5,24(s1)
    e8896bee:	cb95                	beqz	a5,e8896c22 <udp_input+0x448>
    e8896bf0:	4591                	li	a1,4
    e8896bf2:	854e                	mv	a0,s3
    e8896bf4:	3b8060ef          	jal	ra,e889cfac <icmp6_dest_unreach>
      UDP_STATS_INC(udp.proterr);
    e8896bf8:	0a495783          	lhu	a5,164(s2)
    e8896bfc:	2785                	addiw	a5,a5,1
    e8896bfe:	0af91223          	sh	a5,164(s2)
      UDP_STATS_INC(udp.drop);
    e8896c02:	09a95783          	lhu	a5,154(s2)
    e8896c06:	2785                	addiw	a5,a5,1
    e8896c08:	08f91d23          	sh	a5,154(s2)
      MIB2_STATS_INC(mib2.udpnoports);
    e8896c0c:	1bc92783          	lw	a5,444(s2)
    e8896c10:	2785                	addiw	a5,a5,1
    e8896c12:	1af92e23          	sw	a5,444(s2)
    e8896c16:	b9bd                	j	e8896894 <udp_input+0xba>
      if (!broadcast && !ip_addr_ismulticast(ip_current_dest_addr())) {
    e8896c18:	0f07f793          	andi	a5,a5,240
    e8896c1c:	f2078793          	addi	a5,a5,-224
    e8896c20:	bf5d                	j	e8896bd6 <udp_input+0x3fc>
        icmp_port_unreach(ip_current_is_v6(), p);
    e8896c22:	458d                	li	a1,3
    e8896c24:	854e                	mv	a0,s3
    e8896c26:	7b1050ef          	jal	ra,e889cbd6 <icmp_dest_unreach>
    e8896c2a:	b7f9                	j	e8896bf8 <udp_input+0x41e>

00000000e8896c2c <udp_bind>:
 *
 * @see udp_disconnect()
 */
err_t
udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
{
    e8896c2c:	711d                	addi	sp,sp,-96
    e8896c2e:	e8a2                	sd	s0,80(sp)
    e8896c30:	ec86                	sd	ra,88(sp)
    e8896c32:	e4a6                	sd	s1,72(sp)
    e8896c34:	e0ca                	sd	s2,64(sp)
    e8896c36:	fc4e                	sd	s3,56(sp)
    e8896c38:	842a                	mv	s0,a0

  LWIP_ASSERT_CORE_LOCKED();

#if LWIP_IPV4
  /* Don't propagate NULL pointer (IPv4 ANY) to subsequent functions */
  if (ipaddr == NULL) {
    e8896c3a:	e589                	bnez	a1,e8896c44 <udp_bind+0x18>
    ipaddr = IP4_ADDR_ANY;
    e8896c3c:	00039597          	auipc	a1,0x39
    e8896c40:	38458593          	addi	a1,a1,900 # e88cffc0 <ip_addr_any>
  }
#else /* LWIP_IPV4 */
  LWIP_ERROR("udp_bind: invalid ipaddr", ipaddr != NULL, return ERR_ARG);
#endif /* LWIP_IPV4 */

  LWIP_ERROR("udp_bind: invalid pcb", pcb != NULL, return ERR_ARG);
    e8896c44:	ec1d                	bnez	s0,e8896c82 <udp_bind+0x56>
    e8896c46:	02f00593          	li	a1,47
    e8896c4a:	0003c517          	auipc	a0,0x3c
    e8896c4e:	aee50513          	addi	a0,a0,-1298 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896c52:	f26e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896c56:	00150693          	addi	a3,a0,1
    e8896c5a:	3b700613          	li	a2,951
    e8896c5e:	0003c597          	auipc	a1,0x3c
    e8896c62:	a6258593          	addi	a1,a1,-1438 # e88d26c0 <lwip_cyclic_timers+0x1b0>
    e8896c66:	00038517          	auipc	a0,0x38
    e8896c6a:	44a50513          	addi	a0,a0,1098 # e88cf0b0 <kSinTable1024+0x900>
    e8896c6e:	e58e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8896c72:	5541                	li	a0,-16
  }
  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("udp_bind: bound to "));
  ip_addr_debug_print_val(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, pcb->local_ip);
  LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, (", port %"U16_F")\n", pcb->local_port));
  return ERR_OK;
}
    e8896c74:	60e6                	ld	ra,88(sp)
    e8896c76:	6446                	ld	s0,80(sp)
    e8896c78:	64a6                	ld	s1,72(sp)
    e8896c7a:	6906                	ld	s2,64(sp)
    e8896c7c:	79e2                	ld	s3,56(sp)
    e8896c7e:	6125                	addi	sp,sp,96
    e8896c80:	8082                	ret
  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {
    e8896c82:	00050917          	auipc	s2,0x50
    e8896c86:	a9690913          	addi	s2,s2,-1386 # e88e6718 <udp_pcbs>
    e8896c8a:	00093783          	ld	a5,0(s2)
    e8896c8e:	12079563          	bnez	a5,e8896db8 <udp_bind+0x18c>
  rebind = 0;
    e8896c92:	4981                	li	s3,0
  if (IP_IS_V6(ipaddr) && ip6_addr_lacks_zone(ip_2_ip6(ipaddr), IP6_UNKNOWN)) {
    e8896c94:	c9c9                	beqz	a1,e8896d26 <udp_bind+0xfa>
    e8896c96:	0145c703          	lbu	a4,20(a1)
    e8896c9a:	4799                	li	a5,6
    e8896c9c:	08f71563          	bne	a4,a5,e8896d26 <udp_bind+0xfa>
    e8896ca0:	0105c483          	lbu	s1,16(a1)
    e8896ca4:	e0c9                	bnez	s1,e8896d26 <udp_bind+0xfa>
    e8896ca6:	4198                	lw	a4,0(a1)
    e8896ca8:	67b1                	lui	a5,0xc
    e8896caa:	0ff78793          	addi	a5,a5,255 # c0ff <memcmp-0xe87f3f01>
    e8896cae:	66a1                	lui	a3,0x8
    e8896cb0:	8ff9                	and	a5,a5,a4
    e8896cb2:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e8896cb6:	00d78b63          	beq	a5,a3,e8896ccc <udp_bind+0xa0>
    e8896cba:	67a5                	lui	a5,0x9
    e8896cbc:	17fd                	addi	a5,a5,-1
    e8896cbe:	8ff9                	and	a5,a5,a4
    e8896cc0:	e017879b          	addiw	a5,a5,-511
    e8896cc4:	eff7f793          	andi	a5,a5,-257
    e8896cc8:	2781                	sext.w	a5,a5
    e8896cca:	efb1                	bnez	a5,e8896d26 <udp_bind+0xfa>
    ip_addr_copy(zoned_ipaddr, *ipaddr);
    e8896ccc:	4799                	li	a5,6
    e8896cce:	02f10623          	sb	a5,44(sp)
    e8896cd2:	41dc                	lw	a5,4(a1)
    e8896cd4:	e432                	sd	a2,8(sp)
    e8896cd6:	cc3a                	sw	a4,24(sp)
    e8896cd8:	ce3e                	sw	a5,28(sp)
    e8896cda:	659c                	ld	a5,8(a1)
    ip6_addr_select_zone(ip_2_ip6(&zoned_ipaddr), ip_2_ip6(&zoned_ipaddr));
    e8896cdc:	082c                	addi	a1,sp,24
    e8896cde:	852e                	mv	a0,a1
    ip_addr_copy(zoned_ipaddr, *ipaddr);
    e8896ce0:	f03e                	sd	a5,32(sp)
    e8896ce2:	02010423          	sb	zero,40(sp)
    ip6_addr_select_zone(ip_2_ip6(&zoned_ipaddr), ip_2_ip6(&zoned_ipaddr));
    e8896ce6:	d56f30ef          	jal	ra,e888a23c <ip6_route>
    ipaddr = &zoned_ipaddr;
    e8896cea:	082c                	addi	a1,sp,24
    ip6_addr_select_zone(ip_2_ip6(&zoned_ipaddr), ip_2_ip6(&zoned_ipaddr));
    e8896cec:	6622                	ld	a2,8(sp)
    e8896cee:	cd05                	beqz	a0,e8896d26 <udp_bind+0xfa>
    e8896cf0:	47e2                	lw	a5,24(sp)
    e8896cf2:	6731                	lui	a4,0xc
    e8896cf4:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e8896cf8:	66a1                	lui	a3,0x8
    e8896cfa:	8f7d                	and	a4,a4,a5
    e8896cfc:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e8896d00:	00d70b63          	beq	a4,a3,e8896d16 <udp_bind+0xea>
    e8896d04:	6725                	lui	a4,0x9
    e8896d06:	177d                	addi	a4,a4,-1
    e8896d08:	8ff9                	and	a5,a5,a4
    e8896d0a:	e017879b          	addiw	a5,a5,-511
    e8896d0e:	eff7f793          	andi	a5,a5,-257
    e8896d12:	2781                	sext.w	a5,a5
    e8896d14:	e791                	bnez	a5,e8896d20 <udp_bind+0xf4>
    e8896d16:	10e54483          	lbu	s1,270(a0)
    e8896d1a:	2485                	addiw	s1,s1,1
    e8896d1c:	0ff4f493          	andi	s1,s1,255
    e8896d20:	02910423          	sb	s1,40(sp)
    ipaddr = &zoned_ipaddr;
    e8896d24:	082c                	addi	a1,sp,24
  if (port == 0) {
    e8896d26:	00093783          	ld	a5,0(s2)
    e8896d2a:	ce49                	beqz	a2,e8896dc4 <udp_bind+0x198>
          if ((ipcb->local_port == port) &&
    e8896d2c:	0006089b          	sext.w	a7,a2
              ip_addr_isany(&ipcb->local_ip))) {
    e8896d30:	4699                	li	a3,6
    for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {
    e8896d32:	cfcd                	beqz	a5,e8896dec <udp_bind+0x1c0>
      if (pcb != ipcb) {
    e8896d34:	08878063          	beq	a5,s0,e8896db4 <udp_bind+0x188>
        if (!ip_get_option(pcb, SOF_REUSEADDR) ||
    e8896d38:	03144703          	lbu	a4,49(s0)
    e8896d3c:	8b11                	andi	a4,a4,4
    e8896d3e:	c709                	beqz	a4,e8896d48 <udp_bind+0x11c>
    e8896d40:	0317c703          	lbu	a4,49(a5) # 9031 <memcmp-0xe87f6fcf>
    e8896d44:	8b11                	andi	a4,a4,4
    e8896d46:	e73d                	bnez	a4,e8896db4 <udp_bind+0x188>
          if ((ipcb->local_port == port) &&
    e8896d48:	0427d703          	lhu	a4,66(a5)
    e8896d4c:	07171463          	bne	a4,a7,e8896db4 <udp_bind+0x188>
    e8896d50:	0145c503          	lbu	a0,20(a1)
              (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) ||
    e8896d54:	0147c703          	lbu	a4,20(a5)
          if ((ipcb->local_port == port) &&
    e8896d58:	0ea71f63          	bne	a4,a0,e8896e56 <udp_bind+0x22a>
    e8896d5c:	0007a803          	lw	a6,0(a5)
    e8896d60:	4188                	lw	a0,0(a1)
    e8896d62:	0ed71663          	bne	a4,a3,e8896e4e <udp_bind+0x222>
              (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) ||
    e8896d66:	02a81763          	bne	a6,a0,e8896d94 <udp_bind+0x168>
    e8896d6a:	0047a803          	lw	a6,4(a5)
    e8896d6e:	41c8                	lw	a0,4(a1)
    e8896d70:	02a81263          	bne	a6,a0,e8896d94 <udp_bind+0x168>
    e8896d74:	0087a803          	lw	a6,8(a5)
    e8896d78:	4588                	lw	a0,8(a1)
    e8896d7a:	00a81d63          	bne	a6,a0,e8896d94 <udp_bind+0x168>
    e8896d7e:	00c7a803          	lw	a6,12(a5)
    e8896d82:	45c8                	lw	a0,12(a1)
    e8896d84:	00a81863          	bne	a6,a0,e8896d94 <udp_bind+0x168>
    e8896d88:	0107c803          	lbu	a6,16(a5)
    e8896d8c:	0105c503          	lbu	a0,16(a1)
    e8896d90:	0aa80b63          	beq	a6,a0,e8896e46 <udp_bind+0x21a>
          if ((ipcb->local_port == port) &&
    e8896d94:	c9cd                	beqz	a1,e8896e46 <udp_bind+0x21a>
              (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) ||
    e8896d96:	4188                	lw	a0,0(a1)
    e8896d98:	e519                	bnez	a0,e8896da6 <udp_bind+0x17a>
    e8896d9a:	41c8                	lw	a0,4(a1)
    e8896d9c:	e509                	bnez	a0,e8896da6 <udp_bind+0x17a>
    e8896d9e:	4588                	lw	a0,8(a1)
    e8896da0:	e119                	bnez	a0,e8896da6 <udp_bind+0x17a>
    e8896da2:	45c8                	lw	a0,12(a1)
    e8896da4:	c14d                	beqz	a0,e8896e46 <udp_bind+0x21a>
          if ((ipcb->local_port == port) &&
    e8896da6:	c3c5                	beqz	a5,e8896e46 <udp_bind+0x21a>
              ip_addr_isany(&ipcb->local_ip))) {
    e8896da8:	0ad71c63          	bne	a4,a3,e8896e60 <udp_bind+0x234>
    e8896dac:	6398                	ld	a4,0(a5)
    e8896dae:	e319                	bnez	a4,e8896db4 <udp_bind+0x188>
    e8896db0:	6798                	ld	a4,8(a5)
              (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) ||
    e8896db2:	cb51                	beqz	a4,e8896e46 <udp_bind+0x21a>
    for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {
    e8896db4:	7f9c                	ld	a5,56(a5)
    e8896db6:	bfb5                	j	e8896d32 <udp_bind+0x106>
    if (pcb == ipcb) {
    e8896db8:	00878463          	beq	a5,s0,e8896dc0 <udp_bind+0x194>
  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {
    e8896dbc:	7f9c                	ld	a5,56(a5)
    e8896dbe:	bdc1                	j	e8896c8e <udp_bind+0x62>
      rebind = 1;
    e8896dc0:	4985                	li	s3,1
    e8896dc2:	bdc9                	j	e8896c94 <udp_bind+0x68>
    e8896dc4:	0003e717          	auipc	a4,0x3e
    e8896dc8:	7c670713          	addi	a4,a4,1990 # e88d558a <udp_port>
    e8896dcc:	00075603          	lhu	a2,0(a4)
  if (udp_port++ == UDP_LOCAL_PORT_RANGE_END) {
    e8896dd0:	6841                	lui	a6,0x10
  if (port == 0) {
    e8896dd2:	6691                	lui	a3,0x4
  if (udp_port++ == UDP_LOCAL_PORT_RANGE_END) {
    e8896dd4:	187d                	addi	a6,a6,-1
    e8896dd6:	05060c63          	beq	a2,a6,e8896e2e <udp_bind+0x202>
    e8896dda:	2605                	addiw	a2,a2,1
    e8896ddc:	3c06360b          	extu	a2,a2,15,0
  for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
    e8896de0:	853e                	mv	a0,a5
    if (pcb->local_port == udp_port) {
    e8896de2:	0006089b          	sext.w	a7,a2
  for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
    e8896de6:	e531                	bnez	a0,e8896e32 <udp_bind+0x206>
    e8896de8:	00c71023          	sh	a2,0(a4)
  ip_addr_set_ipaddr(&pcb->local_ip, ipaddr);
    e8896dec:	0145c783          	lbu	a5,20(a1)
    e8896df0:	00f40a23          	sb	a5,20(s0)
    e8896df4:	c9a5                	beqz	a1,e8896e64 <udp_bind+0x238>
    e8896df6:	0145c703          	lbu	a4,20(a1)
    e8896dfa:	4799                	li	a5,6
    e8896dfc:	06f71d63          	bne	a4,a5,e8896e76 <udp_bind+0x24a>
    e8896e00:	419c                	lw	a5,0(a1)
    e8896e02:	c01c                	sw	a5,0(s0)
    e8896e04:	41dc                	lw	a5,4(a1)
    e8896e06:	c05c                	sw	a5,4(s0)
    e8896e08:	459c                	lw	a5,8(a1)
    e8896e0a:	c41c                	sw	a5,8(s0)
    e8896e0c:	45dc                	lw	a5,12(a1)
    e8896e0e:	c45c                	sw	a5,12(s0)
    e8896e10:	0105c783          	lbu	a5,16(a1)
    e8896e14:	00f40823          	sb	a5,16(s0)
  pcb->local_port = port;
    e8896e18:	04c41123          	sh	a2,66(s0)
  return ERR_OK;
    e8896e1c:	4501                	li	a0,0
  if (rebind == 0) {
    e8896e1e:	e4099be3          	bnez	s3,e8896c74 <udp_bind+0x48>
    pcb->next = udp_pcbs;
    e8896e22:	00093783          	ld	a5,0(s2)
    udp_pcbs = pcb;
    e8896e26:	00893023          	sd	s0,0(s2)
    pcb->next = udp_pcbs;
    e8896e2a:	fc1c                	sd	a5,56(s0)
    udp_pcbs = pcb;
    e8896e2c:	b5a1                	j	e8896c74 <udp_bind+0x48>
    udp_port = UDP_LOCAL_PORT_RANGE_START;
    e8896e2e:	6631                	lui	a2,0xc
    e8896e30:	bf45                	j	e8896de0 <udp_bind+0x1b4>
    if (pcb->local_port == udp_port) {
    e8896e32:	04255303          	lhu	t1,66(a0)
    e8896e36:	01131a63          	bne	t1,a7,e8896e4a <udp_bind+0x21e>
      if (++n > (UDP_LOCAL_PORT_RANGE_END - UDP_LOCAL_PORT_RANGE_START)) {
    e8896e3a:	36fd                	addiw	a3,a3,-1
    e8896e3c:	3c06b68b          	extu	a3,a3,15,0
    e8896e40:	fad9                	bnez	a3,e8896dd6 <udp_bind+0x1aa>
    e8896e42:	00c71023          	sh	a2,0(a4)
      return ERR_USE;
    e8896e46:	5561                	li	a0,-8
    e8896e48:	b535                	j	e8896c74 <udp_bind+0x48>
  for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) {
    e8896e4a:	7d08                	ld	a0,56(a0)
    e8896e4c:	bf69                	j	e8896de6 <udp_bind+0x1ba>
              (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) ||
    e8896e4e:	fea80ce3          	beq	a6,a0,e8896e46 <udp_bind+0x21a>
          if ((ipcb->local_port == port) &&
    e8896e52:	e589                	bnez	a1,e8896e5c <udp_bind+0x230>
    e8896e54:	bfcd                	j	e8896e46 <udp_bind+0x21a>
    e8896e56:	d9e5                	beqz	a1,e8896e46 <udp_bind+0x21a>
              (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) ||
    e8896e58:	f2d50fe3          	beq	a0,a3,e8896d96 <udp_bind+0x16a>
    e8896e5c:	4188                	lw	a0,0(a1)
    e8896e5e:	b799                	j	e8896da4 <udp_bind+0x178>
    e8896e60:	4398                	lw	a4,0(a5)
    e8896e62:	bf81                	j	e8896db2 <udp_bind+0x186>
  ip_addr_set_ipaddr(&pcb->local_ip, ipaddr);
    e8896e64:	4781                	li	a5,0
    e8896e66:	c01c                	sw	a5,0(s0)
    e8896e68:	00042223          	sw	zero,4(s0)
    e8896e6c:	00043423          	sd	zero,8(s0)
    e8896e70:	00040823          	sb	zero,16(s0)
    e8896e74:	b755                	j	e8896e18 <udp_bind+0x1ec>
    e8896e76:	419c                	lw	a5,0(a1)
    e8896e78:	b7fd                	j	e8896e66 <udp_bind+0x23a>

00000000e8896e7a <udp_sendto_if_src_chksum>:
{
    e8896e7a:	711d                	addi	sp,sp,-96
    e8896e7c:	ec86                	sd	ra,88(sp)
    e8896e7e:	e8a2                	sd	s0,80(sp)
    e8896e80:	e4a6                	sd	s1,72(sp)
    e8896e82:	e0ca                	sd	s2,64(sp)
    e8896e84:	fc4e                	sd	s3,56(sp)
    e8896e86:	f852                	sd	s4,48(sp)
    e8896e88:	f456                	sd	s5,40(sp)
    e8896e8a:	f05a                	sd	s6,32(sp)
    e8896e8c:	ec5e                	sd	s7,24(sp)
    e8896e8e:	e862                	sd	s8,16(sp)
    e8896e90:	e466                	sd	s9,8(sp)
  LWIP_ERROR("udp_sendto_if_src: invalid pcb", pcb != NULL, return ERR_ARG);
    e8896e92:	e531                	bnez	a0,e8896ede <udp_sendto_if_src_chksum+0x64>
    e8896e94:	02f00593          	li	a1,47
    e8896e98:	0003c517          	auipc	a0,0x3c
    e8896e9c:	8a050513          	addi	a0,a0,-1888 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896ea0:	cd8e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896ea4:	00150693          	addi	a3,a0,1
    e8896ea8:	2d100613          	li	a2,721
    e8896eac:	0003c597          	auipc	a1,0x3c
    e8896eb0:	adc58593          	addi	a1,a1,-1316 # e88d2988 <lwip_cyclic_timers+0x478>
  LWIP_ERROR("udp_sendto_if_src: invalid pbuf", p != NULL, return ERR_ARG);
    e8896eb4:	00038517          	auipc	a0,0x38
    e8896eb8:	1fc50513          	addi	a0,a0,508 # e88cf0b0 <kSinTable1024+0x900>
    e8896ebc:	c0ae50ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8896ec0:	5bc1                	li	s7,-16
}
    e8896ec2:	60e6                	ld	ra,88(sp)
    e8896ec4:	6446                	ld	s0,80(sp)
    e8896ec6:	855e                	mv	a0,s7
    e8896ec8:	64a6                	ld	s1,72(sp)
    e8896eca:	6906                	ld	s2,64(sp)
    e8896ecc:	79e2                	ld	s3,56(sp)
    e8896ece:	7a42                	ld	s4,48(sp)
    e8896ed0:	7aa2                	ld	s5,40(sp)
    e8896ed2:	7b02                	ld	s6,32(sp)
    e8896ed4:	6be2                	ld	s7,24(sp)
    e8896ed6:	6c42                	ld	s8,16(sp)
    e8896ed8:	6ca2                	ld	s9,8(sp)
    e8896eda:	6125                	addi	sp,sp,96
    e8896edc:	8082                	ret
    e8896ede:	89ae                	mv	s3,a1
  LWIP_ERROR("udp_sendto_if_src: invalid pbuf", p != NULL, return ERR_ARG);
    e8896ee0:	e195                	bnez	a1,e8896f04 <udp_sendto_if_src_chksum+0x8a>
    e8896ee2:	02f00593          	li	a1,47
    e8896ee6:	0003c517          	auipc	a0,0x3c
    e8896eea:	85250513          	addi	a0,a0,-1966 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896eee:	c8ae50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896ef2:	00150693          	addi	a3,a0,1
    e8896ef6:	2d200613          	li	a2,722
    e8896efa:	0003c597          	auipc	a1,0x3c
    e8896efe:	aae58593          	addi	a1,a1,-1362 # e88d29a8 <lwip_cyclic_timers+0x498>
    e8896f02:	bf4d                	j	e8896eb4 <udp_sendto_if_src_chksum+0x3a>
    e8896f04:	84b2                	mv	s1,a2
  LWIP_ERROR("udp_sendto_if_src: invalid dst_ip", dst_ip != NULL, return ERR_ARG);
    e8896f06:	e215                	bnez	a2,e8896f2a <udp_sendto_if_src_chksum+0xb0>
    e8896f08:	02f00593          	li	a1,47
    e8896f0c:	0003c517          	auipc	a0,0x3c
    e8896f10:	82c50513          	addi	a0,a0,-2004 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896f14:	c64e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896f18:	00150693          	addi	a3,a0,1
    e8896f1c:	2d300613          	li	a2,723
    e8896f20:	0003c597          	auipc	a1,0x3c
    e8896f24:	aa858593          	addi	a1,a1,-1368 # e88d29c8 <lwip_cyclic_timers+0x4b8>
    e8896f28:	b771                	j	e8896eb4 <udp_sendto_if_src_chksum+0x3a>
    e8896f2a:	8a46                	mv	s4,a7
  LWIP_ERROR("udp_sendto_if_src: invalid src_ip", src_ip != NULL, return ERR_ARG);
    e8896f2c:	02089363          	bnez	a7,e8896f52 <udp_sendto_if_src_chksum+0xd8>
    e8896f30:	02f00593          	li	a1,47
    e8896f34:	0003c517          	auipc	a0,0x3c
    e8896f38:	80450513          	addi	a0,a0,-2044 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896f3c:	c3ce50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896f40:	00150693          	addi	a3,a0,1
    e8896f44:	2d400613          	li	a2,724
    e8896f48:	0003c597          	auipc	a1,0x3c
    e8896f4c:	aa858593          	addi	a1,a1,-1368 # e88d29f0 <lwip_cyclic_timers+0x4e0>
    e8896f50:	b795                	j	e8896eb4 <udp_sendto_if_src_chksum+0x3a>
    e8896f52:	8aba                	mv	s5,a4
  LWIP_ERROR("udp_sendto_if_src: invalid netif", netif != NULL, return ERR_ARG);
    e8896f54:	e315                	bnez	a4,e8896f78 <udp_sendto_if_src_chksum+0xfe>
    e8896f56:	02f00593          	li	a1,47
    e8896f5a:	0003b517          	auipc	a0,0x3b
    e8896f5e:	7de50513          	addi	a0,a0,2014 # e88d2738 <lwip_cyclic_timers+0x228>
    e8896f62:	c16e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8896f66:	00150693          	addi	a3,a0,1
    e8896f6a:	2d500613          	li	a2,725
    e8896f6e:	0003c597          	auipc	a1,0x3c
    e8896f72:	aaa58593          	addi	a1,a1,-1366 # e88d2a18 <lwip_cyclic_timers+0x508>
    e8896f76:	bf3d                	j	e8896eb4 <udp_sendto_if_src_chksum+0x3a>
  if (!IP_ADDR_PCB_VERSION_MATCH(pcb, src_ip) ||
    e8896f78:	01454703          	lbu	a4,20(a0)
    e8896f7c:	8c3e                	mv	s8,a5
    e8896f7e:	02e00793          	li	a5,46
    e8896f82:	892a                	mv	s2,a0
    e8896f84:	8cb6                	mv	s9,a3
    e8896f86:	8b42                	mv	s6,a6
    e8896f88:	00f70b63          	beq	a4,a5,e8896f9e <udp_sendto_if_src_chksum+0x124>
    e8896f8c:	0148c783          	lbu	a5,20(a7)
    return ERR_VAL;
    e8896f90:	5be9                	li	s7,-6
  if (!IP_ADDR_PCB_VERSION_MATCH(pcb, src_ip) ||
    e8896f92:	f2e798e3          	bne	a5,a4,e8896ec2 <udp_sendto_if_src_chksum+0x48>
    e8896f96:	01464703          	lbu	a4,20(a2) # c014 <memcmp-0xe87f3fec>
    e8896f9a:	f2f714e3          	bne	a4,a5,e8896ec2 <udp_sendto_if_src_chksum+0x48>
  if (pcb->local_port == 0) {
    e8896f9e:	04295783          	lhu	a5,66(s2)
    e8896fa2:	cb99                	beqz	a5,e8896fb8 <udp_sendto_if_src_chksum+0x13e>
  if ((u16_t)(p->tot_len + UDP_HLEN) < p->tot_len) {
    e8896fa4:	0109d703          	lhu	a4,16(s3)
    e8896fa8:	0087079b          	addiw	a5,a4,8
    e8896fac:	3c07b78b          	extu	a5,a5,15,0
    e8896fb0:	00e7fc63          	bgeu	a5,a4,e8896fc8 <udp_sendto_if_src_chksum+0x14e>
    return ERR_MEM;
    e8896fb4:	5bfd                	li	s7,-1
    e8896fb6:	b731                	j	e8896ec2 <udp_sendto_if_src_chksum+0x48>
    err = udp_bind(pcb, &pcb->local_ip, pcb->local_port);
    e8896fb8:	4601                	li	a2,0
    e8896fba:	85ca                	mv	a1,s2
    e8896fbc:	854a                	mv	a0,s2
    e8896fbe:	c6fff0ef          	jal	ra,e8896c2c <udp_bind>
    e8896fc2:	8baa                	mv	s7,a0
    if (err != ERR_OK) {
    e8896fc4:	d165                	beqz	a0,e8896fa4 <udp_sendto_if_src_chksum+0x12a>
    e8896fc6:	bdf5                	j	e8896ec2 <udp_sendto_if_src_chksum+0x48>
  if (pbuf_add_header(p, UDP_HLEN)) {
    e8896fc8:	45a1                	li	a1,8
    e8896fca:	854e                	mv	a0,s3
    e8896fcc:	9d0f80ef          	jal	ra,e888f19c <pbuf_add_header>
    e8896fd0:	844e                	mv	s0,s3
    e8896fd2:	c105                	beqz	a0,e8896ff2 <udp_sendto_if_src_chksum+0x178>
    q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM);
    e8896fd4:	28000613          	li	a2,640
    e8896fd8:	45a1                	li	a1,8
    e8896fda:	03600513          	li	a0,54
    e8896fde:	bb2f80ef          	jal	ra,e888f390 <pbuf_alloc>
    e8896fe2:	842a                	mv	s0,a0
    if (q == NULL) {
    e8896fe4:	d961                	beqz	a0,e8896fb4 <udp_sendto_if_src_chksum+0x13a>
    if (p->tot_len != 0) {
    e8896fe6:	0109d783          	lhu	a5,16(s3)
    e8896fea:	c781                	beqz	a5,e8896ff2 <udp_sendto_if_src_chksum+0x178>
      pbuf_chain(q, p);
    e8896fec:	85ce                	mv	a1,s3
    e8896fee:	f94f80ef          	jal	ra,e888f782 <pbuf_chain>
  LWIP_ASSERT("check that first pbuf can hold struct udp_hdr",
    e8896ff2:	01245703          	lhu	a4,18(s0)
    e8896ff6:	479d                	li	a5,7
    e8896ff8:	02e7e863          	bltu	a5,a4,e8897028 <udp_sendto_if_src_chksum+0x1ae>
    e8896ffc:	02f00593          	li	a1,47
    e8897000:	0003b517          	auipc	a0,0x3b
    e8897004:	73850513          	addi	a0,a0,1848 # e88d2738 <lwip_cyclic_timers+0x228>
    e8897008:	b70e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889700c:	00150693          	addi	a3,a0,1
    e8897010:	30e00613          	li	a2,782
    e8897014:	0003c597          	auipc	a1,0x3c
    e8897018:	a2c58593          	addi	a1,a1,-1492 # e88d2a40 <lwip_cyclic_timers+0x530>
    e889701c:	00038517          	auipc	a0,0x38
    e8897020:	09450513          	addi	a0,a0,148 # e88cf0b0 <kSinTable1024+0x900>
    e8897024:	aa2e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
  udphdr->src = lwip_htons(pcb->local_port);
    e8897028:	04295503          	lhu	a0,66(s2)
  udphdr = (struct udp_hdr *)q->payload;
    e889702c:	00843b83          	ld	s7,8(s0)
  udphdr->src = lwip_htons(pcb->local_port);
    e8897030:	eefef0ef          	jal	ra,e8886f1e <lwip_htons>
    e8897034:	00ab9023          	sh	a0,0(s7) # 1030000 <memcmp-0xe77d0000>
  udphdr->dest = lwip_htons(dst_port);
    e8897038:	8566                	mv	a0,s9
    e889703a:	ee5ef0ef          	jal	ra,e8886f1e <lwip_htons>
    e889703e:	00ab9123          	sh	a0,2(s7)
  udphdr->chksum = 0x0000;
    e8897042:	000b9323          	sh	zero,6(s7)
  if (((pcb->flags & UDP_FLAGS_MULTICAST_LOOP) != 0) && ip_addr_ismulticast(dst_ip)) {
    e8897046:	04094783          	lbu	a5,64(s2)
    e889704a:	8ba1                	andi	a5,a5,8
    e889704c:	c785                	beqz	a5,e8897074 <udp_sendto_if_src_chksum+0x1fa>
    e889704e:	0144c683          	lbu	a3,20(s1)
    e8897052:	4719                	li	a4,6
    e8897054:	409c                	lw	a5,0(s1)
    e8897056:	0ce69963          	bne	a3,a4,e8897128 <udp_sendto_if_src_chksum+0x2ae>
    e889705a:	0ff7f793          	andi	a5,a5,255
    e889705e:	f0178793          	addi	a5,a5,-255
    e8897062:	0017b793          	seqz	a5,a5
    e8897066:	c799                	beqz	a5,e8897074 <udp_sendto_if_src_chksum+0x1fa>
    q->flags |= PBUF_FLAG_MCASTLOOP;
    e8897068:	01544783          	lbu	a5,21(s0)
    e889706c:	0047e793          	ori	a5,a5,4
    e8897070:	00f40aa3          	sb	a5,21(s0)
    udphdr->len = lwip_htons(q->tot_len);
    e8897074:	01045503          	lhu	a0,16(s0)
    e8897078:	ea7ef0ef          	jal	ra,e8886f1e <lwip_htons>
    e889707c:	00ab9223          	sh	a0,4(s7)
      if (IP_IS_V6(dst_ip) || (pcb->flags & UDP_FLAGS_NOCHKSUM) == 0) {
    e8897080:	0144c703          	lbu	a4,20(s1)
    e8897084:	4799                	li	a5,6
    e8897086:	00f70663          	beq	a4,a5,e8897092 <udp_sendto_if_src_chksum+0x218>
    e889708a:	04094783          	lbu	a5,64(s2)
    e889708e:	8b85                	andi	a5,a5,1
    e8897090:	eb9d                	bnez	a5,e88970c6 <udp_sendto_if_src_chksum+0x24c>
        if (have_chksum) {
    e8897092:	01045603          	lhu	a2,16(s0)
    e8897096:	080c0e63          	beqz	s8,e8897132 <udp_sendto_if_src_chksum+0x2b8>
          udpchksum = ip_chksum_pseudo_partial(q, IP_PROTO_UDP,
    e889709a:	87a6                	mv	a5,s1
    e889709c:	8752                	mv	a4,s4
    e889709e:	46a1                	li	a3,8
    e88970a0:	45c5                	li	a1,17
    e88970a2:	8522                	mv	a0,s0
    e88970a4:	857f00ef          	jal	ra,e88878fa <ip_chksum_pseudo_partial>
          acc = udpchksum + (u16_t)~(chksum);
    e88970a8:	fffb4b13          	not	s6,s6
    e88970ac:	3c0b378b          	extu	a5,s6,15,0
    e88970b0:	9d3d                	addw	a0,a0,a5
          udpchksum = FOLD_U32T(acc);
    e88970b2:	7d05378b          	extu	a5,a0,31,16
    e88970b6:	953e                	add	a0,a0,a5
    e88970b8:	3c05350b          	extu	a0,a0,15,0
        if (udpchksum == 0x0000) {
    e88970bc:	e119                	bnez	a0,e88970c2 <udp_sendto_if_src_chksum+0x248>
          udpchksum = 0xffff;
    e88970be:	6541                	lui	a0,0x10
    e88970c0:	157d                	addi	a0,a0,-1
        udphdr->chksum = udpchksum;
    e88970c2:	00ab9323          	sh	a0,6(s7)
  ttl = (ip_addr_ismulticast(dst_ip) ? udp_get_multicast_ttl(pcb) : pcb->ttl);
    e88970c6:	0144c603          	lbu	a2,20(s1)
    e88970ca:	4719                	li	a4,6
    e88970cc:	409c                	lw	a5,0(s1)
    e88970ce:	06e61963          	bne	a2,a4,e8897140 <udp_sendto_if_src_chksum+0x2c6>
    e88970d2:	0ff7f793          	andi	a5,a5,255
    e88970d6:	f0178793          	addi	a5,a5,-255
    e88970da:	0017b793          	seqz	a5,a5
    e88970de:	c7b5                	beqz	a5,e889714a <udp_sendto_if_src_chksum+0x2d0>
    e88970e0:	04d94683          	lbu	a3,77(s2)
  err = ip_output_if_src(q, src_ip, dst_ip, ttl, pcb->tos, ip_proto, netif);
    e88970e4:	4799                	li	a5,6
    e88970e6:	03294703          	lbu	a4,50(s2)
    e88970ea:	8856                	mv	a6,s5
    e88970ec:	06f61263          	bne	a2,a5,e8897150 <udp_sendto_if_src_chksum+0x2d6>
    e88970f0:	47c5                	li	a5,17
    e88970f2:	8626                	mv	a2,s1
    e88970f4:	85d2                	mv	a1,s4
    e88970f6:	8522                	mv	a0,s0
    e88970f8:	acbf30ef          	jal	ra,e888abc2 <ip6_output_if_src>
  MIB2_STATS_INC(mib2.udpoutdatagrams);
    e88970fc:	0004f797          	auipc	a5,0x4f
    e8897100:	35478793          	addi	a5,a5,852 # e88e6450 <lwip_stats>
    e8897104:	1c47a703          	lw	a4,452(a5)
  err = ip_output_if_src(q, src_ip, dst_ip, ttl, pcb->tos, ip_proto, netif);
    e8897108:	8baa                	mv	s7,a0
  MIB2_STATS_INC(mib2.udpoutdatagrams);
    e889710a:	84be                	mv	s1,a5
    e889710c:	2705                	addiw	a4,a4,1
    e889710e:	1ce7a223          	sw	a4,452(a5)
  if (q != p) {
    e8897112:	01340563          	beq	s0,s3,e889711c <udp_sendto_if_src_chksum+0x2a2>
    pbuf_free(q);
    e8897116:	8522                	mv	a0,s0
    e8897118:	934f80ef          	jal	ra,e888f24c <pbuf_free>
  UDP_STATS_INC(udp.xmit);
    e889711c:	0944d783          	lhu	a5,148(s1)
    e8897120:	2785                	addiw	a5,a5,1
    e8897122:	08f49a23          	sh	a5,148(s1)
  return err;
    e8897126:	bb71                	j	e8896ec2 <udp_sendto_if_src_chksum+0x48>
  if (((pcb->flags & UDP_FLAGS_MULTICAST_LOOP) != 0) && ip_addr_ismulticast(dst_ip)) {
    e8897128:	0f07f793          	andi	a5,a5,240
    e889712c:	f2078793          	addi	a5,a5,-224
    e8897130:	bf0d                	j	e8897062 <udp_sendto_if_src_chksum+0x1e8>
          udpchksum = ip_chksum_pseudo(q, IP_PROTO_UDP, q->tot_len,
    e8897132:	8726                	mv	a4,s1
    e8897134:	86d2                	mv	a3,s4
    e8897136:	45c5                	li	a1,17
    e8897138:	8522                	mv	a0,s0
    e889713a:	f14f00ef          	jal	ra,e888784e <ip_chksum_pseudo>
    e889713e:	bfbd                	j	e88970bc <udp_sendto_if_src_chksum+0x242>
  ttl = (ip_addr_ismulticast(dst_ip) ? udp_get_multicast_ttl(pcb) : pcb->ttl);
    e8897140:	0f07f793          	andi	a5,a5,240
    e8897144:	f2078793          	addi	a5,a5,-224
    e8897148:	bf49                	j	e88970da <udp_sendto_if_src_chksum+0x260>
    e889714a:	03394683          	lbu	a3,51(s2)
    e889714e:	bf59                	j	e88970e4 <udp_sendto_if_src_chksum+0x26a>
  err = ip_output_if_src(q, src_ip, dst_ip, ttl, pcb->tos, ip_proto, netif);
    e8897150:	47c5                	li	a5,17
    e8897152:	8626                	mv	a2,s1
    e8897154:	85d2                	mv	a1,s4
    e8897156:	8522                	mv	a0,s0
    e8897158:	c52f20ef          	jal	ra,e88895aa <ip4_output_if_src>
    e889715c:	b745                	j	e88970fc <udp_sendto_if_src_chksum+0x282>

00000000e889715e <udp_sendto_if_chksum>:
{
    e889715e:	715d                	addi	sp,sp,-80
    e8897160:	e486                	sd	ra,72(sp)
    e8897162:	e0a2                	sd	s0,64(sp)
    e8897164:	fc26                	sd	s1,56(sp)
  LWIP_ERROR("udp_sendto_if: invalid pcb", pcb != NULL, return ERR_ARG);
    e8897166:	ed0d                	bnez	a0,e88971a0 <udp_sendto_if_chksum+0x42>
    e8897168:	02f00593          	li	a1,47
    e889716c:	0003b517          	auipc	a0,0x3b
    e8897170:	5cc50513          	addi	a0,a0,1484 # e88d2738 <lwip_cyclic_timers+0x228>
    e8897174:	a04e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897178:	00150693          	addi	a3,a0,1
    e889717c:	28000613          	li	a2,640
    e8897180:	0003b597          	auipc	a1,0x3b
    e8897184:	78858593          	addi	a1,a1,1928 # e88d2908 <lwip_cyclic_timers+0x3f8>
  LWIP_ERROR("udp_sendto_if: invalid netif", netif != NULL, return ERR_ARG);
    e8897188:	00038517          	auipc	a0,0x38
    e889718c:	f2850513          	addi	a0,a0,-216 # e88cf0b0 <kSinTable1024+0x900>
    e8897190:	936e50ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8897194:	5541                	li	a0,-16
}
    e8897196:	60a6                	ld	ra,72(sp)
    e8897198:	6406                	ld	s0,64(sp)
    e889719a:	74e2                	ld	s1,56(sp)
    e889719c:	6161                	addi	sp,sp,80
    e889719e:	8082                	ret
    e88971a0:	84ae                	mv	s1,a1
  LWIP_ERROR("udp_sendto_if: invalid pbuf", p != NULL, return ERR_ARG);
    e88971a2:	e195                	bnez	a1,e88971c6 <udp_sendto_if_chksum+0x68>
    e88971a4:	02f00593          	li	a1,47
    e88971a8:	0003b517          	auipc	a0,0x3b
    e88971ac:	59050513          	addi	a0,a0,1424 # e88d2738 <lwip_cyclic_timers+0x228>
    e88971b0:	9c8e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88971b4:	00150693          	addi	a3,a0,1
    e88971b8:	28100613          	li	a2,641
    e88971bc:	0003b597          	auipc	a1,0x3b
    e88971c0:	76c58593          	addi	a1,a1,1900 # e88d2928 <lwip_cyclic_timers+0x418>
    e88971c4:	b7d1                	j	e8897188 <udp_sendto_if_chksum+0x2a>
  LWIP_ERROR("udp_sendto_if: invalid dst_ip", dst_ip != NULL, return ERR_ARG);
    e88971c6:	e215                	bnez	a2,e88971ea <udp_sendto_if_chksum+0x8c>
    e88971c8:	02f00593          	li	a1,47
    e88971cc:	0003b517          	auipc	a0,0x3b
    e88971d0:	56c50513          	addi	a0,a0,1388 # e88d2738 <lwip_cyclic_timers+0x228>
    e88971d4:	9a4e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88971d8:	00150693          	addi	a3,a0,1
    e88971dc:	28200613          	li	a2,642
    e88971e0:	0003b597          	auipc	a1,0x3b
    e88971e4:	76858593          	addi	a1,a1,1896 # e88d2948 <lwip_cyclic_timers+0x438>
    e88971e8:	b745                	j	e8897188 <udp_sendto_if_chksum+0x2a>
  LWIP_ERROR("udp_sendto_if: invalid netif", netif != NULL, return ERR_ARG);
    e88971ea:	e315                	bnez	a4,e889720e <udp_sendto_if_chksum+0xb0>
    e88971ec:	02f00593          	li	a1,47
    e88971f0:	0003b517          	auipc	a0,0x3b
    e88971f4:	54850513          	addi	a0,a0,1352 # e88d2738 <lwip_cyclic_timers+0x228>
    e88971f8:	980e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88971fc:	00150693          	addi	a3,a0,1
    e8897200:	28300613          	li	a2,643
    e8897204:	0003b597          	auipc	a1,0x3b
    e8897208:	76458593          	addi	a1,a1,1892 # e88d2968 <lwip_cyclic_timers+0x458>
    e889720c:	bfb5                	j	e8897188 <udp_sendto_if_chksum+0x2a>
    e889720e:	842a                	mv	s0,a0
  if (!IP_ADDR_PCB_VERSION_MATCH(pcb, dst_ip)) {
    e8897210:	01454503          	lbu	a0,20(a0)
    e8897214:	02e00893          	li	a7,46
    e8897218:	01464583          	lbu	a1,20(a2)
    e889721c:	01150463          	beq	a0,a7,e8897224 <udp_sendto_if_chksum+0xc6>
    e8897220:	08b51b63          	bne	a0,a1,e88972b6 <udp_sendto_if_chksum+0x158>
  if (IP_IS_V6(dst_ip)) {
    e8897224:	4519                	li	a0,6
    e8897226:	06a59863          	bne	a1,a0,e8897296 <udp_sendto_if_chksum+0x138>
    if (ip6_addr_isany(ip_2_ip6(&pcb->local_ip)) ||
    e889722a:	600c                	ld	a1,0(s0)
    e889722c:	e199                	bnez	a1,e8897232 <udp_sendto_if_chksum+0xd4>
    e889722e:	640c                	ld	a1,8(s0)
    e8897230:	c599                	beqz	a1,e889723e <udp_sendto_if_chksum+0xe0>
    e8897232:	00044503          	lbu	a0,0(s0)
    e8897236:	0ff00593          	li	a1,255
    e889723a:	02b51463          	bne	a0,a1,e8897262 <udp_sendto_if_chksum+0x104>
      src_ip = ip6_select_source_address(netif, ip_2_ip6(dst_ip));
    e889723e:	85b2                	mv	a1,a2
    e8897240:	853a                	mv	a0,a4
    e8897242:	f042                	sd	a6,32(sp)
    e8897244:	ec3e                	sd	a5,24(sp)
    e8897246:	e836                	sd	a3,16(sp)
    e8897248:	e432                	sd	a2,8(sp)
    e889724a:	e03a                	sd	a4,0(sp)
    e889724c:	a20f30ef          	jal	ra,e888a46c <ip6_select_source_address>
    e8897250:	88aa                	mv	a7,a0
      if (src_ip == NULL) {
    e8897252:	f8c1470b          	ldd	a4,a2,(sp),0,4
    e8897256:	faf1468b          	ldd	a3,a5,(sp),1,4
    e889725a:	7802                	ld	a6,32(sp)
    e889725c:	e50d                	bnez	a0,e8897286 <udp_sendto_if_chksum+0x128>
        return ERR_RTE;
    e889725e:	5571                	li	a0,-4
    e8897260:	bf1d                	j	e8897196 <udp_sendto_if_chksum+0x38>
      if (netif_get_ip6_addr_match(netif, ip_2_ip6(&pcb->local_ip)) < 0) {
    e8897262:	853a                	mv	a0,a4
    e8897264:	85a2                	mv	a1,s0
    e8897266:	f442                	sd	a6,40(sp)
    e8897268:	f03e                	sd	a5,32(sp)
    e889726a:	ec36                	sd	a3,24(sp)
    e889726c:	e832                	sd	a2,16(sp)
    e889726e:	e03a                	sd	a4,0(sp)
    if (ip6_addr_isany(ip_2_ip6(&pcb->local_ip)) ||
    e8897270:	e422                	sd	s0,8(sp)
      if (netif_get_ip6_addr_match(netif, ip_2_ip6(&pcb->local_ip)) < 0) {
    e8897272:	cf6f70ef          	jal	ra,e888e768 <netif_get_ip6_addr_match>
    e8897276:	f911470b          	ldd	a4,a7,(sp),0,4
    e889727a:	fad1460b          	ldd	a2,a3,(sp),1,4
    e889727e:	fd01478b          	ldd	a5,a6,(sp),2,4
    e8897282:	fc054ee3          	bltz	a0,e889725e <udp_sendto_if_chksum+0x100>
  return udp_sendto_if_src_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum, src_ip);
    e8897286:	8522                	mv	a0,s0
}
    e8897288:	6406                	ld	s0,64(sp)
    e889728a:	60a6                	ld	ra,72(sp)
  return udp_sendto_if_src_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum, src_ip);
    e889728c:	85a6                	mv	a1,s1
}
    e889728e:	74e2                	ld	s1,56(sp)
    e8897290:	6161                	addi	sp,sp,80
  return udp_sendto_if_src_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum, src_ip);
    e8897292:	be9ff06f          	j	e8896e7a <udp_sendto_if_src_chksum>
    if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) ||
    e8897296:	400c                	lw	a1,0(s0)
    e8897298:	c599                	beqz	a1,e88972a6 <udp_sendto_if_chksum+0x148>
    e889729a:	0f05f513          	andi	a0,a1,240
    e889729e:	0e000893          	li	a7,224
    e88972a2:	01151563          	bne	a0,a7,e88972ac <udp_sendto_if_chksum+0x14e>
      src_ip = netif_ip_addr4(netif);
    e88972a6:	00870893          	addi	a7,a4,8
    e88972aa:	bff1                	j	e8897286 <udp_sendto_if_chksum+0x128>
      if (!ip4_addr_cmp(ip_2_ip4(&(pcb->local_ip)), netif_ip4_addr(netif))) {
    e88972ac:	4708                	lw	a0,8(a4)
    e88972ae:	fab518e3          	bne	a0,a1,e889725e <udp_sendto_if_chksum+0x100>
      src_ip = &pcb->local_ip;
    e88972b2:	88a2                	mv	a7,s0
    e88972b4:	bfc9                	j	e8897286 <udp_sendto_if_chksum+0x128>
    return ERR_VAL;
    e88972b6:	5569                	li	a0,-6
    e88972b8:	bdf9                	j	e8897196 <udp_sendto_if_chksum+0x38>

00000000e88972ba <udp_sendto_chksum>:
{
    e88972ba:	7139                	addi	sp,sp,-64
    e88972bc:	fc06                	sd	ra,56(sp)
    e88972be:	e422                	sd	s0,8(sp)
    e88972c0:	e826                	sd	s1,16(sp)
    e88972c2:	ec4a                	sd	s2,24(sp)
    e88972c4:	f04e                	sd	s3,32(sp)
    e88972c6:	f452                	sd	s4,40(sp)
    e88972c8:	f856                	sd	s5,48(sp)
  LWIP_ERROR("udp_sendto: invalid pcb", pcb != NULL, return ERR_ARG);
    e88972ca:	e129                	bnez	a0,e889730c <udp_sendto_chksum+0x52>
    e88972cc:	02f00593          	li	a1,47
    e88972d0:	0003b517          	auipc	a0,0x3b
    e88972d4:	46850513          	addi	a0,a0,1128 # e88d2738 <lwip_cyclic_timers+0x228>
    e88972d8:	8a0e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88972dc:	00150693          	addi	a3,a0,1
    e88972e0:	21800613          	li	a2,536
    e88972e4:	0003b597          	auipc	a1,0x3b
    e88972e8:	5cc58593          	addi	a1,a1,1484 # e88d28b0 <lwip_cyclic_timers+0x3a0>
  LWIP_ERROR("udp_sendto: invalid dst_ip", dst_ip != NULL, return ERR_ARG);
    e88972ec:	00038517          	auipc	a0,0x38
    e88972f0:	dc450513          	addi	a0,a0,-572 # e88cf0b0 <kSinTable1024+0x900>
    e88972f4:	fd3e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88972f8:	5541                	li	a0,-16
}
    e88972fa:	70e2                	ld	ra,56(sp)
    e88972fc:	6422                	ld	s0,8(sp)
    e88972fe:	64c2                	ld	s1,16(sp)
    e8897300:	6962                	ld	s2,24(sp)
    e8897302:	7982                	ld	s3,32(sp)
    e8897304:	7a22                	ld	s4,40(sp)
    e8897306:	7ac2                	ld	s5,48(sp)
    e8897308:	6121                	addi	sp,sp,64
    e889730a:	8082                	ret
    e889730c:	892e                	mv	s2,a1
  LWIP_ERROR("udp_sendto: invalid pbuf", p != NULL, return ERR_ARG);
    e889730e:	e195                	bnez	a1,e8897332 <udp_sendto_chksum+0x78>
    e8897310:	02f00593          	li	a1,47
    e8897314:	0003b517          	auipc	a0,0x3b
    e8897318:	42450513          	addi	a0,a0,1060 # e88d2738 <lwip_cyclic_timers+0x228>
    e889731c:	85ce50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897320:	00150693          	addi	a3,a0,1
    e8897324:	21900613          	li	a2,537
    e8897328:	0003b597          	auipc	a1,0x3b
    e889732c:	5a058593          	addi	a1,a1,1440 # e88d28c8 <lwip_cyclic_timers+0x3b8>
    e8897330:	bf75                	j	e88972ec <udp_sendto_chksum+0x32>
    e8897332:	84b2                	mv	s1,a2
  LWIP_ERROR("udp_sendto: invalid dst_ip", dst_ip != NULL, return ERR_ARG);
    e8897334:	e215                	bnez	a2,e8897358 <udp_sendto_chksum+0x9e>
    e8897336:	02f00593          	li	a1,47
    e889733a:	0003b517          	auipc	a0,0x3b
    e889733e:	3fe50513          	addi	a0,a0,1022 # e88d2738 <lwip_cyclic_timers+0x228>
    e8897342:	836e50ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897346:	00150693          	addi	a3,a0,1
    e889734a:	21a00613          	li	a2,538
    e889734e:	0003b597          	auipc	a1,0x3b
    e8897352:	59a58593          	addi	a1,a1,1434 # e88d28e8 <lwip_cyclic_timers+0x3d8>
    e8897356:	bf59                	j	e88972ec <udp_sendto_chksum+0x32>
    e8897358:	8abe                	mv	s5,a5
  if (!IP_ADDR_PCB_VERSION_MATCH(pcb, dst_ip)) {
    e889735a:	01454783          	lbu	a5,20(a0)
    e889735e:	8a3a                	mv	s4,a4
    e8897360:	02e00713          	li	a4,46
    e8897364:	842a                	mv	s0,a0
    e8897366:	89b6                	mv	s3,a3
    e8897368:	00e78663          	beq	a5,a4,e8897374 <udp_sendto_chksum+0xba>
    e889736c:	01464703          	lbu	a4,20(a2)
    e8897370:	0af71963          	bne	a4,a5,e8897422 <udp_sendto_chksum+0x168>
  if (pcb->netif_idx != NETIF_NO_INDEX) {
    e8897374:	03044503          	lbu	a0,48(s0)
    e8897378:	cd19                	beqz	a0,e8897396 <udp_sendto_chksum+0xdc>
    netif = netif_get_by_index(pcb->netif_idx);
    e889737a:	cb6f70ef          	jal	ra,e888e830 <netif_get_by_index>
  if (netif == NULL) {
    e889737e:	e929                	bnez	a0,e88973d0 <udp_sendto_chksum+0x116>
    UDP_STATS_INC(udp.rterr);
    e8897380:	0004f717          	auipc	a4,0x4f
    e8897384:	0d070713          	addi	a4,a4,208 # e88e6450 <lwip_stats>
    e8897388:	0a275783          	lhu	a5,162(a4)
    return ERR_RTE;
    e889738c:	5571                	li	a0,-4
    UDP_STATS_INC(udp.rterr);
    e889738e:	2785                	addiw	a5,a5,1
    e8897390:	0af71123          	sh	a5,162(a4)
    return ERR_RTE;
    e8897394:	b79d                	j	e88972fa <udp_sendto_chksum+0x40>
    if (ip_addr_ismulticast(dst_ip)) {
    e8897396:	0144c703          	lbu	a4,20(s1)
    e889739a:	4699                	li	a3,6
    e889739c:	409c                	lw	a5,0(s1)
    e889739e:	00d71d63          	bne	a4,a3,e88973b8 <udp_sendto_chksum+0xfe>
    e88973a2:	0ff7f793          	andi	a5,a5,255
    e88973a6:	0ff00693          	li	a3,255
    e88973aa:	00d78d63          	beq	a5,a3,e88973c4 <udp_sendto_chksum+0x10a>
      netif = ip_route(&pcb->local_ip, dst_ip);
    e88973ae:	85a6                	mv	a1,s1
    e88973b0:	8522                	mv	a0,s0
    e88973b2:	e8bf20ef          	jal	ra,e888a23c <ip6_route>
    e88973b6:	b7e1                	j	e889737e <udp_sendto_chksum+0xc4>
    if (ip_addr_ismulticast(dst_ip)) {
    e88973b8:	0f07f793          	andi	a5,a5,240
    e88973bc:	0e000693          	li	a3,224
    e88973c0:	02d79f63          	bne	a5,a3,e88973fe <udp_sendto_chksum+0x144>
      if (pcb->mcast_ifindex != NETIF_NO_INDEX) {
    e88973c4:	04c44503          	lbu	a0,76(s0)
    e88973c8:	c50d                	beqz	a0,e88973f2 <udp_sendto_chksum+0x138>
        netif = netif_get_by_index(pcb->mcast_ifindex);
    e88973ca:	c66f70ef          	jal	ra,e888e830 <netif_get_by_index>
    if (netif == NULL)
    e88973ce:	c11d                	beqz	a0,e88973f4 <udp_sendto_chksum+0x13a>
  return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum);
    e88973d0:	872a                	mv	a4,a0
    e88973d2:	8522                	mv	a0,s0
}
    e88973d4:	6422                	ld	s0,8(sp)
    e88973d6:	70e2                	ld	ra,56(sp)
  return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum);
    e88973d8:	8856                	mv	a6,s5
    e88973da:	87d2                	mv	a5,s4
}
    e88973dc:	7ac2                	ld	s5,48(sp)
    e88973de:	7a22                	ld	s4,40(sp)
  return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum);
    e88973e0:	86ce                	mv	a3,s3
    e88973e2:	8626                	mv	a2,s1
}
    e88973e4:	7982                	ld	s3,32(sp)
    e88973e6:	64c2                	ld	s1,16(sp)
  return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum);
    e88973e8:	85ca                	mv	a1,s2
}
    e88973ea:	6962                	ld	s2,24(sp)
    e88973ec:	6121                	addi	sp,sp,64
  return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum);
    e88973ee:	d71ff06f          	j	e889715e <udp_sendto_if_chksum>
        if (IP_IS_V4(dst_ip))
    e88973f2:	cb11                	beqz	a4,e8897406 <udp_sendto_chksum+0x14c>
      netif = ip_route(&pcb->local_ip, dst_ip);
    e88973f4:	0144c703          	lbu	a4,20(s1)
    e88973f8:	4799                	li	a5,6
    e88973fa:	faf70ae3          	beq	a4,a5,e88973ae <udp_sendto_chksum+0xf4>
    e88973fe:	8526                	mv	a0,s1
    e8897400:	a39f10ef          	jal	ra,e8888e38 <ip4_route>
    e8897404:	bfad                	j	e889737e <udp_sendto_chksum+0xc4>
          if (!ip4_addr_isany_val(pcb->mcast_ip4) &&
    e8897406:	443c                	lw	a5,72(s0)
    e8897408:	dbfd                	beqz	a5,e88973fe <udp_sendto_chksum+0x144>
    e889740a:	00039717          	auipc	a4,0x39
    e889740e:	bce70713          	addi	a4,a4,-1074 # e88cffd8 <ip_addr_broadcast>
    e8897412:	4318                	lw	a4,0(a4)
    e8897414:	fef705e3          	beq	a4,a5,e88973fe <udp_sendto_chksum+0x144>
            netif = ip4_route_src(ip_2_ip4(&pcb->local_ip), &pcb->mcast_ip4);
    e8897418:	04840513          	addi	a0,s0,72
    e889741c:	a1df10ef          	jal	ra,e8888e38 <ip4_route>
    e8897420:	b77d                	j	e88973ce <udp_sendto_chksum+0x114>
    return ERR_VAL;
    e8897422:	5569                	li	a0,-6
    e8897424:	bdd9                	j	e88972fa <udp_sendto_chksum+0x40>

00000000e8897426 <udp_send_chksum>:
{
    e8897426:	1141                	addi	sp,sp,-16
    e8897428:	e406                	sd	ra,8(sp)
  LWIP_ERROR("udp_send_chksum: invalid pcb", pcb != NULL, return ERR_ARG);
    e889742a:	e91d                	bnez	a0,e8897460 <udp_send_chksum+0x3a>
    e889742c:	02f00593          	li	a1,47
    e8897430:	0003b517          	auipc	a0,0x3b
    e8897434:	30850513          	addi	a0,a0,776 # e88d2738 <lwip_cyclic_timers+0x228>
    e8897438:	f41e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889743c:	00150693          	addi	a3,a0,1
    e8897440:	1e800613          	li	a2,488
    e8897444:	0003b597          	auipc	a1,0x3b
    e8897448:	42c58593          	addi	a1,a1,1068 # e88d2870 <lwip_cyclic_timers+0x360>
  LWIP_ERROR("udp_send_chksum: invalid pbuf", p != NULL, return ERR_ARG);
    e889744c:	00038517          	auipc	a0,0x38
    e8897450:	c6450513          	addi	a0,a0,-924 # e88cf0b0 <kSinTable1024+0x900>
    e8897454:	e73e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8897458:	5541                	li	a0,-16
}
    e889745a:	60a2                	ld	ra,8(sp)
    e889745c:	0141                	addi	sp,sp,16
    e889745e:	8082                	ret
  LWIP_ERROR("udp_send_chksum: invalid pbuf", p != NULL, return ERR_ARG);
    e8897460:	e195                	bnez	a1,e8897484 <udp_send_chksum+0x5e>
    e8897462:	02f00593          	li	a1,47
    e8897466:	0003b517          	auipc	a0,0x3b
    e889746a:	2d250513          	addi	a0,a0,722 # e88d2738 <lwip_cyclic_timers+0x228>
    e889746e:	f0be40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897472:	00150693          	addi	a3,a0,1
    e8897476:	1e900613          	li	a2,489
    e889747a:	0003b597          	auipc	a1,0x3b
    e889747e:	41658593          	addi	a1,a1,1046 # e88d2890 <lwip_cyclic_timers+0x380>
    e8897482:	b7e9                	j	e889744c <udp_send_chksum+0x26>
    e8897484:	8732                	mv	a4,a2
  if (IP_IS_ANY_TYPE_VAL(pcb->remote_ip)) {
    e8897486:	02c54603          	lbu	a2,44(a0)
    e889748a:	87b6                	mv	a5,a3
    e889748c:	02e00693          	li	a3,46
    e8897490:	00d60a63          	beq	a2,a3,e88974a4 <udp_send_chksum+0x7e>
}
    e8897494:	60a2                	ld	ra,8(sp)
  return udp_sendto_chksum(pcb, p, &pcb->remote_ip, pcb->remote_port,
    e8897496:	04455683          	lhu	a3,68(a0)
    e889749a:	01850613          	addi	a2,a0,24
}
    e889749e:	0141                	addi	sp,sp,16
  return udp_sendto_chksum(pcb, p, &pcb->remote_ip, pcb->remote_port,
    e88974a0:	e1bff06f          	j	e88972ba <udp_sendto_chksum>
    return ERR_VAL;
    e88974a4:	5569                	li	a0,-6
    e88974a6:	bf55                	j	e889745a <udp_send_chksum+0x34>

00000000e88974a8 <udp_sendto>:
  return udp_sendto_chksum(pcb, p, dst_ip, dst_port, 0, 0);
    e88974a8:	4781                	li	a5,0
    e88974aa:	4701                	li	a4,0
    e88974ac:	e0fff06f          	j	e88972ba <udp_sendto_chksum>

00000000e88974b0 <udp_sendto_if>:
  return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, 0, 0);
    e88974b0:	4801                	li	a6,0
    e88974b2:	4781                	li	a5,0
    e88974b4:	cabff06f          	j	e889715e <udp_sendto_if_chksum>

00000000e88974b8 <udp_sendto_if_src>:
  return udp_sendto_if_src_chksum(pcb, p, dst_ip, dst_port, netif, 0, 0, src_ip);
    e88974b8:	88be                	mv	a7,a5
    e88974ba:	4801                	li	a6,0
    e88974bc:	4781                	li	a5,0
    e88974be:	9bdff06f          	j	e8896e7a <udp_sendto_if_src_chksum>

00000000e88974c2 <udp_bind_netif>:
  LWIP_ASSERT_CORE_LOCKED();

  if (netif != NULL) {
    pcb->netif_idx = netif_get_index(netif);
  } else {
    pcb->netif_idx = NETIF_NO_INDEX;
    e88974c2:	4781                	li	a5,0
  if (netif != NULL) {
    e88974c4:	c591                	beqz	a1,e88974d0 <udp_bind_netif+0xe>
    pcb->netif_idx = netif_get_index(netif);
    e88974c6:	10e5c783          	lbu	a5,270(a1)
    e88974ca:	2785                	addiw	a5,a5,1
    e88974cc:	0ff7f793          	andi	a5,a5,255
    e88974d0:	02f50823          	sb	a5,48(a0)
  }
}
    e88974d4:	8082                	ret

00000000e88974d6 <udp_connect>:
 *
 * @see udp_disconnect()
 */
err_t
udp_connect(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
{
    e88974d6:	1101                	addi	sp,sp,-32
    e88974d8:	ec06                	sd	ra,24(sp)
    e88974da:	e84a                	sd	s2,16(sp)
    e88974dc:	f891540b          	sdd	s0,s1,(sp),0,4
  struct udp_pcb *ipcb;

  LWIP_ASSERT_CORE_LOCKED();

  LWIP_ERROR("udp_connect: invalid pcb", pcb != NULL, return ERR_ARG);
    e88974e0:	ed15                	bnez	a0,e889751c <udp_connect+0x46>
    e88974e2:	02f00593          	li	a1,47
    e88974e6:	0003b517          	auipc	a0,0x3b
    e88974ea:	25250513          	addi	a0,a0,594 # e88d2738 <lwip_cyclic_timers+0x228>
    e88974ee:	e8be40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88974f2:	00150693          	addi	a3,a0,1
    e88974f6:	43500613          	li	a2,1077
    e88974fa:	0003b597          	auipc	a1,0x3b
    e88974fe:	1de58593          	addi	a1,a1,478 # e88d26d8 <lwip_cyclic_timers+0x1c8>
  LWIP_ERROR("udp_connect: invalid ipaddr", ipaddr != NULL, return ERR_ARG);
    e8897502:	00038517          	auipc	a0,0x38
    e8897506:	bae50513          	addi	a0,a0,-1106 # e88cf0b0 <kSinTable1024+0x900>
    e889750a:	dbde40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889750e:	5541                	li	a0,-16
  }
  /* PCB not yet on the list, add PCB now */
  pcb->next = udp_pcbs;
  udp_pcbs = pcb;
  return ERR_OK;
}
    e8897510:	60e2                	ld	ra,24(sp)
    e8897512:	f891440b          	ldd	s0,s1,(sp),0,4
    e8897516:	6942                	ld	s2,16(sp)
    e8897518:	6105                	addi	sp,sp,32
    e889751a:	8082                	ret
    e889751c:	892e                	mv	s2,a1
  LWIP_ERROR("udp_connect: invalid ipaddr", ipaddr != NULL, return ERR_ARG);
    e889751e:	e195                	bnez	a1,e8897542 <udp_connect+0x6c>
    e8897520:	02f00593          	li	a1,47
    e8897524:	0003b517          	auipc	a0,0x3b
    e8897528:	21450513          	addi	a0,a0,532 # e88d2738 <lwip_cyclic_timers+0x228>
    e889752c:	e4de40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897530:	00150693          	addi	a3,a0,1
    e8897534:	43600613          	li	a2,1078
    e8897538:	0003b597          	auipc	a1,0x3b
    e889753c:	1c058593          	addi	a1,a1,448 # e88d26f8 <lwip_cyclic_timers+0x1e8>
    e8897540:	b7c9                	j	e8897502 <udp_connect+0x2c>
  if (pcb->local_port == 0) {
    e8897542:	04255783          	lhu	a5,66(a0)
    e8897546:	842a                	mv	s0,a0
    e8897548:	84b2                	mv	s1,a2
    e889754a:	cfa9                	beqz	a5,e88975a4 <udp_connect+0xce>
  ip_addr_set_ipaddr(&pcb->remote_ip, ipaddr);
    e889754c:	01494783          	lbu	a5,20(s2)
    e8897550:	4719                	li	a4,6
    e8897552:	02f40623          	sb	a5,44(s0)
    e8897556:	04e79d63          	bne	a5,a4,e88975b0 <udp_connect+0xda>
    e889755a:	00092783          	lw	a5,0(s2)
    e889755e:	cc1c                	sw	a5,24(s0)
    e8897560:	00492703          	lw	a4,4(s2)
    e8897564:	cc58                	sw	a4,28(s0)
    e8897566:	00892703          	lw	a4,8(s2)
    e889756a:	d018                	sw	a4,32(s0)
    e889756c:	00c92703          	lw	a4,12(s2)
    e8897570:	d058                	sw	a4,36(s0)
    e8897572:	01094903          	lbu	s2,16(s2)
    e8897576:	03240423          	sb	s2,40(s0)
  if (IP_IS_V6(&pcb->remote_ip) &&
    e889757a:	04090563          	beqz	s2,e88975c4 <udp_connect+0xee>
  pcb->flags |= UDP_FLAGS_CONNECTED;
    e889757e:	04044783          	lbu	a5,64(s0)
  pcb->remote_port = port;
    e8897582:	04941223          	sh	s1,68(s0)
  pcb->flags |= UDP_FLAGS_CONNECTED;
    e8897586:	0047e793          	ori	a5,a5,4
    e889758a:	04f40023          	sb	a5,64(s0)
  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {
    e889758e:	0004f797          	auipc	a5,0x4f
    e8897592:	18a78793          	addi	a5,a5,394 # e88e6718 <udp_pcbs>
    e8897596:	6394                	ld	a3,0(a5)
    e8897598:	8736                	mv	a4,a3
    e889759a:	eb41                	bnez	a4,e889762a <udp_connect+0x154>
  pcb->next = udp_pcbs;
    e889759c:	fc14                	sd	a3,56(s0)
  udp_pcbs = pcb;
    e889759e:	e380                	sd	s0,0(a5)
      return ERR_OK;
    e88975a0:	4501                	li	a0,0
    e88975a2:	b7bd                	j	e8897510 <udp_connect+0x3a>
    err_t err = udp_bind(pcb, &pcb->local_ip, pcb->local_port);
    e88975a4:	4601                	li	a2,0
    e88975a6:	85aa                	mv	a1,a0
    e88975a8:	e84ff0ef          	jal	ra,e8896c2c <udp_bind>
    if (err != ERR_OK) {
    e88975ac:	d145                	beqz	a0,e889754c <udp_connect+0x76>
    e88975ae:	b78d                	j	e8897510 <udp_connect+0x3a>
  ip_addr_set_ipaddr(&pcb->remote_ip, ipaddr);
    e88975b0:	00092783          	lw	a5,0(s2)
    e88975b4:	00042e23          	sw	zero,28(s0)
    e88975b8:	02043023          	sd	zero,32(s0)
    e88975bc:	cc1c                	sw	a5,24(s0)
    e88975be:	02040423          	sb	zero,40(s0)
  if (IP_IS_V6(&pcb->remote_ip) &&
    e88975c2:	bf75                	j	e889757e <udp_connect+0xa8>
      ip6_addr_lacks_zone(ip_2_ip6(&pcb->remote_ip), IP6_UNKNOWN)) {
    e88975c4:	6731                	lui	a4,0xc
    e88975c6:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e88975ca:	66a1                	lui	a3,0x8
    e88975cc:	8f7d                	and	a4,a4,a5
    e88975ce:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e88975d2:	00d70b63          	beq	a4,a3,e88975e8 <udp_connect+0x112>
    e88975d6:	6725                	lui	a4,0x9
    e88975d8:	177d                	addi	a4,a4,-1
    e88975da:	8ff9                	and	a5,a5,a4
    e88975dc:	e017879b          	addiw	a5,a5,-511
    e88975e0:	eff7f793          	andi	a5,a5,-257
    e88975e4:	2781                	sext.w	a5,a5
    e88975e6:	ffc1                	bnez	a5,e889757e <udp_connect+0xa8>
    ip6_addr_select_zone(ip_2_ip6(&pcb->remote_ip), ip_2_ip6(&pcb->local_ip));
    e88975e8:	01840593          	addi	a1,s0,24
    e88975ec:	8522                	mv	a0,s0
    e88975ee:	c4ff20ef          	jal	ra,e888a23c <ip6_route>
    e88975f2:	d551                	beqz	a0,e889757e <udp_connect+0xa8>
    e88975f4:	4c1c                	lw	a5,24(s0)
    e88975f6:	6731                	lui	a4,0xc
    e88975f8:	0ff70713          	addi	a4,a4,255 # c0ff <memcmp-0xe87f3f01>
    e88975fc:	66a1                	lui	a3,0x8
    e88975fe:	8f7d                	and	a4,a4,a5
    e8897600:	0fe68693          	addi	a3,a3,254 # 80fe <memcmp-0xe87f7f02>
    e8897604:	00d70b63          	beq	a4,a3,e889761a <udp_connect+0x144>
    e8897608:	6725                	lui	a4,0x9
    e889760a:	177d                	addi	a4,a4,-1
    e889760c:	8ff9                	and	a5,a5,a4
    e889760e:	e017879b          	addiw	a5,a5,-511
    e8897612:	eff7f793          	andi	a5,a5,-257
    e8897616:	2781                	sext.w	a5,a5
    e8897618:	e791                	bnez	a5,e8897624 <udp_connect+0x14e>
    e889761a:	10e54903          	lbu	s2,270(a0)
    e889761e:	2905                	addiw	s2,s2,1
    e8897620:	0ff97913          	andi	s2,s2,255
    e8897624:	03240423          	sb	s2,40(s0)
    e8897628:	bf99                	j	e889757e <udp_connect+0xa8>
    if (pcb == ipcb) {
    e889762a:	f6870be3          	beq	a4,s0,e88975a0 <udp_connect+0xca>
  for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) {
    e889762e:	7f18                	ld	a4,56(a4)
    e8897630:	b7ad                	j	e889759a <udp_connect+0xc4>

00000000e8897632 <udp_disconnect>:
void
udp_disconnect(struct udp_pcb *pcb)
{
  LWIP_ASSERT_CORE_LOCKED();

  LWIP_ERROR("udp_disconnect: invalid pcb", pcb != NULL, return);
    e8897632:	e91d                	bnez	a0,e8897668 <udp_disconnect+0x36>
{
    e8897634:	1141                	addi	sp,sp,-16
  LWIP_ERROR("udp_disconnect: invalid pcb", pcb != NULL, return);
    e8897636:	02f00593          	li	a1,47
    e889763a:	0003b517          	auipc	a0,0x3b
    e889763e:	0fe50513          	addi	a0,a0,254 # e88d2738 <lwip_cyclic_timers+0x228>
{
    e8897642:	e406                	sd	ra,8(sp)
  LWIP_ERROR("udp_disconnect: invalid pcb", pcb != NULL, return);
    e8897644:	d35e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897648:	00150693          	addi	a3,a0,1
#endif
  pcb->remote_port = 0;
  pcb->netif_idx = NETIF_NO_INDEX;
  /* mark PCB as unconnected */
  udp_clear_flags(pcb, UDP_FLAGS_CONNECTED);
}
    e889764c:	60a2                	ld	ra,8(sp)
  LWIP_ERROR("udp_disconnect: invalid pcb", pcb != NULL, return);
    e889764e:	46a00613          	li	a2,1130
    e8897652:	0003b597          	auipc	a1,0x3b
    e8897656:	0c658593          	addi	a1,a1,198 # e88d2718 <lwip_cyclic_timers+0x208>
    e889765a:	00038517          	auipc	a0,0x38
    e889765e:	a5650513          	addi	a0,a0,-1450 # e88cf0b0 <kSinTable1024+0x900>
}
    e8897662:	0141                	addi	sp,sp,16
  LWIP_ERROR("udp_disconnect: invalid pcb", pcb != NULL, return);
    e8897664:	c63e406f          	j	e887c2c6 <eLIBs_printf>
  if (IP_IS_ANY_TYPE_VAL(pcb->local_ip)) {
    e8897668:	01454703          	lbu	a4,20(a0)
    e889766c:	02e00793          	li	a5,46
    e8897670:	04f71863          	bne	a4,a5,e88976c0 <udp_disconnect+0x8e>
    ip_addr_copy(pcb->remote_ip, *IP_ANY_TYPE);
    e8897674:	00038797          	auipc	a5,0x38
    e8897678:	1ec78793          	addi	a5,a5,492 # e88cf860 <ip_addr_any_type>
    e889767c:	0147c703          	lbu	a4,20(a5)
    e8897680:	4619                	li	a2,6
    e8897682:	4394                	lw	a3,0(a5)
    e8897684:	02e50623          	sb	a4,44(a0)
    e8897688:	02c71463          	bne	a4,a2,e88976b0 <udp_disconnect+0x7e>
    e889768c:	0107c703          	lbu	a4,16(a5)
    e8897690:	6394                	ld	a3,0(a5)
    e8897692:	679c                	ld	a5,8(a5)
    e8897694:	02e50423          	sb	a4,40(a0)
    e8897698:	ed14                	sd	a3,24(a0)
    e889769a:	f11c                	sd	a5,32(a0)
  udp_clear_flags(pcb, UDP_FLAGS_CONNECTED);
    e889769c:	04054783          	lbu	a5,64(a0)
  pcb->remote_port = 0;
    e88976a0:	04051223          	sh	zero,68(a0)
  pcb->netif_idx = NETIF_NO_INDEX;
    e88976a4:	02050823          	sb	zero,48(a0)
  udp_clear_flags(pcb, UDP_FLAGS_CONNECTED);
    e88976a8:	9bed                	andi	a5,a5,-5
    e88976aa:	04f50023          	sb	a5,64(a0)
    e88976ae:	8082                	ret
    ip_addr_copy(pcb->remote_ip, *IP_ANY_TYPE);
    e88976b0:	cd14                	sw	a3,24(a0)
    e88976b2:	00052e23          	sw	zero,28(a0)
    ip_addr_set_any(IP_IS_V6_VAL(pcb->remote_ip), &pcb->remote_ip);
    e88976b6:	02053023          	sd	zero,32(a0)
    e88976ba:	02050423          	sb	zero,40(a0)
    e88976be:	bff9                	j	e889769c <udp_disconnect+0x6a>
    e88976c0:	02c54783          	lbu	a5,44(a0)
    e88976c4:	4719                	li	a4,6
    e88976c6:	00e79b63          	bne	a5,a4,e88976dc <udp_disconnect+0xaa>
    e88976ca:	00053c23          	sd	zero,24(a0)
    e88976ce:	02053023          	sd	zero,32(a0)
    e88976d2:	02050423          	sb	zero,40(a0)
    e88976d6:	02f50623          	sb	a5,44(a0)
    e88976da:	b7c9                	j	e889769c <udp_disconnect+0x6a>
    e88976dc:	02050623          	sb	zero,44(a0)
    e88976e0:	00053c23          	sd	zero,24(a0)
    e88976e4:	bfc9                	j	e88976b6 <udp_disconnect+0x84>

00000000e88976e6 <udp_recv>:
void
udp_recv(struct udp_pcb *pcb, udp_recv_fn recv, void *recv_arg)
{
  LWIP_ASSERT_CORE_LOCKED();

  LWIP_ERROR("udp_recv: invalid pcb", pcb != NULL, return);
    e88976e6:	e91d                	bnez	a0,e889771c <udp_recv+0x36>
{
    e88976e8:	1141                	addi	sp,sp,-16
  LWIP_ERROR("udp_recv: invalid pcb", pcb != NULL, return);
    e88976ea:	02f00593          	li	a1,47
    e88976ee:	0003b517          	auipc	a0,0x3b
    e88976f2:	04a50513          	addi	a0,a0,74 # e88d2738 <lwip_cyclic_timers+0x228>
{
    e88976f6:	e406                	sd	ra,8(sp)
  LWIP_ERROR("udp_recv: invalid pcb", pcb != NULL, return);
    e88976f8:	c81e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88976fc:	00150693          	addi	a3,a0,1

  /* remember recv() callback and user data */
  pcb->recv = recv;
  pcb->recv_arg = recv_arg;
}
    e8897700:	60a2                	ld	ra,8(sp)
  LWIP_ERROR("udp_recv: invalid pcb", pcb != NULL, return);
    e8897702:	48a00613          	li	a2,1162
    e8897706:	0003b597          	auipc	a1,0x3b
    e889770a:	13a58593          	addi	a1,a1,314 # e88d2840 <lwip_cyclic_timers+0x330>
    e889770e:	00038517          	auipc	a0,0x38
    e8897712:	9a250513          	addi	a0,a0,-1630 # e88cf0b0 <kSinTable1024+0x900>
}
    e8897716:	0141                	addi	sp,sp,16
  LWIP_ERROR("udp_recv: invalid pcb", pcb != NULL, return);
    e8897718:	bafe406f          	j	e887c2c6 <eLIBs_printf>
  pcb->recv = recv;
    e889771c:	e92c                	sd	a1,80(a0)
  pcb->recv_arg = recv_arg;
    e889771e:	ed30                	sd	a2,88(a0)
    e8897720:	8082                	ret

00000000e8897722 <udp_remove>:
{
  struct udp_pcb *pcb2;

  LWIP_ASSERT_CORE_LOCKED();

  LWIP_ERROR("udp_remove: invalid pcb", pcb != NULL, return);
    e8897722:	e91d                	bnez	a0,e8897758 <udp_remove+0x36>
{
    e8897724:	1141                	addi	sp,sp,-16
  LWIP_ERROR("udp_remove: invalid pcb", pcb != NULL, return);
    e8897726:	02f00593          	li	a1,47
    e889772a:	0003b517          	auipc	a0,0x3b
    e889772e:	00e50513          	addi	a0,a0,14 # e88d2738 <lwip_cyclic_timers+0x228>
{
    e8897732:	e406                	sd	ra,8(sp)
  LWIP_ERROR("udp_remove: invalid pcb", pcb != NULL, return);
    e8897734:	c45e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897738:	00150693          	addi	a3,a0,1
        break;
      }
    }
  }
  memp_free(MEMP_UDP_PCB, pcb);
}
    e889773c:	60a2                	ld	ra,8(sp)
  LWIP_ERROR("udp_remove: invalid pcb", pcb != NULL, return);
    e889773e:	4a100613          	li	a2,1185
    e8897742:	0003b597          	auipc	a1,0x3b
    e8897746:	11658593          	addi	a1,a1,278 # e88d2858 <lwip_cyclic_timers+0x348>
    e889774a:	00038517          	auipc	a0,0x38
    e889774e:	96650513          	addi	a0,a0,-1690 # e88cf0b0 <kSinTable1024+0x900>
}
    e8897752:	0141                	addi	sp,sp,16
  LWIP_ERROR("udp_remove: invalid pcb", pcb != NULL, return);
    e8897754:	b73e406f          	j	e887c2c6 <eLIBs_printf>
  if (udp_pcbs == pcb) {
    e8897758:	0004f717          	auipc	a4,0x4f
    e889775c:	fc070713          	addi	a4,a4,-64 # e88e6718 <udp_pcbs>
    e8897760:	631c                	ld	a5,0(a4)
    e8897762:	85aa                	mv	a1,a0
    e8897764:	00a79863          	bne	a5,a0,e8897774 <udp_remove+0x52>
    udp_pcbs = udp_pcbs->next;
    e8897768:	7d1c                	ld	a5,56(a0)
    e889776a:	e31c                	sd	a5,0(a4)
  memp_free(MEMP_UDP_PCB, pcb);
    e889776c:	4505                	li	a0,1
    e889776e:	a31f606f          	j	e888e19e <memp_free>
    e8897772:	87ba                	mv	a5,a4
    for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) {
    e8897774:	dfe5                	beqz	a5,e889776c <udp_remove+0x4a>
      if (pcb2->next != NULL && pcb2->next == pcb) {
    e8897776:	7f98                	ld	a4,56(a5)
    e8897778:	db75                	beqz	a4,e889776c <udp_remove+0x4a>
    e889777a:	feb71ce3          	bne	a4,a1,e8897772 <udp_remove+0x50>
        pcb2->next = pcb->next;
    e889777e:	7d98                	ld	a4,56(a1)
    e8897780:	ff98                	sd	a4,56(a5)
        break;
    e8897782:	b7ed                	j	e889776c <udp_remove+0x4a>

00000000e8897784 <udp_new>:
 *
 * @see udp_remove()
 */
struct udp_pcb *
udp_new(void)
{
    e8897784:	1141                	addi	sp,sp,-16
  struct udp_pcb *pcb;

  LWIP_ASSERT_CORE_LOCKED();

  pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB);
    e8897786:	4505                	li	a0,1
{
    e8897788:	e022                	sd	s0,0(sp)
    e889778a:	e406                	sd	ra,8(sp)
  pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB);
    e889778c:	9c1f60ef          	jal	ra,e888e14c <memp_malloc>
    e8897790:	842a                	mv	s0,a0
  /* could allocate UDP PCB? */
  if (pcb != NULL) {
    e8897792:	c919                	beqz	a0,e88977a8 <udp_new+0x24>
    /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0
     * which means checksum is generated over the whole datagram per default
     * (recommended as default by RFC 3828). */
    /* initialize PCB to all zeroes */
    memset(pcb, 0, sizeof(struct udp_pcb));
    e8897794:	06000613          	li	a2,96
    e8897798:	4581                	li	a1,0
    e889779a:	bfbe40ef          	jal	ra,e887c394 <eLIBs_memset>
    pcb->ttl = UDP_TTL;
    e889779e:	57fd                	li	a5,-1
    e88977a0:	02f409a3          	sb	a5,51(s0)
#if LWIP_MULTICAST_TX_OPTIONS
    udp_set_multicast_ttl(pcb, UDP_TTL);
    e88977a4:	04f406a3          	sb	a5,77(s0)
#endif /* LWIP_MULTICAST_TX_OPTIONS */
  }
  return pcb;
}
    e88977a8:	8522                	mv	a0,s0
    e88977aa:	60a2                	ld	ra,8(sp)
    e88977ac:	6402                	ld	s0,0(sp)
    e88977ae:	0141                	addi	sp,sp,16
    e88977b0:	8082                	ret

00000000e88977b2 <udp_new_ip_type>:
 *
 * @see udp_remove()
 */
struct udp_pcb *
udp_new_ip_type(u8_t type)
{
    e88977b2:	1141                	addi	sp,sp,-16
    e88977b4:	e022                	sd	s0,0(sp)
    e88977b6:	e406                	sd	ra,8(sp)
    e88977b8:	842a                	mv	s0,a0
  struct udp_pcb *pcb;

  LWIP_ASSERT_CORE_LOCKED();

  pcb = udp_new();
    e88977ba:	fcbff0ef          	jal	ra,e8897784 <udp_new>
#if LWIP_IPV4 && LWIP_IPV6
  if (pcb != NULL) {
    e88977be:	c509                	beqz	a0,e88977c8 <udp_new_ip_type+0x16>
    IP_SET_TYPE_VAL(pcb->local_ip,  type);
    e88977c0:	00850a23          	sb	s0,20(a0)
    IP_SET_TYPE_VAL(pcb->remote_ip, type);
    e88977c4:	02850623          	sb	s0,44(a0)
  }
#else
  LWIP_UNUSED_ARG(type);
#endif /* LWIP_IPV4 && LWIP_IPV6 */
  return pcb;
}
    e88977c8:	60a2                	ld	ra,8(sp)
    e88977ca:	6402                	ld	s0,0(sp)
    e88977cc:	0141                	addi	sp,sp,16
    e88977ce:	8082                	ret

00000000e88977d0 <udp_netif_ip_addr_changed>:
 */
void udp_netif_ip_addr_changed(const ip_addr_t *old_addr, const ip_addr_t *new_addr)
{
  struct udp_pcb *upcb;

  if (!ip_addr_isany(old_addr) && !ip_addr_isany(new_addr)) {
    e88977d0:	cd29                	beqz	a0,e889782a <udp_netif_ip_addr_changed+0x5a>
    e88977d2:	4118                	lw	a4,0(a0)
    e88977d4:	01454603          	lbu	a2,20(a0)
    e88977d8:	4699                	li	a3,6
    e88977da:	00e037b3          	snez	a5,a4
    e88977de:	00d61b63          	bne	a2,a3,e88977f4 <udp_netif_ip_addr_changed+0x24>
    e88977e2:	4785                	li	a5,1
    e88977e4:	eb01                	bnez	a4,e88977f4 <udp_netif_ip_addr_changed+0x24>
    e88977e6:	4158                	lw	a4,4(a0)
    e88977e8:	e711                	bnez	a4,e88977f4 <udp_netif_ip_addr_changed+0x24>
    e88977ea:	4518                	lw	a4,8(a0)
    e88977ec:	e701                	bnez	a4,e88977f4 <udp_netif_ip_addr_changed+0x24>
    e88977ee:	455c                	lw	a5,12(a0)
    e88977f0:	00f037b3          	snez	a5,a5
    e88977f4:	cb9d                	beqz	a5,e889782a <udp_netif_ip_addr_changed+0x5a>
    e88977f6:	c995                	beqz	a1,e889782a <udp_netif_ip_addr_changed+0x5a>
    e88977f8:	4198                	lw	a4,0(a1)
    e88977fa:	0145c603          	lbu	a2,20(a1)
    e88977fe:	4699                	li	a3,6
    e8897800:	00e037b3          	snez	a5,a4
    e8897804:	00d61b63          	bne	a2,a3,e889781a <udp_netif_ip_addr_changed+0x4a>
    e8897808:	4785                	li	a5,1
    e889780a:	eb01                	bnez	a4,e889781a <udp_netif_ip_addr_changed+0x4a>
    e889780c:	41d8                	lw	a4,4(a1)
    e889780e:	e711                	bnez	a4,e889781a <udp_netif_ip_addr_changed+0x4a>
    e8897810:	4598                	lw	a4,8(a1)
    e8897812:	e701                	bnez	a4,e889781a <udp_netif_ip_addr_changed+0x4a>
    e8897814:	45dc                	lw	a5,12(a1)
    e8897816:	00f037b3          	snez	a5,a5
    e889781a:	cb81                	beqz	a5,e889782a <udp_netif_ip_addr_changed+0x5a>
    for (upcb = udp_pcbs; upcb != NULL; upcb = upcb->next) {
    e889781c:	0004f797          	auipc	a5,0x4f
    e8897820:	efc78793          	addi	a5,a5,-260 # e88e6718 <udp_pcbs>
    e8897824:	639c                	ld	a5,0(a5)
      /* PCB bound to current local interface address? */
      if (ip_addr_cmp(&upcb->local_ip, old_addr)) {
    e8897826:	4619                	li	a2,6
    for (upcb = udp_pcbs; upcb != NULL; upcb = upcb->next) {
    e8897828:	e391                	bnez	a5,e889782c <udp_netif_ip_addr_changed+0x5c>
         * is set to bound to the new one instead */
        ip_addr_copy(upcb->local_ip, *new_addr);
      }
    }
  }
}
    e889782a:	8082                	ret
      if (ip_addr_cmp(&upcb->local_ip, old_addr)) {
    e889782c:	0147c683          	lbu	a3,20(a5)
    e8897830:	01454703          	lbu	a4,20(a0)
    e8897834:	06d71363          	bne	a4,a3,e889789a <udp_netif_ip_addr_changed+0xca>
    e8897838:	0007a803          	lw	a6,0(a5)
    e889783c:	4114                	lw	a3,0(a0)
    e889783e:	06c71063          	bne	a4,a2,e889789e <udp_netif_ip_addr_changed+0xce>
    e8897842:	4701                	li	a4,0
    e8897844:	03069863          	bne	a3,a6,e8897874 <udp_netif_ip_addr_changed+0xa4>
    e8897848:	0047a803          	lw	a6,4(a5)
    e889784c:	4154                	lw	a3,4(a0)
    e889784e:	02d81363          	bne	a6,a3,e8897874 <udp_netif_ip_addr_changed+0xa4>
    e8897852:	0087a803          	lw	a6,8(a5)
    e8897856:	4514                	lw	a3,8(a0)
    e8897858:	00d81e63          	bne	a6,a3,e8897874 <udp_netif_ip_addr_changed+0xa4>
    e889785c:	00c7a803          	lw	a6,12(a5)
    e8897860:	4554                	lw	a3,12(a0)
    e8897862:	00d81963          	bne	a6,a3,e8897874 <udp_netif_ip_addr_changed+0xa4>
    e8897866:	0107c703          	lbu	a4,16(a5)
    e889786a:	01054683          	lbu	a3,16(a0)
    e889786e:	8f15                	sub	a4,a4,a3
    e8897870:	00173713          	seqz	a4,a4
    e8897874:	c31d                	beqz	a4,e889789a <udp_netif_ip_addr_changed+0xca>
        ip_addr_copy(upcb->local_ip, *new_addr);
    e8897876:	0145c703          	lbu	a4,20(a1)
    e889787a:	00e78a23          	sb	a4,20(a5)
    e889787e:	02c71563          	bne	a4,a2,e88978a8 <udp_netif_ip_addr_changed+0xd8>
    e8897882:	4198                	lw	a4,0(a1)
    e8897884:	c398                	sw	a4,0(a5)
    e8897886:	41d8                	lw	a4,4(a1)
    e8897888:	c3d8                	sw	a4,4(a5)
    e889788a:	4598                	lw	a4,8(a1)
    e889788c:	c798                	sw	a4,8(a5)
    e889788e:	45d8                	lw	a4,12(a1)
    e8897890:	c7d8                	sw	a4,12(a5)
    e8897892:	0105c703          	lbu	a4,16(a1)
    e8897896:	00e78823          	sb	a4,16(a5)
    for (upcb = udp_pcbs; upcb != NULL; upcb = upcb->next) {
    e889789a:	7f9c                	ld	a5,56(a5)
    e889789c:	b771                	j	e8897828 <udp_netif_ip_addr_changed+0x58>
      if (ip_addr_cmp(&upcb->local_ip, old_addr)) {
    e889789e:	41068733          	sub	a4,a3,a6
    e88978a2:	00173713          	seqz	a4,a4
    e88978a6:	b7f9                	j	e8897874 <udp_netif_ip_addr_changed+0xa4>
        ip_addr_copy(upcb->local_ip, *new_addr);
    e88978a8:	4198                	lw	a4,0(a1)
    e88978aa:	0007a223          	sw	zero,4(a5)
    e88978ae:	0007b423          	sd	zero,8(a5)
    e88978b2:	c398                	sw	a4,0(a5)
    e88978b4:	00078823          	sb	zero,16(a5)
    e88978b8:	b7cd                	j	e889789a <udp_netif_ip_addr_changed+0xca>

00000000e88978ba <ethernet_input>:
 * @see ETHARP_SUPPORT_VLAN
 * @see LWIP_HOOK_VLAN_CHECK
 */
err_t
ethernet_input(struct pbuf *p, struct netif *netif)
{
    e88978ba:	1101                	addi	sp,sp,-32
    e88978bc:	e422                	sd	s0,8(sp)
    e88978be:	e826                	sd	s1,16(sp)
    e88978c0:	ec06                	sd	ra,24(sp)
  u16_t next_hdr_offset = SIZEOF_ETH_HDR;
#endif /* LWIP_ARP || ETHARP_SUPPORT_VLAN */

  LWIP_ASSERT_CORE_LOCKED();

  if (p->len <= SIZEOF_ETH_HDR) {
    e88978c2:	01255703          	lhu	a4,18(a0)
    e88978c6:	47b9                	li	a5,14
{
    e88978c8:	842a                	mv	s0,a0
    e88978ca:	84ae                	mv	s1,a1
  if (p->len <= SIZEOF_ETH_HDR) {
    e88978cc:	02e7e963          	bltu	a5,a4,e88978fe <ethernet_input+0x44>
    /* a packet with only an ethernet header (or less) is not valid for us */
    ETHARP_STATS_INC(etharp.proterr);
    e88978d0:	0004f797          	auipc	a5,0x4f
    e88978d4:	b8078793          	addi	a5,a5,-1152 # e88e6450 <lwip_stats>
    e88978d8:	0287d703          	lhu	a4,40(a5)
    e88978dc:	2705                	addiw	a4,a4,1
    e88978de:	02e79423          	sh	a4,40(a5)
    ETHARP_STATS_INC(etharp.drop);
    e88978e2:	01e7d703          	lhu	a4,30(a5)
    e88978e6:	2705                	addiw	a4,a4,1
    e88978e8:	00e79f23          	sh	a4,30(a5)
    MIB2_STATS_NETIF_INC(netif, ifinerrors);
    e88978ec:	12c5a783          	lw	a5,300(a1)
    e88978f0:	2785                	addiw	a5,a5,1
    e88978f2:	12f5a623          	sw	a5,300(a1)
  /* This means the pbuf is freed or consumed,
     so the caller doesn't have to free it again */
  return ERR_OK;

free_and_return:
  pbuf_free(p);
    e88978f6:	8522                	mv	a0,s0
    e88978f8:	955f70ef          	jal	ra,e888f24c <pbuf_free>
  return ERR_OK;
    e88978fc:	a05d                	j	e88979a2 <ethernet_input+0xe8>
  if (p->if_idx == NETIF_NO_INDEX) {
    e88978fe:	01754783          	lbu	a5,23(a0)
    e8897902:	e791                	bnez	a5,e889790e <ethernet_input+0x54>
    p->if_idx = netif_get_index(netif);
    e8897904:	10e5c783          	lbu	a5,270(a1)
    e8897908:	2785                	addiw	a5,a5,1
    e889790a:	00f50ba3          	sb	a5,23(a0)
  ethhdr = (struct eth_hdr *)p->payload;
    e889790e:	641c                	ld	a5,8(s0)
  if (ethhdr->dest.addr[0] & 1) {
    e8897910:	0007c603          	lbu	a2,0(a5)
  type = ethhdr->type;
    e8897914:	00c7d703          	lhu	a4,12(a5)
  if (ethhdr->dest.addr[0] & 1) {
    e8897918:	00167693          	andi	a3,a2,1
    e889791c:	caa1                	beqz	a3,e889796c <ethernet_input+0xb2>
    if (ethhdr->dest.addr[0] == LL_IP4_MULTICAST_ADDR_0) {
    e889791e:	4685                	li	a3,1
    e8897920:	02d61263          	bne	a2,a3,e8897944 <ethernet_input+0x8a>
      if ((ethhdr->dest.addr[1] == LL_IP4_MULTICAST_ADDR_1) &&
    e8897924:	0017c683          	lbu	a3,1(a5)
    e8897928:	e2b1                	bnez	a3,e889796c <ethernet_input+0xb2>
    e889792a:	0027c683          	lbu	a3,2(a5)
    e889792e:	05e00793          	li	a5,94
    e8897932:	02f69d63          	bne	a3,a5,e889796c <ethernet_input+0xb2>
        p->flags |= PBUF_FLAG_LLMCAST;
    e8897936:	01544783          	lbu	a5,21(s0)
    e889793a:	0107e793          	ori	a5,a5,16
      p->flags |= PBUF_FLAG_LLBCAST;
    e889793e:	00f40aa3          	sb	a5,21(s0)
    e8897942:	a02d                	j	e889796c <ethernet_input+0xb2>
    else if ((ethhdr->dest.addr[0] == LL_IP6_MULTICAST_ADDR_0) &&
    e8897944:	03300593          	li	a1,51
    e8897948:	4681                	li	a3,0
    e889794a:	00b61663          	bne	a2,a1,e8897956 <ethernet_input+0x9c>
    e889794e:	0017c583          	lbu	a1,1(a5)
    e8897952:	fec582e3          	beq	a1,a2,e8897936 <ethernet_input+0x7c>
    while(n && (ret=*c1-*c2)==0) n--,c1++,c2++;
    e8897956:	0003b517          	auipc	a0,0x3b
    e889795a:	11a50513          	addi	a0,a0,282 # e88d2a70 <ethbroadcast>
    e889795e:	4819                	li	a6,6
    e8897960:	80d7c58b          	lrbu	a1,a5,a3,0
    e8897964:	80d5460b          	lrbu	a2,a0,a3,0
    e8897968:	04c58363          	beq	a1,a2,e88979ae <ethernet_input+0xf4>
  switch (type) {
    e889796c:	0007079b          	sext.w	a5,a4
    e8897970:	60800713          	li	a4,1544
    e8897974:	04e78563          	beq	a5,a4,e88979be <ethernet_input+0x104>
    e8897978:	6739                	lui	a4,0xe
    e889797a:	d8670713          	addi	a4,a4,-634 # dd86 <memcmp-0xe87f227a>
    e889797e:	06e78d63          	beq	a5,a4,e88979f8 <ethernet_input+0x13e>
    e8897982:	4721                	li	a4,8
    e8897984:	08e79563          	bne	a5,a4,e8897a0e <ethernet_input+0x154>
      if (!(netif->flags & NETIF_FLAG_ETHARP)) {
    e8897988:	10b4c783          	lbu	a5,267(s1)
    e889798c:	8ba1                	andi	a5,a5,8
    e889798e:	d7a5                	beqz	a5,e88978f6 <ethernet_input+0x3c>
      if (pbuf_remove_header(p, next_hdr_offset)) {
    e8897990:	45b9                	li	a1,14
    e8897992:	8522                	mv	a0,s0
    e8897994:	815f70ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    e8897998:	fd39                	bnez	a0,e88978f6 <ethernet_input+0x3c>
        ip4_input(p, netif);
    e889799a:	85a6                	mv	a1,s1
    e889799c:	8522                	mv	a0,s0
    e889799e:	d34f10ef          	jal	ra,e8888ed2 <ip4_input>
}
    e88979a2:	60e2                	ld	ra,24(sp)
    e88979a4:	6422                	ld	s0,8(sp)
    e88979a6:	64c2                	ld	s1,16(sp)
    e88979a8:	4501                	li	a0,0
    e88979aa:	6105                	addi	sp,sp,32
    e88979ac:	8082                	ret
    e88979ae:	0685                	addi	a3,a3,1
    e88979b0:	fb0698e3          	bne	a3,a6,e8897960 <ethernet_input+0xa6>
      p->flags |= PBUF_FLAG_LLBCAST;
    e88979b4:	01544783          	lbu	a5,21(s0)
    e88979b8:	0087e793          	ori	a5,a5,8
    e88979bc:	b749                	j	e889793e <ethernet_input+0x84>
      if (!(netif->flags & NETIF_FLAG_ETHARP)) {
    e88979be:	10b4c783          	lbu	a5,267(s1)
    e88979c2:	8ba1                	andi	a5,a5,8
    e88979c4:	db8d                	beqz	a5,e88978f6 <ethernet_input+0x3c>
      if (pbuf_remove_header(p, next_hdr_offset)) {
    e88979c6:	45b9                	li	a1,14
    e88979c8:	8522                	mv	a0,s0
    e88979ca:	fdef70ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    e88979ce:	c105                	beqz	a0,e88979ee <ethernet_input+0x134>
        ETHARP_STATS_INC(etharp.lenerr);
    e88979d0:	0004f797          	auipc	a5,0x4f
    e88979d4:	a8078793          	addi	a5,a5,-1408 # e88e6450 <lwip_stats>
    e88979d8:	0227d703          	lhu	a4,34(a5)
    e88979dc:	2705                	addiw	a4,a4,1
    e88979de:	02e79123          	sh	a4,34(a5)
        ETHARP_STATS_INC(etharp.drop);
    e88979e2:	01e7d703          	lhu	a4,30(a5)
    e88979e6:	2705                	addiw	a4,a4,1
    e88979e8:	00e79f23          	sh	a4,30(a5)
        goto free_and_return;
    e88979ec:	b729                	j	e88978f6 <ethernet_input+0x3c>
        etharp_input(p, netif);
    e88979ee:	85a6                	mv	a1,s1
    e88979f0:	8522                	mv	a0,s0
    e88979f2:	cd4f00ef          	jal	ra,e8887ec6 <etharp_input>
      break;
    e88979f6:	b775                	j	e88979a2 <ethernet_input+0xe8>
      if ((p->len < next_hdr_offset) || pbuf_remove_header(p, next_hdr_offset)) {
    e88979f8:	45b9                	li	a1,14
    e88979fa:	8522                	mv	a0,s0
    e88979fc:	facf70ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    e8897a00:	ee051be3          	bnez	a0,e88978f6 <ethernet_input+0x3c>
        ip6_input(p, netif);
    e8897a04:	85a6                	mv	a1,s1
    e8897a06:	8522                	mv	a0,s0
    e8897a08:	bddf20ef          	jal	ra,e888a5e4 <ip6_input>
      break;
    e8897a0c:	bf59                	j	e88979a2 <ethernet_input+0xe8>
      ETHARP_STATS_INC(etharp.proterr);
    e8897a0e:	0004f797          	auipc	a5,0x4f
    e8897a12:	a4278793          	addi	a5,a5,-1470 # e88e6450 <lwip_stats>
    e8897a16:	0287d703          	lhu	a4,40(a5)
    e8897a1a:	2705                	addiw	a4,a4,1
    e8897a1c:	02e79423          	sh	a4,40(a5)
      ETHARP_STATS_INC(etharp.drop);
    e8897a20:	01e7d703          	lhu	a4,30(a5)
    e8897a24:	2705                	addiw	a4,a4,1
    e8897a26:	00e79f23          	sh	a4,30(a5)
      MIB2_STATS_NETIF_INC(netif, ifinunknownprotos);
    e8897a2a:	1304a783          	lw	a5,304(s1)
    e8897a2e:	2785                	addiw	a5,a5,1
    e8897a30:	12f4a823          	sw	a5,304(s1)
      goto free_and_return;
    e8897a34:	b5c9                	j	e88978f6 <ethernet_input+0x3c>

00000000e8897a36 <ethernet_output>:
 * @return ERR_OK if the packet was sent, any other err_t on failure
 */
err_t
ethernet_output(struct netif * netif, struct pbuf * p,
                const struct eth_addr * src, const struct eth_addr * dst,
                u16_t eth_type) {
    e8897a36:	7139                	addi	sp,sp,-64
    e8897a38:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8897a3c:	842a                	mv	s0,a0
  struct eth_hdr *ethhdr;
  u16_t eth_type_be = lwip_htons(eth_type);
    e8897a3e:	853a                	mv	a0,a4
                u16_t eth_type) {
    e8897a40:	84ae                	mv	s1,a1
    e8897a42:	e436                	sd	a3,8(sp)
    e8897a44:	fc06                	sd	ra,56(sp)
    e8897a46:	f852                	sd	s4,48(sp)
    e8897a48:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8897a4c:	89b2                	mv	s3,a2
  u16_t eth_type_be = lwip_htons(eth_type);
    e8897a4e:	cd0ef0ef          	jal	ra,e8886f1e <lwip_htons>
    e8897a52:	8a2a                	mv	s4,a0

    eth_type_be = PP_HTONS(ETHTYPE_VLAN);
  } else
#endif /* ETHARP_SUPPORT_VLAN && defined(LWIP_HOOK_VLAN_SET) */
  {
    if (pbuf_add_header(p, SIZEOF_ETH_HDR) != 0) {
    e8897a54:	45b9                	li	a1,14
    e8897a56:	8526                	mv	a0,s1
    e8897a58:	f44f70ef          	jal	ra,e888f19c <pbuf_add_header>
    e8897a5c:	66a2                	ld	a3,8(sp)
    e8897a5e:	e53d                	bnez	a0,e8897acc <ethernet_output+0x96>
    }
  }

  LWIP_ASSERT_CORE_LOCKED();

  ethhdr = (struct eth_hdr *)p->payload;
    e8897a60:	0084b903          	ld	s2,8(s1)
  ethhdr->type = eth_type_be;
  SMEMCPY(&ethhdr->dest, dst, ETH_HWADDR_LEN);
    e8897a64:	85b6                	mv	a1,a3
    e8897a66:	4619                	li	a2,6
  ethhdr->type = eth_type_be;
    e8897a68:	01491623          	sh	s4,12(s2)
  SMEMCPY(&ethhdr->dest, dst, ETH_HWADDR_LEN);
    e8897a6c:	854a                	mv	a0,s2
    e8897a6e:	933e40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  SMEMCPY(&ethhdr->src,  src, ETH_HWADDR_LEN);
    e8897a72:	4619                	li	a2,6
    e8897a74:	85ce                	mv	a1,s3
    e8897a76:	00690513          	addi	a0,s2,6
    e8897a7a:	927e40ef          	jal	ra,e887c3a0 <eLIBs_memcpy>

  LWIP_ASSERT("netif->hwaddr_len must be 6 for ethernet_output!",
    e8897a7e:	10a44703          	lbu	a4,266(s0)
    e8897a82:	4799                	li	a5,6
    e8897a84:	02f70863          	beq	a4,a5,e8897ab4 <ethernet_output+0x7e>
    e8897a88:	02f00593          	li	a1,47
    e8897a8c:	0003b517          	auipc	a0,0x3b
    e8897a90:	fec50513          	addi	a0,a0,-20 # e88d2a78 <ethbroadcast+0x8>
    e8897a94:	8e5e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897a98:	00150693          	addi	a3,a0,1
    e8897a9c:	13300613          	li	a2,307
    e8897aa0:	0003b597          	auipc	a1,0x3b
    e8897aa4:	06858593          	addi	a1,a1,104 # e88d2b08 <ethbroadcast+0x98>
    e8897aa8:	00037517          	auipc	a0,0x37
    e8897aac:	60850513          	addi	a0,a0,1544 # e88cf0b0 <kSinTable1024+0x900>
    e8897ab0:	817e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
              (netif->hwaddr_len == ETH_HWADDR_LEN));
  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE,
              ("ethernet_output: sending packet %p\n", (void *)p));

  /* send the packet */
  return netif->linkoutput(netif, p);
    e8897ab4:	0c843303          	ld	t1,200(s0)
    e8897ab8:	85a6                	mv	a1,s1
    e8897aba:	8522                	mv	a0,s0
pbuf_header_failed:
  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS,
              ("ethernet_output: could not allocate room for header.\n"));
  LINK_STATS_INC(link.lenerr);
  return ERR_BUF;
}
    e8897abc:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8897ac0:	70e2                	ld	ra,56(sp)
    e8897ac2:	7a42                	ld	s4,48(sp)
    e8897ac4:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8897ac8:	6121                	addi	sp,sp,64
  return netif->linkoutput(netif, p);
    e8897aca:	8302                	jr	t1
  LINK_STATS_INC(link.lenerr);
    e8897acc:	0004f717          	auipc	a4,0x4f
    e8897ad0:	98470713          	addi	a4,a4,-1660 # e88e6450 <lwip_stats>
    e8897ad4:	00a75783          	lhu	a5,10(a4)
}
    e8897ad8:	5579                	li	a0,-2
  LINK_STATS_INC(link.lenerr);
    e8897ada:	2785                	addiw	a5,a5,1
    e8897adc:	00f71523          	sh	a5,10(a4)
}
    e8897ae0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8897ae4:	70e2                	ld	ra,56(sp)
    e8897ae6:	7a42                	ld	s4,48(sp)
    e8897ae8:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8897aec:	6121                	addi	sp,sp,64
    e8897aee:	8082                	ret

00000000e8897af0 <sys_now>:
{
  return lwip_sys_now;
}

u32_t sys_now(void)
{
    e8897af0:	1141                	addi	sp,sp,-16
    e8897af2:	e406                	sd	ra,8(sp)
  return (esKRNL_Time()*10);
    e8897af4:	d0ae40ef          	jal	ra,e887bffe <esKRNL_Time>
}
    e8897af8:	60a2                	ld	ra,8(sp)
    e8897afa:	47a9                	li	a5,10
    e8897afc:	02f5053b          	mulw	a0,a0,a5
    e8897b00:	0141                	addi	sp,sp,16
    e8897b02:	8082                	ret

00000000e8897b04 <sys_init>:

void
sys_init(void)
{
}
    e8897b04:	8082                	ret

00000000e8897b06 <sys_sem_new>:

/*-----------------------------------------------------------------------------------*/
//  Creates a new semaphore. The "count" argument specifies
//  the initial state of the semaphore.
err_t sys_sem_new(sys_sem_t *sem, u8_t count)
{
    e8897b06:	1141                	addi	sp,sp,-16
    e8897b08:	e022                	sd	s0,0(sp)
    e8897b0a:	842a                	mv	s0,a0
	*sem = esKRNL_SemCreate(count);
    e8897b0c:	852e                	mv	a0,a1
{
    e8897b0e:	e406                	sd	ra,8(sp)
	*sem = esKRNL_SemCreate(count);
    e8897b10:	c3ee40ef          	jal	ra,e887bf4e <esKRNL_SemCreate>
    e8897b14:	e008                	sd	a0,0(s0)
	if (*sem == NULL)
    e8897b16:	0004f717          	auipc	a4,0x4f
    e8897b1a:	93a70713          	addi	a4,a4,-1734 # e88e6450 <lwip_stats>
    e8897b1e:	e10d                	bnez	a0,e8897b40 <sys_sem_new+0x3a>
	{
#if SYS_STATS
		++lwip_stats.sys.sem.err;
    e8897b20:	0c875783          	lhu	a5,200(a4)
#endif /* SYS_STATS */
		printf("sys_sem_new NULL\n");
    e8897b24:	0003b517          	auipc	a0,0x3b
    e8897b28:	06c50513          	addi	a0,a0,108 # e88d2b90 <ethzero+0x50>
		++lwip_stats.sys.sem.err;
    e8897b2c:	2785                	addiw	a5,a5,1
    e8897b2e:	0cf71423          	sh	a5,200(a4)
		printf("sys_sem_new NULL\n");
    e8897b32:	f94e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
		return ERR_MEM;
    e8897b36:	557d                	li	a0,-1
		lwip_stats.sys.sem.max = lwip_stats.sys.sem.used;
	  }
#endif /* SYS_STATS */

	return ERR_OK;
}
    e8897b38:	60a2                	ld	ra,8(sp)
    e8897b3a:	6402                	ld	s0,0(sp)
    e8897b3c:	0141                	addi	sp,sp,16
    e8897b3e:	8082                	ret
	  ++lwip_stats.sys.sem.used;
    e8897b40:	0c475783          	lhu	a5,196(a4)
	  if (lwip_stats.sys.sem.max < lwip_stats.sys.sem.used) {
    e8897b44:	0c675683          	lhu	a3,198(a4)
	return ERR_OK;
    e8897b48:	4501                	li	a0,0
	  ++lwip_stats.sys.sem.used;
    e8897b4a:	2785                	addiw	a5,a5,1
    e8897b4c:	3c07b78b          	extu	a5,a5,15,0
    e8897b50:	0cf71223          	sh	a5,196(a4)
	  if (lwip_stats.sys.sem.max < lwip_stats.sys.sem.used) {
    e8897b54:	fef6f2e3          	bgeu	a3,a5,e8897b38 <sys_sem_new+0x32>
		lwip_stats.sys.sem.max = lwip_stats.sys.sem.used;
    e8897b58:	0cf71323          	sh	a5,198(a4)
    e8897b5c:	bff1                	j	e8897b38 <sys_sem_new+0x32>

00000000e8897b5e <sys_sem_free>:

/*-----------------------------------------------------------------------------------*/
// Deallocates a semaphore
void sys_sem_free(sys_sem_t *sem)
{
    e8897b5e:	1101                	addi	sp,sp,-32
#if SYS_STATS
  --lwip_stats.sys.sem.used;
    e8897b60:	0004f717          	auipc	a4,0x4f
    e8897b64:	8f070713          	addi	a4,a4,-1808 # e88e6450 <lwip_stats>
{
    e8897b68:	ec06                	sd	ra,24(sp)
  --lwip_stats.sys.sem.used;
    e8897b6a:	0c475783          	lhu	a5,196(a4)
#endif /* SYS_STATS */

	u8_t err;
  	esKRNL_SemDel(*sem, OS_DEL_ALWAYS, &err);
    e8897b6e:	00f10613          	addi	a2,sp,15
    e8897b72:	4585                	li	a1,1
  --lwip_stats.sys.sem.used;
    e8897b74:	37fd                	addiw	a5,a5,-1
    e8897b76:	0cf71223          	sh	a5,196(a4)
  	esKRNL_SemDel(*sem, OS_DEL_ALWAYS, &err);
    e8897b7a:	6108                	ld	a0,0(a0)
    e8897b7c:	be8e40ef          	jal	ra,e887bf64 <esKRNL_SemDel>
}
    e8897b80:	60e2                	ld	ra,24(sp)
    e8897b82:	6105                	addi	sp,sp,32
    e8897b84:	8082                	ret

00000000e8897b86 <sys_sem_signal>:

/*-----------------------------------------------------------------------------------*/
// Signals a semaphore
void sys_sem_signal(sys_sem_t *sem)
{
	esKRNL_SemPost(*sem);
    e8897b86:	6108                	ld	a0,0(a0)
    e8897b88:	c08e406f          	j	e887bf90 <esKRNL_SemPost>

00000000e8897b8c <sys_sem_set_invalid>:
    e8897b8c:	00053023          	sd	zero,0(a0)
    e8897b90:	8082                	ret

00000000e8897b92 <sys_arch_sem_wait>:

  Notice that lwIP implements a function with a similar name,
  sys_sem_wait(), that uses the sys_arch_sem_wait() function.
*/
u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout)
{
    e8897b92:	1101                	addi	sp,sp,-32
    e8897b94:	ec06                	sd	ra,24(sp)
	u8_t err;
	
	if(timeout > 0 && timeout < 10)
    e8897b96:	fff5869b          	addiw	a3,a1,-1
    e8897b9a:	4721                	li	a4,8
    e8897b9c:	4785                	li	a5,1
    e8897b9e:	00d77563          	bgeu	a4,a3,e8897ba8 <sys_arch_sem_wait+0x16>
	{
		timeout = 1;
	}
	else
	{
		timeout = timeout/10;
    e8897ba2:	47a9                	li	a5,10
    e8897ba4:	02f5d7bb          	divuw	a5,a1,a5
	}
	
	esKRNL_SemPend(*sem, timeout, &err);
    e8897ba8:	6108                	ld	a0,0(a0)
    e8897baa:	3c07b58b          	extu	a1,a5,15,0
    e8897bae:	00f10613          	addi	a2,sp,15
    e8897bb2:	bc8e40ef          	jal	ra,e887bf7a <esKRNL_SemPend>

	if (err != 0)
    e8897bb6:	00f14783          	lbu	a5,15(sp)
    {
		return SYS_ARCH_TIMEOUT;
    }
	return 1;	
    e8897bba:	4505                	li	a0,1
	if (err != 0)
    e8897bbc:	c391                	beqz	a5,e8897bc0 <sys_arch_sem_wait+0x2e>
		return SYS_ARCH_TIMEOUT;
    e8897bbe:	557d                	li	a0,-1
}
    e8897bc0:	60e2                	ld	ra,24(sp)
    e8897bc2:	6105                	addi	sp,sp,32
    e8897bc4:	8082                	ret

00000000e8897bc6 <sys_mutex_new>:

/* Create a new mutex*/
err_t
sys_mutex_new(sys_mutex_t *mutex)
{
    e8897bc6:	1101                	addi	sp,sp,-32
    e8897bc8:	e822                	sd	s0,16(sp)
	u8_t err;
	*mutex = esKRNL_MutexCreate(0,&err);
    e8897bca:	00f10593          	addi	a1,sp,15
{
    e8897bce:	842a                	mv	s0,a0
	*mutex = esKRNL_MutexCreate(0,&err);
    e8897bd0:	4501                	li	a0,0
{
    e8897bd2:	ec06                	sd	ra,24(sp)
	*mutex = esKRNL_MutexCreate(0,&err);
    e8897bd4:	ac2e40ef          	jal	ra,e887be96 <esKRNL_MutexCreate>
    e8897bd8:	e008                	sd	a0,0(s0)
	
  if(*mutex == NULL)
    e8897bda:	0004f717          	auipc	a4,0x4f
    e8897bde:	87670713          	addi	a4,a4,-1930 # e88e6450 <lwip_stats>
    e8897be2:	e10d                	bnez	a0,e8897c04 <sys_mutex_new+0x3e>
  {
#if SYS_STATS
    ++lwip_stats.sys.mutex.err;
    e8897be4:	0ce75783          	lhu	a5,206(a4)
#endif /* SYS_STATS */
	printf("sys_mutex_new NULL\n");
    e8897be8:	0003b517          	auipc	a0,0x3b
    e8897bec:	f9050513          	addi	a0,a0,-112 # e88d2b78 <ethzero+0x38>
    ++lwip_stats.sys.mutex.err;
    e8897bf0:	2785                	addiw	a5,a5,1
    e8897bf2:	0cf71723          	sh	a5,206(a4)
	printf("sys_mutex_new NULL\n");
    e8897bf6:	ed0e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return ERR_MEM;
    e8897bfa:	557d                	li	a0,-1
  if (lwip_stats.sys.mutex.max < lwip_stats.sys.mutex.used) {
    lwip_stats.sys.mutex.max = lwip_stats.sys.mutex.used;
  }
#endif /* SYS_STATS */
  return ERR_OK;
}
    e8897bfc:	60e2                	ld	ra,24(sp)
    e8897bfe:	6442                	ld	s0,16(sp)
    e8897c00:	6105                	addi	sp,sp,32
    e8897c02:	8082                	ret
  ++lwip_stats.sys.mutex.used;
    e8897c04:	0ca75783          	lhu	a5,202(a4)
  if (lwip_stats.sys.mutex.max < lwip_stats.sys.mutex.used) {
    e8897c08:	0cc75683          	lhu	a3,204(a4)
  return ERR_OK;
    e8897c0c:	4501                	li	a0,0
  ++lwip_stats.sys.mutex.used;
    e8897c0e:	2785                	addiw	a5,a5,1
    e8897c10:	3c07b78b          	extu	a5,a5,15,0
    e8897c14:	0cf71523          	sh	a5,202(a4)
  if (lwip_stats.sys.mutex.max < lwip_stats.sys.mutex.used) {
    e8897c18:	fef6f2e3          	bgeu	a3,a5,e8897bfc <sys_mutex_new+0x36>
    lwip_stats.sys.mutex.max = lwip_stats.sys.mutex.used;
    e8897c1c:	0cf71623          	sh	a5,204(a4)
    e8897c20:	bff1                	j	e8897bfc <sys_mutex_new+0x36>

00000000e8897c22 <sys_mutex_lock>:
}

/*-----------------------------------------------------------------------------------*/
/* Lock a mutex*/
void sys_mutex_lock(sys_mutex_t *mutex)
{
    e8897c22:	1101                	addi	sp,sp,-32
    e8897c24:	ec06                	sd	ra,24(sp)
	u8_t	err;
	esKRNL_MutexPend(*mutex, 0, &err);
    e8897c26:	6108                	ld	a0,0(a0)
    e8897c28:	00f10613          	addi	a2,sp,15
    e8897c2c:	4581                	li	a1,0
    e8897c2e:	a7ee40ef          	jal	ra,e887beac <esKRNL_MutexPend>
}
    e8897c32:	60e2                	ld	ra,24(sp)
    e8897c34:	6105                	addi	sp,sp,32
    e8897c36:	8082                	ret

00000000e8897c38 <sys_mutex_unlock>:

/*-----------------------------------------------------------------------------------*/
/* Unlock a mutex*/
void sys_mutex_unlock(sys_mutex_t *mutex)
{
	esKRNL_MutexPost(*mutex);
    e8897c38:	6108                	ld	a0,0(a0)
    e8897c3a:	a88e406f          	j	e887bec2 <esKRNL_MutexPost>

00000000e8897c3e <sys_mbox_new>:
}

/*-----------------------------------------------------------------------------------*/
//  Creates an empty mailbox.
err_t sys_mbox_new(sys_mbox_t *mbox, int size)
{
    e8897c3e:	1141                	addi	sp,sp,-16
    e8897c40:	e022                	sd	s0,0(sp)
    e8897c42:	842a                	mv	s0,a0
	*mbox = esKRNL_QCreate(200);
    e8897c44:	0c800513          	li	a0,200
{
    e8897c48:	e406                	sd	ra,8(sp)
	*mbox = esKRNL_QCreate(200);
    e8897c4a:	aa8e40ef          	jal	ra,e887bef2 <esKRNL_QCreate>
    e8897c4e:	e008                	sd	a0,0(s0)
	
#if SYS_STATS
  ++lwip_stats.sys.mbox.used;
    e8897c50:	0004f717          	auipc	a4,0x4f
    e8897c54:	80070713          	addi	a4,a4,-2048 # e88e6450 <lwip_stats>
    e8897c58:	0d075783          	lhu	a5,208(a4)
  if(lwip_stats.sys.mbox.max < lwip_stats.sys.mbox.used)
    e8897c5c:	0d275683          	lhu	a3,210(a4)
  ++lwip_stats.sys.mbox.used;
    e8897c60:	2785                	addiw	a5,a5,1
    e8897c62:	3c07b78b          	extu	a5,a5,15,0
    e8897c66:	0cf71823          	sh	a5,208(a4)
  if(lwip_stats.sys.mbox.max < lwip_stats.sys.mbox.used)
    e8897c6a:	00f6f463          	bgeu	a3,a5,e8897c72 <sys_mbox_new+0x34>
  {
    lwip_stats.sys.mbox.max = lwip_stats.sys.mbox.used;
    e8897c6e:	0cf71923          	sh	a5,210(a4)
  }
#endif /* SYS_STATS */
  if(*mbox == NULL)
    e8897c72:	601c                	ld	a5,0(s0)
  {
	printf("sys_mbox_new NULL\n");
    return ERR_MEM;
  }

  return ERR_OK;
    e8897c74:	4501                	li	a0,0
  if(*mbox == NULL)
    e8897c76:	eb81                	bnez	a5,e8897c86 <sys_mbox_new+0x48>
	printf("sys_mbox_new NULL\n");
    e8897c78:	0003b517          	auipc	a0,0x3b
    e8897c7c:	ed050513          	addi	a0,a0,-304 # e88d2b48 <ethzero+0x8>
    e8897c80:	e46e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return ERR_MEM;
    e8897c84:	557d                	li	a0,-1
}
    e8897c86:	60a2                	ld	ra,8(sp)
    e8897c88:	6402                	ld	s0,0(sp)
    e8897c8a:	0141                	addi	sp,sp,16
    e8897c8c:	8082                	ret

00000000e8897c8e <sys_mbox_free>:
  Deallocates a mailbox. If there are messages still present in the
  mailbox when the mailbox is deallocated, it is an indication of a
  programming error in lwIP and the developer should be notified.
*/
void sys_mbox_free(sys_mbox_t *mbox)
{
    e8897c8e:	1101                	addi	sp,sp,-32
    e8897c90:	ec06                	sd	ra,24(sp)
	u8_t		err;
	esKRNL_QDel(*mbox, 0, &err);
    e8897c92:	6108                	ld	a0,0(a0)
    e8897c94:	00f10613          	addi	a2,sp,15
    e8897c98:	4581                	li	a1,0
    e8897c9a:	a6ee40ef          	jal	ra,e887bf08 <esKRNL_QDel>
	
#if SYS_STATS
  --lwip_stats.sys.mbox.used;
    e8897c9e:	0004e717          	auipc	a4,0x4e
    e8897ca2:	7b270713          	addi	a4,a4,1970 # e88e6450 <lwip_stats>
    e8897ca6:	0d075783          	lhu	a5,208(a4)
    e8897caa:	37fd                	addiw	a5,a5,-1
    e8897cac:	0cf71823          	sh	a5,208(a4)
#endif /* SYS_STATS */
}
    e8897cb0:	60e2                	ld	ra,24(sp)
    e8897cb2:	6105                	addi	sp,sp,32
    e8897cb4:	8082                	ret

00000000e8897cb6 <sys_mbox_set_invalid>:
    e8897cb6:	00053023          	sd	zero,0(a0)
    e8897cba:	8082                	ret

00000000e8897cbc <sys_mbox_post>:

/*-----------------------------------------------------------------------------------*/
//   Posts the "msg" to the mailbox.
void sys_mbox_post(sys_mbox_t *q, void *msg)
{
	esKRNL_QPost(*q,(u32_t)msg);
    e8897cbc:	6108                	ld	a0,0(a0)
    e8897cbe:	7c05b58b          	extu	a1,a1,31,0
    e8897cc2:	a72e406f          	j	e887bf34 <esKRNL_QPost>

00000000e8897cc6 <sys_mbox_trypost>:
}

/*-----------------------------------------------------------------------------------*/
//   Try to post the "msg" to the mailbox.
err_t sys_mbox_trypost(sys_mbox_t *q, void *msg)
{
    e8897cc6:	1141                	addi	sp,sp,-16
    e8897cc8:	e406                	sd	ra,8(sp)
	if(esKRNL_QPost(*q,(u32_t)msg) == ERR_OK)
    e8897cca:	6108                	ld	a0,0(a0)
    e8897ccc:	7c05b58b          	extu	a1,a1,31,0
    e8897cd0:	a64e40ef          	jal	ra,e887bf34 <esKRNL_QPost>
    e8897cd4:	c505                	beqz	a0,e8897cfc <sys_mbox_trypost+0x36>
		return ERR_OK;
	}
	else
	{
	// could not post, queue must be full
	printf("sys_mbox_trypost fail\n");
    e8897cd6:	0003b517          	auipc	a0,0x3b
    e8897cda:	e8a50513          	addi	a0,a0,-374 # e88d2b60 <ethzero+0x20>
    e8897cde:	de8e40ef          	jal	ra,e887c2c6 <eLIBs_printf>

#if SYS_STATS
	lwip_stats.sys.mbox.err++;
    e8897ce2:	0004e717          	auipc	a4,0x4e
    e8897ce6:	76e70713          	addi	a4,a4,1902 # e88e6450 <lwip_stats>
    e8897cea:	0d475783          	lhu	a5,212(a4)
    e8897cee:	557d                	li	a0,-1
    e8897cf0:	2785                	addiw	a5,a5,1
    e8897cf2:	0cf71a23          	sh	a5,212(a4)
#endif /* SYS_STATS */

	return ERR_MEM;
	}
}
    e8897cf6:	60a2                	ld	ra,8(sp)
    e8897cf8:	0141                	addi	sp,sp,16
    e8897cfa:	8082                	ret
		return ERR_OK;
    e8897cfc:	4501                	li	a0,0
    e8897cfe:	bfe5                	j	e8897cf6 <sys_mbox_trypost+0x30>

00000000e8897d00 <sys_arch_mbox_fetch>:

  Note that a function with a similar name, sys_mbox_fetch(), is
  implemented by lwIP.
*/
u32_t sys_arch_mbox_fetch(sys_mbox_t *q, void **msg, u32_t timeout)
{
    e8897d00:	1101                	addi	sp,sp,-32
    e8897d02:	e822                	sd	s0,16(sp)
    e8897d04:	ec06                	sd	ra,24(sp)
	u8_t err;
	
	if(timeout > 0 && timeout < 10)
    e8897d06:	fff6071b          	addiw	a4,a2,-1
    e8897d0a:	47a1                	li	a5,8
{
    e8897d0c:	842e                	mv	s0,a1
    e8897d0e:	4585                	li	a1,1
	if(timeout > 0 && timeout < 10)
    e8897d10:	00e7f563          	bgeu	a5,a4,e8897d1a <sys_arch_mbox_fetch+0x1a>
	{
		timeout = 1;
	}
	else
	{
		timeout = timeout/10;
    e8897d14:	45a9                	li	a1,10
    e8897d16:	02b655bb          	divuw	a1,a2,a1
	}
	
	*msg = (__u32*)esKRNL_QPend(*q, timeout, &err);
    e8897d1a:	6108                	ld	a0,0(a0)
    e8897d1c:	00f10613          	addi	a2,sp,15
    e8897d20:	3c05b58b          	extu	a1,a1,15,0
    e8897d24:	9fae40ef          	jal	ra,e887bf1e <esKRNL_QPend>
    e8897d28:	e008                	sd	a0,0(s0)
	if(err == ERR_OK)
    e8897d2a:	00f14783          	lbu	a5,15(sp)
	{
		return 1;
    e8897d2e:	4505                	li	a0,1
	if(err == ERR_OK)
    e8897d30:	c391                	beqz	a5,e8897d34 <sys_arch_mbox_fetch+0x34>
	}
    else
    {
      return SYS_ARCH_TIMEOUT;
    e8897d32:	557d                	li	a0,-1
    }
}
    e8897d34:	60e2                	ld	ra,24(sp)
    e8897d36:	6442                	ld	s0,16(sp)
    e8897d38:	6105                	addi	sp,sp,32
    e8897d3a:	8082                	ret

00000000e8897d3c <sys_arch_mbox_tryfetch>:
/*
  Similar to sys_arch_mbox_fetch, but if message is not ready immediately, we'll
  return with SYS_MBOX_EMPTY.  On success, 0 is returned.
*/
u32_t sys_arch_mbox_tryfetch(sys_mbox_t *q, void **msg)
{
    e8897d3c:	1101                	addi	sp,sp,-32
    e8897d3e:	e822                	sd	s0,16(sp)
    e8897d40:	ec06                	sd	ra,24(sp)
	u8_t err;
	*msg = esKRNL_QAccept(*q,&err);
    e8897d42:	6108                	ld	a0,0(a0)
{
    e8897d44:	842e                	mv	s0,a1
	*msg = esKRNL_QAccept(*q,&err);
    e8897d46:	00f10593          	addi	a1,sp,15
    e8897d4a:	992e40ef          	jal	ra,e887bedc <esKRNL_QAccept>
    e8897d4e:	e008                	sd	a0,0(s0)
	if(*msg == 0)
	{
		return SYS_MBOX_EMPTY;
	}
  	return ERR_OK;
}
    e8897d50:	60e2                	ld	ra,24(sp)
    e8897d52:	6442                	ld	s0,16(sp)
	if(*msg == 0)
    e8897d54:	00153513          	seqz	a0,a0
}
    e8897d58:	40a00533          	neg	a0,a0
    e8897d5c:	6105                	addi	sp,sp,32
    e8897d5e:	8082                	ret

00000000e8897d60 <sys_thread_new>:
  function "thread()". The "arg" argument will be passed as an argument to the
  thread() function. The id of the new thread is returned. Both the id and
  the priority are system dependent.
*/
sys_thread_t sys_thread_new(const char *name, lwip_thread_fn function, void *arg, int stacksize, int prio)
{
    e8897d60:	7139                	addi	sp,sp,-64
    e8897d62:	f422                	sd	s0,40(sp)
    e8897d64:	842a                	mv	s0,a0
	u32_t thread=0;
	pthread_attr_t attr;
	pthread_attr_init(&attr);
    e8897d66:	0828                	addi	a0,sp,24
{
    e8897d68:	fc06                	sd	ra,56(sp)
    e8897d6a:	f826                	sd	s1,48(sp)
    e8897d6c:	e432                	sd	a2,8(sp)
    e8897d6e:	84ae                	mv	s1,a1
	u32_t thread=0;
    e8897d70:	ca02                	sw	zero,20(sp)
	pthread_attr_init(&attr);
    e8897d72:	ca1e30ef          	jal	ra,e887ba12 <pthread_attr_init>
	pthread_attr_setstacksize(&attr,0x8000);
    e8897d76:	65a1                	lui	a1,0x8
    e8897d78:	0828                	addi	a0,sp,24
    e8897d7a:	cb1e30ef          	jal	ra,e887ba2a <pthread_attr_setstacksize>
	pthread_attr_setpriority(&attr,2);
    e8897d7e:	4589                	li	a1,2
    e8897d80:	0828                	addi	a0,sp,24
    e8897d82:	cb5e30ef          	jal	ra,e887ba36 <pthread_attr_setpriority>
	pthread_create( &thread, &attr, function, arg );
    e8897d86:	66a2                	ld	a3,8(sp)
    e8897d88:	8626                	mv	a2,s1
    e8897d8a:	082c                	addi	a1,sp,24
    e8897d8c:	0848                	addi	a0,sp,20
    e8897d8e:	cb7e30ef          	jal	ra,e887ba44 <pthread_create>
    pthread_setname_np(thread,name);
    e8897d92:	4552                	lw	a0,20(sp)
    e8897d94:	85a2                	mv	a1,s0
    e8897d96:	83ee40ef          	jal	ra,e887bdd4 <pthread_setname_np>
	pthread_attr_destroy(&attr);
    e8897d9a:	0828                	addi	a0,sp,24
    e8897d9c:	c8be30ef          	jal	ra,e887ba26 <pthread_attr_destroy>
	return thread;
}
    e8897da0:	7422                	ld	s0,40(sp)
    e8897da2:	70e2                	ld	ra,56(sp)
    e8897da4:	4552                	lw	a0,20(sp)
    e8897da6:	74c2                	ld	s1,48(sp)
    e8897da8:	6121                	addi	sp,sp,64
    e8897daa:	8082                	ret

00000000e8897dac <netconn_apimsg>:

#if LWIP_NETCONN_SEM_PER_THREAD
  apimsg->op_completed_sem = LWIP_NETCONN_THREAD_SEM_GET();
#endif /* LWIP_NETCONN_SEM_PER_THREAD */

  err = tcpip_send_msg_wait_sem(fn, apimsg, LWIP_API_MSG_SEM(apimsg));
    e8897dac:	6190                	ld	a2,0(a1)
{
    e8897dae:	1141                	addi	sp,sp,-16
    e8897db0:	e022                	sd	s0,0(sp)
  err = tcpip_send_msg_wait_sem(fn, apimsg, LWIP_API_MSG_SEM(apimsg));
    e8897db2:	0661                	addi	a2,a2,24
{
    e8897db4:	e406                	sd	ra,8(sp)
    e8897db6:	842e                	mv	s0,a1
  err = tcpip_send_msg_wait_sem(fn, apimsg, LWIP_API_MSG_SEM(apimsg));
    e8897db8:	84cef0ef          	jal	ra,e8886e04 <tcpip_send_msg_wait_sem>
  if (err == ERR_OK) {
    e8897dbc:	e119                	bnez	a0,e8897dc2 <netconn_apimsg+0x16>
    return apimsg->err;
    e8897dbe:	00840503          	lb	a0,8(s0)
  }
  return err;
}
    e8897dc2:	60a2                	ld	ra,8(sp)
    e8897dc4:	6402                	ld	s0,0(sp)
    e8897dc6:	0141                	addi	sp,sp,16
    e8897dc8:	8082                	ret

00000000e8897dca <netconn_recv_data>:
 *         ERR_WOULDBLOCK if the netconn is nonblocking but would block to wait for data
 *         ERR_TIMEOUT if the netconn has a receive timeout and no data was received
 */
static err_t
netconn_recv_data(struct netconn *conn, void **new_buf, u8_t apiflags)
{
    e8897dca:	7179                	addi	sp,sp,-48
    e8897dcc:	f406                	sd	ra,40(sp)
    e8897dce:	ec22                	sd	s0,24(sp)
    e8897dd0:	f026                	sd	s1,32(sp)
  void *buf = NULL;
    e8897dd2:	e402                	sd	zero,8(sp)
  u16_t len;

  LWIP_ERROR("netconn_recv: invalid pointer", (new_buf != NULL), return ERR_ARG;);
    e8897dd4:	ed8d                	bnez	a1,e8897e0e <netconn_recv_data+0x44>
    e8897dd6:	02f00593          	li	a1,47
    e8897dda:	0003b517          	auipc	a0,0x3b
    e8897dde:	fc650513          	addi	a0,a0,-58 # e88d2da0 <ethzero+0x260>
    e8897de2:	d96e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897de6:	00150693          	addi	a3,a0,1
    e8897dea:	24800613          	li	a2,584
    e8897dee:	0003b597          	auipc	a1,0x3b
    e8897df2:	03a58593          	addi	a1,a1,58 # e88d2e28 <ethzero+0x2e8>
  *new_buf = NULL;
  LWIP_ERROR("netconn_recv: invalid conn",    (conn != NULL),    return ERR_ARG;);
    e8897df6:	00037517          	auipc	a0,0x37
    e8897dfa:	2ba50513          	addi	a0,a0,698 # e88cf0b0 <kSinTable1024+0x900>
    e8897dfe:	cc8e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8897e02:	5541                	li	a0,-16
  LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_recv_data: received %p, len=%"U16_F"\n", buf, len));

  *new_buf = buf;
  /* don't set conn->last_err: it's only ERR_OK, anyway */
  return ERR_OK;
}
    e8897e04:	70a2                	ld	ra,40(sp)
    e8897e06:	6462                	ld	s0,24(sp)
    e8897e08:	7482                	ld	s1,32(sp)
    e8897e0a:	6145                	addi	sp,sp,48
    e8897e0c:	8082                	ret
  *new_buf = NULL;
    e8897e0e:	0005b023          	sd	zero,0(a1)
    e8897e12:	842a                	mv	s0,a0
    e8897e14:	84ae                	mv	s1,a1
  LWIP_ERROR("netconn_recv: invalid conn",    (conn != NULL),    return ERR_ARG;);
    e8897e16:	e115                	bnez	a0,e8897e3a <netconn_recv_data+0x70>
    e8897e18:	02f00593          	li	a1,47
    e8897e1c:	0003b517          	auipc	a0,0x3b
    e8897e20:	f8450513          	addi	a0,a0,-124 # e88d2da0 <ethzero+0x260>
    e8897e24:	d54e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897e28:	00150693          	addi	a3,a0,1
    e8897e2c:	24a00613          	li	a2,586
    e8897e30:	0003b597          	auipc	a1,0x3b
    e8897e34:	01858593          	addi	a1,a1,24 # e88d2e48 <ethzero+0x308>
    e8897e38:	bf7d                	j	e8897df6 <netconn_recv_data+0x2c>
  if (!NETCONN_RECVMBOX_WAITABLE(conn)) {
    e8897e3a:	711c                	ld	a5,32(a0)
    e8897e3c:	c791                	beqz	a5,e8897e48 <netconn_recv_data+0x7e>
    e8897e3e:	04054783          	lbu	a5,64(a0)
    e8897e42:	0087f713          	andi	a4,a5,8
    e8897e46:	cb01                	beqz	a4,e8897e56 <netconn_recv_data+0x8c>
  SYS_ARCH_DECL_PROTECT(lev);
  if (conn == NULL) {
    return ERR_OK;
  }
  SYS_ARCH_PROTECT(lev);
  err = conn->pending_err;
    e8897e48:	01040503          	lb	a0,16(s0)
  conn->pending_err = ERR_OK;
    e8897e4c:	00040823          	sb	zero,16(s0)
    if (err != ERR_OK) {
    e8897e50:	f955                	bnez	a0,e8897e04 <netconn_recv_data+0x3a>
    return ERR_CONN;
    e8897e52:	5555                	li	a0,-11
    e8897e54:	bf45                	j	e8897e04 <netconn_recv_data+0x3a>
  NETCONN_MBOX_WAITING_INC(conn);
    e8897e56:	5918                	lw	a4,48(a0)
  if (netconn_is_nonblocking(conn) || (apiflags & NETCONN_DONTBLOCK) ||
    e8897e58:	8a11                	andi	a2,a2,4
    e8897e5a:	8b8d                	andi	a5,a5,3
  NETCONN_MBOX_WAITING_INC(conn);
    e8897e5c:	2705                	addiw	a4,a4,1
    e8897e5e:	d918                	sw	a4,48(a0)
  if (netconn_is_nonblocking(conn) || (apiflags & NETCONN_DONTBLOCK) ||
    e8897e60:	8e5d                	or	a2,a2,a5
    e8897e62:	02050513          	addi	a0,a0,32
    e8897e66:	e601                	bnez	a2,e8897e6e <netconn_recv_data+0xa4>
      (conn->flags & NETCONN_FLAG_MBOXCLOSED) || (conn->pending_err != ERR_OK)) {
    e8897e68:	01044783          	lbu	a5,16(s0)
    e8897e6c:	c795                	beqz	a5,e8897e98 <netconn_recv_data+0xce>
    if (sys_arch_mbox_tryfetch(&conn->recvmbox, &buf) == SYS_ARCH_TIMEOUT) {
    e8897e6e:	002c                	addi	a1,sp,8
    e8897e70:	ecdff0ef          	jal	ra,e8897d3c <sys_arch_mbox_tryfetch>
    e8897e74:	2501                	sext.w	a0,a0
    e8897e76:	57fd                	li	a5,-1
    e8897e78:	02f51463          	bne	a0,a5,e8897ea0 <netconn_recv_data+0xd6>
      NETCONN_MBOX_WAITING_DEC(conn);
    e8897e7c:	581c                	lw	a5,48(s0)
  err = conn->pending_err;
    e8897e7e:	01040503          	lb	a0,16(s0)
  conn->pending_err = ERR_OK;
    e8897e82:	00040823          	sb	zero,16(s0)
      NETCONN_MBOX_WAITING_DEC(conn);
    e8897e86:	37fd                	addiw	a5,a5,-1
    e8897e88:	d81c                	sw	a5,48(s0)
      if (err != ERR_OK) {
    e8897e8a:	fd2d                	bnez	a0,e8897e04 <netconn_recv_data+0x3a>
      if (conn->flags & NETCONN_FLAG_MBOXCLOSED) {
    e8897e8c:	04044783          	lbu	a5,64(s0)
      return ERR_WOULDBLOCK;
    e8897e90:	5565                	li	a0,-7
      if (conn->flags & NETCONN_FLAG_MBOXCLOSED) {
    e8897e92:	8b85                	andi	a5,a5,1
    e8897e94:	dba5                	beqz	a5,e8897e04 <netconn_recv_data+0x3a>
    e8897e96:	bf75                	j	e8897e52 <netconn_recv_data+0x88>
    sys_arch_mbox_fetch(&conn->recvmbox, &buf, 0);
    e8897e98:	4601                	li	a2,0
    e8897e9a:	002c                	addi	a1,sp,8
    e8897e9c:	e65ff0ef          	jal	ra,e8897d00 <sys_arch_mbox_fetch>
  NETCONN_MBOX_WAITING_DEC(conn);
    e8897ea0:	581c                	lw	a5,48(s0)
    e8897ea2:	37fd                	addiw	a5,a5,-1
    e8897ea4:	d81c                	sw	a5,48(s0)
  if (conn->flags & NETCONN_FLAG_MBOXINVALID) {
    e8897ea6:	04044783          	lbu	a5,64(s0)
    e8897eaa:	8ba1                	andi	a5,a5,8
    e8897eac:	e78d                	bnez	a5,e8897ed6 <netconn_recv_data+0x10c>
  if (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP)
    e8897eae:	00044783          	lbu	a5,0(s0)
    e8897eb2:	4741                	li	a4,16
    e8897eb4:	6522                	ld	a0,8(sp)
    e8897eb6:	0f07f793          	andi	a5,a5,240
    e8897eba:	04e79163          	bne	a5,a4,e8897efc <netconn_recv_data+0x132>
    if (lwip_netconn_is_err_msg(buf, &err)) {
    e8897ebe:	00710593          	addi	a1,sp,7
    e8897ec2:	169010ef          	jal	ra,e889982a <lwip_netconn_is_err_msg>
    e8897ec6:	cd09                	beqz	a0,e8897ee0 <netconn_recv_data+0x116>
      if (err == ERR_CLSD) {
    e8897ec8:	00710503          	lb	a0,7(sp)
    e8897ecc:	57c5                	li	a5,-15
    e8897ece:	f2f51be3          	bne	a0,a5,e8897e04 <netconn_recv_data+0x3a>
  return ERR_OK;
    e8897ed2:	4501                	li	a0,0
    e8897ed4:	bf05                	j	e8897e04 <netconn_recv_data+0x3a>
    if (lwip_netconn_is_deallocated_msg(buf)) {
    e8897ed6:	6522                	ld	a0,8(sp)
    e8897ed8:	143010ef          	jal	ra,e889981a <lwip_netconn_is_deallocated_msg>
    e8897edc:	d969                	beqz	a0,e8897eae <netconn_recv_data+0xe4>
    e8897ede:	bf95                	j	e8897e52 <netconn_recv_data+0x88>
    len = ((struct pbuf *)buf)->tot_len;
    e8897ee0:	67a2                	ld	a5,8(sp)
    len = netbuf_len((struct netbuf *)buf);
    e8897ee2:	0107d603          	lhu	a2,16(a5)
  SYS_ARCH_DEC(conn->recv_avail, len);
    e8897ee6:	5c5c                	lw	a5,60(s0)
    e8897ee8:	9f91                	subw	a5,a5,a2
    e8897eea:	dc5c                	sw	a5,60(s0)
  API_EVENT(conn, NETCONN_EVT_RCVMINUS, len);
    e8897eec:	683c                	ld	a5,80(s0)
    e8897eee:	c781                	beqz	a5,e8897ef6 <netconn_recv_data+0x12c>
    e8897ef0:	4585                	li	a1,1
    e8897ef2:	8522                	mv	a0,s0
    e8897ef4:	9782                	jalr	a5
  *new_buf = buf;
    e8897ef6:	67a2                	ld	a5,8(sp)
    e8897ef8:	e09c                	sd	a5,0(s1)
    e8897efa:	bfe1                	j	e8897ed2 <netconn_recv_data+0x108>
    LWIP_ASSERT("buf != NULL", buf != NULL);
    e8897efc:	e51d                	bnez	a0,e8897f2a <netconn_recv_data+0x160>
    e8897efe:	02f00593          	li	a1,47
    e8897f02:	0003b517          	auipc	a0,0x3b
    e8897f06:	e9e50513          	addi	a0,a0,-354 # e88d2da0 <ethzero+0x260>
    e8897f0a:	c6ee40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897f0e:	00150693          	addi	a3,a0,1
    e8897f12:	29100613          	li	a2,657
    e8897f16:	00037597          	auipc	a1,0x37
    e8897f1a:	3f258593          	addi	a1,a1,1010 # e88cf308 <err_to_errno_table+0x230>
    e8897f1e:	00037517          	auipc	a0,0x37
    e8897f22:	19250513          	addi	a0,a0,402 # e88cf0b0 <kSinTable1024+0x900>
    e8897f26:	ba0e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    len = netbuf_len((struct netbuf *)buf);
    e8897f2a:	67a2                	ld	a5,8(sp)
    e8897f2c:	639c                	ld	a5,0(a5)
    e8897f2e:	bf55                	j	e8897ee2 <netconn_recv_data+0x118>

00000000e8897f30 <netconn_tcp_recvd_msg.part.0>:
netconn_tcp_recvd_msg(struct netconn *conn, size_t len, struct api_msg *msg)
    e8897f30:	1141                	addi	sp,sp,-16
  LWIP_ERROR("netconn_recv_tcp_pbuf: invalid conn", (conn != NULL) &&
    e8897f32:	02f00593          	li	a1,47
    e8897f36:	0003b517          	auipc	a0,0x3b
    e8897f3a:	e6a50513          	addi	a0,a0,-406 # e88d2da0 <ethzero+0x260>
netconn_tcp_recvd_msg(struct netconn *conn, size_t len, struct api_msg *msg)
    e8897f3e:	e406                	sd	ra,8(sp)
  LWIP_ERROR("netconn_recv_tcp_pbuf: invalid conn", (conn != NULL) &&
    e8897f40:	c38e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897f44:	00150693          	addi	a3,a0,1
    e8897f48:	2a800613          	li	a2,680
    e8897f4c:	0003b597          	auipc	a1,0x3b
    e8897f50:	f6c58593          	addi	a1,a1,-148 # e88d2eb8 <ethzero+0x378>
    e8897f54:	00037517          	auipc	a0,0x37
    e8897f58:	15c50513          	addi	a0,a0,348 # e88cf0b0 <kSinTable1024+0x900>
    e8897f5c:	b6ae40ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e8897f60:	60a2                	ld	ra,8(sp)
    e8897f62:	5541                	li	a0,-16
    e8897f64:	0141                	addi	sp,sp,16
    e8897f66:	8082                	ret

00000000e8897f68 <netconn_close_shutdown.part.1>:
netconn_close_shutdown(struct netconn *conn, u8_t how)
    e8897f68:	1141                	addi	sp,sp,-16
  LWIP_ERROR("netconn_close: invalid conn",  (conn != NULL), return ERR_ARG;);
    e8897f6a:	02f00593          	li	a1,47
    e8897f6e:	0003b517          	auipc	a0,0x3b
    e8897f72:	e3250513          	addi	a0,a0,-462 # e88d2da0 <ethzero+0x260>
netconn_close_shutdown(struct netconn *conn, u8_t how)
    e8897f76:	e406                	sd	ra,8(sp)
  LWIP_ERROR("netconn_close: invalid conn",  (conn != NULL), return ERR_ARG;);
    e8897f78:	c00e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8897f7c:	00150693          	addi	a3,a0,1
    e8897f80:	44700613          	li	a2,1095
    e8897f84:	0003b597          	auipc	a1,0x3b
    e8897f88:	c8458593          	addi	a1,a1,-892 # e88d2c08 <ethzero+0xc8>
    e8897f8c:	00037517          	auipc	a0,0x37
    e8897f90:	12450513          	addi	a0,a0,292 # e88cf0b0 <kSinTable1024+0x900>
    e8897f94:	b32e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e8897f98:	60a2                	ld	ra,8(sp)
    e8897f9a:	5541                	li	a0,-16
    e8897f9c:	0141                	addi	sp,sp,16
    e8897f9e:	8082                	ret

00000000e8897fa0 <netconn_close_shutdown>:
{
    e8897fa0:	715d                	addi	sp,sp,-80
    e8897fa2:	e486                	sd	ra,72(sp)
  LWIP_ERROR("netconn_close: invalid conn",  (conn != NULL), return ERR_ARG;);
    e8897fa4:	e511                	bnez	a0,e8897fb0 <netconn_close_shutdown+0x10>
    e8897fa6:	fc3ff0ef          	jal	ra,e8897f68 <netconn_close_shutdown.part.1>
}
    e8897faa:	60a6                	ld	ra,72(sp)
    e8897fac:	6161                	addi	sp,sp,80
    e8897fae:	8082                	ret
  API_MSG_VAR_REF(msg).msg.sd.polls_left =
    e8897fb0:	02900793          	li	a5,41
  API_MSG_VAR_REF(msg).conn = conn;
    e8897fb4:	e02a                	sd	a0,0(sp)
  API_MSG_VAR_REF(msg).msg.sd.shut = how;
    e8897fb6:	00b10823          	sb	a1,16(sp)
  err = netconn_apimsg(lwip_netconn_do_close, &API_MSG_VAR_REF(msg));
    e8897fba:	00002517          	auipc	a0,0x2
    e8897fbe:	6f450513          	addi	a0,a0,1780 # e889a6ae <lwip_netconn_do_close>
    e8897fc2:	858a                	mv	a1,sp
  API_MSG_VAR_REF(msg).msg.sd.polls_left =
    e8897fc4:	00f108a3          	sb	a5,17(sp)
  err = netconn_apimsg(lwip_netconn_do_close, &API_MSG_VAR_REF(msg));
    e8897fc8:	de5ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e8897fcc:	bff9                	j	e8897faa <netconn_close_shutdown+0xa>

00000000e8897fce <netconn_recv_data_tcp>:
{
    e8897fce:	7159                	addi	sp,sp,-112
    e8897fd0:	eca6                	sd	s1,88(sp)
    e8897fd2:	f486                	sd	ra,104(sp)
    e8897fd4:	f0a2                	sd	s0,96(sp)
    e8897fd6:	e8ca                	sd	s2,80(sp)
    e8897fd8:	e4ce                	sd	s3,72(sp)
  if (!NETCONN_RECVMBOX_WAITABLE(conn)) {
    e8897fda:	711c                	ld	a5,32(a0)
    return ERR_CONN;
    e8897fdc:	54d5                	li	s1,-11
  if (!NETCONN_RECVMBOX_WAITABLE(conn)) {
    e8897fde:	c3c9                	beqz	a5,e8898060 <netconn_recv_data_tcp+0x92>
    e8897fe0:	04054783          	lbu	a5,64(a0)
    e8897fe4:	842a                	mv	s0,a0
    return ERR_CONN;
    e8897fe6:	54d5                	li	s1,-11
  if (!NETCONN_RECVMBOX_WAITABLE(conn)) {
    e8897fe8:	0087f713          	andi	a4,a5,8
    e8897fec:	eb35                	bnez	a4,e8898060 <netconn_recv_data_tcp+0x92>
  if (netconn_is_flag_set(conn, NETCONN_FIN_RX_PENDING)) {
    e8897fee:	fc77b70b          	extu	a4,a5,63,7
    e8897ff2:	c305                	beqz	a4,e8898012 <netconn_recv_data_tcp+0x44>
    netconn_clear_flags(conn, NETCONN_FIN_RX_PENDING);
    e8897ff4:	07f7f793          	andi	a5,a5,127
    e8897ff8:	04f50023          	sb	a5,64(a0)
      API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0);
    e8897ffc:	683c                	ld	a5,80(s0)
    e8897ffe:	c789                	beqz	a5,e8898008 <netconn_recv_data_tcp+0x3a>
    e8898000:	4601                	li	a2,0
    e8898002:	4585                	li	a1,1
    e8898004:	8522                	mv	a0,s0
    e8898006:	9782                	jalr	a5
      if (conn->pcb.ip == NULL) {
    e8898008:	641c                	ld	a5,8(s0)
    e889800a:	e3d9                	bnez	a5,e8898090 <netconn_recv_data_tcp+0xc2>
  if (conn == NULL) {
    e889800c:	ec25                	bnez	s0,e8898084 <netconn_recv_data_tcp+0xb6>
        return ERR_RST;
    e889800e:	54c9                	li	s1,-14
    e8898010:	a881                	j	e8898060 <netconn_recv_data_tcp+0x92>
    e8898012:	89ae                	mv	s3,a1
    e8898014:	8932                	mv	s2,a2
  err = netconn_recv_data(conn, (void **)new_buf, apiflags);
    e8898016:	db5ff0ef          	jal	ra,e8897dca <netconn_recv_data>
    e889801a:	84aa                	mv	s1,a0
  if (err != ERR_OK) {
    e889801c:	e131                	bnez	a0,e8898060 <netconn_recv_data_tcp+0x92>
  if (!(apiflags & NETCONN_NOAUTORCVD)) {
    e889801e:	00897793          	andi	a5,s2,8
  buf = *new_buf;
    e8898022:	0009b983          	ld	s3,0(s3)
  if (!(apiflags & NETCONN_NOAUTORCVD)) {
    e8898026:	e385                	bnez	a5,e8898046 <netconn_recv_data_tcp+0x78>
    u16_t len = buf ? buf->tot_len : 1;
    e8898028:	4705                	li	a4,1
    e889802a:	00098463          	beqz	s3,e8898032 <netconn_recv_data_tcp+0x64>
    e889802e:	0109d703          	lhu	a4,16(s3)
  LWIP_ERROR("netconn_recv_tcp_pbuf: invalid conn", (conn != NULL) &&
    e8898032:	c801                	beqz	s0,e8898042 <netconn_recv_data_tcp+0x74>
    e8898034:	00044783          	lbu	a5,0(s0)
    e8898038:	46c1                	li	a3,16
    e889803a:	0f07f793          	andi	a5,a5,240
    e889803e:	02d78963          	beq	a5,a3,e8898070 <netconn_recv_data_tcp+0xa2>
    e8898042:	eefff0ef          	jal	ra,e8897f30 <netconn_tcp_recvd_msg.part.0>
  if (buf == NULL) {
    e8898046:	00099d63          	bnez	s3,e8898060 <netconn_recv_data_tcp+0x92>
    if (apiflags & NETCONN_NOFIN) {
    e889804a:	01097913          	andi	s2,s2,16
    e889804e:	fa0907e3          	beqz	s2,e8897ffc <netconn_recv_data_tcp+0x2e>
      netconn_set_flags(conn, NETCONN_FIN_RX_PENDING);
    e8898052:	04044783          	lbu	a5,64(s0)
      return ERR_WOULDBLOCK;
    e8898056:	54e5                	li	s1,-7
      netconn_set_flags(conn, NETCONN_FIN_RX_PENDING);
    e8898058:	f807e793          	ori	a5,a5,-128
    e889805c:	04f40023          	sb	a5,64(s0)
}
    e8898060:	70a6                	ld	ra,104(sp)
    e8898062:	7406                	ld	s0,96(sp)
    e8898064:	8526                	mv	a0,s1
    e8898066:	6946                	ld	s2,80(sp)
    e8898068:	64e6                	ld	s1,88(sp)
    e889806a:	69a6                	ld	s3,72(sp)
    e889806c:	6165                	addi	sp,sp,112
    e889806e:	8082                	ret
  return netconn_apimsg(lwip_netconn_do_recv, msg);
    e8898070:	858a                	mv	a1,sp
    e8898072:	00002517          	auipc	a0,0x2
    e8898076:	31e50513          	addi	a0,a0,798 # e889a390 <lwip_netconn_do_recv>
  msg->conn = conn;
    e889807a:	e022                	sd	s0,0(sp)
  msg->msg.r.len = len;
    e889807c:	e83a                	sd	a4,16(sp)
  return netconn_apimsg(lwip_netconn_do_recv, msg);
    e889807e:	d2fff0ef          	jal	ra,e8897dac <netconn_apimsg>
    e8898082:	b7d1                	j	e8898046 <netconn_recv_data_tcp+0x78>
  err = conn->pending_err;
    e8898084:	01040483          	lb	s1,16(s0)
  conn->pending_err = ERR_OK;
    e8898088:	00040823          	sb	zero,16(s0)
        if (err != ERR_OK) {
    e889808c:	f8f1                	bnez	s1,e8898060 <netconn_recv_data_tcp+0x92>
    e889808e:	b741                	j	e889800e <netconn_recv_data_tcp+0x40>
      netconn_close_shutdown(conn, NETCONN_SHUT_RD);
    e8898090:	4585                	li	a1,1
    e8898092:	8522                	mv	a0,s0
    e8898094:	f0dff0ef          	jal	ra,e8897fa0 <netconn_close_shutdown>
      return ERR_CLSD;
    e8898098:	54c5                	li	s1,-15
    e889809a:	b7d9                	j	e8898060 <netconn_recv_data_tcp+0x92>

00000000e889809c <netconn_send.part.3>:
netconn_send(struct netconn *conn, struct netbuf *buf)
    e889809c:	1141                	addi	sp,sp,-16
  LWIP_ERROR("netconn_send: invalid conn",  (conn != NULL), return ERR_ARG;);
    e889809e:	02f00593          	li	a1,47
    e88980a2:	0003b517          	auipc	a0,0x3b
    e88980a6:	cfe50513          	addi	a0,a0,-770 # e88d2da0 <ethzero+0x260>
netconn_send(struct netconn *conn, struct netbuf *buf)
    e88980aa:	e406                	sd	ra,8(sp)
  LWIP_ERROR("netconn_send: invalid conn",  (conn != NULL), return ERR_ARG;);
    e88980ac:	acce40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88980b0:	00150693          	addi	a3,a0,1
    e88980b4:	3b200613          	li	a2,946
    e88980b8:	0003b597          	auipc	a1,0x3b
    e88980bc:	de058593          	addi	a1,a1,-544 # e88d2e98 <ethzero+0x358>
    e88980c0:	00037517          	auipc	a0,0x37
    e88980c4:	ff050513          	addi	a0,a0,-16 # e88cf0b0 <kSinTable1024+0x900>
    e88980c8:	9fee40ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e88980cc:	60a2                	ld	ra,8(sp)
    e88980ce:	5541                	li	a0,-16
    e88980d0:	0141                	addi	sp,sp,16
    e88980d2:	8082                	ret

00000000e88980d4 <netconn_new_with_proto_and_callback>:
{
    e88980d4:	711d                	addi	sp,sp,-96
    e88980d6:	e4a6                	sd	s1,72(sp)
    e88980d8:	84ae                	mv	s1,a1
  conn = netconn_alloc(t, callback);
    e88980da:	85b2                	mv	a1,a2
{
    e88980dc:	e8a2                	sd	s0,80(sp)
    e88980de:	ec86                	sd	ra,88(sp)
  conn = netconn_alloc(t, callback);
    e88980e0:	0a5010ef          	jal	ra,e8899984 <netconn_alloc>
    e88980e4:	842a                	mv	s0,a0
  if (conn != NULL) {
    e88980e6:	0e050b63          	beqz	a0,e88981dc <netconn_new_with_proto_and_callback+0x108>
    API_MSG_VAR_REF(msg).conn = conn;
    e88980ea:	e02a                	sd	a0,0(sp)
    err = netconn_apimsg(lwip_netconn_do_newconn, &API_MSG_VAR_REF(msg));
    e88980ec:	858a                	mv	a1,sp
    e88980ee:	00001517          	auipc	a0,0x1
    e88980f2:	7b650513          	addi	a0,a0,1974 # e88998a4 <lwip_netconn_do_newconn>
    API_MSG_VAR_REF(msg).msg.n.proto = proto;
    e88980f6:	00910823          	sb	s1,16(sp)
    err = netconn_apimsg(lwip_netconn_do_newconn, &API_MSG_VAR_REF(msg));
    e88980fa:	cb3ff0ef          	jal	ra,e8897dac <netconn_apimsg>
    if (err != ERR_OK) {
    e88980fe:	0c050f63          	beqz	a0,e88981dc <netconn_new_with_proto_and_callback+0x108>
      LWIP_ASSERT("freeing conn without freeing pcb", conn->pcb.tcp == NULL);
    e8898102:	641c                	ld	a5,8(s0)
    e8898104:	c79d                	beqz	a5,e8898132 <netconn_new_with_proto_and_callback+0x5e>
    e8898106:	02f00593          	li	a1,47
    e889810a:	0003b517          	auipc	a0,0x3b
    e889810e:	c9650513          	addi	a0,a0,-874 # e88d2da0 <ethzero+0x260>
    e8898112:	a66e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898116:	00150693          	addi	a3,a0,1
    e889811a:	0a300613          	li	a2,163
    e889811e:	0003b597          	auipc	a1,0x3b
    e8898122:	bfa58593          	addi	a1,a1,-1030 # e88d2d18 <ethzero+0x1d8>
    e8898126:	00037517          	auipc	a0,0x37
    e889812a:	f8a50513          	addi	a0,a0,-118 # e88cf0b0 <kSinTable1024+0x900>
    e889812e:	998e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
      LWIP_ASSERT("conn has no recvmbox", sys_mbox_valid(&conn->recvmbox));
    e8898132:	701c                	ld	a5,32(s0)
    e8898134:	e79d                	bnez	a5,e8898162 <netconn_new_with_proto_and_callback+0x8e>
    e8898136:	02f00593          	li	a1,47
    e889813a:	0003b517          	auipc	a0,0x3b
    e889813e:	c6650513          	addi	a0,a0,-922 # e88d2da0 <ethzero+0x260>
    e8898142:	a36e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898146:	00150693          	addi	a3,a0,1
    e889814a:	0a400613          	li	a2,164
    e889814e:	0003b597          	auipc	a1,0x3b
    e8898152:	bf258593          	addi	a1,a1,-1038 # e88d2d40 <ethzero+0x200>
    e8898156:	00037517          	auipc	a0,0x37
    e889815a:	f5a50513          	addi	a0,a0,-166 # e88cf0b0 <kSinTable1024+0x900>
    e889815e:	968e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
      LWIP_ASSERT("conn->acceptmbox shouldn't exist", !sys_mbox_valid(&conn->acceptmbox));
    e8898162:	741c                	ld	a5,40(s0)
    e8898164:	c79d                	beqz	a5,e8898192 <netconn_new_with_proto_and_callback+0xbe>
    e8898166:	02f00593          	li	a1,47
    e889816a:	0003b517          	auipc	a0,0x3b
    e889816e:	c3650513          	addi	a0,a0,-970 # e88d2da0 <ethzero+0x260>
    e8898172:	a06e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898176:	00150693          	addi	a3,a0,1
    e889817a:	0a600613          	li	a2,166
    e889817e:	0003b597          	auipc	a1,0x3b
    e8898182:	bda58593          	addi	a1,a1,-1062 # e88d2d58 <ethzero+0x218>
    e8898186:	00037517          	auipc	a0,0x37
    e889818a:	f2a50513          	addi	a0,a0,-214 # e88cf0b0 <kSinTable1024+0x900>
    e889818e:	938e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
      LWIP_ASSERT("conn has no op_completed", sys_sem_valid(&conn->op_completed));
    e8898192:	6c1c                	ld	a5,24(s0)
    e8898194:	e79d                	bnez	a5,e88981c2 <netconn_new_with_proto_and_callback+0xee>
    e8898196:	02f00593          	li	a1,47
    e889819a:	0003b517          	auipc	a0,0x3b
    e889819e:	c0650513          	addi	a0,a0,-1018 # e88d2da0 <ethzero+0x260>
    e88981a2:	9d6e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88981a6:	00150693          	addi	a3,a0,1
    e88981aa:	0a900613          	li	a2,169
    e88981ae:	0003b597          	auipc	a1,0x3b
    e88981b2:	bd258593          	addi	a1,a1,-1070 # e88d2d80 <ethzero+0x240>
    e88981b6:	00037517          	auipc	a0,0x37
    e88981ba:	efa50513          	addi	a0,a0,-262 # e88cf0b0 <kSinTable1024+0x900>
    e88981be:	908e40ef          	jal	ra,e887c2c6 <eLIBs_printf>
      sys_sem_free(&conn->op_completed);
    e88981c2:	01840513          	addi	a0,s0,24
    e88981c6:	999ff0ef          	jal	ra,e8897b5e <sys_sem_free>
      sys_mbox_free(&conn->recvmbox);
    e88981ca:	02040513          	addi	a0,s0,32
    e88981ce:	ac1ff0ef          	jal	ra,e8897c8e <sys_mbox_free>
      memp_free(MEMP_NETCONN, conn);
    e88981d2:	85a2                	mv	a1,s0
    e88981d4:	4521                	li	a0,8
    e88981d6:	fc9f50ef          	jal	ra,e888e19e <memp_free>
      return NULL;
    e88981da:	4401                	li	s0,0
}
    e88981dc:	8522                	mv	a0,s0
    e88981de:	60e6                	ld	ra,88(sp)
    e88981e0:	6446                	ld	s0,80(sp)
    e88981e2:	64a6                	ld	s1,72(sp)
    e88981e4:	6125                	addi	sp,sp,96
    e88981e6:	8082                	ret

00000000e88981e8 <netconn_prepare_delete>:
  if (conn == NULL) {
    e88981e8:	c115                	beqz	a0,e889820c <netconn_prepare_delete+0x24>
{
    e88981ea:	715d                	addi	sp,sp,-80
  API_MSG_VAR_REF(msg).msg.sd.polls_left =
    e88981ec:	02900793          	li	a5,41
  API_MSG_VAR_REF(msg).conn = conn;
    e88981f0:	e02a                	sd	a0,0(sp)
  err = netconn_apimsg(lwip_netconn_do_delconn, &API_MSG_VAR_REF(msg));
    e88981f2:	858a                	mv	a1,sp
    e88981f4:	00002517          	auipc	a0,0x2
    e88981f8:	b3a50513          	addi	a0,a0,-1222 # e8899d2e <lwip_netconn_do_delconn>
{
    e88981fc:	e486                	sd	ra,72(sp)
  API_MSG_VAR_REF(msg).msg.sd.polls_left =
    e88981fe:	00f108a3          	sb	a5,17(sp)
  err = netconn_apimsg(lwip_netconn_do_delconn, &API_MSG_VAR_REF(msg));
    e8898202:	babff0ef          	jal	ra,e8897dac <netconn_apimsg>
}
    e8898206:	60a6                	ld	ra,72(sp)
    e8898208:	6161                	addi	sp,sp,80
    e889820a:	8082                	ret
    return ERR_OK;
    e889820c:	4501                	li	a0,0
}
    e889820e:	8082                	ret

00000000e8898210 <netconn_delete>:
  if (conn == NULL) {
    e8898210:	c50d                	beqz	a0,e889823a <netconn_delete+0x2a>
{
    e8898212:	1141                	addi	sp,sp,-16
    e8898214:	e022                	sd	s0,0(sp)
    e8898216:	e406                	sd	ra,8(sp)
  if (conn->flags & NETCONN_FLAG_MBOXINVALID) {
    e8898218:	04054783          	lbu	a5,64(a0)
    e889821c:	842a                	mv	s0,a0
    e889821e:	8ba1                	andi	a5,a5,8
    e8898220:	cb89                	beqz	a5,e8898232 <netconn_delete+0x22>
    netconn_free(conn);
    e8898222:	8522                	mv	a0,s0
    e8898224:	039010ef          	jal	ra,e8899a5c <netconn_free>
    e8898228:	4501                	li	a0,0
}
    e889822a:	60a2                	ld	ra,8(sp)
    e889822c:	6402                	ld	s0,0(sp)
    e889822e:	0141                	addi	sp,sp,16
    e8898230:	8082                	ret
    err = netconn_prepare_delete(conn);
    e8898232:	fb7ff0ef          	jal	ra,e88981e8 <netconn_prepare_delete>
  if (err == ERR_OK) {
    e8898236:	d575                	beqz	a0,e8898222 <netconn_delete+0x12>
    e8898238:	bfcd                	j	e889822a <netconn_delete+0x1a>
    return ERR_OK;
    e889823a:	4501                	li	a0,0
}
    e889823c:	8082                	ret

00000000e889823e <netconn_getaddr>:
{
    e889823e:	715d                	addi	sp,sp,-80
    e8898240:	e486                	sd	ra,72(sp)
  LWIP_ERROR("netconn_getaddr: invalid conn", (conn != NULL), return ERR_ARG;);
    e8898242:	e91d                	bnez	a0,e8898278 <netconn_getaddr+0x3a>
    e8898244:	02f00593          	li	a1,47
    e8898248:	0003b517          	auipc	a0,0x3b
    e889824c:	b5850513          	addi	a0,a0,-1192 # e88d2da0 <ethzero+0x260>
    e8898250:	928e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898254:	00150693          	addi	a3,a0,1
    e8898258:	11200613          	li	a2,274
    e889825c:	0003b597          	auipc	a1,0x3b
    e8898260:	a1458593          	addi	a1,a1,-1516 # e88d2c70 <ethzero+0x130>
  LWIP_ERROR("netconn_getaddr: invalid addr", (addr != NULL), return ERR_ARG;);
    e8898264:	00037517          	auipc	a0,0x37
    e8898268:	e4c50513          	addi	a0,a0,-436 # e88cf0b0 <kSinTable1024+0x900>
    e889826c:	85ae40ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8898270:	5541                	li	a0,-16
}
    e8898272:	60a6                	ld	ra,72(sp)
    e8898274:	6161                	addi	sp,sp,80
    e8898276:	8082                	ret
  LWIP_ERROR("netconn_getaddr: invalid addr", (addr != NULL), return ERR_ARG;);
    e8898278:	e195                	bnez	a1,e889829c <netconn_getaddr+0x5e>
    e889827a:	02f00593          	li	a1,47
    e889827e:	0003b517          	auipc	a0,0x3b
    e8898282:	b2250513          	addi	a0,a0,-1246 # e88d2da0 <ethzero+0x260>
    e8898286:	8f2e40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889828a:	00150693          	addi	a3,a0,1
    e889828e:	11300613          	li	a2,275
    e8898292:	0003b597          	auipc	a1,0x3b
    e8898296:	9fe58593          	addi	a1,a1,-1538 # e88d2c90 <ethzero+0x150>
    e889829a:	b7e9                	j	e8898264 <netconn_getaddr+0x26>
  LWIP_ERROR("netconn_getaddr: invalid port", (port != NULL), return ERR_ARG;);
    e889829c:	e215                	bnez	a2,e88982c0 <netconn_getaddr+0x82>
    e889829e:	02f00593          	li	a1,47
    e88982a2:	0003b517          	auipc	a0,0x3b
    e88982a6:	afe50513          	addi	a0,a0,-1282 # e88d2da0 <ethzero+0x260>
    e88982aa:	8cee40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88982ae:	00150693          	addi	a3,a0,1
    e88982b2:	11400613          	li	a2,276
    e88982b6:	0003b597          	auipc	a1,0x3b
    e88982ba:	9fa58593          	addi	a1,a1,-1542 # e88d2cb0 <ethzero+0x170>
    e88982be:	b75d                	j	e8898264 <netconn_getaddr+0x26>
  API_MSG_VAR_REF(msg).conn = conn;
    e88982c0:	e02a                	sd	a0,0(sp)
  msg.msg.ad.port = port;
    e88982c2:	fac1558b          	sdd	a1,a2,(sp),1,4
  err = netconn_apimsg(lwip_netconn_do_getaddr, &msg);
    e88982c6:	00002517          	auipc	a0,0x2
    e88982ca:	27c50513          	addi	a0,a0,636 # e889a542 <lwip_netconn_do_getaddr>
    e88982ce:	858a                	mv	a1,sp
  API_MSG_VAR_REF(msg).msg.ad.local = local;
    e88982d0:	02d10023          	sb	a3,32(sp)
  err = netconn_apimsg(lwip_netconn_do_getaddr, &msg);
    e88982d4:	ad9ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e88982d8:	bf69                	j	e8898272 <netconn_getaddr+0x34>

00000000e88982da <netconn_bind>:
{
    e88982da:	715d                	addi	sp,sp,-80
    e88982dc:	e486                	sd	ra,72(sp)
  LWIP_ERROR("netconn_bind: invalid conn", (conn != NULL), return ERR_ARG;);
    e88982de:	e91d                	bnez	a0,e8898314 <netconn_bind+0x3a>
    e88982e0:	02f00593          	li	a1,47
    e88982e4:	0003b517          	auipc	a0,0x3b
    e88982e8:	abc50513          	addi	a0,a0,-1348 # e88d2da0 <ethzero+0x260>
    e88982ec:	88ce40ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88982f0:	00150693          	addi	a3,a0,1
    e88982f4:	13800613          	li	a2,312
    e88982f8:	0003b597          	auipc	a1,0x3b
    e88982fc:	8f058593          	addi	a1,a1,-1808 # e88d2be8 <ethzero+0xa8>
    e8898300:	00037517          	auipc	a0,0x37
    e8898304:	db050513          	addi	a0,a0,-592 # e88cf0b0 <kSinTable1024+0x900>
    e8898308:	fbfe30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889830c:	5541                	li	a0,-16
}
    e889830e:	60a6                	ld	ra,72(sp)
    e8898310:	6161                	addi	sp,sp,80
    e8898312:	8082                	ret
  if (addr == NULL) {
    e8898314:	e589                	bnez	a1,e889831e <netconn_bind+0x44>
    addr = IP4_ADDR_ANY;
    e8898316:	00038597          	auipc	a1,0x38
    e889831a:	caa58593          	addi	a1,a1,-854 # e88cffc0 <ip_addr_any>
  if ((netconn_get_ipv6only(conn) == 0) &&
    e889831e:	04054783          	lbu	a5,64(a0)
    e8898322:	0207f793          	andi	a5,a5,32
    e8898326:	efb9                	bnez	a5,e8898384 <netconn_bind+0xaa>
      ip_addr_cmp(addr, IP6_ADDR_ANY)) {
    e8898328:	00038717          	auipc	a4,0x38
    e889832c:	fc070713          	addi	a4,a4,-64 # e88d02e8 <ip6_addr_any>
    e8898330:	0145c683          	lbu	a3,20(a1)
  if ((netconn_get_ipv6only(conn) == 0) &&
    e8898334:	01474783          	lbu	a5,20(a4)
    e8898338:	04d79663          	bne	a5,a3,e8898384 <netconn_bind+0xaa>
    e889833c:	4899                	li	a7,6
    e889833e:	4194                	lw	a3,0(a1)
    e8898340:	00072803          	lw	a6,0(a4)
    e8898344:	05179c63          	bne	a5,a7,e889839c <netconn_bind+0xc2>
      ip_addr_cmp(addr, IP6_ADDR_ANY)) {
    e8898348:	4781                	li	a5,0
    e889834a:	03069863          	bne	a3,a6,e889837a <netconn_bind+0xa0>
    e889834e:	0045a803          	lw	a6,4(a1)
    e8898352:	4354                	lw	a3,4(a4)
    e8898354:	02d81363          	bne	a6,a3,e889837a <netconn_bind+0xa0>
    e8898358:	0085a803          	lw	a6,8(a1)
    e889835c:	4714                	lw	a3,8(a4)
    e889835e:	00d81e63          	bne	a6,a3,e889837a <netconn_bind+0xa0>
    e8898362:	00c5a803          	lw	a6,12(a1)
    e8898366:	4754                	lw	a3,12(a4)
    e8898368:	00d81963          	bne	a6,a3,e889837a <netconn_bind+0xa0>
    e889836c:	0105c783          	lbu	a5,16(a1)
    e8898370:	01074703          	lbu	a4,16(a4)
    e8898374:	8f99                	sub	a5,a5,a4
    e8898376:	0017b793          	seqz	a5,a5
  if ((netconn_get_ipv6only(conn) == 0) &&
    e889837a:	c789                	beqz	a5,e8898384 <netconn_bind+0xaa>
    addr = IP_ANY_TYPE;
    e889837c:	00037597          	auipc	a1,0x37
    e8898380:	4e458593          	addi	a1,a1,1252 # e88cf860 <ip_addr_any_type>
  API_MSG_VAR_REF(msg).conn = conn;
    e8898384:	e02a                	sd	a0,0(sp)
  API_MSG_VAR_REF(msg).msg.bc.ipaddr = API_MSG_VAR_REF(addr);
    e8898386:	e82e                	sd	a1,16(sp)
  err = netconn_apimsg(lwip_netconn_do_bind, &API_MSG_VAR_REF(msg));
    e8898388:	00002517          	auipc	a0,0x2
    e889838c:	bec50513          	addi	a0,a0,-1044 # e8899f74 <lwip_netconn_do_bind>
    e8898390:	858a                	mv	a1,sp
  API_MSG_VAR_REF(msg).msg.bc.port = port;
    e8898392:	00c11c23          	sh	a2,24(sp)
  err = netconn_apimsg(lwip_netconn_do_bind, &API_MSG_VAR_REF(msg));
    e8898396:	a17ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e889839a:	bf95                	j	e889830e <netconn_bind+0x34>
  if ((netconn_get_ipv6only(conn) == 0) &&
    e889839c:	410687b3          	sub	a5,a3,a6
    e88983a0:	0017b793          	seqz	a5,a5
    e88983a4:	bfd9                	j	e889837a <netconn_bind+0xa0>

00000000e88983a6 <netconn_connect>:
{
    e88983a6:	715d                	addi	sp,sp,-80
    e88983a8:	e486                	sd	ra,72(sp)
  LWIP_ERROR("netconn_connect: invalid conn", (conn != NULL), return ERR_ARG;);
    e88983aa:	e91d                	bnez	a0,e88983e0 <netconn_connect+0x3a>
    e88983ac:	02f00593          	li	a1,47
    e88983b0:	0003b517          	auipc	a0,0x3b
    e88983b4:	9f050513          	addi	a0,a0,-1552 # e88d2da0 <ethzero+0x260>
    e88983b8:	fc1e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88983bc:	00150693          	addi	a3,a0,1
    e88983c0:	17e00613          	li	a2,382
    e88983c4:	0003b597          	auipc	a1,0x3b
    e88983c8:	86458593          	addi	a1,a1,-1948 # e88d2c28 <ethzero+0xe8>
    e88983cc:	00037517          	auipc	a0,0x37
    e88983d0:	ce450513          	addi	a0,a0,-796 # e88cf0b0 <kSinTable1024+0x900>
    e88983d4:	ef3e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88983d8:	5541                	li	a0,-16
}
    e88983da:	60a6                	ld	ra,72(sp)
    e88983dc:	6161                	addi	sp,sp,80
    e88983de:	8082                	ret
  if (addr == NULL) {
    e88983e0:	e589                	bnez	a1,e88983ea <netconn_connect+0x44>
    addr = IP4_ADDR_ANY;
    e88983e2:	00038597          	auipc	a1,0x38
    e88983e6:	bde58593          	addi	a1,a1,-1058 # e88cffc0 <ip_addr_any>
  API_MSG_VAR_REF(msg).conn = conn;
    e88983ea:	e02a                	sd	a0,0(sp)
  API_MSG_VAR_REF(msg).msg.bc.ipaddr = API_MSG_VAR_REF(addr);
    e88983ec:	e82e                	sd	a1,16(sp)
  err = netconn_apimsg(lwip_netconn_do_connect, &API_MSG_VAR_REF(msg));
    e88983ee:	00002517          	auipc	a0,0x2
    e88983f2:	be450513          	addi	a0,a0,-1052 # e8899fd2 <lwip_netconn_do_connect>
    e88983f6:	858a                	mv	a1,sp
  API_MSG_VAR_REF(msg).msg.bc.port = port;
    e88983f8:	00c11c23          	sh	a2,24(sp)
  err = netconn_apimsg(lwip_netconn_do_connect, &API_MSG_VAR_REF(msg));
    e88983fc:	9b1ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e8898400:	bfe9                	j	e88983da <netconn_connect+0x34>

00000000e8898402 <netconn_disconnect>:
{
    e8898402:	715d                	addi	sp,sp,-80
    e8898404:	e486                	sd	ra,72(sp)
  LWIP_ERROR("netconn_disconnect: invalid conn", (conn != NULL), return ERR_ARG;);
    e8898406:	e91d                	bnez	a0,e889843c <netconn_disconnect+0x3a>
    e8898408:	02f00593          	li	a1,47
    e889840c:	0003b517          	auipc	a0,0x3b
    e8898410:	99450513          	addi	a0,a0,-1644 # e88d2da0 <ethzero+0x260>
    e8898414:	f65e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898418:	00150693          	addi	a3,a0,1
    e889841c:	19e00613          	li	a2,414
    e8898420:	0003b597          	auipc	a1,0x3b
    e8898424:	82858593          	addi	a1,a1,-2008 # e88d2c48 <ethzero+0x108>
    e8898428:	00037517          	auipc	a0,0x37
    e889842c:	c8850513          	addi	a0,a0,-888 # e88cf0b0 <kSinTable1024+0x900>
    e8898430:	e97e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8898434:	5541                	li	a0,-16
}
    e8898436:	60a6                	ld	ra,72(sp)
    e8898438:	6161                	addi	sp,sp,80
    e889843a:	8082                	ret
  API_MSG_VAR_REF(msg).conn = conn;
    e889843c:	e02a                	sd	a0,0(sp)
  err = netconn_apimsg(lwip_netconn_do_disconnect, &API_MSG_VAR_REF(msg));
    e889843e:	858a                	mv	a1,sp
    e8898440:	00002517          	auipc	a0,0x2
    e8898444:	d0c50513          	addi	a0,a0,-756 # e889a14c <lwip_netconn_do_disconnect>
    e8898448:	965ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e889844c:	b7ed                	j	e8898436 <netconn_disconnect+0x34>

00000000e889844e <netconn_listen_with_backlog>:
{
    e889844e:	715d                	addi	sp,sp,-80
    e8898450:	e486                	sd	ra,72(sp)
  LWIP_ERROR("netconn_listen: invalid conn", (conn != NULL), return ERR_ARG;);
    e8898452:	e91d                	bnez	a0,e8898488 <netconn_listen_with_backlog+0x3a>
    e8898454:	02f00593          	li	a1,47
    e8898458:	0003b517          	auipc	a0,0x3b
    e889845c:	94850513          	addi	a0,a0,-1720 # e88d2da0 <ethzero+0x260>
    e8898460:	f19e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898464:	00150693          	addi	a3,a0,1
    e8898468:	1bb00613          	li	a2,443
    e889846c:	0003b597          	auipc	a1,0x3b
    e8898470:	88c58593          	addi	a1,a1,-1908 # e88d2cf8 <ethzero+0x1b8>
    e8898474:	00037517          	auipc	a0,0x37
    e8898478:	c3c50513          	addi	a0,a0,-964 # e88cf0b0 <kSinTable1024+0x900>
    e889847c:	e4be30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8898480:	5541                	li	a0,-16
}
    e8898482:	60a6                	ld	ra,72(sp)
    e8898484:	6161                	addi	sp,sp,80
    e8898486:	8082                	ret
  API_MSG_VAR_REF(msg).conn = conn;
    e8898488:	e02a                	sd	a0,0(sp)
  err = netconn_apimsg(lwip_netconn_do_listen, &API_MSG_VAR_REF(msg));
    e889848a:	858a                	mv	a1,sp
    e889848c:	00002517          	auipc	a0,0x2
    e8898490:	cf450513          	addi	a0,a0,-780 # e889a180 <lwip_netconn_do_listen>
    e8898494:	919ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e8898498:	b7ed                	j	e8898482 <netconn_listen_with_backlog+0x34>

00000000e889849a <netconn_accept>:
{
    e889849a:	7179                	addi	sp,sp,-48
    e889849c:	f406                	sd	ra,40(sp)
    e889849e:	f04a                	sd	s2,32(sp)
    e88984a0:	fa91540b          	sdd	s0,s1,(sp),1,4
  LWIP_ERROR("netconn_accept: invalid pointer",    (new_conn != NULL),                  return ERR_ARG;);
    e88984a4:	ed9d                	bnez	a1,e88984e2 <netconn_accept+0x48>
    e88984a6:	02f00593          	li	a1,47
    e88984aa:	0003b517          	auipc	a0,0x3b
    e88984ae:	8f650513          	addi	a0,a0,-1802 # e88d2da0 <ethzero+0x260>
    e88984b2:	ec7e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88984b6:	00150693          	addi	a3,a0,1
    e88984ba:	1e100613          	li	a2,481
    e88984be:	0003a597          	auipc	a1,0x3a
    e88984c2:	6ea58593          	addi	a1,a1,1770 # e88d2ba8 <ethzero+0x68>
  LWIP_ERROR("netconn_accept: invalid conn",       (conn != NULL),                      return ERR_ARG;);
    e88984c6:	00037517          	auipc	a0,0x37
    e88984ca:	bea50513          	addi	a0,a0,-1046 # e88cf0b0 <kSinTable1024+0x900>
    e88984ce:	df9e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88984d2:	54c1                	li	s1,-16
}
    e88984d4:	8526                	mv	a0,s1
    e88984d6:	70a2                	ld	ra,40(sp)
    e88984d8:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88984dc:	7902                	ld	s2,32(sp)
    e88984de:	6145                	addi	sp,sp,48
    e88984e0:	8082                	ret
  *new_conn = NULL;
    e88984e2:	0005b023          	sd	zero,0(a1)
    e88984e6:	842a                	mv	s0,a0
    e88984e8:	892e                	mv	s2,a1
  LWIP_ERROR("netconn_accept: invalid conn",       (conn != NULL),                      return ERR_ARG;);
    e88984ea:	e115                	bnez	a0,e889850e <netconn_accept+0x74>
    e88984ec:	02f00593          	li	a1,47
    e88984f0:	0003b517          	auipc	a0,0x3b
    e88984f4:	8b050513          	addi	a0,a0,-1872 # e88d2da0 <ethzero+0x260>
    e88984f8:	e81e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88984fc:	00150693          	addi	a3,a0,1
    e8898500:	1e300613          	li	a2,483
    e8898504:	0003a597          	auipc	a1,0x3a
    e8898508:	6c458593          	addi	a1,a1,1732 # e88d2bc8 <ethzero+0x88>
    e889850c:	bf6d                	j	e88984c6 <netconn_accept+0x2c>
  err = conn->pending_err;
    e889850e:	01050483          	lb	s1,16(a0)
  conn->pending_err = ERR_OK;
    e8898512:	00050823          	sb	zero,16(a0)
  err = netconn_err(conn);
    e8898516:	009103a3          	sb	s1,7(sp)
  if (err != ERR_OK) {
    e889851a:	fccd                	bnez	s1,e88984d4 <netconn_accept+0x3a>
  if (!NETCONN_ACCEPTMBOX_WAITABLE(conn)) {
    e889851c:	751c                	ld	a5,40(a0)
    e889851e:	e399                	bnez	a5,e8898524 <netconn_accept+0x8a>
    return ERR_CLSD;
    e8898520:	54c5                	li	s1,-15
    e8898522:	bf4d                	j	e88984d4 <netconn_accept+0x3a>
  if (!NETCONN_ACCEPTMBOX_WAITABLE(conn)) {
    e8898524:	04054783          	lbu	a5,64(a0)
    e8898528:	0097f713          	andi	a4,a5,9
    e889852c:	fb75                	bnez	a4,e8898520 <netconn_accept+0x86>
  NETCONN_MBOX_WAITING_INC(conn);
    e889852e:	5918                	lw	a4,48(a0)
  if (netconn_is_nonblocking(conn)) {
    e8898530:	8b89                	andi	a5,a5,2
    e8898532:	02850513          	addi	a0,a0,40
  NETCONN_MBOX_WAITING_INC(conn);
    e8898536:	2705                	addiw	a4,a4,1
    e8898538:	c518                	sw	a4,8(a0)
  if (netconn_is_nonblocking(conn)) {
    e889853a:	cf89                	beqz	a5,e8898554 <netconn_accept+0xba>
    if (sys_arch_mbox_tryfetch(&conn->acceptmbox, &accept_ptr) == SYS_ARCH_TIMEOUT) {
    e889853c:	002c                	addi	a1,sp,8
    e889853e:	ffeff0ef          	jal	ra,e8897d3c <sys_arch_mbox_tryfetch>
    e8898542:	2501                	sext.w	a0,a0
    e8898544:	57fd                	li	a5,-1
    e8898546:	00f51b63          	bne	a0,a5,e889855c <netconn_accept+0xc2>
      NETCONN_MBOX_WAITING_DEC(conn);
    e889854a:	581c                	lw	a5,48(s0)
      return ERR_WOULDBLOCK;
    e889854c:	54e5                	li	s1,-7
      NETCONN_MBOX_WAITING_DEC(conn);
    e889854e:	37fd                	addiw	a5,a5,-1
    e8898550:	d81c                	sw	a5,48(s0)
      return ERR_WOULDBLOCK;
    e8898552:	b749                	j	e88984d4 <netconn_accept+0x3a>
    sys_arch_mbox_fetch(&conn->acceptmbox, &accept_ptr, 0);
    e8898554:	4601                	li	a2,0
    e8898556:	002c                	addi	a1,sp,8
    e8898558:	fa8ff0ef          	jal	ra,e8897d00 <sys_arch_mbox_fetch>
  NETCONN_MBOX_WAITING_DEC(conn);
    e889855c:	581c                	lw	a5,48(s0)
    e889855e:	37fd                	addiw	a5,a5,-1
    e8898560:	d81c                	sw	a5,48(s0)
  if (conn->flags & NETCONN_FLAG_MBOXINVALID) {
    e8898562:	04044783          	lbu	a5,64(s0)
    e8898566:	8ba1                	andi	a5,a5,8
    e8898568:	ef81                	bnez	a5,e8898580 <netconn_accept+0xe6>
  API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0);
    e889856a:	683c                	ld	a5,80(s0)
    e889856c:	e385                	bnez	a5,e889858c <netconn_accept+0xf2>
  if (lwip_netconn_is_err_msg(accept_ptr, &err)) {
    e889856e:	6522                	ld	a0,8(sp)
    e8898570:	00710593          	addi	a1,sp,7
    e8898574:	2b6010ef          	jal	ra,e889982a <lwip_netconn_is_err_msg>
    e8898578:	cd19                	beqz	a0,e8898596 <netconn_accept+0xfc>
    return err;
    e889857a:	00710483          	lb	s1,7(sp)
    e889857e:	bf99                	j	e88984d4 <netconn_accept+0x3a>
    if (lwip_netconn_is_deallocated_msg(accept_ptr)) {
    e8898580:	6522                	ld	a0,8(sp)
    e8898582:	298010ef          	jal	ra,e889981a <lwip_netconn_is_deallocated_msg>
    e8898586:	d175                	beqz	a0,e889856a <netconn_accept+0xd0>
      return ERR_CONN;
    e8898588:	54d5                	li	s1,-11
    e889858a:	b7a9                	j	e88984d4 <netconn_accept+0x3a>
  API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0);
    e889858c:	4601                	li	a2,0
    e889858e:	4585                	li	a1,1
    e8898590:	8522                	mv	a0,s0
    e8898592:	9782                	jalr	a5
    e8898594:	bfe9                	j	e889856e <netconn_accept+0xd4>
  if (accept_ptr == NULL) {
    e8898596:	67a2                	ld	a5,8(sp)
    e8898598:	d7c1                	beqz	a5,e8898520 <netconn_accept+0x86>
  *new_conn = newconn;
    e889859a:	00f93023          	sd	a5,0(s2)
  return ERR_OK;
    e889859e:	bf1d                	j	e88984d4 <netconn_accept+0x3a>

00000000e88985a0 <netconn_tcp_recvd>:
{
    e88985a0:	715d                	addi	sp,sp,-80
    e88985a2:	e486                	sd	ra,72(sp)
  LWIP_ERROR("netconn_recv_tcp_pbuf: invalid conn", (conn != NULL) &&
    e88985a4:	c901                	beqz	a0,e88985b4 <netconn_tcp_recvd+0x14>
    e88985a6:	00054783          	lbu	a5,0(a0)
    e88985aa:	4741                	li	a4,16
    e88985ac:	0f07f793          	andi	a5,a5,240
    e88985b0:	02e78c63          	beq	a5,a4,e88985e8 <netconn_tcp_recvd+0x48>
    e88985b4:	02f00593          	li	a1,47
    e88985b8:	0003a517          	auipc	a0,0x3a
    e88985bc:	7e850513          	addi	a0,a0,2024 # e88d2da0 <ethzero+0x260>
    e88985c0:	db9e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88985c4:	00150693          	addi	a3,a0,1
    e88985c8:	2b600613          	li	a2,694
    e88985cc:	0003b597          	auipc	a1,0x3b
    e88985d0:	8ec58593          	addi	a1,a1,-1812 # e88d2eb8 <ethzero+0x378>
    e88985d4:	00037517          	auipc	a0,0x37
    e88985d8:	adc50513          	addi	a0,a0,-1316 # e88cf0b0 <kSinTable1024+0x900>
    e88985dc:	cebe30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88985e0:	5541                	li	a0,-16
}
    e88985e2:	60a6                	ld	ra,72(sp)
    e88985e4:	6161                	addi	sp,sp,80
    e88985e6:	8082                	ret
  msg->conn = conn;
    e88985e8:	e02a                	sd	a0,0(sp)
  msg->msg.r.len = len;
    e88985ea:	e82e                	sd	a1,16(sp)
  return netconn_apimsg(lwip_netconn_do_recv, msg);
    e88985ec:	00002517          	auipc	a0,0x2
    e88985f0:	da450513          	addi	a0,a0,-604 # e889a390 <lwip_netconn_do_recv>
    e88985f4:	858a                	mv	a1,sp
    e88985f6:	fb6ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e88985fa:	b7e5                	j	e88985e2 <netconn_tcp_recvd+0x42>

00000000e88985fc <netconn_recv_tcp_pbuf_flags>:
  LWIP_ERROR("netconn_recv_tcp_pbuf: invalid conn", (conn != NULL) &&
    e88985fc:	c911                	beqz	a0,e8898610 <netconn_recv_tcp_pbuf_flags+0x14>
    e88985fe:	00054783          	lbu	a5,0(a0)
    e8898602:	4741                	li	a4,16
    e8898604:	0f07f793          	andi	a5,a5,240
    e8898608:	00e79463          	bne	a5,a4,e8898610 <netconn_recv_tcp_pbuf_flags+0x14>
  return netconn_recv_data_tcp(conn, new_buf, apiflags);
    e889860c:	9c3ff06f          	j	e8897fce <netconn_recv_data_tcp>
{
    e8898610:	1141                	addi	sp,sp,-16
  LWIP_ERROR("netconn_recv_tcp_pbuf: invalid conn", (conn != NULL) &&
    e8898612:	02f00593          	li	a1,47
    e8898616:	0003a517          	auipc	a0,0x3a
    e889861a:	78a50513          	addi	a0,a0,1930 # e88d2da0 <ethzero+0x260>
{
    e889861e:	e406                	sd	ra,8(sp)
  LWIP_ERROR("netconn_recv_tcp_pbuf: invalid conn", (conn != NULL) &&
    e8898620:	d59e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898624:	00150693          	addi	a3,a0,1
    e8898628:	32600613          	li	a2,806
    e889862c:	0003b597          	auipc	a1,0x3b
    e8898630:	88c58593          	addi	a1,a1,-1908 # e88d2eb8 <ethzero+0x378>
    e8898634:	00037517          	auipc	a0,0x37
    e8898638:	a7c50513          	addi	a0,a0,-1412 # e88cf0b0 <kSinTable1024+0x900>
    e889863c:	c8be30ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e8898640:	60a2                	ld	ra,8(sp)
    e8898642:	5541                	li	a0,-16
    e8898644:	0141                	addi	sp,sp,16
    e8898646:	8082                	ret

00000000e8898648 <netconn_recv_udp_raw_netbuf_flags>:
  LWIP_ERROR("netconn_recv_udp_raw_netbuf: invalid conn", (conn != NULL) &&
    e8898648:	c911                	beqz	a0,e889865c <netconn_recv_udp_raw_netbuf_flags+0x14>
    e889864a:	00054783          	lbu	a5,0(a0)
    e889864e:	4741                	li	a4,16
    e8898650:	0f07f793          	andi	a5,a5,240
    e8898654:	00e78463          	beq	a5,a4,e889865c <netconn_recv_udp_raw_netbuf_flags+0x14>
  return netconn_recv_data(conn, (void **)new_buf, apiflags);
    e8898658:	f72ff06f          	j	e8897dca <netconn_recv_data>
{
    e889865c:	1141                	addi	sp,sp,-16
  LWIP_ERROR("netconn_recv_udp_raw_netbuf: invalid conn", (conn != NULL) &&
    e889865e:	02f00593          	li	a1,47
    e8898662:	0003a517          	auipc	a0,0x3a
    e8898666:	73e50513          	addi	a0,a0,1854 # e88d2da0 <ethzero+0x260>
{
    e889866a:	e406                	sd	ra,8(sp)
  LWIP_ERROR("netconn_recv_udp_raw_netbuf: invalid conn", (conn != NULL) &&
    e889866c:	d0de30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898670:	00150693          	addi	a3,a0,1
    e8898674:	34d00613          	li	a2,845
    e8898678:	0003a597          	auipc	a1,0x3a
    e889867c:	7f058593          	addi	a1,a1,2032 # e88d2e68 <ethzero+0x328>
    e8898680:	00037517          	auipc	a0,0x37
    e8898684:	a3050513          	addi	a0,a0,-1488 # e88cf0b0 <kSinTable1024+0x900>
    e8898688:	c3fe30ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e889868c:	60a2                	ld	ra,8(sp)
    e889868e:	5541                	li	a0,-16
    e8898690:	0141                	addi	sp,sp,16
    e8898692:	8082                	ret

00000000e8898694 <netconn_send>:
{
    e8898694:	715d                	addi	sp,sp,-80
    e8898696:	e486                	sd	ra,72(sp)
  LWIP_ERROR("netconn_send: invalid conn",  (conn != NULL), return ERR_ARG;);
    e8898698:	e511                	bnez	a0,e88986a4 <netconn_send+0x10>
    e889869a:	a03ff0ef          	jal	ra,e889809c <netconn_send.part.3>
}
    e889869e:	60a6                	ld	ra,72(sp)
    e88986a0:	6161                	addi	sp,sp,80
    e88986a2:	8082                	ret
  API_MSG_VAR_REF(msg).conn = conn;
    e88986a4:	e02a                	sd	a0,0(sp)
  API_MSG_VAR_REF(msg).msg.b = buf;
    e88986a6:	e82e                	sd	a1,16(sp)
  err = netconn_apimsg(lwip_netconn_do_send, &API_MSG_VAR_REF(msg));
    e88986a8:	00002517          	auipc	a0,0x2
    e88986ac:	c1c50513          	addi	a0,a0,-996 # e889a2c4 <lwip_netconn_do_send>
    e88986b0:	858a                	mv	a1,sp
    e88986b2:	efaff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e88986b6:	b7e5                	j	e889869e <netconn_send+0xa>

00000000e88986b8 <netconn_write_vectors_partly>:
{
    e88986b8:	7159                	addi	sp,sp,-112
    e88986ba:	f486                	sd	ra,104(sp)
    e88986bc:	f0a2                	sd	s0,96(sp)
    e88986be:	eca6                	sd	s1,88(sp)
    e88986c0:	e8ca                	sd	s2,80(sp)
  LWIP_ERROR("netconn_write: invalid conn",  (conn != NULL), return ERR_ARG;);
    e88986c2:	ed1d                	bnez	a0,e8898700 <netconn_write_vectors_partly+0x48>
    e88986c4:	02f00593          	li	a1,47
    e88986c8:	0003a517          	auipc	a0,0x3a
    e88986cc:	6d850513          	addi	a0,a0,1752 # e88d2da0 <ethzero+0x260>
    e88986d0:	ca9e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88986d4:	00150693          	addi	a3,a0,1
    e88986d8:	3ee00613          	li	a2,1006
    e88986dc:	0003b597          	auipc	a1,0x3b
    e88986e0:	80458593          	addi	a1,a1,-2044 # e88d2ee0 <ethzero+0x3a0>
    e88986e4:	00037517          	auipc	a0,0x37
    e88986e8:	9cc50513          	addi	a0,a0,-1588 # e88cf0b0 <kSinTable1024+0x900>
    e88986ec:	bdbe30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88986f0:	5441                	li	s0,-16
}
    e88986f2:	8522                	mv	a0,s0
    e88986f4:	70a6                	ld	ra,104(sp)
    e88986f6:	7406                	ld	s0,96(sp)
    e88986f8:	64e6                	ld	s1,88(sp)
    e88986fa:	6946                	ld	s2,80(sp)
    e88986fc:	6165                	addi	sp,sp,112
    e88986fe:	8082                	ret
  LWIP_ERROR("netconn_write: invalid conn->type",  (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP), return ERR_VAL;);
    e8898700:	00054783          	lbu	a5,0(a0)
    e8898704:	4841                	li	a6,16
    e8898706:	0f07f793          	andi	a5,a5,240
    e889870a:	03078a63          	beq	a5,a6,e889873e <netconn_write_vectors_partly+0x86>
    e889870e:	02f00593          	li	a1,47
    e8898712:	0003a517          	auipc	a0,0x3a
    e8898716:	68e50513          	addi	a0,a0,1678 # e88d2da0 <ethzero+0x260>
    e889871a:	c5fe30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889871e:	00150693          	addi	a3,a0,1
    e8898722:	3ef00613          	li	a2,1007
    e8898726:	0003a597          	auipc	a1,0x3a
    e889872a:	7da58593          	addi	a1,a1,2010 # e88d2f00 <ethzero+0x3c0>
    e889872e:	00037517          	auipc	a0,0x37
    e8898732:	98250513          	addi	a0,a0,-1662 # e88cf0b0 <kSinTable1024+0x900>
    e8898736:	b91e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    return ERR_VAL;
    e889873a:	5469                	li	s0,-6
    e889873c:	bf5d                	j	e88986f2 <netconn_write_vectors_partly+0x3a>
  if (dontblock && !bytes_written) {
    e889873e:	04054783          	lbu	a5,64(a0)
    e8898742:	0046f813          	andi	a6,a3,4
  dontblock = netconn_is_nonblocking(conn) || (apiflags & NETCONN_DONTBLOCK);
    e8898746:	4901                	li	s2,0
  if (dontblock && !bytes_written) {
    e8898748:	8b89                	andi	a5,a5,2
    e889874a:	0107e7b3          	or	a5,a5,a6
    e889874e:	c781                	beqz	a5,e8898756 <netconn_write_vectors_partly+0x9e>
    return ERR_VAL;
    e8898750:	5469                	li	s0,-6
    e8898752:	4905                	li	s2,1
  if (dontblock && !bytes_written) {
    e8898754:	df59                	beqz	a4,e88986f2 <netconn_write_vectors_partly+0x3a>
    e8898756:	4781                	li	a5,0
    e8898758:	4481                	li	s1,0
  for (i = 0; i < vectorcnt; i++) {
    e889875a:	0006089b          	sext.w	a7,a2
    size += vectors[i].len;
    e889875e:	00858313          	addi	t1,a1,8
    e8898762:	a809                	j	e8898774 <netconn_write_vectors_partly+0xbc>
    e8898764:	00479813          	slli	a6,a5,0x4
    e8898768:	6103480b          	lrd	a6,t1,a6,0
    e889876c:	0785                	addi	a5,a5,1
    e889876e:	94c2                	add	s1,s1,a6
    if (size < vectors[i].len) {
    e8898770:	fd04e5e3          	bltu	s1,a6,e889873a <netconn_write_vectors_partly+0x82>
  for (i = 0; i < vectorcnt; i++) {
    e8898774:	0007881b          	sext.w	a6,a5
    e8898778:	ff1846e3          	blt	a6,a7,e8898764 <netconn_write_vectors_partly+0xac>
  if (size == 0) {
    e889877c:	e099                	bnez	s1,e8898782 <netconn_write_vectors_partly+0xca>
    return ERR_OK;
    e889877e:	4401                	li	s0,0
    e8898780:	bf8d                	j	e88986f2 <netconn_write_vectors_partly+0x3a>
  } else if (size > SSIZE_MAX) {
    e8898782:	800007b7          	lui	a5,0x80000
    e8898786:	fff7c793          	not	a5,a5
    e889878a:	0097f563          	bgeu	a5,s1,e8898794 <netconn_write_vectors_partly+0xdc>
    return ERR_VAL;
    e889878e:	5469                	li	s0,-6
    if (!bytes_written) {
    e8898790:	d32d                	beqz	a4,e88986f2 <netconn_write_vectors_partly+0x3a>
    size = (size_t)limited;
    e8898792:	84be                	mv	s1,a5
  API_MSG_VAR_REF(msg).conn = conn;
    e8898794:	e82a                	sd	a0,16(sp)
  API_MSG_VAR_REF(msg).msg.w.vector = vectors;
    e8898796:	f02e                	sd	a1,32(sp)
  err = netconn_apimsg(lwip_netconn_do_write, &API_MSG_VAR_REF(msg));
    e8898798:	00002517          	auipc	a0,0x2
    e889879c:	c5850513          	addi	a0,a0,-936 # e889a3f0 <lwip_netconn_do_write>
    e88987a0:	080c                	addi	a1,sp,16
    e88987a2:	e43a                	sd	a4,8(sp)
  API_MSG_VAR_REF(msg).msg.w.vector_cnt = vectorcnt;
    e88987a4:	02c11423          	sh	a2,40(sp)
  API_MSG_VAR_REF(msg).msg.w.vector_off = 0;
    e88987a8:	f802                	sd	zero,48(sp)
  API_MSG_VAR_REF(msg).msg.w.apiflags = apiflags;
    e88987aa:	04d10423          	sb	a3,72(sp)
  API_MSG_VAR_REF(msg).msg.w.len = size;
    e88987ae:	fc26                	sd	s1,56(sp)
  API_MSG_VAR_REF(msg).msg.w.offset = 0;
    e88987b0:	e082                	sd	zero,64(sp)
  err = netconn_apimsg(lwip_netconn_do_write, &API_MSG_VAR_REF(msg));
    e88987b2:	dfaff0ef          	jal	ra,e8897dac <netconn_apimsg>
    e88987b6:	842a                	mv	s0,a0
  if (err == ERR_OK) {
    e88987b8:	fd0d                	bnez	a0,e88986f2 <netconn_write_vectors_partly+0x3a>
    if (bytes_written != NULL) {
    e88987ba:	6722                	ld	a4,8(sp)
    e88987bc:	c319                	beqz	a4,e88987c2 <netconn_write_vectors_partly+0x10a>
      *bytes_written = API_MSG_VAR_REF(msg).msg.w.offset;
    e88987be:	6786                	ld	a5,64(sp)
    e88987c0:	e31c                	sd	a5,0(a4)
    if (!dontblock) {
    e88987c2:	fa091ee3          	bnez	s2,e889877e <netconn_write_vectors_partly+0xc6>
      LWIP_ASSERT("do_write failed to write all bytes", API_MSG_VAR_REF(msg).msg.w.offset == size);
    e88987c6:	6786                	ld	a5,64(sp)
    e88987c8:	fa978be3          	beq	a5,s1,e889877e <netconn_write_vectors_partly+0xc6>
    e88987cc:	02f00593          	li	a1,47
    e88987d0:	0003a517          	auipc	a0,0x3a
    e88987d4:	5d050513          	addi	a0,a0,1488 # e88d2da0 <ethzero+0x260>
    e88987d8:	ba1e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88987dc:	00150693          	addi	a3,a0,1
    e88987e0:	43000613          	li	a2,1072
    e88987e4:	0003a597          	auipc	a1,0x3a
    e88987e8:	74458593          	addi	a1,a1,1860 # e88d2f28 <ethzero+0x3e8>
    e88987ec:	00037517          	auipc	a0,0x37
    e88987f0:	8c450513          	addi	a0,a0,-1852 # e88cf0b0 <kSinTable1024+0x900>
    e88987f4:	ad3e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88987f8:	bded                	j	e88986f2 <netconn_write_vectors_partly+0x3a>

00000000e88987fa <netconn_write_partly>:
{
    e88987fa:	1101                	addi	sp,sp,-32
  vector.len = size;
    e88987fc:	f8c1558b          	sdd	a1,a2,(sp),0,4
  return netconn_write_vectors_partly(conn, &vector, 1, apiflags, bytes_written);
    e8898800:	858a                	mv	a1,sp
    e8898802:	4605                	li	a2,1
{
    e8898804:	ec06                	sd	ra,24(sp)
  return netconn_write_vectors_partly(conn, &vector, 1, apiflags, bytes_written);
    e8898806:	eb3ff0ef          	jal	ra,e88986b8 <netconn_write_vectors_partly>
}
    e889880a:	60e2                	ld	ra,24(sp)
    e889880c:	6105                	addi	sp,sp,32
    e889880e:	8082                	ret

00000000e8898810 <netconn_err>:
{
    e8898810:	87aa                	mv	a5,a0
  if (conn == NULL) {
    e8898812:	c511                	beqz	a0,e889881e <netconn_err+0xe>
  err = conn->pending_err;
    e8898814:	01050503          	lb	a0,16(a0)
  conn->pending_err = ERR_OK;
    e8898818:	00078823          	sb	zero,16(a5) # ffffffff80000010 <__DRAM0_INF_BASE+0xfffffffe80010010>
  SYS_ARCH_UNPROTECT(lev);
  return err;
    e889881c:	8082                	ret
    return ERR_OK;
    e889881e:	4501                	li	a0,0
}
    e8898820:	8082                	ret

00000000e8898822 <netconn_shutdown>:
 * @return ERR_OK if the netconn was closed, any other err_t on error
 */
err_t
netconn_shutdown(struct netconn *conn, u8_t shut_rx, u8_t shut_tx)
{
  return netconn_close_shutdown(conn, (u8_t)((shut_rx ? NETCONN_SHUT_RD : 0) | (shut_tx ? NETCONN_SHUT_WR : 0)));
    e8898822:	00c03633          	snez	a2,a2
    e8898826:	00b035b3          	snez	a1,a1
    e889882a:	0606                	slli	a2,a2,0x1
    e889882c:	8dd1                	or	a1,a1,a2
    e889882e:	f72ff06f          	j	e8897fa0 <netconn_close_shutdown>

00000000e8898832 <netconn_join_leave_group>:
err_t
netconn_join_leave_group(struct netconn *conn,
                         const ip_addr_t *multiaddr,
                         const ip_addr_t *netif_addr,
                         enum netconn_igmp join_or_leave)
{
    e8898832:	715d                	addi	sp,sp,-80
    e8898834:	e486                	sd	ra,72(sp)
  API_MSG_VAR_DECLARE(msg);
  err_t err;

  LWIP_ERROR("netconn_join_leave_group: invalid conn",  (conn != NULL), return ERR_ARG;);
    e8898836:	e91d                	bnez	a0,e889886c <netconn_join_leave_group+0x3a>
    e8898838:	02f00593          	li	a1,47
    e889883c:	0003a517          	auipc	a0,0x3a
    e8898840:	56450513          	addi	a0,a0,1380 # e88d2da0 <ethzero+0x260>
    e8898844:	b35e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898848:	00150693          	addi	a3,a0,1
    e889884c:	4a500613          	li	a2,1189
    e8898850:	0003a597          	auipc	a1,0x3a
    e8898854:	48058593          	addi	a1,a1,1152 # e88d2cd0 <ethzero+0x190>
    e8898858:	00037517          	auipc	a0,0x37
    e889885c:	85850513          	addi	a0,a0,-1960 # e88cf0b0 <kSinTable1024+0x900>
    e8898860:	a67e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8898864:	5541                	li	a0,-16
  API_MSG_VAR_REF(msg).msg.jl.join_or_leave = join_or_leave;
  err = netconn_apimsg(lwip_netconn_do_join_leave_group, &API_MSG_VAR_REF(msg));
  API_MSG_VAR_FREE(msg);

  return err;
}
    e8898866:	60a6                	ld	ra,72(sp)
    e8898868:	6161                	addi	sp,sp,80
    e889886a:	8082                	ret
  if (multiaddr == NULL) {
    e889886c:	e589                	bnez	a1,e8898876 <netconn_join_leave_group+0x44>
    multiaddr = IP4_ADDR_ANY;
    e889886e:	00037597          	auipc	a1,0x37
    e8898872:	75258593          	addi	a1,a1,1874 # e88cffc0 <ip_addr_any>
  if (netif_addr == NULL) {
    e8898876:	e609                	bnez	a2,e8898880 <netconn_join_leave_group+0x4e>
    netif_addr = IP4_ADDR_ANY;
    e8898878:	00037617          	auipc	a2,0x37
    e889887c:	74860613          	addi	a2,a2,1864 # e88cffc0 <ip_addr_any>
  API_MSG_VAR_REF(msg).conn = conn;
    e8898880:	e02a                	sd	a0,0(sp)
  API_MSG_VAR_REF(msg).msg.jl.netif_addr = API_MSG_VAR_REF(netif_addr);
    e8898882:	fac1558b          	sdd	a1,a2,(sp),1,4
  err = netconn_apimsg(lwip_netconn_do_join_leave_group, &API_MSG_VAR_REF(msg));
    e8898886:	00002517          	auipc	a0,0x2
    e889888a:	ffa50513          	addi	a0,a0,-6 # e889a880 <lwip_netconn_do_join_leave_group>
    e889888e:	858a                	mv	a1,sp
  API_MSG_VAR_REF(msg).msg.jl.join_or_leave = join_or_leave;
    e8898890:	02d100a3          	sb	a3,33(sp)
  err = netconn_apimsg(lwip_netconn_do_join_leave_group, &API_MSG_VAR_REF(msg));
    e8898894:	d18ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e8898898:	b7f9                	j	e8898866 <netconn_join_leave_group+0x34>

00000000e889889a <netconn_join_leave_group_netif>:
err_t
netconn_join_leave_group_netif(struct netconn *conn,
                               const ip_addr_t *multiaddr,
                               u8_t if_idx,
                               enum netconn_igmp join_or_leave)
{
    e889889a:	715d                	addi	sp,sp,-80
    e889889c:	e486                	sd	ra,72(sp)
  API_MSG_VAR_DECLARE(msg);
  err_t err;

  LWIP_ERROR("netconn_join_leave_group: invalid conn",  (conn != NULL), return ERR_ARG;);
    e889889e:	e91d                	bnez	a0,e88988d4 <netconn_join_leave_group_netif+0x3a>
    e88988a0:	02f00593          	li	a1,47
    e88988a4:	0003a517          	auipc	a0,0x3a
    e88988a8:	4fc50513          	addi	a0,a0,1276 # e88d2da0 <ethzero+0x260>
    e88988ac:	acde30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88988b0:	00150693          	addi	a3,a0,1
    e88988b4:	4cf00613          	li	a2,1231
    e88988b8:	0003a597          	auipc	a1,0x3a
    e88988bc:	41858593          	addi	a1,a1,1048 # e88d2cd0 <ethzero+0x190>
    e88988c0:	00036517          	auipc	a0,0x36
    e88988c4:	7f050513          	addi	a0,a0,2032 # e88cf0b0 <kSinTable1024+0x900>
    e88988c8:	9ffe30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e88988cc:	5541                	li	a0,-16
  API_MSG_VAR_REF(msg).msg.jl.join_or_leave = join_or_leave;
  err = netconn_apimsg(lwip_netconn_do_join_leave_group_netif, &API_MSG_VAR_REF(msg));
  API_MSG_VAR_FREE(msg);

  return err;
}
    e88988ce:	60a6                	ld	ra,72(sp)
    e88988d0:	6161                	addi	sp,sp,80
    e88988d2:	8082                	ret
    e88988d4:	87aa                	mv	a5,a0
  if (multiaddr == NULL) {
    e88988d6:	e589                	bnez	a1,e88988e0 <netconn_join_leave_group_netif+0x46>
    multiaddr = IP4_ADDR_ANY;
    e88988d8:	00037597          	auipc	a1,0x37
    e88988dc:	6e858593          	addi	a1,a1,1768 # e88cffc0 <ip_addr_any>
    return ERR_IF;
    e88988e0:	5551                	li	a0,-12
  if (if_idx == NETIF_NO_INDEX) {
    e88988e2:	d675                	beqz	a2,e88988ce <netconn_join_leave_group_netif+0x34>
  API_MSG_VAR_REF(msg).msg.jl.multiaddr = API_MSG_VAR_REF(multiaddr);
    e88988e4:	e82e                	sd	a1,16(sp)
  err = netconn_apimsg(lwip_netconn_do_join_leave_group_netif, &API_MSG_VAR_REF(msg));
    e88988e6:	00002517          	auipc	a0,0x2
    e88988ea:	ffa50513          	addi	a0,a0,-6 # e889a8e0 <lwip_netconn_do_join_leave_group_netif>
    e88988ee:	858a                	mv	a1,sp
  API_MSG_VAR_REF(msg).conn = conn;
    e88988f0:	e03e                	sd	a5,0(sp)
  API_MSG_VAR_REF(msg).msg.jl.if_idx = if_idx;
    e88988f2:	02c10023          	sb	a2,32(sp)
  API_MSG_VAR_REF(msg).msg.jl.join_or_leave = join_or_leave;
    e88988f6:	02d100a3          	sb	a3,33(sp)
  err = netconn_apimsg(lwip_netconn_do_join_leave_group_netif, &API_MSG_VAR_REF(msg));
    e88988fa:	cb2ff0ef          	jal	ra,e8897dac <netconn_apimsg>
  return err;
    e88988fe:	bfc1                	j	e88988ce <netconn_join_leave_group_netif+0x34>

00000000e8898900 <netconn_mark_mbox_invalid>:
}

#if LWIP_NETCONN_FULLDUPLEX
static void
netconn_mark_mbox_invalid(struct netconn *conn)
{
    e8898900:	7139                	addi	sp,sp,-64
    e8898902:	e422                	sd	s0,8(sp)
    e8898904:	e826                	sd	s1,16(sp)
    e8898906:	ec4a                	sd	s2,24(sp)
    e8898908:	f452                	sd	s4,40(sp)
    e889890a:	f856                	sd	s5,48(sp)
    e889890c:	fc06                	sd	ra,56(sp)
    e889890e:	f04e                	sd	s3,32(sp)
  int i, num_waiting;
  void *msg = LWIP_CONST_CAST(void *, &netconn_deleted);

  /* Prevent new calls/threads from reading from the mbox */
  conn->flags |= NETCONN_FLAG_MBOXINVALID;
    e8898910:	04054783          	lbu	a5,64(a0)

  SYS_ARCH_LOCKED(num_waiting = conn->mbox_threads_waiting);
    e8898914:	03052983          	lw	s3,48(a0)
{
    e8898918:	842a                	mv	s0,a0
  conn->flags |= NETCONN_FLAG_MBOXINVALID;
    e889891a:	0087e793          	ori	a5,a5,8
    e889891e:	04f50023          	sb	a5,64(a0)
  for (i = 0; i < num_waiting; i++) {
    e8898922:	4481                	li	s1,0
    if (sys_mbox_valid_val(conn->recvmbox)) {
      sys_mbox_trypost(&conn->recvmbox, msg);
    } else {
      sys_mbox_trypost(&conn->acceptmbox, msg);
    e8898924:	02850a13          	addi	s4,a0,40
    e8898928:	0003b917          	auipc	s2,0x3b
    e889892c:	9e790913          	addi	s2,s2,-1561 # e88d330f <netconn_deleted>
      sys_mbox_trypost(&conn->recvmbox, msg);
    e8898930:	02050a93          	addi	s5,a0,32
  for (i = 0; i < num_waiting; i++) {
    e8898934:	0134cb63          	blt	s1,s3,e889894a <netconn_mark_mbox_invalid+0x4a>
    }
  }
}
    e8898938:	70e2                	ld	ra,56(sp)
    e889893a:	6422                	ld	s0,8(sp)
    e889893c:	64c2                	ld	s1,16(sp)
    e889893e:	6962                	ld	s2,24(sp)
    e8898940:	7982                	ld	s3,32(sp)
    e8898942:	7a22                	ld	s4,40(sp)
    e8898944:	7ac2                	ld	s5,48(sp)
    e8898946:	6121                	addi	sp,sp,64
    e8898948:	8082                	ret
    if (sys_mbox_valid_val(conn->recvmbox)) {
    e889894a:	701c                	ld	a5,32(s0)
      sys_mbox_trypost(&conn->recvmbox, msg);
    e889894c:	85ca                	mv	a1,s2
    e889894e:	8556                	mv	a0,s5
    if (sys_mbox_valid_val(conn->recvmbox)) {
    e8898950:	e391                	bnez	a5,e8898954 <netconn_mark_mbox_invalid+0x54>
      sys_mbox_trypost(&conn->acceptmbox, msg);
    e8898952:	8552                	mv	a0,s4
    e8898954:	b72ff0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
  for (i = 0; i < num_waiting; i++) {
    e8898958:	2485                	addiw	s1,s1,1
    e889895a:	bfe9                	j	e8898934 <netconn_mark_mbox_invalid+0x34>

00000000e889895c <recv_udp>:
{
    e889895c:	7139                	addi	sp,sp,-64
    e889895e:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8898962:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8898966:	f852                	sd	s4,48(sp)
    e8898968:	fc06                	sd	ra,56(sp)
    e889896a:	84aa                	mv	s1,a0
    e889896c:	842e                	mv	s0,a1
    e889896e:	89b2                	mv	s3,a2
    e8898970:	8936                	mv	s2,a3
    e8898972:	8a3a                	mv	s4,a4
  LWIP_ASSERT("recv_udp must have a pcb argument", pcb != NULL);
    e8898974:	e59d                	bnez	a1,e88989a2 <recv_udp+0x46>
    e8898976:	02f00593          	li	a1,47
    e889897a:	0003b517          	auipc	a0,0x3b
    e889897e:	ade50513          	addi	a0,a0,-1314 # e88d3458 <netconn_reset+0x84>
    e8898982:	9f7e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898986:	00150693          	addi	a3,a0,1
    e889898a:	0e500613          	li	a2,229
    e889898e:	0003b597          	auipc	a1,0x3b
    e8898992:	b5258593          	addi	a1,a1,-1198 # e88d34e0 <netconn_reset+0x10c>
    e8898996:	00036517          	auipc	a0,0x36
    e889899a:	71a50513          	addi	a0,a0,1818 # e88cf0b0 <kSinTable1024+0x900>
    e889899e:	929e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("recv_udp must have an argument", arg != NULL);
    e88989a2:	e4d9                	bnez	s1,e8898a30 <recv_udp+0xd4>
    e88989a4:	02f00593          	li	a1,47
    e88989a8:	0003b517          	auipc	a0,0x3b
    e88989ac:	ab050513          	addi	a0,a0,-1360 # e88d3458 <netconn_reset+0x84>
    e88989b0:	9c9e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88989b4:	00150693          	addi	a3,a0,1
    e88989b8:	0e600613          	li	a2,230
    e88989bc:	0003b597          	auipc	a1,0x3b
    e88989c0:	b4c58593          	addi	a1,a1,-1204 # e88d3508 <netconn_reset+0x134>
    e88989c4:	00036517          	auipc	a0,0x36
    e88989c8:	6ec50513          	addi	a0,a0,1772 # e88cf0b0 <kSinTable1024+0x900>
    e88989cc:	8fbe30ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e88989d0:	fa91440b          	ldd	s0,s1,(sp),1,4
    e88989d4:	70e2                	ld	ra,56(sp)
    e88989d6:	7a42                	ld	s4,48(sp)
    pbuf_free(p);
    e88989d8:	854e                	mv	a0,s3
}
    e88989da:	fd31490b          	ldd	s2,s3,(sp),2,4
    e88989de:	6121                	addi	sp,sp,64
    pbuf_free(p);
    e88989e0:	86df606f          	j	e888f24c <pbuf_free>
    ip_addr_set(&buf->addr, addr);
    e88989e4:	4781                	li	a5,0
    e88989e6:	c81c                	sw	a5,16(s0)
    e88989e8:	00042a23          	sw	zero,20(s0)
    e88989ec:	00043c23          	sd	zero,24(s0)
    e88989f0:	02040023          	sb	zero,32(s0)
    e88989f4:	a0e1                	j	e8898abc <recv_udp+0x160>
    e88989f6:	00092783          	lw	a5,0(s2)
    e88989fa:	b7f5                	j	e88989e6 <recv_udp+0x8a>
      ip_addr_set(&buf->toaddr, ip_current_dest_addr());
    e88989fc:	5fdc                	lw	a5,60(a5)
    e88989fe:	04040023          	sb	zero,64(s0)
    e8898a02:	02042a23          	sw	zero,52(s0)
    e8898a06:	d81c                	sw	a5,48(s0)
    e8898a08:	02043c23          	sd	zero,56(s0)
    e8898a0c:	a8fd                	j	e8898b0a <recv_udp+0x1ae>
    SYS_ARCH_INC(conn->recv_avail, len);
    e8898a0e:	5cdc                	lw	a5,60(s1)
    API_EVENT(conn, NETCONN_EVT_RCVPLUS, len);
    e8898a10:	0504b303          	ld	t1,80(s1)
    SYS_ARCH_INC(conn->recv_avail, len);
    e8898a14:	9fb1                	addw	a5,a5,a2
    e8898a16:	dcdc                	sw	a5,60(s1)
    API_EVENT(conn, NETCONN_EVT_RCVPLUS, len);
    e8898a18:	12030263          	beqz	t1,e8898b3c <recv_udp+0x1e0>
    e8898a1c:	8526                	mv	a0,s1
}
    e8898a1e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8898a22:	70e2                	ld	ra,56(sp)
    e8898a24:	7a42                	ld	s4,48(sp)
    e8898a26:	fd31490b          	ldd	s2,s3,(sp),2,4
    API_EVENT(conn, NETCONN_EVT_RCVPLUS, len);
    e8898a2a:	4581                	li	a1,0
}
    e8898a2c:	6121                	addi	sp,sp,64
    API_EVENT(conn, NETCONN_EVT_RCVPLUS, len);
    e8898a2e:	8302                	jr	t1
  LWIP_ASSERT("recv_udp: recv for wrong pcb!", conn->pcb.udp == pcb);
    e8898a30:	649c                	ld	a5,8(s1)
    e8898a32:	02878863          	beq	a5,s0,e8898a62 <recv_udp+0x106>
    e8898a36:	02f00593          	li	a1,47
    e8898a3a:	0003b517          	auipc	a0,0x3b
    e8898a3e:	a1e50513          	addi	a0,a0,-1506 # e88d3458 <netconn_reset+0x84>
    e8898a42:	937e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898a46:	00150693          	addi	a3,a0,1
    e8898a4a:	0ee00613          	li	a2,238
    e8898a4e:	0003b597          	auipc	a1,0x3b
    e8898a52:	ada58593          	addi	a1,a1,-1318 # e88d3528 <netconn_reset+0x154>
    e8898a56:	00036517          	auipc	a0,0x36
    e8898a5a:	65a50513          	addi	a0,a0,1626 # e88cf0b0 <kSinTable1024+0x900>
    e8898a5e:	869e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (!NETCONN_MBOX_VALID(conn, &conn->recvmbox) ||
    e8898a62:	709c                	ld	a5,32(s1)
    e8898a64:	d7b5                	beqz	a5,e88989d0 <recv_udp+0x74>
    e8898a66:	0404c783          	lbu	a5,64(s1)
    e8898a6a:	8ba1                	andi	a5,a5,8
    e8898a6c:	f3b5                	bnez	a5,e88989d0 <recv_udp+0x74>
      ((recv_avail + (int)(p->tot_len)) > conn->recv_bufsize)) {
    e8898a6e:	5cd8                	lw	a4,60(s1)
    e8898a70:	0109d783          	lhu	a5,16(s3)
  if (!NETCONN_MBOX_VALID(conn, &conn->recvmbox) ||
    e8898a74:	9fb9                	addw	a5,a5,a4
    e8898a76:	5c98                	lw	a4,56(s1)
    e8898a78:	f4f74ce3          	blt	a4,a5,e88989d0 <recv_udp+0x74>
  buf = (struct netbuf *)memp_malloc(MEMP_NETBUF);
    e8898a7c:	451d                	li	a0,7
    e8898a7e:	ecef50ef          	jal	ra,e888e14c <memp_malloc>
    e8898a82:	842a                	mv	s0,a0
  if (buf == NULL) {
    e8898a84:	d531                	beqz	a0,e88989d0 <recv_udp+0x74>
    buf->ptr = p;
    e8898a86:	f935598b          	sdd	s3,s3,(a0),0,4
    ip_addr_set(&buf->addr, addr);
    e8898a8a:	01494783          	lbu	a5,20(s2)
    e8898a8e:	02f50223          	sb	a5,36(a0)
    e8898a92:	f40909e3          	beqz	s2,e88989e4 <recv_udp+0x88>
    e8898a96:	4719                	li	a4,6
    e8898a98:	f4e79fe3          	bne	a5,a4,e88989f6 <recv_udp+0x9a>
    e8898a9c:	00092783          	lw	a5,0(s2)
    e8898aa0:	c91c                	sw	a5,16(a0)
    e8898aa2:	00492783          	lw	a5,4(s2)
    e8898aa6:	c95c                	sw	a5,20(a0)
    e8898aa8:	00892783          	lw	a5,8(s2)
    e8898aac:	cd1c                	sw	a5,24(a0)
    e8898aae:	00c92783          	lw	a5,12(s2)
    e8898ab2:	cd5c                	sw	a5,28(a0)
    e8898ab4:	01094783          	lbu	a5,16(s2)
    e8898ab8:	02f50023          	sb	a5,32(a0)
    buf->port = port;
    e8898abc:	03441423          	sh	s4,40(s0)
    if (conn->flags & NETCONN_FLAG_PKTINFO) {
    e8898ac0:	0404c783          	lbu	a5,64(s1)
    e8898ac4:	0407f793          	andi	a5,a5,64
    e8898ac8:	c7a9                	beqz	a5,e8898b12 <recv_udp+0x1b6>
      const struct udp_hdr *udphdr = (const struct udp_hdr *)ip_next_header_ptr();
    e8898aca:	0004d797          	auipc	a5,0x4d
    e8898ace:	07e78793          	addi	a5,a5,126 # e88e5b48 <ip_data>
    e8898ad2:	6f98                	ld	a4,24(a5)
    e8898ad4:	e311                	bnez	a4,e8898ad8 <recv_udp+0x17c>
    e8898ad6:	6b98                	ld	a4,16(a5)
    e8898ad8:	0207d683          	lhu	a3,32(a5)
      ip_addr_set(&buf->toaddr, ip_current_dest_addr());
    e8898adc:	4619                	li	a2,6
      const struct udp_hdr *udphdr = (const struct udp_hdr *)ip_next_header_ptr();
    e8898ade:	9736                	add	a4,a4,a3
      buf->flags = NETBUF_FLAG_DESTADDR;
    e8898ae0:	4685                	li	a3,1
    e8898ae2:	02d40523          	sb	a3,42(s0)
      ip_addr_set(&buf->toaddr, ip_current_dest_addr());
    e8898ae6:	0507c683          	lbu	a3,80(a5)
    e8898aea:	04d40223          	sb	a3,68(s0)
    e8898aee:	f0c697e3          	bne	a3,a2,e88989fc <recv_udp+0xa0>
    e8898af2:	5fd4                	lw	a3,60(a5)
    e8898af4:	d814                	sw	a3,48(s0)
    e8898af6:	43b4                	lw	a3,64(a5)
    e8898af8:	d854                	sw	a3,52(s0)
    e8898afa:	43f4                	lw	a3,68(a5)
    e8898afc:	dc14                	sw	a3,56(s0)
    e8898afe:	47b4                	lw	a3,72(a5)
    e8898b00:	dc54                	sw	a3,60(s0)
    e8898b02:	04c7c783          	lbu	a5,76(a5)
    e8898b06:	04f40023          	sb	a5,64(s0)
      buf->toport_chksum = udphdr->dest;
    e8898b0a:	00275783          	lhu	a5,2(a4)
    e8898b0e:	02f41623          	sh	a5,44(s0)
  len = p->tot_len;
    e8898b12:	0109d603          	lhu	a2,16(s3)
  if (sys_mbox_trypost(&conn->recvmbox, buf) != ERR_OK) {
    e8898b16:	85a2                	mv	a1,s0
    e8898b18:	02048513          	addi	a0,s1,32
  len = p->tot_len;
    e8898b1c:	e432                	sd	a2,8(sp)
  if (sys_mbox_trypost(&conn->recvmbox, buf) != ERR_OK) {
    e8898b1e:	9a8ff0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
    e8898b22:	6622                	ld	a2,8(sp)
    e8898b24:	ee0505e3          	beqz	a0,e8898a0e <recv_udp+0xb2>
    netbuf_delete(buf);
    e8898b28:	8522                	mv	a0,s0
}
    e8898b2a:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8898b2e:	70e2                	ld	ra,56(sp)
    e8898b30:	7a42                	ld	s4,48(sp)
    e8898b32:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8898b36:	6121                	addi	sp,sp,64
    netbuf_delete(buf);
    e8898b38:	6110106f          	j	e889a948 <netbuf_delete>
}
    e8898b3c:	70e2                	ld	ra,56(sp)
    e8898b3e:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8898b42:	7a42                	ld	s4,48(sp)
    e8898b44:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8898b48:	6121                	addi	sp,sp,64
    e8898b4a:	8082                	ret

00000000e8898b4c <setup_tcp>:
{
    e8898b4c:	1141                	addi	sp,sp,-16
    e8898b4e:	e406                	sd	ra,8(sp)
    e8898b50:	e022                	sd	s0,0(sp)
  pcb = conn->pcb.tcp;
    e8898b52:	6500                	ld	s0,8(a0)
{
    e8898b54:	85aa                	mv	a1,a0
  tcp_arg(pcb, conn);
    e8898b56:	8522                	mv	a0,s0
    e8898b58:	a76f80ef          	jal	ra,e8890dce <tcp_arg>
  tcp_recv(pcb, recv_tcp);
    e8898b5c:	8522                	mv	a0,s0
    e8898b5e:	00001597          	auipc	a1,0x1
    e8898b62:	81258593          	addi	a1,a1,-2030 # e8899370 <recv_tcp>
    e8898b66:	a6ef80ef          	jal	ra,e8890dd4 <tcp_recv>
  tcp_sent(pcb, sent_tcp);
    e8898b6a:	8522                	mv	a0,s0
    e8898b6c:	00001597          	auipc	a1,0x1
    e8898b70:	c1858593          	addi	a1,a1,-1000 # e8899784 <sent_tcp>
    e8898b74:	ab2f80ef          	jal	ra,e8890e26 <tcp_sent>
  tcp_poll(pcb, poll_tcp, NETCONN_TCP_POLL_INTERVAL);
    e8898b78:	8522                	mv	a0,s0
    e8898b7a:	00000597          	auipc	a1,0x0
    e8898b7e:	74c58593          	addi	a1,a1,1868 # e88992c6 <poll_tcp>
    e8898b82:	4609                	li	a2,2
    e8898b84:	b58f80ef          	jal	ra,e8890edc <tcp_poll>
  tcp_err(pcb, err_tcp);
    e8898b88:	8522                	mv	a0,s0
}
    e8898b8a:	6402                	ld	s0,0(sp)
    e8898b8c:	60a2                	ld	ra,8(sp)
  tcp_err(pcb, err_tcp);
    e8898b8e:	00001597          	auipc	a1,0x1
    e8898b92:	92a58593          	addi	a1,a1,-1750 # e88994b8 <err_tcp>
}
    e8898b96:	0141                	addi	sp,sp,16
  tcp_err(pcb, err_tcp);
    e8898b98:	ae0f806f          	j	e8890e78 <tcp_err>

00000000e8898b9c <lwip_netconn_do_connected>:
 *
 * @see tcp.h (struct tcp_pcb.connected) for parameters and return values
 */
static err_t
lwip_netconn_do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
{
    e8898b9c:	1101                	addi	sp,sp,-32
    e8898b9e:	f891540b          	sdd	s0,s1,(sp),0,4
    e8898ba2:	ec06                	sd	ra,24(sp)
    e8898ba4:	e84a                	sd	s2,16(sp)
  LWIP_UNUSED_ARG(pcb);

  conn = (struct netconn *)arg;

  if (conn == NULL) {
    return ERR_VAL;
    e8898ba6:	5469                	li	s0,-6
  if (conn == NULL) {
    e8898ba8:	10050063          	beqz	a0,e8898ca8 <lwip_netconn_do_connected+0x10c>
  }

  LWIP_ASSERT("conn->state == NETCONN_CONNECT", conn->state == NETCONN_CONNECT);
    e8898bac:	00154703          	lbu	a4,1(a0)
    e8898bb0:	478d                	li	a5,3
    e8898bb2:	8932                	mv	s2,a2
    e8898bb4:	842a                	mv	s0,a0
    e8898bb6:	02f70863          	beq	a4,a5,e8898be6 <lwip_netconn_do_connected+0x4a>
    e8898bba:	02f00593          	li	a1,47
    e8898bbe:	0003b517          	auipc	a0,0x3b
    e8898bc2:	89a50513          	addi	a0,a0,-1894 # e88d3458 <netconn_reset+0x84>
    e8898bc6:	fb2e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898bca:	00150693          	addi	a3,a0,1
    e8898bce:	52300613          	li	a2,1315
    e8898bd2:	0003a597          	auipc	a1,0x3a
    e8898bd6:	4d658593          	addi	a1,a1,1238 # e88d30a8 <CSWTCH.34+0x158>
    e8898bda:	00036517          	auipc	a0,0x36
    e8898bde:	4d650513          	addi	a0,a0,1238 # e88cf0b0 <kSinTable1024+0x900>
    e8898be2:	ee4e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("(conn->current_msg != NULL) || conn->in_non_blocking_connect",
    e8898be6:	643c                	ld	a5,72(s0)
    e8898be8:	eb9d                	bnez	a5,e8898c1e <lwip_netconn_do_connected+0x82>
    e8898bea:	04044783          	lbu	a5,64(s0)
    e8898bee:	8b91                	andi	a5,a5,4
    e8898bf0:	e79d                	bnez	a5,e8898c1e <lwip_netconn_do_connected+0x82>
    e8898bf2:	02f00593          	li	a1,47
    e8898bf6:	0003b517          	auipc	a0,0x3b
    e8898bfa:	86250513          	addi	a0,a0,-1950 # e88d3458 <netconn_reset+0x84>
    e8898bfe:	f7ae30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898c02:	00150693          	addi	a3,a0,1
    e8898c06:	52500613          	li	a2,1317
    e8898c0a:	0003a597          	auipc	a1,0x3a
    e8898c0e:	4be58593          	addi	a1,a1,1214 # e88d30c8 <CSWTCH.34+0x178>
    e8898c12:	00036517          	auipc	a0,0x36
    e8898c16:	49e50513          	addi	a0,a0,1182 # e88cf0b0 <kSinTable1024+0x900>
    e8898c1a:	eace30ef          	jal	ra,e887c2c6 <eLIBs_printf>
              (conn->current_msg != NULL) || IN_NONBLOCKING_CONNECT(conn));

  if (conn->current_msg != NULL) {
    e8898c1e:	6424                	ld	s1,72(s0)
    e8898c20:	c491                	beqz	s1,e8898c2c <lwip_netconn_do_connected+0x90>
    conn->current_msg->err = err;
    e8898c22:	01248423          	sb	s2,8(s1)
    op_completed_sem = LWIP_API_MSG_SEM(conn->current_msg);
    e8898c26:	643c                	ld	a5,72(s0)
    e8898c28:	6384                	ld	s1,0(a5)
    e8898c2a:	04e1                	addi	s1,s1,24
  }
  if ((NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP) && (err == ERR_OK)) {
    e8898c2c:	00044783          	lbu	a5,0(s0)
    e8898c30:	4741                	li	a4,16
    e8898c32:	0f07f793          	andi	a5,a5,240
    e8898c36:	00e79763          	bne	a5,a4,e8898c44 <lwip_netconn_do_connected+0xa8>
    e8898c3a:	00091563          	bnez	s2,e8898c44 <lwip_netconn_do_connected+0xa8>
    setup_tcp(conn);
    e8898c3e:	8522                	mv	a0,s0
    e8898c40:	f0dff0ef          	jal	ra,e8898b4c <setup_tcp>
  }
  was_blocking = !IN_NONBLOCKING_CONNECT(conn);
    e8898c44:	04044783          	lbu	a5,64(s0)
    e8898c48:	0047f913          	andi	s2,a5,4
  SET_NONBLOCKING_CONNECT(conn, 0);
    e8898c4c:	9bed                	andi	a5,a5,-5
    e8898c4e:	04f40023          	sb	a5,64(s0)
  LWIP_ASSERT("blocking connect state error",
    e8898c52:	02091a63          	bnez	s2,e8898c86 <lwip_netconn_do_connected+0xea>
    e8898c56:	e88d                	bnez	s1,e8898c88 <lwip_netconn_do_connected+0xec>
    e8898c58:	02f00593          	li	a1,47
    e8898c5c:	0003a517          	auipc	a0,0x3a
    e8898c60:	7fc50513          	addi	a0,a0,2044 # e88d3458 <netconn_reset+0x84>
    e8898c64:	f14e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898c68:	00150693          	addi	a3,a0,1
    e8898c6c:	53200613          	li	a2,1330
    e8898c70:	0003a597          	auipc	a1,0x3a
    e8898c74:	49858593          	addi	a1,a1,1176 # e88d3108 <CSWTCH.34+0x1b8>
    e8898c78:	00036517          	auipc	a0,0x36
    e8898c7c:	43850513          	addi	a0,a0,1080 # e88cf0b0 <kSinTable1024+0x900>
    e8898c80:	e46e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8898c84:	a011                	j	e8898c88 <lwip_netconn_do_connected+0xec>
    e8898c86:	f8e9                	bnez	s1,e8898c58 <lwip_netconn_do_connected+0xbc>
              (was_blocking && op_completed_sem != NULL) ||
              (!was_blocking && op_completed_sem == NULL));
  conn->current_msg = NULL;
  conn->state = NETCONN_NONE;
  API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0);
    e8898c88:	683c                	ld	a5,80(s0)
  conn->current_msg = NULL;
    e8898c8a:	04043423          	sd	zero,72(s0)
  conn->state = NETCONN_NONE;
    e8898c8e:	000400a3          	sb	zero,1(s0)
  API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0);
    e8898c92:	c789                	beqz	a5,e8898c9c <lwip_netconn_do_connected+0x100>
    e8898c94:	4601                	li	a2,0
    e8898c96:	4589                	li	a1,2
    e8898c98:	8522                	mv	a0,s0
    e8898c9a:	9782                	jalr	a5

  if (was_blocking) {
    sys_sem_signal(op_completed_sem);
  }
  return ERR_OK;
    e8898c9c:	4401                	li	s0,0
  if (was_blocking) {
    e8898c9e:	00091563          	bnez	s2,e8898ca8 <lwip_netconn_do_connected+0x10c>
    sys_sem_signal(op_completed_sem);
    e8898ca2:	8526                	mv	a0,s1
    e8898ca4:	ee3fe0ef          	jal	ra,e8897b86 <sys_sem_signal>
}
    e8898ca8:	8522                	mv	a0,s0
    e8898caa:	60e2                	ld	ra,24(sp)
    e8898cac:	f891440b          	ldd	s0,s1,(sp),0,4
    e8898cb0:	6942                	ld	s2,16(sp)
    e8898cb2:	6105                	addi	sp,sp,32
    e8898cb4:	8082                	ret

00000000e8898cb6 <lwip_netconn_do_writemore>:
 * @return ERR_OK
 *         ERR_MEM if LWIP_TCPIP_CORE_LOCKING=1 and sending hasn't yet finished
 */
static err_t
lwip_netconn_do_writemore(struct netconn *conn  WRITE_DELAYED_PARAM)
{
    e8898cb6:	7119                	addi	sp,sp,-128
    e8898cb8:	f8a2                	sd	s0,112(sp)
    e8898cba:	fc86                	sd	ra,120(sp)
    e8898cbc:	f4a6                	sd	s1,104(sp)
    e8898cbe:	f0ca                	sd	s2,96(sp)
    e8898cc0:	ecce                	sd	s3,88(sp)
    e8898cc2:	e8d2                	sd	s4,80(sp)
    e8898cc4:	e4d6                	sd	s5,72(sp)
    e8898cc6:	e0da                	sd	s6,64(sp)
    e8898cc8:	fc5e                	sd	s7,56(sp)
    e8898cca:	f862                	sd	s8,48(sp)
    e8898ccc:	f466                	sd	s9,40(sp)
    e8898cce:	f06a                	sd	s10,32(sp)
    e8898cd0:	ec6e                	sd	s11,24(sp)
    e8898cd2:	e02e                	sd	a1,0(sp)
    e8898cd4:	842a                	mv	s0,a0
  size_t diff;
  u8_t dontblock;
  u8_t apiflags;
  u8_t write_more;

  LWIP_ASSERT("conn != NULL", conn != NULL);
    e8898cd6:	e51d                	bnez	a0,e8898d04 <lwip_netconn_do_writemore+0x4e>
    e8898cd8:	02f00593          	li	a1,47
    e8898cdc:	0003a517          	auipc	a0,0x3a
    e8898ce0:	77c50513          	addi	a0,a0,1916 # e88d3458 <netconn_reset+0x84>
    e8898ce4:	e94e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898ce8:	00150693          	addi	a3,a0,1
    e8898cec:	67300613          	li	a2,1651
    e8898cf0:	0003a597          	auipc	a1,0x3a
    e8898cf4:	4e858593          	addi	a1,a1,1256 # e88d31d8 <CSWTCH.34+0x288>
    e8898cf8:	00036517          	auipc	a0,0x36
    e8898cfc:	3b850513          	addi	a0,a0,952 # e88cf0b0 <kSinTable1024+0x900>
    e8898d00:	dc6e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("conn->state == NETCONN_WRITE", (conn->state == NETCONN_WRITE));
    e8898d04:	00144703          	lbu	a4,1(s0)
    e8898d08:	4785                	li	a5,1
    e8898d0a:	02f70863          	beq	a4,a5,e8898d3a <lwip_netconn_do_writemore+0x84>
    e8898d0e:	02f00593          	li	a1,47
    e8898d12:	0003a517          	auipc	a0,0x3a
    e8898d16:	74650513          	addi	a0,a0,1862 # e88d3458 <netconn_reset+0x84>
    e8898d1a:	e5ee30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898d1e:	00150693          	addi	a3,a0,1
    e8898d22:	67400613          	li	a2,1652
    e8898d26:	0003a597          	auipc	a1,0x3a
    e8898d2a:	4c258593          	addi	a1,a1,1218 # e88d31e8 <CSWTCH.34+0x298>
    e8898d2e:	00036517          	auipc	a0,0x36
    e8898d32:	38250513          	addi	a0,a0,898 # e88cf0b0 <kSinTable1024+0x900>
    e8898d36:	d90e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("conn->current_msg != NULL", conn->current_msg != NULL);
    e8898d3a:	643c                	ld	a5,72(s0)
    e8898d3c:	e79d                	bnez	a5,e8898d6a <lwip_netconn_do_writemore+0xb4>
    e8898d3e:	02f00593          	li	a1,47
    e8898d42:	0003a517          	auipc	a0,0x3a
    e8898d46:	71650513          	addi	a0,a0,1814 # e88d3458 <netconn_reset+0x84>
    e8898d4a:	e2ee30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898d4e:	00150693          	addi	a3,a0,1
    e8898d52:	67500613          	li	a2,1653
    e8898d56:	0003a597          	auipc	a1,0x3a
    e8898d5a:	4b258593          	addi	a1,a1,1202 # e88d3208 <CSWTCH.34+0x2b8>
    e8898d5e:	00036517          	auipc	a0,0x36
    e8898d62:	35250513          	addi	a0,a0,850 # e88cf0b0 <kSinTable1024+0x900>
    e8898d66:	d60e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("conn->pcb.tcp != NULL", conn->pcb.tcp != NULL);
    e8898d6a:	641c                	ld	a5,8(s0)
    e8898d6c:	e79d                	bnez	a5,e8898d9a <lwip_netconn_do_writemore+0xe4>
    e8898d6e:	02f00593          	li	a1,47
    e8898d72:	0003a517          	auipc	a0,0x3a
    e8898d76:	6e650513          	addi	a0,a0,1766 # e88d3458 <netconn_reset+0x84>
    e8898d7a:	dfee30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898d7e:	00150693          	addi	a3,a0,1
    e8898d82:	67600613          	li	a2,1654
    e8898d86:	0003a597          	auipc	a1,0x3a
    e8898d8a:	4a258593          	addi	a1,a1,1186 # e88d3228 <CSWTCH.34+0x2d8>
    e8898d8e:	00036517          	auipc	a0,0x36
    e8898d92:	32250513          	addi	a0,a0,802 # e88cf0b0 <kSinTable1024+0x900>
    e8898d96:	d30e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len",
    e8898d9a:	643c                	ld	a5,72(s0)
    e8898d9c:	7b98                	ld	a4,48(a5)
    e8898d9e:	779c                	ld	a5,40(a5)
    e8898da0:	02f76863          	bltu	a4,a5,e8898dd0 <lwip_netconn_do_writemore+0x11a>
    e8898da4:	02f00593          	li	a1,47
    e8898da8:	0003a517          	auipc	a0,0x3a
    e8898dac:	6b050513          	addi	a0,a0,1712 # e88d3458 <netconn_reset+0x84>
    e8898db0:	dc8e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898db4:	00150693          	addi	a3,a0,1
    e8898db8:	67800613          	li	a2,1656
    e8898dbc:	0003a597          	auipc	a1,0x3a
    e8898dc0:	48458593          	addi	a1,a1,1156 # e88d3240 <CSWTCH.34+0x2f0>
    e8898dc4:	00036517          	auipc	a0,0x36
    e8898dc8:	2ec50513          	addi	a0,a0,748 # e88cf0b0 <kSinTable1024+0x900>
    e8898dcc:	cfae30ef          	jal	ra,e887c2c6 <eLIBs_printf>
              conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len);
  LWIP_ASSERT("conn->current_msg->msg.w.vector_cnt > 0", conn->current_msg->msg.w.vector_cnt > 0);
    e8898dd0:	643c                	ld	a5,72(s0)
    e8898dd2:	0187d783          	lhu	a5,24(a5)
    e8898dd6:	e79d                	bnez	a5,e8898e04 <lwip_netconn_do_writemore+0x14e>
    e8898dd8:	02f00593          	li	a1,47
    e8898ddc:	0003a517          	auipc	a0,0x3a
    e8898de0:	67c50513          	addi	a0,a0,1660 # e88d3458 <netconn_reset+0x84>
    e8898de4:	d94e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898de8:	00150693          	addi	a3,a0,1
    e8898dec:	67900613          	li	a2,1657
    e8898df0:	0003a597          	auipc	a1,0x3a
    e8898df4:	49058593          	addi	a1,a1,1168 # e88d3280 <CSWTCH.34+0x330>
    e8898df8:	00036517          	auipc	a0,0x36
    e8898dfc:	2b850513          	addi	a0,a0,696 # e88cf0b0 <kSinTable1024+0x900>
    e8898e00:	cc6e30ef          	jal	ra,e887c2c6 <eLIBs_printf>

  apiflags = conn->current_msg->msg.w.apiflags;
    e8898e04:	643c                	ld	a5,72(s0)
    e8898e06:	04044983          	lbu	s3,64(s0)
#endif /* LWIP_SO_SNDTIMEO */
  {
    do {
      dataptr = (const u8_t *)conn->current_msg->msg.w.vector->ptr + conn->current_msg->msg.w.vector_off;
      diff = conn->current_msg->msg.w.vector->len - conn->current_msg->msg.w.vector_off;
      if (diff > 0xffffUL) { /* max_u16_t */
    e8898e0a:	6b41                	lui	s6,0x10
  apiflags = conn->current_msg->msg.w.apiflags;
    e8898e0c:	0387ca03          	lbu	s4,56(a5)
  dontblock = netconn_is_nonblocking(conn) || (apiflags & NETCONN_DONTBLOCK);
    e8898e10:	0029f993          	andi	s3,s3,2
        len = 0xffff;
    e8898e14:	fffb0a93          	addi	s5,s6,-1 # ffff <memcmp-0xe87f0001>
    e8898e18:	004a7793          	andi	a5,s4,4
    e8898e1c:	00f9e9b3          	or	s3,s3,a5
        apiflags |= TCP_WRITE_FLAG_MORE;
      } else {
        len = (u16_t)diff;
      }
      available = tcp_sndbuf(conn->pcb.tcp);
    e8898e20:	ffeb0b93          	addi	s7,s6,-2
          }
        } else {
          apiflags |= TCP_WRITE_FLAG_MORE;
        }
      }
      LWIP_ASSERT("lwip_netconn_do_writemore: invalid length!",
    e8898e24:	0003ac17          	auipc	s8,0x3a
    e8898e28:	634c0c13          	addi	s8,s8,1588 # e88d3458 <netconn_reset+0x84>
    e8898e2c:	0003ac97          	auipc	s9,0x3a
    e8898e30:	47cc8c93          	addi	s9,s9,1148 # e88d32a8 <CSWTCH.34+0x358>
    e8898e34:	00036d17          	auipc	s10,0x36
    e8898e38:	27cd0d13          	addi	s10,s10,636 # e88cf0b0 <kSinTable1024+0x900>
           1) We couldn't finish the current vector because of 16-bit size limitations.
              tcp_write() and tcp_sndbuf() both are limited to 16-bit sizes
           2) We are sending the remainder of the current vector and have more */
      if ((len == 0xffff && diff > 0xffffUL) ||
          (len == (u16_t)diff && conn->current_msg->msg.w.vector_cnt > 1)) {
        write_more = 1;
    e8898e3c:	4d85                	li	s11,1
      dataptr = (const u8_t *)conn->current_msg->msg.w.vector->ptr + conn->current_msg->msg.w.vector_off;
    e8898e3e:	6434                	ld	a3,72(s0)
    e8898e40:	6a9c                	ld	a5,16(a3)
    e8898e42:	7298                	ld	a4,32(a3)
      diff = conn->current_msg->msg.w.vector->len - conn->current_msg->msg.w.vector_off;
    e8898e44:	6790                	ld	a2,8(a5)
      dataptr = (const u8_t *)conn->current_msg->msg.w.vector->ptr + conn->current_msg->msg.w.vector_off;
    e8898e46:	0007b883          	ld	a7,0(a5)
      diff = conn->current_msg->msg.w.vector->len - conn->current_msg->msg.w.vector_off;
    e8898e4a:	40e604b3          	sub	s1,a2,a4
      dataptr = (const u8_t *)conn->current_msg->msg.w.vector->ptr + conn->current_msg->msg.w.vector_off;
    e8898e4e:	98ba                	add	a7,a7,a4
      if (diff > 0xffffUL) { /* max_u16_t */
    e8898e50:	0964e763          	bltu	s1,s6,e8898ede <lwip_netconn_do_writemore+0x228>
        apiflags |= TCP_WRITE_FLAG_MORE;
    e8898e54:	002a6a13          	ori	s4,s4,2
        len = 0xffff;
    e8898e58:	8956                	mv	s2,s5
      available = tcp_sndbuf(conn->pcb.tcp);
    e8898e5a:	641c                	ld	a5,8(s0)
    e8898e5c:	0a47a783          	lw	a5,164(a5)
    e8898e60:	08fbe563          	bltu	s7,a5,e8898eea <lwip_netconn_do_writemore+0x234>
    e8898e64:	3c07b78b          	extu	a5,a5,15,0
      if (available < len) {
    e8898e68:	0927f163          	bgeu	a5,s2,e8898eea <lwip_netconn_do_writemore+0x234>
        if (dontblock) {
    e8898e6c:	06098c63          	beqz	s3,e8898ee4 <lwip_netconn_do_writemore+0x22e>
          if (!len) {
    e8898e70:	efa5                	bnez	a5,e8898ee8 <lwip_netconn_do_writemore+0x232>
            err = (conn->current_msg->msg.w.offset == 0) ? ERR_WOULDBLOCK : ERR_OK;
    e8898e72:	7a9c                	ld	a5,48(a3)
    e8898e74:	54e5                	li	s1,-7
    e8898e76:	c391                	beqz	a5,e8898e7a <lwip_netconn_do_writemore+0x1c4>
    e8898e78:	4481                	li	s1,0
      }
    } while (write_more && err == ERR_OK);
    /* if OK or memory error, check available space */
    if ((err == ERR_OK) || (err == ERR_MEM)) {
err_mem:
      if (dontblock && (conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len)) {
    e8898e7a:	643c                	ld	a5,72(s0)
    e8898e7c:	7b98                	ld	a4,48(a5)
    e8898e7e:	779c                	ld	a5,40(a5)
    e8898e80:	10f77e63          	bgeu	a4,a5,e8898f9c <lwip_netconn_do_writemore+0x2e6>
        /* non-blocking write did not write everything: mark the pcb non-writable
           and let poll_tcp check writable space to mark the pcb writable again */
        API_EVENT(conn, NETCONN_EVT_SENDMINUS, 0);
    e8898e84:	683c                	ld	a5,80(s0)
    e8898e86:	c789                	beqz	a5,e8898e90 <lwip_netconn_do_writemore+0x1da>
    e8898e88:	4601                	li	a2,0
    e8898e8a:	458d                	li	a1,3
    e8898e8c:	8522                	mv	a0,s0
    e8898e8e:	9782                	jalr	a5
        conn->flags |= NETCONN_FLAG_CHECK_WRITESPACE;
    e8898e90:	04044783          	lbu	a5,64(s0)
    e8898e94:	0107e793          	ori	a5,a5,16
    e8898e98:	04f40023          	sb	a5,64(s0)
           let select mark this pcb as non-writable. */
        API_EVENT(conn, NETCONN_EVT_SENDMINUS, 0);
      }
    }

    if (err == ERR_OK) {
    e8898e9c:	12049563          	bnez	s1,e8898fc6 <lwip_netconn_do_writemore+0x310>
      err_t out_err;
      if ((conn->current_msg->msg.w.offset == conn->current_msg->msg.w.len) || dontblock) {
    e8898ea0:	643c                	ld	a5,72(s0)
        /* return sent length (caller reads length from msg.w.offset) */
        write_finished = 1;
    e8898ea2:	4485                	li	s1,1
      if ((conn->current_msg->msg.w.offset == conn->current_msg->msg.w.len) || dontblock) {
    e8898ea4:	7b98                	ld	a4,48(a5)
    e8898ea6:	779c                	ld	a5,40(a5)
    e8898ea8:	00f70463          	beq	a4,a5,e8898eb0 <lwip_netconn_do_writemore+0x1fa>
        write_finished = 1;
    e8898eac:	013034b3          	snez	s1,s3
      }
      out_err = tcp_output(conn->pcb.tcp);
    e8898eb0:	6408                	ld	a0,8(s0)
    e8898eb2:	d5ffc0ef          	jal	ra,e8895c10 <tcp_output>
      if (out_err == ERR_RTE) {
    e8898eb6:	57f1                	li	a5,-4
    e8898eb8:	14f51a63          	bne	a0,a5,e889900c <lwip_netconn_do_writemore+0x356>
        /* If tcp_output fails because no route is found,
           don't try writing any more but return the error
           to the application thread. */
        err = out_err;
    e8898ebc:	54f1                	li	s1,-4
    }
  }
  if (write_finished) {
    /* everything was written: set back connection state
       and back to application task */
    sys_sem_t *op_completed_sem = LWIP_API_MSG_SEM(conn->current_msg);
    e8898ebe:	643c                	ld	a5,72(s0)
    conn->current_msg->err = err;
    e8898ec0:	00978423          	sb	s1,8(a5)
    sys_sem_t *op_completed_sem = LWIP_API_MSG_SEM(conn->current_msg);
    e8898ec4:	6388                	ld	a0,0(a5)
    conn->current_msg = NULL;
    conn->state = NETCONN_NONE;
#if LWIP_TCPIP_CORE_LOCKING
    if (delayed)
    e8898ec6:	6782                	ld	a5,0(sp)
    conn->current_msg = NULL;
    e8898ec8:	04043423          	sd	zero,72(s0)
    conn->state = NETCONN_NONE;
    e8898ecc:	000400a3          	sb	zero,1(s0)
#if LWIP_TCPIP_CORE_LOCKING
  else {
    return ERR_MEM;
  }
#endif
  return ERR_OK;
    e8898ed0:	4401                	li	s0,0
    if (delayed)
    e8898ed2:	10078663          	beqz	a5,e8898fde <lwip_netconn_do_writemore+0x328>
      sys_sem_signal(op_completed_sem);
    e8898ed6:	0561                	addi	a0,a0,24
    e8898ed8:	caffe0ef          	jal	ra,e8897b86 <sys_sem_signal>
    e8898edc:	a209                	j	e8898fde <lwip_netconn_do_writemore+0x328>
        len = (u16_t)diff;
    e8898ede:	3c04b90b          	extu	s2,s1,15,0
    e8898ee2:	bfa5                	j	e8898e5a <lwip_netconn_do_writemore+0x1a4>
          apiflags |= TCP_WRITE_FLAG_MORE;
    e8898ee4:	002a6a13          	ori	s4,s4,2
    e8898ee8:	893e                	mv	s2,a5
      LWIP_ASSERT("lwip_netconn_do_writemore: invalid length!",
    e8898eea:	974a                	add	a4,a4,s2
    e8898eec:	02e67163          	bgeu	a2,a4,e8898f0e <lwip_netconn_do_writemore+0x258>
    e8898ef0:	02f00593          	li	a1,47
    e8898ef4:	8562                	mv	a0,s8
    e8898ef6:	e446                	sd	a7,8(sp)
    e8898ef8:	c80e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8898efc:	00150693          	addi	a3,a0,1
    e8898f00:	6a400613          	li	a2,1700
    e8898f04:	85e6                	mv	a1,s9
    e8898f06:	856a                	mv	a0,s10
    e8898f08:	bbee30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8898f0c:	68a2                	ld	a7,8(sp)
      if ((len == 0xffff && diff > 0xffffUL) ||
    e8898f0e:	0009079b          	sext.w	a5,s2
    e8898f12:	01579463          	bne	a5,s5,e8898f1a <lwip_netconn_do_writemore+0x264>
    e8898f16:	0164fc63          	bgeu	s1,s6,e8898f2e <lwip_netconn_do_writemore+0x278>
    e8898f1a:	3c04b48b          	extu	s1,s1,15,0
        write_more = 0;
    e8898f1e:	4701                	li	a4,0
      if ((len == 0xffff && diff > 0xffffUL) ||
    e8898f20:	00f49a63          	bne	s1,a5,e8898f34 <lwip_netconn_do_writemore+0x27e>
          (len == (u16_t)diff && conn->current_msg->msg.w.vector_cnt > 1)) {
    e8898f24:	643c                	ld	a5,72(s0)
    e8898f26:	0187d783          	lhu	a5,24(a5)
    e8898f2a:	00fdf563          	bgeu	s11,a5,e8898f34 <lwip_netconn_do_writemore+0x27e>
        apiflags |= TCP_WRITE_FLAG_MORE;
    e8898f2e:	002a6a13          	ori	s4,s4,2
        write_more = 1;
    e8898f32:	4705                	li	a4,1
      err = tcp_write(conn->pcb.tcp, dataptr, len, apiflags);
    e8898f34:	6408                	ld	a0,8(s0)
    e8898f36:	86d2                	mv	a3,s4
    e8898f38:	864a                	mv	a2,s2
    e8898f3a:	85c6                	mv	a1,a7
    e8898f3c:	e43a                	sd	a4,8(sp)
    e8898f3e:	df1fb0ef          	jal	ra,e8894d2e <tcp_write>
    e8898f42:	84aa                	mv	s1,a0
      if (err == ERR_OK) {
    e8898f44:	e139                	bnez	a0,e8898f8a <lwip_netconn_do_writemore+0x2d4>
        conn->current_msg->msg.w.offset += len;
    e8898f46:	6434                	ld	a3,72(s0)
        if (conn->current_msg->msg.w.vector_off == conn->current_msg->msg.w.vector->len) {
    e8898f48:	6722                	ld	a4,8(sp)
        conn->current_msg->msg.w.offset += len;
    e8898f4a:	7a9c                	ld	a5,48(a3)
    e8898f4c:	97ca                	add	a5,a5,s2
    e8898f4e:	fa9c                	sd	a5,48(a3)
        conn->current_msg->msg.w.vector_off += len;
    e8898f50:	6434                	ld	a3,72(s0)
    e8898f52:	729c                	ld	a5,32(a3)
    e8898f54:	993e                	add	s2,s2,a5
    e8898f56:	0326b023          	sd	s2,32(a3)
        if (conn->current_msg->msg.w.vector_off == conn->current_msg->msg.w.vector->len) {
    e8898f5a:	643c                	ld	a5,72(s0)
    e8898f5c:	6b94                	ld	a3,16(a5)
    e8898f5e:	7390                	ld	a2,32(a5)
    e8898f60:	6694                	ld	a3,8(a3)
    e8898f62:	02d61163          	bne	a2,a3,e8898f84 <lwip_netconn_do_writemore+0x2ce>
          conn->current_msg->msg.w.vector_cnt--;
    e8898f66:	0187d683          	lhu	a3,24(a5)
    e8898f6a:	36fd                	addiw	a3,a3,-1
    e8898f6c:	00d79c23          	sh	a3,24(a5)
          if (conn->current_msg->msg.w.vector_cnt > 0) {
    e8898f70:	643c                	ld	a5,72(s0)
    e8898f72:	0187d683          	lhu	a3,24(a5)
    e8898f76:	c699                	beqz	a3,e8898f84 <lwip_netconn_do_writemore+0x2ce>
            conn->current_msg->msg.w.vector++;
    e8898f78:	6b94                	ld	a3,16(a5)
    e8898f7a:	06c1                	addi	a3,a3,16
    e8898f7c:	eb94                	sd	a3,16(a5)
            conn->current_msg->msg.w.vector_off = 0;
    e8898f7e:	643c                	ld	a5,72(s0)
    e8898f80:	0207b023          	sd	zero,32(a5)
    } while (write_more && err == ERR_OK);
    e8898f84:	ea071de3          	bnez	a4,e8898e3e <lwip_netconn_do_writemore+0x188>
    e8898f88:	a801                	j	e8898f98 <lwip_netconn_do_writemore+0x2e2>
    if ((err == ERR_OK) || (err == ERR_MEM)) {
    e8898f8a:	0015079b          	addiw	a5,a0,1
    e8898f8e:	0ff7f793          	andi	a5,a5,255
    e8898f92:	4705                	li	a4,1
    e8898f94:	02f76963          	bltu	a4,a5,e8898fc6 <lwip_netconn_do_writemore+0x310>
      if (dontblock && (conn->current_msg->msg.w.offset < conn->current_msg->msg.w.len)) {
    e8898f98:	ee0991e3          	bnez	s3,e8898e7a <lwip_netconn_do_writemore+0x1c4>
      } else if ((tcp_sndbuf(conn->pcb.tcp) <= TCP_SNDLOWAT) ||
    e8898f9c:	6418                	ld	a4,8(s0)
    e8898f9e:	6785                	lui	a5,0x1
    e8898fa0:	68078793          	addi	a5,a5,1664 # 1680 <memcmp-0xe87fe980>
    e8898fa4:	0a472683          	lw	a3,164(a4)
    e8898fa8:	00d7f763          	bgeu	a5,a3,e8898fb6 <lwip_netconn_do_writemore+0x300>
    e8898fac:	0a875703          	lhu	a4,168(a4)
    e8898fb0:	47fd                	li	a5,31
    e8898fb2:	eee7f5e3          	bgeu	a5,a4,e8898e9c <lwip_netconn_do_writemore+0x1e6>
        API_EVENT(conn, NETCONN_EVT_SENDMINUS, 0);
    e8898fb6:	683c                	ld	a5,80(s0)
    e8898fb8:	ee0782e3          	beqz	a5,e8898e9c <lwip_netconn_do_writemore+0x1e6>
    e8898fbc:	4601                	li	a2,0
    e8898fbe:	458d                	li	a1,3
    e8898fc0:	8522                	mv	a0,s0
    e8898fc2:	9782                	jalr	a5
    e8898fc4:	bde1                	j	e8898e9c <lwip_netconn_do_writemore+0x1e6>
    } else if (err == ERR_MEM) {
    e8898fc6:	57fd                	li	a5,-1
    e8898fc8:	eef49be3          	bne	s1,a5,e8898ebe <lwip_netconn_do_writemore+0x208>
      err_t out_err = tcp_output(conn->pcb.tcp);
    e8898fcc:	6408                	ld	a0,8(s0)
    e8898fce:	c43fc0ef          	jal	ra,e8895c10 <tcp_output>
      if (out_err == ERR_RTE) {
    e8898fd2:	57f1                	li	a5,-4
    e8898fd4:	eef504e3          	beq	a0,a5,e8898ebc <lwip_netconn_do_writemore+0x206>
      } else if (dontblock) {
    e8898fd8:	02099363          	bnez	s3,e8898ffe <lwip_netconn_do_writemore+0x348>
    return ERR_MEM;
    e8898fdc:	547d                	li	s0,-1
}
    e8898fde:	8522                	mv	a0,s0
    e8898fe0:	70e6                	ld	ra,120(sp)
    e8898fe2:	7446                	ld	s0,112(sp)
    e8898fe4:	74a6                	ld	s1,104(sp)
    e8898fe6:	7906                	ld	s2,96(sp)
    e8898fe8:	69e6                	ld	s3,88(sp)
    e8898fea:	6a46                	ld	s4,80(sp)
    e8898fec:	6aa6                	ld	s5,72(sp)
    e8898fee:	6b06                	ld	s6,64(sp)
    e8898ff0:	7be2                	ld	s7,56(sp)
    e8898ff2:	7c42                	ld	s8,48(sp)
    e8898ff4:	7ca2                	ld	s9,40(sp)
    e8898ff6:	7d02                	ld	s10,32(sp)
    e8898ff8:	6de2                	ld	s11,24(sp)
    e8898ffa:	6109                	addi	sp,sp,128
    e8898ffc:	8082                	ret
        err = (conn->current_msg->msg.w.offset == 0) ? ERR_WOULDBLOCK : ERR_OK;
    e8898ffe:	643c                	ld	a5,72(s0)
    e8899000:	54e5                	li	s1,-7
    e8899002:	7b9c                	ld	a5,48(a5)
    e8899004:	ea078de3          	beqz	a5,e8898ebe <lwip_netconn_do_writemore+0x208>
    e8899008:	4481                	li	s1,0
    e889900a:	bd55                	j	e8898ebe <lwip_netconn_do_writemore+0x208>
  if (write_finished) {
    e889900c:	fcf5                	bnez	s1,e8899008 <lwip_netconn_do_writemore+0x352>
    e889900e:	b7f9                	j	e8898fdc <lwip_netconn_do_writemore+0x326>

00000000e8899010 <lwip_netconn_do_close_internal>:
{
    e8899010:	7139                	addi	sp,sp,-64
    e8899012:	f85a                	sd	s6,48(sp)
    e8899014:	f891540b          	sdd	s0,s1,(sp),0,4
    e8899018:	fc06                	sd	ra,56(sp)
    e889901a:	fb31590b          	sdd	s2,s3,(sp),1,4
    e889901e:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e8899022:	842a                	mv	s0,a0
    e8899024:	8b2e                	mv	s6,a1
  LWIP_ASSERT("invalid conn", (conn != NULL));
    e8899026:	e51d                	bnez	a0,e8899054 <lwip_netconn_do_close_internal+0x44>
    e8899028:	02f00593          	li	a1,47
    e889902c:	0003a517          	auipc	a0,0x3a
    e8899030:	42c50513          	addi	a0,a0,1068 # e88d3458 <netconn_reset+0x84>
    e8899034:	b44e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899038:	00150693          	addi	a3,a0,1
    e889903c:	3a200613          	li	a2,930
    e8899040:	0003a597          	auipc	a1,0x3a
    e8899044:	cc858593          	addi	a1,a1,-824 # e88d2d08 <ethzero+0x1c8>
    e8899048:	00036517          	auipc	a0,0x36
    e889904c:	06850513          	addi	a0,a0,104 # e88cf0b0 <kSinTable1024+0x900>
    e8899050:	a76e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("this is for tcp netconns only", (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP));
    e8899054:	00044783          	lbu	a5,0(s0)
    e8899058:	4741                	li	a4,16
    e889905a:	0f07f793          	andi	a5,a5,240
    e889905e:	02e78863          	beq	a5,a4,e889908e <lwip_netconn_do_close_internal+0x7e>
    e8899062:	02f00593          	li	a1,47
    e8899066:	0003a517          	auipc	a0,0x3a
    e889906a:	3f250513          	addi	a0,a0,1010 # e88d3458 <netconn_reset+0x84>
    e889906e:	b0ae30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899072:	00150693          	addi	a3,a0,1
    e8899076:	3a300613          	li	a2,931
    e889907a:	0003a597          	auipc	a1,0x3a
    e889907e:	f8e58593          	addi	a1,a1,-114 # e88d3008 <CSWTCH.34+0xb8>
    e8899082:	00036517          	auipc	a0,0x36
    e8899086:	02e50513          	addi	a0,a0,46 # e88cf0b0 <kSinTable1024+0x900>
    e889908a:	a3ce30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("conn must be in state NETCONN_CLOSE", (conn->state == NETCONN_CLOSE));
    e889908e:	00144703          	lbu	a4,1(s0)
    e8899092:	4791                	li	a5,4
    e8899094:	02f70863          	beq	a4,a5,e88990c4 <lwip_netconn_do_close_internal+0xb4>
    e8899098:	02f00593          	li	a1,47
    e889909c:	0003a517          	auipc	a0,0x3a
    e88990a0:	3bc50513          	addi	a0,a0,956 # e88d3458 <netconn_reset+0x84>
    e88990a4:	ad4e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88990a8:	00150693          	addi	a3,a0,1
    e88990ac:	3a400613          	li	a2,932
    e88990b0:	0003a597          	auipc	a1,0x3a
    e88990b4:	f7858593          	addi	a1,a1,-136 # e88d3028 <CSWTCH.34+0xd8>
    e88990b8:	00036517          	auipc	a0,0x36
    e88990bc:	ff850513          	addi	a0,a0,-8 # e88cf0b0 <kSinTable1024+0x900>
    e88990c0:	a06e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("pcb already closed", (conn->pcb.tcp != NULL));
    e88990c4:	641c                	ld	a5,8(s0)
    e88990c6:	e79d                	bnez	a5,e88990f4 <lwip_netconn_do_close_internal+0xe4>
    e88990c8:	02f00593          	li	a1,47
    e88990cc:	0003a517          	auipc	a0,0x3a
    e88990d0:	38c50513          	addi	a0,a0,908 # e88d3458 <netconn_reset+0x84>
    e88990d4:	aa4e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88990d8:	00150693          	addi	a3,a0,1
    e88990dc:	3a500613          	li	a2,933
    e88990e0:	0003a597          	auipc	a1,0x3a
    e88990e4:	f7058593          	addi	a1,a1,-144 # e88d3050 <CSWTCH.34+0x100>
    e88990e8:	00036517          	auipc	a0,0x36
    e88990ec:	fc850513          	addi	a0,a0,-56 # e88cf0b0 <kSinTable1024+0x900>
    e88990f0:	9d6e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("conn->current_msg != NULL", conn->current_msg != NULL);
    e88990f4:	643c                	ld	a5,72(s0)
    e88990f6:	e79d                	bnez	a5,e8899124 <lwip_netconn_do_close_internal+0x114>
    e88990f8:	02f00593          	li	a1,47
    e88990fc:	0003a517          	auipc	a0,0x3a
    e8899100:	35c50513          	addi	a0,a0,860 # e88d3458 <netconn_reset+0x84>
    e8899104:	a74e30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899108:	00150693          	addi	a3,a0,1
    e889910c:	3a600613          	li	a2,934
    e8899110:	0003a597          	auipc	a1,0x3a
    e8899114:	0f858593          	addi	a1,a1,248 # e88d3208 <CSWTCH.34+0x2b8>
    e8899118:	00036517          	auipc	a0,0x36
    e889911c:	f9850513          	addi	a0,a0,-104 # e88cf0b0 <kSinTable1024+0x900>
    e8899120:	9a6e30ef          	jal	ra,e887c2c6 <eLIBs_printf>
  shut = conn->current_msg->msg.sd.shut;
    e8899124:	643c                	ld	a5,72(s0)
  if (shut == NETCONN_SHUT_RDWR) {
    e8899126:	470d                	li	a4,3
  tpcb = conn->pcb.tcp;
    e8899128:	6404                	ld	s1,8(s0)
  shut = conn->current_msg->msg.sd.shut;
    e889912a:	0107c783          	lbu	a5,16(a5)
  shut_rx = shut & NETCONN_SHUT_RD;
    e889912e:	0017fa93          	andi	s5,a5,1
  shut_tx = shut & NETCONN_SHUT_WR;
    e8899132:	0027f993          	andi	s3,a5,2
  if (shut == NETCONN_SHUT_RDWR) {
    e8899136:	02e78763          	beq	a5,a4,e8899164 <lwip_netconn_do_close_internal+0x154>
  } else if (shut_rx &&
    e889913a:	000a8e63          	beqz	s5,e8899156 <lwip_netconn_do_close_internal+0x146>
             ((tpcb->state == FIN_WAIT_1) ||
    e889913e:	0484c703          	lbu	a4,72(s1)
  } else if (shut_rx &&
    e8899142:	4685                	li	a3,1
             ((tpcb->state == FIN_WAIT_1) ||
    e8899144:	ffb7079b          	addiw	a5,a4,-5
  } else if (shut_rx &&
    e8899148:	0ff7f793          	andi	a5,a5,255
    e889914c:	00f6fc63          	bgeu	a3,a5,e8899164 <lwip_netconn_do_close_internal+0x154>
              (tpcb->state == FIN_WAIT_2) ||
    e8899150:	47a1                	li	a5,8
    e8899152:	00f70963          	beq	a4,a5,e8899164 <lwip_netconn_do_close_internal+0x154>
    shut_close = 0;
    e8899156:	4a01                	li	s4,0
  } else if (shut_tx && ((tpcb->flags & TF_RXCLOSED) != 0)) {
    e8899158:	00098b63          	beqz	s3,e889916e <lwip_netconn_do_close_internal+0x15e>
    e889915c:	04e4d783          	lhu	a5,78(s1)
    e8899160:	8bc1                	andi	a5,a5,16
    e8899162:	c791                	beqz	a5,e889916e <lwip_netconn_do_close_internal+0x15e>
    tcp_arg(tpcb, NULL);
    e8899164:	4581                	li	a1,0
    e8899166:	8526                	mv	a0,s1
    e8899168:	c67f70ef          	jal	ra,e8890dce <tcp_arg>
    e889916c:	4a05                	li	s4,1
  if (tpcb->state == LISTEN) {
    e889916e:	0484c703          	lbu	a4,72(s1)
    e8899172:	4785                	li	a5,1
    e8899174:	00f71e63          	bne	a4,a5,e8899190 <lwip_netconn_do_close_internal+0x180>
    tcp_accept(tpcb, NULL);
    e8899178:	4581                	li	a1,0
    e889917a:	8526                	mv	a0,s1
    e889917c:	d51f70ef          	jal	ra,e8890ecc <tcp_accept>
  if (shut_close) {
    e8899180:	040a1363          	bnez	s4,e88991c6 <lwip_netconn_do_close_internal+0x1b6>
    err = tcp_shutdown(tpcb, shut_rx, shut_tx);
    e8899184:	864e                	mv	a2,s3
    e8899186:	85d6                	mv	a1,s5
    e8899188:	8526                	mv	a0,s1
    e889918a:	eddf80ef          	jal	ra,e8892066 <tcp_shutdown>
    e889918e:	a83d                	j	e88991cc <lwip_netconn_do_close_internal+0x1bc>
    if (shut_rx) {
    e8899190:	000a8a63          	beqz	s5,e88991a4 <lwip_netconn_do_close_internal+0x194>
      tcp_recv(tpcb, NULL);
    e8899194:	4581                	li	a1,0
    e8899196:	8526                	mv	a0,s1
    e8899198:	c3df70ef          	jal	ra,e8890dd4 <tcp_recv>
      tcp_accept(tpcb, NULL);
    e889919c:	4581                	li	a1,0
    e889919e:	8526                	mv	a0,s1
    e88991a0:	d2df70ef          	jal	ra,e8890ecc <tcp_accept>
    if (shut_tx) {
    e88991a4:	00098663          	beqz	s3,e88991b0 <lwip_netconn_do_close_internal+0x1a0>
      tcp_sent(tpcb, NULL);
    e88991a8:	4581                	li	a1,0
    e88991aa:	8526                	mv	a0,s1
    e88991ac:	c7bf70ef          	jal	ra,e8890e26 <tcp_sent>
    if (shut_close) {
    e88991b0:	fc0a0ae3          	beqz	s4,e8899184 <lwip_netconn_do_close_internal+0x174>
      tcp_poll(tpcb, NULL, 0);
    e88991b4:	4581                	li	a1,0
    e88991b6:	8526                	mv	a0,s1
    e88991b8:	4601                	li	a2,0
    e88991ba:	d23f70ef          	jal	ra,e8890edc <tcp_poll>
      tcp_err(tpcb, NULL);
    e88991be:	4581                	li	a1,0
    e88991c0:	8526                	mv	a0,s1
    e88991c2:	cb7f70ef          	jal	ra,e8890e78 <tcp_err>
      err = tcp_close(tpcb);
    e88991c6:	8526                	mv	a0,s1
    e88991c8:	c67f80ef          	jal	ra,e8891e2e <tcp_close>
    err = tcp_shutdown(tpcb, shut_rx, shut_tx);
    e88991cc:	892a                	mv	s2,a0
  if (err == ERR_OK) {
    e88991ce:	cd11                	beqz	a0,e88991ea <lwip_netconn_do_close_internal+0x1da>
    if (err == ERR_MEM) {
    e88991d0:	57fd                	li	a5,-1
    e88991d2:	00f51c63          	bne	a0,a5,e88991ea <lwip_netconn_do_close_internal+0x1da>
      if (conn->current_msg->msg.sd.polls_left == 0) {
    e88991d6:	643c                	ld	a5,72(s0)
    e88991d8:	0117c783          	lbu	a5,17(a5)
    e88991dc:	efad                	bnez	a5,e8899256 <lwip_netconn_do_close_internal+0x246>
        if (shut_close) {
    e88991de:	000a0663          	beqz	s4,e88991ea <lwip_netconn_do_close_internal+0x1da>
          tcp_abort(tpcb);
    e88991e2:	8526                	mv	a0,s1
    e88991e4:	d9af80ef          	jal	ra,e889177e <tcp_abort>
          err = ERR_OK;
    e88991e8:	4901                	li	s2,0
    sys_sem_t *op_completed_sem = LWIP_API_MSG_SEM(conn->current_msg);
    e88991ea:	643c                	ld	a5,72(s0)
    conn->current_msg->err = err;
    e88991ec:	01278423          	sb	s2,8(a5)
    sys_sem_t *op_completed_sem = LWIP_API_MSG_SEM(conn->current_msg);
    e88991f0:	6384                	ld	s1,0(a5)
    conn->current_msg = NULL;
    e88991f2:	04043423          	sd	zero,72(s0)
    conn->state = NETCONN_NONE;
    e88991f6:	000400a3          	sb	zero,1(s0)
    if (err == ERR_OK) {
    e88991fa:	02091c63          	bnez	s2,e8899232 <lwip_netconn_do_close_internal+0x222>
      if (shut_close) {
    e88991fe:	000a0a63          	beqz	s4,e8899212 <lwip_netconn_do_close_internal+0x202>
        API_EVENT(conn, NETCONN_EVT_ERROR, 0);
    e8899202:	683c                	ld	a5,80(s0)
        conn->pcb.tcp = NULL;
    e8899204:	00043423          	sd	zero,8(s0)
        API_EVENT(conn, NETCONN_EVT_ERROR, 0);
    e8899208:	c789                	beqz	a5,e8899212 <lwip_netconn_do_close_internal+0x202>
    e889920a:	4601                	li	a2,0
    e889920c:	4591                	li	a1,4
    e889920e:	8522                	mv	a0,s0
    e8899210:	9782                	jalr	a5
      if (shut_rx) {
    e8899212:	000a8863          	beqz	s5,e8899222 <lwip_netconn_do_close_internal+0x212>
        API_EVENT(conn, NETCONN_EVT_RCVPLUS, 0);
    e8899216:	683c                	ld	a5,80(s0)
    e8899218:	c789                	beqz	a5,e8899222 <lwip_netconn_do_close_internal+0x212>
    e889921a:	4601                	li	a2,0
    e889921c:	4581                	li	a1,0
    e889921e:	8522                	mv	a0,s0
    e8899220:	9782                	jalr	a5
      if (shut_tx) {
    e8899222:	00098863          	beqz	s3,e8899232 <lwip_netconn_do_close_internal+0x222>
        API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0);
    e8899226:	683c                	ld	a5,80(s0)
    e8899228:	c789                	beqz	a5,e8899232 <lwip_netconn_do_close_internal+0x222>
    e889922a:	4601                	li	a2,0
    e889922c:	4589                	li	a1,2
    e889922e:	8522                	mv	a0,s0
    e8899230:	9782                	jalr	a5
    return ERR_OK;
    e8899232:	4901                	li	s2,0
    if (delayed)
    e8899234:	000b0663          	beqz	s6,e8899240 <lwip_netconn_do_close_internal+0x230>
      sys_sem_signal(op_completed_sem);
    e8899238:	01848513          	addi	a0,s1,24
    e889923c:	94bfe0ef          	jal	ra,e8897b86 <sys_sem_signal>
}
    e8899240:	70e2                	ld	ra,56(sp)
    e8899242:	f891440b          	ldd	s0,s1,(sp),0,4
    e8899246:	854a                	mv	a0,s2
    e8899248:	7b42                	ld	s6,48(sp)
    e889924a:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889924e:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e8899252:	6121                	addi	sp,sp,64
    e8899254:	8082                	ret
    LWIP_ASSERT("Closing a listen pcb may not fail!", (tpcb->state != LISTEN));
    e8899256:	0484c703          	lbu	a4,72(s1)
    e889925a:	4785                	li	a5,1
    e889925c:	02f71863          	bne	a4,a5,e889928c <lwip_netconn_do_close_internal+0x27c>
    e8899260:	02f00593          	li	a1,47
    e8899264:	0003a517          	auipc	a0,0x3a
    e8899268:	1f450513          	addi	a0,a0,500 # e88d3458 <netconn_reset+0x84>
    e889926c:	90ce30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899270:	00150693          	addi	a3,a0,1
    e8899274:	44100613          	li	a2,1089
    e8899278:	0003a597          	auipc	a1,0x3a
    e889927c:	df058593          	addi	a1,a1,-528 # e88d3068 <CSWTCH.34+0x118>
    e8899280:	00036517          	auipc	a0,0x36
    e8899284:	e3050513          	addi	a0,a0,-464 # e88cf0b0 <kSinTable1024+0x900>
    e8899288:	83ee30ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if (shut_tx) {
    e889928c:	00098963          	beqz	s3,e889929e <lwip_netconn_do_close_internal+0x28e>
      tcp_sent(tpcb, sent_tcp);
    e8899290:	00000597          	auipc	a1,0x0
    e8899294:	4f458593          	addi	a1,a1,1268 # e8899784 <sent_tcp>
    e8899298:	8526                	mv	a0,s1
    e889929a:	b8df70ef          	jal	ra,e8890e26 <tcp_sent>
    tcp_poll(tpcb, poll_tcp, 1);
    e889929e:	4605                	li	a2,1
    e88992a0:	8526                	mv	a0,s1
    e88992a2:	00000597          	auipc	a1,0x0
    e88992a6:	02458593          	addi	a1,a1,36 # e88992c6 <poll_tcp>
    e88992aa:	c33f70ef          	jal	ra,e8890edc <tcp_poll>
    tcp_err(tpcb, err_tcp);
    e88992ae:	8526                	mv	a0,s1
    e88992b0:	00000597          	auipc	a1,0x0
    e88992b4:	20858593          	addi	a1,a1,520 # e88994b8 <err_tcp>
    e88992b8:	bc1f70ef          	jal	ra,e8890e78 <tcp_err>
    tcp_arg(tpcb, conn);
    e88992bc:	85a2                	mv	a1,s0
    e88992be:	8526                	mv	a0,s1
    e88992c0:	b0ff70ef          	jal	ra,e8890dce <tcp_arg>
  return err;
    e88992c4:	bfb5                	j	e8899240 <lwip_netconn_do_close_internal+0x230>

00000000e88992c6 <poll_tcp>:
{
    e88992c6:	1141                	addi	sp,sp,-16
    e88992c8:	e022                	sd	s0,0(sp)
    e88992ca:	e406                	sd	ra,8(sp)
    e88992cc:	842a                	mv	s0,a0
  LWIP_ASSERT("conn != NULL", (conn != NULL));
    e88992ce:	e51d                	bnez	a0,e88992fc <poll_tcp+0x36>
    e88992d0:	02f00593          	li	a1,47
    e88992d4:	0003a517          	auipc	a0,0x3a
    e88992d8:	18450513          	addi	a0,a0,388 # e88d3458 <netconn_reset+0x84>
    e88992dc:	89ce30ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88992e0:	00150693          	addi	a3,a0,1
    e88992e4:	16a00613          	li	a2,362
    e88992e8:	0003a597          	auipc	a1,0x3a
    e88992ec:	ef058593          	addi	a1,a1,-272 # e88d31d8 <CSWTCH.34+0x288>
    e88992f0:	00036517          	auipc	a0,0x36
    e88992f4:	dc050513          	addi	a0,a0,-576 # e88cf0b0 <kSinTable1024+0x900>
    e88992f8:	fcfe20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (conn->state == NETCONN_WRITE) {
    e88992fc:	00144783          	lbu	a5,1(s0)
    e8899300:	4705                	li	a4,1
    e8899302:	04e79763          	bne	a5,a4,e8899350 <poll_tcp+0x8a>
    lwip_netconn_do_writemore(conn  WRITE_DELAYED);
    e8899306:	4585                	li	a1,1
    e8899308:	8522                	mv	a0,s0
    e889930a:	9adff0ef          	jal	ra,e8898cb6 <lwip_netconn_do_writemore>
  if (conn->flags & NETCONN_FLAG_CHECK_WRITESPACE) {
    e889930e:	04044783          	lbu	a5,64(s0)
    e8899312:	0107f713          	andi	a4,a5,16
    e8899316:	cb05                	beqz	a4,e8899346 <poll_tcp+0x80>
    if ((conn->pcb.tcp != NULL) && (tcp_sndbuf(conn->pcb.tcp) > TCP_SNDLOWAT) &&
    e8899318:	6418                	ld	a4,8(s0)
    e889931a:	c715                	beqz	a4,e8899346 <poll_tcp+0x80>
    e889931c:	0a472603          	lw	a2,164(a4)
    e8899320:	6685                	lui	a3,0x1
    e8899322:	68068693          	addi	a3,a3,1664 # 1680 <memcmp-0xe87fe980>
    e8899326:	02c6f063          	bgeu	a3,a2,e8899346 <poll_tcp+0x80>
    e889932a:	0a875683          	lhu	a3,168(a4)
    e889932e:	477d                	li	a4,31
    e8899330:	00d76b63          	bltu	a4,a3,e8899346 <poll_tcp+0x80>
      netconn_clear_flags(conn, NETCONN_FLAG_CHECK_WRITESPACE);
    e8899334:	9bbd                	andi	a5,a5,-17
    e8899336:	04f40023          	sb	a5,64(s0)
      API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0);
    e889933a:	683c                	ld	a5,80(s0)
    e889933c:	c789                	beqz	a5,e8899346 <poll_tcp+0x80>
    e889933e:	4601                	li	a2,0
    e8899340:	4589                	li	a1,2
    e8899342:	8522                	mv	a0,s0
    e8899344:	9782                	jalr	a5
}
    e8899346:	60a2                	ld	ra,8(sp)
    e8899348:	6402                	ld	s0,0(sp)
    e889934a:	4501                	li	a0,0
    e889934c:	0141                	addi	sp,sp,16
    e889934e:	8082                	ret
  } else if (conn->state == NETCONN_CLOSE) {
    e8899350:	4711                	li	a4,4
    e8899352:	fae79ee3          	bne	a5,a4,e889930e <poll_tcp+0x48>
    if (conn->current_msg && conn->current_msg->msg.sd.polls_left) {
    e8899356:	6438                	ld	a4,72(s0)
    e8899358:	c719                	beqz	a4,e8899366 <poll_tcp+0xa0>
    e889935a:	01174783          	lbu	a5,17(a4)
    e889935e:	c781                	beqz	a5,e8899366 <poll_tcp+0xa0>
      conn->current_msg->msg.sd.polls_left--;
    e8899360:	37fd                	addiw	a5,a5,-1
    e8899362:	00f708a3          	sb	a5,17(a4)
    lwip_netconn_do_close_internal(conn  WRITE_DELAYED);
    e8899366:	4585                	li	a1,1
    e8899368:	8522                	mv	a0,s0
    e889936a:	ca7ff0ef          	jal	ra,e8899010 <lwip_netconn_do_close_internal>
    e889936e:	b745                	j	e889930e <poll_tcp+0x48>

00000000e8899370 <recv_tcp>:
{
    e8899370:	7139                	addi	sp,sp,-64
    e8899372:	ec22                	sd	s0,24(sp)
    e8899374:	f026                	sd	s1,32(sp)
    e8899376:	f44a                	sd	s2,40(sp)
    e8899378:	f84e                	sd	s3,48(sp)
    e889937a:	fc06                	sd	ra,56(sp)
    e889937c:	842a                	mv	s0,a0
    e889937e:	892e                	mv	s2,a1
    e8899380:	84b2                	mv	s1,a2
    e8899382:	89b6                	mv	s3,a3
  LWIP_ASSERT("recv_tcp must have a pcb argument", pcb != NULL);
    e8899384:	e59d                	bnez	a1,e88993b2 <recv_tcp+0x42>
    e8899386:	02f00593          	li	a1,47
    e889938a:	0003a517          	auipc	a0,0x3a
    e889938e:	0ce50513          	addi	a0,a0,206 # e88d3458 <netconn_reset+0x84>
    e8899392:	fe7e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899396:	00150693          	addi	a3,a0,1
    e889939a:	12c00613          	li	a2,300
    e889939e:	0003a597          	auipc	a1,0x3a
    e88993a2:	03a58593          	addi	a1,a1,58 # e88d33d8 <netconn_reset+0x4>
    e88993a6:	00036517          	auipc	a0,0x36
    e88993aa:	d0a50513          	addi	a0,a0,-758 # e88cf0b0 <kSinTable1024+0x900>
    e88993ae:	f19e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("recv_tcp must have an argument", arg != NULL);
    e88993b2:	e841                	bnez	s0,e8899442 <recv_tcp+0xd2>
    e88993b4:	02f00593          	li	a1,47
    e88993b8:	0003a517          	auipc	a0,0x3a
    e88993bc:	0a050513          	addi	a0,a0,160 # e88d3458 <netconn_reset+0x84>
    e88993c0:	fb9e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88993c4:	00150693          	addi	a3,a0,1
    e88993c8:	12d00613          	li	a2,301
    e88993cc:	0003a597          	auipc	a1,0x3a
    e88993d0:	03458593          	addi	a1,a1,52 # e88d3400 <netconn_reset+0x2c>
    e88993d4:	00036517          	auipc	a0,0x36
    e88993d8:	cdc50513          	addi	a0,a0,-804 # e88cf0b0 <kSinTable1024+0x900>
    e88993dc:	eebe20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("err != ERR_OK unhandled", err == ERR_OK);
    e88993e0:	06099363          	bnez	s3,e8899446 <recv_tcp+0xd6>
    return ERR_VAL;
    e88993e4:	54e9                	li	s1,-6
}
    e88993e6:	70e2                	ld	ra,56(sp)
    e88993e8:	6462                	ld	s0,24(sp)
    e88993ea:	8526                	mv	a0,s1
    e88993ec:	7922                	ld	s2,40(sp)
    e88993ee:	7482                	ld	s1,32(sp)
    e88993f0:	79c2                	ld	s3,48(sp)
    e88993f2:	6121                	addi	sp,sp,64
    e88993f4:	8082                	ret
      tcp_recved(pcb, p->tot_len);
    e88993f6:	0104d583          	lhu	a1,16(s1)
    e88993fa:	854a                	mv	a0,s2
    e88993fc:	869f70ef          	jal	ra,e8890c64 <tcp_recved>
      pbuf_free(p);
    e8899400:	8526                	mv	a0,s1
    e8899402:	e4bf50ef          	jal	ra,e888f24c <pbuf_free>
    e8899406:	a07d                	j	e88994b4 <recv_tcp+0x144>
  if (p != NULL) {
    e8899408:	c48d                	beqz	s1,e8899432 <recv_tcp+0xc2>
    len = p->tot_len;
    e889940a:	0104d603          	lhu	a2,16(s1)
  if (sys_mbox_trypost(&conn->recvmbox, msg) != ERR_OK) {
    e889940e:	85a6                	mv	a1,s1
    e8899410:	02040513          	addi	a0,s0,32
    e8899414:	e432                	sd	a2,8(sp)
    e8899416:	8b1fe0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
    e889941a:	84aa                	mv	s1,a0
    e889941c:	e10d                	bnez	a0,e889943e <recv_tcp+0xce>
    SYS_ARCH_INC(conn->recv_avail, len);
    e889941e:	5c5c                	lw	a5,60(s0)
    e8899420:	6622                	ld	a2,8(sp)
    e8899422:	9fb1                	addw	a5,a5,a2
    e8899424:	dc5c                	sw	a5,60(s0)
    API_EVENT(conn, NETCONN_EVT_RCVPLUS, len);
    e8899426:	683c                	ld	a5,80(s0)
    e8899428:	c7d1                	beqz	a5,e88994b4 <recv_tcp+0x144>
    e889942a:	4581                	li	a1,0
    e889942c:	8522                	mv	a0,s0
    e889942e:	9782                	jalr	a5
    e8899430:	bf5d                	j	e88993e6 <recv_tcp+0x76>
    msg = LWIP_CONST_CAST(void *, &netconn_closed);
    e8899432:	0003a497          	auipc	s1,0x3a
    e8899436:	edc48493          	addi	s1,s1,-292 # e88d330e <netconn_closed>
    len = 0;
    e889943a:	4601                	li	a2,0
    e889943c:	bfc9                	j	e889940e <recv_tcp+0x9e>
    return ERR_MEM;
    e889943e:	54fd                	li	s1,-1
    e8899440:	b75d                	j	e88993e6 <recv_tcp+0x76>
  LWIP_ASSERT("err != ERR_OK unhandled", err == ERR_OK);
    e8899442:	02098963          	beqz	s3,e8899474 <recv_tcp+0x104>
    e8899446:	02f00593          	li	a1,47
    e889944a:	0003a517          	auipc	a0,0x3a
    e889944e:	00e50513          	addi	a0,a0,14 # e88d3458 <netconn_reset+0x84>
    e8899452:	f27e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899456:	00150693          	addi	a3,a0,1
    e889945a:	12e00613          	li	a2,302
    e889945e:	0003a597          	auipc	a1,0x3a
    e8899462:	fc258593          	addi	a1,a1,-62 # e88d3420 <netconn_reset+0x4c>
    e8899466:	00036517          	auipc	a0,0x36
    e889946a:	c4a50513          	addi	a0,a0,-950 # e88cf0b0 <kSinTable1024+0x900>
    e889946e:	e59e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (conn == NULL) {
    e8899472:	d82d                	beqz	s0,e88993e4 <recv_tcp+0x74>
  LWIP_ASSERT("recv_tcp: recv for wrong pcb!", conn->pcb.tcp == pcb);
    e8899474:	641c                	ld	a5,8(s0)
    e8899476:	03278863          	beq	a5,s2,e88994a6 <recv_tcp+0x136>
    e889947a:	02f00593          	li	a1,47
    e889947e:	0003a517          	auipc	a0,0x3a
    e8899482:	fda50513          	addi	a0,a0,-38 # e88d3458 <netconn_reset+0x84>
    e8899486:	ef3e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889948a:	00150693          	addi	a3,a0,1
    e889948e:	13500613          	li	a2,309
    e8899492:	0003a597          	auipc	a1,0x3a
    e8899496:	fa658593          	addi	a1,a1,-90 # e88d3438 <netconn_reset+0x64>
    e889949a:	00036517          	auipc	a0,0x36
    e889949e:	c1650513          	addi	a0,a0,-1002 # e88cf0b0 <kSinTable1024+0x900>
    e88994a2:	e25e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (!NETCONN_MBOX_VALID(conn, &conn->recvmbox)) {
    e88994a6:	701c                	ld	a5,32(s0)
    e88994a8:	c789                	beqz	a5,e88994b2 <recv_tcp+0x142>
    e88994aa:	04044783          	lbu	a5,64(s0)
    e88994ae:	8ba1                	andi	a5,a5,8
    e88994b0:	dfa1                	beqz	a5,e8899408 <recv_tcp+0x98>
    if (p != NULL) {
    e88994b2:	f0b1                	bnez	s1,e88993f6 <recv_tcp+0x86>
    return ERR_OK;
    e88994b4:	4481                	li	s1,0
    e88994b6:	bf05                	j	e88993e6 <recv_tcp+0x76>

00000000e88994b8 <err_tcp>:
{
    e88994b8:	7179                	addi	sp,sp,-48
    e88994ba:	e422                	sd	s0,8(sp)
    e88994bc:	e826                	sd	s1,16(sp)
    e88994be:	f406                	sd	ra,40(sp)
    e88994c0:	ec4a                	sd	s2,24(sp)
    e88994c2:	f04e                	sd	s3,32(sp)
    e88994c4:	842a                	mv	s0,a0
    e88994c6:	84ae                	mv	s1,a1
  LWIP_ASSERT("conn != NULL", (conn != NULL));
    e88994c8:	e51d                	bnez	a0,e88994f6 <err_tcp+0x3e>
    e88994ca:	02f00593          	li	a1,47
    e88994ce:	0003a517          	auipc	a0,0x3a
    e88994d2:	f8a50513          	addi	a0,a0,-118 # e88d3458 <netconn_reset+0x84>
    e88994d6:	ea3e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88994da:	00150693          	addi	a3,a0,1
    e88994de:	1b800613          	li	a2,440
    e88994e2:	0003a597          	auipc	a1,0x3a
    e88994e6:	cf658593          	addi	a1,a1,-778 # e88d31d8 <CSWTCH.34+0x288>
    e88994ea:	00036517          	auipc	a0,0x36
    e88994ee:	bc650513          	addi	a0,a0,-1082 # e88cf0b0 <kSinTable1024+0x900>
    e88994f2:	dd5e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  conn->flags |= NETCONN_FLAG_MBOXCLOSED;
    e88994f6:	04044783          	lbu	a5,64(s0)
  old_state = conn->state;
    e88994fa:	00144903          	lbu	s2,1(s0)
  conn->pcb.tcp = NULL;
    e88994fe:	00043423          	sd	zero,8(s0)
  conn->flags |= NETCONN_FLAG_MBOXCLOSED;
    e8899502:	0017e793          	ori	a5,a5,1
    e8899506:	04f40023          	sb	a5,64(s0)
  API_EVENT(conn, NETCONN_EVT_ERROR, 0);
    e889950a:	683c                	ld	a5,80(s0)
  conn->pending_err = err;
    e889950c:	00940823          	sb	s1,16(s0)
  conn->state = NETCONN_NONE;
    e8899510:	000400a3          	sb	zero,1(s0)
  API_EVENT(conn, NETCONN_EVT_ERROR, 0);
    e8899514:	c789                	beqz	a5,e889951e <err_tcp+0x66>
    e8899516:	4601                	li	a2,0
    e8899518:	4591                	li	a1,4
    e889951a:	8522                	mv	a0,s0
    e889951c:	9782                	jalr	a5
  API_EVENT(conn, NETCONN_EVT_RCVPLUS, 0);
    e889951e:	683c                	ld	a5,80(s0)
    e8899520:	c789                	beqz	a5,e889952a <err_tcp+0x72>
    e8899522:	4601                	li	a2,0
    e8899524:	4581                	li	a1,0
    e8899526:	8522                	mv	a0,s0
    e8899528:	9782                	jalr	a5
  API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0);
    e889952a:	683c                	ld	a5,80(s0)
    e889952c:	c789                	beqz	a5,e8899536 <err_tcp+0x7e>
    e889952e:	4601                	li	a2,0
    e8899530:	4589                	li	a1,2
    e8899532:	8522                	mv	a0,s0
    e8899534:	9782                	jalr	a5
  switch (err) {
    e8899536:	00f4879b          	addiw	a5,s1,15
    e889953a:	0ff7f793          	andi	a5,a5,255
    e889953e:	4709                	li	a4,2
    e8899540:	0ef76563          	bltu	a4,a5,e889962a <err_tcp+0x172>
    e8899544:	0003a717          	auipc	a4,0x3a
    e8899548:	a0c70713          	addi	a4,a4,-1524 # e88d2f50 <CSWTCH.34>
    e889954c:	66f7498b          	lrd	s3,a4,a5,3
  if (NETCONN_MBOX_VALID(conn, &conn->recvmbox)) {
    e8899550:	701c                	ld	a5,32(s0)
    e8899552:	cb91                	beqz	a5,e8899566 <err_tcp+0xae>
    e8899554:	04044783          	lbu	a5,64(s0)
    e8899558:	8ba1                	andi	a5,a5,8
    e889955a:	e791                	bnez	a5,e8899566 <err_tcp+0xae>
    sys_mbox_trypost(&conn->recvmbox, mbox_msg);
    e889955c:	85ce                	mv	a1,s3
    e889955e:	02040513          	addi	a0,s0,32
    e8899562:	f64fe0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
  if (NETCONN_MBOX_VALID(conn, &conn->acceptmbox)) {
    e8899566:	741c                	ld	a5,40(s0)
    e8899568:	cb91                	beqz	a5,e889957c <err_tcp+0xc4>
    e889956a:	04044783          	lbu	a5,64(s0)
    e889956e:	8ba1                	andi	a5,a5,8
    e8899570:	e791                	bnez	a5,e889957c <err_tcp+0xc4>
    sys_mbox_trypost(&conn->acceptmbox, mbox_msg);
    e8899572:	85ce                	mv	a1,s3
    e8899574:	02840513          	addi	a0,s0,40
    e8899578:	f4efe0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
  if ((old_state == NETCONN_WRITE) || (old_state == NETCONN_CLOSE) ||
    e889957c:	4705                	li	a4,1
    e889957e:	00e90863          	beq	s2,a4,e889958e <err_tcp+0xd6>
    e8899582:	ffd9079b          	addiw	a5,s2,-3
    e8899586:	0ff7f793          	andi	a5,a5,255
    e889958a:	0cf76c63          	bltu	a4,a5,e8899662 <err_tcp+0x1aa>
    int was_nonblocking_connect = IN_NONBLOCKING_CONNECT(conn);
    e889958e:	04044783          	lbu	a5,64(s0)
    SET_NONBLOCKING_CONNECT(conn, 0);
    e8899592:	ffb7f713          	andi	a4,a5,-5
    e8899596:	04e40023          	sb	a4,64(s0)
    if (!was_nonblocking_connect) {
    e889959a:	8b91                	andi	a5,a5,4
    e889959c:	10079163          	bnez	a5,e889969e <err_tcp+0x1e6>
      LWIP_ASSERT("conn->current_msg != NULL", conn->current_msg != NULL);
    e88995a0:	643c                	ld	a5,72(s0)
    e88995a2:	e79d                	bnez	a5,e88995d0 <err_tcp+0x118>
    e88995a4:	02f00593          	li	a1,47
    e88995a8:	0003a517          	auipc	a0,0x3a
    e88995ac:	eb050513          	addi	a0,a0,-336 # e88d3458 <netconn_reset+0x84>
    e88995b0:	dc9e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88995b4:	00150693          	addi	a3,a0,1
    e88995b8:	1e600613          	li	a2,486
    e88995bc:	0003a597          	auipc	a1,0x3a
    e88995c0:	c4c58593          	addi	a1,a1,-948 # e88d3208 <CSWTCH.34+0x2b8>
    e88995c4:	00036517          	auipc	a0,0x36
    e88995c8:	aec50513          	addi	a0,a0,-1300 # e88cf0b0 <kSinTable1024+0x900>
    e88995cc:	cfbe20ef          	jal	ra,e887c2c6 <eLIBs_printf>
      if (old_state == NETCONN_CLOSE) {
    e88995d0:	4711                	li	a4,4
    e88995d2:	643c                	ld	a5,72(s0)
    e88995d4:	08e91463          	bne	s2,a4,e889965c <err_tcp+0x1a4>
        conn->current_msg->err = ERR_OK;
    e88995d8:	00078423          	sb	zero,8(a5)
      op_completed_sem = LWIP_API_MSG_SEM(conn->current_msg);
    e88995dc:	643c                	ld	a5,72(s0)
    e88995de:	639c                	ld	a5,0(a5)
    e88995e0:	01878493          	addi	s1,a5,24
      LWIP_ASSERT("inavlid op_completed_sem", sys_sem_valid(op_completed_sem));
    e88995e4:	6f9c                	ld	a5,24(a5)
    e88995e6:	e79d                	bnez	a5,e8899614 <err_tcp+0x15c>
    e88995e8:	02f00593          	li	a1,47
    e88995ec:	0003a517          	auipc	a0,0x3a
    e88995f0:	e6c50513          	addi	a0,a0,-404 # e88d3458 <netconn_reset+0x84>
    e88995f4:	d85e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88995f8:	00150693          	addi	a3,a0,1
    e88995fc:	1ef00613          	li	a2,495
    e8899600:	0003a597          	auipc	a1,0x3a
    e8899604:	9a058593          	addi	a1,a1,-1632 # e88d2fa0 <CSWTCH.34+0x50>
    e8899608:	00036517          	auipc	a0,0x36
    e889960c:	aa850513          	addi	a0,a0,-1368 # e88cf0b0 <kSinTable1024+0x900>
    e8899610:	cb7e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
      conn->current_msg = NULL;
    e8899614:	04043423          	sd	zero,72(s0)
}
    e8899618:	6422                	ld	s0,8(sp)
    e889961a:	70a2                	ld	ra,40(sp)
    e889961c:	6962                	ld	s2,24(sp)
    e889961e:	7982                	ld	s3,32(sp)
      sys_sem_signal(op_completed_sem);
    e8899620:	8526                	mv	a0,s1
}
    e8899622:	64c2                	ld	s1,16(sp)
    e8899624:	6145                	addi	sp,sp,48
      sys_sem_signal(op_completed_sem);
    e8899626:	d60fe06f          	j	e8897b86 <sys_sem_signal>
      return NULL;
    e889962a:	4981                	li	s3,0
      LWIP_ASSERT("unhandled error", err == ERR_OK);
    e889962c:	d095                	beqz	s1,e8899550 <err_tcp+0x98>
    e889962e:	02f00593          	li	a1,47
    e8899632:	0003a517          	auipc	a0,0x3a
    e8899636:	e2650513          	addi	a0,a0,-474 # e88d3458 <netconn_reset+0x84>
    e889963a:	d3fe20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889963e:	00150693          	addi	a3,a0,1
    e8899642:	07d00613          	li	a2,125
    e8899646:	0003a597          	auipc	a1,0x3a
    e889964a:	94a58593          	addi	a1,a1,-1718 # e88d2f90 <CSWTCH.34+0x40>
    e889964e:	00036517          	auipc	a0,0x36
    e8899652:	a6250513          	addi	a0,a0,-1438 # e88cf0b0 <kSinTable1024+0x900>
    e8899656:	c71e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889965a:	bddd                	j	e8899550 <err_tcp+0x98>
        conn->current_msg->err = err;
    e889965c:	00978423          	sb	s1,8(a5)
    e8899660:	bfb5                	j	e88995dc <err_tcp+0x124>
    LWIP_ASSERT("conn->current_msg == NULL", conn->current_msg == NULL);
    e8899662:	643c                	ld	a5,72(s0)
    e8899664:	cf8d                	beqz	a5,e889969e <err_tcp+0x1e6>
    e8899666:	02f00593          	li	a1,47
    e889966a:	0003a517          	auipc	a0,0x3a
    e889966e:	dee50513          	addi	a0,a0,-530 # e88d3458 <netconn_reset+0x84>
    e8899672:	d07e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
}
    e8899676:	6422                	ld	s0,8(sp)
    e8899678:	70a2                	ld	ra,40(sp)
    e889967a:	64c2                	ld	s1,16(sp)
    e889967c:	6962                	ld	s2,24(sp)
    e889967e:	7982                	ld	s3,32(sp)
    LWIP_ASSERT("conn->current_msg == NULL", conn->current_msg == NULL);
    e8899680:	00150693          	addi	a3,a0,1
    e8899684:	1f700613          	li	a2,503
    e8899688:	0003a597          	auipc	a1,0x3a
    e889968c:	93858593          	addi	a1,a1,-1736 # e88d2fc0 <CSWTCH.34+0x70>
    e8899690:	00036517          	auipc	a0,0x36
    e8899694:	a2050513          	addi	a0,a0,-1504 # e88cf0b0 <kSinTable1024+0x900>
}
    e8899698:	6145                	addi	sp,sp,48
    LWIP_ASSERT("conn->current_msg == NULL", conn->current_msg == NULL);
    e889969a:	c2de206f          	j	e887c2c6 <eLIBs_printf>
}
    e889969e:	70a2                	ld	ra,40(sp)
    e88996a0:	6422                	ld	s0,8(sp)
    e88996a2:	64c2                	ld	s1,16(sp)
    e88996a4:	6962                	ld	s2,24(sp)
    e88996a6:	7982                	ld	s3,32(sp)
    e88996a8:	6145                	addi	sp,sp,48
    e88996aa:	8082                	ret

00000000e88996ac <recv_raw>:
  if ((conn != NULL) && NETCONN_MBOX_VALID(conn, &conn->recvmbox)) {
    e88996ac:	c971                	beqz	a0,e8899780 <recv_raw+0xd4>
    e88996ae:	711c                	ld	a5,32(a0)
    e88996b0:	cbe1                	beqz	a5,e8899780 <recv_raw+0xd4>
    e88996b2:	04054783          	lbu	a5,64(a0)
    e88996b6:	8ba1                	andi	a5,a5,8
    e88996b8:	e7e1                	bnez	a5,e8899780 <recv_raw+0xd4>
    if ((recv_avail + (int)(p->tot_len)) > conn->recv_bufsize) {
    e88996ba:	5d58                	lw	a4,60(a0)
    e88996bc:	01065783          	lhu	a5,16(a2)
    e88996c0:	9fb9                	addw	a5,a5,a4
    e88996c2:	5d18                	lw	a4,56(a0)
    e88996c4:	0af74e63          	blt	a4,a5,e8899780 <recv_raw+0xd4>
{
    e88996c8:	7139                	addi	sp,sp,-64
    e88996ca:	f026                	sd	s1,32(sp)
    e88996cc:	f84e                	sd	s3,48(sp)
    e88996ce:	84aa                	mv	s1,a0
    q = pbuf_clone(PBUF_RAW, PBUF_RAM, p);
    e88996d0:	89ae                	mv	s3,a1
    e88996d2:	4501                	li	a0,0
    e88996d4:	28000593          	li	a1,640
{
    e88996d8:	f44a                	sd	s2,40(sp)
    e88996da:	fc06                	sd	ra,56(sp)
    e88996dc:	ec22                	sd	s0,24(sp)
    q = pbuf_clone(PBUF_RAW, PBUF_RAM, p);
    e88996de:	e2ef60ef          	jal	ra,e888fd0c <pbuf_clone>
    e88996e2:	892a                	mv	s2,a0
    if (q != NULL) {
    e88996e4:	c909                	beqz	a0,e88996f6 <recv_raw+0x4a>
      buf = (struct netbuf *)memp_malloc(MEMP_NETBUF);
    e88996e6:	451d                	li	a0,7
    e88996e8:	a65f40ef          	jal	ra,e888e14c <memp_malloc>
    e88996ec:	842a                	mv	s0,a0
      if (buf == NULL) {
    e88996ee:	ed01                	bnez	a0,e8899706 <recv_raw+0x5a>
        pbuf_free(q);
    e88996f0:	854a                	mv	a0,s2
    e88996f2:	b5bf50ef          	jal	ra,e888f24c <pbuf_free>
}
    e88996f6:	70e2                	ld	ra,56(sp)
    e88996f8:	6462                	ld	s0,24(sp)
    e88996fa:	7482                	ld	s1,32(sp)
    e88996fc:	7922                	ld	s2,40(sp)
    e88996fe:	79c2                	ld	s3,48(sp)
    e8899700:	4501                	li	a0,0
    e8899702:	6121                	addi	sp,sp,64
    e8899704:	8082                	ret
      buf->ptr = q;
    e8899706:	f925590b          	sdd	s2,s2,(a0),0,4
      ip_addr_copy(buf->addr, *ip_current_src_addr());
    e889970a:	0004c797          	auipc	a5,0x4c
    e889970e:	43e78793          	addi	a5,a5,1086 # e88e5b48 <ip_data>
    e8899712:	0387c703          	lbu	a4,56(a5)
    e8899716:	4699                	li	a3,6
    e8899718:	02e50223          	sb	a4,36(a0)
    e889971c:	04d71063          	bne	a4,a3,e889975c <recv_raw+0xb0>
    e8899720:	53d8                	lw	a4,36(a5)
    e8899722:	c918                	sw	a4,16(a0)
    e8899724:	5798                	lw	a4,40(a5)
    e8899726:	c958                	sw	a4,20(a0)
    e8899728:	57d8                	lw	a4,44(a5)
    e889972a:	cd18                	sw	a4,24(a0)
    e889972c:	5b98                	lw	a4,48(a5)
    e889972e:	cd58                	sw	a4,28(a0)
    e8899730:	0347c783          	lbu	a5,52(a5)
    e8899734:	02f50023          	sb	a5,32(a0)
      buf->port = pcb->protocol;
    e8899738:	0409c783          	lbu	a5,64(s3)
      if (sys_mbox_trypost(&conn->recvmbox, buf) != ERR_OK) {
    e889973c:	85a2                	mv	a1,s0
    e889973e:	02048513          	addi	a0,s1,32
      buf->port = pcb->protocol;
    e8899742:	02f41423          	sh	a5,40(s0)
      len = q->tot_len;
    e8899746:	01095603          	lhu	a2,16(s2)
    e889974a:	e432                	sd	a2,8(sp)
      if (sys_mbox_trypost(&conn->recvmbox, buf) != ERR_OK) {
    e889974c:	d7afe0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
    e8899750:	6622                	ld	a2,8(sp)
    e8899752:	cd11                	beqz	a0,e889976e <recv_raw+0xc2>
        netbuf_delete(buf);
    e8899754:	8522                	mv	a0,s0
    e8899756:	1f2010ef          	jal	ra,e889a948 <netbuf_delete>
        return 0;
    e889975a:	bf71                	j	e88996f6 <recv_raw+0x4a>
      ip_addr_copy(buf->addr, *ip_current_src_addr());
    e889975c:	53dc                	lw	a5,36(a5)
    e889975e:	00052a23          	sw	zero,20(a0)
    e8899762:	00053c23          	sd	zero,24(a0)
    e8899766:	c91c                	sw	a5,16(a0)
    e8899768:	02050023          	sb	zero,32(a0)
    e889976c:	b7f1                	j	e8899738 <recv_raw+0x8c>
        SYS_ARCH_INC(conn->recv_avail, len);
    e889976e:	5cdc                	lw	a5,60(s1)
    e8899770:	9fb1                	addw	a5,a5,a2
    e8899772:	dcdc                	sw	a5,60(s1)
        API_EVENT(conn, NETCONN_EVT_RCVPLUS, len);
    e8899774:	68bc                	ld	a5,80(s1)
    e8899776:	d3c1                	beqz	a5,e88996f6 <recv_raw+0x4a>
    e8899778:	4581                	li	a1,0
    e889977a:	8526                	mv	a0,s1
    e889977c:	9782                	jalr	a5
    e889977e:	bfa5                	j	e88996f6 <recv_raw+0x4a>
}
    e8899780:	4501                	li	a0,0
    e8899782:	8082                	ret

00000000e8899784 <sent_tcp>:
{
    e8899784:	1101                	addi	sp,sp,-32
    e8899786:	ec06                	sd	ra,24(sp)
    e8899788:	e822                	sd	s0,16(sp)
  LWIP_ASSERT("conn != NULL", (conn != NULL));
    e889978a:	e521                	bnez	a0,e88997d2 <sent_tcp+0x4e>
    e889978c:	02f00593          	li	a1,47
    e8899790:	0003a517          	auipc	a0,0x3a
    e8899794:	cc850513          	addi	a0,a0,-824 # e88d3458 <netconn_reset+0x84>
    e8899798:	be1e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889979c:	00150693          	addi	a3,a0,1
    e88997a0:	19300613          	li	a2,403
    e88997a4:	0003a597          	auipc	a1,0x3a
    e88997a8:	a3458593          	addi	a1,a1,-1484 # e88d31d8 <CSWTCH.34+0x288>
    e88997ac:	00036517          	auipc	a0,0x36
    e88997b0:	90450513          	addi	a0,a0,-1788 # e88cf0b0 <kSinTable1024+0x900>
    e88997b4:	b13e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e88997b8:	60e2                	ld	ra,24(sp)
    e88997ba:	6442                	ld	s0,16(sp)
    e88997bc:	4501                	li	a0,0
    e88997be:	6105                	addi	sp,sp,32
    e88997c0:	8082                	ret
    } else if (conn->state == NETCONN_CLOSE) {
    e88997c2:	4711                	li	a4,4
    e88997c4:	02e79263          	bne	a5,a4,e88997e8 <sent_tcp+0x64>
      lwip_netconn_do_close_internal(conn  WRITE_DELAYED);
    e88997c8:	4585                	li	a1,1
    e88997ca:	e432                	sd	a2,8(sp)
    e88997cc:	845ff0ef          	jal	ra,e8899010 <lwip_netconn_do_close_internal>
    e88997d0:	a819                	j	e88997e6 <sent_tcp+0x62>
    if (conn->state == NETCONN_WRITE) {
    e88997d2:	00154783          	lbu	a5,1(a0)
    e88997d6:	4705                	li	a4,1
    e88997d8:	842a                	mv	s0,a0
    e88997da:	fee794e3          	bne	a5,a4,e88997c2 <sent_tcp+0x3e>
      lwip_netconn_do_writemore(conn  WRITE_DELAYED);
    e88997de:	4585                	li	a1,1
    e88997e0:	e432                	sd	a2,8(sp)
    e88997e2:	cd4ff0ef          	jal	ra,e8898cb6 <lwip_netconn_do_writemore>
      lwip_netconn_do_close_internal(conn  WRITE_DELAYED);
    e88997e6:	6622                	ld	a2,8(sp)
    if ((conn->pcb.tcp != NULL) && (tcp_sndbuf(conn->pcb.tcp) > TCP_SNDLOWAT) &&
    e88997e8:	641c                	ld	a5,8(s0)
    e88997ea:	d7f9                	beqz	a5,e88997b8 <sent_tcp+0x34>
    e88997ec:	0a47a683          	lw	a3,164(a5)
    e88997f0:	6705                	lui	a4,0x1
    e88997f2:	68070713          	addi	a4,a4,1664 # 1680 <memcmp-0xe87fe980>
    e88997f6:	fcd771e3          	bgeu	a4,a3,e88997b8 <sent_tcp+0x34>
    e88997fa:	0a87d703          	lhu	a4,168(a5)
    e88997fe:	47fd                	li	a5,31
    e8899800:	fae7ece3          	bltu	a5,a4,e88997b8 <sent_tcp+0x34>
      netconn_clear_flags(conn, NETCONN_FLAG_CHECK_WRITESPACE);
    e8899804:	04044783          	lbu	a5,64(s0)
    e8899808:	9bbd                	andi	a5,a5,-17
    e889980a:	04f40023          	sb	a5,64(s0)
      API_EVENT(conn, NETCONN_EVT_SENDPLUS, len);
    e889980e:	683c                	ld	a5,80(s0)
    e8899810:	d7c5                	beqz	a5,e88997b8 <sent_tcp+0x34>
    e8899812:	4589                	li	a1,2
    e8899814:	8522                	mv	a0,s0
    e8899816:	9782                	jalr	a5
  return ERR_OK;
    e8899818:	b745                	j	e88997b8 <sent_tcp+0x34>

00000000e889981a <lwip_netconn_is_deallocated_msg>:
  if (msg == &netconn_deleted) {
    e889981a:	0003a797          	auipc	a5,0x3a
    e889981e:	af578793          	addi	a5,a5,-1291 # e88d330f <netconn_deleted>
    e8899822:	8d1d                	sub	a0,a0,a5
}
    e8899824:	00153513          	seqz	a0,a0
    e8899828:	8082                	ret

00000000e889982a <lwip_netconn_is_err_msg>:
{
    e889982a:	1101                	addi	sp,sp,-32
    e889982c:	e422                	sd	s0,8(sp)
    e889982e:	e826                	sd	s1,16(sp)
    e8899830:	ec06                	sd	ra,24(sp)
    e8899832:	84aa                	mv	s1,a0
    e8899834:	842e                	mv	s0,a1
  LWIP_ASSERT("err != NULL", err != NULL);
    e8899836:	e59d                	bnez	a1,e8899864 <lwip_netconn_is_err_msg+0x3a>
    e8899838:	02f00593          	li	a1,47
    e889983c:	0003a517          	auipc	a0,0x3a
    e8899840:	c1c50513          	addi	a0,a0,-996 # e88d3458 <netconn_reset+0x84>
    e8899844:	b35e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899848:	00150693          	addi	a3,a0,1
    e889984c:	08500613          	li	a2,133
    e8899850:	0003a597          	auipc	a1,0x3a
    e8899854:	a8858593          	addi	a1,a1,-1400 # e88d32d8 <CSWTCH.34+0x388>
    e8899858:	00036517          	auipc	a0,0x36
    e889985c:	85850513          	addi	a0,a0,-1960 # e88cf0b0 <kSinTable1024+0x900>
    e8899860:	a67e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (msg == &netconn_aborted) {
    e8899864:	0003a797          	auipc	a5,0x3a
    e8899868:	a8078793          	addi	a5,a5,-1408 # e88d32e4 <netconn_aborted>
    e889986c:	00f49b63          	bne	s1,a5,e8899882 <lwip_netconn_is_err_msg+0x58>
    *err = ERR_ABRT;
    e8899870:	57cd                	li	a5,-13
    *err = ERR_CLSD;
    e8899872:	00f40023          	sb	a5,0(s0)
    return 1;
    e8899876:	4505                	li	a0,1
}
    e8899878:	60e2                	ld	ra,24(sp)
    e889987a:	6422                	ld	s0,8(sp)
    e889987c:	64c2                	ld	s1,16(sp)
    e889987e:	6105                	addi	sp,sp,32
    e8899880:	8082                	ret
  } else if (msg == &netconn_reset) {
    e8899882:	0003a797          	auipc	a5,0x3a
    e8899886:	b5278793          	addi	a5,a5,-1198 # e88d33d4 <netconn_reset>
    e889988a:	00f49463          	bne	s1,a5,e8899892 <lwip_netconn_is_err_msg+0x68>
    *err = ERR_RST;
    e889988e:	57c9                	li	a5,-14
    e8899890:	b7cd                	j	e8899872 <lwip_netconn_is_err_msg+0x48>
  } else if (msg == &netconn_closed) {
    e8899892:	0003a797          	auipc	a5,0x3a
    e8899896:	a7c78793          	addi	a5,a5,-1412 # e88d330e <netconn_closed>
  return 0;
    e889989a:	4501                	li	a0,0
  } else if (msg == &netconn_closed) {
    e889989c:	fcf49ee3          	bne	s1,a5,e8899878 <lwip_netconn_is_err_msg+0x4e>
    *err = ERR_CLSD;
    e88998a0:	57c5                	li	a5,-15
    e88998a2:	bfc1                	j	e8899872 <lwip_netconn_is_err_msg+0x48>

00000000e88998a4 <lwip_netconn_do_newconn>:
{
    e88998a4:	1101                	addi	sp,sp,-32
    e88998a6:	ec06                	sd	ra,24(sp)
    e88998a8:	e422                	sd	s0,8(sp)
    e88998aa:	e826                	sd	s1,16(sp)
  if (msg->conn->pcb.tcp == NULL) {
    e88998ac:	6104                	ld	s1,0(a0)
  msg->err = ERR_OK;
    e88998ae:	00050423          	sb	zero,8(a0)
  if (msg->conn->pcb.tcp == NULL) {
    e88998b2:	649c                	ld	a5,8(s1)
    e88998b4:	e3f9                	bnez	a5,e889997a <lwip_netconn_do_newconn+0xd6>
  if (NETCONNTYPE_ISIPV6(netconn_type(msg->conn))) {
    e88998b6:	0004c783          	lbu	a5,0(s1)
    e88998ba:	842a                	mv	s0,a0
    e88998bc:	0087f513          	andi	a0,a5,8
    e88998c0:	c119                	beqz	a0,e88998c6 <lwip_netconn_do_newconn+0x22>
    iptype = IPADDR_TYPE_ANY;
    e88998c2:	02e00513          	li	a0,46
  switch (NETCONNTYPE_GROUP(msg->conn->type)) {
    e88998c6:	0f07f793          	andi	a5,a5,240
    e88998ca:	02000713          	li	a4,32
    e88998ce:	06e78963          	beq	a5,a4,e8899940 <lwip_netconn_do_newconn+0x9c>
    e88998d2:	04000713          	li	a4,64
    e88998d6:	00e78e63          	beq	a5,a4,e88998f2 <lwip_netconn_do_newconn+0x4e>
    e88998da:	4741                	li	a4,16
    e88998dc:	08e79c63          	bne	a5,a4,e8899974 <lwip_netconn_do_newconn+0xd0>
      msg->conn->pcb.tcp = tcp_new_ip_type(iptype);
    e88998e0:	a7cf80ef          	jal	ra,e8891b5c <tcp_new_ip_type>
    e88998e4:	e488                	sd	a0,8(s1)
      if (msg->conn->pcb.tcp != NULL) {
    e88998e6:	6008                	ld	a0,0(s0)
    e88998e8:	651c                	ld	a5,8(a0)
    e88998ea:	cba9                	beqz	a5,e889993c <lwip_netconn_do_newconn+0x98>
        setup_tcp(msg->conn);
    e88998ec:	a60ff0ef          	jal	ra,e8898b4c <setup_tcp>
    e88998f0:	a099                	j	e8899936 <lwip_netconn_do_newconn+0x92>
      msg->conn->pcb.raw = raw_new_ip_type(iptype, msg->msg.n.proto);
    e88998f2:	01044583          	lbu	a1,16(s0)
    e88998f6:	bebf60ef          	jal	ra,e88904e0 <raw_new_ip_type>
    e88998fa:	e488                	sd	a0,8(s1)
      if (msg->conn->pcb.raw != NULL) {
    e88998fc:	6018                	ld	a4,0(s0)
    e88998fe:	671c                	ld	a5,8(a4)
    e8899900:	cf95                	beqz	a5,e889993c <lwip_netconn_do_newconn+0x98>
        if (NETCONNTYPE_ISIPV6(msg->conn->type) && msg->conn->pcb.raw->protocol == IP6_NEXTH_ICMP6) {
    e8899902:	00074703          	lbu	a4,0(a4)
    e8899906:	8b21                	andi	a4,a4,8
    e8899908:	cf19                	beqz	a4,e8899926 <lwip_netconn_do_newconn+0x82>
    e889990a:	0407c683          	lbu	a3,64(a5)
    e889990e:	03a00713          	li	a4,58
    e8899912:	00e69a63          	bne	a3,a4,e8899926 <lwip_netconn_do_newconn+0x82>
          msg->conn->pcb.raw->chksum_reqd = 1;
    e8899916:	4705                	li	a4,1
    e8899918:	04e78d23          	sb	a4,90(a5)
          msg->conn->pcb.raw->chksum_offset = 2;
    e889991c:	601c                	ld	a5,0(s0)
    e889991e:	4709                	li	a4,2
    e8899920:	679c                	ld	a5,8(a5)
    e8899922:	04e79c23          	sh	a4,88(a5)
        raw_recv(msg->conn->pcb.raw, recv_raw, msg->conn);
    e8899926:	6010                	ld	a2,0(s0)
    e8899928:	00000597          	auipc	a1,0x0
    e889992c:	d8458593          	addi	a1,a1,-636 # e88996ac <recv_raw>
    e8899930:	6608                	ld	a0,8(a2)
    e8899932:	80bf60ef          	jal	ra,e889013c <raw_recv>
  if (msg->conn->pcb.ip == NULL) {
    e8899936:	601c                	ld	a5,0(s0)
    e8899938:	679c                	ld	a5,8(a5)
    e889993a:	e3a1                	bnez	a5,e889997a <lwip_netconn_do_newconn+0xd6>
    msg->err = ERR_MEM;
    e889993c:	57fd                	li	a5,-1
    e889993e:	a825                	j	e8899976 <lwip_netconn_do_newconn+0xd2>
      msg->conn->pcb.udp = udp_new_ip_type(iptype);
    e8899940:	e73fd0ef          	jal	ra,e88977b2 <udp_new_ip_type>
    e8899944:	e488                	sd	a0,8(s1)
      if (msg->conn->pcb.udp != NULL) {
    e8899946:	601c                	ld	a5,0(s0)
    e8899948:	6798                	ld	a4,8(a5)
    e889994a:	db6d                	beqz	a4,e889993c <lwip_netconn_do_newconn+0x98>
        if (NETCONNTYPE_ISUDPNOCHKSUM(msg->conn->type)) {
    e889994c:	0007c783          	lbu	a5,0(a5)
    e8899950:	02200693          	li	a3,34
    e8899954:	0f37f793          	andi	a5,a5,243
    e8899958:	00d79563          	bne	a5,a3,e8899962 <lwip_netconn_do_newconn+0xbe>
          udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);
    e889995c:	4785                	li	a5,1
    e889995e:	04f70023          	sb	a5,64(a4)
        udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
    e8899962:	6010                	ld	a2,0(s0)
    e8899964:	fffff597          	auipc	a1,0xfffff
    e8899968:	ff858593          	addi	a1,a1,-8 # e889895c <recv_udp>
    e889996c:	6608                	ld	a0,8(a2)
    e889996e:	d79fd0ef          	jal	ra,e88976e6 <udp_recv>
    e8899972:	b7d1                	j	e8899936 <lwip_netconn_do_newconn+0x92>
      msg->err = ERR_VAL;
    e8899974:	57e9                	li	a5,-6
    msg->err = ERR_MEM;
    e8899976:	00f40423          	sb	a5,8(s0)
}
    e889997a:	60e2                	ld	ra,24(sp)
    e889997c:	6422                	ld	s0,8(sp)
    e889997e:	64c2                	ld	s1,16(sp)
    e8899980:	6105                	addi	sp,sp,32
    e8899982:	8082                	ret

00000000e8899984 <netconn_alloc>:
{
    e8899984:	7179                	addi	sp,sp,-48
    e8899986:	e826                	sd	s1,16(sp)
    e8899988:	84aa                	mv	s1,a0
  conn = (struct netconn *)memp_malloc(MEMP_NETCONN);
    e889998a:	4521                	li	a0,8
{
    e889998c:	e422                	sd	s0,8(sp)
    e889998e:	f04e                	sd	s3,32(sp)
    e8899990:	f406                	sd	ra,40(sp)
    e8899992:	ec4a                	sd	s2,24(sp)
    e8899994:	89ae                	mv	s3,a1
  conn = (struct netconn *)memp_malloc(MEMP_NETCONN);
    e8899996:	fb6f40ef          	jal	ra,e888e14c <memp_malloc>
    e889999a:	842a                	mv	s0,a0
  if (conn == NULL) {
    e889999c:	c945                	beqz	a0,e8899a4c <netconn_alloc+0xc8>
  conn->pending_err = ERR_OK;
    e889999e:	00050823          	sb	zero,16(a0)
  conn->type = t;
    e88999a2:	00950023          	sb	s1,0(a0)
  conn->pcb.tcp = NULL;
    e88999a6:	00053423          	sd	zero,8(a0)
  switch (NETCONNTYPE_GROUP(t)) {
    e88999aa:	02000793          	li	a5,32
    e88999ae:	0f04f513          	andi	a0,s1,240
    e88999b2:	04f50563          	beq	a0,a5,e88999fc <netconn_alloc+0x78>
    e88999b6:	04000793          	li	a5,64
    e88999ba:	06f50463          	beq	a0,a5,e8899a22 <netconn_alloc+0x9e>
    e88999be:	47c1                	li	a5,16
    e88999c0:	06f50163          	beq	a0,a5,e8899a22 <netconn_alloc+0x9e>
      LWIP_ASSERT("netconn_alloc: undefined netconn_type", 0);
    e88999c4:	02f00593          	li	a1,47
    e88999c8:	0003a517          	auipc	a0,0x3a
    e88999cc:	a9050513          	addi	a0,a0,-1392 # e88d3458 <netconn_reset+0x84>
    e88999d0:	9a9e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e88999d4:	00150693          	addi	a3,a0,1
    e88999d8:	2e500613          	li	a2,741
    e88999dc:	0003a597          	auipc	a1,0x3a
    e88999e0:	90c58593          	addi	a1,a1,-1780 # e88d32e8 <netconn_aborted+0x4>
    e88999e4:	00035517          	auipc	a0,0x35
    e88999e8:	6cc50513          	addi	a0,a0,1740 # e88cf0b0 <kSinTable1024+0x900>
    e88999ec:	8dbe20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  memp_free(MEMP_NETCONN, conn);
    e88999f0:	85a2                	mv	a1,s0
    e88999f2:	4521                	li	a0,8
    e88999f4:	faaf40ef          	jal	ra,e888e19e <memp_free>
  return NULL;
    e88999f8:	4401                	li	s0,0
    e88999fa:	a889                	j	e8899a4c <netconn_alloc+0xc8>
      init_flags |= NETCONN_FLAG_PKTINFO;
    e88999fc:	04000493          	li	s1,64
  if (sys_mbox_new(&conn->recvmbox, size) != ERR_OK) {
    e8899a00:	02040913          	addi	s2,s0,32
    e8899a04:	4581                	li	a1,0
    e8899a06:	854a                	mv	a0,s2
    e8899a08:	a36fe0ef          	jal	ra,e8897c3e <sys_mbox_new>
    e8899a0c:	f175                	bnez	a0,e88999f0 <netconn_alloc+0x6c>
  if (sys_sem_new(&conn->op_completed, 0) != ERR_OK) {
    e8899a0e:	4581                	li	a1,0
    e8899a10:	01840513          	addi	a0,s0,24
    e8899a14:	8f2fe0ef          	jal	ra,e8897b06 <sys_sem_new>
    e8899a18:	c519                	beqz	a0,e8899a26 <netconn_alloc+0xa2>
    sys_mbox_free(&conn->recvmbox);
    e8899a1a:	854a                	mv	a0,s2
    e8899a1c:	a72fe0ef          	jal	ra,e8897c8e <sys_mbox_free>
    goto free_and_return;
    e8899a20:	bfc1                	j	e88999f0 <netconn_alloc+0x6c>
  u8_t init_flags = 0;
    e8899a22:	4481                	li	s1,0
    e8899a24:	bff1                	j	e8899a00 <netconn_alloc+0x7c>
  sys_mbox_set_invalid(&conn->acceptmbox);
    e8899a26:	02840513          	addi	a0,s0,40
    e8899a2a:	a8cfe0ef          	jal	ra,e8897cb6 <sys_mbox_set_invalid>
  conn->state        = NETCONN_NONE;
    e8899a2e:	000400a3          	sb	zero,1(s0)
  conn->socket       = -1;
    e8899a32:	57fd                	li	a5,-1
    e8899a34:	d85c                	sw	a5,52(s0)
  conn->recv_bufsize = RECV_BUFSIZE_DEFAULT;
    e8899a36:	800007b7          	lui	a5,0x80000
    e8899a3a:	fff7c793          	not	a5,a5
  conn->callback     = callback;
    e8899a3e:	05343823          	sd	s3,80(s0)
  conn->current_msg  = NULL;
    e8899a42:	04043423          	sd	zero,72(s0)
  conn->recv_bufsize = RECV_BUFSIZE_DEFAULT;
    e8899a46:	fc1c                	sd	a5,56(s0)
  conn->flags = init_flags;
    e8899a48:	04940023          	sb	s1,64(s0)
}
    e8899a4c:	8522                	mv	a0,s0
    e8899a4e:	70a2                	ld	ra,40(sp)
    e8899a50:	6422                	ld	s0,8(sp)
    e8899a52:	64c2                	ld	s1,16(sp)
    e8899a54:	6962                	ld	s2,24(sp)
    e8899a56:	7982                	ld	s3,32(sp)
    e8899a58:	6145                	addi	sp,sp,48
    e8899a5a:	8082                	ret

00000000e8899a5c <netconn_free>:
{
    e8899a5c:	1101                	addi	sp,sp,-32
    e8899a5e:	e422                	sd	s0,8(sp)
    e8899a60:	ec06                	sd	ra,24(sp)
    e8899a62:	e826                	sd	s1,16(sp)
  LWIP_ASSERT("PCB must be deallocated outside this function", conn->pcb.tcp == NULL);
    e8899a64:	651c                	ld	a5,8(a0)
{
    e8899a66:	842a                	mv	s0,a0
  LWIP_ASSERT("PCB must be deallocated outside this function", conn->pcb.tcp == NULL);
    e8899a68:	c79d                	beqz	a5,e8899a96 <netconn_free+0x3a>
    e8899a6a:	02f00593          	li	a1,47
    e8899a6e:	0003a517          	auipc	a0,0x3a
    e8899a72:	9ea50513          	addi	a0,a0,-1558 # e88d3458 <netconn_reset+0x84>
    e8899a76:	903e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899a7a:	00150693          	addi	a3,a0,1
    e8899a7e:	31c00613          	li	a2,796
    e8899a82:	0003a597          	auipc	a1,0x3a
    e8899a86:	8a658593          	addi	a1,a1,-1882 # e88d3328 <netconn_deleted+0x19>
    e8899a8a:	00035517          	auipc	a0,0x35
    e8899a8e:	62650513          	addi	a0,a0,1574 # e88cf0b0 <kSinTable1024+0x900>
    e8899a92:	835e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  netconn_drain(conn);
    e8899a96:	8522                	mv	a0,s0
    e8899a98:	084000ef          	jal	ra,e8899b1c <netconn_drain>
  LWIP_ASSERT("recvmbox must be deallocated before calling this function",
    e8899a9c:	701c                	ld	a5,32(s0)
    e8899a9e:	c79d                	beqz	a5,e8899acc <netconn_free+0x70>
    e8899aa0:	02f00593          	li	a1,47
    e8899aa4:	0003a517          	auipc	a0,0x3a
    e8899aa8:	9b450513          	addi	a0,a0,-1612 # e88d3458 <netconn_reset+0x84>
    e8899aac:	8cde20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899ab0:	00150693          	addi	a3,a0,1
    e8899ab4:	32400613          	li	a2,804
    e8899ab8:	0003a597          	auipc	a1,0x3a
    e8899abc:	8a058593          	addi	a1,a1,-1888 # e88d3358 <netconn_deleted+0x49>
    e8899ac0:	00035517          	auipc	a0,0x35
    e8899ac4:	5f050513          	addi	a0,a0,1520 # e88cf0b0 <kSinTable1024+0x900>
    e8899ac8:	ffee20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("acceptmbox must be deallocated before calling this function",
    e8899acc:	741c                	ld	a5,40(s0)
    e8899ace:	c79d                	beqz	a5,e8899afc <netconn_free+0xa0>
    e8899ad0:	02f00593          	li	a1,47
    e8899ad4:	0003a517          	auipc	a0,0x3a
    e8899ad8:	98450513          	addi	a0,a0,-1660 # e88d3458 <netconn_reset+0x84>
    e8899adc:	89de20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899ae0:	00150693          	addi	a3,a0,1
    e8899ae4:	32700613          	li	a2,807
    e8899ae8:	0003a597          	auipc	a1,0x3a
    e8899aec:	8b058593          	addi	a1,a1,-1872 # e88d3398 <netconn_deleted+0x89>
    e8899af0:	00035517          	auipc	a0,0x35
    e8899af4:	5c050513          	addi	a0,a0,1472 # e88cf0b0 <kSinTable1024+0x900>
    e8899af8:	fcee20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  sys_sem_free(&conn->op_completed);
    e8899afc:	01840493          	addi	s1,s0,24
    e8899b00:	8526                	mv	a0,s1
    e8899b02:	85cfe0ef          	jal	ra,e8897b5e <sys_sem_free>
  sys_sem_set_invalid(&conn->op_completed);
    e8899b06:	8526                	mv	a0,s1
    e8899b08:	884fe0ef          	jal	ra,e8897b8c <sys_sem_set_invalid>
}
    e8899b0c:	64c2                	ld	s1,16(sp)
  memp_free(MEMP_NETCONN, conn);
    e8899b0e:	85a2                	mv	a1,s0
}
    e8899b10:	6422                	ld	s0,8(sp)
    e8899b12:	60e2                	ld	ra,24(sp)
  memp_free(MEMP_NETCONN, conn);
    e8899b14:	4521                	li	a0,8
}
    e8899b16:	6105                	addi	sp,sp,32
  memp_free(MEMP_NETCONN, conn);
    e8899b18:	e86f406f          	j	e888e19e <memp_free>

00000000e8899b1c <netconn_drain>:
{
    e8899b1c:	7139                	addi	sp,sp,-64
    e8899b1e:	fa91540b          	sdd	s0,s1,(sp),1,4
    e8899b22:	fd31590b          	sdd	s2,s3,(sp),2,4
    e8899b26:	fc06                	sd	ra,56(sp)
    e8899b28:	f852                	sd	s4,48(sp)
  LWIP_ASSERT("netconn marked closed", conn->flags & NETCONN_FLAG_MBOXINVALID);
    e8899b2a:	04054783          	lbu	a5,64(a0)
{
    e8899b2e:	842a                	mv	s0,a0
  LWIP_ASSERT("netconn marked closed", conn->flags & NETCONN_FLAG_MBOXINVALID);
    e8899b30:	8ba1                	andi	a5,a5,8
    e8899b32:	e79d                	bnez	a5,e8899b60 <netconn_drain+0x44>
    e8899b34:	02f00593          	li	a1,47
    e8899b38:	0003a517          	auipc	a0,0x3a
    e8899b3c:	92050513          	addi	a0,a0,-1760 # e88d3458 <netconn_reset+0x84>
    e8899b40:	839e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899b44:	00150693          	addi	a3,a0,1
    e8899b48:	34200613          	li	a2,834
    e8899b4c:	00039597          	auipc	a1,0x39
    e8899b50:	7c458593          	addi	a1,a1,1988 # e88d3310 <netconn_deleted+0x1>
    e8899b54:	00035517          	auipc	a0,0x35
    e8899b58:	55c50513          	addi	a0,a0,1372 # e88cf0b0 <kSinTable1024+0x900>
    e8899b5c:	f6ae20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (sys_mbox_valid(&conn->recvmbox)) {
    e8899b60:	701c                	ld	a5,32(s0)
    e8899b62:	c795                	beqz	a5,e8899b8e <netconn_drain+0x72>
    while (sys_mbox_tryfetch(&conn->recvmbox, &mem) != SYS_MBOX_EMPTY) {
    e8899b64:	02040493          	addi	s1,s0,32
    e8899b68:	597d                	li	s2,-1
  if (msg == &netconn_deleted) {
    e8899b6a:	00039997          	auipc	s3,0x39
    e8899b6e:	7a598993          	addi	s3,s3,1957 # e88d330f <netconn_deleted>
        if (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP) {
    e8899b72:	4a41                	li	s4,16
    while (sys_mbox_tryfetch(&conn->recvmbox, &mem) != SYS_MBOX_EMPTY) {
    e8899b74:	002c                	addi	a1,sp,8
    e8899b76:	8526                	mv	a0,s1
    e8899b78:	9c4fe0ef          	jal	ra,e8897d3c <sys_arch_mbox_tryfetch>
    e8899b7c:	2501                	sext.w	a0,a0
    e8899b7e:	05251663          	bne	a0,s2,e8899bca <netconn_drain+0xae>
    sys_mbox_free(&conn->recvmbox);
    e8899b82:	8526                	mv	a0,s1
    e8899b84:	90afe0ef          	jal	ra,e8897c8e <sys_mbox_free>
    sys_mbox_set_invalid(&conn->recvmbox);
    e8899b88:	8526                	mv	a0,s1
    e8899b8a:	92cfe0ef          	jal	ra,e8897cb6 <sys_mbox_set_invalid>
  if (sys_mbox_valid(&conn->acceptmbox)) {
    e8899b8e:	741c                	ld	a5,40(s0)
    e8899b90:	c78d                	beqz	a5,e8899bba <netconn_drain+0x9e>
    while (sys_mbox_tryfetch(&conn->acceptmbox, &mem) != SYS_MBOX_EMPTY) {
    e8899b92:	02840413          	addi	s0,s0,40
    e8899b96:	597d                	li	s2,-1
  if (msg == &netconn_deleted) {
    e8899b98:	00039997          	auipc	s3,0x39
    e8899b9c:	77798993          	addi	s3,s3,1911 # e88d330f <netconn_deleted>
    while (sys_mbox_tryfetch(&conn->acceptmbox, &mem) != SYS_MBOX_EMPTY) {
    e8899ba0:	002c                	addi	a1,sp,8
    e8899ba2:	8522                	mv	a0,s0
    e8899ba4:	998fe0ef          	jal	ra,e8897d3c <sys_arch_mbox_tryfetch>
    e8899ba8:	2501                	sext.w	a0,a0
    e8899baa:	05251563          	bne	a0,s2,e8899bf4 <netconn_drain+0xd8>
    sys_mbox_free(&conn->acceptmbox);
    e8899bae:	8522                	mv	a0,s0
    e8899bb0:	8defe0ef          	jal	ra,e8897c8e <sys_mbox_free>
    sys_mbox_set_invalid(&conn->acceptmbox);
    e8899bb4:	8522                	mv	a0,s0
    e8899bb6:	900fe0ef          	jal	ra,e8897cb6 <sys_mbox_set_invalid>
}
    e8899bba:	70e2                	ld	ra,56(sp)
    e8899bbc:	fa91440b          	ldd	s0,s1,(sp),1,4
    e8899bc0:	7a42                	ld	s4,48(sp)
    e8899bc2:	fd31490b          	ldd	s2,s3,(sp),2,4
    e8899bc6:	6121                	addi	sp,sp,64
    e8899bc8:	8082                	ret
      if (!lwip_netconn_is_deallocated_msg(mem))
    e8899bca:	6522                	ld	a0,8(sp)
  if (msg == &netconn_deleted) {
    e8899bcc:	fb3504e3          	beq	a0,s3,e8899b74 <netconn_drain+0x58>
        if (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP) {
    e8899bd0:	00044783          	lbu	a5,0(s0)
    e8899bd4:	0f07f793          	andi	a5,a5,240
    e8899bd8:	01479b63          	bne	a5,s4,e8899bee <netconn_drain+0xd2>
          if (!lwip_netconn_is_err_msg(mem, &err)) {
    e8899bdc:	00710593          	addi	a1,sp,7
    e8899be0:	c4bff0ef          	jal	ra,e889982a <lwip_netconn_is_err_msg>
    e8899be4:	f941                	bnez	a0,e8899b74 <netconn_drain+0x58>
            pbuf_free((struct pbuf *)mem);
    e8899be6:	6522                	ld	a0,8(sp)
    e8899be8:	e64f50ef          	jal	ra,e888f24c <pbuf_free>
    e8899bec:	b761                	j	e8899b74 <netconn_drain+0x58>
          netbuf_delete((struct netbuf *)mem);
    e8899bee:	55b000ef          	jal	ra,e889a948 <netbuf_delete>
    e8899bf2:	b749                	j	e8899b74 <netconn_drain+0x58>
      if (!lwip_netconn_is_deallocated_msg(mem))
    e8899bf4:	6522                	ld	a0,8(sp)
  if (msg == &netconn_deleted) {
    e8899bf6:	fb3505e3          	beq	a0,s3,e8899ba0 <netconn_drain+0x84>
        if (!lwip_netconn_is_err_msg(mem, &err)) {
    e8899bfa:	00710593          	addi	a1,sp,7
    e8899bfe:	c2dff0ef          	jal	ra,e889982a <lwip_netconn_is_err_msg>
    e8899c02:	fd59                	bnez	a0,e8899ba0 <netconn_drain+0x84>
          struct netconn *newconn = (struct netconn *)mem;
    e8899c04:	64a2                	ld	s1,8(sp)
          netconn_drain(newconn);
    e8899c06:	8526                	mv	a0,s1
    e8899c08:	f15ff0ef          	jal	ra,e8899b1c <netconn_drain>
          if (newconn->pcb.tcp != NULL) {
    e8899c0c:	6488                	ld	a0,8(s1)
    e8899c0e:	c509                	beqz	a0,e8899c18 <netconn_drain+0xfc>
            tcp_abort(newconn->pcb.tcp);
    e8899c10:	b6ff70ef          	jal	ra,e889177e <tcp_abort>
            newconn->pcb.tcp = NULL;
    e8899c14:	0004b423          	sd	zero,8(s1)
          netconn_free(newconn);
    e8899c18:	8526                	mv	a0,s1
    e8899c1a:	e43ff0ef          	jal	ra,e8899a5c <netconn_free>
    e8899c1e:	b749                	j	e8899ba0 <netconn_drain+0x84>

00000000e8899c20 <accept_function>:
{
    e8899c20:	7179                	addi	sp,sp,-48
    e8899c22:	f406                	sd	ra,40(sp)
    e8899c24:	e422                	sd	s0,8(sp)
    e8899c26:	e826                	sd	s1,16(sp)
    e8899c28:	ec4a                	sd	s2,24(sp)
    e8899c2a:	f04e                	sd	s3,32(sp)
  if (conn == NULL) {
    e8899c2c:	e911                	bnez	a0,e8899c40 <accept_function+0x20>
    return ERR_VAL;
    e8899c2e:	5969                	li	s2,-6
}
    e8899c30:	70a2                	ld	ra,40(sp)
    e8899c32:	6422                	ld	s0,8(sp)
    e8899c34:	854a                	mv	a0,s2
    e8899c36:	64c2                	ld	s1,16(sp)
    e8899c38:	6962                	ld	s2,24(sp)
    e8899c3a:	7982                	ld	s3,32(sp)
    e8899c3c:	6145                	addi	sp,sp,48
    e8899c3e:	8082                	ret
  if (!NETCONN_MBOX_VALID(conn, &conn->acceptmbox)) {
    e8899c40:	751c                	ld	a5,40(a0)
    e8899c42:	d7f5                	beqz	a5,e8899c2e <accept_function+0xe>
    e8899c44:	04054783          	lbu	a5,64(a0)
    e8899c48:	8ba1                	andi	a5,a5,8
    e8899c4a:	f3f5                	bnez	a5,e8899c2e <accept_function+0xe>
    e8899c4c:	892e                	mv	s2,a1
    e8899c4e:	842a                	mv	s0,a0
  if (newpcb == NULL) {
    e8899c50:	02850993          	addi	s3,a0,40
    e8899c54:	e185                	bnez	a1,e8899c74 <accept_function+0x54>
    if (sys_mbox_trypost(&conn->acceptmbox, lwip_netconn_err_to_msg(ERR_ABRT)) == ERR_OK) {
    e8899c56:	00039597          	auipc	a1,0x39
    e8899c5a:	68e58593          	addi	a1,a1,1678 # e88d32e4 <netconn_aborted>
    e8899c5e:	854e                	mv	a0,s3
    e8899c60:	866fe0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
    e8899c64:	f569                	bnez	a0,e8899c2e <accept_function+0xe>
      API_EVENT(conn, NETCONN_EVT_RCVPLUS, 0);
    e8899c66:	683c                	ld	a5,80(s0)
    e8899c68:	d3f9                	beqz	a5,e8899c2e <accept_function+0xe>
    e8899c6a:	4601                	li	a2,0
    e8899c6c:	4581                	li	a1,0
    e8899c6e:	8522                	mv	a0,s0
    e8899c70:	9782                	jalr	a5
    e8899c72:	bf75                	j	e8899c2e <accept_function+0xe>
  LWIP_ASSERT("expect newpcb == NULL or err == ERR_OK", err == ERR_OK);
    e8899c74:	c61d                	beqz	a2,e8899ca2 <accept_function+0x82>
    e8899c76:	02f00593          	li	a1,47
    e8899c7a:	00039517          	auipc	a0,0x39
    e8899c7e:	7de50513          	addi	a0,a0,2014 # e88d3458 <netconn_reset+0x84>
    e8899c82:	ef6e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899c86:	00150693          	addi	a3,a0,1
    e8899c8a:	22a00613          	li	a2,554
    e8899c8e:	00039597          	auipc	a1,0x39
    e8899c92:	2da58593          	addi	a1,a1,730 # e88d2f68 <CSWTCH.34+0x18>
    e8899c96:	00035517          	auipc	a0,0x35
    e8899c9a:	41a50513          	addi	a0,a0,1050 # e88cf0b0 <kSinTable1024+0x900>
    e8899c9e:	e28e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
  newconn = netconn_alloc(conn->type, conn->callback);
    e8899ca2:	682c                	ld	a1,80(s0)
    e8899ca4:	00044503          	lbu	a0,0(s0)
    e8899ca8:	cddff0ef          	jal	ra,e8899984 <netconn_alloc>
    e8899cac:	84aa                	mv	s1,a0
  if (newconn == NULL) {
    e8899cae:	e10d                	bnez	a0,e8899cd0 <accept_function+0xb0>
    if (sys_mbox_trypost(&conn->acceptmbox, lwip_netconn_err_to_msg(ERR_ABRT)) == ERR_OK) {
    e8899cb0:	00039597          	auipc	a1,0x39
    e8899cb4:	63458593          	addi	a1,a1,1588 # e88d32e4 <netconn_aborted>
    e8899cb8:	854e                	mv	a0,s3
    e8899cba:	80cfe0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
    return ERR_MEM;
    e8899cbe:	597d                	li	s2,-1
    if (sys_mbox_trypost(&conn->acceptmbox, lwip_netconn_err_to_msg(ERR_ABRT)) == ERR_OK) {
    e8899cc0:	f925                	bnez	a0,e8899c30 <accept_function+0x10>
    API_EVENT(conn, NETCONN_EVT_RCVPLUS, 0);
    e8899cc2:	683c                	ld	a5,80(s0)
    e8899cc4:	d7b5                	beqz	a5,e8899c30 <accept_function+0x10>
    e8899cc6:	4601                	li	a2,0
    e8899cc8:	4581                	li	a1,0
    e8899cca:	8522                	mv	a0,s0
    e8899ccc:	9782                	jalr	a5
    e8899cce:	b78d                	j	e8899c30 <accept_function+0x10>
  newconn->pcb.tcp = newpcb;
    e8899cd0:	01253423          	sd	s2,8(a0)
  setup_tcp(newconn);
    e8899cd4:	e79fe0ef          	jal	ra,e8898b4c <setup_tcp>
  if (sys_mbox_trypost(&conn->acceptmbox, newconn) != ERR_OK) {
    e8899cd8:	85a6                	mv	a1,s1
    e8899cda:	854e                	mv	a0,s3
    e8899cdc:	febfd0ef          	jal	ra,e8897cc6 <sys_mbox_trypost>
    e8899ce0:	892a                	mv	s2,a0
    e8899ce2:	d165                	beqz	a0,e8899cc2 <accept_function+0xa2>
    struct tcp_pcb *pcb = newconn->pcb.tcp;
    e8899ce4:	6480                	ld	s0,8(s1)
    tcp_arg(pcb, NULL);
    e8899ce6:	4581                	li	a1,0
    return ERR_MEM;
    e8899ce8:	597d                	li	s2,-1
    tcp_arg(pcb, NULL);
    e8899cea:	8522                	mv	a0,s0
    e8899cec:	8e2f70ef          	jal	ra,e8890dce <tcp_arg>
    tcp_recv(pcb, NULL);
    e8899cf0:	8522                	mv	a0,s0
    e8899cf2:	4581                	li	a1,0
    e8899cf4:	8e0f70ef          	jal	ra,e8890dd4 <tcp_recv>
    tcp_sent(pcb, NULL);
    e8899cf8:	8522                	mv	a0,s0
    e8899cfa:	4581                	li	a1,0
    e8899cfc:	92af70ef          	jal	ra,e8890e26 <tcp_sent>
    tcp_poll(pcb, NULL, 0);
    e8899d00:	4601                	li	a2,0
    e8899d02:	8522                	mv	a0,s0
    e8899d04:	4581                	li	a1,0
    e8899d06:	9d6f70ef          	jal	ra,e8890edc <tcp_poll>
    tcp_err(pcb, NULL);
    e8899d0a:	4581                	li	a1,0
    e8899d0c:	8522                	mv	a0,s0
    e8899d0e:	96af70ef          	jal	ra,e8890e78 <tcp_err>
    sys_mbox_free(&newconn->recvmbox);
    e8899d12:	02048413          	addi	s0,s1,32
    e8899d16:	8522                	mv	a0,s0
    newconn->pcb.tcp = NULL;
    e8899d18:	0004b423          	sd	zero,8(s1)
    sys_mbox_free(&newconn->recvmbox);
    e8899d1c:	f73fd0ef          	jal	ra,e8897c8e <sys_mbox_free>
    sys_mbox_set_invalid(&newconn->recvmbox);
    e8899d20:	8522                	mv	a0,s0
    e8899d22:	f95fd0ef          	jal	ra,e8897cb6 <sys_mbox_set_invalid>
    netconn_free(newconn);
    e8899d26:	8526                	mv	a0,s1
    e8899d28:	d35ff0ef          	jal	ra,e8899a5c <netconn_free>
    return ERR_MEM;
    e8899d2c:	b711                	j	e8899c30 <accept_function+0x10>

00000000e8899d2e <lwip_netconn_do_delconn>:
{
    e8899d2e:	1101                	addi	sp,sp,-32
    e8899d30:	e422                	sd	s0,8(sp)
    e8899d32:	ec06                	sd	ra,24(sp)
    e8899d34:	e826                	sd	s1,16(sp)
  enum netconn_state state = msg->conn->state;
    e8899d36:	611c                	ld	a5,0(a0)
{
    e8899d38:	842a                	mv	s0,a0
  enum netconn_state state = msg->conn->state;
    e8899d3a:	0017c483          	lbu	s1,1(a5) # ffffffff80000001 <__DRAM0_INF_BASE+0xfffffffe80010001>
  LWIP_ASSERT("netconn state error", /* this only happens for TCP netconns */
    e8899d3e:	ccf9                	beqz	s1,e8899e1c <lwip_netconn_do_delconn+0xee>
    e8899d40:	0007c783          	lbu	a5,0(a5)
    e8899d44:	4741                	li	a4,16
    e8899d46:	0f07f793          	andi	a5,a5,240
    e8899d4a:	02e78863          	beq	a5,a4,e8899d7a <lwip_netconn_do_delconn+0x4c>
    e8899d4e:	02f00593          	li	a1,47
    e8899d52:	00039517          	auipc	a0,0x39
    e8899d56:	70650513          	addi	a0,a0,1798 # e88d3458 <netconn_reset+0x84>
    e8899d5a:	e1ee20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899d5e:	00150693          	addi	a3,a0,1
    e8899d62:	45f00613          	li	a2,1119
    e8899d66:	00039597          	auipc	a1,0x39
    e8899d6a:	3c258593          	addi	a1,a1,962 # e88d3128 <CSWTCH.34+0x1d8>
    e8899d6e:	00035517          	auipc	a0,0x35
    e8899d72:	34250513          	addi	a0,a0,834 # e88cf0b0 <kSinTable1024+0x900>
    e8899d76:	d50e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    if ((state == NETCONN_WRITE) ||
    e8899d7a:	4785                	li	a5,1
    e8899d7c:	6018                	ld	a4,0(s0)
    e8899d7e:	08f49863          	bne	s1,a5,e8899e0e <lwip_netconn_do_delconn+0xe0>
      LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
    e8899d82:	673c                	ld	a5,72(a4)
    e8899d84:	e79d                	bnez	a5,e8899db2 <lwip_netconn_do_delconn+0x84>
    e8899d86:	02f00593          	li	a1,47
    e8899d8a:	00039517          	auipc	a0,0x39
    e8899d8e:	6ce50513          	addi	a0,a0,1742 # e88d3458 <netconn_reset+0x84>
    e8899d92:	de6e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899d96:	00150693          	addi	a3,a0,1
    e8899d9a:	46700613          	li	a2,1127
    e8899d9e:	00039597          	auipc	a1,0x39
    e8899da2:	3a258593          	addi	a1,a1,930 # e88d3140 <CSWTCH.34+0x1f0>
    e8899da6:	00035517          	auipc	a0,0x35
    e8899daa:	30a50513          	addi	a0,a0,778 # e88cf0b0 <kSinTable1024+0x900>
    e8899dae:	d18e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
      op_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
    e8899db2:	601c                	ld	a5,0(s0)
      msg->conn->current_msg->err = ERR_CLSD;
    e8899db4:	5745                	li	a4,-15
      op_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
    e8899db6:	67bc                	ld	a5,72(a5)
    e8899db8:	6388                	ld	a0,0(a5)
      msg->conn->current_msg->err = ERR_CLSD;
    e8899dba:	00e78423          	sb	a4,8(a5)
      msg->conn->current_msg = NULL;
    e8899dbe:	601c                	ld	a5,0(s0)
      sys_sem_signal(op_completed_sem);
    e8899dc0:	0561                	addi	a0,a0,24
      msg->conn->current_msg = NULL;
    e8899dc2:	0407b423          	sd	zero,72(a5)
      msg->conn->state = NETCONN_NONE;
    e8899dc6:	601c                	ld	a5,0(s0)
    e8899dc8:	000780a3          	sb	zero,1(a5)
      sys_sem_signal(op_completed_sem);
    e8899dcc:	dbbfd0ef          	jal	ra,e8897b86 <sys_sem_signal>
    LWIP_ASSERT("blocking connect in progress",
    e8899dd0:	478d                	li	a5,3
    e8899dd2:	04f49563          	bne	s1,a5,e8899e1c <lwip_netconn_do_delconn+0xee>
    e8899dd6:	601c                	ld	a5,0(s0)
    e8899dd8:	0407c783          	lbu	a5,64(a5)
    e8899ddc:	8b91                	andi	a5,a5,4
    e8899dde:	ef9d                	bnez	a5,e8899e1c <lwip_netconn_do_delconn+0xee>
    e8899de0:	02f00593          	li	a1,47
    e8899de4:	00039517          	auipc	a0,0x39
    e8899de8:	67450513          	addi	a0,a0,1652 # e88d3458 <netconn_reset+0x84>
    e8899dec:	d8ce20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899df0:	00150693          	addi	a3,a0,1
    e8899df4:	47b00613          	li	a2,1147
    e8899df8:	00039597          	auipc	a1,0x39
    e8899dfc:	36858593          	addi	a1,a1,872 # e88d3160 <CSWTCH.34+0x210>
    e8899e00:	00035517          	auipc	a0,0x35
    e8899e04:	2b050513          	addi	a0,a0,688 # e88cf0b0 <kSinTable1024+0x900>
    e8899e08:	cbee20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e8899e0c:	a801                	j	e8899e1c <lwip_netconn_do_delconn+0xee>
    if ((state == NETCONN_WRITE) ||
    e8899e0e:	478d                	li	a5,3
    e8899e10:	00f49663          	bne	s1,a5,e8899e1c <lwip_netconn_do_delconn+0xee>
        ((state == NETCONN_CONNECT) && !IN_NONBLOCKING_CONNECT(msg->conn))) {
    e8899e14:	04074783          	lbu	a5,64(a4)
    e8899e18:	8b91                	andi	a5,a5,4
    e8899e1a:	d7a5                	beqz	a5,e8899d82 <lwip_netconn_do_delconn+0x54>
    netconn_mark_mbox_invalid(msg->conn);
    e8899e1c:	6008                	ld	a0,0(s0)
    msg->err = ERR_OK;
    e8899e1e:	00040423          	sb	zero,8(s0)
    netconn_mark_mbox_invalid(msg->conn);
    e8899e22:	adffe0ef          	jal	ra,e8898900 <netconn_mark_mbox_invalid>
    if (msg->conn->pcb.tcp != NULL) {
    e8899e26:	6018                	ld	a4,0(s0)
    e8899e28:	6708                	ld	a0,8(a4)
    e8899e2a:	10050763          	beqz	a0,e8899f38 <lwip_netconn_do_delconn+0x20a>
      switch (NETCONNTYPE_GROUP(msg->conn->type)) {
    e8899e2e:	00074783          	lbu	a5,0(a4)
    e8899e32:	02000693          	li	a3,32
    e8899e36:	0f07f793          	andi	a5,a5,240
    e8899e3a:	12d78163          	beq	a5,a3,e8899f5c <lwip_netconn_do_delconn+0x22e>
    e8899e3e:	04000693          	li	a3,64
    e8899e42:	0ed78663          	beq	a5,a3,e8899f2e <lwip_netconn_do_delconn+0x200>
    e8899e46:	46c1                	li	a3,16
    e8899e48:	0ed79563          	bne	a5,a3,e8899f32 <lwip_netconn_do_delconn+0x204>
          LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
    e8899e4c:	673c                	ld	a5,72(a4)
    e8899e4e:	c79d                	beqz	a5,e8899e7c <lwip_netconn_do_delconn+0x14e>
    e8899e50:	02f00593          	li	a1,47
    e8899e54:	00039517          	auipc	a0,0x39
    e8899e58:	60450513          	addi	a0,a0,1540 # e88d3458 <netconn_reset+0x84>
    e8899e5c:	d1ce20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899e60:	00150693          	addi	a3,a0,1
    e8899e64:	49400613          	li	a2,1172
    e8899e68:	00039597          	auipc	a1,0x39
    e8899e6c:	31858593          	addi	a1,a1,792 # e88d3180 <CSWTCH.34+0x230>
    e8899e70:	00035517          	auipc	a0,0x35
    e8899e74:	24050513          	addi	a0,a0,576 # e88cf0b0 <kSinTable1024+0x900>
    e8899e78:	c4ee20ef          	jal	ra,e887c2c6 <eLIBs_printf>
          msg->conn->state = NETCONN_CLOSE;
    e8899e7c:	601c                	ld	a5,0(s0)
    e8899e7e:	4711                	li	a4,4
          if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
    e8899e80:	4581                	li	a1,0
          msg->conn->state = NETCONN_CLOSE;
    e8899e82:	00e780a3          	sb	a4,1(a5)
          msg->msg.sd.shut = NETCONN_SHUT_RDWR;
    e8899e86:	478d                	li	a5,3
    e8899e88:	00f40823          	sb	a5,16(s0)
          msg->conn->current_msg = msg;
    e8899e8c:	601c                	ld	a5,0(s0)
    e8899e8e:	e7a0                	sd	s0,72(a5)
          if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
    e8899e90:	6008                	ld	a0,0(s0)
    e8899e92:	97eff0ef          	jal	ra,e8899010 <lwip_netconn_do_close_internal>
    e8899e96:	c971                	beqz	a0,e8899f6a <lwip_netconn_do_delconn+0x23c>
            LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
    e8899e98:	601c                	ld	a5,0(s0)
    e8899e9a:	0017c703          	lbu	a4,1(a5)
    e8899e9e:	4791                	li	a5,4
    e8899ea0:	02f70863          	beq	a4,a5,e8899ed0 <lwip_netconn_do_delconn+0x1a2>
    e8899ea4:	02f00593          	li	a1,47
    e8899ea8:	00039517          	auipc	a0,0x39
    e8899eac:	5b050513          	addi	a0,a0,1456 # e88d3458 <netconn_reset+0x84>
    e8899eb0:	cc8e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e8899eb4:	00150693          	addi	a3,a0,1
    e8899eb8:	49a00613          	li	a2,1178
    e8899ebc:	00039597          	auipc	a1,0x39
    e8899ec0:	2e458593          	addi	a1,a1,740 # e88d31a0 <CSWTCH.34+0x250>
    e8899ec4:	00035517          	auipc	a0,0x35
    e8899ec8:	1ec50513          	addi	a0,a0,492 # e88cf0b0 <kSinTable1024+0x900>
    e8899ecc:	bfae20ef          	jal	ra,e887c2c6 <eLIBs_printf>
            UNLOCK_TCPIP_CORE();
    e8899ed0:	0004b517          	auipc	a0,0x4b
    e8899ed4:	70850513          	addi	a0,a0,1800 # e88e55d8 <lock_tcpip_core>
    e8899ed8:	d61fd0ef          	jal	ra,e8897c38 <sys_mutex_unlock>
            sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
    e8899edc:	6008                	ld	a0,0(s0)
    e8899ede:	4581                	li	a1,0
    e8899ee0:	0561                	addi	a0,a0,24
    e8899ee2:	cb1fd0ef          	jal	ra,e8897b92 <sys_arch_sem_wait>
            LOCK_TCPIP_CORE();
    e8899ee6:	0004b517          	auipc	a0,0x4b
    e8899eea:	6f250513          	addi	a0,a0,1778 # e88e55d8 <lock_tcpip_core>
    e8899eee:	d35fd0ef          	jal	ra,e8897c22 <sys_mutex_lock>
            LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
    e8899ef2:	601c                	ld	a5,0(s0)
    e8899ef4:	0017c783          	lbu	a5,1(a5)
    e8899ef8:	cbad                	beqz	a5,e8899f6a <lwip_netconn_do_delconn+0x23c>
    e8899efa:	02f00593          	li	a1,47
    e8899efe:	00039517          	auipc	a0,0x39
    e8899f02:	55a50513          	addi	a0,a0,1370 # e88d3458 <netconn_reset+0x84>
    e8899f06:	c72e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
}
    e8899f0a:	6422                	ld	s0,8(sp)
    e8899f0c:	60e2                	ld	ra,24(sp)
    e8899f0e:	64c2                	ld	s1,16(sp)
            LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
    e8899f10:	00150693          	addi	a3,a0,1
    e8899f14:	49e00613          	li	a2,1182
    e8899f18:	00039597          	auipc	a1,0x39
    e8899f1c:	28858593          	addi	a1,a1,648 # e88d31a0 <CSWTCH.34+0x250>
    e8899f20:	00035517          	auipc	a0,0x35
    e8899f24:	19050513          	addi	a0,a0,400 # e88cf0b0 <kSinTable1024+0x900>
}
    e8899f28:	6105                	addi	sp,sp,32
            LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
    e8899f2a:	b9ce206f          	j	e887c2c6 <eLIBs_printf>
          raw_remove(msg->conn->pcb.raw);
    e8899f2e:	d40f60ef          	jal	ra,e889046e <raw_remove>
      msg->conn->pcb.tcp = NULL;
    e8899f32:	601c                	ld	a5,0(s0)
    e8899f34:	0007b423          	sd	zero,8(a5)
    API_EVENT(msg->conn, NETCONN_EVT_RCVPLUS, 0);
    e8899f38:	6008                	ld	a0,0(s0)
    e8899f3a:	693c                	ld	a5,80(a0)
    e8899f3c:	c781                	beqz	a5,e8899f44 <lwip_netconn_do_delconn+0x216>
    e8899f3e:	4601                	li	a2,0
    e8899f40:	4581                	li	a1,0
    e8899f42:	9782                	jalr	a5
    API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);
    e8899f44:	6008                	ld	a0,0(s0)
    e8899f46:	05053303          	ld	t1,80(a0)
    e8899f4a:	02030063          	beqz	t1,e8899f6a <lwip_netconn_do_delconn+0x23c>
}
    e8899f4e:	6422                	ld	s0,8(sp)
    e8899f50:	60e2                	ld	ra,24(sp)
    e8899f52:	64c2                	ld	s1,16(sp)
    API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);
    e8899f54:	4601                	li	a2,0
    e8899f56:	4589                	li	a1,2
}
    e8899f58:	6105                	addi	sp,sp,32
    API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);
    e8899f5a:	8302                	jr	t1
          msg->conn->pcb.udp->recv_arg = NULL;
    e8899f5c:	04053c23          	sd	zero,88(a0)
          udp_remove(msg->conn->pcb.udp);
    e8899f60:	601c                	ld	a5,0(s0)
    e8899f62:	6788                	ld	a0,8(a5)
    e8899f64:	fbefd0ef          	jal	ra,e8897722 <udp_remove>
          break;
    e8899f68:	b7e9                	j	e8899f32 <lwip_netconn_do_delconn+0x204>
}
    e8899f6a:	60e2                	ld	ra,24(sp)
    e8899f6c:	6422                	ld	s0,8(sp)
    e8899f6e:	64c2                	ld	s1,16(sp)
    e8899f70:	6105                	addi	sp,sp,32
    e8899f72:	8082                	ret

00000000e8899f74 <lwip_netconn_do_bind>:
{
    e8899f74:	1141                	addi	sp,sp,-16
    e8899f76:	e022                	sd	s0,0(sp)
    e8899f78:	e406                	sd	ra,8(sp)
  if (msg->conn->pcb.tcp != NULL) {
    e8899f7a:	6118                	ld	a4,0(a0)
{
    e8899f7c:	842a                	mv	s0,a0
    err = ERR_VAL;
    e8899f7e:	57e9                	li	a5,-6
  if (msg->conn->pcb.tcp != NULL) {
    e8899f80:	6708                	ld	a0,8(a4)
    e8899f82:	c10d                	beqz	a0,e8899fa4 <lwip_netconn_do_bind+0x30>
    switch (NETCONNTYPE_GROUP(msg->conn->type)) {
    e8899f84:	00074783          	lbu	a5,0(a4)
    e8899f88:	02000713          	li	a4,32
    e8899f8c:	0f07f793          	andi	a5,a5,240
    e8899f90:	02e78563          	beq	a5,a4,e8899fba <lwip_netconn_do_bind+0x46>
    e8899f94:	04000713          	li	a4,64
    e8899f98:	00e78c63          	beq	a5,a4,e8899fb0 <lwip_netconn_do_bind+0x3c>
    e8899f9c:	4741                	li	a4,16
    e8899f9e:	02e78463          	beq	a5,a4,e8899fc6 <lwip_netconn_do_bind+0x52>
        err = ERR_VAL;
    e8899fa2:	57e9                	li	a5,-6
  msg->err = err;
    e8899fa4:	00f40423          	sb	a5,8(s0)
}
    e8899fa8:	60a2                	ld	ra,8(sp)
    e8899faa:	6402                	ld	s0,0(sp)
    e8899fac:	0141                	addi	sp,sp,16
    e8899fae:	8082                	ret
        err = raw_bind(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
    e8899fb0:	680c                	ld	a1,16(s0)
    e8899fb2:	febf50ef          	jal	ra,e888ff9c <raw_bind>
        err = tcp_bind(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
    e8899fb6:	87aa                	mv	a5,a0
        break;
    e8899fb8:	b7f5                	j	e8899fa4 <lwip_netconn_do_bind+0x30>
        err = udp_bind(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
    e8899fba:	01845603          	lhu	a2,24(s0)
    e8899fbe:	680c                	ld	a1,16(s0)
    e8899fc0:	c6dfc0ef          	jal	ra,e8896c2c <udp_bind>
    e8899fc4:	bfcd                	j	e8899fb6 <lwip_netconn_do_bind+0x42>
        err = tcp_bind(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
    e8899fc6:	01845603          	lhu	a2,24(s0)
    e8899fca:	680c                	ld	a1,16(s0)
    e8899fcc:	fbcf60ef          	jal	ra,e8890788 <tcp_bind>
    e8899fd0:	b7dd                	j	e8899fb6 <lwip_netconn_do_bind+0x42>

00000000e8899fd2 <lwip_netconn_do_connect>:
{
    e8899fd2:	1101                	addi	sp,sp,-32
    e8899fd4:	e422                	sd	s0,8(sp)
    e8899fd6:	ec06                	sd	ra,24(sp)
    e8899fd8:	e826                	sd	s1,16(sp)
  if (msg->conn->pcb.tcp == NULL) {
    e8899fda:	6118                	ld	a4,0(a0)
{
    e8899fdc:	842a                	mv	s0,a0
  if (msg->conn->pcb.tcp == NULL) {
    e8899fde:	6708                	ld	a0,8(a4)
    e8899fe0:	16050263          	beqz	a0,e889a144 <lwip_netconn_do_connect+0x172>
    switch (NETCONNTYPE_GROUP(msg->conn->type)) {
    e8899fe4:	00074783          	lbu	a5,0(a4)
    e8899fe8:	02000693          	li	a3,32
    e8899fec:	0f07f793          	andi	a5,a5,240
    e8899ff0:	06d78963          	beq	a5,a3,e889a062 <lwip_netconn_do_connect+0x90>
    e8899ff4:	04000693          	li	a3,64
    e8899ff8:	04d78b63          	beq	a5,a3,e889a04e <lwip_netconn_do_connect+0x7c>
    e8899ffc:	46c1                	li	a3,16
    e8899ffe:	10d79b63          	bne	a5,a3,e889a114 <lwip_netconn_do_connect+0x142>
        if (msg->conn->state == NETCONN_CONNECT) {
    e889a002:	00174783          	lbu	a5,1(a4)
    e889a006:	448d                	li	s1,3
    e889a008:	14978063          	beq	a5,s1,e889a148 <lwip_netconn_do_connect+0x176>
          err = ERR_ISCONN;
    e889a00c:	5559                	li	a0,-10
        } else if (msg->conn->state != NETCONN_NONE) {
    e889a00e:	e3b9                	bnez	a5,e889a054 <lwip_netconn_do_connect+0x82>
          setup_tcp(msg->conn);
    e889a010:	853a                	mv	a0,a4
    e889a012:	b3bfe0ef          	jal	ra,e8898b4c <setup_tcp>
          err = tcp_connect(msg->conn->pcb.tcp, API_EXPR_REF(msg->msg.bc.ipaddr),
    e889a016:	601c                	ld	a5,0(s0)
    e889a018:	01845603          	lhu	a2,24(s0)
    e889a01c:	680c                	ld	a1,16(s0)
    e889a01e:	6788                	ld	a0,8(a5)
    e889a020:	fffff697          	auipc	a3,0xfffff
    e889a024:	b7c68693          	addi	a3,a3,-1156 # e8898b9c <lwip_netconn_do_connected>
    e889a028:	856f70ef          	jal	ra,e889107e <tcp_connect>
          if (err == ERR_OK) {
    e889a02c:	e505                	bnez	a0,e889a054 <lwip_netconn_do_connect+0x82>
            u8_t non_blocking = netconn_is_nonblocking(msg->conn);
    e889a02e:	601c                	ld	a5,0(s0)
    e889a030:	0407c703          	lbu	a4,64(a5)
            msg->conn->state = NETCONN_CONNECT;
    e889a034:	009780a3          	sb	s1,1(a5)
    e889a038:	601c                	ld	a5,0(s0)
    e889a03a:	8b09                	andi	a4,a4,2
            SET_NONBLOCKING_CONNECT(msg->conn, non_blocking);
    e889a03c:	cb0d                	beqz	a4,e889a06e <lwip_netconn_do_connect+0x9c>
    e889a03e:	0407c703          	lbu	a4,64(a5)
              err = ERR_INPROGRESS;
    e889a042:	556d                	li	a0,-5
            SET_NONBLOCKING_CONNECT(msg->conn, non_blocking);
    e889a044:	00476713          	ori	a4,a4,4
    e889a048:	04e78023          	sb	a4,64(a5)
            if (non_blocking) {
    e889a04c:	a021                	j	e889a054 <lwip_netconn_do_connect+0x82>
        err = raw_connect(msg->conn->pcb.raw, API_EXPR_REF(msg->msg.bc.ipaddr));
    e889a04e:	680c                	ld	a1,16(s0)
    e889a050:	81ef60ef          	jal	ra,e889006e <raw_connect>
  msg->err = err;
    e889a054:	00a40423          	sb	a0,8(s0)
}
    e889a058:	60e2                	ld	ra,24(sp)
    e889a05a:	6422                	ld	s0,8(sp)
    e889a05c:	64c2                	ld	s1,16(sp)
    e889a05e:	6105                	addi	sp,sp,32
    e889a060:	8082                	ret
        err = udp_connect(msg->conn->pcb.udp, API_EXPR_REF(msg->msg.bc.ipaddr), msg->msg.bc.port);
    e889a062:	01845603          	lhu	a2,24(s0)
    e889a066:	680c                	ld	a1,16(s0)
    e889a068:	c6efd0ef          	jal	ra,e88974d6 <udp_connect>
        break;
    e889a06c:	b7e5                	j	e889a054 <lwip_netconn_do_connect+0x82>
            SET_NONBLOCKING_CONNECT(msg->conn, non_blocking);
    e889a06e:	0407c703          	lbu	a4,64(a5)
    e889a072:	9b6d                	andi	a4,a4,-5
    e889a074:	04e78023          	sb	a4,64(a5)
              msg->conn->current_msg = msg;
    e889a078:	601c                	ld	a5,0(s0)
    e889a07a:	e7a0                	sd	s0,72(a5)
              LWIP_ASSERT("state!", msg->conn->state == NETCONN_CONNECT);
    e889a07c:	601c                	ld	a5,0(s0)
    e889a07e:	0017c783          	lbu	a5,1(a5)
    e889a082:	02978863          	beq	a5,s1,e889a0b2 <lwip_netconn_do_connect+0xe0>
    e889a086:	02f00593          	li	a1,47
    e889a08a:	00039517          	auipc	a0,0x39
    e889a08e:	3ce50513          	addi	a0,a0,974 # e88d3458 <netconn_reset+0x84>
    e889a092:	ae6e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a096:	00150693          	addi	a3,a0,1
    e889a09a:	57000613          	li	a2,1392
    e889a09e:	00039597          	auipc	a1,0x39
    e889a0a2:	10258593          	addi	a1,a1,258 # e88d31a0 <CSWTCH.34+0x250>
    e889a0a6:	00035517          	auipc	a0,0x35
    e889a0aa:	00a50513          	addi	a0,a0,10 # e88cf0b0 <kSinTable1024+0x900>
    e889a0ae:	a18e20ef          	jal	ra,e887c2c6 <eLIBs_printf>
              UNLOCK_TCPIP_CORE();
    e889a0b2:	0004b517          	auipc	a0,0x4b
    e889a0b6:	52650513          	addi	a0,a0,1318 # e88e55d8 <lock_tcpip_core>
    e889a0ba:	b7ffd0ef          	jal	ra,e8897c38 <sys_mutex_unlock>
              sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
    e889a0be:	6008                	ld	a0,0(s0)
    e889a0c0:	4581                	li	a1,0
    e889a0c2:	0561                	addi	a0,a0,24
    e889a0c4:	acffd0ef          	jal	ra,e8897b92 <sys_arch_sem_wait>
              LOCK_TCPIP_CORE();
    e889a0c8:	0004b517          	auipc	a0,0x4b
    e889a0cc:	51050513          	addi	a0,a0,1296 # e88e55d8 <lock_tcpip_core>
    e889a0d0:	b53fd0ef          	jal	ra,e8897c22 <sys_mutex_lock>
              LWIP_ASSERT("state!", msg->conn->state != NETCONN_CONNECT);
    e889a0d4:	601c                	ld	a5,0(s0)
    e889a0d6:	0017c703          	lbu	a4,1(a5)
    e889a0da:	478d                	li	a5,3
    e889a0dc:	f6f71ee3          	bne	a4,a5,e889a058 <lwip_netconn_do_connect+0x86>
    e889a0e0:	02f00593          	li	a1,47
    e889a0e4:	00039517          	auipc	a0,0x39
    e889a0e8:	37450513          	addi	a0,a0,884 # e88d3458 <netconn_reset+0x84>
    e889a0ec:	a8ce20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
}
    e889a0f0:	6422                	ld	s0,8(sp)
    e889a0f2:	60e2                	ld	ra,24(sp)
    e889a0f4:	64c2                	ld	s1,16(sp)
              LWIP_ASSERT("state!", msg->conn->state != NETCONN_CONNECT);
    e889a0f6:	00150693          	addi	a3,a0,1
    e889a0fa:	57400613          	li	a2,1396
    e889a0fe:	00039597          	auipc	a1,0x39
    e889a102:	0a258593          	addi	a1,a1,162 # e88d31a0 <CSWTCH.34+0x250>
    e889a106:	00035517          	auipc	a0,0x35
    e889a10a:	faa50513          	addi	a0,a0,-86 # e88cf0b0 <kSinTable1024+0x900>
}
    e889a10e:	6105                	addi	sp,sp,32
              LWIP_ASSERT("state!", msg->conn->state != NETCONN_CONNECT);
    e889a110:	9b6e206f          	j	e887c2c6 <eLIBs_printf>
        LWIP_ERROR("Invalid netconn type", 0, do {
    e889a114:	02f00593          	li	a1,47
    e889a118:	00039517          	auipc	a0,0x39
    e889a11c:	34050513          	addi	a0,a0,832 # e88d3458 <netconn_reset+0x84>
    e889a120:	a58e20ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a124:	00150693          	addi	a3,a0,1
    e889a128:	57f00613          	li	a2,1407
    e889a12c:	00039597          	auipc	a1,0x39
    e889a130:	f6458593          	addi	a1,a1,-156 # e88d3090 <CSWTCH.34+0x140>
    e889a134:	00035517          	auipc	a0,0x35
    e889a138:	f7c50513          	addi	a0,a0,-132 # e88cf0b0 <kSinTable1024+0x900>
    e889a13c:	98ae20ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889a140:	5569                	li	a0,-6
        break;
    e889a142:	bf09                	j	e889a054 <lwip_netconn_do_connect+0x82>
    err = ERR_CLSD;
    e889a144:	5545                	li	a0,-15
    e889a146:	b739                	j	e889a054 <lwip_netconn_do_connect+0x82>
          err = ERR_ALREADY;
    e889a148:	555d                	li	a0,-9
    e889a14a:	b729                	j	e889a054 <lwip_netconn_do_connect+0x82>

00000000e889a14c <lwip_netconn_do_disconnect>:
  if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
    e889a14c:	6118                	ld	a4,0(a0)
    e889a14e:	02000693          	li	a3,32
    e889a152:	00074783          	lbu	a5,0(a4)
    e889a156:	0f07f793          	andi	a5,a5,240
    e889a15a:	00d79f63          	bne	a5,a3,e889a178 <lwip_netconn_do_disconnect+0x2c>
{
    e889a15e:	1141                	addi	sp,sp,-16
    e889a160:	e022                	sd	s0,0(sp)
    e889a162:	e406                	sd	ra,8(sp)
    e889a164:	842a                	mv	s0,a0
    udp_disconnect(msg->conn->pcb.udp);
    e889a166:	6708                	ld	a0,8(a4)
    e889a168:	ccafd0ef          	jal	ra,e8897632 <udp_disconnect>
    msg->err = ERR_OK;
    e889a16c:	00040423          	sb	zero,8(s0)
}
    e889a170:	60a2                	ld	ra,8(sp)
    e889a172:	6402                	ld	s0,0(sp)
    e889a174:	0141                	addi	sp,sp,16
    e889a176:	8082                	ret
    msg->err = ERR_VAL;
    e889a178:	57e9                	li	a5,-6
    e889a17a:	00f50423          	sb	a5,8(a0)
  TCPIP_APIMSG_ACK(msg);
    e889a17e:	8082                	ret

00000000e889a180 <lwip_netconn_do_listen>:
{
    e889a180:	7179                	addi	sp,sp,-48
    e889a182:	ec22                	sd	s0,24(sp)
    e889a184:	f406                	sd	ra,40(sp)
    e889a186:	f026                	sd	s1,32(sp)
  if (msg->conn->pcb.tcp != NULL) {
    e889a188:	6110                	ld	a2,0(a0)
{
    e889a18a:	842a                	mv	s0,a0
  if (msg->conn->pcb.tcp != NULL) {
    e889a18c:	661c                	ld	a5,8(a2)
    e889a18e:	12078763          	beqz	a5,e889a2bc <lwip_netconn_do_listen+0x13c>
    if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
    e889a192:	00064703          	lbu	a4,0(a2)
    e889a196:	46c1                	li	a3,16
    e889a198:	0f077713          	andi	a4,a4,240
    e889a19c:	12d71263          	bne	a4,a3,e889a2c0 <lwip_netconn_do_listen+0x140>
      if (msg->conn->state == NETCONN_NONE) {
    e889a1a0:	00164703          	lbu	a4,1(a2)
    e889a1a4:	10071663          	bnez	a4,e889a2b0 <lwip_netconn_do_listen+0x130>
        if (msg->conn->pcb.tcp->state != CLOSED) {
    e889a1a8:	0487c703          	lbu	a4,72(a5)
    e889a1ac:	c709                	beqz	a4,e889a1b6 <lwip_netconn_do_listen+0x36>
          err = ERR_VAL;
    e889a1ae:	57e9                	li	a5,-6
      err = ERR_ARG;
    e889a1b0:	00f107a3          	sb	a5,15(sp)
    e889a1b4:	a0c9                	j	e889a276 <lwip_netconn_do_listen+0xf6>
          if (ip_addr_cmp(&msg->conn->pcb.ip->local_ip, IP6_ADDR_ANY) &&
    e889a1b6:	00036697          	auipc	a3,0x36
    e889a1ba:	13268693          	addi	a3,a3,306 # e88d02e8 <ip6_addr_any>
    e889a1be:	0147c583          	lbu	a1,20(a5)
    e889a1c2:	0146c703          	lbu	a4,20(a3)
    e889a1c6:	04b71b63          	bne	a4,a1,e889a21c <lwip_netconn_do_listen+0x9c>
    e889a1ca:	4819                	li	a6,6
    e889a1cc:	438c                	lw	a1,0(a5)
    e889a1ce:	4288                	lw	a0,0(a3)
    e889a1d0:	0b071c63          	bne	a4,a6,e889a288 <lwip_netconn_do_listen+0x108>
    e889a1d4:	4701                	li	a4,0
    e889a1d6:	02a59563          	bne	a1,a0,e889a200 <lwip_netconn_do_listen+0x80>
    e889a1da:	43c8                	lw	a0,4(a5)
    e889a1dc:	42cc                	lw	a1,4(a3)
    e889a1de:	02b51163          	bne	a0,a1,e889a200 <lwip_netconn_do_listen+0x80>
    e889a1e2:	4788                	lw	a0,8(a5)
    e889a1e4:	468c                	lw	a1,8(a3)
    e889a1e6:	00b51d63          	bne	a0,a1,e889a200 <lwip_netconn_do_listen+0x80>
    e889a1ea:	47c8                	lw	a0,12(a5)
    e889a1ec:	46cc                	lw	a1,12(a3)
    e889a1ee:	00b51963          	bne	a0,a1,e889a200 <lwip_netconn_do_listen+0x80>
    e889a1f2:	0107c703          	lbu	a4,16(a5)
    e889a1f6:	0106c683          	lbu	a3,16(a3)
    e889a1fa:	8f15                	sub	a4,a4,a3
    e889a1fc:	00173713          	seqz	a4,a4
    e889a200:	cf11                	beqz	a4,e889a21c <lwip_netconn_do_listen+0x9c>
    e889a202:	04064703          	lbu	a4,64(a2)
    e889a206:	02077713          	andi	a4,a4,32
    e889a20a:	eb09                	bnez	a4,e889a21c <lwip_netconn_do_listen+0x9c>
            IP_SET_TYPE_VAL(msg->conn->pcb.tcp->local_ip,  IPADDR_TYPE_ANY);
    e889a20c:	02e00713          	li	a4,46
    e889a210:	00e78a23          	sb	a4,20(a5)
            IP_SET_TYPE_VAL(msg->conn->pcb.tcp->remote_ip, IPADDR_TYPE_ANY);
    e889a214:	601c                	ld	a5,0(s0)
    e889a216:	679c                	ld	a5,8(a5)
    e889a218:	02e78623          	sb	a4,44(a5)
          lpcb = tcp_listen_with_backlog_and_err(msg->conn->pcb.tcp, backlog, &err);
    e889a21c:	601c                	ld	a5,0(s0)
    e889a21e:	00f10613          	addi	a2,sp,15
    e889a222:	0ff00593          	li	a1,255
    e889a226:	6788                	ld	a0,8(a5)
    e889a228:	feaf60ef          	jal	ra,e8890a12 <tcp_listen_with_backlog_and_err>
    e889a22c:	84aa                	mv	s1,a0
          if (lpcb == NULL) {
    e889a22e:	c521                	beqz	a0,e889a276 <lwip_netconn_do_listen+0xf6>
            if (sys_mbox_valid(&msg->conn->recvmbox)) {
    e889a230:	6008                	ld	a0,0(s0)
    e889a232:	711c                	ld	a5,32(a0)
    e889a234:	cb91                	beqz	a5,e889a248 <lwip_netconn_do_listen+0xc8>
              sys_mbox_free(&msg->conn->recvmbox);
    e889a236:	02050513          	addi	a0,a0,32
    e889a23a:	a55fd0ef          	jal	ra,e8897c8e <sys_mbox_free>
              sys_mbox_set_invalid(&msg->conn->recvmbox);
    e889a23e:	6008                	ld	a0,0(s0)
    e889a240:	02050513          	addi	a0,a0,32
    e889a244:	a73fd0ef          	jal	ra,e8897cb6 <sys_mbox_set_invalid>
            if (!sys_mbox_valid(&msg->conn->acceptmbox)) {
    e889a248:	6008                	ld	a0,0(s0)
            err = ERR_OK;
    e889a24a:	000107a3          	sb	zero,15(sp)
            if (!sys_mbox_valid(&msg->conn->acceptmbox)) {
    e889a24e:	751c                	ld	a5,40(a0)
    e889a250:	c3a9                	beqz	a5,e889a292 <lwip_netconn_do_listen+0x112>
              msg->conn->state = NETCONN_LISTEN;
    e889a252:	601c                	ld	a5,0(s0)
    e889a254:	4709                	li	a4,2
    e889a256:	00e780a3          	sb	a4,1(a5)
              msg->conn->pcb.tcp = lpcb;
    e889a25a:	601c                	ld	a5,0(s0)
    e889a25c:	e784                	sd	s1,8(a5)
              tcp_arg(msg->conn->pcb.tcp, msg->conn);
    e889a25e:	600c                	ld	a1,0(s0)
    e889a260:	6588                	ld	a0,8(a1)
    e889a262:	b6df60ef          	jal	ra,e8890dce <tcp_arg>
              tcp_accept(msg->conn->pcb.tcp, accept_function);
    e889a266:	601c                	ld	a5,0(s0)
    e889a268:	00000597          	auipc	a1,0x0
    e889a26c:	9b858593          	addi	a1,a1,-1608 # e8899c20 <accept_function>
    e889a270:	6788                	ld	a0,8(a5)
    e889a272:	c5bf60ef          	jal	ra,e8890ecc <tcp_accept>
  msg->err = err;
    e889a276:	00f14783          	lbu	a5,15(sp)
}
    e889a27a:	70a2                	ld	ra,40(sp)
    e889a27c:	7482                	ld	s1,32(sp)
  msg->err = err;
    e889a27e:	00f40423          	sb	a5,8(s0)
}
    e889a282:	6462                	ld	s0,24(sp)
    e889a284:	6145                	addi	sp,sp,48
    e889a286:	8082                	ret
          if (ip_addr_cmp(&msg->conn->pcb.ip->local_ip, IP6_ADDR_ANY) &&
    e889a288:	40a58733          	sub	a4,a1,a0
    e889a28c:	00173713          	seqz	a4,a4
    e889a290:	bf85                	j	e889a200 <lwip_netconn_do_listen+0x80>
              err = sys_mbox_new(&msg->conn->acceptmbox, DEFAULT_ACCEPTMBOX_SIZE);
    e889a292:	4581                	li	a1,0
    e889a294:	02850513          	addi	a0,a0,40
    e889a298:	9a7fd0ef          	jal	ra,e8897c3e <sys_mbox_new>
    e889a29c:	00a107a3          	sb	a0,15(sp)
            if (err == ERR_OK) {
    e889a2a0:	d94d                	beqz	a0,e889a252 <lwip_netconn_do_listen+0xd2>
              tcp_close(lpcb);
    e889a2a2:	8526                	mv	a0,s1
    e889a2a4:	b8bf70ef          	jal	ra,e8891e2e <tcp_close>
              msg->conn->pcb.tcp = NULL;
    e889a2a8:	601c                	ld	a5,0(s0)
    e889a2aa:	0007b423          	sd	zero,8(a5)
    e889a2ae:	b7e1                	j	e889a276 <lwip_netconn_do_listen+0xf6>
      } else if (msg->conn->state == NETCONN_LISTEN) {
    e889a2b0:	4789                	li	a5,2
    e889a2b2:	00f71563          	bne	a4,a5,e889a2bc <lwip_netconn_do_listen+0x13c>
        err = ERR_OK;
    e889a2b6:	000107a3          	sb	zero,15(sp)
        tcp_backlog_set(msg->conn->pcb.tcp, msg->msg.lb.backlog);
    e889a2ba:	bf75                	j	e889a276 <lwip_netconn_do_listen+0xf6>
        err = ERR_CONN;
    e889a2bc:	57d5                	li	a5,-11
    e889a2be:	bdcd                	j	e889a1b0 <lwip_netconn_do_listen+0x30>
      err = ERR_ARG;
    e889a2c0:	57c1                	li	a5,-16
    e889a2c2:	b5fd                	j	e889a1b0 <lwip_netconn_do_listen+0x30>

00000000e889a2c4 <lwip_netconn_do_send>:
{
    e889a2c4:	1141                	addi	sp,sp,-16
    e889a2c6:	e022                	sd	s0,0(sp)
    e889a2c8:	e406                	sd	ra,8(sp)
    e889a2ca:	842a                	mv	s0,a0
  err_t err = netconn_err(msg->conn);
    e889a2cc:	6108                	ld	a0,0(a0)
    e889a2ce:	d42fe0ef          	jal	ra,e8898810 <netconn_err>
  if (err == ERR_OK) {
    e889a2d2:	ed31                	bnez	a0,e889a32e <lwip_netconn_do_send+0x6a>
    if (msg->conn->pcb.tcp != NULL) {
    e889a2d4:	601c                	ld	a5,0(s0)
      err = ERR_CONN;
    e889a2d6:	5555                	li	a0,-11
    if (msg->conn->pcb.tcp != NULL) {
    e889a2d8:	0087b883          	ld	a7,8(a5)
    e889a2dc:	04088963          	beqz	a7,e889a32e <lwip_netconn_do_send+0x6a>
      switch (NETCONNTYPE_GROUP(msg->conn->type)) {
    e889a2e0:	0007c783          	lbu	a5,0(a5)
    e889a2e4:	02000713          	li	a4,32
    e889a2e8:	0f07f793          	andi	a5,a5,240
    e889a2ec:	04e78763          	beq	a5,a4,e889a33a <lwip_netconn_do_send+0x76>
    e889a2f0:	04000713          	li	a4,64
    e889a2f4:	02e79d63          	bne	a5,a4,e889a32e <lwip_netconn_do_send+0x6a>
          if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
    e889a2f8:	681c                	ld	a5,16(s0)
    e889a2fa:	863e                	mv	a2,a5
    e889a2fc:	7a86458b          	ldia	a1,(a2),8,1
    e889a300:	c605                	beqz	a2,e889a328 <lwip_netconn_do_send+0x64>
    e889a302:	0247c703          	lbu	a4,36(a5)
    e889a306:	4699                	li	a3,6
    e889a308:	00d71a63          	bne	a4,a3,e889a31c <lwip_netconn_do_send+0x58>
    e889a30c:	6b98                	ld	a4,16(a5)
    e889a30e:	e319                	bnez	a4,e889a314 <lwip_netconn_do_send+0x50>
    e889a310:	6f9c                	ld	a5,24(a5)
    e889a312:	cb99                	beqz	a5,e889a328 <lwip_netconn_do_send+0x64>
            err = raw_sendto(msg->conn->pcb.raw, msg->msg.b->p, &msg->msg.b->addr);
    e889a314:	8546                	mv	a0,a7
    e889a316:	858f60ef          	jal	ra,e889036e <raw_sendto>
    e889a31a:	a811                	j	e889a32e <lwip_netconn_do_send+0x6a>
          if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
    e889a31c:	4b9c                	lw	a5,16(a5)
    e889a31e:	c789                	beqz	a5,e889a328 <lwip_netconn_do_send+0x64>
    e889a320:	02e00793          	li	a5,46
    e889a324:	fef718e3          	bne	a4,a5,e889a314 <lwip_netconn_do_send+0x50>
            err = raw_send(msg->conn->pcb.raw, msg->msg.b->p);
    e889a328:	8546                	mv	a0,a7
    e889a32a:	93cf60ef          	jal	ra,e8890466 <raw_send>
  msg->err = err;
    e889a32e:	00a40423          	sb	a0,8(s0)
}
    e889a332:	60a2                	ld	ra,8(sp)
    e889a334:	6402                	ld	s0,0(sp)
    e889a336:	0141                	addi	sp,sp,16
    e889a338:	8082                	ret
          if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
    e889a33a:	01043803          	ld	a6,16(s0)
    e889a33e:	01080613          	addi	a2,a6,16 # 10010 <memcmp-0xe87efff0>
    e889a342:	02c85783          	lhu	a5,44(a6)
    e889a346:	02a84703          	lbu	a4,42(a6)
    e889a34a:	00083583          	ld	a1,0(a6)
    e889a34e:	ca15                	beqz	a2,e889a382 <lwip_netconn_do_send+0xbe>
    e889a350:	02484683          	lbu	a3,36(a6)
    e889a354:	4519                	li	a0,6
    e889a356:	00a69f63          	bne	a3,a0,e889a374 <lwip_netconn_do_send+0xb0>
    e889a35a:	01083683          	ld	a3,16(a6)
    e889a35e:	e681                	bnez	a3,e889a366 <lwip_netconn_do_send+0xa2>
    e889a360:	01883683          	ld	a3,24(a6)
    e889a364:	ce99                	beqz	a3,e889a382 <lwip_netconn_do_send+0xbe>
            err = udp_sendto_chksum(msg->conn->pcb.udp, msg->msg.b->p,
    e889a366:	02885683          	lhu	a3,40(a6)
    e889a36a:	8b09                	andi	a4,a4,2
    e889a36c:	8546                	mv	a0,a7
    e889a36e:	f4dfc0ef          	jal	ra,e88972ba <udp_sendto_chksum>
    e889a372:	bf75                	j	e889a32e <lwip_netconn_do_send+0x6a>
          if (ip_addr_isany(&msg->msg.b->addr) || IP_IS_ANY_TYPE_VAL(msg->msg.b->addr)) {
    e889a374:	01082503          	lw	a0,16(a6)
    e889a378:	c509                	beqz	a0,e889a382 <lwip_netconn_do_send+0xbe>
    e889a37a:	02e00513          	li	a0,46
    e889a37e:	fea694e3          	bne	a3,a0,e889a366 <lwip_netconn_do_send+0xa2>
            err = udp_send_chksum(msg->conn->pcb.udp, msg->msg.b->p,
    e889a382:	86be                	mv	a3,a5
    e889a384:	00277613          	andi	a2,a4,2
    e889a388:	8546                	mv	a0,a7
    e889a38a:	89cfd0ef          	jal	ra,e8897426 <udp_send_chksum>
    e889a38e:	b745                	j	e889a32e <lwip_netconn_do_send+0x6a>

00000000e889a390 <lwip_netconn_do_recv>:
  if (msg->conn->pcb.tcp != NULL) {
    e889a390:	611c                	ld	a5,0(a0)
  msg->err = ERR_OK;
    e889a392:	00050423          	sb	zero,8(a0)
  if (msg->conn->pcb.tcp != NULL) {
    e889a396:	6798                	ld	a4,8(a5)
    e889a398:	cb39                	beqz	a4,e889a3ee <lwip_netconn_do_recv+0x5e>
    if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
    e889a39a:	0007c783          	lbu	a5,0(a5)
    e889a39e:	4741                	li	a4,16
    e889a3a0:	0f07f793          	andi	a5,a5,240
    e889a3a4:	04e79563          	bne	a5,a4,e889a3ee <lwip_netconn_do_recv+0x5e>
{
    e889a3a8:	7179                	addi	sp,sp,-48
    e889a3aa:	f891540b          	sdd	s0,s1,(sp),0,4
    e889a3ae:	fb31590b          	sdd	s2,s3,(sp),1,4
    e889a3b2:	f052                	sd	s4,32(sp)
    e889a3b4:	f406                	sd	ra,40(sp)
      size_t remaining = msg->msg.r.len;
    e889a3b6:	6900                	ld	s0,16(a0)
    e889a3b8:	69c1                	lui	s3,0x10
    e889a3ba:	84aa                	mv	s1,a0
    e889a3bc:	fff98a13          	addi	s4,s3,-1 # ffff <memcmp-0xe87f0001>
        u16_t recved = (u16_t)((remaining > 0xffff) ? 0xffff : remaining);
    e889a3c0:	01343933          	sltu	s2,s0,s3
    e889a3c4:	87d2                	mv	a5,s4
    e889a3c6:	4324178b          	mvnez	a5,s0,s2
    e889a3ca:	893e                	mv	s2,a5
        tcp_recved(msg->conn->pcb.tcp, recved);
    e889a3cc:	609c                	ld	a5,0(s1)
    e889a3ce:	3c09358b          	extu	a1,s2,15,0
        remaining -= recved;
    e889a3d2:	41240433          	sub	s0,s0,s2
        tcp_recved(msg->conn->pcb.tcp, recved);
    e889a3d6:	6788                	ld	a0,8(a5)
    e889a3d8:	88df60ef          	jal	ra,e8890c64 <tcp_recved>
      } while (remaining != 0);
    e889a3dc:	f075                	bnez	s0,e889a3c0 <lwip_netconn_do_recv+0x30>
}
    e889a3de:	70a2                	ld	ra,40(sp)
    e889a3e0:	f891440b          	ldd	s0,s1,(sp),0,4
    e889a3e4:	7a02                	ld	s4,32(sp)
    e889a3e6:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889a3ea:	6145                	addi	sp,sp,48
    e889a3ec:	8082                	ret
    e889a3ee:	8082                	ret

00000000e889a3f0 <lwip_netconn_do_write>:
 *
 * @param m the api_msg pointing to the connection
 */
void
lwip_netconn_do_write(void *m)
{
    e889a3f0:	1141                	addi	sp,sp,-16
    e889a3f2:	e022                	sd	s0,0(sp)
    e889a3f4:	e406                	sd	ra,8(sp)
    e889a3f6:	842a                	mv	s0,a0
  struct api_msg *msg = (struct api_msg *)m;

  err_t err = netconn_err(msg->conn);
    e889a3f8:	6108                	ld	a0,0(a0)
    e889a3fa:	c16fe0ef          	jal	ra,e8898810 <netconn_err>
  if (err == ERR_OK) {
    e889a3fe:	12051a63          	bnez	a0,e889a532 <lwip_netconn_do_write+0x142>
    if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
    e889a402:	601c                	ld	a5,0(s0)
    e889a404:	46c1                	li	a3,16
#else /* LWIP_TCP */
      err = ERR_VAL;
#endif /* LWIP_TCP */
#if (LWIP_UDP || LWIP_RAW)
    } else {
      err = ERR_VAL;
    e889a406:	5569                	li	a0,-6
    if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) {
    e889a408:	0007c703          	lbu	a4,0(a5)
    e889a40c:	0f077713          	andi	a4,a4,240
    e889a410:	12d71163          	bne	a4,a3,e889a532 <lwip_netconn_do_write+0x142>
      if (msg->conn->state != NETCONN_NONE) {
    e889a414:	0017c703          	lbu	a4,1(a5)
    e889a418:	10071c63          	bnez	a4,e889a530 <lwip_netconn_do_write+0x140>
      } else if (msg->conn->pcb.tcp != NULL) {
    e889a41c:	6798                	ld	a4,8(a5)
    e889a41e:	12070063          	beqz	a4,e889a53e <lwip_netconn_do_write+0x14e>
        msg->conn->state = NETCONN_WRITE;
    e889a422:	4705                	li	a4,1
    e889a424:	00e780a3          	sb	a4,1(a5)
        LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
    e889a428:	601c                	ld	a5,0(s0)
    e889a42a:	67bc                	ld	a5,72(a5)
    e889a42c:	c79d                	beqz	a5,e889a45a <lwip_netconn_do_write+0x6a>
    e889a42e:	02f00593          	li	a1,47
    e889a432:	00039517          	auipc	a0,0x39
    e889a436:	02650513          	addi	a0,a0,38 # e88d3458 <netconn_reset+0x84>
    e889a43a:	f3fe10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a43e:	00150693          	addi	a3,a0,1
    e889a442:	72300613          	li	a2,1827
    e889a446:	00039597          	auipc	a1,0x39
    e889a44a:	d3a58593          	addi	a1,a1,-710 # e88d3180 <CSWTCH.34+0x230>
    e889a44e:	00035517          	auipc	a0,0x35
    e889a452:	c6250513          	addi	a0,a0,-926 # e88cf0b0 <kSinTable1024+0x900>
    e889a456:	e71e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
        LWIP_ASSERT("msg->msg.w.len != 0", msg->msg.w.len != 0);
    e889a45a:	741c                	ld	a5,40(s0)
    e889a45c:	e79d                	bnez	a5,e889a48a <lwip_netconn_do_write+0x9a>
    e889a45e:	02f00593          	li	a1,47
    e889a462:	00039517          	auipc	a0,0x39
    e889a466:	ff650513          	addi	a0,a0,-10 # e88d3458 <netconn_reset+0x84>
    e889a46a:	f0fe10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a46e:	00150693          	addi	a3,a0,1
    e889a472:	72400613          	li	a2,1828
    e889a476:	00039597          	auipc	a1,0x39
    e889a47a:	d4a58593          	addi	a1,a1,-694 # e88d31c0 <CSWTCH.34+0x270>
    e889a47e:	00035517          	auipc	a0,0x35
    e889a482:	c3250513          	addi	a0,a0,-974 # e88cf0b0 <kSinTable1024+0x900>
    e889a486:	e41e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
        msg->conn->current_msg = msg;
    e889a48a:	601c                	ld	a5,0(s0)
        if (lwip_netconn_do_writemore(msg->conn, 0) != ERR_OK) {
    e889a48c:	4581                	li	a1,0
        msg->conn->current_msg = msg;
    e889a48e:	e7a0                	sd	s0,72(a5)
        if (lwip_netconn_do_writemore(msg->conn, 0) != ERR_OK) {
    e889a490:	6008                	ld	a0,0(s0)
    e889a492:	825fe0ef          	jal	ra,e8898cb6 <lwip_netconn_do_writemore>
    e889a496:	c145                	beqz	a0,e889a536 <lwip_netconn_do_write+0x146>
          LWIP_ASSERT("state!", msg->conn->state == NETCONN_WRITE);
    e889a498:	601c                	ld	a5,0(s0)
    e889a49a:	0017c703          	lbu	a4,1(a5)
    e889a49e:	4785                	li	a5,1
    e889a4a0:	02f70863          	beq	a4,a5,e889a4d0 <lwip_netconn_do_write+0xe0>
    e889a4a4:	02f00593          	li	a1,47
    e889a4a8:	00039517          	auipc	a0,0x39
    e889a4ac:	fb050513          	addi	a0,a0,-80 # e88d3458 <netconn_reset+0x84>
    e889a4b0:	ec9e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a4b4:	00150693          	addi	a3,a0,1
    e889a4b8:	72800613          	li	a2,1832
    e889a4bc:	00039597          	auipc	a1,0x39
    e889a4c0:	ce458593          	addi	a1,a1,-796 # e88d31a0 <CSWTCH.34+0x250>
    e889a4c4:	00035517          	auipc	a0,0x35
    e889a4c8:	bec50513          	addi	a0,a0,-1044 # e88cf0b0 <kSinTable1024+0x900>
    e889a4cc:	dfbe10ef          	jal	ra,e887c2c6 <eLIBs_printf>
          UNLOCK_TCPIP_CORE();
    e889a4d0:	0004b517          	auipc	a0,0x4b
    e889a4d4:	10850513          	addi	a0,a0,264 # e88e55d8 <lock_tcpip_core>
    e889a4d8:	f60fd0ef          	jal	ra,e8897c38 <sys_mutex_unlock>
          sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
    e889a4dc:	6008                	ld	a0,0(s0)
    e889a4de:	4581                	li	a1,0
    e889a4e0:	0561                	addi	a0,a0,24
    e889a4e2:	eb0fd0ef          	jal	ra,e8897b92 <sys_arch_sem_wait>
          LOCK_TCPIP_CORE();
    e889a4e6:	0004b517          	auipc	a0,0x4b
    e889a4ea:	0f250513          	addi	a0,a0,242 # e88e55d8 <lock_tcpip_core>
    e889a4ee:	f34fd0ef          	jal	ra,e8897c22 <sys_mutex_lock>
          LWIP_ASSERT("state!", msg->conn->state != NETCONN_WRITE);
    e889a4f2:	601c                	ld	a5,0(s0)
    e889a4f4:	0017c703          	lbu	a4,1(a5)
    e889a4f8:	4785                	li	a5,1
    e889a4fa:	02f71e63          	bne	a4,a5,e889a536 <lwip_netconn_do_write+0x146>
    e889a4fe:	02f00593          	li	a1,47
    e889a502:	00039517          	auipc	a0,0x39
    e889a506:	f5650513          	addi	a0,a0,-170 # e88d3458 <netconn_reset+0x84>
    e889a50a:	e6fe10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
#endif /* (LWIP_UDP || LWIP_RAW) */
    }
  }
  msg->err = err;
  TCPIP_APIMSG_ACK(msg);
}
    e889a50e:	6402                	ld	s0,0(sp)
    e889a510:	60a2                	ld	ra,8(sp)
          LWIP_ASSERT("state!", msg->conn->state != NETCONN_WRITE);
    e889a512:	00150693          	addi	a3,a0,1
    e889a516:	72c00613          	li	a2,1836
    e889a51a:	00039597          	auipc	a1,0x39
    e889a51e:	c8658593          	addi	a1,a1,-890 # e88d31a0 <CSWTCH.34+0x250>
    e889a522:	00035517          	auipc	a0,0x35
    e889a526:	b8e50513          	addi	a0,a0,-1138 # e88cf0b0 <kSinTable1024+0x900>
}
    e889a52a:	0141                	addi	sp,sp,16
          LWIP_ASSERT("state!", msg->conn->state != NETCONN_WRITE);
    e889a52c:	d9be106f          	j	e887c2c6 <eLIBs_printf>
        err = ERR_INPROGRESS;
    e889a530:	556d                	li	a0,-5
  msg->err = err;
    e889a532:	00a40423          	sb	a0,8(s0)
}
    e889a536:	60a2                	ld	ra,8(sp)
    e889a538:	6402                	ld	s0,0(sp)
    e889a53a:	0141                	addi	sp,sp,16
    e889a53c:	8082                	ret
        err = ERR_CONN;
    e889a53e:	5555                	li	a0,-11
    e889a540:	bfcd                	j	e889a532 <lwip_netconn_do_write+0x142>

00000000e889a542 <lwip_netconn_do_getaddr>:
void
lwip_netconn_do_getaddr(void *m)
{
  struct api_msg *msg = (struct api_msg *)m;

  if (msg->conn->pcb.ip != NULL) {
    e889a542:	611c                	ld	a5,0(a0)
    e889a544:	679c                	ld	a5,8(a5)
    e889a546:	c7c1                	beqz	a5,e889a5ce <lwip_netconn_do_getaddr+0x8c>
    if (msg->msg.ad.local) {
    e889a548:	02054683          	lbu	a3,32(a0)
    e889a54c:	6918                	ld	a4,16(a0)
    e889a54e:	c6c1                	beqz	a3,e889a5d6 <lwip_netconn_do_getaddr+0x94>
      ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
    e889a550:	0147c783          	lbu	a5,20(a5)
    e889a554:	4699                	li	a3,6
    e889a556:	00f70a23          	sb	a5,20(a4)
    e889a55a:	611c                	ld	a5,0(a0)
    e889a55c:	6918                	ld	a4,16(a0)
    e889a55e:	679c                	ld	a5,8(a5)
    e889a560:	0147c603          	lbu	a2,20(a5)
    e889a564:	439c                	lw	a5,0(a5)
    e889a566:	c31c                	sw	a5,0(a4)
    e889a568:	691c                	ld	a5,16(a0)
    e889a56a:	0ad61963          	bne	a2,a3,e889a61c <lwip_netconn_do_getaddr+0xda>
    e889a56e:	6118                	ld	a4,0(a0)
    e889a570:	6718                	ld	a4,8(a4)
    e889a572:	4358                	lw	a4,4(a4)
    e889a574:	c3d8                	sw	a4,4(a5)
    e889a576:	6118                	ld	a4,0(a0)
    e889a578:	691c                	ld	a5,16(a0)
    e889a57a:	6718                	ld	a4,8(a4)
    e889a57c:	4718                	lw	a4,8(a4)
    e889a57e:	c798                	sw	a4,8(a5)
    e889a580:	6118                	ld	a4,0(a0)
    e889a582:	691c                	ld	a5,16(a0)
    e889a584:	6718                	ld	a4,8(a4)
    e889a586:	4758                	lw	a4,12(a4)
    e889a588:	c7d8                	sw	a4,12(a5)
    e889a58a:	6118                	ld	a4,0(a0)
    e889a58c:	691c                	ld	a5,16(a0)
    e889a58e:	6718                	ld	a4,8(a4)
    e889a590:	01074703          	lbu	a4,16(a4)
                   msg->conn->pcb.ip->local_ip);
    } else {
      ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
    e889a594:	00e78823          	sb	a4,16(a5)
                   msg->conn->pcb.ip->remote_ip);
    }

    msg->err = ERR_OK;
    switch (NETCONNTYPE_GROUP(msg->conn->type)) {
    e889a598:	6118                	ld	a4,0(a0)
    msg->err = ERR_OK;
    e889a59a:	00050423          	sb	zero,8(a0)
    switch (NETCONNTYPE_GROUP(msg->conn->type)) {
    e889a59e:	02000693          	li	a3,32
    e889a5a2:	00074783          	lbu	a5,0(a4)
    e889a5a6:	0f07f793          	andi	a5,a5,240
    e889a5aa:	08d78f63          	beq	a5,a3,e889a648 <lwip_netconn_do_getaddr+0x106>
    e889a5ae:	04000693          	li	a3,64
    e889a5b2:	08d78163          	beq	a5,a3,e889a634 <lwip_netconn_do_getaddr+0xf2>
    e889a5b6:	46c1                	li	a3,16
    e889a5b8:	0cd79163          	bne	a5,a3,e889a67a <lwip_netconn_do_getaddr+0x138>
        }
        break;
#endif /* LWIP_UDP */
#if LWIP_TCP
      case NETCONN_TCP:
        if ((msg->msg.ad.local == 0) &&
    e889a5bc:	671c                	ld	a5,8(a4)
    e889a5be:	02054703          	lbu	a4,32(a0)
    e889a5c2:	e74d                	bnez	a4,e889a66c <lwip_netconn_do_getaddr+0x12a>
    e889a5c4:	0487c683          	lbu	a3,72(a5)
    e889a5c8:	4705                	li	a4,1
    e889a5ca:	0ad76563          	bltu	a4,a3,e889a674 <lwip_netconn_do_getaddr+0x132>
          msg->err = ERR_CONN;
    e889a5ce:	57d5                	li	a5,-11
    e889a5d0:	00f50423          	sb	a5,8(a0)
    e889a5d4:	8082                	ret
      ip_addr_copy(API_EXPR_DEREF(msg->msg.ad.ipaddr),
    e889a5d6:	02c7c783          	lbu	a5,44(a5)
    e889a5da:	4699                	li	a3,6
    e889a5dc:	00f70a23          	sb	a5,20(a4)
    e889a5e0:	611c                	ld	a5,0(a0)
    e889a5e2:	6918                	ld	a4,16(a0)
    e889a5e4:	679c                	ld	a5,8(a5)
    e889a5e6:	02c7c603          	lbu	a2,44(a5)
    e889a5ea:	4f9c                	lw	a5,24(a5)
    e889a5ec:	c31c                	sw	a5,0(a4)
    e889a5ee:	691c                	ld	a5,16(a0)
    e889a5f0:	02d61663          	bne	a2,a3,e889a61c <lwip_netconn_do_getaddr+0xda>
    e889a5f4:	6118                	ld	a4,0(a0)
    e889a5f6:	6718                	ld	a4,8(a4)
    e889a5f8:	4f58                	lw	a4,28(a4)
    e889a5fa:	c3d8                	sw	a4,4(a5)
    e889a5fc:	6118                	ld	a4,0(a0)
    e889a5fe:	691c                	ld	a5,16(a0)
    e889a600:	6718                	ld	a4,8(a4)
    e889a602:	5318                	lw	a4,32(a4)
    e889a604:	c798                	sw	a4,8(a5)
    e889a606:	6118                	ld	a4,0(a0)
    e889a608:	691c                	ld	a5,16(a0)
    e889a60a:	6718                	ld	a4,8(a4)
    e889a60c:	5358                	lw	a4,36(a4)
    e889a60e:	c7d8                	sw	a4,12(a5)
    e889a610:	6118                	ld	a4,0(a0)
    e889a612:	691c                	ld	a5,16(a0)
    e889a614:	6718                	ld	a4,8(a4)
    e889a616:	02874703          	lbu	a4,40(a4)
    e889a61a:	bfad                	j	e889a594 <lwip_netconn_do_getaddr+0x52>
    e889a61c:	0007a623          	sw	zero,12(a5)
    e889a620:	691c                	ld	a5,16(a0)
    e889a622:	0007a423          	sw	zero,8(a5)
    e889a626:	691c                	ld	a5,16(a0)
    e889a628:	0007a223          	sw	zero,4(a5)
    e889a62c:	691c                	ld	a5,16(a0)
    e889a62e:	00078823          	sb	zero,16(a5)
    e889a632:	b79d                	j	e889a598 <lwip_netconn_do_getaddr+0x56>
        if (msg->msg.ad.local) {
    e889a634:	02054783          	lbu	a5,32(a0)
    e889a638:	dbd9                	beqz	a5,e889a5ce <lwip_netconn_do_getaddr+0x8c>
          API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.raw->protocol;
    e889a63a:	6718                	ld	a4,8(a4)
    e889a63c:	6d1c                	ld	a5,24(a0)
    e889a63e:	04074703          	lbu	a4,64(a4)
    e889a642:	00e79023          	sh	a4,0(a5)
    e889a646:	8082                	ret
        if (msg->msg.ad.local) {
    e889a648:	671c                	ld	a5,8(a4)
    e889a64a:	02054703          	lbu	a4,32(a0)
    e889a64e:	c719                	beqz	a4,e889a65c <lwip_netconn_do_getaddr+0x11a>
          API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->local_port;
    e889a650:	6d18                	ld	a4,24(a0)
    e889a652:	0427d783          	lhu	a5,66(a5)
            ((msg->conn->pcb.tcp->state == CLOSED) || (msg->conn->pcb.tcp->state == LISTEN))) {
          /* pcb is not connected and remote name is requested */
          msg->err = ERR_CONN;
        } else {
          API_EXPR_DEREF(msg->msg.ad.port) = (msg->msg.ad.local ? msg->conn->pcb.tcp->local_port : msg->conn->pcb.tcp->remote_port);
    e889a656:	00f71023          	sh	a5,0(a4)
    e889a65a:	8082                	ret
          if ((msg->conn->pcb.udp->flags & UDP_FLAGS_CONNECTED) == 0) {
    e889a65c:	0407c703          	lbu	a4,64(a5)
    e889a660:	8b11                	andi	a4,a4,4
    e889a662:	d735                	beqz	a4,e889a5ce <lwip_netconn_do_getaddr+0x8c>
            API_EXPR_DEREF(msg->msg.ad.port) = msg->conn->pcb.udp->remote_port;
    e889a664:	6d18                	ld	a4,24(a0)
    e889a666:	0447d783          	lhu	a5,68(a5)
    e889a66a:	b7f5                	j	e889a656 <lwip_netconn_do_getaddr+0x114>
          API_EXPR_DEREF(msg->msg.ad.port) = (msg->msg.ad.local ? msg->conn->pcb.tcp->local_port : msg->conn->pcb.tcp->remote_port);
    e889a66c:	04a7d783          	lhu	a5,74(a5)
    e889a670:	6d18                	ld	a4,24(a0)
    e889a672:	b7d5                	j	e889a656 <lwip_netconn_do_getaddr+0x114>
    e889a674:	04c7d783          	lhu	a5,76(a5)
    e889a678:	bfe5                	j	e889a670 <lwip_netconn_do_getaddr+0x12e>
{
    e889a67a:	1141                	addi	sp,sp,-16
        }
        break;
#endif /* LWIP_TCP */
      default:
        LWIP_ASSERT("invalid netconn_type", 0);
    e889a67c:	02f00593          	li	a1,47
    e889a680:	00039517          	auipc	a0,0x39
    e889a684:	dd850513          	addi	a0,a0,-552 # e88d3458 <netconn_reset+0x84>
{
    e889a688:	e406                	sd	ra,8(sp)
        LWIP_ASSERT("invalid netconn_type", 0);
    e889a68a:	cefe10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a68e:	00150693          	addi	a3,a0,1
    }
  } else {
    msg->err = ERR_CONN;
  }
  TCPIP_APIMSG_ACK(msg);
}
    e889a692:	60a2                	ld	ra,8(sp)
        LWIP_ASSERT("invalid netconn_type", 0);
    e889a694:	77d00613          	li	a2,1917
    e889a698:	00039597          	auipc	a1,0x39
    e889a69c:	b1058593          	addi	a1,a1,-1264 # e88d31a8 <CSWTCH.34+0x258>
    e889a6a0:	00035517          	auipc	a0,0x35
    e889a6a4:	a1050513          	addi	a0,a0,-1520 # e88cf0b0 <kSinTable1024+0x900>
}
    e889a6a8:	0141                	addi	sp,sp,16
        LWIP_ASSERT("invalid netconn_type", 0);
    e889a6aa:	c1de106f          	j	e887c2c6 <eLIBs_printf>

00000000e889a6ae <lwip_netconn_do_close>:
lwip_netconn_do_close(void *m)
{
  struct api_msg *msg = (struct api_msg *)m;

#if LWIP_TCP
  enum netconn_state state = msg->conn->state;
    e889a6ae:	6118                	ld	a4,0(a0)
  /* First check if this is a TCP netconn and if it is in a correct state
      (LISTEN doesn't support half shutdown) */
  if ((msg->conn->pcb.tcp != NULL) &&
    e889a6b0:	671c                	ld	a5,8(a4)
    e889a6b2:	c78d                	beqz	a5,e889a6dc <lwip_netconn_do_close+0x2e>
    e889a6b4:	00074783          	lbu	a5,0(a4)
    e889a6b8:	46c1                	li	a3,16
    e889a6ba:	0f07f793          	andi	a5,a5,240
    e889a6be:	00d79f63          	bne	a5,a3,e889a6dc <lwip_netconn_do_close+0x2e>
      (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) &&
      ((msg->msg.sd.shut == NETCONN_SHUT_RDWR) || (state != NETCONN_LISTEN))) {
    e889a6c2:	01054683          	lbu	a3,16(a0)
      (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) &&
    e889a6c6:	460d                	li	a2,3
  enum netconn_state state = msg->conn->state;
    e889a6c8:	00174783          	lbu	a5,1(a4)
      (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) &&
    e889a6cc:	00c68563          	beq	a3,a2,e889a6d6 <lwip_netconn_do_close+0x28>
      ((msg->msg.sd.shut == NETCONN_SHUT_RDWR) || (state != NETCONN_LISTEN))) {
    e889a6d0:	4609                	li	a2,2
    e889a6d2:	00c78563          	beq	a5,a2,e889a6dc <lwip_netconn_do_close+0x2e>
    /* Check if we are in a connected state */
    if (state == NETCONN_CONNECT) {
    e889a6d6:	460d                	li	a2,3
    e889a6d8:	00c79663          	bne	a5,a2,e889a6e4 <lwip_netconn_do_close+0x36>
      /* TCP connect in progress: cannot shutdown */
      msg->err = ERR_CONN;
    e889a6dc:	57d5                	li	a5,-11
    e889a6de:	00f50423          	sb	a5,8(a0)
        /* In this case, let the write continue and do not interfere with
           conn->current_msg or conn->state! */
        msg->err = tcp_shutdown(msg->conn->pcb.tcp, 1, 0);
      }
    }
    if (state == NETCONN_NONE) {
    e889a6e2:	8082                	ret
{
    e889a6e4:	1141                	addi	sp,sp,-16
    e889a6e6:	e022                	sd	s0,0(sp)
    e889a6e8:	e406                	sd	ra,8(sp)
    } else if (state == NETCONN_WRITE) {
    e889a6ea:	4605                	li	a2,1
    e889a6ec:	842a                	mv	s0,a0
    e889a6ee:	18c79663          	bne	a5,a2,e889a87a <lwip_netconn_do_close+0x1cc>
      if (msg->msg.sd.shut & NETCONN_SHUT_WR) {
    e889a6f2:	0026f613          	andi	a2,a3,2
    e889a6f6:	12060e63          	beqz	a2,e889a832 <lwip_netconn_do_close+0x184>
        LWIP_ASSERT("msg->conn->current_msg != NULL", msg->conn->current_msg != NULL);
    e889a6fa:	673c                	ld	a5,72(a4)
    e889a6fc:	e79d                	bnez	a5,e889a72a <lwip_netconn_do_close+0x7c>
    e889a6fe:	02f00593          	li	a1,47
    e889a702:	00039517          	auipc	a0,0x39
    e889a706:	d5650513          	addi	a0,a0,-682 # e88d3458 <netconn_reset+0x84>
    e889a70a:	c6fe10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a70e:	00150693          	addi	a3,a0,1
    e889a712:	7a200613          	li	a2,1954
    e889a716:	00039597          	auipc	a1,0x39
    e889a71a:	a2a58593          	addi	a1,a1,-1494 # e88d3140 <CSWTCH.34+0x1f0>
    e889a71e:	00035517          	auipc	a0,0x35
    e889a722:	99250513          	addi	a0,a0,-1646 # e88cf0b0 <kSinTable1024+0x900>
    e889a726:	ba1e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
        write_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
    e889a72a:	601c                	ld	a5,0(s0)
        msg->conn->current_msg->err = ERR_CLSD;
    e889a72c:	5745                	li	a4,-15
        write_completed_sem = LWIP_API_MSG_SEM(msg->conn->current_msg);
    e889a72e:	67bc                	ld	a5,72(a5)
    e889a730:	6388                	ld	a0,0(a5)
        msg->conn->current_msg->err = ERR_CLSD;
    e889a732:	00e78423          	sb	a4,8(a5)
        msg->conn->current_msg = NULL;
    e889a736:	601c                	ld	a5,0(s0)
        sys_sem_signal(write_completed_sem);
    e889a738:	0561                	addi	a0,a0,24
        msg->conn->current_msg = NULL;
    e889a73a:	0407b423          	sd	zero,72(a5)
        msg->conn->state = NETCONN_NONE;
    e889a73e:	601c                	ld	a5,0(s0)
    e889a740:	000780a3          	sb	zero,1(a5)
        sys_sem_signal(write_completed_sem);
    e889a744:	c42fd0ef          	jal	ra,e8897b86 <sys_sem_signal>
#else /* LWIP_NETCONN_FULLDUPLEX */
      msg->err = ERR_INPROGRESS;
    } else {
#endif /* LWIP_NETCONN_FULLDUPLEX */
      if (msg->msg.sd.shut & NETCONN_SHUT_RD) {
    e889a748:	01044783          	lbu	a5,16(s0)
    e889a74c:	8b85                	andi	a5,a5,1
    e889a74e:	c781                	beqz	a5,e889a756 <lwip_netconn_do_close+0xa8>
#if LWIP_NETCONN_FULLDUPLEX
        /* Mark mboxes invalid */
        netconn_mark_mbox_invalid(msg->conn);
    e889a750:	6008                	ld	a0,0(s0)
    e889a752:	9aefe0ef          	jal	ra,e8898900 <netconn_mark_mbox_invalid>
#else /* LWIP_NETCONN_FULLDUPLEX */
        netconn_drain(msg->conn);
#endif /* LWIP_NETCONN_FULLDUPLEX */
      }
      LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL);
    e889a756:	601c                	ld	a5,0(s0)
    e889a758:	67bc                	ld	a5,72(a5)
    e889a75a:	c79d                	beqz	a5,e889a788 <lwip_netconn_do_close+0xda>
    e889a75c:	02f00593          	li	a1,47
    e889a760:	00039517          	auipc	a0,0x39
    e889a764:	cf850513          	addi	a0,a0,-776 # e88d3458 <netconn_reset+0x84>
    e889a768:	c11e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a76c:	00150693          	addi	a3,a0,1
    e889a770:	7bd00613          	li	a2,1981
    e889a774:	00039597          	auipc	a1,0x39
    e889a778:	a0c58593          	addi	a1,a1,-1524 # e88d3180 <CSWTCH.34+0x230>
    e889a77c:	00035517          	auipc	a0,0x35
    e889a780:	93450513          	addi	a0,a0,-1740 # e88cf0b0 <kSinTable1024+0x900>
    e889a784:	b43e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
      msg->conn->state = NETCONN_CLOSE;
    e889a788:	601c                	ld	a5,0(s0)
    e889a78a:	4711                	li	a4,4
      msg->conn->current_msg = msg;
#if LWIP_TCPIP_CORE_LOCKING
      if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
    e889a78c:	4581                	li	a1,0
      msg->conn->state = NETCONN_CLOSE;
    e889a78e:	00e780a3          	sb	a4,1(a5)
      msg->conn->current_msg = msg;
    e889a792:	601c                	ld	a5,0(s0)
    e889a794:	e7a0                	sd	s0,72(a5)
      if (lwip_netconn_do_close_internal(msg->conn, 0) != ERR_OK) {
    e889a796:	6008                	ld	a0,0(s0)
    e889a798:	879fe0ef          	jal	ra,e8899010 <lwip_netconn_do_close_internal>
    e889a79c:	c979                	beqz	a0,e889a872 <lwip_netconn_do_close+0x1c4>
        LWIP_ASSERT("state!", msg->conn->state == NETCONN_CLOSE);
    e889a79e:	601c                	ld	a5,0(s0)
    e889a7a0:	0017c703          	lbu	a4,1(a5)
    e889a7a4:	4791                	li	a5,4
    e889a7a6:	02f70863          	beq	a4,a5,e889a7d6 <lwip_netconn_do_close+0x128>
    e889a7aa:	02f00593          	li	a1,47
    e889a7ae:	00039517          	auipc	a0,0x39
    e889a7b2:	caa50513          	addi	a0,a0,-854 # e88d3458 <netconn_reset+0x84>
    e889a7b6:	bc3e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a7ba:	00150693          	addi	a3,a0,1
    e889a7be:	7c200613          	li	a2,1986
    e889a7c2:	00039597          	auipc	a1,0x39
    e889a7c6:	9de58593          	addi	a1,a1,-1570 # e88d31a0 <CSWTCH.34+0x250>
    e889a7ca:	00035517          	auipc	a0,0x35
    e889a7ce:	8e650513          	addi	a0,a0,-1818 # e88cf0b0 <kSinTable1024+0x900>
    e889a7d2:	af5e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
        UNLOCK_TCPIP_CORE();
    e889a7d6:	0004b517          	auipc	a0,0x4b
    e889a7da:	e0250513          	addi	a0,a0,-510 # e88e55d8 <lock_tcpip_core>
    e889a7de:	c5afd0ef          	jal	ra,e8897c38 <sys_mutex_unlock>
        sys_arch_sem_wait(LWIP_API_MSG_SEM(msg), 0);
    e889a7e2:	6008                	ld	a0,0(s0)
    e889a7e4:	4581                	li	a1,0
    e889a7e6:	0561                	addi	a0,a0,24
    e889a7e8:	baafd0ef          	jal	ra,e8897b92 <sys_arch_sem_wait>
        LOCK_TCPIP_CORE();
    e889a7ec:	0004b517          	auipc	a0,0x4b
    e889a7f0:	dec50513          	addi	a0,a0,-532 # e88e55d8 <lock_tcpip_core>
    e889a7f4:	c2efd0ef          	jal	ra,e8897c22 <sys_mutex_lock>
        LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
    e889a7f8:	601c                	ld	a5,0(s0)
    e889a7fa:	0017c783          	lbu	a5,1(a5)
    e889a7fe:	cbb5                	beqz	a5,e889a872 <lwip_netconn_do_close+0x1c4>
    e889a800:	02f00593          	li	a1,47
    e889a804:	00039517          	auipc	a0,0x39
    e889a808:	c5450513          	addi	a0,a0,-940 # e88d3458 <netconn_reset+0x84>
    e889a80c:	b6de10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
#endif /* LWIP_TCP */
  {
    msg->err = ERR_CONN;
  }
  TCPIP_APIMSG_ACK(msg);
}
    e889a810:	6402                	ld	s0,0(sp)
    e889a812:	60a2                	ld	ra,8(sp)
        LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
    e889a814:	00150693          	addi	a3,a0,1
    e889a818:	7c600613          	li	a2,1990
    e889a81c:	00039597          	auipc	a1,0x39
    e889a820:	98458593          	addi	a1,a1,-1660 # e88d31a0 <CSWTCH.34+0x250>
    e889a824:	00035517          	auipc	a0,0x35
    e889a828:	88c50513          	addi	a0,a0,-1908 # e88cf0b0 <kSinTable1024+0x900>
}
    e889a82c:	0141                	addi	sp,sp,16
        LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE);
    e889a82e:	a99e106f          	j	e887c2c6 <eLIBs_printf>
        LWIP_ASSERT("msg->msg.sd.shut == NETCONN_SHUT_RD", msg->msg.sd.shut == NETCONN_SHUT_RD);
    e889a832:	02f68863          	beq	a3,a5,e889a862 <lwip_netconn_do_close+0x1b4>
    e889a836:	02f00593          	li	a1,47
    e889a83a:	00039517          	auipc	a0,0x39
    e889a83e:	c1e50513          	addi	a0,a0,-994 # e88d3458 <netconn_reset+0x84>
    e889a842:	b37e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a846:	00150693          	addi	a3,a0,1
    e889a84a:	7aa00613          	li	a2,1962
    e889a84e:	00038597          	auipc	a1,0x38
    e889a852:	79258593          	addi	a1,a1,1938 # e88d2fe0 <CSWTCH.34+0x90>
    e889a856:	00035517          	auipc	a0,0x35
    e889a85a:	85a50513          	addi	a0,a0,-1958 # e88cf0b0 <kSinTable1024+0x900>
    e889a85e:	a69e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
        msg->err = tcp_shutdown(msg->conn->pcb.tcp, 1, 0);
    e889a862:	601c                	ld	a5,0(s0)
    e889a864:	4601                	li	a2,0
    e889a866:	4585                	li	a1,1
    e889a868:	6788                	ld	a0,8(a5)
    e889a86a:	ffcf70ef          	jal	ra,e8892066 <tcp_shutdown>
    e889a86e:	00a40423          	sb	a0,8(s0)
}
    e889a872:	60a2                	ld	ra,8(sp)
    e889a874:	6402                	ld	s0,0(sp)
    e889a876:	0141                	addi	sp,sp,16
    e889a878:	8082                	ret
    if (state == NETCONN_NONE) {
    e889a87a:	ec0787e3          	beqz	a5,e889a748 <lwip_netconn_do_close+0x9a>
    e889a87e:	bfd5                	j	e889a872 <lwip_netconn_do_close+0x1c4>

00000000e889a880 <lwip_netconn_do_join_leave_group>:
void
lwip_netconn_do_join_leave_group(void *m)
{
  struct api_msg *msg = (struct api_msg *)m;

  msg->err = ERR_CONN;
    e889a880:	57d5                	li	a5,-11
    e889a882:	00f50423          	sb	a5,8(a0)
  if (msg->conn->pcb.tcp != NULL) {
    e889a886:	611c                	ld	a5,0(a0)
    e889a888:	6798                	ld	a4,8(a5)
    e889a88a:	cb31                	beqz	a4,e889a8de <lwip_netconn_do_join_leave_group+0x5e>
    if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
    e889a88c:	0007c783          	lbu	a5,0(a5)
    e889a890:	02000713          	li	a4,32
    e889a894:	0f07f693          	andi	a3,a5,240
    e889a898:	02e69f63          	bne	a3,a4,e889a8d6 <lwip_netconn_do_join_leave_group+0x56>
{
    e889a89c:	1141                	addi	sp,sp,-16
    e889a89e:	e022                	sd	s0,0(sp)
    e889a8a0:	e406                	sd	ra,8(sp)
    e889a8a2:	842a                	mv	s0,a0
#if LWIP_UDP
#if LWIP_IPV6 && LWIP_IPV6_MLD
      if (NETCONNTYPE_ISIPV6(msg->conn->type)) {
    e889a8a4:	8ba1                	andi	a5,a5,8
    e889a8a6:	02154703          	lbu	a4,33(a0)
    e889a8aa:	680c                	ld	a1,16(s0)
    e889a8ac:	6d08                	ld	a0,24(a0)
    e889a8ae:	cf89                	beqz	a5,e889a8c8 <lwip_netconn_do_join_leave_group+0x48>
        if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
    e889a8b0:	eb09                	bnez	a4,e889a8c2 <lwip_netconn_do_join_leave_group+0x42>
          msg->err = mld6_joingroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
    e889a8b2:	d7cf10ef          	jal	ra,e888be2e <mld6_joingroup>
#if LWIP_IGMP
        if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
          msg->err = igmp_joingroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
                                    ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
        } else {
          msg->err = igmp_leavegroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
    e889a8b6:	00a40423          	sb	a0,8(s0)
      msg->err = ERR_VAL;
#endif /* (LWIP_TCP || LWIP_RAW) */
    }
  }
  TCPIP_APIMSG_ACK(msg);
}
    e889a8ba:	60a2                	ld	ra,8(sp)
    e889a8bc:	6402                	ld	s0,0(sp)
    e889a8be:	0141                	addi	sp,sp,16
    e889a8c0:	8082                	ret
          msg->err = mld6_leavegroup(ip_2_ip6(API_EXPR_REF(msg->msg.jl.netif_addr)),
    e889a8c2:	edaf10ef          	jal	ra,e888bf9c <mld6_leavegroup>
    e889a8c6:	bfc5                	j	e889a8b6 <lwip_netconn_do_join_leave_group+0x36>
        if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
    e889a8c8:	e701                	bnez	a4,e889a8d0 <lwip_netconn_do_join_leave_group+0x50>
          msg->err = igmp_joingroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
    e889a8ca:	9f4ee0ef          	jal	ra,e8888abe <igmp_joingroup>
    e889a8ce:	b7e5                	j	e889a8b6 <lwip_netconn_do_join_leave_group+0x36>
          msg->err = igmp_leavegroup(ip_2_ip4(API_EXPR_REF(msg->msg.jl.netif_addr)),
    e889a8d0:	bc2ee0ef          	jal	ra,e8888c92 <igmp_leavegroup>
    e889a8d4:	b7cd                	j	e889a8b6 <lwip_netconn_do_join_leave_group+0x36>
      msg->err = ERR_VAL;
    e889a8d6:	57e9                	li	a5,-6
    e889a8d8:	00f50423          	sb	a5,8(a0)
}
    e889a8dc:	8082                	ret
    e889a8de:	8082                	ret

00000000e889a8e0 <lwip_netconn_do_join_leave_group_netif>:
 *
 * @param m the api_msg pointing to the connection
 */
void
lwip_netconn_do_join_leave_group_netif(void *m)
{
    e889a8e0:	1141                	addi	sp,sp,-16
    e889a8e2:	e022                	sd	s0,0(sp)
    e889a8e4:	e406                	sd	ra,8(sp)
    e889a8e6:	842a                	mv	s0,a0
  struct api_msg *msg = (struct api_msg *)m;
  struct netif *netif;

  netif = netif_get_by_index(msg->msg.jl.if_idx);
    e889a8e8:	02054503          	lbu	a0,32(a0)
    e889a8ec:	f45f30ef          	jal	ra,e888e830 <netif_get_by_index>
  if (netif == NULL) {
    msg->err = ERR_IF;
    e889a8f0:	57d1                	li	a5,-12
  if (netif == NULL) {
    e889a8f2:	c921                	beqz	a0,e889a942 <lwip_netconn_do_join_leave_group_netif+0x62>
    goto done;
  }

  msg->err = ERR_CONN;
    e889a8f4:	57d5                	li	a5,-11
    e889a8f6:	00f40423          	sb	a5,8(s0)
  if (msg->conn->pcb.tcp != NULL) {
    e889a8fa:	601c                	ld	a5,0(s0)
    e889a8fc:	6798                	ld	a4,8(a5)
    e889a8fe:	c31d                	beqz	a4,e889a924 <lwip_netconn_do_join_leave_group_netif+0x44>
    if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {
    e889a900:	0007c783          	lbu	a5,0(a5)
    e889a904:	02000713          	li	a4,32
    e889a908:	0f07f693          	andi	a3,a5,240
    e889a90c:	02e69a63          	bne	a3,a4,e889a940 <lwip_netconn_do_join_leave_group_netif+0x60>
#if LWIP_UDP
#if LWIP_IPV6 && LWIP_IPV6_MLD
      if (NETCONNTYPE_ISIPV6(msg->conn->type)) {
    e889a910:	8ba1                	andi	a5,a5,8
    e889a912:	02144703          	lbu	a4,33(s0)
    e889a916:	680c                	ld	a1,16(s0)
    e889a918:	cf89                	beqz	a5,e889a932 <lwip_netconn_do_join_leave_group_netif+0x52>
        if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
    e889a91a:	eb09                	bnez	a4,e889a92c <lwip_netconn_do_join_leave_group_netif+0x4c>
          msg->err = mld6_joingroup_netif(netif,
    e889a91c:	be0f10ef          	jal	ra,e888bcfc <mld6_joingroup_netif>
#if LWIP_IGMP
        if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
          msg->err = igmp_joingroup_netif(netif,
                                          ip_2_ip4(API_EXPR_REF(msg->msg.jl.multiaddr)));
        } else {
          msg->err = igmp_leavegroup_netif(netif,
    e889a920:	00a40423          	sb	a0,8(s0)
    }
  }

done:
  TCPIP_APIMSG_ACK(msg);
}
    e889a924:	60a2                	ld	ra,8(sp)
    e889a926:	6402                	ld	s0,0(sp)
    e889a928:	0141                	addi	sp,sp,16
    e889a92a:	8082                	ret
          msg->err = mld6_leavegroup_netif(netif,
    e889a92c:	d5ef10ef          	jal	ra,e888be8a <mld6_leavegroup_netif>
    e889a930:	bfc5                	j	e889a920 <lwip_netconn_do_join_leave_group_netif+0x40>
        if (msg->msg.jl.join_or_leave == NETCONN_JOIN) {
    e889a932:	e701                	bnez	a4,e889a93a <lwip_netconn_do_join_leave_group_netif+0x5a>
          msg->err = igmp_joingroup_netif(netif,
    e889a934:	86aee0ef          	jal	ra,e888899e <igmp_joingroup_netif>
    e889a938:	b7e5                	j	e889a920 <lwip_netconn_do_join_leave_group_netif+0x40>
          msg->err = igmp_leavegroup_netif(netif,
    e889a93a:	a3cee0ef          	jal	ra,e8888b76 <igmp_leavegroup_netif>
    e889a93e:	b7cd                	j	e889a920 <lwip_netconn_do_join_leave_group_netif+0x40>
      msg->err = ERR_VAL;
    e889a940:	57e9                	li	a5,-6
    e889a942:	00f40423          	sb	a5,8(s0)
}
    e889a946:	bff9                	j	e889a924 <lwip_netconn_do_join_leave_group_netif+0x44>

00000000e889a948 <netbuf_delete>:
 * @param buf pointer to a netbuf allocated by netbuf_new()
 */
void
netbuf_delete(struct netbuf *buf)
{
  if (buf != NULL) {
    e889a948:	c11d                	beqz	a0,e889a96e <netbuf_delete+0x26>
    e889a94a:	85aa                	mv	a1,a0
    if (buf->p != NULL) {
    e889a94c:	6108                	ld	a0,0(a0)
    e889a94e:	c10d                	beqz	a0,e889a970 <netbuf_delete+0x28>
{
    e889a950:	1101                	addi	sp,sp,-32
    e889a952:	ec06                	sd	ra,24(sp)
    e889a954:	e42e                	sd	a1,8(sp)
      pbuf_free(buf->p);
    e889a956:	8f7f40ef          	jal	ra,e888f24c <pbuf_free>
      buf->p = buf->ptr = NULL;
    e889a95a:	65a2                	ld	a1,8(sp)
    }
    memp_free(MEMP_NETBUF, buf);
    e889a95c:	451d                	li	a0,7
      buf->p = buf->ptr = NULL;
    e889a95e:	0005b423          	sd	zero,8(a1)
    e889a962:	0005b023          	sd	zero,0(a1)
  }
}
    e889a966:	60e2                	ld	ra,24(sp)
    e889a968:	6105                	addi	sp,sp,32
    memp_free(MEMP_NETBUF, buf);
    e889a96a:	835f306f          	j	e888e19e <memp_free>
    e889a96e:	8082                	ret
    e889a970:	451d                	li	a0,7
    e889a972:	bfe5                	j	e889a96a <netbuf_delete+0x22>

00000000e889a974 <netbuf_alloc>:
 * @return pointer to the allocated memory
 *         NULL if no memory could be allocated
 */
void *
netbuf_alloc(struct netbuf *buf, u16_t size)
{
    e889a974:	1101                	addi	sp,sp,-32
    e889a976:	ec06                	sd	ra,24(sp)
    e889a978:	e422                	sd	s0,8(sp)
    e889a97a:	e826                	sd	s1,16(sp)
  LWIP_ERROR("netbuf_alloc: invalid buf", (buf != NULL), return NULL;);
    e889a97c:	ed0d                	bnez	a0,e889a9b6 <netbuf_alloc+0x42>
    e889a97e:	02f00593          	li	a1,47
    e889a982:	00039517          	auipc	a0,0x39
    e889a986:	bc650513          	addi	a0,a0,-1082 # e88d3548 <netconn_reset+0x174>
    e889a98a:	9efe10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a98e:	00150693          	addi	a3,a0,1
    e889a992:	06800613          	li	a2,104
    e889a996:	00039597          	auipc	a1,0x39
    e889a99a:	c3a58593          	addi	a1,a1,-966 # e88d35d0 <netconn_reset+0x1fc>
    e889a99e:	00034517          	auipc	a0,0x34
    e889a9a2:	71250513          	addi	a0,a0,1810 # e88cf0b0 <kSinTable1024+0x900>
    e889a9a6:	921e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889a9aa:	4501                	li	a0,0
  }
  LWIP_ASSERT("check that first pbuf can hold size",
              (buf->p->len >= size));
  buf->ptr = buf->p;
  return buf->p->payload;
}
    e889a9ac:	60e2                	ld	ra,24(sp)
    e889a9ae:	6422                	ld	s0,8(sp)
    e889a9b0:	64c2                	ld	s1,16(sp)
    e889a9b2:	6105                	addi	sp,sp,32
    e889a9b4:	8082                	ret
    e889a9b6:	842a                	mv	s0,a0
  if (buf->p != NULL) {
    e889a9b8:	6108                	ld	a0,0(a0)
    e889a9ba:	84ae                	mv	s1,a1
    e889a9bc:	c119                	beqz	a0,e889a9c2 <netbuf_alloc+0x4e>
    pbuf_free(buf->p);
    e889a9be:	88ff40ef          	jal	ra,e888f24c <pbuf_free>
  buf->p = pbuf_alloc(PBUF_TRANSPORT, size, PBUF_RAM);
    e889a9c2:	28000613          	li	a2,640
    e889a9c6:	85a6                	mv	a1,s1
    e889a9c8:	04a00513          	li	a0,74
    e889a9cc:	9c5f40ef          	jal	ra,e888f390 <pbuf_alloc>
    e889a9d0:	e008                	sd	a0,0(s0)
  if (buf->p == NULL) {
    e889a9d2:	dd69                	beqz	a0,e889a9ac <netbuf_alloc+0x38>
  LWIP_ASSERT("check that first pbuf can hold size",
    e889a9d4:	01255783          	lhu	a5,18(a0)
    e889a9d8:	0297f863          	bgeu	a5,s1,e889aa08 <netbuf_alloc+0x94>
    e889a9dc:	02f00593          	li	a1,47
    e889a9e0:	00039517          	auipc	a0,0x39
    e889a9e4:	b6850513          	addi	a0,a0,-1176 # e88d3548 <netconn_reset+0x174>
    e889a9e8:	991e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889a9ec:	00150693          	addi	a3,a0,1
    e889a9f0:	07300613          	li	a2,115
    e889a9f4:	00039597          	auipc	a1,0x39
    e889a9f8:	bfc58593          	addi	a1,a1,-1028 # e88d35f0 <netconn_reset+0x21c>
    e889a9fc:	00034517          	auipc	a0,0x34
    e889aa00:	6b450513          	addi	a0,a0,1716 # e88cf0b0 <kSinTable1024+0x900>
    e889aa04:	8c3e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
  buf->ptr = buf->p;
    e889aa08:	601c                	ld	a5,0(s0)
    e889aa0a:	e41c                	sd	a5,8(s0)
  return buf->p->payload;
    e889aa0c:	6788                	ld	a0,8(a5)
    e889aa0e:	bf79                	j	e889a9ac <netbuf_alloc+0x38>

00000000e889aa10 <netbuf_free>:
 *
 * @param buf pointer to the netbuf which contains the packet buffer to free
 */
void
netbuf_free(struct netbuf *buf)
{
    e889aa10:	1141                	addi	sp,sp,-16
    e889aa12:	e406                	sd	ra,8(sp)
    e889aa14:	e022                	sd	s0,0(sp)
  LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return;);
    e889aa16:	e915                	bnez	a0,e889aa4a <netbuf_free+0x3a>
    e889aa18:	02f00593          	li	a1,47
    e889aa1c:	00039517          	auipc	a0,0x39
    e889aa20:	b2c50513          	addi	a0,a0,-1236 # e88d3548 <netconn_reset+0x174>
    e889aa24:	955e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
  buf->p = buf->ptr = NULL;
#if LWIP_CHECKSUM_ON_COPY
  buf->flags = 0;
  buf->toport_chksum = 0;
#endif /* LWIP_CHECKSUM_ON_COPY */
}
    e889aa28:	6402                	ld	s0,0(sp)
    e889aa2a:	60a2                	ld	ra,8(sp)
  LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return;);
    e889aa2c:	00150693          	addi	a3,a0,1
    e889aa30:	08100613          	li	a2,129
    e889aa34:	00039597          	auipc	a1,0x39
    e889aa38:	be458593          	addi	a1,a1,-1052 # e88d3618 <netconn_reset+0x244>
    e889aa3c:	00034517          	auipc	a0,0x34
    e889aa40:	67450513          	addi	a0,a0,1652 # e88cf0b0 <kSinTable1024+0x900>
}
    e889aa44:	0141                	addi	sp,sp,16
  LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return;);
    e889aa46:	881e106f          	j	e887c2c6 <eLIBs_printf>
    e889aa4a:	842a                	mv	s0,a0
  if (buf->p != NULL) {
    e889aa4c:	6108                	ld	a0,0(a0)
    e889aa4e:	c119                	beqz	a0,e889aa54 <netbuf_free+0x44>
    pbuf_free(buf->p);
    e889aa50:	ffcf40ef          	jal	ra,e888f24c <pbuf_free>
  buf->p = buf->ptr = NULL;
    e889aa54:	00043423          	sd	zero,8(s0)
    e889aa58:	00043023          	sd	zero,0(s0)
  buf->flags = 0;
    e889aa5c:	02040523          	sb	zero,42(s0)
  buf->toport_chksum = 0;
    e889aa60:	02041623          	sh	zero,44(s0)
}
    e889aa64:	60a2                	ld	ra,8(sp)
    e889aa66:	6402                	ld	s0,0(sp)
    e889aa68:	0141                	addi	sp,sp,16
    e889aa6a:	8082                	ret

00000000e889aa6c <autoip_start_probing>:
}

static void
autoip_start_probing(struct netif *netif)
{
  struct autoip *autoip = netif_autoip_data(netif);
    e889aa6c:	7578                	ld	a4,232(a0)

  autoip->state = AUTOIP_STATE_PROBING;
    e889aa6e:	4785                	li	a5,1
    e889aa70:	00f71223          	sh	a5,4(a4)

  /* time to wait to first probe, this is randomly
   * chosen out of 0 to PROBE_WAIT seconds.
   * compliant to RFC 3927 Section 2.2.1
   */
  autoip->ttw = (u16_t)(LWIP_AUTOIP_RAND(netif) % (PROBE_WAIT * AUTOIP_TICKS_PER_SECOND));
    e889aa74:	10754683          	lbu	a3,263(a0)
    e889aa78:	10954783          	lbu	a5,265(a0)
    e889aa7c:	7570                	ld	a2,232(a0)
    e889aa7e:	0106969b          	slliw	a3,a3,0x10
    e889aa82:	0187979b          	slliw	a5,a5,0x18
    e889aa86:	8fd5                	or	a5,a5,a3
    e889aa88:	10854683          	lbu	a3,264(a0)
    e889aa8c:	8fd5                	or	a5,a5,a3
    e889aa8e:	10654683          	lbu	a3,262(a0)
    e889aa92:	0086969b          	slliw	a3,a3,0x8
    e889aa96:	8fd5                	or	a5,a5,a3
    e889aa98:	2781                	sext.w	a5,a5
    e889aa9a:	4681                	li	a3,0
    e889aa9c:	c219                	beqz	a2,e889aaa2 <autoip_start_probing+0x36>
    e889aa9e:	00964683          	lbu	a3,9(a2)
    e889aaa2:	9fb5                	addw	a5,a5,a3
    e889aaa4:	46a9                	li	a3,10
    e889aaa6:	02d7f7bb          	remuw	a5,a5,a3
  /*
   * if we tried more then MAX_CONFLICTS we must limit our rate for
   * acquiring and probing address
   * compliant to RFC 3927 Section 2.2.1
   */
  if (autoip->tried_llipaddr > MAX_CONFLICTS) {
    e889aaaa:	00974683          	lbu	a3,9(a4)
  autoip->ttw = (u16_t)(LWIP_AUTOIP_RAND(netif) % (PROBE_WAIT * AUTOIP_TICKS_PER_SECOND));
    e889aaae:	00f71323          	sh	a5,6(a4)
  if (autoip->tried_llipaddr > MAX_CONFLICTS) {
    e889aab2:	47a9                	li	a5,10
    e889aab4:	00d7f663          	bgeu	a5,a3,e889aac0 <autoip_start_probing+0x54>
    autoip->ttw = RATE_LIMIT_INTERVAL * AUTOIP_TICKS_PER_SECOND;
    e889aab8:	25800793          	li	a5,600
    e889aabc:	00f71323          	sh	a5,6(a4)
  }
}
    e889aac0:	8082                	ret

00000000e889aac2 <autoip_start>:
{
    e889aac2:	7179                	addi	sp,sp,-48
    e889aac4:	f406                	sd	ra,40(sp)
    e889aac6:	e422                	sd	s0,8(sp)
    e889aac8:	e826                	sd	s1,16(sp)
    e889aaca:	ec4a                	sd	s2,24(sp)
    e889aacc:	f04e                	sd	s3,32(sp)
  LWIP_ERROR("netif is not up, old style port?", netif_is_up(netif), return ERR_ARG;);
    e889aace:	10b54783          	lbu	a5,267(a0)
  struct autoip *autoip = netif_autoip_data(netif);
    e889aad2:	7560                	ld	s0,232(a0)
  LWIP_ERROR("netif is not up, old style port?", netif_is_up(netif), return ERR_ARG;);
    e889aad4:	8b85                	andi	a5,a5,1
    e889aad6:	ef9d                	bnez	a5,e889ab14 <autoip_start+0x52>
    e889aad8:	02f00593          	li	a1,47
    e889aadc:	00039517          	auipc	a0,0x39
    e889aae0:	b5c50513          	addi	a0,a0,-1188 # e88d3638 <netconn_reset+0x264>
    e889aae4:	895e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889aae8:	00150693          	addi	a3,a0,1
    e889aaec:	10500613          	li	a2,261
    e889aaf0:	00039597          	auipc	a1,0x39
    e889aaf4:	c1058593          	addi	a1,a1,-1008 # e88d3700 <netconn_reset+0x32c>
    e889aaf8:	00034517          	auipc	a0,0x34
    e889aafc:	5b850513          	addi	a0,a0,1464 # e88cf0b0 <kSinTable1024+0x900>
    e889ab00:	fc6e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889ab04:	5541                	li	a0,-16
}
    e889ab06:	70a2                	ld	ra,40(sp)
    e889ab08:	6422                	ld	s0,8(sp)
    e889ab0a:	64c2                	ld	s1,16(sp)
    e889ab0c:	6962                	ld	s2,24(sp)
    e889ab0e:	7982                	ld	s3,32(sp)
    e889ab10:	6145                	addi	sp,sp,48
    e889ab12:	8082                	ret
  netif_set_addr(netif, IP4_ADDR_ANY4, IP4_ADDR_ANY4, IP4_ADDR_ANY4);
    e889ab14:	00035697          	auipc	a3,0x35
    e889ab18:	4ac68693          	addi	a3,a3,1196 # e88cffc0 <ip_addr_any>
    e889ab1c:	8636                	mv	a2,a3
    e889ab1e:	85b6                	mv	a1,a3
    e889ab20:	84aa                	mv	s1,a0
    e889ab22:	e4df30ef          	jal	ra,e888e96e <netif_set_addr>
  if (autoip == NULL) {
    e889ab26:	e02d                	bnez	s0,e889ab88 <autoip_start+0xc6>
    autoip = (struct autoip *)mem_calloc(1, sizeof(struct autoip));
    e889ab28:	45b1                	li	a1,12
    e889ab2a:	4505                	li	a0,1
    e889ab2c:	df8f30ef          	jal	ra,e888e124 <mem_calloc>
    e889ab30:	842a                	mv	s0,a0
      return ERR_MEM;
    e889ab32:	557d                	li	a0,-1
    if (autoip == NULL) {
    e889ab34:	d869                	beqz	s0,e889ab06 <autoip_start+0x44>
    netif_set_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_AUTOIP, autoip);
    e889ab36:	f4e0                	sd	s0,232(s1)
  u32_t addr = lwip_ntohl(LWIP_AUTOIP_CREATE_SEED_ADDR(netif));
    e889ab38:	1084d503          	lhu	a0,264(s1)
    e889ab3c:	a9fe0937          	lui	s2,0xa9fe0
    e889ab40:	1009079b          	addiw	a5,s2,256
    e889ab44:	9d3d                	addw	a0,a0,a5
  struct autoip *autoip = netif_autoip_data(netif);
    e889ab46:	0e84b983          	ld	s3,232(s1)
  u32_t addr = lwip_ntohl(LWIP_AUTOIP_CREATE_SEED_ADDR(netif));
    e889ab4a:	be4ec0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889ab4e:	2501                	sext.w	a0,a0
    e889ab50:	bdeec0ef          	jal	ra,e8886f2e <lwip_htonl>
  addr += autoip->tried_llipaddr;
    e889ab54:	0099c783          	lbu	a5,9(s3)
    e889ab58:	9d3d                	addw	a0,a0,a5
  addr = AUTOIP_NET | (addr & 0xffff);
    e889ab5a:	3c05350b          	extu	a0,a0,15,0
    e889ab5e:	01256533          	or	a0,a0,s2
  if (addr < AUTOIP_RANGE_START) {
    e889ab62:	a9fe07b7          	lui	a5,0xa9fe0
  addr = AUTOIP_NET | (addr & 0xffff);
    e889ab66:	2501                	sext.w	a0,a0
  if (addr < AUTOIP_RANGE_START) {
    e889ab68:	0ff78793          	addi	a5,a5,255 # ffffffffa9fe00ff <__DRAM0_INF_BASE+0xfffffffea9ff00ff>
    e889ab6c:	02a7e363          	bltu	a5,a0,e889ab92 <autoip_start+0xd0>
    addr += AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1;
    e889ab70:	67c1                	lui	a5,0x10
    e889ab72:	e007879b          	addiw	a5,a5,-512
    addr -= AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1;
    e889ab76:	9d3d                	addw	a0,a0,a5
  ip4_addr_set_u32(ipaddr, lwip_htonl(addr));
    e889ab78:	bb6ec0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889ab7c:	c008                	sw	a0,0(s0)
  autoip_start_probing(netif);
    e889ab7e:	8526                	mv	a0,s1
    e889ab80:	eedff0ef          	jal	ra,e889aa6c <autoip_start_probing>
  return result;
    e889ab84:	4501                	li	a0,0
    e889ab86:	b741                	j	e889ab06 <autoip_start+0x44>
    ip4_addr_set_zero(&autoip->llipaddr);
    e889ab88:	00043023          	sd	zero,0(s0)
    autoip->lastconflict = 0;
    e889ab8c:	00040423          	sb	zero,8(s0)
    e889ab90:	b765                	j	e889ab38 <autoip_start+0x76>
  if (addr > AUTOIP_RANGE_END) {
    e889ab92:	a9ff07b7          	lui	a5,0xa9ff0
    e889ab96:	eff78793          	addi	a5,a5,-257 # ffffffffa9fefeff <__DRAM0_INF_BASE+0xfffffffea9fffeff>
    e889ab9a:	fca7ffe3          	bgeu	a5,a0,e889ab78 <autoip_start+0xb6>
    addr -= AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1;
    e889ab9e:	77c1                	lui	a5,0xffff0
    e889aba0:	2007879b          	addiw	a5,a5,512
    e889aba4:	bfc9                	j	e889ab76 <autoip_start+0xb4>

00000000e889aba6 <autoip_network_changed>:
 * and begin probing with the same address.
 */
void
autoip_network_changed(struct netif *netif)
{
  struct autoip *autoip = netif_autoip_data(netif);
    e889aba6:	757c                	ld	a5,232(a0)

  if (autoip && (autoip->state != AUTOIP_STATE_OFF)) {
    e889aba8:	c791                	beqz	a5,e889abb4 <autoip_network_changed+0xe>
    e889abaa:	0047c783          	lbu	a5,4(a5) # ffffffffffff0004 <__DRAM0_INF_BASE+0xffffffff00000004>
    e889abae:	c399                	beqz	a5,e889abb4 <autoip_network_changed+0xe>
    autoip_start_probing(netif);
    e889abb0:	ebdff06f          	j	e889aa6c <autoip_start_probing>
  }
}
    e889abb4:	8082                	ret

00000000e889abb6 <autoip_tmr>:
/**
 * Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds
 */
void
autoip_tmr(void)
{
    e889abb6:	715d                	addi	sp,sp,-80
  struct netif *netif;
  /* loop through netif's */
  NETIF_FOREACH(netif) {
    e889abb8:	0004c797          	auipc	a5,0x4c
    e889abbc:	88078793          	addi	a5,a5,-1920 # e88e6438 <netif_list>
{
    e889abc0:	fc26                	sd	s1,56(sp)
    e889abc2:	f84a                	sd	s2,48(sp)
    e889abc4:	f44e                	sd	s3,40(sp)
    e889abc6:	f052                	sd	s4,32(sp)
    e889abc8:	ec56                	sd	s5,24(sp)
    e889abca:	e486                	sd	ra,72(sp)
    e889abcc:	e0a2                	sd	s0,64(sp)
    e889abce:	e85a                	sd	s6,16(sp)
  NETIF_FOREACH(netif) {
    e889abd0:	0007bb03          	ld	s6,0(a5)
  IP4_ADDR(&sn_mask, 255, 255, 0, 0);
    e889abd4:	69c1                	lui	s3,0x10

      if (autoip->ttw > 0) {
        autoip->ttw--;
      }

      switch (autoip->state) {
    e889abd6:	4485                	li	s1,1
        case AUTOIP_STATE_PROBING:
          if (autoip->ttw == 0) {
            if (autoip->sent_num >= PROBE_NUM) {
    e889abd8:	4909                	li	s2,2
                           ip4_addr3_16(&autoip->llipaddr), ip4_addr4_16(&autoip->llipaddr)));
            } else {
              autoip_arp_probe(netif);
              LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_tmr() PROBING Sent Probe\n"));
              autoip->sent_num++;
              if (autoip->sent_num == PROBE_NUM) {
    e889abda:	4a0d                	li	s4,3
                /* calculate time to wait to for announce */
                autoip->ttw = ANNOUNCE_WAIT * AUTOIP_TICKS_PER_SECOND;
              } else {
                /* calculate time to wait to next probe */
                autoip->ttw = (u16_t)((LWIP_AUTOIP_RAND(netif) %
    e889abdc:	4aa9                	li	s5,10
  IP4_ADDR(&sn_mask, 255, 255, 0, 0);
    e889abde:	39fd                	addiw	s3,s3,-1
  NETIF_FOREACH(netif) {
    e889abe0:	000b1c63          	bnez	s6,e889abf8 <autoip_tmr+0x42>
          /* nothing to do in other states */
          break;
      }
    }
  }
}
    e889abe4:	60a6                	ld	ra,72(sp)
    e889abe6:	6406                	ld	s0,64(sp)
    e889abe8:	74e2                	ld	s1,56(sp)
    e889abea:	7942                	ld	s2,48(sp)
    e889abec:	79a2                	ld	s3,40(sp)
    e889abee:	7a02                	ld	s4,32(sp)
    e889abf0:	6ae2                	ld	s5,24(sp)
    e889abf2:	6b42                	ld	s6,16(sp)
    e889abf4:	6161                	addi	sp,sp,80
    e889abf6:	8082                	ret
    struct autoip *autoip = netif_autoip_data(netif);
    e889abf8:	0e8b3403          	ld	s0,232(s6)
    if (autoip != NULL) {
    e889abfc:	c01d                	beqz	s0,e889ac22 <autoip_tmr+0x6c>
      if (autoip->lastconflict > 0) {
    e889abfe:	00844783          	lbu	a5,8(s0)
    e889ac02:	c781                	beqz	a5,e889ac0a <autoip_tmr+0x54>
        autoip->lastconflict--;
    e889ac04:	37fd                	addiw	a5,a5,-1
    e889ac06:	00f40423          	sb	a5,8(s0)
      if (autoip->ttw > 0) {
    e889ac0a:	00645783          	lhu	a5,6(s0)
    e889ac0e:	c781                	beqz	a5,e889ac16 <autoip_tmr+0x60>
        autoip->ttw--;
    e889ac10:	37fd                	addiw	a5,a5,-1
    e889ac12:	00f41323          	sh	a5,6(s0)
      switch (autoip->state) {
    e889ac16:	00444783          	lbu	a5,4(s0)
    e889ac1a:	00978763          	beq	a5,s1,e889ac28 <autoip_tmr+0x72>
    e889ac1e:	09278863          	beq	a5,s2,e889acae <autoip_tmr+0xf8>
  NETIF_FOREACH(netif) {
    e889ac22:	000b3b03          	ld	s6,0(s6)
    e889ac26:	bf6d                	j	e889abe0 <autoip_tmr+0x2a>
          if (autoip->ttw == 0) {
    e889ac28:	00645783          	lhu	a5,6(s0)
    e889ac2c:	fbfd                	bnez	a5,e889ac22 <autoip_tmr+0x6c>
            if (autoip->sent_num >= PROBE_NUM) {
    e889ac2e:	00544783          	lbu	a5,5(s0)
    e889ac32:	02f97363          	bgeu	s2,a5,e889ac58 <autoip_tmr+0xa2>
              autoip->state = AUTOIP_STATE_ANNOUNCING;
    e889ac36:	01240223          	sb	s2,4(s0)
  netif_set_addr(netif, &autoip->llipaddr, &sn_mask, &gw_addr);
    e889ac3a:	0e8b3583          	ld	a1,232(s6)
    e889ac3e:	0034                	addi	a3,sp,8
    e889ac40:	860a                	mv	a2,sp
    e889ac42:	855a                	mv	a0,s6
  IP4_ADDR(&sn_mask, 255, 255, 0, 0);
    e889ac44:	c04e                	sw	s3,0(sp)
  IP4_ADDR(&gw_addr, 0, 0, 0, 0);
    e889ac46:	c402                	sw	zero,8(sp)
  netif_set_addr(netif, &autoip->llipaddr, &sn_mask, &gw_addr);
    e889ac48:	d27f30ef          	jal	ra,e888e96e <netif_set_addr>
              autoip->sent_num = 1;
    e889ac4c:	009402a3          	sb	s1,5(s0)
                autoip->ttw = ANNOUNCE_WAIT * AUTOIP_TICKS_PER_SECOND;
    e889ac50:	47d1                	li	a5,20
                autoip->ttw = (u16_t)((LWIP_AUTOIP_RAND(netif) %
    e889ac52:	00f41323          	sh	a5,6(s0)
    e889ac56:	b7f1                	j	e889ac22 <autoip_tmr+0x6c>
  return etharp_request(netif, &autoip->llipaddr);
    e889ac58:	0e8b3583          	ld	a1,232(s6)
    e889ac5c:	855a                	mv	a0,s6
    e889ac5e:	ba2ed0ef          	jal	ra,e8888000 <etharp_request>
              autoip->sent_num++;
    e889ac62:	00544783          	lbu	a5,5(s0)
    e889ac66:	2785                	addiw	a5,a5,1
    e889ac68:	0ff7f793          	andi	a5,a5,255
    e889ac6c:	00f402a3          	sb	a5,5(s0)
              if (autoip->sent_num == PROBE_NUM) {
    e889ac70:	ff4780e3          	beq	a5,s4,e889ac50 <autoip_tmr+0x9a>
                autoip->ttw = (u16_t)((LWIP_AUTOIP_RAND(netif) %
    e889ac74:	107b4703          	lbu	a4,263(s6)
    e889ac78:	109b4783          	lbu	a5,265(s6)
    e889ac7c:	0e8b3683          	ld	a3,232(s6)
    e889ac80:	0107171b          	slliw	a4,a4,0x10
    e889ac84:	0187979b          	slliw	a5,a5,0x18
    e889ac88:	8fd9                	or	a5,a5,a4
    e889ac8a:	108b4703          	lbu	a4,264(s6)
    e889ac8e:	8fd9                	or	a5,a5,a4
    e889ac90:	106b4703          	lbu	a4,262(s6)
    e889ac94:	0087171b          	slliw	a4,a4,0x8
    e889ac98:	8fd9                	or	a5,a5,a4
    e889ac9a:	2781                	sext.w	a5,a5
    e889ac9c:	4701                	li	a4,0
    e889ac9e:	c299                	beqz	a3,e889aca4 <autoip_tmr+0xee>
    e889aca0:	0096c703          	lbu	a4,9(a3)
    e889aca4:	9fb9                	addw	a5,a5,a4
    e889aca6:	0357f7bb          	remuw	a5,a5,s5
    e889acaa:	27a9                	addiw	a5,a5,10
    e889acac:	b75d                	j	e889ac52 <autoip_tmr+0x9c>
          if (autoip->ttw == 0) {
    e889acae:	00645783          	lhu	a5,6(s0)
    e889acb2:	fba5                	bnez	a5,e889ac22 <autoip_tmr+0x6c>
  return etharp_gratuitous(netif);
    e889acb4:	008b0593          	addi	a1,s6,8
    e889acb8:	855a                	mv	a0,s6
    e889acba:	b46ed0ef          	jal	ra,e8888000 <etharp_request>
            autoip->ttw = ANNOUNCE_INTERVAL * AUTOIP_TICKS_PER_SECOND;
    e889acbe:	47d1                	li	a5,20
    e889acc0:	00f41323          	sh	a5,6(s0)
            autoip->sent_num++;
    e889acc4:	00544783          	lbu	a5,5(s0)
    e889acc8:	2785                	addiw	a5,a5,1
    e889acca:	0ff7f793          	andi	a5,a5,255
    e889acce:	00f402a3          	sb	a5,5(s0)
            if (autoip->sent_num >= ANNOUNCE_NUM) {
    e889acd2:	f4f4f8e3          	bgeu	s1,a5,e889ac22 <autoip_tmr+0x6c>
              autoip->state = AUTOIP_STATE_BOUND;
    e889acd6:	478d                	li	a5,3
    e889acd8:	c05c                	sw	a5,4(s0)
    e889acda:	b7a1                	j	e889ac22 <autoip_tmr+0x6c>

00000000e889acdc <autoip_arp_reply>:
 * @param netif network interface to use for autoip processing
 * @param hdr Incoming ARP packet
 */
void
autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr)
{
    e889acdc:	7139                	addi	sp,sp,-64
    e889acde:	fc91540b          	sdd	s0,s1,(sp),2,4
    e889ace2:	fc06                	sd	ra,56(sp)
    e889ace4:	f84a                	sd	s2,48(sp)
  struct autoip *autoip = netif_autoip_data(netif);
    e889ace6:	0e853903          	ld	s2,232(a0)

  LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_arp_reply()\n"));
  if ((autoip != NULL) && (autoip->state != AUTOIP_STATE_OFF)) {
    e889acea:	06090e63          	beqz	s2,e889ad66 <autoip_arp_reply+0x8a>
    e889acee:	00494783          	lbu	a5,4(s2) # ffffffffa9fe0004 <__DRAM0_INF_BASE+0xfffffffea9ff0004>
    e889acf2:	cbb5                	beqz	a5,e889ad66 <autoip_arp_reply+0x8a>
    e889acf4:	84ae                	mv	s1,a1
     * when probing  ip.dst == llipaddr && hw.src != netif->hwaddr
     * we have a conflict and must solve it
     */
    ip4_addr_t sipaddr, dipaddr;
    struct eth_addr netifaddr;
    SMEMCPY(netifaddr.addr, netif->hwaddr, ETH_HWADDR_LEN);
    e889acf6:	4619                	li	a2,6
    e889acf8:	10450593          	addi	a1,a0,260
    e889acfc:	842a                	mv	s0,a0
    e889acfe:	0828                	addi	a0,sp,24
    e889ad00:	ea0e10ef          	jal	ra,e887c3a0 <eLIBs_memcpy>

    /* Copy struct ip4_addr_wordaligned to aligned ip4_addr, to support compilers without
     * structure packing (not using structure copy which breaks strict-aliasing rules).
     */
    IPADDR_WORDALIGNED_COPY_TO_IP4_ADDR_T(&sipaddr, &hdr->sipaddr);
    e889ad04:	4611                	li	a2,4
    e889ad06:	00e48593          	addi	a1,s1,14
    e889ad0a:	0028                	addi	a0,sp,8
    e889ad0c:	e94e10ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
    IPADDR_WORDALIGNED_COPY_TO_IP4_ADDR_T(&dipaddr, &hdr->dipaddr);
    e889ad10:	4611                	li	a2,4
    e889ad12:	01848593          	addi	a1,s1,24
    e889ad16:	0808                	addi	a0,sp,16
    e889ad18:	e88e10ef          	jal	ra,e887c3a0 <eLIBs_memcpy>

    if (autoip->state == AUTOIP_STATE_PROBING) {
    e889ad1c:	00494703          	lbu	a4,4(s2)
    e889ad20:	4785                	li	a5,1
    e889ad22:	04f71863          	bne	a4,a5,e889ad72 <autoip_arp_reply+0x96>
       * from beginning to after ANNOUNCE_WAIT
       * seconds we have a conflict if
       * ip.src == llipaddr OR
       * ip.dst == llipaddr && hw.src != own hwaddr
       */
      if ((ip4_addr_cmp(&sipaddr, &autoip->llipaddr)) ||
    e889ad26:	4722                	lw	a4,8(sp)
    e889ad28:	00092783          	lw	a5,0(s2)
    e889ad2c:	02f70063          	beq	a4,a5,e889ad4c <autoip_arp_reply+0x70>
    e889ad30:	eb1d                	bnez	a4,e889ad66 <autoip_arp_reply+0x8a>
          (ip4_addr_isany_val(sipaddr) &&
    e889ad32:	4742                	lw	a4,16(sp)
    e889ad34:	02f71963          	bne	a4,a5,e889ad66 <autoip_arp_reply+0x8a>
    e889ad38:	4781                	li	a5,0
    e889ad3a:	04a1                	addi	s1,s1,8
    e889ad3c:	4619                	li	a2,6
    e889ad3e:	0838                	addi	a4,sp,24
    e889ad40:	80f7468b          	lrbu	a3,a4,a5,0
    e889ad44:	80f4c70b          	lrbu	a4,s1,a5,0
    e889ad48:	00e68c63          	beq	a3,a4,e889ad60 <autoip_arp_reply+0x84>
  struct autoip *autoip = netif_autoip_data(netif);
    e889ad4c:	7478                	ld	a4,232(s0)
  autoip->tried_llipaddr++;
    e889ad4e:	00974783          	lbu	a5,9(a4)
    e889ad52:	2785                	addiw	a5,a5,1
    e889ad54:	00f704a3          	sb	a5,9(a4)
  autoip_start(netif);
    e889ad58:	8522                	mv	a0,s0
    e889ad5a:	d69ff0ef          	jal	ra,e889aac2 <autoip_start>
    e889ad5e:	a021                	j	e889ad66 <autoip_arp_reply+0x8a>
    e889ad60:	0785                	addi	a5,a5,1
    e889ad62:	fcc79ee3          	bne	a5,a2,e889ad3e <autoip_arp_reply+0x62>
                    ("autoip_arp_reply(): Conflicting ARP-Packet detected\n"));
        autoip_handle_arp_conflict(netif);
      }
    }
  }
}
    e889ad66:	70e2                	ld	ra,56(sp)
    e889ad68:	fc91440b          	ldd	s0,s1,(sp),2,4
    e889ad6c:	7942                	ld	s2,48(sp)
    e889ad6e:	6121                	addi	sp,sp,64
    e889ad70:	8082                	ret
      if (ip4_addr_cmp(&sipaddr, &autoip->llipaddr) &&
    e889ad72:	4722                	lw	a4,8(sp)
    e889ad74:	00092783          	lw	a5,0(s2)
    e889ad78:	fef717e3          	bne	a4,a5,e889ad66 <autoip_arp_reply+0x8a>
    e889ad7c:	4781                	li	a5,0
    e889ad7e:	04a1                	addi	s1,s1,8
    e889ad80:	4619                	li	a2,6
    e889ad82:	a021                	j	e889ad8a <autoip_arp_reply+0xae>
    e889ad84:	0785                	addi	a5,a5,1
    e889ad86:	fec780e3          	beq	a5,a2,e889ad66 <autoip_arp_reply+0x8a>
    e889ad8a:	0838                	addi	a4,sp,24
    e889ad8c:	80f7468b          	lrbu	a3,a4,a5,0
    e889ad90:	80f4c70b          	lrbu	a4,s1,a5,0
    e889ad94:	fee688e3          	beq	a3,a4,e889ad84 <autoip_arp_reply+0xa8>
  struct autoip *autoip = netif_autoip_data(netif);
    e889ad98:	7464                	ld	s1,232(s0)
  if (autoip->lastconflict > 0) {
    e889ad9a:	0084c783          	lbu	a5,8(s1)
    e889ad9e:	eb99                	bnez	a5,e889adb4 <autoip_arp_reply+0xd8>
  return etharp_gratuitous(netif);
    e889ada0:	00840593          	addi	a1,s0,8
    e889ada4:	8522                	mv	a0,s0
    e889ada6:	a5aed0ef          	jal	ra,e8888000 <etharp_request>
    autoip->lastconflict = DEFEND_INTERVAL * AUTOIP_TICKS_PER_SECOND;
    e889adaa:	06400793          	li	a5,100
    e889adae:	00f48423          	sb	a5,8(s1)
}
    e889adb2:	bf55                	j	e889ad66 <autoip_arp_reply+0x8a>
  autoip->tried_llipaddr++;
    e889adb4:	0094c783          	lbu	a5,9(s1)
    e889adb8:	2785                	addiw	a5,a5,1
    e889adba:	00f484a3          	sb	a5,9(s1)
    e889adbe:	bf69                	j	e889ad58 <autoip_arp_reply+0x7c>

00000000e889adc0 <autoip_accept_packet>:
}

u8_t
autoip_accept_packet(struct netif *netif, const ip4_addr_t *addr)
{
  struct autoip *autoip = netif_autoip_data(netif);
    e889adc0:	757c                	ld	a5,232(a0)
  return (autoip != NULL) && ip4_addr_cmp(addr, &(autoip->llipaddr));
    e889adc2:	c799                	beqz	a5,e889add0 <autoip_accept_packet+0x10>
    e889adc4:	4188                	lw	a0,0(a1)
    e889adc6:	439c                	lw	a5,0(a5)
    e889adc8:	8d1d                	sub	a0,a0,a5
    e889adca:	00153513          	seqz	a0,a0
    e889adce:	8082                	ret
    e889add0:	4501                	li	a0,0
}
    e889add2:	8082                	ret

00000000e889add4 <dhcp_set_state>:
 * If the state changed, reset the number of tries.
 */
static void
dhcp_set_state(struct dhcp *dhcp, u8_t new_state)
{
  if (new_state != dhcp->state) {
    e889add4:	00554783          	lbu	a5,5(a0)
    e889add8:	00b78863          	beq	a5,a1,e889ade8 <dhcp_set_state+0x14>
    dhcp->state = new_state;
    e889addc:	00b502a3          	sb	a1,5(a0)
    dhcp->tries = 0;
    e889ade0:	00050323          	sb	zero,6(a0)
    dhcp->request_timeout = 0;
    e889ade4:	00051423          	sh	zero,8(a0)
  }
}
    e889ade8:	8082                	ret

00000000e889adea <dhcp_option_short>:
  return options_out_len;
}

static u16_t
dhcp_option_short(u16_t options_out_len, u8_t *options, u16_t value)
{
    e889adea:	7179                	addi	sp,sp,-48
    e889adec:	e422                	sd	s0,8(sp)
    e889adee:	e826                	sd	s1,16(sp)
    e889adf0:	ec4a                	sd	s2,24(sp)
    e889adf2:	f04e                	sd	s3,32(sp)
    e889adf4:	f406                	sd	ra,40(sp)
  LWIP_ASSERT("dhcp_option_short: options_out_len + 2 <= DHCP_OPTIONS_LEN", options_out_len + 2U <= DHCP_OPTIONS_LEN);
    e889adf6:	0025049b          	addiw	s1,a0,2
    e889adfa:	04400793          	li	a5,68
{
    e889adfe:	842a                	mv	s0,a0
    e889ae00:	892e                	mv	s2,a1
    e889ae02:	89b2                	mv	s3,a2
  LWIP_ASSERT("dhcp_option_short: options_out_len + 2 <= DHCP_OPTIONS_LEN", options_out_len + 2U <= DHCP_OPTIONS_LEN);
    e889ae04:	0297f863          	bgeu	a5,s1,e889ae34 <dhcp_option_short+0x4a>
    e889ae08:	02f00593          	li	a1,47
    e889ae0c:	00039517          	auipc	a0,0x39
    e889ae10:	b0450513          	addi	a0,a0,-1276 # e88d3910 <dhcp_discover_request_options+0x108>
    e889ae14:	d64e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889ae18:	00150693          	addi	a3,a0,1
    e889ae1c:	5ae00613          	li	a2,1454
    e889ae20:	00039597          	auipc	a1,0x39
    e889ae24:	b8058593          	addi	a1,a1,-1152 # e88d39a0 <dhcp_discover_request_options+0x198>
    e889ae28:	00034517          	auipc	a0,0x34
    e889ae2c:	28850513          	addi	a0,a0,648 # e88cf0b0 <kSinTable1024+0x900>
    e889ae30:	c96e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
  options[options_out_len++] = (u8_t)((value & 0xff00U) >> 8);
    e889ae34:	0089d79b          	srliw	a5,s3,0x8
    e889ae38:	0089578b          	srb	a5,s2,s0,0
    e889ae3c:	2405                	addiw	s0,s0,1
  options[options_out_len++] = (u8_t) (value & 0x00ffU);
    e889ae3e:	3c04340b          	extu	s0,s0,15,0
    e889ae42:	0089598b          	srb	s3,s2,s0,0
  return options_out_len;
}
    e889ae46:	70a2                	ld	ra,40(sp)
    e889ae48:	6422                	ld	s0,8(sp)
    e889ae4a:	3c04b50b          	extu	a0,s1,15,0
    e889ae4e:	6962                	ld	s2,24(sp)
    e889ae50:	64c2                	ld	s1,16(sp)
    e889ae52:	7982                	ld	s3,32(sp)
    e889ae54:	6145                	addi	sp,sp,48
    e889ae56:	8082                	ret

00000000e889ae58 <dhcp_option>:
{
    e889ae58:	7179                	addi	sp,sp,-48
    e889ae5a:	e422                	sd	s0,8(sp)
    e889ae5c:	e826                	sd	s1,16(sp)
    e889ae5e:	ec4a                	sd	s2,24(sp)
    e889ae60:	f04e                	sd	s3,32(sp)
  LWIP_ASSERT("dhcp_option: options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN);
    e889ae62:	0026879b          	addiw	a5,a3,2
{
    e889ae66:	f406                	sd	ra,40(sp)
  LWIP_ASSERT("dhcp_option: options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN);
    e889ae68:	97aa                	add	a5,a5,a0
    e889ae6a:	04400713          	li	a4,68
{
    e889ae6e:	842a                	mv	s0,a0
    e889ae70:	84ae                	mv	s1,a1
    e889ae72:	89b2                	mv	s3,a2
    e889ae74:	8936                	mv	s2,a3
  LWIP_ASSERT("dhcp_option: options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN);
    e889ae76:	02f77863          	bgeu	a4,a5,e889aea6 <dhcp_option+0x4e>
    e889ae7a:	02f00593          	li	a1,47
    e889ae7e:	00039517          	auipc	a0,0x39
    e889ae82:	a9250513          	addi	a0,a0,-1390 # e88d3910 <dhcp_discover_request_options+0x108>
    e889ae86:	cf2e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889ae8a:	00150693          	addi	a3,a0,1
    e889ae8e:	59a00613          	li	a2,1434
    e889ae92:	00039597          	auipc	a1,0x39
    e889ae96:	9be58593          	addi	a1,a1,-1602 # e88d3850 <dhcp_discover_request_options+0x48>
    e889ae9a:	00034517          	auipc	a0,0x34
    e889ae9e:	21650513          	addi	a0,a0,534 # e88cf0b0 <kSinTable1024+0x900>
    e889aea2:	c24e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
  options[options_out_len++] = option_type;
    e889aea6:	0084d98b          	srb	s3,s1,s0,0
    e889aeaa:	0014079b          	addiw	a5,s0,1
  options[options_out_len++] = option_len;
    e889aeae:	0024051b          	addiw	a0,s0,2
}
    e889aeb2:	70a2                	ld	ra,40(sp)
    e889aeb4:	6422                	ld	s0,8(sp)
  options[options_out_len++] = option_len;
    e889aeb6:	3c07b78b          	extu	a5,a5,15,0
    e889aeba:	00f4d90b          	srb	s2,s1,a5,0
}
    e889aebe:	7982                	ld	s3,32(sp)
    e889aec0:	64c2                	ld	s1,16(sp)
    e889aec2:	6962                	ld	s2,24(sp)
    e889aec4:	3c05350b          	extu	a0,a0,15,0
    e889aec8:	6145                	addi	sp,sp,48
    e889aeca:	8082                	ret

00000000e889aecc <dhcp_option_byte>:
{
    e889aecc:	1101                	addi	sp,sp,-32
    e889aece:	f891540b          	sdd	s0,s1,(sp),0,4
    e889aed2:	e84a                	sd	s2,16(sp)
    e889aed4:	ec06                	sd	ra,24(sp)
  LWIP_ASSERT("dhcp_option_byte: options_out_len < DHCP_OPTIONS_LEN", options_out_len < DHCP_OPTIONS_LEN);
    e889aed6:	04300793          	li	a5,67
{
    e889aeda:	842a                	mv	s0,a0
    e889aedc:	84ae                	mv	s1,a1
    e889aede:	8932                	mv	s2,a2
  LWIP_ASSERT("dhcp_option_byte: options_out_len < DHCP_OPTIONS_LEN", options_out_len < DHCP_OPTIONS_LEN);
    e889aee0:	02a7f863          	bgeu	a5,a0,e889af10 <dhcp_option_byte+0x44>
    e889aee4:	02f00593          	li	a1,47
    e889aee8:	00039517          	auipc	a0,0x39
    e889aeec:	a2850513          	addi	a0,a0,-1496 # e88d3910 <dhcp_discover_request_options+0x108>
    e889aef0:	c88e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889aef4:	00150693          	addi	a3,a0,1
    e889aef8:	5a600613          	li	a2,1446
    e889aefc:	00039597          	auipc	a1,0x39
    e889af00:	99c58593          	addi	a1,a1,-1636 # e88d3898 <dhcp_discover_request_options+0x90>
    e889af04:	00034517          	auipc	a0,0x34
    e889af08:	1ac50513          	addi	a0,a0,428 # e88cf0b0 <kSinTable1024+0x900>
    e889af0c:	bbae10ef          	jal	ra,e887c2c6 <eLIBs_printf>
  options[options_out_len++] = value;
    e889af10:	0084d90b          	srb	s2,s1,s0,0
    e889af14:	0014051b          	addiw	a0,s0,1
}
    e889af18:	60e2                	ld	ra,24(sp)
    e889af1a:	f891440b          	ldd	s0,s1,(sp),0,4
    e889af1e:	6942                	ld	s2,16(sp)
    e889af20:	3c05350b          	extu	a0,a0,15,0
    e889af24:	6105                	addi	sp,sp,32
    e889af26:	8082                	ret

00000000e889af28 <dhcp_option_long>:

static u16_t
dhcp_option_long(u16_t options_out_len, u8_t *options, u32_t value)
{
    e889af28:	7179                	addi	sp,sp,-48
    e889af2a:	e422                	sd	s0,8(sp)
    e889af2c:	e826                	sd	s1,16(sp)
    e889af2e:	ec4a                	sd	s2,24(sp)
    e889af30:	f04e                	sd	s3,32(sp)
    e889af32:	f406                	sd	ra,40(sp)
  LWIP_ASSERT("dhcp_option_long: options_out_len + 4 <= DHCP_OPTIONS_LEN", options_out_len + 4U <= DHCP_OPTIONS_LEN);
    e889af34:	0045099b          	addiw	s3,a0,4
    e889af38:	04400793          	li	a5,68
{
    e889af3c:	842a                	mv	s0,a0
    e889af3e:	84ae                	mv	s1,a1
    e889af40:	8932                	mv	s2,a2
  LWIP_ASSERT("dhcp_option_long: options_out_len + 4 <= DHCP_OPTIONS_LEN", options_out_len + 4U <= DHCP_OPTIONS_LEN);
    e889af42:	0337f863          	bgeu	a5,s3,e889af72 <dhcp_option_long+0x4a>
    e889af46:	02f00593          	li	a1,47
    e889af4a:	00039517          	auipc	a0,0x39
    e889af4e:	9c650513          	addi	a0,a0,-1594 # e88d3910 <dhcp_discover_request_options+0x108>
    e889af52:	c26e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889af56:	00150693          	addi	a3,a0,1
    e889af5a:	5b700613          	li	a2,1463
    e889af5e:	00039597          	auipc	a1,0x39
    e889af62:	97258593          	addi	a1,a1,-1678 # e88d38d0 <dhcp_discover_request_options+0xc8>
    e889af66:	00034517          	auipc	a0,0x34
    e889af6a:	14a50513          	addi	a0,a0,330 # e88cf0b0 <kSinTable1024+0x900>
    e889af6e:	b58e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
  options[options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24);
    e889af72:	0189579b          	srliw	a5,s2,0x18
    e889af76:	0014071b          	addiw	a4,s0,1
    e889af7a:	0084d78b          	srb	a5,s1,s0,0
  options[options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16);
    e889af7e:	3c07370b          	extu	a4,a4,15,0
    e889af82:	7c09378b          	extu	a5,s2,31,0
    e889af86:	0107d693          	srli	a3,a5,0x10
    e889af8a:	00e4d68b          	srb	a3,s1,a4,0
    e889af8e:	0024071b          	addiw	a4,s0,2
  options[options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8);
    e889af92:	3c07370b          	extu	a4,a4,15,0
    e889af96:	83a1                	srli	a5,a5,0x8
    e889af98:	240d                	addiw	s0,s0,3
    e889af9a:	00e4d78b          	srb	a5,s1,a4,0
  options[options_out_len++] = (u8_t)((value & 0x000000ffUL));
    e889af9e:	3c04340b          	extu	s0,s0,15,0
    e889afa2:	0084d90b          	srb	s2,s1,s0,0
  return options_out_len;
}
    e889afa6:	70a2                	ld	ra,40(sp)
    e889afa8:	6422                	ld	s0,8(sp)
    e889afaa:	3c09b50b          	extu	a0,s3,15,0
    e889afae:	64c2                	ld	s1,16(sp)
    e889afb0:	6962                	ld	s2,24(sp)
    e889afb2:	7982                	ld	s3,32(sp)
    e889afb4:	6145                	addi	sp,sp,48
    e889afb6:	8082                	ret

00000000e889afb8 <dhcp_create_msg>:
 * @param dhcp dhcp control struct
 * @param message_type message type of the request
 */
static struct pbuf *
dhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type, u16_t *options_out_len)
{
    e889afb8:	7139                	addi	sp,sp,-64
    e889afba:	fc06                	sd	ra,56(sp)
    e889afbc:	e422                	sd	s0,8(sp)
    e889afbe:	e826                	sd	s1,16(sp)
    e889afc0:	ec4a                	sd	s2,24(sp)
    e889afc2:	f04e                	sd	s3,32(sp)
    e889afc4:	f452                	sd	s4,40(sp)
    e889afc6:	f856                	sd	s5,48(sp)
  if (!xid_initialised) {
    xid = DHCP_GLOBAL_XID;
    xid_initialised = !xid_initialised;
  }
#endif
  LWIP_ERROR("dhcp_create_msg: netif != NULL", (netif != NULL), return NULL;);
    e889afc8:	e131                	bnez	a0,e889b00c <dhcp_create_msg+0x54>
    e889afca:	02f00593          	li	a1,47
    e889afce:	00039517          	auipc	a0,0x39
    e889afd2:	94250513          	addi	a0,a0,-1726 # e88d3910 <dhcp_discover_request_options+0x108>
    e889afd6:	ba2e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889afda:	00150693          	addi	a3,a0,1
    e889afde:	76900613          	li	a2,1897
    e889afe2:	00038597          	auipc	a1,0x38
    e889afe6:	77e58593          	addi	a1,a1,1918 # e88d3760 <netconn_reset+0x38c>
  LWIP_ERROR("dhcp_create_msg: dhcp != NULL", (dhcp != NULL), return NULL;);
    e889afea:	00034517          	auipc	a0,0x34
    e889afee:	0c650513          	addi	a0,a0,198 # e88cf0b0 <kSinTable1024+0x900>
    e889aff2:	ad4e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889aff6:	4481                	li	s1,0
  options_out_len_loc = dhcp_option_byte(options_out_len_loc, msg_out->options, message_type);
  if (options_out_len) {
    *options_out_len = options_out_len_loc;
  }
  return p_out;
}
    e889aff8:	70e2                	ld	ra,56(sp)
    e889affa:	6422                	ld	s0,8(sp)
    e889affc:	8526                	mv	a0,s1
    e889affe:	6962                	ld	s2,24(sp)
    e889b000:	64c2                	ld	s1,16(sp)
    e889b002:	7982                	ld	s3,32(sp)
    e889b004:	7a22                	ld	s4,40(sp)
    e889b006:	7ac2                	ld	s5,48(sp)
    e889b008:	6121                	addi	sp,sp,64
    e889b00a:	8082                	ret
    e889b00c:	8a2e                	mv	s4,a1
  LWIP_ERROR("dhcp_create_msg: dhcp != NULL", (dhcp != NULL), return NULL;);
    e889b00e:	e195                	bnez	a1,e889b032 <dhcp_create_msg+0x7a>
    e889b010:	02f00593          	li	a1,47
    e889b014:	00039517          	auipc	a0,0x39
    e889b018:	8fc50513          	addi	a0,a0,-1796 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b01c:	b5ce10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b020:	00150693          	addi	a3,a0,1
    e889b024:	76a00613          	li	a2,1898
    e889b028:	00038597          	auipc	a1,0x38
    e889b02c:	75858593          	addi	a1,a1,1880 # e88d3780 <netconn_reset+0x3ac>
    e889b030:	bf6d                	j	e889afea <dhcp_create_msg+0x32>
    e889b032:	89aa                	mv	s3,a0
    e889b034:	8932                	mv	s2,a2
  p_out = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcp_msg), PBUF_RAM);
    e889b036:	13400593          	li	a1,308
    e889b03a:	28000613          	li	a2,640
    e889b03e:	04a00513          	li	a0,74
    e889b042:	8ab6                	mv	s5,a3
    e889b044:	b4cf40ef          	jal	ra,e888f390 <pbuf_alloc>
    e889b048:	84aa                	mv	s1,a0
  if (p_out == NULL) {
    e889b04a:	d55d                	beqz	a0,e889aff8 <dhcp_create_msg+0x40>
  LWIP_ASSERT("dhcp_create_msg: check that first pbuf can hold struct dhcp_msg",
    e889b04c:	01255703          	lhu	a4,18(a0)
    e889b050:	13300793          	li	a5,307
    e889b054:	02e7e863          	bltu	a5,a4,e889b084 <dhcp_create_msg+0xcc>
    e889b058:	02f00593          	li	a1,47
    e889b05c:	00039517          	auipc	a0,0x39
    e889b060:	8b450513          	addi	a0,a0,-1868 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b064:	b14e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b068:	00150693          	addi	a3,a0,1
    e889b06c:	77200613          	li	a2,1906
    e889b070:	00038597          	auipc	a1,0x38
    e889b074:	73058593          	addi	a1,a1,1840 # e88d37a0 <netconn_reset+0x3cc>
    e889b078:	00034517          	auipc	a0,0x34
    e889b07c:	03850513          	addi	a0,a0,56 # e88cf0b0 <kSinTable1024+0x900>
    e889b080:	a46e10ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if ((message_type != DHCP_REQUEST) || (dhcp->state == DHCP_STATE_REBOOTING)) {
    e889b084:	478d                	li	a5,3
    e889b086:	00f91663          	bne	s2,a5,e889b092 <dhcp_create_msg+0xda>
    e889b08a:	005a4783          	lbu	a5,5(s4)
    e889b08e:	03279363          	bne	a5,s2,e889b0b4 <dhcp_create_msg+0xfc>
    if (dhcp->tries == 0) {
    e889b092:	006a4783          	lbu	a5,6(s4)
    e889b096:	0004b417          	auipc	s0,0x4b
    e889b09a:	6d240413          	addi	s0,s0,1746 # e88e6768 <xid.7627>
    e889b09e:	eb81                	bnez	a5,e889b0ae <dhcp_create_msg+0xf6>
      xid = LWIP_RAND();
    e889b0a0:	80000537          	lui	a0,0x80000
    e889b0a4:	fff54513          	not	a0,a0
    e889b0a8:	a4ae10ef          	jal	ra,e887c2f2 <eLIBs_ramdom>
    e889b0ac:	c008                	sw	a0,0(s0)
    dhcp->xid = xid;
    e889b0ae:	401c                	lw	a5,0(s0)
    e889b0b0:	00fa2023          	sw	a5,0(s4)
  msg_out = (struct dhcp_msg *)p_out->payload;
    e889b0b4:	6480                	ld	s0,8(s1)
  memset(msg_out, 0, sizeof(struct dhcp_msg));
    e889b0b6:	13400613          	li	a2,308
    e889b0ba:	4581                	li	a1,0
    e889b0bc:	8522                	mv	a0,s0
    e889b0be:	ad6e10ef          	jal	ra,e887c394 <eLIBs_memset>
  msg_out->op = DHCP_BOOTREQUEST;
    e889b0c2:	10100793          	li	a5,257
    e889b0c6:	00f41023          	sh	a5,0(s0)
  msg_out->hlen = netif->hwaddr_len;
    e889b0ca:	10a9c783          	lbu	a5,266(s3) # 1010a <memcmp-0xe87efef6>
    e889b0ce:	00f40123          	sb	a5,2(s0)
  msg_out->xid = lwip_htonl(dhcp->xid);
    e889b0d2:	000a2503          	lw	a0,0(s4)
    e889b0d6:	e59eb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889b0da:	c048                	sw	a0,4(s0)
  if ((message_type == DHCP_INFORM) || (message_type == DHCP_DECLINE) || (message_type == DHCP_RELEASE) ||
    e889b0dc:	4791                	li	a5,4
    e889b0de:	02f90363          	beq	s2,a5,e889b104 <dhcp_create_msg+0x14c>
    e889b0e2:	ff99079b          	addiw	a5,s2,-7
    e889b0e6:	0ff7f793          	andi	a5,a5,255
    e889b0ea:	4705                	li	a4,1
    e889b0ec:	00f77c63          	bgeu	a4,a5,e889b104 <dhcp_create_msg+0x14c>
    e889b0f0:	478d                	li	a5,3
    e889b0f2:	00f91c63          	bne	s2,a5,e889b10a <dhcp_create_msg+0x152>
       ((dhcp->state == DHCP_STATE_RENEWING) || dhcp->state == DHCP_STATE_REBINDING))) {
    e889b0f6:	005a4783          	lbu	a5,5(s4)
    e889b0fa:	37f1                	addiw	a5,a5,-4
      ((message_type == DHCP_REQUEST) && /* DHCP_STATE_BOUND not used for sending! */
    e889b0fc:	0ff7f793          	andi	a5,a5,255
    e889b100:	00f76563          	bltu	a4,a5,e889b10a <dhcp_create_msg+0x152>
    ip4_addr_copy(msg_out->ciaddr, *netif_ip4_addr(netif));
    e889b104:	0089a783          	lw	a5,8(s3)
    e889b108:	c45c                	sw	a5,12(s0)
{
    e889b10a:	4781                	li	a5,0
    msg_out->chaddr[i] = netif->hwaddr[i];
    e889b10c:	10498993          	addi	s3,s3,260
    e889b110:	01c40693          	addi	a3,s0,28
  for (i = 0; i < LWIP_MIN(DHCP_CHADDR_LEN, NETIF_MAX_HWADDR_LEN); i++) {
    e889b114:	4719                	li	a4,6
    msg_out->chaddr[i] = netif->hwaddr[i];
    e889b116:	80f9c60b          	lrbu	a2,s3,a5,0
    e889b11a:	00f6d60b          	srb	a2,a3,a5,0
  for (i = 0; i < LWIP_MIN(DHCP_CHADDR_LEN, NETIF_MAX_HWADDR_LEN); i++) {
    e889b11e:	0785                	addi	a5,a5,1
    e889b120:	fee79be3          	bne	a5,a4,e889b116 <dhcp_create_msg+0x15e>
  msg_out->cookie = PP_HTONL(DHCP_MAGIC_COOKIE);
    e889b124:	635387b7          	lui	a5,0x63538
    e889b128:	2637879b          	addiw	a5,a5,611
    e889b12c:	0ef42623          	sw	a5,236(s0)
  options_out_len_loc = dhcp_option(0, msg_out->options, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN);
    e889b130:	0f040413          	addi	s0,s0,240
    e889b134:	4685                	li	a3,1
    e889b136:	03500613          	li	a2,53
    e889b13a:	85a2                	mv	a1,s0
    e889b13c:	4501                	li	a0,0
    e889b13e:	d1bff0ef          	jal	ra,e889ae58 <dhcp_option>
  options_out_len_loc = dhcp_option_byte(options_out_len_loc, msg_out->options, message_type);
    e889b142:	864a                	mv	a2,s2
    e889b144:	85a2                	mv	a1,s0
    e889b146:	d87ff0ef          	jal	ra,e889aecc <dhcp_option_byte>
    *options_out_len = options_out_len_loc;
    e889b14a:	00aa9023          	sh	a0,0(s5)
    e889b14e:	b56d                	j	e889aff8 <dhcp_create_msg+0x40>

00000000e889b150 <dhcp_option_trailer>:
 * necessary, up to three padding bytes.
 */
static void
dhcp_option_trailer(u16_t options_out_len, u8_t *options, struct pbuf *p_out)
{
  options[options_out_len++] = DHCP_OPTION_END;
    e889b150:	0015079b          	addiw	a5,a0,1
    e889b154:	3c07b78b          	extu	a5,a5,15,0
    e889b158:	56fd                	li	a3,-1
    e889b15a:	00a5d68b          	srb	a3,a1,a0,0
  /* packet is too small, or not 4 byte aligned? */
  while (((options_out_len < DHCP_MIN_OPTIONS_LEN) || (options_out_len & 3)) &&
    e889b15e:	04300713          	li	a4,67
    e889b162:	95be                	add	a1,a1,a5
    e889b164:	00f77963          	bgeu	a4,a5,e889b176 <dhcp_option_trailer+0x26>
         (options_out_len < DHCP_OPTIONS_LEN)) {
    /* add a fill/padding byte */
    options[options_out_len++] = 0;
  }
  /* shrink the pbuf to the actual content length */
  pbuf_realloc(p_out, (u16_t)(sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + options_out_len));
    e889b168:	0f07859b          	addiw	a1,a5,240
    e889b16c:	3c05b58b          	extu	a1,a1,15,0
    e889b170:	8532                	mv	a0,a2
    e889b172:	b80f406f          	j	e888f4f2 <pbuf_realloc>
    options[options_out_len++] = 0;
    e889b176:	2785                	addiw	a5,a5,1
    e889b178:	3c07b78b          	extu	a5,a5,15,0
    e889b17c:	1815d00b          	sbia	zero,(a1),1,0
    e889b180:	b7d5                	j	e889b164 <dhcp_option_trailer+0x14>

00000000e889b182 <dhcp_reboot>:
{
    e889b182:	715d                	addi	sp,sp,-80
    e889b184:	e486                	sd	ra,72(sp)
    e889b186:	e0a2                	sd	s0,64(sp)
    e889b188:	f052                	sd	s4,32(sp)
    e889b18a:	fc26                	sd	s1,56(sp)
    e889b18c:	f84a                	sd	s2,48(sp)
    e889b18e:	f44e                	sd	s3,40(sp)
    e889b190:	ec56                	sd	s5,24(sp)
    e889b192:	e85a                	sd	s6,16(sp)
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889b194:	7164                	ld	s1,224(a0)
{
    e889b196:	8a2a                	mv	s4,a0
  dhcp_set_state(dhcp, DHCP_STATE_REBOOTING);
    e889b198:	458d                	li	a1,3
    e889b19a:	8526                	mv	a0,s1
    e889b19c:	c39ff0ef          	jal	ra,e889add4 <dhcp_set_state>
  p_out = dhcp_create_msg(netif, dhcp, DHCP_REQUEST, &options_out_len);
    e889b1a0:	547d                	li	s0,-1
    e889b1a2:	00e10693          	addi	a3,sp,14
    e889b1a6:	460d                	li	a2,3
    e889b1a8:	85a6                	mv	a1,s1
    e889b1aa:	8552                	mv	a0,s4
    e889b1ac:	e0dff0ef          	jal	ra,e889afb8 <dhcp_create_msg>
  if (p_out != NULL) {
    e889b1b0:	c95d                	beqz	a0,e889b266 <dhcp_reboot+0xe4>
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
    e889b1b2:	6500                	ld	s0,8(a0)
    e889b1b4:	892a                	mv	s2,a0
    e889b1b6:	00e15503          	lhu	a0,14(sp)
    e889b1ba:	0f040413          	addi	s0,s0,240
    e889b1be:	4689                	li	a3,2
    e889b1c0:	03900613          	li	a2,57
    e889b1c4:	85a2                	mv	a1,s0
    e889b1c6:	c93ff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b1ca:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN_MIN_REQUIRED);
    e889b1ce:	24000613          	li	a2,576
    e889b1d2:	85a2                	mv	a1,s0
    e889b1d4:	c17ff0ef          	jal	ra,e889adea <dhcp_option_short>
    e889b1d8:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_REQUESTED_IP, 4);
    e889b1dc:	4691                	li	a3,4
    e889b1de:	03200613          	li	a2,50
    e889b1e2:	85a2                	mv	a1,s0
    e889b1e4:	c75ff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b1e8:	89aa                	mv	s3,a0
    e889b1ea:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr)));
    e889b1ee:	5888                	lw	a0,48(s1)
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889b1f0:	00038b17          	auipc	s6,0x38
    e889b1f4:	618b0b13          	addi	s6,s6,1560 # e88d3808 <dhcp_discover_request_options>
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889b1f8:	4a91                	li	s5,4
    options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr)));
    e889b1fa:	d35eb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889b1fe:	0005061b          	sext.w	a2,a0
    e889b202:	85a2                	mv	a1,s0
    e889b204:	854e                	mv	a0,s3
    e889b206:	d23ff0ef          	jal	ra,e889af28 <dhcp_option_long>
    e889b20a:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options));
    e889b20e:	4691                	li	a3,4
    e889b210:	03700613          	li	a2,55
    e889b214:	85a2                	mv	a1,s0
    e889b216:	c43ff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b21a:	00a11723          	sh	a0,14(sp)
    e889b21e:	4981                	li	s3,0
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889b220:	813b460b          	lrbu	a2,s6,s3,0
    e889b224:	00e15503          	lhu	a0,14(sp)
    e889b228:	85a2                	mv	a1,s0
    e889b22a:	0985                	addi	s3,s3,1
    e889b22c:	ca1ff0ef          	jal	ra,e889aecc <dhcp_option_byte>
    e889b230:	00a11723          	sh	a0,14(sp)
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889b234:	ff5996e3          	bne	s3,s5,e889b220 <dhcp_reboot+0x9e>
    dhcp_option_trailer(options_out_len, msg_out->options, p_out);
    e889b238:	85a2                	mv	a1,s0
    e889b23a:	864a                	mv	a2,s2
    e889b23c:	f15ff0ef          	jal	ra,e889b150 <dhcp_option_trailer>
    result = udp_sendto_if(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif);
    e889b240:	0004b797          	auipc	a5,0x4b
    e889b244:	4e078793          	addi	a5,a5,1248 # e88e6720 <dhcp_pcb>
    e889b248:	6388                	ld	a0,0(a5)
    e889b24a:	8752                	mv	a4,s4
    e889b24c:	04300693          	li	a3,67
    e889b250:	00035617          	auipc	a2,0x35
    e889b254:	d8860613          	addi	a2,a2,-632 # e88cffd8 <ip_addr_broadcast>
    e889b258:	85ca                	mv	a1,s2
    e889b25a:	a56fc0ef          	jal	ra,e88974b0 <udp_sendto_if>
    e889b25e:	842a                	mv	s0,a0
    pbuf_free(p_out);
    e889b260:	854a                	mv	a0,s2
    e889b262:	febf30ef          	jal	ra,e888f24c <pbuf_free>
  if (dhcp->tries < 255) {
    e889b266:	0064c783          	lbu	a5,6(s1)
    e889b26a:	0ff00713          	li	a4,255
    e889b26e:	00e78563          	beq	a5,a4,e889b278 <dhcp_reboot+0xf6>
    dhcp->tries++;
    e889b272:	2785                	addiw	a5,a5,1
    e889b274:	00f48323          	sb	a5,6(s1)
  msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000);
    e889b278:	0064c783          	lbu	a5,6(s1)
    e889b27c:	4725                	li	a4,9
    e889b27e:	02f76b63          	bltu	a4,a5,e889b2b4 <dhcp_reboot+0x132>
    e889b282:	3e800713          	li	a4,1000
    e889b286:	02e787bb          	mulw	a5,a5,a4
    e889b28a:	3c07b78b          	extu	a5,a5,15,0
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889b28e:	1f37879b          	addiw	a5,a5,499
    e889b292:	1f400713          	li	a4,500
    e889b296:	02e7c7bb          	divw	a5,a5,a4
}
    e889b29a:	8522                	mv	a0,s0
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889b29c:	00f49423          	sh	a5,8(s1)
}
    e889b2a0:	60a6                	ld	ra,72(sp)
    e889b2a2:	6406                	ld	s0,64(sp)
    e889b2a4:	74e2                	ld	s1,56(sp)
    e889b2a6:	7942                	ld	s2,48(sp)
    e889b2a8:	79a2                	ld	s3,40(sp)
    e889b2aa:	7a02                	ld	s4,32(sp)
    e889b2ac:	6ae2                	ld	s5,24(sp)
    e889b2ae:	6b42                	ld	s6,16(sp)
    e889b2b0:	6161                	addi	sp,sp,80
    e889b2b2:	8082                	ret
  msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000);
    e889b2b4:	6789                	lui	a5,0x2
    e889b2b6:	71078793          	addi	a5,a5,1808 # 2710 <memcmp-0xe87fd8f0>
    e889b2ba:	bfd1                	j	e889b28e <dhcp_reboot+0x10c>

00000000e889b2bc <dhcp_select>:
{
    e889b2bc:	715d                	addi	sp,sp,-80
    e889b2be:	e486                	sd	ra,72(sp)
    e889b2c0:	e0a2                	sd	s0,64(sp)
    e889b2c2:	fc26                	sd	s1,56(sp)
    e889b2c4:	f84a                	sd	s2,48(sp)
    e889b2c6:	f44e                	sd	s3,40(sp)
    e889b2c8:	f052                	sd	s4,32(sp)
    e889b2ca:	ec56                	sd	s5,24(sp)
    e889b2cc:	e85a                	sd	s6,16(sp)
  LWIP_ERROR("dhcp_select: netif != NULL", (netif != NULL), return ERR_ARG;);
    e889b2ce:	e139                	bnez	a0,e889b314 <dhcp_select+0x58>
    e889b2d0:	02f00593          	li	a1,47
    e889b2d4:	00038517          	auipc	a0,0x38
    e889b2d8:	63c50513          	addi	a0,a0,1596 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b2dc:	89ce10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b2e0:	00150693          	addi	a3,a0,1
    e889b2e4:	17700613          	li	a2,375
    e889b2e8:	00038597          	auipc	a1,0x38
    e889b2ec:	7d858593          	addi	a1,a1,2008 # e88d3ac0 <dhcp_discover_request_options+0x2b8>
    e889b2f0:	00034517          	auipc	a0,0x34
    e889b2f4:	dc050513          	addi	a0,a0,-576 # e88cf0b0 <kSinTable1024+0x900>
    e889b2f8:	fcfe00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889b2fc:	5441                	li	s0,-16
}
    e889b2fe:	8522                	mv	a0,s0
    e889b300:	60a6                	ld	ra,72(sp)
    e889b302:	6406                	ld	s0,64(sp)
    e889b304:	74e2                	ld	s1,56(sp)
    e889b306:	7942                	ld	s2,48(sp)
    e889b308:	79a2                	ld	s3,40(sp)
    e889b30a:	7a02                	ld	s4,32(sp)
    e889b30c:	6ae2                	ld	s5,24(sp)
    e889b30e:	6b42                	ld	s6,16(sp)
    e889b310:	6161                	addi	sp,sp,80
    e889b312:	8082                	ret
  dhcp = netif_dhcp_data(netif);
    e889b314:	7164                	ld	s1,224(a0)
    e889b316:	89aa                	mv	s3,a0
  LWIP_ERROR("dhcp_select: dhcp != NULL", (dhcp != NULL), return ERR_VAL;);
    e889b318:	e88d                	bnez	s1,e889b34a <dhcp_select+0x8e>
    e889b31a:	02f00593          	li	a1,47
    e889b31e:	00038517          	auipc	a0,0x38
    e889b322:	5f250513          	addi	a0,a0,1522 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b326:	852e10ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b32a:	00150693          	addi	a3,a0,1
    e889b32e:	17900613          	li	a2,377
    e889b332:	00038597          	auipc	a1,0x38
    e889b336:	7ae58593          	addi	a1,a1,1966 # e88d3ae0 <dhcp_discover_request_options+0x2d8>
    e889b33a:	00034517          	auipc	a0,0x34
    e889b33e:	d7650513          	addi	a0,a0,-650 # e88cf0b0 <kSinTable1024+0x900>
    e889b342:	f85e00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889b346:	5469                	li	s0,-6
    e889b348:	bf5d                	j	e889b2fe <dhcp_select+0x42>
  dhcp_set_state(dhcp, DHCP_STATE_REQUESTING);
    e889b34a:	4585                	li	a1,1
    e889b34c:	8526                	mv	a0,s1
    e889b34e:	a87ff0ef          	jal	ra,e889add4 <dhcp_set_state>
    result = ERR_MEM;
    e889b352:	547d                	li	s0,-1
  p_out = dhcp_create_msg(netif, dhcp, DHCP_REQUEST, &options_out_len);
    e889b354:	00e10693          	addi	a3,sp,14
    e889b358:	460d                	li	a2,3
    e889b35a:	85a6                	mv	a1,s1
    e889b35c:	854e                	mv	a0,s3
    e889b35e:	c5bff0ef          	jal	ra,e889afb8 <dhcp_create_msg>
    e889b362:	892a                	mv	s2,a0
  if (p_out != NULL) {
    e889b364:	0e050363          	beqz	a0,e889b44a <dhcp_select+0x18e>
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
    e889b368:	6500                	ld	s0,8(a0)
    e889b36a:	00e15503          	lhu	a0,14(sp)
    e889b36e:	4689                	li	a3,2
    e889b370:	0f040413          	addi	s0,s0,240
    e889b374:	03900613          	li	a2,57
    e889b378:	85a2                	mv	a1,s0
    e889b37a:	adfff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b37e:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif));
    e889b382:	1009d603          	lhu	a2,256(s3)
    e889b386:	85a2                	mv	a1,s0
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889b388:	00038b17          	auipc	s6,0x38
    e889b38c:	480b0b13          	addi	s6,s6,1152 # e88d3808 <dhcp_discover_request_options>
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif));
    e889b390:	a5bff0ef          	jal	ra,e889adea <dhcp_option_short>
    e889b394:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_REQUESTED_IP, 4);
    e889b398:	4691                	li	a3,4
    e889b39a:	03200613          	li	a2,50
    e889b39e:	85a2                	mv	a1,s0
    e889b3a0:	ab9ff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b3a4:	8a2a                	mv	s4,a0
    e889b3a6:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr)));
    e889b3aa:	5888                	lw	a0,48(s1)
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889b3ac:	4a91                	li	s5,4
    options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr)));
    e889b3ae:	b81eb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889b3b2:	0005061b          	sext.w	a2,a0
    e889b3b6:	85a2                	mv	a1,s0
    e889b3b8:	8552                	mv	a0,s4
    e889b3ba:	b6fff0ef          	jal	ra,e889af28 <dhcp_option_long>
    e889b3be:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_SERVER_ID, 4);
    e889b3c2:	4691                	li	a3,4
    e889b3c4:	03600613          	li	a2,54
    e889b3c8:	85a2                	mv	a1,s0
    e889b3ca:	a8fff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b3ce:	8a2a                	mv	s4,a0
    e889b3d0:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(ip_2_ip4(&dhcp->server_ip_addr))));
    e889b3d4:	4c88                	lw	a0,24(s1)
    e889b3d6:	b59eb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889b3da:	0005061b          	sext.w	a2,a0
    e889b3de:	85a2                	mv	a1,s0
    e889b3e0:	8552                	mv	a0,s4
    e889b3e2:	b47ff0ef          	jal	ra,e889af28 <dhcp_option_long>
    e889b3e6:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options));
    e889b3ea:	4691                	li	a3,4
    e889b3ec:	03700613          	li	a2,55
    e889b3f0:	85a2                	mv	a1,s0
    e889b3f2:	a67ff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b3f6:	00a11723          	sh	a0,14(sp)
    e889b3fa:	4a01                	li	s4,0
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889b3fc:	814b460b          	lrbu	a2,s6,s4,0
    e889b400:	00e15503          	lhu	a0,14(sp)
    e889b404:	85a2                	mv	a1,s0
    e889b406:	0a05                	addi	s4,s4,1
    e889b408:	ac5ff0ef          	jal	ra,e889aecc <dhcp_option_byte>
    e889b40c:	00a11723          	sh	a0,14(sp)
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889b410:	ff5a16e3          	bne	s4,s5,e889b3fc <dhcp_select+0x140>
    dhcp_option_trailer(options_out_len, msg_out->options, p_out);
    e889b414:	85a2                	mv	a1,s0
    e889b416:	864a                	mv	a2,s2
    e889b418:	d39ff0ef          	jal	ra,e889b150 <dhcp_option_trailer>
    result = udp_sendto_if_src(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif, IP4_ADDR_ANY);
    e889b41c:	0004b517          	auipc	a0,0x4b
    e889b420:	30450513          	addi	a0,a0,772 # e88e6720 <dhcp_pcb>
    e889b424:	6108                	ld	a0,0(a0)
    e889b426:	00035797          	auipc	a5,0x35
    e889b42a:	b9a78793          	addi	a5,a5,-1126 # e88cffc0 <ip_addr_any>
    e889b42e:	874e                	mv	a4,s3
    e889b430:	04300693          	li	a3,67
    e889b434:	00035617          	auipc	a2,0x35
    e889b438:	ba460613          	addi	a2,a2,-1116 # e88cffd8 <ip_addr_broadcast>
    e889b43c:	85ca                	mv	a1,s2
    e889b43e:	87afc0ef          	jal	ra,e88974b8 <udp_sendto_if_src>
    e889b442:	842a                	mv	s0,a0
    pbuf_free(p_out);
    e889b444:	854a                	mv	a0,s2
    e889b446:	e07f30ef          	jal	ra,e888f24c <pbuf_free>
  if (dhcp->tries < 255) {
    e889b44a:	0064c783          	lbu	a5,6(s1)
    e889b44e:	0ff00713          	li	a4,255
    e889b452:	00e78563          	beq	a5,a4,e889b45c <dhcp_select+0x1a0>
    dhcp->tries++;
    e889b456:	2785                	addiw	a5,a5,1
    e889b458:	00f48323          	sb	a5,6(s1)
  msecs = (u16_t)((dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000);
    e889b45c:	0064c703          	lbu	a4,6(s1)
    e889b460:	4795                	li	a5,5
    e889b462:	02e7e463          	bltu	a5,a4,e889b48a <dhcp_select+0x1ce>
    e889b466:	4785                	li	a5,1
    e889b468:	00e797bb          	sllw	a5,a5,a4
    e889b46c:	3e800713          	li	a4,1000
    e889b470:	02e787bb          	mulw	a5,a5,a4
    e889b474:	3c07b78b          	extu	a5,a5,15,0
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889b478:	1f37879b          	addiw	a5,a5,499
    e889b47c:	1f400713          	li	a4,500
    e889b480:	02e7c7bb          	divw	a5,a5,a4
    e889b484:	00f49423          	sh	a5,8(s1)
  return result;
    e889b488:	bd9d                	j	e889b2fe <dhcp_select+0x42>
  msecs = (u16_t)((dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000);
    e889b48a:	67bd                	lui	a5,0xf
    e889b48c:	a6078793          	addi	a5,a5,-1440 # ea60 <memcmp-0xe87f15a0>
    e889b490:	b7e5                	j	e889b478 <dhcp_select+0x1bc>

00000000e889b492 <dhcp_discover>:
{
    e889b492:	715d                	addi	sp,sp,-80
    e889b494:	f44e                	sd	s3,40(sp)
    e889b496:	e486                	sd	ra,72(sp)
    e889b498:	e0a2                	sd	s0,64(sp)
    e889b49a:	fc26                	sd	s1,56(sp)
    e889b49c:	f84a                	sd	s2,48(sp)
    e889b49e:	f052                	sd	s4,32(sp)
    e889b4a0:	ec56                	sd	s5,24(sp)
    e889b4a2:	e85a                	sd	s6,16(sp)
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889b4a4:	7160                	ld	s0,224(a0)
{
    e889b4a6:	89aa                	mv	s3,a0
  dhcp_set_state(dhcp, DHCP_STATE_SELECTING);
    e889b4a8:	4599                	li	a1,6
    e889b4aa:	8522                	mv	a0,s0
  ip4_addr_set_any(&dhcp->offered_ip_addr);
    e889b4ac:	02042823          	sw	zero,48(s0)
  dhcp_set_state(dhcp, DHCP_STATE_SELECTING);
    e889b4b0:	925ff0ef          	jal	ra,e889add4 <dhcp_set_state>
  p_out = dhcp_create_msg(netif, dhcp, DHCP_DISCOVER, &options_out_len);
    e889b4b4:	00e10693          	addi	a3,sp,14
    e889b4b8:	4605                	li	a2,1
    e889b4ba:	85a2                	mv	a1,s0
    e889b4bc:	854e                	mv	a0,s3
    e889b4be:	afbff0ef          	jal	ra,e889afb8 <dhcp_create_msg>
  if (p_out != NULL) {
    e889b4c2:	c951                	beqz	a0,e889b556 <dhcp_discover+0xc4>
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
    e889b4c4:	6504                	ld	s1,8(a0)
    e889b4c6:	892a                	mv	s2,a0
    e889b4c8:	00e15503          	lhu	a0,14(sp)
    e889b4cc:	0f048493          	addi	s1,s1,240
    e889b4d0:	4689                	li	a3,2
    e889b4d2:	03900613          	li	a2,57
    e889b4d6:	85a6                	mv	a1,s1
    e889b4d8:	981ff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b4dc:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif));
    e889b4e0:	1009d603          	lhu	a2,256(s3)
    e889b4e4:	85a6                	mv	a1,s1
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options));
    e889b4e6:	4a01                	li	s4,0
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif));
    e889b4e8:	903ff0ef          	jal	ra,e889adea <dhcp_option_short>
    e889b4ec:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options));
    e889b4f0:	4691                	li	a3,4
    e889b4f2:	03700613          	li	a2,55
    e889b4f6:	85a6                	mv	a1,s1
    e889b4f8:	961ff0ef          	jal	ra,e889ae58 <dhcp_option>
    e889b4fc:	00a11723          	sh	a0,14(sp)
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889b500:	00038b17          	auipc	s6,0x38
    e889b504:	308b0b13          	addi	s6,s6,776 # e88d3808 <dhcp_discover_request_options>
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889b508:	4a91                	li	s5,4
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889b50a:	814b460b          	lrbu	a2,s6,s4,0
    e889b50e:	00e15503          	lhu	a0,14(sp)
    e889b512:	85a6                	mv	a1,s1
    e889b514:	0a05                	addi	s4,s4,1
    e889b516:	9b7ff0ef          	jal	ra,e889aecc <dhcp_option_byte>
    e889b51a:	00a11723          	sh	a0,14(sp)
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889b51e:	ff5a16e3          	bne	s4,s5,e889b50a <dhcp_discover+0x78>
    dhcp_option_trailer(options_out_len, msg_out->options, p_out);
    e889b522:	864a                	mv	a2,s2
    e889b524:	85a6                	mv	a1,s1
    e889b526:	c2bff0ef          	jal	ra,e889b150 <dhcp_option_trailer>
    udp_sendto_if_src(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif, IP4_ADDR_ANY);
    e889b52a:	0004b517          	auipc	a0,0x4b
    e889b52e:	1f650513          	addi	a0,a0,502 # e88e6720 <dhcp_pcb>
    e889b532:	6108                	ld	a0,0(a0)
    e889b534:	00035797          	auipc	a5,0x35
    e889b538:	a8c78793          	addi	a5,a5,-1396 # e88cffc0 <ip_addr_any>
    e889b53c:	874e                	mv	a4,s3
    e889b53e:	04300693          	li	a3,67
    e889b542:	00035617          	auipc	a2,0x35
    e889b546:	a9660613          	addi	a2,a2,-1386 # e88cffd8 <ip_addr_broadcast>
    e889b54a:	85ca                	mv	a1,s2
    e889b54c:	f6dfb0ef          	jal	ra,e88974b8 <udp_sendto_if_src>
    pbuf_free(p_out);
    e889b550:	854a                	mv	a0,s2
    e889b552:	cfbf30ef          	jal	ra,e888f24c <pbuf_free>
  if (dhcp->tries < 255) {
    e889b556:	00644783          	lbu	a5,6(s0)
    e889b55a:	0ff00713          	li	a4,255
    e889b55e:	00e78563          	beq	a5,a4,e889b568 <dhcp_discover+0xd6>
    dhcp->tries++;
    e889b562:	2785                	addiw	a5,a5,1
    e889b564:	00f40323          	sb	a5,6(s0)
  msecs = (u16_t)((dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000);
    e889b568:	00644703          	lbu	a4,6(s0)
    e889b56c:	4795                	li	a5,5
    e889b56e:	02e7ee63          	bltu	a5,a4,e889b5aa <dhcp_discover+0x118>
    e889b572:	4785                	li	a5,1
    e889b574:	00e797bb          	sllw	a5,a5,a4
    e889b578:	3e800713          	li	a4,1000
    e889b57c:	02e787bb          	mulw	a5,a5,a4
    e889b580:	3c07b78b          	extu	a5,a5,15,0
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889b584:	1f37879b          	addiw	a5,a5,499
    e889b588:	1f400713          	li	a4,500
    e889b58c:	02e7c7bb          	divw	a5,a5,a4
}
    e889b590:	4501                	li	a0,0
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889b592:	00f41423          	sh	a5,8(s0)
}
    e889b596:	60a6                	ld	ra,72(sp)
    e889b598:	6406                	ld	s0,64(sp)
    e889b59a:	74e2                	ld	s1,56(sp)
    e889b59c:	7942                	ld	s2,48(sp)
    e889b59e:	79a2                	ld	s3,40(sp)
    e889b5a0:	7a02                	ld	s4,32(sp)
    e889b5a2:	6ae2                	ld	s5,24(sp)
    e889b5a4:	6b42                	ld	s6,16(sp)
    e889b5a6:	6161                	addi	sp,sp,80
    e889b5a8:	8082                	ret
  msecs = (u16_t)((dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000);
    e889b5aa:	67bd                	lui	a5,0xf
    e889b5ac:	a6078793          	addi	a5,a5,-1440 # ea60 <memcmp-0xe87f15a0>
    e889b5b0:	bfd1                	j	e889b584 <dhcp_discover+0xf2>

00000000e889b5b2 <dhcp_check>:
{
    e889b5b2:	1101                	addi	sp,sp,-32
    e889b5b4:	ec06                	sd	ra,24(sp)
    e889b5b6:	e826                	sd	s1,16(sp)
    e889b5b8:	e422                	sd	s0,8(sp)
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889b5ba:	7160                	ld	s0,224(a0)
{
    e889b5bc:	84aa                	mv	s1,a0
  dhcp_set_state(dhcp, DHCP_STATE_CHECKING);
    e889b5be:	45a1                	li	a1,8
    e889b5c0:	8522                	mv	a0,s0
    e889b5c2:	813ff0ef          	jal	ra,e889add4 <dhcp_set_state>
  result = etharp_query(netif, &dhcp->offered_ip_addr, NULL);
    e889b5c6:	4601                	li	a2,0
    e889b5c8:	03040593          	addi	a1,s0,48
    e889b5cc:	8526                	mv	a0,s1
    e889b5ce:	be9ec0ef          	jal	ra,e88881b6 <etharp_query>
  if (dhcp->tries < 255) {
    e889b5d2:	00644783          	lbu	a5,6(s0)
    e889b5d6:	0ff00713          	li	a4,255
    e889b5da:	00e78563          	beq	a5,a4,e889b5e4 <dhcp_check+0x32>
    dhcp->tries++;
    e889b5de:	2785                	addiw	a5,a5,1
    e889b5e0:	00f40323          	sb	a5,6(s0)
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889b5e4:	4785                	li	a5,1
    e889b5e6:	00f41423          	sh	a5,8(s0)
}
    e889b5ea:	60e2                	ld	ra,24(sp)
    e889b5ec:	6422                	ld	s0,8(sp)
    e889b5ee:	64c2                	ld	s1,16(sp)
    e889b5f0:	6105                	addi	sp,sp,32
    e889b5f2:	8082                	ret

00000000e889b5f4 <dhcp_bind>:
{
    e889b5f4:	7179                	addi	sp,sp,-48
    e889b5f6:	f406                	sd	ra,40(sp)
    e889b5f8:	ec22                	sd	s0,24(sp)
    e889b5fa:	f026                	sd	s1,32(sp)
  LWIP_ERROR("dhcp_bind: netif != NULL", (netif != NULL), return;);
    e889b5fc:	ed05                	bnez	a0,e889b634 <dhcp_bind+0x40>
    e889b5fe:	02f00593          	li	a1,47
    e889b602:	00038517          	auipc	a0,0x38
    e889b606:	30e50513          	addi	a0,a0,782 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b60a:	d6fe00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b60e:	00150693          	addi	a3,a0,1
    e889b612:	41500613          	li	a2,1045
    e889b616:	00038597          	auipc	a1,0x38
    e889b61a:	11258593          	addi	a1,a1,274 # e88d3728 <netconn_reset+0x354>
  LWIP_ERROR("dhcp_bind: dhcp != NULL", (dhcp != NULL), return;);
    e889b61e:	00034517          	auipc	a0,0x34
    e889b622:	a9250513          	addi	a0,a0,-1390 # e88cf0b0 <kSinTable1024+0x900>
    e889b626:	ca1e00ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e889b62a:	70a2                	ld	ra,40(sp)
    e889b62c:	6462                	ld	s0,24(sp)
    e889b62e:	7482                	ld	s1,32(sp)
    e889b630:	6145                	addi	sp,sp,48
    e889b632:	8082                	ret
  dhcp = netif_dhcp_data(netif);
    e889b634:	7160                	ld	s0,224(a0)
    e889b636:	84aa                	mv	s1,a0
  LWIP_ERROR("dhcp_bind: dhcp != NULL", (dhcp != NULL), return;);
    e889b638:	e015                	bnez	s0,e889b65c <dhcp_bind+0x68>
    e889b63a:	02f00593          	li	a1,47
    e889b63e:	00038517          	auipc	a0,0x38
    e889b642:	2d250513          	addi	a0,a0,722 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b646:	d33e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b64a:	00150693          	addi	a3,a0,1
    e889b64e:	41700613          	li	a2,1047
    e889b652:	00038597          	auipc	a1,0x38
    e889b656:	0f658593          	addi	a1,a1,246 # e88d3748 <netconn_reset+0x374>
    e889b65a:	b7d1                	j	e889b61e <dhcp_bind+0x2a>
  if (dhcp->offered_t0_lease != 0xffffffffUL) {
    e889b65c:	5c5c                	lw	a5,60(s0)
  dhcp->lease_used = 0;
    e889b65e:	00041923          	sh	zero,18(s0)
  if (dhcp->offered_t0_lease != 0xffffffffUL) {
    e889b662:	577d                	li	a4,-1
    e889b664:	02e78163          	beq	a5,a4,e889b686 <dhcp_bind+0x92>
    timeout = (dhcp->offered_t0_lease + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS;
    e889b668:	01e7869b          	addiw	a3,a5,30
    if (timeout > 0xffff) {
    e889b66c:	003c0737          	lui	a4,0x3c0
    e889b670:	0ae6fd63          	bgeu	a3,a4,e889b72a <dhcp_bind+0x136>
    timeout = (dhcp->offered_t0_lease + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS;
    e889b674:	03c00713          	li	a4,60
    e889b678:	02e6d7bb          	divuw	a5,a3,a4
    dhcp->t0_timeout = (u16_t)timeout;
    e889b67c:	3c07b70b          	extu	a4,a5,15,0
    if (dhcp->t0_timeout == 0) {
    e889b680:	cbc5                	beqz	a5,e889b730 <dhcp_bind+0x13c>
    dhcp->t0_timeout = (u16_t)timeout;
    e889b682:	00e41a23          	sh	a4,20(s0)
  if (dhcp->offered_t1_renew != 0xffffffffUL) {
    e889b686:	403c                	lw	a5,64(s0)
    e889b688:	577d                	li	a4,-1
    e889b68a:	02e78563          	beq	a5,a4,e889b6b4 <dhcp_bind+0xc0>
    timeout = (dhcp->offered_t1_renew + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS;
    e889b68e:	01e7869b          	addiw	a3,a5,30
    if (timeout > 0xffff) {
    e889b692:	003c0737          	lui	a4,0x3c0
    e889b696:	0ae6f163          	bgeu	a3,a4,e889b738 <dhcp_bind+0x144>
    timeout = (dhcp->offered_t1_renew + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS;
    e889b69a:	03c00713          	li	a4,60
    e889b69e:	02e6d7bb          	divuw	a5,a3,a4
    dhcp->t1_timeout = (u16_t)timeout;
    e889b6a2:	3c07b70b          	extu	a4,a5,15,0
    if (dhcp->t1_timeout == 0) {
    e889b6a6:	cfc1                	beqz	a5,e889b73e <dhcp_bind+0x14a>
    dhcp->t1_timeout = (u16_t)timeout;
    e889b6a8:	00e41523          	sh	a4,10(s0)
    dhcp->t1_renew_time = dhcp->t1_timeout;
    e889b6ac:	00a45783          	lhu	a5,10(s0)
    e889b6b0:	00f41723          	sh	a5,14(s0)
  if (dhcp->offered_t2_rebind != 0xffffffffUL) {
    e889b6b4:	407c                	lw	a5,68(s0)
    e889b6b6:	577d                	li	a4,-1
    e889b6b8:	02e78563          	beq	a5,a4,e889b6e2 <dhcp_bind+0xee>
    timeout = (dhcp->offered_t2_rebind + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS;
    e889b6bc:	01e7869b          	addiw	a3,a5,30
    if (timeout > 0xffff) {
    e889b6c0:	003c0737          	lui	a4,0x3c0
    e889b6c4:	08e6f163          	bgeu	a3,a4,e889b746 <dhcp_bind+0x152>
    timeout = (dhcp->offered_t2_rebind + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS;
    e889b6c8:	03c00713          	li	a4,60
    e889b6cc:	02e6d7bb          	divuw	a5,a3,a4
    dhcp->t2_timeout = (u16_t)timeout;
    e889b6d0:	3c07b70b          	extu	a4,a5,15,0
    if (dhcp->t2_timeout == 0) {
    e889b6d4:	cfa5                	beqz	a5,e889b74c <dhcp_bind+0x158>
    dhcp->t2_timeout = (u16_t)timeout;
    e889b6d6:	00e41623          	sh	a4,12(s0)
    dhcp->t2_rebind_time = dhcp->t2_timeout;
    e889b6da:	00c45783          	lhu	a5,12(s0)
    e889b6de:	00f41823          	sh	a5,16(s0)
  if ((dhcp->t1_timeout >= dhcp->t2_timeout) && (dhcp->t2_timeout > 0)) {
    e889b6e2:	00c45783          	lhu	a5,12(s0)
    e889b6e6:	00a45703          	lhu	a4,10(s0)
    e889b6ea:	00f76563          	bltu	a4,a5,e889b6f4 <dhcp_bind+0x100>
    e889b6ee:	c399                	beqz	a5,e889b6f4 <dhcp_bind+0x100>
    dhcp->t1_timeout = 0;
    e889b6f0:	00041523          	sh	zero,10(s0)
  if (dhcp->subnet_mask_given) {
    e889b6f4:	00744783          	lbu	a5,7(s0)
    e889b6f8:	cfb1                	beqz	a5,e889b754 <dhcp_bind+0x160>
    ip4_addr_copy(sn_mask, dhcp->offered_sn_mask);
    e889b6fa:	585c                	lw	a5,52(s0)
      ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffff0000UL));
    e889b6fc:	c03e                	sw	a5,0(sp)
  ip4_addr_copy(gw_addr, dhcp->offered_gw_addr);
    e889b6fe:	5c1c                	lw	a5,56(s0)
    e889b700:	c43e                	sw	a5,8(sp)
  if (ip4_addr_isany_val(gw_addr)) {
    e889b702:	eb81                	bnez	a5,e889b712 <dhcp_bind+0x11e>
    ip4_addr_get_network(&gw_addr, &dhcp->offered_ip_addr, &sn_mask);
    e889b704:	4702                	lw	a4,0(sp)
    e889b706:	581c                	lw	a5,48(s0)
    e889b708:	8ff9                	and	a5,a5,a4
    ip4_addr_set_u32(&gw_addr, ip4_addr_get_u32(&gw_addr) | PP_HTONL(0x00000001UL));
    e889b70a:	01000737          	lui	a4,0x1000
    e889b70e:	8fd9                	or	a5,a5,a4
    e889b710:	c43e                	sw	a5,8(sp)
  dhcp_set_state(dhcp, DHCP_STATE_BOUND);
    e889b712:	8522                	mv	a0,s0
    e889b714:	45a9                	li	a1,10
    e889b716:	ebeff0ef          	jal	ra,e889add4 <dhcp_set_state>
  netif_set_addr(netif, &dhcp->offered_ip_addr, &sn_mask, &gw_addr);
    e889b71a:	0034                	addi	a3,sp,8
    e889b71c:	860a                	mv	a2,sp
    e889b71e:	03040593          	addi	a1,s0,48
    e889b722:	8526                	mv	a0,s1
    e889b724:	a4af30ef          	jal	ra,e888e96e <netif_set_addr>
    e889b728:	b709                	j	e889b62a <dhcp_bind+0x36>
      timeout = 0xffff;
    e889b72a:	6741                	lui	a4,0x10
    e889b72c:	177d                	addi	a4,a4,-1
    e889b72e:	bf91                	j	e889b682 <dhcp_bind+0x8e>
      dhcp->t0_timeout = 1;
    e889b730:	4785                	li	a5,1
    e889b732:	00f41a23          	sh	a5,20(s0)
    e889b736:	bf81                	j	e889b686 <dhcp_bind+0x92>
      timeout = 0xffff;
    e889b738:	6741                	lui	a4,0x10
    e889b73a:	177d                	addi	a4,a4,-1
    e889b73c:	b7b5                	j	e889b6a8 <dhcp_bind+0xb4>
      dhcp->t1_timeout = 1;
    e889b73e:	4785                	li	a5,1
    e889b740:	00f41523          	sh	a5,10(s0)
    e889b744:	b7a5                	j	e889b6ac <dhcp_bind+0xb8>
      timeout = 0xffff;
    e889b746:	6741                	lui	a4,0x10
    e889b748:	177d                	addi	a4,a4,-1
    e889b74a:	b771                	j	e889b6d6 <dhcp_bind+0xe2>
      dhcp->t2_timeout = 1;
    e889b74c:	4785                	li	a5,1
    e889b74e:	00f41623          	sh	a5,12(s0)
    e889b752:	b761                	j	e889b6da <dhcp_bind+0xe6>
    u8_t first_octet = ip4_addr1(&dhcp->offered_ip_addr);
    e889b754:	03044783          	lbu	a5,48(s0)
    if (first_octet <= 127) {
    e889b758:	fc77b70b          	extu	a4,a5,63,7
    e889b75c:	e701                	bnez	a4,e889b764 <dhcp_bind+0x170>
      ip4_addr_set_u32(&sn_mask, PP_HTONL(0xff000000UL));
    e889b75e:	0ff00793          	li	a5,255
    e889b762:	bf69                	j	e889b6fc <dhcp_bind+0x108>
    } else if (first_octet >= 192) {
    e889b764:	0bf00713          	li	a4,191
    e889b768:	00f77663          	bgeu	a4,a5,e889b774 <dhcp_bind+0x180>
      ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffffff00UL));
    e889b76c:	010007b7          	lui	a5,0x1000
      ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffff0000UL));
    e889b770:	37fd                	addiw	a5,a5,-1
    e889b772:	b769                	j	e889b6fc <dhcp_bind+0x108>
    e889b774:	67c1                	lui	a5,0x10
    e889b776:	bfed                	j	e889b770 <dhcp_bind+0x17c>

00000000e889b778 <dhcp_inc_pcb_refcount>:
{
    e889b778:	1101                	addi	sp,sp,-32
    e889b77a:	e826                	sd	s1,16(sp)
  if (dhcp_pcb_refcount == 0) {
    e889b77c:	0004b497          	auipc	s1,0x4b
    e889b780:	fac48493          	addi	s1,s1,-84 # e88e6728 <dhcp_pcb_refcount>
    e889b784:	0004c783          	lbu	a5,0(s1)
{
    e889b788:	ec06                	sd	ra,24(sp)
    e889b78a:	e422                	sd	s0,8(sp)
  if (dhcp_pcb_refcount == 0) {
    e889b78c:	e3c9                	bnez	a5,e889b80e <dhcp_inc_pcb_refcount+0x96>
    LWIP_ASSERT("dhcp_inc_pcb_refcount(): memory leak", dhcp_pcb == NULL);
    e889b78e:	0004b417          	auipc	s0,0x4b
    e889b792:	f9240413          	addi	s0,s0,-110 # e88e6720 <dhcp_pcb>
    e889b796:	601c                	ld	a5,0(s0)
    e889b798:	c79d                	beqz	a5,e889b7c6 <dhcp_inc_pcb_refcount+0x4e>
    e889b79a:	02f00593          	li	a1,47
    e889b79e:	00038517          	auipc	a0,0x38
    e889b7a2:	17250513          	addi	a0,a0,370 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b7a6:	bd3e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b7aa:	00150693          	addi	a3,a0,1
    e889b7ae:	0e500613          	li	a2,229
    e889b7b2:	00038597          	auipc	a1,0x38
    e889b7b6:	05e58593          	addi	a1,a1,94 # e88d3810 <dhcp_discover_request_options+0x8>
    e889b7ba:	00034517          	auipc	a0,0x34
    e889b7be:	8f650513          	addi	a0,a0,-1802 # e88cf0b0 <kSinTable1024+0x900>
    e889b7c2:	b05e00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    dhcp_pcb = udp_new();
    e889b7c6:	fbffb0ef          	jal	ra,e8897784 <udp_new>
    e889b7ca:	e008                	sd	a0,0(s0)
      return ERR_MEM;
    e889b7cc:	577d                	li	a4,-1
    if (dhcp_pcb == NULL) {
    e889b7ce:	c531                	beqz	a0,e889b81a <dhcp_inc_pcb_refcount+0xa2>
    ip_set_option(dhcp_pcb, SOF_BROADCAST);
    e889b7d0:	03154703          	lbu	a4,49(a0)
    udp_bind(dhcp_pcb, IP4_ADDR_ANY, LWIP_IANA_PORT_DHCP_CLIENT);
    e889b7d4:	04400613          	li	a2,68
    e889b7d8:	00034597          	auipc	a1,0x34
    e889b7dc:	7e858593          	addi	a1,a1,2024 # e88cffc0 <ip_addr_any>
    ip_set_option(dhcp_pcb, SOF_BROADCAST);
    e889b7e0:	02076713          	ori	a4,a4,32
    e889b7e4:	02e508a3          	sb	a4,49(a0)
    udp_bind(dhcp_pcb, IP4_ADDR_ANY, LWIP_IANA_PORT_DHCP_CLIENT);
    e889b7e8:	c44fb0ef          	jal	ra,e8896c2c <udp_bind>
    udp_connect(dhcp_pcb, IP4_ADDR_ANY, LWIP_IANA_PORT_DHCP_SERVER);
    e889b7ec:	6008                	ld	a0,0(s0)
    e889b7ee:	04300613          	li	a2,67
    e889b7f2:	00034597          	auipc	a1,0x34
    e889b7f6:	7ce58593          	addi	a1,a1,1998 # e88cffc0 <ip_addr_any>
    e889b7fa:	cddfb0ef          	jal	ra,e88974d6 <udp_connect>
    udp_recv(dhcp_pcb, dhcp_recv, NULL);
    e889b7fe:	6008                	ld	a0,0(s0)
    e889b800:	4601                	li	a2,0
    e889b802:	00000597          	auipc	a1,0x0
    e889b806:	18658593          	addi	a1,a1,390 # e889b988 <dhcp_recv>
    e889b80a:	eddfb0ef          	jal	ra,e88976e6 <udp_recv>
  dhcp_pcb_refcount++;
    e889b80e:	0004c783          	lbu	a5,0(s1)
  return ERR_OK;
    e889b812:	4701                	li	a4,0
  dhcp_pcb_refcount++;
    e889b814:	2785                	addiw	a5,a5,1
    e889b816:	00f48023          	sb	a5,0(s1)
}
    e889b81a:	60e2                	ld	ra,24(sp)
    e889b81c:	6422                	ld	s0,8(sp)
    e889b81e:	64c2                	ld	s1,16(sp)
    e889b820:	853a                	mv	a0,a4
    e889b822:	6105                	addi	sp,sp,32
    e889b824:	8082                	ret

00000000e889b826 <dhcp_dec_pcb_refcount>:
{
    e889b826:	1141                	addi	sp,sp,-16
    e889b828:	e022                	sd	s0,0(sp)
  LWIP_ASSERT("dhcp_pcb_refcount(): refcount error", (dhcp_pcb_refcount > 0));
    e889b82a:	0004b417          	auipc	s0,0x4b
    e889b82e:	efe40413          	addi	s0,s0,-258 # e88e6728 <dhcp_pcb_refcount>
    e889b832:	00044783          	lbu	a5,0(s0)
{
    e889b836:	e406                	sd	ra,8(sp)
  LWIP_ASSERT("dhcp_pcb_refcount(): refcount error", (dhcp_pcb_refcount > 0));
    e889b838:	e79d                	bnez	a5,e889b866 <dhcp_dec_pcb_refcount+0x40>
    e889b83a:	02f00593          	li	a1,47
    e889b83e:	00038517          	auipc	a0,0x38
    e889b842:	0d250513          	addi	a0,a0,210 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b846:	b33e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b84a:	00150693          	addi	a3,a0,1
    e889b84e:	0ff00613          	li	a2,255
    e889b852:	00038597          	auipc	a1,0x38
    e889b856:	f8e58593          	addi	a1,a1,-114 # e88d37e0 <netconn_reset+0x40c>
    e889b85a:	00034517          	auipc	a0,0x34
    e889b85e:	85650513          	addi	a0,a0,-1962 # e88cf0b0 <kSinTable1024+0x900>
    e889b862:	a65e00ef          	jal	ra,e887c2c6 <eLIBs_printf>
  dhcp_pcb_refcount--;
    e889b866:	00044783          	lbu	a5,0(s0)
    e889b86a:	37fd                	addiw	a5,a5,-1
    e889b86c:	0ff7f793          	andi	a5,a5,255
    e889b870:	00f40023          	sb	a5,0(s0)
  if (dhcp_pcb_refcount == 0) {
    e889b874:	ef81                	bnez	a5,e889b88c <dhcp_dec_pcb_refcount+0x66>
    udp_remove(dhcp_pcb);
    e889b876:	0004b797          	auipc	a5,0x4b
    e889b87a:	eaa78793          	addi	a5,a5,-342 # e88e6720 <dhcp_pcb>
    e889b87e:	6388                	ld	a0,0(a5)
    e889b880:	ea3fb0ef          	jal	ra,e8897722 <udp_remove>
    dhcp_pcb = NULL;
    e889b884:	0004b797          	auipc	a5,0x4b
    e889b888:	e807be23          	sd	zero,-356(a5) # e88e6720 <dhcp_pcb>
}
    e889b88c:	60a2                	ld	ra,8(sp)
    e889b88e:	6402                	ld	s0,0(sp)
    e889b890:	0141                	addi	sp,sp,16
    e889b892:	8082                	ret

00000000e889b894 <dhcp_handle_ack.isra.2>:
dhcp_handle_ack(struct netif *netif, struct dhcp_msg *msg_in)
    e889b894:	7139                	addi	sp,sp,-64
    e889b896:	f422                	sd	s0,40(sp)
    e889b898:	f826                	sd	s1,48(sp)
    e889b89a:	fc06                	sd	ra,56(sp)
  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_LEASE_TIME)) {
    e889b89c:	0004b497          	auipc	s1,0x4b
    e889b8a0:	e9448493          	addi	s1,s1,-364 # e88e6730 <dhcp_rx_options_given>
    e889b8a4:	0034c783          	lbu	a5,3(s1)
  ip4_addr_set_zero(&dhcp->offered_sn_mask);
    e889b8a8:	02053a23          	sd	zero,52(a0)
dhcp_handle_ack(struct netif *netif, struct dhcp_msg *msg_in)
    e889b8ac:	842a                	mv	s0,a0
  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_LEASE_TIME)) {
    e889b8ae:	c799                	beqz	a5,e889b8bc <dhcp_handle_ack.isra.2+0x28>
    dhcp->offered_t0_lease = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_LEASE_TIME);
    e889b8b0:	0004b797          	auipc	a5,0x4b
    e889b8b4:	e9078793          	addi	a5,a5,-368 # e88e6740 <dhcp_rx_options_val>
    e889b8b8:	47dc                	lw	a5,12(a5)
    e889b8ba:	dd5c                	sw	a5,60(a0)
  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T1)) {
    e889b8bc:	0044c783          	lbu	a5,4(s1)
    e889b8c0:	c7d5                	beqz	a5,e889b96c <dhcp_handle_ack.isra.2+0xd8>
    dhcp->offered_t1_renew = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T1);
    e889b8c2:	0004b797          	auipc	a5,0x4b
    e889b8c6:	e7e78793          	addi	a5,a5,-386 # e88e6740 <dhcp_rx_options_val>
    e889b8ca:	4b9c                	lw	a5,16(a5)
    e889b8cc:	c03c                	sw	a5,64(s0)
  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T2)) {
    e889b8ce:	0054c783          	lbu	a5,5(s1)
    e889b8d2:	c3cd                	beqz	a5,e889b974 <dhcp_handle_ack.isra.2+0xe0>
    dhcp->offered_t2_rebind = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T2);
    e889b8d4:	0004b797          	auipc	a5,0x4b
    e889b8d8:	e6c78793          	addi	a5,a5,-404 # e88e6740 <dhcp_rx_options_val>
    e889b8dc:	4bdc                	lw	a5,20(a5)
    e889b8de:	c07c                	sw	a5,68(s0)
  ip4_addr_copy(dhcp->offered_ip_addr, msg_in->yiaddr);
    e889b8e0:	499c                	lw	a5,16(a1)
    e889b8e2:	d81c                	sw	a5,48(s0)
  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SUBNET_MASK)) {
    e889b8e4:	0064c783          	lbu	a5,6(s1)
    e889b8e8:	cfc9                	beqz	a5,e889b982 <dhcp_handle_ack.isra.2+0xee>
    ip4_addr_set_u32(&dhcp->offered_sn_mask, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SUBNET_MASK)));
    e889b8ea:	0004b797          	auipc	a5,0x4b
    e889b8ee:	e5678793          	addi	a5,a5,-426 # e88e6740 <dhcp_rx_options_val>
    e889b8f2:	4f88                	lw	a0,24(a5)
    e889b8f4:	e3aeb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889b8f8:	d848                	sw	a0,52(s0)
    dhcp->subnet_mask_given = 1;
    e889b8fa:	4785                	li	a5,1
    e889b8fc:	00f403a3          	sb	a5,7(s0)
  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_ROUTER)) {
    e889b900:	0074c783          	lbu	a5,7(s1)
    e889b904:	cb89                	beqz	a5,e889b916 <dhcp_handle_ack.isra.2+0x82>
    ip4_addr_set_u32(&dhcp->offered_gw_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_ROUTER)));
    e889b906:	0004b797          	auipc	a5,0x4b
    e889b90a:	e3a78793          	addi	a5,a5,-454 # e88e6740 <dhcp_rx_options_val>
    e889b90e:	4fc8                	lw	a0,28(a5)
    e889b910:	e1eeb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889b914:	dc08                	sw	a0,56(s0)
  for (n = 0; (n < LWIP_DHCP_PROVIDE_DNS_SERVERS) && dhcp_option_given(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n); n++) {
    e889b916:	0084c783          	lbu	a5,8(s1)
    e889b91a:	c7a1                	beqz	a5,e889b962 <dhcp_handle_ack.isra.2+0xce>
    ip_addr_set_ip4_u32_val(dns_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n)));
    e889b91c:	0004b417          	auipc	s0,0x4b
    e889b920:	e2440413          	addi	s0,s0,-476 # e88e6740 <dhcp_rx_options_val>
    e889b924:	5008                	lw	a0,32(s0)
    e889b926:	e08eb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889b92a:	c42a                	sw	a0,8(sp)
    dns_setserver(n, &dns_addr);
    e889b92c:	002c                	addi	a1,sp,8
    e889b92e:	4501                	li	a0,0
    ip_addr_set_ip4_u32_val(dns_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n)));
    e889b930:	00010e23          	sb	zero,28(sp)
    e889b934:	c602                	sw	zero,12(sp)
    e889b936:	e802                	sd	zero,16(sp)
    e889b938:	00010c23          	sb	zero,24(sp)
    dns_setserver(n, &dns_addr);
    e889b93c:	c09eb0ef          	jal	ra,e8887544 <dns_setserver>
  for (n = 0; (n < LWIP_DHCP_PROVIDE_DNS_SERVERS) && dhcp_option_given(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n); n++) {
    e889b940:	0094c783          	lbu	a5,9(s1)
    e889b944:	cf99                	beqz	a5,e889b962 <dhcp_handle_ack.isra.2+0xce>
    ip_addr_set_ip4_u32_val(dns_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n)));
    e889b946:	5048                	lw	a0,36(s0)
    e889b948:	de6eb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889b94c:	c42a                	sw	a0,8(sp)
    dns_setserver(n, &dns_addr);
    e889b94e:	002c                	addi	a1,sp,8
    e889b950:	4505                	li	a0,1
    ip_addr_set_ip4_u32_val(dns_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n)));
    e889b952:	00010e23          	sb	zero,28(sp)
    e889b956:	c602                	sw	zero,12(sp)
    e889b958:	e802                	sd	zero,16(sp)
    e889b95a:	00010c23          	sb	zero,24(sp)
    dns_setserver(n, &dns_addr);
    e889b95e:	be7eb0ef          	jal	ra,e8887544 <dns_setserver>
}
    e889b962:	70e2                	ld	ra,56(sp)
    e889b964:	7422                	ld	s0,40(sp)
    e889b966:	74c2                	ld	s1,48(sp)
    e889b968:	6121                	addi	sp,sp,64
    e889b96a:	8082                	ret
    dhcp->offered_t1_renew = dhcp->offered_t0_lease / 2;
    e889b96c:	5c5c                	lw	a5,60(s0)
    e889b96e:	7c17b78b          	extu	a5,a5,31,1
    e889b972:	bfa9                	j	e889b8cc <dhcp_handle_ack.isra.2+0x38>
    dhcp->offered_t2_rebind = (dhcp->offered_t0_lease * 7U) / 8U;
    e889b974:	5c58                	lw	a4,60(s0)
    e889b976:	479d                	li	a5,7
    e889b978:	02e787bb          	mulw	a5,a5,a4
    e889b97c:	7c37b78b          	extu	a5,a5,31,3
    e889b980:	bfb9                	j	e889b8de <dhcp_handle_ack.isra.2+0x4a>
    dhcp->subnet_mask_given = 0;
    e889b982:	000403a3          	sb	zero,7(s0)
    e889b986:	bfad                	j	e889b900 <dhcp_handle_ack.isra.2+0x6c>

00000000e889b988 <dhcp_recv>:
{
    e889b988:	7135                	addi	sp,sp,-160
  struct netif *netif = ip_current_input_netif();
    e889b98a:	0004a797          	auipc	a5,0x4a
    e889b98e:	1be78793          	addi	a5,a5,446 # e88e5b48 <ip_data>
{
    e889b992:	e526                	sd	s1,136(sp)
    e889b994:	ed06                	sd	ra,152(sp)
    e889b996:	e922                	sd	s0,144(sp)
    e889b998:	e14a                	sd	s2,128(sp)
    e889b99a:	fcce                	sd	s3,120(sp)
    e889b99c:	f8d2                	sd	s4,112(sp)
    e889b99e:	f4d6                	sd	s5,104(sp)
    e889b9a0:	f0da                	sd	s6,96(sp)
    e889b9a2:	ecde                	sd	s7,88(sp)
    e889b9a4:	e8e2                	sd	s8,80(sp)
    e889b9a6:	e4e6                	sd	s9,72(sp)
    e889b9a8:	e0ea                	sd	s10,64(sp)
    e889b9aa:	fc6e                	sd	s11,56(sp)
  struct netif *netif = ip_current_input_netif();
    e889b9ac:	6780                	ld	s0,8(a5)
{
    e889b9ae:	84b2                	mv	s1,a2
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889b9b0:	0e043903          	ld	s2,224(s0)
  if ((dhcp == NULL) || (dhcp->pcb_allocated == 0)) {
    e889b9b4:	0e090463          	beqz	s2,e889ba9c <dhcp_recv+0x114>
    e889b9b8:	00494783          	lbu	a5,4(s2)
    e889b9bc:	c3e5                	beqz	a5,e889ba9c <dhcp_recv+0x114>
  struct dhcp_msg *reply_msg = (struct dhcp_msg *)p->payload;
    e889b9be:	00863983          	ld	s3,8(a2)
  LWIP_ASSERT("invalid server address type", IP_IS_V4(addr));
    e889b9c2:	ca95                	beqz	a3,e889b9f6 <dhcp_recv+0x6e>
    e889b9c4:	0146c783          	lbu	a5,20(a3)
    e889b9c8:	c79d                	beqz	a5,e889b9f6 <dhcp_recv+0x6e>
    e889b9ca:	02f00593          	li	a1,47
    e889b9ce:	00038517          	auipc	a0,0x38
    e889b9d2:	f4250513          	addi	a0,a0,-190 # e88d3910 <dhcp_discover_request_options+0x108>
    e889b9d6:	9a3e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889b9da:	00150693          	addi	a3,a0,1
    e889b9de:	6ea00613          	li	a2,1770
    e889b9e2:	00038597          	auipc	a1,0x38
    e889b9e6:	ffe58593          	addi	a1,a1,-2 # e88d39e0 <dhcp_discover_request_options+0x1d8>
    e889b9ea:	00033517          	auipc	a0,0x33
    e889b9ee:	6c650513          	addi	a0,a0,1734 # e88cf0b0 <kSinTable1024+0x900>
    e889b9f2:	8d5e00ef          	jal	ra,e887c2c6 <eLIBs_printf>
  if (p->len < DHCP_MIN_REPLY_LEN) {
    e889b9f6:	0124d703          	lhu	a4,18(s1)
    e889b9fa:	02b00793          	li	a5,43
    e889b9fe:	08e7ff63          	bgeu	a5,a4,e889ba9c <dhcp_recv+0x114>
  if (reply_msg->op != DHCP_BOOTREPLY) {
    e889ba02:	0009c703          	lbu	a4,0(s3)
    e889ba06:	4789                	li	a5,2
    e889ba08:	08f71a63          	bne	a4,a5,e889ba9c <dhcp_recv+0x114>
  for (i = 0; i < netif->hwaddr_len && i < LWIP_MIN(DHCP_CHADDR_LEN, NETIF_MAX_HWADDR_LEN); i++) {
    e889ba0c:	10a44683          	lbu	a3,266(s0)
    e889ba10:	4781                	li	a5,0
    e889ba12:	4719                	li	a4,6
    if (netif->hwaddr[i] != reply_msg->chaddr[i]) {
    e889ba14:	10440613          	addi	a2,s0,260
    e889ba18:	01b98593          	addi	a1,s3,27
  for (i = 0; i < netif->hwaddr_len && i < LWIP_MIN(DHCP_CHADDR_LEN, NETIF_MAX_HWADDR_LEN); i++) {
    e889ba1c:	0ff7f513          	andi	a0,a5,255
    e889ba20:	00d57463          	bgeu	a0,a3,e889ba28 <dhcp_recv+0xa0>
    e889ba24:	06e79563          	bne	a5,a4,e889ba8e <dhcp_recv+0x106>
  if (lwip_ntohl(reply_msg->xid) != dhcp->xid) {
    e889ba28:	0049a503          	lw	a0,4(s3)
    e889ba2c:	d02eb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889ba30:	2501                	sext.w	a0,a0
    e889ba32:	00092783          	lw	a5,0(s2)
    e889ba36:	06a79363          	bne	a5,a0,e889ba9c <dhcp_recv+0x114>
  dhcp_clear_all_options(dhcp);
    e889ba3a:	4629                	li	a2,10
    e889ba3c:	4581                	li	a1,0
    e889ba3e:	0004b517          	auipc	a0,0x4b
    e889ba42:	cf250513          	addi	a0,a0,-782 # e88e6730 <dhcp_rx_options_given>
    e889ba46:	94fe00ef          	jal	ra,e887c394 <eLIBs_memset>
  if (p->len < DHCP_SNAME_OFS) {
    e889ba4a:	0124d703          	lhu	a4,18(s1)
    e889ba4e:	02b00793          	li	a5,43
    e889ba52:	04e7f563          	bgeu	a5,a4,e889ba9c <dhcp_recv+0x114>
  options_idx_max = p->tot_len;
    e889ba56:	0104da03          	lhu	s4,16(s1)
  int parse_sname_as_options = 0;
    e889ba5a:	e002                	sd	zero,0(sp)
  options_idx = DHCP_OPTIONS_OFS;
    e889ba5c:	0f000813          	li	a6,240
            dhcp_set_option_value(dhcp, decode_idx, lwip_htonl(value));
    e889ba60:	0004bb17          	auipc	s6,0x4b
    e889ba64:	ce0b0b13          	addi	s6,s6,-800 # e88e6740 <dhcp_rx_options_val>
  q = p;
    e889ba68:	89a6                	mv	s3,s1
  while ((q != NULL) && (options_idx >= q->len)) {
    e889ba6a:	02098963          	beqz	s3,e889ba9c <dhcp_recv+0x114>
    e889ba6e:	0008071b          	sext.w	a4,a6
    e889ba72:	0129d783          	lhu	a5,18(s3)
    e889ba76:	e83a                	sd	a4,16(sp)
    e889ba78:	04f77463          	bgeu	a4,a5,e889bac0 <dhcp_recv+0x138>
  options = (u8_t *)q->payload;
    e889ba7c:	0089b783          	ld	a5,8(s3)
    e889ba80:	8c42                	mv	s8,a6
        if (!dhcp_option_given(dhcp, decode_idx)) {
    e889ba82:	0004ba97          	auipc	s5,0x4b
    e889ba86:	caea8a93          	addi	s5,s5,-850 # e88e6730 <dhcp_rx_options_given>
  options = (u8_t *)q->payload;
    e889ba8a:	e43e                	sd	a5,8(sp)
  while ((q != NULL) && (offset < offset_max) && (options[offset] != DHCP_OPTION_END)) {
    e889ba8c:	ae7d                	j	e889be4a <dhcp_recv+0x4c2>
    if (netif->hwaddr[i] != reply_msg->chaddr[i]) {
    e889ba8e:	80f6450b          	lrbu	a0,a2,a5,0
    e889ba92:	0785                	addi	a5,a5,1
    e889ba94:	80f5c80b          	lrbu	a6,a1,a5,0
    e889ba98:	f8a802e3          	beq	a6,a0,e889ba1c <dhcp_recv+0x94>
  pbuf_free(p);
    e889ba9c:	8526                	mv	a0,s1
    e889ba9e:	faef30ef          	jal	ra,e888f24c <pbuf_free>
}
    e889baa2:	644a                	ld	s0,144(sp)
    e889baa4:	60ea                	ld	ra,152(sp)
    e889baa6:	64aa                	ld	s1,136(sp)
    e889baa8:	690a                	ld	s2,128(sp)
    e889baaa:	79e6                	ld	s3,120(sp)
    e889baac:	7a46                	ld	s4,112(sp)
    e889baae:	7aa6                	ld	s5,104(sp)
    e889bab0:	7b06                	ld	s6,96(sp)
    e889bab2:	6be6                	ld	s7,88(sp)
    e889bab4:	6c46                	ld	s8,80(sp)
    e889bab6:	6ca6                	ld	s9,72(sp)
    e889bab8:	6d06                	ld	s10,64(sp)
    e889baba:	7de2                	ld	s11,56(sp)
    e889babc:	610d                	addi	sp,sp,160
    e889babe:	8082                	ret
    options_idx = (u16_t)(options_idx - q->len);
    e889bac0:	40f8083b          	subw	a6,a6,a5
    options_idx_max = (u16_t)(options_idx_max - q->len);
    e889bac4:	40fa0e3b          	subw	t3,s4,a5
    options_idx = (u16_t)(options_idx - q->len);
    e889bac8:	3c08380b          	extu	a6,a6,15,0
    options_idx_max = (u16_t)(options_idx_max - q->len);
    e889bacc:	3c0e3a0b          	extu	s4,t3,15,0
    q = q->next;
    e889bad0:	0009b983          	ld	s3,0(s3)
    e889bad4:	bf59                	j	e889ba6a <dhcp_recv+0xe2>
    u16_t val_offset = (u16_t)(offset + 2);
    e889bad6:	002c0e9b          	addiw	t4,s8,2
    e889bada:	3c0ebd8b          	extu	s11,t4,15,0
    if (val_offset < offset) {
    e889bade:	facdefe3          	bltu	s11,a2,e889ba9c <dhcp_recv+0x114>
    if ((offset + 1) < q->len) {
    e889bae2:	0129d703          	lhu	a4,18(s3)
    e889bae6:	0016079b          	addiw	a5,a2,1
    e889baea:	02e7da63          	bge	a5,a4,e889bb1e <dhcp_recv+0x196>
      len = options[offset + 1];
    e889baee:	67a2                	ld	a5,8(sp)
    e889baf0:	97e2                	add	a5,a5,s8
    e889baf2:	0017c703          	lbu	a4,1(a5)
    switch (op) {
    e889baf6:	03300793          	li	a5,51
    e889bafa:	0ef68263          	beq	a3,a5,e889bbde <dhcp_recv+0x256>
    e889bafe:	50d7e763          	bltu	a5,a3,e889c00c <dhcp_recv+0x684>
    e889bb02:	4785                	li	a5,1
    e889bb04:	02f68563          	beq	a3,a5,e889bb2e <dhcp_recv+0x1a6>
    e889bb08:	1a068a63          	beqz	a3,e889bcbc <dhcp_recv+0x334>
    e889bb0c:	478d                	li	a5,3
    e889bb0e:	04f68463          	beq	a3,a5,e889bb56 <dhcp_recv+0x1ce>
    e889bb12:	4799                	li	a5,6
    e889bb14:	06f68563          	beq	a3,a5,e889bb7e <dhcp_recv+0x1f6>
    int decode_idx = -1;
    e889bb18:	5d7d                	li	s10,-1
        decode_len = 0;
    e889bb1a:	4c81                	li	s9,0
    e889bb1c:	aa79                	j	e889bcba <dhcp_recv+0x332>
      len = (q->next != NULL ? ((u8_t *)q->next->payload)[0] : 0);
    e889bb1e:	0009b783          	ld	a5,0(s3)
    e889bb22:	46078763          	beqz	a5,e889bf90 <dhcp_recv+0x608>
    e889bb26:	679c                	ld	a5,8(a5)
    e889bb28:	0007c703          	lbu	a4,0(a5)
    e889bb2c:	b7e9                	j	e889baf6 <dhcp_recv+0x16e>
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bb2e:	4791                	li	a5,4
    e889bb30:	4cf70963          	beq	a4,a5,e889c002 <dhcp_recv+0x67a>
    e889bb34:	02f00593          	li	a1,47
    e889bb38:	00038517          	auipc	a0,0x38
    e889bb3c:	dd850513          	addi	a0,a0,-552 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bb40:	839e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bb44:	00150693          	addi	a3,a0,1
    e889bb48:	62e00613          	li	a2,1582
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bb4c:	00038597          	auipc	a1,0x38
    e889bb50:	eb458593          	addi	a1,a1,-332 # e88d3a00 <dhcp_discover_request_options+0x1f8>
    e889bb54:	a881                	j	e889bba4 <dhcp_recv+0x21c>
        LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;);
    e889bb56:	4ae6e963          	bltu	a3,a4,e889c008 <dhcp_recv+0x680>
    e889bb5a:	02f00593          	li	a1,47
    e889bb5e:	00038517          	auipc	a0,0x38
    e889bb62:	db250513          	addi	a0,a0,-590 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bb66:	813e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bb6a:	00150693          	addi	a3,a0,1
    e889bb6e:	63300613          	li	a2,1587
        LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;);
    e889bb72:	00038597          	auipc	a1,0x38
    e889bb76:	e9e58593          	addi	a1,a1,-354 # e88d3a10 <dhcp_discover_request_options+0x208>
    e889bb7a:	a02d                	j	e889bba4 <dhcp_recv+0x21c>
      len = (q->next != NULL ? ((u8_t *)q->next->payload)[0] : 0);
    e889bb7c:	4701                	li	a4,0
        LWIP_ERROR("len %% 4 == 0", len % 4 == 0, return ERR_VAL;);
    e889bb7e:	00377793          	andi	a5,a4,3
    e889bb82:	cb85                	beqz	a5,e889bbb2 <dhcp_recv+0x22a>
    e889bb84:	02f00593          	li	a1,47
    e889bb88:	00038517          	auipc	a0,0x38
    e889bb8c:	d8850513          	addi	a0,a0,-632 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bb90:	fe8e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bb94:	00150693          	addi	a3,a0,1
    e889bb98:	63900613          	li	a2,1593
    e889bb9c:	00038597          	auipc	a1,0x38
    e889bba0:	e8c58593          	addi	a1,a1,-372 # e88d3a28 <dhcp_discover_request_options+0x220>
        LWIP_ERROR("len == 1", len == 1, return ERR_VAL;);
    e889bba4:	00033517          	auipc	a0,0x33
    e889bba8:	50c50513          	addi	a0,a0,1292 # e88cf0b0 <kSinTable1024+0x900>
    e889bbac:	f1ae00ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889bbb0:	b5f5                	j	e889ba9c <dhcp_recv+0x114>
        decode_len = LWIP_MIN(len, 4 * DNS_MAX_SERVERS);
    e889bbb2:	45a1                	li	a1,8
    e889bbb4:	87ba                	mv	a5,a4
    e889bbb6:	00e5f363          	bgeu	a1,a4,e889bbbc <dhcp_recv+0x234>
    e889bbba:	47a1                	li	a5,8
    e889bbbc:	0ff7fc93          	andi	s9,a5,255
        LWIP_ERROR("len >= decode_len", len >= decode_len, return ERR_VAL;);
    e889bbc0:	0f977c63          	bgeu	a4,s9,e889bcb8 <dhcp_recv+0x330>
    e889bbc4:	02f00593          	li	a1,47
    e889bbc8:	00038517          	auipc	a0,0x38
    e889bbcc:	d4850513          	addi	a0,a0,-696 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bbd0:	fa8e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bbd4:	00150693          	addi	a3,a0,1
    e889bbd8:	63c00613          	li	a2,1596
    e889bbdc:	bf59                	j	e889bb72 <dhcp_recv+0x1ea>
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bbde:	4791                	li	a5,4
    e889bbe0:	14f70663          	beq	a4,a5,e889bd2c <dhcp_recv+0x3a4>
    e889bbe4:	02f00593          	li	a1,47
    e889bbe8:	00038517          	auipc	a0,0x38
    e889bbec:	d2850513          	addi	a0,a0,-728 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bbf0:	f88e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bbf4:	00150693          	addi	a3,a0,1
    e889bbf8:	64100613          	li	a2,1601
    e889bbfc:	bf81                	j	e889bb4c <dhcp_recv+0x1c4>
        LWIP_ERROR("len == 1", len == 1, return ERR_VAL;);
    e889bbfe:	4785                	li	a5,1
    e889bc00:	02f70363          	beq	a4,a5,e889bc26 <dhcp_recv+0x29e>
    e889bc04:	02f00593          	li	a1,47
    e889bc08:	00038517          	auipc	a0,0x38
    e889bc0c:	d0850513          	addi	a0,a0,-760 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bc10:	f68e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bc14:	00150693          	addi	a3,a0,1
    e889bc18:	64f00613          	li	a2,1615
        LWIP_ERROR("len == 1", len == 1, return ERR_VAL;);
    e889bc1c:	00038597          	auipc	a1,0x38
    e889bc20:	e1c58593          	addi	a1,a1,-484 # e88d3a38 <dhcp_discover_request_options+0x230>
    e889bc24:	b741                	j	e889bba4 <dhcp_recv+0x21c>
        LWIP_ERROR("overload in file/sname", options_idx == DHCP_OPTIONS_OFS, return ERR_VAL;);
    e889bc26:	65c2                	ld	a1,16(sp)
    e889bc28:	0f000793          	li	a5,240
    e889bc2c:	0ef58163          	beq	a1,a5,e889bd0e <dhcp_recv+0x386>
    e889bc30:	02f00593          	li	a1,47
    e889bc34:	00038517          	auipc	a0,0x38
    e889bc38:	cdc50513          	addi	a0,a0,-804 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bc3c:	f3ce00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bc40:	00150693          	addi	a3,a0,1
    e889bc44:	65100613          	li	a2,1617
    e889bc48:	00038597          	auipc	a1,0x38
    e889bc4c:	e0058593          	addi	a1,a1,-512 # e88d3a48 <dhcp_discover_request_options+0x240>
    e889bc50:	bf91                	j	e889bba4 <dhcp_recv+0x21c>
      len = (q->next != NULL ? ((u8_t *)q->next->payload)[0] : 0);
    e889bc52:	4701                	li	a4,0
        LWIP_ERROR("len == 1", len == 1, return ERR_VAL;);
    e889bc54:	4785                	li	a5,1
    e889bc56:	0af70f63          	beq	a4,a5,e889bd14 <dhcp_recv+0x38c>
    e889bc5a:	02f00593          	li	a1,47
    e889bc5e:	00038517          	auipc	a0,0x38
    e889bc62:	cb250513          	addi	a0,a0,-846 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bc66:	f12e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bc6a:	00150693          	addi	a3,a0,1
    e889bc6e:	65500613          	li	a2,1621
    e889bc72:	b76d                	j	e889bc1c <dhcp_recv+0x294>
      len = (q->next != NULL ? ((u8_t *)q->next->payload)[0] : 0);
    e889bc74:	4701                	li	a4,0
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bc76:	4791                	li	a5,4
    e889bc78:	0af70163          	beq	a4,a5,e889bd1a <dhcp_recv+0x392>
    e889bc7c:	02f00593          	li	a1,47
    e889bc80:	00038517          	auipc	a0,0x38
    e889bc84:	c9050513          	addi	a0,a0,-880 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bc88:	ef0e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bc8c:	00150693          	addi	a3,a0,1
    e889bc90:	65900613          	li	a2,1625
    e889bc94:	bd65                	j	e889bb4c <dhcp_recv+0x1c4>
      len = (q->next != NULL ? ((u8_t *)q->next->payload)[0] : 0);
    e889bc96:	4701                	li	a4,0
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bc98:	4791                	li	a5,4
    e889bc9a:	08f70363          	beq	a4,a5,e889bd20 <dhcp_recv+0x398>
    e889bc9e:	02f00593          	li	a1,47
    e889bca2:	00038517          	auipc	a0,0x38
    e889bca6:	c6e50513          	addi	a0,a0,-914 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bcaa:	ecee00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bcae:	00150693          	addi	a3,a0,1
    e889bcb2:	65d00613          	li	a2,1629
    e889bcb6:	bd59                	j	e889bb4c <dhcp_recv+0x1c4>
        decode_idx = DHCP_OPTION_IDX_DNS_SERVER;
    e889bcb8:	4d21                	li	s10,8
    if (op == DHCP_OPTION_PAD) {
    e889bcba:	eabd                	bnez	a3,e889bd30 <dhcp_recv+0x3a8>
      offset++;
    e889bcbc:	001c081b          	addiw	a6,s8,1
    e889bcc0:	3c083c0b          	extu	s8,a6,15,0
    if (offset >= q->len) {
    e889bcc4:	0129d783          	lhu	a5,18(s3)
    e889bcc8:	000c071b          	sext.w	a4,s8
    e889bccc:	16f76f63          	bltu	a4,a5,e889be4a <dhcp_recv+0x4c2>
      offset = (u16_t)(offset - q->len);
    e889bcd0:	40fc083b          	subw	a6,s8,a5
      offset_max = (u16_t)(offset_max - q->len);
    e889bcd4:	40fa0e3b          	subw	t3,s4,a5
      offset = (u16_t)(offset - q->len);
    e889bcd8:	3c083c0b          	extu	s8,a6,15,0
      offset_max = (u16_t)(offset_max - q->len);
    e889bcdc:	3c0e3a0b          	extu	s4,t3,15,0
      if (offset < offset_max) {
    e889bce0:	db4c7ee3          	bgeu	s8,s4,e889ba9c <dhcp_recv+0x114>
        q = q->next;
    e889bce4:	0009b983          	ld	s3,0(s3)
        LWIP_ERROR("next pbuf was null", q != NULL, return ERR_VAL;);
    e889bce8:	14099e63          	bnez	s3,e889be44 <dhcp_recv+0x4bc>
    e889bcec:	02f00593          	li	a1,47
    e889bcf0:	00038517          	auipc	a0,0x38
    e889bcf4:	c2050513          	addi	a0,a0,-992 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bcf8:	e80e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bcfc:	00150693          	addi	a3,a0,1
    e889bd00:	69d00613          	li	a2,1693
    e889bd04:	00038597          	auipc	a1,0x38
    e889bd08:	da458593          	addi	a1,a1,-604 # e88d3aa8 <dhcp_discover_request_options+0x2a0>
    e889bd0c:	bd61                	j	e889bba4 <dhcp_recv+0x21c>
    decode_len = len;
    e889bd0e:	4c85                	li	s9,1
        decode_idx = DHCP_OPTION_IDX_OVERLOAD;
    e889bd10:	4d01                	li	s10,0
    e889bd12:	b765                	j	e889bcba <dhcp_recv+0x332>
        LWIP_ERROR("len == 1", len == 1, return ERR_VAL;);
    e889bd14:	4c85                	li	s9,1
        decode_idx = DHCP_OPTION_IDX_MSG_TYPE;
    e889bd16:	4d05                	li	s10,1
    e889bd18:	b74d                	j	e889bcba <dhcp_recv+0x332>
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bd1a:	4c91                	li	s9,4
        decode_idx = DHCP_OPTION_IDX_SERVER_ID;
    e889bd1c:	4d09                	li	s10,2
    e889bd1e:	bf71                	j	e889bcba <dhcp_recv+0x332>
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bd20:	4c91                	li	s9,4
        decode_idx = DHCP_OPTION_IDX_T1;
    e889bd22:	4d11                	li	s10,4
    e889bd24:	bf59                	j	e889bcba <dhcp_recv+0x332>
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bd26:	4c91                	li	s9,4
        decode_idx = DHCP_OPTION_IDX_T2;
    e889bd28:	4d15                	li	s10,5
    e889bd2a:	bf41                	j	e889bcba <dhcp_recv+0x332>
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bd2c:	4c91                	li	s9,4
        decode_idx = DHCP_OPTION_IDX_LEASE_TIME;
    e889bd2e:	4d0d                	li	s10,3
      if (offset + len + 2 > 0xFFFF) {
    e889bd30:	2609                	addiw	a2,a2,2
    e889bd32:	9e39                	addw	a2,a2,a4
    e889bd34:	66c1                	lui	a3,0x10
    e889bd36:	d6d653e3          	bge	a2,a3,e889ba9c <dhcp_recv+0x114>
      offset = (u16_t)(offset + len + 2);
    e889bd3a:	0187083b          	addw	a6,a4,s8
    e889bd3e:	2809                	addiw	a6,a6,2
    e889bd40:	3c083c0b          	extu	s8,a6,15,0
      if (decode_len > 0) {
    e889bd44:	f80c80e3          	beqz	s9,e889bcc4 <dhcp_recv+0x33c>
        u32_t value = 0;
    e889bd48:	d602                	sw	zero,44(sp)
          copy_len = LWIP_MIN(decode_len, 4);
    e889bd4a:	4b91                	li	s7,4
        LWIP_ASSERT("check decode_idx", decode_idx >= 0 && decode_idx < DHCP_OPTION_IDX_MAX);
    e889bd4c:	47a5                	li	a5,9
    e889bd4e:	03a7f863          	bgeu	a5,s10,e889bd7e <dhcp_recv+0x3f6>
    e889bd52:	02f00593          	li	a1,47
    e889bd56:	00038517          	auipc	a0,0x38
    e889bd5a:	bba50513          	addi	a0,a0,-1094 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bd5e:	e1ae00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bd62:	00150693          	addi	a3,a0,1
    e889bd66:	67800613          	li	a2,1656
    e889bd6a:	00038597          	auipc	a1,0x38
    e889bd6e:	cf658593          	addi	a1,a1,-778 # e88d3a60 <dhcp_discover_request_options+0x258>
    e889bd72:	00033517          	auipc	a0,0x33
    e889bd76:	33e50513          	addi	a0,a0,830 # e88cf0b0 <kSinTable1024+0x900>
    e889bd7a:	d4ce00ef          	jal	ra,e887c2c6 <eLIBs_printf>
        if (!dhcp_option_given(dhcp, decode_idx)) {
    e889bd7e:	81aac70b          	lrbu	a4,s5,s10,0
    e889bd82:	f329                	bnez	a4,e889bcc4 <dhcp_recv+0x33c>
          copy_len = LWIP_MIN(decode_len, 4);
    e889bd84:	0ffcf713          	andi	a4,s9,255
    e889bd88:	019bf363          	bgeu	s7,s9,e889bd8e <dhcp_recv+0x406>
    e889bd8c:	4711                	li	a4,4
          if (pbuf_copy_partial(q, &value, copy_len, val_offset) != copy_len) {
    e889bd8e:	863a                	mv	a2,a4
    e889bd90:	86ee                	mv	a3,s11
    e889bd92:	106c                	addi	a1,sp,44
    e889bd94:	854e                	mv	a0,s3
    e889bd96:	ec3a                	sd	a4,24(sp)
    e889bd98:	bbbf30ef          	jal	ra,e888f952 <pbuf_copy_partial>
    e889bd9c:	2501                	sext.w	a0,a0
    e889bd9e:	6762                	ld	a4,24(sp)
    e889bda0:	cea71ee3          	bne	a4,a0,e889ba9c <dhcp_recv+0x114>
          if (decode_len > 4) {
    e889bda4:	059bfb63          	bgeu	s7,s9,e889bdfa <dhcp_recv+0x472>
            LWIP_ERROR("decode_len %% 4 == 0", decode_len % 4 == 0, return ERR_VAL;);
    e889bda8:	003cf713          	andi	a4,s9,3
    e889bdac:	c315                	beqz	a4,e889bdd0 <dhcp_recv+0x448>
    e889bdae:	02f00593          	li	a1,47
    e889bdb2:	00038517          	auipc	a0,0x38
    e889bdb6:	b5e50513          	addi	a0,a0,-1186 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bdba:	dbee00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bdbe:	00150693          	addi	a3,a0,1
    e889bdc2:	68100613          	li	a2,1665
    e889bdc6:	00038597          	auipc	a1,0x38
    e889bdca:	cb258593          	addi	a1,a1,-846 # e88d3a78 <dhcp_discover_request_options+0x270>
    e889bdce:	bbd9                	j	e889bba4 <dhcp_recv+0x21c>
            dhcp_set_option_value(dhcp, decode_idx, lwip_htonl(value));
    e889bdd0:	5532                	lw	a0,44(sp)
            dhcp_got_option(dhcp, decode_idx);
    e889bdd2:	4705                	li	a4,1
    e889bdd4:	01aad70b          	srb	a4,s5,s10,0
            dhcp_set_option_value(dhcp, decode_idx, lwip_htonl(value));
    e889bdd8:	956eb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889bddc:	45ab550b          	srw	a0,s6,s10,2
            decode_len = (u8_t)(decode_len - 4);
    e889bde0:	004d871b          	addiw	a4,s11,4
    e889bde4:	ffcc879b          	addiw	a5,s9,-4
    e889bde8:	3c07370b          	extu	a4,a4,15,0
    e889bdec:	0ff7fc93          	andi	s9,a5,255
            if (next_val_offset < val_offset) {
    e889bdf0:	cbb766e3          	bltu	a4,s11,e889ba9c <dhcp_recv+0x114>
            decode_idx++;
    e889bdf4:	2d05                	addiw	s10,s10,1
            decode_len = (u8_t)(decode_len - 4);
    e889bdf6:	8dba                	mv	s11,a4
    e889bdf8:	bf91                	j	e889bd4c <dhcp_recv+0x3c4>
          } else if (decode_len == 4) {
    e889bdfa:	017c9d63          	bne	s9,s7,e889be14 <dhcp_recv+0x48c>
            value = lwip_ntohl(value);
    e889bdfe:	5532                	lw	a0,44(sp)
    e889be00:	92eeb0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889be04:	d62a                	sw	a0,44(sp)
          dhcp_got_option(dhcp, decode_idx);
    e889be06:	4785                	li	a5,1
    e889be08:	01aad78b          	srb	a5,s5,s10,0
          dhcp_set_option_value(dhcp, decode_idx, value);
    e889be0c:	57b2                	lw	a5,44(sp)
    e889be0e:	45ab578b          	srw	a5,s6,s10,2
    e889be12:	bd4d                	j	e889bcc4 <dhcp_recv+0x33c>
            LWIP_ERROR("invalid decode_len", decode_len == 1, return ERR_VAL;);
    e889be14:	4705                	li	a4,1
    e889be16:	02ec8363          	beq	s9,a4,e889be3c <dhcp_recv+0x4b4>
    e889be1a:	02f00593          	li	a1,47
    e889be1e:	00038517          	auipc	a0,0x38
    e889be22:	af250513          	addi	a0,a0,-1294 # e88d3910 <dhcp_discover_request_options+0x108>
    e889be26:	d52e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889be2a:	00150693          	addi	a3,a0,1
    e889be2e:	69000613          	li	a2,1680
    e889be32:	00038597          	auipc	a1,0x38
    e889be36:	c5e58593          	addi	a1,a1,-930 # e88d3a90 <dhcp_discover_request_options+0x288>
    e889be3a:	b3ad                	j	e889bba4 <dhcp_recv+0x21c>
            value = ((u8_t *)&value)[0];
    e889be3c:	02c14783          	lbu	a5,44(sp)
    e889be40:	d63e                	sw	a5,44(sp)
    e889be42:	b7d1                	j	e889be06 <dhcp_recv+0x47e>
        options = (u8_t *)q->payload;
    e889be44:	0089b783          	ld	a5,8(s3)
    e889be48:	e43e                	sd	a5,8(sp)
  while ((q != NULL) && (offset < offset_max) && (options[offset] != DHCP_OPTION_END)) {
    e889be4a:	000c061b          	sext.w	a2,s8
    e889be4e:	01467963          	bgeu	a2,s4,e889be60 <dhcp_recv+0x4d8>
    e889be52:	67a2                	ld	a5,8(sp)
    e889be54:	8187c68b          	lrbu	a3,a5,s8,0
    e889be58:	0ff00793          	li	a5,255
    e889be5c:	c6f69de3          	bne	a3,a5,e889bad6 <dhcp_recv+0x14e>
  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_OVERLOAD)) {
    e889be60:	0004b797          	auipc	a5,0x4b
    e889be64:	8d078793          	addi	a5,a5,-1840 # e88e6730 <dhcp_rx_options_given>
    e889be68:	0007c703          	lbu	a4,0(a5)
    e889be6c:	e329                	bnez	a4,e889beae <dhcp_recv+0x526>
  } else if (parse_sname_as_options) {
    e889be6e:	6702                	ld	a4,0(sp)
    e889be70:	eb39                	bnez	a4,e889bec6 <dhcp_recv+0x53e>
  if (!dhcp_option_given(dhcp, DHCP_OPTION_IDX_MSG_TYPE)) {
    e889be72:	0017c703          	lbu	a4,1(a5)
    e889be76:	c20703e3          	beqz	a4,e889ba9c <dhcp_recv+0x114>
  msg_type = (u8_t)dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_MSG_TYPE);
    e889be7a:	0004b697          	auipc	a3,0x4b
    e889be7e:	8c668693          	addi	a3,a3,-1850 # e88e6740 <dhcp_rx_options_val>
    e889be82:	0046c703          	lbu	a4,4(a3)
  if (msg_type == DHCP_ACK) {
    e889be86:	4615                	li	a2,5
  msg_in = (struct dhcp_msg *)p->payload;
    e889be88:	648c                	ld	a1,8(s1)
  if (msg_type == DHCP_ACK) {
    e889be8a:	06c71b63          	bne	a4,a2,e889bf00 <dhcp_recv+0x578>
    if (dhcp->state == DHCP_STATE_REQUESTING) {
    e889be8e:	00594783          	lbu	a5,5(s2)
    e889be92:	4705                	li	a4,1
    e889be94:	04e79963          	bne	a5,a4,e889bee6 <dhcp_recv+0x55e>
      dhcp_handle_ack(netif, msg_in);
    e889be98:	7068                	ld	a0,224(s0)
    e889be9a:	9fbff0ef          	jal	ra,e889b894 <dhcp_handle_ack.isra.2>
      if ((netif->flags & NETIF_FLAG_ETHARP) != 0) {
    e889be9e:	10b44783          	lbu	a5,267(s0)
        dhcp_check(netif);
    e889bea2:	8522                	mv	a0,s0
      if ((netif->flags & NETIF_FLAG_ETHARP) != 0) {
    e889bea4:	8ba1                	andi	a5,a5,8
    e889bea6:	cbb1                	beqz	a5,e889befa <dhcp_recv+0x572>
        dhcp_check(netif);
    e889bea8:	f0aff0ef          	jal	ra,e889b5b2 <dhcp_check>
    e889beac:	bec5                	j	e889ba9c <dhcp_recv+0x114>
    dhcp_clear_option(dhcp, DHCP_OPTION_IDX_OVERLOAD);
    e889beae:	0004b697          	auipc	a3,0x4b
    e889beb2:	88068123          	sb	zero,-1918(a3) # e88e6730 <dhcp_rx_options_given>
    u32_t overload = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_OVERLOAD);
    e889beb6:	000b2703          	lw	a4,0(s6)
    if (overload == DHCP_OVERLOAD_FILE) {
    e889beba:	4685                	li	a3,1
    e889bebc:	02d70063          	beq	a4,a3,e889bedc <dhcp_recv+0x554>
    } else if (overload == DHCP_OVERLOAD_SNAME) {
    e889bec0:	4689                	li	a3,2
    e889bec2:	00d71863          	bne	a4,a3,e889bed2 <dhcp_recv+0x54a>
    parse_sname_as_options = 0;
    e889bec6:	e002                	sd	zero,0(sp)
    options_idx_max = DHCP_SNAME_OFS + DHCP_SNAME_LEN;
    e889bec8:	06c00a13          	li	s4,108
    options_idx = DHCP_SNAME_OFS;
    e889becc:	02c00813          	li	a6,44
    e889bed0:	be61                	j	e889ba68 <dhcp_recv+0xe0>
    } else if (overload == DHCP_OVERLOAD_SNAME_FILE) {
    e889bed2:	468d                	li	a3,3
    e889bed4:	f8d71de3          	bne	a4,a3,e889be6e <dhcp_recv+0x4e6>
      parse_sname_as_options = 1;
    e889bed8:	4785                	li	a5,1
    e889beda:	e03e                	sd	a5,0(sp)
    options_idx_max = DHCP_FILE_OFS + DHCP_FILE_LEN;
    e889bedc:	0ec00a13          	li	s4,236
    options_idx = DHCP_FILE_OFS;
    e889bee0:	06c00813          	li	a6,108
    e889bee4:	b651                	j	e889ba68 <dhcp_recv+0xe0>
    else if ((dhcp->state == DHCP_STATE_REBOOTING) || (dhcp->state == DHCP_STATE_REBINDING) ||
    e889bee6:	37f5                	addiw	a5,a5,-3
    e889bee8:	0ff7f793          	andi	a5,a5,255
    e889beec:	4709                	li	a4,2
    e889beee:	baf767e3          	bltu	a4,a5,e889ba9c <dhcp_recv+0x114>
      dhcp_handle_ack(netif, msg_in);
    e889bef2:	7068                	ld	a0,224(s0)
    e889bef4:	9a1ff0ef          	jal	ra,e889b894 <dhcp_handle_ack.isra.2>
      dhcp_bind(netif);
    e889bef8:	8522                	mv	a0,s0
    e889befa:	efaff0ef          	jal	ra,e889b5f4 <dhcp_bind>
    e889befe:	be79                	j	e889ba9c <dhcp_recv+0x114>
  else if ((msg_type == DHCP_NAK) &&
    e889bf00:	4619                	li	a2,6
    e889bf02:	02c71f63          	bne	a4,a2,e889bf40 <dhcp_recv+0x5b8>
           ((dhcp->state == DHCP_STATE_REBOOTING) || (dhcp->state == DHCP_STATE_REQUESTING) ||
    e889bf06:	00594703          	lbu	a4,5(s2)
  else if ((msg_type == DHCP_NAK) &&
    e889bf0a:	4689                	li	a3,2
    e889bf0c:	ffd7079b          	addiw	a5,a4,-3
    e889bf10:	0ff7f793          	andi	a5,a5,255
    e889bf14:	00f6f563          	bgeu	a3,a5,e889bf1e <dhcp_recv+0x596>
           ((dhcp->state == DHCP_STATE_REBOOTING) || (dhcp->state == DHCP_STATE_REQUESTING) ||
    e889bf18:	4785                	li	a5,1
    e889bf1a:	b8f711e3          	bne	a4,a5,e889ba9c <dhcp_recv+0x114>
  dhcp_set_state(dhcp, DHCP_STATE_BACKING_OFF);
    e889bf1e:	7068                	ld	a0,224(s0)
    e889bf20:	45b1                	li	a1,12
    e889bf22:	eb3fe0ef          	jal	ra,e889add4 <dhcp_set_state>
  netif_set_addr(netif, IP4_ADDR_ANY4, IP4_ADDR_ANY4, IP4_ADDR_ANY4);
    e889bf26:	00034697          	auipc	a3,0x34
    e889bf2a:	09a68693          	addi	a3,a3,154 # e88cffc0 <ip_addr_any>
    e889bf2e:	8522                	mv	a0,s0
    e889bf30:	8636                	mv	a2,a3
    e889bf32:	85b6                	mv	a1,a3
    e889bf34:	a3bf20ef          	jal	ra,e888e96e <netif_set_addr>
  dhcp_discover(netif);
    e889bf38:	8522                	mv	a0,s0
    e889bf3a:	d58ff0ef          	jal	ra,e889b492 <dhcp_discover>
    e889bf3e:	beb9                	j	e889ba9c <dhcp_recv+0x114>
  else if ((msg_type == DHCP_OFFER) && (dhcp->state == DHCP_STATE_SELECTING)) {
    e889bf40:	4509                	li	a0,2
    e889bf42:	b4a71de3          	bne	a4,a0,e889ba9c <dhcp_recv+0x114>
    e889bf46:	00594703          	lbu	a4,5(s2)
    e889bf4a:	b4c719e3          	bne	a4,a2,e889ba9c <dhcp_recv+0x114>
  if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SERVER_ID)) {
    e889bf4e:	0027c783          	lbu	a5,2(a5)
    e889bf52:	b40785e3          	beqz	a5,e889ba9c <dhcp_recv+0x114>
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889bf56:	0e043903          	ld	s2,224(s0)
    dhcp->request_timeout = 0; /* stop timer */
    e889bf5a:	00091423          	sh	zero,8(s2)
    ip_addr_set_ip4_u32(&dhcp->server_ip_addr, lwip_htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SERVER_ID)));
    e889bf5e:	01890793          	addi	a5,s2,24
    e889bf62:	c385                	beqz	a5,e889bf82 <dhcp_recv+0x5fa>
    e889bf64:	4688                	lw	a0,8(a3)
    e889bf66:	e02e                	sd	a1,0(sp)
    e889bf68:	fc7ea0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889bf6c:	00a92c23          	sw	a0,24(s2)
    e889bf70:	6582                	ld	a1,0(sp)
    e889bf72:	02090623          	sb	zero,44(s2)
    e889bf76:	00093e23          	sd	zero,28(s2)
    e889bf7a:	02092223          	sw	zero,36(s2)
    e889bf7e:	02090423          	sb	zero,40(s2)
    ip4_addr_copy(dhcp->offered_ip_addr, msg_in->yiaddr);
    e889bf82:	499c                	lw	a5,16(a1)
    dhcp_select(netif);
    e889bf84:	8522                	mv	a0,s0
    ip4_addr_copy(dhcp->offered_ip_addr, msg_in->yiaddr);
    e889bf86:	02f92823          	sw	a5,48(s2)
    dhcp_select(netif);
    e889bf8a:	b32ff0ef          	jal	ra,e889b2bc <dhcp_select>
    e889bf8e:	b639                	j	e889ba9c <dhcp_recv+0x114>
    switch (op) {
    e889bf90:	03400793          	li	a5,52
    e889bf94:	c6f688e3          	beq	a3,a5,e889bc04 <dhcp_recv+0x27c>
    e889bf98:	02d7e663          	bltu	a5,a3,e889bfc4 <dhcp_recv+0x63c>
    e889bf9c:	478d                	li	a5,3
    e889bf9e:	baf68ee3          	beq	a3,a5,e889bb5a <dhcp_recv+0x1d2>
    e889bfa2:	00d7e963          	bltu	a5,a3,e889bfb4 <dhcp_recv+0x62c>
    e889bfa6:	4785                	li	a5,1
    e889bfa8:	b8f686e3          	beq	a3,a5,e889bb34 <dhcp_recv+0x1ac>
    int decode_idx = -1;
    e889bfac:	5d7d                	li	s10,-1
        decode_len = len = 0;
    e889bfae:	4c81                	li	s9,0
    e889bfb0:	4701                	li	a4,0
    e889bfb2:	b321                	j	e889bcba <dhcp_recv+0x332>
    switch (op) {
    e889bfb4:	4799                	li	a5,6
    e889bfb6:	bcf683e3          	beq	a3,a5,e889bb7c <dhcp_recv+0x1f4>
    e889bfba:	03300793          	li	a5,51
    e889bfbe:	c2f683e3          	beq	a3,a5,e889bbe4 <dhcp_recv+0x25c>
    e889bfc2:	b7ed                	j	e889bfac <dhcp_recv+0x624>
    e889bfc4:	03600793          	li	a5,54
    e889bfc8:	caf686e3          	beq	a3,a5,e889bc74 <dhcp_recv+0x2ec>
    e889bfcc:	c8f6e3e3          	bltu	a3,a5,e889bc52 <dhcp_recv+0x2ca>
    e889bfd0:	03a00793          	li	a5,58
    e889bfd4:	ccf681e3          	beq	a3,a5,e889bc96 <dhcp_recv+0x30e>
    e889bfd8:	03b00793          	li	a5,59
    e889bfdc:	fcf698e3          	bne	a3,a5,e889bfac <dhcp_recv+0x624>
      len = (q->next != NULL ? ((u8_t *)q->next->payload)[0] : 0);
    e889bfe0:	4701                	li	a4,0
        LWIP_ERROR("len == 4", len == 4, return ERR_VAL;);
    e889bfe2:	4791                	li	a5,4
    e889bfe4:	d4f701e3          	beq	a4,a5,e889bd26 <dhcp_recv+0x39e>
    e889bfe8:	02f00593          	li	a1,47
    e889bfec:	00038517          	auipc	a0,0x38
    e889bff0:	92450513          	addi	a0,a0,-1756 # e88d3910 <dhcp_discover_request_options+0x108>
    e889bff4:	b84e00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889bff8:	00150693          	addi	a3,a0,1
    e889bffc:	66100613          	li	a2,1633
    e889c000:	b6b1                	j	e889bb4c <dhcp_recv+0x1c4>
        decode_idx = DHCP_OPTION_IDX_SUBNET_MASK;
    e889c002:	4d19                	li	s10,6
        decode_len = 0;
    e889c004:	4c91                	li	s9,4
    e889c006:	b32d                	j	e889bd30 <dhcp_recv+0x3a8>
        decode_idx = DHCP_OPTION_IDX_ROUTER;
    e889c008:	4d1d                	li	s10,7
    e889c00a:	bfed                	j	e889c004 <dhcp_recv+0x67c>
    switch (op) {
    e889c00c:	03600793          	li	a5,54
    e889c010:	c6f683e3          	beq	a3,a5,e889bc76 <dhcp_recv+0x2ee>
    e889c014:	00d7eb63          	bltu	a5,a3,e889c02a <dhcp_recv+0x6a2>
    e889c018:	03400793          	li	a5,52
    e889c01c:	bef681e3          	beq	a3,a5,e889bbfe <dhcp_recv+0x276>
    e889c020:	03500793          	li	a5,53
    e889c024:	c2f688e3          	beq	a3,a5,e889bc54 <dhcp_recv+0x2cc>
    e889c028:	bcc5                	j	e889bb18 <dhcp_recv+0x190>
    e889c02a:	03a00793          	li	a5,58
    e889c02e:	c6f685e3          	beq	a3,a5,e889bc98 <dhcp_recv+0x310>
    e889c032:	03b00793          	li	a5,59
    e889c036:	faf686e3          	beq	a3,a5,e889bfe2 <dhcp_recv+0x65a>
    e889c03a:	bcf9                	j	e889bb18 <dhcp_recv+0x190>

00000000e889c03c <dhcp_network_changed>:
{
    e889c03c:	1101                	addi	sp,sp,-32
    e889c03e:	ec06                	sd	ra,24(sp)
    e889c040:	e422                	sd	s0,8(sp)
    e889c042:	e826                	sd	s1,16(sp)
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889c044:	7164                	ld	s1,224(a0)
  if (!dhcp) {
    e889c046:	c8a5                	beqz	s1,e889c0b6 <dhcp_network_changed+0x7a>
  switch (dhcp->state) {
    e889c048:	0054c783          	lbu	a5,5(s1)
    e889c04c:	4715                	li	a4,5
    e889c04e:	04f76963          	bltu	a4,a5,e889c0a0 <dhcp_network_changed+0x64>
    e889c052:	470d                	li	a4,3
    e889c054:	04e7f963          	bgeu	a5,a4,e889c0a6 <dhcp_network_changed+0x6a>
    e889c058:	cfb9                	beqz	a5,e889c0b6 <dhcp_network_changed+0x7a>
      LWIP_ASSERT("invalid dhcp->state", dhcp->state <= DHCP_STATE_BACKING_OFF);
    e889c05a:	4731                	li	a4,12
    e889c05c:	842a                	mv	s0,a0
    e889c05e:	02f77863          	bgeu	a4,a5,e889c08e <dhcp_network_changed+0x52>
    e889c062:	02f00593          	li	a1,47
    e889c066:	00038517          	auipc	a0,0x38
    e889c06a:	8aa50513          	addi	a0,a0,-1878 # e88d3910 <dhcp_discover_request_options+0x108>
    e889c06e:	b0ae00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889c072:	00150693          	addi	a3,a0,1
    e889c076:	36d00613          	li	a2,877
    e889c07a:	00037597          	auipc	a1,0x37
    e889c07e:	7be58593          	addi	a1,a1,1982 # e88d3838 <dhcp_discover_request_options+0x30>
    e889c082:	00033517          	auipc	a0,0x33
    e889c086:	02e50513          	addi	a0,a0,46 # e88cf0b0 <kSinTable1024+0x900>
    e889c08a:	a3ce00ef          	jal	ra,e887c2c6 <eLIBs_printf>
      dhcp->tries = 0;
    e889c08e:	00048323          	sb	zero,6(s1)
      dhcp_discover(netif);
    e889c092:	8522                	mv	a0,s0
}
    e889c094:	6422                	ld	s0,8(sp)
    e889c096:	60e2                	ld	ra,24(sp)
    e889c098:	64c2                	ld	s1,16(sp)
    e889c09a:	6105                	addi	sp,sp,32
      dhcp_discover(netif);
    e889c09c:	bf6ff06f          	j	e889b492 <dhcp_discover>
  switch (dhcp->state) {
    e889c0a0:	4729                	li	a4,10
    e889c0a2:	fae79ce3          	bne	a5,a4,e889c05a <dhcp_network_changed+0x1e>
      dhcp->tries = 0;
    e889c0a6:	00048323          	sb	zero,6(s1)
}
    e889c0aa:	6422                	ld	s0,8(sp)
    e889c0ac:	60e2                	ld	ra,24(sp)
    e889c0ae:	64c2                	ld	s1,16(sp)
    e889c0b0:	6105                	addi	sp,sp,32
      dhcp_reboot(netif);
    e889c0b2:	8d0ff06f          	j	e889b182 <dhcp_reboot>
}
    e889c0b6:	60e2                	ld	ra,24(sp)
    e889c0b8:	6422                	ld	s0,8(sp)
    e889c0ba:	64c2                	ld	s1,16(sp)
    e889c0bc:	6105                	addi	sp,sp,32
    e889c0be:	8082                	ret

00000000e889c0c0 <dhcp_arp_reply>:
{
    e889c0c0:	7139                	addi	sp,sp,-64
    e889c0c2:	fc06                	sd	ra,56(sp)
    e889c0c4:	f852                	sd	s4,48(sp)
    e889c0c6:	fa91540b          	sdd	s0,s1,(sp),1,4
    e889c0ca:	fd31590b          	sdd	s2,s3,(sp),2,4
  LWIP_ERROR("netif != NULL", (netif != NULL), return;);
    e889c0ce:	ed1d                	bnez	a0,e889c10c <dhcp_arp_reply+0x4c>
    e889c0d0:	02f00593          	li	a1,47
    e889c0d4:	00038517          	auipc	a0,0x38
    e889c0d8:	83c50513          	addi	a0,a0,-1988 # e88d3910 <dhcp_discover_request_options+0x108>
    e889c0dc:	a9ce00ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889c0e0:	00150693          	addi	a3,a0,1
    e889c0e4:	38b00613          	li	a2,907
    e889c0e8:	00034597          	auipc	a1,0x34
    e889c0ec:	8f858593          	addi	a1,a1,-1800 # e88cf9e0 <ip_addr_any_type+0x180>
    e889c0f0:	00033517          	auipc	a0,0x33
    e889c0f4:	fc050513          	addi	a0,a0,-64 # e88cf0b0 <kSinTable1024+0x900>
    e889c0f8:	9cee00ef          	jal	ra,e887c2c6 <eLIBs_printf>
}
    e889c0fc:	70e2                	ld	ra,56(sp)
    e889c0fe:	fa91440b          	ldd	s0,s1,(sp),1,4
    e889c102:	7a42                	ld	s4,48(sp)
    e889c104:	fd31490b          	ldd	s2,s3,(sp),2,4
    e889c108:	6121                	addi	sp,sp,64
    e889c10a:	8082                	ret
  dhcp = netif_dhcp_data(netif);
    e889c10c:	7160                	ld	s0,224(a0)
    e889c10e:	89aa                	mv	s3,a0
  if ((dhcp != NULL) && (dhcp->state == DHCP_STATE_CHECKING)) {
    e889c110:	d475                	beqz	s0,e889c0fc <dhcp_arp_reply+0x3c>
    e889c112:	00544703          	lbu	a4,5(s0)
    e889c116:	47a1                	li	a5,8
    e889c118:	fef712e3          	bne	a4,a5,e889c0fc <dhcp_arp_reply+0x3c>
    if (ip4_addr_cmp(addr, &dhcp->offered_ip_addr)) {
    e889c11c:	4198                	lw	a4,0(a1)
    e889c11e:	581c                	lw	a5,48(s0)
    e889c120:	fcf71ee3          	bne	a4,a5,e889c0fc <dhcp_arp_reply+0x3c>
  dhcp_set_state(dhcp, DHCP_STATE_BACKING_OFF);
    e889c124:	45b1                	li	a1,12
    e889c126:	8522                	mv	a0,s0
    e889c128:	cadfe0ef          	jal	ra,e889add4 <dhcp_set_state>
  p_out = dhcp_create_msg(netif, dhcp, DHCP_DECLINE, &options_out_len);
    e889c12c:	00e10693          	addi	a3,sp,14
    e889c130:	4611                	li	a2,4
    e889c132:	85a2                	mv	a1,s0
    e889c134:	854e                	mv	a0,s3
    e889c136:	e83fe0ef          	jal	ra,e889afb8 <dhcp_create_msg>
    e889c13a:	84aa                	mv	s1,a0
  if (p_out != NULL) {
    e889c13c:	c52d                	beqz	a0,e889c1a6 <dhcp_arp_reply+0xe6>
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_REQUESTED_IP, 4);
    e889c13e:	00853903          	ld	s2,8(a0)
    e889c142:	00e15503          	lhu	a0,14(sp)
    e889c146:	4691                	li	a3,4
    e889c148:	0f090913          	addi	s2,s2,240
    e889c14c:	03200613          	li	a2,50
    e889c150:	85ca                	mv	a1,s2
    e889c152:	d07fe0ef          	jal	ra,e889ae58 <dhcp_option>
    e889c156:	8a2a                	mv	s4,a0
    e889c158:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr)));
    e889c15c:	5808                	lw	a0,48(s0)
    e889c15e:	dd1ea0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889c162:	0005061b          	sext.w	a2,a0
    e889c166:	85ca                	mv	a1,s2
    e889c168:	8552                	mv	a0,s4
    e889c16a:	dbffe0ef          	jal	ra,e889af28 <dhcp_option_long>
    e889c16e:	00a11723          	sh	a0,14(sp)
    dhcp_option_trailer(options_out_len, msg_out->options, p_out);
    e889c172:	8626                	mv	a2,s1
    e889c174:	85ca                	mv	a1,s2
    e889c176:	fdbfe0ef          	jal	ra,e889b150 <dhcp_option_trailer>
    result = udp_sendto_if_src(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif, IP4_ADDR_ANY);
    e889c17a:	0004a517          	auipc	a0,0x4a
    e889c17e:	5a650513          	addi	a0,a0,1446 # e88e6720 <dhcp_pcb>
    e889c182:	6108                	ld	a0,0(a0)
    e889c184:	00034797          	auipc	a5,0x34
    e889c188:	e3c78793          	addi	a5,a5,-452 # e88cffc0 <ip_addr_any>
    e889c18c:	874e                	mv	a4,s3
    e889c18e:	04300693          	li	a3,67
    e889c192:	00034617          	auipc	a2,0x34
    e889c196:	e4660613          	addi	a2,a2,-442 # e88cffd8 <ip_addr_broadcast>
    e889c19a:	85a6                	mv	a1,s1
    e889c19c:	b1cfb0ef          	jal	ra,e88974b8 <udp_sendto_if_src>
    pbuf_free(p_out);
    e889c1a0:	8526                	mv	a0,s1
    e889c1a2:	8aaf30ef          	jal	ra,e888f24c <pbuf_free>
  if (dhcp->tries < 255) {
    e889c1a6:	00644783          	lbu	a5,6(s0)
    e889c1aa:	0ff00713          	li	a4,255
    e889c1ae:	00e78563          	beq	a5,a4,e889c1b8 <dhcp_arp_reply+0xf8>
    dhcp->tries++;
    e889c1b2:	2785                	addiw	a5,a5,1
    e889c1b4:	00f40323          	sb	a5,6(s0)
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889c1b8:	47d1                	li	a5,20
    e889c1ba:	00f41423          	sh	a5,8(s0)
  return result;
    e889c1be:	bf3d                	j	e889c0fc <dhcp_arp_reply+0x3c>

00000000e889c1c0 <dhcp_renew>:
{
    e889c1c0:	715d                	addi	sp,sp,-80
    e889c1c2:	e486                	sd	ra,72(sp)
    e889c1c4:	fc26                	sd	s1,56(sp)
    e889c1c6:	f44e                	sd	s3,40(sp)
    e889c1c8:	e0a2                	sd	s0,64(sp)
    e889c1ca:	f84a                	sd	s2,48(sp)
    e889c1cc:	f052                	sd	s4,32(sp)
    e889c1ce:	ec56                	sd	s5,24(sp)
    e889c1d0:	e85a                	sd	s6,16(sp)
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889c1d2:	7160                	ld	s0,224(a0)
{
    e889c1d4:	89aa                	mv	s3,a0
  dhcp_set_state(dhcp, DHCP_STATE_RENEWING);
    e889c1d6:	4595                	li	a1,5
    e889c1d8:	8522                	mv	a0,s0
    e889c1da:	bfbfe0ef          	jal	ra,e889add4 <dhcp_set_state>
  p_out = dhcp_create_msg(netif, dhcp, DHCP_REQUEST, &options_out_len);
    e889c1de:	54fd                	li	s1,-1
    e889c1e0:	00e10693          	addi	a3,sp,14
    e889c1e4:	460d                	li	a2,3
    e889c1e6:	85a2                	mv	a1,s0
    e889c1e8:	854e                	mv	a0,s3
    e889c1ea:	dcffe0ef          	jal	ra,e889afb8 <dhcp_create_msg>
  if (p_out != NULL) {
    e889c1ee:	c549                	beqz	a0,e889c278 <dhcp_renew+0xb8>
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
    e889c1f0:	6504                	ld	s1,8(a0)
    e889c1f2:	892a                	mv	s2,a0
    e889c1f4:	00e15503          	lhu	a0,14(sp)
    e889c1f8:	0f048493          	addi	s1,s1,240
    e889c1fc:	4689                	li	a3,2
    e889c1fe:	03900613          	li	a2,57
    e889c202:	85a6                	mv	a1,s1
    e889c204:	c55fe0ef          	jal	ra,e889ae58 <dhcp_option>
    e889c208:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif));
    e889c20c:	1009d603          	lhu	a2,256(s3)
    e889c210:	85a6                	mv	a1,s1
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options));
    e889c212:	4a01                	li	s4,0
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif));
    e889c214:	bd7fe0ef          	jal	ra,e889adea <dhcp_option_short>
    e889c218:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options));
    e889c21c:	4691                	li	a3,4
    e889c21e:	03700613          	li	a2,55
    e889c222:	85a6                	mv	a1,s1
    e889c224:	c35fe0ef          	jal	ra,e889ae58 <dhcp_option>
    e889c228:	00a11723          	sh	a0,14(sp)
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889c22c:	00037b17          	auipc	s6,0x37
    e889c230:	5dcb0b13          	addi	s6,s6,1500 # e88d3808 <dhcp_discover_request_options>
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889c234:	4a91                	li	s5,4
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889c236:	814b460b          	lrbu	a2,s6,s4,0
    e889c23a:	00e15503          	lhu	a0,14(sp)
    e889c23e:	85a6                	mv	a1,s1
    e889c240:	0a05                	addi	s4,s4,1
    e889c242:	c8bfe0ef          	jal	ra,e889aecc <dhcp_option_byte>
    e889c246:	00a11723          	sh	a0,14(sp)
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889c24a:	ff5a16e3          	bne	s4,s5,e889c236 <dhcp_renew+0x76>
    dhcp_option_trailer(options_out_len, msg_out->options, p_out);
    e889c24e:	85a6                	mv	a1,s1
    e889c250:	864a                	mv	a2,s2
    e889c252:	efffe0ef          	jal	ra,e889b150 <dhcp_option_trailer>
    result = udp_sendto_if(dhcp_pcb, p_out, &dhcp->server_ip_addr, LWIP_IANA_PORT_DHCP_SERVER, netif);
    e889c256:	0004a797          	auipc	a5,0x4a
    e889c25a:	4ca78793          	addi	a5,a5,1226 # e88e6720 <dhcp_pcb>
    e889c25e:	6388                	ld	a0,0(a5)
    e889c260:	874e                	mv	a4,s3
    e889c262:	04300693          	li	a3,67
    e889c266:	01840613          	addi	a2,s0,24
    e889c26a:	85ca                	mv	a1,s2
    e889c26c:	a44fb0ef          	jal	ra,e88974b0 <udp_sendto_if>
    e889c270:	84aa                	mv	s1,a0
    pbuf_free(p_out);
    e889c272:	854a                	mv	a0,s2
    e889c274:	fd9f20ef          	jal	ra,e888f24c <pbuf_free>
  if (dhcp->tries < 255) {
    e889c278:	00644783          	lbu	a5,6(s0)
    e889c27c:	0ff00713          	li	a4,255
    e889c280:	00e78563          	beq	a5,a4,e889c28a <dhcp_renew+0xca>
    dhcp->tries++;
    e889c284:	2785                	addiw	a5,a5,1
    e889c286:	00f40323          	sb	a5,6(s0)
  msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000);
    e889c28a:	00644783          	lbu	a5,6(s0)
    e889c28e:	4725                	li	a4,9
    e889c290:	02f76b63          	bltu	a4,a5,e889c2c6 <dhcp_renew+0x106>
    e889c294:	7d000713          	li	a4,2000
    e889c298:	02e787bb          	mulw	a5,a5,a4
    e889c29c:	3c07b78b          	extu	a5,a5,15,0
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889c2a0:	1f37879b          	addiw	a5,a5,499
    e889c2a4:	1f400713          	li	a4,500
    e889c2a8:	02e7c7bb          	divw	a5,a5,a4
}
    e889c2ac:	8526                	mv	a0,s1
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889c2ae:	00f41423          	sh	a5,8(s0)
}
    e889c2b2:	60a6                	ld	ra,72(sp)
    e889c2b4:	6406                	ld	s0,64(sp)
    e889c2b6:	74e2                	ld	s1,56(sp)
    e889c2b8:	7942                	ld	s2,48(sp)
    e889c2ba:	79a2                	ld	s3,40(sp)
    e889c2bc:	7a02                	ld	s4,32(sp)
    e889c2be:	6ae2                	ld	s5,24(sp)
    e889c2c0:	6b42                	ld	s6,16(sp)
    e889c2c2:	6161                	addi	sp,sp,80
    e889c2c4:	8082                	ret
  msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000);
    e889c2c6:	6795                	lui	a5,0x5
    e889c2c8:	e2078793          	addi	a5,a5,-480 # 4e20 <memcmp-0xe87fb1e0>
    e889c2cc:	bfd1                	j	e889c2a0 <dhcp_renew+0xe0>

00000000e889c2ce <dhcp_supplied_address>:
 *         0 otherwise
 */
u8_t
dhcp_supplied_address(const struct netif *netif)
{
  if ((netif != NULL) && (netif_dhcp_data(netif) != NULL)) {
    e889c2ce:	c11d                	beqz	a0,e889c2f4 <dhcp_supplied_address+0x26>
    e889c2d0:	717c                	ld	a5,224(a0)
    struct dhcp *dhcp = netif_dhcp_data(netif);
    return (dhcp->state == DHCP_STATE_BOUND) || (dhcp->state == DHCP_STATE_RENEWING) ||
           (dhcp->state == DHCP_STATE_REBINDING);
  }
  return 0;
    e889c2d2:	4501                	li	a0,0
  if ((netif != NULL) && (netif_dhcp_data(netif) != NULL)) {
    e889c2d4:	c38d                	beqz	a5,e889c2f6 <dhcp_supplied_address+0x28>
    return (dhcp->state == DHCP_STATE_BOUND) || (dhcp->state == DHCP_STATE_RENEWING) ||
    e889c2d6:	0057c783          	lbu	a5,5(a5)
    e889c2da:	4729                	li	a4,10
    e889c2dc:	4505                	li	a0,1
    e889c2de:	00e78863          	beq	a5,a4,e889c2ee <dhcp_supplied_address+0x20>
    e889c2e2:	ffc7851b          	addiw	a0,a5,-4
    e889c2e6:	0ff57513          	andi	a0,a0,255
    e889c2ea:	00253513          	sltiu	a0,a0,2
    e889c2ee:	0ff57513          	andi	a0,a0,255
    e889c2f2:	8082                	ret
  return 0;
    e889c2f4:	4501                	li	a0,0
}
    e889c2f6:	8082                	ret

00000000e889c2f8 <dhcp_release_and_stop>:
{
    e889c2f8:	715d                	addi	sp,sp,-80
    e889c2fa:	e486                	sd	ra,72(sp)
    e889c2fc:	e0a2                	sd	s0,64(sp)
    e889c2fe:	fc26                	sd	s1,56(sp)
    e889c300:	f84a                	sd	s2,48(sp)
    e889c302:	f44e                	sd	s3,40(sp)
    e889c304:	f052                	sd	s4,32(sp)
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889c306:	7160                	ld	s0,224(a0)
  if (dhcp == NULL) {
    e889c308:	0e040463          	beqz	s0,e889c3f0 <dhcp_release_and_stop+0xf8>
  if (dhcp->state == DHCP_STATE_OFF) {
    e889c30c:	00544783          	lbu	a5,5(s0)
    e889c310:	0e078063          	beqz	a5,e889c3f0 <dhcp_release_and_stop+0xf8>
  ip_addr_copy(server_ip_addr, dhcp->server_ip_addr);
    e889c314:	02c44783          	lbu	a5,44(s0)
    e889c318:	4699                	li	a3,6
    e889c31a:	4c18                	lw	a4,24(s0)
    e889c31c:	00f10e23          	sb	a5,28(sp)
    e889c320:	0ed79063          	bne	a5,a3,e889c400 <dhcp_release_and_stop+0x108>
    e889c324:	6c18                	ld	a4,24(s0)
    e889c326:	02844783          	lbu	a5,40(s0)
    e889c32a:	e43a                	sd	a4,8(sp)
    e889c32c:	7018                	ld	a4,32(s0)
    e889c32e:	00f10c23          	sb	a5,24(sp)
    e889c332:	e83a                	sd	a4,16(sp)
  ip_addr_set_zero_ip4(&dhcp->server_ip_addr);
    e889c334:	00043c23          	sd	zero,24(s0)
    e889c338:	02043023          	sd	zero,32(s0)
    e889c33c:	02040423          	sb	zero,40(s0)
    e889c340:	02040623          	sb	zero,44(s0)
  ip4_addr_set_zero(&dhcp->offered_ip_addr);
    e889c344:	02043823          	sd	zero,48(s0)
  ip4_addr_set_zero(&dhcp->offered_gw_addr);
    e889c348:	02043c23          	sd	zero,56(s0)
  dhcp->offered_t0_lease = dhcp->offered_t1_renew = dhcp->offered_t2_rebind = 0;
    e889c34c:	04043023          	sd	zero,64(s0)
  dhcp->t1_renew_time = dhcp->t2_rebind_time = dhcp->lease_used = dhcp->t0_timeout = 0;
    e889c350:	00043723          	sd	zero,14(s0)
    e889c354:	84aa                	mv	s1,a0
  if (dhcp_supplied_address(netif)) {
    e889c356:	f79ff0ef          	jal	ra,e889c2ce <dhcp_supplied_address>
    e889c35a:	c53d                	beqz	a0,e889c3c8 <dhcp_release_and_stop+0xd0>
    p_out = dhcp_create_msg(netif, dhcp, DHCP_RELEASE, &options_out_len);
    e889c35c:	00610693          	addi	a3,sp,6
    e889c360:	461d                	li	a2,7
    e889c362:	85a2                	mv	a1,s0
    e889c364:	8526                	mv	a0,s1
    e889c366:	c53fe0ef          	jal	ra,e889afb8 <dhcp_create_msg>
    e889c36a:	892a                	mv	s2,a0
    if (p_out != NULL) {
    e889c36c:	cd31                	beqz	a0,e889c3c8 <dhcp_release_and_stop+0xd0>
      options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_SERVER_ID, 4);
    e889c36e:	00853983          	ld	s3,8(a0)
    e889c372:	00615503          	lhu	a0,6(sp)
    e889c376:	4691                	li	a3,4
    e889c378:	0f098993          	addi	s3,s3,240
    e889c37c:	03600613          	li	a2,54
    e889c380:	85ce                	mv	a1,s3
    e889c382:	ad7fe0ef          	jal	ra,e889ae58 <dhcp_option>
    e889c386:	8a2a                	mv	s4,a0
    e889c388:	00a11323          	sh	a0,6(sp)
      options_out_len = dhcp_option_long(options_out_len, msg_out->options, lwip_ntohl(ip4_addr_get_u32(ip_2_ip4(&server_ip_addr))));
    e889c38c:	4522                	lw	a0,8(sp)
    e889c38e:	ba1ea0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889c392:	0005061b          	sext.w	a2,a0
    e889c396:	85ce                	mv	a1,s3
    e889c398:	8552                	mv	a0,s4
    e889c39a:	b8ffe0ef          	jal	ra,e889af28 <dhcp_option_long>
    e889c39e:	00a11323          	sh	a0,6(sp)
      dhcp_option_trailer(options_out_len, msg_out->options, p_out);
    e889c3a2:	864a                	mv	a2,s2
    e889c3a4:	85ce                	mv	a1,s3
    e889c3a6:	dabfe0ef          	jal	ra,e889b150 <dhcp_option_trailer>
      udp_sendto_if(dhcp_pcb, p_out, &server_ip_addr, LWIP_IANA_PORT_DHCP_SERVER, netif);
    e889c3aa:	0004a797          	auipc	a5,0x4a
    e889c3ae:	37678793          	addi	a5,a5,886 # e88e6720 <dhcp_pcb>
    e889c3b2:	6388                	ld	a0,0(a5)
    e889c3b4:	8726                	mv	a4,s1
    e889c3b6:	04300693          	li	a3,67
    e889c3ba:	0030                	addi	a2,sp,8
    e889c3bc:	85ca                	mv	a1,s2
    e889c3be:	8f2fb0ef          	jal	ra,e88974b0 <udp_sendto_if>
      pbuf_free(p_out);
    e889c3c2:	854a                	mv	a0,s2
    e889c3c4:	e89f20ef          	jal	ra,e888f24c <pbuf_free>
  netif_set_addr(netif, IP4_ADDR_ANY4, IP4_ADDR_ANY4, IP4_ADDR_ANY4);
    e889c3c8:	00034697          	auipc	a3,0x34
    e889c3cc:	bf868693          	addi	a3,a3,-1032 # e88cffc0 <ip_addr_any>
    e889c3d0:	85b6                	mv	a1,a3
    e889c3d2:	8636                	mv	a2,a3
    e889c3d4:	8526                	mv	a0,s1
    e889c3d6:	d98f20ef          	jal	ra,e888e96e <netif_set_addr>
  dhcp_set_state(dhcp, DHCP_STATE_OFF);
    e889c3da:	4581                	li	a1,0
    e889c3dc:	8522                	mv	a0,s0
    e889c3de:	9f7fe0ef          	jal	ra,e889add4 <dhcp_set_state>
  if (dhcp->pcb_allocated != 0) {
    e889c3e2:	00444783          	lbu	a5,4(s0)
    e889c3e6:	c789                	beqz	a5,e889c3f0 <dhcp_release_and_stop+0xf8>
    dhcp_dec_pcb_refcount(); /* free DHCP PCB if not needed any more */
    e889c3e8:	c3eff0ef          	jal	ra,e889b826 <dhcp_dec_pcb_refcount>
    dhcp->pcb_allocated = 0;
    e889c3ec:	00040223          	sb	zero,4(s0)
}
    e889c3f0:	60a6                	ld	ra,72(sp)
    e889c3f2:	6406                	ld	s0,64(sp)
    e889c3f4:	74e2                	ld	s1,56(sp)
    e889c3f6:	7942                	ld	s2,48(sp)
    e889c3f8:	79a2                	ld	s3,40(sp)
    e889c3fa:	7a02                	ld	s4,32(sp)
    e889c3fc:	6161                	addi	sp,sp,80
    e889c3fe:	8082                	ret
  ip_addr_copy(server_ip_addr, dhcp->server_ip_addr);
    e889c400:	c43a                	sw	a4,8(sp)
    e889c402:	c602                	sw	zero,12(sp)
    e889c404:	e802                	sd	zero,16(sp)
    e889c406:	00010c23          	sb	zero,24(sp)
    e889c40a:	b72d                	j	e889c334 <dhcp_release_and_stop+0x3c>

00000000e889c40c <dhcp_start>:
{
    e889c40c:	1101                	addi	sp,sp,-32
    e889c40e:	ec06                	sd	ra,24(sp)
    e889c410:	e84a                	sd	s2,16(sp)
    e889c412:	f891540b          	sdd	s0,s1,(sp),0,4
  LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;);
    e889c416:	ed1d                	bnez	a0,e889c454 <dhcp_start+0x48>
    e889c418:	02f00593          	li	a1,47
    e889c41c:	00037517          	auipc	a0,0x37
    e889c420:	4f450513          	addi	a0,a0,1268 # e88d3910 <dhcp_discover_request_options+0x108>
    e889c424:	f55df0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889c428:	00150693          	addi	a3,a0,1
    e889c42c:	2e700613          	li	a2,743
    e889c430:	00033597          	auipc	a1,0x33
    e889c434:	5b058593          	addi	a1,a1,1456 # e88cf9e0 <ip_addr_any_type+0x180>
  LWIP_ERROR("netif is not up, old style port?", netif_is_up(netif), return ERR_ARG;);
    e889c438:	00033517          	auipc	a0,0x33
    e889c43c:	c7850513          	addi	a0,a0,-904 # e88cf0b0 <kSinTable1024+0x900>
    e889c440:	e87df0ef          	jal	ra,e887c2c6 <eLIBs_printf>
    e889c444:	5441                	li	s0,-16
}
    e889c446:	8522                	mv	a0,s0
    e889c448:	60e2                	ld	ra,24(sp)
    e889c44a:	f891440b          	ldd	s0,s1,(sp),0,4
    e889c44e:	6942                	ld	s2,16(sp)
    e889c450:	6105                	addi	sp,sp,32
    e889c452:	8082                	ret
  LWIP_ERROR("netif is not up, old style port?", netif_is_up(netif), return ERR_ARG;);
    e889c454:	10b54783          	lbu	a5,267(a0)
    e889c458:	84aa                	mv	s1,a0
    e889c45a:	8b85                	andi	a5,a5,1
    e889c45c:	e395                	bnez	a5,e889c480 <dhcp_start+0x74>
    e889c45e:	02f00593          	li	a1,47
    e889c462:	00037517          	auipc	a0,0x37
    e889c466:	4ae50513          	addi	a0,a0,1198 # e88d3910 <dhcp_discover_request_options+0x108>
    e889c46a:	f0fdf0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889c46e:	00150693          	addi	a3,a0,1
    e889c472:	2e800613          	li	a2,744
    e889c476:	00037597          	auipc	a1,0x37
    e889c47a:	28a58593          	addi	a1,a1,650 # e88d3700 <netconn_reset+0x32c>
    e889c47e:	bf6d                	j	e889c438 <dhcp_start+0x2c>
  if (netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) {
    e889c480:	10055703          	lhu	a4,256(a0)
    e889c484:	23f00793          	li	a5,575
  dhcp = netif_dhcp_data(netif);
    e889c488:	0e053903          	ld	s2,224(a0)
  if (netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) {
    e889c48c:	00e7e463          	bltu	a5,a4,e889c494 <dhcp_start+0x88>
    return ERR_MEM;
    e889c490:	547d                	li	s0,-1
    e889c492:	bf55                	j	e889c446 <dhcp_start+0x3a>
  if (dhcp == NULL) {
    e889c494:	02091f63          	bnez	s2,e889c4d2 <dhcp_start+0xc6>
    dhcp = (struct dhcp *)mem_malloc(sizeof(struct dhcp));
    e889c498:	04800513          	li	a0,72
    e889c49c:	c21f10ef          	jal	ra,e888e0bc <mem_malloc>
    e889c4a0:	892a                	mv	s2,a0
    if (dhcp == NULL) {
    e889c4a2:	d57d                	beqz	a0,e889c490 <dhcp_start+0x84>
    netif_set_client_data(netif, LWIP_NETIF_CLIENT_DATA_INDEX_DHCP, dhcp);
    e889c4a4:	f0e8                	sd	a0,224(s1)
  memset(dhcp, 0, sizeof(struct dhcp));
    e889c4a6:	04800613          	li	a2,72
    e889c4aa:	4581                	li	a1,0
    e889c4ac:	854a                	mv	a0,s2
    e889c4ae:	ee7df0ef          	jal	ra,e887c394 <eLIBs_memset>
  if (dhcp_inc_pcb_refcount() != ERR_OK) { /* ensure DHCP PCB is allocated */
    e889c4b2:	ac6ff0ef          	jal	ra,e889b778 <dhcp_inc_pcb_refcount>
    e889c4b6:	842a                	mv	s0,a0
    e889c4b8:	fd61                	bnez	a0,e889c490 <dhcp_start+0x84>
  dhcp->pcb_allocated = 1;
    e889c4ba:	4785                	li	a5,1
    e889c4bc:	00f90223          	sb	a5,4(s2)
  if (!netif_is_link_up(netif)) {
    e889c4c0:	10b4c783          	lbu	a5,267(s1)
    e889c4c4:	8b91                	andi	a5,a5,4
    e889c4c6:	ef81                	bnez	a5,e889c4de <dhcp_start+0xd2>
    dhcp_set_state(dhcp, DHCP_STATE_INIT);
    e889c4c8:	4589                	li	a1,2
    e889c4ca:	854a                	mv	a0,s2
    e889c4cc:	909fe0ef          	jal	ra,e889add4 <dhcp_set_state>
    return ERR_OK;
    e889c4d0:	bf9d                	j	e889c446 <dhcp_start+0x3a>
    if (dhcp->pcb_allocated != 0) {
    e889c4d2:	00494783          	lbu	a5,4(s2)
    e889c4d6:	dbe1                	beqz	a5,e889c4a6 <dhcp_start+0x9a>
      dhcp_dec_pcb_refcount(); /* free DHCP PCB if not needed any more */
    e889c4d8:	b4eff0ef          	jal	ra,e889b826 <dhcp_dec_pcb_refcount>
    e889c4dc:	b7e9                	j	e889c4a6 <dhcp_start+0x9a>
  result = dhcp_discover(netif);
    e889c4de:	8526                	mv	a0,s1
    e889c4e0:	fb3fe0ef          	jal	ra,e889b492 <dhcp_discover>
    e889c4e4:	842a                	mv	s0,a0
  if (result != ERR_OK) {
    e889c4e6:	d125                	beqz	a0,e889c446 <dhcp_start+0x3a>
    dhcp_release_and_stop(netif);
    e889c4e8:	8526                	mv	a0,s1
    e889c4ea:	e0fff0ef          	jal	ra,e889c2f8 <dhcp_release_and_stop>
    e889c4ee:	b74d                	j	e889c490 <dhcp_start+0x84>

00000000e889c4f0 <dhcp_coarse_tmr>:
{
    e889c4f0:	7119                	addi	sp,sp,-128
  NETIF_FOREACH(netif) {
    e889c4f2:	0004a797          	auipc	a5,0x4a
    e889c4f6:	f4678793          	addi	a5,a5,-186 # e88e6438 <netif_list>
{
    e889c4fa:	ecce                	sd	s3,88(sp)
    e889c4fc:	e8d2                	sd	s4,80(sp)
    e889c4fe:	e4d6                	sd	s5,72(sp)
    e889c500:	e0da                	sd	s6,64(sp)
    e889c502:	fc5e                	sd	s7,56(sp)
    e889c504:	f862                	sd	s8,48(sp)
    e889c506:	fc86                	sd	ra,120(sp)
    e889c508:	f8a2                	sd	s0,112(sp)
    e889c50a:	f4a6                	sd	s1,104(sp)
    e889c50c:	f0ca                	sd	s2,96(sp)
    e889c50e:	f466                	sd	s9,40(sp)
    e889c510:	f06a                	sd	s10,32(sp)
    e889c512:	ec6e                	sd	s11,24(sp)
  NETIF_FOREACH(netif) {
    e889c514:	6380                	ld	s0,0(a5)
  msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000);
    e889c516:	6a09                	lui	s4,0x2
      } else if (dhcp->t1_renew_time && (dhcp->t1_renew_time-- == 1)) {
    e889c518:	4985                	li	s3,1
  if ((dhcp->state == DHCP_STATE_REQUESTING) || (dhcp->state == DHCP_STATE_BOUND) ||
    e889c51a:	4aa9                	li	s5,10
  if ((dhcp->state == DHCP_STATE_REQUESTING) || (dhcp->state == DHCP_STATE_BOUND) ||
    e889c51c:	43200b13          	li	s6,1074
  msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000);
    e889c520:	710a0a13          	addi	s4,s4,1808 # 2710 <memcmp-0xe87fd8f0>
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889c524:	00037b97          	auipc	s7,0x37
    e889c528:	2e4b8b93          	addi	s7,s7,740 # e88d3808 <dhcp_discover_request_options>
    result = udp_sendto_if(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif);
    e889c52c:	0004ac17          	auipc	s8,0x4a
    e889c530:	1f4c0c13          	addi	s8,s8,500 # e88e6720 <dhcp_pcb>
  NETIF_FOREACH(netif) {
    e889c534:	e005                	bnez	s0,e889c554 <dhcp_coarse_tmr+0x64>
}
    e889c536:	70e6                	ld	ra,120(sp)
    e889c538:	7446                	ld	s0,112(sp)
    e889c53a:	74a6                	ld	s1,104(sp)
    e889c53c:	7906                	ld	s2,96(sp)
    e889c53e:	69e6                	ld	s3,88(sp)
    e889c540:	6a46                	ld	s4,80(sp)
    e889c542:	6aa6                	ld	s5,72(sp)
    e889c544:	6b06                	ld	s6,64(sp)
    e889c546:	7be2                	ld	s7,56(sp)
    e889c548:	7c42                	ld	s8,48(sp)
    e889c54a:	7ca2                	ld	s9,40(sp)
    e889c54c:	7d02                	ld	s10,32(sp)
    e889c54e:	6de2                	ld	s11,24(sp)
    e889c550:	6109                	addi	sp,sp,128
    e889c552:	8082                	ret
    struct dhcp *dhcp = netif_dhcp_data(netif);
    e889c554:	707c                	ld	a5,224(s0)
    if ((dhcp != NULL) && (dhcp->state != DHCP_STATE_OFF)) {
    e889c556:	c795                	beqz	a5,e889c582 <dhcp_coarse_tmr+0x92>
    e889c558:	0057c703          	lbu	a4,5(a5)
    e889c55c:	c31d                	beqz	a4,e889c582 <dhcp_coarse_tmr+0x92>
      if (dhcp->t0_timeout && (++dhcp->lease_used == dhcp->t0_timeout)) {
    e889c55e:	0147d683          	lhu	a3,20(a5)
    e889c562:	c295                	beqz	a3,e889c586 <dhcp_coarse_tmr+0x96>
    e889c564:	0127d703          	lhu	a4,18(a5)
    e889c568:	2705                	addiw	a4,a4,1
    e889c56a:	3c07370b          	extu	a4,a4,15,0
    e889c56e:	00e79923          	sh	a4,18(a5)
    e889c572:	00e69a63          	bne	a3,a4,e889c586 <dhcp_coarse_tmr+0x96>
        dhcp_release_and_stop(netif);
    e889c576:	8522                	mv	a0,s0
    e889c578:	d81ff0ef          	jal	ra,e889c2f8 <dhcp_release_and_stop>
        dhcp_start(netif);
    e889c57c:	8522                	mv	a0,s0
    e889c57e:	e8fff0ef          	jal	ra,e889c40c <dhcp_start>
  NETIF_FOREACH(netif) {
    e889c582:	6000                	ld	s0,0(s0)
    e889c584:	bf45                	j	e889c534 <dhcp_coarse_tmr+0x44>
      } else if (dhcp->t2_rebind_time && (dhcp->t2_rebind_time-- == 1)) {
    e889c586:	0107d703          	lhu	a4,16(a5)
    e889c58a:	10070763          	beqz	a4,e889c698 <dhcp_coarse_tmr+0x1a8>
    e889c58e:	fff7069b          	addiw	a3,a4,-1
    e889c592:	00d79823          	sh	a3,16(a5)
    e889c596:	11371163          	bne	a4,s3,e889c698 <dhcp_coarse_tmr+0x1a8>
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889c59a:	7064                	ld	s1,224(s0)
  if ((dhcp->state == DHCP_STATE_REQUESTING) || (dhcp->state == DHCP_STATE_BOUND) ||
    e889c59c:	0054c783          	lbu	a5,5(s1)
    e889c5a0:	fefae1e3          	bltu	s5,a5,e889c582 <dhcp_coarse_tmr+0x92>
    e889c5a4:	00fb57b3          	srl	a5,s6,a5
    e889c5a8:	0007b78b          	extu	a5,a5,0,0
    e889c5ac:	dbf9                	beqz	a5,e889c582 <dhcp_coarse_tmr+0x92>
  dhcp_set_state(dhcp, DHCP_STATE_REBINDING);
    e889c5ae:	4591                	li	a1,4
    e889c5b0:	8526                	mv	a0,s1
    e889c5b2:	823fe0ef          	jal	ra,e889add4 <dhcp_set_state>
  p_out = dhcp_create_msg(netif, dhcp, DHCP_REQUEST, &options_out_len);
    e889c5b6:	00e10693          	addi	a3,sp,14
    e889c5ba:	460d                	li	a2,3
    e889c5bc:	85a6                	mv	a1,s1
    e889c5be:	8522                	mv	a0,s0
    e889c5c0:	9f9fe0ef          	jal	ra,e889afb8 <dhcp_create_msg>
    e889c5c4:	8caa                	mv	s9,a0
  if (p_out != NULL) {
    e889c5c6:	cd3d                	beqz	a0,e889c644 <dhcp_coarse_tmr+0x154>
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
    e889c5c8:	00853903          	ld	s2,8(a0)
    e889c5cc:	00e15503          	lhu	a0,14(sp)
    e889c5d0:	4689                	li	a3,2
    e889c5d2:	0f090913          	addi	s2,s2,240
    e889c5d6:	03900613          	li	a2,57
    e889c5da:	85ca                	mv	a1,s2
    e889c5dc:	87dfe0ef          	jal	ra,e889ae58 <dhcp_option>
    e889c5e0:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif));
    e889c5e4:	10045603          	lhu	a2,256(s0)
    e889c5e8:	85ca                	mv	a1,s2
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options));
    e889c5ea:	4d01                	li	s10,0
    options_out_len = dhcp_option_short(options_out_len, msg_out->options, DHCP_MAX_MSG_LEN(netif));
    e889c5ec:	ffefe0ef          	jal	ra,e889adea <dhcp_option_short>
    e889c5f0:	00a11723          	sh	a0,14(sp)
    options_out_len = dhcp_option(options_out_len, msg_out->options, DHCP_OPTION_PARAMETER_REQUEST_LIST, LWIP_ARRAYSIZE(dhcp_discover_request_options));
    e889c5f4:	4691                	li	a3,4
    e889c5f6:	03700613          	li	a2,55
    e889c5fa:	85ca                	mv	a1,s2
    e889c5fc:	85dfe0ef          	jal	ra,e889ae58 <dhcp_option>
    e889c600:	00a11723          	sh	a0,14(sp)
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889c604:	4d91                	li	s11,4
      options_out_len = dhcp_option_byte(options_out_len, msg_out->options, dhcp_discover_request_options[i]);
    e889c606:	81abc60b          	lrbu	a2,s7,s10,0
    e889c60a:	00e15503          	lhu	a0,14(sp)
    e889c60e:	85ca                	mv	a1,s2
    e889c610:	0d05                	addi	s10,s10,1
    e889c612:	8bbfe0ef          	jal	ra,e889aecc <dhcp_option_byte>
    e889c616:	00a11723          	sh	a0,14(sp)
    for (i = 0; i < LWIP_ARRAYSIZE(dhcp_discover_request_options); i++) {
    e889c61a:	ffbd16e3          	bne	s10,s11,e889c606 <dhcp_coarse_tmr+0x116>
    dhcp_option_trailer(options_out_len, msg_out->options, p_out);
    e889c61e:	8666                	mv	a2,s9
    e889c620:	85ca                	mv	a1,s2
    e889c622:	b2ffe0ef          	jal	ra,e889b150 <dhcp_option_trailer>
    result = udp_sendto_if(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif);
    e889c626:	000c3503          	ld	a0,0(s8)
    e889c62a:	8722                	mv	a4,s0
    e889c62c:	04300693          	li	a3,67
    e889c630:	00034617          	auipc	a2,0x34
    e889c634:	9a860613          	addi	a2,a2,-1624 # e88cffd8 <ip_addr_broadcast>
    e889c638:	85e6                	mv	a1,s9
    e889c63a:	e77fa0ef          	jal	ra,e88974b0 <udp_sendto_if>
    pbuf_free(p_out);
    e889c63e:	8566                	mv	a0,s9
    e889c640:	c0df20ef          	jal	ra,e888f24c <pbuf_free>
  if (dhcp->tries < 255) {
    e889c644:	0064c783          	lbu	a5,6(s1)
    e889c648:	0ff00713          	li	a4,255
    e889c64c:	00e78563          	beq	a5,a4,e889c656 <dhcp_coarse_tmr+0x166>
    dhcp->tries++;
    e889c650:	2785                	addiw	a5,a5,1
    e889c652:	00f48323          	sb	a5,6(s1)
  msecs = (u16_t)(dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000);
    e889c656:	0064c703          	lbu	a4,6(s1)
    e889c65a:	46a5                	li	a3,9
    e889c65c:	87d2                	mv	a5,s4
    e889c65e:	00e6e863          	bltu	a3,a4,e889c66e <dhcp_coarse_tmr+0x17e>
    e889c662:	3e800793          	li	a5,1000
    e889c666:	02f707bb          	mulw	a5,a4,a5
    e889c66a:	3c07b78b          	extu	a5,a5,15,0
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889c66e:	1f400713          	li	a4,500
    e889c672:	1f37879b          	addiw	a5,a5,499
    e889c676:	02e7c7bb          	divw	a5,a5,a4
    if (((dhcp->t0_timeout - dhcp->lease_used) / 2) >= ((60 + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS)) {
    e889c67a:	0124d703          	lhu	a4,18(s1)
  dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS);
    e889c67e:	00f49423          	sh	a5,8(s1)
    if (((dhcp->t0_timeout - dhcp->lease_used) / 2) >= ((60 + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS)) {
    e889c682:	0144d783          	lhu	a5,20(s1)
    e889c686:	40e7873b          	subw	a4,a5,a4
    e889c68a:	eee9dce3          	bge	s3,a4,e889c582 <dhcp_coarse_tmr+0x92>
      dhcp->t2_rebind_time = (u16_t)((dhcp->t0_timeout - dhcp->lease_used) / 2);
    e889c68e:	4017579b          	sraiw	a5,a4,0x1
    e889c692:	00f49823          	sh	a5,16(s1)
    e889c696:	b5f5                	j	e889c582 <dhcp_coarse_tmr+0x92>
      } else if (dhcp->t1_renew_time && (dhcp->t1_renew_time-- == 1)) {
    e889c698:	00e7d703          	lhu	a4,14(a5)
    e889c69c:	ee0703e3          	beqz	a4,e889c582 <dhcp_coarse_tmr+0x92>
    e889c6a0:	fff7069b          	addiw	a3,a4,-1
    e889c6a4:	00d79723          	sh	a3,14(a5)
    e889c6a8:	ed371de3          	bne	a4,s3,e889c582 <dhcp_coarse_tmr+0x92>
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889c6ac:	7064                	ld	s1,224(s0)
  if ((dhcp->state == DHCP_STATE_REQUESTING) || (dhcp->state == DHCP_STATE_BOUND) ||
    e889c6ae:	0054c783          	lbu	a5,5(s1)
    e889c6b2:	0fb7f713          	andi	a4,a5,251
    e889c6b6:	01370463          	beq	a4,s3,e889c6be <dhcp_coarse_tmr+0x1ce>
    e889c6ba:	ed5794e3          	bne	a5,s5,e889c582 <dhcp_coarse_tmr+0x92>
    dhcp_renew(netif);
    e889c6be:	8522                	mv	a0,s0
    e889c6c0:	b01ff0ef          	jal	ra,e889c1c0 <dhcp_renew>
    if (((dhcp->t2_timeout - dhcp->lease_used) / 2) >= ((60 + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS)) {
    e889c6c4:	00c4d783          	lhu	a5,12(s1)
    e889c6c8:	0124d703          	lhu	a4,18(s1)
    e889c6cc:	40e7873b          	subw	a4,a5,a4
    e889c6d0:	eae9d9e3          	bge	s3,a4,e889c582 <dhcp_coarse_tmr+0x92>
      dhcp->t1_renew_time = (u16_t)((dhcp->t2_timeout - dhcp->lease_used) / 2);
    e889c6d4:	4017579b          	sraiw	a5,a4,0x1
    e889c6d8:	00f49723          	sh	a5,14(s1)
    e889c6dc:	b55d                	j	e889c582 <dhcp_coarse_tmr+0x92>

00000000e889c6de <dhcp_fine_tmr>:
{
    e889c6de:	7139                	addi	sp,sp,-64
    e889c6e0:	fb31590b          	sdd	s2,s3,(sp),1,4
    e889c6e4:	fd515a0b          	sdd	s4,s5,(sp),2,4
    e889c6e8:	f891540b          	sdd	s0,s1,(sp),0,4
  NETIF_FOREACH(netif) {
    e889c6ec:	0004a797          	auipc	a5,0x4a
    e889c6f0:	d4c78793          	addi	a5,a5,-692 # e88e6438 <netif_list>
{
    e889c6f4:	f85a                	sd	s6,48(sp)
    e889c6f6:	fc06                	sd	ra,56(sp)
  NETIF_FOREACH(netif) {
    e889c6f8:	6380                	ld	s0,0(a5)
      if (dhcp->request_timeout > 1) {
    e889c6fa:	4485                	li	s1,1
  if ((dhcp->state == DHCP_STATE_BACKING_OFF) || (dhcp->state == DHCP_STATE_SELECTING)) {
    e889c6fc:	4931                	li	s2,12
    e889c6fe:	4999                	li	s3,6
  } else if (dhcp->state == DHCP_STATE_CHECKING) {
    e889c700:	4a21                	li	s4,8
  } else if (dhcp->state == DHCP_STATE_REBOOTING) {
    e889c702:	4a8d                	li	s5,3
    if (dhcp->tries <= 5) {
    e889c704:	4b15                	li	s6,5
  NETIF_FOREACH(netif) {
    e889c706:	e819                	bnez	s0,e889c71c <dhcp_fine_tmr+0x3e>
}
    e889c708:	70e2                	ld	ra,56(sp)
    e889c70a:	f891440b          	ldd	s0,s1,(sp),0,4
    e889c70e:	7b42                	ld	s6,48(sp)
    e889c710:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889c714:	fd514a0b          	ldd	s4,s5,(sp),2,4
    e889c718:	6121                	addi	sp,sp,64
    e889c71a:	8082                	ret
    struct dhcp *dhcp = netif_dhcp_data(netif);
    e889c71c:	707c                	ld	a5,224(s0)
    if (dhcp != NULL) {
    e889c71e:	cb91                	beqz	a5,e889c732 <dhcp_fine_tmr+0x54>
      if (dhcp->request_timeout > 1) {
    e889c720:	0087d703          	lhu	a4,8(a5)
    e889c724:	0007069b          	sext.w	a3,a4
    e889c728:	00d4f763          	bgeu	s1,a3,e889c736 <dhcp_fine_tmr+0x58>
        dhcp->request_timeout--;
    e889c72c:	377d                	addiw	a4,a4,-1
    e889c72e:	00e79423          	sh	a4,8(a5)
  NETIF_FOREACH(netif) {
    e889c732:	6000                	ld	s0,0(s0)
    e889c734:	bfc9                	j	e889c706 <dhcp_fine_tmr+0x28>
      } else if (dhcp->request_timeout == 1) {
    e889c736:	fe969ee3          	bne	a3,s1,e889c732 <dhcp_fine_tmr+0x54>
        dhcp->request_timeout--;
    e889c73a:	00079423          	sh	zero,8(a5)
  struct dhcp *dhcp = netif_dhcp_data(netif);
    e889c73e:	7078                	ld	a4,224(s0)
  if ((dhcp->state == DHCP_STATE_BACKING_OFF) || (dhcp->state == DHCP_STATE_SELECTING)) {
    e889c740:	00574783          	lbu	a5,5(a4) # 10005 <memcmp-0xe87efffb>
    e889c744:	01278463          	beq	a5,s2,e889c74c <dhcp_fine_tmr+0x6e>
    e889c748:	01379663          	bne	a5,s3,e889c754 <dhcp_fine_tmr+0x76>
    dhcp_discover(netif);
    e889c74c:	8522                	mv	a0,s0
      dhcp_discover(netif);
    e889c74e:	d45fe0ef          	jal	ra,e889b492 <dhcp_discover>
    e889c752:	b7c5                	j	e889c732 <dhcp_fine_tmr+0x54>
  } else if (dhcp->state == DHCP_STATE_REQUESTING) {
    e889c754:	02979063          	bne	a5,s1,e889c774 <dhcp_fine_tmr+0x96>
    if (dhcp->tries <= 5) {
    e889c758:	00674783          	lbu	a5,6(a4)
      dhcp_select(netif);
    e889c75c:	8522                	mv	a0,s0
    if (dhcp->tries <= 5) {
    e889c75e:	00fb6563          	bltu	s6,a5,e889c768 <dhcp_fine_tmr+0x8a>
      dhcp_select(netif);
    e889c762:	b5bfe0ef          	jal	ra,e889b2bc <dhcp_select>
    e889c766:	b7f1                	j	e889c732 <dhcp_fine_tmr+0x54>
      dhcp_release_and_stop(netif);
    e889c768:	b91ff0ef          	jal	ra,e889c2f8 <dhcp_release_and_stop>
      dhcp_start(netif);
    e889c76c:	8522                	mv	a0,s0
    e889c76e:	c9fff0ef          	jal	ra,e889c40c <dhcp_start>
    e889c772:	b7c1                	j	e889c732 <dhcp_fine_tmr+0x54>
  } else if (dhcp->state == DHCP_STATE_CHECKING) {
    e889c774:	01479d63          	bne	a5,s4,e889c78e <dhcp_fine_tmr+0xb0>
    if (dhcp->tries <= 1) {
    e889c778:	00674783          	lbu	a5,6(a4)
      dhcp_check(netif);
    e889c77c:	8522                	mv	a0,s0
    if (dhcp->tries <= 1) {
    e889c77e:	00f4e563          	bltu	s1,a5,e889c788 <dhcp_fine_tmr+0xaa>
      dhcp_check(netif);
    e889c782:	e31fe0ef          	jal	ra,e889b5b2 <dhcp_check>
    e889c786:	b775                	j	e889c732 <dhcp_fine_tmr+0x54>
      dhcp_bind(netif);
    e889c788:	e6dfe0ef          	jal	ra,e889b5f4 <dhcp_bind>
    e889c78c:	b75d                	j	e889c732 <dhcp_fine_tmr+0x54>
  } else if (dhcp->state == DHCP_STATE_REBOOTING) {
    e889c78e:	fb5792e3          	bne	a5,s5,e889c732 <dhcp_fine_tmr+0x54>
    if (dhcp->tries < REBOOT_TRIES) {
    e889c792:	00674783          	lbu	a5,6(a4)
      dhcp_reboot(netif);
    e889c796:	8522                	mv	a0,s0
    if (dhcp->tries < REBOOT_TRIES) {
    e889c798:	faf4ebe3          	bltu	s1,a5,e889c74e <dhcp_fine_tmr+0x70>
      dhcp_reboot(netif);
    e889c79c:	9e7fe0ef          	jal	ra,e889b182 <dhcp_reboot>
    e889c7a0:	bf49                	j	e889c732 <dhcp_fine_tmr+0x54>

00000000e889c7a2 <icmp_send_response.isra.0>:
 *          p->payload pointing to the IP header
 * @param type Type of the ICMP header
 * @param code Code of the ICMP header
 */
static void
icmp_send_response(struct pbuf *p, u8_t type, u8_t code)
    e889c7a2:	711d                	addi	sp,sp,-96
    e889c7a4:	e4a6                	sd	s1,72(sp)
  struct icmp_echo_hdr *icmphdr;
  ip4_addr_t iphdr_src;
  struct netif *netif;

  /* increase number of messages attempted to send */
  MIB2_STATS_INC(mib2.icmpoutmsgs);
    e889c7a6:	0004a497          	auipc	s1,0x4a
    e889c7aa:	caa48493          	addi	s1,s1,-854 # e88e6450 <lwip_stats>
icmp_send_response(struct pbuf *p, u8_t type, u8_t code)
    e889c7ae:	fc4e                	sd	s3,56(sp)
    e889c7b0:	f456                	sd	s5,40(sp)
    e889c7b2:	f05a                	sd	s6,32(sp)
    e889c7b4:	ec86                	sd	ra,88(sp)
    e889c7b6:	e8a2                	sd	s0,80(sp)
    e889c7b8:	e0ca                	sd	s2,64(sp)
    e889c7ba:	f852                	sd	s4,48(sp)
  MIB2_STATS_INC(mib2.icmpoutmsgs);
    e889c7bc:	1fc4a783          	lw	a5,508(s1)
icmp_send_response(struct pbuf *p, u8_t type, u8_t code)
    e889c7c0:	89aa                	mv	s3,a0
    e889c7c2:	8b2e                	mv	s6,a1
  MIB2_STATS_INC(mib2.icmpoutmsgs);
    e889c7c4:	2785                	addiw	a5,a5,1
icmp_send_response(struct pbuf *p, u8_t type, u8_t code)
    e889c7c6:	8ab2                	mv	s5,a2

  /* ICMP header + IP header + 8 bytes of data */
  q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE,
    e889c7c8:	02400593          	li	a1,36
    e889c7cc:	28000613          	li	a2,640
    e889c7d0:	03600513          	li	a0,54
  MIB2_STATS_INC(mib2.icmpoutmsgs);
    e889c7d4:	1ef4ae23          	sw	a5,508(s1)
  q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE,
    e889c7d8:	bb9f20ef          	jal	ra,e888f390 <pbuf_alloc>
                 PBUF_RAM);
  if (q == NULL) {
    e889c7dc:	e105                	bnez	a0,e889c7fc <icmp_send_response.isra.0+0x5a>
    LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMP packet.\n"));
    MIB2_STATS_INC(mib2.icmpouterrors);
    e889c7de:	2004a783          	lw	a5,512(s1)
    e889c7e2:	2785                	addiw	a5,a5,1
    e889c7e4:	20f4a023          	sw	a5,512(s1)
#endif
    ICMP_STATS_INC(icmp.xmit);
    ip4_output_if(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP, netif);
  }
  pbuf_free(q);
}
    e889c7e8:	60e6                	ld	ra,88(sp)
    e889c7ea:	6446                	ld	s0,80(sp)
    e889c7ec:	64a6                	ld	s1,72(sp)
    e889c7ee:	6906                	ld	s2,64(sp)
    e889c7f0:	79e2                	ld	s3,56(sp)
    e889c7f2:	7a42                	ld	s4,48(sp)
    e889c7f4:	7aa2                	ld	s5,40(sp)
    e889c7f6:	7b02                	ld	s6,32(sp)
    e889c7f8:	6125                	addi	sp,sp,96
    e889c7fa:	8082                	ret
  LWIP_ASSERT("check that first pbuf can hold icmp message",
    e889c7fc:	01255703          	lhu	a4,18(a0)
    e889c800:	02300793          	li	a5,35
    e889c804:	842a                	mv	s0,a0
    e889c806:	8926                	mv	s2,s1
    e889c808:	02e7e863          	bltu	a5,a4,e889c838 <icmp_send_response.isra.0+0x96>
    e889c80c:	02f00593          	li	a1,47
    e889c810:	00037517          	auipc	a0,0x37
    e889c814:	39850513          	addi	a0,a0,920 # e88d3ba8 <dhcp_discover_request_options+0x3a0>
    e889c818:	b61df0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889c81c:	00150693          	addi	a3,a0,1
    e889c820:	16900613          	li	a2,361
    e889c824:	00037597          	auipc	a1,0x37
    e889c828:	41458593          	addi	a1,a1,1044 # e88d3c38 <dhcp_discover_request_options+0x430>
    e889c82c:	00033517          	auipc	a0,0x33
    e889c830:	88450513          	addi	a0,a0,-1916 # e88cf0b0 <kSinTable1024+0x900>
    e889c834:	a93df0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  icmphdr = (struct icmp_echo_hdr *)q->payload;
    e889c838:	6404                	ld	s1,8(s0)
  iphdr = (struct ip_hdr *)p->payload;
    e889c83a:	0009ba03          	ld	s4,0(s3)
  SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload,
    e889c83e:	4671                	li	a2,28
  icmphdr->type = type;
    e889c840:	01648023          	sb	s6,0(s1)
  icmphdr->code = code;
    e889c844:	015480a3          	sb	s5,1(s1)
  icmphdr->id = 0;
    e889c848:	0004a223          	sw	zero,4(s1)
  SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload,
    e889c84c:	6408                	ld	a0,8(s0)
    e889c84e:	0009b583          	ld	a1,0(s3)
    e889c852:	0521                	addi	a0,a0,8
    e889c854:	b4ddf0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  ip4_addr_copy(iphdr_src, iphdr->src);
    e889c858:	00ca2783          	lw	a5,12(s4)
  netif = ip4_route(&iphdr_src);
    e889c85c:	0828                	addi	a0,sp,24
  ip4_addr_copy(iphdr_src, iphdr->src);
    e889c85e:	cc3e                	sw	a5,24(sp)
  netif = ip4_route(&iphdr_src);
    e889c860:	dd8ec0ef          	jal	ra,e8888e38 <ip4_route>
  if (netif != NULL) {
    e889c864:	e42a                	sd	a0,8(sp)
    e889c866:	c90d                	beqz	a0,e889c898 <icmp_send_response.isra.0+0xf6>
    icmphdr->chksum = 0;
    e889c868:	00049123          	sh	zero,2(s1)
      icmphdr->chksum = inet_chksum(icmphdr, q->len);
    e889c86c:	01245583          	lhu	a1,18(s0)
    e889c870:	8526                	mv	a0,s1
    e889c872:	8b4eb0ef          	jal	ra,e8887926 <inet_chksum>
    e889c876:	00a49123          	sh	a0,2(s1)
    ICMP_STATS_INC(icmp.xmit);
    e889c87a:	06095783          	lhu	a5,96(s2)
    ip4_output_if(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP, netif);
    e889c87e:	6822                	ld	a6,8(sp)
    e889c880:	4701                	li	a4,0
    ICMP_STATS_INC(icmp.xmit);
    e889c882:	2785                	addiw	a5,a5,1
    e889c884:	06f91023          	sh	a5,96(s2)
    ip4_output_if(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP, netif);
    e889c888:	0ff00693          	li	a3,255
    e889c88c:	4785                	li	a5,1
    e889c88e:	0830                	addi	a2,sp,24
    e889c890:	4581                	li	a1,0
    e889c892:	8522                	mv	a0,s0
    e889c894:	d05ec0ef          	jal	ra,e8889598 <ip4_output_if>
  pbuf_free(q);
    e889c898:	8522                	mv	a0,s0
    e889c89a:	9b3f20ef          	jal	ra,e888f24c <pbuf_free>
    e889c89e:	b7a9                	j	e889c7e8 <icmp_send_response.isra.0+0x46>

00000000e889c8a0 <icmp_input>:
{
    e889c8a0:	715d                	addi	sp,sp,-80
    e889c8a2:	f84a                	sd	s2,48(sp)
  ICMP_STATS_INC(icmp.recv);
    e889c8a4:	0004a917          	auipc	s2,0x4a
    e889c8a8:	bac90913          	addi	s2,s2,-1108 # e88e6450 <lwip_stats>
{
    e889c8ac:	e0a2                	sd	s0,64(sp)
    e889c8ae:	fc26                	sd	s1,56(sp)
    e889c8b0:	e486                	sd	ra,72(sp)
    e889c8b2:	f44e                	sd	s3,40(sp)
    e889c8b4:	f052                	sd	s4,32(sp)
    e889c8b6:	ec56                	sd	s5,24(sp)
    e889c8b8:	e85a                	sd	s6,16(sp)
    e889c8ba:	e45e                	sd	s7,8(sp)
  ICMP_STATS_INC(icmp.recv);
    e889c8bc:	06295783          	lhu	a5,98(s2)
  iphdr_in = ip4_current_header();
    e889c8c0:	00049717          	auipc	a4,0x49
    e889c8c4:	28870713          	addi	a4,a4,648 # e88e5b48 <ip_data>
    e889c8c8:	01073b83          	ld	s7,16(a4)
  ICMP_STATS_INC(icmp.recv);
    e889c8cc:	2785                	addiw	a5,a5,1
    e889c8ce:	06f91123          	sh	a5,98(s2)
  MIB2_STATS_INC(mib2.icmpinmsgs);
    e889c8d2:	1c892783          	lw	a5,456(s2)
{
    e889c8d6:	84aa                	mv	s1,a0
    e889c8d8:	844a                	mv	s0,s2
  MIB2_STATS_INC(mib2.icmpinmsgs);
    e889c8da:	2785                	addiw	a5,a5,1
    e889c8dc:	1cf92423          	sw	a5,456(s2)
  hlen = IPH_HL_BYTES(iphdr_in);
    e889c8e0:	000bc983          	lbu	s3,0(s7)
  if (hlen < IP_HLEN) {
    e889c8e4:	47cd                	li	a5,19
  hlen = IPH_HL_BYTES(iphdr_in);
    e889c8e6:	00f9f993          	andi	s3,s3,15
    e889c8ea:	098a                	slli	s3,s3,0x2
  if (hlen < IP_HLEN) {
    e889c8ec:	2d37f763          	bgeu	a5,s3,e889cbba <icmp_input+0x31a>
  if (p->len < sizeof(u16_t) * 2) {
    e889c8f0:	01255783          	lhu	a5,18(a0)
    e889c8f4:	468d                	li	a3,3
    e889c8f6:	2cf6f263          	bgeu	a3,a5,e889cbba <icmp_input+0x31a>
  type = *((u8_t *)p->payload);
    e889c8fa:	651c                	ld	a5,8(a0)
    e889c8fc:	0007c783          	lbu	a5,0(a5)
  switch (type) {
    e889c900:	c795                	beqz	a5,e889c92c <icmp_input+0x8c>
    e889c902:	4621                	li	a2,8
    e889c904:	04c78663          	beq	a5,a2,e889c950 <icmp_input+0xb0>
      if (type == ICMP_DUR) {
    e889c908:	22d79163          	bne	a5,a3,e889cb2a <icmp_input+0x28a>
        MIB2_STATS_INC(mib2.icmpindestunreachs);
    e889c90c:	1d092783          	lw	a5,464(s2)
    e889c910:	2785                	addiw	a5,a5,1
    e889c912:	1cf92823          	sw	a5,464(s2)
      ICMP_STATS_INC(icmp.proterr);
    e889c916:	07045783          	lhu	a5,112(s0)
    e889c91a:	2785                	addiw	a5,a5,1
    e889c91c:	06f41823          	sh	a5,112(s0)
      ICMP_STATS_INC(icmp.drop);
    e889c920:	06645783          	lhu	a5,102(s0)
    e889c924:	2785                	addiw	a5,a5,1
    e889c926:	06f41323          	sh	a5,102(s0)
    e889c92a:	a031                	j	e889c936 <icmp_input+0x96>
      MIB2_STATS_INC(mib2.icmpinechoreps);
    e889c92c:	1e892783          	lw	a5,488(s2)
    e889c930:	2785                	addiw	a5,a5,1
    e889c932:	1ef92423          	sw	a5,488(s2)
}
    e889c936:	6406                	ld	s0,64(sp)
    e889c938:	60a6                	ld	ra,72(sp)
    e889c93a:	7942                	ld	s2,48(sp)
    e889c93c:	79a2                	ld	s3,40(sp)
    e889c93e:	7a02                	ld	s4,32(sp)
    e889c940:	6ae2                	ld	s5,24(sp)
    e889c942:	6b42                	ld	s6,16(sp)
    e889c944:	6ba2                	ld	s7,8(sp)
  pbuf_free(p);
    e889c946:	8526                	mv	a0,s1
}
    e889c948:	74e2                	ld	s1,56(sp)
    e889c94a:	6161                	addi	sp,sp,80
  pbuf_free(p);
    e889c94c:	901f206f          	j	e888f24c <pbuf_free>
      MIB2_STATS_INC(mib2.icmpinechos);
    e889c950:	1e492783          	lw	a5,484(s2)
      if (ip4_addr_ismulticast(ip4_current_dest_addr())) {
    e889c954:	5f48                	lw	a0,60(a4)
      MIB2_STATS_INC(mib2.icmpinechos);
    e889c956:	2785                	addiw	a5,a5,1
    e889c958:	1ef92223          	sw	a5,484(s2)
      if (ip4_addr_ismulticast(ip4_current_dest_addr())) {
    e889c95c:	0f057693          	andi	a3,a0,240
    e889c960:	0e000793          	li	a5,224
    e889c964:	08f68a63          	beq	a3,a5,e889c9f8 <icmp_input+0x158>
    e889c968:	8a2e                	mv	s4,a1
      if (ip4_addr_isbroadcast(ip4_current_dest_addr(), ip_current_netif())) {
    e889c96a:	630c                	ld	a1,0(a4)
    e889c96c:	8b3a                	mv	s6,a4
    e889c96e:	c4fec0ef          	jal	ra,e88895bc <ip4_addr_isbroadcast_u32>
    e889c972:	e159                	bnez	a0,e889c9f8 <icmp_input+0x158>
      if (p->tot_len < sizeof(struct icmp_echo_hdr)) {
    e889c974:	0104d703          	lhu	a4,16(s1)
    e889c978:	479d                	li	a5,7
    e889c97a:	24e7f063          	bgeu	a5,a4,e889cbba <icmp_input+0x31a>
        if (inet_chksum_pbuf(p) != 0) {
    e889c97e:	8526                	mv	a0,s1
    e889c980:	fbdea0ef          	jal	ra,e888793c <inet_chksum_pbuf>
    e889c984:	c90d                	beqz	a0,e889c9b6 <icmp_input+0x116>
          pbuf_free(p);
    e889c986:	8526                	mv	a0,s1
    e889c988:	8c5f20ef          	jal	ra,e888f24c <pbuf_free>
          ICMP_STATS_INC(icmp.chkerr);
    e889c98c:	06895783          	lhu	a5,104(s2)
    e889c990:	2785                	addiw	a5,a5,1
    e889c992:	06f91423          	sh	a5,104(s2)
          MIB2_STATS_INC(mib2.icmpinerrors);
    e889c996:	1cc92783          	lw	a5,460(s2)
    e889c99a:	2785                	addiw	a5,a5,1
    e889c99c:	1cf92623          	sw	a5,460(s2)
}
    e889c9a0:	60a6                	ld	ra,72(sp)
    e889c9a2:	6406                	ld	s0,64(sp)
    e889c9a4:	74e2                	ld	s1,56(sp)
    e889c9a6:	7942                	ld	s2,48(sp)
    e889c9a8:	79a2                	ld	s3,40(sp)
    e889c9aa:	7a02                	ld	s4,32(sp)
    e889c9ac:	6ae2                	ld	s5,24(sp)
    e889c9ae:	6b42                	ld	s6,16(sp)
    e889c9b0:	6ba2                	ld	s7,8(sp)
    e889c9b2:	6161                	addi	sp,sp,80
    e889c9b4:	8082                	ret
      if (pbuf_add_header(p, hlen + PBUF_LINK_HLEN + PBUF_LINK_ENCAPSULATION_HLEN)) {
    e889c9b6:	00e98913          	addi	s2,s3,14
    e889c9ba:	85ca                	mv	a1,s2
    e889c9bc:	8526                	mv	a0,s1
  hlen = IPH_HL_BYTES(iphdr_in);
    e889c9be:	3c09ba8b          	extu	s5,s3,15,0
      if (pbuf_add_header(p, hlen + PBUF_LINK_HLEN + PBUF_LINK_ENCAPSULATION_HLEN)) {
    e889c9c2:	fdaf20ef          	jal	ra,e888f19c <pbuf_add_header>
    e889c9c6:	12050463          	beqz	a0,e889caee <icmp_input+0x24e>
        u16_t alloc_len = (u16_t)(p->tot_len + hlen);
    e889c9ca:	0104d783          	lhu	a5,16(s1)
    e889c9ce:	015785bb          	addw	a1,a5,s5
    e889c9d2:	3c05b58b          	extu	a1,a1,15,0
        if (alloc_len < p->tot_len) {
    e889c9d6:	02f5e163          	bltu	a1,a5,e889c9f8 <icmp_input+0x158>
        r = pbuf_alloc(PBUF_LINK, alloc_len, PBUF_RAM);
    e889c9da:	28000613          	li	a2,640
    e889c9de:	4539                	li	a0,14
    e889c9e0:	9b1f20ef          	jal	ra,e888f390 <pbuf_alloc>
    e889c9e4:	892a                	mv	s2,a0
        if (r == NULL) {
    e889c9e6:	c909                	beqz	a0,e889c9f8 <icmp_input+0x158>
        if (r->len < hlen + sizeof(struct icmp_echo_hdr)) {
    e889c9e8:	01255703          	lhu	a4,18(a0)
    e889c9ec:	00898793          	addi	a5,s3,8
    e889c9f0:	00f77d63          	bgeu	a4,a5,e889ca0a <icmp_input+0x16a>
          pbuf_free(r);
    e889c9f4:	859f20ef          	jal	ra,e888f24c <pbuf_free>
  pbuf_free(p);
    e889c9f8:	8526                	mv	a0,s1
    e889c9fa:	853f20ef          	jal	ra,e888f24c <pbuf_free>
  ICMP_STATS_INC(icmp.err);
    e889c9fe:	07445783          	lhu	a5,116(s0)
    e889ca02:	2785                	addiw	a5,a5,1
    e889ca04:	06f41a23          	sh	a5,116(s0)
    e889ca08:	a2c9                	j	e889cbca <icmp_input+0x32a>
        MEMCPY(r->payload, iphdr_in, hlen);
    e889ca0a:	6508                	ld	a0,8(a0)
    e889ca0c:	85de                	mv	a1,s7
    e889ca0e:	864e                	mv	a2,s3
    e889ca10:	991df0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
        if (pbuf_remove_header(r, hlen)) {
    e889ca14:	85ce                	mv	a1,s3
    e889ca16:	854a                	mv	a0,s2
    e889ca18:	f90f20ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    e889ca1c:	c90d                	beqz	a0,e889ca4e <icmp_input+0x1ae>
          LWIP_ASSERT("icmp_input: moving r->payload to icmp header failed\n", 0);
    e889ca1e:	02f00593          	li	a1,47
    e889ca22:	00037517          	auipc	a0,0x37
    e889ca26:	18650513          	addi	a0,a0,390 # e88d3ba8 <dhcp_discover_request_options+0x3a0>
    e889ca2a:	94fdf0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889ca2e:	00150693          	addi	a3,a0,1
    e889ca32:	0b600613          	li	a2,182
    e889ca36:	00037597          	auipc	a1,0x37
    e889ca3a:	10258593          	addi	a1,a1,258 # e88d3b38 <dhcp_discover_request_options+0x330>
    e889ca3e:	00032517          	auipc	a0,0x32
    e889ca42:	67250513          	addi	a0,a0,1650 # e88cf0b0 <kSinTable1024+0x900>
    e889ca46:	881df0ef          	jal	ra,e887c2c6 <eLIBs_printf>
          pbuf_free(r);
    e889ca4a:	854a                	mv	a0,s2
    e889ca4c:	b765                	j	e889c9f4 <icmp_input+0x154>
        if (pbuf_copy(r, p) != ERR_OK) {
    e889ca4e:	85a6                	mv	a1,s1
    e889ca50:	854a                	mv	a0,s2
    e889ca52:	d49f20ef          	jal	ra,e888f79a <pbuf_copy>
    e889ca56:	f975                	bnez	a0,e889ca4a <icmp_input+0x1aa>
        pbuf_free(p);
    e889ca58:	8526                	mv	a0,s1
    e889ca5a:	ff2f20ef          	jal	ra,e888f24c <pbuf_free>
        p = r;
    e889ca5e:	84ca                	mv	s1,s2
      if (pbuf_add_header(p, hlen)) {
    e889ca60:	85ce                	mv	a1,s3
    e889ca62:	8526                	mv	a0,s1
      iecho = (struct icmp_echo_hdr *)p->payload;
    e889ca64:	0084bb83          	ld	s7,8(s1)
      if (pbuf_add_header(p, hlen)) {
    e889ca68:	f34f20ef          	jal	ra,e888f19c <pbuf_add_header>
    e889ca6c:	ec0515e3          	bnez	a0,e889c936 <icmp_input+0x96>
        ip4_addr_copy(iphdr->src, *src);
    e889ca70:	03cb2783          	lw	a5,60(s6)
        struct ip_hdr *iphdr = (struct ip_hdr *)p->payload;
    e889ca74:	0084b903          	ld	s2,8(s1)
          if (iecho->chksum > PP_HTONS(0xffffU - (ICMP_ECHO << 8))) {
    e889ca78:	6741                	lui	a4,0x10
    e889ca7a:	175d                	addi	a4,a4,-9
        ip4_addr_copy(iphdr->src, *src);
    e889ca7c:	00f92623          	sw	a5,12(s2)
        ip4_addr_copy(iphdr->dest, *ip4_current_src_addr());
    e889ca80:	024b2783          	lw	a5,36(s6)
    e889ca84:	00f92823          	sw	a5,16(s2)
          if (iecho->chksum > PP_HTONS(0xffffU - (ICMP_ECHO << 8))) {
    e889ca88:	002bd783          	lhu	a5,2(s7)
        ICMPH_TYPE_SET(iecho, ICMP_ER);
    e889ca8c:	000b8023          	sb	zero,0(s7)
          if (iecho->chksum > PP_HTONS(0xffffU - (ICMP_ECHO << 8))) {
    e889ca90:	08f77b63          	bgeu	a4,a5,e889cb26 <icmp_input+0x286>
            iecho->chksum = (u16_t)(iecho->chksum + PP_HTONS((u16_t)(ICMP_ECHO << 8)) + 1);
    e889ca94:	27a5                	addiw	a5,a5,9
            iecho->chksum = (u16_t)(iecho->chksum + PP_HTONS(ICMP_ECHO << 8));
    e889ca96:	3c07b78b          	extu	a5,a5,15,0
    e889ca9a:	00fb9123          	sh	a5,2(s7)
        IPH_TTL_SET(iphdr, ICMP_TTL);
    e889ca9e:	57fd                	li	a5,-1
    e889caa0:	00f90423          	sb	a5,8(s2)
          IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, hlen));
    e889caa4:	85d6                	mv	a1,s5
        IPH_CHKSUM_SET(iphdr, 0);
    e889caa6:	00091523          	sh	zero,10(s2)
          IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, hlen));
    e889caaa:	854a                	mv	a0,s2
    e889caac:	e7bea0ef          	jal	ra,e8887926 <inet_chksum>
    e889cab0:	00a91523          	sh	a0,10(s2)
        ICMP_STATS_INC(icmp.xmit);
    e889cab4:	06045783          	lhu	a5,96(s0)
        ret = ip4_output_if(p, src, LWIP_IP_HDRINCL,
    e889cab8:	8852                	mv	a6,s4
    e889caba:	4701                	li	a4,0
        ICMP_STATS_INC(icmp.xmit);
    e889cabc:	2785                	addiw	a5,a5,1
    e889cabe:	06f41023          	sh	a5,96(s0)
        MIB2_STATS_INC(mib2.icmpoutmsgs);
    e889cac2:	1fc42783          	lw	a5,508(s0)
        ret = ip4_output_if(p, src, LWIP_IP_HDRINCL,
    e889cac6:	0ff00693          	li	a3,255
    e889caca:	4601                	li	a2,0
        MIB2_STATS_INC(mib2.icmpoutmsgs);
    e889cacc:	2785                	addiw	a5,a5,1
    e889cace:	1ef42e23          	sw	a5,508(s0)
        MIB2_STATS_INC(mib2.icmpoutechoreps);
    e889cad2:	21042783          	lw	a5,528(s0)
        ret = ip4_output_if(p, src, LWIP_IP_HDRINCL,
    e889cad6:	00049597          	auipc	a1,0x49
    e889cada:	0ae58593          	addi	a1,a1,174 # e88e5b84 <ip_data+0x3c>
    e889cade:	8526                	mv	a0,s1
        MIB2_STATS_INC(mib2.icmpoutechoreps);
    e889cae0:	2785                	addiw	a5,a5,1
    e889cae2:	20f42823          	sw	a5,528(s0)
        ret = ip4_output_if(p, src, LWIP_IP_HDRINCL,
    e889cae6:	4785                	li	a5,1
    e889cae8:	ab1ec0ef          	jal	ra,e8889598 <ip4_output_if>
        if (ret != ERR_OK) {
    e889caec:	b5a9                	j	e889c936 <icmp_input+0x96>
        if (pbuf_remove_header(p, hlen + PBUF_LINK_HLEN + PBUF_LINK_ENCAPSULATION_HLEN)) {
    e889caee:	85ca                	mv	a1,s2
    e889caf0:	8526                	mv	a0,s1
    e889caf2:	eb6f20ef          	jal	ra,e888f1a8 <pbuf_remove_header>
    e889caf6:	d52d                	beqz	a0,e889ca60 <icmp_input+0x1c0>
          LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0);
    e889caf8:	02f00593          	li	a1,47
    e889cafc:	00037517          	auipc	a0,0x37
    e889cb00:	0ac50513          	addi	a0,a0,172 # e88d3ba8 <dhcp_discover_request_options+0x3a0>
    e889cb04:	875df0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889cb08:	00150693          	addi	a3,a0,1
    e889cb0c:	0c700613          	li	a2,199
    e889cb10:	00037597          	auipc	a1,0x37
    e889cb14:	06058593          	addi	a1,a1,96 # e88d3b70 <dhcp_discover_request_options+0x368>
    e889cb18:	00032517          	auipc	a0,0x32
    e889cb1c:	59850513          	addi	a0,a0,1432 # e88cf0b0 <kSinTable1024+0x900>
    e889cb20:	fa6df0ef          	jal	ra,e887c2c6 <eLIBs_printf>
          goto icmperr;
    e889cb24:	bdd1                	j	e889c9f8 <icmp_input+0x158>
            iecho->chksum = (u16_t)(iecho->chksum + PP_HTONS(ICMP_ECHO << 8));
    e889cb26:	27a1                	addiw	a5,a5,8
    e889cb28:	b7bd                	j	e889ca96 <icmp_input+0x1f6>
      } else if (type == ICMP_TE) {
    e889cb2a:	472d                	li	a4,11
    e889cb2c:	00e79863          	bne	a5,a4,e889cb3c <icmp_input+0x29c>
        MIB2_STATS_INC(mib2.icmpintimeexcds);
    e889cb30:	1d492783          	lw	a5,468(s2)
    e889cb34:	2785                	addiw	a5,a5,1
    e889cb36:	1cf92a23          	sw	a5,468(s2)
    e889cb3a:	bbf1                	j	e889c916 <icmp_input+0x76>
      } else if (type == ICMP_PP) {
    e889cb3c:	4731                	li	a4,12
    e889cb3e:	00e79863          	bne	a5,a4,e889cb4e <icmp_input+0x2ae>
        MIB2_STATS_INC(mib2.icmpinparmprobs);
    e889cb42:	1d892783          	lw	a5,472(s2)
    e889cb46:	2785                	addiw	a5,a5,1
    e889cb48:	1cf92c23          	sw	a5,472(s2)
    e889cb4c:	b3e9                	j	e889c916 <icmp_input+0x76>
      } else if (type == ICMP_SQ) {
    e889cb4e:	4711                	li	a4,4
    e889cb50:	00e79863          	bne	a5,a4,e889cb60 <icmp_input+0x2c0>
        MIB2_STATS_INC(mib2.icmpinsrcquenchs);
    e889cb54:	1dc92783          	lw	a5,476(s2)
    e889cb58:	2785                	addiw	a5,a5,1
    e889cb5a:	1cf92e23          	sw	a5,476(s2)
    e889cb5e:	bb65                	j	e889c916 <icmp_input+0x76>
      } else if (type == ICMP_RD) {
    e889cb60:	4715                	li	a4,5
    e889cb62:	00e79863          	bne	a5,a4,e889cb72 <icmp_input+0x2d2>
        MIB2_STATS_INC(mib2.icmpinredirects);
    e889cb66:	1e092783          	lw	a5,480(s2)
    e889cb6a:	2785                	addiw	a5,a5,1
    e889cb6c:	1ef92023          	sw	a5,480(s2)
    e889cb70:	b35d                	j	e889c916 <icmp_input+0x76>
      } else if (type == ICMP_TS) {
    e889cb72:	4735                	li	a4,13
    e889cb74:	00e79863          	bne	a5,a4,e889cb84 <icmp_input+0x2e4>
        MIB2_STATS_INC(mib2.icmpintimestamps);
    e889cb78:	1ec92783          	lw	a5,492(s2)
    e889cb7c:	2785                	addiw	a5,a5,1
    e889cb7e:	1ef92623          	sw	a5,492(s2)
    e889cb82:	bb51                	j	e889c916 <icmp_input+0x76>
      } else if (type == ICMP_TSR) {
    e889cb84:	4739                	li	a4,14
    e889cb86:	00e79863          	bne	a5,a4,e889cb96 <icmp_input+0x2f6>
        MIB2_STATS_INC(mib2.icmpintimestampreps);
    e889cb8a:	1f092783          	lw	a5,496(s2)
    e889cb8e:	2785                	addiw	a5,a5,1
    e889cb90:	1ef92823          	sw	a5,496(s2)
    e889cb94:	b349                	j	e889c916 <icmp_input+0x76>
      } else if (type == ICMP_AM) {
    e889cb96:	4745                	li	a4,17
    e889cb98:	00e79863          	bne	a5,a4,e889cba8 <icmp_input+0x308>
        MIB2_STATS_INC(mib2.icmpinaddrmasks);
    e889cb9c:	1f492783          	lw	a5,500(s2)
    e889cba0:	2785                	addiw	a5,a5,1
    e889cba2:	1ef92a23          	sw	a5,500(s2)
    e889cba6:	bb85                	j	e889c916 <icmp_input+0x76>
      } else if (type == ICMP_AMR) {
    e889cba8:	4749                	li	a4,18
    e889cbaa:	d6e796e3          	bne	a5,a4,e889c916 <icmp_input+0x76>
        MIB2_STATS_INC(mib2.icmpinaddrmaskreps);
    e889cbae:	1f892783          	lw	a5,504(s2)
    e889cbb2:	2785                	addiw	a5,a5,1
    e889cbb4:	1ef92c23          	sw	a5,504(s2)
    e889cbb8:	bbb9                	j	e889c916 <icmp_input+0x76>
  pbuf_free(p);
    e889cbba:	8526                	mv	a0,s1
    e889cbbc:	e90f20ef          	jal	ra,e888f24c <pbuf_free>
  ICMP_STATS_INC(icmp.lenerr);
    e889cbc0:	06a45783          	lhu	a5,106(s0)
    e889cbc4:	2785                	addiw	a5,a5,1
    e889cbc6:	06f41523          	sh	a5,106(s0)
  MIB2_STATS_INC(mib2.icmpinerrors);
    e889cbca:	1cc42783          	lw	a5,460(s0)
    e889cbce:	2785                	addiw	a5,a5,1
    e889cbd0:	1cf42623          	sw	a5,460(s0)
  return;
    e889cbd4:	b3f1                	j	e889c9a0 <icmp_input+0x100>

00000000e889cbd6 <icmp_dest_unreach>:
  MIB2_STATS_INC(mib2.icmpoutdestunreachs);
    e889cbd6:	0004a717          	auipc	a4,0x4a
    e889cbda:	87a70713          	addi	a4,a4,-1926 # e88e6450 <lwip_stats>
    e889cbde:	20472783          	lw	a5,516(a4)
  icmp_send_response(p, ICMP_DUR, t);
    e889cbe2:	862e                	mv	a2,a1
    e889cbe4:	0521                	addi	a0,a0,8
  MIB2_STATS_INC(mib2.icmpoutdestunreachs);
    e889cbe6:	2785                	addiw	a5,a5,1
  icmp_send_response(p, ICMP_DUR, t);
    e889cbe8:	458d                	li	a1,3
  MIB2_STATS_INC(mib2.icmpoutdestunreachs);
    e889cbea:	20f72223          	sw	a5,516(a4)
  icmp_send_response(p, ICMP_DUR, t);
    e889cbee:	bb5ff06f          	j	e889c7a2 <icmp_send_response.isra.0>

00000000e889cbf2 <icmp_time_exceeded>:
  MIB2_STATS_INC(mib2.icmpouttimeexcds);
    e889cbf2:	0004a717          	auipc	a4,0x4a
    e889cbf6:	85e70713          	addi	a4,a4,-1954 # e88e6450 <lwip_stats>
    e889cbfa:	20872783          	lw	a5,520(a4)
  icmp_send_response(p, ICMP_TE, t);
    e889cbfe:	862e                	mv	a2,a1
    e889cc00:	0521                	addi	a0,a0,8
  MIB2_STATS_INC(mib2.icmpouttimeexcds);
    e889cc02:	2785                	addiw	a5,a5,1
  icmp_send_response(p, ICMP_TE, t);
    e889cc04:	45ad                	li	a1,11
  MIB2_STATS_INC(mib2.icmpouttimeexcds);
    e889cc06:	20f72423          	sw	a5,520(a4)
  icmp_send_response(p, ICMP_TE, t);
    e889cc0a:	b99ff06f          	j	e889c7a2 <icmp_send_response.isra.0>

00000000e889cc0e <icmp6_send_response_with_addrs_and_netif.isra.0>:
 * @param reply_src source address of the packet to send
 * @param reply_dest destination address of the packet to send
 * @param netif netif to send the packet
 */
static void
icmp6_send_response_with_addrs_and_netif(struct pbuf *p, u8_t code, u32_t data, u8_t type,
    e889cc0e:	711d                	addi	sp,sp,-96
    e889cc10:	f05a                	sd	s6,32(sp)
    e889cc12:	ec5e                	sd	s7,24(sp)
    e889cc14:	e862                	sd	s8,16(sp)
    e889cc16:	8b2a                	mv	s6,a0
    e889cc18:	8c2e                	mv	s8,a1
    e889cc1a:	8bb2                	mv	s7,a2
{
  struct pbuf *q;
  struct icmp6_hdr *icmp6hdr;

  /* ICMPv6 header + IPv6 header + data */
  q = pbuf_alloc(PBUF_IP, sizeof(struct icmp6_hdr) + IP6_HLEN + LWIP_ICMP6_DATASIZE,
    e889cc1c:	03800593          	li	a1,56
    e889cc20:	28000613          	li	a2,640
    e889cc24:	03600513          	li	a0,54
icmp6_send_response_with_addrs_and_netif(struct pbuf *p, u8_t code, u32_t data, u8_t type,
    e889cc28:	e0ca                	sd	s2,64(sp)
    e889cc2a:	fc4e                	sd	s3,56(sp)
    e889cc2c:	f852                	sd	s4,48(sp)
    e889cc2e:	f456                	sd	s5,40(sp)
    e889cc30:	e466                	sd	s9,8(sp)
    e889cc32:	ec86                	sd	ra,88(sp)
    e889cc34:	e8a2                	sd	s0,80(sp)
    e889cc36:	e4a6                	sd	s1,72(sp)
    e889cc38:	8cb6                	mv	s9,a3
    e889cc3a:	89ba                	mv	s3,a4
    e889cc3c:	8a3e                	mv	s4,a5
    e889cc3e:	8ac2                	mv	s5,a6
  q = pbuf_alloc(PBUF_IP, sizeof(struct icmp6_hdr) + IP6_HLEN + LWIP_ICMP6_DATASIZE,
    e889cc40:	f50f20ef          	jal	ra,e888f390 <pbuf_alloc>
                 PBUF_RAM);
  if (q == NULL) {
    e889cc44:	0004a917          	auipc	s2,0x4a
    e889cc48:	80c90913          	addi	s2,s2,-2036 # e88e6450 <lwip_stats>
    e889cc4c:	e11d                	bnez	a0,e889cc72 <icmp6_send_response_with_addrs_and_netif.isra.0+0x64>
    LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMPv6 packet.\n"));
    ICMP6_STATS_INC(icmp6.memerr);
    e889cc4e:	0fa95783          	lhu	a5,250(s2)
#endif /* CHECKSUM_GEN_ICMP6 */

  ICMP6_STATS_INC(icmp6.xmit);
  ip6_output_if(q, reply_src, reply_dest, LWIP_ICMP6_HL, 0, IP6_NEXTH_ICMP6, netif);
  pbuf_free(q);
}
    e889cc52:	60e6                	ld	ra,88(sp)
    e889cc54:	6446                	ld	s0,80(sp)
    ICMP6_STATS_INC(icmp6.memerr);
    e889cc56:	2785                	addiw	a5,a5,1
    e889cc58:	0ef91d23          	sh	a5,250(s2)
}
    e889cc5c:	64a6                	ld	s1,72(sp)
    e889cc5e:	6906                	ld	s2,64(sp)
    e889cc60:	79e2                	ld	s3,56(sp)
    e889cc62:	7a42                	ld	s4,48(sp)
    e889cc64:	7aa2                	ld	s5,40(sp)
    e889cc66:	7b02                	ld	s6,32(sp)
    e889cc68:	6be2                	ld	s7,24(sp)
    e889cc6a:	6c42                	ld	s8,16(sp)
    e889cc6c:	6ca2                	ld	s9,8(sp)
    e889cc6e:	6125                	addi	sp,sp,96
    e889cc70:	8082                	ret
  LWIP_ASSERT("check that first pbuf can hold icmp 6message",
    e889cc72:	01255703          	lhu	a4,18(a0)
    e889cc76:	03700793          	li	a5,55
    e889cc7a:	842a                	mv	s0,a0
    e889cc7c:	02e7e863          	bltu	a5,a4,e889ccac <icmp6_send_response_with_addrs_and_netif.isra.0+0x9e>
    e889cc80:	02f00593          	li	a1,47
    e889cc84:	00037517          	auipc	a0,0x37
    e889cc88:	00c50513          	addi	a0,a0,12 # e88d3c90 <dhcp_discover_request_options+0x488>
    e889cc8c:	eecdf0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889cc90:	00150693          	addi	a3,a0,1
    e889cc94:	19000613          	li	a2,400
    e889cc98:	00037597          	auipc	a1,0x37
    e889cc9c:	08858593          	addi	a1,a1,136 # e88d3d20 <dhcp_discover_request_options+0x518>
    e889cca0:	00032517          	auipc	a0,0x32
    e889cca4:	41050513          	addi	a0,a0,1040 # e88cf0b0 <kSinTable1024+0x900>
    e889cca8:	e1edf0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  icmp6hdr = (struct icmp6_hdr *)q->payload;
    e889ccac:	6404                	ld	s1,8(s0)
  icmp6hdr->data = lwip_htonl(data);
    e889ccae:	855e                	mv	a0,s7
  icmp6hdr->type = type;
    e889ccb0:	01948023          	sb	s9,0(s1)
  icmp6hdr->code = code;
    e889ccb4:	018480a3          	sb	s8,1(s1)
  icmp6hdr->data = lwip_htonl(data);
    e889ccb8:	a76ea0ef          	jal	ra,e8886f2e <lwip_htonl>
    e889ccbc:	c0c8                	sw	a0,4(s1)
  SMEMCPY((u8_t *)q->payload + sizeof(struct icmp6_hdr), (u8_t *)p->payload,
    e889ccbe:	6408                	ld	a0,8(s0)
    e889ccc0:	000b3583          	ld	a1,0(s6)
    e889ccc4:	03000613          	li	a2,48
    e889ccc8:	0521                	addi	a0,a0,8
    e889ccca:	ed6df0ef          	jal	ra,e887c3a0 <eLIBs_memcpy>
  icmp6hdr->chksum = 0;
    e889ccce:	00049123          	sh	zero,2(s1)
    icmp6hdr->chksum = ip6_chksum_pseudo(q, IP6_NEXTH_ICMP6, q->tot_len,
    e889ccd2:	01045603          	lhu	a2,16(s0)
    e889ccd6:	8752                	mv	a4,s4
    e889ccd8:	86ce                	mv	a3,s3
    e889ccda:	03a00593          	li	a1,58
    e889ccde:	8522                	mv	a0,s0
    e889cce0:	b21ea0ef          	jal	ra,e8887800 <ip6_chksum_pseudo>
    e889cce4:	00a49123          	sh	a0,2(s1)
  ICMP6_STATS_INC(icmp6.xmit);
    e889cce8:	0ee95783          	lhu	a5,238(s2)
  ip6_output_if(q, reply_src, reply_dest, LWIP_ICMP6_HL, 0, IP6_NEXTH_ICMP6, netif);
    e889ccec:	8856                	mv	a6,s5
    e889ccee:	8652                	mv	a2,s4
  ICMP6_STATS_INC(icmp6.xmit);
    e889ccf0:	2785                	addiw	a5,a5,1
    e889ccf2:	0ef91723          	sh	a5,238(s2)
  ip6_output_if(q, reply_src, reply_dest, LWIP_ICMP6_HL, 0, IP6_NEXTH_ICMP6, netif);
    e889ccf6:	85ce                	mv	a1,s3
    e889ccf8:	8522                	mv	a0,s0
    e889ccfa:	03a00793          	li	a5,58
    e889ccfe:	4701                	li	a4,0
    e889cd00:	0ff00693          	li	a3,255
    e889cd04:	944ee0ef          	jal	ra,e888ae48 <ip6_output_if>
}
    e889cd08:	64a6                	ld	s1,72(sp)
  pbuf_free(q);
    e889cd0a:	8522                	mv	a0,s0
}
    e889cd0c:	6446                	ld	s0,80(sp)
    e889cd0e:	60e6                	ld	ra,88(sp)
    e889cd10:	6906                	ld	s2,64(sp)
    e889cd12:	79e2                	ld	s3,56(sp)
    e889cd14:	7a42                	ld	s4,48(sp)
    e889cd16:	7aa2                	ld	s5,40(sp)
    e889cd18:	7b02                	ld	s6,32(sp)
    e889cd1a:	6be2                	ld	s7,24(sp)
    e889cd1c:	6c42                	ld	s8,16(sp)
    e889cd1e:	6ca2                	ld	s9,8(sp)
    e889cd20:	6125                	addi	sp,sp,96
  pbuf_free(q);
    e889cd22:	d2af206f          	j	e888f24c <pbuf_free>

00000000e889cd26 <icmp6_send_response>:
{
    e889cd26:	7179                	addi	sp,sp,-48
    e889cd28:	fb31590b          	sdd	s2,s3,(sp),1,4
    e889cd2c:	f891540b          	sdd	s0,s1,(sp),0,4
  struct netif *netif = ip_current_netif();
    e889cd30:	00049797          	auipc	a5,0x49
    e889cd34:	e1878793          	addi	a5,a5,-488 # e88e5b48 <ip_data>
{
    e889cd38:	f052                	sd	s4,32(sp)
    e889cd3a:	f406                	sd	ra,40(sp)
  struct netif *netif = ip_current_netif();
    e889cd3c:	6380                	ld	s0,0(a5)
{
    e889cd3e:	84aa                	mv	s1,a0
    e889cd40:	892e                	mv	s2,a1
    e889cd42:	89b2                	mv	s3,a2
    e889cd44:	8a36                	mv	s4,a3
  LWIP_ASSERT("icmpv6 packet not a direct response", netif != NULL);
    e889cd46:	e41d                	bnez	s0,e889cd74 <icmp6_send_response+0x4e>
    e889cd48:	02f00593          	li	a1,47
    e889cd4c:	00037517          	auipc	a0,0x37
    e889cd50:	f4450513          	addi	a0,a0,-188 # e88d3c90 <dhcp_discover_request_options+0x488>
    e889cd54:	e24df0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889cd58:	00150693          	addi	a3,a0,1
    e889cd5c:	13a00613          	li	a2,314
    e889cd60:	00037597          	auipc	a1,0x37
    e889cd64:	f0858593          	addi	a1,a1,-248 # e88d3c68 <dhcp_discover_request_options+0x460>
    e889cd68:	00032517          	auipc	a0,0x32
    e889cd6c:	34850513          	addi	a0,a0,840 # e88cf0b0 <kSinTable1024+0x900>
    e889cd70:	d56df0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  reply_src = ip_2_ip6(ip6_select_source_address(netif, reply_dest));
    e889cd74:	00049597          	auipc	a1,0x49
    e889cd78:	df858593          	addi	a1,a1,-520 # e88e5b6c <ip_data+0x24>
    e889cd7c:	8522                	mv	a0,s0
    e889cd7e:	eeeed0ef          	jal	ra,e888a46c <ip6_select_source_address>
    e889cd82:	872a                	mv	a4,a0
  if (reply_src == NULL) {
    e889cd84:	e115                	bnez	a0,e889cda8 <icmp6_send_response+0x82>
    ICMP6_STATS_INC(icmp6.rterr);
    e889cd86:	00049717          	auipc	a4,0x49
    e889cd8a:	6ca70713          	addi	a4,a4,1738 # e88e6450 <lwip_stats>
    e889cd8e:	0fc75783          	lhu	a5,252(a4)
    e889cd92:	2785                	addiw	a5,a5,1
    e889cd94:	0ef71e23          	sh	a5,252(a4)
}
    e889cd98:	f891440b          	ldd	s0,s1,(sp),0,4
    e889cd9c:	70a2                	ld	ra,40(sp)
    e889cd9e:	7a02                	ld	s4,32(sp)
    e889cda0:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889cda4:	6145                	addi	sp,sp,48
    e889cda6:	8082                	ret
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src, reply_dest, netif);
    e889cda8:	8822                	mv	a6,s0
    e889cdaa:	00848513          	addi	a0,s1,8
}
    e889cdae:	f891440b          	ldd	s0,s1,(sp),0,4
    e889cdb2:	70a2                	ld	ra,40(sp)
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src, reply_dest, netif);
    e889cdb4:	86d2                	mv	a3,s4
    e889cdb6:	864e                	mv	a2,s3
}
    e889cdb8:	7a02                	ld	s4,32(sp)
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src, reply_dest, netif);
    e889cdba:	85ca                	mv	a1,s2
}
    e889cdbc:	fb31490b          	ldd	s2,s3,(sp),1,4
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src, reply_dest, netif);
    e889cdc0:	00049797          	auipc	a5,0x49
    e889cdc4:	dac78793          	addi	a5,a5,-596 # e88e5b6c <ip_data+0x24>
}
    e889cdc8:	6145                	addi	sp,sp,48
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src, reply_dest, netif);
    e889cdca:	e45ff06f          	j	e889cc0e <icmp6_send_response_with_addrs_and_netif.isra.0>

00000000e889cdce <icmp6_input>:
{
    e889cdce:	7179                	addi	sp,sp,-48
    e889cdd0:	f891540b          	sdd	s0,s1,(sp),0,4
  ICMP6_STATS_INC(icmp6.recv);
    e889cdd4:	00049417          	auipc	s0,0x49
    e889cdd8:	67c40413          	addi	s0,s0,1660 # e88e6450 <lwip_stats>
    e889cddc:	0f045783          	lhu	a5,240(s0)
{
    e889cde0:	fb31590b          	sdd	s2,s3,(sp),1,4
    e889cde4:	f406                	sd	ra,40(sp)
  ICMP6_STATS_INC(icmp6.recv);
    e889cde6:	2785                	addiw	a5,a5,1
    e889cde8:	0ef41823          	sh	a5,240(s0)
{
    e889cdec:	f052                	sd	s4,32(sp)
  if (p->len < sizeof(struct icmp6_hdr)) {
    e889cdee:	01255703          	lhu	a4,18(a0)
    e889cdf2:	479d                	li	a5,7
    e889cdf4:	02e7e663          	bltu	a5,a4,e889ce20 <icmp6_input+0x52>
    pbuf_free(p);
    e889cdf8:	c54f20ef          	jal	ra,e888f24c <pbuf_free>
    ICMP6_STATS_INC(icmp6.lenerr);
    e889cdfc:	0f845783          	lhu	a5,248(s0)
    e889ce00:	2785                	addiw	a5,a5,1
    e889ce02:	0ef41c23          	sh	a5,248(s0)
      ICMP6_STATS_INC(icmp6.drop);
    e889ce06:	0f445783          	lhu	a5,244(s0)
    e889ce0a:	2785                	addiw	a5,a5,1
    e889ce0c:	0ef41a23          	sh	a5,244(s0)
}
    e889ce10:	70a2                	ld	ra,40(sp)
    e889ce12:	f891440b          	ldd	s0,s1,(sp),0,4
    e889ce16:	7a02                	ld	s4,32(sp)
    e889ce18:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889ce1c:	6145                	addi	sp,sp,48
    e889ce1e:	8082                	ret
    if (ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->tot_len, ip6_current_src_addr(),
    e889ce20:	01055603          	lhu	a2,16(a0)
    e889ce24:	89ae                	mv	s3,a1
    e889ce26:	00049717          	auipc	a4,0x49
    e889ce2a:	d5e70713          	addi	a4,a4,-674 # e88e5b84 <ip_data+0x3c>
    e889ce2e:	00049697          	auipc	a3,0x49
    e889ce32:	d3e68693          	addi	a3,a3,-706 # e88e5b6c <ip_data+0x24>
    e889ce36:	03a00593          	li	a1,58
    e889ce3a:	84aa                	mv	s1,a0
  icmp6hdr = (struct icmp6_hdr *)p->payload;
    e889ce3c:	00853a03          	ld	s4,8(a0)
    if (ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->tot_len, ip6_current_src_addr(),
    e889ce40:	9c1ea0ef          	jal	ra,e8887800 <ip6_chksum_pseudo>
    e889ce44:	c911                	beqz	a0,e889ce58 <icmp6_input+0x8a>
      pbuf_free(p);
    e889ce46:	8526                	mv	a0,s1
    e889ce48:	c04f20ef          	jal	ra,e888f24c <pbuf_free>
      ICMP6_STATS_INC(icmp6.chkerr);
    e889ce4c:	0f645783          	lhu	a5,246(s0)
    e889ce50:	2785                	addiw	a5,a5,1
    e889ce52:	0ef41b23          	sh	a5,246(s0)
      ICMP6_STATS_INC(icmp6.drop);
    e889ce56:	bf45                	j	e889ce06 <icmp6_input+0x38>
  switch (icmp6hdr->type) {
    e889ce58:	000a4783          	lbu	a5,0(s4)
    e889ce5c:	08400713          	li	a4,132
    e889ce60:	8922                	mv	s2,s0
    e889ce62:	02f76863          	bltu	a4,a5,e889ce92 <icmp6_input+0xc4>
    e889ce66:	08200713          	li	a4,130
    e889ce6a:	04e7f763          	bgeu	a5,a4,e889ceb8 <icmp6_input+0xea>
    e889ce6e:	4709                	li	a4,2
    e889ce70:	02e78963          	beq	a5,a4,e889cea2 <icmp6_input+0xd4>
    e889ce74:	08000713          	li	a4,128
    e889ce78:	04e78b63          	beq	a5,a4,e889cece <icmp6_input+0x100>
    ICMP6_STATS_INC(icmp6.proterr);
    e889ce7c:	0fe95783          	lhu	a5,254(s2)
    e889ce80:	2785                	addiw	a5,a5,1
    e889ce82:	0ef91f23          	sh	a5,254(s2)
    ICMP6_STATS_INC(icmp6.drop);
    e889ce86:	0f495783          	lhu	a5,244(s2)
    e889ce8a:	2785                	addiw	a5,a5,1
    e889ce8c:	0ef91a23          	sh	a5,244(s2)
    break;
    e889ce90:	a221                	j	e889cf98 <icmp6_input+0x1ca>
  switch (icmp6hdr->type) {
    e889ce92:	08500713          	li	a4,133
    e889ce96:	10e78163          	beq	a5,a4,e889cf98 <icmp6_input+0x1ca>
    e889ce9a:	08900713          	li	a4,137
    e889ce9e:	fcf76fe3          	bltu	a4,a5,e889ce7c <icmp6_input+0xae>
    nd6_input(p, inp);
    e889cea2:	8526                	mv	a0,s1
}
    e889cea4:	f891440b          	ldd	s0,s1,(sp),0,4
    e889cea8:	70a2                	ld	ra,40(sp)
    e889ceaa:	7a02                	ld	s4,32(sp)
    nd6_input(p, inp);
    e889ceac:	85ce                	mv	a1,s3
}
    e889ceae:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889ceb2:	6145                	addi	sp,sp,48
    nd6_input(p, inp);
    e889ceb4:	aedef06f          	j	e888c9a0 <nd6_input>
    mld6_input(p, inp);
    e889ceb8:	8526                	mv	a0,s1
}
    e889ceba:	f891440b          	ldd	s0,s1,(sp),0,4
    e889cebe:	70a2                	ld	ra,40(sp)
    e889cec0:	7a02                	ld	s4,32(sp)
    mld6_input(p, inp);
    e889cec2:	85ce                	mv	a1,s3
}
    e889cec4:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889cec8:	6145                	addi	sp,sp,48
    mld6_input(p, inp);
    e889ceca:	cbfee06f          	j	e888bb88 <mld6_input>
    if (ip6_addr_ismulticast(ip6_current_dest_addr())) {
    e889cece:	00049717          	auipc	a4,0x49
    e889ced2:	cb674703          	lbu	a4,-842(a4) # e88e5b84 <ip_data+0x3c>
    e889ced6:	0ff00793          	li	a5,255
    e889ceda:	00f71663          	bne	a4,a5,e889cee6 <icmp6_input+0x118>
      pbuf_free(p);
    e889cede:	8526                	mv	a0,s1
    e889cee0:	b6cf20ef          	jal	ra,e888f24c <pbuf_free>
    e889cee4:	b70d                	j	e889ce06 <icmp6_input+0x38>
    r = pbuf_alloc(PBUF_IP, p->tot_len, PBUF_RAM);
    e889cee6:	0104d583          	lhu	a1,16(s1)
    e889ceea:	28000613          	li	a2,640
    e889ceee:	03600513          	li	a0,54
    e889cef2:	c9ef20ef          	jal	ra,e888f390 <pbuf_alloc>
    e889cef6:	892a                	mv	s2,a0
    if (r == NULL) {
    e889cef8:	e911                	bnez	a0,e889cf0c <icmp6_input+0x13e>
      pbuf_free(p);
    e889cefa:	8526                	mv	a0,s1
    e889cefc:	b50f20ef          	jal	ra,e888f24c <pbuf_free>
      ICMP6_STATS_INC(icmp6.memerr);
    e889cf00:	0fa45783          	lhu	a5,250(s0)
    e889cf04:	2785                	addiw	a5,a5,1
    e889cf06:	0ef41d23          	sh	a5,250(s0)
      return;
    e889cf0a:	b719                	j	e889ce10 <icmp6_input+0x42>
    if (pbuf_copy(r, p) != ERR_OK) {
    e889cf0c:	85a6                	mv	a1,s1
    e889cf0e:	88df20ef          	jal	ra,e888f79a <pbuf_copy>
    e889cf12:	cd09                	beqz	a0,e889cf2c <icmp6_input+0x15e>
      pbuf_free(p);
    e889cf14:	8526                	mv	a0,s1
    e889cf16:	b36f20ef          	jal	ra,e888f24c <pbuf_free>
      pbuf_free(r);
    e889cf1a:	854a                	mv	a0,s2
    e889cf1c:	b30f20ef          	jal	ra,e888f24c <pbuf_free>
      ICMP6_STATS_INC(icmp6.err);
    e889cf20:	10245783          	lhu	a5,258(s0)
    e889cf24:	2785                	addiw	a5,a5,1
    e889cf26:	10f41123          	sh	a5,258(s0)
      return;
    e889cf2a:	b5dd                	j	e889ce10 <icmp6_input+0x42>
    ((struct icmp6_echo_hdr *)(r->payload))->type = ICMP6_TYPE_EREP;
    e889cf2c:	00893783          	ld	a5,8(s2)
    e889cf30:	f8100713          	li	a4,-127
      ((struct icmp6_echo_hdr *)(r->payload))->chksum = ip6_chksum_pseudo(r,
    e889cf34:	00049697          	auipc	a3,0x49
    e889cf38:	c5068693          	addi	a3,a3,-944 # e88e5b84 <ip_data+0x3c>
    ((struct icmp6_echo_hdr *)(r->payload))->type = ICMP6_TYPE_EREP;
    e889cf3c:	00e78023          	sb	a4,0(a5)
    ((struct icmp6_echo_hdr *)(r->payload))->chksum = 0;
    e889cf40:	00893783          	ld	a5,8(s2)
      ((struct icmp6_echo_hdr *)(r->payload))->chksum = ip6_chksum_pseudo(r,
    e889cf44:	00049717          	auipc	a4,0x49
    e889cf48:	c2870713          	addi	a4,a4,-984 # e88e5b6c <ip_data+0x24>
    e889cf4c:	03a00593          	li	a1,58
    ((struct icmp6_echo_hdr *)(r->payload))->chksum = 0;
    e889cf50:	00079123          	sh	zero,2(a5)
      ((struct icmp6_echo_hdr *)(r->payload))->chksum = ip6_chksum_pseudo(r,
    e889cf54:	01095603          	lhu	a2,16(s2)
    e889cf58:	00893a03          	ld	s4,8(s2)
    e889cf5c:	854a                	mv	a0,s2
    e889cf5e:	8a3ea0ef          	jal	ra,e8887800 <ip6_chksum_pseudo>
    e889cf62:	00aa1123          	sh	a0,2(s4)
    ICMP6_STATS_INC(icmp6.xmit);
    e889cf66:	0ee45783          	lhu	a5,238(s0)
    ip6_output_if(r, reply_src, ip6_current_src_addr(),
    e889cf6a:	884e                	mv	a6,s3
    e889cf6c:	4701                	li	a4,0
    ICMP6_STATS_INC(icmp6.xmit);
    e889cf6e:	2785                	addiw	a5,a5,1
    e889cf70:	0ef41723          	sh	a5,238(s0)
    ip6_output_if(r, reply_src, ip6_current_src_addr(),
    e889cf74:	0ff00693          	li	a3,255
    e889cf78:	03a00793          	li	a5,58
    e889cf7c:	00049617          	auipc	a2,0x49
    e889cf80:	bf060613          	addi	a2,a2,-1040 # e88e5b6c <ip_data+0x24>
    e889cf84:	00049597          	auipc	a1,0x49
    e889cf88:	c0058593          	addi	a1,a1,-1024 # e88e5b84 <ip_data+0x3c>
    e889cf8c:	854a                	mv	a0,s2
    e889cf8e:	ebbed0ef          	jal	ra,e888ae48 <ip6_output_if>
    pbuf_free(r);
    e889cf92:	854a                	mv	a0,s2
    e889cf94:	ab8f20ef          	jal	ra,e888f24c <pbuf_free>
  pbuf_free(p);
    e889cf98:	8526                	mv	a0,s1
}
    e889cf9a:	f891440b          	ldd	s0,s1,(sp),0,4
    e889cf9e:	70a2                	ld	ra,40(sp)
    e889cfa0:	7a02                	ld	s4,32(sp)
    e889cfa2:	fb31490b          	ldd	s2,s3,(sp),1,4
    e889cfa6:	6145                	addi	sp,sp,48
  pbuf_free(p);
    e889cfa8:	aa4f206f          	j	e888f24c <pbuf_free>

00000000e889cfac <icmp6_dest_unreach>:
  icmp6_send_response(p, c, 0, ICMP6_TYPE_DUR);
    e889cfac:	4685                	li	a3,1
    e889cfae:	4601                	li	a2,0
    e889cfb0:	d77ff06f          	j	e889cd26 <icmp6_send_response>

00000000e889cfb4 <icmp6_time_exceeded_with_addrs>:
{
    e889cfb4:	7179                	addi	sp,sp,-48
    e889cfb6:	e422                	sd	s0,8(sp)
    e889cfb8:	e826                	sd	s1,16(sp)
    e889cfba:	ec4a                	sd	s2,24(sp)
    e889cfbc:	f04e                	sd	s3,32(sp)
    e889cfbe:	f406                	sd	ra,40(sp)
    e889cfc0:	892a                	mv	s2,a0
    e889cfc2:	89ae                	mv	s3,a1
    e889cfc4:	84b2                	mv	s1,a2
    e889cfc6:	8436                	mv	s0,a3
  LWIP_ASSERT("must provide both source and destination", src_addr != NULL);
    e889cfc8:	e61d                	bnez	a2,e889cff6 <icmp6_time_exceeded_with_addrs+0x42>
    e889cfca:	02f00593          	li	a1,47
    e889cfce:	00037517          	auipc	a0,0x37
    e889cfd2:	cc250513          	addi	a0,a0,-830 # e88d3c90 <dhcp_discover_request_options+0x488>
    e889cfd6:	ba2df0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889cfda:	00150693          	addi	a3,a0,1
    e889cfde:	16100613          	li	a2,353
    e889cfe2:	00037597          	auipc	a1,0x37
    e889cfe6:	d6e58593          	addi	a1,a1,-658 # e88d3d50 <dhcp_discover_request_options+0x548>
    e889cfea:	00032517          	auipc	a0,0x32
    e889cfee:	0c650513          	addi	a0,a0,198 # e88cf0b0 <kSinTable1024+0x900>
    e889cff2:	ad4df0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  LWIP_ASSERT("must provide both source and destination", dest_addr != NULL);
    e889cff6:	e41d                	bnez	s0,e889d024 <icmp6_time_exceeded_with_addrs+0x70>
    e889cff8:	02f00593          	li	a1,47
    e889cffc:	00037517          	auipc	a0,0x37
    e889d000:	c9450513          	addi	a0,a0,-876 # e88d3c90 <dhcp_discover_request_options+0x488>
    e889d004:	b74df0ef          	jal	ra,e887c378 <eLIBs_strchrlast>
    e889d008:	00150693          	addi	a3,a0,1
    e889d00c:	16200613          	li	a2,354
    e889d010:	00037597          	auipc	a1,0x37
    e889d014:	d4058593          	addi	a1,a1,-704 # e88d3d50 <dhcp_discover_request_options+0x548>
    e889d018:	00032517          	auipc	a0,0x32
    e889d01c:	09850513          	addi	a0,a0,152 # e88cf0b0 <kSinTable1024+0x900>
    e889d020:	aa6df0ef          	jal	ra,e887c2c6 <eLIBs_printf>
  netif = ip6_route(reply_src, reply_dest);
    e889d024:	85a6                	mv	a1,s1
    e889d026:	8522                	mv	a0,s0
    e889d028:	a14ed0ef          	jal	ra,e888a23c <ip6_route>
  if (netif == NULL) {
    e889d02c:	e10d                	bnez	a0,e889d04e <icmp6_time_exceeded_with_addrs+0x9a>
    ICMP6_STATS_INC(icmp6.rterr);
    e889d02e:	00049717          	auipc	a4,0x49
    e889d032:	42270713          	addi	a4,a4,1058 # e88e6450 <lwip_stats>
    e889d036:	0fc75783          	lhu	a5,252(a4)
    e889d03a:	2785                	addiw	a5,a5,1
    e889d03c:	0ef71e23          	sh	a5,252(a4)
}
    e889d040:	70a2                	ld	ra,40(sp)
    e889d042:	6422                	ld	s0,8(sp)
    e889d044:	64c2                	ld	s1,16(sp)
    e889d046:	6962                	ld	s2,24(sp)
    e889d048:	7982                	ld	s3,32(sp)
    e889d04a:	6145                	addi	sp,sp,48
    e889d04c:	8082                	ret
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src,
    e889d04e:	8722                	mv	a4,s0
}
    e889d050:	6422                	ld	s0,8(sp)
    e889d052:	70a2                	ld	ra,40(sp)
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src,
    e889d054:	882a                	mv	a6,a0
    e889d056:	87a6                	mv	a5,s1
    e889d058:	85ce                	mv	a1,s3
}
    e889d05a:	64c2                	ld	s1,16(sp)
    e889d05c:	7982                	ld	s3,32(sp)
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src,
    e889d05e:	00890513          	addi	a0,s2,8
}
    e889d062:	6962                	ld	s2,24(sp)
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src,
    e889d064:	468d                	li	a3,3
    e889d066:	4601                	li	a2,0
}
    e889d068:	6145                	addi	sp,sp,48
  icmp6_send_response_with_addrs_and_netif(p, code, data, type, reply_src,
    e889d06a:	ba5ff06f          	j	e889cc0e <icmp6_send_response_with_addrs_and_netif.isra.0>

00000000e889d06e <icmp6_param_problem>:
  u32_t pointer_u32 = (u32_t)((const u8_t *)pointer - (const u8_t *)ip6_current_header());
    e889d06e:	00049797          	auipc	a5,0x49
    e889d072:	ada78793          	addi	a5,a5,-1318 # e88e5b48 <ip_data>
    e889d076:	6f9c                	ld	a5,24(a5)
  icmp6_send_response(p, c, pointer_u32, ICMP6_TYPE_PP);
    e889d078:	4691                	li	a3,4
    e889d07a:	9e1d                	subw	a2,a2,a5
    e889d07c:	cabff06f          	j	e889cd26 <icmp6_send_response>
